micropolis-activity/0000775000076400007640000000000010735230432015025 5ustar simcitysimcitymicropolis-activity/activity/0000775000076400007640000000000010735227477016700 5ustar simcitysimcitymicropolis-activity/activity/activity-micropolis.svg0000664000076400007640000000453110724145723023425 0ustar simcitysimcity image/svg+xml micropolis-activity/activity/activity.info0000664000076400007640000000026410735227425021404 0ustar simcitysimcity[Activity] name = Micropolis activity_version = 7 icon = activity-micropolis service_name = org.laptop.Micropolis class = micropolisactivity.MicropolisActivity show_launcher = yes micropolis-activity/cities/0000775000076400007640000000000010726076605016317 5ustar simcitysimcitymicropolis-activity/cities/badnews.cty0000664000076400007640000006476010724145723020474 0ustar simcitysimcity ((/9=@JMRYkoz  ##''+029;==>?BELRUZ[[^^_dhlpvwvy|/0UwAo3b6 n&\% !'+,.6:<<<<<<<==@@DDEEFFFFFEEFGGHHHHIJJLLMMOPPQRQQUUVYYZ\\]]^``bddeghkkmsssttttttstttttsss6@FMYdtsokg][J@/vaE)fggjmrsuy{ ##$$%%*,,000000444445:::;;;;;???CDDGGLLPPPTTTTX\aaadddddhhhhkkkmnnzzzzzzzyxxxwwwwwwwf0:G\hzwtodV<iJ.~W@%! efghjjjjjjjjjjjjjjjjjjjjjjihgecb`]YYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZYXWVTSRQPNNNNNNNNNNNNNNNNNNejjYZZZZWNNNNRJJJYYYSQOMMK@9G`KLyv_D@>EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEGILPVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWXXXXXXXXXXXXXXXXXXXXXXYZ[\^^^^^^^^^^^^^^^^^^EEEVVVVXX^^^^^\]]]]]]YYZ\___[^e[Yb`K=?]TTTTTTTjjjjjjjjjjjjj&>n~yq~eTeE3^@CNTLPICT"CURSMENUBPAT rSTR#WDEF F  =  J  (   bbbbbbppppppppppppbbbaaaaaap`paaap`paaappp.,/--``p``paa-0+0(0*ppp0);H0*pbdbgbjbvbyb|pbvbyb|bbbbbbbb/.ry-,r,bbbbbbbbbbbbbbp0(0+0*0kbaaaap`aappaa0`/p`p```0a-0);J0(pp0+0*;H0bevhbkbwvzb}0bwvzb}bvbbvbbvbrw/r}-/,k|bbbk|b G,.bbbp0000kbbaaaaaa`ppaaa.ppaaa0``p```````p`0aa.0(;J0)ppp;H0*;H0bfbiblbxb{b~0bxb{b~bbbbbbbb/,/,//.kbbkkbkbbbbbbbbp0bb/bbb00000p00000000000000p00000000/00000000p0000000000000000000000p00,-0,0000p000000bbbbbbp0kbbb0;I0)aaaa2a5a8aDaGaJaDaGaJaaa0aaaaaaaaaq.q00*0)0*cccpppppp0bbbbbbbbbbbbbbbb.b/b.,/bbbbbb.bbbb/-bbbbp0$00#0kb-kkb00);Jaaa36a9aEHaKaEHaKaa0aa/aaa/.q0;I0)0+cc pppp0bbbbk}bk|,k|bk|bk|b0bbk|bk|bk|,/.-.s+-c3c70$0%0%0%0b.bbbb00+0)aaaa4a7a:aFaIaLaFaIaLaaa0aaaaaaaaaq-q00+;I0*ccc pppppp0kkbkkbkbbkbbkbbkbbkbb0kkbkbbkbbkbb.,..s,0kc80000!0/bbb0aaa0(0+0(0(;H0*0+;H0*0)0(.aa0aaaaaaaaaaaa0aDaGaJppppppp-ppbbbbbbbbbbbbcccbbbbbb0cccbbbbbbbbb--/s9-c1c5c900kkbkkb0aa0*;H0+0(0*0);Jaa0aaaaaaaapaEHaKpppppp0k-kbk}bbbcc k|bk|,0cc k|bbbk|b-s2s6s:s.c2c6c:00bbbbbb0aaa0*0(0*aaa0aaaaaaaaaaaa0aFaIaLppppppppp0kbbkbbkbbkkbccc kbbk./0ccc kbbkkbkbbs+s/s3s7s+c/c3c70$000k|bb,0;J0+0);J;JaDaGaJ000000000000000000000000000000000000000000000000000000p000000c,0kc8c,0kc800 0k/b-k-00(0)0)aEHaK0aaaaaabbbaDaGaJpaaaa)a,a/aaappp0ppp,pp./pppp-./0bbbbbbbbbbbbbbb0)0(0+c-c1c5c9,c1c5c90bb./-/-//aFaIaLpaaa.bcaEHaK0aaa*-a0aa/pppp-,pppppbc0bbk|bbbbbk|b0(0(;Jc.c2c6c:c.c2c6c:0k|b./r.,-;K00aaaaaabbcaFaIaL0aaaa+a.a1aaappp0ppppppp-ppppbbcpkkbkbbkkbkkbkbbc+c/c3c7c+c/c3c70kbb/./,ppp0(0(00aaaaaacccaaa0pppaaa pppaaa0ppppppppppppccc0bbbbbbbbb000;K0),0kc8c,0kc80000./00..,;H;K0+aaaaaa0aaaacc aa0ppa a ppaa0pppp,pppcc 0bbk|bk|b0)0)00)-c1c5c9c-/c5c9,,,/0)0+aaaaua0;Haapaaaaaaccc aaa0pppaa a pppaaa0p-p-pppppp..ccc 0kkbkbbkbb0+;I0c.c2c6c:c.c2c6c:.-pp0)0)0(auaaaa00(aaa00)0)0*0+00000;H0+0*00000000000000000000000.-00000000000c ccc0)c+c/c3c7c+c/c3c7.-dp0+aaaaaa00000000000aaapppc ccc/aaaaaaaaappppppppppppp0+0p.p;J0+```c ccc,0kc8c,0kc8/pp00auaaaa0aaaaaa0auaptpc gcc,auaauaaua0ptpptpptpptp;K0pp0)0+``c cccc-c1c5c9c-c1c5c9/,/-p;H0aaaaua0auaaua0aaapppc ccc0aaaaaaaaa0pppppppppp.p00ppp0)0)```cccc0*c.,--c.c2c6c:.0,p0*;H0aaaaaa0.aaaaa0aaaaDaGaJccccpaaab%b(b+aaa0aaapp.pppppp0pppppppp/aaa0*0*/./s7s+c/c3c7,/-0--0-a_abaea.a0auaccc0aaaaaa0auaaEuHaK0+0(;K;H0auab&v)b,aua0auapt/ptpptpp/pppppaa0(;Ks,,.,s,0kc80%--0%0%0a`ucafaua0aa-cgc 0auaaua/aaaaFaIaL00000aaab'/b-aaa0aaappppppp/p0pppppppppaaa0*,s1/s9s-c1c5c900#0%,..0%0%0!aaadagaaa0aaaccc 0aaaaaa0aaappp00aaaaaa00000000000000000000000000p0000p0s.s2s6/s.c2c6c:00%0%0%/0-0%0000000auaaaa0aaaaaa0auaptp0*0auaaua0aDaGaJppp0aaap``pb%-b+b%b(b+b%b(b+c ccc0(;K;KpPPPPPPPp0prbb00%0%0%.-.0%0%//aaappp00+aaaaua0auaaua0aaappp;K0aaaaaa0aEHaKpp0aapp0b&)b,b&)b,b&)b,c cc;H0+0*p0pbc00%0/0%-0%0%0%.aua/tp0c cccaaa0aaaaaa0aaaaMaPaS0)0aaaaaa0aFaIaLppp0aaap`p0b'b*b-b'b*b--b*b-c ccc0+p0pbbc0$0%0 0%0%aa-aaappp0c gcca-a0aaaaaapauaaNuQaT0)0auaaua0ahakanaaa0a)a,a/aaa0b%b(b+/aab%b(b+cccc0*p0p0$0%0 00%0%0%0%00aua0ppp,``0c cccau.0auaaua0aaaaOaRaU0+0aaaaaa0ailaoaa0a*-a0aa0b&)b,a.-)b,;I-bbb0p0$0%0!000%0%0 ;H0+aaa0ptp`t`0ccccaaa0aaaaaa0000000000000000ajamap-aa0a+a.a1aaa0b'b*b-a--b'-b--0*k|b0pp0$00#0%0%000!0*;H0a)a,a/0ppp```00```aaa00a2a5a8a2a5a80ahakanaD.aJ0.akanahakan0ahakanahakan0,abaeaaa00p00.000-0)0*k-b0pp00%0%0%0%0%00)0);J0+00;H0)0a*u-a000pppppp0`t`aua;I0a3u6a9a3u6a90ailaoaEHaKpailaoailao0ailaoailao0a`cafaa00)p;J0-.0*0*bbbb.b0pp00%0%0%0%0%00 ;K0+0(0)bbb0(0a+a.a100ptpptp0```aaa0+0a4a7a:a4a7a:0-amapaFaIaL0/amapajamap0ajamapajamappaaadagaaa0)0+p0*bbbb0p00%0%0%0000+;J0+0)0+0+bfc00pp000pppppp00ppp/.-0pppppp0,aGaJaDaGaJ0aDaGaJccc0ahakanahakan000000P0+0)0)kkbkkb0c ccc00+0+0*0(0)0+0)0)0$bbc0ppp0```pppppp0ptp.//0ptpptp/.HaKaEHaK0aEHaKcc pailaoailao00+0)P000000000p0c gcc;J0)0*0)0)0(;I0)ccc00%0ptp0`t.-tpptp/ppp---/pppppp0./aLaFaIaL0aFaIaLcc,0ajamapajamap00)P00bbb-ccbbb0c ccc0(0)0*0(;J0)0(0(cgc 0+00ppp0```pppppp0.,,-r(-/a_abaeaDaGaJ/./qnaDaGaJ0aaappp0*0*Pbbbk|bcc k|b0cccc;J0*0+0+0+;J0*0).cc 00%0a2a5a800000000000-.-r&,.0a`ucafaEuHaK0qi,qoaEHaK0a,<,0+Pk|bkbbccc kbb0p000000000000p0000a3u6a90pppaaaa2a5a8,,,/,,,paaadagaFaIaL0,.qpaFaI?>..?/-=P-,bbbbbbbbb,0```p`ppppaaaa2a5a8aaaa4a7a:0ptpauaa3u6a9-pp//0aza}appp-.,qnahakan0--,,.P/-,/bbbbb0`t``t`ptpauaa3u6a9auaa;a>aA0pppaaaa4a7a:0pt/a{u~apt,-.?qoailao0q.-.0+p0)0,.rkkbkk,kkb0`,```ppppaaaa4a7a:aaaaqpajamap0q,,0)pqq00+/.,00p0000000``/p`ppppaaaa;a>aAaaa a=a@aC0"0ptp-./0ppp0*;K0(;H0)0+0+,,0)aaa0p;Hqq00(0+./bbbbbb;J0)0`d,`t`ptpauaaaA09,9,-/,/pppp-..,,/,/bbb-bbb,;-..;;-/-/,000)c ccc0aDaGaJahakan00+0Bbbpbb//,//.,...,,,/-,pppaaA0b'b*b-;I0bbbbbb/,,.,-.-bfbibl/,-.,--,,,0p,p/,./,-,,>-.--/pp0cgc 0bvb=-,,.,./-bb.b00ppa,-aaadagaOaRaU00aa-pppq----,,,9-/0.,,-q-900%ppp0+;J/--00-,-,./,/./,-</,aa,a+a.a1,-,-.,/-,...?,,.qk/a2a5a80a_abae/s--q/q-,,ppp.-...-sq;.0pppaaa-,/,,:;.--//./.,/--.aa0,qG-qq,,./-/,//,/?.-/-a3u6a90a`ucaf,-,c(0)/-;/9ptp/----.-quapptpaua,./.--//--.,,/.---/,u.,,.qK:?=/.ua-/-..,?/qj//.a7a:paaadag,c)0)0)-ppp8,.0s/.qqa0pp/aaa..9/,/-;,.//-p0,,/.-/.,/.,qq /0B.-a/,,,/->,-.-/-0000.-c"c&c*0+;K/,ahakqnaaa000p000p0,:9:/.<,/,,9-,-//.-..,,//.,./--qq,?8..,>,//.-,q8qq.,aappp0(aiulqoaua00(ppp0ppp.bwvz-/.;;-..-.-,/-,9.,-...,..=./.q>-,..,>-ua0q3,.q//auaptpajamapaaa00ptp0ptp/bxb{b~/.-</<-/.,0,-/.-..-,.,..///,>>,-,/p,aaa0q4q7q://qaaappp;I0);K;J0*0+pp/0ppp0-.-,-/./,-./pp/-,.-/.-//..-,-.>-,./-,..ppp0.s.pppppp00p0+;J0)0);I;K;H0(p/-:-/-.,-,,,tp.-//..-,-.///..,a!u$,/,,/pppptp0s..ptpptp0a)a,a/0*0$aaa0+bIbLbOP,.9/.-8,ppp```-/,./--.,/.///..a".//,p//qG/ppp0-/,pppppp0a*u-a00)aza}aaua0)bJvMbP0P0bmbpbs-89/00000-,/-/./-.---,,>/-.p-ppp0,././---000000000a+a.a10;J;H0+a{u~aaaaPPPPPPPPbKbNbQ0P0bnvqbt///00+0+aDaGaJpp9.--.-,,//.,/--/tpptpp/.-0-.-pppa_abaeahakan0000/000a|aa0p00p0pppP```9bobrbu///0?/:uHaKpt./-//./,,//,=./?/pppp00p.,/,qKptpa`ucaf/ulaoaaa-a;a>aA00000p0*0)p0*pdp;J0*,ppp`t`;.-/-,/?90(aFaIaLpp.8////qpp.,.,??,000000aDaGaJ/-.-pppaaadagajamapauapaaAa)a,a/aEuHaK00a2a5a8ahakan0%0%0;I0aaa0a=a@aC0*0(.a`ucaf0)P0(0*0p000c cccppp0aaa,.//-,-,?;Ja3u6a9p.8-,.//98-=8./,,0aaA0aiulao0!b'b*b-0aaappp0+0+P0(ptp0aa a 0(cccc0*0*0+0pp.08vbbvb00)0(b b baaa-,,::,-,ptp:;:0a*u-a0a3u6a90a+a.a10auaaaA,,,a```0%0;J00ppp0bbc0aua;H;Ip.pqjqmqp00;H0+0*;I000auaaaa0bevhbkbnvqbtp`t`;Ipdpauaauacgc `t`q,:,`t`aaA0aVaYa\0(0*0)0(0.cc 0aua0)a+a.a1aFaIaL0aa,0)0(aDaGaJa2a5a800p00bvbbevhbk0aua0(;Jauaaua-..0;H,-8.,,/-//ptp.cgc aaA0000b.b1b40)0+cccpaua,0a3u6a9aFaIaLa4a7a:0aua0000p00000p000p0000p000/99.,/--.p000000```0000*;I0*0(aOaRaUpaaA```aaa0c gcc0aaa```0-;Jp0+0(0+0*0000%aFaI/auaaua0bb!b$0)0*0)0(000000p0000ccc bbc0auabwvzb}bwvzb}cgc ;Hauaaua0`d`a$Fc7$[M:::::;;;;&;,;2;6;8;:;:;;;:;9;9;8;8;7;7;7;7;7;7;8;9;8;:;:;:;:;:;8;6;1;+;$;; ;;:::::::::;::::::::;; ;;;;;;;;;;;;;;;;; ; ;;::::::::::::::::::::;:; ;;";*;1;5;7;:;:;:;:;9;9;9;7;8;7;7;7;6;8;7;9;9;9;:;:;:;:;8;5;1;+;#;; ::::::;:;::::::::::;;;;;;;";#;#;#;#;";!; ;;;;;;;;; ;:;::::::::;{;{;::::::::;;;;);.;;7;9;:;:;:;9;9;8;8;8;7;7;7;6;7;8;8;9;:;9;;;:;9;8;5;1;+;$;;;:::::::::::;C::;:;; ;;;;!;%;';););*;*;););(;(;&;&;$;#;";;;;; ;::::::::;{::~:;::;::::;;;;';-;3;6;9;:;:;9;:;9;8;8;7;7;7;7;7;7;7;9;8;:;:;:;:;9;8;6;1;,;%;;;:::::::::::::;:;; ;;;!;%;);,;-;/;/;0;/;0;/;.;.;-;,;,;*;);&;#;;;;:;::::::::|:{:}::::::::;;;;%;,;2;6;8;9;:;:;9;9;8;8;8;7;7;6;7;7;8;8;8;:;9;;;:;:;8;6;2;-;';;;::::::;C:::::::;;;;;$;);-;/;1;3;;5;;5;;;3;3;3;2;1;1;.;,;);$;;; ::::::::::{:x:z;w::::::;:; ;;$;,;1;6;8;9;9;:;9;9;8;8;8;7;6;7;7;7;7;8;9;9;:;:;;;:;8;7;;.;); ;; ;:;::::::::::;;;; ;&;,;/;3;5;6;7;9;8;9;8;8;8;8;7;7;7;6;5;3;1;.;);#;;;:::::::::z:w:y:~;:;:::::; ;;#;+;1;5;8;9;:;:;9;9;8;7;8;7;6;7;7;7;7;8;9;9;9;;;:;;;9;8;5;0;+;$;;;:::::::::::;;;;!;(;.;2;5;8;9;:;;;<;<;<;;;<;;;;;;;;;:;:;8;7;5;2;,;';;;:::::::::{:w:x:}::;:::::; ;;$;+;1;5;8;9;9;:;9;9;8;8;7;7;7;6;7;7;7;8;8;:;9;:;;;;;:;9;6;3;.;(; ;;;;:::::::;; ;;;$;);0;3;8;:;;;=;>;>;?;>;?;>;>;>;>;>;=;=;=;<;:;7;;0;);!;; ::::;::;{:|:x:x:~::::::::; ;;$;+;1;6;7;:;9;:;9;9;8;7;7;7;7;6;7;7;7;8;8;9;:;:;<;;;:;:;8;5;1;+;&; ;;; ;;::;;; ;;;;%;,;1;5;9;<;>;?;D;E;E;D;E;E;D;E;D;D;D;D;?;?;>;<;:;7;2;+;#;; :;:::::::}:z:{:;:::::;;;;;%;,;2;6;8;9;:;9;9;9;8;7;7;7;7;6;7;7;7;7;9;9;9;;;;;<;;;;;9;7;;/;+;&; ;;;; ; ; ;;;;;!;(;-;2;8;:;>;?;E;G;F;G;G;G;F;G;F;G;F;F;F;E;E;E;D;>;<;9;;-;%;;:::::;:;;w:}:~:::;::::;;;;&;-;3;6;8;:;:;9;9;9;8;7;7;7;6;7;6;7;7;7;8;9;:;;;;;<;;;<;;;9;6;;0;+;';#;;;;;;;;!;&;+;0;;9;<;?;F;F;@;A;A;A;@;A;@;@;A;@;G;@;G;@;G;F;E;D;>;:;6;/;&;;;;:::::::;w:;:::::::;;;;(;/;3;7;9;:;:;9;9;8;8;8;7;6;7;6;6;7;7;8;8;8;:;:;<;<;<;<;<;;;9;7;;1;.;*;';%;#;#;#;%;';+;/;3;7;:;>;E;G;A;A;B;C;B;C;B;B;C;A;B;A;B;A;A;A;@;@;G;E;?;<;7;1;(;;;::::::::;;::;:::::; ;;";*;0;5;7;9;:;:;:;9;8;8;7;7;6;7;6;6;7;7;7;8;9;9;:;<;<;<;=;=;<;<;:;8;5;;0;/;-;-;,;,;/;0;3;7;:;=;D;F;A;B;C;H;H;H;H;H;H;H;C;H;C;C;B;C;C;B;B;A;@;G;D;>;8;2;*; ;;::::;;:::::::;C:::;;;;%;,;2;5;8;:;:;:;:;9;8;8;7;7;6;6;6;7;6;7;7;8;8;:;:;;;<;<;>;=;>;=;<;<;9;8;7;5;5;3;;5;6;8;;;<;D;F;@;B;H;H;I;J;J;J;I;J;I;I;I;I;H;H;H;I;H;C;C;C;A;@;G;>;:;;,;!;;:::::::::::::::;:; ;; ;(;/;;6;9;:;:;:;:;9;8;8;7;6;7;6;6;6;6;7;7;7;9;9;:;;;;;=;>;>;>;?;>;>;=;<;;;;;:;:;:;;;=;>;D;F;@;B;C;I;J;K;J;P;K;K;K;K;J;J;K;J;I;J;I;I;J;I;H;H;C;A;@;D;;;6;.;$;; ::::::::::::::;:;;;;%;+;1;5;8;:;:;:;:;:;8;8;8;7;6;7;6;6;6;6;6;7;7;9;8;:;;;;;=;>;>;?;D;?;D;?;?;?;?;?;?;?;D;F;G;@;B;C;I;J;K;P;P;P;P;Q;P;P;P;K;P;K;K;K;J;K;J;K;J;J;I;H;C;@;F;=;8;0;';;;::::::::::;C:;:;;;;!;);.;;6;9;:;;;:;:;9;9;8;7;7;6;6;6;6;6;6;6;7;7;8;9;9;:;<;<;>;>;?;E;D;E;E;F;E;F;F;G;G;@;A;B;H;I;J;K;P;P;Q;Q;Q;R;Q;Q;Q;Q;P;P;P;P;P;P;K;P;K;K;K;J;I;H;B;@;?;9;3;+;!;; :;:::::::::::;; ;;;';,;2;5;8;:;:;;;:;:;9;8;8;7;7;6;6;5;6;6;6;6;7;7;7;9;9;:;;;<;>;>;?;E;E;F;F;G;G;@;A;A;B;C;H;I;I;K;P;P;Q;R;Q;R;R;R;R;Q;R;Q;Q;Q;Q;Q;P;Q;P;P;Q;P;K;K;J;J;C;@;E;<;6;/;%;;;:::::::::::;; ;;;%;+;1;;7;9;:;:;;;:;:;9;8;7;7;7;6;5;6;6;6;6;6;6;7;8;8;8;:;;;<;=;>;?;E;E;F;@;G;A;B;B;C;H;I;I;J;P;P;P;Q;R;R;R;R;S;R;R;R;R;Q;R;Q;Q;Q;R;Q;Q;Q;Q;P;Q;K;K;J;I;B;F;>;9;2;*;";;;::;::::;:;;;;;%;*;0;3;7;8;:;;;:;:;:;9;9;8;7;7;6;6;6;5;6;6;6;6;7;6;8;7;9;9;;;<;=;=;?;E;E;F;@;@;B;B;H;H;I;J;J;P;P;P;R;Q;R;R;R;R;S;R;R;R;R;Q;R;R;Q;R;Q;R;R;Q;Q;Q;Q;P;K;K;I;C;@;E;;;6;/;(;;;;;::::::;;;; ;%;+;0;3;6;8;:;:;;;:;;;9;9;8;8;7;6;7;5;6;6;5;6;6;6;7;7;7;8;8;9;;;;;=;=;?;D;E;G;G;A;B;C;H;I;I;K;K;P;Q;P;R;Q;R;R;R;R;R;R;R;Q;R;R;R;Q;R;Q;R;Q;R;R;Q;Q;Q;P;P;K;J;H;A;G;>;9;;-;';;;; ;;;;;; ;;;#;(;,;0;;6;9;9;:;;;;;:;:;9;8;8;8;7;6;6;6;6;5;6;6;6;6;7;7;7;8;8;9;;;;;<;=;?;D;E;F;@;A;B;C;H;I;J;K;K;Q;P;Q;R;Q;Q;R;Q;R;Q;R;Q;Q;R;Q;R;Q;Q;R;Q;R;Q;Q;Q;R;Q;P;P;K;J;I;B;@;E;<;8;3;-;(;!;;;;;;;;;;';,;.;2;;7;9;:;:;;;;;:;:;:;9;8;7;8;6;7;6;6;5;6;6;6;6;7;6;7;8;8;9;9;:;;;<;>;>;?;E;G;G;A;B;C;I;I;J;K;K;P;Q;Q;Q;Q;Q;Q;Q;Q;P;Q;Q;Q;Q;Q;P;Q;Q;Q;Q;Q;Q;Q;Q;Q;Q;P;P;K;J;I;C;B;F;?;<;7;3;/;*;';"; ;;;;;";%;/;2;;7;8;9;:;;;;;<;:;;;:;9;8;8;7;7;7;6;6;6;6;6;6;6;7;7;7;8;7;8;9;:;:;;;<;>;>;D;E;F;G;A;B;C;H;I;J;K;P;P;P;P;Q;Q;P;Q;P;P;P;P;Q;P;P;P;P;P;Q;P;Q;P;Q;P;Q;P;P;P;P;J;J;I;H;B;@;E;?;<;8;5;2;.;,;*;);(;(;*;+;-;6;6;9;9;;;;;<;<;<;;;;;:;9;9;8;8;7;7;6;7;6;6;7;6;6;7;7;7;8;7;9;8;:;:;:;<;<;>;>;D;D;G;G;@;B;C;I;I;J;K;K;P;P;P;P;P;P;K;P;P;K;K;P;K;K;P;K;P;P;K;P;P;P;P;P;K;P;K;K;J;J;I;H;B;A;G;F;?;<;:;8;6;3;2;1;1;1;2;3;;;;;;;;<;=;=;<;=;<;;;;;:;9;9;8;7;7;7;7;6;7;6;7;7;7;7;7;8;8;9;9;9;:;:;;;<;=;>;>;D;E;F;@;@;B;C;H;I;J;K;K;K;P;P;K;P;K;K;K;K;J;K;J;K;K;J;K;K;K;K;K;K;K;K;K;K;K;K;J;J;I;H;H;C;B;@;@;E;D;>;=;;;9;9;8;8;8;8;9;9;>;>;>;>;>;>;>;<;<;<;;;:;9;8;8;7;8;6;7;7;7;7;7;7;8;8;8;8;9;9;:;:;;;;;<;<;>;>;?;D;E;G;G;A;B;B;H;I;J;J;P;J;P;K;K;K;K;J;K;J;I;J;J;J;J;J;J;J;J;J;J;K;J;J;K;J;J;J;I;I;I;H;H;C;B;A;A;G;G;E;D;?;?;>;=;=;>;=;=;>;D;E;D;?;?;?;>;=;<;<;;;:;9;8;8;8;7;7;7;7;8;7;8;8;8;9;9;9;:;:;;;;;;;=;<;>;>;?;?;E;E;G;@;@;B;C;H;I;I;J;K;K;K;J;K;J;K;J;I;J;I;I;I;I;I;J;I;I;J;I;J;I;J;I;J;I;J;I;I;H;H;H;C;C;C;A;B;@;A;G;G;G;F;F;E;E;E;E;E;D;G;F;E;E;D;?;>;>;<;<;;;:;9;9;8;8;8;7;8;7;8;8;9;8;:;9;:;;;;;;;<;<;<;>;=;?;>;D;D;E;F;G;@;A;B;C;H;H;J;J;J;J;K;J;K;I;J;J;I;I;H;I;H;I;H;I;I;H;I;I;I;I;I;I;H;I;I;H;H;H;C;H;C;C;B;B;B;B;A;B;A;@;A;@;A;@;G;@;G;G;G;@;F;F;D;D;?;>;=;<;;;:;:;9;9;8;8;8;8;9;8;9;9;:;:;;;;;<;<;<;=;>;>;>;?;?;?;E;E;E;G;@;@;A;B;C;H;H;I;J;J;J;J;J;J;I;J;I;I;H;H;H;H;H;H;H;I;H;H;H;H;I;H;H;I;C;H;H;H;C;C;C;C;C;B;C;B;B;B;C;B;B;C;B;B;B;A;B;A;@;A;@;@;F;E;E;?;?;=;<;<;;;:;:;9;9;8;9;9;9;:;9;;;:;<;;;=;=;=;>;>;?;?;?;D;D;E;E;F;F;@;@;@;B;B;C;H;H;I;I;J;I;J;J;I;I;I;I;H;I;H;C;H;H;C;H;H;H;C;H;H;H;H;H;C;H;C;C;C;C;C;C;B;C;B;C;C;B;C;C;C;C;H;C;C;H;C;B;B;B;A;A;@;G;F;E;D;?;>;=;=;;;;;:;:;:;9;:;:;:;:;;;;;<;=;=;=;?;>;D;?;D;D;E;E;E;F;F;G;G;@;@;A;B;B;C;H;H;I;I;I;I;J;I;I;I;I;H;H;H;H;H;C;H;C;H;C;H;C;H;C;H;C;H;C;C;C;C;C;C;B;B;C;B;C;B;C;C;C;C;H;H;H;H;H;H;H;H;C;B;B;B;@;@;G;E;E;D;>;>;=;<;<;;;;;;;:;:;;;;;<;<;<;=;>;>;?;D;D;E;D;F;E;F;F;F;G;G;@;@;@;A;A;B;C;C;H;H;H;I;I;I;I;I;I;I;H;H;H;H;H;C;H;C;H;C;H;C;C;H;C;C;C;H;C;C;C;C;B;C;B;B;C;B;C;B;C;C;H;C;H;H;I;H;I;H;I;H;C;C;C;B;A;@;@;F;E;E;?;?;>;=;<;<;<;<;;;;;<;<;=;=;>;>;?;D;D;E;F;F;F;F;G;G;G;G;@;@;@;A;A;A;B;B;C;C;H;H;H;I;H;I;I;I;I;H;H;H;H;H;H;H;C;H;C;C;H;C;C;H;C;C;C;H;C;C;C;B;C;C;B;B;C;B;C;C;B;H;C;H;H;I;H;I;I;I;H;I;C;H;C;B;B;A;@;G;F;F;D;?;?;>;>;=;<;=;<;=;=;=;>;>;?;?;E;E;E;G;F;G;G;@;@;@;@;@;A;A;A;A;B;B;B;B;C;H;C;H;H;I;H;I;H;I;H;I;H;H;H;H;H;H;C;H;C;H;H;C;C;H;C;C;C;H;C;C;C;C;C;B;C;B;C;C;C;C;B;H;C;H;I;H;I;I;I;I;H;I;H;H;C;C;C;A;A;@;G;F;E;E;D;?;>;>;=;>;=;=;>;>;?;D;D;E;E;F;G;G;@;@;@;A;A;A;A;A;B;B;A;B;B;B;C;C;C;C;H;H;H;H;H;I;I;H;H;I;H;H;H;H;H;H;H;H;H;C;H;H;C;H;C;C;H;H;C;C;C;C;C;C;C;C;C;C;C;C;C;C;H;H;I;H;I;I;I;I;I;I;H;H;H;C;C;B;B;@;@;G;F;F;E;D;?;>;?;>;>;>;?;?;D;D;E;F;F;G;@;@;A;A;A;B;A;B;B;B;C;B;B;C;B;C;C;C;C;H;H;H;H;H;H;I;H;H;I;H;I;H;H;H;H;I;H;H;H;H;H;H;C;H;C;H;H;C;H;H;C;C;C;H;C;C;C;C;H;C;H;C;H;I;H;I;I;I;H;I;I;I;I;H;H;H;C;C;B;A;A;@;G;F;F;D;D;?;?;?;?;>;D;?;D;E;F;F;G;@;@;A;B;B;B;B;C;C;B;C;C;C;C;C;C;C;C;H;C;H;H;H;H;H;H;I;H;H;I;H;I;H;I;H;H;I;H;H;I;H;H;H;H;H;H;H;H;H;H;C;H;H;C;H;C;H;C;H;C;H;H;H;H;I;H;I;I;I;I;I;I;I;H;I;H;H;H;C;C;B;A;@;@;G;F;E;D;D;?;?;?;?;?;D;D;E;E;G;G;A;@;B;B;B;C;C;C;H;C;C;H;C;H;C;H;C;H;H;C;H;H;H;I;H;H;I;H;I;H;I;H;I;I;H;I;H;I;H;I;H;I;I;H;H;H;H;H;H;H;H;I;C;H;H;H;H;H;C;H;I;H;H;I;H;I;I;I;I;I;I;I;I;I;I;H;I;H;C;C;C;A;A;@;@;F;E;D;D;?;>;>;?;>;?;D;D;E;G;G;A;@;B;C;B;H;C;H;C;H;H;H;H;H;C;H;H;H;H;H;H;I;H;H;I;H;I;H;I;H;I;I;I;I;H;I;I;H;I;I;I;I;I;H;I;H;H;I;H;H;I;H;H;I;H;H;H;H;H;I;H;I;H;I;I;I;I;I;I;I;I;I;I;I;I;I;I;H;I;C;C;B;A;@;G;F;D;D;>;>;=;=;=;=;>;>;?;E;E;G;@;@;B;B;C;H;C;H;H;H;H;I;H;H;I;H;H;H;I;H;H;I;H;I;H;I;I;H;I;I;H;I;I;I;I;I;I;I;I;I;J;I;I;H;I;I;H;I;I;H;I;H;I;H;I;H;I;H;I;H;I;I;I;I;I;I;I;I;I;J;I;I;I;J;I;I;I;I;H;H;C;B;A;@;F;E;D;>;=;;;;;:;;;:;;;<;=;?;?;F;F;@;A;B;C;H;C;H;H;I;H;I;H;I;H;I;I;H;I;H;I;H;I;I;H;I;I;I;I;I;I;I;I;I;I;I;I;J;I;I;J;I;I;I;I;I;I;I;I;I;I;I;H;I;H;I;I;I;I;I;I;I;I;I;J;I;I;I;I;J;I;I;J;I;I;I;I;I;H;H;C;B;A;F;F;?;>;;;:;9;7;7;6;7;7;8;:;;;>;?;E;F;@;A;B;C;H;H;H;I;I;H;I;I;I;I;H;I;I;I;H;I;I;I;I;I;I;I;I;I;I;I;J;I;I;J;I;I;J;J;I;J;I;I;J;I;I;I;I;I;I;I;I;I;I;I;J;H;J;I;I;I;I;J;I;J;I;I;J;I;J;I;I;J;I;I;I;I;I;C;C;A;@;E;D;=;;;8;6;3;3;1;1;1;2;3;5;8;9;<;?;D;F;@;B;B;C;H;H;I;I;I;I;I;I;I;I;I;H;I;I;I;J;I;I;I;I;I;I;I;J;I;J;I;J;I;J;J;I;J;I;J;J;J;I;I;J;I;I;J;I;I;I;J;I;I;J;I;I;I;J;I;J;I;J;I;J;I;J;I;J;I;J;I;J;I;I;I;H;H;A;A;F;D;=;9;7;3;1;.;,;*;*;*;+;,;/;2;5;8;;;>;D;F;@;B;C;C;H;I;I;I;I;I;I;I;I;I;I;I;I;J;I;I;I;J;I;I;I;J;I;J;J;I;J;J;J;J;I;J;J;J;J;I;J;J;I;J;I;J;J;I;I;J;J;I;J;I;I;J;I;J;J;I;J;I;J;I;J;J;I;J;I;J;I;I;I;I;C;C;A;G;D;=;:;6;1;.;*;&;$;";!;!;";$;(;+;/;3;6;:;>;D;G;@;B;C;H;I;I;I;I;I;I;I;I;I;I;J;I;I;J;I;I;J;I;J;I;J;J;J;I;J;J;J;J;J;J;J;J;J;J;J;J;J;J;I;J;J;J;J;I;J;J;J;I;J;I;J;I;J;J;I;J;J;I;J;J;I;J;I;J;I;J;I;I;H;H;A;@;E;>;:;6;1;,;&;";;;;;;;;;#;';-;2;6;:;>;E;G;A;C;C;H;I;I;I;I;I;I;J;I;I;I;J;I;J;I;J;I;J;I;J;J;J;J;J;J;K;J;J;J;J;K;J;J;J;K;J;J;J;J;J;J;J;J;J;J;J;J;I;J;J;J;I;J;J;I;J;J;I;J;J;I;J;I;J;I;I;I;H;H;B;A;F;?;;;7;1;+;%;;;;; ; ; ; ;;;; ;&;,;1;7;;;?;E;@;B;C;H;H;I;I;I;I;J;I;I;I;J;I;J;I;J;J;I;J;J;J;J;K;J;J;K;J;K;J;J;K;J;K;K;J;K;J;J;K;J;J;J;K;J;J;J;J;J;J;J;J;J;J;I;J;J;J;J;I;J;I;J;I;J;I;I;J;I;H;C;B;G;E;<;9;2;,;%;;;; ;;::;;; ;;;;&;,;3;8;=;?;G;A;B;H;H;I;I;I;I;I;I;I;J;I;J;J;I;J;J;J;J;J;J;K;J;K;J;K;K;K;K;J;K;K;K;K;K;J;K;K;K;J;K;J;K;J;K;J;J;K;J;J;J;J;J;J;J;I;J;J;I;J;I;J;I;J;I;I;I;H;H;B;A;F;?;:;5;/;';;; ;::::::::;;;;;(;/;5;:;>;F;G;B;C;H;H;I;I;I;I;J;I;J;I;J;I;J;J;J;K;J;J;K;K;J;K;K;K;P;K;K;K;P;K;K;P;K;K;K;P;K;K;K;J;K;K;K;J;K;J;K;J;J;J;J;J;J;J;I;J;J;I;J;I;J;I;I;I;I;H;C;B;@;D;=;8;2;+;";;;::;:::::::;;;;";+;2;8;=;D;G;A;B;H;H;I;H;I;J;I;J;I;J;I;J;J;J;K;K;J;K;K;K;K;P;K;P;K;P;P;P;K;P;P;P;K;P;P;P;K;P;K;K;P;K;K;J;K;K;K;J;K;J;J;J;J;J;J;I;J;I;J;I;I;J;I;I;H;C;C;A;F;D;;;6;/;';;; :::::::::;::; ;;;';/;6;;;?;F;A;B;C;H;I;H;I;I;J;J;I;J;J;J;J;K;J;K;K;P;K;P;K;P;P;P;Q;P;P;Q;P;P;Q;P;P;Q;P;Q;P;P;P;K;P;P;K;K;K;K;K;K;K;J;K;J;J;J;J;I;J;J;I;I;I;I;I;I;I;H;B;@;F;?;9;5;,;$;;;:;::::::::::;;;;$;-;;:;>;F;@;B;C;C;H;I;I;I;I;J;J;J;J;J;K;K;K;K;P;P;P;P;P;Q;P;Q;Q;Q;Q;Q;Q;Q;Q;Q;Q;Q;Q;Q;Q;Q;P;Q;P;P;P;P;K;P;K;K;K;K;K;J;K;J;J;I;J;I;J;I;I;I;I;H;H;C;B;@;E;>;9;2;,;";; :::::::::::::;; ;;#;+;3;9;>;E;G;B;B;H;H;H;I;J;I;J;J;J;K;J;K;K;P;P;P;P;Q;Q;Q;Q;Q;R;R;Q;R;R;R;R;R;R;Q;R;R;Q;R;Q;R;Q;Q;P;Q;P;P;P;P;P;K;K;P;J;K;J;J;J;I;J;I;I;I;I;I;H;H;C;A;@;D;>;8;2;*;!;; ::::::::::::::; ;;";+;2;8;=;E;G;B;B;C;H;I;I;I;J;I;K;J;K;K;K;P;P;Q;Q;Q;Q;R;Q;R;R;S;R;S;R;S;S;S;R;S;S;S;R;S;R;R;R;R;R;Q;R;Q;P;Q;P;P;P;P;K;K;K;K;J;J;I;J;I;I;I;I;H;I;C;C;A;@;D;=;8;2;*;!;; ::::::::::::::; ;;";+;2;8;=;D;@;A;B;C;H;I;I;I;J;J;J;K;K;P;P;P;Q;Q;Q;R;R;S;R;S;S;S;L;S;L;S;L;L;S;L;L;S;L;S;L;S;S;R;S;R;R;R;R;Q;Q;Q;P;P;P;K;K;K;K;J;J;I;I;I;I;I;I;H;C;B;A;G;E;=;9;2;+;";; ;::::::::::;:;;;;#;+;3;9;=;E;G;A;B;H;H;H;I;J;I;K;J;P;K;P;Q;P;R;R;R;R;S;L;S;L;S;L;M;L;M;L;M;M;M;L;M;M;L;M;L;L;L;L;S;S;S;S;R;R;R;Q;Q;Q;P;P;P;K;J;K;J;I;J;I;I;H;I;H;C;B;A;G;E;>;9;3;-;$;;;::::::::::;:;;;;%;-;;9;>;E;G;A;C;C;H;I;I;I;J;K;K;K;Q;P;Q;Q;S;R;S;S;L;L;L;M;M;L;N;M;N;M;N;N;N;M;N;N;M;N;M;M;M;M;L;L;L;L;S;S;R;R;R;Q;Q;Q;P;K;K;K;J;J;I;I;J;H;I;C;H;C;A;G;F;>;:;5;.;';;; ::;::::::::;; ;;;';/;5;;;>;F;G;B;B;C;I;H;J;I;J;K;P;P;P;Q;R;R;S;S;L;L;L;M;M;N;M;N;N;O;N;O;O;N;O;O;O;O;N;O;N;N;N;N;M;N;L;M;L;S;L;S;R;R;Q;Q;Q;P;K;K;K;J;J;I;I;I;H;H;C;C;A;@;F;?;;;7;0;*;";;;:::;::;;::;;;;";+;1;7;<;?;F;@;A;C;H;H;I;J;I;K;K;K;Q;Q;R;R;R;L;L;L;M;M;N;N;N;N;O;O;X;O;X;O;X;X;X;X;X;X;O;X;O;O;O;N;N;N;M;M;M;L;S;L;R;R;R;Q;P;P;K;P;J;J;I;I;I;I;H;C;B;B;@;F;D;=;8;3;.;&;;;;:::::::;;;;;;';.;;8;=;D;F;A;B;C;C;I;I;I;K;J;K;P;Q;R;R;R;L;S;M;M;M;O;N;O;O;O;X;X;X;X;Y;Y;Y;Y;Y;Y;Y;X;Y;Y;X;X;X;O;O;O;N;N;M;M;L;L;L;R;R;R;Q;Q;K;P;J;J;J;I;I;I;H;C;C;A;A;G;E;=;;;6;0;+;$;;;;;;::;;; ;;;;$;*;1;6;:;>;E;G;A;B;C;H;H;J;I;K;J;P;P;Q;R;S;S;L;L;M;N;N;O;O;O;X;X;X;Y;Y;Y;Z;Z;Z;Z;Z;Z;Z;Z;Y;Z;Y;Y;Y;X;X;X;O;O;N;M;M;M;L;S;S;R;R;Q;P;P;K;J;J;J;I;H;H;H;C;B;A;G;F;?;<;8;;.;);#;;;; ; ;;; ; ;;;;";);.;3;8;;;?;F;G;A;B;C;H;I;I;J;K;K;K;Q;Q;R;S;L;L;M;M;O;N;X;O;Y;X;Y;Y;Z;Y;Z;[;Z;[;[;[;[;[;[;[;Z;Z;[;Y;Y;Y;Y;X;O;O;N;N;M;M;L;L;R;S;Q;Q;P;K;K;J;I;I;I;H;H;H;B;A;@;F;D;>;:;6;2;,;(;";;;;;;;;;;; ;&;+;1;5;9;<;D;F;G;A;C;C;H;I;I;J;J;P;P;Q;Q;S;S;L;L;N;M;O;O;X;X;Y;Y;Y;Z;Z;[;[;[;[;T;T;T;T;[;T;T;T;[;Z;[;Z;Z;Y;Y;X;X;O;N;N;M;M;L;S;S;R;Q;P;K;K;K;I;J;H;I;C;C;B;B;@;G;D;?;<;8;3;0;+;&;!;;;;;;;;;;#;(;,;2;6;9;=;D;F;G;B;B;C;H;I;I;J;K;K;P;Q;R;S;S;L;M;N;N;O;O;X;Y;Y;Z;Z;Z;[;[;T;[;U;T;T;U;U;U;T;U;T;T;T;[;[;Z;Z;Z;X;Y;O;X;N;N;M;L;L;S;S;Q;P;P;K;K;J;I;I;H;H;H;B;B;@;G;F;?;<;9;5;1;,;(;#;;;;;;;;;;#;(;,;1;6;9;=;?;E;@;A;B;H;C;I;I;J;K;P;P;Q;R;S;S;M;M;M;O;O;X;X;Y;Y;Z;Z;[;T;T;T;T;U;U;U;V;U;U;V;U;U;T;U;T;[;T;Z;Z;Z;X;X;X;O;N;N;M;L;L;R;R;Q;P;K;K;J;I;I;H;H;C;B;B;@;G;F;?;<;9;6;1;,;';#;;;;;;;;;;!;&;*;/;;8;;;?;E;G;@;B;C;H;I;I;J;K;K;Q;Q;R;S;S;M;M;N;N;O;X;Y;Y;Y;[;Z;T;[;U;T;U;V;U;V;V;V;V;U;V;V;U;U;U;T;[;T;Z;Z;Y;Y;X;O;O;N;M;M;S;S;R;Q;P;P;K;J;J;I;H;H;C;C;A;A;F;E;?;<;8;;0;+;%; ;;;;;;;;;;;!;';,;1;5;:;<;D;G;@;A;C;H;H;I;J;K;P;P;Q;R;S;L;L;M;N;O;O;X;X;Z;Y;[;Z;T;T;T;V;U;V;V;V;V;V;W;V;V;V;V;U;U;U;T;T;[;Z;Z;Y;X;X;O;N;M;M;L;S;R;R;P;P;J;K;I;I;I;H;C;C;A;@;G;D;>;:;7;2;-;';!;;;; ; ;;; ; ;;;;!;';,;2;7;;;?;E;G;A;B;H;H;I;J;K;K;Q;Q;R;R;L;L;M;N;O;O;X;X;Z;Y;[;[;[;T;U;U;V;V;V;V;W;V;W;W;V;W;V;V;U;U;T;T;T;Z;Z;Z;X;X;O;N;N;M;L;S;R;R;P;P;K;J;J;I;I;H;C;C;A;G;F;D;<;9;;/;);";;;;;;:::;;; ;;;!;(;.;3;9;<;D;F;A;B;C;H;I;J;K;K;P;Q;R;S;S;L;M;N;N;O;X;X;Y;Z;Z;[;T;T;U;U;V;V;V;V;W;W;W;W;V;W;V;V;V;U;U;T;[;[;Z;Y;Y;X;O;O;M;M;L;S;S;Q;Q;P;K;J;J;I;H;H;C;B;A;G;E;>;;;6;2;+;$;;; ;::::;:::;; ;;;";);0;5;;;>;E;@;B;C;H;H;J;K;K;P;Q;Q;S;S;L;L;N;N;O;O;X;Y;Z;Z;[;[;T;U;U;V;V;V;V;W;W;W;W;W;V;V;V;V;U;U;T;T;[;Z;Y;Y;X;O;N;N;M;L;S;R;R;P;P;K;K;I;I;I;H;C;B;@;G;D;=;9;;.;';;; ;::;::::::::; ;;;$;,;3;8;=;D;G;A;B;H;I;I;K;K;P;P;R;R;R;L;L;M;N;N;O;X;Y;Y;Z;[;[;T;U;U;U;V;V;V;W;V;W;W;W;V;W;U;V;U;U;T;[;[;Z;Y;Y;O;O;O;M;M;L;S;R;R;P;P;K;J;J;I;I;C;C;A;@;F;D;;;8;1;+;";;;:;::::::::;:;; ;;;(;0;5;<;?;F;@;C;C;I;I;J;P;K;P;Q;R;S;S;L;L;M;O;N;X;X;Y;Z;Z;[;[;U;T;U;V;U;V;W;V;W;V;W;V;V;V;U;U;U;[;T;Z;Z;Y;X;X;N;N;N;M;S;S;R;Q;Q;P;K;J;J;I;H;H;B;B;G;F;>;;;5;/;(;;; ::::::::::::::;;;;$;-;3;:;>;F;@;B;C;I;I;J;K;K;P;Q;Q;R;S;L;L;M;M;N;O;X;Y;Y;Z;Z;[;T;T;U;U;U;V;U;V;V;W;V;V;U;V;U;T;U;[;[;Z;Y;Y;X;O;O;N;M;L;S;S;R;Q;Q;K;K;J;J;I;H;C;C;A;@;D;>;9;;-;%;;;:::::::::::::;:; ;;!;*;2;8;=;E;@;B;C;I;I;J;J;P;K;Q;P;R;S;S;S;L;M;N;O;O;X;Y;Y;Z;Z;[;T;T;T;U;U;U;V;U;V;V;U;U;U;U;T;[;[;[;Y;Z;X;X;N;N;N;L;M;R;S;Q;Q;P;P;J;K;I;I;H;H;C;A;G;E;=;9;2;+;";; :;::::::;:::::::;;;;(;1;7;=;E;G;B;C;I;I;I;K;K;K;P;Q;Q;R;S;S;S;M;M;N;N;X;X;Y;Y;Y;[;[;[;T;T;U;T;U;U;U;U;T;U;T;T;T;[;Z;Z;Y;Y;O;X;N;M;M;M;S;S;R;Q;Q;K;P;J;J;J;I;H;C;C;A;G;E;=;8;1;*;!;; :::::::::;::::::;;;;(;/;7;=;D;@;A;C;I;I;I;K;J;P;K;P;Q;R;R;R;S;L;M;M;N;O;O;X;X;Y;Z;Z;[;[;[;T;T;T;T;T;T;T;T;[;T;Z;[;Y;Z;X;X;O;O;N;M;L;L;S;R;R;P;Q;K;K;K;J;I;I;H;H;C;A;G;E;=;8;2;); ;;::::::::::;:::::;;;;&;0;7;<;E;@;A;H;H;I;J;J;J;K;K;P;Q;Q;Q;R;S;S;L;M;M;N;N;O;X;X;Y;Y;Z;Z;[;[;[;[;[;[;T;[;Z;[;[;Z;Y;Y;Y;O;X;N;N;M;M;S;S;S;R;Q;P;P;P;K;J;J;I;I;H;H;C;A;@;E;=;9;2;);!;;:;::::::::::;C:::;;;;';0;7;>;D;@;B;H;H;I;J;J;J;K;K;K;P;Q;Q;Q;R;S;S;L;L;N;M;O;N;X;O;Y;Y;Y;Y;Z;Z;[;Z;Z;[;Z;Z;Z;Y;Y;Y;X;X;O;N;N;M;M;S;L;R;R;Q;Q;P;P;K;K;J;J;I;I;H;H;C;B;@;F;>;9;3;*;";; :::::::;;:::::::;;;;);1;8;>;F;@;B;H;H;I;J;J;K;J;K;K;K;Q;P;Q;R;R;R;S;L;L;M;M;N;O;O;O;X;X;Y;Y;Y;Y;Y;Y;Z;Y;Y;Y;X;X;X;O;O;N;N;M;L;L;S;S;R;Q;Q;P;P;K;K;K;J;J;I;I;I;H;H;B;A;F;?;:;5;-;$;; ;:::::::::::::::; ;;!;+;3;:;?;F;A;C;C;I;I;J;J;J;J;K;K;K;P;P;Q;Q;Q;R;R;S;L;L;L;M;N;N;N;O;O;X;O;X;Y;X;X;X;X;X;X;O;O;O;N;N;M;M;L;L;S;S;Q;R;Q;Q;K;P;K;J;K;J;J;I;I;I;H;H;C;B;G;D;<;6;0;';;;:;::::::::::::;;;;&;.;5;;;D;G;B;C;H;I;I;J;J;J;J;J;K;K;P;K;P;Q;Q;Q;R;R;S;S;S;M;L;M;M;N;N;O;O;O;O;O;O;O;N;O;O;N;N;N;M;M;L;L;L;S;R;R;Q;Q;Q;P;K;K;K;K;J;J;J;J;I;I;I;H;H;B;@;E;>;9;3;*;";; ;:;:::::::::::; ;; ;);1;8;=;E;@;C;C;I;I;J;I;J;J;J;K;J;K;K;K;P;P;P;Q;Q;Q;R;S;S;S;L;L;L;M;M;M;N;M;N;N;N;N;M;N;N;M;M;M;L;L;S;S;S;R;Q;R;Q;P;P;P;K;K;K;J;K;J;J;I;J;I;I;I;H;C;A;G;D;;;6;/;';;; ;::::::::;::;;;;&;-;5;;;?;F;A;C;H;I;J;I;J;J;J;J;J;K;J;K;K;K;P;P;P;P;Q;Q;R;R;R;S;S;L;S;L;M;L;L;M;M;L;M;L;M;L;L;L;L;S;S;S;R;Q;R;Q;Q;P;P;P;K;K;K;K;J;J;J;J;J;J;I;I;I;I;H;B;@;F;>;9;;,;%;;; ;::;::;::;;;;;#;+;3;8;=;E;@;B;H;H;I;J;I;J;J;J;J;J;K;J;J;K;K;P;K;P;P;P;P;Q;Q;R;R;R;R;S;S;S;S;S;L;S;L;S;S;S;S;S;S;R;S;R;Q;R;Q;P;Q;P;P;K;P;K;K;K;J;K;J;J;J;J;J;J;I;J;I;H;H;B;G;E;<;7;2;,;$;;;;;::::;;; ;;;#;*;0;7;;;D;G;A;C;H;I;I;J;J;J;J;J;J;I;K;J;J;K;J;P;K;K;P;K;P;P;Q;P;Q;Q;R;Q;R;R;Q;R;S;R;R;R;Q;R;R;R;Q;Q;Q;R;P;Q;P;P;P;P;P;K;K;K;K;K;J;J;K;J;J;J;K;J;J;J;J;I;I;C;A;G;?;<;6;2;+;&;;;;; ; ; ; ;;;;;$;*;0;6;:;?;E;A;B;H;H;J;I;J;J;I;J;J;J;J;J;J;J;K;J;K;K;K;K;K;P;K;P;K;P;P;P;Q;P;P;Q;P;Q;Q;P;Q;P;Q;P;P;P;P;P;P;P;P;K;P;K;P;K;K;J;K;K;K;K;J;J;K;J;K;J;K;J;J;K;I;J;H;C;@;F;?;;;7;2;-;';$;;;;;;;;;#;&;,;1;6;:;=;F;G;B;C;H;I;I;J;J;J;J;I;J;J;J;J;J;J;J;K;J;K;J;K;K;K;J;K;K;K;J;K;K;J;K;K;K;K;K;K;K;K;K;J;K;J;K;K;K;J;K;K;K;J;K;K;K;J;K;K;K;K;J;K;J;K;K;K;J;K;K;K;J;J;I;H;B;@;F;?;;;7;;/;,;(;&;$;";#;#;%;(;+;.;2;7;:;>;D;G;A;C;H;H;J;I;J;I;J;J;J;J;J;I;J;J;J;J;K;J;J;J;K;J;J;J;I;J;I;J;I;I;I;I;I;I;I;I;I;I;I;I;I;I;H;I;J;I;I;J;I;J;J;K;J;J;K;K;K;K;K;K;J;K;K;K;K;K;K;K;K;K;K;I;I;H;A;@;F;?;<;8;6;3;0;.;-;+;,;,;-;/;2;5;8;;;>;D;G;@;B;H;H;I;J;I;J;I;J;J;I;J;J;J;J;J;J;J;J;I;J;J;J;I;I;I;I;H;H;C;C;C;C;C;C;B;C;B;C;C;C;C;B;C;B;C;H;C;H;H;H;I;I;J;J;J;K;J;K;K;K;K;K;P;J;P;K;K;K;K;K;K;K;J;I;I;C;B;G;F;?;=;;;8;7;;;2;3;3;;5;8;9;<;>;E;F;@;B;C;C;I;I;J;I;J;I;J;I;J;J;J;I;J;J;J;J;J;I;J;I;I;I;H;C;C;B;B;A;A;@;@;@;@;@;@;G;@;@;@;@;@;@;@;@;A;A;B;B;C;C;I;H;J;J;J;K;J;P;K;K;K;K;K;P;K;K;P;K;K;K;K;K;J;I;H;C;A;@;F;D;>;<;;;9;9;8;8;8;9;:;;;=;?;D;G;G;B;B;C;H;I;I;I;J;I;J;I;J;I;J;I;J;J;I;J;J;I;J;I;H;I;C;B;B;A;@;G;F;F;E;E;D;E;D;D;E;D;D;E;D;D;E;E;E;F;F;G;@;A;B;B;H;I;I;J;J;K;K;K;P;K;P;K;K;P;K;K;K;P;K;K;K;J;I;I;C;C;A;G;F;E;?;>;=;<;<;;;<;<;=;>;D;D;F;@;@;B;C;C;H;I;H;J;I;I;I;I;J;I;J;I;J;J;I;J;I;I;I;I;C;C;B;A;@;F;D;D;?;=;>;<;=;<;<;<;<;<;<;<;=;<;<;=;=;>;?;D;E;E;@;A;B;H;H;I;J;K;K;K;P;K;P;K;P;K;P;K;P;K;K;K;K;J;I;I;H;B;B;A;G;F;E;D;?;?;>;=;?;>;?;D;D;F;G;G;A;B;C;C;H;H;I;I;I;I;I;I;I;J;I;I;J;I;I;J;I;I;H;H;B;B;@;F;D;?;=;<;:;9;8;8;7;8;7;7;7;7;7;7;8;7;7;8;9;9;:;;;>;>;E;F;A;A;H;H;I;K;J;K;P;K;P;K;P;P;K;K;J;K;K;K;K;I;J;H;H;C;B;A;@;G;F;E;D;D;?;?;?;D;D;D;E;F;G;@;A;B;B;C;C;H;I;H;I;H;I;J;I;I;I;I;I;J;I;I;H;I;C;C;A;G;E;D;=;:;9;6;5;;2;2;1;2;1;2;1;2;1;2;1;2;2;2;2;;5;6;9;:;=;?;F;@;A;C;I;J;J;K;K;P;K;K;P;P;K;K;K;J;K;K;J;I;I;H;H;C;B;A;@;G;F;F;D;D;D;D;?;D;D;D;E;F;G;G;A;A;A;C;C;C;H;I;H;I;H;I;I;I;I;I;I;I;I;I;H;C;B;A;G;E;>;<;8;6;3;1;/;-;,;+;+;*;+;+;,;+;,;+;+;+;+;,;,;-;/;0;3;6;8;<;>;E;@;A;H;H;J;K;J;P;K;K;P;K;K;K;K;J;J;J;J;I;I;C;H;B;B;@;@;F;G;E;E;?;D;?;D;?;D;D;E;E;F;G;G;@;B;A;C;C;C;H;H;H;I;H;I;I;H;I;I;I;I;H;C;B;A;F;E;=;;;7;3;0;-;*;(;&;$;$;$;$;$;$;%;%;%;%;$;%;$;$;%;&;';*;,;0;;6;;;=;E;@;A;H;I;J;J;K;K;K;K;K;K;K;J;J;J;J;I;I;H;C;C;A;A;@;G;F;F;E;D;?;?;?;?;>;?;D;D;D;E;F;G;G;@;B;A;B;C;H;C;H;H;H;I;I;H;I;H;I;H;C;B;A;F;D;=;:;6;2;.;);&;"; ;;;;;;;;;;;;;;;;;; ;";%;);-;2;6;9;>;E;G;B;H;I;I;K;J;K;K;J;K;J;I;J;I;I;I;H;C;C;B;A;@;G;F;F;D;D;?;?;>;>;>;>;>;?;?;?;D;E;F;F;@;@;A;A;B;C;C;C;H;H;H;I;H;H;H;H;C;B;A;F;E;=;9;5;1;,;';";;;;;;;;;;;;;;;;;;;;;;;;";&;+;1;;:;>;E;@;B;H;H;J;J;J;J;J;J;J;I;I;I;I;C;H;B;B;A;A;G;F;E;E;D;?;>;=;=;>;=;=;=;=;>;?;?;?;E;E;G;G;@;@;A;B;C;C;C;H;H;H;H;H;C;C;B;@;G;D;>;9;5;0;*;%;;;;;; ; ; ;;;;;;;;;;;;; ; ;;;;;;$;*;0;5;:;>;E;@;B;H;H;J;I;I;J;I;J;H;I;H;H;C;B;B;A;@;G;G;E;E;?;?;>;=;=;<;<;<;<;<;<;=;>;>;>;D;D;E;F;G;@;@;A;B;B;C;H;C;C;H;C;C;B;@;G;D;=;:;5;/;*;$;;;; ; ;;;;;;; ; ; ;;; ; ; ;;;;;; ; ;;;;#;*;0;6;:;?;E;A;B;C;H;H;I;H;I;I;H;H;C;C;B;B;@;A;G;G;E;D;D;>;>;=;<;<;;;;;;;;;;;<;<;<;=;=;?;?;D;E;F;F;@;@;A;B;B;C;C;C;B;C;B;@;F;D;>;9;5;0;);#;;;;;:::::;;;;; ; ; ; ;;;;:::;;;;;;;#;+;1;6;;;?;E;@;B;B;C;H;H;C;H;B;C;B;B;A;A;@;@;F;F;D;D;>;>;<;<;<;:;;;:;:;:;:;;;;;;;<;<;>;>;>;D;E;F;G;G;@;B;A;B;B;B;B;A;A;F;D;=;:;5;/;*;";;; ;:::::::::;;;;;;;;::::::::;; ;;;$;+;2;7;;;?;F;G;@;B;B;B;C;B;B;A;A;A;@;@;G;G;E;E;?;?;>;<;<;;;;;:;9;:;9;9;:;9;:;:;<;;;<;=;>;?;D;E;E;G;G;A;@;B;A;A;A;G;G;D;=;9;5;0;);";;; ;::;;;;:::::;;;;;;::::;:::::;; ;;;&;,;2;8;;;>;E;F;G;@;A;A;A;G;@;@;@;G;G;F;F;D;D;>;>;=;<;;;;;9;:;9;8;9;8;9;9;9;:;:;;;;;<;=;>;?;D;D;F;G;G;@;@;A;@;G;E;D;=;9;5;/;);";;;::;::::::;::::;;;;:::;;:::::::;;;;;&;.;2;7;;;=;?;D;E;G;F;G;E;F;F;F;G;E;F;D;D;?;>;=;<;<;:;:;9;9;8;8;8;8;8;9;8;9;:;9;;;;;<;=;>;?;D;E;F;F;G;@;G;F;E;D;<;9;5;/;);!;;;:::::::::::::::;;;;:::;::::::;::;;;; ;';.;1;6;9;:;=;>;?;D;E;>;D;D;D;E;D;E;?;?;>;=;=;<;;;:;9;9;8;8;8;8;7;8;8;8;8;9;9;:;:;<;<;=;>;D;D;E;E;F;F;F;E;>;<;9;;/;(;!;;;:;:::::::::::::::;:::::::::::::;::;;;;!;';+;0;3;6;7;9;<;<;=;;;<;=;>;?;?;?;?;>;=;=;<;<;:;:;9;8;9;8;7;7;7;8;7;8;8;8;8;:;:;:;<;<;>;?;D;D;D;E;E;D;>;<;8;;.;); ;;;::::::::;C::::::::::::::;:::::::::::;; ;;;;%;);,;/;1;3;6;7;:;6;9;9;<;<;=;>;>;=;=;=;;;;;;;9;9;8;8;8;7;7;8;7;7;7;7;8;9;9;9;:;;;<;>;>;?;?;D;D;?;=;<;8;3;/;(; ;; ;:;:::::::::::::::::::::::::::::::::;:;; ;;;; ;$;';);,;/;1;;0;3;6;7;:;;;<;=;<;=;<;<;;;:;9;9;8;8;8;7;7;7;7;7;7;7;8;8;8;9;:;;;<;=;=;?;?;>;>;>;;;8;3;/;(; ;; ;::::;C:::;::::::::;::::::;::::::::::::::;;;;;;;; ;#;&;*;-;);-;1;;6;9;:;;;<;;;<;<;:;;;9;9;8;8;8;7;7;7;7;7;7;7;7;8;8;9;:;:;<;<;>;=;>;>;=;;;8;;/;); ;; ;::::::;:::::::::::;:::::;:::::::::::::;:::;;; ;;;;;;!;$; ;&;*;/;2;6;8;9;;;;;<;;;;;:;:;9;8;8;8;7;7;7;7;6;7;7;7;8;8;9;:;:;<;<;=;=;=;=;;;8;5;0;*;";;;:::::::::::;:;:::::;;::::::::::::;C::::::;:::::;;;; ;;;;;;#;);.;1;5;8;9;;;;;;;;;:;:;9;9;8;8;7;7;7;7;6;8;7;7;7;8;9;:;:;;;<;=;<;=;;;9;6;1;,;$;;;::::::::::::::::::::;;:::::::::::::::::::::;:;:::::;; ;; ;;;";(;.;1;6;7;:;:;;;;;;;:;9;9;8;8;8;7;7;7;6;7;7;7;8;8;9;:;:;;;<;<;<;;;:;7;3;.;';;;:::::::::::::::;:;C:::;::::::::::::::::::::::::::::;:::;:; ;;;";);.;2;6;8;:;:;;;;;;;9;9;9;8;8;7;7;7;6;7;7;8;7;8;9;:;:;;;<;;;<;:;8;6;0;*;!;; ::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::;;;;#;*;0;3;7;9;:;;;:;;;:;9;9;8;8;7;7;7;7;7;7;7;8;8;9;:;:;;;;;;;;;:;6;3;-;';;;::::::::::::::;;:::::;:::::::::::::::::::::::::::;C;C::::::;:; ;;;%;,;1;5;8;:;:;;;:;:;:;9;8;8;8;7;7;7;6;8;7;8;8;9;9;;;:;<;:;;;8;5;1;+;";; :;:::;;::::::::::::::::::::;::::;:::::::::::::::::::::::::::;; ;;!;(;.;3;7;9;:;:;;;:;:;9;9;8;7;7;7;7;7;7;7;8;8;9;:;:;;;;;:;:;7;;/;(; ;;::::::::::::::::::::;:::;;;;;;::::::;:;:::::::;C::;:::::::::::;;;;$;,;1;5;8;9;;;:;;;9;:;9;8;7;7;8;6;7;7;7;8;9;9;9;:;;;;;:;9;6;3;.;&;;;:::::::::::::::::::;::;;; ; ; ; ; ; ;;;;::::::::::::::::::::::::::::; ;; ;);.;;7;9;:;:;;;:;9;9;8;8;7;7;7;7;7;7;8;8;9;:;:;:;;;:;8;6;2;,;%;;;:::::::::::::::::::::;; ;;;;;;;;;; ; ; ;;;;::::::::::::::::;;micropolis-activity/cities/senri.cty0000664000076400007640000006476010724145723020171 0ustar simcitysimcity=??@??>>ABCCAA?;754111//-,(&%$##!!!!  ?A,    ''&&&%%%%%%$$$$"!!!!  '$ PPPPPPPPPONMKKJIHFEDCBBA@?===<;;;;;:::::::::9999888765432000/.-----,+++*)('&%#! PK?:8.( !#%%%%&&$"  &dhhhhhhhhhhhhbbbbbbbbbbbb]]]]]]]]]]]][[[[[[[[[[[[WWWWWWWWWWWWPPPPPPPPPPPPLLLLLLLLLLLhb][WPL'x qPTM88#88$88$0B8B8$88"8$88"8$88#88#88$88#88#88"888 88%88"88"80B88B8$8%8%88$888888888 8$8%8%8%88888#888888%80B8%8B8888%888#88888 88%888#888"8888"8B8%8B88#888 88%8%888%8!88%8!8888 888B88B88%8%888%8%8 88#888%888%88888#888"88!8$80B0B88%8%8!88 8$88$88%888$888!88888%88%88#888#888%8"88"88!0B0B88%8%88$88!88888!8888!88888%88 88%8!8888#88#88%8%8"8$888#88#0B0B8$8%8%88$888"88"8888888$88$8888$8%8%888%88%8%88%8%8%8888!88%8%80B8$0B8"8$8888%8!88"88 88888$888888!88%8%8%88888%8!88%8!88%8888%8!0B88B88#8%8%88"888888#88!88!8$8%888"888$88%8%888 888888880B80B888888#888888888 888$88#8%8%8%8!8$88#8%8 8$88B88B8888#88$88"8$88$888888%8%888%88!8$88"88%88"0B8 8B8$8888%888888#888 8$8%8 888888"8888#8%8%888#888%88B0B88!8$888!888!88!888%888%888%8%8!88%8!88%8!0B0B8888 8888"88"8888%8%8%88%8%8!88%8888880B0B888%88"8888#88#88#88%888"88!888888888%8%88"880B0B8!888888#888888%8%8%888%8%8"8888888888#888!0B0B88$8888 8$888%888888#888"8$8%8!88!888B8B8%888 8$88#88#88#8%8 8888 88   888%8"8888"0B0B8%8 88!888888%8%8 8$8  8888"88888"888B8B8 8888"88!8$888%88$88888%8#8%8%0B88B88888#888!88%888 888880B8 8B88!88 8888%8!88"8B8B88!88#8888$88%88B0B88"88%888%888" 0B8B888$8888$88"88%8%88%8%8#88"@@88%88#888888888888%8%8%8@@88888!8$88%888"8$88!8888%8%8%8  @@88#88#888!88%8#8%8%8%8#88 88%8%8%8           @ 0B 88888%8"88%888%88$8%8%8%8!     0B0B        88"8888!88!88888 0B8B    88%8#888!88%88$8E8C0C0C8D8B0B000880008008888 8$88$88%8%8#88"88%8!88"8$8%8B88F8C8C8C0C0C8C8C8C8C0L8C0L8C88C8C8C8C0C8C0C8C0C8D00088 88%8%8%8%8%8%8#8%8%8%8"8888"8$88$8%88B88#88$888!0B0B080F0C0D000 88%8%8%8%88%8%8%8%8%88$8%8!888888#8%8!8B888 88 88#88B0B00F0C8D0088"888%888%8%888 88%8%8"88!88%8%80B88!88%8!8B00088#0F8D8088%8#888%88%8%8 88"8888888%888B88"88880B00B88#88880F8D00 88888"8$88#88#88%8%8%8%8 8888 80B8888!8$88B08B88#88888$80F8D08888888888888 8$88B88!0B00B888!88!8F0D8088 8$88B88%80B08B88"888"0F0D008888B88"880000B88888"8F0D880   880B888880B0B88888F8C0D80880 88"0B88%88B8B8$888!88"8F0C8C8C8D800  88%8"0B8$8800B8B88!8888"8F8C0D080 88%8"8$88J0C0C0C8C8C0C8C8C0C8C0C8C00L8C0H8888!8$88#88888#88#88F8C8D008   88888!0B00B8B88"88"8888!88%8%8%8%8!8F8C0D0080    88#80B88"80B0B8888888#88%888880J0C0C0D8000            888 0B8800B8B888!8888%8880B8F0C8C8D808880008880000080080B88"00B0B88888!8888!888B8F8C0C8I0C8C8C8C8C0C8C0C0C0C0C8C0C8C8C0I8C88"0E0G8880B0B88%8#88#88 88#88!0B0B0B888B80B8B88%88%8!88%8%80B0B8B8B88"08B8B88 888$8%8%80B0B8$888"8B0B8808B8B8$888 88%8%8!0B8$88B88 8888"0B88"0E8G88!00B8B8$88 8$88"8$888%88%88$0B88 0B88%8%8"0B880B8808B8B88$888888 88%888!8$80B0B88%8%80B0B88#88#888B8B88#8%8!8888888 0B8$80B888%80B8$88"0E0G88%8%8%88%88"08J0C0H888%888!8B0B88 0B88#8%8%88B888%888880B8B8888"8$888%88E8G0B88!0B888%8%888$80E0G8$88#888!00B0B8$88!8888 888B0B880E8G8!888 88!8B88%88808B0B88888!8$888#88B8$88B80B8%888#88%8E8G8$88#88%880B8B8888 88%8!8B88 M8$8%8B8%8!88%880B8$8%8%8888 00B0F8D8$888 8880B8B888B888$888!0E0G88888"88F8D8B88 0E0G8$88$8B0B88%8880B88000B0B88"0B8 88!8B8$80B88!0E0K8D88"88$8888B8"0B8$88"8$888%8"8$88B0B8$8%8!0B0B88F8D888#888!88 00B88B88888!8888 0B8$88B8888B8$80E8G880F0C8D88%888E8C0C8C0C8C8C80L8C8L0C8C0C0C8C0C0C8C0C0C8D0B88 0B),/8B88!8B8$8%8!8$8F0C0D8!0E0C0C0G8%8"80B88B0F0C0C8C0C8C0D88"8BM*-00B880E8G88%8%8#8%8%80F0I8C0C0G88%808B8%8B80F0C0C0C8C0D8B8B+.188B88 0B88%8%8%8%88%8!0B888!88B88B8 880F8C0C0C0D8B0B8 0E0G88"0E8G8%88%8%8!888B8$88#8808B0BWps88"MPS8F8C0C0D8B),/0B0B880B8888%880B888%88%80B88Bnqt88%8888%8#8NQTVY\8J8C0H*-00B8$80B88"8E8G888%8%8!8$88E8G88%8%88B80Boru88%8%88 88%8!ORUWZ]0B8F8C0D+.10F0D88!88#8%8!8B880B88%8%888%0B88%800B8Bbbb88%8!888X[^M0B8VY\88%8%88#0E8G0E0G8"88%8%8!80E0G888 08B0Bb8$8%8%8VY\0E0G8F0D8WZ]8$88#8%8880B8B8888%8%8#88B88 00B0B888WZ]0B0F8D8X[^88%8%8!0B0E0G8880B00B0B88"X[^0BVY\MPS8F0D8$88MPS8880E8G0B88"0E8G8$800B8B88#88#888%80E0GWZ]NQT8F0D8 NQT8B0E0G8#88880B8$8%8!00B8B88%888%8!8888X[^ORU0F8D8ORU0E8G0B88888!88B888%8#88"80B0B88888Mz}0F0D8),/80E8G8$88E8G880E0G8$888%8800B8$0F0D88!%(+8"8E8C0G{~88"8(0F0D8*-00E8C8G888 0B0B88!88 08F0D8!0B88"&),8E8G|888*8)0FN88+.18E8C0G88 8$88E0G8#88"0B888B88B88'*-M8$888 8)8(;K%(+80C0C0C0C0G88!88"88 0B88%8%888#88$80B8$8880B8 8B8E0G88%88*8)8)&),0B88"88888E8G88%888%8!88%0B8"88%808B8B0B88 8);K;K'*-0B8888 0B88%88!888#88%80B88$88%88!80B0Bw{8E0G88 8*8*;K%(+8B8$88$88E0G8%888"88%80F8D88#88888"08B8B8$80E0GVY\8!8(8(;K&),0B88"80088 8B888 8888 8B8888800B8$0B88"8$88"88!0E8G8WZ]hkn8*8+8('*-0B8000888808E0G0F0D88!888B88B888"88880E0GX[^ilo88888888888888C8D8B8B888"88"888B8B88#88E8GVY\jmp8888ɪɭ%(+8B8$88B8E8G8B8!88888"88B8B88#88888#88E8GMPSWZ]88E8C8I8C8D8888ɨݫɮ&),8B8888"88#88F8C8H88#88$888"8F8D8$8888B8#8B888 88%8 8E8GNQTX[^8EN8G8B888ɩɬɯ'*-8B8"88888!8B88%8%888 8888B88 888B88B88!8E8GORU888E8G88888"8B88$8%888E8K8D88%8%8 88"88B8"8$888B8B8$88"88%8#88B8E8G888B0F0C0D #8B88!8E8G8$8F8C8D8 8888"8F8D8"8$8%8 8$88"88B8B888%8"888E8G8E8G888B0F0C0C8D!$8B8B88%88F8C8D88%8"88"8B888#88 88%888B8B888B8E8G888B8F8C8C8CN8I8C8K8C8I8C8C8C8D8C8G88%8 8$8F8C8D88888F8D88%888 88B88B88#88E8G888E8G888 8B8B8B8F8C8D88"88 88!8F8C8C8D8888!8B8888"88B88B88%8%888"8E8G8E8C8G8888  8B8B8B8B8888%8#88F8C8C8D8!888888#88B8888B8B88%8!8M8E8C8G88888!8BMM8B8$8888!8F8C8C8C8D88888B8$88"88B8B880J8C8C8C8G8$8888%888%8"8B8E8G8B8B88"8$8%8!8$88#888#88#8888%8%8F8C8C8D88888w{88B8B888E8C8C8C8CN0G88888888B8B8B8B8888%8888888888!888F8C8K8D8888888E8C8CN8C88L8C8L8C8C8C8G88888888!8B8$88B8E8G8B8$8888888#888 88 8F8C8C8C8D8888888B88B8888888 888F8D88 8E8G8B8B88!8$888!88%8%88F8C8C8G888888888888"88"8$88B8B8B8B8888!88"88%8%8!MM88%8"8$88888!8B8B8$8B88B88 888888%888"8$88B8B88%8#88%888!88%8"8B8E8C8G88B88B88 88!88%88"88#88%88B8B88888 88#8%8%88B8B888B88B888%8"88%8888888%8B8B8!88 88%8%8!8F8C8D8B8B88B8!88#8888$88!8B8B88#8888%88F8C8D8B8B8B8888 88!8$888#88B8B88%8%88$888!8F8C8C8C8H8B8F8D88%8#88 88 Wps8B8B88%8%8!88!888J8C8C8D8B8B8"8$8888$888"nqt8B8B88%8888B8F8C8C8C8H8F8D8$888 8$88$888#888oru8E8G8B88%8%8 888#88$88"8B8B8F8D8$88$888%88$88!88%8#888!88%8!88B88E8G8%8%8!88%8%8!8$888%88B8F8D8#88"8$88B88!88 88%8!88%8%8"88%8!88888B88B8%8%88888888%888!8B88B8%8%8%8"888B8%88#888%8%8#88%8%8%8+/37888$88"8B8B88 888%888$8F8D8B8%8%888B88888%888888,0˻88888%88B8B88"88"8$888 88 8B8B8%8!8B88!-15988!8$88#88$88%8%8!8B8B88"8$88#88%88888!8B8B888B88.26:8888 888888B8B888888888 888B8B88 8Bmicropolis-activity/cities/happisle.cty0000664000076400007640000006476010724145723020656 0ustar simcitysimcity'$##  {zl`^WVFDABMN9(#~|yvqpopqu{~~|xtsrollkhfdca_\[[WUSRPNLLJJIIIHHHGGFEDCCCA?=:99976666544442222221110000000y~dNG920.-,,*&  }ywuttvvy~}ueXUMGHFB9.)'#$! !!!!!!!!!!!!"###########$%&&&&'()*,,,,,,,,++*)(''&&&&%%$$$$$$$$$$$$$$$%'*-/000000111111111111111122222222222222223468<<<!#)*$$0128<=>>s6QNEAf6653A0*37(! LLLLMMMMMMMMNOOOPQQQQQQQQQQQQQQPONMLLLLLMMMMMMLKKKKKLLLMNOQSUUUUVVWWWWWVVVVVVVVVVVWWXYYYYYYYYYYZ[\]^^^^^^^^^^^]\\\[ZYXWVMQOMNWVY^YLLLIIJOZSOLLIHDC?>>DB;:"00000:9;;H]r >!Ll!In \Z \\ \\ \\UDRDQ"DG@@0)b@bCbF0*pbADbG0b7b:b=0)0)PbBbEbH000Bb8;b>0+0)0*0)0+0(;IP0(0)0*0(0*0+0Bb9baA00aa0+aa0aDaGaJ0ccc0(;J;J0)0*0+0+0)0*0+;I;I;I0*0);J0(0+0+;H0(0+0(0+0*0);J;J0(0+0(0)0+0(0+0bbb00b b#aaA0000+;I0*0);J0*0+;I0)0*0)0+0)0*0*0+0(;J0(;J0+0*;H0)0+0*0(0(0(0*0*0(0+0)0*0)0(0)0b bb00aaa*-a000Baaa0(aaaaFaIaL0aaA0Ba)a,a/0+b]b`bc0aaaaaaaaaaaa00000000(0)0aaa0bbbbbckkb0k~b0```0aaAa_abaeaMaPaS0+;H;H;HaaapPPPPPPPp0+0*bTbWbZ0+bbbbP0+b&)b,0abSVbY;I;I;I0(0+0*b9bA0B000  0$0000J00C0C0CN0C0C0C0C0C0K0H0B 0B0*0BTps0B 00(0B0E0G0BA0BM0B0*0B0B00%0%0%0%0"0E0C0C0C0L0CN0C00$00%0%0!0iloA0B0000E0C0C0C0D0B0J0C0C0CN8x"%(0B0BEHK0F0C0K0HDGJ0+M0B000E0K0C0C0C0H0J0H0B 0B0+A0BMFILDGJ0BEHK0*0B0F0C0D0000B0J0H0B 0B0(=@C0J0C0C00CA0H0B0B0B0*0BA0E0GDGJ0B3H0*0B3H0(0(0B0*+.10B0F0D0J0C0C0C0D000000B0*0)0)0*0B00B0(0BA0B0*0(0B0B0B0(0)0B0F0I0C0C0CN0C0C0H0B0+0EN0C0C0H=@C0B0+FIL0B3H0(0B0)0)0B 0B0)0*A0+0J0C0C0C0CN0K0C0C0K0CN0C0H0+0)=@C0B0B0B0B0)3H0B0F0C0D3H0F0C0I0C00CA0C0C0IN0K0C0C0C0C0C0C0CN0I0G M0BBB??<;9?@@?=<<<<:::873110&+:9986663/4632.zzyyyyyxuuuuutsrrqqqqpooooonkpppottuuvwwxxyyyyyyyyyyyyyyxxxxxxxxxxxxwwwwwwwvuuutssrpoonnmlkkjjiikkjlmonnqrrstwxwwvvwwvvvuptyxwsjrvumibVLF*.CUlx||{zzxws{yxuqkgrqmjcermcYO@1  %(9MIZklcld\JBVY[flhaWOGY]\\XUTTTTRQNKIIIIGGEDB;65BHHGGGGEEBHGB@=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%!$$$$$$$$$$$$$##########$'4EB@B'D$ ((&23..,**.////..*(((((+1.*****(&&$$$#! $$$$$%%.......,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''''''''''''''''''''''''&&&&##&(((((((('''''(*********)((('''''''''''''''''''''******+,,,,,,,,,,~~~~~~~~~yyyyyyyyyyyyyiaXIAXKiDyvpmcSJ92XWLM`Zquu~{}qj\zB(%&R'& d _# $ Z% o&C mt_H ާutI % sty'U K]d q' =H00#00"0$00%0%0%0%0"00#0000%0%000000 000$00$00$000 00 00 00"00%0"00%00000" 00%0 00"00000$000   0$0%0!  00#000%0%0#0 00#000%0%0 00%0%0%0%0!00"  00"0%0%00%0%0000"00%0!00%0%0%00%000#00#000 00%0#0000!000000%0%0#000"00"00%0%000!00%0%0%0! 00%0%0 00%0%0#0%0%00"000%0%0%0!00%0"00%0#00#0%0%0%0!0000%0%0%0#00#0 00!00%0%0%0%0%0%000%0%000%0%0#00%0%0%0%0%0%0%000000%0%0  00%0"00%0%0%0%0%0%000%0%00"00%000%0%0%0%0%0%0 00#000"00    0$0%0%0%0"0$0%0%0%0%0%0%0%0!0$000%0%0%000%000%0%0000 00%0!00  0$0%0%0%0%0%0#000%0%0%00%0%0%00#0%0 00%0%0%0!00%0%0!0000%0 00#0%0%0%0%0%0%0%0%00%0%0%000000!00%0%000%0%000!00%0 0$0 000%0%000%0%0%0%0%0%0%0%0%0%0000%0%0"0$0%0%0%0!00#0%0%0000 00!00%000%0%0%00%0%0%0%0%0%0000%0%000%0%0%0000%0%0!00%0%0"000$0%0%0%0!00%0%0%0%0%0%00!000%00%0%0%0%0 00%0%0#00"00%0%000%0%0%0%0#0%0%0%0%0%0%0%0%000%0%0%0%0!00%0%00%0"000%0%0%0%00%0%0%0%0%0%0%0!00%0%0%0%0%000%0 000%0%000 00%0%0%00%0%000%0%0%0%0%0%000 0%0!0$0%0%0%0 00%0%00#00%0%0%0%0%0%0%00#000%000%0%0 0000%0000%0%0%0%0%0%0%0%00#000000 00 00%0%0%0%0%0%0%0%0%0!0$00"00%0%0%0%0%0%0%0%0%000%000#00000%0%0%0%0%0    0000%0%000%0%0%0%0!0000#00#0%0%0%0%000%0%0%00 00%0%0%0%0%0%0%0%000#000%0! 00%0%00%0%0%0%0 0000  00%000%0%0 0000     00"00 00%0     000!      000%0   0 000 00"   00"00 0$0 00 400#000   00%0%0  00%0%0%0 000%0%00 0    00 4  0Bbbb 0$0     8Rkb00   0*;J;H0*8Rkbb4  a8U8S8S8S8[0C0Dp qpq0(  aa8Rbbb0Bpp pp0*;K0 ;Jaaa8Rbb0E0I0Hbbb 00"qqp0*0(0(0E8Sx^8S8Xkkb0J0K0K0Cbb 00%0"0E0CpN0C0D0(0*8Rb%b(b+0BaaapMbbbktkxb 000Bbbb0B0)0*;Icccb&)b,pMaa0Bbb0Bbbb 0Bbb0B0*0+0*0+0)0);I0(0(0)0+0)cc b'b*b-0Baaa0Bktkxb0Bkb0BbbbpMqqqppq0*0*qqq;I0*0)aaa0E0C0C0C0C0Cc-c 0C0C0C0Hbbb0J0C0C40Bkbb 00#0F0C0C0C0Hqqqpppqpaaa0*aa0*0Bqqqb%b(b+0+0B;J0+0+0k|b0Bbbb0B 00%0%0%00%0%0Bqqqppqpqpaab%b(b+0E0D0*0aaa00EAAA0C0C0Hqqb&)b,0C0L0C00C0HkbbpMbb0B 000000%0F0I0C0C0C8Yx^88880Daaab&)b,0J8\8S0CpN8Y8S0C0K0Dc cccpMqqqb'b*b-0)0BbbbpMbbb8Rkkb0B 00000000p00000J0I0I0Cb'b*b-0J8Xbbb8Rbbb0Bc cc0J0Dp0*0+0B0)0*0Bbb0Bbc8Z0I0D4  00Bbbb0JpN00K0H00000p0000k|bpMk}b0Bc ccc0J0Hp0);K00)0*0Bkkb0Bbbc8Z8\8\0D 00Bbc0Baaa0J0C0K0K0L0ccc0J0Hkbb0Bkbb0Bcccc0J0KpN00I8800K0I0C0C0K0CpN8S8\8\8\0H 00BbbcpMaa0Baaa00cc 8Z0L0C8Sx^0Hbbb8Z8Taaa0Ba;a>aA0B;Ia2a5a80Bpp`aaa0F0K0K0H40$00"00000BaaapMaa0J0ccc x]pMa)a,a/0Bbc8Z8XaapMabbc0B0Bcc 00Ha a 8ailao0)aa88S08x0C0I0K0C0C0Cb'b*b-8R0@0CpN0C0C0H0Bccc 08raa a 8ajamap0)aaa0000p00000000000@0Bbbbb0B 0F0C0I0D08z8i8cx88Tp0;Kpp08x880C0C0C0CpN08Y8X00F0Hb0B   0$0%0J0H00J0Ha)a,a/8ahakan0)0(ppppqq0Bahakanahakan880 0B˔˜0B    00%0J0K00L0Ha*-a0xailao0(0)0+0*0*00pppMailaoailaoxahakan;K 0B˘ˠ0B  00%0B008Z8xa+a.a18ajamappaaa0(0qqq8ajamapajamap8ailao0*0)0FpN0C0I0C0G 00B08U8[8{8s0I0C88888Taa0) 00008b%b(b+aaa8ajamap0)0*0*0)bbb0B  0$0%8V08xa)a,a/0Bccc0B08aaa0( 00B00Bb&)b,aa888aaa0);H bb0B 0$00$0%0!00a*-a0pMcc 0B0)888p0;Iqqq00B00Bb'b*b-aaa888aa0) kkb0B 00 0C0C0C0D08a+a.a10Bccc xmaDaGaJ8aaa;H0(qq00B00J0pN0C0C0C0C8[8\8aaa0CpN0C0I0G ppp0B08x8S8S0L0C8cxn8haEHaKxaa00+0*0+0qqq00B000ahakanaDaGaJ8RaDaGaJ0Bbbb0B   ``0B0$00a2a5a80Ba)a,a/8RaFaIaL8aaapahakan0 ccc00L0I0H0ailaoaEHaKx]aEHaK0Bbb0B 00"  0$0```0B000a36a90Ba*-a08R0+0088x80DailaopMcc 00L0L0H0ajamapaFaIaL8RaFaIaL0Bkkb0B 00%0#00"0$000!ppp0B00Ba4a7a:8a+a.a18;H0)0(0(8p08Rajamap0Bccc 00L0L0H00p00088aDaGaJ0J0C0C0C0G000%000%00%0%0"pp0B000F0C0CpN880C0C888888p8V8YpN0C0K0IpN0I00K0K0K0I0Dbbb"088aEHaK0B00!0$00#000%0%000ppp0B0%000aaa0BaaaxaaapMcccpMbbb"0BppMpqqp0J0Hb b#00L0HaFaIaL0B 00"00%00000CpN0C0H0%0 0aapMaa8aa0Bcc 0Bb b#0J0I0H0qq0J0Hbb!b$00J0Hqqq0B0000ppp0B0!0aaa0Baaa8aaa0Bccc 0Bbb!b$0F0K0L0qpq0J0KpN0C0C00L0Hqq0B00!00#0pp0B000000BaDaGaJ8aDaGaJ0B0000000000000ppMpp00J0Hqpp0B 0000%0%0!ppp0B00aEHaK8aEHaK0Bbbb0B00Bbbb0B00B000000000J0L0I0IpN0CAA_A0C0G 00%00%0"aaa0B008baFaIaL8aFaIaLpMbb0B00BbcpMbbbbbbbbb00J0L0L0Hp 00!00aa0B0!00Baaa8a;a>aA0Bbbb0B00Bbbc8Rbbk~bkb00J0K0K0Hp 00aaa0B000Baa8a=;=??>>:86541/6533211///,(! $'&'$",-53220.-)%$  $$$$9########$0/-((56:C"(****>QQQOQYXRRR`a\\\\\[[[XXXXXXXXWWWVUUTMMMMQUVVXXl|uujMA: """"""###"!$%&&&&&&&&&&&&&((((((()))))))))))))))))'''&}uzy!3Dm!@ =@0.@ =@0.@=@HnܨHn䨡Hn n /(v nNXJ@f n h PC nHn?P00%0!00%0%000%0%0%0%0%0%0%0%0%000000000%00$000%000 bb.b0E0C0GpO 0$0%0%000%0%0%0%00%0%000%000000 ?0Bbjb0Bbbb   00%000%0%0%0!00000 000!0$0 0B˔˜bbpMk|b?>   0Bahakan00%0%0!00%0%000%0%0#000! 0B˘ˠbb0Bkbb0 @ 8ailao00%0%000%000%0%0%000 0F0CpN0I0I0K0I0CpN0C0C0C00I0H   0$08ajamap 00%0%0!0000%0%0%00(;K0(0+p0J0G0$0B0*p;K;I0)00J0Gppppp0%0%0Bb%b(b+bbb 0000%0"000"0$000%00%0%00+0*0*0+p0B0$0(0B0)ccc0000p000p0%00Bb&)b,kb000$0%00%0"0$0%0! 0$0%0!000  0(0(0+0*p0B0%bbbcc 00I0K0x^8T;J0ppppMb'b*b-kbb 0$000!0000#0%0%00000(b%b(b+0J0Cbbccc 00Bahakan8Z0C00C0I0C0K0C0C0C0C880D 0$00"00!0000!00%0%0%0! ;Jb&)b,x]pkkb00p00ailao0B;H00(0B0*0)0*0+;J0+0B0B 00%0!00#0%00%0"00#00 0000%0%0   ;Jb'b*b-x]p.aa00EpN00Gajamap0B0*0;H0B;I0+0*0+0+0(0B@ 0$0%0%000%0!0000%0000 0)8p8R0aa00Hb%b(b+ahakan0B0)00(0B;H0)0(0+b[b^ba@ 00%0%0 000000"00"00"  0+8x8W0aaa00Bb&)b,.lao000bbb;I0)0*b\_-@00%0 00 00%00000%0#00$00%00)8ahakan.b(b+00b'b*b-ajamap8R0(0bb0)ppb]b`bc@ 00!000 00%0!0$0%0%0%000#0 bbbb;H8ailaob&)b,08\8S0C0C0CpN8S8X0*0kkbpp0)0+0+@ 00"0000#0%00%0#000%0%0!000 bbb;J0Bajamapb'b*b-00Bahakanahakan000p000p;H0+@ 00%0#000"00%0!00%0%000%0 ppbbbb;J0B0p00p000ailaoailao0Bbb.0+pMpbbb@00000000%0 00%0 pbbbb0+0Bahakan0ahakan0Bajamapajamap0Bbc0)8Z0bb@00"00!0$0000%0 p0E0C0C_80Hailao0ailao0Bahakanahakan0Bbbc0)80kkb@00%0#0%0!00  00"p0B 0(0Baj-ap0ajamap0Bailaoailao88S8Sx^8S0H0;Jp0+@00%0%000!  00%0p0B0+0B0+0+;K0p000ajamapaj,ap80(b%b(b+0B00(p0+@000"00%0%0!000" 00%0p0B0E0C0H0(0+0)0ahakan00p000000b&)b,000(p@0!00   00%0%000"0$00%0p@0B0+0B0(0(;K0ailao0F0x^8T00(0(8R0b'b*b-0B00+p@  000000%00 p@qqq;K0B0+0)0*0ajamapahakan0B00+0(0F0ccc0B00)p@0$00" 00%00$0%0! 00P@qq;K0B0)0)0*0ahakanailaopMpb.b1b4pcc 000)p @ 00%000 00%0P@q.qppMppppailaoajamap0B0,2b5pc 000p000B 00%0!0$00%0P@  0)0B0)0);H0ajamapp00+0J0b0b3b6000p0bbb 0(00B000000P0B8R0)0*;K00p0p00000b%b(b+00(ppk}b0)0(00B0)  p 0Baa,0C0CAA0C8[8S0I0C0C0pN0Cx^8S08k0I0b&)b,00+0*0(kbba2a5a80Bbbb 00"00#0  p0Baab[b^ba0+0B0)0+0ahakan0Bpb'b*b-00)bbb0a36a9pMbbbbb 00%0%0#00$000%0  0E8S8S0CpN0C0Gaaab\_bb0B0(0(0ailao0000000bb0a4a7a:0Bkkbk|<    00%0%0%0!00%000!    0Bb[b^baaDaGaJ8ppb]b`bc0B0+;I0ajamap0F0C00CpN0C0kkbpPpbbb0B0%0"pkbb    0$0%0%0%0%000!00%000#00Bb\_bbaEHaK8x0Db%b(b+ 0B/000B00bb0B0%0%p00B00#0%0%0%00%0%000%0"00%0!00%0%0%0Bb]b`bcaF-aL0Bp0Bb&)b,88000B00kkb0J0C8tp0E0G0#00"00#00%0%0%0%0!000!00000$000%0%0%0F0Dcc.bbbppMb'b*b-8000B000000B0!8vx~0H0%0%0%0#00000%0%00000#000!00!0$0%0!00%0%00%0Bcc bcp0F0C0C0C0I0C0CA0C0H0000000bbb0000000B0p0B0%0%0%0%0!00000 0000%0#00#000000 00Bccc bbcpppqq0B0B0;K0c.cpMk|b0J0G;H;K0 00Bp0B0%0%000$0%0!0$00$0%000"00000J0Dc ccc0Bppp0B0B00,c 0BkbbpMp;J0+000Bp0B00 0$0%0%000#0%0!00"00!00000J0G-cc0JpN0Cqqp0B 0B00ccc 0F0I0C00Hp0)0*00+00Bp0B00%0%0%00%0%0%0000#00%0%0#0%0%000%000Bc ccc0Bpp0E0G 0E0G0)0p0ahakan0*0B0*00Bbbb00*0*8Rqqp0B00%0%0%0%0%0%0%0!00%0%0000%0%0000%00"00Bpcccc0J0DppppMppPppMbbbbpN8Y8S0ailao0C0H0(00k|bpppp8Rpq0B0#000%00%0%0%0%00$000!00%0!00%00$000JpN0I0C0C0C0L0L0I0I0I0H 0B/jb0(0B;J0ajamap0+0Bpppkbb00)0*p00Bqqq0B0%0!00#0%0!00%0%00$0%0%00%0%0#0000 0$000"0000 00%0FpN0H00%0F0K0K0K0L0L0IA0I0I0H˔˜bb0000ahakan0+0FpN0D000000+0*p0@-pp0B0000%00%0#0%0000%0%0%0%00%0%00!00 0000!0$0000 p0B0bbb0F0K0KA0K0K0H˘ˠbb0*8R0(0ailao0(;Hp0F00C0I0C0C0C0CpN0C00Hpp0B00 00%0!0$00%0%0%0%0!000000#000%000 ppMppppk}b 0F0C0C0CpN0C880ajamap;H;Ip;I00!0B0000p000Bppp0B00000%0%0%0%0%000%0 00%00J0Dkbbp0B0)0000p0p0000000bbbppMppp0B0000000 00"00 00"00%0!0C0C0C0C0K0K0C0C0CpN0C0C 00"pp0B0(0(0+0+0p0p0#00 0Bk}b0Bpp0B0$00"0000000%0#0aaaqqpqqqp 00%0"ppMbbbppbbbppppMpppkbb8U0Gppp0B00"00%00$00#000%00"00!00%0!aaqpqp 0$00#000%0"0Bbc00%k}b0*00"0J0C0C0C0C0C8S8W 0$0000$0000%0!0000 000000%0"000aaaqqqpqp0$0%0%0000Bbbcppkbb8u0C0C0G 00 0$0%0 0$000#0%0!00!0000"00%000%0%0#0 0$0%0%0%0!0F0C0C0C0C0C0C0C8s8w00!00%00%0%00%0"000$00#000#00#00%000%0!00%0%0%0! 0$0%0%0%0%0000 00#00%0%0"00%0%0!0000!0$00$00%0%0!00%0%00%000%000%0%0 00%0%0%0 00%0%000%0"00%0%0#0%0!0000 0$000%000%000!00%0!00%0%0  00%0%00 0$00$00" 0$0%0%00000%00000000%0%0 000 0000%0%0"00%0! 0$0%0000!0000$0 00%00 00 000!0$000%0%0#00$0%0%00$0%0 00"0$00"000#0%0  00%00$00"00#00"00 00%000%0%00"0$000%0 00!0$00%000%00000 00%0%00#00#000"000%0"0$00%0%00%0#000%000000$0%0!00%0 000$00000%000%0! 00%0%0%0%0%0%0!0000#00!000000 00%0%00"00%0!00%000!0$0%0 00!00%0"00#00"000%0%00%0%0#0000000"00%0%000000%0%000%00$0%0!00%0000000%0 00000%0!0000!00"0$0%00%0!000 00%0%0"0$00%0%0 00%0000#00$00"0$0%0!00%0%0#000%000!0000%0%0%00000 00%000 0$0%0000%000%0%0%0!00%000%0#0 0$00%0%0%0%0! 00!00!00 00%0!0000000%0!00%0!0000000 00"00%00$0%00%0#00000!0000%0 0$0 00%0"0000#000 00%0 0$00#00"00!00%0#0%0%000%0!   00!000"00%0 00!0$0%0%0%0%00#00000%0%0%0%0000%0  00%0 00"00 00%0000%0%000!00%00 000%0%0!  00%0 00%0"00!00%000!000 00%0#00000%0%0%0   0000%0 00%0#00"00%0%00%0%0#000%0 00%00 00" 0$00#00%000%0%0%000%0%0000$0%0 00"00  00 0$00" 000000%000%0%0%000#0%0%000!0$000 00! 0$0%0%0 00%000"00%0%0!000%0%0%00#00"00%0#0%0!00! 00%0#0  00"00%0%0!00 00%0"00%0%0#000%00%0%0%000#0%0%0%0%000%0%0"  00%0%0   00%0#000%0%0%0"00000%0%0!0000%0%0 00%0%0%0%00 00%0%0    000%0%0 00%0%000%0%0%00$00"0$00$0%0%0 00%00000%00 00000$0000 0$000%0!00"00%0!00%0%0! 0$0%0000 00%0%0%00$00%0%0 000$000%0 00#0%0!00%000%0"0000%0%0 00!00%0%0%00! 00%00!0$00$000"00 00! 0$00%00%0%0"0000%0 00%0  00000%000"0000#0%000#00%00000#000 00000%000#00#000000   00#00"00%00000!0000!000%0!000 00%0%000 0$0 00%0%000"000  00%000%00%00#00"0$00!00 00%0%0!0$0%0!   000!00%0#000000%00000$0%0%0%0#00 00#00000%0"00%0%0"00"0$00#000"00%0! 00"00 0$0%0%0%00 000 0000"00%0%0"00%0000%0!00%0%0"00%0" 0000%0%0 00%000%0%0" 0$000000#00%0%000#0%0%000"0$00"0$00%0%0!0$000"00"00%0%0!00%0%000!00#0000%0!00%00  00#000%0#000%0#00000%000%00#00"00000$00%0%0%000%0%0!00%0#00000!0000 00%0 00#0%0%000%0%000  00%0%0%000%000%0000%0%00 00%0%0%0"00%0%0%000%00%00#0%0 0$0%0! 00 00%0%000%0%0  00000"000 00%0%00!0000%0%000%0%0%00"00%000!00%000%0%0%00"00!000%0"0000000%0%0 00%0%0%0%000%0%00%0000%00"00"00%000000%000" 0$00!0000%0!000%0%0%0!00000 000%0" 0000 0000 00000 000 00000000 00 micropolis-activity/cities/haight.cty0000664000076400007640000006476010724145723020315 0ustar simcitysimcityyytrppnnrnmmjgc_[ZSIBA75.+($   }pgXH;+%p[p*2EfN4ICN=,J8OH#4%LyzqiN,-+mqhruf16C$=+A%&3&DDDDCCCBBBBBBAA@@@@??>>>>===<<<<<:::::::999888888777644421000//-,*%"! ~wrnjc_[WQJB>:81W..6T):4<894';:6.+HHHHHHHHHHHHHHHHHHHHHHHHHHGGGGGGGGFFFECCCA>8,|nrzyz~wxy{qn~                              rkdbYUOLGEC@>  C &>]                                                   |zy{reemvz{vyyxunllumnoq   %"`PD %>0$B@0B0(0)0(0);J0$00#0;J0)0(0*0*;J0+0(0+00"0+;J0+;J;J0+0+0*0*0+;J0(0+0+;J0)0(0$00*0(0+0*;J0*0)0(0+0*0$00(0+0(;J0*0(0+0+0+;J0)0*;J0+0)0+;J00"0B0*0+0+0+0+0)0*0B0*0(;J0+0+0+;J;J0+0B0*0+;J;J0);J0(0)0*0*0B0(0(0$00#000000"0(0+0+0);J0(;J000+;J0+0+0$0;J0*0)00#00+0(0+0*;J00%00#00+0+0+0*0+;J0$0%0!0)0*0(0+0(0(0(0)0(0)0*0(0*;J0 0B0)0B0)0*0(;J0(0(0J0C0C0C0C0C0C0C0C0C0D0B0(0$0%000*0+;J0+00%0"0(0$00"0)0+00!;J;J0*0+00!0)0*0)00%0!0*0)0(0+0+0)00%0%0!0+0+;J;J0*0*00%0%0#00*0);J;J0*0+0);J0$00"0+0 0B0B;J0(0+0B0B0B0$0%0!0(;J0(0(0)0*000%0#0%0%0%0"0*00%0"0)0)0*000*0+0)0(000#00*00";J00%000(0)0(0*0$00%00%0%0!0)0(;J;J0*0$00)00%0;J0 M0(M~;J0+0*M~0B0B00%00+0*0)00#0;J0(000%0%0%00)00%0;J;J;J0(0)0+0)0(0+0);J00 0+000(00 0(000(0+0*00%00(00%0;J00"0(0+00%000%0!;J0*0B0)0*0)0)0)8b;J0(0(0+0*0BB0B0B0%00 0+0$00%0%0 0(0+0*;J00%00*00%00 ;J0+00";J;J0*;J0*0$0;J0(;J00 0)0);J0$0%0 0)0+0*000 ;J000%0000*0(;J00 0)000);J0*00#;J0B;J8b0B0B0B00)0)0)00%0%0!0*0+0(0(0+000)00%00*0*0*0+00;J0+;J0*0(00%00*0*0(0*0+00#0%0!0(0)0+0)0+0+0(0(0)0(00 0+0+;J0)00!0*0$0%0!0);J0)00%;J0Bm 0B0B0B0+0+0(;J0000;J0*0+0)00!0(00000(0(0+0(0);J0+0+0+0*000 0*0+0(;J0(00000+0(;J0*0*;J0*0*0*0)0)0+0(0*0)0(000(00%00#00)00!;J0B0(8b 0B0B8j8c0C0C0C0C888c8c8c8c0C0C0C0I0C0C88888c8i8c8c8c8c8c8c8c8c0C0I0C0C0C0C0C0C0C0I0C0C0C0C0C0C0C0I0C0C8c8c0C0C8c8c8c8i0C0C0C0C0I0C0C0C0C0C0C0LN0C888cn8c8l8cn0C0C0C0C0CN0C0L0CN0C0C0C0C0CN0C0H8b80#p0B0)8b0%0%0%0 0*0*0)0$00BMPS0*DGJ0B00BDGJ8bMPS0(0B0B8b0B0B0BMM8b00%0!0*0)0(;J00!8bNQTEHK0B 0BEHKMNQT0+8M ;JMM 0B0B0B;J0B;J8b;J00%0#00#000%8bORU0)FIL0B 0)0BFIL0BORU0)80B 0+0B0B 0B0B0)0*0(0B0*0)0*0+;J0B;>A;J0(0+0(80(00%0%0%0%0!0)00B0)0+0*DGJ8bDGJ0*;J;J0B"0)0+0(0*;J8b0+0)0*8),/0*0+0+0B;J0B0)0+0+;J;JDGJ80)0(0*;J0*0B0B0B0+0BA0B;J0BDGJ0(0+0*EHK8;J0*;J~0B0B0B0)0B=@C0)EHK0B0$00%0%0%0%0!0+00Bilo0(FIL8bFIL0) #M!$0+0*0(EHK0B0+EHK8b+.1A0B0(0(0(00"0(0*;J0(80)0)0)hkn80)0(0(0+;J;J0J0CN880C0C0C0CN0L88888s8s8s~0C0H0);J0*0B;J0)0*0)0)ORU0J88s8s8880C0G80BDGJ0*0BEHK;JA0(),/80(0*0+0)000*0+00Bhkn0(hkn0B0)0B%(+hkn"0BDGJ0+hkn0+0B0+0BDGJ;>A80)8M0(8bA8b),/0*0(0*0*0B0)8 0B0B*-00B00%00)0)0+;J0$08NQT0)8r&),M&),iloiloM0*NQT0)A 0F0C0DM+.18j8cN0C0CN8S8\0CN0C0C0CN0C0L8c8cn8c8cn8c8l8c8c8c8c8c8c8c8c8c8l888n8c8c8l8S8S^8S0CN0C0L0CN8c8c8c8c8cn0C0L8cn888i8cN0C0CN0C0L80C0C8cn880C0Cn8hA0B0);J0B0B8b;J0+0*00%0%00!0(8MPS0(80(p8b0)00%0%00)0+0+0(0)0)0*;J0*0$00#00F0C0D0)0+0+0)0+0E0C0G00 0+0*0*0+0B0(@@:966 Cip8BlMAnO;/< Please insert the original disk:WLVQSTUV V Vbbbbbbbdbgbjbbbbbbbbbbbbcccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaakbk|bbehbkbbbbk|bk|bcc bbbk|bbbbbbbk|bk|bbbbbk|bbbaaaaaaaaaakbbkbbbfbiblkkbkkbkbbkbbccc k|bkbbkkbkkbkkbkbbkbbkkbkkbkbbkkbaaaaaaaaaaaaaaa0Bbbb0Bccc0000000p00000bbbkbb0E0C0C0C0C0C0C p0C0C0I0C0C0CpN0C0C0C0C0C0C0C0C0I0CpN0C0CpN0C0I0C0C0C0C0C8x88880Gbb8V8Tcc bbbbbbbbbbbb0Bbb0Bbbb0B bbb0"0Bbbbbbbbbbbbb0Bbbbaaa-0B0$aaaaaaaaa80)kkb00ccc bbbbbbk|b0Bkkb0Bk|b0B k|b0%0Bbbbbbbk|b0Bbbaa.0B0aaaaaa8R00000bbbpkkbkkbkkbkbb0000Bkbb0B  pkbb0%0Bkkbkkbkkbkbb0Bkkb00#0aaa0E0G0aaaaaaaaa8V000 0bb0C0C0C0C0C0C0IpN0C0C0C0C0C0K0I00C0K0C0C0C0G c+c/c3c70bbb0Bbbbbbbccc0B0(0(0Baaa00"00%0%00Ba;a>aA0%0%00%0%0%aaa0bbbkkbpbbb0Bc+c/c3c7bbb0B0 c,0kc80bbpMk|bbbcc 0B0)0(0Baa0000"00%0!0BaaA0aFaIaL0ahakan0%aaaajamap0aaa0!ailao00Bb/2b50%0ailao0(ahakanahakanb%b(b+0cccbbb"pb b#0b&)b,aaaaaak|b0kbbaaa8RaDaGaJaaA0aFaIaL0ajamappppajamap00CpN0C0K0C0C00000000000%ailao0%ailaob&)b,0b&)b,aa0aDaGaJ0%aaaaaab]b`bcccc 0%0%0%0%0%000%0%0!aaAaaapaaa0Bahakan0( 0(ajapaaaajamapaFaIaL0%0%b'b*b-0bb!b$00%0%0%0%0%0%0%0!aa00%0%0%8Ra~0f?- HAb! HU%| HA! U%=# HA! U%Ă&! DABHU%;9q9t#p`U U U 0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0BdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMd0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0H0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0BdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMd0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0Bp0B0B0B0B0B0B0B0B0B0B0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0H0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0BdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMd0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0H0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0BdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMd0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0H0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0Bp0B0B0B0B0B0B0B0BdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMd0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0H0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0BdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMdMd0B0B0B0B0B0B0B0B0B0B0B0B8R0B0B0B0B0B0B0B0B0B0B0B0B0B0CN0C0K0IN0C0K0IN0C0K0IN0C0K0C0IN0K0C0I0C0K0C0IN0K0CN0I0K0CN0I0K0CN0I0K0CN0C0L0CN8S8\0CN0C0L0CN0C0K0IN0C0K0IN0C0K0IN0C0KN0IN0KN0IN0KN0IN0K0CN0I0K0CN0I0K0CN0I0K0CN0C0L0CN0C0H#'0B0B0B 0B0B0Bccc#c'0B0B0B 0B0B0B 0B0B0Bc ccc0B0B0B 0B0B0B#'0B0Bg $(Mg MfM gMg MfMcg $(Mg MfM gMg MfM gMg MfMc ccMg MfM gMg MfMg $(Mg 0B )0B 0B0B 0B 0B0B )0B 0B0B 0B 0B0B 0B 0B0Bc ccc0B 0B0B 0B 0B0B )0B 0B"&*0J0I0I0I0L0I0I0I0H0J0I0I0I0L0I0I0I0H"&*0J0I0I0I0L0I0I0I0H0J0I0I0I0L0I0I0I0H0J0I0I0I0L0I0I0I0Hcccc0J0I0I0I0L0I0I0I0H0J0I0I0I0L0I0I0I0H"&*0J0CN0C0H0E0IN0I0L0K0L0L0K0K0K0L0K0CN0I0C0K0K0L0K0K0K0L0K0K0C0IN0C0K0L0K0K0K0L0K0K0K0I0CN0C0L0K0K0K0L0K0K0K0LN0C0C0I0K0K0K0L0K0K0K0L0KN0C0IN0K0K0L0K0K0K0L0K0KN0I0CN0K0L0K0K0K0L0K0K0K0I0CN0C0H0B0J0HMMMM0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0Bf0B0J0H0J0H0*0J0HeMeMeMeMeMeMeMeMeMeMeMeMeMeMuMeMeMeMeMeMeMeM0B0J0H0J0H0)0J0H0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0J0I0I0I0H0J0H0J0H0*0J0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0K0K0K0H0J0H0J0H0+0J0H0B0B0B0Baaa0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0J0H0J0H0+0J0HeMeMeMeMauaMeMeMeMeMeMeMeMeMeMeMeMeMeMeMeMeMeMe0B0J0H0J0H;K0J0H0B0B0B0Baaa0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0J0H0J0L0C0L0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0H0J0H0J0H0(0J0H0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0J0H0J0H0+0J0HeMeMeMeMeMeMeMeMeMeMeMeMeMeMeMeMeMeMeMeMeMeMe0B0J0H0J0H;J0J0H0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0J0H0J0H0(0J0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0C0C0C0K0C0C0C0K0C0C0C0K0C0C0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0H0J0H0J0H;K0J0H0B0B0B0B0B0B0B0B0B0B0)0*0(;K;K0*0(0+0+;K0+0(;H0B0B0B0B0B0B0B0B0B0B0J0H0J0H0(0J0HeMeMeMeMeMeMeMeMeMe0B;J0*0)0)0+;K0*0)0BeMeMeMeMeMeMeMeMe0B0J0H0J0H0*0J0H0B0B0B0B0B0B0B0B0B0B0+0*0E0G0B0B0B0B0B0B0B0B0B0J0H0J0H0)0J0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0C0C0C0K0C0C0C0G@0CN0C0KN0C0C0K0C0C0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0H0J0H0J0H;K0J0H0B0B0B0B0B0B0B0B0+0(@0)0)0+0B0B0B0B0B0B0B0J0H0J0H0+0J0HeMeMeMeMeMeMeMe0B@;H0+0BeMeMeMuMeMe0B0J0H0J0H0)0J0H0B0B0B0B0B0B0B0B@;H0B0B0B0B0B0B0B0J0H0J0H0(0J0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0C0C0C0G@0J0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0H0J0H0J0L0I0L0H0B0B0B0B0B0B0B0)0)@;H0)0)0B0B0B0B0B0B0B0J0H0J0L0K0K0GeMeMeMeMeMeMe0B0(  0B0B0B0BeMeMeMeMeMe0B0J0H0J0H0B0B0B0B0B0B0B0C0C0C0HdMd0B0B0B0B0B0B0B0B0J0H0J0LAAAA0C0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0C0C0C0G0BM0B0B0J0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0H0J0H0B@0B0B0B0B0B0B  0Bd0J0CN0C0L0CN0C0H0B0B0B0B0B0B0B0J0H@@eMeMeMeMe0B  0)0(0B0B0B0B0BeMeMeMeMeMe0B0J0H@@0B0B0B0B@ 0(0+0+0+0J0CN0C0HdMd0B0B0B0B0B0B0B0B0J0H@@0C0C0K0C0C0C0K0C0C0C0K0C0C0C@@ 0E0C0C0C0HM0B0B0J0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0H0J0H@@0)0*;H;H0*;J0*@0);J0Bq0Bd0J0C0C0C0K0C0C0C0G0B0B0B0B0B0B0B0J0H0B@;H@ ;J0)0BdM0B0+0)0(0+0BeMuMeMeMeMe0B0J0H0B@@ 0)0*M0B;I0*0B0B0B0B0B0B0J0H0B@@0E0C0C0C0I0C0CN0L0CN0C0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0H0J0H0J0H@   0B0B0B ;J0B0B0B0B0B0B0J0H0J0H@ 0+0( 0BdMd0B ;J0BeMeMeMeMe0B0J0H0J0H@ 0*0B0B@0B0B0B0B0B0B0J0H0J0H0F0Cd0E0K0CN0I0KN0C0D@0F0C0C0C0L0CN0C0L0CN0C0L0CN0C0LN0C0I0H0J0H0J0H 0B0B0B@0B0B0B0B0*0J0H0J0H0J0H0+0( 0BdMd0B@0BeMeMeM0)0J0H0J0H0J0H 0B0B@0B0B0B@@0J0H0B@0C0C0L0CN0C0L0C0C@0C0C0L0CN0C0L0CN0C0H@@0J0H@@  0B0B@ 0*0B0B0B@@0J0H@@ 0*0)0+dMd0B@0+0BeMeM@@0B@@@ 0(0*0*0)0(0B@ 0+0B0B0B@@0B@@@ ;K0+0(;H;I0C0C0C0K0C0C@ 0+0F0C0C0C0K0C0C0C0G@@0B@@@@0(0);K0*@@0J0H@@  @;K0)@@0J0H@@  0*0+@@@0J0H@@ 0*0+0(;K0)0+    @ @@0B@@@ 0)0);K0*0);K0(0(   0Bdgj0B0*  @@@@@@ ;J;K0*0)0+0(0(0)0+;I0);J0+0Befhk    0B0(0* 0(0(@@@@@@0C0C0I0C0C0C0D0);K0E0I0I0I0I0I0I0Hfil0B0*0*0+ 0)0(0B0)0) ;K0+0+@@@@@@vy|0Bdgj0B;K0)0J0K0K0K0K0K0K0L0CN0C0L0C0C0C0I0C0C0C0IAAAAAAAA0C0C0C0L0CN0C0D 0B;K0)0J0H@@@@0Bwvz}MefhkMM0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0Bmps0Bdgj0B0)dgj0B0(dgj0J0H@@@@0+0Bx{~0Bfil0J0I0I0HfMefhkMefhkMefhkMefhkMefhkMnvqtMefhk0B0)0*0( efhk0B0* efhk0J0H@@@@0C0C0L0CN0C0L0C0C0C0K0K0K0H0Bfil0Bfil0Bfil0Bfil0Bfil0Boru0Bfil0B0(0*0*   0Bfil0B;K 0+fil0J0H@@@@mps0Bdgj0B0+0+0B0J0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0C0C0C0I0C0C0C0I0C0C0C0L0CN0C0L0C0C0CA 0C0I0CN0C0L0H0B@@@0BnvqtMefhk0B0+0+0B0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0B0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0J0H0J0H@@0*0Boru0Bfil0B0)0BMefhkMefhkMefhkMefhkMefhkMefhkMefhkMefhkMvMefhkMefhkMefhk0B          0BefhkMefhk0J0H0B@@@0C0C0L0CN0C0L0C0C0C0G0B0Bfil0Bfil0Bfil0Bfil0Bfil0Bfil0Bfil0Bfil0B0Bfil0Bfil0Bfil0B0*0)0+;I0*0+0(0(0)0(0*0Bfil0Bfil0J0H@@@@0B0B0*0+0(0Bf0J0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0C0C0C0I0C0C0C0I0C0C0C0L0CN0C0L0CN0C0L0H@@@0BfMg 0B0+0*0B0Bdgj0B0Bdgj0Bdgj0Bdgj0Bmps0Bdgj0Bdgj0B0B0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0B0Bdgj0J0H@@@@0B 0B0+0BMefhkMvMefhkMefhkMefhkMnvqtMefhkMefhkMvMvMefhkMefhkMefhkMefhkMefhkMvMefhk0J0H0B@@@0B0B0B0Bfil0B0Bfil0Bfil0Bfil0Boru0Bfil0Bfil0B0B0Bfil0Bfil0Bfil0Bfil0Bfil0B0Bfil0J0H0B@@@fMg 0B0B0J0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0H0B@@@0B 0FNN0I0I0I0I0H0B0Bdgj0Bdgj0B0B0B0Bdgj0Bdgj0Bbvbyb|0B0B0B0Bdgj0Bdgj0B0B0J0H0B@@@0C0C0L0I0C 0J0K0K0K0HfMg MefhkMefhkMvMfMg MefhkMefhkMbwvz}MfMg MvMefhkMefhkMfMg 0J0H0B@@@0J0H 0)fMM0B 0Bfil0Bfil0B0B0B 0Bfil0Bfil0Bx{~0B0B 0B0Bfil0Bfil0B0B 0J0H0J0H@@@@0+0+0*0+0J0C0C0C0K0C0C0C0L0CN0C0L0CN0C0L0CN0C0L0C0C0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0H0J0H@@@@0)0*0+0(0+0B0(;I0*0+0*0*;I0Bdgj0Bdgj0Bdgj0Bbmbpbs0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0Bbbb0Bdgj0Bdgj0B0Bdgj0Bdgj0Bdgj0J0H0J0H0J0H@@0(0*;K;H0+0)0B0)0)0(0*0*0BefhkMefhkMefhkMbnvqtMefhkMefhkMefhkMefhkMefhkMbvMefhkMefhkMvMefhkMefhkMefhk0J0H0J0H0J0H @@ 0E0D0(0+0(0(f0B0+0+0(0Bfil0Bfil0Bfil0Boru0Bfil0Bfil0Bfil0Bfil0Bfil0B0Bfil0Bfil0B0Bfil0Bfil0Bfil0J0H0J0H0J0H0*;J0J0H0)0*0J0H0*;I0(0B;K0+0J0CN0C0L0CN0C0L0CN0C0L0C0C0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0H0J0H0J0H0(0(0*0J0H0+0)0J0H0)0*0B0*0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0B0Bbdbgbj0Bdgj0Bdgj0Bdgj0B0Bdgj0Bdgj0Bdgj0B0Bdgj0J0H0J0LN0L0L0I0I0I0L0L0I0I0L0L0CAAAAAA0C0CN0CN0K0C0D0BefhkMefhkMefhkMefhkMefhkMvMbevhbkMefhkMefhkMefhkMvMefhkMefhkMefhkMvMefhk0J0H0F0KN0K0L0L0K0K0K0K0L0L0K0G0(0B@fil0Bfil0Bfil0Bfil0Bfil0B0Bbfbibl0Bfil0Bfil0Bfil0B0Bfil0Bfil0Bfil0B0Bfil0J0H+/370J0H+/370J0H0+0(0+0)ff0B@0CN0C0L0CN0C0L0CN0C0L0C0C0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0H,080J0H,080J0H0*0+0)0(@dgj0Bdgj0Bdgj0B0B0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0J0H-159MM-1590J0H0+0*;H@efhkMefhkMefhkMvMvMefhkMefhkMefhkMefhkMefhkMefhkMefhkMefhkMefhkMefhkMefhk0J0H.26:0J0H.26:0J0H;I;I0E0C0CN0C0C0D@fil0Bfil0Bfil0B0B0Bfil0Bfil0Bfil0Bfil0Bfil0Bfil0Bfil0Bfil0Bfil0Bfil0Bfil0J0H0EN0I0I0L0L0IpN0I0I0L0L0I0I0I0D@@0J0CN0C0L0CN0C0L0CN0C0L0C0C0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0H0FN0K0K0L0L0KN0K0K0L0L0K0K0K0K0D@@ 0Bdgj0Bdgj0Bdgj0Bdgj0Bmps0Bmps0Bdgj0B0BdgjM0Bdgj0Bmps0Bdgj0Bdgj0Bdgj0Bdgj0J0H+/370J0H+/370J0H+/370J0D@@ 0BefhkMefhkMefhkMefhkMnvqtMnvqtMefhkMvMefhk0BvMefhkMnvqtMefhkMefhkMefhkMefhk0J0H,080J0H,080J0H,080J0H@@ 0Bfil0Bfil0Bfil0Bfil0Boru0Boru0Bfil0B0Bfil0B0Bfil0Boru0Bfil0Bfil0Bfil0Bfil0J0H-159pMM-159MM-1590J0HM  0B  0J0CN0C0L0CN0C0L0CN0C0L0C0C0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0H.26:0J0H.26:0J0H.26:0J0H0E0L0I0I0I0I0I0L0I0IAAAA0I0Hdgj0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0Bbbb0Bdgj0Bdgj0Bdgj0Bmps0B0Bdgj0Bmps0J0H0EN0I0I0L0L0IpN0I0I0L0L0I0I0I0I0L0LN0L0L0K0K0K0K0K0K0K0KAAAA0K0HefhkMefhkMefhkMefhkMefhkMefhkMefhkMefhkMbvMefhkMefhkMefhkMnvqtMvMefhkMnvqt0J0H0FN0K0K0L0L0KN0K0K0L0L0K0K0K0K0L0LN0K0G 0Bfil0Bfil0Bfil0Bfil0Bfil0Bfil0Bfil0Bfil0B0Bfil0Bfil0Bfil0Boru0B0Bfil0Boru0J0H+/370J0H+/370J0H+/370J0H;I0C0C0L0CN0C0L0CN0C0L0CN0C0L0C0C0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0CN0C0L0H,080J0H,080J0H,080J0Hdgj0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0Bdgj0BdgjMdgj0Bmps0Bdgj0Bdgj0Bdgj0J0H-159MM-159MM-159MMefhkMefhkMefhkMefhkMefhkMefhkMefhkMefhkMefhkMefhkMefhkMefhk0BefhkMnvqtMefhkMefhkMefhk0J0H.26:0F0G.26:0F0G.26:0F0G;I 0(fil0Bfil0Bfil0Bfil0Bfil0Bfil0Bfil0Bfil0Bfil0Bfil0Bfil0Bfil0Bfil0Boru0Bfil0Bfil0Bfil0F0Gmicropolis-activity/cities/med_isle.cty0000664000076400007640000006476010724145723020632 0ustar simcitysimcityKLKMJHFGFEFGIHGFFEDEDCA?>>;;;877999<;<>=;;<<;:;?AA??AA?ABAABCCDDEECCC><AABBB??<::9:554442/.--,***((&%$#!!MF;=?DB4& #!!  !!"#$%%%%%%$$$$###""!   $# ///.,,,+******)((('''&%$$%%%%%&&''))**,++++++++**********))(''&%%%%%%%$$###"!!!! .(%+*%"  RRSTUVWYZ[]``````````````aaaaaaaaaaaaaaaaaaaaa`________^]]\[ZYXWVTROKF?BGMURRQPONMLKKKKJIHGFDCB@=:98633210///.----,+++++T`aa_WRJ8-+2'*,! IHGFFFFFFFFFFFFFFEDCBBBBBBBBBBBBBBBBBBBBBBA@?>>>>>>>>>>>=<;;;;;;;;;;;;;;;;;===============<;;;;;;;;;;;;;;;;;;;;;;;:98777FFBB>;==;;7;1-00*({{]#/uRIpOL`CNTLPICT"CURSMENUBPAT rSTR#WDEF   =  J  (                                                                                                    0(000000000)0DGJ0 0EHK00FIL000000000000 00 00 000000) 00000000002580a)a,a/0 0369a*-a0 047:0a+a.a1000 0000000000) 0_beDGJ0_be00*0`cfEHK`cf00 0adgFIL0adg00 00000+000 00)0000 00+0p  00( 00+ 00( 0p 000000000(0(00 0dgj00(0(0 0ehk0000 000000fil00 0bdbgbj0Ups0000|00+ 0befhbkpnqt00(0+  0bfbibl0oru0|00000+0*0) 0bdbgbj00000000 0befhbkp|00 0bfbibl0000) 00p0000000000000 0000000mps000 0aaa00nqt000(0aa00oru00000+0aaa00000000000000000 000000 00000+00 0000000 q0000000"0000000000*0(0+ 000000000".140 #%(+ %(+00(0( 000000000;>A00 #/25!$0&), &),00(000hknApjmpjmpjmp0'*-0'*-0bb!b$000  0000000000000000) 0)000,080(000)09>>>=================<;;;:988876542/,,+*))('&%%%$##"! :48;:==8)!     @@ @@ @@`WDEFA! `pNN.N>NVNN%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$###############################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#"!!!!!!!! %%$$##$$$! $&''*,.4'$%$     New Window4Z2l (OK$dMapView{utsrvz}||GB New WindowMapView D,$$ Easy 8$ Easy\(%9Mediu #h:%9$  Z0Gw TL~}~{}{  00" 00#00"0$00%0%0" 00%0%000"00"0$000%0%0%0%0#0 0$000%0000000"00%000%0%0%0%0%0 0$0%0!00%0!00 00%000%000%0%000"0$0%0%0%0%0%0 00%000%00$00%0%0%00%000%0%0%00000%0%0%0%0  00%0!00 00"00#00$000%0%0%0%0%000%0%0%0%0!00%0%0  0$0%0%00000%0%0 0$0%000"00%0%0%0%0%0 00%0%0%0%000%0%0  000%0!00#0%000%0%0!0$0%0!00000%0%0 00%0%000"00%0  00%0#000%0%0!00%0%000%0%0#000 00"0$00#0%0%0%0!00%0#00"0$0%0  00%0%0%00%0%0%000%0%0!000000%0%0#0%0%0%0%0%0%00$000%0%0%000  00#00%0%0%000%0%0%0!0000 0$00"0$00#000%0%0%0%0%000000!00%0%0%0  00"000%0%000000 00%0%0"0000 00000 00%0#0%000  00%000  00%0%0%0#000%0%0! 00%0! 00#0%0%0000 00%0%0 00%0#000#0 00%0%000%0 00#0%0%00 000  00%000%0%00" 00%0%0%0 00%00000%0" 0$00#00%0%00  00%0%0!0000%0%0%0%0! 0$00%0%0%0  00%0%0%0%0 0000%0%0  00%0%0%0!00  00000   0$0 000    000"00%0bbbb0 0$0bjb0! 00%0 ˔˜bb0 00%00˘ˠbb0C0D00 00p@ P@P@P@ P@ 00" P@ 00 P@ 00! P@;K;K;K0( 00"00%0"P@0+;K;K0+;K0) 0000%0    00"bbb@ 0);K0E0D0) 00%00%0 0$00" 00 k|b0B 0EAAAAAAAAAA0K0G000%0%0! 0$0%0%0 kbbpMpbbbbbb0Bbbb 0B00%00$0 0$0%0%0%0%0p00%0F0DbbbbpMbb0F0D 00%0%000%00#0%0%0%0%0%0%0   P00%0Bkkbkkb0Bkkb0B00%0%0%000%0%0%0%0%00%0%0%0%00#00"P0E0K0C0C0CpN0C0I0K0C0C0CAA0G  00%0%0%00#0%0%0%0%0%0!00%00%0%0%0%0P0BkTbpbsbbb0B0%0!  000%0%0%0%0%0%0%0%0%0#0%0!00%0%0%0%0P0Bbnqbtbb0B0%0  00%0%0%0%0%0%0%0%0%0%0%0#00%0%0%0%0 P@bobrbuktkxb0B0%bbb 00%0%0%0%0%0%0%0%0%0%0%000%0%0 P@00bbb0B0%bc 00%0%0%0%0%0%0%0%0%0%0%00%0%0!P@bbpMpbbc 00%0%0%0%0%0%0%0%0%0%0%0%0%00P@kkb0B0%0%0  0$0%0%0%0%0%0%0%0%0%0%0%0%0%0    P@00%0  00%0%0%0%0%0%0%0%0%0%0%0%0!bbbbP@00!00%0%0%0%0%0%0%0%0%0%0%0 bbbP@ 0000%0%00%0%0%0%0%0%0bbbbP@ 000 00%0%0%0%0%0!bbbbP@ 00#00"00%0%0%0%0p0P@  00%0%0000%0pP @  00%0!0$000!pP 0E0G  000$00#0%0 00pp0E0G 00%00$0%0%0%0!000"p  P0B 00000%0%0%0000pbbbkXbpbsP@  000%0%0%0%0%0bbbnqbtP0B0$00$00#0%0%0%0%0%0%0%0!0$0kwk{bbobrbup0B00!0$0%0%0%0%0%0%0%0%0%0%0%0#000%000"00C0CpN0C0I0Dbbb p0B0000%0%0%00%0%0%0%0%0%0%0%0!00%0%00%000%0%aaa0F8kb p0B 00%0%0000%0%0%0%0%0%0%0#0%0%0%0%0%000"00%0%aapx]kbbbbb  p0B 0000%0%0%0%0%0%0%0%0%0%0%0!00%0#0%0%0aaa00F0C0C0Dk|baaa bbbb@bCbF bIbLbOaaa0EpN0H 00%0%0%0%0%0%0%0%0%0%0%0%0#0%0%0%0%00q`q0BkbbaapMbbbADbGpMbJMbPaappMp0B 00%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%00"0$0%q`0Fx^8S0Daaa0BbbbbBbEbH0BbKbNbQaaa0%0Bb@bCbF 0$0%0%0%0%0%0%0%0%0%0%000000%0%0%0%0%000%qq```p0J0C0C0C0L0C0C0C0C0C0C0L0C0CpN0C0C0C0C0HbADbG00%0%0%0%0%0%0%0%0%000%0%0%00%00%0%0%0``0B0Baaaccc0BbRbUbX00%0%0%8bbBbEbH00%0%0%0%0%0%0%0000000%0%0%0%0!``p0B0Baacc 0BbSVbYaaa08f0Db[b^ba0$0%0%0%0%0%0%0%0 00E0C0C0C0C0C8S8Y0K0C0C0C8haaaccc 0BbTbWbZaa0(0+0Bb\_bb 00%0%0%0%0%0%0  00%0Bqqq00%8Rahakan8bahakanb@bCbFpMbbbaaa00#0Bb]b`bcp0"00%0%0%0%0%0  00%0Bq````8ailaoxailaobADbGpMbb0EpN0C0C0C0K0C88pN0C0C0D bdbgbj0$00#00#0%0%0%000  00Bqqq``xpajamap8ajamapbBbEbH0Bbbb0BahakanaDaGaJ80%ahakan0B   behbk0$000%0%0%0%0%0%0! 0$00$0%0B00%0%```8a_abae80)0$00%0%00F8Y8Sx8ailaoaEHaK0B0ailao0Baaappppbfbiblbdbgbj  00%00%0%0%0%0%0%0%0%0"00 00%0F0C0C0C0C0C888a`caf80)000%0!0+0*8R0)p8ajamapaFaIaLpMpajamappMaabRbUbX0$0%0%00Bbehbkbdbgbj00%0%0%00%0%0%0%00%000%0!qq`qpqpxaaadag80*0+0(00;I0+80p0F0D00);I0*0(888S8T0BaaabSVbY00%0E0C0Hbfbiblbehbk00%0%0!00%0%000 00q```8888880C0C0C0C0C0C8aDaGaJ0J0C8s8s888;H;I8V0I0K0CpN0DbTbWbZ000B0F0C0C0Cbfbibl00%0%0%0#0%0%0%0!```qq`qpqxqqqaVaYa\xaEHaKpMbbbahakana2a5a80Baaa0J0CpN0C0C0C0C0G  00%0%0%0%0%0%0qp8qpaWZa]8aFaIaL0Bbcailaoa36a90Baa0Bc ccc 00%0%0%0%000qqq8qqqaXa[a^8v8s8x0Hbbcajamapa4a7a:8Raaa0Bc ccppPPPPppp00%0%0000"   00%08pqqaVaYa\0+00%p0J0C0C0C0I0C80*08Z8S0C0C0Gc cccP0$0%0%0%000"00   00"008qqaWZa]0E0C0CpN0Gb b b0B80+80G0ccccP0$0%0%0%0!0000 00#0 0$00%0008qqqaXa[a^0B0 ahakanb b0B8880P00%0%0%000%0! 0$0%0%0 00%8880CpN0C0C0K0Dailaob bb0B880GP000%0%0!00%000%0%0! pppxb b bbbb0Bajamap0EpN0C0K0D0%0%0"P  00%00000%0 pp0!0Bb bbb0J0C0C0C0Gaaa0B00%0P    0000"00%0%0!pp0%00Bb bbbbb0Bpqqaa0B000 P    00%0"00%0%0p00%0!0F0C0C0CpN0C0C0K0Dqqaaa0Bp 0$0%0%00#0%0%0p00%0%0#00#aaaaaa0Bpqqaaa0Bbbbbbb0$00#00"00%000%0%0!p00%0%0%0%0%aaaa0Baa0Bbbbbb000%0%00$000%00%0%0%0 pp00%0%0%0%aaaaaa0Baaa0B Fbbbbb00%0!00 00%0%0%0%0!   pp00#0%000%0%0%aaa0C0C0Haaaaaa0Bbbbbbb0$00#00$0%0%0%0#00$00"0000%0 bbbbppppPpp0%000!00%0%aa0%0%0Baaaa0Bbbbbbb00%00 00%0%0%0%0!00%00000"bjb 00 00#0000aaa0%00Baaaaaa0B bbbbbb00%000%0%0%0%0000 00˔˜bb00 00%0%0%0%0F0C0C0C0C0C0C0G  0$000 00%0!00%0%0%0%0!˘ˠbb00%0%0%00    0$0%0%00 000$00#000%0%0%0 00%00   0000 0000 00%0%0 0$00#0%0!0$000"  00!0$0%0%0%0%000 00%0"00#000"0000"00#000%0%0%0%0%000#00!0000%0!0000%0#00%0%0!   00%0%0%0%0%000%0%0%0#000%00"00%00000%0%0%0 00%0%0%0%0%00#00#0%0%0%0%0%0%00%0%0%0%0"000 00%0 00%0%000%0%0%0%0%0%0%0%0%0%0%0%0%0%0%000" 0$00#00%0%0 00!00%0%0%0%0%0%0%0%0%0%0%0%000 00%0#0 0000%0%0   00%0"00%0%00%0%0%00%0%00%0!00%0%0! 00   00%0%0"0000000 0000%0%0" 0$0 00%000%0#0%0%00!00%0%00     00%0 00%000%0%0%0%0%0"00%0!    000   00%00 0$0%0%0%0%0%0000"0$0%00   0000%0%0%0%0 00%0#0%0  000"00%0%0%0!00%0%0!00"0000%0%0%0%0#00#000%0%0%0#00"0000"00%00000%0%0%00"000%0%0%00%0#000%000 00%0%0%0000 00%0 000 000000 micropolis-activity/cities/kyoto.cty0000664000076400007640000006476010724145723020216 0ustar simcitysimcity@>><=@>@BIHHHFHF>>ACCEFFDDCAAB@??<:;978::888879:6554210.,,--,****)(&)(&%$$$&)'%&%$!!"! "!!##! !! "  !""$#>A@80(%!'#$,(('!#",)$$   gG;><433+ ~tqtwwooloqy~}ytpkjlsv~tuwl{{leg`yfZuvP~X_UOf?c\<`?WBNdCP3OeB$4!1)5 $'03-$  $((%&($ -$~nzkyTn^h}WsfqcNf^^R439GA'          ffggggggggggggggfedccccccccccccdefffffffffffedccba`_^]\ZZZZZZZZZ[[[\]^^^^^^^^^^^^]\[ZYXVVVVVVVVVVVVVWWXYZ\\]^___________gdcf\[^VX_Y\aZ^`YZ\[badbdgalkrrnpmhnslllfjjbg``b\`[VVUWMRTPSPSSPPMYYajdRNJJJJJC>;898/57//2/39/.3,/-*+++++5612000088////3<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<;;;:999999999999999999999999999999:::::::::98766665444444456789;;;;;;;;;;;;:99<<<;99:67;99;9;>7799<:99:=9987=:776;;;;;8885=>7:7997777555577779989<<>D9?<9::=717%,50553122/2+/1834<:<593486200357:1223:&&&&&&&&&&&& $$$$$$& $%# (--&5-.NQdVg`LeaQaWKYNL\BOMEYEFABM7GE:C6D<DEDKH Y !"[[[[[[[[[]_____```aaaaaa``_aaaabdeee ]Yf<,"*=M0B0*0C0C0C0C0C0C0D0)0(0E0C0C0C00C0C0C0DMMp0E0C0C0I0C0C0C0I0C0C0C0I0C0C0C0I0D0MdgjMdgjMTps0B0C0C0C0H0*0F0C0C0H00B0B0)0B00B0B0B0B0F0H00Behk0Behk0Bnqt0B0B3HM000B0B0(0B000B0B0B8R00Bfil0Bfil0Boru0C0C0K0D0J0C0C0C0I0D3H0B0B0000F0C0C0C0C0C0C0L0C0C0D 0E0CN0C0H000BMMM0E8[^0C0C00C0C0C0KN0I0C0Hbvbyb|0J0C0C0C0B0B3H0*0(0J0K0C0K0C0C0C0I0C0C0J0CN0C0D0000000B3H3H0B 0B0F0I0C0C0C0C00C0H0B0B0BM000+0)0B0(0Bbwz}0Bvy|0F0C0C0C0CN0H0B0B0E0C0H3H3H0F0I0C0C0C0C0C0C000B3H3H0B 0B 000000000000000000000000B00*0(3H0B0+0Bx{~Mwz}0C0C0DM0BM0B0+0J0D0B),/0B08V0D000000B 00B00B0B0B0B0000)0)0B0B0(0Bdgj0Bx{~0F0C0C0C0BM0B0B0(0J0H0B*-00B000000B0+0)0000000B00B0B0B0J0I0CN00I0C0C00C0C0KN0C0C0H0)0Behk0J0C0C0C0B3H3H0E0H0+0)3H0*0)0(0B0(0+3H0B0(0J0H0B+.10B0E0L0C0K0C0C0C0L0C0C0C0C0L0C0C0C0C00C0L0C0C0C0L0C0C0C0L0C0C0C0L0G00B0Tps0B0*0Bfil0B0E0C0C0C0I0C0C0C0I0C0C0C0L0C0I0K0K0C0I0C0C0I0C0K0C0I0C0K0C0L0K0CN0I0KN0C0C0C0C0C0L0C0C0K0H0(3H0+0*0(0B0+0+0*0*0B0000B0B0B0B00B0nqt0F0C0K0I0CN0G0B0B0B0B0*0B0B0*0)0Bp0B0B0BDGJM0J0C0C0C0C0C0Ghkn0C0H0DGJ0BM0F0C0C0C0G00B0oru0B0B0B0B0B0)0B0F0C0C0H0B0BMEHK0*0BMDGJilo0*0B0EHK0B0B0+0(3H0(0*00J0C0C00C0I0CN0C0D0B 0B0B0B0J0C0G0B0B0B0BFIL0*0B0BEHKjmp0*0B0FIL0J0C0CN0L0C0D3H3H3H3H0*0+00000*0B0B0B 0J0C0CN0LN0C0C0L0CN0C0H0(0B 0B0B0J0CN0C0L0C0C0C0C0C0C0C0L0CN0C0HFIL0E0C0C0C0H0 0B0B0B0*0)0+0)0*0)0B000(0B0F0C0C0I0K0C0C0D0BM0B0B0+0B M0BM0B0BDGJ0B0+"0C0C0G0(0+0(0F0D0 0B0B0B0+0+0(0(0)0*0E0G0000+0B0B0+0(0)0B0B0B0B0B0*0F0C0C0C0H0BM0B0BEHK0B0+ #DGJ0)0B0 0B0J0C0G0+3H0)0(0)0*0B0C00C0L0C0C0C0Bvy|0J0C0C0C0H0B0B0J0C0D0JN0C0C0L0C0C0C0H0B0%0%0%0%0%0BFIL0B3H!$EHK0*0B00J0C0CN0H0E0D0E0CN0G03H0B0Bwz}0B0(0(0)0J0C0C0C0L0CN0C0LN0C0C0H3H0B0B0B0B0B0%0%0Bhkn0B"0BFIL0+0B00B 0B0J0H0B00+0B0C0IN0Hx{~0J0C0C0C0HMM0B3H0B0B0BM0B0%0%0Bilo0B #0J0C0C0C0C0CN0C0H00B M0J0H0B03H0B0*0JN0KN0D0)0B0B0B0B0J0C0KN0I0C0C0C0I0G0B0B0B0%0%0Bjmp0B!$0B0+0*0)0+0J0C00CN0C0H 0J0C0CN0K0K0IN0C0K0D00(0B0+0B0B0(0B0B0B0BM0B0B0+0B),/0B0%0%0BDGJ0B 0BDGJ3H0B0),/0B0B0B0B0B0B03H0BM0B0(0B0B0*0+3H0B0+0(0+0B0+0)3H0B0BM0B3H0B*-00B0%0%0%0%0%0BEHK0B 0BEHK0(0B*-00B0BM0J0I0KN0K0D00+0B0*0Btx0F0I0H0B0)0)0)0B0(0+0+0B0)0+0)0B0B0B0B3H0B+.10B@0BFIL8R 0BFIL0(0B0)0(0B+.10B0B0B0J0H0J00C0L0CN0C0I0K0DdgjMM0J0C0C0C0L0C0C0C0L0C0C0C0L0C0C0I0K0C0C0I0L0C0C0I0K0C0C0C0C0L0I0C0C0K0I0C0C0C0L0C0C0K0C0C8S8\0CN0C0L0C0C0C0C0K0C0C0L0C0C0CN0I0K0C0C0I0L0C0C0CN0C0L0CN0C0L0G0B00)0B0B0(0Behk0J0Htx0BM0B0B0*0*0B3H0(0(0J0G0*0)0B0)0)0(0+0(0F0HDGJ0B0BDGJ0B0B 0B;>A0B0F0H0B0B0B03H0B0B0+0Bfil0F0K0I0C0C0H0BMM 0B0B #&MEHK0B0BEHK0B0B 0BA0E0K0C0C0CN0C0H0B0B03H0F0C0I0I0Hwz}0Bfil0F0C0H0HM0Bp0J0C0C0C0C0C0C0L0C0C0C0L0C0C0C0C0C0C0H0BEHK0BEHK0B0B0J0C0C0C0C0HEHK0J0HA0BDGJ0BDGJ0F0HDGJ0E0D0BDGJ;>A0B 0B0B0J0H00B0BM0B0H0)0)0(0B0)0*0)0B0(0(3H0B0B0B0B0+0BA0B),/0BDGJ0B3H0+0*3H0*3H0)0)0*0(0B0B00B 0E0Gtx0BMM0B0)0)0)0)3H0(0*0)0)0(3H0*0+3H0+0*3H0B0B0B&),0B0)EHKEHKMA0+0B0B0B0B 0B0B0B00B0)0B0J0C0CN0H0B0B0B0*0*0(0)0*0(0*0)0(0*0+0+0+3H0)3H3H0B0B0B0B0(0)0BA0B" 0J0K0K0G00(3H0+0(0E0C0Hehk0B0B0BMEHKEHKM369`cfM"0B 0B0Btx0F0C8S8\8S^0C0C0CN0C0H0BFIL0F0HNVNNNN _24XWJBgN _24WJBgN _24Bn Am@A0gN //A"//_H<$&HB(*HEDHBBBЂL<"Nu //A"//_H1NL"Nu //A"//_H1N| L"Nu //A"//_H1N,L"Nu //A"//_H1N NuJjJj DDN DNuDNDDNuJj DNDNu.<c"pNub H@2B@H@Nub.B@H@H@HG>HG0HG2Nu$&≲b2.HGHG҇ebDNuS@`NV/ &n Hnt/ sAC Hn0.@?0.@??.?.Hn쨣0.@??.0.@??.0.@/?0.@?0.@/??.0.@/?0.@??.0.@?J+og`0.@?0.@??<BgBg?<?0.nR@<0.S@?0.@?Bg0@&??Bg0D@Bg@?0D@?BgBg?<&?Bg?=982/,)%!!  xX/~pjbUNIPRMJ<<0# ~||zstqrmfjjikmjjgjmnlmonjhefjjjlquy~zupkjigcZTOJDA==;=>BDGJKNTTSRNLFDADBDEHOPRUWX]|mhcBFWJHMR=FD7:=6&?'7.     EHHGFEA?>=<:::::7532000-('%  {wtnmh_^a`bbdghlorw}}ytojd_XTOOJHEFG=0{dyE`|\Th[R:<434%:>),.#    y~~}|{zyxwvutsrqponmlkjhfedccccccccccccddddeeeeeeeeeedcba`_^^]]]]]]]]]]]]vjce_][f`]_a[WSTNSTV^__]]TG=>IKKLNNIEEEBDFFGGGGKLLLLLLLLLLLKJJIFAU_OAA======================================<;;;;;;::99988888888766655432100000011222344467899:;;;;;;::98777654310/.-,,,,,--===;813;5,/6221023.0-/,/0.0541470873/1/1879AA==FFFFEEE@EEEEEEEDDDDGHHCCA~~~~~~~~~~~~nnnnnnnnnnnnggggggggggggVVVVVVVVVVVVTTTTTTTTTTTTIIIIIIIIIIIIGGGGGGGGGGGGAAA~ngVTIGAKKOY`]YRQJJPLWUmknhb^^ikkhihkggfffhihiiiikkklllnooopnlk > A,;#I8$88#88#88$88"88#88E8C8C8C8I8D8B8(8*8*8)8)8*8(8*;H8(;H8(8(8+;H8);H8(8C8D88E8C8C8C8C8C8C8C8I8C8C8C8D8E8C8C8C8Ddgj8B88%8%8%8%8 88%888%8!8B8J8H8J8C8C8C8C8I8C8I8C8C8C8);H8*2588B88BdgjXps8Bdgj8J8C8C8G8Behk8B88%8%8%8 8$88%888%8%8"8E8C8C8G8F8G8B8*8B8(8B369 8B8D8BehknqtMehk8BMfiX8B88%8%8!8$8%8%8%8%888%88B8E8C8H8*8F8C8G8E8C8D47: 8B88BfiXoru8BfiXM8F8C8I8C8G88%8%88$88#8%8%8%8%8%8!888B8C8D;H8B8(8B8*8B8(8B8B 8B8F8IN8C8C8I8C8C8K8I8C8C8Htx8E8D8B88%88 88%8%8%8%8%8%8%88$8%8 8B8)8J8D8B;H8J8C8I8C8C8E8C8I8G8*8F8C8C8C8C8K8C8CN8C8H88B8B8B8F8C8I8C8K8G|8F8C8C8D8888%8%8%8%8%8%8%8%8!88!8E8C8KN8I8C8C8K8L8C8C8C8H8)8B8(8B8*8+8B;H8B8J8C8C8C88C8CN8I8I8D8B|8B|8B8B8B88%8%8%8%8%8%8%8%8888%88Bp8B8B8J8C8H;H8B8E8C8K8C8G8B.,/88J8K8K8C8H8B8B8B8E8I8D8B88%8%8%8%8%8%8%8 88%8 8BMM8B8*8B;H8B8B8+8F8D.88B8J8I8CXps8C8C8K8I8C8C8C8Htx8J8K8Gtx8B88%8%8%8%8%8%8 88%8 @8C8G8B8B8F8C8L8C8G8B;H8E8C8C8C8D;H8B8B88B8F8Gnqt8B8F8CN8I8H8E8C8H88%8%8%8%88 8$88#8%8 @;H8(8*8);H8*8B8*8)8B8*8E8L8D8B),/8B8+8B8F8C8C88CN8C8HtxoruM8J8H8B8B8$8%8%8%8%888%8%8!@8)8*8)8*8*8(8+;H8*8B8+8J8K8L8C8CN8H*-08B;H8B88B8E8C8Dtx8B|8F8G8F8C8H88%8%8%88$88%8%8%88B;H8*8(8*;H8);H8B8E8G;H8B;H8B8B+.18F8I8C8C8C8L8C8C8C8B8B8J8C8CN8Hvy|8B8B88%8%8%8!888888 8F8C8IN8+8*8*;H8(;H8*8F8I8I8C8H8+;H8EN8I8H8(8B8F8DDGJ8B #&8B88Btx8E8C8C8H8B8Bwz}8E8C8D8B|8B88%8%8%8 8JN8)8*8+8(8*8*8+8)8F8G8(8B8(8E8KN8K8H8)8B8+8BEHK8B!$'8B8C8C8C88C8C8C8L8C8C8C8H8B8B|8Bx{~8B8B8B8B888%8%8%8 8E8C8KN8)8(;H8);H8(8(p8C8H8+8B8J8I8K8CN8D8(8BFIL8B"%(M88B8F8C8C8H8B8F8D8E8H8B8B8E8H8$888%8%8%88"8$88B8(8(8*8*8*8*8);H8B;H8B8J8H8B8)8F8C8D),/8C8C8K8I8C8D8F8C8C8DXps8Bvy|8F8C8K8H8B8J8C8C8K8G88%8888%8%8%8#88#8%8  8B8*;H8)8*8+8);H8(8J8C8G8J8H8B8+8);H8B*-0DGJ8B8+8B8Mnqt8Bwz}|8F8I8GM#'88%8%8888%8%8%8%8  8B8*8+8)8)8(;H;H8CN8C8I8H8E8C8K8H8F8C8I8C8G+.1EHKM8C8C88C8C8DMoru8Bx{~8B8B $(88%88 88%8%8  8F8C8IN8C8C8B8(8J8G8B8+8*8J8C8DDGJ8B;>A8E8CFILM888B8F8D8J8CN8C8D8B|8B)8888  8BM;H8B;H8J8C8C8G8)8BEHK8BA8J8C8C8C8HFIL8(8(8*8B8J8HFIL88J8I8C8C8K8D8J8Dtx8B8B88"8$88#88#888%8%8%8%8%8%8%8%8%8!8F8D;H8B3698B8+8(Ahkn88B!$8B!$8B;H8Bx{~8F8C8I8H8$88#8%8%8%8%8%8%8%8%88B8C8C8C8HEHK8B8)8BDGJ;H8F8C8DadgMA8BFIL8B 8F8C8D8(;H8+8+8!$ 8B;H;H;H8+8*8B8B8)8(8(8B8B8(8*8+8*8(8*8(;H8);H;H;H8)8)8$8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8!8B8(;H8)8B8(8BA8Bjmp88B'*- 8B8B8J8K8G|8E8C8C8H88%8%8%8%8%888B8*8BNQT8B8)8F8CN8I8C8C8C8HAWZ]MDGJ8+8+8F8Y8Y8C8CN8C8G8"8E8C8C8C8C8G8B8F8C8I8C8E8CN8C8I8C@8BA8Z8X),/8)8*8 #8B%(+8E8C8G8B8E8G8B@8B=@C8E8I8C8HFILA8+8F8CDGJ0B;>A88&),8J8K8C8C8C8C8C8I8G8J8H8EN8KN8I8I8K8K8C8C@8BDGJ8+8BA8BFIL8R000;H!$8B8B 8F8C8I8C8K8C8C8I8CN8C8H|8B8$88#88#88#88E8C8C8GDGJ8BA8+8B88B!$8B8B8B8F8DfiXM8F8C8(8E8CN8C8K8C8C8H|M|88#8%8%8%8%8%8%8%8%8%8%8%8!8B8E8C8C8GA8C8C8K8IN8C8C8G8B8*8*;H;H8);H8)8(wz};H8B8B|8$8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%88B 8F8G47:8B88)8*8B),/>;641/-////24469:<<<>@BDFECCCAA?=;651*'#    @/@;  $$< HH $<<<<<<<<<<>@CGLNQTYYYYYYYYYYYYYXWVUTSRPNKIGDB@>=;:987654322222358$#!  !"$)07<NYN85     @@ @@ @@`WDEFA! `pNN.N>NVNNNN _)))))))))))))*+,..../00000000112222221110/.--,,,+*))))))+,-,-..-.---,,+,,-/0122222222222222138?*****+,,,,,,,,,,,++++++*)),01)-02*,"     New Window4Z2l (OK$dMapView lllddddddddddddvvvvvvvvvvvvyyyyyyyyyyyyrrrrkkkkkkkkkkjjjjjjjjjjjjiiiijjjjjjjjjjjjkkkkkkkkkdvyjjkGB New WindowMapView D,$$ Easy 8$ Easy\(%9MediumT8 PG<)_=* Z0DM TL~}~{}{  00"00"0$000%00000 0$00"00"00%0%000%00$00%0%0"00#0%0%0%0 00#000%0!00%0%0%000%0%0%0%0 00%0 00"00000%0%0!00%0%0%0!0$0%0!00"00"00%000"0$000%0%0%0%0#0%00%0%000%0000#00$00%000"0$00"00%0%00%0%0"00!00%0%0%0%0%0!0000%0 00!00%0%000%0#00"00%000%0%0%0%0%000"0$00#00#00#00"0000%0%00%0%0#0%0!00 00#000!00%0%0%0000 00000%000%0#0%0%0%0%000000000%0%0%00$000%00%0%0"0$000%0%000!00%0%0%0%000%00%0%0%0%0!00#0%0 000%0%0%0%0"00!0000%0"00%0%0%0%0%00$000%0%0%0%0%00$00%0%0!0$000%0%0%0000$0%0%0%0"000%0%0%0%0!00 00%0%00%0%0%0%000%0%0%0%0#00"00%00%0%0%0%0%00#00$0%0%000%0#000%0%0%0000 00000 00%0%0%0%0%0%000%0%0%0%0%0%0%0%0%0%0%00"0$0%0%00000%0%0%0%00#00$000%0%0%0%0%0%0!00%0%0%0%0%0%00%0%000%00$000%0%0!0$000%0%0%0%0%0%00$00#000#0%0%00"00%0%0%0%0%0%0%0%0#0%0%0%0%0%0000 00 00 0)00%0%0#0%0%000%000%0%0%0 00%0%0%00%0%0%0%0%0%0"00%0%0%00%0%0%0%0%0%0%0%0%0!0(0*0+0)0*0);J0)00%0%0%0%0%00000%0!0$00%0%0%0%0%0%0%0%0%0%0%000%0%0!00%0%0%0%0%0%0%0%000"0)0$00+0*0)0(;J00"0)0*0)0(0*00%0%0%0%0%00000%000%0%0%0%0%0%0%0%0%0%0%000%000%0%0%0%0%0%0%00%00%000"0(0(;J0(0+0E0C0C0C0C0C0I0C0C0C0C0C0C0C0C0D0%0%0%0%0%00"000%0%0!0$00$00%000%0%0%0%0%0%0%0%0%0000#00#00%0%0!00%0%0%0%0%0%000%0%0%00%00+0)0E0C0C0C0G0aMaPaS0Bpppa)a,a/0%0%0F0C0C0C0D0%0%0%0#0%0%0%0%0%0#00"00%000%000%0%0%0%0%0%0%0!0000%0%0%0%0%0%000%0%0%0%0%0%000%0%0%0%0%00"0E0C0C0HpqppqqaNQaT0Bppa*-a0aVaYa\a_abae0F0C0C0D00%0%0%0%0%0%0%000%0!00!0$0%0%0%0%0%0%0%0%0%0#00 00%0%0%0%0%00%00#0%0%0%0%0%0%0%0!00%0%0%0%0%0E0C0G00"0BqpqpaOaRaU0Bpppa+a.a1aWZa]a`cafppp0F0C0D0%0%0%0%0%00000#0%0%0%0%0%0%0%0%0%0%00$00%0%0%0%0%000%0%00%0%0%0%0%0%000%0%0%0E0C0G0%0%0%0%0Bpppqqpp`p0Ba;a>aApppaXa[a^aaadagpp0!0F0C0D00%0%0%00#00$00%0%0%0%0%0%0%0%0%0%0%0%0 000000%0%0%00%0%0!00%0%0%0%0%0!00%0%0E0G0%aMaPaS0E0C0K0C0C0C0C0C0Dpp0Baaa0Baaaa0E00G0%bb0b7b:b=0B0*p0B0)0+00%0%0%000!00%0%00%0%0%0%0#0%0%0Bpp08Rpq00E0Gcc 0Bb b00F0Db9b0B;Hp 0B;I0+00000%000%0%0%0%0%0%0%0%0%0%0Bqqp0!8Rqqq00Bccc 0Bb bb0 0F0Daaa0Bb%b(b+0E0G0000p00b9b0Baa0*0F0Db bb0aaabbb;K8Ra+a.a1pqp00aaa8R0%0%00#0%0%0%0%0%0#000%0%0%0%0!0B0pppppp``p0B0%b b b0B8r0(b9bBB??<;9?@@?=<<<<:::873110&+:99   uptyxwsjrvumibVLF*.CUlx||{zzxws{yxuqkgrqmjcermcYO@1  %(9MIZklcld\JBVY[flhaWOGY]\\XUTTTTRQNKIIIIGGEDB;65BHHGDCBAAAAA@?>=;;;:998764321/////......-,+**)(''&%$""""!!   A8.(  <%%%%%%%%%%%%!$$$$$$$$$$$$$##########$'4EB@B'D$ ((&23..,**.////..*(((((+1.*****(&&$$$#! $$$$0/.,*************))))))))))))))*+,----.....---,+++++++++*)))**+,-./../...,+)(''&%%%%%%%%%%%%%%%%%%$#"! *)).+/'%&&&&&&&&&&&&&&&'''''''''''''''''''''''''''''''''&&&&##&(((((((('''''(*********)((('''''''''''''''''''''******lyiaXIAXKiDyvpmcSJ92XWLM`Zquu~{}qjQSD*D0G4r d _# $ Z% o&C mt_H ާutI % sty'U K]d q' =H       qqqqq    qqqqqqp    0$0qq 0Bpppppppppqqq0F0C0C0Dppp0%000B0F0Dppp0%0!0E0C0H0F0IpN0C0C0C0G00B0Bp0%0%0%00%0BpppMp0%00%0%0%0B p0E0Gpppp0%0!0B  p0B00pppqqq  pp@qqp@qqqP@P@P@     P0B     P 0B 00"p0E0G  00pp0B 00   p0E0Gppp0Bp0E0C0G  0EpN0G  0Bp 0Bp 0Bp 0Bp0Bp  0Bp  @P  @Pbbbb @P bjb @P     ˔˜bb@P 0$0kXbpbs  p˘ˠbb 00"@PkTbpbsbnqbt0"  pp 00%0"@Pbnqbtbobrbuppbbbbpp00%0"  @P  bobrbu0E0C0C0Dp bjbp 00%0" 0BP p0E0C0G0Bp  0B˔˜bbp000Bp   0EpN0Hbvbyb|0Bbbb 0B˘ˠbbp0FpN0CAAA0C0C0C0C0C0C0C0I0GppMbwzb}0Bbb0E0C0C0C0C0C0K0C0C0C0Dpp bvbyb|bvbyb|pMpp0Bbxb{b~0Bbbb0BbbbbbbbbbpMppPPpppbwzb}bwzb}0F0C0C0L0Dbbb0BbbbpMkbk|bbb0Bpbxb{b~bxb{b~0F0Hbb0Bk|b0Bkbbkbbbbb0Bp0Bbbb0Bkbb0J0I0C0CpN0C0C0C0C0C0KpN0D0B0E0K0CpN0C0K0GkTbpbsbbb0%0%0%p0B 0F0C0C8bbbbnqbtbb0%0%0%p0B bbbb8bbbobrbubbb00%bbbb bbbx]kkb0bbb bbbb8R0!bbbbbbbb8Rbbbbp8U8S8Wp8R  P8R   0$0p8R   0$0%0!  p8R  0$00#0%0%0bIbLbO p0B 0$0%0%0%0%0%0%0   bJMbP0E0CpN0G  0$0%0%0%0%0%0%0%0!   ppqb[b^babKbNbQpMpbRbUbX 00%000%0%0%0%qqqqpp 0qqqqq  b\_bb0E0C0C0G0bSVbY 00%000%0%0qqpp0B aVaYa\qqqqqpx]b]b`bc0B00%0%0%bTbWbZ 00%0!00%0%qqqppppMaDaGaJaWZa]0%00*qqq8U8[x^0C0C0Hbbb0%0%0 00#0%0%00$0%0%0%0C0CpN0C0C0C0HaEHaKaXa[a^00 0*;I;I;I8RaaapMbc0%0%0! 00%0%00000%qqqqpq0BaFaIaL8x880D0)0(0(0)8R0aa0Bbbc0%0%0%0"  00%0%0!0qqpp8Z8S8S8S8a2a5a88888880aaa0J0C0D00%0%0%0" 000%0qqqppp8RaVaYa\8a36a9a2a5a8080CpN0C0C0G0%0B0#0%0%0%0%0%0" 00#000 00%00BaWZa]8Ra4a7a:a36a900%0Bb%b(b+bbb"0B0%0%0%0%0%0%0%0"  00%0%0  000BaXa[a^8V8SpN0Da4a7a:pppMb&)b,b b#0B0%0%0%0%0%00%0   00%0%00#0 00Ba_abae0p8Z8S8S8S8S8S8Xb'b*b-bb!b$0B0%0%0%0%000 0$00$00#0%0%0%0%0%0%000a`cafppp8R00%0%0%0%8V0C0C0C0CpN0C0G0%0%0%0%0%00!00!0$00#0%0%0%0%0%0%0%0%0%0  aaadagpp8R000%0%0bbbbbb"0%0%0%000000%0#0%0%0%0%0%0%0%0%0%0%0%0!0$0   ppp8V8s8t00%0!bbb b#0%0%0!000%0%0%0%0%0%0%0%0%00%0%0#0%0%00" aaa8r0#0%0%0%0#bbbbb!b$0%0%00#00$000%000%0%0%0%000%00%0%0%0 aa8r00%0%0%0%0%0%000%0%0%000 0000%000%0%000000%0%0%0aaa0B00%0%000!00%00000000!000%00%0%0%0 p0B00%0 00%000%0#00000%00  0EpN0C0Gqqq000$000000%0 0Bqpqqq0$00#0%0 00%0%0qqqpMqqqqq0$0%0%0%0!00%0! qq0Bqqq 0$00#000%0%0%0 00%0qqq 00%0%0%0000%0%0  00%0   00%0%0!00  00!00%000 00! 000"    0$0  00%0 000      micropolis-activity/cities/linecity.cty0000664000076400007640000006476010724145723020671 0ustar simcitysimcity%%$$$$$#!!   "!! #  80/JfN]( ]($](]]]^<]( HH ]($](   ]( ]( 4](^ {} {$](^^ ^^<](HH^ ](  ]p]( ](x(2d4](]tZj2d ]d]( ](](H](ommlkjhhgfeeeedcba_]\[ZXUTSRPPONMLLLLKKKKJIHGFEDCB@>=<;998764321/////////01356789:;<===<:86444445432000000110.+'&%$$$%%&h]NH9/840$jXGj)k 7k)pkH1kixW$kpYkzk]Ek]xl]l+l  FlH:lh ` lUlfl~DlhrIm(((((((())))))))))('&%%%%%%%%%$#"  !!!!""""""""""#$%&&&&&'()+-------./01111110000/.-,***)(()*+,/247;AISas('#!"+1,2&2 !>4u:]u>] $]BB.^BN_]U` ;`/e.f-~~~~~~~~~~~~{{{{{{{{{{{{||||||||||||~{|FREF2PAT bWDEFHEXASTR#MENU CURSFCNTLWIND SIZE|(>(8]83v^88iN^08vn^48zn^D(z(\/zo(Sv%umHm n ]n*xnK)0aboutaboutmyWDEF threeThreeTiles itemNames mapWndTitlesMessagesMapsBudgetEditGraphsEval printdialogquitDlg budg0B0B00"0B00"000B00%00B00"00"000B00000B0000!0B00B0B0$00"0B0000B0B0B0B0$000#00B00%0000 0B00%0!0B00%00$00#00#00B00%000%0%00000B0000 00B0#00$000"00B0%0!00 0000B0%0%0"00B0%0%000#000#000B000 00%0!00000Bbbbb0$0000Bbjb0$0%0%000"00%000#000#00#000"0$000B˕˝bb0$0%0%0%0 0000%000000"00%0%0%0%00%000 0$000B˙ˡbb00%0%0 000"00%0%0 0000%0%0%0%0%0%0%00000#0E0K0I0CpN0C000 0000%0!00%00000%0!00"0$00#bbbpMppMbbb0000000$00%000%0%bb0B;H0Bkb000"00!00%000 kkb0B0(0Bkbb000000%0!0C0CpN0H0+0Bbbb000bbb0B0+0Bbbbb0B0+0Bktkxbkkb0B0*0JpN0C0C00#0$0bbb0B0*0Bbvbyb|0000!k~b0B0*0Bbwzb}0$00$000%0"kbb0B;I0Bbxb{b~00 00"0$0%0!0000CpN8X0(0Baaa00%0#0%0000"aaa8R0(0Baa00%0!00aa80(8Raaa00#000aaa888\8SpN0C00b%b(b+8r0(8Rbbbb&)b,8r0(8Rbbb'b*b-8r0)8Rbbb0$00"0$00"aaa8r0)8Rbbb"000%0"00%0aa8r0+8Rb b#00000 aaa8r;J8Rbb!b$00#00"88pN0C8X;J0Baaa00%0%0%0%0"00#08a2a5a88R;J0Baa00%0%0%00%0"00%0!0Ba36a90B0(8raaa0$00"00"0$0%0%0%0!0000ahakana4a7a:0B0+8z8spN0C0D0000#00%0%0"00%0%0%00#0ailaoahakan0B0)0Bqqq0B00%0%0%000000000#0ajamapailao0B0(0Bqpqpq0$00"00%0%00$00"00 000%0%0%0ajamap8Z8S0Hqqqpp00%000!00%0%0#00#00 0000%0!0C0C0CpN8X;J0Bqppqpq000 0000%0%0%0%00 00aMaPaSa_abae0B;K0Bpp0$00"00%0%0%000#0%0!aNQaTa`caf0B;K0Bqqq00%0%0"00000 0000aOaRaUaaadag0B00J0CpN0C00#00"00000$0ppq0B0%0Bqqp00%0%00$0%0 pq0B0%0Bqp00%0%000 qqq0B00Bqqq0$0000 00"0$00"0E0C0CpN8X0B0+p0*0$000%0#00$0%000Bpqq8Z8S0Hpqp00#0%0%0000 0$00"00"00 0Bqq0B0Bpq00%0%0%0%000%00$00%0qqp0B0Bqpp000%0%0 000000 qpq0B0Bpqq00!0000"pq0B0Bqp00#000ppp0B0Bqqq00 0$0pppqqq0B0Bpqq00"00 pppq8R8Rqp00%0"pqqppp8R8Rppp00%0pN0C8888pN0C0C00%0aMaPaS88b b b00%0%0aNQaT8R0Bb b00"00%0!aOaRaU8R0Bb bb0000bbb"0B0Baaa00#00"0$0b b#0B0Baa0$000%0%000!bb!b$0B0Baaa00 00%000aMaPaS0B0Bqqq0$00"000%0aNQaT0B0Bqp00%0%0"00"00 aOaRaU0B0Bqqq00#000%0%0"00%0%0#00$00#0p0B0B00%0%00%0%0%000%0%0%0!0$0%0%0%0 0CpN0K0I0G000%0%0%0%0!00%0%0%000%0%0!0$0bbb"0Bqqq00%0%0000%0%0%000#000%0%000%b b#pMpq00%0!00%0%0!00%0!000%00"0bb!b$0Bppq00%0#000%0%0%0%0"00%000%00Bp0000%000%0%0%0%000#00#00%0000J0CpN00%00"00000 00%00%0%0%0 0Bppp00%0%0%0#000!000 0Bpp00%0%0%000Bppp00%00Bpp`00 0Bpp0Bp`p0$00#00B00%0%000B00%0!0B00%00B00%0!0$00B00000 0B0B0$00B00#0%0!0B00000B0B0B0$00"0B0000B0B00"0B0000"0B00%00B0$00%0%0!0B00%0%0%00B0000B0B0Bmicropolis-activity/cities/finnigan.cty0000664000076400007640000006476010724145723020642 0ustar simcitysimcityTEXT CMS Hard DiskONVHB 0. @bv"8gtg(A Tm;mx]/<0.@@?/< (JCg ,gTf @-H Jf>/aF`(Yp0.itl0/?a, _JCg8)H-H AJgaLN^ _TNNVaH8.6. n&HUO?YO/?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~AACENOUAAAAAACEEEEIIIINOOOOOUUUUOO"" AAO""''Y$ NuNupNupNuNuNu,dAbout TerrainEdit... ------------- Alarm Clock CalculatorChooserControl Panel Find File Key CaA! =!!!/ n2(pgQAlrA " _/NJ.gpaΪpaȪ SJ(g fv(aa21B3CrHalfaaL21B3CxraLfa Fg2<a8fO$ NuNupNupNuNuNu00L dWindowsEditEMapMD9[ dGame Parameters Game LevelV oW$o&YoCzodEo'oFo:p` p'UpWfpt~DprIpPph@UpF\                                                                       0$000"0$0  00"00 00"00#00000!   000000%0%000 00"00 0$00$0%0%0%0!0$0 00000#00$000 0$000%0%0000 00" 00%0%0%000%000 00 00"00 00%000 00%0!0$00"00 00 0$0%0%00#000%00$000!0$0 00000!0000 0000  00%0 00"0$00"00%0!0$0 0$0$0000%000%000  0000%00"00%0!00"000%000%000 0$00%000!0$00$0000%0!0000 00"00!00"0000000$00 00"00" 0000 0$00"00"0$00000000"00 0$0 000$00"0$000!00!00" 00"0000000%00$00000%0"000$0000#0%0%00!00%0 0$0%0%000!0000%0%0%0%0%00#00"00 0$0%0%0%0 00#000! 000000000%000%0%0 00 000$000%0%0%00"00 0$000! 00%0%0%0%0%000 0000%00%0%0%0!00!00 00 00%0%000"0000" 0000000000  00$0 000  0$00" 000 0$0    00!       0 0$00" 0$00" 00#0%0%0%0#000%0 00%0%0%0%0%0!  00#000 0 00%0%0%0%0%0%0" 000 00! 00%0%0%0%0%0%0%0" 00"00 0000%0%0%0%0%0%0" 00 00%0%0%000%0" 00  00%0%0000$0 00000! 0$0     00%0%0" 0$00#0%0!   00%0%0 00%0%0%0 0$0 000  00%0%0%0%0%00$0 00  00%0%0%0%0%0%000#0%0!  0$0     00#0%0%0%0%0%0%0%0!00%0%0 00"00          00%0%0%0%0%0%0%0%00$0%0%0%0! 0000#00#00$00#00#00"      00%0%0%0%0%0%0%0%0!00%0%0%00$000%0%0%0%000%0%0%0%0%0%0#00#00#000%0%0%0%0%0%0%000%0%0%0  0$00"00!000000 0000000000000 00%0%0%0%0%0%0!00%0%0!00000"00%0%0%0%0%0%00$00%0%0%00000%0%0%0%0%0%0%00$0%0%0%0%0%0 00! 00%0%0%0%0%0%0!0$0%0%0%0%0%0!0$00%00$0     00%0%0%0%0%0%0#0%0%0%0%0%0%0 0000 00       00%0%0%0%0%0%0%0%0%0%0%0%0     00%0%0%0%0%0%0%0%0%0%0! 0$000"  00%0%0%0%0%0%0%0%0%0 00%000"00      00%0%0%0%0%0%0%0%0 00 0000#00   00%0%0%0%0%00 00 00000  00!0$0 00#00000! 00#00" 00%0!00!00 00%0%0%0000000%0%0%0%0!0$00#00 00%0%0%0%0%000000"0$00$00%0%0%0%0%0%0!0000%000! 0$0%0%0%0%0%0%0%0%000!0000"00 00%0%0%0%0%0%0%0%0!00%0#0%0!00 000%0%0%0%0%0%0%0       00%00%0 000%0%0%0%0%0!    0000 00#00#00" 00%0%0%0%00$000" 000%0%0%0 00%0%0%0%0%00$0%0%00%0%0" 00%0%0%000%0%0%0%0!0$0%0%0%0%0%0%0%0"   00%0%0%0 000%0%0%00$000%0%0%0%0%0%0%0%0"       00#000%0%0! 00%0%0%00$0%0%000%0%0%0%0%0%0%0%0%0#0   00"00%0 000000%0%0%0!0$0%0%0%0%000%0%0%0%0%0%0%0%0%0%0 00"000$0%0!0$00$0%0%0%0%000%0%0%0%0%000%0%0%0%0%0%0%0%0 00%0%0#00$000%00$000 0$0 00#0%0%0%0%0%0!00%0%0%0%0%0!00%0%0%0%0%0%00 0$00%0%0%0%0!00!00 00 0$00 0$00 00%0%0%0%0%0%0%0"00%0%0%0%0%000%0%0000$0%0%0%0%0%0%0000#000 0$00$0%0%0%0%0%0%0%0%000%0%0%0%0!000$0%0%0%0%0%0%0%0 00 00! 0$0%0%0%0%0%0%0%0%000%0%0%0%0"00%0%0%0%0%00 0$00000%0%0%0%0%0%0000%0%0%0%0%000%0%0%0%000  00%0%0%0%0%0 00%0%0%0%0%0%000%0%0000%0%0%0%0!00%0%0%0%0%0%000%0%0!00"00#00"00"00%0%0%0%000%0%0%0%0%0%00"00%0%000%0"00"00%0%0000$0%0%0%0%0%0%000%0%0%0%0%0%0%000%0%0!0$0%0%00#000000%0!0$0%0%0%0%0%0%0%0!000%0%0%0%0%0!00%0%0%0%0"00"0$0%0%000!0000" 00%0%0%0%0%0%0%000%0%0%0%000%0%0%0%0%0"000000%00%0%0"0$000 00 00%0%0%0%0%0%0%00#000%0%0%0!0$00"00%0%0%0%0%0%0"00%000%0%0%000 00! 000%0%0%0%0%0%0%0%000%0%0%00$0%0%000%0%0%0%0%0%0%0%0#000%0%00#000%0%0%00!00 00%0%0%0%0%0%0%0!00%0%00$0%0%0%0!00%0%0%0%0%0%0%0%0%0!0$0%0%0%0%0%0%000%0%0%00%0"00%000"000%0%0%0%0%000%0%0!0$0%0%0%0%000%0%0%0%0%0%0%0%0%0#00%0%0%0%0%0%0!00%0 0000%00%0 00%0%0%0%0!00%0%0%000%0%0%0%0%000%0%0%0%0%0%0%0%0%000%0%00%0%000!000%0%0 0000%000%0%0%0!00%0%0%0%0%0!00%0%0%0%0%0%0%0%0%0%0000 00%0%00%00#00#000 00 00%0%0%0%0"00%0%0%0%0%0000%0%0%0%0%0%0%00 00%0%0000%0%0!00#00"0$00$0 00%0%0%0%000%0%0%0%0%0!000%0%0%0%000 00%0%00000%000%00"0$00#000 0$0%0%0%0%0%0!00%0%0%0%0%000%0%0%0 0$00$00%0%0!00 00%00000 0$0%0%0%0%0%0%000%0%0%0%0%0%00000 0$0%0!0$0%00%0%000%0 00%0%0%0%0%0%0!00%0%0%0%0%0%0!0$0%0%0%0#00 00%0%00"00 00"00%0%0%0%0%000%0%0%0%0%0%0%0"00%0%00000%00000%0%0%0%000%0%0%0%0%0%0%000 00 0$00"00%0%0%00 00%0%0%0%0%0%0%0%0!00 00%000000%0%0%0%0%0%0%0%000!00 0000%0%0%0%0%0 0000000  micropolis-activity/cities/bruce.cty0000664000076400007640000006476010724145723020151 0ustar simcitysimcity.-,,+*))(&%%$#"! "#"!  ,!              ;:999876666666544444432101234666677777777777777789:<<=>?ABCEHHHHHHGFECCCCCCCCCCBA@?===<;;;;;;;;;;:98755555678:=>?@AAAA@?9437<HC;8>=:,#,//#/01222222222210.,,,,,,+*(&&&&%&(+..........-,*(((((()*+,-./00000000000000/.,*+,.00000000000000000///01111110/.----------2.&.(0,0/-.202,'*.*)($~v}{qtCiq.;/e?+;/< Please insert the original disk:LVQSTUV V V       0$000         0$0        00!   0$00#00"0$000 00%0%0%000#0%0!  000%000%0%0       00 0000     00!     ,,. 00%0"00" ..  00%0%0"0000#0  --.c+c/c3c7  0$000%0%000%0%0bbb0c,0kc800!00%0%0!00%0!bb0c-c1c5c90000#00"00%000%0%0#0  ktkxb0c.c2c6c:0(aVaYa\ahakanahakanaMaPaS000%0%0#000!00%0%0%0%0  kTbpbs000pp00aWZa]ailaoailaoaNQaT0000 00%0#000%0%0%0%00" bnqbtbbbbbbpaXa[a^ajamapajamapaOaRaU00%0%0!00%0%0%0%0%0 bobrbubbbb0ccc8U88888S8S8S8s8s8t00%000#000#00%0%0%0%0%0%0!bbbbbbbkkb0cc 0B0(0(;Ja2a5a8aVaYa\8r0$000%0%0!00%0%00%0%0%0%0%0%0%0%0%0%0"bjbbdbgbjbdbgbj0ccc 0B0+0+;Ja36a9aWZa]8r0$0%0%000%0%000%000%0%00%0%0%0%0%0%0%0 ˔˜bbbehbkbehbkp---8RaVaYa\a4a7a:aXa[a^0B000%0!00000000%0%0%0%0%0%0! ˘ˠ/bbfbiblbfbibl0/,x]aWZa]0J0C0C0C0D00%0#0%0%000%00%0%0%0000%0 bbbaaaaaa0,,.xaXa[a^a_abaepqp0B0B00%00%0%0!0000000!bbaaaa00(0(88880Ca`cafpq0B0F0D00%0000%0#00#00  kukybaaaaab00+0(0B0(0)0+0+aaadagppq0F0D0B00%000 00%0%000#0  0p00000p0000000*bIbLbOaaa``q0B0B00%0%0%00 0000%00%00  bbbaaa0Bbdbgbj--0B0bJMbPaa`q0B0F0D00%0%0%0!00%0 bbaa0Bbehbk,0B0bKbNbQaaaq``0B0B00%0%0000  bbbaaa0Bbfbibl-.0B00p0ccc0qq```q0B000  aaa0BbbbpppMb b b0cc 0!qq`q0Baa8Rbb,0Bb b00ccc 00#qq`qpq0B   aaa8Rbbb,-0Bb bb0000%0%00F0D00"0$00"  bbb8U0G-,.-.0B./bbb000%0%000#00B00%0"00%0  kb8Rbdbgbj.-0B-bc000#0%0%0%0!00%0 0B0$000000%0 kbb8Rbehbk,0F0C0Dbbc0000%0%0%0%0%0#00 0B00 00"00%0%0 bbb8Rbfbibl/-0Ba_abae000%0%0%0%00B000$0%0%0%0!00"  bb8R..b b bbbb"0Ba`cafaaa000%0%00 0F0D000%0%0%0"00  pbbbx]p/b bb b#0Baaadagaa0000B00%0%0  bbb8ppb bbbb!b$8Rahakanaaa0000000B000 0$0   bb0C0C880CpN0C0C0C0C8S8S8Xailaoppp0Bqqq000B0#000   kkbaaa8ppp0+0Bajamap,q0B/.,000E0G00%0%0aa8pp0F0C0D0%qp`0B,qq000B00%0%0  aaa0Bpqq0$00#00%0%0Bpppqqpqppaaa00G00  b b b0Bqqq0$0%0%0%0%0%0%0Bp//pppaa0000 0$0 b b0Bqp00%0%00%0%0%0Bpqp/qpppqaaa00%00!00!0$0 b bb0Bqpq00!00%00F0C0C0C0C0C0pqqppq000%000%0"00!0qqp0000 0000%00pqqq0000 00%00000"0qq00 00%0%0!0/qppp-0000000qpq00%0%0%000%0ppp000"0$000$00%0%0%000 pp00000!000%0%0%0%0%0ppp000"   00%000%0%0%0%0%0-ppppp000%0"0000%0%0%0%0%0qppp000000%0%0%0%0%0%0!-pqppp000#000%0%0%0%0%0%000"0$000"00"00#00"00%0000%0%0%0%0%0%0!00"00%000!00%00000%00000!00%0%0%0%00000%00000%0"0$00%0%0 00! 00!0$0%0000%0%000%000#0%0%000%0%0 00 00%0#00#0%0%00"00%0%000%0!00%0%00000 00  00%0%0%0000000#00%0%0!00000%0!000#0 00000$00#000%0%0%0%0%0"00%0%0#0%00%0%00" 0000 00%0%0%0%0%000%0%0%0!00%0%0%0#000%0%0%0%0%00"00%0%0%0#0%0%0%0%0%0%000#00$000%0%0%0%0%0%000"00"000000%0%0%0%0%0%0%00%00  0$0%0!00%0%0%0%0%0!000000%0%0%0%0%0%0%000#0 000%0#000#00"00%0%0%0%0%0#00 00%0%0%0%0%0000  00%0!00%00%0#0%0%00%0%000$000%00%0%0%0!00%000!000%000 00"00#0%0%000 000000%00$00%000 000$00%00%0%0!0$000000%0%0 00!0$0%0%000%000%00#00#00"000 0$000%0#0%0%00000%0%0%0%0%00"00"0$00#00$00#0%0!0$00#0%0%0%0%0%0 00#000%0%0%0%0%000"00 00%00 00%0%0%000#0%0%000%0%0%0!00%0!0000%0%0%0 00 0$00%000%0000%000000$0%00%0#00#0000 00!0$0%0%0%0%00000%00000!00%0%0%0!00 00#00#00#0%0%0%0%0%0!0$00#0%0%00$00%0000$0%0!0000%0%0%0%0#0 00"00%0%0%0%0%0%0%0%0%0%0%0#0%0%0%0%0%0!000000#0%0%0%0"00%00%0%0%0%0%0%0%00" 00%000%0%0%0%0%0%0%0%0%0%0%0%0%0%00000%0%0%0%0%0"00%0%0%0%0%0%0%0%0%0%0%0"0000%0%0%0%0%0%0%0%0%0%0%0%000000%0%0#0%0%0%0%0%0%0%0%0%0%000 00%0%0%0%0%0%000%0%0%0%0%000%0%0%00%0%0%0%0%0%0%000%0%0%000 000%0%0%0 0$00%0%0%0000%0%0%0%0%0%00000 000 0$0%0%0%0%0%0!00%0%0%0%0%0!0$000%0%0%0%0%0%0"00%0%0%0%0%000 00#000000%0%0%00#00%0%0%0%0%0%0%0000 0$00#000%000%0%0%0%0%0%0%00! 00%0%0!00%0%000000%0%000$0 0000000%00000 00%0000#00"00 00%0%0%0%0"  0000%0%0%0" 0000            micropolis-activity/cities/kowloon.cty0000664000076400007640000006476010724145723020541 0ustar simcitysimcityyyvwwusrrsqqqqqrttrtsstttttvy{z|zwyx{{{z{{|{{|}y{}}~|yxzzx{||{zywwwuvvvwyzzy{{}}zz|~~zyxuwwwrsz{zu}ux}~~v~~z~|y~sv}z{{y}}sxzxyx{}wxvvxu|~vlrotysuqtxszwzyseO% gu   {kWYSVYUQZXxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyxxxxxxxxxxxxxyyyyyyyyyyxyyyyyyyxyyyyyyyzyyyyyyyyyyyyyxxxyyzzzzyzyy{yyxxxxxxxwwwwwwwwwwyzxxxxywx{xzzzxxxxxzzxxxz}zzzzzzxxxxxwwrrrq{wmhbbbdeeeeee///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////.............-----------++++++,-----+***)(**+eNy||vxut{~}yxw ax/*6L0C0C0C0C0I0C0C0C0D0B0B0B|0BM0B0E0D0B0B0B0J0H0B0B0B0B0J0G0B0B0B0B0B0B0B0B0+0)3H0B0B0B0B0B0B0B0B0B0B0B0B0BM0B0Bbbbbʵʹʽ0B0B0B0Bʵʹʽ0BM0Bbֺʶ޺ʾbbb.0B"0B""Mʶ޺ʾ0B0B~0B|ʷʻʿb|M #M # #0Bʷʻʿ0B0B0Bʸʼ-0B!$0B!$!$0Bʸʼ0B0B0B0E0C0C0C8s8y0C0CN0I0C0C0C0I0C0C0C0C0C0C0C0C0C0C0C0K0C0C0C0L0C0C0C0IN0C0C0CN0C0I0C0C0K0CN0C0D0*0+0C0C0C0C0L0CN0C0L0C0C0C0C0C0C0C0C0C0C0C0C0I0C0C0C0C0C0C0I0C0C0C0C0C0C0I0C0C0C0C0C0C0K0C0IN0G0)8r0B0B0+0(0B0(0)0*0B0B0+0)0+0B0(0*0B0Baaa0B0B0Bccc0B0B0B0B0+3H0(0*0(0(0F0C0D3H0B0B0(3H3H0B0(0)0B0Ba0B|0B|0Bc 0B0B0B0B0+0+0*0*0(0(0)3H0(3H0(0*0F0C0H0Bccc0B0*0*0B0B0B0B0B 0BDGJ0B0B0B0*0)0*0+0*0*0+3H3H0+3H3H3H3H0)0(0+0(0+0J0CN0C0C0C0C0Hc 0B0)0*0B0B0B0B0B0B0B3H0)0)EHKMM0B0(0)0(0*0(3H0+0*0)0(0+0(3H0+0+0)0)0*0)0B0B 0B0*0+0BM0B0B0B0B0B0*0(0(FIL0B0B0B0(3H3H0+3H0*0(0(0B0J0C0C0D0B3H0(M0B0B0BM0B0J0C0C0C0C0C0C0L0CN0C0L0CN0C0H0)0+0+0*0+0+0+0(0B0B0F0CN0C0H0)0)0B0B0B0*0(M0B),/0B0BDGJ0BDGJ0B0B0B0)3H3H0)0)0)0(0*0B0B0B0*0)0B0B0B0)3H0BM*-00B0BEHK0BEHK0B0B0B0+0)0+0(0)0)0(0*0B0B0B0+0*0B0B0B0*0*0B0B+.10B0BFILMFIL0B0B0B0(0)0)0)0(0+3H0+0B0B0B0(0+0B0Baaaaaa0BaaaDGJ0B0BDGJ0BDGJ0BMDGJM0B0*0(0(0+0+0+0(0)0B0B0B3H0+0B0Baa0BaEHK0B0BEHK0BEHK0B0BEHK0BM 0(0)3H0*0)0)0*0*0B0B0B0*0+0B0B0BFIL0B0BFIL0BFIL0B0BFIL0B0B 0*0)0)0*0+3H3H3H0B0B0B0(0*0C0CN0I0K0C0C0C0L0CN0C0K0C0C0C0C0C0C0C0I0K0C0C0C0C0C0C0LN0C0C0C0CN0K0C0I0S0[0C0C0C0C0K0C0C0C0C0C0C0L0C0C0C0K0CN0C0L0C0C0C0I0C0C0C0C0C0C0I0C0C0C0I0C0C0C0C0K0C0I0C0CN0C0K0C0I0CN0C0I0G0+0(000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B0B0B0B %(+0F0DDGJDGJ2580B0Baaa0B),/0B0B0B0B0B0+0(3H0B0E0GM0B &),0F0DEHKEHK3690B0Ba0B*-00B0B0B0B0B0+0+0)M0B0B0E0G '*-0F0C0DFILFIL47:0B0B0B+.10B0B0BM0B%(+0E0G0Baaa0B0B0$0[^a0F0DDGJ0B0BMaaa0Baaa0B0BMaaa0BM&),0Baaa0E0K0C0C0Daaaa0B 0E0G00#0%0%00"\_b0F0DEHK0E0C0K0C0C0C0K0C0C0C0Ha0BaM0B0Ba0B0B'*-0BaMMaM 0E0G00%0%0%0%0]`c0F0DFILM;>A #&0B0B0B0B0B0B0B0(0)0C0C0G0B0B0B 0E0G0$00#0%0%0%0%0%0%00#0 0B0BA0B0B3H0(0(EHKFIL0C0G00F0C0Djmpjmpjmpjmp00%0%0%00F0Dilo0B0E0G0)0(0B0*0*0BDGJ3H0B0*0C0DA0F0CN8y8x),/EHK0B~0B~00000000000|0B0B00%0%0%0%0%0%0%0!0B@CGKPSWZ`fks{{vla[RNEFFIIKMQRW[^dilnrzzyqkhYQOF;6:>DFHKMRVXagikNqJyGIn;a6`2XEPBB\=^/M3W,N*C#A600&A(@0A286*60-+:97>,@.@.?,E(B+B%@*?4:L+6I)>>+C-7,/>"4%&!* " wpkc`djlptx~{zyuruqhec`bfjorx{wnia\VSRVXZ`ikmopqtwy~~|voic_XWT[_`chimquxx{|yxrcrxZ[|OpSObLilG[GZEg8d/B\O*7Y9.LD58MS:;SM63QU<KGU7JEo:8T[0D>X6W@AS:Re;BEP\8EM7I,@2A#(*#&$1/. ````abcdddefgggggfedb````_______________________`abbbbccccccba`^^^^^]]]]]]]^_```abbbbbbbbbbbbbbba`________`abbbbbbbbbba`db__c]ab_b\a^cZaZa[YWVXW[RYNSTPNQSJNSOOOWTUUZRRTf`a_`a]_dh[`c`X\]c\cZdd_gf^ffkjafdeb[`[[PUOKHJJJLHKUWNRSQND<500/+'''''''....--./0111233333333333321111000000/////////////0123333344444443210/-----,-./00123334555555432100//////00123333333210/.030/3/1401+++/*.-3.*+.**-)1-493,3>-/7000510/4-+/41/00.).29*054+/02/9-64399+46:9/6743,305331033*.0//1320615042368=>>>>>>>************############))))))))))))555555555555!!!!!!!!!!!!444444444444aaa---------BBBBBBBBBBBB5555*#)5!4aB5OM>E<BF;B3@7F5C1<=B<:B8??>:>ACE@JGC@HFEF@HAEBM?HDK?H>G>GEIOEIPAIWU]SV[X]SXRXTURLGGGJLWQX[_Zb`kihebaba_]c"`.%J! dgj8E8C8C8C8I8C8C8C8C8I8C8C8C8I8C8C8C8I8C8C8C8I8C8C8C8D8(8*8+8E8C8C8C8I8C8C8C8C8D8B8B8B8*8+8Bvy|8B8BTpsdgjTps88BdgjTpsdgjehk8BTps8B8+kYps8BTps8Bdgj8Bdgj8Bp8B8(8+8*8B8B;I8BMMM8)8)8Bwz}MMnqtehknqt8Behknqtehk˕˝fiYMnqt8B8(nqt8BnqtMehkMehk8B8J8C8C8C8H8B8)8B8B8B8B8+8)8bx{~8b8Borufiloru88$8BfiYorufiY˙ˡ8CN8C8Horu8B8)oru8Boru8BfiY8Bfil8B8BMM8E8KN8C8I8K8C8C8I8KN8C8I8K8CN8I8C8c8k8I8Cn8k8I8C8C8K8I8C8C8C8D8B888EAA8C8C8CN8C8K8CN8I8C8C8C8C8C8Cvy|8J8C8C8C8L8C8CN8I8K8CN8I8K8C8C8C8LN8C8I8KN8C8C8G8J8D8+N8LN8C8C8H8B8B8B8Bdgj8Bdgj8BTps8B8JN8C8K88C8Gvy|8Bvy|wz}MdgjM8B8(8+8B;I8)8(;I8B8(8B8+8)8J8K8CN8H8B8B8BM8BehkMehkMnqt8B8Bvy|8wz}Mwz}˕˝x{~8Behk8B8Bdgj8BYps8Bdgj8B8E8C8CN8I8H8B8B8BM8B8BfiY8BfiY8Boru8BMwz}8txx{~8Btxx{~˙ˡ8C8CN8HfiY8B8BehkMnqtMehk8B8B8J8H8B8J8CN8C8L8C8C8C8L8CN8C8L8C8C8C8L8C8C8C8L8C8C8C8H8B8Bx{~88CN8I8C8C8L8C8C8CN8C8C8CN8C8Dbbb8J8C8I8I8L8I8CN8Gfil8Boru8Bfil8B;I8(8B8J8H8JN8C8C8H8B8B8B8BTps8B8B8J8C8CN8L8C8C888B888Bdgj8Bb8B;I8F8K8K8Hdgj8E8CN8K8I8CN8K8C8C8C8L8C8CN8H8J8K8CN8C8G8B8BMM8BnqtMM8Bdgj8B8@8Behk8B8B;I8Behk8BTps8Bdgj8B8B;I8*8B8(8(8B8B8B8B8Boru8B8J8C8CN8Hehk8B888(8(@@fil8J8CN8C8G;I8BfiYMnqt8Behk M8J8CN8C8H8+8+8B8)8EN8K8C8C8I8K8CN8I8K8C8C8I8K8C8C8C8L8C8C8C8HkYps8BfiY8B88*8*8(8)@A8C8C8I8C8C8C8IN8I8Hdgj;I;I8J8I8C8C8Horu8BfiY 8BM8B8E8C8G8+8B8B8B8Bdgj;I8BYpsMnqt8J8CN8C8G88+8*;Ivy|8B8B8FN8K8Hehk8E8C8CN8I8K8H8+8+8F8CN8C8L8CN8C8B8*8)8(8B8J8I8I8D8B8F8Dի8BMMehk8)8Bnqt8Boru8BYps888*8+8(wz}8B 8Bdgj8BfilMdgj8B8+8Bdgj8B8J8C8C8C8H8F8K8K8HM8+8B8B8B8BfiY8E8Goru8F8C8D8Bnqt8;I8*8)x{~8B 8Behk8B8(8+8Behk8B8*8Behk8BM8J8C8C8C8B8B8E8KN8C8I8K8C8C8I8H8BMvy|8J8C8Goru888+;I8C8CN8I8C8G 8BfiY8J8CN8C8HfiY8F8C8HfiY8B8E8C8I8HM8B8F8C8CN8H8B8F8H8B8Bwz}8Bdgj888(;I8B8B8C8C8I8Gdgj8F8D8)8BYps8BTps8B8(8J8H8B8BMM8*8B8B8Bx{~8Behk888B@8Behk8B8)8Bnqt8Bnqt8J8I8K8K8C8D8B8E8D88#8B8B8E8KN8C8I8K8C8C8C8H8+8)8(8)8E8C8GfiY8Mtx@0Bfil8Buy8*8Boru8Boru8J8H8J8I8L8I8C8I8L8H88%8F8CN8I8K8C8C8C8H8B8)8B8+8)8)8*8Bdgj88 8*8*;I8J8C8C8C8D@  800088J8C8C8C8I8L8C8I8CN8C8I8L8C8I8C8K8G8F8K8K8H;I8J8K8G8$8%8%8%8%8% 8B8+8B8B8(8F8C8I8C8C8Gehk88E8C8D8BYps8B8B 0B8880B8F8G8Bdgj8F8G;I8B8F8C8G88%8%8%8%8% M8)8B8Bvy|8Bdgjfil88 8B8(8B8Bnqt8JAA8C8H8B00008Behk8(8(;I8B 88%8%8%8%8%8B 8B8E8KN8C8I8L8C8C8Dwz}Mehk88 8*8B8(8Buy8Boru8B 8B8B8E8C0K0G888880BfiY8E8C8G 88%8%8%8%8%88FN8C8I8K8C8C8C8H8J8G8Bx{~8Bfil88 8)8+8E8K8C8K8CN8I8K8CN8C8G 8B8B8B8E8C8C8C0008B8$88#88" 88%8%8%8%8%8%8!8B8*8B8Bvy|8F8CN8I8K8C8C88 8Baaa8B8*8)8B 8B8J8C8CN8H8B8E0G8888B88%8%8%8%8"8$88%8%8%8%8%8%8%8M8(8B8Bwz}dgj8Bdgj8C8 8Ba8B8)8+M 8JN8C8C8C8H8BM8B888B88%8%8%8%8%8#88#88#8%8%8%8%8%8%8%8B8E8KN8C8I8Hx{~ehkMehk88B0B;I8(8B 8BYps8B8J8CN8C8H8B88F8I8C8D88%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8E8C8C8K8I8CN8G8J8K8Dfil8BfiY88 8J8CN0C0H;I8*;I8(8F8C8D;I 8Bnqt8BM8J8C8CN8H888B8B88%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8B8B8B8F8C8I8C8CN8K8C8C88 8B8B8(8B8) 8Boru8J8C8CN8H8B8J8CN8C8C8C88G8B88%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8!hkn8B8B8BTps8BYpsdgj8 8BM8B8*8J8CN8C8B8B8B8B888B88%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8iloMM8E8C8C8HnqtMnqtehk88B8B8)8B8+8Bdgj8B8J8C8C8C8GM888F8D88%8%8%8%8%8%8%8%8%8%8%8%8%8%8jmp8B8B8B8Boru8BorufiY88B8)8(8J8CN8C8I8C8C8C8H;I 8Behk8B8B88#88#88#88B888F8D88%8%8%8%8%8%8%8%8%8%8%8%8%8 8E8C8Cn8l8C8C8C8L8C8C8C8L8C8C8K8C8C8C8K8C8C8C8C8C88 8B8B8B8B8) 8Bfil8F8C8C8C8G8%8%8%8%8%8%8%8F8C8C8D888F8D88%8%8%8%8%8%8%8%8%8%8B8bM;>A8BDGJ8888B8BM8B8+8J8CN8C8$88%8%8%8%8%8%8%8%8%8%8%8%8%88F8CN8D888F8D88%8%8%8%8%8%8%8%8MM8BADGJ88B;I8+;I 8J8C8G88%8%8%8%8 8B 8BDGJ8Bhkn 8B8B 8B0000B8B8J8C8CN8H8$8%8%8%8%8B@CF"8B8FAA8C8C8C8HMbbb8Bfil8Bdgj   8B8BM8J8CN8C8L8C8K8C8I8C8K8C8D8888B 8B9AM8B 8B8B8B8BM8B8B   8B8B8BfiY8Bdgj8BTps8Bdgj8Bdgj8B8BEHK8B. # # ADDITIONAL TERMS per GNU GPL Section 7 # # No trademark or publicity rights are granted. This license does NOT # give you any right, title or interest in the trademark SimCity or any # other Electronic Arts trademark. You may not distribute any # modification of this program using the trademark SimCity or claim any # affliation or association with Electronic Arts Inc. or its employees. # # Any propagation or conveyance of this program must include this # copyright notice and these terms. # # If you convey this program (or any modifications of it) and assume # contractual liability for the program to recipients of it, you agree # to indemnify Electronic Arts for any liability that those contractual # assumptions impose on Electronic Arts. # # You may not misrepresent the origins of this program; modified # versions of the program must be marked as such and not identified as # the original program. # # This disclaimer supplements the one included in the General Public # License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS # PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY # OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF # SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS # DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, # INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, # FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY # RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, # USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST # INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL # MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE # UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE # WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE # CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR # ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME # JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED # WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A # CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY # NOT APPLY TO YOU. micropolis-activity/res/0000775000076400007640000000000010735230432015616 5ustar simcitysimcitymicropolis-activity/res/wask.tcl0000664000076400007640000001217410724145723017302 0ustar simcitysimcity# Window: Query. Ask the player something. For Unix Micropolis # # Micropolis, Unix Version. This game was released for the Unix platform # in or about 1990 and has been modified for inclusion in the One Laptop # Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If # you need assistance with this program, you may contact: # http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or (at # your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. You should have received a # copy of the GNU General Public License along with this program. If # not, see . # # ADDITIONAL TERMS per GNU GPL Section 7 # # No trademark or publicity rights are granted. This license does NOT # give you any right, title or interest in the trademark SimCity or any # other Electronic Arts trademark. You may not distribute any # modification of this program using the trademark SimCity or claim any # affliation or association with Electronic Arts Inc. or its employees. # # Any propagation or conveyance of this program must include this # copyright notice and these terms. # # If you convey this program (or any modifications of it) and assume # contractual liability for the program to recipients of it, you agree # to indemnify Electronic Arts for any liability that those contractual # assumptions impose on Electronic Arts. # # You may not misrepresent the origins of this program; modified # versions of the program must be marked as such and not identified as # the original program. # # This disclaimer supplements the one included in the General Public # License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS # PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY # OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF # SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS # DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, # INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, # FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY # RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, # USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST # INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL # MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE # UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE # WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE # CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR # ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME # JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED # WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A # CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY # NOT APPLY TO YOU. global AskWindows set n [Unique] set win .ask$n set AskWindows [linsert $AskWindows 0 $win] LinkWindow $head.ask $win LinkWindow $win.head $head catch "destroy $win" toplevel $win -screen $display SetHelp $win Ask wm title $win {Micropolis Query} wm iconname $win {Micropolis Query} wm geometry $win 350x200+5+5 wm positionfrom $win user wm sizefrom $win user wm maxsize $win 700 700 wm minsize $win 100 100 wm protocol $win delete "DeleteWindow ask AskWindows" wm transient $win $head frame $win.top \ -relief raised \ -borderwidth 1 LinkWindow $win.background $win.top label $win.top.title \ -borderwidth 2 \ -relief raised \ -font [Font $win Big] LinkWindow $win.title $win.top.title text $win.top.text \ -borderwidth 2 \ -relief flat \ -wrap word \ -state disabled \ -font [Font $win Big] LinkWindow $win.text $win.top.text frame $win.top.frame \ -borderwidth 2 \ -relief flat LinkWindow $win.frame $win.top.frame button $win.top.frame.left \ -font [Font $win Large]\ -borderwidth 1\ -padx 6 -pady 12 LinkWindow $win.left $win.top.frame.left button $win.top.frame.middle \ -font [Font $win Large]\ -borderwidth 1\ -padx 6 -pady 12 LinkWindow $win.middle $win.top.frame.middle frame $win.top.frame.rightframe \ -borderwidth 0 \ -relief raised LinkWindow $win.voteframe $win.top.frame.rightframe button $win.top.frame.rightframe.right \ -font [Font $win Large]\ -relief raised \ -borderwidth 1 LinkWindow $win.vote $win.top.frame.rightframe.right pack append $win.top.frame.rightframe\ $win.top.frame.rightframe.right {top frame center} BindVotingButton $win $win.top.frame.rightframe.right Ask pack append $win.top\ $win.top.title {top frame center fillx} \ $win.top.text {top frame center expand fill} \ $win.top.frame {bottom frame center fillx} pack append $win\ $win.top {left frame center expand fill} update idletasks micropolis-activity/res/tclindex0000664000076400007640000000327310724145723017366 0ustar simcitysimcity# Tcl autoload index file: each line identifies a Tcl # procedure and the file where that procedure is # defined. Generated by the "auto_mkindex" command. unknown tclinit.tcl searchpath tclinit.tcl autoload tclinit.tcl load tclinit.tcl TCHSH:PutLibLine buildidx.tcl TCLSH:CreateLibIndex buildidx.tcl buildpackageindex buildidx.tcl unknown init.tcl auto_load init.tcl auto_execok init.tcl auto_reset init.tcl auto_mkindex mkindex.tcl parray parray.tcl tk_butEnter button.tcl tk_butLeave button.tcl tk_butDown button.tcl tk_butUp button.tcl tk_entryBackspace entry.tcl tk_entryBackword entry.tcl tk_entrySeeCaret entry.tcl tk_entryCopyPress entry.tcl tk_entryCutPress entry.tcl tk_entryDelLine entry.tcl tk_entryDelPress entry.tcl tk_listboxSingleSelect listbox.tcl tk_menus menu.tcl tk_bindForTraversal menu.tcl tk_mbPost menu.tcl tk_mbUnpost menu.tcl tk_traverseToMenu menu.tcl tk_traverseWithinMenu menu.tcl tk_getMenuButtons menu.tcl tk_nextMenu menu.tcl tk_nextMenuEntry menu.tcl tk_invokeMenu menu.tcl tk_firstMenu menu.tcl tk_mbButtonDown menu.tcl tk_mbButtonUp menu.tcl tk_mbButtonEnter menu.tcl tk_mbButtonLeave menu.tcl tk_mbButton1Enter menu.tcl tk_mbButton2Down menu.tcl tk_mbButton2Motion menu.tcl tk_mbButton2Up menu.tcl tk_menuEnter menu.tcl tk_menuLeave menu.tcl tk_menuMotion menu.tcl tk_menuUp menu.tcl tk_menu2Down menu.tcl tk_menu2Motion menu.tcl tk_textSelectTo text.tcl tk_textBackspace text.tcl tk_textIndexCloser text.tcl tk_textResetAnchor text.tcl tk_textDown text.tcl tk_textDoubleDown text.tcl tk_textTripleDown text.tcl tk_textAdjustTo text.tcl tk_textKeyPress text.tcl tk_textReturnPress text.tcl tk_textDelPress text.tcl tk_textCutPress text.tcl tk_textCopyPress text.tcl tkerror tkerror.tcl micropolis-activity/res/tk.tlb0000664000076400007640000004303310724145723016750 0ustar simcitysimcity#@package: button.tcl tk_butEnter tk_butLeave tk_butDown tk_butUp # button.tcl -- # # This file contains Tcl procedures used to manage Tk buttons. # # $Header: /user6/ouster/wish/scripts/RCS/button.tcl,v 1.7 92/07/28 15:41:13 ouster Exp $ SPRITE (Berkeley) # # Copyright 1992 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # # The procedure below is invoked when the mouse pointer enters a # button widget. It records the button we're in and changes the # state of the button to active unless the button is disabled. proc tk_butEnter w { global tk_priv tk_strictMotif if {[lindex [$w config -state] 4] != "disabled"} { if {!$tk_strictMotif} { $w config -state active } set tk_priv(window) $w } } # The procedure below is invoked when the mouse pointer leaves a # button widget. It changes the state of the button back to # inactive. proc tk_butLeave w { global tk_priv tk_strictMotif if {[lindex [$w config -state] 4] != "disabled"} { if {!$tk_strictMotif} { $w config -state normal } } set tk_priv(window) "" } # The procedure below is invoked when the mouse button is pressed in # a button/radiobutton/checkbutton widget. It records information # (a) to indicate that the mouse is in the button, and # (b) to save the button's relief so it can be restored later. proc tk_butDown w { global tk_priv set tk_priv(relief) [lindex [$w config -relief] 4] if {[lindex [$w config -state] 4] != "disabled"} { $w config -relief sunken } } # The procedure below is invoked when the mouse button is released # for a button/radiobutton/checkbutton widget. It restores the # button's relief and invokes the command as long as the mouse # hasn't left the button. proc tk_butUp w { global tk_priv $w config -relief $tk_priv(relief) if {($w == $tk_priv(window)) && ([lindex [$w config -state] 4] != "disabled")} { uplevel #0 [list $w invoke] } } #@package: listbox.tcl tk_listboxSingleSelect # listbox.tcl -- # # This file contains Tcl procedures used to manage Tk listboxes. # # $Header: /user6/ouster/wish/scripts/RCS/listbox.tcl,v 1.2 92/06/03 15:21:28 ouster Exp $ SPRITE (Berkeley) # # Copyright 1992 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # # The procedure below may be invoked to change the behavior of # listboxes so that only a single item may be selected at once. # The arguments give one or more windows whose behavior should # be changed; if one of the arguments is "Listbox" then the default # behavior is changed for all listboxes. proc tk_listboxSingleSelect args { foreach w $args { bind $w {%W select from [%W nearest %y]} bind $w {%W select from [%W nearest %y]} bind $w {%W select from [%W nearest %y]} } } #@package: tkerror.tcl tkerror # This file contains a default version of the tkError procedure. It # just prints out a stack trace. proc tkerror err { global errorInfo puts stdout "$errorInfo" } #@package: text.tcl tk_textSelectTo tk_textBackspace tk_textIndexCloser tk_textResetAnchor # text.tcl -- # # This file contains Tcl procedures used to manage Tk entries. # # $Header: /user6/ouster/wish/scripts/RCS/text.tcl,v 1.2 92/07/16 16:26:33 ouster Exp $ SPRITE (Berkeley) # # Copyright 1992 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # # The procedure below is invoked when dragging one end of the selection. # The arguments are the text window name and the index of the character # that is to be the new end of the selection. proc tk_textSelectTo {w index} { global tk_priv case $tk_priv(selectMode) { char { if [$w compare $index < anchor] { set first $index set last anchor } else { set first anchor set last [$w index $index+1c] } } word { if [$w compare $index < anchor] { set first [$w index "$index wordstart"] set last [$w index "anchor wordend"] } else { set first [$w index "anchor wordstart"] set last [$w index "$index wordend"] } } line { if [$w compare $index < anchor] { set first [$w index "$index linestart"] set last [$w index "anchor lineend + 1c"] } else { set first [$w index "anchor linestart"] set last [$w index "$index lineend + 1c"] } } } $w tag remove sel 0.0 $first $w tag add sel $first $last $w tag remove sel $last end } # The procedure below is invoked to backspace over one character in # a text widget. The name of the widget is passed as argument. proc tk_textBackspace w { $w delete insert-1c insert } # The procedure below compares three indices, a, b, and c. Index b must # be less than c. The procedure returns 1 if a is closer to b than to c, # and 0 otherwise. The "w" argument is the name of the text widget in # which to do the comparison. proc tk_textIndexCloser {w a b c} { set a [$w index $a] set b [$w index $b] set c [$w index $c] if [$w compare $a <= $b] { return 1 } if [$w compare $a >= $c] { return 0 } scan $a "%d.%d" lineA chA scan $b "%d.%d" lineB chB scan $c "%d.%d" lineC chC if {$chC == 0} { incr lineC -1 set chC [string length [$w get $lineC.0 $lineC.end]] } if {$lineB != $lineC} { return [expr {($lineA-$lineB) < ($lineC-$lineA)}] } return [expr {($chA-$chB) < ($chC-$chA)}] } # The procedure below is called to reset the selection anchor to # whichever end is FARTHEST from the index argument. proc tk_textResetAnchor {w index} { global tk_priv if {[$w tag ranges sel] == ""} { set tk_priv(selectMode) char $w mark set anchor $index return } if [tk_textIndexCloser $w $index sel.first sel.last] { if {$tk_priv(selectMode) == "char"} { $w mark set anchor sel.last } else { $w mark set anchor sel.last-1c } } else { $w mark set anchor sel.first } } #@package: menu.tcl tk_menus tk_bindForTraversal tk_mbPost tk_mbUnpost tk_traverseToMenu tk_traverseWithinMenu tk_getMenuButtons tk_nextMenu tk_nextMenuEntry tk_invokeMenu tk_firstMenu # menu.tcl -- # # This file contains Tcl procedures used to manage Tk menus and # menubuttons. Most of the code here is dedicated to support for # menu traversal via the keyboard. # # $Header: /user6/ouster/wish/scripts/RCS/menu.tcl,v 1.11 92/08/08 14:49:55 ouster Exp $ SPRITE (Berkeley) # # Copyright 1992 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # # The procedure below is publically available. It is used to indicate # the menus associated with a particular top-level window, for purposes # of keyboard menu traversal. Its first argument is the path name of # a top-level window, and any additional arguments are the path names of # the menu buttons associated with that top-level window, in the order # they should be traversed. If no menu buttons are named, the procedure # returns the current list of menus for w. If a single empty string is # supplied, then the menu list for w is cancelled. Otherwise, tk_menus # sets the menu list for w to the menu buttons. proc tk_menus {w args} { global tk_priv if {$args == ""} { if [catch {set result [set tk_priv(menusFor$w)]}] { return "" } return $result } if {$args == "{}"} { catch {unset tk_priv(menusFor$w)} return "" } set tk_priv(menusFor$w) $args } # The procedure below is publically available. It takes any number of # arguments taht are names of widgets or classes. It sets up bindings # for the widgets or classes so that keyboard menu traversal is possible # when the input focus is in those widgets or classes. proc tk_bindForTraversal args { foreach w $args { bind $w {tk_traverseToMenu %W %A} bind $w {tk_firstMenu %W} } } # The procedure below does all of the work of posting a menu (including # unposting any other menu that might currently be posted). The "w" # argument is the name of the menubutton for the menu to be posted. # Note: if $w is disabled then the procedure does nothing. proc tk_mbPost {w} { global tk_priv tk_strictMotif if {[lindex [$w config -state] 4] == "disabled"} { return } set cur $tk_priv(posted) if {$cur == $w} { return } if {$cur != ""} tk_mbUnpost set tk_priv(relief) [lindex [$w config -relief] 4] $w config -relief raised set tk_priv(cursor) [lindex [$w config -cursor] 4] $w config -cursor arrow $w post grab -global $w set tk_priv(posted) $w if {$tk_priv(focus) == ""} { set tk_priv(focus) [focus] } set menu [lindex [$w config -menu] 4] set tk_priv(activeBg) [lindex [$menu config -activebackground] 4] set tk_priv(activeFg) [lindex [$menu config -activeforeground] 4] if $tk_strictMotif { $menu config -activebackground [lindex [$menu config -background] 4] $menu config -activeforeground [lindex [$menu config -foreground] 4] } focus $menu } # The procedure below does all the work of unposting the menubutton that's # currently posted. It takes no arguments. proc tk_mbUnpost {} { global tk_priv if {$tk_priv(posted) != ""} { $tk_priv(posted) config -relief $tk_priv(relief) $tk_priv(posted) config -cursor $tk_priv(cursor) $tk_priv(posted) config -activebackground $tk_priv(activeBg) $tk_priv(posted) config -activeforeground $tk_priv(activeFg) $tk_priv(posted) unpost grab none focus $tk_priv(focus) set tk_priv(focus) "" set menu [lindex [$tk_priv(posted) config -menu] 4] $menu config -activebackground $tk_priv(activeBg) $menu config -activeforeground $tk_priv(activeFg) set tk_priv(posted) {} } } # The procedure below is invoked to implement keyboard traversal to # a menu button. It takes two arguments: the name of a window where # a keystroke originated, and the ascii character that was typed. # This procedure finds a menu bar by looking upward for a top-level # window, then looking for a window underneath that named "menu". # Then it searches through all the subwindows of "menu" for a menubutton # with an underlined character matching char. If one is found, it # posts that menu. proc tk_traverseToMenu {w char} { global tk_priv if {$char == ""} { return } set char [string tolower $char] foreach mb [tk_getMenuButtons $w] { if {[winfo class $mb] == "Menubutton"} { set char2 [string index [lindex [$mb config -text] 4] \ [lindex [$mb config -underline] 4]] if {[string compare $char [string tolower $char2]] == 0} { tk_mbPost $mb [lindex [$mb config -menu] 4] activate 0 return } } } } # The procedure below is used to implement keyboard traversal within # the posted menu. It takes two arguments: the name of the menu to # be traversed within, and an ASCII character. It searches for an # entry in the menu that has that character underlined. If such an # entry is found, it is invoked and the menu is unposted. proc tk_traverseWithinMenu {w char} { if {$char == ""} { return } set char [string tolower $char] set last [$w index last] for {set i 0} {$i <= $last} {incr i} { if [catch {set char2 [string index \ [lindex [$w entryconfig $i -label] 4] \ [lindex [$w entryconfig $i -underline] 4]]}] { continue } if {[string compare $char [string tolower $char2]] == 0} { tk_mbUnpost $w invoke $i return } } } # The procedure below takes a single argument, which is the name of # a window. It returns a list containing path names for all of the # menu buttons associated with that window's top-level window, or an # empty list if there are none. proc tk_getMenuButtons w { global tk_priv set top [winfo toplevel $w] if [catch {set buttons [set tk_priv(menusFor$top)]}] { return "" } return $buttons } # The procedure below is used to traverse to the next or previous # menu in a menu bar. It takes one argument, which is a count of # how many menu buttons forward or backward (if negative) to move. # If there is no posted menu then this procedure has no effect. proc tk_nextMenu count { global tk_priv if {$tk_priv(posted) == ""} { return } set buttons [tk_getMenuButtons $tk_priv(posted)] set length [llength $buttons] for {set i 0} 1 {incr i} { if {$i >= $length} { return } if {[lindex $buttons $i] == $tk_priv(posted)} { break } } incr i $count while 1 { while {$i < 0} { incr i $length } while {$i >= $length} { incr i -$length } set mb [lindex $buttons $i] if {[lindex [$mb configure -state] 4] != "disabled"} { break } incr i $count } tk_mbUnpost tk_mbPost $mb [lindex [$mb config -menu] 4] activate 0 } # The procedure below is used to traverse to the next or previous entry # in the posted menu. It takes one argument, which is 1 to go to the # next entry or -1 to go to the previous entry. Disabled entries are # skipped in this process. proc tk_nextMenuEntry count { global tk_priv if {$tk_priv(posted) == ""} { return } set menu [lindex [$tk_priv(posted) config -menu] 4] set length [expr [$menu index last]+1] set i [$menu index active] if {$i == "none"} { set i 0 } else { incr i $count } while 1 { while {$i < 0} { incr i $length } while {$i >= $length} { incr i -$length } if {[catch {$menu entryconfigure $i -state} state] == 0} { if {[lindex $state 4] != "disabled"} { break } } incr i $count } $menu activate $i } # The procedure below invokes the active entry in the posted menu, # if there is one. Otherwise it does nothing. proc tk_invokeMenu {menu} { set i [$menu index active] if {$i != "none"} { tk_mbUnpost update idletasks $menu invoke $i } } # The procedure below is invoked to keyboard-traverse to the first # menu for a given source window. The source window is passed as # parameter. proc tk_firstMenu w { set mb [lindex [tk_getMenuButtons $w] 0] if {$mb != ""} { tk_mbPost $mb [lindex [$mb config -menu] 4] activate 0 } } # The procedure below is invoked when a button-1-down event is # received by a menu button. If the mouse is in the menu button # then it posts the button's menu. If the mouse isn't in the # button's menu, then it deactivates any active entry in the menu. # Remember, event-sharing can cause this procedure to be invoked # for two different menu buttons on the same event. proc tk_mbButtonDown w { global tk_priv if {[lindex [$w config -state] 4] == "disabled"} { return } if {$tk_priv(inMenuButton) == $w} { tk_mbPost $w } set menu [lindex [$tk_priv(posted) config -menu] 4] if {$tk_priv(window) != $menu} { $menu activate none } } #@package: entry.tcl tk_entryBackspace tk_entryBackword tk_entrySeeCaret # entry.tcl -- # # This file contains Tcl procedures used to manage Tk entries. # # $Header: /user6/ouster/wish/scripts/RCS/entry.tcl,v 1.2 92/05/23 16:40:57 ouster Exp $ SPRITE (Berkeley) # # Copyright 1992 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # # The procedure below is invoked to backspace over one character # in an entry widget. The name of the widget is passed as argument. proc tk_entryBackspace w { set x [expr {[$w index cursor] - 1}] if {$x != -1} {$w delete $x} } # The procedure below is invoked to backspace over one word in an # entry widget. The name of the widget is passed as argument. proc tk_entryBackword w { set string [$w get] set curs [expr [$w index cursor]-1] if {$curs < 0} return for {set x $curs} {$x > 0} {incr x -1} { if {([string first [string index $string $x] " \t"] < 0) && ([string first [string index $string [expr $x-1]] " \t"] >= 0)} { break } } $w delete $x $curs } # The procedure below is invoked after insertions. If the caret is not # visible in the window then the procedure adjusts the entry's view to # bring the caret back into the window again. proc tk_entrySeeCaret w { set c [$w index cursor] set left [$w index @0] if {$left > $c} { $w view $c return } while {[$w index @[expr [winfo width $w]-5]] < $c} { set left [expr $left+1] $w view $left } } micropolis-activity/res/sound.tcl0000664000076400007640000001340010724145723017456 0ustar simcitysimcity# Original TCL/X sound server support -- not used in OLPC Micropolis. # # Micropolis, Unix Version. This game was released for the Unix platform # in or about 1990 and has been modified for inclusion in the One Laptop # Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If # you need assistance with this program, you may contact: # http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or (at # your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. You should have received a # copy of the GNU General Public License along with this program. If # not, see . # # ADDITIONAL TERMS per GNU GPL Section 7 # # No trademark or publicity rights are granted. This license does NOT # give you any right, title or interest in the trademark SimCity or any # other Electronic Arts trademark. You may not distribute any # modification of this program using the trademark SimCity or claim any # affliation or association with Electronic Arts Inc. or its employees. # # Any propagation or conveyance of this program must include this # copyright notice and these terms. # # If you convey this program (or any modifications of it) and assume # contractual liability for the program to recipients of it, you agree # to indemnify Electronic Arts for any liability that those contractual # assumptions impose on Electronic Arts. # # You may not misrepresent the origins of this program; modified # versions of the program must be marked as such and not identified as # the original program. # # This disclaimer supplements the one included in the General Public # License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS # PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY # OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF # SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS # DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, # INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, # FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY # RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, # USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST # INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL # MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE # UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE # WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE # CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR # ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME # JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED # WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A # CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY # NOT APPLY TO YOU. global errorInfo set errorInfo {} global auto_noexec set auto_noexec 1 proc echo {args} { puts stdout $args flush stdout } source $tk_library/wish.tcl global ResourceDir set ResourceDir "" proc StartSound {resourcedir} { global ResourceDir set ResourceDir $resourcedir } proc KillSoundServer {} { catch "destroy ." echo Sound server exiting. exit } proc ConnectNewClient {mode f} { echo "ConnectNewClient mode $mode f $f" } set ChatSocket 8888 set ChatServer {} if {0} { catch { set ChatServer [accept $ChatSocket] } if {$ChatServer != {}} then { filehandler $ChatServer e "ConnectNewClient" } } set ResourceDir $tk_library sound file Rumble $ResourceDir/rumble.au sound file HeavyTraffic $ResourceDir/traffic.au sound file Siren $ResourceDir/siren.au sound file HonkHonk-Low $ResourceDir/honk-low.au sound file Monster $ResourceDir/monster.au sound file Explosion-High $ResourceDir/expl-hi.au sound file HonkHonk-High $ResourceDir/honk-hi.au sound file HonkHonk-Med $ResourceDir/honk-med.au sound file Explosion-Low $ResourceDir/expl-low.au sound file QuackQuack $ResourceDir/quack.au sound file Ignition $ResourceDir/ignition.au sound file Whip $ResourceDir/whip.au sound file Cuckoo $ResourceDir/cuckoo.au sound file Boing $ResourceDir/boing.au sound file Skid $ResourceDir/skid.au sound file Computer $ResourceDir/computer.au sound file Unix $ResourceDir/unix.au sound file Sorry $ResourceDir/sorry.au sound file UhUh $ResourceDir/uhuh.au sound file Woosh $ResourceDir/woosh.au sound file Aaah $ResourceDir/aaah.au sound file Oop $ResourceDir/oop.au sound file Beep $ResourceDir/beep.au sound file Bop $ResourceDir/bop.au sound file Zone $ResourceDir/zone.au sound file Build $ResourceDir/build.au sound file Res $ResourceDir/res.au sound file Com $ResourceDir/com.au sound file Ind $ResourceDir/ind.au sound file Fire $ResourceDir/fire.au sound file Query $ResourceDir/query.au sound file Police $ResourceDir/police.au sound file Wire $ResourceDir/wire.au sound file Bulldozer $ResourceDir/bulldoze.au sound file Rail $ResourceDir/rail.au sound file Road $ResourceDir/road.au sound file Chalk $ResourceDir/chalk.au sound file Eraser $ResourceDir/eraser.au sound file Stadium $ResourceDir/stadium.au sound file Park $ResourceDir/park.au sound file Seaport $ResourceDir/seaport.au sound file Coal $ResourceDir/coal.au sound file Nuclear $ResourceDir/nuclear.au sound file Airport $ResourceDir/airport.au sound file O $ResourceDir/o.au sound file A $ResourceDir/a.au sound file E $ResourceDir/e.au micropolis-activity/res/snro.6660000664000076400007640000006476010724145723017065 0ustar simcitysimcity  Qfvr}vML)rpnkheda``_^]\VQLHIHLNORSW\bfijnpy||ywusqputxz~}yxvromlifb^[WRRPPOOQSTUVWZ\^_`a^WWTPLKJFB@ABDr]Sz}[VPG]jaB$841Icl~tvmt{}rG?Xw^`B^eI:TS<<,#~yuusrpoqstz~zwvnlgdc^WSOMLNPR~~cZ|kxA.Ho}o{^yaPcMQH-a`````______`abcdegiiiiiihfdaZQE5)6H_}}}|{zyxwutsrpnnnnnnnnmlllkjjjihgggfeeeeeeeeeeeeeefffa`iHxnheit|weMAE;;07','+=4*&******************+,-....//////////////////////////.-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+++*))))))))*+++**.///,,,,),01333)$*,,/.../01111........0002--,,,,,..,,*((*++0+.]]]]]]]]]]]]ggggggggggggXXXXXXXXXXXXAAAAAAAAAAAA222222222222,,,,,,,,,,,,4444444444]gXA2,4FSnB>D]#>= r(`*f+B *BMapView X    2)^^HDh0$00#00$00#00#00$00#00#00$00#00#00#00#00#000"aaa0$00"0$00#000#000#000#00#0000%0!00%0%0%0%0!00%0%0%0%0 00%0%0000%0%0%0%00%00%0%0"0E0Caa00%000#000%0%0 0$000#000%0!00#00"000 0000%0!0$00#00#00!0000%0%00000%0%0%0!aaa00!00%0%000%0%0%0p`ppMpaaa00%0 000 00%0!0$0%0!00%0%00"0000%0%0000$0%0%0%0%0%0%0%0#0%0!00000%0%0aa0B00#000%0%0!00%0%0%0!pp0B0$0%0 00%000%0000%00000%0%0%000%0%0%0%0%0%000%000"00#00#000%0!aaa0B00#00%0%0!00%0%000%0%0%0ppp0B00 00%0!00%00#000%000!00%0%0%000%0%0%0%0 00 0000%0%0%0%0%00"00aVaYa\0B00%0%0%0%0%0"000 00%0%0%0!p`p0B00!00%0%0"00%0%0%0%000 0000%0%0%0%00$00"0C0D00000 00%0%0%0%0%0%0%0"aWZa]0B00%0%0%0%0%000%0%0%0p`0B00%0%0#00#00#000%0%0%0"00000 0$000!00%0%0%0!00#0%0%00F0C0C0C0C0D000000000aXa[a^0B0000000 00000 ppp0B000000000 000000 000000000000 00"qqq0F0C0C0D0E0C0C0C0C0C0CpN0L0C0C0C0I0C0C0C0C0D0E0CpN0C0L0C0C0C0I8S8S8S8Y0C0C0C0C0I0C0C0C0I0C0C0C0I0C0C0C0I0C0C0C0C0I0C0C0C0I0C0C0C0I0C0C0CAA0C0C0C0I0C00qd`pqq0B0000000p0000000000000000000p00000000000bbb0Bbdbgbj0Bbbb0Bbdbgbj0B0bbb0Bbbb0Bbbb0Bbbbbbb0B00!pq``d`0Ba)a,a/0Ba;a>aA0BaDaGaJ0Ba2a5a80Ba)a,a/00B0Bppp0B;H0*;H0Bppp0B0kbpMbehbkpMk~bpMbehbkpM0kbpMbbpMbcpMk|bPPbb0B00%0#00"ppqpMa*-a0pMaaA0Baaa0Bp`p0Ba;a>aA00Ba)a,a/0Bppp0Bbbb0Bccc0Bppp0B0bbb0Bbbb0BkYbpbs0Bbvbyb|0B0bbb0Bbvbyb|0B0000000p00%0%00#00#00Bpp0Bbc00BpppMaaA0Bppp00Bp`p0Ba)a,a/0Bppp0Bppp0Ba2a5a800Bppp0Bppp0Bppp0Bppp0Bppp0B0kXbpbs0Bbvbyb|0Bbbb0Bbbb0B0bbb0Bbbb0B0000P00#00%0%0!0BaaA0Bppp0Ba2a5a800Bppp0Baaa 0Baaa0Baaa0Baaa 0B0bdbgbj0Bbbb0B0+;I0(0Bk[bpbs0B0bbb0BP000 0BaapMp`ppMpppMa a pMaaA0Bbbb"0Bbbb"00B,..0Bbbb0Bbbb"0Baaa0Baaa0B0aa0Baa0BaapMaa0B 000 p00%0%0"`qq0Bb b#0Baa00Baa0Bpp8baaA8bbbb0Bbbb00Bb%b(b+0Bbbb"0Bbbb0Bqpp0Baaa0B0aapMaa0B00 bdbgbj0E0C0C0C0C0H0000!p00#00"/0BaappMa*-a0pM``pMaaA08ahakan8R0(;H0+0Bahakan0Ba)a,a/0B0(ppq0B 0$0%0!00%0%0%0%0#000%0#0%0%0%0%0%0!000%0!0$0p0Bbnqbtbnqbt0Bbb00Bbehbk0Bkb0Bbb0Bpp8RaaA0Baaa00%0!00!0$000000000%0%0%0p00%00Bbb0Bbwzb}ppMbehbk0Bbwzb}0Bbwzb}0Bpp0Ba*-a000BaEHaK0B;J0(;H0Bbc0BaaA00BaDaGaJ0Baaa 8aaa 0Ba_abae8R00%0%000000000 0000000000p000 00%0#0%0 0B0+bbbbb00Bk}b0Bbb0Bbb0B``0BaaA8Ra_abae0B 00%0%0%0%0%0 00 00%0%000#00#0000"00%0!p0B0(bbbbbb00Bbehbk0Bbehbk0Bbb0B``pMa36a900BaWZa]0BaaA8Ra;a>aA0B   0$00#00%0%0 00 0$0000%0%0%0%0!p0$0%0%0%0%0%000 0BbbpMbbppMbbpMbbpMbb0Bpp8Rpp00BaaA8Rahakan 0B00%0%0%0%0%0%0 0000%0%0%000%0%0%0#0000%0%0"p00%0 00"aapp0B``00Bbb0B0+0*0(8R``0B``8Ra*-a000Ba. # # ADDITIONAL TERMS per GNU GPL Section 7 # # No trademark or publicity rights are granted. This license does NOT # give you any right, title or interest in the trademark SimCity or any # other Electronic Arts trademark. You may not distribute any # modification of this program using the trademark SimCity or claim any # affliation or association with Electronic Arts Inc. or its employees. # # Any propagation or conveyance of this program must include this # copyright notice and these terms. # # If you convey this program (or any modifications of it) and assume # contractual liability for the program to recipients of it, you agree # to indemnify Electronic Arts for any liability that those contractual # assumptions impose on Electronic Arts. # # You may not misrepresent the origins of this program; modified # versions of the program must be marked as such and not identified as # the original program. # # This disclaimer supplements the one included in the General Public # License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS # PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY # OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF # SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS # DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, # INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, # FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY # RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, # USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST # INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL # MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE # UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE # WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE # CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR # ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME # JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED # WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A # CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY # NOT APPLY TO YOU. # global ScenarioWindows set n [Unique] set win .scenario$n LinkWindow $head.scenario $win LinkWindow $win.head $head LinkWindow $win.scenarioTarget -1 LinkWindow $win.scenarioTargetDown -1 catch "destroy $win" if {[catch "toplevel $win -screen $display"]} { puts stderr "Couldn't open X11 display \"$display\"." set win "" return "" } wm title $win "Micropolis Scenarios" wm iconname $win {Micropolis Scenarios} wm geometry $win 1200x900+0+0 wm withdraw $win wm protocol $win delete "DeleteScenarioWindow $win ;" wm fullscreen $win on set ScenarioWindows [linsert $ScenarioWindows 0 $win] SetHelp $win Scenario canvas $win.canvas \ -scrollincrement 0 \ -borderwidth 0 \ -background #000000 \ -width 1200 -height 900 LinkWindow $win.canvas $win.canvas LinkWindow $win.canvas.w $win $win.canvas create bitmap 0 0 \ -tags background \ -bitmap "@images/background-micropolis.xpm" \ -anchor nw $win.canvas bind background {HandleScenarioDown %W %x %y} $win.canvas bind background {HandleScenarioUp %W %x %y} $win.canvas bind background {HandleScenarioUp %W %x %y} $win.canvas bind background {HandleScenarioUp %W %x %y} $win.canvas bind background {HandleScenarioMove %W %x %y} $win.canvas bind background {HandleScenarioMove %W %x %y} $win.canvas bind background {HandleScenarioMove %W %x %y} $win.canvas bind background {HandleScenarioMove %W %x %y} global ScenarioButtons set i 0 set len [llength $ScenarioButtons] while {$i < $len} { set data [lindex $ScenarioButtons $i] set type [lindex $data 0] set id [lindex $data 1] set xx [lindex $data 5] set yy [lindex $data 6] set ww [lindex $data 7] set hh [lindex $data 8] $win.canvas create bitmap $xx $yy \ -tags $id \ -anchor nw $win.canvas bind $id {HandleScenarioDown %W %x %y} $win.canvas bind $id {HandleScenarioUp %W %x %y} $win.canvas bind $id {HandleScenarioUp %W %x %y} $win.canvas bind $id {HandleScenarioUp %W %x %y} $win.canvas bind $id {HandleScenarioMove %W %x %y} $win.canvas bind $id {HandleScenarioMove %W %x %y} $win.canvas bind $id {HandleScenarioMove %W %x %y} $win.canvas bind $id {HandleScenarioMove %W %x %y} set i [expr "$i + 1"] } mapview $win.canvas.view \ -font [Font $win Large] LinkWindow $win.view $win.canvas.view $win.canvas.view size [expr "[sim WorldX] * 3"] [expr "[sim WorldY] * 3"] # Hide the editor rectangles. $win.canvas.view ShowEditors 0 frame $win.canvas.name \ -borderwidth 2\ -relief flat SetHelp $win.name Scenario.Name label $win.canvas.name.namelabel \ -text {City Name:} \ -font [Font $win Text] entry $win.canvas.name.cityname \ -text {}\ -textvariable CityName \ -font [Font $win Text] \ -width 33 bind $win.canvas.name.cityname "DoEnterCityName $win" bind $win.canvas.name.cityname {focus %W} LinkWindow $win.cityname $win.canvas.name.cityname pack append $win.canvas.name \ $win.canvas.name.namelabel {left frame e}\ $win.canvas.name.cityname {left frame e} place $win.canvas -x 0 -y 0 place $win.canvas.view -x 534 -y 48 place $win.canvas.name -x 530 -y 0 InitScenario $win update idletasks micropolis-activity/res/parray.tcl0000664000076400007640000000175110724145723017632 0ustar simcitysimcity# parray: # Print the contents of a global array on stdout. # # $Header: /sprite/src/lib/tcl/scripts/RCS/parray.tcl,v 1.1 91/09/26 09:55:03 ouster Exp $ SPRITE (Berkeley) # # Copyright 1991 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # proc parray a { global $a set maxl 0 foreach name [lsort [array names $a]] { if {[string length $name] > $maxl} { set maxl [string length $name] } } set maxl [expr {$maxl + [string length $a] + 2}] foreach name [lsort [array names $a]] { set nameString [format %s(%s) $a $name] puts stdout [format "%-*s = %s" $maxl $nameString [set ${a}($name)]] } } micropolis-activity/res/entry.tcl0000664000076400007640000000410210724145723017466 0ustar simcitysimcity# entry.tcl -- # # This file contains Tcl procedures used to manage Tk entries. # # $Header: /user6/ouster/wish/scripts/RCS/entry.tcl,v 1.2 92/05/23 16:40:57 ouster Exp $ SPRITE (Berkeley) # # Copyright 1992 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # # The procedure below is invoked to backspace over one character # in an entry widget. The name of the widget is passed as argument. proc tk_entryBackspace w { set x [expr {[$w index cursor] - 1}] if {$x != -1} {$w delete $x} } # The procedure below is invoked to backspace over one word in an # entry widget. The name of the widget is passed as argument. proc tk_entryBackword w { set string [$w get] set curs [expr [$w index cursor]-1] if {$curs < 0} return for {set x $curs} {$x > 0} {incr x -1} { if {([string first [string index $string $x] " \t"] < 0) && ([string first [string index $string [expr $x-1]] " \t"] >= 0)} { break } } $w delete $x $curs } # The procedure below is invoked after insertions. If the caret is not # visible in the window then the procedure adjusts the entry's view to # bring the caret back into the window again. proc tk_entrySeeCaret w { set c [$w index cursor] set left [$w index @0] if {$left > $c} { $w view $c return } while {[$w index @[expr [winfo width $w]-5]] < $c} { set left [expr $left+1] $w view $left } } proc tk_entryCopyPress {w} { set sel "" catch {set sel [selection -window $w get]} $w insert cursor $sel tk_entrySeeCaret $w } proc tk_entryCutPress {w} { catch {$w delete sel.first sel.last} tk_entrySeeCaret $w } proc tk_entryDelLine {w} { $w delete 0 end } proc tk_entryDelPress {w} { tk_entryBackspace $w tk_entrySeeCaret $w } micropolis-activity/res/button.tcl0000664000076400007640000000505210724145723017645 0ustar simcitysimcity# button.tcl -- # # This file contains Tcl procedures used to manage Tk buttons. # # $Header: /user6/ouster/wish/scripts/RCS/button.tcl,v 1.7 92/07/28 15:41:13 ouster Exp $ SPRITE (Berkeley) # # Copyright 1992 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # # $tk_priv(window@$screen) keeps track of the button containing the mouse, # and $tk_priv(relief@$screen) saves the original relief of the button so # it can be restored when the mouse button is released. # The procedure below is invoked when the mouse pointer enters a # button widget. It records the button we're in and changes the # state of the button to active unless the button is disabled. proc tk_butEnter w { global tk_priv set screen [winfo screen $w] if {[lindex [$w config -state] 4] != "disabled"} { $w config -state active set tk_priv(window@$screen) $w } else { set tk_priv(window@$screen) "" } } # The procedure below is invoked when the mouse pointer leaves a # button widget. It changes the state of the button back to # inactive. proc tk_butLeave w { global tk_priv if {[lindex [$w config -state] 4] != "disabled"} { $w config -state normal } set screen [winfo screen $w] set tk_priv(window@$screen) "" } # The procedure below is invoked when the mouse button is pressed in # a button/radiobutton/checkbutton widget. It records information # (a) to indicate that the mouse is in the button, and # (b) to save the button's relief so it can be restored later. proc tk_butDown w { global tk_priv set screen [winfo screen $w] set tk_priv(relief@$screen) [lindex [$w config -relief] 4] if {[lindex [$w config -state] 4] != "disabled"} { $w config -relief sunken update idletasks } } # The procedure below is invoked when the mouse button is released # for a button/radiobutton/checkbutton widget. It restores the # button's relief and invokes the command as long as the mouse # hasn't left the button. proc tk_butUp w { global tk_priv set screen [winfo screen $w] $w config -relief $tk_priv(relief@$screen) update idletasks if {($w == $tk_priv(window@$screen)) && ([lindex [$w config -state] 4] != "disabled")} { uplevel #0 [list $w invoke] } } micropolis-activity/res/whelp.tcl0000664000076400007640000001134610724145723017454 0ustar simcitysimcity# Window: Help, for Unix Micropolis. # # Micropolis, Unix Version. This game was released for the Unix platform # in or about 1990 and has been modified for inclusion in the One Laptop # Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If # you need assistance with this program, you may contact: # http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or (at # your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. You should have received a # copy of the GNU General Public License along with this program. If # not, see . # # ADDITIONAL TERMS per GNU GPL Section 7 # # No trademark or publicity rights are granted. This license does NOT # give you any right, title or interest in the trademark SimCity or any # other Electronic Arts trademark. You may not distribute any # modification of this program using the trademark SimCity or claim any # affliation or association with Electronic Arts Inc. or its employees. # # Any propagation or conveyance of this program must include this # copyright notice and these terms. # # If you convey this program (or any modifications of it) and assume # contractual liability for the program to recipients of it, you agree # to indemnify Electronic Arts for any liability that those contractual # assumptions impose on Electronic Arts. # # You may not misrepresent the origins of this program; modified # versions of the program must be marked as such and not identified as # the original program. # # This disclaimer supplements the one included in the General Public # License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS # PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY # OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF # SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS # DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, # INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, # FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY # RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, # USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST # INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL # MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE # UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE # WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE # CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR # ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME # JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED # WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A # CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY # NOT APPLY TO YOU. global HelpWindows set n [Unique] set win .help$n set HelpWindows [linsert $HelpWindows 0 $win] LinkWindow $head.help $win LinkWindow $win.head $head catch "destroy $win" toplevel $win -screen $display SetHelp $win Help wm title $win {Micropolis Help} wm iconname $win {Micropolis Help} wm geometry $win 400x240+5+5 wm positionfrom $win user wm sizefrom $win user wm maxsize $win 700 700 wm minsize $win 100 100 wm protocol $win delete "DeleteWindow help HelpWindows" wm transient $win $head frame $win.top \ -relief raised \ -borderwidth 1 LinkWindow $win.background $win.top label $win.top.title \ -text {Help} \ -borderwidth 2 \ -relief raised \ -font [Font $win Big] LinkWindow $win.title $win.top.title SetHelp $win.top.title Help.Title scrollbar $win.top.scroll\ -command "$win.top.text yview" \ -borderwidth 1 SetHelp $win.top.scroll Help.Scrollbar text $win.top.text \ -yscroll "$win.top.scroll set" \ -borderwidth 2 \ -relief flat \ -wrap word \ -state disabled \ -font [Font $win Large] LinkWindow $win.text $win.top.text SetHelp $win.top.text Help.Text pack append $win.top\ $win.top.title {top frame center fillx} \ $win.top.scroll {left frame center filly} \ $win.top.text {right frame center expand fill} button $win.dismiss\ -font [Font $win Large]\ -text {Dismiss}\ -command "wm withdraw $win" SetHelp $win.dismiss Help.Dismiss pack append $win\ $win.dismiss {bottom frame center fillx}\ $win.top {left frame center expand fill} update idletasks micropolis-activity/res/wsplash.tcl0000664000076400007640000001005510724145723020012 0ustar simcitysimcity# Window: Splash Screen, for Unix Micropolis. # # Micropolis, Unix Version. This game was released for the Unix platform # in or about 1990 and has been modified for inclusion in the One Laptop # Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If # you need assistance with this program, you may contact: # http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or (at # your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. You should have received a # copy of the GNU General Public License along with this program. If # not, see . # # ADDITIONAL TERMS per GNU GPL Section 7 # # No trademark or publicity rights are granted. This license does NOT # give you any right, title or interest in the trademark SimCity or any # other Electronic Arts trademark. You may not distribute any # modification of this program using the trademark SimCity or claim any # affliation or association with Electronic Arts Inc. or its employees. # # Any propagation or conveyance of this program must include this # copyright notice and these terms. # # If you convey this program (or any modifications of it) and assume # contractual liability for the program to recipients of it, you agree # to indemnify Electronic Arts for any liability that those contractual # assumptions impose on Electronic Arts. # # You may not misrepresent the origins of this program; modified # versions of the program must be marked as such and not identified as # the original program. # # This disclaimer supplements the one included in the General Public # License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS # PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY # OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF # SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS # DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, # INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, # FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY # RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, # USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST # INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL # MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE # UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE # WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE # CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR # ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME # JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED # WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A # CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY # NOT APPLY TO YOU. # global SplashWindows set n [Unique] set win .splash$n LinkWindow $head.splash $win LinkWindow $win.head $head catch "destroy $win" if {[catch "toplevel $win -screen $display"]} { puts stderr "Couldn't open X11 display \"$display\"." set win "" return "" } wm title $win "Micropolis Splash Screen" wm iconname $win {Micropolis Splash Screen} wm geometry $win 1200x900+0+0 wm withdraw $win wm protocol $win delete "DeleteSplashWindow $win ;" wm fullscreen $win on set SplashWindows [linsert $SplashWindows 0 $win] SetHelp $win Splash global SplashPanelWidth global SplashPanelHeight set SplashPanelWidth 1200 set SplashPanelHeight 900 label $win.splashscreen \ -font [Font $win Medium] LinkWindow $win.splashscreen $win.splashscreen place $win.splashscreen -x 0 -y 0 InitSplash $win update idletasks micropolis-activity/res/init.tcl0000664000076400007640000001022010724145723017266 0ustar simcitysimcity# init.tcl -- # # Default system startup file for Tcl-based applications. Defines # "unknown" procedure and auto-load facilities. # # $Header: /user6/ouster/tcl/scripts/RCS/init.tcl,v 1.7 92/07/25 16:29:36 ouster Exp $ SPRITE (Berkeley) # # Copyright 1991-1992 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # # unknown: # Invoked when a Tcl command is invoked that doesn't exist in the # interpreter: # # 1. See if the autoload facility can locate the command in a # Tcl script file. If so, load it and execute it. # 2. See if the command exists as an executable UNIX program. # If so, "exec" the command. # 3. See if the command is a valid abbreviation for another command. # if so, invoke the command. However, only permit abbreviations # at top-level. proc unknown args { global auto_noexec auto_noload env unknown_active if [info exists unknown_active] { unset unknown_active error "unexpected recursion in \"unknown\" command" } set unknown_active 1 set name [lindex $args 0] if ![info exists auto_noload] { if [auto_load $name] { unset unknown_active return [uplevel $args] } } if ![info exists auto_noexec] { if [auto_execok $name] { unset unknown_active return [uplevel exec $args] } } if {([info level] == 1) && ([info script] == "")} { set cmds [info commands $name*] if {[llength $cmds] == 1} { unset unknown_active return [uplevel [lreplace $args 0 0 $cmds]] } if {[llength $cmds] != 0} { unset unknown_active if {$name == ""} { error "empty command name \"\"" } else { error "ambiguous command name \"$name\": [lsort $cmds]" } } } unset unknown_active error "invalid command name \"$name\"" } # auto_load: # Checks a collection of library directories to see if a procedure # is defined in one of them. If so, it sources the appropriate # library file to create the procedure. Returns 1 if it successfully # loaded the procedure, 0 otherwise. proc auto_load cmd { global auto_index auto_oldpath auto_path env if [info exists auto_index($cmd)] { uplevel #0 source $auto_index($cmd) return 1 } if [catch {set path $auto_path}] { if [catch {set path $env(TCLLIBPATH)}] { if [catch {set path [info library]}] { return 0 } } } if [info exists auto_oldpath] { if {$auto_oldpath == $path} { return 0 } } set auto_oldpath $path catch {unset auto_index} foreach dir $path { set f "" catch { set f [open $dir/tclindex] if {[gets $f] != "# Tcl autoload index file: each line identifies a Tcl"} { puts stdout "Bad id line in file $dir/tclindex" error done } while {[gets $f line] >= 0} { if {([string index $line 0] == "#") || ([llength $line] != 2)} { continue } set name [lindex $line 0] if {![info exists auto_index($name)]} { set auto_index($name) $dir/[lindex $line 1] } } } if {$f != ""} { close $f } } if [info exists auto_index($cmd)] { uplevel #0 source $auto_index($cmd) return 1 } return 0 } # auto_execok: # Returns 1 if there's an executable in the current path for the # given name, 0 otherwise. Builds an associative array auto_execs # that caches information about previous checks, for speed. proc auto_execok name { global auto_execs env if [info exists auto_execs($name)] { return $auto_execs($name) } set auto_execs($name) 0 foreach dir [split $env(PATH) :] { if {[file executable $dir/$name] && ![file isdirectory $dir/$name]} { set auto_execs($name) 1 return 1 } } return 0 } # auto_reset: # Destroy all cached information for auto-loading and auto-execution, # so that the information gets recomputed the next time it's needed. proc auto_reset {} { global auto_execs auto_index unset auto_execs auto_index } micropolis-activity/res/stri.3560000664000076400007640000000026610724145723017050 0ustar simcitysimcityResidential Zone Commercial Zone Industrial Zone Fire Station Query Police Station Wire Power Bulldozer Rail Road Chalk Eraser Stadium Park Seaport Coal Power Nuclear Power Airport micropolis-activity/res/hexa.3870000664000076400007640000001000010724145723017003 0ustar simcitysimcity     0     0   micropolis-activity/res/stri.2190000664000076400007640000000041610724145723017043 0ustar simcitysimcityClear Water Trees Rubble Flood Radioactive Waste Fire Road Power Rail Residential Commercial Industrial Seaport Airport Coal Power Fire Department Police Department Stadium Nuclear Power Draw Bridge Radar Dish Fountain Industrial Steelers 38 Bears 3 Draw Bridge Ur 238 micropolis-activity/res/hexa.9990000664000076400007640000006140010724145723017026 0ustar simcitysimcity        micropolis-activity/res/stri.2020000664000076400007640000000024310724145723017031 0ustar simcitysimcityLow Medium High Very High Slum Lower Class Middle Class High Safe Light Moderate Dangerous None Moderate Heavy Very Heavy Declining Stable Slow Growth Fast Growth micropolis-activity/res/help.tcl0000664000076400007640000002655710724145723017277 0ustar simcitysimcity# Help system, for Unix Micropolis. # # Micropolis, Unix Version. This game was released for the Unix platform # in or about 1990 and has been modified for inclusion in the One Laptop # Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If # you need assistance with this program, you may contact: # http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or (at # your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. You should have received a # copy of the GNU General Public License along with this program. If # not, see . # # ADDITIONAL TERMS per GNU GPL Section 7 # # No trademark or publicity rights are granted. This license does NOT # give you any right, title or interest in the trademark SimCity or any # other Electronic Arts trademark. You may not distribute any # modification of this program using the trademark SimCity or claim any # affliation or association with Electronic Arts Inc. or its employees. # # Any propagation or conveyance of this program must include this # copyright notice and these terms. # # If you convey this program (or any modifications of it) and assume # contractual liability for the program to recipients of it, you agree # to indemnify Electronic Arts for any liability that those contractual # assumptions impose on Electronic Arts. # # You may not misrepresent the origins of this program; modified # versions of the program must be marked as such and not identified as # the original program. # # This disclaimer supplements the one included in the General Public # License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS # PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY # OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF # SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS # DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, # INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, # FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY # RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, # USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST # INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL # MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE # UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE # WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE # CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR # ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME # JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED # WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A # CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY # NOT APPLY TO YOU. # Help messages to do: # MicropolisMenu # backstop help message Help Window {Micropolis Window} \ {This is one of Micropolis's windows. Press Help or Meta-Click on the other controls and graphics for more information about them. [More help to come in a later version! Sorry!]} # AskQuestion button help Help SelectCity.No {Keep Playing} \ {Press this button to keep playing with the current city simulation.} Help SelectCity.Yes {Another City} \ {Press this vote button to abandon this city and choose another one to play with.} Help Quit.No {Keep Playing Micropolis} \ {Press this button to continue playing this game of Micropolis.} Help Quit.IQuit {Really Quit Micropolis} \ {Press this button to quit playing this game of Micropolis.} Help Quit.IResign {Resign Micropolis} \ {Press this button to resign yourself from this game of Micropolis.} Help Quit.AllQuit {Everyone Quit Micropolis} \ {Press this vote button to quit Micropolis if everyone else agrees.} Help Plan.Veto {Veto Plan} \ {Press this button to veto the plan.} Help Plan.Goto {Goto Plan} \ {Press this button to scroll your editor window to the planned location.} Help Plan.Support {Support Plan} \ {Press this vote button to support the plan.} Help Disaster.Yes {Cause a Disaster} \ {Press this button to cause a disaster.} Help Disaster.No {Don't Cause a Disaster} \ {Press this button to avoid causing a disaster.} # head window help Help Head {Micropolis Controls Window} {} Help Head.MicropolisMenu {Micropolis Main Menu} {} Help Head.OptionsMenu {Options Menu} {} Help Head.DisastersMenu {Disasters Menu} {} Help Head.TimeMenu {Time Menu} {} Help Head.PriorityMenu {Priority Menu} {} Help Head.WindowsMenu {Windows Menu} {} Help Head.Date {Micropolis Date Display} {} Help Head.Funds {Micropolis Funds Display} {} Help Head.Graph {Res Com Ind History Graph} {} Help Head.Demand {Res Com Ind Demand Gauge} {} Help Head.Log {Scrolling Message Log} {} Help Head.Scrollbar {Message Log Scrollbar} {} Help Head.Chat {Chat Push Button} {} Help Head.Entry {Text Entry Field} {} # notice window help Help Notice {Micropolis Notice Window} {} Help Notice.Title {Notice Title} {} Help Notice.Text {Notice Text} {} Help Notice.Dismiss {Notice Dismiss Button} {} Help Notice.View {Notice Map View} {} # help window help Help Help {Micropolis Help Window} {} Help Help.Title {Help Title} {} Help Help.Scrollbar {Help Text Scrollbar} {} Help Help.Text {Help Text} {} Help Help.Dismiss {Help Dismiss Button} {} # frob window help Help Frob {Micropolis Frob-O-Matic Dynamic Zone Filter} {This bank of (min/max) interval sliders adjust the filters for the dynamic zone map view. The zones that do not pass through the filter are invisible, and the zones passing through all the filters are displayed, as you adjust the filter intervals.} Help Frob.Title {Frob Title} {} Help Frob.PopulationDensity {Frob Population Density} {Adjust the minimum and maximum Population Density to display in the dynamic map zone menu.} Help Frob.RateOfGrowth {Frob Rate Of Growth} {Adjust the minimum and maximum Rate Of Growth to display in the dynamic map zone menu.} Help Frob.TrafficDensity {Frob Traffic Density} {Adjust the minimum and maximum Traffic Density to display in the dynamic map zone menu.} Help Frob.PollutionRate {Frob Pollution Rate} {Adjust the minimum and maximum Pollution Rate to display in the dynamic map zone menu.} Help Frob.CrimeRate {Frob Crime Rate} {Adjust the minimum and maximum Crime Rate to display in the dynamic map zone menu.} Help Frob.LandValue {Frob Land Value} {Adjust the minimum and maximum Land Value to display in the dynamic map zone menu.} Help Frob.PoliceEffect {Frob Police Effect} {Adjust the minimum and maximum Police Effect to display in the dynamic map zone menu.} Help Frob.FireEffect {Frob Fire Effect} {Adjust the minimum and maximum Fire Effect to display in the dynamic map zone menu.} Help Frob.Dismiss {Frob Dismiss Button} {} # scenario window help Help Scenario {Micropolis Chooser Window} {} Help Scenario.NewCity {New City Button} {} Help Scenario.LoadCity {Load City Button} {} Help Scenario.Dullsville {Dullsville Scenario Button} {} Help Scenario.SanFran {San Francisco Scenario Button} {} Help Scenario.Hamburg {Hamburg Scenario Button} {} Help Scenario.Bern {Bern Scenario Button} {} Help Scenario.Tokyo {Tokyo Scenario Button} {} Help Scenario.Rio {Rio de Janeiro Scenario Button} {} Help Scenario.Boston {Boston Scenario Button} {} Help Scenario.Detroit {Detroit Scenario Button} {} Help Scenario.Previous {Previous Map Button} {} Help Scenario.Use {Use This Map Button} {} Help Scenario.Next {Next Map Button} {} Help Scenario.Name {City Name Entry Field} {} Help Scenario.Level {Game Level Buttons} {} # map window help Help Map {Micropolis Map Window} {} Help Map.View {Map View} {} Help Map.Zones {Map Zones Menu} {} Help Map.Overlays {Map Overlays Menu} {} # editor window help Help Editor {Micropolis Editor Window} {} Help Editor.Display {Editor Display Menu} {} Help Editor.Options {Editor Options Menu} {} Help Editor.Message {Editor Message Banner} {} Help Editor.View {Editor View} {} Help Editor.ToolPallet {Editor Tool Pallet} {} Help Editor.ToolName {Editor Tool Name} {} Help Editor.ToolCost {Editor Tool Cost} {} Help Editor.ToolRes {Residential Zone Tool Icon} {} Help Editor.ToolCom {Commercial Zone Tool Icon} {} Help Editor.ToolInd {Industrial Zone Tool Icon} {} Help Editor.ToolFire {Fire Station Tool Icon} {} Help Editor.ToolQuery {Query Tool Icon} {} Help Editor.ToolPolice {Police Station Tool Icon} {} Help Editor.ToolWire {Wire Tool Icon} {} Help Editor.ToolBulldozer {Bulldozer Tool Icon} {} Help Editor.ToolRail {Rail Tool Icon} {} Help Editor.ToolRoad {Road Tool Icon} {} Help Editor.ToolChalk {Chalk Tool Icon} {} Help Editor.ToolEraser {Eraser Tool Icon} {} Help Editor.ToolStadium {Stadium Tool Icon} {} Help Editor.ToolPark {Park Tool Icon} {} Help Editor.ToolSeaport {Seaport Tool Icon} {} Help Editor.ToolCoal {Coal Power Plant Tool Icon} {} Help Editor.ToolNuclear {Nuclear Power Plant Tool Icon} {} Help Editor.ToolAirport {Airport Tool Icon} {} Help Editor.ToolPie {Editor Tool Pie Menu} {} Help Editor.ZonePie {Editor Tool Zone Pie Menu} {} Help Editor.BuildPie {Editor Tool Build Pie Menu} {} # budget window help Help Budget {Micropolis Budget Window} {} Help Budget.Label {Paused to set the Budget} {} Help Budget.Collected {Taxes Collected} {} Help Budget.Flow {Cash Flow} {} Help Budget.Previous {Previous Funds} {} Help Budget.Current {Current Funds} {} Help Budget.Road {Road Fund} {} Help Budget.Fire {Fire Fund} {} Help Budget.Police {Police Fund} {} Help Budget.Tax {Tax Rate} {} Help Budget.Continue {Continue With These Figures} {} Help Budget.Reset {Reset to Original Figures} {} Help Budget.Cancel {Cancel Changes and Continue} {} Help Budget.AutoCancel {Automatic Cancel Timeout} {} # graph window help Help Graph {Micropolis Graph Window} {} Help Graph.10Years {Graph 10 Year Scale} {} Help Graph.120Years {Graph 120 Year Scale} {} Help Graph.Res {Graph Residential Toggle} {} Help Graph.Com {Graph Commercial Toggle} {} Help Graph.Ind {Graph Industrial Toggle} {} Help Graph.Money {Graph Cash Flow Toggle} {} Help Graph.Crime {Graph Crime Toggle} {} Help Graph.Pollution {Graph Pollution Toggle} {} Help Graph.View {Graph View} {} Help Graph.Dismiss {Dismiss Graph Window Button} {} # evaluation window help Help Evaluation {Micropolis Evaluation Window} {} Help Evaluation.Opinion {Public Opinion} {} Help Evaluation.GoodJob {Are You Doing a Good Job?} {} Help Evaluation.WorstProblems {Your Worst Problems} {} Help Evaluation.Statistics {Statistics} {} Help Evaluation.Score {Score} {} Help Evaluation.Dismiss {Dismiss Evaluation Window Button} {} # ask window help Help Ask {Micropolis Query Window} {} # add player window Help Player {Micropolis Player Window} {} Help Player.Players {Displays of Micropolis Players} {} Help Player.Display {Display of Player to Add} {} Help Player.Dismiss {Dismiss Player Window Button} {} # file window Help File {Micropolis File Chooser Window} {} Help File.List {List of File Names} {} Help File.Directory {Directory Name} {} Help File.File {File Name} {} Help File.OK {OK Button} {} Help File.Rescan {Rescan Directory} {} Help File.Cancel {Cancel File Chooser} {} micropolis-activity/res/snro.7770000664000076400007640000006476010724145723017070 0ustar simcitysimcity|ywha`ROIN?40>>24@8..*hjnsvz|ytsokptvw{~zurpmhfca`_]WQJEFGLNOTYZ_bff][VUQNOPPJFILNPRY[]eipstumg`\\XTQMJDCA@@BmF]LuCW`DdJJPNJ8<J::B+@(35(*-$1  }{}||zzz{{}zyusonkkloruu{~{xwrpmhg``cegizo`|jSktRkgjKMrY=;=O@&5/!!)(15%#*+!QJLOSXOC3lllllllllkjjjjjjjjjjjjjiihgfeeedccccccccccccccccccccccccccccccccccccdb_[VOC3__________^]\\\\\[[[[[[[[[\\\]^^^Ckjcccb_\\_[\]]\WWWOYY\\VQNNNKKIDDIKLOPSKKRSNMLLNLIJJ.-,*(%! ///////////////////////////////////////////////////////////////.--,+++*)('!,,-../011111111111111111111122222/////+.12211133111(/./////1100173331(522453222444688 .........////////////////////////____________````````````aaaaaaaaaaaaUUUUbbbbbbbbbbbbOOOOOOOOOOOOYYYYY//_`abOYaNTVXYSVHBGC:<7=7291./86!M$/34338889Xd$$ Q.=f1CNTLPICT"CURSMENUBPAT rSTR#WDEF k  =  J  (   0$00#00B0B00"0)0+;K0B0)0B0B0)0)00"0$0%000 0B00"0B00#000%0b%b(b+0B0*0Bppp```0B```0);J0C0D00%0%0"0$000!0B00ppp0B00%0%0000(b&)b,pMpPPPPPPpppMpp``ppM``0F0C0C0D0$00%0%0%0%0"00!00"00"0F0Dppppp0B00%0%0!00!0)b'b*b-0B 0)0Bppp```0B```pp`ppp0F0C0C0D000%0%0%0%0000000%0"0Bqp00"ppp0B00%0%000%00*p0);K0B 0*0F0I0C0C0CpN0C0C0H0*0+p`pp0F0C0Dppp00%0%0%0!00%00Bppp0$00%00E0CpN0C0H000000(aaa0+0B0(0Bpppaaa0B0+0+pppppp0F0C0Dpp000%00$00"00%00"0Bppp00%0%0!0Ba;a>aA0Bppp0$0%0 0*aa0E0G0)0Bppaa0F0I0C0C0C0CpN0C0I0C0C0C0F0Dpppaaa00 00000%00Bpp00%0%0ppp0BaaA8Raaa0B```0Bq`0E0G0)0E0Gpqp0+0+0Baaa0Baaa0Bp`p0$0   a;a>aA0BbbbpMbbb08Rbwzb}0Baaabbbbkbb0Bbxb{b~0Bkbb0E0C0C0C0Bppp0B=<bbb0Bbbb0Bbvbyb|0B```0Bpp0Bbb0Bk~bpMbwzb}0B``0Bppp0BOkvkzb0Bkbb0Bbxb{b~0B```0F0I0CpN0G  kTbpbs      0E0C0K0C0CpN0HbbbpM```0B``` 0Bbnqbtbbbk[bpbs bbb?>bbbb0Bbbb0Bbb0B``0B`` 0Bbobrbubbbnqbtk|b   @0E0CA0C0bbb0Bbb0Bbbb0B```0B``` 0F0C0C0Dbbbbobrbukbbbbb 0J0Gbbb,0-bbbb0Bkukyb0J0Cx^8S0Haaa0F0Daaa0F0C0I0CpN0C0C0C0C0I0CpN0C0Dbb  0E0Gk~b-0,0BbbbbbbbbpMppppppMbbb0Baa0Baaaaa bbbbbb0Bbbbbbb0BbbbpMbbb0E0C0Hkbb/0bdbgbj0BbbbP0BbbpMaaa0BaaaaapPPPPpppk}bbbpMbbbb0Bbb0Bbbb0E0G0F0C0C0CpN0D00behbk0BbbbbP8Rkukyb0Bp./0J0C0Daaakbbkkb0Bkkbbbb0Bktkxb0Bbb0Bcccbbb0J00DbfbiblppppMbbbbP0E0C8[x^0I0C0Hp,-0B0F0C0CpN8SQ8888x888S8[0C0I0CpN8S8Y0KpN0C0C0Hkkb0Bcc bb0B00Bbbb0BPP0Bbbb0B0Bbdbgbj0Baaaahakan8```80Bbbb8Rbbb0J0C0C0C0Hccc kkb0B00Bbcaaa0BPbbbb0Bkb0B0Bbehbk0F0Daaailao8R``8Rppp0BkbpMbb000//0F0C0C0C0IpN0C0C0H00Bbbcaa0BPbbb0Bkbb0B0Bbfbibl00"0Baaaajamap8R```8RpppMkbb0Bktkxb00B0,.0Bp0F00K0I0C0Daaa0Bpbbbb0Bp0B0F0CpN0C00%0"0Baaa 0$08Rppp8Rppp0Bbbb0J.,0B0000000000p0000.0B0F0CpN0C0K0Dbbbbbbbbp0Bbdbgbj00%00F0Da a 00  8Rpp8R```0Bkb0Bbbb0B``````0BaaaaaapMpppaaapMbbbp0Bbehbk00%0!0Baa a 8Rppp8R``0BkbbpMk|bppM````ppMaaaa0Bppaa0Bbbbbp0Bbfbibl00%00B8V8S8S8S8X```0Bppp0Bkbb0B``````-0Baaaaaa0Bpppaaa0Bbbbbp0B000F0D0$00JpN0C0C0Hpp0J0C0C0C0C0H```/0E0C0C0K0CpN0C0C0I0C0K0CpN0C0C0I0C0GPp0B0F0D0000" qpppMp`ppMppp0Bbbb0B``0B,```aaa0B```ppp0BP bbbb0B0B00 qp``0BppppMbb0B```0B-``aapM``pp0BP  bbb0B0Bqpq```0Bpp0Bktkxb0E0K0C0C0C0C0H,```aaa0B```ppp0BP  bbbb0Bppp0Bppp0B0E0C0G0F0C0CpN0C0C0C0C0K0C0C0CpN0C0C0Gp     bbbb0B0$0 pp0Bp0J0C0Gbbbbbbc ccc00#0p    pbbbbbb00%0 ppp0Bp0E0Gbbbbbc cc00%0%0!pppbfbbbb00%0%0 0J0IpN0G bbbbbc ccc00%0%0bbbbppppbbbbb00%0! 0$00"0B-c+c/c3c7pppbbbbbbcccc00bjb0$0bbbbbb00 0$0%0%00E0Gc,0kc8bbbbbb˔˜bb00%00"bbbbbb0$0%0%00E0C0Gc-c1c5c9bbbbbbppppppppp˘ˠbb000%0%0#00"bbbbbb  0000 0Bc.c2c6c:00000micropolis-activity/res/wish.tcl0000664000076400007640000000160510724145723017304 0ustar simcitysimcity# wish.tcl -- # # This script is invoked by the "wish" program whenever it starts up. # It invokes initialization scripts for Tcl and Tk, then does a few # wish-specific things like setting the window geometry, if one was # specified. # # $Header: /user6/ouster/wish/scripts/RCS/wish.tcl,v 1.1 92/03/06 09:40:56 ouster Exp $ SPRITE (Berkeley) # # Copyright 1992 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # source [info library]/init.tcl source $tk_library/tk.tcl if [info exists geometry] { wm geometry . $geometry } micropolis-activity/res/wplayer.tcl0000664000076400007640000001364410724145723020023 0ustar simcitysimcity# Window: Player, for Unix Micropolis. # # Micropolis, Unix Version. This game was released for the Unix platform # in or about 1990 and has been modified for inclusion in the One Laptop # Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If # you need assistance with this program, you may contact: # http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or (at # your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. You should have received a # copy of the GNU General Public License along with this program. If # not, see . # # ADDITIONAL TERMS per GNU GPL Section 7 # # No trademark or publicity rights are granted. This license does NOT # give you any right, title or interest in the trademark SimCity or any # other Electronic Arts trademark. You may not distribute any # modification of this program using the trademark SimCity or claim any # affliation or association with Electronic Arts Inc. or its employees. # # Any propagation or conveyance of this program must include this # copyright notice and these terms. # # If you convey this program (or any modifications of it) and assume # contractual liability for the program to recipients of it, you agree # to indemnify Electronic Arts for any liability that those contractual # assumptions impose on Electronic Arts. # # You may not misrepresent the origins of this program; modified # versions of the program must be marked as such and not identified as # the original program. # # This disclaimer supplements the one included in the General Public # License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS # PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY # OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF # SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS # DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, # INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, # FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY # RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, # USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST # INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL # MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE # UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE # WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE # CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR # ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME # JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED # WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A # CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY # NOT APPLY TO YOU. # global PlayerWindows set n [Unique] set win .player$n set PlayerWindows [linsert $PlayerWindows 0 $win] LinkWindow $head.player $win LinkWindow $win.head $head catch "destroy $win" toplevel $win -screen $display SetHelp $win Player wm title $win {Micropolis Players} wm iconname $win {Micropolis Players} wm geometry $win 400x250+5+5 wm positionfrom $win user wm sizefrom $win user wm maxsize $win 700 700 wm minsize $win 100 100 wm protocol $win delete "DeleteWindow player PlayerWindows" wm transient $win $head frame $win.top \ -relief raised \ -borderwidth 1 LinkWindow $win.background $win.top label $win.top.label \ -text "X11 Servers of Micropolis Players" \ -font [Font $win Large] text $win.top.text \ -borderwidth 2 \ -relief flat \ -wrap word \ -state normal \ -height 4 \ -font [Font $win Medium] LinkWindow $win.text $win.top.text $win.top.text delete 0.0 end $win.top.text insert end {\ Micropolis is connected to the X11 servers listed above. To add another player to the game, enter their display name. If you don't have a "Multi Player" license, you can just \ add more players on your own display, by entering ":0".} $win.top.text configure -state disabled frame $win.top.f \ -relief flat \ -borderwidth 1 SetHelp $win.top.f Player.Display button $win.top.f.add \ -text "Add Player on X11 Display:" \ -borderwidth 1 \ -font [Font $win Large] \ -command "DoNewPlayer $win" entry $win.top.f.display \ -relief sunken \ -font [Font $win Large] \ -text "" bind $win.top.f.display "DoNewPlayer $win" bind $win.top.f.display {focus %W} LinkWindow $win.display $win.top.f.display pack append $win.top.f \ $win.top.f.add {left frame nw padx 4} \ $win.top.f.display {left frame nw expand fillx padx 4} frame $win.top.g \ -relief flat \ -borderwidth 1 SetHelp $win.top.g Player.Players scrollbar $win.top.g.scroll \ -borderwidth 1 \ -command "$win.top.g.list yview" listbox $win.top.g.list \ -relief sunken \ -borderwidth 1 \ -font [Font $win Large] \ -yscroll "$win.top.g.scroll set" LinkWindow $win.players $win.top.g.list pack append $win.top.g \ $win.top.g.scroll {left filly frame e} \ $win.top.g.list {right expand fill frame w} pack append $win.top \ $win.top.label {top frame center fillx} \ $win.top.g {top frame center expand fill} \ $win.top.text {top frame center fill} \ $win.top.f {top frame center fillx} button $win.dismiss\ -font [Font $win Large]\ -borderwidth 1 \ -text {Dismiss}\ -command "wm withdraw $win" SetHelp $win.dismiss Player.Dismiss pack append $win\ $win.top {top frame center expand fill} \ $win.dismiss {bottom frame center fillx} UpdatePlayers update idletasks micropolis-activity/res/tk.tcl0000664000076400007640000001513710724145723016755 0ustar simcitysimcity# tk.tcl -- # # Initialization script normally executed in the interpreter for each # Tk-based application. Arranges class bindings for widgets. # # $Header: /user6/ouster/wish/scripts/RCS/tk.tcl,v 1.19 92/08/08 14:50:08 ouster Exp $ SPRITE (Berkeley) # # Copyright 1992 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # Insist on running with a compatible version of Tcl. if "[info tclversion] != {6.4}" { error "wrong version of Tcl loaded ([info tclversion]): need 6.4" } # Initialize the auto-load path to include Tk's directory as well as # Tcl's directory: set auto_path "$tk_library [info library]" # ---------------------------------------------------------------------- # Class bindings for various flavors of button widgets. # ---------------------------------------------------------------------- bind Button {tk_butEnter %W} bind Button {tk_butLeave %W} bind Button <1> {tk_butDown %W} bind Button {tk_butUp %W} bind Button <2> {tk_butDown %W} bind Button {tk_butUp %W} bind Button <3> {tk_butDown %W} bind Button {tk_butUp %W} bind CheckButton {tk_butEnter %W} bind CheckButton {tk_butLeave %W} bind CheckButton <1> {tk_butDown %W} bind CheckButton {tk_butUp %W} bind CheckButton <2> {tk_butDown %W} bind CheckButton {tk_butUp %W} bind CheckButton <3> {tk_butDown %W} bind CheckButton {tk_butUp %W} bind RadioButton {tk_butEnter %W} bind RadioButton {tk_butLeave %W} bind RadioButton <1> {tk_butDown %W} bind RadioButton {tk_butUp %W} bind RadioButton <2> {tk_butDown %W} bind RadioButton {tk_butUp %W} bind RadioButton <3> {tk_butDown %W} bind RadioButton {tk_butUp %W} # ---------------------------------------------------------------------- # Class bindings for entry widgets. # ---------------------------------------------------------------------- bind Entry <1> { %W cursor @%x %W select from @%x if {[lindex [%W config -state] 4] == "normal"} {focus %W} } bind Entry {%W select to @%x} bind Entry {%W select adjust @%x} bind Entry {%W select to @%x} bind Entry <2> {%W scan mark %x} bind Entry {%W scan dragto %x} bind Entry { tk_entryCutPress %W if {"%A" != ""} { %W insert cursor %A tk_entrySeeCaret %W } } bind Entry {tk_entryDelPress %W} bind Entry {tk_entryDelPress %W} bind Entry {tk_entryDelPress %W} bind Entry {tk_entryCutPress %W} bind Entry {tk_entryDelLine %W} bind Entry {tk_entryCutPress %W} bind Entry {tk_entryCopyPress %W} bind Entry {tk_entryCopyPress %W} bind Entry {tk_entryBackword %W; tk_entrySeeCaret %W} tk_bindForTraversal Entry # ---------------------------------------------------------------------- # Class bindings for listbox widgets. # ---------------------------------------------------------------------- bind Listbox <1> {%W select from [%W nearest %y]} bind Listbox {%W select to [%W nearest %y]} bind Listbox {%W select adjust [%W nearest %y]} bind Listbox {%W select to [%W nearest %y]} bind Listbox <2> {%W scan mark %x %y} bind Listbox {%W scan dragto %x %y} bind Listbox <3> {%W select from [%W nearest %y]} bind Listbox {%W select to [%W nearest %y]} bind Listbox {%W select adjust [%W nearest %y]} bind Listbox {%W select to [%W nearest %y]} # ---------------------------------------------------------------------- # Class bindings for scrollbar widgets. # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # Class bindings for scale widgets. # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # Class bindings for menubutton widgets. # ---------------------------------------------------------------------- bind Menubutton {tk_mbButtonEnter %W %m} bind Menubutton {tk_mbButtonLeave %W} bind Menubutton <1> {tk_mbButtonDown %W %X %Y} bind Menubutton {tk_mbButtonUp %W %X %Y} bind Menubutton {tk_mbButton1Enter %W %m} bind Menubutton <2> {tk_mbButtonDown %W %X %Y} bind Menubutton {tk_mbButtonUp %W %X %Y} bind Menubutton <3> {tk_mbButtonDown %W %X %Y} bind Menubutton {tk_mbButtonUp %W %X %Y} # ---------------------------------------------------------------------- # Class bindings for menu widgets. # ---------------------------------------------------------------------- bind Menu {tk_menuEnter %W %y} bind Menu {tk_menuLeave %W} bind Menu {tk_menuMotion %W %y} bind Menu {tk_menuUp %W %y} bind Menu {tk_menuUp %W %y} bind Menu {tk_menuUp %W %y} bind Menu {tk_mbUnpost %W} bind Menu {tk_traverseWithinMenu %W %A} bind Menu {tk_nextMenu %W -1} bind Menu {tk_nextMenu %W 1} bind Menu {tk_nextMenuEntry %W -1} bind Menu {tk_nextMenuEntry %W 1} bind Menu {tk_invokeMenu %W} # ---------------------------------------------------------------------- # Class bindings for text widgets. # ---------------------------------------------------------------------- #bind Text <1> {tk_textDown %W %x %y} #bind Text {tk_textDoubleDown %W %x %y} #bind Text {tk_textTripleDown %W %x %y} #bind Text {tk_textSelectTo %W %x %y} #bind Text {tk_textAdjustTo %W %x %y} #bind Text {tk_textSelectTo %W %x %y} bind Text <2> {%W scan mark %y} bind Text {%W scan dragto %y} bind Text {tk_textKeyPress %W %A} bind Text {tk_textReturnPress %W} bind Text {tk_textDelPress %W} bind Text {tk_textDelPress %W} bind Text {tk_textDelPress %W} bind Text {tk_textCutPress %W} bind Text {tk_textCopyPress %W} tk_bindForTraversal Text # Initialize the elements of tk_priv that require initialization. micropolis-activity/res/tcl.tdx0000664000076400007640000000121710724145723017130 0ustar simcitysimcityTclX-ArrayProcedures 48 407 for_array_keys TclX-assign_fields 500 148 assign_fields TclX-developer_utils 699 804 saveprocs edprocs TclX-forfile 1537 167 for_file TclX-forrecur 1749 356 for_recursive_glob TclX-globrecur 2147 330 recursive_glob TclX-help 2527 4828 help helpcd helppwd apropos TclX-packages 7400 950 packages autoprocs TclX-directory_stack 8399 574 pushd popd dirs TclX-set_functions 9039 2020 union intersect intersect3 lrmdups TclX-show_procedures 11111 603 showproc showprocs TclX-stringfile_functions 11773 363 read_file write_file TclX-Compatibility 12174 59 execvp TclX-convertlib 12273 933 convert_lib TclX-profrep 13239 3168 profrep micropolis-activity/res/tcl.tlb0000664000076400007640000004003010724145723017106 0ustar simcitysimcity #@package: TclX-ArrayProcedures for_array_keys proc for_array_keys {varName arrayName codeFragment} { upvar $varName enumVar $arrayName enumArray if ![info exists enumArray] { error "\"$arrayName\" isn't an array" } set searchId [array startsearch enumArray] while {[array anymore enumArray $searchId]} { set enumVar [array nextelement enumArray $searchId] uplevel $codeFragment } array donesearch enumArray $searchId } #@package: TclX-assign_fields assign_fields proc assign_fields {list args} { foreach varName $args { set value [lvarpop list] uplevel "set $varName [list $value]" } } #@package: TclX-developer_utils saveprocs edprocs proc saveprocs {fileName args} { set fp [open $fileName w] puts $fp "# tcl procs saved on [fmtclock [getclock]]\n" puts $fp [eval "showprocs $args"] close $fp } proc edprocs {args} { global env set tmpFilename /tmp/tcldev.[id process] set fp [open $tmpFilename w] puts $fp "\n# TEMP EDIT BUFFER -- YOUR CHANGES ARE FOR THIS SESSION ONLY\n" puts $fp [eval "showprocs $args"] close $fp if [info exists env(EDITOR)] { set editor $env(EDITOR) } else { set editor vi } set startMtime [file mtime $tmpFilename] system "$editor $tmpFilename" if {[file mtime $tmpFilename] != $startMtime} { source $tmpFilename echo "Procedures were reloaded." } else { echo "No changes were made." } unlink $tmpFilename return } #@package: TclX-forfile for_file proc for_file {var filename code} { upvar $var line set fp [open $filename r] while {[gets $fp line] >= 0} { uplevel $code } close $fp } #@package: TclX-forrecur for_recursive_glob proc for_recursive_glob {var globlist code {depth 1}} { upvar $depth $var myVar foreach globpat $globlist { foreach file [glob -nocomplain $globpat] { if [file isdirectory $file] { for_recursive_glob $var $file/* $code [expr {$depth + 1}] } set myVar $file uplevel $depth $code } } } #@package: TclX-globrecur recursive_glob proc recursive_glob {globlist} { set result "" foreach pattern $globlist { foreach file [glob -nocomplain $pattern] { lappend result $file if [file isdirectory $file] { set result [concat $result [recursive_glob $file/*]] } } } return $result } #@package: TclX-help help helpcd helppwd apropos proc help:flattenPath {pathName} { set newPath {} foreach element [split $pathName /] { if {"$element" == "."} { continue } if {"$element" == ".."} { if {[llength [join $newPath /]] == 0} { error "Help: name goes above subject directory root"} lvarpop newPath [expr [llength $newPath]-1] continue } lappend newPath $element } set newPath [join $newPath /] if {("$newPath" == "") && [string match "/*" $pathName]} { set newPath "/"} return $newPath } proc help:EvalPath {pathName} { global TCLENV if {![string match "/*" $pathName]} { if {"$pathName" == ""} { return $TCLENV(help:curDir)} if {"$TCLENV(help:curDir)" == "/"} { set pathName "/$pathName" } else { set pathName "$TCLENV(help:curDir)/$pathName" } } set pathName [help:flattenPath $pathName] if {[string match "*/" $pathName] && ($pathName != "/")} { set pathName [csubstr $pathName 0 [expr [length $pathName]-1]]} return $pathName } proc help:Display {line} { global TCLENV if {$TCLENV(help:lineCnt) >= 23} { set TCLENV(help:lineCnt) 0 puts stdout ":" nonewline flush stdout gets stdin response if {![lempty $response]} { return 0} } puts stdout $line incr TCLENV(help:lineCnt) } proc help:DisplayFile {filepath} { set inFH [open $filepath r] while {[gets $inFH fileBuf] >= 0} { if {![help:Display $fileBuf]} { break} } close $inFH } proc help:ListDir {dirPath} { set dirList {} set fileList {} if {[catch {set dirFiles [glob $dirPath/*]}] != 0} { error "No files in subject directory: $dirPath"} foreach fileName $dirFiles { if [file isdirectory $fileName] { lappend dirList "[file tail $fileName]/" } else { lappend fileList [file tail $fileName] } } return [list [lsort $dirList] [lsort $fileList]] } proc help:DisplayColumns {nameList} { set count 0 set outLine "" foreach name $nameList { if {$count == 0} { append outLine " "} append outLine $name if {[incr count] < 4} { set padLen [expr 17-[clength $name]] if {$padLen < 3} { set padLen 3} append outLine [replicate " " $padLen] } else { if {![help:Display $outLine]} { return} set outLine "" set count 0 } } if {$count != 0} { help:Display $outLine} return } proc help {{subject {}}} { global TCLENV set TCLENV(help:lineCnt) 0 if {($subject == "help") || ($subject == "?")} { help:DisplayFile "$TCLENV(help:root)/help" return } set request [help:EvalPath $subject] set requestPath "$TCLENV(help:root)$request" if {![file exists $requestPath]} { error "Help:\"$request\" does not exist"} if [file isdirectory $requestPath] { set dirList [help:ListDir $requestPath] set subList [lindex $dirList 0] set fileList [lindex $dirList 1] if {[llength $subList] != 0} { help:Display "\nSubjects available in $request:" help:DisplayColumns $subList } if {[llength $fileList] != 0} { help:Display "\nHelp files available in $request:" help:DisplayColumns $fileList } } else { help:DisplayFile $requestPath } return } proc helpcd {{dir /}} { global TCLENV set request [help:EvalPath $dir] set requestPath "$TCLENV(help:root)$request" if {![file exists $requestPath]} { error "Helpcd: \"$request\" does not exist"} if {![file isdirectory $requestPath]} { error "Helpcd: \"$request\" is not a directory"} set TCLENV(help:curDir) $request return } proc helppwd {} { global TCLENV echo "Current help subject directory: $TCLENV(help:curDir)" } proc apropos {name} { global TCLENV set TCLENV(help:lineCnt) 0 set aproposCT [scancontext create] scanmatch -nocase $aproposCT $name { set path [lindex $matchInfo(line) 0] set desc [lrange $matchInfo(line) 1 end] if {![help:Display [format "%s - %s" $path $desc]]} { return} } foreach brief [glob -nocomplain $TCLENV(help:root)/*.brf] { set briefFH [open $brief] scanfile $aproposCT $briefFH close $briefFH } scancontext delete $aproposCT } global TCLENV TCLPATH set TCLENV(help:root) [searchpath $TCLPATH help] set TCLENV(help:curDir) "/" set TCLENV(help:outBuf) {} #@package: TclX-packages packages autoprocs proc packages {{option {}}} { global TCLENV set packList {} foreach key [array names TCLENV] { if {[string match "PKG:*" $key]} { lappend packList [string range $key 4 end] } } if [lempty $option] { return $packList } else { if {$option != "-location"} { error "Unknow option \"$option\", expected \"-location\"" } set locList {} foreach pack $packList { set fileId [lindex $TCLENV(PKG:$pack) 0] lappend locList [list $pack [concat $TCLENV($fileId) \ [lrange $TCLENV(PKG:$pack) 1 2]]] } return $locList } } proc autoprocs {} { global TCLENV set procList {} foreach key [array names TCLENV] { if {[string match "PROC:*" $key]} { lappend procList [string range $key 5 end] } } return $procList } #@package: TclX-directory_stack pushd popd dirs global TCLENV(dirPushList) set TCLENV(dirPushList) "" proc pushd {args} { global TCLENV if {[llength $args] > 1} { error "bad # args: pushd [dir_to_cd_to]" } set TCLENV(dirPushList) [linsert $TCLENV(dirPushList) 0 [pwd]] if {[llength $args] != 0} { cd [glob $args] } } proc popd {} { global TCLENV if [llength $TCLENV(dirPushList)] { cd [lvarpop TCLENV(dirPushList)] pwd } else { error "directory stack empty" } } proc dirs {} { global TCLENV echo [pwd] $TCLENV(dirPushList) } #@package: TclX-set_functions union intersect intersect3 lrmdups proc union {lista listb} { set full_list [lsort [concat $lista $listb]] set check_element [lindex $full_list 0] set outlist $check_element foreach element [lrange $full_list 1 end] { if {$check_element == $element} continue lappend outlist $element set check_element $element } return $outlist } proc lrmdups {list} { set list [lsort $list] set result [lvarpop list] lappend last $result foreach element $list { if {$last != $element} { lappend result $element set last $element } } return $result } proc intersect3 {list1 list2} { set list1Result "" set list2Result "" set intersectList "" set list1 [lrmdups $list1] set list2 [lrmdups $list2] while {1} { if [lempty $list1] { if ![lempty $list2] { set list2Result [concat $list2Result $list2] } break } if [lempty $list2] { set list1Result [concat $list1Result $list1] break } set compareResult [string compare [lindex $list1 0] [lindex $list2 0]] if {$compareResult < 0} { lappend list1Result [lvarpop list1] continue } if {$compareResult > 0} { lappend list2Result [lvarpop list2] continue } lappend intersectList [lvarpop list1] lvarpop list2 } return [list $list1Result $intersectList $list2Result] } proc intersect {list1 list2} { set intersectList "" set list1 [lsort $list1] set list2 [lsort $list2] while {1} { if {[lempty $list1] || [lempty $list2]} break set compareResult [string compare [lindex $list1 0] [lindex $list2 0]] if {$compareResult < 0} { lvarpop list1 continue } if {$compareResult > 0} { lvarpop list2 continue } lappend intersectList [lvarpop list1] lvarpop list2 } return $intersectList } #@package: TclX-show_procedures showproc showprocs proc showproc {procname} { if [lempty [info procs $procname]] {demand_load $procname} set arglist [info args $procname] set nargs {} while {[llength $arglist] > 0} { set varg [lvarpop arglist 0] if [info default $procname $varg defarg] { lappend nargs [list $varg $defarg] } else { lappend nargs $varg } } format "proc %s \{%s\} \{%s\}\n" $procname $nargs [info body $procname] } proc showprocs {args} { if [lempty $args] { set args [info procs] } set out "" foreach i $args { foreach j $i { append out [showproc $j] "\n"} } return $out } #@package: TclX-stringfile_functions read_file write_file proc read_file {fileName {numBytes {}}} { set fp [open $fileName] if {$numBytes != ""} { set result [read $fp $numBytes] } else { set result [read $fp] } close $fp return $result } proc write_file {fileName args} { set fp [open $fileName w] foreach string $args { puts $fp $string } close $fp } #@package: TclX-Compatibility execvp proc execvp {progname args} { execl $progname $args } #@package: TclX-convertlib convert_lib proc convert_lib {tclIndex packageLib {ignore {}}} { if {[file tail $tclIndex] != "tclIndex"} { error "Tail file name numt be `tclIndex': $tclIndex"} set srcDir [file dirname $tclIndex] if {[file extension $packageLib] != ".tlib"} { append packageLib ".tlib"} set tclIndexFH [open $tclIndex r] while {[gets $tclIndexFH line] >= 0} { if {([cindex $line 0] == "#") || ([llength $line] != 2)} { continue} if {[lsearch $ignore [lindex $line 1]] >= 0} { continue} lappend entryTable([lindex $line 1]) [lindex $line 0] } close $tclIndexFH set libFH [open $packageLib w] foreach srcFile [array names entryTable] { set srcFH [open $srcDir/$srcFile r] puts $libFH "#@package: $srcFile $entryTable($srcFile)\n" copyfile $srcFH $libFH close $srcFH } close $libFH buildpackageindex $packageLib } #@package: TclX-profrep profrep proc profrep:summarize {profDataVar stackDepth sumProfDataVar} { upvar $profDataVar profData $sumProfDataVar sumProfData if {(![info exists profData]) || ([catch {array size profData}] != 0)} { error "`profDataVar' must be the name of an array returned by the `profile off' command" } set maxNameLen 0 foreach procStack [array names profData] { if {[llength $procStack] < $stackDepth} { set sigProcStack $procStack } else { set sigProcStack [lrange $procStack 0 [expr {$stackDepth - 1}]] } set maxNameLen [max $maxNameLen [clength $sigProcStack]] if [info exists sumProfData($sigProcStack)] { set cur $sumProfData($sigProcStack) set add $profData($procStack) set new [expr [lindex $cur 0]+[lindex $add 0]] lappend new [expr [lindex $cur 1]+[lindex $add 1]] lappend new [expr [lindex $cur 2]+[lindex $add 2]] set $sumProfData($sigProcStack) $new } else { set sumProfData($sigProcStack) $profData($procStack) } } return $maxNameLen } proc profrep:sort {sumProfDataVar sortKey} { upvar $sumProfDataVar sumProfData case $sortKey { {calls} {set keyIndex 0} {real} {set keyIndex 1} {cpu} {set keyIndex 2} default { error "Expected a sort of: `calls', `cpu' or ` real'"} } foreach procStack [array names sumProfData] { set key [format "%016d" [lindex $sumProfData($procStack) $keyIndex]] lappend keyProcList [list $key $procStack] } set keyProcList [lsort $keyProcList] for {set idx [expr [llength $keyProcList]-1]} {$idx >= 0} {incr idx -1} { lappend sortedProcList [lindex [lindex $keyProcList $idx] 1] } return $sortedProcList } proc profrep:print {sumProfDataVar sortedProcList maxNameLen outFile userTitle} { upvar $sumProfDataVar sumProfData if {$outFile == ""} { set outFH stdout } else { set outFH [open $outFile w] } set stackTitle "Procedure Call Stack" set maxNameLen [max $maxNameLen [clength $stackTitle]] set hdr [format "%-${maxNameLen}s %10s %10s %10s" $stackTitle \ "Calls" "Real Time" "CPU Time"] if {$userTitle != ""} { puts $outFH [replicate - [clength $hdr]] puts $outFH $userTitle } puts $outFH [replicate - [clength $hdr]] puts $outFH $hdr puts $outFH [replicate - [clength $hdr]] foreach procStack $sortedProcList { set data $sumProfData($procStack) puts $outFH [format "%-${maxNameLen}s %10d %10d %10d" $procStack \ [lindex $data 0] [lindex $data 1] [lindex $data 2]] } if {$outFile != ""} { close $outFH } } proc profrep {profDataVar sortKey stackDepth {outFile {}} {userTitle {}}} { upvar $profDataVar profData set maxNameLen [profrep:summarize profData $stackDepth sumProfData] set sortedProcList [profrep:sort sumProfData $sortKey] profrep:print sumProfData $sortedProcList $maxNameLen $outFile $userTitle } micropolis-activity/res/wscen_older.tcl0000664000076400007640000002750210724145723020642 0ustar simcitysimcity# Window: Scenarios, for Unix Micropolis. # # Micropolis, Unix Version. This game was released for the Unix platform # in or about 1990 and has been modified for inclusion in the One Laptop # Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If # you need assistance with this program, you may contact: # http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or (at # your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. You should have received a # copy of the GNU General Public License along with this program. If # not, see . # # ADDITIONAL TERMS per GNU GPL Section 7 # # No trademark or publicity rights are granted. This license does NOT # give you any right, title or interest in the trademark SimCity or any # other Electronic Arts trademark. You may not distribute any # modification of this program using the trademark SimCity or claim any # affliation or association with Electronic Arts Inc. or its employees. # # Any propagation or conveyance of this program must include this # copyright notice and these terms. # # If you convey this program (or any modifications of it) and assume # contractual liability for the program to recipients of it, you agree # to indemnify Electronic Arts for any liability that those contractual # assumptions impose on Electronic Arts. # # You may not misrepresent the origins of this program; modified # versions of the program must be marked as such and not identified as # the original program. # # This disclaimer supplements the one included in the General Public # License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS # PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY # OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF # SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS # DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, # INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, # FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY # RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, # USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST # INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL # MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE # UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE # WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE # CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR # ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME # JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED # WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A # CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY # NOT APPLY TO YOU. # global ScenarioWindows set n [Unique] set parent [WindowLink $head.col2] set win $parent.scenario$n set ScenarioWindows [linsert $ScenarioWindows 0 $win] global ScenarioPanelWidth global ScenarioPanelHeight LinkWindow $head.scenario $win LinkWindow $win.head $head LinkWindow $win.parent $parent catch "destroy $win" frame $win \ -width $ScenarioPanelWidth \ -height $ScenarioPanelHeight SetHelp $win Scenario frame $win.scen\ -borderwidth 0 -geometry 100x280 label $win.scen.micropolis\ -bitmap "@images/micropolisl.xpm" \ -font [Font $win Medium] button $win.scen.newcity\ -command "UIGenerateNewCity" \ -relief flat \ -borderwidth 0 \ -bitmap "@images/scncty.xpm" \ -font [Font $win Medium] SetHelp $win.scen.newcity Scenario.NewCity button $win.scen.loadcity\ -command "UILoadCity $head" \ -relief flat \ -borderwidth 0 \ -bitmap "@images/sclcty.xpm" \ -font [Font $win Medium] SetHelp $win.scen.loadcity Scenario.LoadCity button $win.scen.dullsville\ -command {UILoadScenario 1} \ -relief flat \ -borderwidth 0 \ -bitmap "@images/scdull.xpm" \ -font [Font $win Medium] SetHelp $win.scen.dullsville Scenario.Dullsville button $win.scen.sanfrancisco\ -command {UILoadScenario 2} \ -relief flat \ -borderwidth 0 \ -bitmap "@images/scsfo.xpm" \ -font [Font $win Medium] SetHelp $win.scen.sanfrancisco Scenario.SanFran button $win.scen.hamburg\ -command {UILoadScenario 3} \ -relief flat \ -borderwidth 0 \ -bitmap "@images/scham.xpm" \ -font [Font $win Medium] SetHelp $win.scen.hamburg Scenario.Hamburg button $win.scen.bern\ -command {UILoadScenario 4} \ -relief flat \ -borderwidth 0 \ -bitmap "@images/scbern.xpm" \ -font [Font $win Medium] SetHelp $win.scen.bern Scenario.Bern button $win.scen.tokyo\ -command {UILoadScenario 5} \ -relief flat \ -borderwidth 0 \ -bitmap "@images/sctkyo.xpm" \ -font [Font $win Medium] SetHelp $win.scen.tokyo Scenario.Tokyo button $win.scen.rio\ -command {UILoadScenario 8} \ -relief flat \ -borderwidth 0 \ -bitmap "@images/scrio.xpm" \ -font [Font $win Medium] SetHelp $win.scen.rio Scenario.Rio button $win.scen.boston\ -command {UILoadScenario 7} \ -relief flat \ -borderwidth 0 \ -bitmap "@images/scbos.xpm" \ -font [Font $win Medium] SetHelp $win.scen.boston Scenario.Boston button $win.scen.detroit\ -command {UILoadScenario 6} \ -relief flat \ -borderwidth 0 \ -bitmap "@images/scdet.xpm" \ -font [Font $win Medium] SetHelp $win.scen.detroit Scenario.Detroit message $win.scen.labeldullville\ -aspect 1500\ -font [Font $win Small] \ -justify center \ -text {Dullsville 1900 Boredom} SetHelp $win.scen.labeldullville Scenario.Dullsville message $win.scen.labelsanfrancisco\ -aspect 1500\ -font [Font $win Small] \ -justify center \ -text {San Francisco 1906 Earthquake} SetHelp $win.scen.labelsanfrancisco Scenario.SanFran message $win.scen.labelhamburg\ -aspect 1500\ -font [Font $win Small] \ -justify center \ -text {Hamburg 1944 Bombing} SetHelp $win.scen.labelhamburg Scenario.Hamburg message $win.scen.labelbern\ -aspect 1500\ -font [Font $win Small] \ -justify center \ -text {Bern 1965 Traffic} SetHelp $win.scen.labelbern Scenario.Bern message $win.scen.labeltokyo\ -aspect 1500\ -font [Font $win Small] \ -justify center \ -text {Tokyo 1957 Monster Attack} SetHelp $win.scen.labeltokyo Scenario.Tokyo message $win.scen.labelrio\ -aspect 1500\ -font [Font $win Small] \ -justify center \ -text {Rio de Janeiro 2047 Coastal Flooding} SetHelp $win.scen.labelrio Scenario.Rio message $win.scen.labelboston\ -aspect 1500\ -font [Font $win Small] \ -justify center \ -text {Boston 2010 Nuclear Meltdown} SetHelp $win.scen.labelboston Scenario.Boston message $win.scen.labeldetroit\ -aspect 1500\ -font [Font $win Small] \ -justify center \ -text {Detroit 1972 Crime} SetHelp $win.scen.labeldetroit Scenario.Detroit 4lace $win.scen.micropolis -anchor n -x 205 -y 25 place $win.scen.newcity -x 20 -y 10 place $win.scen.loadcity -x 320 -y 10 place $win.scen.dullsville -x 20 -y 80 place $win.scen.sanfrancisco -x 120 -y 80 place $win.scen.hamburg -x 220 -y 80 place $win.scen.bern -x 320 -y 80 place $win.scen.tokyo -x 20 -y 180 place $win.scen.rio -x 120 -y 180 place $win.scen.boston -x 220 -y 180 place $win.scen.detroit -x 320 -y 180 place $win.scen.labeldullville -anchor n -x 54 -y 140 place $win.scen.labelsanfrancisco -anchor n -x 154 -y 140 place $win.scen.labelhamburg -anchor n -x 254 -y 140 place $win.scen.labelbern -anchor n -x 354 -y 140 place $win.scen.labeltokyo -anchor n -x 54 -y 240 place $win.scen.labelrio -anchor n -x 154 -y 240 place $win.scen.labelboston -anchor n -x 254 -y 240 place $win.scen.labeldetroit -anchor n -x 354 -y 240 BindSimButton $win.scen.newcity BindSimButton $win.scen.loadcity BindSimButton $win.scen.dullsville BindSimButton $win.scen.sanfrancisco BindSimButton $win.scen.hamburg BindSimButton $win.scen.bern BindSimButton $win.scen.tokyo BindSimButton $win.scen.rio BindSimButton $win.scen.boston BindSimButton $win.scen.detroit frame $win.name \ -borderwidth 2\ -relief flat SetHelp $win.name Scenario.Name label $win.name.namelabel \ -text {City Name:} \ -font [Font $win Text] entry $win.name.cityname \ -text {}\ -textvariable CityName \ -font [Font $win Text] \ -width 50 bind $win.name.cityname "DoEnterCityName $win" bind $win.name.cityname {focus %W} LinkWindow $win.cityname $win.name.cityname pack append $win.name \ $win.name.namelabel {left frame e}\ $win.name.cityname {left frame e} frame $win.level \ -borderwidth 2\ -relief flat SetHelp $win.level Scenario.Level label $win.level.levellabel \ -text {Game Level:} \ -font [Font $win Text] frame $win.level.radio \ -borderwidth 0\ -relief flat radiobutton $win.level.radio.easy \ -text "Easy" -variable GameLevel -value 0 \ -command "DoSetGameLevel 0" \ -font [Font $win Large] radiobutton $win.level.radio.medium \ -text "Medium" -variable GameLevel -value 1 \ -command "DoSetGameLevel 1" \ -font [Font $win Large] radiobutton $win.level.radio.hard \ -text "Hard" -variable GameLevel -value 2 \ -command "DoSetGameLevel 2" \ -font [Font $win Large] pack append $win.level.radio \ $win.level.radio.easy {top frame e expand fillx}\ $win.level.radio.medium {top frame e expand fillx}\ $win.level.radio.hard {top frame e expand fillx} frame $win.level.label \ -borderwidth 0\ -relief flat label $win.level.label.easylabel \ -text {Initial Funds: $20,000} \ -font [Font $win Large] \ -anchor w label $win.level.label.mediumlabel \ -text {Initial Funds: $10,000} \ -font [Font $win Large] \ -anchor w label $win.level.label.hardlabel \ -text {Initial Funds: $5,000} \ -font [Font $win Large] \ -anchor w pack append $win.level.label \ $win.level.label.easylabel {top frame e expand fillx} \ $win.level.label.mediumlabel {top frame e expand fillx} \ $win.level.label.hardlabel {top frame e expand fillx} pack append $win.level \ $win.level.levellabel {left frame ne} \ $win.level.radio {left frame ne} \ $win.level.label {left frame ne expand fillx} frame $win.buttons \ -borderwidth 0\ -relief flat -borderwidth 2 button $win.buttons.previous \ -text {Previous Map}\ -font [Font $win Large]\ -command "PrevHistory"\ -relief raised \ -width 20 LinkWindow $win.previous $win.buttons.previous SetHelp $win.buttons.previous Scenario.Previous frame $win.buttons.voteframe \ -borderwidth 0 \ -relief raised LinkWindow $win.voteframe $win.buttons.voteframe SetHelp $win.buttons.voteframe Scenario.Use button $win.buttons.voteframe.vote \ -font [Font $win Large]\ -text { Use This Map }\ -command "DoVote $win UseThisMap UIUseThisMap {}"\ -relief raised \ -borderwidth 1\ -width 20 LinkWindow $win.vote $win.buttons.voteframe.vote pack append $win.buttons.voteframe\ $win.buttons.voteframe.vote {top frame center} BindVotingButton $win $win.buttons.voteframe.vote UseThisMap button $win.buttons.next \ -font [Font $win Large]\ -text {Next Map}\ -command "NextHistory"\ -width 20 LinkWindow $win.next $win.buttons.next SetHelp $win.buttons.next Scenario.Next pack append $win.buttons\ $win.buttons.previous {left frame nw}\ $win.buttons.voteframe {left frame nw}\ $win.buttons.next {left frame nw} pack append $win\ $win.scen {top frame center fillx}\ $win.buttons {top frame center fillx}\ $win.name {top frame center fillx}\ $win.level {top frame center fillx}\ #place configure $win -x 0 -y 0 -width $ScenarioPanelWidth -height $ScenarioPanelHeight InitScenario $win update idletasks micropolis-activity/res/hexa.4560000664000076400007640000004400010724145723017007 0ustar simcitysimcity?뾿????P??P? P??P?PP??/P?/P?/P?P??P???/?/P?/???P?P???PPPPPPP뻾P ˻ܻ0 ˻ ܻ̿P/ 0/PP0 /PP0P/0P/0 /00P00뻻PP00PPPPPPPPPPPPPPPPPP"/"/˻˻˻˻˻˻P33333333333333PPPPPPPPPPPPPPPPPP/=?"P?PP?/P/P? P?P P?Pܻ?˻̻?˻P??뻿??PPPPPP???P??P??P?/?/PPP?/??P?P???/P?/?/P????? PP?????P?_뾿?PPPPP̻P ˻Pܻ˻ܿ/P"0P0/P0 /0 P 0 0P0P뻻00P뻿0PPPPPPPPPPPP  //˻뻼""˻˻뻻˻ ˻˻뻼˻??0P333333333333330PPPPPPPPPPP뻾PPPPP?PSP?PP/?P??/P?P?ܿ?˿ܻPP?˻?P뻿PPPPPPPPmicropolis-activity/res/wbudget.tcl0000664000076400007640000003166510726101113017767 0ustar simcitysimcity# Window: Budget, for Unix Micropolis # # Micropolis, Unix Version. This game was released for the Unix platform # in or about 1990 and has been modified for inclusion in the One Laptop # Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If # you need assistance with this program, you may contact: # http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or (at # your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. You should have received a # copy of the GNU General Public License along with this program. If # not, see . # # ADDITIONAL TERMS per GNU GPL Section 7 # # No trademark or publicity rights are granted. This license does NOT # give you any right, title or interest in the trademark SimCity or any # other Electronic Arts trademark. You may not distribute any # modification of this program using the trademark SimCity or claim any # affliation or association with Electronic Arts Inc. or its employees. # # Any propagation or conveyance of this program must include this # copyright notice and these terms. # # If you convey this program (or any modifications of it) and assume # contractual liability for the program to recipients of it, you agree # to indemnify Electronic Arts for any liability that those contractual # assumptions impose on Electronic Arts. # # You may not misrepresent the origins of this program; modified # versions of the program must be marked as such and not identified as # the original program. # # This disclaimer supplements the one included in the General Public # License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS # PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY # OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF # SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS # DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, # INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, # FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY # RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, # USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST # INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL # MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE # UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE # WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE # CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR # ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME # JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED # WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A # CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY # NOT APPLY TO YOU. global BudgetWindows set n [Unique] set win .budget$n set BudgetWindows [linsert $BudgetWindows 0 $win] LinkWindow $head.budget $win LinkWindow $win.head $head catch "destroy $win" toplevel $win -screen $display SetHelp $win Budget global [set var $win.visible] set $var 0 wm title $win {Micropolis Budget} wm iconname $win {Micropolis Budget} wm group $win $head wm geometry $win 600x600+5+5 wm positionfrom $win user wm maxsize $win 700 700 wm minsize $win 150 200 wm protocol $win delete "BudgetCancel" wm transient $win $head label $win.label\ -borderwidth 1\ -relief raised\ -font [Font $win Large]\ -text {Micropolis has paused to set the budget...} SetHelp $win.label Budget.Label frame $win.rightframe\ -borderwidth 0 frame $win.rightframe.roadframe\ -borderwidth 1\ -relief raised SetHelp $win.rightframe.roadframe Budget.Road label $win.rightframe.roadframe.label\ -relief flat\ -font [Font $win Large]\ -text { Road Fund } frame $win.rightframe.roadframe.frame\ -borderwidth 2\ -relief flat LinkWindow $win.road $win.rightframe.roadframe.frame label $win.rightframe.roadframe.frame.request\ -relief flat\ -font [Font $win Medium]\ -text {100% of $0 = $0} scale $win.rightframe.roadframe.frame.fund\ -command {BudgetSetRoadFund}\ -font [Font $win Medium]\ -orient horizontal\ -showvalue false\ -sliderlength 15\ -to 100\ -width 10 pack append $win.rightframe.roadframe.frame\ $win.rightframe.roadframe.frame.fund {top frame center expand fill} \ $win.rightframe.roadframe.frame.request {top frame center expand fill} pack append $win.rightframe.roadframe\ $win.rightframe.roadframe.label {top frame center fillx} \ $win.rightframe.roadframe.frame {top frame center expand fill} frame $win.rightframe.fireframe\ -borderwidth 1\ -relief raised SetHelp $win.rightframe.fireframe Budget.Fire label $win.rightframe.fireframe.label\ -font [Font $win Large]\ -relief flat\ -text {Fire Fund} frame $win.rightframe.fireframe.frame\ -borderwidth 2\ -relief flat LinkWindow $win.fire $win.rightframe.fireframe.frame label $win.rightframe.fireframe.frame.request\ -relief flat\ -font [Font $win Medium]\ -text {100% of $0 = $0} scale $win.rightframe.fireframe.frame.fund\ -command {BudgetSetFireFund}\ -font [Font $win Medium]\ -orient horizontal\ -showvalue false\ -sliderlength 15\ -to 100\ -width 10 pack append $win.rightframe.fireframe.frame\ $win.rightframe.fireframe.frame.fund {top frame center expand fill} \ $win.rightframe.fireframe.frame.request {top frame center expand fill} pack append $win.rightframe.fireframe\ $win.rightframe.fireframe.label {top frame center fillx} \ $win.rightframe.fireframe.frame {top frame center expand fill} frame $win.rightframe.policeframe\ -borderwidth 1\ -relief raised SetHelp $win.rightframe.policeframe Budget.Police label $win.rightframe.policeframe.label\ -relief flat\ -font [Font $win Large]\ -text {Police Fund} frame $win.rightframe.policeframe.frame\ -borderwidth 2\ -relief flat LinkWindow $win.police $win.rightframe.policeframe.frame label $win.rightframe.policeframe.frame.request\ -relief flat\ -font [Font $win Medium]\ -text {100% of $0 = $0} scale $win.rightframe.policeframe.frame.fund\ -command {BudgetSetPoliceFund}\ -font [Font $win Medium]\ -orient horizontal\ -showvalue false\ -sliderlength 15\ -to 100\ -width 10 pack append $win.rightframe.policeframe.frame\ $win.rightframe.policeframe.frame.fund {top frame center expand fill}\ $win.rightframe.policeframe.frame.request {top frame center expand fill} pack append $win.rightframe.policeframe\ $win.rightframe.policeframe.label {top frame center fillx} \ $win.rightframe.policeframe.frame {top frame center expand fill} frame $win.rightframe.taxrateframe\ -borderwidth 1\ -relief raised SetHelp $win.rightframe.taxrateframe Budget.Tax label $win.rightframe.taxrateframe.label\ -relief flat\ -font [Font $win Large]\ -text {Tax Rate} frame $win.rightframe.taxrateframe.frame\ -borderwidth 2\ -relief flat label $win.rightframe.taxrateframe.frame.rate\ -relief flat\ -font [Font $win Medium]\ -text {7%} LinkWindow $win.taxlabel $win.rightframe.taxrateframe.frame.rate scale $win.rightframe.taxrateframe.frame.scale\ -command {BudgetSetTaxRate}\ -font [Font $win Medium]\ -orient horizontal\ -showvalue false\ -sliderlength 15\ -to 20\ -width 10 LinkWindow $win.taxrate $win.rightframe.taxrateframe.frame.scale pack append $win.rightframe.taxrateframe.frame\ $win.rightframe.taxrateframe.frame.scale {top frame center expand fill}\ $win.rightframe.taxrateframe.frame.rate {top frame center expand fill} pack append $win.rightframe.taxrateframe\ $win.rightframe.taxrateframe.label {top frame center fillx} \ $win.rightframe.taxrateframe.frame {top frame center expand fill} pack append $win.rightframe\ $win.rightframe.roadframe {top frame center expand fill} \ $win.rightframe.fireframe {top frame center expand fill} \ $win.rightframe.policeframe {top frame center expand fill} \ $win.rightframe.taxrateframe {top frame center expand fill} frame $win.leftframe\ -borderwidth 0 frame $win.leftframe.collectedframe\ -borderwidth 1\ -relief raised SetHelp $win.leftframe.collectedframe Budget.Collected label $win.leftframe.collectedframe.label\ -relief flat\ -font [Font $win Large]\ -text {Taxes Collected} label $win.leftframe.collectedframe.value\ -relief flat\ -font [Font $win Medium]\ -text {$0} LinkWindow $win.collected $win.leftframe.collectedframe.value pack append $win.leftframe.collectedframe\ $win.leftframe.collectedframe.label {top frame center fillx} \ $win.leftframe.collectedframe.value {top frame center expand fill} frame $win.leftframe.cashflowframe\ -borderwidth 1\ -relief raised LinkWindow $win.cashflow $win.leftframe.cashflowframe.value SetHelp $win.leftframe.cashflowframe Budget.Flow label $win.leftframe.cashflowframe.label\ -relief flat\ -font [Font $win Large]\ -text {Cash Flow} label $win.leftframe.cashflowframe.value\ -relief flat\ -font [Font $win Medium]\ -text {+$0} pack append $win.leftframe.cashflowframe\ $win.leftframe.cashflowframe.label {top frame center fillx} \ $win.leftframe.cashflowframe.value {top frame center expand fill} frame $win.leftframe.previousframe\ -borderwidth 1\ -relief raised LinkWindow $win.previous $win.leftframe.previousframe.value SetHelp $win.leftframe.previousframe Budget.Previous label $win.leftframe.previousframe.label\ -relief flat\ -font [Font $win Large]\ -text {Previous Funds} label $win.leftframe.previousframe.value\ -relief flat\ -font [Font $win Medium]\ -text {$0} pack append $win.leftframe.previousframe\ $win.leftframe.previousframe.label {top frame center fillx} \ $win.leftframe.previousframe.value {top frame center expand fill} frame $win.leftframe.currentframe\ -borderwidth 1\ -relief raised LinkWindow $win.current $win.leftframe.currentframe.value SetHelp $win.leftframe.currentframe Budget.Current label $win.leftframe.currentframe.label\ -relief flat\ -font [Font $win Large]\ -text {Current Funds} label $win.leftframe.currentframe.value\ -relief flat\ -font [Font $win Medium]\ -text {$0} pack append $win.leftframe.currentframe\ $win.leftframe.currentframe.label {top frame center fillx} \ $win.leftframe.currentframe.value {top frame center expand fill} pack append $win.leftframe\ $win.leftframe.collectedframe {top frame center expand fill} \ $win.leftframe.cashflowframe {top frame center expand fill} \ $win.leftframe.previousframe {top frame center expand fill} \ $win.leftframe.currentframe {top frame center expand fill} frame $win.bottomframe\ -borderwidth 0 frame $win.bottomframe.voteframe \ -borderwidth 0 \ -relief raised LinkWindow $win.voteframe $win.bottomframe.voteframe button $win.bottomframe.voteframe.continue\ -text {Continue With These Figures}\ -font [Font $win Large]\ -relief raised \ -command "DoVote $win Budget BudgetContinue {}" LinkWindow $win.vote $win.bottomframe.voteframe.continue SetHelp $win.bottomframe.voteframe Budget.Continue pack append $win.bottomframe.voteframe\ $win.bottomframe.voteframe.continue {top frame center fillx} BindVotingButton $win $win.bottomframe.voteframe.continue Budget button $win.bottomframe.reset\ -text {Reset to Original Figures}\ -font [Font $win Large]\ -command "BudgetReset" SetHelp $win.bottomframe.reset Budget.Reset button $win.bottomframe.cancel\ -text {Cancel Changes and Continue}\ -font [Font $win Large]\ -command "BudgetCancel" SetHelp $win.bottomframe.cancel Budget.Cancel button $win.bottomframe.timer\ -text {Timeout in 0 seconds ...}\ -font [Font $win Large]\ -command "ToggleBudgetTimer" LinkWindow $win.timer $win.bottomframe.timer SetHelp $win.bottomframe.timer Budget.AutoCancel button $win.bottomframe.autobudget\ -text {Enable Auto Budget}\ -font [Font $win Large]\ -command "ToggleAutoBudget" LinkWindow $win.autobudget $win.bottomframe.autobudget SetHelp $win.bottomframe.autobudget Budget.AutoBudget pack append $win.bottomframe\ $win.bottomframe.voteframe {top frame center expand fillx}\ $win.bottomframe.reset {top frame center expand fillx}\ $win.bottomframe.cancel {top frame center expand fillx}\ $win.bottomframe.timer {top frame center expand fillx}\ $win.bottomframe.autobudget {top frame center expand fillx} pack append $win\ $win.label {top frame center fillx} \ $win.bottomframe {bottom frame center fillx} \ $win.leftframe {left frame center expand fill} \ $win.rightframe {right frame center expand fill} sim UpdateBudget update idletasks micropolis-activity/res/weval.tcl0000664000076400007640000002131010724145723017443 0ustar simcitysimcity# Window: Player evaluation, for Unix Micropolis. # # Micropolis, Unix Version. This game was released for the Unix platform # in or about 1990 and has been modified for inclusion in the One Laptop # Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If # you need assistance with this program, you may contact: # http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or (at # your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. You should have received a # copy of the GNU General Public License along with this program. If # not, see . # # ADDITIONAL TERMS per GNU GPL Section 7 # # No trademark or publicity rights are granted. This license does NOT # give you any right, title or interest in the trademark SimCity or any # other Electronic Arts trademark. You may not distribute any # modification of this program using the trademark SimCity or claim any # affliation or association with Electronic Arts Inc. or its employees. # # Any propagation or conveyance of this program must include this # copyright notice and these terms. # # If you convey this program (or any modifications of it) and assume # contractual liability for the program to recipients of it, you agree # to indemnify Electronic Arts for any liability that those contractual # assumptions impose on Electronic Arts. # # You may not misrepresent the origins of this program; modified # versions of the program must be marked as such and not identified as # the original program. # # This disclaimer supplements the one included in the General Public # License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS # PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY # OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF # SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS # DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, # INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, # FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY # RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, # USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST # INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL # MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE # UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE # WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE # CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR # ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME # JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED # WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A # CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY # NOT APPLY TO YOU. global EvaluationWindows set n [Unique] set parent [WindowLink $head.col2] set win $parent.evaluation$n set EvaluationWindows [linsert $EvaluationWindows 0 $win] LinkWindow $head.evaluation $win LinkWindow $win.head $head LinkWindow $win.parent $parent LinkWindow $win.top $win catch "destroy $win" frame $win SetHelp $win Evaluation global [set var $win.visible] set $var 0 bind $win {EvaluationVisible %W [string compare %s FullyObscured]} bind $win {EvaluationVisible %W 1} bind $win {EvaluationVisible %W 0} #wm title $win {Micropolis Evaluation} #wm iconname $win {Micropolis Evaluation} #wm group $win $head #wm geometry $win 480x240+5-5 #wm withdraw $win #wm maxsize $win 700 700 #wm minsize $win 400 200 #wm protocol $win delete "DeleteWindow evaluation EvaluationWindows" frame $win.leftframe\ -borderwidth 1\ -relief raised SetHelp $win.leftframe Evaluation.Opinion label $win.leftframe.title\ -font [Font $win Big]\ -padx 0\ -relief flat\ -text {Public Opinion}\ -width 5 label $win.leftframe.isthe\ -font [Font $win Large]\ -text {Is the mayor doing a good job?} SetHelp $win.leftframe.isthe Evaluation.GoodJob frame $win.leftframe.goodjobframe\ -borderwidth 1 SetHelp $win.leftframe.goodjobframe Evaluation.GoodJob message $win.leftframe.goodjobframe.yesno\ -aspect 1500\ -justify right\ -padx 5\ -pady 2\ -font [Font $win Medium]\ -text {YES NO} message $win.leftframe.goodjobframe.percents\ -aspect 1500\ -justify left\ -padx 5\ -pady 2\ -font [Font $win Medium]\ -text {100% 0%} LinkWindow $win.goodjob $win.leftframe.goodjobframe.percents pack append $win.leftframe.goodjobframe\ $win.leftframe.goodjobframe.percents {right frame w expand} \ $win.leftframe.goodjobframe.yesno {right frame e expand} label $win.leftframe.whatare\ -font [Font $win Large]\ -text {What are the worst problems?} SetHelp $win.leftframe.whatare Evaluation.WorstProblems frame $win.leftframe.worstproblems\ -borderwidth 1 SetHelp $win.leftframe.worstproblems Evaluation.WorstProblems message $win.leftframe.worstproblems.problemnames\ -aspect 1500\ -justify right\ -padx 5\ -pady 2\ -font [Font $win Medium]\ -text { } LinkWindow $win.problemnames $win.leftframe.worstproblems.problemnames message $win.leftframe.worstproblems.problempercents\ -aspect 1500\ -justify left\ -padx 5\ -pady 2\ -font [Font $win Medium]\ -text { } LinkWindow $win.problempercents $win.leftframe.worstproblems.problempercents pack append $win.leftframe.worstproblems\ $win.leftframe.worstproblems.problempercents {right frame w expand} \ $win.leftframe.worstproblems.problemnames {right frame e expand} pack append $win.leftframe\ $win.leftframe.title {top frame center fillx expand} \ $win.leftframe.isthe {top frame center fillx expand} \ $win.leftframe.goodjobframe {top frame center fillx expand} \ $win.leftframe.whatare {top frame center fillx expand} \ $win.leftframe.worstproblems {top frame center fillx expand} frame $win.rightframe\ -borderwidth 1\ -relief raised SetHelp $win.rightframe Evaluation.Statistics label $win.rightframe.title\ -font [Font $win Big]\ -padx 0\ -relief flat\ -text {Statistics}\ -width 5 frame $win.rightframe.statsframe\ -borderwidth 1 message $win.rightframe.statsframe.statlabels\ -aspect 1500\ -justify right\ -padx 5\ -pady 2\ -font [Font $win Medium]\ -text {Population: Net Migration: (last year) Assessed Value: Category: Game Level:} message $win.rightframe.statsframe.stats\ -aspect 1500\ -justify left\ -padx 5\ -pady 2\ -font [Font $win Medium]\ -text { } LinkWindow $win.stats $win.rightframe.statsframe.stats pack append $win.rightframe.statsframe\ $win.rightframe.statsframe.statlabels {left frame e expand} \ $win.rightframe.statsframe.stats {right frame w expand} message $win.rightframe.cityscore\ -aspect 1500\ -justify center\ -padx 5\ -pady 2\ -font [Font $win Medium]\ -text {Overall City Score (0 - 1000)} SetHelp $win.rightframe.cityscore Evaluation.Score frame $win.rightframe.scoreframe\ -borderwidth 1 SetHelp $win.rightframe.scoreframe Evaluation.Score message $win.rightframe.scoreframe.scorelabels\ -aspect 1500\ -justify right\ -padx 5\ -pady 2\ -font [Font $win Medium]\ -text {Current Score: Annual Change:} message $win.rightframe.scoreframe.scores\ -aspect 1500\ -justify left\ -padx 5\ -pady 2\ -font [Font $win Medium]\ -text { } LinkWindow $win.score $win.rightframe.scoreframe.scores pack append $win.rightframe.scoreframe\ $win.rightframe.scoreframe.scorelabels {left frame e expand} \ $win.rightframe.scoreframe.scores {right frame w expand} pack append $win.rightframe\ $win.rightframe.title {top frame center fillx expand} \ $win.rightframe.statsframe {top frame center fillx expand} \ $win.rightframe.cityscore {top frame center fillx expand} \ $win.rightframe.scoreframe {top frame center fillx expand} frame $win.bottomframe\ -borderwidth 0 SetHelp $win.bottomframe Evaluation.Dismiss button $win.bottomframe.button\ -font [Font $win Large]\ -text {Dismiss Evaluation}\ -command "pack unpack $win" pack append $win.bottomframe\ $win.bottomframe.button {top frame center expand fillx} pack append $win\ $win.bottomframe {bottom frame center fillx}\ $win.leftframe {left frame center expand fill} \ $win.rightframe {right frame center expand fill} sim UpdateEvaluation update idletasks micropolis-activity/res/listbox.tcl0000664000076400007640000000222210724145723020012 0ustar simcitysimcity# listbox.tcl -- # # This file contains Tcl procedures used to manage Tk listboxes. # # $Header: /user6/ouster/wish/scripts/RCS/listbox.tcl,v 1.2 92/06/03 15:21:28 ouster Exp $ SPRITE (Berkeley) # # Copyright 1992 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # # The procedure below may be invoked to change the behavior of # listboxes so that only a single item may be selected at once. # The arguments give one or more windows whose behavior should # be changed; if one of the arguments is "Listbox" then the default # behavior is changed for all listboxes. proc tk_listboxSingleSelect args { foreach w $args { bind $w {%W select from [%W nearest %y]} bind $w {%W select from [%W nearest %y]} bind $w {%W select from [%W nearest %y]} } } micropolis-activity/res/tkerror.tcl0000664000076400007640000000025610724145723020023 0ustar simcitysimcity# This file contains a default version of the tkError procedure. It # just prints out a stack trace. proc tkerror err { global errorInfo puts stdout "$errorInfo" } micropolis-activity/res/hexa.3860000664000076400007640000007443010724145723017023 0ustar simcitysimcity @?? A` e`@|hPP@.0 V;|7??? eko3? ;'7 ?oo?' ??  ?'O?UT*UUUTUUUUUUUUD*P@ U UUUU@UTUTUEUUUUUEUUUEUUUDU@T@A ATUUUUUUUQQ*@*U**U*T"U*U*U U"UUUUUU PUU U U@(TTIUUUUUUUUUUUU@UUUTUVUVUVUPUHUVUPUHUXUTUPUTUTT@UTT*PUUUUUUUUU@AD*UU*U(UU*U UUUUU(U*UUU*  *U"U*U*UUUUUUUUUUUUUUUUUU@"P P @ P @UU+UU(UU(T*EU A"UE*(U *Q***UTE*QT((UQ*TE**UU***UT*TT*QU(UU**UT" U"**UT*TT*QU(UU**UT" U"`a#3QPNdI3#YP% 4v9Ss\Ms9Q Q@CFߊ VL &f2e2r޿(b 0 p 3)z -ͅAi1u%BDtz@az!͔D"!ۖTAψPT"0btί (Q` @UUUUUUUUWS+W/WWS+W/WUUUUUUUU5T:5T:,5T:,5T:5T:5T:,5T:,5T:5V:5UU EU?:U U5U:5V:UU`QPUXTuT:5TjTTXUPU`U5T8WUUUUUUUU5T:5W:*5U:(5U:5U:5U:*5W:/5T:UUUUUUUUW5T:5T:T,UT,UTUTUT,T,5T:5T8 WUUUՋhUՊUUW5T:UժUՂUժUժ:5T:,5T:,:5T5T:,5T:,5T:5T}UUUUUU}{;W/WWS+W/W}UUUUUU}5|:5|:<5T:,5T:5T>?T>,?T:,5T:5~:5}U E}?:U U7U:5V:]_`QPUXTT:5Tjt|UPU`U5T8W}UUUUUU}5|:5::5U:(5U:5U>?U>*?W:/5T:}UUUUUU}W5T:5|:|?T>,?T:,5T:WկUUUUWիWS+?WS+W/WWկUUUUWի5T:5T:,5|>?T:5T:,5T:,5T:5V:5]_ ?:5}:5V:UWQи}XTuT:5TnT\XUUU5T8WWկUUUUWի5T:5W:*5}>8?}>?U:5U:*5W:/5T:WկUUUUWիW5T:5T:T,U|<_|_TUT,T,5T:5T<,]}UՋh]՞__W5T:WկUՂUիWի5T:5T:,5|?|>:5T:,5T:,5T:U}UUUU}UWS+W/W{;W/WU}UUUU}U5T>?T>,?T:,5T:5|:5|:<5T:,5T>5V:7U_GU?:} U5}:5v:UU`qp}xtuT:7ToTTXUP_`_5T8WU}UUUU}U5T>?W>*?U:(5U:5}:5}::5W:/5T>U}UUUU}UW5T:5T>T,_T,UTU|U|?T> _U_UՋhU}w/5T:UUՂUվ}վ5T>?T>,?T5T::5|:<5T:,5T>WUUUUWWS+W/WWS+?WUUUUW?T:5T:,5T:,5T:5T:5T:,5|>?V:5UW EU??U U5}>?~>ՀU`QPX||??TjTXUPU`Հ5T8WWUUUUW?T:5W:*5U:(5U:5U:5U:*5>??|>WUUUUWW5T:?T:T,UT,UTUTUT,|?T: WWUՋhUW??|>תUՂU?T:5T:,5T5T::5T:,5|>}}UUUU}}{;W/W{;W/W}}UUUU}}5|>?|>?|>?_U ?: ?_>?V:}UQ}XTuT:5|z|tXUPWW5T8W}}UUUU}}5|>?>:?U:(5U:5}>?}>:?W:/5T:}}UUUU}}W5T:5|>|<_T,UTU|_|?|>?|>?|:<5|:<5T>?T>?|:<5|:<5T>?V>?_W}?:uU5_:5^>_U`QxTuT>?T~|TxUP]`5T8W__UUUU?T>?::5}:85U>?U>?}::5:?5T>__UUUUW5T:?T>|5T8 W׏UՋhUW5T:_߾UՂU?T>?|:<5|5T>>?|:<5|:<5T>ׯUUUUWS+?WS+?ׯUUUU?T:5T:,5|>?T:5T:,5|>?V:7W e??5]>?~>׀W૰QPx|T>?TjTxUU`Հ5T8WׯUUUU?T:5W:*5}>8?}>?U:5U:*5>??|>ׯUUUUW5T:?T:T,U|<_|_TUT,|?T: WU}_x_ՊUU??|>ׯUՂU?T:5T:,5|?|>:5T:,5|>UUUU__S+W/S+W/UUUU__5|:5T>,?T>,?|:5|:5T>,?T>,?|:5~>?UU ?? ?_>?~:WQШ]XTu|:5|jTXUЫWU5T8WUUUU__5|:5W>*?U>(?}:5}:5U>*?W>/?|:UUUU__W5T:5|:T,_T,_|U|UT,T,?|:5|><_UUՋhU_}W5T:UՂUկ_߯5|:5T>,?T?|::5T>,?T>,?|:ooooooooUUUU0p@`ffffffff       ffffffffffffffff        08pL8<3#|8Xx8> 9`q   8  a1@2 0 PHbF 0p00($#d$g$8$8tg#$(00p 0bFH P0 ` ``$Ġ&$$$. Ġ$` ` `d&d&d&d&d&d&d&d& 5T:5T05T5T:5T::0:5T:  UuUuUuUu  ܸ$T?````<@?b@h@@~@@0p  Y $@' l ( $222295I$B7651?>)(UU6265( (UUI$ Ix1p5A@3@=H*? $ 7qpa+Z7Lg\OPev^dx@-[N\ORJi@5kM_b焓K##   @ @K A  @K"#șd@ A@@     @K q pK  pp """"Yٓ_[ٓ@@"c"#"#"򪨦b"" #@# #I# "#"#"`ab""ȌG< U"#ci(cic iciUIȈʾ3̳>ȼ6ȳˉ#ȉ"+"###"#c *ljף]u"v]R""@sIc903$ " """"```@`B``juUb#"#ș1@3@ Ìʯ ˠ/@9u]"(@ u "uc#@ɿϞſȝR2p?00<006?01O W  pp >޾v޿v޿PCcc&cC `@#@+@C@v޿z꿑D+3DETQE\2tVER\2*"""8XhhXoa~"#13191319@13@1"#.+*+*++(*9@13@19@13@19A"#"I!@$㈢"""I9_$$QI3"#"""bcjcbK""#ș@@ș@@ș@@""% ȑ@@ș@$"!"F *%A#ՃUT :ZVZ@3Q388988387??aUUu``Z"6l,o/m,`?UU)a#aA6?zp  `I$@$RDi  u-UTTTTU ! O%HDrp(UUUԚRH@@ &  * "T * ?_@@@BFFG@@&@@ƕ@a`B@AC͊͏@ p @11@11@11@11@11Y"pz@zp p@  **ٱ_11[1ٱ@11@11!*AA?B*rB TPU*A Q A AA@@Ɔefćņg@@@ *!|@ P/""(HAā!OĉP)HID @ 9N!!!ՂUT  ZQ1(898(18?0!?aUUu ` ` l,o/m,`?UU)a!aA6?zp  ` @U 2 `4  u? e#` 000?pа000000 @0# C@E +EU 0 0 0 0 0 ?000 00FX`ՙJ*UP@ :JUQ"1UA ՃҀ_ihh?(/   $ $  ȷhkkkkȏ0A(A$A A40d0(A$A AP   A?a!a!a!aہ@@ĆfdƇƆe@@@ *!a'"@@"(iY)[Wi)jY'a@AEAU( P? ? _@@@@BD@@R ŒÀ@@@ """ ɉ‰É "!E?`Ѡ ! @(X?@ FF0FP?P""?P"$33Óc3'L0m™ $A L$A?L&J0m"B*"()2C?b*BVVV>A````````@```A>jVB@@@@?`uT` uT`$uD`orӐПVTP@ _@``E DD$D$goH(h  ) I I I IhH(hhI)hhH(hh T *&* SN   t D     @ H#G8P@@ 18aE  p00 `"? *"0C"#'IcYcIcMcIc  0A_(___IcI@cIPkY`cI@cIPcI`cI@c*5?""_j+UU""""M(gXIc"#"+""VTJ&"""""08RH#@$$@"#"##c)300 0 3  ""#,"#,"8 h.3h@!&.3 )c ###3`3 sآr&ɢ"""fbɘ2""k""";"""#ȉ"#b"#̉"# #"#"DDDD@D""Ȉ@@@@H@l@@A@UWj"#9#)#)#)#)DDDDDEA3b:LwjXgmVgMVcMVcVV  0 0   0*"#""H O ` RJcj#"+"#.6މvުv""""#"#UY333@#I@֪VVVVVVVFF UY33 3333Z^3WWYe? UHU?j܀ "3"33c"##?`礍``ej#e/? UU ρMÒ  ػXXXXXUV|xZpjAj}xn}~ m  #@LIAę!XXP@˸2~M^%'@ j ""ɁB@ )0)cP+";"U""蒪jhxh̨hh"#AIII#5#5#"xhh"UU ! b#B#@?""" ߏp""#ȁb#FH@c#@ȉ"#UIˈ$$$UUal|LdEUQQ̐$uuuuNGb"@H@VVVV"+uuu$U"VVV"UU""+"+UQ"#""" 5UUU"#13191319131UUU VX`ʪ@ĒI%91319#QQQQQJUQM*QM*QM*M*L*/@UUQQQU)#UU!#;wݣwppppݣwݣwݣwݣwppD*DHޣzŁ -""DDWDx(h@ ",*DDJ$"!>#>!8̞̏̂̐ #    p8p @@ 0_A   UQ@@ pp ppԀ ppA? )#:I? |l(FĉĉT)Q)P?`   HHHH!HHH 9 II@B@RpHH@@g' T8p!p @ AP"AA"\p( `БHWD"8AAAAATA\AWAΑ @A|1q11,<<4,>:6    Z@X(6Y!A$A @@WuU |`A8 pRp`$4&,?<RRRR "<4,4o"? ?     d>jjjjjj8 !!)!!!)!!!jjjjjjjet̫ 8_)!!!)!!!)!!! ) ! ! !ee*4a U\ U\  )!!!)A@ T@=#%+-@`0P P W [S0CDDDDE-+-+.-+/+/+/+/+/I@H@@@9H@$@#@#GAAGEEEDDDGACSCC@*-*-+-+-+../ ?dd8idh@@@@GDD?DeDE=DKDE##U?H̐pP{s!! H.:.j>!"'! S#W# S#  @UUUUUU8@@ UUUUUUUUU"UUU UUUUU`,` ``))`UUUUUUUU""UUUUUUUUUUUUUUUUUUUUUUUU# ## #UUUUUUUUU UU UUUUUUUUU`)`)``""&">6"6"0w "#"/ 7תתׁ# I    K  K U UU UU UU U` ```` `` `PAA (aHϾ*  };}i# ## ##U UU UU UU U``` `` `` `/) ? ? @% ! ! !@[U[}u[WZz+5;#(""("(""U UU UU#UU#U``` `` ```/@ V``w_T\|X_@@( #ȉb#H b#H U UU Ur"SU"U ]` `` `'e `H VVV%VVVO@O@8Ap@#@o I%I$VVVVV%V%VV@8Ap@#@@8Ap@#@     "D @@@@VVVVVV@8Ap@ @@"$DH  @  @ PA"C @ l  T I% " @P@@@D$I͐ @>ߒI$ŰŰ}AAA@@ Qa !@ۨZZZZZZZUUx|fccccccf|xh(h(h(o/h ) h-(Mh) h XP@ *AAAA PA@P@@  " @ !!VVV @?`ccccՌՌՌVVVV~Icc`@II% $ ՘%u I!.=K@@GEEEED(lllU)Q)8(""""# $ H 3w e#0 0C0 0J"# b###1Lc>Ic)I# :K35 6 6 66JUQQQQ )($ 6 6 N6 5 J8 8 VQQQQU@5W(cIC(ؗh D I# @xZFxS@,WB Pc03@ 8?~ܣ#6 #x#b#ȉ#"""ۨۏ""# $ lj;hw ghl##;\wMJRK4_qCN@"# #z##ىNcc)Y#ۨۈۨۈk:;5enj6 jn6j >> !UQQQQ i(fᕣ֣ԩ֣ۈۨۈʶ>ʶ 6joc6jj5j :j?jVQQQQUC5W閣cIZCۤ)ٗhj kDki#H @xZxӘ,WB Pwr>K3C@ 8?~ܣ# #x#b#ȉ#"T+/7777? """. x##Љ"?"8 -"%"%' +7WW xWwWw!8p?, @(x A@"3?!h!j! #{!h!!vx b+@+@+ @+ @+ @+#bp!F& $!B #b@@@@@(@p@A@@@@@ @a!!? P+ P+P%PB!DUUZUUU@ x? U`*AUU```lllP!UUU @ AHP _DU+W??#U U:5U#8@@ UUUU)(QUUUUp UUUU UUUU_ tUUUU!Q/UUUU@ @pUUUU@ @@UUUUA!A!A!aA!`A1!aA1AၑA@ĕĔ@  ` @@l ]@P &pC@B@ % Wt P1XVH` 31();M A>ɬpBTH(d $ ( Q(@ @c L5AH aDVTT3 EɈpDrLQHqe VQ\T3` E!ۉ6pDAAAA)))))))(((/ ?U)))))))(((/ ?U)))))))(((/ ?U)))))))(((/ ?U)))))))(((/ ?U)))))))(((/ ?U)))))))(((/ ?U)))))))(((/ ?U)))))))(((/ ?U)))))))(((/ ?U)))))))(((/ ?U)))))))(((/ ?U M8 =-E 8%7%me8-8p=WM 8pp%π5E8pp%UE8pp-geE8p"Hb  (pp)`(@  pp%`kE ((pp3P G ,8pp CMUEE pBmuHŃE(pU̓5EE(p){d ݔ EDE(pJc AH p@)C AD8pZ`=A8pJA08p RR3BR3BRA^ %i"amL-a-5YI %y} !) -E+6) @'}e$ih-!7'a+ ȉ#}+9 a5iT-!!%m 9 !$T!!!)!!! ) ! ! !$!)t!!!)!!! ) ! ! ! !R)`!!!)!!! ) ! ! !;km 3iH!!!)!!! ) ! ! !*QH  d P b Do  z d$ D%R ." 5Ŋ   p%, eA TAjЁ!` %IeIb@*Az0!M9%ͥM$HDH(!@ %PAy%IdDaQP- CAmI, P u." R A|"D @ , ` R@,"D @ A\-! A "D @  S."D @ BŒ`@$I"@A@@@ A"D !@!@`Qp FKe @!UQQQQ !UQQA*Q !UQQQq !UQQQ !U*Aq*qQ !UQQѨ1*!UQQQ !UQQQQ Aq٪UC5WQQQUC5WQQQQUC5WQQQQUC5WQQQQUC5WqQQQUC5WqQѪUC5WQAQUC5WWʯ\dDDODDGOUEUU_UW_#bp!F& $!B #b#!!$ $!B 'b#b !B$ 2&1F #b# !B$ $! #.@Rdvv\$\Jp:`micropolis-activity/res/hexa.5440000664000076400007640000036000010724145723017006 0ustar simcitysimcity뻻뻻fffffffffefffVffffffffffffffffeffffffffffffefffffefffffffffffefeffffffffVfVffffffffffffffffffVfVffUffffffffffffffefffefffffffffeffffffffffffffffffefffefeVffVffffffffffeffffffffffVfffeffffffffffffVffffffffffffffffefffffffffeffffffffeffeffffffVffffffffffffVffffffffffefffVffffffffffffffffeffffffffffffefffffefffffffffffefeffffffffVfVffffffffffffffffffVfVffUffffffffffffffefffefffffffffe[jjffUjeeeefVeeVeffffVffffmfffffffffffVffffeffffffffffffffVfffffffffffffffffffffffeffeffffffffffffffffff[fjVeVfjVfVffeVjfeeeeffZfffffffkeffffffUffffVfVfffVffffffffffffffffffffffVfffffffffeVffVffffffffffffffff[jkjfVff[feffeefffjffeVfVfefffefjffffUj[ZefkfekefjfeVfeeZffffjfffVZeffffffffVVffVfUffffffeffneffffffVffffVjfVffejfffefj[ffffkjffffZfefjfffVVffffejffffVkffffVffffejfffefjffffeZfffffjfffffVffffeeffffffffffejfUfeVkffffekZ[fffffjffffUjkfffffffVf[jfffffffefVffffejfffff[ffffefjfffffUjffffffkffffeffffeeffVjffffjfffejffefjfVfjfefejff֫eefeVfffffffffffffffefeffffjfefeZU[fffffVffffjffުffjfVkZ뻻[ffffffffffVfffffffffffffffffffefffffffffefffffffffffffffffffffffffefffffffffffVffffffffmfffffffffjkjkfffffffffffffffffeffffffffffffffffffffVffffVfffffffffffffffffffffffffVfffffffffffffffffffjfjjfffffffffffffffeffVffffffffffffffffkfefffffVemffjfffnֻfffffffffffffffeffeffffffffffffffmfVfffffffVmffffffVfVffemffmffVfkZffffffffffffVfeffUZfffff^ffffffVfffefffffffffffefffffjfffVffffffffefVfffffffffffffffffVjfffffffffffeffffffffffVffffffffVffVfffffffffffffffffefffffffffVffVfffffffffffjefffffjffffffffffjfkffjmfeffjffVfVfffffffjffefVfffffffVffffffffffffmfeef]ffffffffffVffffffffkjfffffڪffefVfmUfffffffffffff٘؋؈؛؋ٍةۻfkfffffffkff```ff`ffff`fffffffffff`fffffffff`fff`ffffffff`ff`ffffffff`ffffffffff`ffffffff`ff`fff`fffkfk`fff`ffffffff`fff`fffff`ff`fffffff`f`ffffffff`fffffffffff`fffffffff``f`f``ffffffffffffffffff``fffffffffffffffffffffkfffff`fffff`ffff`ffff`fff`ffff`ff`fffff`fffffffff`ffffffffffff`fff`ffffffff`fffffffffff`fffffffffffffffff`f`fffffffffffffffffff`fff`ff`fffff`ff`fffffffff`ffffffffff`f`fffffffffffffk```fffffffk3;3;;;;;;;;;;;3;3;11""#1"#+2"###"+"3##:##33#3*3333233#2233#;2;;;;2""2"""##2#""+#+2;2##3333"33;;##3:3;;+332##+3"1""!1!+""3"+22"3+#""#3##3;#2333;+;23;;;3;;3;;;;;+"33+""#32"+#3#;;#2::2333#3#;3++3##:#3;;;;3;;1"2"2+3""22+:""+22;3+23323";:"3;#::32:;33+3;;+;;;;;;"""+""""2#""+2:"!3+:232;3""#:##23233;33:32;3:#3#3;33;;;;11""+"13#"+###"3;223:;#:223#;3#32;*;;3+""+1"3""!3!;23##3"22+3#2####333:2;2;;;ffffffffffffffU_UU_UUUUUUUfVfVfoUUfVfVfVfVfoUUfVfV뻻뻻뻻ﻻλλ컻뾻뾻뾻뾻fffffffffefffVffffffffffffffffeffffffffffffefffffefffffffffffefeffffffffVfVffffffffffffffffffVfVffUffffffffffffffefffefffffffffeffffffffffffff U_UU_UUUUUUUfVfVfoUUfVfVfVfVfoUUfVfV ݻݻݻݻ뻻뻻뻻 ﻻ  λλ 컻뾻뾻 뾻뾻fffffffffefffVffffffffffffffffeffffffffffffefffffefffffffffffefeffffffffVfVffffffffffffffffffVfVffUffffffffffffffefffefffffffffeffffffffffffff U_UU_UUUUUUUfVfVfoUUfVfVfVfVfoUUfVfV ллλ߻뻻뻻뻻 ޻ﻻ  λλ 컻뾻뾻 뾻뾻fffffffffefffVffffffffffffffffeffffffffffffefffffefffffffffffefeffffffffVfVffffffffffffffffffVfVffUffffffffffffffefffefffffffffeffffffffffffff U_UU_UUUUUUUfVfVfoUUfVfVfVfVfoUUfVfV 컻ݻݻ뻻뻻뻻 ﻻ  ?> 컻뾻뾻 뾻뾻fffffffffefffVffffffffffffffffeffffffffffffefffffefffffffffffefeffffffffVfVffffffffffffffffffVfVffUffffffffffffffefffefffffffffeffffffffffffff U_UU_UUUUUUUfVfVfoUUfVfVfVfVfoUUfVfV ллﻻ뻻 뻻 뻻޻޻λﻻ  >> 컻뾻뾻 뾻뾻fffffffffefffVffffffffffffffffeffffffffffffefffffefffffffffffefeffffffffVfVffffffffffffffffffVfVffUffffffffffffffefffefffffffffeffffffffffffff U_UU_UUUUUUUfVfVfoUUfVfVfVfVfoUUfVfV  ܻܻ ݻݻлϻ뻻뻻뻻˻޻޻˻ﻻ   λλ>> 컻뾻뾻 뾻뾻fffffffffefffVffffffffffffffffeffffffffffffefffffefffffffffffefeffffffffVfVffffffffffffffffffVfVffUffffffffffffffefffefffffffffeffffffffffffff U_UU_UUUUUUUfVfVfoUUfVfVfVfVfoUUfVfV  λ λ ллͻͻ뻻뻻뻻ϻܻ ޻ ﻻ  λλ?> 컻뾻뾻 뾻뾻fffffffffefffVffffffffffffffffeffffffffffffefffffefffffffffffefeffffffffVfVffffffffffffffffffVfVffUffffffffffffffefffefffffffffeffffffffffffff U_UU_UUUUUUUfVfVfoUUfVfVfVfVfoUUfVfV  ໿ﻻ ܻ ܻﻻﻻ뻻뻻뻻λ ߻߻ ﻻ  컻뾻뾻 뾻뾻fffffffffefffVffffffffffffffffeffffffffffffefffffefffffffffffefeffffffffVfVffffffffffffffffffVfVffUffffffffffffffefffefffffffffeffffffffffffff U_UU_UUUUUUUfVfVfoUUfVfVfVfVfoUUfVfV     лϻ뻻뻻뻻ﻻ   뾻뾻 뾻뾻fffffffffefffVffffffffffffffffeffffffffffffefffffefffffffffffefeffffffffVfVffffffffffffffffffVfVffUffffffffffffffefffefffffffffeffflffffffffffffffmfffffffffffffflffffffffffffffmfffffffffffffflffffffffffffffmfffffffffffffflffffffffffffffmfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff뾻뾻뾻뾻ᄏ뾻뾻뾻뾻뾻꾻뮻뾻뾻뾻뾻뾻뾻뾻뾻ﻻﻻ뾻뾻뾻꾻뮻뾻뾻ﻻ뾻뾻뾻뾻뾻꾻뮻꾻뾻뾻뾻뾻뾻뾻뾻뾻뾻뾻뾻뾻뾻뾻뾻ᄏ뾻뾻뾻뾻꾻뮻뾻ﻻ뾻뾻뾻뾻꾻뮻뾻뾻뾻뾻뾻뾻ᄏﻻ뾻뾻뾻뾻꾻뮻뾻뾻뾻뾻뾻뾻ᄏ뾻뾻뾻뾻꾻뮻뾻뾻뾻뾻뾻뾻޻ګګ޻ګګګ޻ګګffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffmffffffmffffffmffffffmffffffffffffffffffffffffffffffffffffffmffffffmffffffmffffffmffffffffffffffffffffffffff޻ګګ޻ګګ޻ګګ޻ګګ޻뻽뻭ۺ۪ڪ߻ۻگۻݻݻޫ꫻޿뻪ު޻ߪޫ뿭請۪ۻگګۻۻ߻޻޻޻޻޻ګ޻節뻻޻ުڪ請﫻޻뻻ګꪻ뿫ݻݻ۽ۻ޻޽뻽޻ۻ޻뻻ݻݻݻݻۻۻۻ޾ݾ۽޻ݾ۽뻻ݻݻ޾ݻ޻ݻ޻޽뻻ۻ޻뻻ݻݻۻ뻻޻۽뻻ݻۻ޽뻽۽޻뻻뻻޻޻޻޽޻޻ݻ޾ݾ޻޾ۻ޾뻻޻ۻ޻޻ݻ޻۽޻޻޻޻޻޻޻޻޻޻޻޻ۻۻۻۻỻỻ޻޻޻޻껻ۻ۽۽۽ۻۻ뻺ۻ뻻Z뻽ݻݽݻZݻݻZݻ۽۾>>:ۺnneUڽڻۻۻۻݹmݹݻmݸmm^^꫻>>>ﻻ?:ꮪٹۻٹۻٹ踻鸻驩۸ػ۸ظ""*ꪮ..UU.fe.fe.⪪艞i!"""""("***"؈݈舘ffffUYf^噉fٙf݈fUY݈eU݉؈ؘ؈Ȁ ܘɘ̙陈؈݈ݘؘ݈؈݈؈݈˰︸k̶h ȍˆk̋Ȁ Ȁ ȍ ɀ ̙ ə̙ ݘ`Ȉ ݖȈ fȉfɈhɈɈ ̙ə뻙ۻ홻ۻ뻻ݽڙۙݙݙݙݙݽݙݙꪪۻݽۻݻݻۻݻݙݙݙݙݙݙݙݙٝݙݙݽݙݙݙݙݙݙݙݙݙ뻻ݙݙۙݻۻۻۻۻۻݻۻݽݻ뻻ۻݻݻ뻻ꪪꪪꪪꪪꪪꪪꪪݙUݙUݙݙݙ!ݙ!ݙݙݙݙݻݻݙݹڙݻڙݻݻݪݙݙݙݙݙݙݻۙ뙪뙚뙙ݻڙݽڙݽڙݽڙݽڙݽڙ3ݽڙ3ݽޙݽ뙙뙚뙪ꙚꙙꙪꪙꪪ̙홽ޙ̙˻˹ݻݪ̙ꪪ꫻꫻꫻꫻꫻꫹꫻꫻꫻陙ۙۙۙڙڙڙޮڙڙڙ̙陙陞鞙ꪯڙڙڙڙڙڙڙ̪ڙڙꪙꪪUUUUݛݛUUݛݛUUUݛݛUUUݛݛUUUݛݛUUUݛݛUUUݛUUU߻3ջ333?ߪ߹߹߹߹߹߹߹ߛUU____3U^?3=U^3=3=U^33=^33=US33=U333=S333=333=3333=333=333=3333=_Z33333333ٙٝٝٝٝٙٙٝٝٝ33333ߛ333=333>333333>33333>ޛ333>33>ޛ3>ސުꪐުꪪ33333>3=݋3=݋3=݋3=݋3=݋3=݋3=݋3=݋3=݋3=݈ff333;n;fm;fm;m;fm;fm;m;feU:fUU:eUV:UUf333:offffff滸滸滸滸滸滸櫸V櫸f櫸f櫸f櫸f櫸3=ߋ3=ߋ3=ߋ3=ߋ3=ߋ3=ߋ3=ߋ3=ݙߋ3=ݙߋ3=ߋ3=ߋ3=ٝߋ3=ݙߋ3=ߋ3=ߋ3=333f33:f33f:::f:̻f:̻o:̻f:̻o:̻f:̻f:̻e:̻:̻:f櫸f櫸f櫸f櫸f櫸f櫸f櫸f櫸f櫸fUUUUUeUUUUZUUUUUUUUUZ̻3=ߋ3=ߋ3=ߋ3=ߋ3=ߋ3=ߋ3=ߋ3=ߋ3=ߋ33333333333333333:33333:==:::::::̪̪̪˪˪ˈܻ̻̻̻̻ܻ̻fffffnfm݋fm݋fm݋fm݋fm݋&m݋fmދfmދfmދfmވ؈ۻۻۻfffffmۻm۶mfmfmfmfnfeUUUU^feUUUUfeUUUZfeUUUfjfffffffջfջfջfջfջfջfջfջfջfջfջfջfmދfmދfmދ&mދfmދfmދfmݙދfmݙދfmދ&mދfmٝދfmݙދfmދfmދfmދfmnfnfnfnfnfnfnfnfnenݻVnݻfnݻffnݻffjfffffffffffջfջfջfջfջfջeջVffffe[n[m[m[m[m[m[m[m[fm݋&m݋fm݋fm݋fm݋fm݋fm݋fm݋&m݋feUUUUfUUUUUeSU5SUUUUUUUUUUUUUUUUUUUUUUUSU5U5UUUUUUUUUUUmZmZmںZmۻZmڪZmZmZmZeUUUUUZUSU5UUU5SUUZSU5UUUUUUZ݋݋݋݋݋݋݋݈軻軻軻虙݈ݛݛݛݙݛݙݙݛݙݙݛݙݛݙݛݙٝݚݙݙݚ݋݋݋݋݋݋݋݋݋݋݋݋݋݋݋虙蚚虙蚚虙說說說誻興ݚݚݚݚꪪ긪긻۸3۸3۸۸݋݋݋݋݋興舙陙ݻݻݻݻ۸[[۸U۸U۸۸۸ݻݻݻ݈fff݋ffӋnf݋ff݋fnf݋ff݋nfnf݋fff݋nnfnf݋ff݋nnfnf݋ff݋nnfnf݋fffffffff3UUUUU]UU33US33U333S33333333333媪3333333;;;;;;;33;33;33;33;33;6ffffff`fPnnfnf݋ff݋nnfnf݋ff݋nnfnf݋ff݋nnfff݋fffUnnffeUfffUUnffeUUfUUUfnf݋ff݋nnf݋f媪6媪f媻f媻ff媻ff媋ff媻ffUUUUffUUUZffUUUffUUZffUUfffffffffPfPfPfٙPfٝٝPfٝٝPfٙPfٙPfٝPfٝٝPfPfPfPPPPnnf݋f݋nnf݋f݋nnfދff݋nfeUUUfUUUUfefUUUUUeUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUPPPPPPUUUUUUUPUUUUUUUZUUUUUUZUUUUUZfffffofnfnfnfnfnfnfnfeUUUUfUUUUUfՈk[[[[]ۘ]Uۈ]U݈]Uݘ]݈ۈۘfՋfݙՋfݙݙՋfݙݙՋfݙՋfݙՋfݙٝՋfݙݙՋfՋfՋfՋfՋfUUUUUeUUUUZUUUUUٙۈٙۈ3ۘ3ۈ݈ݘ݈ۈݻݻݻݻݻݻݻݻ " ݻݻݻݻݻݻݻݻݻݻݻ ݻݻݻݻSSSS?S^5>S^5>S^5>S^5>S^ffffffff^=]=]=UUUUUUUU5UU^UUUUUUUUU5U^UVUUU^UUUfffffffhhhhhݙhݙݙhUݙݙhVݙhfݙifݙٝiݙݙi5>S^5>S^5>S^5>S^5>S^5>S^5>S^5>S^9jY9jX8j]֦8jX8fXe8UX8X݈8SSSSSSS8fiifiifiifUUUUUYeUUUUUUUUUUYUUUUUUUUUY陙陙鉍؉ݘ5>S^5>S^5>S^5>SS33353333S3333333338====993333333933333333333339333333؉؉؉؉؉؉؉؉؈؈؈ٙ"""".--݋-݋---݋-݋---݋-݋--""""--"""⻻"⻻.⻻-.⻻.⻻-..-."""...*-.⪫..*-.ͻ"&ݻfݻfݻfݻfݻfݻfݻfݻfUUU[eUUU++------""".----݋-݋---))ً---)ً)---))---)ً-ݪ.-..-."+"-"+۲..+۲+ۻ+ۻ*ۻ*ۋ"""""""****"""""*⪻....*⪪ffffkf[f[&f[&f[&fZ&fZ----݋-݋----݋-݋---"""...--"⋻....-"⋻....."⋻"""""""".....................&fZ&fZ&fZ&fZ&fUUUUZeUUUUUUUUZݻݻݻݻݻݻ݈ ݋ ݋ U U U U ݋ ݋ ݋ ݋ Ӌ݋໻໻ ໻ ] ] ݻU ً݋ЋЋЋЋəɜɜɜɜəəɜɜɜݩک؋͋݋ދ݋ދ݋ދ݋ދ݋ދ݋ݪݩکݪڪݪڪ3333>3=ݘ3=ݘ3=ݘ3=ݘ3=ݘ3=ݘ3333333333333333ffffffnfmfmemfmfmem3feUUUUU9fUUUUUUeUUUUUU陙fffff刈刈刈刈刈嘈嘈UUUUUUUUUYUUUU陙陙툘ݘݘ݈݈݈݈݈݈݈툘݈ݘ ؈ ؈U\؈fUݍffe͙ffe͙ݍffe͙ݍffe͙ffe͙ffeٍ͙ffe͙ݍffeݍffl؈؈؈؈݈݈݈݈݈ݙݝݝ݈݈݈݈݈݈݈݈݈݈݈ffffnmݘmݘmݘmݘmݘmݘeUUUUUUUfffffffUUUUUUUUUUUUUY݈݈ݨͨͨͨͨͨͩ興ffffofm֘Vm֘fm֘em֘fm֘fm֘Vmߘfmߘemߙݙ݈݈݈ffffffffommmmmeUUUUUUUUUUUUUUUUUUUUUUVUUUUUUUfUUUUUUVfffffffhXXXٙXٝٝXٝٝXVٙXfٙXfٝXfٝٝYVYfmߘfmߘVmߘemߘfmߘfmߘfmߘVmߘemߘfmߘfmߘfmߘVmߘfmߘemߘfmYf^V^݈f^UU݈f^ff]V^ff]f^ff]f^ff݈V^݈fYeYU^؈^݈^݈Y݈fffffffhfYfYVYfYfYVYfUUUUUYeUUUUUUUUUUYUUUUUUUUUY陙陙؈݈fmߘfmݘVmfmfmemݘemݘVeUUUfUUUUeUUUUUU_݈݈ݙX]]]]XYUUUUUUUYUUUUUUUUUUUUUYUUUUUUfnؙfef؉flV؉eff؉fef؉el؉݈؈݈͘͘ݘݘ ݘݘ ݘ͘ ̘͘ ͘ݙȈȈ숈Ȉȍ썉썉썉썉썈܍ȍf̈fɈوɈوɈوɈ؈؈]؈]؈]؈ ܘݘݘݘݙޘ阈阈ޙݙ݈݉ޙff興f舋阈 陙 陘̙ ̙鈍]ؘ]؈]؈؈،̈̈ȉٙٝٝٝٝٙٙٝٝٝ܉܉ؘؘؘؘؘؘݘݘݘ݈ ̙̈ ̉̈ ݈h1툈݈ވȉ̈Ȉ興興舋陘 ̘ ̘ ̙ ̙ ̙ ̘ ̘ ̘ ʘ ̘ ̘ݘݘ  ݙݘ̘̘̘̘ٙȈȍ\]\UUUfefefeeel̙̙̙̙̙̙̙̙ɜ̙̙̬̬ʘ̘̘̘  ͘ ݘޘ ̙ ̙ ݛ ؛ݘ ٘ݙ ٙݙ̙݈݈3300303000؏݈؈݈وݙٙݙٙݙٙޜݝ݈݈݈݈؈؈ݙٙݙٙݙݙ݈ٙ؏؏؏؏؏؏ُُُُُُ ُُُُُ ُُ ُُُُُُُُُݭݭߪݙُُݙٙݙٙݙٙffffffffffffffffffffffffffkofkkkkkkffofffffffffffffffffffffffffffffffffhhhhhhhhhhhhhhh ffffffff ffffffff݈݈؈ؘ؈؈؈؈؈؈؈؈hh h h h h h h hh hh hhhhꪪ ؈؈؈؈؈؈؈؈؈؉؉؈؈؈؈؈hhݙhݝhݙhmmmmmhhhhhffffffff̜̙fmfffffff݈fm؈؉؈ffffffff؈؈̝؈؈؈ֈffffffffffffffffkkkkkkkkkkkkkkۻkۻffffffff ̻ ̾뻰 ̻̫̻̻ ̻ͻffffffff̻ ͻۻݻۻۻݻkۻ뻾k۾k뻾kۺkۻ뻻k۾k뻻kۺkۻݻ뻫ݾ뻻kkkk뻻ݻݿݻݻ߻ݿ޻뻶뾻뻶뻺뻻뻶뻶kk뻻kffkkkkkkkkkkkkkffkkkkkkffffffffꪻ껺ffffffff붪뻶붪뻶붪뻶ffffffffffffffffkkkkkkkkkkkkkkkffffffffٙٙٙfٙoffffffffݛݛݛݛݚݚݚݚݚffffffekkkkkkkkkkkkkkkk3333ٙVmٙVm٪Ufm٪Ufm٪UVfm٪UVfm٪Uffm٪Uffm٪Vffm٪Vffm٪fffm٪fffm٪fffm٪fffm٪fffm33333333ffmmmmmmmffk?k3>k?>k33>k??>k33>k??>k333333k?33k333333k33k333333k333333kkfffUUUUU33333333353333333U35U333333U333335UUUUUUUUUUUUUUUUUUUU^UUZUUUUUU^UUUZUUUUUUUUZ^UUUUUZUUUUUUUUfffffffh݈fh݈mh݈fmh݈fmh݈femh݈fVmh݈feemh݈fVVmh݈feefmh݈fVVfmh݈eeffmh݈VVffmh݈efffmfffffffffffffffmXU]]]]]]U^^^fffffff݆݈݆UUUUUU݆݆݆݆݆݆UUUUUUh݈Vffemh݈fffVmh݈ffefmh݈ffVemh݈fefVmh݈fVefmh݈efVfmh݈Veffmh݈fVffmh݈efffmh݈Vfffmh݈ffffmh݈ffffmh݈ffffmh݈ffffmh݈fffemff^mmUm]m]m]mm]ff]]]]]]]]]]UUUUUU݆݆݆݆݆݆݆h݈fffVmh݈ffeemh݈ffVVmh݈feefeh݈fVVfUh݈eefeUh݈VVfUUh݈efeUUh݈VfUUUh݈feUUh݈fUUUUh݈eUUUUh݈fffffff]]]UUUUUUU]UUUUUUU_U_U_U]UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU_UUUUffffffffUUUUUUUUUUUYUUUUUUUUUYUUUUݙfffffffUUUffffc]k5]k]k55]kSS]k555]kSSS]k555]kSSS]k555UUUkSSSUUUk555UUUkSS^k55>kSS^UUUfffffջջջջ>ջ>ջ>ջ>>ջ>>UUU>>>UU[>>UU>>>>>>>>>>>>>>>ffffffff3333333>===========k55>5UkSS^^k55>5=kSSSS]k5555=kSSSS]k5555=kSSSS]k5555=kSSSS]k5555=kSSSS]k5555=kSSSS]k5555=kSSSS]UUUUU>>>>>>>>>>>3>3fm>33ff>33f333f336f33fffffmffff==3333333333333;33333333333:333336UUUUUUVfVfVfVfVfVfVfVfVk5555=kSSSS]k5555=kSSSSUUk5555UUkSSSU__k555UUUkSSUUk55UUUUkUU_UUk5UUkUUUUUUkUUUUUUkkfffUUUUUfffUUUUUfUUUU_fU_UfUUU_eUUU_UUUUUUUUUUUUUU_UUUUU_UUUUUUUUUUUUUUUUUUUUUfVfVfVfUUUUUUVeUUUUUU_UUUUZUUUUUUUZUUUUUUU_Z__UUUUZUUUUUUUUUUfffffffffhhhhjhjhjhjhjhjhjhjhjhjhjhjffffffffݻݺݪ3=3=U]U] ffffffff݈݈݈݈݈݈݉U_݈U_݈݈݈݈""""(hjhjhjhjhjheUUUUUhUUUUUUhh؈hh ݪݪfmfmݪfmffݪfUfYf݈fffm݈ (""""݈݈݈Ȉ݈݈݈݈hhhhhhhhhhhhhhhffffffff݈݃3333333333333333333333ffffffff݈؈݈؈؈؈؈؈ووو39ffffffffffffffffkkkkkkkkkkkkkkkffffffffffffnenfnenfnenfnenfnefffffUffffffffffffff滶滶滶滶滶櫶櫶櫶櫶ffffffZkkkkkkkkkkkkkkkkeUUUUU去fmffffffffmUUUUUZݻݻݻݻkkkkkkkkk kk kkkkffffffffݪڪݪڪffffffffݹݻݻݻݻݹݻݻݻffffffffffffffffkkkkkkkkkkkkkkkffffffff؎݈؎݈ވގވވގވffffffffﻶﻶﻶﻶﻶffﻶnnﻶnﻶnﻶnﻶnnﻶffﻶkkkkkkkkkkkkkkkkވގވވގވވގވވވމޙޙޙޙﻶﻶﻶﻶﻶ߫߫߫߫߫߫߫kkkkkkkkkk鞙kkkkkffffffffުުުުުffffffff߫߫߫߫߫߫險陙ffffffffffffffffmmmfmfmffmf`mffmf`fmfffmf`f`mffm`f`fmffffffffffffffff`ffffffn`fnfnffnfn`ffffffffffffnnfmf`f`mffm`f`fmffmf`f`mffm`f`fmffmf`f`mffm`f`fmffmf`f`mffm`f`fmfffff`fffff`fffff`ffUUUUUUfoU_U_U_fUUUoU_U_U_UUUUUUUUUUUUUU_U_U_U[UUUU_U_U_UVUUUֻmf`fomffm`foUmfUmfoUVmfUfmoUVfmUffmffmfemfUmeUllmffffffffU_U_U_U_UUUU_U_U_U_UUUUUU_U_U_UUU_U_U_UUUUUUU^U^ffffffffU_U_U]ֻUUUֻ_U_U^ֻUUֻU_U^ֻUUֻ_U^ֻUֻֻֻֻֻƻƻֻfffffffffflȈl̈lȈlȈlȈlȈlȈlȈlȉlșl̈lȈl̈h戈戈戈ffnnnnnnnfflȈl̈l̈l̈l̈l̈l̈l̈l̈l̈l̈l̈l̈l̈l̈l̈虙ƻƻƻƻl̈l̈l̈l̈l̈l̈l̈l̈l̈l̉lllllffffffffffffffffƻƻƻƻƻƻƻƻƻƻƻƻƻƻfffffffffffffffkkkoknkenkfnkenkfnkenkfnkenkfnkeeUU""UkfR"%keUU""UUffffffffUUUUUS=ݙ93ٙUS=ݙffffffffͻ99۶ڻkkꪪkkkkhkfknknknknknkfkkꪪfnnfeUUUn延n延n延n延n延n延n延n延n延eUUUkkkkkkkkkkffffffff뻻޻޻ffffffffUUUZeU[n[n[n[n[n[eU[UUffffffffffffffffhhi݈hhhhhhhhhhmhmhfffffffffffffffff؆؆؆؆؆؆؆ننننhfmhe^ieUUUUi_UUhohhhhUUUUUUUU^_U_UV^UUUUUUfUUUVfo陖ff؆o"""&"""&"""&"""&"""&"""&ofnfnنnffنnfنnfنnfنnffنnfnنnنnنnنnنnنnنnنnنnنhfehffhffhffhffhhhhhhhhhhffffffff^f^o^f_foffoffeUؙ؉؈ffmfnنnنnنnنnنnنnنnنeUUUUUYUUUUUUUUUUUYUUUUUffffffffffffffffmݝmݝmflȜfl̉ofmݙffmoofiͨfffmooofm͍ffffmoooofi͆fffffmooooofmffffffmooooofffffffffٝUUUUU]]\\X]off]fnn]oonVffn_oonVffnn_ooffVff_ooffffffffٝUUUUUVfVfVofVffVofVffVofVffVofVffVofVffVofVmffffffmooooofmffffffiooooofmffffffmooooofiffffffmooooofmffffffmooooofmffffffmooooofiffffffmoooooemfffffUiooooeUVff_ooVff_ooVff_ooVff_ooVff_ooVff_ooUUUUUVffUUUUUooU]ffUUUUooffVofVffVofVffVofVffVofVffVofVffVofVffUUUUUVoeUUUUUfUU]eUUUUUmffffUmoooeUUmfffUmooeUUUmffUUUUiofmffmofiffffffioeUUUUmfUUUUUmeUUUU^mUUUUUlm͞ffffffffU]ffUUUoeU]fUUUeUUVffffUUݙ9]ٓUUݙ9UU]fUUUVf^UUUUUUUUUUUUUUUUffffffffUU^UUUUUU^UUUUUUU^nnnfffnUUUUU^UUU]ffffffffffffffffhȈlhȈhȈhȈhȈhȈhȈhȍhhh hffff`   ffnnnnnnnffhh hhh hhh hhh hhh hh ````````````hhhhhhhhhhhhhșlhȈffffffff ݙffffffff` ``` `` `````````fffffff`ۻۻۻfffffll-ݙl-ݙl-ݙlmmmmmll]޻ݻfffflllllllffl]lllllllllllllllkkklllllllllllllllffffffffffffffffkkkkkkkkkkkkkkkffffffkffffffffkkkkkkkkkkkkkkkffffffffffffffݻfݻfݻfݻfݻffffffeUUUUUUUUU33ffffffffffffffֻֻֻֿffffffUUUUU^UUUUkkknnnnnUnUnUnnnnnnffnnnnnnnff>>>U^U^nnnkkkkkkkkkkkkffffffff̻ݻݻݻݻ̻ݻffffffff滻̻ܻܻܫܫ̫ݺfffffffffffffhkkkkkkkkkkkkkkfflllllllff˻f˶˶˶˶˶˶˶˶˶˶˶˶˶˶kkkkkkkkkkkkkkkkޙᙐޞ˶˶˶˶ ˶˶ޙ陙ޙ陙kkkkkkkkkkkkkkkffffffffݻUf_``_f_fffffffff˸̻̻̻̻̻̻̻ffffffffffffffffhhhhihhhhhhhhhhffffffff̈܈ffffffff؆؆؆؆؆؆؆؆툆؈홈ٙhhhhhhhhhhhhhhhhܙffܝUnnܝUnܝUnܝnܝ nnܝffܟܟܝ ܝܝ3ܝ3ܝ3ܙܙ=٘=٘=٘٘ ȈȈȈ ʬ˼ʬȈhhhhhhhhhhhhhhhfffUUUUUٙUUUUU]݈݈؊݈وݙUUUUfffffffffffffffffff݈ffffffff݈ffnnnnnnnff݈݈ݘޙ陈ffUUUUUݙUUUUUUUU陈ޙޙ陘陈陈ޙٙݙٙݙUUUUffff ff`i ii ii ii ii ii i fffff fn fffni ii iiiiiii ii ii ii     ߖߖߖߖߖߖߖii ii ii ii iiiooiiffffffffnffffffffߖߖߖߖߖߖߖ閻n陖fffffff񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻񻻻 ۻ03  ޼0<ޫ?3:33 ۪03  ޼0<ޫ?3:33ۻۻݻݻۻݻݻۻͻۻݻۻݻݻͻݻۻۻۻۻۻۻڻڻڻڻ껻ݻݻ   ꪪۻͻۻ ۻ ݻ ۻۻ۽ݻݻۻݻڻݻڻݻڻ۰ ڻ̻ڻ ̻ڻͻڻ ݻݫݫ꫻ ໻໻໻ ݻ ޻ۻ껻ڻۻڻۻڻڪۻ껻໻໻ ໻ ݻ뻻뻻ꪫݪݪͪݪݪݪݪݪݪݪݪۻ뻱ݽ뻱뻱뻱껪ݪݪݪݪݪݪͪ؍؍꫼ݻݻ-ڪڪ`f f뻻뻻ݻݻݻݻۻݻۻݻU[U[U[ݫݻݻުڱꪪݪ˻˻˻-̱.ޱޱޱޱޱޱޡޡޡޡޡ33333ݪݪޡޡ?ޡޡޡޡޡޡޡޡޡޡ?ޡޡޡޡ-뻺뻻UU뻻P 뻻뻻UUU[뻻[뻻ޡޡޡ.ꪡUZooooo]o]oޱޱޱޱޱޱޱޱޱޱޱoޱoޱ]ޱooo]]ޱ]ޱޱ꫱ު۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱ݻݻݻݫݫ꫽ۻۻۻ۱۱۱۱f۱U۱۱۱۱؈۱ؙ۱۱̻̻˻ͻ 뻻޻껻ꪪڪ۱ڪ۱ڪ۱۱۱۱۱ݻݻ̻ ުު۪ۻۻ ˻̻ ̻̻<۰ ޼ުꪫުݻݻݻݫ˰ݫͰݫݫ ꫻ݻݻݻݻ뻻޻ۻۻۺۻ ʻ ̻ﻼ˻˻̻˻컻˻컻컻˻˻˻    ګګکڪڪݪ޻뻻޻޻뻻޻꺪̻ڪݪꪪꪪ۱۱۱    oo o]oooo]o˻뻻ݱͱݱݱݱݱݱݱݱݱݱݱ ]   ]ݪݱݱݱݱݱݱݱݱޱޱޱޱޱޡޡݭڪݪ UUUU3333ۻ۹۹ۻޡޡޡޡޡޡޡޡꪡ333<뻻뻱뻱뻱뻱뻱뻱껱껱껱껱껱333<333<껱껱껱껱껱껱껱껱껱껱껱껱껱껱껱껱ꪪꪪ껱껱껱껱껱껱ߪ着fffffffffffffffffffof_f_f_f_f_f_ۻۼfffffffffffffffffffoffffofݻݻݻݻfffffffffff"ffff+f"f+f"fݻ+fffﻻff뻻fݻfݻfݻfݼfݼf_f_f_f_f_f_f_f_f_f_f_f_f_f_ݭmmffm]eVfm]]Vm]]]]f]mUVfmffffݼfݼfݼfؙf݈f݈f݉ݻfؙؙf݈f݈f݉ff_ڭf_f_f_f_f_Uf_f_f_f_Uf_f_f_f_Uf_f"""""""˾"˾ݮڮݪ.ݻݻfݻݻfݱݻfݻfݱfݻfݻfݻ۫ff"""""""f_f_f_f_f_뻻f_f_f_f_f_f_f_fUUUUffffffffff"̼̾λݻݻۻUUUUUUUffffffffffffff..ݻ⻻.⻻.뻼⻻.⻻뻻.UUUUUU.Ufffffffffffffffݻ޻fݻۻfݻۻfݼ޼fۻfۻf޻fۻffffffUUUUUUVfffffffffffffffffݻkkݻݻݻͻݻݻݶ;;;;;ۻݻk;;뻻뻻뻻滻뻻뻻뻻뻻뻻滻1α1αkݻݻݻݻݻݻkkۻۻݻݻݻݻݻݻk1α1α1α1α1滻뻻뻻뻻ۻ뻻ۻۻۻݻݻ ݻ ݠ ݠ ̻ۻۻۼۼ ݻݻۻ뻻ۻ뻻ۻ뻻ۻ뻻ۻ뻻ۻ뻻ۻ滻ۻ뻻ۻ뻻ۻ뻻ۻ뻻ۻ뻻ۻ뻻ۻ滻ۻ뻻ۻ   UUUUUUUUU^UUݪݪ UUUUUUUUUUUUUU_U_UU^U^UUU\UUUlUVl Uflelflllflݻ뻻ۻ뻻ۻ뻻ۻ뻻ۻۻۻۻۻۻۻ뻱ۻۻۻ뻱ۻꪪꪪٝٝٝݪݪf뻻f뻺f뻻뻻뻺뻻뻻뻺뻻ݯelݯflݯflflllfl3>3>3>33>33>::>33::>>3333333333333333333333333333333󈈈󈈈݈݈?"-U]="-U]=݈>ݻ>ݻ>݈>݈>݈33=݈=33>3=33:=3:=333=:333=:33=3:3=3:33=:3:3=:3::=333:=3:33=3:33=:333=:3:3=3::3====>݈>݈>݈>݈:?>>>>>>>3:33=333=:3333::33333:3333333333:333?:333333?33333?󈉙󈈙󈘉333333333333333333333333333333333333?3333?3>333?333陙陙陙ꪪ>>33>333>333333333333338333>3?393?33󙙙󙙙󙘈333333fffffffȈȈ؈ȈȈ؈fVefVffVefVfffffffff興莈fffffffoemVmfmemVmfmemVmfmemffffffffffffffVefVffVefVffVefVffVefUUUUVeUUUUfU_U_eUUUUUUUUUUUVmfmemVmfmemVeUUUUUUfUUUUUUUe_U_U_UUUUUUUU_U_UU_UUUUUUU_UPU]UUU_U]UUUUUUUUUU^U_UUUU]_UUUUUUUUUUUX_U_UUUUUUUYUUUUU݈݈݈݈݈݈fffff؈݈؈UUU==ffffffff陈鉈݈݈U݈U݈U݈݈݈݈݈݈݈݈݉ffffffݛݛݛݛݛݙۋۘۻۻۻۻ۸ۻۻۻۻۻۋۻۻ˻̻˻˻˻컻˻컻컻˻˻컻컻컻˻˻ݛ훻ݛݛݛݛݛݛ훻ݛݛݛݛݛݛ۾əə˻˻˻ʻʻʻʻʻʻʻʋʻʻʻʻʻݛݛݛݛݛݛ훻ݛݛݛݛݛݛ훻ݛəəʻʻʻʻʻʻʻʻʻʻʻʻʋʻ쪻쪻훻ݛݛݛݛݛݛݛݛݛݙ۽ۻۻۻۻݻݻݻݻݻݸݙꪾꪪʪʪ쪪ʪꪫꚫꪪꪪꩪݛݛ3U3U݈݈))ݛݛۋۘۻۻۻۻ۸ۻۻ>ۻۻۻϏۋۻ?ۻ˻.e̻^^nc>n^>_fn>˻˻˻컻˻>컻^컻˻8˻f컻nn컻>컻o˻˻훻==ݛݛٝٝ훻"۳"۳ݛݛݙݙ۾Ύno==on^^əən˻˻˻>ʻ_ʻoʻoʻʻʻʻʋ^ʻ&ʻʻʻn>ʻݻݻݛݛݛ݈қ݈қ훻݈݈ݛݛ3ٚ3ٚ훻-ݛ--Ώ->Sfəəeʻ/oUʻnQʻʻnʻʻ_ʻʻbʻnʻnʻʻnʋ^?ʻn쪻/쪻훻ққݛݛݛݛݛ݈݈ݙ۽-ۻ-ۻۻۻݻݻݻݻݻݸݙ.o>b^nn_Uꪾꪪoʪ/ʪn쪪_ʪnꪫ_ꚫꪪꪪꩪ񻻻񺻻񻻼0 ݻ ﻻ   л   ?   л 1  0 л 񻪪񻺪񻻪񻻺񻻻񻻻񻻻񻻻񻻺񻻻񻸛=2-ڻݪڪݪڪ꫻ު,,񻹛񻫻񺻻񻻻񻻻񻻻񻻺񻻸񻻹񻻫񻺻񻻻񻻻񻻻ݪٌٌ̪̪UU񻻻񻻻 񻻻333333333>=>>=>>1>>=>>=>>=>>333333333fffnfffffffVffffUfffUUfffUUfffUUUfffUUUfVfUUUUfffUUUffffUUUfefffUUffffefffffffffffffffffffffffffffffVffffVfffffffffffffmfffffeffffVffnffffffffVffnfffffffffnfVfffffnfffffnffffnffffmffffUUUUUUU_UU_UffeVffeVffffffffffffVffffffffffffeffffffffffffflfffffeffffVffmffffffffVffmfffffffffmfVfffffmfffffmffffmfk뼻kᄏﻻkﻻﺻk뻻뻺k뻻뻻k컻뻻뻻k뻻˻뻯뻻kݙ݈݈݈ЈЈfm`mfmݘfm؈툈؈݈݈ݙݙ݈݈݈݀Ј؈f om fmݘfm؈툈؈݈݈ݙݙ݈݈݈݀Јfm`m fmݘfm؈툈؈݈݈ݙݙ݈݈݀Ј؈f `m fmݘfm؈툈؈݈݈ݙk뼻kᄏﻻkﻻﺻk뻻뻺k뻻뻻k컻뻻뻻k뻻˻뻯뻻k; ۻ몪 ޼꼬ޫʪ 꼬ޫʪͻ ޼ͻ꼬ޫʪ 꼬ޫʪ  ۼ꼬ޫʪ ۼͻ꼬ޫʪ 꼬ޫʪͻ ޼꼬ޫʪ 꼬ޫʪ< ۪몪 ޼꼬ޫʪ  ۼ꼬ޫʪ< ۪ ޼꼬ޫʪͻ ޼ͻ꼬ޫʪͻ  ޼꼬ޫʪ; ۻ몪 ޼꼬ޫʪ  ۼ꼬ޫʪ>;뻻>;1;;뻻33#;;;;;;;뻻3;3;32#3!;뻻1;2#!;###3;3323333;;3뻻;;;;;;;:33;;;33*ﻻ:3;3;+;**+;3;3;3;;3;;;;;;;;;;:3;;:㳻3;;;;;?;?;볻3;;;;﫺뻻믫뺻;;;;;>;̱.ޱޱݻݻݺںޡۻޡݺޡޡޡ̱.ޱޱ۾ݺݻݺںݪޡޡݻޡޡޡ̱.ޱޱ۫ݻݺݺ۱ݪޡݽޡݫޡޡޡ̱.ޱޫۻۡݫݽںޡ۫ޡݪޡޡޡ۱?۪۪ݽݽޡݫޡ۽ޡޡޡޡޡ?ޡޡޡޡ۱?ۺݪݽݽޡݫޡݽޡޡޡޡޡ?ޡޡޡޡڱ?۫ݫݺںݽޡڭޡۭޡ節ޡޡޡޡ?ޡޡޡޡڱݭ?ۻڪݻۡݽݾݪޡݽޡ着ޡޡޡޡ?ޡޡޡޡۺڭݭ۪ۺ۪ݺݺݺoooo]o]oݺݭݽݽڻݽۺݪݪݻoooo]o]oݻݪݪ۽ݫڪݺۻݺڪݺoooo]o]oݭݽݺڻݪݪݽݻݪުݻoooo]o]oݽޱںڽݭ۪۾ںڻݻۺ۫ݻڡڭڱۺޱګޱޱޱoޱoޱ]ޱݭẫ۱۪ݽݽݻۮݭۺۭݻݡڽڪ۽ڻޱݫޱۭޱޱoޱoޱ]ޱݽګݽݻۺݫۮݽۺݫۻݫ۪ڽګޱݫޱޱޱoޱoޱ]ޱݽẫ۱۫޺ںݻݺ۪ݺݻὺګݡݫݪڪګޱݺޱޱޱoޱoޱ]ޱ̼ݻݻݻݻݻݻݻooo]o̻ݫݺݺݻݻݻݻooo]o̼ݫݫڻۺݻݫݺooo]o˼ګګݫګݺݫݺooo]o˺ݻݻݱͱݱݱݱݱݱݱݱݱݱݱ˻۫ݻݱͱݱݱݱݱݱݱݱݱݱݱ˺ۺݺݱͱݱݱݱݱݱݱݱݱݱݱʺںݱͱݱݱݱݱݱݱݱݱݱݱ뻫뾱ۻ뻪ݻ޺뻱껱꾱꾡ݻ޾꺪뺱몡ݺݻ뫻ު뻱껱꾱ݻ꺫ꫪ뾱ޭ۾۫뻱޺뻱껱꺱꾫ݻ޾껱뫻ۮ뫫ڪ뻱ۺ뻱껱꺫뻪뮻ݻ껱ݾ껱ۺ껱ݻ껱껱껱껱껱껱껱껱껱껱껱껱껱ݻݻڻۮ껱껱껱껱껱껱껱껱껱껱껱껱껱껱ݺݻ껱ۮ껱껱껱껱껱껱껱껱껱껱껱껱껱껱ݫݫ껱ۻ껱ݮ껱껱껱껱껱껱껱껱껱껱껱껱껱뻻޻۫ݮ޻޻޾޾뻻޻޻޻ޫ뮻뻻޻ݡ뾻뻻޻޻޻޺ګޮ޾޻޻ޫ۪ۻ뻻޻ۻ껻޻޻ںګ޻ޮ޻޻ޫ뻻޻ݮޫ޻޻޻ڪݽ뻻޻޻ޫں뻻ۻ۫뻫껻껻뻱껻뫾뱻뫻뻱뾱뮻뫺뻱޺ں뻾뻻뻱못뾱뺪뱺뻱뻻뻫뻻뻫뫫뾻ۭ뻻ۻۻޮۺ껻뾻ڻު뮻ު޾ޮުުުު޻ު뮫ޮޮުۺުު뻻ުުުޮݪݭڪުުުުݪ޺ުުު뻻ުުޭ뮫ު뮻ݮڪ꺻ުުުުުުꮫںݮڮު뻻ުުުۮުުݭުުުުުݭ뻻껾ު뻻ުު۾޻뱪뾻뻻뾻뱾뾻뻻뱺뱻뻻뱺껫ں뱪뾻뻻뱺뱻뾱뻻걺뺱۫뾮뱾뾫뻻뱺뱻뾻꾾뱾޾ڻ۫޾ڮۻ뻾뻾뻻뱻^^əə9888^^əə^^əə^^əə8^^əə888^^əə888^^əə^^əə8888əə888əə8888əə888əəəəəəəəəəffVffVfoVf\ffefffffffffofffeffffUfflffffffffffffffffVfffVfffffffffffffefffffffffeVffffffffefffffffffffffffffffffffffffffffffeffVfffffffffffffffffmfVfefffffffffmfffffffffffmfeffffffU]fffUffe]ffeff]ffffVffmffffffffffffffffVfffVfffffffffffffefffffffffeVffffffffefffffffffffffffffffffff=2-=2--3=-2-micropolis-activity/res/snro.2220000664000076400007640000006476010724145723017051 0ustar simcitysimcityXWWWTSSSPONMNLMLKIHHEECEECABDACDDCCEGFDDCBBBAABCCBB@@@AA?@AAABDGIGFHKJIHGFFGEA?;:@<<;;96876577888:<>=>@A@?A@BA?>@?;<;::9MEECAH<8@96.(   }pfSMedbb_]]ZYY]\____``dfgggeeb^\[[[ZZZYWVVUSXY\^]_``babdefgeeecaa``_^^[ZYXXYZ\\\[]^``^_adijllkjiihhfdb_^]]\ZWWY[[[[]aabejmno\eW`aYaf[o]aj[fmgqfjq]hh_j[_cZehZkcYTe\QNda^[YXXXXXXXXXXXXXXXXXYXXXXYXXXXYXXWTXXXXXXXXXXXWUTYYXWTPJLQOYYXSKUa\WQIKKA9-$*{vuuutututtuuttutttttttttututtttuuttutttuttttttttttttuvttttsrqqmljcc^[YXSKC99=[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYXWWWW[[[[ZZZYYWWVUUTSQVUUTTTTTafgggggggeddcb^]\\\]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^s[[[[ZYYXXWTQNKIE?:::$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&&%((())))))))*+,,.....<<<<<<<<<<<dddddddddddd____________ddddddddddddaaaaaaaaaaaa____________bbbbbbbbbbbb````````````^^^^^^^^^^^^cccccccccccc\d_da_b`^c\__X[[XZVZ[WXUT`bilde_Y\_]\_``_ehjkmqnmnnmmmmnpnnpnmnmlmmnmmnnmonqmlmollmommnonnmmmjlmmlkjiklllhinortortmha]bf e$X[$:^%yCNTLPICT"CURSMENUBPAT rSTR#WDEF   =  J  (     0E0C0C0C0I0C0C0C0C0C0D                      0Baaa0Bppp0F0C0C0C0C0C0C0C0C0C0C0C0I0C0C0C0C0C0C0C0C0I0C0C0C0C0C0I0C0C8S8T                 0BaapMpppppp00"0Bppp0B0Bppp8Rbbbb0E0C0C0C       0Baaa0BppppMppp0$00%0%0#00#00Baaapppp0B0BpppMbjb0E0C0C0Gbbb       0E0C0C0C0C0K0C0C0C0L0CpN0C0I0K0Cppp00%0%0%0%0%0%0!0BaappppMpaaappMppp0B˔˜bbbbb0Bbbbbb 0Bpppppp0B0(p0*0B00%0%0%0%0%0%00Baaa8Raa0FpN0D0)0B˘ˠbbk~bx]k|bkkb0Bpppp0B0(p0*0B00%0%0%0%0%0%0!0B8U8S8S8[0Daaa0B0)0Bpkbb8Rkbb0Bbbb 8U8Wpppppp0Baaa0B00%0%0%0%0%0%00F0C0C0C8S8S0Gaaa0F0C0C0D0B0(0J8S8Sx80C0C88888k}b8Rp0E0C0CpN0C0C0Haa0B00%0%0%0%0%0%0!aDaGaJaaaaaaaa0B0B;I0B```88 8kbb 0Bp0B```0Baaa0B00%0%0%0%0%0%0aEHaKaaaaaaa0Bppp0B0+0B``pMppaaa0B8x88 0Bppp0B``0F0IpN0C0K0D00%0%0%0%0%0%0%0aFaIaLaaaaaapMpppMppM```0Baa0B  p80BpppMp```0Bp000000%0%0%0%0%0%0%0%0!p0Bppp0J0C0G0Baaa0Bp8 0Bppp0B0Bppp0B00000%0%0%0%0%0%0%0%0%0"p0J0I0C0C0G00#00B0Bp0B p8 0Bp0J0C0C0C0C0C0C0Hqq0B0$0000%0%0%0%0%0%0%0%0%0%0"p0F0H0$00%0%0 0B0Bp0F8S8Tp8 0Bppp0Baaaa)a,a/pMqqp0B00!000%0%0%0%0%0%0%0%0%0%0%0#0b[b^ba0B0$0%0%0%0!ppp0B0Bbbb8R p8 0Bpp0Baaa*-a00Bp0B00000%0%0%0%0%0%0%0%0%0%0%0%0%00"b\_bb0B00%0%0%0pp0B8Rk~b0Bqqqaaa8 0Bppp0Baaaa+a.a10J0CpN0C0K0D000%0%0%0%0%0%0%0%00%0%0%0%0%0%0#00#0b]b`bc0B00%0%0%0 ppp0Bppx]kbb0Bqpaa8 0J0CpN0C0L0C0C0C0C0C0C0Hppq0B000%0%0%0%0%0%0%00000%0%0%0%0%0%0%00#00#0%0%0%0!0E0C0CpN0K8Sx^8Y8[0C0CpN0G  qqpaaa0B0B0p000000000Bqq0B000%0%0%0%0%0%0!0Bppp00%0%0%0%0%0%0%0%0%0%0%0%000Bppp```8Rbbb ppppMpppPPPPPPPPp`p0B 0Bppp0B;H0+;K0);H00Bpqq0B000%0%0%0%0%0%00Bpq0B00%0%0%0%0%0%0%0%0%0%0!0E0C0Gpp``0Bk~b pp8Z8S0C0C0C0D  pp0B0Bpp0J0C0C0C0C0D000p0000000%0%0%0%0%0%0!0Bqqq0B00%0%0%0%0%0%0%0%0%0%00Bpqppp```0Bkbbppqx]paaa0Bppp0B 0BppppMpaaa0B00Bp0J0G000%0%0%0%0%0%00Bqpq0B000%0%0%0%0%0%000Bpaaa0E0C0C0L0C0C0C888880C0C0Haa8Z0Dppp0E0CpN0C0C0G 0JpN0C0C0K0Daa0B00Bppp0B000%0%0%0%0%0%0!0Bpp0BaDaGaJ000000 aDaGaJ0Bqqaa0B0B0Baaax]pMpp0B 0E0Gp0Baaa0B00Bqq0B0$0000%0%0%0%0%0%0%08qqp0BaEHaK0E0C0CaDaGaJaEHaK0B;H0)aaa0B0B0J0CpN0C0C0L8Xppp0B 0Baaa0F0C0C0C0K00Hqpq0B00 000%0%0%0%0%0%0%0!880CpN0HaFaIaL0BppaEHaKaFaIaL0B0+aaa0E0G0B0C0C0C0C0C0C0C0C0I0Gp0J8[8SpN0I0G 00"0Baa00F0C0IpN0K0I0D000%0%0%0%0%0%0%08p0J0CpN0C0GpaFaIaL0EpN0C0K0Daa0B0F0Daaabbb0Baaa8R```0B```0B 00%00Baaa0000p000000%0%0%0%0%0%0%0!888Sx^0GaDaGaJa;a>aAp0E0C0HaaapMaaa0B0B0Baak~bppMaa8R``pM``0B 0$00%0%0 0Bpppp00Bppq0B000%0%0%0%0%008aDaGaJaEHaKaaA8Z8S8S8S0D08Rqqq00%0%0%0%0%0!ajamap0B00#0pqqbbb"0B00pqp0B0$000%0%0%0%0%00 8Rcc 8bbb0B00 8a36a90Baa a x]aFaIaLccc 0aaA8Rajamap0B08Rqqq00%0%0%0%0%0%0%0%0!0B00%0%00#00%0aaa8R00%0%00#00B000000%0%0%08bbbbbb0$00B00!8aEHaKppMaapMaEHaKpMaapMaaAppppp0BaEHaK00%0%0! 8ppppMbbc00BaFaIaLpMkb00J0CpN0C0H0(ailao0J0Hailaoppx}aEHaKpx]aEHaK00BajamapppaEHaK8aaA8Z8W00"00%0%0!88pN0C0H0aaa0B0ahakan0(0)0(0E0Gaaa0Baaa0J0Gbb!b$0bbb"0Bpq0B0aaa00Bbb!b$0Baapp0Bpp0BaDJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz "(.4:@FLRX^d,i~j6-xO,DD[DDP0b0DDDD4DDD/DDDDDDK;DDDiD6DhDljj+DdDgDwDXDDhDDDDD[DDDDDDDDW?D2DdDDYD1DD}DDDD.D.D_DD4DeDVhDD+D.DDDD'D)D)VD=2D-D0D/D=DL`DDDDQRDDDKYD<1DkDOQDDhD;DaDUD~YwFDDD?DD?AU-$=D]4679:<  =>GI@KKCOQDTUGWXI_`KhiMmmOooPtwQUVWX=Y?QSTVX==??IILLNOQQSSWW\\cdfh*4$ "(.4:@FLRX^d'D'D'D'D'DD'D'D'DD'D'D'DDD'D/D;D, m mDmDD]D]D]D]DWDWDWDWD]D]D]DXJt   *4mQmmmm*4$ "(.4:@FLRX^d'D'D'D'D'DD'D'D'DD'D'D'DDD'D/D;D, m mDmDD]D]D]D]DWDWDWDWD]D]D]D< ,28>DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntzrM8M}RnMHo!IZ 0#RR[R[DRR^R.gE[r R0001LRRR^FNV^@p~*Z000&LM P$=IIKKLMOO      ""$$&&((**,,..0022446688:;==??AAGGQQSSUU jlm| ^h "(.4:@FL|{zyxwzvqjYUSSTS S "<^h  #@ Q FHLQRVX]g #O"LID 2 "   ""> *4%IO$IL!I'W&WIVAJ 4 "*2:BJRZbjr9H97H73H31H1H~H~ "4H42H2&.6:H:5H5H6H6 ";H;8H8<H< LM -+.,12*3/4 33f Pq PfEd! `~!BE?Xauz~_cs [w{-KcEMWY[]}  & 1 : < > I p y !!!"!&!+!_!""""""" "-"C"H"a"e## ###!#%#*#}##$#&&<&G&g&o')*+ !$EPXatz~brCw{0Ph HPY[]_  0 9 < > G p t  !!!"!&!*!S!""""""""'"B"H"`"d##### #%#(#}##$#%&8&?&`&i')* +qiWSPKJIHG97) ~><:62.& {yu @=6530.([VRLFCAL.$XNL !+  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}byqz{`jyV\byb`{{N\=VTq\f{fb--){bb??)fD)y V%hNf s{juy jdy{Hy`yqq 33Nyj``'''Dbjyyb3'b=D)fRR5fVVVJ!/TfDs04 <, %Id@QX Y!-,%Id@QX Y!-,  P y PXY%%# P y PXY%-,KPX EDY!-,%E`D-,KSX%%EDY!!-,ED-ff!%!!fsr) 7>2"&!#7ZYw%%NppNOpph#!#++)!! !3!!!!#!#!5!!5!F+`aaE````HFR`hhT$+173;.76$73#6&'#.>&'T9x O #5y5oY5y|H#$5y5n2Xs D]gyOf;#7 +'t;Ǵ, T=FV W`l- %0"32676&'2#"&6!3#2#"&7>"32676=@S !@AS! -M󿾣MN,ٿ&'󿾢'&S !@AS! ev-d#8E)'# '&547>7&'&5476$32#454'&#">?!#3%326!etԐo % 7Jw<)/ke nIg>.[Y=DU >UNPPb/4SC=" g29`R \ DqxxWlLCS/*nOm1#+ $%nCCB}̄x`` 76'7NCCB?! x+TЊVmT!!t4'` 7>32#"&NOZONZNppNOpp\B3#mDM $26&" ! UU.UU+*tXHIpqI 37!7%!!;yy#>3 !73!?$76&#"Ux>z(+"U0A#"lvdB%%ДJ'*6$3 !"&'332676&+732676&#"#9v#ǥ#(v@y B4qv&y##̱((Hx{ )73!7!!!356x5ys+$!>3 !"&'332676&#"#3@LZ //z{?xq''eL@d34(*F?B^`!>32! !2#.#"26&"K_-0FOXZp3yvnYzT6yTu44qffiѯPy #!#!GC'^E)F!- $7>7.76$! 6&#"266&#"326¬ (( ⷖ|%C%5\]b5aD#Brsw#$Arqz̥Υ$Ⱦ'wwuuշ13!"26#"76! !"&'3326yT5zTYL^-0Y2FOQZp3yvo{P55  iafix{>2"&>2"&ZYoZZ-OpqnnNppNOpp>2"&>?!ZYy+-OpqnneSϊXmB 5--!!!!B5510P "7>32#"&>32#>76&#"#NOZONZ9i(((:]wn"yNppNOppY""++s K76&#"326#"&$3273>76&'.#"3267#"$'&76$32!#]ec:Wce:ZR Zې"@_L茂k&,ETzt'ڐgeDKĖ`Ͳ`oM"6LذHLLG}'갏`NTFEjśewzDC^TT~~|KJ}~|abo^#7333!73!3!z=(E?Ϲfwy\yy1y#;J$#73#7! !32676&+32676&+1u$ܾ +UyyƤf}vBK! !2#.#"3267hEE zGܕLef@Af%32+73#7! !&??_FF oy,GE+yy0#73#7!#7!!73#7!!731>D)]%d%yu)Dyy!%#73#7!#7!!73#7!313D)]{%d%yyy!yB~.#"3267#7!# !2BATCOpFF)GƱ&&xNLhi@A#73#7!#!#7!#3!73!31bRbwwyyy yyyydy #73#7!#31yyyyV6733267#7!#!"&- j*G0p@!>@ >̑[ijΓ[it/9:sR)BK}wO|xQ9#3!.+3!73#7! %326&+32#"&'!3267654'&#"Jz=peD3pjm{- mj$xSQcKWQSdF<'SW6!XED## '&547!2#654'&#"3267\I[3nom:p*2r0)k%LhCM(**f7AYN0hxl(7654'&#"326 !7#"'&54732#78in{- miW=pdC3=pcicF='SW7"XSQdKX*QSxCD6'&"132673# !2Up3Fs*Nghz"?K9U n"Gzt#(Da{#267#7376$32#654'&#"!!#6bP^"UK-pEP^ )| sy 9&sy5<[8.9UD +&#"3267!"&'73326?#"776! @rG+$=mh$ǿ0jm2q7<'z+5M l323!654'&#"F}S}G-l Uk!tx}_TjCl=JyF0,4E>32#"'&543!#7!.QO-!OQ-"TQo8)7Oo7)79yy9'>32#"'&54#7!#"&'73267PRN.!OQ-"% 323!654'&#"!654'&#"!#7!>32^sG,lyS^~yR_~PnyjahAl?LyoD#4yoC%4yy]VcrPD3#7!>323!654'&#"sS}G.l Uk!ty_TjCl=JyF0,4ED!%26654'&" '&547! Up2! 1 t΂^3y^3Tc4"_b7"aql@J)kAJ3V~D(3267654'&#"%#7!>32#"&'!Zjm{- mj=peD3pnHidF<'SW6!XySQcKWQS^VRD#"776! &#"3267Rn{+4M @rG+$>lh$z1İ32>q Lt#i$I|W38*̵yok WD;'33267654'&/&'&5476$32#654'&#"!"&9q7?l d;)"^{5q0:l| O@.#c)b7>KF'#%)M5P"'!S-7EB "%5N7V#)cq#73!!!32673#"'&547@b@':@N(A* yJyuY- "VZE,\2A_'3!7#"'&547#7!3267^R}G.ly Xk!t'Ry_TiDl=J+y}C(5T**)#7!2767#7~uAuʾy{='6767!###7!3% 99}¿`tfu,{ϴfyH' 33!##7!]9;w Fyoy9' #7!6'7%#"'732ssL$Yo^+q/+oywlyjZ3+E z# 327#&'&"'7&'&#"763267D!OxSptc OxSptc D@I.y D@I.%*#"&'.?6&+7326?>7>;#"3&1U==0.$>gpd5}}G5@py1>$npsyspm%=1x^"^#*3267>7.76&+732;#"+eoe5||J5Aoe&0U>>1.$>^"^x1=%mpsyspn$>1?#"'&'&'&#"5>32326]e_ aM``d_eM?VR:BHIWQ9DHr #"&7>2!73NOY%%nnNOpJ L %%#$%3#6&'>7h~R/{?6y5ff3y4:o9q Ua^!^kZӝ% #&%~ zjl#6&#"!!!73!73#736$!25x NTu"4`l,Go6*4Aualyy=yL= .264&#"'7.5467'7>327'#"&[\[~|їљ0l=7m9͘ќ.j?:l\]~Ϛ.k@?l.͞Ӛ8o6?i/Ӛ:$373!7!7'!7!#7!##7!#!!!!3Dm #l$KmDyZu;uyy'yy#utNuy##  =5C#6&#"#"&'7332676&/.7>7.7>32>76&'/w WaQj )QymzJ4Sb/v XjWl (Rym{J6J2= Gc4> IeVVJC/B/Hbsh+/ZZRJE/B/Hcrg,.Y!N-=f:X#O*2#"'&%6762"&O hx#"33;<$# 43xH 54xF54&'&#"&54632#.#"3267h0llllWVVVy{WVVVVX'OWi iQhwviIbnnn,WWV{zϬVUWVz{VXg%'^j\Y 377654'&#"3276767#"'&547>7632733!! 8 Lz 8 M<=0->=D#`0) $Β(1sspB,#8$/8-9%8LLE++ D8_6B8Y- 77ұv TѲv -!#!T!!t4#5K3#'.+3!53#5!2%3264&+  $&546"3267>54&'&'<d32!73!?>76&#"^&LPd0H@I?grRZ`T{]T_S9*>32#"&'7332676&+732676&#"\@{itgPK&`GOXmQ[)Qd AHB^`idH^o]z{POVRPWTD@?FI@4f!#Af@V'3!7#"&'!#7!3267G{J7U tXj!t'Ry}SGJXyJ(7T;?!####.76$+qИ0И$%1}Nݸ ' >32#"NOZONyppoo!#"&'732676&'y2% y0c2*R$2#"&76$?332673NOY!i((2(:]xm#xnnNOp7""+^k&$-Lu^k&$+Lu^k&$.Lu^o&$,Lu^&$*"u7m $'32>&#"73.7>323!73!3!?57\?65z3'uvTDE@ϸgulMMlM-y%yJuuJv(yy1y#;/[#!#73!3!73#7!#7!!73#7!!73jѡK;ʤTrDD)]o%d%uo)D!;y/yyy!BoK&&z0k&(-xu0k&(+xu0k&(.xu0&(*xuk&,-(uk&,+(uk&,.(u&,*u %32+!!73#73#7! !4?@fL5sf_GF py+HF*7yP yo&1,uAk&2-uAk&2+uAk&2.uAo&2,uA&2*u/  ' 7 HHHG9HHHHA! + .#"32>'!"&''7&7!27)t@tE GF& F[IG' FxYIw{LzxNfAe+hdNNZf jMMZak&8-uak&8+uak&8.ua&8*ug[k&<+$u#73#7!#!2#!332676&+1/!M)pypyyyry~46&#"!736$! #"#"&'332676'&/.7>>Mpmy'@ !GLCP^2yO^Lo MX;|cwZy[Y(C=?lkbXHiu@Ji8f&DCX8f&DvX8f&DmX8V&D{X8N&DjX8&DyX {D8E6'&"63232673# /#"&76$!376&#"#7>327#"326?p3F-z"?Ls*Nwfoq|δ #! s{g+q-eqZLm,z,5/-z*T) +%1-_1PhN+H o--9ށ- 9m%. ?n4d&>nI7g꾼krPV&Q{Ef&RCEf&RvEf&RmEV&R{EN&Rj{ 4632#"&4632#"&!!X=>XX>=XX=>XX>=X=XX=>XXZ>XX>=XX!' 4&#"326?!"&''7.7!27IMn-&JMm.>42oFC34xt>EZXYYHv12VKu)21V_f&XC_f&Xv_f&Xm_N&Xj9f&\vTVQ(3267654'&#"#7!>32#"&'!- jm{- mjz=pfC3pmHidF<'SW6!XxSQcKWQS9N&\jT^P'qRD$8&qED^}'w4H$85&wwD^o'z"$8oD'zDBKk&&+uEf&FvBKk'.u&Ef'mFBK'2u&EN'xFBKk&&/uEf&Fnk&'/ul&G)07654'&#"326!7#"'&54732!7!7#7!38in{- mi=pdC3=p9D)icF='SW7"X9SQdKX*QS'x]xx0P'q>D(C'qH0k'1xu(C5'wH0'2xu(CN'xHo0'z+(CoD&z<H0q&(/u{Cf&HnB~k'.u*.9Uf'mJB~k&*1u.9U5&JwB~'2u*.9UN'x JB~'h*.9U'4Jk'.u+E#k'.uK#'#73#737#7!#!7#7!#3#3!73!3!7!1$$R$$wwR$yyyyy\yydyfE#%3#737#7!!!>323!654'&#"F+g7S}G-l Uk!tgx߉_TjCl=JyF0,4*o',(u,uV&{P'qD,u'qE k'1(u,u5&wo&,'zlo&L'zo&,2(uu'%3!#7!yyyV'-,E9'MLV6k'.6u-9 f'm?28' .E2/' Nu_$)#7!#7!3!b QrytyyyyX+l'+v/El'+vO2+' /E2'i O|')o/E')O'y/EE'yO9#73'%#7!#%!73$T/=U{06|L-HyuyyNuI%3!'7#7!7ė*}l+yy`ixail'+v1rP6'vQ2'- 1r2PD' Qk&1/urPf&Qn7'QgF9&#73#7!#7!##"'&'733276737 8ds32#"&'7326R Uk"tR}G. &W)`p373#73!#!#7!3#3i%bg-HH-db%iyuyq&#73!!!3#32673#"'&54?#73@b@'6&#:@N(\ZA* #&yJyY- "VZ@AE,\2Aao',u8_V'{XaP'qD8_'qXak'1u8_5'wXat&8yXY_&Xyak'3u8_f'|X_a'z8o_''zZXg r&:.|=f'mtZg[r&<.+|9f&mU\g[&<*$ul'+v=6'v]&=28&x@]k&=/4uf&]nF{'#654'&#"#"&'733267#7376$32hpEP^"UK-pEP^"UK  9&s3 9&sy<J)2! 2)73"#676327676'&+32676&+sw$nnae +WW%F`b~__FD\_NNxciiyY[fE+>?;;J*+3276'&#"#7!67632#"'&'!73#7$ jm>=ZmjA?$8y!"c=TTpfefpDDߺSSXXWXSSS)()(Sy#x0$32)73!7 32767676'&'"+̉ ye +lkNJf"ucyyHLOK* 326&#"7>32#"&'!73%?jm{Y7mj$)|z=pfpߺʯxSQQSyw 6$! !"$'332#"h^zeEEGܕL)__@AoA@//! '&%$!267632#6'&#"#&'&#"32767hEFz7:)bbf=Zmj?Aח=TTpeffpDDc"!y8PiSSXW6XXSSwyS() ()S OAD'3%#"'&'7332?676# '&76 "276&Ñ! dyuo)p '9kxI&. 偂f233ppA?dAAb6)^E? $!.0#X Y``_``aB)3!!#3!!#!#3D)uy%d%])D>`\`yA"'&#"#676! ! 7!32764MKܕonLhzEFF}6CD|x> SSqpjU熢Cv*#6&#";#"32673# $7>7.76$!2v:y qvy4B 'y@v(#ʛ#Gv{x((ѱ#VN "'7332767#7!#7!!73#7!-^!a56'3E*]{%e%3VD KK+y!Dn^{1#674'&#"!!#"'&'7332767#73767632hpEP// "UOOK-pEP//"UOOK  9&:9y5\[  9&9:y[\ .467632#6'&#"#&'&#"3267#7!# '&%$!27YbfEP#$^{XY&&xN&&hi D #7!##7!#! '&%$7673i!axD! kk\kkȵu5727676'&'73# 6'&#"3!73#7!>32,eTT$NOEDk`stzEAUkAA"\}R}GG(Zpp`y,@lccIC#$_R54NO#yy#x}_Tji#7!#3#"'&ʿ_ jQ yy<=cN3#3!73#73#7!#%ii%fSyy yy! 3!3!73#7!#672#6'&$?vj㡍4JBF,qAh4[yyyyy!w P$&'67632#6'&#"#7!#3!733!734 323!736'&#"3R}FG'UkAA!]y5y_Tjj+yy߇54NO#yA  ! %276!!'&#"xy[FF|n?*6>*)5>}lddy @'2F c'VR_ , !26763 3!736&#"%2#"x\UXS /(0aL/FF@A|@@|^!yy͕, dyBKLBmVD(6'&#" !2676323!726&"I:#m/333yxGAF<ʤb;pc4c7{//+)A yy<%!2#!3!73"#676327676'&+||''aWW%F`bep^^<=Ymj@? ^ -y?1%# '&7676?67676'&#"#6763 32673֒х,&rs>=ABpp;@ z},#ml봁>H32uvnn47401]f43GHJ,|{޸cd87+dZrv&`D2%# '&7>?>76'&#"#67632327673Ăcpp#ۘWL 11lOOq5mn^hg"YYn,* 22lWW%qUV5%>6B"#77m !TULM)%##@F%&>?w7(332673#"'&7#"'&76%6676776'&'&72?1j5('!HEZp,RUkv9%&?-+]`@%+'YQ?7tG9LN[f %T7E,O|.X9#q$#73!!!3!#"&'733276?"#"&7@b@'~:( >+8}5 ٚ) }\<ܡ%2'I!#"'&7#7!#:33-<xpZ*> j-ʿy5)dZơ}N yy>=g 37!3#!7#63237&'&#"+D4*ak %JB.q,FB$1\9yyyy%/GP 9;E#6237.#&37!3#"&7'3267PB.q,FZs<]AC5 q+Ct1sF3GPuyy%cGJMbu#7#7!!#!3!!73E%k5+F3% (Ch '#!73!7#73!#!%w<OD5$w:XyyfyZ+w!"&'332676&+7!#!_))v?yB,SR+FGTy((H~h. 7!#7!#"32673# $7676HF+R,B&y?v))Gఢ((yT`5'!2$7##"&7>;7!3!L)(:v@y'ПB+#w:"Ty((Hf+w'#6763 3!!73!?67!7!676'&#"Ux>{{z(Su&Ur+"U0D&31"66vUUdB%tu}g9CJq[kZ[GH'!"&'332676&#!#7!#7!')v?y}y3E)^H((Hny`%' !"&'332676&#!#7!#7!:-(v@ypP8y "Yp54y((HCyߨ5 q#!3#!"&'73327676'&+7#73UbCJR/+H~7#q [e#"2,%Ht-qyMU "R"#/0+y1+ #+#+1'!7!3!!!!#!7! X^^Y )Y ^^ XS Ѣ 1+%#7#2**% k'?' f'@' Ff'@GV '-/9u'M/D9'M OV '-P19 %'MQ1q9'MQ^k&$/u8f&DnF5k&,/uuf&ntAk&2/uEf&Rnak&8/u_f&Xna'_P&q;Da'+)_'o~a'/'_'va'-[_'~ND^'8P&qD^''|u$7P'D'D/[P'qD {'qB&.#"326?!7!7#7!3## !2BATCq4%FF)GƱ&&xxxNLhi@A.9D3#736'&#"3276%!"&'73326?#"327!#3! in{Y8mi@?Y,jm2qx'=p32=pCyPS6SR3!!ifySQ,*QSyySk'/u*9f'nJk&./u" k&N/XuA_&2zE_D&Rz&A_P&q{DE_&qk'/~ux`f'?9f&n '=' ']' F']GXl'+v*9f/!#&#"3267!"&'73326?#"776! B#@rG+$=mh$ǿ0jm2q7<'z+5M f~IYCfVFwaRaq>o>x5{kyyyy yymk&1-uf!#73#7!>323!736&#"3#YS}(ln0Uk!]y5y_Tyy5i#yfx7l .!32>&#"!3!73!3!73&'&76767ZuE?57\?65&C*E@ϸDzdQ[#;nlMMlMS#TuJ;yy1yyf&#"&#"32677!7#"7676! %C..dP] ?67[>67[9=0$4_]u$Dn,+0,l#T짧TC 7LMlMM,V$n '$@in{Y8mi* ),*QSxu S,OND|.Xi6I#7!#!)'6767g5,F^+S=>hAmZbdm'37!#!)'67675$w;F+RxE=y9+wmTh[v^'|u$7N'Do0'(CoD'HA'EP&q$DA'hEP&qDA&22{uEN&RxA''u2EP&qDg[P'qeD<9&qa\!%776'632'#767&1&#7!)@Z>*)u,g2ޙk}^rJI UeOxD5%776'632'#767&1&76&#"3!73#7!>32!@Z>*)u,g2 1Uk!]R}(ޙk}^rJI UeOi#yy5y_Twq'%776%#73!!!632'#767&1&'?[_R@b@'R+(v,gޙk}yJyZZrJI UeO9'#7!#"&'73267W 32#"&'!76&#"326$>jm{Z7mj$D=p33=pcz=pfp]$?in{Z8miߺʯ1SQ,*QSxSQQSyi6gV$D".:>32#"&'373#"32?!6&#"3267%326&#"G=p32pVmV>pe@pbA$@in{Y8mi$w$?jm{Y7mjSQQSHxySQ+ ,QSy!6iiʯT!!'?3733!73!3!;'7#cH`4"T(HE@?S NZ `+1~Z yy1y3+ŏi! *'%&!27#&'32673! ' &'&#"NI$p9E zflI;sKܕLhb UANZ'f )ZJ<T<]mR (# ''7&7!27#6'3267&#"]JDL*4momIHF,p(k&23o0LyVŠ(V5*P1hxI>+#73#73#7!#3#!731i&ff&eL-Hy yyQq!373#'7!#7!3 ƍ5Ck=vH.dkNBw@yTZL5ZyLG'CDH#"'&/&'&'&'327676'&/&'&76%632#6!"326?in#FTY* :q-708 J:;0k4q"93BC)~!"B Qqn&;>^ ), qQ%%*LLD@{I"%5MOR6 nb$$JM 9'3#7!#!6326?#"'&/&5$w;"!B Rq+K}TX) y9+wa%$JM;>^,[32#!#!7#32$&#!"3676xz1a'VMwEE&q"\yy "R!CMD2676'&#"#7>;23!73E<32+32673# &32>&#"hVn # bj+q-eq)c'9ORyyTP?{Wc"""ldlCAT A,%#767676'&7$6763 %$76'&di OC VV](0Vc#23 iC=Ymj?Q3,_c"wGBmy%;"(^ _WXZQ* -326&#"376$32#6&#"67632#"&'!7$>jm{Z7mj$D PG^{Q)(QSyD6$3 !"&'332676&#"{I43om:p er0/Rk%۶**'πxR8.%76'67 !"'#767&'&776!2#6'&#">K 2*@s, 12STO4_ 12sbf)ޗutHG UeO 0@@sx^?9 .76&#"326#"32#7!#32673#"&7a$@in{Y8mi =SUp23=pc(IBHq,M< i6Q(),*QSx}{^GP#/%3!7#"327376$32#6&#"#76&#"326T=p33=p% x@>L_34 %{ fGHGGg/P4"9'#7!3##"&'73267#73WZu 32#"&oFCZQOZOQ[yyyfyVy1yuQooQOon'#7!3#"'&v [AUQ]y8<=c0??' '!#3!73#-oyyyy5:%3!73#76767#7!67673o% nC?\T nD6Lyyy #=KFxY#=L< H%3!73#&76!2#7!3#673oh!1#B/Gqsyyy nxxI _`S9#3##7! 32673#"&7sO(IBHq,M< x f{^GP`x(!"&'332676&+7!#3!73#7!!_)(v@y B+O5#r}o`Ty((Hf}yy#xw'0%#"&7#7!#3267#7!#3267#7!#3!7#"&Y^s)lyb')S^g`b'*R_gxPnja+yy hyy hyyy]VcV'0%#"&7#7!#3267#7!#3267#7!#3!#"&_s(lya')S^f`a'*R_fxpPnja+yy hyy hyy!y@]Vc9D=>32 #"&'73326?6&#"3!736&#"3!73#7!>32J^s)L7 323!736&#"##"&'733267VR}(km1Uk"t 32#32673#"&7676&#"3R}((IBHq,L< FN1Uk"\y5y_T\}{^GPhi#y'373#7!#7!##3Nagv dgz0}}}V{zED  ! 2767!!6'&"X33y33p@9.i$ "A7+)`VWaS_aRu`, )%#"3!"$'.7>76$3!#7!373#7#!73T^3/9ot]{שl1CHTW~99W%)=?)%P,=2326'&'&3276?#"'&76767! #"'&v![E!6ȇX#GYo<H8ee{GG('11 ru (rr|FE(xjlͩjx(POpoOQj=f=jQOopOPLf%-!#3!73&'&767#676'&!Dz33ը9o9x33ԥD=2#Pc*֥8'Nd)yuvyy%ts^E,`a,2/``/'33267#7!#3!7#"&,>q @Lt#R$I|W =US̵yyyok 332767#7!#3!7#"&\>q @LtWW#%I|W =USfhyyyok 9'%33267#7!#32673#"&?#7#"&=q @Lt#R'IBIq,M< %J|W =US̵yy{^GP}ok XD#6&#"3!73#7!>32>q @LtWW#F%J|X3USfhyyyok 9D##6&#"32673#"&?#7!>32>q @Lt#i(IBHq,L< %J|X3US̵}{^GP}yok D%3!736$32#6&#"F} 323!7f}IBIq,L< }Fyy1/GPyy'&33!.'&'&+3!73#7!2%327676'&'&+P13^;y)  8EH׵htiZ`"yeBK ,!-3y !!>yA[yy5y5 Ko@7J3<>H*  ]'&3#!73#7!#32767>7!#32767676'&#( YDQ|)E8&L6>>LCy44,> 5-f 7AnK 5y5yy[Ay>!!W  *H><39D<?332676&/&'&76$32#6&#"!"'32673#"&7(1 q }l ;d:;"^{4q tl| PAA#,.(IBHq,L< +w}KF@F%*LL!mnEB6%5NNc{^GP7!67632#6&#"#"&'732767UJ,p32&"IBIq,L32@@':@N(ۂ$yyJyDVZO9q#73!!!32673#"&7'AbA''IBIq,M< yJy{^GP>'%#7!3#3!7#"&?#73#7!!3267CZFR}(CZQ&-Xk!XVy1yy_T\yVy1y%kD$H,!#"&'&'&76767!7!27676'&'7! ONj`stz{FP #N=$()TU$ @lIC#$FDKaan@ybpppp`yA'$#7!727676'&'73oDs,eUT$NNEEj`st\Ry3pp`y,@lccIC#$'3!733!73uqq{0'Ryy`yy'!3!73333!73hŋs}`dt}TyyfRyy?HE>32'6&#"3!733!73Fs1sC+q 4CA^;squbMJGc%yyuyy)!73#7!##7!#3 7Ayyydyyy 9['37!#!!332673#"'&? 5$w;c)'IBIq,M3 3!7tI%6&)fZ#"q*DH+.shyoy)0/#"R" UMyyZ%3!73&'&7>!2#6'&#";oyJQ.+H~8$q [e#"1-%HtyyylMU "R"#/0)u,#7!#!"&'73327676'&+yJQ.+H~8$q [e#"1-%HtyyMU "R"#/0)y8!7327673# &7>!2#6'&#"8eZ$"q*EH,,H~7$q Zf"(\/#"R"  "R"#/8}E@ %6'&$"'&762(55||55||vwZXvv<...5565655'' +%327654'&+7327654'&+7 )73#7Zvi;TZOo_p7XwOya_Ldy-6{C%4%+W4*yփE8 G:Wy5yoD8%276767'&'&#";#"2# $76767&'&76$I8$C+159#FlEC:;&&QR//oPc>M@x>@I`32"/gGGHGfBp34'&#"327#7!# '&7676!276$32#6&#"T32#"&'$767232#7!#6'&%&#&7>7}RNZOQZN+N+'.*VnETQopPOonM3Uy\8?QYO,X8rVM'733!73%#7!#7!#3 Asb}tPVy+yy?yyXy x' 373#7!#!73p.Hy5yy3 ٔFF-tI%6&)fZ#"q*DH+.shXyyyfy)0/#"R" UMZ)%3#!#73#737&'&7>!2#6'&#";3#FJQ.+H~8$q [e#"1-%Ht-yyyfyMU "R"#/0)y %*76&#"326#!7#"32#7!!!!8$?in{Z8mi=p33=pc`cs5#i6ۇSQ,*QSxww;` 3?3!7#"32#7!!!"&'332676&+7!76&#"326}=p33;Tbj&J=p33=pcs5#i6UF%rw 8\*"SQ,*QSxcqE#73!!!3267;32676'&/&'&76$32#6&#"!"'&'#"&7@b@':@N$qI?l e:;"^z4q sl} O@A#clfn\ۂ$yJyuDVZ)I>KF@#"%*LL!mnEB6%5NN8}79#73!!767632#6&#"#"&'732767!32673#"&7@b@ UJ,pF#73!!!32767&776!2#6'&#"67 !"'#767'#"&776@b@'~:@($(2STO5^ 12sbf* 2+Ar, &[ہ$?yJyuD+(Qv0@@sx^nHG UeO +AEk~92C#6&#"!3!>32#"&'7332676&#"3!73+!3!73#7376$32opt,g^z4q tl} O@A#cl*KF@#"%*L4P!#!73#7!!!!@,`cs5$y#xwwDw)#7!## ##7!##7!## ##7!#+P[ RɟIܞjL  RAP[QɟIܞjL QASsJCCuCCsJCCuCC#7!##7!#D*z*D`C*z+DS^^VU0 3!73#"'&7#6&#"#7>32332767#7U]XR}FF'TO'IB$%q,M32332767#7! 32673#"&?#DR}EG(TO(I@&$q,M8E*(4T CC5;;sCC=K,,_C 07337>32#6&#"676323!736'&#"3 bj'*-,I+/ "3:9Rt1/=c c T>7F))4U CN[^ ~-(E4;;sCC=K,,_C$67632#"'&#7!#"'&'7332767 +*53 T35 b HTT'+,-I+/. -,>Dg\./ ~-(E%9#6&#"3!73#7!676329#J+1L67.~ : bYi O.> 4733276?#7!#3!7#"'& #I+2K76.}  cYj .==P0.99eCC4Dj>7R*733276?#7!#32673#"&?#7#"'&8"I+2K76.}  bu /+- I1-/'.=>P0.99eCCE(-~ ^[Fj>  '5#!73#7!#32767676?!#32767676/&#9.5 ]Pu' r`r  s*%  0& \"((-O!#3 '0 $>M*000 30#98Z4#7!## ##7!#mQ[  QȞIݝkK  Q@sIDDuDD_[#"&'7326?#7!##7!#,13J K,I$+*;%KRk[TB }+*(8[DD`DDTq!67qn| 0߿hC7`Tq>?!Tm}  1߾.C7`4&7!3q  4.`7927>'H#X7-.6vDC.cdvt'&l&'STTS@"'&6763"JvDC.cdv6-/tSTTS'&l&' a"327676'&#"#7>323+7xNK0" B; I+Z/65HBDc cb w.o44~/+CC-}"3+73&'&767632#6'&#";b bc cD17JI/R%I;B/KCC[+/~44o.wf3#'#"򶤩f6(f3%3춤x3bb?P qH@3bblx)3!#˫IG5I ll/x!#6Ix&?`iL&F`jL\RzJ 733##7#7$$T5327673#"&\}01?@}kj5I''''ISR)3N 6762"& 43x$# hxF<++++<;XX} 6762"'7327>'&#"l.dcDC.dcDn  67-.67-.TSSTTSS7&&'&l&''&4o!33267#"&7>}>514'T) 8b*qk TAJ)- \T4mV!76763232673#"'&/&#"DDf%!!(>'$)> nDDf%!!(?'$)> KL /F=LK /F=*f3#3#C¢fxe=327#"'&7 `'(:cYW2_tKA |+^*, 0]Qx376'#7!#7#7!#76 {M  T^U  \٣(sFHHGD-DDDD_w 3!73#7!Zc U bb HCCC(273327676'&/&'&7>32#6'&#"#"&(!J)*TF*)B\f('>CDPJ'&TFP5Z,+^\@C##'$*+Ia^ =&% +,Ne/0 7#7!#3!73'3!737'#7!#=V  \ڝ\ H Yc] cN  TDDCCCCDD-}"3+73&'&767632#6'&#";b bc cD17JI/R%I;B/KCC[+/~44o.w\ #!7F$\\ #!7!F%9\x(\ #!7!sF$s\PPn\!#!7!39F%(x4\)7!3$漼n/>?!%>?!n|  0߿ n|  0߿.C7`C7`fCfvfmV{P qM 5w)Nx)NjyD2#767676'&#"76h (<_WK8 7Id m47Q%nn&1&8"#8~yFf|fn3NNmp'Dpf#!#Ztfxx79'w/x_5w 3@ #6767V^WT*hE+rPP7'&767632'6H@"$ 5/AD& !7{ZI ')>61+8B8Y(Bw/.&'&767632W7kM :;EA" 31x./wB(Y8B8+16>)'-f!#DfrC 3vvbO%#7373#$bü%33##u$㞼syq!7!#Q%bc7326764'3#"&8B)8  tT4a2~2&84(P&6`*r|>l"3"'&67637-.6vDC.cdv&'l'&TSST73733%%ü#7!##%%a% #73733##$$üa7!$$a9#"&'733267P?3,V^VTp*hE+oOP7oz4ozr3NNm`r#!#7%JvJ%x;r#"'#"&7327676732767y2!$^)E]eO~JF% JM#3 HHs zvnvbTrm ;trwl=<@swqw9t{eMrqtfBaW)&'&#"#7676763232767673#"' aXO<nCAredcaXO<nCAred` B$! &KH.)9B$! &KH.)94X7!4yyfX7!f:yyh.'-EC3VgVM!' ICINZZ[3"_4Vs37!-- o>pn=y;Wr67632632#6'"#676'"z2!$^)E]eO~JF$ JM#;3 HHs z&< '7'77kZZkZppoppop)#"#32676&/&7>3%M=%M=UY"5!%dUY5"6&$: ')ENx9#&'& #67$\$d$oP8^]wwGwotf3pt[VHJM ?3?K+56g2߂] >2"&>?!ZYy+-OpqnneSϊXm4f!#AfL)&j^f'  ' >32#"NOZONyppoWf'tW ?f'zWlf'zWf' WAf'f'0]&Є^$J%%L])3!]Nd)0(=+A "!#3!73#2#" !  %d$ $d@@{@@|xy[FF5BKLBydd,8.^73!7333!73Dz=(Eyyy\yy 0173!3!#!##3!73#7M{RNR{rD{RR{%{d{%%{d{%ZZA2X3 # !#7! !73>)@{%3f{R*Z_q7g[<K&/67676'&'3!737&'&776?#7!#%52t--H.숸02눻2062s--G N2rr1yyYne$\yy\$en|61rr2w;113!#"3!737$'&6+7!21#7!#676}6:$f["9711Ym69%Zf$=6/K$fu0y1ywiyyi~%y_.eyy7!%!73!76 !3!&7 qN<#&49:2f&"<O۶+> w>+θ} 0 '5 5}\A<}'*ug['*uCf&.f&V\f&f&ϝ& CA,6737'&'# 766'&7676di OC WU^ئ0Vc23=] iC=Ymj?Q3,_c"wBmy$:"),+ `W6XYRV(-%327676'&+7327676'& !!"0=Pdq$IB4'8J+6CN2Se{"ccuM)da Ta^yxDYK0m)\oTS"fSc''&7#7!76'&'73x Ctk"euVT 0 0C̸Gwgnk!4fMJ,: '0&76767632#6'&'&#"3  7626&"!dyuo)p &9kwJ&. 3333qpd5b6^E? $!.0#X+XL.6H#6'&'&#";#"32767673#"#&'&7676767'&'&76767632)p &9kwJ&% *;0=[0+@S .o-~|{h f a&U>@qlu$!.05$#1?*G*(=5 #<LO~H?7<`E? >U!#!3 #7276# 67{ y8 [)/RGy!4(!yo]Ll& V\D3#7!>32!6&#"R}GG(1Uk!uy_TjgXi7!,!'&"!276 ! =PD;h@KBIJJIAQ6sy{TM' %'&7#7!7.%t+zzf!p|qRy3G')73#7!##7!#3!733^KPs}t9y6xx~yyyy{X%3!733!73&'&'&7676P{qv]u8S)WA+(q+N;H'PyyyCyy+'%M  @V'!#7!3267#7!3!7#"&' t+/Xj!\巘G{J7VXynyRy}SGua')#7!6767676'&'73Oj8V#  73OER_MyQWmNy9L,;UQwapKq,`/U)&'&76%!#!!3#3 #7276#&'&7jQ^M"' y8+00=cC /%,)%W* y2ړ8JCcMDCk-HQ]oY066XA,~fpgnG99NvX6/79D5%3!73&'&#"#767632#7!#327673#"'&'ws(C$<"#^'533/<>82gbs@$<"#^'533/<>7jj tkD.)hkklD.)V'567676767673!&'&'&'&7'&'73 2+KT,'\ <40!CcNT~@TR3s981!!3 O0,(%&'J ep]A,)n+X6;+Y066X~,Ang HZ'67&'&76767332!327676'&'73''&81!" $L>%,(+Qx3DbD3wQXT,% ON"CdMDVJXy6XA,~fpu \upf~,AX6/7!'7N&jMN& jEf&oMf& HZf&8, (676'&#"'&! #327676'm imPDC*zuIJ4[[KDf@qiSE/kAxy{^z~s=f,%76#"!3#! '&#7!3276 8 *[(G0Uupkv&iqKBHraC?nYA:ny(yݔ]dի1%6#6'& 3!73aIEA qmka?ZA|>,Wx`T/pyyFyWf'1&*u?V8' !! '&676!27676'&#"5[v13NN31[Hfq'/KKvvoq/'A:-qLq~a^f^a~qH'8!32!327676'&%''&'&'&76767#7! '>%,(+Qx3DbD3wQXT,%%L CdMDVJXy281!".' @fpu \upf= &%X6/7!'7/6X/yy*9g6B!'&'47'&76?676'&#676?7673#"&'7376+-'*E,@;k <8L*p9l+M nn,?\(dTiO"0B'/ 0yuh1D(dTlG /C}KP#%gY %2#"!&'&! "@A|@@|\OOxy\GF\BKLBkh(dИlY9D%26&"!&'&! {pc5c6PPW34x43~T_d!b)bhUr% #7276# '&!2#.#"T|GEzG큖\q[Llkf@Af[U!7673#"3 #7276# 1cp&uFvbTR0.QHy!44mD3g< edo]Ll& (%)P%67632#6&#"!!#"&'733276e!CU.y%\(dTiO"0B'/ /zuh1A(dTlG /C0 7rr$R8E 032676&#"762#4'&#'&7%6#"&'$>jm|,17mj&+ʚ_*$q/c]eP!drY`e23pHiOJXO<,:)L-^JHJQSED# !2#6&#"3267\I43nom:p er0/Rk%L& (**هπx9 >32#"&#7!#"&'73267PRN[OQZ 3 !"&- hkQD0l '+r+p:}o34LxhWyZd'**ڳ#73#7!#!2#!332676&+1/!M)pypyyyryVQ 326&#"!#7!>32#"&'-$?jm{Y7mjjz=pepHiʯTFxSQQSBK! !2#.#"3267hEE zGܕLef@Af #73#7! !#3!73#3;hRg޾yy9yyysyV' !#3!73# !%ov}"' yyy_LVpE%73%6#"&'!!!732676&#")dwqY`e23p@n$?jm{-17mjyeHJQSyppi 332#"#6$3 ! $ کLG-zeEE@AoA@__BK #>32#"! !2#.#"3267NOZONihEE zGܕLyppo`ef@Af  ##"&>32332#"#6$3 ! $JNO[ON( کLG-zeEEoop%@AoA@__0k'-xuN0'*xuNJ-!"&'7332?676&#!3!73!#!#7!!2uF AeSP- g+>K\Nefw t6,^'*0u?V6-V*7#32#!73! '73267#732767654'&+aLvQ+Pi65x^fN,3qy?8XZk1GXy #rQn$'iL yMPKy"$yLL-'_>zy-H H-Lyy;yyu_k'+6uSk'-0uQO&\dr74#!73#7!#!#7!#3!"YgRfd,6qyyy-yyy^$#32)73#7!#73267654'&+^vzM+H-- 6OϐL"xKq$'yy-/'`7QJ%% %3!73#7!#7!(3D)yyyyD #%3!!74#!"#3267#7!#3T6w Yd,6yVbq&b9V*q>hm$yyF0( +!##7!# 3!733!73'3!73 #7!##Qu-ѓܖYYf -uyZyy@yyAy8yyyyy#yyZm. $'3 67654'&!#73 67654'& #6$3 = (Ǚ4 0EB4 '8&y::}c5/4/6߽i0*_=Xx)78/C{+##`L#'#73#7!#7#7!#3!7331&yyykyyyyCDy&Qu_!##7!# 3!733!73#w-ؓYydyyLyy=u8yyV% '73267#7!#3!73!^fN,3qy?8U65xMPKy"$yyyy 0+A2!#3!73!3!73#yyy-yy3BK&_q7O"'7332?#7!##7!#v.3jF *"DPKb,ryy"yyb:!NK (13"3!737 5476!7#7!# !7276764&#34ddTp 1@ 1*dTo1fda_^A@> *={yyyxZ+0;yy.'W;Wyy `%!#7!#3!73#7!#!#7!#]yyyyyy0yy 74#!73#7!#!#7!#!#7!#3Y_Vqyyy0yy0yyFU 654!#3263!#!#3 )^ w{wi-H`bh +-'uy *0 &e,)73#7!#3 654!#326+bhK w{wyyy *3-' $! ! $'3! !7!65 #[yF 'gcoЗYd`AdR  -#73#7!#37$! ! '&547#33264&# 1jQyx)F|jF]@!\!yyy/\hdΓ8=yNBKrC &#"3#3!73#3!73&'&5476$!zr *=kP(fhM %DH,%T4Lyyy#yyV#H6v)28DDj6"136  '&547676$%>2654'&"PIu<"T]3|_- h8Ed>qR Q 6\zB%(n8tkAJՎm:G:Ĉ :&LK!__ML#a'' +%327654'&+7327654'&+7 )73#7Zvi;TZOo_p7XwOya_Ldy-6{C%4%+W4*yփE8 G:Wy5yrlE"'6$ 32?!"&5476%654N[u2Nwo&Xme)Bf762#654#"327#"&'&/!#Q.F>qg$1F)0K +QC2bLmV'^a?#7!#3!73!#"'72{ZW/!"np"5M?TE}Vڤyyyy5}'3!73#7!!#3!73!P7y3pZcyy5y|yuu:'3!73!3!73#7!#!#7!NJJ{>]>}yy}yy5yy?yyEDRrPDQ3V~DSEDFrDP9'\?V A32?'&#"3264'&#"?6  /3!73#"'&547 #7!]J- Ha T3wR 3R/<_2 HbH:z^3{" Td77L:7!Q7\Gk@IGyyqGlAI(Gx'['%3#7654#!73#7!#!#7!#ʥOw Z{]|yl sy5yy5yy' 547#7!#;#7!#3!7328{;qR|z7yyByyyy'%!#7!#3!73#7!#!#7!#]|{]gy5yyyy5yy5yy'!)73#7!#!#7!#!#7!#3#7654{]g]|Ow y5yy5yy5yyl sI['#3 )73##32>54&#@\; ,#y:)INnN'yO7o!y5+`m@U' (!#3!73#)73#7!#3 %327654&#o; ,@\QINQfnN'yyy5y5yyO7o032#"&'732671Uk!P0xBR}( 8$7!}%VmmRRyy!kyj'+327654#73!3!73#7!#!#7!#32#Jy!AJJ{>]>|>8#! y}yy5yy?yy!l#%#73#737#7!!!>323!736&#"3Q0xBR}'`a1Uk"Py+yxy_Tyyidyvyf'vs_f'Cq9&| Q'!"#7654#!73#7!#!#7!#3_d+,r Z{]} sy5yy'yyy@x -3267654!!#!#7654+3 )73#"#!7#{w r8yR6i +ȌZ)y8r-'yY j+/y!Y *#"#7!#7!!#654+3 )7332>54&#+.b%l/ G^ /lZ.A\; ,INnNznx fO7o!yt`m@UAFD   547!26!64&"A3$yx#yDA@J}Nu~+!3#32#!73#732767676'&'&+u;;#Lwe +QipXrD&kN1++LX/щ#rciL y$ LO2q.32#!73#73!3 3276?676'&'&#@8p3..O :|Q@W@Jy47,% :$J @ AkJ 5y5yJyH $9e6^ %3!73#7!3!(9Tyyyy%R9X !3!73#7!3]>}XAy}yy5yy?yy;L !#7!3!73!3!73#7!#!#1D)wwbRb-yydyyyy '!#7!3!73!3!73#7!#!#<8y!"JJ{>]>'ߨyy}yy5yy?J 1!2!"&'7332?676&#!3!73!3!73#7!#'F AfSP. >zy]Fy;yyőyyy!f'#!73#'&'&7#7!#3#7!#3!7e&D8{;&.R}XAy:9iyyByy;Le#73#7!#!23!736&#!3R1a'>>zyyyyyy;yE#K, k'1uO45'w6oJ8132!"&'7332?676&#!3!73#7!#3#7!#'F AfSP. ]>}}PG^{syy5yy?yyp)!3!"&7#7!#3!#7!#3MDF]ay'>>zy;yyőyyy'#)!3#'&'&7#7!#3#7!#3/AX7e&D8{;&.R}:9iyyByyn !#3!73#oxyy#^}'w4HI85&wwi^&I*"u8N&ijX/[ {D0k'1xuNC5'wnAPNDA'*uNN'j '*TuO4N'j6om&P*uN&pjcx`'?P&QqD_&qq&Q*u_N&qjA'*uWEN'jwA-ED"A'*uEN'j &f*u-N&jbOP&\q6D9&|qO&\*8u9N&|jTOk&\38u9f&||Tu&`*uN&j%#73#7!#7!3!13D)]Fyy-!f'#73#7!#7!3!!P8y!"XAy5yߨ;L &d*uN&jdD5?326?# !76&#"#6$32>32!#32673#"&32>&#")-^[o&\o2(Xr*N ?h|δ # s{g+q-eq*m,@x>@I`32\|a_e-#"'&547>32#7!3!|QO-!OQ-"Qo7*7Oo7)7yRyD1"26&326?# %76&#"#6$32>3 !"&pd5b6).]Zn&Zv1)Ws*Iф9U23ҩPL:(϶ztMOMOMzD ! !&"4x4s252)l ! !267k33251)*!73##!#!2676&#!#ybR4#ycmw%y@|BXjd+ -%"&>2"&>32!73##!#!2676&#!#1~BXlb2rt0%#!#3!2676&#!#3!2676&#!#3!73#V\@#y{yt|yvyt}yzy5ybQ7Jsy=S^h`>R_hx>nD(7654'&#"3263!7#"'&547>3273 :=G=:IS#_>}6! }?J:<(.`~T20[^CJ--S3L-6-.[i'#7!>32+32673#"&32>&#"A`?7vEgYu>PCSHAG"T>P$24L$CK/,aYcb"GD06~u,u;o7;K !76&#"326!#3!7#"&7>327D (BFM8#EBQ^>_d_&kF ȎGV:g[`a[B32>32+32673#"&32>&#"C<9FR:~F8WHgj1Tz'BNruHNARG@HVrTEP&86It]\k ++rdB@c^++++`Zcb"@J05~*yw<}4=Xz(#7!>32#"&'#3267654'&#"`?M&jG@* ʏFV BENDCPB.-S6R*/--J6'!.a~M10[g.(7654'&#"326#7#"'&547>32#7( BEMDBQz'jG?* ǏFW>`:7&".`~N00[J--S6R)1-.BK '654'&#"32673#"'&547>32/;:#& WIhh1K4 㩧E1 J..-6mA6,,3C@c^P8X'.V;a,2R&326?%!76&#"#>32#"&C<9FB8WHii1! 㩦t]\k ArdC?c^22"&76767&'&7>32#6'&#";#"2673 HIvp78 Ǯ7<=@I"!JD+* %%VY33 EHZkHFUM9'' ''8NU v34*"#B"#)43DG64A22#"'&'73327676'&+7327676'&#&#676 IIvp87 Ǯ7<=@J"!JD+* $%WY34 EHYkHGUN8'' ''9MU v34)##B"#(53DG55>%8#"&'73326?#"'&547>327!654'&#"3267vqCEH#%Rgh&jG@* ȎGV> BENEBQ|2VnB--S6R)1-.KC7&".`~N00[fm#"'&547>32#7!3!b T32 T14^`?s_ -= += CCUn##7!%#733#5߰_>z>QHIBCCC0r./>323!654'&#"#654'&#"##7!>32c3oERZ:69$<"*CWG% OJWG% OJCS307+654'&#"##7!>32#"&'7326Ad6CSIs_>4rNq- b&S,G ).0g' V^CS4/:&;"(GY\ }  4MT!267654'&" '&547>32GQRR; R; j\64j[66>R;\#)R;[$(1>32#"&'7332676&#"n/ !ED$F?H]h3WD`>dcJHnqFB >32#6&"  !Rѐij #"&73267  !RБijX(3267654'&#"'#7!>32#"&'# CEMECP_?&jF@+ ɏFVE:6'!.a~M10[^CK.-S6R*/--u#73733#32673#"'&547aa((P  $(2 ^sy)CC101XG&3$3!7#"'&547#7!3267s_4qOq- D`?L7DQICR4.:%_4!L>}K WmL0S#ZEcdT$0;7G0#"&7#7!#3267#7!#3267#7!#3!7#"&U4;S@PP=332#"&'!73267654'&#",n#jm2q7<'=pdC3p> in{, mi$!! \/3ySQdKXQSyfcF='SW7"X?'!#3#3!73#73#CEoFC'yyyyfyV9n%3#"&'73326?!73#7!W &#"!73#7!>32#"&' (BFM8#EBQ^_d_>&kF ȎGV:f[`a[WCCK.--- L##"'&547>32#654'&#"3267.P9 FE$G G^g WCacebQ9[%+ 8$nG1+9GBY,,.3276#'676!"'#767&'&767632#6'&#"[(cV9/c tH VW}}e543";H^>@ &T;D 'n'/OO8+TTT M#$@B|4.R ,#"&7>32.''7.'77.#"267>dM"5X= V3-FS$Q R~"=R7H" = (U9 i~ih;i82"'&73367676'&+7327676'&#"#76763200kCHE** $$XW54 DJ-,IIAB6 IIvp87 46GD34)#"B#"*43v UN8'' ''9MUA+#454'&#"3##"&'733267#737>32F+3;v5d/G+3;wcc6c/r?GKCae } ?GCIae |#7!3##"&'7326?#73_>tji&T+G ).0^^CCEY\ },'4CEC@'!##"&'73326?#"&76767#"3267_rCEGKQhh&kF~ fd,FM8#EBQC|:8VnB--~TR`a[f3!#"&7#7!#3267#7cG4rOqYD`QE6CR;RB<4.tq1CCJ:W^C3!737#737#7!3#>32#"&D_b_,`_*_>9`_ T328 T239CCCCC-==-+=<#7!3#"'&J]32#"&#&767232#7!#6'&'&#&7>7} S419 T23921SPw_>6 E t T,-=>,+=<*/zlCr#-1,PE1O^$1#7!32673#"&7r`>2.*- G0X&}BEC4',| \Y#~3#"&'73326?#73#7!`&S,G ).0__?CEY\ |,'4CECB 73#7!#373yexydU.CBBA.7=>32#"&'73326?6&#"3!736&#"3!73#7!>32;yHsY0#&S,G ).0#)5;S@PP>42pERZ:6rsםEY\ |,'4CEm9OJCCm9OJCCCS3070#"&7#7!#3267#7!#3267#7!#3!#"&m4323!736&#"1#"&'73326?_?4rNqZD_pRE6CRJ&S,G ).03CS4/tqCC6K9V^EY\ |,'4C.+73#7!>32#32673#"&?6?6&#"3/_d_>4rNqYR.*- H0X&},26CS:RCCS4/tqEC4',| \Y K9V^C73#73#73##3VdV4=AVtu?ACEEE_CMT  &7>322767!!6'&"<  oG($)#f5/ut/6o-45-J%-!#3!737&'&7676?#676'&{+Ma j$|b{$Kb! g+{'g 2? (h#1? C ARRA CC@RR?) 55/ 55;?332676&/&'&7>32#6&#"#"'32673#"&78GOQDR%?Xc%%`33 }**!F&P7. |,'(5$#73733#;#"&'733276?"#"&7*aa))O%&S,G )- RCCL&sY\ |,'E5Ke_%7#7!3#3!7#"&?#737#7!#3267*R19YX,_4qOqY QQ*`?97DQCCCR4.tq2CCCm;W_L_,##"&'&'&76767#7!27676'&'7!Og11 WC>>>eY5B[y$7#7!727676'&'73+I`>W`?65Qg12 ,+CfX5B#GGN<67(%I3!73 3#73zJQWWMaCCqCC 7!#7!!K$pCdB:A07!#7!!332673#"'&?1K%p.). G1X&A?CdB:uC4',| .,[E G'"#767!7!#7!367676'376VK$p%5>fSC` +A PP CdB:K2Sk>;'6#"&'7332676&+?!#7!32W' 3*( /*....vIVVIHRRH^7&$77D&DJ&%u1)&EuKJ&%01K)&EmJ&%1)&EBoKk&+uEof&&'uk&G4uK"'Kl"G&'k&Go&'ok&G&'m3l&GmE0&('u-C&H'50&('u+C$&H'50&(\CD&H90&(cC9D&H%&)u{&IuB~&*u.9U &J&+BuD"&KuK"+EK#"K&+BuD"&Kuo&+Do"&K;&+D;"&K!9&,"9&L8k&.+.uD.k&N+duK8&.DK.&N8&.@D.&N-K+"/+K"O\K+P"pqD+KP"qqD+&/ej&O+&/m&OmF k&0+fuqf&P &0prN'xjPK "0rKD"P=&12rP&QxK"1~rKPD"Q&1qOD&QZ&1mrPD&Qm A&2'u-D&R'VA&2'u+DE&R'Vk&3+xu3V~f&S^&3u3V~N'xS9&5uqN&UK9"5a]KD"UK9P"qD]K "q9&5D&Ut&6QuWN&xBVKt#6KWD#BVKt&6'QuKWN&V';^p&7yub&Wu_Kq"7cKq"W5^p&7A-q&Wz_q&7mq&WmKa&8K^'&X%9a&89^'&X$a&8^'&Xa&8'+J,u^&X'ma &8'(uj^&X'JDlo&9,:u)V&YmK'9*K*'OYg r'-|:=6&ZC g r'+|:=6&Zvg &:jA=&Zjhf &:|<N&ZfP &:QK&LoAK&2FEKD&RAb&2@uD&R<AK&2'MuDKf&R'Ka'y8K_'&Xab&8su^&XSg[r&<-|96'C\fKZ&<'&\0RfZi&<|9&\fZo&<,u9V&\C&C&C&C&C&C&$C&C&^&^&p}q'q'ƬE&ri'Dz^&^&v.&t.&.&g.&r. &.&n'>\',} r'B r'BƬt'y 'DzV\&V\&V\&V\&Vl&Vc&Vr&V]& '>'2} 'N 'TƬt q'y 'Dz 'l 'mM&M&[&h&ƌ&o&Ǩ&&ȗ<'J$'2}:'H@'NƬt'y'Dz' l'mE&E&E&E&EV&E@&}&<7'} ' 'Ƭt'OyE'DzM& M& M& M& [& U& M& M& ' !'Ƭy 'ZDz'pmHZ&HZ&HZ&HZ&HZ&HZ&HZ&HZ&&2&Tht'} ' 'Ƭt.'Pyt'Dz'l:'\mCf&Cf.f&.fV\f&V\fMf&؏fEf&EfMf& MfHZf&HZfCM&CM&CM&CM&CM&CM&CM&CM&^M&^M&}Mq&Mq&ME&SMi& w^M& ^M& M\&VM\&VM\&VM\&VMl&VMc&VMr&VM]&VM & GM&!;}M &"WM &#]tM q&$yM &%M && M &'HMZ&P@HMZ&Q@HMZ&R@HMZ&S@HMZ&T@HMZ&U@HMZ&V@HMZ&W@&M2&XhMt&Ya}M &ZM &[tM.&\yMt&]aM&^M:&_'C5&wC &qCMf&`CMA&CMf&CV&CMV&^}&wH^P&qDf&Hv^f^M& M '&767632'6g@"$ 5/AD& !7{ZI ')>61+8B8Y(Bw/.V{L)&jVM\f'VdM\D'VM\f'VV\V&M\V'V}f'vWf} f'vW ?fM& )'ST' mu'[5&wy &q&֎]V&-&k&1uP&qD}f'vWlf:'dT& fn'TM5& wM & qM& V8& V8& MV& _& g[k&1Dug[P&q&D}f'pvWAf['DL)8'jL)fCHMZf'@lHMZ''@HMZf'@HZ'HMZ'@}Jf'vWf}f'vfM&4fv#&'&767632s8lM :)'T!!t4T!!.!!.!!.!!.&BBTq!67qn| 0߿hC7`C`>?!Cm| 1޿C7a;?>?!m| 0߿C7`!&'&547! 6"  aUmHS7N@3*^TB!67!67Bn} 0~n| 0߿hC7aC7`C1>?!%>?!m{ 1޿m| 1޿C7aC7a ?>?!%>?!m~ 0߿m| 0߿C7`C7`&'&54?!%&'&54?! R  !7VR  !7C^)3@O7SHmUaC^*3@N7SHmUad;L 3%%#7J~*qc*J##R##;L3%% %%#77J~*q \*q,~c* \c*J####I####'`467>32#"&'.'535II245633JI326J235624IJ336633'AF'AoH'` 7>32#"&NOZONZNppNOpp` %>2"&%>32#"&BZZsNOZONZNppNOppONppNOpp^` !%>32#"&%>2"&%>32#"&ONZNOZtZZsNOZONZNppNOppONppNOppONppNOppl  ",0<G2 &7>"32676&"32676&'2#"&6!3#2#"&7>"32676 a&''&@R !@AS! @S !@AS! -M󿾣MN,ٿ&'󿾢'&S !@AS! dߋev-d l !-9CGS^2 &7>"32676&%2 &7>"32676&"32676&'2#"&6!3#2#"&7>"32676 ο&&&&@Q!!@AT f&''&@R !@AS! @S !@AS! -M󿾣MN,ٿ&'󿾢'&S !@AS! dddߋev-d-7Ѳv -e- 7 --AB&M B0&""&"&"N 27676'&" '&632)*65)*65 KL\\<<==<<<|nnd &!737!733#3%}f}A^yX^yN7%!67632#"&'73327676'&#"#7 (0679TTuvMM(LHW]99 Y-,*(?[LMKKPP76om67$E -67632#"'&76$32#&'&#"27676&"0/66 '6&#"3266&#"3276`m.-ppUUHGs^''V<:;>,*HI%&IG&'a88[q<==Cķw,16wܭu d"/;#7367'"76!3 !73 6&+ 3 #"'3276#"&/H225@c${EqIewej @2iH:YF5ABpp;@}|+ E#"3'y*32Zrv32uvD9y/ ;+y1-1]h23GHJ,|{2+y!*#&'&%6?3#&'&'6767 Ql7y5A?.y/54m~Gv7)KPCY;`\A76EtSLFΐC[EAWTQRE#KW 462"&54&"2765!!>3"!#7267#7!nC+qj98P89NXzNYN׿tvNKwLd54&"#"&54632#"&54324&#"324X:*:|fMHeMIecBds<+@lFWt|uy )%! 3dd+) %!#}{1b+/w!#3!53!3!53#/XFFT^TT^TTw!#'.#!!26?3!5 ӋX\S~!v0" HX6S4+)X&G!!j3#, ' >32#"NOZONyppoHD 3##'%ugdɌKZ3qtk %.#"326"&'#"&54632>3"3.zN]vlQK~F\E`]XD_#|F-{=LJqXUqtq}밸urKL /32654&#".#"326#"&54632>32#"&-{N^ulQJ|.zN]vlQK~E`]XD_]1KLoYVqr$LJqXUqtE}밸u찷qr%!3!0r%!3!045J!!! 5EGT5J!!!5fgwT1N76! !4'&#"!1o{$o.8.> c ('8z`yNB2F KbPfbN>J?(:1'S S1 'S@'S S!!#"/&'&#"5>32326]e_ aM``d_eMUS: BGJVQ9 DH-!!#"'&'&'&#"5>32326]e_  aM``d_eMVR9BHIVR9 DH9#"'&'&'&#"5>32326#"'&'&'&#"5>32326]e_  aM``d_eM`]e_  aM``d_eMoUS:BGJVQ9DHVR9BHIVR9DH !3!!!'7#5!7!Vb5}I !!!!!!r %!5 5yPP 55%!!y 3 %! \ !C|N!#!7xVz !#7yKxN!3Obb"Vxz!73!Kbx!#{hI,$%%$nn!"nn 8ʸ'+6@KV#"&6 3546 +32 &=# &6;5#'54&#"3!3264&#"32654&#!#"3265˭ʏʭʏeHGeeGHefGHefGHefGMGeeGHe`ʏʭʏ˭GffGHefffGMGeeHGeeHGeeG!3!h{q4732#"&'&'&'"bwL>.> abP-( #"&54632267bwL>.> a(}@bPqT !!!!%!!Pr6L+x  #/;GS_kw+7CO[gs!2#!"543!254#!"+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;22+"=4#"=43+"=4;2+"=4;2"=43!2#UݓJIIJ%J%%J%%K$$K%J%J%%J%F%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%%%C%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%$%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%$%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%%%%%%*$%%%J%%J%%K$$K%%%%%JJJI%%I&%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%% %I%HJ%%J%%J%%J%%J%%J%!!1mpp !!2mp. !7!!!!P,QQ,P.bb(!(! !! $<7.>3!38|PP|.b;(t;!O;!O ;!O;!O;!O;!O;#!O#;(!O(q(!((!((!((!'(I(!]((!((3(:(|' q( #'+/3!33!33!33!33!33!3mnmnm;(%8K#!1!!!!!!!#!1!!!!!!!#!1!!!!!!!#!1!!!!!!qlllllllllmmm((((;(!%)-13#3#3!3!##!#3#3#3#3#3#3#^^(ll(lm#;(q#q:(!&9'(9(&&9(&9(&&9(&&9('9(&9(&&%! %!!!,7r+uv ))xxp) )$7632#"'327$%&#"%632#"'~~~~eMM>yJJJJJ6````qq|qq#u  9%-p) 327$%&#"%632#"'MM>y````qq|qqr' '/7?G%&'&'6767&'&'7%'676727"'64'7&"'62&47\+;.81F9K58.42d;E9G,:.80G9J6&8.;+d1O9FLL&_`JnLL'`_n<1& j(0=Ju &,A=N:0('<1& j(0=Ju &1<>EB0(n_II'[[JnII'[[p) %/36%632#"'327&#"6767&'&6py AAAA,+-,,-+A@@Rqq|qq%%mܱ[0$ %@%|"p) )73276'&#"7632#"'327$%&#"%632#"'r99:9rr9:99XWXXXXWXMM>yB!!BB!!oe33eje33````qq|qqp $  $pkk]Ak^p $  $27$%&#pkk]<MAk^a``p $  $"3pkk]<MAk^``p $  $327$pkk]\MMAk^>``p $  $%&#"pkk]Ak^>``p $  $"327$!pkk]<MMgAk^```p $  $"!pkk]<Ak^`p})6%63"'pRqq)#2y|q*q( 2654&#"!|~}}|v< ( 327$%&#"327$%&#"!IMM>y_O````}|qqqqH( ( !#%&#")%632OyyMMqq>~``  3327$3!#"'$@1>qq``) %63"æqv`) 2#%&#u)q>` 527$3Muyv`>q "'$33yuMq`p)%632#%&#"puqq>``p3327$3#"'$puMMuyy``>qq!% !% !%! !%!$3! 2654&#"4632"&nȊce;~|ddcc||}%!%!!d r<%!%!!We r<%!%!W7 r<%!%!W7 r<% !%!!!!+c,b r<<!% 4632"&! W>>VV}V2 j>VV>>VVJ !%! c  !%! b  p(  7& $  %;<*X֖% !!!!!!,7,rWb<)) Ie% !!!!%!!,crWbM)MM^??@7`d?\gOOOOy>*<?v^  <BHNTZ`fl3264'&#"&7367'67675673#''5&'&'7&'677&'67'%%&'&'%6767%&'0/CB^0/AC/88pkTcR|NOOfUip88pqUfONNQaQh!$ b)dLQk KRt!% c'd&//^000NN|P_Pfp88poQ`QyNNP\ Qgp88pmQ \Py,  M N>&`7" bK*V&"g{ M M !)1! ! 3254#"&#%#7&'67&'6767KJ]_VNEWMCe2ntjnti7IL6a] ]pu otpu ot !)1! ! 3254#"3$3&'67&'6767KJ]_TNEAgntjnti7IL6a] Uypu otpu ot %! ! #$''&'6%&'667KJOR`7IL0c Z    "*2:AIX3#''%#&'52#"'&5476!!'5%!!'53'5%3'5%3#'32765'&#"sNN99=>-1\ H0e%FKSwZGr=;=NN$E| 1 ?'_>?@7`d@\hPPPPy?+<>w_VG{?,rCA0:1@7#'#53'&'&54767&'&=33676=3#32654'&i($lm$(($[Uu&tU[$&uU[[UV$|ddb e|$% ZSSZ %_TYYT* $4&#"326&5432%##5!&w衤礡PP䤣L~~| * $"32654&'#5!3%#"5476礡𳉧פ㤤ף |~~L #&$76+"'&5'476%7!ttsstEus pid5s qttrtt<֤ꧦg\ul9S52654&#"#43233#!5 z{ym㗗yyy{(|j#53533#632#4654&#"#*jjoon}mZyH{zF2 4"32654&7#"&54767!!53#5!!3!!#3!!8OO87ON=0LmkL/>Λ2  1O79NN97Os0LllllL1KӘJJ-'<%#5#535&'&'5'73'3#'73'676=35'73'33◰zhNgeMjzzTThOʍ7NjYYӖy?! #!!!'!27674'&#.d ;6zFH%QM_\ǃ$P<C##"'##56'##"/547?^'5@_*SU&/UL ;Yԧ9UP(` XI.s222732#&547636=4'&# #4'&#"*t pz&=<xQ>hG:V Hek%PF5NP B|-&pA&NFX &&5 <F:^;" V gdG7236;2"##'65##"'&5476;235&'&=476e x<JT`(GeRUdfB3 VNTbakTFbakTF;AAP8#_0G._.9UDJz]!"&5462327]myx>>1WA{`[dL)H8qc"&54>232673؞^l4A0`c}aXMBP*(NI{W#"'&547#32767!7!7>3237.#"!7>3237.#"#3#"'&547#32767S//PEp,JUۃ# ^PEp,JU"1^PEp-KU"//PEp-KUۃ#1:9&9 [\ys&9 s&9 y1:9&9 [\{n/#654'&#"!3!!#"&'733267#7376$!2?p.4i˷"UK-pEP^(Car J(-VRy5 9&syL{'6$)3!#"3##"&'733267#73I)L2X"UK-pEP^seyVy5 9&sy{Y#"'&547#32$7!!7#!7>3237.# !7>3237.#"#3#"'&547#32767P^PEp,JU#i5i3.p.qa(4^PEp-KU"//PEp-KUۃ#1s&9 RyV-(J Ls&9 y1:9&9 [\{R#"'&547#32$737#7>;!7#! !7>3237.#"#3#"'&547#32767K^PEp-KU"X-ΦG:^PEp-KU"//PEp-KUۃ#1s&9 yV\yfOLs&9 y1:9&9 [\{E4'&'&#"#"&'733267#7376$!2!!32673#"'&547#73' R"UK-pEP^(C]i'/)'~:@N(A* ~99-V 9&syL  yuY- "VZE,\2Ay q#654'&#"!"&'33267654'&/&'&547676754762!!32673#"'&547#737&'&#";B5q0:l| O@.#cv9q7?l e;)"Py8ê6Z|a_c'~:@N(A* ~z=pe2" S-7EB "%5N7V#))b7>KF'"%*L5P"'U2 i]01{FyyuY- "VZE,\2Ayp=f2" Z04%32767654'&#"3>32376$7654'&#" "-NOCB"-ON>{6bc7:6CBP327673#"&P{ d>>{6bc7:6CB! 6762"'43x$#43x$?x+,,+x+++R!#!#xb#!#c8_<22 Zd*f+Tl9s/-RT]D $^1xs5_^BBPAe_5mg5gN/82ECq.E EE EwrrVE3^7rc*=%%rL:/L RT?@PeXPXPX 5_5_5_5_5_58F0^BPAAAAAg/8/8/8/8/8/8 ECCCC u u ] uVrVEVEVEVEVEV5_/85_/85_/8^BE^BE^BE^BECCCCCB.B.B.B.EE u u u l uEEu E EEtEPrPrPrPAVEAVEAVE qB9F7r7r7r_c_c`g=ggq=^^/!=VOACq.*X wPA@VF _m=y?&VSAgJ\11\1 { # iD  5q5_/8 uAVEN5_/85_/7F0 *B."AVEAVE { # P58/8F0 V5_/75_/7CC  DAVDAVD7q7q_cDS5_/7CAVEAVEAVEAVEgaw@@g5U^jQ' HaC5_/CTR?ENBR.~BI1r   EH S]wwwVE}u,V77|hhqROO>oD!A |JkJJu\y}B r*<JkJ o;$Ic}EwPR]LD, &O%O 77 K_TT9@ -6B?B#\T}4*WV(( -n4mnz9.3Ptm,5bw5gi\z'joj[L5_W WKWWWJ5_5A5_PA_gK5Ng(C.(CPHV.>V7@u/VERkHbw=}CHVEHV8fW?H=*gVl^h[8"G^V3=R$EAE-^B^^B^6]B KV G~O5_ GVA^B_~ON5N % XU ] L/8VorFCjvhVEr3Ewr7?In-4CCorE E ujv @A8FUPE  ^BE_qg^5 b_qHHE H 5_/85_/8F0 CANAN AVEAVEAVE]-~O~O~ON VV2DKBRX.KRK2KA>fm0UrMk1Xu)xOQ  kLjY.K8B@-ftffV^#pt..M.J3)_LL70L D5_/7111^BECCCCqB.DEDDD "DDD + + j wqwrwrPrPrPqPrAVDAVD337q7]7]7^b_c^-_5l)5m*g=g=g=f<f<55fDb<75_/75_/75_/75_/75_/75_/75_/75_/7CCCC D >AVEAVDAVDgfff(C(C(C(C(C(C(C(C5_5_}5_5_......WE [} [ty } ;t wy [ho} dtyVEVEVEVEVEVE4}z } Gty` | y&HHHHHHHHs&h %} 1oty/{(C(C..VEVEHH(C(C(C(C(C(C(C(C5_5_}5_5_ } ;t wy HHHHHHHHs&h %} 1oty/{(C(C(C(C(C(C(C5_5_}5_5_L}W }Wm}KWfRRgg&}WHLLHHHHH}W}JVRTRTTCTC/d/''d ll33e H'#P H =E58H9HH9HHH H9HH9HHHH9LuFL))/VBH`551111 !1NNOl- x7''''''''''''''''''''''q''''''''''llgg'''''''''''''''''pprppppppppp7p7Tpp''''3'''ppppp'''',,,,,,,,S,,,,,C,,X,,B,,X,,x,A133''''orV.z +6AR4PRL 79k:;k<&:$7$9k$:$<$I$W$Y$Z$\$$$$&$'$:$ $ $"$#%&%&&%*&%2&%<%&%&%&%&%&%&%&%%&%&%&%&%:&&''&''9(&)2))2)))$)D)H)R)U)X)))))))))))))))))))))))))))))))1**&*--a--.k.$.&.2.8.:.<.H.R.X.\.......................................0.1.:/7Y/8/9 /:u/<}/\/////}///&Y/0/:}////1}1}1122K2292;333333$k3D3H3R3k3k3k3k3k33333333333333333333344K457595:5<5D/5\55/5/5/5/5/5/5/5&555&5:5566K6666 6"777777$777D<7F7H7R7Uk7VD7XD7Z7\7mk7}k777777<7<7<7<7<7<7a77777777777a7D7D7D7D777777a7k7k7!D7#D7&71D7k7k7 k7k8D88D888$8888899k992929$a929DD9HD9L9RD9X}9\9a9a9a9a9a9999999D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9}9}9}9}999D99D91}9&99&9::::u:u:$}:DN:HY:L:RY:U:X:\:}:}:}:}:}:N:N:N:N:N:N:u:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:::::::Y:Y:::1:&::&:;;$;&;2;;;;;;;;;;;;;;;<<2<<<<$}<&<Da<HN<L<RN<XN<}<}<}<}<}<<a<a<a<a<a<a<a<N<N<N<N<N<N<N<N<N<N<N<N<N<N<<<N<N<1N==IIIIIAINRUkUDUKUKUKUKYYY2YKYKYKYKZYZ2ZKZKZKZK[\<\\K\K\K\Km-m7km&k}-}7k}&k79k:<IWYZ\&':  "#79k:<IWYZ\&':  "#79k:<IWYZ\&':  "#79k:<IWYZ\&':  "#79k:<IWYZ\&':  "#&&&&&K$9<:}}K9;K9;K9;K9;K9;K9;DD$DD$DD$DD$2$}&DaHNLRNXN}}}}}aaaaaaaNNNNNNNNNNNNNNNN1N&<KKKK<KKKK&9&&7Y89 :u<}\}&Y0:}7Y89 :u<}\}&Y0:}O7Y89 :u<}\}&Y0:} } }  &79:<D/\///////&&:kDKKKK79:<D/\///////&&:kDKKKK  K  6   """K""6" ""&&&&&&$&7&D<&F&H&R&Uk&VD&XD&Z&\&mk&}k&&&&&&<&<&<&<&<&<&a&&&&&&&&&&&a&D&D&D&D&&&&&&a&k&k&!D&#D&&&1D&k&k& k&k0D00D000$00000::2::::$}:&:Da:HN:L:RN:XN:}:}:}:}:}::a:a:a:a:a:a:a:N:N:N:N:N:N:N:N:N:N:N:N:N:N:::N:N:1N??f$ffffff79k:;k<&:$$99:9;9<99:979:;|>R@X T R r $ L j ~ N  > $ L ` ZFx(d**L Lbbp~>N&L\l|6x*6BNZf FR^jv(4@LX LXdp|  nz ".:FR^ ".:FZfr~    * T t !!N!Z!f!r!~!!!">"J"V"b"n"z"""""""""""# ##@#|##########$$ $$$$0$<$H$T$`$l$x$$$%"%*%t%%& &p&&''H''((T(()")x)* *,*P***+4+++,.,:,F,,-"-z-..n.v./ /2/t///00B0v001 1@1x112*2d222223333(343@3L3X3d3p3|333333333344 44$4,484D4T4d4p4|455"5.5:5F5R5^5j5v555555566d6p667V7b7n7z777777777778 88"8.8:8F8R8^8j8v88888888889P9z99999999::::,:8:D:P::;&;J;< ==>>N>V>>>?p:Ђ 2Z0fԅJVbnzƋҋދ&Ffr~4`֍$p>v֐XȑhXҒ2rғLfF~ʖdԗHzؘ*P|Bʙ$vЛB~Ȝ JXdp~ƪҪު(6DPXdlxȫЫܫ $0Fjjjjjjjjjjjjjjjjjxıڱ$JpʲBPhʴ@ش&2>lж2ط$.8BLV`jt¸:Bֹ޹.>N^n~ҺZpһZ¼ؼ>ξZ~о$6Fp$Pl 0FP^lzÈÖäò",ĆR\ft~ňŖŢŰž0ThОо^ў2FZp~ҔҢҶ.DԤ~V֘BטX|0Zr$RڄڴLjzێ4J`v܊ܢܺ@Lݞݦh޴z^Xh2Nh~5 +@+   pD 0 FFNHHPLLRRQTVVXXXZ]]\^fh      ?v?y?z?u????}???????? #@  0T VQQXggZ\^bhlpSSr   `?v?v?w?w?x?y?y ?z ?`?a?S?ſ?ſ??ȿ v{qwxjy|zzY TU XXxII0LL2OO4WV6AA:    ` ?????????"#!$%'&DF* $&""(  ` ??????  T $&HH6   !"#$%&'()*+,-./0  !$'*- 0369<? BEHKNQTW????????¿??ſ??ȿ??  ?݀????""(%$+($.+*?--40/?20?55=86@;9? <<F? 1~3791~37924245:5:668;8;<<7_B m <   R4 P  !  !=!Y!"/"  ! !G!k!">"!  ! !!"N" !*!! "`"  !3!Q!""n"     S 2z : " 4I " : &* hCopyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain DejaVu LGC SerifDejaVu LGC SerifBold ObliqueBold ObliqueDejaVu Serif Bold ObliqueDejaVu Serif Bold ObliqueDejaVu LGC Serif Bold ObliqueDejaVu LGC Serif Bold ObliqueVersion 2.10Version 2.10DejaVuLGCSerif-BoldObliqueDejaVuLGCSerif-BoldObliqueDejaVu fonts teamDejaVu fonts teamhttp://dejavu.sourceforge.nethttp://dejavu.sourceforge.netFonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. http://dejavu.sourceforge.net/wiki/index.php/Licensehttp://dejavu.sourceforge.net/wiki/index.php/LicenseAll Typographic FeaturesFonctions typographiquesAlle typografischen MglichkeitenFunzioni TipograficheAlle typografische kenmerkenLigaturesLigaturesLigaturenLegatureLigaturenFractionsFractionsBreukenAll Type FeaturesToutes fonctions typographiquesAlle AuszeichnungsartenTutte le FunzioniAlle typekenmerkenCommon LigaturesLigatures UsuellesNormale LigaturenLegature pi ComuniGemeenschappelijke LigaturenRare LigaturesLigatures RaresSeltene LigaturenLegature RareZeldzame ligaturenDiagonal FractionsFractions en DiagonaleDiagonaler BruchFrazioni DiagonaliDiagonale breukenZ5  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./012345 sfthyphenAmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandicLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongsuni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191uni0193uni0194uni0195uni0196uni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEUhornuhornuni01B1uni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BBuni01BCuni01BDuni01BEuni01C0uni01C1uni01C2uni01C3uni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DEuni01DFuni01E0uni01E1uni01E2uni01E3uni01E4uni01E5Gcarongcaronuni01E8uni01E9uni01EAuni01EBuni01ECuni01EDuni01EEuni01EFuni01F0uni01F1uni01F2uni01F3uni01F4uni01F5uni01F6uni01F8uni01F9 Aringacute aringacuteAEacuteaeacute Oslashacute oslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217 Scommaaccent scommaaccentuni021Auni021Buni021Euni021Funi0221uni0224uni0225uni0226uni0227uni0228uni0229uni022Auni022Buni022Cuni022Duni022Euni022Funi0230uni0231uni0232uni0233uni0234uni0235uni0236dotlessjuni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240uni0241uni0242uni0245uni0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni0259uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269uni026Auni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02AEuni02AFuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02BB afii57929 afii64937uni02BEuni02BFuni02C0uni02C1uni02C8uni02C9uni02CCuni02D0uni02D1uni02D2uni02D3uni02D6uni02DEuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9uni02EE gravecomb acutecombuni0302 tildecombuni0304uni0305uni0306uni0307uni0308 hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322 dotbelowcombuni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0358uni0361uni0374uni0375uni037Auni037Etonos dieresistonos Alphatonos anoteleia EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni03D0theta1Upsilon1uni03D3uni03D4phi1omega1uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FAuni03FBuni03FCuni03FDuni03FEuni03FFuni0400 afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061uni040D afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097uni0450 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109uni045D afii10110 afii10193 afii10146 afii10194 afii10147 afii10195uni048Cuni048D afii10050 afii10098uni0492uni0493uni0494uni0495uni0498uni0499uni049Auni049Buni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04BAuni04BBuni04C0uni04C1uni04C2uni04C3uni04C4uni04C7uni04C8uni04CBuni04CCuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8 afii10846uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni1D02uni1D08uni1D09uni1D14uni1D16uni1D17uni1D1Duni1D1Euni1D1Funi1D43uni1D44uni1D45uni1D46uni1D47uni1D48uni1D49uni1D4Auni1D4Buni1D4Cuni1D4Duni1D4Euni1D4Funi1D50uni1D51uni1D52uni1D53uni1D54uni1D55uni1D56uni1D57uni1D58uni1D59uni1D5Auni1D5Buni1D77uni1D7Buni1D85uni1D9Buni1D9Cuni1D9Duni1D9Euni1D9Funi1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5uni1DA6uni1DA7uni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1uni1DB2uni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1E00uni1E01uni1E02uni1E03uni1E04uni1E05uni1E06uni1E07uni1E08uni1E09uni1E0Auni1E0Buni1E0Cuni1E0Duni1E0Euni1E0Funi1E10uni1E11uni1E12uni1E13uni1E14uni1E15uni1E16uni1E17uni1E18uni1E19uni1E1Auni1E1Buni1E1Euni1E1Funi1E20uni1E21uni1E22uni1E23uni1E24uni1E25uni1E26uni1E27uni1E28uni1E29uni1E2Auni1E2Buni1E2Cuni1E2Duni1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Auni1E3Buni1E3Cuni1E3Duni1E3Euni1E3Funi1E40uni1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Auni1E4Buni1E50uni1E51uni1E52uni1E53uni1E54uni1E55uni1E56uni1E57uni1E58uni1E59uni1E5Auni1E5Buni1E5Cuni1E5Duni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E68uni1E69uni1E6Auni1E6Buni1E6Cuni1E6Duni1E6Euni1E6Funi1E70uni1E71uni1E72uni1E73uni1E74uni1E75uni1E76uni1E77uni1E78uni1E79uni1E7Auni1E7Buni1E7Cuni1E7Duni1E7Euni1E7FWgravewgraveWacutewacute Wdieresis wdieresisuni1E86uni1E87uni1E88uni1E89uni1E8Auni1E8Buni1E8Cuni1E8Duni1E8Euni1E8Funi1E90uni1E91uni1E92uni1E93uni1E94uni1E95uni1E96uni1E97uni1E98uni1E99uni1E9Auni1E9Buni1EA0uni1EA1uni1EA2uni1EA3uni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED8uni1ED9uni1EE4uni1EE5uni1EE6uni1EE7Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni200B afii61664afii301afii299afii300uni2010uni2011 figuredash afii00208 underscoredbl quotereverseduni201Funi2023onedotenleadertwodotenleaderuni2031 exclamdbluni203Euni2047uni2048uni2049uni2070uni2074uni2075uni2076uni2077uni2078uni2079uni207Funi2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089uni20A6Eurouni20AFuni20B4uni20B5uni210E afii61352uni2126uni212Auni212Bonethird twothirdsuni2155uni2156uni2157uni2158uni2159uni215A oneeighth threeeighths fiveeighths seveneighthsuni215F arrowleftarrowup arrowright arrowdowngradient proportional orthogonalangle logicaland logicalor intersectionunionuni222Cuni222Duni2242uni2243 equivalencehouseuni2308uni2309uni230Auni230B revlogicalnotuni2311uni2318uni2319 integraltp integralbtuni2325uni2328 angleleft anglerightuni237Duni23AEuni23CFuni2423upblockuni2581uni2582uni2583dnblockuni2585uni2586uni2587blockuni2589uni258Auni258Blfblockuni258Duni258Euni258Frtblockltshadeshadedkshadeuni2594uni2595uni2596uni2597uni2598uni2599uni259Auni259Buni259Cuni259Duni259Euni259F filledboxH22073uni25A2uni25A3uni25A4uni25A5uni25A6uni25A7uni25A8uni25A9H18543H18551 filledrectuni25ADuni25AEuni25AFuni25B0uni25B1triagupuni25B3uni25B4uni25B5uni25B6uni25B7uni25B8uni25B9triagrtuni25BBtriagdnuni25BDuni25BEuni25BFuni25C0uni25C1uni25C2uni25C3triaglfuni25C5uni25C6uni25C7uni25C8uni25C9circleuni25CCuni25CDuni25CEH18533uni25D0uni25D1uni25D2uni25D3uni25D4uni25D5uni25D6uni25D7 invbullet invcircleuni25DAuni25DBuni25DCuni25DDuni25DEuni25DFuni25E0uni25E1uni25E2uni25E3uni25E4uni25E5 openbulletuni25E7uni25E8uni25E9uni25EAuni25EBuni25ECuni25EDuni25EEuni25EFuni25F0uni25F1uni25F2uni25F3uni25F4uni25F5uni25F6uni25F7uni25F8uni25F9uni25FAuni25FBuni25FCuni25FDuni25FEuni25FFuni2600uni2638uni2639 smileface invsmilefacesununi263Ffemaleuni2641maleuni2643uni2644uni2645uni2646uni2647spadeuni2661uni2662clubuni2664heartdiamonduni2667uni2669 musicalnotemusicalnotedbluni266Cuni266Duni266Euni266Funi27E0uni29EBuni2A0Cuni2A0Duni2A0Euni2B12uni2B13uni2B14uni2B15uni2B16uni2B17uni2B18uni2B19uni2B1A afii10063 afii10064 afii10192cyrBrevecyrbreveuniFB00uniFB03uniFB04uniFB05uniFB06uniFFFD dlLtcaronDieresisAcuteTildeGrave CircumflexCaron uni0311.caseBreve Dotaccent Hungarumlaut Doublegrave@K 2ǻƻĖG}G0}  & @ 7 !7 2.+t+t ]%]@%@ @  dtd  @   2 }t} t2q  @~t~}|}|{z{zy]zzyx%y]y@x%w7vtvkututsrqrqqpo.po.nmlkKj hg g@f!e}d@ckba}`^] ][YXY-XW2V TSTSRQPQ%PPOONMN}MI MM@LL1KK2JI J}I HG H}G FE F2ED E E@D CBCBA@A}@6 @@?=)?>=)>]==)<;<;:;:9 :9 878}76 776 6@5454+ 43 32) 210 0/$)/7.! .-,-,+ ,,@+ *&*) )@('('&''@&%$)%$!$)#!#"! "! ! !  @!*@-:!}22!)k!) !-} -    @      @@d+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Rl       !! #" >> ?? @@ CA ^^ __ `` aa bbcc gdkh qm srutvv zx {{}  qm }t    ʀ    //                    %*&-, F1 GG]H ^^ __ `` aa ib jj kk l ((4*micropolis-activity/res/dejavu-lgc/DejaVuLGCSerifCondensed-BoldOblique.ttf0000664000076400007640000053644410724145723027123 0ustar simcitysimcityPGDEFor\GPOS'nGSUBr*L(OS/2ᤡ1tVcmapeJ81cvt 먏7`feat9@fpgm9Dgasp9 glyfQS&9 head:6hhea y4$hmtxvkX~kernslocao/Lmaxp v> morx^> nameP*N&posttA-prepV:propwT x<ijjkpqqruvvwyzz{}~    "##$?@@Atuz{    ./:;QRSTVWWX$ ^DFLTcyrl$grek4latnDkernmarkmkmk" $"0$Ta<R`rDLZ   4 B P : 4 F \ r & T 4 B H N T Z ` f l 6F`($Bx79k:;k<&:79k:<IWYZ\&':  &&&*&2&<&&&&&&&&&&&:&9&*22$DHRUX1&a4k$&28:<HRX\01:7Y89 :u<}\}&Y0:}}}K9;#$kDHRkkkkkK79:<D/\///////&&:K6 "=$7D<FHRUkVDXDZ\mk}k<<<<<<aaDDDDakk!D#D&1Dkk k k DD$7k22$a2DDHDLRDX}\aaaaaDDDDDDDDDDDDDDDDD}}}}DD1}&&2uu$}DNHYLRYUX\}}}}}NNNNNNuYYYYYYYYYYYY1&&$&2,2$}&DaHNLRNXN}}}}}aaaaaaaNNNNNNNNNNNNNNNN1NAkDKKKKY2KKKKY2KKKK<KKKK-7k&k-7k&k79k:<IWYZ\&':  79k:<IWYZ\&':  79k:<IWYZ\&':  79k:<IWYZ\&':  79k:<IWYZ\&':  &&&&& K$9<:}}K9;K9;K9;K9;K9;K9; DD$ DD$ DD$ DD$,2$}&DaHNLRNXN}}}}}aaaaaaaNNNNNNNNNNNNNNNN1N&<KKKK<KKKK&9&&7Y89 :u<}\}&Y0:}7Y89 :u<}\}&Y0:}O7Y89 :u<}\}&Y0:}}}&79:<D/\///////&&:kDKKKK79:<D/\///////&&:kDKKKKK6 "K6 "=$7D<FHRUkVDXDZ\mk}k<<<<<<aaDDDDakk!D#D&1Dkk k k DD$,2$}&DaHNLRNXN}}}}}aaaaaaaNNNNNNNNNNNNNNNN1N$79k:;k<&:$ $99:9;9<99:9 79:;DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz FmR>K,LCHH(0}DDDD0%09DDD+DDDiDDD|DDzDmDDDDD@2DDgu,,D jD1WDmDDDD~D&DoDDDDDDeDeD?DDDD DDD1DD} D>D`D`DDD DDDDD'6DDDDDD;'DDDDDDDD DDDDUDDDD10D-DU8DZDDhDDD\M2"PDDDD[D1&$=D]4679:<  =>GI@KKCOQDTUGWXI_`KhiMmmOooPtwQUVWX;Y=OQRTVOOZZabdf$$ "(.4:@FLRX^dWDWDWDWDWDDWDWDWD-DWDWDWD7D7DWDxDiD,<m<m<D8m DDDDDDDDDDDDDXJt   *4mm"m"m\m$$ "(.4:@FLRX^dWDWDWDWDWDDWDWDWD-DWDWDWD7D7DWDxDiD,<m<m<D8m DDDDDDDDDDDDD4 *06<BHNTZ`flrx~ &,28>DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~4Z,,qRQM, 1HHRRRyG R0R}!R @sRRDRRR!R RRRKVRVR$R$RJ ORS(-RRRRRRRRPXR!IRRRRgR>ERRQRyRR2'$=D]456789;@ ;F=OyQRTV  rx~nmzzlgipmhmmhhh]x`jh . 6<BHNTZ`flrx~f<<E<<<fffP8<^"$  $*06<WWWvvvvvBvffLLf<D, rDFLTcyrl*grekHlatnX SRB ccmp2dlig8dlig@dligFfracLligaRligaXlocl^  &.6>FNV^@pz&V000&LM P$=IIKKLMOO      ""$$&&((**,,..0022446688:;==??AAGGQQSSUU  hk| ^h "(.4:@FLzyxwvuzvqjWSQQRQ Q "<^h  #@ Q FHLQRVX]e OLID 2 "  ""> *4IOILIWWIVAJ 4 "*2:BJRZbjr7F75F51F1/F/F~F~ "2F20F0&.68F83F3F4F4 "9F96F6:F: LM !"#$ 33f Pq PfEd! `p~!A?Xauz~_cs [w{-KcEMWY[]}  & 1 : < > I p y !!!"!&!+!_!""""""" "-"C"H"a"e####!#%#(#}##$#&&<&G&g&o')*+ !$PXatz~brCw{0Ph HPY[]_  0 9 < > G p t  !!!"!&!*!S!""""""""'"B"H"`"d#### #%#(#}##$#%&8&?&`&i')* +ogUQNIHGFE75' }|<:840,$ ~yws >;431.,&YLF@=;D&H><   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}byqz{`jyV\byb`{{N\=VTq\f{fb--){bb??)fD)y V%hNf s{juy jdy{Hy`yqq 33Nyj``'''Dbjyyb3'b=D)fRR5fVVVJ!/TfDs04 <, %Id@QX Y!-,%Id@QX Y!-,  P y PXY%%# P y PXY%-,KPX EDY!-,%E`D-,KSX%%EDY!!-,ED-[!%!!\4r) 7>2"&!#7wQ yQQ!}!NppNOpp#!#a++}#3 333!!!####5!#5!?'VWW>VVWV'?0VhhK$+173;.76$73#6&'#.>&'L3l w Gס/m/cQ0msoA /m/cNh =U]lF\;#7 +'t;Ǵ, T=FV W`av %0"32676&'2#"&6!3#2#"&7>"32676:K::K)E۬E\#"۬#"uJ::Kev-d m8E)'# '&547>7&'&5476$32#654'&#">?!#3%326Q[hd ĵ" Cl7t&*`[ysJB\)yRk=M7MFPPb/4SC=" g29`R \ DqxxWlLCS/*nOm1#+ $%dyxJ=<;~}̄x`` 76'7F<<;}yx`yXYy`x4L.(9 %#'-73%DXYEY''{xF !!#!5!l'& ? >?! m|'TЊVmL!!|50` 7>32#"&yFGQ yGFQNppNOpplB53#mm= $26&" ! vML)wLM؃d  لXHIpqw 3737%!3xyyy#>3 !73!?$76&#"3l8tn%Z||M+! a{kdB%%ДJ*>32!"&'332676&+732676&#"#}j%ku:lr|};/fuj"m##̱((Hx{ )73!7!3#3/R/*~ys+ !>32!"&'332676&#"#.1:EQ*+no9lf|##[Dv:Z34(*F?BT!>32# !2#.#"26&"DUμ)+?G5Qe.mkcPnK0mKu44qffiѯP #!#!i#{T)!- &7>7.76$326&#"266&#"326a%$˥o!"!/STX/X> ;ggk !;gfm̥Υ$Ⱦ'wwuuշ,!"26#"763 !"&'3326DmL0nLPEUͼ),5>G|Qe.mkd{P55  iafil;>2"&>2"&wQxPdwQ yQ-OpqnnNppNOppV>2"&>?!xQwPm|'-OpqnneSϊXmBF 5Eq~-F!!!!~~BF55~q10P, "7>32#"&>32#>76&#"# yFGQ yGFQ3v_$#$}4TkclNppNOppY""++h K76&#"326#"&63273>76&'.#"3267#"$'&76$32!#r T[Y3NY[4QIQtł:UE~ua"'>Lni#\\=C#7333!73!3!n :\ky\yy1y#;$#73#7!2!32676&+32676&+,۬!ūǵ'Mv}vہyyƤf}v;# !2#.#" 3267&^>?Tx@ruƆDef@Af%32+73#7! !}99} ۬j|&S`!{Z|"jF&{=yy!#73#7!#7!!73#7!3,۬>{&TV!{Z{!myy!y;.#"3267#7!# !2%;;LsQ} '4v:rM!(HbvrZd+78Ǹ,,gf]a4742V373!#!#7!3*{A4Ay)سyu-y#7!#326#7!#! Z1u0<<\yyyy&Ub3###7!##73qvy\yy#y]!###7!#!#7!#r菃~ao?\yykyy 3!73 #7!##7!# 3!73S#|KV<a?:yy;yy\yy5yy]373#7!##7!#3Wsr`yyy9yyByy #7!#!!73>|'{?%{=hAF!#3!xxB#Zȳm" !73#7!x2xO # #lvv;-!5f۾f#襓fx2'D &#"32677!7#"7676! 3yv6, .WSi xxpc''l32#"&'!3267654'&#")n7e[=-ez _bo( b`r!xSQcKWQSdF<'SW6!X>DD## '&54732#654'&#"3267BrR.Idb3e&-g+%|`!LhCM(**f7AYN0hx(7654'&#"326 !7#"'&54732#7 _cn( b^t7eZ<.d|YicF='SW7"XSQdKX*QSx=FD6'&"132673#"32 e.&g'F^Cn8K9U n"Gzt#(Da{ #267#737>32#654'&#"3##6XHTLB'e>HU$p sy 9&sy5<[8)9D +&#"3267#"&'73326?#"776!2y:fA& 7b^s +_b,f15t#nɹ&0-l3#7!>323!654'&#"?qJp@) a8x Lauix}_TjCl=JyF0,4>m>32#"'&543!#7!xIG( xGI(9TQo8)7Oo7)79yy9'>32#"'&54#7!#"&'73267/wJF)wGI)!6w>(e ;BDTQo8*7Oo7)7ny\'$^{>)#7!#7!3!}ǯr.hixyyyX>%3!#7!9yyxg*D/>323!654'&#"!654'&#"!#7!>32Ug?( a9mKTwqmJUwqHcuyjahAl?LyoD#4yoC%4yy]VcgD3#7!>323!654'&#"gJq@) a9x M`uiy_TjCl=JyF0,4>D!%26654'&" '&54732et, t-NvT .SvT .Tc4"_b7"aql@J)kAJ.VD(3267654'&#"%#7!>32#"&'! `bo( b_s7e[=.d{bHidF<'SW6!XySQcKWQSUVD#"776!2&#"32670bnɹ'/,:f@' 8a^s!z1İ32;8fDh_!BoO38*̵yok D;'33267654'&/&'&547>32#654'&#"#"&4e28uat Z}5%Un.f+4sbp G|:*Y)b7>KF'#%)M5P"'!S-7EB "%5N7V#)YBq#73!!!32673#"'&547:?: r4:G%;% yJyuY- "VZE,\2At'3!7#"'&547#7!3267ե8Iq@) alO`uh'Ry_TiDl=J+y}C(5T&=*)#7!2767#7>i;jy{7i'67673###7!33}3qV}h\P,{ϴfyH\' 33!##7!:ghk Fyoy9' #7!6'7%#"'732hgD!PdxU{'e*'dywlyjZ3+E 6z# 327#&'&"'7&'&#"763267!rHlJsehYtrGlKreiZ D@I.y D@I.*#"&'.?6&+7326?>7>;#"3lԋ",L77u,*!7Յ]d[/pzpA09ey1>$npsyspm%=1x^"^#*3267>7.76&+732;#"+[d[/o}pB/:d[Ջ"+L~88~t+* 8Ճ^"^x1=%mpsyspn$>1F?#"'&'&'&#"5>32326ET[U XEWWZV [E?VR:BHIWQ9DHf #"&7>2!73xFGP x"}!nnNOpJL %%#&73#6&'>7M]rJ+;8Ɍ1m0[C.m/4d4eLXUs^kZӝ% #&%~ zj#6&#"!!!73!73#736$32l FLiv/=bz({@d0&:ialyy=yD=T .264&#"'7.5467'7>327'#"&LRssRRsqp,a71b4)`84b\]~Ϛ.k@?l.͞Ӛ8o6?i/Ӛ4M$373!7!7'!7!#7!##7!#!!!!3=k u{pGyDk=yZu;uyy'yy#utNuy##  =5C#6&#"#"&'7332676&/.7>7.7>32>76&'*k OWI_ &HmbnB/ߴKX*jO`Na $JmboC0߱B1-7 @Y/8 B[VVJC/B/Hbsh+/ZZRJE/B/Hcrg,.Y!N-=f:X#O*2#"'&%6762"&. ^l.-56! ..lA //l?54&'&#"&54632#.#"3267aaaaٻOMNNmnNMNNMO#ӰHN_ ^I]lk^BXnnn,WWV{zϬVUWVz{VXg%'^j\Y (377654'&#"3276767#"'&547>7632733!!S 2 Dn 2 E67+)87=W,$ $,hh1pB,#8$/8-9%8LLE++ D8_6B8Y%- 77$K-F!#!LL!!|505#5K3#'.+3!53#5!2%3264&+  .546"3267>54&'&#6Z6i52MNNl|Y32!73!?>76&#"U#DHyuZ+s:B9]rRZ`T{]T_S *>32#"&'7332676&+732676&#"R9 o^i\͵HD#V?GPbIR%I[ :A;UVidH^o]z{POVRPWTD@?FI@f3#nf9V'3!7#"&'!#7!32679@oB2MhO`uh'Ry}SGJXyJ(7T;!####.76$f "}Nݸ  >32#"xGGQyGFyppoo!#"&'732676&':," m+Y-%I!6A"@m4VZ /-BDHp 73?33Ik̂^eei}^ !!2676&#" &6 $2DU#DFT"@}@?Vn[- 7%7bb-ABABH'd&{F'H&{'F'td 'd&uF' { #"&7>2#"&76$?332673xxGGO wv_$#$}4TlblnnNOp7""+o>k&$uo>k&$uo>k&$uo>o&$uo>&$uKm $'32>&#"73.7>323!73!3!901S900*n-$ iky K=9\jlMMlM-y%yJuuJv(yy1y#;D#!#73!3!73#7!#7!!73#7!!73FD5*ft=|%SJ!z[y!j1%z>!;y/yyy!;o&&zk&(uk&(uk&(u&(uk&,uk&,uk&,u&,xu %32+!!73#73#7! !}:9}[*|h[h;??>y+HF*7yP yo&1Xu; k&22u; k&22u; k&22u; o&22u; &22u/  ' 7 tttt9HHHH! + .#"32>'!"&''7&7!27}i9zi? &?"?6QA@#@RPAw{LzxNfAe+hdNNZf jMMZk&8`uk&8`uk&8`u&8`u]k&<uH#73#7!#32+332676&+,۬E%eumveyyyry46&#"!736$32#"#"&'332676'&/.7>Eebm9#!@D<HU-mGUDd  EN6|cwZy[Y(C=?lkbXHiu@Ji2'f&DCO2'f&DvO2'f&DkO2'V&DyO2'N&DjO2'&DwOD8E6'&"63232673#"/#"&76$;76&#"#7>327#"326?v e.&[n8g'Fk\dfo go\v'f)[e|QDwbs(7PMh"K9U ÃDa"GztL&'?tWa""&! n`pg>oDD&Fz =Ff&HC}=Ff&Hv}=Ff&Hk}=JN&Hj}icf&CiZf&vSf&ki^N&j,#"7632.''%.'7%.#"267>o(0+(T&K%(!(U,{HDz'Adv()3t) 9m%. ?n4d&>nI7g꾼kgV&Qy>f&RC>f&Rv>f&Rk>V&Ry>N&Rj{F 4632#"&4632#"&!!~O78OO87OO78OO87OE~=XX=>XXZ>XX>=XX!' 4&#"326?#"&''7.7327AFcu)"CFbs*/.d?=..Sh8>ZXYYHv12VKu)21Vtf&XCtf&Xvtf&XktN&Xj9f&\vLV(3267654'&#"#7!>32#"&'! _bo( c_rˈn7e\<-e{bHidF<'SW6!XxSQcKWQS9N&\jLo>P'q1D$2'&q>Do>}'uH$2'5&ukDoo>'x$2o'D'xD;k&&.u>Rf&Fv;k'.u&>Df'kF;'".u&>DN'vF;k&&.u>Gf&Flk&'u&GV07654'&#"326!7#"'&54732!7!7#7!3 _cn( b^t7eZ<.d|3#%icF='SW7"X9SQdKX*QS'x]xxP'qD(=F'qHk'!u(=F5&u}H'"u(=FN&v}Ho'x(=oFD&x6Hq&({=Gf&Hl;k'@u*)9f'kJ;k&*!!u)95&Ju;'"@u*)9N'vJ;'*)9'Jk'wu+>k'2uK#'#73#737#7!#!7#7!#3#3!73!3!7!, ! !Mkk yyyyy\yydyf>%3#737#7!!!>323!654'&#"?ю'C2Jp@) a8x Lauigx߉_TjCl=JyF0,4o'u,iCV&yP'qD,i'qXk'!u,i35&uo&,#xbo&L#x~&,"uic'%3!#7!9yyyV*'-`,>9X'MLVk'u-9f'kR2' .>2'Y Nj$)#7!#7!3!Xr/ghyyyyXl' v/>rl'vO2'O />2' O'o/>@'HO!'y1/>'yO#73'%#7!#%!73 K+tLU+dp)zAyuyyNu%3!'7#7!78s%qa'yy`ixail'\v1g6'vQ2' 1g2D'| Qk&1Iugf&Ql~'Qe?9&#73#7!#7!##"'&'733276732۬r3Zg6;;?'f 32#"&'7326 M`vhJq@( 6w>(e ;BD}+F0,4y_TjCl=Jߣ'$^; P'qD2>'qR; k'!2u2>5'uR; k'#2u2>f'zR<'%#"3!"&'&767>3!#7!!73#7!!73r67e[Q~^'&Ҝd=|&SJ!{Z{!j1%|yy49VLIW:3!?D(732673 ' '&547326 6'&#"326764'&"lh&FYm+uU .Svzm9VU021&ees%& u$%"Gztnnl@J)ppDaNK9UV^ aӗ"_љl',v5gI6'vU2' 5g2;D'L Uk&5ugGf&Ull',v6I6'vVk'u6f&k;Vo&6zoD&Vzuk&6uf&Vl;Vo&z'7YoBq&zWVk&7uY2>&W:V373#73!#!#7!3#3_"X(|A4Ay(Y"^yuy Bq&#73!!!3#32673#"'&54?#73:?: 0"59F$SQ;% "yJyY- "VZ@AE,\2Ao'`u8tV'yXP'qD8t'qXk'!`u8t5'uXt&8wYt&Xwk'#`u8tf'zX_'x8to''xX]r&:&|7if'kOZ]r&<|9f&kL\]&<uyl',v=I6'v]y&="6&v:]yk&=u6f&]l?{ '#654'&#"#"&'733267#737>32e>HUMC(e?HTLB  9&s3 9&syO)2!22)73"#676327676'&+32676&+pgk bcW['۱MO!?VYWvVU?>vہ\_NNxciiyY[fE+>?;;H+3276'&#"#7!67632#"'&'!73#7!_b87Pb`99!2mQY7LKe[[[e==9ߺSSXXWXSSS)()(Sy#x$32)73!732767676'&'"+rw{ n['}``FBf"ucyyHLOK 326&#"7>32#"&'!73!9_boP1b`r!Y,xAruƆD)__@AoA@*/# '&76!267632#6'&#"#&'&#"32767^?>Uw|24%XY[6w?(e;BE@sLM{|tƇdcDef ~EEP#$^{^]fSS0#"32767632#6'&#"#6'&#"32767Byz/.Ica wv\6w?(e;BE4e .-fIJ++%%|aDF"LZY& (4TSP#$^{sهBAddgh@@xO ! )73"#6763276'&+jol> SSqpjU熢<*#6&#";#"32673# $7>7.76$324m fjun/;w|#l9j%еx&j{x((ѱ#V "'7332767#7!#7!!73#7!)uTW01#=|&SU!{Z{!{.VD KK+y!Dn^{ 1#654'&#"3##"'&'7332767#73767632e>H+*uvMGGC(e?H**vuLGHB  9&:9y5\[  9&9:y[\ *G467632#6'&#"#&'&#"3267#7!# '&76!2&1PX\6w?(f;BE@sOO~};;BBK;Hd??ZB>EP#$^{XY&&xN&&hi D #7!##7!#! '&%$76iƦe2a8v$$ kk\kkȵu5727676'&'73# 6'&#"3!73#7!>32>([LL tGF?=`Vgin9=<L`;;SuqKp?@$Zpp`y,@lccIC#$_R54NO#yy#x}_Tji#7!#3#"'&U_Q yy<=cN3#3!73#73#7!#o!^M^![Syy yy! 3!3!73#7!#672#6'&9(jM۬_/C;?(e:_4[yyyyy!w P$&'67632#6'&#"#7!#3!733!73vw6w?(e;B"#ur.hpi2xʣSTP$#/1ycyyyy{Xyy%3!73#73#7!3#?ǨyyyfyDxDyQ%%3!733!737'&'&'"#767627o}kuiqY&)6$N;&%f'F5A#S'yyyCyyi}%%M ~i~0%#"&7#7!#3267#7!#3267#7!#3!7#"&Uh$:s"$KUvr#r#&IVwr9ۈ9Hcujayy\hyy\hyyy]VcV7332767#7!#7!###"&)uUW/0$r2uW KJ+yyy7hN"VD 373#7!>323!736'&#"3Jq?A$uLa:;Tuy5y_Tjj+yy߇54NO#y;   ! %276!!'&#"RT9@?6ëpc9[&18&%08pbddy :'F2?pc'RV , !2676323!736&#"%2#"SSMNK+ܬL$+WE*?@6ì::o9:p^!yy͕, dyBKLBbVYD(6'&#" 32676323!726&"]B4b+...Sl@:?6˲hesZ0uY1{//+)A yyO{%!2+3!73"#676327676'&+Qpo##W!۱MO!?VY@euVT76vewvwxyyY[fE+WVUVV63276'&#"67632#6'&#"67632#"'&'3!7!_b87Pb`:8vw6w>'fLHiSSXXWXSSTSP#$^{S)()(SHyy9332676&+73#7!#32326?#"'&'&+3Qdulve=۬F5= V$ If'CpwLOb *$yyyrw)"5/b$$JM;>^ -y81%# '&7676?67676'&#"#6763232673:xx(!gh77:?>76'&#"#67632327673cuYed ƉND +-asGGe/ybdT]^PPc'' --atON"eUV5%>6B"#77m !TULM)%##@F%&>?w7P(332673#"'&7#"'&76%6676776'&'&72P8,`c$$A>Qe(JL`k4!#8)'9uV: !M&#uYQ?7tG9LN[f %T7E,O|.Xu9q$#73!!!;#"&'733276?"#"&7[9?: r4$6v?'f );@$"t yJyuDѣPG/-}`M"#6763!#7!3!73kAN!>WXkHAy)س>LI[fE+-yyK)#73767632#6'&#"!!32673#"'&7֋vw6w>'f ;?%! r4:GZR:: ySTP$#/*yuDVZ@AED{V%!#!#7!327673#"'&)|B4By)$WE**u)TKZ\)#uJK,,^""pp&8Gxc&X<;(!#! 76'&'7!#7! '&676i{6!.4??Zut4../"6{RQ&7f7&8}5 ٚ) }\<ܡ%2'I!#"'&7#7!#ǭ4..(6ldR'7(_)y5)dZơ}N yy>=]_ 37!3#!7#63237&'&#"p˕{r W`!C;) f(?;!,\9yyyy%/GP 9E#6237.#&37!3#"&7'3267RH<( f'>wQrg6T;"G|'{?a!O%{=h 6'#!73!7#73!#!z"k6h-#c k5{XyyfyZ+w^!"&'332676&+7!#!U{%$jt9mr}}<(1}'{?qGTy((H~h7!#7!#"32673# $7676 q?{'}'<x|#m9j$%sGఢ((yT`'!267##"&7>;7!3!s%$j:m#}x;( k4Ty((Hf+w'#6763 3!!73!?67!7!676'&#"3l8tpnn|{%Ji"MgZ||M+sp"-01{kLLdB%tu}g9CJq[kZ[GHt!"&'332676&#!#7!#7!#$jt9mr}}m={%UH((Hny`' !"&'332676&+#7!#7!4{(%jt9mr|}e2mRPe54y((HCyߨ5q#!3##"&'73327676'&+7#733?<BJ*'Aq2 f Q\,(!Ai)qyMU "R"#/0+y, #+,_'lm!7!3!!!!#!7!Y6TT6%7TT6S Ѣ ,%#7#&&º% k'?>' tf'@>' ?f'@ GV'-/9'M/=9H'MOV _'-19 !'M1f9'M=Qo>k&$u2'f&Dl?k&,ui@f&l; k&24u>f&Rlk&8futf&Xl' tP&qD't'~'t''t'$~FPDo>'B22P&qDo>'+'u$1'P'bD''DDP'qD'q;&.#"326?!7!7#7!3## !2%;;L<L/ ŝ??Z @Ʊ&&xxxNLhi@A)9`D3#736'&#"3276%!"&'73326?#"327!#32_cnQ3b^:9_Q'_b,fkt#7e˵..e|=yPS6SR3!!ifySQ,*QSyyk'u*9f'lJ_k&.~uk&Nu;_ &2x>_D&Rx";_ P&qUD>_&q^k' ux`Zf'<=9ff&l '=>' t']>' ?'] Gl'v*9f/3#&#"3267#"&'73326?#"776!2lo:f@' 8a^s!+`b-e16t#nɹ'/,f~08(P=\M?kL۬XWq>o>x5{kyyyy yyk&1Iuf!#73#7!>323!736&#"3#PJq$atc,LauTuy5y_Tyy5i#yfxKl .!32>&#"33!73!3!73&'&767677j?9/2S810!< &ۀ9pmf ZHS#;nlMMlMS#TuJ;yy1yyf&#"&#"32677!7#"7676! P"=*y*YIT 811R811R3yv6, .WSi xxpc''l#T짧TC 7LMlMMl'$wv$1'f'(Do>'u$1'5'Dl'$v(=Ff'VH'u(=F5'CHl'$iv,i'%'u,="&; l'$v2=f'sR; 'Ju2=5'`Rl'$v5f:f'aU'1u5f:5'NUl'$v8sf'X'xu8s5'uX)'F6)D'VV)'V7Y)Bq'Wk'Ru+=k'!uK9#.:%#"32#7!72'&7#676"%76&#"326\)Ld̴-.d|YP*7'~M!c #v 9_cnP2b^t* ),*QSxu S,OND|.Xi6#7!#!)'6767|'{?"'Jt68hAmZbdme'37!#!)'6767c k5{J%'Jl?6y9+wmTh[vo>'u$1'N''Do'~(=oFD'H; '>P&qD; '>P&qD; &2"u>N&Rv; ''\u2>P&qD]P'qBD<9&qW\!%776'632'#767&1&#7!9|Q8'$Тj{'\-ޙk}^rJI UeOx]D5%776'632'#767&1&76&#"3!73#7!>329|Q8'$Тj{(\-,M`uTuJq$ޙk}^rJI UeOi#yy5y_Tkq'%776%#73!!!632'#767&1&9|QJ:>9 I'$Тj{(\ޙk}yJyZZrJI UeO9'#7!#"&'7326756w?(e );BEy\PG^{  ,8326&#"7#"32#7!>32#"&'!76&#"326$!9_boP1b`r!q7e˵..d|Yn8eͶ[ezS 9_cnP2b^tߺʯ1SQ,*QSxSQQSyi6]VTD".:>32#"&'373#"32?!6&#"3267%326&#"7d̵..d|MM7dͶ[ez>n!:^coP2b_s!Q 8`boP2b_sSQQSHxySQ+ ,QSy!6iiʯf1!!'?3733!73!3!;'7#YA W/KA秀99J/ NZ `+1~Z yy1y3+ŏxC! *'%&!27#&'32673# '&'&#"FBe3?Tx|[aB5r CƆD^ L:NZ'f )ZJ<T<]m (#"''7&7327#6'3267&#"Bt(e%|`"-.d+LyVŠ(V5*P1hxI>#73#73#7!#3#!73,^"[["[*yAy yyI!373#'7!#7!3|0=a7Ay)}az<9yTZL5ZyLG#C DH#"'&/&'&'&'327676'&/&'&767632#6#"326?zb @wLO&4f (2+2B}55+_/f 3.|;<%q;Ifn&;>^ ), qQ%%*LLD@{I"%5MOR6 nb$$JM 9^'3#7!#!6326?#"'&/&c k4{I <If'CpwLO$ y9+wa%$JM;>^,32+#!7#32$&#!"3676vlumW#3F>>"f\yy "R!D'#7!>32+32673# &32>&#"]Nc~ Xs`v'f([f&xYr$4GJmyTP?{Wc"""ldl<`AKpA,%#767676'&7$6763 %$76'&xZ^t|G<NLU +NY-. x_<7Pb`8Q3,_c"wGBmy%;"(^ _WXZQ -326&#"37>32#6&#"67632#"&'!7!9_boP1b`r!q 6w>'f (PG^{Q)(QSyD>3 #"&'332676&#"oB/.db3e Zg+*J|`!۶**'πxJR8.%76'672!"'#767&'&77632#6'&#"9C-'nh{( ~-,KKH0U,-gX\%ޗutHG UeO 0@@sx^99! .76&#"326#"32#7!#32673#"&7  9^coP2b_s6LKe̴-.e{Y$B;Af'E~6˲i6Q(),*QSx}{^GP)#/%3!7#"32737>32#6&#"#76&#"326:7e˵..d|!6w>'f (OD!76&#"32#"&'3326?3"*RUdi<5./kg}$Xæ,7ݪtzFPD326?%!76&#"#6$32#"%)TRd"$P|h&F/.ҩwηzt7ID 6327676'&#"#6$327327#"'&7#"'&'7TR22"*(|h&Fk ͝#$5Y PN-UiC; .c7 ^ŧJTSR%_7[ztv+^*, 0]Qxft؛Vg);7167676#6'&'";#"7673#"'&76767.n~%e;9TnC> +4s<7]G/:Z*d)ʁ[kxg,sEP3E)'1-?E.8F5XO6CQ&<9=KDQv71#"'73767676'&+7327676'&##76|OCɴ)d>QB4E7;tH; .2oSGJe%cV,[vQDK=9<&QC6OX5F8.E?-1')E3PE7C#"'73767676'&+7327676'&##767327#"'&7H{PCɴ)d>QB3E7;tH; .3nSGJe%cG#$5Y PN-UiC; ;QEK=9<&QC6OX5F8.E?-1')E3P:Y+^*, 0]QxBD8%67676'&+7327676'&#"2!"'&'$%676xb<< 43~""|KJ ++aF#@0,5giPO}3^;5lD`OF23`I@>x@>L_34 %{ fGHGGg/P4"9'#7!3##"&'73267#735Qi6w?(e );BEjy1yPG^{\y9N 6#"326?%!"&'73326?#"6763!7>32#6&#"[coP2b_s!g'`b-ekt#7e̴-)6w?(e );BEH6i!!ifySQ,昕PG^{f,9c''!#!"&'73326?#"676#"3267'_b-ekt"7e̴-)?coP2b_s!'y`!!ifySQ,昕!`6fI($4'&#"327#7!#"'&767632K6EiVX))..b,;5Fsmmmpo+,d\]Z-sT=mmmn((Ts6-?'7#7!##7!#6v+lHu|vu~?Ye1yByyyy*^+%76#76'$'&&'&#76767632#6&#"676323!736&#"3I6w?(e );BE7JPRp$atc,LauSuyŌPG^{^**yy5i#y9:#7317>32#6&#"67632#"&'73326?6&#"3!6w>'f )32#"&?<QxIGQ xGIQyyyfyVy1yuQooQOonc'#7!3#"'&j|R:MQ]y8<=c0?' '!#3!73#sOyyyy5%3!73#76767#7!67673{! c<9SKw c=1Dyyy #=KFxY#=L< A%3!73#&76!2#7!3#673t^,<*@ljfhyyy nxxI _`J931#7! 32673#"&7gH#B32 #"&'73326?6&#"3!736&#"3!73#7!>32Vh~$E26v?(e );BE2;#%KTw\ssW#%JVw\rHcuyjay}PG^{}Rhyyhyy5y]Vc9D)#7!>323!736&#"##"&'7332674Jq#btc+M`vh6w>'f )32#32673#"&7676&#"3Jq#w$B;Af'E~6˳?F+M`vSuy5y_T\}{^GPhi#y'373#7!#7!##3{|-W]Q|?Y\z0}}}V{z>D  322767!!6'&"..S..e:3*!n:2+)`VWaS_aRj, )%#"3!"&'.7>7>3!#7!373#7#!73OrKU.*3deTnb,{I<{A{L{W~99W%)=?)%P(=2326'&'&3276?#"'&76767! #"'&R=1{O@Pd5A3[Zo?@$#,,LP$ggo??(xjlͩjx(POpoOQj=f=jQOopOPL%-!#3!73&'&767#676'&O=n..33l..=7- HY&2#GY%yuvyy%ts^E,`a,2/``/4'33267#7!#3!7#"&'7f :DiJu/!BoO =US̵yyyok _332767#7!#3!7#"&S8f :DhNOt0!BoO =USfhyyyok 9Y'%33267#7!#32673#"&?#7#"&7f 9Di It#B;Be'E~6ʳ!BpN =US̵yy{^GP}ok X`D#6&#"3!73#7!>32`8f :DhNOڒ!BoO3USfhyyyok r9cD##6&#"32673#"&?#7!>32b7f :Di ^$B;Be'E~6˲!BoO3US̵}{^GP}yok D%3!73>32#6&#"p6w>'f (323!7CpAyA[yy5y5 Ko@7J3<>H*  '&3#!73#7!#32767>7!#32767676'&#w$P>Hoqs>2 " D097x=m/.)7 /)[ 7AnK 5y5yy[Ay>!!W  *H><39 D<?332676&/&'&7>32#6&#"#"'32673#"&7$-fqtau 5Z}55To/f hsap G|:: ()$AJ(=4v6w>'f (32#6&#"#3##"&'73267#73+73!MC(e6>I*+-<i6w>(e );BDj<'NL:;yPG^{\yVy9^8! 326?#"'&76'&#"#7>32H"B;Bf(E~6Zr6I))A>Qe(JL`tWS/GPSlQjP:LN\n7o(3#6'&''$76763267632#6&#"%&#&76767c %Msu'-8# /LC(e6>A1=4LDx3YO,E8Sޘ% ͧe\NL:Ft7?QX.|G0D%3#!!7!6&#"#>32:9 r4:G$t yyJyDVZG9gq#73!!!32673#"&7 9?: $A=`Vhh\Ry3pp`y,@lccIC#$v'3!733!73^it|}o'Ryy`yy_'!3!73333!73X^}qVA}hqLyyfRyy?H>32'6&#"3!733!73@h,h<&f 0<:U5hr~tubMJGc%yyuyy1)373#7!##7!#31r~s;yyydyyy 9'37!#!!332673#"'&? c k4{I&&$A323!7|iA"0"%[Q e%>|A'*g]my)0/#"R" UMyy%3!73&'&7>32#6'&#";pmCI)'Aq2 e Q[ ,(!BhyyylMU "R"#/0)i#7!##"&'73327676'&+PmCI)(Aq2 e Q[-("AhyyMU "R"#/0)m8!7327673#"&7>32#6'&#"Z2[Q e%>|A''Aq2 f Q\$\/#"R"  "R"#/8p@ %6'&$"'&762ן00op/0opkk76jki**~)5565655' +%327654'&+7327654'&+7 )73#7Pk_s5KzQGdVd1OkGmWUEy-6{C%4%+W4*yփE8 G:Wy5yD8%276767'&'&#";#"2# &76767&'&76$2!<&,13 ?a== 44}""HJ *+dIY7,6;n6giOOF {% 43_L>@x>@I`32"/gGGHGf;34'&#"327#7!#"'&7676327>32#6&#"K6EiVX))..b,;5Esmmmpo+,$$6w?(e );BE,sT=mmmn((Ts6PG^{`d't$7 '1>32#"&'$767232#7!#6'&%&#&7>7WxIGQwGIRG'Fvr'#*&Nc x>TQopPOonM3Uy\8?QYO,X8fV'733!73%#7!#7!#3hy:rL"g%qiHڈVy+yy?yyXy x#' 373#7!#!73K)zBy5yy6VJ .6&#"32673!73#"32>32#6&#"!9_coP2c^t M7e˵..e>=46w>'f (32?ˆ?(iA"0"%[Q e%>|A'*g]Xyyyfy)0/#"R" UM)%3#!#73#737&'&7>32#6'&#";3#p?CI)'Aq2 e Q[ ,(!Bh(yyyfyMU "R"#/0)y %*76&#"326#!7#"32#7!!!! 9_cnP2b^t7e˵..d|YVwJ%hc i6ۇSQ,*QSxww5`#3?3!7#"32#7!!!"&'332676&+7!76&#"326xq97e˵..e|YVvbU{%$jt9ms|};'-c ) 9_cnQ3b^t}ySQ,*QSxwTy((Hfi6!I <A76&#"326276!367676#767#!7#"32#7! !!:^coP2b_sA%]8vJ6KYx_"v{7e˵.-e{Yȋgc i6UF%rw 8\*"SQ,*QSxY\qE#73!!!3267;32676'&/&'&7>32#6&#"#"'&'#"&7:?: r4:G!fB8tbt [}45Un.f hsbp G|:;Yb[cSu yJyuDVZ)I>KF@#"%*LL!mnEB6%5NN8p739#73!3767632#6&#"#"&'732767!32673#"&79?:vMC(e6?J(<3w6w?(e );B"4)r59G$u yJ]\NL:;ђeSPG/Ia-uDVZk}q>F#73!!!32767&77632#6'&#"672!"'#767'#"&776:>9 q4:#!$-KKH0U,-gY[&-'ng{( "Rt b8yJyuD+(Qv0@@sx^nHG UeO +AEk~9`C#6&#";!>32#"&'7332676&#"3!73+3!73#737>32e6>HUJp$6w>'f );BE,LauTuMC NLs_TߣPG^{+i#yy5yy5yo&:)73#7!67632#6&#"#"'& 37332676'&/&'&(]{Tn/f hsap H|:: Ya&6afB9tau Z}5%y#x(sAT!mnEB6%5NN֋)I>KF@#"%*L4!#!73#7!!!![WwJ&hby#xww=)#73## ##7!##73## ##7!#HQ IBƎ`D ` J;HQ IBƎ`D ` I:SsJCCuCCsJCCuCC?#7!##7!#=&'= =&&=S^^V03!73#"'&7#6&#"#7>32332767#7PJp??$KH#B< !f(E~6YZcLa;:Tu'xx_Tij{^$#PSTy˄75ONy9B=%#"'&7#6&#"#7>32332767#7! 32673#"&?#Kp??#LG$B9"!f'E~6YYcM`;;Su2#B;Be'E~6ʳ_Tij{^$#PSTy˄75ONy}{^GP} 7!73#7!676323!736'&#"3 X] ,?.54Ii++6X K7 2>&$/L CC5;;sCC=K,,_C4 07337>32#6&#"676323!736'&#"3 X^#&((A&+ .44Jh,+7Y K8 2?$&/L CN[^ ~-(E4;;sCC=K,,_CD$67632#"'&#7!#"'&'7332767a'&/.L.0 X 'tLL#'')B'* . -,>Dg\./ ~-(E!#6&#"3!73#7!67632C',D11)q h XP^ -)86I0.99eCCDj>733276?#7!#3!7#"'&B'-C21*q  YQ` *68H0.99eCC4Dj>2*733276?#7!#32673#"&?#7#"'&2B'-C21*q  Yh *') A,))#v *68H0.99eCCE(-~ ^[Fj>&4#!73#7!#32767676?!#32767676/&#G3*/ THiVgWf g&!  +S}$$(G. #+ $>M* 000 30#98yZ#73## ##7!#IQ IBƎ`D ` I:sIDDuDDU[#"&'7326?#7!##73#(,.BD'B '&6! D g J`R KB }+*(8[DD`DDK3#672bp +ɫhC7`K3>?3Lbp +ɬ.C7`&73vf ..`7R27>'H#52))1j=<)Y[jt'&l&'STTS X"'&6763"j=<)Y[j1)*tSTTS'&l&'$"327676'&#"#7>323+7lFC, <5 B'P+00A<=Y YY w.o44~/+CC(="3+73&'&767632#6'&#";]X XY Z<,1CB*J!A 5;+CCC[+/~44o.wif3#'#ڤff373x3YXPw qH@3YX{.x)3!#B@A llx!#Bx&`gL& `hLSR:J 733##7#7!!25327673#"&9q,,99qa_5I''''ISR)N 6762"& ..l! ^l?<++++<;XXWc 6762"'7327>'&#"H)ZY><)ZY=c 02(*11))TSSTTSS7&&'&l&''&o!33267#"&7>p70,/#K%2Y&ea KAJ)- \T4mV!76763232673#"'&/&#">=\!$8# %8 c==\!$8#!%8 KL /F=LK /F= f3#3#B<fxe327#"'&7 =#$5Y PN-UiC; +^*, 0]QxN376'#7!#7#73#76 s nE | LUM Rē$h>HHGD-DDDD_w 3!73#7!8Y XY 'CCC$273327676'&/&'&7>32#6'&#"#"&$B%&K?&%7#73#3!73'3!737'#7!#M SĎR t PYT YˈF | KDDCCCCDD(="3+73&'&767632#6'&#";]X XY Z<,1CB*J!A 5;+CCC[+/~44o.wW\#!7Vs \W\#!7!Vr!4\x(W\#!7!Vhr!g\PPcW\!#!7!3f4r!(x/W\)7!3f!ϩc>?3%>?3cp ,Ȭ?cp ,Ȭ.C7`C7`fC(fv(fk(Vy(GP q(fM fZ5u() Nv(S)Nj(p2#767676'&#"76 $6VOC32BYb47Q%nn&1&8"#w(4?fz(?fl(3GFmU'Wf#!#͈hfxxL9'uv]5u 3S #6767MU NL*hE+rPP7'&767632'6t: 0*:>" 2oPB ')>61+8B8Y(Bw/.&'&7676322aE 45>: .-x./wB(Y8B8+16>)'Bf3#>frC zvv% #7373## Xü]%33##!㞼yq!7!#I!Yc732676&'3#"&2<%3 hL/W2~2&84(P&6`*r|>"3"'&67632))1j=<)Y[j&'l'&TSST5737336!!üL4#7!##ێ!!aC%+ #73733##Ҏ !ü?a&7!?!!a9 #"&'733267H6w>'f (?3tNU MLp*hE+oOP74ozf{oxfr3FFmpr#!#7!B7B!x;r#"'#"&7327676732767m- T%>T[GqC?!r BE 3 HHs zvlfrk ;ru=UZGqC? s CE ;3 HHs zi '7'77by`xQQxayQppoppop?#"#32676&/&7>3!E7 !F7UY"5!%dUY5"6&$f: 'ff)$NvC09#&'& #67$9!!d.8^]wwGwdtf3dǺt8VHrMx ?3?jD'00g2߂] V>2"&>?!xQwPm|'-OpqnneSϊXmf3#nf+)]&jo>f'#  >32#"xGGQyGFyppoNf'ONRf'TNf'TN&f'Nmf'Yf'+&ΐo>$%J)3!)ؼ(y=+;  "!#3!73#2#" ! "{Z|"!{Z|ѫ::o9:pRT9@?65BKLBydd,.o>73!7333!73tpn yyy\yy%01#73!3!#!##3!73#7oJJooJ:JnD!oZo!!oZo!ZZ; 2V{3 # !#7! !738,Q:o"4SnJ*ZV7]<D&/67676'&'3!737&'&776?#7!#%/.h((@*Mz+-ڞ{-+۠1,h)(@N2rr1yyYne$\yy\$en|61rr2;z 113!#"3!737$'&6+7!21#7!#67604\R41},M,Pb04!Q\70*D [j+l1ywiyyi~%y_.eyy7.!%!73!76 !3!&7 -{6l"/3~4.\"l6z.Ť'7Q7'} 0 '5 5}\A<}'u]'u<`f&)]f&Vf&pf&ͧ & <`A,6737'&'# 766'&76763Z_t|G<MMT+OY..: y^<7Qb_9Q3,_c"wBmy$:"),+ `W6XYRV(-%327676'&+7327676'& !#"_+7HZf B;/#2B'0R%*J|'l/$!yo]Ll& VD3#7!>32!6&#"Jq@@$,Lauiy_TjgXi2,!'&"!276 32o7H=9C<BBjBBAQ6sy{T' %'&7#7!7ӛ"g}'nm]!p|qRy3G'')73#7!##7!#3!733!?yCr.hph3xy6xx~yyyy{XQ%3!733!73&'&'&7676o}kuiq2K%M;&%f'F5A#HyyyCyy+'%M  9V'!#7!3267#7!3!7#"&'xh'*O`uSv9@oB2VXynyRy}SGi')#7!6767676'&'73ƤF`x2M 2t.G>JVEyQWmNy9L,;UQwapKq,`+U)&'&76%!#!;#3 #7276#&'&7-JTF#-m2C'+,7<*7k%lܗx!7G=2V!yCxLbo]Lls8>DRd'#73#7!#3!73!3vƏuy5yyyy5yVE 32676&#"%6#"&'! 8`bo(,2b_sfvPW[-.d{bHiHJQS`UgD% #7276# 32#6&#"n&o/.Idb3e [f+*ITo]Ll& (**هAP' %266&" 676)es-*0u)-1t\.)TZ+Ꞌyk'#!!327'&7m3;i'oej!ӛ!h!ybp|qR'$#7!727676'&'7319=h~'XPK("uFGNCsOn6XA,~fpu \upf~,AX6/7!'7eN&jN& j>f&df& Af&2p, (676'&#"'&3 #327676'b _bH=<&mjBBjRR=\9e_J>*`Axy{^z~s=\,%76#"!3##"'&#7!3276 3 &R$@Lhfaj"^fC<@W=cOA:ny(yݔ]dի%6#6'& 3!73sX(=: fb`:W9xQ!|>,Wx`T/pyyFyN f'z&u8V' !! '&676!27676'&#"Qbks,.EFtu.,bRAz\f#*CDj(jee+":4-qLq~a^f^a~qA'8!32!327676'&7''&'&'&76767#7!7 #8!'$'Ik.=?=/lIOL'! !E=YE>NCsOn,3,t*#f @fpu \upf= &%X6/7!'7/6X/yy%96B!'&'&7'&76?676'&#676?7673#"&'73768'($t%>ۚ(:5`u 53D&e4xa'EcdҚ'95`o "+/E%eq6w?(e ;7rrj0>\(dTiO"0B'/ 0yuh1D(dTlG /C}KP#%]Y, %2#"!&'&! Ҭ::o:9o9GGtSS9??\BKLBkh(dИaYD%26&"!&'&32K)m#5D)DvbZN9]ywcYN9[# )##7!33KJ$my?: #!39V|r|"|T #6'#&#"#6$3 !7276-tc ttHDr@wUBYj,_|xBݔ֡oA@__y.VJ #&'&'#&'$#66Dt tCDz Nt7T2513,9'Gq h56'&76?676'&#676?7673'&'&\t%>ۚ'95`u 63D&e4xa%GcdМ(:5`o "+/E%e4|]*B0>\(dTiO"0B'/ /zuh1A(dTlG /C0 7rr RE 032676&#"762#4'&#'&7%6#"&'!8`bo(,1b`r !'zV% f*YT\GZfvPWZ-.e{HiOJXO<,:)L-^JHJQS>DD# 32#6&#"3267B/.Idb3e Zg+*J|`!L& (**هπx9 >32#"&#7!#"&'73267/wJFQwGIQ6w>(e );BDTQopPOony\PG^{; !326'&#" ! t\:87N+6oX7RT9@?6B逡vdd>DD # 32#6&#"!6!3267B/.Idb3e ZgJB'l%|`!L& (**هdZyWhx(D 332767!6!6'&#"#>32!"&)]a|I=+k"'g&e3qd./LxhWyZd'**ڳH#73#7!#32+332676&+,۬E%eumveyyyryV 326&#"!#7!>32#"&'!9_boP1b`rEn7e̷[e{HiʯTFxSQQS;# !2#.#" 3267&^>?Tx@ruƆDef@Af%#73#7! !#3!73#35۫*0)ګM ǫyy9yyysyVa' !#3!73# !Djy' yyy_LVE%73%6#"&'!!!732676&#"%ZlfvPWZ--e{9j!9_bo(,1b`ryeHJQSyppio332#"#6$3 !"& tęDr@xTB?>,@AoA@__; #>32#"# !2#.#" 3267xFHQxGF,^>?Tx@ruƆDyppo`ef@Afo ##"&>32332#"#6$3 !"&xGGQyGFq tęDr@xTB?>,oop%@AoA@__k'uL'uLJ-#"&'7332?676&+3!73!#!#7!!2? :\JH)u 6DX/-(>mum\*{ApBy)U`C@Op""^XK W_yyuk'uJ;!# !2#.#"!!3267&^>?Tx@r|m8V&3CƆDef@A 6,'u=V-g*7#32#!73! '73267#732767654'&+FWDsjI'{H^Fd0l}UF(u.fm820PQ`,@Oy #rQn$'iL yMPKy"$yLL-'_$#32)73#7!#73267654'&+UwjnF&ܬAy(0GL"xKq$'yy-/'`7Q% %3!73#7!#7!$۬>{&yyyy #%3!!74#!"#3267#7!#3e1k} PZ'1mMYf"X3N*q>hm$yyF( %##7!# 3!3!73!73 #7!##7_?'9jMi9ɳ`y!yy3yyy\+yyy!y- $'3 67654'&+7326764'& #>3 | $ ,?;/"3ϒ#l4}4zqY//406߽i0+^=Xx)o/C{+##`L~$'#73#7!#7#7!#3!733,ܬܭMoyyykyyyyCDy&Oju.gG% '73267#7!#3!73!sUF(u.fm82۬Md0lMPKy"$yyyy%0+; 2!#3!73!3!73#$ۭMحM۬yyy-yy{3;&V7GI"'7332?#7!##7!#Qy)v._?rՆs &xDPKb,ryy"yyb:!C#+3"3!737"5437#7!#2#72764&#<[ZZJIM5 5YZLd=\Z%#"3"#۬Ma7NdWF 8~gv~\~-%)yyy#M=yW\HH%S2'DD6"136  '&547676$%>2654'&"juHsBi6uT .oV) ]$ZfsJuI6\zB%(n8tkAJՎm:G:Ĉ :&LK!__ML#a' +%327654'&+7327654'&+7 )73#7Pk_s5KzQGdVd1OkGmWUEy-6{C%4%+W4*yփE8 G:Wy5y~' !3!73#7!#Qu3myy5y?-%2654'&#"  '&547326'&#"'6ehZ )TfuI j0Z>uU .SKj0:^]C_Tc7_^b7"ajrl@J)L)RTo=FDHb'+##7!#3!733!73'3!73'#7!##7>xDr/gqH3xy3/ph˱rDy'x~yyyyjGyy#Gyy?yyxFD-%654#732767654#"#7$3 # 332`7+E3  e&gddOP$B4U cr=q1#--]#$@K:L:U^O &t'Xt&od'')73#7!##7!#3!733!?yCr.hph3xy6xx~yyyy{X'7>?#7!#3!73!#"'72oQN*0Ez9K>qVڤyyyy5}_'3!73#7!!#3!73#v{wScyy5y|yuu:d'3!73!3!73#7!#!#7!ƐvBBu;u7:7u=yy}yy5yy?yy>DRgDQ.VDS>DDFg*DP9'\8V< A32?'&#"3264'&#"?62 /3!73#"'&5472#7!TB)| A$} L.kI .J*6vV -AA4nvT .U Kd77L:7!Q7\Gk@IGyyqGlAI(Gx\'[|'%3#7654#!73#7!#!#7!#OGk Q;u:v<yl sy5yy5yyc' 547#7!#;#7!#3!73x`3;t6fJv=1yyByyyy'%!#7!#3!73#7!#!#7!#6:v=;t:v*uy5yyyy5yy5yy'!)73#7!#!#7!#!#7!#3#7654d;u:v)v;v=Gl y5yy5yy5yyl sA'#32)73##32>54&#R:yS5?um4BwFcG'yO7o!y5+`m@UO'()73#7!#32%327654&#!#3!73#r6?uO:xSBwFI\cF{O3y5yyO7o02?1DhP32#"&'73267W+M`vHu+a;Jq#6w?(e );BEmidyy+yxy_T PG^{~f&v}j>DD # 32#6&#"!6!3267B/.Idb3e ZgJB'l%|`!L& (**هdZyWhxDV>mLi^N&j9MH'.327654#!#"'72767676?#7!#32#!73Cm0Ez9K>q#Q''72 ~!}%VmmRRyy!ky'+327654#73!3!73#7!#!#7!#32#yCmvBBt;t8:8v=83! y}yy5yy?yy!l%#73#737#7!!!>323!736&#"3I,a;Jq$VtX,M`uHuy+yxy_Tyyidy'f'vqtf'Co9&z/}'!"#7654#!73#7!#!#7!#3 Z'(f RG;u;v= sy5yy'yyy9 -3267654!!#!#7454+3 )73#"#!7#nkM2mI~1+ &+~Q%m3M-'yY j+/y!Yg *#"#73#7!3#654+32)7332>54&# )X"a*@U+aQ);yS5?uAwFbGznx fO7o!yt`m@U; ?vD   547!26!64&":" .!mRmDA@J}Nu~+!3#32#!73#732767676'&'&+P5Z5 Etl['{I_GKPf="`F,''DP/щ#rciL y$ LO2Bq.32#!73#73!3 3276?676'&'&#Q92e.)*G 4p{:5:Cm.0(! 5 B @ AkJ 5y5yJyH $9e6 %3!73#7!3!$۬33{KZyyyy%RX !3!73#7!3huu5myy5y1%3!73#73#7!#7!!!$lV>{&S~yyyqy'~'%3!73#73#7!#7!!!uA;3mQ9"yyysyIyߨyJ+3!73#7!#7!!2#"&'7332?676&#`o$۬>{&T`#> ;[KH)u 6DW0-(=muyyyC@Op""^XK W_9~''3!73#7!#7!!2#"&'732676&#Bu3mQ0==@$?6w>'f );BEB,Lyy5yߨjlPG^{uio&NzoFD&nz)3!73#7!##7!# 3#i(jM۬_Tyyyy!yy3!'')733!73#7!##7!#3#0kph3x?yCr.hOy{Xyy6xx~yy; 7#7!#3##7!# 3!3!73#7\49(jMpyyp!yy3yyy>7#7!!!#7!3!!#7('Cpr.hiHю5gx߉yyyXd$!##7!# 3!3!73!#>_8)jM*{y!yy3yyyr(##7!#3!733!73##&yDr/gqi3y"{7'x~yyyy{Xyy6:!73!3!73#7!#!#7!#3!EkkM۬XXT?ydyyyy yy!fd'!73!3!73#7!#!#7!#3!mvBBu;u7:7u=P:y}yy5yy?yy;L!#7!3!73!3!73#7!#!#J=|&٭MkkM۬XX-yydyyyy '!#7!3!73!3!73#7!#!#'2mRvBBu;u7:7u'ߨyy}yy5yy?J1!2#"&'7332?676&+3!73!3!73#7!#`#? :\JH)u 6DX/-(>muoMحM۬$kC@Op""^XK W_yy-yyyy9'-!2#"&'732676&+3!73!3!73#7!#=>@$?6w?(e );BEB,LAvƏujlPG^{uiyy5yy5yy;o&XzJ>oDD&xz}V373!#!#7!3!*{A4Ay)T?yu-!fe~'373##!#7#3!m23m搩O:y5!ߨ;L]<TV'%#7!##7!#3!73sg(rQgtrWO_yyuyy yy)733!73 #7!##7!# 3##|KVyu=yy!fe@'373##!#7#!#7!#3!m23mNv=O:y5!ߨ5yy;L!73!"&7#7!#;#7!#3!W#77mumT?y;yyőyyy!fd'#!73#'&'&7#7!#3#7!#3!mv1[">2;u5 #)Iu=P:y:9iyyByy;L#73#7!#!23!736&+3J۬W_#7g7mumyyyyy;y>K, k'!uMb5'umJ132#"&'7332?676&+3!73#7!#3#7!#[x#? :\KH)u 6DX/-(>muoM۬W2_kC@Op""^XK W_yyyyyy9''-#"&'732676&+3!73#7!##7!#K=?#@6w>'f ('f (2;u5 #)Iu=:9iyyByy !#3!73#Oxyy#o>}'uHG2'5&ukgo>&Gu2'N&gjODDk'!uL=F5&u}l;PFPD;'2uFPN'j 'luMbN'jm&NFuFN&njY^x`Z'=P&OqDt&oq&OKutN&oj; '2uU>N'ju; +>D ; '2u>N'jo&du(%N&jXGIP&ZqD9&zqGI&Zu9N&zjLGIk&Z#u9f&zzL&^ucN&~j#73#7!#7!3!,۬>{&T>yy-!f~'#73#7!#7!3!3mQO:y5yߨ;L&buON&jD5?326?#"!76&#"#6$32>32+32673#"&32>&#"f%)TRd#uSd-$P}f'Fy8^p hn]v&f([f{&xbs'6PNhҩNN6-ηyuMONN?tWa""Mn`pD2 #"'&'73327676'&+7327676'&'&#676giOONWV\&h00ia== 44}""HJ *+bg',gdDgGGHGf%]-.43_L>@x>@I`32\|a_(-#"'&547>32#7!3!VxIG)xGI(ǥ9Qo7*7Oo7)7yRyD1"26&326?#"%76&#"#6$32>32#"&esZ0uY1%*SQc#xQj,$N|g'Aw3Ly-.rҩPL:(϶ztMOMOMD 32!&".S.-/t-) #"!267..f-0u,)t*!73##!#!2676&#!#OmYK/ ݹ mY.l}Tm@|BXjd+ -%"&>2"&>32!73##!#!2676&#!#6>\l@ _6>]65@_OmYK/ ݹ mY.l}TmXxTV:~BXlbr8t0%#!#3!2676&#!#3!2676&#!#3!73#R9 ڼ momôhqx&mkmijiqx&mommYI1uJsy=S^h`>R_hx>n=(7654'&#"3263#7#"'&547>3273 47@ 74BK  U8q0 q8C :<(.`~T20[^CJ--S3L-6-.[z'#7!>32+32673#"&32>&#";V 1j?\Pj8I327 $;?E3 >;IU VZU "`?q@M:g[`a[B32>32+32673#"&32>&#""54?J4q?~2OA\_-Ln#;Fufj AF:J@9x@MgK>H"30Bt]\k ++rdB@c^++++`Zcb"@J05~*yw<}4=O!(#7!>32#"&'#3267654'&#"V F#_@:& ?N <>F>32#7 <>F>32 54"  OA^^,D/ ˙>, J..-6mA6,,3C@c^P8X'.V;a,2J326?%!76&#"#>32#"&"54?o2NB^^-̙~t]\k ArdC?c^-2"&76767&'&7>32#6'&#";#"2673^ ABjd31 176:BB>&& !!N O./ >APaA?UM9'' ''8NU v34*"#B"#)43DG64:22#"'&'73327676'&+7327676'&#&#676 BBje22 1679BB='& !!O O./ >APaA@UN8'' ''9MU v34)##B"#(53DG558%8#"&'73326?#"'&547>327!654'&#"3267gХ@"I]^ #_@9& ?N <>F>32#7!3!>L.- K-.UV hV  -= += CCM##7!%#733#ɟV nH AݦBBCCC0f/>323!654'&#"#654'&#"##7!>32 6lAh(=V D /5KGE /5KGhV .d>JQ:69$<"*CWG% OJWG% OJCS3071+654'&#"##7!>32#"&'7326Y0=JBhV /fGf(Y"K'@ %*+g' V^CS4/:&;"(GY\ }  4E!267654'&" '&547>32p@IJI6֟J5j\64j[66>R;\#)R;[$(,>32#"&'7332676&#"c*rЛ?|= @9AS].N=W>dcJHnqFB9 >32#6&"֟Iѐij1 #"&732670ՠIБijOP(3267654'&#"'#7!>32#"&'# ==F>3!7#"'&547#7!3267>hV.fGf(=VD 2JQ ;5rs1CCm:PJ!CCm:PJ!CC=CR3/6z #7373+nB ] N CKrCCa9D%86$!2#454'&#">32#"&'!73267654'&#"'J`b-e16t#7dZ<.e{: ^co( b_s !! \/3ySQdKXQSyfcF='SW7"X'!#3#3!73#73#O<??<'yyyyfyV9%3#"&'73326?!73#7!6w>'f );BDyy}PG^{}y#x9 !32>&#"!73#7!>32#"&'r %;>F3 >;IU VZU #`?r@N:f[`a[WCCK.--- D##"'&547>32#654'&#"3267*rI3ϛ?|= @AS] N=WcebQ9[%+ 8$nG1+9GBP,.3276#'676#"'#767&'&767632#6'&#"9#YN 3+ZhA N Oqq\//-5AU89 &T;D 'n'/OO8+TTT M#$@B|4) ,#"&7>32.''7.'77.#"267>XZF֠֋0P7N}-)?J ~I R~"=R7H" = (U9 i~ih;i22"'&73367676'&+7327676'&#"#767632{+,`&& ! P O// >B((BB:;1 ACje31 46GD34)#"B#"*43v UN8'' ''9MUT+#654'&#"3##"&'733267#737>32?'.5 k|0Z*@'-6kY Z|1Y+r?GKCae } ?GCIae =#7!3##"&'7326?#73fVh`_"K'@%*+ T UCCEY\ },'4CEC9'!##"&'73326?#"&76767#"3267 VfХ;IC|:8VnB--~TR`a[fT3!#"&7#7!#3267#7TY ?.gFfP=V h I>132#"&#W V'VU&V3V Vz L--3 K-.3CCCCC-==-+=<z#7!3#"'&CS N3 bi&0eMCxH!"6# '!#3!73#Ht U\W VZUCC=CCM87!'!#3!73#t Ht V[V U[VCCCC=CC3 '1>32#"&#&767232#7!#6'&'&#&7>7W K.-3 K-.3-,KGlV 0 >  h K'-=>,+=<*/zlCr#-1,PE1OT##7!32673#"&7gV -)&) @+P"qBEC4',| \Y>3#"&'73326?#73#7!V "K'@&)+ VV CEY\ |,'4CECB 73#7!#373l[l lZL)CBBA*=>32#"&'73326?6&#"3!736&#"3!73#7!>32%6lAhP+ "K'@&)+%/5K:H H8.6K:H U[V .d>JQ:6rsםEY\ |,'4CEm9OJCCm9OJCCCS307*0#"&7#7!#3267#7!#3267#7!#3!#"&/6lAhP=V g H7/5K:H Y H8/5K:H gUV @.d>JQ ;5rs1CCm:PJ!CCm:PJ!CCRB<3/6)#7!>323!736&#"##"&'73326?eV.gFfP=V I>132#32673#"&?6?6&#"3*U[V /fGfPK )&) @+O"q(,0=J5JCCS4/tqEC4',| \Y K9V^C:73#73#73##3 NZN7:Nhj9;CEEE_CE  &7>322767#36'&"֟@$! %f5/ut/6o-45-C`%-!#3!737&'&7676?#676'&t o'EXy_ o o!~DXy]'o#]-8  ]-8 C ARRA CC@RR?) 55/ 55;?332676&/&'&7>32#6&#"#"'32673#"&72@GI>I"9NZ!!6uF@BH=G-Nq%$ )&) @+P"qAE)'#'**G`]<<&$! +*Mc^7C4',| \Y!67632#6&#"#"&'7332767ZJ|0Z*@#'.& YJ"K'@%)!>`33 }**!F&P7. |,'(5{$#73733#;#"&'733276?"#"&7 XW$$ G!"K(@&( |ICCL&sY\ |,'E5KeV[%7#7!3#3!7#"&?#737#7!#3267B%I 3O O(V.fGfP II%V32>>>eY5B[z $7#7!727676'&'73&AU OV900 I],, ''<7ABGCu|=>fX5B#GGN<67(%3!73 3#73EmC INN F=CCqCC 7!#7!! D!1 KZ CdB:A+.7!#7!!332673#"'&?, D!2KZ)&) @+P"};8CdB:uC4',| .,[EG"#767#7!#7!367676'376gN D!2K"/9[K<V &; PP CdB:K2Sk>;'#"&'7332676&+?!#7!{6MԲCI$D HNWpN[%C!1  .Css{NR\VYa{dB=36'&"#276 &7>325# {.&$ *&)*䠟**vIVVIHRRHo7>&$17'D&D@&%1u,&EHuK&%,K&E&%*,&E{;ok&u>oRf&`&'Cu&GuK"'<K"G4&'*&Go&'?o&G &'kH&GkX&('u(=F&H'U&('u;=&H'U&(=FD&H9&(=9FD&H&)u{!&IMu;&*ku)9 &Jm&+u=&K\uK"+ >K"KH&+u=&K\uo&+=o&K=;&+~=;&K9&,89l&Lgk&.u=k&N uK&.:=K&NC&.=&NK"/V'K"OKP"nqD'KJP"oqD&/y&Or&/k4&Okr %k&0uf)f&P%&0pg*N'v-PK%"0TgK*D"P&1"Ug&QvK"1gKD"Ql&1[fD&Q&1kgD&Qk ; &2'\ug=&R'r; &2'\uv=&R'r{k&3u.Vf&S{&31u.VN'vS&5Cuf:N&U`K"5TK;D"U3KP"qvDTK; "q&5*:D&U&6uN&v;VK#f6KD#VK&6'2uKN&V'U&7uXA&WuVK"7|YKBq"WU&7(Aq&W!V&7kBq&WkK&8jsK'&X9&8js9'&X&8cr'&X&8'Xus&X' &8'us&X'Da2o&9u%<V&Y,bK3'z9&K=*'Y]r'|:7i6&ZC]r'|:7i6&Zv]&:jyA7i&ZjD\&:Q|6hN&Z&\P&:6Kh'&Z&;u\N&[,&;u\N&[,\&<|9N&\#y&=u6f&]Ky&=BK6z&]y&=6z&]R=&KX}&Wu6h&Z&9&\#1&DgN&VoK>&$X1K'D&Do>b&$u1'&DQoK>&$'Xu1K'f&D''o> g&$'uJ1s&D''o>&$'u1'&D''o> &$'u`1'l&D''o>&$'u1<&D''bDoK>&$'Xu1K'5&D''K&(y=KFD&Hb&(@u=F&Ho&(u=FV&HUK&('~u=KFf&H'Ub&,u=Y&LK&,R7Km&L;K &2>KD&R/; b&2u=&R;K &2'\u=Kf&R'.rK'8tK'&X`b&8us&X]r&<_|96'C\\K&<3'&\R\i&<|9&\M\o&<u9V&\#<`&<`&<`&<`&<`&<`&<`&<`&o>&o>&~p'u{'uĴ&g'źo>&o>&Ƅ);&h);&);&]);&g)&)&'x'p'{'Ĵh'bm$'źV&V&V&V&V&V&V&V&'x'p '{ 'Ĵh e'hm 'ź'{'|&&RU&^f&Ę~&d&ű&&Ƣ')x'p'{'Ĵh'bm*'źb'{R'|>&>&>&>&>&>&q?&6x~&up'{'Ĵh7'.mq'hź& & & & & & & & x7'{ 'eĴm'ź'2|A&A&A&A&A&A&A&A&"z&L]'p'{'Ĵh\'.m'mź#'{g'9|<`f&<`f);f&)]fVf&Vff&֚pf>f&>ff& fAf&ZAf&oM>&pM&Y{M&YM&KM&koM>&oM>& M&gM&gM&gM&gM&gM&gM&gM&gM& xM&pM & {M &!hM e&"VmM &#M&$M&%AM&N AM&O AM&P AM&Q AM&R AM&S AM&T AM&U "Mz&V]M&W>pM&Xo{M&YzhM\&ZmM&[$M#&\Mg&]<`5&u<` &q}&uHo>P&qDf&Aքo>foM>&rMx'&767632'6)9 /*;>! 1oQB ')>61+8B8Y(Bw/.Vy+))&jxVMf'gbMD'gMf'gVV&MV'gpGf'քNfpf'քNRfM&'1'!H'RB5&u! &qf&ԙIV&&k&!|uP&qDpRf'քNf'@&B'L5& u & q&  V&V&V& & ]k&!u]P&q Dpf'2քNmfx'$+)'xj+)]fCAMf' jAM'' AMf' A'AM' pvf'lքN&fpf'քYfM.&fv&'&76763242aE 45>: /,x./wB(Y8B8+16>)'L!!|50L!!*f!!*fI!!3*I!!3*&BBK3#672bp +ɫhC7`<$>?3=bo ,ȬC7a?>?3bp ,ȬC7`&'&5473x1  aUmHS7N@3*^K#67#67cq ,ɭbp +ɫhC7aC7`<>?3%>?3bn ,Ȭbo ,ȬC7aC7a?>?3%>?3bq +ɫbp ,ȬC7`C7`&'&54?#%&'&54?#J  1J  1C^)3@O7SHmUaC^*3@N7SHmUaZ; 3%%#7rt&&gJ##R##;3%% %%#77rt& Rs&(r&g R&gJ####I#### `467>32#"&'. /.0uBAv-/01..vBBu.-0J235624IJ336633 A AoH` 7>32#"&yFGQ yGFQNppNOppI` %>2"&%>32#"& yQ yQyFGQ yGFQNppNOppONppNOpp` !%>32#"&%>2"&%>32#"&GxGFRxGGQ yQ yQyFGQ yGFQNppNOppONppNOppONppNOppa  ",0<G2 &7>"32676&"32676&'2#"&6!3#2#"&7>"32676q""#"ۚ:I::Kj:K::K)E۬E\#"۬#"uJ::Kdߋev-d a  !-9CGS^2 &7>"32676&%2 &7>"32676&"32676&'2#"&6!3#2#"&7>"32676 "#"#ۙ9J9;K¬""#"ۚ:I::Kj:K::K)E۬E\#"۬#"uJ::Kdddߋev-d-7-[c- 7b-AB&M B0&""6&"s&" 27676'&" '&632%%10 %&1/ DDS᪩S<<==<<<|nnd!737!733#3%.p\q:^yX^yN%!67632#"&'73327676'&#"#9$,023KLjjEE$D @OS43Q((%$9RLMKKPP76om67$ -67632#"'&7>32#&'&#"27676&"*016;;cbEE(-399?D!">f:;2u"#u#"JIJJfe8CD10vw`00wv0@ #!#!s]N6ndHp (7 '&76767&'&7> '6&#"3266&#"3276#b*(eeLM@@hU##466b458458(&AA""B@"#a88[q<==%%/L CDT5;;sCC=K,,_CDTHpD{TDtT DuTDTDTDT@DTDTDT#%)-737#73#7!3#7!#3#3###3!7373'#37#H~HHaM*MH+H-yyyyybyy-Lyyy4#"#7367676767#7332#.#"!!!#3267tIEm D|]aaq@jchu<F 0E`wd5$ w58 w $>Cķw,16wܭus"/;#7367'"76!3 !7326&+ 3 #"'3276#""*sA.0y9X!o>LB[k[_ E@5?06Z%"e6XDk^|yf,2F$RN7PN@!!32673# '&767#7!6767!7!67676'&#"#676323/#2L<:}8r>xx( % 8S_57;K 462"&54&"2765!!>3"##7267#7!b='e_3t3G2v3FnyFxGttvNKwLd54&"#"&54632#"&54324&#"32/O4&4oؚњ\zEA[xFA[wcBds<+@lFWt|uy $I7! 3''+$I %!#WU$b+*w!#3!53!3!53#*T^TT^TTwI!#'.#!!26?3!5 X}OSKq Wj+ AOf S4+)X&GF!!~!3#y  >32#"xGGQyGFyppo@ 3##'%]Z~*Z3qtk %.#"326"&'#"&54632>3"3)nFTjaIDq?S>W}}SO=V o?(o7LJqXUqtq}밸urKLI /32654&#".#"326#"&54632>32#"&P(oFUiaICo)nFTjaIDq>W}}SO=V}{T1KLoYVqr$LJqXUqtE}밸u찷q/r%!3!//r%!3!/t0!!! %a'T!!!BDT76!2#4'&#"#cozc*26*+T+COO=3327653# '&*62*czoc{+=OOC+,)26732#"&'&'&'" #"&546324\XkD8)8 Z $#2nVmF<-? KbPfbN>J?(:,'QQ, 'Q'QQF!!#"/&'&#"5>32326~T[U XEWWZV [EUS: BGJVQ9 DH-F!!#"'&'&'&#"5>32326~T[U  XEWWZV [EVR9BHIVR9 DHF9#"'&'&'&#"5>32326#"'&'&'&#"5>32326ET[U  XEWWZV [EVT[U  XEWWZV [EoUS:BGJVQ9DHVR9BHIVR9DHF !3!!!'7#5!7!ႇ%55}FI !!!!!!~~~rF %!5 5E~-~PPF 55%!!~-~ 3 %! ~~_PQC|F!#EL{h,$%%$JIvvv鮮뭭nn 8ʸ'+6@KV#"&6 3546 +32 &=# &6;5#'54&#"3!3264&#"32654&#!#"3265n[A@[[@nA[\@A[\@A[\@@[[@A[`ʏʭʏ˭GffGHefffGMGeeHGeeHGeeGF!3!E~h{4732#"&'&'&'"XkD8)8 XbP(( #"&54632267XlE8)8 X(}@bPq !!!!%!!Ldo+l  #/;GS_kw+7CO[gs!2#!"543!254#!"+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;22+"=4#"=43+"=4;2+"=4;2"=43!2#3DŽCAAC!B""B!!D D!)!C!!C!r!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!"B!!B""B!!B"f!""! !C!!C!!C!!C!"B!!B""B!!B""B!!B""B""B"!B""B!!B""B! !C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!B""B!!B""B!"B""B"!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!"B""B""B""B""B""B"!~!!~!!!!& !!!C!!C!!D D!H""!!JJJI%%I&%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%% %I%HJ%%J%%J%%J%%J%%J%.? !7!!!!H'H_H(I.bb(3('! !!&$<2.3!32pH_Ip.b(l!! !!!!#!#(!((!(0(!B({(!((!((! (Y(!k((3((t ( #'+/3!33!33!33!33!33!30stststmnmnm(%8K#!1!!!!!!!#!1!!!!!!!#!1!!!!!!!#!1!!!!!!llll޶llll޵kkkkߵkkkk(((((!%)-13#3#3!3!##!#3#3#3#3#3#3#!"޵׶׶m#(i#(w!~(~(&~&(&(&~&(&&(~(&~(&~&'%! '%!!!Ng>9%-d) 327$%&#"%632#"'++Օl``````qq|qqf' '/7?G%&'&'6767&'&'7%'676727"'64'7&"'62&479'5)3,?4C0x2)/-Z5>3@'5)2+@3C03)5'Z,G4?DD#VVcDD#VV c<1& j(0=Ju &,A=N:0('<1& j(0=Ju &1<>EB0(n_II'[[JnII'[[d) %/36%632#"'327&#"6767&'&6e`` :;;:{m('((((';99̙Rqq|qq%%mܱ[0$ %@%|"d) )73276'&#"7632#"'327$%&#"%632#"'Vg4343gg3434՞OOOOOOOOH++Օl``B!!BB!!oe33eje33````qq|qqd $  $eGyFAk^d $  $27$%&#eGyF+ՕAk^a``d $  $"3eGyF+Ak^``d $  $327$eGyFS++Ak^>``d $  $%&#"eGyFYՕAk^>``d $  $"327$!eGyF++Ak^```d $  $"!eGyFVAk^`d$)6%63"'e`Rqqg)#2f|q*q ( 2654&#"!Κ⚚ord}}|v<U( 327$%&#"327$%&#"!(++Օl``````}|qqqqH(U( !#%&#")%632T++qq>~``U 3327$3!#"'$``Ֆ>qq``) %63"`qv`) 2#%&#`iՕ)q>` 527$3+iv`>q "'$33įj+q`d)%632#%&#"e``jՕqq>``d3327$3#"'$ei++j``>qq% % %! %!$+! 2654&#"4632"&J|{{Y[|6qpddcc||}'%!%!!@Z r<'%!%!!X r<'%!%! r<'%!%!N r<'% !%!!!!t&t% r<<% 4632"&! ?N97MMqM`KAj>VV>>VVJ %! &A %! %A d(  7& 6  'hi./*X֖'% !!!!!!tg%ۊ<)) Ie'% !!!!%!!&Ng%M)*<?v^ y <BHNTZ`fl3264'&#"&7367'67675673#''5&'&'7&'677&'67'%7&'&'%6767%&',*<&`7" bK*V&"g{ M M !)1! ! 3254#"&#%#7&'67&'67wv:<F>4,<[-ch`ch_7IL6a] ]pu otpu ot !)1! ! 3254#"3$3&'67&'67wv:<F>:]ch`ch_7IL6a] Uypu otpu ot %! ! #$''&'6%&'6wvcGkvJVVr~w{t~w}7IL0c Z    "*2:AIX3#''%#&'52#"'&5476!!'5%!!'53'5%3'5%3#'32765'&#"FF47H8(S A+[!?27@yf756FF u>p,y9#_>?@7`d@\hPPPPy?+<>w_VG{?,rCA01@7#'#53'&'&54767&'&=33676=3#32654'&$ xwatbww!$$!wRMi"iLRx "iMRurRLV$|ddb e|$% ZSSZ %_TYYT $4&#"326&54327##53&ёϔ1./|䤣L~~|  $"32654&'#533'#"5476ϔ|Ҙ{פ㤤ף |~~L #&$76+"'&5'476%7!iiggi$jg ՕeE~Z5s qttrtt<֤ꧦg\ul91B52654&#"#43233#!5nom覨b͈wyyy{(|#53533#632#4654&#"#``d~~dc}mZyH{zF 4"32654&7#"&54767!!53#5!!3!!#3!!92GG22GF7+Db`E*8쌌O79NN97Os0LllllL1KӘJJ-<%#5#535&'&'5'73'3#'73'676=35'73'33n^F][E_nzTThOʍ7NjYYӖy! #!!!'!27674'&#pZ51;J&u@!IM_\ǃ$P<"Q##"'##56'##"/547? dsU 2`g26;2"##'65##"'&5476;2&'5476&+"326733276=4/#"567654'&#"35&5?^g7%SB\JLZޭ\<."7Y@ؘ aj7{6Gf!KQM 1k`t0%K6F98:d  mOE:R p&i  C]&'Ax.+0 nM,W`cr3#"/4?23*A+ ZP-@3#'654'&'#"54732Nn7S3ڿWP'6?F` 1TFG*֙-@R/"#"=4?2%#"=4?2n0#NI<Ù'PH*~: ۉ8z"C"'4723!#"5472!5bGZOO;Z$}@Ϝ 3363'$6'")2y k?WXc1  3%#'#3%#%,$//c}(,377#'#'547#5773%%F*kknm*&ttrt&<<7CA<<{8AMt#u ! !=?Fvu-1#u >>u-, p'Qp'Q'QQ-83267#5!7632#"&54&#"!!#"&54632FYSf_uJ:::[ #8WXw`tL>6;=,{jT@OMJ&ekfSShWANHC -8=#"&5463232#534567!5!67632#"&54&#"3!!#8WXw`tL>6;P8f_uJ:::K '5&fSShWANHC ^U~jT@OMJ&ALMC'%!%!!N r'%!!!N  &0'"32 54767&'&47676 767264&"Hq* :P;;@Ly$ `F@MH9t!tJ uI2>;AAP8#_0G._)9DJm>327&54762 '&54762~7,NO4;/l~cR>/lH8Y7++ QDD7`[9++!!&5462 &54>22V'aa0Tb. >+"/IXC2aXMB8P(({W#"'&547#3276737#7>3237.#"!7>3237.#"#3#"'&547#32767**H>e(CLvu UH>e'BL_UH>e'BL**H>e(CLvu 1:9&9 [\ys&9 s&9 y1:9&9 [\{/#454'&#"!3!!#"&'733267#7376$32e)._8MC(e?HT $#Wf J(-VRy5 9&syL{0'6$)3!#"3##"&'733267#73(%+9OڪMC(e?HTseyVy5 9&sy{Y#"'&547#3267!!7#!7>3237.#"!7>3237.#"#3#"'&547#32767UH>e(CLE}^.*e*fW% bUH>e'BL**H>e(CLvu 1s&9 RyV-(J Ls&9 y1:9&9 [\{R#"'&547#326737#7>;!7#! !7>3237.#"#3#"'&547#32767ݫUH>e(CLO[t@gUH>e'BL**H>e(CLvu 1s&9 yV\yfOLs&9 y1:9&9 [\{SE4'&'&#"#"&'733267#7376$!2!!32673#"'&547#73/$JMC(e?HT $#:_")& r4:F$:& r99-V 9&syL  yuY- "VZE,\2Ay?q#654'&#"#"&'33267654'&/&'&547676754762!!32673#"'&547#737&'&#"w6:.f+4sbp G|:*Yj4e28uat [}4%zIm3QpWUZ r49G$:& rn7eZ." S-7EB "%5N7V#))b7>KF'"%*L5P"'U2 i]01{FyyuY- "VZE,\2Ayp=f2"k04%32767654'&#"3>32376$7654'&#" o)FG<<(GGx6mck* KJ4}$$ Lf^Jl6*888O6*8p͂I.J,6\\+5/Rn"B|f3#f) 67632"$6762"'/.66.-lR/.l !^l ?x+,,+x++Vx+,,+xV+3#ƔN%7676323276?3#"&/.#"O<=Z7A;%c<;[9+/+% {CB'! ,zAB +#u1!#'#)ݓ{#373ݓP#."#67632Ln Z88o1XY7:6CB327673#"&o Z78o1XY7:6CB(7 6762"' /.l /.l ?x+,,+x+++3#3#lƔXƓ_#!#[v&uLc._<22z  z dR[)}Ka 4hh(Lm=w  T,l83hp;>|&;^hBE;jE[3[VGb]#]AhFh2-b>=)<>>>>g<g>.Ug SY<t/&27J/)fD4+3 L3'' E9'H [HH 8 pppppLrE;||||^^^^KE;E;E;E;E;EGGGG#]sx222222b>====iiSi<g>>>>><t<t<t<t//p2p2p2;b>;b>;b>;b>>K|=|=|=|=|=&;)&;)&;)&;)<><>^i^i^i^b^ih>hB>j>>>><g<g<gB<E;>E;>E;><f?ggg3 3 3 3 [VSY[VSY[VS G<tG<tG<tG<tG<tG<t]27#]/#]AAAP''*bK>P'G|E;<&*^^B ~<E;E:?VbjP38 #bSu[MSK[{G<xh;h#]Amt,,N,  U xW= /fp2^iE;>G<tG<tG<tG<tG<tFp2p1rEr;)&BE;>E;>  U &<L2rEEp1p1|=|=^^=E;=E;=ffG<sG<s3 [VSY<=Ap1|=E;>E;>E;>E;>#]/ kll]gyb[I # <KbbJ9A>FI`) .B,f <<<AJt<<!>jd(r@p bbGSG<8=; o`im.p.;E%Tf6` }5 !Y%pk{=0j* A!u2y}UKK AA({S2W L$kA(||||c|/cHg[T5@V^C{^6MD@ "#u5|gg|{g,d,8r+pN-NNbNN{p|AE;^BpE;j[V#]EDzh^#]<`)<{<`)C8<2{e E9iC+>Eb`OAkqA{>A2\N8A%E]a^bR?. b>E;b>b(s;1;||};3^^h]g BGp'f| |1BgE;j;[VGC ! OL DY2?=<t<tAE><g.b>g/~8JQE=A7b(bQ==b> >i*<<t/EV9E;?%1BB>F( J;b>[Vue#]/TJ XVe'<>^ |BEEp2p2rE|=E;FE;F |1<t<tE;>E;>E;>b(G/G/G/E7MNZ=ZzCJO*3D3J-:8(bM>fh]E,]]Oj|G>|zbDP])2U9(5z((MTO*>;9*f]EC{VkDz+A]=p1,,,;b>>>>>>|=|=|=|=&;)<=<><=<=<=^9B=B=B=''y5fgg<g<g<f<gE;=E;=j.j.fTT3 3 3 [USX[VSY[US([VSG<sG<sG<rG<sG<sa/%b/&]27]27]27\26\26JJ#\/AAA<=SX26/M1 p1p1p1p1p1p1p1p1|=|=|=|=^=^7E;>E;=E;=G<tG<s#]/#\/#\/#\/<<<<<<<<pp p {pp`)`)`)`)`)`)xkpk{hm<<<<<<<<x p { 5h km{{{R{^{~{d{{qxRpW{hm4#>>>>>>{qxp{shmx{(mUAAAAAAAA"] !p ,{hm]<<`)`)<<{{>>AA<<<<<<<<pp p {pp<<<<<<<<x p { 5h kmAAAAAAAA"] !p ,{hm]<<<<<<<ppppr+<<<<<2pNp NH{{{{{{^^#pNB#]#]UpNx++AAAAApbNph33_3pLL33K<$K$<$$Z  3 a a[))'''''@'' ''H'' ''''@''PN<>3hBLt3tt3tt tt3tt3t tt@n3DiDk$k$*k3"@+,4, ,++(3 dlA+2HdHdHfHdHdHdHdHdHdHdHdHddHdHd?dHdHdHdHdFFttyttttkCCtt1ttttt"tt5tt!tt5tetRte{ ,d-d-)m<<@T@}O2|Q)`L 79k:;k<&:$7$9k$:$<$I$W$Y$Z$\$$$$&$'$:$ $ $$%&%&&%*&%2&%<%&%&%&%&%&%&%&%%&%&%&%&%:&&''&''9(&)2))2)))$)D)H)R)U)X)))))))))))))))))))))))))))))))1**&*--a--.k.$.&.2.8.:.<.H.R.X.\.......................................0.1.:/7Y/8/9 /:u/<}/\/////}///&Y/0/:}////1}1}1122K2292;333333$k3D3H3R3k3k3k3k3k33333333333333333333344K457595:5<5D/5\55/5/5/5/5/5/5/5&555&5:5566K6666 6"777777$777D<7F7H7R7Uk7VD7XD7Z7\7mk7}k777777<7<7<7<7<7<7a77777777777a7D7D7D7D777777a7k7k7!D7#D7&71D7k7k7 k7 k8D88D888$8888899k992929$a929DD9HD9L9RD9X}9\9a9a9a9a9a9999999D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9}9}9}9}999D99D91}9&99&9::::u:u:$}:DN:HY:L:RY:U:X:\:}:}:}:}:}:N:N:N:N:N:N:u:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:::::::Y:Y:::1:&::&:;;$;&;2;;;;;;;;;;;;;;;<<2<<<<$}<&<Da<HN<L<RN<XN<}<}<}<}<}<<a<a<a<a<a<a<a<N<N<N<N<N<N<N<N<N<N<N<N<N<N<<<N<N<1N==IIIIIAINRUkUDUKUKUKUKYYY2YKYKYKYKZYZ2ZKZKZKZK[\<\\K\K\K\Km-m7km&k}-}7k}&k79k:<IWYZ\&':  79k:<IWYZ\&':  79k:<IWYZ\&':  79k:<IWYZ\&':  79k:<IWYZ\&':  &&&&&K$9<:}}K9;K9;K9;K9;K9;K9;DD$DD$DD$DD$2$}&DaHNLRNXN}}}}}aaaaaaaNNNNNNNNNNNNNNNN1N&<KKKK<KKKK&9&&7Y89 :u<}\}&Y0:}7Y89 :u<}\}&Y0:}O7Y89 :u<}\}&Y0:} } }  &79:<D/\///////&&:kDKKKK79:<D/\///////&&:kDKKKK  K  6   """K""6" ""&&&&&&$&7&D<&F&H&R&Uk&VD&XD&Z&\&mk&}k&&&&&&<&<&<&<&<&<&a&&&&&&&&&&&a&D&D&D&D&&&&&&a&k&k&!D&#D&&&1D&k&k& k& k0D00D000$00000::2::::$}:&:Da:HN:L:RN:XN:}:}:}:}:}::a:a:a:a:a:a:a:N:N:N:N:N:N:N:N:N:N:N:N:N:N:::N:N:1N??d$dddddd79k:;k<&:$$99:9;9<99:979:;JVbnz ".n *6BNZfr $ D P \ h t !!(!4!@!L!X!d!""" ","8"D"P"\"h"t"""""""""# #F#R#^#j#v###########$$$$*$6$B$N$Z$$$%>%~%%&8&&&''X''((^(()8)t))**N***+D+|+++,,X,,-:--.,.4.../2/b/n/z//000l000101f1122T2d2p222222223333&323>3J3V3b3n3z333333333334 44&424x44444555 5,585D5P5\5h5t5566$6^6777 7,787D7P7\7h7t777777777778888(848@8L8X8d8p8|88899,9V9b9n9z9999999999::<:::;Z;;>>^>>?&?t??@,@@A"AABBnBBC*CpCCD>DpDDDEE`N`X`b`z```aaa2a@aJabaaaaaaaaabbbb&b.b6bLbTb\bdbbbbbbcc&c.c6cVc^cfccddXdddpd|dddddeLe~ef@fxfffg*g`ggh hh8hphhhi2iijDjjjjjjk$kfkkkll^lmm8mpmmmnn&n^nnoBorooppRpppqqBqqqr6rBrNrrrrrrss`ssstttBtJtttttu8uuuuuvvvvFRZfr~ƪҪު&2>JVbnz«Ϋګ ".:FR^jvʬ֬&.6Zbnzʭҭޭ(0Vnƹܹ>LZpƻ .DZ6j¼8TdBn$:DR`n| zFPZhr|ÊÖäòü$0\Č*nŲƐƞƴ $2FThvnjǚǰǾ*@NdrȈȘȲ6j@ʞʼ@nˢLv̶̠>LZfr͖ͬ.DXΌά Lό 4H^lЂАФ2Ғl@ԂԮ*Հմ>bֲ@X6hؘ0N^rپ,Bڔڜpۺ~`Zhޒޠ.Jdzߐ% +@+   pD 0 FFNHHPLLRRQTVVXXXZ]]\^fh      ?x?{?|?w???????????? #@  0T VQQXeeZ\^bhlpQQr   `?x?x?y?y?z?{?{ ?| ?b?c?U?ſ?ǿ??ʿ vyquvjwzzxW RS XXxII0LL2OO4WV6AA:    ` ?????????DF* $&""(  ` ?????? T $&FF6   !"#$%&'()*+,-./0  !$'*- 0369<? BEHKNQTW????????Ŀ??ǿ??ʿ??  ?߀????""(%$+($.+*?--40/?20?55=86@;9?<<F? /~157/~15702023838446969::;_V #'T #3  4  !!O!f ! "":"##b! ! "("L"##u!! ""l"#/#!" "" #A#! ""2""#O#  4  q F N | F " :E & h [   ,!!Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain DejaVu LGC Serif CondensedDejaVu LGC Serif CondensedBold ObliqueBold ObliqueDejaVu Serif Condensed Bold ObliqueDejaVu Serif Condensed Bold ObliqueDejaVu LGC Serif Condensed Bold ObliqueDejaVu LGC Serif Condensed Bold ObliqueVersion 2.10Version 2.10DejaVuLGCSerifCondensed-BoldObliqueDejaVuLGCSerifCondensed-BoldObliqueDejaVu fonts teamDejaVu fonts teamhttp://dejavu.sourceforge.nethttp://dejavu.sourceforge.netFonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. http://dejavu.sourceforge.net/wiki/index.php/Licensehttp://dejavu.sourceforge.net/wiki/index.php/LicenseDejaVu SerifDejaVu SerifCondensed Bold ObliqueCondensed Bold ObliqueAll Typographic FeaturesFonctions typographiquesAlle typografischen MglichkeitenFunzioni TipograficheAlle typografische kenmerkenLigaturesLigaturesLigaturenLegatureLigaturenFractionsFractionsBreukenAll Type FeaturesToutes fonctions typographiquesAlle AuszeichnungsartenTutte le FunzioniAlle typekenmerkenCommon LigaturesLigatures UsuellesNormale LigaturenLegature pi ComuniGemeenschappelijke LigaturenRare LigaturesLigatures RaresSeltene LigaturenLegature RareZeldzame ligaturenDiagonal FractionsFractions en DiagonaleDiagonaler BruchFrazioni DiagonaliDiagonale breukenZ%  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$% sfthyphenAmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandicLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongsuni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191uni0193uni0194uni0195uni0196uni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEUhornuhornuni01B1uni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BBuni01BCuni01BDuni01BEuni01C0uni01C1uni01C2uni01C3uni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DEuni01DFuni01E0uni01E1uni01E2uni01E3uni01E4uni01E5Gcarongcaronuni01E8uni01E9uni01EAuni01EBuni01ECuni01EDuni01EEuni01EFuni01F0uni01F1uni01F2uni01F3uni01F4uni01F5uni01F6uni01F8uni01F9 Aringacute aringacuteAEacuteaeacute Oslashacute oslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217 Scommaaccent scommaaccentuni021Auni021Buni021Euni021Funi0221uni0224uni0225uni0226uni0227uni0228uni0229uni022Auni022Buni022Cuni022Duni022Euni022Funi0230uni0231uni0232uni0233uni0234uni0235uni0236dotlessjuni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240uni0241uni0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni0259uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269uni026Auni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02AEuni02AFuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02BB afii57929 afii64937uni02BEuni02BFuni02C0uni02C1uni02C8uni02C9uni02CCuni02D0uni02D1uni02D2uni02D3uni02D6uni02DEuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9uni02EE gravecomb acutecombuni0302 tildecombuni0304uni0305uni0306uni0307uni0308 hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322 dotbelowcombuni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0358uni0361uni0374uni0375uni037Auni037Etonos dieresistonos Alphatonos anoteleia EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni03D0theta1Upsilon1uni03D3uni03D4phi1omega1uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FAuni03FBuni03FCuni03FDuni03FEuni03FFuni0400 afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061uni040D afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097uni0450 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109uni045D afii10110 afii10193 afii10146 afii10194 afii10147 afii10195uni048Cuni048D afii10050 afii10098uni0492uni0493uni0494uni0495uni0498uni0499uni049Auni049Buni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04BAuni04BBuni04C0uni04C1uni04C2uni04C3uni04C4uni04C7uni04C8uni04CBuni04CCuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8 afii10846uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni1D02uni1D08uni1D09uni1D14uni1D16uni1D17uni1D1Duni1D1Euni1D1Funi1D43uni1D44uni1D45uni1D46uni1D47uni1D48uni1D49uni1D4Auni1D4Buni1D4Cuni1D4Duni1D4Euni1D4Funi1D50uni1D51uni1D52uni1D53uni1D54uni1D55uni1D56uni1D57uni1D58uni1D59uni1D5Auni1D5Buni1D77uni1D7Buni1D85uni1D9Buni1D9Cuni1D9Duni1D9Euni1D9Funi1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5uni1DA6uni1DA7uni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1uni1DB2uni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1E00uni1E01uni1E02uni1E03uni1E04uni1E05uni1E06uni1E07uni1E08uni1E09uni1E0Auni1E0Buni1E0Cuni1E0Duni1E0Euni1E0Funi1E10uni1E11uni1E12uni1E13uni1E14uni1E15uni1E16uni1E17uni1E18uni1E19uni1E1Auni1E1Buni1E1Euni1E1Funi1E20uni1E21uni1E22uni1E23uni1E24uni1E25uni1E26uni1E27uni1E28uni1E29uni1E2Auni1E2Buni1E2Cuni1E2Duni1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Auni1E3Buni1E3Cuni1E3Duni1E3Euni1E3Funi1E40uni1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Auni1E4Buni1E50uni1E51uni1E52uni1E53uni1E54uni1E55uni1E56uni1E57uni1E58uni1E59uni1E5Auni1E5Buni1E5Cuni1E5Duni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E68uni1E69uni1E6Auni1E6Buni1E6Cuni1E6Duni1E6Euni1E6Funi1E70uni1E71uni1E72uni1E73uni1E74uni1E75uni1E76uni1E77uni1E78uni1E79uni1E7Auni1E7Buni1E7Cuni1E7Duni1E7Euni1E7FWgravewgraveWacutewacute Wdieresis wdieresisuni1E86uni1E87uni1E88uni1E89uni1E8Auni1E8Buni1E8Cuni1E8Duni1E8Euni1E8Funi1E90uni1E91uni1E92uni1E93uni1E94uni1E95uni1E96uni1E97uni1E98uni1E99uni1E9Auni1E9Buni1EA0uni1EA1uni1EA2uni1EA3uni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED8uni1ED9uni1EE4uni1EE5uni1EE6uni1EE7Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni200B afii61664afii301afii299afii300uni2010uni2011 figuredash afii00208 underscoredbl quotereverseduni201Funi2023onedotenleadertwodotenleaderuni2031 exclamdbluni203Euni2047uni2048uni2049uni2070uni2074uni2075uni2076uni2077uni2078uni2079uni207Funi2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089uni20A6Eurouni20AFuni20B4uni20B5uni210E afii61352uni2126uni212Auni212Bonethird twothirdsuni2155uni2156uni2157uni2158uni2159uni215A oneeighth threeeighths fiveeighths seveneighthsuni215F arrowleftarrowup arrowright arrowdowngradient proportional orthogonalangle logicaland logicalor intersectionunionuni222Cuni222Duni2242uni2243 equivalencehouse revlogicalnotuni2311uni2318uni2319 integraltp integralbtuni2325uni2328uni237Duni23AEuni23CFuni2423upblockuni2581uni2582uni2583dnblockuni2585uni2586uni2587blockuni2589uni258Auni258Blfblockuni258Duni258Euni258Frtblockltshadeshadedkshadeuni2594uni2595uni2596uni2597uni2598uni2599uni259Auni259Buni259Cuni259Duni259Euni259F filledboxH22073uni25A2uni25A3uni25A4uni25A5uni25A6uni25A7uni25A8uni25A9H18543H18551 filledrectuni25ADuni25AEuni25AFuni25B0uni25B1triagupuni25B3uni25B4uni25B5uni25B6uni25B7uni25B8uni25B9triagrtuni25BBtriagdnuni25BDuni25BEuni25BFuni25C0uni25C1uni25C2uni25C3triaglfuni25C5uni25C6uni25C7uni25C8uni25C9circleuni25CCuni25CDuni25CEH18533uni25D0uni25D1uni25D2uni25D3uni25D4uni25D5uni25D6uni25D7 invbullet invcircleuni25DAuni25DBuni25DCuni25DDuni25DEuni25DFuni25E0uni25E1uni25E2uni25E3uni25E4uni25E5 openbulletuni25E7uni25E8uni25E9uni25EAuni25EBuni25ECuni25EDuni25EEuni25EFuni25F0uni25F1uni25F2uni25F3uni25F4uni25F5uni25F6uni25F7uni25F8uni25F9uni25FAuni25FBuni25FCuni25FDuni25FEuni25FFuni2600uni2638uni2639 smileface invsmilefacesununi263Ffemaleuni2641maleuni2643uni2644uni2645uni2646uni2647spadeuni2661uni2662clubuni2664heartdiamonduni2667uni2669 musicalnotemusicalnotedbluni266Cuni266Duni266Euni266Funi27E0uni29EBuni2A0Cuni2A0Duni2A0Euni2B12uni2B13 afii10064 afii10192cyrBrevecyrbreveuniFB00uniFB03uniFB04uniFB05uniFB06uniFFFD dlLtcaronDieresisAcuteTildeGrave CircumflexCaron uni0311.caseBreve Dotaccent Hungarumlaut Doublegrave@K 2ǻƻĖG}G0}  & @ 7 !7 2.+t+t ]%]@%@ @  dtd  @   2 }t} t2q  @~t~}|}|{z{zy]zzyx%y]y@x%w7vtvkututsrqrqqpo.po.nmlkKj hg g@f!e}d@ckba}`^] ][YXY-XW2V TSTSRQPQ%PPOONMN}MI MM@LL1KK2JI J}I HG H}G FE F2ED E E@D CBCBA@A}@6 @@?=)?>=)>]==)<;<;:;:9 :9 878}76 776 6@5454+ 43 32) 210 0/$)/7.! .-,-,+ ,,@+ *&*) )@('('&''@&%$)%$!$)#!#"! "! ! !  @!*@-:!}22!)k!) !-} -    @      @@d+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++I6       !! #" >> ?? @@ CA ^^ __ `` aa bbcc gdkh qm srutvv zx {{} ok {r    Ȁ    --                     #($+* D/ EE F $micropolis-activity/res/dejavu-lgc/DejaVuLGCSerif-Oblique.ttf0000664000076400007640000053720410724145723024472 0ustar simcitysimcityPGDEFٸ\GPOS!GSUB11$OS/2x+xVcmapE+cvt 31tfeat3@fpgm3Hgasp3 glyf?)3head:?6hhea 4$hmtxnBXkern]Ulocaz2lmaxp EA4 morx_QATname P%Bpost uHAprepuy^prop#| x<ijjkpqqruvvwyzz{}~    vw|}   01<=STUVXYYZ  !!"#$'()*4 ^DFLTcyrl$grek4latnDkernmarkmkmk" $",R^6(BT&pBXv~@@Jdjpz : $ * 4 : @ F L   J |   . x $*d Bd79k:;<&:79:<IWYZ\&':"#&&&*&2&<&&&&&&&&&&&:&9&!$NDuHRNNNNNuuuuuuu&<:a4k$&28:<HRX\}}}01:7Y89 :N<}\}&Y0:}}}K9;*aa$D8DHRVDDDDD!#0K&&79:<D/\///////&&:K6 "+$7&DaFaHaRaVkZaaaaaaaaaaaaaaaaaaaaaa!k#k&& DD$-5D22$u2DDHDLRDX}\uuuuuDDDDDDDDDDDDDDDDD}}}}DD1}KK0kNN$DNHYLRuUX\NNNNNNuYYYYuuuuuuYu1&&$&2,$a&DaHNLRNXNaaaaaaaaaaa<NNNNNNNNNNNNNNN)1N&    79:<IWYZ\&':"#79:<IWYZ\&':"#79:<IWYZ\&':"#79:<IWYZ\&':"#79:<IWYZ\&':"#&&&&& K$9<:}}K9;K9;K9;K9;K9;K9; DD$- DD$- DD$- DD$-,$a&DaHNLRNXNaaaaaaaaaaa<NNNNNNNNNNNNNNN)1N&&9&&<:7Y89 :N<}\}&Y0:}7Y89 :N<}\}&Y0:}O7Y89 :N<2\2&Y0:2}}&79:<D/\///////&&:79:<D/\///////&&:K6 "K6 "+$7&DaFaHaRaVkZaaaaaaaaaaaaaaaaaaaaaa!k#k&& DD$-DnFUGaHVIJaLMP}Q}RUSTaU}VWXYZ[\]7,$a&DaHNLRNXNaaaaaaaaaaa<NNNNNNNNNNNNNNN)1N$-/79k:;<&:$-/$-/99:9;9<99:9 79:;9<YZ&:^$%&'()*-./123456789:;<=INRUYZ[\  "&07:?f.  &,28>DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~nrxw'h!rlO6nfZDDmDDCDDDXDDDzDDDDDD}D< IDDwD{DnDhDrCNjDIzD0.DT}DwDrDDnDRDDDDDDDDDDD'nwt/DDDDD2DxD>DR0$%&'()*+,-./0123456789:;<=DEFGHIJKLMNOPQRSTUVWXYZ[\] GHIKOQTU^_`himtuvw   ?ILNOQSW\cdhinqw|*4$ "(.4:@FLRX^dDDDDDDDDDDDDDDDDDD8|_r_rD^rDDIDIDIDIDIDIDbDbDbDIDIDJ>f  (k_kKkk*4$ "(.4:@FLRX^dDDDDDDDDDDDDDDDDDD8|_r_rD^rDDIDIDIDIDIDIDbDbDbDIDID. D &,28>DJPV\bhntz QUUZRfI-QG7F  (RR Rn6RBR}R|R7 ZZQ $=D]4679:<=?qq@AC  rx~CCZZUFIZ96T<DC;DC;;:-W?TBT; 4:@FLRX^djpv|fn<n<n<n<n<n<fffffn<nNn<**,,.2*4~ &,2   * * * * * * ,     * * D* pppppppp nDFLTcyrl*grekFlatnT SRB ccmp,dlig2dlig8frac>ligaDligaJloclP $,4<DLT8hv000&LM P$=IIKKLMOO      ""$$&&((**,,..0022446688:;==??AAGGQQSSUU jlm| ^h "(.4:@FL|{zyxwzvqjYUSSTS S,F`r   QHLRX\gD *  ""> *4%IO$IL!I'W&WIVAJ 4 "*2:BJRZbjr9H97H73H31H1H~H~ "4H42H2&.6:H:5H5H6H6 ";H;8H8<H< LM -+.,12*3/4 33f Pq PfEd m`~!BE?Xauz~_cs [w{-KcEMWY[]}  & 1 : < > I p y !!!"!&!+!_!""""""" "-"C"H"a"e## ###!#%#*#}##$#&&<&G&g&o')*+ !$EPXatz~brCw{0Ph HPY[]_  0 9 < > G p t  !!!"!&!*!S!""""""""'"B"H"`"d##### #%#(#}##$#%&8&?&`&i')* +qiWSPKJIHG97) ~><:62.& {yu @=6530.([VRLFCAL.$XNL !+  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}byqz sLjq{)j/s3fbwPP;f=fRBsJ}s jjb\jjjj jj)R`fX{Hjj``'''Djb{sj\)'\jj=fHf JJ }T{3`}TjNNs04 <, %Id@QX Y!-,%Id@QX Y!-,  P y PXY%%# P y PXY%-,KPX EDY!-,%E`D-,KSX%%EDY!!-,ED-ff!%!!fsr) >32#"!#7[97? ]791{10pNN87N#!#h++!! !3!!!!#!#!5!!5!T76&'3.76$73#6&'#.Es_liUi6l}_ښ4d4dQ3m ptX 4d4`D n_VxiXPj!H@  1)t 3#  &76OXDVU:C#WCBDI杠$%岘,<$%%$(#Zۻ ۻۼP E%326!'# '&547>7&'&5476$32#654'&#">?!#31fzE]fomz}] ů'  Cl2q/5ngWUs%*feNf+'qTpGXVb4;e== """ Y28qZ((:sPikk`h#h+D &%ޜEETDD;mcdmbjj 76'7%DD<ߜEEbj\]jbm''!L %#'-73%yL LyL\ \նv}vw} !!#!5!1Ϡ1Ϣ11(>?3(l|)E%ZJjs!!is >32#"[97? ]790pNN87N\BV3#mh $  "32o2BBWBBGGaGGFPSTPMnohh 37!7%3!jÃzj#>32!73!7>76&#"Op4vh&*>o$uD=|q 9< mĖ)>32!"&'332676&+732676& #L~^!͢"(ud8p"_2u%p,. ׫23"f~ !73!73!!3hSX9tS9j%m k-!>32!"&'332676&#"# TS;V-.gg8q&%ZBVդT$$23"@Cd #$ 6&#">32#"!2#6&#"Ko%'HRl-,DL%OU0qnnFȽKJy^ej #!#!/N$uDo1\< ,6&  66&#"326#"&7>7.76$ x|} m|{m{|((氒#!#v͟ҟϴD##"7632!"&'7332" 676&Qm-,MDLjOU0pmmuKn%'oKJ xRel%"|ɽ"y>2">32#"\p>[rA\89=Z980pNNpMpMLrL>y>?3>2"k})\p= \pE%ZpMN78M^ 5Ѧf!!!!^55//y: !>32#">32#>76&#"#\97? ^79tT#%2{@t~r-a0pNN87N/.ֶ3H+ʜ{t?L%#"&$3273>76&'&$#"3267#"$'&7676$3276&#"326K]N ]+%3PZ^0 -KVo'~ܣehF%$řt@Y9!4~MpsyfzrRPPR%oT&']gw}LLF]]{GF~b|i}b_!7333!73!3r$U"=jkjjHjm$%!2676&#!732676&+73#7!2!}+!!j$ +jj~}jkä_#"&'&7!2#.#"3267`kNZ6#DIzBq@@Odap\@A%3 !#73#7! !}#xyܺjRcEDjLlHjkvt#73#7!#7!!73#7!!73 @{(Ra${`{$y({@jk #73#7!#7!!73#7!3 @{(>a${`{$}jk ~j^6&# 3267!7!# !2ZA@qhKmDEYD88kMM_b;<#73#7!#!#7!#3!73!3 GddG|}jkkkkjj~jJ %3!73#7!#}GjjjkkV733267#7!##"&-rEXw{+q0Gca9kk"]#73#7!##7!# 3!3 GnAvjkk5kk3jj #73#7!#!73 G0{Hjkk[#73#7! !#3!73#3 =5jk'kjj~j:#73#7!#7!##3* y9jkf/kkyj^2 %2#""&'&76$3 <@@@@NZ6FuE=D#uNQJKQkdapjpbcVobcc!2676&#!73#7!2#!3}j&%kjkj{O0 '&547676$3 ;# '&'2654'&#"q#uEo:)m$unl2<@6\@6\ӓ\ipbcՕ\im:C@RRQJmcmd#3!.+3!73#7!2%!26&#!BT(`bs%';u[REjۊQjjkп&,; )732676&/.76$32#6&#"!"&;Bs[ʉ!%7h=q d*{HTlt7;A©-+ž{kz<7=2`373!#!#7!3I-{D.D{-Ij` j#7!# 6#7!# H88BBjkkkkShw#7!###7!ެ jzkkjkk!###7!#3#7!#jz!a?lBjkk9\kkz 3!73 #7!##7!# 3!73+(ˠPNjjskkkk?jje373#7!# #7!#3iÌ+mjkk\kk,j #7!#!!735+{CbL(z@HZH3!!!!a/jjB#Dʠm! !7!!7 /:jNj # #}-m!5mPPod#4udxD=E%%3!7#"'&'&77676"32676 DTUoY8D*SW(#7!>32#"&'#3267654'&#"qiI{^>1{"  6+2%jmd_fKU_dO?[n#?QY>kDM4ceB|V$##654'&#"!!#72767#73767632a"Ogj)#ܳ i35ư#nnC>.'qkb8<kZ[H9E 1#"&'733276?#"'&'&77676&#"326?.iQ,`t}]]&IuY8ElÓ61%'s}&&h`\Zŏd_wKh=Ha"Q=>*Sibl3#7!>323!654'&#"chHl?'ox!z"sjVlne=fCUjjgE=!Hg)>32"'&543!#7!C P/. O^ hq.D" /B! jk9['>32#"'&54#7!#"&'733267vQ/. M0/%f H|8+_"R[nq.D" /B! Wkq!!>!-{Te 3!##7!#7!'ޫOi+jhj kkT<%3!#7!!ijjj D/>323!654'&#"#654'&#"##7!>32aLn>%o"o{#s#o{#sh$Gd|Xuwh>eBSjN8>$EK6>#Dijp{D3#7!>323!654'&#"h$Hl@&ox"y#sklne=fCUjjgE=#HVzD!%267654'& "'&5476 ,5,5oM1UoL1FhQ`?uhPa@uckEN2jENXVD(3267654'&#"'#7!>32#"&'# 6+3i I{]>1{"tHiO?[*S8D#654'&#"##7!>3284jK"sh$Kz-`)4'iokD;?33267654'&/&'&547>32#654'&#"#"&0j,;|'}1"T[-j-8ut%5%g;N-;]Y/ +1-,B/A,*I-:RR-)*-/G2F ,p;q#733!!32673#"'&547@@ZFHS$5 kJk]O. &U_G+P3A'33!7#"'&547#7!3267߸$Hk@'n_x!z"'Cjjoef'3##7!33!}}}4kb 7j9'"#7!1#"&'73327#7!677yb[/_0(^Ay'~ykG;,"kc7 lA['273327#.#"#7&'&/&#"763/li<) ""1^DOFli< ""1^DOXV  9yXV 9y$#"&76&+73267>;#"3t>+2U==2+>Dg8~~H8EititݓhXឈ"X#H"$3267>7.76&+732;#"+]Ff8||I8EF?+2U>>2+?W"Whtitݔ'#"/&'&#"5>32326d]` _\Yd^` a\'XTB 9IMWQB:J >32#"73[97? ]791{1\5pMN78N5L"%#&7673#6&'>7τ*)T~ Aݜ5d5.094d4ZI5jZa\*,+ .'{ i l#6&#"!!!73!73#736$32i ^` 9dp,tD%s9(UF_ekjRk'h\#.7'#"&''7.5467'7>324&#"26^+))-`8wE@}=_))*,_8xEBzQrp^z@Fw9^,*(ppr]$373!7!7'!7!#7!##7!#!!!!3Hl 7)ȧ^mHjoiAikk\kkizTij##  = A>76&#6&#"#"&'732676'&'.7>7.7>32MG DBM qI'\ XXd `zE0ZH)\\kh asH7N.S5&`9KHSaSamc_~,/~[PQbTq zc^1~O7!2#"'&7676!2#"'&76760 '(32 *)/ '(23 *)!#"03!!!!30"##"03!!!!30"#,D#"&54632#.#"3267  $&546%"3267>54&'.`PWTriwyxvaq0llll^]__]^⃄^]]^\^=%'mf_cnnn^^]僂^^__^]⃅]^^Gt597#"'&54767676327337654'&#"327676!!e"<@BI!^3- !jk( 5"~~!<aCD A[EEFM,+C:^.6wv ;TvXvV =$)RS3)@&0LL|h# 77~|t|#ssRssR^!#!^Jjs!!is$<N32654&+3#'.+3!53#5!2"3267>54&'.$  $&546}SSTR}*;tL#>1\TSS`׃^]__]^⃄^]]^\^0llllLKJL3(DF/DDCpmS[j^^]僂^^__^]⃅]^^gnnnpb!!Vu= "3264&'2#"&546LhgMLhjJ@v+..fiMLfgk1.-rB !!#!5!!!1Ϡ1yy#7>32!73!7%>76&#"FHEJ&Neb NTNl "hzlKMzBUcL*>32#"&'732676&+732676&#"#N;}ctbƣH>!E S\^wSe5aq CLRdFlcHdwdrzJMXR]_JJJCH@A!f3#Zbuf[V'33!7#"&'##7!3267%IZ9W [ ^y"y#'Ahjo$$+fkfD>"H;8!####.76$vk3k$%1k/NݸBL >32#"& \97? ]79>8MN78MLu!#"&'732676&'h4) p*V,%L#9L !@p1QY 5-X<^V 737%33_{ fTzj^T) 26&#""&7> !!j=MihM[#"^EP-8LװbhgP# 7%7ldk#^R^sXXs^R^sXX^' d&{H5^&{'H5t d' d&uH58 !#"&7>32#"&76$?332673\87? ^79tU#% 2{@u~q-`pNN87NP/.ֶ3+ʜ{b_k&$-ub_k&$+,ub_k&$.ub_^&$,ub_\&$*u;7m '6&#"32!73.7>23!73!3H?@h F@?"UA3gO=~YWA?XZj%zSrrP#jjHjK#!#73!3!73#7!#7!!73#7!!73d@ؤXG@{(Pa${`{$y({@MjHjjk _u&&zzk&(-4uk&(+4uk&(.4u\&(*4uJk&,-uk&,+uk&,.u\&,*u %3 !#!!73#73#7! !#yyܼiPxiRcEDjLlH}1je}kvt:^&1,u^2k&2-u^2k&2+u^2k&2.u^2^&2,u^2\&2*uD  ' 7 1s33r4rP13p4pq3 +.#"32>'7!"&''7&7!270|@#.}<@B$CTAB"CCPBXVwQ`YYQJuRlSVVEiZUSGk&8-uk&8+uk&8.u\&8*uek&<+u#!2676&#!73#7!#!2#!3}p*9&%+jkkj36&#"!736$32#"#"&'7332676&/.7>rw" շ '@OVUH-mZfo9gK\@wZj8l]4M/7cr%#eiyhTuI6ARzD=d&DC9DZf&Dv9D=f&Dm9Dq7&D{9D=!&Dj9D=&Dy94*D5@I%#"&76$3!76&#"#7>32763 327673 '&/7#"326654#"$Re}Ŵ! vt#_*hVXj";t9f(hdo M+퉝otspㆺ9?[XIxcc)),?Dce&"^>n#?QY>vzoB|VuUD&FzVad&HC^Vf&Hv^Vaf&Hm^Va!&Hj^6d&CHif&vH"f&mHD!&jH(-.#"32676&#"7632.''%.'7%U+P(,(p)o*1/.S#I3 4'?2[#rO_ pاy/"5k7N:QV^DN7&Q{WVzd&RChVf&RvhVzf&RmhV7&R{hVz!&Rjhy 4632#"&4632#"!!M87NN79LM87NN798MN78MLpNN87NH +.#"3267>'7#"&''7.76327eJ,cJ,01^8?.1U^6?o99Hv1g=;Ly3Jv56?Ms232?d&XCHf&XvHf&XmH!&XjH9f&\vD+V(3267654'&#"#7!>32#"&'# 6+35iI{^>1{#sHiO?[323!654'&#"ch+<AHl?'ox!z"szvjzlne=fCUjjgE=!H^',u,m77'{2'q<,n'qm'1u,@H'w5wp&,&z>7wO&L&zJ^&,2u'%3!#7!_hjjkV'-4,g9'MHLVk'.u-9f'mS]'Z.TSe'N$!##7!#7! 3!=ie+(ޫkkkjm'+w/Tl'+LvOS'/TS<'UO')n/T')=O'yC/Ta'y}O#73'%#7!#%!73^4Fd_4Rv0{Hjq\kk\%3!'7#7!7),}fx+jj`VjbV:l'+v16&vBQ6:'1SD'Q:u&1/f&Qn^O('Qg9:&#73#7!#7!##"'&'73367673* 0Oat?>7*_!}@80(;jkf/kkyPc!>"-?9j9D,654'&#"##7!>32#"&'733276?"y#sh%HlB& H}8+_"R[77hgE=#Hklne;gCV!!>!-><^22'q<2Vz&qhR^2m'1u2VzH&whR^Lk'3u2V-f'|Rd!%# !! )#7!!73#7!!73<=#3ED@{(Ra$y`y$y({jjb_ VD=%26& 654#"$327673 '&'#"'&5476 6763 XiXjpㆺ9?";t9f(hdo oM1Uo F82B|y&"^>n#?QY>kEN2cel'+Jv5c6&vBUS'h5S8D'Uk&5/$uVf&Un4; l'+Jv6c6&vBV; k'.u6f&mV;u &6zuD&Vzb; k&6/u0f&Vn`u&z7Mu;q'zLW`k&7/upM&W)`373!7!!#!#7!!!3p pI-{D.D{-Ip pj=w@`wjB:q&#733!!3#327673#"'&547#73@@Z-:FH)*$4! :kJkO. &*+_G+P3A,^',u87&{HX2'q<8&qxXm'1u8H&wHXi&8yc&XyQk'3u8f&|rXg'z8w''zXr&:.P|sf'mfZer&<.|9f&m3\e\&<*ul'+Jv=c6&vB]p&=2A&x/]k&=/uAf&]n$'#654'&#"#"&'733267#737>32a"Ogj#ܳC>(a"Ogj#ܳC>.'q=.'qkum(2"#6763!2)73327676'&+!2676'&#!UY$Cuvb#ba$__NO +N^YWC_+! CCjY[XL$]\OOabj??+>ONJ+327676'&#"#7!67632#"'&'!73#7m&75^_++32\^% 4ihI^\{ļb{JK" edqqppeed/0 /0dj@j/%!2676&#! 3 )73#}+!!{|nK+NjVvjv 32676&#">32#"&'!73#7m&l++e%I{ļb{" Ʊʿmd_ _dj~6$32!"$'332#"kaNZ6#DzBq8@@OHdapU@AXSIHST^6#"&'&'&776!267632#6'&#"#&'&#"32767UjNZ#DIz^e]VrH?>7*_)!R[n-q]_@@[Z{{Olkdap\ (W:<!`--zYYPOA.1#"'&7763267632#6'&#"#6'&#"3267Hoo12e_//-`F|H>?7*_("R[86-k::cbZ55w3? H5!`--==@@st4tt|}u"#6763! )7; 76!#UY$CawED˺#yܺjY[Xg tjlH( %!"3#3! &7676!3!#^յba!!N+y|cS({@jNMkkjސvLS+76'&#"3276!#3!7#"'&32!#%56^^++23^\ J\]{^^b4{KI#hiieeppqqdejjd0/60/d^D&2%#"'&'?27676'&#"'&7632" 76&.=oo6eej'p??OS ?bonboobLcbX45(cbXj18DCY.-14B_ KCuu8uttu)3!!#3!!#!#3>@{(y${`{$aR({@LqLk_2!*"#6763 #"'&'&'&?!'&!3276ղ|{OkE=D#SRvvuNZ#6^\m#9^\OPklVpb2122apG1ܜO)#6& ;#"32673# &7>7.76$323p |2_"&p8xu("!^~f32ѫ .V"'7332767#7!#7!!73#7!c-r&w>?)A{)>b%{a{%=hVDKM9k =c7$+#654'&#"!!#"&'733267#737>32a"Ogj)׽#ܳC>(a"Ogj#ܳC>.'qk1.'qkS^0"#7'&# 327!7!! '&76!267632#6'&};-qLjBg7NeKlDEY'IK}o*_hv6P DnpkӚ_bTM9_UefjUM"4%!"z"_j@jVl77eg<<kgf.;@o`bJC#$eS GHjJ;#"'&7#7!# [  4a&ɾG_<=c6e kkJ%3!73!7!#7!#!!}f! rGr !jjj Lkk!632#6'&'" 3!3!73#7!#|C>D3+_)7*_)!R[76kkjjjjK_^!`--=;<73#7!3#3!73iFFjpj&jjjfV'&'&#"#76763273!733!73''%z5)æ Eo|RS"Eo|RS"$Gd|uwggjj+]^jj$]^jjijp{Va733267#7!#7!###"'&-r&"Xw{+ y90EGc019kf/kky]VD 373#7!676323!736'&#"3h%H\]l~)¤&""yUU#^jRkl77kkIH^]j^2'"&'&76$3 '276!'&#"NZ6FuE=D#SRvB#0U\s*R\CdapjpbcVpb21k$ܜY8'2SzD'R{+7"&'&76$32676323!736&#"'2#"ΘNZ6FůA@MGܛ0+AwX5 D#RSv;@AA@dapjpbcT(kkږ0pb21kQJKQ}VD'676323!736&#"#"3226& .EH ɰ?[A occUYjYk  kk{ 328uc#!2#!3!73"#676!27676&#!mm&%kUY$Cpv]^}qrjjY[XI'#PQV8327676'&#"67632#6'&#"67632#"'&'3!73%66^_*+32]]w stCC>8+_("R[86+J]\{ļa{JJ#^HiedqqppeeT\]!`-->76'&#"#67632327673P{*iiԔFFfg/q=h%!jkDCPOnm&sH3ٟ_^=7+ҾaaA;7::lGFRQ>D1%#"'&7676?67676'&#"#7>32327673VjgcbPP55 43tuj-kTJJ88 88|SQj;,,WVoFG/-*)(CR))tg*,fBB,-1++FY/.;;w9[ 0"!276'&6?3327673#"'&7&"# 76!2d7'"+ d-%,[R43_+DDFHOa12+wT5k{_H>~=_@@VmQ>.,`"]s]=d9q'#733!!32673#"&'733276?#"&7@@Z&FHRE H}8+_ DR[763>h!kJk]LU_!!`Z>7*_)!R[77'k]L*+_CCGFk_^!`--=;V#"&7!#!#7!327673]PLNGܛ1I-{E.E{-I* yX65r"5`NK10c`'8A''Xd.!#! 766'7!#7! '&'&'&7676u;P$|z-6hh6-{$N;u*SSuuvQ[! )L-F骩6FӉW֗g[`0/\gհ%!'&7#7!#766'&'7313>b&ɾGԴ60A>lHU*SUtp Ae kk}B/ rSٗd[0'e%3!73#7!# 632#6'&#"iÌ+ꗈCC?7*_ !"R~Ajjjkk\k!`--Hl9O>%#"&'73326?#7!#62#6'&#"Jo/`/(^-<7O7hy](r+_ !#RX|[D;=\kk%.`--!!73!7#7!!#!!F4L(z@!r +{CH,<ZHA'73!#!3#!73!7s$j8fyB&k:fkj#VijVz|#2#"&7#3 7676'&/7!37!'HG&"kmp?ckiu.%MONC{+WTefŬcd9|}xy}`f##"32673# '&7676?7!#7!no&"EE)p?yuuutu.%}}PiC{+TefŬcd9|}xy}`f#6'#"32673# '&7676?7!#7!no&"EF)p?yuuutt-%}}Pf9j$efŬcd9|}xyVݸQf&#676323!!73!767!7!67676'&#"Op4vsrh&!o$uD=)$&![X=?[jq 9‡0m"!~UUGGB !"&'332676&#!#7!#7!32x&)ud8p"z=A{)cUH23"tk6t'$!"'&'3327676'&#!#7!#7!;NN)-tjkc?plk"&GHh4iQ yx}|9DdcfeiawBq%33##"'&'73327676'&+#73@!pCP-+tsH?>7*_ #!R[76%&[t3qjM^]]"`,.><<>jK #ޢ"+K&!7!3!!!!#!7! s]]s (s ]] sS Ѣ K%#7# 圜9c k&'?j f&'@j( `f&G@V&/-P9&/MPT9&OMV &1-9 [&1M9&QM'b_k&$/uD?f&Dnk&,/u^f&n<^2k&2/uVf&Rnck&8/uf&XnJ'2&q<'+&t'/$&t'-&!tYeDb_'Df2&q04{"!hHkM>[*SKl'+v4*k'l'+nvf'b_k'4u$C<f'Db_'uu$C<H'Dk'4u(U`f'H'~u(U`H'Hfk'4su,d&'.u,a&]1k'4u2Uyf'R]1'u2UyH'Rk'4u57f'U'su57H'Uk'4bu8f'X'u8H'X;4 &64D&V`4&7p4;q&Wk'/u+ak'/vK4j 9 76!"76&#"3262; !"'&'#767#"32#7!T ]'"%l++e 1+T5 + d \{Ľa5{#kf3k{_H>i]=G=_@@B6 /76_d)j#7!#!!3'6767+{Cb)Al>)HZHZPE^=Oph'37!#!!3'6767C#j8f)Al>-Vf#VZPE]EYb_'uu$C<!'Du'%(Uu`D'H]1'`V2&q<]1'`V2&q<^2\&22HsVz &Rxh]1''u2V2&q<e2'q<<9&q<\% %376'632!"'#767'&7#7!2p|.']r'M.i^m|iG UeOj%YD4%3766&#"3!73#7!>32632!"'#767'&7t2p&Dy#^h%Hl)#.&]r(M.^m|@ÑjjRkln֐WG UeO%q&%376 632!"'#767'&7#733!2o)S.']r'N.S@@Z^m|XiG UeOkJk9F'#7!#"&'733267yf H|8+_ DR[okq!!`Z{(+ 776&#"326732676&#"7#"32#7!>32#"&'D%k++e&l++f% J{Ľb4{#kiI{ļb{" iʿd_76_d)jmd_ _d|VD 0=6&#"326773>32#"&';#!73#"3232676&#"%l++e%] I{Ļa{"__J{Ľa5{#{%l++fHkk;d_ _dkkd_76_dibT"#73733!73!3!'7#;!dCNBԥ=*?6!BdHN1j=.hGjjHj99V:$.'%&'&7!27#4'32673#"&/7&'&#" A+#CIzckB;q* ZOkNh^@(9EO[\ *GJ;daqY *'7&7327#6'32673#"'7&'&#" ?L*2Ue_74?q2k5w3Honb:-^?ɐ1 {?n9-t|}|N@v#73!7!#7!#!!!73 f! rGr !b0{Hj LkkW373#'7!#7!3 {1:^(D{-I\IX8UjyRG9lBEf=j^J@9D?32673#"'&/&'&'7332676&/.7>32#6&#"#"'T*O+E^'5f=7Q+0jv|O|aT[-jrut Jj74!];D(;23!732]^>>U,3`*EH1mm%&igQPQP&,`" rqrMjjb_D ,32676&#"#7!>32#!32673#"'&+퉝otsUSm\Kk =DfOD$27676'"'&/#767&'&767676'&f=/kDn]^10IA=8rd f4 #2w6so]-*27t$oV7$C;%oi4;^2Kyuz8Q{eq{ '867632#"'&'!73767632#6'&#"327676'&#"I^\{ļb{JK" - tsH?>7*_ "!R[77&75^_++32\^%Ed/0 /0djc]^!`--=;*edqqppee.-D6$32#"'&'33276'&#"Hoo12e_`[4k;9cbZ64w3課0@@sttt|}i%gD.%766! !"'#767&'&77632#6'&#"g1 ۴ 2*^r(o21e`_\5k9;bc,\m}G UeO 0@@stQ9f'8327673#"'&?#"'&32#7!76'&#"3276 [R42_+DEDHPO -I]]{_]a4{KJ"lf%66^_+*32]]h<>--`!]^&d0/60/d)jieeppqqde(%667632#6'&#"3!7#"'&3276'&#"3276< tsH?>7*_ "!R[77ְ J\]{_^b4{KH-%56^_++32^\4]^!`--=;jd0/60/ieeppqqdeOfD!7632#"'&'33276?%!6&#"b<11fe AAygf*@m[[XX}?@nmj_^YeD!!76'&#"#67632#"'&73267j*;,m?>XX!%=;>+eU^_\;.2067632#6&#"!3#"32673#"'&76767&'&oo6eej+l~^!%]\YV+Gtl-qpkPljxR}O/Y*DCYZi>A\]%!-.YCDC#6NOP$f55R2Ot<>i2D"'767632%3327#&'&7'"'&'73327676'&+73 76M^QQl+vkk6UOr 69Rj5<5%:WsLD =Ur=XOfib-l tg?>B\]%!-.YC?u=;>-N& \Q#6NOP$fjR2Ot<>iZD9"327676'&+7327676'&$%67632#"'&/ [+N62 Z$>lDC<=&&QP/0B<x@jRJ\[XZ?=(l6 %{ 33`i54d54j_34KS4MMfGHGGg9'#7!3##"&'733267#73yf`n H|8+_ DR[onkjȤ!!`Z{8j9 :!"3267#"&'73326?#"763!767632#6'&#"I'*e%C,iQ,`t}&I{ļ0+5X stH>?8+_ ""R[85Htp|}&&h`ďd_76]^!`--=<H9w''!##"&'73326?#"76!"3267,iQ,`t}&I{ļ0+5J'*e%'k[&&h`ďd_76!tVW;(76'&#"32767#7!#"'&776325Fxrp//E<=M9 6SNhqqzqp12Ta[d5!Z/@ywtdMn8+8+ #7!##7!#! '&327PR #$5kk?kkc}ԐȵƊjB%62#76"'&'&#767632760i 0D}[c1*f`vm 'rRBs9K0jlXlBNlhQV'3#"'&7#7!3267#7!3!'KcH\\k@?)o_y%"!z#^Xj87ed9kHHkjl/676323!736'&#"3!73767632#6'&#"HZ]l*od&!"z"_- tsH?>7*_ "!R[76jl77jjGHjjc]^!`--=99s?67632#"'&'733276?6'&#"3!73767632#6'&#"H[\l*j- tsH?>8+_ #!R[77-_&!"z#^- tsH?>8+_ #!R[76.jl77^]!`--><GHjjc]^!`--=;=%3!73#73#7!3#2676'&#"4FKh`7 ^O ./((jjjfjkj/!!B/.""""' #7!3"'&wh [PL_]k8<=c^Y' %3!73#7!#_jjjRkg(%3!73&'&#"#67632#7!32673#"'h|* `AA[oi+@`AA[jjj~('LJI;jPKJI0J%3!73$7672#7!3#'6G%+W0wiH<jjjj8dj ccrib9#7!327673#"'&7i [R42_+DEDHPO j<>--`!]^ 6j-#7!#3!73#7!!!"'&'3327676'&_$fi`b1NOM%-tjkc?plk"&GGffjj@jVyx}|9DdcfeD0%#"'&7#7!32767#7!32767#7!3!7#"'&GL]_n>>)o^ Eo{RS#_X#"o{SR#_X$Gd|GGu;=VBD23!73#"'&'#"'&7#7!32767#7!32767#7!/iHd|GGL]_n>=(o^Eo{RS"_X##o{SR"_Xkkjp>=qu;3267632g stH>?8+_ ""R[86 Eo{RS#^l##o{SR#^h%Hd|GGL^^n>>)Kh^]!`--><]]jj,CD]]jjTijp>=qu;8+_ #!R[77ΰh%H][l*nc&""yUU#Ch^]!`--><$kl77jjIH^]9D.6'&#"3!73#7!67632327673#"'&7&""yUU#^h%H\\lB?* [R42_+DEDHPO jIH^]jjRkl77ec<>--`!]^Y'#73#7!#7!##3? jRkkk'K^Z#3$K`_z-1/ ON^[jjio659'+!7#"'&'332767#7!#32673#"'&70%L_`z-0043j ?KZ["_3- \Re^+DDEHNLo65  ON^^jj<>Z`!]ZXbD#6&#"3!73#7!67632a4j ?K[["h%L__z-01)ON^^rjjio569eD+#6&#"327673#"'&?#7!67632d4j ?K[["BG [R42_+DEDHPO ]]h%L__z-01)ON^^<>--`!]^hio56=%3!73767632#6'&#"]f stH>?8+_ ""R[86jjj j^]!`-->--`!]^jjjU'(3!.+3!73#7!2%327>'&+/UeDEzL!^GFJI?m<=**k IgRb:yggYgJJf??.3323')#!73#7!#32767!#327>'&#w12bcLzE.-D2!*oFk><)(m??fJJgYggybRgI K32339DB327673#"'&?373332676&/.7>32#6&#"#"'[R33_+DDEHOP -#j;;|O|aT[-jrut Jjg]d<>--`!]^w;8]YFV1-,f,*gtRRCQ*-/o9^'#"'&'733276767632#6'&#"3sH>>8+_ ""RY9K"sH?=8+_ "!R[7K#ht]!`-->Pnr]"`,.>Qmi9+.3##"&'733267#73+7;7>32#6&#"Kn H}8+_ DR[onK#ܳC='a DOg55~jȤ!!`Z{8jkKN8;9X>%6'&#"#767632327673#"'&m%+[R34_+DEEHNj9&- YR34_+DDFHOihGnQ=--`!^|nP>--`!]}9 02767&# %# 76!23767632#6'&#"#76Y:C %Mx#(+sH?=8+_ !"R[7K&j( d >H_{k~G=]s]"`,.>QmV@@_'D%3##!7!6&#"#>32P@@Z%FH)*$54!kkJkL+*_FG[Vaq#733!!327673#"'&79@@Z%FH*)$44 kJkЇL+*_FG,'(!3#3!7#"'&?#73#7!!#!3276?X`F$H[\k@@*K_`KA!&"!zUS'jjj87edMjkHH^\UH,##"&'&'&76767!7! 7676'&'7!AA>>^Uefjk;Dss $EE&pp$))m e@o`cIC#$FDKaan@j.Ιppppgf.'"3#&'&7#7!7676'&'p@A=?^UeekVM"vh \|p%)*m@o`cIC#$^S]k8<<kgf.-'3!733!73yFqwA'Dkk%kkl'!3!73333!73ovlwaM>-kkDkkf 3!733!7367632#6'&#" hyGqwJFFo/0/0(^<7'(2kk%kk|-.D])?#7%#7%7@<(fR>h3ooHooj9N'37!#!!327673#"'&?C$j9f) [R24_+DEEHQP!Vf#V҃;>--`!]\hBS'%276#"!7!#!!2!#h?0C$j9fA..'%lcyVf#VEȾ6|'##7!#!!"'&'3327676'&'_$j9f1NOM%-uikc?plk"&GHf#Vyx}|9Ddcfe<6|'$, 76676'&+7!#!#77&"2#( .K>&GH_$j9f1NOM%-q1o6V{fef#Vyx}K56{_R!%327676'&#"#7>323+7tZ86&% ZR43`+DH+-tas|j><¾<>.,`" ^Mjj#!+73&'&767632#6'&#";31|qCP-+tsH?>8+_ #!R[76%&[tj{M^]]"`,.><<>*ju";##"'&'73327676'&+#71{pCP-+ttH??8+` ERZ85%& Ztj M^]^!`Z=<<=j9'767632#6'&#"327673#"'&7 tsH?>8+_ #!R[76-[R33_+DDEHOP }7^]!`-->;<>--`!]^P@ %6'&$"'&762y6564hg:8ghZ=))|S 565565j-'' #!73#7327654&+327654&+0aHx jBSYhuK`[v'ȉL9  jSj[,8T2Q8Iv=`+D:%2767$'&'&#";#"#&'&76767&'&767632 [+N62 Z$>lDC<=&&QP/0?8B<@jRJ][YY>>yy(l6F%| 34_i55c55i`33̶LMgGGGGgLM(D9#6'&#"32767#7!#"'&77632767632#6&#"k5Fxrp/.D<=M95SNhqqzqp12Z[tsH>=8+^ BR\77)՝/@ywzdMn8]^!`Z=;P'v9*#'# 76#7!'&#"3267632#"'&cqs#( dˮf'o~Y ((/. &'0/bBKL:kqqZ{_.""""./!!!!8Tm'7!#3!733!73 #7!#O^uؙ jjjJckk$.jj' #73#7!#!73G0{HjRkkNV(93!73#"'&32?67632#6'&#"6'&#"32767^I\]{_^a4{KJ#- suH>>8+_ !#R[76%66^^++32]]%kkd0/60/dL]^!`--=;eeppqqdeR)%3+73#73327676'&#"#7>323#ϮF3tZ86&% ZR43`+DH+-tas"jjjfj><¾<>.,`" ^Mj+!+73#737&'&767632#6'&#";3#31F"qCP-+tsH?>8+_ #!R[76%&[t3FjfjM^]]"`,.><<>jj( ',76&#"326!!73!+7#"32#7! !D%k++eOfB&k:7ї J{Ľb4{#kf}#iVզd_76_d)j};R67D#7!#3!7#"32#7!!!"'&'3327676'&%76&#"326_$i!J{Ľa5{#kf`e1NOM%-uikc?plk"&GG%l++effjd_76_d)jVyx}|9Ddcfe8i8B8=%276#"%76'&#"3276!3!2!#7!7#"'&32#7! !?2%57^^++32]]Od?..'%%!J\]{_^a5{JJ#kf|$lcyieeppqqdeVDȾd0/60/d)j8p3qF#733!!3267332676&/.7>32#6&#"#"&'7#"&7@@Z%FHS /;|N|bT[-jrut %%64gY Ti!kJk]LU_19;]YFV1-,f,*gtRRC(*)-.HFo,, C9@#"'&'7332767!32673#"&7#733!6767632#6'&#"sH>>8+_ ""RY9K%FHS$h AAGsH?=8+_ "!RY9K#hs]!`-->PnC]LU_kJs]"]/.>Qmi%Fq=E6! !"'#767#"&7#733!!32767&77632#6'&#"76 2+]r Th!@@Z&FH)("2e_`\5k::bc-71 ۴ G UXGCkJk]L**]z0@@st\m}9A!73!3!73#737>32#6&#"!>32#"&'73327676&#"3x)#ܳC='a DOgj%HlB?* H}8+_ DR[76&Dy#^jRjjRkKNqlnec!!`Z><Ñj%4>32#6&#"#"'&'!73#7! 332676&/.T[-jqut %&~65g^ i\hv| N|b ,*gtRRC(*)-.HFoj@j'wv]YFV1-,B!!73!#!73#7! !fB&k:5i}$'Vj@j};/)#73## ##7!##73## ##7!#N_ I_L[\I * kEN_ I_L[\I * kE5/<<C<--`!]^h=l77!73#73676323!736'&#"3! gm K,89Cm()>e c8KP345c ;;=99w;;m((44c;1676323!736'&#"3!73767632#6'&#",79Cm()>e c8KP345c g^GGj-&'";38" =99w;;m((44c;;\44 z6#K ">32#"'#73#"'&'7332767 2"  l GGj,''#;38"!4&&4'&#K <=`TdT ].c+)P3.B&%B#$=N()***7*!$x\#73## ##7!#M_ I_K[\I * kE/<<C<K / ii b JP.)+E;%"10c!<7GZf #@?[V >?3Zf #VUF@?xy[.73]vO! $FP[?@672676ʠ @j G@ sA?,__=>X@?X=>POPPB"'&6763"3sA?,__s @i F@ PPOP>=X?@X>.#327676'&#"#7676323+7WOL:#":6 !?,-,/o56J=KEq qxr ""mj""6z 44}5+;;'.!+73&'&767632#6'&#";3xq qEI-6JIo/)(%>6;E+;LOr ;d+5}44 z6DjmDi;\f3# #ttf"f33Ettx3bbpbqH@3bb1x)3!#=(= llx!#=x#i#j\RzJ 733##7#7$$) H 327673 &`--;;`&ނHO#$$#OF76! 2"'&767` '(f *!#"03!!!!30" "&67626'&#"3276,,__@P #$@A43 $#A@45g栠OPP?,,+,@A+,,,Cw!33267#"&7>^o 88-N( \Qu#~x#7!#7#7!##"'&%3276h  s|} > ma)'<<<<BB2'0J9R/. : !..&('>U01 7#7!#3!73'3!737'#7!#]  \Z XtZ \U 5 S<<<<<<<<'.!+73&'&767632#6'&#";3xq qEI-6JIo/)(%>6;E+;LOr ;d+5}44 z6DjmDi;\ #!7F$\\ #!7!F%9\x(\ #!7!sF$s\PPn\!#!7!39F%(x4\)7!3$漼>?3%>?3Zf #mZf #F@?[P@?[{dCfvgfm7{boq ")Hw7!x7!j\2#767676'&#"7676 *BMv"  2)IX/co 18X(Op6'< "3cyf|1fnm3JJ~m'"Ff###rtfxx")'xw)kHw q'& #6767vT\IH*pPgIJ6E2'67&'&7676E D^0 >'7#,LS#&8F'+2&'&?676-/ -)1@P) 2'F8&#SL,#7Xf3# ufXeCjcvevULG%73#7#7 \ "=G%33##  ۥ}t!#!\@t"JA732676&'#"&j/.F qQ1]M^WC8:$C q|<~:_"'&6763"3as@@,`^s@i G@:OPPP{X@?X6733!7 "%##7#7 ۔G% 733##7#7  %!!!"۔{9W'#"&'733276?- H|8+_ DR[76-褻!!`Z><9S%332673#"&7- [Rf_+DH <>Z`!!Fx6bxAx8bj=37LF::ud*pPgIJ6uzCwzpd3JJ~Pf#!#7q-JVJ-yCZb#"3327673327673#"'&?W,`7 J%`7 I&`CS#N  JdbnBdm@CWbwLE#dwK^e{&.:fqXpmB]eQ'9'&'&#"#676763232767673#"'&'&#"#676763 gf;P$ ` >AmkTi gf;P$ ` >Jd_`i gf;P$ ` >AmkT) 9>(&;=3)B 9>(&;F*)F 9>(&;=3):7!jj:7! jj''Z??^??I*'AB9EGI@eKlY?Ig!!66k&jb&C+b632#6'&#"#6'&#"#32 ?W,`7 J%`7 I&`CS#N  JS<U '77''^}^T^}^Uwuhtthuuhtthn.7>77>76'&'\KW/MV0PQX$  +0PQX$   '.7!x_#&'& #6%6_p$d$W:`wwww`Totf3ptoVH%#ϡHP ?3?K*65g(Ղ] >y>?3>2"k})\p= \pE%ZpMN78M!f3#Zbuf7'jb_f& BL >32#"& \97? ]79>8MN78MLf'\qf'Vf'V~Rf& f'pf&0'Hb_$m%L)3_!iy(=+^2 +#3!73#72#""&'&76$3 P${a{%%{a{$<@@@@NZ6FuE=D#ubQJKQkdapjpbcVobcJ,].b_%3!7333!7i\"jyjjkjj[0:1%73!3!#!##3!73#7;{@N@{D{@@{${`{$${`{$L]Lc^22#3!73!3!73#7kjjjjkc3 !73! !#7!] {@5)@{(I.`7e<h('093!737&'&'.>7676?#7!#67676'&'F1qiQL_wVaF1uFtGm?tXųq-/hRs/-fN/OF! ajja !FOOHdkkdHZvmVcVmvZz;G11;#"3!73$'&6+7321#7!#676L97fZ"<744Zm6<%[f:9/K5GNp"#kwijj i~3k_Ckk|C_@'%!73!767 !3!&7676$ Pu;$-6D6-{$;uN*u"Q[A)ƤӶF7SF-W`֗g[`_\g\'*ue\'*uU>f&e/!f&Vf&Lif'H&W U>D$2'&'&7676276737'&' &'&767?=0jDn\^1/HA<9qe f4 #1w7rp\-+37uoV7$C;%oi4;^ΝKyuz8Q &{eq{ V=-732676'&+7327676'& 7632!"'E)JK_2fT 4]M&"Q~R[IVURQQ8R;Z]kH=EOq08tdTS(ml^\S'%'&7#7!76'&'73O@EjfT[D - pf 632#6&#"qh%HlB@*׹&Dy#klnebÑH+'&#"!32762#"7$(ocF?6$)oc>ččn@AkK+Jk' #7!7'&˃hC4vN"k#JyuzP"'##7!# 3!733!73#7Q';'kckkjjjjTiV &'&#"#7676323!733!73z5moHrZLlwVe z&VzDR`'#73#7!#3!73!3!jRkkjjRjVD32676'&#"#676763 #"&'j%l+,4>f]긹1owIba{"HihzoeOzr#. _d}U|D %$#7276#$'&732#6&#"i:}inp21Ve[5ku,.67HrZLl1/0qrY' %2676'&'" !!#"76,(3-\b*,jV851bFlmuk3|'7'&7!#!C2vN i4f"KyuzP k'"3#&'&7#7!767'&'Ip%)-=?^UeekVM"vh \|p%40X'Oso`cIC#$^S]k8<<k;f/kV}-)7#&'&'&'&76767367676767676'&#"R6?;4 ,\Qp kW05$! R,DqA)-$CM\F@EL%+WLL327V!E@lC #D. $<"#^'533/<>C #jjcD.1xkkAAcD.1xaOVV'1#"'&'&'&76'&'737376767673#R]P<>: +- de'*%#*~_K%-VKe 9>9,#;T\F^[V$KFf(K;&K[@Vk̶?Jg* ptL\#6'& 3!73' Aq kٜYUTdI|e  &ue 6jjk{R sf'\&*u7V-#%676'&'#$'&76%3'NbY5*N^oc[[^oc񥱴NbY6)K\ut^y-e^t8u\C' <!##&'"'&'&'&76767#)767673767'&"+-%BM\F^]Z]P;?5 .Y/#4805%"*D9aFF9"E^L%5'k;?;*fBS3)*j-$B 9%Oj'X)) =l -$<"#^*=[l`H|8+_ DRKGi./z~+45ˆFspTS'D.1xz #BJ[5"5ghZS'Ds`U!!`Z>ZVX $%2#"#&'&'&76$3 ;@AA@>NN^TvNZ6GuE=D"u`NQJKQfn #2apjpbcVob2"}VD%26& #&'& 5YjYkOO[ocUcF8]m{2|U # '&'&7!2#4&#"%$#7276pUZ5#CIzCq@>XSX|i2,gp\@AĵrZLlmU$&3$#7276#$'&77637673#ځv_1-66:|ioo18Ĝ3\k&A[t^qrrZLlz2]I)P'%67632#6&#"!!#"&'733276$x3qB+b U# #6'#&'&#6$3 #7276 k';ځq{ƃJqC zHÐ7%@oB o`[YXA@뗲72k4VED#&'&'#&%7 #66~ΚpPzQ^hPV Tf4!|nXvGE67327673#"'&'&7'&76?76'&#"#767632676'(X)) =k -$<""^(524/<>?;*m;S4)+j -$<""^(524/<>B 9%OJ[5"5ghZS'D./z~0/5ˆFspTS'D.1xz #$RD#262#4'&#'&7676763 #"&'32676'&#"ԏY*_/V^0ueP!x1owIbb{"3)F'&l+-5>g]<,7)L-^Jjzr#. _d_:dihzoeVUD#"732#6&#"3267H12Ue[4ktZjw3?31/04|}9[ >32#"&#7!#"&'733267vQ/.5 M0/7f H|8+_ DR[nq.DD./BBzkq!!`Z{^2 !! 6'& "&'&76$3 8 @NiS<+E+% !7!6'&'&#676"'&'&'&'3"_$  ۂUY)k4fcjrkl. 8%=,WN9FiN>AB/:2cAK#!2676&#!73#7!#!2#!3}p*9&%+jkkj+V 32676&#" #7!>32#"&'%l++f^miI{ļa{#sHiOTjmd_ _d_#"&'&7!2#.#"3267`kNZ6#DIzBq@@Odap\@A[#73#7! !#3!73#3 |kjkAkjj+=jV' !#3!73# #0Zr"'"fhjvqVD'!!#7#73676763 #"&'32676'&#" ee1owIba{"Q%l+,4>f]kppkzr#. _dihzoe.332#"#6$3 #"$/8@@IqB!zI?D#tSHISXA@Upad_ )>32#"&#"&'&7!2#.#"3267 \97? ]79>kNZ6#DIzBq@@O8MN78MLdap\@A. )#"&7>32332#"#6$3 #"$> \97? ]79>8@@IqB!zI?D#t9LM87NMSHISXA@Upadk&N-4u\&N*`u(E.6'&3!73!#!#7!6%$#"&'733267#DhrlfC-{D?D{-T+~X%U0GB.rFXw{*ϴ5Q[Vokk`l&+rI""cak&L+`u_! '&!2#.#"!!3 `؞I"BqB//OXz=; 6J,\&?*uV-0$,)73!#"&'7327667#7!#3 326&+T8x^'C!r?9Qq) ;dxWlP्@Pj""VQsǦ2kkbKV(%326&+)73!3!73#7!#!#7!#3 N@T}}GddGdxWmOjKPj~jjkkkkb %#7!6%$3!736'&3!73!#D{-T+~X%EE#DfrlfC-{Dl&+rkkd5O[Vokk`\k&S+uk&Q-u;D&\z974#!73#7!#!#7!#3!"ZGGe,6qjjjjjjb_$ !%!267654'&#!!#7!3 )73#}+! -DA{)Sc|n7+Nj7.]4NVd%'jm% %3!73#7!#7!}A{)>jjjk $3!74#!"#326767#7!#38y aY1d,6jSbv!43<SZ! eqM\m2kkU(o +!##7!# 3!733!73'3!73 #7!##G{__æ{kykkjjjjxjjkky1  '&'33267654'&+73267654'& #$ʼnfQ9 ( tX;f 3H_2 ):%p3x[ kLk-3kRi92X3+b>Zj+%P0E~Z#73#7!#7#7!#3!733 G!Gg!jkkekkjjj&Qr\!##7!# 3!733!73#G{_kykkjjjj0\%!#"&'73267#7!#3!78x^'C!r9q5f7;j""Ob$2kkjj[0+^22#3!73!3!73#7kjjjjkc3_&`7;D%#"&'7332?#7!##7!#B)D!rI8T>`P q""dK}Tkk2kkb.o;!,7!#32+3!737#".56;7#326654&+";F'zJWd45kSqjjq?=&&?S ]H{I=yz;974#!73#7!#!#7!#3YGGSqkjjjjTW!#3!73! '&547#7!#3!#7WkmQ =B= +>ykjj#rU+19kk0)Y7Prk A%!#7!#3!73#7!#!#7!#}1GG1G{jjkkjjjj `74#!73#7!#!#7!#!#7!#3YG1G1GSqkjjjjjjT %!2>54&#!#3 )73!#t ,qMbC7 Up({@j.]kDm18LjL&e, %!267654'&#!)73#7!#3 } ! .CUpGbYj7j7.]4NLjkkDm1/ !"#$3 !"$'3!2!7!6IqBUIpE#N,A0X֕\hF"z_ )9%3!73#7!#!67676763 #"'&'&'&7!276'&#"~Gig":RuE=D#SSuuvNZ@@\\@@\\jjjkkwcpb12Vob2122apzJK %!"3&'&5476$3!#3!73!3!73q &;W> #Es!I2|0G] _Dn,3kjjLjjD=ED+6(436767632#"&54?67676767> 3 5Vj!yGJyP#Md:=A  4/|fPYf"YS+n6_wG 42lGn^! D@H$EQ-B3hXY8R-'' #!73#7327654&+327654&+0aHx jBSYhuK`[v'ȉL9  jSj[,8T2Q8Iv=`E'"'>763232?!"&5476?654&17)u2|+cɸ-3͙Ut==Q}=]oBo.&90?^rG6,H/`W+%2764'.#" #"'&5476 '"'6dA7C,(u6xD~oM1Uo9}Ow@jFuKY!NhPjrkEN2;_SoVaDH/'%3!73!73 #7!##7!##7!# 3!hNzMzNonsiIzzIirmT>oqjjjsjjtjjtjj j'2, '763 #"&'&'3327654&+7327654&^;h'xZhLMf{]s\0^okȴ@*O^`aO>Ry@MlEuj3=b:Y'33!7#"'&547#7!3267߸$Hk@'n_x!z"'Cjjoe7632#654#"327#"'&'&/##hY~iłaUm4jX,DtP)"?J>7X j03j=S"|\'9EIΈ-aHP. #A5K`9JdP*''2766?#7!#3!73! #"'nF 0Y'%m"5rES>S}2LMȼjjjjDۘOV'!#3!73# 3!73#7`9'%jjj65jjSjP'3!73!3!73#7!#!#7!PP>>jjfjjSjj=jjVzDRDQXVDSVUDF DP9'\8V&3@#7!7632"/3!73#"'&5472'&"2?26764'&"]irQ9i3(5PPR:gpM2X(#7,50Q=6-3.iF2DN2EfjjF2jEO-2F(kk(f'[p')73#7!#!#7!#3#7654I碦Lh iTjjBjj{ sP'#7!#3!#7!#3!73!"'&4B% ?KCT2iTjjO? (jjjjW6A'%!#7!#3!73#7!#!#7!#{BjjjjSjjBjj'!7654#!73#7!#!#7!#!#7!#3M ZL sjSjjBjjBjj{U:' %32>54&+##!#3 )73ѻeUda x4Ai<jpu<` j$(jT' &3!73#7!327654&+)73#7!#3 eF]Ud<AijjSjl8Jy<`jSjj$' %327654&+)73#7!#3 QeF]Ud<Aij8Jy<`jSjj$<+E-% !7!676'&'&#676"'&'&'&'3"_$ ۂUY)k4fcjrkl. 8%=,WN9Fi A6AB/:2cAKD#3!73#7!#3676 #"'&726& FI5bm`XiXjjjTikٌ͙w8'%.46763!#3!73#"!73>%#"3wSbc^LzE[D2KFlzFmjeJJjgg:bg I:KhddHXVad'CnVd!&jhn9."'7332676&#"3!73#737#7!!!>32Mp+_ DR[o&D"Uh+:LH~) us9B`Z{ÏKjjVwsjwyln%_]Kf&lv*WUE+%673#&'&'&7676767676#6'&!!d=Wf]0=oV  4r`[R4k ?;m$IFKAc2:/BA>NiSDVg)LD!9[M')# )! "'72>6?#732>54&+A%`& ;m"4uCRFhCEW'%beUdb'jl,t/ӔO}lMȼj?px<`' *%32>54&+7 )73!3!73#7!#!#7!#beUdbXi<8PP>>Afpx<`n%,ffjjSjj=jj%!!>323!736&#"3!73#737#7!:KH*g\&D"Wh7wlnjjÏDjjVwsjf&svHd'Cq9' |n')73#7!#!#7!#3!"#7654[袦[d+,h iTjjBjji sv$0!#!#7654+3 )73#"#!7#!267654'&#G8oZ6Yj7 Upͷd+o8 ! .Ckg rCm19Lj!gv7.]4N (%32>54&+3 )73#"#7!#7!!#654#eUdWAi<Vb&b,(Li`(,bYjpu<`$(jSzi d^2VD%#"'&54 %32765 7c@A9BL D_ :_|fJS2JNjSCh"33#3)73#732676&+1/xUoO#+ȓ!}}bj}~bq33#3#!73#72>'&+S@@AAK8sq7(e%01eaO'Jk\EKKfVk?p78e %3!73#7!3!~K9{Qjjjk%`X 3!3!73#7U{jjp{k\'!!3!73#73#7!#7!|CCK4i={jjX{iE,3!73#7!#7!6%$#"&'7332676'&C@{(>T+~X%U0GB.rFXw{*T#Dhrlfjjkp&+rI""ca5Q[V9\'(3!73#7!#7!!2#"'733276?6&#E4iBg9>(8vso+_ CRU>6,&CjjTiem_]B`Z>5Ïu&Pz,'u2&pz]!3!73#7!##7!# #676'-uGnASj djjkk5kk4T'!733!73#7!##7!# 3#76#t:P(Lh djjjTikckk{] #7!# 3!3!73#737#7!#3<4AvG!Y5kk3jjj}kk}Te#7! 3!##737#7!!+'ޫOi+<ekkjhzvjzT##7!# 3!3!73!#@nBv({@k5kk3jjjLT'!##7!# 3!733!73##Q'; x'kckkjjjjW)73!3!73#7!#!#7!#3#4||GddGSjj~jjkkkkT>Q'!73!3!73#7!#!#7!#3#76#OP>>Lh djfjjSjj=jj{ !3!73#7!#!#7!#7!3!73}Gdd@{(>~jjkkkjj'!3!73#7!#!#7!#7!3!73Q>>4ifjjSjj>ijjE 26%$#"&'7332676'&3!73!3!73#7!#T+~X%U0GB.rFXw{*T#DhrlfDʌ&+rI""ca5Q[Vojjjjkk9'.3!73!3!73#7!#!2#"'733276?6&#4DGg9>(8vso+_ CRU>6,&CjjBjjTiiem_]B`Z>5Ï_u&ZzLVuUD&zzd`373!#!#7!3#6#I-{D.D{-ITjdj` T>'373!#!#7!3#76#i44iߣLh djB {e<uV'%#7!##7!#3!73ywJ3kk%kkkkz!733!73 #7!##7!# 3#6#,'ˠPNTjdjjjskkkk@T>'!733!73#7!##7!#3#76#3ڊlsLh dj>jjkk3kkw7{`373!#!#7!!#7!#3#4#I-{D.D{-IGSjdj`jjT>'373!#!#7!!#7!#3#76#i44iߟLh djB Bjj{T!73! &7#7!#3!#7!#3#6#k%=?=||ESjdj#9kkǘrkkT>Q'!!73!"'&7#7!#3!#7!#3#76#BT1"B% ?KLh djW6%MTjjs-#jj{S#73#7!#! 3!736&#!3ae9)&BB}kjjkkWpkblKJ,o m'1~uO/H'wFoE]167$#"&'7332676'&3!73#7!##7!#/6+~X%U0GB.rFXw{*T#DhrlfCGnh +rI""ca5Q[Vojjkk5kk9'.3!73#7!##7!#32#"'733276?6&#B;Q39>(8vso+_ CRU>6,&C4jjTikckkem_]B`Z>5ÏE$%!3!73#7!#!#7!##"&'73326v|GddG4GB.rFXzu%~jjkkkk""ca9Q'%!3!73#7!#!#7!##"'733276yQ>>vso+_ CR[89hlfjjSjj=jjۣ_]B`Z>>T)"#3! &7#7!#3!#7!#3OdbjSk%=?=||E"9kkǘrkkQ'!)"#3!"'&7#7!#3!#7!#3d,+hLCT1"B% ?KW6%MTjjs-#jj !#3!73#jjj@b_i'w!ID=-&w&ib_\'*uID=!&j9iK4*Dm'14uNViH&w^n_2PYeD_2\'*uYe!&jZo \'*uO/!'jFo\&P*u'!&pj|x6|'?2&Qq<&qq\&Q*u!&qj^2\'*uWVz!&jhw^2-VzD"^2\'*uVz!&jh/\&f*u</!&j3;D2&\q<9&|qD;D\&\*u9!&|jD;Dk&\3u9f&||DW\&`*uP!&j#73#7!#7!3#4# @{(>SjdjkT>\'#73#7!#7!3#76#!4iLh djTi{\&d* uT!&jXPD 8?32676&#"'>32#!32673#"&'#"!76&#"#6$323267{+퉝ots`e}Ŵ! vt#_*hV&[u3*vy7Mz8l3vzoF[XIxcc))WZXY*}[ԺAD22#"'&'73327676'&+7327676'&'&#676mYY>>T[[a*c 65ulDC<=&&QP//ms,/nlDgGGHGf%]-.43_j45d45i`32\|a_JC-#"'&547>2#7!3!g P/. O^ f.D" /B! jDkYD(/" 6&!76&#"#6$32>32#"&'#"73267۔Xi(Xj*wy7N6Xb鄻3\zl48F}ba`cc``c)D 6& #6 -j-2T22  673 7,j(,1.12z!73##!#!2676&#!aC"jF`P# kDk¢tX4j^`z{ 1>32#"&>32#"&!73##!#!2676&#! S035 O307U R035 O308C"jF`P" kDk£$0FB42BF0DB22BDX2l`^z`\p0#!#3!2676&#!#3!2676&#!#3!73#YjW !jcj%jaj,jcj!T#iF`Q5n`o{`o{3d|c*3#7#"'&547>32737654'&#"326c +55Fo4 pF)*i PPn PPl;]8W6L-48n;0%/ 8}|=// ?q( ,32676&#"#73>32+32673#"'&Wc FIH64Eh /mDol '&SF^<A<;6;;4~BE>I((9;@)(jY]f)C&%87x == '73#3#7#"'&63276'&#"3276 oho /:;M|;;=|N/. !#XY;< YX;:]<$;]8WW;k98?>|{@?89P 8?32676&#"'>32+32673#"&'#"&7!76&#"#>323267Vc EJHjIP'32f]]f)CK87x0312x{GFbc3hjkg(#73>32#"&'#3267654'&#"p Q.uN{;' |M^t "XYw  XYu;86W9Q)058] ,#3"8{9,3"?qk(#7#"'&547>32#77654'&#"326t.uM|;( |M^Cm  "XZw  ZXu]85W9Q)0686;;,#3"8}|9+4#?qx&32673#"'&547>32'654'&#"y %dLq#]1yF1 Վ?* |"VPs!2,8$>GFbbV;W&,T7Y,5;%7"5jhy!!76'&#"#67632#"'&73267&&cL99#]1VUzFFԏ??#"UPt x>=#$Fb12WUSSch55kg!2"&76767&'&7>32#6'&#";#"2673Îs 88XR'& |59:=?!"ID+* &&W W33 DIY^EDVO:'( ((9OW x45<8;63FI65/22#"'&'73327676'&+7327676'&#&#676;r 89XR'' |5::=>"!JD+* %'V W32 EHZ_EDWO9(( ((9OV y46;8;64EH66$%8#"&'73326?#"'&547>3273654'&#"3267rBt3=#%Ofu/tN{<' |N] "XYw  YXu}7fnP85W9Q)068]<,#3"8}|9+4#?qk!#"'&547>2#733#2 1< n uo &% <<y3###73%#73^` l2tp |Ma ;0L,;<<#/>323#654'&#"#654'&#"##73>32v0wEi' Fh P FMhHtQ FMhHtuo -q?NZ{BC:#9%.;o+ #&hcs*#%hc;j32#"&'733276Y LQkItvo .tDn) `l-N#<49#"b:&#(hd9!:%0K\i{ """!267654'&""'&547> ]| !{ "PF0 &E1 Ã:-6$A:-7#B7V;W&,V;W&,U>32#"'&'733276'&#".oFFkl@<<:"C%$S^>>8"!^Ki=_dVVVU N$$AAAAEF5 6&"#> 6C{ &ƀ+ 2673 &7B|ی(3267654'&#"'#73>32#"&'# "XYw  YXu^p.uM|;' {N]Ht;,#3"8{9,3"?qe<]86W9Q)058#73733#32673#"'&547af f(u) R  ,-4 Xj\d!<<, 05QK'.$ 33#7#"'&547#733267$tun -tCo) FiL MQk;i;>8":%0><:&")jd@p7!73##!#7!2676&#!*[C,w=2 D+{ffpaZ32#"&'!73267654'&#"-,iQ,`7:}'I{^>1{"! 6*3%&&b.0ďd_fJU_dktN?[|M// ""XZ;< ZX:;]<;]8XW";k89??{|??88o##"'&547>32#454'&#"32671-oF0 ג?y9!C!%R^| !_Kh O`cV;W&,C $;.6#AFF!z.376632#"'#767&'&767632#6'&#" VdFrW_ `; HFlk@<<:!D$%S]>>5=FJo(0QQ9,WUV N$$@AY-.#"32676&#"&7>32.''7.'772mGY[~  _F ֓Ր. !Y9Hx1 x~ux>w^y<S+L!- 05&T,/2"'&73367676'&+7327676'&#"#767632,-^CIE** %'V W32 DJ,->F?>5|r 89XR'' 56IF36;8<54x WO9(( (':OVP+#654'&#"3##"&'733267#737>327=1AC wp+Q'=2ACxo op+Q'w ?QM7#"3267j orBu2<INfv.uM|v.Yw?ZXu<};5fnP85|}p{qk$3#"'&7#733267#733#'&m?.9:Do)(Eh LLQln|fF hO7%*+p G3267632HIl-'(#<49#"],FM44LP66*b\54 {6""IQ4""x!>8VFF>kl&FE>klB7dd7BpkVo-o P n-g8E>kUngn7*=8!n6)=8!<<DWVD<9CVWC:+AA, +AA*9B327673#"'&?373;32676&/.7>32#6&#"#"'I 94 !<++,-l22C %%UN] 1[NQ= w5p9C GJIU .PWYCA;8I""6{ 45\dC! 42'0J9R]:A..%.O>Ta '#"'&'733276767632#6'&#"uZIk.''#;38$0 YHl-('#<3:"0bPA4 {6"->lrQ?4 {6#->'#73733#32673#"&'733276?#"&7f f)t( S,.4 X+l-O#<*49#" 'dB<XHI#<]tUh?>>?hV9:]"3#&'&7#737676'&'GY()&(;6@?Df70Ko W9OWFD#IHX?58)%5.bR(F Yd`DD--9g0CClFE Z]88`n996'&#"!32762#"&6#]]F>,j#\\F?(|Y瓑|Yn[ff[<[ff[jbA_&$CA<E&D}m&%yuV&Exm&%MV&E> m&%(V&E _uk&+~uUuf&&'u(7&Gtx#P'(x#G&'((&Gwu&'k(u&G &'m(&Gm&('~u-HU`&H'&('~u+^U&H'&(O`D&HK&( PK`D&H&)uV%&I^k&*uH9&J&+uak&Kx#+bxl#8K&+uak&Ku&+auk&K(C&+aCk&K^KJ&,K(&L{]k&.+~uSd&N+px]&.Sxd&N]&.Sd&Nx#^/,x<#Ox2#q<p,xf3#q=q&/9K;&O&/m8<&Om [k&0+Buf&PJ[&0u !'xPx[#0x D#yP:S&12j&Qxwx:#1xD#8Q:&1D&Q :&1mUD&Qm; ]1&2'u-Uy&R')]1&2'u+U&R')cr&3+|XV f&S_c&3yuXV!'xS&5su7!&Ux#q5Jx8D#Ux2#q<Jx8"q4&5x7D&U; &6Vu!&xV;x #6xD#V;x &6'%Vux!&V'_&7=up;&W`x#(7px;q#W_&7;q&WP`&7m;q&Wmzx&8{x'&XK&8GK'&X&8F'&X&8'+,u&X' &8'ucS&X'2hw^&9,uKz7&Yhxw'n9Lxp''Yr'-|:s6&ZC.r'+|:s6&ZvT&:jZ3s&ZjX&:|r!&Zx&:rx'&Zz&;me!&[z&;me!&[e&<!|9!&\k&=.uAf&]x&=/xA[&]&= A[&]|ak&Kpo&Wr&Z9&\C&Di!&Vbx_&$ICx<E&Db_E&$iuC<&Dbx_&$'IuuCx<f&D'b_&$'uu+^C&D'b_ e&$'uuCD&D'b_ &$'uuCDV&D'b~&$'uuCi&D'2bx_&$'IuuCxDH&D'x&(VxaD&HE&(ruU`&H^&(,6uU7&Hxk&('R.*uUx`f&H'~E&,"ua&txJ&,1x)&L^x2&2VxzD&R]1E&2uUy&R]x1&2'uUxyf&R'x&8x''0XE&8u&Xek&<-u96&\C7ex&<'&\ReL&<|9&\e^&<,u97&\U>&|U>'U>'U>'U>'U>'U>'U>'b_&b_'Xt'|,}&Ƃ,zw'd&LjTb_&b_'s/&$/&/&!/&/E&B/u&lx''tg'|}{&Ƃx'd:%&LjpV&dV&XV&\V&lV'V'V&xV&xx''t '|} &Ƃx g'dL &Lj|'X'Xk'Fk'L_;'g_8'd&&ǔ'L'OxL':'t'|}&Ƃx'dF&Lj|'X 'XVz&]Vz&]Vz&NVz&]V'V'^2''Qt'|g}&Ƃvx"'dY&Lj'&N &? &9 &W &{ ' &Q &E r'} F&ƂZ&LjD'XXC6'0C6'0C6' C6',C6'<C6'DC6'8C6'@@'?'Tt'|j}&Ƃvx0'dl&Lj,'X`'X U>d'U>f/d&r/!fVd'Vfkd'XifVzd&{Vfd&c fC6d'1C6fUP>&͜UP>&͜UP>&͜UP>&͜UP>&͜UP>&͜UP>&͜UP>&͜bP_&bP_&tP&}P&zPw&P& ?bP_& bP_& P&P&P&P&P&P&P&P&xP& P&!tP &"r}P &#xP g&$P &%6P&&P&'CP6&PCP6&QCP6&RCP6&SCP6&TCP6&UCP6&VCP6&WP@&X?P&YtP&Z}P&[ xP0&\Pl&]P&^rP`&_U>H'wU>'qUP>d&`͜UP>D&͜UP>f&͜U>7'UP>7&͜b_i'w!b_1'q;b_d'db_fbP_&P2'67&'&7676DE_0 >'7#,LS#&8F'n87{7'TVjPd&dPD&Pf&V7&xP7&)d'^tfd'^qfP&' &(n8&`H'wU.'qLN'R7'd'dJw2'q<d'^f' 'n8&H&wQ &q] &B V&D V&D 7&H &< ei'w!e1'q;d'^fS'7&jb7odCCP6d&lCP6'&CP6f&C6&>CP6&Td'^"~Rf~d'^>pfP@&!fv2&'&?676-/ -)2AP) 3'F8&#SL,#7Jjs!!isJjs b!! b b!! b b!! b b!! b]&BBG#>7GZf #@?[o>?3o[g "+?=[8>?38m{)E%Z&'&5473^v& +P[y>MGT=P@'!V#>7#>7Yf $Zf #@?[P@?[o>?3%>?3o[g "OYf #+?=[P??[8>?3%>?38m{)Jm|(E%ZPE%Z^&'&5473&'&5473]^v& ^t&+P[y>MGT=P@'!V?P[x=LHV?P?' Vl; 3%%#7Jy uk Fs;3%% %%#77Jy u\ v3yj \k FE%'3! 4632#"&3~|}}||}3q3 >32#"\87? ]790pNN87N $>32#"$>32#"p\87? ]79\87? ]790pNN87NMpNN87N2  $>32#"$>32#"$>32#"\87? ]79\87? ]79\87? ]790pNN87NMpNN87NMpNN87N  "-8<F2#"&7>"32676&"32676&"26H#"&7>3#  &76I杠$%WCWVBXCWVC#XC9@UI杠$%岘,<$%%$ۻZݦ!&\ۻ ۻۼ 5 !-9DOS]2#"&7>"32676&%2#"&7>"32676&"32676&"26H#"&7>3#  &76 H杠$$WDWVBI杠$%WCWVBXCWVC#XC9@UI杠$%岘,<$%%$ۻZZۻZݦ!&\ۻ ۻۼ#7|#ssRg# 7k#^R^sXX='t B&"" &"['t"27676'&#""'&767632JF/0 gkEG/,wBD3;lvBD30wv]Xg]]`ƻ\ptfppppp !737!733#3O}NrgiTTR&!67632#"'&'73327676'&#"#28(12:NMFEFE&L .-cjGG+,k=22-:bZ JIL+*:9kk99%  *2676&#"67632#"'&767632#6'&#"پL_`0;;?IJH!CF1>~6899 L%%Jrkkrnhn7+JH}hkkv7V #!#7! d%/O.e 36&"276'&#"27#"'&76767&'&7>321*TAB*TB$%$TS89$J9+n43ihKKMNvT9+’?[%b11b1ܖ****T*T 98Xs?>>?sX89 ?0KcrrcW$2 0#"'&767632#"'&'733276"327676'&^7@?JGI"poEG245999 LJISTO`@>)%`d<=&% )JJ}KKhjwv 7e c8KP355c ;7#7332#6&#"!!!!3267-SA BbJcoBjtzAD1  wCvt90h1"0h.>Eh3 Dh吏u#0;#7367"76!32!73 6&+ 3 #"'3276#"48SS5@/LٚPvG"oPfi?$GC<[4V;I003R_^wژznX,sB7#RmNC4C!7!7676737#676&#"367632!!#3!2767##"'&7676&l %h=q/gfFFC$%g*{Bs&mnOPC j*@bj7A+œHGA@{e3"##72767#7!gh4#}[hg5$Eu1FuJ)'y)'ݾtFn`?>҅__A|Ii."54Jj-"4hP">Qrkf(3#3!53#3#53#5)#5#3!53##^VVV+TVV}-DVVABBBB7VBBBhBBBh@].;7m^b#ud'H5{b#ud'H5t^#d'H5{#d'H5t#d'H5u#d'H5^#d'H5{#d'H5^#d'H5{#d'H5u#d'H5V#d'H5^'H5{L?8 !#53? _ ׂ  !53%  _ uh8 !3#!u _ ac ca %#5ac ca _ h-(>54&#""&54632#"&54324&#"32IH7H0e՘ݢe WOmVPmmWKt,>bFأ[t}t{3V% 33^]<;A+3V! !#3#Ŭ1+5w'!#3!53!3!53#56JJJJJJJw!#'.#!!>?3!5 nNI =DN)u?$ HNh"%!%)/1!!Ӣd3#Ζ$BL >32#"& \97? ]79>8MN78ML=} 3##'%\sB}}`s-Pb; %.#"326"&'#"&54632>3"31UevYQJPG__KDa*M2CXXieu~९{YY /32654&#".#"326#"&54632>32#"&2TevYQ1UevYQG__KDa_/YYie9XXie~९{⦮uI%!3!~$I%!3!ȢT~$!3# ihTJ3 3##"JT32#4&#"#P,*7332653#"VP7*/%26732#"&'.#" #"&546327j Pd@7*8  kOeD=!0 l9TA6?&#Hn!bSA8?S/'SS/ D'SJ'SS!!#"/&'&#"5>32326c]\ _\Ye]` a\ZT? 9ILZRB 9If!!#"/&#"5>32326b^` !_\Ye]` a\YSB 9ILZRA 9I8#"'&'&'&#"5>32326#"/&'&#"5>32326c]\ _\Ye]` a\Xb^` _\Ye]` a\dZT?9ILZRB 9IѓYSB9ILZRA 9I'!!!!!'7!5!7!}/H{}?f٠f٠F !!!!!!Ҡ 5 !!po %!555f 3 %! ||$$$`j3!!#ajH! #!7 Nj!3!b"Hj!!7!3/Nj^!#^c?$%%$~  1;FOY!! &546;#"&546 !54632+32#"&=54&#"3#"32653264&"2654&#l(ع(DbEDbbEEbbEDbPDbabbabDv(D(غPEaabbDEbbDbaaE DbbEDb^!3!b?c6732#"'&'.#" Pd@7* l l9TA6?%Hn*u( #"&546323267u Pd@7* l (Vl9DTA6?%Hkn T !!!!%!!Bf6L̔4+x  #/;GS_kw+7CO[gs!2#!"543!254#!"+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;22+"=4#"=43+"=4;2+"=4;2"=43!2#UݓJIIJ%J%%J%%K$$K%J%J%%J%F%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%%%C%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%$%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%$%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%%%%%%*$%%%J%%J%%K$$K%%%%%JJJI%%I&%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%% %I%HJ%%J%%J%%J%%J%%J%-3#˪5ipph #3h5ip .P 7!!!!!!*cc ccu(3(! !! $<5.73!3!cc`;(t;!O;!O ;!O;!O;!O;!O;#!O#;(!O(q(!((!((!((!'(I(!]((!((3(:(|' q( #'+/3!33!33!33!33!33!3mnmnm;(%8K#!1!!!!!!!#!1!!!!!!!#!1!!!!!!!#!1!!!!!!qlllllllllmmm((((;(!%)-13#3#3!3!##!#3#3#3#3#3#3#^^(ll(lm#;(q#q:(!&9'(9(&&9(&9(&&9(&&9('9(&9(&&%! %!!!,7r+uv ))xxp) )$7632#"'327$%&#"%632#"'~~~~eMM>yJJJJJ6````qq|qq#u  9%-p) 327$%&#"%632#"'MM>y````qq|qqr' '/7?G%&'&'6767&'&'7%'676727"'64'7&"'62&47\+;.81F9K58.42d;E9G,:.80G9J6&8.;+d1O9FLL&_`JnLL'`_n<1& j(0=Ju &,A=N:0('<1& j(0=Ju &1<>EB0(n_II'[[JnII'[[p) %/36%632#"'327&#"6767&'&6py AAAA,+-,,-+A@@Rqq|qq%%mܱ[0$ %@%|"p) )73276'&#"7632#"'327$%&#"%632#"'r99:9rr9:99XWXXXXWXMM>yB!!BB!!oe33eje33````qq|qqp $  $pkk]Ak^p $  $27$%&#pkk]<MAk^a``p $  $"3pkk]<MAk^``p $  $327$pkk]\MMAk^>``p $  $%&#"pkk]Ak^>``p $  $"327$!pkk]<MMgAk^```p $  $"!pkk]<Ak^`p})6%63"'pRqq)#2y|q*q( 2654&#"!|~}}|v< ( 327$%&#"327$%&#"!IMM>y_O````}|qqqqH( ( !#%&#")%632OyyMMqq>~``  3327$3!#"'$@1>qq``) %63"æqv`) 2#%&#u)q>` 527$3Muyv`>q "'$33yuMq`p)%632#%&#"puqq>``p3327$3#"'$puMMuyy``>qq!% !% !%! !%!$3! 2654&#"4632"&nȊce;~|ddcc||}%!%!!d r<%!%!!We r<%!%!W7 r<%!%!W7 r<% !%!!!!+c,b r<<!% 4632"&! W>>VV}V2 j>VV>>VVJ !%! c  !%! b  p(  7& $  %;<*X֖% !!!!!!,7,rWb<)) Ie% !!!!%!!,crWbM)MM^??@7`d?\gOOOOy>*<?v^  <BHNTZ`fl3264'&#"&7367'67675673#''5&'&'7&'677&'67'%%&'&'%6767%&'0/CB^0/AC/88pkTcR|NOOfUip88pqUfONNQaQh!$ b)dLQk KRt!% c'd&//^000NN|P_Pfp88poQ`QyNNP\ Qgp88pmQ \Py,  M N>&`7" bK*V&"g{ M M !)1! ! 3254#"&#%#7&'67&'6767KJ]_VNEWMCe2ntjnti7IL6a] ]pu otpu ot !)1! ! 3254#"3$3&'67&'6767KJ]_TNEAgntjnti7IL6a] Uypu otpu ot %! ! #$''&'6%&'667KJOR`7IL0c Z    "*2:AIX3#''%#&'52#"'&5476!!'5%!!'53'5%3'5%3#'32765'&#"sNN99=>-1\ H0e%FKSwZGr=;=NN$E| 1 ?'_>?@7`d@\hPPPPy?+<>w_VG{?,rCA0:1@7#'#53'&'&54767&'&=33676=3#32654'&i($lm$(($[Uu&tU[$&uU[[UV$|ddb e|$% ZSSZ %_TYYT* $4&#"326&5432%##5!&w衤礡PP䤣L~~| * $"32654&'#5!3%#"5476礡𳉧פ㤤ף |~~L #&$76+"'&5'476%7!ttsstEus pid5s qttrtt<֤ꧦg\ul9S52654&#"#43233#!5 z{ym㗗yyy{(|j#53533#632#4654&#"#*jjoon}mZyH{zF2 4"32654&7#"&54767!!53#5!!3!!#3!!8OO87ON=0LmkL/>Λ2  1O79NN97Os0LllllL1KӘJJ-'<%#5#535&'&'5'73'3#'73'676=35'73'33◰zhNgeMjzzTThOʍ7NjYYӖy?! #!!!'!27674'&#.d ;6zFH%QM_\ǃ$P<C##"'##56'##"/547?^'5@_*SU&/UL ;Yԧ9UP(` XI.s222732#&547636=4'&# #4'&#"*t pz&=<xQ>hG:V Hek%PF5NP B|-&pA&NFX &&5 <F:^;" V gdG7236;2"##'65##"'&5476;235&'&=476e x<JT`(GeRUdfB3 VNTh) @$09=c/Y-k+LdP # [$!9) 33H9EJ3273#"'&546289^.qVVM`1.m}z1BH5B=!]-f273# 5462DTcAD!&+xϥ.6)1#VW2767#73767632#654'&#"!767632#654'&#"!!#"&'7332767!#"&'73si35ư#nnC>(a"Ogj#nnC='a"Ogj)#ܳC='a"Oi35 #ܳC=(a"8<kZ[.'qZ[.'qk.'8<.'/'654'&#"!3!!#"&'733267#7376$32^*5{Ǻ#ܳC>(a"Ogj&WT="*dCj1.'qk`''!3!#"!!#"&'733267#7376$ף'ٽ#ܳC>(a"Ogj'Vjdk1.'qk`Z#"'&547#3267!!7#!7>327.#"!7>3237.#"#3#"'&547#32767jgO"a'=C#f9{5)]+TW&jgO"a(>Cnn#43iO"a(=Cnl%1q'.Djd*"=`q'.[Zk199'.[YR!#"'&547#3267!7!7>;!7#!"!7>3237.#"#3#"'&547#32763jgO"a(>C#'gs'jgO"a(>Cnn#35gO"a(=Cnl1q'.kdVj`q'.[Zk169'.[YD7>32#33267##"'&547!7!&'&#"#3#"'&547#3267|I5*, 4$SHFZV1zI&jgO"a(>C#'d*"=k]A3P+G_U& .Ok `k1q'.s"#"#"'&547#32$7654'&/&'&547>3237'&'&54632#33267##"'&547!7!7454'&'&'&#""1}'|;,j0Zg %5~&tu8-j-&Fge 5$RHFZB PXDA/B,-1+ /Y];-N,, F2H.-)*-RR:-I=ZL}I k]A3P+G_U& .Ok5MD./wyTL15%32767654'&#"3>32376767654'&#" 97./  79\3a-r~:'۹@{2酅$ QkTecE6>h &'''7&'N{O6Q&++3vv-({Qkdf3#ufj2#"'&7676!2#"'&76760 ((21 )*/ ((12 )*##.2!""!2.####.2!""!2.##3#uC!'.#"'67632327673#"'+&'  `?>U$1,) a?>^C@> .d;;  /i99-#~u=3#'#Xttz373-ttp #."#67632"^`v^+\]7667u?>| 32673#"&^`v^+\]7667u?>|A1 2"'&76^8 ((d F.2!""!2.3#3# uSum#!#3uu+_<22I 5 m I 5d*f7DP3!(J]h-d<DJtc_jd^)5P1^b{{;V`h9{HeoDW{V(VH'bg{TT'VX7p'Ls7H7h]GJp553[5^)g^^J8ccccc<L_))))u^^^^^HehXDDDDDD4{VVVVV('VVVVV''''+cDcDcD_{V_{V_{V_{Vj(u(VVVVVd^Hd^Hd^Hd^H'b'b)m)n))7)iDg5{TPTPTP4T_TZ'''O'^V^V^V dV{;{;{;{;V`7MV`7pV`7B''''''9sHeHe777vT{Aujv(^_OdSu))'^YSQ{u}bv {_>7dV7`V'de7##~Jw\KK\K V( T 5 {cD)^V'''''YcDcCL4^Ed^HT^V^V V(d^H ;'<CL4cCcCUU))a]U]U''{;V`7p'a47cCU]V]V^V]VHe{(|c{PVW@71.cUgf{.{i-Qv(OYUK. /ZwHZV'''# 0b&+VRX.<Pi,7'7[',Ug>{{<JRJJu+;(U8+wNJRJ(DR8xpB&,h/?"vpq "\c uu>?'\BpBuu#\FCnWud?'n4#41#(YcM>|G7D JJT.`:o:oc3P~.#c^)c1^bV`Heh{)HegUK/#gU(K/VSH#?3[h<VB{}vYmkFC#VCHh~~t7C&}{m3GB>4${V{^{W{<h+_1._.d(_{;))500;co001^b_V`;o{/ ! ![d/ D+ WV]'''9UV'X{VC8%PppU6D{<-VV {Wg{ a''@v^kV"MM]'TOT ^ _{VV`mHeu{`2T'b)oUUcDcDL4V_Y_Yo]'''^V^V^V/{<;;;/PM6XAY`(mm*y5+ j@ yymz$m2TeoYYYcCVVV_{Uj(j(j(j(j(UUOPd^H'a'b'a'a'a)^SSSP,P,PKP111'''']U]UbXbXJJx{;{;{;V_7pV`7pV_7V`7'{'G'F''hKhL9s9s9s9r9r{{He777'a7pr:CcCcCcCcCcCcCcCcCVUUU)a)1^V]U]U''HeHeHeHegUgUgUgUgUgUgUgUcct}{ccK/K/K/K/K/K/xt}xGx t } Fx v###_#_####+xt}oxVVVVVV^t }x}ZCCCCCCCC? t }xgUgUK/K/##VVCCgUgUgUgUgUgUgUgUcct}{ccx t } Fx vCCCCCCCC? t }xgUgUgUgUgUgUgUcccccnK3Pn######))nHeHe^.RoCCCCC~VJJo8o%8l33V 33g855555V55v55^555555V55Hu>4'b<^^^^V^Lu#h33^5V=j+// u/++* xZ +5''''''''''''''''''''''q''''''''''llgg'''''''''''''''''pprppppppppp7p7Tpp''''3'''ppppp'''',,,,,,,,S,,,,,C,,X,,B,,X,,x, /+/+/'''' ,HVV4ekC=zpBn 79k:;<&:$7$9$:$<$I$W$Y$Z$\$$$$&$'$:$$$"$#%&%&&%*&%2&%<%&%&%&%&%&%&%&%%&%&%&%&%:&&''&''9(&))))))$N)Du)H)R)N)N)N)N)N)u)u)u)u)u)u)u))))))))))))**&**<**:--a--.k.$.&.2.8.:.<.H.R.X.\}................................}.}......0.1.:/7Y/8/9 /:N/<}/\/////}///&Y/0/:}//1}1}1122K2292;3a33a333$D383D3H3R3V3D3D3D3D3D333333333333333333333333!3#3044K44&4&57595:5<5D/5\55/5/5/5/5/5/5/5&555&5:5566K6666 6"777777$77&7Da7Fa7Ha7Ra7Vk7Z777777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7!k7#k7&&8D88D888$8-8888899D992929$u929DD9HD9L9RD9X}9\9u9u9u9u9u9999999D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9}9}9}9}999D99D91}9K9K::k::N:N:$:DN:HY:L:Ru:U:X:\::::::N:N:N:N:N:N:u:Y:Y:Y:Y:u:u:u:u:u:u:::::::Y:u:::1:&:&;;$;&;2;;;;;;;;;;;;;;;<<<<<<$a<&<Da<HN<L<RN<XN<a<a<a<a<a<<a<a<a<a<a<a<<<N<N<N<N<N<N<N<N<N<N<N<N<N<N<<<N<)<1N==IIIII&INRUUY Y Z Z [\\79:<IWYZ\&':"#79:<IWYZ\&':"#79:<IWYZ\&':"#79:<IWYZ\&':"#79:<IWYZ\&':"#&&&&&K$9<:}}K9;K9;K9;K9;K9;K9;DD$-DD$-DD$-DD$-$a&DaHNLRNXNaaaaaaaaaaa<NNNNNNNNNNNNNNN)1N&&9&&<:7Y89 :N<}\}&Y0:}7Y89 :N<}\}&Y0:}O7Y89 :N<2\2&Y0:2 } }  &79:<D/\///////&&:79:<D/\///////&&:  K  6   """K""6" ""&&&&&&$&7&&Da&Fa&Ha&Ra&Vk&Z&&&&&&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&!k&#k&&&0D00D000$0-00000777Dn7FU7Ga7HV7I7Ja7L7M7P}7Q}7RU7S7Ta7U}7V7W7X7Y7Z7[7\7]77::::::$a:&:Da:HN:L:RN:XN:a:a:a:a:a::a:a:a:a:a:a:<:N:N:N:N:N:N:N:N:N:N:N:N:N:N:::N:):1N??f$f-/ffffff79k:;<&:$-/$-/99:9;9<99:979:;9<YZ&:6J22FTjx>fB: XF^$d $ h 6 ^ | 0 r , f  R z  DFx&b*XXz<|2,: :|2b ".v $^jv$0<HT "NZfr~ $0<H&2>JV^ $0<HT`lx&2>JVbnz  " . : F R ^ j !!H!!!!!!!""|""""""""""## ##$#0#<#H#T#######$$$$*$6$B$N$Z$f$r$~$$$$$$$%%d%l%%& &X&&''<'r'((<(())D))*.*P*v**++^++,,h,t,,-&-d-..`..//F/p///00R001141`1122\22333*3R3h3t333333333334444(444@4L4X4d4p4|4444444445055555555556666&626>6J66677j7v777777777778888*868B8N8Z8f8r8~888888888899^999999999: ::":2:>:J:V::;$;F;< >B>J>>>?L??@*@@@ARAABXBBCDCCDDJDDE0EfEEEF F6FFG$GGH"HHHHIIjIIJJ@JJJK(KnKLLZLLMMBMMN N,NVNNNO O^OOPPTPPQQxQQR"RRRnRS SNSTTvTUFUVVpVVWW\WWXJXXXY,YnYYYYZZ0ZPZZZZZ[[[$[2[<[F[^[z[[[\ \6\\\\\]$]\]n]]]]]]]^^ ^^^(^2^<^j^t^~^^^^^^^__6_D_N_X_l_~_____```>`^`h`r`|``````aaaa"a,a6a@aJaaaaaaab bfJfVfbfnfzffg,gbghh~p~x~~~~~ >tހP~ʁ LXd&n HփބF~T Z†.d̈ lxΈֈ8rҊ@px6t :FR^jrzƌҌތ*6BJR^jvʍ֍&2>nԐ$r<ܒX0ԔdДDtЖ8"X>,vΚ>j@ԛ2&d,LhԟDP\htȟԟ(4DTdtȠԠ(4@LXdp|ġСܡ $0JVbnz¯ίگ ".:FR^jvʰҰް(4@LXdrz±αڱ(0>JVbnzʲز ".:FT\jr~³г޳2FbεNft\ .8DP^:R,6@JT^hr|ܺ2V^ $4DTdtļԼ(Bн 2Lξ޾:Zp*HƢnxǂǐǚǤDzǾ "LXȄȴRɖʺ&6P^rˀ˔ˢ˸$2HVlz̴̞̐Hb͖l@lϚ HH<LL>RR@XXB\\DFN    ?w?x?s?}?~????????   0T VQQXggZ\^bhlpSSr   `?v?v?w?w?x?y?y ?z ?`?a?S?ſ?ſ??ȿ v{qwxjy|zzY TUl X <TII0LL2OO4WV6AA:  ` ???????!$%'&0F $&""( ` ?????  T $&HH6   !"#$%&'()*+,-./0  !$'*- 0369<? BEHKNQTW????????¿??ſ??ȿ??  ?݀????""(%$+($.+*?--40/?20?55=86@;9? <<F? 1~3791~37924245:5:668;8;<<7_Bc J  4  L  !! !!"H e  !!2!""[! ~ !R!""r  !j! "'"  !!|!"5"     S (k 0  , "a : & hCopyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain DejaVu LGC SerifDejaVu LGC SerifObliqueObliqueDejaVu Serif ObliqueDejaVu Serif ObliqueDejaVu LGC Serif ObliqueDejaVu LGC Serif ObliqueVersion 2.10Version 2.10DejaVuLGCSerif-ObliqueDejaVuLGCSerif-ObliqueDejaVu fonts teamDejaVu fonts teamhttp://dejavu.sourceforge.nethttp://dejavu.sourceforge.netFonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. http://dejavu.sourceforge.net/wiki/index.php/Licensehttp://dejavu.sourceforge.net/wiki/index.php/LicenseAll Typographic FeaturesFonctions typographiquesAlle typografischen MglichkeitenFunzioni TipograficheAlle typografische kenmerkenLigaturesLigaturesLigaturenLegatureLigaturenFractionsFractionsBreukenAll Type FeaturesToutes fonctions typographiquesAlle AuszeichnungsartenTutte le FunzioniAlle typekenmerkenCommon LigaturesLigatures UsuellesNormale LigaturenLegature pi ComuniGemeenschappelijke LigaturenRare LigaturesLigatures RaresSeltene LigaturenLegature RareZeldzame ligaturenDiagonal FractionsFractions en DiagonaleDiagonaler BruchFrazioni DiagonaliDiagonale breukenZ5  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./012345 sfthyphenAmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandicLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongsuni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191uni0193uni0194uni0195uni0196uni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEUhornuhornuni01B1uni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BBuni01BCuni01BDuni01BEuni01C0uni01C1uni01C2uni01C3uni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DEuni01DFuni01E0uni01E1uni01E2uni01E3uni01E4uni01E5Gcarongcaronuni01E8uni01E9uni01EAuni01EBuni01ECuni01EDuni01EEuni01EFuni01F0uni01F1uni01F2uni01F3uni01F4uni01F5uni01F6uni01F8uni01F9 Aringacute aringacuteAEacuteaeacute Oslashacute oslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217 Scommaaccent scommaaccentuni021Auni021Buni021Euni021Funi0221uni0224uni0225uni0226uni0227uni0228uni0229uni022Auni022Buni022Cuni022Duni022Euni022Funi0230uni0231uni0232uni0233uni0234uni0235uni0236dotlessjuni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240uni0241uni0242uni0245uni0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni0259uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269uni026Auni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02AEuni02AFuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02BB afii57929 afii64937uni02BEuni02BFuni02C0uni02C1uni02C8uni02C9uni02CCuni02D0uni02D1uni02D2uni02D3uni02D6uni02DEuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9uni02EE gravecomb acutecombuni0302 tildecombuni0304uni0305uni0306uni0307uni0308 hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322 dotbelowcombuni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0358uni0361uni0374uni0375uni037Auni037Etonos dieresistonos Alphatonos anoteleia EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni03D0theta1Upsilon1uni03D3uni03D4phi1omega1uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FAuni03FBuni03FCuni03FDuni03FEuni03FFuni0400 afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061uni040D afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097uni0450 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109uni045D afii10110 afii10193 afii10146 afii10194 afii10147 afii10195uni048Cuni048D afii10050 afii10098uni0492uni0493uni0494uni0495uni0498uni0499uni049Auni049Buni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04BAuni04BBuni04C0uni04C1uni04C2uni04C3uni04C4uni04C7uni04C8uni04CBuni04CCuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8 afii10846uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni1D02uni1D08uni1D09uni1D14uni1D16uni1D17uni1D1Duni1D1Euni1D1Funi1D43uni1D44uni1D45uni1D46uni1D47uni1D48uni1D49uni1D4Auni1D4Buni1D4Cuni1D4Duni1D4Euni1D4Funi1D50uni1D51uni1D52uni1D53uni1D54uni1D55uni1D56uni1D57uni1D58uni1D59uni1D5Auni1D5Buni1D77uni1D7Buni1D85uni1D9Buni1D9Cuni1D9Duni1D9Euni1D9Funi1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5uni1DA6uni1DA7uni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1uni1DB2uni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1E00uni1E01uni1E02uni1E03uni1E04uni1E05uni1E06uni1E07uni1E08uni1E09uni1E0Auni1E0Buni1E0Cuni1E0Duni1E0Euni1E0Funi1E10uni1E11uni1E12uni1E13uni1E14uni1E15uni1E16uni1E17uni1E18uni1E19uni1E1Auni1E1Buni1E1Euni1E1Funi1E20uni1E21uni1E22uni1E23uni1E24uni1E25uni1E26uni1E27uni1E28uni1E29uni1E2Auni1E2Buni1E2Cuni1E2Duni1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Auni1E3Buni1E3Cuni1E3Duni1E3Euni1E3Funi1E40uni1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Auni1E4Buni1E50uni1E51uni1E52uni1E53uni1E54uni1E55uni1E56uni1E57uni1E58uni1E59uni1E5Auni1E5Buni1E5Cuni1E5Duni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E68uni1E69uni1E6Auni1E6Buni1E6Cuni1E6Duni1E6Euni1E6Funi1E70uni1E71uni1E72uni1E73uni1E74uni1E75uni1E76uni1E77uni1E78uni1E79uni1E7Auni1E7Buni1E7Cuni1E7Duni1E7Euni1E7FWgravewgraveWacutewacute Wdieresis wdieresisuni1E86uni1E87uni1E88uni1E89uni1E8Auni1E8Buni1E8Cuni1E8Duni1E8Euni1E8Funi1E90uni1E91uni1E92uni1E93uni1E94uni1E95uni1E96uni1E97uni1E98uni1E99uni1E9Auni1E9Buni1EA0uni1EA1uni1EA2uni1EA3uni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED8uni1ED9uni1EE4uni1EE5uni1EE6uni1EE7Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni200B afii61664afii301afii299afii300uni2010uni2011 figuredash afii00208 underscoredbl quotereverseduni201Funi2023onedotenleadertwodotenleaderuni2031 exclamdbluni203Euni2047uni2048uni2049uni2070uni2074uni2075uni2076uni2077uni2078uni2079uni207Funi2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089uni20A6Eurouni20AFuni20B4uni20B5uni210E afii61352uni2126uni212Auni212Bonethird twothirdsuni2155uni2156uni2157uni2158uni2159uni215A oneeighth threeeighths fiveeighths seveneighthsuni215F arrowleftarrowup arrowright arrowdowngradient proportional orthogonalangle logicaland logicalor intersectionunionuni222Cuni222Duni2242uni2243 equivalencehouseuni2308uni2309uni230Auni230B revlogicalnotuni2311uni2318uni2319 integraltp integralbtuni2325uni2328 angleleft anglerightuni237Duni23AEuni23CFuni2423upblockuni2581uni2582uni2583dnblockuni2585uni2586uni2587blockuni2589uni258Auni258Blfblockuni258Duni258Euni258Frtblockltshadeshadedkshadeuni2594uni2595uni2596uni2597uni2598uni2599uni259Auni259Buni259Cuni259Duni259Euni259F filledboxH22073uni25A2uni25A3uni25A4uni25A5uni25A6uni25A7uni25A8uni25A9H18543H18551 filledrectuni25ADuni25AEuni25AFuni25B0uni25B1triagupuni25B3uni25B4uni25B5uni25B6uni25B7uni25B8uni25B9triagrtuni25BBtriagdnuni25BDuni25BEuni25BFuni25C0uni25C1uni25C2uni25C3triaglfuni25C5uni25C6uni25C7uni25C8uni25C9circleuni25CCuni25CDuni25CEH18533uni25D0uni25D1uni25D2uni25D3uni25D4uni25D5uni25D6uni25D7 invbullet invcircleuni25DAuni25DBuni25DCuni25DDuni25DEuni25DFuni25E0uni25E1uni25E2uni25E3uni25E4uni25E5 openbulletuni25E7uni25E8uni25E9uni25EAuni25EBuni25ECuni25EDuni25EEuni25EFuni25F0uni25F1uni25F2uni25F3uni25F4uni25F5uni25F6uni25F7uni25F8uni25F9uni25FAuni25FBuni25FCuni25FDuni25FEuni25FFuni2600uni2638uni2639 smileface invsmilefacesununi263Ffemaleuni2641maleuni2643uni2644uni2645uni2646uni2647spadeuni2661uni2662clubuni2664heartdiamonduni2667uni2669 musicalnotemusicalnotedbluni266Cuni266Duni266Euni266Funi27E0uni29EBuni2A0Cuni2A0Duni2A0Euni2B12uni2B13uni2B14uni2B15uni2B16uni2B17uni2B18uni2B19uni2B1A afii10063 afii10064 afii10192cyrBrevecyrbreveuniFB00uniFB03uniFB04uniFB05uniFB06uniFFFD dlLtcaronDieresisAcuteTildeGrave CircumflexCaron uni0311.caseBreve Dotaccent Hungarumlaut Doubleacute@$d@$ 'd']}  22GG}  2d2dd%x %K.%x @@%0% @@   @I o} @ :]%]@%@0d0 ddl~}~2}|{|{zyx wv wvuv utltsrqp qp p@o}nm>nkm>lk llk k@jddjihihg]hhgf%g]g@f%eddeddcba`_.`_.^]\K[}ZYDXWVUSdRQ2POP}ONA@BL JdI"IH2GGFE EDCDkCBCBA BA@ A @ @@S?>->M=<=K<; <<@; :9:]98987 654543432 321 2 2@1 0/0D/.//. ..- d-,+,K+"++@* *d)(0)A(-(0'-'&:% %]$#$S#"##@"! !]     @#$0S-0 k@-B d-    @    @8k d } d2}-2- Sd+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Rl       !! #" >> ?? @@ CA ^^ __ `` aa bbcc gdkh qm srutvv zx {{}  qm }t    ʀ    //                    %*&-, F1 GG]H ^^ __ `` aa ib jj kk l ((4*micropolis-activity/res/dejavu-lgc/DejaVuLGCSansCondensed.ttf0000664000076400007640000130003410724145723024541 0ustar simcitysimcityPGDEF<<\GPOS^GGSUBCLJOS/2c~SVcmap)T8Bcvt i9Y|feat[|@fpgmq4vj[gasp\h glyf\theady96hhea 1-4$hmtxKGX3 kerneo:x<loca4v3$maxp1  morxt@name +[Apost}֨{Jprep;whpropϵ6}\ >ijjkpqqruvvwyzz{}~        QRRS\]^__`abdenopqyzz{{|z{{| / 0 9 : j k q r s t ~   zDFLT&arab0cyrl:grekHhebrVlatn`kernmarkmkmk" $"A9$*LC)z^`8z l " J \ b  2:T8 ~F$nx`r :TnB  \ b !R""",##$j$%%0&&(&''(|&$%*K-r294K7D9:;< R&Y\99999 &&&&&K&D: i$9&*247a9}:DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz     " ( . 4 : @ F L R X ^ d j p v |     $ * 0 6 < B H N T Z ` f l r x ~ IIIIIIIIIIvv[[[ [=Q4v3w{b{K{,{//{H{={b{0{{{={!{%{#{{b{=={L/{H{{={}[x[AQ{44c3#w{KwH{{vv[K{/={F{{{yb{%{{{{{{{{,,{b{%{%{={/{Y{p{{{H{H{H{={{{b{{!{${1{[{{{{{{={={!{!&{{{{-{${ {b_q/f{{,,{{{>!={ H{={_{AF{{ ={1{b{5{={,{{e{%{`{{>>\={5{{b{b{/b{{b{vV[0,{${ {{K{{{A{_{{{A{={Z{b{b{{#%{Z{{K{K{{{{{{G{b{{//{{Z{"{R{[b{_{4{_{H{{ {!{z{z{{y{t)t%{{!{[_qe{=!{{{O$= D]$>?ABCDF  GI55JBBKHILPPNRVOX]T__Zff[ij\lp^txc{{hijEnGh4LRSWWYY[[]]eeruwxzz~~$'+,.13!!4..5;;6FF7LL8PP9yy:;>BCDEFGHeeJ . .K ` iL V X Y  "]^# t ~%0 "(.4:@FLRX^djpv|4{4{4{4{4{4{4{4{4{4{4{4{4{4{4{4{4{4{o4r4r4{r4{4{4{4{4{4{4{4{4{4{4{4{4{4{4{4{4{4{4{4{4{4{4{4{4{Fvz  &,28>DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz "(.4:@FLRX^dIIIIIIIIIIvv[[R[V[=Q4v3wqb(RbRbRbb=bRGRb!%#R==HRRz#RRbvv[RRR=FKbR%R,R,Rb%R%=RbbRYpRRRRHRHRH=bRRR$R\5RRRRRRR==!!&RRRR-$ b_RfR"GRR,RR>R=[b!)!qb[b_=!Rb"$= D]$>?@A  BTTCYYDllEvvF{{GHEKGh55;;!!ee . . ` e g i   !" &,28>DJP4444444444444444444444444444444444 T bR  !" &,28>DJP4444444444444444444444444444444444^ *V\bhntz "(.4:@FL4h4h4h4=444D44444h4h444h44D444h4h4=44D4D4444444444444444 ]^ t t! v v" x ~# ]^ t ~!, $*06<BHNTZ`flrx~4{4{4{4444444{4{4{4{4{4{4{44444{4{44444{4{4{44{444{4{4{4{4{4{4{4{4{4{4{ vDFLT&arab6cyrlBgreknhebrlatn MKD SRB $     DNK   aalt\aaltdccmpjccmppdligvdlig|dligfrachligligaligaloclloclsaltsalt     &.6>FNV^fnv~ x*H.dB<<<,>LM%%ZZ R$=IIKKLMOO      ""$$&&((**,,..0022446688:;==??AAHHRRTTVV%%ZZ&  dpz "(.4:@FLzvqj{d) r Qy2 ( oIO nIL kI qWIV mO lLI pWA(:FPZfr "  "z$;RVo0p(/_FcXbR")567DFZD&.6>FNV^fnv~~~||~~ "}}&.6 "UTVRSXW(.5;CI  D    -O  -DO UTVRSXW(.5;CI LM%Z w u x v { | t } y ~ z 33f P PfEd@ m`< ~AIMNSX]bu{~#+[w{EMWY[]} ' ^ q !!! !!!!!!"!'!+!.!2!5!;!K!"="""""""### ###!#%#*#}##$#$i&&&'' '''K'M'R'V'^'''''())*****+,j,w_ CLPQW\`tz~&Cw{ HPY[]_ 0 p t !!! !!!!!! !&!*!.!2!4!;!K!S!"A""""""###### #%#(#}##$"$`%&&''' ')'M'O'V'X'a''''())** *}**+,g,u_|tYVM87_][WVUSPOLJHED?0) ~^ ZYWVUTQPNKJ)"@+cL_Q k u  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}byqz5fqu-J3T99NR7s`s3VV9s3D{o{RoHT3fs +b-{T#\q#H99`#fy```{w``b{{Rffw;{J/}oo5jo{-{T7fD)fs04 <, %Id@QX Y!-,%Id@QX Y!-,  P y PXY%%# P y PXY%-,KPX EDY!-,%E`D-,KSX%%EDY!!-,ED-,%%I%%I` ch #:e:-[!%!!\4r) %3#3#qe#!#J++|!! !3!!!!#!#!5!!5!K=]_]J]\]^=LE\aabbN!(/#.'5.546753.'>54&oZ__\dǵĸZSKKSZimerto---@A$*.U# jXV`OnZXher #'3"32654&'2#"&546"32654&%3#2#"&54673#'#"5467.54632.#"RLUA5< ^S]vyx+-ȥKLN>^v5#QX?@Yr~YW׀c?}<$$/1oX3gK#J+< #&547;1 3#654wvv<:6Jc %#'-73%cC5f4C4/f.bybcyF !!#!5!P Ӫ--73#ؾtJ@Z@!!Z73#žBm3#ԙ,my "32'2#"JP3343ssyz 7!5%3!!)B)sHHժ%!!567>54&#"5>32bzgf.WEyUlnO>R񪪪w:mIwBC12\p(#"&'532654&+532654&#"5>32삓U`LbKggP%Đ%%12wps{$& Ѳ|Z. !33##!550忿%3`!!>32#"&'532654&#"(O(U^Q`IKժ 10$&! $"32654&.#">32#"!2`zz{DD 5`.D;y$&W]yb!#!`{V+} #/"32654&%.54632#"&54632654&#"JutAvuuvŚV г "Əُatttt$7532#"5432#"&2654&#"ED 4aE{{z$& V\s[#73#3#ؾ## 3#3#ؾtJ#٬@^F 5E_~Ѧ`F!!!!~~^F55~//mR$%3##546?>54&#"5>32`3QQ3.vaGXU\AQO+#eVY5^1YnFC98ŸLVV/5<4y L32654&#"#"&5463253>54&'&$#"3267#"$'&5476$32oonm6]š]599^oVhb^t^Qqssxzqt1GoCGHMIKL ߱kPA@fjhmWQoag}}IJ}b{ !3#!#v{z+n !2654&#!2654&#%!2#!k# =sp݇f>orqp ˘g.#"3267# !2\uu\_v^2xb_^^_HHghG3 !%! )koum{/w.,~ !!!!!!QeժF !!!!#ժH7g%!5!# !2.#"326Iic;de}aSUmnHF_`% 3!3#!#ld+9k3#+fk 3+53265E8yc 33 ##[e{wH13!!ժ ! !###WX+ 33##T+gD "32' ! RSLHH[[bb32654&#%!2+#kf/ϒgD "32#'# ! 9SRLHHab[#.+#!232654&#2;n8ĬB}lƶu䄆~hb؍Oy,'.#"#"&'532654&/.54632gUkm`sogzn̵_76vce+ٶ0/EF~n|-&l!!#!p##ժ+332653#"u\*$!3 3+= 3 3 3# #=+6 3 3 # #tNPP+3{j3 3#tr$f9R !!!5!hfQ՚o!#3!~Bm#ԙ,m1!53#51ޏF # #\ttu-!5BIf#Jfvn{ %"326=7#5#"&546;54&#"5>32xɛtd8{薈VL[Q3f{bsٴ)Lfa..''. 4&#"326>32#"&'#34oo4/Rdaade{.#"3267#"32FHHFESM5++++$$>:#e3#5#"3232654&#"E4pp^daDDae {!3267#"32.#"  `XY` z ^Z44*,8 Cė*#"!!##535463ZE烈Phc/яNeV{ (4&#"326#"&'5326=#"3253EWIIJ3pp3=,*[cb::bc#4&#"#3>32po;j\edT3#3#`VT 3+532653#?,^E`a(& 33 ##-i#T3#g{">32#4&#"#4&#"#3>32?ufjgk9mn|v\`gb|{#4&#"#3>32po;j\`ede{ "32654&'2#"498V.{%#3>32#"&4&#"326N4oo daaeV{ 32654&#"#"3253#44pp4/daDDad{.#"#3>32B'4w*˾`fccg{'.#"#"&'532654&/.546320FQ{|Y8Qa\Wu~[9ʹ\?((TT@I!*##55YQKP%$1!!;#"&5#53RUCgyyN`>`332653#5#"&po32326E^Xc  TPY_Wc UM1OD;>MSOE<>L #53#3ͷ+e!%.'>7#&73bCz=?{A:|E\\B{X⸹)**'# 32!t.#"!!!!53#535632Ez7i`Գ7))׏/яTRC#/7'#"&''7.5467'7>324&#"326"g" "$g5h74l7e!""#h2h:6iSfefes;w>?s9q(&%%s>v:@t8s'%$|pprIJ!#!5!5'!533 33!!vLUSLu9{3{JD{3##  R=E >>54&.#"#"&'532654/.5467.54632U97}88K3Wa vST84AON4\fsSR55A.Z.L-[.K''PGZsweZ54m@''TLf{xf[1,pEF3#%3#!5/I2#"&'&547>"3267>54&'..#"3267#"&54632bbaabb툉bbaabbvTUVVUTvvTTTUST͗32"326=}ki'Stii8z>B>qXJ]uP{@p?Dq[[""CO@Mr#  5 5ZZ#RRF^!#!^Z@!!Z5/8L"3267>54&'.'2#"&'&547>#32654&'2#'.+#vTUVVUTvvTTTUSTvbbaabb툉bbaabbpnncOP[_V=){u5A1;f^^^傁^^__^]⃅]^^gnmmmmnnmmmmnb>KL?gwyVpMI`3Db!!u "32654&'2#"&546HccHHcdG9k&*)yyooPOmmOOp1.-rBF !!#!5!!!P  ~}}To!!56754&#"5>32~96^M.nAEx33rn81^BQ##{l0X(#"&'532654&+532654&#"5>32R[3q?/kJ-Y[&V H<9 NPOONN; !###.546:fNݸHF3#žFu{!#"&'532654&'20lj)N'C*56&)>i0Y[ 0.W={ 35733!| c)t'+nV!!2#"&546"32654&}k6_qr^^qpP{ݿܾs# 5 %5 ZZ#^R^  ^R^  {'/d&{3{&{'3tdX'/d&u3N $33267#"&546?>7>5#53«1RP5.vbGVU]APP+"DeWX5^1YnFC98ŸLVV/5<6k&$ wCuk&$ uCum&$ xCu^&$ vCuN&$ tCum !4&#"326 !.54632#!#P9:NO99P78hg96߽{zZ?YWA?XXN)sIsrFv)!!!!!!#!|f%3}ժF՞gu&&zk&( w(uk&( u(um&( x(uN&( t(u5k&, wuk&, uu$m&, xuN&, tu ( ! )#53!!3 !vm{.~.,^&1 v~ugDk&2 wugDk&2 uugDm&2 xugD^&2 vugDN&2 tu?   ' 7  ekccjfjL57y5yy5[O + 324&'.#"&5!27!"&''={8U$l7V##xFGSuN\FHsR\X@CHp@CpDfbMKYg[KKXk&8 wpuk&8 upum&8 xpuN&8 tpujk&< uu 332+#32654&#䶶'ђ5/4632#"&'532654&/.5467.#"#Ż4:4Vʾ:zBH~;hl5[SVNvfuzqs`/Q*%jd_[?T>7;[gpnf&DCJnf&DvJnf&DJn7&DJn&DjJn&DJn{3>.#">32!3267#"&'#"&546;54&#"5>32"326= { =Bw ^ZZ`EBÀ薈VL[Qɛtd0Z^Z55*,ywxx..''`f{bsٴ)eu{&Fze f&HC}e f&Hv}e f&H}e &Hj}|f&C41f&v4 f&4 &j4e(.#"32654&#"432''7'3%-O%0qg/&r,ü޼z&77kc\̑oab7&Qef&RChef&Rvhef&Rhe7&Rhe&RjhFo 3#3#!!-~oA@& + 32654&'.#".5327#"&''.J%]:R&]8p10T<}V/1V9}V!*(Ou))Hn.Mw834OMx43Nf&XCof&Xvof&Xo&Xjo6V f&\vUV.%#3>32#"&4&#"326N4oodaa6V &\jU1'q;$n&qCD'J$n&GDu'$nu {'Dgk&& uuef&Fv{gm' xu&ef'FgP' |u&e'Fgm&& yuef&F{&' yneF&G s (ev$!5!533##5#"3232654&#"E%4ppN}}daDDa3'q=(e 'qHm' {*u(e H'HP' |*u(e 'Hu'(eu {'RHg&( y/oe a&Hgm' xu*eVf&^Jgm&* {ueVH&J}gP' |u*eV&^Jg'*eV4'| Jm' xu+m' xuK3!533##!##53!5Ll9Ql)#4&#"##5353!!>32)oppp=;i\zzed9^' vu,*7'41'qC;,'q4*m' {u,H'4u't,u'\LmP&, |uT`3#`f'- ,VS'MLf#m' xu-V f'4' .&'5 N&` 33 ##-`!l' uv/l' uvO'% /z' O' s\/' sO'yw/D'ysO 3%!!'7HFo;jn 37#'7pEoBZjXjl' uKv1m&v<Q' 1{' Q_&1 yvgf&Q''Q3yV33+532765#JI^"#g}``01}V{+5327654&#"#367632JI_""po;PQjYZH``01`e22wxgD1'q ;2e&qhRgDm' {u2eH&hRgDk' }u2ef'Rg>!!!!! !# !3.dBzn\t !tժF|pm|e{'3.#"!3267#"&'#"32>32%"32654&V{  _YZ_I@~~^' vpu87&vX1'q;8&qvXm' {pu8H&vXK&8E&Xpk' }pu8f'Xe&8uk`&X=t' x\|:Mm'$Zjt' x|<6V m&U\jN&< tuRl' u v=Oym&v<]R=' |1b=Oy&]Rm&= yEuOyf&]*!##53546;#"oZ"#яN()g.,4'&#"327667632#"'&'##5353!!KKKKKKKK4POorssroOP4$/tssttsstRd0110d}})!2654&#!2654&#%!2#!"#546# =spwj݇f>orqp ˘0_i1Fn.&67632#"'&'#!%4'&#"3276N4POorssroOP43KKKKKKKKd0110dtssttsstn 4'&#!!276!2#!#GF#FG,DCDCD.>32#"&'##34&#"326N4oo4I3daadDg>3 !"&'532#"h]y1_w_[uu[bGGaaHH_^9'(9^_gd+676;#"&'&#"32767# '&76!2K\E8yc\giuz{{zuig\_kkvί2xj bz_//ٜ//_H$$gh$eS(676;#"&'&#"32767#"7632?J?,^#"FGFHYYYYHFGFEJKSAoS`10+qrfrq+$> (y3 !%! )"#546oum{wj/w.,~0_i1Fn)!"!!"&5463!!u #ݓ,#+e!5!#5#"'&7632 76'& E4OPosrrsoPOKKJLLJKd0110jtssttsseVc-3254'&'&7632!"'67654'&#"\i{{}{{0Dsl=2MLNRWr9Fu\0%p ̥@$OFIqrs`g u !5!!5!!5d+iD!#"5>3 ! 7327i~ed;c 嶶   2`_FHg[ (.54632.#";#"3267#"$546vPhgJbK_U%!| &${spw21%%ݐf!!!!+53265E8ycժHV#"!!+53265#535463ZEYFPhc뻫Ph*Ngd&%!5!# !246;#".#"326Iic;Q>E8yce}aSUmnꪖ_`%R%27654'&'3#"'&547673y1'.'(.(1]<*DZ[C)=] B9Iy\\yI9B z^ȮwBAWWABw1E4'&#"#34632;2?53757537535735?654'&'!#'&5ZYjQP;opIJ?ʀ<12g*DE2 ;OO.\$"xw22eby``*/wnqd ,-H$dba21 3;#"&cx9E͸-–  33###53AG67'&#3375_WD0@6;!tH'Cw+1&46;#"3 ##_D-~a#  33###538D6 3''%'3%# 7@ C/2eccŊhah<p'%#"'&5332653327653#5#"'&I?uUV#3j43koJK9mnML|v{z5NNM_`)gb>>f33#+53265T@8yc+V{:gD ! ! "!&327hSRn[ 嶶 b[[T\&2 jX' Rg! #"327&4&#! '&76!2!2tuutƞs|cn婪eW \]L椤}–zz-eV{ #& 7&4'&##"'&7632324NNMM ((p""^|z{{zZJ£JIutntsY_wt10``s32654&#%!2+#"#546fwj/ϒ0_i1FV.$%#46;#">32#"&4&#"326N_D4oo(adaaV/(332;#"'&'&+#326'&+sttZ 1#&D5Xs?CF)kEEqpHqY"$=?5 HI>.>323267#"'&5476?67654'&#"g^}~o==gotlk_`bn65PQVh&&rrƫ->>n~FE/ppٶlm+23cv@@67Z]{'>323267#"&546?>54&#"D\ɉ9[~uW[aQޔ9X{|QF?$%PKQY55##*!I@TT((& V!&'&#"3;#"'&5#"54!23cpkR#!ZINI0-0A3=g)(V\`@o1V !!;+53276=#"'&5#53RU!"g?+`""IIyy''01PO`>l!!##"#546#Uwjժ+Zi1F1!!;#"&5#53546;#"RUCgyyYEcN`NQfl!!;#"&!p#cy9G̸#ժ=–&8M 'p XF;5!#"5475!!! 4':䠲XZa#Laָv5(%#"&5# 764/9xc]WEc;Y-zt5(DWmF 676'#34(.,323#bzgV!#JLyU__lnOB^+@umHLIwKK!!C12\RI`1Sz(2# '&/&53 7654'&#!#!!]uYMI5((5ZYVYZSTDrQ8+lhU)$yy$)UKKKKIJ-%]L`%2#"'&'5327654'&#!53!!_tYLI5(UYZ_KbYZRT8+lhU)$y%12KKIJ&OH$#"'&'5327674'&+#5333dbc|MIHEBKGHY34M8ε}ws}#(rAbLrV.{#36763254'&#"N/yIEF!332lƜz BR1pqWBAVk3#V'lV@3!!!!#!5!5!5!N<<Ķ<<,Ԫl m'?'f'@@'ef'@=Gf'-/VH'M/V'MQOfA'-1V 'M1VH'MQm&$ yEunf&DQ$m&, yu"f&6gDm&2 yuef&Rjm&8 ywuf&Xj3& +81'qo;Z&8 1"&X Z&8 +"&X `&8 +"&X e {3"$ n1&qJ;3"$ n"D 4'q>n'qgj,# '&76!2.#"327675#535!5!3iŲ;wvde}||||aKL<mS*+mn$$F_`ҙ'XXeV{{94'&#"32766=#"32533##"'&'5327675EJKJJJJKJ3pp34rWMNIIJQ=nnnnnnnnOG^[cb::bc+nXF]@,*_Fgm"* yueVc"CJm' y+u.&m"N yugeD'2ee{&sRgeD1'q ;ee&qhym' yEuyOLf&OV'f'; '='']@'e']=Ggk"*Cv@,eVc"Jv\#"'&5!#3!32765\ZW]Zl87;8`Z߀xxv 9dPNOKV%#3676324'&#"k2N˳JL]66uէHW5xz7 GFk' wu1d"QCs" u}n`s" uT}l' uvnc"vA[Ol' u~v@&c"vp"$ ~hznd#"D6"$ zC>nH#Dp"( ~.ze c#AH6"( z/>e H#2H5p", ~zAc#86", z>H#gDp"2 ~zed#)RgD6"2 z>eH#"Rp"5 ~zuc#U6"5 z >H#Up"8 ~zd#XX6"8 zn>H#4Xy,'6cg{'Vl'71'WR16767654&#"5767654'&"567632qXR9?߀`GIVY^fPlkVt[wy@Jl|IPuţ@XKy^qjj=vX{5?:.PB*8hicqMmwqڎ{\(?O]{26767654'&#"5767654'&#"567632@fP<:J48pY@BFWR^GbVXhRml:BapAHyl3HRV+53276=!5!5!!Ag_""]QfP%01oOVy`+53276=!5!5!!xAf^"#|onP%01%P"$@n"DVu"(zeu {"HzogD3"2 Xe1&qh;gD3"2 ^e&R gDO' |t2e&hRgD3"2 _e1&qh;j1'qf;<6V &qU\|p%3254'"632!"'#67&73!./czB/=-- H:EVT` 3+53265?,^E`ae 1= 76'& %67632#"'&'+5#"'&7632;'&  7JLKLLKL4POossssoOP44OPpsrrspPO43KKLJJLKjtssttssHd0110dd0110d^PtsstjtsseV{ 1='&  7+#"'&76325;67632#"'& 76'& KKLJJLK4OPpsrrspPO44POossssoOPJLKLLKLdtsstjtssHRd0110dd0110jtssttss3 #!#'#7'73!x>\V{-?5J+NK;`Y'FF8O ",'&76!27&'32767# '#&#"g\i2xj75Z\Y),B zuig\_kkvկ4iuz{FXh$xYv+!f //_H$$\/ح"+'7&576327&'32767#"'&#"^VLMI))PUj YHFGFEJKS؅2?@YY^N lOU ^q+$Vqrg  33#!!#53w'7!!##!A\2##]?Q.iUYB9XM4bc{=4'&/&'&54632.#"3#"'&/&'&'&'53276-.9DEʹ\DFQ{>>,-8HJnOw&D#Lf@P Wa\YYWu??'K((%$JK((**T@%$!,KL[@~$=&[#5-,O`!;#"'&/&+=!fS,&DbKg@P7QUo`1~$=&[? %H326'&+"5676;2+#vEE>QNFDIIMstts# HI+#qpHqq n-!2#!#53!27654'&#!!27654'&#!spJJ ABBA+#FGGF efp/>78rq88ѐDCBC :!3!33##"'&5#53!32765NiNONNjܕ$}jiij # #VU+B33#3!!!#7#!#!Y;Oܦ::ijF㪾FeB &-1&'&'!3267#"'#&'&3273&#"#fJ dqZCW`XY`oZGb 2-?S4*vy Qd Z 6Z44*,!  C "2Jcf33#+53265#53E8ycHV3#33#+53265#53?,^E(aؤ (#&'&+!!##53!23276'&#2;778ĬB?>l8ȶ:;CCCCHH~h11wp؍]]OCDBC {&'&#"3###53367632!!'KK4TTw ef<Ĥf21{ ,2654'&#"367632+3267#"&ɚ::dST9UTz\[rrKKWK[UVQ+f{b:9ml)Lf01a```FE..'e{53#5#"3232654&#"E4ppdaDDa-{ 4&#"326>32#"&'#34pp4/Rdaad`. &4&#"326>32#"&'#476;#"4oo4JIb"/Rdaad~``04r{ 67632#"'&'5327654'&#"rEIHM쇈TKIFFHFHYYYYHFHF5#$+qrrq+es{'/.#"67632#"'#47&'&323254#"FHY#8B_C9UKHA 2+M4Fw[5++rQ,3H=Y}/)9DhQ#3 :#:9KeV$#"&=#"323;32654&#"?4pp4D_,WVּdaDDad^ؙa=e'$546;#"#5#"3232654&#"E_D4ppadaDDae {"47632#"&'532767!7&'&#"fvvㅆ`ZYZY_\\ O TRzJK^,*4cdWWZZe {5!.#"5>32#"73267f _YZ`z Z44*,#ėo{ 4%6'6'32#"'&'&'&5>3273;#"'&5\ Jz=uTDaWZYZ` ""^'9OJ֊>8E#Z`vg'#d4*,#)u10`Zwh|8wh|w|>#"'&'5327654'&+5327654'&#"5>3273;#"'&5{p|HMKQ@LMSMKFA{i<=?>k@IHWXEfUԦ""_&9OJ:\l%88ZX83,-F@.. NBj10`ZȦFeK|/"327654'&+5327654'&'2# 76WYY^LLFA{h==?>^eg66ep|nrot88ZX83,-F@..NO]@Al>V`33#+53265#53?,^E`(aؤeV& 04&#"326#"&'5326=#"32546;#"EWIIJ3pp3_D=,*[cb::bcaeV` #!"326#"&'5326=#"43!EyWIIJ3p=ͻ,*[cb:*e{%#5!#"32.#"326K![n^TUYGo$$>:77>>VR`# 3#"&54767327654'&'%"_#55#_"<$44$xܱSccS$-EIdccdIE-V`# 3#"&54767327654'&'% A'>>'A <#22#bLx>>xLb-!@2FF2@!-V`332653##"&po32po_E;j\~aedV!+53265#"#46;#"632_D߆_EvЭHa=~a  33###533#`<Ĥ0`<hD` 5!#3!53hܘ$褤C#3327673#"'#&'&#"#67632 "q..R "p..R %$RIJ %$RIJE33##4'#"7632&#"3x70%1FSTK9V# ;#"&5S7l,?|t(L$2#"'&'5327654'&+5!#3!^tYMIUYZ_LbZZSR8+lh%12KKKJ3Lgb&%#"&5332765332653#5#"'&P=XVufjKKgk7QOmmNLy=<b`^zbze32>>Vgb&%#"&5332765332653##"'&P=XVufjKKgk7QOmmNLy=<b`^zbzZe32>>Vg{0>32+5327654&#"#4'&#"#3>32?uUVJI_""fj34kJK9mnLN|v{zH``01NM_``gb>>V{#4&#"+532653>32op?,^E32;#"Jpo;j""^-?``edH10` 33##S`yle{ "!4&267!2#"3;蔔98e`!!!!! '&76!#";z  1ۖ%&"llll"`ݛlklm|73276=332767&'&'&#"#"&'#"'&7676f5)6FE22ED8!6^Vzj# ]\NW   `pB?UO++OU0Kg]pxeY􎃃BdVVWO`%#"/32653#g"26O #˾NO %#"/32653#g"26O #λV`%#"/32653;#"&5g"26OE^,? #˾NaX{.#"#3>32B'4w*˾ fcV{.#";#"&53>32B'D_壓4w*˾atfcv%{3!5346;#"3_DAah%{3!5376'&+532$#"_g@20%P"`#.+#!232654&#+h-BoI^d)ksjt t]:'`iVNM`"`332673#!32654&#IoB-h+`dtjsk`':]t i`MNVcVg{0.#"#"/;#"&=32654&/.546320FQ{|Y8[OD^䣓u~[9ʹ\?((TT@I!* ajYQKP%$V46;#"+5326YE?,_C»Ph)aV 546;#"3#+53265#53#5YE?,_C`NPh(aؤi1Ve;#"'&54'&+532""_,?JI#"YHT10`a(h((VaY V!#"327673## 54;476;#"kpc0INIZ!#3A0Ǜo@`\V()g1^!5!4&+5323#UDgzz>`N1V!!;#"&5#53RUD^ɣyya>`3!33##5#"&=#5!326=$#^l[`3 3#\`8OVF`!!;#"&=!5!fnE^+@~o`ۧa%Oy`!!367632+#47!5!3254fL;Vw4"8Ir^o2|?O`ۢG7W9W`/=3<;4%6]OL` 2#"'&'5327654'&+5!5!_sYMITYZ`LbYZST8*mh%12KKKJbL`#, 76654'&+5!5!2#4'7&#"327 ݎ ST^tZLI#Z$pvYL;*1JJ$8+lgqUeR8y*K/KOH32765&'&#"567632#29M43YHGGFEHIM}bbdrLbAr+#}swtOH#&'&547632&'&#"3deac|MHIEFHFHY34Mws}#+rAbLrOH3#"'&'5327674'&#2dbb}MIHEFGGHY34Mtws}#+rAbLrOLH#47632&'&#"32767#"'&5Oc|MHIEFHFHY33YHFHFEIHM|c@}#+rAAr+#}U-B )2654'&#"47632 '&%47632"'&[ZZ[|Z[¿{p+);U6ccƍffffԜИ.""""./B!!`eK|/";#"327654'&' !"&5467&'&5476 k>?=|pe66ff..@F-,38XZ88torn¶lA@]ONe7'%#5!#"32546;#".#"326K![n2^-_EUYGo$$>:!a>>` V3#33## 54;#"32762CisV&xG`͋BA0 L&` ## 33&L T#`3!!? `JeV` $32654&#"#"32546;#"#44pp4^E/daDDadaOH$32765&'&#"5676323###5329N43YHGGFEHIM}bbdжrLbAr+#}swԤOH$535&'&547632&'&#";3##Йeac|MHIEGGFHY34M8ζws}#+rAbLre &) 76'& %3!!!+5#"'&7632JLKLLKLn4OPpsrrspPOWjtssttssH^Lۓd0110MeLM4@#5#"'&76323!2#"'&'5327654'&+5 76'& 4OPpsrrspPO4`sXNHUYZ_KbZZSTJLKLLKL3d0110d^L$8*mh%12KKKJjtssttsse 3: 76'& %%!332!##47!#5#"'&763233254#JLKLLKLV6%4OPpsrrspPO4?Ojtssttss_ 3<;4d0110d^6[1F.#"#"'&'#"'&5#533!!;5327654'&/&'&54632jFQ|>=,,9IJpnQWT\IIyyU!"g[YZWu??.(9EDɺ\?((**T@%$!,KL[[!&PO`>''M5-,QK($)$JK1V%.!5476;#"+53276=#"'&5#53!3RRNIY"$II?,^"#IIyy!"gN[V((h)``01PO`>''1p5-9D!632&'&#"63 #"'47#"'&5#533276'&#"&57!3RUMIHEFGGHYYYH [DKBIIyy 'KV ''*V5+5327654&#"#!##535476;#"!;67632JH^"#po񦟟NNZ#";PQiYYH``01/яNUV((hce22wxO#5.#"#"'&'#34632327654'&/&'&FQ{=>,,9HJnpQXT^ʹ\YUYWu??-(:DE?((**T@%$!,KL[[!&2-,QK($)$JKe 3!!!+oXLۓ0 333# #333# #1h{iz{h{iz{U=0!#!#!#!#1TTUXrXJ!32653##"'&554'&+532uop32}hFGTbii&eCmpwYYk\g88i~#4&#"#46;#">32}hFGTbi]g<,&eCmpwYYk\xkW6Vr88 3+5327653#nh/-g(<hhx66XVri.#"#3>32*X_ii!jK  qksa97?327653#5#"'&'@Y//ii!45L  98kJa9?7 327653;#"&=#5#"'&'@Y//i+;(f\!46K  98kJ V6Xlx a9N!+33276?3327654'&+rX@?X=>POPPi`"'&4763"3`hHGGHh:OO:PPOP>=X?@X>iI32765&'&#"567632#$l2 9e.,-,+..0N==?`t[@*7K$@ ` XFh_@CiI#&'&547632&'&#"3ra@=>O0..+,-,-f8 !1m[AmC@_hFX ` @$K7*@2% %CG25-5GC'|f33}}|g|f3# #}}fgf3#'#}}ff373}}x;#;z+bqMf3#JۊfIf#Jfv;%#;z+Tq^I#JnvM3#Jۊlc#!!AJ'c#!AJi`#{i`#|!533kj,5!##, 533##5#5x˅j!5!kj)H 332673#"&j WOMW jHKKJLqD)3#q 4&#"3267#"&54632VP9;NN;9Pmghhg?XW@AWX@sss*u{!33267#"&546k('118"=ng/=X.. W]0i7'.#"#>3232673#"&3 # p[R#9!4 "!q\R":Z7IR!7IRPf3#3#zt{fxi73;#"'&5""_&9NJd10`ZȢf '#7'373 STTSaa``i '&73733274ѡ|{~ys/MMm3#nhhiO/2&'&#"#"'&'532654'&/&'&547632,,0.4N'&T$q-.FE{387=:977JOd$a++@?u943 a /$*+MW33 k2-*)*IX01 i #'#37{|{H+iI#&'&547632&'&#"3ra@=>O0..+,-,-f8 !1m[AmC@_hFX ` @$K7*@X!!5!Sn ЈX!!5!3Snz4X!!5!3SnzhhX!!5!3Snz4X%3!5Szpv#qqf3#3# fx.SMv!'&'&#"#67632327673#"&3 #p.-R#9!4 "q..R":7 %$RIJ!7 %$RIJfCebfveQfe[7e)bDqjT|  f)FH_Do&F=je~{632#546?654&#"~e^^sP' k-))8@QZH3UC=A   (6%""($4:(eBfjVfjq#pzD>('H2f#!#Zzͫ{fxx)F'j_)FH qOW(#3t?#55#53ed{53#7"de{z3#:jUCebUveW&q53#5#5zz_&3##3pzz_9p!5!#B{ ko532654&'3#"&7O*) x OS+_w-+76 >&Dzs5"3"'&476:OO:hHGGH>=X@?X>=OPPPV3!5353pGz_V#5!##zV& #53533##zz׈V5!WV '+53276=+JI_""``01V %3;#"'&5""^IJ10``SfC&=SjeC:.(SeMT3#tluzfufqT#pzD> /T#5##{|J9X#"4533273273"16hi ^[j ^[j hRVRjQUe9FX_6FU~9[Se)DTjTBfTf #"'&'.#"5>32326KCGQf F\.GBFJ0ZC iS?| ;73 !;?<6 7=h!5l$hnh5!oĤ'4VV^NO'\\FXY,;$`K?[0n>./T!#u&b9X632#&#"#&'"#7216hi ^[j ^[j hRs '7'77:pWqqWpqWqqWp}`}}`}}`}}`87.54675>54'&'pyIB 2yIB 0PQn +0PQn T: ' f ffCebfve[7eae6Fr uVu&AI#5!#!,h2!5!5!5!kk2xx_3#3#` txh!#!i*>, ]f'73327673#"'&'#7&'&#"#676322f' hf' #$f' (kf' ,1@' C<$n%3!!Drժ !3v&+(R=+gD!!!"3276'&' ! '&76{>tuttttR媩p[bbk,.3#3#U+01 !!!!!!^==qgD23 %!!5 5!!QQpl7j<gD&367654'&'&'&76753#{XuuXXttXێܶ܍ܶWssWWssW6;gF!6'"'&336763#{uc|}cthg椌gHF;&%!567654'&#"!5!&'&576! :YYwwYZAA@@aʦa>”N' tujN' tu(ehf&4 cwhf& H8Vf' :Vf&< Y&H ehz *'&'&3273;#"'&''&'&767$')x7FCEmy@Y$ %OcUK%(U)gir oik%1)0T*Xk[*)V!%#! %&7 54"SLQd^GEdZ%I:FV `3#&+532E;h'V,?LdVD~e-&#"#"'&4767&5!232654'&'&\j{||{{0ClH=1NMMQXq:Fu\0%p̥@$OF(Iqrs`g wh|2&'&547632&'&#";#"32767#"'&546de66ffEXWHI@k>?=&3!uKOxsPWKL,#%5,*3Y'iV{#4&#"#367632po;QPjYZH`e22wxe$!!3276'&#"2#"'&76R>MKB0MH:|{{|z{{zd~uv0` ;#"'&5@ bOcJJ`+.0`b` 33 ##s{`/ZFB?6  # #'&+5;ѰC*`Wie<2~Vh`wB`!367676'&'31vͲlZE`>)&zn`T|p5dwY|rNįt`R&%#457654'&# %&47#5! $wGKBI>&4,ƻKOxsPWKL,#%5,*,X$Rݿ e{RB#`!#3267#"&5!##C-1 (C!lS`PH? XV.{67632#"&'#44&#"32675o4ږfZ#adeR{$"32.#"32#457654'&dMDFHvHLCI>&>:##++LOxsPWKL,#%5,*e[b "32654'&'##"'&764INMG&b{|z{{fnsȷzn휝Z`%;#"'&5!5!! bPdJJ0`b`327676'&'31'"'&50.1`^6 _?)%sZY`+@EvfwZ{sxvdVVh )"276'&'&'2##"'&7673:TVNL?1pw~xw{|];4NLEfˑRh]p[nmNssg.5Ua#&+53;'&,,?:y,,?~0)~dVV`&'&53367653# `vMCov&4|RB+wTOxsPWKL,#%5,*eNeRa#"32#457654'&#"476!h8YYYduHLCH>&3]HqrqLOxsPWKL,#%5,*>)SV'347632&'&#"!!#"'&'53276{V,-,. %%(l4C!}Y4.-*,--+O9Jd >Qoɏ?s K_Y7"'&76'&52c#;vIUR#;vIU[~,`*l#FR`*l#FR#!3opM]fV!#56#'#64?&%&][J2m>+:IKi XL} \4! k!x#&'#&' #'צ@ -sX*ɛiV4#M!P^gKR=4&'##"'&=##"'&477#327676767676QZ2VLz<@;xi??@@gpBA]^捑 J @?G6eV{ 7653##"'&54763JHfTK+KL4OQx{rcнtst1Rd01ȢKL% '676767654'&#"#3676 6<٧AXypĈ{'1qhheF^_{̡E5 2Wzmh~'BC(M&#"3276767#"'&#"'632327654''&'&'&'&547676763267s~2! @5B ardYD/;ILzVtJ9RGD,>j\@$A-:+%)8H[U3&z1D ! ! 12԰.#AL.#^Yq4+& "H4B;;=/?"+VhPGV!# 7654'&#"#676323 7{tbbYU(MH ۄe]6?fضZV{ #"7654'&#"#67632327SSK}H!A~|^yYk}oSKu,2R¤ຐg$5%! &'&#"56763267632'&#" ;!53276/EZ9>fD'+/#Df=6"O>@J?A h=" C(FK#C "&E !!0Q{6%) &'&#"56763267632'&#";!53276P!05v9"$$"9v505AA48=3553gg+$67632# '&76!2767&#"327O2IMnu픒}ogCTb^^^[X-sJV"1Pһ '$Astxsse/&67632#"'&76!27674'&#"3276XB'%ZRlrttr{zh]-VSJ@S?QKLNOOLJK7xJF61𢢜Pһ ''rsstxsst'V?#5####!3>`d`du1U#5####!3ΧΛi_pzppdSg+'&7676'&#"56776327'&'&7W~7V{R'4RJr&V7V{R'4QIr&|YDT|˩hl= pl |YDT|˩hl= pV.{$6767632#"'&')! $'&  7O75rssroOP4L<JLKKKKL%̧fZ#10dX4tsstjtsse{FVTMgD! 76&'&  ! '&76nttlYtttV婪~yev{!&'&#"!!32?#"'&7632v"!Y`\VbV\tECH]`򌍍[b$$ c\\c( {!567632#"/532767!5!&'&#"$$b[򌍍`]HCEt\VbV\`Y! ؜c\\c V.g& ! !###WX!+rV;` !!###r`{`LV.{'4767632#"'&'!!#5#5'&  7Q75rssroOP4L[5JLKKKKLfZ#10dȪpptsstjtssgHg&{yg'yk& wpuN& thuf%+5327654&#!#!5!!!2D7y22po}#xfbhKK"9+Fwrk& u6ug# !2&#"!!32^.2FӐhgսy,6k,N& tufk-K^!5675!32#!% 4&+L\X8Nw +8/XEڦ!!#3!332#4'&+3276ƶ:GGʐIG9dDCDC2#4&#!#!5!!fbpo}#qwrf9+Fk& upuk& whuDm' {u )3!3!#hMM++$n4&#!!26!!2#!#b[,݇@n%3!!DrժZF%!!67!3#!#RLex#WH D+?x4&A(533 ##### 333vhhqdG99dy%(2#"$'532654&+532654&#"5>vm'pyRfѲ|!ĐBY+wps{M(" ##3T+m& {vu.K35675!#!L8NL\X/X++0+gD2#!#l++3g&l7D%+53276?3 3NGE8k*)QNOĵ2&]*jkll 3>54&'$%53#÷÷53+  -6;O )3!33#+;!!"&533!3ǴppRdv+ %!3!3!34+++)3!3!33#++6| !!5!!2#4'&#!!276sC,GF#HG+DCDC&,;n 4'&#!!2763!2#!GF#FG,DCDCc327!5!&#"563 !"'d2澻-`FՎaa_&"3276'&76! ! '&!#3tuuttttt 墢 ﶶL椤kj5L.5463!##"#>#";qvl}Cù7o僆$+wb~n{Dd 7)2#"'&5476$7676"32654&=4Rn0.,(rDu{0w)v ,u8w` 32654&#32654&#%!2#!Mqwwq]ww]b_r~f_ZZ^SJJOgyro`3!!`3``%!!6765!3#!#jR$Xυ:d6(U3Re {H-`33 ##### 333e2fg2f  U Awh|(#"&'532654&+532654&#"5>32{p|HQ@S{iy}k@WXEl\l%%pZXkYF@\]` ##3ե`}`&+` 33 ##-`#D`356765!#!D3=OT~ŷoP` 3 3###`'P` 3!3#!#`7e{R`#!#`3`V.{Se{F6`!!#!6no`36V `\dV (3327&#"#"323>32#"&'4&#"326oXggXo4uKїKu43vKҖKv3oXggXo/Ǩ<9^N5=L^^LN^Ǩ5`[` )3!33#`33R`!!"'&533!3ˉ\S.0^ _Vu;;` %!3!3!3`3t`)3!3!33#`333R7` 2#!!5!#32654&eqvv͓7_ZZ^ `'`4&+326332#!!vqqvfLZ^_n7e{73267!5!.#"5632#"'f 窄VړiVFH{ "32654&632#"'##3܅ ¾.`A>`!.54763!##"#676#";_eaa]X559//0l9::9l iQP%$q2^66..TS//e k&CQe &j$V(#5353!!67632+5327654&#"#&=cg{VTL 'j4VTMD`2#!!56765!264&+OU3=qwwqoP~ŷ7_^ `32#!!#3!264&+9rwwr`7`73_^$#5353!!67632#4&#"#&$& hi|UV!`bf$*$CW' 5 QthfIP%27654'&+5327654'&#"5>32'&'&#"32&'&#"'&547632 373O50FA{i<=?>k@IHWXEff66ep|֗F6C X`~J)T55OwW{/4M.]88~}ݙ1-[L83,-F@.. NO]@A`#Lc " 8Q;D$UxgF+dVV`KgDje{   $"!&!26Sb:  {40ʜќ2'&#"#3 699>B@Lg "C=2-{2'&#"#3676<.24#!;6B@Lgk  "C=2-f#Hee/gv)R%327654'&+"'&'&'#";676762# '&76!36767623 !#"'&'&fttf 7 *guug* 7*Ĉ<) 7 ; 7‘  tӪ ҫ e{&P%327654'&+"&'&'#";67>2#"'&5476;67676232+"'&'&(AMM9( '/( )@NMA) (/ *l{{h* / )l{{i) / `ta  _tp_   颈   袉   gR#=yd#0gR3 @#'##'##'3276=332764''3#"'&'#"'&4673Z-------Z]Bpg@@??ix;@e'+#!2'674&+327'7~_qst g@`#u~{Sqrے-,9/~V.{)%'7654'& 32'#"'&'#367632~c|GJLKKKK?dOaoOP44POorss ]ststsjts].01d d013!3!r2$o3!3!C`:33? 3!!!!##@uDru>2o` 3#53!!!!uuv۪ fR#!!!2+5327654&#kDrwfbD8x31op9ժFwrKK"V`#!!32+5327654'&#M?JJIc"",y`GQ``07 )5%3###### 33333`%hŪA99ddG-.`%3###### 33333bfg2feL  U AAyu%&z3wuh|&z%3###33G>{[eA1wH+`%3###333L#`'#3733 ##EEZeZM1IQH+`#5'#37573 #[::[Y->`8R#53533#3 ##[e{QwH16&3 ###5353!N-pp=#zz- !5!3 ##jL[e{+wH1%` !5!3 ##~-ƚ#j!!#3!33#l9dA`%3##!#3!3奥L`3D #!#3!!lD+9d6` #!#3!!奥J`3ͪf#!#!!2+5327654&#lwfbE8y22po9+wrKK"Vk`#!#!32+5327654'&f?IIIc"",y:`GQ``07&.g-1?%&47632327#'#$'&76!2.#"32767654'&#"ZWU[CliL@BJ=E婪2iytUSmz{utB+W&'BB''}}֝s?] bh$">7^覤.$?xEGEFyeR{ ?%67654&#"&54763327#"'#"'&7632&'&#"3M+%'.FFvvGE{#3A[Q8?J{06|{MIIDD9|| {%."'&=3367632!32767'&'&&'&#"6PV+3Civw \]`ZYXY^c[IKzTS RZF1!&łZdc4*ZZWWu_'v> u{'?k,5m' {u-H'f32+5327654&#!#33e}fbD8x31op[qwrKK"9wV`32+5327654'&+#33!AJJIc""'~ꦦwGQ``07$)`0Vj!#!567!3#LwX=iy+8.%5ժV)V` 3##!56765!oΥjT6XVdžf%!#3!3+53276lD8x31h_9dKKV`!#3!3+53276n奥JIb"`3``07Vj!#!#3!33#ly9dժVV`!#!#3!33#奥o`39V;%!"'&533!3##ebppRwr7ٟd+`%!"'&=33!3##ˉ\S.0^ p_Vu;;V8%3####! !y WXVVg`%3####3 3nΠꙙV'P`TO'Jn&GN& tCun&jJn{m' {*ue H'iDQe {iDN' tuZe &jL[5N' tu-'jy%N' tuwh&j4yyOL`O1'q;'qN' tvu'jgDN& tue&jhgDve{2gDN&j tue&kjhcN' tue&jD1'qg;6V &qUDN' tu6V &jUDk' }u6V f&U;N' tQu&jU %3##!!kDrAժo` %3##!!MߙL`N& t%u &j< 3!!"!"&5463!BGG$ܒGG-CD#CD+fe` ;#"!"'&76;8;ts<8zfhhhmLZ+.i.*RRPRU 0!"32765#"'&5463!3327653#"'&ܒGGGVtCN ._Uct{-8/e_58c^\,CDP_m}`61f[JJOZxx9e` 0#"32765#"'&5476;3327653#"'&s<8;9`S(,$& hi|UV!bb[JJOZxx8Pa|54'&+5327654'&#"5>32327653#"'&FA{i<=?>k@IHWXEff66eu9>87^^68Z]eX8f83,-F@.. NO]@AHOHXDEORAsxueV)!#4'&+5327654'&#"5676323#SSHGIJKggZ[Pyy@@vJIJK;$& hi|UV!baV|)%3##4'&+5327654'&#"5>32gFA{i<=?>k@IHWXEff66er<>FX83,-F@.. NO]@AIKj0!327653#"'&5!5679/d_59c^_cLwX=i[JJOZxx}q8.%5)=` 327653#"'&5!56765n]]68Z^dXjT6X`WORAsxue{\P`327653#"'&=!#3!n\^68Z^dY奥`WORAsxue{`3g*e{327653#"'&5!5!9/d^59c^^c#p+[JJOZxx}qw`327653#"'&5!5!987^^67Z^eXnVFEORAsxue{~ Rwh|86 ` !#!#3! \C]z[`G `3!!!!!!!3 *>wir`Ӕ&n{,3>%#"=!.#"5>32>32+3267#"&3267%2654&#"Cv ^ZZ_EB薈VL[QE{ EțtdZ^#Z55*,ywxx..''``f{bsٴ)7` #%254+3#4+327#!5#53!29ԧr~foof_ڪrĐe{F`32654&#%! )N~Ŷ%Ǔ ` ! )#53!#32654&+%燇U~Ŷ~`1` !!!!!!~*?w`Ӕue|1#"&'5327654'&+5327654'&#"567632ye66gfEXXGI@k>@>54& #.5432I'''' tNPƳPNM]*U-Y + 3267>54&#"'>32'#"5467'7S&$ѴGi%$ӾAc)El./GEl/.F)gA\*g>}66]C_56`?`e{ '25!.#"5>32>32#"&'#"7326726&#"f _YZ_I@~~>`-`!&'&'3;3!"'&546#"310//955Wb`e׳k8::8kS66^2q$%PQicQ++ST**6``$"&5# 65#g~ç};ML%!5!2654&#!5!#[\YL||BtM,5353!5!2654&#!5!#2\[Zxzʤ||Dv*3{"#!5!2654&#!5!2654&#!5!#Yok[[\Yp Erurw?yz6 `YM`ZOy`]l[`73264&+5%5!2 '|swobs ?dBdd>Jm7{3!!{/6 `I`!'H`D`k`Q`367653#5&'&3ͦL4M{cb|M4K`1Ms,}},uM$`56765!#!$0OW`H!{vE^ +"3276=7#5#"&546;54&#"567632~11J>W45hh$56Lcs_V6430:653DDE7@==d+_9l[il GN ` FGE^ -27654&#"367632+32767#"'&~11J?V45ii$56Lb:9HG_V6430:662DEE7@=32#"&'#35//0..0/ eEtHHHHtEe jjc@AA@@AA86Z[[Z68^g?x3#5#"'&76322764'&"ii!13FsHIIHsF31//0//0/S^8Z[([Z@AA@@AA?#!32767#"'&547632&'&#"!::h<9788;;=XYTTKJh/.NW452j88a WW[ZQRmT3210Y?5!.#"5>32#"&73267@ug=p89v32?DA@n+1087-.)CO&&BXTM)-01U410(3_.JI'' H4O-+]4$'U 12  `33a<))?x 14'&#"327#"'&'53276=#"'&763253./US////SU/HH711..--.g33 23FuGHHGuF32 im=>>==>>FNO e 45k37XX"XX7_m3#53nhhhi 33 ##ij7_j2i )67632#4&#"#4'&#"#367632\'76Id56hACP/0h! DP/.jj#22ED10E!!DE~wZX56\w[+,65\sa9"#i~+532654&#"#367632}/.f<+FGTajj%23Cm88zx66X6VYYk\sa8BD? "32654&'2#"&546dTbaUSaaSǁqqpoW?7 67632#"'&'532764'&#"@+..1UUTT40.,,-,.e8888e.,-, XXYY _ ?@@? ?4'&"#46320111nOMoBAA@qWW?27653#"'&50111nNNoBAA@qWWi#3>32#"&$4'&"27jj eEtHHHHtEeB//0..0/b_86Z[[Z6@AA@@AA3#;#"'&5#535,@llx..LLPM,V-,vTPcw3327653#5#"&ch#$FT11ii&22Cmq{Y,-65\c`9c!5!27654'&#!5!#|[--66]{b:8DDg#"FS10gg%dAl88i (#"&53327653327653#5#"&'67Jclj BQ0/h !CP/0hh$22DFaE!"z[+,64\c[+,66Zcb;F"33#"onV-{(32.#">32#"&'#32654&#"WIIJ3pp3F,*[cbbc#hE`5!#3#3!53#53hܘ$त TV%+53276'7#3@,_"&06?x#367632#"'&$4'&"27hh"22FsHIIHsF22B0/0000/_s^8Z[[ZA@@AA@@?7&'&#"32767#"&546326,,--f8888f--,,+^50..` @??@ _ ?K7+325&#"47&'&54632&'&#"632#"7"+SJ:/V T//,-*/,-f888/o. * &;/Z ` ?@@bi?.&'&#"32654'&7#"&54632''7'37_45cSQcG! QP~ ZgH =67K%1#"'&'5327654'&+532654'&#"5>32G&(IJ-002(005U1/,)MTWBM('C).-77a+o@AD ))==>>=۠NO e 45k37XXXXcw3327653##"&ch#$FT11ii&31Cmq{Y,-65\cO9An 5333##53#Bfi\\iii\\jmX ;#"&5=(f\pUWlwAn 5!#3!53B+__d\\E\\An!=!#3!53m+__d\\\\E\\g=3#"54;33#'#"3276nhh[nhgm -gDF< ,|ssW?#5$ mX3;#"&5nh=(f\SVXlxQ=+53276'7#3=./f(;hhax66XS geC3!!frk#_i 467632+53265&7454&#"#4'&#"#367632\'76Id56\f<+ACP/0h! DP/.jj#22ED10E!!ED~zxlX6V0=-ZX56\w[,+56\sa9"#i (#"&53327653327653##"&'67Jclj BQ0/h !CP/0hh$22DFaE"!~{[+,55\c[+,65[cQ:F+532653>32#4'&#"/-g(<+h&eBn89i#$FU01x66X6V~a88BDwY,-56\i 4'&#"#367632;#"'&5##GT10jj%23Cm88+<(f./Y,-56\sa8BDzV6X66xe~ 33##fon~? 2#"'&5476"!&'!3276dOMMOMNNMܧ1*i*, "1US1"WWWXXWWWW@9\[8E-AA.?&.#5!#3!535&'&5476767654'&.xe?MM?ed$%22QR13&(8@ QPPQC\{':?KY7667YR8>#{\8?>LRRQRR<=:my31+"&53?27654'&'&CAPQ(f\h;Q21$-5+8?>LRRlwpU67YQ8C"# #3nos10 !!!5!@w^=R^1!!#;#"&=!5!@w='g\l^=R VXlx ^1^0#47#5!5!3632#'3254#VVwc#| c(2!!^R^=jR31`!2#"'&'5327654'&+5!5!Dl7944^c =;M|CD m**PJ*)]R^? !32767&'&"2#"&76*1US1* &11'OMMOMN*MWXMmGYXFovw^wwwv.'$n.{&`DnP"%@.'uEn"%.."E$n"%."Eguk"Cv@,euf"v<P"'@e'euG#7'e#G"'e"GGw"'zReu"Gz'*'e'U*GZ"( e ^' HZ"( e ^&H "(9e {"H8v"(ev {"Huf"(c@9zeu H"H"zzDP")j@*P"I @g"*"eV"JBP"+@'uK#+#KP"+j@'uKt"+z t"Kz9"+9"K vR",\#v"LB33@Z",  " k".Cv@,&l' uvN".`&"N".&"Nj#$/\#Ok'u'#/1#q3;."/#"OB33@')/ '4)Ok"0Cv"@,gf"PvlP"0R@g' P#0g{#OP7' |~\1'Q#~1{#Q"1{"Q~''1{''QgDZ"2 \e "R gDV"2 ae"R'jd vgDZ"2 _e^&R gDZ"2 ^e^' Rk"3Cv:@,V.f"Sv-P"3w@V.'SP"5v@"U# 5{#U3cqm2@@nQ"qR"5K{"Uy,P"6@cg&!Vy,#6cg{#Vy,k"6#ZCv@,cf"V"Vvy,W& 6cg&#y,P"Y@cg"Z&lP"7g@1/"W9l#71#Wl"7X1"WB633@l'g'71'&W#r8`#Xv"8v`"X"8c`"XZ& )8&+v4& -8' X}"9F6 7"Yb&9C6 `&Y=r' w\|:Mk'CZ=r' u\|:Mm'v_Z=4'j$:M'j$Z=P":@M"Z&=":bM`"Z6P";@5"[]6N";j>5"[j\jP"<e@6V "\\Rk"=C@,Oyf"]R"=]Oy`"]R"=Oy`"]"K\N"WjB>M"Z"6V "\tn"D{w*P"A@#>$n{#D&$Cun{&D:"$ n7' D:"$ n&D ["$ n'' Du"$ n' Dm#7nf"Z"$ n' DZ"$ n' D"$ n5' DY"$ n&D "Fn"&((e {&H&((ue {&HEcL@33(e 7#H:"( ek' H:"( e ' Hw["( e\&H u"( e ' Hm"(e f'&}Q&,u=|"l&,]&LgD&2e{&RgD&2ue{&R gD:"2 aeS' RgD:"2 _e' RgD["2 _eD' RgDu"2 [e' RgDm"ef'&h\k' uubjXf&vhc\k' wubjXf&Chc\"bujX{&c \^' vubjX7&hc\"bjX"c&8v`&X&8pu{&X k' upuqf&vork' wpuqf&Cor"qpu{"r ^' vpuq7"sr"qv"rjr&< w|6V k&\Cj#<6V `#\j&<|6V &\jEcmL@33<6V 7"k\eha&4eeha&4Aehf&4ehf&4wehf&4wehf&4ehm&4jehm&4=a&9a&Bf'dBf'd{f'df'~ m&,bJm&l`wha&8=wha&83whf&8whf&8!wf&8Gwf&8Ja'a'f'hf'xf'd9f'!~Va&:Va&:Vf&:sVf&:eVf&:wVf&:Vm&:Vm&:zRa'Oa'f'h#f'mf'df''~m'Obm'g`0a&<,0a&<$tf&<=f&<Pf&<bf&<P0m&<,0m&<(a'a'f'rf'rgf'df'2~m'gbm'm`ea&Blea&Bcef&B[ef&BLef&Bzef&Bca&# a&#p{f'#7f'#@[f'#df'#R~a&H7a&Hf&H#f&Hf&HVf&HNm&H2m&Ha'(?3f'(Nf'(~{m'(`ya&L;ya&L2yf&L6yf&L;yf&Lzyf&Ldym&L@ym&L;a&,Fa',f',Wf',bf',Odf',~]m',"bm',Z`ehf&4hehf/whf&8Lwhf0Vf&:Vf10f&<Vf2ef&BoefOf&H+fPyf&L,yfQeVha&AeVha&AeVhf&AeVhf&AeVhf&AeVhf&AeVhm&AeVhm&AVa&Va&VBf& VBf& V{f&DVf&V m&VJm&Va& LVa& LVf& LVf& LVf& LVf&LVm&LVm&LVRa&uVOa&rVf&@V#f&EVf&Vf&Vm&'Vm&?yVa&A6yVa&B6yVf&C6yVf&D6yVf&E6yVf&F6yVm&G6yVm&H6Va&I9Va&JVf&KJVf&LUVf&MBVf&NrV]m&OVm&PNehH&4neh&4qmeVhf&QAeVhz&4AeVhf&/Aeh7&4ceVh7&Am& {Au1&q;f&;cf V&_9aVQ_9a#55#539yxg7Fm' vjVf&ULV{&:LVf&1LV7&:V7&LVf'?cff'IcfV&{7f'9f'C;m' v0H&<:0&<q&0&<C@97&<C;m&<E*m& {u1&qD;f'Lc>fq1f'Sf''Vm' vH&H#&Hq &H3V.a&DV.a&D7&H#m&Hjm&( {uj1&(qt;f'(cfa'%F&jlF IfCyVf&]6yV`&L6yVf&Q6y7&L.yV7&6_f'#chf^f',$ckfFV;&,Mfv_9a53#7"_xy͔gZ@!!ZZ@y!!fyy!!fy4y!!3y4y!!3y"__)&BBB#53ZtJ?3#꾔tJ՘?73#澓tI@#5^Jt՘? #53#53ZtJrtI?? 3#%3#澓tIqtIլ@@ %3#%3#WtItI@@ #5!#5ZJt/Itխ??3;g 3!!#!5!~JK\]3;g%!#!5!!5!3!!!fKKJJ\\+! 4632#"&qppq||}sq_73#%3#%3#:_ %3#%3#%3#:e5ki3#ƾie E #'3?K"32654&'2#"&5462#"&546!3#"32654&2#"&546"32654&OZZOLYYLMYXNOYZSNYYNMYYܻۻۻۼܻۻ e  "-7;EP\"32654&'2#"&546"32654&'2#"&546  &54%3#"26542#"&546"32654& NZZNMYYMOZZOLYYLbjYXYNYYNMYYۻۻۻۼ5ۻ$`w3$`u$`&$`'&$`w#3vN`u$`&$`&' g#'#g05# 54Z#RT#5 Z#^R^  T"K#N##N'n.R$#5>323#7>54'&PXU\AQO+#)3.;! #C98ŸLVV/5<4BR-5^1Y7| B_ 2$7#"$'5gihh~vvuw~ign 2&$#"56$iknvv~hhgi~wu3 # #XXY$$v6# {# { _Cn@`3# 3!!#3D~^#"#J 53#5!!53~^JݏޏBb&""&"'n"qcE%3#5##5!!5!3#˘௔fffC4f; !333>54&hlfNݸ 3+"&5463:jqr}| ';2+`jrpO|}6ck { # #3#3tJ#٬@n& 6co#  B##fHF1a~ #'7!5!'737!!Lf=ef>f)`rrbqr2W 535353$`'&'*B 53!535353B䴴p B 5353535353ƴp  3#3#ž'Zd 3#%3#3#3#ZLھid %53535353#!5!3!ƴVWX  feP> 3#3#3#ž>w 3#3#3#3#žN "27654/2#"&546Զ-..--..VVVVVVVm3#3#miiiig8 !33##5!5yyf]my[ !!67632#"&'53264&#"UUXV6r;388>duud/^0_ MLKJq ffR/"327654'&&'&#"67632#"&547632P....PN....,--,t== "35=LLPNaa,--m45[Z4554Z[54bg KL1LMONuv a!#!a+z'a0P *:"32764/&'&546 #"'&54767327654'&#"ͨ/0_TS000L)*JH)*KQ3/LNLN01(**LI,++*KJ,**,+KLV,++]12Hdt::dJ01:7PyAAAAyN98?&%%$A?&%%$J.532767#"&547632#"'&2654'&#"---+t=< 63>NONO`a,--O\..OM0...g KK/MNoouv rh\Z4554Z\44{Rk !!#!5!<_<k_8_8{R3!!{)3_{aR!!!!{))^_ch #&'&4767hLIIL[U****U~\a3#676'&][U****U[K%&&%~~~i~#4&#"#3>32}hFGTbii&eCmpwYYk\sa88NT-d{C{dToTtdXTud8C/d[C0dRT1daC2dPT3dJT4d{R5d{8R6d{R 7dcihf8d\iaf9dM##"32.#"3267!!!!!!zGY[FDXXD} w667756GFDFG kgE9'.473&'3267#"'#7&'#7&'&76?3&':8+$"59kTXm:4":͂OqJ8=0:i<)^_HH?WghйKp(V;,%6767# !2.#"3>32.#"WO_TWmBnUTkpT+c"6 s}'/_HGghGG_^ٜu]\YwQ!!!!3###5L~WHE9Et#!!53#535#535632.#"!!!ԫ7GEz7i`hB_))Hg*>32#4&#"#4'#&#"#3>3273k7?ufj s0I9mB6t!;]|v\R<$`gbGi"&)''#3333#3#####535#53355G3qϰϱ2rGG4&{{&&{{{P32654&#+#!233!!;532654&/.54632.#"#"&'5#"&5`xxfn׫nOIA?bVRnwV6WACMttT}5ҶM[/ϒjqqR>N#55YQKP%$((TT@I!*##`bE326&##.+#!232654&/.54632.#"#"'&k䄆yĬB}lƶuq;n8RXWYWu~[9ʹ\DFQ|{X8QW(/b؍$~3YQKP%$((TT@I!*5"&)-1'#53'3!73!733#3#####5!73'!!7T4,++,,,3SmİʏGipiuuguuguuuuUY %2#4&#!#)"33!3V즍ҥ1즍1V*$oNt"|1.#"!!!!3267#"#734&5465#7332R\23\RPW$2}2$YbiZȻ{.# .{ZiHH"{/ #/{"G$33!!###56kTws1s!5!!77#'%5'#q#HHEEo؈onوnu#0;37367"76!32!7324&+3 #"'3254#"2i&uc:p,j#sHy/CKCϬ'.SNoDAx>R_^wژznX,sB7#RmNC=,$+15#53!23#3#+##5!3276!&'&+!!64JJtER@?PFtK4ECEVtqDjt,tkDqxttzIYIV,i*66767!5!67654&#"5>323#!!3267#"$547#59Btb7 6Vhg_\<D-gos_J,{ +kv67&&UB{\* {;^~FE/0K?{!,&'&#2767#&'&576753RLL[[LLRPTORZim[TOSR32%3#.#"3267#"&54632ڐdJA\rbd]=tYS@lTd3m{{m3dTAvAּOW\ 7$44"&rG& Au>R+53&'&'6767!!5&'&76RB.YY.B30IEGF1331FGFJ.3a_:rq;zn #++$ * rn6(2.#"3267#"&54632%3#"326&$  &54Ud2m{{m2dUBuBּ=sWjjWVkk\44"K 6y-1332653#5#"&.#"3267#"&54632%3#өIHYiVUd2m{{m2dUBuBּ=sLriuD P44"Ko"r)@#>54&#"#3>32vv `Umk?l\/HT^Ȧ^m$R67632#6&#"##7373!!kMYZiDD(wuTpoe22wx\}}_!2?632327654'&54?#"'&#"632327#"&#"_~dj3wmZ@8HHHH/0tx2Ucbornspq}dnsZ'PVaK~pmdykb^OP681/::b:&3273#"'#67&5477632654#$O4Cx6?D?8DaH i^AnqA٨3bX sf59nNU;uQN]\&EW0)2"&$"2654!!3463"##525 Z33Z3DwT+hMNhiML{̀k@4k5 "-! ! #"32'32654&#%!2+#pv}%PT YaaYL00ey wXQPXdc;0<67632#"'67327654'&#"#"'&57&54727654zRwv?AmZE%fnT>#Cz>Pvf49*хt+);ƂMkeLPק<+(h|H=y|n=B {u.F/4_NJIX&54'&#"#"'&527654'&#"3"'&547632763227767654'&#"J$G&Sl\]~\\(*9:9::9RI;99:J1\\\\[e*!q:2e_~/g@RZ*>D292eY|p.^|~y|Y"*/( VAO[`*,2,* M=H\T(l_`!!#!!!!!!!3!!U1FYw` `ffff  3#######5ܝe1geg/B^^F;,F;5! 5475!!! 4':䠲{XZa#Laָv5(.mp-)% 7673 $54$32!"53!25&'&#"hܰ*X0~Y-.hY-Y-uc1LS2?Bdjl,>8?]/c6gUc1LS2tc1LS2c1LS2^`  !!!!#!3#'!#33 # #CEq)FR|QpQ~tށ0=`C5MR.}5&&0 #673>32#"&'532654&7>54&#"[65; ]T]vyy,-ȦKLN=_v6.QMUB@Yr~YW׀c?}<$$/1oX3gQX?@{"{'3udT"t'3ud{"{'30dT"t'30dX"u'30d8"/'30d{"{'31d["0'31d{"{'33dX"u'33d["0'33da"2'33d{i"{3k,&,,lB&,',l,&,99&9,[&9',,&9',',,\b&,;6;6&;,6o&;',,/g&'0TL&LLK&L'LKL&LY6 `Y6+&YL6v&Y'LL"6&Y'L'L"Lm&L[5`[5?&[L5&['LL7TOe{FeGg{Pl  ) !3 !## !m{{muܵ~ji.,w#3 !#32#32654&#! )kAAFum{Y.,职~l(1C3 !#532654&+32# ) !#"&546;5#";# !3AAGyoyyoGGAA/b!ji~߁ó.,gHr{&Z8 5!!ZblIlUZxxy 3'#'Qalљlvx<xi8 '7!5!'7lIlZwxxy #737-Qlәlx76767632&'&'&#"#"'&/#7!+$3/(+?65FCOR@I26-%20'+ 9-N@ROCF58!F0O<:" %7lgllxaxxaxz ''#'5'-bl>lҙl=lavxxxbxi8 '7#'7!5!'73'7llgl=laUwxxxxwz757377llӘllxbxxxvZ85! !Zbl>llalUZxaxxaxi8 '7!' 7!'7lall>laUwxx>>xxwZ8 !5!3#Plbl-xZxYz %'3'!!5laQal7xvx檪i8 #3!'7'7lal-\xwZwxz !5!!7#7lQl+xvxz7!!5!7'3'Ql[ZllaQalxvxxvxZ%52#!5! 767>54&'&'&8/-*'(&)#4,lblܪ-)o=3276767654'&'&'&"5476767632+#5!5u 0 '+,/8;,4#)'*-/8ulbl  =69)-(.46=<69)-xZxj>54'&'&'&"3)'7'7!#5#"'&'&'&5476767632 1  .lalҘu7/-+&(#5,:8/-*'ׂ  xwZwx-)96<=64.(-)96=Z8X#532267676767632267676;'7'7#""'&'&'&'&'&""'&'&'&_ lbl +!  "#(+!#  ##( lal $#Q"$   $"Q#$ -xZx$ -#%"&* 'xwZwx ""&*  *&"" ZF%'!5!!'7'7!dlblxye@lal:5xZxo:xwZwx  7'7jUXgP}Xxb7 #!5DlbloxZx !'7'7!#UlblDxwZwx7 !5!3lblDxZx 3!'7'7lblDxwZwxy 7#7!5;lQl =xwxZ !5!3lblʙ-xZx,(X&7#7547676762#4&'&'&"lQl))SQcabcQR));;6NBFJ9:xvx2pk_V1..1V_kp]B;'!!#?@SQ]GX&54'&'&'&"#476767627#7 9:JFCM6;<))SQcabcQR))lQl2]QS@?#!!';B]pk_V1..1V_kp2xvx4 5!7!!#W9lrcc?x^dc 5!'73#'7!#3!elclVlblxxNPxxXxx}p62767>54'&/#7!!#"'&'&'&54767>;<6MCFJ9<;<9Q+))+QKi\xsaeOQ+)))S+BQQ]ZB;'!!#?BZ]QQB#,@#Zpp|pqYS4..0WYqp|pk_Mp67#"'&'&'&5476?!5!#2767>54'&^^24]xZx]4]xwZwx]Jiiiii8!7'!7!5!7!'7'7!'7!5w)__Dm!jtASlalSivBiixK]xwZwx]KxZ8!!5!!h75TlblT^x]xZx]xiz#'3'#'lSlaQblTl^P8^xvx^hi87'!5!'7'7!5__SlalS5iix]xwZwx]xz737#73_^lTlQlSl%hh^xvx^8Z8!7'!!5!'7'h8__^*TlblT`Slaliii]xZx]]xwZwxz7''3'7#7^__TlbQalSSlQlliii{]xwx]\]xwxj #7!##LQ9vLvU,?UP5#'#5!#5'wMv9QLvU?ԄU4 753!5373wL9 vQMqPU?U4j33!'3LQv 9LqPU?,UZ8!!!!5!!@_|lblwxxxZxxi8!5!'!5!7'!5!`|xlalFxxxwZwxxZ8#''''#53777$?cYlbl}?c-FnxZxFni8577773'7'7#'''ic?}lalYc?-nFxwZwxnFy3'!!!!#!5!5!5!'Qal    lvxTrxy#7!5!5!5!3!!!!7+Ql    lxrTxZ8 5!!53353ZblLlUZxxay 3'#'3#3#Qblҙl?vxrxVi8  '7!5!'7%3#'#5lLla:Uwxxw(y 737533lәluxrxv4`9 !#3Vlclתx~\xi9 !'73#'7!ilclVxvvx1~ 5!! !!\Z7\}*;  33 #!vYp  d @~ !!!!?\\ ; ###3!3vv77e n ; !# #3 3!#3YZvvMYM$| \d; )3# #3#!5#3 3[vv\Pdx   %#!5#3'!3!3! !33'[ZZiZdd\nt;%#!3!3# #3!5#3}hi\Px;%3 3!## ##3 37~vvMYa}|sd d| ; %#!5#3 3!3## ##33 37[vv}|s` \h i~ 7!! !5#35!i9l7Z f:bȃ  m!#7!!#Y9lc?x^m35!3!5!73nY9 )lcr+a?^xJ; 3 3#'3 3# #~vvv77e   dCi8)5A '7!"'&'&'&'#5367676762!'7$"!&'&'!27676l -,:74=)-  -,:74<*- 54&#"#"&54632#"&54324&#"32 AA2! +[ƒ[u NGbMHbmWKt,>bFأ[t}t{ !5!!5!!5d+53!#7#53#53!5!73!!73#:jzFv0Y+^^`u(673#"'&'#7&'&$32 '&#" 32$767&'&P`s^>Zæ2,q^9*Y< JHH!Q#)JJJ4;nSz_'BTc_ N@DROg !3!h$ %?%! !hx<?!!"$54$3!!!59C}|s@s|}C:vsJxNL``ȟMOx]&/!!!!3!!"''&'&54$;7#\BŦ !s:9ZV('@-9C}4|}C:7ʟ 7c``JxN MOx]hg% $54$)!!3!  r^F!@gO:0Q&'&'&'!5!2#!5!676767!59C~{s?s{}D:'JxNLȟMOx]&/'7!5!!5!&#!5!2+&'&'&'3676767C; !s:9ZW('9C~5{}D:7ʟ 7c;JxN HMOx]hg )5%2767!5&'&!5Q  r^F"?hrgP:1R!!yw!#!#ZV}w!#!#ZVwJ}w !! !!5 2l\a3!-F!!~תF !#!5!3!!5!P  s}תF !!#!5!3#P 53#b%?cP%73% %#'lMLLM#G_rtHF3#žF6} 3##'%g;q}`s-Pb;6"8uh6"8/h %.#"326"&'#"&54632>3"3,xM[skPIyAG?T{yUA=W&xB,x<XXjewߦ~XZ; /32654&#".#"326#"&54632>32#"&8,xL[sjPJx,xM[skPIy?T{yUA=WyyT/XZie7XXjeߦ~᧯w I%!3! r~, I%!3! `~,%&'&'3!!#4'!&'7#C:N=xeJT&6~Hʋs^(Rs57756uF 7&'7%%'6 676M}?@^Txl/4RW!L!$Ҿ &!L {J+3#+[J?+ 37#'H֐EVo)gnJ+3#3# +[J?+3737##'RHTEE+qd @oxpAnX33# EE^TX3 3#T^X32#4&#"#ݜP(*7X332653#"휅RP7**%26732#"&'.#" #"&54632_  HZ92&2 ` G[>6+ l9TA6?&#Hn!bSA8?S*&II*q&I'IIiLX-6?676&'&'&'&'77&'&5476767654'&'KGBEA14? Y@"'7'AC!GCD4K|oUFCD41IosV/HgjG$4.JhgH$iLFMQZc676&'&!676&'&'&'&'77!'&'&'77&'&54767!!67654'&KGBEA14? WKGBF@14? Y@"GCD47GCD4K|oUFCD4$åFCD40IosV!.JhgH$+/HgjG$iL4mqu~676&'&!676&'&!676&'&'&'&'77!'&'&'77!'&'&'77&'&54767!)!67654'&KGBEA14? WKGBF@14? X KGCE@14? Y7'7'&'&'77&'&54767676&'&77'AC!U32326E^Xc  TPY_Wc UM2NE;=LTNE;=KF23276767632.#"#"&']NT  cX^XOU cW_2UK=;ENTL=;ENFl&#"5>323267#"''ZM]^XVmS LTNE+~F KUNE,FF #"/&'&#"5>32326!!E^Wc TPY_Wc UM~oNE;=LTNE;=K`F#"/&'&#"5>32326!!E^Wc TPY_Wc UM~OE;=LSNE; =KkaF$%767#"'!!'7#5!7&#"5>32U{ ^W|bpPPY_Wc o"DX"OEd8LSNE;IF"#"/&'&#"5>32326!!!!E^Wc TPY_Wc UM~~OE;=LSNE;?Kk˪F.#"/&'&#"5>32326#5!7!5!73!!!'E^Wc TPY_Wc UMm~dwDdOE;=LSNE;?KL˪s˪sFC33267#"'!!!!'7#5!7!5!7/&'&#"5>327 M]^W#'Rb^72blj  TPY_Wc y"KUOE˪Nt˪=LSNE; NF;#"'&'&'&#"5>32326#"'&'&'&#"5>32326E^Xc  TPY_Wc UM]^Xc  TPY_WcUMoNE;=LTNE;=KڲOE;=LSNE;=KF43267#"'3267#"/'&#"5>327&#"5>23'M]^X9EBQM]^Xvp|3'PY_W:EAQPY_a KUOE8KUNE; @^ LTNE8LSNE;f@F59#"/&'&#"5>32326#"/&'&#"5>32326!!E^Wc TPY_Wc UM]^We TPY_Wc .M~LOE;=LSNE;?KҲOE;=LSNE;?KyF5P#"/&'&#"5>32326#"/&'&#"5>32326#"/&'&#"5>32326E^Wc TPY_Wc UM]^Wc TPY_Wc UM]^We TPY_Wc .MײOE;=LSNE;?KҲOE;=LSNE;?KҲOE;=LSNE;?KF"32?632.#"#"&'!5!5]NTcX^XOUcW_~~UK?;ENSL=;EOȪF+  %5 % $%5$C 68DӦ6F9%676767!#"'&'&'#5!!536767623!&'&'&<)2r 1MPQM1 s2)==)2 1MQPM1 2),CE[<0[2332[39\DD+N+DD\93[2332[0<[EC,`F !536767623!&'&'&!!=)2 1MQPM1 2)~++DD\93[2332[0<[EC,`F'7 F'7& 7F'7& 7D'7& 76z'7'7 46{& '77`F 365&'!!5!&547!5!!/./.~R~X0IG00GG2?8>;_8`F  "264&'2#"&546!!!!AZZZ[A5`$%&mo(~~bFE``bq+((d:svv`FK 2&#56!!!!~~KW`F 3# !!!!鏫c~~c'@`F 33#!!!!ʖ~~'c@`F !!'!!!! TU UTE~~䰰`F !3!!!!!,d~~ NfQ`F(/?GKO#"3###535463!3267#"&546324&#"'53#5#"&4632264&"!!!!9 bb<998=B<"@ C#We`RIU<6,2<<<:(BRRB(:6_66_~~7%$3`3D= DH>p`ctiF6A?9i=$#tu#gSSSP`F"&*>32#4&#"#4&#"#3>32!!!!T8MRP23>IP24=HQQM55J~~=:xoHOM]QHPL^P%U20=˨`F$(,3#7#546?>54&#"5>32!!!![[XV();0$P,*W.Se!((~~aN2A+,/-7#!^aO&E++ 'F!!!!!'7!5!7!qt;Gp;fըfӪFL !!!!!!~~~תF4!5!7!!!!!!'7!5!7!5!9sIfcs8tJ[dAT˪˪T˪F  !!!!!!!!~~~~KF 5 !!E`~~~poF 55 !5~a!~ǪVF 3!! 5 !!~`~~~poVF !!555 !5F~~`"~kǪF!5!7!5!7!!!!' 5V{|$.RV}||{`~ss1stFpoF!5!7!5!7!!!!'55V{|$.RV}||~`ss1stF. 5 56L6pr pr . 5555636'!67&'&54767&'676'&'<&P/CC/P&%P/CC/P%;::;GF㞢GGGG➣FG2;;;<<;2;F56?&%5767$'[汅yZy氆])]o& bR)`q% RFd%'%5% @zB̛{br˶@6 o@hGpF%5'75%7-Fz5zb_%˶C@ʴ@hGp/FV !5!%5%%%!!'7ljAg\J}EOlUrC@=Vlь=/FV7'#5!75%7%5!!'6M'NR?wsbFL>ߪwe=ت=F$%#"'&'&'&#"5>32326 5F_Wc UOX^Xc  TN\`~ND:3232655F_Wc UOX^Xc  TN~aNF<>LTNF<>L>)FP14%&#"5>32%5%%%3267#"'&'&/' - OX^X"'`i?g`  TN]_Wc HQ-LTND9ATj͊LTNF<= &TN#wf=J;NF} 55 5~``~'poNF} 5 55=`~~`'pomF`!-%5%%%'5%%5 ,W|Q>^z:Q>9:b _TW&o}䎲w&-r~bUmF`!7/%5%%'%5%75%z)lXZ!(CWYw"D2,/*/&O{¸[&}FP %5$E'jgaa^~||FP 55%$gj'a||^a)FW!%5%5$ETY)Y]]x|)FW3%55%$Y)YTBW|]]RFW(%#"'&'&'&#"5>32326%5$E^Xc  TPY_Wc UM]TY)YNE;=LTNE;=K$]]x|RFW(%#"'&'&'&#"5>32326%5$E^Xc  TPY_Wc UMYTY)NE;=LTNE;=K$]]x|F&%5$%67%'%vi}vGqjU)?eKtuu" K 9'F'567$'567&'ejvi~WupjRU)?Kuu,ަK9'R_%!"'&54763!!"3!Q|}}|{VVzƍ^`R_75!27654&#!5!2#zWU{|}}|`^ȋ;R #";3!!!!#"54763E{VVz+ffI)dd}|^`&pphƍ3R 32654'&+ #!5!!5!32#{UWz*ffsSee}|9^`phƍF7!!!"'&54763!!"3!kk|}}|{VVz햖,ƍ^`^7!!5!27654&#!5!2#lzWU{|}}|,`^ȋF '!";!!!!'7#5!7&'&54763!7!!o{VVz#=7XyE28u}}|OXyDR^`5ƍ7^ '327654'&/!5!7+!!'7!5!7!5!zWUU;NTXyLfN}}|82XyEI8`^`C 7 Xȋ5jF )5!7!!'!"'&54763!!"3!}]fl(el|}}|{VVz햖Z54&'&'$2"&'&'&547676!!#!5!dTSDEEEEDSTTSDFDDFDSXY,,,,YXXZ,,,,ZX@A''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcbeea$7!!"2767>54&'&'$2"&'&'&547676wTSDEEEEDSTTSDFDDFDSXY,,,,YXXZ,,,,ZXתa''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcba$3?"2767>54&'&'$2"&'&'&547676''7'77dTSDEEEEDSTTSDFDDFDSXY,,,,YXXZ,,,,ZXlml''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcbxyxa$7 "2767>54&'&'$2"&'&'&5476762lCTSDEEEEDSTTSDFDDFDSXY,,,,YXXZ,,,,ZXpx''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcba$37"2767>54&'&'$2"&'&'&5476763#dTSDEEEEDSTTSDFDDFDSXY,,,,YXXZ,,,,ZX''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcbAa$3?N"2767>54&'&'$2"&'&'&547676"32654&'2#"&546dTSDEEEEDSTTSDFDDFDSXY,,,,YXXZ,,,,ZXRHccHHcdG:j')*yy''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcboPOmmOOp1.-rBa$+E %#'-73%"2767>54&'&'$2"&'&'&547676r#/\/#/\TSDEEEEDSTTSDFDDFDSXY,,,,YXXZ,,,,ZX1XSXYS''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcba$!;!!!!"2767>54&'&'$2"&'&'&547676@@TSDEEEEDSTTSDFDDFDSXY,,,,YXXZ,,,,ZXj''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcba$37"2767>54&'&'$2"&'&'&547676!!dTSDEEEEDSTTSDFDDFDSXY,,,,YXXZ,,,,ZX2A''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcba$!%!!!!#!5!/H@AYeea$ !!!%!!wHHת\a$   ' 7 %!%!!GmlFlFFHxjyjjyk$a$ !%!!3#/H33!!rgup!#!!rgup3!5!sL%3!!5sL#33!!rup# !#3!!!!rr$ !#3!!!!rrgg$ !3!!!#3rZrrup !#33!!!#3rr srrfup!#3#3!!!!rr?rrZZf$33!!!'!r2g,hFu5Y6p!!!!'!#3!7!1g_wThrr8_56$$!!'!#3!#3ghcgrruLrr5Y6pu!#3!!!!!'##37!Orrg_hrrm_s$-56$F 5~ F \ bb:Fd 5! 5~bFd 5! bbb:mf%/2#"'&'!#"&54632!676"264&40*)%%lnI-.Kmml4/+(%k/K4GGhGH,)fPNq^D^pB %  !p*)NNP^DpB 5  5!*)KbNPpB5 5K*>]PpB 5 p*)K>P`F32?632.#"#"&'!5]NTcX^XOUcW_~UK= ;ENSL=;EOȪ^F 5 3#E_~达ѦZ^F 55%3#~//m.   5 5 5 6L6L6pr pr pr .  55555563636.F  5 !5! 5a~~`~Npo.F  5 !5! 5Ea~~~`~NpoF %5 5!E~op9F 7 5 !5!a~~)FW5$%5$Ep)YT_|x]])FW5$%$5pYTY)B!]]|F!&!%'&'57&%5$%67&%7EYv9uu^9p+fkU%KA6#(AF+3273267#"'' 5Y=OX^XTlc^[=N]_WWma`~LTND*F JVND+FpoF"%&#"5>3273267#"''55Y=OX^XTlc^[=N]_WWma~`LTND*F JVND+FͰFW&&#"5>3273267#"''%5$ZM]^XVmbTY)Y. LTNE+F KUNE,F]]x|MW&&#"5>3273267#"''%5$Y=OY_WUlc_[>N\^XVma~YTY)3 LTNE+F KUNE,F]]x|F 7%'%5'jvƎ}< @Y8@\9@aF '7%u Ŏ }@?Y@<9@}F5!%57%!!'7QVtx;jR ?:qߦ[@Z8@_}B7!!'7#537%7%aҎvkSTs'`L8@ǹ@7!#3|s?s~'Jȟ]hg )5!2767!#3!&'&#%5Q  r`Fb!@grg Q:欑0P !5!&'&'&'!5!2#!5!676767!5o/^9C~{s?s{}D:2UJxNLȟMOx]h}!5! )5%2767!5&'&!5E~   r^F"?hrP:1R 5!!5!!5!&A> 3 %!  `$`yZ ! ' 5!5!ZŌ  B !##~ئm1##5133"m1!5331ئF^!#E^k?$%%$~Z[|||ӥ,~ U1;FOY!!"&546;#"&5462!54632+32#"&=54&#"3#"32653264&"2654&# ꦦrr uvssvupX>=XX>>XX>=X>XX|XX|XX>v(D(غPEaabbDEbbDbaaE DbbEDbF^!3!E~?k6732#"'&'.#" HZ92& a l9TA6?%Hn%7( #"&5463232676 HZ92& a (Vl9DTA6?%Hkn  !!!!%!!Xdo̔4+l  #/;GS_kw+7CO[gs!2#!"543!254#!"+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;22+"=4#"=43+"=4;2+"=4;2"=43!2#3DŽCAAC!B""B!!D D!)!C!!C!r!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!"B!!B""B!!B"f!""! !C!!C!!C!!C!"B!!B""B!!B""B!!B""B""B"!B""B!!B""B! !C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!B""B!!B""B!"B""B"!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!"B""B""B""B""B""B"!~!!~!!!!& !!!C!!C!!D D!H""!!JJJI%%I&%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%% %I%HJ%%J%%J%%J%%J%%J%<3#pp+#3*p.] !!#!#5!\ttu #53Nr0kTN*3#*- #5Nr-Tk0 35#Ls0kTK*#3*- 35Ls-Tk0#!!N]SN*3#*,!!N,!5!LR]UK*3#L*,3!5!L,_ #476;#"cs[=3יfV,#'&/532763R6$[dC77Hd[$!<  _AE_  <_> ;#"'&53=[sc>ܚVf_>#3J 4'&+532`4=[rd$Vf_,&'&3;#766$ZcH77CcZ$!< _EA_ <> 3+532765`dr[=4>יfV7(3('! !!&$<.>32#"&'#'%53%&  N4oo43daad]chaam@j.!3!3\t^ &! 4$32! 4$#"35733!llLLggٜ٣VA?rpG~+/ 8! 4$32! 4$#"!!5>7>54&#"5>32llLLggٜ٣J7+VF5wgW6+8A?rpGM"?U(?N&:$}:iF D! 4$32! 4$#"#"&'532654&+532654&#"5>32llLLggٜ٣Y j°9{ORp>ig`Y~PPSR/m`U{7]A?rpG]0OLGN<:BB 4@! 4$32! 4$#"532676#"&54632#"&2654&#"llLLggٜ٣hLW*kr tGҴ0`GRRGFSSA?rpG$O <b[[bb[[b &2>! 4$32! 4$#"35733!"32654&'2#"&546llLLggٜ٣ik:>>:9>>9uzzuv{{A?rpG>>'*6ޗ{( >!! !!!!#!#(!((!(0(!B({(!((!((! (Y(!k((3(( F ( #'+/3!33!33!33!33!33!30stststmnmnm(%8K#!1!!!!!!!#!1!!!!!!!#!1!!!!!!!#!1!!!!!!llll޶llll޵kkkkߵkkkk(((((!%)-13#3#3!3!##!#3#3#3#3#3#3#!"޵׶׶m#( ;#( I! P( P(& P& Q R(& Q R(& P& R W(& Q& R W( P(& P W(& P& Q W'%! '%!!!Ng>9%-d) 327$%&#"%632#"'++Օl``````qq|qqf' '/7?G%&'&'6767&'&'7%'676727"'64'7&"'62&479'5)3,?4C0x2)/-Z5>3@'5)2+@3C03)5'Z,G4?DD#VVcDD#VV c<1& j(0=Ju &,A=N:0('<1& j(0=Ju &1<>EB0(n_II'[[JnII'[[d) %/36%632#"'327&#"6767&'&6e`` :;;:{m('((((';99̙Rqq|qq%%mܱ[0$ %@%|"d) )73276'&#"7632#"'327$%&#"%632#"'Vg4343gg3434՞OOOOOOOOH++Օl``B!!BB!!oe33eje33````qq|qqd 4767632#"'&'&e^^^__^^^ѶiiiiѶiiiid $  $27$%&#eGyF+ՕAk^a``d $  $"3eGyF+Ak^``d $  $327$eGyFS++Ak^>``d $  $%&#"eGyFYՕAk^>``d $  $"327$!eGyF++Ak^```d $  $"!eGyFVAk^`d$)6%63"'e`Rqqg)#2f|q*q ( 2654&#"!Κ⚚ord}}|v<U( 327$%&#"327$%&#"!(++Օl``````}|qqqqH(U( !#%&#")%632T++qq>~``U 3327$3!#"'$``Ֆ>qq``) %63"`qv`) 2#%&#`iՕ)q>` 527$3+iv`>q "'$33įj+q`d)%632#%&#"e``jՕqq>``d3327$3#"'$ei++j``>qq% % %! %!$+! 2654&#"4632"&J|{{Y[|6qpddcc||}'%!%!!@Z r<'%!%!!X r<'%!%! r<'%!%!N r<'% !%!!!!t&t% r<<% 4632"&! ?N97MMqM`KAj>VV>>VVJ %! &A %! %A d(  7& 6  'hi./*X֖'% !!!!!!tg%ۊ<)) Ie'% !!!!%!!&Ng%M)*<?v^]"3263#!5276;'4?'4?26vi#1z]H3y)/ #&<+*lV#m14He '1l1 Z+dZ?33 #&'&+"'&#"/573;2?"#'57#&'#"#5676!504& 3(d{_R!' 8 2M <=Y4}V .e3B=Se` e9*=9 3@=}k !=] 9eAmu} 5a73&'37&'67&'67&'67'32654'&'7654&#"3672#"$54767&'&547'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'4327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&54327'4327632#"/#"57#"54?'&54327'&327632#"/#"57#"54?'&5432&'67&'67&'67'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432Gsq%&&#%'$:"#!pޞp[}9*;qTR}<(2w,JDdNSjDD% $+*$ $ ),  ! ! (&    %& ! ! '%     %& \! " '% !   %& 7SdR!%"#!"%=    &%     &' |" ! '%   ! &&*EC*Z*,)-)-*,%&%&fБfU 5HhfeefhH2pu^ttQFs棥sKQttGh!99!  !77!  4 4 22 K44 22 22  11                 7        %&%&%'%&%'%&22  //  g               44 22 u !2CTev+&'&54?6?6/&2#"/54762#"/54762#"/54762#"/54762#"'=4762#"/54762#"/547672#"/54762#"/54762#"/547672#"/5476%2#"/547672#"/5476 I7-Vo/"*6% \8^ :x.[>  !    !  |             b     !      !             aG<s-8PZy9} KW2{0R^j ,: . 4 . = ,  ,   -  -  -  -   .  .   ,   -  w !! xLJK9`8w !! 7 ! !xLJK=~PZgKI9`8N I 7%7&5476R3N"e;Q 6$ 8'^4? !2 7%7&547!&'6:P!`$/A?S"="l-2DC[9 )! 4$32324$#"#"&54>32vvDDbcܙݢbFEc-Q**R,K7iwBNmmN1Z00Zp G"32654&!"32654&%#"&54767654$#"#"&54767&54! C]]CA^]iA^^AC]]RutQIdmmqNQusRn!$gJIggIJggJIhhIJgU\\Q srW\\^p G4&#"326%4&#"326! 547&'&5463232$54'&'&54632|^AC]]CB]]CA^^AC]mmnRsuQNqm..mdIQtuRhIhhIJggJJggJIgg ][[Xrq Q\\pe "32654&7#"5432EWK_ȐɎ;12Yp 7"32654&"32654&#"54327&5432#"'&'lllmml#褣楦s奦祣t کxxxxZxxxx;TdIU ~z)5AMYeq}3'%&76'!'47653!76=332654&#"#"&54632'#"&54632#"&54632&'&676&'&676'.7>'.7>6&'&6%6&'&6>'.>'.x"gO$hJ Ki$Pf#؂ԕҘ4vUTvvTUv ) )Y ( )>&%/$%&%/$'F ) )Y( ) OyyO vKK9__9KKݧꧦ]]_""""s!!""D. - . - a)**))*)) / . - .)5AMYeq}5#!4'&'5#2#"&546"32654&'"32654&"32654&7>'.7>'.676&'&676&'&7>'.%7>'.676&'&676&'&53!76=3%'676%327'%&76'77&'$%'#7%6'&7, 3ϔϔSttSRttJ ( )7 ( (/$$ %%$$&%k) ( X( ( Myhy?k>Ys>   =rY>k?LY77%SB T+1SBS%77YK@@1AeA1@@H磤椣筁\\\\     % - -- ,1)))(9)())u- , - - G77W6 W77Gl^ ee ^l(q,&$pp$&,q( !!'!cc8h "!!'!##+572367676!dczD%8i [A.8YW8hA:F;/Itx !!'!  ##' !dc^rnVoRQn8hi[ef[l[J@36273 ##'5 MON@ US VZCv#,5>~3+&=43+&=4%3+&=43+&=43+&=43+&=43+&=4%33 #&'&+"'&#"/573;2?"#'57#&'#"#5676!5S4S3S4S5T5 T4RS44& 3(d{_R!' 8 2M <=Y4 #8d#7$6$8;$7i$7 #9pPL  )Z. ;6ZV Z3%Y63 .87p  />Eqw!674#!!6?676'&#'323276767654#3#&'&'&6%67!672!&=75$/563&43!32+'!67#>54&53 8 A4N,315>(I-4"a1lxXzbf=NS!\q&,L01Ne0<  9 H3 ;;Q4XmM;YV /M(=H: ,qLUD)8Wqke-Pm{NW =$ U  /0c)H?2@[nDF8T$.L !' !ANKOUDu@wL5_K !'7?KNQ>wDB&547632632%6#"'&'# #"'&'&6&'&547676CO""ONP4S2 R$|m ?wE 39 _D%V$F^ 92 Ev? m|4hok@mmr*%te2' BB90tU%) "ft(f" )%Ut09CB '29>3#"'43727&'#"$4727%6725676&5&dB1)X6E v=y(;. eP 0 %SZ7AFF4ysW$,J ]T.MMm@ed: ,'Z M'cM&T)2_M2%!"&54676737#&'&54>;7#"&546767!7!"&54>3!6763!2'71z*-=80O&8-&Q&7>+2  ,2 =,2  =,3>,2463!2!2#!!+32#3#!8%Q'-7'P17=-,y07&#,>3,=  2,= 2,  2+>!C%4&#!"!&3!!"3!#";#"3&'6737#&'6737!"'67!7!&'63!67!2nA+1*KK KKKK8JJSSCTTTTDPSS;Q%8C%39KILKIOKHLKIhghghghgE?-!D72654'6#"'4#"'54#"'54#"'675674767#%!/5BBDEAGCAECB^\ ]]_\]]=8(sJ1 b6'SS cRR SS?SS\\K\\;\\]]!A*>K!C%254+'3254+'!254#!'!254!&#!"463!!2!!#!3#3aKK9JJJJ KK*0,C$D8&Q:TTPESSSSCSSIKLHKOIKLIK93%N-?Eghghghgi!C32=732=7325732'654&#'%2&'&5&'5&'BCEACGAEDBB5/!:(8=]]\_]] \^SS=SS SSb SS'6a!0J)K>*B \\]]:]]J]]pO!%)-15 3656;2#'7+"/#"'+"5&54775%"'5476;25'7&567635&56;374765'75'76=4'&+ '"'4!#"'&36365&5&#%#754'&5&&547'5367&7+&'&'735&2?"5%75537'7'3533553535'32767&5%2?&#%55'575775775J5[( 9?8P7?VE:.>DA.( 3DPDa>@#+6x `]>  >[Pr @se"^L3 4UF "V;=\?/ /*U9[' ."n?$-)&!Dh2 ) ` ?hhE-g> ?. 8Ve lTErf^5.>=9|5"-l)d ,&>vv]cccWpC-+ d8 Bpp>W]oaxvuPp82,D ^8, ^B$K+ "1R[+e*;GW QU I&? gpo% w ^SA$ 2 9i-5n02D|&IY^Pw^%\??\OWC ,,1 /211/=;7777=321811{908hN%b\Dh,)h?17I21!122223 21&2%2#"'&=477654'#"'5473Ձe/o WF^a}/ X 3 X ؍MOb>YaYƮ58l7P P@ $0<FX + &=6&# 3 6=%&#"';27!5%67%!&'&'2+"'&=476.Yf㮿Y0薖q3P+2-)VEV'quI3=%)H3A#S]ٱZYHYoX(I_ ;.2lOP%.G6R%&I8Z 8Pi>'67&&&'6.7#"'&'#"'676'773.#'6'5676&&5476'&'7&&=F! wM>7TBWR?^m &ab)-R7kSWos4K9>>4::T8S-\_l eu?>L=#mg'.2[E :jx(Nr%&&&+F 7!N &".\S$XE/KC\a*0/'rSCٟ C (RKpF|bphc'R"J$Zw1F[q7&&'7'6&'6#&7'&#"'5&567#&''5&'67'6'4'5$'67'656&'67&'6'&'''5$7676'&&'6'63&7"7&'7&'7&'7&'6'6%676767&77&77&''5&"'6%35&'.54>321167#&7 m *VBRa&G ?V M]; :)(6hCs/Ni,H HCfE_ 7^eAB4CCC <1bSBV* 9d i'Wh"&VqH,7u07#]69-/6,X(hR(&"hZ,HK80C:7%_6/-C  "H1 $ &b5 4CUE '(!`9 !,(MTE + }r}A" 7,)f[4f AD <@0&9c?"V+GoMK~aG g9s &0@k"?c*GEKX Gjt9hN&\6 '''' 6\%$&'6&'67327&#!65#&3 mmgrk zYYޱqZre[c7 7 c ,35'533#3!'#'5!5!5#5335#5##3qqlzyymj@@@<<3ffX苜qXGccG J!32654&#!2+73 ### 3׼irriPוؐB(T33#!!#'!'57!5#'5735q~q+!#!573#'5!3!'573!#'73!#'5u__vhhwѡIjj8/w,32#' 37+ &5%6323'#57'53@ǽ˼U4{|I0w_?8:<ؒ6ʞG2k >Y3~||~Obs32732753"'#"'4323$4'5;+"'#"'53275'&'&5?5572'#&'&57634%476=%9*"'<>((I- cE*HiAt>=2{6mNPp ZiU;xT"m ;wuP1RK00D(;,,e"@  p$B(!cc*@rJ&*EcJkg Fp/ԶQRmT_g2#27654'73&#"#'&'#"56='"'46'4#"4735#5&547/63654'%65432#"&546324&#"326%! ! : 7"&66&$55%%44%%5wvϚ{ɬ)::)*<<**<<*):<'L67I" D# D D " D# D E " D# E D " D# E E " E# D D " E# D E " E# E D " E# E E y <BHNTZ`fl3264'&#"&7367'67675673#''5&'&'7&'677&'67'%7&'&'%6767%&',*<&`7" bK*V&"g{ M M !)1! ! 3254#"&#%#7&'67&'67wv:<F>4,<[-ch`ch_7IL6a] ]pu otpu ot !)1! ! 3254#"3$3&'67&'67wv:<F>:]ch`ch_7IL6a] Uypu otpu ot %! ! #$''&'6%&'6wvcGkvJVVr~w{t~w}7IL0c Z    "*2:AIX3#''%#&'52#"'&5476!!'5%!!'53'5%3'5%3#'32765'&#"FF47H8(S A+[!?27@yf756FF u>p,y9#_>?@7`d@\hPPPPy?+<>w_VG{?,rCA+ +"'5676%&'547327676=&#%c_,*Iq{S$'NJǒxbO P >nS]] =f+! &56;2'5$%75#"3Q_d,)Hq-zT$d/'NK7ycOpO >S\^ f01@7#'#53'&'&54767&'&=33676=3#32654'&$ xwatbww!$$!wRMi"iLRx "iMRurRLV$|ddb e|$% ZSSZ %_TYYT $4&#"326&54327##53&ёϔ1./|䤣L~~|  $"32654&'#533'#"5476ϔ|Ҙ{פ㤤ף |~~L #&$76+"'&5'476%7!iiggi$jg ՕeE~Z5s qttrtt<֤ꧦg\ul91B52654&#"#43233#!5nom覨b͈wyyy{(|#53533#632#4654&#"#``d~~dc}mZyH{zF 4"32654&7#"&54767!!53#5!!3!!#3!!92GG22GF7+Db`E*8쌌O79NN97Os0LllllL1KӘJJ-<%#5#535&'&'5'73'3#'73'676=35'73'33n^F][E_nzTThOʍ7NjYYӖy! #!!!'!27674'&#pZ51;J&u@!IM_\ǃ$P<S  !#"#&5463 67!2#6#"t3`ySOuwNTx`3uX1((1E 1"32654&'67>3"#"54767&'&#529vEMWov*&%+tm@ME\ϓΓϖ=Bll)'ҕ*l8lB=&'5 %$ 56?6'ݗ85Tș4ZZ//[[5 @o +?"32654&,'5'&546322654&#" &$#"&547>fVvvVTxw v]BUxxUTyxH v^A____(+|T!%lϓgML____x)+{T!&lϔgMMs =>'.463227#"&5454&#"&'&5476766&RD:DC:Oɢy@Z:rdYwr)! ".hi+.iwsSJKAKL@ݰ |XHwyo†<>bQs-.cx68<32>32#&'567''#&&#4'3>64&"d9k$D7J+v=6Z*Bo,4x9 %j }*ƀwϧ}wh^)etWW<aAktAO]Rk9$!!!5!&5432!!5#67654&#"@ ><覧=]NnnMhh UyzzyU ><84353'5#"'&''#&&#4'3>32>32]PPP=(,4x9 %j >9k$D7Jo}vvxJv<aAktAO]ƀwϧ!5!3##'!5! ` @i8080k<'/27632#"'#576&#"4'5267>327&'"`Ibmn(q|n^,:4!~w$))%n4TuݾgvxaX[&ŝ9!C3276327632#"'&#"'&#'3276327632#"'&#"'&#'%g) ,N210&%pbUWM230N22+0$h( ,N120'$qbUWN13/M31+0(GG$3LKGHb 'HH#2MLGHa S!5!37!!'  _76`S@ʬAR!%Ue67&'&#"!3!67>54.#"!&'.54>325467675#53533#63232>54.#" .BFFKIC54CIKGFB/l &">ac^HD  aa_aa !EG]db=#% )(()+)QPQ((QPQ)+/ 6klj$?6FWWF6?$jlk6 }++--HNRh~&'4>32"'4>32&'4>32&54>32&54>32#!5!'!567>54.#"32767>54.#"327732>54.#"327>54.#"732>54.#",V 014.K0/*'<00<")11 NR'00 YԣLE z  hV!  Z+"  ^  _33@]22-"40446/*33UJ"+33^1/K=0T* ####  #$$##$$#  B #### *"$$" 2A!'-23353#3!53573#'5#5335!75!!5'57!hSShgTTgUVJ+IAC֛E77__vtt4!7CRb&54767&'&'5676767&'&54>32!535#5##3654.#"!32>54.#" 6!%%'F(F&%F)F'&&!4 j6)E&%F(8Iv011/59<5&?HPPIK* ')+K**K+)' *KIPPH>&5<:6uN|l||l|-I+N))N+@65555/F*3V6&7!&54''&''67.76;+"'5#"=6&'76767%25#6&' .Q$( kQ2*(}Q +A "^0!V'>A %E'75'Q]Wy_I1 #C$F)'`xo8:.@s.P mz "x?.#1p#41`&jD"acLHJ ~447| JlL"bT_32>54.#"32>54.#"!5&54767&'&546767&'&54>32'&'.#"y4[14[23\20[5  CJ "$&LF'F%$G(CN%"" S:>st=:8d88d88g66gu9:%N&KRS* '**M**M**' *SRK&N۠:9}qyyq}!%Ueiz67&'&#"!3!67>54.#"!&'.54>325467675#53533#63232>54.#"!57#&'.54>3234'67632# .BFFKIC54CIKGFB/l &">ac^HD  aa_aa !EG]db=#% )(()z7<>k987%%77;k=;7+)QPQ((QPQ)+/ 6klj$?6FWWF6?$jlk6 }++-- !yCB{C!$$!C{BCy! HLP&'4>32"'4>32&'4>32&54>32&54>32#!5!5!,V 014.K0/*'<00<")11 NR'00 Yrr_33@]22-"40446/*33UJ"+33^1/NNOO2A%)5!5!3353#3!53573#'5#5335!Z;hSShgTTgUV^^/oo#E774@4767&'&'5676767&'&54>32!&535#5##3h 6!%%'F(F&%F)F'&&!4 j<5&?HPPIK* ')+K**K+)' *KIPPH>&5<:6n5|l||l|*J".7=6&73#!&54'''7&''676&7;2547#";65'"37IML') x >oT`+`gZ +Y @#]3?&W!g A8/QE)',Qo8:$whPSmh**z1"0@)5"@YRb0&54767&'&546767&'&54>32 "$&LF'F%$G(CN%"" 9:%N&KRS* '**M**M**' *SRK&N۠:9"Q##"'##56'##"/547? dsU 2`g26;2"##'65##"'&5476;2&'5476&+"326733276=4/#"567654'&#"35&5?^g7%SB\JLZޭ\<."7Y@ؘ aj7{6Gf!KQM 1k`t0%K6F98:d  mOE:R p&i  C]&'Ax.+0 nM,W`c,L3#&'&'&6%3#&'&'&63#&'&'&6#"$&5467332$654'&'7  +  , 7  , (ҤӧvCMNDv9?cyɦt3Z|`ŻN[O}БBr1a`bb`a1)EMTTUUTTME)r3#"/4?23*A+ ZP-@3#'654'&'#"54732Nn7S3ڿWP'6?F` 1TFG*֙-@R/"#"=4?2%#"=4?2n0#NI<Ù'PH*~: ۉ8z"C"'4723!#"5472!5bGZOO;Z$}@Ϝ 3363'$6'")2y k?WXc1  3%#'#3%#%,$//c}(,377#'#'547#5773%%F*kknm*&ttrt&<<7CA<<{8AMtG#&#"'5654'5673;54'567332733273+&##&#"#&'565qI3 YY4Jv4(??)4vK2YY 2Iv4)??(4v[#;17F-:S8!cc!8S:-F71;#[RS9 cc 9Sv  ;G7567&'&'3#6737'#&'7#&'6735'67#3335#5,+UU++(*((=((<(())ͼ mm r`^^]qͼ nn q]_]`rchh1hh-.,-C..C.,.-n//_R_//~ijhh~N yy ~hiii~ zz s.. #.6CMhw!2732!'5675'&=32#$'57637&/&+"+&532?4/%32#'#&&=4?#'57335'3!273+#='!"/547354;2?!&=3d4EXJ)fd2(Vfgؐ7FK(?H! 1x0!+V^i.Z LZshV>N%!Jh,OUU*^7QG8*F 1 . ъf)MC =g9EkO 9!(-);&  ]t!y" & 2| ba$ U+  2E35733!&54?'7'7!!"'&%#'73676'77'7'&'676rK((#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*a\MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! 1DW!!5>7>54&#"5>32&54?'7'7!!"'&%#'73676'77'7'&'6762&9,!C6*]PDe+s"+ }V(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*]U1)8(3&ncQ&D- mMOHK$k$823!a IF 7=c`O]BA6$k#- kNA! (=Pc#"&'532654&+532654&#"5>32&54?'7'7!!"'&%#'73676'77'7'&'676 V.a?A[/USNGdhA@CB%VNDb,tK(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*S<\el23-2['&')b YK4JMOHK$k$823!a IF 7=c`O]BA6$k#- kNA!  "5H333##5!5&54?'7'7!!"'&%#'73676'77'7'&'676Wmm(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*Rv_`MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! 2EX!!632#"&'532654&#"&54?'7'7!!"'&%#'73676'77'7'&'676u,}-^?ET/JTTJ#H??(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*_ptcdrr@89@ SMOHK$k$823!a IF 7=c`O]BA6$k#- kNA!  $9L_"32654&.#"632#"&54632&54?'7'7!!"'&%#'73676'77'7'&'676,2==24;;7?NST2izix~"E(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*A;;@@;;Af`5(sa_t MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! .A!#!&54?'7'7!!"'&%#'73676'77'7'&'676_U(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*2{MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! ':7&54?'7'7!!"'&%#'73676'77'7'&'676(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*MOHK$k$823!a IF 7=c`O]BA6$k#- kNA!'9HR!273!567&#2&'76+&67'#'6765'533!273+#'!"/47_4BZW \_&,,X $q ӚeHZcTi*KT}75 b\V/V'f::p ?)\ ) 9s s%00%2<J\e3 + &=%62367#&'&#36&#&#"3274/"34?3'35732?5##!'53.cW{K|".m4 wJG<-V0F @jX[% 8HD }D}yt!7_ ;`OL5_k, ߋ~y}/M<4{1;C,[_ei' [)$ /:BR`j # &5%6; 65%&# !27#57&/#2#&'676+%3#'#&'47'3!27##'%!#"/6<n\Ua->+DSR04IbFER(k(_{aZ)F NF&y I#XYtTpXYSmEb,#4' FV ! Y1 1_ Ug,17H27&' # &5%6367&#'.7&67263'#%; 65%&# WNn\UaNWZn~rzrszr~o>+DSR&XYtTͿWzzWapXYSa/232#!7&!"4#".547673267Ws   y+S Leopq:*$JKK%>)َer(Y$h?}}|r<.32#".:BAW㖗866 65chŮ;?!32#".%2#".54>:BAW㖗866 65666 5chŮ;?!54.#":BA6 665ch =!!54.#"%32>54.#":BA6 6656665 ch =!!54.#"##"'5##"$'&'!5!5&'.54>32!!676767'%'#A"$@$%@#"@$"#M ONAwbjR8=>p;;p@?6HZTwCNN Ng'H''H'(H''H`XAK|@X1(ԁ3"|DD}DD}DD|" 2/ "1X@|AX1# 9Y%&'%67&673&/'67 &'"&'6?&'3' '7  &/7&'>74+-CCQT76'@\R#\;;["S^9$C9TSDGIO,%oN Mk%*U@R?? );322=  9%EEE >2dUDY,  E&%+ B@0"AR/0?wA%od/D&3.YaQ/5#3$"uI' @3/u= =#n- .... l4% % 32+#".7!#"&'&'#&=4;733783%++VTXVUT,*3/.tt/?GG~F6F~GG?>D9/Cp"632&'.'#!#!#0-D'qrJFloUrL|MsVT 'NQ9;:;PHi?CD|))Z h632>54.#"367#&7&$735&'.54>32-R+-R-/Q,*R.̛X#/&)@O߁;6FNOKKQOG32Y22Y22[00[&皗1 #+VVUUVV+ _32>54.#"%2#".54>''#/'7''7''7/5?'77'77'7?3777'_~{|~xx#A%$A$#A$$B Ah7TKA [ AJT 6g@9$x#_ rr ]$v$8@h6SLA[ AJU6hA;%y"`rq ^#v&'I('H((H'(I'{H@('k i()?Hs<]SH$e$HR^;sHA)&ji'*AHs<]SH$e$HR^; "',16;@EQ3&7"7&'7&'7&'7&'6'6%676767&77&77&'"32654&'5&'.54>323#67#&#"/&'&547&"'6%676c&Rc!#QlE+6o.5"Y67+-4*&bN%#!dW,DH5-?65$[4-*2DD2/FEQ#"/%H-HMI2/$/ .$.4OLH,J $@D V>0&8a>!U*~EmLK}`G f7r &0>j!>a)E~CKW Gis7g:M57LL75M-Z '''' Y (5[J5( \d (5J [4 ''/GS2#".54>&'767&%76'&''67&'&'&'6767654676'&7>326'##"'&'&'&54767&'&547676&'&#"6&%6767&'&'&676&5467&'&6732767&:!!  G@s.0[Y  Y[1/r@D3//b+,--,+-*).+.,,-*G?q02][l88jgh 2{|2 ̚45::64 0|z1 gg)+,.*)MMLS68!8`Z\21p?G3..3368  86!QKM)*/.*)M5$##$59gTV++9Z^^Z9++VTg9'(''&()I8:9889: Z_59eUV-, <8.>euvc>-7=bccb>7-?cwud?/8MWZZW **D@@D+8,-VTe95^&)(&''(DA:AD.*!Y[[Y! )r67&'67&'4&6%67.'4'6&&'6767&54?67&'&#&'#&'5&'"'67&'&547632>54.#"2#".54>m#1(.-!*+%(27%#+&'. )--#IQ[K(,##$*M\PQ33- ;-5?VO<8-= .34/^]]_aY[`eKRONNOQ#ejpMcNTvJKr?VlLWW7p jk%n^*V{ww[11[ ww{V)\#fnnd-#JM 7B/""0C7 NK",dnnf#ghhggggUWWXXWWUZ %3!'#!52#"62#".54>BOF/1-"#  5 O Dn; $$$$v33'554#$/V R\ FkGSGUW GJGwc%Q2u!&5476'#5!%QsikB $Y&"BYYZy'#"'&#"'&'&'&547676763232767676'&'&'&/&'&'&547676762!2!%3276767654'&'&'&#"&#"3276767654'&'&lg&  ' !   &"7WR!  FK8!  A@   %bJdG[r             $&$  ' D"&%  $ #  mR )Ky           M!r26767654'&'."#"'%"'&'&'&54767676;27>764'.'&+"'&'&'&547676762%632$"26767654'&'&)"")".'bI_H  $G $#=M\" "XQ=#$ G$  H_KIb'i)"")"q    l?W,># "#" "  " "#" #>,W?~    OYx3!#!"'&'&'&547676?6767676'&'&'&#"#"'&'&'&547>763276;%326767654'&'&'&#"6767654'&'&'&#"32l[[GJZ-   @A   !8KF  &RW7"'  / ! '  $g  %    &    OK) Rd# !#& "*"D '  ""! 2   T   :      AZx-4H67&'&'&+"'&'&'&476767632%632 #"'%#"'&'&'&54767676;276276767654'&'&'&"276767654'&'&'&""'&'&'&547676762"'&'&'&547676762'&'&'&547654'&'&'&";276-&#"+"276767654'&5476%327%&"'&'&476762  IS<)(!$$*&+)('$ *O:R{356xRO* %+&.#%% ",&+mwn<;;8rowp:;;BV0/+"8:D@*|sa  -F(7 "*=8&0!2   1-5$& 6:B4M,Ji&'&'%&'&"632%676767654&2"'&'&'&5476767"3276767654'&'&'&'2#"'&'&'&54767676~8  ,!('^&) ?.13-z  9 + 8 8 3xpkXZ+--,YV{{mlXZ+,,)\Vnl|xhe4330ic}yge444/ja~wIP"2-.$  "" PI $.-2!v   31cdvwzwcaf31cdvwwqi`43d;8rowp:;;8rown<;l,-57'36%33#3#32+3#3##$'#7!:Z0nhMZS?++?SZMhn0Z:( jPP,PP` v ")- !676762!"'&'&'&54!!J &+}r1r J!,~'h,  k-"s! K476?6763&'&'&547632676767654'&7632!54'&'&76'&&#"'&/&'&'&#"#"'&'&/&'&#"&'&'&?6'&'#"'&'&#"!'476/654'&76'327654'&'&327654'&/!/#$ +CD"   !%2   !,F#  1')D  VzVT+g/& ,$ )- 00 p*  $ ,  S  2 42  asJ#   l71]% /~[#<$  o_%?,: *(;Y)$X$+|=L!6CX&PY89Do6 b'n2  83eF] 4T&  &  /50$?- 1@& 3l K  C"P1 :07@D:5XI6.D3[+-1:   q/A8   g&l9Lp{7654'"'&#"+"'&54?67676763276323273#5%6767'&#"6"/67#"27632327654'73654'676547&*b+"CZJ"Pt >Tn:< /8)5" '$1P8b, P0*'$M/hK9O!Lt8gC9C%V)+.|&-C-)+8K Qe+',T' ;cs  /^"|Y/ 428ۇϕl%%ot5oA='Y$ aT* ''G+- %_kj~r}jL`І|\gK@/.85c($7")3SZ67654/##3276?7%54'654'36767632#"'&54767632'610B ډ v=;z1/f       (r 4@  H67; zh| 9 >6!q     B/> '-EL4'&'&/767675'7! !'!654'!4'!!$4767>2"&'&'!654' .. UTT(oR-fH ~!88!~ Uppph,p<((zd7")3SZ&'&#"227654'&'''%'654.#"65&'&'&547632#"'&'&6#" B016˄ <W ;!1 .fa      4  ;76H    |h> 96qm      BO{s[#C'%%.'&"27>7%$6%"'&'&'&47676762%'|- -      8 8@uID`qS   SqGYq > q|s)&%$64'%%&'&'&"27676--- &  & !q``q! 2327632#"'&'&5476#$ 8z@A )/?'@xH )0$'*'2 27277632#"'&'&5476#$ [Wr o&-23A?X@yJL 1 - A  ' 7 eee77ɍ8ɍ?k ONOOt7tt7u B2632#"'&'#"'&54767'&54763267632676y I  lsD!. m$   1O3  6*=P*> "#  nQ26#"'#"'&'#'&'#"'&547&'&54767&&5476326763276  Ӆ"   PmO!unY, ' _ :  (̢1#: _& #- Խ =1 '2ĺ d #!!!!!%!!!!!!!!#!5!3tnonoUHVPBXyBd !!!!!!hp"#d35#7!!#!5!343srsd!!%!!!!!!Qfgh#p"#0 !!#!5!3phhEU3!!'#'!!#!!3!5ӇM_ r,,_ #!#3!3'3#!#3!3###533D,Ԑm_|P_H_dQ#"#3;54'&'&'!"3276767653#4'&'&'&+3!52767>5oZQPB;( -- &=>TN]o"#@>%!--!'32367675&'&'.5467676236767>32#"&'&'&'#"'&'.546767675&  J))II))J &$$S$$!  J))JJ))J   !$$S$$&*!""! ((\(( !""!#%    R.-R  R-.R "   %#!""! ((\(( !""!*  " R.-R  R-.R   J4'&'&'&'.54767676322767676767632#"'&'&'&'&'&#"'&'&'&5476767676765"#"'&'&'&5476767632!  $$#5)43+0!"" %='4  #--24+."  ".+42--#  %-*:  #"!0*g*1 #$  #9+.#  "Z34+-# #-+47(." $-+C,7"  &d8:02& $&20:=-2& (10?!  '&$6/r/6$&'  'D+:!  '228:/3&$$&3/:822'  )2/@' ((& :.:806$&& (K0267632#"'&'&'!&'&'&54676763267632#"'&'#"'&'&'&5476767!6767632#"'&'"'&'&'&54767#"'&'&'&5476767632!#"'&'&'&54767#"'&'&'&476767632&'&5476767632!#"'.'&5476767632&'&54767676   $             6   /           $      (   2     6           %    <    %  (   N276767653"4'&'&'&Nxhe4330ib~~bi0334ehx;8rown<;;==>--28;BA;82--28;AB;82-&lLl+ '1% %2"'&'&'&5476767! !+ ==!fx43+,,+34x34++++4o¬ì6a-28;BA;82--28;AB;82-&lLl+ !''!! !! !WUVV]RRSR^->==>-Iٶڶ&GGlLl+ 3'7'3! !7!%%!"pZ"ZZ"Zp"->==>-giiIvIvIIvIlLlc+ %5%7'%!! !RRS#^->==>-KKGTlLl-  '%'!!!!kkspy{;y<zffz> NrqN qrK% % -S{H{{G{SlyyK7% %' -i??4?ih@3@@GstGWcGtsGcd/3%!!%#'''%!5!%777ldLr*rp*LdldM*rq*pMdE.f:UūoxoU9g.Ff.U:oxo9U.s54'&5476276767632#"#"#"323232#"'&'&/"'&5476=&'&'#"'&'&547676323232?&547'&#"#"#"'&'&54767632676C(12l30'E f:#=6.@ N8E vZ  \u E8N @.6=#a  wFNd0110dNFy~ DzI'#4#,G2$:;$2G,#4#'I~? yFNd0110dNFy ?~I'#4#,G2$::$2G,#4#'I; s"276767654'&'&/54'&5476276767632+"#"32;2#"'&'&/"'&5476=&'&'#"'&'&547676;232?&547'&#"+"'&'&54767632676&  &  PC(12l30'E f:#=6.@ N8E vZ  \u E8N @.6=#a PL wFNd0110dNFy~ DzI'#4#,G2$:;$2G,#4#'I~? yFNd0110dNFy ?~I'#4#,G2$::$2G,#4#'I; wj'&'&'&767654'&54762767676'&76'&'&/#"'&5476='&'&76767*,dJS&&cASN'@2+_:1JJ09`++H,IRAc&&RO`4++,dKR&(aDOO&@3+`90JLOF1:_+.D+JSAc&&RN`1 05HoIH 53c!77\`j4OO4jfVA7g/5 HIoH53   05HoIL43c!77\`j4OO7gfVA7f05 HLlH53  w67654'&"327632#"'&'&/#"'&5476=#"'&'&5476763232?'&#"#"'&'&5476763254'&5476276767632#"'&#"#"'&#"327676%32767654'&'&#"#"3!,L,"20[!Q?R 'b3;K*9CN90JLOF1:M@;-H<2c& S?P!\/.["P?Q &c2:4/.&"./4;=16'+&1,"%&!6'+&./4:>1:#"$./4:>16'+,4:>16'+&./4;=1cn%#"'&'&'&5476767#"'&'&'&5476767632&'&54767676267632#"'#"'&'&'&27654'&'&'&"67&'&'&'276767&54767'&'&#"276767654'&/7676767654'&'&'&#" ,!2+75.+(%),7+2!)%+(6,4."7("2*p*3!(8!3/11+)%(!3*8+($)+-58*3!+ F7 A = ;*] A &l    1A ]+;݂ !l&%",1&+'61=;4/."&./4:>16'.5 1=;4/.&&./4;=1 5+'61>:4/.&"./4;=16'+&1,"8_/$   $/_c.,b" $#  !I?30C !'#  x!  #$ "b,.$  #'! C03?I K-[3b &'#"'&'&'&547676763267'&#"327%327676764'&'.#"7632#"'&'&54767676324676762676322##"'&'"'&'.5#"'&'&'&54767"'&'&'&54767676&'&'&'&'&547676?&'32767677676765&'&'.#"7676767&'&'&/326767674'&'&'67'&'&'&#"67'&'&'&547676767"276767654'&'&'"'&'&'&54?&'276767654'7654'&'&'&"67'&547676762  !/ !  /   @!$$)''%!$$S$$"#(&)%$#2#" '&-!$%))%% $$S$$$"%)(%$ -&""#      /     / ]~     _ /   ] /        JJ!  !J     2 6 Y2 6 1    8 < d8 < 6   %),++*) !$3R  R3&!-(-%2(&"#%(.2$( &',+,)) !$3R  R3'! )),,+)$"#%(.2$( "   i !xg   !      %     !  !   g    "$)($##$()$"$  % %% %  M<\l"276767654'&'&/2#"'&'&'&47676762#"'&'&'&54767676% %-;n./''''/.n.0&''&0eN>E1354BAKN=F0353CAJxhe4330ic}yge444/ja~\[Z](.35<;53.((.35;<53.("68MITNLJ;9"68MILJ;9m;8rowp:;;8rown<;}}w"327632#"'&'&/#"'&5476=#"'&'&5476763232?'&#"#"'&'&5476763254'&5476276767632#"'&#"27654'&%&'&#"327676%327632 654'&'&#"#"&,"20[!Q?R 'b3;K*9CN90JLOF1:M@;-H<2c& S?P!\/.["P?Q &c2;,,;>J=!6"=J>:,,:>J=",|XX|X.U|JU~-|U ~U.<%DREA 11 AERD%<%DREA 11 AERD%9r99r W +?Sg"&462    "'&'&476762"'&'&4767622"'&'&4767$2"'&'&4767wvv M] LV M L#)c*##*c)##)c*##*c)#ce,2$$2,e,1 $$ 1e,2$$2,e,1 $$ 1K8)UL)U~U)^U)Ip17#((#71p17#((#7p17#((#71p17#((#7Y'.n.''.n.''.n.''.n.' K &3@MYam+%5%32476;#"'&'7632&54?#"632'&54#"/72#547"&462"'&=3$ v #$ v "@%%@(@%$&$@%%@(J-Z-OpOOpJ-Z-*2d2((2d2M*'FI*'FeF)*IF)* ( a 'U|XX|Xc( a 'Kl267632%632#"'%#"'&'"'&547#"'&54767#"'&47632&'&54763&5476'* F/-<.  E** C!Wc.<'5 F *M+F /-;/bX"C ))D  /; <F*/#J"5C7/ N".X.$M51C5 "J#//#J{ 5CLM$.X."N 51C!wJ#/[ #! 4$#"# 4$32632!"hgٜؤlLLkpGQ?rAm %!#!3!bVZ?ZS.Sd,m8 %!%!35!bVZ?S.dd,m %!!!bVJ?ZS.SԂJm8 %!!7!bVu$S.SdJ  1120`1111SSRU"SQ#Qk!7!6(!33tJ(n?l(!##lItJ?(t"  l(D"  BOS2#"327676765!"'&5463!57!##"'&'&'&54767676#  98A)1zj2~!'8::>00/1=;;>/2qKFD6454FCNNCF4546DFKo5?'#"'&'&'&547676763"'&'&'&5476767632?gC?=0/1.?BK9$&! hTj]-D$'FD,.6ME%)&2:'Vl:g0,?)!:"9JOCQ>^v:Mc*ZeC03N35%&-Kt\K%9S >BWN=!$?$8(F!5{^?ZxN676 547&'&327#"'#536767&'&'&5432&5476323254'&54329(<G8;k,0$#CV[<'$a #9 !7AX ;7%'27)b3[X H<ߞ>$3g:=TEB7WPfG+1KHP<Ff#&T'0P+A'<}DCh' 5276767654'&'4igY[FJ$$$$V^bw~9==?x}/CD}>C/GFCG# !&547"xuvw҇>2;#!!676.BDx;:t<_! !_53} ! 55! !iR ! \R2! !E53Q ! R55}__֕jj.'7'7__j3jB$#"&=4&+5326=46;#"3a77`=MRcdQMtsݓXXw(326=467&'&=4&+532;#"+w=NQdc*(N=MK1077bKM࿾XGGXJI9:tJJ ! 4$32!5##7#llLL>+đA?r\/+ *! 4$32>54&#">32!5!>llLL8+6Wgw5FV+7JawqA?rFi:}$:&N?(U?"Mt 6! 4$32%4&#">32+32#"&'32654&'26llLL7{U`m/RSPP~Y`gi>pRO{9j ]A?rs ?<:32#"&'32654&#"75!5!llLLWP[-]jj]=lUOx99hA?r%aVUa/  2! 4$32#"&54632"32654&#"7>325.llLLSFFSSFFSfҭFsrk*XKB`A?rZbbZ[bb*= P# ! 4$32%!35!llLL.ѭHA?rv]K 1=! 4$32#"&5463232654&'>54&#"2#"&546llLLVKLUULKVj __jGCJJCFHHA?rlHQPIIPPI\vSttSvB>=BB=>B &2! 4$32254&#"326#"&'4632#"&llLL"ҬGt rk*WLB`6SFGRRGFSA?rK < O$[bb[[bb $0! 4$32!5##7##"&5463232654&#"llLLi.>9:>>:9>{vuzzuv{A?r*'$=(F  76767654'&'&'35%33!  '&'&'&5476767ywbd0220dbwyxwbd0220dbw9or6886roljpq6996qp96oooo6996oooo6}9:݈@>}~~}>@@>}~~}>=A_  76767654'&'&'!!5676767654'&#"5>32  '&'&'&5476767ywbd0220dbwyxwbd0220dbwYVS%F;=`HILVW?cdB`a9or6886roljpq6996qp96oooo6996oooo6_.X<<;_<<5'(]]IBBZooV@>}~~}>@@>}~~}>=Om  76767654'&'&'#"'&'5327654'&+5327654&#"567632  '&'&'&5476767ywbd0220dbwyxwbd0220dbwhh<:mmDGHM=NGHBCw}l89un;DESJRH@_`fj9or6886roljpq6996qp96oooo6996oooo6yNNtaa'(<}~~}>@@>}~~}>= +I  76767654'&'&'!33##!5  '&'&'&5476767ywbd0220dbwyxwbd0220dbwp&9or6886roljpq6996qp96oooo6996oooo6 @>}~~}>@@>}~~}>=?]  76767654'&'&'!!67632#"&'532654&#"  '&'&'&5476767ywbd0220dbwyxwbd0220dbw;J !iiCKE@EN||;9;<9or6886roljpq6996qp96oooo6996oooo6c nm)}|X@>}~~}>@@>}~~}>=,Jh  76767654'&'&'"327654'&.#"67632#"'&7632  '&'&'&5476767ywbd0220dbwyxwbd0220dbwa:9sab:99:7o6MK *@@M^^ģbcxz7p9or6886roljpq6996qp96oooo6996oooo6KJKKJKllE&%mnޟ-@>}~~}>@@>}~~}>=$B  76767654'&'&'!#!  '&'&'&5476767ywbd0220dbwyxwbd0220dbwzp9or6886roljpq6996qp96oooo6996oooo6`E#@>}~~}>@@>}~~}>=+BNl  76767654'&'&'"27654'&'.546  &54632654&#"  '&'&'&5476767ywbd0220dbwyxwbd0220dbwg<;;<<;;;^hAh^i;;w3i^^jj^^i,9or6886roljpq6996qp96oooo6996oooo6,=>=>>>kl>=EggOOss\hh\]hh@>}~~}>@@>}~~}>=<Lj  76767654'&'&'532767#"'&54632#"'&27654'&#"  '&'&'&5476767ywbd0220dbwyxwbd0220dbw7p6MK *?AN]^Ģbbyx788c9999ca9::9B9or6886roljpq6996qp96oooo6996oooo6lkD%%lmޟ橨 KJJKKJJK@>}~~}>@@>}~~}>=+8Ca  76767654'&'&'"32654'.  7!5##7  '&'&'&5476767ywbd0220dbwyxwbd0220dbwK('NLNM'&IHHIHahvtl9or6886roljpq6996qp96oooo6996oooo6{z~{ӟ>-,g#&%q @>}~~}>@@>}~~}>= (!5##%  '&'&'&5476767kn9or6886roljpq6996qp#:9q @>}~~}>@@>}~~}>=#A676767654'&#"67632!5  '&'&'&5476767`a`Bdc?WVLMD`=;F%S 9or6886roljpq6996qp ooZBBI]]('5<<_;<}~~}>@@>}~~}>=1O>54'&#"67632+32#"&'327654'&  '&'&'&5476767_f`a@HISSED;nu98l}wCBHGN=MHGDmm:}~~}>@@>}~~}>= +! !335#$  '&'&'&5476767@J@搚9or6886roljpq6996qp  @>}~~}>@@>}~~}>=!?67632#"'&'32654'&#"!5  '&'&'&5476767<;9;||NEDAKCii! F9or6886roljpq6996qp=|}'mn %@>}~~}>@@>}~~}>=,J2#"&5476.#"32654'&#"67632  '&'&'&5476767b:99:bas9:}~~}>@@>}~~}>=$!35$  '&'&'&54767679or6886roljpq6996qp@fE@>}~~}>@@>}~~}>= $0N2"'&476' 654'&'>54& 74632#"&  '&'&'&5476767i;;;<<;;<*iwe;;i^hh(i^^jj^^i,9or6886roljpq6996qp=>lk>>>=>=EssOOgg]hh]\hh@>}~~}>@@>}~~}>=.L%3276'&#"32767#"&'"'&547632  '&'&'&5476767=887xybb^^NA?* KM6p7!a9::9ac99999or6886roljpq6996qp /޸ml%%DklgKJJKKJJK@>}~~}>@@>}~~}>= %C2#"&547>  '!5##7  '&'&'&5476767#[--Z[ZZ--KMMK"LOt9or6886roljpq6996qp{zz{ӟ>-/g#&%q @>}~~}>@@>}~~}>ij !!5!!IKG ppp 7%Qp?4NGi85 b=<22pJJ '-m?GNi!!iu9.Ǘ>~~>iu2"&'&'&5476?!".'&47>3!'&'&54767>2 .(  '!  !'&  (.h2p "2" pi8!5! $EvZPJJi8!5! $EvHJJi8 #3#3#3!!5 sll66ivpppJJi8 55!#3#3#3$Hll66΄ΊXXXXi8!!5 $EvJJD! k>>D! k>>  vvib3!5 5!"'&'&'&i &&,v,&& 0+*%!JJ!%*+i847676763!5 5!"i &&,v,&& 0+*%!JJ!%*+0]!! MUVXeooi855!q΄Ξ0ij%5!!53  !Io>ij%5!!53  !Io>& !73#57!!'|Zoto|C} 2&& 5!'53#'!!!'Z| l }&2 !'!'!53 !yG!Z&cZIuoڞ  3#5!7!!! ycZIcZ5&o rd !53#'5!'! !c-Ic-&-fo%Jdc;dJrd 7!573#5!! !--c-Icfo%LJd;cdJ1!6767632#"'&'&'! $Iʞ uB "&*.37#37#37#37#5!!!!3'#3'#3'#3'#6666l`"66$66$66$66ZPhp> 7&#"7'7 #%+%;?2M3~{FC*9oX:Wib 55!5!!'!~䴴ddPR '327'' #!?;%2~4~*CF9XUp>2%&#"6767&'&"67632&'&547676767耕;>@Q#"F#!!%)*(+'~ !Ap*G&/$##*0,0.+"W!'&'&#'ZGGCia/4767!"!47676763"'&'&'&5!3!&'&5" %!*&,,&*!% "eeZ'&$(0+.!"-+0($&'Ze2&'&'&'&54767#"'&'2767&'&'32$A! '+(+('~!#F"#Q@>;CGGZ'!&'&'$W"+.0,0*##"/&GgX+B6%"'&'&'&547676$47676762"'&'&'&'&'&547676762$ n 8   I > I % O 8 lbQu R$'68"   vc.676767632#"'&'&'&%&'&54767&'&5476;#$&*0/6.i3b.-#4!!YY!&:?$ fLLf#&#/:&'+-23-+'rr'+-32-+Ve"'&'.54?654'&'&'&+"#!".4?64/&4676763!2;276767654/&54676762Q gg'Q  c     c  g"'&'.54?654'&'&'&+"#!".4764'&4676763!2;276767654/&54676762NSl TuSNh    4  i^+#76767&'&/3#6767!5!!5!&'&'zK~BaJ"@@"JaAK^&'c5 5c~&OUä'66'U=;JHd)))dHJ;=#u ! !=?Fvu-1< + n' 2 ]' 2 @   @'   @'   '  @' '  *8@ *8@'  *8@'  *8@' '  *8@'  *8@' '  *8@' '  *8@' ' '  **8  *8@'  *8 '  *8@' '  *8 '  *8@' '  *8 ' '  *8@' ' '  **8@' * *8@' ' * *8@' ' * *8@' ' ' * *8@' ' * *8@' ' ' * *8@' ' ' * *8@' ' ' ' * **8 *8@'  *8 '  *8@' '  *8'  *8@' '  *8 ' '  *8@' ' '  **8@' * *8@' ' * *8@' ' * *8@' ' ' * *8@' ' * *8@' ' ' * *8@' ' ' * *8@' ' ' ' * **8 ' * *8@' ' * *8 ' ' * *8@' ' ' * *8 ' ' * *8@' ' ' * *8 ' ' ' * *8@' ' ' ' * **8@' *' * *8@' ' *' * *8@' ' *' * *8@' ' ' *' * *8@' ' *' * *8@' ' ' *' * *8@' ' ' *' * *8@' ' ' ' *' * *p pp@'  pp '  pp@' '  pp'  pp@' '  pp ' '  pp@' ' '  pp8@' * pp8@' ' * pp8@' ' * pp8@' ' ' * pp8@' ' * pp8@' ' ' * pp8@' ' ' * pp8@' ' ' ' * pp8 ' * pp8@' ' * pp8 ' ' * pp8@' ' ' * pp8 ' ' * pp8@' ' ' * pp8 ' ' ' * pp8@' ' ' ' * pp8@' *' * pp8@' ' *' * pp8@' ' *' * pp8@' ' ' *' * pp8@' ' *' * pp8@' ' ' *' * pp8@' ' ' *' * pp8@' ' ' ' *' * pp8' * pp8@' ' * pp8 ' ' * pp8@' ' ' * pp8' ' * pp8@' ' ' * pp8 ' ' ' * pp8@' ' ' ' * pp8@' *' * pp8@' ' *' * pp8@' ' *' * pp8@' ' ' *' * pp8@' ' *' * pp8@' ' ' *' * pp8@' ' ' *' * pp8@' ' ' ' *' * pp8 ' *' * pp8@' ' *' * pp8 ' ' *' * pp8@' ' ' *' * pp8 ' ' *' * pp8@' ' ' *' * pp8 ' ' ' *' * pp8@' ' ' ' *' * pp8@' *' *' * pp8@' ' *' *' * pp8@' ' *' *' * pp8@' ' ' *' *' * pp8@' ' *' *' * pp8@' ' ' *' *' * pp8@' ' ' *' *' * pp8@' ' ' ' *' *' * p*p8 *pp8@'  *pp8 '  *pp8@' '  *pp8'  *pp8@' '  *pp8 ' '  *pp8@' ' '  *p*p8@' * *pp8@' ' * *pp8@' ' * *pp8@' ' ' * *pp8@' ' * *pp8@' ' ' * *pp8@' ' ' * *pp8@' ' ' ' * *p*p8 ' * *pp8@' ' * *pp8 ' ' * *pp8@' ' ' * *pp8 ' ' * *pp8@' ' ' * *pp8 ' ' ' * *pp8@' ' ' ' * *p*p8@' *' * *pp8@' ' *' * *pp8@' ' *' * *pp8@' ' ' *' * *pp8@' ' *' * *pp8@' ' ' *' * *pp8@' ' ' *' * *pp8@' ' ' ' *' * *p*p8' * *pp8@' ' * *pp8 ' ' * *pp8@' ' ' * *pp8' ' * *pp8@' ' ' * *pp8 ' ' ' * *pp8@' ' ' ' * *p*p8@' *' * *pp8@' ' *' * *pp8@' ' *' * *pp8@' ' ' *' * *pp8@' ' *' * *pp8@' ' ' *' * *pp8@' ' ' *' * *pp8@' ' ' ' *' * *p*p8 ' *' * *pp8@' ' *' * *pp8 ' ' *' * *pp8@' ' ' *' * *pp8 ' ' *' * *pp8@' ' ' *' * *pp8 ' ' ' *' * *pp8@' ' ' ' *' * *p*p8@' *' *' * *pp8@' ' *' *' * *pp8@' ' *' *' * *pp8@' ' ' *' *' * *pp8@' ' *' *' * *pp8@' ' ' *' *' * *pp8@' ' ' *' *' * *pp8@' ' ' ' *' *' * *pp8' p *pp8@' ' p *pp8 ' ' p *pp8@' ' ' p *pp8' ' p *pp8@' ' ' p *pp8 ' ' ' p *pp8@' ' ' ' p *pp8@' *' p *pp8@' ' *' p *pp8@' ' *' p *pp8@' ' ' *' p *pp8@' ' *' p *pp8@' ' ' *' p *pp8@' ' ' *' p *pp8@' ' ' ' *' p *pp8 ' *' p *pp8@' ' *' p *pp8 ' ' *' p *pp8@' ' ' *' p *pp8 ' ' *' p *pp8@' ' ' *' p *pp8 ' ' ' *' p *pp8@' ' ' ' *' p *pp8@' *' *' p *pp8@' ' *' *' p *pp8@' ' *' *' p *pp8@' ' ' *' *' p *pp8@' ' *' *' p *pp8@' ' ' *' *' p *pp8@' ' ' *' *' p *pp8@' ' ' ' *' *' p *pp8' *' p *pp8@' ' *' p *pp8 ' ' *' p *pp8@' ' ' *' p *pp8' ' *' p *pp8@' ' ' *' p *pp8 ' ' ' *' p *pp8@' ' ' ' *' p *pp8@' *' *' p *pp8@' ' *' *' p *pp8@' ' *' *' p *pp8@' ' ' *' *' p *pp8@' ' *' *' p *pp8@' ' ' *' *' p *pp8@' ' ' *' *' p *pp8@' ' ' ' *' *' p *pp8 ' *' *' p *pp8@' ' *' *' p *pp8 ' ' *' *' p *pp8@' ' ' *' *' p *pp8 ' ' *' *' p *pp8@' ' ' *' *' p *pp8 ' ' ' *' *' p *pp8@' ' ' ' *' *' p *pp8@' *' *' *' p *pp8@' ' *' *' *' p *pp8@' ' *' *' *' p *pp8@' ' ' *' *' *' p *pp8@' ' *' *' *' p *pp8@' ' ' *' *' *' p *pp8@' ' ' *' *' *' p *pp8@' ' ' ' *' *' *' p *p2F  5 ~d22hp %#3 5p<~:p 73 Ù+8bb:pB 7*>PNqpB '*N>PNq^DpB *>PNpB%  p*)NPpB5  5*)KbNP#u >>u-4k7!!  767654'&'$  $'&'&547676~|fiffif|~ ~{ghffhg{>g3@??@̀@??@;:rs죟sr:;;:rssr:Ŭɪ4k3?  767654'&'$  $'&'&547676!!#!5!*~|fiffif|~ ~{ghffhg{>g3@??@̀@??@s?LLB;:rs죟sr:;;:rssr:ŬɪKss4k3?  767654'&'$  $'&'&547676   ' *~|fiffif|~ ~{ghffhg{>g3@??@̀@??@sSl`k`am`B;:rs죟sr:;;:rssr:Ŭɪ3x23w3x* _'I&I'IIiLX#53676&'&3#'&'&'77KGBEA14?JHBE@13@, FCD4 MFCD4iLX+5!676&'&3#!!'&'&'77#537KGBEA14? JHBE@13@ @FCD4٨FCD4ΪiLX#%'&'&'775%676&'&1"JHBE@13@)KGBEA14?mFCD4FCD4iLX09%'&'&'77&'&54767676&'&&'67' KHBE@13@ SBcdKiKGBEA14? Ae$H817'AC!FCD41IosV='73'/0/= #JHBE@13??-0\"#,(KGBE@14?' .!#$TA0@SGLCD55FCD4M 25DCL802&&FCD4x$'a8]HH]iLX#''&'767!!67&'&'&!!3#x@30?F;OJ < ?41AEBGK9n-< JFD 4DCFRiLX15''&'76767654'&'67&'&'&63#YE@>`mB9&LGBEA14? 4>XabcOAKGCE@13@)k6HFgjJG*$Q]GCD4ozlo!FCD43>'iLX=A654'&#"32676&'&'&'&'77&'&547673#~@@m KGBEA14? R7Nm/((JHBE@13@(:.mhT+FCD4Ea8J'JFCD42PiLX3'&'&'77&'&53676&'&67653N=kJHBE@13@S8Mm.)'KGBEA14?&8/mriRFCD4LFaIȢJ(FCD41P8*)!526732#"&'.#" #"&54632`>z_  HZ92&2 ` G[>6+ l9TA6?&#Hn!bSA8?S*b)5!26732#"&'.#" #"&54632`_  HZ92&2 ` G[>6+ bl9TA6?&#Hn!bSA8?SF 5 5E~_~FѶeѦF 5 5~_~FѶeѦG'7 +F&7 ,F''7 +F''7 ,G'7 +F '7 ,FN;B%#"'&'&'&#"5>32326#"'&'&'&#"5>32326 5F_Wc UOX^Xc  TN]_Wc UOX^Xc  TN\`~PNE;=LTNE;=KPD:32326#"'&'&'&#"5>3232655F_Wc UOX^Xc  TN]_Wc UOX^Xc  TN~`PNE;=LTNE;=KPD:327&#"56767326 5F_W>K.}NN]_WcSP9+OX^X=K.}NOX^QbFeSQ:+N\`~PD4KUNE;@LTNE4LRN"*,@J^po_FN5<#"'3267#"/'7&#"5>327&#"5>32732655F_W>K.}NN]_WcSP9+OX^X=K.}NOX^XbSQ:+N~`PD4KUNE;@LTNE4LRND:@J^FT 5!5!-5 !5!E~~~~~/0\^ҲЪ~FT -55!55!~~ҲЪ᪪/0FN%#"/&'&#"5>32326!! 5F_WcUOX^Xc TN~`~PD:32326!!55F_WcUOX^Xc TN~~`PD:323265-5E^Wc TPY_Wc UM]~~OE;=LSNE; =KJ/0:ҲЪF !(#"/&'&#"5>32326-5 5E^Wc TPY_Wc UM~~OE;=LSNE; =KJҲЪ/0,F -55!55!~~%ҲЪ᪪(/0٪,F 5!5!-5 !5!E~~~~~%/0\~ҲЪ^6F 5 5 -55E~~~~/0V/ҲЪа/6F -555 5~~~ҲЪ۰/'/0K/F& 55E~~_p/ѦѶF& 5 5~_~p/om//G&'7 CF&'7 DF{ 5!5 5!~Ѫop9F{ !5! 5 !5!F~~`~~ѪF555~~pNpopF 55 5E~~~`~p pUF)$.#"#"&'532767676325F]NT  cX^XOU cW_~TL>֪VJ<:DNTL<:DNDopF%,5!5!.#"#"&'53276767632 5~]NT  cX^XOU cW_}`~>֪VJ<:DNTL<:DNDfF $!!!536767623!&'&'&!!~B=)2 1MQPM1 2)~Z{+DD\93[2332[0<[EC,FW7!!%5$~TY)Yy]]x|FW%!!%5$E~~YTY)y]]x|FW !!'7!5!%5$NQxQ?oTY)YqPP]]x|FW !!'7!5!55%$NQxQ?Y)YTqPP|]] FK75!5!%5$~H:3֪k-QtXVv FK75!5!55$%$~~:H3֪kVXQ-qFK!5!7!5!7!!!!'%5$V{}%.RV}||{H:ss1st-QtXVvqFK!5!7!5!7!!!!'55$%$V{}%.RV}||:Hss1stVXQ-yF:E#"'&'&'&#"5>76326#"'&'&'&#"5>32>%5$E^Xc  TPY_XW UM]^Xc  TPY_Wc]H:(NE;=LTN9 A=KOE;=LSNE;C E-QtXVvyF:E#"'&'&'&#"5>76326#"'&'&'&#"5>32>55$%$E^Xc  TPY_XW UM]^Xc  TPY_Wc:H(NE;=LTN9 A=KOE;=LSNE;C EVXQ-F6A#"'3267#"/'7&#"5>327&#"56767326%5$F_W>K.}NN]_WcSP9+OX^X=K.}NOX^QbFeSQ:+N\H:$PD4KUNE;@LTNE4LRN"*,@J-QtXVvF6A#"'3267#"/'7&#"5>327&#"5676732655$%$F_W>K.}NN]_WcSP9+OX^X=K.}NOX^QbFeSQ:+N:H$PD4KUNE;@LTNE4LRN"*,@JVXQ-F7 5~~`~pppoF%5555E~~~`òi'%!%!!N r'%!!!N j$V!#4&#"#3>323#po;jedV&33 3###2iE#!#3!l9o`!#3!n奥`3dVh '"276'&'&'2#"'&7673:TVNL?1pw~xw{|];4NLEfˑRh]p[mNssg.g  53#5#"32$pDFԕ1E:E^+焀f##.+;#"&!2326&#2;n8ĬB}lcx9E͸u䄆~hb–m؍O6 p #3 632'&";A,-07``Te^e " 654&7.5463!!"32 3 G:WiPnPM/1|I49*$#"!!#!##53546;#"!5463YF9Z"#ǜPhc//яN((hcN*#!##53546;#"3#ܦ9ZEǦ`/яNPhc*!#!"!!##53546ͦZE烈{Phc/яN*J)-#"!547676;#"!#!#!##5354633#Z"#N#GuYFm99((hcNU'Phc//яN*J&#"!5463!#!"!!#!##535463Z"#ǜͦYF9((hcN{Phc//яN*-54'&+"##535476;2!!;#"'&5#5!![Z#"NNOLU""gIIz`ch((((h=яNUVVSN''PO`cY&'&#"#"'&'5327654'&/&'&547632&547672!!;#"'&5#5354'&"MBL?i95,-8npWSWa\YYWu??-(9DE\e@FSR~XUU!"gIIyy+1=>1/?+*'W@%$!+[[#5-,QK(#*$JKNV _]`\L''PO`NA+210@=TGL* 35'5467676?67654&#">32jj:(OS!ɥ]TWGav.3QQ2L{4<+VZ@EL89CFnY1^5YVe3#i'?3#%3# 3#e͊ ]'.#"#4632326=3#"&04 $q]M!7+3$p\L69! 2-ev 3)dwW# F3#'#ߩ}} F373߾}} M #.#"#>32j YKJWj6978w{zM 332673#"&j YKJWj 6978w{z3#׸53#3#͊}͊1#!#S԰53#h73#'3#ᇇᇇh 3#3#'3#pqᇇdh 3#3#'3#pqᇇd3#3#dh 3#3#3#3#ᇇᇇddt$&;#"'&'#"'$&7336767654'3>>996\h@H龰p::]ꫳo5;5ISB5:&e\^}C"7:m4w>7K`X %+53276=3 AQ Y',VV,1jٻ?X%+53276=3;#" EQ Y',,(Y1cVV,1jj1,t,>%#$'$&73!2%7&'&54767632;#"'654'&'&#"]cp::HI4/JI{H_d^ /$7%,$+<'g\^sM6,|y$K2S%jAzG' <8BN0654'&323276767'&54767632#!%;(/$$2$&AKH69WuFXGDQ;W)FCoc+M;3*)3P& ]027EW4,E$2Hf3Џ,'!5;#"'+5327&'&54767632"67654'&'&) #rz{r#!:99 2=9  3P2*I1C299(M.L,0W 5+5DE2.4! ` .@%&'&'&54767632;+'$'&547332766'&'&#"?;*l4$$Oe2Y-+(8rU>886~a+#. 4DZ*  #+m=E2X:zFNV}`kL:DbZzWK# :<,;   `&  R?&  R %4'&"2>"'&4762J2J2n8:8::8:(8)*8@@@@@??t$ ' v' e & ' YR H?& ' YR Ht$' v  &  YL?&  YL .G%3#"'&'&'27'&5767&567&'&7676&#"7$,unJ7BfYBt)vV{[yVb.AQbF'03T8/.9;Ul˸dP]vbĘe4)@5 [_w$%-_,. d! M fMK7&'&'&5672+53276767&'&7676&#"7K]LJADDOBCǓsZt^hUF'03T8/.9;Ul#4b4bBPH:jV$%-_,. d! M fMK)B;#"'&'+53276767&'&'&5672'7&'&7676&#"7>:B-^f%CǓsZt^hU[K]LJAD&F'03T8/.9;Ul 4b)N"w6a.%PH:jV#$%-_,. d! M fM .26%3#"'&'&'27'&5767&563#3#$,unJ7BfYBt)vV{[yVb.AQdP]vbĘe4)@5 [_wF"&&'&'&5672+53276763#3#K]LJADDOBCǓsZt^hUˈ#4b4bBPH:jVRF)-1;#"'&'+53276767&'&'&56723#3#>:B-^f%CǓsZt^hU[K]LJAD5 4b)N"w6a.%PH:jV# .26:%3#"'&'&'27'&5767&563#3#'3#$,unJ7BfYBt)vV{[yVb.AQpᇇdP]vbĘe4)@5 [_wdF"&*&'&'&5672+53276763#3#'3#K]LJADDOBCǓsZt^hUˈqᇇ#4b4bBPH:jVLdF)-15;#"'&'+53276767&'&'&56723#3#'3#>:B-^f%CǓsZt^hU[K]LJAD5qᇇ 4b)N"w6a.%PH:jV#d .26:>%3#"'&'&'27'&5767&563#3#3#'3#$,unJ7BfYBt)vV{[yVb.AQ!pᇇdP]vbĘe4)@5 [_w>L"&*.&'&'&5672+53276763#3#'3#3#K]LJADDOBCǓsZt^hUˈqᇇp#4b4bBPH:jVږ>L)-159;#"'&'+53276767&'&'&56723#3#'3#3#>:B-^f%CǓsZt^hU[K]LJAD@qᇇe 4b)N"w6a.%PH:jV#3 + 5  bV!"#367632+53265F^`IIN,\GCCoa`Z ` 33###53`<Ĥ V` 54;33##"3276󮥣0Iko^#V`p?`3A0ic3'q= tCUia4'q tC[i^3' |CPq=jcZ' urd tCUjcZ' wd tCUiaZ' urdqiaZ' wdqPj3' vF\q=ccZ' yCb tCUPjV' tC} vF\ccW' yCu |C|PjZ' ud vF\cc:' xCu uDcc:' wKD xCuPcu' xCu vFPVY' {CP vFp\VZ' {CP urd\VZ' {CP wd\V'4 {CPcc['u xCubj&Z,!!,=32653#"&R^eV=QQ, &3733;#"'!5 767654\}uu}W B&[u-=  FpgM,>ꅗ:H~ w&3;#"'!5 7676549 B&[u-= &pgM,>ꅗ:H~$+%653;#"'#"'$&733276373F,'YDueFmyMY>9;$AHc}uu}I~jkj1,3.(B"[\ss~B"5F$ +5327653'373NHuDY',}uu}se\,1jjFu%+5327653;#" 3731EuDY',,(YCu}uu}VV,1jkj1,~FuF7>65&'&'&54767632;#"'&#"#"'$4733276373R*(/HK&iOsgea! );BfsP^i9:ꅗ:H~F 3;#"&5E^ a.|D_<22  m ~  R[IOet6IZImyZ}tmm3yg$gj6bgWgyeE=6eRmineene*e+geec1B6MB5B6OmtTImR3dggZ3TXMI{dVg{{Xg5 bggggg[EEEEe[ininininininnenenenenegegegegegegeg@B6B6ininingegegegee enenenenenegegegegejl?++zv  bbbbggeggeggeg]euycycycyce1e1e1EEEEEE=MeB6eRORORO*Jgge egeuil$g + B6bg\gjgwe[>Zk 1e1e-F06ROR(]eS(]ON < ZOeIinggeEEEEEneininngege+ggegge(O < ZOegebinn[g@ininneneggeggeuEEyce1?jKeeeeROinneggeggeggeggeeB6j|o1/e/e  ecOWH E ne  RereeeneneowwweeeeJVJV ohCEge-e=d$vhXXckkR1k 11reNB6MB6e[OO(O(bOOOOVU,ee <eOOMeeJe1d11*00iiBi ?!?0"OIII6i6iiiMMmcmc6i6iq*Ei2mi2ii *U';B?PX WWWW';m? *UUo-@?t9U 7'i`i {tCsrmMI_EoRjg6bgjWeeg6gFeewo*eBgew`geo>B6B`geUB9eeUZ*d(5dyo*ge*yludNNd:dgge}9e$MT:fkgyugem(G^Zg0ggee'1degnen[g6rLgggdgyKbcjdZ75ybbjK6jgjWgec2l66Zc5inpd>`neG-wYDngee16B6'dB5A7>eT>nene$ecDx$YB6gydT-Y5gg`dgQgdgCe--eeeguegygygeF-E_3>"Wdd?2~75G-ywYY+6-+%jMPgegeeeB6eB66B5AA= = 75G-Y0)jAdininnneineine75G-yw(ObbggeggeggececB6cB6cB6AZ>e>ueB<0)gelwB6* n87e[[ uY2ngeree-]egegeT>T-16"N*B6MOl2B6@Q$EE?Ei???KI?Imi|ii????icac|i"h????K"?cAmAAgmQe|i|isie???T?m"1$111?ingeeeeeenenenenene$*gejjjjj#+++#666bbbbggeggeggeggeWWKycycycycyce1e1e1e1EEEEEB6B6=M=M=M=M=M6B56B5eB6ROROROMB6in*ininininininininininininneneneneneneneneQ=ggeggeggeggeggeggegge\gj\gj\gj\gj\gjEE-----eB6eB6eB6eB6eeeeeeeeQQXwwwwwwxdooooooooQgegegegegege********.Ivyyyyyyyyeewwoogege**yyeeeeeeeeQQXdyyyyyyyyeeeeeee(___Ej{ooooookq******eeyyyyyFM_33_3IpZZ33IIII33??h3I e ~e$$$$$$p ~363BFFc6m6<8$BBIZdIINIm8[RaPJ{{{c\iN{TX8[RaPJ{{{c\PMgVwtbi )5Ut$=iU<U66@_}03cJjtW3 FF'p$S]]\5{T{TX8{[{X[a{ {66%6g6KB66"6m6B5565eellgrZyiyZyZi'ZzizZiZzizzZjZjZZ 77Z(GdZZyiiyZlZZljlZZZZiZzizZzZiZiyyZyiy`i1;@;;; ;;;imm;iliZiZZiZ1i1y]EEE+EE+ss3b#I666t[[EEEE***iiiiiilll33WEEE22EEEEEEEEEEEE3m3mWlEEEI33333 = =3NE+EE+EE3NE+E+EEZ3%3 dlsKKf_ff_f_ff_fttttttttttHdHdHfHdHdHdHdHdHdHdHdHddHdHd?dHdHdHdHdFFt3]tZttutwtwstepeppJp~ ttttZttttttttbtbtptttZZ_tttttttttttttttyttttttkCCtt1tttttStttttbtt>tttt ttt2tt/tttt2tt*tt"tt5tt!tt5ttetRte{bvttttttttttttttBBBBBBttttttttttt5t5t_ttptltpt tttttZtMAMMlv&/O|dddd0dKMJKNN+M+++++-vd9KKKKdccKMuWWKKt[tmtmtmtmtkRRllt,c5qhh2Q}.Bwttttttttttiiiiiiiiiiiiii&&rruiigiFFFFFFFFF*FFFFFFFF*FFFFFFFF*FFFFFFFF*FFFFFFFF*FFFFFFFF*FFFFFFFF*FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF*FFFFFFFF*FFFFFFFF*FFFFFFFF*FFFFFFFF*FFFFFFFF*FFFFFFFF*FFFFFFFF*FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3333333343434 *iiiiiiiiiiiii**j+dgB6ge******2cb( X!!6hhhht,ttq`q,t,t,ssssb  iiijjiiPcPcPccPP\\\cees1bu,< 0 $%*K-r294K7D9:;< R&Y\99999 &&&&&K&D: $$$$$9$&$*$2$4$7a$9}$:$>>4>L>? ??@@t@A8AB@BPBCCxDD<DEE\EF,FGpGGHH\HHIHIIJJ J8JK,KKL|MMMMNXNNOO4OLOPPdPQQHQR8RSST TTUHUdU|UUUVVV0VHV`VxVVVVVWW,WDW`WxWWWWWXX X8XHX`XxXXXXY`Z Z(Z@ZXZtZZZZZ[[ [8[P[h[[[\T\l\\\\\\]],]D]\]t]]]]]^^^4^L^d^|^^^^^_ _$_<_T_l___`L``aahb bcdccdd,dDd\dtdddddeee4eLef$ffg|h@hi@ijjPkk`klHllmDmn0nxnoXop<pqqrrrshstpttu@uvvwwtwxlxyyhyyyzLzz{@{|(|}}d}}~\ Td@,l|d0XL$ l<d@x ||DT$\< d4P 0h`$Lhx HdxPlT<X(4H`0DXl$8Lh$Hdx8p0`t h|d0x (<Pdx4$<tH\p 4Pl <XtHXhx<L\ (@<| L4tP`$l,D\tTD`xh|\TT°pXĸ4ƐǬ`Ɍʌ ,ˠ ẍ̨̘ͬ͜ h΀$ό4Ld|Ьм <єѤtҤҼ(8`pӀӐL\Ԍ0Մ՜D,<4Tبظلٴ<xڨڸ(8 `ܐ0x4ޤ޼H`߸h 8Ph8HDLhtl,(LLd,PP8(d4x8t \t,l<xD 0Tl  h(pL\x,<Tl 8Pl4Ld|4L    T  L  ( 8   \l|(8DTdt,\ x`$`h tDh T0|  T  !D!" "0""#(##$t%%%& &&','\''((L(()D)* **+$+,\,--l-.D.l../@/00,0D0\0t0000011 181P1h11111122(2@2X2p2222233(3@3X3p3333344404H4`4|4444455(5@5X5p555556 6(6@6X6p6666677707H7`7x7777788(8D8\8t8888899 989P9h99999: :$:<:T:l:::::;;;0;H;`;x;;;;;<< <8>>4>L>d>|>>>>>? ?$?<?T?l??????@@,@D@\@t@@@@@AAA4ALAdA|AAAAABB(B@BXBpBBBBBCC C8CPChCCCCCCDD(D@DXDpDDDDDEE E8EPEhEEEEEEFF(F@FXFpFFFFFGGG0GHG`G|GGGGGH H$H<HTHlHHHHHIII4ILIdI|IIIIIJJ0JLJdJ|JJJJJK K(KDK\KtKKKKKLL,LDL\LtLLLLLM M(MDM`M|MMMMMN N$N<NTNlNNNNNOOO4OLOdOOOOOPPP0PHP`PxPPPPPQQ,QHQdQ|QQQQQQRRR,RDRTRlR|RRRRRS S$S<STSlSSSSSSTT,TDT\TtTTTTTUUU4ULUdU|UUUUUV V$V<VTVlVVVVVVWW,WDW\WtWWWWWWXX$X4X\XlXXXXXXYY(YDYTYlYYYYYZZZ(Z@ZXZpZZZZZ[[[0[@[X[p[[[[[[\\0\@\P\h\\\\\\]] ]8]H]l]l]l]l]l]l]l]l]l]l]l]l]l]l]l]l]l]]]]]^^ ^8^\^|^^^_,_`__` `<`X`p```abbcc c<cTctcccdd8ddee@eleeeef$f<fTfpffggLg`ggggghh\hhhiDihijj8jtjjk$kll@lm|mmmn,nhnnnnnoo$o8oLo`otooooopLpqqr4rs8ttuuv vvwDx xyDyzz(z{{|,||}8}~4~<8HtHD\|<\|<Td|$4DTdt 4L\tX4dL|(t\<<xL`tT4lld(Pt@$l0@8x8xp d@|<|d H$T@P(x(DP Hp<Xl0HLlt4\|dPtĘĴ,\|<Ɯp`Ɍ@ːxDpΈΨ ,ψ<ЀT8ҼHӔ(lԨ(h4|HװX,٬(ېܨ0lݤHhH<HD|@tp<t48t4X(Xt0`$$\4x$T$D `D<<,<`DdDxH ,|tH 4 X |  8p$HdD` <hX0` <Xt8L 8TpTl $!`!"p$,$H$t$$$%%$%T%p%%%%&$&@&l&&&&''D'`''''((<(p()D)x)*+,H,,-H--.d..//@/0 0`00011X111122L2x222303|33484x44585686787`77778$8@8h9X9:xCtF<FtFG(GH$HIJ,JMOP$PQQhRT`TTUVtWWX`Y(YZ^$^_ad<de<effg,hpij0jk|kkkkll<l\l|mnohpqqr<rslsthtuuvdvw<wx8yyzz{{|}X}4$0XlTpH \<D$(t84td4@\D@T(P$xHlxĐ8h`ΐϐмѤ,Ґ8xD8ո(l֜pX٬,T\T<@P 0@X ( \    H d         l<d<pHh  <!"`#$%\&(''(l)P)*+,,,--4-d..0.X.//(/X///0P0|001<112,2|23$34<445456t7789:;;;;<< < <4> >D>`>>>>??8?d???@@(@D@`@@@@AA0ATAxAAAB BTBpBBBCC4C`CCCDDDDpDDEE(EDE`EEEEFF0FTFxFFFG GTGpGGGHH4H`HHHIIDIpIIJJ0JTJxJJJK KTKxKKLL0LdLLLM$MPMMMNNTNNNO$OXOOPP(PDP`PPPPQQ0QTQxQQQR RTRpRRRSS4S`SSSTTDTpTTUU0UTUxUUUV VTVxVVWW0WdWWWX$XPXXXYYTYYYZ$ZXZZ[[0[T[x[[[\ \T\x\\]]0]d]]]^$^P^^^__T___`$`X``aa8adaaab$bXbbbc(cdccddTddde$eXeeffHffgg@gghh`hhi i@ihiiijklhlm mn nopTqqrs8ttuPuvw wHwwwwwwxxyzzP{{|4|}}~$~t@|,t 8Ld0d4PL\p@\|ld 4PL,\`(,Lld0X0,X (D`|$@\x8p4d \ b+@h8   :0*ln p))rQQtrrvyyxz|     ` `"$?S?S?T?T?U?V?V ?W ?=?>?3??ʿ??? !? ?!?"# vqjz{d >n "" ??? Tz 0`$$b)(d0/h75l;;rDDtFFvIIxLLzOO|RR~XV         `??ݿ??տ?????????ǿ?ƿ?ο??ѿ??Կ?ȿ zRop_bc l m k n o q8T. $&6     !"#$%&'()*+,-./012 ` `"%(+.1 47:=@C FILORUX[?????????????   ?? ?# ?&#?)&&,)(/,(2/.?511843?;64?>99A<:D?=?G@@JC |~~|~~}};2 -c W  (4< (>z< = =@=d=>7>!< ===>G><=#== >Y>< =,=J=> >g> 0 2  *7 2y  , "3 :i %: h; << <`Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain DejaVu LGC Sans CondensedDejaVu LGC Sans CondensedCondensedCondensedDejaVu Sans CondensedDejaVu Sans CondensedDejaVu LGC Sans CondensedDejaVu LGC Sans CondensedVersion 2.10Version 2.10DejaVuLGCSansCondensedDejaVuLGCSansCondensedDejaVu fonts teamDejaVu fonts teamhttp://dejavu.sourceforge.nethttp://dejavu.sourceforge.netFonts are (c) Bitstream (see below). DejaVu changes are in public domain. Glyphs imported from Arev fonts are (c) Tavmjung Bah (see below) Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Arev Fonts Copyright ------------------------------ Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the modifications to the Bitstream Vera Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Tavmjong Bah" or the word "Arev". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Tavmjong Bah Arev" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the name of Tavmjong Bah shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from Tavmjong Bah. For further information, contact: tavmjong @ free . fr.Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Glyphs imported from Arev fonts are (c) Tavmjung Bah (see below) Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Arev Fonts Copyright ------------------------------ Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the modifications to the Bitstream Vera Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Tavmjong Bah" or the word "Arev". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Tavmjong Bah Arev" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the name of Tavmjong Bah shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from Tavmjong Bah. For further information, contact: tavmjong @ free . fr.http://dejavu.sourceforge.net/wiki/index.php/Licensehttp://dejavu.sourceforge.net/wiki/index.php/LicenseDejaVu SansDejaVu SansCondensedCondensedAll Typographic FeaturesFonctions typographiquesAlle typografischen MglichkeitenFunzioni TipograficheAlle typografische kenmerkenLigaturesLigaturesLigaturenLegatureLigaturenFractionsFractionsBreukenAll Type FeaturesToutes fonctions typographiquesAlle AuszeichnungsartenTutte le FunzioniAlle typekenmerkenCommon LigaturesLigatures UsuellesNormale LigaturenLegature pi ComuniGemeenschappelijke LigaturenRare LigaturesLigatures RaresSeltene LigaturenLegature RareZeldzame ligaturenDiagonal FractionsFractions en DiagonaleDiagonaler BruchFrazioni DiagonaliDiagonale breukenZ   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~  sfthyphenAmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandicLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongsuni0180uni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191uni0193uni0194uni0195uni0196uni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEUhornuhornuni01B1uni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BAuni01BBuni01BCuni01BDuni01BEuni01BFuni01C0uni01C1uni01C2uni01C3uni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DEuni01DFuni01E0uni01E1uni01E2uni01E3uni01E4uni01E5Gcarongcaronuni01E8uni01E9uni01EAuni01EBuni01ECuni01EDuni01EEuni01EFuni01F0uni01F1uni01F2uni01F3uni01F4uni01F5uni01F6uni01F7uni01F8uni01F9 Aringacute aringacuteAEacuteaeacute Oslashacute oslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217 Scommaaccent scommaaccentuni021Auni021Buni021Cuni021Duni021Euni021Funi0220uni0221uni0222uni0223uni0224uni0225uni0226uni0227uni0228uni0229uni022Auni022Buni022Cuni022Duni022Euni022Funi0230uni0231uni0232uni0233uni0234uni0235uni0236dotlessjuni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240uni0241uni0243uni0244uni0245uni0246uni0247uni0248uni0249uni024Cuni024Duni0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni0259uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269uni026Auni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02AEuni02AFuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02B9uni02BAuni02BB afii57929 afii64937uni02BEuni02BFuni02C0uni02C1uni02C2uni02C3uni02C4uni02C5uni02C8uni02C9uni02CAuni02CBuni02CCuni02CDuni02CEuni02CFuni02D0uni02D1uni02D2uni02D3uni02D4uni02D5uni02D6uni02D7uni02DEuni02DFuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9uni02ECuni02EDuni02EEuni02F3uni02F7 gravecomb acutecombuni0302 tildecombuni0304uni0305uni0306uni0307uni0308 hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322 dotbelowcombuni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0340uni0341uni0342uni0343uni0344uni0345uni0346uni0347uni0348uni0349uni034Auni034Buni034Cuni034Duni034Euni0351uni0352uni0353uni0357uni0358uni035Cuni035Duni0360uni0361uni0362uni0374uni0375uni037Auni037Buni037Etonos dieresistonos Alphatonos anoteleia EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni03D0theta1Upsilon1uni03D3uni03D4phi1omega1uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03E2uni03E3uni03E4uni03E5uni03E6uni03E7uni03E8uni03E9uni03EAuni03EBuni03ECuni03EDuni03EEuni03EFuni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FAuni03FBuni03FCuni03FDuni03FEuni03FFuni0400 afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061uni040D afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097uni0450 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109uni045D afii10110 afii10193uni0460uni0461 afii10146 afii10194uni0464uni0465uni0466uni0467uni0468uni0469uni046Auni046Buni046Cuni046Duni046Euni046Funi0470uni0471 afii10147 afii10195 afii10148 afii10196uni0476uni0477uni0478uni0479uni047Auni047Buni047Cuni047Duni047Euni047Funi0480uni0481uni0482uni0483uni0484uni0485uni0486uni0487uni0488uni0489uni048Auni048Buni048Cuni048Duni048Euni048F afii10050 afii10098uni0492uni0493uni0494uni0495uni0496uni0497uni0498uni0499uni049Auni049Buni049Cuni049Duni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04A8uni04A9uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B0uni04B1uni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04B8uni04B9uni04BAuni04BBuni04BCuni04BDuni04BEuni04BFuni04C0uni04C1uni04C2uni04C3uni04C4uni04C5uni04C6uni04C7uni04C8uni04C9uni04CAuni04CBuni04CCuni04CDuni04CEuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8 afii10846uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni0500uni0501uni0502uni0503uni0504uni0505uni0506uni0507uni0508uni0509uni050Auni050Buni050Cuni050Duni050Euni050Funi0510uni0511uni1D00uni1D01uni1D02uni1D03uni1D04uni1D05uni1D06uni1D07uni1D08uni1D09uni1D0Auni1D0Buni1D0Cuni1D0Duni1D0Euni1D0Funi1D10uni1D11uni1D12uni1D13uni1D14uni1D16uni1D17uni1D18uni1D19uni1D1Auni1D1Buni1D1Cuni1D1Duni1D1Euni1D1Funi1D20uni1D21uni1D22uni1D23uni1D26uni1D27uni1D28uni1D29uni1D2Auni1D2Buni1D43uni1D44uni1D45uni1D46uni1D47uni1D48uni1D49uni1D4Auni1D4Buni1D4Cuni1D4Duni1D4Euni1D4Funi1D50uni1D51uni1D52uni1D53uni1D54uni1D55uni1D56uni1D57uni1D58uni1D59uni1D5Auni1D5Buni1D77uni1D7Buni1D85uni1D9Buni1D9Cuni1D9Duni1D9Euni1D9Funi1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5uni1DA6uni1DA7uni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1uni1DB2uni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1E00uni1E01uni1E02uni1E03uni1E04uni1E05uni1E06uni1E07uni1E08uni1E09uni1E0Auni1E0Buni1E0Cuni1E0Duni1E0Euni1E0Funi1E10uni1E11uni1E12uni1E13uni1E14uni1E15uni1E16uni1E17uni1E18uni1E19uni1E1Auni1E1Buni1E1Cuni1E1Duni1E1Euni1E1Funi1E20uni1E21uni1E22uni1E23uni1E24uni1E25uni1E26uni1E27uni1E28uni1E29uni1E2Auni1E2Buni1E2Cuni1E2Duni1E2Euni1E2Funi1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Auni1E3Buni1E3Cuni1E3Duni1E3Euni1E3Funi1E40uni1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Auni1E4Buni1E4Cuni1E4Duni1E4Euni1E4Funi1E50uni1E51uni1E52uni1E53uni1E54uni1E55uni1E56uni1E57uni1E58uni1E59uni1E5Auni1E5Buni1E5Cuni1E5Duni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E64uni1E65uni1E66uni1E67uni1E68uni1E69uni1E6Auni1E6Buni1E6Cuni1E6Duni1E6Euni1E6Funi1E70uni1E71uni1E72uni1E73uni1E74uni1E75uni1E76uni1E77uni1E78uni1E79uni1E7Auni1E7Buni1E7Cuni1E7Duni1E7Euni1E7FWgravewgraveWacutewacute Wdieresis wdieresisuni1E86uni1E87uni1E88uni1E89uni1E8Auni1E8Buni1E8Cuni1E8Duni1E8Euni1E8Funi1E90uni1E91uni1E92uni1E93uni1E94uni1E95uni1E96uni1E97uni1E98uni1E99uni1E9Auni1E9Buni1EA0uni1EA1uni1EA2uni1EA3uni1EA4uni1EA5uni1EA6uni1EA7uni1EA8uni1EA9uni1EAAuni1EABuni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EBEuni1EBFuni1EC0uni1EC1uni1EC2uni1EC3uni1EC4uni1EC5uni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED0uni1ED1uni1ED2uni1ED3uni1ED4uni1ED5uni1ED6uni1ED7uni1ED8uni1ED9uni1EDAuni1EDBuni1EDCuni1EDDuni1EDEuni1EDFuni1EE0uni1EE1uni1EE2uni1EE3uni1EE4uni1EE5uni1EE6uni1EE7uni1EE8uni1EE9uni1EEAuni1EEBuni1EECuni1EEDuni1EEEuni1EEFuni1EF0uni1EF1Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni200B afii61664afii301afii299afii300uni2010uni2011 figuredash afii00208uni2016 underscoredbl quotereverseduni201Funi2023onedotenleadertwodotenleaderuni2027uni2031minuteseconduni2034uni2035uni2036uni2037uni2038uni203B exclamdbluni203Duni203Euni203Funi2040uni2041uni2042uni2043uni2045uni2046uni2047uni2048uni2049uni204Auni204Buni204Cuni204Duni204Euni204Funi2050uni2051uni2052uni2053uni2054uni2055uni2056uni2057uni2058uni2059uni205Auni205Buni205Cuni205Duni205Euni2070uni2071uni2074uni2075uni2076uni2077uni2078uni2079uni207Auni207Buni207Cuni207Duni207Euni207Funi2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089uni208Auni208Buni208Cuni208Duni208Euni20A0 colonmonetaryuni20A2lirauni20A5uni20A6pesetauni20A8uni20A9 afii57636dongEurouni20ADuni20AEuni20AFuni20B1uni20B4uni20B5uni20D6uni20D7uni2100uni2103uni2104 afii61248uni2106uni2109uni210Euni210FIfraktur afii61289 afii61352uni2117 weierstrassRfrakturuni211D prescriptionuni2120uni2121uni2126uni2127uni212Auni212B estimateduni2132uni2134alephuni213Buni214Bonethird twothirdsuni2155uni2156uni2157uni2158uni2159uni215A oneeighth threeeighths fiveeighths seveneighthsuni215Funi2160uni2161uni2162uni2163uni2164uni2165uni2166uni2167uni2168uni2169uni216Auni216Buni216Cuni216Duni216Euni216Funi2170uni2171uni2172uni2173uni2174uni2175uni2176uni2177uni2178uni2179uni217Auni217Buni217Cuni217Duni217Euni217Funi2180uni2181uni2182uni2183uni2184 arrowleftarrowup arrowright arrowdown arrowboth arrowupdnuni2196uni2197uni2198uni2199uni219Auni219Buni219Cuni219Duni219Euni219Funi21A0uni21A1uni21A2uni21A3uni21A4uni21A5uni21A6uni21A7 arrowupdnbseuni21A9uni21AAuni21ABuni21ACuni21ADuni21AEuni21AFuni21B0uni21B1uni21B2uni21B3uni21B4carriagereturnuni21B6uni21B7uni21B8uni21B9uni21BAuni21BBuni21BCuni21BDuni21BEuni21BFuni21C0uni21C1uni21C2uni21C3uni21C4uni21C5uni21C6uni21C7uni21C8uni21C9uni21CAuni21CBuni21CCuni21CDuni21CEuni21CF arrowdblleft arrowdblup arrowdblright arrowdbldown arrowdblbothuni21D5uni21D6uni21D7uni21D8uni21D9uni21DAuni21DBuni21DCuni21DDuni21DEuni21DFuni21E0uni21E1uni21E2uni21E3uni21E4uni21E5uni21E6uni21E7uni21E8uni21E9uni21EAuni21EBuni21ECuni21EDuni21EEuni21EFuni21F0uni21F1uni21F2uni21F3uni21F4uni21F5uni21F6uni21F7uni21F8uni21F9uni21FAuni21FBuni21FCuni21FDuni21FEuni21FF universaluni2201 existentialuni2204emptysetgradientelement notelementuni220Asuchthatuni220Cuni220Duni220Euni2210uni2213uni2214uni2216 asteriskmathuni2218uni221Buni221C proportional orthogonalangleuni2221uni2222uni2223uni2224uni2225uni2226 logicaland logicalor intersectionunionuni222Cuni222Duni222Euni222Funi2230uni2231uni2232uni2233 thereforeuni2235uni2236uni2237uni2238uni2239uni223Auni223Bsimilaruni223Duni2241uni2242uni2243uni2244 congruentuni2246uni2247uni2249uni224Auni224Buni224Cuni224Duni224Euni224Funi2250uni2251uni2252uni2253uni2254uni2255uni2256uni2257uni2258uni2259uni225Auni225Buni225Cuni225Duni225Euni225F equivalenceuni2262uni2263uni2266uni2267uni2268uni2269uni226Auni226Buni226Cuni226Duni226Euni226Funi2270uni2271uni2272uni2273uni2274uni2275uni2276uni2277uni2278uni2279uni227Auni227Buni227Cuni227Duni227Euni227Funi2280uni2281 propersubsetpropersuperset notsubsetuni2285 reflexsubsetreflexsupersetuni2288uni2289uni228Auni228Buni228Cuni228Duni228Euni228Funi2290uni2291uni2292uni2293uni2294 circleplusuni2296circlemultiplyuni2298uni2299uni229Auni229Buni229Cuni229Duni229Euni229Funi22A0uni22A1uni22A2uni22A3uni22A4 perpendicularuni22A6uni22A7uni22A8uni22A9uni22AAuni22ABuni22ACuni22ADuni22AEuni22AFuni22B2uni22B3uni22B4uni22B5uni22B6uni22B7uni22B8uni22B9uni22BAuni22BBuni22BCuni22BDuni22C0uni22C1uni22C4dotmathuni22C6uni22C8uni22C9uni22CAuni22CBuni22CCuni22CDuni22D6uni22D7uni22D8uni22D9uni22DAuni22DBuni22DCuni22DDuni22DEuni22DFuni22E0uni22E1uni22E2uni22E3uni22E4uni22E5uni22E6uni22E7uni22E8uni22E9uni22EAuni22EBuni22ECuni22EDuni22F2uni22F3uni22F4uni22F5uni22F6uni22F7uni22F8uni22F9uni22FAuni22FBuni22FCuni22FDuni22FEuni22FFhouseuni2306uni2308uni2309uni230Auni230B revlogicalnotuni2311uni2318uni2319 integraltp integralbtuni2325uni2328 angleleft anglerightuni237Duni239Buni239Cuni239Duni239Euni239Funi23A0uni23A1uni23A2uni23A3uni23A4uni23A5uni23A6uni23A7uni23A8uni23A9uni23AAuni23ABuni23ACuni23ADuni23AEuni23CFuni2422uni2423uni2460uni2461uni2462uni2463uni2464uni2465uni2466uni2467uni2468uni2469upblockuni2581uni2582uni2583dnblockuni2585uni2586uni2587blockuni2589uni258Auni258Blfblockuni258Duni258Euni258Frtblockltshadeshadedkshadeuni2594uni2595uni2596uni2597uni2598uni2599uni259Auni259Buni259Cuni259Duni259Euni259F filledboxH22073uni25A2uni25A3uni25A4uni25A5uni25A6uni25A7uni25A8uni25A9H18543H18551 filledrectuni25ADuni25AEuni25AFuni25B0uni25B1triagupuni25B3uni25B4uni25B5uni25B6uni25B7uni25B8uni25B9triagrtuni25BBtriagdnuni25BDuni25BEuni25BFuni25C0uni25C1uni25C2uni25C3triaglfuni25C5uni25C6uni25C7uni25C8uni25C9circleuni25CCuni25CDuni25CEH18533uni25D0uni25D1uni25D2uni25D3uni25D4uni25D5uni25D6uni25D7 invbullet invcircleuni25DAuni25DBuni25DCuni25DDuni25DEuni25DFuni25E0uni25E1uni25E2uni25E3uni25E4uni25E5 openbulletuni25E7uni25E8uni25E9uni25EAuni25EBuni25ECuni25EDuni25EEuni25EFuni25F0uni25F1uni25F2uni25F3uni25F4uni25F5uni25F6uni25F7uni25F8uni25F9uni25FAuni25FBuni25FCuni25FDuni25FEuni25FFuni2600uni2601uni2602uni2603uni2604uni2605uni2606uni2607uni2608uni2609uni260Auni260Buni260Cuni260Duni260Euni260Funi2610uni2611uni2612uni2613uni2614uni2615uni2616uni2617uni2618uni2619uni261Auni261Buni261Cuni261Duni261Euni261Funi2620uni2621uni2622uni2623uni2624uni2625uni2626uni2627uni2628uni2629uni262Auni262Buni262Cuni262Duni262Euni262Funi2630uni2631uni2632uni2633uni2634uni2635uni2636uni2637uni2638uni2639 smileface invsmilefacesununi263Duni263Euni263Ffemaleuni2641maleuni2643uni2644uni2645uni2646uni2647uni2648uni2649uni264Auni264Buni264Cuni264Duni264Euni264Funi2650uni2651uni2652uni2653uni2654uni2655uni2656uni2657uni2658uni2659uni265Auni265Buni265Cuni265Duni265Euni265Fspadeuni2661uni2662clubuni2664heartdiamonduni2667uni2668uni2669 musicalnotemusicalnotedbluni266Cuni266Duni266Euni266Funi2670uni2671uni2672uni2673uni2674uni2675uni2676uni2677uni2678uni2679uni267Auni267Buni267Cuni267Duni267Euni267Funi2680uni2681uni2682uni2683uni2684uni2685uni2686uni2687uni2688uni2689uni268Auni268Buni268Cuni268Duni268Euni268Funi2690uni2691uni2692uni2693uni2694uni2695uni2696uni2697uni2698uni2699uni269Auni269Buni269Cuni26A0uni26A1uni26B0uni26B1uni2701uni2702uni2703uni2704uni2706uni2707uni2708uni2709uni270Cuni270Duni270Euni270Funi2710uni2711uni2712uni2713uni2714uni2715uni2716uni2717uni2718uni2719uni271Auni271Buni271Cuni271Duni271Euni271Funi2720uni2721uni2722uni2723uni2724uni2725uni2726uni2727uni2729uni272Auni272Buni272Cuni272Duni272Euni272Funi2730uni2731uni2732uni2733uni2734uni2735uni2736uni2737uni2738uni2739uni273Auni273Buni273Cuni273Duni273Euni273Funi2740uni2741uni2742uni2743uni2744uni2745uni2746uni2747uni2748uni2749uni274Auni274Buni274Duni274Funi2750uni2751uni2752uni2756uni2758uni2759uni275Auni275Buni275Cuni275Duni275Euni2761uni2762uni2763uni2764uni2765uni2766uni2767uni2768uni2769uni276Auni276Buni276Cuni276Duni276Euni276Funi2770uni2771uni2772uni2773uni2774uni2775uni2776uni2777uni2778uni2779uni277Auni277Buni277Cuni277Duni277Euni277Funi2780uni2781uni2782uni2783uni2784uni2785uni2786uni2787uni2788uni2789uni278Auni278Buni278Cuni278Duni278Euni278Funi2790uni2791uni2792uni2793uni2794uni2798uni2799uni279Auni279Buni279Cuni279Duni279Euni279Funi27A0uni27A1uni27A2uni27A3uni27A4uni27A5uni27A6uni27A7uni27A8uni27A9uni27AAuni27ABuni27ACuni27ADuni27AEuni27AFuni27B1uni27B2uni27B3uni27B4uni27B5uni27B6uni27B7uni27B8uni27B9uni27BAuni27BBuni27BCuni27BDuni27BEuni27E0uni27E8uni27E9uni27EAuni27EBuni2800uni2801uni2802uni2803uni2804uni2805uni2806uni2807uni2808uni2809uni280Auni280Buni280Cuni280Duni280Euni280Funi2810uni2811uni2812uni2813uni2814uni2815uni2816uni2817uni2818uni2819uni281Auni281Buni281Cuni281Duni281Euni281Funi2820uni2821uni2822uni2823uni2824uni2825uni2826uni2827uni2828uni2829uni282Auni282Buni282Cuni282Duni282Euni282Funi2830uni2831uni2832uni2833uni2834uni2835uni2836uni2837uni2838uni2839uni283Auni283Buni283Cuni283Duni283Euni283Funi2840uni2841uni2842uni2843uni2844uni2845uni2846uni2847uni2848uni2849uni284Auni284Buni284Cuni284Duni284Euni284Funi2850uni2851uni2852uni2853uni2854uni2855uni2856uni2857uni2858uni2859uni285Auni285Buni285Cuni285Duni285Euni285Funi2860uni2861uni2862uni2863uni2864uni2865uni2866uni2867uni2868uni2869uni286Auni286Buni286Cuni286Duni286Euni286Funi2870uni2871uni2872uni2873uni2874uni2875uni2876uni2877uni2878uni2879uni287Auni287Buni287Cuni287Duni287Euni287Funi2880uni2881uni2882uni2883uni2884uni2885uni2886uni2887uni2888uni2889uni288Auni288Buni288Cuni288Duni288Euni288Funi2890uni2891uni2892uni2893uni2894uni2895uni2896uni2897uni2898uni2899uni289Auni289Buni289Cuni289Duni289Euni289Funi28A0uni28A1uni28A2uni28A3uni28A4uni28A5uni28A6uni28A7uni28A8uni28A9uni28AAuni28ABuni28ACuni28ADuni28AEuni28AFuni28B0uni28B1uni28B2uni28B3uni28B4uni28B5uni28B6uni28B7uni28B8uni28B9uni28BAuni28BBuni28BCuni28BDuni28BEuni28BFuni28C0uni28C1uni28C2uni28C3uni28C4uni28C5uni28C6uni28C7uni28C8uni28C9uni28CAuni28CBuni28CCuni28CDuni28CEuni28CFuni28D0uni28D1uni28D2uni28D3uni28D4uni28D5uni28D6uni28D7uni28D8uni28D9uni28DAuni28DBuni28DCuni28DDuni28DEuni28DFuni28E0uni28E1uni28E2uni28E3uni28E4uni28E5uni28E6uni28E7uni28E8uni28E9uni28EAuni28EBuni28ECuni28EDuni28EEuni28EFuni28F0uni28F1uni28F2uni28F3uni28F4uni28F5uni28F6uni28F7uni28F8uni28F9uni28FAuni28FBuni28FCuni28FDuni28FEuni28FFuni29CEuni29CFuni29D0uni29D1uni29D2uni29D3uni29D4uni29D5uni29EBuni2A00uni2A01uni2A02uni2A0Cuni2A0Duni2A0Euni2A0Funi2A10uni2A11uni2A12uni2A13uni2A14uni2A15uni2A16uni2A17uni2A18uni2A19uni2A1Auni2A1Buni2A1Cuni2A7Duni2A7Euni2A7Funi2A80uni2A81uni2A82uni2A83uni2A84uni2A85uni2A86uni2A87uni2A88uni2A89uni2A8Auni2A8Buni2A8Cuni2A8Duni2A8Euni2A8Funi2A90uni2A91uni2A92uni2A93uni2A94uni2A95uni2A96uni2A97uni2A98uni2A99uni2A9Auni2A9Buni2A9Cuni2A9Duni2A9Euni2A9Funi2AA0uni2AAEuni2AAFuni2AB0uni2AB1uni2AB2uni2AB3uni2AB4uni2AB5uni2AB6uni2AB7uni2AB8uni2AB9uni2ABAuni2AF9uni2AFAuni2B12uni2B13uni2C67uni2C68uni2C69uni2C6Auni2C75uni2C76uni2C77uniF208uniF217uniF25F afii10064uniFB00uniFB03uniFB04uniFB05uniFB06uniFFFD dlLtcaronDieresisAcuteTildeGrave CircumflexCaron uni0311.caseBreve Dotaccent Hungarumlaut Doubleacute arabic_dot arabic_2dots arabic_3dotsarabic_3dots_aarabic_2dots_a arabic_4dots uni066E.fina uni066E.init uni066E.medi uni06A1.fina uni06A1.init uni06A1.medi uni066F.fina uni066F.init uni066F.medi uni06BA.init uni06BA.medi arabic_ring uni067C.fina uni067C.init uni067C.medi uni067D.fina uni067D.init uni067D.medi uni0681.fina uni0681.init uni0681.medi uni0682.fina uni0682.init uni0682.medi uni0685.fina uni0685.init uni0685.medi uni06BF.fina uni06BF.init uni06BF.mediarabic_gaf_barEng.altuni0268.dotlessuni029D.dotless uni03080304 uni03040308 uni03070304 uni03080301 uni03080300 uni03040301 uni03040300 uni03030304 uni0308030C uni03030308 uni030C0307 uni03030301 uni03020301 uni03020300 uni03020303 uni03060303 uni03060301 uni03060300 uni03060309 uni03020309 uni03010307 brailledotJ.alt uni0695.finauniFEAE.fina.longstart uni06B5.fina uni06B5.init uni06B5.medi uni06CE.fina uni06CE.init uni06CE.medi uni0692.final.alt@%2%%A:B2SAS//2ݖ}ٻ֊A}G}G͖2ƅ%]%]@@%d%d%A2dA  d   A(]%]@%..%A  %d%@~}}~}}|d{T{%zyxw v utsrqponl!kjBjSih}gBfedcba:`^ ][ZYX YX WW2VUTUBTSSRQJQP ONMNMLKJKJIJI IH GFEDC-CBAK@?>=>=<=<; <@; :987876765 65 43 21 21 0/ 0 / .- .- ,2+*%+d*)*%)('%(A'%&% &% $#"!! d d BBBdB-B}d       -d@--d++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++q&       !! #" >> ?? @@ CA ^^ __ `` aa bbcc gdkh qm srutvv zx {{}   wv             xx    QQ                  , --4/6577 88 99 D;FEGG HH II \J^] d_ ki qn ss vvww z / 0011 2            f  r r ~ t   micropolis-activity/res/dejavu-lgc/DejaVuLGCSerif.ttf0000664000076400007640000063533010724145723023073 0ustar simcitysimcityPGDEF \GPOS&GSUBE3)xOS/2{1DVcmapE 1cvt 37@feat8@fpgm9gasp9 glyf'yP9)phead:_c6hheacT$hmtxlcxkernᯬ0locadmaxp E morx Rname5m %$postIAprepuy3p^prop8 >ijjkpqqruvvwyzz{}~     !""##$vw|}   01<=STUVXYYZ%&'(2 ^DFLTcyrl$grek4latnDkernmarkmkmk" $"#e"( :Lb "x@rH X  . 4 : D N X ^ h  B H R X ^ d j 6 h *(r $z^<^79k:;<&:$79:<IWYZ\$%&'6789: !&&&*&2&<&&&&&&&&&&&&&&&&&&&8:&&&&9&2$NDuHRNNNNNuuuuuuuNuNuNuu&<:a4k$&28:<HRX\}}}01:7Y89 :N<}\}&Y0:}}}K9;*aa$D8DHRVDDDDD!#0K&&79:<D/\///////&&:K6 "+$7&DaFaHaRaVkZaaaaaaaaaaaaaaaaaaaaaa!k#k&& DD$-5D22$u2DDHDLRDX}\uuuuuDDDDDDDDDDDDDDDDD}}}}DD1}KK0kNN$DNHYLRuUX\NNNNNNuYYYYuuuuuuYu1&&$&2,$a&DaHNLRNXNaaaaaaaaaaa<NNNNNNNNNNNNNNN)1N&    $79:<IWYZ\$%&'6789: !$79:<IWYZ\$%&'6789: !$79:<IWYZ\$%&'6789: !$79:<IWYZ\$%&'6789: !$79:<IWYZ\$%&'6789: !&&&&& K$9<:}}K9;K9;K9;K9;K9;K9; DD$- DD$- DD$- DD$-,$a&DaHNLRNXNaaaaaaaaaaa<NNNNNNNNNNNNNNN)1N&$79:<IWYZ\$%&'6789: !$79:<IWYZ\$%&'6789: !$79:<IWYZ\$%&'6789: !&9&9&&<:7Y89 :N<}\}&Y0:}7Y89 :N<}\}&Y0:}O7Y89 :N<2\2&Y0:2}}&79:<D/\///////&&:79:<D/\///////&&:K6 "K6 "+$7&DaFaHaRaVkZaaaaaaaaaaaaaaaaaaaaaa!k#k&& DD$-DnFUGaHVIJaLMP}Q}RUSTaU}VWXYZ[\]7,$a&DaHNLRNXNaaaaaaaaaaa<NNNNNNNNNNNNNNN)1N$-/79k:;<&:$-/$-/99:9;9<99:9 79:;9<YZ&:e$%&'()*-./123456789:;<=INRUYZ[\  "&07:?f,lV  &,28>DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>D=X}IgHH9DHhD^D5\DHHHHHDRDhDD9D(DD9HDBDoDBD<DDs=HIhDHDgRDD=hDXgRDHD<DD-H^DHDDD9DD(DhDhDhDhDD,D,DDHDVDDe}IH9DWD^DDDDhD<DD D(DDDFIH@}}$%&'()*+,-./0123456789:;<=DEFGHIJKLMNOPQRSTUVWXYZ[\]  GHIKOQT^_`himtuvwx    ?ILNOQSW\cdfghilnoqsw|+(2% &,28>DJPV\bhnDDDDDDDDDDDDDDDDDD|rrDrDDDDDDDDDDDDDJ>l  (k?k?kk(2% &,28>DJPV\bhnDDDDDDDDDDDDDDDDDD|rrDrDDDDDDDDDDDDD O $*06<BHNTZ`flrx~ &,28>DJPV\bhnt=X}RIgHH9 h 9^V\RHvRHhHRRHRBoBDJPV\bhntzdfGffllfGS((**,0(2  $*06<D rDFLTcyrl*grekHlatnX SRB ccmp2dlig8dlig@dligFfracLligaRligaXlocl^  &.6>FNV^HR@ptv000&LM P$=IIKKLMOO      ""$$&&((**,,..0022446688:;==??AAGGQQSSUUj| ^h "(.4:@FL|{zyxwzvqjYUSSTS S $Nh  $  $ #!  Q 6DHLQRVX\g !O LID *  ""> *4#IO"ILI%W$WIVAJ 4 "*2:BJRZbjr9H97H73H31H1H~H~ "4H42H2&.6:H:5H5H6H6 ";H;8H8<H< LM +),*/0(1-2 33fPq PfEd@ m`~!BE?Xauz~_cs [w{-KcEMWY[]}  & 1 : < > I p y !!!"!&!+!_!""""""" "-"C"H"a"e## ###!#%#*#}##$#&&<&G&g&o')*+ !$EPXatz~brCw{0Ph HPY[]_  0 9 < > G p t  !!!"!&!*!S!""""""""'"B"H"`"d##### #%#(#}##$#%&8&?&`&i')* +qiWSPKJIHG97) ~><:62.& {yu @=6530.([VRLFCAL.$WLJ )  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}byqz sLjq{)j/s3fbwPP;f=fRBsJ}s jjb\jjjj jj)R`fX{Hjj``'''Djb{sj\)'\jj=fHf JJ }T{3`}TjNNs04 <, %Id@QX Y!-,%Id@QX Y!-,  P y PXY%%# P y PXY%-,KPX EDY!-,%E`D-,KSX%%EDY!!-,ED-ff@ ]/10!%!!fsr)! $@a ` b  10%4632#"&!#5L97NN79LD{h8NN87NM@ b1<20#!#h++W@6 cc       991/<22<2222220!! !3!!!!#!#!5!!5!T54&'3.54673#.'#.qwvrdgripbldeYm vd`D n_VxiXPj!H@  1)t 7#5!#3RWWfoiҙ30CsqngDlEO ٬cSeNfGXVe=yB""kpqZ=yqPikk`hb10#h+ @  q 21990&7󚆆mcdmbjj} @ q 2199056'5bj\]jbm''!LI@+   i   <2<29912290 %#'-73%yL LyL\ \նv}vw} !@r    <<1/<<0!!#!5!1Ϡ1Ϣ11J@   91990>=3J^XE%ZZZs10!!Zs 8  KQX <<<32!53!5>54&#"pkh ou=Ŗq 9< mĖ*M@+ etee)te&ei`+  #) #  +9999190>32!"&'332654&+532654&#"#u^unp _2 p,. ׫23"f~?@%d d M ss i  <<91/<<290KSXY"/ ] ]K TK T[K T[KT[X@878Y@ 8I( 68 GH ]] !53!53!!3Xtj%m ky@%xetee wb `     9190K TK T[KT[X  @878YKTKT[X @ 878Y@& //]]!>32!"&'332654&#"#T4Vgqq Z5VդT$$23"@C %c@" eely#ei`&    &190@%   ) ) NN N!]%2654&#">32#"!2#.#"DlB%O[q n¾FȽKJy^ejr@Mwb  91/90KSXY"K TX  @878YKTX @ 878Y] #!#!-Nuo1\ />@"$e ee*i`0$ ' -'! 09919904&#"3264&#"326#"$5467.54632)|{{|lv͟ҟϴ%]@$ elyee i`& #  &190@ !"AAA ]#"5432!"&'5332"32654&CmO[p m¾KJ xRel%"ɽy @a a ` <21074632#"&4632#"&M88ML99LM89LL98Mh8NN88MM8ML99LMJy"@a  1990>=34632#"&J^X?M88MM88ME%Z 8MN78MM^@29190 5Ѧf@rr<210!!!!^@<919055//y "<@ a ! ei `#! #10%4632#"&>32#>54&#"#hM97NN79MjT{~rah8NN87NMc/.ֶ3H+ʜ{o@Mm@;BAKE'N$ KE($ Ez Kzz@|$z+ |z+7N'(HA ==1N22991<9999990%#"&5463253>54&'&$#"3267#"$'&5476$3254&#"326;]گ];DCjϳZVd_m+`5l}YawLNsyzrRPPR%oT&']gw}LLF]]{GF~b|i}@Qdddd  Mo ob    91/<290KSX22Y"(]@ ((( (,+]! 5333!53!3$H}}jkjjHjqd$E@'o obo ~ $ !$ !%229991/2290%!2654&#!532654&+53#5!2!+w埙jj~}jkäs8@ndn i`&' %10o]#"&'&5!2#.#"3267BapmIzq%0dap\@Aq=@ ob o  $ !299991/220@ 0O]%3 !#53#5! !#7ܺwRPjL66Hjkvtq3R@*  obo ~ $ !2221/00O]353#5!#5!!53#5!!53q{R{{{jk q7F@'  obo ~  $ !2221/20353#5!#5!!53#5!3q{>{{jk ~jsG@"  o ndni` &%1990 0 O ].# 3267!5!# !2#q]ͯiY88kMM_b;<q^@.  o bo ~ $ $$ $!2222221/<2<20@ p]353#5!#!#5!#3!53!3qGGjkkkkjj~jq 7@ obo $$! 221/220@ 0 P ` p ]%3!53#5!#GjjjkkTVm@ dn o b $ 12990K TX@878Y0]KTKT[X@878Y533265#5!##"&rXXw^qGca9kk"q(@Dd  dM  o bo $$!2<2991/<22<290KSX2Y"p]@  $ '6 F HW YYhzz    * % % & &'(: 6 6F F @ F @ F @ F@B@@@@@S X X U UPXXi i e efb```y  y  v vvyyC]]353#5!##5!# 3!3qGͪ3 HapmmpbEnpbNQJKQkdappbcVobcqC@!o ob o # $ !2299991/220_]!2654&#!53#5!2#!3wjkjs"@@nn i`#  %#99999190_$o$$] 47>3 ;.'2#"`jmpbE6mdapbcVm:C@QJKQq7$@H  Mo #ob o#   $ $ !%229999991/<2229990KSX9Y"3!.+3!53#5!2%!2654&#!Fe(ٶCpbz'[REjۊQjjkп&)'@B#"$!   M !dn'dni'`* !)$)*9999190KSX99Y"+]@ +0+P+p++]KTKT[KT[X*@**878Y@t( ) ) ) )) )!)"8 9 : : : 99:: :!9"8#I I J I HI I!I"Y Y Y Y Y Y!Y"j l l l k kl l!l"i#{ { { { y{{ {!{"y#7++]]732654&/.54$32#.#"!"&sq֯hq|ɹ˭{HTlt7;A©-+ž{kz<7=2B{@  ob o $ $1/2<20K TX@878Y]K TK T[X@878Y@ /`]!53!#!#5!3I{.{Ij` j`bn@%   ob`$$ $$!1<299990`]KTKT[X@878Y]#5!#326#5!#! H廿jkkkkS@9dd  M o b   91/<290KSX22Y"]@"   (* * ']] #5!###5!f jzkkjkk 3@[d d    dd     M  o b 91/<<<290KSX22Y"]KTX@878Y@   %) $?< 5L FX\ Tm d~ t        &&&&)$ &546 4 7 IIEBFE G D H[[XW[X Y [_______feeehgff g g f d ehjjhusvuu v u w t y||yV]]!# ##5!# 3 #5!#y!7TZ9Bjkk9\kk @gdddd   M o bo  91/<2<290KSX2222Y"]]K TK T[KT[X@878Y@ )(%&65EFVUjicdyz        &&'& ()%%$$/6777 8997FCGGEE KIFIIUSSSSWSV V S [[WYYedeedede e d kllke``eee`xzzzz{yx x y {~||@{{}yuxxur]] 3!53 #5!# #5!# 3!53LP@Iuנjjskkkk?jjZ/@E  d d    M  o bo    $$999991/2<290KSX22Y"]]K TX@878YK TK T[KT[X@878Y@d 6 E [Zf xw       **/::7 8 ? 9 ? 9 ? ???F I V Y [ [ i h o h o `vvx x x )]]!53#5!# #5!#33+uu?jkk\kk,j\? m@#  M b     991/0KSXY"]@  O ]]35!#!!53\{^LzHZH$@ssq10!!!!/jjB*@Mb/9910KSXY"#mo@ssq9910!5!!5o/jNj@ b91290 # #}-m/10!5mPPsdv10K TKT[X@878YKTK T[K T[KT[KT[KT[X@878YKTX@878Y #oudxfD (~@/!  z!#&` z!-" ,' "*)22991/99990@$*o*x(*z( ]]5#"3263!5#"&5463!54&#"#5>32/퉆ts=kn_`VNvzojsJFIydb));!G@%!zqz` 5,'0"2221/990#]7#5!>32#"&'!532654&#"i6{{6ij@jmd__djuʿfD5@  `- *10o]#"532#.#"3267'ްeekw?31/0|}f!O@& zqz` ,',5 *"<<1/990@ ####]%3!5#"5432#5!54&#"32636{{6fjjd_76_d)jifVDN@z  ` *2190@ @]]!32673#"5432.#"V碞y,}34ױJqq@& zq z - '6,0<2<91/222990]KTX@878Y``?]]#.#"!!3!53#5354632qaSOgT)CBKNqkjjRkf9D,f@3, )z) #`- -, '5&7*-22199990@ ....]#"&'53326=#"54325!4&#"32653iX`}6{{6h[&&h`ďd_76_dkJo@,  zqz =,,' :,',021/<299990/]KTX@878Y353#5!>323!534&#"3Th3l_zj@jVlnjjÏjJ` I@ z z , ',021/20]KTX@878Y4632#"&3!53#5!C/.CB//C갰hq.DD./BB(jjRk;9 i@"   z-6' , 01990/ ` p ]KTX@878Yss]4632#"&#5!#"&'533265C/.CA0/C-fëH>_UR[Wq.DD./BBzkq!!`Z{;@X    >>M z zqz   ,',0<9991/<2290KSX9Y"]@  &))899HVWggghw           ( ( ( &)-**+,)/6 6 6959?F D D DEY X X WVVVh f f gegaabef`x x x zxxvz T]])53#5!#5!# 3!533Ji‘j@j kkjj;R @@zqz,',0 21/20 ]KTX  @878Y%3!53#5!鱱ijjj@jJ^D0@A  +'z)%! z.#  = ", , '?=',?(,* '$,&01291/<<222990@ ?2_2o222]KTX111@878Y@/ / // 2 ]>323!534&#"3!534&#"3!53#5!>32%5n`o{`o{h3d|Xuwjj%jj,jjTijp{JDp@.  zz =,,' :,',021/<290/]KTX@878Y353#5!>323!534&#"3Th3l`yjRklnjjÑjfjD +@  `D *10 o]%2654&#""5432hFc32;VD #U@,  z"z ` $,5!,' 0$22212990%%]32654&#"'#5!>32#"&'3!53i6{{6Hiʵkd__dkkfVD#S@+# zz `$,',5 *$2<<12990%%]3!53#"54325!4&#"326536{{6hkkd_76_dkJD@" z z -,' ,021/2990@8/@@@@@@D@@@  ]]KTX@878Y#.#"3!53#5!>32jNKͦh6z-c)ONjjTioksD)@A#"$!>  > M !''`* !->'F$-E*9999190KSX99Y" +]@X'' '!'"'#Z Z Z Z ZZ Z!Z"X# !"# !"# !"#@++]]75332654&/.54632#.#"#"&sj|_{ֽTcjutwZg;wv]YFV1-,f,*gtRRCQ*-/o,;'qh@  z`, '/<291<2990K TX@878Y@&&/ ]#533!!32673#"&5ݢZ4FHBkJk]LU_7'u@"   z `,',:,' /<1/<2299990K TX@878Y]KTX@878Y!3!5#"&5#5!3265#X3k__z'Cjjo9k'@9    >>M z    91/<290KSX22Y" ]@H' Scv   %*** * *80HG GWXghvvwxx x x ]]!#5!# #5!#yy++wykk%kkD!'@[   >  >> > M  z  91/<<<290KSX22Y"`]@ $, (3= 9DJ IW ^di itz z          &() & # **%&:;??????:; 9 ; 8 8:9FEEE F F I H HHHHFQPPPPPPPPP R T XVSPb``dd````` b d fb`uxy}}yyyz@y v q u v vvwwwtw x]] #5!## ##5!#vęw'kkDkk->j'@g >  >>>Mz z    91/<2<290KSX2222Y"K TKT[X@878Y@ %*GIWWYXffhhyy       (),,% % ( '&&&))'9?9?HIGFGZYYYWY WUVVVVjjjgh h h gefx||||y wttttxvuuu []]#5!# 3!53 3!53 #5!#TߏLl%3kkw7jj>jjkk9'@Y  > >M z   - 9991<29990KSX229Y"]@ZYix))* * ''&XSUPUPSV V hd``dvwx~~tty x x yuuvvvv(]]7#5!# #5!##"&'53326Fsy++w2zo/c2^9<7Cñkk%kkT|[D;=R' j@" >> M z z  - - 991/0KSXY"K TK T[X@878Yif ]35!#!!53RjffBkVf#V$^@0 !   ! s ssq! %$ '%<29991/999999990#"&54&+5326546;#"3>l==l>DVdbVititݓhXឈ"XG10#$[@/   ss#sq%' %<29991/9999999903265467.54&+532;#"+FUbcUF?l>>l?W"Whtitݔ'>@    919999990#"/&'&#"5>32326d]` _\Yd^` a\'XTB 9IMWQB:J! !@ ai   1/04632#"&53L97NN79LC{Dm8MN78NN5PL"I@'  `# -" #222212<2<0%#&5473#.'>7u#dd\PjsdZt,+ .'{ i ldL@(  seis   I <2291/22990#.#"!!!53!53#534632Ni q`ydt%UK_ekjRk'h\#/o@= -'! 0 -!-'!0 *$0* $ $*099999991999999907'#"&''7.5467'7>324&#"326^+))-`8wE@}=_))*,_8xEBzQrpqq^z@Fw9^,*(ppr$K@]dd  M s s sb"s# % #I! I%<<9999991/22<22<290KSX22Y"]@6iih     89969::9F K M MKKJ@@BBFIXVYYYYge g g gffgjhohojjhu y||yzF]]!53!5!5'!5!#5!# #5!#!!!!3hlR)WSGmjoiAikk\kkizTij@ G<210##  \= Ak@;39 (',o$ o?i$B3/9)'J54&#.#"#"&'532654'&'.5467.54632{D7k :;\hXds }irNI̭ZM\lkhy ~vmROȦN.S5&`9KHSaSamc_~,/~[PQbTq zc^1~O77! z@   1<20K TK T[KT[KT[X@878YK TK T[KT[X@878YK TX878Y2#"&546!2#"&546=0EB32BE/EB23BE!E03BB30EE03BB30E2JM@+    ? 3?' REK!Q9K!M-K1/90#"&54632#.#"32672#"$'&5476$"3267>54&'.`PWTriwyxvaqmmllmmmmllmm^]__]^⃄^]]^\^=%'mf_cnmmmmnnmmmmng^^]僂^^__^]⃅]^^}(,q@<&+))&i-) #*#Y#Y -2299991999903#5#"&546;54&#"#5>325#"326!!FP0}WtiWfLMBilea\oFTP30pr-T^FEPNQUah%# :@     Z Z <21<222<220 5 5%)+#)+#ssRssR^@ r 10!#!^ZZs10!!Zs$<T@TN N M  1%=1I 7" " PNPN"L7KCL+KCMOU2<99999991/2<229990KSX9Y"32654&+3#'.+3!53#5!2"3267>54&'.'2#"$'&5476$}SSTR}*;tL#>1\TSS`׃^]__]^⃄^]]^\^ㄘmmllmmmmllmmLKJL3(DF/DDCpmS[j^^]僂^^__^]⃅]^^gnmmmmnnmmmmnb+(10K TX@878Y!!Vu= @  i 10"32654&'2#"&546LhgMLhjJ@v+..fiMLfgKKk1.-rB *@r  r   <2<21/<<0!!#!5!!!1Ϡ1yyZk@6   M   h  \ 9999199990KSX9Y"#5>32!53!5%>54&#"FBEJVJaTN^ "hzlKMzBUcLd*R@,& )&h+  #)#\\ +999919990>32#"&'532654&+532654&#"#}I;j_wyHDFb\^ffe5acQLRWFlcHdwdrzJMXR]_JJJCH@ARfO10K TKT[X@878YK TK T[KT[X@878Y3#uf;V'@3   zzz ` , ,',:, '0 2<91/<2299990!]K TX @ 878Y!]!3!5#"&'3!53#5!3265#X4Z9^'鱦^`y'Ahjo$$kkk;-@ ob   912290!####.54$yvkkk/NݸBL  a  104632#"&M97NN79M8MN78ML#u"@    991/90!#"&'532654&'B@?~p*X.)O#9B,,@p1QY 5-X< ?@Mh \ 12990KSXY"535733fTzj^T^d ,@ i Y Y99102654&#""&54632!!jklihmliԯP-LװױbhH# :@     Z Z <<1<222<220 5 %5 s+)N+(#^R^sXXs^R^sXX'd&{H5?&{'H5tdd'd&uH5 "8@a ! e` i#! #10#"&54632#"$54675332673 M87NN79LjU{~q`m8NN87NM/.ֶ3+ʜ{k&$+uk&$)uk&$,u^&$*u\&$(um )@a dd )('d&d  %"#$M %o  f'#o!$ ('& *%"   *99999991/<29990KSX22Y"]@://   / & ) "!   ///..)(%'&+/]]4&#"326! 53.546323!53!3wY?@WW@?Y#"HHKrrNH}}Z?YWA?XXj%zSrrP#jjHj#@Udd  ddMo!ob o~  $ "$ $<22991/<2220KSX2Y"]@ !"#0%O%o%%]!#53!3!53#5!#5!!53#5!!53dZ昤XN{P{{{MjHjjk su&&zLq3k&(+uq3k&()uq3k&(,uq3\&((uqk&,+uqk&,)uWk&,,u_\&,(uq M@%  obo   $!<2299991/22<200]%3 !#!!53#53#5! !#8ܼPyȾRPjL66H}1je}kvtd^&1*usk&2+Husk&2)Husk&2,Hus^&2*Hus\&2(HuD /@   <291<290  ' 7 1s33r4rP13p4pq3d' +s@:, +&  ) *& nn&i`,,#* # )+#%,99999999199990_-o--].#"324&'7!"&''7&5!27A| "5@}!"{WWoeNWUC`PXVwQ`YYQJuRlSVVEiZUSG`bk&8+u`bk&8)u`bk&8,u`b\&8(uZk&<)uqM@&oo ob o # $ !222299991/220_]!2654&#!53#5!#!2#!3wp9jkkj;3@;-.# z#"'q` z*-.$-">1'*'"', 04999991/99990@D --./5``o55/0123-/0123]].#"!534632#"#"&'5332654&/.546wz 6IYwUOmofoPuVhYwZj8l]4M/7cr%#eiyhTuI6ARzfd&DC9ff&Dv9ff&Dm9f7&D{9f!&Dj9f&Dy9fD 8?@G,2*$ 29z*z2/*<'!6`@ $+-?+239**@22999912<2999990@(AoA*+,9?]]5#"326#"&5463!54&#"#5>32>32!32673#"&.#"/퉆tsmS}t_`V7Ju衟y+z\NvzoF[XIxcc))WZXY}[,fuD&FzdfVd&HC^fVf&Hv^fVf&Hm^fV!&Hj^`d&CHJf&vH f&mH!&jHfj-a@3-,+'$#"!( `(q.-, #"! '($+ D*.99999999199990 /o/].#"32654&#"5432.''%.'7%5-Q(/l#K4I2%%=_w\B% pاy/"5k7N:QV^DNJ7&Q{fjd&RChfjf&Rvhfjf&Rmhfj7&R{hfj!&Rjhy '@a ar  <<104632#"&4632#"&!!M87NN79LM87NN79L8MN78MLU8NN87NML} +@?+*&  ) *& &`,,#* # )#+D#*,99999999199990@ -o-wx]].#"32654&'7#"&''7.54327H&pJ-(oJw>@^CL=>^@Lo99Hv1g=;Ly3Jv56?Ms232?7d&XCH7f&XvH7f&XmH7!&XjH9f&\vD;V #S@+ "z zq` $,5!,' 0$2221299990%]32654&#"#5!>32#"&'3!53i6{{6Hijmd__dkk9!&\jD1'q;$f&q#Di'w!$f-&wSDw'z$fwD'zbDsk&&)5uff&Fv^sk',=u&ff&mhFs^'0=u&f!&xhFsk&&-5uff&Fn^qk&'-uf&G'Zqf)d@2!z! 'zqz` $,',5$ **<2<91/<2990@ ++++]%3!5#"5432!5!5#5!3#54&#"32636{{6Ffjjd_76_dJjujjiq32'q<(fV&q^Hq3m'/u(fVH&w^Hq3^'0u(fV!&x^Hqw3'zq(fwVD'zHq3k&(-5ufVf&Hn^sk',Xu*f9f&m\Jsm&*/3uf9H&Jws^'0Xu*f9!&x\Js6'*f9'\Jqk',}u+k',uKq'@ $&$$" $$ !(<2222<2222221@# o b%!o~/<2<2@   9/<<220@ )p)))]!5!53#535#5!#!5#5!#3#3!53!3wGGfjzkkkkz?jj~jJ%@= $, ,':," ',0&<2221@"z q#z/<29999@ z 9/<20/''']KTX&&&@878Y353#535#5!!!>323!534&#"3Th<3l_zjPzvjzlnjjÏjJ^'*u,7'{Gi2'q<,`'q]m'/u,H'wGqw&,zJw`&Lzq^&,0uJ`' @@zz,',0 21/20 ]KTX  @878Y%3!53#5!갰hjjjRkqV &,-4@"!1J9&LMH@6%1TVk',u-;9Ef'mqS't.;S'N;$@X    >>M z zz   ,',0<9991/<2290KSX9Y"]@  &))899HVWggghw           ( ( ( &)-**+,)/6 6 6959?F D D DEY X X WVVVh f f gegaabef`x x x zxxvz T]])53#5!#5!# 3!533Ji‘jOkkkjjqm')fw/;Rl')vOqS'/;XR'0$Oq''n/;X''Oq'y(/;E'y|}OV)Q@-  o bo  $ $ !<2299991/290353'7#5!#%!53{FF3F{jq\kk\-{a@% z qz, ' , 0<2<9991/290P]KTX@878Y%3!53'7#5!7ꮊ=Ǯf`VjbVdl')jv1J6&vKQdE'1JSD'Qdu&1-gJf&Qn^q}&gQd9$@ $#$! $  $!!%221@! o b"o/2<2299dn%0@ ! ! MKSXY" ]@0&O&p&&&]]353#5!#5!##"'&'53367653d @NtBA>_+*}A*&Fjkf/kkyPc!`--?9jJ9JD(l@',':,%',0)261@%" z'z /290ss]@ /*`****]353#5!>32#"&'53327654&#"3Th3lUSëH>_UR[++`yjRklnec!!`Z><Ñjs2'qH<2fj&qhRsm'/Hu2fjH&whRsk'1Hu2fjf'|Rwu!^@0 obo~    %"2299991/0 #0#]%# !! )#5!!53#5!!53q7#3P{Ryy{jjb_ fD ,3k@/ '--z  0*$`4'3 - !*429912<2<9990@P5 -3]]%2654&#"!32673#"&'#"5432>32.#"h碞y,IEςFIzF}ba`c32c``cױq7l')v5J6&vKUqS7'5JSD'4Uq7k&5-uJf&Un4l')v6s6&vKVk',u6sf&mVu&6zsuD&Vzk&6-usf&VnuB'z7;u'q&zWBk&7-u;'M&W'B@  $ $ <<1@o o bo/2<2<20K TX@878Y]K TK T[X@878Y@ /`]!53!5!!#!#5!!!3 I{.{I j=w@`wj;'q!#533!!3#327673#"'&5#53ݢZ4FH!!BBkJkԇL*+_GF,`b^'*u877&{HX`b2'qa<87&qxX`bm'/u87H&wHX`bi&8ymc7&XyU`bk'1u87f&|rX`gb&8zh7w)'&Xzh 3r',|:!f'mpZZr',|<9f&m<\Z\&<(u\?l')v=R6&vK]\?p'0=R&x<]\?k&=-uRf&]nJqi@-'6, 0<21@ z qz/2990]KTX@878Y``?]]%3!53#5354632#.#"CBaSOg**jjjRkKN8;@d(2"#6763!2)53327654'&+!2654'&#!/DGfsb#tsOPabNLKKk+SRjY[XL$]\OOabj??+>ONqdJ;+327654'&#"#5!67632#"'&'!53#5JIHIIHIJPi6TS{||{ST6edqqppeed/0 /0dj@jqd%!2654&#! 3 )53#+w|bNjVvjv; 32654&#">32#"&'!53#56{{6ʿmd_ _dj~s6$32!"$'332#"sB7apmnzq%0HdapU@AXSIHSs9^6#"&'&'&576!247632#4'&#"#&'&#"32767Bap67IzcmQKrHBA>_2*R[Vq%op{{{{ll0lkdap\ (W:<!`--zYYPOf1#"'&5763267632#4'&#"#&'&#"3267'ް荍ed12R<|HAB>_1+R[,*kFGLLKLw? H5!`--==@@st4tt|}q@"#6763! )5; 76!#/DG^wP˺#ܺjY[Xg tjlHqd %!"3#3! $5476!3!#յSRNb|S{jNMkkjސvL;+54'&#"3276!#3!5#"'&32!#OIJIHHIJI6ST{||{TS6iieeppqqdejjd0/60/dfjD&2%#"'&'57276'4'&#"'&7632" 76&bB!&bb6hhpl HHEI%Mb鍌荍?ɔLKKL(LK18DCY.-14B_ KCuu8uttuq3)3!!#3!!#!#33>{{{R{LqLks!*"#6763 #"'&'&'&=!'&!3276Sll0BE77pc}~ap67{}#|}}|OPklVpb2122apG1ܜ)#. ;#"32673# $5467.54632Tp 򐯯2_ pnu˸^~f32ѫ .5V7"'533276'#5!#5!!53#5!Xrw/0{>{{]VDKM9k =c7;q/#4'&'&#"!!#"&'5332765#53547632qa *Og**)\]CBa *Og**\]CB.'89k1[[.'98k[[sM^0"#5'&# 327!5!! '&76!267632#4'&@}$q4QjLSeY=@}|_nv6P DnpkӚ_bTM9uG_<=c6e kk&%3!53!5!#5!#!! G jjj Lkkq!632#4'&'" 3!3!53#5!#}|CAG9_1%=WKͪ<Gj`-&<3jjjkkF( #5!# 3!533!5347632#4'&#"‘baM=A>_2*R[++kkjjjjK_^!`--=;;R53#5!3#3!53<ijpj&jjjfT'&'&#"#56763273!53 3!53''%%"#5<^212/o==2<wqŪy&= \D.-|bVskk"kkcVJ^3%#"'&5#5!#32765#5!#32765#5!#3!5#"&5nSR`o{@A`o{A@3d|uwggjj+]^jj$]^jjijp{3V533265#5!#5!###"'&r/,Xw^ yEIJc019kf/kky]JVDq@/  zz =,,' :,',021/290/]KTX@878Y353#5!>323!534&#"3Th3l`yjRklnjjÑjs'"&'&7>3 '276!'&#"HapmmpbE77pc}~}s # s} o}}o dapjpbcVpb21k$ܜn&2c+D&Rs+7"&'&7>32676323!534&#"'2#"Hapmmpb̚==IGƾ^wX,77pc}~dapjpbcT(kkږ0pb21kQJKQfV9D'476323!534&#"#"3226& e-AHðW[A 鐐ؗ  kk{ 328@#!2#!3!53"#676!27654&#!/DGbs-NNqrjjY[XI'#PQ;V8327654'&#"47632#4'&#"67632#"'&'3!53JIHIIHIJabCFB>_1+R[,*6TS{||{ST6HiedqqppeeT\]!`-->54'&#"#67632327673ӄ{VW˹|RSXYq||hWXŶ98^]^]sH3ٟ_^=7+ҾaaA;7::lGFRQsD1%#"'&5476?67654'&#"#5>32327673bgtsCB--<;tujcT>=0/AA|GFj;,,WVoFG/-*)(CR))tg*,fBB,-1++FY/.;;wS:9 0"!276'&6=3327673#"'&7&"# 76!275.dzYl;+[R+*_>ABHaxwfAk{_H>~=_@@VmQ>.,`"]s]=;9'q'#533!!32673#"&'533276=#"&5ݢZ4FHBëH>_UR[,*0>kJk]LU_!!`Z>_2*R[++'k]L*+_CCGFk_^!`--=;VB#"&7!#!#5!327673 IIJGI{.{I/-yX,,r"5`NK10cZ&8,A&X'}'.!#! 764'5!#5! '&'&'&5476DuP]\Nu9:ncco::{zL-F骩6FӉW֗g[`0/\gհq%!'&5#5!#764'&'531KuG*֑\Xlj}9;mci Ae kk}B/ rSٗd[0'c%3!53#5!# 632#&'&#" 3+uuCFB>_*+R~3gjjjkk\k!`--Hl9M=%>3235.#" 35!3#"&'#3267%C7<9^2c/oz2ժyF%C7<9^2c/oz29\=;D[|{kk2\=;D[|\?!!53!5#5!!#!FLzr{BH,<ZHR'53!#!3#!53!5'jfɄBkf!j#VijVzfI##5!#!!"'&'3327654'&_X{iOfeuopnp YX[[TfZ}Cyx}|9DdcfefI#"32673# '&5476?5!#5![[XY pnpouefOi{XTefŬcd9|}xy}`ff6I'#"32673# '&5476?5!#5![[XY pnpouefOfjJefŬcd9|}xyVݸQfa&#676323!!53!567!5!67654'&#"pkmlht0ou="&[ @NON\q 9‡0m"!~UUGGq !"&'332654&#!#5!#5!32cunp ={džUH23"tk'6I'$!"'&'3327654'&#!#5!#5!feuopnp YX[[ȱi yx}|9Ddcfeialq%33##"'&'53327654'&+#53rRbbaHBA>_+*R[++++[tqjM^]]"`,.><<>j#+'!5!3!!!!#!5!ssssS Ѣ %#5#9cq k'?j'q Vf'@j'f f'@GqV''-P/q9'MP/;9A'MOdV '-1d9'M1J9'M'Qk&$-uff&Dn8Vk&,-uf&nGsk&2-Gufjf&Rng`bk&8-u7f&XnG`b'72'qH<`b')7'Jt`b'-7'Jt`b'+7'JtfVD'f2'q9<''u$f2'9<'9D1'q;f'qs&.# 32675!5!5!5!3## !2#q]DɅͯiY88kkkMM_b;<f9D2#534'&#"3267#"&'53326=#"325!#3{IJiX`}6{{6hkde8&&h`ďd_76_dkksk'-Yu*f9f'\Jqk'-Gu. '-KNsg'zL2fgjD&zlRsg2'qH<fgj&qhfIk'-Kuxf6If&n?;9f&nGq '=j'q V']j'f ']Gsk')Uu*f9f'\Jq+5!3!53#5!#!#5!#3276#5!# '&GG]^FJfR~jjkkkkqqqvUl+dk'+su1Jd'RQk0'!4&#"3233!53!3!53&'&54767"$GY?@WW@?@3P'$}}\#%P?TeW~YWA?XO2QrP?&jjHjjw%=SrQ? fk $B3"&47674&#"3265#"3263!5#"&5463!54&#"#5>32Ÿ1)OOHdX@AWWA@X^퉆ts=kn_`Vk(P栠PG?XW@AWXvzojsJFIydb))k')ufk'd'k')IuL}f'k'2u$ff'9D'u$fH'9Dq3k'2u(fVf'^Hq3'u(fVH'^Hk'2u,`f&E]'u,H'Hsk'26u2fjf'hRs'Hu2fjH'hRq7k'2u5Jf'(Uq7'u5JH'(U`bk'2tu87f'HX`b'u87H'HX4&6s4D&V4B&7;4'q&Wqk'-u+ '-KKfja 9 54!"54&#"3262; !"'&'#767#"32#5! ]5.퓌 fAd T{{6f3k{_H>i]=G=_@@B6 /76_d)j\?35!#!!3'6767\{^P^, HZHZPE^=ORp'35!#!!3'6767RjffP^, Vf#VZPE]EY'u$f!'9Dqu3'(fuVD'SHs'Ifj2'qh<s'Ifj2'q`<s\'0Hs2fj &xhRs'H'Hu2fj2'qh<Z2'q<<9&q<\;% %354'632!"'#767'&5#5!Do$k rni^m|iG UeOjJ%D4%3544&#"3!53#5!>32632!"'#767'&5Do`yh3l$k ro^m|@ÑjjRkln֐WG UeO;%q&%354632!"'#767'&5#533!Do$k roZ^m|XiG UeOkJk;9'U@ - 6',01@ z990/`p]KTX@8Ys s ]#5!#"&'533265fëH>_UR[Wkq!!`Z{fG 754&#"326732654&#"5#"32#5!>32#"&'{6{{6i6{{6iʿd_76_d)jmd_ _dfVGD 0=4&#"326553>32#"&';#!53#"3232654&#"{6{{66{{6Hkk;d_ _dkkd_76_di"#5373 3!53!3!'7#;! c7P5N}* 4@VHNdj=.hGjjHj99V:.$.'7&'&5!27#&'32673#"&/7&'&#"|N:#7IzgsuPvq {0Ba=p9EO[\ *GJ;daqY%V *'7&5327#&'32673#"'7&'&#"qLhed99gL\k  Lw'ްчAG^?ɐ1 {?n9-t|}|N@v&353!5!#5!#!!!53q G {j Lkk!53#'7!#5!3 I{JP3{I|NҿjyRG9lBEf=j^Js9D?32673#"'&/&'&'5332654&/.54632#.#"#"'J*P+9^2c=>]2O j|_{ֽTcjutwZ76!];D((1^>g=c2^9+)/#m0jf^s<(D;aIgVݸVLb32+#!5#32$54$#!"3676Vʾp0H>`+$krjj" "`,&LmD 27654'&#"#5>;23!53VNNNNU$+`>H1ZgQPQP&,`" rqrMjjfD ,32654&#"#5!>32#!32673#"'&퉆tsGF\=kJIn_`[ZVstvzoGGD.jsJFIyCBdb)mnfD!O@& zz` ',,5 *"<<1/990@ ####]%3!5#"54325!#54&#"32636{{6hkkd_76_dk#ifD'%!53#5!67632#"'&327654'&#"h6TS{|}{ST6JIIHHIIJkRjd/0 /0ieeppqqed;'867632#"'&'!53547632#&'&#"327654'&#"6TS{||{ST6baHBA>_+*R[++JIHIIHIJEd/0 /0djc]^!`--=;*edqqppeefD A@  -!԰ KT KT[X8Y1@  `!0>32#"'&'3327654'&#"f'ް荍eddekGFLLLKw課0@@sttt|}f%D.%546! !"'#767&'&57632#&'&#"C ڴ} k r eddekFGLL\m}G UeO 0@@stf9'8327673#"'&=#"'&32#5!54'&#"32764*,[R+*_>BAHba6ST{}|{TS6fIJHIIHJIh<>--`!]^&d0/60/d)jieeppqqdef%647632#&'&#"3!5#"'&3254'&#"3276zbaHBA>_+*R[++6ST{}|{TR7IJHIIHJI4]^!`--=;jd0/60/ieeppqqdefVD!7632#"'&'33276=%!.#"fwv,MNyQQ@HIXX}?@nmj_^fVD!!54'&#"#67632#"'&73267fQQyNM,vw鍎IH'nm?@}XX̕_^x:D-9#"'&'#"'&'&'&#"#67632%332327654KM/_q`T )e !QyNL ,vwrAER@HBAN0]Qk̕vp>,m?>XX!%=;>+eU^_\;d20s@) !)*1KSKQZX8Y/3<91@-z%!%  %`19/90@ p2`P!@2 2]`2P2@2q47632#.#"!3#"32673#"'&74767&'&bb6hhpl ^]\MJ5Wt ljlhP{ziGxR6f*DCYZi>ie2D"'56763273327#&'&''"'&'53327654'&+53 54^HH lphh6b[rBDRj-J-#6Ws_S 6RxGgz}Oiljl tW5JM\]-.YC?u=;>-N& \Q#6NOP$fjR2Ot<>ifD9"327654'&+5327654'&$%67632#"'& X)G`&>l:9FG&&GF9:yU:eNJkjKLLK(p7 %{ 33`i54d54j_34KS4MMfGHGGg;9`'#5!3##"&'533265#53fëH>_UR[WkjȤ!!`Z{8jf9 :!"3265#"&'53326=#"543!547632#&'&#"{~~iX`}6{XabHAB>_*+R[,*Htp|}&&h`ďd_76]^!`--=<f9''!##"&'53326=#"54!"3265#iX`}6{'k[&&h`ďd_76!tf;(7&'&#"32767#5!#"'&57632j >Rx[Y\O=G5 S]lkz폎Te`l!Z/@ywtdMn8+^8+- #5!##5!##"'&5476327654'&'fPSatsR4aA/!56'B8iU4Tkk?kkcӤÂKJgAkyЋ6"6/"9wB&6626;2#54+"#"'&54767#"#327654'&'X0i/D_;a*jp1O@q1)f3-SZ:%8,NY/2E9K/ߚ|xN+kk.Pf}W);A*&@fr|7V'3#"'&5#5!3265#5!3!'Ǯ3QQkTS_0/zXj87ed9kHHkjT/676323!534'&#"3!53547632#&'&#"3PRl/0zbaHBA>_+*R[++jl77jjGHjjc]^!`--=9T9J?67632#"'&'533276=4'&#"3!53547632#&'&#"3PRlbaHBA>_+*R[++/0zbaHBA>_+*R[++jl77^]!`--><GHjjc]^!`--=;J`%3!53#53#5!3#2654'&#"갰h!"^B"!./"!jjjfjkj/!!B/.""""Jc' #5!3"'&h*,[b]_]k8<=c^YJ`' %3!53#5!#갰jjjRkgI(%3!53&'&#"#67632#5!32673#"'*`33[i+0`33[jjj~('LJI;jPKJIIs%3!53$'&72#5!3#'&W;iH;jjjj8dj ccri;9b#5!327673#"'&5i*,[R+*_>BAHbaj<>--`!]^ ;6g-#5!#3!53#5!!!"'&'3327654'&._Jf鱱ibOfeuopnp YX[[ffjj@jVyx}|9DdcfeJ^D0%#"'&5#5!32765#5!32765#5!3!5#"'&5RSnRR^`o{@AX00o{A@X3d|SSu;=JV^D23!53#"'&'#"'&5#5!32765#5!32765#5!3d|SS5RSnRR^`o{@AX00o{A@Xkkjp>=qu;3267632abHAB>_*+R[,*`o{@A00o{A@h3d|SS5RSnRRh^]!`--><]]jj,CD]]jjTijp>=qu;_+*R[++h3RQl00yCCh^]!`--><$kl77jjIH^]J9D.4'&#"3!53#5!67632327673#"'&500yCCh3QRlUS*,[R+*_>BAHbajIH^]jjRkl77ec<>--`!]^T'353#5!#5!##3T jRkkk'=Y7\`7Y=>"jGGgMM47MMgGG(xjlͩjx(POpoOQj=f=jQOopOPfVj#+3!53&'&767#5!#'676'&Ʈ갪qqooS3KL3 P2KK2jj)zzkkgyyiNt8uNfLutLJ'332765#5!#3!5#"'&JjNKHI36UUz-21 ON^^jjio65J332765#5!#3!5#"'&JjNKKI36UUz-21 ON^[jjio65J9'+!5#"'&'332765#5!#32673#"'&'k6UUz-217jNKHI3++\RT^>AAHa]o65  ON^^jj<>Z`!]ZJXD#.#"3!53#5!67632jNKIHͦh6UUz-12)ON^^rjjio56J9D+#.#"327673#"'&=#5!67632jNKIH*,[R+*_>BAHbah6UUz-12)ON^^<>--`!]^hio56Tp=%3!53547632#&'&#"ͥabHAB>_*+R[,*jjj j^]!`-->BAHbaj j<>--`!]^jjjG')3!&'&+3!73#5!2%32764'&+2$$0((Ez!^UT>=6m2334k IgRbyggYgJJf??.3323G')#!53#'!#32767!#32764'&#z=>TUzE((0$$~k4332m??fJJgYggybRgI K3233r9DB327673#"'&=353332654&/.54632#.#"#"'+++[R*+_>ABHabjGF|_{ֽTcjutwZgbd<>--`!]^w;8]YFV1-,f,*gtRRCQ*-/o;9'#"'&'533276'&7632#&'&#"yaHBA>_+*RY-<j_waHBA>_+*R[+;^ht]!`-->Pnr]"`,.>Qmi;9q.3##"&'533265#53+5;54632#.#"ëH>_UR[WCBaSOg**~jȤ!!`Z{8jkKN8;J9>%6'&#"#567632327673#"'&?;+[R*+_>ABHa <-YR*+_>ABHahGnQ=--`!^|nP>--`!]}:9 0276'&# %# '&!237&7632#&'&#"#54Y.5AfxaHBA>_*+R[+;lYzd>H_{k~G=]s]"`,.>QmV@@_;'D%3##!5!4&#"#>32Z4FH!!BBkkJkL+*_FG;V'q#533!!327673#"'&5ݢZ4FH!!BBkJkЇL+*_FG7'(!3#3!5#"'&=#53#5!!#!3276X3QQkTS_ߠ!0/zCA'jjj87edMjkHH^\fH,##"&'&'&54767!5! 7654'&'5!8ZZ++PH^_jkIR*+ZZwzZ[&Z[==ve@o`cIC#$FDKaan@j.Ιppppgf.Jx'"3#&'&5#5!7654'&'pYZ*,PH^^ki]h*+\}p[==v@o`cIC#$^S]k8<<kgf.' 3!53 3!53y՟qw'Dkk%kk!'!3!533 33!53v<;w>-kkDkk 3!53 3!5367632#&'&#"Fy՟qw2==o/212^<7!"2kk%kk|-.DT)57#5% #5%7'ڹh3ooHoojR9'35!#!!327673#"'&=Rjff*,[R*+_>BAHdaVf#V҃;>--`!]\hRB'%254#"!5!#!!2!#?0jff.lcyVf#VEȾf6I'##5!#!!"'&'3327654'&_JjfOfeuopnp YX[[f#Vyx}|9Ddcfe6I'$, '&654'&+5!#!#'7&"2( /i-[[_JjfOfeq vLo6V{fef#Vyx}K56{_x!%327654'&#"#5>323+5tZ,**,ZR++`>HbRrj><¾<>.,`" ^Mjjx#!+53&'&547632#&'&#";3ȸrRbbaHBA>_+*R[++++[tj{M^]]"`,.><<>*jx";##"'&'53327654'&+#5rRbbbHBB>`VRZ,**,Ztj M^]^!`Z=<<=jr9'747632#&'&#"327673#"'&5rbaHBA>_+*R[++++[R*+_>ABHab}7^]!`-->;<>--`!]^G@ %6'&$"'&762ȧƜ<:9=|> 565565jI+'kfD:%27676'&'&#";#"#&'&54767&'&547632 X)G`&>l:9FG&&GF9:U:eNJkjKLLKjj(p7F%| 34_i55c55i`33̶LMgGGGGgLMf9#&'&#"32767#5!#"'&57632547632#.#"k>Rx[Y\O=G5 S]lkz폎Z_aaHAA>^TR\++՝/@ywzdMn8]^!`Z=;F'v;94*#'# '&#5!'&#"3247632#"'&+qd of8o~"!/."! !0/!"bBKL:kqqZ{_.""""./!!!!;T'7!#3!533!53 #5!#^@_*+R[,*IJHIIHJIkkd0/60/dL]^!`--=;eeppqqdex)%3+53#53327654'&#"#5>323#RtZ,**,ZR++`>HbRrjjjfj><¾<>.,`" ^Mjx+!+53#535&'&547632#&'&#";3#3ȸrRbbaHBA>_+*R[++++[tjfjM^]]"`,.><<>jjf ',54&#"326!!53!+5#"32#5!!{ffBk7ї6{{6fyiVզd_76_d)j};f67D#5!#3!5#"32#5!!!"'&'3327654'&%54&#"326_Ji6{{6feOfeuopnp YX[[ ffjd_76_d)jVyx}|9Ddcfe8ifB8=%254#"%54'&#"3276!3!2!#5!5#"'&32#5!!f?IJHIIHJIdf.6ST{}|{TS6fwlcyieeppqqdeVDȾd0/60/d)j8;-qF#533!!3267332654&/.54632#.#"#"&'5#"&5ݢZ4FHB:G|_{ֽTcjutw-.CCgb GkJk]LU_19;]YFV1-,f,*gtRRC(*)-.HFo,, C;9C@#"'&'533276'!32673#"&5#533!&7&7632#&'&#"NxaHBA>_+*RY-<x14FHBGxaHBA>_+*RY-;^hs]!`-->PnC]LU_kJs]"]/.>Qmi;%q=E6! !"'#767#"&5#533!!32767&57632#&'&#"54]} k rGZ4FH!!:eddekFGLL_C ڴ G UXGCkJk]L**]z0@@st\m}J9A!53!3!53#5354632#.#"!>32#"&'53327654&#"3)CBaSOgT3lUSëH>_UR[,*`yjRjjRkKNqlnec!!`Z><Ñj;%44632#.#"#"'&'!53#5!332654&/.ֽTcjutw-.CCgbih|_{ ,*gtRRC(*)-.HFoj@j'wv]YFV1-,;!!53!#!53#5!!ffBk5iy'Vj@j};G`)#53## ##5!##53## ##5!#_I_[I*kP_I_[I*k5/<<C<ABHab0/z'jkl77<=--`!^]HGj;9B54'&#"#567632#3265#5!3327673#"'&=37#"&5++[R*+_>ABHab0/zV*,[R+*_>BAHba3RQl'<=--`!^]HGjY<>--`!]^h=l77.!53#53676323!534'&#"34gm 23Cm34ecKP)*c;;=99w;;m((44c;.1676323!534'&#"3!53547632#&'&#" 13Cm34ecKP)*cg<=j-()&;38=99w;;m((44c;;\44 z6#K. "4632#"'#53#"'&'5332765'**l<=j,))&;384&&47%ME}@?[%@ b  91990>=3ME}F@?[%.'3%N}EFP[?u452654DŽu@XX@sPOOP=>X@?X=>POPPu"'&4763"3sPOOPs@XX@PPOP>=X?@X>..#327654'&#"#5676323+5L::6?)+*/o?@@5Jqqxr""mj""6z 44}5+;;..!+53&'&547632#&'&#";3exqqJ5@@?o/+*(>6;88;Lr;d+5}44 z6DjmDi;?f[@ 91290K TKT[X@878YK TK T[KT[KT[X@878Y3# #ttf?fL@ 91<90K TKT[X@878YKTX@878Y33ttx5h3Ԕ5"b+qh3Ԕ"x)3!#c=c= llx!#c=xu#iu#jZ:8 533##5#5s)9H n@  [[120KTX@878YK TX@878YKTKT[KT[X@878Y332673#"&` hddh ` HOGGO7u! -  10K TK T[X @ 878Y2#"&5460EB33BE!E03BB30E \@  [[10K TK T[K T[X@878YK TK T[X@878Y#"&546324&#"326sssszX@AWWA@Xssss?XW@AWXLw&@   9991/9990!33267#"&546^WC8:$C q|<{/.8  YQ1iJ7@  [[99991<299990@A            ]K TKT[KT[X@878YKTKT[KT[X@878Y'.#"#>3232673#"&9!*0`f[&@%9"+0`f[&@Z7OL!7PKf:@ 91<20K TKT[X@878Y3#3#rtfxtZ%3327#&'&',rBDRj-J/!6Ws_S c=;>-N( \Q.#+x#5!#7#5!##"'&73254hs}>m,wQ(('<<<cWYPFE{7<=@E-,LKNX_a,+KKC@?BB2'0J9R/. : !..&('>U01 .7#5!#3!53'3!537'#5!#] \ZXZ\U5S<<<<<<<<..!+53&'&547632#&'&#";3exqqJ5@@?o/+*(>6;88;Lr;d+5}44 z6DjmDi;+4#!5+>4+4!5!3#>”x(+4!5!3#>”PP+43#!5>x(+4)5!3+”y>=3%>=3%ME}^ME}F@?[P@?[ydCRfv?fmD7{b+!!V )9Hw7u!x71!jB2#567654'&#"5676+ 1El6)IR,ao 18X(Op6'< "yf|?fnLm3~*m'"Af###=rtfxx)9'xw)9Hw q& #6767LF::u*pPgIJ62'67&'&5476 D( JP 1"&6"7#,LS#&8F'kv2&'&75476-"6&"1 PK ('F8&#SL,#7}f3#DƐtf}eC Sev[G%53#5#5"lG%33##lۥpNt!#!pޔt"JZA532654&'#"&|..8  ZP2hM^WC8:$C q|<:_"'&4763"3sOPPOs@XX@:OPPP{X@?X6533!5"%##5#5񥔥۔G% 533##5#5%!!"۔9'#"&'533276=ëH>_UR[++褻!!`Z><9T%332673#"&5ݹ*,[RU_>HÀ<>Z`!!xubxAx5bjAAfy`74gd >=37LF::ud*pPgIJ6#uzLwzJd3~+f#!#5iVyC>b#"3327473327673#"'&0W ` : J ` 9 J ` T0N  J?bn?dmC9bwE9dwKDe{.+fqpmB]=Q'9'&'&#"#676763232767673#"'&'&#"#676763 gf7K`25cdTi gf7K`2=[X`i gf7K`25cdT) 9>(&;=3)B 9>(&;F*)F 9>(&;=3):5!jj:5!jj'LL^??'&NsP9EG@e&lY?g!!ub&b&C>b632#&'&#"#&'&#"#320W ` : J ` 9 J ` T0N  J!U '77''thuuhtthuuhwuhtthuuhtth.54675>54'&'!KP7!LO0PQX$  +0PQX$   '7 !xp#&'& #676)$ɟd$):`wwww`Ttf3AntVH%#AnHP =3?H33g(Ղ] Jy>=3462"J^X?MpMMpE%ZpMN78MRfO10K TKT[X@878YK TK T[KT[X@878Y3#uf7R&jf& BL 4632#"&M97NN79M8MN78MLf'\f'Vf'V=f& @f'Wf&0&H$qd%q7LNp)3 p=/JHyq3(\?=q+s ,`@n ni `-,')!&$  %-221@ +"!(%&/K TKT[X&8Y220_.o..]%2#""&'&547>3 #3!53#5HapmmpbEnpbo{{{{NQJKQkdappbcVobc q,q.% 3!5333!5bJH\jyjjkjjf0d1q#%53!3!#!##3!53#5{N{D{{7{{{{L]Lcs2qXq3S !53! !#5! {5h{I.B7Z<s'093!535&'&'.46767675#5!#67654'&'mmpd}dNNe|dpmmpgyBqGqBygm`}}c˫c}}`/OF! ajja !FOOHdkkdHZvmVcVmvZ ;`11;#"3!53$'&6+5321#5!#676,f[to[f]BGA^"#kwijj i~3k_Ckk|C_}')M@( n!iw   '%*991/<22990%!53!565#"!3!&5476$32`PuuNsnccotӶF7SF-W`֗g[`_\gb\&(uZ\&(uf0f&edf&JVJf&LJf&HJx& Wf0D$2'&'&5476276737'&' &'&767t(_>n{||uVL'$ge`"hF$&7}ˏA:?2sWIINsSoV7$C;%oi4;^ΝKyuz8Q &{eq{ V9-%32654'&+5327654'&7632!"'9P[]_2XH/M\wRx_FE|he=;Z]kH=EOq08tdTS(ml^\JSc'%'&7#5!76'&'53>:/Ej.4T (0pt(g(32#4&#"h3l`yklnÑfi+1@  *221@z q`9/0'&#"!32762#"DKLCSDLLD@AkKJkjJ' #5!7'&hJ8|̎]"k#JyuzPF'sT &'&#"#5676323!53 3!53%"#5<^212/o==2wqŪy\D.-|#kk"kkFV'n@,',:, '02<1@  zz `/<299990]K TX@878Y]!3!5#"&'##5!3265#X4Z9^'^`y'Ahjo$$+fkJr'%6767676'&'53##5!zP_=*9HpqP>H_{ኹht0tFld\Fa ;1mTfJ=,g\,kSU) 3$#5254# '&54767$54%!#!N_K19+kZs{'Ii@k>moHrZLlwVe z&fjDRJ'J@%z z =,' ,,:,',01/<2220/@]353#5!#3!53!3T!jRkkjjRjVMD32654'&#"#476763 #"&'9HWQIWaCX{6HihzoeOzr#. _dfUD %$#5254#$'&532#.#"9+kZ茍eekKMHrZLl1/0qrf:' %2654'&'" !!#"76hKCGK8rFlmuk3|S'7'&7!#!J7}̎]if"KyuzP kJx'"3#&'&5#5!765'&'p}]WAMA-B_URK;X./z~+45ˆFspTS'D.1xz #BJ[5"5ghZS'Ds`U!!`Z>ZsV $%2#"#&'&'&7>3 HR`[apmmpbEnpb~YNQJKQfn #2apjpbcVob2"fVjD%26& #&'& hؗ﹥ssF8]m{2|sU{# '&'&5!2#.#"%$#52'&hpmIzq%{tX,kZ 2,gp\@AĵrZLlfU$&3$#5254#$'&57637673#j`LKM9+kZ茍Ĝ.R k3[t^qrrZLlz2]Iq7)GPr%47632#.#"!!#"&'533276{e3vFbKIP,>?|f2tGbJHP+AbdVRE@jbdVRFgk: )##5!33:Ey3j  #!3qq|OiU# #&'#&'&#6$3 #5276xP{rp%qzH !9vC o`[YXA@뗲72k\VLD#&'&'#&%5 #66`0  2oP^R V Tf4!|nXv\GE67327673#"'&'&7'&76?'&'&#"#567632676FC(yZh4*<^212/_UR[Wq.DD./BBzkq!!`Z{s !! &'& "&'&7>3 8 c}}capmmpbEnpbQ}dapjpbcVobcfE+%673#&'&'&'&'6767676#&'&!!j4!HZZ.= ore_\kLH<$ FKAc2:/BA>NiSfE+% !5!&'&'&#676"'&'&'&'3" $<ۂHLk\_ero =.ZZH!4FiN>AB/:2cAKq!2654&#!53#5!#!2#!3wp9jkkj;V 32654&#"#5!>32#"&'i6{{6HiOTjmd_ _ds#"&'&5!2#.#"3267BapmIzq%0dap\@Af353#5! !#3!53#3q  ǿjkAkjj+=j`V_' !#3!53##GZӇӸ'"fhjvqUVD'!!#5#53476763 #"&'32654'&#"reeWaBY{6IVPJkppkzr#. _dihzoes332#"#6$3 #"$s0ا%qzImpaSHISXA@Upads )4632#"&#"&'&5!2#.#"3267M97NN79MBapmIzq%08MN78MLdap\@As )#"&54632332#"#6$3 #"$EM97NN79M.0ا%qzImpa9LM87NMSHISXA@Upadq3k'+uNq3\'(uNE,U@&% $ $ -<1@$d)n!% n  ob o /2<204&#"3!53!#!#5!6$32#"&'533265x¼{?{89jjjkf !A@$  $!"99991@ o bo/222203!%#5!#3#4'!"#32'2Z aPjn1d$jbEZ kkU3 mq3(+@  $+$),<2<29991@M (#*o%b  o/<<2<<290KSX@#        dd <<<<<@ $ $ $$ !221@ ob o/<220#3!53!3!53#5kjjjjkq3s&B7r@    91@M n` ob<2990KSX@  d d d9Y"&'5332?#5!# #5!#)Jr\8T0G%P`n""dK}Tkk2kkb.u/%.7`@+ $&$3$/$8<<2<<21@ b'7no/<<2KSX&/n#<<2&/n#$o<<2Y0!#32+3!535#".54>;5#326&+";/FaootzDžgWϫԦkSBuzǒJqjjq?܂pǩ?S ;qF@$ $ $ $ !291@ obo /2<20)53#5!#!#5!#3#4GGj$kjjjjT>C@$$$$ 2<21@ obo/2<20#3!53! $5#5!#3!#5ƾBkjj#9kkǘrkq\@$$ $$$ $ !221@ob o /22<<20@ ]%!#5!#3!53#5!#!#5!#1GG1G{jjkkjjjjqd@ $$$$$ $ ! 291@ob o /22<<20@ ]!#3#4#!53#5!#!#5!#!#iGj$dG1G1jT>kjjjjFG@  $$ 291@o  obo/20%!2654&#!#3 )53!# Cp{jkLjLqn',eq@@ #  $!2291@o ob o /220%!2654&#!)53#5!#3  !pGYjLjkksV@ G& ' 91@   n dni`90@ ////] !"$'3!2!5! #"#$I^B`O 0 %q<U^F"z@Xq (Q@ &  $ $!)2<2991@#nin` ob o/22990%3!53#5!#!76! ! '&!2#"Gg3E]6jjjkkV_AQKJQx7 `@$$ !2<1@M oobo/<222290KSX@$$   <7367672#"'& 3 e "Y^SZjHdB8YZ醆՘+k^EQ-B_ 42lGnMM͒3I+'"8@ , 0#221@z"z" z /2290 #!53#532654&+32654&+\zu(ק_jstiu~v'^q #힖jSj[YDDZp[[n;' 0@,- , 021@  z  z/20#5!3!53#5j'ߦjjSjJ' !H@,  ,-!"99991@ z z/2220 #]3!%#5!#3#'&#!"#32>5? hddh$J^O3jj{fVDH*'+@  ,+,),<2<29991@M (#*z%  z/<<2<<290KSX@#  > >      <<<<< >    Y##5!# 3!533!53#5J‘'jbjjjjjjSj'$?@= , = ,-%1@ " z` z/2207>76=#5!#3!53!#"&/326" m ({SBDL?)?*hMȼjjjjDuSPHO}J'@== , , ,,09991@ z z/<2<290KSX@>>Y353#5! !#3!53#3J++jSj%jjj65jF'X@ ,==,: ,022<221@ z  z /<2<20/]3!53!3!53#5!#!#5!CjjfjjSjj=jjfjDR;'E@ , = ,:, 0221@ z z/<220/]#3!53!3!53#5'jjjBjjSj;VDSfDFS'3@-, - , 1@   z/2<20#5!3!53!#iߦi'ߦjjB!9'\NV#0=b@8 ,2*,,0><<<<1@#21$0!zq>;'!5-`>z>2<2<290#5!7632#"/3!53#"532'&#"32?32654&#"ƱiC0iqr1CD1g}h1DD'NWSL(DC'MWTO&iF22EfjjF23-2F()FUF)(j'[J'M@= , , :, 0291@ zz /2<20/])53#5!#!#5!#3#'&IhiTjjBjj{F'E@,,=,:, 2<1@ zz/2<20#3!53!"&5#5!#3!#5馦Te$?'jjjW[MTjjsPjJ8'^@,, ,== , 0221@z z /22<<20@  //]%!#5!#3!53#5!#!#5!#{BjjjjSjjBjjJ8'f@ ,,,== , 0 291@z z /22<<20@ //  !]!#3#'&#!53#5!#!#5!#!#4hd'j{jSjjBjjB<'T@,, - 21@z  z z/2<0@ ]%32654&+##!#3 )53`evwdxʦްjp\\o jj<'#i@,",!,  ,0$22221@z z! z /<2<20@  ]%32654&+)53#5!#3 3!53#5!evwd9ްjjp\\ojSjjLjjSjl<'N@,  ,0221@ zz z /220@  ]%32654&+)53#5!#3 evwd9ްjp\\ojSjjfD@@ - 291@z`0! #632#&'33 !5Dk'4" $\_i;D(T@ D& ,  ,0)2<22991@ #` z z/229903!53#5!#367632#"'&'2654&#" ~zjjTikٌ͙wU'U@= , 2<1@Mz z z/<22290KSX@ >>32|_UR[W_ϰh:39B`Z{ÏKjjVwsjwyln%;f&vHlfE?@ - *291@z `0%673#"'36#. !!j4!r\k$ F3)1/{iSsDVJ`L!'jHJ KTKT[KT[$KT[X"@""8448YKTKT[X"""@8448Y;9M'!*L@&=,",- +<1@)z  z `"z/220!53!#"/32>6=#5!# !'32654&+m:&{IIXL44?0# %abevwdbfHӔO}lMȼjjfp^^oF#'(\@$ ,== : , 0)22<<221@( z  z /<2<2<20)53!3!53#5!#!#5!#3232654&+#8B bevwdb4ffjjSjj=jjp^^o+#%l@= , , $,!&<2<<1@z #z%q z/<2<<0KRX@ 8Y!!>323!534&#"3!53#535#5!:3_ϰh7wlnjjÏDjjVwsjFf&vHsFd&qC9&`|<'m@==, , 0221@ z  z/<2<20$KTX@8@8Y!"#'&#!53#5!#!#5!#3Qdhd[iTjjBjjiF ()53#"#!5#5!#!#'&+3 !26&#!pdoGodYb Lj!gkkgbS<U"%3264&+3 )53#"#5!#5!!#&#evwdްVbb(i(bbjpojSzizsfD '&'& 325 VQh~h  {2|߽jh33#3)53#532654&+rxYbԾp}bj}~$q33#3#!53#5264'&+A]Fdc7ev;;ea'Jk\EKKfVk?p78eq7 /@   $ !21@ obo/20%3!53#5!3!K{jjjk%`;X 0@,- , 021@  z  z/203!3!53#5i'1TjjTiq73!53#53#5!#5!!{>jjp{k{;'3!53#53#5!#5!!i|jjX{i{qEb,3!53#5!#5!6%$#"&'5332654'&{>9"nGIrXXw^NxpZUjjkp&+rI""ca5Q[V;9q'(3!53#5!#5!!2#"'533276=4&#igMSca|_URT2,_jjTiem_]B`Z>5Ïou&z,PZuD&zpq!3!53#5!##5!# #4'&'<G̫jdjjkk5kk4T;'!533!53#5!##5!# 3#'&#ۘ‘hdjjjTikckk{d #5!# 3!3!53#537#5!#3ͪ<GY5kk3jjj}kk};!!!#5!# 3!533!53#535#5!<‘i4zekkjjjjPzvjF##5!# 3!3!53!#ͪ<{k5kk3jjjL<g'!##5!# 3!533!53##<‘x'kckkjjjjWq)53!3!53#5!#!#5!#3#4GGj$j~jjkkkkT>F'!53!3!53#5!#!#5!#3#'&#hdjfjjSjj=jj{q !3!53#5!#!#5!#5!3!53G{>~jjkkkjjF'!3!53#5!#!#5!#5!3!53ifjjSjj>ijjqE 326%$#"&'5332654'&3!53!3!53#5!#9"nGIrXXw^NxpZUʌ&+rI""ca5Q[Vojjjjkk;9'.3!53!3!53#5!#!2#"'533276=4&#BgMSca|_URT2,_jjBjjTiiem_]B`Z>5Ïsu'zLZfuD&zdzB!53!#!#5!3#4#I{.{Ij$dj` T>S'!53!#!#5!3#'&#7iihdjB {Z<V'%#5!# #5!#3!53y++w3kk%kkkk !53 3!53 #5!# #5!# 3#4#XLP@Iu״j$djjjskkkk@T>q'!53 3!53 #5!##5!# 3#'&#l%ߏLhdj>jjkk3kkw7{1!53!#!#5!!#5!#3#4#I{.{IGj$dj`jjT>S'!53!#!#5!!#5!#3#'&#7iihdjB Bjj{w!53! $5#5!#3!#5!#3#4#3?Ej$dj#9kkǘrkkT>F'!!53!"'&5#5!#3!#5!#3#'&#T<)?hdjW6%MTjjs-#jj{#53#5!#! 3!534&#!3a9)kjjkkWpkJKq,m'/zuO*H'woqE167$#"&'5332654'&3!53#5!##5!#,5"nGIrXXw^NxpZUGh +rI""ca5Q[Vojjkk5kk;9'.3!53#5!##5!#32#"'533276=4&#8zMSca|_URT2,_4jjTikckkem_]B`Z>5ÏqE$%!3!53#5!#!#5!##"&'53326GGGIrXXzX%~jjkkkk""caF9'%!3!53#5!#!#5!##"'533276ca|_URZ,.hlfjjSjj=jjۣ_]B`Z>>)"#3! $5#5!#3!#5!#3d$j?E"9kkǘrkkF'!)"#3!"'&5#5!#3!#5!#3dhT<)?W6%MTjjs-#jj;X !#3!53#;鱱jjj@i'w!If-&wSi\&I(uf!&ij9fDq3m'/uNfVH&w^nsPfVDs\'(HufV!&jh\'(quO*!'joo\'(uPZ!&j pfIxf6I'?q2'q<QF'qqq\'(uQF!'jqs\&W(Hufj!&wjhs-fjD"s\&(Hufj!&jhs\'(uff!&j32'q<\9&qD|\'(u\9!&jD|k'1u\9f&|D|\'(;u`F!'jq7353#5!#5!3#4#q{>j$djkT>;'353#5!#5!3#'&#FihdjTi{qn\'( ud<!'jfD 8?32654&#"'>32#!32673#"&'#"!54&#"#>323267U퉆tsmS}t_`V7Juy+zvzoF[XIxcc))WZXY*}[ԺfD22#"'&'53327654'&+5327654'&'&#676KLLKT__hc >>ul:9FG&&GF99ms|[YDgGGHGf%]-.43_j45d45i`32\|a_JJ`- #"&5462#5!#3!C/.CB^C.DD./BBjjkfD(/" 6&!54&#"#>32>32#"&'#"73267(Ry,IEςFIz8F}ba`cc``c)fjD 4& #4 ؗ2fj  653 5=(.2+z!53##!#!2654&#!jjokktX4j^`z{ 14632#"&4632#"&!53##!#!2654&#!E03BB30EE03BB30Ejjokk$0FB42BF0DB22BDX2l`^z\p0#!#3!2654&#!#3!2654&#!#3!53# uwjj%jj,jjTijp{5n`o{`o{3d|@ (5#"32673#5#"&546;54&#"#5>32VUVIIXth&eCp\TER <32+32673#"'&VUVII,,th&eCp..TER <<:87HI4~BE>I((9;@)(jY]f)C&%87x ==@'53#3#5#"'&63254'&#"32761oo"45M|ON}M54"..XZ-..-ZX..]<$;]8WW;k98?>|{@?89@| 8?32654&#"'>32+32673#"&'#"&'!54&#"#>323267VUVIHYE4N|ZQIS <IP'32f]]f)CK87x0312x{GFbc3hjkg% #53>32#"&'#5732654&#"p"iM||Mi"\XY\\YX\;8658];kq{|}qk@ 3#5#"&632#5354&#"326o"iM|}Mi"mt\XZ[[ZX\;]85686;;kq}|{q@!32673#"&54632.#" fcMa]z\UP\ x{GFbbchjjh@!!54'&#"#67632#"'&73267@33dL11]KKyYYQR.-VP\ x>=#$Fb12WUSSch55kg@V2"&54767&'&54632#&'&#";#"2673T0/UU/0|5<''ID%$,-WW-,$$EHN ^98VO:'( ((9OW x45<8;63FI65@V22#"'&'53327654'&+5327654'&#&#676B/0UU0/|5<323!534&#"3!534&#"3!53#53>32"hEihhe=FMQde=FMReio!c?Ni{BCtu;;4[Mhc;;8YKhc;;;j32#"&'53327654&#"35io!fDn55{l-S'<64997yK\i{62""ImQhd;@26&""&6 ]____]&Ã7@>32#"'&'533276'&#"@oYXXY@??@D -,R^000/_KY=_dVVVU N$$AAAAEF@ 4&"#46 @__&ƀ@ 2653 &5__ڱ% "32654&#"'#53>32#"&'3!53 \XY\\YX\tp"iM||Mi"mp;kq{|}qe<]8658<<%#53533#32673#"&5ffu!,-*WY[eS<py>32#"&'!532654&#"iX`}6{{6h&&h`ďd_ _dktq'53#5!#3#3!53rjkgzjjjf9R%3#"&'533276=!53#5!ëH>_UR[++ijjh!!`Z>w^y<S+L!- 05&T,@V2"'&'3367654'&+5327654'&#"#567632B99_ NIE$#,,WW,,#%DJ''?B<<5|/0UU0/56IF36;8<54x WO9(( (':OV.,#.#"3#3!53#5354632+=42A5oootq*T*w*+?QM<$;;:aR=;_I""6{ 45\w3#"&'533276=#53#53 m{k.R'<549pp;:\i{62""I:;;4 53#5!#!535xxow!N;<< .=D#"'&'53327654&#"3!534'&#"3!53#53>3267632<=>k.))'<3:=FM)(deFM))eio!c?N45"35Ei44b\54 {6""I[M44c;;8Y%&44c;;;j=m)(44d;;C,-UNRCVJIK9U\_TA>8I""6{ 45\dC! 42'0J9R]:A..%.O>Ta '#"'&'533276'&7632#&'&#"L=l.))'<38& C< K=l-*)'<49% ;bPA4 {6"->lrQ?4 {6#->%'#53533#32673#"&'533276=#"&5ffu!,-*Wzl.R'<63:&eS<XHI#<]tUh?>>?hV9:]."3#&'&5#537654'&'Ga893-;ZP"'@?d'"^=fed'>^Wf}P''RRfv2&'&75476,"7&"1 OJ ''F8&#SL,#7ZZs10!!ZsZZsb/10!!bb/10!!bb/10!!bb/10!!b]&BB%@ i  91990#>7%ME}@?[@ b  91990>=3NF~+?=[Z@   91990>=3Z_WE%Z.'3N~F+P[=/@  i  991<290#>7#>7LE|ME}@?[P@?[r3@  b  991<290>=3%>=3NF~@LE}+?=[P??[Z`2@     991<290>=3%>=3Z_W;_XE%ZPE%Zr.'3.'3rN~FN}E+P[=?P[?9; 6@   b HH  <2<21<2<203%%#5#p##pFs9;\@1  b  H  H <222<22212<2<22<203%%%%#55#p##p##p##pFE%'3!    104632#"&3~|}}||}3q3 64632#"M87NN790pNN87N $4632#"$4632#"{M87NN79 M87NN790pNN87NMpNN87N/ #&@a! `$ $1<<220%4632#"&%4632#"&%4632#"&%M87NN79LVM87NN79LVM87NN79Lh8NN87NM88NN87NM88NN87NMq L #0<@L|@B?@=@=>?>M G$jjGj=*j1?7`A=iM$>0-'@!' :  - :4! D4 J M9912<<2290KSXY"2#"&546"32654&"32654&"32654&#'2#"&5463#2#"&546WddWVbcXcdWVbcXbdVVbaU"ZܻۻZݦ!\ܻۻ ۻۼ q o !-9DOS]2#"&546"32654&%2#"&546"32654&"32654&"26&#'2#"&5463#  &54 WddWVbcWddWVbcXcdWVbcXbdbaU"Z<¹ۻZZۻZݦ!&\ۻ ۻۼs##@Z210 5s)+#ssR##@Z<105 +(#^R^sXX't BE&""|&"[|'t"4 2654&" '&5476 0jjj}_^^_R_^^ļrrrrrrr5P@'  M  h  \<<91<<290KSXY" !535!533#3TNriTTRD$!67632#"&'5332654'&#"#%$01;bacbHNNrfmv:;n?/0%;\ KKJJOTtnl::%( ,27654'&#"67632#"'&54632#.#"85445bch4K&EG?[Z¢]^7<=?OZMBB::lm::pjo<j%LKij 85Eh3 Dh吏uZ#0;37367"76!32!73 4&+3 #"'3254#"8t* @|0vDP4JJH4\V|JJDR_^wژznX,sB7#RmNCRC!5!7676735#654$#"367632!!#3!2767##"'&5476&Y h||qYXSR7!$U{s]^]^8  j*@bj7A+œHGA@{e323!654'&#"chHl?'ox!z"sjVlne=fCUjjgE=!HL+ /#"&63264&"!!463"##52765#5!+ghhg-OOuNN̓ԗ#"yԗ#"t+iihhhP">Qrkf(z@D  # '%!b) &S"7$S P PP TPS$T 7)2291<<22<22999903#3!53#3#53#5)#5#3!53##^VVV+TVV}-DVVABBBB7VBBBhBBBh}'q.mX#ud'H5{ZX#ud'H5tq#d'H5{Zq#d'H5tdq#d'H5u5q#d'H5#d'H5{D#d'H5#d'H5{d#d'H5uD#d'H5O#d'H5'H5{L?8 L@  <2991@    990@ D D@@@@@ T TPPPP ]!#53? _ ׂ  J@  991@ /<2990@ KKOOOO@ [[____ ]!53%  _ uh8 L@  <2991@  990@ KKOOOO@ [[____ ]!3#!u _ ac ca L@  991@  <2990@ DD@@@@@ TTPPPP ]%#5ac ca _ h-)6@'! '!* $$*9991990>54&#"#"&54632#"&54324&#"32IH7$$0e՘ݢe WOmVPmmWKt,>bFأ[t}t{3VM@)ddMwb91/90KSXY"% 33^]<;A+3V! !#3#Ŭ1+5w'=@"  V WV V WV22122<20!#3!53!3!53#56JJJJJJJwJ@#    <91990@  *]]!#'.#!!>?3!5 nNI =DN)u?$ HNh"%!%)/1@ r10!!Ӣ+@M`i10KSXY"3#7RBL  a  104632#"&M97NN79M8MN78ML=} *@    91903##'%\sB}}`s-Pb; %.#"326"&'#"&54632>3"31UevYQJPG__KDa*M2CXXieu~९{YY /D@$ !- $'!!0 $U*U0999919999032654&#".#"326#"&54632>32#"&2TevYQ1UevYQG__KDa_/YYie9XXie~९{⦮uI%!3!~$I%!3!ȢT~$!3# ihTJ3 3##"JT32#4&#"#P,*7332653#"VP7*/%#@  & XX&1026732#"&'.#" #"&546327j Pd@7*8  kOeD=!0 l9TA6?&#Hn!bSA8?S/'SS/ D'SJ'SS!!#"/&'&#"5>32326c]\ _\Ye]` a\ZT? 9ILZRB 9If!!#"/&#"5>32326b^` !_\Ye]` a\YSB 9ILZRA 9I8l@9216/$#(!6/,(+! /(/6 6!921$#+9<2919999999999990#"'&'&'&#"5>32326#"/&'&#"5>32326c]\ _\Ye]` a\Xb^` _\Ye]` a\dZT?9ILZRB 9IѓYSB9ILZRA 9I'<@!  r r  <291<2<29990!!!!!'7!5!7!}/H{}?f٠f٠F !!!!!!Ҡ &@r  <2291/90 5 !!po &@ r  <<291/90%!555f 3 %! ||$$$`j!!#jHo#!5oj3!"Hjo!5!3o/j^!#^c?$%%$~  1;FOY!! &546;#"&546 !54632+32#"&=54&#"3#"32653264&"2654&#l(ع(DbEDbbEEbbEDbPDbabbabDv(D(غPEaabbDEbbDbaaE DbbEDb^!3!b?c6732#"'&'.#" Pd@7* l l9TA6?%Hn*u( #"&546323267u Pd@7* l (Vl9DTA6?%Hkn T !!!!%!!Bf6L̔4+x  #/;GS_kw+7CO[gs{ + ]b+]%*+%++]и/bи/*и/%hи*nиииии/ ++"+"f_+f:3+:++'и"-и3?и:Eи3Kи:Qи3Wи:]и3cи:iи3oи:uи3{и:и3и:и3и:ии/ии/ии/ии/ии/ии/ии/ии/ии/ ии/ии/#и)и)//и5и5/;иAиA/GиMиM/SиYиY/_kиfqи_wиf}и_иfи_иfи_иfи_иfи_иfи_иfи_иfии"ии"ии"01!2#!"543!254#!"+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;22+"=4#"=43+"=4;2+"=4;2"=43!2#UݓJIIJ%J%%J%%K$$K%J%J%%J%F%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%%%C%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%$%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%$%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%%%%%%*$%%%J%%J%%K$$K%%%%%JJJI%%I&%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%% %I%HJ%%J%%J%%J%%J%%J%{3 #pph # 3hp.@ 7!!!!!!u(3(! !! $<.73!3!`;(t;!O;!O ;!O;!O;!O;!O;#!O#;(!O(q(!((!((!((!'(I(!]((!((3(:(|' q( #'+/3!33!33!33!33!33!3mnmnm;(%8K#!1!!!!!!!#!1!!!!!!!#!1!!!!!!!#!1!!!!!!qlllllllllmmm((((;(!%)-13#3#3!3!##!#3#3#3#3#3#3#^^(ll(lm#;(q#q:(!&9'(9(&&9(&9(&&9(&&9('9(&9(&&%! %!!!,7r+uv ))xxp) )$7632#"'327$%&#"%632#"'~~~~eMM>yJJJJJ6````qq|qq#u"@91990  9%-p) 327$%&#"%632#"'MM>y````qq|qqr' '/7?G%&'&'6767&'&'7%'676727"'64'7&"'62&47\+;.81F9K58.42d;E9G,:.80G9J6&8.;+d1O9FLL&_`JnLL'`_n<1& j(0=Ju &,A=N:0('<1& j(0=Ju &1<>EB0(n_II'[[JnII'[[p) %/36%632#"'327&#"6767&'&6py AAAA,+-,,-+A@@Rqq|qq%%mܱ[0$ %@%|"p) )73276'&#"7632#"'327$%&#"%632#"'r99:9rr9:99XWXXXXWXMM>yB!!BB!!oe33eje33````qq|qqp $  $pkk]Ak^p $  $27$%&#pkk]<MAk^a``p $  $"3pkk]<MAk^``p $  $327$pkk]\MMAk^>``p $  $%&#"pkk]Ak^>``p $  $"327$!pkk]<MMgAk^```p $  $"!pkk]<Ak^`p})6%63"'pRqq)#2y|q*q( 2654&#"!|~}}|v< ( 327$%&#"327$%&#"!IMM>y_O````}|qqqqH( ( !#%&#")%632OyyMMqq>~``  3327$3!#"'$@1>qq``) %63"æqv`) 2#%&#u)q>` 527$3Muyv`>q "'$33yuMq`p)%632#%&#"puqq>``p3327$3#"'$puMMuyy``>qq!% !% !%! !%!$3! 2654&#"4632"&nȊce;~|ddcc||}%!%!!d r<%!%!!We r<%!%!W7 r<%!%!W7 r<% !%!!!!+c,b r<<!% 4632"&! W>>VV}V2 j>VV>>VVJ !%! c  !%! b  p(  7& $  %;<*X֖% !!!!!!,7,rWb<)) Ie% !!!!%!!,crWbM)MM^??@7`d?\gOOOOy>*<?v^  <BHNTZ`fl3264'&#"&7367'67675673#''5&'&'7&'677&'67'%%&'&'%6767%&'0/CB^0/AC/88pkTcR|NOOfUip88pqUfONNQaQh!$ b)dLQk KRt!% c'd&//^000NN|P_Pfp88poQ`QyNNP\ Qgp88pmQ \Py,  M N>&`7" bK*V&"g{ M M !)1a + 0,+0$++A & 6 F V f v ]A ]A]A)9IYiy ],и(и(/A0&060F0V0f0v0000000 ]A00]3 +++&"+&"*и&.01! ! 3254#"&#%#7&'67&'6767KJ]_VNEWMCe2ntjnti7IL6a] ]pu otpu ot !)1a + 0,+0$++A & 6 F V f v ]A ]A]A)9IYiy ],и(и(/A0&060F0V0f0v0000000 ]A00]3 +++&"+&"*и&.01! ! 3254#"3$3&'67&'6767KJ]_TNEAgntjnti7IL6a] Uypu otpu ot %ͺ + ++и/A]A)9IYiy ] "и"/' + ++ и / и$01! ! #$''&'6%&'667KJOR`7IL0c Z    "*2:AIXY/Z/ܸܸи/и/Yи/и/BиB/CиC/EиGиG/LAL&L6LFLVLfLvLLLLLLL ]ALL]F/H///W+$'+$+и'/013#''%#&'52#"'&5476!!'5%!!'53'5%3'5%3#'32765'&#"sNN99=>-1\ H0e%FKSwZGr=;=NN$E| 1 ?'_>?@7`d@\hPPPPy?+<>w_VG{?,rCA0:1@!7+7 + .++..9и  и /к.9A7&767F7V7f7v7777777 ]A77]7!и+=и.B /"/+/-/ / + '2+':+:2'9и и и/2'9017#'#53'&'&54767&'&=33676=3#32654'&i($lm$(($[Uu&tU[$&uU[[UV$|ddb e|$% ZSSZ %_TYYT* $+++A]A)9IYiy ]A&6FVfv ]A]и/"и&/++ #+ #ии!и!/014&#"326&5432%##5!&w衤礡PP䤣L~~| * $!+ + +A&6FVfv ]A]A ]A ) 9 I Y i y ] и/и/&/+ + + и/ и/ 01"32654&'#5!3%#"5476礡𳉧פ㤤ף |~~L #+%+01&$76+"'&5'476%7!ttsstEus pid5s qttrtt<֤ꧦg\ul9S//и/A&6FVfv ]A]9ܸܸ//++0152654&#"#43233#!5 z{ym㗗yyy{(|jǸ /!/ и/и ܸи!ܸA]A)9IYiy ]и/ ///+ + ик  901#53533#632#4654&#"#*jjoon}mZyH{zF2 4˺+ + .++. ܸ"и$и&и (и+-ܸ0и+2и.6/$!+$ + &+&$'и&)и$+и!-и /и1и301"32654&7#"&54767!!53#5!!3!!#3!!8OO87ON=0LmkL/>Λ2  1O79NN97Os0LllllL1KӘJJ-'< ++4)+4к 49ик 49 49" 49#A))]A)))9)I)Y)i)y))))))) ])+и+/, 4942и2/9и4>//:+:и:к 9 99999"9#9+9,9192901%#5#535&'&'5'73'3#'73'676=35'73'33◰zhNgeMjzzTThOʍ7NjYYӖy?//и/и/ܸ ܸиA]A)9IYiy ] + + +01! #!!!'!27674'&#.d ;6zFH%QM_\ǃ$P<C#+///"/01#"'##56'##"/547?^'5@_*SU&/UL ;Yԧ9UP(` XI.s2Q3/4/ ܸ!ܸ и /3и/ܺ+ 9/&+и&/0122732#&547636=4'&# #4'&#"*t pz&=<xQ>hG:V Hek%PF5NP B|-&pA&NFX // 901 &&5 <F:^;" V gdG7C+///99 9/901236;2"##'65##"'&5476;235&'&=476e x<JT`(GeRUdfB3 VNT9D///4 +4 к#94+к=9>901+"'##56#+"'&575477;2732;276=4'3&'"~V"0b*SV*8UiQ"_|Q )w`SgA ? 6N #euB? gIo5 F(pZRw// /9012367632#&5476(t*#\l~ ΨT]1klSI|-X //01 &47E osU H2`g+Z+N+99V9AZZ]AZ)Z9ZIZYZiZyZZZZZZZ ]i//^+J+J):+)и/) и!и),и,/:7и7/JAи:QиQ/:Sи:UиU/V:790126;2"##'65##"'&5476;2&'5476&+"326733276=4/#"567654'&#"35&5hr=)\"IfRUdgC3&=cG kv ==Nr%SZU 6vk 6)S<F98:d  mOE:R p&i  C]&'Ax.+0 nM,W`c%+///9013#"/4?23hH0#!cZ-@o3+///99013#'654'&'#"54732XWz=\9`Y'6?F` 1TFG*֙-@x/e/ /и/и/ ܸи/ܸ//99901#"=4?2%#"=4?26ձ'VQܖCت+YP*~: ۉ8z"Co//ܸи/ ܸи/ܸи ++ +и/и/ 9901"'4723!# 5472!5kmOdXX[;Z$}@Ϝ"  ++к 9A]A)9IYiy ]// /+ 9013363'$6'"-8 w?WXc1 0 // и /и/ ܸи/иܸи/ ܸи и//// /99 9 999013%#'#3%#)N(4/c}4(,=++и ܺ 9ик  9ܺ9к9и!и%и&и'и+и(и)и*к, 9////99 9 999999&9*9,901377#'#'547#5773%%.wwzy.**  <<7CA<<{8AMt#u ! ! j.u-1#u  u-/ 'SJ'S&SS/-27!5!7632#"&'.#"!!#"&546327jR_Pd@7*8  k^_OeD=!0 TA6?&#Hc!SA8?S/4#"&5463232#5!767!5!7632#"&'.#"!!!lL_OeD=!0 d<_Pd@7*8  b`SA8?SfEZQTA6?&#HM%!%!!W7 r%!!!W7 %!!,7rV"H)27=/-+L40P #  [$!9) 33}3P1 020 KT KT[X@848YKTX@848Y4632327&54632#".}E00E2mm2E00E-*.EE0 0EE.-0b^2]9fU1 020 KTX@848YKTKT[KT[X@848Y4632327&54632! &0""02||20""04400$$##$$00M/5#!5#!5!5463235.#"!5463235.#"#3#!5#T(TfPR`BBTfPR`BBTjjRkqNKqNKkjjRJ'"}@1z"q z - =,' , ,'0#<221/<222990@ $/$o$$]KTX###@878Y'.#"!3!53!3!53#5354632/^z{Ǯ갰WYVUdCjjRjjRk`Ju@. z zqz  =',, ',0<2<991/<222990/]KTX@878Y!3!53#"!!3!53#53546ף'ٮ갰Vjj@dkjjRk`H ;#!5#!#!5#!546325.#"!5463235.#"#3#!5#ݰ9{z^YWTgOSaBCTjjRjjdUV`qNKkjjRF6#!5#!5!546;#!5#!"!5463235.#"#3#!5#ٰ'نװsTgOSaBCTjjRkdjj`qNKkjjRO.#33267##"&5!5!&'&#"#3#!5#54632BHF4ZC[W갰rk]_ULkN `kjjddV#.#"#"&'5332654&/.54632&54632!!32673#"&5#5354&#"jjutw-.CCgbj|_{ֽ V:>>Z4FHBdgE+gtRRC(*)-.HFo,,wv]YFV1-,fW+'(cprk]LU_kr_][aX-TL !%$32654&#"3>3235>54$#" M97NN79ar~{TpMN78N{+3캶.f̲0x]3#ǐuf7 k@   1<20K TKT[X@878YK TK T[X@878YKTX@878Y2#"&546!2#"&546=0EC21CE/EC12CEF.2CC2.FF.2CC2.FP10@ //]K TX@878YK TX@878Y3#?uJ@!  [[999991<<99990@2         ]]K TK T[KT[X@878Y@)   ]K TK T[K T[X@878YKTKT[X@878Y'.#"'>3232653#"'0)'4`fU$>71,)/ag^CH> 9.dv 7/ir-qP10@ //]K TX@878YKTX@878Y#u?u@ 91290K TX@878Y@/// ]KTX@878YKTX@878Y3#'#tt?c@ 91<90K TX@878Y@//// ]KTX@878Y373tt7 #."#>32^kk^7667u}|7 N@ [[1<0K TK T[K T[X@878Y@  ]332673#"&^k\\k^7667u}|u -  10K TK T[X  @878Y2#"&546/FC22CFF.2CC2.F3#3#uuT #!#uu=+_<22 o m p o(f7q3!JZ?JJqsjqqqdsq)q5TqPq1fdsbqsq{V`9  H\f;{fffJf'JJ{;;;J'Jf;fJs7;'7!7R7h\}Z5Z5d3;#5^dJsqqqq)q)q)W)_uqdsssssd````HhqX;fffffff{fffffJ f'JfffffL'7'7'7'7;fffs{fs{fs{fs{fjqfuqfqfqfqfqfqfdsfdsfdsfdsfq'q'J)J)i)])qJ)qJiqDJ5T{;q;;Pq;Pq;Pq4;_q;ZV-d'Jd'Jd'Jqd'Jsfsfsf wfqJqJqJ{s{s{s{sV7;V7;V7;`'7`'7`'7`'7`'7`'79 !HH\7R\7R\7RJ@q;q;ss{fuqj@q;fqs5;dsuJ)q)&qF;TJ3'JsncQsufb@;q{sS;7;VW7;VZ',}qM\7Rfff~q'J\\ q q Vfqq ; 5d {dJf)Vsf`'7`'7`'7`'7`'7ffffsfdsfq sfsfff; q q Vfdsf ;qd'JffdLffqfqf))]sfsfqJqJ`'7`'7{sV7;q' f\7RfqfsfsfsfsfH;J;{;ff.{%P&Vs7RLLfff;{f{f-fvfffx%dh/ef;wffZf^'7'T'TJ#JJ II;;JJJ&;J+TfRf.ffJJiJJJTTGGr,;;J;7;7;'7fJ!>TR{Rf{JJJrIf;fUF<;+TwfJJfDffx;;B;&J,;h;GG?;";v.p....q."..c.uuuu>.?.33uuuuZLW..7d.?.BAl~[lp7#L"p::J3P.#qqNq\qs)qq1fdqsqbqSVHs `})bHgf%dJ#JJgfJf%dVSJf#JFT3FJhSfBJ{fvfmSJZFZ#JfJZfF~=~=tM,\sfs{fqGkGB\\{f{;s{f{fhq;s1f`Usssqqdqs{)q)_5T0qq:qqqqqfqoqqq01fqsqbqsVu q/ !q !q[Fqdqs qxfWIM;Jf*]ZUFUFF9JUFfU;;{fmSCN%JPFpJpJ<6<D<{f;-Uff+M;{fsJ{; aF'+FUF@<F<skf$qM;qM;q;oKZq;d;FY<qF ^qF q;s{fVmSH 2SF'J)q*q;qUFUF;fffqfsfsf*o]ZffqUFqUFsfsfsfs{f/PFqM;q6<ffJfff@@3@@3%3@@@@@3@f.%.1.@@@@3%%1".fq3@@@@@.3@1"...Gg%f4..A<.14@@G%1"@.333@@fq;q;q;s{fjqfjqfjqfjqfjqfqfqfqfqfqJdsfq'Jq'Jq' q'Jq'J)Fq;q;q;Pq;PiPqPq1fJ1fJ1fJd'Jd'Jd'Jd'Jsfsfbq;bq;qJqJqJq{s{s{sV7;V7;V7;V7;`'7`'7`'7`'7`'79 !9 !9 !9 !9 !  H\7R\7R\7R'J7!:fsffffffffqfqfqfqf)qJ)qJsfsfsf`'7`'7HHHHgfgfgfgfgfgfgfgf    KdKdKdKdKdKd     G JJJJJJJJ  F v #J#J###@###+    o  ffffff      JJJJJJJJ  Z ZZZZZZZZ     gfgfKdKdJJ##JffJJZZgfgfgfgfgfgfgfgf    JJJJJJJJ  F v ZZZZZZZZ     gfgfgfgfgfgfgfJJJJJK3Pq##!####)])iJJJJJJHH^.R ZZZZZ}VZZZ%Z9933V q q338E54555D5(5O5553v.5455Z5d555D5(5O5553HRu>R'bL}qZZd5DdDOLu#h33^5V=j+// u/++* xZ+''''''''''''''''''''''q''''''''''llgg'''''''''''''''''pprppppppppp7p7Tpp''''3'''ppppp'''',,,,,,,,S,,,,,C,,X,,B,,X,,x, /+/+/''''f}|MVJVJRH>F,Ovd4T x79k:;<&:$7$9$:$<$I$W$Y$Z$\$$$$$$%$&$'$6$7$8$9$:$$$$$$$$$$$$$$ $!%&%&&%*&%2&%<%&%&%&%&%&%&%&%%&%&%&%&%&%&%&%&%&%&%&%&%8%:%&%&%&%&&''&''9(&))))))$N)Du)H)R)N)N)N)N)N)u)u)u)u)u)u)u)))))))))))N)u)N)u)N)u))))))))))u)))**&**<**:--a--.k.$.&.2.8.:.<.H.R.X.\}................................}.}......0.1.:/7Y/8/9 /:N/<}/\/////}///&Y/0/:}//1}1}1122K2292;3a33a333$D383D3H3R3V3D3D3D3D3D333333333333333333333333!3#3044K44&4&57595:5<5D/5\55/5/5/5/5/5/5/5&555&5:5566K6666 6"777777$77&7Da7Fa7Ha7Ra7Vk7Z777777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7!k7#k7&&8D88D888$8-8888899D992929$u929DD9HD9L9RD9X}9\9u9u9u9u9u9999999D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9}9}9}9}999D99D91}9K9K::k::N:N:$:DN:HY:L:Ru:U:X:\::::::N:N:N:N:N:N:u:Y:Y:Y:Y:u:u:u:u:u:u:::::::Y:u:::1:&:&;;$;&;2;;;;;;;;;;;;;;;<<<<<<$a<&<Da<HN<L<RN<XN<a<a<a<a<a<<a<a<a<a<a<a<<<N<N<N<N<N<N<N<N<N<N<N<N<N<N<<<N<)<1N==IIIII&INRUUY Y Z Z [\\79:<IWYZ\$%&'6789: !79:<IWYZ\$%&'6789: !79:<IWYZ\$%&'6789: !79:<IWYZ\$%&'6789: !79:<IWYZ\$%&'6789: !&&&&&K$9<:}}K9;K9;K9;K9;K9;K9;DD$-DD$-DD$-DD$-$a&DaHNLRNXNaaaaaaaaaaa<NNNNNNNNNNNNNNN)1N&79:<IWYZ\$%&'6789: !79:<IWYZ\$%&'6789: !79:<IWYZ\$%&'6789: !&9&9&&<:7Y89 :N<}\}&Y0:}7Y89 :N<}\}&Y0:}O7Y89 :N<2\2&Y0:2 } }  &79:<D/\///////&&:79:<D/\///////&&:  K  6   """K""6" ""&&&&&&$&7&&Da&Fa&Ha&Ra&Vk&Z&&&&&&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&!k&#k&&&0D00D000$0-00000777Dn7FU7Ga7HV7I7Ja7L7M7P}7Q}7RU7S7Ta7U}7V7W7X7Y7Z7[7\7]77::::::$a:&:Da:HN:L:RN:XN:a:a:a:a:a::a:a:a:a:a:a:<:N:N:N:N:N:N:N:N:N:N:N:N:N:N:::N:):1N??f$f-/ffffff79k:;<&:$-/$-/99:9;9<99:979:;9<YZ&:,,DDDD0\Dp H <PH88lL`TH !"#`$($&)8*+T++,0,t,-8.0./p0(0123T3466889d:$:;= =>?ACEEFFGtH H HpI4IJLLNNPQQQQSST8TUdV0VW|WX$XXY|ZZ Z@Z`[[[4[L[d[|\^0^H^`^x^^^^^____`` `8`P`aabbb0bHbd@dXdpddddf<fTflffffffgh h$h<hThlhhi j0jHj`jxjjkhkkkkkkll(l@lXlplllllmmmnn n8nPnhnnnnnnoo(o@oXopoooopqqqrrr0rHr`rxrrss@sXspssuxuuuuuvv v8vwtwwwwwxxyyzz(z@zXzpz{`|l||||||}},}D}\}t}}}}}~~~\t4Ld| $<Tl<p0<L8$, D0l8PhT,ld0hX4 H`x 8Ph(@Xp 8Pd| $<Tlh8(@Xp0H`x 8Ph( h(@Xx(8t(H|4`p(x X4LLt((\\¬8XŠ(pdȘH ʨP`͘ΐ(|LHшLҜTXԼ$Ռք֔H؈ٸ,ڨ8݄D`8|$ xX 8pxl$PP`4T0X 4H\x0DXt`0T@\<Pd,@Th|Xt$0D( (D\x$4,<L$4pDT 8PhdH `  0   L   <  8PhxPP,,h 4$Dl\l|  $!!""""#t#$8$H$%X%h&'(|()*X*h*x*+++(+8,---.<./0P0h0123d3t4L45T6678\9(9\:D:;>?t@ @AB0CCD@EEEEFGGGGH,H<IIJJJKKL@LLMMxMN@NNO4OP4PLPdPQ0QRRdRS$SST<TUXUpUUVV VlVWHWWXXXYY Y0YHY`YZ|Z[X[\ \P\h\\\\\\]]] ]8]P]h]]]]]]^^^0^H^`^p^^^^^^__(_@_X_p___``0`Haaab|bbc4cdLde@efpfg8ghhi(iijDjk@kkllLllmLmn(n`no$otop@pq\qrDrssxst0t\tuuhuuvw8wxHxyyzHz{8{|4||}}x}~H~~~~ $<Tl,D\t $<Tl,D\t4Ld| $<Tl,D\t $<Tl,D\t,D\t<\|,D\t4Ld| $<Tl<\|<\| ,Ld| ,Ld| $<Tl,D\x 8Ph 8Ph4Lh0H`x4Ph,D`x 8Tl0H`x0HXp 8H`x 8Ph(@Xp0H`x 8Ph(@XpHXp0@Xt,D\x,D\t,<Tl $4|||||||||||||||||0Xp<dPx0pLlp$P,@Th|88,<L\|<\|phHl$„<dĤŀŘŸ Ƅǜ$XȸLlɌɬ@<`˸HxԠDh|՘մ$@\xְ֔ 4ـٔ٨ <Xlڄڠڼ<T۬ HX4`|D`0\x4P| ,`4XD`<\THt,x8x888`$@h(L XPt      T<0 Lx(XdD !0!"H#4##$% &p&'x((4())@)p3 +@ ^   N&^ 066ZDD\HH^LL`RQbVVfXXh\\jltvx            ! "#   "$&(*,.02?P?y?z?{?|?y???????????????x?????  #!  0T VQQXggZ\^bhlpSSr   `?v?v?w?w?x?y?y ?z ?`?a?S?ſ?ſ??ȿ v{qwxjy|zzY TU XXxII0LL2OO4WV6AA:    ` ????????? !"#%$0F $&""( ` ?????  T $&HH6   !"#$%&'()*+,-./0  !$'*- 0369<? BEHKNQTW????????¿??ſ??ȿ??  ?݀????""(%$+($.+*?--40/?20?55=86@;9? <<F? 1~3791~37924245:5:668;8;<<7_B] | 4  4   !>!!    !O!" ! - !!b!"! O !!t !"2 e  !+!!"E     S b     " :F & h\Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain DejaVu LGC SerifDejaVu LGC SerifBookBookDejaVu SerifDejaVu SerifDejaVu LGC SerifDejaVu LGC SerifVersion 2.10Version 2.10DejaVuLGCSerifDejaVuLGCSerifDejaVu fonts teamDejaVu fonts teamhttp://dejavu.sourceforge.nethttp://dejavu.sourceforge.netFonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. http://dejavu.sourceforge.net/wiki/index.php/Licensehttp://dejavu.sourceforge.net/wiki/index.php/LicenseAll Typographic FeaturesFonctions typographiquesAlle typografischen MglichkeitenFunzioni TipograficheAlle typografische kenmerkenLigaturesLigaturesLigaturenLegatureLigaturenFractionsFractionsBreukenAll Type FeaturesToutes fonctions typographiquesAlle AuszeichnungsartenTutte le FunzioniAlle typekenmerkenCommon LigaturesLigatures UsuellesNormale LigaturenLegature pi ComuniGemeenschappelijke LigaturenRare LigaturesLigatures RaresSeltene LigaturenLegature RareZeldzame ligaturenDiagonal FractionsFractions en DiagonaleDiagonaler BruchFrazioni DiagonaliDiagonale breukenZ3  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123 sfthyphenAmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandicLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongsuni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191uni0193uni0194uni0195uni0196uni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEUhornuhornuni01B1uni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BBuni01BCuni01BDuni01BEuni01C0uni01C1uni01C2uni01C3uni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DEuni01DFuni01E0uni01E1uni01E2uni01E3uni01E4uni01E5Gcarongcaronuni01E8uni01E9uni01EAuni01EBuni01ECuni01EDuni01EEuni01EFuni01F0uni01F1uni01F2uni01F3uni01F4uni01F5uni01F6uni01F8uni01F9 Aringacute aringacuteAEacuteaeacute Oslashacute oslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217 Scommaaccent scommaaccentuni021Auni021Buni021Euni021Funi0221uni0224uni0225uni0226uni0227uni0228uni0229uni022Auni022Buni022Cuni022Duni022Euni022Funi0230uni0231uni0232uni0233uni0234uni0235uni0236dotlessjuni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240uni0241uni0242uni0245uni0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni0259uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269uni026Auni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02AEuni02AFuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02BB afii57929 afii64937uni02BEuni02BFuni02C0uni02C1uni02C8uni02C9uni02CCuni02D0uni02D1uni02D2uni02D3uni02D6uni02DEuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9uni02EE gravecomb acutecombuni0302 tildecombuni0304uni0305uni0306uni0307uni0308 hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322 dotbelowcombuni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0358uni0361uni0374uni0375uni037Auni037Etonos dieresistonos Alphatonos anoteleia EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni03D0theta1Upsilon1uni03D3uni03D4phi1omega1uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FAuni03FBuni03FCuni03FDuni03FEuni03FFuni0400 afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061uni040D afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097uni0450 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109uni045D afii10110 afii10193 afii10146 afii10194 afii10147 afii10195uni048Cuni048D afii10050 afii10098uni0492uni0493uni0494uni0495uni0498uni0499uni049Auni049Buni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04BAuni04BBuni04C0uni04C1uni04C2uni04C3uni04C4uni04C7uni04C8uni04CBuni04CCuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8 afii10846uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni1D02uni1D08uni1D09uni1D14uni1D16uni1D17uni1D1Duni1D1Euni1D1Funi1D43uni1D44uni1D45uni1D46uni1D47uni1D48uni1D49uni1D4Auni1D4Buni1D4Cuni1D4Duni1D4Euni1D4Funi1D50uni1D51uni1D52uni1D53uni1D54uni1D55uni1D56uni1D57uni1D58uni1D59uni1D5Auni1D5Buni1D77uni1D7Buni1D85uni1D9Buni1D9Cuni1D9Duni1D9Euni1D9Funi1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5uni1DA6uni1DA7uni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1uni1DB2uni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1E00uni1E01uni1E02uni1E03uni1E04uni1E05uni1E06uni1E07uni1E08uni1E09uni1E0Auni1E0Buni1E0Cuni1E0Duni1E0Euni1E0Funi1E10uni1E11uni1E12uni1E13uni1E14uni1E15uni1E16uni1E17uni1E18uni1E19uni1E1Auni1E1Buni1E1Euni1E1Funi1E20uni1E21uni1E22uni1E23uni1E24uni1E25uni1E26uni1E27uni1E28uni1E29uni1E2Auni1E2Buni1E2Cuni1E2Duni1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Auni1E3Buni1E3Cuni1E3Duni1E3Euni1E3Funi1E40uni1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Auni1E4Buni1E50uni1E51uni1E52uni1E53uni1E54uni1E55uni1E56uni1E57uni1E58uni1E59uni1E5Auni1E5Buni1E5Cuni1E5Duni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E68uni1E69uni1E6Auni1E6Buni1E6Cuni1E6Duni1E6Euni1E6Funi1E70uni1E71uni1E72uni1E73uni1E74uni1E75uni1E76uni1E77uni1E78uni1E79uni1E7Auni1E7Buni1E7Cuni1E7Duni1E7Euni1E7FWgravewgraveWacutewacute Wdieresis wdieresisuni1E86uni1E87uni1E88uni1E89uni1E8Auni1E8Buni1E8Cuni1E8Duni1E8Euni1E8Funi1E90uni1E91uni1E92uni1E93uni1E94uni1E95uni1E96uni1E97uni1E98uni1E99uni1E9Auni1E9Buni1EA0uni1EA1uni1EA2uni1EA3uni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED8uni1ED9uni1EE4uni1EE5uni1EE6uni1EE7Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni200B afii61664afii301afii299afii300uni2010uni2011 figuredash afii00208 underscoredbl quotereverseduni201Funi2023onedotenleadertwodotenleaderuni2031 exclamdbluni203Euni2047uni2048uni2049uni2070uni2074uni2075uni2076uni2077uni2078uni2079uni207Funi2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089uni20A6Eurouni20AFuni20B4uni20B5uni210E afii61352uni2126uni212Auni212Bonethird twothirdsuni2155uni2156uni2157uni2158uni2159uni215A oneeighth threeeighths fiveeighths seveneighthsuni215F arrowleftarrowup arrowright arrowdowngradient proportional orthogonalangle logicaland logicalor intersectionunionuni222Cuni222Duni2242uni2243 equivalencehouseuni2308uni2309uni230Auni230B revlogicalnotuni2311uni2318uni2319 integraltp integralbtuni2325uni2328 angleleft anglerightuni237Duni23AEuni23CFuni2423upblockuni2581uni2582uni2583dnblockuni2585uni2586uni2587blockuni2589uni258Auni258Blfblockuni258Duni258Euni258Frtblockltshadeshadedkshadeuni2594uni2595uni2596uni2597uni2598uni2599uni259Auni259Buni259Cuni259Duni259Euni259F filledboxH22073uni25A2uni25A3uni25A4uni25A5uni25A6uni25A7uni25A8uni25A9H18543H18551 filledrectuni25ADuni25AEuni25AFuni25B0uni25B1triagupuni25B3uni25B4uni25B5uni25B6uni25B7uni25B8uni25B9triagrtuni25BBtriagdnuni25BDuni25BEuni25BFuni25C0uni25C1uni25C2uni25C3triaglfuni25C5uni25C6uni25C7uni25C8uni25C9circleuni25CCuni25CDuni25CEH18533uni25D0uni25D1uni25D2uni25D3uni25D4uni25D5uni25D6uni25D7 invbullet invcircleuni25DAuni25DBuni25DCuni25DDuni25DEuni25DFuni25E0uni25E1uni25E2uni25E3uni25E4uni25E5 openbulletuni25E7uni25E8uni25E9uni25EAuni25EBuni25ECuni25EDuni25EEuni25EFuni25F0uni25F1uni25F2uni25F3uni25F4uni25F5uni25F6uni25F7uni25F8uni25F9uni25FAuni25FBuni25FCuni25FDuni25FEuni25FFuni2600uni2638uni2639 smileface invsmilefacesununi263Ffemaleuni2641maleuni2643uni2644uni2645uni2646uni2647spadeuni2661uni2662clubuni2664heartdiamonduni2667uni2669 musicalnotemusicalnotedbluni266Cuni266Duni266Euni266Funi27E0uni29EBuni2A0Cuni2A0Duni2A0Euni2B12uni2B13uni2B14uni2B15uni2B16uni2B17uni2B18uni2B19uni2B1A afii10064cyrBrevecyrbreveuniFB00uniFB03uniFB04uniFB05uniFB06uniFFFD dlLtcaronDieresisAcuteTildeGrave CircumflexCaron uni0311.caseBreve Dotaccent Hungarumlaut Doubleacute@$d@$ 'd']}  22GG}  2d2dd%x %K.%x @@%0% @@   @I o} @ :]%]@%@0d0 ddl~}~2}|{|{zyx wv wvuv utltsrqp qp p@o}nm>nkm>lk llk k@jddjihihg]hhgf%g]g@f%eddeddcba`_.`_.^]\K[}ZYDXWVUSdRQ2POP}ONA@BL JdI"IH2GGFE EDCDkCBCBA BA@ A @ @@S?>->M=<=K<; <<@; :9:]98987 654543432 321 2 2@1 0/0D/.//. ..- d-,+,K+"++@* *d)(0)A(-(0'-'&:% %]$#$S#"##@"! !]     @#$0S-0 k@-B d-    @    @8k d } d2}-2- Sd+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Rl       !! #" >> ?? @@ CA ^^ __ `` aa bbcc gdkh qm srutvv zx {{}  qm }t    ʀ    //                    %*&-, F1 GG]H ^^ __ `` aa ib jj kk l &&2(micropolis-activity/res/dejavu-lgc/DejaVuLGCSansMono.ttf0000664000076400007640000071774410724145723023572 0ustar simcitysimcity GDEF),GPOScrL GSUB 7lJOS/2fVcmapiuzcvt  0fpgm[k gasp h glyfaV thead86hhea m0$hmtxM7Tloca 3`#tmaxp " named5"!6postWxCS prep:prop/7   cyrl $2cyrlSRB locl$33f  P PfEd@ m`tXRR~!%+/A?Xauz~_ [w{%9?GKW]cmqEMWY[]}  # & 1 : < > I p y !!!"!&!+!_!"" """"" "-"="i"""""## ###!#%#*#}##$#&/&&&&'' '''K'M'R'V'^'u'''')+ !$+-1PXatz~Cw{ $0<AJWZalp~ HPY[]_   & 0 9 < > G p t  !!!"!&!*!S!""""""""'"8"A"m""""##### #%#(#}##$#%&8&&&''' ')'M'O'V'X'a'''')+~yxwigfb_][ZYC+# cHE<'&caU?3/)'%#!  B;0-*u]XTNHECa}yvh ݚ   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}byqzf 7X!uu9!{Xm{o{RoZ!=fs +b#1N {T\q#w`j#fy```{{w`b{!{RNNfffHF?{L'oo5jo{-{3=foD7f}s, %Id@QX Y!-,%Id@QX Y!-,  P y PXY%%# P y PXY%-,KPX EDY!-,%E`D-,KSX%%EDY!!-,ED-,%%I%%I` ch #:e:-hh/10!%!!hsr) @ <2991/03#3#qeR@1<20###Ѯ++J@0     91/<<<<<<<2220333!3!###!5!!5!#3hiiThiih)T/hTaabbNZ /d@9($)%/%$(!$, ( 0<2<1/299990>54&'#.'5.546753.'n|phumdfbdcӿdOTUPDNtd]gp^Vd-.)>B+/Qš ! *9V@/7(" "7(.+  % 4  + :99991/9999032654&#"4632#"&'%32654&#"4632#"&iNMklLNi@s..2H#)iOMllMMk@u--1?NjkMMljO0./t?``OikMMkjN0--uA9*7@b  -,.+2345617B7 1 +"1"!% (! 7+!(!(! .899999991/9990KSX999Y" >54/3#'#"5467.54632.#"3267>7#'&JKNSj抋20ǭAF;}Eap:6\[ț*\,#1h F'XmFD ̉dHG'%[M;I\ 10#+u @  29910#&547u;:\' @  299103#654\<<J+N@,       <2<2991<22990 %#'-73%+f9s9f9PsPbybcyXqy '@    <<1<<0!!#!5!CDDD/@ 103#Śc/dm10!!d 11/03#1fB7@ 103#ymL # @  $!"!$10@////////// / / ?????????? ? ? OOOO O ____ _    F////////// / / __________ _ _  $]]4632#"&"32'2#"M68PO98K7PP78NL0670xx~F &@ ## 1/20%!5%3!!:P6ȪuLJժ#Q@)%%B   "$91/20KSX92Y"%!!567>54&#"5>32uu5dF[pga Yd8ժ.>zO}BC12`tA7(G@)  #)&" )9190#"&'532654&+532654&#"5>32ggfbYhyI'Ǖ&$54zms{(( ۵{fo B@   B    $<291/<290KSXY" !33##!5)!3d-=@"   "190!!>32#"&'532654&#"+W,wN\aQFժ 21%%L$=@#  %"& "%190.#">32# !2"32654&?M0n#J݁%'dkuzl75@%%B"991/0KSXY"!#!5V+N #/C@% '-'0 $*$ "!0991990"32654&%.54632#"$54632654&#"hʁ򑁖Myz{yŗT!Ѳ!!ȟɠbx~~xzF $;@" ""%"  &%1902654&#"532#"543 !"&T?M/nI%'!dk  os'@ <21/03#3#'9' %@  103#3#Śc /Xyw!@('29190 5yR!÷X`y@ <210!!!!X!! BXyw!@('<919055X!R^^="{@B  %%B !    ) #99991/9990KSX99Y"#546?>54&#"5>323#=TZ>/mNb^hC^XE&bRY;X1YnED98L\VBT=/s 4p@1(+$ 4 '$+1+5' ( + . !+ -.5<991999990@ ]4&#"326#5#"&5463254&#"!267# !2kkkk%RӡP$J6l90?{:]x<!o?DF=?z% @A%%%% % % %  % B   / 91/<90KSXY"]@    ]]!3#!#hnl#+{q =@#   21 0!29991/9032654&#32654&#%!2)qﰖ뒃JF{f>p}qdƵϠ1.@  2 10210%# !2.#"32671M[?[MJVXI5))pn))=@@=R(@  2 1099991/0% 6&!# )`dVDѦHKw/N )@  13 21/0!!!!!!vTrwժFX $@14 21/0!!!!#o\eժH7fP<@!   6251990%# !2.#"3267#5!PQv@^PQ_ſCe){KMon56MI!H &@ 1 0 221/<203!3#!#)d+9 %@ 77 221/220!!!!5!!=99ժm,@    51990753265!5!#"&m[hqG`=QQD, @!% %B  0 291/<290KSXY"]@L&&6FUWX dzy{ ',+&:IGG[WXXWkzx]]33 ##wVhs@ 141/03!!dժVy @,  B    / 0 91/<290KSXY" ]@$  &)&) 6968  ]]! !###V+'F m@B10 991/<2990KSXY"]@&)&8Wdjuz &)FIWgh]]!3!#3+3u\ #@ 2 62510#"32#"32IIz~u+@  2 8 3291/032654&#%!2+#ꌝL/ϔu\=@   2 625999919990"#"32#"32ȗyHdIj@8  %%B     21  0299991/<9990KSX9Y"#.+#!232654&#NnRٲM{cݑohy]ҔYJ'@=  %  %B %( &919"0(9999190KSX99Y"]@ ]].#"#"&'532654&/.54$32\^mjikshulм V;53#"&'.  yVWx! 9FBjiCE:= m];<<;\lh?;::;>9L@)%%%%B/091/290KSXY"%3#3h_KKѪ++ @D    %%% % B    /91/<<90KSXY" ]@^ //+ ??8 ZZ  &*%*(+ % & 5:5:;: 4 6 TTZXWV[[RW X ] gh yvy v #]]333# #ŏӬ߿ʿD"+w @K % % % %%%% % B   ;/; 0 91/<290KSXY"7]@8  '()& X xyw !%+% 5UYX es]]3 3 # #VHNAu3B}%Y@.%%%%B<< 9991/290KSXY"3 3#%lk!mb E@%%B/0 991/0KSXY"]]!!!5!" ՚ow@=210!#3!XfB7@ 10 #%mZ@=210!53#5XޏH@ 91290 # #Ȳu-m/10!5/mPPf%@ <1K TKT[X@8Y0 #fx#{ )n@*  ! $   D >*22991/99990@00 0!0" ]#"326757#5#"&546;5.#"5>32=zl;^[fX=& 3qpepӺ)Ld_y64''RR2X 0@  G F221/9904&#"326>32#"&'#3,fd./xRXWS%{/@   F210%# !2.#"3267%JR%QNI]`A9++88*,A:;>{0@G H221/9903#5#"3232654&#"Z.deCSW;7W {X{E@&    IH991990!3267# 32.#"X㿮Xmi[ ^Z89++9 @Ţ'4@     <<2991/22990#"!!#!5!5463'cM+Qgc/яN{H{ )H@' '  $(*' G!H*221999904&#"326#"&'5326=#"3253ZLSbC,ml/9.,}^\::VZ,@  J  F21/<990#4&#"#3>32jq1sJ`cD .@ L LK <<1/20!!!5!!3#mnm`/BCV 8@   <2991990!5!+53263#XZZӜ} @:  B  DE 291/<90KSXY"]@R546Ffuv ('(;;797JIYYkiiiyxyy]]33 ##Gb{ZFB?  &@   L 991/990;#"&5!5![Y饵|~mo{"@'  MNMNME#K TKT[X8Y<91/<<<299990@G000000 0 0 ????????? #]>32#4&#"#4&#"#3>32"iJo5FP;9JI9!c?LeHEws{p{``32jq1sJ``cH{ #@  D>10"32654&'2#"hڜ-.VT{3@ GF221990%#3>32#"&4&#"326w.df SWWRw 3@   G>22199032654&#"#"3253#L-ed.+SY7:WSj{O@   21/990@%  0030@@C@PPPP].#"#3>32;zI.Dv6y.*`w"${'u@@    B %( OI"E(99991990KSX99Y".#"#"&'532654/.54632OS}{\JSjgTzEZ9..QSKJ#}##55cY1!1@  <<2991/<2990!!;#"&5!5!f^^uϪ+|b`>^,@    JF21/2990332653#5#"&økp1qJyaddm`e@)BIE91/290KSXY"']@%]]3 3#dEFr`T` @E      B    /91/<<90KSXY" ]@      &&)&))#, 96993< EI F J VX W Y fifij e vzx| r -   ++>>< H Y jih {yz|  ]]333# #àö`wBfL` @H      B  IE 91/<290KSXY" ]@ fivy  :4 ZV ]] # # 3 ^oo)'`?HkhV`@E       B   IE9129990KSX9Y"8]@v  &&8IIY ]]+532673 3Z.Gc".\mQ\GOLGhu:NN^Nlb X@BIE 2991/0KSXY"8]@68EJWXejuz ]!!!5!-}bܖ%$f@5 %   !  % $  = %<<29999999199999990#"&=4&+5326=46;#"3@k>>j@FU[noZUtrݓWV10#$j@7%   #%#= %<2<9999999199999990326=467.=4&+532;#"+DVZon[VD>k@@k>XXrtݔXy &@  '1<2990#"'&'.#"5>32326yKOZq Mg3OINS5dJ t]F ;73 !;?<6 7= @ <2991/0533)eq%!N@*   " E"<<<2212<990.'>7#&5473%C??BI9gg9ބ5(,-("9="+` 츸X>@     <<1/2<2990.#"!!!!53#5354632D>Cs3A,,ُ/яLB /@ (-  * -'! @') -0)$ !'$* xyx( $02299999999912299999999904&#"3267'#"&''7.5467'7>32d|[Z}}Z[|Z^.[20`0\^.[3.^Z{{Z\}~t]1]02[-^Z3].2]-_%@D% % %%B  < e e<<2<299991/2<2<290KSXY"3 33!!!#!5!5'!53%lkVoqZmo#o o#o!<210##  = 2>j@<#$93 $*0?#54&S9akԂ[]=:̭IWW9fqր][<;ȧH>=><''PGZsweZ54m@''TLf{xf[1,pE-Z/L-Z/L?F@aa1<203#%3#?}N1ID@'  &>>2J\ ^,8 8YD/210.#"3267#"&54632'"3267>54&'.'2#"&'.5467>`:o:u8g24r=г=rjKKMMKLijLLKLKKkZZ\[[[~}[[[\ZZ/lhȬJKKjhKLLLLLijKKJgZZ[~}[[[[[[}~[ZZ %)d@6  (&&  #*& (' j kji*22999199990"326=7#5#"&546;54&#"5>32!!|WHi1Rwu3}CD?kdPDN@Ms=@pABtZ\#! {w# /@    v v<2991<2990 5 5L-+-+#RRXsy^@ '10!#!X!^?dm10!!d }N4L@I  ] ] B   A)5)M  \\ [G#X;#Y//29999129990KSX9Y"2#'.+##32654&2#"&'.5467>"3267>54&'.XXP:&rk1=-7ffZJJDZZ\[[[~}[[[\ZZ~jKKMMKLijLLKLKKLbeG]C;P*T6?>5VZZ[~}[[[[[[}~[ZZgJKKjhKLLLLLijKKJ=b10!!=V+u @ STS 102#"&546"32654&hAu,-/OomOPqp1.-rBoPPlnNOpXy.@    <2<21/<<07!!!!#!5!X!dCDLIB}a@WWBA     @9991990KSX9Y"!!57>54&#"5>32eQdR1q?Ay;Jwrnaz3=L$$}k9wuF(\A          @#) & )99190#"&'532654&+532654&#"5>32^c:r;Eq-evnmBJ]b`W,p;Eu2X`lP|yQDJLl?<8?yvcG]f%@ <1K TKT[X@8Y03#fT` L@*  !   JF!99912<9903326533267#"&'#"&'øxo ! &D">K .Y\,T H;8 OOPNLPj; #@WW1 9120!###.54$FfNݸ/`103#`u)'  @ |1/90!#"&'532654&'85xv-W,"K/:=,,>i0Y[ 0.W=X 9A      @  aW}a 12035733!j c)t'+n 3@   jkji9910"32654&'2#"&546!!hfssfeusgʫ˫\{u༻߻`{\# /@   vv <<991<2990 5 %5 +-:+-#^R^  ^R^  Z{';V'{Z{'{&tVZ';V'u!%@G  %%B! "$ $&# # )"#&999919990KSX99Y"33267#"&546?>54565#53%=TZ>/mNb^hC^XC&DbRY;X1YnED98L\V@T?%k&$u@O ]1%k&$u@O ]1%m&$u  +@ /  ]1%^&$u# +@O#@]1%N&$u +@p0? /]1%m !@W % %%% %!%! %!! % !B     !  PPK/K!"2299999991/<9990KSXY"]@  ]]4&#"326!.54632#!#Y?@WX??Y:Arr@;nlZ?YWA?XXP!yIrrIv${g@7 % %%%B    c /<291/<20KSXY"!!!!!!#!3eex5ժFժu1&&zdNk&(uNk&(uNm&(uNN&(uk&,uk&,um&,u  Ic:1N&,u+1N ;@!    21 0 0<291/220 )#53 6&!#!!VD}}/`ŕ{HK+Fb&1y"+@O"@]1u\k&2u@O]1u\k&2u@O]1u\m&2u +@ /]1u\^&2u 0!+@O0@!]1u\N&2u +@p0? /]1;T .@     <91<290 7   ^t^_t\t%\^u^uw^ +k@:+)&  *&&, #* #)+262#5,999999991/9999990324&' .#"#"&''7&5327sT sV)+y=g %s9d/NZIn-QUPeQzQQFIRPJ=k&8u@O]1=k&8u@O]1=m&8u $+@ $/ $ ]1=N&8u$!+@p!$0!?$ !/$!$]1%k&<u@ ]14 @  28  32299991/032654&#33 !##ꞝL!󄃃}/V@1-'!  **.  !' $'$-DF099991/9904632#"&'532654&/.5467.#"#7C:oEBL;lAxC\[yqyrq|d1M*%]taQG_J'8O#kr#f&DC#f&Dv#f&D(#7&D6#&Dj#&D4){ C@I=70 6 %C "76. 3@:("D%=/.M/u MCM6+sD299912<2<2<999990@ 05060708]5#"32654&#"!3267#"&'#"&546;54&#"5>32>321xYS\JMWWLepO27Gn 'aȿuc^8>M<[|%!YHZqYa4+#"33)+RNPPXx+'#!?@=Bu%{&Fzh{Xf&HC{Xf&Hv{Xf&H({X&Hj@@]1Df&CDf&vDf&( @@ 0 ]1D&j +1H)@O B $ *'! !'D! >*999999199990KSX9Y"#"32.''7'3%.#"32654&Ŷ"#!H&!!#R-:/(  (-Y,\bPȑ^b n7&Q6Hf&RCHf&RvHf&R(+@]1H7&R6. +@ 0 ?. /. .]1H&Rj +@ p_PO@]1Xyo '@ w <<103#3#!!j!/ +s@>+,&  )&  *&& &,+,* # )#D>,99999999199999990 32654&'.#".5327#"&''m1$eA H#cC')d<]*,g9\ //4o0.0tGGq.78MBz;32#"&4&#"326w.dfSWWhV&\j%0'q:$ +@ @O /]1#&qD%v'2.$+@ _PO@/ ]1#*&2D%u'5$ur{'5YD1k&&Zu%f&FvZ1t'~|&%f&(ZF1P'xu&%&3ZF1m&&Zu%f&F)ZRg&'o{ ':G @8@]1N{$H@ "  @"   GH%<<1/<2990!5!533##5#"3232654&#"Z1.de5yySW;7W N0'q:({X&q#HNm'u({XH&2HNP'u({X&3HuN'51({uX{'5HNg&($o{Xa&H)#fPm'u*{Hf&(JfPm&*u{HH&J2fPP'Zu*{H&3JfP'i*{HN'U.JHm'u+ +@ /]1m'uKKQX@8Y@p`O]0?@!     1 0<22<221/<2<<2203!533##!##53!5*ʇʆ*9QF?@"   J  F<221/<<2990#4&#"##5353!!>32jq}}a1sJzz`c^'u, +@ O@ ?0 / ]1D7&62'q<,+@O@]1D&qm'u,+@O@]1DH&2u&,5FuD&L5PP&,uD` "@LLK 1/20!!!5!!mnm`/B =@!   "!221/2<220%532765!5!#"'&!#3!53#=Ga'&HHAA@-]@QQJKDuuêK I@&  ! <<<<1/22<220!5!+53263#!!!5!#3#ZZi,+뗗Ӝ}/BCmm'0u-Vf&(&ij.'iN` @9  B  DE 291/<290KSXY"]@R546Ffuv ('(;;797JIYYkiiiyxyy]]33 ##Gb`/ZFB?sl'v/@ ]1 l'vOKQX@8Y@O]0s&if/ &iOs'm/'Os'y`/'yOs 7@   1 4<2.9991/903%!!'7;NwdPo;jnL >@!    <<2999991/9990;#"&5'!5!%[Y饵P{;Pu|~$o/nFk'!u1m&vQF&i*1{&i0QFm&1*uf&Q)&Q{#IV<D@!B  10291/<2990KSXY33+532765#5YZ͹Z-,˹iij>>iV{ 2@  JF!21/90+5327654&#"#367632YZ͹Z-,jqFE1TTsTU6ij>>~ʗ[\``21qpu\2'q<2+@ O@/ ]1H&qR+1u\m'u2 +@/ ]1HH&2R#+@]1u\k'u2Hf&7RH;@     -299991/220%! )!!!";(RH=MKF{ 8i@92/ & 8   #5/)#92& MuMCM,s9299912<229999904654&#"265&#"!3267#"&'#"32>32PVWMfRPhgPPcpP/;}Jb04TY/%W & +#T53+)CBDA88>A>Ak'u5jm'vU&ir5 {&iUg&5ojf&U)ZJk'u6m&vVJm'u6f&(VuJ&6zu{&VzJm&6uf&V)/u&z7u&zyW/m&7u +1~&W/-@  : : <<1/2<20!!!!#!5!!/s-  +ժA@B@!    <<<<2991/<2<2990!!3#;#"&=#535!5!f^^uϪ+|b>=^'u8/ +@O@ ]17&6X'+@/ ]1=1'q;8+@ O@/ ]1&qX+1=m'u8+@/ ]1H&2X+@]1=U&84 O&X4=k'u8f&7Xe=&85u^&X5t'|:+1m&(Z+1%t'|< +1hVm&( \%N&<u +1k'u=m&vV]Q'(v=&3]m&=uf&])',@   <991/990#!5!546;#"+cM=яNQ!*32654H#!"#546332654&#t{6<0~ʌ/>orqp ˘//&r1F݇qX>32#"&'#!!&#"32y,fd.RXWS0 327654'&#'3)'KKOO{e5Fq>=DEdgh=< !&#"32>32#"'&'#'҈FDDFl,fttttdLL.zYmnnnRRX랝+,S|1/@21 <1@   0>3 !"&'532#"M[?[MIXVJ))gj))=@0230@=<g"%# !2676;".#"3267M[?ZO*ZT3,JVXI5))p*32j>5F=@@=^s!%# !2676;".#"3267JR%FC=ZZ-,I]`A9++8(8rGj>>~A:;>N3 !#"#546 6&!#FVD6<0c//&r1FHKwN#";5!! $5476%3羽EF5e{ɉ{+ˡd4 32654&#"5!#5#"32_.df,T}SW;7XR<G{ 4%2654&#"#"/5?6?654'&'&'&'&32h(>f2BFUR I<' )iy|{L (=\ $+.! -&N !5!!5!!5NwrT+u\5!'&#"5>32 !3276u:DVJM[ 9CD8S{@=))yz~#vu7(.54$32.#";#"3267#"$546IyhYbfgg"{ (({smz45$&Ε?V!!!!+532765| YZZ-,ժH#ij>>~V'$+"!!+532765!5!547676;'a'&QRF1i&&(W%5MI!RI ! ' 3 3325Hbh 0V0tt?un+JA&#767653#"'&54&#"#367632"&76/JI_BG}MKUv14IBe``  1:!5!!;#"'&5=,-Z٪\Y+z=>jf!!3!!#!!5!!5!!= 99ժi@n #37376767'&˚mBS:!j/ji+HssB%r3r 5476;#"33 ##YZ͹Z-,Gbij>>~ZFB? ;#"&=#53!5!;+[Y饵 |~ĎɎ1m% # #''3C\P"Pn@Jo |mo"%#"&33265332653#5#"&8"iJo5FP;9JI9!c?LerHE! s{ p{+`>~R{#4&#"#3>32jq1sd``cu\  32'&#"32767\:DC; 9CD8 z~{{vu'^2{'^R,%63273# &#"327-N5>o毴o8=yy=Y+͠v~^VR{ 763273##"'&7327&#"VPeo~簵noVAA( /s%+n+͝u"mmB7 +#"#5463! 27654&+Vn]6<0~'S@]M//&r1FE8DVT*3265'"#"67232#"&'#76;#"w" . [f,?N͹ /2FIWS.Oe&;#"&/&'&+#33 !#3 H6C'(3TL4[|L!3*Yl[;[ BgTHzT$PmJ'>323267#"$546?>54&#"iV luhskijm^\''Ƞ/ vp{DI--յ1#hcq<;{'>323267#"&546?>54&#"PZڒEzTgjS썉J\{}SO9!!1Yc55##}#JKSQ..xmvV[!&'&#"3;#"'&5# 54!238!n|wx'%dQW/R5-0A3=g)(V\`@oV !!;+53276=#"&5!5!f^^uYZ͹Z-,(Ϫ+|bij>>~`>/&#5463!!#ŃF1-/7&r1F+!!;#"&5!5!5476;#"f^^uϪ*YZ͹Z-,`|b`ij>>~/V!!;#"'&=!/s-,-ZߥZY+ժU~>>ji'^8v'q'^|XdJ##"47#5! 54'5{no{x4xn8!L IL+!"'&533254'3\Z,,Zxznjf?~>> ILɸ#367632'&#"kSHcm.-PKG "(3t*b7m*9 Vm+5326?3 676'&nQGJ|lLT3!;^2QUq05Uh:=HTN~)+) =!3!#!!5#5!!uP" "v՚i@5b!!!#!!5!5!!-8YbҖg 7654'&+5!5!2! $5dc{dd\^rhbVPKKKKIJG8+lh3! $54767635!!#" 76RUci r\\dc{dd݊hl+8GJIKKKK}LT` 5!!#"3267# $547676peje]\dcmTjdc^QVbܨ JKKK21%݊hm*8# 6323#!!5!5!67654'&#"п -"BP8u~i9Dc``JU?T<>< % 7654'&#!!!!2! &53h<= \^G/"icUPRz,ʞ[+3IJ I8+le[tG)}LT` 7654'&#!!!76!"'57?\]ȨgcUQԪ-5IJ,39+lhJc 4'&+#5333#!"'53276MJY>lunc9rO_}nw~FVrA3#+9'6-3!!!!#!5!5!5!^^``l%m&$u#f&D)m&,uDf&)u\m&2uHf&R)=m&8u#+@ /##]1f&X)2&K&Xq<=u'&K&XD<=w'&K&XO<=u''C<zW{#2'q<1'q;)&q ue\&52eH{&5Rue\1'q;eH&q=%2763#"'&5!#3!3m6!h9Hն+ROf'MSb9du'Fk'u1f&CQJ&i6{&iV/&i7&iYWl(1%7276"'676#"'#7&/'&'&3232654&"m B{ rhG0wD &8Md\]P{#looԐ>>t#O9 Y%Z5H7WSCTV!!3+53276=!5!"YZ͹Z-,՚o*ij>>~Vb!!#+53276=!5!-}YZ͹Z-,|bܖij>>~%H2'q<H2'q<u\O't2H&3RH2'q<%1'q;<hV&q \l %7276"#7&'&5!5!676#" B{wD3' rhF>O9aJwt#jlg{.%7276"'676"'#7&'&=4&#"#3>324 B{zgG1wD3'5ZI9!c?98>>r.O9aJs{``>t#O9aJ;>V` ,@   991990!5!+5326XZZӜ}xY12654&"&#"32>32#"&'#5#"323QSSQPQRRQP]=zz<\o\32#"&'#QSSZQPPSSPP]=yz<\o\GJR\D%QM((_]q"! ^`A7S]++ L8 rMq;> 3!!!!!5! d iA# ##5'7!!guJ'd.-[QF*3j8JB{5.#"3#"'&/&/5632654/&'&54632OS}{\Jvh*L'TrGY3e2{zD>zEGIZ9..QSKJ#}^R ~$=&[5#`cY1!GJ!b!;#"'&/&#=!-j1 *L4[TrGY=Zb ~$=&[?%7"#5463!2##326&#v6<0~'ʌ//&r1F 8{ )32654&#"3>32+3267#"&'.>zl<^\fX<& +qpepӺ)Ld_y64''RR24{53#5#"32 654& |.de ыSW;7WT4{%#3>32#"&&  U.de \SWW4 '&#"3267632#"&'#5476;#"rl,LNfd.Y[͹Z-,YRR,,WSij><{0@ <1@   0>3 !"&'532654&#"JR&PNH\`@%++*,A:;>l$w,%325&#"47&'&76!2&'&#"63 !"b>jiáS,+;7Wx4$2654&"%5476;#"#5#"328mooDGH8H$#${PϳQ{#T ij>>~SW;7WSzW{432!"&'5326=!7.#"z [imX^^"++98ȷzW{5!54&#"5>3 #"73267zXmi[&Z89++"Ţ{ 4%6'6'32#"'&'&'&5>3273;#"'&5BN+>g qqcGF:RJLJKQwP!1C>֊>8E#Z`vg'#d4*,#)u10`Z({09@ 22&%!*2 &.F110&'&54632&'&#";#"32767#"'&546wA@Q[\ihWVLHHZ[c[[MaZ[V_A@^  VJ=+,nQb54"[\m({(<@! #)) )& )190#"&'532654&+532654&#"5>32U`LdKhiP_m"#ibQnW=JV^8{B#"&'5327654'&+5327654'&#"56763273;#"'&75c88hh@H9DDKCE@?qv|f6688h8AANODE<[KO 0A>1_JJm\["45bQ77,+=J++  OAf10`ZȢA"y+ 27654'&+532764'&%672#'$Sv7@;!!;@9TeekbbkeeV^B6@JN67=6s-VWggVW>XVE`!+53265!5!!5!DZZh(Ӝ}}ؤi{H4&05476;#"#"&'5326=#"43"326HH1:jj>CO6xn#{XЮmssngm\"ij>>~.,}^\::bH4\ $"326#"&'5326=#"4763!|LSbC,muq9b.,}^\:㣝yX!%#5!#"76!2&'&#"32BHXN֖>hhxpVHdbbd">KMrqfqrfQk` ' 3 33274Z"r.$32#4&#"#5476;#"v2rjrZZκZ,, `cJij>>~V->32+53276=4&#"#5476;#"v1rX[̸[-,jrZZκZ,, `cʀij>>~6ij>>~23#!!!!!5!!5!! bnnl~ˏ5i `!#"'&5!5!; ̦ZXYZjf;6~|2` !!!!5!!nnl`BXy&;#"&=&#"5>32!5!3267#"'.H>ꤶ./OINS)&r\FJKOUi(? ;?<65=>;7-5";#"&=&'# 7632!5!3#'&#"3[Y襵<5*6M\|~¾󠠄K9V;#"'&5!5!\X`[|~jd(L.;#"&5#5!!2#"'&'5327654'&+5!HHTgOE@KOPUCWPPJJX|~A$8+lh%12KKKJgj{"%#"&33265332653#5#"&2"hJn4FP<8JJ8 d>LfHE!s{p{`LfHE!s{p{)32+53276=#4&#"#4&#"#3>32"iJoRQQ)(5FP;9JI9!c?LeHEjj>>~s{p{``32;#"'&./]p@A2XVV?4<>OO__^edwxH10``A{ !3!##{yyH{  #"%"!&'&!3276ߌH?7?H4HH4{-m__mOmmOE`!!!!!"'&763#";d~~~~ KKKK`hghi'|73276=3327676'&'&#"#"&'#"'&7676&'3")u) 1(&DGP;X nNjkMnAI `pB?UO++OU=]pxeY􎃃BWH!*3#5;#3+535&'&76767654'&_|{_d{{dE,HH,O1HH1ouu{{BnmBHImnI `%327653#5#"'&' $$,TT:^\ efNf21  %327653#5#"'&' $$,PT:^\ eif21V$`#7327653;#"'&=#5#"'&'$%-RT&&h2FPR9]^ efN 10``f21 V{&'&#"#367632$&,RT:\^ ef f21 V{#&'&#"#;#"'&=3367632$%,ST&&iQR:]] ee10``֔f212{476;#"!!5!RRҼj&$nnhb`022{!!5!4'&+532jnn$$lдRRV00`bzW`!#&'&+#!2327654'&#7545â?;;alkpw?@@?w 66^q$%'`PQi++ST**zW`!#!3327673327654'&+jpkl|a;;?î545(w?@@?wSiQP`'%$q^667**TS++V{=.#"#"/;#"'&=327654'&/&'&54632N[DF20@RRz|[a&'iRRfdbbFF24@LLf?((**T@%$!*ML[[ 10``=Wg5-,QK((%$JKV476;#"+53276VR®b&(PRF2h&&pR[V((h)``01}VT!+53265!5!!5!546;#"4ZZ=cMh(Ӝ}}ؤiNQgVe;#"'&54'&+532&&j0FRR&&dP^10`a(h((VaYvV[!#"327673## 54!3476;#"8w|n!̵5RWQîd%'3A0Ǜo@`\V()g+`!5!4&+532!!H^^uϪ+>`|bW!!;#"&5!5!f^^uϪ+|b >`!533!33##5#"&=)3276 :CYYu>>|WMĤ45wEioabdo?ܤdqnܑkmhAw` !+"'&5#5!?27654'&'&UBr86FRQS&(g3XXBO\Ldqn``;612abdw7,G`!# #3T`` !# # #33”­jj`jG >;#"# #4N|lLT2"zHTlfk}3 3#f%.]}8 V`!!;#"'&=!5!;4== `ۧ10``%*`!#47!5!5!332!'3254#ejL<FX3<;4% 6[}LT` 2!"'&'5327654'&+5!5!ajbVQ^cdjTmcd\]ej8*mh%12KKKJiLh`#, 76654'&+5!5!2#4'7&#"327* \^ejeidTQ'd( }ŃcL;*1JJ$8+lgqUeR8y*K/K32765&'&#"56763 #?V:9cPONNLQQUmlprLbAr+#}swt#&'&5476!2&'&#"3ʪplnUQQLNONPc9:Vws}#+rAbLr3!"'&'5327674'&#ʪplmUQQLNNOPc9:Vtws}#+rAbLrJ#476!2&'&#"32767# '&5nUQQLNONPc99cPNONLQQUn>}#+rAAr+#}^-tB )47632 '&7 654'&#"47632"'&_ԚOeddede"!/."!B^!"5ԜИٍccƍffff.""""./B!!} -@   F!21/9032654&#32654&#%!2#!]_Z^UTTVeb`sci?\dU?.Vi}u"y+";#"3$''"'&5467.5476322s9@< <@7uTxVddjbbjdd6=76NJ@6sx>WVggWV6l0%#5!#"'&76325476;#"#&'&#"32t:{}|3H >ws}#+rAbLr #26&"3!!!+5#"32deen a^!;8NN8:j+^Lۓa31DD10ML C3276'&#"%#5#"'&76323!2#"'&'5327654'&+5!22XW3223WX2o#55JzLMMLzJ55#o ?M;319;<@3xAr;<78chqjtssttss_3d0110d^L$8*mh%12KKKJ6 ,326&"!5!332+#47'#5#"3233254#dees ai$\\#jKyyKj#n0 h*5j 3.#"#"'&'#"&5#5333#;532654'&/.54632/e6RR;Y%w026:8>qaQQo-Ek>v;NTj&g[{=l?((TT@I!,KL!&`>NM55YQK($)$V4%.!5476;#"+53276=#"'&5#53!3A &'p.6@3632&'&#"632#"'47&'#"&5#533254#"&57#3uZ310.///0l;;;2v1+\!raQQ$-WO=MT-E‚#+qrfr9DhT"2`>9KiNVH3+5327654&#"####53546;#";67632G11l?KJYhonjjhqij;/m(56Ft<;H``01/яNPhce22wx%7&'&#"#"'&'#367632327654'&/&'&;>ABgf$&n/<>][ALODKTLDCKEJIa54%"092?)TT?&$!,KL\[&:MV3-+RK(#*$JA 3!!!+ۊqvLۓB 333# #333# #ttttU=B!#!#!#!#kkUXrXJ#32653##"'&5=4'&+532]]p2BDXJJO%5==֟ybe22wx0t 10`` V /!5#"'&5=4'&+53232653;#"'&'(56Ft<;?*m02JJZgo>*m1.e22wx0t 10`` t֟y60`YA#4&#"#3>32tNN^luu)qJy}wYYk\g88A3>32#4&#"#5476;#")qJy}tNN^lu43rB98wYXj\1Sw66WU 3+532653#wtgr,B0ttxlX6Vr8.#"#3>327.bjtt%uT  qksa97832653#5#"&'.bjtt%uT  qkJa97Q32653;#"'&=#5#"&'Q.biuB-r33$vS  qkJH VX66x a970!+33276?3327654'&+CGDDuj=%%(f{n!!!|K((((K|N;[--s?5/.B 333# #tt+5326?331]O\D05 {{bpEW(K/i-$-%452654DŽ@XX@rPPPP=>X@?X=>POPP"'&4763"3tPNNPt@XX@PPOP>=X?@X>^s327654'&#"567632#(y6$$>q31210336WEDGkM@*7K$@ ` XFh_@C^s#&'&547632&'&#"3kGDFV63301213q>$$6yMAmC@_hFX ` @$K7*@)f7@  91290K TKT[X@878Y3#'#f)f7@  91<90K TKT[X@878Y373x$@1@0#+$@1@0%#+=Tq^#!!heJ'#!heJ#$#% 533##5#5/)H 8 @ PP1<0K TX@878Y332673#"&/w `WU`w HLJJLD6@ a10K TK T[KT[X@878Y3#V{ W @  P{P10K TK T[X@878YK TX@878Y#"&546324&#"326{tsst{X@@WW@@Xssss?XW@AWXu"  @  |1/90!33267#"&546w-+76 >&Dzs5=X.. W]0i7@!   PP99991<<99990K TK T[X@878YKTX@878Y@?       ]'.#"#>3232673#"&d9!&$|f['@%9! '$}f['@Z7JQ!7JQXfZ@991<20K TKT[X@878YK TX@878Y3#3# fxs%3;!"'&5k&&iWRd10`ZȢ$ '&73733256/MM.3#/ssZw!).#"#"&'532654'&/.54632P1j8WV>](}248{D@}=RX o)k`@qa//$)*+MWfk2-*SIXa #'#37 ͉H+^s#&'&547632&'&#"3kGDFV63301213q>$$6yMAmC@_hFX ` @$K7*@X!!5!AGЈX!!5!3A4X3#!5AhhX3#!5A4X%3!5fCfv)f(76=bq 6/)H2D3?Fj82#567654#"56J24C1xZ@Vƪ@$C!Xl05^ V{4Xf7)f)"#DVv#!#vDDf#!#͇fxx/)'32/)H2 q" #3ﻒY#55#53pp{53#7"pp{f3# qfyX0CbyX0v53#5#5L:#33T걈s^p!5!#.q532654&'3#"&=X.. W]0ihw-+76 >&Dzs5"3"'&476@XX@sPOOP>=X@?X>=OPPPbL3!5353:^H#5!##걈c_I #53533##sc^5!tcV %+53276=YZ͹Z-,ij>>~V 73;#"'&5,-ZͥZY~>>jil83(?d.jV {.4(;@103#ﻒu8zu#5 $s/#DU|/#5!#|J9X#"4533273273"h;tv gfv ifvtR)-))0(/32/02Y.6=/q9mB]#Xy a&h!5&hhh5!Ĥ/'\ ]`LM'ogDdFFJ`_KU|mU |/!!|&b9X632#&#"#&'"#72h54'&' RJ 6"RH 0PQn +0PQn  &66D37"#4%62#&%n~vv<<tf3AntVH%#AnHV #"=3;X3Vh'fv?F&jrf&>/`yNf&DHf&f&D\f&pf&f&6&%$q%s%1/01/0@%%%%% !3yyN(=H+u\6@ 26 25IJ]1@ 0!5!#"32#"320qYǪIIz~,.%0/01/<0@%%%%3#3#+#Vy0F1H (1  <<1@   /0!5!5!!5HA)Aժ9u\2Hu3xm < 1 <21@ /220@% %%% !!5 5!!9" :A@/7%<uZ&/M@"2  &,2(0<<2<<21@&( '   /<<2<<203!535&'&547675#5!67654'&'Ͱa|{aa{{bL+CC+LL*DD*+v[ssZttZss[v*DD*7*DD*;uZ9@  <<1@   /22<<2067633!535&'&3I.K{bb{L-I["WDWx ֪ WW"J@@qqro prol 991@ /<20353&5323!5654#"J{n !o{1xx 7oȼ߅LI LN'u%N'uFf&(f&Vf&6f&3i&Fz *'&'&3273;#"'&''&'&767,-b=MJMUHi;c( #) Xn^T).\-rv~ oik*%1)0T*XmY*)Va#%#54'$QQ 0kEb6=q'0  Vm`&+532 3#-^1FAF[D~S]VH" 4"32654&%&'&54632&'&#"76hY(>f2BFUR I<' )iy|{L (=\ $+.! -&({R&%#457654'&# !5!OTJPE* :Lf.,KOxsPWKL,#%5,*3eaZiV{#4&#"#3>32jq1s```cH&'&#"!3276 #"?HH?5@HH@<⇙8wyvs6`;#"'&'#5"$lYoRQ`+.0`b;`D # #'&#5~J/1Fe<2T`wtB`!367676'&'31!xdLjE.*{`T|p5dwY|rNįtR8&%#457654'&# 4%$47#5! OTJPE* 9MKOxsPWKL,#%5,*p$Rݿ &H{RP`!#3267#"&5!##P117,#J%q\T`PH? XVT|6#"&'#76&#"32ttf,n䇅{WS<R%{$%#457654'&# !2.#"OTJPE* :%QNI]]^KOxsPWKL,#%5,*8(8*,A:nok` 32654'&%#"763!F-HI{{{s Gos*◗- 2^!@  1@ /20%;#"'&5!5!!$lYoRR0`b3i`%27676'&'31%"'&5#5!tZ;jF-*RR"#vfwZ{s`b;+.0KVh )"276'&'&'2##"'&7673A^TNLF+s{|}jB0MKLgˑRh]c[斘n,mJseg.YVx`#&+53 3;# t/1FC /1Fz ~,~VN`%67653#&'&533?>TyyT>?@WxؑoW@E`7332376'3%&# F |TQ '( eF+THc#36&j3i&jHf&3if&Ef&C$ # 76'&%$'&763 '7676] NI5|utf M2C6R6WpA{z Ʋ irS$ $6'&'&'&7!2#"'&32765JgNn-R Nr^ydPpw{A K~}Sj~"#4''&5676'&qO**d\txLJso@z8 vVOv~*+40r51_Tpf&"N&umVd'#&'&7673567654'&'ĸh]i^V5RR*aW4QQ(VyvaxxGnռFCImֹD9` !32376&7%&# 67#5!'TQ0'( 0A_+T3 3[g/%76#"'&7676'&6'&'&632767Eɭ&[9+[`=`*!~R[9+[`=`! ZMf lh|TDY|lp"=lh|TDY| lcuV\ #"32&'&32_{|^"y|•"jVH{ "32654&#&'& h1`{{_ mw.vRL#"32#457654'&#"'&76)MbzYTJPE* 9{2e+wTOxsPWKL,#%5,*˞nͱR)`#5! 32'27654'&'&'&54763)%9 *EPJTNb_]]IĜ*,5%#,LKWPsxOJonlUX)V#!#"&'32765!5!476325.#"R@W0d1.f9bAK:x,R$3c1`q_K!s7oQ>d`7"'&76'&52n 'BQ_'BQ_[~,`*l#FR`*l#FRM #!3M&pM]!V#56#'#?&'&bTBBCD@qopުՈOz~ {!&'&#"!!32?# '&76!2 %%cjf_[_fMJOhk en(' c\\c(  {!56763 !"/532767!5!&'&#"'(ne khOJMf_[_fjc% ؜c\\c VT1&Vy ! !###V{+'`VO` !!###`{`UVT|##5#537636#"&'!&#"32wiinttf,;pp>WS17532#"5>3 !"&IXVJM[?[5=@0230@=))gj)1&y1'ycNk'uNN'8u*o/32654&#"##5!!676767632#"'4=N qjqjW.E~C%0"@X UkiS*\o-* % T pFwusk'Hu1:@!21 02210327# !2&#"!^?s}RooR}J6,N&u+1m-%326&+32+##526!Z}y^ϬvH+W"%32654&+!#3!332#!Z}x_uwg)9dqco"676767632#4&#"##5!%0"@X UjqjW.E~-* % T pΗ*\o-k'u Fk'u hm'uH 33!3!#)++B%$q2@   21 0291/032654&#!3)!qﰖE{e5F{f>dghq%s141/03!!/ժ!0@  1@ /2220%3#!#326!!3!7yM2%TB/ѪBLҪN(l@B   <<1/<<<2<<0KSX@$%%%%% %% % Y33#####333nگګnnڼڙnqdQ99&d7F <@  B 10 991/<2990KSXY"33!#3+3Fm'u .F$@  1@  /<0#526!#v.+W++Vy0H+u\2H@ 101/<0!#!#++u31&/7h?@ B120KSX@%%%%Y+532767673 3;E,LE\mQ.-"X74oJ+'/.M *5>Bg@2  2 <<<<1@ /<2<20 KTKT[KT[KT[X!  @868Y3#5&%>54&'MI Ǹ ˥IK-{ WS ;: $@   1/22033!33#:)˧+BD @   021/2033>53##.jq%¤Iz)&gr` &@   1@ /2<<0)33333`++/@   1@   /22<<03333333#ະ++B u*@ 2 2/1@  /0%32654&+!5!32#ϊ)+An ,@  22/1@  /<20!3%327654&+332#[fN#";c{MRnՐ+w]o#{D}H7*6@ "#D >+1@"#( +0! 3 632#"6/&4767676%67䐌x$[3#F#3bJ/P{3-wRIUA   +t` -@   F!21/9032654&#32654&#%!2#!_eUkUTTVe_cmcpPO^UCCVpou`@ 1/0#!6`ih`0@  1@  /2220%3#!#325!!3yqC7 "Ld64d!{X{HK`k@B   <<1/<<<2<<0KSX@$   Y33#####333xĔĖxcĨĂcXC({` =@ F 221@B /<2990KSX@ Y #33#b縸)`)&+2``"@ 1@ /<0!#!+53265 _7#U^`v=` N@B     221/<290KSX@  Y3 3###=ww`M` $@   F 221/<20!#3!3#b縸`9H{R`@F1/<0!#!#bW6`VT{S%{F`@ 1/<0#!5!и&6ʖhV`\cVec@    <<<54&xjjx޸ܸxjj ++ gsL`[rr` $@   1/220%#!3!3r渪8`JJb @    F21/203326=3##"&ùjq)\TsW 6G+2}U` $@    1/2<0)33333U(`66P`-@   1@  /2<0)333333#8𨘨`666L`)@  2/1@  /0%32654&+#5!!2#|y֜XZZZʖ;hi` +@   2/1@  /<20!3%32654&+332#S|yS[`Y[[[`;8`*@    F291/0%32654&+3!2#{֙YZ^X`;%{9@  <21@  07532767!5&'&#"5>3 !"&A`^S E]]INQ%R9>;qdSp:A,*윜+N{ ?@#    221/904&#"726332#"'##3pLLqjUUe9ҝ暙?`aQ@B    291/<9990KSX@  9Y.5463!##"#>#";myŸIJLJu>R`^qj_o92~RgNHa{Xm&(C{X&(j#_$+532654&#"##5353!!>32rZZjqz1s ki}}엎\ª;`c m&&vQ%{:@    F 2210%# '&!2.#"%!3267%JR%QNI]]E S^`A9++8*,A:pSdq;>{VDLD&j +1VM `%2+##+53265!327 RC'#U^5iрiv;A`%254+32+!#3!3 褽l`9!!>32#4&#"##5353{z1sjqR;`cᗎ\m&-v0m&+C@hV&62 ` !#!3!3ʷ`Js@141/03!3!/2$@ 1/0#!38X`:Us 3!!!!##U/#˂>` !#53!!!!`¸ fs#!!!2+5327654&#/7qohfL>87||9ժFwr|zKK"VR`#!!3 +5327654'&#HRRQn!&&1`GQ``07 )u7&z u({&z*%3###33VrwBh`%3###33,bG*B?`/Z%3##!#3!3)˪B9db|`%3##!#3!3ø縸*`Cu1&zdu%{&zh4/ %3##!5!!+s-B+` %3##!5!!ø&ɸ*%<hV` #3 3OLGفVNl%3## # 3 3XfuPHNAB}3BL`%3## # 3 3o)'o*?HkG#4&#"#36?6?2GjqjW.E#20@0X U ڗ*\cU'% T pK,m'u KH&2)f32+5327654&+#33stohfL>87||wwqwr|zKK"hVm`3 +5327654'&+#33j:HRRQn!&&1'wGQ``07 )&?`/fH%+532765!#3!3HhgL>87)hzzKK_9dV`+532765!#3!3RQn!&``07 `CG %"'&'&5332767653##|#3/@0X TjqjW.Fժ$'% T pI*\z)b%6#"&53326=3##c<1Tsjqø~3$2 #%v'2.+@ _PO@/ ]1#*&2#%N&u +@p0? /]1#&j#){Nm'u{XH&2(u\PzW{u\N'u{zW&j|N'u K&j)7N'u (&j*x}LT`F1'q; &q+FN'u &j+u\N&u +@p0? /]1H&1j+@ pO@]1u\H{u\N'uH&j1N'u %&j@h1'q;hV&q6hN'uhV&j6hk'uhVf&76DN'u&j:s %3##!!/Bժ` %3##!!øȸ*`AnN'uhi&j>){ B32654&#"26=%!>54&#"5>32>32+3267#"&'#"&1xYS\JMLepO27Gn 'aȿuc^8>M<[|%!YHZqYaq4+#"33)+RNPPXx+'#!?@=B2({0#"'&'532654'&+532654'&#"567632wA@Q[\ihWVLHHZ[c[[MaZ[VA@^  VJ=+,nQb54"[\mPDd %!!5!!!#53)Ḹя{ 6326="326&!54&#"5>32>32#"&'#"&PVWMZfRPhgPPTcpP/;}Jb04TY/%W & +ݮyT53+)CBDA>A>A2/H{  #4&#"Ð/.G/  33265G.Ð/.+[%!5!2654&#!5!#J^adlp2r?W75353!5!2654&#!5!#?idxEvDFzlp2r+")5!2654&#!5!2654&#!5!#HEws{p{``32&ffMD_ntt&pQlT];y:Av7X|&??8?vh+]85l[hmKDg..RD )32654&#"3>32+3267#"&'.&&ffMD_ntt&pQlT];y:Av7X|&??8?vh+f]85lZimKDg..RG53#5#"&546322654&"tt`??aVXXNO/00z{ww{ B32654&#"26=%!4654&#"5>32>32+3267#"&'#"&5kK84:/0n06@F2Q #S-E^T=bg~yI>;#T'1S&9NT8m\)3?26JUJLXP ZQ`.+-,`\`d1CH^#$"%G 4&#"32>32#"&'#3VTTWWTTaA?`tt]z{ww{.10/OgG3#5#"&546322654&"tt`??aVXXDO/00z{ww{0!3267#"&54632.#" xn7yEB{9t\UTm 2gp fnZ_cW05!54&#"5>32#"&732671xn7yEB{9t\UTm 2gp fnZ_cWN0&'&54632&'&#";#"32767#"'&546K)(39:CB760W]-.Uhd^j99m>:90=8:6WW]$$5KX]0*"Q>-7 a33]=SN0#"'&'532654'&+532654'&#"567632K)(39:CB760W]-.Uhd^j99m>:90=8:6WW]$$5KX]0*"Q>-7 a33]=SG (4&#"326#"&'5326=#"&5463253UQUZZVPUt0i4>d+]V_E||D^ttxxzzf[bF5302QH !#5!#3#53W?浵ss#PP-8 33##8x0BVxyDI%">32#4&#"#4&#"#3>32B/UFj",2%j$/.#jj?'0@)&ug@Eg?Es6"#'Zw +5327654&#"#367632v89hu9CGR,+tt54Il55!pm;32#"&'532654&#"X.c43a1.\;muvl=_)ʮl$!~tt~!#: 46 #4&#":&{[YX[ՠxzzx:  &533265ڜ{[YX[ՠxzzxG#3>32#"&$4&#"32uu`?@`8UTTWWTTbP/00z{ww{L!!;#"&5#535};JkPF7R]rTPZw332653#5#"&[tCGRWttkGlj{TPg`b^68~}!5!2654&#!5!#K`Yslqj=?g32#"&'#3LSbC,ml/#.,}^\VZ5` !!!!5!!!5nnlg`BV ;+53276=#"&5!5![YYZ͹Z-,0|~ij>>~G#3>32#"&$4&"2tt`??a9VXXNqO/00z{ww{Wz#"&632.#"3267y.c43a1.\;muvl=_)6l$!}ut~!#QI,325&#"47&'&547632&'&#"632#"d&/\R@5a$^`^63302113q>>>5|4 * &:/ZXX ` @?@bj:)#"&54632.''7'37.#"32654&|s .sPm4\a^UV^%wp237,pQ57vonwwn=rN2#"&'5327654'&+5327654'&#"567632T./WW5s1tkqU.98P#P,gaap53#5!3#+5326=Ιd+]V_E|JG~4xzzf[bF53[XZw332653##"&[tCGRWttkGlj{TPg`bO68~B3#!3#3!535#535#4tt)r\PP\ap#"'&5#5!;ph98)99t;:n@PpFFH !#3!53#I?P-PPF !#3!53#!5I?AP-PP\\cn3#"54;33#'#"3276ttdytrx !3rJMB ,|ssW?#5$ U| ;#"'&5#5!98d=9.FFX<8p(QU| ;+53276=#"&5#5!9889ht9hr.EGH m;32+53276=14&#"#4&#"#3>32B.VEg_uj3",2%j$/.$ii>(0@)&uSmwX#"G g@Eg?Es6"#'%"#"&533265332653##"&FB/UFj",2%j$/.#jj?'0@('ukAEg?Eg6"#'T}+532765367632#4&#"&'U!1X**8[/.V;;FQx66XV~a8BDwYYk\T}#54&#"#367632;#"'&5;:GQWW*+7[//1!U&'H/YYk\sa8BDH VX66x> 33##?-{{~:  #"&54%"!&'&!3276&.X-(e(-W !-XY-!R=5cc5=J,==,:!*3#5;#3+535&'&5476767654'&3tfwx=%; )=xw>)Zw=.#"#"/;#"'&=327654'&/&'&54632P1j8W*,]({44MN8> Br34@>?=R,,!k)k00@qb/$+*MW33 VX66x"19-***IX`wZ476;#"+53276 73{mo>34r,B]Me30U:Jx66XL !!;+53276=#"&5#535};J88hu9kPF7R m;#{\8?>LQRR<=:E31+"'&53?27654'&'&3H#"-r33tA [77)2:08?>L66wpU67YQ8C# #3{{ s`q !!!5!pkz^>T_^s!!#;#"'&=!5!jG2!V&'G^=R VX66x ^M]#47#5!5!3632#'3254#a\'Ln& m,8!!^R^=jR32 2#"'&'5327654'&+5!5!dCP>63;>?C5~Dx??:;hn\' =;M| m**PJ*)]R^:&'&#"!3276 #"&54(-YX-(c)-XY-)&l~LVVL~g~MVVM]lR"'f^{l"GfR&,'{&,AG|R'_'{'(GlH"+fl"Kfk'u.k'%uNl"f .l"fAN&,.&,ANls"/f l "Ofvls2"q <l 2"qj<|s' /'(w&OVyk'u0mof&vPmo&3@PVly"0fmlo{"PfF7'\1&3QlF"1fl{"Qf|F'1{'(&QVT&3:Sl"5f`l{"Uf^l2"q<`l"qZ&3VlJ"6fl{"Vf/l"7fl"Wf/|'7'(B'W9l&9fdlm`&Yfr'|:m&CZr'|:m&v@Z4'j$:&jZ%7'\<hV&3\lN&f({lX{&fHN^'*u({X7&6Hl&f,lD&fLul\&f2lH{&fRl=&f8l^&fX%r'|<hVm&C\%^'u<hV7&6\Fr&Fr&Fr&Fr&Fr&Fr&F&F&%r&%r&pkr&vkr&vr&r&&&p(r&(r&(r&(r&(r&(r&~Nr&~Nr&Nr&Nr&Nr&Nr&Vr&Vr&Vr&Vr&Vr&Vr&V&V&LHr&]LHr&]?Hr&J?Hr&JHr&|Hr&|cH&DcH&D6r&6r&r&r&'r&r&&&~r&~r&r&r&r&r&&&Hr&Hr&Hr&Hr&Hr&Hr&\r&~\r&\r&\r&\r&v\r&v3ir&3ir&3ir&3ir&3ir&3ir&3i&3i&r&?r&JDr&1&Er&Er&Er&Er&Er&Er&E&E&r&er&vr&r&r&r&&&Ff&CFf(f&C(fVf&CVff&C6fHf&CHf3if&C3ifEf&CEfFVr&)FVr&*FVr&+FVr&,FVr&-FVr&.FV&/FV&0%Vr&1%Vr&2kVr&3kVr&4Vr&5Vr&6V&7V&8Vr&EVr&FVr&GVr&HVr'IVr'JV&KV&LLVHr&MLVHr&N?VHr&O?VHr&PVHr&QVHr&RcVH&ScVH&TEVr&}EVr&~EVr&EVr&EVr&EVr&EV&EV&Vr&eVr&Vr&Vr&Vr&Vr&V&V&FH&2F&qFVf&FVz&FVf&F7&FV7&%m&u%0&q:f&pf%V&rVr#525#53d76F&jTVf&V{&Vf&V7&V7&Nf&vNf[Hf&DHfVH&r''r'8d&/H&26&q&67&&m&u0&q:f&fr'r'$d&3iH&23i&q3i&3iVTr&VTr&3i7&3i&%m&u%0&q:[f&Dpf~ur&F&jr?FfCEVf&EV`&EVf&E7&EV7& \f&\ff&fJV&fvr53#3"ïddm10!!d dmy/10!!/yy/10!!/yy/10!!/yy/10!!/y]&BB-@ 10#53Ěb~-@ 103#1řb/103#Śc/-#5b %@   1<20#53#53Ěb5Ǚb~~ '@   1<203#%3#řb5Ěb/ * @  1<203#%3#řb5Ěb/ #5!#5bb;/ '@  RQ R <<1<203!!#!5!nn\];/<@  R Q R <<2<<212<220%!#!5!!5!3!!!/nnnn\\?!   V 104632#"&?}|}||{|?q?P1 #@   1/<<2203#3#3#P3f111'3?Kt@%1= 1%+C@&7IF:4(:PFz4P@ PzP"P.zP@(/99991/<22299990'32654&#"4632#"&32654&#"4632#"&32654&#"4632#"&H%'H_EDbcCE_yxxwyLaEEacCEayyxxy aEF`bDEayyxxy7a`JGacECcaEyxyEaaECcaExxy"GaaGCcaExxy  #/3?JT`32654&#"4632#"&%32654&#"4632#"&'32654&#"462#"&2654&#"4632#"&Q::PR8:QeeddeQ::PR8:QeeddeV%'O:8RR8:OeȊceyaacCEڦyxxy!GaaGCcaExxyzGaaGCcaExxya`JGacECcaEyxyaaECcxxyZ/#@ v29190 5/-+#Ry#@ v<9190 5 +-#^R^  '4 B!'!'4'= ,47632""327654'&'2#"'&5476"%F$W+,,+WX+,,+XLLLLJKKL @ !UUUUUUUUYnmnmmnmn  5   @  W <291<29033##5!5 !wtt}oyc?}!!!>32#"&'532654&#"f6TTXYJz04?9= 25DIJLL...P\\PS****hQQ;JJKJ hh2112=!#!=HCD0;.="327654'&'&'&547632#"'&54767327654&#"hT-../RU-../P--KKKK--P]12PPPP210'(KL('NMK(')+*++*+NM*+/23Gc;::;cG3288Yq?@?@pZ88C#$$#CDH$$0.27654'&#"532765#"'&547632#"'&SP-..-PS+***(X/x==jDHIKLKKZ[-..44]\4421ab21hQP8d;R?d0T@d"&)''#!333#3#!###535#53355O9~ĢĢ9~OO4&{{&&{{{%%3p@< 1& (# #43('1)-&- 2'-4229999999999122<2032.#"!!!!3267#"#73&'&54767#70TJBN1Fi1OCHU,1u1!(*=Dl-.&nC>*( n -/ l667654&#"5>323#!!3267#"$547#536767!5? 7^\iV ^':,hski HE 4cq<;''K={[/ {9b{DI--N@{ O/{O!,&'&#2767#&'&576757O[TUeeUT[Y\Y[dsye]Y\[CvlCi----iH$"u9Bt"#BuflCTH#67654&#"#3>323]W!{/tKb J G'QWab ^  #  "32!!3463"##526eb223b WU&WU&  1Q~>;\>fh@6    B     ` `_`_/91<<2<<90KSXY"###5!3###r}r7q^^-BJ.%me{'uV&{e'uV&tZ{'<V&{Z'<V&tZ'<V&u Z{'<V&;j{'=V&{j{'=V&<_{'?V&{_'?V&u_{'?V&<_{'?V&>Z{&{B} 5!!B#ZpZR#ZZM '#'"ZZ$MZpZ#B} '7!5!'7ZpZ#ZZM !737@ZZ#ZpZB}!5!'7'mZ#ZZ#ZߠZ#R#ZZRZM%7#7'3'ZRZZ$R"ZݠZ#ZZ#Za 7!##:nt':tna #5'#5!tn'dtna )53753dtnntda 733!ntd:ntB}3!'7!5!7ѓc}Z#Z㔎RZ#R#ZRB}#5!7!'7'7!'/cZ#ZߤRZRZRYxa532767676767632&'&'&#"#"'&/#7!$f ! +!3-68+2",j!!!3 .6+85.0$m: w '07)(6;C+ : ,:'+:Yxa5!5!#5#"'&'&'.'&#"'6767632327676:m$0.58+6. 3!!!j,"2+86-3!+ ! f:d+':, : +C;6()70' wB}!!'#537i&ڠZZ#ZZZZ#R#ZZM'75'3''#ZZ$R"ZZ&ZZ#ZZB}'73'7'7#'7!5hZZ#ZZZZRZZM77#75'73ZZRZZ'ZZ#ZZ&B}'!5!7ZZ#ZZ1ZZ#R#ZZB}'7!'7'7!'4ZZ#ZZ1ZZRZZB} 53#5!5뤤4Z#ZhZ#R#ZM %'3'3!5Z$R"Zh̠Z#Z4B} !'7'7!#3̠Z#Z4ZRZM 7#7#5!ZRZ4Z#Z̤M%'7'3'73!5ZZ$R"ZZhZZ#ZZB#(276767654'&'&'4#!5d >b-*,%:0Z#Z  *+(54<852.&Z#R#ZB#)!'7'7!"'&'&'&547676763"mEZ#Z0:%,*-11> ZRZ&.258<45(+  B#$>2+#5!5!54767676"3276767654'&'&'&l>b-*,%:0ΠZ#Z2)-019 o #*+(54<852.&ՠZ#R#Z};47(+ }  A#%?!'7'7!#5#"'&'&'&54767676";54'&'&'&e910-)2Z#ZΤ0:%,*-11> o #+(74;}ZRZ&.258<45(+  } B}X3267676767632267676?'7'7#&"'&'&'&'&'&""'&'&'&#5! ! Z#Z  > >  Z#Z" *!#$' * ZRZ %  '%  %' " Z#R#ZB!'7#5!3'7'<2Z#Z<2Z#Z Z#R#Z ZRZq` %7'7]JQgz=Zӄh PJV}e 5!#Z"ZǠZ#R#Ze !#!'7'< Z$Z9kZRZe !3!5zZ"ZZ#R#Ze '7'7!354'&/#7!J%%%'HD_SlhX[HJ%%%%Jw422-A8;>112-!:zJZ[ghX\HC+%%'GKY[eg[WMs2=>FD{2,/2{DF>H':Xy6#5!#52767>54'&'7#"'&'&'&54767<:!-211>;8A-224wJ%%%%JH[XhlS_DH'&&&Iz:d'H>FD{2/,2{DF>=2sMW[ge[YKG'%%+CH\Xhg[[IB}5!B#Zp{#ZB!!BMZZ#M3'#|"ZMZM#'Z$MpZ#B}!5!'7pZ#ߤZB'7!5Z{ZM!37ZMZGM!#73{Z#ZpB|  '7!5!'7 5!!ZpZ##ZpZZZR#ZZ*M !737 3'#'2ZZR"ZZ#ZpZMZpZB| '7!5!'7%!!ZpZ#ZpZuRZZ#ZZ#B|'5!!!!5 #ZppZ>R#ZZ#R*M73'#'#'3hR"ZZ$RZppZ#B|'7!5!'7!5!'7ZppZ#>RZZR*M%#73737#hRZZR#ZppZBA! '7!=!Z#Zp{Z{#ZBA! !! !5!'7BMZMpZ#ߤZ#ZB}!73!!!'7#5!!qVa6ZEV`6NZ#Z">RRjը;mRR:lNZ#R#ZRRB!!373'7'7#'7#537!7'!RRȚNZ#ZN|NZ#ZN.9#!RRRRNZRZN ~NZ#R#ZN RRB}!'7#5!7!5!73'7'%!7'!`]Va6.ZxV`6NZ#ZRR;mRR:lNZRZRRB}!!5!RRpNZ#ZNRRRNZ#R#ZNRM#'3'#'RNZ$R"ZNRSpNZ#ZNpRB}!5!'7'7!5!7NZ#ZNpRRNZRZNRRM%37#73RNZRZNRRpNZ#ZNRB}!!7/7'7!5mRRRNZ#ZNNZ#ZNRRRNZRZNNZ#R#ZNM'77#7'3SRRSQNZRZNNZ$R"ZpRRmRRANZ#ZNNZ#Z6a##7!#tn::n3:t:5p::6a '#5!#5'5C:3n::n:4:dp:nt6%753!5373:4:dp:ntn:nd:4:6%3!'3n:nd:4:n::p5:tB}5!!!!!Z#Zwgw"?Z#R#ZRwRwRB}!5!7!5!'!5!70"wgwZ#?RwRwRZRB}37773'''#5:;!\[`Z#ZCCjjZ#R#ZB}'7'7#'''53777Z#Z`[\!;:ZRZjjCCM%#5#535#535'3'3#3Z$R"ZtZ#ZtM533#3#7#75#535#5ZRZtZ#ZtB} !553353!Z#Z{Z#R#ZM '3'#7#7Z$R"ZnZ#Z}ʻB} !'7'7!+53#53Z#Z}ʻZRZM 7#77'3'3ZRZZ#Z}6B} !!#3#Z4ZݤZ#ZZ#B} 3#'7!5!'7뤤Z4̠ZZ#h#ZZ 5!5! !!? Ou]%uuv 333'#!#\^vtP uB !!75!!5 t]]Xv ###3!3,^\X& v 3'335%!!# #^\XtvpFguv %3'3#!5%# #3!^\^$tv~Fuv #3#!5#3/# #3!J\^^|HGetvJ~{GGMuv 3#!!5#3# #3!F\ F ^tvW~uv 3'333'37# ##!#^\fd^tv ^u9v #!5#3'%3'37#7# ##3!3^^ fd^tvJ^uB '#35!7'!!!5 5~t]]EF 7!##!#*:ntaI':tnIFEF %!53753!5!ldtn~ntd&Iv #7#3'# #3 3\^^tvP*OutuB}'0#"'&'#53676323'7'7%&'&#"!32764RvxN1kk2Ow9g' Z#Z 0GD2 & +JD5@3PO2BB4R,( : ZRZ11/0*M !#737'#'RZZ"ZZ$#ZpZ*ZpZ#Ba7!5!'7!5!'7'7!5!ppZ#Zp?ZRRRZB}#5!5!53!Z#Z[qZ#R#ZB}!5!53!'7'7!#p\Z#ZߤZRZB}#53533'7'7##Z#ZZ#ZߠZ#R#ZZRZB}#5##5#53533533ҤtZ#ZtZ#R#ZB}#53533533'7'7##5##tZ#ZtߤZRZB}53533533'7'7##5##5Z#Z8Z#Z8ߠZ#R#ZZRZ !! ?OuuuB 7% !5uzR##7 ! ?S:uuzRuu##-):@'! '! @ * $$*9991990>54&#"#"&54632#"&54324&#"32JIH7$$0e՘ݢe WOmVPmmWKt,>bFأ[t}t{O@*iiiiB91/90KSXY"#3 !q!#7!hqqP3!!"&63!!"!0",Z(膆(\JN*"f_QQĪKM_fOPi%+%3!!"''7&'&6;73#!!#"!#L(0,:CyEB航6'|>v\JK-".4"$: 1cQı2#KK_ff_lFO]B/ 3 3ް2ް2201!3!!".>3!!"N=c(憆(c=֪I9[[9IP&'.#!5!2#!5!276767!5 ,Z(؈膆(\JL, 1f_rĪKM_fOPi%+&#!5!27+'7#53!5!3276767!73&'&'(/-9CyDD舫6'{rx\JJ. 4 %:  1crı2ݪyKK_ff_lFO]5!&'&#!5!2#!5!2767>b(؈憆(؆b>,I9[[9IL9@ 120!#!L^L= 7   @  <91990!!5 5!!LR%# Չ\P_X-y10!!X!תfB7@ 103#ym+U e+Gr/`103#`; /@     99190'%3##d)#Ӕ/}b%9 %.#"326"&'#"&54632>3"38\32#"&'#"&546329[=G[TFBi8\=G[SDCj~/[w~SNAU}^sdlkutcjmvu۠d|k֥s}T!3!T*,}T!3!T*p,33# NM^T,3 3#T^,$476767632#4'&'&'&#"#;9_UijB9 KGLV32326yKOZq Mg3OINS5dK t]F;73 ";@<7  6<Xy32767>32.#"#"&'XJF]t Kd5SNIO3gM qZOK?<6  7<@;" 37;XyG&'&#"5>323267#"''43OINS61-NSXIFJKOQdSP  ;@<7 W"323326X!!KOZq!Sc1NJOR`!t]D;83$777=X`y!!#"'&'.#"5>32326X!!KOZq Mg3OINS5dK t]F c;73 ";@<7  6<Xbz'767#"'!!'7#5!7&'&567676ǧfYUE5kIQ%\n*xrYQMoIF\<[ETFR q$"B2(d%(9L5XXy$!!!!#"'&'.#"5>32326X!!!KOZq Mg3OINS52'V t]Fجϯ;73 ";@<7 " 6<X1y0%#5!7!5!73!!!'#"'&'.#"5>32326Qu{hq,gqTKOZq Mg3OINS52'V t]FR=R ;73 ";@<7 " 6<Xy.1%!5!7!5!7&'.#"5>3273267#"'!!!!'hMEnK Mg3OINS523J:VQ FJKO!8!E$F";@<7 832326#"'&'.#"5>323326yKOZq Mg3OINS5dK t]FJKOZq Sc1NJOR` t]Dï;73 ";@<7  6<а;83 $77 7=X0y8&#"5>327&'&#"5>323267#"'3267#"/'00NJOR:G67'43OINS520N]a91FJKO?J4r[DKKOdgb 7 ;@<7 !7)32326#"'&'.#"5>323326!!yKOZq Mg3OINS5dK t]FJKOZq Sc1NJOR` t]D*!;73 ";@<7  6<а;83 $77 7=Xy7S#"'&'.#"5>323326#"'&'.#"5>32326#"'&'.#"5>323326yKOZq Sc1NJOR` t]DKKOZq Mg3OINS5dK t]FJKOZq Sc1NJOR` t]D;83 $77 7=;73 ";@<7  6<а;83 $77 7=Xy$!5!53276767632.#"#"&'y!JF]t V'25SNIO3gM qZOKج#?<6 " 7<@;" 37;Wy' %52% $'"51pZV(IٜXDz;%76767!##"'&'&'#5!!5367676323!&'&'&i1*+V WJRNMR  W,!::!,\HSLPM% +*%'H:^2:A<336G84^:H'@'H?Y L=@33/N0<^:H'%X`z!!5367676323!&'&'&!!i:!,\HSLPM% +*!#'H?Y L=@33/N0<^:H'%X`y& Xy& ''Xy'& oWz'& nJ. 3#3#!5!5J=>𹬬J. ##!!!!>7BX`y 365&'!!5!&547!5!!%43448>!0IG00GG2?8>;_8X`y  "264&'2#"&546!!!!iIdddeH:l'**z{h!!bFE``bq+((d:svvBX`yK 2&'56!!!!j!!K BX`yD 3# !!!!.鏫!!ZV"BX`yD 33#!!!!.@!!DV"BX`y !!'!!!! TU UTv!!BX`y !3!!!!!h-e!! z(iBE`(/?GKO#"3###535463!3267#"&54632.#"'53#5#"&4632264&"!!!!@#mmC???DJB&G$$K&aqk[Q_B;18BCC?-I\\I-?p`ctiF6A?9i=$#tu#gSSSBX`y"&*>32#4&#"#4&#"#3>32!!!!"]?T\Y88EQY7:DQYYU;;R!!=:xoHOM]QHPL^P%U20=5BX`y$(,3#7#546?>54&#"5>32!!!!ffc`--A6(Y1/a3\p$-,!!aN2A+,/-7#!^aO&E++ $BX%y<@     <291<2<<990!3!!!'7#5!7!X}y}J;fժhӬXyB !!!!!!X!!!جX y%#5!7!5!7!5!73!!!!!'G=XkXU7Y Z:wSAw@Xy 7!!!!!!!!X!!!!߬Xy? (@( ' <2291/905!5y!!LK Xy? (@ (' <<291/90-5!!X#!!VVTw 3!!5!5V!!!!߬¶LK VTw 3!!-5!5V!!!!߬VVw#5!7!5!73!!!'5 p[5m{*[y~!߬`u,`vLKVw#5!7!5!73!!!'-5 p[5m{*[y!!߬`u,`vWy&%5767$'5674[šzآb|۠M)Ig#M(Jh#Xy %5%%%'w2rK/dtm0x0oVXy '75%%5%'rKnd.t'o0xEu0#oVX y!5!%5%%%!!'XC_^?sMN#N+PJ>`5Yd|5X y!!'7#5375%7%57'NEO>:fLNtt5\h}a5H<Vw?#%#"'&'.#"5>323265wKOZq Mg3OINS52'V t]FJ!;73 ";@<7 " 6<LKVw?!(%#"'&'&'&#"5676323276-5wKHGOZq M343OFGINIIS52'V t]FDE)!!;3 " @< " 6V w+.%"5>327%5%%%3267#"'&'&''}QINSE^AsMP#Bt]FJKOZq _4O;@<7փ_5Xc|6V w27'732767#"'&'&''5676?5%7%53;L t]FDEJGLGOZq P32326&%&%5$7$7wKOZq Mg3OINS5dK t]FJl#a;73 ";@<7  6<RO]ɗ9=}Vw*%#"'&'.#"5>3232655%$wKOZq Mg3OINS5dK t]F)a#l;73 ";@<7  6<R˖}=9"]OV[w67&%'&'5$774hmU֠Gc _eT2wnw2"O0Bj%V[w'567&'567&hmU*c _eT2Vwnw 2O0BDj%Xy_%!"'&54763!!"3!yɊD_`Dƍ^`Xy_75!27654&#!5!2#XD`_DȊɣ`^ȋXy> #"&'&5476;7!!!!"#'J_+30TD~K9# K^+#Eƍ5p5Xy> 32654'&'7+'7!5!!5!237RJ_+30TD~K9FC K9^+#Eƍ55Xy%!5%!"'&54763!!"3!y!ɊD_`Dƍ^`Xy%!=!27654&#!5!2#yD`_DȊɪ`^ȋX,y&%!!'7#5!7&'&5476;73!!!#"$UrG6:qYȲG5^_=R5 Yƍ5p&`=X,y!++!!'7#5!7!5!&#!5!27327654'&'92D4VqF53 D&#I`__ 2ȋ559`^`X0y!%!'7!5!7#"'&54763!!"3!!yR|ɊD_aDAQjfƍ^`5eX0y"%!'7!5!7#!5!27654&#!5!2yR|Da_DȊ]zTQjf`^nj^DeXwy1/3ް2/301!!!!X!w@Xwy1/3ް2/301!5!!5ywXy H/3 ް 2 ް2/33 3017!!!!!!X!!w߸Xy J/3ް2 ް 2 / 301%!5!5!!5y!w54&'&'3!!#!5!ݾOO''''OOݾOO''''OO~GE:;99;:EGFF:;99;:FތPOO__pm__ONPPNO__mp__OO=9;SP;99;PS;9Oi372"&'&'&547676"2767>54&'&'!5ݾOO''''OOݾOO''''OO~GE:;99;:EGFF:;99;:FMPOO__pm__ONPPNO__mp__OO=9;SP;99;PS;9ՌOi3?2"&'&'&547676"2767>54&'&'77''7ݾOO''''OOݾOO''''OO~GE:;99;:EGFF:;99;:FBccccPOO__pm__ONPPNO__mp__OO=9;SP;99;PS;9ccccOi372"&'&'&547676"2767>54&'&''ݾOO''''OOݾOO''''OO~GE:;99;:EGFF:;99;:F,ccPOO__pm__ONPPNO__mp__OO=9;SP;99;PS;9KccOi372"&'&'&547676"2767>54&'&'3#ݾOO''''OOݾOO''''OO~GE:;99;:EGFF:;99;:FPOO__pm__ONPPNO__mp__OO=9;SP;99;PS;9Oi2L2#"&546"326542"&'&'&547676"2767>54&'&'h7b%&'qqnNL88OݾOO''''OOݾOO''''OO~GE:;99;:EGFF:;99;:F)'%`8nqqMpLM77POO__pm__ONPPNO__mp__OO=9;SP;99;PS;9Oi!'/7=E2"&'&'&547676%&'&'& 654'67676-ݾOO''''OOݾOO''''OOf:F-T1-F::E.S1.E:POO__pm__ONPPNO__mp__OOAϚ9FPQ9.9떖EQPD19Oi!;!!!!2"&'&'&547676"2767>54&'&'+{{ݾOO''''OOݾOO''''OO~GE:;99;:EGFF:;99;:F;gZfPOO__pm__ONPPNO__mp__OO=9;SP;99;PS;9Oi372"&'&'&547676"2767>54&'&'5!ݾOO''''OOݾOO''''OO~GE:;99;:EGFF:;99;:F2mPOO__pm__ONPPNO__mp__OO=9;SP;99;PS;9IPi%!!!3!!#!5!3Ҍ8Ȍ7nj6Pi %!!!!53rM_Pi%!!!7   '3ͬc  ccc #c ccc Pi %!!!3#3X`y!532767>32.#"#"&'yJF]t Kd5SNIO3gM qZOK ?<6  7<@;" 37;XAy 755%5!5X!#!!ʶLK XAy % 5 -5!!y#!!!!KL VVw?  55!5!w!!!KLVXy? 55%5!X!#!Vw $75$&%&%5$7$7"nWlܜ86s˖}=9]OVw $'$'5%$5)n˱#lݷW680O]"ɗ9=}Vw)%*67&'&%&''&'57&%5$?7dMjTVʥ3˱!3a4m"cjX)3S][e﹏3N@%HZ-=}k$Vw)$(6%'56?56%7$'57&%D>WwZN(۷+/m")33 +Si063hiyje˖X[y3!!!'7#! !PYBzrYh?ݪ@?@X[y3!'7#5!!5!!PYzrY(s??ݪ@X>y!!!!!!'7!5!7!X!w R`RgfjfX>y%!'7!5!7!5!!5!!yRgw! RjfhDfVw?%%&'&#"5>327%5 %3267#"''43OINS:Z0!!x2XIFJKOQd>3  ;@<7 ҧK{"327V!!?E>XIFJKOQd>C43OINS:Z0"323267#"''&%&%5$7$743OINS61-NSXIFJKOQdSl#a  ;@<7 W"323267#"''55%$43OINS61-NSXIFJKOQdSa#l  ;@<7 W"]Y"\I\\\\I`LLMK\y>>K 3 #ppK # 3Jp. #5!!!#oo.ڭ%ۭ& #53àZ03#s #5ˠАWeE%3 53Zz i#s  3#àР˓[m#!!# q3#s!!`N um!5!#z3#zz3!5!`z m #4763!!"ƺoyeD9uߑfW#'&%'53 763:*enK==Mne( =C _AEc H<  3!!"'&59De{oVfd #3ƺ m 4'&#!5!2 9Deyo}Wf &'&3!3#76<(enM==Kne*!<McEA_I= 3#!5!2765 o{eD9ᏞfV(3(! !!;bc;$<.:3!3T.%y5!!X3 2!@ 2 5!!5!!5!4)4𬬬 !!!!!4)4XXX 333 Nf  !!!@@@ Nf  53353353353𬬬 3333333XXXX 333322s's' !!!!@@@@22s's'!!!!\!!#!!#\!5!Z!!X!5!$Z!!$X3!-Ԭ3!-.*!!@Ԭ!!@.*5!3,,(!3,X5!!@,(!!@X3!!- 2Ԭ3!!- 2* #!!!P@ZԬ 33!!P-#,Ԭ!!!@# 2Ԭ #!!!P@.* 33!!P-#\*!!!@# 2*!5!3,Z,!!3,X !5!!#@PZ,( !5!33$,PZ,!5!!$@Z, !!!#@PX !!33$,PX*!!!$@X!5!!Z !!!!-XV !5!5!!,ZV!!!X!5!!$#Z !!!!$#XV !5!5!!$#ZV!!!$#X5!3!,-,Ԭ !3!!,-XԬV 5!3!!5,-3,*V!3!,-X*5!!!@,Ԭ !!!!@#XԬV 5!!!!5@,*V!!!@X* #!5!3!,-Z,Ԭ !!3!!,-XԬ !5!3!!,-Z,* !!3!!,-X* !5!!!!@Z,Ԭ !5!3!!$,-#Z,Ԭ !5!!!!$@#Z,Ԭ !!!!!#@#PXԬV #5!5!!!!P$@V,* !!33!!$,P#X*V !5!533!!$P-#ZV* !!!!!@X* !!3!!$,-#X* !!!!!$@#XԬ !5!!!!$@#Z,* !!!!!$@#X*5!35!,-𬬬!!!-,XX33*!!@@*DH5!5!xX333x 2 2H !!!!-Rx !!##xmsZxH !!3!!xm3-sZRH !5!5!5!,NX 5!###lZZXH !5!!!5!4l t,ND 3!!!--Dx 333!x,ԬxD 3!3!,(D 5!5!5!3,,D|X 5!333,,(DX 5!35!3̠| 3!!!!-- 2Rx 333!!xs 2 2Ԭx 3!33!!-s, 2ZR !5!5!5!3,,X !5!333xtZ, 2X 5!3!5!33t, 2H !5!!5!4R 5!!###sZZH 5!!5!3!!t,-sZRD 5!5!3!,-DX 5!333!,,ԬD 5!5!333!DX,!5!5!5!3!!!!,,--R5!333!!###s,,ԬZZ !!!!5!5!333!-s t,ZR, 4763!!"Q[yY[`~| 4'&#!5!2.-Yx[Q`~=?x 5!2653#xY[Q[~|2Ψx !"'&533![Q[Yyx2|~>3m 2>#3> 2> # # 3 3>ݲ}#$cc|5!F3F~|5!|iF3P|!XF!@F~|!|iXF!@P5!5!!5iVV333PP~P!!!iXVV#!#P@P~P( ! ! !!!!#!#(!(F(!Z((!((!(h(!|((!(*(!>((3(i(} F( #'+/3!33!33!33!33!33!3䟟䟟䟟mnmnm(%8K#!1!!!!!!!#!1!!!!!!!#!1!!!!!!!#!1!!!!!!F????">>>>#>>>>">>>>(((((!%)-13#3#3!3!##!#3#3#3#3#3#3#ޟޟ#|ŸŸ|Ÿm#(#E(Zh!|i}h((&&(&(&&"(&&"i(}(&"(&&"w!N<w7!!!xr$<w 3!254#!") ) xrVVVw&/&w !%!5!5!5!5!5!5!5!5!5!N?:IILII޸[["[[w !!!!!!IIN< w !%!!5!!!I) N"-?33 #&'&+"'&#"/573;2?"#'57#&'#"#567635a)8)kOkaKA-'= //G),Y=  !H$ /+HDH)+) $., fYYx !=Z Lx73&'37&'67&'67&'67'32654'&'7654&#"3672 $54767&'&47'&27632#"/#"?#"54?'&5432'&327632#"/#"?#"54?'&5432'&327632#"/#"?#"54?'&5430'&327632#"/#"?#"54?'&5432&5432&56327&5432'&327632#"/#"?#"54?'&5432'&327632#"/#"?#"54?'&5432PO~ )*+')+(@&'$||e?/A}]\B-71SLoWj\vLLr%%,* #$ )*n$ % +) $ #*+    ? '+&()&(+&p   % % +) $ $*+*EC*Z*,)-)-*,%&%&fБfU 5HhfeefhH2pu^QFs棥sKQG4 4  22044 22 9       L%('*%)(*%)(*t     144 22 0r!2CTev+&'&54?6?6/&2#"/547672#"/547672#"'=47672#"/54762#"/54762#"'=4762#"/547672#"'=47672#"/54762#"/547672#"/547672#"/547672#"/5476l=.%G\&#- Lj.N 0d&K4i    }    g    s            &                            H5-V"*2-.T<:U'EGE'DN-ֈU]\`CDcbF]WWZA@ZZ@AZZA@[[@AZKPrqqrPGeޝdMP䠠P }2ٛk A4&#"26%4&#"326#"547&'&4632 $54'&'&4632XP79NNqO.N97OO79N']EacDC_\n\U>DbcEXFDbbDEaaEEaaEDaa+G詄UUSj멏i LVV6 "32654&7#"32?ɏǾ/`TcȐɎ;P12Y.1"264&"3264#"54327&5432#"'&'@KjjjiOiiLKirqrtPssrqQܩZTdIU )5AMYdp{3/&76'!'47653!476=332654&#"#"&54632'#"&54632#"&54632&'&676&'&676'.7>'.76$6&'&%6&'&6>'.>'.f<;.=+,>/;Kyz~LZ|WX{{XX{IE11EE11ET    m       ;   R       s@dd@s}>}=/NnN/=}>@MllMNkk& % I% % "!$# "! "!! & % % & %-5AMYdp|5#!4'&'5#2#"&546"264&"264"2647>'.7>'.%676&'&>&'&7>'.%7>'.676&'&676&'&753!476=3''676%27/&76'77&'&/#?6'&7liilYz{XW|{bEEbEd      8    @     .HxttxH%?%5E$6  6$D5%?%-5!!1(~(1 5,4t4(4N4(4t4;hhh%%#%% $ %_ $ $!"!$!/!!!" $ $ $ %:-,GtG,-: XLRqqRLX ![$n[ii[n$[!ob !!'!tKZGkcn "!!'!##&+572367676hNn_5, S Grj3#-EmDJ~o.(*!4\tR~UL !!'!  ##' CI3Z  > << 5DCX << ; YD36273 ##'5&< +Z@\\DC ZY\5#,5>~3+&=4%3+&=4%3+&=43+&=4%3+&=43+&=43+&=4%33 #&'&+"'&#"/573;2?"#'57#&'#"#567635@)A({@(@){A)A(@A(^)4 'iOj_J@,&< //F(0'&&'ܐ'J&(lN5  >! )&V?<?$&$ '& ZN N />Eqw!674#!!6?676'4#'323276767654#3#&'&'&6%67!672!&=75$/563&43!32+'!67#>54&53 *,  3)="(&)09$) L&TE` MPA[MH Y $ ;&&e=O%/ N ,8(.7L1Rf~H8SQ,zH%9D6 )jGP@4Rjd_*KfsDIR 9! O  -]&C+/3#"'43727&'#"$472776725676&5&U8)$ tJ .; d3f,"3' VD ( GL/7;;,g t^F$< LD&?>X4R !/# I ? P?D!)Mv>/z2!"&54676737#&'&54>;7#"&546767!7!"&54>3!6763!2h!.)g$'30!/&j ! /:(/  )/ 9)/  9)0:*/z2!2654&'&'#'367654.+'32654&'&'!'!2654.#!&'&#!"i !.)g$'30G!/& ! /:(/  )/ 9)/  9)0:*!!C4&#!"!&3!!"3!#";#"3&'6737#&'6737!"'67!7!"'63!67!2e;'+pCCo CCCC2CCKK<LLKK%JJ60"2=2).=<==<@=:>=;TT USUT UT83$QE!D72654'6#"'4#"'54#"'54#"'675674767#%$4:JILLHOKHLKIhghgighgD>-sJ1 b6'SS cRR SS?SS\\K\\;\\]]!A*>K!!C463!2!6#!!2+32+32#67&'#'367&'#'!27&'!'!27&#!&'!"l;'+CC  CCCC2CCKK<LLKKmJJl6"2=2).=<==<@=:>=;TT USUT UT83$QE!C32=732=7325732'654&#'%2&'&5&'5&'IKLHKOHLLIJ:4$N->DghgighghSS=SS SSb SS'6a!0J)K>*B \\]]:]]J]] O!%)-1523656;2#'7+"/#"'+"5&54775'"'5476;25'7&567635&56;374765'75'76=4'&+ '"'4!#"'&36365&5&#%#754'&5&&547'5367&7+&'&'735&2?"5775537'7'3533553535'32767&5%2?&#%55'575775775uo,Mz"060D/5I:2'5:6&" *:D:S46$.e QN5  u4MDa 6bUP+ ,H;`I23N5( (#I0M '^5%#!:X+ "*  6W}W:uW4 5vT & /H3V XD9\SL+&31.d+%X!Q $2``KPPPG[6%# Qy- 6[[3GK[O`_A[-)$t7 L-$ L6=" (CJ#R"0 :~GB{~Eoj<4S[Za LC5 ) .U%+Z&)͢ 7e<ILAaMoK33K@G6 $$(& (''&1/----2)( (-((d.'-T?OK8T$ !T3(-<((')))())( &2%2#"'&=477654'#"'5473t\*e O@UCXq P S. P ӍMOb>YaYƮ58l7P P@ $0<FX + &=%6&#"3 6=%&#"';27!54767%!&'&'2+"'&=476^7\Pg㑵Hr'.)%sM M#fC-7!%A.; ӎw:kKqz +H*G;M tu/&((AA&:+C;."/ 8Pi>'67&&&'6.7#"'&'#"'676'773.#'6'5676&&5476'&'67&&07 ^< 1x,B5@2 JVMv!#uA+UBDX[f*;-10)..C,sB#HKU P]12<0VQ }%'H6-T}^$k7 R2'7f!A\;y?1!50BEt"!zkQ;0qu0\oi:5oPZjsXFaPJGl;4ejN^1F[q7&&'7'6&'$#&7'&#"'5&767#&''5$'67'6'6'5$'67'656&'67&'6'&'''5$7676'&&'6'63&7"7&'7&'7&'7&'6'6%676767&77&77&''5&"'6%35&'.54>23#67#&8 p +WDTc'H @XO`= ;*)8 kDv/Pk-J KDhGa D`gBD6DDD =3dTDW, :g j)Yi#'WtI-9w18$^8;./7-I)jS)'#i\-IM91D;8%a7/.D=uRNBR&'%QBNRq d2 D s98C ["|44&3, '2^3R T(B?#'9C- !y ~#Z10>N?$%Y4 )%FN? ({ usis< 3(&^T05<>7;,#4[:O(vAfGEtYB z^~4j #,;b:['~Av@~EQ Bak4~_H#T2 $$$$ 2T"`q$&'6&'67327&#!65#&3jjdnh wWVݱqZre[c7 7 cyX ,35'533#3!'#'5!5!5#53!5!5#!!ʶ~~ blvF F A<<3ffX苜qXGccGap 3264&#!2+73 #'#5# 3m`hh`2`Ĉѳh|;vvʷ}f33#!!#'!'57!5#'5735 64pzp7d+!#!573#'5!3!'573!#'73!#'5IxOOTxSVVdY\yvVPPvIyY',32#' 37+ &5%6323'#57'53mJl{~m@+ݼh4144'0>,_ vNknmmnObs32732753"'#"'432364'5;+"'#"'53275'&'&54?5572'#&'&547634%476='4&#68$$B )Z>&A_;i88u-o1bFGfQ_M5mwLbkjI,K=''8 0##Rm4 ڹ+ܴ5!PP"4\=ѻ"8Qý32#"&546324&"26%#"5432itvxsq1"00" 0/B//B/#a`ir|H!//!"00""00"!/0 _b 9>DJPV\bhn27654'&#"&7367'67675673#''5&'&'7&'%67'7&'67'%7&'&'%6767%&'&$h%$%%34$&1++XSA N@`==k>P CRX++XYC P>k==l?L ?Q oL+ Nn;P?;@  nMNn3%%%%34%&&%s==`?J >PW,,WW? K?_==f?H?PW,,WU?H?^<=Ke+cL mCP`k<<!4(0847632#"'&7327654#"&#%#&7&'67&'67!󫪪vӤ=6 5N'V[S.U[R󫬬񫪪񿉊 ʯX[V[X[V[!4(0847632#"'&7327654#"73$3&'67&'67!󫪪vѦ=63QNV[S.U[R󫬬񫪪񿉊w  'X[V[X[V[!4!)47632#"'&%#$''&'6%&'6!󫪪4>;D@KDzcngk?dnhk󫬬񫪪I kpinipi !4 "*2:AIX3#''%#&'52#"'&5476!!'5%!!'53'5%3'5%3#'32765'&#"M==,/0#H 8&O6 |7iY06./==e6a&i1r4z012+KN2HQ>>>>f^2"/1]8`1"Y 4f2y5+ +"'5$76%&'547327676=&#; hz0/O{[(*TQ~`NO =tR[\ 8d<+% &56;2'5$%75#"3vh0.P~N^(8P,VRZycOpO >S\^ f`1B7#5#53'&'&54767&'&=33676=3#327654'&O&"}|fzg}}"&&"}UQn$mQU}"$nQUVV{xVVUQ<"{u^^\ _u{"#| zUOOUz |#YOT{zQPPQz{TO@>)4'&#"3276&5476327#'#53'&`____`oŠqk]^^]YYňÁhgf@> '"3276'&'7#5373'#"'&5476j___``_ߓqŊqYX]]XYfhhĈÁj0 '&'&376&+"'&5'476%7!Z{z[ZZ[~\YWmpN#ZX[[YZ[PQmp#TG*52764'&#"#463233#!5sPQPPtrQPyzg֏LQQQPPQr{{t|g*#"#53533#632#47654&#"#ddiqqCBigIIugzyUr}ppDtPQs_CS 7"27654'&7#"&54767##53#533333#3##h. @\ ! 2(>>?ZW~>'3|}}! -/@ /- !^'?XY??~YX?(F}R}hh}}hLS<#5#535&'&'5'73'3#'73'676=35'73'13|e{vw}wwUATwx|xxS@Wwx}vv|d|re{Eus~~suE|VAKtrrt@X{Ius~~suI{dr|*! #!!!'!27674'&#_82V)3{D#MHZW{s{?zK8! %#"#&5463 67!2#6#";z\)MaBuh __ itBaM(]y tt[+##+tt\5."264&'67>3"#"&54767&'&#52hq៝rd:BJ|^d#!p⡠q $c]7A;{26XY "zz" YX62 &'5 %$ 56?6'.j拈|*xIIz'&|JJx, F42$8"3264,'5'&54632264&" &$#"&547>ȜmmNMm} lyzU<Mnnnm+}7 lyzU<|||,&(uO#eaHG||||Q'(sO#e‹`IH=! <>'.463227#"&5454&#"&'&5476766&D9BB8Ğv?W:pbW~tp) "-ff)-gtpQ@3AA:ACj›GmN?ijbvr56WGe((Wi0154d)-?/6?2>32>32#&'567'6'#4&&#4'3>64&"-S5,9"\0+Fgv!4u|W")^,k ikdS!eb[_[H|NYC:RHB=G`SnU|#!!!53&54632!!5#67654&"U't00Z =yy= :]ZssZ JjkkjJ 2f4%353'5#"'&''#&&#4'3>32>32YE;<<-!&Y*dx cf_Oz.*O2)7Ze``b<`WuALh`8!5!1##'!5!_drrPk^K{U_W{'/27632#"'#576&#"4'5267>327&'"2XCZd}uud$gq~dV)40tlx!&%"dLk}:Uwma4 sOHK{wY@x A63276327632&"'&#"'&#'6327627632&#"'&#"'&#'YR #{=('%{XNCEz>O&z>'(#&R #{=O&{YNCEz>'(%{=('#&ee22ee$l66kd23dEPdd33dd$l76kd34eE^s#!5!37!!'  L34((C $Td67&'&"!3!67>54.#"!5&'.54>325467675#53533#63232>54.#"3'8xpA?9l9>@q<;9'D} 5RTP=: SSPSS ;r>>p  p>>r> !A% )RSQ1 )6BB6) 1QSR) p  ""V{zHNRh|&'4>32"'4>32&'4>32&54>32&54>32#!5!'!567>54.#"32367>4.#"323732>4.#"327>54.#"732>54.#"I )),(?)(#!3()3$))BG!(( K{mg,;h IXI L$  P   H''1|G''#s%'')7$ ''A  ''HTݬ9.%~~ rF)~ wpa!'-23353#3!53573#'5#5335!75!!5'57!ePPeeQQeDpH>H@A~}}~00mrTTreppe-!7CQ^&54767&'&'5676767&'&54>32!535#5##3654."!2>4.#" 1""#@%@#!@% ?$##0 ܍a1%?E?%4,/--+D,/1+ 4;AB<>"  "#>"">#"  ">#10$ITNnVB, n ?%#Naji-/4^t&AYcgb3%' + ((NV8OQĿ>:<uyg**5 k5h P[32>4.#"732>54.#"!5&546767&'&546767&'&4>32'&'.#"+L)+L*+M)(LH     > |n @: !:;! 8An} E04`a30TL**LTM((     ++x: 8>>q ?9 9? q>>8 :x++c^UZbbZU^jg% $Tdhy47&'&";67>54.#"!5&'.54>325467675#53533#63232>54.#"!57#&'.54>3234'67632#7$5oh<:5d4:;i865%1MNJ96 MMJMM 68JNM0v    +0 +/0U-,,+,.T1/, 9j9:h  h:9j9a &LMK- '2==2' -KML& 1  V//X//X//V6HLP&'4>32"'4>32&'4>32&54>32&54>32#!5!5!M ,,.*C,+%#7+,7%,+ FK#++ PDNAM**4d;K))$'**,dY&"**E #**L:ƥ??@@=%)5!5!3353#3!53573#'5#5335!mD^JJ^W^KK^׋LLZZ,}}uz%yuu{{u}--4@4767&'&'5676767&'&54>32!&7535#5##3 1!!#?%?#!?% >$""/ _1+ 4:AA<="  !#=""=#!  "=![1=%T e >6.HC'L"'G 12h[FH`[$%ok+*8d .Ncv[.7&546767&'&546767&'&4>32 w "E> #@!!?% =E!w ./@ =CDz" E>"">E "zDC= @/.QO##"'##565'##"/547?kM ,4N"DF &Fi?JO/FB!O {|Im<&=M2227632#&547636=4'&#"#4'&#"=` ]d2 cBU;/G;SXMB:@B ս;7hf% #>|\@9@O &&5 iC n:^O G  %2O7236;2"'##'65##"'&5476;235&'&=476jS c1=EO ;SCFRʝT6*F@E1;O+.`162V Yi8/D ;8[B VRP"<B+"'##565#+"'&575477;2732;276=4'&3&'"ih;F(wQ"DG".FWCNfBy" bODUq5u4  Pro@ |S`64 '4'&'~ v '  w (  w ' $k=F F>jG3~Pjb^*IerN{̑?qJAe}Ωv6\~x(ONPPNO(!8?|EE|?8!r!_3#"/4?23D-!]UF+}{<!/3#'654'&'#"547326Rs9W5[S%3;B[/OBC'*|<j_g#"=4?2%#"=4?23ɧ%QM?ˠ)TK7(w7џ5s ?|O"'4723!#"5472!5YA>RHIOq 1 ӫg 4D% 3363'$6'"I+4 puoS^*  3%#'#3%#';&2 IʗHj7*(,377#'#'547#5773%%,ppsr,'zzxz'984?/99e5>:_`qE#&#"'5654'5673;54'56732733273+&##&"#&'565*G1 VV2Is3'{'3sI1VV 0Gs3'{'3sP3+1='3sH1WW1Hs3'=1+3PH2WW2H. ;G7567&'&'3#6737'#&'7#&'6735'67#3335#5*)SR))&*&';((:'&)'ȶkkn\\[[nȶ kk n[[\\n`ff/ee.((&(;((:(&((@))SS**n\][[o jj |o[\\\n jj e(P( /N#.6CMhw!2732!'5675&'&=32#&'567637&/7&+"+&'532?4/%32#'#&'&=4?#'57335'3!273+#&='#"/547354;2?!&=35-,;K> #WU* y "њHV ηz/;@"q=o )we)$IY'L ALaXwH >X%CII$PC/DN6g+  b% #  jnN :3 O+5{bQ< ,d-  X] f '^ JJA!< 8 2E35733!&54?'7'7!!"'&%#'73676'77'7'&'676}]} =--HW(7*! >y*1c{F=.,H-.'d(#Y+GC8957jN})%%tGl5nm3(,H:0/(_kiN}!N920K 1DW3!5>7>54&#"5>32&54?'7'7!!"'&%#'73676/77'7'&'676@.#5*"I?6O"[m" c<,+GU 5) <|w)/ayD<,+G,,&a(!>B<#q'%NG91 M7835hL{'$$qEh3kj2'+G8/.&HghL{ L8*/D *(=Pc#"&'532654&+532654&#"5>32&54?'7'7!!"'&%#'73676/77'7'&'676D|q%N24H'CB=9PS3464E>6O#]o 32EX!#"632#"&'532654&#"&54?'7'7!!"'&%#'73676'77'7'&'676H$evyn$L27C'y*1c{F=.,H-.&c)"ERUHHS S /(*. 8956jN~(%%tGk5nm3(,H:00'\jiN}!N91/K "7J]"3264&7.#"632#"&54632&54?'7'7!!"'&%#'73676/77'7'&'676]'00'*//l+2>AB(S`dT^dyg7<,+GU 5) <|w)/ayD<,+G,,&a(!.T--T.H D&RECSukf{7835hL{(#$qEi4lj2'+G8/.&HhgLz L8*.- X.A!#!&54?'7'7!!"'&%#'73676'77'7'&'676n!?/.JY08+"(@},2fH?/-J.0'f*#&K:;68nP*%'wIn7rp5).J<21(vmmQ"P;:1-K':7&54?'7'7!!"'&%#'73676'77'7'&'676N!?/.JY08+"(@},2fH?/-J.0'f*#:<68mP*&&wHn7qp5 ).J;11)wnlP!P;;199'9HR!273!567&#2&'676+&'67'#'6765'533!273+#/#"/47$,7Jv I MO $p%|I ^ [T<K"(~GW$?8?])( EAs#L, T 0 ` +WVۄ`$$a.|%2<J\e3 + &=762367#&'&#367&#&#"3274/"34?3'35732?5#+'535^-J|@h'\-e@<r2&H); uZJM =9jl:jgb.Qi2Q|酝:*}( dpR!h j `]_i$x:-(^%,3"ؿEa HMP E7g /:BR`j # &5%6; 65%&# 327#57&/#2#&'676+'%3#'#&/47'3327##'%3#"/6j1M{ǮG&z v$ExݨE(+=R:n:D!s Y!gQKum;} uA;>e=g¯Cy??ԢB|*>w4I ' 5@` bC$ j$H?iM!%.|7H27&' # &5%6367&#'.7&67263'#%; 65%&# mJB|e6O}°I+o|BJn^jaygwaaygxaj^w$FyتFG퇢D{C?` B]ww]B JХC}.?yP%.232#!7&!"4#".54767267p   {u*_ Jcllm8*#I%<($|ʀX#{Nwt7mnld4)5:IIIB,<_4767632#"'&'&!%!!  >W$`4 Z|b<_/374767632#"'&'&4767632#"'&'&!%!!    UW$`H    Z|b<_/GKO4767632#"'&'&4767632#"'&'&4767632#"'&'&!%!!      UW$`H      Z|b<[/G_cg4767632#"'&'&4767632#"'&'&%4767632#"'&'&4767632#"'&'&!%!!    /    UW$`  K     Z|b<_/G_w{4767632#"'&'&4767632#"'&'&%4767632#"'&'&4767632#"'&'&4767632#"'&'&!%!!    /      >W$`  L      Z|b<V/G_w4767632#"'&'&%4767632#"'&'&4767632#"'&'&4767632#"'&'&%4767632#"'&'&4767632#"'&'&!%!!  0      /    UW$`+    .      @  Z|b.t )2 $$ >54.#"4>32#"&h..--t*Ƅ2..2/.y )62 $$ >54.#"4>32#"&$2#".46h..--1.-.y*Ƅ2..2//2..2/.t 2 $$2>4.#"h-..-t*f/2..2/.j '2 $$2>4.#"$32>4."h-..-q.-.1-j*f/2..2/y2..2/R7!!R-ӖR7!!%!!RMzM; 67'&/#'3#67$#%ׯP==Ͱ̼bN+#!f"K++!|o554.#"##"'5##"&'&'!5!5&'.4>32!!676767'7' :!9!"9 :! F GF;kY_1278e56d:81)RLk<GG E~^ : : ; ;NG 5 e4G( Li) enf77fne )i (G4e5 G( Pm 9Y%&'%67&673&/'67'&'"&'4?&'37' '7 &/7&'#>7$%88EFu/- 6uNDL22LENu/80uFD8jU45B%y\A@Yy$F 0=/0 ,-X70 ;~*2 %% 2*~697X-,oo  +F9d1 ) ( 1d9C1*CT'&#"'5&767#&$'&%'6'&'''$'676'&5$'6%'.54>32D$ "@F,NNNvF8p^Lb2  N**+ B@0"AR/0?wA%od/D&3.YaQ/5#3$"uI' @3/u= =#n- .... w3% % 32+#".7!"&'&'#&=4;73737D*$#GFHH%#Ι+(&aa'm99m9 3.055_4i4_550.3k  #tttk"632&'.'#####֊v)%8 _^>:k{ZG_?g@`H,>|:=+,j,,<6O/233<bbJ 132>4.#"367#&7&$735&'.4>2,P*+P,.N+)PƗd"/%(MM~95DLMNMD2)WN,,NWP**g!ʇw֜s~  &JJ&6d_32>54.#"%2#".54>''#/'7''7''7/5?'77'77'7?3777'ighilddk66676W- E?6K6>F -V60dO `_ Nb06W- E?6K6>F -W61dP `_ Nb1ghhghgg 766760eP `_ Nb/6V- E?6L6>F -V61dP `` Od16V. E?6L6>F ,* ? !&+05:?DP3&7"7&'7&'7&'7&'6'6%676767&77&77&'"32654&'5&'.4>323#67#&#"'5&'&547&"'6%6761a$O` "NiB*4l,4"U47),3($aM#"aT*BF 4,=44#Y3,)0BB0/CBO"!-$F$FJF1.#- -#-2MJF$G# 8<g7*!2U6J%n=_CBnT> rYw0d "*7]6U$u=n;wBLz >\e0wZ3C.1BB1.C(N "%""%" M#p.PA.$;QW$.AP-{ "R &.FR2#".54>&'767&%76'&''67&'&'&'67676547676'&7>3263'##"'&'&'&54767&'&547676&'&#"6&%6767&'&'&676&5467&'&6732767&h@9h),)RP|  |PR-*g:>/**Y&()((')&&)')(()% @9f+.TR"`33`\_ .np, 00441/ ,pn, ]]&&()&&EEEJ032WyQT.,d9@.**..1230IDE%&**%&F+.SEFE.IMMI."#FES. !  ";-0.--.0IM+.REF$$1.%2S_`Q2%-1OQQO2-$3Q`_R3&.>GIIG"" 7447#.$$FER/+L"  !75/57%"IJJI* )p~67&'67&'4&6%67.'4'6&&'6767&54?67&'&#&'#&'5&'"'67&'&47632>4.#"72#".4>"0'-, )*#'05%"*%%, ),,"GNYI'+""$(JYNO21, 9,4=SM:7,: -12-[[Z[]WXIOMKLMN2 Y{\ bCWDJgABcp7L^BML0b \u]! @R%KlhhO+ww+O hhlK$PZX'@D 0:)ww*;0 EA&XZw[[[[GJMMJ"( %3!'#!52#"62#".54>o:5(67%'$(n H0L*I"33'554#$/* PR 6h"&>I > >A>!!ua!&5476'#5!+{h_a66mHHm.rZy'#"'&#"'&'&'&547676763232767676'&'&'&/&'&'&547676762!2!%3276767654'&'&'&#"&#"3276767654'&'&˗Pz  ,D@   7;+  23  M98G ):               r         0   L:5U        .\ r26767654'&'."#"'%"'&'&'&54767676;27>764'.'&+"'&'&'&547676762%632$"26767654'&'&#  #  @!R763276;%326767654'&'&'&#"6767654'&'&'&#"32ɓ E79E"  21 +96  >B+  # zOo              49D   /    "    :           =JZx-4H67&'&'&+"'&'&'&4767676327632 #"/#"'&'&'&54767676;276276767654'&'&'&"276767654'&'&'&""'&'&'&547676762"'&'&'&547676762'&'&'&547654'&'&'&";276-&#"+"276767654'&5476%327%&"'&'&4767628?.  !  !a=?^'_)\?=a! !# "!.8?""  "  "  "   f  2 .?E S@6f G=. 2  ŕ6@  B   )_>9 9>_)  % I        ? *        ;d.      ?P   !-  @( ,#%>  NpNM&_*# (! &) ,,f&  ! (K_  Z0-  Yi D   cp-)L &gK1 [N3$ n/ "!0{I"H#fmt2>,7HBI.;/8[, Q[z)  .)S9L *E   '+(4%(4  *X >  7A) 0'-570+I;-% *#%(0  ]'5.  U-9Lp{7654'"'&#"+"'7&54?67676763276323273#5%6767'&#"6%"/67#"27632327654'73654'676547& t!M#l5G;@\ 2BX-0%-m * '?,N ?'!&R;-> <\-R5-6E!"$b$6$!q",; t@P"#C  *FS "DX@! %z$(`]jMP   &O/+@ p_u<  3  DMKZRdYL6D_YBI5.!!''kGWz")3SZ67654/##3276?7%754'654'36767632#"'&54767632'0,,; (| w| ki5.U,\\    %g .  ;,-0j{w {w3V. T, \[^     -5& '-EL4'&'&/767675'7! !'7!654'!4'!!$4767>2"&'&'!654'$$CCC||]V|V#u    9Z(f(Y7%$66%"'&'&'&47676762%'b&I    )^tN/  /dIW?    @ViDV /  V%&%$64'%%&'&'&"27676@))< "  " ]NO]    9|23277632#"'&'&5476"# 6v>? (-=%P8j?  #j<  y"$"JrB23277632#"'&'&5476"" YTo k%,02?=V8jiA{C {u+'qP?  ' 7 sssssstsXrsrtsssr@Q  ' 7 5NB2632#"'&'#"'&547677&'&54763267632676   Bt  ah>) c!  ,Hs *ܡ   },"2A "  {3+Q26#"'#"'&'#'&'#"'&547&'&54767&'&54763267632676  ΂    NjM  rkW* & \ *3 #ﳎ*3 Tv! ( 5+" , @V #!!!!!%!!!!!!!!#!5!3 ;E;JEJJJ<;E;EJK!IKV{ !!!!!!||uv9f35#7!!#!5!3*+մܳ*ִ0r!!%!!!!!!/0``1/`1) !!#!5!3^^^~S3!!'#'!!#!!3!5LDʃDMA #5!#3!3'3#!#35!3###5353;9nj#5AI##0vQ#"#3;54'&'&'!"3276767653#4'&'&'&+3!52767>5/]LED73!&&54GBO]63H>SkS>H388]OBG45&&!35FEL]63H>SS>H38882I32367675&'&'.5467676236767>32#"&'&'&'#"'&'.546767675&% >#"? ?"#>    G   >#"? ?"#>  G     F  >##> >##>   F    ?#"> >"#?4'&'&'&'.54767676322767676767632#"'&'&'&'&'&#"'&'&'&5476767676765"#"'&'&'&5476767632B ,#,+%) 3!, &&*-#''#-*&& &$0 )$W$) 0$' L+,$&&$,/"&&$b3") M*,%&&%,."'%%0 )$W#) 4!, &&+,$''$,+&& &$1 ,#,+$)0267632#"'&'&'3&'&'&54676763267632#"'&'#"'&'&'&5476767#6767632#"'&'"'&'&'&54767#"'&'&'&54767676325##"'&'&'&54767#"'&'&'&476767632&'&547676763235#"'.'&5476767632&'&54767676h             -  (                  '    *             .         +j276767653"4'&'&'&+sidUS+*+'WPihtthiPW'+*+SUdi),)URhexuhbXR,,,,RYaitwfgSU),%t?247676763"'&'&'&5!276767653"4'&'&'&LEA86:4DDMMDD4:68AEtjdVT,*+(XQjhvvhjQX(+*,TVdj-76DCOME@:66:?FLOCC67-*UShgyvjbYS,-,-RZbjvyghTU*,(8 %%! !)ttJHcdecH]F]~]^C5 )!%%!2#"'&'&'&54767676hzt@z@Az@t{ne_RP)((&SNcdome_RP)((&SMdd0x}*(QObbrle]TP)**(QObbooe]TN+*(.'"276767654'&'&'! !_)(""""()_)(""""(Y$(*/.*(#  #(*./*($]^#< '1%%2"'&'&'&5476767! !#xxa)(#""#()a)(#""#(YDgghgD^I^W $(*0.+($  $(+.0*($ YZ(8 3'7'3!%%!! !hE۱CCDe g  g f ҁссi:]^= 3'7'3!%%!7!7'7!hTDEDDTNPPIQ2P11P2#mm(? -5%7'%!! !] P  gfeer­696ƌ]^^. /'%!!%!77!yrryyqm"_^^l%%tu%ߴ߳!63% %#'-7:|:||9|kֵֵkֶWz`37'%7% %#'ZZZZZ]^Z^ZZ˛ʜm˜˜mʜ0o #'!5!73!P6M6P$6PMP66R#6QLR6$Q6L$z     - h<_K <; L_zK <; J`;<_  '!'/7'?!7% % -[9^[[ZG^ZZz'}*}zy}*}'q^\\ZG^ZZ:\O}zy}*}'yz(}2 % %  h_y(_^(zFGs% % -hVHzVUzHrVU{HUVH% % -hhhႁhhhႂhhh$h7% %' 7-'hX5 5XV6 6g5VW6 6WV5 0t/37%!!%'#''7'%!5!%7'77;[TA:#T8#AT[TA#9T#8AT T8#AT[U@#7S#9@U[TA8#154'&5476276767632#"#"#"327232#"'&'&/"'&5476=&'&'#"'&'&54767632332?&547'&#"#"#"'&'&54767632676?>$,.c.,$> ]5 71+: H3> kR  Sk >3H :+17 7Z  >$,.c.,$? Z7 71+: H3> lR  Rk >3H :+17 9X  ib9@R'))'R@9dg  8d< +$;)01):$* \570+9 F3= kQ  Sj  =3F 9+077Y  >$,.a.,$? Y770+9 G3= kR  Qk =3G 9+079W     > h`9@Q'(('Q@9bf  7c<+$:)/0(:$+HH#:.'W4,CEH@,4W'*>&DL:Z##KGW,f ',;[;;+*Q--}KOW*AA*WSGu5-U&+;;[;,)  '+;[<>**Q--}KNW+@@-USFu5-S(+;>Y;+* !67654'&"327632#"'&'&/#"'&5476=#"'&'&5476763232?'&#"#"'&'&5476763254'&5476276767632#"'&#"#"'&#"327676%32767654'&'&#"#"i/)F)/,UK:M $\/8E(5>H6-EFJA-5H;8)D7.\# L;KU,*UK;K #\.7F'5>H5-DE-6H<7*C8/\$ M:K U+:6-21 4 $:<;$ 4 22-6 O;(A7##7A(; !*:#.#;&Rm!CcJMU)??,RMJcCoS%9#.#;)!  );#-$:'Qn!DcIMU*??*UMIcD oS%;#.$:* f /D;;D/ $i"276767654'&'&'767632#"'#"'&'&'&'#"'&'&'&5476767#"'&'&'&5476767632&'&5476767632o00'))'00o00'))'0]0+)*+%# #+%0%##&&.0%+%   #%'.0$,#0%-# #%'.0$.  #%'-1$,#$%*/0961/*%%*/1690/*%) "*&0-(%$$$)-0&*!&"*!$$)-0&-#%(-0&*"" (-0&*"$$(./& n%#"'&'&'&5476767#"'&'&'&5476767632&'&54767676267632#"'#"'&'&'&27654'&'&'&"67&'&'&'276767&54767'&'&#"276767654'&/?676767654'&'&'&#"h &,&1/(&#!$&1%-$!&$/'.)2$-%c%-$2-*++&$!$-%1&$!#&(/1&,& =s0 9 55%R 9 !_  , 9 R%5s  _!#'"+'0/)&$%%).2'+$ * '1.*%%%%*.1' * "+'2.)%%$&)/0'+"'#L% %L %#M L:2(&6  _ M#%   6&(2: -[3b &'#"'&'&'&547676763267'&#"327%327676764'&'.#"7632#"'%&'&54767676324676762676322##"'&'"'&'.5#"'&'&'&54767"'&'&'&54767676&'&'&'&'&'67676?&'32767677676765&'&'.#"7676767&'&'&/326767674'&'&'67'&'&'&#"67'&'&'&'67676767"276767654'&'&'"'&'&'&54?&'276767654'7654'&'&'&"67'&547676762    (  b  (       #!"G"!# * " ' ## G!""  '  Y m    ( y   ( O k  w  m Q (  O (     ? ?   + / L* / *   +. M+ .*   !!!! '? ?' "#& #'"!!  '? ?'  !"!  $&  m P    O        m     y    O k         b       %j<\l"276767654'&'&/2#"'&'&'&47676762#"'&'&'&54767676% %-[''!  !''[&( !! (TB39)+,+76?A3:(+,+76>tjeVT,++(XRiiuskdVT,**(XQijtuz"z!uv!z"z#&(,-''""''-,(&#e)*:6?;97,+)*97z88,+,*UThgyricYT+,,*USigtvjbZR-,zvvz"z vv!z29"327632#"'&'&/#"'&5476=#"'&'&5476763232?'&#"#"'&'&5476763254'&5476276767632#"'&#"27654'&%&'&#"327676%327632 654'&'&#"#"i"(-+S I9K #Y.6C&4<F4,CDH?,4F96(B5-Y" K8IS*)RI8J "Y-5D&3<F4,CC,4F:6(A6.Y# K9I R*"(-62 #9~3 #9; 01+56 00,5`%;G,A $.?'!3&@!*Yx$ ImPT]-EE0ZTPmI "zZ)!?&3!'@-$ #,A'!2'?!*Yx$ImQT\.EE.\TQmI#yZ)!A&2"'?.#~&41%%14>3t-3>41%%14>3f^CC^B%@#@@%@#-4>41%%14>4-3>41%%14>3+  V  ++  V  !r +?Sg"&46277''"'&'&476762"'&'&4767622"'&'&4767$2"'&'&4767eeeBABA#U##U##U##U#V%**%V&**KV&**&V%**~ffeAA$AAV%**%V&**V&**&V%**#U##U##U##U#  &3@MYam+%5%32476;#"'&'?632&54?#"632/&54#"/72#547"&462"'&=3?_?6 6  6] 6'?&M&C_CC_?&M&< 'L&&L'!6 6^6!6 >_CC_D<>"l267632%632#"'%3#"'&'"'&547#"'&54727%#"'&47632%&'&54763&5476h!#;'&1'h 9##8)'1!, ;#A#; '&1')8##9 h'12;# 4%.&! 6 = 6%".% 3 3 G%.56 = 6 %".G 4 $8 ! 54."#"54$32632#"_ ɀ~~a>E  %!#!3!p EE?p9E=V %!%!35!cE:d FF8 %!!![:F:\;[0q %!!7!N]<N;)G+t  ,o9; #q !rQk!k`!733}b>v!#7#)iC~#jj##kk#g]jOS2#"327676765#"'&546;57!##"'&'&'&54767676%#     42;%-n`Ԯrr#26A@:V7:$)&7.Yq   % $.277g[(dVDQ49%*,04?()-#52&'&547676762"'&'&'&5476767hc"$njln(Lfe*+$$$$+*e*+$%%$+! #'(*dRjjSc*('!"%*,20,+%""%+,02,*%"%C&'&547676762476767622"'&'&'&5476767hcn(%X%&&&W%(nؖe*+$$$$+*e*+$%%$+,Dj*('(&,,&('(*kC"&*,11,*%##%*,11,*&".i%%&%&54767676247676762hhÔ*(42u24)(()42u24(*i\=97,*+*96@@69*+*,79=Zr_'#"'&'&'&547676763"'&'&'&5476767632_dA=;0-/.=:DD:=./-0;=Abx1.=8DC9() 1F="%".4"tNa5&$4! /.r<@6B2L_0>Q#kI|"rz7&)?),%=^K=.C26F@13.!9+cM313N676 547&'&327#"'#536767&'&'&5432&5476323254'&543253%5@26`', =NR6#!vWR>4 2:O t51"".1&X.RO A5ȏ )T/186,FAS :#(=:tA0 9SD 'A#5}11BO9 "'&'&'&547676763"3ᗊpm8884qlYTN! !C@RP]e:6pltm9:'62~~jf77 5276767654'.'4]PR@C! !NTYlq4888mpe'67fj~~27&:9mtlo7:fkR !&547jljjlyyxzQqpnc$!!676n wu;;vi43f$lcC}U# 3tD}U 3 DutV.! !JV. ! JA! !m^\GHB ! ^^HHv!'7DWWWW|'7'7WWbW>W^$#"&=4&+5326=46;#"3xMe,,fLx1d=AOOA=dƂ׈ihDŽOߍOi(326=467&'&=4&+532;#"+5nCFVU$#Cn5BB*)p//oTBB¥P⎁AAPDBۇ45iDCS/~ #!5!3}t]} 7%d^=]d>S~5 /%0~##t] '-f\=]d]>-!'7!. (``I)=2"&'&'&5476?!".'&47>3!'&'&54767>2 '!  `!!  !' ,&   &   S~&!5! F78-x!5!5 V(Mr6u #3#3#3!!5 鴴ZZ---I(,,,,S~  55!#3#3#3F9UU**b]^bUUUS~!!5 F7.`tq!%  qR{V$%! S%@{V t%226=3!5 5!"'&'&'&6  $hI$  h$   6<47676763!5 5!"6  $hI$  $   $O!! e 6n55!lMlTwccwekl!5!!53 ' !_[y"kd""e/l5!!53 ' !_["/d""5 !73#57!%!6UcGjbzbdǩ""ap 5!'53#'!!!7%acߎA[؁(ZqZ{{{ĒҒ}TM %'!'!53 !;qKRnKa26wwIw22wT}> 3#5!7!!! ZQtZQ0L>ssjLK2Nu '!53#'5!'7! !pSn%R&%Ua2wKJ,Lw22w)1 '7!573#5!7! !r&j&St&SpWl6qM,LLyy77y@!6767632#"'&'&'!  6IYZgb^UMI%&&"LF\Zfc^UM3!t:6I&&&#LHZZhc\UMH'&&#L2<tt XNy "&*.37#37#37#37#5'!!55!!3'#3'#3'#3'#r+qr*rr+rr+rV{{*q+*r*+r++r+9Ɔ\]t] 7&#"7'7 #%5#t69.wZY96t".*X/S~k 55!5!!7'!nnUVGG8:ȏu\j '327'' #395t".Y/Y"u69.xXXN2%&#"6767&'&"67632&'&547676767}:"  s %*&*(&"!#!"O>>;*E/4767!"!47676763"'&'&'&5!3!&'&5v  5 $ %% $  H vgMME %!#"!% EMu\2&'&'&'&54767#"'&'276?&'&'32\":  #'$'$#Y@I:86s6::I  #&'#'" X  :5*+B67"'&'&'&547676$47676762"'&'&'%&'&'&547676762$[ /  H =a=   / ZI=X  q> d(*c     XJn.676767632#"'&'&'&%&'&54767&'&54765 #&+*1)F-Y)) .EOO/3S>>S&/ #$))%#]]#%))$#&e"'&'.54?654'&'&'&+"#!".4?64/&4676763!2;276767654/&54676762 I ]]I    Q      Q  %eg"'&'.54?654'&'&'&+"#!".4?64/&4676763!2;276767654/&54676762 GKa u~iKG E     2 +#76767&'&/3#6767!5!!5!&'&'g?j7R=y66y=R6k?VO S+ +Sd _8=eyu'&utj3235huFX^"!ݺh^bNm/>ZUb=*(DV\BAL89DEnY1X;YTBEbf@103# qf?Q@ aa1<20KTX@878YKTK T[X@878Y3#%3#?Zk10K TX@878YKTX@878Y@&  //// //]]3#@   99991<<990KTKT[X@878Y@t        !      ]]'.#"#4632326=3#"&d9 #(}gU$=19#(}fT"<9! 2-ev 3)dwyi10K TX@878YKTX@878YKTX@878Y@ //]#1Ś7]@ 91<90K TX@878YKTX@878Y@ //, ]3#'# ӌ7i@ 91290KTX@878YK TX@878Y@ //*//]373 ӌ Zj@ 9910'3$ll/ 3>323. /w dRSaw 6978w{z/ @ PP120332673#"&/w dRSaw 6978w{za103#X@ 1<203#3#\zy#!#uŚŚf$(#5476?>54'&'&56763#7:)*%>8'9@B9Q[~CG=9. bEBTY;X1I*%#D>"Y`LAB\VE'*=='q=&q=&q?X'b?X'b='#q="',q'q7X&`'>7&X&b7&s7L&V&,',/X'b/['e/'L7g'LWNk'L`D#_<22?wm?hR!9\XdffXXX%fmVuu/9%fZH{{{mjdLhX%?wXd=+XBFjX%%%%%%uuuuu%){{{{X/hh%%%{{{{{{{f{f{f{f{FmLuuuHj j///%h%0<<^u?3An1mu,V7xv//'J}}9%uz)uu=/u%hjxx/7xzz8{yffX(gggE    zz}v_AGGf}i^6w#6AAQ0^^))$$=/VX$.Z^)=/?VX)"V//yysb^_s?V$U))//=X/UU?p6%%u%Vux/%uuJ%F63F 6DtP3KYE633Er"p"m93u`!Y3uVUm"h%!Vu/hB:r A<+}i{K=hcLr}PhN{{ AhUb/%hLK%%){uzuzK}uuuhhhhhhAh)+?+DDGGG00NNGH8%Z:W::GLZ%#{GWQ:NWaGZBaHFcUU~%%TT>::ZwLE`^M2:{{{VmmVm``//9d%h{{u%h%hFFFFFFFF%%llMM@@cc66'33333333@EEEEEEEEEfFF633EEFFFFFFFF%%llMM@@ccEEEEEEEEfFFFFFFF%%%['/66333333%%[p?EEEEEJdd??PZ!!= ?I=;0A=XBF ?I=;0%T J% BBBBBYYBBBBBBBBBABBq?QQ2BXXBBBBGB*BB*B*BBBBBBBBBBBBBBBBBBEEB*BBBBBBBBXf+;)}}?5XJWXXXXXXXXXXXXXXXWXXXXXWJJXXXXXXXEXXXXXXXXVVVVWXXXXVVVVVVVVVXVVVVVVXXXXXXXXXXXXXXOOOOOOOOOPPPPXXXVXVVVVXXXXVVVVZZXaGX|h2    xxxxxxx||iEiiDDu777777?aa"2"Y::;+6.ocN8/&/// "N`ya7g!!!!GCL54=/U28Y^CVpj6gv2 1.rjD7`./<KD$>K--9.7.P<<<<<<....RRs'J6*R*"..:=4%=?D-W&W;%J@3@V90~0G+%(C(#(=(.6W0$2$017+!$%2 02)!"$E=80+Qg.rA1fnCDStSt-IS-6SS`{{66O6ee5a}T2)XtSuN*u5&%2uu##R?y77//Xf===??==7777///7NLLLL,x 8d x ( d  4  ,(PD  !!T!!""@"#p$$%%&8''p'(P)L)*+ +,,,-P.<./ /0123X4$4T5$55567L8d989::<<=`==?,?X?@<@ABBCC@CDDEE8EXExFlFFFGGHH|I4ILIdI|IIIIJJ(JJKK8KhKKL@MDMhMMMNNO|OOOOOP Q\QtQQQQQR R0RPSdS|SSSTT4TUUUUVV4VVWW(W\WtWWWWWXXX4XLXdX|XXYpYYYYYZZZ0ZHZ`ZxZZZZZ[[ [P[\\\\]]4]`]x]]]^^_h____``aa4aLada|aab bbbbcc(c@cXcd|ddde e8ePeggg0gHg`gxggggghh h8hPhhhhhi$iij j<j\jjjjjkk(k@kdkkkkkll,lDl\ltlmXmhmn$no oppptpq,qrrprs,stt|tu4uuv,vtvw(wlwxx4xLxyyz z{{x{{|X||}4}P}l}~,~~(pH Pl $<Tl $D\t, `xllhd T,dp84|TLT` x@p@$D4PP@$TdP(L(P0x$`p8PT,@8Th|dlD0h0Xxˆ˜¨¸P`pÀÜ$@hČĨļ8|Ÿ,HxƨƼ 0LpǸ0@P`|ȔȰ hɜ(hʈʤ,D\tˌˤ˼dt̄̔4DTͬͼ,<L\Є,D\tьѤѼdӸ0t(hxDT֠t8؜(لH`xڐڨL8Phdl@ߴ0, \`xPh @Phx4D<L\lpL\hD8Dl,<t0@P|Dp\Xp` 8P<p,D\Tl(p(8Ph,t$x  0 @ P h         0 @ P h      $ 4 L d |       $ < T     (`<pxp,ptLL|D4\l0(`(\ P !!!""#X#$ $t$%H%p%%&L&''0'H'`'x'''''(( (8(P(h(((((())()@)X)p)))))***0*H*`*x*****++ +8+P+h++++++,,(,@,X,p,,,,,---0-H-`-x-----.. .8.P.h......//(/@/X/p/////00000H0`0x0000011 181P1h11111122(2@2X2p2222233303H3`3x3333344 484P4h44444455(5@5X5p5555566606H6`6x66666777(787P7`7x77777788 888P8h88888899(9@9X9p99999:::0:H:`:x:::::;; ;8;P;h;;;;;;<<(<@ >$><>T>l>|>>>>>?? ?8?P?`?x?????@@@4@L@d@|@@@@@AAA4ADA\AtAAAAAAB B$B4BLB\BtBBBBBBBBBBBBBBBCC<CdCCCDDXD|DE4EEF FFGGXHIJJLJhJ|JJJKXKL0LLMNNdNxNNNNNNOOO,OPQ`QRPRSSSSSSTT0TPTpTTTTUU0UHUxUUVVXVVWW,WXWWXY8YYZZXZZ[[P[[\\](]^_`,`p``aaPaabLbcc|d$ddee@eheeeffTffgDgghhXhhixijj\jjk8kkllTllmmhmnn`nno<oopp@p|ppqLqqr\rs$sxsttPtu@uuv$v|vwwwwx<xytyyz{ {|| |\|}}@}t}}}~0~l|d Pp(\X|(LT(H,(llP PTd00|LTxH@PX,XPhXPP,`0\L<4Ttl(`|@`|4p0Lh(d$p$Hl°<\|àHpĠDpŜ HpƜDpǘǼ<dȐȼH|ɰLʄʼ,`˔0T̬̀(T̀ʹ @lΘ$Xψϼ0dФH|Ѭ4x@pӤ <XtԐԬ$Lp՘լ8Tp֌֨4Pdٰ8Plڈڜڴlۄ8l|8dD`4`|0Lx T$x<tt0(X dDpHt@|p\$Lx` p p88lH4 |      x@8 HL 4t 0 !d"#$P$%&'$'(d()l)*0*+|+,L,-<-./t/001d2(2356789;TX>?X?@@@AAB(CHD,DlDE,EEF,FGHdJ\K@LPMxNdOtPQpR0S4TdUVW<WXdY\Z\ ]^|_4_`(`D`l`a abtcdedefgiplmn4nnnprPt wyl{{|@~<HTH8| |d0P|t@,@@XXd0,Pdp8,Hd\XHð,T|ĤDl@pƜ$hȸ@dɸ 8dʨ<ˈ t<0xxдѐ,XԌ$`Հլ(Xֈָ׌ؤ,ټ`ܜݬlޘߌߤ߼4Ld| $<Tl +k@W_Ji +a  4  (  _  n (  " "= :s & hCopyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain DejaVu LGC Sans MonoDejaVu LGC Sans MonoBookBookDejaVu Sans MonoDejaVu Sans MonoDejaVu LGC Sans MonoDejaVu LGC Sans MonoVersion 2.10Version 2.10DejaVuLGCSansMonoDejaVuLGCSansMonoDejaVu fonts teamDejaVu fonts teamhttp://dejavu.sourceforge.nethttp://dejavu.sourceforge.netFonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. http://dejavu.sourceforge.net/wiki/index.php/Licensehttp://dejavu.sourceforge.net/wiki/index.php/LicenseZ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ sfthyphenAmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandicLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongsuni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191uni0193uni0194uni0195uni0196uni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEUhornuhornuni01B1uni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BBuni01BCuni01BDuni01BEuni01C0uni01C1uni01C2uni01C3uni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DFuni01E2uni01E3uni01EAuni01EBuni01ECuni01EDuni01F6uni01F8uni01F9 Scommaaccent scommaaccentuni021Auni021Buni0221uni0224uni0225uni022Buni022Duni022Euni022Funi0231uni0232uni0233uni0234uni0235uni0236dotlessjuni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240uni0241uni0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni0259uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269uni026Auni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02AEuni02AFuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02BB afii57929uni02BEuni02BFuni02C0uni02C1uni02C8uni02CCuni02CDuni02D0uni02D1uni02D2uni02D3uni02D6uni02DEuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9 gravecomb acutecombuni0302 tildecombuni0304uni0305uni0306uni0307uni0308 hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322 dotbelowcombuni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0358uni0361uni0374uni0375uni037Auni037Etonos dieresistonos Alphatonos anoteleia EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni03D0theta1Upsilon1uni03D3uni03D4phi1omega1uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FAuni03FBuni03FCuni03FDuni03FEuni03FFuni0400 afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061uni040D afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097uni0450 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109uni045D afii10110 afii10193 afii10050 afii10098uni0492uni0493uni0494uni0495uni0498uni0499uni049Auni049Buni04A2uni04A3uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B2uni04B3uni04BAuni04BBuni04C0uni04C1uni04C2uni04C3uni04C4uni04C7uni04C8uni04CBuni04CCuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8 afii10846uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni1D02uni1D08uni1D09uni1D14uni1D16uni1D17uni1D1Duni1D1Euni1D1Funi1D43uni1D44uni1D45uni1D46uni1D47uni1D48uni1D49uni1D4Auni1D4Buni1D4Cuni1D4Duni1D4Euni1D4Funi1D50uni1D51uni1D52uni1D53uni1D54uni1D55uni1D56uni1D57uni1D58uni1D59uni1D5Auni1D5Buni1D77uni1D7Buni1D85uni1D9Buni1D9Cuni1D9Duni1D9Euni1D9Funi1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5uni1DA6uni1DA7uni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1uni1DB2uni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1E0Cuni1E0Duni1E0Euni1E0Funi1E12uni1E13uni1E24uni1E25uni1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Cuni1E3Duni1E3Euni1E3Funi1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E4Auni1E4Buni1E57uni1E5Auni1E5Buni1E5Cuni1E5Duni1E61uni1E62uni1E63uni1E6Cuni1E6Duni1E70uni1E71uni1E7Euni1E7FWgravewgraveWacutewacute Wdieresis wdieresisuni1E8Euni1E8Funi1EB8uni1EB9uni1EBCuni1EBDuni1ECAuni1ECBuni1ECCuni1ECDuni1EE4uni1EE5Ygraveygraveuni1EF8uni1EF9uni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni2010uni2011 figuredash afii00208 underscoredbl quotereverseduni201Funi2023uni2031 exclamdbluni203Euni2047uni2048uni2049uni2070uni2074uni2075uni2076uni2077uni2078uni2079uni207Funi2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089uni20A6Eurouni20B4uni20B5uni210E afii61352uni2126uni212Auni212Bonethird twothirdsuni2155uni2156uni2157uni2158uni2159uni215A oneeighth threeeighths fiveeighths seveneighthsuni215F arrowleftarrowup arrowright arrowdown arrowboth arrowupdnuni2196uni2197uni2198uni2199uni219Auni219Buni219Cuni219Duni219Euni219Funi21A0uni21A1uni21A2uni21A3uni21A4uni21A5uni21A6uni21A7 arrowupdnbseuni21A9uni21AAuni21ABuni21ACuni21ADuni21AEuni21AFuni21B0uni21B1uni21B2uni21B3uni21B4carriagereturnuni21B6uni21B7uni21B8uni21B9uni21BAuni21BBuni21BCuni21BDuni21BEuni21BFuni21C0uni21C1uni21C2uni21C3uni21C4uni21C5uni21C6uni21C7uni21C8uni21C9uni21CAuni21CBuni21CCuni21CDuni21CEuni21CF arrowdblleft arrowdblup arrowdblright arrowdbldown arrowdblbothuni21D5uni21D6uni21D7uni21D8uni21D9uni21DAuni21DBuni21DCuni21DDuni21DEuni21DFuni21E0uni21E1uni21E2uni21E3uni21E4uni21E5uni21E6uni21E7uni21E8uni21E9uni21EAuni21EBuni21ECuni21EDuni21EEuni21EFuni21F0uni21F1uni21F2uni21F3uni21F4uni21F5uni21F6uni21F7uni21F8uni21F9uni21FAuni21FBuni21FCuni21FDuni21FEuni21FFgradientelement notelementuni220Asuchthatuni220Cuni220D asteriskmathuni2218 proportional orthogonalangle logicaland logicalor intersectionunionuni222Cuni222Duni2238uni2239uni223Auni223Bsimilaruni223Duni2241uni2242uni2243uni2244 congruentuni2246uni2247uni2249uni224Auni224Buni224Cuni224Duni224Euni224Funi2250uni2251uni2252uni2253uni2254uni2255uni2256uni2257uni2258uni2259uni225Auni225Buni225Cuni225Duni225Euni225F equivalenceuni2262uni2263uni2266uni2267uni2268uni2269uni226Duni226Euni226Funi2270uni2271uni2272uni2273uni2274uni2275uni2276uni2277uni2278uni2279uni227Auni227Buni227Cuni227Duni227Euni227Funi2280uni2281 propersubsetpropersuperset notsubsetuni2285 reflexsubsetreflexsupersetuni2288uni2289uni228Auni228Buni228Funi2290uni2291uni2292 circleplusuni2296circlemultiplyuni2298uni2299uni229Auni229Buni229Cuni229Duni229Euni229Funi22A0uni22A1uni22CDuni22DAuni22DBuni22DCuni22DDuni22DEuni22DFuni22E0uni22E1uni22E2uni22E3uni22E4uni22E5uni22E6uni22E7uni22E8uni22E9houseuni2308uni2309uni230Auni230B revlogicalnotuni2311uni2318uni2319 integraltp integralbtuni2325uni2328 angleleft anglerightuni237Duni239Buni239Cuni239Duni239Euni239Funi23A0uni23A1uni23A2uni23A3uni23A4uni23A5uni23A6uni23A7uni23A8uni23A9uni23AAuni23ABuni23ACuni23ADuni23AEuni23CFuni2423SF100000uni2501SF110000uni2503uni2504uni2505uni2506uni2507uni2508uni2509uni250Auni250BSF010000uni250Duni250Euni250FSF030000uni2511uni2512uni2513SF020000uni2515uni2516uni2517SF040000uni2519uni251Auni251BSF080000uni251Duni251Euni251Funi2520uni2521uni2522uni2523SF090000uni2525uni2526uni2527uni2528uni2529uni252Auni252BSF060000uni252Duni252Euni252Funi2530uni2531uni2532uni2533SF070000uni2535uni2536uni2537uni2538uni2539uni253Auni253BSF050000uni253Duni253Euni253Funi2540uni2541uni2542uni2543uni2544uni2545uni2546uni2547uni2548uni2549uni254Auni254Buni254Cuni254Duni254Euni254FSF430000SF240000SF510000SF520000SF390000SF220000SF210000SF250000SF500000SF490000SF380000SF280000SF270000SF260000SF360000SF370000SF420000SF190000SF200000SF230000SF470000SF480000SF410000SF450000SF460000SF400000SF540000SF530000SF440000uni256Duni256Euni256Funi2570uni2571uni2572uni2573uni2574uni2575uni2576uni2577uni2578uni2579uni257Auni257Buni257Cuni257Duni257Euni257Fupblockuni2581uni2582uni2583dnblockuni2585uni2586uni2587blockuni2589uni258Auni258Blfblockuni258Duni258Euni258Frtblockltshadeshadedkshadeuni2594uni2595uni2596uni2597uni2598uni2599uni259Auni259Buni259Cuni259Duni259Euni259F filledboxH22073uni25A2uni25A3uni25A4uni25A5uni25A6uni25A7uni25A8uni25A9H18543H18551 filledrectuni25ADuni25AEuni25AFuni25B0uni25B1triagupuni25B3uni25B4uni25B5uni25B6uni25B7uni25B8uni25B9triagrtuni25BBtriagdnuni25BDuni25BEuni25BFuni25C0uni25C1uni25C2uni25C3triaglfuni25C5uni25C6uni25C7uni25C8uni25C9circleuni25CCuni25CDuni25CEH18533uni25D0uni25D1uni25D2uni25D3uni25D4uni25D5uni25D6uni25D7 invbullet invcircleuni25DAuni25DBuni25DCuni25DDuni25DEuni25DFuni25E0uni25E1uni25E2uni25E3uni25E4uni25E5 openbulletuni25E7uni25E8uni25E9uni25EAuni25EBuni25ECuni25EDuni25EEuni25EFuni25F0uni25F1uni25F2uni25F3uni25F4uni25F5uni25F6uni25F7uni25F8uni25F9uni25FAuni25FBuni25FCuni25FDuni25FEuni25FFuni2600uni2601uni2602uni2603uni2604uni2605uni2606uni2607uni2608uni2609uni260Auni260Buni260Cuni260Duni260Euni260Funi2610uni2611uni2612uni2613uni2614uni2615uni2616uni2617uni2618uni2619uni261Auni261Buni261Cuni261Duni261Euni261Funi2620uni2621uni2622uni2623uni2624uni2625uni2626uni2627uni2628uni2629uni262Auni262Buni262Cuni262Duni262Euni262Funi2638uni2639 smileface invsmilefacesununi263Duni263Euni263Ffemaleuni2641maleuni2643uni2644uni2645uni2646uni2647uni2648uni2649uni264Auni264Buni264Cuni264Duni264Euni264Funi2650uni2651uni2652uni2653uni2654uni2655uni2656uni2657uni2658uni2659uni265Auni265Buni265Cuni265Duni265Euni265Fspadeuni2661uni2662clubuni2664heartdiamonduni2667uni2668uni2669 musicalnotemusicalnotedbluni266Cuni266Duni266Euni266Funi2670uni2671uni2672uni2673uni2674uni2675uni2676uni2677uni2678uni2679uni267Auni267Buni267Cuni267Duni267Euni267Funi2680uni2681uni2682uni2683uni2684uni2685uni2686uni2687uni2688uni2689uni268Auni268Buni2690uni2691uni2692uni2693uni2694uni2695uni2696uni2697uni2698uni2699uni269Auni269Buni269Cuni26A0uni26A1uni26B0uni26B1uni2701uni2702uni2703uni2704uni2706uni2707uni2708uni2709uni270Cuni270Duni270Euni270Funi2710uni2711uni2712uni2713uni2714uni2715uni2716uni2717uni2718uni2719uni271Auni271Buni271Cuni271Duni271Euni271Funi2720uni2721uni2722uni2723uni2724uni2725uni2726uni2727uni2729uni272Auni272Buni272Cuni272Duni272Euni272Funi2730uni2731uni2732uni2733uni2734uni2735uni2736uni2737uni2738uni2739uni273Auni273Buni273Cuni273Duni273Euni273Funi2740uni2741uni2742uni2743uni2744uni2745uni2746uni2747uni2748uni2749uni274Auni274Buni274Duni274Funi2750uni2751uni2752uni2756uni2758uni2759uni275Auni275Buni275Cuni275Duni275Euni2761uni2762uni2763uni2764uni2765uni2766uni2767uni2768uni2769uni276Auni276Buni276Cuni276Duni276Euni276Funi2770uni2771uni2772uni2773uni2774uni2775uni2794uni2798uni2799uni279Auni279Buni279Cuni279Duni279Euni279Funi27A0uni27A1uni27A2uni27A3uni27A4uni27A5uni27A6uni27A7uni27A8uni27A9uni27AAuni27ABuni27ACuni27ADuni27AEuni27AFuni27B1uni27B2uni27B3uni27B4uni27B5uni27B6uni27B7uni27B8uni27B9uni27BAuni27BBuni27BCuni27BDuni27BEuni27E0uni29EBuni2B12uni2B13uni2B14uni2B15uni2B16uni2B17uni2B18uni2B19uni2B1A afii10064uniFFFD dlLtcaron DiaeresisAcuteTildeGrave CircumflexCaron fractionslash uni0311.caseBreve Dotaccent Hungarumlaut Doubleacute thinquestion uni03080304 uni03040308 uni03070304 uni03080301 uni03080300 uni03040301 uni03040300 uni03030304 uni0308030C uni03030308 uni030C0307 uni03030301 uni03020301 uni03020300 uni03020303 uni03060303 uni03060301 uni03060300 uni03060309 uni03020309 uni03010307]A GA% } % 2  %%@Y}2}Y&Y@&//2G@Gddkߖږ؍ }:Ս :  ϊ̖ˋ%}Ś   ]%]@%AA dd@2(-}-d   ..A]%]@%%%A  %d%BSx~}~}}|{zwvut uu@t tss@rqponSonm(nSm(lk2ji2hgfedcbcbba`_^Z ^]d\[Z [Z YXWVUU2TSRQ}PONM-MLK(JIJ7ICIHEHGCGdFEFEDCD7CBCC@@ BABB@ A@AA@ @? @@@ ? ? ?@@d>=-=<;(:9B9d818K76-65K404K3032B21-10/-/. .-,--@ ,,,@@+*%+* *%):)('&%B%E$#""! -!} -KBBF-B-B-B@  @   @    @  @7    -:-:-d++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++J<       !! #" >> ?? @@ CA ^^ __ `` aa bbcc gdkh qm srutvv zx {{} ,( 8/ >    rr        0 2133 44 95 @:KBOLRQ V _ `` aa bb cc kd ll mm n micropolis-activity/res/dejavu-lgc/DejaVuLGCSans.ttf0000664000076400007640000154754010724145723022735 0ustar simcitysimcityPGDEF>?\GPOSHLGSUBoN OS/2cWVcmap댥XD2cvt i9]xfeat_x@fpgmq4vj_gasp`d glyfU`pDJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz     " ( . 4 : @ F L R X ^ d j p v |     $ * 0 6 < B H N T Z ` f l r x ~      & , 2 8 > DL\/.*s''}srT{{{;j{//{{}{{o{{'{}{^{Gb{`{'{{}}{Q{{{}{\LX;\//'{ssr`{w'{{{./'}{r`{T{{y{c{R{R{@{@{@{{{jj{{b{b{}{/{{{{{{{{}{{{3{33{^{a{p{{;{Q{'{{{}{}{^{G^d{{{{::k{a{H{q/{{j:{G{ J{~^}@{E{}{{{{E}{p{{t{}{j{{{b{{^{~~}{t{^{{{/{{{HO'oYNsT{a{E{{{{@{{t{{{{}{{{{T{`kb{{K{{{{{{{{{{'{//{{{_{{{{sK{{{{E{^{z{TTz@{{y{tgtb{{^{**}T{{^{q{'}^{{{R$= D]$>?ABCDF  GI55JBBKHILPPNRVOX]T__Zff[ij\lp^txc{{hij nJvLm;SYZ^^``bbddlly|~ ),0136&&8((955:BB;MM<SS=WW>?@CGHIJKLMO u uP Q b e % %g / /h  "# '2 $*06<BHNTZ`flrx~{{{{{{{{{{{{{{{{{{orr{r{{{{{{{{{{{{{{{{{{{{{{{{{{{  $*06<BHNTZ`flrx~ &,28>DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntzL\/.Rs''}srTf;RR}RR'^Gb`R}}R7R/z`RR.RR'}r`RTTRTcRR@@@RjRjRbRb}RRRRRRRR}R555RRaRt;Q'RRRRRRR}}^G^dRRR::RkaHRR_R:RGR R~R}^TTXgX^T^'}^R%$= D]$>?@A  BTTCYYDllEvvF{{GH KJSLm<<BB(( u u  % % / /  !" &,28>DJP T R  !" &,28>DJPn ,Z`flrx~ &,28>DJPV\hhh=DhhhDhh=DD  # $ %  #. &,28>DJPV\bhntz{{{{{{{{{{{{{{{{{{{{{{{{{{{L "FLRX^djpv| ''='tt ;888 - T !    $*06< DFLT,arabFNV^fnv~ x*H.dB<<<,>LM**__ R$=IIKKLMOO      ""$$&&((**,,..0022446688:;==??AAHHRRTTVV**__&   dpz "(.4:@FLzvqj))/--.-20010 r-0 Q~2 ( IO IL I WIV O LI WA(:FPZfr D"7 CB"$;V0(/FXR")567DFZD&.6>FNV^fnv~?????~?~? "??&.6???? "???\[]YZ_^/5<BJP  D   % /-O % / -DO \[]YZ_^/5<BJP LM*_  33f P PfEd@ m,~NSX]bu~#.[jx{EMWY[]} ' ^ q !!! !!!!!!"!$!'!+!.!2!5!@!I!K!"="""""""### ###!#%#*#}##$#$i&&'' '''K'M'R'V'^'''''())*****+,l,w_ QW\`tz&0]w{ HPY[]_ 0 p t !!! ! !!!!! !$!&!*!.!2!4!;!E!K!S!"A""""""###### #%#(#}##$"$`%&''' ')'M'O'V'X'a''''())** *}**+,`,t_yd$  |xwpeb`^\[SOMJIE?964S~wclc\Ur    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}byqz5fqu-J3T99NR7s`s3VV9s3D{o{RoHT3fs +b-{T#\q#H99`#fy```{w``b{{Rffw;{J/}oo5jo{-{T7fD)fs04 <, %Id@QX Y!-,%Id@QX Y!-,  P y PXY%%# P y PXY%-,KPX EDY!-,%E`D-,KSX%%EDY!!-,ED-,%%I%%I` ch #:e:-ff@ /10!%!!fsr)5 5@ K TX8Y<2991/0 P ]%3#3#5qeB@KTKT[X8Y1<20@0 @ P ` p ]#!#o$++`@1      91/<<<<<<<2220@   ]!! !3!!!!#!#!5!!5!T%Dh$ig8R>hggh`TifaabbNm!(/@U" '&( /)/))/B" ) *!#*- ) " & 0K TX8YK TKT[KT[X@8Y<<<1/299990KSX99Y"#.'5.546753.'>54&dijfod]SS\dtzq{---@A$*.U# jXV`OnZXhq) #'3@6$%&%&'$'B .$ &($4'!%   ! + 1 4K TK T[K T[KT[KT[K T[X18Y9912<0KSXY""32654&'2#"&546"32654&%3#2#"&546WccWUccUVcbWWcd1Zܻۻa ۻۼ 0@      !         B  (('+'$ .  .'.'!!199999991/9990KSX99999999Y"2]@ " ) **&:4D ^YZ UZZY0g{ "-  ' (   2'') #**(/2; 49?2J LKFO2VZ Y UY\_2j i`2uy z 2229]]3267 >73#'#"5467.54632.#"[UԠ_I{;B h]hΆ02޸SUWDi;#QX?@Yr~YW׀c?}<$$/1oX3go7@ KTKT[X8Y10@ @P`p]#o+{ 7@  KTX 8YKTX @8Y29910#&547{>;o @ <99103#654<:=JN@,       <2<2991<22990 %#'-73%g:r:g:PrPbybcy #@   <<1/<<0!!#!5!-Ө-Ӫ--@ 1073#ӤR@d10!!d1/073#B-@B/9910KSXY"3#m #@  10"32'2#"  P3343ssyzZ @@B  KTX@8Y1/20KSXY"]7!5%3!!JeJsHHժJ@'B   KTKT[KT[X8Y91/20KSX9Y"@2UVVzzvtvust]]%!!567>54&#"5>32Ls3aM_xzXE[w:mIwBC12\ps(p@.    #)&  )KTKT[X 8Y99190@ daa d!]!"&'532654&+532654&#"5>32?^jTmǹSrsY %Đ%%12wps{$& Ѳ|d @   B    K TK T[X 8Y<291/<290KSXY"@* *HYiw+&+6NO O Vfuz ]] !33##!55^%3`d^@#    KTKT[X8YKTX@8Y190!!>32!"&'532654&#",X,$^hZkʭQTժ 10$& $X@$  "% " !%190@]]"32654&.#">32# !2 LL;kPL;y$&W]ybhc@B991/0KSXY"KTX@878Y@X9Hg]]!#!3V+ #/C@% '-'0 $*$ !0991990"32654&%.54$32#"$54632654&#"HŚV г "Əُattt$X@# %!"" %190@]]7532#"543 !"&2654&#"LK:lL>$& V\s[#@<21/073#3### %@  <2103#3#ӤR#٬@^M@*B$#29190KSXY" 5Ѧ`@ #<210!!!!^O@+B$#<9190KSXY"55//m$e@+$     &%K TX8Y99991/9990y z z ]%3##546?>54&#"5>32ſ8ZZ93lOa^gHZX/'eVY5^1YnFC98ŸLVV/5<4q L@2  L4307$7CM34( (+(I+*(I,=M<9912990K TK T[KT[KT[KT[XMMM@878Y@ NN/N?N]32654&#"#"&5463253>54&'&$#"3267#"$'&5476$32|{zy!orqp ˘s'6@   0210].# !267# !2'ffjzSb_^^_HHghG.@   2 99991/0`]3 !%! )5BhPa/w.,~ .@   21/0 ]!!!!!!9>ժF# )@ 21/0 ]!!!!#ZpPժH7s9@ 43 1990%!5!# !2.# !26uu^opkSUmnHF_`%; ,@ 8  221/<20P ]3!3#!#"d+9.KTX@8Y1/0@ 0@P`]3#+f B@  9 KTX@8Y991990@ 0 @ P ` ]3+53265M?nj @(B  291/<290KSXY"]@ ((764GFCUgvw    (+*66650 A@E@@@ b`hgwp  ,]q]q3! !#3wH1j%@ :1/0@ 0P]3!!_ժ @4  B    >  91/<290KSXY"p]@V   && & 45 i|{y   #,'( 4<VY ej vy ]]! !###-}-+3 y@B6 991/<2990KSXY" ]@068HGif FIWXeiy ]]!3!#j+s #@  310"32' ! ':xyLHH[[bb:@   ? 291/0@ ?_]32654&#%!2+#8/ϒs R@*  B     39991990KSX9Y""32#'# ! '? !#y;:xLHHab[T@5  B    ?  299991/<9990KSX9Y"@]@Bz%%%&'&&& 66FFhuuw]]#.+#! 32654&#A{>ٿJx~hb؍O'~@<    B %( "-"(9999190KSX99Y")])/)O)].#"!"&'532654&/.54$32Hs_wzj{r{i76vce+ٶ0/EF~n|-&J@@@1/20K TX@878Y@  @ p ]!!#!ժ+)@@   8AKTX8Y1299990]332653! ˮ®u\*$h@'B91/290KSXY"P]@b*GGZ} *&&))% 833<<7HEEIIGYVfiizvvyyu)]]!3 3J+D {@I      B     91/<2290KSXY"]@  ($ >>4 0 LMB @ Yjkg ` {|      !   # $ %  <:5306 9 ? 0FFJ@E@BBB@@ D M @@XVY Pfgab```d d d wv{xwtyywpx   []]3 3 3# #D:9:9+=; f@  1 ]@ /<20KBPX@   @    Y3 3 # #su \Y+3{@(B@@ 91/290KSXY" ]@<5000F@@@QQQe &)78@ ghxp ]]3 3#f9\ @BB K TK T[X8Y991/0KSXY"@@ )&8HGH    / 59? GJO UYfio wx ]]!!!5!sP=g՚oX;@CK TX@8YKTKT[X8Y210!#3!XB-@B/9910KSXY"#mo0@CKTKT[X@8Y<10!53#5oXޏ@ 91290 # #HHu-10!5f1@ D10K TKT[X@878Y #ofv{-{ %@'   #   E&22991/9990@n0000 0!0"?'@@@@ @!@"PPPP P!P"P'p' !"'''000 0!@@@ @!PPP P!``` `!ppp p! !]]"326=7#5#"&5463!54&#"5>32߬o?`TeZ3f{bsٴ)Lfa..'' 8@  G F221/0`]4&#"326>32#"&'#3姒:{{:/Rdaadq{?@  HE210@ ].#"3267#"!2NPƳPNM]-U5++++$$>:#qZ8@G E221/0`]3#5#"3232654&#":||ǧ^daDDaq{p@$   KE9190@)?p?????,// , ooooo ]q]!3267# 32.#" ͷjbck)^Z44*,8 Cė/Y@     LK TX @8YKTX 8Y<<991/22990@P]#"!!##535463cM/ѹPhc/яNqVZ{ (J@#  &#' & G E)221/990`***]4&#"326!"&'5326=#"3253aQQR9||9=,*[cb::bcd4@  N  F21/<90`]#4&#"#3>32d||Bu\edy+@F<21/0@  @ P ` p ]3#3#`Vy D@   O  F<2991990@ @P`p]3+532653#F1iL`a( @)B F 291/<90KSXY" ]@_ ')+Vfgsw    ('(++@ h` ]q]33 ##%kǹi#y"F1/0@ @P`p]3#{"Z@&   PPF#291/<<<290@0$P$p$$$$$$$ ]>32#4&#"#4&#"#3>32)Erurw?yz|v\`gb|d{6@  N  F21/<90`]#4&#"#3>32d||Bu\`edqu{ J@  QE10@#?{{   {  {]"32654&'2#"s98V{>@ GF2210@ `]%#3>32#"&4&#"326s:{{8 daaqVZ{ >@   GE2210@ `]32654&#"#"3253#/s:||:/daDDadJ{0@    F21/90P].#"#3>32JI,:.˾`fco{'@<  S  SB %( R"E(9999190KSX99Y"']@m   . , , , ; ; ; ; $( ( *//*(() )!$'      '/)?)_))))))]]q.#"#"&'532654&/.54632NZb?ĥZlfae@f?((TT@I!*##55YQKP%$78@  F<<2991/<2990]!!;#"&5#53w{KsբN`>X`6@    NF21/290`]332653#5#"&||Cua{fc=`@'BK TX@8YKTKT[X8Y91/290KSXY"@Hj{  &&)) 55::0FFIIFH@VVYYPffiigh`ut{{uz>]]3 3#=^^\`TV5` @IU U U U   B     K TKT[KT[KT[K T[X@8YK TK T[KT[X8Y91/<2290KSXY"@" 5 IIF @ [[U P nnf yy          %%#'!%""%' $ ! # 9669 0FHF@B@@@D D D @@VVVPQRRPS T U cdejejjjn a g ouuy}x}zzxy  { v } @/   y]]333# #V`jjj;y` C@F      B   K TKT[KT[KT[X@8YKTX8Y91/<290KSXY"@   & =1 UWX f vzvt        )&% * :9746 9 0 IFE J @ YVYYWVYVV Y P o x  /]] # # 3 dkr))`HJq=V`@C        B     K TKT[X @8YKTX 8Y9129990KSX2Y"@     # 5 I O N Z Z j        '$$  )( % $ $ ' ** 755008 6 6 8 990A@@@@@@@@B E G II@TQQUPPVUVW W U U YYPffh ii`{xx   e]]+5326?3 3N|lLT3!;^^hzHTNlX` @B K TK T[X8YKTX@8Y2991/0KSXY"@B&GI  + 690 @@E@@CWY_ ``f``b ]]!!!5!qjL}e`ۓ%$w@4 %   !  % $  C %K TX@8Y<<29999999199999990&]#"&=4&+5326=46;#"3>l==k>DV[noZVtsݓXX10#$@6%   #%#C %K TX8YKTX@8Y<2<9999999199999990&]326=467.=4&+532;#"+FUZooZUF?l>>l?VWstݔ1#@  1990#"'&'&'&#"5>32326ian ^Xbian ^V1OD;>MSOE<>L5 b@ <2991/0K TX @ 878YKTKT[KT[X  @878Y P ]#53#3+e#!Q@+     "  "<<<221<9990%.'>7#&73JDFHAMf fIX⸹)**'# 32!b`@!    <<1/2<2990K TX@878Y66].#"!!!!53#535632NL=ty-=))׏/я^R#/@I -'! - -'!0 *$0* $ $(st*(s099999999919999999907'#"&''7.5467'7>324&#"326{r%$&(r;t=:x=q%%&&s7t@?s9q(&%%s>v:@t8s'%$|pprR@F  B     fe f e<2299991/2<2<290KSXY"K TX@878Y@(' ' ')((79  ]]!#!5!5'!5!3 3!!!c`Tþ{yT9{3{JD{3@ <210##  \= >@54&.#"#"&'532654/.5467.54632{?>?>S8alӃ\]>9̭IXW:fqր][;;ȦI.Z.L-[.K''PGZsweZ54m@''TLf{xf[1,pEF)@dd1<20K TK T[X@878YK TK T[KT[KT[X@878YKTKT[X@878Y@````pppp]3#%3#^y/IC@&=>:A$104G$ 7aD=0^* D^ J21/02#"$'&5476$"3267>54&'..#"3267#"&54632mmllmmmmllmm^^``^^⃄^]]^\^BB@zBCFInmmmmnnmmmmng^^^傁^^__^]⃅]^^! "s;)_@3(%%  * "(kl"k *22999199990!!#5#"&546;54&#"5>32"326=P,]uu>DIE~bRhP{@p?Dq[[""CO@Mr%# @I    B   o o n<2991<2990KSXY" 5 5%-+#-+#RR^@ 10!#!^d10!!d/8L`@6EBC?2H09JC 9 $HE301B54&'.'2#"$'&5476$#32654&'2#'.+#^^``^^⃄^]]^\^ㄘmmllmmmmllmm}{{nWXfi`C.;I6Bf^^^傁^^__^]⃅]^^gnmmmmnnmmmmnb>KL?gwyVpMI`3Db+/10K TKT[X@878Y!!Vu=  @  Z[Z10"32654&'2#"&546PnnPPnoO@v+..ooPOmmOOp1.-rB .@     <2<21/<<0!!#!5!!!-Ө-}}^J@$}}B ~9190KSX2Y"!!56754&#"5>32 "?XhU4zHM98rn81^BQ##{l0b(H@'    #)~&~ )999190#"&'532654&+532654&#"5>32 \e9}F4wCmxolV^^ad_(fQI7Z`mR|yOFJLl?<:=svcE`sRf1@ D10K TKT[X@878Y3#fV` M@%  !   NF!2912<990"`""]3326533267#"&'#"&'#% )I#ER2bf*V H<9 NPOONN;9 %@]] 91290!###.54$yfNݸHF103#F#u@  ' 1/90!#"&'532654&'T76xv.W+"J/;<+->i0Y[ 0.W= ,@   |]|| 12035733! c)t'+n`d.@  klk 9910!!2#"&546"32654&PXγгi~hi}|P{ݿܾsH# @I  B   o op<<991<2990KSXY"5 %5 +-+-#^R^  ^R^  '\d&{z5?&{'z5tdb'\d&uz5 $@/  !# #%" " "!& %999919990KTKT[KT[X%%%@878Y@ ttttv]33267#"&546?>7>5#537ZZ:3mN`^gIYX0&DeWX5^1YnFC98ŸLVV/5<6hk&$ uhk&$ uhm&$ u  +@ ]1h^&$ u #+@ @O# /#]1hN&$ u  +@ 0?  ]1hm !@T   !!  ! !!!B     !  VV!"2299999991/<9990KSXY" #]@  s P#f iu {yyv v!# ]]4&#"326!.54632#!#TY?@WX??Y!X=>sr?<҈_Z?YWA?XXN)sIsrFv)H@9  B     <291/<0KSXY"]@gww  ]!!!!!!#!59=qժF՞su'&&z-k&( uk&( um&( u@@ ]1N&( u @@ @]1;k&, /uk&, /u`m&, /u +1XN&, /u +1  g@    2  y<291/220@(   ]]! )#53!!3 !iP`P5~.,3^&1 u"+@ 0?""]1sk&2 'usk&2 'usm&2 'u+@]1s^&2 'u!0 +@ 0!?0 !/0!0]1sN&2 'u +@ @O]1? @M    B   <291<290KSXY"  ' 7 7w55v8vL57y5yy5f +@< +,  )&  *&& &,+,* # )#3,99999999199999990@*WZWU!je!{vu! FYVjddj(|svz( ]] 324&'.#"&5!27!"&''3>_'y=_''NOy;WfNPƀ[gX@CHp@CpDfbMKYg[KKX)k&8 u)k&8 u)m&8 u +@ / ]1)N&8 u +@P_@O /]1k&< su =@   ? 2291/0@ ?_]332+#32654&#'ђ/@0-'!  **.  !' $'$-F099991/990@@'(     ! "&  : :!MM I!I"jj  ]]4632#"&'532654&/.5467.#"#:A9`@IPAtx;e\`Wqqs`/Q*%jd_[?T>7;[gp{-f&DCR @?&/&&]1{-f&DvR @?&/&&]1{-f&DR (,+1{-7&DR.< +@ ./<.<]1{-&DjR -( +@(o(P-_(@-O(0-?(-( ]1{-&DR%@&,,& 2882 ++1@ ?5?/5/]0{o{3>@C'-%= 4%:.-*1 %?47&%7& =&-7"E?<9999912<<29990@0+0,0-0.0/00@+@,@-@.@/@0P+P,P-P.P/P0+0@@@@@@@@@??? ??0,0-0.0/@,@-@.@/P,P-P.P/ooo oo`,`-`.`/p,p-p.p/,-./]q].#">32!3267#"&'#"&5463!54&#"5>32"326=DJԄ ̷hddjMI؏`TeZ߬o0Z^Z55*,ywxx..''`f{bsٴ)qu{&Fzqf&HCqf&Hvqf&H"+1q&Hj@@ ]1f&Cof&v\f& +1F&j +1qu('@^%{&%#${##{#({'(#&'('%$%(('"#" ! B('&%"! ## #)&' ! (%#" QE)999999919990KSXY"?*]@v%+("/#/$)%-&-'*(6%F%X X!` `!f"u u!u"%#%$&&&''(6$6%F$E%Z Z!b b!z{     {zzv v!x"**']].#"32654&#"432''%'3%F2X)6 ~r4*!M!ü޼z&77kc\̑oabd7&Qquf&RCsquf&Rvsquf&Rs+1qu7&Rs .+@ /. .]1qu&Rjs +@ @O0?]1o )@ r <<103#3#!!oAH +@<+,&  )&  *&& &,+,* # #Q)E,22999999199999990@p(?-YVUV jf!{    { z{ {!"#$%{&%--&YVUZ(ifej(ztvz($$]] 32654&'.#".5327#"&'')gA\*g>}66]C_56`?`!*(Ou))Hn.Mw834OMx43NXf&XC{Xf&Xv{Xf&X{ +1X&Xj{ +@ @O0?]1=Vf&\v^V>@ GF2210@ `]%#3>32#"&4&#"326s:{{8daa=V&\j^+@ 0? /]1h1'q;$ +@@O]1{-&qJD+@o]1h'J$+1@oo]0{-&OD"+1u'${u{'Ds'k&& -uqf&Fvs'm' Lu& <=/1qf'Fs'P' Lu&q'Fs'm&& -u@]1qf&F&' q&G  @_?]1 q$J@$ "    GE%<<1/<20`&&&]!5!533##5#"3232654&#"F:||ǧN}}daDDa3'q=(q'qH@p]1m' u(@@]1qH'H@p]1P' u(q'Hu'(qu{'xHg&( o@@ ]1qa&H!+@!]1sm' \u* <=/1qVZf&hJ  <=/1sm&* uqVZH&JsP' \u*@?]0qVZ&hJs'^*qVZ4' J;m' u+ +@ / ]1dm' uK*+1KQX88Y@ @@]:@    8 22221/<2222203!533##!##53!5qʨ"ʨ9Qx>@!   N  2221/<2290#4&#"##5353!!>32||}}`Bu\zzedx^' .u, +1g7'+1Y1'q.;,+1H'q+1gm' .u,+1VH'+1u%'d,u 'JLP&, /u<<1??]0y` F1/0@ @P`p]3#`f'-\,@1V'M8L@F1f_m' .u-+1V\f'+1j' .' N` @(B F 291/<290KSXY" ]@_ ')+Vfgsw    ('(++@ h` ]q]33 ##%kǹ`!jl' nv/Jl' ZvO<1KQX@8Y@O]0j' /' O@@]1j' /' 9O @]1j'y1w/'ysOK QKSKQZ[X@8Y1u ?@   : y<<991/900P]3%!!'79Pw^Mo;jnH ^@  z z <<991/90KTX @ 878Y@ @ P ` sz p ]37#'7Ǹ}Lɸ{JZjXj3l' v1@O]1dm&vBQ @?O]13' 1d{' Q3_&1 g +@ /  ]1df&Q +@]1'QU~V'J@!B  6991/<2990KSXY"]33+532765#ոRQi&&}``01}Vd{;@  NF 21/90`!!]+5327654&#"#367632dRQi&&||BYZuccH``01`e22wxs1'q';2 +@]1qu&qsR+1sm' 'u2+@]1quH&sR#+1sk' 'u2quf'Rs ;@   299991/220!!!!! !# !39OAg@AժF|pm|q{'3@1 . ("%4"1 K1 Q+E499912<2290@%?5_5p55555????? ooooo ]q].#"!3267#"&'#"32>32%"32654& H ̷jbdjQGьBN5Z44*,nmnm98olkp݇Tl' v5m&vBUT' 5J{' UT_&5 }g@_]0Zf&U +@]1l' v6om&vBVm' u6  ))Ic:1of&%V  ))Ic:1u&6zou{&Vzm&6 u + ""Ic:1of&V + ""Ic:1u&zP77u&zW_&7 sg +1@_]07&W 7p@]1F@   @ @ <<1/2<20@@p ]!!!!#!5!!  ժA@7C@  F<<2<<2991/<<<20]!!3#;#"'&=#535#53w{%&sQQ''PO>)^' u8 '+@ ]1X7'X&+1)1'q;8 +@ / ]1X'qX+1)m' u8+@]1XH'X+1)K&8E @@@]1X&X| @@@ ]1)k' u8^f'Xe)&8u`&X'Dt' |:+1V5m'EZ+1t' r|< +1=Vm&^\+1N&< su +1\l' v=Xm&vB]\=' b=X&]\m&= uXf&] +@ ]1/#@  L<1/0!##53546;#"c'&яN()g ,D@% ")%,$'".EG* ,(%#'F-<2221/<204'&#"327667632#"'&'##5353!!STTSSTTS:YX{{XY:E/tssttsstRd0110d}}P)C@#   . *29991/90"]!2654&#!2654&#%!2#!"#546D+ |v݇f>orqp ˘0_i1F&8@# (EGF'221/067632#"'&'#!%4'&#"3276s:YX{{XY:NkrSTTSSTTSd0110dtssttsst 3@  . /21@  / 9/04'&#!!276!2#!#ONDNO|N8DCDCD>@  G /221@  /ij9/0>32#"&'##34&#"326s:{{:"QrdaadDs'0@  0 <10>3 !"&'53 !"shSzjffbGGaaHH_^9'(9^_sZd$D@"! %  %  0%210&&].# !267# !2676;#"'ffjzS` SfM?nb_^^_HHgh$bzq"N@$ ## HE#210@ $$$$$].#"3267#"!2546;#"NPƳPNM]-GFE0iL~++++$$>: a .@   2 99991/0`]3 !%! )"#5465BhPav/w.,~0_i1F.@  .21@   /0)!"!!"$54$3!!@DNN|#+qZ!5!#5#"'&7632 76'& kM:XY{̀{YXTS$STTSSd0110jtssttssqVuc-3254%&'&7632!"'67654'&#"fu5KGxD7VUV[a~@Fu\0%p ̥@$OFIqrs`g E +@    21@ /0!5!!5!!5E>9+uD@& 39190!!"56$3 ! 7327upo^   2`_FHg[{(@@$ )) #)* &)190.54$32.#";#"3267# $546؃ YsrSǾmTj^У%!| &${spw21%%ݐf#A@  2991990 ]!!!!+53265ZpPM?nժHVe@#   LK TX@8YKTX8Y<<9912299990@P]#"!!+53265#535463cM/ѮcMPhc뻫Ph*Nsd&I@43! F'1@'$$'990%!5!# !246;#".# !26uu^[DM?npkSUmnꪖ_`%Rv%@ 'P $&]ĵ 91@ %$&222990@ #%$$<<$#$%#@$"! #9927654'&'3#"'&5476736,3,,3,6hC.KddK.Ch B9Iy\\yI9B z^ȮwBAWWABw1GE4'&#"#34632;2?53?537535735?654'&'!#'&5dccuZYB||QRF#B68r.LM7BXX3g(&xw22eby``*/wnqd ,-H$dba21 .@  KTX@8Y991/9903;#"&n?M-– R E@   :i`L5G ;!tH'Cw+1@,     B    F291/<90KSXY" ]@_  ' ) +V f gs w    ( ' ( ++@h `    ]q]46;#"3 ##iL%kǹ~a# * 2@F <21@ /<20@  @ P ` p ]33###538D=3''%'3%# =G!)K4:!~2eccŊhah<''%#"'&5332653327653#5#"'&E__'9u99w{SS?yzVU|v{z5NNM_`)gb>>f3@)B 6  999991/299990KSXY" ]@068HGif FIWXeiy]]!3!+53265jG?n+Vd{As /@ 3221@   0! ! "!&327sy;:xB b[[Tg&2H v'X Rs #"327&4&#! '&76!2!2'܁ܯ9nzż;pa'fgL椤}–zz-qVY{ #& 7&4'&##"'&763232sWVUV*,,&&i񈉉dRصRQutntsY_wt10``:@   ? 291/0@ ?_]32654&#%!2+#"#5468ʄv/ϒ0_i1FV$O@$#% %G  F%22991990@ `'''']%#46;#">32#"&4&#"326siL:{{8(adaaV(332;#"'&'&+#326'&+e 6'*L;bGJN.wƍLMqpHqY"$=?5 HIE`.>323267# '&5476?67654'&#"ri{CDr{xwj璑klz<;YZ_s&&rrƫ->>n~FE/ppٶlm+23cv@@67d{'@  !! RE(99991@ '$$(90@S !S BKSX99Y"]@/)?)_))))))]@% '$&((*//*( ( ))$]@.,,,;;;; q>323267#"&546?>54&#"Lf@eaflZ?bZN?$%PKQY55##*!I@TT((-V!&'&#"3;#"'&5# 54!23!n|wx'%dQW/R5-0A3=g)(V\`@o7V !!;+53276=#"'&5#53w{%&sF0j&&QQ''01PO`>X@ @  991/2990K TX@878Y@@p ]!!##"#546;^vժ+Zi1F7I@  F<<2291@  /<299990]!!;#"&5#53546;#"w{KsբcMcN`NQfT@ @@ 120K TX@878Y@@p]!!;#"&!n?Nժ=–_&8 i' XN:@(3  1@  <22205!#"5475!!! 4'Dz?1/a#Laָv5(v-@ /<91@  0%#"&5# 764/?ngaM1nAczt5(DWm 676'#3sH41Bm NU&oN(61ze99=Vp+5326?3 676'&N|lLT3!;^2Qae5QhzHTN~)20e^'E\!!!!!5!5!!spsT=g՚"X`!3!!!5#5!!qj}+P e`ܐ\9%%27654'&+5!5!2!"'&'5cd\]ejbVQ;-w}~j~kKKIJܪ$8*mhU)$y%1\%%2767# '&/&54767635!!#"~j~}w-;QVbje]\dck1%y$)Uhm*8ܨ$JIKKhL?`#"!27675#"'&5476;5!5![jbVQ;%^cdjTmcd\]R8*mhb)$y%12KKKJqV`2767# 4%$54#!!5! TMOQWPVa ejo0, 5%b|8d1aJ$%!!57!5!67654'&#"5>323#L:s_%'ST_ijxzX"Jh0@umHLIwKK!!C12\RI`1](2! '&/&53 7654'&#!#!!hcUQ;-ܘ-;dc|cd\])Q8+lhU)$yy$)UKKKKIJ-%hL?`%2!"'&'5327654'&#!53!!LicUQ;-^cdjTmcd\]8+lhU)$y%12KKIJ&X$!"'&'5327674'&+#5333!plnUQQLITNPc9:V>}ws}#(rAbLrV{#36763254'&#"s4QҸMNr98xܭz BR1pqWBAV&@ F10@ @P`p]3#V''V:@    <<2<<219/<2<203!!!!#!5!5!5!s____,Ԫ m'?' f'@'qf'@Gf$'-/V'Me/V'MvOf'-_1V'M>1V'MeQhm&$ u<1{-f&DZ +'+1`m&, /u  Ic:1^f&  Ic:1sm&2 'uquf&Rv <1)m&8 u<1Xf&Xv  Ic:1)3& 08X1'q{;)Z&8 6X"&X )Z&8 0X"&X )`&8 0X"&X q{h3"$ {-1&qR;h3"$ {-"D H4'q>{o'qs,# '&76!2.# !27675#535!5!3u^opkTTCyS*+mn$$F_`ҙ'XXqV{94'&#"32766=#"32533#!"'&'5327675RSRSSRSR9||9:aVVQQRZ=nnnnnnnnOG^[cb::bc+nXF]@,*_Fsm"* Ju!<@!T!$!]1qVZc"JJjm' u.m"N u* +1KQX88Y@ @@]se'42qeu{'Rse1'q';qeu&qsm' uyXL/f&TVdf'%  Ic:1 '=' ']'q']Gsk"*Cv@,qVZc"Jv-! '&5!#3!32765-d`gd">=B>`Z߀xxv 9dPNOKV%#3676324'&#"8WST=<HW5xz7 GF3k' u1dd"QChs" \}{s" }Hl' \v{oc"vefl' vHc"vhp"$ z{-d#Dh6"$ >{-H#eDp"( zqc#H6"( >qH#Hsp", Yzc#fw6", >>VH#$sp"2 Azqud#Rs6"2 >quH#RTp"5 yzJc#%UT6"5 >^H#-U)p"8 zXd#X)6"8 >XH#X'v6o{',V'S77'WRs16767654&#"5767654'&"567632¥~b[?FjOQ_ciqYxw`eGRxQYڵ@XKy^qjj=vX{5?:.PB*8hicqMmwqڎ{\(GO{26767654'&#"5767654'&#"567632GrXBAR9?|cGIN`\hOm`bs[yx@Il|IPxģ3H\V+53276=!5!5!!Hri&&gPP%01oXV`+53276=!5!5!!۞Hri&&5ejLP%01%hP"$@{-"D_u"(zqu{"Hz{s3"2 bqu1&qs;s3"2 iqu&R sO' 't2qu&sRs3"2 jqu1&qs;1'qr;<=V&q^\p\%3254'"632!"'#67&73%44nI5"C1- H:EVy` 8@   OF 991990@  @ P ` p ]3+53265F1iL`aq 1= 76'& %67632#"'&'+5#"'&7632;'&  7/ST$TTTTT:YX{{XY::XY|ˀ|YX:rSTTSST$TjtssttssHd0110dd0110d^PtsstjtssqV{ 1='&  7+#"'&76325;67632#"'& 76'& STTSST$T:XY|ˀ|YX::YX{{XYST$TTTTTdtsstjtssHRd0110dd0110jtssttss|3 #!#'#7'7 3!Jafp|҈2F;R/o]jY'FF8O ",'&76!27&'!2767# '#&# rfuSv=:efc.1 tsfjwv9tFXh$xYv+!f //_H$$\/ح ]"+'7&576!27&'32767#"'&#"i`UUQ.-Y_vcPNONMRS]7GGcc^N lOU ^q+$Vqrg j 33#!!#53ʿ_w1'7!!##!Hf8Zg "4iUYB9XM4bo{=4'&/&'&54632.#"3#"'&/&'&'&'53276 23@LLfLNZDE11?PS{W*L'TrGY$alfccaFF'K((%$JK((**T@%$!,KL[@~$=&[#5-,X3`!;#"'&/&+=!qjN\1*LlTrGY=Z^e`1~$=&[? %P326'&+"5676;2+#LMEZVNLQQU' HI+#qpHqqP{2654'&'&567632#LRB]VNLQQUxAF+#qpl& -!2#!#53!27654'&#!!27654'&#!|SR迿+HIIH0DNOON efp/>78rq88ѐDCBC !3!33#! '&5#53!32765˥呐WWWWjܕ$}jiijh&B33#!!!!#7#!#!AX .AA<VF㪾FqB&-1&'&'!3267#"'#&'&3273&#"#So+Jajbck{cPm!)81G\9/Zo Z 6Z44*,!  C "2JcfR33#+53265#53ʿM?nHV3#33#+53265#53F1iL(aؤsf !32#"53;#"&5# !2EnEMMTE:E^–qV@{#"&=#"3253; 6& @F:||:Li1$VּdaDDadaj T(#&'&+!!##53! 3276'&#A>=>ٿJFEx[ʿABKJJKHH~h11wp؍]]OCDBCJ{&'&#"3###53367632J%$,TS:]] ef<Ĥf213!733!#!53!ٗ ٗwјv9 V`+5326?!533!33!+N|lLT3!øLùmhzHT33`{ ,@ .% F-22991@-&%"*-%  9990@1?$?%?&?'O$O%O&O'_$_%_&_'o$o%o&o'$%&'$%&']@+?#?$?%?&?'?(?)O#O$O%O&O'O(O)_#_$_%_&_'_(_)]2654'&#"367632#!3267#"&߬A@o\]?^^fe~ST`Te__Z+f{b:9ml)Lf01a```FE..'qZ{8@G E221/0`]53#5#"3232654&#":||ǧdaDDa{ 8@  G F221/0`]4&#"326>32#"&'#3姒:||:/Rdaad` &=@  "G F'221/0`(((]4&#"326>32#"&'#476;#"姒:{{:RQm"&/Rdaad~``04{ 0@ ! !"EH!<106763 #"'&'5327654'&#"LQQU]SRMNONPccccPNON5#$+qrrq+ps{'/O@( ,,H"E02991@.*%00@ 11111].#"67632#"'#47&'&!23254#"NPc'>IjJ?_SPI 9/-U:Me5++rQ,3H=Y}/)9DhQ#3 :#:9KqV@$K@$%"%OG E%221990`]#"&=#"323;32654&#"@F:||:Li1戮VּdaDDad^ؙa=q$=@" %%  GE%2210`]546;#"#5#"3232654&#"iL:||ǧadaDDaq{"r@ KE#91@  #90@)?$p$$$$?????,//,ooooo ]q]47632!"&'532767!7&'&#"qkcbdcjfg ]\RS^,*4cdWWZZq{A@$  KE91905!.#"5>3 #"73267qN ͷjbck 9Z44*,#ė|{ 4w@6.('4 KE5<Ķ&  91@/.'""5 5@  &"90@ 4 &'<<<<<%6'6'32#"'&'&'&5>3 73;#"'&5Nf  R`\Lladbck $˸&&i+@WR֊>8E#Z`vg'#d4*,#)u10`Z|?|*|>i@@603273;#"'&5|PUTZGUU]UTNHtCDFEwGQPabLq_&&i+@WR@\l%88ZX83,-F@.. NBj10`ZȦFq|/;@ 1 &,E01@00)0#90"327654'&+5327654'&'2# 76`cchҗUTNHtCDFEhqr<V`K@   OF<<22991<2990@ @P`p]33#+53265#53F1iL`(aؤqV 0U@)  &#-* *-+& G E122991/990`222]4&#"326!"&'5326=#"32546;#"aQQR9||9iL=,*[cb::bcaqVZ` #C@ # GE$21/990`%%%]!"326!"&'5326=#"43!aQQR9|=ͻ,*[cb:*qO{8@4 E1990%#5!#"!2.#"326Ae{-h]_cƳO|$$>:77>>`Rd`#y@ %  $ĵ 91@  $222  990<<<<< 3#"&54767327654'&'bB_j&;;&j_BC(::(xܱSccS$-EIdccdIE-`d`#y@ %  $ĵ 91@  $222  990<<<<< 3#"&54767327654'&'b)rG,EE,Gr)C'88'bLx>>xLb-!@2FF2@!-VX`9@     NF21290`]332653##"&||Cua{VfcdC@!   N  F2991/<9990`]#4&#"#46;#">32d||iMBu\~aedVd!J@%  " NF"2991/9990`#]+53265#"#46;#"632diLiMHa=~a >@    F<<<2221/<20@ @P`p]33###533#¸`<Ĥn`Ct` '@   221@   /2205!#3!53t褤K#<@ % V V$<<1@#! !//2<903327673#"'#&'&#"#67632= &}33[ &}33[ %$RIJ %$RIJLT5@  <2<1@ /9/<2033##4'# 7632&#"3=5*7M\TK9V_ (@  F 1@   990;#"&5y=x1F|t(L6$@#&#" F%<̲#91@B""  " /9/ 990@$#@  **8;ILT[q ]@$$%$$5$7E$FT$\ ]@    ]2!"'&'5327654'&+5!#3!CicUQ^cdjTmcd\[je8+lh%12KKKJ3Lb&^@PP F'<91@  #''<<<290@0(P(p((((((( ]%#"&5332765332653#5#"'&Cb`ruSSrw=ZXyzVUy=<b`^zbze32>>Vb&a@PP F'<91@  #''<<<290@0(P(p((((((( ]%#"&5332765332653##"'&Cb`ruSSrw=ZXyzVUy=<b`^zbzZe32>>V{0b@&%*!*-(&PP)%'F1291/<<<290@02P2p2222222@ 0]>32+5327654&#"#4'&#"#3>32)E__RQi&&ru99wSS?yzUV|v{zH``01NM_``gb>>Vk{Q@N O F2991@ /9@   990`]#4&#"+532653>32k||F1iLBu\satedVJ{;@ N  F 21@   /  90&54&#"#3>32;#"R||Bu&&i1F``edH10d` y@BNF 991/<2990KSXY" ]@068HGif FIWXeiy ]]!3!##`ylqu{ ,@  Q E2210"!4&267!2#"rz蔔98q$`I@  E2ij 991@   /<<@ 9/0!!!!! '&76!#";:E*%xxxx%`ݛlklm>|73276=332767&'&'&#"#"&'#"'&7676; -32JI,:.˾ fcVJ{:@  F2190P].#";#"&53>32JI,Li:.˾atfc~{%@ 21@  /29903!5346;#"iLAat~{3!5376'&+532ʴ'&irH20%P`@4  B      F299991/<9990KSX9Y"@]@Bz%%%&'&&& 66FFhuuw]]#.+#!232654&#0s2âJ{Qpwu t]:'`iVNM``E@  F299991@  /29990332673#!32654&#Q{Jî2s0jp|Ɓuw`':]t i`MNVoV{0@C  S('  S'('B1 '(!.1' ($R$+E19999190KSX99Y"0].#"#"/;#"&=32654&/.54632NZb?ĥdXLie@f?((TT@I!* ajYQKP%$V4@ O F<22991@  99046;#"+5326cMF1iK»Ph)aV O@ !O F!<<229921@! ! !99<20546;#"3#+53265#53#5cMF1iK`NPh(aؤi7V3e;#"'&74'&+532M&&i1FRR'&cQ]10`a(h((VaYV!#"327673## 54!3476;#"w|n!̵5RWQîd%'3A0Ǜo@`\V()g7^3@   /<<2991@  /<2990]!5!4&+5323#{Ksբ>`N7V=@   F<<2991<2990]!!;#"&5#53w{Liൣa>`C@     NF2221/222220` ]3!33##5#"&=#5!326:CuȮ||h=$#^lfk`8@   91/20@ 3 3#f%.]`8XV`@"B  OK TK T[X8YKTX@8Y2991/0KSXY"@B&GI + 690@@E@@CWY_``f``b]]!!;#"&=!5!qjLLi/F7e`ۧa%X`!@  "KTK T[X8YKTX@8Y299<21@  /<0@ BKSXY"@:&GI #+ #690#@@ECWY_#``fb###]]!367632+#47!5!3254qjL"TA`:&>R~ie8FX`ۢG7W9W`/=3<;4%6]XL/` @ "!̲91@B!  !9/ 990@ @  **8;ILT[q ]@  %$ 5 7E FT \ ]@    ]2!"'&'5327654'&+5!5!`q|/=@1 %,%E01@0 0"0( 90";#"327654'&% !"$5467&'&5476EwEFDCtHNTUhcc`a|p<:!a>>`V.9@ F<<991@   /<203#33## 54!3#"32767Ku_+xG`͋BA0 L` ## 33R9L T#`@ F1/03!!`JqV $C@  #%% "GE%2210@ `&&&&]32654&#"#"32546;#"#/s:||:iM/daDDadaX$L@ & %<<ij#1@  $! /<2KPXY032765&'&#"56763 3###53T?V:9cPONNLQQUmlprLbAr+#}swԤX$M@ &"#E%<<ij "#1@ $!# ##/<2KPXY0535&'&5476!2&'&#";3##plnUQQLNONPc9:V>ws}#+rAbLrq &) 76'& %3!!!+5#"'&7632/ST$TTTTT iL:XY|ˀ|YXjtssttssH^Lۓd0110MqL4@#5#"'&76323!2!"'&'5327654'&+5 76'& Z:XY|ˀ|YX:jejbVQ^cdjTmcd\]:ST$TTTTT3d0110d^L$8*mh%12KKKJjtssttssq 3: 76'& %%!332!##47!#5#"'&763233254#/ST$TTTTTghL<):XY|ˀ|YX:FXjtssttss_ 3<;4d0110d^6[7@F.#"#"'&'#"'&5#533!!;5327654'&/&'&54632NZED11?QR|{Za]gQQ{%&sfccaFF3,@LLf?((**T@%$!,KL[[!&PO`>''M5-,QK($)$JK7V%.!5476;#"+53276=#"'&5#53!3wxWQîc&'QRF1i&&QQ3%&sN[V((h)``01PO`>''7p-9D!6!2&'&#"63 #"'47!"'&5#533276'&#"&57!3w{UQQLNONPcccO+eKTIQQ;BS_r(ր%&sz#+qrfr v)2LOAPO`> 'KV ''/Vo5+5327654&#"#!##535476;#"!;67632oRQi&&||ӹWWc'&-BYZuccH``01/яNUV((hce22wx#5.#"#"'&'#34632327654'&/&'&NZDE11?PS{|Zb]hf8b_caFF2-@LL?((**T@%$!,KL[[!&2-,QK($)$JK 3!!!+iLLۓ6 333# #333# #6ttttU=63@    <2<21@  220!#!#!#!#6kkUXrXJ!32653##"'&554'&+532||BYZucc&&i1FQRybe22wx 10`` Vv,!5#"'&554'&+53232653;#"'&'BYZucc&&i1FQR||*&h2FRKe22wx 10`` by60`Yu0@ 32tNN^luu)qJy}wYYk\g88u;@ 32tNN^lugrB0)qJy}wYYk\xkW6Vr88 #@<<1@03+5327653#zt43r,Bttx66XVru@ 1@ /0.#"#3>32.biuu$uT  qksa97G327653#5#"'&'Gc45tt%:;T  98kJa9Gu 327653;#"&=#5#"'&'Gc45t0B,rf%:X@?X=>POPPu"'&4763"3sPOOPs@XX@PPOP>=X?@X>u32765&'&#"567632#'y7$#?q22110335WDDFk[@*7K$@ ` XFh_@Cu#&'&547632&'&#"3kGDEW53301212q>$%6y[AmC@_hFX ` @$K7*@ 2% % g 25-5g'|?f33|g|?f3# #fg?f7@ u91290K TKT[X@878Y3#'#f?f7@ u91<90K TKT[X@878Y373x^@1@/0#^+b+qsRf3#ff #ofv^@1@/0%#^++Tq^#onvsR3#lo#!!!eJ'o#!!eJu#u#!533>j,5!##–, 533##5#5j!5!>j)9H W@ VV1<0K TX@878YKTKT[KT[X@878Y332673#"&v aWV` v HKKJLDf@ 103#  @ V xV104&#"3267#"&54632X@AWWA@Xzssss?XW@AWX@sssLu @   '1/90!33267#"&546w-+76 >&Dzs5=X.. W]0iJ7c@$   VwVv99991<<99990K TK T[X@878Y'.#"#>3232673#"&9! &$}f[&@%9! &$}f[&@Z7IR!7IRfB@991<20K TKT[X@878Y3#3#߉fx%3;#"'&5&&i+@WRd10`ZȢf '#7'373\\]]\aa``u '&73733274/MMz /1/03#zttu/2&'&#"#"'&'532654'&/&'&547632j1549W++](}24NM9>=D@?>=RX o(l00GF@99 a /$*+MW33 k2-*)*IX01 u! #'#37 ͉H+u#&'&547632&'&#"3kGDEW53301212q>$%6y[AmC@_hFX ` @$K7*@X@ 1/0!!5!AGЈX'@??//21/]0!!5!3A4X@ 21/0!!5!3AhhX'@pp0021/]0!!5!3A4X@ 1/0%3!5?p+v#qqf3#3#@fx.SMvJ!'&'&#"#67632327673#"&9 &}33[&@%9 &}33[&@7 %$RIJ!7 %$RIJfCqPfv=fH7b/q| 9)1HDp F'j7{"@ V@ V /1@@ /0632#546?654&#"7pihX,#w3-.>GZdH3UC=A   (6%""($4fCfD#DD'4]f#!#͇fxx)1')1H qD( @0#3Ӥ?#55#53pp{53#7"op{y3#@uUCqPUv &D53#5#5_&3##3D_U?p!5!#Ik{1@V/K TK T[KT[X@8Y21@ /0532654&'3#"&=X.. W]0iw-+76 >&Dzs5=b"3"'&476@XX@sPOOP>=X@?X>=OPPP 3!5353D_ #5!##걈 & #53533##׈ 5! zV '+53276=0RQi&&``01wV %3;#"'&5w&&iQR10``fSC'SjC.SMjT @03#Ӥ#uzLuDT#DD T#5!#뉬Jc9X#"4533273273"32326SKOZq Mg3OINS5dJ t]F ;73 !;?<6 7=wh!5xhh5!Ĥh'`_^NO'ygfFXY; `452654DŽ@XX@sPOOP;>=X@?X>=OPPP[.T!!&bc9X632#&#"#&'"#72;tv gfv ifvtR* '7'77}`}}`}}`}}`p}`}}`}}`}}` .54675>54'&'C!RI 7!RI 0PQn +0PQn : '99fCqPfvH7vaFbV +I#5!#!Ֆ֖V,2!5!5!5!>>2xx3#3#@tx!#!–*>,Jf'73327673#"'&'#7&'&#"#67632Bmk  &}33[& !Bnk  &}33[& g  $%RJI g $%RJI J%3#3#'.#"#4632326=3#"&HҖ9 $(}gV$=09" (}gT";C! 2-ev 3)dwJ"  c( 7!#'73!'3p~(͛3#557'2d͛~~x&'&4767@*,,*@rNPPNr*,@A++{OPPN)1'*Tbx5567654'&xrNPPNr@*,,*{NPPO{++A@,*.Dp:pk:P*7#'&'&#"#67632327673#"'&O,$e5Fqp[?9ZO,$a9Gqp[?9Z7  $0GJI "7  $,KJI pn;w(5!'3#7ws~~d͛tf@103AntVH@10%#AnHV #"'&=3; #V!. {q{'yOF{'y#sRf1@ D10K TKT[X@878Y3#fFR&jl@_]@_q0hf'HFyuf't f'"}f'z$f'*(f'n/f'h36'.Ch$%j@ 1/03!!)ժh=@ B1/0KSX@Y !3f5:9+(\=;+s!2@"" "#3"10!!"3276'&' ! '&76>b܁܁:xżp[bb,j.h<@ B1/<0KSX@Y3#3#:9&+031b *@    <<1/0!!!!!!29iggqs2;3 F@B   <<1/220KSX@   Y%!!5 5!!>!8ߪp7<s'<@) !%(<<<<1@' %'/<<<<0367654'&'&'&76753#–bbʖbbWssWWssW=;;s.@ <<1/22<20!6'"'&336763#ּՂnʊnhg椌gHN&3@ &("3'1/<2220%!567654'&#"!5!&'&576! cccd?IH1/GGaʦa>”XN' /u$ +1N' qu/ +1qf&;nf&P?Vdf'Af&CF*&Oqz *@ ,%E+99@ ?/]q@ ) !/99@<<10@  ]@IIIJN LNIK ]@:9:88? <>]@ + +*))]@  ]@++]'&'&3273;#"'&''&'&767$N,-=MKLyHc( #) Xn^T),`,su7 oik%1)0T*Xk[*)V!7@E F21@  90%#! %&7 54 yYo 0kEdZ%I:F V`@@ 1@ /<20@ 993#&+532i^;,_1FLdVD~qu-T@(/E( Q!E. ]99@%%.99@S910&#"#"'&4767&5!232654'&'&fu5KxD7VUV[a~@Fu\0%p̥@$OF(Iqrs`g |2=@" 33'(#,34 '0E310&'&547632&'&#";#"32767#"'&546p<@ KQX@8Y1@ 20%#457654'&# !5!ʄOTJPE* :;f,KOxsPWKL,#%5,*3Y'iVd{1@  FN  F21/0@]#4&#"#367632d||BYZuccH`e22wxqu$!?@ """#E QE"2]210@##]!3276'&#"2#"'&76EVSI 6VQ@=񈉉d~uvn` @ F1@ /0;#"'&5c"$lYoRR`+.0`b` I@   F 21@ /<20@    <<33 ##Gb`/ZFB?= F@ 1@ /<0@  # #'&+5z~J/k`ue<2~V`wJ`A@1@ /20@ 99!367676'&'31!xdLjE.*{`T|p5dwY|rNįtkR&@@ (" %'1@ '#"'<90%#457654'&# %$47#5! $ڄOTJPE* :MKOxsPWKL,#%5,*,X$Rݿ qu{RJ`/@  1@ /220!#3267#"&5!##J117,#J%x\c`PH? XV{1@ EQ F]1067632#"&'#44&#"326=;{:+fZ#adqR{$6@ !& HE%1@% %0 !2.#"32#457654'&-ULNPƯPTJPE* >:##++LOxsPWKL,#%5,*qb 1@  QE]1@ 0"32654'&'##"'&76sRVVOcm񈉉rnsȷzn휝dm`#@  1@ /20%;#"'&5!5!!$lYoRR\ W0`b*`+@ E F@?? ?]1@ /<0327676'&'31'"'&5R27ki;jF-*eb`+@EvfwZ{sxvoVh )=@+E(#E*<<1@ *'*<2<20"276'&'&'2##"'&7673=A^`VUF6{ǷdžhB:WULqˑRh]p[nmNssg.;Udav@   9@ <<9@ @   10#&+53;'$ܕ11FA3N11F~0)~pV`6@   <<1@  <2<<0&'&53367653#EkUJ|CUvܷ%aw~LB,BTxnc#n(`8@E  E1@  /<2<0 433237643%$&aƏޏƛ_")R@O@*}&Cj.*&jOquf&}I*f&"O(f&SYM% %52767654'&'&#"'&76#327674'&iPTwDy$2uz]6`;[;~oxҤko7&C]JN:PWO^p=lW5I pAKu_ըoskKꀰ-V{HVpv$ (6'&#"'&47632#"'&32767KS@8yJ̃hhч 팕 !uUY_p~GBZkA Jx'np}כWQ#4''&56%6'&FR**RtxCCHko@x6!uVHv H40r{C1]Vf'n[PWQN' u[pV'A@)   $E(<<<<1@ (  (<<<<02##"'&76327676'&#"DžǷdžǷqMTVMqqLWULc휙owgsugHgusgAm`5!#%$! 47)323764A,Ma")aM:GϤ*RѧOo[g/&'&7'&7676'&#"56776327'5!`ȍ=`[+9[R~!*`ȍ=`[+9[&͘7 cl|YDT|˩hl="pl |YDT|˩hlfMZsX#&'&76!   76';:{HpҳI椤qVu{ "32654'&#&'&7632sVVUVVV9kjstntstu n}{R$ 32#457654'&# '&76)F`{[mzYTJPE* :xe+wTOxsPWKL,#%5,*eNqRQa#"32#457654'&#"476!>cccnPTJPE* 9֗h4HqrqLOxsPWKL,#%5,*>#)@VF'347632&'&#"!!#"'&'53276`1213$)),x:KAb933.1220W@Rd >Qoɏ?s K_7"'&76'&526n 'BQ_'BQ_[~,`*l#FR`*l#FR #!3&pM]rV`!#56#'#64?&%&QhR8yE0:IKi XL} \4! wx#&'#&' #'nd2Fb.-t`4#M!P^sK=4&'##"'&=##"'&477#3276767$7676d8_TCGAtFFGHr}IHCT];d{yӒed''dDgyavD=Fwmihhimk3AFh^^^AQ0*dU(`%!$! 4337643'676#aڏޏڇ9iŚkp[Q 5@+h@ф{I%l +?sVH32763## '&6%`nbbcDhh(J @?G6qV{ 7653##"'&54763Pr^SLTT:XYڅcнtst1Rd01ȢK% '676767654'&#"#3676L'Pe^Ґ8*7D ! ! 12԰.#AL.#^Yq4+& "H4B;;=/?"+VhPOV !! 7654'&#"#676! 3 7llc^#,V)ۄe]6?fضdVj{ # 7654'&#"#67632327\B\\TP%I/yYk}oSKu,2R¤ຐs5%! &'&#"567632 67632'&#" ;!53276n"?E! rK,/ 4'Kr !D<&tEGGH h=" C(FK#C "&E !!6{6%) &'&#"56763267632'&#";!53276[96:@%((%@:6-:IkI:8=3553gs%+$67632! '&76!2767&#"327*W8QU{2Τ|sK^lȺhiieb-sJV"1Pһ '$Astxssq[/&67632#"'&76!27674'&#"3276I,)e[xtgO_\SG]EZSTVXXTRS7xJF61𢢜Pһ ''rsstxsst,V#5!#!#!3`d`du7U#5####!3_pzppog+'&7676'&#"56776327'&'&7(`ȍ=`[+9[R~!*`ȍ=`[+9[R~!*|YDT|˩hl= pl |YDT|˩hl= pV{$6767632#"'&')! $'&  7X=;{XY:  -STTSST$T%̧fZ#10dX4tsstjtssq{FVyMs! 76&'&  ! '&76EzwbH`:ż~yq{!&'&#"!!32?# '&76!2%%cjf_[_fMJOhk en(' c\\c( +{!56763 !"/532767!5!&'&#"'(ne khOJMf_[_fjc% ؜c\\c Vs'& ! !###-}-!+V` !!###`{`UV{'4767632#"'&'!!#5#5'&  7Z=;{XY:eSTTSST$TfZ#10dȪpptsstjtsss'Hs'&y3s''yk& uN& uf%+5327654&#!#!5!!!2L>87||RqmhKK"9+Fwrjk& us'<@  2<1@  0! ! &! !!! 'zOFӐhgս6,XNf-T/!5675!32#!% 4&+pfb>WxL@+8/XEڦ!!#3!332#4'&+3276 z6ONPO9dDCDC2#4&#!#!5!!qm||Rqwrf9+Fk& u3k& u#m' ru; )3!3!#++h$.@  . 21@  /04&#!!26!!2#!DlN݇@%j@ 1/03!!)ժe2@  1@  /2220%!!67!3#!#p&axު D+?x4&A((v@   <2991@B   /<<2290KSX@    <<Y@ I:I:I:I:I:I:@  <<<<33 # # # 3DDxM(?@ * %)21@  %&" )02#"$'532654&+532654&#"5>I8z,|йԳƆ\qѲ|!ĐBY+wps{M("3 y@ B  6 991/<2990KSXY" ]@068HGif  FI WX ei y   ]]#!33j+3m& u Y@   2991@ B  /<290KSX@    <<Y3! # #_yT:%@   1@  /<035675!#!T>Wxfb/X++0;+s2;@ 1/<0#!#;"++3s'&7#> 1B /20KSX@   Y%+53276?3 3 OM?w.-!suٵ2&]*jklyj =@!   <<<<1@ /<2<203>54&'$%53# W==U+  -=;; (@  1@ /2<0)3!33#;ʪ+$@  21 /20!!"&533!3_||xdv+ *@    1@ /2<<0%!3!3!3OOʪ+++o1@  1@   /22<<0)3!3!33#OOʪ++< *@  21/0!!5!!2#4'&#!!276GN6ONDPO+DCDCF&, $@   21/04'&#!!2763!2#!ONDNONDCDCo#<@ <21@  0! 7!5!&! 56! ! 'oOzFՎaa0&8@''!&$#(  !%$'2<1/0"3276'&76! ! '&!#3~܂܀s;:ŴL椤kj;E@B   21/<0KSX@  9Y.546)##"#>#";}xJ>{;$+wb~{-{Dp7):@+E'Q! E*21@*$ *9902#"'&5476$%676"32654&}:[;z631-~LӔ{0w)v ,u8w>` /@ " F!21@  /0!2654&#32654&#%!2#!r~~hhVlj9_ZZ^SJJOgyr`F1/03!!`3k`2@   1@  /2220%!!6765!3#!#}v[(bt:d6(U3Rq{HF`@   <2991@B   /<<2290KSX@    <<Y@ I:I:I:I:I:I:@  <<<<33 ##'# 3?nn`QO6m|(>@ &* )1@ #)) )0#"&'532654&+532654&#"5>32|PZG]twGabLx\l%%pZXkYF@\]y` ?@B  F F 991/<2990KSX@  Y##3y`}`y&` Y@  F 2991@ B  /<290KSX@    <<Y33 ##Tsŷ`OQ5Ls`$@ F  1  /<0356765!#!L8D{X^~ŷoPO` M@B   F F 1/<290KSX@   Y! !### >? ˸ʹ`'P` '@  F F 221/<203!3#!#U`7qu{R`@ FF1/<0#!#`3`V{Sq{F<m` 1/20!!#!<1BB`3=V`\pVg (3B@5E)! '.E4<<<<1@,41$ 4<2<20327&#"#"323>32#"&'4&#"326/{brrb{9SS99SS9{brrb{/Ǩ<9^N5=L^^LN^Ǩ;y`[` (@ F 1@ /2<0)3!33#9U`33R`"@ F21/20!!"'&533!3Hf\45h)_Vu;;` )@ F  F 1 /2<<0%!3!3!3ڹ"ٹ`3+`1@  F1@   /22<<0)3!3!33#"ٹڹ`333R>.` ,@ E  21@   /02#!!5!!!2654&q8$~͓7_ZZ^`'">`%@ E  F21 /04&#!!263!2#!z~~@9LZ^_n7q{73267!5!.#"563 !"'q2 ǚ-VړiVFHL{ :@ E  F2<1@/0"32654&632#"'##3Jq и¾.`AE"`!D@B #F "21/<0KSX@   9Y.54763!##"#676#";jplka;;?î545w@@@@w iQP%$q2^66..TS//qk&CZq&j(Vk(#5353!!67632+5327654&#"#FBYZukcRQF1n!&||QV}}We22wn``07[_em&vq{K@ HE221@ 0@ ]2&#"!!327# ǟ 2ғ-{FViګVH>=o{VyLFVyML`2#!!56765!264&+X^˶8Dأ~~oP~ŷ7_^`32#!!#3!264&+N޹"\~~`7`73_^(k#5353!!67632#4&#"#FBYZugc||SV}}We22wsG_bm&voyk&C]=V&^` !#!3!3fU`3s43276=332764''3#"'&'#"'&4673I}rHGFFtAGCT_8d{{ђed''dey{d;]TCZmihhimw'AFf^^^^F(`S!2#!!5!53!4'&#!!276XNpqONDNOQQfDCDC$4&#!!2!5!3!!!2##~~EE^͓uʣ+#3376!2&'&# !!!2767# '&SvwhfstgFtsfjwvú 9$#G_//wƪ//_H$$O{#2&#"!!327# '&'##33676>\" , Ux{ z{FVAW^3VH`3ʀ #'#3#jf?@wrs+3` #'#3#]pJWjQ`  !#3!3##'#_<?@w9d+rrs` !#3!3##'#-kⱸpJW2`QjQs##767!#'&'!ʓdսxQPtՀ`>YY~b҆12z(k{`! #4'&'##767E]kKV:VS8V‰Jl&VtO\KtU'4! !#'&'##767!#3!PtՀ`ʓdսUn>qd2z Y~b_49n(.`! !#4'&'##767!#3!7kKV:VS8V‰]w&VtO\Kt`?sVsmKR2&'&# '&547632327654'&+5327654'&#"567632#"'&#"373<[`VGgr?Gc.Id[U?\[OOQRSrsdeY憆GGPQsVLU*( u^Ӌ&) C`HQ-ZAyzJI;$& hi|UV!`bf$*$CW' 5 [tfIP%27654'&+5327654'&#"5>32'&'&#"32&'&# '&547632 373KW;6NHtCDFEwGQPabLqr<>1-[L83,-F@.. NO]@A`#Lc " 8Q;D$Uxs2pV`RsqqM{   $ !&! 6y4z Q {40ʜќ'2'&#"#3 6??DI"GT8s "C=22{2'&#"#367638:&%A=\^PfB{7 `TpO3'l#%#2'&#"#3 6??DI"GT8sk  "C=22f#q%qq/s-)R%327654'&+"'&'&'#";676762# '&76!36767623 !#"'&'&]rr > .rr. >._- > ^ >‘  tӪ ҫ q{&P%327654'&+"&'&'#";67>2# '&5476!36767623 !#"'&'&r-HVV?- ,4, -GVUH- ,4 .xt. 4 .wt. 4 `ta  _tp_   颈   袉   s# ,=(d# s3 @#'##'##'3276=332764''3#"'&'#"'&4673~d2222222dhI}rHGFFtAGCT_8d{{ђed''dey{d;]TC3dddd'mihhimw'AFf^^^^F( &#'##'##' 433237643%$d2222222daƏޏƛ_")ddddR@O@*sV'!# '&76!2&'&# 3!#SvwhfstkSh$#G_//ӂqV{! '&576!2&'&#";#UQQLNONPccccɖ#+qr͹rq247'77''''7'77'7;id}}didid}}did}}d}}}}}}d}}}Bz/!"'&'&'&547676763!476767623 8  8 g    )M6323&'&#"6][F80 v OV|xH/*$MHMC)("u!#3~~"u!53#5!"@~n~F`+++ +`++` i+ i  X- #)/'7'7'7%'%53-#%5#53 3#kyo\wyo\zV\Ly[`@¬@_ӤRӤRZy\yW\zn[wyo\ԤRԤR߬@¬@Vm!#!3!3#332673#"&3jv cSRav ժV 6978w{zV8!##333#332673#"&{v aWV` v }`9VKKJL!!2#!#535334'&#!!276N訨ʨONDNOQQfDCDC&E 4'&#!!276!2#!#5333>CB>ytts9L^*..+URRRя>'+#!2'674&+327'7Uj~ rGj#u~{Sqrے-,9/~V{)%'7654'& 32'#"'&'#367632*nOSTTSSTFoWl{XY::YX{ ]ststsjts].01d d01j@ 1/03!3!)2$ F1/03!3!`:33Gj 3!!!!##G)#ʂ>8` 3#53!!!!`۪ f#!!!2+5327654&#)qmL>87||9ժFwrKK"V `#!!3 +5327654'&#rFRRQn!&&1`GQ``07 );%3###### 33333Wk)ʖ4ʕ4A99ddG2`%3###### 33333Ul!rrTqqיL  U AAu&z9u|&zj%3###3!E3A1wH`%3###338ǹ%L#`j'#373! !#MMddM1IQH`#5'#37573 #e@@ek>`8R!j#53533#! !#ɨʨ3QwH1=3 ###5353!s%kǹ}}`#zz2 !5!! !#=3+wH1*` !5!3 ##8%kǹƚ#!!#3!33#q"9dA@`%3##!#3!3WL`3 #!#3!!;"+9d` #!#3!!WJ`3ͪft#!#!!2+5327654&#;"rqmL>87||9+wrKK"V!`#!#!3 +5327654'&FRRQn!&&1:`GQ``07&.s-'1?%&47632327#'#$'&76!2.# 32767654'&#"Ed`_fJxuTGIRDLżSu^\yI0a++IJ++}}֝s?] bh$">7^覤.$?xEGEFyqR{ ?%67654&#"&54763327#"'# '&76!2&'&#"3W!V0),3MNNM'8HeZ>FR5<UQQLCZIUccUTqHT*.N›WXXW,4#qrtssu''z-qu{'z %3##!5!!A+6` %3##!5!!xB1BL<=V`%#3 3;^^DNl 3 3!!#!5  f=V`#!5!3 3!;;^^F|.Nl=;%3## # 3 3p\Y/su A{+3;y`%3## # 3 3q!r))kLHJqG%!33#!!5!!+A+B`%!33#!!5!!xZ9B1B9L|%3##!"'&533!3_qm||x˪Awr7ٟd`%3##!"'&=33!3f\45h)L _Vu;;#"'&53;333###;qm||֐wr7ٟ9d+`5333###5#"'&=3f\4+ _Vu;0!2#4&#!#zqm||wrf9dK"*76! !!267# '&'&=3%!&'& ":Cppoż vzKB@bHam`_F$$UgkL>D9||f{%."'&=33676!2!32767'$'&&'&#"XY`09Jt⃄ fgjdcbchneNRS]\RZF1!&łZdc4*ZZWWu'Euf{'F,(vm' [uFH'f532+5327654&#!#3!qmL>87||qwrKK"9wV`3 +5327654'&#!#33^HRRQn!&&,%wGQ``07$)`6V!#!567!3#:bCux+8.%5ժV.V+` 3##!56765!{{v^̳;bVdžf;%!#3!3+53276q"L>87h_9dKKV`!#3!3+53276WRQn!&`3``07V!#!#3!33#;"9dժVV@`!#!#3!33#W{`39V%!"'&533!3##_qm||xɪwr7ٟd+`%!"'&=33!3##Hf\45h)p_Vu;;V%3####! !+-}-VV`%3####! !H{˸ʲ>?V'P`yOh'J+1@oo]0{-&O"+1hN& u  +@ 0?  ]1{-&jR -( +@(o(P-_(@-O(0-?(-( ]1H{o{m' u@@]1qH'@p]1uQq{uN'  uaq&jTb(vN' QuF'jN' u&j:yXL/`T31'q;y'q3N' uy'jsN& 'u +@ @O]1qu&js +@ @O0?]1s}qu{7sN&q 'uqu&rjso#N' guq&j#1'qr;=V&q^#N' ru=V&j^#k' ru=Vf&^N' u&j^j %3##!!)Aժ` %3##!!rL`FN& u&j 3!!"!"$54$3!fONDNONNCD#CD+fq` 3!!"!"'&763!5>BC>9sttyLZ+.i.*RRPRUC 0!"32765#"'&54$3!3327653#"'&NOO_KV! 3j^nN?4pi;?nhf1CDP_m}`61f[JJOZxx9qs` 0!"32765#"'&54763!3327653#"'&=C>A@j\-1C]^fety>dhd.*^\:9m4l01a`RUaPOORAsxx%74'&+5327654'&#"567632327653#"'&'&\]OOQRSrsdeY憆GGRQ?4pi;?nhf0!JK;$& hi|UV!bb[JJOZxx8PaF|54'&+5327654'&#"5>32327653#"'&NHtCDFEwGQPabLqr<=ih<>dhpb8f83,-F@.. NO]@AHOHXDEORAsxueV<)!#4'&+5327654'&#"5676323#s\]OOQRSrsdeY憆GGRQJK;$& hi|UV!baV|)%3##4'&+5327654'&#"5>32ȻNHtCDFEwGQPabLqr<dhpb{v^̳;b`WORAsxue{-`327653#"'&=!#3!zgh<>dhpbW`WORAsxue{`3s*qO{$f327653#"'&5!5!?4oi;?nhin+[JJOZxx}q`327653#"'&5!5!x>=ih<>dhpbB1VFEORAsxue{~{R|?=` !#!#3!ff`G [`3!!!!!!!! j /t`Ӕ&{o{,3>%#"=!.#"5>32>32#!3267#"&3267%2654&#"JԄN ̷hddjMI؏`TeZi߬oZ^#Z55*,ywxx..''``f{bsٴ)>>` #% 54)3#4+327#!5#53!2x9||ԙf_ڪrĐq{Fh`32654&#%! )s7F0Ǔ$h` ! )#53!#32654&+7F0ɖzٍ`` !!!!!! /`Ӕ|1#"&'5327654'&+5327654'&#"567632p<54& #.54! ì++f++$$>:#tNPƳPNM]*U3MY + 3267>54&#"'>3 '# 5467'7*(Ou))Hn.Mw834OMx43N)gA\*g>}66]C_56`?`q{ '25!.#"5>32>32#"&'#"7326726&#"qN ̷jbdjQGьBNZ44*,nmnmolkp#Ęq/u{ 4&#"#32/8qu/ 32653#"4/8`!2654&#%!2#!#N[cc[H^VV^>E"`2`!&'&'3;3!"'&546#"37545â?;;a|lkp w?@@?wS66^2q$%PQicQ++ST**<m``$ &5# 65#sٹ};ML+%!5!2654&#!5!#TZ`fcL||BtM5353!5!2654&#!5!#Z`fcxzʤ||Dv/{"#!5!2654&#!5!2654&#!5!#|v\`gb| Erurw?yz=`YV5`ZX`]x`73264&+5%5!2 'Ӏ{n Fo}ɽBdd>Jm7{3!!I{/=`N`!'`D``Z_`367653#5&'&3U9VˆmmV9S`1Ms,}},uM(`56765!#!)4YkO!{v h !3#'!#ZgVXVq`!!!!!5!#!.AeW"___DXI &327654'&#327654'&#%!2#!g1221g̼^-..-^EOO)(N^h+&&MO%%X@? ]65dL.- rUpz 327654'&#%! )[ZZ[vNONN]eefe !!!!!!R-@___S !5!!5!5!5@-_/__H~$5#5!#"'&547632&'&#"326NJYXe|}}|\SRFFPOWWVVWCj]/rssr'y5UVVUL 3!3#!#΀2Wr3# 3+53265A@1(TFDE`Tli 33 ##-<azBm3!!_ 33###|{9="G 33##|_{EEG ##3G|_{EDEH"327654'&$  '&RQQRQQQQwvvwtww[\\[[\\[\vvvvuvG>@"327654'&327654'&'52#"&54767&'&54763sCDDCstDCCBR65<%j<=0ER^X65`l<=ca==ll*6RI)++LK,++,KL++5##,&)$%LY+8:6iG2278PyAAyP87'21I.* 32764'&#%!2+#Y0110YQQQQ))))]?@@?[ #'&'&+#!232654&#=)&''y.,,LPO)*s\^^\$ )(GTD<32#"&'#3t4554455$pMPPPPMp$uuc@AA@@AA86Z[[Z68^gG3#5#"'&76322764'&"Jtt%78NPQQPN874555555S^8Z[([Z@AA@@AAG#!32767#"'&547632&'&#"@AsC?>>>BADbc^]SSt44Va:: 2j88a WW[ZQRmT3210YGH@ 2KSKQZKT[X888Y1@   /Y05!.#"5>32#"&73267GsC}>?CŻthVau2koamTebXTb2&'&547632.#";#"32767#"&5476G&%HG{065>=f,K,,+*Ib]W-155_;65-9553+,$$4O,, ^$'U13 `fa<))R`1#"'&'532654'&+5327654'&#"5>32FLHG{065>=23-KX+*Ib]V.156_:65-9j2RQ,+ H4O-+]4$'U 12  `33a<))G 14'&#"327#"'&'53276=#"'&763253J44^]4444]^4PP=7633223r99$88NOPPON88$tm=>>==>>FNO e 45k37XX"XX7_z3#53ztttu 33 ##uuZu2u|"2@ $ #32>32#4&#"tHKYhuu'oMLl+yRowtHJZiw[Wk\sa97EBEB~wZXku4@ zx66X6VYYk\sa8BDG 6@ KSKQZKT[X 88Y1@ /0"32654&'2#"&546]ml^]ll]ǁqqpoWGu 67632#"'&'532764'&#"G0336^_]^:5311213p?>>?p3121 XXYY _ ?@@? G4'&"#4632T6667zWVoBAA@qWWG27653#"'&56667zVWoBAA@qWWu#3>32#"&$4'&"27uu$pMPPPPMpf4554455b_86Z[[Z6@AA@@AA#3#;#"'&5#5350Hww33UUPM,V-,vTPn3327653#5#"&nt''N^67tt+78Jy~{Y,-65\c`9nA!5!27654'&#!5!#Ue22<KLg#"FS10gg%dAl88u{(#"&53327653327653#5#"&Q+<=Rnxu$$IZ54t$$KY45tt(78LMlE!"z[+,64\c[+,66Zcb;F&33#&{{y #! !&'3254554#"t nυ9F}攥^ؙ83a _{3#5&+532{t<,||GXG+&#" '&54767&54!232654'&'&yAJZVWVWW!/bL+"766^]l9=P(r(B4?KWXXWr]$,O'(@?Ajp69F  )"2765&'&'2##5"'&5&76734 );=66+#[NSXT~s~SVWAg*$760GQ:5}t?3XJOZUUXR=\ ,Ajq@:%'#&+53;'&^sa,(^ra,GX]:DFYyh[duudnsd&sdyodsdGSdF xd%tdV{(!2.#">32#"&'#32654&#"aQQR9||9F,*[cbbc#Lt`5!#3#3!53#53t𰰰त TV/%+53276'7#3/F0j&*06G#367632#"'&$4'&"27tt%87NPQQPN78f5455554_s^8Z[[ZA@@AA@@Gu&'&#"32767#"&54632u1122q>??>q22110h;533` @??@ _ GKv+325&#"47&'&54632&'&#"632#"Z%0\R@5`$^4412/412q>??5{3 * &;/Z ` ?@@biG.&'&#"32654'&7#"&54632''7'37 i:;n\[nO$$ZY drP =67Tb1#"'&'5327654'&+532654'&#"5>32N+,QR2658-56:_651.V]aIV-+K-32==l/|GHL ))unn77wU:8P#P,i/0\#5333#3+53276=zrrtno43r,BP#P x66XU G ,5#"3276#"'&'53276=#"'&54763J]4444]^44tPP=7633223r99$88NOPPO>==>>=۠NO e 45k37XXXXn3327653##"&nt''N^67tt+87Jy~{Y,-65\cO9I 5333##53#Irtggttt\\jz~ ;#"&5C,rfpUWlwI 5!#3!53IMjjo\\E\\I!=!#3!53Mjjo\\\\E\\V`3#"54;33#'#"3276ztteztry "3rKNB ,|ssW?#5$ z~3;#"&5ztC,rfSVXlx[`+53276'7#3`34r,Bttax66XS gq3!!q_u{467632+53265&7454&#"#4'&#"#367632+=32#4'&#"43r,B0t*pJz>?t'(N^66x66X6V~a88BDwY,-56\uU 4'&#"#367632;#"'&5P''N^66uu)89Jy?>0B,r34Y,-56\sa8BDzV6X66xq 33##q-{{~G 2#"'&5476"!&'!3276WVVWUWWU6//1w &6^]6&WWWXXWWWW@9\[8E-AA.G&.#5!#3!535&'&5476767654'&OpFVVFp^nCWWCnt6%66%4#76$\\FWWG\\FWWE[*,ApoA-9*A@+Fa:.#"#"/;#"'&=32654'&/.547632;1j8W*,]({44MN9> 0Br34@?>=RX l)k`GF@rb/$+*MW33 V6X66x"j2-*TIX00476;#"+5326z73zno>43r,B0]Me30U:Jx66X6#3#;+5326=#"'&5#5350Hw43r,B033UUPM,ax66X6V -,vTP^!533!33##5#"&=)3276^ntgtuut+87Jy~''N^61\\`9Y,-6/G&5!327654'&'5!# '&54767GE()78Z[78*,?G$"ZYYZ!"J\{':?KY7667YR8>#{\8?>LRRQRR<=:u"&5#32765#RHuDEEDuHPZs{>??>{}ZPz31+"&53?27654'&'&gH#"YZ,rftA Z87)2:08?>LRRlwpU67YQ8C&# #3{{ s7n !!!5!G'L\^=R^7!!#;#"&=!5!G'LC,rf>\^=R VXlx ^7^n#47#5!5!3632#'3254#|`\'Ln& m,7!!^R^=jR37!2#"'&'5327654'&+5!5!hCQ>63``;??C5~Ex>?::hn\& =;M|CD m**PJ*)]R^G !32767&'&"2#"&76So/6^]6/ +66,ǗWVVWVV*MWXMmGYXFovw^wwwv.h'${.-{&kDP"%@'uE"%"E"%"Esu'k"Cv@,quf"vCP"'@qn'uG#'qZ#zG"'qZ"GOw"'z[quZ"Gz'*'qZ'^*GZ"( q^' HZ"( q^&H "(q{"Hv"(qv{"Huf"(c@9zquH"H#zK#P")v@/P"I @s"*2"qVZ"JI;P"+@d'uK;#+d#K;P"+j@d'uKt;"+ztd"Kz9;"+ 9d"Kv",J'v8"LB33@YZ", tF" ajk".Cv@,l' ZvNj"."Nj". "Nvj#/#Ojk'*u'/H1#q;[j"/'"OC}33@j')/\')Ok"0CvB@,f"PvP"0w@'FP#t0{#P37' \1d'Q3#1d{#Q3"1d{"Q3''1d{''QsZ"2 fqu "R sV"2 lqu"R'jo rsZ"2 jqu^&R sZ"2 hqu^' Rk"3CvA@,Vf"Sv2P"3@V'STP"5@J"UT#}5J{# UT3cqz2@@n~J"qT"5TJ{"UP"6@o&%V#6o{#Vk"6#ZCv@,of"V"VvW& 6o&#"P"@o"*P"7r@7/"W##q77#W"7b7"WB<33@'r'77''&W)#8X`#{Xv)"8vX`"X)"8X`"Xu)Z& .8X&+v)4& 28X' Xh}"9F=7"Ymh&9=`&Y^Dr' |:V5k'C ZDr' |:V5m'vZD4'j$:V5'jEZDP":@V5"ZGD":V5`"ZJ=;P";@;y"[g=;N";j>;y"[jfP"<p@=V"\f\k"=C@,Xf"]\"=X`"]1\"=X`"]d"KfN"Wj->V5"ZB=V"\{a"D/P"A@h#${-{#!Dh&$u{-{&DTh:"$ {' Dh:"$ {-&D h["$ "{' "Dhu"$ {-' Dhm#{-f""hZ"$ {-' DhZ"$ {-' Dh"$ !{-5' !DhY"$ {-&D h"{-"3&(q{&H&(uq{&HEcL@33(q7#H:"( q' H:"( q' H["( "q&H "u"( q' Hm"qf'&Z&,#uD|" &,.&Ls&2'qu{&Rss&2'uqu{&R}s:"2 lq' Rs:"2 jqu' Rs["2 "jq' "Rsu"2 equ' Rsm"'quf's&sgk' 'ubvf&vscgk' 'ubvf&Cscg"b'uv{&c}g^' 'ubv7&scg"b'v"cs)&8X`&X{)&8uX{&X}_k' uqif&v{r_k' uqif&C{r_"qui{"r}_^' uqi7#r_"qi"r{r&< r|=Vk&\C!#v<=V`#t\&<r|=V&\`EcyL@33<=V7"w\qa&;pqa&;Hqf&;qf&;qf&;qf&;qm&;vqm&;Dha&#ha&f'|f'f'SXf'om&1Qm&xNa&?Da&?9f&? f&?%f&?Of&?R-a' -a' 7f' |If' f' "Sf' ^oVda&AVda&AVdf&AVdf&ApVdf&AVdf&AVdm&AVdm&Aa'"a'"f'"|f'"nf'"3Sf'"dom'"tQm'"Nna&Cna&C f&C'f&C<f&CQf&C=nm&Cnm&CAa'$5a'$Kf'$|Kf'$f'$4Sf'$po"m'$Q)m'$Nqua&Ixqua&Inquf&Iequf&ITquf&Iquf&Ia&*#Va&*}Of'*v|Yf'*f'*6SPf'*wo*a&O=*a&O*f&O'*f&O!*f&O`*f&OW*m&O8*m&OIa'/bf'/f'/6o3m'/LN(a&S^(a&ST(f&SY(f&S^(f&S(f&S(m&Sc(m&S^a&3Nqa'3if'3|uf'3Cf'3tSyf'3om'3BQPm'3Nqf&;tqf6f&?Tf7Vdf&AVdf8nf&Cf9quf&I{qufV*f&O0*fW(f&SM(fXqVa& HqVa& HqVf& HqVf& HqVf& HqVf& HqVm&  HqVm&! HVha&"Vha&#Vf&$FVf&%FVf&&hVXf&'Vm&(Vm&)2Vda&6 8Vda&7 8Vdf&8 8Vdf&9 8Vdf&: 8Vdf&; 8Vdm&< 8Vdm&= 8Va&>Va&?Vf&@Vf&AVnf&B#Vf&CTVm&DdVm&EV(a&n YV(a&o YV(f&p YV(f&q YV(f&r YV(f&s YV(m&t YV(m&u YVa&v\Vqa&wVif&xVuf&yVCf&zVyf&{Vm&|PVPm&}qH&;zq&;qyqVf&~ HqVz&; HqVf&6 Hq7&;nqV7& Hhm& uh1&q;f&BRhfVh&xaV xaH <ܲ?]1 Դ?_]KPXY̲?]90IIPX@@88Y#55#53xgJ7FJm' jVdf& 8Vd{&A 8Vdf&8 8Vd7&AVd7& 8f' bRuff'"nRfV;&"f' f'.BJm' nH&C$n&Cqn&C.x7&C.zm&C0gm&$ .u[1&$q0;f'$qR}f~f'f'_Jm' *H&O'*&Oq$*&O*:Va&KVa&K*7&O'*m&Om&/ vu1&/q;f'/Rf5a',F)&jlFRfCV(f& YV(`&S YV(f&X Y(7&SOV(7& Yf'*;Rff'3DRfNV&3sRfvxaH ܲ?]<1 Դ?_]KPXY̲?]90IIPX@@88Y53#7"͔gd10!!ddy/10!!yy/10!!yy/10!!yy/10!!y"__J&BBB@ 10#53ӤR?@ 103#ӤR՘?@ 10%3#ӤR@#5R՘?m '@   1<20#53#53ӤRӤR??m '@   1<203#%3#ӤRӤRլ@@m '@    1<20%3#%3#ӤRfӤR@@m #5!#5RmRխ??9; '@  YW Y <<1<203!!#!5!oo\]9;>@   Y W Y <<2<<2122220%!#!5!!5!3!!!oooo\\3!   \ 104632#"&3~|}}||}3q373#k%3#%3#V #@   1/<<220%3#%3#%3#ki3#iq L #'3?K@D$%&%&'$'B@ .(F4 :&$L%IC'1+C =  1 =I 7+ ! L9912<<2220KSXY"KTK T[K T[K T[K T[KT[XL@LL878Y"32654&'2#"&5462#"&546!3#"32654&2#"&546"32654&WddWUccUt%ZVcbWWcdWccWUccܻۻۻۼܻۻ q r "-7;EP\"32654&'2#"&546"32654&'2#"&546  &54%3#"26542#"&546"32654& WddWUccUyWddWUccU<¹ߠZucbcNWccWUccۻۻۻۼ5ۻ(`3(`u(`&--,(`'-,&--X(`#3W`u(`&00,(`&0'0X0, #'#Rs#G@%Bon29190KSXY" 5s-+#R#I@&Bop<9190KSXY"5 +-#^R^  "K#N##=NO'^O$#5>323#7>54'&L Za^gHZX/'-93A% #C98ŸLVV/5<4BR-5^1Y7| B_ % ij991@  <202$7#"$'56:<hh~vvuw~ign % ij991@  <202&$#"56$6;>nvv~hhgi~wuI3 # #bbc$$v=# {# { 3_Cn@`+@B10KSXY"3#-\X 3!!#3hX^#"#JX 53#5!!53X^JݏޏI&""fJ&"JJ'^"o%3#5##5!!5!3#$2åfffC4f; !333>54$@fNݸ( 3+"&5463yv}~}|( ';2+v~}O|}=k {B# #3#3ӤR#٬@n&:;=o#  BC##H1a~;8| #'7!5!'737!!qaqqaq)`rrbqr2 535353,(`$'-,&-'--XfN 53!535353fXp fN 5353535353,p  3#3#'d 3#%3#3#3#dipD %53535353#!5!3!,|f  feP> 3#3#3#>w 3#3#3#3#W "27654/2#"&5462332233VVVVVVVy@ <<1@03#3#zttttg? @   ] <291<290KTKT[KT[KT[K T[K T[X@878YKTKT[X@878Y@T /9IFYi       "5GK S[ e]] !33##5!55bf]myf !!67632#"&'53264&#"y^^a`<~B9>>Eoo4h6_ MLKJq ff\/"327654'&&'&#"67632#"&547632X3333XW33331221DD &9:DTTXWll122m45[Z4554Z[54bg KL1LMONuv l!#!liH30Y *:"32764'%&'&546 #"'&54767327654'&#"55j]\655T./RQ./SZ85UVUV56-/.UQ100/SS0/*,+KLV,++]12Hdt::dJ01:7PyAAAAyN98?&%%$A?&%%$S.532767#"&547632#"'&2654'&#"1220DC #<9EWXWXkl122Xf33XU5443g KK/MNoouv rh\Z4554Z\44k !!#!5!Q_i_k_8_83!!'3_a!!!!''^_o #&'&4767TRRTe^///._~g3#676'&ge_/../_eT)**)~~~u0@ 32tNN^luu)qJy}wYYk\sa88WTZdC{d^TtdbTud?C\dfC]d\T^dlC_dYT`dSTadbd8cd ddoifedgiffdMdGdGdu!sdGdV##"32.#"3267!!!!!!Oc%eNLbbL:/667756GFDFG ks9'.473&'3267#"'#7&'#7&'&76%73&'hA>/(%:@w]ayA9&AX}R4>C5Ai<)^_HH?WghйKp(`,%6767# !2.#"3>32.#".aXj]aye6{_]w|^0n&<$'/_HGghGG_^ٜu]\Y!!!!3###5qZpP~WHE9Eb#!!53#535#535632.#"!!!5-쿿=OL=tyB_))HB+#&'&#"#3676323632#4&#"#̪m49wSS>YXyzU6%X\xruxGM_a`f21>&>E3\u"&)''#!333#3#!###535#53355KO8~8~OO4&{{&&{{{ P32654&#+#!233!!;532654&/.54632.#"#"&'5#"&5qzzWQeGl`[z_<`HJU];Ufɘ/ϒjqqR>N#55YQKP%$((TT@I!*##`3E326&##.+#! 32654&/.54632.#"#"'&ٿJx}A{>[b`cae@fLNZb?ĥZa,/b؍$~3YQKP%$((TT@I!*;"&)-1'#53'3!73!733#3#####5!73'!!7]:1000019]zu }Luuguuguuuu_ % #4&#!#)"33!3_SV*$oN"1@: "+ /) 2+"!)#&  , & &*!/<29999999999122<20K TK T[K T[KT[KT[KT[X222@878Y@z  1Ti lnooooiko o!o"o#n$l%i'i-  !"#$%&'()*+,-2   USjg ]].#"!!!!3267#"#734&5465#7332[f A78 ʝf[Y`(77(6bbiZȻ{.# .{ZiHH"{/ #/{"G(33!!###5uX_Tws1s!5!!77#'%5'&PPM4Mo؈onوn9 -bw'67>32#"'&'"326767654'&'&67'>7632#"'.'&/#"'&54632326767654'&'&&#"32">1aJ{%A01Q[W7>/W1   >$<  . #dCw-^URB$`>DL_K>.3b @N\uLMiI(S395l9,8G(/&  -9)ЗiRm:3Xwdg7? 2j7#=5(6$ 629T/ (2M !:5S}$@{mbq~Es/4 -& "TAB`]|@8nRkcd]aC".)5'632327&547632#527654'#"'&#"%654'&#"o|@X"07PYtaTk~j[IwmqJ2530D#24!`NkBX``S㫣†qJ323!!!3267# $547#5\J5 ;_srigCS1r{jJ,{ +kv67&&UB{\* {;^~FE/0K?{w!,&'&#2767#&'&576753w[TUeeUT[Y\Y[dsye]Y\[CvlCi----iH$"u9Bt"#BuflC3!~d=!5!'3 G~d=z!#'73!5~~͛=z5!'3#7=~~d͛C $(B"326=7#5#"&54634&#"5>32%3#.#"3267#"&54632pSHfmƩogDc\GD^o8yy8o^IICBRCI M >OW\ 7$44"s''%# '&76!2&'&#"3276%'jwvSvwhYbyyb#uH$$gh$#GvA&44-44&[!!&rG&F Au>R+,/-/ܸܸ,(и(/A&6FVfv ]A] и ии# /!"+!0153&'&'6767!!5&'&76wI3cc3I86QLNN7887NNMR48_ki:rq;zn #++$ * rn<(2.#"3267#"&54632%3#"326&$  &54^o8yy8o^IICDkavva`ww~44"K <M-1332653#5#"&.#"3267#"&54632%3#\QPcu`^o8yy8o^IICDLriuD P44"K&"r)3!3%!!!!!!nnq  dx+%H#>54&#"#3>32u j_ y/wFx \/HT^Ȧ^m$R"b67632#6&#"##7373!!UcduLK-]| {@e22wx\}}jF!2?632327654'&54?#"'&#"632327#"&#"jou9!ydG>PPPP5ʺ68^nm{z}}ȋo֏zZ'PVaK~pmdykb^OP681/::b:&3273#"'#67&5477632654#0)W:KHJ"&>&:(^^&<w/8؍$~h\ nj%TX$ /!/ и/ ܸи!ܸA]A)9IYiy ] и /9 ///+ +0132654&#+#!273 # #s sNCI/ϒ_6۬kk('4.#"#"&'532654&/.54632733###UW'AG/E8pi4sG[d/EK7?8pc|3iиY"*/( VAO[`*,2,* M=H\T(l0`!!#!!!!!!!3!!rso+` `ffff'F >@!    b b cbc91<<2<<903#######5Jq7rqr/B^^\ %#!!!5!8kO8d qddd N3N5! 5475!!! 4'PDz?1/a#Laָv5(j.hm}Y-)% 7673 $54$32!"53!25&'&#"C]JjMo_zggJF__DM3TT<`xGZAEIpP3RQ4O# )5!!5!3#PʪhJ) 4&#"322#"&54WOmVPm˜ݢt}t{أأg6 4'+5654/&54?'&547 '&5474/c2>Bd=VE/b5c2ltc2c2uc1LS2?Bdjl,>8?]/c6gUc1LS2tc1LS2c1LS2 L`  !!!!#!3#'!#33 # #DjwZDZ֏R``C5MR.}F`AE%5"'&'&'&5#32#"'&'&'&5#!#"#4763!#327673#8,9_:9A9HG =Zd8: 7$;Z4@'5 AY m7FET33d*LK ,s|OO'vN 2wx87tKsO=  =d01 PD10d^dTd6Jthi[{ (232767# '&5477632!7!654'&#" N&#G_yZ\klmk}Z5fF 9NJC0<7h:J(u*oDMcFPZd82vRsO 73#3#!!džP.Nd`V#676#732767!3#5ʆ#5H2K1i0/N)de".еT0Hd01``;&0 #673>32#"&'532654&7>54&#";B h]h202޸SUWDi;2[UԠ_I@Yr~YW׀c?}<$$/1oX3gQX?@X"{'z5ud^X"t'z5ud^"{'z5]d^^"t'z5]db^"u'z5]d?^"\'z5]d~"{'z5^df~"]'z5^dw"{'z5`dbw"u'z5`dfw"]'z5`dlw"_'z5`d"{z5,'&,,&,',,(Q&,9h9&9,,&9',, &9',',,-&,;=;;=&;,=B&;',,j/s'&'0yL&LLpY&L'LpLA&LY=`Y=&YLD=-&Y'LDL=&Y'LD'LL$J&L[;y`[;&[L[;D&['L[LyOq{FqZG{Py }  ) !3 !## !5hPPh55~ji.,w# + ++ A]A)9IYiy ] A]A)9IYiy ]%"+++ + 013 !#3 #32654&#! )5HHNhPaY.,职~y }(1C3 !#53 654&!#32# ) !#"&546;5# !3# !3`5HHNjNNjNNHH5/b!ji~߁ó.,s'H{&d?8   2@ @@ 00 ]1@   990@   <<@ <<KSX << Y5!!dx=xUZxx @   991  2@ OO ?? ]0@   <<@ <<KSX << Y3'#'-Zxxvx<xuP8   2@ OO __ ]1@  990@   <<@ <<KSX << Y'7!5!'7Pwx=xZwxx @  991  2@ @@ PP ]0@   <<@ <<KSX << Y#737Zvxxx76767632&'&'&#"#"'&/#7!#/)85,0F"<;NJX[GR7<"#!2)85,/$#?2WG[XJN;?,!F0O<:" %7xxUZxaxxaxuP8 '7!' 7!'7Pwxx>xaxUwxx>>xxwd?8 !5!3#xwx-xZxY %'3'!!5xZxZxvx檪uP8 #3!'7'7xwx-\xwZwx !5!!7#7\xxZxx+xvx7!!5!7'3'xxxxxZxxvxxvxd>%52#!5! 767>54&'&'&>42/+-+-':1 Hxwxܪ-)o=  xwZwx(.46<=69)-d>>3276767654'&'&'&"5476767632+#5!5 6 +/24>A1:'-+/24>xwx  =69)-(.46=<69)-xZxvP>54'&'&'&"3)'7'7!#5#"'&'&'&5476767632# 6 +lxwx>42/+-':1A>42/+ׂ  xwZwx-)96<=64.(-)96=dP8X#532267676767632267676;'7'7#""'&'&'&'&'&""'&'&'& xwx 0$#$   "%'-0$' !  ' '- xwx  ('Z&("  "(&Z'( -xZx$ -#%"&* 'xwZwx ""&*  *&"" dPF%'!5!!'7'7!pxwxpdxwx^:5xZxo:xwZwx* %'7 !^ b9YXxbZ  #!5 xwxoxZx[ !'7'7!#xwxxwZwxZ  !5!3 ixwxDxZx[ 3!'7'7xwxDxwZwx 7#7!5xwZwx=xwxd? !5!3?=xwx-xZx,-eX&7#754767676 #4&'&'&"9xxZvx.-\ZnllnZ\-.BB54'&/#7!!#"'&'&'&54767D !BB54'&x\-..0YXplgtTY0../Z#,@#B"!BB@RNJV]xwx]TQ>]xwx]xLii `iiT4]xZx]4]xwZwx]JiiiiuP8!7'!7!5!7!'7'7!'7!5giiyYuI0]xwx]uIiixK]xwZwx]Kxd?8!!5!!]xwx]7Qix]xZx]xi#'3'#'x\xZx^xhP8^xvx^huP87'!5!'7'7!5$iiQ7]xwx]iix]xwZwx]x737#73jhx^xvZxx\x%hh^xvx^8dP8!7'!!5!'7'iili\]xwx]]xwxiii]xZx]]xwZwx7''3'7#7iii]xZx]]xwZwxliii{]xwx]\]xwx  #7!##PU?,UvU,?UP5#'#5!#5'U,?UvU?ԄU4 753!5373U?ԃUPqPU?U 433!'3ɕPU?UqPU?,Ud?8!!!!5!!c$R&xwxxxxZxxuP8!5!'!5!7'!5!Q$܊xwx&RFxxxwZwxxd?8#''''#53777?(FncxwxFn-FnxZxFnuP8577773'7'7#'''unFxwxcnF-nFxwZwxnF3'!!!!#!5!5!5!'-Zx((ت&&xvxTrx#7!5!5!5!3!!!!7Zxx((&&xxrTxd?8 5!!5!35!dxqxUZxxa 3'#'3#3#-ZxxbvxrxVuP8  '7!5!'7%!#'#5PwxqxUwxxw( 737533-vxxvxrxv4k?9 !#3?xvxתx~\xuI9 !'73#'7!uxvxxvvx7?~ 5!! !!  d }*^V 3! !!d}*p  d HP~ !! !!    ^V #!# !!!d e n ^V !! !3 3!!!E*dr*r$| \d^V )3! !3#!5#3 3 ȃ\Pdx @t %#!5#3'!3!3! !33'ȡdxd:tZdd\nt^V%#!3!3! !3!5#3ĹtIt\Px^V%3 3!!! !!3 37r*kd d| ^V %#!5#3 3!3!! !!33 37ȃ:͊` \h u}~ 7!! !5#35! u\Pdx f:bȃ  zM!#7!!#Mc"?,^xc?x^zM35!3!5!73zpc?Jx^cr+a?^xJ^V 3 3# '! !! !  e   dCuP8)5A '7!"'&'&'&'#5367676762!'7$"!&'&'!27676Pwx 21@=:C.2  21@=:C.2 _x_R#)l$h$#R#$Uwx@21.2@@21.2@xw#w;',utP'7!5!'7!5!'7!5!'7Pwx===xUZwxתתxwZd?D5!3!!#!dx3xUZxmmxuPD '7!#!5!3!'7Pwxͪ3xUwxmmxwdPD3!'7'7!#!5xwxwwxwxmxwZwxmxZxd?D5!333!!###!dx⪪YxUZxmmmmxuPD '7!###!5!333!'7PwxYxUwxmmmmxwdPD333!'7'7!###!5d xwxdxwxmmxwZwxmmxZx7?@  !JBJAu}@ 7'!5! PJBł}BB7}@7'! ! 6BB A}BBh %!3!3۠ՈR+nm+A&6FVfv ]A]+ +0132#&'&#"327673#" B!OO!BzcI7͙7Ich-)b@'! '!* $$*9991990K TK T[KT[KT[KT[X*@**878Y>54&#"#"&54632#"&54324&#"32IH7$$0e՘ݢe WOmVPmmWKt,>bFأ[t}t{ !5!!5!!5>9+a53!#7#53#5!!5!73!!7!#h:@uJ5 c+^^`u](673#"'&'#7&'&$32 '&#" 32$767&'&YjiEd80~i?/c`RQQ$g'-"SRR:;nSz_'BTc_ N@DROg`8@91/90@cmpxyvn]] !3!^DC?`%! !3f<?I!!"$54$3!!!W?JGcGK@ sJxNL``ȟMOx]I&/!!!!3!!"''&'&54$;7#ؖI$$$GA?d`,,c?J;K@ 7ʟ 7c``JxN MOx]g% $54$)!!3!+*(FiNv%FrO:0QI&'&'&'!5!2#!5!676767!5?JGcGK@ 'JxNLȟMOx]I&/'7!5!!5!&#!5!2+&'&'&'3676767 I^Q$$GA?d`,,#?J;K@ 7ʟ 7c;JxN HMOx]g )5%2767!5&'&!5(*FiNv%FtFgP:1R, //01!!,wq@gg120!#!# }wq!#!# wJ}w; ]@    91990@0QVPZ spvupz  Z pp{ t  ]]!! !!5 7AJI3!-10!!ת !#!5!3!!5!--+}ת W+и и и / + +и 01!!#!5!3#-Ө-5+@B10KSXY"3#-\<%?P%73% %#'TUUTUTTUDGrHF103#F=} *@    91903##'%\sB}}`s-Pb;="us="\s %.#"326"&'#"&54632>3"31UfvYRIOF^_HDa+J1CXXjewߦ~XZ /@- !$'!!0 $*0999919990@     $$$   $$ $ ***///***55500055 5 :::???:::EEE@@@EE E JJJOOOJJJV !"&'()]]32654&#".#"326#"&54632>32#"&1TevYR1UfvYRF^_HDa^/XZie7XXjeߦ~᧯wI%!3!~,I%!3!G~,IA//+к99к901%&'&'3!!#4'!&'7`'JAW`LqR]+X* Pʋs^(Rs57756u5 +  // 9 9 901 7&'7%%'6 676r{EG%y44RW!L!$Ҿ &!L {JP+3#+fJ+ 7+и//9 90137#'PMVo)gnJ+3#3#@+fJ+{//и/ܸи ܸܸ и и// // 9 9 9 9013737##'[P]ME+qd @oxpAn!3# ih^T3 3##"T^32#4&#"#P(*7332653#"RP7*/%&@  & iji&1026732#"&'.#" #"&546327j Pd@7*8  kOeD=!0 l9TA6?&#Hn!bSA8?S/&%/D&'%JtL-6?676&'&'&'&'77&'&5476767654'&'SOJMG79GcBnnVsSOJMG79G]InoSu=,EG%,=,HK%GCD4K|oUFCD41IosV/HgjG$4.JhgH$tLMQZc676&'&!676&'&'&'&'77!'&'&'77&'&54767!!67654'&SOJMG79G~SOJMG79GcBnnVsSOJMG79GSOJMG79G]InoSu~=,HK% =,EG%GCD47GCD4K|oUFCD4$åFCD40IosV!.JhgH$+/HgjG$tLmqu~676&'&!676&'&!676&'&'&'&'77!'&'&'77!'&'&'77&'&54767!)!67654'&SOJMG79G~SOJMG79G~SOJMG79GcBnnVsSOJMG79GSOJMG79GSOJMG79G]InoSu,~=,HK%2=,EG%GCD47GCD47GCD4K|oUFCD4$åFCD4$åFCD40IosV!.JhgH$+/HgjG$tL.F54'&'&'&''&'&'77#47676767676&'&7#'7"'&1,SOJMG79G+3$('f55C$'SOJMG79GE35^H6H802&&gFCD4$'a8LCD55_FCD4 25DCL]HHtLD'&'>7'7'&'&'77&'&54767676&'&7=,HK%{C$,=Q HVVsSOJMG79G]InoSuSOJMG79GcBc HHJ.JhgH$M; +eHWZFCD41IosV32326ian ^Xbian ^V2NE;=LTNE;=K23276767632.#"#"&'gV^ naibX^ nai2UK=;ENTL=;ENl&#"5>323267#"''cDXbia]yeEVgia`yS LTNE+~F KUNE,F #"/&'&#"5>32326!!ian^Xbian ^VeoNE;=LTNE;=K`#"/&'&#"5>32326!!ian^Xbian^VeOE;=LSNE; =Kka$%767#"'!!'7!5!7&#"5>32^ iaBP﹉lZXbian$}o"DX"OEd8LSNE;I"#"/&'&#"5>32326!!!!ian^Xbian^VeOE;=LSNE;?Kk˪.#"/&'&#"5>32326#5!7!5!7!!!!'ian^Xbian^VLoKɦoOE;=LSNE;?KL˪s˪sC33267#"'!!!!'7#5!7!5!7/&'&#"5>327b Vgia'+\+zlh>Tm?u ^Xbian "KUOE˪Nt˪=LSNE; N;?@.9*-" *19" <-<<219999990#"'&'&'&#"5>32326#"'&'&'&#"5>32326ian ^Xbian ^Vgian ^Xbian ^VoNE;=LTNE;=KڲOE;=LSNE;=K43267#"'3267#"/'&#"5>327&#"5>29+Vgia@LJZVgia}9+Xbia@MHZXbi a KUOE8KUNE; @^ LTNE8LSNE;f@59#"/&'&#"5>32326#"/&'&#"5>32326!!ian^Xbian^Vgiaq^Xbian3VeLOE;=LSNE;?KҲOE;=LSNE;?Ky5P#"/&'&#"5>32326#"/&'&#"5>32326#"/&'&#"5>32326ian^Xbian^Vgian^Xbian^Vgiaq^Xbian3VײOE;=LSNE;?KҲOE;=LSNE;?KҲOE;=LSNE;?K"32?632.#"#"&'!5!5gV^naibX^naiUK?;ENSL=;EOȪ+  %5 % $%5$[g&Y%ZhӦ69%676767!!"'&'&'!5!!5!676762!!&'&'&[C-87VYYW6 8.CC.8d 6WYYV7 e8-,CE[<0[2332[39\DD+N+DD\93[2332[0<[EC,` !5!676762!!&'&'&!![C.8d 6WYYV7 e8-;++DD\93[2332[0<[EC,`'~ '~& ~'~& ~.'~& ~*62'~'~ V63& '~~` 3654'!!5!&547!5!!4434w~0IG00GG2?8>;_8`  "264&'2#"&546!!!!^HdddeH;k'**z{bFE``bq+((d:svv`K  &!56!!!![yKW`  3# !!!!6c'@` 33#!!!!'c@` !!'!!!!+]^*^]䰰` !3!!!!![Np!N NfQ`(/?GKO#"3###535463!3267#"&546324&#"'53#5#"&4632264&"!!!!}?$mmC???DJB&H#$J'`qk[Q_C<17CBB@,I\\I,@p`ctiF6A?9i=$#tu#gSSSP`"&*>32#4&#"#4&#"#3>32!!!!x!]?U\Z79EPZ7:DPZZV:;Su=:xoHOM]QHPL^P%U20=˨`$(,3#7#546?>54&#"5>32!!!! eeb_--B6'Z0/`4\o$-,jaN2A+,/-7#!^aO&E++ '>@"     <291<2<<990!!!!!'7!5!7!}/H{};fըfӪL !!!!!!ת4!5!7!!!!!!'7!5!7!5!DQ"rn遙RoLT˪˪T˪  !!!!!!!!K T@.B $# <2291/90KSXY" 5 !!@po V@/B$ # <<291/90KSXY"55 !5AǪV 3!! 5 !!@poV !!555 !5BkǪ!5!7!5!7!!!!' 5'`ȉ)P"_=6@ss1stFpo!5!7!5!7!!!!'55'`ȉ)P"_=6ss1stF. 5 5:6:6pr pr . 55556:86:'!67&'&54767&'676'&'{)#Y4JJ4Y#))#Y4JJ4Y#)AAAAGF㞢GGGG➣FG2;;;<<;2;5$?$%5%67$'W eĔd?NĔ])]o& bR)`q% Rd%'%5% >zmzF<˶@6 o@hGp%5'75%7-孈m%˶C@ʴ@hGp/V !5!%5%%%!!'/xvH-rf5LOlUrC@=Vlь=/V%'!5!75%7%5!!' GWb[mmNL>ߪwe=ت=$%#"'&'&'&#"5>32326 5jbn ^Xbh`n ^Vg@ND:3232655jbn ^Xbh`n ^VeNF<>LTNF<>L>)P14%&#"5>32%5%%%3267#"'&'&/' k Xbh`'+kuE%sk ^Vhjbn "Pv1-LTND9ATj͊LTNF<= &TN#wf=J;N} 55 58@'poN} 5 55@'pom`!-%5%%%'5%%5 MM`ZDOA@FZDt@m*_TW&o}䎲w&-r~bUm`!7/%5%%'%5%75%Jvad",,V`bL"_D2,/*/&O{¸[&}P %5$r osaa^~||P 55%$so a||^a)W!%5%5$gV$}]]x|)W3%55%$Vg}$BW|]]RW(%#"'&'&'&#"5>32326%5$ian ^Xbian ^Vg$}NE;=LTNE;=K$]]x|RW(%#"'&'&'&#"5>32326%5$ian ^Xbian ^Ve$}NE;=LTNE;=K$]]x|&%5$%67%'Et֋$k}uU)?eKtuu" K 9''567$'567&'%=⃹t֋~}uRU)?Kuu,ަK9'_%!"'&54763!!"3!ʊ@^`@ƍ^`_75!27654&#!5!2#@`^@Ȋʣ`^ȋ; #";3!!!!#"54763^`0rrndflppꊊ^`&pphƍ3 32654'&+ #!5!!5!32#^`0rrpp9^`phƍ7!!!"'&54763!!"3!Ɋ@_`@,ƍ^`7!!5!27654&#!5!2#@`_@Ȋɖ,`^ȋ '!";!!!!'7!5!7&'&54763!7!!ʉ_`'}E=aLT>scL0R^`5ƍ7 '327654'&/!5!7+!!'7!5!7!5!^`__BV 5cTpX?bLm>U`^`C 7 Xȋ5j )5!7!!'!"'&54763!!"3!.Bqx-qxDɊ@_`@Z54&'&'$  &'&'&547676!!#!5!]\LMLLML\]]\LMLLML\bc1111cbbc1111cbdd''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcbee$7!!"2767>54&'&'$  &'&'&547676r$]\LMLLML\]]\LMLLML\bc1111cbbc1111cbתa''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcb$3?"2767>54&'&'$  &'&'&547676''7'77]\LMLLML\]]\LMLLML\bc1111cbbc1111cbxyx''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcbxyx$7 "2767>54&'&'$  &'&'&547676pxg]\LMLLML\]]\LMLLML\bc1111cbbc1111cbpx''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcb$37"2767>54&'&'$  &'&'&5476763#]\LMLLML\]]\LMLLML\bc1111cbbc1111cb''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcbA$3?N"2767>54&'&'$  &'&'&547676"32654&'2#"&546]\LMLLML\]]\LMLLML\bc1111cbbc1111cbxPnnPPnoO@v+..''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcboPOmmOOp1.-rB$+E %#'-73%"2767>54&'&'$  &'&'&547676C4f4C4/f/]\LMLLML\]]\LMLLML\bc1111cbbc1111cb1XSXYS''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcb$!;!!!!"2767>54&'&'$  &'&'&547676]\LMLLML\]]\LMLLML\bc1111cbbc1111cbj''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcb$37"2767>54&'&'$  &'&'&547676!!]\LMLLML\]]\LMLLML\bc1111cbbc1111cb8''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcb$ ?3 ް 222   ް2/3ް222   ް201!%!!!!#!5!QX>ddYee$ T ? 3ް2ް2 / 3ް2 01!!!%!!rPX>ת\$   ' 7 %!%!!=kyykyjjX>xjyjjyk$$ !%!!3#QX>5J5 ?3/3ZZ///3ZZZZ0133!!upJ3 ?3/3ZZ///333ZZ01!#!!JupI3!5!<fI%3!!5<f|5 ?3/3ZZ///3ZZZZ0133!!Nup| N ?3 / 3Z Zް2ZZ///3ZZZZZ Z01!#3!!!!.NN$J !#3!!!!.$J R ?33 3/3ZZ// / / / 3Z Zް2ZZZZ01!3!!!#3GupJ o ?33 3 3 3 / 3ZZ///////3ZZ ް2 ZZ ް2ZZ Z Z01!#33!!!#3.GVfupJ!#3#3!!!!.cGGf$J33!!!'!'Ssj\s=u5Y6pJ!!!!'!#3!7!sjshxj56$$J!!'!#3!#3s6s=5Y6puJ!#3!!!!!'!#37!s:jsjG$-56$ 51  ^ bb:d 5! 5bd 5! ^bbb:yf%/2#"'&'!#"&54632!676"264&j95/-)*xzQ3Q3Txzw:5/-)4S9OOsOP,)fPNq^D^'B %  !'''tNP^D'B 5  5!''6bNP'B5 5tN>]P'B 5 'Nt>P`32?632.#"#"&'!5gV^naibX^naiUK= ;ENSL=;EOȪ^ 5 3#ѦZ^ 55%3#^//m.   5 5 5 :6:6:6pr pr pr .  5555556:86::6:.  5 !5! 5?@Npo.  5 !5! 5?@Npo %5 5!@op9 7 5 !5!?)W5$%5$Ti}$_|x]])W5$%$5iT$}B!]]|!&!%'&'57&%5$%67&%7*?;i@]0qw^%KA6#(AF+3273267#"'' 5cCXbh`^xnieEVhjb_zl]@LTND*F JVND+Fpo"%&#"5>3273267#"''55cCXbh`^xnieEVhjb_zl[LTND*F JVND+FͰW&&#"5>3273267#"''%5$cDXbia]ymieEVgia`yl]$}. LTNE+F KUNE,F]]x|W&&#"5>3273267#"''%5$cDXbia]ymieEVgia`ylS$}3 LTNE+F KUNE,F]]x| 7%'%5 '瞃۞L О  @Y8@\9@a ' 7%͞G۞О@?Y@<9@}5!%57%!!'71|Iv\' :qߦ[@Z8@_}7!!'7#5!7%%%9Jpv\]FGjq8@ǹ@ 3 %! $`yd ! ' 5!5!fB X!##mo##5oX33"mo!533oX^!#^k?$%%$~  1;FOY!! &546;#"&546 !54632+32#"&=54&#"3#"32653264&"2654&#l(ع(DbEDbbEEbbEDbPDbabbabDv(D(غPEaabbDEbbDbaaE DbbEDb^!3!Z?k6732#"'&'.#" Pd@7* l l9TA6?%Hn*u( #"&546323267u Pd@7* l (Vl9DTA6?%Hkn T !!!!%!!Bf6L̔4+x  #/;GS_kw+7CO[gs{ + ]b+]%*+%++]и/bи/*и/%hи*nиииии/ ++"+"f_+f:3+:++'и"-и3?и:Eи3Kи:Qи3Wи:]и3cи:iи3oи:uи3{и:и3и:и3и:ии/ии/ии/ии/ии/ии/ии/ии/ии/ ии/ии/#и)и)//и5и5/;иAиA/GиMиM/SиYиY/_kиfqи_wиf}и_иfи_иfи_иfи_иfи_иfи_иfи_иfии"ии"ии"01!2#!"543!254#!"+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;22+"=4#"=43+"=4;2+"=4;2"=43!2#UݓJIIJ%J%%J%%K$$K%J%J%%J%F%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%%%C%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%$%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%$%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%%%%%%*$%%%J%%J%%K$$K%%%%%JJJI%%I&%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%% %I%HJ%%J%%J%%J%%J%%J%{3 #pph # 3hp. !!#!#5!P #53sàȖ0kTs*3#*P- #5sȠ-Tk0P 35#àȖ0kTP*#3P*P- 35Ƞ-Tk0P#!!s#s*3#*P,!!s`,P!5!#UP*3#*P,3!5!`,X #4763!!"]oeD9יfV],#'&%'53 763<(enK==Pne(!<  _AE_  <X> 3!!"'&5]9Deo>ܚVf]>#3]J] 4'&#!5!29Deo$VfX,&'&3!3#76l<(enP==Kne(!< _EA_ <]> 3#!5!2765oeD9>יfVu(3(! !! $<>32#"&'#'%53%&  s:{{:!8#!rܧ$daad]chaam@j.!3!3:^ &ۺ+#+#+A&6FVfv ]A]A]A)9IYiy ]+ + $%+$01! 4$32! 4$#"35%33!??qqW|A?rpG~+/ 8?+3&+3+A&6FVfv ]A]A]A)9IYiy ]3и/A&&]A&)&9&I&Y&i&y&&&&&&& ],9+ + +0)+001! 4$32! 4$#"!!56$7>54&#"5>32??qqWO\R!>/_N;sa=0>A?rpGM"?U(?N&:$}:iF D+B5+B+A&6FVfv ]A]A]A)9IYiy ]A55]A5)595I5Y5i5y5555555 ]5B9,5B9,/A,,]A,),9,I,Y,i,y,,,,,,, ]ܺ&9;9+ + )"+)?8+?2/+2/2901! 4$32! 4$#"#"&'532654&+532654&#"5>32??qqW v@X[}DuskcZX\[4yk_=hA?rpG]0OLGN<:,+>2+201! 4$32! 4$#""32654&.#"632#"&5432??qqWN\\NN\\Ta/w N 5jA?rpGb[ZbbZ[b#P =  "#/$/ܸ#и/A&6FVfv ]A]A]A)9IYiy ] 9!9+ + !+01! 4$32! 4$#"!#!??qqWkQ1A?rpGK '?K +=+1F+1+A&6FVfv ]A]A]A)9IYiy ]A&6FVfv ]A]AFF]AF)F9FIFYFiFyFFFFFFF ]%F19%/A%%]A%)%9%I%Y%i%y%%%%%%% ]+=9+/4F19%7ܸ+@+ + ":+".I+.C+C4C901! 4$32! 4$#""32654&%.54632#"&546732654&#"??qqWT__TT__jivvWQMKRRKMQA?rpGPIIPQHIPIvSttSv\\=BB=>BB 4@+>)+>+/8+/A&6FVfv ]A]A]A)9IYiy ]A>&>6>F>V>f>v>>>>>>> ]A>>])>9A88]A8)898I8Y8i8y8888888 ]+ +  2+ ,;+,5&+501! 4$32! 4$#"532676#"&54632#"&2654&#"??qqWUa.w O 5kN[[NN\\A?rpG$O <b[[bb[[b &2>+#+#*<+*60+6+A&6FVfv ]A]A]A)9IYiy ]A00]A0)090I0Y0i0y0000000 ]A<<]A<)<9<I<Y<i<y<<<<<<< ]+ + -9+-$%+$3'+3$01! 4$32! 4$#"35733!"32654&'2#"&546??qqW͞u>@EE@?FF?A?rpG>>'*6ޗ{;( ;!O;!O ;!O;!O;!O;!O;#!O#;(!O(q(!((!((!((!'(I(!]((!((3(:( ' q( #'+/3!33!33!33!33!33!3mnmnm;(%8K#!1!!!!!!!#!1!!!!!!!#!1!!!!!!!#!1!!!!!!qlllllllllmmm((((;(!%)-13#3#3!3!##!#3#3#3#3#3#3#^^(ll(lm#;( #q:( !&9 '( 9(& &  9(&  9(& &  9(& &  9( '9(&  9(& &  %! %!!!,7r+uv ))xxp) )$7632#"'327$%&#"%632#"'~~~~eMM>yJJJJJ6````qq|qq#u"@91990  9%-p) 327$%&#"%632#"'MM>y````qq|qqr' '/7?G%&'&'6767&'&'7%'676727"'64'7&"'62&47\+;.81F9K58.42d;E9G,:.80G9J6&8.;+d1O9FLL&_`JnLL'`_n<1& j(0=Ju &,A=N:0('<1& j(0=Ju &1<>EB0(n_II'[[JnII'[[p) %/36%632#"'327&#"6767&'&6py AAAA,+-,,-+A@@Rqq|qq%%mܱ[0$ %@%|"p) )73276'&#"7632#"'327$%&#"%632#"'r99:9rr9:99XWXXXXWXMM>yB!!BB!!oe33eje33````qq|qqp @ 104767632#"'&'&pihѵhiihҵhiѶiiiiѶiiiip $  $27$%&#pkk]<MAk^a``p $  $"3pkk]<MAk^``p $  $327$pkk]\MMAk^>``p $  $%&#"pkk]Ak^>``p $  $"327$!pkk]<MMgAk^```p $  $"!pkk]<Ak^`p})6%63"'pRqq)#2y|q*q( 2654&#"!|~}}|v< ( 327$%&#"327$%&#"!IMM>y_O````}|qqqqH( ( !#%&#")%632OyyMMqq>~``  3327$3!#"'$@1>qq``) %63"æqv`) 2#%&#u)q>` 527$3Muyv`>q "'$33yuMq`p)%632#%&#"puqq>``p3327$3#"'$puMMuyy``>qq!% !% !%! !%!$3! 2654&#"4632"&nȊce;~|ddcc||}%!%!!d r<%!%!!We r<%!%!W7 r<%!%!W7 r<% !%!!!!+c,b r<<!% 4632"&! W>>VV}V2 j>VV>>VVJ !%! c  !%! b  p(  7& $  %;<*X֖% !!!!!!,7,rWb<)) Ie% !!!!%!!,crWbM)MM^??@7`d?\gOOOOy>*<?v^h"-///9 99013263#!5276;'4?'4?26u'6"gP39.4! '*C0.xV#m14He '1l1 Z+dd?7)+и//// 9:90133 #&'&+"'&#"/573;2?"#'57#&'#"#5676!5:+#9,p!j[%+ > 7VCCc":8}V .e3B=Se` e9*=9 3@=}k !=] 9eAmu} 5aǺM*+MA**]A*)*9*I*Y*i*y******* ]*к*M9Mи/*M9Mи/*M9*и/Mc///'P+'+ܸ и /и/99и/99и/99и/999999и/9999990173&'37&'67&'67&'67'32654'&'7654&#"3672#"$54767&'&547'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'4327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&54327'4327632#"/#"57#"54?'&54327'&327632#"/#"57#"54?'&5432&'67&'67&'67'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432O~ )*+')+(@&'$||e?/A}]\B-71SLoW\vLL)(0/ (( .1(%%,* # $ )*f$% +) $ #*+f%%,* $ $ )*   \o  [  %)#&'%&)#`#$ *) $ #+,U   Q   0  E%% +) $ $*+*EC*Z*,)-)-*,%&%&fБfU 5HhfeefhH2pu^ttQFs棥sKQttGh!99!  !77!  4 4 22 K44 22 22  11                 7        %&%&%'%&%'%&22  //  g               44 22  !2CTevU/d////01+&'&54?6?6/&2#"/54762#"/54762#"/54762#"/54762#"/54762#"/54762#"/547672#"/54762#"/54762#"/5476%2#"/5476%2#"/5476%2#"/5476DQ=2`{4&/<) g>i#@3e E $   $   #  #  #  $   #  $   $  U $   # " $   #  aG<s-8PZy9} KW2{0R^j ,: . 4 . = ,  ,   -  -  -  -   .  .   ,   -   #///9901!! WV9`8 O///+к 9 99к901!! 7 ! !WVDu9`8N I7///99 9 901 7%7&54769 }V&7A 6$ 8'^4? '+/+01!2 7%7&547!&'6I@Y%14HFS"="l-2DC[9 )+"++A&6FVfv ]A]A]A)9IYiy ]A&6FVfv ]A]+ + 01! 4$32! 4$#"#"&54>32JJhhq^mNMn2Z//Z2K7iwBNmmN1Z00Z} GH/I/Fܸ(A((]A()(9(I(Y(i(y((((((( ]H@и@/.A.&.6.F.V.f.v....... ]A..]@:и://7/C++C0 +0 и7ܸи/0&и&/01"32654&!"32654&%#"&54767654$#"#"&54767&54! gJggJIhgIhhIJgg[ZQoyy}WZ[zADgJIggIJggJIhhIJgU\\Q srW\\^} GH/I/ܸH$и$/и/$0A0&060F0V0f0v0000000 ]A00]6A66]A6)696I6Y6i6y6666666 ]3+3?+?.+ и /и?'и.8014&#"326%4&#"326! 547&'&5463232$54'&'&54632hIJggJJgMgJIhhIJg#@@z[ZW}yOOyoQZ[sIhhIJggJJggJIgg ][[Xrq Q\\} ׸//и/A&6FVfv ]A]ܸ A ]A ) 9 I Y i y ] и //++01"32654&7#"5432ɏǾ/`T_ȐɎ;12Y} 7 + +*+0+0A&6FVfv ]A]A]A)9IYiy ]A&6FVfv ]A]A**]A*)*9*I*Y*i*y******* ]9+- +-3+#+#01"32654&"32654&#"54327&5432#"'&'3xxx:yyxf& کxxxxZxxxx;TdIU  k)5AMYeq}BH+BAHH]AH)H9HIHYHiHyHHHHHHH ]NиHT-!+- +)3+)013'%&76'!'4%$53!76=332654&#"#"&54632'#"&54632#"&54632&'&676&'&676'.7>'.7>6&'&6%6&'&6>'.>'. [&riX(tRSu(Yiq'LW쥨驧r^]]^ !! !! ..- . *)n))*)m)+. .- . OyyO vKK9__9KKݧꧦ]]_""""s!!""D. - . - a)**))*)) / . - . p)5AMYeq}+!+!'+ +'A!&!6!F!V!f!v!!!!!!! ]A!!]'и/!ܸ!и//// + $+$++иܸܸ015#!4'&'5#2#"&546"32654&'"32654&"32654&7>'.7>'.676&'&676&'&7>'.%7>'.676&'&676&'&53!76=3%'676%327'%&76'77&'$%'#7%6'&718楣\\\R     - -Y - -))G))))U*)>- - ~- - VFwDcD CB DcDwETc==F\J $06# J\F==cS@@1AeA1@@H磤椣筁\\\\     % - -- ,1)))(9)())u- , - - G77W6 W77Gl^ ee ^l(q,&$pp$&,q(u S / / и/и/ ܸи/ ܸ ++01!!'!Pn8hv "g#/$/#и/и/$ܸи/ ܸ ܺ 99 ++01!!'!##+572367676MoL)>u eI3?ba8hA:F;/Itxv S//и/и/ܸи/ ܸ ++01!!'!  ##' Mo_h[ei[i8hi[ef[l[@// // 90136273 ##'5) U.WW1@ US Vdv#,5>~Wh+WAиA/Z//C+Z9 Z9Z9%Z9.Z90к7C9IZ9yZ9C}013+&=43+&=4%3+&=43+&=43+&=43+&=43+&=4%33 #&'&+"'&#"/573;2?"#'57#&'#"#5676!5\:V\9\:\:]:&]9[\::+#9,p!j[%+ > 7VCCc":8 #8d#7$6$8;$7i$7 #9pPL  )Z. ;6ZV Z3%Y63 .87p  />Eqwg0/FQ+F C+ t +tcr+crܸ иF?иFAиA/F_и_/01!674#!!6?676'&#'323276767654#3#&'&'&6%67!672!&=75$/563&43!32+'!67#>54&53# ? I :W0 96;E,Q 2:&l6x0 bm! ras"\>%Ef~e2U6g!6V#p5C+ C ? P9 B;Q4XmM;YV /M(=H: ,qLUD)8Wqke-Pm{NW =$ U  /0c)H?2@[nDF8T$.L / + 01 !' !T4XKGwL5_K ////01 !'7W4Z~wDB7/ /*/*9*9(*9-*901&547632632%6#"'&'# #"'&'&6&'&547676xJX%&XWX:\8 [Ez##FM !9@!#jL)_(Mi#"?8" MF##y4hok@mmr*%te2' BB90tU%) "ft(f" )%Ut09CB '29>-///919=9013#"'43727$'#"$4727%6725676&5&oJ7.b;7!"&546767!7!"&54>3!6763!26P+=6/2D>R+>2,+v*>>+2  ,2 =,2  =,3>,2K/1/&+ + и/и/ܸ&(и(/01463!2!2#!!#!32#3#!>*v+,1>+R=D206=+P#,>3,=  2,= 2,  2+>{!C_"+?+?<6+< + +5/+5"&ܸ(и(/.01%4&#!"!&3!!"3!#";#"3&'6737#&'6737!"'67!7!&'63!67!2I0!6SS SS: SS>SS]]J]]]]h\\, Bv*>K%39KILKIOKHLKIhghghghgE?-L!D'C+'+ + ?+?CܸC"и"/')и)/'.ܺ/9//5ܺ6 96/<ܸ?F9/B/(B996B990172654'6#"'4#"'54#"'54#"'675674767#%$4:JILLHOKHLKIhghgighgD>-sJ1 b6'SS cRR SS?SS\\K\\;\\]]!A*>K{!CuC+'+'*.+*+ +15+1C>ܸ<и*vA!,]]j\\\\K\\IKLHKOIKLIK93%N-?EghghghgiL!C>"+> ++'+'"ܺ.9./*ܺ/95 95/1ܸ>8ܸ><иDghgighghSS=SS SSb SS'6a!0J)K>*B \\]]:]]J]]}O!%)-15#PL+P+w+ L9HL9AP&P6PFPVPfPvPPPPPPP ]APP]uL9L9L9ии/и/и/.ܸи/L9L9L9L9L9L9L9L9L9.и/L9и/ии/.9ии/L9и/"9(L93L97$/0/|+*+5+D+D+ D9Dи/;и;/HD9u9ик59и/ܺ59к59595959к5959595959595к595и/"59(5935901 3656;2#'7+"/#"'+"5&54775%"'5476;25'7&56%635&56;374765'75'76=4'&+ '"'4!#"'&3$365&5&#%#754'&5&&547'5367&7+&'&'735&2?"5%75537'7'3533553535'32767&5%2?&#%55'5757757751:e,$?F?Y>F_LA3ELH3,8LYLlEF'!0< k#gF  EeY!! Gp&iq9 :^N$%`BCf F4"4._?ee3&{E(1-+!$Kt8 -   $Gs sM rEF"2 >_plTErf^5.>=9|5"-l)d ,&>vv]cccWpC-+ d8 Bpp>W]oaxvuPp82,D ^8, ^B$K+ "1R[+e*;GW QU I&? gpo% w ^SA$ 2 9i-5n02D|&IY^Pw^%\??\OWC ,,1 /211/=;7777=321811{908hN%b\Dh,)h?17I21!122223 21& //012%2#"'&=477654'#"'5473Bq4|l anN ilm b 9 b؍MOb>YaYƮ58l7P P@ $0<FX?Y/Z/ܸY и /ܸ  ++01 + &=6&# 3 6=%&#"';27!5%67%!&'&'2+"'&=476r cR~UY082.ԍ_W_V"+}IR8D).P9H'S]ٱZYHYoX(I_ ;.2lOP%.G6R%&I8d 8Pi]9/\/ /"/)/Wg+W 99% 99+ 99=и=/C 99Q 9901>'67&&&'6.7#"'&'#"'$76'773.#'6'5676&&5476'&'%&&8DN$$ UE>!]J([Fhy *m.2\=w\`|:S?ED:@@]?]1fix pFFTD'yr,48eL @v(Nr%&&&+F 7!N &".\S$XE/KC\a*0/'rSCٟ C (RKpF|bphc'R"J$d1F[qG^+G$ܸgܸи/$g9 $g9 $g9$g9^G9Gииq#иGܸ&и&/*^G9G2и3и$4иq5и^7и7/;^G9=и=/$ܸ@и@/C$g9$IиqJкP^G9gUиU/X$g9ZиZ/$\кb^G9dиd/k$g9GoиpиGrиsи$tиquк{^G9|^G9}^G9^и/$g9gи/^G9^G9$g9$g9$g9$g9$g9^79^G9^G9^G9^G9Gии$иqи$иqиGи///!///+yu+yuy9 uy9 uy9 и /uy9/9/9*/9;/9C/9uPиP/X/9b/9k/9urиr/{uy9|uy9}uy9/999999999999999999и017&&'7'6&'$#&7'&#"'5&767#&''5$'67'6'6'5$'67'656$'67&'6'&'''5$7676'&&'$'63&7"7&'7&'7&'7&'6'6%676767&77&77&''5& '6%35&'.54>323#67!&W= y /_I[l*O F_VhB" "@.,<9tJ4Vt1P QJqMi vhpHI!:JJJ B7m\J_/ ?o v!"t,`s&*_~P1>5='g=@24<1 -s[,*&sd1PT>5J@=)j<42JCYT_Y))X^TY{ #m7 "J}>  "H1 $ &b5 4CUE '(!`9 !,(MTE + }r}A" 7,)f[4f AD <@0&9c?"V+GoMK~aG g9s &0@k"?c*GEKX Gjt9hN&\6 '''' 6\%N$%/ и /A]A] ܸܸܸк9 9и&/ + +и01&'6&'67327&#!65#&3yyys~w ccޱqZre[c7 7 c , !+!"+и/!ܸи/и/и иܸи/и/ии/и/"&и!(/+ + &+ $+$ܸии и и&)и$+0135'533#3!'#'5!5!5#53!5!5#!!-ʷ}} ckvG G @<<3ffX苜qXGccGJ!"/#/" и /ܸи#ܸA]A)9IYiy ]и/и/и/ /// + +0132654&#!2+73 ### 3(ttvgnؐB(s+иии////+ +  и ии0133#!!#'!'57!5#'5735׫$"q~q+!++ + ии%и'и -+++ии&и(01!#!573#'5!3!'573!#'73!#'5;jjŠJss<wѡIjj8/w{,i + A & 6 F V f v ]A ]//+0132#' 3%+ &5%6323'#57'53^VQ6>ѨABؒ6ʞG2k >Y3~||~ObsU]+UHB+H+% +%hq+hA]A)9IYiy ]9 ]h999и/]h9#]h9+]h9/ %949AH&H6HFHVHfHvHHHHHHH ]AHH]9BH9=]h9F]h9KиK/LиL/NиN/Q]h9AU&U6UFUVUfUvUUUUUUU ]AUU]YBH9hu// /4/+к499к4949#49+49/49949=49F49K49Q49Y490132732753"'#"'4323$4'5;+"'#"'53275'&'&5?5572%#&'&5%634%476=%@.!%,BE,#!-Q2" $nL/PuHED8@9AF&F6FFFVFfFvFFFFFFF ]AFF]0JAU&U6UFUVUfUvUUUUUUU ]AUU]Aff]Af)f9fIfYfifyfffffff ]i/,/,9',91,9>,9012#27654'73&#"#'&'#"56='"'46'4#"4735#5&547/63654'%654BR38xy}xO8x  *@;^ThoP?).Rt}?ywW·FY3(p"AK|.PQUbKxưrɮ-(-; )1Hv;32#"&546324&#"326%! !  Őb{=&*<<*(;E;))::));KJ67Ϛ{ɬ)::)*<<**<<*):<'L67I" #   " #   " #   " #   " #   " #   " #   " #    <BHNTZ`fl3264'&#"&7367'67675673#''5&'&'7&'677&'67'%%&'&'%6767%&'0/CB^0/AC/88pkTcR|NOOfUip88pqUfONNQaQh!$ b)dLQk KRt!% c'd&//^000NN|P_Pfp88poQ`QyNNP\ Qgp88pmQ \Py,  M N>&`7" bK*V&"g{ M M !)1a + 0,+0$++A & 6 F V f v ]A ]A]A)9IYiy ],и(и(/A0&060F0V0f0v0000000 ]A00]3 +++&"+&"*и&.01! ! 3254#"&#%#7&'67&'6767KJ]_VNEWMCe2ntjnti7IL6a] ]pu otpu ot !)1a + 0,+0$++A & 6 F V f v ]A ]A]A)9IYiy ],и(и(/A0&060F0V0f0v0000000 ]A00]3 +++&"+&"*и&.01! ! 3254#"3$3&'67&'6767KJ]_TNEAgntjnti7IL6a] Uypu otpu ot %ͺ + ++и/A]A)9IYiy ] "и"/' + ++ и / и$01! ! #$''&'6%&'667KJOR`7IL0c Z    "*2:AIXY/Z/ܸܸи/и/Yи/и/BиB/CиC/EиGиG/LAL&L6LFLVLfLvLLLLLLL ]ALL]F/H///W+$'+$+и'/013#''%#&'52#"'&5476!!'5%!!'53'5%3'5%3#'32765'&#"sNN99=>-1\ H0e%FKSwZGr=;=NN$E| 1 ?'_>?@7`d@\hPPPPy?+<>w_VG{?,rCA+,/-/ܸ,и/A&6FVfv ]A]&// 99 901 +"'5$76%&'547327676=&#~jt1/Q}](+VRxbO P >nS]] =fP+,/-/,и/-ܸA]A)9IYiy ]&//9 901! &56;2'5$%75#"3ui1.P~N](7P,VSZycOpO >S\^ f0:1@!7+7 + .++..9и  и /к.9A7&767F7V7f7v7777777 ]A77]7!и+=и.B /"/+/-/ / + '2+':+:2'9и и и/2'9017#'#53'&'&54767&'&=33676=3#32654'&i($lm$(($[Uu&tU[$&uU[[UV$|ddb e|$% ZSSZ %_TYYT* $+++A]A)9IYiy ]A&6FVfv ]A]и/"и&/++ #+ #ии!и!/014&#"326&5432%##5!&w衤礡PP䤣L~~| * $!+ + +A&6FVfv ]A]A ]A ) 9 I Y i y ] и/и/&/+ + + и/ и/ 01"32654&'#5!3%#"5476礡𳉧פ㤤ף |~~L #+%+01&$76+"'&5'476%7!ttsstEus pid5s qttrtt<֤ꧦg\ul9S//и/A&6FVfv ]A]9ܸܸ//++0152654&#"#43233#!5 z{ym㗗yyy{(|jǸ /!/ и/и ܸи!ܸA]A)9IYiy ]и/ ///+ + ик  901#53533#632#4654&#"#*jjoon}mZyH{zF2 4˺+ + .++. ܸ"и$и&и (и+-ܸ0и+2и.6/$!+$ + &+&$'и&)и$+и!-и /и1и301"32654&7#"&54767!!53#5!!3!!#3!!8OO87ON=0LmkL/>Λ2  1O79NN97Os0LllllL1KӘJJ-'< ++4)+4к 49ик 49 49" 49#A))]A)))9)I)Y)i)y))))))) ])+и+/, 4942и2/9и4>//:+:и:к 9 99999"9#9+9,9192901%#5#535&'&'5'73'3#'73'676=35'73'33◰zhNgeMjzzTThOʍ7NjYYӖy?//и/и/ܸ ܸиA]A)9IYiy ] + + +01! #!!!'!27674'&#.d ;6zFH%QM_\ǃ$P<] 5 +  9/ + и01!#"#&5463 67!2#6#"V⩁9k]ts]k8X1((1Eu 1#2/3/2"и"/A&6FVfv ]A]3ܸ A ]A ) 9 I Y i y ]"9и/$и$/&"9++ +  9& 9+и,01"32654&'67>3"#"54767&'&#52Γ͕LVa{.+ؔ)0zHUM\ϓΓϖ=Bll)'ҕ*l8lB=j;//и/ ܸܸ// //01&'5 %$ 56?6'[W4ZZ//[[5 @Eo +?);+)5#+5 +A5&565F5V5f5v5555555 ]A55]#59/A]A)9IYiy ]A ]A ) 9 I Y i y ];A)&)6)F)V)f)v))))))) ]A))]/иA 8+ +01"32654&,'5'&546322654&#" &$#"&547>__^- ͓hI^^^9l ͓hI____(+|T!%lϓgML____x)+{T!&lϔgMM  =( +(+"+A]A)9IYiy ]A""]A")"9"I"Y"i"y""""""" ]A(&(6(F(V(f(v((((((( ]A((]?+%+01>'.463227#"&5454&#"&'&5476766&KAKK@WߴGdAoc.%&3tu/3u]JKAKL@ݰ |XHwyo†<>bQs-.cx68<32>32#&'567''#&&#4'3>$4&"?w(K>R0D32>32gYYYD,1:?$)v$E?w(K>Ro}vvxJv<aAktAO]ƀwϧe// и /ܸи/ 9иܸ  /++01!5!3##'!5!~2k<@i8080k<j'/0/1/ܸ0и/ 9ܺ#9%и%/,A,,]A,),9,I,Y,i,y,,,,,,, ]/+* +*0127632#"'#576&#"4'5267>327&'"SkQmyz,~zi2@:$(.-)zW] ݾgvxaX[&ŝ9{!C*// /013276327632#"'&#"'&#'3276327632#"'&#"'&#'Es- 1V865+)|m^aV885W7805Dt,1W776+)}m^aW784V8705(GG$3LKGHb 'HH#2MLGHaA//ܸܸи/и/ܸ иии/// //+иии01!5!37!!' 3(ͦ '3_76`S@ʬARc!%UeS ,+ #&+#!+!U$+UO+OA & 6 F V f v ]A ]A]A)9IYiy ]3,O9I,O9g=/#&+#<9+<"+0+0ик309<?и9AкI090K0167&'&#"!3!67>54.#"!&'.54>325467675#53533#63232>54.#"P#3JNNTRJWVJQSOMJ4"?*&ElnhPL$ llill %LOhnlD')----+)QPQ((QPQ)+/ 6klj$?6FWWF6?$jlk6 }++--JHNRh~//GиG/и/Fܺ F9F9)F97F9QܸIкJF9GPܸMкTF9jF9F9Fи/F9QF+QNO+N>D+>Dи/>и/>и/>6и6/01&'4>32"'4>32&'4>32&54>32&54>32#!5!'!567>54.#"32767>54.#"327732>54.#"327>54.#"732>54.#"M_ 6694S55.+C55C&.66 V\+55 c$M##$ 6$#$s`%#$d0"%)h #"#_33@]22-"40446/*33UJ"+33^1/K=0T* ####  #$$##$$#  B #### *"$$" U!'-2g(+(+++9+/ ܸи ܸ к(9/(ܸии(и/2и/+#и#/*ܸ%и%/.и./(1и4+++++$+2(+2"0+"ии/+ и /+и/ии/ии/01!35!#3!53573#'5#5!35!75!!5'57!s\\ss]]s JRRIJ~֛E77__vtt4!v7CRbWc/d/cи/и/SAS&S6SFSVSfSvSSSSSSS ]ASS]и/dܸ[A[[]A[)[9[I[Y[i[y[[[[[[[ ]!и!/#и#/[DиD/FиF/NиSPиP/R5+R_+W<+WBJ+B<W9!<W99и<?01&54767&'&'5676767&'&54>32! 535#5##3654.#"!32>54.#"  <$))+N-N*)N-M,**%:  @ v<-M**M-?K566459<5&?HPPIK* ')+K**K+)' *KIPPH>&5<:6uN|l||l|-I+N))N+@65555Q*3VW/X/ܸWи/ 9"9;A;&;6;F;V;f;v;;;;;;; ]A;;].и./1и1/@9A9E9KܺP9S9// 9"9@9A9E9P9S9016&7!&54''&''67.76;+"'5#"=6&'76767%25#6&' 3Z(-6  Z8. ,Z0H &h6%`+EH )#M+=;,Zga#iR6U k''M.+`xo8:.@s.P mz "x?.#1p#41`&jD"acLHJ ~447| JlL"0T_/+@8+@A&6FVfv ]A]+/9A@&@6@F@V@f@v@@@@@@@ ]A@@]48@9D8@9U!+UZ+!#и#/+Z9MZ9!T0132>54.#"32>54.#"!5&54767&'&546767&'&54>32'&'.#":e79e89f76e;[S &(*UM,N)(N-KV)&& \@ECA8d88d88g66gu9:%N&KRS* '**M**M**' *SRK&N۠:9}qyyq}c!%Ueiz_ ,+ #&+#!+!U$+UO+OA & 6 F V f v ]A ]A]A)9IYiy ]3,O9I,O9=/#&+#fg+f<9+<"+0+0ик309<?и9AкI090K0167&'&#"!3!67>54.#"!&'.54>325467675#53533#63232>54.#"!57!&'.54>3234'67632!P#3JNNTRJWVJQSOMJ4"?*&ElnhPL$ llill %LOhnlD')----s=BDw@>=))==AwDB=+)QPQ((QPQ)+/ 6klj$?6FWWF6?$jlk6 }++-- !yCB{C!$$!C{BCy! JHLPQ/R/QGиG/и/REܺ E9E9)E97E9JܸGPܸKиJMMF+IN+I>D+>Dи/>и/>и/>6и6/01&'4>32"'4>32&'4>32&54>32&54>32#!5!5!M_ 6694S55.+C55C&.66 V\+55 c$))_33@]22-"40446/*33UJ"+33^1/NNOOU%)$!+$ +  + и/$и/и!и$ ܸи+&+&'+ +  +  и и /'ܸи и !и!/ "и$и$/ %015!5!!35!#3!53573#'5#5!35!s\\ss]]s ^^/oo#E77v4@m+A&6FVfv ]A]991/014767&'&'5676767&'&54>32!&535#5##3  <$))+N-N*)N-M,**%:  @%v<5&?HPPIK* ')+K**K+)' *KIPPH>&5<:6n5|l||l|L".7=W <+ ?/ / 9 9 9 9, 98 9016&73#!&54'''7&''676&7;2547#";65'"3=QUU+-6 E|]k0krd0c G&h8E+`%s H>4wM-',Qo8:$whPSmh**z1"0@)5"@YR00m+A&6FVfv ]A]9 9/01&54767&'&546767&'&54>32; &(*UM,N)(N-KV)&& 9:%N&KRS* '**M**M**' *SRK&N۠:9C#+///"/01#"'##56'##"/547?^'5@_*SU&/UL ;Yԧ9UP(` XI.s2Q3/4/ ܸ!ܸ и /3и/ܺ+ 9/&+и&/0122732#&547636=4'&# #4'&#"*t pz&=<xQ>hG:V Hek%PF5NP B|-&pA&NFX // 901 &&5 <F:^;" V gdG7C+///99 9/901236;2"##'65##"'&5476;235&'&=476e x<JT`(GeRUdfB3 VNT9D///4 +4 к#94+к=9>901+"'##56#+"'&575477;2732;276=4'3&'"~V"0b*SV*8UiQ"_|Q )w`SgA ? 6N #euB? gIo5 F(pZRw// /9012367632#&5476(t*#\l~ ΨT]1klSI|-X //01 &47E osU H2`g+Z+N+99V9AZZ]AZ)Z9ZIZYZiZyZZZZZZZ ]i//^+J+J):+)и/) и!и),и,/:7и7/JAи:QиQ/:Sи:UиU/V:790126;2"##'65##"'&5476;2&'5476&+"326733276=4/#"567654'&#"35&5hr=)\"IfRUdgC3&=cG kv ==Nr%SZU 6vk 6)S<F98:d  mOE:R p&i  C]&'Ax.+0 nM,W`cT,L#@8+@+0H+0A&6FVfv ]A]"ܺ<809A@&@6@F@V@f@v@@@@@@@ ]A@@]AHH]AH)H9HIHYHiHyHHHHHHH ]0N/D4+D013#&'&'&6%3#&'&'&63#&'&'&6#"$&5467332$654'&'v  0A  1Y  1,KV./VL9?cyɦt3Z|`ŻN[O}БBr1a`bb`a1)EMTTUUTTME)%+///9013#"/4?23hH0#!cZ-@o3+///99013#'654'&'#"54732XWz=\9`Y'6?F` 1TFG*֙-@x/e/ /и/и/ ܸи/ܸ//99901#"=4?2%#"=4?26ձ'VQܖCت+YP*~: ۉ8z"Co//ܸи/ ܸи/ܸи ++ +и/и/ 9901"'4723!# 5472!5kmOdXX[;Z$}@Ϝ"  ++к 9A]A)9IYiy ]// /+ 9013363'$6'"-8 w?WXc1 0 // и /и/ ܸи/иܸи/ ܸи и//// /99 9 999013%#'#3%#)N(4/c}4(,=++и ܺ 9ик  9ܺ9к9и!и%и&и'и+и(и)и*к, 9////99 9 999999&9*9,901377#'#'547#5773%%.wwzy.**  <<7CA<<{8AMtPGc6+6и6#//MT,P$ 66$0_ u3dUdt_}s*$"Rt0XX__/ik=ZG8*F 1 . ъf)MC =g9EkO 9!(-);&  ]t!y" & 2| ba$ U+  2E3/$/+ +к$39$39$39"к%9&$39'и'/7$398$399$390135733!&54?'7'7!!"'&%#'73676'77'7'&'676ի,&T>=c$(wK9.U:Cʈ%`T??5̈'8/a\MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! 1DWE/6/,-+,+ +6E9#6E9$6E9%6E9-4к7-,986E9,9и9/I6E9J 9K6E901!!5>7>54&#"5>32&54?'7'7!!"'&%#'73676'77'7'&'676]T@1$J=c$(wK9.U:Cʈ%`T??5̈'8/]U1)8(3&ncQ&D- mMOHK$k$823!a IF 7=c`O]BA6$k#- kNA! (=PcQ/B/89+8 + #+#+9 BQ9/90BQ91BQ99@кC989DBQ98EиE/UBQ9V#9WBQ901#"&'532654&+532654&#"5>32&54?'7'7!!"'&%#'73676'77'7'&'676Z _3lFHe5^\VOosHGJI)`VKm1Sj,&T>=c$(wK9.U:Cʈ%`T??5̈'8/S<\el23-2['&')b YK4JMOHK$k$823!a IF 7=c`O]BA6$k#- kNA!  "5H6/'/++'69и к'69'699%к(9)'69*и*/:'69;'69<'6901333##5!5&54?'7'7!!"'&%#'73676'77'7'&'676yy,&T>=c$(wK9.U:Cʈ%`T??5̈'8/Rv_`MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! 2EXF/7/-.+- ++7F9ܺ7F9$9%9&7F9.5к8.-997F9-:и:/J7F9K7F9L7F901!!632#"&'532654&#"&54?'7'7!!"'&%#'73676'77'7'&'67612hFL]5R]]R'PF ,&T>=c$(wK9.U:Cʈ%`T??5̈'8/_ptcdrr@89@ SMOHK$k$823!a IF 7=c`O]BA6$k#- kNA!  $9L_ + A & 6 F V f v ]A ]и/? 9M/>/45+4+"+" "9ܺ+>M9,"9->M95<к?549@>M94AиA/Q>M9R"9S>M901"32654&.#"632#"&54632&54?'7'7!!"'&%#'73676'77'7'&'6767DD7:BB=F"W\]8uu&M,&T>=c$(wK9.U:Cʈ%`T??5̈'8/A;;@@;;Af`5(sa_t MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! .A// /++ /9 /9 /9к!9" /9#и#/3 /94 /95 /901!#!&54?'7'7!!"'&%#'73676'77'7'&'676&,&T>=c$(wK9.U:Cʈ%`T??5̈'8/2{MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! ':{(//+(9(9(9к9(9и/,(9-(9.(9017&54?'7'7!!"'&%#'73676'77'7'&'676,&T>=c$(wK9.U:Cʈ%`T??5̈'8/MOHK$k$823!a IF 7=c`O]BA6$k#- kNA!'9HRm//F/=D+=F9 F9*F90D=98F9;F9@F9IиDL01!273!567&#2$'76+&67'#'6765'533!273+#'!"/47*:!Jca# fi*11Za(}ypPd!^t/TT}75 b\V/V'f::p ?)\ ) 9s s%00%2<J\e9d +d+.и./O d9dQ013 + &=%62!67#&'&#36&#&#"3274/"34?3'35732?5##!'53aoPS<&3y: SO B2_5N vbe)PK  L$=j"AjOL5_k, ߋ~y}/M<4{1;C,[_ei' [)$ /:BR`j_k/l/ܸk и /A&6FVfv ]A]A]A)9IYiy ]' 9+ 9G 9L 9T 9Y 9_ 9++V[+V")+"')"9+)"90и0/L[V9Vaи[e01 # &5%6; 65%&# !27!57&/#2#&'676+%!#'#&'47'3!27##'%!#"/6g^_b0h\{\[:5:QmMM[-w,ldN VNG+Q'XYtTpXYSmEb,#4' FV ! Y1 1_ Ug,17H8+8'+1+1 A+ A&6FVfv ]A]A]A)9IYiy ]  9, 9A8&868F8V8f8v8888888 ]A88]AAA]AA)A9AIAYAiAyAAAAAAA ]J<+<E+$+*+*ии*.и$40127&' # &5%6367&#'.7&67263'#%; 65%&# aWg^_Wa+{|<b0h\{\&XYtTͿWzzWapXYS1/5/*+* +  +# 9012!2!!7&!"4#".547673267   0# Uq{|}@!/(SSS*E.َer(Y$h?}}|r<.32#".ee(<<ħñ"32#".%2#".54>ee(<<ħñ"54.#"ee:<#"< !<"#;ch =!!54.#"%32>54.#"ee:<#"< !<"#;"< !<"#< ;#ch =!!54.#"##"'5##"$'&'!5!5&'.54>32!!676767'%''H&(G()G'%H(%'V W3WImuw>DE}AB|GE=md^JW4W Vs'H''H'(H''H`XAK|@X1(ԁ3"|DD}DD}DD|" 2/ "1X@|AX1#  9Yw/(/6/8/6969696969"69>69@69F69V6901%&'%67& 673&/'67 &'"&'6?&'3 ' '7  &/7&'>70  1JK[]><+Gg['fBBe&\h?(K?]\K ! RTX1){V8#Uw )/^@R?? );32TD$ #@F,MMMv E8p_Lc1  M**+ B@0"AR/0?wA%od/D&3.YaQ/5#3$"uI' @3/u= =#n- .... y4u1// / + 1919к19&и ,к.19 /и 2к41901% % 32+#".7!#"&'&'#&=4;7337_8)0/_^aM`^^1/ 9534?GG~F6F~GG?>D9/C}"7+//// /+01632&'.'#!#!#Ҹ62K#+~~R!Nx_TV_T 'NQ9;:;PHi?CD|))Z)6׺*+$+2+2A&6FVfv ]A]A]A)9IYiy ]и/$и//. +.0132>54.#"367#&7&$735&'.54>322[02[24Z1/[3)'5*.XA54.#"%2#".54>''#/'7''7''7/5?'77'77'7?3777''H)(H('H((I\Hs=]SH$e$HR^323#67#&#"/&'&547&"'6%676V n*[n%'ZxL0<{2;&b;>/2:.m*nW)'$o`0LP;2F<;(e:2/"7LL75MLZ'&4)PNPUQ74(4 3(4:XUPNR (@D V>0&8a>!U*~EmLK}`G f7r &0>j!>a)E~CKW Gis7g:M57LL75M-Z '''' Y (5[J5( \d (5J [4 '''/GSm//и/и/JܸиJ(и(/J*и*/J,и,/JA]A)9IYiy ]0и0/A&6FVfv ]A]8и8/:и:/<и&'767&%76'&''67&'&'&'6767654676'&7>326'##"'&'&'&54767&'&547676&'&#"6&%6767&'&'&676&5467&'&6732767&$$$$OG36ecce74GL944m/122102/.303112.OF}68ge"w?>v"rt #87! ":;@A<:" !66# sr*./13/.UVT\<>"$!! !"#">kcg86|FO 93399 <>#"#><  "$ZTU./43..V5$##$59gTV++9Z^^Z9++VTg9'(''&()I8:9889: Z_59eUV-, <8.>euvc>-7=bccb>7-?cwud?/8MWZZW **D@@D+8,-VTe95^&)(&''(DA:AD.*!Y[[Y!& )rao+>8+>Q+QA88]A8)898I8Y8i8y8888888 ]8>9/A]A)9IYiy ]ܺ8>9/A]A)9IYiy ]A&6FVfv ]A]$ܸ ܺ$9$9ܺoQ9A]A)9IYiy ]oQ9<8>9и/и/;/_/w+2.+2_;9_;9_;9_;9<_;9Eи.I0167&'67&'4&6%67.'4'6&&'6767&54?67&'&#&'#&'5&'"'67&'&547632>54.#"2#".54>'7,3 3%/0),7=*'0*+3.22'Q YfT,1'').UfY Z98 "2 B2;F_ XB?2C 3" 894ihgikcekS[XVWXZ#ejpMcNTvJKr?VlLWW7p jk%n^*V{ww[11[ ww{V)\#fnnd-#JM 7B/""0C7 NK",dnnf#ghhggggUWWXXWWUd %+A]A)9IYiy ]9и/"и"// + и/ 9013!'#!52#"62#".54>" h9|M463%&$$5 O Dn; $$$$ / /0133'554#$/[QwGSGUW GJG$Fbm67654'&'67632!!#5!#5!5!5&'&'&'&54767676323276767654'&'&'&#"!5&'&'&'&54767&#"32Z&&&'Lh`TVDE$##$E@Z-<81VDE$##$E@ZNfbR18+../:9C=7/##"-<J81,/##/5?G5>+../:9CB9*5;AB;5**5;BA;5L##%CEVUb_UVE@( %CEVU_bUVE@(##,+.<;AB;<./9BUb_UD  u8CU_bUC8+.<;BA;<./Ew3eq&#"327&'&476%3276767654'&'&'&"%'#"'&'#"'&'&'&5476767632'%'676326764'&=<@x.+0.(B=?>=-&& ,&%,D6?=?+,/*??zG]3"D"&%%A=_V`ZZ""V`ZZ^;D"&&$AB[X]:3:΂>] [Z:3!$"2.*?:CDr1*8>]^A47>\\]W@8-.=)%%%%'>HS]ZY^XAA&% P^Ȗ9 % P%4:CA<.*(2:<2GwB^n67632'%'#"'&'!!#5!5!5&'&'&'&54767676323276767654'&'&'&#"67654'&'&#"327&'&5476"X]:3:]3"D"&%#C:bV`]W%!-<81VDE$##$E@ZNfbR"-##-D6>>?+,/*??=@!##8BJ2>+../:9CD6-&&% P^29!$HS\[Y[VF=*%%  %CEVU_bUVE@(##}6AUb_UA6-.=]ZY^Bb2R!!#5!5!5&'&'&'&5476767632'%'"3276767654'&'&'&4.(E$##$E@Z-<81VDE$##$E@ZNf:4:]|G5>+../:9CG5>+../:9~(EVUb_UVE@( %CEVU_bUVE@(# P^29`+.<;BA;<./+.<;AB;<./ /M#"'&'&'&54767676327'7'%'276767654'&'&'&"(F3"D"&%#C:bV`ZZ^;D"&&$AB[X]:3G9:]:F=~=<.,/*??z?<.+.(!$HS\[Y[VF=*%%'>HS]ZY^XAA&% iiD^29i..=+../:9CG5>+../:9 \2:a(EVUb_UVE@( %CEVU_bUTG(Hij:ο\ij+.<;BA;<./+.<;AB;<./4/O!!#"'&'&'&5476767675!5!' 276767654'&'&'&#"<-Z@E$##$EDVRbfNZ@E$##$EDV18kbbjC9:/..+>5GC9:/..+>5疑 (@EVU_bUVEC%##(@EVUb_UVEC% kajP/.<;BA;<.+/.<;AB;<.+ /O####"'&'&'&5476767632333'7 '%3276767654'&'&'&#"ܖU (@EVU_bUVEC%##(@EVUb_UVEC% Uܭkaj/.<;BA;<.+/.<;AB;<.+<-Z@E$##$EDVRbfNZ@E$##$EDV18kjC9:/..+>5GC9:/..+>54;2"'&'&'&5476767"327>7654'&'&'&RUEG"##"GEURRUEG"##"GEUC9;\.+>6FC9;\.+>6#&BIRUb_URIB&##&BIRU_bURIB&s\<;BA;<.+\<;AB;<.+42"'&'&'&5476767RUEG"##"GEURRUEG"##"GEU#&BIRUb_URIB&##&BIRU_bURIB&J;"276767654'&'&'&2"'&'&'&5476767R#$$#R#$$=>3443>==>3443>"$)($##$()$"06"@21.2@?FI?@21.5="$)($##$()$""$)($&#$()$'R 5%%%xr6׊eMM^xx)7654'&'575##'&54767'5!nL^A>..>A^L܄bNC#FF#CNbr*NJ!'11'!JN*MI<77aZ% NT>%  #HH  ")mROeb     0         $&$  ' D"&%  $ #  mR )Ky           V!Er26767654'&'."#"'%"'&'&'&54767676;27>764'.'&+"'&'&'&547676762%632$"26767654'&'&.&&.&m,mQjP (!N!"(!'CVf& &bZC'!("!N!( PjoQm,.&&.&q    l?W,># "#" "  " "#" #>,W?~    lOYx3!#!"'&'&'&547676?6767676'&'&'&#"#"'&'&'&547>763276;%326767654'&'&'&#"6767654'&'&'&#"32eOuRd2  HH#   %>TN  +Za>%#+$ 4$$$+$ 's   *    * OK) Rd# !#& "*"D '  ""! 2   T   :      IZx-4H67&'&'&+"'&'&'&476767632%632 #"'%#"'&'&'&54767676;276276767654'&'&'&"276767654'&'&'&""'&'&'&547676762"'&'&'&547676762'&'&'&547654'&'&'&";276-&#"+"276767654'&5476%327%&"'&'&476762I  Q\C--%("(/*0.,+"( /X]\9<\X/"$)0*3')"* %1*0CR[        22 2 2 2 %'   &J  &%C\d#_*]OhXC%&  J&   O]*       ")&`&"'$"/' <%ZS  % SZ%< /'* "%5"-($# ;8\= !  !  " /VC "  !  !  [uV/+    V^n3276767654'&'&'&#"&'&5476767632#"'.54767&54732#"#"676767'&#"'67654 ozwbd011.f_zx|wbd011,k9995ulsp:995un*D$lQ$" 6*D?"5'K(2- #%>   :7 331cdvwwqi`4331cdvwxD>mwn<;;8rowp:;;BV0/+"8:D@*|sa  -F(7 "*=8&0!2   1-5$& 6:B4V^,Ji&'&'%&'&"632%676767654$2"'&'&'&5476767"3276767654'&'&'&'2#"'&'&'&54767676?!*$ 1$-+h+-$F3782* !?1 $> > 9|wbd0111c`zwbd011.f_zxsp:995unsp:995ulwIP"2-.$  "" PI $.-2!v   31cdvwzwcaf31cdvwwqi`43d;8rowp:;;8rown<;x,A-57'36%33#3#!2#!3#3##$'#7$@d5{sVd]F0 0F]dVs{5⒒d@( jPP,PP` 0 ")- !676762!"'&'&'&54!X$#R#+/RFF$#R#$1Sh,  k-"s!|K476?6763&'&'&547632676767654'&7632!54'&'&76'&&#"'&/&'&'&#"#"'&'&/&'&#"&'&'&?6'&'#"'&'&#"!'476/654'&76'327654'&'&327654'&/%4&)"$0JK&  $)7    %1'# #6 +-L __^/s4* 1( .266 |/(1   \   #:7  lS&   x71]% /~[#<$  o_%?,: *(;Y)$X$+|=L!6CX&PY89Do6 b'n2  83eF] 4T&  &  /50$?- 1@& 3l K  C"P1 :07@D:5XI6.D3[+-1:   q/A8   g+jl9Lp{7654'"'&#"+"'&54?67676763276323273#5%6767'&#"6"/67#"27632327654'73654'676547&p/l0&J!cS%YE]{@C"$4>-;% ,(6Y>m!N$X6"/,(4sS?X$U>"sJ?K(`./4+2K2.0>S Zp0+1^' ;cs  /^"|Y/ 428ۇϕl%%ot5oA='Y$ aT* ''G+- %_kj~r}jL`І|\gK@/.85c($")3SZ67654/##3276?%%54'654'36767632#"'&54767632'%;66I   }g A6qn       -> 9@  H67; zh| 9 >6!q     B5> '-EL4'&'&/767675'7! !'!654'!4'!!$4767>2"&'&'!654' 33 ^^^RXI#J2VlP# ~!88!~ Uppph,p<((zd")3SZ&'&#"227654'&'''%'654.#"65&'&'&547632#"'&'&6#"%  I66;o |>A%6!q       9  ;76H    |h> 96qm      BX{[#C'%%.'&"27>7%$6%"'&'&'&47676762%'2&%k      Aڙ> >dIID`qS   SqGYq > q)&%$64'%%&'&'&"27676&22"k**!q``q!3W 2327632#"'&'&5476'( > !~GH ".4F+@xH )0$'*' 27277632#"'&'&5476'( e` }{*279HFb@yJL 1 -A  ' 7 Ɏ877Ɏ77ɍ8ɍ? tt7tt7t7tt7uB2632#"'&'#"'&54767'&54763267632676 Q   x L$3 z(   6X3  6*=P*> "#  Q26#"'#"'&'#'&'#"'&547&'&54767&&5476326763276T 디% $$YyX$ zc0 + j :  (̢1#: _& #- Խ =1 '2ĺ pD #!!!!!%!!!!!!!!#!5!36HVBBXBBUHVPBXyBpD !!!!!!""p"p"#pD35#7!!#!5!3rrsrspD!!%!!!!!!r"p"#p"#Rb !!#!5!3ppEU l3!!'#'!!#!!3!5@,r,,_ r,,_>v #!!!!!'!!!!!!!!#!5!3hm_|P_H_pDQ#"#3;54'&'&'!"3276767653#4'&'&'&+3!52767>5{dZYIB,$22$*DE]Vh{%'GC_Rl|lR_CIJ{hV]ED*$22$,BF\Zd{%'GC_RllR_CIJ&%IB`Oo|oO\FG'$zdZ\GB+%22%+BIdz$'GF\OooO`BH&&{dZ\GB+%22%+BId  #!! !!! 373#'7#ZAA:Llحmllmzlmllm|}}|d d}cT`C54'&54762327632#"'&+"'&5476=#"#"'&476323(L,68x86,L zFvd0000dvFz L,68x86,L zFvd0000dvFz zFvd0000dvFz L,68x86,L yFvd0110dvFy L,68x86,LV^&'##"&'&'&4767>32367675&'&'.5467676236767>32#"&'&'&'#"'&'.546767675&   R.-R  R-.R "  *!""! ((\(( !""!#%   " R.-R  R-.R    %#!""! ((\(( !""!**!""! ((\(( !""!#%    R.-R  R-.R "   %#!""! ((\(( !""!*  " R.-R  R-.R   Sa4'&'&'&'.54767676322767676767632#"'&'&'&'&'&#"'&'&'&5476767676765"#"'&'&'&5476767632($ ((& :.:806$&& )D+:!  '228:/3&$$&3/:822'  )2/@!  '&$6/r/6$&'  '?03'  &d8:02&!$&20:=-2& (20C,7"  &d8:02& $&20:=-2& (10?!  '&$6/r/6$&'  'D+:!  '228:/3&$$&3/:822'  )2/@' ((& :.:806$&& (T`0267632#"'&'&'!&'&'&54676763267632#"'&'#"'&'&'&5476767!6767632#"'&'"'&'&'&54767#"'&'&'&5476767632!#"'&'&'&54767#"'&'&'&476767632&'&5476767632!#"'.'&5476767632&'&54767676Z   ( &            <   4          % (      (   2     6           %    <    %  (   W_276767653"4'&'&'&Wsp:995ullu599:ps;8rown<;;j>-'O^__^Oq44H4"hdd0!% %!-@jjjk**37'7 #'xxxx.xx.x..x  pD #'!5!73!GFdFGrEGdGErFGqFGdGFqGEd@L     - FOFc,OO,cFd,PO,dGOP T` '!%%%!%% % -wD{wwf#w%f{wwy||y{xxf#w%f{wwxEy||y % %  Zp/AppA/}}ET`     - Zq NqqN  NrqN qrT`% % -ZyllylyyT`%% %% -ZtGcVGttGVcGGstGWcGtsGcpD/3%!!%#'''%!5!%777xo:U.cF.d;UǩoxoU:e.Ec.U9oE.f:UūoxoU9g.Ff.U:oxo9U. 54'&5476276767632#"#"#"323232#"'&'&/"'&5476=&'&'#"'&'&547676323232?&547'&#"#"#"'&'&54767632676'K,68x86,L qA'C<4GW>L d  f L>WG4L d  d L>WG4L d  f L>WG4L d  d L>WG4 +F$H$F+ > ;<5 AcJ2QD++DQ2J (5H,'9,J&0f) T|\`j4OO7g`\|T 'g/& H,9',I4( (3J,&9-H &0f) T|\`j4OO4j`\|T 'g/&J,9',H5(""'!$(:UJJU:($!'""nF"276767654'&'&'767632#"'#"'&'&'&'#"'&'&'&5476767#"'&'&'&5476767632&'&5476767632=>3443>==>3443>x>%85670-)-%8/>0!-)-02;>/8%0 )-02;>/8%-'&$>/:#-)-02;>/;))-02;>/8%- 06:4/.&"./4;=16'+&1,"%&!6'+&./4:>1:#"$./4:>16'+,4:>16'+&./4;=1nFn%#"'&'&'&5476767#"'&'&'&5476767632&'&54767676267632#"'#"'&'&'&27654'&'&'&"67&'&'&'276767&54767'&'&#"276767654'&/7676767654'&'&'&#"Z 0%8/>;20-)-!0>/8%-)0-<1:3%>-%8/|/8%->%85670-)-%8/>0!-)-02;>/8%0 M=  H  C# B/g  H *x#$   -7 H  g/B    $#x*%",1&+'61=;4/."&./4:>16'.5 1=;4/.&&./4;=1 5+'61>:4/.&"./4;=16'+&1,"8_/$   $/_c.,b" $#  !I?30C !'#  x!  #$ "b,.$  #'! C03?I T`-[3b &'#"'&'&'&547676763267'&#"327%327676764'&'.#"7632#"'&'&54767676324676762676322##"'&'"'&'.5#"'&'&'&54767"'&'&'&54767676&'&'&'&'&'67676?&'32767677676765&'&'.#"7676767&'&'&/326767674'&'&'67'&'&'&#"67'&'&'&'67676767"276767654'&'&'"'&'&'&54?&'276767654'7654'&'&'&"67'&547676762:   $4 $$ 4$   % !()-+,)$"! ((\(( !"&',+-)(!'7'&"# ,*2% !()-.))$"! ((\(( !"(%*-,*(! #2*&"# "&'     !  4  !   4  g       i 4  !g  4   !     oR#$$#R#$$  8 < c7 < 7    8 < d8 < 6   %),++*) !$3R  R3&!-(-%2(&"#%(.2$( &',+,)) !$3R  R3'! )),,+)$"#%(.2$( "   i !xg   !      %     !  !   g    "$)($##$()$"$  % %% %  V^<\l"276767654'&'&/2#"'&'&'&47676762#"'&'&'&54767676% %-z35++++53z35++++5pWDM69 ;9JHSWDM69 ;9JHSsp:995unsp:995ul}}(.35<;53.((.35;<53.("68MITNLJ;9"68MILJ;9m;8rowp:;;8rown<;}}"327632#"'&'&/#"'&5476=#"'&'&5476763232?'&#"#"'&'&5476763254'&5476276767632#"'&#"27654'&%&'&#"327676%327632 654'&'&#"#"Z*1%85e %ZF\ +m8BS/?JV@6RTXN6@VGB1QB8n* \FZ% e53e!&ZFZ *n8BS/?JV@6RR6@VGB1QB8m+ \FZ&!e3*1%8~> +F$$> +F$H ;<5 A~ ;<5 A+DQ2J (5H,'9,J&0f) T|\`j4OO7g`\|T 'g/& H,9',I4( (3J,&9-H &0f) T|\`j4OO4j`\|T 'g/&J,9',H5(G+DQ2J$(:U$(:U3!'""!'""A''7'753'75377537'7'#5''#5'7#5'7'7<B-OS2#"327676765!"'&54$3!57!##"'&'&'&54767676#   ?>I-7އv3T%+>CPNHiDG-2/&D9  . !-8=DD_o2{jTc@F'%.36<@M137+4V52&'&547676762"'&'&'&5476767Zy*,&&%1]~|45,--,54|45,--,5(+&014|d΃fz410&$(F*.46=<64.**.46<=64.*Nf%C&%&547676762476767622"'&'&'&5476767Z{&%1-l./&%%&/.l-1%&|45,--,54|45,--,5ġS410&$%%1/66/1%%$&014R*.46=<64.**.46<=64.*nF(%%&%&54767676247676762Z_75EAAD6556DAAE57_qKFD6454FCNNCF4546DFKoX'#"'&'&'&547676763"'&'&'&5476767632rJFD6464FBNNBF4646DFJp`84F@NLBD6466D@NLBD66^~* i654'&#"632327632!"'&5!267&'&#"#"'&54763247632327654'&547632#" 6+Jo.^V|;-˙it36?̺fQMeEJS?(*$ s]vh2K)*NL13^v:Mc*ZeC03N35%&-Kt\K%9S >BWN=!$?$8(F!5{^?ZN676 547&'&327#"'#536767&'&'&5432&5476323254'&5432?-BO>Bv06('K`dC+(k$'eM?$#=Hb B=)+8=.m9eb PB>$3g:=TEB7WPfG+1KHP<Ff#&T'0P+A'<}DC/' 5276767654'&'4rceNS((((`hm@DDF/CD}>C/GFCG !&547>2;!!676PJKBA<! !$ ! "#{! !{54&#">32!5!>??qq>0ţ=as;N_/>!RL}A?rFi:}$:&N?(U?"Mt 6+A]A)9IYiy ]1.+. + !'+!+9*'!901! 4$32%4&#">32+32#"&'32654&'26??qq|=_ky4[\XZcksuD}[X@v hA?rs ?<:32#"&'32654&#"75!5!??qqYe2hvvhDw_X@ϰ?A?r%aVUa/  23/4/3и/4ܸA]A)9IYiy ]A&6FVfv ]A] +  + +,&+,/&,901! 4$32#"&54632"32654&#"7>325.??qq\NN\\NN\qºN w/aTJjA?rZbbZ[bb*= P# + + 01! 4$32%!35!??qqlUA?rv]K 1=++ +A]A)9IYiy ]A&6FVfv ]A]A ]A ) 9 I Y i y ]/9;9;/A;;]A;);9;I;Y;i;y;;;;;;; ]5+ )+ +28+201! 4$32#"&5463232654&'>54&#"2#"&546??qq_TT__TT_⾭vijvkKRRKMQQA?rlHQPIIPPI\vSttSvB>=BB=>B &23/4/ܸA]A)9IYiy ]3'и'/-A-&-6-F-V-f-v------- ]A--]+ +  +*0+*# 901! 4$32254&#"326#"&'4632#"&??qq鿹ºO w.aUJk<\NN[[NN\A?rK < O$[bb[[bb $0Ӻ%+%+++A]A)9IYiy ]A++]A+)+9+I+Y+i+y+++++++ ]+ .+ (01! 4$32!5##7##"&5463232654&#"??qq$ŸuF?@EE@?FpA?r*'$ =(F  76767654'&'&'!5%3!!  '&'&'&5476767̆mo5885om4mo5885omP\|~}~~}>@@>}~~}> =A_  76767654'&'&'!!5676767654'&#"5>32  '&'&'&5476767̆mo5885om4mo5885om)4 \)NBCkPQT`aFnoIkl\|~}~~}>@@>}~~}> =Om  76767654'&'&'#"'&'5327654'&+5327654&#"567632  '&'&'&5476767̆mo5885om4mo5885omttBAzyLOPUDWOPJJx??zBLL\R[PGjkr=\|~}~~}>@@>}~~}> = +I  76767654'&'&'!33##!5  '&'&'&5476767̆mo5885om4mo5885omh*˪+\|~}~~}>@@>}~~}> =?]  76767654'&'&'!!67632#"&'532654&#"  '&'&'&5476767̆mo5885om4mo5885omz##$#utKSLHMVA@AC\|~}~~}>@@>}~~}> =,Jh  76767654'&'&'"327654'&.#"67632#"'&7632  '&'&'&5476767̆mo5885om4mo5885oml@@lm@??@=|}~~}>@@>}~~}> =$B  76767654'&'&'!#!  '&'&'&5476767̆mo5885om4mo5885om\N\|~}~~}>@@>}~~}> =+BNl  76767654'&'&'"27654'&%.546  &54632654&#"  '&'&'&5476767̆mo5885om4mo5885omsBBBBCBBBhtdthuABtԄ9tihvvhit0\|~=>>>kl>=EggOOss\hh\]hh@>}~~}>@@>}~~}> =<Lj  76767654'&'&'532767#"'&54632#"'&27654'&#"  '&'&'&5476767̆mo5885om4mo5885om=|m@??@ml@@@@J\|~}~~}>@@>}~~}> =+8Ca  76767654'&'&'"32654'.  7!5##7  '&'&'&5476767̆mo5885om4mo5885omT,+VUVV++2QPPQΠP3x\|~-,g#&%q @>}~~}>@@>}~~}> = (!5!#%  '&'&'&5476767{\|~}~~}>@@>}~~}> =#A676767654'&#"67632!5  '&'&'&5476767lkIonFa`TULkCBN)\\|~}~~}>@@>}~~}> =1O>54'&#"67632+32#"&'327654'&  '&'&'&5476767irklGPQ\\LLBz??xJJPOWDUPOLyzAB2\|~}~~}>@@>}~~}> = +! !335#$  '&'&'&5476767hno\|~}~~}>@@>}~~}> =!?67632#"'&'32654'&#"!5  '&'&'&5476767CA@AVMLHSKtu#$##\|~}~~}>@@>}~~}> =,J2#"&5476.#"32654'&#"67632  '&'&'&5476767Pm@??@ml@@C|=⇆nmϵihVGG/ TU<|=\|~}~~}>@@>}~~}> =$!35$  '&'&'&5476767>h\|~}~~}>@@>}~~}> = $0N2"'&476' 654'&'>54& 74632#"&  '&'&'&5476767YtBBBCBBBB/tBAuhtt-tihvvhit0\|~lk>>>=>=EssOOgg]hh]\hh@>}~~}>@@>}~~}> =.L%3276'&#"32767#"&'"'&547632  '&'&'&5476767!C>?=ↆmmдhiVHG. TU<|=Al@@@@lm@??@\|~}~~}>@@>}~~}> = %C2#"&5476$  '!5##7  '&'&'&5476767e22dedd22TUUTBU¡\|~-/g#&%q @>}~~}>@@>}~~}>uPj !!5!!Pp#@pppt 7%FN4NGuP85 zD<22pJJt '-ZKFGNuP!!u\lE>~~>uu2"&'&'&5476?!".'&47>3!'&'&54767>2 p4, ,$ $, ,42p "2" puP8!5! %JZPJJuP8!5! %JHJJuP8 #3#3#3!!5 xx<<oJpppJJuP8 55!#3#3#3oPxx<<΄ΊXXXXuP8!!5 %JJJPD! 6>l>>PD ! DR>l>>P  BlvvuPb3!5 5!"'&'&'&u##+*15J1*+##0+*%!JJ!%*+uP847676763!5 5!"u##+*15J1*+##0+*%!JJ!%*+0!! ^r{VXeoouP855!Dq΄Ξ0uj%5!!53  !<9h9>uj%5!!53  !<9h9>+Z !73#57!!+ Id&+ъ2&+Z 5!'53#'!!!+dI|&22 !'!'!53 !Odcndh 2 3#5!7!!! ndnd;ch dd !53#'5!'! !]n2n22r-hJdc;dJdd 7!573#5!! !2+2n2nr-hLJd;cdJ<!6767632#"'&'&'! <'CZmo~yti^Z...*^Vqo~yti^?)X6nGCZ.//+]Yonzqi_X0//+]>Iʞ BP "&*.37#37#37#37#5!!!!3'#3'#3'#3'#<<< 7&#"7'7 !%*BF8WU{FC*9oX:WubP 55!5!!'!XXddPRt '327'' !!iFB*8X:*CF9XUpt>2%&#"6767&'&"67632&'&547676767tBEHY'#&N'$X$)./,0+""" /%Hp*G&/$##*0,0.+"W!'&'&#'ZGGCuaP/4767!"!47676763"'&'&'&5!3!&'&5P%T)#$"/*11*/"X$#)%eeZ'&$(0+.!"-+0($&'Zet2&'&'&'&54767#"'&'2767&'&'32t)H% X"""+0,0-+"$'N&#/'YHEBCGGZ'!&'&'$W"+.0,0*##"/&GsPX+B6%"'&'&'&547676$47676762"'&'&'&'&'&547676762$/+z > _$#R#af#R#) >xbQu R$'68"   vc<.676767632#"'&'&'&%&'&54767&'&5476A ''+/54<3o8n23'9%%bb%&:?$ fLLf#&#/:&'+-23-+'rr'+-32-+V2e"'&'.54?654'&'&'&#!"#!".4?64/&4676763!23!276767654/&546767622 Z rrd Z   c     c  2g"'&'.54?654'&'&'&+"#!".4764'&4676763!2;276767654/&546767622pW\xj  \W    4  uP^+#76767&'&/3#6767!5!!5!&'&'PSJl R&GG&R lHSi*n: :n**OUä'66'U=;JHd)))dHJ;=#u ! ! j.u-1{ ]h ^' ]T ]' ^T ^,X@ $,,X  $,,X@' $, $,,X $,,X@' $, $,,X ' $, $,,X@' $,' $, $,@ $,@' $, $,@' $, $,@' $,' $, $,@' $, $,@' $,' $, $,@' $,' $, $,@' $,' $,' $, $  $,@' $, $, ' $, $,@' $,' $, $, ' $, $,@' $,' $, $, ' $,' $, $,@' $,' $,' $, $@' $ $,@' $,' $ $,@' $,' $ $,@' $,' $,' $ $,@' $,' $ $,@' $,' $,' $ $,@' $,' $,' $ $,@' $,' $,' $,' $ $ $,@' $, $, ' $, $,@' $,' $, $,' $, $,@' $,' $, $, ' $,' $, $,@' $,' $,' $, $@' $ $,@' $,' $ $,@' $,' $ $,@' $,' $,' $ $,@' $,' $ $,@' $,' $,' $ $,@' $,' $,' $ $,@' $,' $,' $,' $ $ ' $ $,@' $,' $ $, ' $,' $ $,@' $,' $,' $ $, ' $,' $ $,@' $,' $,' $ $, ' $,' $,' $ $,@' $,' $,' $,' $ $@' $' $ $,@' $,' $' $ $,@' $,' $' $ $,@' $,' $,' $' $ $,@' $,' $' $ $,@' $,' $,' $' $ $,@' $,' $,' $' $ $,@' $,' $,' $,' $' $ $,pX $,p,pX@' $, $,p,pX ' $, $,p,pX@' $,' $, $,p,pX' $, $,p,pX@' $,' $, $,p,pX ' $,' $, $,p,pX@' $,' $,' $, $,p,p@' $ $,p,p@' $,' $ $,p,p@' $,' $ $,p,p@' $,' $,' $ $,p,p@' $,' $ $,p,p@' $,' $,' $ $,p,p@' $,' $,' $ $,p,p@' $,' $,' $,' $ $,p,p ' $ $,p,p@' $,' $ $,p,p ' $,' $ $,p,p@' $,' $,' $ $,p,p ' $,' $ $,p,p@' $,' $,' $ $,p,p ' $,' $,' $ $,p,p@' $,' $,' $,' $ $,p,p@' $' $ $,p,p@' $,' $' $ $,p,p@' $,' $' $ $,p,p@' $,' $,' $' $ $,p,p@' $,' $' $ $,p,p@' $,' $,' $' $ $,p,p@' $,' $,' $' $ $,p,p@' $,' $,' $,' $' $ $,p,p' $ $,p,p@' $,' $ $,p,p ' $,' $ $,p,p@' $,' $,' $ $,p,p' $,' $ $,p,p@' $,' $,' $ $,p,p ' $,' $,' $ $,p,p@' $,' $,' $,' $ $,p,p@' $' $ $,p,p@' $,' $' $ $,p,p@' $,' $' $ $,p,p@' $,' $,' $' $ $,p,p@' $,' $' $ $,p,p@' $,' $,' $' $ $,p,p@' $,' $,' $' $ $,p,p@' $,' $,' $,' $' $ $,p,p ' $' $ $,p,p@' $,' $' $ $,p,p ' $,' $' $ $,p,p@' $,' $,' $' $ $,p,p ' $,' $' $ $,p,p@' $,' $,' $' $ $,p,p ' $,' $,' $' $ $,p,p@' $,' $,' $,' $' $ $,p,p@' $' $' $ $,p,p@' $,' $' $' $ $,p,p@' $,' $' $' $ $,p,p@' $,' $,' $' $' $ $,p,p@' $,' $' $' $ $,p,p@' $,' $,' $' $' $ $,p,p@' $,' $,' $' $' $ $,p,p@' $,' $,' $,' $' $' $ $,pp $p,p@' $, $p,p ' $, $p,p@' $,' $, $p,p' $, $p,p@' $,' $, $p,p ' $,' $, $p,p@' $,' $,' $, $pp@' $ $p,p@' $,' $ $p,p@' $,' $ $p,p@' $,' $,' $ $p,p@' $,' $ $p,p@' $,' $,' $ $p,p@' $,' $,' $ $p,p@' $,' $,' $,' $ $pp ' $ $p,p@' $,' $ $p,p ' $,' $ $p,p@' $,' $,' $ $p,p ' $,' $ $p,p@' $,' $,' $ $p,p ' $,' $,' $ $p,p@' $,' $,' $,' $ $pp@' $' $ $p,p@' $,' $' $ $p,p@' $,' $' $ $p,p@' $,' $,' $' $ $p,p@' $,' $' $ $p,p@' $,' $,' $' $ $p,p@' $,' $,' $' $ $p,p@' $,' $,' $,' $' $ $pp' $ $p,p@' $,' $ $p,p ' $,' $ $p,p@' $,' $,' $ $p,p' $,' $ $p,p@' $,' $,' $ $p,p ' $,' $,' $ $p,p@' $,' $,' $,' $ $pp@' $' $ $p,p@' $,' $' $ $p,p@' $,' $' $ $p,p@' $,' $,' $' $ $p,p@' $,' $' $ $p,p@' $,' $,' $' $ $p,p@' $,' $,' $' $ $p,p@' $,' $,' $,' $' $ $pp ' $' $ $p,p@' $,' $' $ $p,p ' $,' $' $ $p,p@' $,' $,' $' $ $p,p ' $,' $' $ $p,p@' $,' $,' $' $ $p,p ' $,' $,' $' $ $p,p@' $,' $,' $,' $' $ $pp@' $' $' $ $p,p@' $,' $' $' $ $p,p@' $,' $' $' $ $p,p@' $,' $,' $' $' $ $p,p@' $,' $' $' $ $p,p@' $,' $,' $' $' $ $p,p@' $,' $,' $' $' $ $p,p@' $,' $,' $,' $' $' $ $p,p' $,p $p,p@' $,' $,p $p,p ' $,' $,p $p,p@' $,' $,' $,p $p,p' $,' $,p $p,p@' $,' $,' $,p $p,p ' $,' $,' $,p $p,p@' $,' $,' $,' $,p $p,p@' $' $,p $p,p@' $,' $' $,p $p,p@' $,' $' $,p $p,p@' $,' $,' $' $,p $p,p@' $,' $' $,p $p,p@' $,' $,' $' $,p $p,p@' $,' $,' $' $,p $p,p@' $,' $,' $,' $' $,p $p,p ' $' $,p $p,p@' $,' $' $,p $p,p ' $,' $' $,p $p,p@' $,' $,' $' $,p $p,p ' $,' $' $,p $p,p@' $,' $,' $' $,p $p,p ' $,' $,' $' $,p $p,p@' $,' $,' $,' $' $,p $p,p@' $' $' $,p $p,p@' $,' $' $' $,p $p,p@' $,' $' $' $,p $p,p@' $,' $,' $' $' $,p $p,p@' $,' $' $' $,p $p,p@' $,' $,' $' $' $,p $p,p@' $,' $,' $' $' $,p $p,p@' $,' $,' $,' $' $' $,p $p,p' $' $,p $p,p@' $,' $' $,p $p,p ' $,' $' $,p $p,p@' $,' $,' $' $,p $p,p' $,' $' $,p $p,p@' $,' $,' $' $,p $p,p ' $,' $,' $' $,p $p,p@' $,' $,' $,' $' $,p $p,p@' $' $' $,p $p,p@' $,' $' $' $,p $p,p@' $,' $' $' $,p $p,p@' $,' $,' $' $' $,p $p,p@' $,' $' $' $,p $p,p@' $,' $,' $' $' $,p $p,p@' $,' $,' $' $' $,p $p,p@' $,' $,' $,' $' $' $,p $p,p ' $' $' $,p $p,p@' $,' $' $' $,p $p,p ' $,' $' $' $,p $p,p@' $,' $,' $' $' $,p $p,p ' $,' $' $' $,p $p,p@' $,' $,' $' $' $,p $p,p ' $,' $,' $' $' $,p $p,p@' $,' $,' $,' $' $' $,p $p,p@' $' $' $' $,p $p,p@' $,' $' $' $' $,p $p,p@' $,' $' $' $' $,p $p,p@' $,' $,' $' $' $' $,p $p,p@' $,' $' $' $' $,p $p,p@' $,' $,' $' $' $' $,p $p,p@' $,' $,' $' $' $' $,p $p,p@' $,' $,' $,' $' $' $' $,p $p2  5 1Vd22h' %#3 5' :' 73 ٪L^8bb:'B 7''ٛ>PNq'B '''ٛ>PNq^D'B ''>PN'B%  '''tNP'B5  5''bNP#u  u-:k7!!  767654'&'$  $'&'&547676h08rtrrtr@rtrrtr VGFFGrGFFG;:rs죟sr:;;:rssr:Ŭɪ:k3?  767654'&'$  $'&'&547676!!#!5!rtrrtr@rtrrtr VGFFGrGFFGssB;:rs죟sr:;;:rssr:ŬɪKss:k3?  767654'&'$  $'&'&547676   ' rtrrtr@rtrrtr VGFFGrGFFG]x3w32x3B;:rs죟sr:;;:rssr:Ŭɪ3x23w3x/ i'o&'%JtL#5!676&'&!!'&'&'77SOJMG79G!SOJMG79G , FCD4 MFCD4tL+5!676&'&!!!!'&'&'77!5!7$SOJMG79G SOJMG79G @FCD4٨FCD4ΪtL#%'&'&'775%676&'&oCSOJMG79GJSOJMG79GmFCD4FCD4tL09%'&'&'77&'&54767676&'&&'67'WSOJMG79G]InoSuSOJMG79GIq(P >6=,HK%FCD41IosV='73'64D#'SOJMG79F F25f'&1,SOJMG69G+4$(']H6H\GLCD55FCD4M 25DCL802&&FCD4x$'a8]HH]tL#''&'767!!67&'&'&!!3#G96GMBWS _ F97GMJOS[n-< JFD 4DCFRtL15''&'76767654'&'67&'&'&63#cMGEBo6( F97GMJOSsVnnBcG97GMJOS:&B=tkDBJ4DCFBUo|K*4DCG=~tLp9=767654'&676&'&632#"''&'&'773#"ofdKHGEkyJ?*UOJMG79G;DblmoWISOJMG79G-k6HFgjJG*$Q]GCD4ozlo!FCD43>'tL=A654'&#"32676&'&'&'&'77&'&547673#HGCljHHHGkbSOJMG79GcBnnVsSOJMG79G]InoSu'EgjJEHIhgHHGCD4K|oUFCD41IosVtL#'+7!676&'&!!'&'&'773!#3;SOJMG79GSWBKI69G ūIFCD4ޥFJ Vy4--SOJMG79G-A 4yhT+FCD4Ea8J'JFCD42PtL3'&'&'77&'&53676&'&67653jVDwSOJMG79G\?Vy4.+SOJMG79G*> 4yriRFCD4LFaIȢJ(FCD41P8/)!526732#"&'.#" #"&54632j Pd@7*8  kOeD=!0 l9TA6?&#Hn!bSA8?S/b)5!26732#"&'.#" #"&54632kj Pd@7*8  kOeD=!0 bl9TA6?&#Hn!bSA8?S 5 5FѶeѦ 5 5FѶeѦ'~/ &~ ''~ ''~ '~/  '~ N;B%#"'&'&'&#"5>32326#"'&'&'&#"5>32326 5jbn ^Xbh`n ^Vhjbn ^Xbh`n ^Vg@PNE;=LTNE;=KPD:32326#"'&'&'&#"5>3232655jbn ^Xbh`n ^Vhjbn ^Xbh`n ^VePNE;=LTNE;=KPD:327&#"56767326 5jbDS4WVhjbm\Y@/Xbh`ES3VXbhZmMp[Y@1Vg@PD4KUNE;@LTNE4LRN"*,@J^po_N5<#"'3267#"/'7&#"5>327&#"5>32732655jbDS4WVhjbm\Y@/Xbh`ES3VXbh`n[Y@1VePD4KUNE;@LTNE4LRND:@J^T 5!5!-5 !5!uu/0\^ҲЪ~T -55!55!usҲЪ᪪/0N%#"/&'&#"5>32326!! 5jan^Xbh`n^Vf@PD:32326!!55jan^Xbh`n^VfPD:323265-5ian^Xbian^VgsuOE;=LSNE; =KJ/0:ҲЪ !(#"/&'&#"5>32326-5 5ian^Xbian^VeuOE;=LSNE; =KJҲЪ/0, -55!55!us%ҲЪ᪪(/0٪, 5!5!-5 !5!uu%/0\~ҲЪ^6 5 5 -55uu/0V/ҲЪа/6 -555 5uuҲЪ۰/'/0K/& 55p/ѦѶ& 5 5p/om//&'~/ &'~ { 5!5 5!@Ѫop9{ !5! 5 !5!@Ѫ555@pNpop 55 5@p pU)$.#"#"&'532767676325hV^ n`hbX^ nbj@TL>֪VJ<:DNTL<:DNDop%,5!5!.#"#"&'53276767632 5hV^ n`hbX^ nbj@>֪VJ<:DNTL<:DNDf $!!!5!676762!!&'&'&!!C.8d 6WYYV7 e8-;Z{+DD\93[2332[0<[EC,W7!!%5$$}y]]x|W%!!%5$$}y]]x|W !!'7!5!%5$ZZ N$}qPP]]x|W !!'7!5!55%$ZZ N}$qPP|]] K75!5!%5$!:[]3֪k-QtXVv K75!5!55$%$][:!3֪kVXQ-qK!5!7!5!7!!!!'%5$&`ȉ)P"_=6!:[]ss1st-QtXVvqK!5!7!5!7!!!!'55$%$&`ȉ)P"_=6][:!ss1stVXQ-y;F#"'&'&'&#"5>76326#"'&'&'&#"5>327>%5$ian ^Xbib` ^Vgian ^Xbian OOg!:[](NE;=LTN9 A=KOE;=LSNE;CE-QtXVvy;F#"'&'&'&#"5>76326#"'&'&'&#"5>327>55$%$ian ^Xbib` ^Vgian ^Xbian OOe][:!(NE;=LTN9 A=KOE;=LSNE;CEVXQ-6A#"'3267#"/'7&#"5>327&#"56767326%5$jbDS4WVhjbm\Y@/Xbh`ES3VXbhZmMp[Y@1Vg!:[]$PD4KUNE;@LTNE4LRN"*,@J-QtXVv6A#"'3267#"/'7&#"5>327&#"5676732655$%$jbDS4WVhjbm\Y@/Xbh`ES3VXbhZmMp[Y@1Ve][:!$PD4KUNE;@LTNE4LRN"*,@JVXQ-7 5@pppo%5555òi%!%!!W7 r%!!!W7 %!!,7r32 &}f[_ &}f[, %$R/ %$R !2+##5332654&+!ʿ[qrqqϐђАfT%#&'&+;#"&! %326&+A>:AٿKEExn?MHDh01–m؍=H#(07#5#"''7&546;7&'&#"5>327354326=-?\g`n;) T`TeZx_958>cc3Vfa<}NV{ E..''rOs+Ax.ٴ) 3{ B333#;#"'&'##53w1ѪKsQ fև3͏oNP r>+!#4&#"#3676323#d||BYZucce22wxLj#33 3###%̟8ǹiEL#\ !!#!5!sP=g՚oAX` !!#!5!qjLl}e`R%h%63#56?65&#"Tθ^\Ѩ1<-M21]@/2UPn44%q!#3!q"9`!#3!W`3oh '"276'&'&'2#"'&7673=A^`VUF6{ǷdžhB:WULqˑRh]p[mNssg.: #'+/37ڷ/$0(7,48<<<<<#+ 3'<<<<< <<<<< <<<<<9̰XKRX8K bf TX30<ٿJxn?M~hb–m؍O=p #3 632'&"7\^H125=``Te^qu " 654&7.5463!!"32 r(kOAž(u nPM/1|I49/$H@&  !  !L%<2<<<1@  /<22<2220#"!!#!##53546;#"!5463cM/ѹc'&Phc//яN((hcN/JC@F L<2<<1@ /<220#!##53546;#"3#JcM`/яNPhc/J7@F L<<1@   /<220!#!"!!##53546JcM/ѹ{Phc/яN/)-Z@/F+** $ "&L.<2<2<<1@#$-*$!/<<2222220#"!547676;#"!#!#!##5354633#c'&W'NcM((hcNU'Phc//яN/&N@(F  ! #L'<2<<1@ ! &!/<<22<2220#"!5463!#!"!!#!##535463c'&cM/ѹ((hcN{Phc//яN/L-54'&+"##535476;2!!;#"'&5#5$%e"c'&WWWU{%&sQQ`ch((((h=яNUVVSN''PO`oY&'&#"#"'&'5327654'&/&'&547632&547672!!;#"'&5#5354'&"QVITFu?;11?æ{|`\alfccaFF2-@LLfpHM\[b^{%&sQQ06DE64?+*'W@%$!+[[#5-,QK(#*$JKNV _]`\L''PO`NA+210@=TL* 35'5467676?67654&#">32,X\"$߸g^aOl39ZZ8L{4<+VZ@EL89CFnY1^5YVe @03#u)@ dd1<20KTKT[X@878YKTK T[KT[X@878YKTKT[X@878YKTX@878Y@````pppp]3#%3#^ys@B10KSXY"K TX@878YKTX@878Y@ %%6FVjg //]]3#7Ju@!  VV 99991<2990K TX@878YKTX@878Y ]'.#"#4632326=3#"&9 $(}gV$=09" (}gT";9! 2-ev 3)dw @B10KSXY"K TX@878YKTX@878Y@*$$5CUU//]]#ę1w@ 91<90K TX@878YKTX@878YKTX@878Y@ //- ]3#'#Ӌ1@ 91290K TK T[K T[K T[X@878YKTX@878YKTX@878Y@ "  ]373Ӌ 9 #.#"#>32v cSRav 6978w{z9 j@ VV120K TX@878YKTX@878YKTKT[X@878Y332673#"&v cSRav 6978w{zf103#@1<203#3#䙋N#!#ęę53#73#'3# 3#3#'3#}}d 3#3#'3#}}d3#3#d 3#3#3#3#dd&;#"'&'#"'$&733$767654'3F??7KX %+53276=3+HZ#c,1VV,1jٻ~X%+53276=3;#"+MZ#c,11,c7nVV,1jj1,\,>%!$'$&73!2%7&'&547676323!!"'654'&'&#"xhn}@AQ+"R:4RQP ioh4"(=)1$+<'g\^sM6,|y$K2S%jAzG' <8BN?0654'&323276767'&54767632#!V)B,4((7(*HTO<?aNbNLZB`.NJ|m+M;3*)3P& ]027EW4,E$2Hf3Џ,' !5;#"'+5327&'&54767632"67654'&'&f$'و'$A??8 D?$ 9P2*I1C299(M.L,0W 5+5DE2.4! k .@%&'&'&547676323!!#'$'&5473!2766'&'&#"B.y9()Wp8c20-=^E>><l/"'"3 9Ld/  #+m=E2X:zFNV}`kL:DbZzWK# :<,; ?   &  R~&  R %4'&"2>"'&4762<R8R8z?@?@@?@(8)*8@@@@@?? ' '  & ' cR P~& ' cR P'   &  cL~&  cL >.G%3#"'&'&'27'&5767&5$7&'&5676&#"7(1{R=IrbJIԖ^`e_$m3HZN,58^>42@B^!xdP]vbĘe4)@5 [_w$%-_,. d! M fM\K7&'&'&5672+53276767&'&5676&#"7SSgURHKLXJKݣdht^N,58^>42@B^!x#4b4bBPH:jV$%-_,. d! M fM>K)B;#"'&'+53276767&'&'&5672'7&'&5676&#"7~AI2hrBV~(;E)Kݣdht^eSgURHK+N,58^>42@B^!x 4b)N"w6a.%PH:jV#$%-_,. d! M fM >.26%3#"'&'&'27'&5767&5$3#3#(1{R=IrbJIԖ^`e_$m3HZ}dP]vbĘe4)@5 [_w\F"&&'&'&5672+53276763#3#SSgURHKLXJKݣdht^ᖖ#4b4bBPH:jVR>F)-1;#"'&'+53276767&'&'&56723#3#~AI2hrBV~(;E)Kݣdht^eSgURHK; 4b)N"w6a.%PH:jV# >.26:%3#"'&'&'27'&5767&5$3#3#'3#(1{R=IrbJIԖ^`e_$m3HZ}}dP]vbĘe4)@5 [_wd\F"&*&'&'&5672+53276763#3#'3#SSgURHKLXJKݣdht^ᖖ}#4b4bBPH:jVLd>F)-15;#"'&'+53276767&'&'&56723#3#'3#~AI2hrBV~(;E)Kݣdht^eSgURHK;} 4b)N"w6a.%PH:jV#d >.26:>%3#"'&'&'27'&5767&5$3#3#3#'3#(1{R=IrbJIԖ^`e_$m3HZ}%}dP]vbĘe4)@5 [_w>\L"&*.&'&'&5672+53276763#3#'3#3#SSgURHKLXJKݣdht^ᖖ}}#4b4bBPH:jVږ>>L)-159;#"'&'+53276767&'&'&56723#3#'3#3#~AI2hrBV~(;E)Kݣdht^eSgURHKG}q 4b)N"w6a.%PH:jV#3_+ 5__bV!"#367632+53265PͳNijQRW1fOCCoa`Z` 2@  F <<221/<20@  @ P ` p ]33###53ø`<ĤV.` 54!333##"3276!5R w{i&V`p?`3A0c3'q= Ua4'q [^3' Pq=cZ' d UcZ' d UaZ' dqaZ' dqvj 3' \q=cZ' b Uvj V' } \cW' u |vj0Z' @d \c:' u (Dcm:' D uvc u' u vV Y' P pVZ' P dVZ' P dV' Pc[' uPj&Z,,!!,,O=32653#"&[hq`=QQ, &3733;#"'!5 767654Ë( I*e2D0# FpgM,>ꅗ:H~ &3;#"'!5 767654x I*e2D0# &pgM,>ꅗ:H~#$+%653;#"'#"'$&733276373N1,cKpNyUcE@A(IPmËI~jkj1,3.(B"[\ss~B"5F` +5327653'373WPKc,1Ëse\,1jjF%+5327653;#" 373SMKc,11,cKËVV,1jkj1,~FF7>65&'&'&54767632;#"'&#"#"'$4733276373L[/,4PT*uW ##rpl$-AIqYhu?AB[MbË!3!+ (;=A<^ĸ#0{bV` )gZZrNBF8@ %+53276=3 373 3#'3#+HZ#c,1ËVV,1jٻ6Fp~@#%+53276=3;#" 373 3#'3#+MZ#c,11,c7nËVV,1jj1,Fp ~r3;#"'!5 767654 373x I*eK2D0# ;Ë&pgM,>ꅗ:H~F9 9F KSKQZX8Y1/0@  @ P ` p ]3;#"&5Li a^ $&'&'&'3;#"'&'#"'&5476 xRot$8pKZI-&8:m*12e CY>)2'+eO,3;I0D6Ԧ_<22& rm m r 1f55q=3=dd?y}s)3s\\?uLsLsyD{={\{fqqq/q999qqJ+o#7=V;=3X55^R\sd5^5bs#5`b?yyyyyys\;\\\3 LsLsLsLsLsLf {{{{{{{fqqqqq9999qqqqqqH==y{y{y{sfqsfqsfqsfq)q3 qqqqqq3sq3sq3sq3sqTx\9\9\9\9\9r\9?uXu9uuFLsqLsqLsqs/qJJJ+o+o+o+o#7#7#7DV={\3X{\3X{\3X/ }}ssfq3 }qqLu3s~\ 9 =LsNgvsq7E+d#7#7Np={\3XTT\h3qT]hX\] ` d <qKsday{\9Lsqqy{y{{3sq3sq?LsqLsqTX9 ` d <q3squy{{LfHy{y{qq\9\9LsqLsqJJ+o#7,Gqqq{\3Xy{qLsqLsqLsqLsq=79qqy f u +o3XPP}  yq\9@sq J qefpqqqq|SA4Pq9qq q``9t*KL:+#qqGpPPOJI~>t+o7#7#7q=V=f3X3XXmXXXX^Pqq;VVqXXqvqq77:7/ <66O<u1ufu]G^G 6&3uuuuuu  3s3soouuuuMLhuTzuuuq7]yq U zwj#Lcxhc+qc3x+x.pp*pw::efqesDy}uy{\Ls\?yLsLs{=LsN\Fqc<Fq qSZkq=xJvkqJqqdGo;GpqpWWGpAOoLsq0q@GGrwxssFqU-~Od$s6sq,J7Oofq9Lsqs5UsssJs\\\T\J#y}}@e(!TLss#y{=6|<}o;{p4kq5FA33L ;q;fq<=p;rR>QdqEqq'(4dq+o9998L0(3=;xs*` D3 GLsk7sS[LsGpLsq@R2@R2qqsqxsxssfq2""XXX.j}!&4G8=;2!A???!=k2*IS^s6qsfq;=={=;yt|||\(5F?56].I6r|29y{y{{qLuqLuq(5F!ATX33LsqLsqLsqodq#=#=#=|uQ}q -qn6.3sGq/S= {>fq$S9( 3pfyqyqy3/qqq2E2</=V3XTx=2Z(r u//SH||NYHG p+"M"M>G/Mmu>GVGVGTR>GnzhuuEuOGGOGOGmu\#=nnuV&7yGSF%nyu=nV&7yGSF%t9>GGGOGT_>G=nIzIIVz[quuIuEqOGOGFK\#^YGu@zV&7~77#7OGy{}}}sfq)q)q)q)q)qqqqqq/3sq\9'\9???u9u9u9'u9LsqLsqLsqLsqJJJJT+o+o+o+o+o#7#7#7#7y=y=DVDVDVDVDV{=;{=;={\3X{\3X{\3X#V={/y{y{y{y{y{y{y{y{y{y{y{y{qqqqqqqq\Z9D\9LsqLsqLsqLsqLsqLsqLsqNgvNgvNgvNgvNgv====FqFqFqFqFqFqFqFqyy'iSSSSSS0l7hx qqqqqqoE.k_FqFqSc<qqFqFqFqFqFqFqFqFqyy'i7hxk_FqFqFqFqFqFqFqyyy<pr\\D~{aNsVdd%%%%9933W q q(()((()( 33?nn=V`Io=n=n8N(ffadp5Wny5?5f5\5l5Y5S999og1u5W55^5b5?5f5\5l5Y5S999og"MVGOGuVGVs`u .;F_( ..D]1u!===&Cs#&<<H"jNhR6nLsSWv,('\NN?y}hg F=|WZ[O=;^^b?fbfl\bya W{=w= =us)9~=}== ]=;;;9fqq y) ysedud    du,dudududvdvdd*ZZd-Opdduudwddxvxddddudud  dududuku7^H^^^@^^^uzz^uwududdud7u7y#hZZ,dVD===j,ff+/P/u/+tPtut+t+t+tyyy``**yyay*ZZ a aWWd++* x+,,,,,,,,,,''''''''''''''''''''''q''''''''''llgg'''''''''''''''''pprppppppppp7p7Tpp''''3'''ppppp'''',h,d,,,,+,}}_}} ,,,B,d,,,,,,,,,,},,,dZd2E\,,,,,,,,,,,,,,,,,,,,,,,S,,,,,],,,,,m,,E,,,,A,,,U,,Q,0,,,U,,L,0,C,,X,,B,,X,,,x, ,,,,,,,,,,,,,,1,,,,,,,,,,,X,X,j,, T},y,},),,,,,dEGb  gT VIVVx+5X3ppppR >pTVSTWW0V000002p@TTTTpnnTVaaTT,f,z,z,z,z,xNNx>NnX~#9Uwlf,,,,,,,,,,                    uuuuuuuuuuuuuu++<uususs,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::: /+t+t+t+t+t+t+t+t+t+t++t+t+t+/+/''''u 9 u H#?{\3Xh<Go@s=q/ / ///}/o4s N:jH k :j:j:j********_9xxxxxxxxvxxvxxvxxxvxvxxxx,p:jj9J< 0 $%*K-r294K7D9:;< R&Y\99999 &&&&&K&D: $$$$$9$&$*$2$4$7a$9}$:$>?@(@(@AB<CTDxDFFGHIIIK<KLLpMMNNO,OXOPPQhQQQRRRSSLS|TUUUUVV$V<VTVxVWhWWWWX(XXY ZXZpZZZ[[\\]] ]L]]_____``(`@`d`b8bPbhbbbbcTdddeeHe`ff0f\ffffggg0gTglggggghh(hhi iDihiiiiijj<j`jxjjjjjk,kpkllllmm@mdm|mmnn$nHnlnnnooppp<pTpxppq@qqrr0rHrxrrsLstt4t`tttuPvxvvvvvw$w<wTw|wwwwxx4xLxxxy yyzz8z\zzzz{ {${<{T{x{{{|||4|L|d||||}~~T8(|X$t|$l|4L@ p`d8 d\$d| $<Tl$Lt 8Ph 8P(@Xp(D\0H`x 8Ph(@Xp0H`xXT4Ld| $<|hp4<H@Pd`P\0lP$4PŤƈ@@˄\͐дѤLӈxՈXX@؀ٔ8D۸dܴ݌ ްhD\(X@Td4l |`d$p@x XPxL$Th4X,\(T< l,x  4Hdx0Tx  D h     4 H \ p      D X l       @ \ x     4 | ,@Th|8(@x L`t8h l0Ld|@P`p 0@$4DTT(Ld|D(  ! !"$"4"##$ $%L%&D&'(l))))))**+L+++,--.0.///0 0h011l2,233x345T56x7,78X889\999:t:;P;`;p;;;>>(>8>??P?h????@X@h@A,A<B0BCCD@DDDDEE(E8EHEFFFGDGH HHIIJtKK,KLLMLM\NLOOpOPPxQQXQhQQQRR$S SStST0TUU0UUVWPWhWWX XXXXXYXYZZ(Z@ZXZ[([8[[\\]<]]^D^__``aaab bdbccpcccdeeefgglgh0hii,iPiPijhjk0kklXlm mdmmn$nnoDo\otoop<ppqqTqqrr@rxrs<stttuuHuXuuvvPvvwwXwwx<x|xy yyyyz z$zz{0{{||P||}}h}}}~~@~x~~~~~0H`x@l|4Ld|4tD<(L\l(p4DTdt$X  |d(d`0PHP(`h t Dh8P(dh(,@Th|8H,0tD$\(H\ PPH(P(0H`x $<Tl,D\t0H`x 8Pl0H`0H`x 8Ph4Ld|(@Xp,D\t 8Ph(@Xp0H`x $<Tl„œ´,D\tÌäü4Ld|ĔĬ $<TlńŜŸ0H`xƐƨ(@XpLjǠǸ0H`ȀȘȰ(@XpɈɠɸ0H`xʐʨ 8Pl˄˜˴,D\t̨̐(@Xp͈͠ͼ (D\tΌΤμ <XpόϨ(@XpЈРм (D`|єѬ $<XpҌҨ 8PhӄӜӸ4Ld|ԔԬ4PlՄՔլռ $4L\tքִ֜,D\t׌פ׼4Ld|ؔج $<Tlلٜٴ,D\tڌڤڼ4Ld|۔۬,<ܬܼ4Lhxݔݤݼ 8P`xސި 8Ph߀ߐߨ <Lh4D`p0@lTH4Pl$<\d,@,Ph(@\8LxH|0T$`h \ H  4H\p$8Lp@,dt@l4@@h(   $ <   P  d 4Xpp<LdTP(,Ll ,Ll $4Ll   $ 4 D \ |    !!!,!D!d!t!!!"(#$$$%X&&'h())* *<*l*++,T,,-8--..T..//\/0h1,133d3344T444566<67P788D8l88899,9H9d99::X:::;@;<( >`>>? ?`?@@p@AAXAAB,BhBBC0CpCD(DDETEF(FlFG GHHdHHILIJJpJJK(KdL8MMPMNtNOOlPPhPQtQQR4R\RS S\ST8TLTTTU8UPUhUWlWWX\YY$YYZ|ZZ[[P[\\(\^D``abbcc cLcdcccdHdeetef\fgdhhijDk,kklm(m@m`mmmmn@nno8oxop pqtrrrs sdsttuupuvv`vwTwwxhxyTyz{8{|{|P|}}L}}~8|Tt`,DPLtdXH,thPxp$Tp<d 0d 0@t8d0d,L8t4Ld<T,`<\|H0XLh$@`$@x LX\|ˆd`4Hd΀Μθ (D`|ϘϴдѤL`tҐҤҸ$8PlӈӴ x֜$,Htِټ,Tpژڴ(Dpی۸Hdܐܬ,pT޼ߴh$8T0P|H<h l,l,,,T|4\(PT,h h@p$lthP0Th&&')0134567;h>?tABBBBC C,CLClCDGI<JLMNPRXSTUVXZD[P[]^P`bld efghijm4p\r`twy$|}0dlP0l xdPHDTl L(pDlh,4\hÌĸl08T֬<`\P|th$DPl,|`00\D0X <X  h , ,|p,Dtt!P'L(*+,-X.0\13 4l56D677788888x8889:;p;p>?H???@@@@l@@@AA|ABhCDTDEGGJHKMHN,OPPQRSTUW@XpXYZ[D\\]l^X_D``L`x``aaaabHbbbc$cDccddHdde,e|effpfg<gh8hhijjkl<mhno8otoooooooppp8pTpxppppqq(qLqxqqqqrr(rLrxrrrss,sXsssstt(tDthttttuuHuluuuvv8v\vvvww8w\wwwxxHx|xxxyy(yDyhyyyyzzHzlzzz{{8{\{{{||8|\|||}}H}|}}}~~H~l~~~Ht<x(T$X8t(DhHl8\8\H|HlHt<x(T$X8tHlHt<x(T$X8t4h8d<x$X8t(d(l@| @tT( 4Ht|LX84Ld|dDHh(0l(p<Tphp\@$X4dph<HXĨĸ,`ƘDP|,@ `Xp@ք0d0lؘذ4Xِ <|<x@P`xݐ @Xpވhh\$ (D`|$@\x8p4 h$`< 1b+@h8   :0*ln p))rQQtrrv~~xz|--00     ` `"$?N?N?O?O?P?Q?Q ?R ?8?9?.??ʿ?????? vqjz) ./12>n "" ???7DCBTz 0`$$b)(d0/h75l;;rDDtFFvIIxLLzOO|RR~XV         `??ݿ??տ?????????ǿ?ƿ?ο??ѿ??Կ?ȿ  8T. $&??6     !"#$%&'()*+,-./012 ` `"%(+.1 47:=@C FILORUX[???Ŀ??ǿ??ʿ??Ϳ??п??ӿ   ?? ? ?#?&&,)(/,(2/.?11843?64?99A<:D?=?@@JC ~~72 "N x  ! ({4;;  0     . ^  " : %:? h;Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain DejaVu LGC SansDejaVu LGC SansBookBookDejaVu SansDejaVu SansDejaVu LGC SansDejaVu LGC SansVersion 2.10Version 2.10DejaVuLGCSansDejaVuLGCSansDejaVu fonts teamDejaVu fonts teamhttp://dejavu.sourceforge.nethttp://dejavu.sourceforge.netFonts are (c) Bitstream (see below). DejaVu changes are in public domain. Glyphs imported from Arev fonts are (c) Tavmjung Bah (see below) Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Arev Fonts Copyright ------------------------------ Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the modifications to the Bitstream Vera Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Tavmjong Bah" or the word "Arev". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Tavmjong Bah Arev" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the name of Tavmjong Bah shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from Tavmjong Bah. For further information, contact: tavmjong @ free . fr.Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Glyphs imported from Arev fonts are (c) Tavmjung Bah (see below) Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Arev Fonts Copyright ------------------------------ Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the modifications to the Bitstream Vera Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Tavmjong Bah" or the word "Arev". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Tavmjong Bah Arev" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the name of Tavmjong Bah shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from Tavmjong Bah. For further information, contact: tavmjong @ free . fr.http://dejavu.sourceforge.net/wiki/index.php/Licensehttp://dejavu.sourceforge.net/wiki/index.php/LicenseAll Typographic FeaturesFonctions typographiquesAlle typografischen MglichkeitenFunzioni TipograficheAlle typografische kenmerkenLigaturesLigaturesLigaturenLegatureLigaturenFractionsFractionsBreukenAll Type FeaturesToutes fonctions typographiquesAlle AuszeichnungsartenTutte le FunzioniAlle typekenmerkenCommon LigaturesLigatures UsuellesNormale LigaturenLegature pi ComuniGemeenschappelijke LigaturenRare LigaturesLigatures RaresSeltene LigaturenLegature RareZeldzame ligaturenDiagonal FractionsFractions en DiagonaleDiagonaler BruchFrazioni DiagonaliDiagonale breukenZ 1  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / sfthyphenAmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandicLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongsuni0180uni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191uni0193uni0194uni0195uni0196uni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEUhornuhornuni01B1uni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BAuni01BBuni01BCuni01BDuni01BEuni01BFuni01C0uni01C1uni01C2uni01C3uni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DEuni01DFuni01E0uni01E1uni01E2uni01E3uni01E4uni01E5Gcarongcaronuni01E8uni01E9uni01EAuni01EBuni01ECuni01EDuni01EEuni01EFuni01F0uni01F1uni01F2uni01F3uni01F4uni01F5uni01F6uni01F7uni01F8uni01F9 Aringacute aringacuteAEacuteaeacute Oslashacute oslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217 Scommaaccent scommaaccentuni021Auni021Buni021Cuni021Duni021Euni021Funi0220uni0221uni0222uni0223uni0224uni0225uni0226uni0227uni0228uni0229uni022Auni022Buni022Cuni022Duni022Euni022Funi0230uni0231uni0232uni0233uni0234uni0235uni0236dotlessjuni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240uni0241uni0242uni0243uni0244uni0245uni0246uni0247uni0248uni0249uni024Auni024Buni024Cuni024Duni024Euni024Funi0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni0259uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269uni026Auni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02AEuni02AFuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02B9uni02BAuni02BB afii57929 afii64937uni02BEuni02BFuni02C0uni02C1uni02C2uni02C3uni02C4uni02C5uni02C8uni02C9uni02CAuni02CBuni02CCuni02CDuni02CEuni02CFuni02D0uni02D1uni02D2uni02D3uni02D4uni02D5uni02D6uni02D7uni02DEuni02DFuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9uni02ECuni02EDuni02EEuni02F3uni02F7 gravecomb acutecombuni0302 tildecombuni0304uni0305uni0306uni0307uni0308 hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322 dotbelowcombuni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0340uni0341uni0342uni0343uni0344uni0345uni0346uni0347uni0348uni0349uni034Auni034Buni034Cuni034Duni034Euni0351uni0352uni0353uni0357uni0358uni035Cuni035Duni0360uni0361uni0362uni0374uni0375uni037Auni037Buni037Cuni037Duni037Etonos dieresistonos Alphatonos anoteleia EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni03D0theta1Upsilon1uni03D3uni03D4phi1omega1uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03E2uni03E3uni03E4uni03E5uni03E6uni03E7uni03E8uni03E9uni03EAuni03EBuni03ECuni03EDuni03EEuni03EFuni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FAuni03FBuni03FCuni03FDuni03FEuni03FFuni0400 afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061uni040D afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097uni0450 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109uni045D afii10110 afii10193uni0460uni0461 afii10146 afii10194uni0464uni0465uni0466uni0467uni0468uni0469uni046Auni046Buni046Cuni046Duni046Euni046Funi0470uni0471 afii10147 afii10195 afii10148 afii10196uni0476uni0477uni0478uni0479uni047Auni047Buni047Cuni047Duni047Euni047Funi0480uni0481uni0482uni0483uni0484uni0485uni0486uni0487uni0488uni0489uni048Auni048Buni048Cuni048Duni048Euni048F afii10050 afii10098uni0492uni0493uni0494uni0495uni0496uni0497uni0498uni0499uni049Auni049Buni049Cuni049Duni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04A8uni04A9uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B0uni04B1uni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04B8uni04B9uni04BAuni04BBuni04BCuni04BDuni04BEuni04BFuni04C0uni04C1uni04C2uni04C3uni04C4uni04C5uni04C6uni04C7uni04C8uni04C9uni04CAuni04CBuni04CCuni04CDuni04CEuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8 afii10846uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni0500uni0501uni0502uni0503uni0504uni0505uni0506uni0507uni0508uni0509uni050Auni050Buni050Cuni050Duni050Euni050Funi0510uni0511uni1D00uni1D01uni1D02uni1D03uni1D04uni1D05uni1D06uni1D07uni1D08uni1D09uni1D0Auni1D0Buni1D0Cuni1D0Duni1D0Euni1D0Funi1D10uni1D11uni1D12uni1D13uni1D14uni1D16uni1D17uni1D18uni1D19uni1D1Auni1D1Buni1D1Cuni1D1Duni1D1Euni1D1Funi1D20uni1D21uni1D22uni1D23uni1D26uni1D27uni1D28uni1D29uni1D2Auni1D2Buni1D2Cuni1D2Duni1D2Euni1D30uni1D31uni1D32uni1D33uni1D34uni1D35uni1D36uni1D37uni1D38uni1D39uni1D3Auni1D3Buni1D3Cuni1D3Duni1D3Euni1D3Funi1D40uni1D41uni1D42uni1D43uni1D44uni1D45uni1D46uni1D47uni1D48uni1D49uni1D4Auni1D4Buni1D4Cuni1D4Duni1D4Euni1D4Funi1D50uni1D51uni1D52uni1D53uni1D54uni1D55uni1D56uni1D57uni1D58uni1D59uni1D5Auni1D5Buni1D5Duni1D5Euni1D5Funi1D60uni1D61uni1D62uni1D63uni1D64uni1D65uni1D66uni1D67uni1D68uni1D69uni1D6Auni1D77uni1D78uni1D7Buni1D85uni1D9Buni1D9Cuni1D9Duni1D9Euni1D9Funi1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5uni1DA6uni1DA7uni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1uni1DB2uni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB8uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1E00uni1E01uni1E02uni1E03uni1E04uni1E05uni1E06uni1E07uni1E08uni1E09uni1E0Auni1E0Buni1E0Cuni1E0Duni1E0Euni1E0Funi1E10uni1E11uni1E12uni1E13uni1E14uni1E15uni1E16uni1E17uni1E18uni1E19uni1E1Auni1E1Buni1E1Cuni1E1Duni1E1Euni1E1Funi1E20uni1E21uni1E22uni1E23uni1E24uni1E25uni1E26uni1E27uni1E28uni1E29uni1E2Auni1E2Buni1E2Cuni1E2Duni1E2Euni1E2Funi1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Auni1E3Buni1E3Cuni1E3Duni1E3Euni1E3Funi1E40uni1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Auni1E4Buni1E4Cuni1E4Duni1E4Euni1E4Funi1E50uni1E51uni1E52uni1E53uni1E54uni1E55uni1E56uni1E57uni1E58uni1E59uni1E5Auni1E5Buni1E5Cuni1E5Duni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E64uni1E65uni1E66uni1E67uni1E68uni1E69uni1E6Auni1E6Buni1E6Cuni1E6Duni1E6Euni1E6Funi1E70uni1E71uni1E72uni1E73uni1E74uni1E75uni1E76uni1E77uni1E78uni1E79uni1E7Auni1E7Buni1E7Cuni1E7Duni1E7Euni1E7FWgravewgraveWacutewacute Wdieresis wdieresisuni1E86uni1E87uni1E88uni1E89uni1E8Auni1E8Buni1E8Cuni1E8Duni1E8Euni1E8Funi1E90uni1E91uni1E92uni1E93uni1E94uni1E95uni1E96uni1E97uni1E98uni1E99uni1E9Auni1E9Buni1EA0uni1EA1uni1EA2uni1EA3uni1EA4uni1EA5uni1EA6uni1EA7uni1EA8uni1EA9uni1EAAuni1EABuni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EBEuni1EBFuni1EC0uni1EC1uni1EC2uni1EC3uni1EC4uni1EC5uni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED0uni1ED1uni1ED2uni1ED3uni1ED4uni1ED5uni1ED6uni1ED7uni1ED8uni1ED9uni1EDAuni1EDBuni1EDCuni1EDDuni1EDEuni1EDFuni1EE0uni1EE1uni1EE2uni1EE3uni1EE4uni1EE5uni1EE6uni1EE7uni1EE8uni1EE9uni1EEAuni1EEBuni1EECuni1EEDuni1EEEuni1EEFuni1EF0uni1EF1Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni200B afii61664afii301afii299afii300uni2010uni2011 figuredash afii00208uni2016 underscoredbl quotereverseduni201Funi2023onedotenleadertwodotenleaderuni2027uni2031minuteseconduni2034uni2035uni2036uni2037uni2038uni203B exclamdbluni203Duni203Euni203Funi2040uni2041uni2042uni2043uni2045uni2046uni2047uni2048uni2049uni204Auni204Buni204Cuni204Duni204Euni204Funi2050uni2051uni2052uni2053uni2054uni2055uni2056uni2057uni2058uni2059uni205Auni205Buni205Cuni205Duni205Euni2070uni2071uni2074uni2075uni2076uni2077uni2078uni2079uni207Auni207Buni207Cuni207Duni207Euni207Funi2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089uni208Auni208Buni208Cuni208Duni208Euni2090uni2091uni2092uni2093uni2094uni20A0 colonmonetaryuni20A2lirauni20A5uni20A6pesetauni20A8uni20A9 afii57636dongEurouni20ADuni20AEuni20AFuni20B0uni20B1uni20B2uni20B3uni20B4uni20B5uni20D0uni20D1uni20D6uni20D7uni2100uni2102uni2103uni2104 afii61248uni2106uni2109uni210Duni210Euni210FIfraktur afii61289uni2115 afii61352uni2117 weierstrassuni2119uni211ARfrakturuni211D prescriptionuni2120uni2121uni2124uni2126uni2127uni212Auni212B estimateduni2132uni2134alephuni213Buni213Cuni213Duni213Euni213Funi2140uni2145uni2146uni2147uni2148uni2149uni214Bonethird twothirdsuni2155uni2156uni2157uni2158uni2159uni215A oneeighth threeeighths fiveeighths seveneighthsuni215Funi2160uni2161uni2162uni2163uni2164uni2165uni2166uni2167uni2168uni2169uni216Auni216Buni216Cuni216Duni216Euni216Funi2170uni2171uni2172uni2173uni2174uni2175uni2176uni2177uni2178uni2179uni217Auni217Buni217Cuni217Duni217Euni217Funi2180uni2181uni2182uni2183uni2184 arrowleftarrowup arrowright arrowdown arrowboth arrowupdnuni2196uni2197uni2198uni2199uni219Auni219Buni219Cuni219Duni219Euni219Funi21A0uni21A1uni21A2uni21A3uni21A4uni21A5uni21A6uni21A7 arrowupdnbseuni21A9uni21AAuni21ABuni21ACuni21ADuni21AEuni21AFuni21B0uni21B1uni21B2uni21B3uni21B4carriagereturnuni21B6uni21B7uni21B8uni21B9uni21BAuni21BBuni21BCuni21BDuni21BEuni21BFuni21C0uni21C1uni21C2uni21C3uni21C4uni21C5uni21C6uni21C7uni21C8uni21C9uni21CAuni21CBuni21CCuni21CDuni21CEuni21CF arrowdblleft arrowdblup arrowdblright arrowdbldown arrowdblbothuni21D5uni21D6uni21D7uni21D8uni21D9uni21DAuni21DBuni21DCuni21DDuni21DEuni21DFuni21E0uni21E1uni21E2uni21E3uni21E4uni21E5uni21E6uni21E7uni21E8uni21E9uni21EAuni21EBuni21ECuni21EDuni21EEuni21EFuni21F0uni21F1uni21F2uni21F3uni21F4uni21F5uni21F6uni21F7uni21F8uni21F9uni21FAuni21FBuni21FCuni21FDuni21FEuni21FF universaluni2201 existentialuni2204emptysetgradientelement notelementuni220Asuchthatuni220Cuni220Duni220Euni2210uni2213uni2214uni2216 asteriskmathuni2218uni221Buni221C proportional orthogonalangleuni2221uni2222uni2223uni2224uni2225uni2226 logicaland logicalor intersectionunionuni222Cuni222Duni222Euni222Funi2230uni2231uni2232uni2233 thereforeuni2235uni2236uni2237uni2238uni2239uni223Auni223Bsimilaruni223Duni2241uni2242uni2243uni2244 congruentuni2246uni2247uni2249uni224Auni224Buni224Cuni224Duni224Euni224Funi2250uni2251uni2252uni2253uni2254uni2255uni2256uni2257uni2258uni2259uni225Auni225Buni225Cuni225Duni225Euni225F equivalenceuni2262uni2263uni2266uni2267uni2268uni2269uni226Auni226Buni226Cuni226Duni226Euni226Funi2270uni2271uni2272uni2273uni2274uni2275uni2276uni2277uni2278uni2279uni227Auni227Buni227Cuni227Duni227Euni227Funi2280uni2281 propersubsetpropersuperset notsubsetuni2285 reflexsubsetreflexsupersetuni2288uni2289uni228Auni228Buni228Cuni228Duni228Euni228Funi2290uni2291uni2292uni2293uni2294 circleplusuni2296circlemultiplyuni2298uni2299uni229Auni229Buni229Cuni229Duni229Euni229Funi22A0uni22A1uni22A2uni22A3uni22A4 perpendicularuni22A6uni22A7uni22A8uni22A9uni22AAuni22ABuni22ACuni22ADuni22AEuni22AFuni22B2uni22B3uni22B4uni22B5uni22B6uni22B7uni22B8uni22B9uni22BAuni22BBuni22BCuni22BDuni22C0uni22C1uni22C4dotmathuni22C6uni22C8uni22C9uni22CAuni22CBuni22CCuni22CDuni22D6uni22D7uni22D8uni22D9uni22DAuni22DBuni22DCuni22DDuni22DEuni22DFuni22E0uni22E1uni22E2uni22E3uni22E4uni22E5uni22E6uni22E7uni22E8uni22E9uni22EAuni22EBuni22ECuni22EDuni22F2uni22F3uni22F4uni22F5uni22F6uni22F7uni22F8uni22F9uni22FAuni22FBuni22FCuni22FDuni22FEuni22FFhouseuni2306uni2308uni2309uni230Auni230B revlogicalnotuni2311uni2318uni2319 integraltp integralbtuni2325uni2328 angleleft anglerightuni237Duni239Buni239Cuni239Duni239Euni239Funi23A0uni23A1uni23A2uni23A3uni23A4uni23A5uni23A6uni23A7uni23A8uni23A9uni23AAuni23ABuni23ACuni23ADuni23AEuni23CFuni2422uni2423uni2460uni2461uni2462uni2463uni2464uni2465uni2466uni2467uni2468uni2469upblockuni2581uni2582uni2583dnblockuni2585uni2586uni2587blockuni2589uni258Auni258Blfblockuni258Duni258Euni258Frtblockltshadeshadedkshadeuni2594uni2595uni2596uni2597uni2598uni2599uni259Auni259Buni259Cuni259Duni259Euni259F filledboxH22073uni25A2uni25A3uni25A4uni25A5uni25A6uni25A7uni25A8uni25A9H18543H18551 filledrectuni25ADuni25AEuni25AFuni25B0uni25B1triagupuni25B3uni25B4uni25B5uni25B6uni25B7uni25B8uni25B9triagrtuni25BBtriagdnuni25BDuni25BEuni25BFuni25C0uni25C1uni25C2uni25C3triaglfuni25C5uni25C6uni25C7uni25C8uni25C9circleuni25CCuni25CDuni25CEH18533uni25D0uni25D1uni25D2uni25D3uni25D4uni25D5uni25D6uni25D7 invbullet invcircleuni25DAuni25DBuni25DCuni25DDuni25DEuni25DFuni25E0uni25E1uni25E2uni25E3uni25E4uni25E5 openbulletuni25E7uni25E8uni25E9uni25EAuni25EBuni25ECuni25EDuni25EEuni25EFuni25F0uni25F1uni25F2uni25F3uni25F4uni25F5uni25F6uni25F7uni25F8uni25F9uni25FAuni25FBuni25FCuni25FDuni25FEuni25FFuni2600uni2601uni2602uni2603uni2604uni2605uni2606uni2607uni2608uni2609uni260Auni260Buni260Cuni260Duni260Euni260Funi2610uni2611uni2612uni2613uni2614uni2615uni2616uni2617uni2618uni2619uni261Auni261Buni261Cuni261Duni261Euni261Funi2620uni2621uni2622uni2623uni2624uni2625uni2626uni2627uni2628uni2629uni262Auni262Buni262Cuni262Duni262Euni262Funi2630uni2631uni2632uni2633uni2634uni2635uni2636uni2637uni2638uni2639 smileface invsmilefacesununi263Duni263Euni263Ffemaleuni2641maleuni2643uni2644uni2645uni2646uni2647uni2648uni2649uni264Auni264Buni264Cuni264Duni264Euni264Funi2650uni2651uni2652uni2653uni2654uni2655uni2656uni2657uni2658uni2659uni265Auni265Buni265Cuni265Duni265Euni265Fspadeuni2661uni2662clubuni2664heartdiamonduni2667uni2668uni2669 musicalnotemusicalnotedbluni266Cuni266Duni266Euni266Funi2670uni2671uni2672uni2673uni2674uni2675uni2676uni2677uni2678uni2679uni267Auni267Buni267Cuni267Duni267Euni267Funi2680uni2681uni2682uni2683uni2684uni2685uni2686uni2687uni2688uni2689uni268Auni268Buni268Cuni268Duni268Euni268Funi2690uni2691uni2692uni2693uni2694uni2695uni2696uni2697uni2698uni2699uni269Auni269Buni269Cuni26A0uni26A1uni26A2uni26A3uni26A4uni26A5uni26A6uni26A7uni26A8uni26A9uni26AAuni26ABuni26ACuni26ADuni26AEuni26AFuni26B0uni26B1uni2701uni2702uni2703uni2704uni2706uni2707uni2708uni2709uni270Cuni270Duni270Euni270Funi2710uni2711uni2712uni2713uni2714uni2715uni2716uni2717uni2718uni2719uni271Auni271Buni271Cuni271Duni271Euni271Funi2720uni2721uni2722uni2723uni2724uni2725uni2726uni2727uni2729uni272Auni272Buni272Cuni272Duni272Euni272Funi2730uni2731uni2732uni2733uni2734uni2735uni2736uni2737uni2738uni2739uni273Auni273Buni273Cuni273Duni273Euni273Funi2740uni2741uni2742uni2743uni2744uni2745uni2746uni2747uni2748uni2749uni274Auni274Buni274Duni274Funi2750uni2751uni2752uni2756uni2758uni2759uni275Auni275Buni275Cuni275Duni275Euni2761uni2762uni2763uni2764uni2765uni2766uni2767uni2768uni2769uni276Auni276Buni276Cuni276Duni276Euni276Funi2770uni2771uni2772uni2773uni2774uni2775uni2776uni2777uni2778uni2779uni277Auni277Buni277Cuni277Duni277Euni277Funi2780uni2781uni2782uni2783uni2784uni2785uni2786uni2787uni2788uni2789uni278Auni278Buni278Cuni278Duni278Euni278Funi2790uni2791uni2792uni2793uni2794uni2798uni2799uni279Auni279Buni279Cuni279Duni279Euni279Funi27A0uni27A1uni27A2uni27A3uni27A4uni27A5uni27A6uni27A7uni27A8uni27A9uni27AAuni27ABuni27ACuni27ADuni27AEuni27AFuni27B1uni27B2uni27B3uni27B4uni27B5uni27B6uni27B7uni27B8uni27B9uni27BAuni27BBuni27BCuni27BDuni27BEuni27E0uni27E8uni27E9uni27EAuni27EBuni2800uni2801uni2802uni2803uni2804uni2805uni2806uni2807uni2808uni2809uni280Auni280Buni280Cuni280Duni280Euni280Funi2810uni2811uni2812uni2813uni2814uni2815uni2816uni2817uni2818uni2819uni281Auni281Buni281Cuni281Duni281Euni281Funi2820uni2821uni2822uni2823uni2824uni2825uni2826uni2827uni2828uni2829uni282Auni282Buni282Cuni282Duni282Euni282Funi2830uni2831uni2832uni2833uni2834uni2835uni2836uni2837uni2838uni2839uni283Auni283Buni283Cuni283Duni283Euni283Funi2840uni2841uni2842uni2843uni2844uni2845uni2846uni2847uni2848uni2849uni284Auni284Buni284Cuni284Duni284Euni284Funi2850uni2851uni2852uni2853uni2854uni2855uni2856uni2857uni2858uni2859uni285Auni285Buni285Cuni285Duni285Euni285Funi2860uni2861uni2862uni2863uni2864uni2865uni2866uni2867uni2868uni2869uni286Auni286Buni286Cuni286Duni286Euni286Funi2870uni2871uni2872uni2873uni2874uni2875uni2876uni2877uni2878uni2879uni287Auni287Buni287Cuni287Duni287Euni287Funi2880uni2881uni2882uni2883uni2884uni2885uni2886uni2887uni2888uni2889uni288Auni288Buni288Cuni288Duni288Euni288Funi2890uni2891uni2892uni2893uni2894uni2895uni2896uni2897uni2898uni2899uni289Auni289Buni289Cuni289Duni289Euni289Funi28A0uni28A1uni28A2uni28A3uni28A4uni28A5uni28A6uni28A7uni28A8uni28A9uni28AAuni28ABuni28ACuni28ADuni28AEuni28AFuni28B0uni28B1uni28B2uni28B3uni28B4uni28B5uni28B6uni28B7uni28B8uni28B9uni28BAuni28BBuni28BCuni28BDuni28BEuni28BFuni28C0uni28C1uni28C2uni28C3uni28C4uni28C5uni28C6uni28C7uni28C8uni28C9uni28CAuni28CBuni28CCuni28CDuni28CEuni28CFuni28D0uni28D1uni28D2uni28D3uni28D4uni28D5uni28D6uni28D7uni28D8uni28D9uni28DAuni28DBuni28DCuni28DDuni28DEuni28DFuni28E0uni28E1uni28E2uni28E3uni28E4uni28E5uni28E6uni28E7uni28E8uni28E9uni28EAuni28EBuni28ECuni28EDuni28EEuni28EFuni28F0uni28F1uni28F2uni28F3uni28F4uni28F5uni28F6uni28F7uni28F8uni28F9uni28FAuni28FBuni28FCuni28FDuni28FEuni28FFuni29CEuni29CFuni29D0uni29D1uni29D2uni29D3uni29D4uni29D5uni29EBuni2A00uni2A01uni2A02uni2A0Cuni2A0Duni2A0Euni2A0Funi2A10uni2A11uni2A12uni2A13uni2A14uni2A15uni2A16uni2A17uni2A18uni2A19uni2A1Auni2A1Buni2A1Cuni2A7Duni2A7Euni2A7Funi2A80uni2A81uni2A82uni2A83uni2A84uni2A85uni2A86uni2A87uni2A88uni2A89uni2A8Auni2A8Buni2A8Cuni2A8Duni2A8Euni2A8Funi2A90uni2A91uni2A92uni2A93uni2A94uni2A95uni2A96uni2A97uni2A98uni2A99uni2A9Auni2A9Buni2A9Cuni2A9Duni2A9Euni2A9Funi2AA0uni2AAEuni2AAFuni2AB0uni2AB1uni2AB2uni2AB3uni2AB4uni2AB5uni2AB6uni2AB7uni2AB8uni2AB9uni2ABAuni2AF9uni2AFAuni2B12uni2B13uni2B14uni2B15uni2B16uni2B17uni2B18uni2B19uni2B1Auni2C60uni2C61uni2C62uni2C63uni2C64uni2C65uni2C66uni2C67uni2C68uni2C69uni2C6Auni2C6Buni2C6Cuni2C74uni2C75uni2C76uni2C77uniF000uniF001uniF208uniF217uniF25F afii10064uniFB00uniFB03uniFB04uniFB05uniFB06uniFFFD dlLtcaronDieresisAcuteTildeGrave CircumflexCaron uni0311.caseBreve Dotaccent Hungarumlaut Doubleacute arabic_dot arabic_2dots arabic_3dotsarabic_3dots_aarabic_2dots_a arabic_4dots uni066E.fina uni066E.init uni066E.medi uni06A1.fina uni06A1.init uni06A1.medi uni066F.fina uni066F.init uni066F.medi uni06BA.init uni06BA.medi arabic_ring uni067C.fina uni067C.init uni067C.medi uni067D.fina uni067D.init uni067D.medi uni0681.fina uni0681.init uni0681.medi uni0682.fina uni0682.init uni0682.medi uni0685.fina uni0685.init uni0685.medi uni06BF.fina uni06BF.init uni06BF.mediarabic_gaf_barEng.altuni0268.dotlessuni029D.dotless uni03080304 uni03040308 uni03070304 uni03080301 uni03080300 uni03040301 uni03040300 uni03030304 uni0308030C uni03030308 uni030C0307 uni03030301 uni03020301 uni03020300 uni03020303 uni03060303 uni03060301 uni03060300 uni03060309 uni03020309 uni03010307 brailledotJ.alt uni0695.finauniFEAE.fina.longstart uni06B5.fina uni06B5.init uni06B5.medi uni06CE.fina uni06CE.init uni06CE.medi uni0692.final.alt uni06D5.fina@%2%%A:B2SAS//2ݖ}ٻ֊A}G}G͖2ƅ%]%]@@%d%d%A2dA  d   A(]%]@%..%A  %d%@~}}~}}|d{T{%zyxw v utsrqponl!kjBjSih}gBfedcba:`^ ][ZYX YX WW2VUTUBTSSRQJQP ONMNMLKJKJIJI IH GFEDC-CBAK@?>=>=<=<; <@; :987876765 65 43 21 21 0/ 0 / .- .- ,2+*%+d*)*%)('%(A'%&% &% $#"!! d d BBBdB-B}d       -d@--d++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++vD       !! #" >> ?? @@ CA ^^ __ `` aa bbcc gdkh qm srutvv zx {{}  |{                XX            * /+30 44 55 >6 ??@@ AA YB ZZa\cbdd ee ff qhsrtt uu vv |          v wwxx Py Q Q R R S S T T \ U ] ] ^ ^ _ b c  ܀   . & 0 0micropolis-activity/res/dejavu-lgc/DejaVuLGCSansCondensed-BoldOblique.ttf0000664000076400007640000127734010724145723026755 0ustar simcitysimcityPGDEFVVy\(GPOS7,GSUB^J: 8OS/2dDVcmapގ0E@Jcvt sJfeatLP@fpgmLgaspM glyf OM(njheadH9w6hhea 0m$hmtxrCK2`kern:r2*Gp* locaq|2dmaxp  morxvnameiBFpost|`Lxwprep|餖vkpropP|0  Xijjkpqqruvvwyzz{}~     !""##$?@@A OPPQZ[\]]^_`bclmnowxxyyzxyyz - . 7 8 h i o p q r | }  ~DFLT&arab0cyrl:grekJhebrZlatndkernmarkmkmk *&2bWNh.<"< 2 < F P X$Fh,,:HV`j0Jd~d>DVdrX^|RX*H79k:;2<&:P&&&&&27<89u:<FGWYZ\kkk$<%&<'*,.0246789k:<kuvwxyzkhh 9:<68:uwy6 " &DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~          KWr&Y!pQ}M##{{n{{/1({{{{{{{{{{{{`{#{{{&a{_{{GK {4+{ {{y{WtQ{/}{{{{9{{n{{{~{={={Y{{{{{{{/{\{-{P{N{{{{{@{{O{js{{{<{{{{{ {{{{{{{{{{{{{{{{/{{7nv#{sz{_{D{j{Q{{{{{{{{{b{{c{{~{`{K&PI<R{{{{O{{k{{{{{q{{{{{{#{v{d{{={+{c{{D$= D]$>?ABCE  FGBCHHJJLLMOPNRRPTUQX]S__YffZij[mp]txa{{fghijhl38:@BCEKQRVW\\dd   "" ,, GG ^ d f g ~  ![\$ r |&1 &,28>DJPV\bhntzL{L{L{L{L{L{L{L{L{{L{L{L{L{L{L{L{L{4r4r2{Zr{L{L{L{4r{{{{{{!{{{{{{{{{{{{{{{ ~ &,28>DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntzDM8~RjGrB1 .RR_RR,RZRRRMjG/RR+;R     RRRRRRt|RRd@ABCZZDvvEFGHhJ77 ^ b f g ~    ! "(.4:@F3344*6VF&44444444444444444bibbgN (RX^djpv| $*06<fffB]fffB2!J>L>dedhFF [\ r r t t v |! [\ r |!, $*06<BHNTZ`flrx~L{L{L{Y\\TY^{C{L{L{L{L{L{TT2L{L{Y  {{{9{{{{{{{{{{{{ vDFLT&arab6cyrlBgreknhebrlatn MKD SRB $     DNK   aalt\aaltdccmpjccmppdligvdlig|dligfrachligligaligaloclloclsaltsalt     &.6>FNV^fnv~L^xpB<<< 2LM%%ZZ P$=IIKKLMOO      ""$$&&((**,,..0022446688:;==??AAHHRRTTVV%%ZZ& q dpz "(.4:@FLzvqjyb) rF",6@z 2< "(.4{  $ #! @ Q$&6DFHLQRVX\]y(:FPZfr " "x$;PVm0n(/]FaX`R")567DF2 ( mIO lIL iI oWIV kO jLI nWAZD&.6>FNV^fnv~||zz~~ "}}{{&.6~~ "TSUQRWV'-4:BH  }D    -O  }-DO TSUQRWV'-4:BH ~ LM%Z u s v t x y r z w { | 33f  P PfEd! m`D(~AIMNRX]bu{~#+[w{EMWY[]} ' ^ q !!! !!!!!!"!'!+!.!2!5!;!K!"="""""""### ###!#%#*#}##$#$i&&&'' '''K'M'R'V'^'''''())*****+,j,w_ CLPQW\`tz~&Cw{ HPY[]_ 0 p t !!! !!!!!! !&!*!.!2!4!;!K!S!"A""""""###### #%#(#}##$"$`%&&''' ')'M'O'V'X'a''''())** *}**+,g,u_zrWTK65][YUTSQNMJHFCB=.' |\ XWUTSRONLIH' >) aJ]Oi s  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}byqz#/f3f=;+ffT}f+\9//uLfLDD;Pw /X#/553Xfs+j-j!f#^`3B3\fy```{j\{XPL`%!JJ7{}3Xy9bs04 <, %Id@QX Y!-,%Id@QX Y!-,  P y PXY%%# P y PXY%-,KPX EDY!-,%E`D-,KSX%%EDY!!-,ED-[!%!!\4r)~ ! #!!EfvaD>^###շ++w#3 33!!!!###!73#7!?'VWW /> 1VVWV/?/Vhh1!(/#.'.54$?3.'>54&5sS,Vl7 (&[O,9k3-KZ:2Y`A-+&7=7 "%/$ DQ=07VK39e '3"32654&'2#"&54#3!2#"&54"32654&Md78Nc9XጫNc77Nc8hWWUWꭍ ꪍXYTX3&0 >7!!'#"$5467.54$32.#"3267 7Q&lvLjoR[0NGNZ6HKf6j6?spjDCǗr,Z00.H=&u3Lk**#+_ !&5!  FF1?'M)ϖ !!4 ED06`2)$9 %#'-73%)DԙD-D-,XXF !!#!5!o**  !#D6u-!!b53T!!DC}NB!3#OmB)%267>7>54&#"#"476$32'Ek$*HKFk#,JcY[bX]\Y?nY5piY[AbZ5okyO* !%!!!2.EJ1.S HH5!!>54&#">32I203;^be[Uӄ:zsPMRZKN=21Ū(!"&'32654&+732654&#">32ffqu^3P_,smLa1je%s%%)49kYYraLP,*  !!3#!!"qd001;RJ!!>32!"&'32654&#"F]1)(U+qi5dboLi ѹ12/HD`q+-[ '"32654&.#">32!"476$32gQHfO1MIFToel&UἔYc`f,,ȵ31ک!s !!! )( #/"32654&%.54$!2!"&546"32654&ki[Pk]aa, ꣗nh\nPA\oPtSauSb-e谠-/yŰwbDTwbESK'73267#"&5!2#"&2654&#"L/OIESEpflܸUfOIeO!-+ȵ31کa [b`fKT`!!!!EC<DD`}}T` !#!!D5ECu}=F 5Ec~'F!!!!~~=F55~e11J!!!!7>?>54&#">32D?NvBGAIDHh8sW`sEH3d1P}f:=j69=CB:*(wf<>M+R L"32654&#"&543273654#"3267#"&'&5476$32!"#"&'`IF_H#(QKqxjSV*j]czY~lfrՕd_f!ґTXɒV^KSBTEKnWSbbRMl>ɰH]\Yv !!!!!DhQ+?&  2654&+2654&+)!2]hID7ZwX[EhX`h[;>s~vKHyn՜B7%# 476$32.#"3267]|ffdvLhm8Wd筘[F12J=78IDIN&324&#! )V}^lWWXwq.#EQQzm\& !!!!!!-31*5<_1E& !!!!!-31*5oB %# 476$32.#"3267#!ff|Rxw5njܪ2e34,oGEC=87GF"& !!!!!!-Zdc[no9+y&!!-Z+f !!#3267-Z4F36k#& !! !!-Z^;Ei # 476$nh96: Fd_uc`s@qa_[J D&. !2+!32654&#-?PIPާZ0I{\X׿uOUM_zQVB&#"&'.5476$3 !4&#"3267> fJcnc`t> Fh96:>=QE'la_[&2654&+ !!2!.#vyTZD.d崚F^#reWS?zvJEոXsoS'.#"!"$'32654&/.54!28f^@d{7wnwCqAm87ZP39'265EMLlT7= '+%Xc!!!!3AAN}!3267!!"&5467-Z _^~!Z: 0Jba$Y; !!!J-e c\+; !!!!!A)I,Yx-Mo==+o !! !!Jw\apy  +t!!!t[imm)oU !!!7!j+4n)jT<[!#3!-.))B36Ȳm;!73#7!&&/`O # #s--!5B۾f#fxf{ +"326?%!7#"&54$!37>54&#">32_y{I@b]qOg)podW0eqSQ=Fy)d_ BC.."Q8 "32654&!!>32#"&|YOzU]DiJ`EARvgw\ifk+b]ρd~]D/{.#"3267#"$547>32/3A~<}qKB2PR_XbL=02u21ډgqnB7 %2654&#"!!7#"&5467>326|WOzUiEJ`EARvg]hfkXb]ρd~]B{'!3267#"$54676$32%>54&#" vvf|2uyQO] VJ^#9mlDC0/݀dx|(Yo  P^sp[#"!!!#37>3*D> ,-!7CO`N$Fy+%#"&5467>327!!"&'3267"32654&M_F@Pvj1E4^U0LPLvUQvUb\qdy\c3 !65fkhm8!>54&#"!!>32xf @:daDiYbVH9O@Fa^ N8!!!!DD3`F !+73267!!D))8[T D3`[8( !! !!HD{T8!!HD8{+>32!7654&#"!>54&#"!!>32Jg we81]ag 82YaDL\ignM1VH|#7@HKM8?`_`w8{!>54&#"!!>32xf @:daDYbVH9O@F`a^ NB{ "32654&2#"$5467>}WT}W:QN[RNZ{joincvx~dtxV{%!!>32#"&"32654&hDJ`EARvg!|YOzU b]ρd~]7\ifkBV{7!!#"&5467>322654&#"EgH`EARvg|WOzULb]ρd~]]hfk8{.#"!!>32"Q.|\D#@u+/`jq {'.#"#"&'32654&/.54$32/_T_h:T;Ýhp1Whfg:Z;h=2473$ .$$9:64$( (O!!;!"&5467#37J.R7A.S,7& .(@!>n`!3267!!7#"&546}vCf ?:daDSd9P?F'a`#Nt`!!!t){G`` !!!!!)#0%.=3!`` !! !!O_5=#LbF`!!+7326?z0fXk!fOX"`6ρ;J<8` !!!7!o, ,{*v `f0#"&546?>54&+7326?>;#"3&š!Ri:)8~v$!'?}\kfHBIhm{{<(7XHtWZMC(.0C4#Q]0326?>7.546?>54&+732;#"+x?~\lgHDIh<&Ţ#Th9)6v"!mYZND-*2D3z{="6XHuFR#"'&'&'&#"5>32326E_W`  TPYaV`UMRPE:=MSPE:=K~ !!!3?Efuqd+=^{e".+>7#.5%3\o4.23Dy:sP@2AL21H 22=X.рJm520h10"#"# .#"!!!!3#737$3225~@q~P(9..9(.S%({ FB=T#/'7.5467'7>327'#"&72654&#",a70b3)`84bRssRRsq Ϛ1k??l.͚Ϛ7n6?i/ϙ\\\]~ p!!!7!7'!7!!!!!!gJJn# !K[lt!5`LL LL##  =3?.#"#"&'732654&/.5467.54632>54&'Q7HU,3Qs40LU+\7EW+Gyld/-KQHMWHOf(&=22)No{:$X6++?0/%=6f{;)\5Y>=V@[8=];|13#%3#B,,151I.#"3267#"&54632'"3267>54&'.'2#"&'&547>4c4frrf:g*;v8?smONNNNNmnNNOONOlbbaabb툉bbaabbf%#rs~$#WWWzyWVVUWWyzWXVnmmmmnnmmmmnOu/!!"326?%#7#"&546;7>54&#"7>32r#" e8/LuM;[q}FDOLXC=9F,4qXT@}LFod ,.##z3pH' 77G-'!D,'"'qsqF!#!Q-!!b535 4L"3267>54&'.#32654&'2#'.+#2#"&'&547>mONNNNNmnNNOONOFHF&_V%?c`"4 bbaabb툉bbaabb3WWWzyWVVUWWyzWXV5442wyVpP:NAD7nmmmmnnmmmmnXw!!?7!d "32654&'2#"&546AZYBAZ[@;n++,,)+p=\dHHbcGHd3/0xDCy-03F !!#!5!!!o***~bbR!!7>54&#"7>32~SIHF:4>@!J?alD :c*(..,mdOTI(#"&'732654&+732654&#"7>32WDFH84k6boZ]EM`eDC0sEABf` ]L$%LC63:6&&d]Qpf!#ufT`&!3267!3267#"&'#"&'2DrMJ\lsD#-3Y(OY8OCTWT u(INpu# LROO/0;X !###.54ث 񩔗fN$!!DD}(o!#"&'732654&'!{,X.$I";E4X*hs 9/E7{ 3?33!\x9 41ZTu 2#"&54!!"32654&ۤ "Yv@' ?%'77%'7i,6&zE-5(zf&{'1:-dfv&{'t[d1:V&u '1:-dD!!3267#"&546?>7%!!D MvCH?HDHf7rV`rDK3f?D3P{f<=h69=DA*(wfEb^Bo7&&zm&k&( uu&k&( su&k&( vu&k&( ru&k&, uWu&:k&, sWu&+k&, vWu&/k&, rWu 3#324&#! )#3r3-?|^mVWZvq./#EQQ{m\&m&1 tuBk&2 u)uBk&2 s)uBk&2 v)uBm&2 t)uBk&2 r)u)"  ' 7 "yyzy3NPPNt+ '5.#".5476$327#"&''3267>54'&'4$mJ&%c`t>цP\)(d_uЅS[;#nFh96<h984JPDNN{LURR{F;>a_\t5}k&8 uu}k&8 su}k&8 vu}k&8 rutk&< su&!32+!32654&#-Z'OJP3H{[X׿uOVN\zRV876$32#"&'732654&/.5467>54&#"!&\7LFGC,2d/JZ*E7<6JG[jZڰ0I]H7H+;[L=(A7+/e?1CFkpff&DCf&Dvff&Df9&Df1&Djf&DB{ @J"326?>32>32!3267#"&'#"&54$!37>54&#">54&#"_y{I@b i^3Vv vvd}0vy;i})olgU)WI_!SQ=Fy)JIMMI-\/9mlCD0/ghif BC..  P^toDo/{&FzBf&HCBf&HvBf&HB1&Hj8Af&C8cf&v8f&81&jB,.#"32654'4#"$5!2''%'!%^/[/~ZU~9;RN[G,N!2{327#"&''3267.>)~ ##QOZ]=X%%QN[b=W>*J;L~duw..o;Octz12pnf&XCnf&Xvnf&Xn1&XjFf&\vV%!!>32#"&"32654&hZDiJ`EARvg!|YOzUb]ρd~]7\ifkF1&\jO&$q;f&Dq{|'*6$f-'Do'$of{'DB7k&& s:uDf&FvB7k' v:u&D>f'FB7k' y:u&D/1'FBFk&& w:uDf&F&k&' wuB&G qSB '%2654&#"!7!7!3#!7#"&5467>326|WOzU4!dE"J`EARvg]hfk'ttb]ρd~]&O&(q;B&Hq&k' xu(BF'H&k' yu(B1'H&o'(Bo{'H&k&( wuBf&HBk' vFu*$Ff'JBk&* xu$FF&JBk' y:u*$F1'JB6'v*$F'EJ&k' vu+8k' vnuK!!7!3#!!!#73!7Z  [ ~#~oo~"~9!!ջyX¼&!67654'&'&#"!#737!!!67632 w[ *e`ې!CF!4ZZZcF-V< "#kkb./wLxD&Im' tWu,89&&O&,q;8&qo&Ck' xWu,8F&&o&,8o&L&k&, yWu8A`!!D`&f4&,-8F&LMxfDk' vou-Ff&&S'7.8S('-7N8)` !! !!BHvyR`e-&l' sv/8rl' svO&S'7/S'7O&}' qn/80' qO&'y[/8'yOX !%!!'%q[[2^>F_2EX]iJׇI !7!'%oD\Zi}WNˑVDˇ&l' sv18m'vQ&S'N718S{'7Q&k&1 w:u8f&Qp&yQ9F!!+732767!?7{9(wv(\++<?yv..<\F{(+7326767454'&'&#"!!67632t'xv(\TX )eIIaBZZZcF,jyv\7 $#WV`b./wLwDBO&2qB;B&RqBk' x)u2BF'RBk' z)u2Bf'RMO !#";!!!!!!# 476$3u^~Ef{a43*4;`31ջs/1J.zIFB{ 3?>54&#"!3267#"&'#"$5467>32>32"32654&RWJ^! vue|1v{4Q{QM[~:U{ '}WT}W  P^un9mlDC0/NRRNcuwQQQQ(]Bjoin&l' sv58rm'vU&S'N75S{'7U&k&5 wu8Uf&Ul' sv6rm'vVk' vu6 f&iVo&6zo {&VzXk&6 wu&f&VXXoc'z7Oo&zJWXck&7 wuOnf&W qYb!!3#!#73!2BY!YX!ZA!!!3#;!"'&54?#737#3y8L-"R-@)",7%X9i=N>}m' tu8n9'X}O&8q ;n&Xq}k' xu8nF'X}h&8:Xn&X}k' zu8nf'X}_&8no`&X;r&: v|f'Ztr&< v|Ff'\tk&< ruUl' sv=rm'v]UY&= yc8&~]Uk&= wu8f&]L[)#37>;#"-!*D `NC&67632#"'&'!#737!!!26&"TZYi[Z--iII1؋$C'$Bϋ8PFF8)b.//.brr@UTTe 827676'&+2676'&+)"#767676763! ;R11 ##R7Yiz-+iEkjX&B*! 7"O.;mm$<;((NM()sbca01y$jj"2!MA? ^^mML&$ 67632#"'&'!!!26&"TZYi[Z--iII14Fϋ8PFF8)b.//.b@UTTo 27676'&+!'32m9<,(nAHc}p**-1][0-ujjuD67632#"'&'!'26&"-TZYiZ[.-iII2|,yϊ8OFF8(b.//.bӨ@UTT'324&#">3 #"&8Vd[<|gDgdviR5IDd INK12Ã7)d*%# '&76!2676!3#"&'&#"32767>ilmp??O-(:gF46lBD*SWYg()STgdcmR7efYCCI""焄""I$&&.#"32767# '&76%676;#"(9|G[Z<32#"'&'l  Рu_368Dy7kU0G#9QPhG>=ONOO87GF`nE<_10_S:1&'&7676!2.#";#"32767# '&7676t//!aaba1MTq88-TT]edl5lklgڄ(XW%"ST_` )*^V].-54fcj6%stޕa`f7!!!!!#3276d31*3V0F36lCCD銊#CCV#"!!+732767#376763*D -!kk)D! - lkDN\WXDNWX)d*%# '&!2676!3#".#"32767#!Ҏܔ??[QL9jF36lBD*dpφ)*6/0(3-oFFei [CCGF"RZ* !#"'&54>?!32767654/ `."N ccG2uCa|p =<" 8 2\ccXRQQ:_&j\)=*):>'&'&#"!!67632?27676'&'7#'&7 *eHI`BiZZZdEG((*j[T?|M#+3"-{ON&n#WVb./wwީ 4aXksTH( %CSlyxy ;# '&Vl62Fpp1V݊ !3#!#37[k-mm-m&'& !!!67638Eh@NPgZ_wo\Ƨ$L`L ! !!676;#"wyR'xv(Z,,-Fyv.. !3#!#36Bv.ll.]m#''%'!%! Q! ' B9 SeaecaVt+%#"'&7!32767!32767!!7#"&P]^eQH+DF\A?D!J\ABDL\ih67wkC w65TTC65UU+_`pf7!!!!#3276d5I}ʚ*^F36lCCD+v #CC[V{9H  ! "!6'&32767D????nZ+4A&An@*jkjjbrMMrH&2H&RH ""327&6'&+! !2!  e))nA,,l9??Cu^mno0ۂ'CCjkVeFx{ #"327&6&+! '&76!2!2kGH8)*kiFW)&4\BxxamTzML'{UVVUUUL\ (vw )327676'&#%"#767676763! !#!Ie@A.-eB*! 7"O.;?st*([_76dd66"2!MA? ~~V(67632#"'&'!676;#""26L+TYYj[[-.iII1hn^)E!FF8)(ϋ8b.//.bXfXUTTU@MF-)!!3 ;#"'&/&'&'327676&#-[-rs()Of,  Re)HC%)*IeA@Ze~> MJEe ]76cen.67632!2767#"&7>?>76'&#"7xon]|k .-m"+oo9pqj _ 'mloyx7LPB!!!#"#767633Ce edNLi1RQ'!!;!"'&7#37676;#"DL,T R-A@%T,n^(D N%NXYNfX|f!!!;# '&;A43B+,l63Fqo0#߂CC݊|r&8i&X =%!!#"'&76767!!! 766,3b%$#oqGG#SS3-66>VtuutˤU#yǼ9y!# '&!;27676'&'73Fpp1ZVl6q$+LJ!,늊Vu^_{n+676'&!!~pv>)-]oo{#gr7 yPu`)F6767'&!+32767KH+0V_|֎jY!+*Re)bab+/jG5BuKJJT!3!!!7#!!j)-3m)d-c'DA;`!3!!!?#7!7!p,p'.{,i'(`ݶ%Z %2676'&+7!!!"'&'hBC,Ob3L,ZvEl95&~2 jcf45^#N !pgts="JL  %2$7# '&76767677!!#"l$4'YavNz,L3a,TULJ=stޏgp! 54fcjH`! !!!2767#"&7676;,,-Rw`Y'%glll4kee]USN !qfst%)6jcf54V7`932767#"'&547676?6767654'&+!!a>G^[7a #")Zcddb'x_h`fP^O7\# )-o,"08g!CA (%+ K;jC9% &" #!!#!67676&#"676323!P201:.-* iiQgg{9}uwnqq%K.,+?Di'&LH+vvzi  !7!!32! '&7!32676'&+,p3=_53&u'ZBC_<(xstsscjjcf45H `!?!!32!"'&'32676'&#+q'FJZ/3&hed_3Y[Z]BC\/Fhsst%)6jcf54$#737!3##"'&'327676'&#5"B" Kr(&ڣEF?5>BDHm@ &93”C^ׅ#*+rB`GLrV{!!676;27654'&#"_3CaTe4,W'qP/ o%,p\])(UN& A,AV!!RZV'V"!!!!!!!7!7!7![b<*&;)uu)<')<e2~& Ok'?'& 2f'@'B `f'@'G&f'-/&F#'M/8F'MxO&f'-1&F'M18F'M Qk&$ wunf&D&hk&, w\u8Jf&}Bk&2 wuBf&R}k&8 wunf&X}R' D8nO&q;}u' '8nU' X}v'  8nV' X}u'  8nU' XA{R' $fO&q;R' $w ' DpO&q;B&qB/# '&476767632&'&#"3276?#737#!3.⤣33f|xw5niijVT2323h l,?n ~G"#OO87G##cceWfW$Fy?"327654'&6?#"'&54767676327!3#!"'&'327!7vPN*+QvOO*+7"M_dc##@PfgvjHI1E!5N^VWU0LMLPUwwwf56vwh67]A\Mb\z{qrqdy@?..c3iVYbC!6HYBk"* w;u$Fd#J&i". wts8(i"N wsB_&28B_{&RB_O&qB;B_&q%Zk' wuyH<Y&OfF[g !+732767#373D)qq)8[+)ꤞ۱`qr-.x& O'='& 2']'B `']'GBl' sv*$Fc"Jv)!32767!!'&7!!!$d[ (){|DE [[[8ut8o[d9OPPO =#V%!!676327654'&#"^Pb gaj:.P *}Xqv-1|ej*+2p)#H1H&k' uBu18c"QC">' s[=|"Cv[@,pl' s/vBd"vtl' sv g"vip"$ { zff&Dw"$ |fF&Dv&p"( {zBf&H&"( |BF&H&%p", {rz8d#q&8", |L8F"oBp"2 {pzBf&RB"2 |+BF&R&p"5 {z8f&UR&"5 |n8F&UR}p"8 { znf&X}"8 |nF&X'6 {'JVXc'z7O'%WR;676767654'&#"?6767654'&#"6767632"͘r\&0M3=-_L-:]KmPqu`~uofR]7,“#W@]K]=*6U_8WGsA%10"J|A+8h`guImYWw[)O{;676767654'&#"?6767654'&#"67676320dR$-F-7$wSD*6TCaHdgVpkf_HSst3*ےF5J=L3#,EM-F:]7(';je5".TPjT_;XKI`lI"&i"+ w%s8i"K ws;V676'&'&#"!!67632 !-/>ec$N'|pv̟6SI#.ss&:=*f<%276#"%276'&#"632"''67&'#"'&7632!yC/)hEE7&)ggDG7((U_U$-KWR<.(= 5DWZ[-.hHI2hDY3/TT@TTTTTT\8EWiJPH7qD#,/.bX-P"32767654'&7! '&5476767&'&547676%&32767654'&ݑ6DXV3B{lY[D1&ƌned70te7T 64xaQ2>vnN-;;:nL.:YO"&UU)*_D_$'rqqY+0^_*VJCldE %8< 7)&:0wI&0(+4H%! '&5476767&'&547673267654"32767654'&VRNM6%'qU UWs/!9,* $SQha??*a`>=)i0;',~VU))`@W).rqqU28^_*)U:M$)oOi/M6"0`Y,;;n#@(;;:n$@(:F{!+732767!7!!!5d)\*&)zC4i(mA.+v#7Fb`!+732767!7!!!4e*\*'-~-o,mA.+vfk"$3:f1"D&w"(zBo{"HzBR' u2BO&q;BR' o2BP&q<Bl&2 yvB0&RBQ' v2BP&q<tO&<q;F&\q;f%276#"632#"''67&!yC/)T`N%4KWR;.)>Q?BY3/\0DXhJPH7qpiCf{,5632#"''67&676'&'&#"!!67632676#&U_I&:!RUR;-(=V< )eIIaBZZZcFE'z C0)\*BX\JPH7qw=B7#WV`b./ww<U5/?d(%676#&!!632#"''67&'&7#3z C0)8L,=\_R%0GWR;-*2 @$S-8U5/`4EWlJPH>Z Y>FA` !+73267D))8[T`[n <%26&#" 26&"367632#"'&'#!7#"'&7632g7Ogg8Oϋ7OF:!hSXYi[[.-iIH1Si[[-.hHH2i@@UEwnwE`-//-`c\/.bXfV{E"327676'& "27676'#!#"'&76327!367632#"'&gDE)'ggEE((F9 !)EE'ggTi[[.-jIH0BSXYi[Z,.iIHwTTTTTTTTUEwnwEUTTT|Lc\..c`-//-j'!#'#5'7!!7'!'P6Z/R<JJ&S[qs\E"+'&776!27&'3267# / &#"hR+A,>PpcMER&& Shm6jlmpFP( Jqf&sȘ!=%DI7 [D"+'7&776!27&'32767#"'&#"U>%0PI0.qP'( =KHIB3QPRN~Z[^^Ջ pe"W1zWX !3#!!#3,Zk-:`2Em-m b'7!!!#7#n`y62B^yMj(sJqH9y<3{9&'&#";#"/&/327676'&/.76763230_\\V[12 T8GH}ԛEF(u4 0Waah_54 a7Ӑ }|Y=05+ #PPZTGx490VVf`!;#"/&'7!o,PXFF)v~,~`':ZGxf(""#767676763! !#!!27676'&#F("  7"N.;xst*([Se@A.-e%/!MA? ~~76dd66 #.)#3! 2676'&+3#27676'&+jX&7.mm$<;iz-+i . 2R11 ##R7$jjA^^mMLbca01H;((NM()$!!!3#! 7#73!32767.[ii[j"88~"~ . (){|ED![b6=bbOPPO)!!N&B33#3!!!#7!!#!LUA3|42UT阈<E}1ݾNVyBB%*/!327#"'#7&547!2737&#"7#364' 4Z0uYv 0aWFs܉!]!P[L+wDMfasDO: unE5<f!3#!#3267#3-Zt.J0F36lJ.j\# F!!73!3#+73267IC4"UBU"I'vv)7\UI^wv\ (27676&+! !&'&+3#!7#m87PmDj kk&C.,$rc,+Ub .('.?--gfXcc֔-@?Xsp))N{&'&#"3#!#73!67632'')*wIH"ML!UB RYYq#/ JJNJn231z{ /27676'&#"!67632!#32767# '&Ee:8 "#IZKKpESYZtPP#66h]]U0mjkiedf&&JD&'IHm)f./ef\\U('.wxC{7!!7#"'&763226&#"DSi[[ZiHHg7Ogg8Oc\/.ɨ@{%!!>32#"'&"326&RDTj[[ZhIH"h8Ohf8P`c\/.7@ '$26&"67632#"'&'!676;#"ϋ8PFF8);SXYi[Z--iII1(xv)\T@UTT`-//.bFyv\{>3 !"&'3267654'&#"RP\0NF31K) \<bOJK9K20WX{PrWD&I*CF= (%276&#" &?#"'&7632!;A{!7!6&#"6763 !"'&%32767N v~fqp|/|vvs}}10sse+*W]EE!+f~~!"D0Ɵf>?;:nEi{ 332767!"'&'&'&#"6763 ?;#"'&79W*W]EE!o0s> ;~fqp|/|vvs}ܳ^' V3+ ?;:n,Q`ƟVv)?!"D087o[2{7{3!"'&'7327676'&+7327676'&#"767632~?@Y[[`*I[\fg!bQ5-&i^

At;iM Nd d>eqt3s{t.$A9<f qN\]?*tt]b3nςn$@cQ'u0VOwuwW[txwywy zw|w{w~w[Oo<2țTCb%rQfHD8 kQeOE]a>_k؃Gv=8'EyK)sr7w0wu?z'4ovwzzzzzzw/im\#kC@NDg̮\ƃtGʱMDK/0Đ2 y/v5l=77صwl$^7ϨB0gͰyʠա'_-\uefƔ}# _wEq}}q}X)WMˌ7Q{UJDyEĔJcK.k,@FNr |y g繏tH\~_w ` H.$\HG$ ]$Tj\n= $ hD"M兂FV'8HHxhǨ(9IYiy&r43JZ:cF)x"+;[;몠&,N^BB-U]_OE"`@p 0!! .aHa@"[=%9tĽ͝GwU8ļsO*viɛ7CEA 1ޔ%İS_YhBwa{RsRTx=6ze/P@d0*2?dO ThNjf:wNR$N9Qp)Re˜;{ :4!OlB0Ntʅ.ٯ9\v,nd5& 85X~q6d4O'.)eZչs.~zhpJJjU?_'N]'I'7KD_DN SQΆ{e!|ǟܡUw HOT]bY&cga18B YO>DQTS~SQ Vga@ |0b\AYdM6&jٛmy&i&y깧 ha)Jk < iNJ)/ niZiZr 8`I >U@GDMCX͇ՍdFǠ&`@[S^Aa!=_zI᫶:RE_x)K=.3şPNnoyw n$$L*iV[憖[bw Ȝh rdjYg~ٲ-Y$fʄs>K%r sJ/襙. 5Ԙp D5V#Wj6:ȫ 锳v<'IP\ʞ # 鹧|)4߯~i͒vgPxmK`[9pPzPnRNMqWܸN;N⧻E?)U;$P1FWGbsܥc_,f<;"~o2$5/?ߏ=iCRFBHp"pF2p VRp<SmY3qVܱ]UUYUwf6ɀ pQ?J!R(GHi,) B0r߁] EhGP|B.xkaWVӥAoZyἺAp%[x_ %']!A±Y)טǸ ~Xf&NfkRR'K XR8ŒƁ `9ܠ _^S%Y( Ҥ5@gvMF$)DZ׭$q qM&)>ŅQlG9!\muыB4$ĺZFֹl";稕wq7'HR2kCS- ^Ѳ-u{:9•R](U|4f ְ N0`+,f>͘/1x) vXAb\ ZJ14o?Až3n!j>'F[N4A[eVEպI\kWƨQgu(*ؗHQZRiʢtf&@v\Dc*>Q_$GJzƖI {**E9oj'ձ x(nV?B @+Ĥ1L6SAF)_C7ZځBZ IYu:6nUڐ:oeHHɺL\ MfQqZLuٞh: UgfD%焱:Rw&r)uaj] x@9$pY TŖ6?`xz)ޤ.{y/[mꣽʧFOUSizԢ1Κ(Q)X? l\#8A#+3b懑 cb9D 6M|gqt#bBzntW~Hvt)b9#XާpcN=mZ;JV-K,o~\7ꪛ(6tO" Q P.Z2c(<oZ[;kW Q3.B^0;' '2vIљorVi;5} N<'ӟnSfk%L6Ş'xAKZu0^ǀ \&>z!@ u$U~/N m.ܨ#$s+oR|l{, oX~Y,P|97cS޸m- <%p $Uś|-Y+9'b&J%[K8ߞ'>/?Yc֡%GMg1\5j@ߠ}5FMw҄Lx&ww\wmedCo6qE/fegD>F,"!R,\X!X@zezZVN9Xz!HOOps)|,E.s] $O:WI^Vb~gga%uVuu )vQa `LDlBM (w!ƀ(["-.fflJ6.6Q#ceQ؂ho0HOE)eŕ9X0=&8{Fh/x(ӄZDHΗg(4{$FҧeIdhFՆ7^J%jiHh<^FLuqH sXk tv@@Wk`@uahw` F"$hz>Q&zyqHDZŊ3 IoDz⊯hP0zyECXOc7yQX#)Z9xKh;$eGy7c0)qZ($@5gᅉsx[ɕ]K~(@u8mȤkvHbAvvlW؎!6 a HDŽwc@oq{aZ|9cn)Ta"Rd`m%B.HeU:!F[ q{I-gqCy7k8EʨW鍊6Iչ?e?S~zЏTuj8Lc'ApkǏMuGwl~ycahaYywOCҠL$ Ix]AmOI1&G3#ȓؚ?$ . .:j\ڂ1ǜSb 0G K`3gȹ{hH:E/ǤΉTYIؠ4P_(MgeiKlcYLfiFss:v9atVIwpvzMRA YeI !<ʘ?+KǑ9)Uhl"F;(2xZ6z9o•:c!詚S1w8JʣGY v-j]NZ#Hpq:Q`A~XjIާb:U>zJ@fJj~ ojsh&(pUw՞a|!&| X [ĵP;YRzé,Ĺ7i\.*$Ig A!q6H5F:QOBqW*Znz\>HIBzӲ9 d)|JNEO jK?Sr4s8+v&vuWBlbswzK6H+{.:LY+OE>)A1B;'O% !$:&Qѫ`4c. D`Z#Q>.x QK R3ݪrw['sXBtvx+$33LʠqwjQ⦇ظ,°$wgMH@ ˀ@78Ś8O+캔[#{ŘzJ+8Gң6#uf˕8Qy8jq6#9`Qi:F͝/ɓ Q b]{}1-vLYy ٱuHjMZµ;0ƅ4'ڏLmڡڡڪM>.>y;ɧDar;4KkVfi&=(pHE=b`D P0D߷ʢحb$8Y}AhlO:V*x8\np].aC<,"7?W@x,{g)2)r^ ǒ Ѡ*BHre=5%'nsLEi!-]㶞-'J/^ >Nu@j ;k>HA ȔFaB@׎@@VN_sVUL(Ğ0`YOFɽq7A $P ~ $$!!Iq$^Hh*fMU1[쿣E /mP4c> .P1\9cA߮GAIdX]RKU_u֕YyqϽvS-M*'wikMZĪC|~gX(yV H,\r^~cWE'9c3]sJ%uDdȮ?swouū"{GE$BM3F0QaC`G}7'< N 8p2c@>h&HFAR+:o}Y`N$dKF%+@ULSd.t6|C koT` 8Qp8(}CVH ]0`!!ßc hN/& _^ܴ5@CO>$ (t;wH'ֱ #@ JAu3f˵a)}GQ IsdHuPyBLrb2%76˛i:Mp*{K@Dĕ 8Aӈ5`Yo7Mh3[B.Xh0|&,pW&|W p WEc: $6 \Cfql( լЍջFVlsّԶ $`/Bɪ긼u@@/k M~,ˌA 4QSfn+*D 5() }ͺv؄j-pZ+ wح&0GlaO+0/liJoZ՝nDIz&am aU%TXlr2lc[vvli'bkYzb {ߓYB [ikǛ][#1f[56 },&I/-_>D"Yi*hd7NwMeQ^S NmC1WZJsy4\۴h OE~{DkxֽV#nl"Xu1MS_SյncG:ەϝu'96d܄oc"s7{@o~WTr~y"N|Cı,BG2K8"5gW[lL-˻aA9M{} ^н$tj"ozӵN[ :?,}_:~o=gΞ`zG:~Vfai--j oP4 Ў*J`ލ4бp.@5F$fddl+lVrZDO|f p/4IfǼaS\û$ЮzI+ a ɰP²p .o*oүݏ/e֎2&!1%(k؈g-#a"p'0_W$01)'O -/ D8/oj2 b.01-s~DPyHN8 hPNMK9x`HCN+a J)1^ ZˏOHL=l 1z#"'1#5" A2[ g2B >XrW+$qr0iF0KH ( NIi iAK I`*jrq P61\j+pf$`fo$6-A WVRQ2Ȯ /`m Z-/èo5lr3M10! Af("ML5[5aS6csZS0rtS)W^\af"*ƭ >Ti ^,,;)mA [bc0Lo粒bRȲ6rfP&~ cLl.8 (ZLH!0=X 0J-1ˮ æ2P2'q&׭P"S@lkJ45!E5'5]6gSGkS`3G}p3%zSU4+z#+BTIe$o&h$3WJTSԪ/;)KG~$1FLELI3nf̸*4x mtS$O3s6?_ʷbI]&Npܲ-mipjz+kB.':T]oTIbdtF!$rd6wSn37VI'7OWΣ@gW`FPK}IGYDM[#mpEWDkEzlTXkmWlnjNZ[c".9&_R̥2D;O$M-GT5Ju` VsNRU)UoJUVmbk"IgZ9K vNuZ/FJcYe]Yy+vZ] H[UGgd|vWP,Vj l/54uSnSЯ`k'`σFZUb3mT4@+6Wt5b19"(c|rEJRo/Y@Ay ʡ[;A\LDw]qYYP(åz+[9؛zUqWUu7zӹx"@a)9cS.|rWjܨWafx${̲<1#5$hf.Aka2Y@%&qx?W"; OkyfzhQׅ/ڴjRs:iyuuXiu{y;"&raC&&cdX@0VVy5[jW΢-:Sq8QѺ>Ң/8-rEVIf{ߗf7.OJ%y#A[ب$,9ãtQK̀mIV9;cf[m{crimZaSS=9gu ٹkg:QXw졆y@t$D,޺KsZ^E KJM PRl-S$-}|@-ͷ{9sJK:1Tю"]QZ8nYջ){wg+C&{|2AJU|0 1|FuoZ{xCY3~Xd@bq6rŦo)`Z.5ۗ=9%j>~!rˡ&+NMU~Y]a>e~im.[le}iK9XmABXgן'f`]oc%G4<{\W ѣB=4t I:[hCW],z$]سI jR+)?,nMȞ5a}%QAAtKQ?UY]au^x7xiw%?%aZ#ƺ{=dx|}JH?!!EC-hRdO’ D%L _J)f͛1s̉N^.lt<.p K}NDYHzNIrKO0QA,r9Emz 9Nx$g=8cƎ lhR`3ТG.m3.]~֬-w2LܺA]6n!+n-tꂷ ,tܧ,@#LP2(#z2|HIB:vvE'V71 4d%`M!A ReKzS~%wBG]Y7DZaD[oQ1\uymq92X`b= <ƘeX$`f &vUZy%Yj(ek,f2M&3]s:gnǑsN:q6.3 3 (̈d9^xy5`=r@*(?:M^lߩꪪb!OaUaXau'vyQDkC3NNlꈰ?/lǭ! wH .dZY??(< 2|`ۑ/Np,d`@B8t郎Cq QLωƪ+БnYհ;&ߦC?Uv wI$A* ZeC EڞV=.rnߒ׶ ۗ%~# )AUSA`\p@'eWc̈mk4NWXJV"|B~z2},d#Y&mF Qh|4HԍzUX:R[9bl,,r[궷ډZwL!:Il #*? bjWVXG\΋UWs;~3 q11EtUu\fAXL U׸x0?Pr0C,b=P֢a+ppMEH06j[B\(0$#jEU ΐS/YiObB@h뒚UQ|fK oo+MbHF3!IA쟷Zs ~<,>e{^"%8@v4JFcHÔ- +(. Q"RFl1fT tL jk:".8p(gx75~mB̉0"xL!Nsou;PBU6S 5(MfARa{n9}PwPSSiV27_* Rn׮<3G4])o.VFO+ʤr> R<7Z=҉q5}mGͺװЋ\P~+ݡ(b]D鵳e77Cƭ !Xj;F.0{Wd.ϰת2^/h&n#4sn,= 7 ]UTNA3Ŀ40Inv&񀰴c`}9wS|ްt\sVӥ/y:!Ş2XgG{TORQ>tq$7 U p!LGsW>1vuNziqyޥ0ۨ5 -sUxfZ_4 -Rʩ`9a5aRH`?(ڨ9_uj@bQX1]ڮU!U!]aġMa|]!>I!"bY4" !=YemMC%ɘ6t'~"(b'(%4D`ԬR7-_O/AQ"?, +6 %E5)ѯDm3Vax F ^ "BTa *+:Juu_Е~ٕyE-zH=ӈ C)h9d!4eBbNDFEکQd# a.HnH"iI$#"JJIb$XE"d,h5ȟȄ($P~")TN Z 1##>ۮYV-#.D0RQ֠*9#mE UZ OeY!tUF^6ǫX\R"SP@; UeP-ӥEQDTڣLY d&((d b@9dJV_E$mzdml&pp&JooLNTM N‚Nm vvbgwf5`J'yg8Kx\ CdaL,,e "LYQE81R"#Z[*S43S\L `&@]6`0B!PK@z1t*f2f܌ Qm|fg>V#G_f >j*)&"ɦn>is*H:!gq&qB"p2aZC$j!Z$si>'tVFUb]"lwrSizgx&guV{D9eT.*TN,~E%ON,Bag6h|?6Fc[H>)qJqyX=` j~ul:bbQ֣N،PhBɜQFzi!i@'oqdn䔒k)Kz_qKi&gF뺺雚%Rر_ᘧ.) aP'vdKqAS5|VDN(*πPDE`BWm#Qi+h9JLڰ\Cb&KMhlPQEC&'kk'+ʫirJG-rƫ+뙒_"g lLbe$,.6>..L.VVnjRɎ NDلRe[R^ X-guj*&)9^MumW*ӯ4u%j5^2Hqh Ӂ ڃncf^ XЪ2:]j.Aۅ9DS=E+&&-)A'!:gb$s )yġv亪)-=D2m&bK"kIWp Zb'D.0 ₂@,O`]0'1E}ow0҂.=Ye [?.ե5 \FpX<`/p Wamij_eU]faؾ/ݾ!vMUiq+ ˤGC7Fp K>bOg$'d;t'rEe熏+Sr  RQ^G"&y1#hh,/M1z0Ñjac:c:U3eM1 ܳ3>38=?s@t(ˀ8(N8(480tH-4HAt4@Psl&z-w4ﰑh3]|d.+763^ztȉIM1C%h \^lspsVQW:5Q9WU ;3VV_c3Mu=3@@5AY?eX7tDDõ7H\uB3T'Xm"vZD:)`{,,ec8vJ0[ [pQbbc5 `3RdϮ2PG :I&,r I^L٥ JvWpl xT5Wmb)7rW˩IY/,uWwyI\[7wsw4 j.aYa5#jDgVx*s,yWwUtƴ{|h_8lvwypqPCk"ղʷXG 6AO=TF977sw~ 8x;AGC8?E'VN6uWfOpХKڬ.=B-E5}wUu۩Exmg xk S Oǎ-Cv6W!bݒAM)YH4K-;6 |@׻9~P~$:Go?5>I\7iTw<ȇȏ<ɗsaϳh jvtΣTE2ny9.;Y(l6qvio|#z!5-~YP4 #L!8=L@}.Q;+#W+CzNe½޿޻ې:C^H>(:+E>&6[|&| W_>.4@ 1*[>A#GD*B ^_4Lh^ l ^}Dk/ث6fGL3}iP%  Z߿^]^˅TȔ2XʚNnWr|Fo`h ~{~ $,4F.@&v2V&n Փ$p~B@:GO?207:Z/Z?r'Gϗogog ) QB1h-[Dq,VH9x$ѣ .$iDJAp$Az5+Ʋ#3Bl /W*㊾荆"j꣎:UU^U&{nked$i)w1rA<\xRr] kF T/}}5CĖlv=www>x'xG>ygyv闤b5 `7]@TqAePj^QFg7GtRl0hN:.?/Q賿yj W@/PhV8?jŭj)H.6%uȐ< P(PƂj+[ktC$!t50 JW .0Cn62Ȏ`E.vы_c8)FwŰ1LT U2,;N%}E.Lzx! c#ZJ%I st`~MjJ)э4% }9C[4^cM#ccV{&]y$6U䕆J}1N5(ƴk{/$;񾱈2Ԫ"b@ZXwR+:3m=9/|AACC`8 <  $B$Yˆ@(|hB*„B,B2c.;ShR?қ@Ȼ[SkC#2t?s=Ѽ:<,**9LLC5,T#@*゛ ӽZ4<CPc%x*TbIHY`<@pмI$Kˮ$ ˖ ˬ! 1,S*3%x/II+H* V/l0\$4< Ԟ8_pH»d*\9iD da{Ku#y :O΃N6#<@kHO{sp.T;4?V)D :3RD8k(/6$S5KD,PSJY2 s͕b^D$NR bXZDOȣ62(Uݙ|uDž'U}P5˭ͬT> ݄Cn0Lɀ`[] WAI=-h8"3NfDƾPx`"`G`,k; Uz%}Wوdf (Z}4eSZ}@\S- U:rS}^@  PMV 5LQR>:-&X X ] \56^gq6o᱘:Fg5`utd-ݙ7sdrʋkdfD\$O3?fV5/fd;daTDkLҩ supuBИ !nKԮk@$hbfU؎~i7{9sg9(qf'sg;ggxczig?{ xydꫮj5GEFCgKKu<5ZdC62FeCP;O4= ބlgѼ^ibRLg;$vlXl2ܣc&c7p&gug@.kgvnfn:fN~J7NFF:l 6}6*i[lg >^BLiOM^:5]YmZH* c"jEIn:+'onvnACggEGF"I_gJkΝu'r"nctKOxFEXrZv7h{ )[GhO[ ^TdNsPSDY`5 dӟݠ?AKS5P #w`co) 淨yq.qLHq燇Jqxw&{cw?&;&.x7X{ۗ(Wݲ4*DtT7Q7,*IXC}1^lA4_I v28r18w'_wA!Ud>y&vaa9|{W/k6{McŇyC'~| V%dPR6t*%)U^$%BIF#zZҬ9Lgd@B|ihcctQnawnu]R\Pua|}~%ľ2BDih2CԀᷱD''3  3ÇH"Cs2jȱ2d)Pɒ(IR!K(($)yҤ4= QQDIeO:9}N$5s樹LG]46WfSKDE ѠsJ2bg#` 'l&5Hda3k9e[I=ͩӨSܺiZ1"E>͛7 ׇ{qŏ+W.Ѷa$J#H䐳HE"y$I2MB$SF$/4d5`~*laЖs$ܛp)ti?ͱ _|ԓv,m'M6KP |%Z4uWU$zhXHEj**al ׯgS()QWޑ_>)$Xl9e<Yg+ܥ%idfKDwΙ'iiu4I۵d(=h{&9iSDa: j懚*֫`3':EZ`7Ԣqyo"U"&AO;y #6P+T! MkD3M`5n:n+fp-t/kt U(%l‰x\QR{A-I"!{:mr`)j(E!j 5?9*rɴw$+JѾHdqj#rYg/hWnh+>jf+g^&笹u/?xO$':#ݤ'iHc1yDcHD#L[}2,hE b[>E<L C"/<"3AV&GE".MlXDʧ+rCmGާ7hLo=D\{x4q,Q()8/Mq _@!%̀y*n"*v(F@3WbD4qb\:@CQc]ω /fo|B EW|TE1ƨ'̦66~ 7(< #yA*3 9/B >3,K'j e"r?5xPj}@jk( ÌԂFc GJYRbĀ)JgJӚ8ͩNwӞTXiXPJԢ}&kDM6PTJժZXͪVծz` XJֲYG7Y/鄓sDXxǜn+5%=i{j!<,?7IZjBBzQαCf3nve1;JVF%"Q 1hc4E!ͭnw=*D;[#49OEr:Ѝt[Ul8Ĝ5,b_؋s>d &դe g%R{GV#ֶ-7a"Ҿ ;Lnt+wW0gc\7U`*zU{Ǔ&pk/wYoL1xy4B[`L1ς(Mp4z%<qKb+[`*-Aг54!?|[4XBiֺm燬J~)GL݋R+7O?X7 nupfaV.u)[w!} bbx9p4y WyFGTw C~eg)'kHmh7B0\o"~h.` 5bh\0Ȁ؈'qmeoUq؁@rxWy)Q8vEr8%YAOtZ/㊎ %8 T,?p JtFh%qmQŌɸJSG, JcRY_ b&h% smB}@wxw (i LoZ|؇=(n]ASEqtxHg5@)Bf@yXHyk%3IP:w/bR J"ɊH+dKŨL E(g6C7J/gt}fM BwHq(>zrȕȤ`w(1Da3z)9} Y{sGNj0d,2 rNJ j:bQ.Sbu$9r]!>85%Fؓ~'Duy0bg,l@& -5fL j7]f. [Žfי鲝 |li⸞o~V.dx yI }IIʗ*9٠bYx)9 qiwz%g* d1 *QT)z┤ 0$jY@n:᣶itBI}r}XV,IʤPxBq8h$kW_)8帥2^Jix-rav:{Cx*ʠ}j?ʐ73:旁C*ɨG3&2h.A2HW&+*2z5w4^SMP":CAJz&T8  J1W{EmQR&ZZ$E\8EzuW@a_Yj`~湦j*1)R3W诇zzAʰzjڟ+q;0Sӱ'Z"!T"VZ[4{AsݰB9 ttCC;${4"ʻ&8w:ڵ{ykzzvn~'ql5'}+!Yx񷍻8H6\^s ,XkvHR*2t)zbD{ e;R@c+J)44CSN<Õ `*b݊bC +ګjɦp !r:Lgeykp;K󋨇JƉ˿p]'b5!cաF;R+`$HY>3țǽBs,{_ 1ѳBcXQ|X'";>|ʨΛV\00GQ>TnUNQB@^NN`b_n^B9e3B <%Ħhw}~fv.^ 1Wuc>~ fCnpiˮQm:v֖1_D5xӠIˎBCNRWnҞ[0]~dݞ.>!C h0Xcx0߱w߽{(ɧ-ɒ,1y|}}W՗}du JB"ؚ ʼX#z -/._m*tٝ¾<_c2?.DjN[^Dz4Jum pJO)i B $ׇ@B? rpXSX9scn1aa/ k)ꥮHl`h.Qw43a,>=?OӐ+ l<5 >#3%LOe:%}OERQHnߘ$uUp||'ioFyM`-R,-|eo憽驹I$o]v@ P.tPkj%l)\d{2JR R/RP`FqQP3Ss4Tt5Uu31VvPD&!A7+HXWCC$w7X"z`YYFZ|˼[ٹN~ޞddߟ}DWp@6lXQ 4(!7ܘPD$ O$I\-Ä Y̙sӦC@!ĥ{zp- xլX.ق@R"XZq9H!har+ThY픾fΨY)O#?mc,Y$thѣI6}"XYo4^~S&CAn ^vvܚ5ejv# +n7xPM{w~2 g(6'>(֠ S0#8z#*b.PB0A/p :ç& ! PC }C,=6R1Z܊1E hA䢎. ;# Gv%!ߚ" `*tH0pC1:pĚ., 8圓:SWpE8_LF72un Cj~#gKR= Jز$r \ ]H JVFb!rXLjꤖ:G0C /hÝ>>Fdq>p@%j ,%V {_]9 +#0- #Ll@1s`4​5iO8\]~RN6`>\4rcrCtRE-㔾H%hp+ALj;zv-RD-UL8ET3>t%Ⱦl֞" @f${=鯶:VDk'qm|r{:ģP1>m2uc]'jݱձެԷ~ ՛͑{a`zj\b.1癃12úcXR6mAe-SX͏ %>=w7}>ߟ_,{(%94B{)XA6lOk t5 (~exmQ9UH%1dBwà :85f>[<Ȇ-iZ[| Et˛޶8"MHYѵnjS&[%4nqw̖C"(\`L҃M*B,]a;"X؏*ٖK a^5 [[5_!%[p?$LĘK1P&=)n 7L k&4o^Ԉ8RNfBf8p\fkl\kPBB ?CACZʆwXqd3̰+\q7t.: 5rãD]TA@{)a@%jq)Cb7d~*A($kMQTU*5Y5!zȫVŪ8 [q /rE V!%^)i֐4vN^_;"(TJSFS SMhs ,p,hf$Yپ)Sli;ԞyVh`KZ;Oe|Fl^ѦpR^tq{D߹9 4Zx(~]Bbã 0#qh%~9h^9 i`BIЯEAo}&pQ1GiC;T}nS*wڐr$Z|܇rՇȘ?j*Ja;p*7O"_ g~~i%Տk_NնsV|\C0崰X^`&+bafӼD2] 2DztʇD{Œ +܀ּӆ˺T`MN0 .~"# 틠\ o~t.-L`!CqKo}+"^Rw.Ч>Z."JdYy V*dAN"FΰװQ.@C^0 1 V1Zz("3nfP.v? `p 2!~' #i`àEeXR@ذRnSpch 7p$xz/rP11rĔqp0oiq.$',e,Rr|f0*I~f|O2/M-/^n/+Sr {@|)N)Dl*$o &Ak-N>iLjĎ-nJk &`C"I5W7 8UP),샆.k+ QQ9Ӹ(2:0AQEDp6jJzz8!Z&oidGjFZ +/(c#,B')R WBB@Rj%$#B,A+DD#'E%dEh[܃rͨ]tq<a/w1@H1 Dg0)8Q$}&f&24spPT?NN=zm` (MiєP!St}LL̕NiXYBb(1 \FeG%GUɒ=2M@4^ 0IV0= 3K7HKN<-2OOk 7V""1Cc 3B%Nu}" ybDP I!ÉHff5.!3< Wbh8i jP%Gx'[8(_xd _r6jF##?}GМj; T?Vc̓N 1̋c>"5e[\\/o@wpZu?Q[][yXƶTttS:+jLWC$Oԟ MM'tQiUE5{yMTZ9EԝN;D7ec!Mb- 1U\W9qY9:ųqK}j2Nځ}m\;U?{gjJ}c>9aTKoLj@ن| <[۠WHn0'8:B|WV=Xz]uYK:[qor*[=! үW2X荵$^S~D  ^꫞ipڐuџp$%l}$- ì,Ѹ)-n]91>̪C*j~$ֺZYvP_VߠO1YD݉Sb0ݽ}ؐs= E8hAڷ}q/QA)ٓKo *X\CwO޶11~+5,,|[p9 )Ɲ`5B]7!qh," t(hbC%y1l>x'nΟ]l ]8>BF:1eR=<PA|ʾy~- Ks "^,4m/7p;u~C%i{MqSj\;yޤ;X-m &l ? V|A pBQ%?NLI" '(L6LSU+:PT4x9aB(>U uԡV(җEZUY;RWD(qL7`RC2$z휛#T'(aqt,xY6'-cGcL{`-L׃cbo2*Ѿ}l۶sW~K/yx3Pzu=ɥl ͟xqUv<7M$cBQ1/k9&U'JUMYOOS\Ur [UTTI,h2Ŗ1M5]zV(UCĖ[]iR^: k]<^EܐȘ`5hH6Kia&+l@O 'pZ \LK6Φ1wnuvٹVZd/[ @zPܫ]OP ^=F#lYx!ɅhDC/([ -¢t--gC5Y˟}9̳}˳Op mi@%@!Nx%c1-j W1Ҡ4 b'"0 *B W u ˤ$ePA&t BPBܰ($X"':1M#66-f`ƶ &b+(%b(#o|ۢFq#J)3*&x0!&ۉE+dE~E(kQb`!8 x-|K\t%YC59ID39yx8\ gB34iMg\ܦ4$%OdX/|Y%6D"ŏeHXN@.'S:-r3\J 3(!N :Q&hHGPp`KZu\(I6O]e;ŗ$ 1aOuҧOti`*SBI<% hД c+L&3>3,g΂֛8f 9 @w !;5g9,۠ 4gw 3!K-J Mf#(88ByRϑHJ9B^0rzPSHfT0]1TIU&HG`S:F-1ᱍTX+ 2xr)4)Y/a Pܓ=Lu ,0Ɍ۽$NMLMՍQ `ѝHy<RŅY^[X<_IJ鞃^ ָH"0a:BaJRaZbaj*BJe:,/d<a3|u P<6\4Q]e bG⫭Z"4= }]W_= ED9(Z-ZF0S<\\PT fQv)>]Y,`P4 1YɸL C-T` K]܁QoQh6rc7z7 E-R +O ஼np`Hn!\+؀A"dB*Bj@_eŒG~>C.>օ!H$sXiqKa<d8bKM m-]}ZGFTt߇ FA1^Pmu|4@x p>U GY>SG.I236@"2L-9Jd.!IiGr)]{$ a+]&2EfkI=ƨ));il=m L)tBLfz!ht*LkX+7Q9m΂e Όf<&&@9( Ȁ&b_b`Pbc$qf6ؒk=4mrûF>kA>$+Y!Bz$g.,)Bg:PlU˔.Ǝ†lHi9Aw.e ʊCg-{Bu|pBmH*檄*Ke}]oeoLmod/.!Ao`h&@덊m]Uzb@˞B"kg~+h=4 @mDin¦Sp".-z0yaϘJ.{M 'lȜnr6g=Flb>'*1c>VU}. >" BQ&zr\|Ъj1M^0mؠ`=,j"")?J-|ǭXjQvo1ԲorTŒFEAKr[Ue)0r00>pk7n+.;:on2 A!  0a֠pm2q22#pŰ ) seVO7ӌLB8ͬIe80z2'>],|rIށChҖ%}A#4 k /[B; %t-&oخGYo%((}B7H7Ln?f .꺒浴,_),Vt#OkN4n1_ѣuin~A/xyJЬ]pUsB3k53Gkv5݁𖞜nqmgx*vZxJ]\s-<*P|IдlF]]3F:Hw1 {-T)t3TP RJ,g%Pt$oQFot^m A"J㵺i 4LPpk6t²pNo u-'.䲗2S7uY<^fД 3Vc3owwWaUX3%CP"%B5] '5C-jELnI_bu1c'c4|"!B!@*٧F-םPݞ>ʀeC>Bfu[pfؽE;Fstv^̊Hkk(qvDhE:4rpc&1n:w&0.ttS$Y7arIU$H% b̦'' jw~66l^̤]+褺۽CrᬳFNh{xzzŊhc^( dG#}+3}'}_e&w[=PK=j;ȁ9RK7e$ҮW7,\{{?z670Ex~?`'85YLj]k =nI}|o)*"@8Ib07!m$@OU¾n-tDDfBz,ἰw44H ѼA:!Iv0{ǂ`D}%kw[jn=1;t a0kd٧T۫W= &R'г`|= KRy!-ċQ")M%lVK!tX>ʢVo%Ij&Dy~24 "+©B,A+I4MNMOPѓSUVWUSRD]]^`_ dfgh.ajl_beqrr#\  :yDz{}FE  $A .,XN?(6X =tj74!E$ 'eI1e2gѦ:PةS^!(I4ĈNI`R`muJ(aŎ'͟:}ꤵv %p HirRaxI!ӗ 3uN#I;h\CB/9DXPx&ɦzpRB6lݻ+pY歸݄!S6s&mȣ+~p֕}:~}(ꛃ`5D;7ƍ 3@hTj&gt Air' JB b@? o r͕߾mF?1k<#G:8 wcņBCȿ ,, ,1 `("3L"d1c0R7\bKPGC\'YM%^Ғ@E1 HELYSPCuTR.‘:%uUVKqDR5#!qA<`Ӱk hRXD]V=B`@8ϣP[pvB(' /)Dƨ ي(}mZ~p1XEFd,#? l^D Vi1Ib=5ƃH Y@R/UJ/%M4gsTqYixeƉHi"㵼_gYcG^v!H~cmڂ$`t6p%7ŕ%U7C0PRQpkyn5緪&8F6 ?,Z g6<{ 3x"K"Iq̰O,sKJ1=y)<"ɟjelхZRt.f1`xLO~P2?g6̦(e;@f^f 3d,عxm!fIOE/)n*?suk ΠڢC)buZԦVemk]ZVi6\h0:֣Vfx/_N"F}a,M^z6Aai_nzI:89)u VgD UÃ:k&'jB{;^&\*oxMՌ36@ ^w ԰6C `M_jM`EٰapDgXwFW%q +kJER,&B!9 ףnK#s8Am|e,gY[ :QUT% ܶrfh+hsbR%bq^G%z:J/"/B>Vi7>B(ĊIb5䔬gAv82"䐈Efӳv DzXY|d% CZ,gS=^( ^ذP?z&luL+性JPnZsLW{8@aw`ϮsX);u y2X{k2NEk T@c8 q xǀ-+td 8B?|eCSrZ nn` C#ނhpQKu"^=,Vz0N56G׼iҢ-Ѿʹ[} _]ב(z}i qP`U,ep_c`a†QP Jܖ+4p*!+ տŝ}݅|3v6^Ԗcy v/X{gT2T=g Ex+o}AGt33|'|,g*@hí(90;)#ޙ3:ߐ.:C:$=I)( A;*Ј<ȯ(1 ;I;;\[,EhqBFP$ؼ3 i1v\12!#rqٙDӌGES$E+U\EVlEW|EVc:~"D{^E^E^l^940@"j Ѫ 3i<.:'@@ĺ?A6:aaA1 \;>9"^4}|JCCʾ4x#4$%̾Nr4",G[!>b Epc}#>%RDȢ*'{H8,ԂSHk\:x?TRfEK8| )E> #KŤ 4e3gdqjF |G%Fo@J ;5);) T !鬐4B%2ʠB(^80N+LNbaɖ*N09h.6P+s|ʰĚXM$Ds:X;>!C\曬 2Й)Mc9RtÔPD(̀QPĹ 4@2*t 10(.*ZKK"LeΜZ ̰“';֙Ҟ Q~;Q,!M'E90 #Q‹dB[7%oBCS&2&cb16<=sTEOJ⓱^8Ԁ!w HJMAZԲ܃Q -!:@ U_i ??F_mȚkԿQTm A5@lD)3#=R۸0:3b$bͧ3UIRADI,%5& x`/O39AO LJSN8#H$P AH&HW'д{ӫSSiJO lsYj1N{{B1=!ı;\DR 8R̸ν]~WAa/{*~¾aX],؄3C/]-ٞ>]dNN/6jj&>\T9Y +M4cbK5$U\Smڧ-8V!S ~.^eVYdPu_CFdޚ( h, NeJ54<[ ,yx][ً_wh%5uV%]Bҕ+CaJbLJXQ$EݷY\02HN\{ po5syt⒅b)YΝ40B6C&C8ɚh,q2acT9FmU9RZJ>>,¯>8dD[9_n>坐WL(^i[Kր 5e+eϙ>T~`j[e0leWܰ j W ƙ҄B*%.ЭŲ ָaffИk$lSlK`V,pOvi@Z^n*~is %_"\ 1Lim9pj'"k [j.щo%@f(;X/PkL"+>\mX l"fX_'/$9< TF9,<ʾɣ ["1Yg qh<"զh{ Tc. Xfmt8iџDr^;NM7n2a4̦HL FVZhKJ2bo$!0G q\.aScuWĈv_:o^v ~,h.q/f,hHT 55Xդy LCpHuֵsecDYnjgb =TlYClV+^-x ԞhUh _텎* X'_ r, +<r߶Fޫʂ҂>Vn"wynfspsE_m[Z80 Msh+b-K y`QB/Ctv5!)M7HI^>8] LN zH wӮ'* p]Ɩyzb@gSBl 0ԤOViJm7uO Ċ#G鎗|zM@9\BAПL[0_1n7sR!OHmW`9<.RۓOdysb Z!sB1y4'uTsz.Rbnz,(KB g\~NR ! "@&+*Gy!Q=&rբ3 td3gǔgpq"cbP"C P@dDXɤȨ!Bzz%d"+{Kj*B,BBrL"\̌ @q}%~|\m iYT.î  AQB"D [$l cG m:tƛĉ+6pH$uK1HDD9$eV,[;q%8ĸ3ȐeTPNJ@@a RٛpX5֭\(ѢXmE/FF HۺE@\yt[FNA| !V'#E4AqTRQ-Y]EqfCIXedN%;C!0Q`$LuS!iOAMIђGA[1dQR@] J(W|EQC'QLuZK]I!\%sLx ^a*j:Vu>aTAyi3dXMH&vJ W֧:겪^BLbBf-?iS!9q4gFL9TYp^3u`-vc3,E%)֕p{1=XlЫyj'n밡GDUOXMdkn1|vFJd!FJgPv[߽`n% N(B/{,/,$gx t/x5ލUƊXr;,x fjtc@NoeyX0d$-HgP.Xr @ hiI Y4uHuDbIm'FʍNJmCDTDm(e a喵KM}W;-i tQȣiW 4|%HFm:jd) {"tFUYbIAnR,zʘe {*]'8k)x5DǑ5da#*mVVMNXWZñf8Y F*#[֮Zvī zM y7`By-S5 yH"`ÆoYE[A+ڻCGlf3#dlM"ۊl%}͞N^t hD*PݜHZ'Å!Q+!IS.Pg^@F6I,vY_΍Ch)EenmҸІ44SjAaҴu^}P`Ƈ*#09c5nȱͶc0C3 4e/$2Aaj7d[1A?5q!zcQ>E(z r£t% &7@Of,- +ƖN{hYTo~Yʩ{V۱ohͯ5\[!x"|gq;Gg b EڤZ 3}b5քVoww,H5Q֩lMş*'UM%.|xvC* uHܘiHэ5ǡgګ"|5*7VQ dP1Y T /7p*2SiG !xb0;UHyH.{rx>a_UCЅ,n>'m$gLtGw\WBYB\4QH%&&]`\uh"d Pv  gOSA&v635t7'W^w3Hww+XkPfqzxxʧWI(;"`yFGyV:m~2zGTz&3aC6~t:M`qxqI#or 5`Y`s|@v Yq% }Rr1LS 2 dW]/e~'RMvD'2VH?t[@VOYGUXhh]dg4'D ň` ^g_qwf^u"s8xRjhV;H)\`x>.0`W`kHvq{GymPhg4ht9k4GaVm=s3yGvnV+f{tU`#=i` x‘܁@#Inzݑn qh"}(Ya _}ɃKe N4`ńeYf{wVsh$%^镹;ugd\CAA(ѥA83Xv։jnxjؖn(6Dv_)//kkDYH !v Ӂ#gD7*4z$WIzS8jf9b#Y{Wxs,l`EВGy gI8||JGe(@B+bH9 Ŕ﹔T hcXK$1,"%beh9XHfD 3A\"TG3 W4A(Ş`vBӀYhQ0Q"O5>i1xEC>)Xd`9)j R7dTX#7WDdFi{vכ#!{7qyqk`jb ~jɝݙE߹WɔX J  eY( 2b4:1Bsqsqtt $BPH@?aR ,Us Z7Xv顄:v8#9ϸG6-i7nPnsq3zq 鈎AxECkDZW!}<#3cr$  IHa]GqeTH]PP qQ QZ+-Aݹ /u y/~SrjL%Zf.2"QS2t3"3pFe Z%SJPuqXȲe3vep'> wj-2:x4Y'Ht`( v_TfU[JOcc3uywQc"QV׹*mI:;avTAGN azp0‘2eoՉ;9ñeqL=

mx{F׭9}TМvoJgAl(-0D/N>rİ ]|Q $gIDnC^䲴Ů=Fѹдll: Tܒ0v4ffnR*z8Eq5R qabucRYV80-jFI@˪ +!5R m-ѽ!mFC'˞!m|! S| ~]&Y0L*|@V٫껫~pio/w>^u$ݼM?)JM2Wйm]:T0iQCi~Y7e:<]n,{x9{ngfh(}n>-C=MP8x`SLb؟ N_θapᏴ#/u!{#NnzȎظ؃..P(`6 >LOnZGcF]L[Hlul0!RU^"p]pv Uj9/}?)H9_az8V/?a\韩1* VJdfbv+e u Ur^pS'=^EʈyIIdI)My0.-m~ee\Y;ܑoz;McJ#LCH4RD>.RTF^KVXr,\Fi: 8O'̭y=H %  &&671DHJJޜR!_'fPXUsud(."eЈK̈(̢ fݲ (d 99HzO//@Л5CX )(j"'NE xh'BW"8DZ(F8s Kz5\ƋV89DV"dDr5qu%920E>z@~TnZXk֮W?Ѭ_E^`MMђ$2OʪqDhy=aloԠ 1еUm` Ů kZDF^qF_q *@*8IR%J#t-FAdQdZD(jOi&&cb]~. +93MN:; J67x7AkP#K4tJ٬@^6.I|K/D=Uޙ>>pʹ 3Bf@rtLlv ju `vU;!\5SlZuBo Ü  e=Gw^ B:.ݢ_}7`->ޅ %KGY-VڿSč9V1 ,?1KB83, 2;RNBt>  Q&FAzDsNvyTdRZVGPa)2pm2Qe0xқ9›<.l~ҁROt (P*|\zUė 8Er1)pa%>ʞ(uAt]BTQ\ m (Ϊ < NVeYZU'خ4̈͊>9R &bj"ȱ8j 9^=B\ zDՐ.[i\N4\.L Gf D/4)D t %PBd@\QQ!E-SC 40%2Eȵn e1i  ؓrQD&/h@&lBڸwG!=Q[l&ܰYW%,sb:mBI]xR-#?o*BOe.ꮙbQ0%ugqM{4dh!$w%|DT3žTB_!mjSLp,(PīKt`(iJUfzэ(h>5)c ;v$6'm\!wژCg`> y m%g HnHFpt[ybJ@\9nf( l\B ΊҬBz;8Sp3.[>sׄqw_δmNwIB*Xbb)_){YĜhT KiF+Q jV!t o kD}tC[?N)zՕe+8_VLt0b,}sV{+[m7& A㧝 =oEʢ#yDh*"Yq ][e{'\{z^Ac!Ӟodk܈/FN|8\@9jV?(i.sXsJk-x9Ni/Qjtں5g3Vٜ _̩NPB $k4۰&nro M6,MCj5Fp JAJ n"n NpoXfvf'p Pg 0QB/pFgdg  P K P "l8NBO@dJբP Xb+`.@ϡ\&Lj%xv (ՐiҊ/ د]#ATmf]A( Qkxa = PzfhlKA=XIj8d̶gJH| 0`  0g  ɤ1!qΜ K 'R")"-R vAp 2/"htԦ5.AÃ3e,抮(QDb[v"!z\1qF.*2Xct^C t:M < &*n$ia'r(^ -B(`.? PPm/Lgf6y>- ʶUL"& Jy0$5L@60egsd# gs7y 7ҥR =sⰻJRNR["% P1Sbnb\ wa'ye*,$B=B̬<<3=s=FdQFARQ7F? 63L9oNjd2 3ͱBBS4Ō> 2 TS55q®9=e< U,7'rFy4O`"s/t&H/NsH;̃i PiJvGJd1JdnK{r>0Oj(`R ! )VOr餲Lt__4|!`)-s>oOcOLaijG@#uB]GMdrde#d dk^|hq06 E @W#X3SXXubYsFY 8פ]sJ @NlVZaL\] v]/e> TnnMB g>H[M(4V@ a'pR\]ٕDBO}^q1$/bw @Y㖞d88(fYw\aL3 6afdVe5UtEqxgX`'y zEz;rFã ۲?f g| iא# u㌨=>N\e"(akWZSs&!Xsmg)!,m[V0$n4o lo!Fq+)pAIDbD,]aqqe)f(V $}?׊4t9t_c:#B.dMVvG\.w}WIAfDDoVgzX{τhWz66r~mCkND w7 ~VDup_SV(SR'vNRxCXx0n\S't;sp!p>5'v0ЮC*u*Džl˜&H$] XGNpՊm;,cX۠}7UII.c9e'{Q07sXpnv30gj'ܜ2 AS&y鞰xxwIܘ55X= msy >8'_C|PyFs7Y~V0n}Wv5݀U69:1c #8Vնei no@x.Uo'XWs pt;a'H`;dՊHI{6̜2Wu0\u|xu נ( #BiKMj|ZIy`^tbtϩ ,Y@P07F OL"8+88sZvzzR~RG,#-ڂ$I'S bC,>q!m!AxV Z׻:亜8ٱ9 YMy 9 G߂zzeZ,;ÕGe@`WXb]^aykZmeA)Di< sǁLJXt væfr%TEUe =J!8'(V8':%t#r2R'} J! {`p(C!2ѰD'H(n"N8H ] z۩?'{tFKTaPg^`=Ƞ9t]7D?ĵe7١WDg=׶o\Z6t9{;j^Hj[1k!ʧ=Y9SYgu !WȔ." e #hI$`DrL7;>:rq5:םG '%bl'U湊#f*pj'/[aHݒDIW}w|ާ1T8 Қ3Z0q~ջUD_@^@ӳ9O;H~*W6V@aph8-/-[K( vc4;uEdRIfØ `K$8P]ow">g_iU ⽓ D"\2Χt2f+6k"3:=>>d(: A b# #䤤b &' Qfa!](!]хlݩL-b`-Dh^t4hЋ7x89z:;|Ą@ m T +‡ qϝz7fT !5QӓmGNv҉J"&H`Mi&ʙ)(iSPeJ2m ԨR H"*a[ٴh׎J `@”$\<@ć+>,C"$Plۙ =,"n\nZH -ڶJrUҝ[Gl8oDҥjo6)(PfSXE`BܻjdPe0/pv :G rd>Cc.O! G\\Q4Eq y4&#EM}։Nؙ'.EKlEنMh&c^VQb5RUV_W` &_c~i bIF^Zn%v'y'p])f)fujܼ6kKl(Y(v{L=tNWu1!ۡJ'v١RHzq!_r~aem)3(`c(#P`i(PWP( sʆG" dI#+#GyK#lK0LQB$O KD_ ǯxR:u2)WuVužŔ#c#({Y$l墢JQOvrUN0PM(ue"L䴭n}+\ѳDe M@Lĵ~}PAjT̩n d*1Fvy,)J37SoH"|ABj}:*&&(&"nԨF9UƸZqY;D1]WШ @,8BPH;>ʀ* ZRu\E/4ZH*`DD}@+a6 L[~&?-aT i3 &8E'XRL75hU#e,. U.n9!ymZ  E `d$?ɑ1e[تQavcle+rXkA'!?NFDߜHa&pr۞ WR>9,:UeJ0(`.oT8<6GM{` M;aȧٯ`wXK"-O?nVIG&USiJeI emϘ P؊dn򽉙tTʅ]a\فٱ(pˎ7gDNE&HYk"z޳lgTYw<1AC #<:<tjYs?6Nz&SV:ֳs^:QU=fdZcImq.ʃ 66-Nd#Ro23ѿ1ڋ3t !V\Z am6̈́nUɓfA\1:r!:)wPH jm/?zkklg& a؇+vAHIJױ elQ !G=rDMv ܳxyL v }ahy !!&.!6>!FJAT^!fnfXgP!a.JU a:K ≆T^@r4C-d-M]DCi T!՟Q%]w`"&`!8$ MaJ*"++",Ƣ, -"}. ."0 \ n(1Mı %#q 54Wec54M"Eq CB^q: m+0~:5fc%_}U? !Tp@*54C Z_)^AdF"GvG~$HH$II$JJ$JDyLK$M@hVVO$P%PFVO.!R2j3FT%e =V~(Rrf$2$XJ5.G#`0WN`\@AGϱPv^ve(F ^d!5ӑ$dFdN&eV&$ffdOFEgBEO3f&i$]ق9!m\jJX! *k.95gyhA%H#( 7l5Ɗ na^e;eu~|`G[Y*v('X]G?`%dGggBgaf )e(Igg:(hh~`((gdk"l&(ŕAfS!ǽ(OX%GSpY2V&B,T67)%B`B>ZTE;f((AОsٞ>!,%A-`_gyWE%g~NdE  (*VQ@š&_mP^&7#O &-I(n7(B&BYe6xTAdW]jZ3hСaFY Ɛrj 6g!yH'w "_}[2+{! TQ1BU|vNZ=H'D'na4avޫ›4Pee S*=Y,(` Rjl|6ժ27 jj̺Z 3*qbk*j}ݰF~qP K$%@ ]A#!>#eUގD~Q'R~)FjdFn_-(:`-­ll0Gm&Gâ&A,un |,,/U Vl5a$zbg:娝h,81Re &ACT>Ivޕ :i4sU@y"z@YT[ՆܹylݭkٞzK*mm9̱߭/߱"QSnj%n]Iȁ!2!\0>fF塌q un.(Ǻh/0r]2$-*p0[- Me#y11-A1m焊1)uYr ᢴ~Cr ܪ>q W4q3A4!3+2%"3p =VFpF?4D[2V*vr~S`@Pet.XtʰƪH 6XMkh3Opg/>EI–t5Ql!Z'z#9Nc5;qAutYx_T}4h]Y6 1 k2?co?W'tc?b{CktD#:\$k4pik:Ņ)O%e}bqƾ(w@<%QjFA~i+sUO]ErҾtN5+yw'7Jv7_tu\Y0#إq_f``a#v=w63dscd#tk6B736Ӣ6!,0EyvFWKNj+ej~Xؠtvl+Pwt *fLnVihL(,WF&7.jr;nb`&`ڜT1_7~\SwsS.Xga':wtB-7s$>ě%'I5hwD83asb#vbgxB67xO`?O8G@;zG~1"D{xi:KFSI%c#'H8‡ l4dޜ gEoN ?]/{[ϥ..AJ9\C$BA>Cͮ0/DdSi4| /tnC"V96y4ly4Q)5|KCA28C&/8K:fs_zkǃ4C0(I0.OPg/fg̭Spl0a4yO_[$rͭ^& `t]v㜟-s\‘Y:y˹7[eў!5p:4":ƧHbgeOozeo:wⷢP-||Y肂AO$Ww4& 亭nA37rA~^zՏ/bd;܈`}e[S=63Qx/Z#fETI:w9 T? ?e )3C"SD&KfFSj X[nENY0RLF$5{~ ܻ#Гyx@SCdldc;LiH@@  E4!X[}%x 51͍{#6.8~HlnF@OW_gg&hoo,A/?`P D$.L?chhIH%IRU*RX5#% LyViT#H ,2H#p /8Vt݄`VrBNmA\tśW^&p!3qSBtL3Fdʀ00ȰbkN%N5TZdeKZp=h,a 4. YK:;=]%k=GV;wh]͟vKjϱUxQV׳ TY"碜C `sdٯB D> @:-cE_1Fgd3>S#1ʰ؃?Icp m61m:ml֐j L.8%h,7aƙdaS/Bk:i ==ѫp!DS_q.KпJo0O[⁣ lBǹKpf0Ւɰ5K3z+EE6YeeE7;LGxD%32l1r[>% ż6M,Ѡ +ER9ٺmN[`MKB!s7T|&Ca:C8Qx>vc7 ֛H X{Ǡ[.~C!6}Ӛ FT`bTm5&Vc>VVŒ*zJ]=f[_ccmn;oe]Ŧ:Hvĵq(tPv]O0GyMi crNHG%`ݐ7j9}a9mә{ʑjTӊx8؎NFdMbR mԽU-hN))5}K3˟`[n>euVxs[@6ЁKgŘ&ZҶu8uqRM899jf.LT]HM [sظ"_ʁ-`s&ص`]fwtRC4u#7 )"F܎'mLQO7e5ܡ4=lbB5 neGoTGɢ~kw1Ea7@Ѐ'"VINvғ0#&H-3C9AVnЃE 1а!rρ uhs&taNn3:h`>TD!{HC̛k(1L#Cd!a)dF(9ҥx Qs ió5ri}Fŕz3a1VbsP82f:,& lG$p%V!# 8~Z֟ fƐXfpmL ;jf\Dy˃1vMQ B s{(uƾU:snf6os\ވ|,8(Pe/_ . wL}{_^…_mTSP̬Zi%El4VIx7Vqa w8cQ":<(qWx5qwyE.Vu7g><mBEk,tt!aSXC&7 nM'X뮩/ުcjĹNJb52^* &ir(K'E  l},7/ZӖl *|5ywPGi=!cKAweU=_d) yejzJ~w5ħVT,;P #\U /#ȓa9+<3=TJ/!IӠÑ*Csd EۯWΉS>{qk~RSs'>K\ g"13[8۝x™_P(06BP9A5d ?|'rm{܂a qCDzya hȚ L0| 25Y p# 4 t1#2?#YZ[E=<#% Fʀ=bA9=ҽGPIdکa@r-=(&%zmd,Bu:S(NtWzy{CqǢMx-ȴ|C(x#Gi̒p4z,˾D EFQ|Hb<QE@<Kɜɝɞɟʠʡ$ʢ4ʣDʤTʥdʦtʧdʒ+ɡJaA Ƭ@Je |Fht9Ωg:%o4kq̫c5\Axɾv4/:ADCHy00R,ƔW?kY*FHPH ~HԬZHDᇋht\sɗ, VW$XIDTdt\ʒJFN?;F jF6| bR[P4|n;Ϥ +%Z`iOgP>DEfcg'R'ɞ#b)*  VYHAt~ D$707 ()C2Ȅș6pQ7MMNWN .b1^+,-.RꤜD!4b%˻¹4@Oj, 5jʴ;>k"slkL#UKgheC%P/Ԣ|D\},ӄ5b,P)QAQ?Ѵ:acH=P$ ,2lhRuIɚ+4r5۳=[s=e>#Ϝk;KL?X{׷Saᓵ;F8@4O[PTMT{m޴7CM8R5PeЙAC$ّ`գ +^Ȍʨ"jЇҽ~ZՙZGdM(' =)}(<4V+ui֭UήV`JZɮg =UqKlxS!",BzW'52%T"& >XXF]:J\TX5KHaȜ}M(8ݷU}(_фsK &F eSK16P݉@W]NJPՎѦmL[ ޜ[D)&eSScf{I.)/>V8柼Z5^V֧=mc2fo.nptghlZ9c3F90FXR6?@_i<-"\WGnBEd$:LO"hN>OExͱ61)nA u"M)evK>vт)KHQ'sy; g6K%FH;m6}2K<) +-KE KfnjM}=q&rf4^Itvg6kk5VY판=)f=ވ̆5h߁׈` h}J彺&^~Q>Nee 5Ƿ%f`}}?aYbF^IٸY:h j kR4.kEcEkvfcukffE6odNoR4a̽j#lk0lgҰ6dYRAN>kϞ@}umeBӞ++k8N~(2<:ja @hvJWnxBd1kM4,6" \Rnkolr.soVoN6o^s0nE;G[k`g;@W<5.*dQpc,R^x/pKp5RmZ0t-"SR~IX"zTމ#چCzGxcCywxݧ}JM)Нq ]!$9j =7X^͕jӅ!RSnnRI*n:c6o.s9Gs~s{7v1g_wtA7xo"Al8'׹|ׂVBxљ <ӈPL 5Qu~GSWETq_IC!{lUUK `݄L-[EIάyiHLL4;B*7{g@E-.wn0xMkwf3&~{3_gWZ0|!?,hU7F@:dR䯢lT^(ycKIOEH]$ `F>R\^yF8L0RMϬc]'`oUQໂ jُ%~v{8IR6r]bֶgw%z|~s{@a142ItJZجvA`Hd(9Ѳx@'ۗ $wi} |ni~%y&yuv}&r22uynHnvɹhȫ''e3Dec{y pǨ%v2vnyDtqwAA<@ELXCdž]q8fIߠv"5>n&+ɬ'fF#! ҝ6e|MT ]-gׯq#ٳʜHk@ZX^ʝK.&NBQ߿{W_JL0bȘfM;NҷZNI2ɞ'O>eT"%+Uћv)3.u[ʲ;'Yl4؜'Ok|\z'aAm$PDh%R$P4@s.!G t =1 @tT SyDvFTѮjS`2*CAPɔ6E7+AHil{DFb}6$<2\\d`K.7ꬷ%e`*bՉZ EH{ܕ\  rmfr)$SKP:gG/1"Q h=ƔoWw@ zyof4vxZ%j6H,ZgH+WE'GDwSo,= _4.9 U@N\[#LBLȭyEt LuEv8̡u2L"ng iVg&w^R^ f0wM0Bbj|_"q)R Mb!y 8Iro*A 3.đE<0[&X%Y.q`G|Ҕ GHn4۪!NܐJv"zr5q9RT,*{Z*Q#2uQͭnw[N6@Cp nqIr+: r2,(J\31asg]#9C{kIZ\o_ᇚ毳D%ޙ>3/v;v+fVE2bIqjtge:y{!-;|*ty '$gQYz@9$V֧?SmrgYB! P-@ {JAE[O6Eu̜\s)@m κַJ;* Y\AQp1:`ޣ]],C6-)) 5rvx${.ߩ7XQktoʍ~hl`ʖY5(<j$}8BcWCHk* 68@JSa؇PeEoÜwv?SzЈaOOϿ ed{vRii ,`x%xup t%,!w  o^ f ǂx5ypn?% 4y,SttYE>U(MGuVgCw؈'DwH =L\nRWDnZRPeH ZMqhX"a83!pp&Ђ?Wy.4Z~`@B:DZFzH@"_V#%Y< w\EM)dtN]Q抺w > \ӜbaWIuqq),h(wK9brH`X?{ VaF``z|*(21ɘ`'qq&"p-ժ l9:9~TJګګNQ:$I&yB [w npbZv4qb){Vw`qVxDUFu)GZɌ7BeH1IXy"|@|}E)*b"jQp&AZ^}YKz.#2;4[6{8{*(ڳSzmjꚒu`GvGju xA8eO\4߅ Q;"(g[,o>یUpO 9G3*KPz;P{G5 cgxKPf÷P* E &>F_`fj[Viz'0A,%kǢC-kjq:9ۻ;w餕٤@K'YY-imDvT&xws9е  ұeyf[S((1nVڡ4-sZG_q4@?ʾ`= yB), &779~ | *J3it h!uRl.0ÿˤ?+) z/i切YTss57A'QYx z`! <۝r)P&|#şJ<(Ҩ3RiYt&j7Χ 5a{^QHz17xL^'t<*(/*Þɠʢ̣jU y;|yŹ0_ZpHl8JKz"uS,<&$e)^_< a>H W m&HoAU{XR!giÏDr۸=-\swj[ȔRmt5|9cԶDxl` qEE3iJMQpjW 7i|c{EgUNmWk׌lq\t, 8_f|dziȑr j 0F?<j$+hi } U"ѝI/{u3J D 1> AMٓͣm}1D&|a'1XDU / /ե&ӽchjsB^HFޔV^Y E2Ե}%^;>)+l͉D)ͱ՗֒(9{egm'vр};B&|ss9cY|WyMA=Bشꙝ2٦m0j٥ ږ-$:Z⢭#.~P01,5="53=Nڨ` +cAC $ïuۙ۾ܨѭmRv е؁!܇ҁ<Զ oxBEٍ:f<i0sVMLh"_ \XؠKHȺ<ԡqi ^1Pa {-A.58~ىM7C:ڽ:*>ڹ>'..E. Roiȗ, D܏RsL 惀9i!2Imn V&Ae&%F3G ʿz>b!|g"& _@@vqȖBRu1&`8|.>%h˲^ш-mFoԎ,4@.V4N8/Zb)UKf~iɎOEq^Ow&4 PnMmW,Nfnnwe?Tv unX)ǕE|&J՟x%zq'?à"; !Gik m9.UhA?CҠI?/㔍onH(>lӮ>_@qhLGeyFUnV6>e~dvB)3p G P0PFF 2a3 $4p  aSV !BҌ2Prt3Qmӳٲ-Nz$l&[{;(z|DYB~ْL`7A (hD #%LȐU{hc> 0Q @{# `PhJ`Ƥ 2:$&%9AϝwT祗JS ENH7[~ s«kUZEK+&RsX!/>r@T2[jπޛ>ƯNB+T.[ #&äT$ҰxdL&*r03e8PDDO ENsVDBJGqh2h95:Eͻ> a\5r.[ Ӱ@Tk-Eid=D3u,΃=kq 4hh(4+Ym,;Ö ul)L 9Ї ӣ-&c;KŒ%-,xYb'!gDF>ӣBP:n־G Wg4uԋ9>La|4"Q ),h @Ѥ89 g(iP'[b008jKji0N8.YdF/d cG".H$CՐ~4Y%)ҎKl4C9 uLXNs"܄.`<3T;hF+ [9fo>a (\[-J^1 bV%L7$՛ j?@69?lk)-6($(+r6ɝ(,tQsq zX]tekC1 :w}Z(3ygfGk"9 uaX$74{N;~zxLsLJ7}%eۿS9R%` "#%*OA*62ϧ'Bb@op6ժ B(bBM('hnjnD4H+H%x᫋μ.hF&/Z/X ,Anƒ 'YPH!/15m3HH$ti-nhh453^JɆ.2E2əR6 4\R` &̯f&' '7t3=:IaXܫ6c Vrtx殓 B&{E9A 1뷆II $80ߠ1<7m#!2Ȓ⳾dfld!hS<ϹB,X^8*f" L\OBOB躋2+swOE$25-%5ɩ$,E'rT;S5WE}PFcnsF%pQ&s%X,On8P7t KIW?%$+;Ǐ.,e9OqZ<ôi\qO*JQ%MwdUp0NEh +m׈)^"?r HCv!0U(A/?1#qRu-0uC;qw@6?DaEOSKUc$eU5Z2WYx5XWXpX%Hw&$ Gg =݀HP9:/[kV#MҺ7J\KL2kQU>}p JYNAY_S"|AaiAdo$ƴq ÄbB/vc3c7q8S'pt vFeAdM'tU_EKfW3h# GpGog%hNWՍt2fsQG>%j-)r;-d.KSY)cscwVIHt4JBUf36=7TK՚`4tYwum6d>#vw7&iwnO\vPh + qY-z؇N ;(zݾn8bImENM&Ofoan-`m%*C-r|d d:0BF2A * X)GȀ 1ÂKq@LAUeɂAS.IN5tɊT#YcORxYg̅y|sɆ)p8tx؇w8_EyG NzQRr>z.{=QA~BY6Ę=} D?I?|~,6crR+'ff?9bwByITrwG bx΄hhpfz2;U<@3Z$kH{6$a*vȳ\y{TԵT~a!ieNkfک%W^qB =ȟńZuPڄ!Ha81 GDAΣi j:x U]Gz*=0LDn1ɒz.0-lx8Z.0A5!T("ۨAGpؖک Jdڪڶs{blm:W&{;KFwOewqYTQ3zZZ)m {zõ*3R۞YQf{v@y:a) oy/M(e7됖ǜɜ˭6Fn(㤗Y+;&ϛ!c-t%@ E %`9Eln$DC!<psl1bNRX7R\,WKD57H /"i}m>)m@PǙа|͓B?09ߺnn)#ps::S0ƻwƣbK[ ]*v-ѹM<ұNh ?*

ѧ(ڿp:<~j;x]$DQm8ge[@@r]kW5OWc+NS1~`#A4<]*v# &L,7}@?DYTX-Ac c~f^mYw\+Z2 0]]p,56\a-!ԽRM`(X֔j2[3OD=r&"46^žbS%FKZ=/tGT_?`y#_NU5;.>ߘBs$տUßi6IBH!h,^$t$j׭H(~1*Y,Ȟbղ== PP00P<>:BN6N2ZBVRZ̄}`PQIJ]<D= ],3Q4P >@,3)=>麭;:ұ+jǾl ՐR"8 a JMdU!zaW+bW_}2X@NYhI!lE/.0X6Bb.ydqD]QFD^W=[8YEadHYMkPV1;p l1]f28RXcMlFJi5r%9l}ڰwtn״NkvM6TG5م*wxt3my$Q2X{s-'1VuXe[E8.6b77+nt2%%EE Q.{Wf|2ˀ[_ƛ, ̑mģ0wf􌬜cRGk^,!wM#4y;8>MŤ;hgammcb޳ !nʛ÷s 4‰s4hDqʺ$h Bd1!E *, kh:Jp;Һ),Ű"e :x7%!1˃"g*܁ya]$FN):smƊoBK zG*kLSA!xcF9Ja_7n%DQ|J-ΙGFVZd$A0uAۜǫ;l\֯:o )[NPt" : */Lғ=e^:Bdn[KS&Bd$TalMҝzDĄtO7cXb:c >؅u aC2bleZ(CuVbp*'G:bԊ=:pM~ (x$|! vx;VJ|:+rYȜ673.^*Zr/ڭr]R8AL媉TωjJ8JNv22<,6ݽIs1cT*ndrcdP2Y5_C+ ƇL4Dc5iqF>-,ݍ1uP)zڹlLXBn;.?걏QoTZq 0ૌ*nT>6`9i$`)!1Vm{x8RT7Ǧ)rtlѱJ^2]} AwTWۉv<9 XId\b"E)^A\xJOKY(inz3ph5:Z>xi GD Nz\#yQGHYlDjX q5|XǢ(} ɥ릪[":ֲ6r8ie'Lu`FX]ɛwr'Coܤ'R|ZtA/ͩh[b3'3>#ТX n6'Z ȠgcFZx6ip2GB=S.Er6C<8;Rk[A2R6_ݭB Ҟv-[gg8'6^C<ϫ͋GP|p‚Kҫ"@t Ѕ0 E9Q0&q$l瓵reʋ >z;w|],bw;~jE'$Ilsq/cX7X^&<;σ>Y#笼‡4Gz=En+ib֟fua Gx.ji;}9MdZd5*ڰK`}A=<ƙQxkyx;3pbFI$^B^E=BlFm !-ZQu q@3 .8JxE  oE_U Y4!zX201i_1y\x͟%i!t=!x S  ϥg\yO` J}X^tJ2y A>8 R@hIdࡇ"9,C)͠ v A*3qQ"9) ͟_xda`a)F(Ef <3B3>#IfDX!ppce8n/<D`.0 = 8XM35XBEi Y#<d%N6|⧽N(B).)fXfZQU*BSQ.u8WIFNXyXxGK-Ҥ\#)%0D22.3XtR&BSF`IU$J_5DQ #LiB&LX8'Y;~;#)֑_Q8H*k4,̻bf`cGd jE ) p0+Fj4lKNJn*gfXej樚j2Ua*Aْ!s:FcYawn#wAw lvit+'I~5m<$Uʥ*-hk Am79+᧩h0؉-ʉkd*qq%` i" -jWYPGfn0.jlXtCJn'l"Oր.gQN,t.^*^ `Wj翀Qxg9g%j\z*,F)C)Aq@֨)I+^D 2ɚ*kmj޲0%,4!hvf:kU߲芒&hDˉ/8.rǖ*5dnoEi}A"Q˲ lSBeo 5I?EV=!bh%&hdAlXTj9]=*=Lղk&GA$faa2Jk@h| *rKoY}*Y(Zn_ b>jRn[n*&zjsJ%`X˪Ybz0)y"pv0ڀJYIf#0pġ[|źaqԚ"dPMM"+푂N]r 1H/ ÒӐ7oq87ut[w.: \`Q<0+"k VR@•Zhpm!'Ή([B^ H)v=,4^oޜ g4TZ`si*y8 P$QB31&2-,H ֪,==gpt\V%\!TV \;ݨ巕2Eiʪ `t+%prF^qJe?x`*1iILqTqN_)Z5Qvj_Ev\C-PN醏n2l=NpcYw%Zfy<0Os?du(^]uzA?}*í,0:bJނ'#9R#&&X:e'.܎gN%bj;Cxvk+u$"BS5nl_\jKM>;xl6&W4hh;2id5e*7$G~3Vu_i/a>ܓ qWo]yS̍xcIOr*̍x;zg8RtF*7-G },Z,0X:33- 485:NB)P mqElhO 4)iҒSO!e9W;ϳS?͌KҢ5/}AP[:adGiQBGywا #ߛ2f=}=}.XU[Rdn1HWIߣ/Jʃ$Yy?7Y Ɨ@hEaѸd6OQ$2TlVbC,.X~o8: AÇĒ@!$H01+,QѸT!Է F \\^[cdc*)`h^,12-mSQQ !qql8EWBo ȂCH+m1F;T30͋9#P ~V(MM\ CayCdҐ#`pFTM(`!MCǾ7VJؒ(HxTlӖ",uِ4RjgIKȦ܊A) GqLrZRoy |uv퍫!e_t=q`a`(KGٕ84(S)OB-5.O#C6; CiN!?cJih_vh4Hm:cwGX^gW#|nqlԎ5nx5_)+xX#/FdB7ZiXkն\vي&%H~z;Wq?$ ^3=`|Q=mM}^] *lXK[45<;9>KfِM^pz˙=s1ewZUziK ;ӇkTy$* `0Tj "Qgo,YPJ(ո$vzr<׺"qk^)<] O4ua^hBv4V5&4a!3yxȼ9dЋSr$2q _MB@4Qa#f·>K@iԘ#WiPS`v$æl@bɥ0YCFmiIFvILfRd'=IPvB$%u:0[Kv F*_b˽Cp.[%/K^p.eٯ" sWl&ywNaDxV4' 17 m s`<1/{Θ3Wb#(8&B}Z\-H,|a~eъ`T$&fFr@$HG%+eiK]RT3iMmzS;M)Qi:D7%V"KZݍ-k_ %R- rDrNQQ]KΈz5YM'l3iNQ vHghДLndc2;3KdOgTceWPjQǢ⎌ktk>d-3?f?Yk[ZVmo{SFKR )tTI"&We\"ѥt{ݮKkBXMtbexn|v-,j'HL,c_n"Z@ƹv!$F>xA`筇~S k$PC,cu$ MlN8N]~q]gcjͥ㚻z; czs8.wYW•\K)I`|B%;p˞R ?hTlm="KCpˊt(DBq=UOXf jRwwrduAɁD$"."ei Y{=$va2DK h!BŜ|mMSAKЪ0HQXFh4ӕ j_lj|[w} OC~2'ccl9׺;lf<f٩lI! Ttro_;[R1$}[pc1&x [zb;-῝tG]S]bjߝ8cxu^sݾݞn͵}'jGd{$ыfVڤ`;B(c:ZѴ1`mtaj=bvҭUUXǐk+yUB 9 bsJ.}{UGxWO.vE>n\FB]j>o8nMKГQ O/":4Qǀ)k]f1  J+=c{c=+5b=d8i==㦁=>̓'zZK_{9>708>TS[[)3UmsGb4Z0_<#'@B/4yCZ@ۣw@2 rZ*!C&]6>ܬ5>2>|Ȓ$ `#^Pzfđ3ۻcϣ+AB;3(4?QüqEY7/LCc+9 V +q%lB*uYZ!56%ХճCpm&#x:D 0Dx>DlCD/Aʚ>BD˰I$t3;7(<$zQG°K(R7HF,:a\1bj=!ѱf f&Fy݃IaӪ G,B 9GAG̰N/@Q(̺6J$V%ܙ6Rh3Q[(YZij^dTM ]]:]R1՝_1PE bV̉\S .֡MacE0~B+GC*) *a7ީc;cbdU>ԌshES)nd+(Y 6Hmu<(535e4_+7>eԾt_d޲]i.6&h ee:l@h>kQe[ZVivs.u~kz=̹ͮŀO^ |>567hЬ M{¤?b1@](0ή;⤙jbg=Uˋn^O cFkچnFVl)A&u*}O@ogODut@%8n"Opknfj!&o<|6Ʋ3z hG&2u[/RY5ޅ,.\D., _ZDXmxXQ8S9Z/mIfDƪql&F| f%T$iZ&Neݙe{f<`a5< xA.`J`Aȶฑl/VZr|"Q+S9&K@kDTr' w֍ɣ^/ppW3!Z$=tŬI"sZ̑tt&U_"g%/<@u'r'ֲn:d5r2Y,4'8p5=-psdNՠ\ϣ>?tk9>@.tBtaw.Sr_mM33`d {_v _|'p^ODj ѓdnfL!ޞwzz $+,bJz7 Wx/r (IaJ j\nbA8ӈq '`,0g&Hup'X)9IIyrb`0 i "Ry E YB+ 9V{9Yl|:zy ,AmJ= ͭ- ^ mn>^>>~/O_7]G.຅ :|1ĉ!vF+lFȐ H@eJM-! :4k̲J*جQ$N#;=jig %|5*C:sV[SuE0MNJ1#e X%Zj:b۹tڽkbe;LT*,83~ 9ɔ+[.|1StqˑHD,`Ɣ9&Mhs.@?-!3tH1x.U 4ZhmVu_OgKUe{*X"E]w^~`H :t<}[mY(mmcqL-Roc4!q!.PEF wWء| {B) .2dJ.|(_}@:^X?Vbe^~ QYxSjItaNZIg?tdOjWHEq;acf"jH"H#Q2V;B|ݥd摉J%h$~I}` kJkbz֋`6!YakqQ\V1g5Q7rS"NDh x+֩PnZxIl#NJoދovkIa=gnɬT!x):1!gn&]ur.ʻ`ތs:ح İ/9?,h4A[Gxm.g%ʜŒuZo 3%LvfMG`0AgG+ s#m"§}NOm2ۑ5/,'xLz'5@%y暿z+`G'uyс]ӝ .xWIm();^/<^Gw9_}u:Zj`:g}G>p_ X˿mKx5o l{.B,ak7'ip7!&E:!=m@3o}{k sb;=D+XåR)7]!tڢ)OY.qiI(HLxBPQ`+i\EV eW<>$'_QwٶL14yDLJsԬ5ljsf' (*ω{}p2|I:PWGHB,Buujezʘ(vu@ T9U cȸL5\:P`pkt]W Ǥ|a7gJՑu*Xh2w w-yϻ]rrV=Vޜ-`/}d.c+VT͖uxPpkݾua+$7P }(* 1KSv$.Oس!"{A:ά6?ZnxW-rCS{!3Enަt5.G UFBQItꊹOvZ+yln 8ytg:yQixg>Ы=d|?s 1x2 UM ` {.k^+!zz@дcDC)mpy~3xBBɗ["{7~Vzd\H>+| oK| o6V hیN4ǫqs{vW`t+;qJӠp|:ߟ"|#+vC% Q O4֔28uaK}Tկ{j/qZM[ еɞmֺVw "Ё=+;#s+_3)B3L"otoR\2Ĉß}c?Ћ~Ǻ#cʄ}Vc_ǵ=m:!r;ݡa~; mv%><{sIvvW|o]oOGiGy_h!i_E xH/$Un'r{HR7*)od($N6}F'')hoFe:j!1GLWA0t$Lʴ:T>2Q~CHEhG#44 w aU Uh ^H/g ' 1{Wjcwehk m{ps7dh=ȷ$fs%(8B/Gѧ%h*wŕW7JtGQK4@67TBȊN؄W| aX[_ȋ׆ex 1lxco8h7+pǀ#5|~)'ehVoRDሏ}o\x"sy[@ҥOt6 ؊)PxQ HXȅ0G!egθHʸnxu8wyh6nmؘڈ9ȁfS*Qp!P$5َh'k6X~x.8O Q)~  Ȑ "8gHHv;7R|8Cƒ9捆4dG 7N!>9Ut-x/Ș1yW7CaVpÃ=?=-N9)~YX_ؐ`ameqiIiq"Ǜv$m{X{W "Cd'>2Se0LD,KWHwa?L.I驞iuYMh=ǚЕ )+w#ٛٛ ZmXhĉ{Ԉ!9yJJ6PF! OPQI-v4CTg~7fP쩣;ʣ/uUt PwŸh9hڑY {%y/00m{(&ۨ[]jZvSxo Tr)ɢ(OTp8K-gUXfʨ*g]DzYWȋO !dTJv^Zjyh I -@R|OlrB&sFP"vPvf4\opfWt]g犮骮ʮ ф ZG٤(mJ*ͨg  1YЫ]Ц+aW %Oʬ*ʂy*')(aC86ZJ)cQ+;˳=? eqTʌQ Xڰ0 jf: {K-6 C:@"h@&ڶ(ʬB4I²| ?ٚxrt5bAkYCK4Q(z P +ڪJUaJz`œ^`GxV'd:$ ln ~+*[pFk4kkjDV +$渨I[{nc+ɨ/Zw6+۵˺cӹi :qT\i䷭Gp :FXJKlkE +9@۹3 3\oJgo5aP0(x Z3}X{^ Q,S,^ %̽!\{#|i˹/* f3ۗ+d7ƕÈVlƼ+Cc42jěđռTȉȋlA^ zv' &m=Wⱷ$9{jլ)+9~6^/>~r/mp\}ΤLP&qVX{P1karpԵNMXMqN{Q^]ˮ־ >-N&~gSEh'hxݲ=N?nB>vv YpB_!-& oRY[>05^yCM}ڞyi~n۳X_-~..z>-?5_=*>u%@KybB[pY}sgF 9xXNL(mBnv49%OܼBlޛ>RWspuOSύWߵ  &_a7Cc߭kڵO"ot-ut.#<_O_B_0_QZV~&x:iivq^yDD$I.(/(*1+:=?A;)/1LOQSO3Y1%\G)9?K@e)H((x : fywLL}@&Tx/3 F8bE1fHТDI4H&Rdm 2V&U/QrZjnN( 36XfF#=@4"jm߼eTS3[G/X@Ϣ]g@oƕ;n] >Ըo_#C IjKVڲ &LӌSx~+hO̒Bc y9Y^OUE]~\ ^Zd']Ǒ'W9gG>zu =t kBđi/2Y95ed3\ *PۏqƑI@Lq3R-RD S1,:;Ϥ5$91IG)OM{ȥ: N*s/b-@: 6R,TM9L3A UQC3Sq< oNtYC)>Zi}N(czuMRF12n F,yem N WqsMW]?LE6WU^ )VZ]q~75uj_ATH22d%K| ډÂRsPZy@0CYnaYiqYy矁Zo6wݣNvOA5őd^GJ jX!l:WxA!HbktI\0ǤLnϺ{K\ YO\qV!iS /jV_%jNbEtxGla=)H

y ~m-&ƺ|LEԎY8@tW,n347/RJp 49љNu3pBR^|#(<_A&ꉴݴfr#I2Ad7Û(DQ3!O%5iĊʤMlϫb Qt#$:HPcR&.vE}2 IjF5D$U*t-` st!PxH"%Xh8V;B(g21mXrIOj_7ToVazc5bN6J́5bAZ'5b:x'ZgvǮklGhuJ l~k29  &m.c\t%\Mtݐ\AX؋d+Ю{(oxɴ=0NNB'QKoY+ۚĖ$q[M†` \z<ո֝vѰ"״n ,*ߐX*.za(IÑDk-~L(jM$x& Fp4`tܭD`zՖ˛_bx]| _9͏C{CRp̂YjP9YA浒rQMEm(^l إt*.׹XxePx׽Sf*^wk5ZI)܊YPp/_i`9xu,a,60cMo[5OP5]qӣq]swu_Xau۞xÌҝPD7ɀN/]G p^l; 33l_Y :,ݤ=sH[ y;C'1%|\Wc7ӫxKvӓ.k#<jH03VRGp5jB Tb&I8q_VvŔ;ZlE%cF-dX>šCP[I/~ﮗ[QҞ}o}=Lgd쮖=M{; e]Dz2wڣ@xs=6x1 FWDpT-QU/f/0j/Rk:Tvm+P߈0M9в^of/¯ j~^ﶤ2Cڸc(PN+}֚8 бp 9MނJp"fԬ,PnͽtBJx#oj *|i0NpP!N' f Xan.7o00PPp  W#L-XPo0N0̐N6Çlh%غD}p0EOƽ\HQl:#*A2Y Wdp]ʌh1d^! r [†+nݒQ1]oPIqi#sqa^f1QsrP0$,(A(/l)f#n*u 1 *A20!Ϲ,MߖQ#-*C-M MlrkpR2A}>DqWp['''ŏݱ01*h1 -#+-G+so"H#wP +Զ+"27MiJ./gE/S/ |S0Ã0/ oR%o.Q2"2kA?3?ݎ..;70aWSH'9s1: 1}"AQLQA[;)+',3`>?ktG#@HE@OPtAW!t$,tluJK`'A((12AE)lMl3LFFy nrNtOGqNOcjPAK&8%It$*40K7t194CUD*Zڬ2ME1 UaGYONViD@VtHI@WwcqII}c),Y2;G;32MTGQMYTM׮U!NkUV\5]u]ٵ])HV}MPX3cQA!T< ZO mNk`6QNT8˃D%OxM3UkUk5TĕV]5vc9c=cUVeWMRQ$Ar_uY%r̶&ILvg 63۴|#i|a' ${Nzx뺑\ƩzWxς檧f«qf3ia<<[$\D{~U}Y? C<u%СՕ\X&oyEw q{aúԵJ4>#S0`}=a=CoE|@V=ldO(xl=\s;m{͜.\mS;̀>n0`uMKޝ$Oy~ oɹÖc>:罜}«Kn%7d=IUݵ}?MīO-%m~KA^>>?_%Pn#GIGϝva.DiO6gEX^~_%&zn$dp/7$1{K/EԵ /qn00̒<0ſ CV6_.fZ(_/1P'4}08+6{,ġk$ɒ\F2)S*T %Rř [ da%%Cd$e%fR)éjjkj,E,ɉA01qpqqq0s1435rus43wr48:u4w6:H>33m|q+xP!‰7rׇ_"w}irWȓ*Wl%̘2gҬi&Α% |`'РBhLDFTP Q8l¨(#kШ)D7MH-[=G%%'RF }H.d^ uõ Z@\zG0Eti9[C0wtgNoCUY,w" C7,7ŵ69};SْzMR};eNkOB'\ aĚ (Ԛb0~G#@8h6d<1Yfkь]gw덥ymv$gQ өuSџM?Il GRp|$8znU$BU:NZLT((C9QQ* u!H?Bw[0g[/)y(j["z^}DEE(ؙ#)mc696V*ti?d> I}.'$}8(B e(hZZABːQT &34عDV/%L1^jhD: B(*i+6ej; pmU@J}j tB7FtZՁ1NdJ>quZKL  =å+)SS^lER.^P7 :S])oi*QD;v3r0\a-$R9"2Dch]=pq,o6]R]ar0CaʨO}W&-y=T^ʮ~5̱-w*%HULC]Y׻寇34y@{)iI[LۻF?d2Gv:jkoB ozӟnA`ߝ.e?`,tS =IyU<'VV2 D|AL  [³Ud$uyXϕ ih|ϑ[t9ㅟ AWcοa,@Q|Y\ ݪ ݈xiAﱙfg Ɂ!h=F1&r!i oƲ! "!%[$,mTWԹԩTֹI%&!@XJ! 1 t `~ɀbZɀܕH)(OQ %1!2 26 4N#M "6& Pƒ4bȸAKeaU&9z"(A<~E)y*J$xʭYN,Q9b[YD"EQ13=E>#3]$ vG.|$HH$II$JJ$KK$LƤLdYp芫pIp~ :c< tT" R0eVY` d!/96&&Ź]=@#GޥeF^G$``&aaK@\cNA6*<7dYV%Bb:R.RFSb\`*&ސ |,ne&da_pg!Ie_g%r.le<'tFtN'uVu^'vfvn'wvw~'xxtCUcde2"8N",t|&jb'fliR@ tUVU#cm%J=(cJ@n.݆0]ELs(j)'(H.'ƨ(֨(wByz2Ng6N~#c}L(~r"h:Zg%VOT((qeYWd^MCJ['q֝q(΍7YaN*f'b( `#dzRf{:iY̘1#] %g*b9&c})jAyDx2hf8d텙WnZ.Yٮ씰P!Q cEVO>+;il$6؞>+n+v~t&Xͤg)|`e$bPJHٱ (cS (j)~D*q]Gf@ b(oo\YrP)Hk3Klݵi*Ƭ,͂䏞4Pr牚΁@} nSjk^%#lf%*l~iAn\YfW'm$L`ǂ]Rml V<8ޒլ.!:*J*,v fn+Yȗ,-,a8Nm^Ղj$#/.j>&䲧zV , ikΚVH~cZ-#J8ꪅA[Cd.+>7V) lf[>nGC1sF/tw&spuxʌ0 xNb6bo6~ZYj~BܿjVU־ӚVLRhXk[Yfa '&-i,2699!sV0shD! .6 '@q' u0xXr"32"w0U*K xe#)}wW1iokzoln1Rb)ӹcMm9# NJqY0, 0 3C#!3rxFs!S4CJ^P P\j2''+%W*o)&N>jn_r`_`p*1?o-:Y3p ?vt [6/6tv47{7cV_0Nw*+;GO#>RCe)4vYB>4j#.Owjh}Xc C7H_^miM1MoqCrH[36#48TIt6 p666_SsbGK[c8[rt'մ( /=[. :PLy3RGS{gTDz tĚWq* %g!d4q+SV$s6u7--gE[tsu]3A^Ggw3bv`O4{w`b0xw{d+ OzZ9"@A*Oo H82Pyc=2u&SvYLȅȲmn_L`01],5Z/Eeu[sv]C"^abx7y?6;6bF0+c~M6ӒQ_  &ME8?Bu-E-AV'BBr2:wLse]~t؎y56vH976+?s42J(os([smbfN.K+΢D7HLC :ΌL#S>5.O4N#dQG4RI'%E( >:UOA1˺-UWeUW]ѰGC 9=N lO-yqSgDF>eqlL3&"lG -#\^!4^}kmgQmJ+Or)ңd624txvg͎sNB-Pd(!C :r͆`SE+8c7F/50SY8FC-DZlEU_n5VW:HwWMYe"mMyG=vGT [l[]`F*Y;qSKWu%[yK'*ohn޺.q;b>(NQz~ H/z2#-kYg^MS$<{n[:q$Nu3>ՇWoݾ6;?[8/:o"7@Ѐ`dis" <$ yF'AAPW;`Hs]D `"aw k)R. &QBߚR%m|G7{IGė8<1VNvы_#Ix$TEpsp!Y N hA[P83_^U+jh'BӠ \tuOs ,e&rp݋W.ԡ--KVԢ 27L>&4)ME/l& +AzSQp/42Xּ懴*n+ꖅ,dp(#cG0MGoI}oœ 42(QozU"b4tVK&6hmp@Enr\6׹υnt;]V׺Ůr5zVKWpj&hWe-5Ae1˙ca䕭,FT 6\\.wN--kXa>yİ:\wx7nJU/~0qX?V,n;c7qub!%8^NCt;vyDV);> RdV0Ф 'k P`WȂz'/L14u2V;`L՟Z3V {ЇFx@-:3v BI?Z"+5iNwӟvnKER,y79Dd̨R3W(,u~C*XU+ANLbQȯBMUGl%Xv Jk3p|=]E ȩ`:.]̢,pʤ˖o[}ՊyeQ&Y`|=ٲ^˵d;GOM,~V>KW[H{FWջ~éNE(]z^v9L{ @Uׇ/jbrl6~UY3!GGc6Y-wz+?B,}!lܧlP޷Ji;*4Pu'5H^2|8Yj^:.vnJ/ ?V$UE @~⧝d\C͔K[WP~;$sR=a=S@=9񽧫帽}DA%F۽~#&"sC>2!3򚸒rWk&{=ۋ:[* Àx?^ʣ ̨lm3cЫ0r:/+ <Y7 tHA#:3!>>ĕ6bA#!8[80[>c?I\hSb3 3K:A) @{+9@ڲZ$1x3Ñ@zȷ 4;af(Q?F@ ѩb/rrGo'!zI zx<"DXTa7$ I[-Sd$ɪ % I:ʯl%+C q :)$ϩ˼tB(Dܖ)BB4עJDrbKJl)*AG$! ɶrESIs0M!2٤ڴܼMWML9M8bGO' OѤ0 CrTOBM'NAqפ 0:[lλ4|< ;HaP M${Xyj,D$QLlOtO YP 2eQ";sҀMQ PU4OK,ܚ@ rQR9\'M7EC -N ]˴ =  Pk΅sES ; 69bB,D,Hd;+3"#Me-YѬ6ؔBcfTI*'R4Rv UR Ѝ|P @TݭܛU9Վ1REYUTPQS!;JfO=f?)mQ;m3V}L>Sϕk!,EE@-E$BELMŽFcQȸ)ReU 7et7W,%X=QXUɅ}XaAX/S2x4J/Q,emrV4)Sab# qE/VD,,=Jk YT,!uS% YLz%N{Ts6UTNŭdt(U T؁Eذ]w{U+Xym[eۃX-aմ8j/dM͓5ܙ &B功J3452Ml;&-Qܞ\u僠**;0EMq0`Ԃ|J@'%}w:˴ : $];C%-^%(M^:[^]}k"]%-N톍>9" "sZ{32eYլ4}\ m,ES\*'í@G0ZmiTmSZWIZEPصqOe7[u^5dUMae^8YeLUU^^D[E({58\*(K85jExr(iΗ¸)-WN`C9?C=yštW-LWa` ^H E1[vs*ހAЋaD^;w *aadDΗm(S:BV^nsf|gI^L^[vLHMgwfsA"`QG>ATʑa~ ͒bYVZq>τ/ޖ0#iȌ0PʊeI"9L9f<*|u@lHb L\CJ35f3 t۪lGNa=۪aJaZg&g|Z>#CZh~ p}egkJTh>>WMYveB_c! 't҄ךir$dP=^` n۵%Q٣jձZT[]52䀕`WNسfGmL>^}nՈx^1m)8]VkcD)K%Q[Q<5nӶef"\ZCyuR79J%jp^ݓ=KpbTjoFN:}}Rն^ձ6pڸ=dnmq~V[[nUL -E>$r o%oUJWn0FlP˛o&/yt`DZ#8fR7@٠ HtkƟ=|^@fXعQ^?{%Un&F&g{WP >V˙rM2,.ָ8\Of*_R/Par`]"~u:&pC"a̓JS- d_f/Cfjsf6a4cgVJe/TV erR ;vM| "'!ul p__xAi5v=d:_>=(ў7 곙HsC7+ po/rֻ_xf#*\G`h '*$KPQKpT?wFvǰO)F<;_cm{9| vqB7yCy"mgVcO\ϥ?Q SQ؁0 ǂȿȧ&&_͘LGdzvL9KVz$8x: zHv{kv;]G(@Hi~܇kg{Vwڿ|eQ=4kDZ@əoO*yyg増~[q>|ę4nb@q&b k\-s>R^!,E"D6`fzn;֌h6e36_qh|l`z~}yy{\""Z~WY'Th$$%%%ƻ$B VFB$ŭb5GÇPH14B*jDHdx \h<#o4b44dɒ!={& $RlJ5*Dt9"ϩu≓ J-SzࡐExl zp[tpၯo8d\F.2y1!QrY#&/@<#M0D+r pG`kL Wt$wUUd&+/][J55끗⦽"q;Ž8*\$]Ep{#f1-%b˟DAS_Gq-nT) Grp!X X@c7k@wA ft; k H!U.2F"wn״JrIJ[M?ykj޺bik\bsK4Q &ބo"1e^{ftJ3hJ@_'?6y vJRqG̱\ċ3!O+KX>J}7KaM‹tSK\Ntr&4ryc-˒Vo&M_~M)sTL' i) 7Q3_lyNd @Vle s:CXw.1Cs0W!, J)>WPb2iD8ٴI %)ElQZJeC5y Fj6:^(}d/?ŔfQx1aҌbO3{oV7G S޴89պl%ΪjjXT|1a 6xI0r1G$ Rɶ& MhFӠ;xЉ_5n/L:teG}XZMJdkik2bMz,1O4,$:6¯Q!]̑*.hats1Ԙ.pf"4L ea^:W+/* DGxo>z.41vz2|+'-LcDe0#m0gE{`O@[4-f"cj ]W)gf}cmƻ8vVF ZV Y%Ԍ dMvs+啉^Z<_Ew ˰RL|,S5ؘwv6yR5S;%[gϬ-+2vjhavTeUb\@ avk?V ⥵cQViu7]//Qib}՛91-9 {~kڠW{$92 #1xeZ-U80g{߁0=qoHD"5`nVl2<%5xX q4'|<EK"0^~v3>v9x ;;|M΋mnU_VGpee =opRh݈40z͌=&kip;RſwU^g RW >7V^- /#1ԃy,W_P}h!pYn[{CBB v,A\aIȷiRVXVUgjIt}Spp$}S$Uk;hDQKB$_X~xTyxa_`rNl# Xfh#cS/{͠1 [NPj* 'h`%p4&kG`hP*Q'7kdqUX˒<&T~V6$gk5%yWldn {(`3Wh_W,将x-Rj uhvg#Uvjȋ2XԨPJOJ~8s_wׅTfXMFltHxȀ7"^e|$42i Pvݠ|xx¡ pBW`X9 ِ-(~W.?XK~"ؒ]ȅE.Yoh n]5j&6S\ "w:Y*&|OCW;(q{ 8Pnu%c7B_h. 7DnYO8} #_HД6yVyyBWiYj\i`b dy$x؈Ev9pir98ymny){bsdko1f<`)c˸jX% 5PҹoXmlttd3Y T%!%)e@ UL#JIȹ-Ȝ͉QЉ)9eQY6h0l׉vsyux!w)Yt961鹑i0b5w2IɟmW$٢5 *ksg x()RQY)Fypl(6֡Xt˖=%jovhP/ݠb\DbQ @:-"QV48LzkOzlqi+L6̄?^(yٝ2dzTZcl@AȪ9+6)ee#uXK&Fʜ'R|.^y*SZtτf_T*7TZJN9l+  Z;j)6(\S悬.()^ ?`Y}Bۄ/'f'ʫzZAǛas&{V`*,۲.0+;kWٯk[7jyMW)UeK+.ǩV1zR[z$b#-[O$h`A9hԮ93d[lB*~f+xʬLg@fF˳KˉM+OKQ[S p3nb{Kh%3Nh!3NT F׍ `Ӷn tzk0{ {sk BAIz3T ۪cg5@Ἒtpa8Lc;hڛ& ỽ"9䛽ۻŰˡ*k#A44t+ p3* tԵJUgzKEh3k:ؽ>.AX#Ij2+- /ۿEBWHR ugx@l.6UR6sһ ̛zbƢE 53˪c躵82u?sa[ [e+ܘqmǽRt!ʙxǞLz3+l8 +w%3 3ۇ8K*._j rLcɠìܾ0<çKs/fƿ\a#GĄv{i*!s5bUٓ`)A42#d͏sSDX0L(LI6{ǩ9O^y#Ap,=D+`Ԭi܃9]&4iBǬГLǭTNH'=Ւ1QBѭ}hb%ͼh a(Q֚G)]vl QiMV K-Ve޼n=\I`0ְj,5˜oգG T+@:Nk ۭ]K>=ۯ-FMIy K`ƎMՍZE<0aٗ=ߠلl6# \@Q"[YB= eK .ЮA2bpݰ=ܪ|ĕ]ݘ}ݰac,T<0}x ŷ[D}%^HmߎR]ؒ gnm u- >IL-<L35޴MBvܵU.2W.Q+)1Nl);e>n4RJ˭ DUdm]l2KIϘ;@L v]\<ɪ¯mgMvѩcE)5u ;z~x@fʴтI^I*Oc\ ևqW횛ۦ-)\n |knRNru~ړ1H !.!싞c-#ŃY|oh{7=ټ RKϔ^ ATL]Q[us2?7_F4}lnqLL9* OR?T}*X`8/4?j jlnprr2vxz|?/X-Hʼ%okB'a Y!"$_)չ1%o=Cσ!Kp&O$;@a!$ChT@#2OQjjZ?~Q/h/a /C@pPch$, UD:%+ /SL"xluח{LJq2Rr2R.S 3r T6Vv6v5@vUwW㗘xVy9WxZ{VD[|=]]75}]{^?_`@ &BַTD9BQ&OBQQt.n &lDGOJ+ ?~ )g"v.g:,h(F.UzPУI:0BUvMQ'ٳg"QKƉ]4$8dY9;ɕlw@cCwX {v۹;}*)T[q. ^wR;0fZW2{"P0>kǕu>8pUZ h[xˆ AhB8 J@%@ɹ"Yc pF 9G)j+Ǫ𼜑 0+-Ʉd) -*LA\Zi8is#C)3EN00fM5P9=hʡb[o{1XgmdNjr#}=պBnM4İ)d];/7*1EOls:>ԫ2ޔsO 1sETTq!vCUOH[t vtSP>xS#q5QuQUXmEr77.#1 zTc |e [9>@Bz22L9K} g/ N*Z2 ?nBFOzu=]˽j;^rў_F8PB5oE5"&b0XaaY;J6yꈥ&F \'E@,W?&Ј1XHDdV3jcI;7*Kr=^ӁUMoyf'~A.VeXE47VD@bNpBsihJIǂ>$X3'gɢRC}QKpӶI|!dJYҭ-|&%) 2T g >T"4j(Q€L괘T>*C/Yժ8¹UOB=ۄϯSKi(KURRQ1Ȁ+V`U(5XR`jWMS2YAdVǦc [+`VY3Q178y4=v)k1*(ŭWL!\ɣn{[ =)c+a~ȲlcU.,dµ ^J.GԮ;$b:P"֯_)^G?QQ%<` 7 xk^7:ŗCnl445M;6}wk^f] "h3^!c |M+dw3*S'&*X'[ˌYwgBJp¡w UC[8f "E8>v0t[r(xzIkx]|k`%dZFmcD| iOuM?X돊K2ifVr̈́paRQ51zr/ OЬ4TUDv ~8[.LscbrqX4r8o52G{T$A7i{^)R~]oz;#ÖOWZ7̔1uoZ8mX[k/n=gX߇yLd#(jağv HMT yw}I?z( W~zpZ}\7ޞ .I[}{Uk?!_x<;2/݂!=(c\9_{2֣))xw|1._ޕ?:7,J3+=eTZ&rVNB IiiN-j/.o4i]a/0ˮC \:IG]^@btf~-讣pP A /h :&+ } m/pȰDJhߴpڍo͆ ͜7OzOnxzpK j2r0ʊLЇ60|Δ0YO誽$ ҭ. C ˈ/n1hg뺮< Ű uB*]i600ALz QT0Y1Ro/%mllDnMiz ȩpa,ۀ.. P R6 TQ +2%`o& %s- uQ#uB( #qQ1N1>N^jUNOomA#Q&#pp{r. **R*ˆ+rnB ?'62#,IӲ" k$$Q.qR±/4xo-`L0*12+Crʨqf8- /6--P0= R/S4P5=2/+.Q0D1$ 8S83N+ 2 P l?3I3R3S~1v@J:5[<5ótc3Ɗ667I<1E8s8< S@JBR;Aw3/4<4<+xi?7H@0 "3@GD#4GDAWTEWA BGCBÓBB'IP!f:h2 r˸HKI nI(zk4I9I ETA% L[3FiFAFF) G}I\⌄q6 ,(,6 O'O{OO,P1sP̵dPPOUtL'uaRSLUL;#M[sMs GC +=-,]U-s:e:KG@#VUAR/uLX1=-5QLS` 84N)mNDU[GDNW K=hXuD\ɮXoL $ hJ5hbSXFTkUP ` U``ުBhE v`~\E+$362:U5FH 5%W6N*:u[gfAQLfb1vB/gKcc#cSsMsGܪ R^5 g9y5V4;Wio@JjuW ngS}l+hg YhGW$iG[r`l9>`ߚCəZWs4#tJK#+ڡumT-'Y]y G{6?G4, ! OQ PZPw):!\QQ+L ['ΒyOқ9ZTIFJXwmTqlE2w&04:z{ٰT Z܀#nי+;|aYZp;C:OS[yic+YXtDG5' 6b.%v Euaŝ,I׬:{_奿[ۻ[Ǜۼ[כ۽ @;e.8Y$@-7@#CؐRDRڻ?'+/3\»[;G0IߺS: Y,W\DK? Sn=:?ȋȏɓ\ɗɛɏT38b$~4G) T ;y/#\\u6dDւCYݺz =)|h2 h|n|r'@:?C]GK9S]|׋|;{C }]o֧b%@g$ͽܩ ݅,f>eHJ]u>kEp~-O!5C9~~&'_쿾%MQ$g=3>_>w>>,z]U 6UzEʘ98! ,޾^e1(I~Hľ:ӘqǟIƧʮ {? $>$_dT!H(QdJك:hj$Jʥbqh~t%$5tqm5)= "&*.26:.E^ TV^"x=v4| Ӓ+˂6;?CGKOSW[_cgkosw{". (p "Lp!Æܕ2`"ň/b̨q#ǎ? )r$ɒ&OLr%˖._Hqf1o̩s'Ϟ> *t(Ѣ=gVDѦѦNB*u*UJ/2u+׮^ +RekMv-۶Zϖv.ݺvK6#\S,x0†#Nx1ƎC,y2ʖ/cάy38-z4ҦONz5֮Mma6 گoέ{7޾ ˮ-7Ə#O|9s;micropolis-activity/src/notes/Dynamic.tcl0000664000076400007640000000600010724145723021036 0ustar simcitysimcityoption add *Interval.activeForeground #d0d0d0 option add *Interval.sliderForeground #b0b0b0 option add *Interval.activeForeground #d0d0d0 option add *Interval.sliderForeground #b0b0b0 ######################################################################## # Dynamic Map Handlers proc ShowDynamicPanel {win} { if {! [winfo ismapped $win.bottomframe]} { pack append $win $win.bottomframe {bottom frame center fill expand} set x [winfo rootx $win] set y [winfo rooty $win] set width [winfo width $win] set height 670 wm geometry $win ${width}x${height} } } proc HideDynamicPanel {win} { if {[winfo ismapped $win.bottomframe]} { pack unpack $win.bottomframe set x [winfo rootx $win] set y [winfo rooty $win] set width [winfo width $win] set height 332 wm geometry $win ${width}x${height} } } proc InitDynamic {} { global MapWindows sim ResetDynamic for {set i 0} {$i < 8} {incr i} { foreach win $MapWindows { [WindowLink $win.interval]$i reset } } } proc SetDynamicData {win index min max} { set MinIndex [expr "$index * 2"] set MaxIndex [expr "$MinIndex + 1"] sim DynamicData $MinIndex $min sim DynamicData $MaxIndex $max set int [WindowLink $win.interval]$index set from [lindex [$int config -from] 4] set to [lindex [$int config -to] 4] set min [lindex [$int config -min] 4] set max [lindex [$int config -max] 4] set range [expr "${to}-${from}"] set offset 80 set scale 100 set low [expr "(($min-$from)*$scale/$range) + $offset"] set high [expr "(($max-$from)*$scale/$range) + $offset"] set sound 29 set title Slider$index set vol 70 set chan fancy UIDoSound "\"sound replay $title -channel $chan -volume $vol ; sound replay $sound -channel $chan -volume $vol -speed $low ; sound play $sound -channel $chan -volume $vol -speed $high\"" global MapWindows foreach win $MapWindows { [WindowLink $win.interval]$index set $min $max } } global MapTitles set MapTitles { {Micropolis Map} {Residential Zone Map} {Commercial Zone Map} {Industrial Zone Map} {Power Grid Map} {Transportation Map} {Population Density Map} {Rate of Growth Map} {Traffic Map} {Pollution Map} {Crime Map} {Land Value Map} {Fire Station Map} {Police Station Map} {Dynamic Query Map} } proc UISetMapState {w state} { global MapTitles set win [winfo toplevel $w] set m [WindowLink $win.view] set title [lindex $MapTitles $state] wm title $win "$title" wm iconname $win "$title" global [set var MapState.$win] set $var $state case $state { \ {6 8 9 10 11 12 13} { [WindowLink $win.legend] config -bitmap "@Images/LegendMaxMin.xpm" HideDynamicPanel $win } \ {7} { [WindowLink $win.legend] config -bitmap "@Images/LegendPlusMinus.xpm" HideDynamicPanel $win } \ {0 1 2 3 4 5 14} { [WindowLink $win.legend] config -bitmap "@Images/LegendNone.xpm" if {$state == 14} { ShowDynamicPanel $win } else { HideDynamicPanel $win } } } } micropolis-activity/src/notes/BUGS0000664000076400007640000000253110724145723017436 0ustar simcitysimcity==== IN PROGRESS ==== IRC Chat Server connection If Numeric Lock is on, Tk ignores all mouse clicks! Ignore NumLock state. ==== UNIMPLEMENTED FEATURES ==== Integrate sound server into main application. ==== BUGS ==== Wrap year back around from 1000000 to 0 instead of 1900. Ensure floored arithmetic in code w.r.t. CityTime. pause game and change graph mode from 10 yrs to 120 yrs. graph does not update. colors in the power grid overlay are not correct. if funds negative, then current funds displays $-,600 earthquakes at high speed slow down mouse tracking lots of res/sounddev processes sitting around. errors on one x server should not kill whole game for all players, just close down that x server. pan cursor gets displaced when it hits the limits. panning needs to be easier, some shift key accelerator for two button mice. Panning mode, so you don't need to hold the button down, or lose your current tool. function or control keys to switch between drawing tools, that don't interfere with chat. Need an official way to cheat, since FUND does not work. One armed bandit? ==== FIXED ==== option to turn off alerts option to print notices less frequently blur the quickly changing date sometimes the date window stops updating sometimes the text buttons stop updating sometimes the graph window does not show up in the head window! micropolis-activity/src/notes/InterCHI-Interactive-Experience-Proposal0000664000076400007640000001066610724145723026450 0ustar simcitysimcityMicropolisNet: a Cooperative Multi User City Simulation MicropolisNet is an animated interactive system simulation game, providing a set of rules and tools for planning and building a complex dynamic simulated city. Several people on different workstations can participate in the same game, cooperating and coordinating their actions over the net. Working together, you can zone land use, hook up the power grid, build roads, bridges, parks and stadiums, raise taxes, and even summon disasters, causing the city to grow and thrive, or crumble and die. MicropolisNet features multiple city views and maps with overlays, simultaneous editing and user interface interaction, "voting panels" for group decision making, and multimedia communication and annotation features ("bridges between players"). The multi user interface supports communication via three media in parallel: text, sound, and graphics. It includes a scrolling text log for telegram messages, a networked audio server for sound effects and voice intercom, and shared cursors and graphical overlays for pointing, gesturing, annotating and editing the map. I propose to build a model of the Amsterdam neighborhood near the conference ("bridges between dijks"), and let people walk up and interact as they please. Experienced MicropolisNet players can participate, using the shared environment and communication features to demonstrate the system, advise other players, and coordinate the game. The purpose of the experience is to create a constructive cooperative virtual environment, where people can collaborate towards a common goal, take part in group decisions, and share resources, responsibility, and the consequences of each others actions. MicropolisNet is robust and easy to use, with engaging interactive sound effects and lively graphical animation, so it's fun to watch as well as play. MicropolisNet can be played across several different makes of computer at once ("bridges between brands"). It presently runs on color SPARC and Indigo workstations (and is easily portable to other Unix platforms), and plays over the net (but without sound) on other 8 bit color X terminals and workstations. I can ship my own SPARC if necessary, and I'm trying to obtain support and a loan of equipment (hopefully Indigos) in Holland. It would be useful to have a high resolution video projector, visible from the other workstations. The projector could display overall city maps, graphs, messages, statistics and other global data, so players don't need to spend their own screen space. I need enough floor and table space to place workstations where people can walk up to them and use the keyboard, mouse, and microphone. Most could be together in a group within view of the video projector, but others could be in remote locations. The workstations, network, video projector, and posters must be set up and torn down, but none of that's very difficult. Thin wire ethernet would be preferable, and would require thick to thin transceiver for the workstations equipped with thick wire ethernet plugs. Once MicropolisNet is set up and running, it doesn't require special supervision. I will attend and demonstrate the system as much as I can, but during other times, unless someone volunteers, it can run on its own, as long as there's enough security that none of the equipment walks off. I'm presently implementing MicropolisNet on X11 for DUX Software (who licensed Micropolis from Maxis). It's mostly functional now, and will be ready to demonstrate, but not yet released as a product, by the time of the conference. Soon I'll have an "Alpha" demo version for the SGI and SPARC, for limited distribution to INTERCHI reviewers and other interested people. I'll make a video tape as soon as I have the time and equipment. I've given many talks and interactive presentations at conferences, and run demos at trade show booths. At CHI'90, I participated in the "Empowered" performance (giving a whirlwind tour of pie menu based user interfaces I'd implemented). Last year, I ported Micropolis (single user) to OpenWindows on the SPARC (which won "Product of the Year 1992" from Unix World). I worked as a developer of The NeWS Toolkit (at Sun in Mountain View) and the HyperLook UIMS (at the Turing Institute in Glasgow), both of which I used to port Micropolis to the SPARC. To implement MicropolisNet on X11, I'm using the Tk toolkit, which I chose to use because it's free, simple, and extensible. micropolis-activity/src/notes/Micropolis-NCD.gif0000664000076400007640000045070710724145723022200 0ustar simcitysimcityGIF87aL?????ff_f?<<tttrrrjjj?=?<\DD & p,@p#ţ1D:O Nԫ5z_ .9Fo =z}Jܠ` &DH† #B=%ZԘbǍ9 Iɏ(Gx˗0cʜI͛8sɳϟ@ JѣH*]ʴӧP,9u%Uʵׯ`ٳhӪ]˶۷pʝKn۱vw+޾ Lu[1W#jW3cެʜCk-4ӦS^5׮cÞ-6۶syw |}UqǓ#_9Σ3'z˖QkνP<ӣ˟OϿw^& 6w`>\^!vᇂehcdE,. p' (8<(#TTu)ݑF&J6X Zm6ceZv^ bIfjn rIv)Vg 蠂J衆&袊I"RXcVj饘^0Q2*jjj*7yƺꬲJ뭶gS:1+*Lg%5F+-N}fU*.kn UT +k`G#,ħ& /pyK% yO:qoq r|][rr,r0k6r%[%{a~dh |l)_}ؼπ d +X8C&F] "цX>-щ.9]N@"c&=,oE\_¸@W78>ǻmFtjs"hȃ.qç%yS%ϥya}.< wGΙɾ'-:GNnWZsh~;ZQ'x~Ͼc>և[Lrw;7حnAޡE/߷G{77}Fδui'%!idtGRDP1(01؁"yHE("(ȁ*&(h׀}W|2Q#{Y;PB8DXWbHJL؄NPR8TXVxXAX[8r%3 @x]fxhjl؆XXRPpgy8h/9x DxR=3X8{"؈=W~r+,*.x0uWx؊8Xx؋gXxȘʸ،x6O"OHnxؘڸhȄt8%x!Z蘎긎؎xP\aWx1S8Y2mrH9Yyّ "9$Y&Y% y.0294Y6yfȏ@B9DYX}Ғ8LٔNP&( RZ\ٕ^ّTy-cQfyhD#Rws_9tYvy$I+9xٗ~Iz|pi;rSUI9Y a7Vyٙ_4)ryN)"{b9%9%IɓvٛYitW9ٜ0ɚvA .≗ݙuQK#) &0Y $ПP: ̩8ɞ"iʟyE  0$Z] h.OFYjz0*&0z'z64Pڑ<ڣ)CEj$R  %ZSJU)آV /ٝ)_zj:z }:'g Z٨)@jYJ\zI*2iZJ*ʧ:i}CFʩbej9)Ţ٧!):iZ*Ċ_ J zJȚڬMh:*I]zʪڨ:ʖI*J溫* ~J*ګJ:gʬ@C'Y;{ 4™ @ʰ. :Z Jj*N ڳ:DkF+嚴e˧K˴7)ZZz^h !0AZ,$jp˪rʵ]@:w7[Z۵:J[czi ; h:T[5 Zˠm:;m곪{ʪ K+ZjRIj{?|;!K9Ixg ˬۮԫHkڽ[˰z*uA[ ^ oۺ99{+K`](۶+ Kz뼵{^ɿxܡ|뷿:ﺭi)̶ /<2LM›|û$Lr߅KL;ʲ;aêMͺȜ{O*,ԆZ ԏ\"5V ִc-& z|iMҨА̗oנYI׀MuB,ցrj^xЇ؉Ym ٔf\]I4m̜uׅ-ڦ@B}ڬ-|ڲѳ}M&7ٸ4Ţ)9]}ȝʽ=]}؝^]=]}܋GdŐ]}}>^Nmz' ޘ]ss>^=m;~ą$^&~]\(.06~83K]9@<H `OP>RK~XZ ^`\ 0`>a\]gBqiXcNz.|n$` PzZ|\nS~najݽ)JN NmN^2A볎kN.]c>쩮 `.MaZuE1NХ^ @~n֞Υy}Bl.p  p^彞^epOaY^NW.wޡ?:AJ$PQn..>o_cZ:Tp_ZN>N. ?nVYL~B d?~Y9O7K^&Xwu9oc yޮCEGOIo4̽3F.놾^j ?m_WKp䈯N)!O/o/1OO.?c*_~$pg.m;~NR@iiT.MTFCY}JPt ٌe9l/B,$*Dʤ /OQ$KI Oϲ/oɰĄ KA #wo"#jC9z:9[<|;ڛ@}} =_^I_=<%wO s*yV @i)5k>j4Ɉ+UF],&; ُ;usWFC/M̎B 񜢊 a[nlX\P&/i-;e _Ѣn?a'Q-IՅ&|S= rw[ ̸q8Ң#nLI-P׌6qa_6w:*hjq[.p7u=Smȯs>`2BxhåeW#|ZB)%8oPnU~oeZ DfTTae Rݪ߽%z UJ^{eidSŲa1F?vQg6sn։G3>%*jHr̞qZK5, 0k!ɣ'@O\E8y|ihl:rԦC^FIVm"@WC>(k-+Vזp#~=%-h n G Ƕr,[YW8 cBBt6T&w`hU0&`q Q<  5OXQԣY@$wF #+ͣAy|@Ġ 񹏀v F8h>E" ]B TؔBuw_[ $I%OXGd~-#LuȣF8Q#zр MH iG?J q؈Jǒ7O%ɈGP=5A\:SNR괒PrK]IeP &-tx.y{u-4HҕP L` L{loZ|G]<-"2Uu:H W9I\oٍQla/6X*jԐ,~l~Gu|WfJ-!κOtp1ihjD)< !p+GEţO%.lY*Q<XԵ)8{ڵS4Ҏp5k I =klHzbtz(Mn"tΝZAV֛;^brhv^5j? 4-w%mn̓@j_N\q6Ԡ6r9U%\fV6~Kݻ%c".uss"mIk# AdA_SNjjZߟSQ3t$=խPPȝb/bF\@b/d v 2+("' *"± h5f0* ͌0MwȞ*8TjNx%h/`w9dc J #>J?쉠J9+c?`H =ɭ*$Q X0)!$ kt"/G .U0!. -J#!.A\A\R2bAjQK/Lqf A"Ls-fD+ڤf~+3( gND33n1=-Y-!hw+KD/ZhXѶ.rҸZA.g P8bJKyvBVROxKKSLOυK"|dDTV4JqmtLc+IWb5DMKx3&PMwaU ӪDⷺAL 4JT^TITKU]Վ4INWγ 6- hT4߲5߄~2٨5@eő9v7Rud.OĨ]UU_؄BLaBrY`4{4v:]ϟ,pKnJNJV>Ne.\0lZ&ySQX%7 '@Wwz]Oyzd[_@EYt<U24i%Tb@NE+n+,%ՀE}KH'@* $ʵ897M-m}y{ݗJ$o%h9: ! ;';8dHnœ!  e͸5mLz%P6ۣ=oOO:9Vx?Q$pFGŚ 1H:ܽq]T'kgn5$Xe(y' ż:5 [JY*i0^[}ݒ1 "|T_5YmF5> ſ4| ;]h@>b*wqjV ¡b<*JyBM$6킿["\`zMB^7!eqnB *"*&B8"&MRVuthp^mmv^dd8BpnpTʾB<4TT#/>@?OGS+pd[?6(kܒhTnT(W':^7C+C5{L4XXVM5m@i4uMĭKLhPj8Tpvծ^氵i<;ľݍ'ln. TX˷޽OhK)Wj3jCwCjC1/v͈?ʼ"iޔIUv%Y&ֶŁ~_d4t/IDLCJd vg4![&_c HBDl (ʖ00C[c首UwjS#)%Ia`@oi i788HagePSi|D\3:aڄI! ͌@/ 4IF Ԫb&C U3。4D‰1AE%fM! `K_*Su,oB%(C;P&±pzMa&PΝ + ĝl1N"C<'ڥ.P"fV0u5A%/Eny{\a^ޭzC9TtiZ3ܒn+,sLPlAdP `s{ C[?>X.CK9J֩ 9_ϖeDb~(8iOp49 D|)Aa=JC29n;@F^j3 or#d;[tn+TS Xʄ$1Tfws(Z_]#ρAվ_CW!-&e? H«aqzf}CgaI쭣rkk^BeTZӊjdߛ4X٠6,L;[36 у,1$plAN5%fKm7Y^x`,>nEQ2XnBo6$oo6nЍ:"ct0(gׇNO:9x%. _+՗Fv6s+/Ju4"|rwwCw]hJtsoYQ8䩤&/.^(Uʠ<1'ap 6ePs,=MjR;f# xuqkgn.9ܡ N6C:~q'Trffug&qmSk߬\34YRslbf,T+a: {PT<dA(uƇxZmB DyD]k\FRHEktcP< C Yj=ݵ\́aKUٟZ`eTHĚi[Cұ?hA}t`q@T.a`^> A^ 810[i]Lրle? G8O0S݅YU`ŇV"ǀ٠A˴Ҩ"&&qE 9Ma饘Mс%qՕi.IyAWID9]12B;I-(4@[M&@ԬSnn\[a ę)"iO؏te|ۯ\0T0 A`˂"Q"!٩NV @a_CT΄8.D"YEj=$L` ՜$Ι$Wl[\;#KVϾ^\BAa_.I0܈9}./&O8B(16~[[(ۉc#5i%YBHl`S-[nnfokX܁Kb]AA=F \^NJh=@NdTh܅]$Q8yo<'BE}\G}ɀP9l$'1QU!MnٞIatP8!5F]A(d98X&eUr]a8 l'x]y#S7^6_]U8"i6( ( $VD9I5iC]BɞFQ֙!yD4#8Z*PۦIcrE4Cy41E^`H^T2'I3@.RF^qCf*LG xM$CAJ`Rle``$H$B-vt<=#7:H9d6?Uc+i۹zAUƊxpl6!ʦmIS9*].]ؾu_v -ym\S8DIq”״E.feRsy3Fn]4fcf@)'&JٖSl~ZEa"ˁ=Sω\չXq|ZsylLYJuFz=d,Ȁy2 8 ޵˽'Q0%{ )^5i֎ZޜiSf OT"`RURۃZvٖu?$znbʲQc,](Jp!mвʎ^/t}q&A*Bbm疯%o& . W p{JJsF&4=I\-I$pD`R=J8T*.]Í5h0H.1K$&kJa"׶60ڬ8#hg`xT;--*lŒr0G0 ?FLcP#Q,#1 jvmRE@@EF\ƒbʴ>6݄.FJ)BmF8BBB-JIrD@28PXq˨[(Z>-q./)DE'oT7P,BU\31Vg i^Zn3m~6? p ӷ|pwK4nrik[HOJ4 6d Dj$0}3t5gb ?6)*iqwg 0U*ajGun '%ێ[^m&kO !teXC6Yc,c <x&>xŽ6Zޕ^4tB&3M3zW3SH[atI(/j%8hƝcvΤ=k-yA~IEf"`R3I2CɰP6mF$meN4&P6r:PlRtuf\R̯Tw. mmzVqd}N!=Xԯ&[{`MVfIUg[5h;*()kJ:FoұŲ|`p ks;ztluj1n ځ*q9U+:/jǻooe4.Wkk*{*jaZCo5I_F]cf*ir -r,PaϏ)5\jDt*Oa^Wv27.18:Tq f*Z hO;+'K$kLwl\P+7XS6[n(Yfyˉwv3\A&DK K$]bBmW-o?b,NǼ?/ACQ@F#qh4&iC$HTْ^4s (ښF+/@+D,+,=#I(FHN$@", W,Z[܎ߋэߋ \ef\¬h lCoEDDs,D1/g@}~"ID2+-0!+VLh 1'H"IGIQC𑋤= 0.j/w<"1ss|wA2"!j,䢋 LP[|132%?42mz/O->(.*`5ˬ}Gh2 JBsY鬑S66m!d&n?Pľ(lEnR$=.Br72F;X< W; D O .r37и!c@fk.%Aރ0QBirBUT]iW)b؅Ry~F'BǾ=_%n6F%$ŘrY5)"iWtյ) t_Xo}bGl=!-)RAO2X~uU*abiOV 25qiԴiܷ d-㏽Tq-.+8Wb*qRc"dmbvgCm D4ls٢T,\MPW4 8 4`zz%W]j` OF؝N$,;s^&7$p86#б8"F $&[֧Y rك $!N; cCKUD!? ]LQȺudVVٸc]P~1-tqQ^3YE q!&~$:%7It"\$MX0DG~)"6Br&'"mi3#U-!UvAAH3mJvI 87E %~udYY7K1_C lnWb!U/w'qQJ3i'fEN}OyonBu{D")όz7fI+_ڑ}𛞥0t&9"E1_ǹq'?=c)t G##s%C&C2s@X@AD(4:r5r׃j(BڳE"3BcC !!$:i !1=!) I Բ O;2`*zfض'UH=O cI" ð'r81 0@3=}ҭ1T&1CZQhW*az(p@*@- }0qh! E))REÌSʡ3H[3 0Ik:{1ڈ?c̘W`Dd>;ɣIm+C:@{EȲlh @ǮQi4bŇ0tasƪ빛\I%5)ƚ;@DcǢ,vHX4:Ċ#H KОBbpt r$ 㷮q-! b!ZHGr3TT03!pLKt.D<Ѱ"Z/ 'B3; XMݘ 9tx(KD<칵4Ps'C%R@Ђs #lvTꌋ䦯b׫$ ƨs̉LOKX A,C@ $<a|dHƷt( .,'DmH UlaCpCnsʆO}r5 >BT/2Lk6C4D LG$z?KۗKJN`0#LS?P5Ԍb;9E[ōQ9pÌ4Nj1،{9?e9mDKɤ5QL z@b7jls4l!Ti?{CO" Zol,H$@(W󬬛Jl]Tta@9:I|eނSK+M(Ŏ#`"\$^±#J6L,}C} ʾ!9sL" I7T"MDIbݮ]IF:X lOQq@NǪ$RODh`T蕲.I0B0}sJ~ &Oݨh2%üxNQW}ՒUDZugCȠ"^c ]|bYS3 aBi$Z[ke&h4BdI@Vbq -@F GaW9;͠5iN&0R#Wʎ5MP!Z4~Wy䋅F}`ߝz؊_/}MŎV)3.씄4% EtudMHQ˙W,TzYʂhp}Za1JaڡhV`,LH]:ZaȢ&ΔH(`Zێܮ,hm"Pbkĩ$Bޒ,P@\"|P"\8\^c*~a}pQо(T6Wc.hhp] c]cPrQg ĸ MuלA1jYbt^|0!XȄ% YEXFe̫rc7vI͌{? *MNJDJ<"%H" „`B*{'ߛI.KSidɦ}l40[H4QY(l`83@4\\̝-J\ b؇%a0H TN5O)h[:P-<@҉rBvUTi.P9Ċ+F/ܒ+ĭt&9,oPPɿBF.3^'L]ͺJ:pY`F]÷ jխXW'P\6Qoh+>)vD( MDfrAWP6I~@BWV9ˮaf-x+B;HHiSgn h͉eJT}A0el/8n,ׇ殄v--<ۯPh=>\pCv7C4dvh~i\h5efϟ /.j:)NꭀZgl`Hĩzfq>~}ׄ Viy4'(t ӌn\/p%p*6L1liizs5NƐwG`~QϺ;I^Q?(it}8;x$qظvlnkXӛ0N䶥ST WpyȆyU &.o#&WKƵ3T\;;_⮞8SςXTA%+./$T/~\\[pv&F GvdwM!}*xm%ry{IX|ƗG<x;"k_7e-b})p g?s[qy@؏~zFRq\Oy;S; O$bћLƂʄ CΆc@L y6&Eh`٭Ua( mH+;q<xAw$PH1$iB"PYPPHg" J q$*@֊`'&dERpJ ,<0|1 }e.A~%d[UnŮN5.ޔ*bP9K?{pH4J@*2ʼn/+xΊ)TxI)rNΜQTGGQz cG+)oD;iծe+ 5jpc1%O 4Bd)Ӧ.04+Xi+.]V*5 ׍)4Tp5_+S;1tMVҵKk.}N?ijLVUU-wm֨=thΞͷnK|BB8NbHDW.!~s=z껟oIoU4j$^ }4tTHCMp gIdH;Y1)v*))bO-PBB.13E2%c?B8dDD?d'!4M@—}O'E9}).]I&E1H-tfpTJͳPY(4:.p;>h@a`FJYŹFE%YXfi:)>j*4@\eA .+,+PĮ5ꉡQ3L45S!$..Yt@R ބ^W'_V.Vdc` .6" :)Ld5ekI#f#c7hk)'93V="#B.4*„OP%U9Uif-ዘ&NJBC&AQwKZhlP QM昐I{ 䐶pJÁC&T>C*M ?K+Gf$X"YК0H1lV `58-C(ĶNH@baMڦ4&H"BdBq* $Cz%j"\D򑤱C8 xOy1yDHJձup%/##Kڱ% ])ΰEnȎaDf eM[-ppzNs*7I>s<ޣñJGJV\ 6my)]:tKV$<X;Go6ώfqAO6H %PN66")5v\s̈\Җ4= @,kIJ$yk~#Du"kDžؽDQ ȋFICrCjAVF]T"H(s-#$S9kTj=wb3c2+XE+c),@Z]^X$3g2gҹt1c49:ټ3l)V$.v t3 IXB|5<Łp4TMxFȢLL)Mp:Ԍ T#g^#K]]\1/^jϜ2D՚jU;}{AB[ אhac! )i 57!]8H/KI-Z y8cCLeP=Z5xѦڙK bGhY ~z3"pR}c8$aA! 2_DER53fyďm
(kKC[{8V`Δ]\ C?!`F' tl\!h,{(xGeפQ.|rzNO:t(N׷N,0b\@I5tA.ƣXL/5>! zB_owbk𚣠 -v $y(fdZjbǁ0۟2䛑2,%qjv*sq'C2˧%[P\R4h!'w3cpAV_Cf>dg B!E GfU$OG J8!efe^Vg)YeT<9 S]*r,Uhb :zvw}gDQ7L+4hi6LZZiRQfh~y؂Vo o]ӥkzRkg{~1kϑ> % b%z0et,pgg  xhZ/Ɖ50Gx=s c"!f"iȆKƂ$\n3p/!HBC Kfs}rQ9~TXXYHρb]pDoc RJPU6xE4yStzՋKXfF4R;u}u΢ ɌdIR 5fP :ww1ZYKoEZgh2ijǣ5',o k.7z@@zkvz$zGy.=2)%P0qv5v(JqKta$7pF5rrP{طkshQ5L䊰8TFdh~MFt;A62`FOHp)Ei5R!SbZC5t7Yq&1mmyxR D 7sT5iʇdgeV0ZӎZ5Xt~oApI2h"_w^Q T | P]idpi(r{wew|wwQc{P?%&9K#xi5Q thyةjiT}'R!(@̵\Ev Gh"2fT;M@3$q5Eticq1k}!PYjH@3B3>@9RkؘoZX l"pb$ 8n浍fҍ=ӧ(cdb~5Z1yPjJ:I#h8f ɐ,1QvSҟxǑ:}1i]RAؒ+Zx!̣Mjg'.֢F!ؔ4՚1uE X:%J$chȧOH&u&9Y!#.r~%75W -539[;,D J rXZz[i'~!q+*V5pG?kR*1klY4p&x# psxX IZfi6QfwiGrij 9:f@h'3<1,KZ ,<+B6SNˊ1P}y˷{}GkjXl!K ~aC[p@ CDu j]r`9įJ"E1|MQ`?ZAC9ۧʧ4Q0͑ ᴙSbP&d/WWV(? #whG (0tS=q.'+%P}%6Щ5[ :ȺTlWW uja:yd ;v{vb|ys+ઠThm !q/ ÊcK"6b 6kbQ{z64aMLE;ABQ RRyخ]Ee3V_y :w6{~8&ڰ}2SL,O / @GB#K%ۄv5zڅ;=$@,_0cGB E FkLaȢB%5Iqxw+ZT^1̈E0 wvWN |NߑIjRK|z'%' a_=a1mT¶2yЦ|zdo(zS3D=CHǤéˤSiS&)}4 8FV&#6/e;'i.:ƞ< ),+*,+!eJ9u]p} n4gGk G+yX-3 ? "{F\ˏM[m*]g0!FÌc{֥zq $+7c-,2]RVtJ}c:-t`QIsُBn/B_g X@zUg],,%:a̐JHK#],$IC(! V8nv͓8@K 1F:AШP $}X-|C҈% ϻ 1hb~p3;+Xךpxnǹ}-݋ [Hӽa;Sor<9v* &=o;:f$T*vh,<QT0;uY\=]i^UWuafG$rXӋ)cَarn(L$,ֹuV;0j i ⾎hkZ5ehjs+ej].3  7l1wR6mYKbՈݔUX׻7ɏ<쥡 m1{MnA2@-HS M>zT{04&B/4Lj64{L/>.V Y#$0)IH`^MUH1MjL`RДϦ&ۮMqKn7*!#%'';:0G4/27/22(GIKI!PX Pa r~{{cQ!`ca6ggм!R\444ipi縝U ’ݹZYX28TW1B|eeKKh  <%eO p F O2u@B &f@ *(zhg9hvh$[fmV]l=H9ez5ȗ/F^RE*843ZR3UXlV4g>Cy)@dؚ -m͖If1c^ wQy)B:mLGz:Kʪ8 )d.C(+0@ R̹܀ 0æo ({R JLrWG?PYLUYTc-b)(= C}>!PԳ/tm~t{8 L1# 3-B  8sIэܙ:yDY \p1^n \2% )4+7UܷߥՁnrO(t`g:Ǯ 3ѧ,ƙgiG6/3O hu>kex#4fi'fRrjҧJHhOc,>7@0Fտ8q2>np~ &ڐL#{߶|q )C%и.zX~ӳF"*:4Uuȁ8`x&`aPfHN190 -2?z-Y8NAjքT(L}7g^S׀ֳ[ <9%zf+U[SgT3h<0HIp Z/Ѐ41!~J؀ )-G?FS]iQ (R0uCP82tR,*A""bnh :d -䤩5$YHH+d;'a YX{nU0؁uVZ(V1j3k1fF|kF;͍G7I&)W`t𧝹im)dP`a'89 Đs),. tP2;\HQI GIQJDǭYN=/{Tu'2W31OJkJx,aQ S5U&xQtf5!9'H> LHЃ12:VaN">W}V%_~'ʼnQ$#$S- Q.RɊ( Bp`gٚH\-\@slkďHhڂsEݓe28-, bD"4 m~lضs2#13%hJ֊3"Z-k6+u/K%e dni:N<>} h<^[/Jя^ Ij^>U3;"D /$䔩5 (LP +zO յ6^K\cjiJ x_j/A$@ )^9`V:.ZhU!Qtr[A"VNee"E}(y .['/@!+< P.V&7d",bl0|\)n@ s=xɻ 8I@vB }T''F vϔ2T3>rʥiWX4aTcrgՈ$?¨@}Ԥ`2#aBLCTPe,B+~r i:.dn}:•-? ]38K_v*U#P"l*#e $8K!e_+hI\_>Z${SοNE/oPYsbj~jbu.12l%Vo;]z]\LuIJ9qYX:K$aA:3/hDhWJl)!`EV֜vVFH{jP.Ndz2vg6&?J3TDm&D;RPp0}bNp]fm ` Ҧ6 ZN`KaN-Rdbl`͟䀘B";j:3I'$2?RR5[`IV &0>a Lmz=R ]a ?%Bnp+Qqj[8ۀuQ$qҡbLIj<0jӷ`bm/MNV* 6 0kB3fB"+ !l U (pN&cLX@,I#ԡΒ&cBk CeT~^r gR&O&5`5=`=sMlgY'#% 36+mFr$%E2!nM( 93Aw'WW ,*da rrǠ2 uZױZSq,w|g1NByt: !M 稪^85&zP .:z =Rv 툺3* V[%V%%b6eTcljhdd bfpA5UH6bnaE+o5wmqΤŲÄTBeՕ2CZuRB ϳ W<7 E+FF9s0sʶ+9CCt P5ɵ U5eq*GwAWw[)07 fy Ο⡉ى9t!4m<y ~>@cݙEc:6ʁbp;fQPR mT61uѬ?zћ`>Aopc,%i!0(.vAIa%Ҋ*!1ğ\Ve @J%P+a@\ܣθz&]g#l;¥k y{Fkpf<"[hr*09ܙ#0IҒ{ܻ{9|;ۮa*ET/U ?ܒ щ;,8.~*n?!5r2nؤ7B)cXͭXњew(;.ЗCq\Q΁E_ľiQQdGz]. Av; 9@pNW>e ߱xĐ6H)v} YRP.xؾ:@ 4BQ2$l(* 6 9F+ n$s6\Nl߁a!bbGGH%%EFƢ'((*I ,,./@n/ 1sCs4t5th))y)F)C0B2f*!.. pXa6#a\ݳD9X#F,J4bK*ly%:w AAFQ8)L.`М1dZӆ+د *ݻ3RڸN$;8L%o$=[mQoVz&IX&͛GPO v 陑/G}sSϪqR4.a Zc}  #89n2\st̺j]-%0lNdv/DqDJ su{۵@ `pj|Cw~d&d !+F%6M8 Ptk!+F-& /Q%D ^Z)C18#1*FuQ2TdIdO0܍hB( DC]ěd$㔑Y0Wa虃a%3֒&9^P1|ThISԸ(v8Y'NLd)%82pdFӊbG 84&+ t6Nқ.]]{ J,boY;Kqmr9-5Y))AWڵˮR7/z§nڽT@@i8qUQk*+Ll뤡)N8a^uqT.J0'jCކrǹli<$`d.{J3 ÏGG)ۃBHG+s1( ŗ*$"JNX!٣F,=+b,`-"bkpBeOpDBmR'DE% (.ISQ/. Y&q ƮH<*H)"4S~HD8pR#_BHj?yZ/pU-^^FXvcv,B9a$<0 b|+8At)iҳ+ \렧NMH.So*Ԝ\4,x$aϛ<'UH&[~2]Qoƻ9!RB2"@+a+0TC#.40НGj<;5QmVL`NpVL&[9I!q&-)R?Bq'Le)Zd9Eg8v yԨg;OIOrT>nD$ H3VUi]^^)(*bVq鳌6%N:.RUP$3^Ѹ/9Uw| (Mi"*hR? U@MW92p;ʲT.khJqI@Dx$vECI6Pl@ÇCe/F7ZbdHEZRפ*Uł~jNC-s1sfM:q0*ന$ I jJݧWgDrc'Sҽ,bKy(I SxָcYq S$'=} v2[ۀ Ue9*qN74Ei-CwoN%tʨZ[~<=P-wKF y >XhD! v! Wj>̨rYt9IC>(/ _,*4b8f$e_QCY#I&HT"[&D]$4Ad.'f$%!"*,]mp a S2-ms/>t'MSo0,qwخB4j,+ݳ `# >@gS[߅_ex˚at:))>8 l󸇓))b:vh0  5_K}8wQT9\ _X׫E0LW^D\%e TIJݳK R J΂QLU4Cw`l k:$!p&rNs)QլtM1UfQ,YeYr;ȗ|D@pBpqM TiҖB WA鸉s%RW<~Ale[!s<C_tZ\T*A  Z؍. /q-߇D!] 2!<4l/yA (KoP9BPa7vG4KA-b< iY!:A[P#v83_G& !tH[;Ũ jXGXzۼh9졵Ă QA_!b-P$BDUL D i EAάS=d=@}hVI:9+WVqJa]ϤKrīAie ZZU~C:VuZ48cn 8R ^XH ,\G\dUQA_bX||w&bl^`6HaSN&6Rb>!f Y|y+e̔@a䇼aĄd(QTy我gb#!O-%SR KgXHD0Es)0eTW I@% QUhHͱ}VBU5e4\b&9lۺl[[Wuw.TWg|۹?ԅ1v^WF&\$fnM4 dFJF;(q s"X ;\ԈL?XA!-LM('O&"-piv_$B}&W5SoFUmCPZb bDQ, #%y=ZIN1P[%-ۙ<)G EPФ/( h5} qݖf`)^8e*l/R4lRGU፣ ڪ+x#{@&j{\)+jcMGwN+RV+͘Aa@V,vnB%fU(YnHh@ЊTT񗄬m-hxPڤ,@jz"{&z4n}n v*~򦄸I^a֞¹TT[_O`CR%;e=B0Ww^0c:#4I.XB ,\-[,S~f! iMghJ@&i&@Bz%o.ȊOz %0Cz%;Ь~)ʈ^΍d-{Rp|ўT$Feyf" e&y^8y؀m,~ӉmmD !ʴy׬bpىбC~VLE-YnpbTmpLKRpp\ZfsCPH. ~wFh",4 pjqK0 q^^09lٖL+X0`ZPjޫ]S$+^ ! ,di- CIIJ_J!pT'zj/Dj{Fjj p?H@b-^ё_F=2Ip1NZC-nhݚ!+ mթ+0H=DDٶEκ=葼YGD0E%ẽ@[ư*n#NN8z48V^|cQ'pP;0**KJœRCؙr80Vf!?n* SF$j9.O+ `}̎fFԭ+&PQ.0h5>W3/3W4##6e7Uop WతȰ &~e8D eJNlVdmGcWbJ0BVWJљC]7Z)é.|Y=W]WeZBZ9NGd-l{A¡TrFa L"(.)@ uIu* ?&W#J~d4F6xe0vanᲁb?.h=[=3$_9qE&G6{vYPǞ撀q_2Z>`+xyƧlb17FW䨰= W 2'5?.7"s)k_ܣ=;Y ZR Tk5quod4j =e8@W2 v]=v,Zv ^杀3<2r!/-x̏ 9~t:hfi†}gSmNzȒue5`v'2gUC6 5.Dآ-G0T׸YR{¶IqZz_0Xz=}L|?0_K(s4ew+&YM>fLb'#oa{"aAV曆ɞ@HbxD&eZ%ac"Ĭ0)j-84As!k"000@30P`404l%5H0LC݈SShphmCUe5).H+4$pcd$1!&  'W?WV ilkC3"Wrꪂ%@FtfB1HЁG&(BtJO:zEAH-WZPDDvDh-jhѢ (U=d+tL 88AY8#MɲeMzMyN-٢ijPo~rB½8TÆd8sjXeAS *@f<OhMc#L֕$L-]67Y<7˖3M{;|W*`⓭sYs*ݐ9B O7_+0>k$1:P%3㪭!> C. Zi.0 ap,>SP1f:B~AJ# $,qmT1x*Pr 2A4rpR= -"lJ)-Ak̝Ik*8ER%9!аΚ:4%7MM?RFQ4 e]zQQ@9,GiS1ACͶF,)GB#-||(h.Cu!01t3zmB+mN#-eQP6a=Ìt,JT㢅#-,6X 0aRw(M/<5ֽT⊁ZKU7@C2 (I&Y_\?^?b^c&6Ӷfm G$LgHv1x) `>n,I&h II5jO![BI0zdQ\jtK2ˬ7iBA#'osPNL1"Y:m ?- 7Szn ˤZ*J ڣC>lzSEǚӣ:j@bILZCu6M@Bd&pN 9dJ(2YQ$$"HJY΀#j8 Ca'G`!`5$ j?<$,%ҧ3 0kHXTQk[1tH8LqM9,,MI.2S±;Ip;T6IB@ ۨ,< sU4C1*0 BWe f6uFvn'4(wVIDuQWD_OXښMt 6 bzˍo0#>C$}#3Q pݣ4Dd--r, Wy5+2gΞɭ-xۥ6Ei|0hY֑PHKBhvzFPph1 cH.oJ"iS)ض'XTRM6|EhTDYPTyJ9WEP tN0mˬY$%C[ X1§'JtBU?ᦕ,%/s{9.e) c)R4Tr6Bq(`CMX lVZaes!b0#4Ѝ(ʘU ($,K!1"ŴI@k 24<:P%9k pdʉ>!<6R C9qQPid4rrUl6xfWνEP%jM[+ 9xDg|LX6zIeu3==t%uEs&ƬVq?UjZ%- :X "۔ҦE*Skh*LgE/~;ϰ8+"H$~ݙZ@]-ioL먫JqhNp3gx@8Ov?R{S#{["5O7]ΊSv=a^v&ֈI9e +a3XDuãeEԷnǦ@ nLd%VJm ?*L_tۜڝ2g*@9Ȕd04Ż}J}d<2º4^C1L*INZ5CGv,888գ) D]"su0 YTT`W2J$g=  !K*z < D8[cm8;9DY#Њ_}UP1d6Yq4Z.O*dM:٥g N8Ϣ:»ٲƄWIIP%޲i:DsR$RoR圶.h!1-H4m-g s RQŹ9=6RBA7S@)ORN͂9 LDxDdu:.al͆e/.i<1U n]S /OѢ [ښնU@EAB^km`c(IC@@%`Ӆ@5$]df؟g &AQC#UeKK)ԙT5b$J#4 B )IaiP^]TSJ9UPUඝ' sM13}mrd#>a\62OƪPͥXɱclÚ!Ep]eo{]`J ge6rR#蠽NV*b ^❴T4.\zV` = @Z!:^$2$!3H HQY0?HÛS`,*=:gWj E8Z<14]2'hYD _V_m9Å7\J$=J[f۶E3xfKD@8&E8 9H_z25_9yiJ3j4N$^pV1pN!"5$mL +T*"LPr҂6vk}xc+&̒ccyZ/Eci WFI Yvd~墤 R][Qe$#N`e:1,n? Df)@h.{pfTdc<5H=dKIS&c8B"r}jPA!],(. /6=^hj*,;TeGyr=ټR.ji.Cn*)5:[o"tSGuK?ADJ%*>LSΤҒUG vUY.qWtd?WnEYmq-Vf*=?Kh9 Е1`1xrj H%kAA"iiJXqf>sokBJBaL(l8l`\ĐŶȠzlIije7qb1V>sm:lwK5яiMϔ{쩷X Go'y?0j+mwG8 r>R\/Y3j#捻PuV0H}[oH[H7ʙ.+fҮk!pHa&0\:C8JYÛbE`_e`fjk u~v> eN|Ő;8_<8{O{HM[d77(Ǽ)/WrVT؞Upkc購R-ўqoܵ+ʓmߞ*:wo;gEE!)HP4% czXΣl@`4.xM&&& T& q~&&& ɴβ  ŃŬ婀M|ehu#rtɣO4?P % 4P0/B`c CN@ PeɗČ 8[th 09 m@ѝLÖiKX#]Vt"8Q#+R+ų#vp۷pߒJ=-o6 ģgoraSV<7F92UTq2?QTeNtyr$`BZi=K];m T5A o&*:ơv!9a$ .oDz5LO߀v|#gy :c ɬr< 3u\#4bl3Μ#HH/1JLNeI(2a'%*dTu"⣃eX^='@(}wGiLPj QiefYgƥf\Ȕқ3$04p0V5iџh&DKSیQDCjՕ_PiftZm9:#Ťd3!wXL 4rbjf;4jS7.! pMӧt.`.NYc-g %,#b;P&蝷AљvTD1EW܃*nfǖS‚Ul˙) Np`r*SlAÊ˴ӌ, ҋ8)cH;( B,"tVQx8!U ͬhϾ\THq WrD*U JNv&/ ; y g; W$TAoë!,!aA7t((!N9Զ8P.5#T-`Î$0C&~$11IȃHFHh0/ /yiLJ >fjM5f"B.ќ8i $D:* k$\*ZʦL# K%C$zu{c>ȪVͱJF$ Ɋܨ!׊9`(haJKJ!Ʉx&h ׸Ev| OӀ G$HEGC%h7 %}<EƠ`l_(eOP/$Db*)#эϢ7hg-Jyӵwp+a(VxiT \HO8?^ ˷ n*5O~- T-Cd6aRX7TucR!G9_ NjRqp*ӚSWBu>=-=WUѥfh.qClղA3;̓BrFτZ.رyZMKkKmi$ja+𝃵:ygpQmE^ӿ? PʘCdL2ئ.ѐ%ܑ9CΚ!h0ΊJoDԲ1*]JR\dj6$H"5Zj&..߈7BLQ90&iߴ@(Lz rQrԳlFé )Y0B5$VaDƚ1UzշpΑY=q'Dv87\IGJY:o(|sMkMrtcXQ5Q%vx$+aMsxֳ%U?dgQ 54YBY+-,j:iCODjn@+ k\/ahMCS9*̷je %m-8.@|54r37! Ȃc ݮ>8[.y&_Q:oK}bĐ?!Xa+*exq3^-'RSg 2}V1q=HOv3j?:=;<:r-ub=5y=CiP/|Q9 D^6(B6 HwddCNOFiEX!%E@0tN6`!mlG'tfW1jXv48s^s' `,pa[P ?a  ym/QG.0d`d^__92F2 @l-fXh[LX`a-WAW5fRã)ho1;*Io9'19{36U/`ِS (r[Y_;x8 ;т^Wz%lQ~gs| v/x>lXsæ>P6" wt|:Aq)H`PPBQi!Bud]N@OcB~7H+1!452`gX ! !RDk!S|ǎGpyR" U"WG [F`X vgzf8u(7o'(AQ{&7Wgc&w||GE`s,ْ2}T۷{}=9*uwY\j}Ր\zQor$gwPhLLy =n1x{Vt]Ȓ5`TLT%D04A0gO1rvlMY (c?xdwwY!֥ix'`Enaٹ$w> # fHDn7 k7uQ\ƈ91Wg#3{C0 4o{QppXUͧtrUci妝PٕQ# o2)}}bT@1ڇeWvwnV@9a we1,09g^q PQ1Tx!cC (Uf`mQ202jtҝTu$jgXũ+CۨxvWX"iUPH4wG+.E2,A,|7baY<qts% -RgX/gt:L苭$ @i*W/x~~  A>ѣ b7QJc.70&SXI92qpӋc: z4@d#aZzdjf{jNeeQsYu)A R4?)`2=y3> "D$;i֩VLP0'b;-flv={X@gH*J*(tyG5ǖ"!HR|p{BVw}WiC$%qd{RW<1CZ4w}op;1KӃ˫=2ȷy6*44M$+ ñJkQy[kؙ|顯>A5;mji @Ej@%i PhhlPۨnx%hԿʛChiC@`2qD sJ 3sP{KnDzDyacGlɖ,,I0,èU:IT-u.LV'Ð.GÃWq.[ q/i&ͷ;yI 큤P$|Wڷ-UC;G:ۄ%YyvFP rw/6iE躊,XV"QAĝ0JP0GU0xst1y=ō^F ^Cs׵]xr( bmB6Ljbx ! 4U!$8]46br9v)Gee:T[$5>& Б$bLTc3 =(C]U:!A,!MoPe: ݔ))88 ;ʣG CyHjRlrȨrbtL]DtW$d5Gsqg_|` mt&_˻cki[0XŽikq#9 Br#t*$ um0uJt |fxΊo( 2 #Q/9KqԫktFhkFzv=|DgrM@q(^sߒn@8)t|?57*= O5 s:ʶ@("gyO,k=Ff'Rܼ${@EcT. EЀHQGC>f\WNmƤh6oODˤI0pRRMlCB4T4,,ljSSӵqĄD׷# `b`sy"#X\<\@܄CÁDD@H@bS@dm瀞 ™p^D{ő>M@hcH4b])丑3i֔ʤ7֫3av(Z4ݹtn!װSTPa[wn]R$A|nk*c [4Q-6kYa%1-ڑ>bO1<{#)ҰeG-KQ8l|eflqn`1p閂:SߑQg>\\˗]jiB/{݈[6{!/vn}0*2bALSڧ9)L)7% <)):cJ(Ѝ6la0%pS"/ȖwمnΗ`FOOYB`ԥKT6r JҤNL8`Kz($(CȴuF*GˉOG?LbΜt'w<H1 r*jy!2xi̲JȖGQX?&X=<"X70, K!@$"6FBhRsDz$Jc$0BH"½PՒS&Aӝ:]aNṛ=yJ{nH^-o}Sr%67`Qx`nK;blz%j(DJ.'N69FhQF>+ ,F(4yp Iz)f MC(*%>>TDyM =ʙpq9?m&*t־;Sz32xj Ԗ#r.ZKT\N:TndWb9wBn7wx;tqp2*xJlI +k[pnKgG^ pRG"Ψ=QL9L5Rl0W@^j͗-n8ILr@$'$EgMVc;yULSP1!i ' kB6#Wd JMJ.r_OcW?PAǂd@iD'jncخ\?ov5)8m.u?v vk=rD<^fs \nәA 2o$Q!%ACh AfxGZR^ѤL djG4lY{X51\"eD}azf6, o\c/ a E[.0=UT{SHhXc(^%W]*j lH KA&Wf)i\B!͠,'Q[frNRCCydzcY&8&9/,jZ7YlH:ΒO!wqNE!5Vr[,jWdCGlvhnHoZ 8%$;IӼH< ?P#)T1ԦzA^ ^7B{aV5p.HR;(8n?0 MXWCdIhX j_ -J=SGE]gF\dEs" zo8fެjAH ?p[54:EETH^PȲ#tiBӔ7i\xgKv+C8ƸdJHnn܌e/{y4Zxvn:␯]3a֩S~=걨P4ׯ IS4_e7D-#xkаa'id5$#&P 0g=MQOOz䥶Nthb7g̷r戯p-l2J,CE\] +oѲ˻JM PǼ #@&tW pbCeɶ!L7ƵvdkH EtRaH̢ՐIU>bm b " H@#M``ye$ ]iA#&>KO⥠,I΂8‚<4#N $&$,O-ފO KJf/ ,/ go BeV.T"Ȋh@ @6ĀĄ,j ^ M"iT>$eT Jl*@,񶆄fo80p KQB؊莮#B80LobɐN4fCp-7ATmt)d|f̜"y$'n% lxpt:Ip!8V\v8"/y,8p3Ш.!^BܺIU\ s 2*h`G$p`(8H-]^pxM0Ll fŞ`->PĈ $`Dɼr:ΪH"Fn^ 4Gz҅OooPV}3I2²2&2 xA:OZ|Dĩr@te#"6HS14T!c(X-bΡȢ!фp'j}x `niP`m) Eњ[HXC0F 9u,2>P#)A 1o&M=?둣4@/5n3փĚ/s1C0K J l&K J =0%ΤBc9*N Z#PE_#W+6rknJ%n!܁UEŝ`m%e?Gr4'3"';d.QʰW,ȂF!8F[r!Z :N.4HEL(YO9B<) R!E$0+TG˾ N#E& yYl< /F YI'MS>L!il^elFƶ`sfL9å >$Q VQ^"E]J'd$a&+$̎t!VsSbSh(zA]jJDR*Lв[PBJJ|R^ڴ437,kinV ƬngV5&o",LNtY:@?vld=WgWL@fVǐZhthHg]ƠHa)T:֗I93O!a]ƘYUXa={op0:u*Tdx: K,$Q8h0RxnW8槛wMMTqddHrFrEӈx<-Ic5&-ƚHN8aD,U.H$85XSO:_X_X:xB!?" (̃Hs 5{cl(M/j>wRQY~a=j4 Uvp<C$>Ќyb'ÝOi˭u K?J7R֮ 89{ V4ui堨YjS*bw h;\:V t'=Z5@ $y<v+ߜw@lC#/jG4s \8za.i&J,*'F*/Dߦ}^1} JJz@+!' a |ohO LklQޱfkHj!C77!PՉJ <  -%\zۧT8ZXG#;5'ªZ"0[XaxfVkŔaqYkYtCE!!?;oE悼?̼#`MBZ=^Yc_E}۲+Ц<ݸե` ^ª/q#\ǸfB[o- ShʷsARLLKg'0jV|\ܔfZ݊P=gK7Ĥ4EhVC:`1jEj.悡:ά %Fy7X7MEC񈳽W W$^&|>@>8,~#Xx{\[ϥyюá?gEpяq ?ʩB@`T.|BNU<`Z T>qg}aj 6x!)&6PA>U =>umtr@ީ*iľ5."@h>x@ @$70 ?[Y_wt%%-]OUYm+C;4#$pP<2Lk… $Hb. x^>HA.#@ HH5 Y0&|@ iΈUЬZmDȆ!ߺ)a#kt8+Qf٬VdSn̩sB&/2e^8$ 09,jC~e \LΜwԀT̻رC"'$8.\5m=zRHl-[8U'RdDt.VC]cK)GӊVw$֭|dO|K FxExp|W*FFYbx 0L2!@G]G=6Q1wr57NPD''8fuClW^̘#^Ac)N;5@BK*$LʃYE^钖@!ta`* '$)0#OcMT3'VLng4|-rCV6b$dilFh\*JH~ihp\U {}iW"o@HE$PbQRn\xYIdN~SgvʪVG*fWf10hqRuU8Ω뀣,>bc gBXQXp +{: py8R& ~ױ+|qwX*`5#Dfq'22eb ʞ&CRm!&DnO(7!A>K.ڡt8P /@heVc\ӓNG lPQ+KmЏҨ-n~jf'p'kΦۅ?0}t~.C55OKS5pW71˵82 @Z=חւhH_] W` }IczbldZƬAk[V*Vu&qm.p[An!OyquE.Nd;PG| cŀ!L?8z pX?8Ӄ40aqw R/#U"R @Zg@rz#5axJ𐗼D(τ@!uکxD-KcƐH % v*#;`ŏ?ti#+$(MEdV{c]*P4iK##׹nxkLf2vYqh8ѿ] =.U 㢃#&cI0X$x 4?MHHZL)5UpIԖԓ\A Y >AUC%G^]SQ5Kb ulGuB ca?P1'+KYwO<*ևaU (㰣&̈Y!QMVwωBp*0 (YXru|aC@&BhA0<15 Vjk_;,;40(A(9#}&6l9M&Q *e7nsB鎱5jjh<)*IL9mi*}g h|ȨwԟҪ= ^xة+)+~PZCĂqAQ״^Y᡻\GBIɯΆvlǒk""+ mk+tRDlWy읕I.yb:^."' # `!'|ˢl0Ʊl1/"&k+UK(0в&vNk2:v 6m-'5Y.r/(;#wJJ_kQU A*u B%0֙ #ʓ7`zAg.VunYqo:m4UFXe6!hIJ;4zt$ϝ)bݍUHieXǃ)W5r,ܪZS'B[k~ /ƦuIsN!)s逪u')82ﯽ%?ut'I2n>.&Ax8oSē@OB'=^ϒ1/oȱANQȵbEVKmƪIhX5!-|7YjTX@L*wkxFRkt]E®GJsJҔJ̲0puFr_yyz7ÅE{n [ɌK~,cNwf&CeV@ yfEJjIstj (x N3WOӨ5YЭ^l^yx9[VCP󝻳޹.sF(Y2M nκ%೒AےwD*0$P tOtVArwwTnex%_qWDz;h>wQY:|8eSы#;Jh RPGTU:9H$ΪdC3:: :Ɔ"Rq+CV"0eAM]~.M^;Q`Ϣ502iG{T30֋5AJDdzIX5,|t<;%.+-dbOPG;?y9/=C9[)Vti N#F/ʏ57XPjhUz]0u4U]T̒uՌJ<,d'gUh+_ QLUTL9H_؏}ٓWGBދ"L#9;[7e;gYR#u<"Bs+rs-}SL4C2m>2Ǝɋ MMɑϋ F0S + CنZY\A+߃a'a%)5bc6c'i j'ka77)E i'& yy$&&66a^8%[n -LJ}8  hG#D:h$H& (R'MJիXFr!Ykg]Hh8AҤN&v'Μ:wl%:h[ gX@Z48xtn v!hػש!B@Q >Mb!/"Y d_XD6 )  ixLC)gzß|TtO{@4G*Sdl\c,Z\30Q3Em8h 7nd8 }c&GC~S7)\)F($H4Yz9Gyn85+&,da:V,nUb%YH"-P\+ eWb(〩 ƀ@JFe6Oi$`JN@%ʕtsL#q7h~_w:EJ4u?hX&TQI4 `s&I~;نA/{,T ׸i*m::J hZ.iDiM'd5=pD+F1}=*?%픦Q^lLMO4qhơLш2QRNK`|ci "e Q5# E'aP 1*b5\$Znpb_}rd\p_QvKAmjA_͢4ʷjRی Wclܟ$e[Ip&0Q9.w*MA<* p\C̴py#23rL4b~cRsڢ̣$YDLfm ]-}ߢ^[V@xz)O ,T{u7y Iˡfu]ve!lUZ \6L;hd}p_mu !uP.T["CN cX<b&D7Ρ%\ٵ- cg4f!$>y$#תCq vd;P;~e+WY\f^k0+ϭZ/@lv|ߓgI˧Gw+/GF=cYG.+K򼊢0Pϳ7K)ۿsC?O #R#`9-=:-Mp|; 𙯳 9ړ˖axp#PӪ~k:!+#3-u )$ *,+d<, zIJBJ>1,DȺc132ӓ޳!< ]HB1XBk1c[+H۽s8Hl `ě‚RDPD@DS‚j'&ykc@1{k%R)< !:s <',-AJ=o4mZ(`! Eנ,;x0IA^c5"&H{ #p* >C?YK(BiidTN.ͺhi P(*#Hohk؅rCA0JpGmDž(3$G|4:}b3TwƝBbBh? ?D`<AѫxD1ѩYXJ@]}i! f0\ĩ3A~7 1Fj,-l1)c IsI*$:47C/@cC),MߡTƼl;qHQ x XH`HlŜh>1 :' z,8_ DABz0X wH!U"Dч2m]Tԅ63fR5\IaZ8SB uz4Y- a8]YR/-j7MګiZ}ZE寞IS;|5 :UuM.G 2MF7 'bK5YZz94r\\"i 4- t+B>[XW+J.<,}]9X'W[Q wbs41h:sR[8 N]4X> >WU:S<]h[\@U؄Ou&9 J):c gmh7tڈZ!XۥbâTک,Y0j)d.!muT*R>`75UֶWLx\`ۮQV)]kQ%wXl m&B* `N:$]$_,lVcMF,B[.4B`j YⴠW%i(Zv #>7ϓlXuW3拍Xf+f?d bjb^=M\u95geb Mۄbxīmm[UE6_SddJ M:.;(1!Q{O1!3`M`uAл ๣ʽ3K eiCL.+~JEU@ɱF)ܧrB¢Ra)a,68OdqZbY÷NdV`1m qj#-ޜ+OWDs&S>`k(ip%I2M Vͤ}$`L!lGH_i al50MΫ>eaL1e쐮3Y[c|.ټ*& oQ: 1YLvHhB0ZWab[go^=J@oox!]΂W6;>n\T|4,[e3 N-ebPoT=~V?45dm3Fnn,ghv'.բuŸQtx[,Yz `+=*e ,/^qMcA? D(ҤD@Ph#l Ҡhg?% t .٦Y#/Ԩ+dtʰ벥KW2>qOl]$=|2!Λ6'(aq~y 9r&L\G/sk}|BpxD7j6hVr\x],eesCG͛70_HԍdIS2L 43Ю\qk3f˞3g#8DI\!xo$M`Mi8] fWÕ!e>\>! Bt,PB AD54QQ*H3J3sD*MVM8ƈ"U8PR"&@MӀM`,lJ`]AZ1 ^hёHbVAazcϠY&N2BI`B4ZL# e g zYca&g\rr1cj p(gQf,Lr^&l+IgpT$X7Wgԡ$ 1)W(bN}z6[N;Y>fةsoZ%PpCFGIuD>2!M#|0E h0~a>Goc?O3z,1eK- 8AR4E4;iRl3 T8 j2rtO/9qte0PRbjh1`L`4aRt)lZٓr8UiJZl:Xz8R[ILBqx8FѾǸ),MD3eC,e>~%4Ae>sc<9A@QUߥ @J¯}km^ f"RaH4}j2QjM ,bcE"RpODd.7y=gb'Eэ 3 pnJ qxCt:&SXEdDjհ?l%l2Nl^=af5"4GQ7>)/0SfF3Q%̥PgFT%H K0&2!ē 3Yt&$]oc ȥ4NC4 S է:~:jKf2~W_^OX;Ռd PAtުB)MnN%d/Mm j@Th,$"R%l/lG`n tRHRˤ`F3%p`*pl8(&NRD6c ށ&UzPՁ/{ MU,gcsvH(MrpRlM#APa WQ) @UO%0 ܏H<G|Uu`j)lcf>eH`[Zτ _Ĺ M4*(-ذ45Ȓ3fK 04L]$)fY('תx\r)u|Jtt2h#6 9wm~ X3m*I̒Z.1gS+$j8v.m4QTUGWbRgҪ٭l͠fB#ڃnA$60sT {ܩXCadDv.(IUMӶ4gkwRav`u,."bn6JEU.sn_qmCx[?uK k]MwtUt CZKLTvccqӘQɵi5)97 "1MlZEB/z{6& QBt ;?LF̅pv .\cZOO6Q X-NTu{=[%5H DB0 ԍT2X`"ڒ = ffۏ>]Y*S >@!#I|` ~ HԐR/ۍ;Wx}q/VWp ~f%@6 Ş͘ 1{c{Ă=l{GRd$3(q5Vh2%8}'(c+4'Q\""?_je?8ukTrf)Gp!pPxvRfz~rt7::x8c6tN5&o;xQlx'rX2"Wyg@Phx@${Ȅ-Ċ@pHhhh@Hƨ PibUʘ$h @̨胥A1(H8jaӉAAv^\x\q_VM5c8{ a."5FvYtGe(RxS|}`U|byŽW[>n83*szV!8\WulT:f8Q) S[C|GR 7' ֕J\Dl XG|+bQ@3 [Ȋ؊'(4(hXȊhȊ(qxøوL@z_h)Y8PPV /1'YiXxmz*8CK1t5XLaH&jpg-_ Q0MXEO(iS!4gRV}8:1I8ĚPuh,rwF6-RFnQʤ,Ķ7v}`ٜ#HuxnIZl)vI21$,AqÖӸɍ{/11()e7wH@&8cB)m5iNEgx]c X,9l &z&y3HX-KvQRv-W8N7Y:9)0# C_U^r bx qL}P*+X4 yly$ 鋺X@riĈڌӗr1&(Kx#I8()Rv%h7ʌt1{(K*v@EY⫩!څ9h+ɂ5W#%԰s g ggv˞TTh==!*#Y?G Q6G_j 3 Qn Co!pCjH"T[ZB (ѫjX &#@X/{V;Y>1=! ijIm tؙNpY:n^M4Ju"f)&ӷC<,>sEڈʧ&[Em ";&|a 9rDo9R'PT)Oһ* %vqX渿;!ŔJ83#C1H(8:#Z+1\;J h[d[W½ʹ:!uRsH6Fnw)r51Q{ H!@)R|r3 ;@%KEEAT / 5a\IymWt-9 LiCE6P,O{G9Z(4/%̈́k9Q1/6˟TK\ϒώϒY$`8]>"1~)z}pȠh)1'bR`iYj\WŹkŠl,-+_h ٕ1h x GΓĿ"-IkykZeļ*Q-ܢJoo=@lCK$KF(-Ē{L-N̶Ň)UͿŁ`9hqVUӛƷ{޸#Ǚ:fv=Җ{W%[zՠ'G8 P@ұk~X-=ܽG͆ccۖ L J %w9rܨ R[lM۲FyDd l\>. a=qLMt2Ž-kŌqި͌곂)Z୪>mଚS $ S@ӎll]ݢnmx)jMg;DIpa-$^2sv[AOͲ d״@:!Ss(f8F}YCXMQۀ׭>휨л~rŠw<>lj˪ʡ=Vk^;+=yo.cI_\LSU^l4QXet̊ʹ|2 PR9BFaܙK5*7w W.!S{̐CpaHFP z:p 8Ry@9P$} ǏR2d2t.ITZH(a/8\6鲣1VtI`NjRi* L6$.52((&/   f!psuwy{};:F6wM*Q˪g#LL Lk!żϽpP P78H@X V0!\ڙH@@ѪeK/[ #6ę2˔aH8fL{␢!&]HnՁxֵ{球+pNۺtО#@, >oN #HC `OÇz2يUMߴYXL\ k`Ҝ4zK z?~9H,b ~/dElӉR<Ń;8 FqB3AO+-XLc@ C#F9K( C9{jCL-C.k5"`'%7imNcpig|j3?š7 BYgg1vg# 튤o, +-鄃ZG٦u\-bg`!a=ZOY=ےKqt-8Y@"ei)?Li}>i$VK=xk'xfF۱zy!+rʢsA)t6ʙiL89wxjm2/I-4aeD'Jݭ7~hd#Mj89z sֲ-<^) U$:p%)IЬ4MsA*SySeX¦Cua"d.a\~Rv=ZG4IG'&BEKOSN c;9b=de|⌾W^0 AN,|uI,٭zi $3(O?|Gy;,֧* <Β rk .nl0ġBE.`[Ii3h9oF;Tݤ&h&Q!fGZҖ\@z&bEq8#3mc1䃴zVk$sRJvItcͼt8hXY,  諀]X:=]5jHT uόr _>&wdD=]h7,ehCC:e[xLh~K(Ip*Y~/G:}%VяR 4F<ɐ ]iA8p#A&jAQ[JDRELɅtȄFEͻQl5SeK;䂬LV0O_!J/,ђq["(.3`T-ۊᲥ/\7Z%ETh}ьfO&/*Zߡ=Jȸ; vW2` L PD2Y Ĩ2qq`¿j"i*F8!Ԇȥ3~¤0xRכF[15gnwʡm_2{ WMEd)z;=QdNu/}k7 jƌ.i}^; (HoZg9WF$r\-h/` wK*y-Ewn;l`JX.TMWMu*Hs6K{Sa䚵`g71԰-6W6w- S1 Ȧץ0nUv\V-r)}u  n,RڸRLs ril | y?Wt=o. t%asjy:)zq -_L_, -<.]yǚy W`_4a6f_g6k #YCpÌgגkքںVX/KB!He􂫑C|mehmA(!ҴLpZ0dڂ읶#`ZG@*FR >Ygj/&Kʑngl~dPeXbVFSO0öbc MT4FZh"Nhp ' IaFb\"ǐE o J谁Y䫤 *{jDd@渊掰 ,|R0.*iCbi2VʰΦ.L%c|GT(G @&ev {gh\fYeN a>]m  G%gj/dUqH 0ReGX<,AAHq$8 @+.x5'yr'%!ap P/,*  #l$ /2Ph?0)c܉jnCLc>ӒF,#ߨ}K m "$̦0L E J L 0.2jfrƩC00с(RϘ4 4&:M 炓ֱ䩞%z 0h0W2<4M ԴGAGbd#.X|F1gU UGt~Nfh֡If2dOEhjGV^"4qSc:vtR*5$}H["^5IуVe!(= d̀n(BR'&.duTͦ&L (516Q2TrAi3aSZ0i3cAO*2A!o2QgTQS ^ 8.*T ۤ%Hka@i)b#PuC62B)hS*54j?B'O7ud[t*_4gYBFŔgE"q)uil-HnXAE4o1;|)6o3s kV7sFlk l6N_ /Vb(B3W*$tGB gtUtfG!&岄-ND2UV&}4^Y!Lq95rˤLhCZ/b)Gin1[f7EQtu!ГO w:xy[PWHaH=6#b)*aoftr("(W|-q<|@/[}eTTMMsWGʕY4wtXNׅZm&񨘕X_Te^vWfz(F_a0hiEdbMNUވ[]$(ZVɦ8^%BMn|Cay%LvGI26RmPGRPx#>H##AqXfRa&k q`:ȸF+xhٌy_itMnq@ip3a5V+EyW2~ב[M[?L)lC>.ptV{{MeIJ@x}}V}՘}YUU<uŴ p(Wy*}/YϗquYyb"~k~,w>AOfx#fǀ|锟!,a&@yx~ٜWi/̾:!++&3ZMDz1u[om56ɹo"PH9x}9*@9`9M8;r4ڈ5AM-"4RXu ! UPO/Zd/!Hx"{.k:IdM$7NNUʭ&d LY*Xk~-Rxe!ɖEqA՛ V"F۴\ƅC`]?baѧ0>8BGʠlCM:Mz}az -8Vy⅖4):Im"~ǣךCs͔m"N/vtyRY"˂1A")pnzCK!d Hh=< :[HI FccgS;Y7g5\Cv<Rq&8\uo:tmZ&#T4Rf D78kh<'!8ȱ(j2M,[S߼Sǃ,8s[f\qd7=*BXC)/%7T$Yi͕FSͱ3\!SCWB%[ 7˼U"KEam0'Xɑiw,JdmHN*^`;Ht Rgqbέ4e`{d#di6N=Bf2WqDbpRk1Mg&V[QmC5<6\C Oq%_q%5VghpBU&rkIxOcKbGӑiW M%/Ď`ȓ,ZaM"]>{M0=2 °ŏn[fog|skI%{]#`ܸ4 zqpp؝ +)=GY R0Dt5ډ#^<h}q?qxW "v5t .=ZPPALRb}<'ڔ:t#i, 4*R+Ĕ^/8,;z %!&?I¡D#d$$%fѦb abbaŦa P,% nS_W#B0rY\2u6v6 Byx9 {eef%$d1~? 4p`F5PC!bih{4rl2b,iftrZ=( @/6t#<)$AX4 i( R 8ta; - i9ݠĈ[&LĊu*SEMalg51C3^[rz/g$ (eʄ*\UbMxYrMhIn3o22jL馞;'{ڧZhΝ: )T$e -Ƌ(ȏx#XjZI[;R\6drF!#A9eIcotGuY&J( &a &/=#G&w&", )/TR!1*b,mILd7XJ98c9dzF{鐊N~* Tti h4h}(@###盩-;SV"(p)#XbUX=rdFE&p$gJZFv,cdƱ!u"eY +#'p&qPE|oxv=H#<|AL26)\3-3>읺N{'}*R*89- <2|rfrˇ@#Nt,jc'hK8PYuߊZIu.Z`騮o];bWg-EL(m 顗n?q٬s"~P"u]mbKm[e_'+gu Lē[g=؟{wAV\hA" ?EEB8PEt`ś||L ih1jΪ)z*ccFE /Akqh6)pSԽ8Z1\sa,$ a<3IK!f$aL3ZE.J@" SWT3L:ws3*aBxN%D'SH"4Y "Jc'+RB,"0wVCհN"7C|`6$LjPG,OJU +G3ٜ`ATaqbB&]].jSSHɂ9NsJTRр+#[ v>j &x :7! -db/5Ğ4(yZjp'QS ,kZ .IERW""lx{R(PE _˲9?̰cȜ%# JM?5҆M"3 ZI60 1a0Rr)? L4A.c[ VN`q:@|,pFy$} FBT"8qc!ω4PЌZ @n $ D2݄#ɅFI $LjقkGbAyWYլZUZΠ3'0*>a-U88g9x$vBwԱb{YQ) иpkvM5;vWƉ!39ũTd Q '>[R]sas:% K{`HC-58ڒҘ,dW&e^oBۼ "*ozςغmr"KԢxJ~zZSɝ0@ aXr27!iAw!̜z(G )Up'aЀ64Hs<$*5'K'R3]!^(V A ZV|2ORSC]4w4.uG;ʷeGLБISԔFL*9%2κS*65Md (s,޷ JO'`㽌2'r,m&6F7; 'G 4);|6A[fwcZG^4#̴݄Jw"!&\AҘk;㎆˃?H WC Z97lOԡFt*9.q=1[=dN}C5$4QK,kO.}=:IN{2,z1(r uj?pm~~1;UmC6h3J UF.* {'m6B 49Utyl3 һ@{L. \K>񐿾 G.- 5-n/GaՓoZ<PiOFK̆BYWuxA0^_q^C0YE[X_N,@y0 FC ] ْ[-CY Sܥl^$/ʕTOp^%2anqP䵝Q nq&y-j^ ^e5L_qB* 2elݠ#^"D(jX^("a>u"ZԸO -jIE]'z"ܲA,"E1!-_`X]3U#qB I':CԧYDU#,1Pv;2Šuq!1)" zc c:^$',K-Eaɏ@P$?]a-֢_?7Va"6 *^E^ c\E7C$EP5Ͱd r y!Hz:Bt^FÿM T*@$X)VQyTCqe e=_+c"%AjASFUuZg,=,\D>؃bCFf8my%Kğ@f # #rDn&4RX$6Z]6$cH9%)@S*R2 /em\PZ6%T$Bc>>& P(dT- ЦSQnמC:"9e+F#:'뉡d".fXc;> paP7l@@@Wh>S&.',|'tbIAI&b,qjmVgf2ͣUn$^Y^h/"cLxufgPTq''}g,tU#>XDbqc(4~A}ŏK"%pvP3`[\H4@ 8T\ŵJr>% Rsc|e@^P\‰$QLe'@S@E' LBm(] Vt(ES6jPj_Qe)=xDH$5jZO'b%$ jij)nz'%$3IŤ|MŁVV|уI edahmfiuwU *4'bhHҐCR(*^MSMid"CN9Y15fw6>kL*̩V\)ݐȔ[k&jk6KP˳\ՙyY"c*J,ҴFmr5ڝܡѢfm &.޺J*P裪v%8**Ά;ć8qY!n(15efو8aqn O zvdfIllbrFۭ MV2 ̕뾮"P..N쑺l,2A ?,NlF(G”"fc4ghA"dgvm"U-#R߫/@"joSzBb,xƛpc.ʥvFm (5V #LQ*/)bF(̡װ֦ Ac gj[_zX̡8]+0-o#~].UkD䏝űnl a3[rhUAAFԱsp@1, '[,V=ac5@ő9LD2R2{cp0o [&L"2p]  ="pT2"k,Z3C4G1ڦ'U16l$Ok8'87I, 3j:?q1dna@=Ǚb zM(F'Hh lh"ӡHkC-H\CF4&O6&sWdǨ4J%o Q#V"yC1 %׻3EEIL d=-\n8a ~4I[I[*lIE4YEn" AXEt\v|]YTv54G@+bAX^!007/U;,rW\5LdGG[R8,|5h׵25j6pL HӌNJb_Cn|j0ovpF)7ZFy F\Kj?w2"W#Z]7kY{!nҴFAywh? 7G{_3>ME@а֨6y>.2TKur^ Xf5}vjCxZ/egzhj7~~5 @0{W8&Y)Zݬ,w8kgMIX 9vtpW0Yf8y븓 wz8[9F÷ x)%F8Cy474r39&,'E;4miop^9l:֭4P׹W~WzCkJz;>-voRy7l$;.xߺKzO8^# ?;K8;OS7s19ﹰ`1fVn'lGG9 Wx&wn:ʿ[Ak;Ap`4?qc=|C~k?{~cwcXO~Wп:kKD~Q/5菼G|?Kx?tCbxD&KfFSjzf@wK&EkvǕw6yqlv$,40xE5 /8GOW_gow LQDPB >Oqy](jF=~2O2dʌRJ-]LXLIU(aęSNdJ[M EϠ)GGTU^ŚUV]~VXe͞EVA2iݾW\u֩E{X`"";^ƍ?Yr]3ꚜYfΝ=|O]MF0p{}8lٵi߶nݽypʼn7r͙ԭW~]{v۽w]| ~F^zt |߁z_~0@$@D0A -OB /0C 7P ))0kDODDDtCgFo#dKBq2H!$FcydWFe[eScyfwƙg{gs&碃>zhFi鑍=6g:k:Y{=,vlFl6^mߞ;n;oo[`'pGppgqz觗>iyz{޻2G?}Wc#|m秿~. 5`q- -] -[)2 Ђ , TaE(J)سT>Ѕ-$N&b uCЇ=-bC ЈEDD&&JF8E*]zD.6ы]Ũ cDc՘F6e48G:Z>>яe!H@ҐD$!G66td$G9"c`&5lьd(E9Jx2D%$UJVwYЖ0e.qY%\gDG-#L]sD1yRBd49)R~JXGnvCW`6=dJO>f:Es %OORӞ'a L˴>\g@ w“O  <'\rJN~eП4tSc?=Tb@RJԂuIbUJEf5k>PmE)\wZU )]#Uu[ZMA WRRn='bzWUU+cg:P^ ̵uum:-K "+ʘ?jv@%POپ P֨,gR[Ukߚѳenr\֜]*cݩmw\Z;޵yu,źޖL^WpqomtGv~%_k7/M%T ߷%pFNw][NOwOy>`ȕr>_;Sd`|nw帆=ws잯PCvg۝^7{#w}=2<ܿ[CVΒ;nv/6ʙ|̇:~xQ-;L-]n#yH?#kymB¢::#;>3::+@ I; r c4 3l65 L89Bw,s|A oϋȍ>iDE=T#NbZ&`>^9[d dTd9b<).SPde`6D^ea%Ypmb]׵_.^eP`XA v`^ &\N`\(RS.+b=nfgT~RdMf+#6 V}ev^Y1C&[\aseEIiU6Td%b}g~ZfNfEJGҍ[Zz_c5cMiQixgcyehi}^hekFfGꤎ]2}+>iբhiZѩ<}iqn^J>]5>gh5jE.6ef7f 8Ǚj/6YU.l8{h.`Xd=afvߺݬ~\N$PRNmmj݅Y30GWgw R'7GWop7pOjk7 !'"7 #()rw',-)r01's\2W5g6_Hr3u9:r8G=>&'/ t0tBGDWEgFOtCWGI_tHHtELMtNutNC7TROuVtWWSXXtoHr`A^_oata1FdUJ7v[WgGfovS]u.-?mv+O+^ B߀Y'U/sGwCstHwUwvwwGuQyu}WwNVwawZ~oouA@ixbTgWfG\_1'W'JnGWsvr]wB@Z|GCIytB߀'zyZ?zwwuu?kly^Wu{ywY7{x{xzCA70{|'UyGUywbNW{'OD`>}/V_FHzRuK~o}7o~7TzWojOEd]c'D}IUU7U~d}Y~UO`~gW ~?UdN'/#x]2tjWvzbޱB`a5:Mfռu&Vpgr]ZJo & mdap&Z$sj[J&Vh$fk $BDFNIJJ#NOQSRbsӅkmjvfcd &ޠZw`N.*eCZJˤ !{Eqx$aŌ G*TeY0I-qP˞&xbI_eeŠ>X[#nB0jwĉK=hx%8A`䈃SYՆ*@q}W_]z+km#!+VlI0$ )\0qN}mBcEoְwox_y0L~fbB%aν$̠?qLu#sK3) ЦO9 tMGXq $4 @FRnjIx&YQև]2]pVdXͅY#-1h#^8#QJ`\֗rg& |Lǔ&tKԔjxiPc`țŨO##_ /  =V=F-i~LG;^w!_xZ}!T *~ +zVKM"j:C]"d')PJBᶪTA!qEd%Ɋh`T5Ey<#IL{mNl_$,%Nʅ'C^frCjkRo˅CMY`$ 'Hh:W9CB*jIY\sd&S`SwꪣuhZ 4vRl-@c;{ X*LB#_OzHwo[al"Ն።,Ň{[,5\7X$ 6WCnIes( )*:kN=W"]Y&zV7zKYƝ{M v.JJ_p.U Β&Y"Rg6mh N$n16g9"W궔' !Q ⍬V+g@B 2"F٥PpQDFyBtFňn!xc:G<<эt"ki@A< 6%/~t`E¤;04ꀏrpI*C(p %>l!f]X`R + /\JC,`|ZZzƪ,Ί敢&ލ!cE(Es('Y4x 2cZGoGQ(]8dҹXk`@)i4 Sy| *NFd6O}ZDvsoXTQx]2yz)f|kqDȼ;9=Ә3fes:. _3i<|]~r=6 y:g"Ko/aѥA:ԅf4A >=} J{_!=+ܢ-Rujh[&؉g[H!SFV;rA'rF(3p&`Tw Pku<h.}W%ymN[p0G QO81s0SsQW%j>"X%x-']T.NSqqw:~(tx r+V(IxC e(.+e{Fg{P锶6sc2s99pH&oiDJ8 Yud|QhalYp}Fv$uv‚[&rFZJ~ˤ0̕ X7QMD:@W "%([udšp[wxyw˥]6XuT5?(E:"'LgV iZ%c0U"^ &ȅjuH^I}SзEP`MxGus`َ]]pвw8nЗ..֠RN#.iiC?qxzPuF unJOSlffx9N +j-ul#UnFR;sO2HW *cVh]xy9 ݷUGP)3u?IEpeچ05ԉfxApqJBSog?ACSXn ϴ7Xuա!YLVamtŅO|"Ad$QiZcE%.I^KYJ;c&j# ,Gs[y`_Gp$ڬʅx7T:DiUy{ژF ϩf^ә^ɓg)3 ~icקU؞(tɞ [hA,(KbcDVK.u,%Gu!vv[/C~ %&c)b!@: դYC'I%:h1#b*'*cf]yCbNq8{*lKꨟ6O8i|WakٞW9+mp[#1L ؗNfk94!8Y i$[SBv/ rGb/bzeV,c}R gea S Ӛ1~m'Zજ4C"e̜7J:f#:(0(T%̝gRp\ 4tƀ:2f,+XYoiI Xʢ[n PPkdϺrCEqpHsD{QOD$¡;`#Jɀ wv8.~ػb_P>nJ\8pj}wA '/OR(wWF r W8 k @QjqhvIsHk·p۰J-7z8jbЬ5 zu})vlY'D}ΥR0w."Y{gEm7 Zv~ ^D]zǀx+C+mD \SeCX`/ <4μˁ&:,'P]?ɌJzRY[پ!d(Gi?ꥥ.$OK=ES`~~Q*4dOm؆f-[0l,o~G?b+[K̴SLstE+˹q;)7k }KOA%SXE}< x5|I5Ց\@@&Yqz(Ôg F+yp3ZZWO$xWE6 gӂeMCWJ*j('_g]mro5^M֫л'>VXWzAJKՅSfTEV_KMՙJ؜i"zF ~vCʬfx}hdr{Ip E'3N&3b#wN tgKhB,T Ԗxr"<ϘQ% Y;N 1K1jzgX%|+^6ε\`Ց?KޗqjVtbHIGW~)I&5ClAg^b-Ϛ+eэDMhPGʮ+*dP!h Fep @Fo=~pkY. eϔ*JPx2Do+PĚisi +|5%DL Lznڍ`PeN j "d.m$ a~0!*⃢V6ژL@a7j31F~kcG/r Rt 8#mN69%6C-- H1,?tJ>ɣ\5`,`Ѩ4 2,GX A`2W͉%Ȱ$5s*@4Dn-Pɐ }|A|A0:Q@0CdCFܴQ^ffom4`DFl6Ui^ pf "&Qև j @ ?4FD3nqm&$6Qƪ("==9>)ed- >O+{1R?5 $h4w 40oAuHAK8B1#31-54V C..bt9D0Ħe|PLxLsUn})vTzt7j7W6sb7COfK!8S2 R9U5S ܀:cO;LOOEx'榟s|O8/ twaw^.7oR.RJ_VEAS7UPcxֻ9f; ߋMzxA6NXuبy9!z;);ɩ;㖛g{pcI[t5*5 ɾ9YEH [(rD |~T :cz0`$e.tܑse6,R锸uhl۫ !ӛ[ٲ{O+͠b9)9Suҭ9ˁ<  "5,2*2.Bl@ZZV0^e"QfqF%Y -nu}mݪW1m(h+h55i8/489($o4ll|C+h÷כ@<.4 pȐ Bpp4\ȡĊ0Q9A$E OS׎=͞UK[!mO}˦B8,I#EtJV08v)S&VFUuaCSMD6JIFLmqt[h B_2_{Aװk,ƂhTRB C ̯_$In})&֞.DֿѮJ+%`sffĘ&u5s 4<ˀ˖+ m77NG}@}}u(A4VRD9䐁 &P:( E V8aPRO3yWA11O:ӓOh"z)Pދ&8EqEgqe2X㓒:[O/VAj[hgup,_) ձsc8dl˅)A26p 4#V昋d8|fe GuQhk6IsM-U;+Ͷ[(an [Y=HoPJhژۄ5j U=WtG,u|l"GFs`Mz)M1A,s:3v@+9jmD1D"aAFNC߼.zG~R%x:{^MPbcY\fC yHh(Y&~zҏ56e&)dr)f `KBrPߙFR1Q/ r)ẽ!\ۤ ?cͨCU)mf1( fa-jH^YWiˊ]@p'ϊVQ Y\:KG--£2]Q/Kp j^~5(sFGs9l4|άg]M=ڊ~ *LES'~gOu7f$[vu.m\jQ]FyB_SܹJYIr]Es[Mr<$`=`0[yZ$ezURM&͠Y\J,qZ$%Vˉ[ԘP0]R%ab9V `Ma_^q)[*AِnhJ4ᮝy Ql|`;Y b j!}l.96$ۅ^l %Hu`߁`Bbx`-M (٠yR堔XG W#CW*}~INH ޥ KNEB,C_u!4ENHф(@HdE_ W.Vb_FN:Aj%KDW%8(2q%M%˭O9_18YHb2Ym8ޣvAVҤP;`[< bd6f8>e_i0C cͱR2e.i }Q~M*BGFb$6.%l"U'~D≢aTYωR*PCMAJ':0Ñ-U c?y/2W~}Pe%c33e"!\̲ >b#^$.=bf~ӯc]!|.p_@faFh_}櫝 i"ϝ9EpW8䊓2jv`L=H_!T*] O94LC2687| "rh~0bn&fYvjKdqfH(`D:$^eߘK9v)̙j\z+zCx֢;Y %ijijOd]R&WVe*8Pց]hi#u#mϕiBWRcJ>kWξH!iL᪨$OEjh&O1fn:+>oJbB^KR&`DTE˖NW"dKTgKQP%0-$=%i͝L>Z&J0.'~?uLҪJBّQ*&jj˒!.*e(Nͩfn؊,:&Ҫn%fNV4y.wʏf` Nxo:҄ejڻ/E< @=iOk)QN)Lᶩۚ!POb^ЌV2*PD,E!#&ޏ(ꢆh#db_®^Jp!c.! lp†A"1l2nAj&AX@rNz/FF쳲–Tr˷gށ7<DlmGNkRmx;\d;pSnOiTTlEUlⱌ5BaCa,y,퍉CxZ?([+e]S^i fZD&k,'͢+ f7\!h&ol 6~Q>|1#^IekE(~^+"@F˲,"b5ۍ@eF#"'C'iE-A*ۧ5Bh-op{0/090JI;an=3n֐Ў%5ài3735b/3|T ]osޗ@:$6KD)i Gp3 R5;@nC?pݗ `ơb j9! ے .C (ӈ4Vacp>:kijv>,nftF4TBQZokiEC3 "L'םWsv+r$r3111@,N0Hqυ5A:!tB+o04zaOK,Zt3e9ψM3;DDer+;eX,\vi6f.83G7ivjj,\VCD"2W:kCHV<4'o+Axۮ1,5zuKKr:NRH-_碿_ |7XC'`Ó{A.ҵ|D84GdR6OpihWlVjMt 49bSxW~w|^4‘ ?Hɽ!K K4P!4S S#KKYVY[N\]ު`&c fcgYo[q].L\4!WnW"u;ߓI $Ch6 B4F-䘐U}E $~a)d`,omٲɭ6=]Xl:yEhIi!zAS|n5W60jVtT`5l9E-Ьyx*ߌvPSxkB^SLCCWce [F|EZ 6sc; h#Ћ.4$o/D^Ŏb.Z{tЋ-jK>ǖHIh\ESTKʡK0ӟud [ti,8bj kflf Ksp At rWdJGt-"k/,- ipC Ut/lÖp°:ceh(PV$LIJOԍ$!ovW% P%(Ñ׸m'?JپDv^~ޱ7MZt%LNh8nsF`UPYcE&W靷w@v*O'4EXS}N(ăv_cY/]R͡TYxWK"l5G,@A\iHW#-1%##Z$$kڨ όК#1j]LZ,4.e"d!W htpma3m@ps$ą&u`tdE~ԗVIR|tH*) wNs`-Fjv%ҢJ+ߑIBurY䑕mJW:2@Ed7VGӸͿԅd$*Gh? uda>a ~rO{FCFh@|L2 ]xZ%Fȃ7${:^W م&ԩMB#l*s dݼx/ܫ0ѭ&nq_X#WǪU =و{.6I-Iƺm((ZYfA(*rlKៃtc8)Bp^^X3 ΘC7)ESQ(Br^B}RoGNl@A))K1zLj+43yEISRիdJvӯ䅉W +6 |o_-{2֍z@M왠KR=mBZBE}&f` itԴљLJG*^iHHt]& YS/NM nĚe1;RCCs0u/e%[lv,kxeDWA0X~OpҞ>6bVa~!@qhQJ(^5Aj)ZQ5/6&;lƓ#,@8:Su0! b;oE.C|f+-R`a7n6w']Bo MjU_wױ:7AzۏWlYnb7@f}|sͿT'  9._tK7p< j^gR*tBd0R&rTq$q$'P'g3Nv[W6U*|0c&*yu4ʭsۼi, wu2vrDukigrSϽK@n d8iDQP^1޻7GعӞ6H"=M,h'FƱ{CTF ,n l]۴Et]=_޳{i{_N0%Vo_yNN5s?AZ#W7?N{<$R((Y 3r<ʉsK7S=hP+>M(@7-d=}0Р X񎣃6j6o2 >!+/I:#77 y+:7"I,#ꀀ}GCw di5r8raǒ'-#2 MM ֫-Qb $?9K=I1 {B\#,4c>/Ӻ>#cK>>>.~?BSU|ssE:l%;D<9[b$J@mh GrL v5(Yo{CIF+l055$3(x,906|?27i]N$ F}I+36sFPĺMs &HQg7qс4KNo&N3bL]!|1 8;9 'J^pǓR\Ȅtfcv('JbǑ¹DҤ-#!DA|Gl]Gu[OuEޥ(sb1M^8P?Vv&~bϵ"ލHó, [F*ߴ!h?34_}ݨ^![K[h]`? )1JzڢՍ)$;6I:z%H.6>niŰ%[5R׌ Z82PPqhP d+HƕDaʑ,8!(, :HщUFvUefvc]Ja5i;Fv />~6Uq>]vc$aiG` #hWKꏸěl<6ގA+O~lZ, \d^7#,79bhIx7 uLi,-F8vvC&3TN;i1鶉lN取[棗kƑYf46 g>V>EgYwn.$xݴ; %1eK8Y ,f7SO ᝾fvE#@W &|InA4ή1&cІ2TE6&S5~|] O9Dڶ 'X;IUtN@,һaIqi:v zo>H> hSv8TmUemM0п ㍓414\%؋i5mt_Ծ$aBI٥.M&ą %h߼½*pQI_`Jt`fXG=)M!$(ܜny@ntÀO@sh3L$F*!v0tGr "i$vJ`r(h\~k,sUf5.e6S$(@;rfOmFw?8IuӮi R>ptpG[!% 4G \ttDtjCN.DC"U_ZTݻ Ygfq|M rk7gg;/0 )sN[nnٹ H`X>J.?{Pqu; jre˳.pQ#;!6#(( XԹ| ]/Q H(p3'Ν5{ +7Wf9BX 84 %S/Z-YIJcȑhHF) $y4lY7c E#+tIL F;r|mF Dj Aa Y!QNjj=];<)3V/*ݫc،lt4gFwȐM# 8zsA!7㊐K7'n p`@50ȽIAOEVR%2q1UX`TQ+5Y: EG? vR"~WqV*XjVZd%[g$WX wWwYP3dEIJ.~/SO)&!.IyJ-&5-BVI@\7eat_΁x;VI- '0* 4<˯KO&t?r+Kjl\*Q *O)"2L ݜiQ'b}yH:hv1藏G4k 9-=:[׀ ivU 7U'9w衧U.!( :f:98mUF򓶄btQ6U{&-}y9\$N:$|-$_YH6f99Jke5A/4Fv-40Fӄ a T0UJֲD.c;-%9"Yee"%2,[4ʼOd$8t<K{'@@_!kHGDJ1i(hȕhE=䝲{{0*L'ʎw*A ND An58ݵըXy^SWxIlH-u^RWЧa5䆨_;G蝑ŁGY/1,(=0RI7YDk OQőZ!QYCäz#QSc~ ~0e)nGt~NwRrL#Gbm ]G 8@^oyko8fP+Bڲ(B}v'yךll۬I(*ŗBW0 >(ʇE28q0A6cS$N:;,͝%{NɲH ,ug.ťe%8xfE kl2şp34N_| ?s[Ii#1P;.yQۆƛW]+i WYo{׻ h:?!Oߛ0X*t9PTuՓd 7 ,8׽~]ܿ q0;S fe*K8c\Y8aTljP$ EiEltؚ{v*Q'*'mQ圂ֱYk6Vv39+0.ح YPt"_m~5w%Jh0q:MB=ҘnB^_D8 IidqU.{rco3cyl 닶3緺/e$~_ͼ^oAңˊ7HN1t=%,z;w}·DZLT,V+aW*t[LbR<~7TA ^Zn8y#⅝!uύ+ -fiLB*~Y-(O<~C!K30ǩJ[r]{\޻vSg @]v@i#ۅ"IU"V*ƀ"MI+lE,+^M`'V,#hAiUy&izhgUqf;L7e^.pjbM./2.?X#}gF'ix K 9Q~0ĦPvl}_Wc|7PN0}HD PPq1$s\хFNDŽB~\~e\7lG(v>e҇CwuwGku|DgxV h"uxݲU yS_B1yq'Ey8`=zUzn"gC9dC8}7n{A$ |-B|·tItCqWXW Wu lW gۗͧ ~xnPyhmf(sv4g\ˈA(L‹<!o6( ԀzTy3} h &rwXzAzvzŒz^ ZXUp:bfAqX~טD[.H!n;]e \Tf8KxP!dcהwwƈI?yh[tv㐕Ge(w{>\᳗=pm.`@a"XAJa+r!SgWV$^dLȁh:5`-|ÔAsj+a^)j2w5"kh8`: DAOWt ≕}U)Rf`2~)<1rg0&;Zzو應x4GЗ wzX5wI~ \*IoVXy"1gL9QJ(َdUvq/xq 86`X d,9-I?W6煒m ؉)LلXq'|i EQtAq<%V7ȆnMzkFtHt Ƞzw% T]*%bc/us験\ډfC+qDC7a&ґ5J@&:AR*:KErq +ข%*"jW!Oa,Yj72Upؙ/*vΘdϰ'+YZ:yA b 3{ msh$dSZ ~b\|' eg~QcR%Z[n(5{ 睈j)Xe4Y6D1W*+Fjy yZy_Kz'%zvjHVOpBzQHObʇ1 6 3 d K<5m  IG뗱XoZ:R{Ĺc J?.?gtUC!vWbd'!V JRrښ5H__V $(B +(UJH8ےhz d!uA{;`FZ {cORD Jbz* &]Z=Dn+ʏf'4y9$R X&nDDkiM:ǥhVHT.D+ď)9_kw7!4Kl]L  _$- G7Bm6q\BQ}?Sny+@ID$JԸLPGcB9mE+ 5L(˨>zRsױ}03ܐGƌŻEy}Ux ګiĢT{_śT$KP^lz1D^9ALъy)eo.s6 b v @( jг ҉PkȅKlGnP ,D( lsgpJI7h 8g$ Ph-Tjŭ^X`i,VJ";(TKr\ BI(DKA3-P9GW_=झ*N$}'sO`V1"ʣ'n\y9~+` h=G4M۾+x1QV'A'2MBԉqY1Ѕjr^7i_ ߨFߪƼ'!L1ï^<Nm cXEN%Χ!>?N9>?~~k[ H`e+p%/:c 2IN~x[aXaݖS,MAq,P^NZiz.j{ݑ"4Jr@nSA:".pNU]. W[WPۜ2F|#5߮ܣ ܛJ w:}SSʋJnOۈ\9|'1  "Qfq t~gT~+km!YYTf^ ^OEaf%W38z"8ߘ XjIJqu ˺ֿaXTlB咹<*dZ ִvpTTi3@UMC3y,yCLL " ,/13579;/;:DGH/NGK/22<];Ld+helueՔvwi+lm)zqՠm6kw^;AEHGLQUY_Lܧ} L Dh 2 P">48 "cqEKITiR e`fPagOu!LQ$eIRnxh@(@@ZD0E!$Y$ |oK%Suޅ{p]Sp 5cA<)1M&uY8f4!6\ϟA\qRA\kknjxk]J6XQ-2Y8oyCܘ̖\ܗ7ΜCgmr#dt[;mTmNJC`! -c0"0"jp# :#F$^l:@ * qQ<"qEm(,Bǩ~+ ^k.:Ů.oJXXM01y HeH0Ӫ0æ89 1G܀zmjCFB 8sϭ V!jOP!Ŕ"|I &B(ؕw"ʼOIM>yL>x$[z -l ߥ*OGIDNԏթ6\7(1e;i:]a gRc~֦UO܆YmN X \Yl =$;AL0$ -, -CQC qDjp@7VdQTCqa/.j! *,5V &yG+ySye`}<E+Z 4ᜤ]: S7*Χ25դ ֧?Jxo6(+^)NnƩm "UbBD8SqTxB\uCW DR){ lJh!eIt){!B@L"d#)n(C,f-1%ЄChq XOЦlk9p,!^?ǩ[P]2(U@5Z-l!e<$$RtD8@ۈ jmȄs $RAIE7RFdCI@F3Bm%9r*6uђz&B" XZ)127%d_Aorf\O3QaZETnD%T?{ QqfdD5u(GZ.1e }Buf芩c ԅUj+wV <RʇFUSpDSVG5%HyEV ys"I!x!)/шbrvYF5urԏ?8K"scBRbK"\dS9I̼bI_%+g?Ԧ.٪KV \M& ܥ7ڄǾ~[a#M&pc -QSHN~rD<"iAhgQq]%vb8hrD}[Da)5Xs."$+LrMvXZZi| V{b CE'Y[ 64a21%) 6gl*#܅w= 45K!ִp.tl3 3qi`4탣HuRe E3/8h 3kā`Z-v~I ƄuW\:h\{v=L$T~q'-V. n7ئ. PgM8H<4J*CoPtP* lѣjUrƒ IۯZUqR6ΗuSUkP<[.b]!|^&ks$5erϋYdߑrN)l4|*^@+ɹ2n`ev)ⲍLct7f;䂺Ooyl7]wq>k~t-Iz&^[Ǚ S뙒|𱿂='չ{]_hu`RׁQk[nZ/3}"}QGN0D1)~xhCjagGH2ޭsK#Ҫ3BkgF+ȩH^P ͢ ({料4~+t(*~BH:϶c+N*mOЌYOrޣj֌nJ^ºaOp-G $RaoW.&+Ϛn`).'"Y6H[vƣp gȘ`~\`j4]B)_n(F""PRÿ䉕:枘sR 4b D$1{$p꩞)1H E֑ YXP5Q:, |f O 5.! K H,.J8ZNK P)# ""88(!}!wH"Tq')DCOgxFhJn dgQO9 3D}@g|(A y!m~I#R /0b/5}OL Gn   yo2-&YhRTm":.:$YR$16g% dR3Q+45/@z"hTx @s50J`j|GB0F. X*’rz"!I3\Oeȑ1Prf.32ZC:22P*/N/ $@%?2O&ժ.Jn%W24,#8ZrRX0%F kԾJRt6^ "fʒ$۲[9^)j`v40;((u+(q),dC5-M$̳XYƩ'Q@<f-E^Jd*&sH.p& @jB*R hfUT  KjN>EC94C!?6M73{LԺ6EGS]. `TPi "?8)?1"؇CU AS2;P$N15V2#UIH[Q< cH#k&'WG/&ZTX_T94UY6ZoZf3f0qj)QrȒ|'n,\C^jv Jv-tKވ2G,^V MQ.@2Ax_ys6 @5*͒?RP2$D+eQ.0-@apRC2G%A?CN`\ @c@NcHw4ŒbXCs6VZ3k56UHJW?g5G qh9֞ci;}OWwrºB|:Z#PKtFqmgvF 4)Ķ*^p&lVm䐢6h$^u8T.~F5,p[qPq6>$6= lbE(!/Vs 2t%A1MIwx~P X׆gj&]𵨔hS{2Hfw%,x]SqW'#yuxSUywjzEI(jaXjk+ NWk$ +ө@[k(lM}ɶvW`:)Ym\^4mBz$B@Ē+=ݳt|V@TH5 . 9w@?%t?vttuGuW\az~CgVy7scMx8% gC-yy8Xљ5îy sזvŪ`+8~ȏk86MT}R0@D9)KݚӢmquRk\˕C<]DNX5 a͢ cl"jCvooLbq\9[g?5bWcx: C5DDMTEUROcHدĘGfGtH !|Kmy7-@ԩe& @lɀ JL/GJ~M9EzH"mO;gHq}hPi7rzrsYlYRAn'*J):"+XIJ78Sy؉7;2k:6u&-ϮS4v{XW$߸wA׮{{zzڟ=6|6\Z~"@݀)Z,Ux:_ȈHZAL+I~HWy*qy;n?qwz~:wU8٨+SUv- 7&z/iZ1{ػWY;z黍OLS;y<&ڮÖB箲 *='AYA# ñl-)_:]bND\*v8$!zPLJP{pPvBl*88¦'rY&7Lz:[Ҩ'W2HS;uʯjvq2 kd;7OdK9G|xɣO5&3З-1F5gg7 lYD- x-=}{eV23!2{3eTv=QJ:Lə]~Akwa>^ ^kрaQHM'Y>+vrQhwVdzQu_:;>t_EFcRあeB&gg$騩$I)\+IC-ZECl--ɰ0qp-Gs t5@572xxF+izz:I+!?& @O,XɉJA7hdqOCЯ#?#F^H"GA˗V6d_,A$̠Bg^ i̚C=jZTti*%:|!O$IY-ӦK8mFAfm+>.^o%T/*2;9E,]mlP"mYО/r*hrTj\2OGe |r0ඉ=k5j9$& 8ݔNjlWеxƧ}_k+P€%XȰ8LX2F\d`HlTwMYڄC8a1LDT-Ih/Q(jKVNUZzR)AՈ% #)(W?"beI2pf\Y\דiae$XiF@z' y'vj&Y Js,fBcp,ӌq05Vs6LMK%@@O=xwICP*(ܗ8>2YID"KaTbQK*:7s~hexOٚXr+Sbʠۅ"Lw<dF+gqIyWqVpimSB"aRo |eˢÎ:JR3n|)2rM3 T Bh׭bKXPТJymh>iGϭjJ ;$0w, eX8ҭؾkTQu!ηWvˍ_R 㨶V裛cά9:(k.m3°rk(V&a!8cQeH>&ho,;rd-}̱ 7xHXWls)LX:QMPE5Z{~ B;]1{H1%DVLOɌCPkHF69hë!*~E&rEOHB:Y9 CX?ޖ$J2Aӟ&DG4; VlQġ}YcXFJ\|TI®Qƶ5.L2]-=*EBY)$22{$T3y&yHtR K*%D%RjR{^*S8ɮl PfEQʏ~Զuǘug?Bhm"n`5 Ǧ3lX&c;'9h&SS6Qຎnm96TG HM;aj:,ax HI9\7taHRv. *XW*ՊVaSuCʅ5xG' .M|r-kO߫tqkv3 4 ܯW! YĜNN b%M.cņҐ,7qRd9]3d=p4r`69:۔I<35Dhx?>ꮮz ޵TXctF{vTC4:qcYlnBh %H\mnm3y:}VNF9LpMud#cyg=Q'sR$llcrN<7/6_ U:> Qv G7x}gKE$.6%/J9Rz =ވ\I,5`d.#ctAA9| ӱZHRN_qɒdBޅy͠ƇiT }ٞZVx)^3(PȠ38PQ6@L2 6UCћۡIxĊƔ֣n;Ma1% k Ly!\WEeX.? @Z&D}ZjR#T(Zȍh:H"E͡%R tfVeHhr)%G0etb&P#q^]%Xm]LA]' `oBoݙdV 炕&YMKNj:9'UbeC^%}%n}^PykғPBTfL] ]@H&x_21مZb\Ʊ!{!SzP.fԔ\MFY_#mÎh(fJf3 ) )|y̐$ 4)bV,ŔF@brVjfX Ecri_CL;vkjy*fbdFbMfKgIhYQ`Ģp&, #TZW#lQ}1 v Z r)hFe(\X` p t:n!g&lٖm^@Al^ێ{",E@mY5i=Y͕ a'ZD}nJq F[hl*YHhe,(zn2Z״1G"ZvC".`l%q_QI^)*&/l_'Rvh,MgbqA[ vY 6PXgL͘/>U:jܺck|+N-IhChIB̔g8ng 6^*ö[SR*Bʅņ֢jdߋzףș쪢l`:_Dz0BI/l N/fiFV0.f2.|m~p65l-(iχ}#ҕu?rVe)Y|m["E"۾ *S󁃴)Y pm0 Hh)XT(צfI cB2*p%,qme<+rڰ80*qfI#en2+ڦr(B.wn|4]o1uD&{<ݜN#>'Y%)9ŭk,A}6aPF[!qz>Â?0i.8@`c2JnrPd7xrLY I!.=9G+xJC,Dz4`J-7t+l0 L1V)zn43JPPsb5A6OZ`rPB4u%|35]kǕە 4 \>P1%fZchXn9v"[n(Hrji0c2'IkJ)0)w)*vW+sO.QuT[R'N6u>u wҗVuV;VuorR3hLYUrq?&Z@/vPޙ7+;3 >vs^1' qAM/3oehyS4oDwf2qU)e)eN)h3B(.3S֚v%TI4Sj.kZdM8q7oCR'W86INqGyYW74sAFz-D9!܃\gNB=+`G^^3çmLu8{4IwCMBP{`$v'(xGyiK!nj($buN'Qr Z$_āMw23H Ls.owO-:x'in3_5;yWiZ2ÈYZk2p#mY瑫~/aj! jr(d{@,6#{6򁸨knVúy$y :zat,5w2& {[f/8_ZOV4jw}c'Yl0?XV98F6Afn(;; _/u0ź6ֿA4GnCfŋI!l=..{Os5-p/|7s1b'^~> %h=[:Γ`ccQ4O~f+3E;*J8;Kg*:pg=\ϻ3=F~[c{5Kx{2>/ i"KJfM~|fkf)B(0L l zLH.a:cr|sj_sS~{>!HP\L4%-%u2U]Ud=j}ܠD$.=FރM, $T|.36?GO?_cTWO//bX@er H&Mk-Fgs\TAXQHD1Q%,]TaL&eބ!gΘ=oYIF yeQ'R|y`P(&$x V=^uCF}TaJ`q$n#ǧs^$w.TƐr5kv&\#BfK|i_nڝ׍_sKsf3Uˬm1c ,j/E4V g!/_+{.1D!&8`t"P@rZ #xA":fB :Lc/+"LTIV NPkѯ Ҋ"=);%sT7bdƊ*9i"i!,_ J2p#wͶd;LsboڌMͪ sU|C/JǘE-1=:QiQ [/K;O `piFIeVIӪ'Qu۹(7gU"$h@PYJ385`Uu\Q6e_0vҀsmҁSrN7*)h.BEQc(ţYj}:?Rʼ5S$N"!Hn?ԃc.L%r_z'LwRPz# 2VWVl(6#)II Pj :G*֑2Sopͩת@VpJ!G[TIB)_u\S0r**)j^[s1 Wt}Kզ! isvR$Pj{1{A ?w&gZJJY(TMXWz`ZV (ҋּQJm{f:45$vF8K c {AF˼@Fq12Sͮy6=ď^F]/G5eV} 0UWPɮ ջzeg}3a?a ,T`b%JSmW4-V7F&n_)`H1Dw\E8QG[+s[18l]a;tN&yMUŵ#'Khvʜ,$fTFW1*A-+ !$+[)?aB(?&\ 7$ \-5/]!8|+Qa>;C\I *1UϺ@ +!2D#!U9=d s 6.I,>Da#E7A>>fLDYS r((M`Fd\? 7pi쿭7&&H G:E b@y@:6ȼF@5QTPY9ӹv @ JBELxXE/NE=E@LB\4]F'RYBi3갂dDFQF/d43|ba/"WX4@*M HnX@0H{@#DaAʉOE#p q \JED\6cE\csUXL?YK\q^ԕcؾ➒<78D,do'P%&M ?i2)Sq$~nPbPÿViy+4G6[$ ӗ#0,K .NJK,9EAVLd1AT΋U)N`K e6˃)luH3!47sВ;]A/6Iͤ$ 4(%X,? E.@P å0xɘ '_tQ])D lm,i$D#|K *7@Q?, 2NtȉS(C&v4L̔TWȡ+PCR¹H H4TL MApy.R΢sUȇWU6um`]$TPrCV0ܣ!7,3,Pi͘\L-D#7DV Ш, m] M-MMS]9"%%MG-|}Eث6U[*$sņܜ_`Dt*¼щxVge&8u `\PF0 ?t]~c4DMF- *lIJM5-YN@O5PSeR%E`aQZԺH!ٱ4^R[Ka5s&VP ۍ dV0}w[>\˽#t5XS' MUʤڲ-h\ DZxk4E{J)[\]X'02f^e2E> h^}^]:S?HY !@,N'䁀Xn68u M+9L, -M[˛ğh^&H4E^MKL߅'K6^_92)KPVNеb\\Ms%`I8$~+< b)3 P,\(`?}#C9̂*$ 84.1Kњ܌F*ܝ=~ć}OF2Mg2ՕkbgC»Kfj4YgTE>h JhbE:2H먮h=JZheռS*CePƒ)?f.HT:J26Сc6Pkh8SB|ĵmuގuIךUޖ:])! b1 dnk;n\]+RƂ$@ѽ^ -B% 6! N0X`xnMO[%smaos- --V(k$q^Vp]qqSNbt O~q8.4xûR)SVǎ/h$MZ8moͥiPm90(:1pjU_G G̝ wv)=P dERdt J'b|5M_=V]tnvYFSmsg')n%@ooVW,w/d]aO)vv:mMvIf* 5TbAE^tLjx7Lvkoh8u}qm]]%KD:Q:nds?:YFQ$3>΂ 2`pPs8}#z2o4 7| ,!1չlא/n'dgg_!JUzn%B'DUgav\*zK_agq:OoB}7f{T?}y'}?;w] &`x{xF F`emv R-YFn ˯ym{}hb6/gȥiX)MqL:NtJZجvzN 0"_F4HEijzqj˖Y 9n_,i&^r6(hUZʥ4]P0ZAQ]=Ga${H@ڵz !@I.ʹ3&ئm4kg.z2%\c߄{aLjoǜ9$0un~sĜЭDD lyS6WD$%%=g[}N}rw^Ч1}=qp"`)~pw ՈrN<@I).({X,qʈȘBN S <,c#~8v6VuIYt SmCII@V>UBQ=i 19 hF!hגM6!x&7ystNe;&zwFihCdy $9-zt儨hyP"ɩ* zE VjKQ!cbJdkuWj46>ZG]: &r, V@[cI&£:=;suׂ/$gxv;DpKޞpV_r8EYYJx++B@/|c_.tIYB)*K &()xSN2klUG/Nd11rXc#͖VF\1yofo1;ʭm3qsZ\L W[|WFݙ]lgӯzI'G\vƭ8O Eߜ;A *tdV৿܊IzY/ Tbªz k$l2l9ߟ/kbbؾw=[>C~zy}[sφBW䱸4VxbA'Ou{)AY(mBƒf˜p @z_&(#B*"4U 1 VP  QҴB8m5i\rd$Wu9aR쉋e\I,W@c G40B&FvkV2 h+`L)CEe)C 2Ĉ0taBU ņ =,F*TҐFZ1MKZ)PUj vM{͚"-m!fmUmx 74 nΦmE3 EkؚG<&,=|#89ar!oRos4VO:J҃vРM7)H]G䈗i4]d";%z%2:P#.dB;  0Q Uh;#)Bҡ'}MPCԢC=2t<XO.ē>/rjm@H{Eb*ŠQ9`F" %54wP+Lr@w\nE)-$;&O 5GEZ˭nA#Bn.JVAB[kqPiڶcfUuXZ Oa].~,H[ (SD*Ì4Co.Tׅ.@IUOŲ`8 [PZR#N[䘟QYlwTs(Rb6t́NwsŌqUUu8P xJh|V>~xc AȠy+Xm\,bZҷ24D,& + "R6*t- .#ٴ1eʫylvmo'9[Oqi'6Eg-.MW&7y쮑 9*:Cjkj\Bt@nu;4 gfc.;6Gx }[H[ edƩX ꈽ^c[X촕ۦXP& JZ;B}赊~d'u"c]]$ FA>ӐѤhuP1Q:Zm!DR&t@Vb N zIpmAZl2izP*3(H+-ZBdi/,LlKR89ltib3S޷oEf!g}L׮[dYku{ <W2ϴ]P 64e}!!f|?d:7|܊_xb3eD6sK#"niJxjf0#7%?c=B^,# )x^nYAYqp"c$ Κ j*n0p 4Wiaz!B.lQS<&fQ `FP)t7Ӡh\^W|v|y6vYiwid}"}#kex8~j]ezRFc]|7\(EI,cp_9%_( $Q (mas s_tJ4%<؆4JKD#tYxtuQ)8`wVx'[ uPc4v1Arv66Pv0eMeCQw!}B|jD~~l%eK8oU~,1Wr3Pxgu4Ip;&#nCah)`;{}!zQ"*r gea8 @mƁ⁐.W&r,qy(Ḩ%6,[RH}c|է9 X( `W]L'Pf76؃|׌A+dl*d*vl8n [e w+dt& t mx"*FgBA *Q$?"c|b|6o[%N N9I%[GrHkP7?PYp8`#7M < rTlP% 9oщmr*kHE5LSIzLA#J@2^3Is@ለ$hfaya6xMwj)wG*ԛW@jYXw' Ǘᗗ&Iq)~{G1  ]=3yZv;ɓYhI. Dgvgv = *yɛ x0ZNu\FP'jZhDًOVkm-晐ɑ)r$Z5cH!JZf;)hL8W8Z6;VKgɞr)CM)c [Sn\egڕ%AzOyxZ@2ekyS|JIC;H^SgTf r_o_A6ϙpv`4"rmBt!`3p`0وi7E`-`WMh* NsvI)g/Zw8ZkjweRPkq*70=9;h;VYZ{y u)ūU/9o+iu u ?wʖ+J-蒀Q6 FJeWZlz5z: K 2oQ;KBD $bZU{]Zv-)ڵ"ԯ[8 XpxPCt~Hu*[VOhqNJJZ_H:Kd_#: _xsl"_T1(t%y17u# y%;'ev(@Š[,)1YGq~x[Eǣ ~ kE"ɠ27Ťq[?K-b* J+!R`w@+C"C躱j;:bçڡ\ !M(:\q l(+q{[9UU,ʮ# c4>۾?_+`% ;K܀; Y<+5g8Sy&ZI ;b'ؽlzSu9iDzN[Lpt )~/ 9v˭eŽ9ҞBJ;8մ6"[,JIqx3rHIİ `!gr3(K4òV n+YY|JzSؙ4=U-d϶L뜔(Vv)Mb6AȊؤ=}\R'kq\$&tv^x.!ix}.N*). :Z[Qh%,T3Ϳ&=_M-TJ?K]_  JYۦdhhiTZ(cdpn+J̬-(.^ -26p.rsvb'` zXu \Ju#| *%.ñn8[_̹x(in5Tnx(]?焹?H6^Ȅ>hu:3T,_uT׉۾h"4E";NMo$ Q9/OL{{G})7[@nk۪-̀r ij!ŎZy]~KԖ.>lR?1~ڌd)|ȿ\A _O! Yʽ mCuf=nD` `3 ;=CG@ F$p\2bEPCm7xc{}!m-no+Qq2RrҲCJIsdROͤTTuunUv֔- uT8Xx8sh3ӊ!:KAAC +>^~^ɤCp(s *\XD)V܂&K0+IHK<^sA 6\3$䆤6;y #|& &XyPҒE SzѼU5Ο[v'EМI)8x 8' w_\ZCv .x@ċ l8X4)Wd4+KdR|E$-zpNe>X}LqH;bw Im ~h `o|*$*,$1 GS瀐#̤ P$j@kM+H$<,HZdLzد #1#PVF/uCbV00 d.nuyiKYɨڵgvQ qP?5r~7jb[ |9Pޗ_vE+JV+ّ> [Avb]t_pG/oWRmǿk{-H8j"#[Y=tN4*-*3؎ꮳ^]7¾olqvI|;𖞍Ko[r^A\!cgf3fh7(Ft=iWv3}gvrz)$:OY Q6@ (TȈ9B. "VQc!ƣB%P|3{1 Df>xA#*"mV/BYgx ] 1ȣN9-vbf .9p]gMbÞDHuoW~!0O+PxYB A4yu(WWVH,瘠IrR8bf k\S,H|%O>~A ᑁ@Mk#p۔Mov}3)}Yh~SPg)-RS%V2rZ:)~@qTC5r-D_ˆadET٥>8ڏ4I@=S9&T!(5JY 0 uh%'d8 T|Pwyϙs;oѠQULj2ZyMS #Fl"ؤfZъ{qk7AfdԉJĝyל4Xk/V%T HEecP<+ XLA2rEꐑխ rla{lJ}>Չ*hTMUaZ,f mFVqk"j]N9^.w% 8)SÊUL:AcTZٚ@^`8 qn[ vFjg9}v@xx6Aoq7,J/PPF \##wyw7<NAkTjUd7XaI+Ph~ѱH^x&hr]\#I?FX]2cWqتqYeukdkM t>wʪ ,B,OG΄pv]$S_v%[Ht83LJ\j ?yM$b b ώe&9/n$R[QOL]r~tkw)fmnny]\`kA]-F&q!m?8q ƴߪi",܏QyP.DU+[5Yd!?;ld*ogN\kRM>FG jp.Xe߲.r?yhs]\һ> n9)vCm{;$mzC`c_^/8d&.0u{^FlڵyȲ=#6/rElFƢk_[ی ףR@nb+fG{"_]ROy4qcQF\Ҿ%/>RڅBq QJ5_6cS6g693F6sS7w7{76588O.C5;![#:S:::;S;;;S>>>?S??c7@ @t3*#4AB5x#B+B/C3TC7C;C?DCTDGDKTC'D-DQ4E_FcTFgFkFkEM4#[A{GH}6sIT@)FTIIImH_BtDIKTKTITGߒ7?TLLLMTMt,PNNTNNTOOOPTPPP QUQQQROUOW4RtR/R5S7S;T?UTCTGuP3UTWIE4GU_VcUV`UYu3IWwWizXUXXXYUYYYYZ-UZU[[[\[LSKg]U]H'VC44^^_U___`V`vW`aVaaa6aT=UKb'c/Vc3c7cb=^[]OeSVeWe[e_fE4Wu\fogsVgwV[kYɰ7:C5fhiViiWbjVjjaDikklVlǖlI6kMC5RccVnnnoVooopWp ppqE9n?U2Yg+r/s3Ws7s;s?tCWtGtKtKr5uRj_vcWvgvkvowsWwww{wxwz.xyWyyyzWz/z3`zW{{{|W|Ƿ"3 s%~}~W~~~WX ؀X 0}7%ٷ+؂/3X7;؃?CXGI7 HRK؅_cXgk؆osX焹#X؈8WZxX؊x8N8FRXX8w؍X瘎m ȋ،8۷ ِY(XwA@Ѹx/3Y7;ٓM|3JٔOSYW[ٔ+Y7/J l?wq{p{9Yy}Yj93Fٕa~s9/!ـuٝsY9yٹXٜӹ7ASyNP9ڡ9!Oy#Z9טٞ?ڝEz=zSZڤ[:UWeڎC;$W9-z#:K1:5Z9~IOqZڣZz9:m 7z%Zyڭ뷙K [;z[: EBڔ:Z?Wٯ-9Z:jz_~Yg׶[s{~wڷ;)ۮ۴IZcǙ{;}ɺWy[;9{[Axต[۳EەS{aqۘכ_yqۿu:G ܘ;۱]Cه\?[';]Z-Aސ{Or[Q?qWm^{oM=Mr9]ک#|]ޅuڑ5>x9>uڟ>%~%\O!c}]~I>~>_} ӝ+/u_?C_GKOS_ ?~mqu?yq8oxk?Y8fkߍ_G8>ȿ? ڿ___8]xKG!h<"%D )JZ055 FP(+p| "&6 BJ.`\ݙ}yfJ*ξڮ~ō\6":BGSFJ+b?/Zbjfpwۢoӗ չgOE >rFчg$i[ C& :KFyd2䒑$W Y@e՞&'B=#USO4=ҥ=FJug\ cy>,:9+ōGrc=iwէQ\X;wOiv(ܧ?N|CK.eEwň[f C}P!R[;T!ҲqxvS'{хxˇH7ڈ,!+I8 #92ۈܕWb ap$^.>O~If:X9Y@IWgHy&w6Y&zʔ>Z"X|:gsbB)v$}?vQZ*lidu&(~Bk`nggæjINkg+96,j) b8B9F;m)~lFު JQ# 30r֛o/5qhܱ#\;g®/C|Yqm|?t ]GL3+Z[tL4_a]vJSV9j=_;ky._>[wϓ@ ϞoL͑nЂ/0=.􍻎s=:^Md}@䁊,s\ `A u,Ǝb |2C%/}^2e&WI)&?ITRB%5E z_B e@ާPzK`dLg:N@!.SsT$(EhJsP WVR 'Y@ ͑4;'ˊK |">LQ3R4i "4݌E!ɥQG^gQ;~ԝK>ն-K/\~qGC̙9>Y?ў6mkc;ڦ m;7AԪmw4T[:sqhC[N OzhM#a8Ž]ch#_9qQZqI‚uV rb%bN &J"}W a^…b,!_T C'0(8]Vd)3 J5C6N1J."D!,.36559"B 7cxc""2S3^$#+yA*-]# >]DDBc5 Q>rc# *8b:#4%dJ'KfLC5VMRcNZ$ A^!OVAR⡰P+ILd>SdTTR%YUb_Vj%qeW2M^#;$N%%:e\\e]B@^e__RMYWaYa Xc6WBIdZK*f^frfgzgg UHCNrP$YޤjVl.fld[f"nJ=@]gp%TI@^er*q>esB'@tRguZubuJgvrgwzwfvxgy*x^e~]ezԙ|fg}v~gag(|eN&kfe[敠Z& pZh\gq6^"rz(s6'th'hr'hV'Z'ٹ(uڨhF(|gii ZgZd5* jp@$h[ڦnrfzBRa*@'UሂOiws&)hi~i^)h5i)b'n̠l 6i&4裺*t:h=fji`(*e^"1&c2`)Dh@jhb.q&t&0ܪ>jt &ZJ*8}fLf^j|jj g=R8뺲+j.I⻚M+XNN*J꫟6)lnѬuǧu)V'7^lrjEv,k9lɘSZ*kF)>jlv\o@mVQn(@SyG~djkU\^rm>ׂm؊mg~m8ߥ," 6έk&ꫯV+ bpz+TDAUF4vmmzn芮g,,bܬnkk.6a50ZS5)m2-CԢ%V,?ƭnNZ^dgnmvoc*/,n߾b A>m5%K9~ *8/tmo{쭺-/p-Fof-o$+ZʯhiRS2nnYFl p 밬Jp~:pnp01'##)ڑ&Zzez)FzByQV"zmU1Ʈ7"'FDn p@ ozI / Ay)s Pr%[%cr%@&sr'{'r((o()r*r)r++[BBo1q VO/2`#P {#S,t2+4S*Ks5cs6{5ks7kb@qrAqPqr0 ?;32$G3WM4{?37@@A49_4hs’ELF 3@272>;KHV83l`A_.2b:1/\rP tN ,3;o4!KE 3ӂ4#BI3aP2K2.g9t.@N WY㴄>{p5;OFQ#H3>T 4(Lk?4JkY5N4Y+vXk&3T2eO45Fk;\r ]3C_#TvA`v&[k%lvm۶lvnnAo 6(vu)uror/wU;6fwj²5h5\hh];5J%jw+yz wz6{cs|4w}X;rwsY7O[7;Gg\w(]DxGVC7Anw}4{5krw~7T;"5u4^e'8|,9x]A=3p N5~!v.c=Tǃ-6ex[tTp~[# 6?I[Iv5־9y:D9;v8*NB :Bhy9yk?a?qÝxrq[#Uz# &,ZzIBKuPzayr+vRgIzdcpG:r:2{;nwR'Th;4C;g{!.qN{LV.u;Wk;s}e{ߥ;حK;{{h;vQJQ2|`zROi$|~:|DOv+G{[|6L?|||} }#}o|y=؏} >4=~~?}_}/߳ߋp>ያ~? #A3;CKS[cks{?poAF8$GdRd6OhT:VWlVv_0]@Gfox\>w|^@ABCDEFGHIJK1ͱ4LOPQRSTUVWԌN[\]^_`abc?defghijklmnopq`!͑t4vwxyz{|}~sd\ ;micropolis-activity/src/notes/Performance0000664000076400007640000000373710724145723021150 0ustar simcitysimcity8878317760 31.79 31.79 163289 14 animateTiles (g_ani.c) funky funky 1807963847 6.47 50.11 66550 18 MapScan (s_sim.c) 1041273098 3.73 62.74 26 24 GetFromMap (s_traf.c) unwind and inline 909060732 3.25 69.71 39 34 SetZPower (s_zone.c) frequently called from DoZone, MapScan 1041273098 3.73 62.74 26 24 GetFromMap (s_traf.c) 603351309 2.16 80.21 84 23 DriveDone (s_traf.c) unwound and inlined DriveDone's 4 calls to GetFromMap 1398123339 3.85 66.07 103 28 Rand (s_sim.c) 199605792 0.55 90.82 76 17 RandInt (s_sim.c) 1336958 0.00 99.77 80 26 GRand (s_gen.c) 280400 0.00 99.95 29 17 random (random.c) 270800 0.00 99.95 102 30 ORand (s_mvobj.c) 340 0.00 100.00 34 52 ReallyRandom (tclxmath.c) 100 0.00 100.00 10 20 rand (rand.c) lose as many calls to Rand as possible (RandInt is faster) inline TestBounds2 malloc 117467 29.27 1022 Tk_DoWhenIdle (tkevent.c) 73203 18.24 908 Tk_CreateTimerHandler (tkevent.c) Tk_DoWhenIdle and Tk_CreateTimerHandler should keep a list of reusable frobs free 73201 18.48 1296 Tk_DoOneEvent (tkevent.c) 59107 14.92 1065 Tk_CancelIdleCall (tkevent.c) 58360 14.73 1372 Tk_DoOneEvent (tkevent.c) Tk_DoOneEvent should reuse stuff strlen 71590 22.28 518 StringCreate (tclhash.c) 65469 20.37 410 Tcl_SetVar2 (tclvar.c) strcmp 108488 73.40 99 xpmHashSlot (hashtab.c) XSync 73384 99.94 100 UpdateFlush (w_x.c) Tk_DeleteTimerHandler 73202 99.99 818 StopMicropolisTimer (w_tk.c) Tk_CreateTimerHandler 73203 100.00 810 StartMicropolisTimer (w_tk.c) Tk_CancelIdleCall 59067 99.87 277 CancelRedrawView (w_tk.c) micropolis-activity/src/notes/SharedData0000664000076400007640000000250510724145723020677 0ustar simcitysimcity* Notes: do tile animation in parallel - tileSynch maps on demand * Initialize at start of game: short mickStartingYear; extern char *cityName; extern char *CityFileName; extern short GameLevel; * Share data: ** global long CityTime; short *Map[WORLD_X]; ** editor window short Oframe[OBJN]; short GlobalX[OBJN]; short GlobalY[OBJN]; long totalFunds; short RValve, CValve, IValve; ** map window short *PowerMap; Byte *PopDensity[HWLDX]; /* 2X2 Maps 60 x 50 */ Byte *TrfDensity[HWLDX]; Byte *PollutionMem[HWLDX]; Byte *LandValueMem[HWLDX]; Byte *CrimeMem[HWLDX]; short RateOGMem[SmX][SmY]; short PoliceMapEffect[SmX][SmY]; short FireRate[SmX][SmY]; ** graph window short ResHisMax, Res2HisMax; short ComHisMax, Com2HisMax; short IndHisMax, Ind2HisMax; short *ResHis; short *ComHis; short *IndHis; short *MoneyHis; short *PollutionHis; short *CrimeHis; short *MiscHis; short Graph10Max, Graph120Max; short Res2HisMax, Com2HisMax, Ind2HisMax; ** evaluation window ** budget window short CityTax; long RoadSpend, PoliceSpend, FireSpend; long RoadFund, PoliceFund, FireFund; float roadPercent, policePercent, firePercent; long roadMaxValue, policeMaxValue, fireMaxValue; long TaxFund, RoadFund, PoliceFund, FireFund; * Messages censusChanged message(msg, x, y) earthquake newMap formalize all global variable setter functions, to go through tcl micropolis-activity/src/notes/outline0000664000076400007640000002613010724145723020356 0ustar simcitysimcityBUGS: * multi-user "select city" dialog ** Add about, configure buttons ** draw and erase on map window * configuration panel ** players ** keys * sim. ** command to set process nice ** first editor on a display gets a control window * control window. ** file menu. *** About (dialog) *** LoadScenario (confirm) *** StartNewCity (confirm) *** LoadCity (file dialog) *** SaveCity (file dialog if no file name) *** SaveCityAs (file dialog) *** PrintCity (print dialog) *** GetKey (key dialog) *** QuitMicropolis (confirm) ** options menu *** auto budget, auto goto, auto bulldoze, disasters, sound ** disasters menu *** monster, fire, flood, air crash, tornado, earthquake, meltdown ** window menu defer creating windows * more controls ** command field *** type in arguments to menu commands *** interpret tcl ** icon for each window opened and openable (dim) *** window name, display name, user name *** click opened icon to bring to top *** click openable icon to make new window *** make nice icons *** display nice icons in x window icons too *** save window layout *** restore window layout ** speed slider ** priority slider * editor window. ** editor view. ** tool pallet. ** various text fields. *** funds, date, message, cost. ** initialize controls ** autogoto is a per-editor flag ** autogoto toggle ** coal/nuclear toggle ** update frequency slider ** cursor tool outline (preview?) ** pie menus ** earthquake ** demand gauge ** auto scroll ** constrained drag ** arrow keys pan ** fix autorepeat problem * map window. ** set window title ** initialize pallet and menus ** legend tied to map state ** menu buttons that appear when needed *** zone type *** population type *** service type ** disable manipulation of other peoples maps (unless you're god) ** click on a rectangle to bring that editor to the top ** create a new editor by clicking on the small map ** open new display by typing in a display name and creating a new editor ** update frequency slider * budget window. ** set window title ** hour glass ** auto budget behavior do we or don't we pause the simulator? do we or don't we bring up other peoples budget window? when AutoBudget, simulator continues, and just your window opens. when not AutoBudget, simulator pauses, so everyones window opens, hour glasses starts how about we just don't pause, and everyone controls their own window. * graph window ** set window title ** graph object *** GraphRange ?10|120? *** GraphType 0..5 ?0..1? *** set window title * dialogs ** start scenario. *** 6 scenario buttons, labeled. *** new city. *** load city. *** get key *** dynamic scenario description ** generate city *** label "creating new map" *** city name text field *** city level buttons with labels *** map view *** generate new terrain *** use this map *** load city *** play scenario *** get key ** load *** file dialog ** save *** file dialog ** print *** mono / color *** small map / large map *** printer command text field *** print button ** key *** Instructions, Address, Phone Number (labels) *** License Type: Node/Network (exclusive settings) *** License Code: (field) *** Enter Key: (text field) *** Install Key (button) ** zone status *** zone type label *** Density, Value, Crime, Pollution, Growth (fields) ** notice *** city size **** city size label, description message **** town, city, capital, metropolis, megalopolis, winner *** warning messages **** warning name, description message **** pollution, crime, traffic, monster, meltdown, riots, demo, impeachment ** about *** text, pictures, noises ** confirm *** message, yes button, no button ** error *** message *** ok * evaluation window. * help * printing * sound * new elm interface * tk ** masked pixmap object for canvases (or a regular componant) ** pie menus * stacks ** Audio implement audio interface ** Micropolis About box *** messages /StartGame { % HomeDir ResourceDir StackDir KeyDir => - /ReallyStartGame { % - => - /NewGame { % - => - /StartLoad { % - => - /StartScenario { % name|number => - /DoStartNewCity { % - => - /DoPlayNewCity { % - => - /DoLoseGame { % - => - /DoLoadScenario { % - => - /DidLoadScenario { % - => - /DoLoadCity { % - => - /HeyLoadCity { % name => - /CancelLoadCity { % - => - /DidLoadCity { % - => - /DidntLoadCity { % error => - /DoSaveCity { % - => - /DoSaveCityAs { % - => - /HeySaveCityAs { % name => - /DidSaveCity { % - => - /DidntSaveCity { % error => - /DoGetKey { % - => - /DoQuitMicropolis { % - => - /InitializeSound { % - => - /ShutDownSound { % - => - /SetUserSound { % bool => - /MakeSound { % n => - /StartSound { % n => - /StopSound { % n => - /SoundOff { % - => - /UckfayEthayOlicepay { % - => - /PrintLargeMap { % - => - /PrintSmallMap { % - => - /HyperDrawLargeMap { % - => - /HyperDrawSmallMap { % - => - /HyperDrawCityView { % - => - /DoPrintCity { % - => - /StartElmd { % - => - ** Budget Tax Rate Percent: (slider 0% 20%) /SetTaxRate Taxes Collected: (field) Amount Requested (column heading) Amount Allocated (column heading) Funding Level (column heading) Fire Fund: (field) (numeric) (slider 0% 100%) /SetFireFund Police Fund: (field) (numeric) (slider 0% 100%) /SetPoliceFund Trans. Fund: (field) (numeric) (slider 0% 100%) /SetTransFund Cash Flow: (field) Previous Funds: (field) Current Funds: (field) Hour Glass (inactivity timer) goes for 20 seconds then takes down budget window and continues Go With These Figures (button) /GoWithTheseFigures /ResumeSim /Hide *** messages /SetBudget { % [($flow) ($previous) () ($current)] ($collected) tax => - /SetMaxFunds { % [($road)] [road] [($police)] [police] [($fire)] [fire] => - /StartWaiting { % - => - shows hour glass ** Editor File (menu) { NIL /DoLoadScenario /Micropolis Send } { NIL /DoStartNewCity /Micropolis Send } { NIL /DoLoadCity /Micropolis Send } { NIL /DoSaveCity /Micropolis Send } { NIL /DoSaveCityAs /Micropolis Send } { NIL /DoPrintCity /Micropolis Send } { NIL /DoGetKey /Micropolis Send } { NIL /DoQuitMicropolis /Micropolis Send } Options (menu) [exch] /SetOptions ClientSend Disasters (menu) { NIL /MakeMonster ClientSend } { NIL /MakeFire ClientSend } { NIL /MakeFlood ClientSend } { NIL /MakeAirCrash ClientSend } { NIL /MakeTornado ClientSend } { NIL /MakeEarthquake ClientSend } { NIL /MakeMeltdown ClientSend } Time (menu) /Action { [exch] /SetSpeed ClientSend } def Priority (menu) /Action { { {1000 5} {500 4} {250 3} {120 2} {60 0} {25 0} {0 0} } exch get cvx exec [exch] /SetNice ClientSend [exch] /SetDelay ClientSend } def Windows (menu) { NIL /UpdateBudget ClientSend } { NIL /UpdateEvaluation ClientSend /MicropolisEvaluation ShowStack } { /MicropolisGraph ShowStack } { /MicropolisSurveyor ShowStack } { /MicropolisNotice ShowStack } { /MicropolisMap ShowStack } { /MicropolisEditor ShowStack } Funds: (field) Date: (field) Message: (field) Editing Icons (exclusive settings) /InitGame /DoSetWandState /SetPowerType Demand: (gauge) /SetDemand { % r c i => - Zoom In/Out (rocker switch) Zoom Reset (button) Tool Cost: (field) Editor View Editing Icons (pie menu) /DoSetWandState Cursor outline showing where tool will operate color codes for tools query gray bulldozer brown road black white wire black yellow rail black brown park brown green residential green commercial blue industrial yellow police brown blue fire brown red stadium gray green coal gray yellow seaport gray blue airport gray white nuclear gray yellow monster orange helicopter red draw (colored pen) Panning with arrow keys Panning by dragging Dynamic panning & bouncing Earthquake Mouse tool handling Tools connect corners Constrained drag Auto scroll *** messages /InitGame { % - => - /DoEarthQuake { % - => - /DoSetWandState { % state => - /JustSetWandState { % n => - /SetMessage { % str => - ** Evaluation Public Opinion (column header) Is the mayor doing a good job? (field) % yes, % no (fields) What are the worst problems? (field) % problem, ... (fields) Statistics (column header) Population, Net Migration, Assessed, Value, Category (fields) Overall City Score (field) current score (field) anual change (field) *** messages /SetEvaluation { % [strings] => - ** Graph Graph Plot /InitGraph /GraphMe /SetGraph { % [range year month res com ind money crime pollution] => - 10/120 Year (exclusive toggle) /SetGraphRange Residential, Commercial, Industrial, Money, Crime, Pollution (toggles) *** messages ** Map Scenerio Screen Noisy Grill (toggle) Duck (button) Key (button) New City, Load City (buttons) 6 scenarios (buttons) scenario names (labels) Map Background Map View Shows rectangles for editor views Drag rectangles to scroll editor views Terrain Generator Generate New Terrain, Use This Map (buttons) City Map Map State Icons (exclusive settings) Zone Type (menu) Population Type (menu) Service Type (menu) /OnInit /SetMapState /SetZoneType /SetPopNRate /SetPoliceRadius Legend Max/Min / +/- / none (picture) *** messages /InitGame { % - => - ** Notice Welcome Notice New City (dialog) Creating New Map ... (label) City Name: (text field) Game Level: Easy/Medium/Hard (exclusive settings) Are You Sure? Yes, No (buttons) Really Quit? Save City, Really Quit, Never Mind (buttons) Print City Monochrome/Color (exclusive settings) Edit Small Map, Edit Large Map, Edit City View (buttons) Printer Command: (text field) Print Small Map, Print Large Map, Show Printer Queue (buttons) Install Key Instructions, Address, Phone Number (labels) License Type: Node/Network (exclusive settings) License Code: (field) Enter Key: (text field) Install Key (button) Earthquake Control Richter Scale: (slider .1% 10%) Earthquake (button) Scenario Descriptions Zone Status Zone Type (field) Density, Value, Crime, Pollution, Growth (fields) Game Level Notices Warnings *** messages /InitGame { % - => - /ShowNotice { % card => - /ShowPicture { % id => - /ShowZoneStatus { % type [s0 s1 s2 s3 s4] => - /AreYouSure? { % yesResponse => - /Respond { % target thing|null => - /Yes { % - => - /No { % - => - ** Surveyor Editor View(s) Zoom In/Out (rocker switch) Zoom Reset (button) Single/Multiple View (toggle) Click on surveyor view to center editor there *** messages /AutoGoto { % x y msg => - /AutoGotoClick { % - => - ** Help Help Text Display Done (button) Dullsville Philip Glass, Powaqqatsi, That Place San_Francisco Grateful Dead, Fire on the Mountain Philip Glass, Powaqqatsi, Serra Pelada Hamburg Yello, Oh Yeah Bern Yello, RubberBandMan Philip Glass, Powaqqatsi, CAUGHT! Tokyo Percussions D'Asie Philip Glass, Powaqqatsi, Serra Pelada Detroit Boston Rio_de_Janeiro Philip Glass, Powaqqatsi, From Egypt micropolis-activity/src/notes/TkVersion0000664000076400007640000000152010724145723020617 0ustar simcitysimcitytcl6.4 tclX6.4c-p1 tk2.3 tkpixmap-1.3 patch to tk xpm3.2a tcl, tclX and tk absolute file name global variable patchs tcl default file?? TCL_DEFAULT fix tkpixmap patch to support named pixmaps on a per screen basis tcl patches: config: forced: set stdlibOK=1 tclCmdIL.c: added global TCL_Library tclUnix.h: #if 0'ed out unix procedure prototypes stdlib.h: added CONST to atof tclX patches: tkWindow.c: added global TK_Library src/tclExtdInt.h: acc warns of integer overflow. inserted casts. tclXlib.h: changed (char *)NULL to (char **)NULL tk patches: multiple display patchs to tk hash tables: tkBitmap.c tkCursor.c tkPixmap.c grab: tkGrab.c library/menu.tcl tk.h: defined _PTRDIFF_T and _SIZE_T, so gcc's stddef.h doesn't clash with sunos4.1.1's stdtypes.h micropolis-activity/src/notes/TODO0000664000076400007640000000252610724145723017447 0ustar simcitysimcity* notice views on flood, 41 heavy traffic, 22 tornado * shell scripts & licensing include elmnotify etc * configuration panel preferences (global, per head) auto scroll edge auto scroll step auto scroll delay pie menu popup delay sound effect level * players more info, saved in database name, server, email addresses audio servers (per head?) save/restore named window configurations * help (8) must implement a help mechanism and put in lots of help * documentation manual entries for Micropolis, elm stuff, audio servers * manual (9) need to re-write manual, and do new illustrations must have a framemaker license to do this * keyboard commands: arrow, function keys (3) also need to disable autorepeat * save/restore overlay (5) write all overlay information into another file, like Glasgow.city.overlay * print city dialog (6) need to implement printing function and control panel from scratch * In file dialog boxes, highlight text and then typing doesn't replace it, you still have to backspace. * In file dialog boxes, ~ isn't interpreted correctly. * Start Hamburg, restart another scenario. the new scenario gets bombed. can't reproduce * Tk text fields don't display cursor on second screen * One person inserting text into text field moves everybody else's insertion point to the end. micropolis-activity/src/notes/MultiPlayerIdeas.txt0000664000076400007640000003045410724145723022736 0ustar simcitysimcityNotice window welcome scenario descriptions warnings zone status window display live map picture reconfigure to support various tasks editors for chaging zone invest $ => develop zone => increase land value population density crime prevention environmental cleanup enance growth editor pie menus demand gauge budget multi user dialog hour glass timeout auto budget toggle pause/resume toggle (to allow changing budget while simulation is running) map drag rectangles to pan map views menus on palette generate terrain mode lengend rearrange switch overlays dynamic zone finder graph 2x3 palelet, 10/120 years double buffering communicate data. ard wire in c? evaluation historical graphis? surveyor other editors dynamic zone finder washboard filter sliders get key dialog new city -- or "use map"? name, level scenario selection random terrain generator player can propose a city by selecting a scenario, loading a city, or generating a random terrain. all players must vote unanimously on a city to play selecting a new city clears all votes players can press next/previous to page through proposed city history you can go back to randomly generated terrains, because it saves the random number generator seed clears votes, proposes new or old city terrain editor todo: Integrate terrain editor code into map editor, and have a button on the new city map to run in terrain editor mode. Terrain editor will include only terrain editing tools, plus random terrain generation interface, and simulator will be paused. print dialog Newspaper printing and publishing metaphore. Optionally save a snapshot of the city state, to link to from the newspaper article. Publish in newspaper, print on paper, save to disk, copy to clipboard, add to journal, blog, etc. Allow user to enter text to be printed along with an image, like blogging. Can print any map or editor view with data overlay and chalk drawings, entire map (fit on one page, or split across multiple pages), or other windows like graph, evaluation, notices, messages, chat log, etc. Export text content as html with embedded images. Make an html/image city overview and journal, like The Sims family view and scrapbook. Printable windows and views should have a "print" button or function that pops up a pie menu of possible destinations, for quickly making snapshots in your journal, etc. Publish illustrated newspapers in the game, like The Sims storybook, with newspaper articles composed of pictures of the city, text excerpts from chat logs, etc. A player could be a "reporter" interviewing other player politicians via chat, before and after the vote on building a stadium, asking them to make their case for or against the stadium, and publish the interviews in the game's newspaper, the "Micropolis Journal". Players can browse each others newspapers over the net, and download the city snapshots the articles write about. Flash: Monster invades Micropolis, near nuclear reactor! (story and link to saved city so you can read the story, then bring up the city and play it live from the point the story was written) quit confirm multi player logout save dialog load dialog network city browsing and sharing "What-If?" history tree. Publish your cities on the net. Download other peoples cities. Use a URL to point to a saved city. Grab a live snapshot of somebody's running city. Checkpoint and branch timelines. Save a city back to the point where it branched, to create an alternate history that other players can load. Multiple players build a tree of saved cities with branching alternate histories. Like the parallel universes in Niven's All the Myriad Ways. Rewind any city up the tree and select available alternate histories at each branch point. Play back alternate histories edit by edit, stop them at any point and take over, making a new branch point at that location. When you play together in the same city, you have to discuss and agree with other players about what to do, and convince other people of your ideas. You can try an idea out yourself, by branching your own private history, giving your idea a try, and reporting back to the other players in the main shared timeline what happened (with links to the save file and history so other players can see for themselves). GUI: Branching history tree outline viewer of saved files. Drag and drop a history point into the chat log which other players can click on to open a live view playing that history. status control views players new player new view Keep and export logs of simulation values r, c, i demand evaluation tax rate, collected funds funding levels event logs simulation events extend simulator to log all interesting simulation events, so newspaper reporters can write stories about them editing commands Log enough information to replay all edits against a save file to recreate same city. This is the key to high level multi player protocol between multiple parallel lock-step simulations, like The Sims Online, better than using low level x11 to implement the multi player interface) Treat any editing command as a "what-if" branch point where it could go another way. Give players an easy interface to replay a simulation up to a branch point, and and re-make the decision, to see how it would turn out differently. chat logs everything else of course web service to access logs export logs as xml for programs or csv for spreadsheets import and export chalk overlay as vector drawing support image overlays with transparency (begs for photoshop-like drawing interface)? Careful how far down that road you go, because you could use it to paint the image of a happy emerald green city over a dreary industrial wasteland. The simple white chalk overlay has the advantage that you always know what's chalk and what's not. opml outline with geo-codes store city overlay information in opml register the corners of the map with real-world lat/long values allow rotation and scaling but not arbitrary shearing or distortion register nodes of the opml outline at lat/long points and areas on the map what's a good way to associate an opml node with an arbitrary area on the map? an attribute with a polygon in lat/long coordinates? a list of rectangles in lat/long coordinates? a list of tiles in row/col coordinates? associate geo-coded opml nodes with features on the map like zones, buildings, streets, neighborhoods use opml nodes to give names to features, take notes about them, attach pictures to them, write stories about them, support overlapping features, so roads can cross, and each tile can belong to any number of features. allow users to plant signs on the map, like micropolis 2000. represent signs with an opml node. signs can contains arbitrary opml outlines with links to other opml nodes like a sign at a crossroad, linked to the nodes representing each road, and the regions of the city that the roads bring you to. use opml to write a city guide attach chalk overlays and signs to opml nodes so you can show and hide them hierarchically head window Represents root window of Micropolis application to TCL, and ties all the other windows together. Contains the application's main menus and scrolling message and chat log. An artifact of the way TCL/Tk/X11 works. With another gui, might be the main base window that contains all other subwindows. In X11, we depend on the user's chosen X11 window manager to manage all the separate windows. In a better world (Sugar) Micropolis should let users save and restore windows configurations and multiple views, tailored for various roles and tasks. When a new player joins, the select a role to play, which will grant them permissions and customize the interface, opening and positioning the appropriate windows and tools for their role. Each role supports various tasks that might themselves reconfigure the user interface. User interface configurations should be selected based on the role and the task. Users first select a role that stays the same (forever or most of the time) and which grants them a set of permissions. Each role supports a set of tasks (like Eclipse's "aspects"), which users may switch between, to reconfigure the user interface. Players can hold elections to grant each other roles (like mayor, treasurer, planner, builder, reporter, god, etc). Ownershop This vastly complicates the game, so I didn't try it, but I wrote down some ideas. Consider the screen area of the user interface it would require to enable the user to micro-manage all the ownership issues, in terms of the number of acres of city map it would cover. It seemed like it would be too complicated to be fun. Even if it could be magically implemented with a simple gui, would it be any fun? That said, here are some ideas. Ownership plane: 0 => nobody, 1-256 => user id (note: Can't save ownership user ids into save files if we want multiple players to enter and exit independently from the city itself, or if we want to support an open-ended, possibly large number of players over time. As I said, this gets complicated pretty fast, without a lot of beneficial fun.) Players have separate funds. This raises issues about: who gets paid how much of the city's overall income, and who pays for city services? Could have a main shared city budget, then certain players can be appropriated funds from that budget earmarked to perform various tasks. But again, that gets pretty complicated, and how is it fun? Competition or cooperation? Should we attempt to make the game support competition between players, or is it better to keep it cooperation-oriented, by requiring unanimous votes, sharing the budget, etc. I think it's simpler and more educational to give players the freedom to misbehave, while building in social networking and accountability, to let players discuss, negotiate, make and break deals, establish reputations, reward good behavior, and punish bad behavior, by developing real-world social interaction skills. What fun would politics be if you couldn't have scandals? Land value higher resolution land value grid effected by sales asking price Tiles are owned by someone, and may be for sale, and given an asking price by the owner. Requires complex user interface for selecting tiles, assigning price, etc. How is that fun? Groups of tiles: parcels of land, for sale all at once, to highest bidder. M.U.L.E.-like multi player auctions for land. Developers can build on empty tiles that are for sale, and they're bought automatically. What's so fun about being a developer? Nothing to do after setting the price of the land. Buyers can offer to buy something that doesn't have a price, which initiates an M.U.L.E. dialog with the owner, and allows other players to join in the auction, submitting their own bids. Transaction tool - $ (or local currency symbol) select group of cells negitiate deals with the owners automatically calculates default land value suggested price (upon which the tax rate based) based on modified land value through worth communication window so people can negotiate and talk irc-like chat rooms where people can have a side discussion private person-to-person messages calculate evaluation for each player Independent and combined scores and statistics. Hard to define what this means in terms of the current simulation. Would have to deeply change the way the simulation works, but then would it still be fun? Zone ownership. Develop Micropolis into a more Monopoly-like game: SimCitopoly. A player can own power plants and other utilities, and makes money by selling electricity and other services to other players. Zones don't develop until someone buys them. Own residential => collect rent, pay maintainence. Own industrial, commercial => collect income, pay expenses. All zone owners pay taxes. micropolis-activity/src/notes/Release0000664000076400007640000000640510724145723020262 0ustar simcitysimcity Multi Player Micropolis for X11 is now available from DUX Software! DESCRIPTION: Micropolis, the original award winning city simulation game from Maxis Software, now runs on powerful Unix workstations with X11! DUX's implementation of Micropolis for Unix was awarded product of the year 1992 by Unix World in the January 1993 issue, and reviewed in the April 1993 issue. Now it's souped up, works with standard X11 servers, and even supports networked multi user collaboration! Multi Player Micropolis is designed to be a fun cooperative educational experience! Micropolis is a colorful animated interactive system simulation game, providing a set of rules and tools for planning and building a complex dynamic simulated city. Several people on different X11 workstations can participate in the same city, cooperating and coordinating their actions across the network. Working together, you can zone land use, hook up the power grid, build roads, bridges, parks and stadiums, raise taxes, and even summon disasters, causing the city to grow and thrive, or crumble and die. It's a creative, entertaining way to develop your political skills! REQUIREMENTS: Micropolis runs on Silicon Graphics Irix, SPARC SunOS, and other Unix workstations. You can play it locally or over the network on most 8 bit color or monochrome X11 displays, like NCD X terminals. And you can hear it on standard sound devices, and NCD's NetAudio server. OPTIONS: Micropolis supports but doesn't require the X11 shared memory and shaped window extensions, and a local sound device or NetAudio server. And you can turn off the sound so your boss doesn't know you're playing! FEATURES: Multi Player Micropolis for X11 sports the Motif look and feel, implemented using the efficient TCL/Tk toolkit. It features multiple city editors and maps with overlays, fast colorful animation, engaging sound effects, easy to use pie menus and direct manipulation interaction, simultaneous multi player editing, communication and annotation facilities, and voting dialogs for group decision making. It includes eight challenging scenarios and a library of interesting cities. AVAILABILITY: Multi Player Micropolis is available directly from DUX Software, and via anonymous ftp from ftp.uu.net (192.48.96.9), in the directory "vendor/dux/Micropolis". You may freely copy it, and play the fully functional game in "demo mode" on one display without a license, but the city melts every 5 minutes. If you enjoy Micropolis, you can buy a license over the phone by credit card, without leaving your seat! A single player license lets you save and restore your cities, and play for as long as you like on one display; a multi player license lets you play Micropolis with your friends over the net! PRICING: Single Player Node Locked License: $49 Multi Player Node Locked License: $89 Single Player Floating License: $129 Multi Player Floating License: $149 PLEASE CONTACT: DUX Software, 4906 El Camino Real, Suite 1, Los Altos, CA 94022 Phone #: 1-800-543-4999 or 1-415-967-1500, FAX #: 1-415-967-5528 Email: micropolis@dux.com NOTICE: X11 Micropolis Copyright (C) 1993 by Electronic Arts. Unix implementation and multi player user interface by Don Hopkins, DUX. Based on the original Micropolis concept and design by Will Wright, MAXIS. micropolis-activity/src/notes/sim.gif0000664000076400007640000034552410724145723020246 0ustar simcitysimcityGIF87aNBNN##...00066999A?2LLLNNNNNNkM!kNFML6DHMONN,@pH,Ȥrl:ШtJZجvzxL.zn|N~a$$%% ȳ Bӟ '>&\!Ç#B("ŋ3bܨ#ǏC)$ɓ&S\eAS-Ip6-͛8s洧ϟ@ JѣH*]ʴӝ<> իXjjpׯ`ÊKٳhӪ]˶۷pʝKݻx+gO% LÈ+^xXu˘3k̹ϠAS;/6E!Nzְ_ˎM{ڸo{ N|ȏϾ9Uf}C.:ֳc߮;Ã/<ӣ_=ß/>߯_< ܀h`` .`*O""v"H&&M(4"TW<@)hT$L6PF)#QU3%\v`)dibI3n#gtigxީgqBçmsitPLh.h>*iNji^J?' ` cjꩨP*QW+T5Zh뮼6kZU.*RF+OMN̰gukKKmXe魑ԵD-F,az#@!\W"[+ł%V{UXwhr`e-ڲޘBPC3(<^q y|4 r nω:"5H*l6`OB}y{e81/s }~#H:Kqsa0S`(P9nt yЊ"д!RPH??F=z)VRW>*"3+iGd0AեN[dզ9BF8WIma ㅢ }jl\#*SYlR1|8I1_!_ǔr.ۥ`zi=1m >EhLdStAxIr˄Jp~D!rZ5緿eLӖeE}%r'TϖfPrOnv ISf PhpѢ iS!,!HZm %iͫ+RJֲ+Z^vKBl$j?JW4h22f `stZ;!αѪj]'e3a&qI hX}tEe z:,R+S-hʪ8nw۷v$sSXjMri. J[g&Z-_ՄԺurrK޻ ԂMQX: A "L1,%@E^Q', S07aP&?OHQS/L~(NU0gL8αw:2U HN&;PL*[Xβ.{`L2U>՜4EG)ِL:A(j>π$0F;ѐ'MJ[Ҙδ7N{Ӡ) AXhWVհgMZָuUqMWG@85tlGGЎMj[>)IEkMrNvMz" xoO;oܗa(7{ ǷEIo!O9şr0gNV[n@g}2]ї;Po7݉qGXϺLJ~P\"g9N>pע+]N:Nn$4\M/x>Sgi~;\xr|/rͧ <1wV= zs^^a/"}p#[=i/ُt_|.~?˓^ί=?o_Ϟ/ÿ~xS n;]?zO2y%7ywf}v7xyҧzW|W7gtZ:W ~'/z|:؁;H灢7w;x}WNȃF>8"~K6HWZh(xoɇ7?CX؃[H=8+z)8vw$hO(|"Xg{ħ0X2Ȅ\ȇ׆whvG+x _ȈjȆ4i{xl8{/xx{h|H'erfXhn؅ȉ'vxv9(~88v+]-xw׉hx樊nB7OyLh{F؆8ˆ8CqchSeHxxsXhviܘȃ(}7vu~Xi)H9"(%} ȁ hp`z1Hݩ$6 vGWꖝYth>I՘.zt@Т7uDnaxp艤T~PZȟܖhayF2gou8M W*>pS nZoAgpjq:qwZvK]:|P{nmZz4Zzd|fWz,Iu.v}Jzxzpzu7!z}ڪZN7U7.˦|7: s:ʺڬ:ZzؚںڭpBvzުh躮ڮ:ZzjqXuگۮ$׋8ˬ& ۰;̺vsŚ47 iwF";$[&{󪯸۲0WT ;Ά6{8:;&`[-BƱjL۴NP p`TKV{QT ^_;a dbkeKg kl;n[k;M Zx˴|۷~z y;; !L ۷PppN;|˴ K[!!p+p'{B;wƻ;{˼K+˼˼B ;;-YrP ˾zW[Tq{뾉3{[[췍ZuL[; {[¸{&Z;z < OT;::ܼ9,=|@۽9-ALNPRʬ<İF̩]<\X%ĤIK[1Ѽ{ܶsly,z L }k <&<\k½\,6LM[kħ"=$]\e˜͌Ο06}8| -|L B]۫+X}=@|B ">$>גύm4G݁|̴38 ؒ==ہE~F>̾JIHȡRkХ,]g ԪL{-E{k,.w ..nu~r^~#~Kt) 「\lؐM +B.O>ELפ>.ƥ߬~ߡ偬Ѷ-[}bF  moQ<ͮvx~.E|pCɛNƊ+l9~۴Mn=~Kl E\ի-WX.~[۹=b]˷g^i+I. Ծ02o^"ư*O豭UTN͜?\X^OS- , m,fʶ˰+:3 qYwnΎծ1O狯~E`$̆>Mh*l 0〝7>tLO^Z^¬nd{gnwK cn񦋷j.Ox感?.? =):pD@ CA e^ Ub]+cr6QJm)zEa0А0 *Q($ 3BӓM2$TA4 UT5vu5 .ĤdX$#!A::@ں:[zZ{=]}:">^@>?~<+f4t8 ɣA  PC<&ă &Ll=7 L@RTE!knEp1u ̈1eiѾFpX4ʻK1(.}6r0k8&6G%_PпBM~L!X"qL8YUZm +qVUf̰(PJR:c_kvޜuiKLoVh֧=t5XH ޝ:6ڀO! #x4C=0p7O R;$DUԎYkБG^Fqkձ\xM썗af;<=ZjuSVYݠLit#ڵ.O}ϹOH"&j/60?x?^ 5ᖛެM5C-\U[t5'U~+w?rS2C=Y\#0;Snެnh;bל.#NZHD!z ',P{%RA2Ww|&pwUD!cXBL9˭VĹ`q&szCXF)6RpE#saS&&+=JȀU_ɞSIK^Ǧ8I7OjR%l(5NvV N# )FA#Z*IT@8i|4j2Ăcsps'2ɩkLpiUP şEG/Mд2 '&(DJ>0=q V@?1#?1CP=qS"CQ#A},leVr\%weVl&a< IHoJ0Āp1ڴp*)CTqn .hP+//׋Q6ʟ2#P"q!Mbs.FO6137QBNE2:s32Q2FTRhp5Ȣ#j j6 #2QfD 5;PJk. sQA(So*QB0U3/T#3D#$S13/tD1R-3]6Yu~DTyFk4rT87!94HR9iIHiIaa:tm2XXp.@[ 5=7ѻiΉ걲?#Xh?`؀rO 30A6#TOB2URKsD/a1u$vbQsD/C-_Vt6]3FC}= aUk_ PVou(k5I]WQ()ParK٨;ZԯZ 0[C+ojĴ--sqSـpQ9_[u{?v>oY(INp" aqn˺C#6R=b1R)3KS"#z~s=WTG\+)UuVGVa(H4\WUgX{v³YZhYU<o6Zvo\v[%ZKC=Ėgյll]ĝ^HKNwN+tJ$7 ?#o7qJo ą 8 W,,TD17 $Bq/7S-4KSɊ8@Eo΄=wzIf=q6aWhyCy7 yoYax}8zao ZziW[7k(\-˕7wPMVQ^mW(~ T- Voog.Gpx.ar#؂1;5C7cj+y -в*WטF 8Ii5(KxOhQyo`8|x8ߦX6iSjnkjRk/Ǿ׃R]RmQ aX~t| 0Kk `ĐM0pd v.yoF!h|vb!˔{5Wٟᔅ7.y587zh_ezkNJV#8ܰkgLj|ԗ}2*"^?OPonwƆpFu^FZ'2}h:UynakZVB83,VVlOyuEǚɟ cZ}:Rע > "kY{o=Vl}l^Ym֠ nuʈU  P?,0  BSꗦ9̬=&:=?wiуgNz7/e'_K z7ɚ8?Yx[JW9:O*].RZ/>LZ}kp ) R{eM97;A ~! ʜ5h$tEFY`eǷp֪?7iayy:!Zj]z^]{񺣷NIO&q _8.r/F.0*(;|ีm]eb֜p8ٱg1/&f6TTeT' 3ͧUVb]3eAo,`1,}깱x4]IyZ3}}ӝݧ; ]-wkK$MϛM2NtNW@>OMː1>׵^x`]6{K p21pʒۀschqKVP>Tl}ܛ~w 5{Lݮ{ژYeVIe By\\\#ھ./p}U,%C&{O&^2q1^{{W?).]]lٝjSƮEIɻa XzKw۴FռB]BPaa HL.O Q|2U.Dw ~рu۬9`8~ &!*2]P*P`uAJd>dDD:2 LUؔs W|2ɧ4ɖ+OL#&8d m3';/zId҅EjE^n5* {B K _J$P@+~/5oĸI3\M;68.c.ĺT2ēg[O#zլOajF}cA8E'ܷOKMj8mBiKf. FT'͌T5.?\#AXb'WE` *bZn[]B)J+"d'Ba-+Zm^3=c CYրK2٤O2$,PWbWJil/QEwHC51qpk\s=U&^{'YCqgGH{!H!6zCXE&Q[]gFD_vaH0bW86Ҫ[z [sjՕN+}XRa1۬BR[b2r[|Z)ˏFIBٮQb?FA_4a\o۠ ہnp%CS$EHLu!F1KS/=( ~  W2,62X 5'w(g"۴*SS]Wc-5>pq"WrFxB'žȍ-yNBnE'|&A厯ۃfEրV%:;̵ږ$N޵c|=]!F3߼To홇c-:mس=/6w޳~‚\p&sot$?'(xɨ2稞)jڂQrY lg]U`B3鱂i[! 02aբ׵zq ?b7чX"D"#|S[%*E[lL QHhFgNAp'| ȀiL"7zx`,4 "c펂$5ᝰk*l!';y/2%1!VP\:D ѕ?4+׀Uщ|bm)7*%ٖh6tAƧipCC&k F7L2T$`^rPS% &RH.Ý"a&F3VOlE/T2CH; O!OB4F(*jыb4(G;я4")IK*R kQi|4`6DD1v[Zјvao):-PcpMEgz$jyPb*Ȱ .kN {'AUlà`wvtm,]<\D•oX]'#`B6,e+K84KK"7eMk\Y P˟rC-0連&S^0Fu~u gշnbt9[+F 6 ptVǁ9|VerZ +y 1hsJ…*Cd,\K)wf[eNS+`8(kIŠֶf1Ms c0Ms ˫_}z*@fR,֢Tʝ8>31TU;SU#I(?u;@IגdJ39jn!WͮRahi(b΂vm' L"ضD,zQ*>„lcPM /EMId1f..M J{ʭx D\6W(׵6"d7G_o¬q1 mkc;6o;7ms;; \0\0}g8 {l-@c/qے LQ#{-*@L.+"pd!7_"ڬBRIЅKJJOMcJ?S٫!IGA׃_zJ'a< &P7իnc=Z:שn6fK=z78&g>rw02 ~$"<{M-M <s8pp!lԞ&x `,u]q| rr*Sxet< UIPH ҇!P{݃߼/`bC?qtwY5mojkHw}tm]۠z"1`KS&ɿ F (TP >zWL@ުUR&,] 9E LE` cQiY, Z,Ij]ZyT,kKPXXA5!YDraRDvVVW ,v\}!ȥRV"E &\ G@mHC- ‚ M*b+"KՆ\.:W0Ea/޵Rэ2E@)Ĥ)1_6NRNi767S0b * Zu ̵aUP#?>!$[p"] bR;̠*)+,-L,T']?dlE_tdEv+zRfeߔa%zkg@8}_QY!}2u,Ȇ] ` 6%6Ncˆ."ɥa:6`: \W!RM$.c%\[VNN4A>[(J[1+`D~d-Hddee>fcBH6e""jgKXLLg9lzV11:8nf5N=nCQ~hZ6GUsee]Mg_>qjcbDtu:Lu Fpw~XYJ\'8˨W e{e)^eI 7=s}%( (*bg"(*fDi)E)~djif *"*Bhj⩞2j)cJFThhd-bn419@&/LKM*m2MğI8n(%TF%DIrS+5)`(x'f9v@"YӲ2+=J0if? R\Bg^'Ա &&D.fNj)*j+k*v lrf2.jjjI~n(-z "ꝍk&$ UKk-]nhskϱQ.z.XeR@̵mL1#ٞ:vй忨kߴbj@f>kl,(b-"l-n,nl qi.Ȓ*ɖ,ԔN@쉾. azaGhkz`I@HmɔL)Zi#eB ҾĠBgڲmBGn*l6K^*6*.,/޺~&rr,؁NJjɞ-@,z.M5@鎖r_:%@ ^59믆kjSn7|PA;%@Af SL)  &&:kR1.m-/ݞ/W1q#l/'5Jƛ䢃Y.0 p쉪֬f S0^p0d&e1%B _A*}ɰ_ͨ0pwY~DD\镔#mh îW,>ajC`/rkm .j1zoS~qaǞBA.oj*qˢJ۝ƀ<3rPƂlϬmq3nbGm8s}%s_&𤽁R-%UViLG+SvDK'@ 1Xr C&/LO@Db2W3:,BsoO,ʯ4b3c3vl,>NX٩33$9@8sNdO<#r>#@6Ve~2t~a%CdIЇƓ!&*ʕU"dˊHK|Iw2PM..Mn7s"o3'3'5J;"&(Q/sTP7[u+ nfds3r[DaߌmI!@{wiS]&-^C 21 6)&%)kQȰI6eONd6<gOg) &)Y,/.e+yr7@P5 ?w@P]IP3l,2hBh@wwxU'v̡[@_ue]YJR}SEεQ"8mde#A?CgPhkaFZUj9+ w7`.)::2CtW04sl 0-^CGގt:o_3z8\8_xAP@cGG_qYθoy 9J'xt`:8LC-HYrgbyqy9sz/p!:+zR8ux݁uIߡs"za GYl#YZ Ժ\Jβ{9fyCy%&e-l|ͫ6k蝃,xxQ0.:=M҉/ztRl[[+2vD%ڦp{E|i:})ҍ{bbxZ=7!#{g"|=-{cZ{a;k|;TWXqc5ЛK7s1r3=A=4Ƹ}}ꀽWugSy>t /ƏJ=f"cp|y9?cű<1||-@oB?F|o|*=3zۻGpFAH8 ]dRTNf"TJBbX|B$`~F<>w|a<:A94D/6222IJKH;8P5RRVUUVTXQ]",2<㏾<3bO4jk2퇌qr2svux xzvv|{r}$XA N#0J(i>,X̂B)Iر܇ <h02eL9SS1fI2Jb ^pCpd -Yb(]\ 2K(z z[4)RJ$iӛN[bM5TU)3_HZ+cxami&VmDp po ǃ/gsnADlMh8N!#߳˘3$IzN}hZfiQD݇\J_S0"/TpA -" c-B 3 pC5| 8FR4c^ iEblcDP&Ep13[V\F_0m\aɮN8!*Y9+㍉xdG[veݙ.Mo"#<\"U&SVE^֠V n0UdWQ7iɵlj$ų&Eo[c&Eu5cw7nuI4'_.iaǷK$1e33S6:Fb8YOt)9Svsw.҆#Ҝ3#LDzLO)=0*! c6|ڄE14җגn0쾿G9Z׹'˰k7GT"DPȂwanشnO)C]H(إBYJf2ۍNu+[lxCJͲxhg IUM"z4{ P>yMPFaBU"Qs׭0a=Lc#خ[`GL"B~&PIK^ĤD:75T^BN"\IC\a/}KAR ^Wj%AS"LEO2e[Y *]&3V(B!5.N\2ʣ' ]=i/2k#yC 8'IErh(zZHk9I=a3 iIMZR  %l)Kv&LU7Ӛ;ifCkp;YI$hM<{&EQt+`<8Ɉ q,j$:Cu k]$OunU&hAymyrdLr+|XZ(ICZgId+Kuh);G5㤣RJNc+di+WZؽCel_HSےd,io} `Nʣt9P1S&ZUR5JU# h ڤ8;?-OIY:H;W{޾Žv#C&\ĭ^Ta7E{eg(ʆʕB2 )H*ܬZVd\_N0L5ʜ,A#`q[<ӪttMvBX8a1lPo|TPM>{P7%Izli:Vͥ؎ W|JX-U9yaslPEQs׭$- G`w!VBBC vtp!q(qPSx.f5OAɳug\U"mqOk`+wld'=PlhGuGnXjv M͌Ey ;J`^r`x{3%,Ґf (82d̀#N% Yj]!Y EuM~rtɦa\ RPSˍy̙ݙ{4Ejw ʐr0[>A> 3i??X?,B-L.{9a C1fR63=@BPD[s t!9#K^B`2<ȿ/ܿ1L0,C4lF4T6F6|CsȕP #3 : _ b=C$) 0AD(>ڷsFlr(AYX GDK!LS?PE@ 4KR,b*E)GŗI"` 7#jtAD0 0P/,8IP #F;`ʰ8Yܸ8[|M[pK rMM̻\JBlãB#LE tJN 3\2LLO.Ɛ];Ft˼LFc*OTRLQ> AܫB4? H?b=0ּ'{L{7B*;s #M PN Qڧ41EӀW+!-z|W22IYO!=d!\ m6;қ1Q wɚ IMcͮӟ4u~BKM4wPy50 P1ЦD)Lm<;!K-})D}TޢQE$TyPIbBRKm% ( KR$Љ}H0}yY\Z= Vԅ6,\QtYf05 EPme?V WHWIuіjڨ^F2d][^Mۗ[p[۸^] X"Joo+a1\ hH+\U*MTDze]U+1Mz> C., &]"ӭpg<%=- n]O}]SHͱG"Q91$J^`ʽԕ@B.<(L]E=u-ZVN%K2W%2b*͐P`UƐxX"iRdQ_f D /.f=]R>MK:D<3ӫ߫+Hh,a3`8V.06XbMH{0 wVB ΃ E6F%LaȠm#IRNhFK!b0,*.cX2hdRY4ݶoy1f6Y4Ncv:8*`qU`"88E2V$VcϬ7BEv]XVH&h6TCh1^:eFƝh%쁶hPpk0 00Uni FcgP9`u4ņƖм8%chx Ȗiރ:|f o^ 6g!ķs;uyưUl_%T«.׆2YVk~n`]c 嗬npk.,2H&~  C@ {=9oNC_q|='} 0@Bٱ;,vu pmR-rհ-f>ː6h^qS&"ƚk oen 38Xj p $i~9lKνPS@Ul: ;`DW78&g:.`jBŃ ԾBB]8}FӘ>QВBnTnn0btqt qڱtZb NwIH#jcՃoq߭NѮ^7TZ ~?Gw7_'tR2CkP8WP_SW ROTWo _"[ "bp("q&6#q*b\d0 lf~󈕬VH|`MMm\n/g|=pMͲsSlg fq8gx{(o{|'|7|w$dl良tNwtWR'RT?y "u"yy\}c"J+$աccPnzkռlº;=v;z_X09s^Y,u v'y׸w'?GXwWW|vxqz|ѿt 8q'$fKs*jO*h2c ়ZKY@AߎQnYg&8QBI90P $:JZjzj :J p`Qkk:z{pp[;; I M}} J"N{pp>ޮn~>o 0#p\&q`iS1OL(F NHd ÃBv8 ,%M('dҤ23:5Ь ΛC}z3Q=q.IhQR24Q::頱d˚=6ڵlZ$7J+g?,Xf!/4g7拘e4f7 8 SV||СHfzQlEFt";JF떱߽~  1 Jv*8 {7?tͭϷ}{?_EvBG5R%͐R+dK6auUUPUO`M\9UNUX&zUz!UM!1V6ވchHeF{Wf 1,ǒ(QXeV qE TrA@=iYHn~xIPŹ_r 9 1dCAHS@`y`% |)r7j{jNX*~a^}$H$ԠJ,U 8ֆ#rbN>+T3fb5M[U!n p(R]w_f)aEahz%uĖeX} o1Q˚RY֛Nli0"oP "~(rw(083)2ZC(z)u)Ϡ*8J T^M HMO: %R +8#Rʢmւ-FeD,.JȒ x#!^CY0HFQVA?U?%fQgFnbۜ. 6fk#|:/-=}ON%C u\pgiݼ8Cs=?K?7[]Ukz+ lH䷲9+i-DE$2XjYeY!N]tZ^.K^ASh <rB+ T[L\c'"5 -yG8~H'z8mg\^'ش$ys0H~{FbgR|)H8=P<%89G-v8["Ƀ|; O)l AJ^ F(XuJ6IPba҃~K-lf # ]eB!:LCkf %!q`:`Ng<-3bv?3۴{xF ;!"iBQ)2Vy.:=gcoR쐏dh:JQzdxC|iLk =P6Y9M e(N0qD`H˨jr߂ս ۷( Yb5͙lmkYVȵ]D5Mm$NR_B900q3kh"wh88VfgĪx̲&$eP pN"Isao݁3:mϐ0Sn]ے&5_4&Hϥ>Z(ig2\5(exN)kPyZn*[d-FkVz_ -[4|-hlu& 4s%MQ,l`'00Xs2Bd:cD>u@X˒E5]?qXi?@-x_,Ui Nuh"m?G$go%RY3ran}ePqy>$q;?fjԍG 7c6N0`?nq|UBkaZ\ԬZyE&# yT|}G>Zʽiw&O칎6IZH 4ٟ`sv ʜl'|w|Ln\ݷqgᒞ5,D`:ӚStq+z,M |/9|;dZ#c1uDj"Z:GAzRcf̸!3@?P]HՁ⩴Q5rVo.rmojJ~]i"ۋV4@Ms ~-p- ʸx=ni1<ū`-㐏q͊v(O9oV^X@nD'Z:sT4x2v4Si j|˩z4ijmc݉ݤ*}@{޽zh9$p?xp 9@$X7:`P LM30pO#rGj%*(fjs;s( iDs&h{8)Wd KfRJSz)f|%GESWFuU3\WȵeFa> I}gT}p& 4g $!yWoTg'cHe8.h &CK$hnfp94i_p EqTLjc?ScŅPZGD3Gs E Nt1#l+ 9f-'*1\7]1f7GeIE~no~asTehרo`c`L !nwaTNV%jSDTܱhHbl1$83c4vf`D-d<P%6'd4s4 QL32[Wv 衋X'ȒV}*0{d?jb7uATw1wMewи@7|KɔM98h(W`؆gy4y?%?qX ccIXYOr-fnpi'nz zVE; <tM7 @ F &)evF;SI7Yf1ˆP@)J&5e~~F^H~NIi9ǍS9߈iYi j 8x R8N7j8zq*w Ő-x鐩.%D?`\M*fYm*T%\j:Px~ciJɫ L%zjCN !+ Ԛ:zؚʢ%'e;h2 r'}5 |Iٳk6C3)YMs)ʴ?cIR[ul' MBkTwggi{mo q+sKukwy{˷} j{.qš/y븎۸+׏ۈR+訑dJ]X8|6xH1QNȅ3| 2kbJdJxkNjɫ˼Ѥz) Pq :+< 黰e{RR'85S+9}:ſQ=jesۻT` ,LlWs{E?ZչzDERhMeʵy\D4|8 c r.MO ŃQLUlWY[]_ a,cL\,e?w:brY$Y/ ˆ|JvIod{e\e^Dl(< ,+Y$ʸ2ʥl8Sʦʫʭ ˯,˱L˳l˵˷˹˻˽ ̿,6[gIR]RM!hvg'u\vZ Ȣ lcZ=mo q-s=kK2 L}׀%̌҇%" '(V"Ӟk,ITԅlv[HL֝))S}cɤ]ڤnZS O۽ۿ -Mmɍ˭ -MmM-؁|ޅ=C0+=.2]0:E$;m}ߙm֊ܾMt%a5ԙZLx JG̃qm%')+-/.0BN׀-i"mg?仐-.a#3x—?퓎Y~ȳ;I}`^ ~TF!Ng`w,sNunwy^ ekq8=>An5.K1-EBǎZ<ᔺl(u|Hsb9KM 2fh| C6ⅆƽ.NnW,l|#Hp>+#FNry $r6{@~lFsf527\^^ɘy~}\'봞]j>۹ķєl/OorL=ϮKP~^n8G.;3`mι:}kInF d֩iI\>`@WZzN MϠ,g5mtmgik-et6>Wn#ӾiipXO-1?]/:kkM gneF0\;2辧Pe5ɮ_eN$Nn/OşL*,qzmўo؅N 'nފ^1a1+{% E:6sٮ 0:(It&Og1^T~Vl g:&CLTH3!#)'(3579;=?ACEG A M30+LJ@f%@$4twy{}u?bbf+uM>88gONRR-u#5"# C.fPƍ",|7`0=1F`"6b 2࿒\NG%_! 8s暗0@ArI& )ʁ .(h>J0?64~Ii8rf)U$Ry*i%DJZjnFջo_P]($>yҥc vI+̘2.G怚lۺy,9pAV^[: 9阃 Acq''n\a4Ee$Į{}:%tGӧN'=yOrW7kQd?VU/;(9f=<NڪKG$|/K 9Cs0 '0X [rYM5ɐ΁ɸ :1>C{ڞIpB:/x a3xb7碇2x!@-؊5N6PJOP%S#6*DFK? 4&=k?;}@m!k$H,0B i;.WL2Dֹt5-X #\ K1[C2/̎Qjt RsHSV%I&-ʙwM<! 9$s`48# <ڗ_2Ki3H}1.xTHbO/)ړO){ N:K/4L-Y*Td?EګSV9I]jHfjzB`a-5yUdWePZVu>H̔q̢;Gl ͛]#')')_/ !K@7ע^!& (ӺFaAE襎3@ R)QjԨXݩxh~8w5Po7,SvW(ٻVv;Xg:KT Ɇ6lR@?Y},fEFoxb.E`&o܎u8qa& %., 9}. +U0>`<9OC@ aETS"E)2]u!;qaBTgR#YzDe%3GaAif@=K@ ǰ9VH%|cZnѠgFocXwJ.$'A!12\ L>EI/:72L<-nd5hRf$'nsE؜0.L~\~xYFd".fRB椅ey$2i=J.$ B -@Eb=\o1X{J|bQYTyJ!~%VZi*)]&Ӫ5E#RAH+}Cs30 YrPp W84bHTLtK*kZ$U^8gE0>^C Cq>1NĘN'3JҰ4CNSjͦ5.`J^”SKebJ rF|j#op(ƌ^gʪ0J!S*.qh07rHlε8t$rr.~a6R& Pn5>6(}"(ԍCEb{6{J`  pL8ʏW(uR+nkdn~==2ГvD07cfޡJ %CW W+ ILJTHr~G.pRT"yM.r&U8uO4۹Ĭ,ˌ9e~*L#t]mM\Rr%@3 4°`h6BX"Nס”m"n (@AY׬ݬxЪWy!cs|gqA[oBÄt֬E: /EZ`/8o₧5L2F:Xm\. qH+֬$MPϋhD pDpǣ~B|O.irO-~ ",,3bfLkLNζ̉B%.5% > / 9Rp b/dc0;. QhCM"K0N#R!bmD// so11i3| /OۤML֌ N͸pOҠ D֊~#S.:bHPmht-o 됲q Q2. H̬`#"'JO(Fx#YV//B:h0 +aRϣ1G }^1!SĜ̂AL @4AASAAA!4B%tB)B-B14C5tC9A 4C?B٧83r2[krG3Fg::L.&qG%` yМ#Hb1Fmu_ PJJЉC@μuz ;39F:(|$ٝbv("mZn)@Moow;K*=\? }Asq֯85~c}A~Ka)ykQSkNhٯ=K#d;u>?5I +eqbSېD)w? }7);,\=w KcU}59gS- :K~%e'B lHGR;9ڻq%@)> 9I??2#<-]'}~ w ~]^r[w^~+9̰;o%+rYܲ Y_ DvHgH ?[uwN&/ #iL2tP C(/8,5M&SK@ )п5?F`!a_#!ddcc%f&g'h(! ik+@L,-..o/b"peDI^^`DCu v6v xxu77uuC`5|<}=v?@+Xp)„ *!ĈŠJ5BcAz @ƍ*WNA"5LfDb͚:g<ғA !:h /ML-;ĸ8gD @@"eJE5e(d 8͞ȓAi~MJHGK0Ċ3n8W?e̺zq.2zQ' LUk*P0pp v|es0!e{[H.j{!ꓠ7^h(ġ`~Rʎ$(/r~@%]ϑ=?M5 9D j [U#SI$E 1E3ݴUWG|ąo)ER)٨41-+טifopas<ƣpp\׏Jm$LTq( -/NAVQ.&)5R%7XA-=w~>E N\ vqM ӌrVط=6e}'T B:m*"7հw:{; oɦl0?}b'3XhqvYa`2Hd\vT91c8{O%QKdEP,4Jlӄ~ԊPu-›׎h>髏֦ܱٯ&>:TC|sM((0C s`%v artb1%Oc+Iu}02݊>)S 1mo@7t^dXKBSB!{'!@B\ˆBVYy,#֤VlԵo}f<#ӨOkWrie-LjYBߤK{R`h\1:.rP\@yTk$p?۔'U:NPy_dUn=IJ(jAJY $C1PE!lBS p0k>D8S%J Wb'ʩC4J K3ȴY5Є4?}-lc+Ҷ-ns򶷾-pи<X7sjb.t+: M'Vz(LݭN@+'tGu$,'I^Q$SV v(|j:QH;jїe[ҝ9i@4HJá gAkpC,&>1Sb"or5;K5#h? ){U$,{ċASr{I%ӗ3{J;\a:xcQQOy\00a L۩[!Pa 3A&-'hN/+>4E3%&77470mLszӞViJԦ& =׊AF&4S%:Q: E,p׾5-a%UC2 >{6/NQFN[FN9aL5\KՃӭuޭ ZFq+9|{淨 g/x7dKMN{ph5F\}KIm7?>5lP![fvV#TUANӼ&W R>7GQ[jc0z+b+1GNɺND`@)/l b?;Yrvn? =Iw󾮀`z;y䅛\ٓ{މ7jY|92Qe4SyK >0ug>npsf 5sUCj2@P|~9zk0B0&V 1@ӅVNe* HqLǾvD85c+qfyH?u`?5x1UDB<=I AzM[YMi(B4V/^5uSAD @ABPNᑛ E-!%d8IK5_,Tq}q̈[f_١؍ؽW8FCk!a<ԡ!Z;,G8I! J!*b"""jm%žDT-PTi]N(N\ePҀQqT`0@ʆ\J M +#5RA%#ߴNwۇ-_ X5]s(as8_U5Rn!9OP ۡfa#̽ӽa@@ʓ58C>C"1bEB"bB&YDєUJ`T`_`eI+(Ud--~ҲcB)I62ec.XMN# V^`$_4]O _!9+8Ia+$dy%;ޕaP.&aqq$ e&T&fڃFp_%G.$ѬEg$kBគ0JIE`G ᔡP梚e/pHS~S"m"O1>'tFgpݦX}M#T#u#i6:7_8F)9~]:j&g£J!&'c_IUh$ÅY1c DDiN@:$N`k~RHN,0vrdm 螡6g1p:pR,,g @ejU hs~%嗈"(НVY.6~@ H d(N~ UE6fc+XԍiGȂh{ է [ݣڥ_XuX (D:f^ÝBUN+H-jZhbLLJ"˜@$W`o+1 gł^(~*1"1aD^Q×Fi Tixknis, ,4[FIᦰ]d{lku+~,ga&<\ީhU diJbɜ\ICΪ ܂. -(-E e1LNNDʎƲR ZzAP .%gĪ*qf# zdrZzlȒPFlv8i}R*6%V𽥗E\R-gG jݺm&f+c:+ PjEˋ)P (,VifH~ڨ&*m؎TPvH*RlbJng¬Qjb̢(\R d!VjkTmzFJnay Aid:H}b1n7"C1MC.*,.,qܮʆVb'Ep(&#onB0P0fo/z.nr2"mWrW2ҽ+DzA -+I H8q#1RAF@OV/ iJqZ1oX(toCM񔴯*D/;q.PB%)r$2&5͢_${op?l'CV~n>sDJ9BJl %6-5NzmiHiUե4KG/;o^vD/O3Tte1+(yrPg#Q'y)3+&/O1ש4#cSfVǃW/%1gq`ʴGNDOI·o2@[0tIJJ$64X6 [LTyw8zW|p@H?OW?_K{&*vJ۷,caCEH1=s*bGJ|.08<( Pd0C&S JLD33G>cءn+kd*JT\Rp|t2 QX @MU]emǗtME"x(IҀq('֖vcpzgwǏ =ĕrbd&&92PB&%qI<4p&r<$& xJX d$ˉGRŐ@(G'B1)`"&)lrщ 'RUV'8V" n DtvX :ª4I!8 uJd@A0Ypf@Q* .'*:a . Nh3*HB0rTa %fŬH&-" 4C7E>#EcxNMb3SE\K-D OP#9h;_ĥ;VP5VYW /Sf6fHl쉦/z]o,]鮼,s!\ w ;zmq97Ok Y pX# O/X#0!,"''j0)k"ebˎ LLatsT┓!TӰ; *p 3C3SQMң 3B z6bze4k3PO6nV]^%;C0mUË]fb-ock盂 gGڵ/ĖMrZP`,Q  |CJ-gE2%8B!I %,'SݡzxIW]y~7ao|ԑ,CLbX ] ئe/ދD#eB4.2d!# w*XKe˚gGTYx-ȟa 5fKBf# ӸB"\& ǵr=Q=)4r+ b81%2&;x)GtMŝ/ѧJ̡  ֦BԠc0j W $%.y)`G!zki-2TX*T,V&v=xOqrzxK.=w3+jSzzMy!9S"KYJBW4X ;TS Q(7 ;Mx;Kx+ekԻi;e#<6f77nh髾<$F4c{C1:"kCCDhP/0H+6{+> @5;A_Yb󇸳Ź#` A;3Am+YkJ<1ǛgR ;AtpABc#Hԉ&X1)32YC ;=ZC<[8D%C,Ïa#CL+?N1:yE&x??? SBɫF =ZܳWELZ88;*NX;CXN8^db ƵLJF2!dFyF#FjFWq2sd$42T=Ñ(z+4# P3r{R93H4H4؊xLK#$CE4sz腌 d\;Q Qly6Ӹ? +y ]\NJ|08ʄĉJl+1Ê227hF#'4FsJXKjKVy𔶾<ǜ83b31KrhxL2#2#X \S`몫%bH DL$Ft4/(Q3*CGĪR DҌ6DWS8Є<;E%8[E4d܌ON SDa<85A,F`Quq1OSG&0 @?S%LE : }PȄPC=TK)sQ'}C8"? =QSJ3`j`XuRSOĒ$Z Q()5*D,-4R,S1ԨVhOeJsl=ͦ>ݎKK\(CM]P@}~؀؁%؂5؀-ITT$&2SZX8՚{+֔"3B^9Z 0^1*2&xc)p 0~q%<=b@>@A&B6CFDVEfF55@nЃD "0s0>|-aKYVnN^Ұ>0 $ըYᴑQa=J$OdZertfB!R먹m3@}Y]4bԠ^LImGYcq-X{׷ud=~&6hBgANXd UTa ͥTUNGX[ Z^Ukah`~]`b,,-g>hfiNjk1 xYhZ0Z-xKzzr;NQ"*6FVfv븆빖뺦뻶^IvQ >ªk\57\[2aZ]DXiʙ۵%cAؖٶ#tI+mn>hӧ3Ru@6n O8 fw. y8-tcVofv^UJIE`: ۿՍP8)SjBX U>N!X* ma(:.q&b.ma\՛ּtP7+Ogn2qF9086]q.<1,m r./0s.O0lMʫRMѫ;N ' xU\L9nRSl[Vm>]tellqhD^W m2/+CЩn"] rS'ս%'pVcHo)~-8;~%b7cGdWeGv@1xTp>ڔvL._{˝ڶS/q5Nq4%,צ}~u׼bt(T/Y^T-]/"ry*49^B޻Ph_c`yyy KJ /#R č qwYH'zwGg`Fycrܝtt_l^+G/u@&g* *=G&yP_kB~HN>|E_vv ʃwDj5Ґmvzp 7U٥67'r'www֚b~ BM( __oXxg}S3ZHc.#/$rCG?|>)Cx8 yD" żWKΚGocZı0#sPaNO! stu!suur&&CRUN%% WW㛮3!'!+!'ON8}VCun! 0bċPZ=uc:?j,V"IR\ReBMT %L2Dɳϟ@ r!-s"iJ]H-3Oէ]gތ:xUt 6tMˠN*K/ڿ,]`£;!ƪ-˗1> rϠ#Y%e@<3װca8sl޽ Wg8N\W NP>w"S*"w^ hQ*[ bQƀ[[i\'bpd<'EFsAgW$X`m <,v'JdY-dnxڎ;S w,j|`H&L*9MPFRVi[-Q(QqwI&q]NE)nթiIg{{:zΧ袌}%~VG xaTwx*RH' :):sK9h<;)!, .&;N>n/B$3 .:;Kzz@A(0û;;.<&HtHgʼ,gGD& 84& [|DŽ!39,BɣL)Х25dB& J*1BWY/VAu\r>XAmpJ[Xf:0W!g.g8A3 li[QX9y9PHE*>luU̢'=l`A׶V7o{]RuS[eDc3F`$Dr`u" pz. x{(E^Hfl}{JJxJrʟ 8}ړ?R7d(+)`2l*~Nm …@lx8r)/h0clBbvboykGrb) X\] M:bArP9,:yhD#h[J]38 @k%gYҢ -dZ'vXgQڢ-t+Pqp3-p]hq1xX׵(XQ$-FJR ڪJK&N1fJI$dNSDH՟NJ෾tZ* (+~%˪2Z- Vx|IM, 9BW\jW_; 8cH1C>: thZ2&Khs;o7H˅MWdآOҭg[CdKƁL:hd:8^>.Šb7cG@ЈNtH86dp{8qѶHHbZGf8ѤP`ǿP]V/ʨ@0$eYJak`(K[n׸ZYz _X$XC(SpPZB yg<]bEOF&\#d"?%1M4d]Xb!/[\Eml.\`.O{{ e.f\x;mjET3~y@:Gz (B<хWeB^b瘾zUeU=jԝ< 4W[JNl@UJͫQ!bk8 -TPa ;\Wjʁָ-b`*t6B}pTw Ģ|s|`Ǹ܎IǺ},Yw[KE7) %zbY4 XȔPIS(JT66r)zP5TkP `vցRU5ȋl*82Bgyi1AcsM@Mhv!r7̤7wGom71AxCpDOfpjF əPE]v{W$×^DzOl(SvGgg gjs '%*P&v=(~09s^(Hs*$G0#F_ӉdW65`QٞI7XSOJt)@RKb\)g苸"=lH"68(Ϙ llMTL ,(8ᘓeM)%3NLO4ZMHG iODp酱 dOZQv% 9fg$՘qml u}prYGr7ǑIs7Ǜ~6 1'Y6s1oK鞂:Hk)TZ 922ELk#8w7DMVg,-L'cH Lc:& z8uPl+Z-GxYId'{f 0ZODS{؅C*[a{W|Mx.jHeW\r蛸v"-Gyx]&YwqrI^1RkJbp*Uxjy :KKKPJ`s5Baf_`!jslIuW,Rwqnlzg6W vW#+ i(QUlF wȪ p'%Uf {u$bkFgv|lvO S wy]lurJi]-Bʯj2iC>}1;=>kZ{7a?qF Ĩ{@Uj`j "sȸ!*B"A ΦM+ 5T(Tq/8ǹ:df,JDW&ʙ#c$"鬲i"p{ WZP~0Vy`r~kY!ɇIo4Ǚ'-q,Buo6i^ ti'T I4,5|68:<>@qX~vU vdlaV6VpURN Q 4xFpДl xQJѐ-7N6kѕw2(竞*N͚LSYjp<Ӯmf3)jdo0쿾C>ie^^^$H="V>ɇx\~<ޕ8_N~aNc^d^"riaۧmw?_~k\fv=VbR)ʄfdy *^  +bxq~ȣ!JXft{Hc۬{MZD4}6ZħېR~lSP}&-)'87=>~>gw ТU0 z|~/vJUop N6^rFdl+/")? 'Ư nb*" /(mb$>@_7?NoMplO=ZIMD[pe</&qT'/HZoҎ栜Xre ck?sl*Hp? ^٣-@ET.H0>皭n![eI,l:[cT*9z afFAp!d1/222Pr3SBtqpO56qն56Wr7v"l9[{;Ą$)A\D[CAoƢAM~`@4y2$q;)RhմygΛIPVTi+-z5gUvzՂ94iܷ%kٶun\sֵ{ol!WM`*>vo3^42+X~jSNH뉫'IʜkeV+Աc^ƕWm&*f7ga !)@c&Ó 4=2c0,YU $fA,ip|xIH0):)p,+9'A#eFq,'Pk<$\&|(*,2Hr" 3 ;.X4N1DT*vN2?$6?LP\ :،چM$4r)@}NJ݌)Դ{T!a7 Q5Ul:q0uizYhfDljF%ERG\2i&U 3PݫBCY{ ܀  ^$}X'u*K/r2-5ޘ=䐷/Ӑ 99 ;fisfyWO+Ny1,M8qi]* lSԪ8';;S7|jѥe^YنQ&T~[&W3.;HXTwXA"cul+vsΩvWٖtۅ& q'z D| > *-p&a1(X$q R>.)#!1e iv5V9SCFkl^ӠBrB@?WQ B2e@Bp*  Q )V:U f{Jǯpkq DCudZ˜Co#s޲>ĉDX2== Z^NymӉDCw2""򶈻1y8^"qOJdʒ* H"H@6|ؗ;(yDw1f>  Phi4EuJz,XG=bkehK7J5Ky78%¸ʄo lͅ@`p5D\ R,wnqкD\b}z[HvXPH"ԀFugP셯}$P ! iGU!6Ԙc'$-`N <#H*4U#4ӜQNc*DVޗ-HCfA$('T, x+{/ZVoL; &/1 x-7H&XN`Bl]'O]}RYEV℡dtG!Ãg@W }XK&L?ےHPq:BP_A3N>`ews<*DMxq$^HZL:,bY,nj%HMȡ U%j BLvIg[ȂT;酫fWS)2>)߂`?\%hlN`-6gnx($K5ntÛ7Te!$ |=DAxZLm7Td#lA L3#FIY&oџЋC-nedTmhUz qἈrQZ3k8K/{m Ԝ@%hBڨ)RgzICҼP+i.&$2,g|ŤXm3kXPI\k[ ye^c~ 2 'vꁧz8A}TXN`mvW:p(N+ư}$t^@![Vl5r}VtnmS"l朐̻ݙ[R՘n~3/\9[vfûpT}cw=)gR!]S|0-}ԟܐ7Oh*zI/M6Umey3WvHzgͺYϦO}EObQ, avXP7b~Yft.eCNفB*Blre}mpp-5NjNx?6n{ݙkMy7&PeY]R NC8srܚjfně 5X˲xƩw|їDȗ@z&gdq^aNnQ9co8׿5bC~MTriH%팩'H4،Ih+#ٖ n. 1lȡpHp&Bu$Hu$# JwP*£Z-ؼl^f(v)L_N묜*j4O0. 栤 ϯb0l Om O*A8cH-4k~n 2Oh"E7B:7嗚I LePQulNf, nH\fRo9BmhXhf\/jAq:E PCFE "< @0 ']f ,Ц`Jp!0 0!{R@m  :a02 jqFRJ' #- GaEi'fhCmȜ%P ex)~rNg)9PQbHf\Pa[N,R-\q&1q1qf".U2F G0L- ؖE,, ԰l<QC7?P _.vNEO3}E4YT0PJs^"P/DH;Q6E~j6(i87sy&-v5s9&cCRs0B5De 2Mc Ѐ V Mt ބm;#ˡ+=Qq u-">'Q*N)b̪"T?s @BSB8d22e3B'M.53Q2pcX52SYU5h gXs%fiX![Xr>m$I$˵h Z( %CJ'n @R2l$%"a[w!Mb*al ~8ufOpOp$/<)/Fd,e&JeYS Sh(C/5BSS?\MTGUJEV5 Y2UKJV3ԌgaV'q(WvTkG+$T2$$m6oV 3A,Z#<*#rWwywwAw wy+fC̊fm'@yT@TQx"T{ioC3˖л(lwJ}~Z3em`qI7TnnpiJLAo#DBeK@IJt& a7{o"L|(Vf̄9q.*2L< <2vuuuy8axlqx{wRwfPxzxozݱzy֣1W e CjxDt}/~8֎w~G~ȰmnE9^mπu\#\F1d|)_:"~HJ`?@`8a6R)Ӏ,v Jڬ@C-rc gousY󁈋x٠Mf%yK^Y7hwY*-i%i!|?#GE}6YJ%/іq93ma hـiAC7&Aj1+\*B-bm<@C 3P;AۚcZgd-ix{:0\{)P*zo9"lLuӘC=jLPx٫lY=%I.6ȱ9e%EҠf'!:EQ`AHPn'Dl(4$0 R܀ad `r+۱C0"tuI+GK=m\&3~|6%A ΘZhj*w5۸Z9$Ζ PBZ!Gl.8t, k4B&Au60a%!۲n(1y9Vj3AR5y[;mMQET^K'hipc[z0&G\đ3t[QTfd\  @w{ȃ\ȇȋȏɓ\ɗɛɋ|c3O61Hy+Q6V暮Fn((e~/°)>X[MtP|#2$OM!Mg rϕy+9˘Ug&x6\g{*Co}KPNϷ-@iCt[_c]g[ݞc0H#'0!Z'fAI|@1:J!%#ARH:'/;Kk-܆[хdY-˹XC2O~K3[l޽;|^^r"xX=os==R YǷ6}uu0_ϟy&|}6XQ$Ğ}5n2h'(&pLe&0cͿb꫃|lc&^_v\}xȨQ?1y#@@]7TCޥԉןe+ʷ71U h >J$|BѐPa\حZrU҉ lH ϖ b0 2Brq @rA|pzvJf>JHj~9 Z.3/FDGQWSdkϬ(x3 uI˫eǍ)3D2 oh@Q w≧"~Rqza"q)u L AߑrکXQ7DT1 V~m* QZ@׀&ث.蔃 9ƐVHͪBhLnqs=2a>_4Ǎ!&ahUa\(IfUdffi'XCpT_nIecz 0gNe)NЉk5J q3GdԲq&H2s9ǁ3}h=DxSSM*`SS]մѐR5 &3!shGis.dRHٝ7QL46DSl'{жUԢe'd[RX%Eі;c}\BHeQHbyX"1Tr:bX" >JY@+, ^A -'SgI_ qGb/[`dbv"Fr@lV7|3~+,*hKCZ@4*jW[ $k]{!ə,qU=v$p_W r}d!wnᲐM0΄+dZ״[5Ü+\bw2ZQz J#Ӥx}0lH,sPqcqޓ{pѽ=:l8DF/CٟX>fX"?d &U}c `()١)\%+Ȼj@L4؊& ,gH1l-8a R&_J>d6Wt"C$ъlDn:ejH`2C("HX|Rq$% `-ĸ-fh5 tKn8UK38Ws?^;lAHD z/% (ABV<ֵ`Ŕ”f(SRRjI^3"H)DXC :=Q)>0TԫVL%Ж1;I}^B^X)L8 or]8u9WL;u\ ¬aٓu S暳~ DlS,ī,fDMQl3ͥy:A_\i%lUF6"` l=mT4{ІF5ADC9Tl>tlЮ@Iqd׺ H[튷OьtVO'DUB"hOk VuURjK_qSF(e K an&ibxml9YVqW 3uvF0m'4OvMM?CZh6CS3ct3':Scz?;lN˴מPiNNTQmº7G5[_49|HH\-Ud9b涰*m :檷UbclխP>}Z~ZUU.~'֝. ]9wh-'K~yd%ELTf@P4 BGG(9JҚdp[L$ol}-{'g7iPO8j/uz)?JzэhA﹁']J;V3/pxh- !Gw; 12 ʑ| _Qբ_mZ~ٜ ]5QAZaXGJ2Uk8'jKх"˔$)QܧY^2P.2ҥ7]8"P\d sPѷ hv]:;*h{u_=i!1$ !""?jRAZhύ憖&ϵhD{c_j#T؝ifg42G)&p`>=;-iiwvi +r'@0c V V Vgm%Ĥq9TY.(O/.薛u (b%̓*J cJjud"꧲"EDHT.G8(ݭMt!(d)UXOTS Z8VE.IcuN9Hⱊַrk1θj`i%aX^wj|y39詗Q]VT3W8Q_> Ķ="feХJ=u R͉j+I$ KxmîYkQliLdMJu70UP2@)m!&f:^Yh |Ve-gL /"T%*.WdAP0Ațm[ZѿeJo“%3B,B@B.kJuD(nȅlnrznr̬mJ!E@]zjRlU0#$ ªN,iT]U)\98+Z{xH!L<-Mmt'n8}˲>N"* IxkQ25̖27g5!44 cB0^..:0|M(rp{0CHT, uŖ*d^yd,Hj:瑖Zmu`9^QkcUgdLg%W(mbۖ}-u "ORƯr%Wo[Ѿ/ZNe؂\./PLZ'5F !@s]nWn.P.?%n~p'{.\̈́i(2l(0(=WqJ):My?_%&m9i9/*VT 8]e/>A2^Dm .*.n]J /2MŊ#*r؂8 >;2#Yo3==Rݧ'klڌ gKt( *djnhp.[3V 5<]-s>n[K4 R'^HT <c9ĭhtՂ rkZBo'\.žN#oe' GH," tL!R|lnǦ I$\V'ڛu;'{[e@ q`2BETTdVl\xP%Y V=זn"_[ICDD FEIEJFHDLMOPQRSTS.8Z1Zڦ"\ޢ]]:)cd6fgi56lmnY$[lqs.[g0^`f+L PZ~OCbX")nD3bY$(U2d0D!eR$B!F V|ZUW~:`UUOVnbkѢĎZ Vbjڔ(ފdyr %3ƃ"eh-nf\"2 hp g{ ܙΝ}=3 mD RCr߆Roܒ|7dqɕ//XoQ2Nuble7g:coG|y)sQ.ćTOc[7پQ2`$3ǿlx'Kc /*. g, +8%BdHH>"RPq>OL1Gb&` $aٮ H( fh˂,J*+-*ӌ/r "8N<<့k(K4B - K.c("e̱2ΐ92ی= >ZsE>ez+.G~äUUQ83kV\Y0#=K6x|KamAcrY$ơi*6W+*@-mjAxBE|rttZFy!1! H~!H%2%y]Brךn ʞ2֘6Xs\=ASM*ʨ2 N*>.Sԓ>.5tgtEmC,$5ǂeb2'P{:BI[KD[snRCkc.'mD`[HG{^`D\n#hlp[u,Hr t͛>&ߏay3waF"t؆a@%|C ʍ{K:@1u[wJ~y/-X8Zεh1xcʺRb喙 Pez`WȂBjq CKctfD.`taL   E xNpt4 ?s4`b!=^x)D$*4չ%rΉEOXF(6d \|6`EɩZ)`%k_+]JXltՂ beO}pT)6d%D{PhkRKj<)Д-~$ԢB8"*סvs3RREw}HLGms sQxhvDt(!/ Wőm ԉ|6=G a(iL&pFQQ?iMmJMXt6+C1 Gl~\_qUiPR@i΢uU;XS!'8?t9T+r>4E&^t"GLe ΨOl+HQ6ta;lEj,Ԡ&)G))UpIKdKҍa3ik]Z[2:c[`pn@A Yj!y}F =%l3&Lؕvo=GPk Q@VauB^"s)~c_$bDl0lUnb7J)+prp '(nC|/Q"nqIt_q\#'yM~r\!u˗d\zj`h~nz%o[bJO eә?:}bg1! r4akwbM$F:^S%"q(XڧšOk pߐ^nC~,MK ߯CxÿpW\|N=ZMzԧP}]z^}m{^ѽirM)w pY5ܷ٪4}}_:$V7ՃkUܢ{gD7~욿ZL. .!l9 @@<@3>_ҙWt@7 @ @ @ @@ AA,Al {6aCfAiQ"w#Bj9>-&鐋>.˭,gٛ5S3<>.6k.tȶ25s}AK6 YAXҸ:;@q DADBd)DDLDE\DFlDG|DHDIDJD;JT:DS>8 :9fXD@+Y*j:BBs:Bh/!DX/c6ӯd+x2z'Qilj bFj{r:4?LdLG|G}G~GFG}4wHPH EgRt +m[ [^Z#T$*%&lA`>b.hTg䗴Z+7u+bÜl+" in<W MMM NN,NXD kEɂ%|NKfd>Xzp*9SrN]TBoxEWOfd:r*RK)K O{ț1J+_l!E"+`Lr Ф8mn" S#F4 SPׄxQ;S<՚S?S@ TATB [%2#R)ś&lTHZ$QyRiK-5Ķ^sLqZm8REl4:Qe3Q )-ƛd4+& ->SC,Tg}VhŽCDA VlVmVnVo p,Du[_ E)ڢpORNxEb =#JR4 U.C2 -}vN:bzH/fU?Fzc/uүi| \͑qo;0"H:VqrٝYY9WuGHHUR*]iE4$]p!Ծ|BX}°)@^R57?KI@ؼ"Cw*:Y;W%_eDmDAB$E4M`zT%8`  8ЄTW `-XRrԎcd/TW ^*V[!bb% AΆ |f J7`Xtb2;9,*Ǹb*065QLTc6^c7J ]K~@D]]Kl=~W 6dR݃ rPI=S MQa^&&ޯZޞ^|U#k/A_cIܲyccncd>fe`DD`<ic?>f%1QG^dq nd >gZK`Z3H UJUe]L\ dI1a2&0-]̓\0&畄7Z8=9_]3iҜe0 !cE<5<]in g:vD@f;f8ݚcZ㛆jfnDmAB6s^Fv C&`g\ Q#焂$aVWCadV[b[r(~\>sPb#Я;x;< ieeR?clY.GfV>mfZhiim&`ڎힾ~pfv.(pfdjƍE(VInw1x&+˅߅L~ծfgKjbQ#̬-eɦT&4uqx. mU730h=K^ƒOH8VZ Y pm}p0XKQqm.qD\jlxjnNg~YjjH֐TT.h|$L]s6vrJtpS,nLE2Thq8J&O720hhsBB`/xS^NqA~qG&qpi^Ft?vqjqB,n&DZuZIq8uT k*k,·ׯE#baOaA#ՁΨ Ka6/ \c $/k az ,0~ܝP27/k"q<ILzpnpppK?IphD^qo>qt.jMdElxإS`V'y0UTGq׍$rQ>Q#^}]w*_Tn/Trb'Q.̶:edu(5? +?Ő-.Go}1'w$0K8es[x9?{W?Lz'Dž#f:%xD􏯅ic|-H0fn^twtt>{tAuDFVS9gSqwU{,1K5ܝ5.̓zz/ngeoWzGy0A!$ˎs6s? NZGb/;LU?}zoцRnx1xEtxii\p D@& ̦S4fS)jVXn :NrrI&ɦL@(8HXhx0aq0p0J z ڊz{a p{ #Ijꫩ 1:ːMKM{zZ 1>N+ Lj}*/ԯV/_@ 8 .\Hô!*gV)2"FȐfX\9i> %(6NHJCE ѥLY*SZ}爟DJUK/Iˊ!J} Wo"ղ5ÒS 8"ARIQ<1WC[VTC 3eX! gФ}xir6Op~gyTYfAAΥ[ț}?r#:m7JH' 1͚@Yu)q9'\GGWƂz2ۢ˹m3Oj7a*Ou`wuK? *j-xE{\׺!Y?}#:!}J8'" DCݓ?>$_#]3lhxoz+wGvc6>NY t$PG3Sdh9[*#C4>rNx.;Y|Ge,OH Uuى&N!+z;a=U]t /xbdéuҫ*W׻1uO #!g Œg[Fe-ҒV/ _t _ +aSʔD+JShl9Uю(<%mX`5Um Ģ9rnQZ_ Qx/||/hw8Phͪ Bߤg!w֪Y!Yˊuhe[ ׷5t]׻5|իZ:լ[!iqh'cOYzRvȚDPM@N*E0C ~Vr\y 8T0@f9k7Z+ `85y $\PPGhj %SO²u\rtNvTc"5[9 MӇQIbU9x]а'"#eE 7K.+x n 7~X9ςb֟{ fvÛ=W 9 pd *dڐl2nBiB`[Fǜ7 ,pn:d$ HQ2VtNYNOѣ(=y/2[&3{):jDOWpX HKzҔ/LkzJ/g/OkĖ=b KVp4ϲyִhGP-K6wiHYȎT[nj2QܮT:#rsx@sAw]suE>O7_g1sEF:m#'{yN+| oK|/k|ɧ_ϐԭ~U,U$g9,֮FlF1Rsi+8n ỲR$bfҶ[F tJNީgv@<%Nx{t7N3B㌝j@4)pY/ ~o/dz{VC>8%Ky{k ikƒl}3M.Tɱ,`|9{ȡ-cso;L&MdTߖ/1 \. "\!0ϥ3t? kqMloNmfz 7"H,GgYPYP8jyUrxP02u6Q9e6Z=kA9fk=6qtc-zk ˡ|`BG7[wBS3 1veSӠnh'Ԃ~~ހw8Nw'NgghȆm(6n(s6A^QioB)n}B#f%,G't&%26|B!$зJ?x@$n' Aa'0gV'U(F=7+ctȋjȋpTHbgzJfB.!m 11A'J'(0 1U]od"`Jbez2 HVw$WAB2b|8@g(2}☌⊰[h3QUVe XɑiVe8؆H'YphX(ɒYC(!#&cԈT8c]edgR8FI$ 胵AS%X P$P'2ԊI%w"satPaiɖmo #ْhr"zu b{IX,u)XV U(s2c ?hS=ɕD Q="1vhBINzc[$l Ą#sbyoL_iɛ雿C8gsrrX*L) ՌJ6-c ~c്(D ~H 1@sI4H5Η9afH92Q.6 `@vnIK8HI)e)ǡps'&P7rQp.f}yQtX)Zr/ө,,6?(A mK?J 24uew2d%: vdD9lYpg%Y8Ty^0sJuzx"9=&xyꢗFO j6YGF%OO(y+й"!Fr 8|ԩΒ?!>.Db$:“::T+EI9YϥsDt_z(J: Ufz}sdצnJCdI+tۚ,"Z(OF%ڧ'b$&-Jy&瀘u>at.rV/ jʭ/r.6GI{':=9T-!&2-ɞ,E'r`Җfte|/۟*f 0'.Pl71d&K8oJv](zO"xȯ*rʜjg#ǮjbE; ja{ydki;r*g*r[P vtJ*i -" )&aRs0jq8B2ꔼD7ls6cSӚbxkQhtbzz#Ƶj:yjKꚼk ~m{F*5x)z+-$G? P$ڇ9皓y2!,BR"[* [ƠSϺ8qӲ[aÚ&Cf2%;gkǃڅgb h ȅR>i˼Vukž7)Lk[cʶ3 3={+ G{fCz^A.ېXGh2Qʸ(&1`q_ a,cLelg, òMf 70bҌ  ~vnLGL`)¹` /5l݋üØɟ<NS˽vȅl, ;)"dSq4˽˿ ,L̿,.? 8 lA;nVL^K͌%NkEm[jUy*>g9LPzY+ֻ;l>4qyb~/8R = 1Jчѻi Ç0ىUGAi@6:RomvnG^t3Xho,;Q{#>,s[Lݻl*ϖk\ j3zbֵ'7" G:I ^~hn0ొB*!Qe{莪tH.{uUt((T5jG8cwLW^/}wTL[V:yÜ^݌L>a@<…lϨM-EB'q]ˡc7+2[\џ01"SösC 6k92ĥKC10=2h;4ڳm>9Ϊ-ۡlg( $ba'2a:O|kpօ+Q!ZM =stUK'>:FwTwMx޼!cڂ1>~B ?s$6| + eTڇэ-B%]t "גJ|Lj첧-db1gŠ`wtw$ZxJtJ?r+LL-pދW.?NQ2V+A`2XL/Xy<͹ |%Qw CkT]3?}ȌÛ.nĸΒN~S^S-/AˮB ] B= ͐EfBkR>-o?5'8ooٯ8)ߟWΑLDNh] 9 *z:/W@"#F/U|ށl#!AH=.ѱ[y=0vM3>1?? XbQn&ӄJ(o#T(U̱ce|ǿι۵ n9 Q{t9#/~}n?^3uy{'̻I>"Z Oo&SX4It>QI"e @vo8%`|t<o3[ 2>#Bb*C2'+cB> ?DI#CMQA/>XA_?bd?\/J~}h\-,klO >!zCN|'Wo:!bNz qѵqsds?b/cg?)Fl6ݏ{L#g 1.`/*@Y4"x+ FR+%`Gp/u QTLD_>T&!):#*i{=s F7 EiFQdDDV0 }K{L?{gOi#C?x^LL0GN_uю3n`(>I|H1JL(5"KJ>O)V&Jh ?v%p(N#[.Gvx $qls,_kYTi#9w@1g jЈVTS3^+ 牗\kVVmDgXm -!ofTX\m. 0%yWFg8{#洆>֩!pl{. i(ctNJi/֤Θ(dTO$ 5̬x1)NmVҖ1e.Eߒk16yRf{>nvg1Z\(LJK `Dm(UZi5cqC18f'1!w rYN O_Cdh[AX-nc|+ܙm_$f$.nhGԘnkͶ&GZd7t)ǬA}.IԺAPfb2suqZ&7\fczbKPd @yY+ qb(cʬЌh(@nAOb,BXw󺺜I#5bwu*!69_Zx0>32F3f~U'ʍ#S@ޣ`\~5p67k;p{ܷX-m1}@v]U#!5I¹kǯ՘d8iGӥЛ]p@B̫<"k N YS]Bx_ꎠ8[A~zgDƨSUwշ~z}z\~xVHU<Ȟɛ4tϿ(Lgg.!8xoȼ)Ejjb/Ϭ,H$t4!Iāe r~I Fl7 3|X-NwHpΥ1i¤քvm^,̋аhO C V)ڐ̬H0&smh`FeKoeqrLlN7 Ȁ iH1lK،U1NESHv.2O.j.Z\nB#. F>,gG2†qq$tsj M E/p!tKowϋigޑ( Oﴐڐ ϡ Z/[4)ʌ1"1r*Ҹ#֭$h ց%)3kV&OhSB%E1-$5i@륔@ A @)AATk˼ 2A.t2N&SVsD#/qSJ&EC6yEgZ:8Ji"F}Ԯ 4QbLNp,3-m s-ERK0D.d= >T>۳?ψԶl0OT ۲fTPkP} Q UQum7oRRMRGCڈDAu=ODVr69(/UGu9w" Ҽn"9/,Ul) 즓J8DL̥;1׼Ռs  ݐNXգl?gO6O&L `fFʦ_M_g__aō5.ѧXR?R%6b)6?k+h2T5'&U5eb ERT`3VD ,3l5bt)Zz5'Oo6YSM::U!e"NDrqtmh.N\p /u]m I9kru4^v^5fC:34m"On3f ɓ'bS32SK7vqw"V$tdEd\nnL7c9\vsIe'r *gJq q `OdWVhF-+.BPqڦxjO^5kuGkkUlS7?![lm@&Q_c&oe:W~unw}X*5n,c|Nr@7!c7%$M\]M2UhE,0bn`3l!H2Jew34af݈+FrF6 u"fS+w{^i2.UZ 1myz2W zkv${k<2 (T2=<"x2l#v5:6Sq Q`eorE6!cI%7c$9A47D[Ҍpg5"咽W(:aXv甁fCwUW9Nֲ: mxνn`MF+zmz{\֍93rf`d?") TQɜ##l$cba4,tU4?8ҕ E9m\Vnfnfq'Gi;*S9i3,JF/q#lvCIa22̕UM9:CŠ<Dtf3L7MB9{y\0ٶʶջrJ@mjO* "ڬU:~[J(FIW! Svy)6+7$#68 1mնlxa:뇄6LH9VFvuiڦ7"PT+iؖG$SW9uՈk=M;Np;]š/»o/|6Ȃp)Rz49ڱ,1&o 9eMVBW+Lx){WNY( ,E[ҘK[#Lp-z:i=&xǡK,';y xW ar:ǝ;ʹe}ڇk몱ۅkkRJPśo̓ 5Y3!m X^zz6|\ {6ۑ]qx)ZGW8otJtJuʤC42qTa8qH vyIV\pgAy\:7 m\yqz|z;!~ۺvMRɭɕʙ[٧\[˫;:{^͍۟Lۻ=۾ZY/ pι'wYNJB!|9Saq1V$w-2*lX)<l8;ݛ:%-+oxgsU,vE}fnr]騁\ ]ßޔMURuC享=#Z~92~.͸ꧾ~.GR}ݝ+oB}[˿YU^ !fW}6>Q5BfŬBrp5@U""Y\eJLXGIhʇ*f+g‡^*,'l%G ICU 0qCDI_t_T557uxyS:{;|`03>BLx "TX0av !sX@ /ۘ#Ɖ*8oTir8Q0SJ8 BR (RMJTiѡRRj*֬ZrړYgy`S iתm[Klq.uS0`G9H ;9,$Mߣ%Ehq&k> Iu w6'·? gȕQΫ UΞ}ݺ-IOu`>@&烰P1S[?ٙ?]ܻzko_'F}d F\ONL p!6=SeSRSMTMHS(-"W}Oñ\xѕg]ێtu^vd!ale&S)4q%HCEQ&rfݦg gc1Pd@Wosʍ>y蟘x# .s=hWg y)uHѩLzŦ:FuG*#wЁ H+&X ` .ih,͔!R[gN}@REeԉQ91;/unXgY o Y%)y_ eRą XT!G$\H"a9`Z9)ODDEX Z`s_[801mR.֑65aBJc'*btV |M܀ͧB|'*z (ѪceW_ }7y?XmEtAC_.88DKK-"&UEqXp~SζIOC"n/ˮՌ[ ]a d Y^$tEcaFX9}SF&!bp,&KN1A[zvk)Sڷq%:(*Ԇq ~E ;N)CVa6EmnK g,xb̪/{?,oY2C]M@ H k= 9rA{moa$lj5줎]z]Rͮ^QŠ!-ÅXF L`Y?-#0e ;鱏飂B=XK۔pBi4J8Ey"Sa2T=p25n*o›Lg@SniԱN%XA>jUlw2]&%ȁW0&D}TB^5 8f:37MkR ټf5CpSݴ§makB 4=~L'1:mq;(ЁR^k#:_B@ڈg2k1Fɣڳɼ0JVt,R sxN Mcˆ0Ӫ5EF1bhVM\>@c0v"nyR>f&5jc `?x^lG- 6d'*Y։KSKZв^J[~vC^JPL%e9veǾE&ׅJ%" APOzs|ΨH$& 5!L$_9û=3tg5kz֞ԠE3ю~4_Gtp? d(U|YaB45/?jctD&й$]R^ײ-E%$E`ÙZ;VO?6R~BdQR[C9K4'dcYfS #PB8s'E LhBN{cdZTS2И]Uh:sG,c7cj4@q-Gsͼɹ0Ʌ]ҭZz\V3}+0Dj("%x1^3ȵZl1Iz 2kz+)bzr});s'Dc9$6C͍I>iH߳u,pta_LMTj]ѓOqM>zc_ Bp/{,@*# M2d\Rzӣ/}}sBC/Gqh?lp=L֙ke-zxIYe@t7@qݬvRHey9\Ue^tU˪ "DUU!-A^]0֩)VD 2N⌚4 EPztXNX"d>Q@=źlUHq!!t!4Kzӥ^ExL+L5Pߐii ^ۂIҷ ɔKAYL T[ `TWa; ۻ@T5 GqPI['OA<(YEM^")jzY)v B~^;ࣤU-` JQNt`a#h5zcB# ^,/5OP`x>aѻa@]U?#Hm_qt_-[/xX I\Zpypeȝk%vYٚ-H= `KbJR ݸ%pR0,2R{q`X{`12F\ؐ|\:F48: 7X~WZeS8%Ye8FΆVKja>fъȊe>_^@aj)[]IkBڡdeFemxm$qM]F>BqsY3۝܉ flcH޹LFMks$4pCP>2 S(%cSfZvM%2 # MV% 5gUf#g :I#]X=I`*8]BEfC!Oa#¡T*%LbW`ۈ~$\[$ց&N%*!&q'qG'"" Ļ=T]+ azitSu>:.Jeuw.— V ˡ37 ꟒jec\i 9H]#>_aBe.?aYpXEJcЏI旹eƄef] &]& ݌hMF.Bk$J:ٸmR+kO+gr'sn^-٫I8D9){l5xHͥ >D ĔPBl,XN΅MłD\b._ʍΩcaj?K`*쯹 i*p򸑯jʏdOe\iܙ +AfdYEL$QBjfq)F Bd-Vk^)cwqfdj|J+gDROzWk0:'~Gb'v lv<{zb :YZKrȀ>`B@*,lYdlkځIN) -mPG4Yՠ'&wA=ƕ#"%W*ڢ-#\K%il#D,h*()Pe8/rN';ZCsTMnVAcf&:jiA  +R}CZWl^*SV jN"^8 -24ŭ4H/YՑt}dJ±o_1CBҰ- ܺrPmKp)1-BéA yVPx$7,bk #YGb%&l #cJm,zi%&sqIy25u-Q[)o?vbP:~, yct&Ծ͂JV?uWk)]p-洌]~2HQpk4t ~ur7`\Ni2-G5F-oɬj{?5M yW1^Dpb}4>)Sp]zpJ?n;~ ysP lrqZ ,+yNMԣZӰ?: l2?M7V>@;d;mzd3Ӻ@A&dmJcSYzk:o.'K<|74Fvĺ{'͊X4ҫ[ʥ5{%-AAPm9Nu;?0(B8V,ˮ,=jaj5;qXp$ #2)0C ?:?"zd!c̨Uavb`~:z_Zdr:33B: Z|pHdR`%89E=B21!!}*x0DLVVF2;^<>3>T8ϴξV_gk&N\?70wd\8p`Bq`5qb'XAj\\Ah 7,)rM[5}+l<#D'b-\АTRM5lqTөJD]zVVF5׫ZbE6mQaÊ-n&19e3Hc 0h<(1`NċD1B0Sw9sس~R-QF#+l&ũḀ: Յ#rfm e(_>pk Ji?~Yu9P~E͡o-a&~p~@ 9RI%`%bcp“6jbl 0 Լ[QLiz21 SO"`%ͷ{}CeY}<Gx ≳b컒 YƊ4׀Ky:gC;@hN?)SΩ (8XZp!mLO+S!^`B䲸Na,4-NqP:pw8 /`D0!w@+[z.L0W '-brV5u9 Hs#D-Pb(,VT}HXZܥ\ș0tA΍ `Iu!$FfF*zyo|OI IeҷJR)% ~"3#t `uX"((.X ;Zpm6]5`hl%*T]!|Lv)Ðع㉅;%d@NA eQ1hAAkN =YF_\"/ GuG-P<䝸Ә\3G~W" !0#I" a RIHlReTWJEUJSBJ/FCEpY(~O' K{gL'nAEPETv[bp.K6}6–ZDFmkLl,(D FhVJoJ>qꉈ ]h2.ѿ b]nwkF$Q$q04 DUъ"-!%MnuCT=w$7 :2yIL(7ժNթU>XGeXTI3C0:D Ջ ebxY|48i%u0j`mpMCALuӄDGi `Khfƺy?͌8*Lm i%ԮvL)b+(XE[$NoŬ?ٺwd>fvsݜn1 >kQ/װ&a+dJxЋtTFYLg"YV-q檾k* Xf1YK^?b-ˀƤח쨁NIJʙY44 ׮Thm8'nLt{\8Ί]rkV};i/tP=fBwŮv&"A8 v;@Et%>qW|dH Kstj5\d+slͳpRmYhbKs?yYgDRd% 1.vjq7#PkІ.C莖u:)G6c{&Y+;N#Upx5HPB# ک1bH3{ Y@)@ T ZPZ4ܯ*K8\:)%3P9xK4x`$ԓ9,- B8.Ȅ9ڴ{O x!Cb1t+.#(?*+@sCSQq6O8@H;kqA|@C$zq1)DM< d³)8RdSܩӗNMNYbG%ѹE@_`t ϣ c^:Ac:SQck9&= ,r%\Ҕt\8$A @k0ĴMAHH DPJ⚩@ WR2lsUkh,=R@Nxe0 B EY\7KE5$5ḘʑzK`أLNtMM؉}44DXjFE5`J, 7XYKlpK;q g XYZ Qš C;c]sl,UpD߱56l(BsMx} ׹o-)BY-=]nYUy#?"8+r<׾fӗWN),\X>mrn%ϛ6ԎY /hhSYozY#pdv/I1+:xL9x`̝+]ⁱC=La3õ-qH+_"׻UE$EĮ`bwc>eP;FžPT0M)D^dd:=;%=a@a˧LFsOTAm} ڽXٕj!K4'z )^1Zmлʿ|h)1 11ޥU\&б$XrqZH]qg Q$sWkV{ߎcc?_O ʄ)yߡ۱ډŊDhƝve<FɥhQa@/XUc|zJ&޵2-?¿mh{)[7s:) Y\N6aB#l?A%6ʰ;F ]jwGB=04@ ,v^^9mm)Nޱ^,^=CZCm[nksk=b>F.]JaC@nNtaSӜoi^1lζ\O^HA%m>> ,DѠYf\M{XgVb 2tw.`:]Er^U׳=? Oryf#rۑ4n;~Vgvmo&`cK9\@2U욮 1>?G;ts-a6IIԆឌqmtբvqn T[ni$^^7i6nQn+u9ؐn&̔CJ{L`P2bGch-%6M@7zFFN8kHhug8dž8@68dph-JHĖ߼1 J4q~>1yq.R%vu5(3 _/yQƢDyjsGBw [.a'cObyfy9v&o'rv7w8Do:9wk˲t p{W>W{|3 )7QhxttX曳bBL7YcN^;؉w ?bДDyr'})L GXCvJ* }܍Č]r}!}ܿͪzoW7~Ϣt좼O`DO= B"l 6sp+lF1 |bSzS-Vc2ȿw/C3ϨEܟmw7]xKa}S胅?"3OX #CRL:3,puC\Y̠7_.X 8OLs&p vmUac=l'?5! Os*=ݥ`w1C")~BF,.z` H2JwQY@ԝ |6x̣>k`r31 Ǥȧ c!~מHҒ- 5-e8?lsqWPEO"Eղ"灿#f3M0)bL&2f2s ( ]e9ca 89l]4D4HPO*DC/uFrqYaȓNhgSPB{<%*a7~4\ž%q}Pbط,E76юz f0j#UMKd^ak.; g .#k< ^iYG+gxP(b/[D*0*YӤΐMݤR\@(PAsP*Jֲ%Ii4Ґp\E](UҖ]sf{S)Sw)L 9؈#`!T Eޙ}Ȃ?[gB.FXr=ͭnŵ(74*P#" 6"qgܹ:hJjRЩJzhg E.@=%*HCDj5'x.Λ}+'){kMq w;jt] #WFC05|a5K:*aXSZLk-"avcUqYok7[i.Tۆi)՞.n"H|ڵ/1a9(cVQ|psۊ 1ˋXuxA^;B@c,9mt B (Br%l)dBو-WzDVsKZoXf.{\_XLbnlv[L8@0.eiL;Ek@OK\pHm <(ETNOU^r8X76vj`:9u6Y">!NӺθa[91mmfk4q-i˜;^,O nDnr-7e+.@Z/Dz' pCe$yʁ[[X-q7#7ް#E6ϡ8jrN,OIJAJ'-6eJhabsD-߮ai"n@$jR77񯓽) ;^v3~6ۇO|(82dxy'%|r`n z;˯<ҼJysoJ1L5PO;Tj7j{FgUv{k7fl{"sW|Xlq7\"*6$7: $}%Xz Dx\u̦r)}.}}GJs =kу~LbUiH5.54jW^J@GZJW j4mXrd7WJ3B!2赡`@fis\i~垩eo` joHpY{ԕzqygw X]@րJ.85vU:%#*Y'Z๦vUڔ'XnuoRjio>\i[K`2$ ۰)ԨͶ;q`SڜS*ުsJ)7VAQ PvIGm2;s)fvup\L۴NBR;T[V{XZ\۵^`b;^_ubzp:wЙ~6y s(ḳ:={J6f77+ Ѹgi߄D+aFK{xs;[j{Ҷn+pwkx*B=ڈ{۱-+ f(=vz-&- ws Cź# xv;[{蛾껾۾;[{~|+ѺpD|rkt ٗ׭~X^:Js  _^׻r]eJ{WNY?8]"6|8:<>X[fPzkȻkA}Se7aAZ"h:jXв'N厴$ m|iVr<ǘv (%, 7eʙAǺ0u,&GȌȎȐɒ<ɔ\ɖ|ɘɚɍj; 'w;IēZxk^XEwj>mlnÍ)N!0s>rYS47tCyۀ \ ߁NZ.e)|`L騭!F y7,>Ƿ>ȸadf.O/HBG` ? wL,X1]G ԡ.AT<.Z̦XYu6o+j`KnАDQ^Pn~ΕD/E9p]XE -`\YMSÊ*#تM஝&L] _^jѽn] /p|fm1:|z}ng8ŲȪհ^JmlEvf@ *4lxtNO]_h@!(<"If9.Un.DʌH$OOymoN11QoOMQb2SL, 3Au!t0VvvVwW/5 p7`Fڂںz%[[Xx(Zz$,C!`l?_?CQ=h7JB(0)Vx)O.QhD H&PhG!Kf4F3i֜]g Gv:#?0u)ԧQ*󃟫^ļY԰oP V-kߚzoJp3 2_mZk+5^a(ZU$KCa训 3UCn9elٚkW`$r #gul ٝ5o"16i6):JBz؍r' t;z_\ˏ_>#?RkNaXbI;B1fS|%-?0|Ir|#}F E'Ћ8}XWu7iAD*w$WRKXjr,+i6p _Э^DzU~Fd3 cCax4rt\-CFgԝ:, WW3Q;Vck?^*G]^DߝQV5:HN(ՄX6Ґ: 2nR[?VbZoM֛©PcVLe^ ,wauEm};bbe}y6s1 ez4+ {7n9Ⴑg'pU 3 YǛ΅=s 7xsC, "qrr&ݹ+?,d򕈐1W" 2a,sә@U2ϰ-f{ݛfWlkv^zb;Euh==A'}A+вfr" ?gBv#Mi oқM/٦m$Wթ>jyyR:kC:O9foSNWѡrl=$ٕ0p?)^q_9q!I^򏋸"uH33v}8JguS֖7sSYw5гa?#Z뤯?Nkr_YֹuNyPr:bVhG\BKM|s VIztAx3},)_y_׼Qj6yԘtq9np'V3{xG^|?Yx>A2E ej^}YsqlX۹(o)C,5WKC NҤHP#P'+/3P7;?C;B-j%Jpmb:io~km"Bj5/0 p H P  =ph۬ojr)̸֫C匿j ^lAd-OӍt ~0z< Q2 #Q0 +/3Q7yZ>O WkX Il +o sPkN kQP1Q>;BqQLϘ.=^bȯqAD&aq 1Q!!!-`=Q "dǬaLMa1֨H a grp '&YR(7 ()R)p%ʰjqD1 N *0 j%ntzNk~npRvr O@? r(r)0S0)/*E##;1S]1/򤾲$w%ɲ.Nb&2`nϣ '- QO`/cR)6qb7s 6#p8-87791-1ÑC*2lK/(,si3ZQ@N.> JVs.>S/e@u/58 t9 @0 7sATB+BT-7ABt9os@#tD19O4"?2Nqk3]JP:lD6ZS-S=1!$o4?`3@Jh3C%48wB9CKtB)@7L)TK=7Mms8ID6,Eet`t*fFFFw+ ,MnHus&&u2$uR?Sd@3LCUTMOCUTCL]C4USVMA5BEV_UM8kWgN5EqE%r]S[b uZ{D3rH]ݾ \+AJ;\JaUCCYUT[T^]DUuBT^7UI5W5Vyu_}5Uu]UaZcSփ:2G\UPQQ5R5-.NRony6\_ >T^DM]UAuK_s6CqvWUh{6a{hi6`GhTaQtObY#q$bb$>dZYO3N5RsyVGemyDnǒf5]fv^uVhhVTuVoiwpfV] ia+/jkj%^vsU c,)H3|GvcW2 hwe\?Up%DkpvgAx7_SMyyy vTgvr)WD-;2b_ts,#+O{q즄,fQQwliү,uQ_Hvm7wqaQw 8owqx`v`7MgWqtLf`;o/̶Qj3+#j c?v"<7Q\%C3o/HlAf7ˈw9u@3i_xhu]eՃK7q7AXr%ϘiA9j*K{O8"V8N$A|xe}MׇRBz*DTmՏ~vvWn8@Wu3f8xu5Ǹz-4rqٔWR؎cXaS"x"+2X UoZOzt{wi:uSiw!+WG/{uFݷ1={ٵ_pw9 ;z뛃rUzC;0;/o[)2gFrήܻdHy#,\%D%\@k9sxei|.>"G , M  _{n7w;t73i!NjL̉y}ͅw8w7IG!R-])֖p>`x|}!dچ4w,vHm17_ vw]yxU{Ӝ]?k:WsY>Oh4O@hhb׬aR<" `r3t| c=j '+/3k9,5C'?[G#OW+ocG_kgsOgo{]{C7csdz۫ˋ&p "LpXD GeQr"1N#))t,2->x͚6o޴s@!+C5J&R4AP:NqyiRPUIXf2¨6ڶnC2G<~Ņ_+`{x(ͬy39 q%!|,nc Nɴ$7lMlKbBAƪoYЦgSΏ5ֳjzdWa/ T&n/bt=/Ư? Anv[5ȅF)myEl& r-D"}Dsѥ /pE _\\y% #7A?&vb9Htc2!c#BVc}a=9+Ѓa1~pV!=w#g@ {SrIY$(/4")IKjғxe aq#MkjS`AVsx hFa`PJԣU&O BE*UJ,iI X˶v}BʼnPAYV.6,!fr+bґN[*Np&|+c*+Ƈ'dIN#Kfς6-iKk6u"ȴ~"l0Nk%2fꐙJ 5p#LNѷP.q[ܬ`XRݰdl@NH58d v'KM/}ϛS{ :x<$\@Yei ZMDgmC8/\;o;8"ݎUKTΜڈc-Gc BjC⭯Њ#׿kE Ǜr ti/l@Ñe&36Le l>keoSEL>b04>4c4cVtۙfmȥ g1V4aF.Ғ E© N(I[^.6oSA<殓En5ykQ^k!'9 szٓހ0,qXU0d7$Ρ dg}@bD8C!JÈ6uӝ4C>P޷GێLl( vɻXO>y ?8.e5;%Fez(gǦkm%YrϑMF:-W xE]w)oWp_^4ܧQ ]jlaqq+CwW]Ov}ְwcxxKR9ZsiOc0?+ӄ"W="\֤Mwt:f%[erBwgŻ7B}S,wΪmx-rIw'A9%?).w741 /d䗷g?6hD^޳qrMЏD%όŁTO MD4*E`񕠿Q9ߩZ`  `]_]JLeu!YGG@T:[ԡh }ӁnuJДHMH D Ạaaq`q` `ș `q^C ~T DOohk)ޞ9`OTrp!\aͰaGB!Ȣ}BBMb1)ʋt,"" >5 3A46`bY#f !MbODقh:ܸ)E$L`N5}S1!1?"@Z@. 16B22#7!5RdEZ$۠Yfc\<<)"R-;6`#d[M(#%`*rZȥP cBB2$bsPB"AdDfEreWz%XFfϙud]X$\$a"8dIxb'~5dLf cm?bR?`T T^bb%R&aR]%VjDP -:JSb!c}j6D˰T`xYZf[9#J$];2 (l2")3] &mPb>e0c.* :f4udvvT^U2f6V\ ]<\{]krVH}$%| %|$)l$@!+ q5GTQr\`$+A=%yuhuFfRh[.XT={\$f( ݒm~Emk4! h)h1XƝLeeF#.>jtSZSh>浭)x2"cU*cz9Ӭeg|i8 %1ٗaUB*)Yv֔&!m4h}V!4'dΘ ~W) zbjb&q&^C!w)]|Zc&!"a7a aʙ^;ҞblE)id'jWL­zh""ly)!U)YzlBIhRy[ %:n!O*ɥޫ50b>kAS+wkS1 kWeL6~]rܤl}8)kR*5Ǒ:"+kFɬ#\/fKN='lPNITNwG$|Aƌ !¢rn^-.QLq[dlg=Z2ۆl9PY-RR"2܂26Μi.M.N[X)zMRN[J ޯh#oNR^k쒍,m""0m"0BJ/n~cDZȥz$NMs].EmmՖO)bSbi",3t KF$@Z2X2mJz3"8ף*,q'</01}-pVl1eD0>j43*ns 0!/%s#٤3""33<sVRR~>sOG Cˁ"800A-4C%2W 3SMNh1/ `! ^yotX)Ihr.=\t.ܳgbNt^ RK."5l(I#TU4Oңݣ r6w妴!"4s.G"dn:{6'o\G(ukJp&_aBaf"vЪbKNO2NBL.'MraFVle ;-,LgG(p7(H[7`wt#e`ٰkw|5")K6o')NnbLQ!Tc"&G`zt6kXnh{uD6$.ZxxLn{Ju+xi>FOEl1AmIvG-!r*%5(A;d0\BSHix.uἁɌ7Mx`ʊwN~rBib֞jbC+c@{/Ca Bp{#F@.lisCǀcvi 9 sݙoxz6{j)˹{j,|zfzh֊x/._()%0HϔDEqkӉ.M.m;7ww].v{uj:\+2!TZ?zaL-2l WA{E_O9-Iޡq&@m/(mD¦l8uz耚OoKU?;/O⫳yoE҃-M^:q{C㺷ƫZ+nJ#y$K:-lO6v6뷃!O|1iG0m3|#~':лǼmڠ{:p0V|cb 9y_+{;@A{mۿ qC8IQR-KU 8d┘ƜU0ųN{?((4a$I#ĥLU-8~*뢝VFM.\w\rHUw]vu݋w^W^{՗|>=vQySxƖFq]iU:j%8j7x?V$dTUء2&Iv`|I=.mmFGvg9֙EGf̯=Sr&SMtzkk7z+#*SiJmԉUJJXQmmbj,FEQF$eiqVd9f/EZ\0sn{j2ItE{uEuՆgyXUc 8[łYuV!<35qI/ \KK1ݼQwm~~5S{b 5w`տ,p1\ q勊#$X N$=}pfY:O@8a~ӵ}3\wCP;a0ƿYUxpHDR O[0P}i%balIb|AhX|"VV8 u2a?|mS")xmmztH9n"a#? &-y @)ьysVI񓬪e#q<])L!Uؘ9T0tD 1xL,p<fE,[ X7Aڤ]dMf1:'K#bvKr DnM y#g?I#^5E8[,W CqP.YeE:E+8e$3L(=Ib]E;$fJs锊 J96 KFBŇ DTIϪTQG=Bi,r-i?`2K`iA醸Ćc3) 'ie_q>ѓ4y &ijEz"Xƀ4B"BWQrde[Y JSkah5K]2{upRNȐFdo*?PJӼRݜ2s7MOAO m`xq+E e X?q +'Ðz> :,j4JɊl2{?Xa=Vhu4ɗD ۬f֤9^XkiLYCam٪SY&/yn[nIK!-C=:<tMo:@^R|8NOu˙oS޷46<~3+[4(RA9:%ipYE!zэ &]KOҟ9|nbpug=S:pK\&{>vu364{} +YE-M{qES 8N9~[e׼&͉(3UB(eYy5iЋr*,WRZ$`9$u,} þ@7CB{ҙ+@=̮'?`֝+_oF;>v-<^T~A>F/Dj@Vm YIeY_9'`{˓{'[C3(h6 i;[3mC([.2;>s >T>t>x |KK3>>ഔʱSK?&R1P"R$r8F6as/P)3*B[9<'fØ۳@ϓ:Êy#Q#b7h=802D-38`1SA`A3;H&@::xA2)³;E 4B LE ?˚ٸb$Y C[Ey2KÕc:` ->ƔhOF5 {Л@4=;d9N@9۠ pDHtJDs@K7qY.>+R$ |>y> H3Ł -@}E\lH1R@_FaL,cddtCLkF9;hƓlɋ $ўD#G1G#%!u=w=x Dr:| :J0J}-J,bQȅ, K K5OȋFA*e'^<[ѧ9>Zd.`3hCq0 TDc0<#I*GItDAL,K3M CxJ{64,KٜMlbʋ*,H CKb0[L˾DL:lɾ7 Ġ IJLNTY A/½L DuχAN<.4 Mw:ҴcHMJP<eT}MbڌP E\MM`L fH6D$䤤Q8\N=[.IA(z.0 1":Yڶ,apKO<ϦG,>yLOcPPd>@9P$3H3]cM mS7}`HM/ <QӐ5\)|ѡsQCF=jz6p%ўDLR!LRCs\_ K{A+ҥR.S/U]1P55Sb-,O: SK[0GS'تYTOI[ YVtOĝ]\XX<ӂM\-؂%V^g<3\ех<: ӕ20[VUTDE[<_kdrdh3ﬥr]uwM H [=^G ` `#W;P^a,IMK5e uTeߐĤ0TnuC]>d6 h3 Cd"#v6"ER($1 \,vM^ b/`Z}^ F@(KcA= a7~c _*`,iZ [}'˓ȓ$C CckC]W".#%&buu۟]b2SFeX:)Ws4\ubZ`= i ^ei!ʅcc>X$.:<2c74X-<N =uW%WJ :{`n$w*2(NfZj &RNTfVveϤOe `efc]f h ncdh!.@nfc*kc% ?v*fmeo_F L .?`@N_{^b'>OEU~F^eYP}Usfh kY.ch`S~ke274cZ?Eg)^8lNl^lnl~lȎlɞlʮl˾ll[7cjDU.> `fVk56k>f9f `,ik>=ZMNn^nnn~nn&6vjѼ0m vNk&浘mmͥk%kkf#ݶڟooopp/p?pOp_popm0(Z,p061` >o&l%kil=>(,c9iqpqqq j+-p u.q(\*+Hq cc03>qSq373Os4_s5os6s7s8s9s:s;ss=-nb%or(o8*0,q*g/'3qQuR/ROuU_uVouWuXuYuZu[gSuRG%t%jeh%vE7'wtd/)\Ig滉<"ތvXU7l <%Nq/ws?wtOwu_!wqC_cvb7 쮚PHaL&f&R#8i(W{\/hbzK'n* 0gHŗ$ɧyx8RשpP9HdbBB0+;VkvLԫk;;+| |v5L4 K}͍=Q2RAp_!O"R <0… :|1a :D < JyB!*IeӥM`J#$LtPM0iԇ4|fT2H^1+wb=R)RTVuY`vL\Ơ}S޴\ .p.}{Zb?d}Y&@߿;{^W Ѣ?$լV|]uC? ϔzS>"ډ R#6EvJ-fnȮjzov-䭏Y6k ߆,EFseh&@MP\aF!;j"xlhFf=Q[Jm^pKHSql7^sy,=hy"T ݐu(Axo1[V2j}IƖh~nGb FAz6<,'g( *℡(Jdbk)g[/#3NMwȍqWj?U\Y]K 5*Jky`ꊚdt֗m0 scl}(XtSb hBg0'>m0Rh(!.Ko;VDA/E)$)A*r"n35F>DM 7+tJFSCk{)qN~5Iv kƕceiڌsdTVԫh&" DN=k mizpFe$07G@q!pCLˌ̉T۝lZ.ל2' }:xy4fl^ԬڻLoӞD/;챽Z $Ё5;wM%̣c5ll*T˝1 gcxmE2Y9^dLs~;YUp9ASƹcvBO3uE _3$͎]lǻީCk2Xڢ7SmlȱPc*p Ty(_Tpxb Caƒ-4/I1?SPʥ,jS D!ѡ4c|Gj˜!PQGj87s"^:u T ?VO]\$>gpDvLMJ\ }E}'Q9$#CC@E,Uh-QJ|b9\ƅg@2ǿyQ2`hLdqndf3 6C,3/}9LHAN<?&Fo> $SJS &CqRWH%J2@*JG&G .шJtE/*QEk!.ѐ⧊~٠qns]fC2SO)7$@Bi̜2;NR 8bH;)'f HI$OROMgk.(; N*A Np3టj +Ѽu{}(_!>Tm/*v-uB`:^ӚLAӟb@# TI_DW8-T`&Lj`Hժԩ*մnu\W[1J=Ԃb\"+[ۂ*[MFCj7~.F Š$>|s"g "R-H4K2Η-+M9BڢVO n[(P )$׹Už+B+V<)uN qMeu c*KFݿ #}x|O.@[,| {3NZgPFnu__͖i73zf3!>g  g,t<,A@y1?G=&Z.4-#n oo']MkZ%%2= %zn5|3֚Yf¹d6\nE&LJ}`o|ȶĝ!gr_Ҟ6*\k/}1Agy876sJx+J-%|W߂-ѻެDκ2+0+Pl׸g=R )6",'ޛ-~/+~owp[Yϼy n?^q#7Q7@'C[&~_ɋ_E:gKvu=|gA5B?'?Y?L7)1|et C^q􅹀,V#pE+pFVpg_otLf{pfkfgq^qPvws}jfAԧs`ww'Q5h79;ȃ=sGCVsVnNr*siWOX wQ;Qz` w 9FaSqsqqx S|"vqsGwlT=73xa(Nyu~Dgg#s&HbV-A D.182RxcPzT\WP؋ka?J'omnqkEk v(deuFtX|8L!h/c*JuwA31l}؉7mꇏCHN\-IP7XR$`P8^t&ZؑǑ! f.uzB2PdȆH Avs4dYjG|cꀎŽ􎊆{`tf؈2ȉHgh&t,fWY\' eas ^4uDӑq) s ɨX9mȌ^/(44ٍxÇvz X/vהX3r(.0 \[$יDę"FVaaIt9Ex%32g)9Gz'utX#.z2ВkR{Y6!R{j?=I(glD 7IfCiJBh)Rn V2w dD&1zIo>iɛ"ٛ is?&^96yy@1 wy_Tv@*89/} =2M2 %][.2/exH8~)#MaiJ8ZTJR $yZd+EuԉI؇W&ÈYvJG w7rq԰Fm3{`tNJٟT9x٥Z7Vbdze٨kipfoꦍ.qJ!a!IB1~j}bCZWi1v\ᣨ&yhZtI KP9å ȩ& \SGȄ6kڦ9||"WzӐPFc`J۷#kkR{YppGr4G G9[x+b%#E2{yXǚ?7}jʢ9@g`{zѴ뻿 dˉ}sh\KnoՂ``iyګUk+ !ek狾#Eh'[ ˋ+G\4궧;ɽK,Q^ ,{{ŋ@ !Њz'SFZ< KK;=)zHn6 $gٞz[hN@:t;E{ E[6  A>,cL)oXhXl d^KQ@hRH$zd ɑ/ ijx,?=Ƀw|Lpz?\ Z_lTwQL?,ɽhcΫ|znK?o H\2k!ȵcs]@-60,L ^{gٯF\|n ${ <0\]2L ]|eP|t-o%m й g;#LlE}jlz9]W00 ck`¿ѹB۝ Hp*LpÆ]0j`ȱǏ Cz1Ѣ=T'Q%ŗ+aʌIs{-k<΃ϟ@ *oѣH*]ʴӧPJJիXj+MƯ‚+,ٳfӢ]-۷n+.ݻvݫ^0ְTukÈ+^a ̥S˘3k̹gZƷӦS^5׮cþh2·?r<;E8Ɠ#_9ΣC.:ֳc߮;Ã/qMDU2;)K!TU6gBJa>Yٞps2ln-׬;"662m_vFb"LO];5hOmP7iMmRh#i W*اeꑟ]9گKn6掷`Zi|;K1'm6̗|<)'|.RϮEusǻ.:Se>;usm?U+ Pwq`.Ky mˀB6X1ZߏX!C|; ]1^7k{,۸BЇ)^je/C*(Z{j15RQt T:Њwall~9Gb9*(T#dwE-]<"Q}3f 6vKpKHIl:t.IE/'P[YED|)FDL[8qY^j48cYGktY3+Gі@IgYEMU2r\iM]RY0ܔ7hQӘlPFH`y %=:~>$BYIsd% *֯*(#+/juU>P%eӀ%3#QmF $)H:wDlHѡ(M f.QWLZ0.co1u(Bظ& }YUJ5n 'IӬeŧʦ'PԭoEdZk(8A p-k)^Wf`M UEz5ȹ*37(rЧ }L"=oTKU pIuxga}ZQ J]Myk}{M'2x rh`Ѳ %8ld B. fs괴ObRPD^/z%T1lLiJakƀ9w24(W\4y  3Ѝ.Q]*6٬0y*nx̠>-JKMMwKs2˱/* Ad- L׉ɲHvs9هJ7[5OZ\rb_\EmntfkjWG1nv&dUEJn6'Nqbdp6(jj7rcX4.*wZtt䵟oͣilsrEЛMxղ-XIP:Rj+s,}):+lNvt8 GuC\x{/~:!dzYͬyNO l;Xe\u+~Vw WOZ~%2M `~ٸ?׬_5SNop5/Vo5x 3~ mw0b C8j0X؁ "8$X&x(&$8a!} Ԁ kgYn4b0#>#@BD =PӅ&NPW>㑄CE؅ rAeV jlh؆pr8tXvxxz|؇~|}HzhM)؈8Xx؉!3Rg(؊42B&؋8X8Ƙʸ،8P3Xȋ‘k 8X؈y"؎8Xx#)9YhDܨ1ّ1؏9$I%*,ْdX8#Pe(.B9DYFyH8鈒Jx@ TYVИ]]Ny^ɎRbI87&49jlٖnɖL$!PtyxYu+iGi9Yj@I٘V1ْGBYIَY0(څ]9)Y k~y9 qY$ )hȹ{zZwSɛҙio չٝj EiHɞCyɎ鏣/YiʙaSZ꒷I#ʡ9 (Z9ɢJ* .JD9.58!ʜP39yH :٠ #;X :=7^K*fajmbHZDI)mڥpr L} ]z3 $Rڡ,jj2r 9J|xڣ*ٟ pX[zq:Z kڎshyjڒZ ,٩|*ɪ ʨj**-ں jϊܚjꚮ"ʮ# |)jgʤz+IAڰ:Jۢʭ:Y3zz%˦ۧ!j.۰șy- .;uJ8۳kz(/ZSzJMkک] _ IYI ;8˳W["p'ڨ ʴXzݚY6ڶgj{ۮK ik&۸5rK,k^MB Ez*ʺ,䊬Tˬ@+[{:{`kd;x՗3;[J{)Z bqsꜴMN}M(E).02>4^6~8⋘<>@B>D> ΃]=*f R>E~X-Z^`<VXKTTھ*npr>t^vxz|~G.;^舮O0^ 9~阞)@琙n\ 9yꨞꠘ#0~^븾뻮n>n~̾>>N~P. >bD>^Δpn `?_ >_5-*)Pꎡi2$$(n:~_D@H_&nn?_ҾH_D`O~?OnԞ0 e@ET.M3 LrN Rzkcsv]J CPCA#Qq2RrҲr$Ss4Tt5UuSqcVC jljꊙÙYWx"\ bWe '@0Dۄ\@I3n/TLQHbD)VAOz9RH#I4UJ+Yt)bpS)#ֺ1C0BHgT AHE.Y81c5&mpR{nP-C.{1bƯ 2dIŋ7~Fdɓ)W|sf͛9wthѣI,ZneBUmlyyKF.4hӔm[ٰܲҶʺvg{>Im&ڗpW= x$⏐7m÷U6^#;/튂{ǐ/̴\|BPi[tz ؐ=="SC" ULʨ$V(81mt&qn0;I⤜2"3hKF&R"0#-눰6t圓: UsG']@P@},( Fٍ TQr3QF,*㰲ɝU^dXndmٲkWu`#h"4Bv]5MQcӠԗȝ9c{Iퟌ6eҖASICoXF 9373p /P'[%%_k &bh&z]&^o]|[;UUTU b]Ŷu(lMF+Q^q^l/~{/<{g\D!f p} |2^е潬R? kS뚠?XȆ@ 6ADp6 ~ ۱16Ey[c ǘI{ɡŗZ/|aG]|[DȌr.>f&VN OjU֍j3tl$GS@׼Ǝ>sG>tDp8&cu,+\ 9CF0 kh^iD\7IzeA-щ|HE+/5E0- 4 'яq~~Njk!Ŧ#`(4jQHXք@XbOSp ! }W3a*?%8P^ Wu `h^ٲ75;e 0rXr,Mg+buKd=IRY J @ }aöfUHHW$>!i_@,^uEDmWrwSw ;X,{nwm7]W1dt} Sg*JS"x7m Qh_0C`{"&gv pȜŎ^zKD׶]tG/Rԧ~ߪs|=w.{˴ d$%q5Կ}jpzNRIr j #w^i<>fdWLO1^oXPpJ poCgv/ݦ|ڭM눏F /b>c.$6.8lNkT >ilam %#n* =4T^D)`b,̂8OB_pkS+(͜1p(cM৿pJJH %QՔo"'N`20`FZD =, 0zp20Ģ Rpj*:\hl a* e161 /qpL̸0Ŭ.P*Lьw=P}o?."6 dw1EQ4Q 1')OUnj`k(1:rT># E|(AqE#R2Td%/v%墱\o I (ѽ/2p !J`CT $muTҘoN2bMiX]`H$p,o C v7r1ШŬP‚C ie]q`:oOl2'&'n 4((W5) *-q*+G q * ^&bҀqRf2!0h"";C: 0 5 2|m`T3?P#|v405[5US)T@5c*(r%rts7q@++,Lp)т32́= ӌm;@kBh#dzZAȐ@R΢;O3G?3(s@ @?I I)QAёA12*/Ǿz+zC=4CizIjD= FIR$;/rl 4:`PR*P9FMߓ,SHu>iIKOI4JcOtJ9uq9"cBOUBB;CUOJD-#8N ﴈ/g0ǦQԙtsH1a̓.29S>!ue4kR+u.J3U tS5\8i\]U]\oR^)4ei~F7N>a8/RkG6NAa`  NT8T0?XO..G,R'qs5) PJEbQ0pZU͝T[A(Tgw[yV\}S}\ϕh]TrrB-'W-%BNVMǗ3,F,ϥ%E`EЩXmOuJZ =f@l~ iQجUcH1lfM[hUh{S3EM47\hUttiqsK `(^7r`7πuVbl(+Ln$m_y_y-le2B`p`wa `Q>a v 1"`NS IS  |. ژ l@F!rr*YU0z!Y=Z303yM:?9Ywcץ[)j1akEoL,i,4җuŀt ;j7 >cer Xo D ږfX*cˋh(F6ȉG1׎4Q( L! D=!9]ڼ$;YtK57VjS[i5b?/f;NTGPt"W 3'MaAEaQNaiHb29{%v{0O`ڲFPAP ȉ"Q[Qy ڄp ʠͱXz) 7:-;yr r+:G/ÑV!TU{rw:rnUp'Jy[ c)ϩ,O=)gZƳ򂜽Z8XYzjۼYc 6f 7q <Ʀ@7y'z:k\R($g92"/,~S%oDuTaAT?Z[&,@wd ,S#iQo2([t[z[ԙW^&*a 7oHջ"|T/z)d3v7#H6F V0/]̩̯ ͫ,}I)<9S\JJ%xЙAK4/r EX=}/Diw) 5l3`|㙪&= lAƙ]1Bq ǣ O^nƧ_ƙb=E{QS҆)~Ѹm |Wwx >|y}[ dd ^L>>>I ꮎ]7kī:" Mafy_;t6!8!|B \5 (~ q``>ʚJu#@ @""$6:>B>Lb4 Pdx~`N40@" TB-bNFBT@|x+(썊.~R`&&rv됡h0`3 1a`DM(˘.ވWnҸq <(xg%8Z 2i*9q te?w"Mt+71"HԩSZV#XUXT:]2e-[(U``.0cY8r|#{tbQƎC~ ҨSYa,*'$ELw)KXRM9[ 2 :6b!r!fx!2 hjZ`@cuyWIWwVatH+3f+ؠM,¤l]j9 WMgh& a~Hؙu^٧XA$DBh{IDmN G7'IRZ`!h%z")R"-:⃬ҊkabX4ڨfW^|FIܟ4AfյZoƖ.\{mOTYdV-p 9#|ٶ 3ݾ$ #.袊^|^F싥,B_IN~ڲ/_Ҝb6b# ƚV&27*+rU#Nf{@gtmdѷTv!bisBw_p=m)L'˜bYFx#80zxG*>H{QnQȔ ]Z2eqDE.t4"цx. wmU-tx\ƀyfX$%Ѓ̠<V?E`(H00FQ61@Uʃ]:Rܢ1:`IBmpRa#q˟U2 "2IL E=jRLg2`Mkf-ZLbߺ .zS1G&Uj=K"@K}Α&@;I BͅJ Med~$pim\ 1H<CBi'pV1ah@qg-k[w0$Td#먊Vtk9 h7?`NxB1\w1Ot׌'R$kc6"C]x({)wB,m [nk?С5}m y–o 'Az/ @.d2n5]::W:ȼf WPdK(íN\@znpN%5c07:d21y!`A6COPC:ݰ f3Jgǀa;zj%N9rμpQV]JoEL6vuO.?ܭNtMۤȉx/WRl t=CxȤv?"5A` }GHǀo7Kc_?ۿZV@|ƶ>Jʺy ym\j,,t9A / yun%\tMW^"LM^1x ;tYUٹŒ->5=mWYٙB"$LؙMea6׼ !ٝ-P  8 ΡJR1(mR a@!bmb ZF`&K'z'b((b)bZ")&ͱb++b+-ϭ` LexMG)Yca٬S/ g @ !l]_Q*m8߻ȋY k`ɛAF'lU=C1G\<@qFAXI!fơ'a!4J%\|Li\椘!/#mWe1Ρ,2\R5]_]/4zCzj4 !t)|TXddNfh hLjSXKjbO)ZѹyQ1!A%5͚Wv󬝀} tRTv!\@c@ PZ*M\1Ji{.B"k㡄%F~JZbi'g";1h/2i9)2慊QmBA$r()C<'w(r}lAP\(B(B( $ZaH!%CB٘g}2 ~:Mꪲjjjjj*(w͂!/Nɉj~vR)yfmf,iq_&sKqk5,j΀|T*"'Ag5`XP'˹)mי'8)9&&jd:BlJRl*-VvOv:Iǖ(~,m b&I=["Tֆ )4Oda[a<6aBԣ! >a6yVC.,jH.ؒmٚ-+/;ј& -%n̴tl$Zm#:k>ܪU1[%m,,#0@/Innvz/Ɔ= ls.+]m*,\+1B*jNC&!ڛeUIei-!x #צƮRp[mv*kFb'dHcqLmr{T/3\/dmX_$A+F'!"(]pLؤ՚grARK}%& +Bobir/&b JB<o!$2<3CB AMMtNNtOOuP PuQQ#uR+R3uSsP)OmSn۷8]VftZ(jݙ:?r!%_G[B-[6I] ([81[""KHn:4jȨ "A@aE[vG!oA*0Bz .66emF8K{S4Kpu 8lvmmvnnNE63KMh)r71IZ3Brvœ]BtPwB6ivC,\tkb㆒<31B@4dǫdW\E{SfCf[wl0c;k3jX;L?LlRR\sxl+OƮb0#es%0YucQ>o< +78ȸ;c-,/k̎q,p*K Bۚ!H|a+GW>Q* PIfgvF x=!Ǣ057 p#@WlV{M`0XBtFvt xn@A@@DFEFFJ@JLſG?QCPTA67Y7$]$"&`''a abegge&]-," q!tut]z{]{]] #h[Xh 4 d{bA1XŒD 9q;eRcy,JK RΜy YD`0)HQ$5 SBL0! ,2}e늏9u2ɳ)Tz#jOC[/*p&oON1őO-&0࿅ǍlYgάDvdY>QFc8ٵq3kRmw0drҥuS ƕ\$!śZSOB@/G?!@ Cc[Yz9?su%ɥc?*x&?'C0Rk--9sʩ@@LB 5!%BQFbO!4hhC;=? J%A6i&o鸡p!YBC(B_?K+HT\ES8 FCKklM[ɞ wG\vIpѭ[xeHow0Q[m7f?`&&Mn6j`Lye<=S9sFy<YJ~j]3Z/1ݓ dǸ:{1ӞəKp': դD>fV]W!8! jU"*hz} 6c&҈NDY;Z|1yUq5(/zL^wpu|oyԤo-r_G ZF#*N6)f&tb̭M`L 㤦xA{v$p/ G^pbGYs&=# a'|Ԡ$(^ 8lszAɊwւhb&t1F<6! ):+/X(Ypptōp$KB$HYPp;WKFs!h"wBV=e6Q%iFZBCf9mtjTk=n ,jh TS _Dg=`Xe${aEXQf27m KeuH9&SO2iQ'jh6}!uPiysmިdG,skc %Xmk!ZD'ChU@`5Rj$-i&ɴUrZl魁saxaP0[吜#B|jtKaw\ rKUXŅqp9cit:5NEdWlc p |`'Xyu gZgIȪ Kϕ%C&'<9{=D@tMiI(kɅI~GlOQvlŸIӀRMD@+{)˵reXU5o:pa2GGG >2ߡ gS{7GXY@#"t5kuxM\~6[M$< j'(nj~vlp͏B!cCڨRReq|l}m4N.lgL(sB[׆jG v76 SgMYc3nx[]o;}M Iw b{"/> 46͛5.,.`3 q% ]5jb|_"㹾 #ƂYMB[`h']3Fp:F/'h.b n;nkhS]`vk4.-qX@aK+Qm3ЩmP.V( l/u?!CQu}Srm{^]60SPL n]LJX,\0|[>or.^gs.9y6Nj>MY6p8@A1ɓA+91%1 $"#` $K깔.=8!od3a0Ѣk4˼;;?,Gsu [w"j`8Q<?5B $5QkQ:@sW43# @CY aby`=$33%|HDJ<ê#6Zl*G37bPt3"Ea"$>Y|SB0\0t8+\-C8|$}rbBȣiÎb#`"Ó(c@Ÿ@p4t@5A0'2lijxB!}tZ|D)X7˙:.Ī&1>6c>-8+ $"z[?I,I[t&H1R?kK 12<@@zj9$:l<5  ;3==F,| HGNJIQ"H,˂dXL(C]4:ӱiX+kO3P?L܍ޠ0*"I3͛JT,E @ -;]eԣΓN˵4 Ju E : u9eP|)NߴVSU* *@WQBN[-2`f9W!ә3W5믮r#=>+,XW5CXUXB]ٰ-41UO+Fy{;#1Sf(l3]x2`S({ًoSS.W> $WEA-D#`UKJ>o|3:+HõWD5"%x5$XU=Qu #/OҌ2; +C=C+ɏM\m^lC`E@?](u8UtȵЕJDu f=gBPUSRZ GVR mZUs܇نA:5A^NC^%XW(nuۃ]^eX"`ĨAj jRɴ?(0sZe[0F_.R VC>J.SVB͸]ӕJug-hj*))`N`>aQ ]a3e0&ȲKzW¡ Én(ݓ[r| sz".DUt{*̏elQo5.ޮn]:ةhC<,k[hz%iK;TiA ~e1n^㏻%^li4٣a;jzj>jnduj{m J4W˚U:.EE)76Snx57O,0V&nvneW-ɣN@ž;pV_fv5e"$,Cf$&?@*r @F407\m?9pچV s;߽ C> ||3{HPF_pI)v@b[;UIUx>e0qoloxD,;iv0E v&vg6?ϧ~jnslMv(rJ݆&qfT~T[>>h>q Ju/~eWhBZ">NfSM&t\i-r 7FJ1t<,yDy5NZns7ٓ< ˪iOyv?p]mxmȋ ͉T&8zvtyqIk|LMO(G$HK'[1 f6zjoximp]6fbOeXvel*+Nz O-8߷ԡ˻D+Kuyz+t# `⮧0| +ޅ#_fm_i)ϲxsc sY~l~Ǚwvڶ*Id?.Dd `V|z~PT; 0 D!bD`J HT@*K6)ǧ7T(# Q02TID*:ajJ1j23 *!vs#; A"L"Jk5G L MLSy{ѭѱqr^PБH. ^?O/?ߑO_@{xOzDhPaĂ)Hp;z2ȑ$K<2p,SMS,{r3ڜOD:1ӧON4SR&KBAV ]pZ3րJձd˚=εl %Z(fIܼi$)mBuJU1`c"C+̭\ 6LVxdӯQXiLX3.5;w)Up Č^׎{lm1i<<̛#7чG3GDS{zכ4ށ/Bx@~.W|zlCzB< HހQfqG >`ň#H%arx]1%q|G1`c2brB0be9"7ABdJ.d-B&نPR]P9;Xfm5&o mԛlg[aɦpQ&݉gz't/Tuqdr4B7^OHXy꥞R!!{1?F5UU}WOcj&*HGN5\&|I'[ r3bس̌܂-H! 9cNQ6nRP}VehfN ✦%k7Du a$\»ET &OLq)u4IQ"P=ړ,?Zԣ?"+&Xe~M%Gj'- }NT+_H\Tʬq2`о Bccr{ ՑֲˑN8TB7l7Wf/:epE9q yczꪟ'2m|LB)q\ê(ʍ{U}i)VQU]EjЦ:_ XBT|: Kۓ- XVG 2hcv SRM&2Z`϶hhAL0(nGsn<U?^CM&G˽Ik 2GB tJ!od98=䄯nvp<,(Pn& QG)OW'Qɘ8yR~V*&`h#і!q)j牨ъj`?ևcpB܇ETh:\ׄLg+#wHn+Z@*oD OY8 +q 2X{aɃ!Dx98Ɇc B_v# z/}s=l3u"u* /N$ХrXW8ڒ  24ڌH56%Q c@! =BcT[iBWT7GE!Ռ$+Xt@)T8 4WKȈg%{Mr̯Jwԭ (v@@13lI\O&3G=-oGN$y~ }IzgDϛb$?54v##CumwҸTZm/OhȰi) tNW+9ƹIV y# ƪiB7.s/hKQן׾obg9{j 0Kq,@p2a˙(cQTt%dio Dgbc-zG!*S\:Ӗt7 vԂy16וȵ_#/ȴo V%+ְ9TvxTN63fSY:G|W:b\2 JaTOf V 9?\ET ]w +wk9 pO|/84ńŧn82R]kд85Ua}U\k|H6\K>ÒML*O;AW*R{EmDsO/q67Эnt3xt b \ rk>$'@2Z4#M\g~po JC ++KRG [fokNx͓x }*B_N-a"4n EF=[zC ;@Ru;7,)Ne}1 FF ^\v/Ϗ~뗕8T+xZZ.Jxf$q5#5x/h}QuQ^Lm*H^T1%A\')@iRwvcC3+tju&&)tBK)؅HSch;aVrv;pH~yGq:wY9 %DBICّ%):HfMh8&<ylUBW63ja>8?4 QFH'L*l$ PQ,9XH}5vl6gzIhʹQ VUVc_9զ|pY(h@lYtz0wR jӐ%YĴB )LBc_8y]kӄo)rݩr-3ez ͸ *ԓٚA)na`(E w@P)%p{upo_76rYi3"6٣ʹCj,!4zeQmAR9TR/G?枛9e&Ɋjo'$~ O0,"W r} h/^~l*'Fx8wV@Ioơ__qFEo-Zhh6Hh[9,l]Iy{5^:h|aCժ%ّ Pzcq*9jT^ʞYeLij)g1 J';xnZ]E<D{ơ)Z#zHj"fSIχ@(f E FR99G)C?{ȁۙIP$rtO%U8xӺ!i9؊fb0-i*S'@H1{rІPej9zw;O sUbm{ Gb`>eа&;xZDN]66uòW_ɕ);+vR{Տ0)АmZ.8ˬX~w\zqV/LBC腱0Hۊy0T+}Bvs*k ^#NpՙBPn)vX\˽:t|8p =ڷшaN˵<;N1h<#lϹv/Dlsg[2. 4ExN($2כ=m{nm0ad_+`K+k˪i)}C@ybHTd̤7=9z 3hyQʊJR" 쐁IxygWY[]SȖ 6C+g|ҼJ*s =eK^$Om[ؐ R\T<豤ߠpWӹ8l=.IC DGM=4ԩ;"\ T@uܦF#G.'$5u/$2.PQ-)I ɝ\$ vpOg` yUN富aޅع,= 6}aMəl΀e"7ƙBeoƸQM"~*Sm?/DS%n1W$7>A.HF֟$;.Y )~B'm=u2gO1܆:N8oI?驞<> 5fupbf+e Z۵{U)? [> %ċ`I ";X'3=?BH=Q^%WSG|P/XM ?,TN'>_9jAadu?T:wgo*_o.TrOm/6HGGI M~~e, 3/7ĝ .0/!=6 o\퉆#O+6FC$V4L_ǑL.p_oTl?T֏?e$ӟt_>5f/O?z{/o?o^ZP11Qt>ODRl=}M5Z>颙v+]*^y”K+*  + A O +--RRZ8?<rD``XqN0Y43+\bq֗(!;-c]ul $AV鯤SyUàNW?eU +,Vf|{-,Zmӱqe1͵lۺ}dpSbضysoͅWM=<+u߿DP!yڔvfʜC!VdϳeϕYί_'~ocϿ|Zj"!P )PFJޞK9mPN#H bq 0Gi6"+13I'-r >#MӴe5ܒ6iy098Ӷ6˄9#3o8΄sNmމg T@}:AK1-!JJpbZ>Ag:pPuUOU2Ԝ|V5W_} VX.ʪ93D#@OD1kpETq%;k]\0"mLjPt1vL(ŊJ}:S-z Mp8[S+h7| c~YM-db՘m E$ qTB i:HѮQIL6xuO5VPDWv?YWit.Vʬ87gbDit97TKmZD/|) r tg"Gюv5!HH{W73<`dmPDr;T/%v= رPE0c\lw/]XKi~c$8@^F.D׍NSQ#pgo:m#֧>o}AC?[j=m?>ׂ&hs%%Cܐ ,PvV 64{Ý 3 pS>l4'] x q- Hb*׎e`ns\|y1tv fv~vp\g)`qP+t*0eƊ ^A14qk܍W|A P 3N8HX ؓ:3-<3PΗ>-pUUka2UmT(GAFJT:eT3ӵ͂^ GEڠ aZMifC׻LqpL—qtㄆşe 7`LV{Ǝx@cl|t( eP7%џIBBY̏≃}D(Hqt!(=*a CDrM5S=)n[J3/`.B0Emn-M M ~$);>7&mڈ}r̕ωNk9Y(|S\zC%Ȏ0+C0$4A5s2K^4!J )A)ґ&鴒,iв! MIt l#o[|PҢ!ܯ0] o:r!P +3y1)V(>Wa>>3?s???4@t@ @ @4A>#CΏCp $-`* 6dr dpRҫ a4FetFiFmFq4GutGyG}T+w*p.$@G`A4ItIII4JAKV 4J6Qc9@ 椠@DGTJDT)#kN۠P JO5Pu;`P P5QuQQQ!5R%uR%(UPHIkh6SA5T?CvJ{  ̋3񙮲*@M@MהK N`WDe64?5OEDZuG~:RZ{5[u[[[5\u\ŵ\\5]u]U\S[\ES'2N*D5_u_T'B} B/A< .CV˪EpXXkN2:\!Ʈ;LdQ6e-JTe]ea6fevfifmfq6guf ewgShhT `vY&Vao1E.-vʔW4XW;WNNt0*.trgQg6nvnnnsPv^o24iwp )V,jGnN" EQq%1XVv8cW!8".tRIMQ9UyYyPW0H'h6uyy}y\Ju GȸrYUa,vGE,%3ɬ8׈;w}!Yl[턭c9?HxmUZչ]9y幞،qkwy k*8{Vf%wϙlCV`b9N)` ?=Yfoimq:f{VgggE!H'8*:z{Yq1GWw4r>.ot)en ys+W6m6iK4\d7Hh fw::麧}bdr =hb"⨙:%{);{mESYUE%AˣIW,Փ,TjcZfߕfodf_H g{[{[o_V㕷XԖ±ۺ+{۩J5{!wJqb9@D=[1%k[ew<'g6O|a ;oz;o:5p=) ۻIM|A3ߐ 1 U; <!-[ E9i;oydt 15Cip/s쨙%l\( !Ήy 0e= j%c#j5RM+)ɇ%=\_ډG@@V{J;F_]=?}ޛ|3ݷ/#ԉ]HV3<'i)\<)^M*mHS&Fl~2 gPNE]Er!#q~=;dV^ݙe>]e]~[q=~쏢Ѿm_)KO P2D.?ȵi"2ԊCkMӷv!m5mv5~JM_C)_5_e/C}ן3<{I՝^ y 00T#R;I fjb3:^7<.;>K%@KGH ""Yd#@e%e#f)#(*+ū ¢M͙/p0ĉ&+fr3t4Ct3I#*Qdy8xR;9S<=={}|>=|w` 2l!Ĉ,)hn|96*VeBLH(C)HBH:(`|R-8Ԕ"РB-j(Ҡ~ @HDPP1N]]-M)8-ԈL'Sat)ook.]_(,װb[Y3g0hhLh;$ʓ&EY%G~F7>N6@w;BtMtHL~%'QfY}]3)Ǔ/oϟ*GiYfcNfi"vmr  VXaR0z Xf3$4A4UVR#No5tm&ZnXn$A!o=cFF+ӑi-1'D.tI9%}wYj%]zM=U"VՕ ZU%Pb~UgnH ʒ .uA^: .X2&Vp).&"&xr&&$hjD*:4Zt-h&:!S ƕ^ ;, b{v62Ve&@_~Li֮gK,Υ a_aK56)fQ۫³60Qΐ [ȱm\kL:r{2),^bFEgZI_X!gYugs Zh;/ @.Sg*0eqȢ6qĽ1ip£ƺ-MsO>k$=+ >8#ț,Fbf4uc1 I /Mu/l\rupzg6ID;)hG+<'owK~X=k={=?>>髿>3EȘRɌfac~M"QJxN]8@j_(fRZUcv!(!{߲ø:bhd)F9ǵ\n2EEt7xcP`uA5qDP|cnᩰv#戻"/pT2氐<$"E2|$$L~3\]=# A0%]0 chVleRi? G% _`<1e*|3 iJԼ5)L"i3Ħ0qs5 xu|'<)Oy&YKeGQ:BKNSs]$IPt]i 5*&28A93э*G ґ4)JSҕ.})Lc*әҴ+ iMq:S2>MB O4HuγF=*Rԥj2)U@ oKh-gUu hZ5PJ*Fqf)HY((A׽$mO+=,b2FwɈsPHf3r,hC+ђ=-jSղ}-lS+$.n*dխ [ൎύլ+ZIֶC=cDƺ|.ve% .x+񒷼=/zӫ}/|+mP[2/,vT2Au2‘_ JX8e*Gh&.1\H՘|xQv5Ds-,.+!F>2W+d)KַV2-s^2,1f>3Ӭ5ySmTHavxApn6] |qt!Q]YTat 4C-QԦ>5SUծ~5c-Y:+m)_';5-a> OVrfkQiΠ ]*nߪ!YF+24%W(\O2iB 7.?'`zL۔ב?8/s|8?.|&/9O|.o9_.w)Hj}D%%:BCNw4bi0 Ӆt_ly|\8/|qoA-v?P? (*>[d.~I>;]t  ߮C35N V^ fn`]A\ɹeTAW} ~U堹eM̟c1^ߍ}lRE[`N!V.A.!vY: !!!KU_my_ Q `em ނ -V6D_EUGF[9l ]!((&` 1ǀcݚ+\,΢,"-ޢ-".b...OO% PP< pS%4$X FN_ BсXrݠc^4b="5E_9ri"'P}(h$x?Z@9\@>])s"DFDB$DFfFڑ sL$HJ$J2b5|3ٳA[Vc@]q䟝Zb"BbpE(uQb1F(.m cce&]U'E]`(96y Qn$eH,W (h>g'j~fU T9ih'UNi^)ll2$hp))*Y(E6"tR(3r_U׉Iv)b勢Ũ$e[B{f}iiJꕆfVZ?ZVdNJ>@( hݝގ*ƪb(L\R^tFJiT) &Y2_YfYU%;҇`6j_>.VR*Vji}NjjR~ib)nieC.g/b+",,bbH#i`Za I՞pa*A,,FbBRbR#(κgفv+-먭Rj2҂ѝtT(%ʑe[vbdG Z*ҥ* aK$ W"C8&Rf$cҬ3(Z^gJ!"Ўmmz:mZ.蒪6}t)X)kmr׾. q múiH,ۢfjtp!ȱjc$lؤAdt۟~"چl}'&>! Dx&m>*if.k/kmFLm,# h8Ƹ.CnBˊ0L.ˍ CGjTA&Uť$ o3rFJY=+DM*#w- ^-աѰ9o#::F=l~+nj*jЮoo2q֫i!nΐ%CȎȆ` nD0eZ*>l %J찲0l^N_q5 }\W&r!0%WUr_S,BA=j/z*/ J)nj2oK/aj-¼q FMƐmkp"$AWT| p -#WH)4XvU0*N%s#uhƋ&/DyZÏo>2m*t@:i?戮2fq&lʪnEOEsj܈Cl;4GȬȈIstk310DŠiӖT$W]JVlѕ_ n؁t m@QSP`X1PUW5V_Vg5Wo#4A4V(+rAk*l}r[r?gB2Vʐ-1.W D1ktaF=t4I;c/Jn1(32 !@`2RڶA`36-@ig .l32m3oU >{>qS"-7B_ceD\4cAltFS6Bj6/_7x;LGre*pB42L/3M'Ï/.qw76e'6Ky[FWpLY"@I>q}~g~sl%]TBpAL$C,zjREC8#&"p9[ǚKo6yֺ8KxvVJ4:/{k6aSeW7 :k IfÌM94Ty5cΙ$Dc%7. {5mb_x6<[ʂsf!gƣZwi{6E[OafW{|oc[7v[;yF0zz;SVtVw OI~U<_>N>=}ǣC7˸B6߯ZNzǴw{%6Q)d2ў> 3翬 r}7}C1ڴo0#?3 e}3?s{o=???LCbxD&KfFShy cr*z\n.sz} $,4<@dlt|dT˺[TSK[}hiH }@@ E% 8)V8iN^0>榐TS0KhzwJc'6JQ%>QD-b0"=nAR>-H{f+ Gkzv+fLZ' V̙O@5 iPkMBTUREg] w~VXMQ%@hENCD-śW^w5F`r uc .sƳ+aZK柙m |4OMfUJƝ[g\+o9fo_͝?^1BK/Jc,0`zf9s-;UݺM: @D0AdA0B 'B /0C EbiH*@1WT_T1FgFo1GwԱG1H H"DķS,1«~ ZH4g#L3@*Lj5- 3O=O?L7> F4h.hSG4JԑRK/4SM7SO?5TQG%TK)UPEj2;NR;Ma WEc1{ VamFd]YuVgeZh CMܦ7I5\sE7]uh #Dw.7_}_8`&`F8ႷpQd;x2KX.c^!85j9iݖ*o3\\e_9f>et a~6g:h&hF:ifi:jqbf,]=X[Ґ嬨E>=05d7Q&reYf'p5x ށP:r'r/ iFNq0 1Uz>{t^`3]i*?EPHa+>xM^^8@?!n L`% v{جouζ5~'[6w6Ѕ/t!Ǎ@ 9bB (Á>Dbh< ^V) :؞dZ> .&ËT|6F2rddi`p %G z@9HBҐTH$ ёdyLIbw I[a E9Z}oqc*U7ie$;It1(-K y@TSDODf2DW}k'xaR`p)Ifg8G]o{ߛuoh{_ƗKD4&8ڃ@U(/M5a6H?ui aôEqJ/j-0B"mИc x1 EϏe \mQ7ėwe0`ՉyiAa9 {Al`w`lgLf49̛~ˬ9lpL8@jX1;}xÈTE:ŗmY("2㑱 *P?7f/$YBVr7j8c(.,{A}ja`a@}leʺEcDM}L&qLgrys9f;_beDX€ƄI#҆Q-hzьi'okq7 }k_9l+y luSS@dl WN [P6kf5nwҋ7s{,<ԧ;] ?<`>XhW▭^زnx ^-S2 nw*3qub\=;6ῄ-#ֶ><lq o/ ׊^Ⱦ7>gC[˶z-lt+ 1ԝm#f:;An!q=_{&4.w8gb+c0.{ִК=9: ::ӽڛ;4p3#ә담8c-dİk="lMӭ8 1иS/3!Ĭ;>.azb*-@*:3K>#ř>c'r1 놽BY@?-$2eB^%0+50qp2 j9T@g=k4@:C-rĒ8163E:21@TEtyl >wD:#>LL<>D|.\$'ņL$?%¼ q1nQ( ,B9) Bj+s{'P@ԳoCH0=CMD4GJ4\05Yx]MU.( @о%ҏb5>5@:RبВQ?UTL+ђ8N;(5(ITJͫ5U%/m<QL+a%b5cEdUeefughijkl]Ot*h*/QWs(W;W2-S$E!SS898z¥bJWT[W> >x !:u:X2>7 U==X)ey;B֑%ْ5ٓEٔUٕeYeHEJkrXIrYYܖTV Ua,8mU9LS]TҤe88{ۖmNZ ADTAZ c=CChXq_bjٻۼ۽۾=YnQp9y5לYƍʝZH֤שW:I}9m5WIۄA }Ȃj^ID ,GBDGlj}يmNqC\euiغ-]SM^K9Eל^?͠ʭ\gս[*n1UqB9|ڪeύ1^S!_U].x  ]UX<)SvGI۽UDڮLݫ3[_[5"+ب;%Pbۦ@ 6Z6Va/a`R5]Ô@&Y&^ob@v$0ɿ 7]}S rXE'6mf`]xd۶1{njGH `>.A>VM3fdvT`IXg`7Zømm@^RelaRae!6U~aQbBaeQ>喈^H-ܦĭmм_`Fa>JE5"!bx5Z*0=D#3:~ݴ}[ǡu"Ld-8"NB 勎ZFRVߡZv^[b~1iZNivX-^ٚdiin_Ev)DyM\43I*Űi@qw;zG<CTC`zݍG`Gh h h10Ye^iVakVVWu6ɒV6.6І6lm>a̾ll׾>m ^mFl}!CA2ø*C~&n6oÎCbn(+5.Q!uZ~nf() nqh`DkA67;*cvý <7ܕ~A- |  ۊ&^lvlolYF͆e^PٞΞІўpqԦawi fm.m qp.p>❌wyF qt Q/VmV=1]қ׼5q-:Dk ݾH\3g]sD:9][ 2BMfcNpAdVܬV7 {XUUSNYL_N\eJ0  ))gEDĴβ׹ٹ##0Pꧪ9R)@'`27*\P!>HbQIxGGN )/*QF#9LPeIgʜbɍ=o[h@$ӓ05E+N[NJJ 4Rs9zrO x+$/_EPKo"XOWYʔUZ+.[@5jǤ.N4heMoV6Mھ٦}n ^:˪[|(rF&wYyk䩓{?_rl HtOdJ Q;yDs͜o}?A9wYr!L T#HETDHVX!faIpPgHD $0#bbt!eD qH&L6goPVieqs\3T@ex|ןxÚ y+I~rb$Bz^)NtbSN1,馜vژ#G "a`U"_@Ebթ' deZwk’$6q%X[]xQꦸU$gg(ԧ)gBQfPToG0.лd-JT FV6%0V?f,b!W':թp!9H1sKl3kGH'L7m%`\ .u\~ 3^@mg 7K~>B-w2hQ ;L邖NTMƺZ1Жcn%g 2螳Z)c*o/a3<qkA[<hu< G/? sR{e<dW>^hu.>vuөw#(^8E3a+RX()}] YvYڠ8PD:l=e4YhBQ>u6<0z@ 4=1T@2[Hwo |#~ ٠:( tH$k Y5A 7!GEW)gJL4F[gIZڒ8 V_" s'd~. *U[\\/*|j6/V'W2uuýUN(jwl69ىE1y2Zp޶c޶ЇNK=CIи $ mwXNEG;;7;o'ߴ#xAJMSl|#B)9ցx:䐣 r΋P«ˑP]t=[9NvIKۻBKFOkM0vn&x~qj.vz}2 }GPպM'"<6;ᝓ~ͣpKF<؆?ªZRv x7)鋢 @Ƕg=NPz8ztDOz:5jqc\VǀG{u&q'|$iU5|a"(?dc|GZtpj ]CDy=}0/61HB:'r%WUV'W tHXXHqj}CAF&XUz!^h5wn xa&id{6zU?aCEghs#0gȗ5 U]fqAkEdׇ}'Wr@:+n0stw:X<_=W%cbZujWV0nXJ'u{|Wb|x| g|l-n pڳOHk3ZIxH؎!ՍJVyX(|*Y'"FP);yWxiYfG$/ӡzIb <…Ş&y7l"FaËbI*ʟ?GӄJ6d8A/U"*@vyHEF|qzd]s%Zg(]=ȝآ)F16X: C/GZǑ紂o$k 9|J EՠiΗxj^Ef5PaTsQe<*YKk=d4hzg'ic¢JCF9ޚiMd2oYQ":e֚|{I%dĖmXY>XF"})`EnA x'zib%q%њfA:/["9& jGY'5!TATuu88"JL۴NPOb {t ,XpG]9b @p`f@*QwP&gW!˗1g}_Dg3*v6J`iy9+h䁻G@#{D+j M#K VKnZ%Kʵ9DAgV^f`E%Qcپ键'Bb$[Shp< }3b{aDɧpIp(ٽosGds "&TPba-L!qxs.24t4ØlRxzlAɾF,+p:ydoP ,_/[ ᆖ m,[\dEٚL=iu t˙:¼"bKX:M^ o)q2Z&}=H\2},v))|~2 7hw9tHB}ӓ8FغԣyĤ TͿ)]ֺ6. ֳ wmOb 1٪ b2) x]ƒmʗL/\KÏ}C64ypɘ=NÓ}fbb)I]4n|aE:.FŸ?./՚joTŘ:|_@x$5sQ +T}m]Yå{[´$Φ>"tuďݯ2ϠgUt`uJLT9:Fm>ڀ\\6[=|&Ы/EƃTmm -s}D*M9sIR!Έ]ߑ$Xz-D--"kNGJ/ZmX܎׾ٮ\li~&^BC}E Td  ڭv}e/)BwW捽3] `GJ BE1 /,(@v#/.WL: ˒9 N (E]qd:\7Vғ$l(re,Ar\+$֙taا _h]`ܭA4O6#W a!N^;G/;ȑCSnn kZ*$}@1 C,''"Jb]rLHlF c>hW}oPC!%2Rr3Ss4Ttsd0`HL1q5GwWVQt9 c $Mz9N,J;効$BݹF¼yI\^}ںݷÆ<I`pbU4VK.8ТZ@<] heĔR 42#7_E3DrsbR9} iS?"Qb (_$-V#6MZ6hL81=| TwC1rT p` 6|S.j畉7dal`cG*6bhɲ!B}IP@blI?3ǰkmZuyۍ1Ho9~8-u!|(9LHv;AͷC0*𓏾: 'dj+8.@#56f.c.aˏ_V+emDly̏W <_t\d|I'q }.,&84.)gMKn2J HU2+rBd͟:"^Q)!LF]ȬZ%! XR ն?)FcQqE ᬯFnܕ^}հ/"P:X 讳;;ϒc\L.ԖJfsw M7¥85|V-5:MrM3$3i?i P?éJ|?W -P Nk)Q u'W8UCm};`cYigr蠅5!be"+Syf}ۉgks=W-2t9]x y٦7./J;xO,=8CPg8/"ӈjb9r1!hӆ`p,@ 7`kTO+-i.1VBfE1gw3]EhCe_̤3:kN: _rdžo32 ܄?qֶٞ+zbwOXU`p +21\,cFEiJ4$pS6u*;KX纴ȢuLh0@Wf4~7$AfAAis3MχUߒ={m9kI|jsGþ|qm џS)VDڛDSd&L@5RN"AGRddd.F:Xa2,)R2N e@edI;pfìv;B@3?.y%YCD4ӻL8*Z ["sX#jJ_W9ڇ2lbƉ6Df&so9yBjQ,|#IÑ^4JFp(A;B14DYCթ-]FДΆC ji˼ITJY:"jQm &3'A$.q@+~CM!Nn/n[IU'5^t|)<sgO#Y #INE.Po6w"k$;A}.M 'T6ϔ,d%{TF-(,_%R-eR~c0RҸYh1&VWCvѨރMRT£|͞T*êPmA$>իCXhǞsyz8jja良-dih)# ;ʳ$T(E& R3F-BxUYiJ"jĬ/il!\Lmva r$HnqTMXb8|)^#pGzҕ~CR]!~)3;&ui/ )kC  ^62qh1#$vi> ͰE6Z=1|ڀ!tvyI1  @Uwe)O1I'ٌ8WnqkRnB3f4;ӭ u#zEkd& _r2(+U6(׆bxSB/ Ac6deƆYі,o3';۷te:b:e ؝'m(ꈻ$zwܱ/w[M+<[P;>&+vz|Rlm#a$ʥ&G%BX/b]fk4Y~%ptJtߞ0:OeU1]7N/"[sk*ovw`TcIGɨE=@nت+%>#w/O*Q΍SyE2/4 :&ʴ ClTRolDnbkpC,᪎ (4# O{̎σ K\)l fNϓnd`Ȥ` YEoT*cbB*(/8oi>`F 0 !@p, 2RJ1AxoP0gAe!^hp~l~xndޡ \|9 k pw% +-~/ޏ 0%D䊬0i'% *D 0Ly 0E'.p'd߬Qm HpNGY#Z+Q"즏H^eO[epln ) @)ؘ!>YDHڀq+bIphEE nŇM ǒ,q,R-R-!$Yp."o"+kE]4''m#$?lvR03q /! e""Vr} svqfr?jrpL')Tn@6Q䒜(A 7J0˔텼 fѯA+q7P#wВ-:s-nX.&ci`r3+Qޠ<#0A07#1m/GN(2MUrS961Xc& "394 I5q2BŁ$@b+(AMQt2Pbr*8S@t9 Q,̗鬓G{t-O-a c!!9S$! 3%I[#8ƫ8ߺ}z@*>Bm鍪ԚLMҞ 1Ώ/A`B#i3'C*gi6Tf!DkNDGZ }2) ^`%MF[JGTUWU[U_VcUVgVkUU# R~;WY\+= Ji>qK= n1!t<>@~Jf~:M/ͤ"t\I33gW66OtTJ^3O l3lt *QygCz̪eoIU{Wo-cTIHn79aW}~G~"7NvsdsM/Oƴp$$󀋪0uTZ v#Ȃflܘ6DxA 26rW8_CHFgXjXn9AVv `t%RД~-xt sɆZq~6'73YMo:9aRcjGsTi9痙,+L)鋓zeyd9+ 997dwdd@MrW P\%Lٜ6yh?N ocR\ EPd *Qt2C9|m*:^#H`_^* *ŤqW?jfV:yw|KVxUt'>!!g ٸAn?ө[׀[Yi,iI#'#6& E3冂pQJ'(?_ʌ R&>R^]zsδ/aw@N7Ιֶْ՝e 1UhXEtUe[Ǹ@0!p%ܕkaUz¢5K+I>|w 0kMTH6{Q[CYU;is{m{#;&-}73g^XaֶN{ݓ7ڵ8xiSf9o[(eOW õVTQS$)`&H9G!R)v r)k-Oۚ[o ײ]17K8q=۾cFfA{Q=zY= 39X;\g= jX` Xhh'']'rcK7/ƥ@(<}CV`e 'A ׁY <e+yE'Bsl8acWL˩K›!8[%pq$+돗6Aȝ@Н*Q4+QCB"&B)@v@=aQD9QPbXիyp;].kqK;vINכտvJ㠠ڗS٩-ֹ,+\ o/\=jCaA<2 AZA`3A:(t8$"&f#c8&> => ~$~j]IW2"I>6~}=>XmɴtWy[j^@:o"xϷ]f!1+o%RdscFq0E=$t͓H(&"Ų_;  g^~~_:yϭYټR'P  & (52&-&*FJNb&" &b9!! `@&HF2bD#'+/#x<+x(duXwT_kiwp{\}[w_geۻ @v jf6\yo")> ΠiT ɒ&J .]Zhf MiNM.Ob)͡F壞0-r3 V_A򒉓^f( Lǎf|X 9rŧMB1diPe^)/_bF5DkZ " 0NGW(S\~-;6ٶkߑ  }Cm87ow<r  .}zDH}vuǖb!tkwOse=߷u?*`%y"8K@5 E9PJ`BSaUZWOW"Z}kі[uH|Sׅ;7,M~"=۞n%@xXEST2瞇"p*f!&v&fR޻+-MׄC2:gw 06&/߽}XE߾mmӬ*xZ^#+%**D-ne!PnK ·~'w8nEkDBt&>{G cX d.uWeV -b1.ulp=i/h"ˢ7/ zؽu{[GE/EH~;OEZ4X"^-RCJ-(CGV&S$';O&~ &EkW!NE#R_^AtRvCpK"hH"DfĒg:s~SJed=TxfoFGcx|s4@{$g">+,dIBr W̶-$BYY? :я4")IGJ^:1_I,$2L$ӗl%4.؈yg+YLFmR5 8*q"J\Xz+jX$xG:?rUj׻4 (4) dAyP=2`Lb(zLF8 F&b6lfRgi֒Q}sH&"1Y1ƵC1W;NuC&qnSF:U q4B6UJϛН.[rYXHIm8ڽ< ={ʕ]8Oz$*طE26uͯ"!rh/Qޗ-JR"lCLĮF<[-Z"VImh"-.[s-,)  a1)D&A=un]/9u3ju*]ip{D/ } *IuM7M%@\`KYEQ 1v=}0iUIa6txP+5lwQprKd`Ӭgk~_O$hIB3z>K4Б#O>5VN*6Z`dB]19n2Oc9K:B:v`<ʣ$MATgTܻ!xĝ  VK$Ėp/$[ҋBP%=Uј\\^)1l$GGJcJJ:&1)AULevJ}6bެ~i5!%8ŠS gBRjTR ֣{i>R&jMj&U 'R2I5g-I_qͥŁe>F1%bd." &aʚ/:PMJb:IFf0|K ٜͭ{g&ޛ}#7Mij#]jfl."S>eI&UzI" &?zƠW "V2& (JL.D edq),!KE''zahbډ}~U2:Mfh^XV] h旂eуJ:֌#fhѣciy(,h \X!+ɔlZ)d88G_+DhEGhHH2|Fꩾ ~b e'N, 1&֝%M4K:;&)߬MbťP初>n PDpXg}%mX://N*Ő^f*.yWJ*i:i:\l"l*Ely5<#4Rn&5rieS&zcc+ASk!Y>Q<+)=VhΆh~͒!5U4 8”`nv"!̛k)(q/i'2u,l؊ؒ-6ɓ{E'Neƾ!jbЕ[R(nR,ll >kr(n,Lk9bRP(|H Q,~"&Վg`2+ju!ynn\8coTeZh~ƪakjE%SJ&bVmi)Q"B&bDQlQN+!@.QA,+n[ƚPm2gokspnyGQn&ʣM~:nߢ-N/*n$2.2 f[Z+4܇lƔ0^'. 2-.`f MAz.\0R#yӱgq[VpR4FŢ W~ AGWpPJ+l&K=+ 'iإ!xX@RZ2@`@F3$p) $E.0gPA.+asq5 5k61  8oa`pJVQF$ӨP=R)aRF'*)_ ѯ+?<,ҹܭ7ds -BE1yn,2Ep4.6MQ& w8 V!3Ʈ;'b;/ f=#2bo?;&+5A;Ag /QV:4~la0q-ym]8*Hc0) WEL?3^K3'N;c b o99"CN#O RsBuS^T3R6##h0xu!fTqcM,7N )툏vv_( BN؂iZJ1tws:3ֺ1b ccCvz oBl #o~P2op6)³*sU іwTm,,rn6vo^#a3^o-BΝthB-s9gGm0Cqtxxϴy$zw7IXP6 gvsBulv P*8'Զfn7' eߥ9& -41(XMAA/T/=Ug,IseTa+axyKbrsKSz[z4PϷm gZ h#IculV-G"sN2E8 X%?Gq#7"ɅȘk$BJ0 ,xv:@3:'g^z{WsڂZS& /iav@kH/s'dzO9 xayvBj wF%p_߿ >J[;ed+0 Jgjk̸$`tLU||} we9!5kQ/T8~y@<CöA:6KG8EMпNKSM0UV!"(ۨ\+81 bcdügheckaal `fpXe\AyX7l&'gjI.R ׆) rHfVYhsjjzkk{l|r6Ͼd=4J_Wauѫ=-5\RNC%կEVU&equ29-sɐIZ 6TQ_ Ip ~}lRY{Q"؇nWpϑ=7^l P(|ϭ]~{uTw_jpOQƸb_C} gjܟ?75xy01rsl ]vGŢƒu~jrC^ q1 T#B/ ^qLd&Sdf3LhFSӤf5yMlfS 19i1T\#쳞5 aĝFٯS#z?&:-ԧG 0O!x l4HH("0>F=i"o]ea6ll]zfe.cR5/$YmUC}zT&UOI#Er_יOG.Oq2ʁ"< c'1~sXm-@GSE.U )hVl FBabGeYdo6B+"!Jj4i&iL{ZԦVei_$*iCBtb( &_}Wt@%nq{\&Wens+ӥnu{]f }#T'~jV'Wfue̊GK֪Af{U5[ABxDø"C#V6iGc׆5;q!a8 V+f-B,tʸQpݩ}:/c C&r]!YKfr] ATzFoW矠Yc&s\f8l~7  ,] 0}-A f. ~Y:nnV*!X.%lME@)6X(iPZԡ&M]j#1RA%8NԽod'[E}ld0 sb$6cGQ (vmp[&wccMضd̼3fbC8h,af:4x`-CF&4j)٩uYG5^0FaCh\Zׂ'PɐRD 0k=|c5{k*\盟͇[ĺ_29/\]6e> ~\ҷJZ[I|OWԑ'?pe=^m,+;f۷}B 3ЌWt" .3$}vb&ҳ&~alrq.Z6Y s& Ӽk<[J@"@@@@ 9(:7:2#'w#C 9 yY>.72Lx>+zy==#XBK#& ™I0k#jBw-`؉)74 KC;{0,I4=!`+P "ӎ"=$A0AA$vAè}?&˙Tt-ATP!l˷=>m *;B+c4ƳS`0m$'lEÇ0;!FoFp Gێ]8t`0 "GB@9RE2DJD&@A=lˎI4<~?@|$Ȅ@\HBHKjL|EE6jAE6W\Xi=dI\BKEV B_̐#7!!.0l0͘r0d͸F?2ӜNjiTtG$R@,L||K4zDO,OLKKltO*O\DOPTOK9M2h͜7Bi[#a dkE&8L=R4Mĺڴ.ɯs()Q([‘AtCZ24îԨ݋β<˞HK\LLy,LBHҹt%Ӽ,LHČ|lSSK:M-= ;L UA܌ /TYPE&݂^, )T(ETQNBLԌ1XDU؄uIiULsU"Њ+<Ń8JSR @;;PYDeR0C(u_RbeO-uKlD.O/O|hǝVo5ZG4aW3eL_D/t5LXl׉yWיz$G"sQѽٚXS\_ }U#Q<ʍN,_!Yaǻv`<݃=.dݵ֧Rf5a@*H9}3aLKPS^ORNDJT~,bfK⸁eYhd4eL*g^q`f3a=a>fRf$e +)t؛fʝ@ig W bv!d;bH}}X8ZmC`Ud);p٭~=\OFPVQ>RDkZeV^rAic=Z6TڲP ̈́Ͳ/rԴc Z}>]_iCܡ6Ɔ&mAk#,5~ޑja`Xgp_-}kށp[@n@~knv2-#knSjCi'Af'xx|lPldeT`턻fiT/8B#F_-9.Chj(nB~g~XJ(\`P(܈o^ & {ӥ o#Or"k荜f`l?-bAIQlU|TΊzo#6nNe>Ͼe ?f\;9w;z !( 02bHAh (H i9XiIjZYjB@I! q{%J@DAi;[aƐ<.R ^ {\Y80ѯ`( <0… :|1ĉ򳃧F}&ȑ$,*OVDDI ̜)~ByyI8\%SSRuʒ֑qo? P*XkBs;m\XsV&5EB7Qhb$[6x[nm.\rr'ٓz~c_w>V;ݼ{~(#mbqrD1]9) + <(6iI0>Td_t|5]`$^<6 AhV^uˀB( %u}BtIra4C(!deppKވfN-2#_a=hW}$  e& 97H`%|̕2V""d 4\-&|_w*$. E=3 e$se*K̝sR/bo♽]3ξ䘗_BD;D PDFa44|ÚLL<ŝX\e'x#3O 3*#&ܰϵ(g_(|oo)&mpL 7H-;<6YT[5t 6yUQf5 -mly(YDp* 2 pa(.еd(n..c&Dd0HQEXG%Qj`sz'](A{+  ac2ؽX'@L4(H܌EGO;GiD6'0i ;Y5\ ܎0<ֲƌ[* #BL@`p684?f`NDqHd . iȤI 5#&我"-N oט5Fl;|Vw vJ¦$^檛G* h2M@rk] ;R؍܈sވ XDgNo4uhk&% VD X cP&C Umlv6soht1nV #eo]􆁡\3#F]؊B2W7 GTVnph3Rr&WqhK:(;HX^Ui4{sÄ%n|wa1 ɇ|ǕߴDXSk9^eG%ttG23 N;1~zv'u`c69bX&bd?2dv0V\.]w\"G[Z[ \\vk'P77@gKI,xy*w4vg8!_`Q`LDzzthX+h!'{$3I#02;WY8dٞ, "X"rP0džbh"pMlI 69 F׶u"yÙs[ Ky ى{VŝdUϴrYr}5N{` yupU l*Z΢s|qkʣk9j{B)t꣨@v vɢj\sbS([R yu(*xَ'c䒋'JȪwʛ)w HmPGqUMzO )X+ei\z77'j8p%|rѭR" קN EhOpE8}kQ\%GjZ*4k$I4? e%1)<O-d%#g+l2":gd">Z@*QziF^,O@ͩ5[Ԏ\ ߀jP&}6-(Z@TzJZ^.쳃V*r;*:BK,(Ğ5WC>CQBȖ|Ȥw/8ԍݸAٝh <⍬ʫ׹ BYjX,-=|-`jb}]l Fy;L8x0Y~ Zo .Ŗ#0?q(8o+ p2:pHO+.nX%lIU~=<񹦗B#\llNCD*sbE˴$"P'ܮvXrY&#w舀fv=̂nMxm6c8y KڎB=Y>Qne#Vj>8N)z 9QZЌ4Uq"`ϝ,~JZ> }eIɇaݼ@E?CܾƖ-0^ X m!:) 8{1OXU|`<<'wy1' @ |VE!F82X 1ڧ=A4qEdI*pѸW,7pifwĆ+=R#HzH0LF)S2GVtWNugSlQ.CE%*GRMEױsl7^ܭ y-KSژH3651a5,M\@QelGhL AyRٴ_NOI sԓav T3@os W砵۹.裋6Znئ5tzYElVE0Y " GᢶVe!10ԅηυc.u3Zj\ӆ?"!Pu_t9R9/*1YQO]7nu,j9U57(ld\k/iNբz"zi wG:@ηzIw;~^+;Su6*Z#O9tsLϙ**|nod….`ӱt{T a:3`.z Q $4# .7f tV-hd1 EL <=yK޴)j7ʚmūuσqOF0r0eR.4~acdԨƵ)q|x%dfM/Uִ!j dS:D@ M:j'A BB :A BU"u<͍ InD%B_e\AXDqB1XU|ɓN-R>/_,-E Kw40Ga2Ӈ w,ac'^ zZ5H$KN6]Cp!I/;[x1*!e@(C̎+Q4'K%>GC\ۡ|M-JE2_alKcXHI*,UG"CIgW*%PKfu8[?eL+;AG$|J#7J,2,ǔpVϡ$;.J9QHshha*YZToQpU#:5 FO8מ&q0Mm8EͯMUk؄ٸ d!c6' 񱏧2dW韽0n}u< H2vW>[=}Mc LnB{Bl?iB>8^; ˆqϴ1{xĩh ֊ع6(N{y\ۚ :Ԅ\ Mo ъ!EsQA:F9֏L l  Ӫ*aj*TI\5,-T j6k&{uk.5R4ðPl*[⫪뎬o|X&ԉt)&AFoaA\]{3~ "CjUOʜ 9)myۦ4rJrux /qGkW3T\9p +AU3aDs@t8OCjk(d 8ŀ2߽  ?OGcf4:b`#wC`W7'mwtJ~(X~ 9<[R)3hv⠦Rm,ϩ0{4N <*(t&0+BEJ \O `od/dht'ՆH})oۺ ~fXкK͖* vX 篸 вO8nVu; h>}DaKo D+J3juS&VT YPp.GZ %D:> BFdJpsn/1 .IJ6;qJ>!3:ͼCθLL4k@ Ǝ da'* Na²P$NjF`NN.SR);hn&n#(~_TNCBAnd%u?SN,12 MJrr!#J"CO4b%P@r rpt͠\% j pQ"̲1'CBF*H2_^N`aP`lQ?ԑz$Q.ffKY-cǖK ɑ|1׏mP-ep.g3ލK)c3B@2Æ;Doj ".RR% !"s3rįll9 R2s(LR(c ppj2?sǚ&dn*`B7o,=05,)-mﱤKSsIP")][SA2̏! 2.-hr"c0-f/x x =d*PLPRpΨA*֌S+{mѨ8-䂪(Abo+sk&-i-ĤHwH, I٨K0=sh4Y i.>bO֩1bwP޸#2&&L5D#B#)"FCNi6 51wwCa4hDeDWn8YnTT9StDDr"f?j s:9tٰӛTnLF'I>t \C_(hh% &i&c)SLT!1NYRUȔTYݓR(mg $}g@T*m+K*YE`Ei$E)RPG}NRT BA`G'`Ѻ} V.[J_!V VNFV%@C3L4w`C(.6NvJAcsp!y^NUKd/#_Gg듮l )\ ]C%My]uXs9^$_ohCs:ЈVl6ȍHh.Hz5H5@V+ @$3@p@/&F>PqUY5T0Za&Eu2Y ?ugz.h{hTvi6tR(WHoj[+VhhAkwkokk6̩IyҌTy7zPNWv |!|5fE/ueKcqpr^349 M_ WhYSW7g?W"6xMwh[-Cu͒_^etvtwyvi97FWSÖ CuҭފsxvXzX2I9nJN3fT 4*Y3oojbXz~UMY WeMYoUXTH@@@ʍYG-VkJWNuD7;uUQihQ(B9[[5GE,֕ɓjvkUS9LCA@M9=fXψ3bj ~ApST!ΚςVMņuNbG c1tٖcu^'y*UiS׮4vQCGgJxOˌ WaTWڤ9$iH!7F*2nߦn F 6Ʊ|՛RX} 5AXِINC 8=&% 꽎]A[L0BY;Gq&e?iL?Oo 2\.H' Q=V r(F :^&c(v  aMb!]#_ H"!$# h(i)j*TGVW@Kǭ o/o01ppr34sp4usuoow/ ӑ'y@;ĉ(Г8~?$  &&PԨ!!D {!V_pC#aHe ,-_\)3xB!stN]ϠB.yQGoخ)@s&Cs#kW`:W)eyҌl.1H$eRBRJ aH0Ċ(.ӝƒ©`/̚7sn%lgٲ%ݔ1'm5o[Fnֺo7ں]mVʎ+BY=MB}*qB Ð0#_>&ϛ}nLQk!C2h a 8 (w 5R0UUSa~CQœqHsK|fEhuA+.u ]KW]^~ɁX`v#`Xc)cDƣa '$QV}cf"-'6"qӥ`#\6V14Ψ &kiBH$$=  AŸ)NJ8&!-ӞI6[dtaȏ(x:GdjSjr  K bUaf6;~,HTeb[)ċz%c騇d9&9dbBYd#G#D.+xŕj fr l&xѡW{[䝡@%QP߈z@ZZVytᮜ\Z 2+SHY+P>35 TDC%,P85/]STe Wib6*#݊jO" 5z2$Q#b >)W/[YJ˾2 O[_+l9sDPl5Q"zEHe ;f)J̟͒M/ohtesAߜˢ իMM!O!; VFS Hv a]u؄vhckw_z#$qH6@lmlA20 *rpp5<֦/aPL Z0M" !ʄrH3&v EP1VU'v苑4&K~RnxѢ+QJ R^ӾsUht"zAUxTEW\4g9NmJx ܇"6mhL? pvhdPHh &ǾWDPA&`eqPU5,)qdd= X1\t:a3LN! "vnǴ]I>9)ݽ%J<*B@xSwؼ}4O?-kaP+BhJ N,1|»' ïD\,V N|--q$Q# [z4e#@JT7OmN:˔&mFҗƥiL3I>EO{p|AS̃  C4&M}*>8vʧ-'s TİkJ=~G[T/W:b[烬2T{LG0):6:ӚBU$"(KI|4!QlQG(hxPg'J3l8Jqm[ْ8(G1$x1k3^сu 04#&Pyܑ=aHD.4#MPY`^xmXg-4^N5U+F;] dAz_hj@4l"F̂hc*̆fiSttz&ײI0`mccXn wXBn._=LF*0Zu<׽ \(k9Zf굯&QڛBPYoͫSHr LwN=zЛim'A̕s&8(68tg+{C;oqY|FYEW0:w&P'ܧfT -;2?hyqAD"͐`ڧ-iQu mŖP\Z3y(!ۓ]y ]U| FWQ1߽@8!͹i~]i͕`Su4 |_Aџiga A )_-V 橆ml F!qb "*n bxDpX  [@Y A1[T-(B@)>$_Ձ[daYqT@Ҁ//;m]ئؑQ4F4fa-Xh(טW͟ `!ƹ&#XC*b5˭lD T?#!c@! dA ~ Q}"h;R%UwFtDSXD Paн-VՑߙV!"S$0L1cˠ2-;<5C=&Ly#_Oc^b^ DZU:F&<.`&r`l` ZPZ^8HL0RPf-e;$%AeDt$ID CjdmE,nb"bU"GgڤEߝ AX] [ 6A]-% BBRW^)U $';.t%}ƍX%Yk%o#.b"b'M GvzMwGw*8л9贃`?"Vzu 1 J:YeYUML:H&Nټk f %Pg@%e߉ SSJTE%)UgV leDW^XH'=bYIiyސI^P"X+ CzlP| bǣ(L0 C,.UӀj&K^&Lh:2d1ʌ!#<Pnޟ2AY~(7&H"􅌾2^t"h#iX ḽܪ*CȦP:{Z^ENtNkN1֙.Ō邢QL %zN1Q^UW%y艀h77JZ5o2jHVT 㦞czj HmVVZ1m͚f4X&VP:zt^V"_*XN֌OϪ|Ѹ R:1~o.sZ&v(,R\\ƒ*i:BplVnOD.<},1МȢA~eV>ԓCJ,̾lŅH]nbViiHOf&Un#NUn*Ftnn-K^^MJp}pzNh)eb_"02- Ӑ4._i^5`o4GІE'$7!<G3?mMW4ޠd(~f3Pc9{R,˙ˡ6=Cj\kjPlsl6mv>^1; WfmGXXoҭ,k3`21E_e4vVS256xǵ莮aը4BTe_^Vf% q^eAthwP֖d,p38p+x+5}0}^&>A:L'U~B.҆)O*bt#&8&>@$7xp\G8q|ȫ|ɫ{":g(&Rt,[-6SR:s+sfʻu' vGswY <:c5B¿Aw@| c?xX˰غe}ʽϳnao,k{ټ=itxZ~E[Wӧl˵;=SY5>뷾{Z=|#4NEkXú=}瑙CurgxJ T?>yN?y2$ =L̯$jPhFwK=#Z7wk͞W8z gn`$b0(fFQDf[n׫@cX9Ekv3=s wP(4~NB1>A%eF";sNx᝞֑TwNzz 37WXeE=$-l%.] pA '*>d>B,{!g3AAGD+'S|EeD"0FLBE7D]-M5_9fg6Pe+SNR<mYuh7YڐfGŴ!gjd3cǨ:z2i3aԷ8> l]V܅Qڲ7 A\*(|&3#: Uz,^'n+Jx[77W1dCOFL&mwߟhHws^gXFԠN$B柧0:j<|g캸>>{ߝ||7_}7ǥPU08hFd#X( kȚ֯XB0Nmo+M׶,(+h7s\1:v Qef97zQ_NeCT˖ۧbvs-Li.S)Ynq۫co\׸Eq\.׹ͅs]N׺uwئj=swcyX}{%ɠ+mֺVJ*1E4!8T tA`Kn9-)J5*y֥]kq k&xSDZ0gA1!Tba49OdnV5K.5e֚y=cj _\nktwx9tmId'L9.rC4 G5B#e!0miuȃƠ桨k!: mUj=lbFv`kCWY$mgN#h5N[uvZa6Xɞrs_Ǔk6`]\vwÓs"{dJ`ٴnp;JyL[@-p 뉧/5R=r]px41L6s5us=υtEGѕt/Mӥ_7,qkNZnM =qPl_7j\b4$h& r:lpQp%NjY KTE'_]cc2z>ae{u{mDe|7|fKk>EO=3@l`~C`u[z*"NL$'ϛ;71j?K=\8á˦ @f9m:o6a9A4l+A#ژ" p v۳"#QuHz˷$( иPӜߑ&P 'h@4+Kt@0,5;!.V 589:;jA;pi`jKA{H(}{0xA<ʲ*)ZZcR//# E#XaR_$"-jF.hhijklF?Fi¡33Ks4 w"EYGQsxl yDZ>K̯Lĸ{7P4?iؘ"L#$$UtMD5дB)V81K)^ _(Ob<\H6D2xC`eɚɛɜLf2#:(>0#7n dJHJHGN++?C[k(T ; h 3yȚB~‚ tɘ!dBL` fI(IȔɤe{( K& XvR|'Ѥ:Bs7(}D7U[G#A-8nFt44?%>1ʳ1#]D@s$( P̕k o#eP`9gbIG^i+Ƹ~ { D-4 >G KGĠK,$9-dt9D)чy5GK"HL)44( L*%<2S&K11-%;a8P+[S9tL6-CL/s0ٺ@5A#԰QGQT?:LGp"<:ͽ=ݣp X9+-`폌%UMeu /HBrU$BXuBԱE%+xN{6Y],?3l݌Z]+N-BtWZ4uSU[%8%3^euLxVymveGÅ%`Hn+ֈX̝\]<@eB&e*o-E[M-[->_^߹u4V+S<2W(ӫۮZ+kk+6c^gg{J#cq;G?~X}D܀XJ^7+*XN7u#8 K 11514T $8uXŗV^Zڥ Ucigr,6k>Wkf.t%_~jq.VW;fo.2`3}kk~P^kJkNTՖ)n䜰`X~h.@Nŕ$H,QfEܱP -R:杖5f¹!E:jfɌLھVߢm[eiffq^ gmnN[n=^ny%>lcuQJVoo}X\,Nh2l"8lU콄h.]C3?!<QK a9j5ZK I 6)԰&U.pЖb%c̪Xѩ@`j&kVo~nDcfkbqrok8߲6q쐼D['(D(o>C 9fu\I M¶oϭKQp,lVcRmJ^Y 4!Eƙb\ _޵]ޝHL] \jՉ2%c70jb% X_2JwrӺ>` vbudeg_asv#oH ^1]ݔM vTlD刼QΙ]\p}0Bm^3 u\_0~ڂtw%uY9-8%Ld^A$d-Ewc?2t *-FlGo7?-@1q<MJ]QRJ{- ^`›({aw!?x Ʋtѫ){PLQ̇2LZujwVD._BE>-*D)|D|$ #sX9?їԶyfᆨDsWaHuGU[h,$8YK@WF{xU%/S2xtNϜ UwmMzdP|b >6?Yk/GC}[!H#1lB@c DfbRe0: r1ޭ|NrdW送 egNjkYr][`IGcMfH))00 99 f -##&&ZWsz~~[&JP [3 0d9!"Zi>`'L?8T0d bme!a.!SSf6yB.ϤrP$4IղOr Ŷ۷pʝKWXZaL!+ 3}&ZygK q6ws,2"?nx36BMӨC|#십nꖋb؍cB~ HkVqP"jhI)'-mt#d&#ы-e|V㼗=Qm?V 4^$yC@@kAV3&uZyef.k C3@# 5ִ36+fVY#:4戣g7Vƣ/^DiHk_Tm3V鶛#`I,*L7B-TWmXg\w`-_/]v#FXG(7mpϭ=qwdzc[܂Mۆ{.ȶo&fz?o3ᅯCoO\S&ʥIl. Dqp-w }D[25'}5DO^?u|V%ws sU!2!)o ?L4YV5Ao LhHЁ d]#1-q۰@› sW4Un{/.)eFX7A Zcj h8A.e[ߝFh>*7T轧zb1 5jf/(xP<M IBL"F:򑐌$'IJZ̤%RD`68R͔0)/ͨ2*?x#@ ']I! VJG sC:K[qץ8[h7|P9И;51xH!q{|cG%/e{{%33Wy.Ѭ@2юz HGE@ a@ ԕ/}`LЦ5Mud{PhvrIaOad=E={B_EH0@&0uX8- 0VLmSg׾v58؜@,lB Jlb>畱|f!ڨӏjd :@ҚMjW֦xlgKͭnwm5863[} ȱ(unܺU8׼T'r@?86qϢڇC* d:a5+UuvΑ&WJ6xܬ)GuBe%ka3QO( vÂͬ5O} %\Kƥm @Ld *Uം48u͹;JQcJ,W2]4 JF /CQ L2|Y1`VDHIݱ vp`8#T Wb.%lOʱM5V!#ಡ8K }d<D"LbNkJ 3jO.]4ZHwAE-7^,s@]2;oګɴj|2g 6_WVtV;<S)v>@=]XjX GNWcV! OWk)ik# E{m@ЇNfFw;PM)YEv 7n _z׵,S `c2=CEr2Kz/΄hLƟq,IA*>v֛ āXf8ß6>-,_6!<"ЗWxԧσ'MhI O@鱕O[d& cBn}>bc}h/ػor">}N$`qSL'PTL&3C_:߀sspMAvTo5'm"qD;{'s=w{zzwzqzGb2{$zck>w|7Dxt|t׷L؄NcGVJACuTmmb^mڅyGn|pɓ,ToL{KZ{gH~xsMqVy =I21ȁ"BSN!1#=8XhV-X7r3wpx(='!;G|?l|0lOx}TlllXwv'77Hgg8 e WORwfo~'%tX :Wxm@x&p# `Q4'2L x9/ {ِ=,?(YxHXKW[fŠ;c)Y I#i,YK+\(,y <643d6-A./5JJ@m7ww=kfn[vEH/ ^B0Ї7Q b^Wbyhqِo[V`_ Ja|Ah9]hO'([ّ9)除[:[W\1ՅSu.ù RshXYYU osqLgP_)_pȆ0u1Wi>)I  xU`y˜_5c@x8Cz(:ٙ (J6) /YU2J>fyœ1KVmYJEm_$4\I*76I - vXj>SnɍAL#ڙCYyPhxo9fс( X I|))}P)qQZ*j<  J Hکʡ :X}骱[3ڢ:Z3ZJ"٫-I>j[4ۗ"$eYf0BvDt׀TѩB DfU5 isU'vWDaqkZ7^S4T92 QB 9?**$;ڡ()[71[2+Jz7ڙ,;:2[3{A["uԂvOJvCǹz#­&O'GY:OU/E/yKr%1zUQn C'nif/u*1N03 {@)I!>: EP:CFqkurqr ڊj|Z[$*/ z$8{<ۚ-ڳkOuϰ Z-~4M 8mqҶV]U \;$ٍCߕv1E1lԦh\&rq2ڷ5WEW>W;U1;!ɰ])=C5>cԨ;CV`283r|ࠏY9ꩫۺ{{I[ڣ7˫1 ɻ[A|EªĹMK& צ~6 ] ~5p>hЭՈgw%c.$!U't t uwZI`{uZG ,V]4`DY]@qO2o$>P5Y=%'\ V|(f )B9W%G+L#*Z-& 5[P.Iܒ2Y4KeeT kU=POs\ZZIbVj0º c˛*|Õ?R=TmT'l3\S9r>BVԺ."@bK kmZy%xG2vy=$Y%ɶEhl Dj!Ӄka%gz(rr i Ͱ3NsGMPͪ"O};T v7&zyV,0;(Kjlvh^/W1kXi^o>P۩jV\^ڬqYς9!wHUXĸKwaz3=Q=V~)~q2O1_O3ooc%~DwM\)>ߎ|.T XH8hV5㧂{.؉+)7ir?'jE>(*ڟ/d%ՆQW0z0?o>3/Ŏ:@@ Q*OKtU]/夳 'sp nҧR-P 0CQAadi3Ss4Tit, #5LvluU27Vv6#Qc0@S{ڑ=]}>^~?_ߑ->(h= R0‡ ƋG4hKcGP;W0[@IixhPC~IFk'5l."H¥2 !h0C<}"vo>ˌ%y3c%7!CɟE -I^" 7D !@2d9F1ɋP0l01@*H %6 -8{J YYbyF!Ǝ*H*ZQ@S*D`gKk&*,ҩl7|L-6gM7+NM䔳8ܓM>DN&DMt}SLB髏C#;RM=TSݫRhc{$ B'*PB "REYNi:8Jă;0X IVݎ2 /aฑ\b2Yh6TB6Ie `,̚.4TG;-Fa~^O?,9yώ#>eι3TчT^yQE0"暋ҵ6OOs0Q mեBVf ’)‘-EC)6D'&\^H*ȳHyOY[Ȓ0¥1oaю%7ppik[[lib2'W58/ybuXb+ }8X]W]N@+BW?U!/>NǬf&Cmop{%{Y%@XCAp/=:yNJj^B=KcQH'l9 hWY?Uj J)BLnp ]VA\|j!8Z)Z( 8Or["/(UF1 7nNdzmfCN=DMBWd,M< -} h LEdQԑB%!AF8рGAc_&saD|P3cKݘqcM&ĘM'Cw\H* L;-T~T<{ޓmDGI%Q!tL >yܣh?~kk)b X4 J)\ ȀFL&liC'XuYL@<0`@4(Ɲ 9jRɟE_V/iYV0w+5!p"ǬI,7ϊUS# "bvFM jl2Y%|cK% AZ0 E =GBpYH:"E$R KN^3܈RP~M%ӹ(駼@ˋ]%S[jۡKY+ /GCF6tbn+7st׾#kYK# y2AB3E[>1U~:Sq{,"{ ͤl%* 4iѰs%|h8Z:bVwE5WIlE­TɠI Dʋ0Wrrsn58ic?Eܜ錥ysg?t%p+" "E=<:qHO {X[>sf',àV0",Iٲ3}D_\>gt*# !XJרҞ2+Hliؕ"$Xi)S*Oy,`.bNRs0ۃjjk:xDj|s h;I`B8Q\4z48&闼baj 8&',eNq6Ўcu`}^gG{9Ko%$2Nx9 BlqwL n&7~z 婔QKHy ض*\V# -.vuGT#-9ȿz%ZR:phW+ 0sp.6~0mxy(AEUux%w@O\5$PEмGm/>[d+)@lm:ԕRnE~e\80<؉!ɽRШg~Jy>_1#x 8v:(=0 H"0V,/B$4:,iKlLODL0D0``n-L$ĵz j} (c ; )A" D 2 O 2:qkΗ~ ȱ O я0012 B(""/!P'ri?JM9F@g I̴_f, }"M'mnK׮vRH|Qfp zZ _qG/(&nA*! /\ P`,R,Ѳ,2-ϒ-R-$.A// QJDB`f1n%1/mC"x4R'#*8  4C+ˡ ̠àT)nqrq |oѶʯG~1+!02)&OP)Fc*:81+خ@8,?c-RE,".S-s=S=q.s/ R{S"""#BU*BCMt[""F͒xs+S+w?K((ك.ڠ,@ b:CFtӻrAx+=SK=K,2>4LS@T/0M 4cmb!LBmBUPPU-/6Ύ>NJD$iVc#f^WrJ{ '3Es8P;G8-( 2 4^ GF ;5rTM8J<L߳=YKLM4NZA?s@ZT nP4!e$" O)hQ7T : ':@)R]5@}tEcnj z1{TIԀ U9OV$SE`aC_1K'>XrL5YYa4ZUggug[ h\Vi'N|"'׮R͢5_jqhshOHlOCSlydH{X4,v^i\&.^jiR\p`__hPt`)1XplpVm2YSTrJV&z`iZb: oF#p pe_XWY]XײY_>.g}s3sr=/Awh 2 X2GXyUbWY,R^ :BkSkwV`{naVaɗQ_B# I $9MDwCR0! /#KZ֢ 8EUpWewetfwKr}w7.77[rG Rf=bB86⸎mj$CgMDE`vIl>uxwkp#tp֢6qZ81vPU ^z T"̺ㆫlo}mTp 1|䉩q[VXwL8uxXM?yX5B+x2C XY8j͹=vKܶMx /pд9 :Xv&ckw`JSHN2hHNYVdf˴ ; ]>Ṁ z5q9Wwd:9qt>Rr_¦UYm})9~ڨXP&S'-fKԖ:SG i['Xmšq4x]`_Y+D~Bؠ7|̄/zv 1p9KYT[~̺61!EuZxk*ws3:8lN9U5۰ԜƬ%dƛ0`|r'D+yFzk]9[-FHq5:Pѱʴĭp40{.{ۄϼ=;{N( fJͳxԚ9]+\g[m:/jY.? DI\LN L{ ;Vwdź Ew%1 TڼtY.PTWo 0ŽȠ\{ įiFS~y)P~'1x D3,շvշ]=dNJl -c @ݾW8hpj1 S@A2FKOSND]?•ۇ dUo]%zlz#]A~>DUUܞ^&!lu9qtl&i Gi?ϳ.͋]س 2!F 6)EPdH8"Jd*{z @.t/1<Qs~9.< %*2*>BF=DyL|l aBb@C؂QP4 º^cז"@4o~PU@I))A f 9BD@$#0 (}Uf/b$A-G(BHUb5JjJf!u5$$sbɒdbf)ӦMaEU^utH ]G, f*4[ _ĺvڶK߾~,x0†FXo<& gHE ]2iz]xb^p7oi>bS)bLތc.͆s.*18􌫡T4 ϣM٬f"z~|ͯZKRh‰'#HWyr -a $5W 8h7j<`BЅmݥLA4)wprXD#9OP[p M/ȄPuT XPYWb[rW}ui~bg|eQN\^gDjQ5d)B!.ʧ!ju%kbmI+NMzGD-4"J+Eb>AJb*-gJ8Sv٬BTy&iVf$maV՟x'k㍰. &r[UTa0(p8X.,kiVGpYWG6{cKC &Cwz+֥J*iyF~9mz o,Hk4S;ѩڀ{0i \v8zDo+h˪.ȃƤ^n^p#!? .ʤ@=7+z ڻ/0|,iI+NA{KW+㡓Elo4?.[G6+Sv#+eR/67(,_>V$]xqw]λپHx؅_Gl)Ky0`Mܡ!8@ :)|^酞=B9X^`YX;< a)J^E)4ΝQyh%DuPO@HhqV5ɓ}*aoKł<^)MYĜ]ڕO*eWI۱ܽD[(KQb$^"L R񋋈NA H+:+I jh@. p ꉜ a^؉Ig(IdT65l\@̬*dЩk>Xm_c!ƻ_=[}>Ֆ%_C&ACBdD%V"ENěU%nF:*(]`)W*b*rc,dK"Q\A .`E18c  2d 6# a!‚_w૑#ߴ!vDU;VVG7ac!lqF7û!.$!~]^_f^"U\F$RBK8U$J"EJ`֗Hff"5^Jr0K: b-Md_uO%e0VE`]dP2XRR3~ZEd5crٔM#)aW XqgwzwzB6&hcåDdYCdf|ʧ WRmg~f}eJ0 HIr&K~f7EKf$A $ &o%#; no$ʱ4e"eXB1AD}!MGx莶x>o ] FHɓ~"$nJD66`‚l♢bNւ,:h b/.BTZ򄨃E]Z,cO >~ gJXc o܂rKr(ҨvaE_8pƠfg(*r:YCiB JB JIj_zIFd ֢@.:ʬ))3$Q~+6n#,ʑ}.!_BJ\Hӹ-[:s̋夺VaK s NK]jֽ6AG)Ŏ6Ji感H$ Mj(|DhJ+T$gt)+d hϪ)Mjkc+ڦJnh庺IFcSI'ўK8f茯,JHXDh&^i F0j&WCp_DGt8zl&.0,A /|>ÕR^=9n:eK )@w-䬙$MJl+3Ra2mrhknJԒ(}UB^"5f 6TJEϩXle.tp.T#-# i(~vLʥ0zJMB%W-Sw\Yi4"P쓪h'в2^3u108́3 j.b+.nliRkpV0bQgGlO1J-ŨͿ H[ tJ8CYE LR0AMO̩_da='LT"4%Idh.iŰ0y[((+ͦ 3ʰLZ+M B#eg/m6lCBq1QuC ^!4AyNův1r-vUk-RLl93Fs[v#F8bQ)v80lkW3@z@"!C$kľ+ Ċ4ͯ̆a#)!4]za.# #&v. k.WtxI23N AKd,A,-۴ 4P/N4PjJe-81”[MWkV' Ui_Y93:BmmN'o#*4ڨ8GQBڗwTc ^D4xёOZ۴RK@ITSy dtw΄V~$pG$= r$DCO$8*g/'}oCFTuxkt˞zA*623I+:x`qx7Ooo Y4BZ[Oy-a16[7=eTlKUaa* ݔ/ҡ1auWźqܜ]9󍢲6 ȟi`H%#:*xl )_o;'Co4_ۻ]V"4~(KE0j3:׺&8M_"&ow/. &p3;/GaS?9Ufyetvwy#_/9YsW$'#sZ߻ 3b'^?屭{%k<:ّ(0=>D]DBgãUfÊR/Jz߼K.~nA x9# 2P+c}}Wa/|95|w=i9dTjweN4\\s][! y$6SV3rtѨ9.VKrID A@ 34=D9& O H9wӣ?M4ao>?+  <%2zKp'9LxzAI 2Lt&%ǂ Ke.$'q- p+#8N0H$$b/-译F@Zlt v\ *1qDĬJQE +RD(qċ[u2%-r5IH (@::7s:! UL7s6@fLH>Q@anDg!xiBT6dRc8uZlDNRV]]/>R%jlVV[O0XD]nD{+'@,0+ZRQ Ĥx%J^ ~FM(+qЈ\r?fCۅXh)*p-WDj9a5:̈́9y$^~42kG zՆn=<EPCW.?#^y+SMz?QQe#`SqkI@&Fmiz0x( A'ZuBo*da ]7<ѺGBR-1,]`',C̝=0 E rb/G;M\##H)[TpARle0Rb)h׊H2 s#[(AG?葏M,ӊ;!vCT'Ѻ0 e 9_)KyR 95bֶa0+exKK8̈́)!}Z7eZ#4ąa\9TgA՘m]&ܜX)갸ׅ=D pWƊcYژ1B0e=f]"ZEFHNdK'܌ֈ?eҔ;_ZT`8H UK=jRT:P%.b3LG;U- xX2$3ɑZ& -5D?:5C!ğyEp\`9DFPUξ^Dg]ꇁuw nPi54#D@Bm%A.$#`['V¢BpۭOʭ K3"a$uɤCW.~]t GTz^UoTrpj.E7A RE\I@h֦buEUms A(<mIx!;J4\4+ӗ9FETwlo;n-̎t33GLRGu;N.(g'\ s,g _xW`k/rPWw!-6,]ڞg $סʮEB" ]0!MHg lC=S'@"j MAf⩖ Ir[]LiדFQH<)hY.Z~[ni /\W|{GGZI'=p0Np eY t#ƸՍxum?k~HA| Ï d?:-GH7t>QRZ>m5m2m4[lnvgCUaȚ_A Sb<,:s<"&J@J !%8˕ @#O@+=Q25{=0"(^3%չ31:`p>x 8 `6:v1?4:+(/9i šH6Bc 1yciֱS32>4;4 ,-03lQCC2h;r xW\LJJGҤ_Ck<H,H|$?v[|7=˵7tl3K&{J ZOϺ1G)\ǜЁL)LD*@,CMHtxdDIDIш*M״4 9hb0 RD6Tl1#LN1ҹÅR1ad1J ITƧ#$ίԱ\LC\O P3.47e3 C%O1G%;G@;P?D xlFE2De4[MGU.' ÿ4"e1<UL X-X  H*KLQTPYaQQuT ,Q5UJQMQYQyM RI{Ő8dң4wJ(U 7'|ª0ΊJ1pVn B: FcyT}6we%6SEL.I=lRI+* H]]da ^hR}~av]aAʛD^ C*ƴrU=?hs4[= *V;;;ڸ+Ҹ_Bb=EB:c%T {dIs@؍@`r VFf HF `|@*p`dNF"O6U4tU4ss X^'q(j[AzJ`4U~.b@b ^mԶjc1yf/ 1_Cͤ(Csbšf! {*&P e#_\x_x~gcncsZMKDIԃF~d;=` C`h~ᔼ 9`]$0_ mi%^JRA#fZKZ5qf~S!!R1K<5E.桗iJjf}S64&56$TgMigg{6k~g|}VH dE@ APNh.B놖eRdF1]}sfr6#Φl_6mC~:Cna9抑+pet; E*pjWvk03~Jzs@fpBCGt;plGσGotH;pLW&֎9w]UZXE}91 $uu%`M.^%m@ Kfb)W;-D[Pi;n1Q%jv5_"f^E&6"ZGU|6h:Rl:s ?xOt=?tAWp)f+518powmB#wb$n|f_ wh ,);gʶ_ ,'sw/C~2[  :jwH-̄ils&hE\ #FyŦ G*w%]ItGBRtuW3Y !#Al4,~޵WM>_gEgng/FUf.)wځShWi{<ؿ L @`LBanfoP 抻W,)$϶ +:Jq`c(qb%iX @ p#!*q`:d4 Ҫ127IkZ[K{ +<\[lkL@Vdu@!(( .ـpB Y\mɒB/3*w*,74C 7,8.w_t=Wj.uOwiWN? l. !*b֢$ajDSZQXDvi )$E />6 L% ґyZ9X5YfughJd Mli'sNa$/qA2xoYg௡Lź"Ρs!UZ:f9QҨB\-#l|)JTE#\ x4&0nnK_xÙ'Y@C,C;:Hke%!i92Ms")uu'Qœv\D$_:Ea@€6bHfrbt%c`% -À0{':bC Ct!!ADL@-jO 5tA ~ 4C B`aqq*scfWBV7#TFʣC.W iD=cRdobC.aI"FxC*BLnr%<xÛgF(yXD\gQ9Qzy$Rr,u`$c IIΌe ܠҾ/~%'M*e8(API h8@ZRj-еcdyUALZ̪qLLi"V](̴^Ӈl(nN2%(!bVHg.%ty) @c~ƟD776,1@X@_SEamo6˓n wn):&CgNy4+XbBRepD`L5l*W*V`o3yLcTӚg#|UE|\s1s;St]ՐK/ oH  b~Fqmeol10˒Enx9Y{ ״L]~I#?+t4$jEvT9x Ê]׬_} {LY]Y UWqޯlV+4C(1UlRgE+Qʅ-s'".͍ObCdfZ```)t1K>OD^FO(\Gm`].i4pef䲗0FUa|c5_Tnno0aU!8Y5#{~Y%E=di DiN)/vwhoG- `iԧx9 <eYI'. lA ʠ  cVEGA vAsP ٔIK y2ElP 0$Yܩ,!V$`ՀD v>%SF!8jɉB!n.湂Ƀ,j}ȥGͧ=3}m`>+y멞jn*FJ'O@~ ]Jj*=iԡy Ɣ"Z#jɩnu#0Q:H;ZQ%i3v-BJ`ѧpɪC/yiq֠cF7Ƭ8fwr02x=dqt :(brl1obz($=Aȕs왵cSum`0\Җf ~e;׋<Łd}I]h P )kxn3֢_?n"Ϋ=18nʼn=٥{ɷ7!_Ȏvu*;Evf%Ul3 |Pd'uYRTy%lZnҬ]G͒|25W|zyOϦ_ͭ߸8!&DEnI`wZ)왏e>V~{PS˃A. ގl/rSoa <,f/I_aB0ts{RwkPK[ O/_s؝P90q>!ZN-d~oDXlV] &m{P(*02"#SRZN?RrZs``M:u4 '>]=J@$)wI޽B[%5\.ni˶7Y *[$P-E^%CYbWmL3"OD_0ln[ctڽ ^ib:REZ"舣( i$J%Tbh 1&piFYlaQi[!REPkz b *jF!ƪ#tH1nXB`4B̀:*LGXU{eGe$ӎK:+R3C{owੲʪxZHLC9" $(( ;4pDxpkVmQ@,ah d׈BF ͒T-Jx+X`Æx$3IR340KOF0e^ ԉ7!CyK\6IqsEPp%t BK|*&=&j!ZM/Π0:S&"sxh%V @%ȃQp=HW\zD6mpg?\q ZUV)˭Ցn葬ͅO]#`ߥ+^k7dBۅbED.#І $>֛c؟ݯ!R-{7 0=Zvٔ?  e穅yQO%ѡmHӭ4|UMjZֿIjK$ֶ|kd |C!+ȁH+do%@ s`ظI+E qC0[%2n+"*V cKx]P3&Hة:'(%|a{BS*%sbizP'0I"ᛗ ە /hܰ8I,6acs$i3q@zS80(xR ġK1ƂAl@msE@[ 41Le.S`3MiNմ5MmnTٹT|He]^N) Vi:&E)EwUZlz)j:Cl*3v;O9> lg'>~{Cd|#Sxn2;/ka3}y!(ЇF %zf'hߌ}&ƿ"*@٨F v! -mT27:.zfWVe5YɐZB\*Tut#e_/ʎi`KS/̔/-Ѯ Sao &< S} I3-u#3IF06JTCE"5e[jvSu4T R3espR\Un Y 񎗼5yћ^u{_Η}_WA_6ntuGi@`iAOΈ&66hhm1A `.تqTQJj"J|bjTSc#Cխе bfR𑑜d%/MvG\?z򕱜e-oyc!dj"a! ٰ>;߯R-r gUJ3QLsoX.m"U!AT!iIOҕ1iMoӝAjQԥ!8y`lխvakYϚֵqk]׽}0VE;T2Y(1\50{sx1:bC+&nzk'RX%;لKѦo}?CR,6p/ w8QѬl%sI% ?4ϴSk*Sb׺=<\{3ib!* :z~MCUh`JW7ёt/MH;./KSzձ~ug[zuc7{~vkw{۩(\jME=ӄok\t!yxN1yoAzя~&c"w ;(gӆ_駧#_|/wjʓ}o~7џ~}p 0p0!p%)-0*  0) && (argPtr[0][0] == '-')) { if (strcmp(argPtr[0], "-indices") == 0) { argPtr++; argc--; indices = 1; } else if (strcmp(argPtr[0], "-nocase") == 0) { argPtr++; argc--; noCase = 1; } else { break; } } if (argc < 2) { goto wrongNumArgs; } regexpPtr = TclCompileRegexp(interp, argPtr[0]); if (regexpPtr == NULL) { return TCL_ERROR; } /* * Convert the string to lower case, if desired, and perform * the match. */ if (noCase) { register char *dst, *src; string = (char *) ckalloc((unsigned) (strlen(argPtr[1]) + 1)); for (src = argPtr[1], dst = string; *src != 0; src++, dst++) { if (isupper(*src)) { *dst = tolower(*src); } else { *dst = *src; } } *dst = 0; } else { string = argPtr[1]; } tclRegexpError = NULL; match = regexec(regexpPtr, string); if (string != argPtr[1]) { ckfree(string); } if (tclRegexpError != NULL) { Tcl_AppendResult(interp, "error while matching pattern: ", tclRegexpError, (char *) NULL); return TCL_ERROR; } if (!match) { interp->result = "0"; return TCL_OK; } /* * If additional variable names have been specified, return * index information in those variables. */ argc -= 2; if (argc > NSUBEXP) { interp->result = "too many substring variables"; return TCL_ERROR; } for (i = 0; i < argc; i++) { char *result, info[50]; if (regexpPtr->startp[i] == NULL) { if (indices) { result = Tcl_SetVar(interp, argPtr[i+2], "-1 -1", 0); } else { result = Tcl_SetVar(interp, argPtr[i+2], "", 0); } } else { if (indices) { sprintf(info, "%d %d", regexpPtr->startp[i] - string, regexpPtr->endp[i] - string - 1); result = Tcl_SetVar(interp, argPtr[i+2], info, 0); } else { char savedChar, *first, *last; first = argPtr[1] + (regexpPtr->startp[i] - string); last = argPtr[1] + (regexpPtr->endp[i] - string); savedChar = *last; *last = 0; result = Tcl_SetVar(interp, argPtr[i+2], first, 0); *last = savedChar; } } if (result == NULL) { Tcl_AppendResult(interp, "couldn't set variable \"", argPtr[i+2], "\"", (char *) NULL); return TCL_ERROR; } } interp->result = "1"; return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_RegsubCmd -- * * This procedure is invoked to process the "regsub" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_RegsubCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int noCase = 0, all = 0; regexp *regexpPtr; char *string, *p, *firstChar, *newValue, **argPtr; int match, result, flags; register char *src, c; if (argc < 5) { wrongNumArgs: Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ?-nocase? ?-all? exp string subSpec varName\"", (char *) NULL); return TCL_ERROR; } argPtr = argv+1; argc--; while (argPtr[0][0] == '-') { if (strcmp(argPtr[0], "-nocase") == 0) { argPtr++; argc--; noCase = 1; } else if (strcmp(argPtr[0], "-all") == 0) { argPtr++; argc--; all = 1; } else { break; } } if (argc != 4) { goto wrongNumArgs; } regexpPtr = TclCompileRegexp(interp, argPtr[0]); if (regexpPtr == NULL) { return TCL_ERROR; } /* * Convert the string to lower case, if desired. */ if (noCase) { register char *dst; string = (char *) ckalloc((unsigned) (strlen(argPtr[1]) + 1)); for (src = argPtr[1], dst = string; *src != 0; src++, dst++) { if (isupper(*src)) { *dst = tolower(*src); } else { *dst = *src; } } *dst = 0; } else { string = argPtr[1]; } /* * The following loop is to handle multiple matches within the * same source string; each iteration handles one match and its * corresponding substitution. If "-all" hasn't been specified * then the loop body only gets executed once. */ flags = 0; for (p = string; *p != 0; ) { tclRegexpError = NULL; match = regexec(regexpPtr, p); if (tclRegexpError != NULL) { Tcl_AppendResult(interp, "error while matching pattern: ", tclRegexpError, (char *) NULL); result = TCL_ERROR; goto done; } if (!match) { break; } /* * Copy the portion of the source string before the match to the * result variable. */ src = argPtr[1] + (regexpPtr->startp[0] - string); c = *src; *src = 0; newValue = Tcl_SetVar(interp, argPtr[3], argPtr[1] + (p - string), flags); *src = c; flags = TCL_APPEND_VALUE; if (newValue == NULL) { cantSet: Tcl_AppendResult(interp, "couldn't set variable \"", argPtr[3], "\"", (char *) NULL); result = TCL_ERROR; goto done; } /* * Append the subSpec argument to the variable, making appropriate * substitutions. This code is a bit hairy because of the backslash * conventions and because the code saves up ranges of characters in * subSpec to reduce the number of calls to Tcl_SetVar. */ for (src = firstChar = argPtr[2], c = *src; c != 0; src++, c = *src) { int index; if (c == '&') { index = 0; } else if (c == '\\') { c = src[1]; if ((c >= '0') && (c <= '9')) { index = c - '0'; } else if ((c == '\\') || (c == '&')) { *src = c; src[1] = 0; newValue = Tcl_SetVar(interp, argPtr[3], firstChar, TCL_APPEND_VALUE); *src = '\\'; src[1] = c; if (newValue == NULL) { goto cantSet; } firstChar = src+2; src++; continue; } else { continue; } } else { continue; } if (firstChar != src) { c = *src; *src = 0; newValue = Tcl_SetVar(interp, argPtr[3], firstChar, TCL_APPEND_VALUE); *src = c; if (newValue == NULL) { goto cantSet; } } if ((index < NSUBEXP) && (regexpPtr->startp[index] != NULL) && (regexpPtr->endp[index] != NULL)) { char *first, *last, saved; first = argPtr[1] + (regexpPtr->startp[index] - string); last = argPtr[1] + (regexpPtr->endp[index] - string); saved = *last; *last = 0; newValue = Tcl_SetVar(interp, argPtr[3], first, TCL_APPEND_VALUE); *last = saved; if (newValue == NULL) { goto cantSet; } } if (*src == '\\') { src++; } firstChar = src+1; } if (firstChar != src) { if (Tcl_SetVar(interp, argPtr[3], firstChar, TCL_APPEND_VALUE) == NULL) { goto cantSet; } } p = regexpPtr->endp[0]; if (!all) { break; } } /* * If there were no matches at all, then return a "0" result. */ if (p == string) { interp->result = "0"; result = TCL_OK; goto done; } /* * Copy the portion of the source string after the last match to the * result variable. */ if (*p != 0) { if (Tcl_SetVar(interp, argPtr[3], p, TCL_APPEND_VALUE) == NULL) { goto cantSet; } } interp->result = "1"; result = TCL_OK; done: if (string != argPtr[1]) { ckfree(string); } return result; } /* *---------------------------------------------------------------------- * * Tcl_RenameCmd -- * * This procedure is invoked to process the "rename" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_RenameCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { register Command *cmdPtr; Interp *iPtr = (Interp *) interp; Tcl_HashEntry *hPtr; int new; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " oldName newName\"", (char *) NULL); return TCL_ERROR; } if (argv[2][0] == '\0') { if (Tcl_DeleteCommand(interp, argv[1]) != 0) { Tcl_AppendResult(interp, "can't delete \"", argv[1], "\": command doesn't exist", (char *) NULL); return TCL_ERROR; } return TCL_OK; } hPtr = Tcl_FindHashEntry(&iPtr->commandTable, argv[2]); if (hPtr != NULL) { Tcl_AppendResult(interp, "can't rename to \"", argv[2], "\": command already exists", (char *) NULL); return TCL_ERROR; } hPtr = Tcl_FindHashEntry(&iPtr->commandTable, argv[1]); if (hPtr == NULL) { Tcl_AppendResult(interp, "can't rename \"", argv[1], "\": command doesn't exist", (char *) NULL); return TCL_ERROR; } cmdPtr = (Command *) Tcl_GetHashValue(hPtr); Tcl_DeleteHashEntry(hPtr); hPtr = Tcl_CreateHashEntry(&iPtr->commandTable, argv[2], &new); Tcl_SetHashValue(hPtr, cmdPtr); return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_ReturnCmd -- * * This procedure is invoked to process the "return" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_ReturnCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { if (argc > 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ?value?\"", (char *) NULL); return TCL_ERROR; } if (argc == 2) { Tcl_SetResult(interp, argv[1], TCL_VOLATILE); } return TCL_RETURN; } /* *---------------------------------------------------------------------- * * Tcl_ScanCmd -- * * This procedure is invoked to process the "scan" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_ScanCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int arg1Length; /* Number of bytes in argument to be * scanned. This gives an upper limit * on string field sizes. */ # define MAX_FIELDS 20 typedef struct { char fmt; /* Format for field. */ int size; /* How many bytes to allow for * field. */ char *location; /* Where field will be stored. */ } Field; Field fields[MAX_FIELDS]; /* Info about all the fields in the * format string. */ register Field *curField; int numFields = 0; /* Number of fields actually * specified. */ int suppress; /* Current field is assignment- * suppressed. */ int totalSize = 0; /* Number of bytes needed to store * all results combined. */ char *results; /* Where scanned output goes. */ int numScanned; /* sscanf's result. */ register char *fmt; int i, widthSpecified; if (argc < 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " string format ?varName varName ...?\"", (char *) NULL); return TCL_ERROR; } /* * This procedure operates in four stages: * 1. Scan the format string, collecting information about each field. * 2. Allocate an array to hold all of the scanned fields. * 3. Call sscanf to do all the dirty work, and have it store the * parsed fields in the array. * 4. Pick off the fields from the array and assign them to variables. */ arg1Length = (strlen(argv[1]) + 4) & ~03; for (fmt = argv[2]; *fmt != 0; fmt++) { if (*fmt != '%') { continue; } fmt++; if (*fmt == '*') { suppress = 1; fmt++; } else { suppress = 0; } widthSpecified = 0; while (isdigit(*fmt)) { widthSpecified = 1; fmt++; } if (suppress) { continue; } if (numFields == MAX_FIELDS) { interp->result = "too many fields to scan"; return TCL_ERROR; } curField = &fields[numFields]; numFields++; switch (*fmt) { case 'D': case 'O': case 'X': case 'd': case 'o': case 'x': curField->fmt = 'd'; curField->size = sizeof(int); break; case 's': curField->fmt = 's'; curField->size = arg1Length; break; case 'c': if (widthSpecified) { interp->result = "field width may not be specified in %c conversion"; return TCL_ERROR; } curField->fmt = 'c'; curField->size = sizeof(int); break; case 'E': case 'F': curField->fmt = 'F'; curField->size = sizeof(double); break; case 'e': case 'f': curField->fmt = 'f'; curField->size = sizeof(float); break; case '[': curField->fmt = 's'; curField->size = arg1Length; do { fmt++; } while (*fmt != ']'); break; default: sprintf(interp->result, "bad scan conversion character \"%c\"", *fmt); return TCL_ERROR; } totalSize += curField->size; } if (numFields != (argc-3)) { interp->result = "different numbers of variable names and field specifiers"; return TCL_ERROR; } /* * Step 2: */ results = (char *) ckalloc((unsigned) totalSize); for (i = 0, totalSize = 0, curField = fields; i < numFields; i++, curField++) { curField->location = results + totalSize; totalSize += curField->size; } /* * Step 3: */ numScanned = sscanf(argv[1], argv[2], fields[0].location, fields[1].location, fields[2].location, fields[3].location, fields[4].location, fields[5].location, fields[6].location, fields[7].location, fields[8].location, fields[9].location, fields[10].location, fields[11].location, fields[12].location, fields[13].location, fields[14].location, fields[15].location, fields[16].location, fields[17].location, fields[18].location, fields[19].location); /* * Step 4: */ if (numScanned < numFields) { numFields = numScanned; } for (i = 0, curField = fields; i < numFields; i++, curField++) { switch (curField->fmt) { char string[120]; case 'd': sprintf(string, "%d", *((int *) curField->location)); if (Tcl_SetVar(interp, argv[i+3], string, 0) == NULL) { storeError: Tcl_AppendResult(interp, "couldn't set variable \"", argv[i+3], "\"", (char *) NULL); ckfree((char *) results); return TCL_ERROR; } break; case 'c': sprintf(string, "%d", *((char *) curField->location) & 0xff); if (Tcl_SetVar(interp, argv[i+3], string, 0) == NULL) { goto storeError; } break; case 's': if (Tcl_SetVar(interp, argv[i+3], curField->location, 0) == NULL) { goto storeError; } break; case 'F': sprintf(string, "%g", *((double *) curField->location)); if (Tcl_SetVar(interp, argv[i+3], string, 0) == NULL) { goto storeError; } break; case 'f': sprintf(string, "%g", *((float *) curField->location)); if (Tcl_SetVar(interp, argv[i+3], string, 0) == NULL) { goto storeError; } break; } } ckfree(results); sprintf(interp->result, "%d", numScanned); return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_SplitCmd -- * * This procedure is invoked to process the "split" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_SplitCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { char *splitChars; register char *p, *p2; char *elementStart; if (argc == 2) { splitChars = " \n\t\r"; } else if (argc == 3) { splitChars = argv[2]; } else { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " string ?splitChars?\"", (char *) NULL); return TCL_ERROR; } /* * Handle the special case of splitting on every character. */ if (*splitChars == 0) { char string[2]; string[1] = 0; for (p = argv[1]; *p != 0; p++) { string[0] = *p; Tcl_AppendElement(interp, string, 0); } return TCL_OK; } /* * Normal case: split on any of a given set of characters. * Discard instances of the split characters. */ for (p = elementStart = argv[1]; *p != 0; p++) { char c = *p; for (p2 = splitChars; *p2 != 0; p2++) { if (*p2 == c) { *p = 0; Tcl_AppendElement(interp, elementStart, 0); *p = c; elementStart = p+1; break; } } } if (p != argv[1]) { Tcl_AppendElement(interp, elementStart, 0); } return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_StringCmd -- * * This procedure is invoked to process the "string" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_StringCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int length; register char *p, c; int match; int first; int left = 0, right = 0; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " option arg ?arg ...?\"", (char *) NULL); return TCL_ERROR; } c = argv[1][0]; length = strlen(argv[1]); if ((c == 'c') && (strncmp(argv[1], "compare", length) == 0)) { if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " compare string1 string2\"", (char *) NULL); return TCL_ERROR; } match = strcmp(argv[2], argv[3]); if (match > 0) { interp->result = "1"; } else if (match < 0) { interp->result = "-1"; } else { interp->result = "0"; } return TCL_OK; } else if ((c == 'f') && (strncmp(argv[1], "first", length) == 0)) { if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " first string1 string2\"", (char *) NULL); return TCL_ERROR; } first = 1; firstLast: match = -1; c = *argv[2]; length = strlen(argv[2]); for (p = argv[3]; *p != 0; p++) { if (*p != c) { continue; } if (strncmp(argv[2], p, length) == 0) { match = p-argv[3]; if (first) { break; } } } sprintf(interp->result, "%d", match); return TCL_OK; } else if ((c == 'i') && (strncmp(argv[1], "index", length) == 0)) { int index; if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " index string charIndex\"", (char *) NULL); return TCL_ERROR; } if (Tcl_GetInt(interp, argv[3], &index) != TCL_OK) { return TCL_ERROR; } if ((index >= 0) && (index < strlen(argv[2]))) { interp->result[0] = argv[2][index]; interp->result[1] = 0; } return TCL_OK; } else if ((c == 'l') && (strncmp(argv[1], "last", length) == 0) && (length >= 2)) { if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " last string1 string2\"", (char *) NULL); return TCL_ERROR; } first = 0; goto firstLast; } else if ((c == 'l') && (strncmp(argv[1], "length", length) == 0) && (length >= 2)) { if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " length string\"", (char *) NULL); return TCL_ERROR; } sprintf(interp->result, "%d", strlen(argv[2])); return TCL_OK; } else if ((c == 'm') && (strncmp(argv[1], "match", length) == 0)) { if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " match pattern string\"", (char *) NULL); return TCL_ERROR; } if (Tcl_StringMatch(argv[3], argv[2]) != 0) { interp->result = "1"; } else { interp->result = "0"; } return TCL_OK; } else if ((c == 'r') && (strncmp(argv[1], "range", length) == 0)) { int first, last, stringLength; if (argc != 5) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " range string first last\"", (char *) NULL); return TCL_ERROR; } stringLength = strlen(argv[2]); if (Tcl_GetInt(interp, argv[3], &first) != TCL_OK) { return TCL_ERROR; } if ((*argv[4] == 'e') && (strncmp(argv[4], "end", strlen(argv[4])) == 0)) { last = stringLength-1; } else { if (Tcl_GetInt(interp, argv[4], &last) != TCL_OK) { Tcl_ResetResult(interp); Tcl_AppendResult(interp, "expected integer or \"end\" but got \"", argv[4], "\"", (char *) NULL); return TCL_ERROR; } } if (first < 0) { first = 0; } if (last >= stringLength) { last = stringLength-1; } if (last >= first) { char saved, *p; p = argv[2] + last + 1; saved = *p; *p = 0; Tcl_SetResult(interp, argv[2] + first, TCL_VOLATILE); *p = saved; } return TCL_OK; } else if ((c == 't') && (strncmp(argv[1], "tolower", length) == 0) && (length >= 3)) { register char *p; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " tolower string\"", (char *) NULL); return TCL_ERROR; } Tcl_SetResult(interp, argv[2], TCL_VOLATILE); for (p = interp->result; *p != 0; p++) { if (isupper(*p)) { *p = tolower(*p); } } return TCL_OK; } else if ((c == 't') && (strncmp(argv[1], "toupper", length) == 0) && (length >= 3)) { register char *p; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " toupper string\"", (char *) NULL); return TCL_ERROR; } Tcl_SetResult(interp, argv[2], TCL_VOLATILE); for (p = interp->result; *p != 0; p++) { if (islower(*p)) { *p = toupper(*p); } } return TCL_OK; } else if ((c == 't') && (strncmp(argv[1], "trim", length) == 0) && (length == 4)) { char *trimChars; register char *p, *checkPtr; left = right = 1; trim: if (argc == 4) { trimChars = argv[3]; } else if (argc == 3) { trimChars = " \t\n\r"; } else { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ", argv[1], " string ?chars?\"", (char *) NULL); return TCL_ERROR; } p = argv[2]; if (left) { for (c = *p; c != 0; p++, c = *p) { for (checkPtr = trimChars; *checkPtr != c; checkPtr++) { if (*checkPtr == 0) { goto doneLeft; } } } } doneLeft: Tcl_SetResult(interp, p, TCL_VOLATILE); if (right) { char *donePtr; p = interp->result + strlen(interp->result) - 1; donePtr = &interp->result[-1]; for (c = *p; p != donePtr; p--, c = *p) { for (checkPtr = trimChars; *checkPtr != c; checkPtr++) { if (*checkPtr == 0) { goto doneRight; } } } doneRight: p[1] = 0; } return TCL_OK; } else if ((c == 't') && (strncmp(argv[1], "trimleft", length) == 0) && (length > 4)) { left = 1; argv[1] = "trimleft"; goto trim; } else if ((c == 't') && (strncmp(argv[1], "trimright", length) == 0) && (length > 4)) { right = 1; argv[1] = "trimright"; goto trim; } else { Tcl_AppendResult(interp, "bad option \"", argv[1], "\": should be compare, first, index, last, length, match, ", "range, tolower, toupper, trim, trimleft, or trimright", (char *) NULL); return TCL_ERROR; } } /* *---------------------------------------------------------------------- * * Tcl_TraceCmd -- * * This procedure is invoked to process the "trace" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_TraceCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { char c; int length; if (argc < 2) { Tcl_AppendResult(interp, "too few args: should be \"", argv[0], " option [arg arg ...]\"", (char *) NULL); return TCL_ERROR; } c = argv[1][1]; length = strlen(argv[1]); if ((c == 'a') && (strncmp(argv[1], "variable", length) == 0) && (length >= 2)) { char *p; int flags, length; TraceVarInfo *tvarPtr; if (argc != 5) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " variable name ops command\"", (char *) NULL); return TCL_ERROR; } flags = 0; for (p = argv[3] ; *p != 0; p++) { if (*p == 'r') { flags |= TCL_TRACE_READS; } else if (*p == 'w') { flags |= TCL_TRACE_WRITES; } else if (*p == 'u') { flags |= TCL_TRACE_UNSETS; } else { goto badOps; } } if (flags == 0) { goto badOps; } length = strlen(argv[4]); tvarPtr = (TraceVarInfo *) ckalloc((unsigned) (sizeof(TraceVarInfo) - sizeof(tvarPtr->command) + length + 1)); tvarPtr->flags = flags; tvarPtr->length = length; flags |= TCL_TRACE_UNSETS; strcpy(tvarPtr->command, argv[4]); if (Tcl_TraceVar(interp, argv[2], flags, TraceVarProc, (ClientData) tvarPtr) != TCL_OK) { ckfree((char *) tvarPtr); return TCL_ERROR; } } else if ((c == 'd') && (strncmp(argv[1], "vdelete", length) && (length >= 2)) == 0) { char *p; int flags, length; TraceVarInfo *tvarPtr; ClientData clientData; if (argc != 5) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " vdelete name ops command\"", (char *) NULL); return TCL_ERROR; } flags = 0; for (p = argv[3] ; *p != 0; p++) { if (*p == 'r') { flags |= TCL_TRACE_READS; } else if (*p == 'w') { flags |= TCL_TRACE_WRITES; } else if (*p == 'u') { flags |= TCL_TRACE_UNSETS; } else { goto badOps; } } if (flags == 0) { goto badOps; } /* * Search through all of our traces on this variable to * see if there's one with the given command. If so, then * delete the first one that matches. */ length = strlen(argv[4]); clientData = 0; while ((clientData = Tcl_VarTraceInfo(interp, argv[2], 0, TraceVarProc, clientData)) != 0) { tvarPtr = (TraceVarInfo *) clientData; if ((tvarPtr->length == length) && (tvarPtr->flags == flags) && (strncmp(argv[4], tvarPtr->command, length) == 0)) { Tcl_UntraceVar(interp, argv[2], flags | TCL_TRACE_UNSETS, TraceVarProc, clientData); ckfree((char *) tvarPtr); break; } } } else if ((c == 'i') && (strncmp(argv[1], "vinfo", length) == 0) && (length >= 2)) { ClientData clientData; char ops[4], *p; char *prefix = "{"; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " vinfo name\"", (char *) NULL); return TCL_ERROR; } clientData = 0; while ((clientData = Tcl_VarTraceInfo(interp, argv[2], 0, TraceVarProc, clientData)) != 0) { TraceVarInfo *tvarPtr = (TraceVarInfo *) clientData; p = ops; if (tvarPtr->flags & TCL_TRACE_READS) { *p = 'r'; p++; } if (tvarPtr->flags & TCL_TRACE_WRITES) { *p = 'w'; p++; } if (tvarPtr->flags & TCL_TRACE_UNSETS) { *p = 'u'; p++; } *p = '\0'; Tcl_AppendResult(interp, prefix, (char *) NULL); Tcl_AppendElement(interp, ops, 1); Tcl_AppendElement(interp, tvarPtr->command, 0); Tcl_AppendResult(interp, "}", (char *) NULL); prefix = " {"; } } else { Tcl_AppendResult(interp, "bad option \"", argv[1], "\": should be variable, vdelete, or vinfo", (char *) NULL); return TCL_ERROR; } return TCL_OK; badOps: Tcl_AppendResult(interp, "bad operations \"", argv[3], "\": should be one or more of rwu", (char *) NULL); return TCL_ERROR; } /* *---------------------------------------------------------------------- * * TraceVarProc -- * * This procedure is called to handle variable accesses that have * been traced using the "trace" command. * * Results: * Normally returns NULL. If the trace command returns an error, * then this procedure returns an error string. * * Side effects: * Depends on the command associated with the trace. * *---------------------------------------------------------------------- */ /* ARGSUSED */ static char * TraceVarProc(clientData, interp, name1, name2, flags) ClientData clientData; /* Information about the variable trace. */ Tcl_Interp *interp; /* Interpreter containing variable. */ char *name1; /* Name of variable or array. */ char *name2; /* Name of element within array; NULL means * scalar variable is being referenced. */ int flags; /* OR-ed bits giving operation and other * information. */ { TraceVarInfo *tvarPtr = (TraceVarInfo *) clientData; char *result; int code, cmdLength, flags1, flags2; Interp dummy; #define STATIC_SIZE 199 char staticSpace[STATIC_SIZE+1]; char *cmdPtr, *p; result = NULL; if ((tvarPtr->flags & flags) && !(flags & TCL_INTERP_DESTROYED)) { /* * Generate a command to execute by appending list elements * for the two variable names and the operation. The five * extra characters are for three space, the opcode character, * and the terminating null. */ if (name2 == NULL) { name2 = ""; } cmdLength = tvarPtr->length + Tcl_ScanElement(name1, &flags1) + Tcl_ScanElement(name2, &flags2) + 5; if (cmdLength < STATIC_SIZE) { cmdPtr = staticSpace; } else { cmdPtr = (char *) ckalloc((unsigned) cmdLength); } p = cmdPtr; strcpy(p, tvarPtr->command); p += tvarPtr->length; *p = ' '; p++; p += Tcl_ConvertElement(name1, p, flags1); *p = ' '; p++; p += Tcl_ConvertElement(name2, p, flags2); *p = ' '; if (flags & TCL_TRACE_READS) { p[1] = 'r'; } else if (flags & TCL_TRACE_WRITES) { p[1] = 'w'; } else if (flags & TCL_TRACE_UNSETS) { p[1] = 'u'; } p[2] = '\0'; /* * Execute the command. Be careful to save and restore the * result from the interpreter used for the command. */ dummy.freeProc = interp->freeProc; if (interp->freeProc == 0) { Tcl_SetResult((Tcl_Interp *) &dummy, interp->result, TCL_VOLATILE); } else { dummy.result = interp->result; } code = Tcl_Eval(interp, cmdPtr, 0, (char **) NULL); if (cmdPtr != staticSpace) { ckfree(cmdPtr); } if (code != TCL_OK) { result = "access disallowed by trace command"; Tcl_ResetResult(interp); /* Must clear error state. */ } Tcl_FreeResult(interp); interp->result = dummy.result; interp->freeProc = dummy.freeProc; } if (flags & TCL_TRACE_DESTROYED) { ckfree((char *) tvarPtr); } return result; } /* *---------------------------------------------------------------------- * * Tcl_WhileCmd -- * * This procedure is invoked to process the "while" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_WhileCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int result, value; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " test command\"", (char *) NULL); return TCL_ERROR; } while (1) { result = Tcl_ExprBoolean(interp, argv[1], &value); if (result != TCL_OK) { return result; } if (!value) { break; } result = Tcl_Eval(interp, argv[2], 0, (char **) NULL); if (result == TCL_CONTINUE) { result = TCL_OK; } else if (result != TCL_OK) { if (result == TCL_ERROR) { char msg[60]; sprintf(msg, "\n (\"while\" body line %d)", interp->errorLine); Tcl_AddErrorInfo(interp, msg); } break; } } if (result == TCL_BREAK) { result = TCL_OK; } if (result == TCL_OK) { Tcl_ResetResult(interp); } return result; } micropolis-activity/src/tcl/tclunxst.c0000664000076400007640000003571310724145723020445 0ustar simcitysimcity/* * tclUnixStr.c -- * * This file contains procedures that generate strings * corresponding to various UNIX-related codes, such * as errno and signals. * * Copyright 1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that this copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/RCS/tclUnixStr.c,v 1.12 92/04/30 15:51:15 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include "tclint.h" #include "tclunix.h" /* *---------------------------------------------------------------------- * * Tcl_ErrnoId -- * * Return a textual identifier for the current errno value. * * Results: * This procedure returns a machine-readable textual identifier * that corresponds to the current errno value (e.g. "EPERM"). * The identifier is the same as the #define name in errno.h. * * Side effects: * None. * *---------------------------------------------------------------------- */ char * Tcl_ErrnoId() { switch (errno) { #ifdef E2BIG case E2BIG: return "E2BIG"; #endif #ifdef EACCES case EACCES: return "EACCES"; #endif #ifdef EADDRINUSE case EADDRINUSE: return "EADDRINUSE"; #endif #ifdef EADDRNOTAVAIL case EADDRNOTAVAIL: return "EADDRNOTAVAIL"; #endif #ifdef EADV case EADV: return "EADV"; #endif #ifdef EAFNOSUPPORT case EAFNOSUPPORT: return "EAFNOSUPPORT"; #endif #ifdef EAGAIN case EAGAIN: return "EAGAIN"; #endif #ifdef EALIGN case EALIGN: return "EALIGN"; #endif #ifdef EALREADY case EALREADY: return "EALREADY"; #endif #ifdef EBADE case EBADE: return "EBADE"; #endif #ifdef EBADF case EBADF: return "EBADF"; #endif #ifdef EBADFD case EBADFD: return "EBADFD"; #endif #ifdef EBADMSG case EBADMSG: return "EBADMSG"; #endif #ifdef EBADR case EBADR: return "EBADR"; #endif #ifdef EBADRPC case EBADRPC: return "EBADRPC"; #endif #ifdef EBADRQC case EBADRQC: return "EBADRQC"; #endif #ifdef EBADSLT case EBADSLT: return "EBADSLT"; #endif #ifdef EBFONT case EBFONT: return "EBFONT"; #endif #ifdef EBUSY case EBUSY: return "EBUSY"; #endif #ifdef ECHILD case ECHILD: return "ECHILD"; #endif #ifdef ECHRNG case ECHRNG: return "ECHRNG"; #endif #ifdef ECOMM case ECOMM: return "ECOMM"; #endif #ifdef ECONNABORTED case ECONNABORTED: return "ECONNABORTED"; #endif #ifdef ECONNREFUSED case ECONNREFUSED: return "ECONNREFUSED"; #endif #ifdef ECONNRESET case ECONNRESET: return "ECONNRESET"; #endif #if defined(EDEADLK) && (!defined(EWOULDBLOCK) || (EDEADLK != EWOULDBLOCK)) case EDEADLK: return "EDEADLK"; #endif #ifndef IS_LINUX #ifdef EDEADLOCK case EDEADLOCK: return "EDEADLOCK"; #endif #endif #ifdef EDESTADDRREQ case EDESTADDRREQ: return "EDESTADDRREQ"; #endif #ifdef EDIRTY case EDIRTY: return "EDIRTY"; #endif #ifdef EDOM case EDOM: return "EDOM"; #endif #ifdef EDOTDOT case EDOTDOT: return "EDOTDOT"; #endif #ifdef EDQUOT case EDQUOT: return "EDQUOT"; #endif #ifdef EDUPPKG case EDUPPKG: return "EDUPPKG"; #endif #ifdef EEXIST case EEXIST: return "EEXIST"; #endif #ifdef EFAULT case EFAULT: return "EFAULT"; #endif #ifdef EFBIG case EFBIG: return "EFBIG"; #endif #ifdef EHOSTDOWN case EHOSTDOWN: return "EHOSTDOWN"; #endif #ifdef EHOSTUNREACH case EHOSTUNREACH: return "EHOSTUNREACH"; #endif #ifdef EIDRM case EIDRM: return "EIDRM"; #endif #ifdef EINIT case EINIT: return "EINIT"; #endif #ifdef EINPROGRESS case EINPROGRESS: return "EINPROGRESS"; #endif #ifdef EINTR case EINTR: return "EINTR"; #endif #ifdef EINVAL case EINVAL: return "EINVAL"; #endif #ifdef EIO case EIO: return "EIO"; #endif #ifdef EISCONN case EISCONN: return "EISCONN"; #endif #ifdef EISDIR case EISDIR: return "EISDIR"; #endif #ifdef EISNAME case EISNAM: return "EISNAM"; #endif #ifdef ELBIN case ELBIN: return "ELBIN"; #endif #ifdef EL2HLT case EL2HLT: return "EL2HLT"; #endif #ifdef EL2NSYNC case EL2NSYNC: return "EL2NSYNC"; #endif #ifdef EL3HLT case EL3HLT: return "EL3HLT"; #endif #ifdef EL3RST case EL3RST: return "EL3RST"; #endif #ifdef ELIBACC case ELIBACC: return "ELIBACC"; #endif #ifdef ELIBBAD case ELIBBAD: return "ELIBBAD"; #endif #ifdef ELIBEXEC case ELIBEXEC: return "ELIBEXEC"; #endif #ifdef ELIBMAX case ELIBMAX: return "ELIBMAX"; #endif #ifdef ELIBSCN case ELIBSCN: return "ELIBSCN"; #endif #ifdef ELNRNG case ELNRNG: return "ELNRNG"; #endif #ifdef ELOOP case ELOOP: return "ELOOP"; #endif #ifdef EMFILE case EMFILE: return "EMFILE"; #endif #ifdef EMLINK case EMLINK: return "EMLINK"; #endif #ifdef EMSGSIZE case EMSGSIZE: return "EMSGSIZE"; #endif #ifdef EMULTIHOP case EMULTIHOP: return "EMULTIHOP"; #endif #ifdef ENAMETOOLONG case ENAMETOOLONG: return "ENAMETOOLONG"; #endif #ifdef ENAVAIL case ENAVAIL: return "ENAVAIL"; #endif #ifdef ENET case ENET: return "ENET"; #endif #ifdef ENETDOWN case ENETDOWN: return "ENETDOWN"; #endif #ifdef ENETRESET case ENETRESET: return "ENETRESET"; #endif #ifdef ENETUNREACH case ENETUNREACH: return "ENETUNREACH"; #endif #ifdef ENFILE case ENFILE: return "ENFILE"; #endif #ifdef ENOANO case ENOANO: return "ENOANO"; #endif #if defined(ENOBUFS) && (!defined(ENOSR) || (ENOBUFS != ENOSR)) case ENOBUFS: return "ENOBUFS"; #endif #ifdef ENOCSI case ENOCSI: return "ENOCSI"; #endif #ifdef ENODATA case ENODATA: return "ENODATA"; #endif #ifdef ENODEV case ENODEV: return "ENODEV"; #endif #ifdef ENOENT case ENOENT: return "ENOENT"; #endif #ifdef ENOEXEC case ENOEXEC: return "ENOEXEC"; #endif #ifdef ENOLCK case ENOLCK: return "ENOLCK"; #endif #ifdef ENOLINK case ENOLINK: return "ENOLINK"; #endif #ifdef ENOMEM case ENOMEM: return "ENOMEM"; #endif #ifdef ENOMSG case ENOMSG: return "ENOMSG"; #endif #ifdef ENONET case ENONET: return "ENONET"; #endif #ifdef ENOPKG case ENOPKG: return "ENOPKG"; #endif #ifdef ENOPROTOOPT case ENOPROTOOPT: return "ENOPROTOOPT"; #endif #ifdef ENOSPC case ENOSPC: return "ENOSPC"; #endif #ifdef ENOSR case ENOSR: return "ENOSR"; #endif #ifdef ENOSTR case ENOSTR: return "ENOSTR"; #endif #ifdef ENOSYM case ENOSYM: return "ENOSYM"; #endif #ifdef ENOSYS case ENOSYS: return "ENOSYS"; #endif #ifdef ENOTBLK case ENOTBLK: return "ENOTBLK"; #endif #ifdef ENOTCONN case ENOTCONN: return "ENOTCONN"; #endif #ifdef ENOTDIR case ENOTDIR: return "ENOTDIR"; #endif #if defined(ENOTEMPTY) && (!defined(EEXIST) || (ENOTEMPTY != EEXIST)) case ENOTEMPTY: return "ENOTEMPTY"; #endif #ifdef ENOTNAM case ENOTNAM: return "ENOTNAM"; #endif #ifdef ENOTSOCK case ENOTSOCK: return "ENOTSOCK"; #endif #ifdef ENOTTY case ENOTTY: return "ENOTTY"; #endif #ifdef ENOTUNIQ case ENOTUNIQ: return "ENOTUNIQ"; #endif #ifndef __GNUC__ #ifdef ENXIO case ENXIO: return "ENXIO"; #endif #endif #ifdef EOPNOTSUPP case EOPNOTSUPP: return "EOPNOTSUPP"; #endif #ifndef __GNUC__ #ifdef EPERM case EPERM: return "EPERM"; #endif #endif #ifdef EPFNOSUPPORT case EPFNOSUPPORT: return "EPFNOSUPPORT"; #endif #ifdef EPIPE case EPIPE: return "EPIPE"; #endif #ifdef EPROCLIM case EPROCLIM: return "EPROCLIM"; #endif #ifdef EPROCUNAVAIL case EPROCUNAVAIL: return "EPROCUNAVAIL"; #endif #ifdef EPROGMISMATCH case EPROGMISMATCH: return "EPROGMISMATCH"; #endif #ifdef EPROGUNAVAIL case EPROGUNAVAIL: return "EPROGUNAVAIL"; #endif #ifdef EPROTO case EPROTO: return "EPROTO"; #endif #ifdef EPROTONOSUPPORT case EPROTONOSUPPORT: return "EPROTONOSUPPORT"; #endif #ifdef EPROTOTYPE case EPROTOTYPE: return "EPROTOTYPE"; #endif #ifdef ERANGE case ERANGE: return "ERANGE"; #endif #if defined(EREFUSED) && (!defined(ECONNREFUSED) || (EREFUSED != ECONNREFUSED)) case EREFUSED: return "EREFUSED"; #endif #ifdef EREMCHG case EREMCHG: return "EREMCHG"; #endif #ifdef EREMDEV case EREMDEV: return "EREMDEV"; #endif #ifdef EREMOTE case EREMOTE: return "EREMOTE"; #endif #ifdef EREMOTEIO case EREMOTEIO: return "EREMOTEIO"; #endif #ifdef EREMOTERELEASE case EREMOTERELEASE: return "EREMOTERELEASE"; #endif #ifdef EROFS case EROFS: return "EROFS"; #endif #ifdef ERPCMISMATCH case ERPCMISMATCH: return "ERPCMISMATCH"; #endif #ifdef ERREMOTE case ERREMOTE: return "ERREMOTE"; #endif #ifdef ESHUTDOWN case ESHUTDOWN: return "ESHUTDOWN"; #endif #ifdef ESOCKTNOSUPPORT case ESOCKTNOSUPPORT: return "ESOCKTNOSUPPORT"; #endif #ifdef ESPIPE case ESPIPE: return "ESPIPE"; #endif #ifdef ESRCH case ESRCH: return "ESRCH"; #endif #ifdef ESRMNT case ESRMNT: return "ESRMNT"; #endif #ifdef ESTALE case ESTALE: return "ESTALE"; #endif #ifdef ESUCCESS case ESUCCESS: return "ESUCCESS"; #endif #ifdef ETIME case ETIME: return "ETIME"; #endif #ifdef ETIMEDOUT case ETIMEDOUT: return "ETIMEDOUT"; #endif #ifdef ETOOMANYREFS case ETOOMANYREFS: return "ETOOMANYREFS"; #endif #ifdef ETXTBSY case ETXTBSY: return "ETXTBSY"; #endif #ifdef EUCLEAN case EUCLEAN: return "EUCLEAN"; #endif #ifdef EUNATCH case EUNATCH: return "EUNATCH"; #endif #ifdef EUSERS case EUSERS: return "EUSERS"; #endif #ifdef EVERSION case EVERSION: return "EVERSION"; #endif #if defined(EWOULDBLOCK) && (!defined(EAGAIN) || (EWOULDBLOCK != EAGAIN)) case EWOULDBLOCK: return "EWOULDBLOCK"; #endif #ifdef EXDEV case EXDEV: return "EXDEV"; #endif #ifdef EXFULL case EXFULL: return "EXFULL"; #endif } return "unknown error"; } /* *---------------------------------------------------------------------- * * Tcl_SignalId -- * * Return a textual identifier for a signal number. * * Results: * This procedure returns a machine-readable textual identifier * that corresponds to sig. The identifier is the same as the * #define name in signal.h. * * Side effects: * None. * *---------------------------------------------------------------------- */ char * Tcl_SignalId(sig) int sig; /* Number of signal. */ { switch (sig) { #ifdef SIGABRT case SIGABRT: return "SIGABRT"; #endif #ifdef SIGALRM case SIGALRM: return "SIGALRM"; #endif #ifdef SIGBUS case SIGBUS: return "SIGBUS"; #endif #ifdef SIGCHLD case SIGCHLD: return "SIGCHLD"; #endif #if defined(SIGCLD) && (!defined(SIGCHLD) || (SIGCLD != SIGCHLD)) case SIGCLD: return "SIGCLD"; #endif #ifdef SIGCONT case SIGCONT: return "SIGCONT"; #endif #if defined(SIGEMT) && (!defined(SIGXCPU) || (SIGEMT != SIGXCPU)) case SIGEMT: return "SIGEMT"; #endif #ifdef SIGFPE case SIGFPE: return "SIGFPE"; #endif #ifdef SIGHUP case SIGHUP: return "SIGHUP"; #endif #ifdef SIGILL case SIGILL: return "SIGILL"; #endif #ifdef SIGINT case SIGINT: return "SIGINT"; #endif #ifdef SIGIO case SIGIO: return "SIGIO"; #endif #if defined(SIGIOT) && (!defined(SIGABRT) || (SIGIOT != SIGABRT)) case SIGIOT: return "SIGIOT"; #endif #ifdef SIGKILL case SIGKILL: return "SIGKILL"; #endif #if defined(SIGLOST) && (!defined(SIGIOT) || (SIGLOST != SIGIOT)) case SIGLOST: return "SIGLOST"; #endif #ifdef SIGPIPE case SIGPIPE: return "SIGPIPE"; #endif #if defined(SIGPOLL) && (!defined(SIGIO) || (SIGPOLL != SIGIO)) case SIGPOLL: return "SIGPOLL"; #endif #ifdef SIGPROF case SIGPROF: return "SIGPROF"; #endif #if defined(SIGPWR) && (!defined(SIGXFSZ) || (SIGPWR != SIGXFSZ)) case SIGPWR: return "SIGPWR"; #endif #ifdef SIGQUIT case SIGQUIT: return "SIGQUIT"; #endif #ifdef SIGSEGV case SIGSEGV: return "SIGSEGV"; #endif #ifdef SIGSTOP case SIGSTOP: return "SIGSTOP"; #endif #ifdef SIGSYS case SIGSYS: return "SIGSYS"; #endif #ifdef SIGTERM case SIGTERM: return "SIGTERM"; #endif #ifdef SIGTRAP case SIGTRAP: return "SIGTRAP"; #endif #ifdef SIGTSTP case SIGTSTP: return "SIGTSTP"; #endif #ifdef SIGTTIN case SIGTTIN: return "SIGTTIN"; #endif #ifdef SIGTTOU case SIGTTOU: return "SIGTTOU"; #endif #ifdef SIGURG case SIGURG: return "SIGURG"; #endif #ifdef SIGUSR1 case SIGUSR1: return "SIGUSR1"; #endif #ifdef SIGUSR2 case SIGUSR2: return "SIGUSR2"; #endif #ifdef SIGVTALRM case SIGVTALRM: return "SIGVTALRM"; #endif #ifdef SIGWINCH case SIGWINCH: return "SIGWINCH"; #endif #ifdef SIGXCPU case SIGXCPU: return "SIGXCPU"; #endif #ifdef SIGXFSZ case SIGXFSZ: return "SIGXFSZ"; #endif } return "unknown signal"; } /* *---------------------------------------------------------------------- * * Tcl_SignalMsg -- * * Return a human-readable message describing a signal. * * Results: * This procedure returns a string describing sig that should * make sense to a human. It may not be easy for a machine * to parse. * * Side effects: * None. * *---------------------------------------------------------------------- */ char * Tcl_SignalMsg(sig) int sig; /* Number of signal. */ { switch (sig) { #ifdef SIGABRT case SIGABRT: return "SIGABRT"; #endif #ifdef SIGALRM case SIGALRM: return "alarm clock"; #endif #ifdef SIGBUS case SIGBUS: return "bus error"; #endif #ifdef SIGCHLD case SIGCHLD: return "child status changed"; #endif #if defined(SIGCLD) && (!defined(SIGCHLD) || (SIGCLD != SIGCHLD)) case SIGCLD: return "child status changed"; #endif #ifdef SIGCONT case SIGCONT: return "continue after stop"; #endif #if defined(SIGEMT) && (!defined(SIGXCPU) || (SIGEMT != SIGXCPU)) case SIGEMT: return "EMT instruction"; #endif #ifdef SIGFPE case SIGFPE: return "floating-point exception"; #endif #ifdef SIGHUP case SIGHUP: return "hangup"; #endif #ifdef SIGILL case SIGILL: return "illegal instruction"; #endif #ifdef SIGINT case SIGINT: return "interrupt"; #endif #ifdef SIGIO case SIGIO: return "input/output possible on file"; #endif #if defined(SIGIOT) && (!defined(SIGABRT) || (SIGABRT != SIGIOT)) case SIGIOT: return "IOT instruction"; #endif #ifdef SIGKILL case SIGKILL: return "kill signal"; #endif #if defined(SIGLOST) && (!defined(SIGIOT) || (SIGLOST != SIGIOT)) case SIGLOST: return "resource lost"; #endif #ifdef SIGPIPE case SIGPIPE: return "write on pipe with no readers"; #endif #if defined(SIGPOLL) && (!defined(SIGIO) || (SIGPOLL != SIGIO)) case SIGPOLL: return "input/output possible on file"; #endif #ifdef SIGPROF case SIGPROF: return "profiling alarm"; #endif #if defined(SIGPWR) && (!defined(SIGXFSZ) || (SIGPWR != SIGXFSZ)) case SIGPWR: return "power-fail restart"; #endif #ifdef SIGQUIT case SIGQUIT: return "quit signal"; #endif #ifdef SIGSEGV case SIGSEGV: return "segmentation violation"; #endif #ifdef SIGSTOP case SIGSTOP: return "stop"; #endif #ifdef SIGSYS case SIGSYS: return "bad argument to system call"; #endif #ifdef SIGTERM case SIGTERM: return "software termination signal"; #endif #ifdef SIGTRAP case SIGTRAP: return "trace trap"; #endif #ifdef SIGTSTP case SIGTSTP: return "stop signal from tty"; #endif #ifdef SIGTTIN case SIGTTIN: return "background tty read"; #endif #ifdef SIGTTOU case SIGTTOU: return "background tty write"; #endif #ifdef SIGURG case SIGURG: return "urgent I/O condition"; #endif #ifdef SIGUSR1 case SIGUSR1: return "user-defined signal 1"; #endif #ifdef SIGUSR2 case SIGUSR2: return "user-defined signal 2"; #endif #ifdef SIGVTALRM case SIGVTALRM: return "virtual time alarm"; #endif #ifdef SIGWINCH case SIGWINCH: return "window changed"; #endif #ifdef SIGXCPU case SIGXCPU: return "exceeded CPU time limit"; #endif #ifdef SIGXFSZ case SIGXFSZ: return "exceeded file size limit"; #endif } return "unknown signal"; } micropolis-activity/src/tcl/tclunxaz.c0000664000076400007640000012441210724145723020424 0ustar simcitysimcity/* * tclUnixAZ.c -- * * This file contains the top-level command procedures for * commands in the Tcl core that require UNIX facilities * such as files and process execution. Much of the code * in this file is based on earlier versions contributed * by Karl Lehenbauer, Mark Diekhans and Peter da Silva. * * Copyright 1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that this copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/RCS/tclUnixAZ.c,v 1.36 92/04/16 13:32:02 ouster Exp $ sprite (Berkeley)"; #endif /* not lint */ #include "tclint.h" #include "tclunix.h" /* * The variable below caches the name of the current working directory * in order to avoid repeated calls to getwd. The string is malloc-ed. * NULL means the cache needs to be refreshed. */ static char *currentDir = NULL; /* * Prototypes for local procedures defined in this file: */ static int CleanupChildren _ANSI_ARGS_((Tcl_Interp *interp, int numPids, int *pidPtr, int errorId)); static char * GetFileType _ANSI_ARGS_((int mode)); static int StoreStatData _ANSI_ARGS_((Tcl_Interp *interp, char *varName, struct stat *statPtr)); /* *---------------------------------------------------------------------- * * Tcl_CdCmd -- * * This procedure is invoked to process the "cd" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_CdCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { char *dirName; if (argc > 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " dirName\"", (char *) NULL); return TCL_ERROR; } if (argc == 2) { dirName = argv[1]; } else { dirName = "~"; } dirName = Tcl_TildeSubst(interp, dirName); if (dirName == NULL) { return TCL_ERROR; } if (currentDir != NULL) { ckfree(currentDir); currentDir = NULL; } if (chdir(dirName) != 0) { Tcl_AppendResult(interp, "couldn't change working directory to \"", dirName, "\": ", Tcl_UnixError(interp), (char *) NULL); return TCL_ERROR; } return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_CloseCmd -- * * This procedure is invoked to process the "close" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_CloseCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { OpenFile *filePtr; int result = TCL_OK; if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " fileId\"", (char *) NULL); return TCL_ERROR; } if (TclGetOpenFile(interp, argv[1], &filePtr) != TCL_OK) { return TCL_ERROR; } ((Interp *) interp)->filePtrArray[fileno(filePtr->f)] = NULL; /* * First close the file (in the case of a process pipeline, there may * be two files, one for the pipe at each end of the pipeline). */ if (filePtr->f2 != NULL) { if (fclose(filePtr->f2) == EOF) { Tcl_AppendResult(interp, "error closing \"", argv[1], "\": ", Tcl_UnixError(interp), "\n", (char *) NULL); result = TCL_ERROR; } } if (fclose(filePtr->f) == EOF) { Tcl_AppendResult(interp, "error closing \"", argv[1], "\": ", Tcl_UnixError(interp), "\n", (char *) NULL); result = TCL_ERROR; } /* * If the file was a connection to a pipeline, clean up everything * associated with the child processes. */ if (filePtr->numPids > 0) { if (CleanupChildren(interp, filePtr->numPids, filePtr->pidPtr, filePtr->errorId) != TCL_OK) { result = TCL_ERROR; } } ckfree((char *) filePtr); return result; } /* *---------------------------------------------------------------------- * * Tcl_EofCmd -- * * This procedure is invoked to process the "eof" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_EofCmd(notUsed, interp, argc, argv) ClientData notUsed; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { OpenFile *filePtr; if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " fileId\"", (char *) NULL); return TCL_ERROR; } if (TclGetOpenFile(interp, argv[1], &filePtr) != TCL_OK) { return TCL_ERROR; } if (feof(filePtr->f)) { interp->result = "1"; } else { interp->result = "0"; } return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_ExecCmd -- * * This procedure is invoked to process the "exec" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_ExecCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int outputId; /* File id for output pipe. -1 * means command overrode. */ int errorId; /* File id for temporary file * containing error output. */ int *pidPtr; int numPids, result; /* * See if the command is to be run in background; if so, create * the command, detach it, and return. */ if ((argv[argc-1][0] == '&') && (argv[argc-1][1] == 0)) { argc--; argv[argc] = NULL; numPids = Tcl_CreatePipeline(interp, argc-1, argv+1, &pidPtr, (int *) NULL, (int *) NULL, (int *) NULL); if (numPids < 0) { return TCL_ERROR; } Tcl_DetachPids(numPids, pidPtr); ckfree((char *) pidPtr); return TCL_OK; } /* * Create the command's pipeline. */ numPids = Tcl_CreatePipeline(interp, argc-1, argv+1, &pidPtr, (int *) NULL, &outputId, &errorId); if (numPids < 0) { return TCL_ERROR; } /* * Read the child's output (if any) and put it into the result. */ result = TCL_OK; if (outputId != -1) { while (1) { # define BUFFER_SIZE 1000 char buffer[BUFFER_SIZE+1]; int count; count = read(outputId, buffer, BUFFER_SIZE); if (count == 0) { break; } if (count < 0) { Tcl_ResetResult(interp); Tcl_AppendResult(interp, "error reading from output pipe: ", Tcl_UnixError(interp), (char *) NULL); result = TCL_ERROR; break; } buffer[count] = 0; Tcl_AppendResult(interp, buffer, (char *) NULL); } close(outputId); } if (CleanupChildren(interp, numPids, pidPtr, errorId) != TCL_OK) { result = TCL_ERROR; } return result; } /* *---------------------------------------------------------------------- * * Tcl_ExitCmd -- * * This procedure is invoked to process the "exit" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_ExitCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int value; if ((argc != 1) && (argc != 2)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ?returnCode?\"", (char *) NULL); return TCL_ERROR; } if (argc == 1) { exit(0); } if (Tcl_GetInt(interp, argv[1], &value) != TCL_OK) { return TCL_ERROR; } exit(value); #if 0 return TCL_OK; /* Better not ever reach this! */ #endif } /* *---------------------------------------------------------------------- * * Tcl_FileCmd -- * * This procedure is invoked to process the "file" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_FileCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { char *p; int length, statOp; int mode = 0; /* Initialized only to prevent * compiler warning message. */ struct stat statBuf; char *fileName, c; if (argc < 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " option name ?arg ...?\"", (char *) NULL); return TCL_ERROR; } c = argv[1][0]; length = strlen(argv[1]); /* * First handle operations on the file name. */ fileName = Tcl_TildeSubst(interp, argv[2]); if (fileName == NULL) { return TCL_ERROR; } if ((c == 'd') && (strncmp(argv[1], "dirname", length) == 0)) { if (argc != 3) { argv[1] = "dirname"; not3Args: Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ", argv[1], " name\"", (char *) NULL); return TCL_ERROR; } #ifdef MSDOS p = strrchr(fileName, '\\'); #else p = strrchr(fileName, '/'); #endif if (p == NULL) { interp->result = "."; } else if (p == fileName) { #ifdef MSDOS interp->result = "\\"; #else interp->result = "/"; #endif } else { *p = 0; Tcl_SetResult(interp, fileName, TCL_VOLATILE); *p = '/'; } return TCL_OK; } else if ((c == 'r') && (strncmp(argv[1], "rootname", length) == 0) && (length >= 2)) { char *lastSlash; if (argc != 3) { argv[1] = "rootname"; goto not3Args; } p = strrchr(fileName, '.'); #ifdef MSDOS lastSlash = strrchr(fileName, '\\'); #else lastSlash = strrchr(fileName, '/'); #endif if ((p == NULL) || ((lastSlash != NULL) && (lastSlash > p))) { Tcl_SetResult(interp, fileName, TCL_VOLATILE); } else { *p = 0; Tcl_SetResult(interp, fileName, TCL_VOLATILE); *p = '.'; } return TCL_OK; } else if ((c == 'e') && (strncmp(argv[1], "extension", length) == 0) && (length >= 3)) { char *lastSlash; if (argc != 3) { argv[1] = "extension"; goto not3Args; } p = strrchr(fileName, '.'); #ifdef MSDOS lastSlash = strrchr(fileName, '\\'); #else lastSlash = strrchr(fileName, '/'); #endif if ((p != NULL) && ((lastSlash == NULL) || (lastSlash < p))) { Tcl_SetResult(interp, p, TCL_VOLATILE); } return TCL_OK; } else if ((c == 't') && (strncmp(argv[1], "tail", length) == 0) && (length >= 2)) { if (argc != 3) { argv[1] = "tail"; goto not3Args; } #ifdef MSDOS p = strrchr(fileName, '\\'); #else p = strrchr(fileName, '/'); #endif if (p != NULL) { Tcl_SetResult(interp, p+1, TCL_VOLATILE); } else { Tcl_SetResult(interp, fileName, TCL_VOLATILE); } return TCL_OK; } /* * Next, handle operations that can be satisfied with the "access" * kernel call. */ if (fileName == NULL) { return TCL_ERROR; } if ((c == 'r') && (strncmp(argv[1], "readable", length) == 0) && (length >= 5)) { if (argc != 3) { argv[1] = "readable"; goto not3Args; } mode = R_OK; checkAccess: if (access(fileName, mode) == -1) { interp->result = "0"; } else { interp->result = "1"; } return TCL_OK; } else if ((c == 'w') && (strncmp(argv[1], "writable", length) == 0)) { if (argc != 3) { argv[1] = "writable"; goto not3Args; } mode = W_OK; goto checkAccess; } else if ((c == 'e') && (strncmp(argv[1], "executable", length) == 0) && (length >= 3)) { if (argc != 3) { argv[1] = "executable"; goto not3Args; } mode = X_OK; goto checkAccess; } else if ((c == 'e') && (strncmp(argv[1], "exists", length) == 0) && (length >= 3)) { if (argc != 3) { argv[1] = "exists"; goto not3Args; } mode = F_OK; goto checkAccess; } /* * Lastly, check stuff that requires the file to be stat-ed. */ if ((c == 'a') && (strncmp(argv[1], "atime", length) == 0)) { if (argc != 3) { argv[1] = "atime"; goto not3Args; } if (stat(fileName, &statBuf) == -1) { goto badStat; } sprintf(interp->result, "%ld", statBuf.st_atime); return TCL_OK; } else if ((c == 'i') && (strncmp(argv[1], "isdirectory", length) == 0) && (length >= 3)) { if (argc != 3) { argv[1] = "isdirectory"; goto not3Args; } statOp = 2; } else if ((c == 'i') && (strncmp(argv[1], "isfile", length) == 0) && (length >= 3)) { if (argc != 3) { argv[1] = "isfile"; goto not3Args; } statOp = 1; } else if ((c == 'l') && (strncmp(argv[1], "lstat", length) == 0)) { if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " lstat name varName\"", (char *) NULL); return TCL_ERROR; } if (lstat(fileName, &statBuf) == -1) { Tcl_AppendResult(interp, "couldn't lstat \"", argv[2], "\": ", Tcl_UnixError(interp), (char *) NULL); return TCL_ERROR; } return StoreStatData(interp, argv[3], &statBuf); } else if ((c == 'm') && (strncmp(argv[1], "mtime", length) == 0)) { if (argc != 3) { argv[1] = "mtime"; goto not3Args; } if (stat(fileName, &statBuf) == -1) { goto badStat; } sprintf(interp->result, "%ld", statBuf.st_mtime); return TCL_OK; } else if ((c == 'o') && (strncmp(argv[1], "owned", length) == 0)) { if (argc != 3) { argv[1] = "owned"; goto not3Args; } statOp = 0; #ifdef S_IFLNK /* * This option is only included if symbolic links exist on this system * (in which case S_IFLNK should be defined). */ } else if ((c == 'r') && (strncmp(argv[1], "readlink", length) == 0) && (length >= 5)) { char linkValue[MAXPATHLEN+1]; int linkLength; if (argc != 3) { argv[1] = "readlink"; goto not3Args; } linkLength = readlink(fileName, linkValue, sizeof(linkValue) - 1); if (linkLength == -1) { Tcl_AppendResult(interp, "couldn't readlink \"", argv[2], "\": ", Tcl_UnixError(interp), (char *) NULL); return TCL_ERROR; } linkValue[linkLength] = 0; Tcl_SetResult(interp, linkValue, TCL_VOLATILE); return TCL_OK; #endif } else if ((c == 's') && (strncmp(argv[1], "size", length) == 0) && (length >= 2)) { if (argc != 3) { argv[1] = "size"; goto not3Args; } if (stat(fileName, &statBuf) == -1) { goto badStat; } sprintf(interp->result, "%ld", statBuf.st_size); return TCL_OK; } else if ((c == 's') && (strncmp(argv[1], "stat", length) == 0) && (length >= 2)) { if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " stat name varName\"", (char *) NULL); return TCL_ERROR; } if (stat(fileName, &statBuf) == -1) { badStat: Tcl_AppendResult(interp, "couldn't stat \"", argv[2], "\": ", Tcl_UnixError(interp), (char *) NULL); return TCL_ERROR; } return StoreStatData(interp, argv[3], &statBuf); } else if ((c == 't') && (strncmp(argv[1], "type", length) == 0) && (length >= 2)) { if (argc != 3) { argv[1] = "type"; goto not3Args; } if (lstat(fileName, &statBuf) == -1) { goto badStat; } interp->result = GetFileType((int) statBuf.st_mode); return TCL_OK; } else { Tcl_AppendResult(interp, "bad option \"", argv[1], "\": should be atime, dirname, executable, exists, ", "extension, isdirectory, isfile, lstat, mtime, owned, ", "readable, ", #ifdef S_IFLNK "readlink, ", #endif "root, size, stat, tail, type, ", "or writable", (char *) NULL); return TCL_ERROR; } if (stat(fileName, &statBuf) == -1) { interp->result = "0"; return TCL_OK; } switch (statOp) { case 0: mode = (geteuid() == statBuf.st_uid); break; case 1: mode = S_ISREG(statBuf.st_mode); break; case 2: mode = S_ISDIR(statBuf.st_mode); break; } if (mode) { interp->result = "1"; } else { interp->result = "0"; } return TCL_OK; } /* *---------------------------------------------------------------------- * * StoreStatData -- * * This is a utility procedure that breaks out the fields of a * "stat" structure and stores them in textual form into the * elements of an associative array. * * Results: * Returns a standard Tcl return value. If an error occurs then * a message is left in interp->result. * * Side effects: * Elements of the associative array given by "varName" are modified. * *---------------------------------------------------------------------- */ static int StoreStatData(interp, varName, statPtr) Tcl_Interp *interp; /* Interpreter for error reports. */ char *varName; /* Name of associative array variable * in which to store stat results. */ struct stat *statPtr; /* Pointer to buffer containing * stat data to store in varName. */ { char string[30]; sprintf(string, "%d", statPtr->st_dev); if (Tcl_SetVar2(interp, varName, "dev", string, TCL_LEAVE_ERR_MSG) == NULL) { return TCL_ERROR; } sprintf(string, "%d", statPtr->st_ino); if (Tcl_SetVar2(interp, varName, "ino", string, TCL_LEAVE_ERR_MSG) == NULL) { return TCL_ERROR; } sprintf(string, "%d", statPtr->st_mode); if (Tcl_SetVar2(interp, varName, "mode", string, TCL_LEAVE_ERR_MSG) == NULL) { return TCL_ERROR; } sprintf(string, "%d", statPtr->st_nlink); if (Tcl_SetVar2(interp, varName, "nlink", string, TCL_LEAVE_ERR_MSG) == NULL) { return TCL_ERROR; } sprintf(string, "%d", statPtr->st_uid); if (Tcl_SetVar2(interp, varName, "uid", string, TCL_LEAVE_ERR_MSG) == NULL) { return TCL_ERROR; } sprintf(string, "%d", statPtr->st_gid); if (Tcl_SetVar2(interp, varName, "gid", string, TCL_LEAVE_ERR_MSG) == NULL) { return TCL_ERROR; } sprintf(string, "%ld", statPtr->st_size); if (Tcl_SetVar2(interp, varName, "size", string, TCL_LEAVE_ERR_MSG) == NULL) { return TCL_ERROR; } sprintf(string, "%ld", statPtr->st_atime); if (Tcl_SetVar2(interp, varName, "atime", string, TCL_LEAVE_ERR_MSG) == NULL) { return TCL_ERROR; } sprintf(string, "%ld", statPtr->st_mtime); if (Tcl_SetVar2(interp, varName, "mtime", string, TCL_LEAVE_ERR_MSG) == NULL) { return TCL_ERROR; } sprintf(string, "%ld", statPtr->st_ctime); if (Tcl_SetVar2(interp, varName, "ctime", string, TCL_LEAVE_ERR_MSG) == NULL) { return TCL_ERROR; } if (Tcl_SetVar2(interp, varName, "type", GetFileType((int) statPtr->st_mode), TCL_LEAVE_ERR_MSG) == NULL) { return TCL_ERROR; } return TCL_OK; } /* *---------------------------------------------------------------------- * * GetFileType -- * * Given a mode word, returns a string identifying the type of a * file. * * Results: * A static text string giving the file type from mode. * * Side effects: * None. * *---------------------------------------------------------------------- */ static char * GetFileType(mode) int mode; { if (S_ISREG(mode)) { return "file"; } else if (S_ISDIR(mode)) { return "directory"; } else if (S_ISCHR(mode)) { return "characterSpecial"; } else if (S_ISBLK(mode)) { return "blockSpecial"; } else if (S_ISFIFO(mode)) { return "fifo"; } else if (S_ISLNK(mode)) { return "link"; } else if (S_ISSOCK(mode)) { return "socket"; } return "unknown"; } /* *---------------------------------------------------------------------- * * Tcl_FlushCmd -- * * This procedure is invoked to process the "flush" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_FlushCmd(notUsed, interp, argc, argv) ClientData notUsed; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { OpenFile *filePtr; FILE *f; if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " fileId\"", (char *) NULL); return TCL_ERROR; } if (TclGetOpenFile(interp, argv[1], &filePtr) != TCL_OK) { return TCL_ERROR; } if (!filePtr->writable) { Tcl_AppendResult(interp, "\"", argv[1], "\" wasn't opened for writing", (char *) NULL); return TCL_ERROR; } f = filePtr->f2; if (f == NULL) { f = filePtr->f; } if (fflush(f) == EOF) { Tcl_AppendResult(interp, "error flushing \"", argv[1], "\": ", Tcl_UnixError(interp), (char *) NULL); clearerr(f); return TCL_ERROR; } return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_GetsCmd -- * * This procedure is invoked to process the "gets" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_GetsCmd(notUsed, interp, argc, argv) ClientData notUsed; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { # define BUF_SIZE 200 char buffer[BUF_SIZE+1]; int totalCount, done, flags; OpenFile *filePtr; register FILE *f; if ((argc != 2) && (argc != 3)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " fileId ?varName?\"", (char *) NULL); return TCL_ERROR; } if (TclGetOpenFile(interp, argv[1], &filePtr) != TCL_OK) { return TCL_ERROR; } if (!filePtr->readable) { Tcl_AppendResult(interp, "\"", argv[1], "\" wasn't opened for reading", (char *) NULL); return TCL_ERROR; } /* * We can't predict how large a line will be, so read it in * pieces, appending to the current result or to a variable. */ totalCount = 0; done = 0; flags = 0; f = filePtr->f; while (!done) { register int c, count; register char *p; for (p = buffer, count = 0; count < BUF_SIZE-1; count++, p++) { c = getc(f); if (c == EOF) { if (ferror(filePtr->f)) { Tcl_ResetResult(interp); Tcl_AppendResult(interp, "error reading \"", argv[1], "\": ", Tcl_UnixError(interp), (char *) NULL); clearerr(filePtr->f); return TCL_ERROR; } else if (feof(filePtr->f)) { if ((totalCount == 0) && (count == 0)) { totalCount = -1; } done = 1; break; } } if (c == '\n') { done = 1; break; } *p = c; } *p = 0; if (argc == 2) { Tcl_AppendResult(interp, buffer, (char *) NULL); } else { if (Tcl_SetVar(interp, argv[2], buffer, flags|TCL_LEAVE_ERR_MSG) == NULL) { return TCL_ERROR; } flags = TCL_APPEND_VALUE; } totalCount += count; } if (argc == 3) { sprintf(interp->result, "%d", totalCount); } return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_OpenCmd -- * * This procedure is invoked to process the "open" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_OpenCmd(notUsed, interp, argc, argv) ClientData notUsed; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { Interp *iPtr = (Interp *) interp; int pipeline, fd; char *access; register OpenFile *filePtr; if (argc == 2) { access = "r"; } else if (argc == 3) { access = argv[2]; } else { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " filename ?access?\"", (char *) NULL); return TCL_ERROR; } filePtr = (OpenFile *) ckalloc(sizeof(OpenFile)); filePtr->f = NULL; filePtr->f2 = NULL; filePtr->readable = 0; filePtr->writable = 0; filePtr->numPids = 0; filePtr->pidPtr = NULL; filePtr->errorId = -1; /* * Verify the requested form of access. */ pipeline = 0; if (argv[1][0] == '|') { pipeline = 1; } switch (access[0]) { case 'r': filePtr->readable = 1; break; case 'w': filePtr->writable = 1; break; case 'a': filePtr->writable = 1; break; default: badAccess: Tcl_AppendResult(interp, "illegal access mode \"", access, "\"", (char *) NULL); goto error; } if (access[1] == '+') { filePtr->readable = filePtr->writable = 1; if (access[2] != 0) { goto badAccess; } } else if (access[1] != 0) { goto badAccess; } /* * Open the file or create a process pipeline. */ if (!pipeline) { char *fileName = argv[1]; if (fileName[0] == '~') { fileName = Tcl_TildeSubst(interp, fileName); if (fileName == NULL) { goto error; } } filePtr->f = fopen(fileName, access); if (filePtr->f == NULL) { Tcl_AppendResult(interp, "couldn't open \"", argv[1], "\": ", Tcl_UnixError(interp), (char *) NULL); goto error; } } else { int *inPipePtr, *outPipePtr; int cmdArgc, inPipe, outPipe; char **cmdArgv; if (Tcl_SplitList(interp, argv[1]+1, &cmdArgc, &cmdArgv) != TCL_OK) { goto error; } inPipePtr = (filePtr->writable) ? &inPipe : NULL; outPipePtr = (filePtr->readable) ? &outPipe : NULL; inPipe = outPipe = -1; filePtr->numPids = Tcl_CreatePipeline(interp, cmdArgc, cmdArgv, &filePtr->pidPtr, inPipePtr, outPipePtr, &filePtr->errorId); ckfree((char *) cmdArgv); if (filePtr->numPids < 0) { goto error; } if (filePtr->readable) { if (outPipe == -1) { if (inPipe != -1) { close(inPipe); } Tcl_AppendResult(interp, "can't read output from command:", " standard output was redirected", (char *) NULL); goto error; } filePtr->f = fdopen(outPipe, "r"); } if (filePtr->writable) { if (inPipe == -1) { Tcl_AppendResult(interp, "can't write input to command:", " standard input was redirected", (char *) NULL); goto error; } if (filePtr->f != NULL) { filePtr->f2 = fdopen(inPipe, "w"); } else { filePtr->f = fdopen(inPipe, "w"); } } } /* * Enter this new OpenFile structure in the table for the * interpreter. May have to expand the table to do this. */ fd = fileno(filePtr->f); TclMakeFileTable(iPtr, fd); if (iPtr->filePtrArray[fd] != NULL) { panic("Tcl_OpenCmd found file already open"); } iPtr->filePtrArray[fd] = filePtr; sprintf(interp->result, "file%d", fd); return TCL_OK; error: if (filePtr->f != NULL) { fclose(filePtr->f); } if (filePtr->f2 != NULL) { fclose(filePtr->f2); } if (filePtr->numPids > 0) { Tcl_DetachPids(filePtr->numPids, filePtr->pidPtr); ckfree((char *) filePtr->pidPtr); } if (filePtr->errorId != -1) { close(filePtr->errorId); } ckfree((char *) filePtr); return TCL_ERROR; } /* *---------------------------------------------------------------------- * * Tcl_PwdCmd -- * * This procedure is invoked to process the "pwd" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_PwdCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { char buffer[MAXPATHLEN+1]; if (argc != 1) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], "\"", (char *) NULL); return TCL_ERROR; } if (currentDir == NULL) { #if TCL_GETWD if (getwd(buffer) == NULL) { Tcl_AppendResult(interp, "error getting working directory name: ", buffer, (char *) NULL); return TCL_ERROR; } #else if (getcwd(buffer, MAXPATHLEN) == 0) { if (errno == ERANGE) { interp->result = "working directory name is too long"; } else { Tcl_AppendResult(interp, "error getting working directory name: ", Tcl_UnixError(interp), (char *) NULL); } return TCL_ERROR; } #endif currentDir = (char *) ckalloc((unsigned) (strlen(buffer) + 1)); strcpy(currentDir, buffer); } interp->result = currentDir; return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_PutsCmd -- * * This procedure is invoked to process the "puts" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_PutsCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { OpenFile *filePtr; FILE *f; if (argc == 4) { if (strncmp(argv[3], "nonewline", strlen(argv[3])) != 0) { Tcl_AppendResult(interp, "bad argument \"", argv[3], "\": should be \"nonewline\"", (char *) NULL); return TCL_ERROR; } } else if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " fileId string ?nonewline?\"", (char *) NULL); return TCL_ERROR; } if (TclGetOpenFile(interp, argv[1], &filePtr) != TCL_OK) { return TCL_ERROR; } if (!filePtr->writable) { Tcl_AppendResult(interp, "\"", argv[1], "\" wasn't opened for writing", (char *) NULL); return TCL_ERROR; } f = filePtr->f2; if (f == NULL) { f = filePtr->f; } fputs(argv[2], f); if (argc == 3) { fputc('\n', f); } if (ferror(f)) { Tcl_AppendResult(interp, "error writing \"", argv[1], "\": ", Tcl_UnixError(interp), (char *) NULL); clearerr(f); return TCL_ERROR; } return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_ReadCmd -- * * This procedure is invoked to process the "read" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_ReadCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { OpenFile *filePtr; int bytesLeft, bytesRead, count; #define READ_BUF_SIZE 4096 char buffer[READ_BUF_SIZE+1]; int newline; if ((argc != 2) && (argc != 3)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " fileId ?numBytes|nonewline?\"", (char *) NULL); return TCL_ERROR; } if (TclGetOpenFile(interp, argv[1], &filePtr) != TCL_OK) { return TCL_ERROR; } if (!filePtr->readable) { Tcl_AppendResult(interp, "\"", argv[1], "\" wasn't opened for reading", (char *) NULL); return TCL_ERROR; } /* * Compute how many bytes to read, and see whether the final * newline should be dropped. */ newline = 1; if ((argc > 2) && isdigit(argv[2][0])) { if (Tcl_GetInt(interp, argv[2], &bytesLeft) != TCL_OK) { return TCL_ERROR; } } else { bytesLeft = 1<<30; if (argc > 2) { if (strncmp(argv[2], "nonewline", strlen(argv[2])) == 0) { newline = 0; } else { Tcl_AppendResult(interp, "bad argument \"", argv[2], "\": should be \"nonewline\"", (char *) NULL); return TCL_ERROR; } } } /* * Read the file in one or more chunks. */ bytesRead = 0; while (bytesLeft > 0) { count = READ_BUF_SIZE; if (bytesLeft < READ_BUF_SIZE) { count = bytesLeft; } count = fread(buffer, 1, count, filePtr->f); if (ferror(filePtr->f)) { Tcl_ResetResult(interp); Tcl_AppendResult(interp, "error reading \"", argv[1], "\": ", Tcl_UnixError(interp), (char *) NULL); clearerr(filePtr->f); return TCL_ERROR; } if (count == 0) { break; } buffer[count] = 0; Tcl_AppendResult(interp, buffer, (char *) NULL); bytesLeft -= count; bytesRead += count; } if ((newline == 0) && (interp->result[bytesRead-1] == '\n')) { interp->result[bytesRead-1] = 0; } return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_SeekCmd -- * * This procedure is invoked to process the "seek" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_SeekCmd(notUsed, interp, argc, argv) ClientData notUsed; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { OpenFile *filePtr; int offset, mode; if ((argc != 3) && (argc != 4)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " fileId offset ?origin?\"", (char *) NULL); return TCL_ERROR; } if (TclGetOpenFile(interp, argv[1], &filePtr) != TCL_OK) { return TCL_ERROR; } if (Tcl_GetInt(interp, argv[2], &offset) != TCL_OK) { return TCL_ERROR; } mode = SEEK_SET; if (argc == 4) { int length; char c; length = strlen(argv[3]); c = argv[3][0]; if ((c == 's') && (strncmp(argv[3], "start", length) == 0)) { mode = SEEK_SET; } else if ((c == 'c') && (strncmp(argv[3], "current", length) == 0)) { mode = SEEK_CUR; } else if ((c == 'e') && (strncmp(argv[3], "end", length) == 0)) { mode = SEEK_END; } else { Tcl_AppendResult(interp, "bad origin \"", argv[3], "\": should be start, current, or end", (char *) NULL); return TCL_ERROR; } } if (fseek(filePtr->f, offset, mode) == -1) { Tcl_AppendResult(interp, "error during seek: ", Tcl_UnixError(interp), (char *) NULL); clearerr(filePtr->f); return TCL_ERROR; } return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_SourceCmd -- * * This procedure is invoked to process the "source" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_SourceCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " fileName\"", (char *) NULL); return TCL_ERROR; } return Tcl_EvalFile(interp, argv[1]); } /* *---------------------------------------------------------------------- * * Tcl_TellCmd -- * * This procedure is invoked to process the "tell" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_TellCmd(notUsed, interp, argc, argv) ClientData notUsed; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { OpenFile *filePtr; if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " fileId\"", (char *) NULL); return TCL_ERROR; } if (TclGetOpenFile(interp, argv[1], &filePtr) != TCL_OK) { return TCL_ERROR; } sprintf(interp->result, "%d", ftell(filePtr->f)); return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_TimeCmd -- * * This procedure is invoked to process the "time" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_TimeCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int count, i, result; double timePer; #if TCL_GETTOD struct timeval start, stop; struct timezone tz; int micros; #else struct tms dummy2; long start, stop; #endif if (argc == 2) { count = 1; } else if (argc == 3) { if (Tcl_GetInt(interp, argv[2], &count) != TCL_OK) { return TCL_ERROR; } } else { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " command ?count?\"", (char *) NULL); return TCL_ERROR; } #if TCL_GETTOD gettimeofday(&start, &tz); #else start = times(&dummy2); #endif for (i = count ; i > 0; i--) { result = Tcl_Eval(interp, argv[1], 0, (char **) NULL); if (result != TCL_OK) { if (result == TCL_ERROR) { char msg[60]; sprintf(msg, "\n (\"time\" body line %d)", interp->errorLine); Tcl_AddErrorInfo(interp, msg); } return result; } } #if TCL_GETTOD gettimeofday(&stop, &tz); micros = (stop.tv_sec - start.tv_sec)*1000000 + (stop.tv_usec - start.tv_usec); timePer = micros; #else stop = times(&dummy2); timePer = (((double) (stop - start))*1000000.0)/CLK_TCK; #endif Tcl_ResetResult(interp); sprintf(interp->result, "%.0f microseconds per iteration", timePer/count); return TCL_OK; } /* *---------------------------------------------------------------------- * * CleanupChildren -- * * This is a utility procedure used to wait for child processes * to exit, record information about abnormal exits, and then * collect any stderr output generated by them. * * Results: * The return value is a standard Tcl result. If anything at * weird happened with the child processes, TCL_ERROR is returned * and a message is left in interp->result. * * Side effects: * If the last character of interp->result is a newline, then it * is removed. File errorId gets closed, and pidPtr is freed * back to the storage allocator. * *---------------------------------------------------------------------- */ static int CleanupChildren(interp, numPids, pidPtr, errorId) Tcl_Interp *interp; /* Used for error messages. */ int numPids; /* Number of entries in pidPtr array. */ int *pidPtr; /* Array of process ids of children. */ int errorId; /* File descriptor index for file containing * stderr output from pipeline. -1 means * there isn't any stderr output. */ { int result = TCL_OK; int i, pid, length; WAIT_STATUS_TYPE waitStatus; for (i = 0; i < numPids; i++) { pid = Tcl_WaitPids(1, &pidPtr[i], (int *) &waitStatus); if (pid == -1) { Tcl_AppendResult(interp, "error waiting for process to exit: ", Tcl_UnixError(interp), (char *) NULL); continue; } /* * Create error messages for unusual process exits. An * extra newline gets appended to each error message, but * it gets removed below (in the same fashion that an * extra newline in the command's output is removed). */ if (!WIFEXITED(waitStatus) || (WEXITSTATUS(waitStatus) != 0)) { char msg1[20], msg2[20]; result = TCL_ERROR; sprintf(msg1, "%d", pid); if (WIFEXITED(waitStatus)) { sprintf(msg2, "%d", WEXITSTATUS(waitStatus)); Tcl_SetErrorCode(interp, "CHILDSTATUS", msg1, msg2, (char *) NULL); } else if (WIFSIGNALED(waitStatus)) { char *p; p = Tcl_SignalMsg((int) (WTERMSIG(waitStatus))); Tcl_SetErrorCode(interp, "CHILDKILLED", msg1, Tcl_SignalId((int) (WTERMSIG(waitStatus))), p, (char *) NULL); Tcl_AppendResult(interp, "child killed: ", p, "\n", (char *) NULL); } else if (WIFSTOPPED(waitStatus)) { char *p; p = Tcl_SignalMsg((int) (WSTOPSIG(waitStatus))); Tcl_SetErrorCode(interp, "CHILDSUSP", msg1, Tcl_SignalId((int) (WSTOPSIG(waitStatus))), p, (char *) NULL); Tcl_AppendResult(interp, "child suspended: ", p, "\n", (char *) NULL); } else { Tcl_AppendResult(interp, "child wait status didn't make sense\n", (char *) NULL); } } } ckfree((char *) pidPtr); /* * Read the standard error file. If there's anything there, * then return an error and add the file's contents to the result * string. */ if (errorId >= 0) { while (1) { # define BUFFER_SIZE 1000 char buffer[BUFFER_SIZE+1]; int count; count = read(errorId, buffer, BUFFER_SIZE); if (count == 0) { break; } if (count < 0) { Tcl_AppendResult(interp, "error reading stderr output file: ", Tcl_UnixError(interp), (char *) NULL); break; } buffer[count] = 0; Tcl_AppendResult(interp, buffer, (char *) NULL); } close(errorId); } /* * If the last character of interp->result is a newline, then remove * the newline character (the newline would just confuse things). */ length = strlen(interp->result); if ((length > 0) && (interp->result[length-1] == '\n')) { interp->result[length-1] = '\0'; } return result; } micropolis-activity/src/tcl/tclglob.c0000664000076400007640000003566510724145723020215 0ustar simcitysimcity/* * tclGlob.c -- * * This file provides procedures and commands for file name * manipulation, such as tilde expansion and globbing. * * Copyright 1990-1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/RCS/tclGlob.c,v 1.24 92/07/01 08:51:50 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include #include "tclint.h" #include "tclunix.h" void dvpath(char *); /* * The structure below is used to keep track of a globbing result * being built up (i.e. a partial list of file names). The list * grows dynamically to be as big as needed. */ typedef struct { char *result; /* Pointer to result area. */ int totalSpace; /* Total number of characters allocated * for result. */ int spaceUsed; /* Number of characters currently in use * to hold the partial result (not including * the terminating NULL). */ int dynamic; /* 0 means result is static space, 1 means * it's dynamic. */ } GlobResult; /* * Declarations for procedures local to this file: */ static void AppendResult _ANSI_ARGS_((Tcl_Interp *interp, char *dir, char *separator, char *name, int nameLength)); static int DoGlob _ANSI_ARGS_((Tcl_Interp *interp, char *dir, char *rem)); /* *---------------------------------------------------------------------- * * AppendResult -- * * Given two parts of a file name (directory and element within * directory), concatenate the two together and append them to * the result building up in interp. * * Results: * There is no return value. * * Side effects: * Interp->result gets extended. * *---------------------------------------------------------------------- */ static void AppendResult(interp, dir, separator, name, nameLength) Tcl_Interp *interp; /* Interpreter whose result should be * appended to. */ char *dir; /* Name of directory, without trailing * slash except for root directory. */ char *separator; /* Separator string so use between dir and * name: either "/" or "" depending on dir. */ char *name; /* Name of file withing directory (NOT * necessarily null-terminated!). */ int nameLength; /* Number of characters in name. */ { int dirFlags, nameFlags; char *p, saved; /* * Next, see if we can put together a valid list element from dir * and name by calling Tcl_AppendResult. */ if (*dir == 0) { dirFlags = 0; } else { Tcl_ScanElement(dir, &dirFlags); } saved = name[nameLength]; name[nameLength] = 0; Tcl_ScanElement(name, &nameFlags); if ((dirFlags == 0) && (nameFlags == 0)) { if (*interp->result != 0) { Tcl_AppendResult(interp, " ", dir, separator, name, (char *) NULL); } else { Tcl_AppendResult(interp, dir, separator, name, (char *) NULL); } name[nameLength] = saved; return; } /* * This name has weird characters in it, so we have to convert it to * a list element. To do that, we have to merge the characters * into a single name. To do that, malloc a buffer to hold everything. */ p = (char *) ckalloc((unsigned) (strlen(dir) + strlen(separator) + nameLength + 1)); sprintf(p, "%s%s%s", dir, separator, name); name[nameLength] = saved; Tcl_AppendElement(interp, p, 0); ckfree(p); } /* *---------------------------------------------------------------------- * * DoGlob -- * * This recursive procedure forms the heart of the globbing * code. It performs a depth-first traversal of the tree * given by the path name to be globbed. * * Results: * The return value is a standard Tcl result indicating whether * an error occurred in globbing. After a normal return the * result in interp will be set to hold all of the file names * given by the dir and rem arguments. After an error the * result in interp will hold an error message. * * Side effects: * None. * *---------------------------------------------------------------------- */ static int DoGlob(interp, dir, rem) Tcl_Interp *interp; /* Interpreter to use for error * reporting (e.g. unmatched brace). */ char *dir; /* Name of a directory at which to * start glob expansion. This name * is fixed: it doesn't contain any * globbing chars. */ char *rem; /* Path to glob-expand. */ { /* * When this procedure is entered, the name to be globbed may * already have been partly expanded by ancestor invocations of * DoGlob. The part that's already been expanded is in "dir" * (this may initially be empty), and the part still to expand * is in "rem". This procedure expands "rem" one level, making * recursive calls to itself if there's still more stuff left * in the remainder. */ register char *p; register char c; char *openBrace, *closeBrace; int gotSpecial, result; char *separator; /* * Figure out whether we'll need to add a slash between the directory * name and file names within the directory when concatenating them * together. */ if ((dir[0] == 0) || ((dir[0] == '/') && (dir[1] == 0))) { separator = ""; } else { separator = "/"; } /* * When generating information for the next lower call, * use static areas if the name is short, and malloc if the name * is longer. */ #define STATIC_SIZE 200 /* * First, find the end of the next element in rem, checking * along the way for special globbing characters. */ gotSpecial = 0; openBrace = closeBrace = NULL; for (p = rem; ; p++) { c = *p; if ((c == '\0') || (c == '/')) { break; } if ((c == '{') && (openBrace == NULL)) { openBrace = p; } if ((c == '}') && (closeBrace == NULL)) { closeBrace = p; } if ((c == '*') || (c == '[') || (c == '\\') || (c == '?')) { gotSpecial = 1; } } /* * If there is an open brace in the argument, then make a recursive * call for each element between the braces. In this case, the * recursive call to DoGlob uses the same "dir" that we got. * If there are several brace-pairs in a single name, we just handle * one here, and the others will be handled in recursive calls. */ if (openBrace != NULL) { int remLength, l1, l2; char static1[STATIC_SIZE]; char *element, *newRem; if (closeBrace == NULL) { Tcl_ResetResult(interp); interp->result = "unmatched open-brace in file name"; return TCL_ERROR; } remLength = strlen(rem) + 1; if (remLength <= STATIC_SIZE) { newRem = static1; } else { newRem = (char *) ckalloc((unsigned) remLength); } l1 = openBrace-rem; strncpy(newRem, rem, l1); p = openBrace; for (p = openBrace; *p != '}'; ) { element = p+1; for (p = element; ((*p != '}') && (*p != ',')); p++) { /* Empty loop body: just find end of this element. */ } l2 = p - element; strncpy(newRem+l1, element, l2); strcpy(newRem+l1+l2, closeBrace+1); if (DoGlob(interp, dir, newRem) != TCL_OK) { return TCL_ERROR; } } if (remLength > STATIC_SIZE) { ckfree(newRem); } return TCL_OK; } /* * If there were any pattern-matching characters, then scan through * the directory to find all the matching names. */ if (gotSpecial) { DIR *d; struct dirent *entryPtr; int l1, l2; char *pattern, *newDir, *dirName; char static1[STATIC_SIZE], static2[STATIC_SIZE]; struct stat statBuf; /* * Be careful not to do any actual file system operations on a * directory named ""; instead, use ".". This is needed because * some versions of UNIX don't treat "" like "." automatically. */ if (*dir == '\0') { dirName = "."; } else { dirName = dir; } if ((stat(dirName, &statBuf) != 0) || ((statBuf.st_mode & S_IFMT) != S_IFDIR)) { return TCL_OK; } d = opendir(dirName); if (d == NULL) { Tcl_ResetResult(interp); Tcl_AppendResult(interp, "couldn't read directory \"", dirName, "\": ", Tcl_UnixError(interp), (char *) NULL); return TCL_ERROR; } l1 = strlen(dir); l2 = (p - rem); if (l2 < STATIC_SIZE) { pattern = static2; } else { pattern = (char *) ckalloc((unsigned) (l2+1)); } strncpy(pattern, rem, l2); pattern[l2] = '\0'; result = TCL_OK; while (1) { entryPtr = readdir(d); if (entryPtr == NULL) { break; } /* * Don't match names starting with "." unless the "." is * present in the pattern. */ if ((*entryPtr->d_name == '.') && (*pattern != '.')) { continue; } if (Tcl_StringMatch(entryPtr->d_name, pattern)) { int nameLength = strlen(entryPtr->d_name); if (*p == 0) { AppendResult(interp, dir, separator, entryPtr->d_name, nameLength); } else { if ((l1+nameLength+2) <= STATIC_SIZE) { newDir = static1; } else { newDir = (char *) ckalloc((unsigned) (l1+nameLength+2)); } sprintf(newDir, "%s%s%s", dir, separator, entryPtr->d_name); result = DoGlob(interp, newDir, p+1); if (newDir != static1) { ckfree(newDir); } if (result != TCL_OK) { break; } } } } closedir(d); if (pattern != static2) { ckfree(pattern); } return result; } /* * This is the simplest case: just another path element. Move * it to the dir side and recurse (or just add the name to the * list, if we're at the end of the path). */ if (*p == 0) { AppendResult(interp, dir, separator, rem, p-rem); } else { int l1, l2; char *newDir; char static1[STATIC_SIZE]; l1 = strlen(dir); l2 = l1 + (p - rem) + 2; if (l2 <= STATIC_SIZE) { newDir = static1; } else { newDir = (char *) ckalloc((unsigned) l2); } sprintf(newDir, "%s%s%.*s", dir, separator, p-rem, rem); result = DoGlob(interp, newDir, p+1); if (newDir != static1) { ckfree(newDir); } if (result != TCL_OK) { return TCL_ERROR; } } return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_TildeSubst -- * * Given a name starting with a tilde, produce a name where * the tilde and following characters have been replaced by * the home directory location for the named user. * * Results: * The result is a pointer to a static string containing * the new name. This name will only persist until the next * call to Tcl_TildeSubst; save it if you care about it for * the long term. If there was an error in processing the * tilde, then an error message is left in interp->result * and the return value is NULL. * * Side effects: * None that the caller needs to worry about. * *---------------------------------------------------------------------- */ char * Tcl_TildeSubst(interp, name) Tcl_Interp *interp; /* Interpreter in which to store error * message (if necessary). */ char *name; /* File name, which may begin with "~/" * (to indicate current user's home directory) * or "~/" (to indicate any user's * home directory). */ { #define STATIC_BUF_SIZE 50 static char staticBuf[STATIC_BUF_SIZE]; static int curSize = STATIC_BUF_SIZE; static char *curBuf = staticBuf; char *dir; int length; int fromPw = 0; register char *p; if (name[0] != '~') { return name; } #ifdef MSDOS dvpath(dir); if (name[1] != '/') { strcat(dir,"/"); p = name; } else p = name +1; #else /* * First, find the directory name corresponding to the tilde entry. */ if ((name[1] == '/') || (name[1] == '\0')) { dir = getenv("HOME"); if (dir == NULL) { Tcl_ResetResult(interp); Tcl_AppendResult(interp, "couldn't find HOME environment ", "variable to expand \"", name, "\"", (char *) NULL); return NULL; } p = name+1; } else { struct passwd *pwPtr; for (p = &name[1]; (*p != 0) && (*p != '/'); p++) { /* Null body; just find end of name. */ } length = p-&name[1]; if (length >= curSize) { length = curSize-1; } memcpy((VOID *) curBuf, (VOID *) (name+1), length); curBuf[length] = '\0'; pwPtr = getpwnam(curBuf); if (pwPtr == NULL) { Tcl_ResetResult(interp); Tcl_AppendResult(interp, "user \"", curBuf, "\" doesn't exist", (char *) NULL); return NULL; } dir = pwPtr->pw_dir; fromPw = 1; } #endif /* * Grow the buffer if necessary to make enough space for the * full file name. */ length = strlen(dir) + strlen(p); if (length >= curSize) { if (curBuf != staticBuf) { ckfree(curBuf); } curSize = length + 1; curBuf = (char *) ckalloc((unsigned) curSize); } /* * Finally, concatenate the directory name with the remainder * of the path in the buffer. */ strcpy(curBuf, dir); strcat(curBuf, p); #ifndef MSDOS if (fromPw) { endpwent(); } #endif return curBuf; } /* *---------------------------------------------------------------------- * * Tcl_GlobCmd -- * * This procedure is invoked to process the "glob" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_GlobCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int i, result, noComplain; if (argc < 2) { notEnoughArgs: Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ?-nocomplain? name ?name ...?\"", (char *) NULL); return TCL_ERROR; } noComplain = 0; if ((argv[1][0] == '-') && (strcmp(argv[1], "-nocomplain") == 0)) { if (argc < 3) { goto notEnoughArgs; } noComplain = 1; } for (i = 1 + noComplain; i < argc; i++) { char *thisName; /* * Do special checks for names starting at the root and for * names beginning with ~. Then let DoGlob do the rest. */ thisName = argv[i]; if (*thisName == '~') { thisName = Tcl_TildeSubst(interp, thisName); if (thisName == NULL) { return TCL_ERROR; } } if (*thisName == '/') { result = DoGlob(interp, "/", thisName+1); } else { result = DoGlob(interp, "", thisName); } if (result != TCL_OK) { return result; } } if ((*interp->result == 0) && !noComplain) { char *sep = ""; Tcl_AppendResult(interp, "no files matched glob pattern", (argc == 2) ? " \"" : "s \"", (char *) NULL); for (i = 1; i < argc; i++) { Tcl_AppendResult(interp, sep, argv[i], (char *) NULL); sep = " "; } Tcl_AppendResult(interp, "\"", (char *) NULL); return TCL_ERROR; } return TCL_OK; } micropolis-activity/src/tcl/tclbasic.c0000664000076400007640000006725110724145723020347 0ustar simcitysimcity/* * tclBasic.c -- * * Contains the basic facilities for TCL command interpretation, * including interpreter creation and deletion, command creation * and deletion, and command parsing and execution. * * Copyright 1987-1992 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/RCS/tclBasic.c,v 1.131 92/06/21 14:09:41 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tclint.h" /* * The following structure defines all of the commands in the Tcl core, * and the C procedures that execute them. */ typedef struct { char *name; /* Name of command. */ Tcl_CmdProc *proc; /* Procedure that executes command. */ } CmdInfo; /* * Built-in commands, and the procedures associated with them: */ static CmdInfo builtInCmds[] = { /* * Commands in the generic core: */ {"append", Tcl_AppendCmd}, {"array", Tcl_ArrayCmd}, {"break", Tcl_BreakCmd}, {"case", Tcl_CaseCmd}, {"catch", Tcl_CatchCmd}, {"concat", Tcl_ConcatCmd}, {"continue", Tcl_ContinueCmd}, {"error", Tcl_ErrorCmd}, {"eval", Tcl_EvalCmd}, {"expr", Tcl_ExprCmd}, {"for", Tcl_ForCmd}, {"foreach", Tcl_ForeachCmd}, {"format", Tcl_FormatCmd}, {"global", Tcl_GlobalCmd}, {"if", Tcl_IfCmd}, {"incr", Tcl_IncrCmd}, {"info", Tcl_InfoCmd}, {"join", Tcl_JoinCmd}, {"lappend", Tcl_LappendCmd}, {"lindex", Tcl_LindexCmd}, {"linsert", Tcl_LinsertCmd}, {"list", Tcl_ListCmd}, {"llength", Tcl_LlengthCmd}, {"lrange", Tcl_LrangeCmd}, {"lreplace", Tcl_LreplaceCmd}, {"lsearch", Tcl_LsearchCmd}, {"lsort", Tcl_LsortCmd}, {"proc", Tcl_ProcCmd}, {"regexp", Tcl_RegexpCmd}, {"regsub", Tcl_RegsubCmd}, {"rename", Tcl_RenameCmd}, {"return", Tcl_ReturnCmd}, {"scan", Tcl_ScanCmd}, {"set", Tcl_SetCmd}, {"split", Tcl_SplitCmd}, {"string", Tcl_StringCmd}, {"trace", Tcl_TraceCmd}, {"unset", Tcl_UnsetCmd}, {"uplevel", Tcl_UplevelCmd}, {"upvar", Tcl_UpvarCmd}, {"while", Tcl_WhileCmd}, /* * Commands in the UNIX core: */ #ifndef TCL_GENERIC_ONLY {"cd", Tcl_CdCmd}, {"close", Tcl_CloseCmd}, {"eof", Tcl_EofCmd}, {"exec", Tcl_ExecCmd}, {"exit", Tcl_ExitCmd}, {"file", Tcl_FileCmd}, {"flush", Tcl_FlushCmd}, {"gets", Tcl_GetsCmd}, {"glob", Tcl_GlobCmd}, {"open", Tcl_OpenCmd}, {"puts", Tcl_PutsCmd}, {"pwd", Tcl_PwdCmd}, {"read", Tcl_ReadCmd}, {"seek", Tcl_SeekCmd}, {"source", Tcl_SourceCmd}, {"tell", Tcl_TellCmd}, {"time", Tcl_TimeCmd}, #endif /* TCL_GENERIC_ONLY */ {NULL, (Tcl_CmdProc *) NULL} }; /* *---------------------------------------------------------------------- * * Tcl_CreateInterp -- * * Create a new TCL command interpreter. * * Results: * The return value is a token for the interpreter, which may be * used in calls to procedures like Tcl_CreateCmd, Tcl_Eval, or * Tcl_DeleteInterp. * * Side effects: * The command interpreter is initialized with an empty variable * table and the built-in commands. * *---------------------------------------------------------------------- */ Tcl_Interp * Tcl_CreateInterp() { register Interp *iPtr; register Command *cmdPtr; register CmdInfo *cmdInfoPtr; int i; iPtr = (Interp *) ckalloc(sizeof(Interp)); iPtr->result = iPtr->resultSpace; iPtr->freeProc = 0; iPtr->errorLine = 0; Tcl_InitHashTable(&iPtr->commandTable, TCL_STRING_KEYS); Tcl_InitHashTable(&iPtr->globalTable, TCL_STRING_KEYS); iPtr->numLevels = 0; iPtr->framePtr = NULL; iPtr->varFramePtr = NULL; iPtr->activeTracePtr = NULL; iPtr->numEvents = 0; iPtr->events = NULL; iPtr->curEvent = 0; iPtr->curEventNum = 0; iPtr->revPtr = NULL; iPtr->historyFirst = NULL; iPtr->revDisables = 1; iPtr->evalFirst = iPtr->evalLast = NULL; iPtr->appendResult = NULL; iPtr->appendAvl = 0; iPtr->appendUsed = 0; iPtr->numFiles = 0; iPtr->filePtrArray = NULL; for (i = 0; i < NUM_REGEXPS; i++) { iPtr->patterns[i] = NULL; iPtr->patLengths[i] = -1; iPtr->regexps[i] = NULL; } iPtr->cmdCount = 0; iPtr->noEval = 0; iPtr->scriptFile = NULL; iPtr->flags = 0; iPtr->tracePtr = NULL; iPtr->resultSpace[0] = 0; /* * Create the built-in commands. Do it here, rather than calling * Tcl_CreateCommand, because it's faster (there's no need to * check for a pre-existing command by the same name). */ for (cmdInfoPtr = builtInCmds; cmdInfoPtr->name != NULL; cmdInfoPtr++) { int new; Tcl_HashEntry *hPtr; hPtr = Tcl_CreateHashEntry(&iPtr->commandTable, cmdInfoPtr->name, &new); if (new) { cmdPtr = (Command *) ckalloc(sizeof(Command)); cmdPtr->proc = cmdInfoPtr->proc; cmdPtr->clientData = (ClientData) NULL; cmdPtr->deleteProc = NULL; Tcl_SetHashValue(hPtr, cmdPtr); } } #ifndef TCL_GENERIC_ONLY TclSetupEnv((Tcl_Interp *) iPtr); #endif return (Tcl_Interp *) iPtr; } /* *---------------------------------------------------------------------- * * Tcl_DeleteInterp -- * * Delete an interpreter and free up all of the resources associated * with it. * * Results: * None. * * Side effects: * The interpreter is destroyed. The caller should never again * use the interp token. * *---------------------------------------------------------------------- */ void Tcl_DeleteInterp(interp) Tcl_Interp *interp; /* Token for command interpreter (returned * by a previous call to Tcl_CreateInterp). */ { Interp *iPtr = (Interp *) interp; Tcl_HashEntry *hPtr; Tcl_HashSearch search; register Command *cmdPtr; int i; /* * If the interpreter is in use, delay the deletion until later. */ iPtr->flags |= DELETED; if (iPtr->numLevels != 0) { return; } /* * Free up any remaining resources associated with the * interpreter. */ for (hPtr = Tcl_FirstHashEntry(&iPtr->commandTable, &search); hPtr != NULL; hPtr = Tcl_NextHashEntry(&search)) { cmdPtr = (Command *) Tcl_GetHashValue(hPtr); if (cmdPtr->deleteProc != NULL) { (*cmdPtr->deleteProc)(cmdPtr->clientData); } ckfree((char *) cmdPtr); } Tcl_DeleteHashTable(&iPtr->commandTable); TclDeleteVars(iPtr, &iPtr->globalTable); if (iPtr->events != NULL) { int i; for (i = 0; i < iPtr->numEvents; i++) { ckfree(iPtr->events[i].command); } ckfree((char *) iPtr->events); } while (iPtr->revPtr != NULL) { HistoryRev *nextPtr = iPtr->revPtr->nextPtr; ckfree((char *) iPtr->revPtr); iPtr->revPtr = nextPtr; } if (iPtr->appendResult != NULL) { ckfree(iPtr->appendResult); } #ifndef TCL_GENERIC_ONLY if (iPtr->numFiles > 0) { for (i = 0; i < iPtr->numFiles; i++) { OpenFile *filePtr; filePtr = iPtr->filePtrArray[i]; if (filePtr == NULL) { continue; } if (i >= 3) { fclose(filePtr->f); if (filePtr->f2 != NULL) { fclose(filePtr->f2); } if (filePtr->numPids > 0) { Tcl_DetachPids(filePtr->numPids, filePtr->pidPtr); ckfree((char *) filePtr->pidPtr); } } ckfree((char *) filePtr); } ckfree((char *) iPtr->filePtrArray); } #endif for (i = 0; i < NUM_REGEXPS; i++) { if (iPtr->patterns[i] == NULL) { break; } ckfree(iPtr->patterns[i]); ckfree((char *) iPtr->regexps[i]); } while (iPtr->tracePtr != NULL) { Trace *nextPtr = iPtr->tracePtr->nextPtr; ckfree((char *) iPtr->tracePtr); iPtr->tracePtr = nextPtr; } ckfree((char *) iPtr); } /* *---------------------------------------------------------------------- * * Tcl_CreateCommand -- * * Define a new command in a command table. * * Results: * None. * * Side effects: * If a command named cmdName already exists for interp, it is * deleted. In the future, when cmdName is seen as the name of * a command by Tcl_Eval, proc will be called. When the command * is deleted from the table, deleteProc will be called. See the * manual entry for details on the calling sequence. * *---------------------------------------------------------------------- */ void Tcl_CreateCommand(interp, cmdName, proc, clientData, deleteProc) Tcl_Interp *interp; /* Token for command interpreter (returned * by a previous call to Tcl_CreateInterp). */ char *cmdName; /* Name of command. */ Tcl_CmdProc *proc; /* Command procedure to associate with * cmdName. */ ClientData clientData; /* Arbitrary one-word value to pass to proc. */ Tcl_CmdDeleteProc *deleteProc; /* If not NULL, gives a procedure to call when * this command is deleted. */ { Interp *iPtr = (Interp *) interp; register Command *cmdPtr; Tcl_HashEntry *hPtr; int new; hPtr = Tcl_CreateHashEntry(&iPtr->commandTable, cmdName, &new); if (!new) { /* * Command already exists: delete the old one. */ cmdPtr = (Command *) Tcl_GetHashValue(hPtr); if (cmdPtr->deleteProc != NULL) { (*cmdPtr->deleteProc)(cmdPtr->clientData); } } else { cmdPtr = (Command *) ckalloc(sizeof(Command)); Tcl_SetHashValue(hPtr, cmdPtr); } cmdPtr->proc = proc; cmdPtr->clientData = clientData; cmdPtr->deleteProc = deleteProc; } /* *---------------------------------------------------------------------- * * Tcl_DeleteCommand -- * * Remove the given command from the given interpreter. * * Results: * 0 is returned if the command was deleted successfully. * -1 is returned if there didn't exist a command by that * name. * * Side effects: * CmdName will no longer be recognized as a valid command for * interp. * *---------------------------------------------------------------------- */ int Tcl_DeleteCommand(interp, cmdName) Tcl_Interp *interp; /* Token for command interpreter (returned * by a previous call to Tcl_CreateInterp). */ char *cmdName; /* Name of command to remove. */ { Interp *iPtr = (Interp *) interp; Tcl_HashEntry *hPtr; Command *cmdPtr; hPtr = Tcl_FindHashEntry(&iPtr->commandTable, cmdName); if (hPtr == NULL) { return -1; } cmdPtr = (Command *) Tcl_GetHashValue(hPtr); if (cmdPtr->deleteProc != NULL) { (*cmdPtr->deleteProc)(cmdPtr->clientData); } ckfree((char *) cmdPtr); Tcl_DeleteHashEntry(hPtr); return 0; } /* *----------------------------------------------------------------- * * Tcl_Eval -- * * Parse and execute a command in the Tcl language. * * Results: * The return value is one of the return codes defined in tcl.hd * (such as TCL_OK), and interp->result contains a string value * to supplement the return code. The value of interp->result * will persist only until the next call to Tcl_Eval: copy it or * lose it! *TermPtr is filled in with the character just after * the last one that was part of the command (usually a NULL * character or a closing bracket). * * Side effects: * Almost certainly; depends on the command. * *----------------------------------------------------------------- */ int Tcl_Eval(interp, cmd, flags, termPtr) Tcl_Interp *interp; /* Token for command interpreter (returned * by a previous call to Tcl_CreateInterp). */ char *cmd; /* Pointer to TCL command to interpret. */ int flags; /* OR-ed combination of flags like * TCL_BRACKET_TERM and TCL_RECORD_BOUNDS. */ char **termPtr; /* If non-NULL, fill in the address it points * to with the address of the char. just after * the last one that was part of cmd. See * the man page for details on this. */ { /* * The storage immediately below is used to generate a copy * of the command, after all argument substitutions. Pv will * contain the argv values passed to the command procedure. */ # define NUM_CHARS 200 char copyStorage[NUM_CHARS]; ParseValue pv; char *oldBuffer; /* * This procedure generates an (argv, argc) array for the command, * It starts out with stack-allocated space but uses dynamically- * allocated storage to increase it if needed. */ # define NUM_ARGS 10 char *(argStorage[NUM_ARGS]); char **argv = argStorage; int argc; int argSize = NUM_ARGS; register char *src; /* Points to current character * in cmd. */ char termChar; /* Return when this character is found * (either ']' or '\0'). Zero means * that newlines terminate commands. */ int result; /* Return value. */ register Interp *iPtr = (Interp *) interp; Tcl_HashEntry *hPtr; Command *cmdPtr; char *dummy; /* Make termPtr point here if it was * originally NULL. */ char *cmdStart; /* Points to first non-blank char. in * command (used in calling trace * procedures). */ char *ellipsis = ""; /* Used in setting errorInfo variable; * set to "..." to indicate that not * all of offending command is included * in errorInfo. "" means that the * command is all there. */ register Trace *tracePtr; /* * Initialize the result to an empty string and clear out any * error information. This makes sure that we return an empty * result if there are no commands in the command string. */ Tcl_FreeResult((Tcl_Interp *) iPtr); iPtr->result = iPtr->resultSpace; iPtr->resultSpace[0] = 0; result = TCL_OK; /* * Check depth of nested calls to Tcl_Eval: if this gets too large, * it's probably because of an infinite loop somewhere. */ iPtr->numLevels++; if (iPtr->numLevels > MAX_NESTING_DEPTH) { iPtr->numLevels--; iPtr->result = "too many nested calls to Tcl_Eval (infinite loop?)"; return TCL_ERROR; } /* * Initialize the area in which command copies will be assembled. */ pv.buffer = copyStorage; pv.end = copyStorage + NUM_CHARS - 1; pv.expandProc = TclExpandParseValue; pv.clientData = (ClientData) NULL; src = cmd; if (flags & TCL_BRACKET_TERM) { termChar = ']'; } else { termChar = 0; } if (termPtr == NULL) { termPtr = &dummy; } *termPtr = src; cmdStart = src; /* * There can be many sub-commands (separated by semi-colons or * newlines) in one command string. This outer loop iterates over * individual commands. */ while (*src != termChar) { iPtr->flags &= ~(ERR_IN_PROGRESS | ERROR_CODE_SET); /* * Skim off leading white space and semi-colons, and skip * comments. */ while (1) { register char c = *src; if ((CHAR_TYPE(c) != TCL_SPACE) && (c != ';') && (c != '\n')) { break; } src += 1; } if (*src == '#') { for (src++; *src != 0; src++) { if (*src == '\n') { src++; break; } } continue; } cmdStart = src; /* * Parse the words of the command, generating the argc and * argv for the command procedure. May have to call * TclParseWords several times, expanding the argv array * between calls. */ pv.next = oldBuffer = pv.buffer; argc = 0; while (1) { int newArgs, maxArgs; char **newArgv; int i; /* * Note: the "- 2" below guarantees that we won't use the * last two argv slots here. One is for a NULL pointer to * mark the end of the list, and the other is to leave room * for inserting the command name "unknown" as the first * argument (see below). */ maxArgs = argSize - argc - 2; result = TclParseWords((Tcl_Interp *) iPtr, src, flags, maxArgs, termPtr, &newArgs, &argv[argc], &pv); src = *termPtr; if (result != TCL_OK) { ellipsis = "..."; goto done; } /* * Careful! Buffer space may have gotten reallocated while * parsing words. If this happened, be sure to update all * of the older argv pointers to refer to the new space. */ if (oldBuffer != pv.buffer) { int i; for (i = 0; i < argc; i++) { argv[i] = pv.buffer + (argv[i] - oldBuffer); } oldBuffer = pv.buffer; } argc += newArgs; if (newArgs < maxArgs) { argv[argc] = (char *) NULL; break; } /* * Args didn't all fit in the current array. Make it bigger. */ argSize *= 2; newArgv = (char **) ckalloc((unsigned) argSize * sizeof(char *)); for (i = 0; i < argc; i++) { newArgv[i] = argv[i]; } if (argv != argStorage) { ckfree((char *) argv); } argv = newArgv; } /* * If this is an empty command (or if we're just parsing * commands without evaluating them), then just skip to the * next command. */ if ((argc == 0) || iPtr->noEval) { continue; } argv[argc] = NULL; /* * Save information for the history module, if needed. */ if (flags & TCL_RECORD_BOUNDS) { iPtr->evalFirst = cmdStart; iPtr->evalLast = src-1; } /* * Find the procedure to execute this command. If there isn't * one, then see if there is a command "unknown". If so, * invoke it instead, passing it the words of the original * command as arguments. */ hPtr = Tcl_FindHashEntry(&iPtr->commandTable, argv[0]); if (hPtr == NULL) { int i; hPtr = Tcl_FindHashEntry(&iPtr->commandTable, "unknown"); if (hPtr == NULL) { Tcl_ResetResult(interp); Tcl_AppendResult(interp, "invalid command name: \"", argv[0], "\"", (char *) NULL); result = TCL_ERROR; goto done; } for (i = argc; i >= 0; i--) { argv[i+1] = argv[i]; } argv[0] = "unknown"; argc++; } cmdPtr = (Command *) Tcl_GetHashValue(hPtr); /* * Call trace procedures, if any. */ for (tracePtr = iPtr->tracePtr; tracePtr != NULL; tracePtr = tracePtr->nextPtr) { char saved; if (tracePtr->level < iPtr->numLevels) { continue; } saved = *src; *src = 0; (*tracePtr->proc)(tracePtr->clientData, interp, iPtr->numLevels, cmdStart, cmdPtr->proc, cmdPtr->clientData, argc, argv); *src = saved; } /* * At long last, invoke the command procedure. Reset the * result to its default empty value first (it could have * gotten changed by earlier commands in the same command * string). */ iPtr->cmdCount++; Tcl_FreeResult(iPtr); iPtr->result = iPtr->resultSpace; iPtr->resultSpace[0] = 0; result = (*cmdPtr->proc)(cmdPtr->clientData, interp, argc, argv); if (result != TCL_OK) { break; } } /* * Free up any extra resources that were allocated. */ done: if (pv.buffer != copyStorage) { ckfree((char *) pv.buffer); } if (argv != argStorage) { ckfree((char *) argv); } iPtr->numLevels--; if (iPtr->numLevels == 0) { if (result == TCL_RETURN) { result = TCL_OK; } if ((result != TCL_OK) && (result != TCL_ERROR)) { Tcl_ResetResult(interp); if (result == TCL_BREAK) { iPtr->result = "invoked \"break\" outside of a loop"; } else if (result == TCL_CONTINUE) { iPtr->result = "invoked \"continue\" outside of a loop"; } else { iPtr->result = iPtr->resultSpace; sprintf(iPtr->resultSpace, "command returned bad code: %d", result); } result = TCL_ERROR; } if (iPtr->flags & DELETED) { Tcl_DeleteInterp(interp); } } /* * If an error occurred, record information about what was being * executed when the error occurred. */ if ((result == TCL_ERROR) && !(iPtr->flags & ERR_ALREADY_LOGGED)) { int numChars; register char *p; /* * Compute the line number where the error occurred. */ iPtr->errorLine = 1; for (p = cmd; p != cmdStart; p++) { if (*p == '\n') { iPtr->errorLine++; } } for ( ; isspace(*p) || (*p == ';'); p++) { if (*p == '\n') { iPtr->errorLine++; } } /* * Figure out how much of the command to print in the error * message (up to a certain number of characters, or up to * the first new-line). */ numChars = src - cmdStart; if (numChars > (NUM_CHARS-50)) { numChars = NUM_CHARS-50; ellipsis = " ..."; } if (!(iPtr->flags & ERR_IN_PROGRESS)) { sprintf(copyStorage, "\n while executing\n\"%.*s%s\"", numChars, cmdStart, ellipsis); } else { sprintf(copyStorage, "\n invoked from within\n\"%.*s%s\"", numChars, cmdStart, ellipsis); } Tcl_AddErrorInfo(interp, copyStorage); iPtr->flags &= ~ERR_ALREADY_LOGGED; } else { iPtr->flags &= ~ERR_ALREADY_LOGGED; } return result; } /* *---------------------------------------------------------------------- * * Tcl_CreateTrace -- * * Arrange for a procedure to be called to trace command execution. * * Results: * The return value is a token for the trace, which may be passed * to Tcl_DeleteTrace to eliminate the trace. * * Side effects: * From now on, proc will be called just before a command procedure * is called to execute a Tcl command. Calls to proc will have the * following form: * * void * proc(clientData, interp, level, command, cmdProc, cmdClientData, * argc, argv) * ClientData clientData; * Tcl_Interp *interp; * int level; * char *command; * int (*cmdProc)(); * ClientData cmdClientData; * int argc; * char **argv; * { * } * * The clientData and interp arguments to proc will be the same * as the corresponding arguments to this procedure. Level gives * the nesting level of command interpretation for this interpreter * (0 corresponds to top level). Command gives the ASCII text of * the raw command, cmdProc and cmdClientData give the procedure that * will be called to process the command and the ClientData value it * will receive, and argc and argv give the arguments to the * command, after any argument parsing and substitution. Proc * does not return a value. * *---------------------------------------------------------------------- */ Tcl_Trace Tcl_CreateTrace(interp, level, proc, clientData) Tcl_Interp *interp; /* Interpreter in which to create the trace. */ int level; /* Only call proc for commands at nesting level * <= level (1 => top level). */ Tcl_CmdTraceProc *proc; /* Procedure to call before executing each * command. */ ClientData clientData; /* Arbitrary one-word value to pass to proc. */ { register Trace *tracePtr; register Interp *iPtr = (Interp *) interp; tracePtr = (Trace *) ckalloc(sizeof(Trace)); tracePtr->level = level; tracePtr->proc = proc; tracePtr->clientData = clientData; tracePtr->nextPtr = iPtr->tracePtr; iPtr->tracePtr = tracePtr; return (Tcl_Trace) tracePtr; } /* *---------------------------------------------------------------------- * * Tcl_DeleteTrace -- * * Remove a trace. * * Results: * None. * * Side effects: * From now on there will be no more calls to the procedure given * in trace. * *---------------------------------------------------------------------- */ void Tcl_DeleteTrace(interp, trace) Tcl_Interp *interp; /* Interpreter that contains trace. */ Tcl_Trace trace; /* Token for trace (returned previously by * Tcl_CreateTrace). */ { register Interp *iPtr = (Interp *) interp; register Trace *tracePtr = (Trace *) trace; register Trace *tracePtr2; if (iPtr->tracePtr == tracePtr) { iPtr->tracePtr = tracePtr->nextPtr; ckfree((char *) tracePtr); } else { for (tracePtr2 = iPtr->tracePtr; tracePtr2 != NULL; tracePtr2 = tracePtr2->nextPtr) { if (tracePtr2->nextPtr == tracePtr) { tracePtr2->nextPtr = tracePtr->nextPtr; ckfree((char *) tracePtr); return; } } } } /* *---------------------------------------------------------------------- * * Tcl_AddErrorInfo -- * * Add information to a message being accumulated that describes * the current error. * * Results: * None. * * Side effects: * The contents of message are added to the "errorInfo" variable. * If Tcl_Eval has been called since the current value of errorInfo * was set, errorInfo is cleared before adding the new message. * *---------------------------------------------------------------------- */ void Tcl_AddErrorInfo(interp, message) Tcl_Interp *interp; /* Interpreter to which error information * pertains. */ char *message; /* Message to record. */ { register Interp *iPtr = (Interp *) interp; /* * If an error is already being logged, then the new errorInfo * is the concatenation of the old info and the new message. * If this is the first piece of info for the error, then the * new errorInfo is the concatenation of the message in * interp->result and the new message. */ if (!(iPtr->flags & ERR_IN_PROGRESS)) { Tcl_SetVar2(interp, "errorInfo", (char *) NULL, interp->result, TCL_GLOBAL_ONLY); iPtr->flags |= ERR_IN_PROGRESS; /* * If the errorCode variable wasn't set by the code that generated * the error, set it to "NONE". */ if (!(iPtr->flags & ERROR_CODE_SET)) { (void) Tcl_SetVar2(interp, "errorCode", (char *) NULL, "NONE", TCL_GLOBAL_ONLY); } } Tcl_SetVar2(interp, "errorInfo", (char *) NULL, message, TCL_GLOBAL_ONLY|TCL_APPEND_VALUE); } /* *---------------------------------------------------------------------- * * Tcl_VarEval -- * * Given a variable number of string arguments, concatenate them * all together and execute the result as a Tcl command. * * Results: * A standard Tcl return result. An error message or other * result may be left in interp->result. * * Side effects: * Depends on what was done by the command. * *---------------------------------------------------------------------- */ int Tcl_VarEval(Tcl_Interp *interp, ...) { va_list argList; #define FIXED_SIZE 200 char fixedSpace[FIXED_SIZE+1]; int spaceAvl, spaceUsed, length; char *string, *cmd; int result; /* * Copy the strings one after the other into a single larger * string. Use stack-allocated space for small commands, but if * the commands gets too large than call ckalloc to create the * space. */ va_start(argList, interp); spaceAvl = FIXED_SIZE; spaceUsed = 0; cmd = fixedSpace; while (1) { string = va_arg(argList, char *); if (string == NULL) { break; } length = strlen(string); if ((spaceUsed + length) > spaceAvl) { char *new; spaceAvl = spaceUsed + length; spaceAvl += spaceAvl/2; new = ckalloc((unsigned) spaceAvl); memcpy((VOID *) new, (VOID *) cmd, spaceUsed); if (cmd != fixedSpace) { ckfree(cmd); } cmd = new; } strcpy(cmd + spaceUsed, string); spaceUsed += length; } va_end(argList); cmd[spaceUsed] = '\0'; result = Tcl_Eval(interp, cmd, 0, (char **) NULL); if (cmd != fixedSpace) { ckfree(cmd); } return result; } /* *---------------------------------------------------------------------- * * Tcl_GlobalEval -- * * Evaluate a command at global level in an interpreter. * * Results: * A standard Tcl result is returned, and interp->result is * modified accordingly. * * Side effects: * The command string is executed in interp, and the execution * is carried out in the variable context of global level (no * procedures active), just as if an "uplevel #0" command were * being executed. * *---------------------------------------------------------------------- */ int Tcl_GlobalEval(interp, command) Tcl_Interp *interp; /* Interpreter in which to evaluate command. */ char *command; /* Command to evaluate. */ { register Interp *iPtr = (Interp *) interp; int result; CallFrame *savedVarFramePtr; savedVarFramePtr = iPtr->varFramePtr; iPtr->varFramePtr = NULL; result = Tcl_Eval(interp, command, 0, (char **) NULL); iPtr->varFramePtr = savedVarFramePtr; return result; } micropolis-activity/src/tcl/tclvar.c0000664000076400007640000017467610724145723020070 0ustar simcitysimcity/* * tclVar.c -- * * This file contains routines that implement Tcl variables * (both scalars and arrays). * * The implementation of arrays is modelled after an initial * implementation by Karl Lehenbauer, Mark Diekhans and * Peter da Silva. * * Copyright 1987-1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/RCS/tclVar.c,v 1.27 92/05/07 09:24:59 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tclint.h" /* * The strings below are used to indicate what went wrong when a * variable access is denied. */ static char *noSuchVar = "no such variable"; static char *isArray = "variable is array"; static char *needArray = "variable isn't array"; static char *noSuchElement = "no such element in array"; static char *traceActive = "trace is active on variable"; /* * Forward references to procedures defined later in this file: */ static char * CallTraces _ANSI_ARGS_((Interp *iPtr, Var *arrayPtr, Tcl_HashEntry *hPtr, char *name1, char *name2, int flags)); static void DeleteSearches _ANSI_ARGS_((Var *arrayVarPtr)); static void DeleteArray _ANSI_ARGS_((Interp *iPtr, char *arrayName, Var *varPtr, int flags)); static Var * NewVar _ANSI_ARGS_((int space)); static ArraySearch * ParseSearchId _ANSI_ARGS_((Tcl_Interp *interp, Var *varPtr, char *varName, char *string)); static void VarErrMsg _ANSI_ARGS_((Tcl_Interp *interp, char *name1, char *name2, char *operation, char *reason)); /* *---------------------------------------------------------------------- * * Tcl_GetVar -- * * Return the value of a Tcl variable. * * Results: * The return value points to the current value of varName. If * the variable is not defined or can't be read because of a clash * in array usage then a NULL pointer is returned and an error * message is left in interp->result if the TCL_LEAVE_ERR_MSG * flag is set. Note: the return value is only valid up until * the next call to Tcl_SetVar or Tcl_SetVar2; if you depend on * the value lasting longer than that, then make yourself a private * copy. * * Side effects: * None. * *---------------------------------------------------------------------- */ char * Tcl_GetVar(interp, varName, flags) Tcl_Interp *interp; /* Command interpreter in which varName is * to be looked up. */ char *varName; /* Name of a variable in interp. */ int flags; /* OR-ed combination of TCL_GLOBAL_ONLY * or TCL_LEAVE_ERR_MSG bits. */ { register char *p; /* * If varName refers to an array (it ends with a parenthesized * element name), then handle it specially. */ for (p = varName; *p != '\0'; p++) { if (*p == '(') { char *result; char *open = p; do { p++; } while (*p != '\0'); p--; if (*p != ')') { goto scalar; } *open = '\0'; *p = '\0'; result = Tcl_GetVar2(interp, varName, open + 1, flags); *open = '('; *p = ')'; #ifdef sgi strcmp("a", "b"); /* XXX SGI compiler optimizer bug */ #endif return result; } } scalar: return Tcl_GetVar2(interp, varName, (char *) NULL, flags); } /* *---------------------------------------------------------------------- * * Tcl_GetVar2 -- * * Return the value of a Tcl variable, given a two-part name * consisting of array name and element within array. * * Results: * The return value points to the current value of the variable * given by name1 and name2. If the specified variable doesn't * exist, or if there is a clash in array usage, then NULL is * returned and a message will be left in interp->result if the * TCL_LEAVE_ERR_MSG flag is set. Note: the return value is * only valid up until the next call to Tcl_SetVar or Tcl_SetVar2; * if you depend on the value lasting longer than that, then make * yourself a private copy. * * Side effects: * None. * *---------------------------------------------------------------------- */ char * Tcl_GetVar2(interp, name1, name2, flags) Tcl_Interp *interp; /* Command interpreter in which variable is * to be looked up. */ char *name1; /* Name of array (if name2 is NULL) or * name of variable. */ char *name2; /* If non-null, gives name of element in * array. */ int flags; /* OR-ed combination of TCL_GLOBAL_ONLY * or TCL_LEAVE_ERR_MSG bits. */ { Tcl_HashEntry *hPtr; Var *varPtr; Interp *iPtr = (Interp *) interp; Var *arrayPtr = NULL; /* * Lookup the first name. */ if ((flags & TCL_GLOBAL_ONLY) || (iPtr->varFramePtr == NULL)) { hPtr = Tcl_FindHashEntry(&iPtr->globalTable, name1); } else { hPtr = Tcl_FindHashEntry(&iPtr->varFramePtr->varTable, name1); } if (hPtr == NULL) { if (flags & TCL_LEAVE_ERR_MSG) { VarErrMsg(interp, name1, name2, "read", noSuchVar); } return NULL; } varPtr = (Var *) Tcl_GetHashValue(hPtr); if (varPtr->flags & VAR_UPVAR) { hPtr = varPtr->value.upvarPtr; varPtr = (Var *) Tcl_GetHashValue(hPtr); } /* * If this is an array reference, then remember the traces on the array * and lookup the element within the array. */ if (name2 != NULL) { if (varPtr->flags & VAR_UNDEFINED) { if (flags & TCL_LEAVE_ERR_MSG) { VarErrMsg(interp, name1, name2, "read", noSuchVar); } return NULL; } else if (!(varPtr->flags & VAR_ARRAY)) { if (flags & TCL_LEAVE_ERR_MSG) { VarErrMsg(interp, name1, name2, "read", needArray); } return NULL; } arrayPtr = varPtr; hPtr = Tcl_FindHashEntry(varPtr->value.tablePtr, name2); if (hPtr == NULL) { if (flags & TCL_LEAVE_ERR_MSG) { VarErrMsg(interp, name1, name2, "read", noSuchElement); } return NULL; } varPtr = (Var *) Tcl_GetHashValue(hPtr); } /* * Invoke any traces that have been set for the variable. */ if ((varPtr->tracePtr != NULL) || ((arrayPtr != NULL) && (arrayPtr->tracePtr != NULL))) { char *msg; msg = CallTraces(iPtr, arrayPtr, hPtr, name1, name2, (flags & TCL_GLOBAL_ONLY) | TCL_TRACE_READS); if (msg != NULL) { VarErrMsg(interp, name1, name2, "read", msg); return NULL; } /* * Watch out! The variable could have gotten re-allocated to * a larger size. Fortunately the hash table entry will still * be around. */ varPtr = (Var *) Tcl_GetHashValue(hPtr); } if (varPtr->flags & (VAR_UNDEFINED|VAR_UPVAR|VAR_ARRAY)) { if (flags & TCL_LEAVE_ERR_MSG) { VarErrMsg(interp, name1, name2, "read", noSuchVar); } return NULL; } return varPtr->value.string; } /* *---------------------------------------------------------------------- * * Tcl_SetVar -- * * Change the value of a variable. * * Results: * Returns a pointer to the malloc'ed string holding the new * value of the variable. The caller should not modify this * string. If the write operation was disallowed then NULL * is returned; if the TCL_LEAVE_ERR_MSG flag is set, then * an explanatory message will be left in interp->result. * * Side effects: * If varName is defined as a local or global variable in interp, * its value is changed to newValue. If varName isn't currently * defined, then a new global variable by that name is created. * *---------------------------------------------------------------------- */ char * Tcl_SetVar(interp, varName, newValue, flags) Tcl_Interp *interp; /* Command interpreter in which varName is * to be looked up. */ char *varName; /* Name of a variable in interp. */ char *newValue; /* New value for varName. */ int flags; /* Various flags that tell how to set value: * any of TCL_GLOBAL_ONLY, TCL_APPEND_VALUE, * TCL_LIST_ELEMENT, TCL_NO_SPACE, or * TCL_LEAVE_ERR_MSG. */ { register char *p; /* * If varName refers to an array (it ends with a parenthesized * element name), then handle it specially. */ for (p = varName; *p != '\0'; p++) { if (*p == '(') { char *result; char *open = p; do { p++; } while (*p != '\0'); p--; if (*p != ')') { goto scalar; } *open = '\0'; *p = '\0'; result = Tcl_SetVar2(interp, varName, open+1, newValue, flags); *open = '('; *p = ')'; return result; } } scalar: return Tcl_SetVar2(interp, varName, (char *) NULL, newValue, flags); } /* *---------------------------------------------------------------------- * * Tcl_SetVar2 -- * * Given a two-part variable name, which may refer either to a * scalar variable or an element of an array, change the value * of the variable. If the named scalar or array or element * doesn't exist then create one. * * Results: * Returns a pointer to the malloc'ed string holding the new * value of the variable. The caller should not modify this * string. If the write operation was disallowed because an * array was expected but not found (or vice versa), then NULL * is returned; if the TCL_LEAVE_ERR_MSG flag is set, then * an explanatory message will be left in interp->result. * * Side effects: * The value of the given variable is set. If either the array * or the entry didn't exist then a new one is created. * *---------------------------------------------------------------------- */ char * Tcl_SetVar2(interp, name1, name2, newValue, flags) Tcl_Interp *interp; /* Command interpreter in which variable is * to be looked up. */ char *name1; /* If name2 is NULL, this is name of scalar * variable. Otherwise it is name of array. */ char *name2; /* Name of an element within array, or NULL. */ char *newValue; /* New value for variable. */ int flags; /* Various flags that tell how to set value: * any of TCL_GLOBAL_ONLY, TCL_APPEND_VALUE, * TCL_LIST_ELEMENT, and TCL_NO_SPACE, or * TCL_LEAVE_ERR_MSG . */ { Tcl_HashEntry *hPtr; register Var *varPtr = NULL; /* Initial value only used to stop compiler * from complaining; not really needed. */ register Interp *iPtr = (Interp *) interp; int length, new, listFlags; Var *arrayPtr = NULL; /* * Lookup the first name. */ if ((flags & TCL_GLOBAL_ONLY) || (iPtr->varFramePtr == NULL)) { hPtr = Tcl_CreateHashEntry(&iPtr->globalTable, name1, &new); } else { hPtr = Tcl_CreateHashEntry(&iPtr->varFramePtr->varTable, name1, &new); } if (!new) { varPtr = (Var *) Tcl_GetHashValue(hPtr); if (varPtr->flags & VAR_UPVAR) { hPtr = varPtr->value.upvarPtr; varPtr = (Var *) Tcl_GetHashValue(hPtr); } } /* * If this is an array reference, then create a new array (if * needed), remember any traces on the array, and lookup the * element within the array. */ if (name2 != NULL) { if (new) { varPtr = NewVar(0); Tcl_SetHashValue(hPtr, varPtr); varPtr->flags = VAR_ARRAY; varPtr->value.tablePtr = (Tcl_HashTable *) ckalloc(sizeof(Tcl_HashTable)); Tcl_InitHashTable(varPtr->value.tablePtr, TCL_STRING_KEYS); } else { if (varPtr->flags & VAR_UNDEFINED) { varPtr->flags = VAR_ARRAY; varPtr->value.tablePtr = (Tcl_HashTable *) ckalloc(sizeof(Tcl_HashTable)); Tcl_InitHashTable(varPtr->value.tablePtr, TCL_STRING_KEYS); } else if (!(varPtr->flags & VAR_ARRAY)) { if (flags & TCL_LEAVE_ERR_MSG) { VarErrMsg(interp, name1, name2, "set", needArray); } return NULL; } arrayPtr = varPtr; } hPtr = Tcl_CreateHashEntry(varPtr->value.tablePtr, name2, &new); } /* * Compute how many bytes will be needed for newValue (leave space * for a separating space between list elements). */ if (flags & TCL_LIST_ELEMENT) { length = Tcl_ScanElement(newValue, &listFlags) + 1; } else { length = strlen(newValue); } /* * If the variable doesn't exist then create a new one. If it * does exist then clear its current value unless this is an * append operation. */ if (new) { varPtr = NewVar(length); Tcl_SetHashValue(hPtr, varPtr); if ((arrayPtr != NULL) && (arrayPtr->searchPtr != NULL)) { DeleteSearches(arrayPtr); } } else { varPtr = (Var *) Tcl_GetHashValue(hPtr); if (varPtr->flags & VAR_ARRAY) { if (flags & TCL_LEAVE_ERR_MSG) { VarErrMsg(interp, name1, name2, "set", isArray); } return NULL; } if (!(flags & TCL_APPEND_VALUE) || (varPtr->flags & VAR_UNDEFINED)) { varPtr->valueLength = 0; } } /* * Make sure there's enough space to hold the variable's * new value. If not, enlarge the variable's space. */ if ((length + varPtr->valueLength) >= varPtr->valueSpace) { Var *newVarPtr; int newSize; newSize = 2*varPtr->valueSpace; if (newSize <= (length + varPtr->valueLength)) { newSize += length; } newVarPtr = NewVar(newSize); newVarPtr->valueLength = varPtr->valueLength; newVarPtr->upvarUses = varPtr->upvarUses; newVarPtr->tracePtr = varPtr->tracePtr; strcpy(newVarPtr->value.string, varPtr->value.string); Tcl_SetHashValue(hPtr, newVarPtr); ckfree((char *) varPtr); varPtr = newVarPtr; } /* * Append the new value to the variable, either as a list * element or as a string. */ if (flags & TCL_LIST_ELEMENT) { if ((varPtr->valueLength > 0) && !(flags & TCL_NO_SPACE)) { varPtr->value.string[varPtr->valueLength] = ' '; varPtr->valueLength++; } varPtr->valueLength += Tcl_ConvertElement(newValue, varPtr->value.string + varPtr->valueLength, listFlags); varPtr->value.string[varPtr->valueLength] = 0; } else { strcpy(varPtr->value.string + varPtr->valueLength, newValue); varPtr->valueLength += length; } varPtr->flags &= ~VAR_UNDEFINED; /* * Invoke any write traces for the variable. */ if ((varPtr->tracePtr != NULL) || ((arrayPtr != NULL) && (arrayPtr->tracePtr != NULL))) { char *msg; msg = CallTraces(iPtr, arrayPtr, hPtr, name1, name2, (flags & TCL_GLOBAL_ONLY) | TCL_TRACE_WRITES); if (msg != NULL) { VarErrMsg(interp, name1, name2, "set", msg); return NULL; } /* * Watch out! The variable could have gotten re-allocated to * a larger size. Fortunately the hash table entry will still * be around. */ varPtr = (Var *) Tcl_GetHashValue(hPtr); } return varPtr->value.string; } /* *---------------------------------------------------------------------- * * Tcl_UnsetVar -- * * Delete a variable, so that it may not be accessed anymore. * * Results: * Returns 0 if the variable was successfully deleted, -1 * if the variable can't be unset. In the event of an error, * if the TCL_LEAVE_ERR_MSG flag is set then an error message * is left in interp->result. * * Side effects: * If varName is defined as a local or global variable in interp, * it is deleted. * *---------------------------------------------------------------------- */ int Tcl_UnsetVar(interp, varName, flags) Tcl_Interp *interp; /* Command interpreter in which varName is * to be looked up. */ char *varName; /* Name of a variable in interp. May be * either a scalar name or an array name * or an element in an array. */ int flags; /* OR-ed combination of any of * TCL_GLOBAL_ONLY or TCL_LEAVE_ERR_MSG. */ { register char *p; int result; /* * Figure out whether this is an array reference, then call * Tcl_UnsetVar2 to do all the real work. */ for (p = varName; *p != '\0'; p++) { if (*p == '(') { char *open = p; do { p++; } while (*p != '\0'); p--; if (*p != ')') { goto scalar; } *open = '\0'; *p = '\0'; result = Tcl_UnsetVar2(interp, varName, open+1, flags); *open = '('; *p = ')'; return result; } } scalar: return Tcl_UnsetVar2(interp, varName, (char *) NULL, flags); } /* *---------------------------------------------------------------------- * * Tcl_UnsetVar2 -- * * Delete a variable, given a 2-part name. * * Results: * Returns 0 if the variable was successfully deleted, -1 * if the variable can't be unset. In the event of an error, * if the TCL_LEAVE_ERR_MSG flag is set then an error message * is left in interp->result. * * Side effects: * If name1 and name2 indicate a local or global variable in interp, * it is deleted. If name1 is an array name and name2 is NULL, then * the whole array is deleted. * *---------------------------------------------------------------------- */ int Tcl_UnsetVar2(interp, name1, name2, flags) Tcl_Interp *interp; /* Command interpreter in which varName is * to be looked up. */ char *name1; /* Name of variable or array. */ char *name2; /* Name of element within array or NULL. */ int flags; /* OR-ed combination of any of * TCL_GLOBAL_ONLY or TCL_LEAVE_ERR_MSG. */ { Tcl_HashEntry *hPtr, dummyEntry; Var *varPtr, dummyVar; Interp *iPtr = (Interp *) interp; Var *arrayPtr = NULL; if ((flags & TCL_GLOBAL_ONLY) || (iPtr->varFramePtr == NULL)) { hPtr = Tcl_FindHashEntry(&iPtr->globalTable, name1); } else { hPtr = Tcl_FindHashEntry(&iPtr->varFramePtr->varTable, name1); } if (hPtr == NULL) { if (flags & TCL_LEAVE_ERR_MSG) { VarErrMsg(interp, name1, name2, "unset", noSuchVar); } return -1; } varPtr = (Var *) Tcl_GetHashValue(hPtr); /* * For global variables referenced in procedures, leave the procedure's * reference variable in place, but unset the global variable. Can't * decrement the actual variable's use count, since we didn't delete * the reference variable. */ if (varPtr->flags & VAR_UPVAR) { hPtr = varPtr->value.upvarPtr; varPtr = (Var *) Tcl_GetHashValue(hPtr); } /* * If the variable being deleted is an element of an array, then * remember trace procedures on the overall array and find the * element to delete. */ if (name2 != NULL) { if (!(varPtr->flags & VAR_ARRAY)) { if (flags & TCL_LEAVE_ERR_MSG) { VarErrMsg(interp, name1, name2, "unset", needArray); } return -1; } if (varPtr->searchPtr != NULL) { DeleteSearches(varPtr); } arrayPtr = varPtr; hPtr = Tcl_FindHashEntry(varPtr->value.tablePtr, name2); if (hPtr == NULL) { if (flags & TCL_LEAVE_ERR_MSG) { VarErrMsg(interp, name1, name2, "unset", noSuchElement); } return -1; } varPtr = (Var *) Tcl_GetHashValue(hPtr); } /* * If there is a trace active on this variable or if the variable * is already being deleted then don't delete the variable: it * isn't safe, since there are procedures higher up on the stack * that will use pointers to the variable. Also don't delete an * array if there are traces active on any of its elements. */ if (varPtr->flags & (VAR_TRACE_ACTIVE|VAR_ELEMENT_ACTIVE)) { if (flags & TCL_LEAVE_ERR_MSG) { VarErrMsg(interp, name1, name2, "unset", traceActive); } return -1; } /* * The code below is tricky, because of the possibility that * a trace procedure might try to access a variable being * deleted. To handle this situation gracefully, copy the * contents of the variable and its hash table entry to * dummy variables, then clean up the actual variable so that * it's been completely deleted before the traces are called. * Then call the traces, and finally clean up the variable's * storage using the dummy copies. */ dummyVar = *varPtr; Tcl_SetHashValue(&dummyEntry, &dummyVar); if (varPtr->upvarUses == 0) { Tcl_DeleteHashEntry(hPtr); ckfree((char *) varPtr); } else { varPtr->flags = VAR_UNDEFINED; varPtr->tracePtr = NULL; } /* * Call trace procedures for the variable being deleted and delete * its traces. */ if ((dummyVar.tracePtr != NULL) || ((arrayPtr != NULL) && (arrayPtr->tracePtr != NULL))) { (void) CallTraces(iPtr, arrayPtr, &dummyEntry, name1, name2, (flags & TCL_GLOBAL_ONLY) | TCL_TRACE_UNSETS); while (dummyVar.tracePtr != NULL) { VarTrace *tracePtr = dummyVar.tracePtr; dummyVar.tracePtr = tracePtr->nextPtr; ckfree((char *) tracePtr); } } /* * If the variable is an array, delete all of its elements. This * must be done after calling the traces on the array, above (that's * the way traces are defined). */ if (dummyVar.flags & VAR_ARRAY) { DeleteArray(iPtr, name1, &dummyVar, (flags & TCL_GLOBAL_ONLY) | TCL_TRACE_UNSETS); } if (dummyVar.flags & VAR_UNDEFINED) { if (flags & TCL_LEAVE_ERR_MSG) { VarErrMsg(interp, name1, name2, "unset", (name2 == NULL) ? noSuchVar : noSuchElement); } return -1; } return 0; } /* *---------------------------------------------------------------------- * * Tcl_TraceVar -- * * Arrange for reads and/or writes to a variable to cause a * procedure to be invoked, which can monitor the operations * and/or change their actions. * * Results: * A standard Tcl return value. * * Side effects: * A trace is set up on the variable given by varName, such that * future references to the variable will be intermediated by * proc. See the manual entry for complete details on the calling * sequence for proc. * *---------------------------------------------------------------------- */ int Tcl_TraceVar(interp, varName, flags, proc, clientData) Tcl_Interp *interp; /* Interpreter in which variable is * to be traced. */ char *varName; /* Name of variable; may end with "(index)" * to signify an array reference. */ int flags; /* OR-ed collection of bits, including any * of TCL_TRACE_READS, TCL_TRACE_WRITES, * TCL_TRACE_UNSETS, and TCL_GLOBAL_ONLY. */ Tcl_VarTraceProc *proc; /* Procedure to call when specified ops are * invoked upon varName. */ ClientData clientData; /* Arbitrary argument to pass to proc. */ { register char *p; /* * If varName refers to an array (it ends with a parenthesized * element name), then handle it specially. */ for (p = varName; *p != '\0'; p++) { if (*p == '(') { int result; char *open = p; do { p++; } while (*p != '\0'); p--; if (*p != ')') { goto scalar; } *open = '\0'; *p = '\0'; result = Tcl_TraceVar2(interp, varName, open+1, flags, proc, clientData); *open = '('; *p = ')'; return result; } } scalar: return Tcl_TraceVar2(interp, varName, (char *) NULL, flags, proc, clientData); } /* *---------------------------------------------------------------------- * * Tcl_TraceVar2 -- * * Arrange for reads and/or writes to a variable to cause a * procedure to be invoked, which can monitor the operations * and/or change their actions. * * Results: * A standard Tcl return value. * * Side effects: * A trace is set up on the variable given by name1 and name2, such * that future references to the variable will be intermediated by * proc. See the manual entry for complete details on the calling * sequence for proc. * *---------------------------------------------------------------------- */ int Tcl_TraceVar2(interp, name1, name2, flags, proc, clientData) Tcl_Interp *interp; /* Interpreter in which variable is * to be traced. */ char *name1; /* Name of scalar variable or array. */ char *name2; /* Name of element within array; NULL means * trace applies to scalar variable or array * as-a-whole. */ int flags; /* OR-ed collection of bits, including any * of TCL_TRACE_READS, TCL_TRACE_WRITES, * TCL_TRACE_UNSETS, and TCL_GLOBAL_ONLY. */ Tcl_VarTraceProc *proc; /* Procedure to call when specified ops are * invoked upon varName. */ ClientData clientData; /* Arbitrary argument to pass to proc. */ { Tcl_HashEntry *hPtr; Var *varPtr = NULL; /* Initial value only used to stop compiler * from complaining; not really needed. */ Interp *iPtr = (Interp *) interp; register VarTrace *tracePtr; int new; /* * Locate the variable, making a new (undefined) one if necessary. */ if ((flags & TCL_GLOBAL_ONLY) || (iPtr->varFramePtr == NULL)) { hPtr = Tcl_CreateHashEntry(&iPtr->globalTable, name1, &new); } else { hPtr = Tcl_CreateHashEntry(&iPtr->varFramePtr->varTable, name1, &new); } if (!new) { varPtr = (Var *) Tcl_GetHashValue(hPtr); if (varPtr->flags & VAR_UPVAR) { hPtr = varPtr->value.upvarPtr; varPtr = (Var *) Tcl_GetHashValue(hPtr); } } /* * If the trace is to be on an array element, make sure that the * variable is an array variable. If the variable doesn't exist * then define it as an empty array. Then find the specific * array element. */ if (name2 != NULL) { if (new) { varPtr = NewVar(0); Tcl_SetHashValue(hPtr, varPtr); varPtr->flags = VAR_ARRAY; varPtr->value.tablePtr = (Tcl_HashTable *) ckalloc(sizeof(Tcl_HashTable)); Tcl_InitHashTable(varPtr->value.tablePtr, TCL_STRING_KEYS); } else { if (varPtr->flags & VAR_UNDEFINED) { varPtr->flags = VAR_ARRAY; varPtr->value.tablePtr = (Tcl_HashTable *) ckalloc(sizeof(Tcl_HashTable)); Tcl_InitHashTable(varPtr->value.tablePtr, TCL_STRING_KEYS); } else if (!(varPtr->flags & VAR_ARRAY)) { iPtr->result = needArray; return TCL_ERROR; } } hPtr = Tcl_CreateHashEntry(varPtr->value.tablePtr, name2, &new); } if (new) { if ((name2 != NULL) && (varPtr->searchPtr != NULL)) { DeleteSearches(varPtr); } varPtr = NewVar(0); varPtr->flags = VAR_UNDEFINED; Tcl_SetHashValue(hPtr, varPtr); } else { varPtr = (Var *) Tcl_GetHashValue(hPtr); } /* * Set up trace information. */ tracePtr = (VarTrace *) ckalloc(sizeof(VarTrace)); tracePtr->traceProc = proc; tracePtr->clientData = clientData; tracePtr->flags = flags & (TCL_TRACE_READS|TCL_TRACE_WRITES|TCL_TRACE_UNSETS); tracePtr->nextPtr = varPtr->tracePtr; varPtr->tracePtr = tracePtr; return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_UntraceVar -- * * Remove a previously-created trace for a variable. * * Results: * None. * * Side effects: * If there exists a trace for the variable given by varName * with the given flags, proc, and clientData, then that trace * is removed. * *---------------------------------------------------------------------- */ void Tcl_UntraceVar(interp, varName, flags, proc, clientData) Tcl_Interp *interp; /* Interpreter containing traced variable. */ char *varName; /* Name of variable; may end with "(index)" * to signify an array reference. */ int flags; /* OR-ed collection of bits describing * current trace, including any of * TCL_TRACE_READS, TCL_TRACE_WRITES, * TCL_TRACE_UNSETS, and TCL_GLOBAL_ONLY. */ Tcl_VarTraceProc *proc; /* Procedure assocated with trace. */ ClientData clientData; /* Arbitrary argument to pass to proc. */ { register char *p; /* * If varName refers to an array (it ends with a parenthesized * element name), then handle it specially. */ for (p = varName; *p != '\0'; p++) { if (*p == '(') { char *open = p; do { p++; } while (*p != '\0'); p--; if (*p != ')') { goto scalar; } *open = '\0'; *p = '\0'; Tcl_UntraceVar2(interp, varName, open+1, flags, proc, clientData); *open = '('; *p = ')'; return; } } scalar: Tcl_UntraceVar2(interp, varName, (char *) NULL, flags, proc, clientData); } /* *---------------------------------------------------------------------- * * Tcl_UntraceVar2 -- * * Remove a previously-created trace for a variable. * * Results: * None. * * Side effects: * If there exists a trace for the variable given by name1 * and name2 with the given flags, proc, and clientData, then * that trace is removed. * *---------------------------------------------------------------------- */ void Tcl_UntraceVar2(interp, name1, name2, flags, proc, clientData) Tcl_Interp *interp; /* Interpreter containing traced variable. */ char *name1; /* Name of variable or array. */ char *name2; /* Name of element within array; NULL means * trace applies to scalar variable or array * as-a-whole. */ int flags; /* OR-ed collection of bits describing * current trace, including any of * TCL_TRACE_READS, TCL_TRACE_WRITES, * TCL_TRACE_UNSETS, and TCL_GLOBAL_ONLY. */ Tcl_VarTraceProc *proc; /* Procedure assocated with trace. */ ClientData clientData; /* Arbitrary argument to pass to proc. */ { register VarTrace *tracePtr; VarTrace *prevPtr; Var *varPtr; Interp *iPtr = (Interp *) interp; Tcl_HashEntry *hPtr; ActiveVarTrace *activePtr; /* * First, lookup the variable. */ if ((flags & TCL_GLOBAL_ONLY) || (iPtr->varFramePtr == NULL)) { hPtr = Tcl_FindHashEntry(&iPtr->globalTable, name1); } else { hPtr = Tcl_FindHashEntry(&iPtr->varFramePtr->varTable, name1); } if (hPtr == NULL) { return; } varPtr = (Var *) Tcl_GetHashValue(hPtr); if (varPtr->flags & VAR_UPVAR) { hPtr = varPtr->value.upvarPtr; varPtr = (Var *) Tcl_GetHashValue(hPtr); } if (name2 != NULL) { if (!(varPtr->flags & VAR_ARRAY)) { return; } hPtr = Tcl_FindHashEntry(varPtr->value.tablePtr, name2); if (hPtr == NULL) { return; } varPtr = (Var *) Tcl_GetHashValue(hPtr); } flags &= (TCL_TRACE_READS | TCL_TRACE_WRITES | TCL_TRACE_UNSETS); for (tracePtr = varPtr->tracePtr, prevPtr = NULL; ; prevPtr = tracePtr, tracePtr = tracePtr->nextPtr) { if (tracePtr == NULL) { return; } if ((tracePtr->traceProc == proc) && (tracePtr->flags == flags) && (tracePtr->clientData == clientData)) { break; } } /* * The code below makes it possible to delete traces while traces * are active: it makes sure that the deleted trace won't be * processed by CallTraces. */ for (activePtr = iPtr->activeTracePtr; activePtr != NULL; activePtr = activePtr->nextPtr) { if (activePtr->nextTracePtr == tracePtr) { activePtr->nextTracePtr = tracePtr->nextPtr; } } if (prevPtr == NULL) { varPtr->tracePtr = tracePtr->nextPtr; } else { prevPtr->nextPtr = tracePtr->nextPtr; } ckfree((char *) tracePtr); } /* *---------------------------------------------------------------------- * * Tcl_VarTraceInfo -- * * Return the clientData value associated with a trace on a * variable. This procedure can also be used to step through * all of the traces on a particular variable that have the * same trace procedure. * * Results: * The return value is the clientData value associated with * a trace on the given variable. Information will only be * returned for a trace with proc as trace procedure. If * the clientData argument is NULL then the first such trace is * returned; otherwise, the next relevant one after the one * given by clientData will be returned. If the variable * doesn't exist, or if there are no (more) traces for it, * then NULL is returned. * * Side effects: * None. * *---------------------------------------------------------------------- */ ClientData Tcl_VarTraceInfo(interp, varName, flags, proc, prevClientData) Tcl_Interp *interp; /* Interpreter containing variable. */ char *varName; /* Name of variable; may end with "(index)" * to signify an array reference. */ int flags; /* 0 or TCL_GLOBAL_ONLY. */ Tcl_VarTraceProc *proc; /* Procedure assocated with trace. */ ClientData prevClientData; /* If non-NULL, gives last value returned * by this procedure, so this call will * return the next trace after that one. * If NULL, this call will return the * first trace. */ { register char *p; /* * If varName refers to an array (it ends with a parenthesized * element name), then handle it specially. */ for (p = varName; *p != '\0'; p++) { if (*p == '(') { ClientData result; char *open = p; do { p++; } while (*p != '\0'); p--; if (*p != ')') { goto scalar; } *open = '\0'; *p = '\0'; result = Tcl_VarTraceInfo2(interp, varName, open+1, flags, proc, prevClientData); *open = '('; *p = ')'; return result; } } scalar: return Tcl_VarTraceInfo2(interp, varName, (char *) NULL, flags, proc, prevClientData); } /* *---------------------------------------------------------------------- * * Tcl_VarTraceInfo2 -- * * Same as Tcl_VarTraceInfo, except takes name in two pieces * instead of one. * * Results: * Same as Tcl_VarTraceInfo. * * Side effects: * None. * *---------------------------------------------------------------------- */ ClientData Tcl_VarTraceInfo2(interp, name1, name2, flags, proc, prevClientData) Tcl_Interp *interp; /* Interpreter containing variable. */ char *name1; /* Name of variable or array. */ char *name2; /* Name of element within array; NULL means * trace applies to scalar variable or array * as-a-whole. */ int flags; /* 0 or TCL_GLOBAL_ONLY. */ Tcl_VarTraceProc *proc; /* Procedure assocated with trace. */ ClientData prevClientData; /* If non-NULL, gives last value returned * by this procedure, so this call will * return the next trace after that one. * If NULL, this call will return the * first trace. */ { register VarTrace *tracePtr; Var *varPtr; Interp *iPtr = (Interp *) interp; Tcl_HashEntry *hPtr; /* * First, lookup the variable. */ if ((flags & TCL_GLOBAL_ONLY) || (iPtr->varFramePtr == NULL)) { hPtr = Tcl_FindHashEntry(&iPtr->globalTable, name1); } else { hPtr = Tcl_FindHashEntry(&iPtr->varFramePtr->varTable, name1); } if (hPtr == NULL) { return NULL; } varPtr = (Var *) Tcl_GetHashValue(hPtr); if (varPtr->flags & VAR_UPVAR) { hPtr = varPtr->value.upvarPtr; varPtr = (Var *) Tcl_GetHashValue(hPtr); } if (name2 != NULL) { if (!(varPtr->flags & VAR_ARRAY)) { return NULL; } hPtr = Tcl_FindHashEntry(varPtr->value.tablePtr, name2); if (hPtr == NULL) { return NULL; } varPtr = (Var *) Tcl_GetHashValue(hPtr); } /* * Find the relevant trace, if any, and return its clientData. */ tracePtr = varPtr->tracePtr; if (prevClientData != NULL) { for ( ; tracePtr != NULL; tracePtr = tracePtr->nextPtr) { if ((tracePtr->clientData == prevClientData) && (tracePtr->traceProc == proc)) { tracePtr = tracePtr->nextPtr; break; } } } for ( ; tracePtr != NULL; tracePtr = tracePtr->nextPtr) { if (tracePtr->traceProc == proc) { return tracePtr->clientData; } } return NULL; } /* *---------------------------------------------------------------------- * * Tcl_SetCmd -- * * This procedure is invoked to process the "set" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result value. * * Side effects: * A variable's value may be changed. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_SetCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ register Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { if (argc == 2) { char *value; value = Tcl_GetVar(interp, argv[1], TCL_LEAVE_ERR_MSG); if (value == NULL) { return TCL_ERROR; } interp->result = value; return TCL_OK; } else if (argc == 3) { char *result; result = Tcl_SetVar(interp, argv[1], argv[2], TCL_LEAVE_ERR_MSG); if (result == NULL) { return TCL_ERROR; } interp->result = result; return TCL_OK; } else { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " varName ?newValue?\"", (char *) NULL); return TCL_ERROR; } } /* *---------------------------------------------------------------------- * * Tcl_UnsetCmd -- * * This procedure is invoked to process the "unset" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result value. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_UnsetCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ register Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int i; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " varName ?varName ...?\"", (char *) NULL); return TCL_ERROR; } for (i = 1; i < argc; i++) { if (Tcl_UnsetVar(interp, argv[i], TCL_LEAVE_ERR_MSG) != 0) { return TCL_ERROR; } } return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_AppendCmd -- * * This procedure is invoked to process the "append" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result value. * * Side effects: * A variable's value may be changed. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_AppendCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ register Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int i; char *result = NULL; /* (Initialization only needed to keep * the compiler from complaining) */ if (argc < 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " varName value ?value ...?\"", (char *) NULL); return TCL_ERROR; } for (i = 2; i < argc; i++) { result = Tcl_SetVar(interp, argv[1], argv[i], TCL_APPEND_VALUE|TCL_LEAVE_ERR_MSG); if (result == NULL) { return TCL_ERROR; } } interp->result = result; return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_LappendCmd -- * * This procedure is invoked to process the "lappend" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result value. * * Side effects: * A variable's value may be changed. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_LappendCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ register Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int i; char *result = NULL; /* (Initialization only needed to keep * the compiler from complaining) */ if (argc < 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " varName value ?value ...?\"", (char *) NULL); return TCL_ERROR; } for (i = 2; i < argc; i++) { result = Tcl_SetVar(interp, argv[1], argv[i], TCL_APPEND_VALUE|TCL_LIST_ELEMENT|TCL_LEAVE_ERR_MSG); if (result == NULL) { return TCL_ERROR; } } interp->result = result; return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_ArrayCmd -- * * This procedure is invoked to process the "array" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result value. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_ArrayCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ register Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int length; char c; Var *varPtr; Tcl_HashEntry *hPtr; Interp *iPtr = (Interp *) interp; if (argc < 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " option arrayName ?arg ...?\"", (char *) NULL); return TCL_ERROR; } /* * Locate the array variable (and it better be an array). */ if (iPtr->varFramePtr == NULL) { hPtr = Tcl_FindHashEntry(&iPtr->globalTable, argv[2]); } else { hPtr = Tcl_FindHashEntry(&iPtr->varFramePtr->varTable, argv[2]); } if (hPtr == NULL) { notArray: Tcl_AppendResult(interp, "\"", argv[2], "\" isn't an array", (char *) NULL); return TCL_ERROR; } varPtr = (Var *) Tcl_GetHashValue(hPtr); if (varPtr->flags & VAR_UPVAR) { varPtr = (Var *) Tcl_GetHashValue(varPtr->value.upvarPtr); } if (!(varPtr->flags & VAR_ARRAY)) { goto notArray; } /* * Dispatch based on the option. */ c = argv[1][0]; length = strlen(argv[1]); if ((c == 'a') && (strncmp(argv[1], "anymore", length) == 0)) { ArraySearch *searchPtr; if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " anymore arrayName searchId\"", (char *) NULL); return TCL_ERROR; } searchPtr = ParseSearchId(interp, varPtr, argv[2], argv[3]); if (searchPtr == NULL) { return TCL_ERROR; } while (1) { Var *varPtr2; if (searchPtr->nextEntry != NULL) { varPtr2 = (Var *) Tcl_GetHashValue(searchPtr->nextEntry); if (!(varPtr2->flags & VAR_UNDEFINED)) { break; } } searchPtr->nextEntry = Tcl_NextHashEntry(&searchPtr->search); if (searchPtr->nextEntry == NULL) { interp->result = "0"; return TCL_OK; } } interp->result = "1"; return TCL_OK; } else if ((c == 'd') && (strncmp(argv[1], "donesearch", length) == 0)) { ArraySearch *searchPtr, *prevPtr; if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " donesearch arrayName searchId\"", (char *) NULL); return TCL_ERROR; } searchPtr = ParseSearchId(interp, varPtr, argv[2], argv[3]); if (searchPtr == NULL) { return TCL_ERROR; } if (varPtr->searchPtr == searchPtr) { varPtr->searchPtr = searchPtr->nextPtr; } else { for (prevPtr = varPtr->searchPtr; ; prevPtr = prevPtr->nextPtr) { if (prevPtr->nextPtr == searchPtr) { prevPtr->nextPtr = searchPtr->nextPtr; break; } } } ckfree((char *) searchPtr); } else if ((c == 'n') && (strncmp(argv[1], "names", length) == 0) && (length >= 2)) { Tcl_HashSearch search; Var *varPtr2; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " names arrayName\"", (char *) NULL); return TCL_ERROR; } for (hPtr = Tcl_FirstHashEntry(varPtr->value.tablePtr, &search); hPtr != NULL; hPtr = Tcl_NextHashEntry(&search)) { varPtr2 = (Var *) Tcl_GetHashValue(hPtr); if (varPtr2->flags & VAR_UNDEFINED) { continue; } Tcl_AppendElement(interp, Tcl_GetHashKey(varPtr->value.tablePtr, hPtr), 0); } } else if ((c == 'n') && (strncmp(argv[1], "nextelement", length) == 0) && (length >= 2)) { ArraySearch *searchPtr; Tcl_HashEntry *hPtr; if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " nextelement arrayName searchId\"", (char *) NULL); return TCL_ERROR; } searchPtr = ParseSearchId(interp, varPtr, argv[2], argv[3]); if (searchPtr == NULL) { return TCL_ERROR; } while (1) { Var *varPtr2; hPtr = searchPtr->nextEntry; if (hPtr == NULL) { hPtr = Tcl_NextHashEntry(&searchPtr->search); if (hPtr == NULL) { return TCL_OK; } } else { searchPtr->nextEntry = NULL; } varPtr2 = (Var *) Tcl_GetHashValue(hPtr); if (!(varPtr2->flags & VAR_UNDEFINED)) { break; } } interp->result = Tcl_GetHashKey(varPtr->value.tablePtr, hPtr); } else if ((c == 's') && (strncmp(argv[1], "size", length) == 0) && (length >= 2)) { Tcl_HashSearch search; Var *varPtr2; int size; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " size arrayName\"", (char *) NULL); return TCL_ERROR; } size = 0; for (hPtr = Tcl_FirstHashEntry(varPtr->value.tablePtr, &search); hPtr != NULL; hPtr = Tcl_NextHashEntry(&search)) { varPtr2 = (Var *) Tcl_GetHashValue(hPtr); if (varPtr2->flags & VAR_UNDEFINED) { continue; } size++; } sprintf(interp->result, "%d", size); } else if ((c == 's') && (strncmp(argv[1], "startsearch", length) == 0) && (length >= 2)) { ArraySearch *searchPtr; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " startsearch arrayName\"", (char *) NULL); return TCL_ERROR; } searchPtr = (ArraySearch *) ckalloc(sizeof(ArraySearch)); if (varPtr->searchPtr == NULL) { searchPtr->id = 1; Tcl_AppendResult(interp, "s-1-", argv[2], (char *) NULL); } else { char string[20]; searchPtr->id = varPtr->searchPtr->id + 1; sprintf(string, "%d", searchPtr->id); Tcl_AppendResult(interp, "s-", string, "-", argv[2], (char *) NULL); } searchPtr->varPtr = varPtr; searchPtr->nextEntry = Tcl_FirstHashEntry(varPtr->value.tablePtr, &searchPtr->search); searchPtr->nextPtr = varPtr->searchPtr; varPtr->searchPtr = searchPtr; } else { Tcl_AppendResult(interp, "bad option \"", argv[1], "\": should be anymore, donesearch, names, nextelement, ", "size, or startsearch", (char *) NULL); return TCL_ERROR; } return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_GlobalCmd -- * * This procedure is invoked to process the "global" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result value. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_GlobalCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { Var *varPtr, *gVarPtr; register Interp *iPtr = (Interp *) interp; Tcl_HashEntry *hPtr, *hPtr2; int new; if (argc < 2) { Tcl_AppendResult((Tcl_Interp *) iPtr, "wrong # args: should be \"", argv[0], " varName ?varName ...?\"", (char *) NULL); return TCL_ERROR; } if (iPtr->varFramePtr == NULL) { return TCL_OK; } for (argc--, argv++; argc > 0; argc--, argv++) { hPtr = Tcl_CreateHashEntry(&iPtr->globalTable, *argv, &new); if (new) { gVarPtr = NewVar(0); gVarPtr->flags |= VAR_UNDEFINED; Tcl_SetHashValue(hPtr, gVarPtr); } else { gVarPtr = (Var *) Tcl_GetHashValue(hPtr); } hPtr2 = Tcl_CreateHashEntry(&iPtr->varFramePtr->varTable, *argv, &new); if (!new) { Var *varPtr; varPtr = (Var *) Tcl_GetHashValue(hPtr2); if (varPtr->flags & VAR_UPVAR) { continue; } else { Tcl_AppendResult((Tcl_Interp *) iPtr, "variable \"", *argv, "\" already exists", (char *) NULL); return TCL_ERROR; } } varPtr = NewVar(0); varPtr->flags |= VAR_UPVAR; varPtr->value.upvarPtr = hPtr; gVarPtr->upvarUses++; Tcl_SetHashValue(hPtr2, varPtr); } return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_UpvarCmd -- * * This procedure is invoked to process the "upvar" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result value. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_UpvarCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { register Interp *iPtr = (Interp *) interp; int result; CallFrame *framePtr; Var *varPtr = NULL; Tcl_HashTable *upVarTablePtr; Tcl_HashEntry *hPtr, *hPtr2; int new; Var *upVarPtr; if (argc < 3) { upvarSyntax: Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ?level? otherVar localVar ?otherVar localVar ...?\"", (char *) NULL); return TCL_ERROR; } /* * Find the hash table containing the variable being referenced. */ result = TclGetFrame(interp, argv[1], &framePtr); if (result == -1) { return TCL_ERROR; } argc -= result+1; argv += result+1; if (framePtr == NULL) { upVarTablePtr = &iPtr->globalTable; } else { upVarTablePtr = &framePtr->varTable; } if ((argc & 1) != 0) { goto upvarSyntax; } /* * Iterate over all the pairs of (local variable, other variable) * names. For each pair, create a hash table entry in the upper * context (if the name wasn't there already), then associate it * with a new local variable. */ while (argc > 0) { hPtr = Tcl_CreateHashEntry(upVarTablePtr, argv[0], &new); if (new) { upVarPtr = NewVar(0); upVarPtr->flags |= VAR_UNDEFINED; Tcl_SetHashValue(hPtr, upVarPtr); } else { upVarPtr = (Var *) Tcl_GetHashValue(hPtr); if (upVarPtr->flags & VAR_UPVAR) { hPtr = upVarPtr->value.upvarPtr; upVarPtr = (Var *) Tcl_GetHashValue(hPtr); } } hPtr2 = Tcl_CreateHashEntry(&iPtr->varFramePtr->varTable, argv[1], &new); if (!new) { Tcl_AppendResult((Tcl_Interp *) iPtr, "variable \"", argv[1], "\" already exists", (char *) NULL); return TCL_ERROR; } varPtr = NewVar(0); varPtr->flags |= VAR_UPVAR; varPtr->value.upvarPtr = hPtr; upVarPtr->upvarUses++; Tcl_SetHashValue(hPtr2, varPtr); argc -= 2; argv += 2; } return TCL_OK; } /* *---------------------------------------------------------------------- * * TclDeleteVars -- * * This procedure is called to recycle all the storage space * associated with a table of variables. For this procedure * to work correctly, it must not be possible for any of the * variable in the table to be accessed from Tcl commands * (e.g. from trace procedures). * * Results: * None. * * Side effects: * Variables are deleted and trace procedures are invoked, if * any are declared. * *---------------------------------------------------------------------- */ void TclDeleteVars(iPtr, tablePtr) Interp *iPtr; /* Interpreter to which variables belong. */ Tcl_HashTable *tablePtr; /* Hash table containing variables to * delete. */ { Tcl_HashSearch search; Tcl_HashEntry *hPtr; register Var *varPtr; int flags, globalFlag; flags = TCL_TRACE_UNSETS; if (tablePtr == &iPtr->globalTable) { flags |= TCL_INTERP_DESTROYED | TCL_GLOBAL_ONLY; } for (hPtr = Tcl_FirstHashEntry(tablePtr, &search); hPtr != NULL; hPtr = Tcl_NextHashEntry(&search)) { varPtr = (Var *) Tcl_GetHashValue(hPtr); /* * For global/upvar variables referenced in procedures, free up the * local space and then decrement the reference count on the * variable referred to. If there are no more references to the * global/upvar and it is undefined and has no traces set, then * follow on and delete the referenced variable too. */ globalFlag = 0; if (varPtr->flags & VAR_UPVAR) { hPtr = varPtr->value.upvarPtr; ckfree((char *) varPtr); varPtr = (Var *) Tcl_GetHashValue(hPtr); varPtr->upvarUses--; if ((varPtr->upvarUses != 0) || !(varPtr->flags & VAR_UNDEFINED) || (varPtr->tracePtr != NULL)) { continue; } globalFlag = TCL_GLOBAL_ONLY; } /* * Invoke traces on the variable that is being deleted, then * free up the variable's space (no need to free the hash entry * here, unless we're dealing with a global variable: the * hash entries will be deleted automatically when the whole * table is deleted). */ if (varPtr->tracePtr != NULL) { (void) CallTraces(iPtr, (Var *) NULL, hPtr, Tcl_GetHashKey(tablePtr, hPtr), (char *) NULL, flags | globalFlag); while (varPtr->tracePtr != NULL) { VarTrace *tracePtr = varPtr->tracePtr; varPtr->tracePtr = tracePtr->nextPtr; ckfree((char *) tracePtr); } } if (varPtr->flags & VAR_ARRAY) { DeleteArray(iPtr, Tcl_GetHashKey(tablePtr, hPtr), varPtr, flags | globalFlag); } if (globalFlag) { Tcl_DeleteHashEntry(hPtr); } ckfree((char *) varPtr); } Tcl_DeleteHashTable(tablePtr); } /* *---------------------------------------------------------------------- * * CallTraces -- * * This procedure is invoked to find and invoke relevant * trace procedures associated with a particular operation on * a variable. This procedure invokes traces both on the * variable and on its containing array (where relevant). * * Results: * The return value is NULL if no trace procedures were invoked, or * if all the invoked trace procedures returned successfully. * The return value is non-zero if a trace procedure returned an * error (in this case no more trace procedures were invoked after * the error was returned). In this case the return value is a * pointer to a static string describing the error. * * Side effects: * Almost anything can happen, depending on trace; this procedure * itself doesn't have any side effects. * *---------------------------------------------------------------------- */ static char * CallTraces(iPtr, arrayPtr, hPtr, name1, name2, flags) Interp *iPtr; /* Interpreter containing variable. */ register Var *arrayPtr; /* Pointer to array variable that * contains the variable, or NULL if * the variable isn't an element of an * array. */ Tcl_HashEntry *hPtr; /* Hash table entry corresponding to * variable whose traces are to be * invoked. */ char *name1, *name2; /* Variable's two-part name. */ int flags; /* Flags to pass to trace procedures: * indicates what's happening to * variable, plus other stuff like * TCL_GLOBAL_ONLY and * TCL_INTERP_DESTROYED. */ { Var *varPtr; register VarTrace *tracePtr; ActiveVarTrace active; char *result; int savedArrayFlags = 0; /* (Initialization not needed except * to prevent compiler warning) */ /* * If there are already similar trace procedures active for the * variable, don't call them again. */ varPtr = (Var *) Tcl_GetHashValue(hPtr); if (varPtr->flags & VAR_TRACE_ACTIVE) { return NULL; } varPtr->flags |= VAR_TRACE_ACTIVE; /* * Invoke traces on the array containing the variable, if relevant. */ result = NULL; active.nextPtr = iPtr->activeTracePtr; iPtr->activeTracePtr = &active; if (arrayPtr != NULL) { savedArrayFlags = arrayPtr->flags; arrayPtr->flags |= VAR_ELEMENT_ACTIVE; for (tracePtr = arrayPtr->tracePtr; tracePtr != NULL; tracePtr = active.nextTracePtr) { active.nextTracePtr = tracePtr->nextPtr; if (!(tracePtr->flags & flags)) { continue; } result = (*tracePtr->traceProc)(tracePtr->clientData, (Tcl_Interp *) iPtr, name1, name2, flags); if (result != NULL) { if (flags & TCL_TRACE_UNSETS) { result = NULL; } else { goto done; } } } } /* * Invoke traces on the variable itself. */ if (flags & TCL_TRACE_UNSETS) { flags |= TCL_TRACE_DESTROYED; } for (tracePtr = varPtr->tracePtr; tracePtr != NULL; tracePtr = active.nextTracePtr) { active.nextTracePtr = tracePtr->nextPtr; if (!(tracePtr->flags & flags)) { continue; } result = (*tracePtr->traceProc)(tracePtr->clientData, (Tcl_Interp *) iPtr, name1, name2, flags); if (result != NULL) { if (flags & TCL_TRACE_UNSETS) { result = NULL; } else { goto done; } } } /* * Restore the variable's flags, remove the record of our active * traces, and then return. Remember that the variable could have * been re-allocated during the traces, but its hash entry won't * change. */ done: if (arrayPtr != NULL) { arrayPtr->flags = savedArrayFlags; } varPtr = (Var *) Tcl_GetHashValue(hPtr); varPtr->flags &= ~VAR_TRACE_ACTIVE; iPtr->activeTracePtr = active.nextPtr; return result; } /* *---------------------------------------------------------------------- * * NewVar -- * * Create a new variable with a given initial value. * * Results: * The return value is a pointer to the new variable structure. * The variable will not be part of any hash table yet, and its * upvarUses count is initialized to 0. Its initial value will * be empty, but "space" bytes will be available in the value * area. * * Side effects: * Storage gets allocated. * *---------------------------------------------------------------------- */ static Var * NewVar(space) int space; /* Minimum amount of space to allocate * for variable's value. */ { int extra; register Var *varPtr; extra = space - sizeof(varPtr->value); if (extra < 0) { extra = 0; space = sizeof(varPtr->value); } varPtr = (Var *) ckalloc((unsigned) (sizeof(Var) + extra)); varPtr->valueLength = 0; varPtr->valueSpace = space; varPtr->upvarUses = 0; varPtr->tracePtr = NULL; varPtr->searchPtr = NULL; varPtr->flags = 0; varPtr->value.string[0] = 0; return varPtr; } /* *---------------------------------------------------------------------- * * ParseSearchId -- * * This procedure translates from a string to a pointer to an * active array search (if there is one that matches the string). * * Results: * The return value is a pointer to the array search indicated * by string, or NULL if there isn't one. If NULL is returned, * interp->result contains an error message. * * Side effects: * None. * *---------------------------------------------------------------------- */ static ArraySearch * ParseSearchId(interp, varPtr, varName, string) Tcl_Interp *interp; /* Interpreter containing variable. */ Var *varPtr; /* Array variable search is for. */ char *varName; /* Name of array variable that search is * supposed to be for. */ char *string; /* String containing id of search. Must have * form "search-num-var" where "num" is a * decimal number and "var" is a variable * name. */ { char *end; int id; ArraySearch *searchPtr; /* * Parse the id into the three parts separated by dashes. */ if ((string[0] != 's') || (string[1] != '-')) { syntax: Tcl_AppendResult(interp, "illegal search identifier \"", string, "\"", (char *) NULL); return NULL; } id = strtoul(string+2, &end, 10); if ((end == (string+2)) || (*end != '-')) { goto syntax; } if (strcmp(end+1, varName) != 0) { Tcl_AppendResult(interp, "search identifier \"", string, "\" isn't for variable \"", varName, "\"", (char *) NULL); return NULL; } /* * Search through the list of active searches on the interpreter * to see if the desired one exists. */ for (searchPtr = varPtr->searchPtr; searchPtr != NULL; searchPtr = searchPtr->nextPtr) { if (searchPtr->id == id) { return searchPtr; } } Tcl_AppendResult(interp, "couldn't find search \"", string, "\"", (char *) NULL); return NULL; } /* *---------------------------------------------------------------------- * * DeleteSearches -- * * This procedure is called to free up all of the searches * associated with an array variable. * * Results: * None. * * Side effects: * Memory is released to the storage allocator. * *---------------------------------------------------------------------- */ static void DeleteSearches(arrayVarPtr) register Var *arrayVarPtr; /* Variable whose searches are * to be deleted. */ { ArraySearch *searchPtr; while (arrayVarPtr->searchPtr != NULL) { searchPtr = arrayVarPtr->searchPtr; arrayVarPtr->searchPtr = searchPtr->nextPtr; ckfree((char *) searchPtr); } } /* *---------------------------------------------------------------------- * * DeleteArray -- * * This procedure is called to free up everything in an array * variable. It's the caller's responsibility to make sure * that the array is no longer accessible before this procedure * is called. * * Results: * None. * * Side effects: * All storage associated with varPtr's array elements is deleted * (including the hash table). Any delete trace procedures for * array elements are invoked. * *---------------------------------------------------------------------- */ static void DeleteArray(iPtr, arrayName, varPtr, flags) Interp *iPtr; /* Interpreter containing array. */ char *arrayName; /* Name of array (used for trace * callbacks). */ Var *varPtr; /* Pointer to variable structure. */ int flags; /* Flags to pass to CallTraces: * TCL_TRACE_UNSETS and sometimes * TCL_INTERP_DESTROYED and/or * TCL_GLOBAL_ONLY. */ { Tcl_HashSearch search; register Tcl_HashEntry *hPtr; register Var *elPtr; DeleteSearches(varPtr); for (hPtr = Tcl_FirstHashEntry(varPtr->value.tablePtr, &search); hPtr != NULL; hPtr = Tcl_NextHashEntry(&search)) { elPtr = (Var *) Tcl_GetHashValue(hPtr); if (elPtr->tracePtr != NULL) { (void) CallTraces(iPtr, (Var *) NULL, hPtr, arrayName, Tcl_GetHashKey(varPtr->value.tablePtr, hPtr), flags); while (elPtr->tracePtr != NULL) { VarTrace *tracePtr = elPtr->tracePtr; elPtr->tracePtr = tracePtr->nextPtr; ckfree((char *) tracePtr); } } if (elPtr->flags & VAR_SEARCHES_POSSIBLE) { panic("DeleteArray found searches on array alement!"); } ckfree((char *) elPtr); } Tcl_DeleteHashTable(varPtr->value.tablePtr); ckfree((char *) varPtr->value.tablePtr); } /* *---------------------------------------------------------------------- * * VarErrMsg -- * * Generate a reasonable error message describing why a variable * operation failed. * * Results: * None. * * Side effects: * Interp->result is reset to hold a message identifying the * variable given by name1 and name2 and describing why the * variable operation failed. * *---------------------------------------------------------------------- */ static void VarErrMsg(interp, name1, name2, operation, reason) Tcl_Interp *interp; /* Interpreter in which to record message. */ char *name1, *name2; /* Variable's two-part name. */ char *operation; /* String describing operation that failed, * e.g. "read", "set", or "unset". */ char *reason; /* String describing why operation failed. */ { Tcl_ResetResult(interp); Tcl_AppendResult(interp, "can't ", operation, " \"", name1, (char *) NULL); if (name2 != NULL) { Tcl_AppendResult(interp, "(", name2, ")", (char *) NULL); } Tcl_AppendResult(interp, "\": ", reason, (char *) NULL); } micropolis-activity/src/tcl/readme.txt0000664000076400007640000002107110724145723020403 0ustar simcitysimcityTcl by John Ousterhout University of California at Berkeley ouster@sprite.berkeley.edu 1. Introduction --------------- This directory contains the sources and documentation for Tcl, an embeddable tool command language. The information here corresponds to release 6.4. This release is identical to the 6.3 release except for a few bug fixes and one new feature (the Tcl_GlobalEval procedure). The file "changes" has a complete list of all changes made to Tcl, with incompatible changes specially marked. Tcl 6.4 has no incompatible changes relative to 6.3. For an introduction to the facilities provided by Tcl, see the paper ``Tcl: An Embeddable Command Language'', in the Proceedings of the 1990 Winter USENIX Conference. A copy of that paper is included here in Postscript form in the file "doc/usenix.ps" and in text form in the file "doc/usenix.text". However, the paper corresponds to a much earlier version of Tcl (approximately version 3.0), so some details of the paper may not be correct anymore and there are many new features not documented in the paper. 2. Documentation ---------------- The "doc" subdirectory contains a complete set of manual entries for Tcl. The file "doc/Tcl.man" gives an overall description of the Tcl language and describes the core Tcl commands. The other ".man" files in "doc" describe the library procedures that Tcl provides for Tcl-based applications. Read the "Tcl" man page first. To print any of the man pages, cd to the "doc" directory and invoke your favorite variant of troff using the normal -man macros, for example ditroff -man where is the name of the man page you'd like to print. 3. Machines supported --------------------- If you follow the directions below, this release should compile and run on the following configurations either "out of the box" or with only trivial changes: - Sun-3's, Sun-4's, SPARCstation-1's and SPARCstation-2's running many variants of SunOS, such as 4.1. - DECstation-3100's and DECstation-5000's running many versions of Ultrix, such as 2.0 and 4.2. - DEC VAXes running many versions of Ultrix or BSD UNIX. - Intel 386 based systems running SCO Unix 3.2v2. - Intel 386 based systems running SCO Xenix 2.3.3. - Intel 386 based systems running Bell-Tech (now Intel) Unix 3.2.0. - Silicon Graphics systems running IRIX 4.0. - Various H-P machines running versions of HP-UX such as 7.05 - Sequent Symmetry running versions of Dynix/ptx such as v1.2.4 If you find problems running Tcl on any of the above configurations, please let me know. Also, if you are able to compile Tcl and run the test suite successfully on configurations not listed above, please let me know and tell me what changes, if any, you needed to make to do it. I'd like to keep the above list up-to-date and continue to improve the portability of Tcl. Tcl can be used on many other configurations with only a few modifications. The file "porting.notes" contains information sent to me about what it took to get Tcl to run on various other configurations. I make no guarantees that this information is accurate or complete, but you may find it useful. If you get Tcl running on a new configuration, I'd be deligted to receive new information to add to "porting.notes". 4. Compiling Tcl ---------------- To compile Tcl on any of the configurations listed above, or systems similar to them, do the following: (a) If your system isn't one of the ones listed above, look in the file "porting.notes" to see if your system is listed there. This file contains additonal notes on getting Tcl to run on various other systems. (b) Edit the "set" commands at the beginning of the file "config" if necessary to correspond to your system configuration (they should already be right for most versions of Unix). (c) Type "./config" in the top-level directory. "Config" is a script that pokes around in your system to see if certain almost-standard things are missing (header files, library procedures, etc.); if your system doesn't seem to have them, it configures Tcl to use its own copies of these things instead (Tcl's copies are kept in the "compat" subdirectory). Config prints out messages for all the substitutions it made. You can ignore any of the messages unless they say "ERROR!!"; in this case something is fundamentally wrong and the config script couldn't handle your system configuration. (d) Type "make" to compile the library. This will create the Tcl library in "libtcl.a". The Makefile should work without any modifications but you may wish to personalize it, e.g. to turn on compiler optimization. (e) If the combination of "config" and "make" doesn't work for you, then I suggest the following approach: - Start again with a fresh copy of the distribution. - Set the #defines that appear at the very front of tclUnix.h (before the first #include) to correspond to your system. - Modify Makefile to set CC, CFLAGS, etc. for your system. - If things don't compile or don't link, then you may need to copy some of the .c or .h files from the "compat" directory into the main Tcl directory to compensate for files missing from your system. Modify the COMPAT_OBJS definition in Makefile to include a .o name for each of the .c files that you copied up from the compat directory. (f) Create a directory /usr/local/lib/tcl and copy all the files from the "library" subdirectory to /usr/local/lib/tcl. Or, you can use some other directory as library, but you'll need to modify the Makefile to reflect this fact (change the TCL_LIBRARY definition). (g) Type "make tclTest", which will create a simple test program that you can use to try out the Tcl facilities. TclTest is just a main-program sandwich around the Tcl library. It reads standard input until it reaches the end of a line where parentheses and backslashes are balanced, then sends everything it's read to the Tcl interpreter. When the Tcl interpreter returns, tclTest prints the return value or error message. TclTest defines a few other additional commands, most notably: echo arg arg ... The "echo" command prints its arguments on standard output, separated by spaces. 5. Test suite ------------- There is a relatively complete test suite for all of the Tcl core in the subdirectory "tests". To use it just type "make test" in this directory. You should then see a printout of the test files processed. If any errors occur, you'll see a much more substantial printout for each error. Tcl should pass the test suite cleanly on all of the systems listed in Section 3. See the README file in the "tests" directory for more information on the test suite. 6. Compiling on non-UNIX systems -------------------------------- The Tcl features that depend on system calls peculiar to UNIX (stat, fork, exec, times, etc.) are now separate from the main body of Tcl, which only requires a few generic library procedures such as malloc and strcpy. Thus it should be relatively easy to compile Tcl for these machines, although a number of UNIX-specific commands will be absent (e.g. exec, time, and glob). See the comments at the top of Makefile for information on how to compile without the UNIX features. 7. Special thanks ----------------- Mark Diekhans and Karl Lehenbauer of Santa Cruz Operation deserve special thanks for all their help during the development of Tcl 6.0. Many of the new features in Tcl 6.0 were inspired by an enhanced version of Tcl 3.3 called Extended Tcl 4.0, which was created by Mark, Karl, and Peter da Silva. Mark and Karl explained these features to me and provided excellent (and challenging) feedback during the 6.0 development process. They were also a great help in finding and fixing portability problems. Without their ideas and assistance Tcl 6.0 would be much less powerful. 8. Support ---------- There is no official support organization for Tcl, and I can't promise to provide much hand-holding to people learning Tcl. However, I'm very interested in receiving bug reports and suggestions for improvements. Bugs usually get fixed quickly (particularly if they are serious), but enhancements may take a while and may not happen at all unless there is widespread support for them. 9. Tcl newsgroup ----------------- There is a network news group "comp.lang.tcl" intended for the exchange of information about Tcl, Tk, and related applications. Feel free to use this newsgroup both for general information questions and for bug reports. I read the newsgroup and will attempt to fix bugs and problems reported to it. micropolis-activity/src/tcl/tclcmdah.c0000664000076400007640000005326410724145723020341 0ustar simcitysimcity/* * tclCmdAH.c -- * * This file contains the top-level command routines for most of * the Tcl built-in commands whose names begin with the letters * A to H. * * Copyright 1987-1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/RCS/tclCmdAH.c,v 1.76 92/07/06 09:49:41 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tclint.h" /* *---------------------------------------------------------------------- * * Tcl_BreakCmd -- * * This procedure is invoked to process the "break" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_BreakCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { if (argc != 1) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], "\"", (char *) NULL); return TCL_ERROR; } return TCL_BREAK; } /* *---------------------------------------------------------------------- * * Tcl_CaseCmd -- * * This procedure is invoked to process the "case" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_CaseCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int i, result; int body; char *string; int caseArgc, splitArgs; char **caseArgv; if (argc < 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " string ?in? patList body ... ?default body?\"", (char *) NULL); return TCL_ERROR; } string = argv[1]; body = -1; if (strcmp(argv[2], "in") == 0) { i = 3; } else { i = 2; } caseArgc = argc - i; caseArgv = argv + i; /* * If all of the pattern/command pairs are lumped into a single * argument, split them out again. */ splitArgs = 0; if (caseArgc == 1) { result = Tcl_SplitList(interp, caseArgv[0], &caseArgc, &caseArgv); if (result != TCL_OK) { return result; } splitArgs = 1; } for (i = 0; i < caseArgc; i += 2) { int patArgc, j; char **patArgv; register char *p; if (i == (caseArgc-1)) { interp->result = "extra case pattern with no body"; result = TCL_ERROR; goto cleanup; } /* * Check for special case of single pattern (no list) with * no backslash sequences. */ for (p = caseArgv[i]; *p != 0; p++) { if (isspace(*p) || (*p == '\\')) { break; } } if (*p == 0) { if ((*caseArgv[i] == 'd') && (strcmp(caseArgv[i], "default") == 0)) { body = i+1; } if (Tcl_StringMatch(string, caseArgv[i])) { body = i+1; goto match; } continue; } /* * Break up pattern lists, then check each of the patterns * in the list. */ result = Tcl_SplitList(interp, caseArgv[i], &patArgc, &patArgv); if (result != TCL_OK) { goto cleanup; } for (j = 0; j < patArgc; j++) { if (Tcl_StringMatch(string, patArgv[j])) { body = i+1; break; } } ckfree((char *) patArgv); if (j < patArgc) { break; } } match: if (body != -1) { result = Tcl_Eval(interp, caseArgv[body], 0, (char **) NULL); if (result == TCL_ERROR) { char msg[100]; sprintf(msg, "\n (\"%.50s\" arm line %d)", caseArgv[body-1], interp->errorLine); Tcl_AddErrorInfo(interp, msg); } goto cleanup; } /* * Nothing matched: return nothing. */ result = TCL_OK; cleanup: if (splitArgs) { ckfree((char *) caseArgv); } return result; } /* *---------------------------------------------------------------------- * * Tcl_CatchCmd -- * * This procedure is invoked to process the "catch" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_CatchCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int result; if ((argc != 2) && (argc != 3)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " command ?varName?\"", (char *) NULL); return TCL_ERROR; } result = Tcl_Eval(interp, argv[1], 0, (char **) NULL); if (argc == 3) { if (Tcl_SetVar(interp, argv[2], interp->result, 0) == NULL) { Tcl_SetResult(interp, "couldn't save command result in variable", TCL_STATIC); return TCL_ERROR; } } Tcl_ResetResult(interp); sprintf(interp->result, "%d", result); return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_ConcatCmd -- * * This procedure is invoked to process the "concat" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_ConcatCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { if (argc == 1) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " arg ?arg ...?\"", (char *) NULL); return TCL_ERROR; } interp->result = Tcl_Concat(argc-1, argv+1); interp->freeProc = (Tcl_FreeProc *) free; return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_ContinueCmd -- * * This procedure is invoked to process the "continue" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_ContinueCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { if (argc != 1) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], "\"", (char *) NULL); return TCL_ERROR; } return TCL_CONTINUE; } /* *---------------------------------------------------------------------- * * Tcl_ErrorCmd -- * * This procedure is invoked to process the "error" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_ErrorCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { Interp *iPtr = (Interp *) interp; if ((argc < 2) || (argc > 4)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " message ?errorInfo? ?errorCode?\"", (char *) NULL); return TCL_ERROR; } if ((argc >= 3) && (argv[2][0] != 0)) { Tcl_AddErrorInfo(interp, argv[2]); iPtr->flags |= ERR_ALREADY_LOGGED; } if (argc == 4) { Tcl_SetVar2(interp, "errorCode", (char *) NULL, argv[3], TCL_GLOBAL_ONLY); iPtr->flags |= ERROR_CODE_SET; } Tcl_SetResult(interp, argv[1], TCL_VOLATILE); return TCL_ERROR; } /* *---------------------------------------------------------------------- * * Tcl_EvalCmd -- * * This procedure is invoked to process the "eval" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_EvalCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int result; char *cmd; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " arg ?arg ...?\"", (char *) NULL); return TCL_ERROR; } if (argc == 2) { result = Tcl_Eval(interp, argv[1], 0, (char **) NULL); } else { /* * More than one argument: concatenate them together with spaces * between, then evaluate the result. */ cmd = Tcl_Concat(argc-1, argv+1); result = Tcl_Eval(interp, cmd, 0, (char **) NULL); ckfree(cmd); } if (result == TCL_ERROR) { char msg[60]; sprintf(msg, "\n (\"eval\" body line %d)", interp->errorLine); Tcl_AddErrorInfo(interp, msg); } return result; } /* *---------------------------------------------------------------------- * * Tcl_ExprCmd -- * * This procedure is invoked to process the "expr" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_ExprCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " expression\"", (char *) NULL); return TCL_ERROR; } return Tcl_ExprString(interp, argv[1]); } /* *---------------------------------------------------------------------- * * Tcl_ForCmd -- * * This procedure is invoked to process the "for" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_ForCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int result, value; if (argc != 5) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " start test next command\"", (char *) NULL); return TCL_ERROR; } result = Tcl_Eval(interp, argv[1], 0, (char **) NULL); if (result != TCL_OK) { if (result == TCL_ERROR) { Tcl_AddErrorInfo(interp, "\n (\"for\" initial command)"); } return result; } while (1) { result = Tcl_ExprBoolean(interp, argv[2], &value); if (result != TCL_OK) { return result; } if (!value) { break; } result = Tcl_Eval(interp, argv[4], 0, (char **) NULL); if (result == TCL_CONTINUE) { result = TCL_OK; } else if (result != TCL_OK) { if (result == TCL_ERROR) { char msg[60]; sprintf(msg, "\n (\"for\" body line %d)", interp->errorLine); Tcl_AddErrorInfo(interp, msg); } break; } result = Tcl_Eval(interp, argv[3], 0, (char **) NULL); if (result == TCL_BREAK) { break; } else if (result != TCL_OK) { if (result == TCL_ERROR) { Tcl_AddErrorInfo(interp, "\n (\"for\" loop-end command)"); } return result; } } if (result == TCL_BREAK) { result = TCL_OK; } if (result == TCL_OK) { Tcl_ResetResult(interp); } return result; } /* *---------------------------------------------------------------------- * * Tcl_ForeachCmd -- * * This procedure is invoked to process the "foreach" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_ForeachCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int listArgc, i, result; char **listArgv; if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " varName list command\"", (char *) NULL); return TCL_ERROR; } /* * Break the list up into elements, and execute the command once * for each value of the element. */ result = Tcl_SplitList(interp, argv[2], &listArgc, &listArgv); if (result != TCL_OK) { return result; } for (i = 0; i < listArgc; i++) { if (Tcl_SetVar(interp, argv[1], listArgv[i], 0) == NULL) { Tcl_SetResult(interp, "couldn't set loop variable", TCL_STATIC); result = TCL_ERROR; break; } result = Tcl_Eval(interp, argv[3], 0, (char **) NULL); if (result != TCL_OK) { if (result == TCL_CONTINUE) { result = TCL_OK; } else if (result == TCL_BREAK) { result = TCL_OK; break; } else if (result == TCL_ERROR) { char msg[100]; sprintf(msg, "\n (\"foreach\" body line %d)", interp->errorLine); Tcl_AddErrorInfo(interp, msg); break; } else { break; } } } ckfree((char *) listArgv); if (result == TCL_OK) { Tcl_ResetResult(interp); } return result; } /* *---------------------------------------------------------------------- * * Tcl_FormatCmd -- * * This procedure is invoked to process the "format" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_FormatCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { register char *format; /* Used to read characters from the format * string. */ char newFormat[40]; /* A new format specifier is generated here. */ int width; /* Field width from field specifier, or 0 if * no width given. */ int precision; /* Field precision from field specifier, or 0 * if no precision given. */ int size; /* Number of bytes needed for result of * conversion, based on type of conversion * ("e", "s", etc.) and width from above. */ char *oneWordValue = NULL; /* Used to hold value to pass to sprintf, if * it's a one-word value. */ double twoWordValue; /* Used to hold value to pass to sprintf if * it's a two-word value. */ int useTwoWords; /* 0 means use oneWordValue, 1 means use * twoWordValue. */ char *dst = interp->result; /* Where result is stored. Starts off at * interp->resultSpace, but may get dynamically * re-allocated if this isn't enough. */ int dstSize = 0; /* Number of non-null characters currently * stored at dst. */ int dstSpace = TCL_RESULT_SIZE; /* Total amount of storage space available * in dst (not including null terminator. */ int noPercent; /* Special case for speed: indicates there's * no field specifier, just a string to copy. */ char **curArg; /* Remainder of argv array. */ int useShort; /* Value to be printed is short (half word). */ /* * This procedure is a bit nasty. The goal is to use sprintf to * do most of the dirty work. There are several problems: * 1. this procedure can't trust its arguments. * 2. we must be able to provide a large enough result area to hold * whatever's generated. This is hard to estimate. * 2. there's no way to move the arguments from argv to the call * to sprintf in a reasonable way. This is particularly nasty * because some of the arguments may be two-word values (doubles). * So, what happens here is to scan the format string one % group * at a time, making many individual calls to sprintf. */ if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " formatString ?arg arg ...?\"", (char *) NULL); return TCL_ERROR; } curArg = argv+2; argc -= 2; for (format = argv[1]; *format != 0; ) { register char *newPtr = newFormat; width = precision = useTwoWords = noPercent = useShort = 0; /* * Get rid of any characters before the next field specifier. * Collapse backslash sequences found along the way. */ if (*format != '%') { register char *p; int bsSize; oneWordValue = p = format; while ((*format != '%') && (*format != 0)) { if (*format == '\\') { *p = Tcl_Backslash(format, &bsSize); if (*p != 0) { p++; } format += bsSize; } else { *p = *format; p++; format++; } } size = p - oneWordValue; noPercent = 1; goto doField; } if (format[1] == '%') { oneWordValue = format; size = 1; noPercent = 1; format += 2; goto doField; } /* * Parse off a field specifier, compute how many characters * will be needed to store the result, and substitute for * "*" size specifiers. */ *newPtr = '%'; newPtr++; format++; while ((*format == '-') || (*format == '#')) { *newPtr = *format; newPtr++; format++; } if (*format == '0') { *newPtr = '0'; newPtr++; format++; } if (isdigit(*format)) { width = atoi(format); do { format++; } while (isdigit(*format)); } else if (*format == '*') { if (argc <= 0) { goto notEnoughArgs; } if (Tcl_GetInt(interp, *curArg, &width) != TCL_OK) { goto fmtError; } argc--; curArg++; format++; } if (width != 0) { sprintf(newPtr, "%d", width); while (*newPtr != 0) { newPtr++; } } if (*format == '.') { *newPtr = '.'; newPtr++; format++; } if (isdigit(*format)) { precision = atoi(format); do { format++; } while (isdigit(*format)); } else if (*format == '*') { if (argc <= 0) { goto notEnoughArgs; } if (Tcl_GetInt(interp, *curArg, &precision) != TCL_OK) { goto fmtError; } argc--; curArg++; format++; } if (precision != 0) { sprintf(newPtr, "%d", precision); while (*newPtr != 0) { newPtr++; } } if (*format == 'l') { format++; } else if (*format == 'h') { useShort = 1; *newPtr = 'h'; newPtr++; format++; } *newPtr = *format; newPtr++; *newPtr = 0; if (argc <= 0) { goto notEnoughArgs; } switch (*format) { case 'D': case 'O': case 'U': if (!useShort) { newPtr++; } else { useShort = 0; } newPtr[-1] = tolower(*format); newPtr[-2] = 'l'; *newPtr = 0; case 'd': case 'o': case 'u': case 'x': case 'X': if (Tcl_GetInt(interp, *curArg, (int *) &oneWordValue) != TCL_OK) { goto fmtError; } size = 40; break; case 's': oneWordValue = *curArg; size = strlen(*curArg); break; case 'c': if (Tcl_GetInt(interp, *curArg, (int *) &oneWordValue) != TCL_OK) { goto fmtError; } size = 1; break; case 'F': newPtr[-1] = tolower(newPtr[-1]); case 'e': case 'E': case 'f': case 'g': case 'G': if (Tcl_GetDouble(interp, *curArg, &twoWordValue) != TCL_OK) { goto fmtError; } useTwoWords = 1; size = 320; if (precision > 10) { size += precision; } break; case 0: interp->result = "format string ended in middle of field specifier"; goto fmtError; default: sprintf(interp->result, "bad field specifier \"%c\"", *format); goto fmtError; } argc--; curArg++; format++; /* * Make sure that there's enough space to hold the formatted * result, then format it. */ doField: if (width > size) { size = width; } if ((dstSize + size) > dstSpace) { char *newDst; int newSpace; newSpace = 2*(dstSize + size); newDst = (char *) ckalloc((unsigned) newSpace+1); if (dstSize != 0) { memcpy((VOID *) newDst, (VOID *) dst, dstSize); } if (dstSpace != TCL_RESULT_SIZE) { ckfree(dst); } dst = newDst; dstSpace = newSpace; } if (noPercent) { memcpy((VOID *) (dst+dstSize), (VOID *) oneWordValue, size); dstSize += size; dst[dstSize] = 0; } else { if (useTwoWords) { sprintf(dst+dstSize, newFormat, twoWordValue); } else if (useShort) { int tmp = (int)oneWordValue; sprintf(dst+dstSize, newFormat, (short)tmp); } else { sprintf(dst+dstSize, newFormat, oneWordValue); } dstSize += strlen(dst+dstSize); } } interp->result = dst; if (dstSpace != TCL_RESULT_SIZE) { interp->freeProc = (Tcl_FreeProc *) free; } else { interp->freeProc = 0; } return TCL_OK; notEnoughArgs: interp->result = "not enough arguments for all format specifiers"; fmtError: if (dstSpace != TCL_RESULT_SIZE) { ckfree(dst); } return TCL_ERROR; } micropolis-activity/src/tcl/makefile0000664000076400007640000000375610724145723020117 0ustar simcitysimcity# Makefile.linux # # This Makefile is for use when distributing Tcl to the outside world. # It is normally set up by running the "config" script. Before modifying # this file by hand, you should read through the "config" script to see # what it does. # # Some changes you may wish to make here: # # 1. To compile for non-UNIX systems (so that only the non-UNIX-specific # commands are available), change the OBJS line below so it doesn't # include ${UNIX_OBJS}. Also, add the switch "-DTCL_GENERIC_ONLY" to # CFLAGS. Lastly, you'll have to provide your own replacement for the # "panic" procedure (see panic.c for what the current one does). # # 2. ANSI-C procedure prototypes are turned on by default if supported # by the compiler. To turn them off, add "-DNO_PROTOTYPE" to CFLAGS # below. # # 3. If you've put the Tcl script library in a non-standard place, change # the definition of TCL_LIBRARY to correspond to its location on your # system. # TCL_LIBRARY = /usr/local/lib/tcl CC = gcc CFLAGS = -O3 -I. -DTCL_LIBRARY=\"${TCL_LIBRARY}\" -DIS_LINUX #CFLAGS = -g -I. -DTCL_LIBRARY=\"${TCL_LIBRARY}\" -DIS_LINUX GENERIC_OBJS = \ regexp.o \ tclassem.o \ tclbasic.o \ tclckall.o \ tclcmdah.o \ tclcmdil.o \ tclcmdmz.o \ tclexpr.o \ tclget.o \ tclhash.o \ tclhist.o \ tclparse.o \ tclproc.o \ tclutil.o \ tclvar.o UNIX_OBJS = \ panic.o \ tclenv.o \ tclglob.o \ tclunxaz.o \ tclunxst.o \ tclunxut.o COMPAT_OBJS = OBJS = ${GENERIC_OBJS} ${UNIX_OBJS} ${COMPAT_OBJS} all: libtcl.a libtcl.a: ${OBJS} ${COMPAT_OBJS} rm -f libtcl.a ar cr libtcl.a ${OBJS} ranlib libtcl.a tcltest: tcltest.o libtcl.a ${CC} ${CFLAGS} tcltest.o libtcl.a -o tcltest test: tcltest ( echo cd tests ; echo source all ) | ./tcltest clean: rm -f ${OBJS} libtcl.a tcltest.o tcltest # The following target is used during configuration to compile # a test program to see if certain facilities are available on # the system. configtest: ${CC} ${CFLAGS} test.c ${OBJS}: tcl.h tclhash.h tclint.h ${UNIX_OBJS}: tclunix.h micropolis-activity/src/tcl/tclexpr.c0000664000076400007640000010303410724145723020232 0ustar simcitysimcity/* * tclExpr.c -- * * This file contains the code to evaluate expressions for * Tcl. * * This implementation of floating-point support was modelled * after an initial implementation by Bill Carpenter. * * Copyright 1987-1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/RCS/tclExpr.c,v 1.35 92/03/23 09:53:46 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tclint.h" /* * The stuff below is a bit of a workaround so that this file can be used * in environments that include no UNIX, i.e. no errno. Just define * errno here. */ #ifndef TCL_GENERIC_ONLY #include "tclunix.h" #else int errno; #define ERANGE 34 #endif /* * The data structure below is used to describe an expression value, * which can be either an integer (the usual case), a double-precision * floating-point value, or a string. A given number has only one * value at a time. */ #define STATIC_STRING_SPACE 150 typedef struct { long intValue; /* Integer value, if any. */ double doubleValue; /* Floating-point value, if any. */ ParseValue pv; /* Used to hold a string value, if any. */ char staticSpace[STATIC_STRING_SPACE]; /* Storage for small strings; large ones * are malloc-ed. */ int type; /* Type of value: TYPE_INT, TYPE_DOUBLE, * or TYPE_STRING. */ } Value; /* * Valid values for type: */ #define TYPE_INT 0 #define TYPE_DOUBLE 1 #define TYPE_STRING 2 /* * The data structure below describes the state of parsing an expression. * It's passed among the routines in this module. */ typedef struct { char *originalExpr; /* The entire expression, as originally * passed to Tcl_Expr. */ char *expr; /* Position to the next character to be * scanned from the expression string. */ int token; /* Type of the last token to be parsed from * expr. See below for definitions. * Corresponds to the characters just * before expr. */ } ExprInfo; /* * The token types are defined below. In addition, there is a table * associating a precedence with each operator. The order of types * is important. Consult the code before changing it. */ #define VALUE 0 #define OPEN_PAREN 1 #define CLOSE_PAREN 2 #define END 3 #define UNKNOWN 4 /* * Binary operators: */ #define MULT 8 #define DIVIDE 9 #define MOD 10 #define PLUS 11 #define MINUS 12 #define LEFT_SHIFT 13 #define RIGHT_SHIFT 14 #define LESS 15 #define GREATER 16 #define LEQ 17 #define GEQ 18 #define EQUAL 19 #define NEQ 20 #define BIT_AND 21 #define BIT_XOR 22 #define BIT_OR 23 #define AND 24 #define OR 25 #define QUESTY 26 #define COLON 27 /* * Unary operators: */ #define UNARY_MINUS 28 #define NOT 29 #define BIT_NOT 30 /* * Precedence table. The values for non-operator token types are ignored. */ int precTable[] = { 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, /* MULT, DIVIDE, MOD */ 10, 10, /* PLUS, MINUS */ 9, 9, /* LEFT_SHIFT, RIGHT_SHIFT */ 8, 8, 8, 8, /* LESS, GREATER, LEQ, GEQ */ 7, 7, /* EQUAL, NEQ */ 6, /* BIT_AND */ 5, /* BIT_XOR */ 4, /* BIT_OR */ 3, /* AND */ 2, /* OR */ 1, 1, /* QUESTY, COLON */ 12, 12, 12 /* UNARY_MINUS, NOT, BIT_NOT */ }; /* * Mapping from operator numbers to strings; used for error messages. */ char *operatorStrings[] = { "VALUE", "(", ")", "END", "UNKNOWN", "5", "6", "7", "*", "/", "%", "+", "-", "<<", ">>", "<", ">", "<=", ">=", "==", "!=", "&", "^", "|", "&&", "||", "?", ":", "-", "!", "~" }; /* * Declarations for local procedures to this file: */ static int ExprGetValue _ANSI_ARGS_((Tcl_Interp *interp, ExprInfo *infoPtr, int prec, Value *valuePtr)); static int ExprLex _ANSI_ARGS_((Tcl_Interp *interp, ExprInfo *infoPtr, Value *valuePtr)); static void ExprMakeString _ANSI_ARGS_((Value *valuePtr)); static int ExprParseString _ANSI_ARGS_((Tcl_Interp *interp, char *string, Value *valuePtr)); static int ExprTopLevel _ANSI_ARGS_((Tcl_Interp *interp, char *string, Value *valuePtr)); /* *-------------------------------------------------------------- * * ExprParseString -- * * Given a string (such as one coming from command or variable * substitution), make a Value based on the string. The value * will be a floating-point or integer, if possible, or else it * will just be a copy of the string. * * Results: * TCL_OK is returned under normal circumstances, and TCL_ERROR * is returned if a floating-point overflow or underflow occurred * while reading in a number. The value at *valuePtr is modified * to hold a number, if possible. * * Side effects: * None. * *-------------------------------------------------------------- */ static int ExprParseString(interp, string, valuePtr) Tcl_Interp *interp; /* Where to store error message. */ char *string; /* String to turn into value. */ Value *valuePtr; /* Where to store value information. * Caller must have initialized pv field. */ { register char c; /* * Try to convert the string to a number. */ c = *string; if (((c >= '0') && (c <= '9')) || (c == '-') || (c == '.')) { char *term; valuePtr->type = TYPE_INT; errno = 0; valuePtr->intValue = strtol(string, &term, 0); c = *term; if ((c == '\0') && (errno != ERANGE)) { return TCL_OK; } if ((c == '.') || (c == 'e') || (c == 'E') || (errno == ERANGE)) { errno = 0; valuePtr->doubleValue = strtod(string, &term); if (errno == ERANGE) { Tcl_ResetResult(interp); if (valuePtr->doubleValue == 0.0) { Tcl_AppendResult(interp, "floating-point value \"", string, "\" too small to represent", (char *) NULL); } else { Tcl_AppendResult(interp, "floating-point value \"", string, "\" too large to represent", (char *) NULL); } return TCL_ERROR; } if (*term == '\0') { valuePtr->type = TYPE_DOUBLE; return TCL_OK; } } } /* * Not a valid number. Save a string value (but don't do anything * if it's already the value). */ valuePtr->type = TYPE_STRING; if (string != valuePtr->pv.buffer) { int length, shortfall; length = strlen(string); valuePtr->pv.next = valuePtr->pv.buffer; shortfall = length - (valuePtr->pv.end - valuePtr->pv.buffer); if (shortfall > 0) { (*valuePtr->pv.expandProc)(&valuePtr->pv, shortfall); } strcpy(valuePtr->pv.buffer, string); } return TCL_OK; } /* *---------------------------------------------------------------------- * * ExprLex -- * * Lexical analyzer for expression parser: parses a single value, * operator, or other syntactic element from an expression string. * * Results: * TCL_OK is returned unless an error occurred while doing lexical * analysis or executing an embedded command. In that case a * standard Tcl error is returned, using interp->result to hold * an error message. In the event of a successful return, the token * and field in infoPtr is updated to refer to the next symbol in * the expression string, and the expr field is advanced past that * token; if the token is a value, then the value is stored at * valuePtr. * * Side effects: * None. * *---------------------------------------------------------------------- */ static int ExprLex(interp, infoPtr, valuePtr) Tcl_Interp *interp; /* Interpreter to use for error * reporting. */ register ExprInfo *infoPtr; /* Describes the state of the parse. */ register Value *valuePtr; /* Where to store value, if that is * what's parsed from string. Caller * must have initialized pv field * correctly. */ { register char *p, c; char *var, *term; int result; p = infoPtr->expr; c = *p; while (isspace(c)) { p++; c = *p; } infoPtr->expr = p+1; switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '.': /* * Number. First read an integer. Then if it looks like * there's a floating-point number (or if it's too big a * number to fit in an integer), parse it as a floating-point * number. */ infoPtr->token = VALUE; valuePtr->type = TYPE_INT; errno = 0; valuePtr->intValue = strtoul(p, &term, 0); c = *term; if ((c == '.') || (c == 'e') || (c == 'E') || (errno == ERANGE)) { char *term2; errno = 0; valuePtr->doubleValue = strtod(p, &term2); if (errno == ERANGE) { Tcl_ResetResult(interp); if (valuePtr->doubleValue == 0.0) { interp->result = "floating-point value too small to represent"; } else { interp->result = "floating-point value too large to represent"; } return TCL_ERROR; } if (term2 == infoPtr->expr) { interp->result = "poorly-formed floating-point value"; return TCL_ERROR; } valuePtr->type = TYPE_DOUBLE; infoPtr->expr = term2; } else { infoPtr->expr = term; } return TCL_OK; case '$': /* * Variable. Fetch its value, then see if it makes sense * as an integer or floating-point number. */ infoPtr->token = VALUE; var = Tcl_ParseVar(interp, p, &infoPtr->expr); if (var == NULL) { return TCL_ERROR; } if (((Interp *) interp)->noEval) { valuePtr->type = TYPE_INT; valuePtr->intValue = 0; return TCL_OK; } return ExprParseString(interp, var, valuePtr); case '[': infoPtr->token = VALUE; result = Tcl_Eval(interp, p+1, TCL_BRACKET_TERM, &infoPtr->expr); if (result != TCL_OK) { return result; } infoPtr->expr++; if (((Interp *) interp)->noEval) { valuePtr->type = TYPE_INT; valuePtr->intValue = 0; Tcl_ResetResult(interp); return TCL_OK; } result = ExprParseString(interp, interp->result, valuePtr); if (result != TCL_OK) { return result; } Tcl_ResetResult(interp); return TCL_OK; case '"': infoPtr->token = VALUE; result = TclParseQuotes(interp, infoPtr->expr, '"', 0, &infoPtr->expr, &valuePtr->pv); if (result != TCL_OK) { return result; } return ExprParseString(interp, valuePtr->pv.buffer, valuePtr); case '{': infoPtr->token = VALUE; result = TclParseBraces(interp, infoPtr->expr, &infoPtr->expr, &valuePtr->pv); if (result != TCL_OK) { return result; } return ExprParseString(interp, valuePtr->pv.buffer, valuePtr); case '(': infoPtr->token = OPEN_PAREN; return TCL_OK; case ')': infoPtr->token = CLOSE_PAREN; return TCL_OK; case '*': infoPtr->token = MULT; return TCL_OK; case '/': infoPtr->token = DIVIDE; return TCL_OK; case '%': infoPtr->token = MOD; return TCL_OK; case '+': infoPtr->token = PLUS; return TCL_OK; case '-': infoPtr->token = MINUS; return TCL_OK; case '?': infoPtr->token = QUESTY; return TCL_OK; case ':': infoPtr->token = COLON; return TCL_OK; case '<': switch (p[1]) { case '<': infoPtr->expr = p+2; infoPtr->token = LEFT_SHIFT; break; case '=': infoPtr->expr = p+2; infoPtr->token = LEQ; break; default: infoPtr->token = LESS; break; } return TCL_OK; case '>': switch (p[1]) { case '>': infoPtr->expr = p+2; infoPtr->token = RIGHT_SHIFT; break; case '=': infoPtr->expr = p+2; infoPtr->token = GEQ; break; default: infoPtr->token = GREATER; break; } return TCL_OK; case '=': if (p[1] == '=') { infoPtr->expr = p+2; infoPtr->token = EQUAL; } else { infoPtr->token = UNKNOWN; } return TCL_OK; case '!': if (p[1] == '=') { infoPtr->expr = p+2; infoPtr->token = NEQ; } else { infoPtr->token = NOT; } return TCL_OK; case '&': if (p[1] == '&') { infoPtr->expr = p+2; infoPtr->token = AND; } else { infoPtr->token = BIT_AND; } return TCL_OK; case '^': infoPtr->token = BIT_XOR; return TCL_OK; case '|': if (p[1] == '|') { infoPtr->expr = p+2; infoPtr->token = OR; } else { infoPtr->token = BIT_OR; } return TCL_OK; case '~': infoPtr->token = BIT_NOT; return TCL_OK; case 0: infoPtr->token = END; infoPtr->expr = p; return TCL_OK; default: infoPtr->expr = p+1; infoPtr->token = UNKNOWN; return TCL_OK; } } /* *---------------------------------------------------------------------- * * ExprGetValue -- * * Parse a "value" from the remainder of the expression in infoPtr. * * Results: * Normally TCL_OK is returned. The value of the expression is * returned in *valuePtr. If an error occurred, then interp->result * contains an error message and TCL_ERROR is returned. * InfoPtr->token will be left pointing to the token AFTER the * expression, and infoPtr->expr will point to the character just * after the terminating token. * * Side effects: * None. * *---------------------------------------------------------------------- */ static int ExprGetValue(interp, infoPtr, prec, valuePtr) Tcl_Interp *interp; /* Interpreter to use for error * reporting. */ register ExprInfo *infoPtr; /* Describes the state of the parse * just before the value (i.e. ExprLex * will be called to get first token * of value). */ int prec; /* Treat any un-parenthesized operator * with precedence <= this as the end * of the expression. */ Value *valuePtr; /* Where to store the value of the * expression. Caller must have * initialized pv field. */ { Interp *iPtr = (Interp *) interp; Value value2; /* Second operand for current * operator. */ int operator; /* Current operator (either unary * or binary). */ int badType; /* Type of offending argument; used * for error messages. */ int gotOp; /* Non-zero means already lexed the * operator (while picking up value * for unary operator). Don't lex * again. */ int result; /* * There are two phases to this procedure. First, pick off an initial * value. Then, parse (binary operator, value) pairs until done. */ gotOp = 0; value2.pv.buffer = value2.pv.next = value2.staticSpace; value2.pv.end = value2.pv.buffer + STATIC_STRING_SPACE - 1; value2.pv.expandProc = TclExpandParseValue; value2.pv.clientData = (ClientData) NULL; result = ExprLex(interp, infoPtr, valuePtr); if (result != TCL_OK) { goto done; } if (infoPtr->token == OPEN_PAREN) { /* * Parenthesized sub-expression. */ result = ExprGetValue(interp, infoPtr, -1, valuePtr); if (result != TCL_OK) { goto done; } if (infoPtr->token != CLOSE_PAREN) { Tcl_ResetResult(interp); sprintf(interp->result, "unmatched parentheses in expression \"%.50s\"", infoPtr->originalExpr); result = TCL_ERROR; goto done; } } else { if (infoPtr->token == MINUS) { infoPtr->token = UNARY_MINUS; } if (infoPtr->token >= UNARY_MINUS) { /* * Process unary operators. */ operator = infoPtr->token; result = ExprGetValue(interp, infoPtr, precTable[infoPtr->token], valuePtr); if (result != TCL_OK) { goto done; } switch (operator) { case UNARY_MINUS: if (valuePtr->type == TYPE_INT) { valuePtr->intValue = -valuePtr->intValue; } else if (valuePtr->type == TYPE_DOUBLE){ valuePtr->doubleValue = -valuePtr->doubleValue; } else { badType = valuePtr->type; goto illegalType; } break; case NOT: if (valuePtr->type == TYPE_INT) { valuePtr->intValue = !valuePtr->intValue; } else if (valuePtr->type == TYPE_DOUBLE) { /* * Theoretically, should be able to use * "!valuePtr->intValue", but apparently some * compilers can't handle it. */ if (valuePtr->doubleValue == 0.0) { valuePtr->intValue = 1; } else { valuePtr->intValue = 0; } valuePtr->type = TYPE_INT; } else { badType = valuePtr->type; goto illegalType; } break; case BIT_NOT: if (valuePtr->type == TYPE_INT) { valuePtr->intValue = ~valuePtr->intValue; } else { badType = valuePtr->type; goto illegalType; } break; } gotOp = 1; } else if (infoPtr->token != VALUE) { goto syntaxError; } } /* * Got the first operand. Now fetch (operator, operand) pairs. */ if (!gotOp) { result = ExprLex(interp, infoPtr, &value2); if (result != TCL_OK) { goto done; } } while (1) { operator = infoPtr->token; value2.pv.next = value2.pv.buffer; if ((operator < MULT) || (operator >= UNARY_MINUS)) { if ((operator == END) || (operator == CLOSE_PAREN)) { result = TCL_OK; goto done; } else { goto syntaxError; } } if (precTable[operator] <= prec) { result = TCL_OK; goto done; } /* * If we're doing an AND or OR and the first operand already * determines the result, don't execute anything in the * second operand: just parse. Same style for ?: pairs. */ if ((operator == AND) || (operator == OR) || (operator == QUESTY)) { if (valuePtr->type == TYPE_DOUBLE) { valuePtr->intValue = valuePtr->doubleValue != 0; valuePtr->type = TYPE_INT; } else if (valuePtr->type == TYPE_STRING) { badType = TYPE_STRING; goto illegalType; } if (((operator == AND) && !valuePtr->intValue) || ((operator == OR) && valuePtr->intValue)) { iPtr->noEval++; result = ExprGetValue(interp, infoPtr, precTable[operator], &value2); iPtr->noEval--; } else if (operator == QUESTY) { if (valuePtr->intValue != 0) { valuePtr->pv.next = valuePtr->pv.buffer; result = ExprGetValue(interp, infoPtr, precTable[operator], valuePtr); if (result != TCL_OK) { goto done; } if (infoPtr->token != COLON) { goto syntaxError; } value2.pv.next = value2.pv.buffer; iPtr->noEval++; result = ExprGetValue(interp, infoPtr, precTable[operator], &value2); iPtr->noEval--; } else { iPtr->noEval++; result = ExprGetValue(interp, infoPtr, precTable[operator], &value2); iPtr->noEval--; if (result != TCL_OK) { goto done; } if (infoPtr->token != COLON) { goto syntaxError; } valuePtr->pv.next = valuePtr->pv.buffer; result = ExprGetValue(interp, infoPtr, precTable[operator], valuePtr); } } else { result = ExprGetValue(interp, infoPtr, precTable[operator], &value2); } } else { result = ExprGetValue(interp, infoPtr, precTable[operator], &value2); } if (result != TCL_OK) { goto done; } if ((infoPtr->token < MULT) && (infoPtr->token != VALUE) && (infoPtr->token != END) && (infoPtr->token != CLOSE_PAREN)) { goto syntaxError; } /* * At this point we've got two values and an operator. Check * to make sure that the particular data types are appropriate * for the particular operator, and perform type conversion * if necessary. */ switch (operator) { /* * For the operators below, no strings are allowed and * ints get converted to floats if necessary. */ case MULT: case DIVIDE: case PLUS: case MINUS: if ((valuePtr->type == TYPE_STRING) || (value2.type == TYPE_STRING)) { badType = TYPE_STRING; goto illegalType; } if (valuePtr->type == TYPE_DOUBLE) { if (value2.type == TYPE_INT) { value2.doubleValue = value2.intValue; value2.type = TYPE_DOUBLE; } } else if (value2.type == TYPE_DOUBLE) { if (valuePtr->type == TYPE_INT) { valuePtr->doubleValue = valuePtr->intValue; valuePtr->type = TYPE_DOUBLE; } } break; /* * For the operators below, only integers are allowed. */ case MOD: case LEFT_SHIFT: case RIGHT_SHIFT: case BIT_AND: case BIT_XOR: case BIT_OR: if (valuePtr->type != TYPE_INT) { badType = valuePtr->type; goto illegalType; } else if (value2.type != TYPE_INT) { badType = value2.type; goto illegalType; } break; /* * For the operators below, any type is allowed but the * two operands must have the same type. Convert integers * to floats and either to strings, if necessary. */ case LESS: case GREATER: case LEQ: case GEQ: case EQUAL: case NEQ: if (valuePtr->type == TYPE_STRING) { if (value2.type != TYPE_STRING) { ExprMakeString(&value2); } } else if (value2.type == TYPE_STRING) { if (valuePtr->type != TYPE_STRING) { ExprMakeString(valuePtr); } } else if (valuePtr->type == TYPE_DOUBLE) { if (value2.type == TYPE_INT) { value2.doubleValue = value2.intValue; value2.type = TYPE_DOUBLE; } } else if (value2.type == TYPE_DOUBLE) { if (valuePtr->type == TYPE_INT) { valuePtr->doubleValue = valuePtr->intValue; valuePtr->type = TYPE_DOUBLE; } } break; /* * For the operators below, no strings are allowed, but * no int->double conversions are performed. */ case AND: case OR: if (valuePtr->type == TYPE_STRING) { badType = valuePtr->type; goto illegalType; } if (value2.type == TYPE_STRING) { badType = value2.type; goto illegalType; } break; /* * For the operators below, type and conversions are * irrelevant: they're handled elsewhere. */ case QUESTY: case COLON: break; /* * Any other operator is an error. */ default: interp->result = "unknown operator in expression"; result = TCL_ERROR; goto done; } /* * If necessary, convert one of the operands to the type * of the other. If the operands are incompatible with * the operator (e.g. "+" on strings) then return an * error. */ switch (operator) { case MULT: if (valuePtr->type == TYPE_INT) { valuePtr->intValue *= value2.intValue; } else { valuePtr->doubleValue *= value2.doubleValue; } break; case DIVIDE: if (valuePtr->type == TYPE_INT) { if (value2.intValue == 0) { divideByZero: interp->result = "divide by zero"; result = TCL_ERROR; goto done; } valuePtr->intValue /= value2.intValue; } else { if (value2.doubleValue == 0.0) { goto divideByZero; } valuePtr->doubleValue /= value2.doubleValue; } break; case MOD: if (value2.intValue == 0) { goto divideByZero; } valuePtr->intValue %= value2.intValue; break; case PLUS: if (valuePtr->type == TYPE_INT) { valuePtr->intValue += value2.intValue; } else { valuePtr->doubleValue += value2.doubleValue; } break; case MINUS: if (valuePtr->type == TYPE_INT) { valuePtr->intValue -= value2.intValue; } else { valuePtr->doubleValue -= value2.doubleValue; } break; case LEFT_SHIFT: valuePtr->intValue <<= value2.intValue; break; case RIGHT_SHIFT: /* * The following code is a bit tricky: it ensures that * right shifts propagate the sign bit even on machines * where ">>" won't do it by default. */ if (valuePtr->intValue < 0) { valuePtr->intValue = ~((~valuePtr->intValue) >> value2.intValue); } else { valuePtr->intValue >>= value2.intValue; } break; case LESS: if (valuePtr->type == TYPE_INT) { valuePtr->intValue = valuePtr->intValue < value2.intValue; } else if (valuePtr->type == TYPE_DOUBLE) { valuePtr->intValue = valuePtr->doubleValue < value2.doubleValue; } else { valuePtr->intValue = strcmp(valuePtr->pv.buffer, value2.pv.buffer) < 0; } valuePtr->type = TYPE_INT; break; case GREATER: if (valuePtr->type == TYPE_INT) { valuePtr->intValue = valuePtr->intValue > value2.intValue; } else if (valuePtr->type == TYPE_DOUBLE) { valuePtr->intValue = valuePtr->doubleValue > value2.doubleValue; } else { valuePtr->intValue = strcmp(valuePtr->pv.buffer, value2.pv.buffer) > 0; } valuePtr->type = TYPE_INT; break; case LEQ: if (valuePtr->type == TYPE_INT) { valuePtr->intValue = valuePtr->intValue <= value2.intValue; } else if (valuePtr->type == TYPE_DOUBLE) { valuePtr->intValue = valuePtr->doubleValue <= value2.doubleValue; } else { valuePtr->intValue = strcmp(valuePtr->pv.buffer, value2.pv.buffer) <= 0; } valuePtr->type = TYPE_INT; break; case GEQ: if (valuePtr->type == TYPE_INT) { valuePtr->intValue = valuePtr->intValue >= value2.intValue; } else if (valuePtr->type == TYPE_DOUBLE) { valuePtr->intValue = valuePtr->doubleValue >= value2.doubleValue; } else { valuePtr->intValue = strcmp(valuePtr->pv.buffer, value2.pv.buffer) >= 0; } valuePtr->type = TYPE_INT; break; case EQUAL: if (valuePtr->type == TYPE_INT) { valuePtr->intValue = valuePtr->intValue == value2.intValue; } else if (valuePtr->type == TYPE_DOUBLE) { valuePtr->intValue = valuePtr->doubleValue == value2.doubleValue; } else { valuePtr->intValue = strcmp(valuePtr->pv.buffer, value2.pv.buffer) == 0; } valuePtr->type = TYPE_INT; break; case NEQ: if (valuePtr->type == TYPE_INT) { valuePtr->intValue = valuePtr->intValue != value2.intValue; } else if (valuePtr->type == TYPE_DOUBLE) { valuePtr->intValue = valuePtr->doubleValue != value2.doubleValue; } else { valuePtr->intValue = strcmp(valuePtr->pv.buffer, value2.pv.buffer) != 0; } valuePtr->type = TYPE_INT; break; case BIT_AND: valuePtr->intValue &= value2.intValue; break; case BIT_XOR: valuePtr->intValue ^= value2.intValue; break; case BIT_OR: valuePtr->intValue |= value2.intValue; break; /* * For AND and OR, we know that the first value has already * been converted to an integer. Thus we need only consider * the possibility of int vs. double for the second value. */ case AND: if (value2.type == TYPE_DOUBLE) { value2.intValue = value2.doubleValue != 0; value2.type = TYPE_INT; } valuePtr->intValue = valuePtr->intValue && value2.intValue; break; case OR: if (value2.type == TYPE_DOUBLE) { value2.intValue = value2.doubleValue != 0; value2.type = TYPE_INT; } valuePtr->intValue = valuePtr->intValue || value2.intValue; break; case COLON: interp->result = "can't have : operator without ? first"; result = TCL_ERROR; goto done; } } done: if (value2.pv.buffer != value2.staticSpace) { ckfree(value2.pv.buffer); } return result; syntaxError: Tcl_ResetResult(interp); Tcl_AppendResult(interp, "syntax error in expression \"", infoPtr->originalExpr, "\"", (char *) NULL); result = TCL_ERROR; goto done; illegalType: Tcl_AppendResult(interp, "can't use ", (badType == TYPE_DOUBLE) ? "floating-point value" : "non-numeric string", " as operand of \"", operatorStrings[operator], "\"", (char *) NULL); result = TCL_ERROR; goto done; } /* *-------------------------------------------------------------- * * ExprMakeString -- * * Convert a value from int or double representation to * a string. * * Results: * The information at *valuePtr gets converted to string * format, if it wasn't that way already. * * Side effects: * None. * *-------------------------------------------------------------- */ static void ExprMakeString(valuePtr) register Value *valuePtr; /* Value to be converted. */ { int shortfall; shortfall = 150 - (valuePtr->pv.end - valuePtr->pv.buffer); if (shortfall > 0) { (*valuePtr->pv.expandProc)(&valuePtr->pv, shortfall); } if (valuePtr->type == TYPE_INT) { sprintf(valuePtr->pv.buffer, "%ld", valuePtr->intValue); } else if (valuePtr->type == TYPE_DOUBLE) { sprintf(valuePtr->pv.buffer, "%g", valuePtr->doubleValue); } valuePtr->type = TYPE_STRING; } /* *-------------------------------------------------------------- * * ExprTopLevel -- * * This procedure provides top-level functionality shared by * procedures like Tcl_ExprInt, Tcl_ExprDouble, etc. * * Results: * The result is a standard Tcl return value. If an error * occurs then an error message is left in interp->result. * The value of the expression is returned in *valuePtr, in * whatever form it ends up in (could be string or integer * or double). Caller may need to convert result. Caller * is also responsible for freeing string memory in *valuePtr, * if any was allocated. * * Side effects: * None. * *-------------------------------------------------------------- */ static int ExprTopLevel(interp, string, valuePtr) Tcl_Interp *interp; /* Context in which to evaluate the * expression. */ char *string; /* Expression to evaluate. */ Value *valuePtr; /* Where to store result. Should * not be initialized by caller. */ { ExprInfo info; int result; info.originalExpr = string; info.expr = string; valuePtr->pv.buffer = valuePtr->pv.next = valuePtr->staticSpace; valuePtr->pv.end = valuePtr->pv.buffer + STATIC_STRING_SPACE - 1; valuePtr->pv.expandProc = TclExpandParseValue; valuePtr->pv.clientData = (ClientData) NULL; result = ExprGetValue(interp, &info, -1, valuePtr); if (result != TCL_OK) { return result; } if (info.token != END) { Tcl_AppendResult(interp, "syntax error in expression \"", string, "\"", (char *) NULL); return TCL_ERROR; } return TCL_OK; } /* *-------------------------------------------------------------- * * Tcl_ExprLong, Tcl_ExprDouble, Tcl_ExprBoolean -- * * Procedures to evaluate an expression and return its value * in a particular form. * * Results: * Each of the procedures below returns a standard Tcl result. * If an error occurs then an error message is left in * interp->result. Otherwise the value of the expression, * in the appropriate form, is stored at *resultPtr. If * the expression had a result that was incompatible with the * desired form then an error is returned. * * Side effects: * None. * *-------------------------------------------------------------- */ int Tcl_ExprLong(interp, string, ptr) Tcl_Interp *interp; /* Context in which to evaluate the * expression. */ char *string; /* Expression to evaluate. */ long *ptr; /* Where to store result. */ { Value value; int result; result = ExprTopLevel(interp, string, &value); if (result == TCL_OK) { if (value.type == TYPE_INT) { *ptr = value.intValue; } else if (value.type == TYPE_DOUBLE) { *ptr = value.doubleValue; } else { interp->result = "expression didn't have numeric value"; result = TCL_ERROR; } } if (value.pv.buffer != value.staticSpace) { ckfree(value.pv.buffer); } return result; } int Tcl_ExprDouble(interp, string, ptr) Tcl_Interp *interp; /* Context in which to evaluate the * expression. */ char *string; /* Expression to evaluate. */ double *ptr; /* Where to store result. */ { Value value; int result; result = ExprTopLevel(interp, string, &value); if (result == TCL_OK) { if (value.type == TYPE_INT) { *ptr = value.intValue; } else if (value.type == TYPE_DOUBLE) { *ptr = value.doubleValue; } else { interp->result = "expression didn't have numeric value"; result = TCL_ERROR; } } if (value.pv.buffer != value.staticSpace) { ckfree(value.pv.buffer); } return result; } int Tcl_ExprBoolean(interp, string, ptr) Tcl_Interp *interp; /* Context in which to evaluate the * expression. */ char *string; /* Expression to evaluate. */ int *ptr; /* Where to store 0/1 result. */ { Value value; int result; result = ExprTopLevel(interp, string, &value); if (result == TCL_OK) { if (value.type == TYPE_INT) { *ptr = value.intValue != 0; } else if (value.type == TYPE_DOUBLE) { *ptr = value.doubleValue != 0.0; } else { interp->result = "expression didn't have numeric value"; result = TCL_ERROR; } } if (value.pv.buffer != value.staticSpace) { ckfree(value.pv.buffer); } return result; } /* *-------------------------------------------------------------- * * Tcl_ExprString -- * * Evaluate an expression and return its value in string form. * * Results: * A standard Tcl result. If the result is TCL_OK, then the * interpreter's result is set to the string value of the * expression. If the result is TCL_OK, then interp->result * contains an error message. * * Side effects: * None. * *-------------------------------------------------------------- */ int Tcl_ExprString(interp, string) Tcl_Interp *interp; /* Context in which to evaluate the * expression. */ char *string; /* Expression to evaluate. */ { Value value; int result; result = ExprTopLevel(interp, string, &value); if (result == TCL_OK) { if (value.type == TYPE_INT) { sprintf(interp->result, "%ld", value.intValue); } else if (value.type == TYPE_DOUBLE) { sprintf(interp->result, "%g", value.doubleValue); } else { if (value.pv.buffer != value.staticSpace) { interp->result = value.pv.buffer; interp->freeProc = (Tcl_FreeProc *) free; value.pv.buffer = value.staticSpace; } else { Tcl_SetResult(interp, value.pv.buffer, TCL_VOLATILE); } } } if (value.pv.buffer != value.staticSpace) { ckfree(value.pv.buffer); } return result; } micropolis-activity/src/tcl/tclassem.c0000664000076400007640000001326710724145723020374 0ustar simcitysimcity/* * tclAssem.c -- * * This file contains procedures to help assemble Tcl commands * from an input source where commands may arrive in pieces, e.g. * several lines of type-in corresponding to one command. * * Copyright 1990-1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/RCS/tclAssem.c,v 1.9 92/07/02 09:14:05 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include "tclint.h" /* * The structure below is the internal representation for a command * buffer, which is used to hold a piece of a command until a full * command is available. When a full command is available, it will * be returned to the user, but it will also be retained in the buffer * until the NEXT call to Tcl_AssembleCmd, at which point it will be * removed. */ typedef struct { char *buffer; /* Storage for command being assembled. * Malloc-ed, and grows as needed. */ int bufSize; /* Total number of bytes in buffer. */ int bytesUsed; /* Number of bytes in buffer currently * occupied (0 means there is not a * buffered incomplete command). */ } CmdBuf; /* * Default amount of space to allocate in command buffer: */ #define CMD_BUF_SIZE 100 /* *---------------------------------------------------------------------- * * Tcl_CreateCmdBuf -- * * Allocate and initialize a command buffer. * * Results: * The return value is a token that may be passed to * Tcl_AssembleCmd and Tcl_DeleteCmdBuf. * * Side effects: * Memory is allocated. * *---------------------------------------------------------------------- */ Tcl_CmdBuf Tcl_CreateCmdBuf() { register CmdBuf *cbPtr; cbPtr = (CmdBuf *) ckalloc(sizeof(CmdBuf)); cbPtr->buffer = (char *) ckalloc(CMD_BUF_SIZE); cbPtr->buffer[0] = '\0'; cbPtr->bufSize = CMD_BUF_SIZE; cbPtr->bytesUsed = 0; return (Tcl_CmdBuf) cbPtr; } /* *---------------------------------------------------------------------- * * Tcl_DeleteCmdBuf -- * * Release all of the resources associated with a command buffer. * The caller should never again use buffer again. * * Results: * None. * * Side effects: * Memory is released. * *---------------------------------------------------------------------- */ void Tcl_DeleteCmdBuf(buffer) Tcl_CmdBuf buffer; /* Token for command buffer (return value * from previous call to Tcl_CreateCmdBuf). */ { register CmdBuf *cbPtr = (CmdBuf *) buffer; ckfree(cbPtr->buffer); ckfree((char *) cbPtr); } /* *---------------------------------------------------------------------- * * Tcl_AssembleCmd -- * * This is a utility procedure to assist in situations where * commands may be read piece-meal from some input source. Given * some input text, it adds the text to an input buffer and returns * whole commands when they are ready. * * Results: * If the addition of string to any currently-buffered information * results in one or more complete Tcl commands, then the return value * is a pointer to the complete command(s). The command value will * only be valid until the next call to this procedure with the * same buffer. If the addition of string leaves an incomplete * command at the end of the buffer, then NULL is returned. * * Side effects: * If string leaves a command incomplete, the partial command * information is buffered for use in later calls to this procedure. * Once a command has been returned, that command is deleted from * the buffer on the next call to this procedure. * *---------------------------------------------------------------------- */ char * Tcl_AssembleCmd(buffer, string) Tcl_CmdBuf buffer; /* Token for a command buffer previously * created by Tcl_CreateCmdBuf. */ char *string; /* Bytes to be appended to command stream. * Note: if the string is zero length, * then whatever is buffered will be * considered to be a complete command * regardless of whether parentheses are * matched or not. */ { register CmdBuf *cbPtr = (CmdBuf *) buffer; int length, totalLength; register char *p; /* * If an empty string is passed in, just pretend the current * command is complete, whether it really is or not. */ length = strlen(string); if (length == 0) { cbPtr->bytesUsed = 0; return cbPtr->buffer; } /* * Add the new information to the buffer. If the current buffer * isn't large enough, grow it by at least a factor of two, or * enough to hold the new text. */ length = strlen(string); totalLength = cbPtr->bytesUsed + length + 1; if (totalLength > cbPtr->bufSize) { unsigned int newSize; char *newBuf; newSize = cbPtr->bufSize*2; if (newSize < totalLength) { newSize = totalLength; } newBuf = (char *) ckalloc(newSize); strcpy(newBuf, cbPtr->buffer); ckfree(cbPtr->buffer); cbPtr->buffer = newBuf; cbPtr->bufSize = newSize; } strcpy(cbPtr->buffer+cbPtr->bytesUsed, string); cbPtr->bytesUsed += length; /* * See if there is now a complete command in the buffer. */ p = cbPtr->buffer; while (1) { int gotNewLine = 0; while (isspace(*p)) { if (*p == '\n') { gotNewLine = 1; } p++; } if (*p == 0) { if (gotNewLine) { cbPtr->bytesUsed = 0; return cbPtr->buffer; } return NULL; } p = TclWordEnd(p, 0); } } micropolis-activity/src/tcl/tcl.h0000664000076400007640000002704210724145723017344 0ustar simcitysimcity/* * tcl.h -- * * This header file describes the externally-visible facilities * of the Tcl interpreter. * * Copyright 1987-1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. * * $Header: /user6/ouster/tcl/RCS/tcl.h,v 1.84 92/08/07 08:21:34 ouster Exp $ SPRITE (Berkeley) */ #ifndef _TCL #define _TCL #define TCL_VERSION "6.4" /* * Definitions that allow this header file to be used either with or * without ANSI C features like function prototypes. */ #undef _ANSI_ARGS_ #undef const #if ((defined(__STDC__) || defined(SABER)) && !defined(NO_PROTOTYPE)) || defined(__cplusplus) # define _ANSI_ARGS_(x) x # define CONST const # ifdef __cplusplus # define VARARGS (...) # else # define VARARGS () # endif #else # define _ANSI_ARGS_(x) () # define CONST #endif #ifdef __cplusplus # define EXTERN extern "C" #else # define EXTERN extern #endif /* * Miscellaneous declarations (to allow Tcl to be used stand-alone, * without the rest of Sprite). */ #ifndef NULL #define NULL 0 #endif #ifndef _CLIENTDATA typedef int *ClientData; #define _CLIENTDATA #endif /* * Data structures defined opaquely in this module. The definitions * below just provide dummy types. A few fields are made visible in * Tcl_Interp structures, namely those for returning string values. * Note: any change to the Tcl_Interp definition below must be mirrored * in the "real" definition in tclInt.h. */ typedef struct Tcl_Interp{ char *result; /* Points to result string returned by last * command. */ void (*freeProc) _ANSI_ARGS_((char *blockPtr)); /* Zero means result is statically allocated. * If non-zero, gives address of procedure * to invoke to free the result. Must be * freed by Tcl_Eval before executing next * command. */ int errorLine; /* When TCL_ERROR is returned, this gives * the line number within the command where * the error occurred (1 means first line). */ } Tcl_Interp; typedef int *Tcl_Trace; typedef int *Tcl_CmdBuf; /* * When a TCL command returns, the string pointer interp->result points to * a string containing return information from the command. In addition, * the command procedure returns an integer value, which is one of the * following: * * TCL_OK Command completed normally; interp->result contains * the command's result. * TCL_ERROR The command couldn't be completed successfully; * interp->result describes what went wrong. * TCL_RETURN The command requests that the current procedure * return; interp->result contains the procedure's * return value. * TCL_BREAK The command requests that the innermost loop * be exited; interp->result is meaningless. * TCL_CONTINUE Go on to the next iteration of the current loop; * interp->result is meaninless. */ #define TCL_OK 0 #define TCL_ERROR 1 #define TCL_RETURN 2 #define TCL_BREAK 3 #define TCL_CONTINUE 4 #define TCL_RESULT_SIZE 199 /* * Procedure types defined by Tcl: */ typedef void (Tcl_CmdDeleteProc) _ANSI_ARGS_((ClientData clientData)); typedef int (Tcl_CmdProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])); typedef void (Tcl_CmdTraceProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int level, char *command, Tcl_CmdProc *proc, ClientData cmdClientData, int argc, char *argv[])); typedef void (Tcl_FreeProc) _ANSI_ARGS_((char *blockPtr)); typedef char *(Tcl_VarTraceProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, char *name1, char *name2, int flags)); /* * Flag values passed to Tcl_Eval (see the man page for details; also * see tclInt.h for additional flags that are only used internally by * Tcl): */ #define TCL_BRACKET_TERM 1 /* * Flag that may be passed to Tcl_ConvertElement to force it not to * output braces (careful! if you change this flag be sure to change * the definitions at the front of tclUtil.c). */ #define TCL_DONT_USE_BRACES 1 /* * Flag value passed to Tcl_RecordAndEval to request no evaluation * (record only). */ #define TCL_NO_EVAL -1 /* * Specil freeProc values that may be passed to Tcl_SetResult (see * the man page for details): */ #define TCL_VOLATILE ((Tcl_FreeProc *) -1) #define TCL_STATIC ((Tcl_FreeProc *) 0) #define TCL_DYNAMIC ((Tcl_FreeProc *) free) /* * Flag values passed to variable-related procedures. */ #define TCL_GLOBAL_ONLY 1 #define TCL_APPEND_VALUE 2 #define TCL_LIST_ELEMENT 4 #define TCL_NO_SPACE 8 #define TCL_TRACE_READS 0x10 #define TCL_TRACE_WRITES 0x20 #define TCL_TRACE_UNSETS 0x40 #define TCL_TRACE_DESTROYED 0x80 #define TCL_INTERP_DESTROYED 0x100 #define TCL_LEAVE_ERR_MSG 0x200 /* * Additional flag passed back to variable watchers. This flag must * not overlap any of the TCL_TRACE_* flags defined above or the * TRACE_* flags defined in tclInt.h. */ #define TCL_VARIABLE_UNDEFINED 8 /* * The following declarations either map ckalloc and ckfree to * malloc and free, or they map them to procedures with all sorts * of debugging hooks defined in tclCkalloc.c. */ #ifdef TCL_MEM_DEBUG EXTERN char * Tcl_DbCkalloc _ANSI_ARGS_((unsigned int size, char *file, int line)); EXTERN int Tcl_DbCkfree _ANSI_ARGS_((char *ptr, char *file, int line)); # define ckalloc(x) Tcl_DbCkalloc(x, __FILE__, __LINE__) # define ckfree(x) Tcl_DbCkfree(x, __FILE__, __LINE__) #else # define ckalloc(x) malloc(x) # define ckfree(x) free(x) #endif /* TCL_MEM_DEBUG */ /* * Macro to free up result of interpreter. */ #define Tcl_FreeResult(interp) \ if ((interp)->freeProc != 0) { \ if ((interp)->freeProc == (Tcl_FreeProc *) free) { \ ckfree((interp)->result); \ } else { \ (*(interp)->freeProc)((interp)->result); \ } \ (interp)->freeProc = 0; \ } /* * Exported Tcl procedures: */ EXTERN void Tcl_AppendElement _ANSI_ARGS_((Tcl_Interp *interp, char *string, int noSep)); EXTERN void Tcl_AppendResult _ANSI_ARGS_((Tcl_Interp *interp, ...)); EXTERN char * Tcl_AssembleCmd _ANSI_ARGS_((Tcl_CmdBuf buffer, char *string)); EXTERN void Tcl_AddErrorInfo _ANSI_ARGS_((Tcl_Interp *interp, char *message)); EXTERN char Tcl_Backslash _ANSI_ARGS_((char *src, int *readPtr)); EXTERN char * Tcl_Concat _ANSI_ARGS_((int argc, char **argv)); EXTERN int Tcl_ConvertElement _ANSI_ARGS_((char *src, char *dst, int flags)); EXTERN Tcl_CmdBuf Tcl_CreateCmdBuf _ANSI_ARGS_((void)); EXTERN void Tcl_CreateCommand _ANSI_ARGS_((Tcl_Interp *interp, char *cmdName, Tcl_CmdProc *proc, ClientData clientData, Tcl_CmdDeleteProc *deleteProc)); EXTERN Tcl_Interp * Tcl_CreateInterp _ANSI_ARGS_((void)); EXTERN int Tcl_CreatePipeline _ANSI_ARGS_((Tcl_Interp *interp, int argc, char **argv, int **pidArrayPtr, int *inPipePtr, int *outPipePtr, int *errFilePtr)); EXTERN Tcl_Trace Tcl_CreateTrace _ANSI_ARGS_((Tcl_Interp *interp, int level, Tcl_CmdTraceProc *proc, ClientData clientData)); EXTERN void Tcl_DeleteCmdBuf _ANSI_ARGS_((Tcl_CmdBuf buffer)); EXTERN int Tcl_DeleteCommand _ANSI_ARGS_((Tcl_Interp *interp, char *cmdName)); EXTERN void Tcl_DeleteInterp _ANSI_ARGS_((Tcl_Interp *interp)); EXTERN void Tcl_DeleteTrace _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Trace trace)); EXTERN void Tcl_DetachPids _ANSI_ARGS_((int numPids, int *pidPtr)); EXTERN int Tcl_DumpActiveMemory _ANSI_ARGS_((char *fileName)); EXTERN char * Tcl_ErrnoId _ANSI_ARGS_((void)); EXTERN int Tcl_Eval _ANSI_ARGS_((Tcl_Interp *interp, char *cmd, int flags, char **termPtr)); EXTERN int Tcl_EvalFile _ANSI_ARGS_((Tcl_Interp *interp, char *fileName)); EXTERN int Tcl_ExprBoolean _ANSI_ARGS_((Tcl_Interp *interp, char *string, int *ptr)); EXTERN int Tcl_ExprDouble _ANSI_ARGS_((Tcl_Interp *interp, char *string, double *ptr)); EXTERN int Tcl_ExprLong _ANSI_ARGS_((Tcl_Interp *interp, char *string, long *ptr)); EXTERN int Tcl_ExprString _ANSI_ARGS_((Tcl_Interp *interp, char *string)); EXTERN int Tcl_Fork _ANSI_ARGS_((void)); EXTERN int Tcl_GetBoolean _ANSI_ARGS_((Tcl_Interp *interp, char *string, int *boolPtr)); EXTERN int Tcl_GetDouble _ANSI_ARGS_((Tcl_Interp *interp, char *string, double *doublePtr)); EXTERN int Tcl_GetInt _ANSI_ARGS_((Tcl_Interp *interp, char *string, int *intPtr)); EXTERN char * Tcl_GetVar _ANSI_ARGS_((Tcl_Interp *interp, char *varName, int flags)); EXTERN char * Tcl_GetVar2 _ANSI_ARGS_((Tcl_Interp *interp, char *name1, char *name2, int flags)); EXTERN int Tcl_GlobalEval _ANSI_ARGS_((Tcl_Interp *interp, char *command)); EXTERN void Tcl_InitHistory _ANSI_ARGS_((Tcl_Interp *interp)); EXTERN void Tcl_InitMemory _ANSI_ARGS_((Tcl_Interp *interp)); EXTERN char * Tcl_Merge _ANSI_ARGS_((int argc, char **argv)); EXTERN char * Tcl_ParseVar _ANSI_ARGS_((Tcl_Interp *interp, char *string, char **termPtr)); EXTERN int Tcl_RecordAndEval _ANSI_ARGS_((Tcl_Interp *interp, char *cmd, int flags)); EXTERN void Tcl_ResetResult _ANSI_ARGS_((Tcl_Interp *interp)); #define Tcl_Return Tcl_SetResult EXTERN int Tcl_ScanElement _ANSI_ARGS_((char *string, int *flagPtr)); EXTERN void Tcl_SetErrorCode _ANSI_ARGS_((Tcl_Interp *interp, ...)); EXTERN void Tcl_SetResult _ANSI_ARGS_((Tcl_Interp *interp, char *string, Tcl_FreeProc *freeProc)); EXTERN char * Tcl_SetVar _ANSI_ARGS_((Tcl_Interp *interp, char *varName, char *newValue, int flags)); EXTERN char * Tcl_SetVar2 _ANSI_ARGS_((Tcl_Interp *interp, char *name1, char *name2, char *newValue, int flags)); EXTERN char * Tcl_SignalId _ANSI_ARGS_((int sig)); EXTERN char * Tcl_SignalMsg _ANSI_ARGS_((int sig)); EXTERN int Tcl_SplitList _ANSI_ARGS_((Tcl_Interp *interp, char *list, int *argcPtr, char ***argvPtr)); EXTERN int Tcl_StringMatch _ANSI_ARGS_((char *string, char *pattern)); EXTERN char * Tcl_TildeSubst _ANSI_ARGS_((Tcl_Interp *interp, char *name)); EXTERN int Tcl_TraceVar _ANSI_ARGS_((Tcl_Interp *interp, char *varName, int flags, Tcl_VarTraceProc *proc, ClientData clientData)); EXTERN int Tcl_TraceVar2 _ANSI_ARGS_((Tcl_Interp *interp, char *name1, char *name2, int flags, Tcl_VarTraceProc *proc, ClientData clientData)); EXTERN char * Tcl_UnixError _ANSI_ARGS_((Tcl_Interp *interp)); EXTERN int Tcl_UnsetVar _ANSI_ARGS_((Tcl_Interp *interp, char *varName, int flags)); EXTERN int Tcl_UnsetVar2 _ANSI_ARGS_((Tcl_Interp *interp, char *name1, char *name2, int flags)); EXTERN void Tcl_UntraceVar _ANSI_ARGS_((Tcl_Interp *interp, char *varName, int flags, Tcl_VarTraceProc *proc, ClientData clientData)); EXTERN void Tcl_UntraceVar2 _ANSI_ARGS_((Tcl_Interp *interp, char *name1, char *name2, int flags, Tcl_VarTraceProc *proc, ClientData clientData)); EXTERN int Tcl_VarEval _ANSI_ARGS_((Tcl_Interp *interp, ...)); EXTERN ClientData Tcl_VarTraceInfo _ANSI_ARGS_((Tcl_Interp *interp, char *varName, int flags, Tcl_VarTraceProc *procPtr, ClientData prevClientData)); EXTERN ClientData Tcl_VarTraceInfo2 _ANSI_ARGS_((Tcl_Interp *interp, char *name1, char *name2, int flags, Tcl_VarTraceProc *procPtr, ClientData prevClientData)); EXTERN int Tcl_WaitPids _ANSI_ARGS_((int numPids, int *pidPtr, int *statusPtr)); #endif /* _TCL */ micropolis-activity/src/tcl/panic.c0000664000076400007640000000310310724145723017637 0ustar simcitysimcity/* * panic.c -- * * Source code for the "panic" library procedure for Tcl; * individual applications will probably override this with * an application-specific panic procedure. * * Copyright 1988-1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/RCS/panic.c,v 1.3 91/10/10 11:25:51 ouster Exp $ SPRITE (Berkeley)"; #endif #include #include /* *---------------------------------------------------------------------- * * panic -- * * Print an error message and kill the process. * * Results: * None. * * Side effects: * The process dies, entering the debugger if possible. * *---------------------------------------------------------------------- */ /* VARARGS ARGSUSED */ void panic(format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) char *format; /* Format string, suitable for passing to * fprintf. */ char *arg1, *arg2, *arg3; /* Additional arguments (variable in number) * to pass to fprintf. */ char *arg4, *arg5, *arg6, *arg7, *arg8; { (void) fprintf(stderr, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); (void) fflush(stderr); abort(); } micropolis-activity/src/tcl/tclhash.h0000664000076400007640000001155010724145723020205 0ustar simcitysimcity/* * tclHash.h -- * * This header file declares the facilities provided by the * Tcl hash table procedures. * * Copyright 1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. * * $Header: /sprite/src/lib/tcl/RCS/tclHash.h,v 1.3 91/08/27 11:36:04 ouster Exp $ SPRITE (Berkeley) */ #ifndef _TCLHASH #define _TCLHASH #ifndef _TCL #include #endif /* * Structure definition for an entry in a hash table. No-one outside * Tcl should access any of these fields directly; use the macros * defined below. */ typedef struct Tcl_HashEntry { struct Tcl_HashEntry *nextPtr; /* Pointer to next entry in this * hash bucket, or NULL for end of * chain. */ struct Tcl_HashTable *tablePtr; /* Pointer to table containing entry. */ struct Tcl_HashEntry **bucketPtr; /* Pointer to bucket that points to * first entry in this entry's chain: * used for deleting the entry. */ ClientData clientData; /* Application stores something here * with Tcl_SetHashValue. */ union { /* Key has one of these forms: */ char *oneWordValue; /* One-word value for key. */ int words[1]; /* Multiple integer words for key. * The actual size will be as large * as necessary for this table's * keys. */ char string[4]; /* String for key. The actual size * will be as large as needed to hold * the key. */ } key; /* MUST BE LAST FIELD IN RECORD!! */ } Tcl_HashEntry; /* * Structure definition for a hash table. Must be in tcl.h so clients * can allocate space for these structures, but clients should never * access any fields in this structure. */ #define TCL_SMALL_HASH_TABLE 4 typedef struct Tcl_HashTable { Tcl_HashEntry **buckets; /* Pointer to bucket array. Each * element points to first entry in * bucket's hash chain, or NULL. */ Tcl_HashEntry *staticBuckets[TCL_SMALL_HASH_TABLE]; /* Bucket array used for small tables * (to avoid mallocs and frees). */ int numBuckets; /* Total number of buckets allocated * at **bucketPtr. */ int numEntries; /* Total number of entries present * in table. */ int rebuildSize; /* Enlarge table when numEntries gets * to be this large. */ int downShift; /* Shift count used in hashing * function. Designed to use high- * order bits of randomized keys. */ int mask; /* Mask value used in hashing * function. */ int keyType; /* Type of keys used in this table. * It's either TCL_STRING_KEYS, * TCL_ONE_WORD_KEYS, or an integer * giving the number of ints in a */ Tcl_HashEntry *(*findProc) _ANSI_ARGS_((struct Tcl_HashTable *tablePtr, char *key)); Tcl_HashEntry *(*createProc) _ANSI_ARGS_((struct Tcl_HashTable *tablePtr, char *key, int *newPtr)); } Tcl_HashTable; /* * Structure definition for information used to keep track of searches * through hash tables: */ typedef struct Tcl_HashSearch { Tcl_HashTable *tablePtr; /* Table being searched. */ int nextIndex; /* Index of next bucket to be * enumerated after present one. */ Tcl_HashEntry *nextEntryPtr; /* Next entry to be enumerated in the * the current bucket. */ } Tcl_HashSearch; /* * Acceptable key types for hash tables: */ #define TCL_STRING_KEYS 0 #define TCL_ONE_WORD_KEYS 1 /* * Macros for clients to use to access fields of hash entries: */ #define Tcl_GetHashValue(h) ((h)->clientData) #define Tcl_SetHashValue(h, value) ((h)->clientData = (ClientData) (value)) #define Tcl_GetHashKey(tablePtr, h) \ ((char *) (((tablePtr)->keyType == TCL_ONE_WORD_KEYS) ? (h)->key.oneWordValue \ : (h)->key.string)) /* * Macros to use for clients to use to invoke find and create procedures * for hash tables: */ #define Tcl_FindHashEntry(tablePtr, key) \ (*((tablePtr)->findProc))(tablePtr, key) #define Tcl_CreateHashEntry(tablePtr, key, newPtr) \ (*((tablePtr)->createProc))(tablePtr, key, newPtr) /* * Exported procedures: */ extern void Tcl_DeleteHashEntry _ANSI_ARGS_(( Tcl_HashEntry *entryPtr)); extern void Tcl_DeleteHashTable _ANSI_ARGS_(( Tcl_HashTable *tablePtr)); extern Tcl_HashEntry * Tcl_FirstHashEntry _ANSI_ARGS_(( Tcl_HashTable *tablePtr, Tcl_HashSearch *searchPtr)); extern char * Tcl_HashStats _ANSI_ARGS_((Tcl_HashTable *tablePtr)); extern void Tcl_InitHashTable _ANSI_ARGS_((Tcl_HashTable *tablePtr, int keyType)); extern Tcl_HashEntry * Tcl_NextHashEntry _ANSI_ARGS_(( Tcl_HashSearch *searchPtr)); #endif /* _TCLHASH */ micropolis-activity/src/tcl/tclunxut.c0000664000076400007640000006740410724145723020451 0ustar simcitysimcity/* * tclUnixUtil.c -- * * This file contains a collection of utility procedures that * are present in the Tcl's UNIX core but not in the generic * core. For example, they do file manipulation and process * manipulation. * * The Tcl_Fork and Tcl_WaitPids procedures are based on code * contributed by Karl Lehenbauer, Mark Diekhans and Peter * da Silva. * * Copyright 1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that this copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/RCS/tclUnixUtil.c,v 1.18 91/11/21 14:53:46 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include "tclint.h" #include "tclunix.h" /* * Data structures of the following type are used by Tcl_Fork and * Tcl_WaitPids to keep track of child processes. */ typedef struct { int pid; /* Process id of child. */ WAIT_STATUS_TYPE status; /* Status returned when child exited or * suspended. */ int flags; /* Various flag bits; see below for * definitions. */ } WaitInfo; /* * Flag bits in WaitInfo structures: * * WI_READY - Non-zero means process has exited or * suspended since it was forked or last * returned by Tcl_WaitPids. * WI_DETACHED - Non-zero means no-one cares about the * process anymore. Ignore it until it * exits, then forget about it. */ #define WI_READY 1 #define WI_DETACHED 2 static WaitInfo *waitTable = NULL; static int waitTableSize = 0; /* Total number of entries available in * waitTable. */ static int waitTableUsed = 0; /* Number of entries in waitTable that * are actually in use right now. Active * entries are always at the beginning * of the table. */ #define WAIT_TABLE_GROW_BY 4 /* *---------------------------------------------------------------------- * * Tcl_EvalFile -- * * Read in a file and process the entire file as one gigantic * Tcl command. * * Results: * A standard Tcl result, which is either the result of executing * the file or an error indicating why the file couldn't be read. * * Side effects: * Depends on the commands in the file. * *---------------------------------------------------------------------- */ int Tcl_EvalFile(interp, fileName) Tcl_Interp *interp; /* Interpreter in which to process file. */ char *fileName; /* Name of file to process. Tilde-substitution * will be performed on this name. */ { int fileId, result; struct stat statBuf; char *cmdBuffer, *end, *oldScriptFile; Interp *iPtr = (Interp *) interp; oldScriptFile = iPtr->scriptFile; iPtr->scriptFile = fileName; fileName = Tcl_TildeSubst(interp, fileName); if (fileName == NULL) { goto error; } #ifdef MSDOS filename2DOS(fileName); #endif fileId = open(fileName, O_RDONLY, 0); if (fileId < 0) { Tcl_AppendResult(interp, "couldn't read file \"", fileName, "\": ", Tcl_UnixError(interp), (char *) NULL); goto error; } if (fstat(fileId, &statBuf) == -1) { Tcl_AppendResult(interp, "couldn't stat file \"", fileName, "\": ", Tcl_UnixError(interp), (char *) NULL); close(fileId); goto error; } cmdBuffer = (char *) ckalloc((unsigned) statBuf.st_size+1); #ifdef MSDOS if (read(fileId, cmdBuffer, (int) statBuf.st_size) < 0) { #else if (read(fileId, cmdBuffer, (int) statBuf.st_size) != statBuf.st_size) { #endif Tcl_AppendResult(interp, "error in reading file \"", fileName, "\": ", Tcl_UnixError(interp), (char *) NULL); close(fileId); goto error; } if (close(fileId) != 0) { Tcl_AppendResult(interp, "error closing file \"", fileName, "\": ", Tcl_UnixError(interp), (char *) NULL); goto error; } cmdBuffer[statBuf.st_size] = 0; result = Tcl_Eval(interp, cmdBuffer, 0, &end); if (result == TCL_RETURN) { result = TCL_OK; } if (result == TCL_ERROR) { char msg[200]; /* * Record information telling where the error occurred. */ sprintf(msg, "\n (file \"%.150s\" line %d)", fileName, interp->errorLine); Tcl_AddErrorInfo(interp, msg); } ckfree(cmdBuffer); iPtr->scriptFile = oldScriptFile; return result; error: iPtr->scriptFile = oldScriptFile; return TCL_ERROR; } /* *---------------------------------------------------------------------- * * Tcl_Fork -- * * Create a new process using the vfork system call, and keep * track of it for "safe" waiting with Tcl_WaitPids. * * Results: * The return value is the value returned by the vfork system * call (0 means child, > 0 means parent (value is child id), * < 0 means error). * * Side effects: * A new process is created, and an entry is added to an internal * table of child processes if the process is created successfully. * *---------------------------------------------------------------------- */ int Tcl_Fork() { WaitInfo *waitPtr; pid_t pid; /* * Disable SIGPIPE signals: if they were allowed, this process * might go away unexpectedly if children misbehave. This code * can potentially interfere with other application code that * expects to handle SIGPIPEs; what's really needed is an * arbiter for signals to allow them to be "shared". */ if (waitTable == NULL) { (void) signal(SIGPIPE, SIG_IGN); } /* * Enlarge the wait table if there isn't enough space for a new * entry. */ if (waitTableUsed == waitTableSize) { int newSize; WaitInfo *newWaitTable; newSize = waitTableSize + WAIT_TABLE_GROW_BY; newWaitTable = (WaitInfo *) ckalloc((unsigned) (newSize * sizeof(WaitInfo))); memcpy((VOID *) newWaitTable, (VOID *) waitTable, (waitTableSize * sizeof(WaitInfo))); if (waitTable != NULL) { ckfree((char *) waitTable); } waitTable = newWaitTable; waitTableSize = newSize; } /* * Make a new process and enter it into the table if the fork * is successful. */ waitPtr = &waitTable[waitTableUsed]; pid = fork(); if (pid > 0) { waitPtr->pid = pid; waitPtr->flags = 0; waitTableUsed++; } return pid; } /* *---------------------------------------------------------------------- * * Tcl_WaitPids -- * * This procedure is used to wait for one or more processes created * by Tcl_Fork to exit or suspend. It records information about * all processes that exit or suspend, even those not waited for, * so that later waits for them will be able to get the status * information. * * Results: * -1 is returned if there is an error in the wait kernel call. * Otherwise the pid of an exited/suspended process from *pidPtr * is returned and *statusPtr is set to the status value returned * by the wait kernel call. * * Side effects: * Doesn't return until one of the pids at *pidPtr exits or suspends. * *---------------------------------------------------------------------- */ int Tcl_WaitPids(numPids, pidPtr, statusPtr) int numPids; /* Number of pids to wait on: gives size * of array pointed to by pidPtr. */ int *pidPtr; /* Pids to wait on: return when one of * these processes exits or suspends. */ int *statusPtr; /* Wait status is returned here. */ { int i, count, pid; register WaitInfo *waitPtr; int anyProcesses; WAIT_STATUS_TYPE status; while (1) { /* * Scan the table of child processes to see if one of the * specified children has already exited or suspended. If so, * remove it from the table and return its status. */ anyProcesses = 0; for (waitPtr = waitTable, count = waitTableUsed; count > 0; waitPtr++, count--) { for (i = 0; i < numPids; i++) { if (pidPtr[i] != waitPtr->pid) { continue; } anyProcesses = 1; if (waitPtr->flags & WI_READY) { *statusPtr = *((int *) &waitPtr->status); pid = waitPtr->pid; if (WIFEXITED(waitPtr->status) || WIFSIGNALED(waitPtr->status)) { *waitPtr = waitTable[waitTableUsed-1]; waitTableUsed--; } else { waitPtr->flags &= ~WI_READY; } return pid; } } } /* * Make sure that the caller at least specified one valid * process to wait for. */ if (!anyProcesses) { errno = ECHILD; return -1; } /* * Wait for a process to exit or suspend, then update its * entry in the table and go back to the beginning of the * loop to see if it's one of the desired processes. */ pid = wait(&status); if (pid < 0) { return pid; } for (waitPtr = waitTable, count = waitTableUsed; ; waitPtr++, count--) { if (count == 0) { break; /* Ignore unknown processes. */ } if (pid != waitPtr->pid) { continue; } /* * If the process has been detached, then ignore anything * other than an exit, and drop the entry on exit. */ if (waitPtr->flags & WI_DETACHED) { if (WIFEXITED(status) || WIFSIGNALED(status)) { *waitPtr = waitTable[waitTableUsed-1]; waitTableUsed--; } } else { waitPtr->status = status; waitPtr->flags |= WI_READY; } break; } } } /* *---------------------------------------------------------------------- * * Tcl_DetachPids -- * * This procedure is called to indicate that one or more child * processes have been placed in background and are no longer * cared about. They should be ignored in future calls to * Tcl_WaitPids. * * Results: * None. * * Side effects: * None. * *---------------------------------------------------------------------- */ void Tcl_DetachPids(numPids, pidPtr) int numPids; /* Number of pids to detach: gives size * of array pointed to by pidPtr. */ int *pidPtr; /* Array of pids to detach: must have * been created by Tcl_Fork. */ { register WaitInfo *waitPtr; int i, count, pid; for (i = 0; i < numPids; i++) { pid = pidPtr[i]; for (waitPtr = waitTable, count = waitTableUsed; count > 0; waitPtr++, count--) { if (pid != waitPtr->pid) { continue; } /* * If the process has already exited then destroy its * table entry now. */ if ((waitPtr->flags & WI_READY) && (WIFEXITED(waitPtr->status) || WIFSIGNALED(waitPtr->status))) { *waitPtr = waitTable[waitTableUsed-1]; waitTableUsed--; } else { waitPtr->flags |= WI_DETACHED; } goto nextPid; } panic("Tcl_Detach couldn't find process"); nextPid: continue; } } /* *---------------------------------------------------------------------- * * Tcl_CreatePipeline -- * * Given an argc/argv array, instantiate a pipeline of processes * as described by the argv. * * Results: * The return value is a count of the number of new processes * created, or -1 if an error occurred while creating the pipeline. * *pidArrayPtr is filled in with the address of a dynamically * allocated array giving the ids of all of the processes. It * is up to the caller to free this array when it isn't needed * anymore. If inPipePtr is non-NULL, *inPipePtr is filled in * with the file id for the input pipe for the pipeline (if any): * the caller must eventually close this file. If outPipePtr * isn't NULL, then *outPipePtr is filled in with the file id * for the output pipe from the pipeline: the caller must close * this file. If errFilePtr isn't NULL, then *errFilePtr is filled * with a file id that may be used to read error output after the * pipeline completes. * * Side effects: * Processes and pipes are created. * *---------------------------------------------------------------------- */ int Tcl_CreatePipeline(interp, argc, argv, pidArrayPtr, inPipePtr, outPipePtr, errFilePtr) Tcl_Interp *interp; /* Interpreter to use for error reporting. */ int argc; /* Number of entries in argv. */ char **argv; /* Array of strings describing commands in * pipeline plus I/O redirection with <, * <<, and >. Argv[argc] must be NULL. */ int **pidArrayPtr; /* Word at *pidArrayPtr gets filled in with * address of array of pids for processes * in pipeline (first pid is first process * in pipeline). */ int *inPipePtr; /* If non-NULL, input to the pipeline comes * from a pipe (unless overridden by * redirection in the command). The file * id with which to write to this pipe is * stored at *inPipePtr. -1 means command * specified its own input source. */ int *outPipePtr; /* If non-NULL, output to the pipeline goes * to a pipe, unless overriden by redirection * in the command. The file id with which to * read frome this pipe is stored at * *outPipePtr. -1 means command specified * its own output sink. */ int *errFilePtr; /* If non-NULL, all stderr output from the * pipeline will go to a temporary file * created here, and a descriptor to read * the file will be left at *errFilePtr. * The file will be removed already, so * closing this descriptor will be the end * of the file. If this is NULL, then * all stderr output goes to our stderr. */ { int *pidPtr = NULL; /* Points to malloc-ed array holding all * the pids of child processes. */ int numPids = 0; /* Actual number of processes that exist * at *pidPtr right now. */ int cmdCount; /* Count of number of distinct commands * found in argc/argv. */ char *input = NULL; /* Describes input for pipeline, depending * on "inputFile". NULL means take input * from stdin/pipe. */ int inputFile = 0; /* Non-zero means input is name of input * file. Zero means input holds actual * text to be input to command. */ char *output = NULL; /* Holds name of output file to pipe to, * or NULL if output goes to stdout/pipe. */ int inputId = -1; /* Readable file id input to current command in * pipeline (could be file or pipe). -1 * means use stdin. */ int outputId = -1; /* Writable file id for output from current * command in pipeline (could be file or pipe). * -1 means use stdout. */ int errorId = -1; /* Writable file id for all standard error * output from all commands in pipeline. -1 * means use stderr. */ int lastOutputId = -1; /* Write file id for output from last command * in pipeline (could be file or pipe). * -1 means use stdout. */ int pipeIds[2]; /* File ids for pipe that's being created. */ int firstArg, lastArg; /* Indexes of first and last arguments in * current command. */ int lastBar; char *execName; int i, j, pid; if (inPipePtr != NULL) { *inPipePtr = -1; } if (outPipePtr != NULL) { *outPipePtr = -1; } if (errFilePtr != NULL) { *errFilePtr = -1; } pipeIds[0] = pipeIds[1] = -1; /* * First, scan through all the arguments to figure out the structure * of the pipeline. Count the number of distinct processes (it's the * number of "|" arguments). If there are "<", "<<", or ">" arguments * then make note of input and output redirection and remove these * arguments and the arguments that follow them. */ cmdCount = 1; lastBar = -1; for (i = 0; i < argc; i++) { if ((argv[i][0] == '|') && ((argv[i][1] == 0))) { if ((i == (lastBar+1)) || (i == (argc-1))) { interp->result = "illegal use of | in command"; return -1; } lastBar = i; cmdCount++; continue; } else if (argv[i][0] == '<') { if (argv[i][1] == 0) { input = argv[i+1]; inputFile = 1; } else if ((argv[i][1] == '<') && (argv[i][2] == 0)) { input = argv[i+1]; inputFile = 0; } else { continue; } } else if ((argv[i][0] == '>') && (argv[i][1] == 0)) { output = argv[i+1]; } else { continue; } if (i >= (argc-1)) { Tcl_AppendResult(interp, "can't specify \"", argv[i], "\" as last word in command", (char *) NULL); return -1; } for (j = i+2; j < argc; j++) { argv[j-2] = argv[j]; } argc -= 2; i--; /* Process new arg from same position. */ } if (argc == 0) { interp->result = "didn't specify command to execute"; return -1; } /* * Set up the redirected input source for the pipeline, if * so requested. */ if (input != NULL) { if (!inputFile) { /* * Immediate data in command. Create temporary file and * put data into file. */ #ifdef MSDOS # define TMP_STDIN_NAME "tcl.in" #else # define TMP_STDIN_NAME "/tmp/tcl.in.XXXXXX" #endif char inName[sizeof(TMP_STDIN_NAME) + 1]; int length; strcpy(inName, TMP_STDIN_NAME); mkstemp(inName); inputId = open(inName, O_RDWR|O_CREAT|O_TRUNC, 0600); if (inputId < 0) { Tcl_AppendResult(interp, "couldn't create input file for command: ", Tcl_UnixError(interp), (char *) NULL); goto error; } length = strlen(input); #ifdef MSDOS if (write(inputId, input, length) < 0) { #else if (write(inputId, input, length) != length) { #endif Tcl_AppendResult(interp, "couldn't write file input for command: ", Tcl_UnixError(interp), (char *) NULL); goto error; } if ((lseek(inputId, 0L, 0) == -1) || (unlink(inName) == -1)) { Tcl_AppendResult(interp, "couldn't reset or remove input file for command: ", Tcl_UnixError(interp), (char *) NULL); goto error; } } else { /* * File redirection. Just open the file. */ inputId = open(input, O_RDONLY, 0); if (inputId < 0) { Tcl_AppendResult(interp, "couldn't read file \"", input, "\": ", Tcl_UnixError(interp), (char *) NULL); goto error; } } } else if (inPipePtr != NULL) { if (pipe(pipeIds) != 0) { Tcl_AppendResult(interp, "couldn't create input pipe for command: ", Tcl_UnixError(interp), (char *) NULL); goto error; } inputId = pipeIds[0]; *inPipePtr = pipeIds[1]; pipeIds[0] = pipeIds[1] = -1; } /* * Set up the redirected output sink for the pipeline from one * of two places, if requested. */ if (output != NULL) { /* * Output is to go to a file. */ lastOutputId = open(output, O_WRONLY|O_CREAT|O_TRUNC, 0666); if (lastOutputId < 0) { Tcl_AppendResult(interp, "couldn't write file \"", output, "\": ", Tcl_UnixError(interp), (char *) NULL); goto error; } } else if (outPipePtr != NULL) { /* * Output is to go to a pipe. */ if (pipe(pipeIds) != 0) { Tcl_AppendResult(interp, "couldn't create output pipe: ", Tcl_UnixError(interp), (char *) NULL); goto error; } lastOutputId = pipeIds[1]; *outPipePtr = pipeIds[0]; pipeIds[0] = pipeIds[1] = -1; } /* * Set up the standard error output sink for the pipeline, if * requested. Use a temporary file which is opened, then deleted. * Could potentially just use pipe, but if it filled up it could * cause the pipeline to deadlock: we'd be waiting for processes * to complete before reading stderr, and processes couldn't complete * because stderr was backed up. */ if (errFilePtr != NULL) { # define TMP_STDERR_NAME "/tmp/tcl.err.XXXXXX" char errName[sizeof(TMP_STDERR_NAME) + 1]; strcpy(errName, TMP_STDERR_NAME); mkstemp(errName); errorId = open(errName, O_WRONLY|O_CREAT|O_TRUNC, 0600); if (errorId < 0) { errFileError: Tcl_AppendResult(interp, "couldn't create error file for command: ", Tcl_UnixError(interp), (char *) NULL); goto error; } *errFilePtr = open(errName, O_RDONLY, 0); if (*errFilePtr < 0) { goto errFileError; } if (unlink(errName) == -1) { Tcl_AppendResult(interp, "couldn't remove error file for command: ", Tcl_UnixError(interp), (char *) NULL); goto error; } } /* * Scan through the argc array, forking off a process for each * group of arguments between "|" arguments. */ pidPtr = (int *) ckalloc((unsigned) (cmdCount * sizeof(int))); for (i = 0; i < numPids; i++) { pidPtr[i] = -1; } for (firstArg = 0; firstArg < argc; numPids++, firstArg = lastArg+1) { for (lastArg = firstArg; lastArg < argc; lastArg++) { if ((argv[lastArg][0] == '|') && (argv[lastArg][1] == 0)) { break; } } argv[lastArg] = NULL; if (lastArg == argc) { outputId = lastOutputId; } else { if (pipe(pipeIds) != 0) { Tcl_AppendResult(interp, "couldn't create pipe: ", Tcl_UnixError(interp), (char *) NULL); goto error; } outputId = pipeIds[1]; } execName = Tcl_TildeSubst(interp, argv[firstArg]); pid = Tcl_Fork(); if (pid == -1) { Tcl_AppendResult(interp, "couldn't fork child process: ", Tcl_UnixError(interp), (char *) NULL); goto error; } if (pid == 0) { char errSpace[200]; if (((inputId != -1) && (dup2(inputId, 0) == -1)) || ((outputId != -1) && (dup2(outputId, 1) == -1)) || ((errorId != -1) && (dup2(errorId, 2) == -1))) { char *err; err = "forked process couldn't set up input/output\n"; write(errorId < 0 ? 2 : errorId, err, strlen(err)); _exit(1); } for (i = 3; (i <= outputId) || (i <= inputId) || (i <= errorId); i++) { close(i); } execvp(execName, &argv[firstArg]); sprintf(errSpace, "couldn't find \"%.150s\" to execute\n", argv[firstArg]); write(2, errSpace, strlen(errSpace)); _exit(1); } else { pidPtr[numPids] = pid; } /* * Close off our copies of file descriptors that were set up for * this child, then set up the input for the next child. */ if (inputId != -1) { close(inputId); } if (outputId != -1) { close(outputId); } inputId = pipeIds[0]; pipeIds[0] = pipeIds[1] = -1; } *pidArrayPtr = pidPtr; /* * All done. Cleanup open files lying around and then return. */ cleanup: if (inputId != -1) { close(inputId); } if (lastOutputId != -1) { close(lastOutputId); } if (errorId != -1) { close(errorId); } return numPids; /* * An error occurred. There could have been extra files open, such * as pipes between children. Clean them all up. Detach any child * processes that have been created. */ error: if ((inPipePtr != NULL) && (*inPipePtr != -1)) { close(*inPipePtr); *inPipePtr = -1; } if ((outPipePtr != NULL) && (*outPipePtr != -1)) { close(*outPipePtr); *outPipePtr = -1; } if ((errFilePtr != NULL) && (*errFilePtr != -1)) { close(*errFilePtr); *errFilePtr = -1; } if (pipeIds[0] != -1) { close(pipeIds[0]); } if (pipeIds[1] != -1) { close(pipeIds[1]); } if (pidPtr != NULL) { for (i = 0; i < numPids; i++) { if (pidPtr[i] != -1) { Tcl_DetachPids(1, &pidPtr[i]); } } ckfree((char *) pidPtr); } numPids = -1; goto cleanup; } /* *---------------------------------------------------------------------- * * Tcl_UnixError -- * * This procedure is typically called after UNIX kernel calls * return errors. It stores machine-readable information about * the error in $errorCode returns an information string for * the caller's use. * * Results: * The return value is a human-readable string describing the * error, as returned by strerror. * * Side effects: * The global variable $errorCode is reset. * *---------------------------------------------------------------------- */ char * Tcl_UnixError(interp) Tcl_Interp *interp; /* Interpreter whose $errorCode variable * is to be changed. */ { char *id, *msg; id = Tcl_ErrnoId(); msg = strerror(errno); Tcl_SetErrorCode(interp, "UNIX", id, msg, (char *) NULL); return msg; } /* *---------------------------------------------------------------------- * * TclMakeFileTable -- * * Create or enlarge the file table for the interpreter, so that * there is room for a given index. * * Results: * None. * * Side effects: * The file table for iPtr will be created if it doesn't exist * (and entries will be added for stdin, stdout, and stderr). * If it already exists, then it will be grown if necessary. * *---------------------------------------------------------------------- */ void TclMakeFileTable(iPtr, index) Interp *iPtr; /* Interpreter whose table of files is * to be manipulated. */ int index; /* Make sure table is large enough to * hold at least this index. */ { /* * If the table doesn't even exist, then create it and initialize * entries for standard files. */ if (iPtr->numFiles == 0) { OpenFile *filePtr; int i; if (index < 2) { iPtr->numFiles = 3; } else { iPtr->numFiles = index+1; } iPtr->filePtrArray = (OpenFile **) ckalloc((unsigned) ((iPtr->numFiles)*sizeof(OpenFile *))); for (i = iPtr->numFiles-1; i >= 0; i--) { iPtr->filePtrArray[i] = NULL; } filePtr = (OpenFile *) ckalloc(sizeof(OpenFile)); filePtr->f = stdin; filePtr->f2 = NULL; filePtr->readable = 1; filePtr->writable = 0; filePtr->numPids = 0; filePtr->pidPtr = NULL; filePtr->errorId = -1; iPtr->filePtrArray[0] = filePtr; filePtr = (OpenFile *) ckalloc(sizeof(OpenFile)); filePtr->f = stdout; filePtr->f2 = NULL; filePtr->readable = 0; filePtr->writable = 1; filePtr->numPids = 0; filePtr->pidPtr = NULL; filePtr->errorId = -1; iPtr->filePtrArray[1] = filePtr; filePtr = (OpenFile *) ckalloc(sizeof(OpenFile)); filePtr->f = stderr; filePtr->f2 = NULL; filePtr->readable = 0; filePtr->writable = 1; filePtr->numPids = 0; filePtr->pidPtr = NULL; filePtr->errorId = -1; iPtr->filePtrArray[2] = filePtr; } else if (index >= iPtr->numFiles) { int newSize; OpenFile **newPtrArray; int i; newSize = index+1; newPtrArray = (OpenFile **) ckalloc((unsigned) ((newSize)*sizeof(OpenFile *))); memcpy((VOID *) newPtrArray, (VOID *) iPtr->filePtrArray, iPtr->numFiles*sizeof(OpenFile *)); for (i = iPtr->numFiles; i < newSize; i++) { newPtrArray[i] = NULL; } ckfree((char *) iPtr->filePtrArray); iPtr->numFiles = newSize; iPtr->filePtrArray = newPtrArray; } } /* *---------------------------------------------------------------------- * * TclGetOpenFile -- * * Given a string identifier for an open file, find the corresponding * open file structure, if there is one. * * Results: * A standard Tcl return value. If the open file is successfully * located, *filePtrPtr is modified to point to its structure. * If TCL_ERROR is returned then interp->result contains an error * message. * * Side effects: * None. * *---------------------------------------------------------------------- */ int TclGetOpenFile(interp, string, filePtrPtr) Tcl_Interp *interp; /* Interpreter in which to find file. */ char *string; /* String that identifies file. */ OpenFile **filePtrPtr; /* Address of word in which to store pointer * to structure about open file. */ { int fd = 0; /* Initial value needed only to stop compiler * warnings. */ Interp *iPtr = (Interp *) interp; if ((string[0] == 'f') && (string[1] == 'i') && (string[2] == 'l') & (string[3] == 'e')) { char *end; fd = strtoul(string+4, &end, 10); if ((end == string+4) || (*end != 0)) { goto badId; } } else if ((string[0] == 's') && (string[1] == 't') && (string[2] == 'd')) { if (strcmp(string+3, "in") == 0) { fd = 0; } else if (strcmp(string+3, "out") == 0) { fd = 1; } else if (strcmp(string+3, "err") == 0) { fd = 2; } else { goto badId; } } else { badId: Tcl_AppendResult(interp, "bad file identifier \"", string, "\"", (char *) NULL); return TCL_ERROR; } if (fd >= iPtr->numFiles) { if ((iPtr->numFiles == 0) && (fd <= 2)) { TclMakeFileTable(iPtr, fd); } else { notOpen: Tcl_AppendResult(interp, "file \"", string, "\" isn't open", (char *) NULL); return TCL_ERROR; } } if (iPtr->filePtrArray[fd] == NULL) { goto notOpen; } *filePtrPtr = iPtr->filePtrArray[fd]; return TCL_OK; } #ifdef MSDOS int filename2DOS(name) char *name; { for ( ; *name; name++) if (*name == '/') *name = '\\'; } #endif micropolis-activity/src/tcl/compat/0000775000076400007640000000000010724145723017667 5ustar simcitysimcitymicropolis-activity/src/tcl/compat/string.h0000664000076400007640000000420410724145723021346 0ustar simcitysimcity/* * string.h -- * * Declarations of ANSI C library procedures for string handling. * * Copyright 1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. * * $Header: /sprite/src/lib/tcl/compat/RCS/string.h,v 1.1 91/09/19 16:22:11 ouster Exp $ SPRITE (Berkeley) */ #ifndef _STRING #define _STRING #include extern char * memchr _ANSI_ARGS_((char *s, int c, int n)); #if 0 extern int memcmp _ANSI_ARGS_((char *s1, char *s2, int n)); extern char * memcpy _ANSI_ARGS_((char *t, char *f, int n)); #endif extern char * memmove _ANSI_ARGS_((char *t, char *f, int n)); extern char * memset _ANSI_ARGS_((char *s, int c, int n)); extern int strcasecmp _ANSI_ARGS_((char *s1, char *s2)); extern char * strcat _ANSI_ARGS_((char *dst, char *src)); extern char * strchr _ANSI_ARGS_((char *string, int c)); #if 0 extern int strcmp _ANSI_ARGS_((char *s1, char *s2)); extern char * strcpy _ANSI_ARGS_((char *dst, char *src)); #endif extern int strcspn _ANSI_ARGS_((char *string, char *chars)); extern char * strdup _ANSI_ARGS_((char *string)); extern char * strerror _ANSI_ARGS_((int error)); #if 0 extern int strlen _ANSI_ARGS_((char *string)); #endif extern int strncasecmp _ANSI_ARGS_((char *s1, char *s2, int n)); extern char * strncat _ANSI_ARGS_((char *dst, char *src, int numChars)); extern int strncmp _ANSI_ARGS_((char *s1, char *s2, int nChars)); extern char * strncpy _ANSI_ARGS_((char *dst, char *src, int numChars)); extern char * strpbrk _ANSI_ARGS_((char *string, char *chars)); extern char * strrchr _ANSI_ARGS_((char *string, int c)); extern int strspn _ANSI_ARGS_((char *string, char *chars)); extern char * strstr _ANSI_ARGS_((char *string, char *substring)); extern char * strtok _ANSI_ARGS_((char *s, char *delim)); #endif /* _STRING */ micropolis-activity/src/tcl/compat/teststrtoul.c0000664000076400007640000000237510724145723022456 0ustar simcitysimcity/* * teststrtoul.c -- * * This file contains a simple program to detect broken versions * of strtoul, like those on AIX. The broken versions return an * incorrect terminator pointer for the string "0". This program * exits with a normal status if strtoul does the right thing, and * it exits with a non-zero status if strtoul is bogus. Unlike * the other test programs, this one must actually be executed to * be sure that it works. * * Copyright 1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that this copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/compat/RCS/teststrtoul.c,v 1.2 92/01/07 10:02:56 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ extern int strtoul(); int main() { char *string = "0"; char *term; int value; value = strtoul(string, &term, 0); if ((value != 0) || (term != (string+1))) { exit(1); } exit(0); } micropolis-activity/src/tcl/compat/dirent2.h0000664000076400007640000000317210724145723021412 0ustar simcitysimcity/* * dirent.h -- * * Declarations of a library of directory-reading procedures * in the POSIX style ("struct dirent"). * * Copyright 1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that this copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. * * $Header: /sprite/src/lib/tcl/compat/RCS/dirent2.h,v 1.1 91/09/19 16:22:08 ouster Exp $ SPRITE (Berkeley) */ #ifndef _DIRENT #define _DIRENT #ifndef _TCL #include #endif /* * Dirent structure, which holds information about a single * directory entry. */ #define MAXNAMLEN 255 #define DIRBLKSIZ 512 struct dirent { long d_ino; /* Inode number of entry */ short d_reclen; /* Length of this record */ short d_namlen; /* Length of string in d_name */ char d_name[MAXNAMLEN + 1]; /* Name must be no longer than this */ }; /* * State that keeps track of the reading of a directory (clients * should never look inside this structure; the fields should * only be accessed by the library procedures). */ typedef struct _dirdesc { int dd_fd; long dd_loc; long dd_size; char dd_buf[DIRBLKSIZ]; } DIR; /* * Procedures defined for reading directories: */ extern void closedir _ANSI_ARGS_((DIR *dirp)); extern DIR * opendir _ANSI_ARGS_((char *name)); extern struct dirent * readdir _ANSI_ARGS_((DIR *dirp)); #endif /* _DIRENT */ micropolis-activity/src/tcl/compat/testpid.c0000664000076400007640000000161310724145723021510 0ustar simcitysimcity/* * testpid.c -- * * This file contains a simple program that will compile * correctly if and only if defines the * type pid_t. It is used to determine whether this type * is defined on a given system. * * Copyright 1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that this copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/compat/RCS/testpid.c,v 1.2 91/12/06 15:31:32 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include pid_t pid; int main() { return 0; } micropolis-activity/src/tcl/compat/testwait.c0000664000076400007640000000233410724145723021701 0ustar simcitysimcity/* * testwait.c -- * * This file contains a simple program that will compile * correctly if and only if defines the * type "union wait". It is used during configuration * to determine whether or not to use this type. * * Copyright 1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that this copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/compat/RCS/testwait.c,v 1.3 91/12/18 13:42:09 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include #include /* * This code is very tricky, mostly because of weirdness in HP-UX * where "union wait" is defined in both the BSD and SYS-V * environments. Supposedly the WIFEXITED business will do the * right thing... */ union wait x; int main() { WIFEXITED(x); /* Generates compiler error if WIFEXITED * uses an int. */ return 0; } micropolis-activity/src/tcl/compat/testuid.c0000664000076400007640000000161310724145723021515 0ustar simcitysimcity/* * testuid.c -- * * This file contains a simple program that will compile * correctly if and only if defines the * type uid_t. It is used to determine whether this type * is defined on a given system. * * Copyright 1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that this copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/compat/RCS/testuid.c,v 1.1 91/12/06 15:31:28 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include uid_t uid; int main() { return 0; } micropolis-activity/src/tcl/compat/strstr.c0000664000076400007640000000360210724145723021375 0ustar simcitysimcity/* * strstr.c -- * * Source code for the "strstr" library routine. * * Copyright 1988-1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /sprite/src/lib/tcl/compat/RCS/strstr.c,v 1.1 91/09/19 16:22:12 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ /* *---------------------------------------------------------------------- * * strstr -- * * Locate the first instance of a substring in a string. * * Results: * If string contains substring, the return value is the * location of the first matching instance of substring * in string. If string doesn't contain substring, the * return value is 0. Matching is done on an exact * character-for-character basis with no wildcards or special * characters. * * Side effects: * None. * *---------------------------------------------------------------------- */ char * strstr(string, substring) register char *string; /* String to search. */ char *substring; /* Substring to try to find in string. */ { register char *a, *b; /* First scan quickly through the two strings looking for a * single-character match. When it's found, then compare the * rest of the substring. */ b = substring; if (*b == 0) { return string; } for ( ; *string != 0; string += 1) { if (*string != *b) { continue; } a = string; while (1) { if (*b == 0) { return string; } if (*a++ != *b++) { break; } } b = substring; } return (char *) 0; } micropolis-activity/src/tcl/compat/strtoul.c0000664000076400007640000001033610724145723021552 0ustar simcitysimcity/* * strtoul.c -- * * Source code for the "strtoul" library procedure. * * Copyright 1988 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /sprite/src/lib/tcl/compat/RCS/strtoul.c,v 1.2 91/09/22 14:04:43 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include /* * The table below is used to convert from ASCII digits to a * numerical equivalent. It maps from '0' through 'z' to integers * (100 for non-digit characters). */ static char cvtIn[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* '0' - '9' */ 100, 100, 100, 100, 100, 100, 100, /* punctuation */ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, /* 'A' - 'Z' */ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 100, 100, 100, 100, 100, 100, /* punctuation */ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, /* 'a' - 'z' */ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35}; /* *---------------------------------------------------------------------- * * strtoul -- * * Convert an ASCII string into an integer. * * Results: * The return value is the integer equivalent of string. If endPtr * is non-NULL, then *endPtr is filled in with the character * after the last one that was part of the integer. If string * doesn't contain a valid integer value, then zero is returned * and *endPtr is set to string. * * Side effects: * None. * *---------------------------------------------------------------------- */ unsigned long int strtoul(string, endPtr, base) char *string; /* String of ASCII digits, possibly * preceded by white space. For bases * greater than 10, either lower- or * upper-case digits may be used. */ char **endPtr; /* Where to store address of terminating * character, or NULL. */ int base; /* Base for conversion. Must be less * than 37. If 0, then the base is chosen * from the leading characters of string: * "0x" means hex, "0" means octal, anything * else means decimal. */ { register char *p; register unsigned long int result = 0; register unsigned digit; int anyDigits = 0; /* * Skip any leading blanks. */ p = string; while (isspace(*p)) { p += 1; } /* * If no base was provided, pick one from the leading characters * of the string. */ if (base == 0) { if (*p == '0') { p += 1; if (*p == 'x') { p += 1; base = 16; } else { /* * Must set anyDigits here, otherwise "0" produces a * "no digits" error. */ anyDigits = 1; base = 8; } } else base = 10; } else if (base == 16) { /* * Skip a leading "0x" from hex numbers. */ if ((p[0] == '0') && (p[1] == 'x')) { p += 2; } } /* * Sorry this code is so messy, but speed seems important. Do * different things for base 8, 10, 16, and other. */ if (base == 8) { for ( ; ; p += 1) { digit = *p - '0'; if (digit > 7) { break; } result = (result << 3) + digit; anyDigits = 1; } } else if (base == 10) { for ( ; ; p += 1) { digit = *p - '0'; if (digit > 9) { break; } result = (10*result) + digit; anyDigits = 1; } } else if (base == 16) { for ( ; ; p += 1) { digit = *p - '0'; if (digit > ('z' - '0')) { break; } digit = cvtIn[digit]; if (digit > 15) { break; } result = (result << 4) + digit; anyDigits = 1; } } else { for ( ; ; p += 1) { digit = *p - '0'; if (digit > ('z' - '0')) { break; } digit = cvtIn[digit]; if (digit >= base) { break; } result = result*base + digit; anyDigits = 1; } } /* * See if there were any digits at all. */ if (!anyDigits) { p = string; } if (endPtr != 0) { *endPtr = p; } return result; } micropolis-activity/src/tcl/compat/dirent.h0000664000076400007640000000145110724145723021326 0ustar simcitysimcity/* * dirent.h -- * * This file is a replacement for in systems that * support the old BSD-style with a "struct direct". * * Copyright 1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that this copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. * * $Header: /sprite/src/lib/tcl/compat/RCS/dirent.h,v 1.1 91/09/19 16:22:06 ouster Exp $ SPRITE (Berkeley) */ #ifndef _DIRENT #define _DIRENT #include #define dirent direct #endif /* _DIRENT */ micropolis-activity/src/tcl/compat/limits.h0000664000076400007640000000157510724145723021351 0ustar simcitysimcity/* * limits.h -- * * This is a dummy header file to #include in Tcl when there * is no limits.h in /usr/include. The file is totally empty. * In case you're wondering why Tcl includes the file at all * if it can be empty, it's because there's already code in * tclUnix.h to #define anything that's not defined in limits.h. * * Copyright 1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that this copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. * * $Header: /sprite/src/lib/tcl/compat/RCS/limits.h,v 1.1 91/09/19 16:22:08 ouster Exp $ SPRITE (Berkeley) */ micropolis-activity/src/tcl/compat/opendir.c0000664000076400007640000000367710724145723021510 0ustar simcitysimcity/* * opendir.c -- * * This file provides dirent-style directory-reading procedures * for V7 Unix systems that don't have such procedures. The * origin of this code is unclear, but it seems to have come * originally from Larry Wall. * */ #include #include #undef DIRSIZ #define DIRSIZ(dp) \ ((sizeof (struct dirent) - (MAXNAMLEN+1)) + (((dp)->d_namlen+1 + 3) &~ 3)) /* * open a directory. */ DIR * opendir(name) char *name; { register DIR *dirp; register int fd; char *myname; myname = ((*name == '\0') ? "." : name); if ((fd = open(myname, 0, 0)) == -1) return NULL; if ((dirp = (DIR *)ckalloc(sizeof(DIR))) == NULL) { close (fd); return NULL; } dirp->dd_fd = fd; dirp->dd_loc = 0; return dirp; } /* * read an old style directory entry and present it as a new one */ #ifndef pyr #define ODIRSIZ 14 struct olddirect { ino_t od_ino; char od_name[ODIRSIZ]; }; #else /* a Pyramid in the ATT universe */ #define ODIRSIZ 248 struct olddirect { long od_ino; short od_fill1, od_fill2; char od_name[ODIRSIZ]; }; #endif /* * get next entry in a directory. */ struct dirent * readdir(dirp) register DIR *dirp; { register struct olddirect *dp; static struct dirent dir; for (;;) { if (dirp->dd_loc == 0) { dirp->dd_size = read(dirp->dd_fd, dirp->dd_buf, DIRBLKSIZ); if (dirp->dd_size <= 0) return NULL; } if (dirp->dd_loc >= dirp->dd_size) { dirp->dd_loc = 0; continue; } dp = (struct olddirect *)(dirp->dd_buf + dirp->dd_loc); dirp->dd_loc += sizeof(struct olddirect); if (dp->od_ino == 0) continue; dir.d_ino = dp->od_ino; strncpy(dir.d_name, dp->od_name, ODIRSIZ); dir.d_name[ODIRSIZ] = '\0'; /* insure null termination */ dir.d_namlen = strlen(dir.d_name); dir.d_reclen = DIRSIZ(&dir); return (&dir); } } /* * close a directory. */ void closedir(dirp) register DIR *dirp; { close(dirp->dd_fd); dirp->dd_fd = -1; dirp->dd_loc = 0; ckfree((char *) dirp); } micropolis-activity/src/tcl/compat/strtod.c0000664000076400007640000001370710724145723021362 0ustar simcitysimcity/* * strtod.c -- * * Source code for the "strtod" library procedure. * * Copyright 1988-1992 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/compat/RCS/strtod.c,v 1.1 92/01/03 16:39:02 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include #include #ifndef TRUE #define TRUE 1 #define FALSE 0 #endif #ifndef NULL #define NULL 0 #endif static int maxExponent = 511; /* Largest possible base 10 exponent. Any * exponent larger than this will already * produce underflow or overflow, so there's * no need to worry about additional digits. */ static double powersOf10[] = { /* Table giving binary powers of 10. Entry */ 10., /* is 10^2^i. Used to convert decimal */ 100., /* exponents into floating-point numbers. */ 1.0e4, 1.0e8, 1.0e16, 1.0e32, 1.0e64, 1.0e128, 1.0e256 }; /* *---------------------------------------------------------------------- * * strtod -- * * This procedure converts a floating-point number from an ASCII * decimal representation to internal double-precision format. * * Results: * The return value is the double-precision floating-point * representation of the characters in string. If endPtr isn't * NULL, then *endPtr is filled in with the address of the * next character after the last one that was part of the * floating-point number. * * Side effects: * None. * *---------------------------------------------------------------------- */ double strtod(string, endPtr) char *string; /* A decimal ASCII floating-point number, * optionally preceded by white space. * Must have form "-I.FE-X", where I is the * integer part of the mantissa, F is the * fractional part of the mantissa, and X * is the exponent. Either of the signs * may be "+", "-", or omitted. Either I * or F may be omitted, or both. The decimal * point isn't necessary unless F is present. * The "E" may actually be an "e". E and X * may both be omitted (but not just one). */ char **endPtr; /* If non-NULL, store terminating character's * address here. */ { int sign, expSign = FALSE; double fraction, dblExp, *d; register char *p, c; int exp = 0; /* Exponent read from "EX" field. */ int fracExp = 0; /* Exponent that derives from the fractional * part. Under normal circumstatnces, it is * the negative of the number of digits in F. * However, if I is very long, the last digits * of I get dropped (otherwise a long I with a * large negative exponent could cause an * unnecessary overflow on I alone). In this * case, fracExp is incremented one for each * dropped digit. */ int mantSize; /* Number of digits in mantissa. */ int decPt; /* Number of mantissa digits BEFORE decimal * point. */ char *pExp; /* Temporarily holds location of exponent * in string. */ /* * Strip off leading blanks and check for a sign. */ p = string; while (isspace(*p)) { p += 1; } if (*p == '-') { sign = TRUE; p += 1; } else { if (*p == '+') { p += 1; } sign = FALSE; } /* * Count the number of digits in the mantissa (including the decimal * point), and also locate the decimal point. */ decPt = -1; for (mantSize = 0; ; mantSize += 1) { c = *p; if (!isdigit(c)) { if ((c != '.') || (decPt >= 0)) { break; } decPt = mantSize; } p += 1; } /* * Now suck up the digits in the mantissa. Use two integers to * collect 9 digits each (this is faster than using floating-point). * If the mantissa has more than 18 digits, ignore the extras, since * they can't affect the value anyway. */ pExp = p; p -= mantSize; if (decPt < 0) { decPt = mantSize; } else { mantSize -= 1; /* One of the digits was the point. */ } if (mantSize > 18) { fracExp = decPt - 18; mantSize = 18; } else { fracExp = decPt - mantSize; } if (mantSize == 0) { fraction = 0.0; p = string; goto done; } else { int frac1, frac2; frac1 = 0; for ( ; mantSize > 9; mantSize -= 1) { c = *p; p += 1; if (c == '.') { c = *p; p += 1; } frac1 = 10*frac1 + (c - '0'); } frac2 = 0; for (; mantSize > 0; mantSize -= 1) { c = *p; p += 1; if (c == '.') { c = *p; p += 1; } frac2 = 10*frac2 + (c - '0'); } fraction = (1.0e9 * frac1) + frac2; } /* * Skim off the exponent. */ p = pExp; if ((*p == 'E') || (*p == 'e')) { p += 1; if (*p == '-') { expSign = TRUE; p += 1; } else { if (*p == '+') { p += 1; } expSign = FALSE; } while (isdigit(*p)) { exp = exp * 10 + (*p - '0'); p += 1; } } if (expSign) { exp = fracExp - exp; } else { exp = fracExp + exp; } /* * Generate a floating-point number that represents the exponent. * Do this by processing the exponent one bit at a time to combine * many powers of 2 of 10. Then combine the exponent with the * fraction. */ if (exp < 0) { expSign = TRUE; exp = -exp; } else { expSign = FALSE; } if (exp > maxExponent) { exp = maxExponent; } dblExp = 1.0; for (d = powersOf10; exp != 0; exp >>= 1, d += 1) { if (exp & 01) { dblExp *= *d; } } if (expSign) { fraction /= dblExp; } else { fraction *= dblExp; } done: if (endPtr != NULL) { *endPtr = p; } if (sign) { return -fraction; } return fraction; } micropolis-activity/src/tcl/compat/strtol.c0000664000076400007640000000433310724145723021365 0ustar simcitysimcity/* * strtol.c -- * * Source code for the "strtol" library procedure. * * Copyright 1988 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /sprite/src/lib/tcl/compat/RCS/strtol.c,v 1.1 91/09/22 15:42:49 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include /* *---------------------------------------------------------------------- * * strtol -- * * Convert an ASCII string into an integer. * * Results: * The return value is the integer equivalent of string. If endPtr * is non-NULL, then *endPtr is filled in with the character * after the last one that was part of the integer. If string * doesn't contain a valid integer value, then zero is returned * and *endPtr is set to string. * * Side effects: * None. * *---------------------------------------------------------------------- */ long int strtol(string, endPtr, base) char *string; /* String of ASCII digits, possibly * preceded by white space. For bases * greater than 10, either lower- or * upper-case digits may be used. */ char **endPtr; /* Where to store address of terminating * character, or NULL. */ int base; /* Base for conversion. Must be less * than 37. If 0, then the base is chosen * from the leading characters of string: * "0x" means hex, "0" means octal, anything * else means decimal. */ { register char *p; int result; /* * Skip any leading blanks. */ p = string; while (isspace(*p)) { p += 1; } /* * Check for a sign. */ if (*p == '-') { p += 1; result = -(strtoul(p, endPtr, base)); } else { if (*p == '+') { p += 1; } result = strtoul(p, endPtr, base); } if ((result == 0) && (endPtr != 0) && (*endPtr == p)) { *endPtr = string; } return result; } micropolis-activity/src/tcl/compat/stdlib.h0000664000076400007640000000362110724145723021323 0ustar simcitysimcity/* * stdlib.h -- * * Declares facilities exported by the "stdlib" portion of * the C library. This file isn't complete in the ANSI-C * sense; it only declares things that are needed by Tcl. * This file is needed even on many systems with their own * stdlib.h (e.g. SunOS) because not all stdlib.h files * declare all the procedures needed here (such as strtod). * * Copyright 1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. * * $Header: /user6/ouster/tcl/compat/RCS/stdlib.h,v 1.3 91/12/06 10:42:05 ouster Exp $ SPRITE (Berkeley) */ #ifndef _STDLIB #define _STDLIB #include extern void abort _ANSI_ARGS_((void)); extern double atof _ANSI_ARGS_((char *string)); extern int atoi _ANSI_ARGS_((char *string)); extern long atol _ANSI_ARGS_((char *string)); extern char * calloc _ANSI_ARGS_((unsigned int numElements, unsigned int size)); extern int exit _ANSI_ARGS_((int status)); extern int free _ANSI_ARGS_((char *blockPtr)); extern char * getenv _ANSI_ARGS_((char *name)); extern char * malloc _ANSI_ARGS_((unsigned int numBytes)); extern void qsort _ANSI_ARGS_((VOID *base, int n, int size, int (*compar)(CONST VOID *element1, CONST VOID *element2))); extern char * realloc _ANSI_ARGS_((char *ptr, unsigned int numBytes)); extern double strtod _ANSI_ARGS_((char *string, char **endPtr)); extern long strtol _ANSI_ARGS_((char *string, char **endPtr, int base)); extern unsigned long strtoul _ANSI_ARGS_((CONST char *string, char **endPtr, int base)); #endif /* _STDLIB */ micropolis-activity/src/tcl/compat/README0000664000076400007640000000055310724145723020552 0ustar simcitysimcityThis directory contains various header and code files that are used make Tcl compatible with various releases of UNIX and UNIX-like systems. Typically, files from this directory are used to compile Tcl when the corresponding files aren't present in the system's library area. When the whole world is POSIX-ified, this information should become unnecessary. (?) micropolis-activity/src/tcl/compat/strerror.c0000664000076400007640000002632710724145723021727 0ustar simcitysimcity/* * strerror.c -- * * Source code for the "strerror" library routine. * * Copyright 1988-1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/compat/RCS/strerror.c,v 1.2 91/12/16 09:26:48 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include #include /* *---------------------------------------------------------------------- * * strerror -- * * Map an integer error number into a printable string. * * Results: * The return value is a pointer to a string describing * error. The first character of string isn't capitalized. * * Side effects: * Each call to this procedure may overwrite the value returned * by the previous call. * *---------------------------------------------------------------------- */ char * strerror(error) int error; /* Integer identifying error (must be * one of the officially-defined Sprite * errors, as defined in errno.h). */ { static char msg[50]; #if TCL_SYS_ERRLIST if ((error <= sys_nerr) && (error > 0)) { return sys_errlist[error]; } #else switch (error) { #ifdef E2BIG case E2BIG: return "argument list too long"; #endif #ifdef EACCES case EACCES: return "permission denied"; #endif #ifdef EADDRINUSE case EADDRINUSE: return "address already in use"; #endif #ifdef EADDRNOTAVAIL case EADDRNOTAVAIL: return "can't assign requested address"; #endif #ifdef EADV case EADV: return "advertise error"; #endif #ifdef EAFNOSUPPORT case EAFNOSUPPORT: return "address family not supported by protocol family"; #endif #ifdef EAGAIN case EAGAIN: return "no more processes"; #endif #ifdef EALIGN case EALIGN: return "EALIGN"; #endif #ifdef EALREADY case EALREADY: return "operation already in progress"; #endif #ifdef EBADE case EBADE: return "bad exchange descriptor"; #endif #ifdef EBADF case EBADF: return "bad file number"; #endif #ifdef EBADFD case EBADFD: return "file descriptor in bad state"; #endif #ifdef EBADMSG case EBADMSG: return "not a data message"; #endif #ifdef EBADR case EBADR: return "bad request descriptor"; #endif #ifdef EBADRPC case EBADRPC: return "RPC structure is bad"; #endif #ifdef EBADRQC case EBADRQC: return "bad request code"; #endif #ifdef EBADSLT case EBADSLT: return "invalid slot"; #endif #ifdef EBFONT case EBFONT: return "bad font file format"; #endif #ifdef EBUSY case EBUSY: return "mount device busy"; #endif #ifdef ECHILD case ECHILD: return "no children"; #endif #ifdef ECHRNG case ECHRNG: return "channel number out of range"; #endif #ifdef ECOMM case ECOMM: return "communication error on send"; #endif #ifdef ECONNABORTED case ECONNABORTED: return "software caused connection abort"; #endif #ifdef ECONNREFUSED case ECONNREFUSED: return "connection refused"; #endif #ifdef ECONNRESET case ECONNRESET: return "connection reset by peer"; #endif #if defined(EDEADLK) && (!defined(EWOULDBLOCK) || (EDEADLK != EWOULDBLOCK)) case EDEADLK: return "resource deadlock avoided"; #endif #ifdef EDEADLOCK case EDEADLOCK: return "resource deadlock avoided"; #endif #ifdef EDESTADDRREQ case EDESTADDRREQ: return "destination address required"; #endif #ifdef EDIRTY case EDIRTY: return "mounting a dirty fs w/o force"; #endif #ifdef EDOM case EDOM: return "math argument out of range"; #endif #ifdef EDOTDOT case EDOTDOT: return "cross mount point"; #endif #ifdef EDQUOT case EDQUOT: return "disk quota exceeded"; #endif #ifdef EDUPPKG case EDUPPKG: return "duplicate package name"; #endif #ifdef EEXIST case EEXIST: return "file already exists"; #endif #ifdef EFAULT case EFAULT: return "bad address in system call argument"; #endif #ifdef EFBIG case EFBIG: return "file too large"; #endif #ifdef EHOSTDOWN case EHOSTDOWN: return "host is down"; #endif #ifdef EHOSTUNREACH case EHOSTUNREACH: return "host is unreachable"; #endif #ifdef EIDRM case EIDRM: return "identifier removed"; #endif #ifdef EINIT case EINIT: return "initialization error"; #endif #ifdef EINPROGRESS case EINPROGRESS: return "operation now in progress"; #endif #ifdef EINTR case EINTR: return "interrupted system call"; #endif #ifdef EINVAL case EINVAL: return "invalid argument"; #endif #ifdef EIO case EIO: return "I/O error"; #endif #ifdef EISCONN case EISCONN: return "socket is already connected"; #endif #ifdef EISDIR case EISDIR: return "illegal operation on a directory"; #endif #ifdef EISNAME case EISNAM: return "is a name file"; #endif #ifdef ELBIN case ELBIN: return "ELBIN"; #endif #ifdef EL2HLT case EL2HLT: return "level 2 halted"; #endif #ifdef EL2NSYNC case EL2NSYNC: return "level 2 not synchronized"; #endif #ifdef EL3HLT case EL3HLT: return "level 3 halted"; #endif #ifdef EL3RST case EL3RST: return "level 3 reset"; #endif #ifdef ELIBACC case ELIBACC: return "can not access a needed shared library"; #endif #ifdef ELIBBAD case ELIBBAD: return "accessing a corrupted shared library"; #endif #ifdef ELIBEXEC case ELIBEXEC: return "can not exec a shared library directly"; #endif #ifdef ELIBMAX case ELIBMAX: return "attempting to link in more shared libraries than system limit"; #endif #ifdef ELIBSCN case ELIBSCN: return ".lib section in a.out corrupted"; #endif #ifdef ELNRNG case ELNRNG: return "link number out of range"; #endif #ifdef ELOOP case ELOOP: return "too many levels of symbolic links"; #endif #ifdef EMFILE case EMFILE: return "too many open files"; #endif #ifdef EMLINK case EMLINK: return "too many links"; #endif #ifdef EMSGSIZE case EMSGSIZE: return "message too long"; #endif #ifdef EMULTIHOP case EMULTIHOP: return "multihop attempted"; #endif #ifdef ENAMETOOLONG case ENAMETOOLONG: return "file name too long"; #endif #ifdef ENAVAIL case ENAVAIL: return "not available"; #endif #ifdef ENET case ENET: return "ENET"; #endif #ifdef ENETDOWN case ENETDOWN: return "network is down"; #endif #ifdef ENETRESET case ENETRESET: return "network dropped connection on reset"; #endif #ifdef ENETUNREACH case ENETUNREACH: return "network is unreachable"; #endif #ifdef ENFILE case ENFILE: return "file table overflow"; #endif #ifdef ENOANO case ENOANO: return "anode table overflow"; #endif #if defined(ENOBUFS) && (!defined(ENOSR) || (ENOBUFS != ENOSR)) case ENOBUFS: return "no buffer space available"; #endif #ifdef ENOCSI case ENOCSI: return "no CSI structure available"; #endif #ifdef ENODATA case ENODATA: return "no data available"; #endif #ifdef ENODEV case ENODEV: return "no such device"; #endif #ifdef ENOENT case ENOENT: return "no such file or directory"; #endif #ifdef ENOEXEC case ENOEXEC: return "exec format error"; #endif #ifdef ENOLCK case ENOLCK: return "no locks available"; #endif #ifdef ENOLINK case ENOLINK: return "link has be severed"; #endif #ifdef ENOMEM case ENOMEM: return "not enough memory"; #endif #ifdef ENOMSG case ENOMSG: return "no message of desired type"; #endif #ifdef ENONET case ENONET: return "machine is not on the network"; #endif #ifdef ENOPKG case ENOPKG: return "package not installed"; #endif #ifdef ENOPROTOOPT case ENOPROTOOPT: return "bad proocol option"; #endif #ifdef ENOSPC case ENOSPC: return "no space left on device"; #endif #ifdef ENOSR case ENOSR: return "out of stream resources"; #endif #ifdef ENOSTR case ENOSTR: return "not a stream device"; #endif #ifdef ENOSYM case ENOSYM: return "unresolved symbol name"; #endif #ifdef ENOSYS case ENOSYS: return "function not implemented"; #endif #ifdef ENOTBLK case ENOTBLK: return "block device required"; #endif #ifdef ENOTCONN case ENOTCONN: return "socket is not connected"; #endif #ifdef ENOTDIR case ENOTDIR: return "not a directory"; #endif #ifdef ENOTEMPTY case ENOTEMPTY: return "directory not empty"; #endif #ifdef ENOTNAM case ENOTNAM: return "not a name file"; #endif #ifdef ENOTSOCK case ENOTSOCK: return "socket operation on non-socket"; #endif #ifdef ENOTTY case ENOTTY: return "inappropriate device for ioctl"; #endif #ifdef ENOTUNIQ case ENOTUNIQ: return "name not unique on network"; #endif #ifdef ENXIO case ENXIO: return "no such device or address"; #endif #ifdef EOPNOTSUPP case EOPNOTSUPP: return "operation not supported on socket"; #endif #ifdef EPERM case EPERM: return "not owner"; #endif #ifdef EPFNOSUPPORT case EPFNOSUPPORT: return "protocol family not supported"; #endif #ifdef EPIPE case EPIPE: return "broken pipe"; #endif #ifdef EPROCLIM case EPROCLIM: return "too many processes"; #endif #ifdef EPROCUNAVAIL case EPROCUNAVAIL: return "bad procedure for program"; #endif #ifdef EPROGMISMATCH case EPROGMISMATCH: return "program version wrong"; #endif #ifdef EPROGUNAVAIL case EPROGUNAVAIL: return "RPC program not available"; #endif #ifdef EPROTO case EPROTO: return "protocol error"; #endif #ifdef EPROTONOSUPPORT case EPROTONOSUPPORT: return "protocol not suppored"; #endif #ifdef EPROTOTYPE case EPROTOTYPE: return "protocol wrong type for socket"; #endif #ifdef ERANGE case ERANGE: return "math result unrepresentable"; #endif #if defined(EREFUSED) && (!defined(ECONNREFUSED) || (EREFUSED != ECONNREFUSED)) case EREFUSED: return "EREFUSED"; #endif #ifdef EREMCHG case EREMCHG: return "remote address changed"; #endif #ifdef EREMDEV case EREMDEV: return "remote device"; #endif #ifdef EREMOTE case EREMOTE: return "pathname hit remote file system"; #endif #ifdef EREMOTEIO case EREMOTEIO: return "remote i/o error"; #endif #ifdef EREMOTERELEASE case EREMOTERELEASE: return "EREMOTERELEASE"; #endif #ifdef EROFS case EROFS: return "read-only file system"; #endif #ifdef ERPCMISMATCH case ERPCMISMATCH: return "RPC version is wrong"; #endif #ifdef ERREMOTE case ERREMOTE: return "object is remote"; #endif #ifdef ESHUTDOWN case ESHUTDOWN: return "can't send afer socket shutdown"; #endif #ifdef ESOCKTNOSUPPORT case ESOCKTNOSUPPORT: return "socket type not supported"; #endif #ifdef ESPIPE case ESPIPE: return "invalid seek"; #endif #ifdef ESRCH case ESRCH: return "no such process"; #endif #ifdef ESRMNT case ESRMNT: return "srmount error"; #endif #ifdef ESTALE case ESTALE: return "stale remote file handle"; #endif #ifdef ESUCCESS case ESUCCESS: return "Error 0"; #endif #ifdef ETIME case ETIME: return "timer expired"; #endif #ifdef ETIMEDOUT case ETIMEDOUT: return "connection timed out"; #endif #ifdef ETOOMANYREFS case ETOOMANYREFS: return "too many references: can't splice"; #endif #ifdef ETXTBSY case ETXTBSY: return "text file or pseudo-device busy"; #endif #ifdef EUCLEAN case EUCLEAN: return "structure needs cleaning"; #endif #ifdef EUNATCH case EUNATCH: return "protocol driver not attached"; #endif #ifdef EUSERS case EUSERS: return "too many users"; #endif #ifdef EVERSION case EVERSION: return "version mismatch"; #endif #if defined(EWOULDBLOCK) && (!defined(EAGAIN) || (EWOULDBLOCK != EAGAIN)) case EWOULDBLOCK: return "operation would block"; #endif #ifdef EXDEV case EXDEV: return "cross-domain link"; #endif #ifdef EXFULL case EXFULL: return "message tables full"; #endif } #endif /* ! TCL_SYS_ERRLIST */ sprintf(msg, "unknown error (%d)", error); return msg; } micropolis-activity/src/tcl/tclproc.c0000664000076400007640000003456510724145723020233 0ustar simcitysimcity/* * tclProc.c -- * * This file contains routines that implement Tcl procedures, * including the "proc" and "uplevel" commands. * * Copyright 1987-1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /sprite/src/lib/tcl/RCS/tclProc.c,v 1.59 91/09/30 16:59:54 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tclint.h" /* * Forward references to procedures defined later in this file: */ static int InterpProc _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); static void ProcDeleteProc _ANSI_ARGS_((ClientData clientData)); /* *---------------------------------------------------------------------- * * Tcl_ProcCmd -- * * This procedure is invoked to process the "proc" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result value. * * Side effects: * A new procedure gets created. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_ProcCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { register Interp *iPtr = (Interp *) interp; register Proc *procPtr; int result, argCount, i; char **argArray = NULL; Arg *lastArgPtr; register Arg *argPtr = NULL; /* Initialization not needed, but * prevents compiler warning. */ if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " name args body\"", (char *) NULL); return TCL_ERROR; } procPtr = (Proc *) ckalloc(sizeof(Proc)); procPtr->iPtr = iPtr; procPtr->command = (char *) ckalloc((unsigned) strlen(argv[3]) + 1); strcpy(procPtr->command, argv[3]); procPtr->argPtr = NULL; /* * Break up the argument list into argument specifiers, then process * each argument specifier. */ result = Tcl_SplitList(interp, argv[2], &argCount, &argArray); if (result != TCL_OK) { goto procError; } lastArgPtr = NULL; for (i = 0; i < argCount; i++) { int fieldCount, nameLength, valueLength; char **fieldValues; /* * Now divide the specifier up into name and default. */ result = Tcl_SplitList(interp, argArray[i], &fieldCount, &fieldValues); if (result != TCL_OK) { goto procError; } if (fieldCount > 2) { ckfree((char *) fieldValues); Tcl_AppendResult(interp, "too many fields in argument specifier \"", argArray[i], "\"", (char *) NULL); result = TCL_ERROR; goto procError; } if ((fieldCount == 0) || (*fieldValues[0] == 0)) { ckfree((char *) fieldValues); Tcl_AppendResult(interp, "procedure \"", argv[1], "\" has argument with no name", (char *) NULL); result = TCL_ERROR; goto procError; } nameLength = strlen(fieldValues[0]) + 1; if (fieldCount == 2) { valueLength = strlen(fieldValues[1]) + 1; } else { valueLength = 0; } argPtr = (Arg *) ckalloc((unsigned) (sizeof(Arg) - sizeof(argPtr->name) + nameLength + valueLength)); if (lastArgPtr == NULL) { procPtr->argPtr = argPtr; } else { lastArgPtr->nextPtr = argPtr; } lastArgPtr = argPtr; argPtr->nextPtr = NULL; strcpy(argPtr->name, fieldValues[0]); if (fieldCount == 2) { argPtr->defValue = argPtr->name + nameLength; strcpy(argPtr->defValue, fieldValues[1]); } else { argPtr->defValue = NULL; } ckfree((char *) fieldValues); } Tcl_CreateCommand(interp, argv[1], InterpProc, (ClientData) procPtr, ProcDeleteProc); ckfree((char *) argArray); return TCL_OK; procError: ckfree(procPtr->command); while (procPtr->argPtr != NULL) { argPtr = procPtr->argPtr; procPtr->argPtr = argPtr->nextPtr; ckfree((char *) argPtr); } ckfree((char *) procPtr); if (argArray != NULL) { ckfree((char *) argArray); } return result; } /* *---------------------------------------------------------------------- * * TclGetFrame -- * * Given a description of a procedure frame, such as the first * argument to an "uplevel" or "upvar" command, locate the * call frame for the appropriate level of procedure. * * Results: * The return value is -1 if an error occurred in finding the * frame (in this case an error message is left in interp->result). * 1 is returned if string was either a number or a number preceded * by "#" and it specified a valid frame. 0 is returned if string * isn't one of the two things above (in this case, the lookup * acts as if string were "1"). The variable pointed to by * framePtrPtr is filled in with the address of the desired frame * (unless an error occurs, in which case it isn't modified). * * Side effects: * None. * *---------------------------------------------------------------------- */ int TclGetFrame(interp, string, framePtrPtr) Tcl_Interp *interp; /* Interpreter in which to find frame. */ char *string; /* String describing frame. */ CallFrame **framePtrPtr; /* Store pointer to frame here (or NULL * if global frame indicated). */ { register Interp *iPtr = (Interp *) interp; int level, result; CallFrame *framePtr; if (iPtr->varFramePtr == NULL) { iPtr->result = "already at top level"; return -1; } /* * Parse string to figure out which level number to go to. */ result = 1; if (*string == '#') { if (Tcl_GetInt(interp, string+1, &level) != TCL_OK) { return -1; } if (level < 0) { levelError: Tcl_AppendResult(interp, "bad level \"", string, "\"", (char *) NULL); return -1; } } else if (isdigit(*string)) { if (Tcl_GetInt(interp, string, &level) != TCL_OK) { return -1; } level = iPtr->varFramePtr->level - level; } else { level = iPtr->varFramePtr->level - 1; result = 0; } /* * Figure out which frame to use, and modify the interpreter so * its variables come from that frame. */ if (level == 0) { framePtr = NULL; } else { for (framePtr = iPtr->varFramePtr; framePtr != NULL; framePtr = framePtr->callerVarPtr) { if (framePtr->level == level) { break; } } if (framePtr == NULL) { goto levelError; } } *framePtrPtr = framePtr; return result; } /* *---------------------------------------------------------------------- * * Tcl_UplevelCmd -- * * This procedure is invoked to process the "uplevel" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result value. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_UplevelCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { register Interp *iPtr = (Interp *) interp; int result; CallFrame *savedVarFramePtr, *framePtr; if (argc < 2) { uplevelSyntax: Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ?level? command ?command ...?\"", (char *) NULL); return TCL_ERROR; } /* * Find the level to use for executing the command. */ result = TclGetFrame(interp, argv[1], &framePtr); if (result == -1) { return TCL_ERROR; } argc -= (result+1); argv += (result+1); /* * Modify the interpreter state to execute in the given frame. */ savedVarFramePtr = iPtr->varFramePtr; iPtr->varFramePtr = framePtr; /* * Execute the residual arguments as a command. */ if (argc == 0) { goto uplevelSyntax; } if (argc == 1) { result = Tcl_Eval(interp, argv[0], 0, (char **) NULL); } else { char *cmd; cmd = Tcl_Concat(argc, argv); result = Tcl_Eval(interp, cmd, 0, (char **) NULL); ckfree(cmd); } if (result == TCL_ERROR) { char msg[60]; sprintf(msg, "\n (\"uplevel\" body line %d)", interp->errorLine); Tcl_AddErrorInfo(interp, msg); } /* * Restore the variable frame, and return. */ iPtr->varFramePtr = savedVarFramePtr; return result; } /* *---------------------------------------------------------------------- * * TclFindProc -- * * Given the name of a procedure, return a pointer to the * record describing the procedure. * * Results: * NULL is returned if the name doesn't correspond to any * procedure. Otherwise the return value is a pointer to * the procedure's record. * * Side effects: * None. * *---------------------------------------------------------------------- */ Proc * TclFindProc(iPtr, procName) Interp *iPtr; /* Interpreter in which to look. */ char *procName; /* Name of desired procedure. */ { Tcl_HashEntry *hPtr; Command *cmdPtr; hPtr = Tcl_FindHashEntry(&iPtr->commandTable, procName); if (hPtr == NULL) { return NULL; } cmdPtr = (Command *) Tcl_GetHashValue(hPtr); if (cmdPtr->proc != InterpProc) { return NULL; } return (Proc *) cmdPtr->clientData; } /* *---------------------------------------------------------------------- * * TclIsProc -- * * Tells whether a command is a Tcl procedure or not. * * Results: * If the given command is actuall a Tcl procedure, the * return value is the address of the record describing * the procedure. Otherwise the return value is 0. * * Side effects: * None. * *---------------------------------------------------------------------- */ Proc * TclIsProc(cmdPtr) Command *cmdPtr; /* Command to test. */ { if (cmdPtr->proc == InterpProc) { return (Proc *) cmdPtr->clientData; } return (Proc *) 0; } /* *---------------------------------------------------------------------- * * InterpProc -- * * When a Tcl procedure gets invoked, this routine gets invoked * to interpret the procedure. * * Results: * A standard Tcl result value, usually TCL_OK. * * Side effects: * Depends on the commands in the procedure. * *---------------------------------------------------------------------- */ static int InterpProc(clientData, interp, argc, argv) ClientData clientData; /* Record describing procedure to be * interpreted. */ Tcl_Interp *interp; /* Interpreter in which procedure was * invoked. */ int argc; /* Count of number of arguments to this * procedure. */ char **argv; /* Argument values. */ { register Proc *procPtr = (Proc *) clientData; register Arg *argPtr; register Interp *iPtr = (Interp *) interp; char **args; CallFrame frame; char *value, *end; int result; /* * Set up a call frame for the new procedure invocation. */ iPtr = procPtr->iPtr; Tcl_InitHashTable(&frame.varTable, TCL_STRING_KEYS); if (iPtr->varFramePtr != NULL) { frame.level = iPtr->varFramePtr->level + 1; } else { frame.level = 1; } frame.argc = argc; frame.argv = argv; frame.callerPtr = iPtr->framePtr; frame.callerVarPtr = iPtr->varFramePtr; iPtr->framePtr = &frame; iPtr->varFramePtr = &frame; /* * Match the actual arguments against the procedure's formal * parameters to compute local variables. */ for (argPtr = procPtr->argPtr, args = argv+1, argc -= 1; argPtr != NULL; argPtr = argPtr->nextPtr, args++, argc--) { /* * Handle the special case of the last formal being "args". When * it occurs, assign it a list consisting of all the remaining * actual arguments. */ if ((argPtr->nextPtr == NULL) && (strcmp(argPtr->name, "args") == 0)) { if (argc < 0) { argc = 0; } value = Tcl_Merge(argc, args); Tcl_SetVar(interp, argPtr->name, value, 0); ckfree(value); argc = 0; break; } else if (argc > 0) { value = *args; } else if (argPtr->defValue != NULL) { value = argPtr->defValue; } else { Tcl_AppendResult(interp, "no value given for parameter \"", argPtr->name, "\" to \"", argv[0], "\"", (char *) NULL); result = TCL_ERROR; goto procDone; } Tcl_SetVar(interp, argPtr->name, value, 0); } if (argc > 0) { Tcl_AppendResult(interp, "called \"", argv[0], "\" with too many arguments", (char *) NULL); result = TCL_ERROR; goto procDone; } /* * Invoke the commands in the procedure's body. */ result = Tcl_Eval(interp, procPtr->command, 0, &end); if (result == TCL_RETURN) { result = TCL_OK; } else if (result == TCL_ERROR) { char msg[100]; /* * Record information telling where the error occurred. */ sprintf(msg, "\n (procedure \"%.50s\" line %d)", argv[0], iPtr->errorLine); Tcl_AddErrorInfo(interp, msg); } else if (result == TCL_BREAK) { iPtr->result = "invoked \"break\" outside of a loop"; result = TCL_ERROR; } else if (result == TCL_CONTINUE) { iPtr->result = "invoked \"continue\" outside of a loop"; result = TCL_ERROR; } /* * Delete the call frame for this procedure invocation (it's * important to remove the call frame from the interpreter * before deleting it, so that traces invoked during the * deletion don't see the partially-deleted frame). */ procDone: iPtr->framePtr = frame.callerPtr; iPtr->varFramePtr = frame.callerVarPtr; TclDeleteVars(iPtr, &frame.varTable); return result; } /* *---------------------------------------------------------------------- * * ProcDeleteProc -- * * This procedure is invoked just before a command procedure is * removed from an interpreter. Its job is to release all the * resources allocated to the procedure. * * Results: * None. * * Side effects: * Memory gets freed. * *---------------------------------------------------------------------- */ static void ProcDeleteProc(clientData) ClientData clientData; /* Procedure to be deleted. */ { register Proc *procPtr = (Proc *) clientData; register Arg *argPtr; ckfree((char *) procPtr->command); for (argPtr = procPtr->argPtr; argPtr != NULL; ) { Arg *nextPtr = argPtr->nextPtr; ckfree((char *) argPtr); argPtr = nextPtr; } ckfree((char *) procPtr); } micropolis-activity/src/tcl/tclhash.c0000664000076400007640000006067110724145723020210 0ustar simcitysimcity/* * tclHash.c -- * * Implementation of in-memory hash tables for Tcl and Tcl-based * applications. * * Copyright 1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that this copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/RCS/tclHash.c,v 1.9 92/01/04 15:45:21 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include "tclint.h" /* * Imported library procedures for which there are no header files: */ extern void panic(); /* * When there are this many entries per bucket, on average, rebuild * the hash table to make it larger. */ #define REBUILD_MULTIPLIER 3 /* * The following macro takes a preliminary integer hash value and * produces an index into a hash tables bucket list. The idea is * to make it so that preliminary values that are arbitrarily similar * will end up in different buckets. The hash function was taken * from a random-number generator. */ #define RANDOM_INDEX(tablePtr, i) \ (((((long) (i))*1103515245) >> (tablePtr)->downShift) & (tablePtr)->mask) /* * Procedure prototypes for static procedures in this file: */ static Tcl_HashEntry * ArrayFind _ANSI_ARGS_((Tcl_HashTable *tablePtr, char *key)); static Tcl_HashEntry * ArrayCreate _ANSI_ARGS_((Tcl_HashTable *tablePtr, char *key, int *newPtr)); static Tcl_HashEntry * BogusFind _ANSI_ARGS_((Tcl_HashTable *tablePtr, char *key)); static Tcl_HashEntry * BogusCreate _ANSI_ARGS_((Tcl_HashTable *tablePtr, char *key, int *newPtr)); static int HashString _ANSI_ARGS_((char *string)); static void RebuildTable _ANSI_ARGS_((Tcl_HashTable *tablePtr)); static Tcl_HashEntry * StringFind _ANSI_ARGS_((Tcl_HashTable *tablePtr, char *key)); static Tcl_HashEntry * StringCreate _ANSI_ARGS_((Tcl_HashTable *tablePtr, char *key, int *newPtr)); static Tcl_HashEntry * OneWordFind _ANSI_ARGS_((Tcl_HashTable *tablePtr, char *key)); static Tcl_HashEntry * OneWordCreate _ANSI_ARGS_((Tcl_HashTable *tablePtr, char *key, int *newPtr)); /* *---------------------------------------------------------------------- * * Tcl_InitHashTable -- * * Given storage for a hash table, set up the fields to prepare * the hash table for use. * * Results: * None. * * Side effects: * TablePtr is now ready to be passed to Tcl_FindHashEntry and * Tcl_CreateHashEntry. * *---------------------------------------------------------------------- */ void Tcl_InitHashTable(tablePtr, keyType) register Tcl_HashTable *tablePtr; /* Pointer to table record, which * is supplied by the caller. */ int keyType; /* Type of keys to use in table: * TCL_STRING_KEYS, TCL_ONE_WORD_KEYS, * or an integer >= 2. */ { tablePtr->buckets = tablePtr->staticBuckets; tablePtr->staticBuckets[0] = tablePtr->staticBuckets[1] = 0; tablePtr->staticBuckets[2] = tablePtr->staticBuckets[3] = 0; tablePtr->numBuckets = TCL_SMALL_HASH_TABLE; tablePtr->numEntries = 0; tablePtr->rebuildSize = TCL_SMALL_HASH_TABLE*REBUILD_MULTIPLIER; tablePtr->downShift = 28; tablePtr->mask = 3; tablePtr->keyType = keyType; if (keyType == TCL_STRING_KEYS) { tablePtr->findProc = StringFind; tablePtr->createProc = StringCreate; } else if (keyType == TCL_ONE_WORD_KEYS) { tablePtr->findProc = OneWordFind; tablePtr->createProc = OneWordCreate; } else { tablePtr->findProc = ArrayFind; tablePtr->createProc = ArrayCreate; }; } /* *---------------------------------------------------------------------- * * Tcl_DeleteHashEntry -- * * Remove a single entry from a hash table. * * Results: * None. * * Side effects: * The entry given by entryPtr is deleted from its table and * should never again be used by the caller. It is up to the * caller to free the clientData field of the entry, if that * is relevant. * *---------------------------------------------------------------------- */ void Tcl_DeleteHashEntry(entryPtr) Tcl_HashEntry *entryPtr; { register Tcl_HashEntry *prevPtr; if (*entryPtr->bucketPtr == entryPtr) { *entryPtr->bucketPtr = entryPtr->nextPtr; } else { for (prevPtr = *entryPtr->bucketPtr; ; prevPtr = prevPtr->nextPtr) { if (prevPtr == NULL) { panic("malformed bucket chain in Tcl_DeleteHashEntry"); } if (prevPtr->nextPtr == entryPtr) { prevPtr->nextPtr = entryPtr->nextPtr; break; } } } entryPtr->tablePtr->numEntries--; ckfree((char *) entryPtr); } /* *---------------------------------------------------------------------- * * Tcl_DeleteHashTable -- * * Free up everything associated with a hash table except for * the record for the table itself. * * Results: * None. * * Side effects: * The hash table is no longer useable. * *---------------------------------------------------------------------- */ void Tcl_DeleteHashTable(tablePtr) register Tcl_HashTable *tablePtr; /* Table to delete. */ { register Tcl_HashEntry *hPtr, *nextPtr; int i; /* * Free up all the entries in the table. */ for (i = 0; i < tablePtr->numBuckets; i++) { hPtr = tablePtr->buckets[i]; while (hPtr != NULL) { nextPtr = hPtr->nextPtr; ckfree((char *) hPtr); hPtr = nextPtr; } } /* * Free up the bucket array, if it was dynamically allocated. */ if (tablePtr->buckets != tablePtr->staticBuckets) { ckfree((char *) tablePtr->buckets); } /* * Arrange for panics if the table is used again without * re-initialization. */ tablePtr->findProc = BogusFind; tablePtr->createProc = BogusCreate; } /* *---------------------------------------------------------------------- * * Tcl_FirstHashEntry -- * * Locate the first entry in a hash table and set up a record * that can be used to step through all the remaining entries * of the table. * * Results: * The return value is a pointer to the first entry in tablePtr, * or NULL if tablePtr has no entries in it. The memory at * *searchPtr is initialized so that subsequent calls to * Tcl_NextHashEntry will return all of the entries in the table, * one at a time. * * Side effects: * None. * *---------------------------------------------------------------------- */ Tcl_HashEntry * Tcl_FirstHashEntry(tablePtr, searchPtr) Tcl_HashTable *tablePtr; /* Table to search. */ Tcl_HashSearch *searchPtr; /* Place to store information about * progress through the table. */ { searchPtr->tablePtr = tablePtr; searchPtr->nextIndex = 0; searchPtr->nextEntryPtr = NULL; return Tcl_NextHashEntry(searchPtr); } /* *---------------------------------------------------------------------- * * Tcl_NextHashEntry -- * * Once a hash table enumeration has been initiated by calling * Tcl_FirstHashEntry, this procedure may be called to return * successive elements of the table. * * Results: * The return value is the next entry in the hash table being * enumerated, or NULL if the end of the table is reached. * * Side effects: * None. * *---------------------------------------------------------------------- */ Tcl_HashEntry * Tcl_NextHashEntry(searchPtr) register Tcl_HashSearch *searchPtr; /* Place to store information about * progress through the table. Must * have been initialized by calling * Tcl_FirstHashEntry. */ { Tcl_HashEntry *hPtr; while (searchPtr->nextEntryPtr == NULL) { if (searchPtr->nextIndex >= searchPtr->tablePtr->numBuckets) { return NULL; } searchPtr->nextEntryPtr = searchPtr->tablePtr->buckets[searchPtr->nextIndex]; searchPtr->nextIndex++; } hPtr = searchPtr->nextEntryPtr; searchPtr->nextEntryPtr = hPtr->nextPtr; return hPtr; } /* *---------------------------------------------------------------------- * * Tcl_HashStats -- * * Return statistics describing the layout of the hash table * in its hash buckets. * * Results: * The return value is a malloc-ed string containing information * about tablePtr. It is the caller's responsibility to free * this string. * * Side effects: * None. * *---------------------------------------------------------------------- */ char * Tcl_HashStats(tablePtr) Tcl_HashTable *tablePtr; /* Table for which to produce stats. */ { #define NUM_COUNTERS 10 int count[NUM_COUNTERS], overflow, i, j; double average, tmp; register Tcl_HashEntry *hPtr; char *result, *p; /* * Compute a histogram of bucket usage. */ for (i = 0; i < NUM_COUNTERS; i++) { count[i] = 0; } overflow = 0; average = 0.0; for (i = 0; i < tablePtr->numBuckets; i++) { j = 0; for (hPtr = tablePtr->buckets[i]; hPtr != NULL; hPtr = hPtr->nextPtr) { j++; } if (j < NUM_COUNTERS) { count[j]++; } else { overflow++; } tmp = j; average += (tmp+1.0)*(tmp/tablePtr->numEntries)/2.0; } /* * Print out the histogram and a few other pieces of information. */ result = (char *) ckalloc((unsigned) ((NUM_COUNTERS*60) + 300)); sprintf(result, "%d entries in table, %d buckets\n", tablePtr->numEntries, tablePtr->numBuckets); p = result + strlen(result); for (i = 0; i < NUM_COUNTERS; i++) { sprintf(p, "number of buckets with %d entries: %d\n", i, count[i]); p += strlen(p); } sprintf(p, "number of buckets with more %d or more entries: %d\n", NUM_COUNTERS, overflow); p += strlen(p); sprintf(p, "average search distance for entry: %.1f", average); return result; } /* *---------------------------------------------------------------------- * * HashString -- * * Compute a one-word summary of a text string, which can be * used to generate a hash index. * * Results: * The return value is a one-word summary of the information in * string. * * Side effects: * None. * *---------------------------------------------------------------------- */ static int HashString(string) register char *string; /* String from which to compute hash value. */ { register int result, c; /* * I tried a zillion different hash functions and asked many other * people for advice. Many people had their own favorite functions, * all different, but no-one had much idea why they were good ones. * I chose the one below (multiply by 9 and add new character) * because of the following reasons: * * 1. Multiplying by 10 is perfect for keys that are decimal strings, * and multiplying by 9 is just about as good. * 2. Times-9 is (shift-left-3) plus (old). This means that each * character's bits hang around in the low-order bits of the * hash value for ever, plus they spread fairly rapidly up to * the high-order bits to fill out the hash value. This seems * works well both for decimal and non-decimal strings. */ result = 0; while (1) { c = *string; string++; if (c == 0) { break; } result += (result<<3) + c; } return result; } /* *---------------------------------------------------------------------- * * StringFind -- * * Given a hash table with string keys, and a string key, find * the entry with a matching key. * * Results: * The return value is a token for the matching entry in the * hash table, or NULL if there was no matching entry. * * Side effects: * None. * *---------------------------------------------------------------------- */ static Tcl_HashEntry * StringFind(tablePtr, key) Tcl_HashTable *tablePtr; /* Table in which to lookup entry. */ char *key; /* Key to use to find matching entry. */ { register Tcl_HashEntry *hPtr; register char *p1, *p2; int index; index = HashString(key) & tablePtr->mask; /* * Search all of the entries in the appropriate bucket. */ for (hPtr = tablePtr->buckets[index]; hPtr != NULL; hPtr = hPtr->nextPtr) { for (p1 = key, p2 = hPtr->key.string; ; p1++, p2++) { if (*p1 != *p2) { break; } if (*p1 == '\0') { return hPtr; } } } return NULL; } /* *---------------------------------------------------------------------- * * StringCreate -- * * Given a hash table with string keys, and a string key, find * the entry with a matching key. If there is no matching entry, * then create a new entry that does match. * * Results: * The return value is a pointer to the matching entry. If this * is a newly-created entry, then *newPtr will be set to a non-zero * value; otherwise *newPtr will be set to 0. If this is a new * entry the value stored in the entry will initially be 0. * * Side effects: * A new entry may be added to the hash table. * *---------------------------------------------------------------------- */ static Tcl_HashEntry * StringCreate(tablePtr, key, newPtr) Tcl_HashTable *tablePtr; /* Table in which to lookup entry. */ char *key; /* Key to use to find or create matching * entry. */ int *newPtr; /* Store info here telling whether a new * entry was created. */ { register Tcl_HashEntry *hPtr; register char *p1, *p2; int index; index = HashString(key) & tablePtr->mask; /* * Search all of the entries in this bucket. */ for (hPtr = tablePtr->buckets[index]; hPtr != NULL; hPtr = hPtr->nextPtr) { for (p1 = key, p2 = hPtr->key.string; ; p1++, p2++) { if (*p1 != *p2) { break; } if (*p1 == '\0') { *newPtr = 0; return hPtr; } } } /* * Entry not found. Add a new one to the bucket. */ *newPtr = 1; hPtr = (Tcl_HashEntry *) ckalloc((unsigned) (sizeof(Tcl_HashEntry) + strlen(key) - (sizeof(hPtr->key) -1))); hPtr->tablePtr = tablePtr; hPtr->bucketPtr = &(tablePtr->buckets[index]); hPtr->nextPtr = *hPtr->bucketPtr; hPtr->clientData = 0; strcpy(hPtr->key.string, key); *hPtr->bucketPtr = hPtr; tablePtr->numEntries++; /* * If the table has exceeded a decent size, rebuild it with many * more buckets. */ if (tablePtr->numEntries >= tablePtr->rebuildSize) { RebuildTable(tablePtr); } return hPtr; } /* *---------------------------------------------------------------------- * * OneWordFind -- * * Given a hash table with one-word keys, and a one-word key, find * the entry with a matching key. * * Results: * The return value is a token for the matching entry in the * hash table, or NULL if there was no matching entry. * * Side effects: * None. * *---------------------------------------------------------------------- */ static Tcl_HashEntry * OneWordFind(tablePtr, key) Tcl_HashTable *tablePtr; /* Table in which to lookup entry. */ register char *key; /* Key to use to find matching entry. */ { register Tcl_HashEntry *hPtr; int index; index = RANDOM_INDEX(tablePtr, key); /* * Search all of the entries in the appropriate bucket. */ for (hPtr = tablePtr->buckets[index]; hPtr != NULL; hPtr = hPtr->nextPtr) { if (hPtr->key.oneWordValue == key) { return hPtr; } } return NULL; } /* *---------------------------------------------------------------------- * * OneWordCreate -- * * Given a hash table with one-word keys, and a one-word key, find * the entry with a matching key. If there is no matching entry, * then create a new entry that does match. * * Results: * The return value is a pointer to the matching entry. If this * is a newly-created entry, then *newPtr will be set to a non-zero * value; otherwise *newPtr will be set to 0. If this is a new * entry the value stored in the entry will initially be 0. * * Side effects: * A new entry may be added to the hash table. * *---------------------------------------------------------------------- */ static Tcl_HashEntry * OneWordCreate(tablePtr, key, newPtr) Tcl_HashTable *tablePtr; /* Table in which to lookup entry. */ register char *key; /* Key to use to find or create matching * entry. */ int *newPtr; /* Store info here telling whether a new * entry was created. */ { register Tcl_HashEntry *hPtr; int index; index = RANDOM_INDEX(tablePtr, key); /* * Search all of the entries in this bucket. */ for (hPtr = tablePtr->buckets[index]; hPtr != NULL; hPtr = hPtr->nextPtr) { if (hPtr->key.oneWordValue == key) { *newPtr = 0; return hPtr; } } /* * Entry not found. Add a new one to the bucket. */ *newPtr = 1; hPtr = (Tcl_HashEntry *) ckalloc(sizeof(Tcl_HashEntry)); hPtr->tablePtr = tablePtr; hPtr->bucketPtr = &(tablePtr->buckets[index]); hPtr->nextPtr = *hPtr->bucketPtr; hPtr->clientData = 0; hPtr->key.oneWordValue = key; *hPtr->bucketPtr = hPtr; tablePtr->numEntries++; /* * If the table has exceeded a decent size, rebuild it with many * more buckets. */ if (tablePtr->numEntries >= tablePtr->rebuildSize) { RebuildTable(tablePtr); } return hPtr; } /* *---------------------------------------------------------------------- * * ArrayFind -- * * Given a hash table with array-of-int keys, and a key, find * the entry with a matching key. * * Results: * The return value is a token for the matching entry in the * hash table, or NULL if there was no matching entry. * * Side effects: * None. * *---------------------------------------------------------------------- */ static Tcl_HashEntry * ArrayFind(tablePtr, key) Tcl_HashTable *tablePtr; /* Table in which to lookup entry. */ char *key; /* Key to use to find matching entry. */ { register Tcl_HashEntry *hPtr; int *arrayPtr = (int *) key; register int *iPtr1, *iPtr2; int index, count; for (index = 0, count = tablePtr->keyType, iPtr1 = arrayPtr; count > 0; count--, iPtr1++) { index += *iPtr1; } index = RANDOM_INDEX(tablePtr, index); /* * Search all of the entries in the appropriate bucket. */ for (hPtr = tablePtr->buckets[index]; hPtr != NULL; hPtr = hPtr->nextPtr) { for (iPtr1 = arrayPtr, iPtr2 = hPtr->key.words, count = tablePtr->keyType; ; count--, iPtr1++, iPtr2++) { if (count == 0) { return hPtr; } if (*iPtr1 != *iPtr2) { break; } } } return NULL; } /* *---------------------------------------------------------------------- * * ArrayCreate -- * * Given a hash table with one-word keys, and a one-word key, find * the entry with a matching key. If there is no matching entry, * then create a new entry that does match. * * Results: * The return value is a pointer to the matching entry. If this * is a newly-created entry, then *newPtr will be set to a non-zero * value; otherwise *newPtr will be set to 0. If this is a new * entry the value stored in the entry will initially be 0. * * Side effects: * A new entry may be added to the hash table. * *---------------------------------------------------------------------- */ static Tcl_HashEntry * ArrayCreate(tablePtr, key, newPtr) Tcl_HashTable *tablePtr; /* Table in which to lookup entry. */ register char *key; /* Key to use to find or create matching * entry. */ int *newPtr; /* Store info here telling whether a new * entry was created. */ { register Tcl_HashEntry *hPtr; int *arrayPtr = (int *) key; register int *iPtr1, *iPtr2; int index, count; for (index = 0, count = tablePtr->keyType, iPtr1 = arrayPtr; count > 0; count--, iPtr1++) { index += *iPtr1; } index = RANDOM_INDEX(tablePtr, index); /* * Search all of the entries in the appropriate bucket. */ for (hPtr = tablePtr->buckets[index]; hPtr != NULL; hPtr = hPtr->nextPtr) { for (iPtr1 = arrayPtr, iPtr2 = hPtr->key.words, count = tablePtr->keyType; ; count--, iPtr1++, iPtr2++) { if (count == 0) { *newPtr = 0; return hPtr; } if (*iPtr1 != *iPtr2) { break; } } } /* * Entry not found. Add a new one to the bucket. */ *newPtr = 1; hPtr = (Tcl_HashEntry *) ckalloc((unsigned) (sizeof(Tcl_HashEntry) + (tablePtr->keyType*sizeof(int)) - 4)); hPtr->tablePtr = tablePtr; hPtr->bucketPtr = &(tablePtr->buckets[index]); hPtr->nextPtr = *hPtr->bucketPtr; hPtr->clientData = 0; for (iPtr1 = arrayPtr, iPtr2 = hPtr->key.words, count = tablePtr->keyType; count > 0; count--, iPtr1++, iPtr2++) { *iPtr2 = *iPtr1; } *hPtr->bucketPtr = hPtr; tablePtr->numEntries++; /* * If the table has exceeded a decent size, rebuild it with many * more buckets. */ if (tablePtr->numEntries >= tablePtr->rebuildSize) { RebuildTable(tablePtr); } return hPtr; } /* *---------------------------------------------------------------------- * * BogusFind -- * * This procedure is invoked when an Tcl_FindHashEntry is called * on a table that has been deleted. * * Results: * If panic returns (which it shouldn't) this procedure returns * NULL. * * Side effects: * Generates a panic. * *---------------------------------------------------------------------- */ /* ARGSUSED */ static Tcl_HashEntry * BogusFind(tablePtr, key) Tcl_HashTable *tablePtr; /* Table in which to lookup entry. */ char *key; /* Key to use to find matching entry. */ { panic("called Tcl_FindHashEntry on deleted table"); return NULL; } /* *---------------------------------------------------------------------- * * BogusCreate -- * * This procedure is invoked when an Tcl_CreateHashEntry is called * on a table that has been deleted. * * Results: * If panic returns (which it shouldn't) this procedure returns * NULL. * * Side effects: * Generates a panic. * *---------------------------------------------------------------------- */ /* ARGSUSED */ static Tcl_HashEntry * BogusCreate(tablePtr, key, newPtr) Tcl_HashTable *tablePtr; /* Table in which to lookup entry. */ char *key; /* Key to use to find or create matching * entry. */ int *newPtr; /* Store info here telling whether a new * entry was created. */ { panic("called Tcl_CreateHashEntry on deleted table"); return NULL; } /* *---------------------------------------------------------------------- * * RebuildTable -- * * This procedure is invoked when the ratio of entries to hash * buckets becomes too large. It creates a new table with a * larger bucket array and moves all of the entries into the * new table. * * Results: * None. * * Side effects: * Memory gets reallocated and entries get re-hashed to new * buckets. * *---------------------------------------------------------------------- */ static void RebuildTable(tablePtr) register Tcl_HashTable *tablePtr; /* Table to enlarge. */ { int oldSize, count, index; Tcl_HashEntry **oldBuckets; register Tcl_HashEntry **oldChainPtr, **newChainPtr; register Tcl_HashEntry *hPtr; oldSize = tablePtr->numBuckets; oldBuckets = tablePtr->buckets; /* * Allocate and initialize the new bucket array, and set up * hashing constants for new array size. */ tablePtr->numBuckets *= 4; tablePtr->buckets = (Tcl_HashEntry **) ckalloc((unsigned) (tablePtr->numBuckets * sizeof(Tcl_HashEntry *))); for (count = tablePtr->numBuckets, newChainPtr = tablePtr->buckets; count > 0; count--, newChainPtr++) { *newChainPtr = NULL; } tablePtr->rebuildSize *= 4; tablePtr->downShift -= 2; tablePtr->mask = (tablePtr->mask << 2) + 3; /* * Rehash all of the existing entries into the new bucket array. */ for (oldChainPtr = oldBuckets; oldSize > 0; oldSize--, oldChainPtr++) { for (hPtr = *oldChainPtr; hPtr != NULL; hPtr = *oldChainPtr) { *oldChainPtr = hPtr->nextPtr; if (tablePtr->keyType == TCL_STRING_KEYS) { index = HashString(hPtr->key.string) & tablePtr->mask; } else if (tablePtr->keyType == TCL_ONE_WORD_KEYS) { index = RANDOM_INDEX(tablePtr, hPtr->key.oneWordValue); } else { register int *iPtr; int count; for (index = 0, count = tablePtr->keyType, iPtr = hPtr->key.words; count > 0; count--, iPtr++) { index += *iPtr; } index = RANDOM_INDEX(tablePtr, index); } hPtr->bucketPtr = &(tablePtr->buckets[index]); hPtr->nextPtr = *hPtr->bucketPtr; *hPtr->bucketPtr = hPtr; } } /* * Free up the old bucket array, if it was dynamically allocated. */ if (oldBuckets != tablePtr->staticBuckets) { ckfree((char *) oldBuckets); } } micropolis-activity/src/tcl/tclparse.c0000664000076400007640000007772210724145723020404 0ustar simcitysimcity/* * tclParse.c -- * * This file contains a collection of procedures that are used * to parse Tcl commands or parts of commands (like quoted * strings or nested sub-commands). * * Copyright 1991 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/RCS/tclParse.c,v 1.21 92/06/08 09:32:37 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tclint.h" /* * The following table assigns a type to each character. Only types * meaningful to Tcl parsing are represented here. The table indexes * all 256 characters, with the negative ones first, then the positive * ones. */ char tclTypeTable[] = { TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_COMMAND_END, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_SPACE, TCL_COMMAND_END, TCL_SPACE, TCL_SPACE, TCL_SPACE, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_SPACE, TCL_NORMAL, TCL_QUOTE, TCL_NORMAL, TCL_DOLLAR, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_COMMAND_END, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_OPEN_BRACKET, TCL_BACKSLASH, TCL_COMMAND_END, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_NORMAL, TCL_OPEN_BRACE, TCL_NORMAL, TCL_CLOSE_BRACE, TCL_NORMAL, TCL_NORMAL, }; /* * Function prototypes for procedures local to this file: */ static char * QuoteEnd _ANSI_ARGS_((char *string, int term)); static char * VarNameEnd _ANSI_ARGS_((char *string)); /* *---------------------------------------------------------------------- * * Tcl_Backslash -- * * Figure out how to handle a backslash sequence. * * Results: * The return value is the character that should be substituted * in place of the backslash sequence that starts at src, or 0 * if the backslash sequence should be replace by nothing (e.g. * backslash followed by newline). If readPtr isn't NULL then * it is filled in with a count of the number of characters in * the backslash sequence. Note: if the backslash isn't followed * by characters that are understood here, then the backslash * sequence is only considered to be one character long, and it * is replaced by a backslash char. * * Side effects: * None. * *---------------------------------------------------------------------- */ char Tcl_Backslash(src, readPtr) char *src; /* Points to the backslash character of * a backslash sequence. */ int *readPtr; /* Fill in with number of characters read * from src, unless NULL. */ { register char *p = src+1; char result; int count; count = 2; switch (*p) { case 'b': result = '\b'; break; case 'e': result = 033; break; case 'f': result = '\f'; break; case 'n': result = '\n'; break; case 'r': result = '\r'; break; case 't': result = '\t'; break; case 'v': result = '\v'; break; case 'C': p++; if (isspace(*p) || (*p == 0)) { result = 'C'; count = 1; break; } count = 3; if (*p == 'M') { p++; if (isspace(*p) || (*p == 0)) { result = 'M' & 037; break; } count = 4; result = (*p & 037) | 0200; break; } count = 3; result = *p & 037; break; case 'M': p++; if (isspace(*p) || (*p == 0)) { result = 'M'; count = 1; break; } count = 3; result = *p + 0200; break; case '}': case '{': case ']': case '[': case '$': case ' ': case ';': case '"': case '\\': result = *p; break; case '\n': result = 0; break; default: if (isdigit(*p)) { result = *p - '0'; p++; if (!isdigit(*p)) { break; } count = 3; result = (result << 3) + (*p - '0'); p++; if (!isdigit(*p)) { break; } count = 4; result = (result << 3) + (*p - '0'); break; } result = '\\'; count = 1; break; } if (readPtr != NULL) { *readPtr = count; } return result; } /* *-------------------------------------------------------------- * * TclParseQuotes -- * * This procedure parses a double-quoted string such as a * quoted Tcl command argument or a quoted value in a Tcl * expression. This procedure is also used to parse array * element names within parentheses, or anything else that * needs all the substitutions that happen in quotes. * * Results: * The return value is a standard Tcl result, which is * TCL_OK unless there was an error while parsing the * quoted string. If an error occurs then interp->result * contains a standard error message. *TermPtr is filled * in with the address of the character just after the * last one successfully processed; this is usually the * character just after the matching close-quote. The * fully-substituted contents of the quotes are stored in * standard fashion in *pvPtr, null-terminated with * pvPtr->next pointing to the terminating null character. * * Side effects: * The buffer space in pvPtr may be enlarged by calling its * expandProc. * *-------------------------------------------------------------- */ int TclParseQuotes(interp, string, termChar, flags, termPtr, pvPtr) Tcl_Interp *interp; /* Interpreter to use for nested command * evaluations and error messages. */ char *string; /* Character just after opening double- * quote. */ int termChar; /* Character that terminates "quoted" string * (usually double-quote, but sometimes * right-paren or something else). */ int flags; /* Flags to pass to nested Tcl_Eval calls. */ char **termPtr; /* Store address of terminating character * here. */ ParseValue *pvPtr; /* Information about where to place * fully-substituted result of parse. */ { register char *src, *dst, c; src = string; dst = pvPtr->next; while (1) { if (dst == pvPtr->end) { /* * Target buffer space is about to run out. Make more space. */ pvPtr->next = dst; (*pvPtr->expandProc)(pvPtr, 1); dst = pvPtr->next; } c = *src; src++; if (c == termChar) { *dst = '\0'; pvPtr->next = dst; *termPtr = src; return TCL_OK; } else if (CHAR_TYPE(c) == TCL_NORMAL) { copy: *dst = c; dst++; continue; } else if (c == '$') { int length; char *value; value = Tcl_ParseVar(interp, src-1, termPtr); if (value == NULL) { return TCL_ERROR; } src = *termPtr; length = strlen(value); if ((pvPtr->end - dst) <= length) { pvPtr->next = dst; (*pvPtr->expandProc)(pvPtr, length); dst = pvPtr->next; } strcpy(dst, value); dst += length; continue; } else if (c == '[') { int result; pvPtr->next = dst; result = TclParseNestedCmd(interp, src, flags, termPtr, pvPtr); if (result != TCL_OK) { return result; } src = *termPtr; dst = pvPtr->next; continue; } else if (c == '\\') { int numRead; src--; *dst = Tcl_Backslash(src, &numRead); if (*dst != 0) { dst++; } src += numRead; continue; } else if (c == '\0') { Tcl_ResetResult(interp); sprintf(interp->result, "missing %c", termChar); *termPtr = string-1; return TCL_ERROR; } else { goto copy; } } } /* *-------------------------------------------------------------- * * TclParseNestedCmd -- * * This procedure parses a nested Tcl command between * brackets, returning the result of the command. * * Results: * The return value is a standard Tcl result, which is * TCL_OK unless there was an error while executing the * nested command. If an error occurs then interp->result * contains a standard error message. *TermPtr is filled * in with the address of the character just after the * last one processed; this is usually the character just * after the matching close-bracket, or the null character * at the end of the string if the close-bracket was missing * (a missing close bracket is an error). The result returned * by the command is stored in standard fashion in *pvPtr, * null-terminated, with pvPtr->next pointing to the null * character. * * Side effects: * The storage space at *pvPtr may be expanded. * *-------------------------------------------------------------- */ int TclParseNestedCmd(interp, string, flags, termPtr, pvPtr) Tcl_Interp *interp; /* Interpreter to use for nested command * evaluations and error messages. */ char *string; /* Character just after opening bracket. */ int flags; /* Flags to pass to nested Tcl_Eval. */ char **termPtr; /* Store address of terminating character * here. */ register ParseValue *pvPtr; /* Information about where to place * result of command. */ { int result, length, shortfall; Interp *iPtr = (Interp *) interp; result = Tcl_Eval(interp, string, flags | TCL_BRACKET_TERM, termPtr); if (result != TCL_OK) { /* * The increment below results in slightly cleaner message in * the errorInfo variable (the close-bracket will appear). */ if (**termPtr == ']') { *termPtr += 1; } return result; } (*termPtr) += 1; length = strlen(iPtr->result); shortfall = length + 1 - (pvPtr->end - pvPtr->next); if (shortfall > 0) { (*pvPtr->expandProc)(pvPtr, shortfall); } strcpy(pvPtr->next, iPtr->result); pvPtr->next += length; Tcl_FreeResult(iPtr); iPtr->result = iPtr->resultSpace; iPtr->resultSpace[0] = '\0'; return TCL_OK; } /* *-------------------------------------------------------------- * * TclParseBraces -- * * This procedure scans the information between matching * curly braces. * * Results: * The return value is a standard Tcl result, which is * TCL_OK unless there was an error while parsing string. * If an error occurs then interp->result contains a * standard error message. *TermPtr is filled * in with the address of the character just after the * last one successfully processed; this is usually the * character just after the matching close-brace. The * information between curly braces is stored in standard * fashion in *pvPtr, null-terminated with pvPtr->next * pointing to the terminating null character. * * Side effects: * The storage space at *pvPtr may be expanded. * *-------------------------------------------------------------- */ int TclParseBraces(interp, string, termPtr, pvPtr) Tcl_Interp *interp; /* Interpreter to use for nested command * evaluations and error messages. */ char *string; /* Character just after opening bracket. */ char **termPtr; /* Store address of terminating character * here. */ register ParseValue *pvPtr; /* Information about where to place * result of command. */ { int level; register char *src, *dst, *end; register char c; src = string; dst = pvPtr->next; end = pvPtr->end; level = 1; /* * Copy the characters one at a time to the result area, stopping * when the matching close-brace is found. */ while (1) { c = *src; src++; if (dst == end) { pvPtr->next = dst; (*pvPtr->expandProc)(pvPtr, 20); dst = pvPtr->next; end = pvPtr->end; } *dst = c; dst++; if (CHAR_TYPE(c) == TCL_NORMAL) { continue; } else if (c == '{') { level++; } else if (c == '}') { level--; if (level == 0) { dst--; /* Don't copy the last close brace. */ break; } } else if (c == '\\') { int count; /* * Must always squish out backslash-newlines, even when in * braces. This is needed so that this sequence can appear * anywhere in a command, such as the middle of an expression. */ if (*src == '\n') { dst--; src++; } else { (void) Tcl_Backslash(src-1, &count); while (count > 1) { if (dst == end) { pvPtr->next = dst; (*pvPtr->expandProc)(pvPtr, 20); dst = pvPtr->next; end = pvPtr->end; } *dst = *src; dst++; src++; count--; } } } else if (c == '\0') { Tcl_SetResult(interp, "missing close-brace", TCL_STATIC); *termPtr = string-1; return TCL_ERROR; } } *dst = '\0'; pvPtr->next = dst; *termPtr = src; return TCL_OK; } /* *-------------------------------------------------------------- * * TclParseWords -- * * This procedure parses one or more words from a command * string and creates argv-style pointers to fully-substituted * copies of those words. * * Results: * The return value is a standard Tcl result. * * *argcPtr is modified to hold a count of the number of words * successfully parsed, which may be 0. At most maxWords words * will be parsed. If 0 <= *argcPtr < maxWords then it * means that a command separator was seen. If *argcPtr * is maxWords then it means that a command separator was * not seen yet. * * *TermPtr is filled in with the address of the character * just after the last one successfully processed in the * last word. This is either the command terminator (if * *argcPtr < maxWords), the character just after the last * one in a word (if *argcPtr is maxWords), or the vicinity * of an error (if the result is not TCL_OK). * * The pointers at *argv are filled in with pointers to the * fully-substituted words, and the actual contents of the * words are copied to the buffer at pvPtr. * * If an error occurrs then an error message is left in * interp->result and the information at *argv, *argcPtr, * and *pvPtr may be incomplete. * * Side effects: * The buffer space in pvPtr may be enlarged by calling its * expandProc. * *-------------------------------------------------------------- */ int TclParseWords(interp, string, flags, maxWords, termPtr, argcPtr, argv, pvPtr) Tcl_Interp *interp; /* Interpreter to use for nested command * evaluations and error messages. */ char *string; /* First character of word. */ int flags; /* Flags to control parsing (same values as * passed to Tcl_Eval). */ int maxWords; /* Maximum number of words to parse. */ char **termPtr; /* Store address of terminating character * here. */ int *argcPtr; /* Filled in with actual number of words * parsed. */ char **argv; /* Store addresses of individual words here. */ register ParseValue *pvPtr; /* Information about where to place * fully-substituted word. */ { register char *src, *dst; register char c; int type, result, argc; char *oldBuffer; /* Used to detect when pvPtr's buffer gets * reallocated, so we can adjust all of the * argv pointers. */ src = string; oldBuffer = pvPtr->buffer; dst = pvPtr->next; for (argc = 0; argc < maxWords; argc++) { argv[argc] = dst; /* * Skip leading space. */ skipSpace: c = *src; type = CHAR_TYPE(c); while (type == TCL_SPACE) { src++; c = *src; type = CHAR_TYPE(c); } /* * Handle the normal case (i.e. no leading double-quote or brace). */ if (type == TCL_NORMAL) { normalArg: while (1) { if (dst == pvPtr->end) { /* * Target buffer space is about to run out. Make * more space. */ pvPtr->next = dst; (*pvPtr->expandProc)(pvPtr, 1); dst = pvPtr->next; } if (type == TCL_NORMAL) { copy: *dst = c; dst++; src++; } else if (type == TCL_SPACE) { goto wordEnd; } else if (type == TCL_DOLLAR) { int length; char *value; value = Tcl_ParseVar(interp, src, termPtr); if (value == NULL) { return TCL_ERROR; } src = *termPtr; length = strlen(value); if ((pvPtr->end - dst) <= length) { pvPtr->next = dst; (*pvPtr->expandProc)(pvPtr, length); dst = pvPtr->next; } strcpy(dst, value); dst += length; } else if (type == TCL_COMMAND_END) { if ((c == ']') && !(flags & TCL_BRACKET_TERM)) { goto copy; } /* * End of command; simulate a word-end first, so * that the end-of-command can be processed as the * first thing in a new word. */ goto wordEnd; } else if (type == TCL_OPEN_BRACKET) { pvPtr->next = dst; result = TclParseNestedCmd(interp, src+1, flags, termPtr, pvPtr); if (result != TCL_OK) { return result; } src = *termPtr; dst = pvPtr->next; } else if (type == TCL_BACKSLASH) { int numRead; *dst = Tcl_Backslash(src, &numRead); if (*dst != 0) { dst++; } src += numRead; } else { goto copy; } c = *src; type = CHAR_TYPE(c); } } else { /* * Check for the end of the command. */ if (type == TCL_COMMAND_END) { if (flags & TCL_BRACKET_TERM) { if (c == '\0') { Tcl_SetResult(interp, "missing close-bracket", TCL_STATIC); return TCL_ERROR; } } else { if (c == ']') { goto normalArg; } } goto done; } /* * Now handle the special cases: open braces, double-quotes, * and backslash-newline. */ pvPtr->next = dst; if (type == TCL_QUOTE) { result = TclParseQuotes(interp, src+1, '"', flags, termPtr, pvPtr); } else if (type == TCL_OPEN_BRACE) { result = TclParseBraces(interp, src+1, termPtr, pvPtr); } else if ((type == TCL_BACKSLASH) && (src[1] == '\n')) { src += 2; goto skipSpace; } else { goto normalArg; } if (result != TCL_OK) { return result; } /* * Back from quotes or braces; make sure that the terminating * character was the end of the word. Have to be careful here * to handle continuation lines (i.e. lines ending in backslash). */ c = **termPtr; if ((c == '\\') && ((*termPtr)[1] == '\n')) { c = (*termPtr)[2]; } type = CHAR_TYPE(c); if ((type != TCL_SPACE) && (type != TCL_COMMAND_END)) { if (*src == '"') { Tcl_SetResult(interp, "extra characters after close-quote", TCL_STATIC); } else { Tcl_SetResult(interp, "extra characters after close-brace", TCL_STATIC); } return TCL_ERROR; } src = *termPtr; dst = pvPtr->next; } /* * We're at the end of a word, so add a null terminator. Then * see if the buffer was re-allocated during this word. If so, * update all of the argv pointers. */ wordEnd: *dst = '\0'; dst++; if (oldBuffer != pvPtr->buffer) { int i; for (i = 0; i <= argc; i++) { argv[i] = pvPtr->buffer + (argv[i] - oldBuffer); } oldBuffer = pvPtr->buffer; } } done: pvPtr->next = dst; *termPtr = src; *argcPtr = argc; return TCL_OK; } /* *-------------------------------------------------------------- * * TclExpandParseValue -- * * This procedure is commonly used as the value of the * expandProc in a ParseValue. It uses malloc to allocate * more space for the result of a parse. * * Results: * The buffer space in *pvPtr is reallocated to something * larger, and if pvPtr->clientData is non-zero the old * buffer is freed. Information is copied from the old * buffer to the new one. * * Side effects: * None. * *-------------------------------------------------------------- */ void TclExpandParseValue(pvPtr, needed) register ParseValue *pvPtr; /* Information about buffer that * must be expanded. If the clientData * in the structure is non-zero, it * means that the current buffer is * dynamically allocated. */ int needed; /* Minimum amount of additional space * to allocate. */ { int newSpace; char *new; /* * Either double the size of the buffer or add enough new space * to meet the demand, whichever produces a larger new buffer. */ newSpace = (pvPtr->end - pvPtr->buffer) + 1; if (newSpace < needed) { newSpace += needed; } else { newSpace += newSpace; } new = (char *) ckalloc((unsigned) newSpace); /* * Copy from old buffer to new, free old buffer if needed, and * mark new buffer as malloc-ed. */ memcpy((VOID *) new, (VOID *) pvPtr->buffer, pvPtr->next - pvPtr->buffer); pvPtr->next = new + (pvPtr->next - pvPtr->buffer); if (pvPtr->clientData != 0) { ckfree(pvPtr->buffer); } pvPtr->buffer = new; pvPtr->end = new + newSpace - 1; pvPtr->clientData = (ClientData) 1; } /* *---------------------------------------------------------------------- * * TclWordEnd -- * * Given a pointer into a Tcl command, find the end of the next * word of the command. * * Results: * The return value is a pointer to the character just after the * last one that's part of the word pointed to by "start". This * may be the address of the NULL character at the end of the * string. * * Side effects: * None. * *---------------------------------------------------------------------- */ char * TclWordEnd(start, nested) char *start; /* Beginning of a word of a Tcl command. */ int nested; /* Zero means this is a top-level command. * One means this is a nested command (close * brace is a word terminator). */ { register char *p; int count; p = start; while (isspace(*p)) { p++; } /* * Handle words beginning with a double-quote or a brace. */ if (*p == '"') { p = QuoteEnd(p+1, '"'); } else if (*p == '{') { int braces = 1; while (braces != 0) { p++; while (*p == '\\') { (void) Tcl_Backslash(p, &count); p += count; } if (*p == '}') { braces--; } else if (*p == '{') { braces++; } else if (*p == 0) { return p; } } } /* * Handle words that don't start with a brace or double-quote. * This code is also invoked if the word starts with a brace or * double-quote and there is garbage after the closing brace or * quote. This is an error as far as Tcl_Eval is concerned, but * for here the garbage is treated as part of the word. */ while (*p != 0) { if (*p == '[') { p++; while ((*p != ']') && (*p != 0)) { p = TclWordEnd(p, 1); } if (*p == ']') { p++; } } else if (*p == '\\') { (void) Tcl_Backslash(p, &count); p += count; } else if (*p == '$') { p = VarNameEnd(p); } else if (*p == ';') { /* * Note: semi-colon terminates a word * and also counts as a word by itself. */ if (p == start) { p++; } break; } else if (isspace(*p)) { break; } else if ((*p == ']') && nested) { break; } else { p++; } } return p; } /* *---------------------------------------------------------------------- * * QuoteEnd -- * * Given a pointer to a string that obeys the parsing conventions * for quoted things in Tcl, find the end of that quoted thing. * The actual thing may be a quoted argument or a parenthesized * index name. * * Results: * The return value is a pointer to the character just after the * last one that is part of the quoted string. * * Side effects: * None. * *---------------------------------------------------------------------- */ static char * QuoteEnd(string, term) char *string; /* Pointer to character just after opening * "quote". */ int term; /* This character will terminate the * quoted string (e.g. '"' or ')'). */ { register char *p = string; int count; while ((*p != 0) && (*p != term)) { if (*p == '\\') { (void) Tcl_Backslash(p, &count); p += count; } else if (*p == '[') { p++; while ((*p != ']') && (*p != 0)) { p = TclWordEnd(p, 1); } if (*p == ']') { p++; } } else if (*p == '$') { p = VarNameEnd(p); } else { p++; } } return p; } /* *---------------------------------------------------------------------- * * VarNameEnd -- * * Given a pointer to a variable reference using $-notation, find * the end of the variable name spec. * * Results: * The return value is a pointer to the character just after the * last one that is part of the variable name. * * Side effects: * None. * *---------------------------------------------------------------------- */ static char * VarNameEnd(string) char *string; /* Pointer to dollar-sign character. */ { register char *p = string+1; if (*p == '{') { do { p++; } while ((*p != '}') && (*p != 0)); } else { while (isalnum(*p) || (*p == '_')) { p++; } if ((*p == '(') && (p != string+1)) { p = QuoteEnd(p+1, ')'); } } return p; } /* *---------------------------------------------------------------------- * * Tcl_ParseVar -- * * Given a string starting with a $ sign, parse off a variable * name and return its value. * * Results: * The return value is the contents of the variable given by * the leading characters of string. If termPtr isn't NULL, * *termPtr gets filled in with the address of the character * just after the last one in the variable specifier. If the * variable doesn't exist, then the return value is NULL and * an error message will be left in interp->result. * * Side effects: * None. * *---------------------------------------------------------------------- */ char * Tcl_ParseVar(interp, string, termPtr) Tcl_Interp *interp; /* Context for looking up variable. */ register char *string; /* String containing variable name. * First character must be "$". */ char **termPtr; /* If non-NULL, points to word to fill * in with character just after last * one in the variable specifier. */ { char *name1, *name1End, c, *result; register char *name2; #define NUM_CHARS 200 char copyStorage[NUM_CHARS]; ParseValue pv; /* * There are three cases: * 1. The $ sign is followed by an open curly brace. Then the variable * name is everything up to the next close curly brace, and the * variable is a scalar variable. * 2. The $ sign is not followed by an open curly brace. Then the * variable name is everything up to the next character that isn't * a letter, digit, or underscore. If the following character is an * open parenthesis, then the information between parentheses is * the array element name, which can include any of the substitutions * permissible between quotes. * 3. The $ sign is followed by something that isn't a letter, digit, * or underscore: in this case, there is no variable name, and "$" * is returned. */ name2 = NULL; string++; if (*string == '{') { string++; name1 = string; while (*string != '}') { if (*string == 0) { Tcl_SetResult(interp, "missing close-brace for variable name", TCL_STATIC); if (termPtr != 0) { *termPtr = string; } return NULL; } string++; } name1End = string; string++; } else { name1 = string; while (isalnum(*string) || (*string == '_')) { string++; } if (string == name1) { if (termPtr != 0) { *termPtr = string; } return "$"; } name1End = string; if (*string == '(') { char *end; /* * Perform substitutions on the array element name, just as * is done for quotes. */ pv.buffer = pv.next = copyStorage; pv.end = copyStorage + NUM_CHARS - 1; pv.expandProc = TclExpandParseValue; pv.clientData = (ClientData) NULL; if (TclParseQuotes(interp, string+1, ')', 0, &end, &pv) != TCL_OK) { char msg[100]; sprintf(msg, "\n (parsing index for array \"%.*s\")", string-name1, name1); Tcl_AddErrorInfo(interp, msg); result = NULL; name2 = pv.buffer; if (termPtr != 0) { *termPtr = end; } goto done; } string = end; name2 = pv.buffer; } } if (termPtr != 0) { *termPtr = string; } c = *name1End; *name1End = 0; result = Tcl_GetVar2(interp, name1, name2, TCL_LEAVE_ERR_MSG); *name1End = c; done: if ((name2 != NULL) && (pv.buffer != copyStorage)) { ckfree(pv.buffer); } return result; } micropolis-activity/src/tcl/regexp.h0000664000076400007640000000144610724145723020054 0ustar simcitysimcity/* * Definitions etc. for regexp(3) routines. * * Caveat: this is V8 regexp(3) [actually, a reimplementation thereof], * not the System V one. */ #ifndef _TCL #include "tcl.h" #endif #ifndef _REGEXP #define _REGEXP 1 #define NSUBEXP 10 typedef struct regexp { char *startp[NSUBEXP]; char *endp[NSUBEXP]; char regstart; /* Internal use only. */ char reganch; /* Internal use only. */ char *regmust; /* Internal use only. */ int regmlen; /* Internal use only. */ char program[1]; /* Unwarranted chumminess with compiler. */ } regexp; extern regexp *regcomp _ANSI_ARGS_((char *exp)); extern int regexec _ANSI_ARGS_((regexp *prog, char *string)); extern void regsub _ANSI_ARGS_((regexp *prog, char *source, char *dest)); extern void regerror _ANSI_ARGS_((char *msg)); #endif /* REGEXP */ micropolis-activity/src/tcl/config0000775000076400007640000002331410724145723017602 0ustar simcitysimcity#!/bin/csh -f # # This script should be executed to configure the Tcl source directory # for a particular system. It probes the system for various header # files and library object files. Where things needed by Tcl are missing, # substitute versions are included from the "compat" subdirectory. # # $Header: /user6/ouster/tcl/RCS/config,v 1.30 92/05/13 09:27:18 ouster Exp $ SPRITE (Berkeley) # # Copyright 1991, 1992 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. #-------------------------------------------------------------- # The variable definitions below configure this script: they # tell where system-defined things are kept (so this program # can tell whether the system contains certain features needed # by Tcl), and they indicate which Tcl files to modify to # reflect the configuration. # Directory containing system include files: set includeDir="/usr/include" # Archive file containing object code for standard C library: set libc="/usr/lib/libc.a" # Makefile to modify: set makefile="makefile" # Header file to modify to hold #defines about system configuration: set config="tclunix.h" #-------------------------------------------------------------- set changes=0 unset time # First make sure that the configuration variables have been # set in a reasonable fashion. if ( ! -r $includeDir/stdio.h ) then echo "- ERROR\!\! $includeDir doesn't seem to contain standard system" echo " include files. Please edit config to set the includeDir" echo " variable." exit(1) endif if ( ! -r $libc ) then echo "- ERROR\!\! C library $libc doesn\'t exist. Please edit config" echo " to set the libc variable." exit(1) endif nm -p $libc > tmp.libc if ( $status != 0 ) then echo "- ERROR\!\! Nm failed to extract names of system-supplied library" echo " procedures from $libc. You'll have to modify config by hand to" echo " fix the problem (whatever it is)." exit(1) endif # Since nm produces different output on different machines, the code # below attempts to guess what pattern to grep for in the nm output. set pattern="[ADIT]" set x=`grep printf tmp.libc | grep -c CODE` if ( $x ) then set pattern=CODE endif set x=`grep printf tmp.libc | grep -c extern` if ( $x ) then set pattern="|extern|" endif # Check in the C library for particular library procedures and # variables needed by Tcl. set gettod=`grep gettimeofday tmp.libc | grep -c "$pattern"` if ( $gettod > 1 ) set gettod=1 set getwd=`grep getwd tmp.libc | grep -c "$pattern"` if ( $getwd > 1 ) set getwd=1 set opendir=`grep opendir tmp.libc | grep -c "$pattern"` if ( $opendir > 1 ) set opendir=1 set strerror=`grep strerror tmp.libc | grep -c "$pattern"` if ( $strerror > 1 ) set strerror=1 set strstr=`grep strstr tmp.libc | grep -c "$pattern"` if ( $strstr > 1 ) set strstr=1 set strtod=`grep strtod tmp.libc | grep -c "$pattern"` if ( $strtod > 1 ) set strtod=1 set strtol=`grep strtol tmp.libc | grep -c "$pattern"` if ( $strtol > 1 ) set strtol=1 set strtoul=`grep strtoul tmp.libc | grep -c "$pattern"` if ( $strtoul > 1 ) set strtoul=1 set sys_errlist=`grep sys_errlist tmp.libc | grep -c "$pattern"` if ( $sys_errlist > 1 ) set sys_errlist=1 \rm tmp.libc # Next, install header files that aren't present in /usr/include. set extraHdrs="" foreach i (dirent.h limits.h) \rm -f $i if ( ! -r $includeDir/$i ) then cp compat/$i . set extraHdrs="$extraHdrs $i" endif end set stdlibOK=0 \rm -f stdlib.h if ( -r $includeDir/stdlib.h ) then # The check below is needed because SunOS has a stdlib that # doesn't declare strtod and other procedures, so we have to # use ours instead. set chk1=`grep -c strtol $includeDir/stdlib.h` set chk2=`grep -c strtoul $includeDir/stdlib.h` set chk3=`grep -c strtod $includeDir/stdlib.h` if ( $chk1 > 0 && $chk2 > 0 && $chk3 > 0 ) then set stdlibOK=1 endif endif # XXX: Un-Kludge around sun acc, which doesn't need this... set stdlibOK=1 if ( ! $stdlibOK ) then cp compat/stdlib.h . set extraHdrs="$extraHdrs stdlib.h" endif # Even if string.h exists it's not complete on all systems. If # some of the procedures we need are missing from the library, then # also install a Tcl-specific string.h. \rm -f string.h if ( ! $strstr || ! $strtoul || ! -r $includeDir/string.h ) then cp compat/string.h . set extraHdrs="$extraHdrs string.h" endif if ( "$extraHdrs" != "" ) then echo "- Substitutes will be used for the following header files," echo " which aren't in ${includeDir} or aren't complete:" echo " $extraHdrs" set changes=1 endif # Even if strtoul exists, it is bogus on some AIX systems. Detect # this and pretend the system version doesn't exist if it's bogus. if ( $strtoul ) then cp compat/teststrtoul.c test.c make configtest >& /dev/null if ( $status == 0 ) then ./a.out if ( $status != 0 ) then set strtoul=0 endif endif \rm -f a.out test.c endif # Next, install C procedures for missing library functions. set extraLibs="" \rm -f strerror.c if ( ! $strerror ) then set extraLibs="$extraLibs strerror" cp compat/strerror.c . endif \rm -f opendir.c if ( ! $opendir ) then set extraLibs="$extraLibs opendir" cp compat/opendir.c . \rm -f dirent.h cp compat/dirent2.h dirent.h echo "- No opendir/readdir/closedir library exists in this system," echo " so substitutes will be provided. This system better have" echo " V7-style directories\!" endif \rm -f strstr.c if ( ! $strstr ) then set extraLibs="$extraLibs strstr" cp compat/strstr.c . endif \rm -f strtod.c if ( ! $strtod ) then set extraLibs="$extraLibs strtod" cp compat/strtod.c . endif \rm -f strtol.c if ( ! $strtol ) then set extraLibs="$extraLibs strtol" cp compat/strtol.c . endif \rm -f strtoul.c if ( ! $strtoul ) then set extraLibs="$extraLibs strtoul" cp compat/strtoul.c . endif if ( "$extraLibs" != "" ) then echo "- Substitutes will be used for the following library procedures," echo " which aren't in ${libc} or don't work correctly:" echo " $extraLibs" set changes=1 endif # The following statements determine whether ranlib should be used # in the Makefile. On System-V systems it shouldn't. The only way # to figure this out is to run ranlib and see if it complains (ranlib # actually exists on some Sys-V systems, but it returns an error if # you run it). set ranlibOK=0 cat > ranlibtest.c << EOF #include main (argc, argv) int argc; char **argv; { printf ("Hello, world.\n"); } EOF cc -c ranlibtest.c ar cru ranlibtest.a ranlibtest.o ranlib ranlibtest.a >& /dev/null if ( $status == 0 ) then set ranlibOK=1 else echo "- This system appears to be a System V one where ranlib isn't" echo " used. The ranlib commands will be removed from Makefile." set changes=1 endif \rm -f ranlibtest.* # Modify the Makefile to include supplemental library sources, if needed. set compatObjs="" foreach i ($extraLibs) set compatObjs="$compatObjs $i.o" end #if ( ! -e $makefile.bak ) mv $makefile $makefile.bak mv $makefile $makefile.bak if ( $ranlibOK ) then sed -e "s/COMPAT_OBJS =/COMPAT_OBJS =$compatObjs/" $makefile.bak > $makefile else sed -e "s/COMPAT_OBJS =/COMPAT_OBJS =$compatObjs/" \ -e "/ranlib/d" $makefile.bak > $makefile endif # Set the #defines in tclUnix.h to provide various pieces of system # configuration information at compile time (existence of header files, # variables, type definitions, etc.) if ( ! $gettod ) then echo "- There's no gettimeofday in ${libc} so Tcl will use" echo ' times for the "time" command.' set changes=1 endif if ( ! $getwd ) then echo "- There's no getwd in ${libc} so Tcl will use" echo ' getcwd for the "pwd" command.' set changes=1 endif set errlist=1 if ( ! $sys_errlist && ! $strerror ) then echo "- Neither strerror nor sys_errlist is defined in ${libc} so" echo " Tcl will make a guess about errno-related messages." set errlist=0 set changes=1 endif set sysTime=0 if ( -r $includeDir/sys/time.h ) then set sysTime=1 endif set sysWait=0 set unionWait=0 if ( -r $includeDir/sys/wait.h ) then set sysWait=1 cp compat/testwait.c test.c make configtest >& /dev/null if ( $status == 0 ) then set unionWait=1 endif \rm -f a.out test.c endif set pid_t=1 cp compat/testpid.c test.c make configtest >& /dev/null if ( $status != 0 ) then set pid_t=0 echo "- The type pid_t isn't defined in so Tcl will" echo ' use "int" instead.' endif \rm -f a.out test.c set uid_t=1 cp compat/testuid.c test.c make configtest >& /dev/null if ( $status != 0 ) then set uid_t=0 echo "- The type uid_t isn't defined in so Tcl will" echo ' use "int" instead.' endif \rm -f a.out test.c if ( ! -e $config.bak ) mv $config $config.bak set x=\.\*\$ sed -e "s/define TCL_GETTOD 1/define TCL_GETTOD $gettod/" \ -e "s/define TCL_GETWD 1/define TCL_GETWD $getwd/" \ -e "s/define TCL_SYS_ERRLIST 1/define TCL_SYS_ERRLIST $errlist/" \ -e "s/define TCL_SYS_TIME_H 1/define TCL_SYS_TIME_H $sysTime/" \ -e "s/define TCL_SYS_WAIT_H 1/define TCL_SYS_WAIT_H $sysWait/" \ -e "s/define TCL_UNION_WAIT 1/define TCL_UNION_WAIT $unionWait/" \ -e "s/define TCL_PID_T 1/define TCL_PID_T $pid_t/" \ -e "s/define TCL_UID_T 1/define TCL_UID_T $uid_t/" \ $config.bak > $config if ( ! $changes ) then echo "- No special modifications were needed for this system." endif micropolis-activity/src/tcl/tclutil.c0000664000076400007640000010737710724145723020247 0ustar simcitysimcity/* * tclUtil.c -- * * This file contains utility procedures that are used by many Tcl * commands. * * Copyright 1987-1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/RCS/tclUtil.c,v 1.63 92/07/02 08:50:54 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tclint.h" /* * The following values are used in the flags returned by Tcl_ScanElement * and used by Tcl_ConvertElement. The value TCL_DONT_USE_BRACES is also * defined in tcl.h; make sure its value doesn't overlap with any of the * values below. * * TCL_DONT_USE_BRACES - 1 means the string mustn't be enclosed in * braces (e.g. it contains unmatched braces, * or ends in a backslash character, or user * just doesn't want braces); handle all * special characters by adding backslashes. * USE_BRACES - 1 means the string contains a special * character that can be handled simply by * enclosing the entire argument in braces. * BRACES_UNMATCHED - 1 means that braces aren't properly matched * in the argument. */ #define USE_BRACES 2 #define BRACES_UNMATCHED 4 /* * The variable below is set to NULL before invoking regexp functions * and checked after those functions. If an error occurred then regerror * will set the variable to point to a (static) error message. This * mechanism unfortunately does not support multi-threading, but then * neither does the rest of the regexp facilities. */ char *tclRegexpError = NULL; /* * Function prototypes for local procedures in this file: */ static void SetupAppendBuffer _ANSI_ARGS_((Interp *iPtr, int newSpace)); /* *---------------------------------------------------------------------- * * TclFindElement -- * * Given a pointer into a Tcl list, locate the first (or next) * element in the list. * * Results: * The return value is normally TCL_OK, which means that the * element was successfully located. If TCL_ERROR is returned * it means that list didn't have proper list structure; * interp->result contains a more detailed error message. * * If TCL_OK is returned, then *elementPtr will be set to point * to the first element of list, and *nextPtr will be set to point * to the character just after any white space following the last * character that's part of the element. If this is the last argument * in the list, then *nextPtr will point to the NULL character at the * end of list. If sizePtr is non-NULL, *sizePtr is filled in with * the number of characters in the element. If the element is in * braces, then *elementPtr will point to the character after the * opening brace and *sizePtr will not include either of the braces. * If there isn't an element in the list, *sizePtr will be zero, and * both *elementPtr and *termPtr will refer to the null character at * the end of list. Note: this procedure does NOT collapse backslash * sequences. * * Side effects: * None. * *---------------------------------------------------------------------- */ int TclFindElement(interp, list, elementPtr, nextPtr, sizePtr, bracePtr) Tcl_Interp *interp; /* Interpreter to use for error reporting. */ register char *list; /* String containing Tcl list with zero * or more elements (possibly in braces). */ char **elementPtr; /* Fill in with location of first significant * character in first element of list. */ char **nextPtr; /* Fill in with location of character just * after all white space following end of * argument (i.e. next argument or end of * list). */ int *sizePtr; /* If non-zero, fill in with size of * element. */ int *bracePtr; /* If non-zero fill in with non-zero/zero * to indicate that arg was/wasn't * in braces. */ { register char *p; int openBraces = 0; int inQuotes = 0; int size; /* * Skim off leading white space and check for an opening brace or * quote. Note: use of "isascii" below and elsewhere in this * procedure is a temporary workaround (7/27/90) because Mx uses characters * with the high-order bit set for some things. This should probably * be changed back eventually, or all of Tcl should call isascii. */ while (isascii(*list) && isspace(*list)) { list++; } if (*list == '{') { openBraces = 1; list++; } else if (*list == '"') { inQuotes = 1; list++; } if (bracePtr != 0) { *bracePtr = openBraces; } p = list; /* * Find the end of the element (either a space or a close brace or * the end of the string). */ while (1) { switch (*p) { /* * Open brace: don't treat specially unless the element is * in braces. In this case, keep a nesting count. */ case '{': if (openBraces != 0) { openBraces++; } break; /* * Close brace: if element is in braces, keep nesting * count and quit when the last close brace is seen. */ case '}': if (openBraces == 1) { char *p2; size = p - list; p++; if ((isascii(*p) && isspace(*p)) || (*p == 0)) { goto done; } for (p2 = p; (*p2 != 0) && (!isspace(*p2)) && (p2 < p+20); p2++) { /* null body */ } Tcl_ResetResult(interp); sprintf(interp->result, "list element in braces followed by \"%.*s\" instead of space", p2-p, p); return TCL_ERROR; } else if (openBraces != 0) { openBraces--; } break; /* * Backslash: skip over everything up to the end of the * backslash sequence. */ case '\\': { int size; (void) Tcl_Backslash(p, &size); p += size - 1; break; } /* * Space: ignore if element is in braces or quotes; otherwise * terminate element. */ case ' ': case '\f': case '\n': case '\r': case '\t': case '\v': if ((openBraces == 0) && !inQuotes) { size = p - list; goto done; } break; /* * Double-quote: if element is in quotes then terminate it. */ case '"': if (inQuotes) { char *p2; size = p-list; p++; if ((isascii(*p) && isspace(*p)) || (*p == 0)) { goto done; } for (p2 = p; (*p2 != 0) && (!isspace(*p2)) && (p2 < p+20); p2++) { /* null body */ } Tcl_ResetResult(interp); sprintf(interp->result, "list element in quotes followed by \"%.*s\" %s", p2-p, p, "instead of space"); return TCL_ERROR; } break; /* * End of list: terminate element. */ case 0: if (openBraces != 0) { Tcl_SetResult(interp, "unmatched open brace in list", TCL_STATIC); return TCL_ERROR; } else if (inQuotes) { Tcl_SetResult(interp, "unmatched open quote in list", TCL_STATIC); return TCL_ERROR; } size = p - list; goto done; } p++; } done: while (isascii(*p) && isspace(*p)) { p++; } *elementPtr = list; *nextPtr = p; if (sizePtr != 0) { *sizePtr = size; } return TCL_OK; } /* *---------------------------------------------------------------------- * * TclCopyAndCollapse -- * * Copy a string and eliminate any backslashes that aren't in braces. * * Results: * There is no return value. Count chars. get copied from src * to dst. Along the way, if backslash sequences are found outside * braces, the backslashes are eliminated in the copy. * After scanning count chars. from source, a null character is * placed at the end of dst. * * Side effects: * None. * *---------------------------------------------------------------------- */ void TclCopyAndCollapse(count, src, dst) int count; /* Total number of characters to copy * from src. */ register char *src; /* Copy from here... */ register char *dst; /* ... to here. */ { register char c; int numRead; for (c = *src; count > 0; src++, c = *src, count--) { if (c == '\\') { *dst = Tcl_Backslash(src, &numRead); if (*dst != 0) { dst++; } src += numRead-1; count -= numRead-1; } else { *dst = c; dst++; } } *dst = 0; } /* *---------------------------------------------------------------------- * * Tcl_SplitList -- * * Splits a list up into its constituent fields. * * Results * The return value is normally TCL_OK, which means that * the list was successfully split up. If TCL_ERROR is * returned, it means that "list" didn't have proper list * structure; interp->result will contain a more detailed * error message. * * *argvPtr will be filled in with the address of an array * whose elements point to the elements of list, in order. * *argcPtr will get filled in with the number of valid elements * in the array. A single block of memory is dynamically allocated * to hold both the argv array and a copy of the list (with * backslashes and braces removed in the standard way). * The caller must eventually free this memory by calling free() * on *argvPtr. Note: *argvPtr and *argcPtr are only modified * if the procedure returns normally. * * Side effects: * Memory is allocated. * *---------------------------------------------------------------------- */ int Tcl_SplitList(interp, list, argcPtr, argvPtr) Tcl_Interp *interp; /* Interpreter to use for error reporting. */ char *list; /* Pointer to string with list structure. */ int *argcPtr; /* Pointer to location to fill in with * the number of elements in the list. */ char ***argvPtr; /* Pointer to place to store pointer to array * of pointers to list elements. */ { char **argv; register char *p; int size, i, result, elSize, brace; char *element; /* * Figure out how much space to allocate. There must be enough * space for both the array of pointers and also for a copy of * the list. To estimate the number of pointers needed, count * the number of space characters in the list. */ for (size = 1, p = list; *p != 0; p++) { if (isspace(*p)) { size++; } } size++; /* Leave space for final NULL pointer. */ argv = (char **) ckalloc((unsigned) ((size * sizeof(char *)) + (p - list) + 1)); for (i = 0, p = ((char *) argv) + size*sizeof(char *); *list != 0; i++) { result = TclFindElement(interp, list, &element, &list, &elSize, &brace); if (result != TCL_OK) { ckfree((char *) argv); return result; } if (*element == 0) { break; } if (i >= size) { ckfree((char *) argv); Tcl_SetResult(interp, "internal error in Tcl_SplitList", TCL_STATIC); return TCL_ERROR; } argv[i] = p; if (brace) { strncpy(p, element, elSize); p += elSize; *p = 0; p++; } else { TclCopyAndCollapse(elSize, element, p); p += elSize+1; } } argv[i] = NULL; *argvPtr = argv; *argcPtr = i; return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_ScanElement -- * * This procedure is a companion procedure to Tcl_ConvertElement. * It scans a string to see what needs to be done to it (e.g. * add backslashes or enclosing braces) to make the string into * a valid Tcl list element. * * Results: * The return value is an overestimate of the number of characters * that will be needed by Tcl_ConvertElement to produce a valid * list element from string. The word at *flagPtr is filled in * with a value needed by Tcl_ConvertElement when doing the actual * conversion. * * Side effects: * None. * *---------------------------------------------------------------------- */ int Tcl_ScanElement(string, flagPtr) char *string; /* String to convert to Tcl list element. */ int *flagPtr; /* Where to store information to guide * Tcl_ConvertElement. */ { int flags, nestingLevel; register char *p; /* * This procedure and Tcl_ConvertElement together do two things: * * 1. They produce a proper list, one that will yield back the * argument strings when evaluated or when disassembled with * Tcl_SplitList. This is the most important thing. * * 2. They try to produce legible output, which means minimizing the * use of backslashes (using braces instead). However, there are * some situations where backslashes must be used (e.g. an element * like "{abc": the leading brace will have to be backslashed. For * each element, one of three things must be done: * * (a) Use the element as-is (it doesn't contain anything special * characters). This is the most desirable option. * * (b) Enclose the element in braces, but leave the contents alone. * This happens if the element contains embedded space, or if it * contains characters with special interpretation ($, [, ;, or \), * or if it starts with a brace or double-quote, or if there are * no characters in the element. * * (c) Don't enclose the element in braces, but add backslashes to * prevent special interpretation of special characters. This is a * last resort used when the argument would normally fall under case * (b) but contains unmatched braces. It also occurs if the last * character of the argument is a backslash. * * The procedure figures out how many bytes will be needed to store * the result (actually, it overestimates). It also collects information * about the element in the form of a flags word. */ nestingLevel = 0; flags = 0; p = string; if ((*p == '{') || (*p == '"') || (*p == 0)) { flags |= USE_BRACES; } for ( ; *p != 0; p++) { switch (*p) { case '{': nestingLevel++; break; case '}': nestingLevel--; if (nestingLevel < 0) { flags |= TCL_DONT_USE_BRACES|BRACES_UNMATCHED; } break; case '[': case '$': case ';': case ' ': case '\f': case '\n': case '\r': case '\t': case '\v': flags |= USE_BRACES; break; case '\\': if (p[1] == 0) { flags = TCL_DONT_USE_BRACES; } else { int size; (void) Tcl_Backslash(p, &size); p += size-1; flags |= USE_BRACES; } break; } } if (nestingLevel != 0) { flags = TCL_DONT_USE_BRACES | BRACES_UNMATCHED; } *flagPtr = flags; /* * Allow enough space to backslash every character plus leave * two spaces for braces. */ return 2*(p-string) + 2; } /* *---------------------------------------------------------------------- * * Tcl_ConvertElement -- * * This is a companion procedure to Tcl_ScanElement. Given the * information produced by Tcl_ScanElement, this procedure converts * a string to a list element equal to that string. * * Results: * Information is copied to *dst in the form of a list element * identical to src (i.e. if Tcl_SplitList is applied to dst it * will produce a string identical to src). The return value is * a count of the number of characters copied (not including the * terminating NULL character). * * Side effects: * None. * *---------------------------------------------------------------------- */ int Tcl_ConvertElement(src, dst, flags) register char *src; /* Source information for list element. */ char *dst; /* Place to put list-ified element. */ int flags; /* Flags produced by Tcl_ScanElement. */ { register char *p = dst; /* * See the comment block at the beginning of the Tcl_ScanElement * code for details of how this works. */ if ((flags & USE_BRACES) && !(flags & TCL_DONT_USE_BRACES)) { *p = '{'; p++; for ( ; *src != 0; src++, p++) { *p = *src; } *p = '}'; p++; } else if (*src == 0) { /* * If string is empty but can't use braces, then use special * backslash sequence that maps to empty string. */ p[0] = '\\'; p[1] = '0'; p += 2; } else { for (; *src != 0 ; src++) { switch (*src) { case ']': case '[': case '$': case ';': case ' ': case '\\': case '"': *p = '\\'; p++; break; case '{': case '}': if (flags & BRACES_UNMATCHED) { *p = '\\'; p++; } break; case '\f': *p = '\\'; p++; *p = 'f'; p++; continue; case '\n': *p = '\\'; p++; *p = 'n'; p++; continue; case '\r': *p = '\\'; p++; *p = 'r'; p++; continue; case '\t': *p = '\\'; p++; *p = 't'; p++; continue; case '\v': *p = '\\'; p++; *p = 'v'; p++; continue; } *p = *src; p++; } } *p = '\0'; return p-dst; } /* *---------------------------------------------------------------------- * * Tcl_Merge -- * * Given a collection of strings, merge them together into a * single string that has proper Tcl list structured (i.e. * Tcl_SplitList may be used to retrieve strings equal to the * original elements, and Tcl_Eval will parse the string back * into its original elements). * * Results: * The return value is the address of a dynamically-allocated * string containing the merged list. * * Side effects: * None. * *---------------------------------------------------------------------- */ char * Tcl_Merge(argc, argv) int argc; /* How many strings to merge. */ char **argv; /* Array of string values. */ { # define LOCAL_SIZE 20 int localFlags[LOCAL_SIZE], *flagPtr; int numChars; char *result; register char *dst; int i; /* * Pass 1: estimate space, gather flags. */ if (argc <= LOCAL_SIZE) { flagPtr = localFlags; } else { flagPtr = (int *) ckalloc((unsigned) argc*sizeof(int)); } numChars = 1; for (i = 0; i < argc; i++) { numChars += Tcl_ScanElement(argv[i], &flagPtr[i]) + 1; } /* * Pass two: copy into the result area. */ result = (char *) ckalloc((unsigned) numChars); dst = result; for (i = 0; i < argc; i++) { numChars = Tcl_ConvertElement(argv[i], dst, flagPtr[i]); dst += numChars; *dst = ' '; dst++; } if (dst == result) { *dst = 0; } else { dst[-1] = 0; } if (flagPtr != localFlags) { ckfree((char *) flagPtr); } return result; } /* *---------------------------------------------------------------------- * * Tcl_Concat -- * * Concatenate a set of strings into a single large string. * * Results: * The return value is dynamically-allocated string containing * a concatenation of all the strings in argv, with spaces between * the original argv elements. * * Side effects: * Memory is allocated for the result; the caller is responsible * for freeing the memory. * *---------------------------------------------------------------------- */ char * Tcl_Concat(argc, argv) int argc; /* Number of strings to concatenate. */ char **argv; /* Array of strings to concatenate. */ { int totalSize, i; register char *p; char *result; for (totalSize = 1, i = 0; i < argc; i++) { totalSize += strlen(argv[i]) + 1; } result = (char *) ckalloc((unsigned) totalSize); if (argc == 0) { *result = '\0'; return result; } for (p = result, i = 0; i < argc; i++) { char *element; int length; /* * Clip white space off the front and back of the string * to generate a neater result, and ignore any empty * elements. */ element = argv[i]; while (isspace(*element)) { element++; } for (length = strlen(element); (length > 0) && (isspace(element[length-1])); length--) { /* Null loop body. */ } if (length == 0) { continue; } (void) strncpy(p, element, length); p += length; *p = ' '; p++; } if (p != result) { p[-1] = 0; } else { *p = 0; } return result; } /* *---------------------------------------------------------------------- * * Tcl_StringMatch -- * * See if a particular string matches a particular pattern. * * Results: * The return value is 1 if string matches pattern, and * 0 otherwise. The matching operation permits the following * special characters in the pattern: *?\[] (see the manual * entry for details on what these mean). * * Side effects: * None. * *---------------------------------------------------------------------- */ int Tcl_StringMatch(string, pattern) register char *string; /* String. */ register char *pattern; /* Pattern, which may contain * special characters. */ { char c2; while (1) { /* See if we're at the end of both the pattern and the string. * If so, we succeeded. If we're at the end of the pattern * but not at the end of the string, we failed. */ if (*pattern == 0) { if (*string == 0) { return 1; } else { return 0; } } if ((*string == 0) && (*pattern != '*')) { return 0; } /* Check for a "*" as the next pattern character. It matches * any substring. We handle this by calling ourselves * recursively for each postfix of string, until either we * match or we reach the end of the string. */ if (*pattern == '*') { pattern += 1; if (*pattern == 0) { return 1; } while (1) { if (Tcl_StringMatch(string, pattern)) { return 1; } if (*string == 0) { return 0; } string += 1; } } /* Check for a "?" as the next pattern character. It matches * any single character. */ if (*pattern == '?') { goto thisCharOK; } /* Check for a "[" as the next pattern character. It is followed * by a list of characters that are acceptable, or by a range * (two characters separated by "-"). */ if (*pattern == '[') { pattern += 1; while (1) { if ((*pattern == ']') || (*pattern == 0)) { return 0; } if (*pattern == *string) { break; } if (pattern[1] == '-') { c2 = pattern[2]; if (c2 == 0) { return 0; } if ((*pattern <= *string) && (c2 >= *string)) { break; } if ((*pattern >= *string) && (c2 <= *string)) { break; } pattern += 2; } pattern += 1; } while ((*pattern != ']') && (*pattern != 0)) { pattern += 1; } goto thisCharOK; } /* If the next pattern character is '/', just strip off the '/' * so we do exact matching on the character that follows. */ if (*pattern == '\\') { pattern += 1; if (*pattern == 0) { return 0; } } /* There's no special character. Just make sure that the next * characters of each string match. */ if (*pattern != *string) { return 0; } thisCharOK: pattern += 1; string += 1; } } /* *---------------------------------------------------------------------- * * Tcl_SetResult -- * * Arrange for "string" to be the Tcl return value. * * Results: * None. * * Side effects: * interp->result is left pointing either to "string" (if "copy" is 0) * or to a copy of string. * *---------------------------------------------------------------------- */ void Tcl_SetResult(interp, string, freeProc) Tcl_Interp *interp; /* Interpreter with which to associate the * return value. */ char *string; /* Value to be returned. If NULL, * the result is set to an empty string. */ Tcl_FreeProc *freeProc; /* Gives information about the string: * TCL_STATIC, TCL_VOLATILE, or the address * of a Tcl_FreeProc such as free. */ { register Interp *iPtr = (Interp *) interp; int length; Tcl_FreeProc *oldFreeProc = iPtr->freeProc; char *oldResult = iPtr->result; iPtr->freeProc = freeProc; if (string == NULL) { iPtr->resultSpace[0] = 0; iPtr->result = iPtr->resultSpace; iPtr->freeProc = 0; } else if (freeProc == TCL_VOLATILE) { length = strlen(string); if (length > TCL_RESULT_SIZE) { iPtr->result = (char *) ckalloc((unsigned) length+1); iPtr->freeProc = (Tcl_FreeProc *) free; } else { iPtr->result = iPtr->resultSpace; iPtr->freeProc = 0; } strcpy(iPtr->result, string); } else { iPtr->result = string; } /* * If the old result was dynamically-allocated, free it up. Do it * here, rather than at the beginning, in case the new result value * was part of the old result value. */ if (oldFreeProc != 0) { (*oldFreeProc)(oldResult); } } /* *---------------------------------------------------------------------- * * Tcl_AppendResult -- * * Append a variable number of strings onto the result already * present for an interpreter. * * Results: * None. * * Side effects: * The result in the interpreter given by the first argument * is extended by the strings given by the second and following * arguments (up to a terminating NULL argument). * *---------------------------------------------------------------------- */ void Tcl_AppendResult(Tcl_Interp *interp, ...) { va_list argList; register Interp *iPtr; char *string; int newSpace; /* * First, scan through all the arguments to see how much space is * needed. */ va_start(argList, interp); iPtr = (Interp *)interp; newSpace = 0; while (1) { string = va_arg(argList, char *); if (string == NULL) { break; } newSpace += strlen(string); } va_end(argList); /* * If the append buffer isn't already setup and large enough * to hold the new data, set it up. */ if ((iPtr->result != iPtr->appendResult) || ((newSpace + iPtr->appendUsed) >= iPtr->appendAvl)) { SetupAppendBuffer(iPtr, newSpace); } /* * Final step: go through all the argument strings again, copying * them into the buffer. */ va_start(argList, interp); while (1) { string = va_arg(argList, char *); if (string == NULL) { break; } strcpy(iPtr->appendResult + iPtr->appendUsed, string); iPtr->appendUsed += strlen(string); } va_end(argList); } /* *---------------------------------------------------------------------- * * Tcl_AppendElement -- * * Convert a string to a valid Tcl list element and append it * to the current result (which is ostensibly a list). * * Results: * None. * * Side effects: * The result in the interpreter given by the first argument * is extended with a list element converted from string. If * the original result wasn't empty, then a blank is added before * the converted list element. * *---------------------------------------------------------------------- */ void Tcl_AppendElement(interp, string, noSep) Tcl_Interp *interp; /* Interpreter whose result is to be * extended. */ char *string; /* String to convert to list element and * add to result. */ int noSep; /* If non-zero, then don't output a * space character before this element, * even if the element isn't the first * thing in the output buffer. */ { register Interp *iPtr = (Interp *) interp; int size, flags; char *dst; /* * See how much space is needed, and grow the append buffer if * needed to accommodate the list element. */ size = Tcl_ScanElement(string, &flags) + 1; if ((iPtr->result != iPtr->appendResult) || ((size + iPtr->appendUsed) >= iPtr->appendAvl)) { SetupAppendBuffer(iPtr, size+iPtr->appendUsed); } /* * Convert the string into a list element and copy it to the * buffer that's forming. */ dst = iPtr->appendResult + iPtr->appendUsed; if (!noSep && (iPtr->appendUsed != 0)) { iPtr->appendUsed++; *dst = ' '; dst++; } iPtr->appendUsed += Tcl_ConvertElement(string, dst, flags); } /* *---------------------------------------------------------------------- * * SetupAppendBuffer -- * * This procedure makes sure that there is an append buffer * properly initialized for interp, and that it has at least * enough room to accommodate newSpace new bytes of information. * * Results: * None. * * Side effects: * None. * *---------------------------------------------------------------------- */ static void SetupAppendBuffer(iPtr, newSpace) register Interp *iPtr; /* Interpreter whose result is being set up. */ int newSpace; /* Make sure that at least this many bytes * of new information may be added. */ { int totalSpace; /* * Make the append buffer larger, if that's necessary, then * copy the current result into the append buffer and make the * append buffer the official Tcl result. */ if (iPtr->result != iPtr->appendResult) { /* * If an oversized buffer was used recently, then free it up * so we go back to a smaller buffer. This avoids tying up * memory forever after a large operation. */ if (iPtr->appendAvl > 500) { ckfree(iPtr->appendResult); iPtr->appendResult = NULL; iPtr->appendAvl = 0; } iPtr->appendUsed = strlen(iPtr->result); } totalSpace = newSpace + iPtr->appendUsed; if (totalSpace >= iPtr->appendAvl) { char *new; if (totalSpace < 100) { totalSpace = 200; } else { totalSpace *= 2; } new = (char *) ckalloc((unsigned) totalSpace); strcpy(new, iPtr->result); if (iPtr->appendResult != NULL) { ckfree(iPtr->appendResult); } iPtr->appendResult = new; iPtr->appendAvl = totalSpace; } else if (iPtr->result != iPtr->appendResult) { strcpy(iPtr->appendResult, iPtr->result); } Tcl_FreeResult(iPtr); iPtr->result = iPtr->appendResult; } /* *---------------------------------------------------------------------- * * Tcl_ResetResult -- * * This procedure restores the result area for an interpreter * to its default initialized state, freeing up any memory that * may have been allocated for the result and clearing any * error information for the interpreter. * * Results: * None. * * Side effects: * None. * *---------------------------------------------------------------------- */ void Tcl_ResetResult(interp) Tcl_Interp *interp; /* Interpreter for which to clear result. */ { register Interp *iPtr = (Interp *) interp; Tcl_FreeResult(iPtr); iPtr->result = iPtr->resultSpace; iPtr->resultSpace[0] = 0; iPtr->flags &= ~(ERR_ALREADY_LOGGED | ERR_IN_PROGRESS | ERROR_CODE_SET); } /* *---------------------------------------------------------------------- * * Tcl_SetErrorCode -- * * This procedure is called to record machine-readable information * about an error that is about to be returned. * * Results: * None. * * Side effects: * The errorCode global variable is modified to hold all of the * arguments to this procedure, in a list form with each argument * becoming one element of the list. A flag is set internally * to remember that errorCode has been set, so the variable doesn't * get set automatically when the error is returned. * *---------------------------------------------------------------------- */ void Tcl_SetErrorCode(Tcl_Interp *interp, ...) { va_list argList; char *string; int flags; Interp *iPtr; /* * Scan through the arguments one at a time, appending them to * $errorCode as list elements. */ va_start(argList, interp); iPtr = (Interp *)interp; flags = TCL_GLOBAL_ONLY | TCL_LIST_ELEMENT; while (1) { string = va_arg(argList, char *); if (string == NULL) { break; } (void) Tcl_SetVar2((Tcl_Interp *) iPtr, "errorCode", (char *) NULL, string, flags); flags |= TCL_APPEND_VALUE; } va_end(argList); iPtr->flags |= ERROR_CODE_SET; } /* *---------------------------------------------------------------------- * * TclGetListIndex -- * * Parse a list index, which may be either an integer or the * value "end". * * Results: * The return value is either TCL_OK or TCL_ERROR. If it is * TCL_OK, then the index corresponding to string is left in * *indexPtr. If the return value is TCL_ERROR, then string * was bogus; an error message is returned in interp->result. * If a negative index is specified, it is rounded up to 0. * The index value may be larger than the size of the list * (this happens when "end" is specified). * * Side effects: * None. * *---------------------------------------------------------------------- */ int TclGetListIndex(interp, string, indexPtr) Tcl_Interp *interp; /* Interpreter for error reporting. */ char *string; /* String containing list index. */ int *indexPtr; /* Where to store index. */ { if (isdigit(*string) || (*string == '-')) { if (Tcl_GetInt(interp, string, indexPtr) != TCL_OK) { return TCL_ERROR; } if (*indexPtr < 0) { *indexPtr = 0; } } else if (strncmp(string, "end", strlen(string)) == 0) { *indexPtr = 1<<30; } else { Tcl_AppendResult(interp, "bad index \"", string, "\": must be integer or \"end\"", (char *) NULL); return TCL_ERROR; } return TCL_OK; } /* *---------------------------------------------------------------------- * * TclCompileRegexp -- * * Compile a regular expression into a form suitable for fast * matching. This procedure retains a small cache of pre-compiled * regular expressions in the interpreter, in order to avoid * compilation costs as much as possible. * * Results: * The return value is a pointer to the compiled form of string, * suitable for passing to regexec. If an error occurred while * compiling the pattern, then NULL is returned and an error * message is left in interp->result. * * Side effects: * The cache of compiled regexp's in interp will be modified to * hold information for string, if such information isn't already * present in the cache. * *---------------------------------------------------------------------- */ regexp * TclCompileRegexp(interp, string) Tcl_Interp *interp; /* For use in error reporting. */ char *string; /* String for which to produce * compiled regular expression. */ { register Interp *iPtr = (Interp *) interp; int i, length; regexp *result; length = strlen(string); for (i = 0; i < NUM_REGEXPS; i++) { if ((length == iPtr->patLengths[i]) && (strcmp(string, iPtr->patterns[i]) == 0)) { /* * Move the matched pattern to the first slot in the * cache and shift the other patterns down one position. */ if (i != 0) { int j; char *cachedString; cachedString = iPtr->patterns[i]; result = iPtr->regexps[i]; for (j = i-1; j >= 0; j--) { iPtr->patterns[j+1] = iPtr->patterns[j]; iPtr->patLengths[j+1] = iPtr->patLengths[j]; iPtr->regexps[j+1] = iPtr->regexps[j]; } iPtr->patterns[0] = cachedString; iPtr->patLengths[0] = length; iPtr->regexps[0] = result; } return iPtr->regexps[0]; } } /* * No match in the cache. Compile the string and add it to the * cache. */ tclRegexpError = NULL; result = regcomp(string); if (tclRegexpError != NULL) { Tcl_AppendResult(interp, "couldn't compile regular expression pattern: ", tclRegexpError, (char *) NULL); return NULL; } if (iPtr->patterns[NUM_REGEXPS-1] != NULL) { ckfree(iPtr->patterns[NUM_REGEXPS-1]); ckfree((char *) iPtr->regexps[NUM_REGEXPS-1]); } for (i = NUM_REGEXPS - 2; i >= 0; i--) { iPtr->patterns[i+1] = iPtr->patterns[i]; iPtr->patLengths[i+1] = iPtr->patLengths[i]; iPtr->regexps[i+1] = iPtr->regexps[i]; } iPtr->patterns[0] = (char *) ckalloc((unsigned) (length+1)); strcpy(iPtr->patterns[0], string); iPtr->patLengths[0] = length; iPtr->regexps[0] = result; return result; } /* *---------------------------------------------------------------------- * * regerror -- * * This procedure is invoked by the Henry Spencer's regexp code * when an error occurs. It saves the error message so it can * be seen by the code that called Spencer's code. * * Results: * None. * * Side effects: * The value of "string" is saved in "tclRegexpError". * *---------------------------------------------------------------------- */ void regerror(string) char *string; /* Error message. */ { tclRegexpError = string; } micropolis-activity/src/tcl/tclget.c0000664000076400007640000001207710724145723020041 0ustar simcitysimcity/* * tclGet.c -- * * This file contains procedures to convert strings into * other forms, like integers or floating-point numbers or * booleans, doing syntax checking along the way. * * Copyright 1990-1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/RCS/tclGet.c,v 1.11 92/02/29 16:13:14 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include "tclint.h" /* *---------------------------------------------------------------------- * * Tcl_GetInt -- * * Given a string, produce the corresponding integer value. * * Results: * The return value is normally TCL_OK; in this case *intPtr * will be set to the integer value equivalent to string. If * string is improperly formed then TCL_ERROR is returned and * an error message will be left in interp->result. * * Side effects: * None. * *---------------------------------------------------------------------- */ int Tcl_GetInt(interp, string, intPtr) Tcl_Interp *interp; /* Interpreter to use for error reporting. */ char *string; /* String containing a (possibly signed) * integer in a form acceptable to strtol. */ int *intPtr; /* Place to store converted result. */ { char *end; int i; i = strtol(string, &end, 0); while ((*end != '\0') && isspace(*end)) { end++; } if ((end == string) || (*end != 0)) { Tcl_AppendResult(interp, "expected integer but got \"", string, "\"", (char *) NULL); return TCL_ERROR; } *intPtr = i; return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_GetDouble -- * * Given a string, produce the corresponding double-precision * floating-point value. * * Results: * The return value is normally TCL_OK; in this case *doublePtr * will be set to the double-precision value equivalent to string. * If string is improperly formed then TCL_ERROR is returned and * an error message will be left in interp->result. * * Side effects: * None. * *---------------------------------------------------------------------- */ int Tcl_GetDouble(interp, string, doublePtr) Tcl_Interp *interp; /* Interpreter to use for error reporting. */ char *string; /* String containing a floating-point number * in a form acceptable to strtod. */ double *doublePtr; /* Place to store converted result. */ { char *end; double d; d = strtod(string, &end); while ((*end != '\0') && isspace(*end)) { end++; } if ((end == string) || (*end != 0)) { Tcl_AppendResult(interp, "expected floating-point number but got \"", string, "\"", (char *) NULL); return TCL_ERROR; } *doublePtr = d; return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_GetBoolean -- * * Given a string, return a 0/1 boolean value corresponding * to the string. * * Results: * The return value is normally TCL_OK; in this case *boolPtr * will be set to the 0/1 value equivalent to string. If * string is improperly formed then TCL_ERROR is returned and * an error message will be left in interp->result. * * Side effects: * None. * *---------------------------------------------------------------------- */ int Tcl_GetBoolean(interp, string, boolPtr) Tcl_Interp *interp; /* Interpreter to use for error reporting. */ char *string; /* String containing a boolean number * specified either as 1/0 or true/false or * yes/no. */ int *boolPtr; /* Place to store converted result, which * will be 0 or 1. */ { char c; char lowerCase[10]; int i, length; /* * Convert the input string to all lower-case. */ for (i = 0; i < 9; i++) { c = string[i]; if (c == 0) { break; } if ((c >= 'A') && (c <= 'Z')) { c += 'a' - 'A'; } lowerCase[i] = c; } lowerCase[i] = 0; length = strlen(lowerCase); c = lowerCase[0]; if ((c == '0') && (lowerCase[1] == '\0')) { *boolPtr = 0; } else if ((c == '1') && (lowerCase[1] == '\0')) { *boolPtr = 1; } else if ((c == 'y') && (strncmp(lowerCase, "yes", length) == 0)) { *boolPtr = 1; } else if ((c == 'n') && (strncmp(lowerCase, "no", length) == 0)) { *boolPtr = 0; } else if ((c == 't') && (strncmp(lowerCase, "true", length) == 0)) { *boolPtr = 1; } else if ((c == 'f') && (strncmp(lowerCase, "false", length) == 0)) { *boolPtr = 0; } else if ((c == 'o') && (length >= 2)) { if (strncmp(lowerCase, "on", length) == 0) { *boolPtr = 1; } else if (strncmp(lowerCase, "off", length) == 0) { *boolPtr = 0; } } else { Tcl_AppendResult(interp, "expected boolean value but got \"", string, "\"", (char *) NULL); return TCL_ERROR; } return TCL_OK; } micropolis-activity/src/tcl/tcltest.c0000664000076400007640000000640410724145723020236 0ustar simcitysimcity/* * tclTest.c -- * * Test driver for TCL. * * Copyright 1987-1991 Regents of the University of California * All rights reserved. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/tclTest/RCS/tclTest.c,v 1.21 92/01/19 14:15:27 ouster Exp $ SPRITE (Berkeley)"; #endif #include #include #include #include "tcl.h" extern int exit(); extern int Tcl_DumpActiveMemory(); Tcl_Interp *interp; Tcl_CmdBuf buffer; char dumpFile[100]; int quitFlag = 0; char *initCmd = "if [file exists [info library]/init.tcl] {source [info library]/init.tcl}"; /* ARGSUSED */ int cmdCheckmem(clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char *argv[]; { if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " fileName\"", (char *) NULL); return TCL_ERROR; } strcpy(dumpFile, argv[1]); quitFlag = 1; return TCL_OK; } /* ARGSUSED */ int cmdEcho(clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char *argv[]; { int i; for (i = 1; ; i++) { if (argv[i] == NULL) { if (i != argc) { echoError: sprintf(interp->result, "argument list wasn't properly NULL-terminated in \"%s\" command", argv[0]); } break; } if (i >= argc) { goto echoError; } fputs(argv[i], stdout); if (i < (argc-1)) { printf(" "); } } printf("\n"); return TCL_OK; } int main() { char line[1000], *cmd; int result, gotPartial; interp = Tcl_CreateInterp(); #ifdef TCL_MEM_DEBUG Tcl_InitMemory(interp); #endif Tcl_CreateCommand(interp, "echo", cmdEcho, (ClientData) "echo", (Tcl_CmdDeleteProc *) NULL); Tcl_CreateCommand(interp, "checkmem", cmdCheckmem, (ClientData) 0, (Tcl_CmdDeleteProc *) NULL); buffer = Tcl_CreateCmdBuf(); #ifndef TCL_GENERIC_ONLY result = Tcl_Eval(interp, initCmd, 0, (char **) NULL); if (result != TCL_OK) { printf("%s\n", interp->result); exit(1); } #endif gotPartial = 0; while (1) { clearerr(stdin); if (!gotPartial) { fputs("% ", stdout); fflush(stdout); } if (fgets(line, 1000, stdin) == NULL) { if (!gotPartial) { exit(0); } line[0] = 0; } cmd = Tcl_AssembleCmd(buffer, line); if (cmd == NULL) { gotPartial = 1; continue; } gotPartial = 0; result = Tcl_RecordAndEval(interp, cmd, 0); if (result == TCL_OK) { if (*interp->result != 0) { printf("%s\n", interp->result); } if (quitFlag) { Tcl_DeleteInterp(interp); Tcl_DeleteCmdBuf(buffer); #ifdef TCL_MEM_DEBUG Tcl_DumpActiveMemory(dumpFile); #endif exit(0); } } else { if (result == TCL_ERROR) { printf("Error"); } else { printf("Error %d", result); } if (*interp->result != 0) { printf(": %s\n", interp->result); } else { printf("\n"); } } } } micropolis-activity/src/tcl/tclunix.h0000664000076400007640000001771610724145723020257 0ustar simcitysimcity/* * tclUnix.h -- * * This file reads in UNIX-related header files and sets up * UNIX-related macros for Tcl's UNIX core. It should be the * only file that contains #ifdefs to handle different flavors * of UNIX. This file sets up the union of all UNIX-related * things needed by any of the Tcl core files. This file * depends on configuration #defines in tclConfig.h * * The material in this file was originally contributed by * Karl Lehenbauer, Mark Diekhans and Peter da Silva. * * Copyright 1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that this copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. * * $Header: /user6/ouster/tcl/RCS/tclUnix.h,v 1.26 92/08/03 08:27:43 ouster Exp $ SPRITE (Berkeley) */ #ifndef _TCLUNIX #define _TCLUNIX /* * The following #defines are used to distinguish between different * UNIX systems. These #defines are normally set by the "config" script * based on information it gets by looking in the include and library * areas. The defaults below are for BSD-based systems like SunOS * or Ultrix. * * TCL_GETTOD - 1 means there exists a library procedure * "gettimeofday" (e.g. BSD systems). 0 means * have to use "times" instead. * TCL_GETWD - 1 means there exists a library procedure * "getwd" (e.g. BSD systems). 0 means * have to use "getcwd" instead. * TCL_SYS_ERRLIST - 1 means that the array sys_errlist is * defined as part of the C library. * TCL_SYS_TIME_H - 1 means there exists an include file * (e.g. BSD derivatives). * TCL_SYS_WAIT_H - 1 means there exists an include file * that defines constants related * to the results of "wait". * TCL_UNION_WAIT - 1 means that the "wait" system call returns * a structure of type "union wait" (e.g. BSD * systems). 0 means "wait" returns an int * (e.g. System V and POSIX). * TCL_PID_T - 1 means that defines the type * pid_t. 0 means that it doesn't. * TCL_UID_T - 1 means that defines the type * uid_t. 0 means that it doesn't. */ #define TCL_GETTOD 1 #define TCL_GETWD 0 #define TCL_SYS_ERRLIST 1 #define TCL_SYS_TIME_H 1 #define TCL_SYS_WAIT_H 1 #define TCL_UNION_WAIT 0 #ifdef IS_LINUX #define TCL_PID_T 1 #define TCL_UID_T 1 #else #define TCL_PID_T 0 #define TCL_UID_T 0 #endif #include #include #include #include #include #include #include #include #include #include #if TCL_SYS_TIME_H # include #else # include #endif #if TCL_SYS_WAIT_H # include #endif /* * Not all systems declare the errno variable in errno.h. so this * file does it explicitly. The list of system error messages also * isn't generally declared in a header file anywhere. */ extern int errno; extern int sys_nerr; //#ifndef IS_LINUX //extern char *sys_errlist[]; //#endif /* * The type of the status returned by wait varies from UNIX system * to UNIX system. The macro below defines it: */ #if TCL_UNION_WAIT # define WAIT_STATUS_TYPE union wait #else # define WAIT_STATUS_TYPE int #endif /* * Supply definitions for macros to query wait status, if not already * defined in header files above. */ #ifndef WIFEXITED # define WIFEXITED(stat) (((*((int *) &(stat))) & 0xff) == 0) #endif #ifndef WEXITSTATUS # define WEXITSTATUS(stat) (((*((int *) &(stat))) >> 8) & 0xff) #endif #ifndef WIFSIGNALED # define WIFSIGNALED(stat) (((*((int *) &(stat)))) && ((*((int *) &(stat))) == ((*((int *) &(stat))) & 0x00ff))) #endif #ifndef WTERMSIG # define WTERMSIG(stat) ((*((int *) &(stat))) & 0x7f) #endif #ifndef WIFSTOPPED # define WIFSTOPPED(stat) (((*((int *) &(stat))) & 0xff) == 0177) #endif #ifndef WSTOPSIG # define WSTOPSIG(stat) (((*((int *) &(stat))) >> 8) & 0xff) #endif /* * Supply macros for seek offsets, if they're not already provided by * an include file. */ #ifndef SEEK_SET # define SEEK_SET 0 #endif #ifndef SEEK_CUR # define SEEK_CUR 1 #endif #ifndef SEEK_END # define SEEK_END 2 #endif /* * The stuff below is needed by the "time" command. If this * system has no gettimeofday call, then must use times and the * CLK_TCK #define (from sys/param.h) to compute elapsed time. * Unfortunately, some systems only have HZ and no CLK_TCK, and * some might not even have HZ. */ #if ! TCL_GETTOD # include # include # ifndef CLK_TCK # ifdef HZ # define CLK_TCK HZ # else # define CLK_TCK 60 # endif # endif #endif /* * Define access mode constants if they aren't already defined. */ #ifndef F_OK # define F_OK 00 #endif #ifndef X_OK # define X_OK 01 #endif #ifndef W_OK # define W_OK 02 #endif #ifndef R_OK # define R_OK 04 #endif /* * On systems without symbolic links (i.e. S_IFLNK isn't defined) * define "lstat" to use "stat" instead. */ #ifndef S_IFLNK # define lstat stat #endif /* * Define macros to query file type bits, if they're not already * defined. */ #ifndef S_ISREG # ifdef S_IFREG # define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) # else # define S_ISREG(m) 0 # endif # endif #ifndef S_ISDIR # ifdef S_IFDIR # define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) # else # define S_ISDIR(m) 0 # endif # endif #ifndef S_ISCHR # ifdef S_IFCHR # define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) # else # define S_ISCHR(m) 0 # endif # endif #ifndef S_ISBLK # ifdef S_IFBLK # define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) # else # define S_ISBLK(m) 0 # endif # endif #ifndef S_ISFIFO # ifdef S_IFIFO # define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) # else # define S_ISFIFO(m) 0 # endif # endif #ifndef S_ISLNK # ifdef S_IFLNK # define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) # else # define S_ISLNK(m) 0 # endif # endif #ifndef S_ISSOCK # ifdef S_IFSOCK # define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) # else # define S_ISSOCK(m) 0 # endif # endif /* * Make sure that MAXPATHLEN is defined. */ #ifndef MAXPATHLEN # ifdef PATH_MAX # define MAXPATHLEN PATH_MAX # else # define MAXPATHLEN 2048 # endif #endif /* * Define pid_t and uid_t if they're not already defined. */ #if ! TCL_PID_T # define pid_t int #endif #if ! TCL_UID_T # define uid_t int #endif /* * Variables provided by the C library: */ extern char **environ; /* * Library procedures used by Tcl but not declared in a header file: */ #if 0 #ifndef _CRAY extern int access _ANSI_ARGS_((CONST char *path, int mode)); extern int chdir _ANSI_ARGS_((CONST char *path)); extern int close _ANSI_ARGS_((int fd)); extern int dup2 _ANSI_ARGS_((int src, int dst)); extern int execvp _ANSI_ARGS_((CONST char *name, char **argv)); extern void _exit _ANSI_ARGS_((int status)); extern pid_t fork _ANSI_ARGS_((void)); extern uid_t geteuid _ANSI_ARGS_((void)); extern pid_t getpid _ANSI_ARGS_((void)); extern char * getcwd _ANSI_ARGS_((char *buffer, int size)); extern char * getwd _ANSI_ARGS_((char *buffer)); extern int kill _ANSI_ARGS_((pid_t pid, int sig)); extern long lseek _ANSI_ARGS_((int fd, int offset, int whence)); extern char * mktemp _ANSI_ARGS_((char *template)); extern int open _ANSI_ARGS_((CONST char *path, int flags, ...)); extern int pipe _ANSI_ARGS_((int *fdPtr)); extern int read _ANSI_ARGS_((int fd, char *buf, int numBytes)); extern int readlink _ANSI_ARGS_((CONST char *path, char *buf, int size)); extern int unlink _ANSI_ARGS_((CONST char *path)); extern int write _ANSI_ARGS_((int fd, char *buf, int numBytes)); #endif /* _CRAY */ #endif #endif /* _TCLUNIX */ micropolis-activity/src/tcl/regexp.c0000664000076400007640000006667010724145723020061 0ustar simcitysimcity/* * regcomp and regexec -- regsub and regerror are elsewhere * * Copyright (c) 1986 by University of Toronto. * Written by Henry Spencer. Not derived from licensed software. * * Permission is granted to anyone to use this software for any * purpose on any computer system, and to redistribute it freely, * subject to the following restrictions: * * 1. The author is not responsible for the consequences of use of * this software, no matter how awful, even if they arise * from defects in it. * * 2. The origin of this software must not be misrepresented, either * by explicit claim or by omission. * * 3. Altered versions must be plainly marked as such, and must not * be misrepresented as being the original software. * * Beware that some of this code is subtly aware of the way operator * precedence is structured in regular expressions. Serious changes in * regular-expression syntax might require a total rethink. * * *** NOTE: this code has been altered slightly for use in Tcl. *** * *** The only change is to use ckalloc and ckfree instead of *** * *** malloc and free. *** */ #include "tclint.h" /* * The "internal use only" fields in regexp.h are present to pass info from * compile to execute that permits the execute phase to run lots faster on * simple cases. They are: * * regstart char that must begin a match; '\0' if none obvious * reganch is the match anchored (at beginning-of-line only)? * regmust string (pointer into program) that match must include, or NULL * regmlen length of regmust string * * Regstart and reganch permit very fast decisions on suitable starting points * for a match, cutting down the work a lot. Regmust permits fast rejection * of lines that cannot possibly match. The regmust tests are costly enough * that regcomp() supplies a regmust only if the r.e. contains something * potentially expensive (at present, the only such thing detected is * or + * at the start of the r.e., which can involve a lot of backup). Regmlen is * supplied because the test in regexec() needs it and regcomp() is computing * it anyway. */ /* * Structure for regexp "program". This is essentially a linear encoding * of a nondeterministic finite-state machine (aka syntax charts or * "railroad normal form" in parsing technology). Each node is an opcode * plus a "next" pointer, possibly plus an operand. "Next" pointers of * all nodes except BRANCH implement concatenation; a "next" pointer with * a BRANCH on both ends of it is connecting two alternatives. (Here we * have one of the subtle syntax dependencies: an individual BRANCH (as * opposed to a collection of them) is never concatenated with anything * because of operator precedence.) The operand of some types of node is * a literal string; for others, it is a node leading into a sub-FSM. In * particular, the operand of a BRANCH node is the first node of the branch. * (NB this is *not* a tree structure: the tail of the branch connects * to the thing following the set of BRANCHes.) The opcodes are: */ /* definition number opnd? meaning */ #define END 0 /* no End of program. */ #define BOL 1 /* no Match "" at beginning of line. */ #define EOL 2 /* no Match "" at end of line. */ #define ANY 3 /* no Match any one character. */ #define ANYOF 4 /* str Match any character in this string. */ #define ANYBUT 5 /* str Match any character not in this string. */ #define BRANCH 6 /* node Match this alternative, or the next... */ #define BACK 7 /* no Match "", "next" ptr points backward. */ #define EXACTLY 8 /* str Match this string. */ #define NOTHING 9 /* no Match empty string. */ #define STAR 10 /* node Match this (simple) thing 0 or more times. */ #define PLUS 11 /* node Match this (simple) thing 1 or more times. */ #define OPEN 20 /* no Mark this point in input as start of #n. */ /* OPEN+1 is number 1, etc. */ #define CLOSE 30 /* no Analogous to OPEN. */ /* * Opcode notes: * * BRANCH The set of branches constituting a single choice are hooked * together with their "next" pointers, since precedence prevents * anything being concatenated to any individual branch. The * "next" pointer of the last BRANCH in a choice points to the * thing following the whole choice. This is also where the * final "next" pointer of each individual branch points; each * branch starts with the operand node of a BRANCH node. * * BACK Normal "next" pointers all implicitly point forward; BACK * exists to make loop structures possible. * * STAR,PLUS '?', and complex '*' and '+', are implemented as circular * BRANCH structures using BACK. Simple cases (one character * per match) are implemented with STAR and PLUS for speed * and to minimize recursive plunges. * * OPEN,CLOSE ...are numbered at compile time. */ /* * A node is one char of opcode followed by two chars of "next" pointer. * "Next" pointers are stored as two 8-bit pieces, high order first. The * value is a positive offset from the opcode of the node containing it. * An operand, if any, simply follows the node. (Note that much of the * code generation knows about this implicit relationship.) * * Using two bytes for the "next" pointer is vast overkill for most things, * but allows patterns to get big without disasters. */ #define OP(p) (*(p)) #define NEXT(p) (((*((p)+1)&0377)<<8) + (*((p)+2)&0377)) #define OPERAND(p) ((p) + 3) /* * See regmagic.h for one further detail of program structure. */ /* * Utility definitions. */ #ifndef CHARBITS #define UCHARAT(p) ((int)*(unsigned char *)(p)) #else #define UCHARAT(p) ((int)*(p)&CHARBITS) #endif #define FAIL(m) { regerror(m); return(NULL); } #define ISMULT(c) ((c) == '*' || (c) == '+' || (c) == '?') #define META "^$.[()|?+*\\" /* * Flags to be passed up and down. */ #define HASWIDTH 01 /* Known never to match null string. */ #define SIMPLE 02 /* Simple enough to be STAR/PLUS operand. */ #define SPSTART 04 /* Starts with * or +. */ #define WORST 0 /* Worst case. */ /* * Global work variables for regcomp(). */ static char *regparse; /* Input-scan pointer. */ static int regnpar; /* () count. */ static char regdummy; static char *regcode; /* Code-emit pointer; ®dummy = don't. */ static long regsize; /* Code size. */ /* * The first byte of the regexp internal "program" is actually this magic * number; the start node begins in the second byte. */ #define MAGIC 0234 /* * Forward declarations for regcomp()'s friends. */ #ifndef STATIC #define STATIC static #endif STATIC char *reg(); STATIC char *regbranch(); STATIC char *regpiece(); STATIC char *regatom(); STATIC char *regnode(); STATIC char *regnext(); STATIC void regc(); STATIC void reginsert(); STATIC void regtail(); STATIC void regoptail(); #ifdef STRCSPN STATIC int strcspn(); #endif /* - regcomp - compile a regular expression into internal code * * We can't allocate space until we know how big the compiled form will be, * but we can't compile it (and thus know how big it is) until we've got a * place to put the code. So we cheat: we compile it twice, once with code * generation turned off and size counting turned on, and once "for real". * This also means that we don't allocate space until we are sure that the * thing really will compile successfully, and we never have to move the * code and thus invalidate pointers into it. (Note that it has to be in * one piece because free() must be able to free it all.) * * Beware that the optimization-preparation code in here knows about some * of the structure of the compiled regexp. */ regexp * regcomp(exp) char *exp; { register regexp *r; register char *scan; register char *longest; register int len; int flags; if (exp == NULL) FAIL("NULL argument"); /* First pass: determine size, legality. */ regparse = exp; regnpar = 1; regsize = 0L; regcode = ®dummy; regc(MAGIC); if (reg(0, &flags) == NULL) return(NULL); /* Small enough for pointer-storage convention? */ if (regsize >= 32767L) /* Probably could be 65535L. */ FAIL("regexp too big"); /* Allocate space. */ r = (regexp *)ckalloc(sizeof(regexp) + (unsigned)regsize); if (r == NULL) FAIL("out of space"); /* Second pass: emit code. */ regparse = exp; regnpar = 1; regcode = r->program; regc(MAGIC); if (reg(0, &flags) == NULL) return(NULL); /* Dig out information for optimizations. */ r->regstart = '\0'; /* Worst-case defaults. */ r->reganch = 0; r->regmust = NULL; r->regmlen = 0; scan = r->program+1; /* First BRANCH. */ if (OP(regnext(scan)) == END) { /* Only one top-level choice. */ scan = OPERAND(scan); /* Starting-point info. */ if (OP(scan) == EXACTLY) r->regstart = *OPERAND(scan); else if (OP(scan) == BOL) r->reganch++; /* * If there's something expensive in the r.e., find the * longest literal string that must appear and make it the * regmust. Resolve ties in favor of later strings, since * the regstart check works with the beginning of the r.e. * and avoiding duplication strengthens checking. Not a * strong reason, but sufficient in the absence of others. */ if (flags&SPSTART) { longest = NULL; len = 0; for (; scan != NULL; scan = regnext(scan)) if (OP(scan) == EXACTLY && strlen(OPERAND(scan)) >= len) { longest = OPERAND(scan); len = strlen(OPERAND(scan)); } r->regmust = longest; r->regmlen = len; } } return(r); } /* - reg - regular expression, i.e. main body or parenthesized thing * * Caller must absorb opening parenthesis. * * Combining parenthesis handling with the base level of regular expression * is a trifle forced, but the need to tie the tails of the branches to what * follows makes it hard to avoid. */ static char * reg(paren, flagp) int paren; /* Parenthesized? */ int *flagp; { register char *ret; register char *br; register char *ender; register int parno = 0; int flags; *flagp = HASWIDTH; /* Tentatively. */ /* Make an OPEN node, if parenthesized. */ if (paren) { if (regnpar >= NSUBEXP) FAIL("too many ()"); parno = regnpar; regnpar++; ret = regnode(OPEN+parno); } else ret = NULL; /* Pick up the branches, linking them together. */ br = regbranch(&flags); if (br == NULL) return(NULL); if (ret != NULL) regtail(ret, br); /* OPEN -> first. */ else ret = br; if (!(flags&HASWIDTH)) *flagp &= ~HASWIDTH; *flagp |= flags&SPSTART; while (*regparse == '|') { regparse++; br = regbranch(&flags); if (br == NULL) return(NULL); regtail(ret, br); /* BRANCH -> BRANCH. */ if (!(flags&HASWIDTH)) *flagp &= ~HASWIDTH; *flagp |= flags&SPSTART; } /* Make a closing node, and hook it on the end. */ ender = regnode((paren) ? CLOSE+parno : END); regtail(ret, ender); /* Hook the tails of the branches to the closing node. */ for (br = ret; br != NULL; br = regnext(br)) regoptail(br, ender); /* Check for proper termination. */ if (paren && *regparse++ != ')') { FAIL("unmatched ()"); } else if (!paren && *regparse != '\0') { if (*regparse == ')') { FAIL("unmatched ()"); } else FAIL("junk on end"); /* "Can't happen". */ /* NOTREACHED */ } return(ret); } /* - regbranch - one alternative of an | operator * * Implements the concatenation operator. */ static char * regbranch(flagp) int *flagp; { register char *ret; register char *chain; register char *latest; int flags; *flagp = WORST; /* Tentatively. */ ret = regnode(BRANCH); chain = NULL; while (*regparse != '\0' && *regparse != '|' && *regparse != ')') { latest = regpiece(&flags); if (latest == NULL) return(NULL); *flagp |= flags&HASWIDTH; if (chain == NULL) /* First piece. */ *flagp |= flags&SPSTART; else regtail(chain, latest); chain = latest; } if (chain == NULL) /* Loop ran zero times. */ (void) regnode(NOTHING); return(ret); } /* - regpiece - something followed by possible [*+?] * * Note that the branching code sequences used for ? and the general cases * of * and + are somewhat optimized: they use the same NOTHING node as * both the endmarker for their branch list and the body of the last branch. * It might seem that this node could be dispensed with entirely, but the * endmarker role is not redundant. */ static char * regpiece(flagp) int *flagp; { register char *ret; register char op; register char *next; int flags; ret = regatom(&flags); if (ret == NULL) return(NULL); op = *regparse; if (!ISMULT(op)) { *flagp = flags; return(ret); } if (!(flags&HASWIDTH) && op != '?') FAIL("*+ operand could be empty"); *flagp = (op != '+') ? (WORST|SPSTART) : (WORST|HASWIDTH); if (op == '*' && (flags&SIMPLE)) reginsert(STAR, ret); else if (op == '*') { /* Emit x* as (x&|), where & means "self". */ reginsert(BRANCH, ret); /* Either x */ regoptail(ret, regnode(BACK)); /* and loop */ regoptail(ret, ret); /* back */ regtail(ret, regnode(BRANCH)); /* or */ regtail(ret, regnode(NOTHING)); /* null. */ } else if (op == '+' && (flags&SIMPLE)) reginsert(PLUS, ret); else if (op == '+') { /* Emit x+ as x(&|), where & means "self". */ next = regnode(BRANCH); /* Either */ regtail(ret, next); regtail(regnode(BACK), ret); /* loop back */ regtail(next, regnode(BRANCH)); /* or */ regtail(ret, regnode(NOTHING)); /* null. */ } else if (op == '?') { /* Emit x? as (x|) */ reginsert(BRANCH, ret); /* Either x */ regtail(ret, regnode(BRANCH)); /* or */ next = regnode(NOTHING); /* null. */ regtail(ret, next); regoptail(ret, next); } regparse++; if (ISMULT(*regparse)) FAIL("nested *?+"); return(ret); } /* - regatom - the lowest level * * Optimization: gobbles an entire sequence of ordinary characters so that * it can turn them into a single node, which is smaller to store and * faster to run. Backslashed characters are exceptions, each becoming a * separate node; the code is simpler that way and it's not worth fixing. */ static char * regatom(flagp) int *flagp; { register char *ret; int flags; *flagp = WORST; /* Tentatively. */ switch (*regparse++) { case '^': ret = regnode(BOL); break; case '$': ret = regnode(EOL); break; case '.': ret = regnode(ANY); *flagp |= HASWIDTH|SIMPLE; break; case '[': { register int clss; register int classend; if (*regparse == '^') { /* Complement of range. */ ret = regnode(ANYBUT); regparse++; } else ret = regnode(ANYOF); if (*regparse == ']' || *regparse == '-') regc(*regparse++); while (*regparse != '\0' && *regparse != ']') { if (*regparse == '-') { regparse++; if (*regparse == ']' || *regparse == '\0') regc('-'); else { clss = UCHARAT(regparse-2)+1; classend = UCHARAT(regparse); if (clss > classend+1) FAIL("invalid [] range"); for (; clss <= classend; clss++) regc(clss); regparse++; } } else regc(*regparse++); } regc('\0'); if (*regparse != ']') FAIL("unmatched []"); regparse++; *flagp |= HASWIDTH|SIMPLE; } break; case '(': ret = reg(1, &flags); if (ret == NULL) return(NULL); *flagp |= flags&(HASWIDTH|SPSTART); break; case '\0': case '|': case ')': FAIL("internal urp"); /* Supposed to be caught earlier. */ /* NOTREACHED */ break; case '?': case '+': case '*': FAIL("?+* follows nothing"); /* NOTREACHED */ break; case '\\': if (*regparse == '\0') FAIL("trailing \\"); ret = regnode(EXACTLY); regc(*regparse++); regc('\0'); *flagp |= HASWIDTH|SIMPLE; break; default: { register int len; register char ender; regparse--; len = strcspn(regparse, META); if (len <= 0) FAIL("internal disaster"); ender = *(regparse+len); if (len > 1 && ISMULT(ender)) len--; /* Back off clear of ?+* operand. */ *flagp |= HASWIDTH; if (len == 1) *flagp |= SIMPLE; ret = regnode(EXACTLY); while (len > 0) { regc(*regparse++); len--; } regc('\0'); } break; } return(ret); } /* - regnode - emit a node */ static char * /* Location. */ regnode(op) char op; { register char *ret; register char *ptr; ret = regcode; if (ret == ®dummy) { regsize += 3; return(ret); } ptr = ret; *ptr++ = op; *ptr++ = '\0'; /* Null "next" pointer. */ *ptr++ = '\0'; regcode = ptr; return(ret); } /* - regc - emit (if appropriate) a byte of code */ static void regc(b) char b; { if (regcode != ®dummy) *regcode++ = b; else regsize++; } /* - reginsert - insert an operator in front of already-emitted operand * * Means relocating the operand. */ static void reginsert(op, opnd) char op; char *opnd; { register char *src; register char *dst; register char *place; if (regcode == ®dummy) { regsize += 3; return; } src = regcode; regcode += 3; dst = regcode; while (src > opnd) *--dst = *--src; place = opnd; /* Op node, where operand used to be. */ *place++ = op; *place++ = '\0'; *place++ = '\0'; } /* - regtail - set the next-pointer at the end of a node chain */ static void regtail(p, val) char *p; char *val; { register char *scan; register char *temp; register int offset; if (p == ®dummy) return; /* Find last node. */ scan = p; for (;;) { temp = regnext(scan); if (temp == NULL) break; scan = temp; } if (OP(scan) == BACK) offset = scan - val; else offset = val - scan; *(scan+1) = (offset>>8)&0377; *(scan+2) = offset&0377; } /* - regoptail - regtail on operand of first argument; nop if operandless */ static void regoptail(p, val) char *p; char *val; { /* "Operandless" and "op != BRANCH" are synonymous in practice. */ if (p == NULL || p == ®dummy || OP(p) != BRANCH) return; regtail(OPERAND(p), val); } /* * regexec and friends */ /* * Global work variables for regexec(). */ static char *reginput; /* String-input pointer. */ static char *regbol; /* Beginning of input, for ^ check. */ static char **regstartp; /* Pointer to startp array. */ static char **regendp; /* Ditto for endp. */ /* * Forwards. */ STATIC int regtry(); STATIC int regmatch(); STATIC int regrepeat(); #ifdef DEBUG int regnarrate = 0; void regdump(); STATIC char *regprop(); #endif /* - regexec - match a regexp against a string */ int regexec(prog, string) register regexp *prog; register char *string; { register char *s; #ifndef IS_LINUX extern char *strchr(); #endif /* Be paranoid... */ if (prog == NULL || string == NULL) { regerror("NULL parameter"); return(0); } /* Check validity of program. */ if (UCHARAT(prog->program) != MAGIC) { regerror("corrupted program"); return(0); } /* If there is a "must appear" string, look for it. */ if (prog->regmust != NULL) { s = string; while ((s = strchr(s, prog->regmust[0])) != NULL) { if (strncmp(s, prog->regmust, prog->regmlen) == 0) break; /* Found it. */ s++; } if (s == NULL) /* Not present. */ return(0); } /* Mark beginning of line for ^ . */ regbol = string; /* Simplest case: anchored match need be tried only once. */ if (prog->reganch) return(regtry(prog, string)); /* Messy cases: unanchored match. */ s = string; if (prog->regstart != '\0') /* We know what char it must start with. */ while ((s = strchr(s, prog->regstart)) != NULL) { if (regtry(prog, s)) return(1); s++; } else /* We don't -- general case. */ do { if (regtry(prog, s)) return(1); } while (*s++ != '\0'); /* Failure. */ return(0); } /* - regtry - try match at specific point */ static int /* 0 failure, 1 success */ regtry(prog, string) regexp *prog; char *string; { register int i; register char **sp; register char **ep; reginput = string; regstartp = prog->startp; regendp = prog->endp; sp = prog->startp; ep = prog->endp; for (i = NSUBEXP; i > 0; i--) { *sp++ = NULL; *ep++ = NULL; } if (regmatch(prog->program + 1)) { prog->startp[0] = string; prog->endp[0] = reginput; return(1); } else return(0); } /* - regmatch - main matching routine * * Conceptually the strategy is simple: check to see whether the current * node matches, call self recursively to see whether the rest matches, * and then act accordingly. In practice we make some effort to avoid * recursion, in particular by going through "ordinary" nodes (that don't * need to know whether the rest of the match failed) by a loop instead of * by recursion. */ static int /* 0 failure, 1 success */ regmatch(prog) char *prog; { register char *scan; /* Current node. */ char *next; /* Next node. */ #ifndef IS_LINUX extern char *strchr(); #endif scan = prog; #ifdef DEBUG if (scan != NULL && regnarrate) fprintf(stderr, "%s(\n", regprop(scan)); #endif while (scan != NULL) { #ifdef DEBUG if (regnarrate) fprintf(stderr, "%s...\n", regprop(scan)); #endif next = regnext(scan); switch (OP(scan)) { case BOL: if (reginput != regbol) return(0); break; case EOL: if (*reginput != '\0') return(0); break; case ANY: if (*reginput == '\0') return(0); reginput++; break; case EXACTLY: { register int len; register char *opnd; opnd = OPERAND(scan); /* Inline the first character, for speed. */ if (*opnd != *reginput) return(0); len = strlen(opnd); if (len > 1 && strncmp(opnd, reginput, len) != 0) return(0); reginput += len; } break; case ANYOF: if (*reginput == '\0' || strchr(OPERAND(scan), *reginput) == NULL) return(0); reginput++; break; case ANYBUT: if (*reginput == '\0' || strchr(OPERAND(scan), *reginput) != NULL) return(0); reginput++; break; case NOTHING: break; case BACK: break; case OPEN+1: case OPEN+2: case OPEN+3: case OPEN+4: case OPEN+5: case OPEN+6: case OPEN+7: case OPEN+8: case OPEN+9: { register int no; register char *save; no = OP(scan) - OPEN; save = reginput; if (regmatch(next)) { /* * Don't set startp if some later * invocation of the same parentheses * already has. */ if (regstartp[no] == NULL) regstartp[no] = save; return(1); } else return(0); } /* NOTREACHED */ break; case CLOSE+1: case CLOSE+2: case CLOSE+3: case CLOSE+4: case CLOSE+5: case CLOSE+6: case CLOSE+7: case CLOSE+8: case CLOSE+9: { register int no; register char *save; no = OP(scan) - CLOSE; save = reginput; if (regmatch(next)) { /* * Don't set endp if some later * invocation of the same parentheses * already has. */ if (regendp[no] == NULL) regendp[no] = save; return(1); } else return(0); } /* NOTREACHED */ break; case BRANCH: { register char *save; if (OP(next) != BRANCH) /* No choice. */ next = OPERAND(scan); /* Avoid recursion. */ else { do { save = reginput; if (regmatch(OPERAND(scan))) return(1); reginput = save; scan = regnext(scan); } while (scan != NULL && OP(scan) == BRANCH); return(0); /* NOTREACHED */ } } /* NOTREACHED */ break; case STAR: case PLUS: { register char nextch; register int no; register char *save; register int min; /* * Lookahead to avoid useless match attempts * when we know what character comes next. */ nextch = '\0'; if (OP(next) == EXACTLY) nextch = *OPERAND(next); min = (OP(scan) == STAR) ? 0 : 1; save = reginput; no = regrepeat(OPERAND(scan)); while (no >= min) { /* If it could work, try it. */ if (nextch == '\0' || *reginput == nextch) if (regmatch(next)) return(1); /* Couldn't or didn't -- back up. */ no--; reginput = save + no; } return(0); } /* NOTREACHED */ break; case END: return(1); /* Success! */ /* NOTREACHED */ break; default: regerror("memory corruption"); return(0); /* NOTREACHED */ break; } scan = next; } /* * We get here only if there's trouble -- normally "case END" is * the terminating point. */ regerror("corrupted pointers"); return(0); } /* - regrepeat - repeatedly match something simple, report how many */ static int regrepeat(p) char *p; { register int count = 0; register char *scan; register char *opnd; scan = reginput; opnd = OPERAND(p); switch (OP(p)) { case ANY: count = strlen(scan); scan += count; break; case EXACTLY: while (*opnd == *scan) { count++; scan++; } break; case ANYOF: while (*scan != '\0' && strchr(opnd, *scan) != NULL) { count++; scan++; } break; case ANYBUT: while (*scan != '\0' && strchr(opnd, *scan) == NULL) { count++; scan++; } break; default: /* Oh dear. Called inappropriately. */ regerror("internal foulup"); count = 0; /* Best compromise. */ break; } reginput = scan; return(count); } /* - regnext - dig the "next" pointer out of a node */ static char * regnext(p) register char *p; { register int offset; if (p == ®dummy) return(NULL); offset = NEXT(p); if (offset == 0) return(NULL); if (OP(p) == BACK) return(p-offset); else return(p+offset); } #ifdef DEBUG STATIC char *regprop(); /* - regdump - dump a regexp onto stdout in vaguely comprehensible form */ void regdump(r) regexp *r; { register char *s; register char op = EXACTLY; /* Arbitrary non-END op. */ register char *next; extern char *strchr(); s = r->program + 1; while (op != END) { /* While that wasn't END last time... */ op = OP(s); printf("%2d%s", s-r->program, regprop(s)); /* Where, what. */ next = regnext(s); if (next == NULL) /* Next ptr. */ printf("(0)"); else printf("(%d)", (s-r->program)+(next-s)); s += 3; if (op == ANYOF || op == ANYBUT || op == EXACTLY) { /* Literal string, where present. */ while (*s != '\0') { putchar(*s); s++; } s++; } putchar('\n'); } /* Header fields of interest. */ if (r->regstart != '\0') printf("start `%c' ", r->regstart); if (r->reganch) printf("anchored "); if (r->regmust != NULL) printf("must have \"%s\"", r->regmust); printf("\n"); } /* - regprop - printable representation of opcode */ static char * regprop(op) char *op; { register char *p; static char buf[50]; (void) strcpy(buf, ":"); switch (OP(op)) { case BOL: p = "BOL"; break; case EOL: p = "EOL"; break; case ANY: p = "ANY"; break; case ANYOF: p = "ANYOF"; break; case ANYBUT: p = "ANYBUT"; break; case BRANCH: p = "BRANCH"; break; case EXACTLY: p = "EXACTLY"; break; case NOTHING: p = "NOTHING"; break; case BACK: p = "BACK"; break; case END: p = "END"; break; case OPEN+1: case OPEN+2: case OPEN+3: case OPEN+4: case OPEN+5: case OPEN+6: case OPEN+7: case OPEN+8: case OPEN+9: sprintf(buf+strlen(buf), "OPEN%d", OP(op)-OPEN); p = NULL; break; case CLOSE+1: case CLOSE+2: case CLOSE+3: case CLOSE+4: case CLOSE+5: case CLOSE+6: case CLOSE+7: case CLOSE+8: case CLOSE+9: sprintf(buf+strlen(buf), "CLOSE%d", OP(op)-CLOSE); p = NULL; break; case STAR: p = "STAR"; break; case PLUS: p = "PLUS"; break; default: regerror("corrupted opcode"); break; } if (p != NULL) (void) strcat(buf, p); return(buf); } #endif /* * The following is provided for those people who do not have strcspn() in * their C libraries. They should get off their butts and do something * about it; at least one public-domain implementation of those (highly * useful) string routines has been published on Usenet. */ #ifdef STRCSPN /* * strcspn - find length of initial segment of s1 consisting entirely * of characters not from s2 */ static int strcspn(s1, s2) char *s1; char *s2; { register char *scan1; register char *scan2; register int count; count = 0; for (scan1 = s1; *scan1 != '\0'; scan1++) { for (scan2 = s2; *scan2 != '\0';) /* ++ moved down. */ if (*scan1 == *scan2++) return(count); count++; } return(count); } #endif micropolis-activity/src/tcl/tclenv.c0000664000076400007640000002670610724145723020056 0ustar simcitysimcity/* * tclEnv.c -- * * Tcl support for environment variables, including a setenv * procedure. * * Copyright 1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that this copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/RCS/tclEnv.c,v 1.7 91/09/23 11:22:21 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include "tclint.h" #include "tclunix.h" /* * The structure below is used to keep track of all of the interpereters * for which we're managing the "env" array. It's needed so that they * can all be updated whenever an environment variable is changed * anywhere. */ typedef struct EnvInterp { Tcl_Interp *interp; /* Interpreter for which we're managing * the env array. */ struct EnvInterp *nextPtr; /* Next in list of all such interpreters, * or zero. */ } EnvInterp; static EnvInterp *firstInterpPtr; /* First in list of all managed interpreters, * or NULL if none. */ static int environSize = 0; /* Non-zero means that the all of the * environ-related information is malloc-ed * and the environ array itself has this * many total entries allocated to it (not * all may be in use at once). Zero means * that the environment array is in its * original static state. */ /* * Declarations for local procedures defined in this file: */ static void EnvInit _ANSI_ARGS_((void)); static char * EnvTraceProc _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, char *name1, char *name2, int flags)); static int FindVariable _ANSI_ARGS_((char *name, int *lengthPtr)); #ifdef IS_LINUX int setenv _ANSI_ARGS_((const char *name, const char *value, int replace)); int unsetenv _ANSI_ARGS_((const char *name)); #else void setenv _ANSI_ARGS_((char *name, char *value)); void unsetenv _ANSI_ARGS_((char *name)); #endif /* *---------------------------------------------------------------------- * * TclSetupEnv -- * * This procedure is invoked for an interpreter to make environment * variables accessible from that interpreter via the "env" * associative array. * * Results: * None. * * Side effects: * The interpreter is added to a list of interpreters managed * by us, so that its view of envariables can be kept consistent * with the view in other interpreters. If this is the first * call to Tcl_SetupEnv, then additional initialization happens, * such as copying the environment to dynamically-allocated space * for ease of management. * *---------------------------------------------------------------------- */ void TclSetupEnv(interp) Tcl_Interp *interp; /* Interpreter whose "env" array is to be * managed. */ { EnvInterp *eiPtr; int i; /* * First, initialize our environment-related information, if * necessary. */ if (environSize == 0) { EnvInit(); } /* * Next, add the interpreter to the list of those that we manage. */ eiPtr = (EnvInterp *) ckalloc(sizeof(EnvInterp)); eiPtr->interp = interp; eiPtr->nextPtr = firstInterpPtr; firstInterpPtr = eiPtr; /* * Store the environment variable values into the interpreter's * "env" array, and arrange for us to be notified on future * writes and unsets to that array. */ (void) Tcl_UnsetVar2(interp, "env", (char *) NULL, TCL_GLOBAL_ONLY); for (i = 0; ; i++) { char *p, *p2; p = environ[i]; if (p == NULL) { break; } for (p2 = p; *p2 != '='; p2++) { /* Empty loop body. */ } *p2 = 0; (void) Tcl_SetVar2(interp, "env", p, p2+1, TCL_GLOBAL_ONLY); *p2 = '='; } Tcl_TraceVar2(interp, "env", (char *) NULL, TCL_GLOBAL_ONLY | TCL_TRACE_WRITES | TCL_TRACE_UNSETS, EnvTraceProc, (ClientData) NULL); } /* *---------------------------------------------------------------------- * * FindVariable -- * * Locate the entry in environ for a given name. * * Results: * The return value is the index in environ of an entry with the * name "name", or -1 if there is no such entry. The integer at * *lengthPtr is filled in with the length of name (if a matching * entry is found) or the length of the environ array (if no matching * entry is found). * * Side effects: * None. * *---------------------------------------------------------------------- */ static int FindVariable(name, lengthPtr) char *name; /* Name of desired environment variable. */ int *lengthPtr; /* Used to return length of name (for * successful searches) or number of non-NULL * entries in environ (for unsuccessful * searches). */ { int i; register char *p1, *p2; for (i = 0, p1 = environ[i]; p1 != NULL; i++, p1 = environ[i]) { for (p2 = name; *p2 == *p1; p1++, p2++) { /* NULL loop body. */ } if ((*p1 == '=') && (*p2 == '\0')) { *lengthPtr = p2-name; return i; } } *lengthPtr = i; return -1; } /* *---------------------------------------------------------------------- * * setenv -- * * Set an environment variable, replacing an existing value * or creating a new variable if there doesn't exist a variable * by the given name. * * Results: * None. * * Side effects: * The environ array gets updated, as do all of the interpreters * that we manage. * *---------------------------------------------------------------------- */ #ifdef IS_LINUX int setenv(name, value, replace) const char *name; /* Name of variable whose value is to be * set. */ const char *value; /* New value for variable. */ int replace; #else void setenv(name, value) char *name; /* Name of variable whose value is to be * set. */ char *value; /* New value for variable. */ #endif { int index, length, nameLength; char *p; EnvInterp *eiPtr; if (environSize == 0) { EnvInit(); } /* * Figure out where the entry is going to go. If the name doesn't * already exist, enlarge the array if necessary to make room. If * the name exists, free its old entry. */ index = FindVariable((char *)name, &length); if (index == -1) { if ((length+2) > environSize) { char **newEnviron; newEnviron = (char **) ckalloc((unsigned) ((length+5) * sizeof(char *))); memcpy((VOID *) newEnviron, (VOID *) environ, length*sizeof(char *)); ckfree((char *) environ); environ = newEnviron; environSize = length+5; } index = length; environ[index+1] = NULL; nameLength = strlen(name); } else { ckfree(environ[index]); nameLength = length; } /* * Create a new entry and enter it into the table. */ p = (char *) ckalloc((unsigned) (nameLength + strlen(value) + 2)); environ[index] = p; strcpy(p, name); p += nameLength; *p = '='; strcpy(p+1, value); /* * Update all of the interpreters. */ for (eiPtr= firstInterpPtr; eiPtr != NULL; eiPtr = eiPtr->nextPtr) { (void) Tcl_SetVar2(eiPtr->interp, "env", (char *)name, p+1, TCL_GLOBAL_ONLY); } #ifdef IS_LINUX return 0; #endif } /* *---------------------------------------------------------------------- * * unsetenv -- * * Remove an environment variable, updating the "env" arrays * in all interpreters managed by us. * * Results: * None. * * Side effects: * Interpreters are updated, as is environ. * *---------------------------------------------------------------------- */ int unsetenv(name) #ifdef IS_LINUX const char *name; /* Name of variable to remove. */ #else char *name; /* Name of variable to remove. */ #endif { int index, dummy; char **envPtr; EnvInterp *eiPtr; if (environSize == 0) { EnvInit(); } /* * Update the environ array. */ index = FindVariable((char *)name, &dummy); if (index == -1) { return; } ckfree(environ[index]); for (envPtr = environ+index+1; ; envPtr++) { envPtr[-1] = *envPtr; if (*envPtr == NULL) { break; } } /* * Update all of the interpreters. */ for (eiPtr = firstInterpPtr; eiPtr != NULL; eiPtr = eiPtr->nextPtr) { (void) Tcl_UnsetVar2(eiPtr->interp, "env", (char *)name, TCL_GLOBAL_ONLY); } } /* *---------------------------------------------------------------------- * * EnvTraceProc -- * * This procedure is invoked whenever an environment variable * is modified or deleted. It propagates the change to the * "environ" array and to any other interpreters for whom * we're managing an "env" array. * * Results: * Always returns NULL to indicate success. * * Side effects: * Environment variable changes get propagated. If the whole * "env" array is deleted, then we stop managing things for * this interpreter (usually this happens because the whole * interpreter is being deleted). * *---------------------------------------------------------------------- */ /* ARGSUSED */ static char * EnvTraceProc(clientData, interp, name1, name2, flags) ClientData clientData; /* Not used. */ Tcl_Interp *interp; /* Interpreter whose "env" variable is * being modified. */ char *name1; /* Better be "env". */ char *name2; /* Name of variable being modified, or * NULL if whole array is being deleted. */ int flags; /* Indicates what's happening. */ { /* * First see if the whole "env" variable is being deleted. If * so, just forget about this interpreter. */ if (name2 == NULL) { register EnvInterp *eiPtr, *prevPtr; if ((flags & (TCL_TRACE_UNSETS|TCL_TRACE_DESTROYED)) != (TCL_TRACE_UNSETS|TCL_TRACE_DESTROYED)) { panic("EnvTraceProc called with confusing arguments"); } eiPtr = firstInterpPtr; if (eiPtr->interp == interp) { firstInterpPtr = eiPtr->nextPtr; } else { for (prevPtr = eiPtr, eiPtr = eiPtr->nextPtr; ; prevPtr = eiPtr, eiPtr = eiPtr->nextPtr) { if (eiPtr == NULL) { panic("EnvTraceProc couldn't find interpreter"); } if (eiPtr->interp == interp) { prevPtr->nextPtr = eiPtr->nextPtr; break; } } } ckfree((char *) eiPtr); return NULL; } /* * If a value is being set, call setenv to do all of the work. */ if (flags & TCL_TRACE_WRITES) { setenv(name2, Tcl_GetVar2(interp, "env", name2, TCL_GLOBAL_ONLY), 0); } if (flags & TCL_TRACE_UNSETS) { unsetenv(name2); } return NULL; } /* *---------------------------------------------------------------------- * * EnvInit -- * * This procedure is called to initialize our management * of the environ array. * * Results: * None. * * Side effects: * Environ gets copied to malloc-ed storage, so that in * the future we don't have to worry about which entries * are malloc-ed and which are static. * *---------------------------------------------------------------------- */ static void EnvInit() { char **newEnviron; int i, length; if (environSize != 0) { return; } for (length = 0; environ[length] != NULL; length++) { /* Empty loop body. */ } environSize = length+5; newEnviron = (char **) ckalloc((unsigned) (environSize * sizeof(char *))); for (i = 0; i < length; i++) { newEnviron[i] = (char *) ckalloc((unsigned) (strlen(environ[i]) + 1)); strcpy(newEnviron[i], environ[i]); } newEnviron[length] = NULL; environ = newEnviron; } micropolis-activity/src/tcl/tclhist.c0000664000076400007640000007346210724145723020236 0ustar simcitysimcity/* * tclHistory.c -- * * This module implements history as an optional addition to Tcl. * It can be called to record commands ("events") before they are * executed, and it provides a command that may be used to perform * history substitutions. * * Copyright 1990-1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/RCS/tclHistory.c,v 1.23 91/10/28 09:11:16 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include "tclint.h" /* * This history stuff is mostly straightforward, except for one thing * that makes everything very complicated. Suppose that the following * commands get executed: * echo foo * history redo * It's important that the history event recorded for the second command * be "echo foo", not "history redo". Otherwise, if another "history redo" * command is typed, it will result in infinite recursions on the * "history redo" command. Thus, the actual recorded history must be * echo foo * echo foo * To do this, the history command revises recorded history as part of * its execution. In the example above, when "history redo" starts * execution, the current event is "history redo", but the history * command arranges for the current event to be changed to "echo foo". * * There are three additional complications. The first is that history * substitution may only be part of a command, as in the following * command sequence: * echo foo bar * echo [history word 3] * In this case, the second event should be recorded as "echo bar". Only * part of the recorded event is to be modified. Fortunately, Tcl_Eval * helps with this by recording (in the evalFirst and evalLast fields of * the intepreter) the location of the command being executed, so the * history module can replace exactly the range of bytes corresponding * to the history substitution command. * * The second complication is that there are two ways to revise history: * replace a command, and replace the result of a command. Consider the * two examples below: * format {result is %d} $num | format {result is %d} $num * print [history redo] | print [history word 3] * Recorded history for these two cases should be as follows: * format {result is %d} $num | format {result is %d} $num * print [format {result is %d} $num] | print $num * In the left case, the history command was replaced with another command * to be executed (the brackets were retained), but in the case on the * right the result of executing the history command was replaced (i.e. * brackets were replaced too). * * The third complication is that there could potentially be many * history substitutions within a single command, as in: * echo [history word 3] [history word 2] * There could even be nested history substitutions, as in: * history subs abc [history word 2] * If history revisions were made immediately during each "history" command * invocations, it would be very difficult to produce the correct cumulative * effect from several substitutions in the same command. To get around * this problem, the actual history revision isn't made during the execution * of the "history" command. Information about the changes is just recorded, * in xxx records, and the actual changes are made during the next call to * Tcl_RecordHistory (when we know that execution of the previous command * has finished). */ /* * Default space allocation for command strings: */ #define INITIAL_CMD_SIZE 40 /* * Forward declarations for procedures defined later in this file: */ static void DoRevs _ANSI_ARGS_((Interp *iPtr)); static HistoryEvent * GetEvent _ANSI_ARGS_((Interp *iPtr, char *string)); static char * GetWords _ANSI_ARGS_((Interp *iPtr, char *command, char *words)); static void InsertRev _ANSI_ARGS_((Interp *iPtr, HistoryRev *revPtr)); static void MakeSpace _ANSI_ARGS_((HistoryEvent *hPtr, int size)); static void RevCommand _ANSI_ARGS_((Interp *iPtr, char *string)); static void RevResult _ANSI_ARGS_((Interp *iPtr, char *string)); static int SubsAndEval _ANSI_ARGS_((Interp *iPtr, char *cmd, char *old, char *new)); /* *---------------------------------------------------------------------- * * Tcl_InitHistory -- * * Initialize history-related state in an interpreter. * * Results: * None. * * Side effects: * History info is initialized in iPtr. * *---------------------------------------------------------------------- */ void Tcl_InitHistory(interp) Tcl_Interp *interp; /* Interpreter to initialize. */ { register Interp *iPtr = (Interp *) interp; int i; if (iPtr->numEvents != 0) { return; } iPtr->numEvents = 20; iPtr->events = (HistoryEvent *) ckalloc((unsigned) (iPtr->numEvents * sizeof(HistoryEvent))); for (i = 0; i < iPtr->numEvents; i++) { iPtr->events[i].command = (char *) ckalloc(INITIAL_CMD_SIZE); *iPtr->events[i].command = 0; iPtr->events[i].bytesAvl = INITIAL_CMD_SIZE; } iPtr->curEvent = 0; iPtr->curEventNum = 0; Tcl_CreateCommand((Tcl_Interp *) iPtr, "history", Tcl_HistoryCmd, (ClientData) NULL, (void (*)()) NULL); } /* *---------------------------------------------------------------------- * * Tcl_RecordAndEval -- * * This procedure adds its command argument to the current list of * recorded events and then executes the command by calling Tcl_Eval. * * Results: * The return value is a standard Tcl return value, the result of * executing cmd. * * Side effects: * The command is recorded and executed. In addition, pending history * revisions are carried out, and information is set up to enable * Tcl_Eval to identify history command ranges. This procedure also * initializes history information for the interpreter, if it hasn't * already been initialized. * *---------------------------------------------------------------------- */ int Tcl_RecordAndEval(interp, cmd, flags) Tcl_Interp *interp; /* Token for interpreter in which command * will be executed. */ char *cmd; /* Command to record. */ int flags; /* Additional flags to pass to Tcl_Eval. * TCL_NO_EVAL means only record: don't * execute command. */ { register Interp *iPtr = (Interp *) interp; register HistoryEvent *eventPtr; int length, result; if (iPtr->numEvents == 0) { Tcl_InitHistory(interp); } DoRevs(iPtr); /* * Don't record empty commands. */ while (isspace(*cmd)) { cmd++; } if (*cmd == '\0') { Tcl_ResetResult(interp); return TCL_OK; } iPtr->curEventNum++; iPtr->curEvent++; if (iPtr->curEvent >= iPtr->numEvents) { iPtr->curEvent = 0; } eventPtr = &iPtr->events[iPtr->curEvent]; /* * Chop off trailing newlines before recording the command. */ length = strlen(cmd); while (cmd[length-1] == '\n') { length--; } MakeSpace(eventPtr, length + 1); strncpy(eventPtr->command, cmd, length); eventPtr->command[length] = 0; /* * Execute the command. Note: history revision isn't possible after * a nested call to this procedure, because the event at the top of * the history list no longer corresponds to what's going on when * a nested call here returns. Thus, must leave history revision * disabled when we return. */ result = TCL_OK; if (flags != TCL_NO_EVAL) { iPtr->historyFirst = cmd; iPtr->revDisables = 0; result = Tcl_Eval(interp, cmd, flags | TCL_RECORD_BOUNDS, (char **) NULL); } iPtr->revDisables = 1; return result; } /* *---------------------------------------------------------------------- * * Tcl_HistoryCmd -- * * This procedure is invoked to process the "history" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_HistoryCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { register Interp *iPtr = (Interp *) interp; register HistoryEvent *eventPtr; int length; char c; /* * If no arguments, treat the same as "history info". */ if (argc == 1) { goto infoCmd; } c = argv[1][0]; length = strlen(argv[1]); if ((c == 'a') && (strncmp(argv[1], "add", length)) == 0) { if ((argc != 3) && (argc != 4)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " add event ?exec?\"", (char *) NULL); return TCL_ERROR; } if (argc == 4) { if (strncmp(argv[3], "exec", strlen(argv[3])) != 0) { Tcl_AppendResult(interp, "bad argument \"", argv[3], "\": should be \"exec\"", (char *) NULL); return TCL_ERROR; } return Tcl_RecordAndEval(interp, argv[2], 0); } return Tcl_RecordAndEval(interp, argv[2], TCL_NO_EVAL); } else if ((c == 'c') && (strncmp(argv[1], "change", length)) == 0) { if ((argc != 3) && (argc != 4)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " change newValue ?event?\"", (char *) NULL); return TCL_ERROR; } if (argc == 3) { eventPtr = &iPtr->events[iPtr->curEvent]; iPtr->revDisables += 1; while (iPtr->revPtr != NULL) { HistoryRev *nextPtr; ckfree(iPtr->revPtr->newBytes); nextPtr = iPtr->revPtr->nextPtr; ckfree((char *) iPtr->revPtr); iPtr->revPtr = nextPtr; } } else { eventPtr = GetEvent(iPtr, argv[3]); if (eventPtr == NULL) { return TCL_ERROR; } } MakeSpace(eventPtr, strlen(argv[2]) + 1); strcpy(eventPtr->command, argv[2]); return TCL_OK; } else if ((c == 'e') && (strncmp(argv[1], "event", length)) == 0) { if (argc > 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " event ?event?\"", (char *) NULL); return TCL_ERROR; } eventPtr = GetEvent(iPtr, argc==2 ? "-1" : argv[2]); if (eventPtr == NULL) { return TCL_ERROR; } RevResult(iPtr, eventPtr->command); Tcl_SetResult(interp, eventPtr->command, TCL_VOLATILE); return TCL_OK; } else if ((c == 'i') && (strncmp(argv[1], "info", length)) == 0) { int count, indx, i; char *newline; if ((argc != 2) && (argc != 3)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " info ?count?\"", (char *) NULL); return TCL_ERROR; } infoCmd: if (argc == 3) { if (Tcl_GetInt(interp, argv[2], &count) != TCL_OK) { return TCL_ERROR; } if (count > iPtr->numEvents) { count = iPtr->numEvents; } } else { count = iPtr->numEvents; } newline = ""; for (i = 0, indx = iPtr->curEvent + 1 + iPtr->numEvents - count; i < count; i++, indx++) { char *cur, *next, savedChar; char serial[20]; if (indx >= iPtr->numEvents) { indx -= iPtr->numEvents; } cur = iPtr->events[indx].command; if (*cur == '\0') { continue; /* No command recorded here. */ } sprintf(serial, "%6d ", iPtr->curEventNum + 1 - (count - i)); Tcl_AppendResult(interp, newline, serial, (char *) NULL); newline = "\n"; /* * Tricky formatting here: for multi-line commands, indent * the continuation lines. */ while (1) { next = strchr(cur, '\n'); if (next == NULL) { break; } next++; savedChar = *next; *next = 0; Tcl_AppendResult(interp, cur, "\t", (char *) NULL); *next = savedChar; cur = next; } Tcl_AppendResult(interp, cur, (char *) NULL); } return TCL_OK; } else if ((c == 'k') && (strncmp(argv[1], "keep", length)) == 0) { int count, i, src; HistoryEvent *events; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " keep number\"", (char *) NULL); return TCL_ERROR; } if (Tcl_GetInt(interp, argv[2], &count) != TCL_OK) { return TCL_ERROR; } if ((count <= 0) || (count > 1000)) { Tcl_AppendResult(interp, "illegal keep count \"", argv[2], "\"", (char *) NULL); return TCL_ERROR; } /* * Create a new history array and copy as much existing history * as possible from the old array. */ events = (HistoryEvent *) ckalloc((unsigned) (count * sizeof(HistoryEvent))); if (count < iPtr->numEvents) { src = iPtr->curEvent + 1 - count; if (src < 0) { src += iPtr->numEvents; } } else { src = iPtr->curEvent + 1; } for (i = 0; i < count; i++, src++) { if (src >= iPtr->numEvents) { src = 0; } if (i < iPtr->numEvents) { events[i] = iPtr->events[src]; iPtr->events[src].command = NULL; } else { events[i].command = (char *) ckalloc(INITIAL_CMD_SIZE); events[i].command[0] = 0; events[i].bytesAvl = INITIAL_CMD_SIZE; } } /* * Throw away everything left in the old history array, and * substitute the new one for the old one. */ for (i = 0; i < iPtr->numEvents; i++) { if (iPtr->events[i].command != NULL) { ckfree(iPtr->events[i].command); } } ckfree((char *) iPtr->events); iPtr->events = events; if (count < iPtr->numEvents) { iPtr->curEvent = count-1; } else { iPtr->curEvent = iPtr->numEvents-1; } iPtr->numEvents = count; return TCL_OK; } else if ((c == 'n') && (strncmp(argv[1], "nextid", length)) == 0) { if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " nextid\"", (char *) NULL); return TCL_ERROR; } sprintf(iPtr->result, "%d", iPtr->curEventNum+1); return TCL_OK; } else if ((c == 'r') && (strncmp(argv[1], "redo", length)) == 0) { if (argc > 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " redo ?event?\"", (char *) NULL); return TCL_ERROR; } eventPtr = GetEvent(iPtr, argc==2 ? "-1" : argv[2]); if (eventPtr == NULL) { return TCL_ERROR; } RevCommand(iPtr, eventPtr->command); return Tcl_Eval(interp, eventPtr->command, 0, (char **) NULL); } else if ((c == 's') && (strncmp(argv[1], "substitute", length)) == 0) { if ((argc > 5) || (argc < 4)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " substitute old new ?event?\"", (char *) NULL); return TCL_ERROR; } eventPtr = GetEvent(iPtr, argc==4 ? "-1" : argv[4]); if (eventPtr == NULL) { return TCL_ERROR; } return SubsAndEval(iPtr, eventPtr->command, argv[2], argv[3]); } else if ((c == 'w') && (strncmp(argv[1], "words", length)) == 0) { char *words; if ((argc != 3) && (argc != 4)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " words num-num/pat ?event?\"", (char *) NULL); return TCL_ERROR; } eventPtr = GetEvent(iPtr, argc==3 ? "-1" : argv[3]); if (eventPtr == NULL) { return TCL_ERROR; } words = GetWords(iPtr, eventPtr->command, argv[2]); if (words == NULL) { return TCL_ERROR; } RevResult(iPtr, words); iPtr->result = words; iPtr->freeProc = (Tcl_FreeProc *) free; return TCL_OK; } Tcl_AppendResult(interp, "bad option \"", argv[1], "\": must be add, change, event, info, keep, nextid, ", "redo, substitute, or words", (char *) NULL); return TCL_ERROR; } /* *---------------------------------------------------------------------- * * MakeSpace -- * * Given a history event, make sure it has enough space for * a string of a given length (enlarge the string area if * necessary). * * Results: * None. * * Side effects: * More memory may get allocated. * *---------------------------------------------------------------------- */ static void MakeSpace(hPtr, size) HistoryEvent *hPtr; int size; /* # of bytes needed in hPtr. */ { if (hPtr->bytesAvl < size) { ckfree(hPtr->command); hPtr->command = (char *) ckalloc((unsigned) size); hPtr->bytesAvl = size; } } /* *---------------------------------------------------------------------- * * InsertRev -- * * Add a new revision to the list of those pending for iPtr. * Do it in a way that keeps the revision list sorted in * increasing order of firstIndex. Also, eliminate revisions * that are subsets of other revisions. * * Results: * None. * * Side effects: * RevPtr is added to iPtr's revision list. * *---------------------------------------------------------------------- */ static void InsertRev(iPtr, revPtr) Interp *iPtr; /* Interpreter to use. */ register HistoryRev *revPtr; /* Revision to add to iPtr's list. */ { register HistoryRev *curPtr; register HistoryRev *prevPtr; for (curPtr = iPtr->revPtr, prevPtr = NULL; curPtr != NULL; prevPtr = curPtr, curPtr = curPtr->nextPtr) { /* * If this revision includes the new one (or vice versa) then * just eliminate the one that is a subset of the other. */ if ((revPtr->firstIndex <= curPtr->firstIndex) && (revPtr->lastIndex >= curPtr->firstIndex)) { curPtr->firstIndex = revPtr->firstIndex; curPtr->lastIndex = revPtr->lastIndex; curPtr->newSize = revPtr->newSize; ckfree(curPtr->newBytes); curPtr->newBytes = revPtr->newBytes; ckfree((char *) revPtr); return; } if ((revPtr->firstIndex >= curPtr->firstIndex) && (revPtr->lastIndex <= curPtr->lastIndex)) { ckfree(revPtr->newBytes); ckfree((char *) revPtr); return; } if (revPtr->firstIndex < curPtr->firstIndex) { break; } } /* * Insert revPtr just after prevPtr. */ if (prevPtr == NULL) { revPtr->nextPtr = iPtr->revPtr; iPtr->revPtr = revPtr; } else { revPtr->nextPtr = prevPtr->nextPtr; prevPtr->nextPtr = revPtr; } } /* *---------------------------------------------------------------------- * * RevCommand -- * * This procedure is invoked by the "history" command to record * a command revision. See the comments at the beginning of the * file for more information about revisions. * * Results: * None. * * Side effects: * Revision information is recorded. * *---------------------------------------------------------------------- */ static void RevCommand(iPtr, string) register Interp *iPtr; /* Interpreter in which to perform the * substitution. */ char *string; /* String to substitute. */ { register HistoryRev *revPtr; if ((iPtr->evalFirst == NULL) || (iPtr->revDisables > 0)) { return; } revPtr = (HistoryRev *) ckalloc(sizeof(HistoryRev)); revPtr->firstIndex = iPtr->evalFirst - iPtr->historyFirst; revPtr->lastIndex = iPtr->evalLast - iPtr->historyFirst; revPtr->newSize = strlen(string); revPtr->newBytes = (char *) ckalloc((unsigned) (revPtr->newSize+1)); strcpy(revPtr->newBytes, string); InsertRev(iPtr, revPtr); } /* *---------------------------------------------------------------------- * * RevResult -- * * This procedure is invoked by the "history" command to record * a result revision. See the comments at the beginning of the * file for more information about revisions. * * Results: * None. * * Side effects: * Revision information is recorded. * *---------------------------------------------------------------------- */ static void RevResult(iPtr, string) register Interp *iPtr; /* Interpreter in which to perform the * substitution. */ char *string; /* String to substitute. */ { register HistoryRev *revPtr; char *evalFirst, *evalLast; char *argv[2]; if ((iPtr->evalFirst == NULL) || (iPtr->revDisables > 0)) { return; } /* * Expand the replacement range to include the brackets that surround * the command. If there aren't any brackets (i.e. this command was * invoked at top-level) then don't do any revision. Also, if there * are several commands in brackets, of which this is just one, * then don't do any revision. */ evalFirst = iPtr->evalFirst; evalLast = iPtr->evalLast + 1; while (1) { if (evalFirst == iPtr->historyFirst) { return; } evalFirst--; if (*evalFirst == '[') { break; } if (!isspace(*evalFirst)) { return; } } if (*evalLast != ']') { return; } revPtr = (HistoryRev *) ckalloc(sizeof(HistoryRev)); revPtr->firstIndex = evalFirst - iPtr->historyFirst; revPtr->lastIndex = evalLast - iPtr->historyFirst; argv[0] = string; revPtr->newBytes = Tcl_Merge(1, argv); revPtr->newSize = strlen(revPtr->newBytes); InsertRev(iPtr, revPtr); } /* *---------------------------------------------------------------------- * * DoRevs -- * * This procedure is called to apply the history revisions that * have been recorded in iPtr. * * Results: * None. * * Side effects: * The most recent entry in the history for iPtr may be modified. * *---------------------------------------------------------------------- */ static void DoRevs(iPtr) register Interp *iPtr; /* Interpreter whose history is to * be modified. */ { register HistoryRev *revPtr; register HistoryEvent *eventPtr; char *newCommand, *p; unsigned int size; int bytesSeen, count; if (iPtr->revPtr == NULL) { return; } /* * The revision is done in two passes. The first pass computes the * amount of space needed for the revised event, and the second pass * pieces together the new event and frees up the revisions. */ eventPtr = &iPtr->events[iPtr->curEvent]; size = strlen(eventPtr->command) + 1; for (revPtr = iPtr->revPtr; revPtr != NULL; revPtr = revPtr->nextPtr) { size -= revPtr->lastIndex + 1 - revPtr->firstIndex; size += revPtr->newSize; } newCommand = (char *) ckalloc(size); p = newCommand; bytesSeen = 0; for (revPtr = iPtr->revPtr; revPtr != NULL; ) { HistoryRev *nextPtr = revPtr->nextPtr; count = revPtr->firstIndex - bytesSeen; if (count > 0) { strncpy(p, eventPtr->command + bytesSeen, count); p += count; } strncpy(p, revPtr->newBytes, revPtr->newSize); p += revPtr->newSize; bytesSeen = revPtr->lastIndex+1; ckfree(revPtr->newBytes); ckfree((char *) revPtr); revPtr = nextPtr; } if (&p[strlen(&eventPtr->command[bytesSeen]) + 1] > &newCommand[size]) { printf("Assertion failed!\n"); } strcpy(p, eventPtr->command + bytesSeen); /* * Replace the command in the event. */ ckfree(eventPtr->command); eventPtr->command = newCommand; eventPtr->bytesAvl = size; iPtr->revPtr = NULL; } /* *---------------------------------------------------------------------- * * GetEvent -- * * Given a textual description of an event (see the manual page * for legal values) find the corresponding event and return its * command string. * * Results: * The return value is a pointer to the event named by "string". * If no such event exists, then NULL is returned and an error * message is left in iPtr. * * Side effects: * None. * *---------------------------------------------------------------------- */ static HistoryEvent * GetEvent(iPtr, string) register Interp *iPtr; /* Interpreter in which to look. */ char *string; /* Description of event. */ { int eventNum, index; register HistoryEvent *eventPtr; int length; /* * First check for a numeric specification of an event. */ if (isdigit(*string) || (*string == '-')) { if (Tcl_GetInt((Tcl_Interp *) iPtr, string, &eventNum) != TCL_OK) { return NULL; } if (eventNum < 0) { eventNum += iPtr->curEventNum; } if (eventNum > iPtr->curEventNum) { Tcl_AppendResult((Tcl_Interp *) iPtr, "event \"", string, "\" hasn't occurred yet", (char *) NULL); return NULL; } if ((eventNum <= iPtr->curEventNum-iPtr->numEvents) || (eventNum <= 0)) { Tcl_AppendResult((Tcl_Interp *) iPtr, "event \"", string, "\" is too far in the past", (char *) NULL); return NULL; } index = iPtr->curEvent + (eventNum - iPtr->curEventNum); if (index < 0) { index += iPtr->numEvents; } return &iPtr->events[index]; } /* * Next, check for an event that contains the string as a prefix or * that matches the string in the sense of Tcl_StringMatch. */ length = strlen(string); for (index = iPtr->curEvent - 1; ; index--) { if (index < 0) { index += iPtr->numEvents; } if (index == iPtr->curEvent) { break; } eventPtr = &iPtr->events[index]; if ((strncmp(eventPtr->command, string, length) == 0) || Tcl_StringMatch(eventPtr->command, string)) { return eventPtr; } } Tcl_AppendResult((Tcl_Interp *) iPtr, "no event matches \"", string, "\"", (char *) NULL); return NULL; } /* *---------------------------------------------------------------------- * * SubsAndEval -- * * Generate a new command by making a textual substitution in * the "cmd" argument. Then execute the new command. * * Results: * The return value is a standard Tcl error. * * Side effects: * History gets revised if the substitution is occurring on * a recorded command line. Also, the re-executed command * may produce side-effects. * *---------------------------------------------------------------------- */ static int SubsAndEval(iPtr, cmd, old, new) register Interp *iPtr; /* Interpreter in which to execute * new command. */ char *cmd; /* Command in which to substitute. */ char *old; /* String to search for in command. */ char *new; /* Replacement string for "old". */ { char *src, *dst, *newCmd; int count, oldLength, newLength, length, result; /* * Figure out how much space it will take to hold the * substituted command (and complain if the old string * doesn't appear in the original command). */ oldLength = strlen(old); newLength = strlen(new); src = cmd; count = 0; while (1) { src = strstr(src, old); if (src == NULL) { break; } src += oldLength; count++; } if (count == 0) { Tcl_AppendResult((Tcl_Interp *) iPtr, "\"", old, "\" doesn't appear in event", (char *) NULL); return TCL_ERROR; } length = strlen(cmd) + count*(newLength - oldLength); /* * Generate a substituted command. */ newCmd = (char *) ckalloc((unsigned) (length + 1)); dst = newCmd; while (1) { src = strstr(cmd, old); if (src == NULL) { strcpy(dst, cmd); break; } strncpy(dst, cmd, src-cmd); dst += src-cmd; strcpy(dst, new); dst += newLength; cmd = src + oldLength; } RevCommand(iPtr, newCmd); result = Tcl_Eval((Tcl_Interp *) iPtr, newCmd, 0, (char **) NULL); ckfree(newCmd); return result; } /* *---------------------------------------------------------------------- * * GetWords -- * * Given a command string, return one or more words from the * command string. * * Results: * The return value is a pointer to a dynamically-allocated * string containing the words of command specified by "words". * If the word specifier has improper syntax then an error * message is placed in iPtr->result and NULL is returned. * * Side effects: * Memory is allocated. It is the caller's responsibilty to * free the returned string.. * *---------------------------------------------------------------------- */ static char * GetWords(iPtr, command, words) register Interp *iPtr; /* Tcl interpreter in which to place * an error message if needed. */ char *command; /* Command string. */ char *words; /* Description of which words to extract * from the command. Either num[-num] or * a pattern. */ { char *result; char *start, *end, *dst; register char *next; int first; /* First word desired. -1 means last word * only. */ int last; /* Last word desired. -1 means use everything * up to the end. */ int index; /* Index of current word. */ char *pattern; /* * Figure out whether we're looking for a numerical range or for * a pattern. */ pattern = NULL; first = 0; last = -1; if (*words == '$') { if (words[1] != '\0') { goto error; } first = -1; } else if (isdigit(*words)) { first = strtoul(words, &start, 0); if (*start == 0) { last = first; } else if (*start == '-') { start++; if (*start == '$') { start++; } else if (isdigit(*start)) { last = strtoul(start, &start, 0); } else { goto error; } if (*start != 0) { goto error; } } if ((first > last) && (last != -1)) { goto error; } } else { pattern = words; } /* * Scan through the words one at a time, copying those that are * relevant into the result string. Allocate a result area large * enough to hold all the words if necessary. */ result = (char *) ckalloc((unsigned) (strlen(command) + 1)); dst = result; for (next = command; isspace(*next); next++) { /* Empty loop body: just find start of first word. */ } for (index = 0; *next != 0; index++) { start = next; end = TclWordEnd(next, 0); for (next = end; isspace(*next); next++) { /* Empty loop body: just find start of next word. */ } if ((first > index) || ((first == -1) && (*next != 0))) { continue; } if ((last != -1) && (last < index)) { continue; } if (pattern != NULL) { int match; char savedChar = *end; *end = 0; match = Tcl_StringMatch(start, pattern); *end = savedChar; if (!match) { continue; } } if (dst != result) { *dst = ' '; dst++; } strncpy(dst, start, (end-start)); dst += end-start; } *dst = 0; /* * Check for an out-of-range argument index. */ if ((last >= index) || (first >= index)) { ckfree(result); Tcl_AppendResult((Tcl_Interp *) iPtr, "word selector \"", words, "\" specified non-existent words", (char *) NULL); return NULL; } return result; error: Tcl_AppendResult((Tcl_Interp *) iPtr, "bad word selector \"", words, "\": should be num-num or pattern", (char *) NULL); return NULL; } micropolis-activity/src/tcl/library/0000775000076400007640000000000010724145723020050 5ustar simcitysimcitymicropolis-activity/src/tcl/library/tclindex0000664000076400007640000000042510724145723021606 0ustar simcitysimcity# Tcl autoload index file: each line identifies a Tcl # procedure and the file where that procedure is # defined. Generated by the "auto_mkindex" command. unknown init.tcl auto_load init.tcl auto_execok init.tcl auto_reset init.tcl auto_mkindex mkindex.tcl parray parray.tcl micropolis-activity/src/tcl/library/parray.tcl0000664000076400007640000000175110724145723022056 0ustar simcitysimcity# parray: # Print the contents of a global array on stdout. # # $Header: /sprite/src/lib/tcl/scripts/RCS/parray.tcl,v 1.1 91/09/26 09:55:03 ouster Exp $ SPRITE (Berkeley) # # Copyright 1991 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # proc parray a { global $a set maxl 0 foreach name [lsort [array names $a]] { if {[string length $name] > $maxl} { set maxl [string length $name] } } set maxl [expr {$maxl + [string length $a] + 2}] foreach name [lsort [array names $a]] { set nameString [format %s(%s) $a $name] puts stdout [format "%-*s = %s" $maxl $nameString [set ${a}($name)]] } } micropolis-activity/src/tcl/library/init.tcl0000664000076400007640000001022110724145723021513 0ustar simcitysimcity# init.tcl -- # # Default system startup file for Tcl-based applications. Defines # "unknown" procedure and auto-load facilities. # # $Header: /user6/ouster/tcl/scripts/RCS/init.tcl,v 1.7 92/07/25 16:29:36 ouster Exp $ SPRITE (Berkeley) # # Copyright 1991-1992 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # # unknown: # Invoked when a Tcl command is invoked that doesn't exist in the # interpreter: # # 1. See if the autoload facility can locate the command in a # Tcl script file. If so, load it and execute it. # 2. See if the command exists as an executable UNIX program. # If so, "exec" the command. # 3. See if the command is a valid abbreviation for another command. # if so, invoke the command. However, only permit abbreviations # at top-level. proc unknown args { global auto_noexec auto_noload env unknown_active if [info exists unknown_active] { unset unknown_active error "unexpected recursion in \"unknown\" command" } set unknown_active 1 set name [lindex $args 0] if ![info exists auto_noload] { if [auto_load $name] { unset unknown_active return [uplevel $args] } } if ![info exists auto_noexec] { if [auto_execok $name] { unset unknown_active return [uplevel exec $args] } } if {([info level] == 1) && ([info script] == "")} { set cmds [info commands $name*] if {[llength $cmds] == 1} { unset unknown_active return [uplevel [lreplace $args 0 0 $cmds]] } if {[llength $cmds] != 0} { unset unknown_active if {$name == ""} { error "empty command name \"\"" } else { error "ambiguous command name \"$name\": [lsort $cmds]" } } } unset unknown_active error "invalid command name \"$name\"" } # auto_load: # Checks a collection of library directories to see if a procedure # is defined in one of them. If so, it sources the appropriate # library file to create the procedure. Returns 1 if it successfully # loaded the procedure, 0 otherwise. proc auto_load cmd { global auto_index auto_oldpath auto_path env if [info exists auto_index($cmd)] { uplevel #0 source $auto_index($cmd) return 1 } if [catch {set path $auto_path}] { if [catch {set path $env(TCLLIBPATH)}] { if [catch {set path [info library]}] { return 0 } } } if [info exists auto_oldpath] { if {$auto_oldpath == $path} { return 0 } } set auto_oldpath $path catch {unset auto_index} foreach dir $path { set f "" catch { set f [open $dir/tclindex] if {[gets $f] != "# Tcl autoload index file: each line identifies a Tcl"} { puts stdout "Bad id line in file $dir/tclindex" error done } while {[gets $f line] >= 0} { if {([string index $line 0] == "#") || ([llength $line] != 2)} { continue } set name [lindex $line 0] if {![info exists auto_index($name)]} { set auto_index($name) $dir/[lindex $line 1] } } } if {$f != ""} { close $f } } if [info exists auto_index($cmd)] { uplevel #0 source $auto_index($cmd) return 1 } return 0 } # auto_execok: # Returns 1 if there's an executable in the current path for the # given name, 0 otherwise. Builds an associative array auto_execs # that caches information about previous checks, for speed. proc auto_execok name { global auto_execs env if [info exists auto_execs($name)] { return $auto_execs($name) } set auto_execs($name) 0 foreach dir [split $env(PATH) :] { if {[file executable $dir/$name] && ![file isdirectory $dir/$name]} { set auto_execs($name) 1 return 1 } } return 0 } # auto_reset: # Destroy all cached information for auto-loading and auto-execution, # so that the information gets recomputed the next time it's needed. proc auto_reset {} { global auto_execs auto_index unset auto_execs auto_index } micropolis-activity/src/tcl/library/mkindex.tcl0000664000076400007640000000310310724145723022210 0ustar simcitysimcity# auto_mkindex: # Given a directory and a glob-style specification for files in that # directory, generate a "tclIndex" file in the directory that is suitable # for use in auto-loading. Returns a null string. # # $Header: /user6/ouster/tcl/scripts/RCS/mkindex.tcl,v 1.2 91/12/16 08:29:25 ouster Exp $ SPRITE (Berkeley) # # Copyright 1991 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # proc auto_mkindex {dir files} { global errorCode errorInfo set oldDir [pwd] cd $dir set dir [pwd] append index "# Tcl autoload index file: each line identifies a Tcl\n" append index "# procedure and the file where that procedure is\n" append index "# defined. Generated by the \"auto_mkindex\" command.\n" append index "\n" foreach file [glob $files] { set f "" set error [catch { set f [open $file] while {[gets $f line] >= 0} { if [regexp {^proc[ ]+([^ ]*)} $line match procName] { append index "[list $procName $file]\n" } } close $f } msg] if $error { set code $errorCode set info $errorInfo catch [close $f] cd $oldDir error $msg $info $code } } set f [open tclindex w] puts $f $index nonewline close $f cd $oldDir } micropolis-activity/src/tcl/tclckall.c0000664000076400007640000003603210724145723020345 0ustar simcitysimcity/* * tclCkalloc.c -- * Interface to malloc and free that provides support for debugging problems * involving overwritten, double freeing memory and loss of memory. * * Copyright 1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. * * This code contributed by Karl Lehenbauer and Mark Diekhans * */ #include "tclint.h" #define FALSE 0 #define TRUE 1 #ifdef TCL_MEM_DEBUG #ifndef TCL_GENERIC_ONLY #include "tclunix.h" #endif #define GUARD_SIZE 8 struct mem_header { long length; char *file; int line; struct mem_header *flink; struct mem_header *blink; unsigned char low_guard[GUARD_SIZE]; char body[1]; }; static struct mem_header *allocHead = NULL; /* List of allocated structures */ #define GUARD_VALUE 0341 /* static char high_guard[] = {0x89, 0xab, 0xcd, 0xef}; */ static int total_mallocs = 0; static int total_frees = 0; static int current_bytes_malloced = 0; static int maximum_bytes_malloced = 0; static int current_malloc_packets = 0; static int maximum_malloc_packets = 0; static int break_on_malloc = 0; static int trace_on_at_malloc = 0; static int alloc_tracing = FALSE; static int init_malloced_bodies = FALSE; #ifdef MEM_VALIDATE static int validate_memory = TRUE; #else static int validate_memory = FALSE; #endif /* *---------------------------------------------------------------------- * * dump_memory_info -- * Display the global memory management statistics. * *---------------------------------------------------------------------- */ static void dump_memory_info(outFile) FILE *outFile; { fprintf(outFile,"total mallocs %10d\n", total_mallocs); fprintf(outFile,"total frees %10d\n", total_frees); fprintf(outFile,"current packets allocated %10d\n", current_malloc_packets); fprintf(outFile,"current bytes allocated %10d\n", current_bytes_malloced); fprintf(outFile,"maximum packets allocated %10d\n", maximum_malloc_packets); fprintf(outFile,"maximum bytes allocated %10d\n", maximum_bytes_malloced); } /* *---------------------------------------------------------------------- * * ValidateMemory -- * Procedure to validate allocted memory guard zones. * *---------------------------------------------------------------------- */ static void ValidateMemory (memHeaderP, file, line, nukeGuards) struct mem_header *memHeaderP; char *file; int line; int nukeGuards; { unsigned char *hiPtr; int idx; int guard_failed = FALSE; for (idx = 0; idx < GUARD_SIZE; idx++) if (*(memHeaderP->low_guard + idx) != GUARD_VALUE) { guard_failed = TRUE; fflush (stdout); fprintf(stderr, "low guard byte %d is 0x%x\n", idx, *(memHeaderP->low_guard + idx) & 0xff); } if (guard_failed) { dump_memory_info (stderr); fprintf (stderr, "low guard failed at %lx, %s %d\n", memHeaderP->body, file, line); fflush (stderr); /* In case name pointer is bad. */ fprintf (stderr, "Allocated at (%s %d)\n", memHeaderP->file, memHeaderP->line); panic ("Memory validation failure"); } hiPtr = (unsigned char *)memHeaderP->body + memHeaderP->length; for (idx = 0; idx < GUARD_SIZE; idx++) if (*(hiPtr + idx) != GUARD_VALUE) { guard_failed = TRUE; fflush (stdout); fprintf(stderr, "hi guard byte %d is 0x%x\n", idx, *(hiPtr+idx) & 0xff); } if (guard_failed) { dump_memory_info (stderr); fprintf (stderr, "high guard failed at %lx, %s %d\n", memHeaderP->body, file, line); fflush (stderr); /* In case name pointer is bad. */ fprintf (stderr, "Allocated at (%s %d)\n", memHeaderP->file, memHeaderP->line); panic ("Memory validation failure"); } if (nukeGuards) { memset ((char *) memHeaderP->low_guard, 0, GUARD_SIZE); memset ((char *) hiPtr, 0, GUARD_SIZE); } } /* *---------------------------------------------------------------------- * * Tcl_ValidateAllMemory -- * Validates guard regions for all allocated memory. * *---------------------------------------------------------------------- */ void Tcl_ValidateAllMemory (file, line) char *file; int line; { struct mem_header *memScanP; for (memScanP = allocHead; memScanP != NULL; memScanP = memScanP->flink) ValidateMemory (memScanP, file, line, FALSE); } /* *---------------------------------------------------------------------- * * Tcl_DumpActiveMemory -- * Displays all allocated memory to stderr. * * Results: * Return TCL_ERROR if an error accessing the file occures, `errno' * will have the file error number left in it. *---------------------------------------------------------------------- */ int Tcl_DumpActiveMemory (fileName) char *fileName; { FILE *fileP; struct mem_header *memScanP; char *address; #ifdef MSDOS fileP = fopen (fileName, "wb"); #else fileP = fopen (fileName, "w"); #endif if (fileP == NULL) return TCL_ERROR; for (memScanP = allocHead; memScanP != NULL; memScanP = memScanP->flink) { address = &memScanP->body [0]; fprintf (fileP, "%8lx - %8lx %7d @ %s %d\n", address, address + memScanP->length - 1, memScanP->length, memScanP->file, memScanP->line); } fclose (fileP); return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_DbCkalloc - debugging ckalloc * * Allocate the requested amount of space plus some extra for * guard bands at both ends of the request, plus a size, panicing * if there isn't enough space, then write in the guard bands * and return the address of the space in the middle that the * user asked for. * * The second and third arguments are file and line, these contain * the filename and line number corresponding to the caller. * These are sent by the ckalloc macro; it uses the preprocessor * autodefines __FILE__ and __LINE__. * *---------------------------------------------------------------------- */ char * Tcl_DbCkalloc(size, file, line) unsigned int size; char *file; int line; { struct mem_header *result; if (validate_memory) Tcl_ValidateAllMemory (file, line); result = (struct mem_header *)malloc((unsigned)size + sizeof(struct mem_header) + GUARD_SIZE); if (result == NULL) { fflush(stdout); dump_memory_info(stderr); panic("unable to alloc %d bytes, %s line %d", size, file, line); } /* * Fill in guard zones and size. Link into allocated list. */ result->length = size; result->file = file; result->line = line; memset ((char *) result->low_guard, GUARD_VALUE, GUARD_SIZE); memset (result->body + size, GUARD_VALUE, GUARD_SIZE); result->flink = allocHead; result->blink = NULL; if (allocHead != NULL) allocHead->blink = result; allocHead = result; total_mallocs++; if (trace_on_at_malloc && (total_mallocs >= trace_on_at_malloc)) { (void) fflush(stdout); fprintf(stderr, "reached malloc trace enable point (%d)\n", total_mallocs); fflush(stderr); alloc_tracing = TRUE; trace_on_at_malloc = 0; } if (alloc_tracing) fprintf(stderr,"ckalloc %lx %d %s %d\n", result->body, size, file, line); if (break_on_malloc && (total_mallocs >= break_on_malloc)) { break_on_malloc = 0; (void) fflush(stdout); fprintf(stderr,"reached malloc break limit (%d)\n", total_mallocs); fprintf(stderr, "program will now enter C debugger\n"); (void) fflush(stderr); kill (getpid(), SIGINT); } current_malloc_packets++; if (current_malloc_packets > maximum_malloc_packets) maximum_malloc_packets = current_malloc_packets; current_bytes_malloced += size; if (current_bytes_malloced > maximum_bytes_malloced) maximum_bytes_malloced = current_bytes_malloced; if (init_malloced_bodies) memset (result->body, 0xff, (int) size); return result->body; } /* *---------------------------------------------------------------------- * * Tcl_DbCkfree - debugging ckfree * * Verify that the low and high guards are intact, and if so * then free the buffer else panic. * * The guards are erased after being checked to catch duplicate * frees. * * The second and third arguments are file and line, these contain * the filename and line number corresponding to the caller. * These are sent by the ckfree macro; it uses the preprocessor * autodefines __FILE__ and __LINE__. * *---------------------------------------------------------------------- */ int Tcl_DbCkfree(ptr, file, line) char * ptr; char *file; int line; { struct mem_header *memp = 0; /* Must be zero for size calc */ /* * Since header ptr is zero, body offset will be size */ memp = (struct mem_header *)(((char *) ptr) - (int)memp->body); if (alloc_tracing) fprintf(stderr, "ckfree %lx %ld %s %d\n", memp->body, memp->length, file, line); if (validate_memory) Tcl_ValidateAllMemory (file, line); ValidateMemory (memp, file, line, TRUE); total_frees++; current_malloc_packets--; current_bytes_malloced -= memp->length; /* * Delink from allocated list */ if (memp->flink != NULL) memp->flink->blink = memp->blink; if (memp->blink != NULL) memp->blink->flink = memp->flink; if (allocHead == memp) allocHead = memp->flink; free((char *) memp); return 0; } /* *---------------------------------------------------------------------- * * MemoryCmd -- * Implements the TCL memory command: * memory info * memory display * break_on_malloc count * trace_on_at_malloc count * trace on|off * validate on|off * * Results: * Standard TCL results. * *---------------------------------------------------------------------- */ /* ARGSUSED */ static int MemoryCmd (clientData, interp, argc, argv) char *clientData; Tcl_Interp *interp; int argc; char **argv; { char *fileName; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " option [args..]\"", (char *) NULL); return TCL_ERROR; } if (strcmp(argv[1],"trace") == 0) { if (argc != 3) goto bad_suboption; alloc_tracing = (strcmp(argv[2],"on") == 0); return TCL_OK; } if (strcmp(argv[1],"init") == 0) { if (argc != 3) goto bad_suboption; init_malloced_bodies = (strcmp(argv[2],"on") == 0); return TCL_OK; } if (strcmp(argv[1],"validate") == 0) { if (argc != 3) goto bad_suboption; validate_memory = (strcmp(argv[2],"on") == 0); return TCL_OK; } if (strcmp(argv[1],"trace_on_at_malloc") == 0) { if (argc != 3) goto argError; if (Tcl_GetInt(interp, argv[2], &trace_on_at_malloc) != TCL_OK) return TCL_ERROR; return TCL_OK; } if (strcmp(argv[1],"break_on_malloc") == 0) { if (argc != 3) goto argError; if (Tcl_GetInt(interp, argv[2], &break_on_malloc) != TCL_OK) return TCL_ERROR; return TCL_OK; } if (strcmp(argv[1],"info") == 0) { dump_memory_info(stdout); return TCL_OK; } if (strcmp(argv[1],"active") == 0) { if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " active file", (char *) NULL); return TCL_ERROR; } fileName = argv [2]; if (fileName [0] == '~') if ((fileName = Tcl_TildeSubst (interp, fileName)) == NULL) return TCL_ERROR; if (Tcl_DumpActiveMemory (fileName) != TCL_OK) { Tcl_AppendResult(interp, "error accessing ", argv[2], (char *) NULL); return TCL_ERROR; } return TCL_OK; } Tcl_AppendResult(interp, "bad option \"", argv[1], "\": should be info, init, active, break_on_malloc, ", "trace_on_at_malloc, trace, or validate", (char *) NULL); return TCL_ERROR; argError: Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ", argv[1], "count\"", (char *) NULL); return TCL_ERROR; bad_suboption: Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ", argv[1], " on|off\"", (char *) NULL); return TCL_ERROR; } /* *---------------------------------------------------------------------- * * Tcl_InitMemory -- * Initialize the memory command. * *---------------------------------------------------------------------- */ void Tcl_InitMemory(interp) Tcl_Interp *interp; { Tcl_CreateCommand (interp, "memory", MemoryCmd, (ClientData)NULL, (void (*)())NULL); } #else /* *---------------------------------------------------------------------- * * Tcl_Ckalloc -- * Interface to malloc when TCL_MEM_DEBUG is disabled. It does check * that memory was actually allocated. * *---------------------------------------------------------------------- */ VOID * Tcl_Ckalloc (size) unsigned int size; { char *result; result = malloc(size); if (result == NULL) panic("unable to alloc %d bytes", size); return result; } /* *---------------------------------------------------------------------- * * TckCkfree -- * Interface to free when TCL_MEM_DEBUG is disabled. Done here rather * in the macro to keep some modules from being compiled with * TCL_MEM_DEBUG enabled and some with it disabled. * *---------------------------------------------------------------------- */ void Tcl_Ckfree (ptr) VOID *ptr; { free (ptr); } /* *---------------------------------------------------------------------- * * Tcl_InitMemory -- * Dummy initialization for memory command, which is only available * if TCL_MEM_DEBUG is on. * *---------------------------------------------------------------------- */ /* ARGSUSED */ void Tcl_InitMemory(interp) Tcl_Interp *interp; { } #endif micropolis-activity/src/tcl/tclint.h0000664000076400007640000007723510724145723020070 0ustar simcitysimcity/* * tclInt.h -- * * Declarations of things used internally by the Tcl interpreter. * * Copyright 1987-1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. * * $Header: /user6/ouster/tcl/RCS/tclInt.h,v 1.69 92/06/21 14:09:23 ouster Exp $ SPRITE (Berkeley) */ #ifndef _TCLINT #define _TCLINT /* * Common include files needed by most of the Tcl source files are * included here, so that system-dependent personalizations for the * include files only have to be made in once place. This results * in a few extra includes, but greater modularity. The order of * the three groups of #includes is important. For example, stdio.h * is needed by tcl.h, and the _ANSI_ARGS_ declaration in tcl.h is * needed by stdlib.h in some configurations. */ #include #include #ifndef _TCL #include "tcl.h" #endif #ifndef _TCLHASH #include "tclhash.h" #endif #ifndef _REGEXP #include "regexp.h" #endif /* * Macro to use instead of "void" for arguments that must have * type "void *" in ANSI C; maps them to type "char *" in * non-ANSI systems. This macro may be used in some of the include * files below, which is why it is defined here. */ #ifndef VOID # ifdef __STDC__ # define VOID void # else # define VOID char # endif #endif #include #include #include //#include #include /* * At present (12/91) not all stdlib.h implementations declare strtod. * The declaration below is here to ensure that it's declared, so that * the compiler won't take the default approach of assuming it returns * an int. There's no ANSI prototype for it because there would end * up being too many conflicts with slightly-different prototypes. */ extern double strtod(); /* *---------------------------------------------------------------- * Data structures related to variables. These are used primarily * in tclVar.c *---------------------------------------------------------------- */ /* * The following structure defines a variable trace, which is used to * invoke a specific C procedure whenever certain operations are performed * on a variable. */ typedef struct VarTrace { Tcl_VarTraceProc *traceProc;/* Procedure to call when operations given * by flags are performed on variable. */ ClientData clientData; /* Argument to pass to proc. */ int flags; /* What events the trace procedure is * interested in: OR-ed combination of * TCL_TRACE_READS, TCL_TRACE_WRITES, and * TCL_TRACE_UNSETS. */ struct VarTrace *nextPtr; /* Next in list of traces associated with * a particular variable. */ } VarTrace; /* * When a variable trace is active (i.e. its associated procedure is * executing), one of the following structures is linked into a list * associated with the variable's interpreter. The information in * the structure is needed in order for Tcl to behave reasonably * if traces are deleted while traces are active. */ typedef struct ActiveVarTrace { struct ActiveVarTrace *nextPtr; /* Next in list of all active variable * traces for the interpreter, or NULL * if no more. */ VarTrace *nextTracePtr; /* Next trace to check after current * trace procedure returns; if this * trace gets deleted, must update pointer * to avoid using free'd memory. */ } ActiveVarTrace; /* * The following structure describes an enumerative search in progress on * an array variable; this are invoked with options to the "array" * command. */ typedef struct ArraySearch { int id; /* Integer id used to distinguish among * multiple concurrent searches for the * same array. */ struct Var *varPtr; /* Pointer to array variable that's being * searched. */ Tcl_HashSearch search; /* Info kept by the hash module about * progress through the array. */ Tcl_HashEntry *nextEntry; /* Non-null means this is the next element * to be enumerated (it's leftover from * the Tcl_FirstHashEntry call or from * an "array anymore" command). NULL * means must call Tcl_NextHashEntry * to get value to return. */ struct ArraySearch *nextPtr;/* Next in list of all active searches * for this variable, or NULL if this is * the last one. */ } ArraySearch; /* * The structure below defines a variable, which associates a string name * with a string value. Pointers to these structures are kept as the * values of hash table entries, and the name of each variable is stored * in the hash entry. */ typedef struct Var { int valueLength; /* Holds the number of non-null bytes * actually occupied by the variable's * current value in value.string (extra * space is sometimes left for expansion). * For array and global variables this is * meaningless. */ int valueSpace; /* Total number of bytes of space allocated * at value. */ int upvarUses; /* Counts number of times variable is * is referenced via global or upvar variables * (i.e. how many variables have "upvarPtr" * pointing to this variable). Variable * can't be deleted until this count reaches * 0. */ VarTrace *tracePtr; /* First in list of all traces set for this * variable. */ ArraySearch *searchPtr; /* First in list of all searches active * for this variable, or NULL if none. */ int flags; /* Miscellaneous bits of information about * variable. See below for definitions. */ union { char string[4]; /* String value of variable. The actual * length of this field is given by the * valueSpace field above. */ Tcl_HashTable *tablePtr;/* For array variables, this points to * information about the hash table used * to implement the associative array. * Points to malloc-ed data. */ Tcl_HashEntry *upvarPtr; /* If this is a global variable being * referred to in a procedure, or a variable * created by "upvar", this field points to * the hash table entry for the higher-level * variable. */ } value; /* MUST BE LAST FIELD IN STRUCTURE!!! */ } Var; /* * Flag bits for variables: * * VAR_ARRAY - 1 means this is an array variable rather * than a scalar variable. * VAR_UPVAR - 1 means this variable just contains a * pointer to another variable that has the * real value. Variables like this come * about through the "upvar" and "global" * commands. * VAR_UNDEFINED - 1 means that the variable is currently * undefined. Undefined variables usually * go away completely, but if an undefined * variable has a trace on it, or if it is * a global variable being used by a procedure, * then it stays around even when undefined. * VAR_ELEMENT_ACTIVE - Used only in array variables; 1 means that * an element of the array is currently being * manipulated in some way, so that it isn't * safe to delete the whole array. * VAR_TRACE_ACTIVE - 1 means that trace processing is currently * underway for a read or write access, so * new read or write accesses should not cause * trace procedures to be called and the * variable can't be deleted. */ #define VAR_ARRAY 1 #define VAR_UPVAR 2 #define VAR_UNDEFINED 4 #define VAR_ELEMENT_ACTIVE 0x10 #define VAR_TRACE_ACTIVE 0x20 #define VAR_SEARCHES_POSSIBLE 0x40 /* *---------------------------------------------------------------- * Data structures related to procedures. These are used primarily * in tclProc.c *---------------------------------------------------------------- */ /* * The structure below defines an argument to a procedure, which * consists of a name and an (optional) default value. */ typedef struct Arg { struct Arg *nextPtr; /* Next argument for this procedure, * or NULL if this is the last argument. */ char *defValue; /* Pointer to arg's default value, or NULL * if no default value. */ char name[4]; /* Name of argument starts here. The name * is followed by space for the default, * if there is one. The actual size of this * field will be as large as necessary to * hold both name and default value. THIS * MUST BE THE LAST FIELD IN THE STRUCTURE!! */ } Arg; /* * The structure below defines a command procedure, which consists of * a collection of Tcl commands plus information about arguments and * variables. */ typedef struct Proc { struct Interp *iPtr; /* Interpreter for which this command * is defined. */ char *command; /* Command that constitutes the body of * the procedure (dynamically allocated). */ Arg *argPtr; /* Pointer to first of procedure's formal * arguments, or NULL if none. */ } Proc; /* * The structure below defines a command trace. This is used to allow Tcl * clients to find out whenever a command is about to be executed. */ typedef struct Trace { int level; /* Only trace commands at nesting level * less than or equal to this. */ Tcl_CmdTraceProc *proc; /* Procedure to call to trace command. */ ClientData clientData; /* Arbitrary value to pass to proc. */ struct Trace *nextPtr; /* Next in list of traces for this interp. */ } Trace; /* * The structure below defines a frame, which is a procedure invocation. * These structures exist only while procedures are being executed, and * provide a sort of call stack. */ typedef struct CallFrame { Tcl_HashTable varTable; /* Hash table containing all of procedure's * local variables. */ int level; /* Level of this procedure, for "uplevel" * purposes (i.e. corresponds to nesting of * callerVarPtr's, not callerPtr's). 1 means * outer-most procedure, 0 means top-level. */ int argc; /* This and argv below describe name and * arguments for this procedure invocation. */ char **argv; /* Array of arguments. */ struct CallFrame *callerPtr; /* Value of interp->framePtr when this * procedure was invoked (i.e. next in * stack of all active procedures). */ struct CallFrame *callerVarPtr; /* Value of interp->varFramePtr when this * procedure was invoked (i.e. determines * variable scoping within caller; same * as callerPtr unless an "uplevel" command * or something equivalent was active in * the caller). */ } CallFrame; /* * The structure below defines one history event (a previously-executed * command that can be re-executed in whole or in part). */ typedef struct { char *command; /* String containing previously-executed * command. */ int bytesAvl; /* Total # of bytes available at *event (not * all are necessarily in use now). */ } HistoryEvent; /* *---------------------------------------------------------------- * Data structures related to history. These are used primarily * in tclHistory.c *---------------------------------------------------------------- */ /* * The structure below defines a pending revision to the most recent * history event. Changes are linked together into a list and applied * during the next call to Tcl_RecordHistory. See the comments at the * beginning of tclHistory.c for information on revisions. */ typedef struct HistoryRev { int firstIndex; /* Index of the first byte to replace in * current history event. */ int lastIndex; /* Index of last byte to replace in * current history event. */ int newSize; /* Number of bytes in newBytes. */ char *newBytes; /* Replacement for the range given by * firstIndex and lastIndex. */ struct HistoryRev *nextPtr; /* Next in chain of revisions to apply, or * NULL for end of list. */ } HistoryRev; /* *---------------------------------------------------------------- * Data structures related to files. These are used primarily in * tclUnixUtil.c and tclUnixAZ.c. *---------------------------------------------------------------- */ /* * The data structure below defines an open file (or connection to * a process pipeline) as returned by the "open" command. */ typedef struct OpenFile { FILE *f; /* Stdio file to use for reading and/or * writing. */ FILE *f2; /* Normally NULL. In the special case of * a command pipeline with pipes for both * input and output, this is a stdio file * to use for writing to the pipeline. */ int readable; /* Non-zero means file may be read. */ int writable; /* Non-zero means file may be written. */ int numPids; /* If this is a connection to a process * pipeline, gives number of processes * in pidPtr array below; otherwise it * is 0. */ int *pidPtr; /* Pointer to malloc-ed array of child * process ids (numPids of them), or NULL * if this isn't a connection to a process * pipeline. */ int errorId; /* File id of file that receives error * output from pipeline. -1 means not * used (i.e. this is a normal file). */ } OpenFile; /* *---------------------------------------------------------------- * This structure defines an interpreter, which is a collection of * commands plus other state information related to interpreting * commands, such as variable storage. Primary responsibility for * this data structure is in tclBasic.c, but almost every Tcl * source file uses something in here. *---------------------------------------------------------------- */ typedef struct Command { Tcl_CmdProc *proc; /* Procedure to process command. */ ClientData clientData; /* Arbitrary value to pass to proc. */ Tcl_CmdDeleteProc *deleteProc; /* Procedure to invoke when deleting * command. */ } Command; #define CMD_SIZE(nameLength) ((unsigned) sizeof(Command) + nameLength - 3) typedef struct Interp { /* * Note: the first three fields must match exactly the fields in * a Tcl_Interp struct (see tcl.h). If you change one, be sure to * change the other. */ char *result; /* Points to result returned by last * command. */ Tcl_FreeProc *freeProc; /* Zero means result is statically allocated. * If non-zero, gives address of procedure * to invoke to free the result. Must be * freed by Tcl_Eval before executing next * command. */ int errorLine; /* When TCL_ERROR is returned, this gives * the line number within the command where * the error occurred (1 means first line). */ Tcl_HashTable commandTable; /* Contains all of the commands currently * registered in this interpreter. Indexed * by strings; values have type (Command *). */ /* * Information related to procedures and variables. See tclProc.c * and tclvar.c for usage. */ Tcl_HashTable globalTable; /* Contains all global variables for * interpreter. */ int numLevels; /* Keeps track of how many nested calls to * Tcl_Eval are in progress for this * interpreter. It's used to delay deletion * of the table until all Tcl_Eval invocations * are completed. */ CallFrame *framePtr; /* Points to top-most in stack of all nested * procedure invocations. NULL means there * are no active procedures. */ CallFrame *varFramePtr; /* Points to the call frame whose variables * are currently in use (same as framePtr * unless an "uplevel" command is being * executed). NULL means no procedure is * active or "uplevel 0" is being exec'ed. */ ActiveVarTrace *activeTracePtr; /* First in list of active traces for interp, * or NULL if no active traces. */ /* * Information related to history: */ int numEvents; /* Number of previously-executed commands * to retain. */ HistoryEvent *events; /* Array containing numEvents entries * (dynamically allocated). */ int curEvent; /* Index into events of place where current * (or most recent) command is recorded. */ int curEventNum; /* Event number associated with the slot * given by curEvent. */ HistoryRev *revPtr; /* First in list of pending revisions. */ char *historyFirst; /* First char. of current command executed * from history module or NULL if none. */ int revDisables; /* 0 means history revision OK; > 0 gives * a count of number of times revision has * been disabled. */ char *evalFirst; /* If TCL_RECORD_BOUNDS flag set, Tcl_Eval * sets this field to point to the first * char. of text from which the current * command came. Otherwise Tcl_Eval sets * this to NULL. */ char *evalLast; /* Similar to evalFirst, except points to * last character of current command. */ /* * Information used by Tcl_AppendResult to keep track of partial * results. See Tcl_AppendResult code for details. */ char *appendResult; /* Storage space for results generated * by Tcl_AppendResult. Malloc-ed. NULL * means not yet allocated. */ int appendAvl; /* Total amount of space available at * partialResult. */ int appendUsed; /* Number of non-null bytes currently * stored at partialResult. */ /* * Information related to files. See tclUnixAZ.c and tclUnixUtil.c * for details. */ int numFiles; /* Number of entries in filePtrArray * below. 0 means array hasn't been * created yet. */ OpenFile **filePtrArray; /* Pointer to malloc-ed array of pointers * to information about open files. Entry * N corresponds to the file with fileno N. * If an entry is NULL then the corresponding * file isn't open. If filePtrArray is NULL * it means no files have been used, so even * stdin/stdout/stderr entries haven't been * setup yet. */ /* * A cache of compiled regular expressions. See TclCompileRegexp * in tclUtil.c for details. */ #define NUM_REGEXPS 5 char *patterns[NUM_REGEXPS];/* Strings corresponding to compiled * regular expression patterns. NULL * means that this slot isn't used. * Malloc-ed. */ int patLengths[NUM_REGEXPS];/* Number of non-null characters in * corresponding entry in patterns. * -1 means entry isn't used. */ regexp *regexps[NUM_REGEXPS]; /* Compiled forms of above strings. Also * malloc-ed, or NULL if not in use yet. */ /* * Miscellaneous information: */ int cmdCount; /* Total number of times a command procedure * has been called for this interpreter. */ int noEval; /* Non-zero means no commands should actually * be executed: just parse only. Used in * expressions when the result is already * determined. */ char *scriptFile; /* NULL means there is no nested source * command active; otherwise this points to * the name of the file being sourced (it's * not malloc-ed: it points to an argument * to Tcl_EvalFile. */ int flags; /* Various flag bits. See below. */ Trace *tracePtr; /* List of traces for this interpreter. */ char resultSpace[TCL_RESULT_SIZE+1]; /* Static space for storing small results. */ } Interp; /* * Flag bits for Interp structures: * * DELETED: Non-zero means the interpreter has been deleted: * don't process any more commands for it, and destroy * the structure as soon as all nested invocations of * Tcl_Eval are done. * ERR_IN_PROGRESS: Non-zero means an error unwind is already in progress. * Zero means a command proc has been invoked since last * error occured. * ERR_ALREADY_LOGGED: Non-zero means information has already been logged * in $errorInfo for the current Tcl_Eval instance, * so Tcl_Eval needn't log it (used to implement the * "error message log" command). * ERROR_CODE_SET: Non-zero means that Tcl_SetErrorCode has been * called to record information for the current * error. Zero means Tcl_Eval must clear the * errorCode variable if an error is returned. */ #define DELETED 1 #define ERR_IN_PROGRESS 2 #define ERR_ALREADY_LOGGED 4 #define ERROR_CODE_SET 8 /* *---------------------------------------------------------------- * Data structures related to command parsing. These are used in * tclParse.c and its clients. *---------------------------------------------------------------- */ /* * The following data structure is used by various parsing procedures * to hold information about where to store the results of parsing * (e.g. the substituted contents of a quoted argument, or the result * of a nested command). At any given time, the space available * for output is fixed, but a procedure may be called to expand the * space available if the current space runs out. */ typedef struct ParseValue { char *buffer; /* Address of first character in * output buffer. */ char *next; /* Place to store next character in * output buffer. */ char *end; /* Address of the last usable character * in the buffer. */ void (*expandProc) _ANSI_ARGS_((struct ParseValue *pvPtr, int needed)); /* Procedure to call when space runs out; * it will make more space. */ ClientData clientData; /* Arbitrary information for use of * expandProc. */ } ParseValue; /* * A table used to classify input characters to assist in parsing * Tcl commands. The table should be indexed with a signed character * using the CHAR_TYPE macro. The character may have a negative * value. */ extern char tclTypeTable[]; #define CHAR_TYPE(c) (tclTypeTable+128)[c] /* * Possible values returned by CHAR_TYPE: * * TCL_NORMAL - All characters that don't have special significance * to the Tcl language. * TCL_SPACE - Character is space, tab, or return. * TCL_COMMAND_END - Character is newline or null or semicolon or * close-bracket. * TCL_QUOTE - Character is a double-quote. * TCL_OPEN_BRACKET - Character is a "[". * TCL_OPEN_BRACE - Character is a "{". * TCL_CLOSE_BRACE - Character is a "}". * TCL_BACKSLASH - Character is a "\". * TCL_DOLLAR - Character is a "$". */ #define TCL_NORMAL 0 #define TCL_SPACE 1 #define TCL_COMMAND_END 2 #define TCL_QUOTE 3 #define TCL_OPEN_BRACKET 4 #define TCL_OPEN_BRACE 5 #define TCL_CLOSE_BRACE 6 #define TCL_BACKSLASH 7 #define TCL_DOLLAR 8 /* * Additional flags passed to Tcl_Eval. See tcl.h for other flags to * Tcl_Eval; these ones are only used internally by Tcl. * * TCL_RECORD_BOUNDS Tells Tcl_Eval to record information in the * evalFirst and evalLast fields for each command * executed directly from the string (top-level * commands and those from command substitution). */ #define TCL_RECORD_BOUNDS 0x100 /* * Maximum number of levels of nesting permitted in Tcl commands. */ #define MAX_NESTING_DEPTH 100 /* * Variables shared among Tcl modules but not used by the outside * world: */ extern char * tclRegexpError; /* *---------------------------------------------------------------- * Procedures shared among Tcl modules but not used by the outside * world: *---------------------------------------------------------------- */ extern void panic(); extern regexp * TclCompileRegexp _ANSI_ARGS_((Tcl_Interp *interp, char *string)); extern void TclCopyAndCollapse _ANSI_ARGS_((int count, char *src, char *dst)); extern void TclDeleteVars _ANSI_ARGS_((Interp *iPtr, Tcl_HashTable *tablePtr)); extern void TclExpandParseValue _ANSI_ARGS_((ParseValue *pvPtr, int needed)); extern int TclFindElement _ANSI_ARGS_((Tcl_Interp *interp, char *list, char **elementPtr, char **nextPtr, int *sizePtr, int *bracePtr)); extern Proc * TclFindProc _ANSI_ARGS_((Interp *iPtr, char *procName)); extern int TclGetFrame _ANSI_ARGS_((Tcl_Interp *interp, char *string, CallFrame **framePtrPtr)); extern int TclGetListIndex _ANSI_ARGS_((Tcl_Interp *interp, char *string, int *indexPtr)); extern int TclGetOpenFile _ANSI_ARGS_((Tcl_Interp *interp, char *string, OpenFile **filePtrPtr)); extern Proc * TclIsProc _ANSI_ARGS_((Command *cmdPtr)); extern void TclMakeFileTable _ANSI_ARGS_((Interp *iPtr, int index)); extern int TclParseBraces _ANSI_ARGS_((Tcl_Interp *interp, char *string, char **termPtr, ParseValue *pvPtr)); extern int TclParseNestedCmd _ANSI_ARGS_((Tcl_Interp *interp, char *string, int flags, char **termPtr, ParseValue *pvPtr)); extern int TclParseQuotes _ANSI_ARGS_((Tcl_Interp *interp, char *string, int termChar, int flags, char **termPtr, ParseValue *pvPtr)); extern int TclParseWords _ANSI_ARGS_((Tcl_Interp *interp, char *string, int flags, int maxWords, char **termPtr, int *argcPtr, char **argv, ParseValue *pvPtr)); extern void TclSetupEnv _ANSI_ARGS_((Tcl_Interp *interp)); extern char * TclWordEnd _ANSI_ARGS_((char *start, int nested)); /* *---------------------------------------------------------------- * Command procedures in the generic core: *---------------------------------------------------------------- */ extern int Tcl_AppendCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_ArrayCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_BreakCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_CaseCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_CatchCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_ConcatCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_ContinueCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_ErrorCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_EvalCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_ExprCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_ForCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_ForeachCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_FormatCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_GlobalCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_HistoryCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_IfCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_IncrCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_InfoCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_JoinCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_LappendCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_LindexCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_LinsertCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_LlengthCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_ListCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_LrangeCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_LreplaceCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_LsearchCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_LsortCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_ProcCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_RegexpCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_RegsubCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_RenameCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_ReturnCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_ScanCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_SetCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_SplitCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_StringCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_TraceCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_UnsetCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_UplevelCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_UpvarCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_WhileCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_Cmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_Cmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); /* *---------------------------------------------------------------- * Command procedures in the UNIX core: *---------------------------------------------------------------- */ extern int Tcl_CdCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_CloseCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_EofCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_ExecCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_ExitCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_FileCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_FlushCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_GetsCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_GlobCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_OpenCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_PutsCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_PwdCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_ReadCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_SeekCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_SourceCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_TellCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcl_TimeCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); #endif /* _TCLINT */ micropolis-activity/src/tcl/porting.txt0000664000076400007640000001275010724145723020634 0ustar simcitysimcityThis file contains a collection of notes that various people have provided about porting Tcl to various machines and operating systems. I don't have personal access to any of these machines, so I make no guarantees that the notes are correct, complete, or up-to-date. In some cases, a person has volunteered to act as a contact point for questions about porting Tcl to a particular machine; in these cases the person's name and e-mail address are listed. --------------------------------------------- Cray machines running UNICOS: Contact: John Freeman (jlf@cray.com) --------------------------------------------- 1. The nm command on unicos doesn't have a -p option, so I removed it from the config script without apparent harm. diff -c -r1.1 config *** 1.1 1991/11/12 15:11:51 --- config 1991/11/12 15:14:18 *************** *** 57,63 **** echo " to set the libc variable." exit(1) endif ! nm -p $libc > tmp.libc if ( $status != 0 ) then echo "- ERROR\!\! Nm failed to extract names of system-supplied library" echo " procedures from $libc. You'll have to modify config by hand to" --- 57,63 ---- echo " to set the libc variable." exit(1) endif ! nm $libc > tmp.libc if ( $status != 0 ) then echo "- ERROR\!\! Nm failed to extract names of system-supplied library" echo " procedures from $libc. You'll have to modify config by hand to" 2. There is an error in the strstr function in UNICOS such that if the string to be searched is empty (""), the search will continue past the end of the string. Because of this, the history substitution loop will sometimes run past the end of its target string and trash malloc's free list, resulting in a core dump some time later. (As you can probably guess, this took a while to diagnose.) I've submitted a problem report to the C library maintainers, but in the meantime here is a workaround. ----------------------------------------------------------------- diff -c1 -r1.1 tclHistory.c *** 1.1 1991/11/12 16:01:58 --- tclHistory.c 1991/11/12 16:14:22 *************** *** 23,24 **** --- 23,29 ---- #include "tclInt.h" + + #ifdef _CRAY + /* There is a bug in strstr in UNICOS; this works around it. */ + #define strstr(s1,s2) ((s1)?(*(s1)?strstr((s1),(s2)):0):0) + #endif _CRAY --------------------------------------------- HP-UX systems: --------------------------------------------- 1. The #define for TCL_UNION_WAIT in tclUnix.h needs to be set to 0, not 1. I've tried a number of techniques to get the "config" script to figure this out and set it correctly, but so far I haven't been able to make it work for HP-UX systems. 2. It may also be useful to add the flag "-D_BSD" to CFLAGS in the Makefile, but I'm not sure this is necessary (and it may even be evil) if TCL_UNION_WAIT has been #define'd correctly. --------------------------------------------- MIPS systems runing EP/IX: --------------------------------------------- 1. Need to add a line "#include " in tclUnix.h. 2. Need to add "-lbsd" into the line that makes tclTest: ${CC} ${CFLAGS} tclTest.o libtcl.a -lbsd -o tclTest --------------------------------------------- IBM RS/6000 systems running AIX: --------------------------------------------- 1. The system version of strtoul is buggy, at least under some versions of AIX. If the expression tests fail, try forcing Tcl to use its own version of strtoul instead of the system version. To do this, first copy strtoul.c from the compat subdirectory up to the main Tcl directory. Then modify the Makefile so that the definition for COMPAT_OBJS includes "strtoul.o". Note: the "config" script should now detect the buggy strtoul and substitute Tcl's version automatically. 2. You may have to comment out the declaration of open in tclUnix.h. 3. The "nm -p ..." line in the file "config" has to be changed to "nm -en ..." if you use the version of nm that's in /bin. If you're set up to use the BSD version (in /usr/ucb) then this won't be a problem. --------------------------------------------- AT&T 4.03 OS: --------------------------------------------- Machine: i386/33Mhz i387 32k Cache 16MByte OS: AT&T SYSV Release 4 Version 3 X: X11R5 fixlevel 9 Xserver: X386 1.2 1. Change the Tk Makefile as follows: XLIB = -lX11 should be changed to: XLIB = -lX11 -lsocket -lnsl 2. Change the Tcl "config" script as follows: set libc="/lib/libc.a" should be changed to: set libc="/usr/ccs/lib/libc.a" ------------------------------------------------------- Motorola MPC's running UNIX System V/88 Release R32V2: ------------------------------------------------------- 1. Tcl should build without any modifications to sources, but csh isn't supplied with the operating system so you'll have to find and use the public-domain tcsh. ------------------------------------------------------- SGI machines running Irix release 4.0.1 or earlier: ------------------------------------------------------- 1. There's a bug in the optimizer; compile tclVar.c using -O0. 2. In tclUnix.h, add the following just before the declaration of environ: #ifdef __sgi #define environ _environ #endif --------------------------------------------- NeXT machines running NeXTStep 2.1: --------------------------------------------- 1. Change the "libc" definition in the config file to set libc="/lib/libsys_s.a" 2. Several of the "format" and "scan" tests will fail, but these are all minor nits stemming from imperfect POSIX compliance in the NeXT C library procedures. The errors are unlikely to affect any Tcl applications. micropolis-activity/src/tcl/tclcmdil.c0000664000076400007640000007162610724145723020357 0ustar simcitysimcity/* * tclCmdIL.c -- * * This file contains the top-level command routines for most of * the Tcl built-in commands whose names begin with the letters * I through L. It contains only commands in the generic core * (i.e. those that don't depend much upon UNIX facilities). * * Copyright 1987-1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/tcl/RCS/tclCmdIL.c,v 1.84 91/12/06 10:42:36 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tclint.h" /* * Global absolute file name: */ char *TCL_Library = TCL_LIBRARY; /* * Forward declarations for procedures defined in this file: */ static int SortCompareProc _ANSI_ARGS_((CONST VOID *first, CONST VOID *second)); /* *---------------------------------------------------------------------- * * Tcl_IfCmd -- * * This procedure is invoked to process the "if" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_IfCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { char *condition, *ifPart, *elsePart, *cmd, *name; char *clause; int result, value; name = argv[0]; if (argc < 3) { ifSyntax: Tcl_AppendResult(interp, "wrong # args: should be \"", name, " bool ?then? command ?else? ?command?\"", (char *) NULL); return TCL_ERROR; } condition = argv[1]; argc -= 2; argv += 2; if ((**argv == 't') && (strncmp(*argv, "then", strlen(*argv)) == 0)) { argc--; argv++; } if (argc < 1) { goto ifSyntax; } ifPart = *argv; argv++; argc--; if (argc == 0) { elsePart = ""; } else { if ((**argv == 'e') && (strncmp(*argv, "else", strlen(*argv)) == 0)) { argc--; argv++; } if (argc != 1) { goto ifSyntax; } elsePart = *argv; } cmd = ifPart; clause = "\"then\" clause"; result = Tcl_ExprBoolean(interp, condition, &value); if (result != TCL_OK) { if (result == TCL_ERROR) { char msg[60]; sprintf(msg, "\n (\"if\" test line %d)", interp->errorLine); Tcl_AddErrorInfo(interp, msg); } return result; } if (value == 0) { cmd = elsePart; clause = "\"else\" clause"; } if (*cmd == 0) { return TCL_OK; } result = Tcl_Eval(interp, cmd, 0, (char **) NULL); if (result == TCL_ERROR) { char msg[60]; sprintf(msg, "\n (%s line %d)", clause, interp->errorLine); Tcl_AddErrorInfo(interp, msg); } return result; } /* *---------------------------------------------------------------------- * * Tcl_IncrCmd -- * * This procedure is invoked to process the "incr" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_IncrCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int value; char *oldString, *result; char newString[30]; if ((argc != 2) && (argc != 3)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " varName ?increment?\"", (char *) NULL); return TCL_ERROR; } oldString = Tcl_GetVar(interp, argv[1], TCL_LEAVE_ERR_MSG); if (oldString == NULL) { return TCL_ERROR; } if (Tcl_GetInt(interp, oldString, &value) != TCL_OK) { Tcl_AddErrorInfo(interp, "\n (reading value of variable to increment)"); return TCL_ERROR; } if (argc == 2) { value += 1; } else { int increment; if (Tcl_GetInt(interp, argv[2], &increment) != TCL_OK) { Tcl_AddErrorInfo(interp, "\n (reading increment)"); return TCL_ERROR; } value += increment; } sprintf(newString, "%d", value); result = Tcl_SetVar(interp, argv[1], newString, TCL_LEAVE_ERR_MSG); if (result == NULL) { return TCL_ERROR; } interp->result = result; return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_InfoCmd -- * * This procedure is invoked to process the "info" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_InfoCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { register Interp *iPtr = (Interp *) interp; int length; char c; Arg *argPtr; Proc *procPtr; Var *varPtr; Command *cmdPtr; Tcl_HashEntry *hPtr; Tcl_HashSearch search; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " option ?arg arg ...?\"", (char *) NULL); return TCL_ERROR; } c = argv[1][0]; length = strlen(argv[1]); if ((c == 'a') && (strncmp(argv[1], "args", length)) == 0) { if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " args procname\"", (char *) NULL); return TCL_ERROR; } procPtr = TclFindProc(iPtr, argv[2]); if (procPtr == NULL) { infoNoSuchProc: Tcl_AppendResult(interp, "\"", argv[2], "\" isn't a procedure", (char *) NULL); return TCL_ERROR; } for (argPtr = procPtr->argPtr; argPtr != NULL; argPtr = argPtr->nextPtr) { Tcl_AppendElement(interp, argPtr->name, 0); } return TCL_OK; } else if ((c == 'b') && (strncmp(argv[1], "body", length)) == 0) { if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " body procname\"", (char *) NULL); return TCL_ERROR; } procPtr = TclFindProc(iPtr, argv[2]); if (procPtr == NULL) { goto infoNoSuchProc; } iPtr->result = procPtr->command; return TCL_OK; } else if ((c == 'c') && (strncmp(argv[1], "cmdcount", length) == 0) && (length >= 2)) { if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " cmdcount\"", (char *) NULL); return TCL_ERROR; } sprintf(iPtr->result, "%d", iPtr->cmdCount); return TCL_OK; } else if ((c == 'c') && (strncmp(argv[1], "commands", length) == 0) && (length >= 2)){ if (argc > 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " commands [pattern]\"", (char *) NULL); return TCL_ERROR; } for (hPtr = Tcl_FirstHashEntry(&iPtr->commandTable, &search); hPtr != NULL; hPtr = Tcl_NextHashEntry(&search)) { char *name = Tcl_GetHashKey(&iPtr->commandTable, hPtr); if ((argc == 3) && !Tcl_StringMatch(name, argv[2])) { continue; } Tcl_AppendElement(interp, name, 0); } return TCL_OK; } else if ((c == 'd') && (strncmp(argv[1], "default", length)) == 0) { if (argc != 5) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " default procname arg varname\"", (char *) NULL); return TCL_ERROR; } procPtr = TclFindProc(iPtr, argv[2]); if (procPtr == NULL) { goto infoNoSuchProc; } for (argPtr = procPtr->argPtr; ; argPtr = argPtr->nextPtr) { if (argPtr == NULL) { Tcl_AppendResult(interp, "procedure \"", argv[2], "\" doesn't have an argument \"", argv[3], "\"", (char *) NULL); return TCL_ERROR; } if (strcmp(argv[3], argPtr->name) == 0) { if (argPtr->defValue != NULL) { if (Tcl_SetVar((Tcl_Interp *) iPtr, argv[4], argPtr->defValue, 0) == NULL) { defStoreError: Tcl_AppendResult(interp, "couldn't store default value in variable \"", argv[4], "\"", (char *) NULL); return TCL_ERROR; } iPtr->result = "1"; } else { if (Tcl_SetVar((Tcl_Interp *) iPtr, argv[4], "", 0) == NULL) { goto defStoreError; } iPtr->result = "0"; } return TCL_OK; } } } else if ((c == 'e') && (strncmp(argv[1], "exists", length) == 0)) { char *p; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " exists varName\"", (char *) NULL); return TCL_ERROR; } p = Tcl_GetVar((Tcl_Interp *) iPtr, argv[2], 0); /* * The code below handles the special case where the name is for * an array: Tcl_GetVar will reject this since you can't read * an array variable without an index. */ if (p == NULL) { Tcl_HashEntry *hPtr; Var *varPtr; if (strchr(argv[2], '(') != NULL) { noVar: iPtr->result = "0"; return TCL_OK; } if (iPtr->varFramePtr == NULL) { hPtr = Tcl_FindHashEntry(&iPtr->globalTable, argv[2]); } else { hPtr = Tcl_FindHashEntry(&iPtr->varFramePtr->varTable, argv[2]); } if (hPtr == NULL) { goto noVar; } varPtr = (Var *) Tcl_GetHashValue(hPtr); if (varPtr->flags & VAR_UPVAR) { varPtr = (Var *) Tcl_GetHashValue(varPtr->value.upvarPtr); } if (!(varPtr->flags & VAR_ARRAY)) { goto noVar; } } iPtr->result = "1"; return TCL_OK; } else if ((c == 'g') && (strncmp(argv[1], "globals", length) == 0)) { char *name; if (argc > 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " globals [pattern]\"", (char *) NULL); return TCL_ERROR; } for (hPtr = Tcl_FirstHashEntry(&iPtr->globalTable, &search); hPtr != NULL; hPtr = Tcl_NextHashEntry(&search)) { varPtr = (Var *) Tcl_GetHashValue(hPtr); if (varPtr->flags & VAR_UNDEFINED) { continue; } name = Tcl_GetHashKey(&iPtr->globalTable, hPtr); if ((argc == 3) && !Tcl_StringMatch(name, argv[2])) { continue; } Tcl_AppendElement(interp, name, 0); } return TCL_OK; } else if ((c == 'l') && (strncmp(argv[1], "level", length) == 0) && (length >= 2)) { if (argc == 2) { if (iPtr->varFramePtr == NULL) { iPtr->result = "0"; } else { sprintf(iPtr->result, "%d", iPtr->varFramePtr->level); } return TCL_OK; } else if (argc == 3) { int level; CallFrame *framePtr; if (Tcl_GetInt(interp, argv[2], &level) != TCL_OK) { return TCL_ERROR; } if (level <= 0) { if (iPtr->varFramePtr == NULL) { levelError: Tcl_AppendResult(interp, "bad level \"", argv[2], "\"", (char *) NULL); return TCL_ERROR; } level += iPtr->varFramePtr->level; } for (framePtr = iPtr->varFramePtr; framePtr != NULL; framePtr = framePtr->callerVarPtr) { if (framePtr->level == level) { break; } } if (framePtr == NULL) { goto levelError; } iPtr->result = Tcl_Merge(framePtr->argc, framePtr->argv); iPtr->freeProc = (Tcl_FreeProc *) free; return TCL_OK; } Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " level [number]\"", (char *) NULL); return TCL_ERROR; } else if ((c == 'l') && (strncmp(argv[1], "library", length) == 0) && (length >= 2)) { if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " library\"", (char *) NULL); return TCL_ERROR; } #ifdef TCL_LIBRARY interp->result = TCL_Library; return TCL_OK; #else interp->result = "there is no Tcl library at this installation"; return TCL_ERROR; #endif } else if ((c == 'l') && (strncmp(argv[1], "locals", length) == 0) && (length >= 2)) { char *name; if (argc > 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " locals [pattern]\"", (char *) NULL); return TCL_ERROR; } if (iPtr->varFramePtr == NULL) { return TCL_OK; } for (hPtr = Tcl_FirstHashEntry(&iPtr->varFramePtr->varTable, &search); hPtr != NULL; hPtr = Tcl_NextHashEntry(&search)) { varPtr = (Var *) Tcl_GetHashValue(hPtr); if (varPtr->flags & (VAR_UNDEFINED|VAR_UPVAR)) { continue; } name = Tcl_GetHashKey(&iPtr->varFramePtr->varTable, hPtr); if ((argc == 3) && !Tcl_StringMatch(name, argv[2])) { continue; } Tcl_AppendElement(interp, name, 0); } return TCL_OK; } else if ((c == 'p') && (strncmp(argv[1], "procs", length)) == 0) { if (argc > 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " procs [pattern]\"", (char *) NULL); return TCL_ERROR; } for (hPtr = Tcl_FirstHashEntry(&iPtr->commandTable, &search); hPtr != NULL; hPtr = Tcl_NextHashEntry(&search)) { char *name = Tcl_GetHashKey(&iPtr->commandTable, hPtr); cmdPtr = (Command *) Tcl_GetHashValue(hPtr); if (!TclIsProc(cmdPtr)) { continue; } if ((argc == 3) && !Tcl_StringMatch(name, argv[2])) { continue; } Tcl_AppendElement(interp, name, 0); } return TCL_OK; } else if ((c == 's') && (strncmp(argv[1], "script", length) == 0)) { if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " script\"", (char *) NULL); return TCL_ERROR; } if (iPtr->scriptFile != NULL) { interp->result = iPtr->scriptFile; } return TCL_OK; } else if ((c == 't') && (strncmp(argv[1], "tclversion", length) == 0)) { if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " tclversion\"", (char *) NULL); return TCL_ERROR; } /* * Note: TCL_VERSION below is expected to be set with a "-D" * switch in the Makefile. */ strcpy(iPtr->result, TCL_VERSION); return TCL_OK; } else if ((c == 'v') && (strncmp(argv[1], "vars", length)) == 0) { Tcl_HashTable *tablePtr; char *name; if (argc > 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " vars [pattern]\"", (char *) NULL); return TCL_ERROR; } if (iPtr->varFramePtr == NULL) { tablePtr = &iPtr->globalTable; } else { tablePtr = &iPtr->varFramePtr->varTable; } for (hPtr = Tcl_FirstHashEntry(tablePtr, &search); hPtr != NULL; hPtr = Tcl_NextHashEntry(&search)) { varPtr = (Var *) Tcl_GetHashValue(hPtr); if (varPtr->flags & VAR_UNDEFINED) { continue; } name = Tcl_GetHashKey(tablePtr, hPtr); if ((argc == 3) && !Tcl_StringMatch(name, argv[2])) { continue; } Tcl_AppendElement(interp, name, 0); } return TCL_OK; } else { Tcl_AppendResult(interp, "bad option \"", argv[1], "\": should be args, body, commands, cmdcount, default, ", "exists, globals, level, library, locals, procs, ", "script, tclversion, or vars", (char *) NULL); return TCL_ERROR; } } /* *---------------------------------------------------------------------- * * Tcl_JoinCmd -- * * This procedure is invoked to process the "join" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_JoinCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { char *joinString; char **listArgv; int listArgc, i; if (argc == 2) { joinString = " "; } else if (argc == 3) { joinString = argv[2]; } else { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " list ?joinString?\"", (char *) NULL); return TCL_ERROR; } if (Tcl_SplitList(interp, argv[1], &listArgc, &listArgv) != TCL_OK) { return TCL_ERROR; } for (i = 0; i < listArgc; i++) { if (i == 0) { Tcl_AppendResult(interp, listArgv[0], (char *) NULL); } else { Tcl_AppendResult(interp, joinString, listArgv[i], (char *) NULL); } } ckfree((char *) listArgv); return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_LindexCmd -- * * This procedure is invoked to process the "lindex" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_LindexCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { char *p, *element; int index, size, parenthesized, result; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " list index\"", (char *) NULL); return TCL_ERROR; } if (Tcl_GetInt(interp, argv[2], &index) != TCL_OK) { return TCL_ERROR; } if (index < 0) { return TCL_OK; } for (p = argv[1] ; index >= 0; index--) { result = TclFindElement(interp, p, &element, &p, &size, &parenthesized); if (result != TCL_OK) { return result; } } if (size == 0) { return TCL_OK; } if (size >= TCL_RESULT_SIZE) { interp->result = (char *) ckalloc((unsigned) size+1); interp->freeProc = (Tcl_FreeProc *) free; } if (parenthesized) { memcpy((VOID *) interp->result, (VOID *) element, size); interp->result[size] = 0; } else { TclCopyAndCollapse(size, element, interp->result); } return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_LinsertCmd -- * * This procedure is invoked to process the "linsert" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_LinsertCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { char *p, *element, savedChar; int i, index, count, result, size; if (argc < 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " list index element ?element ...?\"", (char *) NULL); return TCL_ERROR; } if (Tcl_GetInt(interp, argv[2], &index) != TCL_OK) { return TCL_ERROR; } /* * Skip over the first "index" elements of the list, then add * all of those elements to the result. */ size = 0; element = argv[1]; for (count = 0, p = argv[1]; (count < index) && (*p != 0); count++) { result = TclFindElement(interp, p, &element, &p, &size, (int *) NULL); if (result != TCL_OK) { return result; } } if (*p == 0) { Tcl_AppendResult(interp, argv[1], (char *) NULL); } else { char *end; end = element+size; if (element != argv[1]) { while ((*end != 0) && !isspace(*end)) { end++; } } savedChar = *end; *end = 0; Tcl_AppendResult(interp, argv[1], (char *) NULL); *end = savedChar; } /* * Add the new list elements. */ for (i = 3; i < argc; i++) { Tcl_AppendElement(interp, argv[i], 0); } /* * Append the remainder of the original list. */ if (*p != 0) { Tcl_AppendResult(interp, " ", p, (char *) NULL); } return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_ListCmd -- * * This procedure is invoked to process the "list" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_ListCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " arg ?arg ...?\"", (char *) NULL); return TCL_ERROR; } interp->result = Tcl_Merge(argc-1, argv+1); interp->freeProc = (Tcl_FreeProc *) free; return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_LlengthCmd -- * * This procedure is invoked to process the "llength" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_LlengthCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int count, result; char *element, *p; if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " list\"", (char *) NULL); return TCL_ERROR; } for (count = 0, p = argv[1]; *p != 0 ; count++) { result = TclFindElement(interp, p, &element, &p, (int *) NULL, (int *) NULL); if (result != TCL_OK) { return result; } if (*element == 0) { break; } } sprintf(interp->result, "%d", count); return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_LrangeCmd -- * * This procedure is invoked to process the "lrange" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_LrangeCmd(notUsed, interp, argc, argv) ClientData notUsed; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int first, last, result; char *begin, *end, c, *dummy; int count; if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " list first last\"", (char *) NULL); return TCL_ERROR; } if (Tcl_GetInt(interp, argv[2], &first) != TCL_OK) { return TCL_ERROR; } if (first < 0) { first = 0; } if ((*argv[3] == 'e') && (strncmp(argv[3], "end", strlen(argv[3])) == 0)) { last = 1000000; } else { if (Tcl_GetInt(interp, argv[3], &last) != TCL_OK) { Tcl_ResetResult(interp); Tcl_AppendResult(interp, "expected integer or \"end\" but got \"", argv[3], "\"", (char *) NULL); return TCL_ERROR; } } if (first > last) { return TCL_OK; } /* * Extract a range of fields. */ for (count = 0, begin = argv[1]; count < first; count++) { result = TclFindElement(interp, begin, &dummy, &begin, (int *) NULL, (int *) NULL); if (result != TCL_OK) { return result; } if (*begin == 0) { break; } } for (count = first, end = begin; (count <= last) && (*end != 0); count++) { result = TclFindElement(interp, end, &dummy, &end, (int *) NULL, (int *) NULL); if (result != TCL_OK) { return result; } } /* * Chop off trailing spaces. */ while (isspace(end[-1])) { end--; } c = *end; *end = 0; Tcl_SetResult(interp, begin, TCL_VOLATILE); *end = c; return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_LreplaceCmd -- * * This procedure is invoked to process the "lreplace" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_LreplaceCmd(notUsed, interp, argc, argv) ClientData notUsed; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { char *p1, *p2, *element, savedChar, *dummy; int i, first, last, count, result, size; if (argc < 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " list first last ?element element ...?\"", (char *) NULL); return TCL_ERROR; } if (Tcl_GetInt(interp, argv[2], &first) != TCL_OK) { return TCL_ERROR; } if (TclGetListIndex(interp, argv[3], &last) != TCL_OK) { return TCL_ERROR; } if (first < 0) { first = 0; } if (last < 0) { last = 0; } if (first > last) { Tcl_AppendResult(interp, "first index must not be greater than second", (char *) NULL); return TCL_ERROR; } /* * Skip over the elements of the list before "first". */ size = 0; element = argv[1]; for (count = 0, p1 = argv[1]; (count < first) && (*p1 != 0); count++) { result = TclFindElement(interp, p1, &element, &p1, &size, (int *) NULL); if (result != TCL_OK) { return result; } } if (*p1 == 0) { Tcl_AppendResult(interp, "list doesn't contain element ", argv[2], (char *) NULL); return TCL_ERROR; } /* * Skip over the elements of the list up through "last". */ for (p2 = p1 ; (count <= last) && (*p2 != 0); count++) { result = TclFindElement(interp, p2, &dummy, &p2, (int *) NULL, (int *) NULL); if (result != TCL_OK) { return result; } } /* * Add the elements before "first" to the result. Be sure to * include quote or brace characters that might terminate the * last of these elements. */ p1 = element+size; if (element != argv[1]) { while ((*p1 != 0) && !isspace(*p1)) { p1++; } } savedChar = *p1; *p1 = 0; Tcl_AppendResult(interp, argv[1], (char *) NULL); *p1 = savedChar; /* * Add the new list elements. */ for (i = 4; i < argc; i++) { Tcl_AppendElement(interp, argv[i], 0); } /* * Append the remainder of the original list. */ if (*p2 != 0) { if (*interp->result == 0) { Tcl_SetResult(interp, p2, TCL_VOLATILE); } else { Tcl_AppendResult(interp, " ", p2, (char *) NULL); } } return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_LsearchCmd -- * * This procedure is invoked to process the "lsearch" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_LsearchCmd(notUsed, interp, argc, argv) ClientData notUsed; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int listArgc; char **listArgv; int i, match; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " list pattern\"", (char *) NULL); return TCL_ERROR; } if (Tcl_SplitList(interp, argv[1], &listArgc, &listArgv) != TCL_OK) { return TCL_ERROR; } match = -1; for (i = 0; i < listArgc; i++) { if (Tcl_StringMatch(listArgv[i], argv[2])) { match = i; break; } } sprintf(interp->result, "%d", match); ckfree((char *) listArgv); return TCL_OK; } /* *---------------------------------------------------------------------- * * Tcl_LsortCmd -- * * This procedure is invoked to process the "lsort" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tcl_LsortCmd(notUsed, interp, argc, argv) ClientData notUsed; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int listArgc; char **listArgv; if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " list\"", (char *) NULL); return TCL_ERROR; } if (Tcl_SplitList(interp, argv[1], &listArgc, &listArgv) != TCL_OK) { return TCL_ERROR; } qsort((VOID *) listArgv, listArgc, sizeof (char *), SortCompareProc); interp->result = Tcl_Merge(listArgc, listArgv); interp->freeProc = (Tcl_FreeProc *) free; ckfree((char *) listArgv); return TCL_OK; } /* * The procedure below is called back by qsort to determine * the proper ordering between two elements. */ static int SortCompareProc(first, second) CONST VOID *first, *second; /* Elements to be compared. */ { return strcmp(*((char **) first), *((char **) second)); } micropolis-activity/src/ASSETS.txt0000664000076400007640000002750610724145723017377 0ustar simcitysimcityMicropolis Assets: This is a list of required and optional assets for Micropolis. As noted, some of them are for the current TCL/Tk based version of Micropolis that we want to get out right away. Others are for the more advanced Python version that we're developing after releasing the TCL/Tk version. The TCL/Tk version currently works ok with its current assets, and these are just suggestions that would improve it but are not necessary. The Python version is not yet fully designed or implemented, and it will be more open-ended and powerful, so this is just a rough estimate of the assets it will need. User Interface Graphics and Icons These aren't all necessary, but it would be nice to have some of them to make the interface look nicer, more graphical, and kid friendly. The style should be international, kid oriented, big, bright, saturated, simple. Icons should look good and be readable when shown in desaturated gray scale on the OLPC's monochrome screen in low power reflective mode. The the brightness detail can be full resolution but the color detail should be lower resolution by about half (not depending on color detail as fine as brightness detail), because of the nature of the OLPC's screen: 200 dots per inch monochrome gray scale, with lower resolution color. For example, text on an icon should be a noticeably different brightness than the background color, instead of relying on color variation, which is not as detailed and won't show up in monochrome mode. SVG is the idea source format, because it can be scaled to any size, rendered with antialiased edges, and will be easily used in the Python version. Illustrator exports SVG. For now the TCL/Tk version can use versions of the SVG files converted to "XPM" format (which I can do). Later, the Python user interface will require a bunch more icons and graphics, depending on the user interface and features we decide to support. It would be great to be able to use the same SVG source graphics in the Python version, scaling them as appropriate to adapt to the screen layout. We should revisit the icons and graphics after we port Micropolis to Python. What follows is a complete list of graphics we could use in the TCL/Tk version. SVG is ideal but PNG is sufficient for this time. Micropolis icon for use in Sugar user interface, in SVG or PNG. Logos: Micropolis logo Micropolis lettering OLPC Project logo XO Laptop logo Linux Penguin logo Python Programming Language logo Small menu item icons for map overlay menus: Zones All Residential Commercial Industrial Transportation Overlays Population Density Rate of Growth Land Value Crime Rate Pollution Density Traffic Density Power Grid Fire Coverage Police Coverage Small menu item icons for File menu: Save City Save City as... Add Player... Choose City! Quit Playing! Small menu item icons for Options menu: Auto Budget Auto Bulldoze Disasters Sound Animation Messages Notices Small menu item icons for Disasters menu: Monster Fire Flood Meltdown Air Crash Tornado Earthquake Small menu item icons for Time menu: Pause Slow Medium Fast Small menu item icons for Priority menu: Flat Out! Zoom Zoom Whoosh Whoosh Buzz Buzz Putter Putter Drip Drip Snore Snore Small menu item icons for Windows menu (maybe the same as ones used in buttons): Budget Evaluation Graph Small menu item icons for Map Options menu: Auto Goto Palette Panel Chalk Overlay Small "OK" button for confirmation dialog buttons. Small "Cancel" button for confirmation dialog buttons. Large "Question" icon for dialogs asking questions (ok/cancel questions). Large "Notice" icon for notice window (informational). Large "Query" icon for zone query window (zone tricorder). Medium "Generate New City" icon for button to generate new city, on start screen. Medium Game Level icons for start screen radio buttons: Easy Medium Hard Big "Load City" icon for load city dialog. Meduim "Load City" icon for button to load city, on start screen. Big "Save City" icon for save city dialog. Small "Save City" icon for button to save city. Big Evaluation icon for evaluation window. Small Evaluation icon for button to bring up evaluation window. Big Graph icon for graph window. Small Graph icon for button to bring up graph window. Big Simolean/Budget symbol for Budget window. Small Simolean/Budget symbol for button to bring up budget window. Big Quit symbol for Quit confirmation dialog. Small Quit symbol for button to bring up Quit confirmation dialog. Big About symbol for About dialog. Small About symbol for button to open About dialog. Big Choose City symbol for Choose City confirmation dialog. Small Choose City symbol for button to open Choose City confirmation dialog. Simulation and User Interface Sounds Right now it's using the original sounds, plus some interface sounds I recorded. I can convert them to the format required by the Linux sound interface we use. I can supply a list of required interface sounds, but I think we can go with the sounds we have right now without any trouble. Later, the Python version will require a bunch more sounds for its user interface, which will depend on the user interface features we decide to support. So we should revisit the sound effects later once Micropolis is ported to Python. To be authentic, I would like to use the original sounds that the simulator made (like the Skywatch One helicopter), or re-record high quality replacements. Maybe we can get Will to record a fresh version of "Skywatch One reporting heavy traffic!" in his own voice (he made that original sound) and the sound people can add in the helicopter sound over his voice to re-create the original sound at high quality. The other sounds could be re-made from scratch without any problem or help from Will. Voice overs reading the user interface text, notices, help text and documentation would be great for pre-literate children. Would need to be translated to other languages. Update Documentation I have translated the Micropolis manual to HTML. It's the original version that applies to the multi player X11/TCL/Tk version, which needs to be update in a few places where it's specific about the user interface or installation instructions. It would benefit from some nice reformatting and CSS styles, as well as some illustrations and screen snapshots. After we port Micropolis to Python, the interface-specific documentation will have to be rewritten, re-illustrated, and then it will have to be translated to different languages. The documentation consists of the following files: Index Introduction Tutorial User Reference Inside the Simulator History of Cities and City Planning Bibliography Credits Help Text There are also HTML files corresponding to user interface help text. The user interface components are tagged with help ids that are the base names of html files. The existing HTML help files are just placeholders that don't have any useful help text, and there are some help files for user interface components and windows that have since been removed, as well as some help files missing for user interface components and windows that have been added. To finish implementing help, we need to go through the code and identify all help tags and opportunities for adding missing help tags to the user interface, then make all help files corresponding to the existing tags, delete obsolete help files, and write all the help text. It would be nice for the help text to hsve illustrations of the corresponding windows and components in use. After we port Micropolis to Python, the help files will have to be re-inventoried, rewritten, re-illustrated, and translated to different languages. Courseware We need to include any Micropolis courseware or teacher's guides with the documentation, and update it to relect the current user interface. After we port Micropolis to Python, we will need to update the courseware to reflect the features and user interface of the new user interface. -- Micropolis, Unix Version. This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . ADDITIONAL TERMS per GNU GPL Section 7 No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees. Any propagation or conveyance of this program must include this copyright notice and these terms. If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts. You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program. This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU. micropolis-activity/images/0000775000076400007640000000000010735230405016272 5ustar simcitysimcitymicropolis-activity/images/tiles-117.xpm0000664000076400007640000000516410724145723020462 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "48 48 5 1", " c black", ". c red", "X c #FFFF7F7F0000", "o c yellow", "O c None", /* pixels */ "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOooOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOoooOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOooOoOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOXXOOOOOOoOOoOOOXOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOoXXOOOOOoOOXOOoooOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOooOXOOoooooOoOoooOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOooOOOoooOoooooooooOOOOOOOOOOOO", "OOOOOOOOOOOOOooooooooOXooXooOoooooOOOOOOOOOOOOOO", "OOOOOOOOOOOOOoXOOooooOXooOoooooOooOOOOOOOOOOOOOO", "OOOOOOOOOOOOOooooOoXOooOooooooooOoOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOXOooooooooooooXoOOoOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOXOoooooooooooooOXXXXXXOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOooooooooooooXOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOoXoOOoooooooooooooooooOOOOOOOOOOOOO", "OOOOOOOOOOOOOOXOooOoOooooooooooooOOoOOOOOOOOOOOO", "OOOOOOOOOOOOOoooOOOooooooo.ooooOooooooOOOOOOOOOO", "OOOOOOOOOOOOOOOXoooooooOoooooOooXXOOoooOOOOOOOOO", "OOOOOOOOOOOOOOOXOooooOXooooooooOOXXOOOoOOOOOOOOO", "OOOOOOOOOOOOOOOOOoooooOOooooooOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOXOoOoXOOoOOOOXOXOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOooOXOoooOOXXoXOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOXOXOOOOXXOOXOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO" }; micropolis-activity/images/tiles-9.xpm0000664000076400007640000000277310724145723020325 0ustar simcitysimcity/* XPM */ static char *tiles__[] = { /* columns rows colors chars-per-pixel */ "32 32 15 1", " c black", ". c #00003F3F0000", "X c #3F3F3F3F0000", "o c #3F3F3F3F3F3F", "O c #000000007F7F", "+ c #7F7F3D3D0000", "@ c gray50", "# c #3C3C0000BFBF", "$ c blue", "% c #3C3C0000FFFF", "& c #0000BFBF0000", "* c #FFFF3C3C0000", "= c yellow", "- c gray75", "; c gray100", /* pixels */ " ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " O OOOOOOOOOOOOOOOOOOOOOOOOOO $ ", " OO OOOOOOOOOOOOOOOOOOOOOOOO $$ ", " OOO $$$ ", " OOO ###################### $$$ ", " OOO ###################### $$$ ", " OOO #%#%#%#%#%#%#%#%#%#%#% $$$ ", " OOO %#%#%#+++++#%#%#%#%#%# $$$ ", " OOO #%%%#%+XXXX%#%%%#%%%#% $$$ ", " OOO %%%%%%+oXoX%%%%%%%%%%% $$$ ", " OOO %%%%%%+XXXX%%%%%%%%%%% $$$ ", " OOO %%%%%%+oX@@@@@@@%%%%%% $$$ ", " OOO %%%%%%+XX;-------%%%%% $$$ ", " OOO %%=@@@@oX;-o-o-o-%%%%% $$$ ", " OOO %%=*****X;-------%%%%% $$$ ", " OOO %%=*****X;-o-o-o-%%%%% $$$ ", " OOO %%=*@*@*X;-------%%%%% $$$ ", " OOO ..=*****X;-o-o-o-..... $$$ ", " OOO ..=*****X;-------..... $$$ ", " OOO ..=*@*@*X;-o-o-o-..... $$$ ", " OOO ..=*****X;-------..... $$$ ", " OOO ..=*****.;-o-o-o-...&. $$$ ", " OOO .&=*@*@*.;-------&.&.& $$$ ", " OOO &.&*****&;-o-o-o-.&.&. $$$ ", " OOO &&&&&&&&&&-------&&&&& $$$ ", " OOO &&&&&&&&&&&&&&&&&&&&&& $$$ ", " OOO $$$ ", " OO $$$$$$$$$$$$$$$$$$$$$$$$ $$ ", " O $$$$$$$$$$$$$$$$$$$$$$$$$$ $ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " " }; micropolis-activity/images/tiles-44.xpm0000664000076400007640000000263210724145723020376 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "34 34 2 1", " c black", ". c #7E7E7E7E7E7E", /* pixels */ "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "................. ......... ....", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", ".................................." }; micropolis-activity/images/grind.xpm0000664000076400007640000000257710724145723020144 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "32 32 9 1", /* colors */ "` c #000000", "a c #3F3F3F", "b c #3F3F00", "c c #003F00", "d c #FF3C00", "e c #727272", "f c #DFDFDF", "g c #7F3D00", "h c #3C00FF", /* pixels */ "````````````````````````````````", "``ffffffffffffffffffffffffffff``", "`f`ffffffffffffffffffffffffff`e`", "`ff`ffffffffffffffffffffffff`ee`", "`fff````````````````````````eee`", "`fff`hhhhhhhhhhhhhhgbbbbbhh`eee`", "`fff`hhhhhhhhhhhhbbbbgbgbhb`eee`", "`fff`hhhhhhhhhhhhgbgbhb`bbh`eee`", "`fff`hhhhhhhhhhbgbbbgbbbhbh`eee`", "`fff`hhhhhhhhhbbbgbhbbbhbhh`eee`", "`fff`hhhhhhhhhbbb`bbbbbhhhh`eee`", "`fff`hhhhhhhggbbhbbgbhhhbhh`eee`", "`fff`hhhhhhbbbhhgbbhhhhhhbh`eee`", "`fff`hhhhhhbbhhbbhhhhhhhghh`eee`", "`fff`hhhhgbh`bbbhhhbhhhbbhb`eee`", "`fff`hhhhbbhgbbhhhhhhhhgbgb`eee`", "`fff`hhhbhhbhhhhhhhhhhgbbhh`eee`", "`fff`hhbhhbhhhhhhhhhhggbbbh`eee`", "`fff`hh`h`hhhhhhhhhhhbhbhhh`eee`", "`fff`hh`h`hhhhhhhhhhbhbhhhh`eee`", "`fff`hh`h`hhhhhhhhhahahhhhh`eee`", "`fff`hh`h`hhhhhhhhhahahhhhh`eee`", "`fff`h````````hhhaaaaahhhhh`eee`", "`fff`c``a`a```ccca`a`accccc`eee`", "`fff`c````````cccccccdccccc`eee`", "`fff`cccccccccdcccdcccccccc`eee`", "`fff`cccccccccccccccccccccc`eee`", "`fff````````````````````````eee`", "`ff`eeeeeeeeeeeeeeeeeeeeeeee`ee`", "`f`eeeeeeeeeeeeeeeeeeeeeeeeee`e`", "``eeeeeeeeeeeeeeeeeeeeeeeeeeee``", "````````````````````````````````" }; micropolis-activity/images/seaport.xpm0000664000076400007640000001105510724145723020505 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "64 64 12 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #997D4C", "c c #0000E6", "d c #3F3F3F", "e c #007F00", "f c #6666E6", "g c #00E600", "h c #FFFF00", "i c #CC7E66", "j c #FF7700", "k c #BFBFBF", /* pixels */ "fffffffffffffffffffffffffffffffffffffff`aaaaaaffffffffffffffffff", "fffffffffffffffffffffffffffffffffffffff`aaaaaaffffffffjjffffffff", "ffffiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiaaaaaaiiiiiiidijjiiiiiff", "fff`iiibibiiiiiiiiiiiiibiiibiiibiiiiiiiiaaaaaaiiiiiidiiijjiiiiff", "ffc`iiiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiiiii`iiiiijjiiiff", "ffc`iiaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaiiiiiiiiiii`jjiiff", "ffc`iiaaaaaaaaaaaaaaaaaaaaaaaaaaa`d`aaaaaaaaaaaaaaaaaaii`i`jjiff", "ffc`iiaakaakaakahh`akaakaakaakaaaa`aaaakaakaaaaaaaaadai`i`ijiiff", "ffc`iiaaaaaaaaaahh`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaad`d`iiiiiff", "ffc`iiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakkkkkkaaaaaaa`d`iiiiiiff", "aaaaaaaakaaaaaakkkkkkkaaaaakkkkkkahdhahkkaaaadaaaaaaad`diiiiiiff", "aaaaaaaaaaaiiikkaaaaadaaaakkaaaadaaaaakkkaaaadaaaaaadaiidiiiiiff", "aaaaaaaaaaaiikkkaaaaaddaakkkaaaaddaaakkkkaaaaddkaakaaaiiibiiiiff", "aakaakaakaaikkkkaaaaaddakkkkaaaaddaaakkkkaaaaddaaaaaaaiiiibiiiff", "aaaaaaaaaaakkkkkaaaaaddakkkkaaaaddaaakkkkaaaaddaaaaaaaiikddddiff", "aaaaaaaaaaakkkkkaaaaaddakkkkaaaaddaaakkkkaaaaddaaakaaaikkaaadiff", "aaaaaaaaaaikkdkkakkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaaaaaakka`adiff", "````iiiiiiikkkkkkkdddddddddddddddddddddddddddddkaaaaaaakkaaadiff", "ffc`iiiiiiikkdkkkkaaaaaaaaaaaaaaaaaaaaaaaaaaaadkaakaaaakkaaadbff", "ffc`iiikkkkkkkkkkkaaaaaaaaaaaakffaaaaaaaaaaaaadkaaaaaaakka`adbff", "ffc`iikkdddddkkkkkaakdaaaaaaakfakfaaaaaaaakdaadkaaaaaaikkaaadbff", "ffc`ikkkdddddkdkkkaakdaaaaaaakfakfaaaaaaaakdaadkdakaaaikkddddbff", "ffc`ikkkdddddkkkkkaaaaaaaaaaaakfcaaaaaaaaaaaaadkdaaaaaikddddbbff", "ffc`ikkkdddaakkkkkaaaaaaaaaaaakfcaaaaaaaaaaaaadkdaaaaaageebbbbff", "ffc`ikkkdddaakkkkkaaaaaaaaaakfffcffaaaaaaaaaaadkdakaaaggeeiiiiff", "ffc`ikkkdddaakkkkkaaaaaaaaaaaakfcaaaaaaaaaaaaadkdaaaaaggeeiiiiff", "ffc`ikkkdddaakkkkkaaaaaaaaaaaakfcaaaaaaaaaaaaadkdaaaaageeaaaiiff", "ffc`ikkkdddaadkkkkaaaaaaaaaaaakfcaaaaaaaaaaaaadkdakaaaageeageeff", "ffc`ikkkdddaakkkkkaaaaaaakfffakfcakfffaaaaaaaadkdaaaaaggeeggeeff", "ffc`ikkkdddaakkkkkaakdaaaakfcakfcakcfaaaaakdaadkdaaaaaggeeggeeff", "ffc`ikkaaaaaakkkkkaakdaaaaakfccfcccfaaaaaakdaadkdakaaageeageeaff", "ffc`ikaaaabaakkkkkaaaaaaaaaakffffffaaaaaaaaaaadkdaaaaaaaaaaaaaaa", "ffc`iaaaabbakdkkkkaaaaaaaaaaaaaaaaaaaaaaaaaaaadkdaaaaaaaaaaaaaaa", "ffc`iibbbbbakkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkdakaakaakaakaaka", "ffc`iiibbbbakkkkkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddaaaaaaaaaaaaaaa", "ffc`ifddbbbkkkkkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadddaaaaaaaaaaaaaaa", "ffc`ifddiiikkkkkdddddddddddddddddddddddddddddadddakaaaaaaaaaaaaa", "ffc`ifcciiikkdkkdddddddddddddddddddddddddddddaddaaaaaaiiiiiiii``", "ffc`iiiiiiikdkkkdddddddddddddddddddddddddddddaddaaaaaaiiiikaaaff", "ffc`ifddiiikkkkkdddddddddddddddddddddddddddddaddaakaaaiiihkaaadf", "ffc`ifddiiikkkkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddaaaaaaiihdkaaaff", "ffc`ifcciiikkkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadddaaaaaaihdikkkkdf", "ffc`iiiiiiikkaaa````aaaa````aaaa````aaaaaaaabdddaakaaaiiihdihdff", "ffc`ifddiiikaaa`dddaaaa`dddaaaa`dddaaaaaaaabbdddaaaaaaiihdihdiff", "ffc`ifddiiiaaaddddaaaaddddaaaaddddaaaaaaaabbbdddaaaaaaihdihdiiff", "ffc`ifcciiiibbdddddbbbddddddddddddddddddddddddddaakaaaiibiibiiff", "ffc`iiiiiiiiibbdddddddddddkiidddddddddddddddddddaaaaaaiiibiibiff", "ffjjjjjjjjjjjjjjjjkkdddddkkiiddkiiddddddddddjdddaaaaaaiiiiaibiff", "ffjjjjjjjjjjjjjjjjddaaaaakkddakkiiaakaakaakkdjakaakaaaiiikadiiff", "ffc`iiiiiiiik`diikddaaaaakddaakkddaaaaaaaakdjdaaaaaaaaiiiiaiiiff", "ffc`iiiiiiik`diiidddaaaaaaaakakddaaaaaaaaadddjaaaaaaaaiiaiiiaiff", "ffc`iiiiiik`diiiiiiaaaaaaaaaaaaaaaaaaaaaaaaajdaaaaaaaaikadikadff", "ffc`iiiiik`diiiiiiiiiiiiiiaaaaaaiiiiiiiiiiikdjiiiiiiiiiiaiiiaiff", "ffc`iiiik`diiiiiiiiiiiiiiiaakaaaiiiiiiiiiik`jdiiiiiiiiiiiiaiiiff", "ffc`iiik`diaaaaaaaaaaaaaaaaaaaaaiiiiiiiiik`ddjiiiiiibibiikadiiff", "ffc`iiiidiiaaaaaaaaaaaaaaaaaaaaaiidddddik`dijdiiiiiiiiiiiiaiiiff", "ffc`iiiiibiaakaakaakaakaakaakaaaiidiiiik`diidjiiiiiibibiiiiiiiff", "ffc`iiiiiibaaaaaaaaaaaaaaaaaaaaaiidiiik`diiijdiiiiiiiiiiiiiiiiff", "ffc`i`iiiiidaaaaaaaaaaaaaaaaaaaaiidiik`diiiidjiiiiiiiiiiiiiiiiff", "ffc`iiiiiiiadkdaaiiiiiiiiiiiiiiiiidiiidiiiiijdiiibiiiiiiiiiiiiff", "ffc````````ddddda```````````````````````````dj````````````````ff", "ffcccccccc`aaaaaacccccccccccccccccccccccccccjdcccccccccccccccfff", "ffffffffff`aakaaafffffffffffffffffffffffffffdfffffffffffffffffff", "ffffffffff`aaaaaafffffffffffffffffffffffffffffffffffffffffffffff" }; micropolis-activity/images/icfire.xpm0000664000076400007640000000311010724145723020262 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "34 34 13 1", /* colors */ "# c #000000", "a c #7F7F7F", "b c #00FF00", "c c #5D5D5D", "d c #007F00", "e c #BF7900", "f c #FF0000", " c #FFFFFF", "h c #FFFF00", "i c #7F7F00", "j c #FF7700", "k c #BFBFBF", "l c #0000FF", /* pixels */ "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", "kffbbbbffffbbbbffffbbbbffffbbbbffc", "kffbbbbffffbbbbffffbbbbffffbbbbffc", "kffccccccccccccccccccccccccccccffc", "kffc##########################kffc", "kbbc## # # # # # # # # # # # #kbbc", "kbbc# # # # # # # # # # # # ##kbbc", "kbbc## # #ffffaffffaff # # # #kbbc", "kbbc# # #f###a####a##f# # # ##kbbc", "kffc## #ffccaccccacccf # # # #kffc", "kffc# #fefcacccccccccf# # # ##kffc", "kffc## fffccffffffffffff # # #kffc", "kffc# #ffecfcccccccccccf# # ##kffc", "kbbc## efffeaaaaaaaaaacf # # #kbbc", "kbbc# #fefffahhhhahhaacf# # ##kbbc", "kbbc## fffefchccachchacf # # #kbbc", "kbbc# #effffchhhachchacfiiiii#kbbc", "kffc## fffefchcaachchacf####i#kffc", "kffc# #feffechaaachchacfa#cai#kffc", "kffc## ffeffchaaachhaacfcca#i#kffc", "kffc# #effffccaaacccaacfcac#i#kffc", "kbbc## ffeffaaaaaaaaaacfccc#f#kbbc", "kbbc# #fffeffffffffffff#a#a#f#kbbc", "kbbc## fefff####f####fccccc#f#kbbc", "kbbc# #ffff#cccf#cccfffffffff#kbbc", "kffc## eff#cccf#cccf#f#f#f#f #kffc", "kffc# #ff#eeef#eeefffff#fff ##kffc", "kffc## # # # # # # # # # # # #kffc", "kffc# # # # # # # # # # # # ##kffc", "kbbc##########################kbbc", "kbbckkkkkkkkkkkkkkkkkkkkkkkkkkkbbc", "kbbffffbbbbffffbbbbffffbbbbffffbbc", "kbbffffbbbbffffbbbbffffbbbbffffbbc", "kccccccccccccccccccccccccccccccccc" }; micropolis-activity/images/scenario4hilite.xpm0000664000076400007640000024313710724145723022126 0ustar simcitysimcity/* XPM */ static char *scenario_hilite[] = { /* columns rows colors chars-per-pixel */ "209 188 256 2", " c #283629", ". c #3B3C3B", "X c #363736", "o c #2F2F2E", "O c #1D321F", "+ c #1D3E69", "@ c #123976", "# c #393A43", "$ c #2D2E50", "% c #233E6B", "& c #253D67", "* c #30346E", "= c #1E1D5F", "- c #155015", "; c #137415", ": c #0C730C", "> c #394437", ", c #30502D", "< c #306730", "1 c #23601F", "2 c #1C426C", "3 c #1A4267", "4 c #1C4571", "5 c #0C446C", "6 c #3A4443", "7 c #34504F", "8 c #22416B", "9 c #254268", "0 c #244472", "q c #335075", "w c #335D6F", "e c #463A37", "r c #503730", "t c #6C3734", "y c #692616", "u c #443B43", "i c #513A4C", "p c #5B3261", "a c #4A4A2B", "s c #464637", "d c #574739", "f c #50532F", "g c #516C32", "h c #6D4E35", "j c #736C34", "k c #62491A", "l c #434343", "z c #484948", "x c #485647", "c c #57544A", "v c #575654", "b c #514C4E", "n c #525470", "m c #53654C", "M c #675748", "N c #675855", "B c #745859", "V c #70504A", "C c #6E576B", "Z c #786554", "A c #6E6F4C", "S c #706C6E", "D c #506E73", "F c #1F348F", "G c #375586", "H c #386284", "J c #3B6B95", "K c #3C7DA3", "L c #3942AA", "P c #425684", "I c #44568A", "U c #415983", "Y c #44598B", "T c #48598B", "R c #475C91", "E c #50518E", "W c #5152AB", "Q c #446684", "! c #467C99", "~ c #536B99", "^ c #4A6695", "/ c #477CA4", "( c #5078A5", ") c #67578C", "_ c #716B8D", "` c #7666B4", "' c #6357AF", "] c #5355C9", "[ c #5D63ED", "{ c #5C63E4", "} c #5C63F1", "| c #7668D1", " . c #6364E6", ".. c #6264EA", "X. c #6B66E6", "o. c #6365F2", "O. c #7264E5", "+. c #5D5FD7", "@. c #4A3EA6", "#. c #289B1C", "$. c #00DC00", "%. c #0BDB05", "&. c #17D80A", "*. c #1ED00F", "=. c #00E300", "-. c #00EA00", ";. c #0BE303", ":. c #00F200", ">. c #13E306", ",. c #26CB0A", "<. c #28CB0E", "1. c #23CF03", "2. c #2ACB14", "3. c #24D503", "4. c #25DA04", "5. c #24D60C", "6. c #25D311", "7. c #37C71A", "8. c #34D215", "9. c #2CD510", "0. c #568E34", "q. c #48B924", "w. c #57B929", "e. c #53A72F", "r. c #65B52D", "t. c #68B231", "y. c #78A938", "u. c #70AC31", "i. c #699D2D", "p. c #568D4B", "a. c #6A8545", "s. c #6E936F", "d. c #58A15E", "f. c #44C61E", "g. c #48C222", "h. c #53C324", "j. c #6ED331", "k. c #3EA843", "l. c #55859D", "z. c #4E809B", "x. c #4A82A6", "c. c #5584A9", "v. c #5795BA", "b. c #508EB7", "n. c #6499BC", "m. c #6D92A9", "M. c #709AAA", "N. c #459DD3", "B. c #489ED4", "V. c #589CC9", "C. c #4F99C8", "Z. c #4BA1D4", "A. c #46A1D4", "S. c #5AA1CB", "D. c #53A5D6", "F. c #55A6D8", "G. c #56A8D8", "H. c #5CAAD9", "J. c #59A8D7", "K. c #4EA8D2", "L. c #649AC3", "P. c #64A4CD", "I. c #62AEDB", "U. c #66AAD4", "Y. c #66B0DC", "T. c #6AB2DD", "R. c #6CB5DB", "E. c #73ACD3", "W. c #71B5DD", "Q. c #73B8DE", "!. c #7BB9DC", "~. c #78B4D9", "^. c #75AACA", "/. c #6DB6E0", "(. c #73B6E0", "). c #74B9E1", "_. c #7BBBE2", "`. c #79B6E1", "'. c #7BC0E4", "]. c #75C0DF", "[. c #3F9DD1", "{. c #982924", "}. c #8C5036", "|. c #8D6C37", " X c #AB5F30", ".X c #8A5650", "XX c #866558", "oX c #976859", "OX c #8E6C4C", "+X c #8B6D6F", "@X c #B7755C", "#X c #AB6F51", "$X c #B3756B", "%X c #9C575B", "&X c #C7241F", "*X c #CE672C", "=X c #D47D5C", "-X c #C67859", ";X c #CD7C62", ":X c #C87763", ">X c #D37A65", ",X c #DB7569", ".4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.3.4.4.4.6.k.^ R ~ S.~.HX3 2 & & KX~.T./.W.(.W.W.W.R.", "F.G.G.G.D.J.D.J.F.KXJX0 % + 0 PXFXJ T I ^ e.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.2.d.L ^ b.E.LX9 8 0 3 FXW.T.T.T.T.W.(.(.).", "D.D.D.G.J.D.D.D.F.GXPX+ 8 2 % JXFXI T U d.5.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.&.4.4.4.4.4.4.4.5.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.3.4.4.4.5.q.H ^ / U.FX9 8 8 9 FXU.E.T.T.T.W.W.W.).", "D.D.G.D.J.D.J.D.F.GXJX0 & 9 % KXAXE E T k.&.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.aXyXyXeXr.r.eXyXyXyXrXy.g y.r.r.r.y.yXyXyXaXr.eXdXyXaXr.r.y.yXyXrXr.r.r.r.r.r.u.l.c.l.l.l.l.l.s.u.r.r.r.t.r.r.r.t.yXrXu.yXyXyXyXyXdXyXrXy.s.b.l.l.x.l.l.l.x.s.u.r.t.aXyXyXu.r.t.rXyXu.r.yXyXu.t.rXyXyXyXyXyXy.r.r.r.t.r.r.uXyXyXyXyXyXyXyXdXy.r.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.3.4.4.4.3.4.4.H R J L.BX3 9 9 9 AXT.T.T.T.T.`.T.W.R.", "D.D.D.G.D.J.D.D.F.FXKX4 9 3 8 GXBXT I ^ 2.&.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.;X;XX>XlX2.-.%.yX3Xt.-.-.5.XzXyX>XdX-.iXo...{ . .{ ....iX-.-.:.fX4XgX&.-.-.dX;X&.-.fX;X;.-.yX3X1X=X1XpX$.=.=.-.;.-.:.pX,X;XXcXcXcX>X3Xw.-.$.$.6.,Xt.=.$.%.yX,X,X>Xr.=.$.$.$.%.rX9Xo... . . .9XrX%.$.*.hX9XmX9X9X9X9XrXr.dXX%.$.$.$.%.%.%.$.7.cXX>X;X>X>X;X1Xt.;.;.q.C #XaXsX,X;X;X,Xy.;.$.$.7.3Xr.=.$.$.%.y.aXuXg.;.%.%.%.$.$.rX0X[ .. ...o.9XeX3.hX8X[ o.[ [ [ { 0XrX=.r.yX.;.;.dX3XzX3.fX=X=X=XxX5.%.>.;.-.=.q.y.$.$.=.r.cXcXgX%.=.pX3X&.-.=.u.,X&.-.w.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.H Y R x.b.D.S.K.K.C.I.T.T.T./.T.T.W.T.", "D.G.J.G.D.J.D.J.D.F.D.F.J.D.D.D.C.P T ~ 8.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.cXsXgX>XsXsX>X>XcXgXlX:XB q.:.%.dX>X;X;X>XlXw.2.cX,XpX=.$.$.$.$.=.;.sXlXlXgXcXy.;.=.rX8X} .. ... .0X9X8X} .. . ...[ [ ..0XrX=.-.y.3X>XfX-.iX.. . . . . . .[ 8X$X9X9XiX9X9X9X9X9X9X9X9X9X9X9XmX9X7XhX9.-.;.;.;.;.yX,XsXy.%.$.7.pX$.$.=.y.,X7.;.pX4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.Q Y R K b.K.J.H.H.I.I.T.Y.Y.T./.T.(.W.", "J.D.D.J.D.D.D.D.D.F.D.D.D.D.D.F.C.I T ~ 6.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.;X7.7.4Xw.g.X>X:XN e.;.;.g.XcX>X>XcX>X;X>Xt.;.%.%.$.$.%.yXX>X>XcXu.;.jXo... . ...[ [ } .O.O.O.O.O.X... .0XrX;.$.y.4XfX:.+X.. . . . . . .[ } } } [ [ [ [ [ [ [ [ [ [ [ [ .. ...o.8X9XiX7X9XgXzX>X>X&.-.;.%.$.=.$.$.=.t.,XcXlX;X4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.Q Y ^ K b.S.J.H.H.R.Y.E.T.T.Y.T.T.T.T.", "G.D.G.D.J.J.K.K.D.D.D.D.D.D.D.D.C.I T ~ 2.3.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.cX7.&.sX>XcX;X;X;XcXX;X>X;X;X:X>X;X;X;X;XlXcX>Xw.=.$.2.>X;X,X1X:X;XX;X>X>X4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.Q R ^ K C.C.S.H.Y.Y.Y.U.R.Y.Y.T.R.T./.", "G.G.J.G.J.D.G.D.G.D.D.D.D.Z.Z.D.C.I I ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.vXr.-.w.,X>XcX>XX:X>X;XcX;X;X;X;X;X;X>X>XcXaXyXg.-.&.gX>X:XaXdX,X1X;XX;X;X1X>X4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.H Y R K b.K.J.H.H.Y.I.T.Y.Y.T.T.W.T.R.", "G.G.G.D.D.D.D.D.D.D.D.D.D.D.D.D.C.I I ~ <.4.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.cX>XcX>X,X>X>XgXsX3Xt.7.B @X>X;X>X,X>XXvX>X>X:X>X3Xy.-.%.sXw.&.;XcXq.-.%.eXfX>X,XeX-.y.uXuXs.uXuXw.;.Z b i r b ; p.o...X.iX&.yXlXlXpX=.u.wX . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . .} 8XhX5.pX,XdXcXgX6.pX,X;X>XX;XgXyXyXyXuXsX,XcXsX,X;XuX7.=.&.,Xy.%.,XaX-.$.$.-.&.=X,XyX;.;.:.;.-.-.-.=.;.A V j |.r ; A o... .2XzX,X1XX:Xv @XvX,Xt.-.=.-.-.&.uX7.%.uX7.-.$.$.8.3Xy.;.dX,Xw.$.$.$.5.xX=XxXgXiX$X+X9X+XlXy.3.B V g h d ; A o.} ..2X1XvX1XgX>.>.;.>.zXwXX.X.O.O.X.X.X.X.| X.X.X.O.X.O.O.X. .X.O.o.X.X.X.O.O.o..... . .} 8XcXvXcX;XfXlX;X>X,X&.7.gX>.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.3.4.4.4.4.4.U R R K b.Z.D.J.H.I.I.T.Y.Y.Y.T.T.T.Y.", "D.G.G.J.J.D.D.G.F.F.D.D.D.Z.D.D.C.P I ~ <.4.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.7.$.$.$.$.$.-.-.q.>X>X;XN $X>XlX2.$.$.$.$.$.=.$.$.-.=.%.;.%.cXX&.y.4XgXpX=.pX4X5.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.3.4.4.4.4.U R R K b.C.D.J.H.Y.I.U.Y.Y.Y.Y.T.Y.Y.", "D.D.J.D.G.J.K.D.D.D.D.D.D.D.D.B.C.I R ~ <.4.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.w.;.$.$.$.%.7.gX;X;XgXfXN @X4Xr.-.$.$.$.$.$.$.$.$.2.sXgXlXt.pXg.=.$.%.yX,Xw.;.9X} ..[ [ [ o.[ .. .....X.9X+X_ +X_ S ' ' ~ ' ~ b r e > 7 Q +Xn t X Xd c r r . . o X > - > X A >.-.fX1X&.:.aX3X;X5.-.=.w.$XX... . .} 7X>.y.3XsXw.pX%.-.t.X;X.$.w.,XfX&.yXvXXX;XvXcX@XB q.:.$.2.gXiXiX+X$XiXg.&.XzX0X} [ ..X.+XC C N 7Xo.o...} } o.....o.} o. .$X3X%X< h d G L L F {.&X&Xt d g tXo u x g o b 7Xp.- Z ;.$.=.dX4X;X>X;XfXyXpX$.=.uXO... . .[ 7X&.-.eXXcXgX,XgXpX%.$.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.U T R K b.C.F.H.H.H.I.U.Y.I.I.I.Y.Y.Y.", "G.F.F.F.J.G.G.F.F.F.D.D.D.D.D.D.C.T T ~ 2.4.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.cX>XcX,Xw.:.w.X,X>XN e.;.8.:XqXo.o.o.o.qXy.&.,XeX:.$.fX g f f f M d c c e > s X o 6 A ;.%.=.q.fXyX>XcX5.-.-.;.u.9XX. . . .[ 9X&.-.u.,X;X>XgXuX%.-.$.$.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.H Y Y K b.Z.J.J.J.H.I.U.I.I.I.I.I.I.I.", "J.J.F.J.J.F.J.J.F.F.F.D.D.F.D.D.C.I I ~ <.3.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.cX>XcX;X;XgX;XX:XdXfXq.$.pXhX0X[ ...X.n ' 6XX a h.tXb n ' {.d n ' }.X MXNXX > 1 o s z r r a l r o s 6 r r x n m.v > 1 l . A ;.=.y.uX-.-.yX,XgXgXhXzX9XX. . . .[ 0X>X2.-.aX,X;XcX6.-.$.$.$.$.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.Q T Y K b.C.D.J.H.I.H.U.I.H./.H.I.I.I.", "F.J.J.F.J.F.J.G.F.F.G.D.F.F.F.G.C.I I ~ <.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.gXgX,XXcX NXv o < d.{.X * ' 6Xe 7 ' 6Xr # ' 6Xe I iXnXE , NXUX A :.y.3XcX;.$.w.;X>X1X=X$X . . . .[ 8XxX>XgXgX;X;X>X l < NXp., $ @.n . $ @.E X $ L E s P L L F l mXp.- Z >.dX3XpX$.$.=.dX1XxX9X........[ 0X=XX,XgXcX;XgXpX=.q.,XgX6.=.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.3.4.4.4.4.4.H Y R K b.Z.F.J.H.H.H.U.H.H.H.H.I.I.I.", "G.H.H.G.J.J.G.J.F.F.J.F.F.F.G.F.C.I I ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.f.=.=.=.=.7.sXiXiXiXiX` n +.o...| $X2X$X$X8X} .[ | 2Xh.-.$.=.$.-.$.&.fXr.&.hX8Xo.[ ..O.V s . s t X}.f x _ S v , > v B oXS +Xn H R 7 n F p C C n C V > $ $ u z 9 3 7 6 X o $ XXcX>XaX%.$.$.y.9XcX9XX.......[ 8XhXdXdXdXaX;.pX,X&.w.fX=.y.,XlXsX4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.3.4.4.4.4.P T R K b.C.J.J.J.H.H.H.I.I.H.I.H.H.H.", "H.H.H.G.G.G.J.F.J.F.F.F.G.G.G.F.V.I T ~ 2.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.g.$.$.$.7.:XqXo.X. ...{ n +...| 2XxX;X3X1X=X8X[ ..[ X.2Xw.$.$.&.fXq.;.fX &XkX#Xi I jXnXF z MXNX}.0Xo...o.o.o.) ~ ] ] o.o.X.o.7X+XoXOXa.a.a.oXoXoXa.a.a.uX,XgX%.$.$.u.wX .[ { .... ...} 9X&.-.-.-.$.$.q.pXt.,X,X>.t.,X>XX>X8X[ .[ O.2Xw.-.*.,Xy.-.*..;.:.hXXzXzX8X[ ....O.2Xh.<.,Xy.=.%.aXgX0X[ { ...O.b . s f f f f 7 7 9 f > # h _ o. . . . .o.E ) W ] } .... . .....0XtX;.;.hX=XX>XcXsXgX,XfX%.=.$.y.,X&.t.5.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.H R R K b.Z.D.H.J.H.H.H.H.I.H.H.H.Y.H.", "I.I.H.H.H.H.H.H.F.H.H.F.F.H.H.H.B.I R ~ 2.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.7XiXjXqX} ......X.o.qX:XB q.$.*.fX7.=.$.6.,Xt.&.gX8X[ .[ O.$XzX=X Z oX7Xo. . .{ ..[ o.T W ] ] o.X. ... . ...[ 0XiXiX$X=X>XrX$.$.$.$.;.y.9XO. . ...[ .. .[ 0XdX%.=.pX,X>X>X3XgXsXaXr.fX&.-.t.X&.$.$.$.w.yX&.-.=.$.$.$.$.w.,XgXcX>XXf.$.$.$.8.0X} .....| 9X$XiXiXgX8X[ . ...O.b = $ a < < < x . v M _ X... ... .9XbXXX# 6 . $ V tX-.=.=.rX9X.... . . . . ...[ ..O...o.X... . . .[ 0XzX=X=X=X>XdX%.$.$.$.=.$.$.$.$.$.$.$.$.w.X8X[ ......o...X...} [ . . .[ | V e r a e u r r Z oX7Xo.[ .... .9X=X;XXX7 S x o .Xy.y.gXy.-.eX9X.... . . . . . ........... . . .[ 0X=X;X;X;X1X,XyX-.$.$.$.$.=.w.dX&.$.$.$.$.=.w.fX*.$.-.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.H T R K b.S.J.J.H.H.H.U.H.H.I.Y.H.I.I.", "Y.I.I.I.I.I.H.I.H.H.H.H.H.I.H.H.V.I Y ~ <.4.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.A A 0.Z b b XXZ A A a.Z h XXoXXXb Z lX,X;XcXfXsXgXh.sXXgXpXr.sXfXuX%.$.=.w.4XsX;.$.=.$.$.=.=.$.$.$.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.H Y ^ K b.V.J.H.H.H.I.U.H.H.H.I.H.I.H.", "Y.Y.I.I.I.H.I.H.H.H.I.H.H.H.H.H.V.I Y ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.h.:.:.8.XXv oXt.-.-.:.q.C XXoXgXXXb XX;X;X>XcXgXgXf.&.dXhXzX8X[ . . . . . . . .[ X.2XZ * W n e * W ) > 7Xo.o.o...o.O.$XoXoXoXh > X X . oXeX>.gX>XsXsX1X=X2X2XiXiX0XX..... ... . . .o.0XdX%.yX>X;X;X&.-.aX3X,X4XfX%.$.$.w.dXw.sXyX&.$.$.$.$.$.=.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.H ^ Y x.b.V.D.H.G.I.H.P.I.I.H.H.I.I.I.", "Y.Y.Y.I.I.U.H.H.I.H.H.I.H.H.I.I.S.T I ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.g.*.fX6.2.XXv B <.&.dXgXN Z v w.h.#Xv XX;XvXeX:.-.-.-.=.$.&.hX8Xo... . . . .o...X.+XoXh o $ $ a X = $ a C W E ~ E ~ S N . > 6 > a . h Z XX3XgX;X>X,X,XgXsXhXeX;.;.y.gX9X........o...0XdX%.-.uX,X;X>XuX-.pX,XgXgXyX%.$.$.$.:.y.4X,XfX&.$.%.=.g.fX4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.U Y Y K b.S.J.H.J.H.H.U.H.H.I.H.I.H.I.", "Y.Y.Y.Y.I.U.I.I.I.H.I.H.I.H.H.I.S.G I ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.sXcX>X2.-.q.oXN q.7.4X>XN @XN Z A oXb 7 XXoXXXA p.A A q.-.:.8.3X8Xo.X.o.X...X.O.2XB , f 7 S Q b t X}.f v ) E ) E ) oXN x S z o v mXd h oXgXgXsXfXgXeX%.$.=.$.$.$.$.%.eX2X9X$X2XiXiXaX%.$.=.t.X . A >.-.-.-.:.-.-.-.-.$.=.$.-.=.:.y.,X1X;X&.;.=.$.$.$.$.dX>X;X>XpXr.yX%.$.$.w.XX>X4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.U R Y / b.K.G.H.H.H.H.P.I.H.I.H.H.I.I.", "T.Y.Y.I.I.I.I.I.I.H.I.H.H.I.H.I.S.G I ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.cX X s s X # a Z a.a.a.a.a.A A a.a.a.a.a.a.a.A e.eX,XX>X;X>X;X&.=.$.$.-.pX,XlX>XuXw.gXgXdX&.q.lXsXcXcX4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.3.4.4.4.4.4.U R Y K b.V.G.H.H.H.H.U.I.H.H.H.I.H.H.", "Y.Y.Y.I.Y.I.I.I.H.I.H.I.H.I.I.I.S.I G ~ 2.4.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.zX,Xw.:.g.3X>X X o 6 u u h V 6 , . # l u z u A -.y.,XlX;.r.sXpX-.yX,X>X>X;X>XyX$.$.$.-.pX,X&.uXX4Xu.$.$.%.%.A N h g h t g j t g h s r d d e N oXS +.o. . .} ) S M h P iXnXG &XkX@Xt # T o o b mXe j , NXmX l S MXb A ;.$.dX,XsXXcX&.-.$.$.r.yXw..:.dXXgXpX%.$.=.w.3XgX&.q.yX%.$.-.y.4X;XgXgX4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.G R Y ! b.V.H.G.H.F.J.H.H.G.H.H.H.H.H.", "Y.Y.I.Y.I.Y.I.Y.I.I.Y.I.I.I.I.I.S.I I ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.f.:.:.-.-.=.-.-.-.g.vX=XB e.-.-.-.g.oXN e.:.-.9.vX3Xy.-.=.-.-.5.B < < < 1 < 1 < 1 f h g j t g f +X| [ . ...qXS . . s a 7 5 + 7 d f k f i = = > s . e e s o > s o . s Z a.a.oXoXoXoXa.a.a.a.a.a.a.OXoX$X 6 6 s s > h |.a . h |., D _ v e u > e > , > 6 6 . X # u e # # z e # o B >XcX,XyX%.$.$.$.$.$.-.=.-.$.$.=.$.$.$.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.n Y Y / v.V.J.H.F.J.G.J.J.G.J.I.H.H.H.", "/.Y.Y.Y.Y.I.Y.Y.I.I./.I.I.H.I.I.S.I T ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.Z XXXXB A A A A B XXZ B XXZ Z .X%XXXXXA A Z b t }.h x b D ) n e e i z l > u b 6 z b 7 > l o n 8XO.} ......$X3XXXb _ h M v S M h z S z X c mXd V z mXe }.P iXnXE , p.: o l s.NXO z W E X u ' E X e ) W o Z >X;X>X,XyX;.$.$.=.g.dXdXuX%.$.$.-.$.$.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.H R Y x.b.V.J.H.G.F.F.J.H.J.H.H.H.J.H.", "Y.Y.Y.Y.I.Y.Y.I./.I.I.I.I.H.I.I.V.R I ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.zX>X3Xr.-.;.;.:.w.3XvXX>XgX:X,XgXpX%.-.y.3X e s 7 + @ # a , a X s . , s = $ s e $ = X e = $ X Z >XcX6.yXX;XgX&.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.G T H x.b.V.J.H.J.J.F.H.J.J.I.H.H.H.J.", "Y.Y.Y.Y.I.Y.I.I.I.I.I.I.I.I.I.I.S.Y G ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.cXw.7. s s S n ] o. .o.L b D $ F f s l 6 s a . M j > l 6 s s 6 6 a s 6 6 e h X}.f s u . s s l 6 s a s x s f D S n a e u 6 Z XfXcX>X2.$.$.$.w.gX2.-.g.;X>X7.-.$.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.U T Y / v.S.J.H.H.J.H.F.H.H.H.H.H.H.J.", "Y.Y.Y.Y.Y.I.Y.Y.I.I.I.I.I.I.I.H.S.Y R ~ <.4.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.;Xg.-.f.>X,X3Xr.;.$.-.-.-.7.N , 1 z , , < 1 f c u l f , > , a s s s a s e . a s . r f , X i ] . .} L v 7Xi * c c S z X v S h h z S x X b S z X b S b o {.kXhXt e $X* o z S b o s %X+Xo n S nXE e E E o B cXgXlXgXdX;.$.$.$.$.-.$.=.w.3X>X&.$.$.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.H T R / b.S.J.H.H.H.H.H.H.H.H.H.H.G.H.", "Y.Y.Y.Y.Y.Y.I.Y.I.I.I.I.I.I.H.I.V.I I ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.;Xg.$.$.7.lXlX2.$.&.yXyXyXsXN : : g : #.#.#.m V |.h u < 0.y # O r h e 7 7XC . * ) {.. x s.> W o. . .] N D $ * x b S c r v _ e . b S M e b S v e z S v . {.*X&Xt b +X+Xl z S N e l }..Xd n W ~ L 6 ] ] $ Z 6.;.=.=.=.$.$.$.$.q.pX%.=.$.t.gX&.$.7.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.w R Y x.v.D.H.H.H.H.H.H.H.H.H.H.H.G.H.", "Y.Y.Y.Y.Y.Y.Y.Y.I.I.I.I.I.H.Y.I.V.I R ~ 9.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.cXgX6.=.$.$.%.$.*.sXX,X>Xv : #.> m $XvXA 7 h g k u p.MXg . r M h e * ` E s * ] n X S MXs.E o. ...' C ) E n c u . X l z > r u z . X > . X X e z > X s h a k h z v r e s . X e l e r . 7 @ @ 9 e = $ X m ;.=.q.yXy.%.$.$.-.t.3XsXy.%.-.=.=.-.y.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.Q R Y x.b.J.U.H.I.J.H.J.H.H.H.I.H.H.H.", "Y.Y.Y.Y.I.Y.Y.Y.I.I.I.I.I.H.H.Y.S.G I ~ 2.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.gX>XgX6.-.$.$.$.7.4Xr.g.1X:XN : #.7 c iXUXj m V V V d , m , s s e X s $ = $ s # = $ a s S x W o. ...| wX1X1XXX, < < < < , , > < < 7 B XXoXm < , s z a s s 6 s a e > > g < f m f N A A A Z OXA A A Z N OX;.q.>X s e f a s > f d s d r , . z E ... . .[ | 2XXX1 ; ; ; ; O - O - ; : , XX#X$Xg ; #XS X , 0.: o > p.; x oXUXjXm Z 5.&.>.fX>X5.>.>.a.B 3XfXcX>XcX>XX1X>X4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.U Y Y / v.S.I.I.I.I.I.H.H.H.J.J.H.F.J.", "Y.Y.Y.Y.Y.Y.Y.Y.Y.I.Y.I.I.I.H.I.S.G R ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.8.*.lXlXX>X>X>X6.y.sX%.$.$.$.=.%.%.%.;.rX5XvXxX4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.U T R x.b.S.H.Y.Y.Y.I.I.H.J.J.J.G.J.J.", "Y.Y.Y.Y.Y.Y.Y.Y.Y.I.Y.I.I.I.I.H.S.I I ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.g.-.-.;.w.3XgXaXsX>X>X;Xq.g.N : : 1 < < < < z f j.OXe x D x > V oXl > 7 ` L l V g j e S MXm o @X8X} . . ...E ' o...O.O.O.X.X.| X.O.+Xg 7 b S NXX r r # 6 , > , a X g S NX%X< A >.-.$.y.,X-X%.-.0.XX1XcXcXfX$.$.;.$.$.$.7.eX$.$.$.-.u.vXmXNX4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.G I R x.b.J.H.Y.Y.Y.I.I.H.H.J.J.D.J.F.", "Y.Y.Y.Y.Y.Y.Y.Y.I.I.Y.Y.I.I.I.H.S.G R ~ <.4.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.fXpXpX&.7.X > XX#X8X.. . .o.n ' } ... . . ... .[ [ O.A g 6 S S l c }.}.x n D v a u 6 l x g m < < B a.e.$.$.dX,XpX-.0..XgX6.%.;.$.$.$.=.=.:.pX3X&.$.$.;.eXgXNXMX4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.&.4.4.4.4.4.U R R K v.S.Y.Y.R.T.Y.I.I.J.D.J.D.G.K.", "Y.Y.Y.Y.Y.Y.Y.Y.I.I.Y.I.I.I.I.I.S.I I ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.:XX;X;X>Xw.$.$.$.2.N u i r c z u e f , X o a s . . a > > > a s e d a e . r r > D D d f e V ` o. .[ ) ~ o. . . . . . . . . .[ O.+XX O . 6 {.kXhXp mXnXE l S b X z > d V u d V Z -.q.cX,XgX-.0.B 6.$.$.$.$.$.f.aXaXpXlX,XyX;.$.=.u.$X+XmX4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.n J R x.v.S.I.Y.T.T.Y.Y.I.J.J.J.D.D.F.", "I.Y.Y.Y.Y.I.Y.Y.I././.I.I.I./.I.S.R R ~ <.4.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.cXw.w.,X;X;X;X,Xt.=.$.$.$.2.V * ) y e n ) y i > z v # s v j u ; 0.y # f r.OXs * ) y e J jXnX@.h |.h V ` o.o.n ' o. . . . . . . . . . .O.S l l u 7 {.*X Xp W _ F x S v r s iXd }.S d |.Z dXcX,XgX&.-.0.Z >.$.$.=.-.g.>X,X>X,X>XcX,XuX%.-.eX*X X*X4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.G T R x.b.H.I.T.T.T.T.I.I.G.F.G.F.D.F.", "Y.I.I.Y.I.Y.I.Y.I.I.I.I.I.I.H.H.V.I G ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.cXfXfX>X>X;X;X,Xg.=.$.%.eXsXM F ` n . F ' n . x S x X b S V $ p.MXm # f j.|.e * ' S . W ) W * h g j e #XmXqX) W .. . . . . . . . . . .X.S l S NXe h k {.i 5 F b s . X e b m.l X mXl X XX3X>XsX&.$.;.p.B %.-.g.aXpX:X;X;X;X:X>X2.pX,X&.-.j.vXmXNX4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.U R Y x.b.S.I./.T.R.Y.Y.I.J.J.G.G.K.G.", "I.I.I.I.I.I.I.Y.Y.I.I.I.I.H.I.I.V.Y G ~ 2.4.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.cXvXvX;XlX;X>X e h M d X = $ f 7 @ @ z M V V b a.9.vXZ W o...[ ..o. .[ ......[ X.+X. C S l 6 < 7 > < > a a s l z l X r o . e . XXvX5.-.$.$.-.0.XXdXpXcX,XXcX;X>XcX>XyXgX>X&.-.eXmXNXMX4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.U Q ^ K b.J.I.Y.T.W.T.Y.I.H.J.D.D.D.G.", "Y.I.I.I.I.I.I.Y.Y.I.I.I.H.I.I.H.V.Y R ~ 6.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.xX;X.q.cX>XsXpXsX,X;X:XN > s z a r X f s u e f 6 p 6 a l # e a > u z a > , e a r e > a d }.}.v OXa.$XM C 7X_ 7X7X7X_ 7X| o...o.o._ - > , > s.s.O s.mX s oX+XX z 6 6 . > > l M $XiXk.;.$.=.0.B X>X;X>XcX>X;X;X;X;X>X>XX;X;X;Xc x NXS # > > b e * _ {.X = p {.. * ) {.# f i.OXi < NXS , = @.{.6 &XkX#Xr 6 > z f s > l z . X l z T ' ' ' ] n < g g < i MXs.- MXs.1 r }..Xr z S x o S b D _ nX_ >.$.:.0.B 7.%.yX,XcX6.uXX;XcXX;X;X>X>X:Xb S IXx . c S x > P ' n X y .Xc . q ' C # f j.|.o D MXp., y .XN . &X*X6Xh , NXmX. x mXNX# > mXNX> N n n n D h a e X b > , - - - , > , a , z S N o S N e P W _ E ;.g.aXoXZ -.7.cX>X>XyXgX;X;X;X;X>X7.&.y.=X5XzXiXjX4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.&.4.Y ^ Y x.v.P.I./.W.(.T.T.Y.I.J.J.D.D.F.", "I.H.I.I.H.I.I.H.I.H.I.I.H.H.I.I.S.I I ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.lXcXcXg.fX3X;XcXcXcX-XzXcX:Xv u l > s s $ * $ s r o o s $ = $ s e h V d > X > r o o a k k k d v IXN v UXS v UXS X +Xo.[ [ O.+X$ i e X < ; ; ; : ; < , ; ; < l . . o u . s b q 0 D :.aX4XoXN yX>XgX6.uX,X>X;X;X;X>X;X&.-.-.:.rX$XNXMX3.3.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.3.4.4.4.4.4.G Y T / v.S.Y.R.T./.T.T.I.I.H.J.D.J.F.", "H.I.H.H.H.I.I.H.H.I.H.H.H.H.H.H.V.I G ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.r.>.%.7.>Xr.&.%.&.%.;.>.;.w.N , M < f < < < f , f < a < A f a f < < f s X e d s s e a > > z f > 6 z x . X > X X X > X O 7X......o.C e M C e x , # 6 x z , X z b e X l x > > d M Z 8.>.h.aXlXvXoXZ 3XgXw.y.lX>XcX;X;X;X;X;XyXeXy.eXxX+X$XNX6.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.U Y Y / v.J.I.Y.W.R.T.T.Y.I.H.J.J.J.F.", "H.H.H.I.I.I.I.I.H.H.F.I.H.H.H.H.D.P Y ~ <.4.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.yX&.-.=.=.=.-.$.$.%.0.e.e.j M ; |.1 f 1 ; ; f 1 ; ; f 1 j 1 f 1 : : x * ) y e * ) {.X x mXmXX x mXmX. 7 mXmX6 7 s.. X x s.6 X ) O. ...X.+XX r $ # > s.m.- g 6 d.iXo > m #.o < 1 S d }.A -.f.X;X;X;X;XvX:X;XX>X>X5X*XtX X4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.U R ^ x.b.S.I.T.R.T.T.T.Y.I.H.H.J.G.F.", "H.H.H.I.H.H.H.H.I.H.I.H.H.H.H.H.V.Y I ~ 6.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.cXgXy.pXy.y.y.*.-.7.N b ) D f l # 6 f s z > f s i z a x n D f d .Xh x * ' S a * ] S X v IXN o v IXS o N UXS o N MXs.. v MXs.> +X.. ...X.S > > . l z MXuX1 j x MXM.1 , p.e.> XXN mXl X Z yX;XgX2.;.-.0.B >XaXcX>X;X;X;X>X;X>X;X>X7.&.&.>.tXvXiXNX4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.H Y Y / b.D.H.R././.W.T.Y.I.I.H.H.H.H.", "I.H.H.H.H.I.H.H.H.H.H.H.H.H.H.H.S.I T ~ 2.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.lX>X,X>X1X l z b > l 6 z > > s S v > # S v , S X. .{ X.+X> s.s.O z . > - < u # > > , a d @XV X r o XX3X:X*.$.$.-.0.XX>XX>X>XcXcXcX>XcX>.$.$.-.eXgXNXNX5.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.H T Y / b.P.I.T.T.T.R.T.Y.I.I.I.H.H.H.", "H.H.H.I.I.H.I.I.I.H.H.H.H.H.H.H.V.P I ~ 2.4.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.cX3Xu.;.%.>.r.3XsXyXN L iXW * c S M X P 8XE # g j.|.6 W _ ) q &XxX&Xb < c f a g b > < < > 7 < < , > < m N B g v v N N B v N B 7Xo. . .X.S x MXs., z e e x z u # l z l e u x n n v v v Z >X;Xt.$.%.-.0.B >X;X;X;X>XgX7.&.&.&.yX,XyXt.%.-.u.+X$XNX3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.U T R x.v.J.I.Y.W.W.T.T.T.I.I.H.I.H.H.", "H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.D.P R ~ 2.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.#X$XuX0.e.e.uX$X$X@XM 3 @ @ x . o f = @ = r e V V d 9 @ F 7 k k k d ; x ; x < < 1 ; ; ; ; : : : : #.+XO.| n ' X.| O.| | | | . . ...X.C > . > , > 0.: o > 0.; o > 0.: O n _ nXE OX#XZ vX>X:X;.-.-.0.XX1X;X>XvX8.=.-.=.=.-.u.,X,X . . a s s a f > > > a f f < a s e x a a > a a s l s a x < : 1 < f d u e u s d b : : +XX.} o.) ~ o...[ ..[ [ .. . . . .o.+Xl > u b 1 p.0.> 1 p.0.> , p.0., P W m.F .XOXB =X-X:XeXu.u.OXB :X-X-X-Xa.u.u.i.u.u.hX:X-X:XpXu.kXvXmXNX4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.3.4.Q Y R x.v.P.Y.T.T.W.W.T.T.Y.Y.Y.Y.I.I.", "H.H.H.H.H.H.H.H.I.H.H.I.H.H.H.P.S.Y I ~ 8.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.g : 6 g i.}.# > > z u f i.}.# #.f y 7 : #.#., a j t u > v h . > 0.- s < : ; : ; < * C y $ ) {.X 1 iX........) W o. . ..... . .[ ......8XV s N b X > - f s s 1 , a O X 7 p $ 9 Z .XM #X#X#X#X#X-XOXM #X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X*XiXNXNX3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.U Y R x.v.P.I.T.W.T./.T.T.Y.Y.Y.Y.I.Y.", "F.H.H.H.H.H.H.I.H.H.I.H.I.H.F.H.V.I I ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.m #.6 g j.|.. v S b # g j.OXX s.NXf l : : : 7 g j.j s v S Z e 1 d.< u 7 m : < x x * ] C = ] _ . $Xo.} ....o.D ' o.o.[ o.o.o.o.o.o.o.8X#.1 v S M X OXj |.oXoXOXa.#Xe %X= o {.kXkXt XX$XA f.>.;.>.5.5.A Z f.&.5.5.5.4.3.>.>.&.4.>.yX,X;XvXbX$XmXNX3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.U T ^ x.v.P.I.T.W.W./.T.T.T.Y.T.T.Y.T.", "F.F.H.H.H.H.H.I.I.H.I.H.H.H.I.I.S.G Y ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.m : > e V r s - O l s h d e 1 D - d : ; ; f r V V d . o s - f , s ; 7 1 x 1 g $ * # o = $ s _ ] ` ' ] +.n ) ` 7X_ 7X_ _ 7X7X` 7Xg : x z # s e h #X@XZ B @X$XXXz $X+X6 {.*X#Xt XXoXA -.8.y.q.$.-.0.A ;.$.$.$.$.$.2.y.t.t.u.t.gXX;X=X X|. X4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.Q R ^ x.V.S.I.T.T.T.T.T.T.T.T.T./.T.T.", "H.H.F.H.H.H.H.H.I.H.H.H.I.H.H.I.S.I Y ~ 5.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.x > a > . 6 a g 7 < f > 6 6 k > . 6 f s u l a > X > f s > 6 a d u u a d l z s l s . X X b l e e b n n n D n f s z > b c n n v s a s z x l l z 7 n n n x h h x b x 6 x d e t k y y Z oXA :.yX4XvX;.:.0.B >.=.$.$.$.=.y.4X,X1X3X,XzXg.y.1X>Xh.9.8.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.H Y ^ x.v.U.Y.T.T.W.W./.T.T.T.W./.W.T.", "F.H.H.H.F.H.H.H.H.I.H.I.H.H.H.I.X.I I ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.3.x : > # v d x : : : > #.k y # ; g y 7 h i.h u > > z > s v h u a 0.- u - p.> $ ) y O X b # $ E {.p { +.+.+.+.E s s.mXu G mXnXG r %XS X z N x X n m.nXG {.kX-Xt c Z N N N N Z N m S oXoXB i.#X@X@X0.e.Z M a.q.$.=.=.=.%.6.*.&.5.*.&.$.$.uX : #.: , s.NXf # s.NXf # g j.h e v S v . b S Z . 1 d.1 u #.p.g $ ' C X S N o n ' S * W W @.W L n s S S z E _ _ F r }.XXe c S N . I ~ +XF &X*X Xt Z @X@X@X@X@X@X@X@X@X:XXXx n n n z }.6Xl g N B i.e.e.e.=.-.$.$.$.$.=.-.2.gX 6 e . l w _ nXR {.*XkXt XX@XN B B N N a.q.%.$.$.-.6.t.gX 6 6 f s l s f 6 X # a > . > f s . s 7 f 7 c b l l z x n n < g e X l s s b u e u f s e X 7Xo...{ ..O.Z > > . f f h h k s > # a f > f h f s > s f m x c 6 N z h oXX %X= O .X= o T ' iXF {.*X#Xt c #X1X=X1X@XN N C i.=.6.u.lX3X = p t > q N y u > . 6 u ; g y 6 * C y - : : < t h k z G jXjX; < * ) y - : < , 0.- e $ ) {.p o... . .O.B , s.A {.kX*Xp x v z X b S h |.u N z o oXvX XXXb S v V oXx $X7X. $X7Xu b G G 0 h {.{.h M #XvX7.&.fX,X@Xv B pXgX3X>X;X:Xh.&.$.-.r.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.3.4.4.4.4.4.U R ^ x.v.P.Y.T.T.T.T.T.T.T.T./.W.T.(.", "H.F.F.P.H.H.H.H.H.H.I.H.H.H.H.I.V.I I ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.m #.> p %Xh > @.` C X m S v X s.NXf > E ' N : #.: x V i.h z W +X^ 5 < * ` S - #.> 1 d.#.X * ] S C o.....o.O.S z IXs.1 &X*X Xt v S N . v mX6 # v S N X XX8.8.A 6 6 e V oX6 v c o v d e Z @X@XOXM gXgXOXM #X$Xi.e.uX#X#X.XZ X;X>X;Xg.=.$.$.=.u.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.3.4.4.4.4.U R ^ x.v.U.E.T.T.T.T.T.T.T.T./.(.W.T.", "F.H.F.F.H.I.I.H.I.I.I.I.I.H.H.I.S.I T ~ 6.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.x ; x y o o 6 = = $ . O - O u 1 D - s = * $ - : : x V V h b 9 F F ; f $ * $ - : g f , s # * $ N | ] ] ` +.n > # , , h k {.d 6 6 e e l > r e 6 6 e u a.-.-.a.z > d Z M f > l z c 6 6 l b N M f 6 c h > b M v B 6 v v o N >X;X;X;Xg.=.$.$.$.-.t.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.G R T x.v.U.T.T.W.T.T.T.T.T.Y.T.T.W.(.", "H.F.H.H.H.H.H.I.H.I.I.I.H.I.I.I.S.T I ~ <.4.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.M N N V i N N M M N M N N M N N M V f < v n x V V h c b b z s f h V f , x s s . a e . . a a n n D v n n n n f > > 6 s s 7 , f a # > s a # 6 a f # 6 z A -.;.a.u S d *XoX m v f $X, m m f 1XoX> S d }.S d Xc j 6 S C X Z ;X;X>Xq.=.$.$.-.*.t.jX4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.>.n T T x.v.P.Y.T.T.W.T.T.T.Y.T.T./.T.W.", "F.H.H.H.H.H.I.H.I.I.H.I.I.I.I.I.V.I T ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.t.6.6.2.6.u.1X;X2X1X>X>X;X1XpX6.6.r.C G jXiXn &XkX}.l r i.h z &XkX Xi : < = p y $ g > . P jXjX' . .{ { X.S d.S a g : X r %X= X r oXS X , j - o a.;.=.a.b mX6 h OX> s.s.f OX> s.s.f #XOXz mX6 o mX6 # < ; n z i r B cX>XcX%.-.-.*.t.gX,X>X4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.U T T x.v.P.U.R.T.T.W.T.T.T.T.T.T.W.T.", "H.H.H.H.I.H.I.I.I.I.I.I.I.I.I.I.V.I T ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.uX$.-.$.=.2.,X.t.>X>X,Xw.-.=.<.N W iX~ * &XkX6Xi g j.|.u &XzX6Xd ; < p %XV i #.k.A s W _ _ ' X. . .{ O.B b IXs.< < d.#.X N iXS # d }.XXi 1 d.#.X A -.-.a.u # e V oX> < < h oX> , < d -XoXz b d r c t o n ~ nX_ :X#XB 1X>Xf.*.t.t.gX3X>X;X;X4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.U T Y x.v.P.T.T.R.R./.T.T.T.T.T.T.T.W.", "H.H.I.H.H.I.I.U.I.I.I.I.I.Y.Y.I.P.T T ~ <.4.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.;XyXt.r.r.yX>X>XdXw.pX,X>X,Xq.$.$.2.B 4 F F x {.k {.f s j h s k k {.h 1 < y o o u O - X s 5 F F ) X. . .{ O.Z . . - s , > a e z N h e e t h e > , f o a.-.:.a.z # > b M a # . b d f . s z B c B @X$X@X@XoXx n W iX' vXoXB h.*.-.y.4X,X>X;X;X;X;X4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.w T U x.v.P.Y.T.T.(.T.T.T.Y.T.Y.T.T.T.", "H.H.H.I.I.I.I.I.Y.I.Y.I.I.Y.I.Y.P.I I ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.lXX>X,X3X3Xy.5.6.%.$.$.2.N l d , a , > 7 k 6 # x f f 7 , f M N v v N N V b N N M j g 7Xo.[ . .O.S > n n f a u u a s u # a s 6 6 a s . d c Z t.d.+Xl v b h oXe .X$ r $X. .X= r vXoXz e u z l l z b F F * bX#XN >.=.2.gX>X;X;X;XX>X4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.&.4.Q T Y x.v.S.Y./.(.T.T.T.T.T.Y.T.T.W./.", "H.H.H.I.I.I.I.I.Y.Y.Y.Y.Y.Y.Y.Y.S.I T ~ <.4.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.cX;X;X;XX#X-X9X} . . .X.Z q mXnXF j - X > g - X e OXS o b S h |.q 7XnXE z S v h OXz $X_ V OXz $X_ c #XOX6 v v O v v . f j Z vX$XN &.-.y.3X>XX,Xy.8.$.=.=.$.=.7.4XfXw.r.w.uXN g h.h u g j.#X. s.NXd . p.NXc l uXq.q.#.q.#.q.q.q.e.@X|.|.$X| o. . .X.Z G 7X+X@.1 d.#.. < d.#.. d .XXXr v mX. > E ` iXF s c d .XoXz B V .XoXz Z }.}.h.uXz S N X S N o C d }.N -XoXm &.$.%.8.2.8.dX>X&.=.-.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.3.4.4.4.4.U R Y z.v.S.Y.R.(./.W.T.T.Y.T.T.T.T.W.", "H.H.H.I.I.I.Y.Y.Y.Y.Y.I.Y.Y.Y.Y.V.I I ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.t.6.6.&.$.$.$.$.$.$.$.7.X,XXv r h h l a h d e - s.1 # - s.- # N B B N B B N N B v g oXjXuXs.o. .[ X.XX9 F F 9 - , a X , , a . t h e # # r o 7 F F @ B #X#X-XXXB @X#X@XXXV #X#X#Xe.A # u e o 7 e o NXz > x v N XXu.$.$.-.=.=.r.XXv v N B N v b c f M b b N N i N v oX,X,X,XuXq.:X:X;XZ 7 $XUXtXS o. . .{ qXXXj x c N M M M M M c M M c b b N V c N N c M M N N B B N N N N B d f C B B B B N M c c v c 6 l r r v N xX:XX>X,X@XN @X;X>X>X;X;X=XN #X>X>X,XuXw.>XN #XfX7.8.%.w.1X>XvXZ x +XNX XS o. . . .[ | | ` | | | ` | | | ` | ` vXZ B gX8.2.2.2.8.7.gX>X-X7.2.2.2.2.2.6.OXZ g.<.2.2.2.7.fX>X;X1X@XN c M |.V c @XX;XvXX>X;XN @XdX8.7.$.;.;XN $Xy.:.$.&.>X:X:X@XB < a.A < A | .. . . . .o..... ...o.[ X. .o.[ } qXoXv XX7.=.=.-.=.:.dX3XsX-.=.=.$.=.*.q.A A ;.=.=.-.;.:.eX,X;Xq.6.8.a.N B B V #Xw.8.8.dX>X>X3XXX;XvXN $Xt.-.-.=.u.1XB $XsXw.*.&.vXZ 7 z l b x m n c 7X} X.{ .. . . . .X. . . .X.{ [ . .[ | +Xv A :.2.q.e.e.#X@X@Xe.q.q.q.w.XXN N XXu.h.r.w.w.r.gX>XxXr.h.w.q.2.7.2.dX#X;.$.-.y.,Xw.uX;X%.$.$.=.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.G ^ Y x.v.P.T.T./.T.W.T.T.T.T.Y.T.T.T.", "H.H.I.I.I.Y.I.Y.Y.Y.T.I.Y.T.T.T.P.P Y ^ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.y.pX,Xy.t.,X3Xg.=.7.>X;X;X>X4Xq.&.B $XdXw.g.pX;X;X;XN @XsXw.h.y.1X-XN #XvX4Xy.=.cXB l l w mXjX* oX| } [ [ [ [ [ .[ { } [ [ { . . . . .| Z Z u.XXN C N N N N C B B C b c XXqX| qXqXqXqXqXqX| 8XqXqXqXqX2Xw.=.=.u.#X&.$.$.y..n Y Y x.v.U.T.T.W.T.W.T.T.T.Y.T.Y.Y./.", "H.I.Y.H.I.I.Y.Y.Y.I.T.T.T.T.T.T.U.I I ~ ,.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.vX,X3X7.$.2.7.%.$.7.X,Xy.-.cXN x S S . W iX+X* #XvX8X8X8X8X8X8X8X8X8X8X8X8XqX[ . . . ...+Xb %XXXA q.gX:X:X@Xf.2.gXXXx XXqX[ [ [ X...[ [ [ [ [ [ ....} X.wXu.-.i.#X4.=.-.y.,Xy.h.fXX>XZ oX>X>X,XsXy.>XB - - s 0 F F q oXcX@X-XzX-X-X-X-XzX@X-X-X-X@X| [ . . ...| XXv b A :.dX,X,XhX-.2.Z c XXqX[ . .{ ...... .[ ..[ . . . .[ +.2Xu.hX X>.=.:.u.,XX;X&.;.=.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.U Y Y x.v.P.T.T.W.T.W.T.T.T.T.Y.T.Y.T.", "I.H.Y.H.I.I.I.I.I.Y.I.T.Y././.T.P.Y Y ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.f.=.-.-.7.4Xg.-.-.7.X3X>XZ b b v f a 7 x a f z z c v z z c m b V c M B c XX| [ . . .} | oXb Z 7.&.g.lXfX8.XXb XX| [ .. . .X.| | | | | | | qX[ . . .[ X.2X-X#XeXh.h.hX>XxXxX;X=XeXh.w.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.w R R x.v.U.T.T.W./.T.T.T.T.T.Y.Y.T.T.", "H.I.I.I.I.I.I.Y.Y.Y.U.T.T.T.Y.T.P.Y I ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.8.$.g.h.uX,XuXg.g.g.X:Xv #X:X:X:X:X:X:X-XN #X;XB v N N v b #X3Xy.:.6.w.>X;X:X:X>XB r j r s V h h e M t h s {.*X*Xd A h.XXb XX| .. . .X.[ | XXc XX7.:.&.h.XXb XXqX[ ...[ | 2X2X5X*X#X-X X}.*X8X[ . .X.o.O.` E qXqXqX8X| qXqXqX| 8XqXqX4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.3.4.4.4.4.Q R Y x.v.P.T.T.W.T.T.T.T.T.Y.Y.T.Y.T.", "H.I.I.H.I.I.I./.Y.T.I.Y.Y.R././.P.I G ~ 2.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.pXpX3XXXcX:X>X:X:XN oX:XfXq.g.6.lX>X;X>X>XZ h 0.j z V g j i V j j > &XkX#Xt p.:.hXoXz XX| } .. . .[ | oXb XXq.q.Z b XX| .. . .[ | 2XxXvX*Xd b c b z *X=X8X[ { . ...+.L } [ [ [ [ } } [ [ } } [ 4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.U Y ^ x.v.U.Y.T.R.R.T.T.T.Y.Y.Y.T.T.Y.", "H.I.H.I.I.I.I.I.I.T.R.I.Y.Y.T.T.P.T T ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.cX>X;X,Xy.y.X,XaX8.r.>XZ v c $X,X4Xy.7.>X;XvX>XZ V t h c V h h z V h h z t y {.t a.=.7.:XoXc XXqX} . . .[ | +Xv C C b S qX} . .[ | cX:X#X@X-X$XmXS N V kX=X=X8X[ . ...] W o... . . . ... .{ [ [ ..4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.U Y Y x.v.E.Y.T.W.T.T.T.T.T.Y.T.T.T./.", "H.H.I.I.I.I.I.I.Y.I.Y.Y.R.T.T.W.U.I I ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.lX;X;X,X7.6.,X;X>XuXh.%.-.2.N @X3Xg.;.X:X-XN #XvX>XfX6.cX>X:X>XZ v M Z v N Z N N N B B B c x m v a.=.$.8.zXoXx XXqX[ . . .{ .+.+.+.+.X. . . .} | cXvX}.m N k $XiXmXZ V bX:X=X=X8X} } } +.W } } } [ } } } [ [ } } [ 4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.U Y ^ x.v.P.T.T./.T.T.T.T.Y.Y.Y.T.T.T.", "I.H.I.H.I.I.H./.I.T.Y.R.Y.T.T.W.P.I Y ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.gX;X;X3Xg.$.y.X;XcX:XN #X:X1XyX5.>X,XX>X>XZ oX;X>X,Xy.8.>X,XcX:X:X@X-X:X:X-X:XsX7.7.7.q.-X:X:X:XyX-.$.7.cX>XXXx XXqX[ . . ........... . . .} | :X>XvXOXs.d.j iX+XMXS V bX;X;X;X;X8X` 8X` E qX8X8X8X8X8X` 8X8X8X8X8X4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.U T Q x.V.U.T.T.T.T.T.T.Y.Y.Y.T.T.T.T.", "H.I.H.I.I.I.I.I.I.Y.~.Q.CX!.!.W.P.Y Y ~ <.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.lX>X,XpX%.=.8.X,X,XN N v :XaXy.XcX;X;X>XZ x $X>X>XsXg.g.r.;X;X>XcX>X>XcX>X,XpX-.$.=.f.cX>X>X>XlX2.=.gXXeX=.=.=.8.XpX8.u.N @X:X;X>X>XcX;X;X;XN #XcXcX;X3Xr.=.;X>X;X>XcX:XN oXvX;X>X3Xu.:.cX;X;X>XcXcX>XcX>XgX6.=.=.gX>X;X>XcXX;X;X>XXXx oX8X| ` 8X` 8X` 8X8X` ` :X;X-X-X:XOXz z c M M V M M Z vX=XvX>XvXcXxXvX>X;X>X>X;X;X;XcX;X;X;X;X;X4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.U Y ^ x.n.~.BXZX!.T.J.Y.Y.I.Y.Y.T.(.T.", "I.I.I.I.I.I.Y.Y.I.!.AX0 9 3 % AX~.G G ^ q.6.4.4.4.4.4.4.4.4.4.4.4.3.4.3.4.4.4.3.5.4.4.4.4.gXcXy.f.g.g.y.cXcXpX7.t.N @XcXcXgXlXlXcXcXcXm #XcXlXcX;XyXr.cXlXlXlXlXzXA oXcXcXlXcXdXw.lXcXlXlXlXlXlXcXlXcXsX7.w.cXcXlXlXlXcXsXw.gXlXlXlXlXlXXXx g M c m m g M m m c m m c v c m x Z zXgXgX@XgXOX7 Z xXlXlXlXlXlXzXlXlXlXlXlXcXlXlXlXlXlXlXlX;X3.4.3.4.4.4.4.4.4.4.4.4.3.4.3.4.4.4.4.4.4.4.4.4.4.Q R H m.VX3 & 8 2 BXI.Y.I.Y.Y.Y./.T.W.", "H.H.H.I.Y.Y.I.I.I.BXHX8 & 3 0 HXBXR I Q k.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.&.4.4.4.4.4.5.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.3.4.2.U R Y m.VX8 9 9 8 FX/.Y.Y.Y.Y.Y.T.W.W.", "I.I.H.I.Y.I.I.I.I.'.JX4 9 3 0 HXAXI T I D 2.4.4.4.4.4.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.3.4.4.3.3.3.k.J R Q M.LX+ & & 8 GX!.I.Y.Y.Y.Y.Y./.W.", "I.I.I.I.I.I.I.Y./.DXJX8 9 3 0 JXZX( I T H d.4.4.4.5.4.4.4.4.4.4.3.4.4.4.3.4.3.4.3.4.4.4.4.3.3.4.4.3.3.4.4.4.4.3.4.4.4.3.4.3.4.4.4.4.3.4.3.4.4.4.3.4.3.4.4.3.3.4.3.4.4.4.3.4.3.4.3.4.4.4.4.3.3.4.4.4.4.3.4.4.4.3.4.4.4.3.4.3.3.4.4.4.3.4.3.4.4.4.3.4.3.4.3.4.4.4.3.4.3.4.4.4.3.4.4.3.3.4.4.3.3.4.4.3.4.3.4.4.4.3.4.3.4.4.3.4.4.4.4.3.3.4.4.4.4.3.4.4.3.4.3.4.4.4.3.4.3.4.3.4.4.4.4.3.,.*.q.D I R H VXLX+ 9 & 9 HX!.I.Y.Y.Y.Y.T.R.(.", "H.I.I.I.I.Y.Y.I.Y.DXJX3 9 3 9 JXDXL.^ T I D k.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.5.4.2.d.I R G Q M.LX9 2 8 & HX!.I.I.Y.I.Y.Y././.", "I.I.I.I.Y.I.Y.Y.Y.DXJX4 0 9 9 JXFX).P.^ G I D k.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.2.d.R I R H ! M.LX9 2 8 9 JXBXY.Y.H.Y.Y.T./.W.", "I.H.I.I.I.R.I.Y.T.DXJX8 % 8 8 JXDX/.).L.^ T G D k.7.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.3.3.4.4.4.4.4.4.4.4.3.4.4.4.3.4.4.4.4.4.4.3.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.3.4.,.k.d.T G I G Y z.VXLX9 2 8 3 JXBXY.I.I.I.Y.Y././.", "I.I.I.I.I.I.Y.Y.T.DXJX8 % 8 % JXDXR.).`.V.I I T ^ d.k.2.1.&.<.<.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.<.,.,.,.,.,.<.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.<.,.,.,.,.<.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.<.<.,.,.,.,.<.,.,.,.<.,.,.,.<.,.,.,.,.<.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.7.k.( G T E G q Q l.^.LX9 % 2 9 JXBXY.I.I.I.Y./.R.W.", "I.I.I.I.I.I.I.Y.T.DXJX% % % & JXAXW.(._.E.^ T I G G E I P I P I I P I I I P P I I I I I Y I Y Y Y I Y P I I I G I P P I I I I I I Y I Y Y Y Y Y I I G I I Y G I I U I I I I I I P I I I Y Y I I I P I I P I I P P I I I P I Y I I I I I I P I I I I I I I I I I I P I I I I I P P I I I I I Y Y I I I I I I I G I T I R T I I I P Y I Y P T Y G I Y I I I G Y Y I U I I Y P I T T E T Y q w Q x.c.VXJX9 @ 9 & JXAXI.I.I.I.Y.Y.R.T.", "I.H.I.H.I.R.I./.Y.DXJX8 % + q JXGX`.).(.CXL.~ I R R G I I I P I Y I I Y P T P I I I I T I I Y T I I I I I T I I I Y I Y I I I I I Y G I I I Y Y T T T R I I R T I I I T G I I I I I I P I I T T I I I I Y I I I I T I I I I I I I I I I I I I I I P I P I I T I I I I I Y P I I I I I I I G I T I I I T I I T T I I I I I I I I I I I I I I I I I I I T T T T T I I I I I I I P G n Y q Q H ! c.v.AXJX9 2 8 9 HXAXI.I.I.I.Y.Y.R.T.", "I.H.I.I.I.Y.I.Y.Y.DXJX9 9 8 & PXLX~.`.Q.)._.~.^.n.l.^ H Y n P Y P T P P U I P U T D P P Q U U T U P U Q U U n U G P D P P P P U Q U U U U U T n U U U U U U U U P P q P P G P T P P G P U U G T P P P P P T U G P P P P P P P n Y U U G U P G U P G P G P P G G U U U Y n G U Y U P U P G G Y P T Y U U P P Y P Y T U G I T P G P I P P G G U U I G Y P G Y I G Y Y Y T P T q n q q w H J Q l.v.P.HXPX9 9 3 + JXBXI.U.Y.I.Y.T.T./.", "H.I.H.H.I.U.Y.Y.Y.DXJX8 + 3 9 PXPXLXFXDXDXDXDXBXVX^.^.M.l.~ ! D Q Q Q Q Q D Q Q Q Q ~ Q Q Q Q Q Q Q Q Q Q Q J Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q D Q Q Q Q H D Q w Q Q Q w G D Q w Q Q w Q Q w Q Q H D H D Q H H H Q w Q Q Q Q H D w Q Q D Q H Q D w Q H w H Q H w H H Q w w Q H w w w H H H w H w w H w H w w H H w H H H H H w H w H w H H w w H w w H w w D l.l.M.M.M.NXVXVXVXAXLXIXPX3 9 9 * JXAXT.Y.Y.Y.Y.Y.T.T.", "I.H.I.I.I.I.I.Y.Y.DXJX8 9 3 9 PXPXPXJXJXJXJXJXIXJXLXFXVX^.l.m.c.m.l.m.l.l.m.l.m.m.l.l.l.l.l.l.c.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.m.m.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.z.! l.z.z.c.z.z.z.z.z.z.z.l.! z.z.z.z.! ! ( z.z.l.x.z.l.l.z.l.z.l.l.l.c.l.l.l.z.z.c.z.l.x.z.! ! z.! z.! ! ! ! ! z.z.! ! ! ! ! z.! ! ! x.! ! z./ z.( / ! z.! z.! ! ! ! K ! ! ! ! ! ! ! x.! ! ! m.M.VXVXLXUXLXLXLXLXJXIXPXPXPX8 3 9 + JXZXT.Y.Y.T.Y.T.T.T.", "H.I.I.I.I.I.U.T.Y.SXJX8 9 9 3 9 9 9 9 8 9 9 9 9 9 & 3 3 ^.^.n.n.n.M.^.n.n.^.M.n.n.n.^.M.M.^.n.n.n.n.n.n.n.n.n.v.n.n.n.n.n.n.n.n.n.n.n.n.n.^.n.n.^.n.n.n.n.n.v.n.n.n.v.n.v.n.n.v.v.n.v.v.v.v.v.v.v.v.v.v.v.v.v.v.n.V.n.v.v.v.n.v.v.n.v.n.v.n.v.n.n.n.n.v.v.v.v.v.v.v.v.b.v.v.v.v.v.v.v.b.b.b.b.v.v.b.b.v.v.b.b.v.v.v.b.b.v.v.( L.b.b.b.b.b.b.v.b.b.v.b.b.b.b.v.b.b.v.b.b.^.VX9 & & & 2 2 9 0 2 9 9 & 9 8 8 + 0 JXAXT.T.Y.T.T.T.T.T.", "Y.Y.H.Y.I.Y.I.Y.Y.BXHX0 9 3 0 8 % 0 4 2 2 9 3 3 3 8 9 + FXE.~.~.R.~.E.~.~.~.~.~.~.~.~.^.E.E.E.E.~.E.E.E.E.E.U.E.U.^.E.E.~.^.E.E.^.E.E.^.E.^.E.~.^.E.E.E.E.E.U.U.P.E.P.E.P.P.P.P.P.P.P.P.P.S.P.P.P.U.P.P.P.P.P.U.P.U.U.U.P.U.P.P.P.P.E.P.P.P.U.P.P.P.E.P.P.P.U.P.P.P.S.P.P.S.S.P.P.S.P.S.S.S.S.S.P.S.L.V.V.P.V.P.L.P.V.L.V.P.V.V.S.S.S.L.S.P.L.P.P.V.V.V.P.V.V.P.S.V.P.V.~.FX9 8 8 9 0 2 0 8 2 + 8 8 & % 4 9 + HXSXT.T.T.Y.T.T.T.W.", "H.H.H.H.I.Y.Y.Y.Y.BXFX2 9 9 2 9 % 2 % % 8 % 8 0 % % % 8 FX!.~.!.!.!.!.BXBXBXBXCXBXBX!.BX!.!.!.`.BX~.~.E.~.W.~.~.~.~.~.!.!.!.!.!.!.!.!.!.BX!.!.`.!.!.~.~.!.Q.~.~.R.E.R.~.E.~.R.T.E.W.E.T.E.Y.U.T.E.U.U.U.E.Y.Y.E.T.E.U.R.E.R.Y.E.R.W.E.W.W.~.W./.E.W.R.E.~.T.E.U.E.U.I.U.U.I.T.U.U.U.U.U.U.U.U.U.U.U.I.I.U.I.U.U.H.I.U.I.I.H.I.U.U.H.J.U.H.H.H.U.U.U.U.H.H.U.P.U.H.U.H.U.BXFX+ 8 8 3 9 9 9 9 3 9 8 0 9 2 3 8 & HX!.T.T.T.T.Y.Y.T.T.", "H.I.Y.Y.I.I.Y.Y.Y.R.DX4 3 3 9 9 8 0 9 8 & & 2 9 + + 9 3 ZX`._.SXAXSXSXDXBXSXDXSXDXSXSXSXCXCXBX_._.!.].!._.).).!.].!._._.BX!.!.SX_._._.CXCXCXCX_.'._.BX_.).!._._.!.!.).).Q./.(./.T.T.T.T.T.T.T.R./.T.T.T.T.W.T.`.T.T././.R./.R.W.T./.W.).W.`.).).(._.W./.T./.T./.T.T.R.T.T.T.T.T.T.T.R.Y.R.I.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.R.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.T.Y.Y.Y./.T.Y.I.Y.Y.Y.Y.Y._.FX4 0 9 9 8 2 9 9 9 9 8 2 & 8 & 9 2 DXW.T.T.T.T.Y.Y.T.T.", "H.I.H.H.I.I.Y.Y.R.Y.!.VXGXHXJXJXJXJXJXJXJXJXJXJXJXJXKXAXCXW.SXZX'.SXSXSXDXDXSXSXSXSXSXSXSXBX_._._._.!.Q.)._.!.!.!.'._._._.'.!.'._.SX_.CXCXCXCXSXCX_._.)._._./.).).).).).).).(.(.T.R.T.W.T.T.T.Y.T./.R.T.W.T.W.T.W.W.T.T.T.W.W./.(.(.W.W./.).(.`._._.W.W.(.(.W.T.R.T.T.T.T.T.Y.T.T.T.Y.Y.Y.I.Y.Y.Y.Y.T.T.Y.T.Y.R.Y.Y.I.Y.Y.Y.Y.Y.Y.Y.Y.Y.T.Y.Y.T.Y.Y.Y.Y.Y.Y.I.Y.Y.Y.Y.Y.!.FXFXKXKXJXJXPXJXJXJXJXJXJXJXHXHXHXAX!.Y.W.T.T.Y.Y.T.T.T.", "H.H.I.H./.I.I.Y.T.T.I.`.CXDXFXBXDXDXDXDXFXDXDXFXDXZXBXSXY.BXCX'._.SXCXDXSXDXSXSXSXSXSXSXCXCXCX_._._.!.).).`.).(._._._._._._._._.CX_._.CX_.SX_.'.CX_._._._.).)._.Q.`.W._.).(.W.(.W.R.T.T.T.T.Y.I.T.T.T.W.T.T.T.T.T.T.R.`.W.`.W./.R.R.W.CXW.T.`.).).W._.R.W.W.).W.W.T.T.T././.T.Y.T.Y.T.Y.Y.Y.Y.Y.Y.T.T.T.T.T.T.T.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.I.`.T.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.~.ZXZXFXAXFXFXFXFXFXFXZXFXFXAXBXBX!.Y.R./.T.T.Y.Y.T.Y.T.", "H.Y.I.I.H./.I.Y.T.T.T.T.T.R.(.).).!._.).`.!._.!.CX'._._._.CXCXCXSXSXCXSXSXSXSXDXSXSXSXSXSX'.CX_._._._.!._._._._._.).(._._._._.CX_._.SX_._._.BXCXCX_._._.CX_._.).).Q.(././.(./.W.W.T.W.T.T.T.T./.T.T.T.T.T.W.T.(.(.T.W.W./.(.Q./.)._._.W.`._._.)./.).R.).).R.T.(.W.T.T.T.T.T.T.T.T.Y.Y.T.Y.T.T.Y.T.Y.T.T.T.T.T././.T.T.T.Y.T.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.T.T.Y.Y.Y.Y.Y.Y.E.Y.I.U.Y.U.U.Y.Y.~.T.T.~.T.(.R.W.T.T.T.Y.Y.T.T.", "H.H.H.I.I.T./.I.Y.T.T./.W.W.W.W.).).!._.!._._._._._.CXCX_.SXCX'.CXSXSXSXSXSXSXSXSXDXCXSXCXCXCX_._._._.)._.).)._.`._._._._._._._._._._._._.CX_.CX_._.SX`._.).`.).).).).(.).R.T.(.W./.T.T.T.Y./.Y.T.T.T.T.T.W.(.T.(./.(.(.T.R./.)././.).).).).).(.(._.W.).`.W._.W.W.W.T./.T.T.T.T./.T.T.Y.T.T.Y.Y.Y.T.T.T.T.T.T.T./.T.T.T.T.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.T.Y.Y.Y.Y.T.T.T.Y.Y.Y.Y.Y.Y.Y.I.I.I.I.I.I.T.Y.Y.Y.T.T.W.W.T.T.T.T.T.T.Y.Y.Y.T.", "H.Y.Y.H.I.I.I.I.Y.T.T.T.W.W.).).Q.!.)._._.).!._._._._.CX_.SXBX_.CX_.SXCXSXSXSXSXZXCXSXSXCXCXCXCX_._._._.)._._.).)._.)._._._._._._._._._._._._._._.!.Q._.].Q.Q.).).`.`.`.W.W.(.(./.T.T.T.T.T.Y./.T.T.T.T.T.T.T.(.R.T.T.T.T.T.R.(.T.(.)././.(.).(.W._.R.(.(././.W.W.W.W.W.T.T.T.T.U.T.T.T.T.T.T.T.T.T.T.T.W.T.T.T.T.T.T.Y.T.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.T.Y.Y.I.Y.Y.I.I.I.I.I.Y.I.I.Y.Y.T.T.T.R.T.(.T.Y.T.T.Y.Y.Y.Y.T.", "H.I.U.I.I.I.I.Y.Y.T.T.T.T.(.).W.).).)._.`._._._._.SX_.CX_.BX_.CXCX_.SXSXSXSXSXDXDXSXSXCXCXCX_.CX_._._._._._._.).)._._.)._.`.`._._._._._._._._._._._._._.`.`.`.`.`.).Q.Q.W.W.).W.T.W.T.T.T.T.T./.T.T.T.T.T.T.T.W.W.(.T.T.`.U.P.n.n.U.`.T._.W.L.V.V.~.`.`.!.W.W.W.W.R.(.T.T.T.T.T.T.T.T.T.T.T.T./.T.T.T.T.T.W.T.(.T.T.T.T.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.I.Y.Y.Y.Y.Y.Y.Y.T.Y.T.I.Y.Y.Y.I.I.I.I.I.I.I.I.Y.Y.Y.Y.Y.Y.W./.T.T.R.T.T.T.T.I.Y.T.T.Y.", "I.H.H.I.I.I.Y.T.T.T.T./.(.(.W.W.R.).).!._.!._._._._.'.'._._.CXCXCXSX_.SX_.DXSXCXSXSXSXCXCXCXCX'._.'._._._._._.).)._.(._.)._.`.).)._._._._._._.)._._.ZX4 2 8 % % 8 2 8 8 2 % 8 W.T.T.T.W.T.T.T.T.T.T.T.T.T.W./.`.Y.T.T.).T./ % % + 2 / `.L.0 + 8 % 0 n.& 2 8 L.T.(./.(.(.W.T.T.W.T.T.T.T.T.T.T.T./.(.T.T.T.W.W././.T.T.T.T.Y.Y.Y.Y.Y.Y.Y.I.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.T.T.T.Y.Y.Y.Y.Y.I.I.I.I.I.U.T.Y.Y.Y.Y.Y.Y.T./.W.T.T.T.I.T.T.I.Y.Y.Y.", "H.Y.I.I.I.Y.Y.Y././.T./.(.(.(.).`.)._.).!._._._._._._.BX_._.CXCXSX_.SXSXCXSXCXCX'.CXCXSXCXCXCX'.SXSX_._._._.)._._._.)._.)._.).!.).`._.).)._._._.).).BX2 % & 8 + 9 3 0 + 0 & 9 /.T.(.T.T.Y.(.Y.T.T.~.T.T.T.T.T./.I./.`.T.n.+ 9 & % 0 v.~.H + 8 8 8 J L.0 + 2 n.W.).(.(.T./.(.W.Y./.T.Y./.T./.T.T.W.W.W.W.T.T.T.T.T.T.T.Y.Y.T.Y.Y.Y.Y.Y.I.Y.I.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.I.I.T.T.I.I.I.I.I.I.I.I.I.Y.I.Y.Y.Y.Y.Y.T.T./.T.T.T.Y.Y.I.T.Y.Y.T.", "Y.H.I.I.I.I.Y.T.T.T.T.T.W./.(.W.Q.).)._.).)._._._._._.SX_._._.CX_.SXCX_.CXCXCXSXCXCXCXCXCXCXCXCX_._._._.)._._.)._.(._.)._._.).).)._.`._.)._._.`.).'.R.4 2 4 2 0 2 8 & 4 2 4 2 Y.~.T.T.`./.W.T.(.Y.T.Y./.(.Y./.T./.Y./.T.x.+ 9 9 / V.T.T.4 % + H v.L.E.( x.x.U._.W.T.T.).T.T.T.E.T./.T./.Y.`.W.T.W.T.T.T.(.T.T.T.T.T.T.T.T.Y.Y.T.Y.Y.Y.Y.Y.I.Y.Y.Y.Y.Y.Y.Y.Y.T.T.T.T.I.I.Y.I.I.I.I.I.I.I.Y.I.Y.Y.I.Y.Y.Y.Y.T./.T.T.T.T.I.Y.Y.Y.Y.Y.", "H.H.I.I.I.Y.T.T.T.T.T.T.W.W.W.W.Q.).`.`._._._._._._._._._._.BXCX_.CXCXCXCXCXCXCXCXCXCXCXCXCX'.SX_._._._._._._.)._.(.(._.(.(._._._.)._._.)._._._.).(._.`.ZX`.W.0 8 3 0 W.~.W.W.U.V.n.v.W.x.( V.E.(.).V./ / / / V.E.`.T.L.J 2 8 5 v.L.W.v.8 9 8 ^ L.T.U.L.V.v.T.R.`._.`.v.x./ x.v.E.E.(.T./.T.).W.W.W.T.W.T.W.T./.T.T.Y.T.Y.Y.T.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.I.T.Y.Y./.I.I./.Y.I.H.I.I.H.H.I.I.Y.I.Y.Y.I.I.Y.Y.T.T.T.T.T.T.I.Y.Y.Y.Y.Y.", "Y.Y.Y.I.I.T.I.T.T.Y.T.T.T.W.T.`.Q.).).).)._.)._._._._._._.CX_._.CXCX_.CX_.CXCX_.CXCX_.CXCX_.'._._._._._.`._.)._._.`._.(.`._.).)._.`.).`.`.).`.`.R.(.).(.W.`.R.% 8 9 8 R./.T./.v.% % + ~ 4 % H T.P.G % 0 & 8 4 4 G v./.G 2 8 & 2 % J V.% 8 8 & % 4 V.C.% 3 0 n.(.Q.n.G + 8 9 % + 4 b.W.R.Q./.W.W.W.T.T.W.W.T.(./.T.T.T.T./.Y.T.Y.I.`.Y.I.Y.Y.Y.Y.Y.Y.Y.I.I.Y.Y.Y.I./.I.I.I.H.I.I.I.I.I.I.I.I.Y.I.Y.Y.Y.Y.Y.T.T.T.Y.T.I.I.I.I.I.Y.Y.", "Y.I.Y.I.Y.U.Y.T.T.Y.Y.T.T.T.W.(.).).Q.!.)._._._._._._.`._.'.CXCXCX_.CXCXSX_._._.'.'._._._._._._.'._._._._._._._.).).`._._.(.)._._.).`.`.).).`._.!.).`._.`.W.(.8 9 + + R././.T.v.% % 8 + 0 % b.W.J 4 & 9 8 8 8 8 % J /.G 4 9 8 & * J v.8 & 8 8 8 2 n.n.* 8 % n.Q.Y.G 2 & 9 9 0 % 2 4 L.Q.T.).W.W.W.W.W.T.W.T.W.T.T.T.T.T.Y.T.Y.Y.Y.Y.Y.`.Y.Y.Y.Y.Y.Y.Y.Y.I.Y.Y.Y.I.I.I.I.I.I.H.I.H.I.I.H.I.I.I.Y.Y.Y.I.Y.Y.T.T.T.Y.I.I.I.I.I.Y.Y.T.", "I.I.Y.Y.Y.T.Y.Y.Y.T.T.T././.W.W.).).).).).).)._._.)._.!._._._.'._._._._._._._.SXSX_.SXSX_.SXSX_._._._._._._._._._._._.).W._.).).).).).).).).).T._.).W.W.`.W._.+ 8 8 8 T.(./.).v.+ 0 8 0 b.b.~.T.J G 4 G E.E.J 2 8 4 T.S.^ + 2 8 v.L.T.n.% 9 8 ^ v.U.v.+ 8 8 v.).x.2 + 4 ( ~.v.0 2 4 / W.T./.).W./.W./.W.T.T.T.T.T./.T.(./.T.T./.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.I.Y.Y.Y.Y.Y.I.I.I.I.I.H.I.I.I.I.I.I.I.I.I.Y.I.H.Y.Y.Y.Y.Y.T.T.Y.I.I.U.Y.Y.Y.Y.", "Y.I.Y.Y.Y.T.Y.T.T.T.T.T.R.T./.W.(./.).).).).)._.)._._._._._._.'._._._.'._._._.SX_._._._._._.CX_._._._._._._._._._.)._.)._.`.).).`.).).(.(.).)._./.(.).(.).).W.8 & % % W./.(.Y.v.2 8 + ! /.(.T.W./.`.~.V./ J 0 2 0 @ W.T.( 0 2 0 W.W./.R.8 0 2 / !.T.V.% 2 2 v.Q.H + + G I././.L.E.T._.W.(.(.W.).`.T.(.W./.T.T.T.T.T.T.(.Y.T.Y.Y.Y.Y.Y.Y.`.Y.Y.Y.Y.Y.Y.Y.I.Y.Y.Y.I./.I.I.H.I.I.I.I.H.H.I.I.I.I.I.Y.I.H.Y.I.Y.Y.T.Y.I.Y.I.Y.I.I.I.Y.", "Y.Y.Y.Y.T.Y.Y.T.Y.T.T.T.T.W.W.W.W.).).).).).).).)._._.!._._._._._.SX_._._._._._._.CX_._._._._._._._._._._._._._._._._._._._.)._.).)./.).(.).).(._._.(.).(.R.R.% 8 % % R.Y./.W.n.8 & 9 n.T.)./.T.V.J + % % % q 9 & 0 W.(.( % 8 8 `.W.].R.8 & + b.T.W.n.% % % v.!.J % + H `.T.(.T.R.).W.W.(.).W.(.(.T.(.T./.T.T.W./.T.T.T.T.T.T.T.(.Y.(.Y.I.I.I.`.Y.I.Y.Y.Y.I.I.I.I.I.I.I.I.I.I.H.H.I.I.H.I.I.I.I.H.I.I.H.I.H./.Y.I.Y.H.Y.H.I./.I.Y.", "I.Y.Y.T.Y.T.Y.T.T.Y.T.T.T.R.W.W.W.(.(.(.W.`.!.!._._._._._._._._._._._._._._._.SXSX'._._._._._._._._._._._._.CX_._._._._._._._._._.).`.(.).(.(._.(.(.(.(.W.W.T.9 8 & + W.T.W.T.C.4 & & V././.~.T.4 % % J n.T.K 2 % % _.T.b.8 2 % R.ZX`.).% 8 2 ( `./.V.& & 8 n.W.J * % G W.Q.R.v.( v.v.`.).)./.(.(.(.(././.T.T.T.T.T.T.T.T.T.T.T.Y.Y.(.Y.Y.I.Y.Y.Y.T.I.Y.I.I.I.Y.I.I.I.I.I.H.I.I.I.I.I.I.I.I.I.I.I.H.I.H.I.I.Y.T.I././.I.Y.I.Y.Y.Y.", "Y.I.Y.Y.Y.T.T.Y.T.T.T.T.T.W.T.W.(.(.(.).).`._.).)._.).`._._._._._._._._._._._._._._._._._._._._._._._.CXCX_._._._._._._._.)._.).`.).).).).).(.(.(.(.(.W.W.W.R.8 2 % % T.T.Y.T.L.% & + L././.~.L.2 0 0 / n.( 0 8 % 8 `.(.( 2 9 % Q.R.R.Q.0 8 8 x.W.).V.3 & 2 V.T.b.+ % + J v.c.q 0 4 H !.W.W.).W.(.(.(.(./.T.T.T.Y.T.Y.T.(.Y.T.T.Y.(.Y.Y.Y.`.Y.Y.T.I.T.T.I.T.I.I.I.I.I.H.I.I.H.I.I.I.H.I.H.H.I.H.I.H.H.I.Y.I.I.Y.I.H.I.I.H.Y.T.Y.Y.", "I.Y.Y.Y.Y.T.Y.T.Y.T.T.T.R.T.T.W.W.(.(.(.).)._.).)._.)._.!._._._._._._._._._._._._.CX'.'.CX_._._._._._.CX_.CX_.SX_._._._._._._._._.(.).(.).).(.).(.(.(.(.(.W.(.% % 0 2 W.T.W./.v.2 0 & V.W.T.`.L.4 2 & & 2 2 0 9 9 4 E.]./ 8 % % Q.Q.).T.% % % ( `.(.L.+ 9 @ L.).T.H 2 8 + % 8 8 + 2 P._.`.`.).).(.(.(.(.W.T./.W.T.T.T.T.T.T.R.T.Y.Y.Y.Y././.Y.Y.Y.Y.Y.Y.Y.Y.I.I.I.I.H.I.H.I.I.H.I.I.I.H.I.H.I.I.I.H.I.I.I.I.I.I.I.I.I.I.I.I.T.T.Y.", "I.I.Y.I.U.Y.Y.Y.T.Y.T.W.T.T.T.W.W.).(.(.).)._.!._.!._._._.)._._._._._._._._._._._._.CX_.CX_._._._._._._._.CXCX_.'._._._._._._._._.)._.).)._.).).`.).(.(.T./.W.% 4 + 4 `.W.W.Y.L.4 + 4 v.`.W.T.T.b.0 0 0 3 ^ S.0 & 2 L.W.( 0 % 2 !.W._.).0 + 0 c.`.(.L.2 0 0 V./.Q.E./ 0 8 8 2 4 H ^.`.(.).).).).(.(.(.T.W.T.T.R.E.T.T.Y.T.R.Y.Y.Y./.Y./.Y.Y./.Y.Y.T.Y.Y.I.Y.Y.I.U.I.I.H.I.I.I.I.I.H.I.I.H.I.I.H.H.I.I.H.I.I.I./.I.I.I.I.I.Y.T.T.T.", "U.I.I.Y.Y.Y.Y.T.T.Y.T.T.T.T.T.W.(.(.(.).).`.!.)._.).).!.)._._._._._._._._._._._._.CX_._._.CX_._._._.'.CX_.CX'._._._._._._._.)._.)._._._.).).).).`.(.(.(.(.(.(.`.R.!.W.R.T.T.Y.`.T.~.~.(./.T._.`.W.E.V.v.~.W./.R._.W.).).).(._.).R._.T.(.(.`.T.R././.).!.!.~.).`.R.`._.`.E.L.L.E._._.).)._.)._.).).(.(.W.W.T.R.T.T.R.Y.R.T.T.Y.T.Y.Y.(.Y.Y.T.Y.T.T.Y.Y.Y.Y.I.I.U.I.I.I.I.I.H.H.I.I.I.I.I.I.H.H.I.I.H.H.I.I.I.I.I.Y.I.I.I.I.T.T.T./.", "H.I.Y.I.Y.Y.Y.Y.Y.T.T.T.T.W.T.W.T.W.W.W.).).).!._._._.!.!.]._._._.SX_._.SX_._._._.CX_.'._.'.CX_._.CX_._._.CXCXCX_.CX_._.).)._._._._.).)._.).(.).).).).(.(.(.(./.(.T.W.T.).W./.T././.(.(.(.W.T.)./.(.)./.(.T./.).W.W.W.R._.).).`./.Q.).`.(././.)./.T.R.`.W._.).(._.).)._.W.)._._._._.(._.)._._.).).).W.(.T.W.T.(.T.T.T.T.T.E.Y.T./.Y.Y.Y.T.Y.T.Y.Y.Y.Y.Y.I.Y.Y.I.I.I.H.U.I.I.H.I.I.H.I.H.H.I.I.H.H.I.I.I.I.I.Y.Y.I.I.I.Y.I.Y.T.(./.", "H.I.I.I.Y.I.Y.Y.Y./.T.T.T.T.T.T.(.(.(.(.).).`.Q.Q.Q._._.)._._._.SX_._._._._.'.'._.CX_._._.CX_._._.CXCX_._.SX_.'._._._._._._.)._._.`.!._._.(.).).(.).).).(.).).(.(.(.`.).W.`.W.T./././.(.W.W./.W.R.(.R.(.).(./.R.)._.)._._.)./.)._.)._.W.W.W.).`.).W._.`._._.).)._.)._._._._._._._.`.`.SX)._.).).).).).(.R.W.T.T.T.T.R.W.T.T.T.T./.Y.Y.T.T.T.Y.Y.Y.T.Y.Y.I.Y.I.Y.I.I.I.I.I.I.H.I.H.I.I.H.I.H.I.I.I.I.I.H.Y.H.Y.Y.Y.I.I.I.Y.Y.T.T.T.", "I.I.I.I.I.Y.Y.Y.T.Y.T.T.T.T.T.T.T.(.W.W.).`.`.)._.Q._.Q._._._._._._._.SX_._.CX'._._._.CX_._._._._.CX'._.'._.CX'._._._._._._._._.`.).!.).(._.).).(.).).`.(.(.).)./.(.).T.W.W.(.`./.)./.).`._./.).W.!.Q.Q.T._.`.`.(.R.(.).Q.)._./.]./.).Q._.W.`.).W._.)./.).).).)._.`._._._._.CX_._._.CX_._._.)._.`.).(.(.(.(.(.W.T.T.T.T.R.T.Y.R.Y.Y.(.Y.Y.Y.T.Y.Y.Y.Y.Y.Y.Y.Y.Y.U.I.I.Y.I.I.I.I.I.I.I.I.I.I.H.I.I.I.I.I.H.Y.Y.Y.Y.I.I.Y.Y./.T./.(.", "H.I.I.I.I.Y.Y.Y.Y.Y.Y.T.T.T.T.T.T.(.(.(./.).Q.Q._.).Q._._._._._._._._._._._.CX_.CX_._.CXSX_.CXCXCXCXCXCXCXCXCX_._._._._._._._._._.`._._._.`._.).`.).).(.(.).).).W.).T.W.(._./.W._./.W.`.W.(.T.W.(.)./._.`._./.Q.(.).`.W._./._.(.R.R.`._.`.).Q.Q.W.`.!.)._.).`.`.!.!._.CXCXCX_._.Q.ZXZXCX).)._.).).).).(.(.W.(.(.(.T.W.T.T.T.T.T.Y.Y.Y.T.Y.Y.Y.Y.Y.Y.I.E.Y.Y.Y.Y.Y.I.Y.Y.I.I.Y.I.I.I.I.H.H.I.I.I.I.I.I.I.Y.H.Y.Y.Y.I.I.Y./.I././.T.", "I.H.I.I.Y.I.Y.Y.Y.T.Y.Y.T.T.T.T.T./.(.(.).Q.Q.Q.Q.Q._.)._._._._._._.CX_._._._._._._._.CXCXCX_.CX_.CXCXCXCX_._._._._._._._._._._._._.)._.)._.).).`._.Y.( ( ( c./ b.`./.).`.T.)._.W./.).W.)./.(.`.(.).)._._.T._.Q.).W.`.).).W.~.`.P.J H '.).!.U.^ J J / _._.ZX_.b.G J ( `.'._.L.x.c.b.( x.].'._._._.).).).(.(.(.R.(.(.(.T.T.T.T.T.Y.(.Y.Y.Y.Y.Y.Y.I.Y.Y.Y.Y.Y.Y.I.Y.Y.Y.I.I.Y.Y.I.I.I.I.I.I.I.I.I.I.I.I.I.I.Y.H.Y.Y.Y.Y.Y.Y././.T.T.", "I.H.I.I.I.I.I.Y.Y.Y.Y.R.Y.Y.T.T.T.R.(.(.(.(.Q.).).)._._.W._._._._._._._._._._._._._._.CXCX_.CXCXCXCXCXCX_.CXCX_.'._._.'.CX_._._._._._._._._._._.(.`.n.4 & + 4 9 % G /.).W.`.W.).W.).(./.`.`.T.W.).R.(.T.!.)._.Q.!.)._._./.).`.L.G + 0 Q._.~.4 0 q q 2 / ~._.! + G q 4 H /.SXJ 9 & + 8 2 ZXQ.ZX_._._.).).).W.).W.(.(./././.Y.T.T.T.Y.T.Y.Y.Y.I.Y.Y.I.Y.Y.Y.Y.Y.Y.I.Y.I.H.Y.I.Y.I.I.I.I.I.Y.I.Y.I.I.I.I.I.I.I.Y.Y.Y.Y.T.T.Y./.T.W.T.", "I.H.I.H.I.I.Y.Y.Y.Y.Y.Y.T.R.Y.T.T.T.T.(.(.(.Q.).)._._.).!.`._._._._._._._._.)._._._._._.CX_._.CXCXCX_._.CX_.CX_._._._.CX_._._.CX_.CX_._._._._._._._.n.3 3 H c.0 % 8 )./.W.v.( ( n.T.W.T.V.L.E./ V.T.V.L.E.x.( E.`.).).).)._.J + 8 + 2 _.).c.2 q !.~.0 + P.P.0 2 ~.R.^ c.U.SXH 2 ! c.c.c.!._._._._.).`.).).).`.W.(.(.W.(.T./.T.T.(.Y.T.Y.I.Y.I.I.I.Y.Y.Y.Y.Y.I.Y.I.Y././.Y.Y.I.I.I.I.I.I.I.I.Y.I.I.I.H.I.I.I.I.Y.Y.T.T.T.T.T.T.T./.", "H.I.H.I.I.I.I.I.Y.Y.Y.Y.T.T.Y.T.T.T./.(.R.).).Q.).)._.W._.!._.).)._._._.).)._.`._.CX_._._.'._.CXCX_._.BX_.CX_._.'.'.CX_.CX_.'.CX_._._._._._._._._._.n.2 9 H c.0 & ( R.)./ + 2 + + ! ~.n.4 + G % ( n.% 2 G 0 9 0 !._.R.)._.`.2 G H 8 2 '._.( 8 J BX!.G 0 c.x.& H c.J ^ E.'.ZX% 0 ( c.v.E.SX_._._._._._._._.)._.).).(.(.W.T.W.W.T.T.T.T.Y.I.I.I.I.I.I.I.Y.Y.Y.Y.Y.I././.H.Y.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.Y.Y.T.E.T./.(.T.T.T.T.", "H.H.I.H.I.I.I.I.Y.Y.R.Y.T.Y.T.T.T.(.T.).W.(.).).).(._._.`.).!._._._._._._.`._._._.CX_._._.CX'.CXCXCXCX_.CX_.CXCXCX_.CX_.'._.CXCXCXCXCX_._._._._._._.n.9 & 2 2 3 0 c._.v.% 0 v.n.+ + L.n.+ + G v.~.L.+ % / ( 8 4 L.)._._.).CXb.!.c.0 + Q._.L.+ + b.c.0 8 c.c.& % q q + 0 ~.E.4 & 8 0 & G E.CX_._._._._.`.`._._.)._.).(.W.W.W.W.T.(.T.T.Y.Y.I.I.I.I.I.I.Y.Y.Y.Y.Y.I.I.I./.H./.Y.Y.I.I.I.I./.I.I.I.Y.I.I.I.I.I.Y.Y.Y.W.T.T./.T.T.T.T.", "H.H.I.H.H.Y.I.I.I.Y.T.Y.Y./.T.T.T./.W.R.W.(./.`.).)._._.)._._._._._.)._.)._._._._._.`._._._._.CX_.BX_._._.SX_.CXCXCXCXCX_.CXCXCXCXCX_.CX'._._._._._.L.8 % J ( J 0 2 v.x.9 % J H + @ ( n.% % c.`.T.n.2 2 v.v.2 2 n._.W._._.Q.ZX_.( 8 0 CX_.!.x.8 4 0 q 0 c.c.% 0 ZX_.q 0 x.~.x.c.E.E.0 4 b.!._._.'.SX_._.`._._.).(.`.(.(.W.(./.(.T.T.Y.Y.Y.Y.Y.I.I.I.H.I.Y.Y.Y.Y./.Y.Y.Y.Y.Y.Y.Y.I.R.R.I.I.I.I.I.I.I.I.I.I.I.Y.Y.Y.E.T.W.T.T.T.T.T.", "H.H.H.H.I.H.I.I.I.Y.Y.Y./.T.T.T./.T.T.(.).W.).).)._._.).!.!.)._._._._._.)._.)._._._._._._._.CXCXCX_._.CX_._._.CX_._.CXCX_.CXCXCXDX_.CXCXCX_.BXSX_._.L.2 0 ( `.v.0 & ( c.2 0 ( x.( ( V.V.4 + L.W.R.V.0 8 n.n.0 0 L.!._.`._._._._.c.8 % _._._.).n.L.!.0 4 n.n.& H _._.J + c._.E.U.W._.H 0 c.SX_.BX!._._._.!._.!._._._.(.(.(.(.W.T.T./.T.Y.Y.Y.I.I.I.I.I.I.I.Y.Y.Y.I.Y.Y.Y.Y.Y.Y.Y.I.I.I.I.Y.Y.I.Y.I.I.I.I.I.I.Y.I.T.T.T.T.W.T.T.T.Y.", "H.H.H.I.Y.H.H.Y.I.I.I.Y.I.Y.T.Y.T.T./.T.T.W.(.(.).(.).`.)._.).).).)._._.`.).)._._._.)._._._.'._.CX'._.CXCXCX_._.CXCXCXCXSXCXCXCX_.SXCXCXCXCX_._.!._.L.+ % 9 & 8 & 0 V.P.2 % ( / H ( T.v.% 0 V.`.R.n.0 % v.n.% 8 L._.).CXCX_._._.c.0 2 CX`.E.2 % c.( 8 0 BX~.4 0 ( m.8 8 n.L.+ 8 m.m.2 0 L.ZXSX_.SX_._.SX_._._.).).).).W.(.W.W./.T.T.T.T.Y.Y.Y.I.I.H.I.I.I.I.Y.Y.T.Y.Y.Y.Y./.Y.Y.R.I.Y.Y.Y.I.I.I.I.Y.I.I.I.I.Y.Y.Y.E.T./.T.T.T.T.T.", "H.H.I.H.H.H.Y.H.I.Y.Y.T.Y.Y.T.T.T.T.T.T.T.(.T.(.).W.).).).)._.)._.)._._._._._.)._.)._._._._._._.CX'._._.CX_._.CXCXCXCXCX_.CXCX_._.CXCXSX_._.SX_._.`.V.4 2 2 4 4 0 c.W.W.c.0 4 4 0 c.W.L.% % V.W.).V.2 2 V.V.+ 4 n._.)._._.SX_._.x.2 4 !.BXBXv.2 4 4 q ^.ZXZXE.0 4 5 2 ( SXZX/ 2 4 5 4 c.ZXBX_._._.BX_._._._._.).).).(.).(./.W.T.T.T.T.Y.Y.Y.Y.I.I.I.I.I.I.Y.I.Y.Y.Y.Y.Y.Y.Y.Y.R.I.R.Y.Y.I.I.I.I.I.I.I.I.I.I.Y.I.Y.T.T./.T.T.T.T.Y.", "I.H.H.H.H.I.I.I.I.I.Y.Y.R.Y.R.Y.T.T.T.T.T.T./.(.(.(.(.`.W.`.`.!.)._._._._._._._._._._._._.SXCX'.CXCX_._._._._._.SX_.CXCX_.CXCXCXCX_.CX'.CXCX_.CX_._._.W.ZX`.W.~.`.`.`.`.`.E.v.V.I.].R./.`.W./.(.T.`.~.~.)._.ZX~.ZX)._.CXZX!._._.DXZX!.DX!._._.!.L.L.DXSXDXCX_.SXL.L.ZXCX_.`.SX~.n.L.~.CXSX_.'._._.SX_._._._._.).).).).).(.W.W./.T.Y.T.Y.Y.Y.Y.I.I.Y.I.Y.I.Y.Y.Y.Y.Y.Y.Y.Y./.Y.Y.Y.Y.I.Y.Y.I.I.I.I.I.I.I.I.I.I.Y.Y.T.T.T.T.T.T.T.T.", "H.H.H.I.H.I.H.I.I.I.I.Y.I.Y.Y.R.Y.T.T.T.T.T.T./.W.(.`.W.).).).).)._._.)._._._._._._._.CX'._.CX_._._._._._.SX_.SX'._.CXCXCX_._.CXCXCXCX_.'._._._._._._.`.).(.).(.(.T.T./.Y.T.W.W././.R.(.W.W.T.(.W.W.).)./.).(._.W._._._.`.`.'._._._._._.SX'.'.SXBXZXSX!.DXZXSXSXCXSX_.`.SX'.)._.!.SX_.`.`.!.'.SXSX_._.SX_.CX!.).).).).).).(.(.T.T.`.Y.T.Y.Y.Y.I.Y.I.I.I.I.I.Y.Y.Y.Y.T.Y.Y.Y.Y.Y.Y.Y.Y.Y.I.I.I.I.I.I.I.I.I.I.Y.Y.T.T.T.W.T.W.T.Y.T.", "H.H.H.I.H.I.I.I.I.I.Y.Y.Y.Y.Y.Y.T.Y.T.T.T.T.T.`.W.W./.W.).(.).`.).`._._._._._._._._._.'.'.CXCXCXSX_.'.CX'._._.SX'.CX_.'._._._.CXCXCX_._.CX_._._._.W.).).(._.(.(././.`./././.(.`.W.T.(.`.W.`.`./._.).).R.(.(.W.(.).).W._._._.)._._._._.SXSX`.SX_.!.SX'.SXCXSXSX'.CXCX'._.CXCX'._._._.!.SXSXCX_.'.CX_.'._._._.!.).).`.(.(.).W.W.W.`.Y.T.Y.T.Y.Y.Y.Y.U.Y.I.Y.Y.I.Y.Y.Y.I.T.Y.Y.Y.Y.Y.Y.Y.I.I.I.I.I.U.I.I.I.Y.I.U.Y.T.T.T.T.T.T.W.Y.T.", "H.H.H.I.I.I.I.I.I.I.Y.I.I.Y.I.Y.Y.Y.Y.T.T.T.(.T.T.W./.`.(.(.).).)._._.)._._._._.CX_._.CXCXCXCX_._._.CX_._._._._.CXCXCX_.'.CX_.CXSX'._._._._._.)._._._.).(.(.`.W././.T.T./././.T.(.)./.W./.T./.(.W.W.)._.)._.).).)._._._._._._.SX_._.SXSX!.CXSX_.SX_.SXSX'.BXCX_.CXBX'.'.SX_.'._._._._.`._.CXSX_.CXCX'._._._.!.).).).(.(.(.)./.W.(.T.T.T.T.Y.Y.Y.Y.I.Y.I.Y.I.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.I.I.I.H.I.I.I.I.I.I.I.T.T.Y.E.T.W.T.T.Y.T.T.", "H.I.H.I.I.I.I.I.Y.I.I.I.I.I.I.I.Y.Y.Y.T.T.T.T.W./.`.T.`.(.`.).).).).`._._._._._._.'._.CXCXCXCX_._._._._._._._._.SX_._._.CXCX_.CX_._._._._._._._._.`.`.R.).(.W._./.Q.(.T././.W./.T.T._.T.(./.(.(.(.).`.`.`.).).).).).)._._._.CX_._.CXCXBXCXSX_.SXSX_.SXCX_._.SXSXSXCX_.SXBX_.SX_.'._.!.SX_.)._._._._._._._._.`.).).(.(.(.(.(.(./.T.(.Y.T.T.Y.Y.Y.Y.Y.Y.Y.Y.I.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.I.I.I.H.I.I.I.I.I.Y.I.Y.Y./.T.E.T.R.T./.Y.Y.Y.", "H.H.I.I.Y.H.I.I.H.I.Y.Y.I.I.I.I.Y.Y.Y.Y.T.T.T./.W.T.W./.(.(.).).`._.)._._._._._._.CX_.CXCXCX_.CXSX_._.SX_._._._._._._.SX_._._._._._._._._._.).).`._.`././.R.).W.T.T.R.(./.W.W.R.W.W.W.W.).W.W.W.(.).W.`.).Q.).`._._._.).!.'.SX_.SXCXCX_._._.CX_._.'._.SX_.SX_.SX_.BXSX_._._._._._.'._._._._._._._._._._.)._.!.).).(.(.(.(.(.T.(.(.T.T.T.T.Y.T.Y.Y.Y.Y.Y.Y.I.Y.I.Y.Y.Y.Y.Y.Y.Y.Y.Y.I.Y.I.I.H.I.H.I.H.H.I.H.Y.H.H.Y.W.T.T.T./.T.T./.", "H.I.I.I.I.I.I.I.Y.Y.I.I.I.I.I.Y.Y.Y.Y.Y.Y.T.T./.T./.`.(.(.W._.(.).)._._._._._.CXCXCXSX_.CXCX_._._._._._._._._.SX_._._._._._._.CX_._.!.`.)._.)._.).).(.(.).R.(./.T././.T./.T./.W.T.(.(.W./.W.W.(.W.(.).(.).).).).(._._._._._.SX_.CXCXSXCX'.CXCXCXSXSX_.SXSX_.SX_.CXSX_.SXSX_.SX_.'.CX_._._._._._._._._._._.).W.W.W.(.).).(./.(./.(.T.T.T.T.T.Y.T.Y.Y.Y.T.Y.Y.I.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.I.I.H.I.I.H.I.Y.I.H.H.Y.Y.I./.Y.E.T.T././.T.T.I.", "H.U.I.H.I.I.I.I.Y.I.Y.I.I.Y.I.I.I.I.Y.T.Y.T.T.T.T./.W.W.T.(.W.(.).).`._._._._._.CXCX_.SXCXCXSX_._._._._._._._._._._._._.CXCX'._._._._.`.)._._.).).).(.W.(.(.(.R.(.R.(.T.T.(.T.T.T.T.(.W.W.W.(.T.(.).(.).).).Q.Q.).)._._._.SXSX_.SXCXCXCXCX'.CXCXSX_.SX_._.SXBX_._._.SX_.SX_._.SX_.CX_._._._.!._._.)._._.`.).).).(.(.(.(.(.(.W.(.(.(.T.(.T.T.T.E.Y.Y.Y.Y.Y.Y.Y.Y.Y.I.I.Y.Y.Y.Y.Y.I.Y.I.I.H.I.H.H.H.H.Y.H.I.I.H./.Y.T././.T.T.Y.Y.I.", "H.H.I.I.I.I.Y.I.Y.H.I.I.I.I.I.I.I.I.Y.Y.Y.Y.Y.T.T.T./././.(.).(.).).)._._._._._._._.CXCXCXCXCX_._._._._._._._._._.SX_._._._.SX'._._.)._.(._._.W._.(.(.W.(.(.(.(.T./.(.T.T.W.T.T.T.T.W.T.W.(.W.(.W.(.(.(.W.).).Q.)._.)._._._.SXSXSXCX'.SXCXCXCXCX_.SX_.SX_.SXSX!.SX_._._._._._.'.CX_._._._._._._.`.`._.)._.).).W.(.`.(.(./.W././.(.T.T.(.T.T.T.T.Y.T.Y.T.Y.Y.I.I.I.Y.Y.I.Y.Y.Y.I.Y.I.H.I.H.I.I.H.Y.H.I.I.I.H.I.I.T.T.T.T.T.T.Y.Y.Y.", "H.I.H.I.I.Y.I.Y.Y.Y.I.I.I.I.Y.U.I.Y.Y.Y.Y.E.T.T.T.W.W././.(.(.(.)._.)._._._._._.CXCXCXCXCXCXCX_._._._._._.CXCX_._._._._._.SX'.CX_._._.(._.(.).).(.(.W.W.T.W.R.T.T.(./.T./.T.T.T.T./.T.W.(.W.W.`.W.W.).(.W.W.W.Q.).)._._._._._._.'.BXCXCXCXSXSXCXSX_.SX_.SXSX_.SX_.SX_.BXSXSX_._._._._.SX_._._._.)._._._.)._.).).(.(.(.T.W.W.`.`.T.(.(.T.T.T.W.T.T.Y.Y.Y.Y.Y.Y.Y.I.Y.I.Y.I.I.Y.Y.I.I.I.I.I.H.H.I.H.H.I.I.Y.H.I.H.Y.T.Y.T.Y.T.T.Y.I.", "I.H.I.I.I.T.T.I.Y.Y.Y.Y.I.Y.Y.I.I.I.Y.I.Y.T.Y.T.T.T.T.(.(.(.).).)._.`._._._._._.'.CXCXCX_._.'._._._._._._.CX_._._._._.'._._._._._._._._.W.).).W.(.T.).R.(.T.T././.R.W.W.T.T.T.T.T.T././.W.W.T.(./.W.W.(.(.(.Q.Q.).!._._._._.SX_.CXSX_.SXCXCXSXCXSX_._.SXBX_.SX_.SX_.SXSXBX_._._.'._._._._._._._.)._.(._._.`.).)._.).(.(.`.T.W.T.`.T.T.(.T.W.Y.T.T.T.T.Y.T.Y.Y.I.Y.I.Y.I.Y.Y.Y.I.I.I.I.H.I.H.I.H.I.H.I.I.I.I.I.I.Y.U.Y.T.T.Y.Y.Y.I.", "I.I.I.I.I.I.Y.Y.Y.Y.Y.I.Y.I.Y.I.Y.Y.Y.Y.Y.Y.T.T.T././.(.(./.).`.).).)._._._._._._._.'.CX_._.CX_._._._._._.'.'.CX'._._.SX_.CX_._._._.`.`.).W.W.W.W.(.R.T.(.(.(.(.T./.T.T.T.T.W.T.T.T.T././.T.W.T.W./.W.(.W.W.).Q.).`._._._._.SX_.SX_.SXSX'.CXCXSX_.SXSX_.SX_.SX!._.SXSX_._._._._._.CXCX_._._._._._._._._._.).)._._.(.(.`./.`.(.(.T.`.(.(.(.(.T.T.T.Y.T.Y.Y.Y.Y.I.I.Y.Y.I.Y.I.I.I.I.I.I.I.I.I.I.I.I.I.I.H.I.I.I.I.I.E.Y.Y.Y.Y.I.Y.Y." }; micropolis-activity/images/icpolhi.xpm0000664000076400007640000000305210724145723020455 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "34 34 11 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #00FF00", "c c #5D5D5D", "d c #007F00", "e c #FF0000", "f c #4F4FFF", "g c #FFFFFF", "h c #FFFF00", "i c #BFBFBF", "j c #0000FF", /* pixels */ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii", "ijjbbbbjjjjbbbbjjjjbbbbjjjjbbbbjjc", "ijjbbbbjjjjbbbbjjjjbbbbjjjjbbbbjjc", "ijjccccccccccccccccccccccccccccjjc", "ijjcggggggggggggggggggggggggggijjc", "ibbcgbb`bbbbbbbbbcbbcbbbbbbbbgibbc", "ibbcgaibbbababbfcffcfffffffbbgibbc", "ibbcgaibbbbabbj```````````jbbgibbc", "ibbcgccbbbabajfaaaaaaaaaa`jbbgibbc", "ijjcgbbbjacccffahhhaahhaa`jcagijjc", "ijjcgcbjfacccfjchcchchcha`jcagijjc", "ijjcgbjffaca`jfchhhcchcha`jcagijjc", "ijjcgbffjacccffchccachcha`jcagijjc", "ibbcgbfjfacccfjchaaachcha`jcagibbc", "ibbcgbjffaca`jfchaaachhca`jcagibbc", "ibbcgbffjacccffcaaaacccaa`jcagibbc", "ibbcgbfjfacccfjjjjjjjjjjjjccagibbc", "ijjcgbjffaaaaj`j`j`j`j`j`aaaagijjc", "ijjcgbffjjjjjjjgj```jgjjjjjjbgijjc", "ijjcgbfjj`j`j`aj`ccja`j`j`jdbgijjc", "ijjcgbjjjjjjjaj`ccjajjjjjjddbgijjc", "ibbcgbbddddddacaccacadddddddbgibbc", "ibbcgbbbddddcccccccccccdddddbgibbc", "ibbcgbbbbbbaaaccccccccccdbbbbgibbc", "ibbcgbbbdbaabbaabbbbabbaabdbbgibbc", "ijjcgbbbbbaaaaaja``aajaaabbbdgijjc", "ijjcgbdbbbaaba``agea``baabbbbgijjc", "ijjcgbbbdbaabagea``agebaabbdbgijjc", "ijjcgbdbbbaaba``aaaa``baadbbbgijjc", "ibbcggggggggggggggggggggggggggibbc", "ibbciiiiiiiiiiiiiiiiiiiiiiiiiiibbc", "ibbjjjjbbbbjjjjbbbbjjjjbbbbjjjjbbc", "ibbjjjjbbbbjjjjbbbbjjjjbbbbjjjjbbc", "iccccccccccccccccccccccccccccccccc" }; micropolis-activity/images/micropolisg.xpm0000664000076400007640000000445410724145723021364 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "37 47 12 1", /* colors */ "` c #BF0000 m #000000", "a c #FFFF7F m #ffffff", "b c #FFBF7F m #ffffff", "c c #BFBF3F m #000000", "d c #FF0000 m #000000", "e c #FFFF00 m #ffffff", "f c #7F7F00 m #000000", "g c #BFBFBF m #ffffff", "h c #FFBFFF m #ffffff", "i c #FFBB00 m #000000", "j c #0000FF m #000000", "k c #00CF00 m #ffffff", /* pixels */ "ggggggggffffffffffffffffffffffffggggg", "gggggggfbbbbbbbbbbbbbbbbbbbbbbbbfgggg", "ggggggfbbbbbbfffffffbbbbbbbbiiiibfggg", "gggggfbbbbbffkkkkkkkffbbbbbiaaaaibfgg", "gggggfbbbbfkkkkkkkkkkkfbbbbiaaaaibfgg", "gggggfbbbfkkkkkkkkkkkkkfbbbiaaaaibfgg", "gggcccccccckkkkkkkkkkkkkfbbiaaaaibfgg", "ggggfbbbfkkkkkkkkkkkkkkkfbbiaaaaibfgg", "gggccccccckkkkkkkkkkkkkkkfbbiiiibbfgg", "ggggfbbfkkkkkkkkkkkkkkkkkfbbb``bbbfgg", "gggggfbfkkkkkkkkkkkkkkkkkfbb`dd`bbfgg", "ggggccbfkkkkkkkkkkkkkkkkkfb`dddd`bbfg", "gggfccbfkkkkkkkkkkkkkkkkkfbb````bbbfg", "gggfccbfkkkkkkkkkkkkkcccccccccccccccf", "gggfccbbfkkkkkkkkkkkkkkkfbbbbbbbbbbfg", "gggfccbbfkkkkkkkkkkkccccccccccccccccf", "gggfccbbbfkkkkkkkkkkkkkfbbbbbbbbbbbfg", "ggfbccbbbbfkkkkkkkccccccccccccccccccf", "gfbbbcbbbbbfkkkkkkkkkfbbbbbbbbbbbbbfg", "ccccccccccccccccccccccccccccccccccccf", "ccccccccccccccccccccccccccccccccccccf", "gfbbbcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbfg", "ggfbccbcccccccb`bbbbb`bb`bb`bb`bb`bbf", "gggfccbceceeec`d`bbb`d``d``d``h``d`bf", "gggfccbceceeec`d`bbb`d``d``d``h``d`bf", "gggfccbcccccccb`bbbbb`bb`bb`bb`bb`bbf", "gggfccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf", "gggfccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf", "gggfc`````ccccccccccccccccccccccccccf", "gggfc`ddd`ccccccbbbbbbb`````````bbbfg", "gggfc`ddd`ccccccbbbbbb`aaaaaaaaa`bfgg", "gggfcb`dd`cccccbbbbbb`aaaaaaa`aaa`fgg", "gggfcbb```cccccbbbbbb`aaaaaa`aaaa`fgg", "gggfbcbbbbccccbbbbbbb`aaaaaa`aaaa`fgg", "gggfbcbbbbbbbbbbbaabb`aaaaa`aaaaa`fgg", "gggfbcbbbbbbbbbbaaaabb```````````bfgg", "gggfbcbbbbbbbbbaa``aabbbbb``bbbbbbbfg", "ggggfbcbbbbbbbbb`dd`bbbbb`dd`beebbbfg", "gggggfbcbbbbbbbb````bbbbb````eeejjjcf", "gggggfbcbbbbbbbbbbbbbbbbbbbbeejjjjbfg", "gggggfbbcbbbbbbbbbbbbbbbbbbbjjjjeeccf", "ggggggfbcbbbbbbbbbbbbbbbbbbjjjeeebbfg", "gggggggfbcbbbbbbbbbbbbbbbbbbbbeebbbbf", "ggggfffbbcbbbbbbbbbbbbbbbbbbbbbbbbbfg", "gggfbbbbbbccccccccccccccccccccccccccf", "gggfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbfg", "ggggfffffffffffffffffffffffffffffffgg" }; micropolis-activity/images/tiles-154.xpm0000664000076400007640000001101610724145723020454 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "64 64 9 1", " c black", ". c #3F3F3F3F3F3F", "X c #00007F7F0000", "o c gray50", "O c #0000E6E60000", "+ c #99997E7E4C4C", "@ c #CCCC7E7E6666", "# c gray75", "$ c gray100", /* pixels */ "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "X@@@@@@@@@@@@@O@ooooo@O@@@O@@@O@@@@@@@#########@@@@@@@@@@@@@@@@X", "X@@@@@OO@@@@@@@@ooooo@XO@@@@@@O@@@@@###.......###@@@@@@@@@@@@@@X", "X@@@@XX@@@@@@@@@ooooo@@@@@@@@@@@@@##.............##@@@@@@@@@@@@X", "X@@@@@@@@@@@O@@Oooooo@@@@@@@O@O@##...............@.##@@@@@@@@@@X", "X@@@ooooooooooooooooo@@@@@@XX@O#...... .......#@@@@@@@@@X", "X@O@ooooooooooooooooo@@@@@@@@@#..... ........ ......#@@@O@@@@X", "X@O@ooooooooooooooooo@@O@@O@@#.... ............ .....#@@@@@@@X", "ooooooooooooooooooooo@@@@X@@#.... .... ..... ...#@@@@@@@X", "ooooooooooooooooooooo@@@@@@# ... ... ....... .... ...#@@@@@@X", "oooooooo.oo.oo.oo.ooo@@@@@@#... .. ........... ... ...#@@@@O@X", "ooooooooooooooooooooo@@@@@# .. .... ..... .. ...#@@@@@X", "ooooooooooooooooooooo@@@@## . o.. ...... .... ..#@@@@@X", "X@@@ooooooooooooooooo@O@@##.. . .. .......... ... o ..#@@@@@X", "X@@@ooooooooooooooooo@@@#$#. .. . .. . . . . ... .. .. ..#@@@@X", "X@@@ooooooooooooooooo@@@#$#. . . ................ .. .. ..#@@@@X", "X@@@ooooooooooooooooo@@.$$#. . . . .. ..#@@@@X", "X@@@oooo.oo.oo.oo.ooo@..$$#... .oo............... . ... .#@@@@X", "X@@@ooooooooooooooooo ..$$#.. . .................. .. .. .#@@@@X", "X@@@oooooooooooooooooo.$$$#.. . .. . .. .#+@@@X", "X@O@ooooooooooooooooo $$$$#.. . XXXXXXXX#X#XXXX .. . .. .#+@@@X", "X@X@ooooooooooooooooo$#$$$#.. . XXXXXXX###XXXXX .. . .. .#+@@@X", "X@@@ooooooooooooooooo$$$$$#.. . XXXXXXX#XXXXXXX .. . .. .#+@@@X", "X@@@ooooooooooooooooo$#$#$#.. . XOOOOOOOOOOOOOX .. . .. .#+@@@X", "X@@@oooo.oo.oo.oo.ooo$#$$$#.. . XOOOOOOOOOOOOOX .. . .. .#+@@@X", "X@@@ooooooooooooooooo$$$###.. . XOOXXOOOOOXXOOX .. . .. .#+@@@X", "X@@@ooooooooooooooooo$#.###.. o XOOOOOOOOOOOOOX .. . .. .#+O@@X", "X@@@ooooooooooooooooo$..#$#.. . XOOOOOOOOOOOOOX o. . .. .#+@@@X", "X@@@ooooooooooooooooo ..###.. . XOOXXOOOOOXXOOX .. . .. .#+@@@X", "X@@@oooooooooooooooooo.####.. . XOOOOOOOOOOOOOX .. . .. .#+@@@X", "X@@@ooooooooooooooooo #$###.. o XOOOOOOOOOOOOOX .. . .. .#+@@@X", "X@@@oooo.oo.oo.oo.ooo@#####.. . XXOXOXOXOXOXOXX o. . .. .#+@@@X", "X@@@ooooooooooooooooo@#####.. . XOOOOOOOOOOOOOX .. . .. .#+@@@X", "X@@@ooooooooooooooooo@#####.. . XOOOOOOOOOOOOOX .. . .. .#+@@@X", "X@@@ooooooooooooooooo@#####.. o XOOXXOOOOOXXOOX .. . .. .#+@@@X", "X@O@ooooooooooooooooo@#####.. . XOOOOOOOOOOOOOX o. . .. .#+@@OX", "X@@@ooooooooooooooooo@#.###.. . XOOOOOOOOOOOOOX .. . .. .#+@@@X", "X@@@ooooooooooooooooo@..###.. . XOOXXOOOOOXXOOX .. . .. .#+@@@X", "X@@@oooo.oo.oo.oo.ooo ..###.. . XOOOOOOOOOOOOOX .. . .. .#+@@@X", "X@@@oooooooooooooooooo.####.. . XOOOOOOOOOOOOOX .. . .. .#+@@@X", "X@@@ooooooooooooooooo #####.. . XXXXXXXX#X#XXXX .. . .. .#+@@@X", "X@@@ooooooooooooooooo@#####.. . XXXXXXX###XXXXX .. . .. .#+@@@X", "X@@@ooooooooooooooooo@#####.. . XXXXXXX#XXXXXXX . .. .. .#+@@@X", "X@@@ooooooooooooooooo@#####... . . ... .#+@@@X", "X@@@ooooooooooooooooo@#####. . .................. . ... .#+O@@X", "X@@@oooo.oo.oo.oo.ooo@#####o ... . .. . #+@@@X", "X@@@ooooooooooooooooo@####oo .... .............. . ... .#++@@@X", "X@@@ooooooooooooooooo@###ooo$ ... . . . . . ... . ..#++@@@X", "ooooooooooooooooooooo@o#oooo$ .. ..... .. o .#+++@@@X", "ooooooooooooooooooooooooooooo$ . ... .... . ..#+++@@@X", "ooooooooooooooooooooo@ooo ooo#.... ........... ... ..#++++@@@X", "ooooooooooooooooooooo@ oooooo# ... ....... .... .#+++X+@@@X", "oooooooo.oo.oo.oo.ooo@@ooo ooo# .... ..... .#.++++@O@@X", "X@@@@oooooooooooooooo@@@ooooo.o# . ............ ..#..+X++@@@@X", "X@@@O@ooooooooooooooo@@@oooo.ooo##.. ........ ...#..++++@@@@@X", "X@@@@@Ooooooooooooooo@@@@oo.ooo.oo##.. ...##..+++++@@@O@X", "X@@@@@@@ooooooooooooo@@@@Ooooo.ooooo##.........##$.++++++@@@@@@X", "X@XX@@@@@@O@oooooo@@@O@@@OOoo.oooo.ooo#########o...++X++@@@@@@@X", "X@@@O@@@@OO@oooooo@@@@@@@XOOooooo.ooo.oo..........+++++@@@@@@@@X", "X@@@OO@@@@@@oooooo@@@@@@@@OOOooo.ooo.oo.o... ...++++++@@@@@@@@@X", "X@@XX@@@@@@@oooooo@@@@@@@@X@X@+oooo.oo.o.o.....++++X+@@@@@@@@@@X", "X@@O@@@@@@@@oooooo@@@@@@@@@@@@+@.o.oo.o.o....+++XX++OO@@OO@@@@@X", "X@@@@@@@@@@@oooooo@O@@@@@@@@O@@+@..........+++++++++O@@@O@@@@@@X", "XXXXXXXXXXXXooooooXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }; micropolis-activity/images/obj7-0.xpm0000664000076400007640000000505510724145723020031 0ustar simcitysimcity/* XPM */ static char * obj7_0_xpm[] = { "48 48 3 1", " c None", ". c #FFFF7F7F0000", "X c #FFFFFFFF0000", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " . ", " ", " XXXXXXX ", " XXXXXXX XX ", " . XXXX XXX XX ", " X XXXXXX.XXX ", " XXXXXXXXXXXXXX ", " XXXXXXXXXXXXXX ", " X XXXXXXXXXXXX ", " XXXXXXXXXXXX X ", " XXXXXXXXXXX X ", " XXXXXXXXXX . ", " X.XXX XXXX X ", " XXXXXXXX XX ", " XXX.XXXX ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; micropolis-activity/images/scnctyhi.xpm0000664000076400007640000001022210724145723020647 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "67 57 5 1", /* colors */ "` c #000000", "a c #00FFFF", "b c #585858", "c c #FFFF00", "d c #DFDFDF", /* pixels */ "```````````````````````````````````````````````````````````````````", "``bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb``", "`b`bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`d`", "`bb`bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`dd`", "`bbb```````````````````````````````````````````````````````````ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaacccaaaaaccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaccc`aaaacc`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaccccaaaacc`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaacccccaaacc`aaacccccaaacccaaaccaaaccaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaccccccaacc`aacccccccaaccc`accccaacc`aaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaacc`ccc`acc`accc```cccaacc`acccc`acc`aaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaacc`acccacc`accc`aaccc`acc`acccc`cc``aaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaacc`acccccc`accccccccc`acccac`cc`cc`aaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaacc`aaccccc`accccccccc`accccc`ccccc`aaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaacc`aaacccc`accc```````aacccc`ccccc`aaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaacc`aaaaccc`aaccccccccaaaccc``accc``aaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaacc`aaaaccc`aaa`cccccc`aaccc`aaccc`aaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaa``aaaaa```aaaaa``````aaa```aaa```aaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaacccccccaacccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaacccccccc`accc`aaaccaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaacccc````c`aa```aaccc`aaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaacccc``aaaa`acccaacccccccccaaaaaccaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaccc``aaaaaaaccc`acccccc`cccaaacc``aaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaccc`aaaaaaaaccc`aaccc```ccc`aacc`aaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaccc`aaaaaaaaccc`aaccc`aaccccacc``aaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaccc`aaaaaaaaccc`aaccc`aaaccc`cc`aaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaccccaaaaaaaaccc`aaccc`aaaccccc``aaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaccccaaaacaaccc`aaccc`aaaacccc`aaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaacccccccc`accc`aacccccaaaccc``aaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaacccccc``accc`aaacccc`aaccc`aaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaa``````aaa```aaaa````aacc``aaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccc`aaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccc``aaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb```````````````````````````````````````````````````````````ddd`", "`bb`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`dd`", "`b`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`d`", "``ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd``", "```````````````````````````````````````````````````````````````````" }; micropolis-activity/images/obj4-4.xpm0000664000076400007640000000530110724145723020024 0ustar simcitysimcity/* XPM */ static char * obj4_4_xpm[] = { "48 48 10 1", " c None", ". c #00000000E6E6", "X c #000000000000", "o c #CCCC7F7F6666", "O c #FFFF00000000", "+ c #3F3F3F3F3F3F", "@ c #BFBFBFBFBFBF", "# c #7F7F7F7F7F7F", "$ c #FFFF7F7F0000", "% c #FFFFFFFFFFFF", " ", " ", " ", " . ", " . . . ", " ", " . . . ", " . XXXXX ", " XXoooooX ", " . OX+ooooo+ . ", " . XXoooooooX . ", " OXXoooooooX ", " OXXoooooooX ", " OXX@@@@@@@X . ", " . . OXX+@@@@@@@ ", " OXX++###### . ", " OXXX+####XX ", " OXXX+###XXXX ", " . . OXXX+##X$X+X ", " OX#X+#XX$X+X . . ", " . . OXXX++XX$XXX ", " OXXX+XXXX$X ", " OX#X+XXXXX# . ", " . OXXX+#XXX## . ", " OXXX+##X#XX ", " . OX#X+###XXXX ", " OXXX+##X$X+X . ", " . OXXX+#XX$X+X ", " OX#X++XX$XXX ", " . OXXX+XXXX$X . ", " . OXXX+XXXXX# ", " OX#X+#XXX## . ", " . OXXX+##X### ", " OXXX+#%##%# . ", " . OX#X+###### ", " OXX+@@@@@@@ . ", " OXX@@@@@@@ ", " .OXXooooooX ", " OXXooooooX . ", " OXXooooooX ", " .XXo+oo+oX ", " OX+oooo+ ", " XXooooX ", " OXoo+oX ", " X+oo+ ", " XooX ", " XX ", " "}; micropolis-activity/images/micropolism.xpm0000664000076400007640000001070610724145723021367 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "58 67 11 1", /* colors */ "` c #BF0000 m #000000", "a c #FFFF7F m #ffffff", "b c #BFBFBF m #ffffff", "c c #FFBF7F m #ffffff", "d c #BFBF3F m #000000", "e c #FF0000 m #000000", "f c #FFFF00 m #ffffff", "g c #7F7F00 m #000000", "h c #FFBFFF m #ffffff", "i c #FFBB00 m #000000", "j c #0000FF m #000000", /* pixels */ "bbbbbbbbbbbbbbbbbbbgggggggggggggggggggggggggggggbbbbbbbbbb", "bbbbbbbbbbbbbbbggggccccccccccccccccccccccccccccgbbbbbbbbbb", "bbbbbbbbbbbbbggcccccccccccccccccccccccccccccccccggbbbbbbbb", "bbbbbbbbbbbggccccccccccccccccccccccccccccccccccccggbbbbbbb", "bbbbbbbbbbgcccccccccccgggggggccccccccccccccccccccccggbbbbb", "bbbbbbbbbgcccccccccgggggggggggggccccccccccciiiiiiiccgbbbbb", "bbbbbbbbbgcccccccgggggjjjjjjggggggcccccccciaaaaaaaicgbbbbb", "bbbbbbbbgcccccccggggjjjjjjjjjjjggggccccccciaaaaaaaicgbbbbb", "bbbbbbbbgccccccgggjjjjjjjjjjjjjjjgggcccccciaaaaaaaicgbbbbb", "bbbbbbbbgcccccggjjjjjjjjjjjjjjjjjjgggccccciaaaaaaaicgbbbbb", "bbbbbbdddddddddddjjjjjjjjjjjjjjjjjjgggcccciaaaaaaaicgbbbbb", "bbbbbdddddddddddddjjjjjjjjjjjjjjjjjjgggccciaaaaaaaicgbbbbb", "bbbbbbbbgcccggjjjjjjjjjjjjjjjjjjjjjjjggccciaaaaaaaicgbbbbb", "bbbbbbddddddddddjjjjjjjjjjjjjjjjjjjjjggccciiiiiiiiicgbbbbb", "bbbbbddddddddddddjjjjjjjjjjjjjjjjjjjjjggccccccccccccgbbbbb", "bbbbbbbgcccggjjjjjjjjjjjjjjjjjjjjjjjjjggccccc``cccccgbbbbb", "bbbbbbbbgccggjjjjjjjjjjjjjjjjjjjjjjjjjggcccc`ee`ccccgbbbbb", "bbbbbbbgggcggjjjjjjjjjjjjjjjjjjjjjjjjjggcccc`ee``ccccgggbb", "bbbbbggdcdcggjjjjjjjjjjjjjjjjjjjjjjjjjggcccce``eccccccccgb", "bbbbbgcdcdcggjjjjjjjjjjjjjjjjjjjjjjjjjggccccccccccccccccgb", "bbbbbgcdcdcgggjjjjjjjjjjjjjjjjjjjjjdddddddddddddddddddddcg", "bbbbbgcdcdccggjjjjjjjjjjjjjjjjjjjjdddddddddddddddddddddddb", "bbbbbgcdcdccggjjjjjjjjjjjjjjjjjjjjjjjggcccccccccccccccccgb", "bbbbbgcdcdcccggjjjjjjjjjjjjjjjjjddddddddddddddddddddddddcg", "bbbbbgcdcdcccgggjjjjjjjjjjjjjjjddddddddddddddddddddddddddb", "bbbbbgcdcdccccgggjjjjjjjjjjjjjjjjjgggcccccccccccccccccccgb", "bbbgggcdcdcccccggggjjjjjjjjjddddddddddddddddddddddddddddgg", "bbbgcccccdccccccgggggggggggddddddddddddddddddddddddddddddb", "bbggcccccdccccccccgggggggggggggggcccccccccccccccccccccccgb", "bdddddddddddddddddddddddddddddddddddddddddddddddddddddddgb", "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddg", "bbbgcccccdccccccccccccccccccccccccccccccccccccccccccccccgb", "bbbbgccccdccccccccccccccccccccccccccccccccccccccccccccccgb", "bbbbbgcdcdcdddddddddddc``ccccccc```cc```cc```cceeecc```cgb", "bbbbbgcdcdcdfffdfffffd`ee`ccccc`eee``eee``eee`ehhhe`eee`gb", "bbbbbgcdcdcdfffdfffffd`ee``cccc`eee``eee``eee`ehhhe`eee`gb", "bbbbbgcdcdcdfffdfffffde``eccccc`eee``eee``eee`ehhhe`eee`gb", "bbbbbgcdcdcdddddddddddccccccccc```````````````eeeee`````gb", "bbbbbgcdcdccccccccccccccccccccccccccccccccccccccccccccccgb", "bbbbbgcdcdccccccccccccccccccccccccccccccccccccccccccccccgb", "bbbbbgcdcdccccccccccccccccccccccccccccccccccccccccccccccgb", "bbbbbgcdc```````ddddddddddddddddddddddddddddddddddddddddbb", "bbbbbgcdc`eeeee`dddddddddccccccccccc````````````ccccgbbbbb", "bbbbbgcdc`eeeee`dddddddddcccccccccc`aaaaaaaaaaaa``ccgbbbbb", "bbbbbgcdcc`eeee`dddddddddccccccccc`aaaaaaaaaaaaaaa`cgbbbbb", "bbbbbgcdcc`eeee`ddddddddccccccccc`aaaaaaaaaaa`aaaaa`gbbbbb", "bbbbbgcdccc``ee`ddddddddccccccccc`aaaaaaaaaaa`aaaaa`gbbbbb", "bbbbbgcdccccc```dddddddcccccccccc`aaaaaaaaaa`aaaaaa`gbbbbb", "bbbbbgccdcccccccddddddccccccccccc`aaaaaaaaaa`aaaaaa`gbbbbb", "bbbbbbgcdcccccccdddddccccccccacccc`aaaaaaaa`aaaaaa`cgbbbbb", "bbbbbbgcdccccccccccccccccccaaaaacc`aaaaaaaa`aaaaa``cgbbbbb", "bbbbbbgccdcccccccccccccccaaaaaaaacc``````````````cccgbbbbb", "bbbbbbbgcdcccccccccccccccaaa``aaacccccccc``ccccccccccggbbb", "bbbbbbbgcdccccccccccccccaaa`ee`aaacccccc`ee`ccccfccccccgbb", "bbbbbbbgccdcccccccccccccccc`ee``cccccccc`ee``cffffccccggbb", "bbbbbbbbgccdccccccccccccccce``eccccccccce``efffffffjjjdgbb", "bbbbbbbbbgcdccccccccccccccccccccccccccccccccffffjddddjddbb", "bbbbbbbbbgcdcccccccccccccccccccccccccccccccffjjddjddjjgbbb", "bbbbbbbbbbgcdcccccccccccccccccccccccccccccjjjdddddjjcddggb", "bbbbbbbbbbgccdcccccccccccccccccccccccccccccddddjjfffddddbb", "bbbbbbbbbbbgcdcccccccccccccccccccccccccccccjdjffffffcccgbb", "bbbbbbggggggccdccccccccccccccccccccccccccccccffffffccddgbb", "bbbbbgcccccccccdccccccccccccccccccccccccccccccccccccddddgb", "bbbbbgccccccccccdccccccccccccccccccccccccccccccccccccccgbb", "bbbbbgcccccccccccddddddddddddddddddddddddddddddddddddddbbb", "bbbbggccccccccccccccccccccccccccccccccccccccccccccccccggbb", "bbbbgggggggggggggggggggggggggggggggggggggggggggggggggggbbb" }; micropolis-activity/images/tiles-26.xpm0000664000076400007640000000427710724145723020405 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "42 42 12 1", " c black", ". c #00007F7F0000", "X c #7F7F7F7F0000", "o c #5D5D5D5D5D5D", "O c gray50", "+ c blue", "@ c #4F4F4F4FFFFF", "# c red", "$ c #FFFF77770000", "% c yellow", "& c gray75", "* c gray100", /* pixels */ "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&", "&OO%%%%OOOO%%%%OOOO%%%%OOOO%%%%OOOO%%%%OOo", "&OO%%%%OOOO%%%%OOOO%%%%OOOO%%%%OOOO%%%%OOo", "&OOooooooooooooooooooooooooooooooooooooOOo", "&OOo &OOo", "&%%o * * * * &&&&&&&&* XO*o* *o*o* * &%%o", "&%%o * &&&&&&#OOOOO#OXOOXo XOOo* *o* &%%o", "&%%o * &&$OO&&OOOOOOo oo * XO* O *o* &%%o", "&%%o &&&OOO&&OOOOO@ OOo*OoO* XXo X * &%%o", "&OOo *&O&*oO&*OOOOo@OOOXXoX* *o* *oo &OOo", "&OOo O&&OOO*OOOOo OOoX * * *O* ooo * &OOo", "&OOo *&&&OOOO&OOO OOo Oo O *OoXXo* X &OOo", "&OOo &O&OOO&&OOOOO@ OOo*oO oX* * * * &OOo", "&%%o *&&&OOO&&OOOOo@OOOXXooO o * * o &%%o", "&%%o &O&OOO&*OOOo OOOoo* * * oOXOX * &%%o", "&%%o *&&&oOO*OOOO OOo Oo * *ooOo * * &%%o", "&%%o &&*OOOO&OOOOO@ OOo* oOOXoo* * * &%%o", "&OOo *&*&OOO&&OOOOo@OOOXoOoXXo * * * &OOo", "&OOo *&&oOO&&OOOo OOoXo* * * * * * * &OOo", "&OOo *&&OOOO&&OOO OOo Oo * * * * * * &OOo", "&OOo &O&OOO&*OOOOO@ OOo* * * * * * * &OOo", "&%%o *O&&OOO*OOOOOo@OOOo * * * * * * &%%o", "&%%o &&&o*oO&OOOo OOOOo* * * * * * * &%%o", "&%%o *&O&o*o&&OOO OOOOOo * * * * * * &%%o", "&%%o OO&OOO&&OOOOOOOOo * * * * * * * &%%o", "&OOo *&O&o*o&&#OOOOO#oo* * * * * * * &OOo", "&OOo OO&o*o&OoooooooOo * * * * * * * &OOo", "&OOo *&O&OOOOooooooo Oo*oOO.OOOOOOO* &OOo", "&OOo O&&OoOOOOOO%OOOOo oOO.OOOOOOOOO &OOo", "&%%o *&&&OOOOO%%%OoO OooOOOOOOOOOOOOO &%%o", "&%%o &&&OoOO%%%OOOOOOo OOOOOOOO+OO * &%%o", "&%%o *&&&$OO%OOOOOoO $o*OOOOOOOO+OO* &%%o", "&%%o &&&oooooooooooooo OOOOOOOOOOO * &%%o", "&OOo *&&ooooooooooooooo*OoO+O.OOOOO* &OOo", "&OOo &oooooooooooooooo OXO+O.OOOOO * &OOo", "&OOo * * * * * * * * * * * * * * * * &OOo", "&OOo * * * * * * * * * * * * * * * * &OOo", "&%%o &%%o", "&%%o&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%o", "&%%OOOO%%%%OOOO%%%%OOOO%%%%OOOO%%%%OOOO%%o", "&%%OOOO%%%%OOOO%%%%OOOO%%%%OOOO%%%%OOOO%%o", "&ooooooooooooooooooooooooooooooooooooooooo" }; micropolis-activity/images/tiles-131.xpm0000664000076400007640000001030710724145723020451 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "67 57 7 1", " c black", ". c #3F3F3F3F3F3F", "X c #585858585858", "o c #3F3F3F3FFFFF", "O c #0000BFBF0000", "+ c #BFBF7F7F3F3F", "@ c #DFDFDFDFDFDF", /* pixels */ " ", " @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ", " @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ X ", " @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ XX ", " @@@ XXX ", " @@@ ooooooooo ++++++++++++++++++++++++++++++++ooooo++++++ XXX ", " @@@ + ooooooooo.. ++++++++++++++++++ ++ +ooooo+++O+++ XXX ", " @@@ ++ oooooooo... ++++++++ .. .oooo+++OO++++ XXX ", " @@@ ++ oooooooo..ooooooo.+ +++++++ ......ooo++OO++++++ XXX ", " @@@ +++ ...ooooooooooooooo.o++++++ +++ ...oooooo+++ +++ XXX ", " @@@ O+++ ..oooooooooooooo.ooo+++++ +++ . o.ooooo ++ ++++++++ XXX ", " @@@ +++++++.+ oooooooooo.ooo +++++ .. oo.oooo ++ ++++++++ XXX ", " @@@ ++O++++ +++ .. . .ooooooo+ . oooo.oo. + ++++++++ XXX ", " @@@ +++O+++ + ++ .......... ooooooooooooooo. .... ++++++++ XXX ", " @@@ +++O+++ +++.. .. .. ooooooooooooo+.+ . .... ++++++++ XXX ", " @@@ +++OO++ ++++ ... ooooooooooo++ +.. .. . ++++++++ XXX ", " @@@ ++OOO++ +++++ .... ..ooooooooooo++ . .. ++ XXX ", " @@@ +++OO+ ..... ... .oooooooooo + .. ...++++++++ XXX ", " @@@ +++++++++ .... .. . ooooooooo. ........++++++++ XXX ", " @@@ +++++++++ ... . . ooooooooo .. ... ++++++++ XXX ", " @@@ +++++++ .. . .oooooooooo .... . ++++++++ XXX ", " @@@ ++++++ . . . ... .ooooooooooo........... ++++++++ XXX ", " @@@ OO+++ .... oooooooooooooo.... ... + XXX ", " @@@ OO+ .. . .. oooooooooooooooo ... ++++++++ XXX ", " @@@ OO +++ . ...ooooooo.. ooooooo ... +O++++++ XXX ", " @@@ OO +++ oooooo.. . .ooooo .. . . ++++O+++ XXX ", " @@@ ++ +++ .. .. . . +..oo...... ........ . .. +++OO+++ XXX ", " @@@ ++ +++ .. .. ... +o.. . . ooooo .... +++O++++ XXX ", " @@@ ++ +++ ...... .. oooo.. . . ooooo . . ++++++ XXX ", " @@@ ++ +++ oooo.... .. .ooooo +++++ XXX ", " @@@ ++ +++ ...... . ooo..... .. .. .ooooo .. +++++ XXX ", " @@@ ++ +++ ..... ..ooo....... ... .ooooooo . +++ XXX ", " @@@ ++ +++ .. . oooo . ..ooooooo . ++ XXX ", " @@@ ++ +++... .. ooooo .ooooooo.. ++ ++ XXX ", " @@@ ++ ... ooooo O ..oooooooooo++++++++++ XXX ", " @@@ ++ +++ .. oooo...OOOO . ..oooooooooooooo + + + XXX ", " @@@ ++++++ .... ooooo. OOOO .... ..oooooooooooooooooo... XXX ", " @@@ ++++++ .... ..o.... OOOO .. ..ooooooooooooooooooooo XXX ", " @@@ + ... o....... OOO ... ..ooooooooooooooooooooo XXX ", " @@@ OOOOO+ oooooo.o. .. ...ooooooooooooooooooooo XXX ", " @@@ O+OOO ooooooo.. ..... .. .. .. ooooooooooooooooooooo XXX ", " @@@ +OO+ oooooooo+. .... .... . .. ooooooooooooooooooooo XXX ", " @@@ + +oooooooo ++.. ....... . .. .. ooooooooooooooooooooo XXX ", " @@@ oooooo++++++++ .... .... ... .ooooooooooooooooooooooo XXX ", " @@@ oooooo ... ... ..oooo ooooo. oo .oooooo XXX ", " @@@ ooooo+OO +++O++ ....... oo .. ........ .. oooo XXX ", " @@@ oooo++OOO+++.. ......... +.+++++oo..... ... ...oooo XXX ", " @@@ oo++++OOOO .. +.++ oo . .....ooo XXX ", " @@@ ++ O+O+++ ++..++.+++++OOO+.+++++ ++ ....... ... ooo XXX ", " @@@ . OO + +++.+++++.++OO+++++ ++++ O ... oo XXX ", " @@@ +++ +++O++++++++++++++OO+++++++++++ +++++O+++++++++ oo XXX ", " @@@ ++++++++++++++++++++++++++++++++++++++++++++++++++++++ .. XXX ", " @@@ XXX ", " @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX ", " @ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " " }; micropolis-activity/images/tiles-72.xpm0000664000076400007640000000261110724145723020374 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "32 32 10 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c #00000000E6E6", "O c #66666666E6E6", "+ c red", "@ c yellow", "# c gray75", "$ c gray100", "% c None", /* pixels */ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%++++++%%%%%%%%%", "%%%%%%%%%%%%%%+++%%%%%%+++%%%%%%", "%%%%%%%%%%%%%+%%%%%%%%%%%%+%%%%%", "%%%%%%%%%%%%+%%%%%%%%%%%%%%+%%%%", "%%%%%%%%%%%+%%%%%%%%%%%%%%%%+%%%", "%%%%%%%%%%+%%%%%%%%%%%%%%%%%%+%%", "%%%%%%%%%+%%%%%%%%%%%%%%%%%%%%+%", "%%%%%%%%%+%%%%%%XXXXXXX#%%%%%%+%", "%%%%%%%%+%%%%%%%%.%%%.%%%%%%%%%+", "@XX@XX@%+%%%%%%%$$X$$$XXX%%%%%%+", "%%%X%%%%+%%%%O$$$$$$$$ X%%%%%+", "%%%#####+##########..# o X%%%%+", "%%%XX#%%+%%########..# o X%%%%+", "%%%##%%%+%%%%OXXXXXXXX X%%%%%+", "%%%%%%%%+%%%%%%%XX.XXXXXX%%%%%%+", "%%%%%%%%%+%%%%%%%.%%%.%%%%%%%%+%", "%%%%%%%%%+%%%%%%XXXXXXX#%%%%%%+%", "%%%%%%%%%+%%%%%%%%%%%%%%%%%%%%+%", "%%%%%%%%%%+%%%%%%%%%%%%%%%%%%+%%", "%%%%%%%%%%%+%%%%%%%%%%%%%%%%+%%%", "%%%%%%%%%%%%+%%%%%%%%%%%%%%+%%%%", "%%%%%%%%%%%%%+%%%%%%%%%%%%+%%%%%", "%%%%%%%%%%%%%%+++%%%%%%+++%%%%%%", "%%%%%%%%%%%%%%%%%++++++%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" }; micropolis-activity/images/icrail.xpm0000664000076400007640000000320110724145723020265 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "56 24 7 1", /* colors */ "# c #000000", "a c #7F7F7F", "b c #5D5D5D", "c c #FF0000", " c #FFFFFF", "e c #7F7F00", "f c #BFBFBF", /* pixels */ "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "fbbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeb", "fbbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeb", "feebbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbeeb", "feeb################################################feeb", "feeb# # # # # # # # # #fffffffffffffffffff# # # # ##fbbb", "fbbb## # # # # # # # ## ## # # # #fbbb", "fbbb# #ee #ee #ee #ef#a c c #be #ee ##fbbb", "fbbb###ee##ee##ee##ffa# bbe##ee# #feeb", "fbbb# aaaaaaaaaaaaaff## #baaaaaa##feeb", "feeb###eeb#eeb#eeb#ff###ffbbffbbffbbffbbf##beb#eeb #feeb", "feeb# #ee #ee #ee #fff#aabbaabbaabbaabbaaaabe #ee ##feeb", "feeb###ee##ee##ee##ffaaaaaaaaaaaaaaaaaaaaabee##ee# #fbbb", "feeb# #ee #ee #ee #eeaabbbbaaaaaaaabbbbaab#ee #ee ##fbbb", "fbbb##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa #fbbb", "fbbb# #eeb#eeb#eeb#eeb#eeb#eeb#eeb#eeb#eeb#eeb#eeb##fbbb", "fbbb###ee##ee##ee##ee##ee##ee##ee##ee##ee##ee##ee# #feeb", "fbbb# ### ### ### ### ### ### ### ### ### ### ### ##feeb", "feeb## # # # # # # # # # # # # # # # # # # # # # # #feeb", "feeb################################################feeb", "feebfffffffffffffffffffffffffffffffffffffffffffffffffeeb", "feebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbb", "feebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbb", "fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" }; micropolis-activity/images/obj5-5.xpm0000664000076400007640000000515410724145723020034 0ustar simcitysimcity/* XPM */ static char * obj5_5_xpm[] = { "48 48 6 1", " c None", ". c #FFFF7F7F0000", "X c #FFFFFFFFFFFF", "o c #FFFF00000000", "O c #000000000000", "+ c #FFFFFFFF0000", " ", " ", " ", " ", " . ", " X.o ", " X.o ", " ...o ", " ...o ", " .... .... ", " o............. ", " oooo.....X...... ", " oooooo...X..... ", " ..........o ", " ..X....o.o ", " .X. .......o.o. o.o ", " .X......X.....o.o.o.o.o. ", " .........X.....o.o.o.o.o. ", " ......o.........o.o.o.o.o. ", " ......oo.........ooo.o.o.o ", " ...oo.o...X......oooooooo ", " ..oooooo..........oooooo ", " .o ooooo..X.......ooooo ", " oo............oooo ", " .....X.......oo ", " ............oo o.o ", " ....X.......o.o.o.o ", " ....O....X.......o.o.o.o. ", " ..X.X.............o.o.o.o. ", " ............X......o.ooo.o. ", " ........o..........ooooooo ", " .......oo.......... oooo ", " ooooooo........... o ", " oooo........... ", " oo........... ", " ........... ", " o.......... ", " o...o....o ", " o.o+o..o+o ", " o.o++.o+o ", " o.ooooo. ", " o.o.o.o ", " oo.o ", " ", " ", " ", " ", " "}; micropolis-activity/images/tilessm.xpm0000664000076400007640000005744010724145723020520 0ustar simcitysimcity/* XPM */ static char * tilessm_xpm[] = { "4 2880 14 1", " c #CCCC7F7F6666", ". c #FFFFFFFFFFFF", "X c #FFFF00000000", "o c #66666666E6E6", "O c #0000E6E60000", "+ c #00007F7F0000", "@ c #000000000000", "# c #3F3F3F3F3F3F", "$ c #00000000E6E6", "% c #FFFFFFFF0000", "& c #BFBFBFBFBFBF", "* c #7F7F7F7F7F7F", "= c #99997F7F4C4C", "- c #FFFF7F7F0000", " .", " .", " .", "XXX.", "XXX.", "XXX.", "ooo.", "ooo.", "ooo.", "ooo.", "ooo.", "ooo.", "ooo.", "ooo.", "ooo.", " .", "ooo.", "ooo.", " .", "ooo.", "ooo.", " .", "o .", "oo .", " .", "o .", "oo .", "oo .", "oo .", "oo .", "oo .", "oo .", "oo .", "oo .", "o .", " .", "oo .", "o .", " .", "ooo.", "ooo.", " .", "ooo.", "ooo.", " .", " oo.", " o.", " .", " oo.", " o.", " .", " oo.", " oo.", " oo.", " oo.", " oo.", " oo.", " .", " o.", " oo.", " .", " o.", " oo.", " .", "OOO.", "OOO.", " .", "O .", "OO .", "OO .", "OO .", "OO .", "OO .", "O .", " .", "OOO.", "OOO.", " .", " OO.", " O.", " .", " OO.", " OO.", " OO.", " .", " O.", " OO.", " .", "OOO.", "OOO.", " .", "O .", "OO .", "OO .", "OO .", "OO .", "OO .", "O .", " .", "OOO.", "OOO.", " .", " OO.", " O.", " .", " OO.", " OO.", " OO.", " .", " O.", " OO.", "OOO.", "O+O.", "OOO.", "OOO.", "OOO.", "OOO.", "+++.", "+++.", "+++.", "+++.", "+++.", "+++.", "+++.", "+++.", "+++.", "+++.", "+++.", "+++.", "+++.", "+++.", "+++.", "@@@.", "@#@.", "@@@.", "@@@.", "@#@.", "@@@.", "@@@.", "@#@.", "@@@.", "@@@.", "@#@.", "@@@.", "$$$.", "$o$.", "$$$.", "$$$.", "$o$.", "$$$.", "$$$.", "$o$.", "$$$.", "$$$.", "$o$.", "$$$.", "%#%.", "#X#.", "%#%.", "@@@.", "....", "....", "@@@.", "....", "....", "@@@.", "....", "....", " %X.", "%XX.", "XXX.", " %X.", "XXX.", "XXX.", " %X.", "%XX.", "XXX.", " %X.", "XXX.", "XXX.", " %X.", "%XX.", "XXX.", " %X.", "XXX.", "XXX.", " %X.", "%XX.", "XXX.", " %X.", "XXX.", "XXX.", "###.", "#.#.", "###.", "###.", "#.#.", "###.", "###.", "#.#.", "###.", "###.", "#.#.", "###.", "###.", "#.#.", "###.", "###.", "#.#.", "###.", "###.", "#.#.", "###.", "###.", "#.#.", "###.", "###.", "#.#.", "###.", "###.", "#.#.", "###.", "###.", "#.#.", "###.", "###.", "#.#.", "###.", "#X#.", "O#O.", "#X#.", "###.", "#.#.", "###.", "###.", "#.#.", "###.", "ooo.", "ooo.", "ooo.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "#O#.", "X#X.", "#O#.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "ooo.", "ooo.", "ooo.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "#X#.", "O#O.", "#X#.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "ooo.", "ooo.", "ooo.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "#O#.", "X#X.", "#O#.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "ooo.", "ooo.", "ooo.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "#X#.", "O#O.", "#X#.", "###.", "#&#.", "###.", "###.", "#&#.", "###.", "ooo.", "ooo.", "ooo.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "#O#.", "X#X.", "#O#.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "ooo.", "ooo.", "ooo.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "#X#.", "O#O.", "#X#.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "ooo.", "ooo.", "ooo.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "#O#.", "X#X.", "#O#.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "ooo.", "ooo.", "ooo.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "#X#.", "O#O.", "#X#.", "###.", "#*#.", "###.", "###.", "#*#.", "###.", "ooo.", "ooo.", "ooo.", "o@o.", "o@o.", "o@o.", "ooo.", "@@@.", "ooo.", " .", "@%@.", " .", " @ .", " % .", " @ .", " @ .", " %@.", " .", " .", " %@.", " @ .", " .", "@% .", " @ .", " @ .", "@% .", " .", " @ .", "@%@.", " .", " @ .", " %@.", " @ .", " .", "@%@.", " @ .", " @ .", "@% .", " @ .", " @ .", "@%@.", " @ .", " @ .", "@%@.", " @ .", " @ .", "@%@.", " @ .", " .", " .", " .", ".o..", "ooo.", ".o..", ".o..", "ooo.", ".o..", "###.", " @ .", "###.", "# #.", "#@#.", "# #.", "# @.", " # .", " #.", " #.", " # .", "# @.", "# .", " # .", "@ #.", "@ #.", " # .", "# .", "###.", " @ .", "###.", "# #.", "#@#.", "# #.", "###.", " @ .", "###.", "# #.", "#@#.", "# #.", "###.", "# #.", "###.", "###.", "###.", "###.", "###.", "###.", "###.", " .", " .", " .", "@@@.", "@ .", "@ O.", "@@@.", " .", "OO .", "@@@.", " @.", " @.", "@ O.", "@ O.", "@ O.", " O.", "OOO.", " O .", " @.", " @.", " @.", "@ O.", "@ .", "@@@.", " O.", " .", "@@@.", " @.", " @.", "@@@.", " @@.", " @@.", " .", " @@.", " @@.", " .", " @@.", " @@.", " .", " @@.", " @@.", " .", " @@.", " @@.", " .", " @@.", " @@.", " .", " @@.", " @@.", " .", " @@.", " @@.", " .", " @@.", " @@.", " .", " @@.", " @@.", " .", " @@.", " @@.", " .", " @@.", " @@.", " .", "@@@.", "@ .", "@ .", "@@@.", " .", "#**.", "@@@.", " @.", "**@.", "@ .", "@ .", "@ *.", "#**.", "#@@.", " #.", "**@.", "**@.", "**@.", "@ *.", "@ *.", "@@@.", "**#.", "* .", "@@@.", "@@@.", " @.", "@@@.", "@@@.", "@ #.", "@##.", "@@@.", "===.", "===.", "@@@.", "= @.", "= @.", "@#@.", "@@@.", "@ .", "@@@.", "@@@.", "*==.", "@ @.", " @.", "==@.", "@ *.", "@ *.", "@@@.", "*==.", "###.", "@@@.", "==@.", "# @.", "@@@.", "@@@.", "@ *.", "@**.", "@@@.", "##*.", "##*.", "@@@.", "==@.", "==@.", "@**.", "@**.", "@**.", "***.", "** .", "## .", "==@.", "**@.", "==@.", "@**.", "@*#.", "@@@.", "###.", "###.", "@@@.", "==@.", "##@.", "@@@.", "@@@.", "@ $.", "@$$.", "@@@.", "**X.", "**X.", "@@@.", "**@.", "**@.", "@$$.", "@$X.", "@XX.", "##X.", "***.", "***.", "XX@.", "**@.", "**@.", "@XX.", "@X#.", "@@@.", "###.", "###.", "@@@.", "##@.", "# @.", "@@@.", "@@@.", "@X*.", "@X*.", "@@@.", "**o.", "**o.", "@@@.", "**@.", "**@.", "@X*.", "@X*.", "@X*.", "*Xo.", "* .", "* .", "$*@.", "o*@.", "$$@.", "@X*.", "@XX.", "@@@.", "* &.", "X &.", "@@@.", "&&@.", "& @.", "@@@.", "@@@.", "@ *.", "@o*.", "@@@.", "* .", "* o.", "@@@.", "**@.", "**@.", "@o*.", "@o*.", "@o*.", "* o.", "* o.", "**o.", "**@.", "**@.", "**@.", "@o*.", "@$$.", "@@@.", "**$.", "$$$.", "@@@.", "$$@.", "$ @.", "@@@.", "@@@.", "@ O.", "@OO.", "@@@.", "**#.", "**#.", "@@@.", "**@.", "**@.", "@OO.", "@OO.", "@OO.", "**+.", "***.", "***.", "++@.", "* @.", "* @.", "@O+.", "@+#.", "@@@.", "#+#.", "+#+.", "@@@.", "+ @.", " @.", "@@@.", "@@@.", "@ o.", "@oo.", "@@@.", "**X.", "**#.", "@@@.", "XX@.", "#X@.", "@oo.", "@o$.", "@o*.", "**X.", "$$o.", "***.", "**@.", "**@.", "**@.", "@o*.", "@$$.", "@@@.", "***.", "$$$.", "@@@.", "**@.", "$ @.", "@@@.", "@@@.", "@o#.", "@o#.", "@@@.", "# O.", "# O.", "@@@.", "##@.", "##@.", "@o*.", "@o*.", "@$$.", "* O.", "* O.", "$ +.", "##@.", "##@.", "++@.", "@ .", "@O .", "@@@.", " O .", "O .", "@@@.", " @.", " O@.", "@@@.", "@@@.", "@O$.", "@$$.", "@@@.", "**O.", "***.", "@@@.", "OO@.", "**@.", "@$$.", "@$X.", "@$#.", "**o.", "Xoo.", "#Oo.", "**@.", "**@.", "$$@.", "@$#.", "@$X.", "@@@.", "#OO.", "XOO.", "@@@.", "OO@.", "OO@.", "@@@.", "@@@.", "@ -.", "@--.", "@@@.", "**-.", "**-.", "@@@.", "**@.", "**@.", "@-*.", "@-*.", "@--.", "* -.", "**o.", "**o.", "XX@.", "**@.", "**@.", "@--.", "@-X.", "@@@.", "XXo.", "XXX.", "@@@.", "$$@.", " @.", "@@@.", "@@@.", "@O&.", "@&&.", "@@@.", "**..", "**&.", "@@@.", "..@.", "&&@.", "@&*.", "@&*.", "@&&.", "*...", "&...", "&**.", "##@.", "##@.", "##@.", "@&&.", "@&*.", "@@@.", "***.", "***.", "@@@.", "**@.", "*O@.", "@@@.", "@@@.", "@X*.", "@X*.", "@@@.", "***.", "***.", "@@@.", "**@.", "**@.", "@XX.", "@OO.", "@OO.", "X$$.", "Ooo.", "Ooo.", "$$@.", "OO@.", "OO@.", "@Oo.", "@Oo.", "@@@.", "***.", "$$$.", "@@@.", "*O@.", "$O@.", "@@@.", "@@@.", "@OO.", "@o*.", "@@@.", "OOO.", "***.", "@@@.", "OO@.", "**@.", "@o*.", "@o*.", "@o*.", "$$$.", "oOo.", "OOo.", "**@.", "**@.", "$$@.", "@o*.", "@o$.", "@@@.", "***.", "$$$.", "@@@.", "OO@.", "Oo@.", "@@@.", "@@@.", "@OO.", "@O..", "@@@.", ".#O.", "&*O.", "@@@.", "OO@.", "oO@.", "@.&.", "@&*.", "@OO.", "*OO.", "OOO.", "OO..", "OO@.", ".#@.", "&*@.", "@OO.", "@OO.", "@@@.", "O.&.", "O&*.", "@@@.", "*O@.", "OO@.", "@@@.", "@@@.", "@O&.", "@&&.", "@@@.", "**#.", "**#.", "@@@.", "##@.", "##@.", "@&*.", "@&&.", "@&&.", "*#*.", "*OO.", "***.", "&*@.", "&*@.", "**@.", "@&&.", "@&..", "@@@.", ".@..", "....", "@@@.", "@.@.", ".O@.", "@@@.", "@@@.", "@OO.", "@OO.", "@@@.", "O.#.", "##X.", "@@@.", "#O@.", "X#@.", "@O..", "@...", "@.*.", "##X.", "**#.", "*.#.", "X#@.", "#.@.", "#*@.", "@OO.", "@OO.", "@@@.", "..*.", ".**.", "@@@.", "*O@.", "OO@.", "@@@.", "@@@.", "@+#.", "@&#.", "@@@.", "###.", "###.", "@@@.", "##@.", "#.@.", "@&#.", "@&#.", "@&#.", "##&.", "#&*.", "#**.", ".#@.", "*#@.", "##@.", "@**.", "@++.", "@@@.", "*##.", "+++.", "@@@.", "**@.", "++@.", "@@@.", "@@@.", "@ .", "@ .", "@@@.", " .", "oo .", "@@@.", " @.", " @.", "@ o.", "@ o.", "@ o.", " o.", " .", " o.", " @.", " @.", " @.", "@ .", "@ .", "@@@.", "oo .", " .", "@@@.", " @.", " @.", "@@@.", "@@@.", "@+&.", "@+&.", "@@@.", "&&&.", "###.", "@@@.", "&+@.", "&+@.", "@+&.", "@.&.", "@+&.", "###.", "***.", "+++.", "&+@.", "&+@.", "&+@.", "@&&.", "@++.", "@@@.", "&&&.", "+++.", "@@@.", "&&@.", "++@.", "@@@.", "@@@.", "@ .", "@ .", "@@@.", " &.", " &&.", "@@@.", "& @.", "*#@.", "@ .", "@ @.", "@ .", "@&*.", " @*.", "@ @.", "*#@.", "# @.", " @.", "@ @.", "@ .", "@@@.", " @ .", " .", "@@@.", " @.", " @.", "@@@.", "@@@.", "@+*.", "@+*.", "@@@.", "***.", "*++.", "@@@.", "**@.", "o*@.", "@+*.", "@+*.", "@+X.", "* o.", "* o.", "###.", "o*@.", "o*@.", "#*@.", "@XX.", "@XX.", "@@@.", "###.", "XXX.", "@@@.", "#*@.", "$$@.", "@@@.", "@@@.", "@ o.", "@oo.", "@@@.", "&&&.", "&&&.", "@@@.", "**@.", "**@.", "@oo.", "@oo.", "@oo.", "&&&.", "&&&.", "&&&.", "$$@.", "**@.", "**@.", "@oo.", "@o$.", "@@@.", "$$$.", "$$$.", "@@@.", "**@.", "$ @.", "@@@.", "@@@.", "@ X.", "@XX.", "@@@.", "##X.", "##X.", "@@@.", "**@.", "**@.", "@X .", "@XX.", "@XX.", "**X.", "**#.", "**#.", "XX@.", "**@.", "**@.", "@XX.", "@X$.", "@@@.", "$# .", "#$#.", "@@@.", "#$@.", "$ @.", "@@@.", "@@@.", "@Oo.", "@Oo.", "@@@.", "==O.", "==*.", "@@@.", "OO@.", "**@.", "@Oo.", "@Oo.", "@**.", "==*.", "$$O.", "***.", "**@.", "*O@.", "**@.", "@OO.", "@OO.", "@@@.", "X##.", "XXX.", "@@@.", "#O@.", "XO@.", "@@@.", "@@@.", "@ .", "@ .", "@@@.", " o#.", " o#.", "@@@.", "##@.", "##@.", "@ .", "@ .", "@.#.", " $$.", " ==.", "# *.", "$$@.", "==@.", "**@.", "@.#.", "@.&.", "@@@.", "#=*.", "&= .", "@@@.", "* @.", " @.", "@@@.", "@@@.", "@ .", "@O*.", "@@@.", " O.", "*OO.", "@@@.", "##@.", "##@.", "@O*.", "@O*.", "@O*.", "*O+.", "*++.", "*==.", "++@.", "+*@.", "O*@.", "@O*.", "@++.", "@@@.", "* .", "+ .", "@@@.", "O*@.", "++@.", "@@@.", "@@@.", "@##.", "@#o.", "@@@.", "o##.", "*##.", "@@@.", "##@.", "##@.", "@o*.", "@*o.", "@o*.", "o##.", "*##.", "o$$.", "##@.", "##@.", "$$@.", "@*o.", "@o$.", "@@@.", "$$$.", "$$$.", "@@@.", "$*@.", "**@.", "@@@.", "@@@.", "@&&.", "@&O.", "@@@.", "O##.", "O##.", "@@@.", "##@.", "##@.", "@OO.", "@OO.", "@OO.", "O##.", "O##.", "O++.", "##@.", "##@.", "++@.", "@OO.", "@O+.", "@@@.", "+++.", "+++.", "@@@.", "+&@.", "&&@.", "@@@.", "@@@.", "@o#.", "@o#.", "@@@.", "###.", "###.", "@@@.", "##@.", "##@.", "@oo.", "@ #.", "@ #.", "-oX.", "###.", "###.", "o%@.", " @.", "o#@.", "@ #.", "@# .", "@@@.", "###.", " #.", "@@@.", "o#@.", "oo@.", "@@@.", "@@@.", "@o..", "@o&.", "@@@.", "*##.", "*##.", "@@@.", "##@.", "##@.", "@Oo.", "@OO.", "@**.", "ooo.", "OOO.", "**O.", "o#@.", "o#@.", "o#@.", "@OO.", "@OO.", "@@@.", "O*O.", "O*O.", "@@@.", "o#@.", "oo@.", "@@@.", "@@@.", "@ .", "@ o.", "@@@.", "o# .", "o#o.", "@@@.", "o#@.", "o#@.", "@oo.", "@oo.", "@oo.", "o#o.", "o#o.", "o#o.", "o#@.", "o#@.", "o#@.", "@oo.", "@o$.", "@@@.", "$$o.", "*o$.", "@@@.", "$$@.", "* @.", "@@@.", "@@@.", "@OO.", "@&*.", "@@@.", "OO..", "*...", "@@@.", "##@.", "##@.", "@&*.", "@&*.", "@&*.", "..&.", ".&&.", "&&*.", "&O@.", "*O@.", "*O@.", "@&*.", "@&#.", "@@@.", "***.", "###.", "@@@.", "*O@.", "#O@.", "@@@.", "@@@.", "@&&.", "@&@.", "@@@.", "&*&.", "**&.", "@@@.", "&&@.", "&&@.", "@&*.", "@**.", "@**.", "**&.", "**&.", "*##.", "&&@.", "&&@.", "##@.", "@**.", "@*#.", "@@@.", "###.", "###.", "@@@.", "#&@.", "&&@.", "@@@.", "@@@.", "@ .", "@ .", "@@@.", "o**.", "o$$.", "@@@.", "* @.", "$ @.", "@O*.", "@O+.", "@##.", "###.", "###.", "###.", "# @.", "##@.", " @.", "@ .", "@ .", "@@@.", "&**.", "&**.", "@@@.", " @.", " @.", "@@@.", "@@@.", "@ O.", "@ O.", "@@@.", "**&.", "**&.", "@@@.", "**@.", "**@.", "@ O.", "@ +.", "@ .", "++O.", "+O+.", " .", "++@.", "+ @.", " @.", "@ .", "@ &.", "@@@.", "&&&.", "&o&.", "@@@.", " @.", "& @.", "@@@.", "@@@.", "@O&.", "@&&.", "@@@.", "##O.", "###.", "@@@.", "OO@.", "##@.", "@&&.", "@&&.", "@&&.", "##*.", "## .", "##O.", "**@.", " @.", "OO@.", "@&&.", "@&*.", "@@@.", "**#.", "***.", "@@@.", "##@.", "**@.", "@@@.", "@@@.", "@&#.", "@&*.", "@@@.", "##&.", "&&&.", "@@@.", "##@.", "##@.", "@O&.", "@O&.", "@O&.", "&&&.", "&&&.", "&&*.", "##@.", "**@.", "**@.", "@&#.", "@&*.", "@@@.", "#&*.", "***.", "@@@.", "*O@.", "*O@.", "@@@.", "@@@.", "@.*.", "@.*.", "@@@.", "**..", "*...", "@@@.", "##@.", "##@.", "@.*.", "@...", "@...", "..&.", ".&*.", "&*#.", "*#@.", "#*@.", "**@.", "@.&.", "@O*.", "@@@.", "*#*.", "#&&.", "@@@.", "**@.", "&&@.", "@@@.", "@@@.", "@ .", "@ %.", "@@@.", " .", "%% .", "@@@.", " @.", " @.", "@ .", "@ .", "@ .", "% .", "% .", "% .", " @.", " @.", " @.", "@ %.", "@ .", "@@@.", "%% .", " .", "@@@.", " @.", " @.", "@@@.", "@@@.", "@XX.", "@XX.", "@@@.", " **.", " *.", "@@@.", " @.", "* @.", "@ .", "@ .", "@ ..", " .", ".* .", "* ..", " @.", ".*@.", "*.*.", "@ .", "@ .", "@@@.", " .", " .", "@@@.", ".*@.", " @.", "@@@.", "@@@.", "@&=.", "@&=.", "@@@.", "== .", "== .", "@@@.", " @.", "#@@.", "@&=.", "@**.", "@ .", "==&.", "**&.", " &.", "#@@.", "#@@.", "#@@.", "@ *.", "@**.", "@@@.", "* &.", " *.", "@@@.", "#@@.", "**@.", "@@@.", "@@@.", "@&*.", "@&*.", "@@@.", "***.", "***.", "@@@.", "*@@.", "@*@.", "@&#.", "@ .", "@**.", "##*.", " &*.", " &*.", "*@@.", "@*@.", "**@.", "@**.", "@ *.", "@@@.", " &#.", " .", "@@@.", "##@.", " @.", "@@@.", "@@@.", "@&*.", "@&*.", "@@@.", "***.", "***.", "@@@.", "**@.", "**@.", "@&*.", "@&@.", "@&*.", "@*@.", "*@*.", "***.", "*@@.", "@#@.", "* @.", "@&*.", "@&#.", "@@@.", "***.", "###.", "@@@.", "* @.", "# @.", "@@@.", "@@@.", "@ .", "@&*.", "@@@.", " .", "* .", "@@@.", "**@.", "**@.", "@##.", "@ .", "@ .", "# .", " . .", " * .", "**@.", " @.", " @.", "@ ..", "@ *.", "@@@.", " . .", " * .", "@@@.", ". @.", "* @.", "@@@.", "@@@.", "@& .", "@ .", "@@..", " .#.", ".##.", "&@@.", "#&@.", "##*.", "@ ..", "@ ..", "@ .", ".##.", "&&#.", "&&*.", "##*.", "#*@.", "* @.", "@ .", "@ .", "@@@.", " **.", " .", "@@@.", " @.", " &@.", "@@@.", "@@@.", "@&*.", "@&*.", "@@@.", "*@*.", "@*@.", "@@@.", "@*@.", "**@.", "@&*.", "@&#.", "@ .", "***.", "###.", " &.", "**@.", "**@.", "**@.", "@**.", "@ *.", "@@@.", "* &.", "* &.", "@@@.", "**@.", "##@.", "@@@.", "@@@.", "@ &.", "@&&.", "@@@.", "*@*.", "**@.", "@@@.", " @.", "#*@.", "@&&.", "@&&.", "@&&.", "*@*.", "**@.", "*@*.", "#*@.", "#*@.", "#*@.", "@&&.", "@&#.", "@@@.", "###.", "## .", "@@@.", "##@.", " @.", "@@@.", "$$$.", "$##.", "$##.", "$$$.", "##*.", "#&*.", "$$$.", "*##.", "#*#.", "$$$.", "##$.", "##$.", "$##.", "$##.", "$##.", "##&.", "&*&.", "##&.", "*##.", "***.", "*##.", "##$.", "##$.", "##$.", "$##.", "$&*.", "$&*.", "##&.", "##&.", "##&.", "*##.", "*##.", "*##.", "##$.", "*#$.", "*#$.", "$#&.", "$##.", "$$$.", "***.", "###.", "$$$.", "***.", "###.", "$$$.", "##$.", "##$.", "$$$.", "---.", "- .", "-X .", "---.", " .", " .", "---.", " .", " .", "---.", " X.", " .", "---.", "###.", "#*#.", "---.", "X -.", " -.", "-##.", "-#*.", "-##.", "###.", "#*#.", "###.", "###.", "*#*.", "###.", "###.", "#*#.", "###.", "###.", "*#*.", "###.", "##-.", "#*-.", "##-.", "-X .", "- .", "-*&.", "* *.", "***.", "&*&.", " .", "***.", "&&*.", "** .", "** .", "## .", "#*#.", "###.", "#*#.", " -.", " -.", " -.", "-*&.", "-*#.", "- .", "&*&.", "###.", " .", "&&#.", "#*&.", " *&.", "#* .", "&**.", "&* .", "###.", "#*#.", "###.", " -.", " -.", " -.", "-**.", "-**.", "-**.", "***.", "***.", "***.", " **.", " *&.", " *&.", "** .", "&* .", "&**.", "#*#.", "###.", "#*#.", " -.", " -.", " -.", "-**.", "- .", "---.", "***.", "***.", "---.", " *&.", " ##.", "---.", "& .", "# X.", "---.", "###.", "#*#.", "---.", " -.", "X -.", "---.", "---.", "- *.", "-**.", "*&&.", "*&&.", "*&#.", "&=-.", "# .", "&==.", "---.", "= -.", " =-.", "-**.", "-**.", "-**.", "*&&.", "*&#.", "*&&.", "#**.", "&==.", "#**.", "= -.", " -.", "* -.", "-**.", "-**.", "-**.", "*&#.", "*&&.", "*##.", "&*X.", "&X*.", "#**.", "* -.", "* -.", "* -.", "-**.", "-*#.", "---.", "###.", "###.", "---.", "###.", "###.", "---.", "# -.", " -.", "---.", "+XX.", "XX*.", "XX*.", "XXX.", "%%%.", "%**.", "XX+.", "*X#.", "*X#.", "XX*.", "XX*.", "XX*.", "%%*.", "%**.", "%**.", "*X#.", "*X#.", "*X#.", "XXX.", "XX#.", "+++.", "XXX.", "X#X.", "+++.", "XX#.", "XXX.", "+++.", "++o.", "o#o.", "o#o.", "ooo.", "*%%.", "*%*.", "ooo.", "%*$.", "%*$.", "o#o.", "o#o.", "o#o.", "*%%.", "*%*.", "*%*.", "%*$.", "**$.", "**$.", "o#$.", "$$$.", "+++.", "$$$.", "$$$.", "+++.", "$$$.", "$$$.", "+++.", "+++.", "+ *.", "+**.", "+++.", " .", "* .", "+++.", " .&.", ".==.", "+++.", "& +.", "=&+.", "+**.", "+**.", "+**.", "* ..", "* ..", "**..", ".==.", ".OO.", "&OO.", "=&+.", "=&+.", "=*+.", "+**.", "+**.", "+**.", "* &.", "**&.", "* &.", "&OO.", "&==.", "&==.", "=*+.", "=*+.", "=*+.", "+**.", "+ *.", "+++.", "* &.", " .", "+++.", "***.", "**#.", "+++.", "*#+.", "# +.", "+++.", "+++.", "+ *.", "+oX.", "+++.", " .", "* .", "+++.", " .&.", ".-o.", "+++.", "& +.", "=&+.", "+**.", "+Xo.", "+**.", "* ..", "X ..", "**..", ".XX.", ".OX.", "&XO.", "X&+.", "=&+.", "=*+.", "+oX.", "+**.", "+Xo.", "*+&.", "**&.", "*+&.", "&OX.", "&o=.", "&XX.", "X*+.", "-*+.", "=*+.", "+**.", "+ *.", "+++.", "* &.", " .", "+++.", "***.", "**#.", "+++.", "*#+.", "# +.", "+++.", "---.", "- .", "- &.", "-...", ".##.", "&##.", "---.", "& ..", "&&&.", "..-.", "##&.", "##&.", "-&*.", "-**.", "- *.", "*&&.", "*# .", "&&&.", "***.", "***.", "&&&.", "&&-.", "# -.", "&&-.", "- *.", "-**.", "-**.", "&&X.", "&X&.", "&&&.", "&&&.", "&&&.", "&&&.", "&&-.", "&&-.", "&#-.", "-**.", "-*#.", "---.", "###.", "###.", "---.", "###.", "###.", "---.", "# -.", " -.", "---.", "###.", "#@#.", "###.", "*#o.", "#oo.", "ooo.", "oo#.", "o#*.", "###.", "**#.", "*&#.", "###.", "oo*.", "o**.", "***.", "---.", " .", " .", "---.", " .", " .", "---.", " .", " .", "---.", " .", " .", "---.", " .", " .", "---.", " .", " .", "---.", " .", " .", "---.", " .", " .", "+++.", "+o+.", "+++.", "+++.", "+o+.", "+++.", "+++.", "+o+.", "+++.", "+++.", "+o+.", "+++.", "#@#.", "@@@.", "@#@.", "#@#.", "@@@.", "@#@.", "#@#.", "@@@.", "@#@.", "#@#.", "@@@.", "@#@.", "#@#.", "@@@.", "@#@.", "#@#.", "@@@.", "@#@.", "#@#.", "@@@.", "@#@.", "#@#.", "@@@.", "@#@.", "@@@.", "@XX.", "@XX.", "@@@.", "@XX.", "@XX.", "@@@.", "@XX.", "@XX.", "@@@.", "@XX.", "@XX.", "@@@.", "@XX.", "@XX.", "@@@.", "@XX.", "@XX.", "@@@.", "@XX.", "@XX.", "@@@.", "@XX.", "@XX.", " .", " X .", " .", " .", " % .", " .", " .", " % .", " .", " % .", "%%%.", " % .", " % .", "%%%.", " % .", "%#%.", "#%#.", "%#%.", "% %.", "#@#.", "% %.", "###.", "###.", "###.", "#@#.", "@@@.", "@#@.", "#@#.", "@@@.", "@#@.", "#@#.", "@@@.", "@#@.", "#@#.", "@@@.", "@#@.", "#@#.", "@@@.", "@#@.", "#@#.", "@@@.", "@#@.", "#@#.", "@@@.", "@#@.", "#@#.", "@@@.", "@#@.", "#@#.", "@@@.", "@#@.", "#@#.", "@@@.", "@#@.", "#@#.", "@@@.", "@#@.", "#@#.", "@@@.", "@#@.", "#@#.", "@@@.", "@#@.", "#@#.", "@@@.", "@#@.", "#@#.", "@@@.", "@#@.", "#@#.", "@@@.", "@#@.", "@@@.", "*@@.", "@*@.", "@@@.", "*@@.", "@*@.", "@@@.", "*@@.", "@*@.", "@@@.", "*@@.", "@*@.", "*@@.", "@*@.", "**@.", "*@@.", "@*@.", "**@.", "*@@.", "@*@.", "**@.", "*@@.", "@*@.", "**@.", "@@@.", "***.", "***.", "@@@.", "***.", "***.", "@@@.", "***.", "***.", "@@@.", "***.", "***.", "@@@.", "**@.", "**@.", "@@@.", "**@.", "**@.", "@@@.", "**@.", "**@.", "@@@.", "**@.", "**@.", "---.", "*@*.", "@*@.", "---.", "*@*.", "@*@.", "---.", "*@*.", "@*@.", "---.", "*@*.", "@*@.", "---.", "@*-.", "**-.", "---.", "@*-.", "**-.", "---.", "@*-.", "**-.", "---.", "@*-.", "**-.", "---.", " -.", "#*-.", "---.", " -.", "#*-.", "---.", " -.", "#*-.", "---.", " -.", "#*-.", "#*@.", "#*@.", "#*@.", "#*@.", "#*@.", "#*@.", "#*@.", "#*@.", "#*@.", "#*@.", "#*@.", "#*@.", "&=-.", "# .", "&==.", "&=-.", "# .", "&==.", "&=-.", "# .", "&==.", "&=-.", "# .", "&==.", "---.", "= -.", " =-.", "---.", "= -.", " =-.", "---.", "= -.", " =-.", "---.", "= -.", " =-.", "#**.", "&==.", "#**.", "#**.", "&==.", "#**.", "#**.", "&==.", "#**.", "#**.", "&==.", "#**.", "= -.", " -.", "* -.", "= -.", " -.", "* -.", "= -.", " -.", "* -.", "= -.", " -.", "* -.", ".XX.", ".OO.", "&%O.", ".XX.", ".O%.", "&XO.", ".XX.", ".%X.", "&OO.", ".XX.", ".%O.", "&XO.", ".XX.", ".OO.", "&O%.", ".XX.", ".OO.", "&%X.", ".XX.", ".XO.", "&O%.", ".XX.", ".OO.", "&XO.", "&OX.", "&o=.", "&XX.", "&OO.", "&o=.", "&XX.", "&OO.", "&o=.", "&XX.", "&OO.", "&o=.", "&XX.", "&XO.", "&o=.", "&XX.", "&OO.", "&o=.", "&XX.", "&OO.", "&o=.", "&XX.", "&O%.", "&o=.", "&XX.", "###.", "#&*.", "#**.", "***.", "**o.", "*oo.", "ooo.", "oo#.", "o#*.", "#*#.", "##o.", "#oo.", "&&X.", "&X&.", "&&&.", "&&X.", "&X&.", "&&&.", "&&X.", "&X&.", "&&&.", "&&X.", "&X&.", "&&&.", " .", " .", " .", " .", " .", " .", " .", " .", " .", " .", " .", " ."}; micropolis-activity/images/tiles-66.xpm0000664000076400007640000000252010724145723020376 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "32 32 7 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c red", "O c gray75", "+ c gray100", "@ c None", /* pixels */ "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@OOOOOOOOOOOOOOOOOOO@@@@@", "@@@@@@ +++++++++++++++++++ @@@@", "@@@@@O X+o+++++++++++++++o+ .@@@", "@@@@OOX +++++++++++++++++++..@@@", "@@@@OO +++++++++++++++++++ .@@@", "@@@@OO OO..OO..OO..OO..O .@@@", "@@@@OOO XX..XX..XX..XX..XXXX.@@@", "@@@@OOXXXXXXXXXXXXXXXXXXXXX.@@@@", "@@@@@@XX....XXXXXXXX....XX.@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" }; micropolis-activity/images/tiles-155.xpm0000664000076400007640000113021410724145723020460 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "16 15360 2 1", " c black", ". c gray100", /* pixels */ "................", "................", "... ....... ....", "................", "................", "................", ".. .............", "............ ...", "................", "......... ......", "................", ".... ...........", "................", "............ ...", "................", "................", "................", "................", "................", "................", "................", " ...............", " ...............", " ...... ........", " ...............", "................", "................", "................", "................", "................", "................", "................", " ", " ", " ", " . . ", " ", " ", " . . ", " ", " ", " ", " ", " ", " . . ", " ", " ", " ", " ", " ", " ", " ", " ", " ... ", " . ", " ... ", " ", " . ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " . . ", " ", " ", " . . ", " ", " ", " ", " ", " ", " . . ", " ", " ", " ", "................", "..... ...... .", " . .... . ", " .. . .", " .. . .", ". ", " . ", " ", " ", " ", " ", " ", " . . ", " ", " ", " ", "................", ". ..... ......", " . .....", " ... . .", " . . .", " .", " ", " .", " . . ", " ", " ", " .", " ", " ", " ", " ", "................", "................", ".. .............", "................", " ..............", " . ............", " .. ...........", " ...........", " . .........", " . ........", " . .........", " . . ........", " ......", " ... ..", " . ...", " . ..", "................", "................", " ...............", " ...............", ". .. . .......", " . .........", " .. . .......", " .. .....", " ........", " .. . ......", " .......", " .....", " . ....", " . ...", " . . . ..", " ..", " ...", " . ...", " .", " . . .", " . .", " . ...", " . .....", " ... ...", " ......", " . . ...", " ...", " . ...", " . ...", " .. ...", " ....", " .. ..", " . ..", " ...", " . ....", " . . . .....", " ....", " ..", " . ..", " ...", " . . ...", " . ..", " ..", " . ....", " ...", " . ...", " . ..", " ..", " ...", " . ... .", " . ....", " .. ......", " ... ...", " . . ....", " . . ....", " . . ....", " . .. .....", " .... ......", " . ..........", " . ..........", " .. ..........", " ..............", " ...............", "................", " .", " .. ", " . . . .", " .. ...", " .. . .", " . ........", " .. ....", " ... ........", " . . .......", " .. .......", " . . ......", " . ..........", ".... ..........", ". . . .........", "................", "................", " ", " ", " ", " ", " ", " . . ", " ", " ", " ", " ", " . . . .. ", " .", " ... . ", " . ... ", "... .. .......", "................", " ", " ", " ", " . . ", " ", " ", " ", " . . ", " ", " . ... . ", " ", ". .... . ", " ... .. ", " ..... ...... ", "................", "................", " ", ". ", ".. . . ", ".. ", ".. ", ".... . . ", ".... . .. ", "...... .. ", "...... .. ", "...... . ", "....... .. .. ", "............ .", "............. ", ".............. ", ".............. ", "................", " ", ". ", "... . . ", ".... ", "... ", ". .. . ", ". . . . ", "... .. . ", "..... . ", "...... .. . ", "...... .. ", ".......... .. ", "........... . ", "........... . ", "............ .", "............... ", ".. ", "... ", ".... . ", ".. . ", ".. .. ", ".. . . . ", "... . ", ".... . .. ", ".... . ", ".. . ", ". . . ", ". . ", "... ", "... . ", "... . ", ".. ", "... ", "... .. ", "... . ", "..... . ", "..... ", ".. .. ", "..... ", ".... . . ", ".... . ", "..... . ", ".... ", ".... ", "... ", "... .. ", ".. ", ".. ", "................", ".............. .", "............ . ", ".............. ", "............. ", "....... . ", "...... .. ", "..... . .. ", ".... ", "... . . .. ", ".... .. .. ", "...... ", ".. .. ", ". . . ", " . ", " ", "................", ".............. .", "............. ..", "............... ", "......... ", "......... .. ", "......... ", "........ ", "..... . . . ", "..... . ", "...... ", ".... . . ", " . . ", ".. ", " . ", " ", "...... .........", ". . . . ... ....", " . ... . . .. ..", ". . . ..... . . ", " . . . ... . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . ..", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", "................", "................", "....... ........", ". ... .. .......", ".. . . . .......", ". . ..... ......", " . . . ... .....", ". . . . ... ....", ".... . . ... ...", ". . . . ........", " . . . . . . ...", ". . . . . . . . ", " . . . . . . . .", ". . . . . ......", " . . . . . . . .", ". . . . . . . ..", " . . . . . . . .", ". . . . . . . ..", " . . . . . . . .", ". . . . . ... . ", " . . . . ... ...", ". . . . . . . . ", " . . . . . . ...", ". . . . . . . . ", " . . . . . . . .", ". . . . . ... . ", " . . . . . . ...", ". . . . . . . . ", " . . . . . ... .", ". . . . . ... . ", " . . . . . ... .", ". . . . . . . . ", " . . . . . . . .", ". . . . . ... ..", " . . . . . . ...", ". . . . . ......", " . . . . .......", ". . . ... ......", " . . ...........", ". ..... ... ....", " ... . ... .....", ". ..... ........", " ... . . .......", ". . . ..........", " . .............", "... ............", " ...............", "................", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . ... ", " ..... . ... . .", ". . ... ....... ", ".. . . . ..... .", "... ....... ... ", " . .............", ". ..............", " ...............", "................", "...... ... . . .", "... . ... . . . ", ".. . . . . . . .", "....... ... . . ", ".......... . . .", "......... . . . ", ".... ..... . . .", "............... ", "........ . . ...", "......... . . ..", ".......... ... .", "............... ", "........ ..... .", "................", "................", "................", ".... ... . . . .", "....... . . . . ", ".. . . . . . . .", "... ... . . . . ", ".. . . . . . . .", "... . . . . . . ", ".... . . . . . .", "... ... . . . . ", ".. ... . . . . .", ". . . . . . . . ", " ..... . . . . .", ". . . . . . . . ", ".... ... . . . .", "..... . . . . . ", "...... . . . . .", "... . ... . . . ", "................", "............. ..", "............ . .", "......... . ....", "...... .........", "..... . ... ... ", ".... ... . . . .", "........... . ..", ".... ... . . . .", "..... . . . . . ", "...... . . . . .", "... . . . . . . ", ".... . . . . . .", "..... . . . . . ", ".... . . . . . .", "..... . . . . . ", "................", ". ...... ... ...", ".. . .... . . ..", ". . . ... .. .. ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", "................", " ...............", " .. ... ........", ". ...... . ... .", " . ... .........", ". . . . ........", " . . . . . .. ..", ". . . . ... ....", " . . . . . . ...", ". . . . . . . ..", " . . . . . . ...", ". . . . . . . .", " . . . . . . ...", ". . . . . . . .", " . . . . . . ...", ". . . . . . . .", " . . . . . . ...", ". . . . . . ....", " . . . . . .. ..", ". . . . . .. ...", " . . . . . . ...", ". . . . . . . .", " . . . . . . ...", ". . . . . . ....", " . . . . . .....", ". . . . . .. ...", " . . . . . .....", ". . . . . . ...", " . . . . . .....", ". . . . . . . ..", " . . . . . . ...", ". . . . . . ....", " . . . . . . ...", ". . . . . . . ..", " . . . . . . ...", ". . . . . . . ..", " . . . ..... ...", ". . . ... ......", " . . . . .......", ". . . . ........", " . . . .........", ". . . ..........", " . . . . .......", ". . . ..........", ".. . . .........", ". . ............", " ...............", "................", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " ..... . ... . .", ". . . . ... ... ", " . ... . ..... .", ". ............. ", " . ..... .......", ". ..... . ... ..", "........ .......", "................", ".. . . . . . . .", ". . . . . . . . ", ".. . . . . . . .", "... . . . . . . ", ".. . ... . . . .", "..... ... . . . ", "........ . . . .", "......... . . . ", "...... . . . . .", "..... . ... . . ", "...... ... . . .", "........... . . ", "........ . . ...", "............... ", ".............. .", "................", ".... ... . . . .", "... . . . . . . ", ".... . . . . . .", "....... . . . . ", "...... . . . . .", "... . . . . . . ", "...... . . . . .", "..... . . . . . ", "...... . . . . .", "..... . . . . . ", "........ . . . .", "... . . . . . . ", ".. . ... . . . .", "... ... . . . . ", ".. . . . . . . .", ". . . . . . . . ", "................", "................", "........ ... . .", "......... . . . ", "...... ... . . .", "..... ..... . . ", "............ . .", "....... ... . . ", ".... . ... . . .", "....... . . . . ", ".. ... . . . . .", "... . . . . . . ", ".. . . . . . . .", "... . . . . . . ", ".. . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", "................", "................", "..... ... ......", ".. ... . .......", "... . . . . ....", ".... . . . .....", "... . . . . ....", ".... . . . . ...", "... . . . ......", ".... . . . . ...", "..... . . . ....", ".... . . . . ...", "... . ... ......", "................", "................", "................", " ", " . . . . . . . ", " . . . . . . . ", " . . ..... . . ", " . . . . ... . ", " . ... . . . . ", " . . ..... . . ", " . ....... . . ", " . . ... . . . ", " ... ..... . . ", " . . . . . . . ", " . ... . . . . ", " . . . . . . . ", " . . . . . . . ", " . . . . . . . ", " ", ".. . ... . . . .", ". . . . . . . . ", ".. . ... . . . .", "... ... . . . ..", "...... ... . . .", ". ... . . . . . ", ".. ..... . . . .", ". ..... ... . . ", "...... ... ... .", ". . . . . ... . ", ".. . . ... . ...", ". . . . ... . ..", ".... . ... . . .", ". . ... ... . . ", ".... ..... . . .", "................", ".. . . . ... . .", "... . ..... . . ", ".. . . . . . . .", ". . . . . . . ..", ".... ... . . . .", ". ... . ..... . ", ".. . . . . . . .", ". . ... . . . ..", ".. . ..... . ...", ". . . . . . ... ", ".. . . . . . . .", ". . . ... ... . ", ".. . . ... . . .", ". . . . . . . . ", ".. . . . . . . .", "................", ".. . . ... . . .", ". . . . . . . ..", ".. . . . . ... .", ". . . ... . . ..", ".. . . . . . . .", ". . ... . . . . ", ".. . ... . ... .", ". . . . . . . . ", ".. . . . . ... .", "... ... ....... ", ".. . . . . . . .", ". . . . . . . ..", ".. ... ..... . .", ". . . . ... ....", ".. ... . ... . .", "................", ".. . . ... . . .", ". . . . . . . ..", ".. . . . . ... .", ". . . ... . . ..", ".. . . . . . . .", ". . ... . . . . ", ".. . ... . ... .", ". . . . . . . . ", ".. . . . . ... .", "... ... ....... ", ".. . . . . . . .", ". . . . . . . ..", ".. ... ..... . .", ". . . . ... ....", ".. ... . ... . .", "................", "... . ... .....", ". .... ..... ..", ".. ... .. .. ", ". . ... ... ... ", ". . .... . ..", " ..... ......", ". .. .. .. ..", ". .. .. .. . ", " . . . .. .. ", "... . .. .. . ..", ".. ... ... .. ", "... . . . .. ", " . .. . ....", " ....... . ... ", ".. .. . ........", ".... .. .... ..", ".. . .. ......", "... .... ... .. ", "... . . . .", ".. .. . ..", ". . .. . .. ", " . . . . . ..", ". .. . ....... ", " ... ... .... ..", " . .. .. ", ".. .. . . ... ", "...... ... .. .", ".... ... . ... ", ". ....... .... ", " ... .. .... ...", ".. ... .. ..", ".... ....... ..", "... ... ........", " . . ..... .. .", ". ... .. .....", ". .. .... . . ", " .. ... . ..... ", ". .. ....... .. ", "....... . .... ", ". ... .. ... ..", ". . . ........ ", ". . . ... . . ..", ".. .. .. .....", ".... .. ..... ..", ". ... . ... ... ", " .. .. ... ...", "... .. .. ....", "..... ... ... ..", ".. ........ ....", ".... .. ... ..", ".. ... .. . .", " .. .. .. ..", "... ..... . . ..", ". .. . .. . . ", ". . ... .. ", " . . . . . ", "..... .. . .", " . .. .. . ", ". . .. . .. ..", " .. ... .. . ", ".. .. . .. ", ".... .. .. ..", ".. .. .. . .", "..... . . . ....", "... .. ..", " . . .", ". . ... . ", " ... ..", " . . ", " .. ", "... . ... ", " . ..", " . . ", ". . . ", " . ... ", " . ... ", ".. ", " . ... ", " . . ", ".. . . .", ".. . . .", ". . . ..", " .. ", " ... .. ", " . .", " . . ", " . ... . ", " . ", " .. ", " . .. . ", " ", " .. . . . .", " ", " . .. .. ", ". . .", ". .. . ", ". ..", " .. ", ". ... .", " .. . ", " . ", ". .. ", " ... ... ", " .. .", " .. ", " .. ", ". . .. ", " .. ", " .. . .", " ", " . .. . ", ". . ..", ".. . ..", ".. .. ", ". ", " ... .. .. ", " ", " .. ", " .. . ", " .. . ", " . .. ", " . ", " ... ", " ... ", " ... ", " .", ".. . . ... ....", ". .", "................", "..... ....... ..", "........ .......", ". .......... ...", "..... . ......", ".... .. .. .. ..", ".... . . . .....", "..... . . ......", ". .. . . . .. ..", ".... .. .. .....", "... . . ......", "........... ....", "................", ".. ..... ... ...", "...... .........", "................", ".. . .. ......", "... .... ... .. ", "... . . . .", ".. .. . ..", ". . .. . .. ", " . . . . . ..", ". .. . ....... ", " ... ... .... ..", " . .. .. ", ".. .. . . ... ", "...... ... .. .", ".... ... . ... ", ". ....... .... ", " ... .. .... ...", ".. ... .. ..", ".... ....... ..", "... ... ........", " . . ..... .. .", ". ... .. .....", ". .. .... . . ", " .. ... . ..... ", ". .. ....... .. ", "....... . .... ", ". ... .. ... ..", ". . . ........ ", ". . . ... . . ..", ".. .. .. .....", ".... .. ..... ..", ". ... . ... ... ", " .. .. ... ...", "... .. .. ....", "..... ... ... ..", ".. ........ ....", ".... .. ... ..", ".. ... .. . .", " .. .. .. ..", "... ..... . . ..", ". .. . .. . . ", ". . ... .. ", " . . . . . ", "..... .. . .", " . .. .. . ", ". . .. . .. ..", " .. ... .. . ", ".. .. . .. ", ".... .. .. ..", ".. .. .. . .", "..... . . . ....", "................", ".. .......... ..", "........ . . . ", "... ....... ...", ". ... .. ..", ". ... . . .. ", ".. ... . ...", ". . . . . . ", ".. . . . . .", ".. . .. . .", " . . . ", ".. .. . .. . . ", ".. . .. ... ", ". . ..... . .", ". .. ...... ..", ".. .. .. .......", "................", " ..... . .... ..", " .... .. . .. ..", " .. .. ....", ". . .. .. ..", ". . . .. .", " . . . ", " . . . . . ", " .. . . ", " ... . . ", " . ... .. .... ", " . .... . . . ", " .. .. . .......", "..... .. . .....", ". ... . ... ....", "...... ... .....", " ...............", ".. ....... .....", ".. .............", ". . ... ... ... ", " . .... . .. ", " . . . ", ".. . . . ", " . .", " . . . ", ". ... . .. .", " . ... . ", " ... . . .. . ", ".. ...... . . .", ".... .... .. ..", " ........... ...", ".. ......... ...", "........... ....", "... ............", " ..... ..... ...", " .... .. ... ..", ".. .. .. .. .", ".. .. .. .. . ", ".. .. .. .. .", " . . . ", " . . . ", " . . . ", " . . . . . .", " . . . .. . ...", " . ...... . .", ". ... . .. .. .", " ..... ... .....", " .... ..........", ".... ...........", ".. ............", ".. ..... . .....", ". ...... .....", " . .. .. .. ", ".. . .. . ... ", " .. .. .. ", ". . . . . ", ".... . . . . .", ".. . . .. . .", " .. . .... . ", ". ..... . . . ", ". . .. .. ... ", ". . . .. .. . ", ". .... ...... ..", "..... ........ .", "................", " ..... ...... ..", " ... ... ... ..", ". . ..........", ". . .. ......", " . .. .... ", ". . . . .. ", " . . . .. ", " . . . ", " ... . . ", " . ... .. .... ", " . .. . .. . ", " .. . .. .... . ", " .... .. ..... .", " ... ... ... ..", ".. ... .........", " ...............", ".......... .... ", "....... ...... .", ".... ...... ....", " .. ... .. ... ", "... .. .. . ", "... . . ", " .. . .. . . ..", " . .. . . ", ". ..... .. ", " . . . .. ", " ... ........ . ", ". . .... .. . ..", " ... ... . . ..", " ... ... .......", "........ .......", "........... ....", "... ............", "............ ...", " .... ..... ... ", ".. ... ... ....", "... .. .. ... .", "... . .. . ..", " . . . ... .", " . . . ", " .. . . . ", " ... . . . .", " . . . .... . .", ".. . .... . ... ", "..... .. .....", ".. ...... ......", " ...... ...... .", " ", " ", " .. .. ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", " .. .. ", " .. .. ", " ", " ", " . . . . . ", " . . . . ", " .. . . . .. ", " .. . ... . . ", " . . . . . . ", " . ... . ", " . . . . . ", " . . . . ", " . . . . . ", " . . . . ", " .. . . . .. ", " .. . ... . . ", " . . . . . . ", " . ... . ", " . . . . . ", " . . . . ", "................", "................", " ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", " ", " ", "................", "................", ".. . . . . . ..", ".. . . . . ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . . . ..", ".. . . . . ..", ".. . . . . . ..", ".. . . . . ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . . . ..", ".. . . . . ..", ".. . . . . . .", ".. . . . . . ", ".. . . . . . . ", "... . . . . . .", "... . . . . . ", "... . . ... . .", ".... . . ... . ", ".... . . . . .", "..... . . . . ", "...... . . . .", "....... . . . ", "........ . .", ".......... ", "............. ", "................", "................", "................", "................", "............. ", ".......... . .", "........ . . . ", "....... . . . .", "...... . . . . ", "..... . . . . .", ".... . . . . . ", "... . . ... . .", "... . ... . . ", "... . . . . . .", ".. . . . . . . ", ".. . . . . . ", ".. . . . . . .", ".. . . . . ..", "................", "................", " ............", " . . .........", ". . . . .......", " . . . . ......", ". . . . . .....", " . . . . . ....", ". . ... . . ....", " . . ... . . ...", ". . . . . . ...", " . . . . . . ...", " . . . . . . ..", " . . . . . ..", ". . . . . . ..", ".. . . . . ..", ".. . . . . . ..", ". . . . . . ..", " . . . . . . ..", " . . . . . . ...", ". . . ... . ...", " . . ... . . ...", ". . . . . . ....", " . . . . . ....", ". . . . . .....", " . . . . ......", ". . . . .......", " . . ........", " .........", " ............", "................", "................", ".. . . . . . ..", ".. ... ... ..", " . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", " ", " ", "................", "................", ".. . . . . . ..", ".. . . . . ..", ".. . . . . . ", ".. . ... . . .", ".. . . . . . . ", ".. . ... . ...", ".. . . . . . . ", ".. . . . . . .", ".. . . . . . . ", ".. . . . . ...", ".. . . . . . . ", ".. . ... . . .", ".. . . . . . ", ".. . ... . ", ".. . . . . . ..", ".. . . . . ..", "................", "................", " ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", " . . . . . ", " ... ... ", ".. . . . . . ..", ".. . . . . ..", ".. . . . . . ..", ".. . . . . ..", " . . . . . ..", " . . . ... . ..", ". . . . . . . ..", " ... . ... . ..", ". . . . . . . ..", " . . . . . . ..", ". . . . . . . ..", " ... . . . . ..", ". . . . . . . ..", " . . . ... . ..", " . . . . . ..", " . ... . ..", ".. . . . . . ..", ".. . . . . ..", ".. . . . . . ..", ".. ....... ..", " . . . . . ", " . . . . . . . .", ". . . . . . . . ", " ... . . . . ...", ". . . . . . . ", " ... . . . ...", ". . . . . . . ", " ... . . . . ...", ". . . . . . . . ", " . . . . . . . .", " . . . . . ", " ....... ", ".. . . . . . ..", ".. . . . . ..", "........ .. ....", "........ .. ....", " ", " . . . . . . .", ". . . . . . . ", " . . . . . . .", ". . . . . . . ", " ..... . .. .. .", ". . . . . . . ", " . . . . . . .", ". . . . . . . ", " . . . . . . .", " ", " ", "........ .. ....", "........ .. ....", ".. . . . . ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . . . ..", ".. . ... . ..", " ", ".. . . . . ..", ".. . . . . . ..", " ", ".. . . . . . ..", ".. . ... . ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . . . ..", ".. . . . . ..", ".. . . . . . ..", " ", " ", " ", " . . ", " ", " ", " . . ", " ", " ", " ", " ", " ", " . . ", " ", " ", " ", " ", " ", " .. .. ", " . . . . . .", ". . . . . . ", " . . . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . . .", ". . . . . . ", " . . . . . .", " .. .. ", " .. .. ", " ", " ", " . . . ", " . . . ", " .. . . . ", " .. . ... . ", " . . . . . . ", " . ... . ", " . . . . . ", " . . . . ", " . . . . . ", " . . . ", " . . . .. ", " .. ... . . ", " . . . . ", " . ... . ", " . . . . . ", " . . . . ", "................", "................", " ", " . . . . . .", ". . . . . . ", " . . . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . . .", ". . . . . . ", " . . . . . .", " ", " ", "................", "................", ".. . . . ..", ".. . . . ..", ".. . . . ..", ".. . ... ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . . . ..", ".. . . . . ..", ".. . . . . . ..", ".. . . . ..", ".. . . . ..", ".. ... . ..", ".. . . . ..", ".. . ... . ..", ".. . . . . . ..", ".. . . . . ..", ".. . . . .", ".. . . . . ", ".. . . . . ", "... . . . . .", "... . . . . . ", "... . . ... . .", ".... . . ... . ", ".... . . . .", "..... . . ", "...... . .", "....... . . ", "........ . .", ".......... ", "............. ", "................", "................", "................", "................", "............. ", ".......... . .", "........ . . . ", "....... . . . .", "...... . . . . ", "..... . . . . .", ".... . . . . . ", "... . ... ", "... .. ", "... . . ", ".. . . . . . ", ".. . . . . . ", ".. . . . . . .", ".. . . . . ..", "................", "................", " ............", " . . .........", ". . . .......", " . . ......", ". . . .....", " . . . . ....", ". . ... . . ....", " . . ... . . ...", ". . . . . . ...", " . . . . . ...", " . . . . ..", " . . . . ..", ". . . . ..", ".. . . . . ..", ".. . . . . . ..", ". . . . . . ..", " . . . . . ..", " . . ...", ". .. ...", " ... . ...", ". . . . . . ....", " . . . . . ....", ". . . . . .....", " . . . . ......", ". . . . .......", " . . ........", " .........", " ............", "................", "................", ".. . . . . . ..", ".. ... ... ..", " . . . . . ", " . . . . . .", ". . . . . . ", " . . . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . . .", ". . . . . . ", " . . . . . .", " ", " ", "................", "................", ".. . . . ..", ".. . . . ..", ".. . . . ", ".. . ... . .", ".. . . . . . . ", ".. . ... . ...", ".. . . . . . . ", ".. . . . . . .", ".. . . . . . . ", ".. . . . ...", ".. . . . . ", ".. ... . . .", ".. . . . ", ".. . ... . ", ".. . . . . . ..", ".. . . . . ..", "................", "................", " ", " . . . . . .", ". . . . . . ", " . . . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . . .", ". . . . . . ", " . . . . . .", " . . . . . ", " ... ... ", ".. . . . . . ..", ".. . . . . ..", ".. . . . ..", ".. . . . ..", " . . . ..", " . . . ... ..", ". . . . . . . ..", " ... . ... . ..", ". . . . . . . ..", " . . . . . . ..", ". . . . . . . ..", " ... . . . ..", ". . . . . ..", " . . ... . ..", " . . . ..", " . ... . ..", ".. . . . . . ..", ".. . . . . ..", ".. . . . ..", ".. ..... ..", " . . . ", " . . . . .", ". . . . . . ", " . . . . ...", ". . . . . . . ", " ... . . . ...", ". . . . . . . ", " ... . . . . ", ". . . . . . ", " . . . . . ", " . . . ", " ..... ", ".. . . . ..", ".. . . . . ..", "........ .. ....", "........ .. ....", " ", " . . . . .", ". . . . . ", " . . . . .", ". . . . . . . ", " ..... . .. .. .", ". . . . . . . ", " . . . . . .", ". . . . . ", " . . . . . .", " ", " ", "........ .. ....", "........ .. ....", ".. . . . ..", ".. . . . ..", ".. . . . ..", ".. . ... ..", ".. . . . . . ..", " ", ".. . . . . . ..", ".. . . . . ..", " ", ".. . . . ..", ".. . . . ..", ".. ... . ..", ".. . . . ..", ".. . ... . ..", ".. . . . . . ..", ".. . . . . ..", " ", " ", " ", " . . ", " ", " ", " . . ", " ", " ", " ", " ", " ", " . . ", " ", " ", " ", " ", " ", " .. .. ", " . . . . . .", ". . . . . . ", " . . . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . . .", ". . . . . . ", " . . . . . .", " .. .. ", " .. .. ", " ", " ", " . . . . . ", " . . . . ", " .. . . . .. ", " .. . ... . . ", " . . . . ", " ... ", " . ", " . . ", " . . . ", " . . . . ", " .. . . . .. ", " .. . ... . . ", " . . . . . . ", " . ... . ", " . . . . . ", " . . . . ", "................", "................", " ", " . . . . . .", ". . . . . . ", " . . . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . . .", ". . . . . . ", " . . . . . .", " ", " ", "................", "................", ".. . . . . . ..", ".. . . . . ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . ..", ".. ... ..", ".. . ..", ".. . . ..", ".. . . . ..", ".. . . . . ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . . . ..", ".. . . . . ..", ".. . . . . . .", ".. . . . . . ", ".. . . . . . ", "... . . . .", "... . . . ", "... . . ... .", ".... . ... . ", ".... . . .", "..... . . ", "...... . . .", "....... . . . ", "........ . .", ".......... ", "............. ", "................", "................", "................", "................", "............. ", ".......... . .", "........ . . . ", "....... . . . .", "...... . . . ", "..... . . .", ".... . . . ", "... . ... . .", "... . ... . ", "... . . . .", ".. . . . . ", ".. . . . . ", ".. . . . . . .", ".. . . . . ..", "................", "................", " ............", " . . .........", ". . . . .......", " . . . ......", ". . . .....", " . . . ....", ". . ... . ....", " . ... . . ...", ". . . . ...", " . . . . ...", " . . . . . ..", " . . . . . ..", ". . . . . . ..", ".. . . . . ..", ".. . . . . . ..", ". . . . . ..", " . . . . ..", " . . . . ...", ". . ... . ...", " . . ... . ...", ". . . . ....", " . . . ....", ". . . . .....", " . . . . ......", ". . . . .......", " . . ........", " .........", " ............", "................", "................", ".. . . . . . ..", ".. ... ... ..", " . . . . . ", " . . . . . .", ". . . . . . ", " . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . .", ". . . . . . ", " . . . . . .", " ", " ", "................", "................", ".. . . . . . ..", ".. . . . . ..", ".. . . . . . ", ".. . ... . . .", ".. . . . . ", ".. ... ...", ".. . . ", ".. . . . .", ".. . . . . ", ".. . . . . ...", ".. . . . . . . ", ".. . ... . . .", ".. . . . . . ", ".. . ... . ", ".. . . . . . ..", ".. . . . . ..", "................", "................", " ", " . . . . . .", ". . . . . . ", " . . . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . . .", ". . . . . . ", " . . . . . .", " . . . . . ", " ... ... ", ".. . . . . . ..", ".. . . . . ..", ".. . . . . . ..", ".. . . . . ..", " . . . . . ..", " . . . ... . ..", ". . . . . ..", " ... ... ..", ". . . ..", " . . . . ..", ". . . . . ..", " ... . . . . ..", ". . . . . . . ..", " . . . ... . ..", " . . . . . ..", " . ... . ..", ".. . . . . . ..", ".. . . . . ..", ".. . . . . . ..", ".. .... . ..", " . ", " . . . . .", ". . . . . ", " ... . . . ...", ". . . . . . . ", " ... . . . ...", ". . . . . . ", " .. . . . ", ". . . . ", " . . . . . ", " . . . . . ", " ....... ", ".. . . . . . ..", ".. . . . . ..", "........ .. ....", "........ .. ....", " ", " . . . . .", ". . . . . . ", " . . . . .", ". . . . . . . ", " ..... . .. .. .", ". . . . . . . ", " . . . . .", ". . . . . . ", " . . . . .", " ", " ", "........ .. ....", "........ .. ....", ".. . . . . . ..", ".. . . . . ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . ..", " ", ".. . ..", ".. . . ..", " ", ".. . . . . ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . . . ..", ".. . . . . ..", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " .. .. ", " . . . . . .", ". . . . . . ", " . . . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . . .", ". . . . . . ", " . . . . . .", " .. .. ", " .. .. ", " ", " ", " . . . . . ", " . . . ", " . . . .. ", " .. ... . . ", " . . . . ", " . ... . ", " . . . . . ", " . . . . ", " . . . ", " . . . ", " .. . . . ", " .. . ... . ", " . . . . . . ", " . ... . ", " . . . . . ", " . . ", "................", "................", " ", " . . . . . .", ". . . . . . ", " . . . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . . .", ". . . . . . ", " . . . . . .", " ", " ", "................", "................", ".. . . . . . ..", ".. . . . ..", ".. . . . ..", ".. ... . ..", ".. . . . ..", ".. . ... . ..", ".. . . . . . ..", ".. . . . . ..", ".. . . . ..", ".. . . . ..", ".. . . . ..", ".. . ... ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . . . ..", ".. . . ..", ".. . . . . . .", ".. . . . . . ", ".. . . . . . ", "... . . .", "... . . ", "... ... ", ".... . ... ", ".... . . . . .", "..... . . . . ", "...... . . . .", "....... . . . ", "........ . .", ".......... ", "............. ", "................", "................", "................", "................", "............. ", ".......... . .", "........ . ", "....... .", "...... . . ", "..... . . . . .", ".... . . . . . ", "... . . ... . .", "... . ... . . ", "... . . . . .", ".. . . . . ", ".. . . . ", ".. . . . . .", ".. . . . . ..", "................", "................", " ............", " . . .........", ". . . . .......", " . . . . ......", ". . . . . .....", " . . . . . ....", ". ... . ....", " ... ...", ". . . ...", " . . . ...", " . . . . . ..", " . . . . . ..", ". . . . . . ..", ".. . . . . ..", ".. . . . . ..", ". . . . ..", " . . . . ..", " . . . . . ...", ". . . ... . ...", " . . ... . . ...", ". . . . . . ....", " . . . . . ....", ". . . .....", " . ......", ". . .......", " . . ........", " .........", " ............", "................", "................", ".. . . . . . ..", ".. ... ... ..", " . . . . . ", " . . . . . .", ". . . . . . ", " . . . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . . .", ". . . . . . ", " . . . . . .", " ", " ", "................", "................", ".. . . . . . ..", ".. . . . ..", ".. . . . ", ".. ... . . .", ".. . . . . ", ".. . ... . ...", ".. . . . . . . ", ".. . . . . . .", ".. . . . . ", ".. . . . ...", ".. . . . . ", ".. . ... . .", ".. . . . . . ", ".. . ... . ", ".. . . . . . ..", ".. . . ..", "................", "................", " ", " . . . . . .", ". . . . . . ", " . . . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . . .", ". . . . . . ", " . . . . . .", " . . . . . ", " ... ... ", ".. . . . . . ..", ".. . . . . ..", ".. . . . . . ..", ".. . . . ..", " . . . ..", " . . ... . ..", ". . . . . ..", " ... . ... . ..", ". . . . . . . ..", " . . . . . . ..", ". . . . . ..", " ... . . . ..", ". . . . . ..", " . . . ... ..", " . . . . . ..", " . ... . ..", ".. . . . . . ..", ".. . . ..", ".. . . . ..", ".. ..... ..", " . . ", " . . . . . .", ". . . . . . ", " ... . . . . .", ". . . . . . . ", " ... . . . ...", ". . . . . . . ", " . . . ...", " . . . . ", " . . . .", " . . . . ", " ..... . ", ".. . . . . . ..", ".. . . . . ..", "........ .. ....", "........ .. ....", " ", " . . . . . .", ". . . . . ", " . . . . . .", ". . . . . . . ", " ..... . .. .. .", ". . . . . . . ", " . . . . .", ". . . . . ", " . . . . .", " ", " ", "........ .. ....", "........ .. ....", ".. . . . . . ..", ".. . . . ..", ".. . . . ..", ".. ... . ..", ".. . . . ..", " ", ".. . . . . . ..", ".. . . . . ..", " ", ".. . . . ..", ".. . . . ..", ".. . ... ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . . . ..", ".. . . ..", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " .. .. ", " . . . . . . ", " . . . . . . ", " . . . . . . ", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . . . ", " . . . . . . ", " . . . . . . ", " .. .. ", " .. .. ", " ", " ", " . . . ", " . . . . ", " .. . . . .. ", " .. . ... . . ", " . . . . . . ", " . ... . ", " . . . . . ", " . . . . ", " . . . . . ", " . . . . ", " .. . . . .. ", " .. . ... . . ", " . . . . ", " ... ", " . ", " . . ", "................", "................", " ", " . . . . . . ", " . . . . . . ", " . . . . . . ", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . . . ", " . . . . . . ", " . . . . . . ", " ", " ", "................", "................", ".. . . . ..", ".. . . . . ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . . . ..", ".. . . . . ..", ".. . . . . . ..", ".. . . . . ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . ..", ".. ... ..", ".. . ..", ".. . . ..", ".. . . . .", ".. . . . . . ", ".. . . . . . . ", "... . . . . ", "... . . . . ", "... . . ... ", ".... . . ... . ", ".... . . . . .", "..... . . . . ", "...... . . . ", "....... . . ", "........ . ", ".......... ", "............. ", "................", "................", "................", "................", "............. ", ".......... ", "........ . . ", "....... . . ", "...... . . . . ", "..... . . . . .", ".... . . . . . ", "... . . ... . ", "... . ... . ", "... . . . . . ", ".. . . . . ", ".. . . . ", ".. . .", ".. . . ..", "................", "................", " ............", " . . .........", " . . . .......", " . . . . ......", ". . . . . .....", " . . . . . ....", ". . ... . . ....", " . ... . . ...", " . . . . ...", " . . . . . ...", " . . . . ..", " . . . ..", ". . ..", ".. . ..", ".. . . . ..", ". . . . . . ..", " . . . . . . ..", " . . . . . . ...", " . . ... . ...", " . . ... . . ...", ". . . . . . ....", " . . . . . ....", ". . . . . .....", " . . . ......", " . . . .......", " . ........", " .........", " ............", "................", "................", ".. . . . . . ..", ".. ... ... ..", " . . . . . ", " . . . . . . ", " . . . . . . ", " . . . . . . ", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . . . ", " . . . . . . ", " . . . . . . ", " ", " ", "................", "................", ".. . . . ..", ".. . . . . ..", ".. . . . . . ", ".. . ... . . .", ".. . . . . . . ", ".. . ... . ...", ".. . . . . . . ", ".. . . . . . .", ".. . . . . . . ", ".. . . . . ...", ".. . . . . . . ", ".. . ... . . .", ".. . . . ", ".. ... ", ".. . ..", ".. . . ..", "................", "................", " ", " . . . . . . ", " . . . . . . ", " . . . . . . ", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . . . ", " . . . . . . ", " . . . . . . ", " . . . . . ", " ... ... ", ".. . . . . . ..", ".. . . . . ..", ".. . . . ..", ".. . . . . ..", " . . . . . ..", " . . . ... . ..", ". . . . . . . ..", " ... . ... . ..", ". . . . . . . ..", " . . . . . . ..", ". . . . . . . ..", " ... . . . . ..", ". . . . . . . ..", " . . . ... . ..", " . . . ..", " ... ..", ".. . ..", ".. . . ..", ".. . . . ..", ".. . ..... ..", " . . . . . ", " . . . . . . ", " . . . . . . ", " ... . . . . ", ". . . . . . . ", " ... . . . ...", ". . . . . . . ", " . . . . . . ", " . . . . . . ", " . . . . . . ", " . . . ", " ... ", ".. . ..", ".. . . ..", "........ .. ....", "........ .. ....", " ", " . . . . . ", " . . . . . ", " . . . . . ", ". . . . . . . ", " ..... . .. .. .", ". . . . . . . ", " . . . . . ", " . . . . . ", " . . . . . ", " ", " ", "........ .. ....", "........ .. ....", ".. . . . ..", ".. . . . . ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . . . ..", " ", ".. . . . . . ..", ".. . . . . ..", " ", ".. . . . . ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . ..", ".. ... ..", ".. . ..", ".. . . ..", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " .. .. ", " . . . .", ". . . . ", " . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . .", ". . . . ", " . . . .", " .. .. ", " .. .. ", " ", " ", " . . . ", " . . ", " . . . ", " .. ... . ", " . . . . ", " . ... . ", " . . . . . ", " . . . . ", " . . . ", " . . ", " . . . ", " .. ... . ", " . . . . ", " . ... . ", " . . . . . ", " . . . . ", "................", "................", " ", " . . . .", ". . . . ", " . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . .", ". . . . ", " . . . .", " ", " ", "................", "................", ".. . . . ..", ".. . . ..", ".. . ..", ".. ... ..", ".. . . . ..", ".. . ... . ..", ".. . . . . . ..", ".. . . . . ..", ".. . . . ..", ".. . . ..", ".. . ..", ".. ... ..", ".. . . . ..", ".. . ... . ..", ".. . . . . . ..", ".. . . . . ..", ".. . . . . .", ".. . . ", ".. . . ", "... . . . .", "... . . . . ", "... . . ... . .", ".... . ... . ", ".... . . .", "..... . . ", "...... . ", "....... . ", "........ ", ".......... ", "............. ", "................", "................", "................", "................", "............. ", ".......... . .", "........ . . . ", "....... . . .", "...... . . ", "..... . . .", ".... . . . . ", "... . . ... . .", "... . ... . ", "... . . . ", ".. . . ", ".. . . . ", ".. . . . .", ".. . . . . ..", "................", "................", " ............", " .........", ". . .......", " . . ......", ". . . . .....", " . . . ....", ". . ... ....", " . ... . ...", ". . . . ...", " . . . . ...", " . . . . . ..", " . . . . . ..", ". . . . . . ..", ".. . . . . ..", ".. . . . ..", ". . . . ..", " . . ..", " . . . ...", ". . ... . ...", " . . ... . . ...", ". . . . . . ....", " . . . . ....", ". . . .....", " . . ......", ". . . .......", " . . ........", " .........", " ............", "................", "................", ".. . . . . . ..", ".. ... ... ..", " . . . . . ", " . . . .", ". . . . ", " . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . .", ". . . . ", " . . . .", " ", " ", "................", "................", ".. . . . ..", ".. . . ..", ".. . ", ".. ... . .", ".. . . . . ", ".. . ... . ...", ".. . . . . . . ", ".. . . . . . .", ".. . . . . ", ".. . . ...", ".. . . ", ".. ... . .", ".. . . . ", ".. . ... . ", ".. . . . . . ..", ".. . . . . ..", "................", "................", " ", " . . . .", ". . . . ", " . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . .", ". . . . ", " . . . .", " . . . . . ", " ... ... ", ".. . . . . . ..", ".. . . . . ..", ".. . . . ..", ".. . . ..", " . ..", " . ... ..", ". . . . . ..", " ... . ... . ..", ". . . . . . . ..", " . . . . . . ..", ". . . . . ..", " ... . . ..", ". . . ..", " . . ... ..", " . . . ..", " . ... . ..", ".. . . . . . ..", ".. . . . . ..", ".. . . . . . ..", ".. ....... ..", " . . . . . ", " . . . .", ". . . . ", " . . ...", ". . . . . . . ", " ... . . . ...", ". . . . . . . ", " . . . .", ". . . . ", " . . . .", " . . . . . ", " ....... ", ".. . . . . . ..", ".. . . . . ..", "........ .. ....", "........ .. ....", " ", " . . . .", ". . . ", " . . . .", ". . . . . . . ", " ..... . .. .. .", ". . . . . . . ", " . . . .", ". . . ", " . . . .", " ", " ", "........ .. ....", "........ .. ....", ".. . . . ..", ".. . . ..", ".. . ..", ".. ... ..", ".. . . . ..", " ", ".. . . . . . ..", ".. . . . . ..", " ", ".. . . ..", ".. . ..", ".. ... ..", ".. . . . ..", ".. . ... . ..", ".. . . . . . ..", ".. . . . . ..", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " .. .. ", " . . . .", ". . . . ", " . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . .", " . . . . ", " . . . .", " .. .. ", " .. .. ", " ", " ", " . . . ", " . . . ", " . . . ", " .. . ... . ", " . . . . ", " . ... ", " . . . . . ", " . . . ", " . . . ", " . . . ", " . . . ", " .. . ... . ", " . . . . ", " . ... ", " . . . . . ", " . . . ", "................", "................", " ", " . . . .", ". . . . ", " . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . .", " . . . . ", " . . . .", " ", " ", "................", "................", ".. . . . ..", ".. . . . ..", ".. . ..", ".. . ... ..", ".. . . . ..", ".. . ... ..", ".. . . . . . ..", ".. . . . ..", ".. . . . ..", ".. . . . ..", ".. . ..", ".. . ... ..", ".. . . . ..", ".. . ... ..", ".. . . . . . ..", ".. . . . ..", ".. . . . .", ".. . . . ", ".. . . ", "... . . . . ", "... . . . ", "... ... . .", ".... ... . ", ".... . . .", "..... . . ", "...... . .", "....... . . ", "........ . .", ".......... ", "............. ", "................", "................", "................", "................", "............. ", ".......... . .", "........ . ", "....... . .", "...... . . . ", "..... . . . . .", ".... . . . . ", "... ... . .", "... ... . . ", "... . . . .", ".. . . . . ", ".. . . . ", ".. . . . . .", ".. . . . ..", "................", "................", " ............", " . .........", ". . .......", " . . ......", ". . . . . .....", " . . . . ....", ". . ... ....", " ... ...", " . . . ...", " . . . . ...", " . . . . . . ..", " . . . . . ..", ". . . . . . ..", ".. . . . ..", ".. . . . ..", ". . . ..", " . . . ..", " . . . . . ...", ". . . ... ...", " . . ... . ...", ". . . . . . ....", " . . . . . ....", ". . . . .....", " . . ......", ". .......", " . ........", " .........", " ............", "................", "................", ".. . . . . . ..", ".. ... ... ..", " . . . . . ", " . . . .", ". . . . ", " . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . .", " . . . . ", " . . . .", " ", " ", "................", "................", ".. . . . ..", ".. . . . ..", ".. . ", ".. . ... . .", ".. . . . . ", ".. . ... ...", ".. . . . . . . ", ".. . . . . .", ".. . . . . ", ".. . . . ...", ".. . . ", ".. . ... . .", ".. . . . ", ".. . ... ", ".. . . . . . ..", ".. . . . ..", "................", "................", " ", " . . . .", ". . . . ", " . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . .", " . . . . ", " . . . .", " . . . . . ", " ... ... ", ".. . . . . . ..", ".. . . . . ..", ".. . . . ..", ".. . . . ..", " . ..", " . . . ... ..", ". . . . . ..", " ... . ... ..", ". . . . . . . ..", " . . . . . ..", ". . . . . ..", " ... . . . ..", ". . . ..", " . . . ... ..", " . . . ..", " . ... ..", ".. . . . . . ..", ".. . . . ..", ".. . . . . . ..", ".. ....... ..", " . . . . . ", " . . . . ", " . . . . ", " ... . . ", ". . . . . . . ", " ... . . . ...", ". . . . . . . ", " . . . . ", " . . . . ", " . . . . ", " . . . . . ", " ....... ", ".. . . . . . ..", ".. . . . . ..", "........ .. ....", "........ .. ....", " ", " . . . .", ". . . ", " . . . .", ". . . . . . . ", " ..... . .. .. .", ". . . . . . . ", " . . . .", " . . . . ", " . . . .", " ", " ", "........ .. ....", "........ .. ....", ".. . . . ..", ".. . . . ..", ".. . ..", ".. . ... ..", ".. . . . ..", " ", ".. . . . . . ..", ".. . . . ..", " ", ".. . . . ..", ".. . ..", ".. . ... ..", ".. . . . ..", ".. . ... ..", ".. . . . . . ..", ".. . . . ..", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " .. .. ", " . . . . ", " . . . . ", " . . . . ", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . ", " . . . . ", " . . . . ", " .. .. ", " .. .. ", " ", " ", " . . . ", " . . . . ", " .. . . . .. ", " .. . ... . . ", " . . . . ", " ... ", " . ", " . . ", " . . . ", " . . . . ", " .. . . . .. ", " .. . ... . . ", " . . . . ", " ... ", " . ", " . . ", "................", "................", " ", " . . . . ", " . . . . ", " . . . . ", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . ", " . . . . ", " . . . . ", " ", " ", "................", "................", ".. . . . ..", ".. . . . . ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . ..", ".. ... ..", ".. . ..", ".. . . ..", ".. . . . ..", ".. . . . . ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . ..", ".. ... ..", ".. . ..", ".. . . ..", ".. . . . .", ".. . . . . . ", ".. . . . . ", "... . . ", "... . . ", "... . ... . ", ".... . . .. . ", ".... . . .", "..... . ", "...... . ", "....... . . ", "........ . ", ".......... ", "............. ", "................", "................", "................", "................", "............. ", ".......... ", "........ . ", "....... . . ", "...... . . . ", "..... . . .", ".... . . . ", "... . ... . ", "... . . ... . ", "... . . . . . ", ".. . . . . . ", ".. . . ", ".. . .", ".. . . ..", "................", "................", " ............", " . . .........", " . . .......", " . . ......", ". . . .....", " . . . . ....", ". . ... . . ....", " . ... . ...", " . . . . ...", " . . . . ...", " . . . . ..", " . . . ..", ". . . . ..", ".. . . . ..", ".. . . . ..", ". . . . . . ..", " . . . . . . ..", " . . . . . . ...", " . . ... ...", " . . ... ...", ". . . . ....", " . . . . ....", ". . . . . .....", " . . . ......", " . . . .......", " . ........", " .........", " ............", "................", "................", ".. . . . . . ..", ".. ... ... ..", " . . . . . ", " . . . . ", " . . . . ", " . . . . ", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . ", " . . . . ", " . . . . ", " ", " ", "................", "................", ".. . . . ..", ".. . . . . ..", ".. . . . . . ", ".. . ... . . .", ".. . . . . ", ".. ... ...", ".. . . ", ".. . . . .", ".. . . . . ", ".. . . . . ...", ".. . . . . . . ", ".. . ... . . .", ".. . . . ", ".. ... ", ".. . ..", ".. . . ..", "................", "................", " ", " . . . . ", " . . . . ", " . . . . ", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . ", " . . . . ", " . . . . ", " . . . . . ", " ... ... ", ".. . . . . . ..", ".. . . . . ..", ".. . . . ..", ".. . . . . ..", " . . . . . ..", " . . . ... . ..", ". . . . . ..", " ... ... ..", ". . . ..", " . . . . ..", ". . . . . ..", " ... . . . . ..", ". . . . . . . ..", " . . . ... . ..", " . . . ..", " ... ..", ".. . ..", ".. . . ..", ".. . . . ..", ".. . ..... ..", " . . . . . ", " . . . . . . . .", ". . . . . . ", " ... . . ...", ". . . ", " ... . ...", ". . . . . ", " ... . . . . ...", ". . . . . . . . ", " . . . . . . . .", " . . . ", " ... ", ".. . ..", ".. . . ..", "........ .. ....", "........ .. ....", " ", " . . . ", " . . . . ", " . . . ", ". . . . . . . ", " ..... . .. .. .", ". . . . . . . ", " . . . ", " . . . . ", " . . . ", " ", " ", "........ .. ....", "........ .. ....", ".. . . . ..", ".. . . . . ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . ..", " ", ".. . ..", ".. . . ..", " ", ".. . . . . ..", ".. . . . . . ..", ".. . ... . ..", ".. . . . ..", ".. ... ..", ".. . ..", ".. . . ..", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " .. .. ", " . . . . ", " . . . . ", " . . . . ", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . ", ". . . . ", " . . . . ", " .. .. ", " .. .. ", " ", " ", " . . . ", " . . . ", " .. . . . .. ", " .. ... . . ", " . . . . ", " ... . ", " . ", " . . . ", " . . . ", " . . . ", " .. . . . .. ", " .. ... . . ", " . . . . ", " ... . ", " . ", " . . . ", "................", "................", " ", " . . . . ", " . . . . ", " . . . . ", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . ", ". . . . ", " . . . . ", " ", " ", "................", "................", ".. . . . ..", ".. . . . ..", ".. . . . . . ..", ".. ... . ..", ".. . . . ..", ".. ... . ..", ".. . ..", ".. . . . ..", ".. . . . ..", ".. . . . ..", ".. . . . . . ..", ".. ... . ..", ".. . . . ..", ".. ... . ..", ".. . ..", ".. . . . ..", ".. . . . .", ".. . . . ", ".. . . . . ", "... . . . ", "... . . . . ", "... . . ... . ", ".... . ... . ", ".... . . .", "..... . . ", "...... . ", "....... . ", "........ ", ".......... ", "............. ", "................", "................", "................", "................", "............. ", ".......... ", "........ . . ", "....... . . ", "...... . . ", "..... . . .", ".... . . . . ", "... . . ... . .", "... . . ... . ", "... . . . ", ".. . . ", ".. . . . ", ".. . .", ".. . . . ..", "................", "................", " ............", " . .........", " . . .......", " . . ......", ". . . .....", " . . . ....", ". . ... . ....", " . . ... . . ...", ". . . . . ...", " . . . . ...", " . . . . ..", " . . . . ..", ". . . . ..", ".. . . . ..", ".. . . . ..", ". . . . . ..", " . . . . . . ..", " . . . . . ...", " . ... . ...", " . ... . . ...", ". . . . . ....", " . . . ....", ". . . .....", " . . . ......", ". . . . .......", " . . . ........", " .........", " ............", "................", "................", ".. . . . . . ..", ".. ... ... ..", " . . . . . ", " . . . . ", " . . . . ", " . . . . ", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . ", ". . . . ", " . . . . ", " ", " ", "................", "................", ".. . . . ..", ".. . . . ..", ".. . . . . . ", ".. ... . . .", ".. . . . . ", ".. ... . ...", ".. . . ", ".. . . . . .", ".. . . . . ", ".. . . . ...", ".. . . . . . . ", ".. ... . . .", ".. . . . ", ".. ... . ", ".. . ..", ".. . . . ..", "................", "................", " ", " . . . . ", " . . . . ", " . . . . ", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . ", ". . . . ", " . . . . ", " . . . . . ", " ... ... ", ".. . . . . . ..", ".. . . . . ..", ".. . . . ..", ".. . . . ..", " . . . . . ..", " . . ... . ..", ". . . . . ..", " ... ... . ..", ". . . ..", " . . . . . ..", ". . . . . ..", " ... . . . ..", ". . . . . . . ..", " . . ... . ..", " . . . ..", " ... . ..", ".. . ..", ".. . . . ..", ".. . . . ..", ".. ... ..", " . ", " . . . . . .", ". . . . . . ", " ... . . . . ...", ". . . . . . . ", " ... . . . ...", ". . . . . ", " ... . . ...", ". . . . ", " . . . . . .", " . . . ", " . ..... ", ".. . . . . . ..", ".. . . . . ..", "........ .. ....", "........ .. ....", " ", " . . . ", " . . . . ", " . . . ", ". . . . . . . ", " ..... . .. .. .", ". . . . . . . ", " . . . ", ". . . ", " . . . ", " ", " ", "........ .. ....", "........ .. ....", ".. . . . ..", ".. . . . ..", ".. . . . . . ..", ".. ... . ..", ".. . . . ..", " ", ".. . ..", ".. . . . ..", " ", ".. . . . ..", ".. . . . . . ..", ".. ... . ..", ".. . . . ..", ".. ... . ..", ".. . ..", ".. . . . ..", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " . . ", " ", " . . ", " ", " . . ", " ", " . . ", " ", " . . ", " ", " . . ", " ", " . . ", " ", " . . ", " ", " ", " ", " ", " ", ". . . . . . . . ", " ", " ", ". . . . . . . . ", " ", " ", " ", " ", " ", " ", " ", "................", "................", "................", "................", "................", " ", "........ .......", "........ ......", " ", "...... .........", "..... ..........", "................", "................", "................", "................", "................", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ . ....", "........ ....", "........ .. ....", "....... .. ....", "...... . .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ", "........ . ....", "........ .....", "........ ", "....... ........", "...... .........", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "......... ", "........ ......", "........ .....", "........ ", "........ .. ....", "....... .. ....", "...... . .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "................", "................", "................", "................", "................", " .....", ".......... ....", "......... ....", " . ....", "....... .. ....", "...... . .. ....", "..... .. .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", " .. ....", "........ . ....", "........ ....", " .....", "...... .........", "..... ..........", "................", "................", "................", "................", "................", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", " ", "........ .. ....", "........ . ....", " ", "...... .........", "..... ..........", "................", "................", "................", "................", "................", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ . ....", "........ ", "........ .. ....", "....... . ....", "...... . . ", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "................", "................", "................", "................", "................", " ", "......... ......", "......... .....", " ", "....... .. ....", "...... . .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", " ....", "........ . ....", "........ . ....", " ....", "....... .. ....", "...... . .. ....", "..... .. .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", " ", "........ . ....", "........ . ....", " ", "....... .. ....", "...... . .. ....", "..... .. .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", "........ .. ....", ". .. . . .", ". .. . . .", " ", ". .. . . .", ". .. . . .", ". .. . . .", ". .. . . .", " ", ". .. . . .", ". .. . . .", "........ .. ....", "........ .. ....", "........ .. ....", "..... .... .....", "... ...", "... ...", "..... .... .....", "..... .... .....", " ", "... ...", "..... .... .....", " ", "... ...", "... ...", "..... .... .....", "..... .... .....", "... ...", "... ...", "..... .... .....", ". ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", ". ", " ", " ", " ", " .... .... ", " ", " ", " ", " ", " ", " ", " .... .... ", " ", " ", " ", " ", " ", " ", " . . ", " . . ", " . . ", " . . ", " ", " ", " ", " ", " . . ", " . . ", " . . ", " . . ", " ", " ", " ", "................", "................", "................", ". .. .. .. .", ". .. .. .. .", " ", ". .. .. .. .", ". .. .. .. .", ". .. .. .. .", ". .. .. .. .", " ", ". .. .. .. .", ". .. .. .. .", "................", "................", "................", "..... .... .....", "... ...", "... ...", "..... .... .....", "..... .... .....", "... ...", "... ...", "..... .... .....", "..... .... .....", "... ...", "... ...", "..... .... .....", "..... .... .....", "... ...", "... ...", "..... .... .....", "..... .... ....", "..... .... ...", "...... .. ....", "...... . . .", "..... ... .", "...... ..... ", "........ ... ..", "......... .. ..", ".......... ...", ".......... ..", ".......... .. ", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", ".......... ... ", "......... ..", ".......... ...", "......... . ...", "........ ... ..", "....... .... ", "..... ..... .", "..... ... ", "...... .. .", "..... ... ...", "..... .... ...", "................", "................", "................", "................", "................", " ... ..........", ".. .........", ".... ..........", "... .........", ".. .. ........", " .... .......", ". ..... .....", ". ... .....", ".... ......", "... ... .....", "... .... .....", "... . .... .....", ".. ..... .....", "... ... .....", " . . ......", ". .... ......", " ..... .....", ".. ... . ......", ".. .. .........", "... ..........", "... ..........", " . ..........", "................", "................", "................", "................", "................", "..... .... .....", ".... ... ....", ".... . .. . ....", "... .. .. .. ...", ". ... .. ... .", " ", "....... .......", "...... ......", ".... .... ....", ". ........ .", " ", "................", "...... .......", "........ .......", "........ ......", "........ .......", "..... ... ....", "..... ... ....", "..... ... . ...", "..... . .. .. ..", "..... . .. ... ", ". .. .. . .... ", ".. .. ... .. ", ".. .. .... ...", ".. .. .... ...", ". . ... .. ", "..... .. . .... ", "..... . .. ... ", "..... . .. .. ..", "..... ... . ...", "..... ... ....", "..... ... ....", "........ .......", "........ ......", "........ .......", "...... .......", "................", " ", ". ........ .", ".... .... ....", "...... ......", "....... .......", " ", ". ... .. ... .", "... .. .. .. ...", ".... . .. . ....", ".... ... ....", "..... .... .....", ".... ... .....", ".... ... .....", "... . ... .....", ".. .. .. . .....", " ... .. . .....", " .... . .. .. .", " .. ... .. ..", "... .... .. ..", "... .... .. ..", " .. ... . .", " .... . .. .....", " ... .. . .....", ".. .. .. . .....", "... . ... .....", ".... ... .....", ".... ... .....", "................", "... ...", "... ...", ". .. .... .. .", ". .. .... .. .", " ", ". .. .... .. .", ". .. .... .. .", ". .. .... .. .", ". .. .... .. .", " ", ". .. .... .. .", ". .. .... .. .", "... ...", "... ...", "..... .... .....", ".. . . . . . ..", ".. . . . . ..", ".. . . . . . ..", ".. ......... ..", ".. . . . . . ..", " ", ".. . . . . . ..", ".. . . . . ..", ".. . . . . . ..", ".. . . . . ..", " ", ".. . . . . ..", ".. ......... ..", ".. . . . . ..", ".. . . . . . ..", ".. . . . . ..", "..... .... .....", "..... .... .....", " ", " ... . . ... .", ". . . . . . . ", " ... . . ... .", ". . . . . . . ", " ... . . ... .", ". . . . . . . ", " ... . . ... .", ". . . . . . . ", " ... . . ... .", " ", " ", "..... .... .....", "..... .... .....", ". ", " ...............", " ...............", " ...............", " .... ....", " ... ...", " .. . . ..", " . ... ... .", " .. .. ... .. ..", " .. ......... ..", " .. . . . . . ..", " .. .... .... ..", " .. . .. .... ..", " .. ..", " ...............", " ...............", " ", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", " ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", "................", "................", ".. .......", "... ... ......", "... .... .....", "... .... .....", "... .... .....", "... ... ......", "... .......", "... .. .......", "... ... ......", "... .... .....", ".. .. ....", "................", "................", "................", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", " ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", " ", "................", "......... ......", ".... ...........", "........... ....", ".. . ....", ". ... .. ......", ". . .... ......", ". . ......", ". .. ......", "..... .. ......", "..... ......", " .... .......", ".......... ....", "......... ....", "... ............", "................", "...... .........", ".............. .", ".. ........ ....", "...... ........", ".... . .......", ".... .. .. ...", "... .. ......", ". . .. ......", "... . ......", "... . .. ...", "... . . .......", "... .... ...", "................", " ...... .. .....", ".. .. ........ .", "................", "................", "................", "..... ... ......", "............. ..", ".. .. .......", ".... .. ..", "... . . . ..", "... ...... . ", " .. ..", "... .. .. . ...", "... ....", ".............. .", ".. ..... .. ....", "..... ..........", "................", "................", ".. .. .. .. .. .", " ...............", "..... ........ ", "... . .......", " . .. . .......", ".. .. . .. .. ", ".. .. . .. ....", " . . . .. ....", ".. .. . ...... ", ".. .. . .. ....", " . . . .......", ".. .. .. ... ", ".. . . ........", " . .........", "............... ", ". .. .. .. .. ..", ". .... .... ... ", "................", "... ...", " . ...... ...", ".. . . .. ", ".. . .... ...", ".. . . ...", " . . . ........", ".. ... ........", ".. ... ....", ".. ... . .. ", " ............ ..", "... . .... . ...", "................", " .............. ", "... ... .... ...", ". . . . . . . . ", " ...............", "..... .. ", " .. . ..", "... .. ..... . ", " . .. . ..", ".. . . ... .. ", " . .. . ....", ".. .. . ...... ", " . .. . ... ...", ".. . . ...... ", " . .. . . ...", ".. . . ....... ", " . ... . ...", "............... ", " . . . . . . . .", " . . . . . . . .", "............... ", " ....... ..", "....... .. . . ", " ..... . .. . ..", "...... . . . ", " ..... . .. . ..", "...... .. . . ", " .... .. . ..", ".... . . . ", " .. ....... ..", "... . . ", " .. .. .. . ...", "... ... ", " ...............", ". . . . . . . . ", ". .. .. .. .. ..", "............... ", " .... ...", ".... . ... ...", "... ... . .. .. ", " . ... . ...", ".. ... . ....", ".. . . . ..... ", " . ... . ......", ".. .. . ......", ".. . ..... ", " . ..... .. ...", ".. . . . .. . ..", ".. .... .. ", " ...............", ".. .. .. .. .. .", "................", "................", "........ ...", ".. ..... .. ...", "........ .. ...", "... .. ...", ".. . ...", ". ... ... ...", ". ....... ...", ". .. .. ", ". .... .. ...", ". ... ...", "...... ...", "...... ... ....", "...... .....", "................", "................", ".... .", "... ....... .", ".. . . . .", ". . . ... . ", ". .. ... .. ", ". . ....... ", ". .. . ", ". . ....... . .", ". .. . . . .", ". .. .", ".... .... . .", "......... .. ..", "......... ...", "............... ", "................", "................", ". ..............", ".... ", "... . . . . ", ".. . . ", ". . . ...... ", ". .. ........ ", ". . ......... ", ". .. .", ". . .. .. .. . .", ". . .. .. . ..", ". ...", "...... .. ......", "............... ", "................", "................", " .......... .. ", "... . ..", ".. . . . . . ", " . .... .. . ", ". . ... . ", ". ... . ... . ", " .. ... . ", "..... . .. . ", "..... . .. ", " .... .. .. .. ", "..... . . .. . ", "..... ...... ..", "..... ...", "............... ", "................", "................", " ", " . ... ... ... ", " ... ... ...... ", " . ... ... ... ", " ... . . ", " . .. ...... ", " ... ...... . ", " . ...... ", " .. ..... . ", " . ...... ", " .. . ...... . ", " . ...... ", " .. ..... . ", " .. ...... ", " .. . ...... . ", " . ...... ", " ", "... .. . ... . .", "... ... ... ...", "... .. . ... ...", "... ... ... ...", ".... .... . ", "............ . ", ". .......... . ", "...... . ... . ", ". ....... .. . ", ".. ..... .. . ", "... ... . . ", ". ..... .. . ", ".. ..... ... . ", "... ... .... . ", ". ....... .. . ", " ", ".. ... ... ... ", " ... ... ... .. ", ". .. ", " .. ... .. .. ", " ......... .. ", ". .. ..... .. ", " ......... .. ", ". .......... .. ", " ......... .. ", ". ..... .. .. ", " ......... .. ", ". ......... .. ", " ......... .. ", ". ......... .. ", " . ... .. ", " .. ..... .", " . ...... ..", " .. . ...... ..", " . ...... .", " .. ..... . ", " . ...... ", " .. . ...... . ", " .. ...... ", " .. ..... . ", " . ...... ", " .. . ...... . ", " . ...... ", " .. ..... ..", " . ...... .", " .. . ...... ..", " . ...... .", ".. ..... . . . ", "... .. .... . ", ". ....... .. . ", ".. ..... ... . ", ". ... .... . ", ". ..... .. . ", ".. ..... ... . ", "... ... .... . ", "............ . ", "........ . . ", ". .... . . ", ". ........ . ", " . ", ".. ... ... ... .", " ... ... ... ...", ".. ... ... ... .", ". . .. .. .. ", " . .. .. .. ", ". . ... .. ", " . .... .. ", ". . . ... .. ", " . .. .. .. ", ". ......... .. ", " ......... .. ", ". ......... .. ", " .. ", " ... ... . . .. ", ".. ... .. ... ", " ... .. ", ".. ... ... ... ", " ... ... ... .. ", ".. ... ... ... ", " .. ..... ", " . .........", " .. . .........", " .. .........", " .. ..... ...", " . .........", " .. . .........", " . .........", " .. .........", " . ", " .. . . . . . .", " . . ... ", " .. ", " . ... ... ... .", " ... ... ... ...", " ", " ..", "........... .. .", "........... ...", "........... .. .", " ... ... .. ...", "........... .. .", "........... ...", "........... .. .", "........... ...", " .. .", " . . . . . . ...", " . .. .. ... .", " ...... ", ".. ... ... ... .", " ... ... ... ...", " ", " ... ... .. .. ", ".. ....... ... ", " ....... ... .. ", ". ........ ... ", " ... ... ...... ", "...... .... . ", ".... ...... .. ", ".. ....... ... ", " ... .... .. .. ", "...... ... ... ", " ........... .. ", ".. ... ... ... ", " ... ... ...... ", ".. ... ... ... ", " ... ... ... .. ", " ", " ", " . ... ... ... .", " ... .. ", " ..... ", " ... ... ... ", " . . ..... ..", " .. . ..... . ", " . ........", " .. . ....... ", " . ... ....", " .. . ....... ", " . . .....", " .. . . .... ", " . . ... .", " .. ....... ", " .. ........", " ", ".. ... ... ... .", " .. ... ... ..", " ", " ", " .... .........", " . ............", " .......... ...", " ... ... ... ", " ........ ..", " ..... .... ..", " ....... .....", " ..............", " ", " . . . . . . . ", " . . . . . . .", " ", ".. ... ... ... ", " ... .. ... .. ", " ... ", " . .. ", "......... ... ", "......... . .. ", ".. . .... ... ", "...... .. . .. ", ".... .... ... ", ".... ... . .. ", "... ..... ... ", "... . .. . .. ", " ... ", ". . . . . .. .. ", " . . . . . ... ", " .. . ....... ", " . ........", " .. . ....... ", " . ........", " .. . ....... ", " . ... ...", " .. ... .. ", " . ........", " .. . ....... ", " . ........", " .. . ....... ", " .. ........", " .. . ....... ", " . ..... ..", " .. . ... ... ", " . ", " . ", " ... . . ... .", " .. ... ... ...", " . . .........", " .. . . . .", " . ... .. ", " .. .. . .. ", " ... ... .", " .. ... . ..", " .. ... . .", " .. ... . .. ", " ... .........", " .. . ... .. ", " ... ... ... ", " .. ... ... .. ", " ", " ... .. ", ".. ... ... . . ", " ... ... ... .. ", ".. ... ... ... ", ".... ... ... .. ", ".. ... .. ... ", ".... ... ... .. ", ".. ... ... ... ", ".... ... . . .. ", "......... ... ", ".... ....... .. ", ".. . . . . ... ", " ... .. ", " ...... ..... ", " ... ... .. ", " . . . ... ", " .. . ", " . . .......", " .. .......", " . . . .......", " .. ..... .", " . . . .......", " .. .......", " .. . . ", " .. . . . .", " . . . . . ", " .. . . . . .", " . . . . . ", " .. ", " . ... ... ... .", " ... ... ... ...", " ", " ", ".............. ", ".............. ", ".............. ", ".... ........ ", ".............. ", ".............. ", " ", " . . . . . . . .", " . . . . .", " . . . . . . ...", ". . . . . .. .", " . ...", ".. ... ... ... .", " ... ... ... ...", " ", ".... ... ... .. ", "..... ..... ", "..... ... . ", ". ...... ..... ", "... . .. .. .. ", "......... .. ", "... .... .. .. ", "... .... ... ", " . ... .. ", ".. ...... .. ", " ... ...... .. ", ".. .. ...... . ", " ... . ..... .. ", ".. ... .... . ", " ... . ..... .. ", " ", " ", " ..... ... ... .", " ... ... ", " ..... ", " ... . .......", " . .. .......", " ... . . . .....", " . .... ", " .. . ..... .", " . .... .", " .. . . . . . ", " . .......", " .. . .......", " . .......", " .. . . ", " . ........", " ", ".. ... ... ... .", " . ... ... ...", " ... ... ... .", ". ", ". .............", ". .............", ". ...... ......", ". ...... .... .", ". ..... . .....", ". .............", ". ", ". . . . . . . .", ". . . . . . . ", " ", ". ... ... ... ", " ", ".. ... ... ... ", ".... ... ... .. ", ". .. ", " .. ... .. .. ", " ......... .. ", " ......... .. ", " ......... .. ", " ........ ... ", " ......... .. ", " ......... .. ", " ......... .. ", " .. ...... .. ", ". ........ .. ", " . ....... .. ", ". ......... .. ", " .. . ", " . .........", " .. . .........", " . .........", " .. . ..... ...", " . .........", " .. . .........", " . ... .....", " .. . . ... ...", " . .........", " .. .........", " . .........", " .. . . ", " . ", " .. . . .......", " . .......", " ... ... ... . ", " ............. ", " ... ... . ", " . . .. .... ", " ... .. .. . .", " . . ..... ", " ... .... . .", " . . . ..... ", " ... .. .. . ", " . ........... ", " ... ... ... ", " . ... ... . ", " ", " ", "................", "................", " ... ..... .. ", ". ......... .. ", " ... .... .. ", " .. . .... .. ", " ..... ... .. ", " ......... .. ", " ......... .. ", " . ", " .. ", " .......... . ", " .......... .. ", " ..... . . ", " ..... ... .. ", " .... .... . ", " ......... .. ", " ......... .. ", " .. . . .......", " .. .......", " .. . ... ...", " . ...... ", " .. . . ... ...", " .......", " . .......", " . ", " .. . . . . .", " . . . . ", " .. . . . . .", " . . . . . ", " .. ", " . ... ... ... .", " ......... . ...", " ", "......... ......", ".......... .....", "............ ...", "........ .....", "........ . .....", "........ .....", "................", " ", " . . . . . . . .", " . . . . . ", " . . . . . . . .", "... . . . . ", " ", ".. ....... ... .", " ... ... ... ...", " ", " ......... .. ", " ......... . ", " ......... .. ", " ..... ... . ", " ..... ... .. ", " .... .... . ", " ......... .. ", " ......... . ", " .. ", ". . . . .. ", " . . . . . .. ", " . . . ... ", " ...... ", "... . ... ... ", " .. ... ... .. ", " ", " ", " . ... .. ", " . ... ", " . ... ......", " ... . . ......", " . .. ......", " .. . .. .. ", " . .. ", " .. . ... . ", " . .. ...", " .. . ......", " . . ......", " .. ......", " . . . .. .", " .. . ......", " . ", " ", " .. .... ", " ... . ", ".. .. .. ....", ".. . ....", ".. .... ....", ".. .... ... ", ".. .. ....", ".. .... ....", ".. .... ", ".. . . .......", ".. . .. .", ".. ............", " . ", ".. ... ... ... ", " . . . .. ", " ", " . ", " . ", "............ . ", "............ . ", "............ . ", ". . . .... . ", ".... ...... . ", "............ . ", " ........ . ", "... ... .... . ", ". .... ... . ", ". ........ . ", " ", " ", " ........... ", " .. ........", " . ....... ", " . . ...... ", " .... .", " .. . . .. . .", " . ... .", " .. . . .", " . . .", " .. . . .", " . . .", " .. . .", " . .", " . . . .", " . .", " .. . . . .", " . .", ". . ........ ", " ", " ", "..... ... .... ", ".............. ", "..... .... ", "..... .. ... ", "..... .. ... ", "..... .... ", "..... ..... ", "..... . .... ", ".. .. .. ... ", ".............. ", "... .......... ", "....... ...... ", "......... .... ", ".. ........... ", ". ........... ", ".............. ", ". ............ ", ".......... ... ", ". ......... .. ", ".......... . . ", ". ....... .... ", ".... ......... ", ". ............ ", ".............. ", " ........... ", "...... ....... ", "....... .... ", "...... . .. . ", "..... ..... ", " . . . . .", " ", " . . . .", " . .. ", " .. . . . .", " . .. ..", " .. . . . .", " . .. ... ", " .. . . . . .", " . .. ... ..", " .. . . . . .", " . .. ... .. ", " .. ", " . ... ... . . ", " ... ... ... .. ", " ", ".......... .. ", " ", " . . . . . . . .", "... ..... ... ..", " . . . . . . ...", ". ... . ... ", " . . . . . . . .", "..... ... . . ..", " . . . . . . . .", ". . ... . ... . ", " . . . . . . . ", " .... ... . ..", " ", " . ... ... .. .", " ... ... .. ...", " ", "........... . ", ".............. ", " ............. ", " ............ ", ".............. ", " ", " . . . . . . . .", ". . ... . . .", " . . . . . . .", ". ... . . . .. .", " . . . . . . . .", ". . .. ... .", " ... . .", ".. .. ... . . .", " .. ... . . .", " .", " ", " ...............", " . ... ... ... .", " ...............", " ... . ", " .... ", " . . . .........", " .. . .........", " .. . .........", " .. . .........", " . . .........", " .. . .........", " .. . .........", " .. . .........", " . . .........", " .. . .........", " ", "................", ".. ... ... ... .", "............ ", " . .. ", " ... ...", "..... .. . ...", "..... .. . ...", "..... . . ...", "..... .. . ...", "..... .. . ...", "..... .. . ", "..... . . ....", "..... .. .... ", "..... .. .", " ....... ", " ", "............... ", ".. ... ... ... ", " ... ", " .. ", ".......... ... ", ".......... .. ", ".......... ... ", ".......... .. ", ".......... ... ", ".......... .. ", " ........ ... ", " ........ .. ", ". ........ ... ", " ........ .. ", ". ........ ... ", " .. . ........ ", " .. . ........ ", " . . ........ ", " .. . ........ ", " .. . ........ ", " .. . ........ ", " . . ........ ", " .. . ........ ", " .. . ........ ", " .. . ........ ", " . . ........ ", " .. . ........ ", " .. . ........ ", " .. . ........ ", " . . ........ ", " .. . ........ ", " . . .. ... . .", " . ......... ", " .. ... ... .", " ............. ", " ... ... . .", " ......... ... ", " . ... . .", " . .. .. . . ", " . .. .. . . .", " . ... . . ", " . .... . . .", " . . ... . . ", " . .. .. . . ", " ......... . ...", " . ... ... . . .", " .... . ", " ........ .. ", ". ........ ... ", " ........ .. ", ". ........ ... ", " ........ .. ", ". ........ ... ", " ........ .. ", ". ........ ... ", " ........ .. ", ". ... ", " . . . . . ... ", "......... ..... ", " ... .. ", "............... ", ".. ... ... ... ", " ... ", " .. . ........ ", " .. . ........ ", " . . ........ ", " .. . ........ ", " .. . ........ ", " .. . ........ ", " . . ........ ", " .. . ........ ", " .. . ........ ", " .. . ", " . . . . . ", " .. ......... .", " .. ..", " ...............", " . ... ... ... .", " ", " ... . ...... .", " .. .... ..", " ........ .. .. ", " ..........", " ... ..........", " .... ..........", " . .. ..........", " .... ..........", " ... .... .... ", " .... ... ......", ".. .. .. .......", "..... ... ", " ... ... . ... .", ".......... ... .", ".. ... ... ... .", " ", ". .. .. .. .. ", " .. .. .. . ", ".. .. .. ...... ", "............... ", "............... ", "........... ", "........... .. ", "........... ... ", ".. .. .. .. .. ", " .. .. .. . ... ", ". .. .. .. .. ", " ... ", " ... ... ... .. ", "............... ", ".. ... ... ... ", " ", " ", " ...............", " . . . ... ... .", " ...............", " ... . ", " .... ", " . . . .........", " .. . .........", " .. . ........ ", " .. .........", " . . .........", " .. . .........", " .. . ........ ", " .. . ........ ", " . . .... ... ", " .. .... ... ", " ", ".... ...........", ".. ... ... ... .", "............ ...", " . ...", " ... ", "......... ... .", "......... ... ", "......... . . .", "......... ... ", "......... ... .", " ... ", " ........ .. . ", " . . ..... ", " .. ... .", " ............. ", " ", "............... ", ".. ... ... ... ", ". ... ", " .. ... .. .. ", ". ......... ... ", " ......... .. ", ". ......... ... ", " .. ... .. .. ", ". ......... ... ", " ......... .. ", ". ......... ... ", " .. ... .. .. ", ". ......... ... ", " ......... .. ", ". ......... ... ", " .. . ........ ", " .. . ........ ", " . . ........ ", " .. . ........ ", " .. . ........ ", " .. . ........ ", " . .... ... ", " .. . .... .. ", " .. . ........ ", " .. . ........ ", " . . ........ ", " .. ........ ", " .. . ........ ", " .. . ........ ", " . . ........ ", " .. . ........ ", " ... ... ... . .", " ............. ", " .. .. ... .", " .. .. .. .. ", " .. .. ..... ", " .. ...... ", " .. ... ... .", " .. . ...... ", " .. .. ... . ", " ............. .", " . ... ... .. . ", " ........... . .", " ... ... ... . ", " ........... . .", " ", " ", " .. ... .. ... ", ". ......... ... ", " ......... ... ", ". ......... .. ", " .. ... .. .. ", ". ......... ... ", " ......... .. ", " .. ", " .. ", " .......... .. ", " .......... . ", " .......... .. ", " .......... .. ", " .......... . ", " .......... .. ", " .......... .. ", " .. . .........", " .. . .........", " . . .........", " .. .........", " .. . .........", " .. . ...... ..", " . .........", " .. . .........", " .. . .........", " .. . ", " . .... .. ..", " .. ... .. ....", " .. ", " ......... ... .", " . .............", " ", "............... ", "............... ", "............... ", "............... ", "... ........... ", "............... ", "............... ", "............... ", "............... ", " ", ".. .... .. ... .", ". ... .... . ..", " ", "................", "...... ..... ..", " ", " .......... .. ", " ...... ... .. ", " .......... .. ", " .......... .. ", " ...... ... .. ", " .......... .. ", " .......... . ", " .......... .. ", " .. ", ".. . . . .. ... ", ".......... .. . ", " . . . .. ..... ", " ...... ", " .............. ", "...... ... ... ", " ", " ", " ... ...........", " ... ...........", " ........... ...", " ... ... ", " ...... . . . ", " ..... .......", " .... . .......", " ... . .... . ", " . . . . .......", " ... ..... .", " ... . . .......", " . . . ", " . . ", " ... . . . . ", " ... . . . . . ", " ", "...... .........", "................", "................", " .. ... ...", ". . . .. ..... ", ".... . .. .", "..... ...... . .", ".... .. .. . .", "..... .... . .", ".... . . .", "..... ..... . .", " . . . .", " ..... . . .", " ... .. . . .", " ..... . . . .", " ", "............... ", ". ........ .. ", "............... ", " ... . .. ", " . . . ... ", " . ..... .. ", ".. ...... ... ", ".. ..... .. ", ".. ...... ... ", ".. ..... .. ", ".. ...... ... ", ".. . .. ", ".. .... ", ".. ... ", "......... .... ", " ... . . . . ", " ... . . . . . ", " ... . . . . ", " ... . . . . . ", " ... . . ", " ... . . . ", " ... . . .....", " ... . .....", " ... . . .....", " . . . . .....", " ... . . .....", " ... . .....", " ... . . . .....", " ... . .....", " ... . . . ... .", " ... . .....", " ... ... . . .", "......... . . .", ".. ... ... . .", "........... . .", " . .. . ", ". . .. . . ", ".. . .. . ...", ". . .. ", ".. . .... ...", ". . . .......", ".. . .. .... .", ". .............", ".. ", ". . . . . . . . ", "................", "....... . .... ", ".......... . .. ", "......... .... ", ".......... ... ", "......... .... ", " . .. ", " ........ ..... ", ".. . . . ... ", " ....... ", " ... . ... .. ", ".. .. ", ". . . . . . ", ". ....... .. ", " ........ .. ", " . ....... .. ", " ........ . ", " ....... .. ", " ... . . . ... .", " . . . .....", " ... . . . .....", " ... . .....", " ... . . . ", " ... . .. .. ", " ... . . .......", " .. . .. .. ..", " ... . .........", " ... .. .. .. ", " ... ", " ............ ..", " ... ....... ...", " .............. ", " ...... ........", " ", "....... ........", "............... ", "..... . . ......", "............... ", " ", "........ .. ... ", ".. .. ........ .", ". . .. .. ... ..", "............ ...", ". . .. ... . ..", " .. ..", "............. ", "........ ... ...", "................", "...... .........", " ", " . ........ .. ", " ....... .. ", " ........ . ", " . ....... .. ", " .. ", ". ... ", ". . . . ... ", "........... ... ", " . . . . .. .. ", " . . . . .. ... ", "........... .. ", " ..... ... ", " ... ..... .. ", "..... ..... ... ", "..... ..... .. ", " ", "............. ", " . ", " . ... .... . ..", " ......... . . ", " ........ . . . ", " ....... . . ..", " . .... . . . ..", " ..... . . . ..", " .... . . . . ..", " ... . . . ..", " . . . . . . ..", " .. . . . . ..", " .. . . . . . ..", " .. . . . ..", " . . . . . . . ", " .. . . . . . ", " ..", " ..", "............ ", " ........... ..", " ........... ..", "............ ..", "............ ..", ".. .... ..", "...... .. .....", "...... . .. ", "...... .. ....", "...... .. .. . ", "...... . .. ...", "...... .. ... ", " .. ", " .. . ...... ", "................", "................", " ...", "............ ...", "............ ...", "............ ...", ". ... .. ... ...", "............ ...", "............ ...", " ........ ...", " .. .. ..... ...", ". .. ..... ...", ". ...... . ...", " ........ ...", " .", " .", " .. . . . . . . ", " .. . . . . ", " . . . . . . . ", " .. . . . . . ", " .. . . . . . . ", " .. . . . ..", " . . . . . ..", " .. . . . . ", " .. . . . . .. .", " .. . . . . ", " . . . . .. ...", " .. . . ", " .. . . . ......", " .. . ......", " . . . . ......", " .. . . ......", " .. . .... . ", " .. ...... ", " ... .. .. .", " . .. .... . ", " .. . .... . .", "...... .... . ", "...... .. . . .", " .... . ", ".. ... . ... . .", ". . . ...... . ", " ... . ... . . .", " ........ . ", ".. ", ". . ", "................", "................", ". ........... .", ". ........... .", " ........... .", ". ........... .", " ..... .... .", ". .... .. ... .", " ... .. ... .", ". ... .... .", " .... ..... .", ". ........... .", " ........... .", ". ........... .", " ........... .", " ......... .. .", "............. .", "............. .", " .. . . . ......", " .. . . ......", " . . . . ......", " .. . . ... .", " .. . . . ......", " .. . ......", " . . . . ", " .. . . .......", " .. . . . . . .", " .. . .........", " . . . . . . .", " .. .... .... ", " .. ", " ...............", " ...............", " ", "...... .........", "................", "................", "........ ...... ", "........ .......", "................", " ", "................", " . . . . . . . .", "................", " . . . . . . . .", "................", " ", "................", "................", " ", "............. .", "............. .", "..... ....... .", ".... ........ .", "... ......... .", "............. .", " .", "............. ..", " . . . . . . . .", "........... .. .", " . . . . . ... .", ". ...... .... .", " ... . .", ".............. .", ".............. .", " .", " ", " ...............", " ...............", " ...............", " ..... ", " .... ", " ... . ........ ", " .. .. ........ ", " .. . ........ ", " .. . ........ ", " .. . ........ ", " .. .. ........ ", " .. . ........ ", " .. . ", " .. ", " .. . ......... ", " ", "................", "...... .........", "..... . . ......", " ... . . .......", " .... . . ..... ", " ... . . ..... .", " .. . . . .... ", " ... . . ..... .", " . .", " .. . ... . .", " .. . ... ", " ... . ..... ", " .......... .", ". .......... . .", ". ........ . ", " ", "............... ", "............... ", ". ... ", " ... ", ". ........ ... ", " ........ ... ", ". ........ ... ", " ........ ... ", ". ........ ... ", " ........ ... ", ". ........ ... ", " ........ ... ", ". ........ ... ", " . .. ... ", ". . .. . ... ", " .. ......... ", " .. . ......... ", " .. ......... ", " .. . ......... ", " .. ......... ", " .. . ......... ", " .. ......... ", " .. . ......... ", " .. ......... ", " .. . ......... ", " .. ......... ", " .. . ......... ", " .. ", " .. .. .. ... .", " .. ..", " ...............", ". ..... . .", ". ....... . .", ". ........ . .", ". ........ ", ". ............ ", " .......... .", "............ . .", " .... . ", "...... .... .. .", "...... .... .. .", ".... . .... .. .", "... . ..... .. ", ".. . . .... .. ", "... . . ... ....", ".. . . .... ....", "... . ..... ....", " . .. . ... ", ". . .. ... ", " . ... ... ", ". . . .. ... ", " . .. . ... ", ". ........ ... ", " ........ ... ", ". ........ ... ", " ........ ... ", ". ... ", " ......... .... ", ".. . . .. ..... ", " ...... ", "............... ", "............... ", "............... ", " ...............", " ...............", " ...............", " ...............", " ... . .........", " .. . ..........", " ... . .........", " .. . . . ..... ", " .. . . .......", " . . . ........", " . . . ..... ", " .......... ....", " ......... ", " ........ .... .", " ...............", " ", ".. . . .... ....", ". .. .... ... ", ". .... .... ....", "...... .... ....", "...... .... ....", "..... .... ....", ".... . .... ....", ". . . ... . ....", " . . . . .. ....", ". . . . ... ....", " . . .... ....", " . . . ... ....", ".. . . .... ....", "..... .... ....", "...... .... ....", " ", "........ ...... ", "............... ", "............... ", "............... ", "........ ...... ", "....... . ..... ", ".... . . . . .. ", "... . . . . ... ", ".... . . . . .. ", "... . . . ..... ", ".... . . . .... ", "..... . . ..... ", "...... . . .... ", "....... . ..... ", "............... ", " ", " ", " ...............", " ... . .........", " .. . . ........", " ... . . ... ...", " .. ... ", " . . . ", " .. . ...... ", " ... . ...... ", " .... .. ...... ", " .... . ...... ", " .... . ...... ", " ... . .. .. ", " .... .. ... .. ", " .... . ...... ", " .... . ...... ", " ", "................", "................", "................", " ", " ", " ...............", " ........... .", " ...............", " ..... .........", " ...............", " ", " ... . ..... ...", " .............. ", " . . ... . . . .", " . ", " ", "............... ", "............... ", "............... ", " .. ", " .. ", "........... .. ", "........... .. ", "........... .. ", "...... .... .. ", "........... .. ", " ......... .. ", " ......... .. ", ". ......... .. ", " ......... .. ", ". ......... .. ", " ... . ...... ", " .... .. ...... ", " .... . ...... ", " .... . ...... ", " ... . ...... ", " .... .. ...... ", " .... . ...... ", " .... . ...... ", " ... . ...... ", " .... .. ...... ", " .... . ...... ", " .... . ...... ", " ... . ...... ", " .... .. .. .. ", " .... . ... .. ", " .... . ...... ", " ............ .", " ............ ..", " .... ... .", " .... .. .. . ", " .... .. .. .", " .... ... ..", " .... .... .", " .... . ... . ", " .... .. .. ", " ............ .", " ............ ", " .........", " ...... ........", " . ........", " .... . ........", " .", " ......... .. ", ". ......... .. ", " ..... ... .. ", ". ......... .. ", " ......... .. ", ". ......... .. ", " .. ", " ........... .. ", ".. . . . .. .. ", ".......... .... ", " ..... ", "..... .. ...... ", "..... .. ... .. ", ". .. .. ", ". .......... .. ", ". . ...... . ", " ... . ...... ", " .... .. .......", " .... . .......", " .... . .......", " ... . ...... ", " .... .. .......", " .... . .......", " .... . ", " ... ... ...", " .... ... ... .", " .... ", " ...............", " ... ... ... ...", " ...............", " ...............", " ", " .", "............. ", "............. .", "............. .", "............ ", "............. .", "............. .", " .", " ... ... ... ..", ".. ... ... . ...", " ... ", "................", " ... ... ... .. ", "................", "................", " ", ". .. .... ..... ", " ... .. ...... ", "... ...... .... ", ".... .... .. ", " ... .. ... .. ", ". . ...... . .. ", ". .. .... .. .. ", ". ... .. ... .. ", " .......... .. ", " .......... .. ", ". .......... .. ", " ... .. ", ". .. ... .... ", " ..... ... .... ", "..... ... .... ", " ", " ", " ...............", " ...............", " ...............", " ... ... ", " ...... . . . ", " ..... . .......", " .... . .......", " ... . . .......", " ... .. .......", " ... . . .......", " ... .. .......", " ... . ", " ... .. ", " ... . . . . ", " ... .. . . . . ", " ", "................", "................", "........... ....", " ..........", ". . . .. ..... ", ".... ....... .", "..... ...... . .", ".... ..... . .", "..... ..... . .", ".... . .", "..... ..... .. .", " . . .", " ....... . .", " ........ .. .", " .. .... . . .", " ", "............... ", "............... ", "............... ", " ... . .. ", " . . . ... ", " . ..... ... ", ".. . ...... ... ", ".. ..... .. ", ".. ...... ... ", ".. . ..... ... ", ".. ...... ... ", ".. ... ", ".. ...... .... ", ".. .... ", "......... .... ", " ... . . . . ", " ... . . . . . ", " ... . . . . ", " ... .. . . . . ", " ... . . ", " ... . . . . ", " ... . . .....", " ... . .. .....", " ... . . . .....", " ... ... .....", " ... . . . .....", " ... .. .. .....", " ... . . . .....", " ... ... .....", " ... . . . .....", " ... .. .. .....", ".... ...... . .", "...... .... . .", "........... . .", "........... .. .", " . .. . ", ". . .. . . ", ".. . .. . ...", ". . .. ", ".. . ........", ". . . .......", ".. . .. ......", ". .............", ".. ", ". . . . . . . . ", "................", "............... ", ".......... . .. ", "......... .... ", ".......... .... ", "......... .... ", " . .. ", " ........ ..... ", ".. . . ...... ", " ....... ", "..... . ... .. ", ".. .. ", ". . . . . .. ", ". ....... .. ", " . ........ .. ", " . ....... .. ", " ........ .. ", " . ....... .. ", " ... . . . .....", " ... . . .....", " ... . . . .....", " ... .. .. .....", " ... . . ", " ... ... ......", " ... . . .. . . ", " ... .. ........", " ... . .. . . . ", " ... ...... ..", " ... ", " ...............", " ... ... ... ...", " ...............", " ...............", " ", "................", "............... ", "................", "............... ", " ", "............... ", ".. .. . . . . .", "............. ..", ".... . . . . ...", ". ....... . ..", " .. ..", "............. ", " ... ... ... ...", "................", "................", " ", " . ........ .. ", " . ....... .. ", " ........ .. ", " . ....... .. ", " . .. ", ". ... ", ". . . . .... ", "........... ... ", " . . . . .. .. ", " . . . . .. ... ", "........... ... ", " ..... ... ", " ... ..... .. ", "..... ..... ... ", "..... ..... ... ", " ", ".......... ", " . ", " ....... . .....", " ...... .. .....", " ..... . . ... ", " .... ... .. . ", " ... . . . .. .", " .. ... .. ... ", " .. .. . . .....", " .. ... .....", " .. . . . .....", " .. . . .. .....", " .. .. . . .. . ", " .. . ... ", " .. . . .......", " .. ... ........", " ............", " ", ".. ....... ", ".. ...... ....", ".. . ....", " . .... . ....", " . .... .. ....", ".. .... ....", ".. .... ....", ".. .... . ....", ".. .... .. ....", ".. .... . ....", ".. .... . ....", " .... ....", ".. ..... . ", ". ...... . .....", "................", " ", " ", ".............. ", ".. .......... ", ".............. ", ".............. ", "........... .. ", "... ...... ... ", ".. ...... .... ", ". ............ ", ".............. ", ".............. ", ".............. ", " ", ".............. ", " .. .. ", " .. . .........", " .. . .........", " .. . ........ ", " .. .. ....... ", " .. . .. ... . ", " .. . ..... .. ", " .. .. .... ... ", " .. .. ... . . ", " .. . .. ... . ", " .. . . . . .. ", " .. .. ... ... ", " .. .. . . . . ", " .. . ... . . . ", " .. . . . . .. ", " .. ... ... ... ", " ....... ......", " .......", " ...............", " ", " ", "................", "....... ....", "....... .. ...", "....... .. ...", "....... ....", "....... .....", "....... . ....", "....... .. ...", "................", "................", "................", "............. . ", ". .. ", " .......... .. ", " ........ .. ", " ........ .. ", ".. ........ .. ", ".. ........ .. ", ".. ........ .. ", ".. ........ .. ", ".. ........ .. ", ".. ", ".. .......... ", ".. .......... ", ".. ........ . ", ".. .......... ", ".. .......... ", " .. .. . . . . ", " .. ... ... .", " .. . . . . ..", " .. ... . . ...", " .. .. . . ... ", " .. . ... .....", " .. . . . . . ", " .. .. .......", " .. .. . .. . .", " .. . .........", " .. .... . . .", " .. ...... ...", " .. ", " ...............", " ...............", " ", " ", "................", " . . . . . . . .", "................", ". . . . . . . ", ".............. .", ". . ......... ", "..... . . .....", ". .......... .. ", "...... . ..... .", " . . ........ . ", "....... ... ...", " ", "................", "................", " ", " .. ....... ", ".. . ....... ", ". .. . ....... ", " . . . ....... ", ".............. ", ".............. ", " . ", " ... ... ... . ", ". . . . . . ... ", ".. ... ... ... ", ". . . . . ..... ", " ... ... ..... ", " .... .. ", "............... ", "............... ", " ", " ", " ...............", " ...............", " ....... ", " ...... . . . ", " ..... .......", " ..... . .......", " ..... . .......", " ..... . .......", " . ... . .......", " . .. . .......", " . ... . ", " . .. ........", " . . . ", " .. ............", " . . . ..", " ", "................", "................", " .. ", ". . ", " . ...........", ". . .. ........", " ...........", ". . ...........", " .. ........", ". . ...........", " . ", " . ... .... ...", ".. ", "................", " ...", " ", "............... ", "............... ", " ..... ", " ..... ", "........ .. .. ", ".... ... . . . ", "........ .. .. ", "........ ... . ", ".... ... ..... ", "........ ..... ", " ..... ", " . ... . ...... ", " ....... ", ".. . .......... ", ".. . ..... ", " .. .. ..... ..", " ..... .... . ", " ..... ... .....", " ..... ...... ", " ..... ..", " .......... . ..", " ......... .. ..", " ............ ..", " ........... ..", " .......... . ..", " ......... .. ..", " ............ ..", " ..... ..", " ..... .... . ", " ..... ... .....", " ..... ...... ", " ..... ..... ...", " ... ... ...", "... . . .. ...", " . . . . ...", " . . . . . . ...", " . . . . . . ", " . . . . . . . ", " . . . . . . ", " . . . . . . . ", " . . . . . . ", " . . . . . . . ", " . . . . . . ", " .. . . .. ...", " ... ... ...", "............ ...", " ...", ".. ..... ..... ", ".. . .... ..... ", ".. .. ... ..... ", ".. ...... ..... ", "......... ", " ............ ", ".. . ......... ", ".. ........... ", " ............ ", " ............. ", ". .. ......... ", ".. ........... ", "......... ", ".. . .... ..... ", ".. .. ... ..... ", ".. ...... ..... ", " ..... ...... ..", " ..... . ..", " .......... . ..", " .. ....... . ..", " . . ... ", " .. ... . . . .", " . . .. .......", " .. .... .......", " ...... .......", " ...... .......", " ....... .......", " ...... .......", " ...... ", " ...... . ", " ...............", " ", "......... . ....", "........ . .....", "........ . ....", "................", " ..", " . . . . . . . ", "............. ", "............ ..", "............. ", "............ . ", "............. . ", "............ . ", " . ", " . .. ", "................", " ", ".. ...... ..... ", ".. ..... ", "............... ", ". .... ", " . . . . .... ", " ........ .... ", " ....... .... ", " ........ .... ", " ....... .... ", " ........ .... ", " ....... .... ", " .... ", " ..... ", " . . ...... ", "............... ", " ", " ", " ...............", " ... . .........", " .. . . ........", " ... . .........", " .. ... ", " . . . . ", " .. . . ...... ", " .... .. ...... ", " .... . ...... ", " .... .. ...... ", " .... . ...... ", " .... .. ...... ", " .... . ...... ", " .... .. ...... ", " .... . ...... ", " ", "................", "................", "................", " ", " ", " ...............", " ...............", " .............. ", " .............. ", " ...............", " ", " ... . ..... ...", " .............. ", " . . ... . . . .", " .", " ", "............... ", "............... ", "............... ", " .. ", " .. ", "........... .. ", "........... .. ", "........... .. ", "....... ... .. ", "...... .... .. ", " ... ..... .. ", " .. ...... .. ", ". ......... .. ", " .... .... .. ", ". ......... .. ", " .... .. ...... ", " .... . ...... ", " .... .. ...... ", " .... . ...... ", " .... .. ...... ", " .... . ...... ", " .... .. ...... ", " .... . ...... ", " .... .. ...... ", " .... . ...... ", " .... .. ...... ", " .... . ...... ", " .... .. ...... ", " .... . ...... ", " .... .. ...... ", " .... . ...... ", " ............ ..", " ............ .", " .... ... ..", " .... .. .. .", " .... .. .. ..", " .... ... .", " .... .... ..", " .... . ... .", " .... .. .. . ", " ............ .", " ............ ", " .........", " ...... ........", " . ........", " .... . ........", " .", " ......... .. ", ". ......... .. ", " ..... ... .. ", ". ......... .. ", " ......... .. ", ". ......... .. ", " .. ", " ........... .. ", ".. . . . .. ... ", ".......... .... ", " ..... ", "..... .. ...... ", "..... .. ...... ", ".... ..... ", "... .... .... ", ".. .. .. ... ", " .... .. ...... ", " .... . .......", " .... .. .... .", " .... . ..... .", " .... .. .... .", " .... . .......", " .... .. .......", " .... . ", " .... . ... ...", " .... ... ... .", " .... . ", " ...... . ......", " ..... . . .....", " .... . . ......", " ...............", " ", " .", "............. ", "............. .", "............. .", "............. ", "............. .", "............. .", " .", " ... ... ... ..", ".. ... ... . ...", " ... ", "................", "............... ", "................", "................", " ", ". . .. . . .. ", " . .. ... . .. ", ". . . . . .. ", ". . . . . .. ", " . ... .. . .. ", ". . . .. . .. ", ".. .. .. ... ", "... .... .... ", ".... ..... ", " .............. ", ". ....... ..... ", " ..... . . .... ", ". ... . . ..... ", " ..... . . .... ", "............... ", " ", " ", " ...............", " .. . .. ", " . . .. .......", " .. .. . .......", " .... . .......", " ... ... ...... ", " .. .. . ..... .", " .. ... .......", " .. .. . .......", " .. ... .......", " .. .. . .......", " .. ... .......", " .. .. . .......", " .. ... ", " .. .. . . . . ", " ", "........... ....", " ....... . ...", ".. ...... . ....", ".. ", ".. .............", ".. .............", ".. .............", ".. .............", ".. .............", ".. .............", ".. ", ".. .............", ".. ..... . .... ", " . . ", ". ...... . ... .", " ", "............... ", "............... ", ". ... ", " ......... ... ", ". ......... ... ", ". ......... ... ", ". ......... ... ", ". .... .... ... ", ". ... ..... ... ", ". ......... ... ", " ......... ... ", " ......... ... ", " ......... ... ", " ......... ... ", ". ......... ... ", " .. . .........", " .. .. .........", " .. . .........", " .. .. .... ....", " .. . .........", " .. .. .........", " .. . .........", " .. .. .... ....", " .. . .........", " .. .. .........", " .. . .........", " .. .. .........", " .. . . ", " .. .. ", " .. . . .......", " .. .. . .......", " ........ . .. .", " ........... . .", " .......... . .", " ... ... . .", " ... .. .... .", " ... .. .... .", " ... ..... .", " ... ...... .", " ... . ..... ", " ... .. .... ", " ............ . ", " ........... ", " ", " ", "................", "................", " ......... ... ", ". ......... ... ", " ......... ... ", ". ......... ... ", " ......... ... ", ". ......... ... ", " ......... ... ", " .. ", " ........... .. ", " ........... .. ", " ........... .. ", " ........... .. ", " .......... .. ", " .......... .. ", " .......... .. ", " .......... .. ", " .. ... .......", " .. .. . ... . .", " .. ... .......", " .. .. . .......", " .. ... .......", " .. .. . .......", " .. ... .......", " .. .. . ", " .. .. ... ...", " .. .. .........", " .. ... ... .", " .. ...........", " .. ", " ...............", " ...............", " ", "................", " ...............", "................", "................", "................", "................", "................", " ", " ... ... ... ...", "............... ", ".. ... ... ... .", "............. ..", " ", "................", "................", " ", " .......... .. ", " .... ... .. ", " .... . ... .. ", " .... . ... .. ", " .... ... .. ", " .......... .. ", " .......... .. ", " .......... .. ", " .. ", "........... ... ", ".. ... ... .... ", "......... ... . ", " ... .. ", "........... . . ", "............... ", " ", ".......... ", " . .....", " ........ .....", " . . ... . .....", " . ... . .....", " . . . ... .....", " .. . . . .....", " ... ..... .....", " .. .. . . .....", " .. ...... .... ", " .. . . . .....", " .. ...... .....", " .. .. . . ", " .. . ... ......", " .. . . . ... .", " .. ... ........", " ....... ", ".... . ...", ".... ..... . ...", ".... .... . ...", ".... . . ...", ".... ... .. ...", ".... ... . . ...", ".... ... .. ...", ".... ... . . ...", ".... ... . ", ".... ... . .....", ".... ......", " ...........", "... ........... ", ".. .", ". ............ .", " .", "............. .", "............. .", "... ......... .", ".. .......... .", "............. .", "......... ... .", "............. .", "......... ... .", " ......... .", ".. ..... ... .", ". . ......... .", " .. ", ".. ", ". . .......... ", " . .......... ", " .. .. ", " .. .. .........", " .. . ... ... .", " .. .. .........", " .. .. . ... ...", " .. . .........", " .. . ... ... .", " .. .. .........", " .. .. . .......", " .. .. .... ", " .. . ... ", " .. .. .. . ....", " .. .. . .. ....", " .. . ... ....", " .. ... .. ....", " .. ....... ....", " ... ", " ......... ... .", " .. .. .. ..", " . . . . . ...", " . . . . . . .", " . . . . . ..", " . . . . . . . .", " . . . . . ...", " . . . . . . . .", " . . . ...", " . . . . . .", "... . . . ...", "... ", "... ", "................", "................", "... .......... ", "... .......... ", " .. .......... ", "... .......... ", " .. .......... ", "... .. ... ", " .. .. .. .. ", "... .. .. .. ", " .. .. ... ", "... .. .... ", " .. .. . ... ", "... .. .. .. ", " .......... ", " ........... ", ".............. ", ".............. ", " .. .. . .. ... ", " .. ....... ....", " .. . . .. ....", " .. ....... ....", " .. .. . .. .", " .. . .... .. ", " .. . .. .. ..", " .. .... .. . ", " .. ... .. ....", " .. .. .. . . ", " .. . .. .... .", " .. .. . . ..", " .. . .... ", " ..... ....", " ...............", " ", "................", ".......... .....", "................", "................", "... .... ", " ..... ", ".. .. .. .... .", ". ..... . . ..", " .. .. .... .. ", "..... . . ....", ". .. .... .. ..", "... . . ..... ", " .... . ", ".. ...... ", "................", " ", ".............. ", ".............. ", ".............. ", ".............. ", " .... ", "..... .. .", ". .. .... .. .", "... . . .. . .", ".. .... .. .. .", ". . . .. ... .", " .... .. .... .", " . . .. .. .. .", ".... .. . . .", " ....... .. .", ".......... ... .", " .", "................", "................", " ", " ...............", " ...............", " ......... . ...", " ... . .... . ..", " .. . .... . .. ", " ... . ... .. .", " ... ... .... ", " .. .......... .", " ......... ", " ........ ", " ....... .....", " ...... . .....", " ..... . ... .", "...... ", "..... ", " . .........", "... . .........", ".. . . .. .... .", ". . . .........", " . . . .........", ". . . .........", " . . . .........", ". . . .........", " . . . .........", " .........", " .... .", "......... ..... ", "........ .. ..", "....... ... ..", " .............", " .............", ". ..", ". .......... ..", ". .......... ..", ". .......... ..", ". .......... ..", ". .......... ..", ". .......... ..", ". .......... ..", ". .......... ..", ". ", ". ", ".............. ", " ............. ", ". ......... .. ", " .... . . .....", " ... . . .....", " .. . . . .....", " . . . . .....", " . . . . . ... .", " . . . . .....", " . . . . . .....", " . . . . ", " . . . . ......", " . . . . . . .", " . . . ........", " . . . . . . .", " . . ..........", " . . . . . . .", " . ... ...... ", " . ", "....... . ", "....... . ", "....... . ", "....... ... ..", "........ .. ..", "......... ..... ", ".......... .", " .........", "..... .........", " . . .........", "... . .........", " . . .........", ". . . .........", " . . .........", " . . . .........", ". . . .. .... .", ". ............ ", ". ............ ", ". ............ ", ". ............ ", " .......... .. ", ".............. ", ".............. ", ".. ", ". ........... .", ". . . . . . ..", ". ......... ..", ". . . . . . ..", ". ....... .. ..", ". . . . ... ..", ". ..... .... ..", ". . ..... ..", " ..... . ..... .", " .. . .. ", " .. ....... .", " .. . ....... ", " .. ....... .", " .. . .... .. ", " .. ..... .. .", " ....... .. ", " .......... .. .", " ....... .. ", " .. . . . .. ", " .. ....... ....", " .. . . . ....", " .. ....", " ...............", " ", " . . . .........", ". . . .........", " . . . ", ". . . ..........", " . . . . . . . .", ". . ........... ", " . . . . . . . .", ". ........... ..", " . . . . . . ...", "..... .... ....", " .....", ".. ..... .......", ".. ..... .......", ". . . ......", " . ..... . .....", " ", ". .......... ..", ". .......... ..", " ... . .... ..", ". ... . ..... ..", " .... . .... ..", ".... ....... ..", ".... ........ ..", "............. ..", "............. ..", "........ .... ..", "....... . ... ..", "...... . .... ..", "..... . ... ..", "..... ....... ..", "............. ..", " ..", " ", " ...............", " ... ...........", " .. . . ..... ", " ... . . ... ..", " .... . ... . ..", " ... . ... .. ..", " ........ ... ..", " . ..... .... ..", " .. ... .. .. ..", " . ... .. .. ", " . .. .. . ", " . ... .. .. ...", " . .. ..... ...", " . ... ... . ...", " .. .. .. . ...", " ", "............. . ", "............ . .", " ..........", "..... ", "..... ..........", "..... ..........", "..... ..........", "..... ..........", "..... ..........", " ...... . .", " ...........", "................", "................", "................", ".. .............", " ", "............... ", ".......... . .. ", "........... . . ", " .. ", "............ .. ", "......... .. .. ", "............ .. ", "......... .. .. ", "............ .. ", " ........ .. .. ", "............ .. ", "............ .. ", "............ .. ", "............ .. ", "......... .. .. ", " ... . .. . ...", " .. .. .. .. ...", " . ... ..... ...", " .. .. ... . ...", " . ... .. . ...", " .. .. .. . ...", " . . . .. .. .. ", " .. .. ..... ...", " . ... ... . .. ", " .. .. .. . ...", " . ... .. . ...", " .... .. .. ...", " . ... ..... ...", " ..... ... . ...", " . ... .. . ...", " .. .. .. . ...", "................", "................", ".. .............", "................", "................", ".. .............", "............... ", " . .......... .", ". . . ...... ..", ".. . . .... . . ", "... . . .. .. .", ".. . . . . . ", "... . . . . ...", ".... . . . .. ", "..... . . .. ", "...... . .. .", "........ ... .. ", "..... .. .. ", "...... ..... .. ", "..... ...... .. ", "... ...... .. ", ". . ...... .. ", " . .. ...... .. ", ". ... ...... .. ", " .... ...... .. ", "..... ...... .. ", "..... ...... .. ", " ...... .. ", ".... ....... .. ", "... ........ .. ", ".. ......... .. ", ". .......... .. ", " . ... .. .. ...", " .. .. ..... ", " . ... .... ....", " ..... ... ... ", " . ... .. ... ", " ..... . .......", " ..... ........", " ..... ", " ...............", " . . . ........ ", " .. . ........ .", " . . . ........ ", " .. . ..........", " ... . .........", " ...............", " ", "....... .......", " ....... ", ".......... ...", " ....... ...", "....... . . ...", "...... . . ....", "..... . . .....", ". ", " . .............", ". ............. ", " . ........... .", ". ............. ", " ............. .", "................", "................", " ", " ........... .. ", " .. ", "........... .. ", "... .... ... ", ".. .... .... ", "........ ..... ", "....... ...... ", " ....... ", "............... ", "............... ", " ..... ........ ", ". ... . ....... ", " ... . . ...... ", "..... . ....... ", ".... . ........ ", " ", " ", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", " ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", "................", "................", "..... .....", ".... ... ....", "... ..... ....", "... ...........", "... ...........", "... ...........", "... ...........", "... ...........", "... ..... ....", ".... ... .....", "..... ......", "................", "................", "................", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", " ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", " ", " ", " . ... ... ... .", " ... ... ... ...", " . .. ... ", " ... ... ......", " . ... ........", " ... . .........", " . ... .........", " . . . ...... ", " . ... ..... ...", " ... . ..... ...", " . . . ..... ...", " ... . ..... ...", " . ... ...... ", " ... . ....... ", " . ... ..... . .", " ", ".. . . ... ... .", " ... ... ... ...", " ", "................", "................", "................", "................", " ", ". ", " ..............", " ..... .....", " .... .. ....", " .... ........", " .... ........", ". .... ........", " ", ".. ... ... ... ", " ... ... ... .. ", " ... .. ", "...... ... .. ", "........ . ... ", "......... .. .. ", "......... ... ", " ...... . .. ", " .. ..... ... ", " . ..... .. .. ", " .. ..... ... ", " .. ..... .. . ", " ...... ... ", " ...... .. .. ", " . ..... ... ", " .. . . .... ", " . ... ..... .", " ... . . ... . ", " . .. . .... .", " ... . ..... ", " . . . ... . .", " ... . .... ", " . .. . ..... .", " ... . ... . ", " . .. . ..... .", " ... ....... ", " . . . ..... . .", " .. . ...... ", " . ... ....... .", " ... . ..... . ", " . ... ...... .", " .... .. ....", ". ..... .....", " ..............", ". ", " .. .. ", "... ...", " ........ ", "... ...", " . . . . ", "... . ... . ...", " . . . . ", "... . . . . ...", " . . . . ", "... .. . . . ...", " . . . . ", "... . . . . ...", " ....... .. .. ", " ...... ... ", " . ..... .. .. ", ". ....... ... ", " ...... .. .. ", ". . ..... . . ", " ....... . .. ", ". ...... ... ", " . ..... .. .. ", ". ....... ... ", " ...... .. .. ", ". . ..... ... ", " ....... .. .. ", ". ...... ... ", " . ..... .. .. ", ". ....... ... ", " ... . .... ", " . ... ... . . .", " ... . ... . . ", " . ... ... ", " .........", " ...............", " ...............", " ...............", " ...............", " ...............", " ", " . ... ... ... .", " ... ... ... ...", " . .. ... ... .", " ... ... ... ...", " ", " . . . . ", ". . . ... . . ", ". . . . . . . . ", " ", "................", "................", "................", "................", "................", "................", " ", ".. ... ... ... .", " ... ... .. ...", ".. ... ... ... .", " ... ... ... . .", " ", " ..... .. . ", ".. . .... .. ", ". . .... .. .. ", " .... ... ", "......... ", "............... ", "............... ", "............... ", "............... ", "............... ", " ", ".. ... ... ... ", " ... .. ... .. ", ".. ... ... . . ", " ... ... ... .. ", " ", " ", " . ... ... ... .", " ... ....... ...", " ..... ... ... .", " ... ... ... ...", " . ... .", " ... . ..... ..", " . .. . . . . .", " ... . ..... ..", " . .. . ..... .", " ... . . . . ..", " . .. . ..... .", " ... . ..", " . .. .. .. . .", " ... ...", " . ... .. .. .", " ", ".. ... ... ... .", " ... ... ... ...", ".. ... ....... .", " . . .. .. ", ".. ... . . .. .", " ... .. ... ...", ".. ... ... ....", ".. ... . .....", ". . .. .. .. ...", " ... . .....", ".. ... . ......", " ... . .........", ".. .. .... .. ..", " ... .... ......", " . . ..........", " ", ".. ... ... ... ", " ... ... .. ", ".. ... ... ... ", " .. ... .. ", "...... .. ... ", "........ ...... ", "......... ... ", "... ... . .. ", ".. .. ... .. ", ".. ....... .. ", ".. ........ . ", ".. ........ .. ", ".. .. .... . ", "... ..... .. ", "............ . ", " ..... . ... .. ", " . ... ... ... .", " ... .. ... ...", " . ... ... ... .", " ... ... ... .. ", " . ... .. ... ", " ... . . .... .", " . ... ... . ..", " ... .. .. ...", " . ... ... ... .", " ... ... ... .. ", " ..... .. ... ", " ... . . .... .", " . ... ... . ..", " ... .. .. ...", " . ... ... ... .", " .. ...... ....", ".. ..... .....", ". . ...........", " ... ...... ..", " ... ...... ...", ".. . .........", " .. . ........ ", ".. .. ........", ". . ... . .....", " .... .. ......", " ... ... ....", ".. .... . . ", " ... . .... .", ".. .. ... . .", " ... .. .. .. ", "... . ... .. ", "............ .. ", " ........... . ", "........... .. ", ".... ... .. .. ", ".......... . .. ", " ........ ... ", ".... .. ... .. ", "... .. .. ... ", "...... . ... .. ", "..... ... ... ", " .. ... ... .. ", " .. ... ... ", " . ... . .. ", " ... ... .. ", " . . ... . .. ", ". ....... .. ", " ... ... ... ...", " . ... .. .....", " .. . . ... ...", " . ... .. .. ", " ... .. . ...", " . ... .. .. .", " ... ... ... ...", " . ... .. .. .", " .. . . .. .. ", " . ... ... ... .", " ... ... ... ...", " . ....... ... .", " ... ... ... ...", " . ... ... ... .", " ... ... ... ...", " ", " . ..... .. .", ". ... . .. .", " .. .. .. ...", " . ... .. .. .", " ... . ... ...", ".. ... ... ... .", " ... ... ... ...", " . .. .. . . ", " . . .. .. . .", ".. ... ... ... .", " ... ....... ...", ".. ... ... . ", " ... ... . ", ".. ... ... ... .", " ... ... ... ...", " ", " ... ... . . .. ", ".. ... ... ... ", " .. ... ... .. ", ".. ... ... ... ", " . . ... .. .. ", ". ... . . ... ", " ... .. ...... ", ".. ... ... ... ", " .. .. ... .. ", ".. ... ... ... ", " .. ....... .. ", " . ... ... ... ", " ... ... ... .. ", ".. ... ... ... ", " ... ... ... .. ", " ", " ", " . ... ... ... .", " ... .. ", " . ... . ... ..", " ... ... ... ", " . . . . ... ..", " .. . ... ... ", " . . . ... ..", " .. . ... ... ", " . . ..... ..", " .. . ... ... ", " . . . ... ..", " .. . ... ... ", " . . . ......", " .. . ... ... ", " . . . ... ..", " ", ".. ... ... ... .", " .. ... ... ...", ". ", ". ..............", ". ..............", ". ............ .", ". ....... .. ...", ". ....... . ..", ". ..............", ". ..............", ". ..... ........", ". ..............", ". ", ". . . . . . . ", ". . . . . . ", " ", ".. ... ... ... ", " ... ... ... .. ", " ... ", ".......... .. ", ".......... ... ", ".......... . .. ", ".......... ... ", ".......... . .. ", ".......... ... ", ".......... . .. ", ".......... ... ", ".......... . .. ", " ... ", " . ", " ", " .. . ... ... ", " . . . ... ..", " .. . ... ... ", " . . . ... ..", " .. . ... ... ", " . . . ... ..", " .. . ... ... ", " . . . ... ..", " .. . ... ... ", " . . . ... ..", " .. . ... ... ", " . . . ... . ", " .. . ... .. ", " . . . ..... ", " .. . .. .. ", " . . ", ". .", ". ... ... . .", ". .. .. . . .", ". . . . . .", ". . ... . . .", ". .. . . . .", ". . . . . . .", ". .. . . . .", ". .. . . . . .", ". ... . . . .", ". .. . . . . .", ". ... . . . .", " .. . . . . .", " ... . . . .", " .. .. . . . .", " . ", "............ . ", "............ ", "............ . ", ".. ........ ", "............ . ", ".. ........ ", "............ . ", ".... .... ", "... .. ... . ", "... ....... ", "... ....... . ", "... ....... ", "... .. ... . ", ".... .... ", "............ . ", ".. ........ ", " .. . ", " . . . .......", " .. . .......", " . ... .......", " .. . . ..... .", " . .... .......", " .. . . .......", " . .... ", " .. . . .. . . .", " . .. .........", " .. . .. . . . .", " . ...........", " .. ", " . ... ... ... .", " ....... ... ...", " ", " ", ".............. ", ".............. ", ".............. ", ".... ...... .. ", ".......... ... ", ".............. ", " ", " . . . . . ... ", "............. ..", " . . . . ... . ", "........... ....", " ", ".. ... ... ... .", " ... ....... ...", " ", ". .. ....... . ", " .. .. . .. ", " ........ . ", ". ......... ", "............ . ", " ", ". . .. . . . .. ", "........... .. ", ". .. . . . . .. ", "......... ... ", ". . . . ... .. ", " ..... .. ... ", " . . . .. ", ".. ... ... . . ", " ... ... ... .. ", " ", " ", " . ... ... ... .", " ... ... ... ...", " . ... ... ... ", " ... ... ... .", " . ... ... . .", " ... . . .. . .", " . ... ... . .", " ... ... . . .", " . ... . . .", " ... .. . . . .", " . ... . . .", " ... . . . . . .", " . ... . .", " . . . . . . . .", " . ... . . .", " ", ".. ... ... ... .", " ... ... ... ...", " .", " . . . . . . . .", "............. ", "..... ...... ", ".... ... .... .", "... ... ..... .", "... ... .... .", "... .. ... .", ".... ...... .", "........ ..... ", "..... ....... .", "........... .. .", "............. .", " ", ".. ... ... ... ", " ... ... ... .. ", ".. ... ... ... ", " ... ... ... .. ", " .. ", ". . . . . . .. ", ".......... .. ", "........... .. ", ".......... .. ", "........... .. ", ".......... .. ", " .. ", ". ........ ... ", "...... .. .. .. ", ". ...... . ... ", " ... . . . . .", " . ... . . .", " . . . . . . .", " . ... . . . .", " ... . . . .", " . ... . . . .", " . . . . . .", " . ... . . . .", " ... . . . .", " . ... . . . .", " . . . . . .", " . ... . . . .", " ... . . . .", " . ... . . . .", " . . . . . .", " . ... . . . .", ".............. .", ".... ..... ", "... .. ..... ", "... ........ .", "... ......... .", "... ........ .", " .. .. ..... .", ".... ..... .", " ............. .", "............. .", " ... ......... .", "... ..... ... .", "........ ..... .", "............. .", ".............. .", "......... ... .", ".... .. ... .. ", " .. ", ". . . . . . .. ", ".......... .. ", " .......... .. ", ".......... .. ", ".. ........ .. ", ".......... .. ", ".... ...... .. ", ".......... .. ", "...... .... .. ", ".......... .. ", ".... .... .. ", "... . ... .. ", ". . . .... .. ", ". . ... .. ", " ... . . . .", " . ... . . . ", " . . . . . .", " . ... . . . ", " ... . . . ..", " . ... . . .. ", " ... . . ....", " . ... . .. . ", " ... . . ......", " . ... .. . . ", " . . . ...... .", " . ... ", " ... ... ... ...", " . ... ... ", " ... ... .......", " ", "........ ..... .", "............. .", ".............. .", " .", "............ ..", ". . . . . .. ...", "........... ....", ". . . . .. ", "......... . . .", " . .. .......", ".... .. .. ... .", " ", " ... ........ . ", " . ", "................", " ", "... ..... .. ", ".......... .. ", ".. ... .... .. ", ".......... .. ", "........... .. ", ".......... .. ", "........... .. ", " .. ", " . . . . . . .. ", "......... ... ", ".. ... . . . .. ", " .. ... ", "........ ... .. ", " ... ... ... ", "........ ... .. ", " ", ".......... ", " .....", " ... ... .....", " . . . .. ..", " ... . . .....", " .. . .. ..", " ... . . .....", " . . .. ..", " .. . . . .....", " . . . .....", " .. . . . ", " . . ......", " .. . . . .. .", " . .......", " .. . . .. ... ", " . . .......", " ..........", "..... ", "..... ... ...", ". .. . . . . .", " .. . . . . ", " .. . . .. ... ", ". .. . .. . ", "..... . .. . ", "..... . .. . . ", "..... . .. ", " . . . . ", ".... .. ", " . .. . . . . ", "...... ", " . . . . . . ", "...... ", "................", " ", " ... ... ... .. ", " ", " . ", " ........... ", " ........... . ", " ....... .. ", " ...... . .. . ", " ...... . .. ", " ....... .. . ", " ........... ", " ........... . ", " ........... ", " ... ....... . ", " .. ....... ", " .. . . ... ", " . . .. ...", " .. . . . ...", " . . . ...", " .. . . . ...", " . . . ...", " .. . . . . ...", " . . . ...", " .. . . . . ...", " . . . ...", " .. . . . . ...", " . . ...", " . . . . . ...", " . . . . .", " .. . . . . ...", " . . . .. ", " . . . ", "......... ", "......... . . . ", "... ..... ", ".... .... . . .", "......... ..", ". .... . . .", " .. ... ....", " ....... . . .", " ....... ..... ", " ....... . . .", " .. ... . ", ". .... . .", "......... . ", " . . .... .", ".. ...... . . ", " .. ........ . ", " ........... ", " . ", "............ . ", " . . . . . .. ", ".......... ... ", " . . . . .. .. ", ". ", " ............. ", ". ............. ", " ... . ", ". .. ..... . . ", " ...... . . . ", ". .. .. . ..... ", " ... .. .. .. ", " ........ .... ", " .. . . . . ...", " . . . ...", " . . . . . ...", " . . . ", " .. . . . . ....", " . . .. . ", " .. . . . ......", " . . ... . .", " .. . . ........", " . . .... ....", " .. . .. .. . ", " . ...........", " .. ", " . ... ... .. .", " ... ... ... ...", " ", "......... .", "......... .. . ", "......... . .", " . ", "........ . .", ".. .. . . . ", "...... .", ".. .. ..", ". ..............", ".......... .....", ". . . ..... ..", "..... ..........", " ", ".. ... ... ... .", " ... . . ... . .", " ", " .. .. ...... ", ". .... ........ ", " .. .......... ", ". .", " ............. ", ". ...... .... ", ".... .... . .. ", ".. .... .. .. ", ".......... . .. ", " ...... . ... ", ". . .... ... .. ", " ...... .. . . ", " . . . .. ", ".. ... ... . ", " ... ... ... .. ", " ", " ", " ...............", " . ... ... ... .", " . .. ", " ... . . . . .", " ... . . . . . ", " . . .. ", " ... .. . ", " ... .. . ... ", " ... .. . ... ", " . . .. . ... ", " ... .. . ... ", " ... .. . ... ", " . . .. . ... ", " . . .. . ... ", " ... .. . ", " ", "................", ".. ... ... ... .", " . ", " . . . .. .. .", " . ... .. .. .", " . . . . .. .. .", ". . . .........", " . . ...........", ". . ...........", " . . .... ...", ". . ... .. ..", " . . ... ......", ". . ... ......", " . . ... ......", ". . ... .. ..", " ", "............... ", ".. ... ... ... ", " . ..... ", ". .. .. ... .. ", ". .. .. ....... ", ". .. .. .. ... ", "....... ... .. ", "....... ... .. ", "....... ....... ", ".. . . .. ... ", ".. . . ....... ", "....... ... .. ", "....... ....... ", "....... .. ... ", ".... .. ", " ... .. ..... ", " ... .. ", " . . . ........", " ... .........", " ... ", " .... ", " . ... ... ... .", " ", " ...............", " ...............", " ...............", " ...............", " ...... ", " ....... .... . ", " . ... . ..... ", " ....... .......", " . . .... ...", ". . ...........", " . . ...........", ". . ...........", " . ...........", " .. ..... ", ".. ... ..... ...", " ..... ", "................", "................", "................", "................", " ", ". . . . . . . . ", " ", "... . ........", "... ....... .. ", ".. ....... .... ", ". .. ", ".... . ....... ", "... .. ... .. ", " ....... ", ". ... ... ... ", " ", "............... ", "............... ", "............... ", "............... ", " ...... ", ". .... ........ ", " ..... ... ... ", "...... ........ ", " ... ... .......", " ....... .......", " . ... .. ......", " .. ...... ", " .. ... ... ...", " ...............", " . ... .. ... .", " ... ...........", " ... ... . . ...", " ...............", " . .. ... ... .", " ..... .... ....", " ... ... ... ...", " ...............", " . ... ... ... .", " ", "... . ........", "................", ".... .. ......", " . ... ", " .... ... ...", ". .... ", " ..............", " ..............", " ..............", " ..............", " ..............", " ..............", " ", " ", ".. ... ... ... .", " ", "...... . ... .. ", "...... .... ... ", "..... ... ... ", " .......... ", " ... ... ... .. ", " .. ... ...... ", ". ... ... ... ", ". ... ........ ", ". .. ... .. .. ", ". ............. ", ". ... .. ... ", ". ............. ", " .. ... ... .. ", " .............. ", ".. ... ... ... ", " ", " ", " ...............", " . . . . . . . .", " .. . . . . . . ", " ... ... ... ...", " .. ..... .. .. ", " . . . . . .. .", " .. .... .. . ", " ... ... . ...", " .. ....... . ", " . . . ... .. ..", " .. ......... ..", " ... ... ... ..", " .. .. .. .. ..", " . . . . .. ..", " .. ...... .. ..", " ", "................", " . . . . . . . .", ". . . . . . . . ", " ... ... ", ". .... .......", " ... . .......", ". . .. .......", " ... .. ... . .", " . ... ", ".... ... . .", ".... . .......", ". .. .......", ". .. .. .......", ". .. .. ", ". ... . ........", " ", "............... ", " . . . . . . . ", ". . . . . . ... ", " .. ", "........... ... ", "........... . ", "........... ... ", " .......... .. ", " .......... ... ", " .......... . ", "........... ... ", "........... .. ", "........... ... ", " . . ", "......... . ... ", " ... ... .. ..", " .. .... .... ..", " . . . ... .. ..", " .. ......... ..", " ... ... ... ..", " .. ......... ..", " . . . .. ", " .. .... ", " ... .. . . . ", " .. .. .. ", " . . ... . . ", " .. . . . ", " ... .. . . ", " .. . ... ", " . . . . . . ", " .. . ... ", ". .. .........", ". ... ", ". ... ... ... .", ". ..............", ". .. ... ... ...", ". ...... ", " . .......", " . .. .", ". . . . . .. ", " . . ....", ". . . . . ....", " . . ....", ". . . . . .. ", " . .. .", ". . . . .......", " . .......", "........ ... .. ", " ... ... ", ".. ... ... . . ", "........... ... ", " ... ... ... .. ", " ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "...... ", "...... ... . ", "...... .. .. ", " ... . . . . ", " .. . .. ", " . . ... . . ", " .. . . . ", " ... ... . . ", " .. . . . ", " . . ... ", " .. . . . ", " ... .. .......", " .. . . .. .. ..", " . . ........ ", " .. . ", " ... . . . . . .", " .... . . . . . ", " . ... ... ... .", " ", ". . . . .......", " . .......", ". . . . .......", " . .......", ". . . . .......", " . .. ... ", " . .. ... ", " . .. ... ", "..... .. ", " ... ...........", "... .. ... ... .", " .............", " . . . . . . . .", ". . . . . . . . ", ".. ... ... ... .", " ", "...... ... .. ", "...... .. ", "...... . . ", "...... .... ... ", "...... . ... .. ", "... .. .... ... ", "... .. ... . . ", "... .. .... ... ", " . ... .. ", "........... ... ", ".. ... ... . . ", "........... ... ", " . . . . . . .. ", ". . . . . . ... ", ".. ... ... ... ", " ", " ", " ...............", " . ... ... ... .", " ...............", " ... ... ... ...", " ...... ", " . ... . . . .", " .... . ........", " ... . . . . .", " .. . . ........", " . . . . . .", " .. . . ........", " .. . . . . .", " .. . . ........", " . . . . . .", " .. . . ........", " ", "................", ".. ... ... ... .", "........ ", " ... .. ", " . .......", " . . . .......", ".... . .......", " . . . .......", ".. . . .......", " . . . ...... ", ". . . . ...... ", " . . . ...... ", ". . . . ...... ", " . . . ...... ", ". . . . .......", " ", "............... ", ".. ... ... ... ", " ... ", " .. ", ".......... ... ", ".......... .. ", ".......... ... ", ".......... .. ", " ...... ... ", " .. ..... .. ", " ......... ... ", " ......... .. ", " ......... ... ", " .. ..... .. ", " ...... ... ", " .. . . . . .", " .. . . ........", " . . . . . .", " .. . . ........", " .. . . . . .", " .. . . ........", " . . . . . .", " .. . . ........", " .. . . . . .", " .. . . ........", " . . . . . .", " .. . . ........", " .. . . . . .", " .. . . ........", " . . . . . .", " .. . . ........", " . . . .......", ". . . . .......", " . . . .......", ". . . . .......", " . . . .......", ". . . . ", " . . .. .....", ". . . .........", " . .. . . ...", ". . ...........", " .. . . ... .", ". .............", " .. . . . . . .", ". ............. ", " ... .. .. .. .", ". .. .. .. .. . ", ".......... .. ", ".......... ... ", ".......... .. ", ".......... ... ", ".......... .. ", " ... ", "...... ... ... ", "......... . ... ", " . . ... . . .. ", "....... . . ... ", " . ... . ... ", "..... ... . ... ", " . . . .. ", " ........ . ... ", " . . . . ... ", " ........ . ... ", " .. . . . . .", " .. . . ........", " . . . . . .", " .. . . ........", " .. . . . . .", " .. . . ........", " . . ", " .. . .........", " .. .. . .. . ", " .. .. . .. . .", " . .", " ...............", " . . . . . . . .", " . . . . . . . ", " ...............", " ", " . .", ". . ... . .. . ", " . . ... . . .", ". . ... . .. . ", " .. . ... . . .", ". . ... . .. . ", " . . ... . . .", " .. ... . .. . ", " ... . ... . . .", "... ... . .. ..", ".. . . ... . ", "... ... . ......", " . . . . . . . .", ". . . . . . . . ", "................", " ", " . . . . . .. ", " ........ . ... ", " . . . . ... ", " ........ . ... ", " . . . . . .. ", " ........ . ... ", " ... ", "........ .. ... ", ". . . . .. . .. ", " . . . .... ... ", " .... ... ", "........... ... ", " . . . . . . . ", ". . . . . . . . ", ".......... .... ", " ", "................", "................", " ", " ...............", " .. .. . . ...", " ... .......... ", " . ... ... ... ", " ............ ", " ... ... ... .", " .......... . ", " . ... ... . ", " ........ . ", " ... ... . .", " ...... . . ", " . ... . . ", " ..... . . ", ".... ", "... ", " . ............", ". ............", " ... ... ...", " . ............", " . ............", ". ............", " ... ... ...", " . ............", " . ............", ". ............", " ... ... .. ", " . ........... ", " . ........... ", ". ........... ", " ", " ", ".............. ", ".............. ", " ... ... ... . ", ".............. ", ".............. ", ".............. ", " ... ... ... . ", ".............. ", ".............. ", " .......... ", " .. ... ... . ", " ............. ", " ............. ", " ............. ", " ... .. . .", " ...... . . ", " . ... . . ", " .. ... . . ", " . .. . .", " . ... . . ", " . ... . . ", " ...... . . ", " ... .. . .", " ...... . . ", " . ... . . ", " ...... . . ", " . . .. . .", " ...... . . ", " . ... . . ", " ...... . . ", " ... ... .. ", " . ............", " . ............", ". ............", " ... ... ...", " . ............", " . ............", ". ............", " ... ... ...", " . ............", " . ............", ". ", " ... ... ... ", " . . . . . . .", " ... ... ... ..", " . . . . . . ...", " .. ... ... . ", " .......... ", ".............. ", ".............. ", " ... ... ... . ", ".............. ", ".............. ", ".............. ", " ... ... ... . ", ".............. ", ".............. ", " ", "... ... ... .. .", ".. . . . . . ..", ". ... ... .. ...", " . . ... . . ..", " ... .. . ", " ...... . .", " . ... . ..", " ...... . . .", " ... .. ... ", " ... .. . . ", " . ... ... . ", " ...... . ", " ... ... ... . ", " .. ....... . .", " . . ... . . ", " . ....... ", " . ... ... ...", " ...............", " . ... ... ... .", " ", "... ... ... ... ", " . . . ... ... .", ". ... ... ... ..", " . . . . ... . .", " ... ... ... ", "... . . . . .", ". . . . ... ..", "... ", " ..... ...", ".. . ... ..... .", ". . ... . ... .", " ... ... ...... ", " ... ... ... ...", "... ..... ......", ".. ....... ... .", " ", "... ... .. . ..", ".. . . .. ... ..", ". ... .. . .. ..", " . . . ..... ..", "... .. . ... ..", " . . ....... ..", ". .. . ... .. ..", " ......... ..", " ... ... ... ..", " . . . . .... ..", ".. ... ... ..", ". . . . .. .. ..", " ... ... . .. ..", ".......... .. ..", ".. ... ... .. ..", " ..", "........ ", "....... .......", " . . . ... .", " .... . .......", " ... . . .......", " .. . . . ... .", " .. . . ...... ", " .. . . . ", " .. . .. .. . ", " .. . .. .. . ", " .. .. .. . . ", " .. .. .. ", " .. . . . . ", " ....... . . ", " ...... . . . . ", " ..... ", " .... ", " ... ", " . ..........", " . ..........", ". . . ..........", " . ..........", ". . . ..........", " ..........", ". . . ..........", " . ..........", ". . . ......... ", " ......... ", ". . . ......... ", " . ......... ", ". . . ......... ", " ..........", " ", " ", ".............. ", ".............. ", ".............. ", ".............. ", ".............. ", ".............. ", ".............. ", " .......... ", " .. ......... ", " ............. ", " ............. ", " ............. ", " .. ......... ", " .......... ", " .... . . . . . ", " ... . . . ", " ... . . . . . ", " . . ", " ... . . . . . ", " ... . . ", " . . . . . . . ", " . . ", " ... . . . . . ", " ... . . . ", " ... . . . . . ", " ... ", " . . . . . . . ", " ... . . ", " ... . . . . . ", " ... ", ". . . ..........", " . ..........", ". . . ..........", " ..........", ". . . ..........", " . ..........", ". . . ..........", " ..........", ". . . ", " . ... ... ..", ". . . . . . . .", " ... . . ... ", ". . . . . . . .", " ... ... ... ..", " . . . . . . . .", "... . . ... . . ", ".............. ", ".............. ", ".............. ", ".............. ", ".............. ", ".............. ", ".............. ", ".............. ", " ", ". ... ... ... .", " . . . . . . ..", ". . ... . . ...", " . . . . . . ..", ". ... ... .. ..", " . . . . ... ..", "... . . .... ..", " ... . . . . .", " ... . . ..", " ... . . . . .", " . . ... ", " ... . . . . .", " ... . ... ..", " . . . . . . .", " ... ... . . ", " ... . . . . .", " ... ", " . ....... .. ..", " ...............", " ...............", " ...............", " . ... ... ... .", " ", " . . . . . . . .", ". ... ... ... ..", " . . . . . . . .", ". . ... . . ... ", " . . . . . . . .", ". ... ... ... ..", " . . . . . . . .", "... . ... . . ", " . . . . . . ", " .", ".. .. .... .. ..", "................", "................", "................", ".. ... ... ... .", " ", " . . . ..... ..", ". ... . .... ..", " . . .. .... ..", ". . ... .... ..", " . .... ..", ". . . ..... ..", " .. .. ..", " .... .. .. . ..", ".... .. .. .. ..", "............. ..", ".. .. ....... ..", ".. .. ....... ..", "........ ... ..", "............. ..", ".. ... ... .. ..", " ..", " ", " ...............", " ............. ", " ... .", " .. ........ .", " . . . . . . .", " . . ....... .", " . . . . . . .", " . . ........ .", " . . . . . . .", " . . .... ... .", " . . . . . . .", " . . ........ ", " . . ", " . ... ...... ", " . ", " ", "................", " ..........", "..... ", "..... ...... ..", "..... . . . ...", "..... ...... ...", "..... . . . ...", "..... ...... ...", "..... . . . ...", "..... ... .. ...", "..... . . . . ", " ....... ..", " ", " ...... ...... ", " ", " ", "............... ", "............... ", " .. ", " . ....... .. ", " . . . . . . .. ", " . ...... .. ", " . . . . . . .. ", " . ....... .. ", " . . . . . . .. ", " . .... .. .. ", ". . . . . . .. ", "... ....... .. ", " .. ", " .... ... ... ", " .... ", " ... . . ..... .", " . . .", " . ... ... ... ", " . . ... ... ...", " . .. ... ... ..", " . .............", " . .............", " . ... ... .... ", " . .. ... ... . ", " . . ... ... .. ", " . ............ ", " . ............ ", " . ... ........", " . . ... .......", " . .. ... ......", " . ....", " ..... . ..... .", " . .", "... ... ... ....", " ... ... ... ...", ". ... ... ... ..", "................", " ............", " .. . ...... ..", " ............. .", " .............. ", " ......... ....", " .. ..... . ..", " ...... .. .", "............. ", "..... ........ ", ".. .. .... . ", " .. ... .. ", "....... ....... ", " ........ ", " .............. ", " ... ... ... .. ", " ... ... ", " .. ...... ... ", " .. . . ... ", " .. . .. . .. ", " .. . .. . ... ", " .. . .. . ... ", " . . .. . ... ", "... . . .. ", " ...... ... ", " .. ...... ... ", " .. ... ", " ... ... ... ...", " .......... ....", " ......... .....", " ......", " ...............", " ..... ...... ", " ..... ..... .", " ..", " ... ... ... .. ", " .... ....", " ... ..... .... ", " .. ..... ......", " . ... ...", " . .... ........", " ...............", " ", ".. . . ...... .", ".. .. ........ ", ".. .. ..........", ". ... .. .... ..", " ... . ...... .", "..... ...... ", "..... ........", "..... . .... ..", " .. . ...... .", " . .. ........ ", ". ... ", " . .............", " ... ... ... ...", "................", "................", " ", " .. . .. ", " .............. ", " ... ...... ", " .. ... ...... ", " .. ... ... .. ", " .. ... ...... ", " . ... ...... ", "... ... ...... ", " ... .. ", " .. ....... ", " .............. ", "............... ", " ... ... ... .. ", "............... ", "............... ", " ", " ", " ...............", " ...............", " ........ ..", " ...... . ", " ..... . . . ", " .... . . . . ", " .... . . ", " ... . . ... ", " ... . . ... ", " .. . ... . ", " .. . ... ... ", " .. ... ... .. ", " .. . ... ... ", " .. . .. ... ...", " ... . ... ... .", " ", "................", "................", "................", "................", " ", " ... . ..... . ", " . . . . . . .", " .............", " . . . . . . .", " ..... . ....", " . . . . . . .", " .............", " . . . . . . .", " ... . ..... . ", " . . . . . . . .", " ", "............... ", "............... ", "............... ", "............... ", " .. ", "..... ...... .. ", " . . . . . . .. ", "............ .. ", " ... .. . .. ", ". . .. ... .. ", " .. ..... . .. ", "... ....... .. ", " .. ..... . .. ", "... .. ... .. ", " ... .. . .. ", " ... .. ... . ", " .... ... .", " . ... ..... ..", " . .... ", " ...............", " ", " ...............", " ...............", " ...............", " ...............", " ...............", " ", " ..... . .......", " .... . ........", " . . . .. .. ", " .. . . .. ....", " ", ".. .... ..... ", ". .. .... . .", " ..", "............. ..", " .... .", "......... ... .", ".......... .. ..", "...... ", "...... ....... ", "...... ....... .", " .. ....... .", ".... . ....... .", ".... . ....... .", ".... . .", " ... .. ... . . ", " ........... .. ", " . . . . . . .. ", " ....... .. .. ", " . . . . . . .. ", " ........... .. ", " . . . . . . .. ", " .... ...... .. ", " . . . . . . .. ", " ........... .. ", " . . . . . . .. ", " ....... .. .. ", " . . . . . . .. ", " ........... .. ", " . . . . . . .. ", " .... ...... .. ", " . . . . . . .. ", " ... . .. . . ", " .. . ... ... .", " ........ .. . ", " ........ .... ", " ......... ....", " ...... .. ", " ........... .", " ... ...........", " ............. .", " ........ ... . ", " ............. .", " ...... ..... . ", " ... ......... .", " ...............", " ...............", " ", ". .. ...... . . ", ". .. ... . . . ", ". .. ... . . ..", ". .. ... . . .", " ... ...... . .", ".... ...... . .", ".... ...... . . ", ". .. ...... . . ", " ... ...... . . ", ".... ...... . . ", " ... ...... . .", ".... ...... . ", " ... ...... ....", ".... ...... ....", ".... ...... ....", " ", " ........... .. ", " . . . . . . .. ", " ....... .. .. ", " . . . . . . .. ", " ........... .. ", " . . . . . . .. ", " .... ...... .. ", " . . . . . . .. ", " .. ", "........... ... ", ".......... .... ", " . . . ", "............ .. ", "........... . . ", "............... ", " ", " ", " ...............", " .............. ", " ............. ", " ... ... ... . ", " ........... . ", " .......... ... ", " ......... . . ", " ... ... ..... ", " ....... . . . ", " ...... ....... ", " ..... . . . . ", " ... ......... ", " ... . . . . . ", " .. ........... ", " .. . . . . . . ", " ", "................", " .....", " .....", "......... . ...", "......... .....", "......... .... ", "......... ... ", "......... . ..", "......... . . ", "......... ....", "... .. . . ", ".. .. . .....", ".. ..... . . ", ".. ..... .....", ".. ..... . . ", " ", "............... ", "... ", ".. ", " . ......... ", " . ......... ", "... ......... ", ". . ......... ", "... ......... ", ". . ......... ", "... ......... ", ". . ......... ", "... ......... ", ". . ......... ", "... ......... ", ". . ......... ", " .. ........... ", " .. . . . . . . ", " .. ........... ", " .. . . . . . . ", " .. ........... ", " .. . . . . . . ", " .. ........... ", " .. . . . . . . ", " .. ........... ", " .. . . . . . . ", " .. ........... ", " .. . . . . . . ", " .. ........... ", " .. . . . . . .", " .. ......... ..", " .. . . . . ...", ".. .. . .....", "... .. . . ", "......... .....", "......... . . ", "......... .....", "......... . . ", "......... .....", "......... . . ", "......... .....", "......... . . ", "......... .....", "......... . . ", " .....", "......... . . . ", " . . ... .. ....", "....... ... . . ", "... ......... ", ". . ......... ", "... ......... ", ". . ......... ", "... ......... ", ". . ......... ", "... ......... ", ". . ......... ", "... ......... ", ". . ......... ", "... ......... ", ". . ......... ", "... ", ". .......... . ", ". .. . . ... .. ", " .......... ... ", " .. ....... .. .", " .. . . . .....", " .. ..... .. . .", " .. . . .......", " .. ... ", " .. . . ........", " .. ... ........", " .. . . ........", " .. ... ", " .. . .........", " .. . ......... ", " .. ......... .", " .. ..", " ...............", " ...............", " ", " . ... .... ... ", "..... ..... . .", " ... ...... . ..", "... ....... ...", " ", ".... . . .....", "... . ... ....", ".. . ..... ...", " . ....... ", " ..... ..... ...", "....... ... ....", "........ . .....", " ... ... ", "................", "................", " ", ".. . . ... . .. ", "......... ..... ", " . . ... ...... ", "....... ....... ", " . ... .. ", "...... ........ ", "...... ........ ", "...... ........ ", " . ... .. ", "..... ......... ", ".... .......... ", "... ........... ", " . ... ... .. ", "............... ", "............... ", " ", "................", "................", " ", " ...............", " ...............", " ...............", " ...............", " ...... ", " ..... . . . .", " .... . ........", " ... .. . . . .", " .. ... ........", " .. ... . . . ", " .. . . ...... ", " .. ... . . ", " .. ... ..... ", "........... ", ".......... ", " . ....", "........ ....", "....... ....", "...... . ....", "..... . ....", " . . ....", " . . ....", ".. . . ....", " . . ....", " . . ....", " . . ....", " . . . ....", " . . . ....", ". . . ....", " .", " .", "............. .", "............. .", "............. .", "............. .", "............. .", ".. ....... .", ". .. ...... .", ". .......... .", ". .......... .", ". .......... .", ". .. ...... .", ".. ....... .", "............. .", "............. .", " .. . . . . .", " .. ... ..... . ", " .. ... . . ", " .. . ..... ", " .. .. . . .", " .. ... ..... . ", " .. ... . . ", " .. . . ..... ", " .. ... . . .", " .. ... ..... . ", " .. ... . . ", " .. . . ..... ", " .. ... . . .", " .. . . ..... . ", " .. ... . . ", " .. ... ..... ", " . . ....", " . . . ....", " . . . ", ". . . ", " . . .. ", " . . .. .", " . . ... ..", ". . .. .. ", " . .. .. ", " . ... ... .", " . .. .. ..", ". .. .. .. ", " ... ... ... ", " .. .. .. .", " .. .. .. ..", " ... ... ... ...", "............. .", "............. .", " .", " ..", ".. .. .. . .", ". .. .. .. .", ". ... ... . . .", " .. .. .. . .", ".. .. . . . .", ".. ... .... . .", " .. . . . . .", " .. ...... . .", "... . . . . . .", ". ........ . .", " . . . . . . .", " .......... . .", " .. ... . . ", " .. . . ........", " .. ... . . . .", " .. ... ........", " .. ... . . . .", " .. . . ........", " .. .. . . . .", " .. ... ", " .. .. .........", " .. . .. .... ", " .. ...........", " .. ", " ...............", " ...............", " ...............", " ", " ", "................", " . . . . . . . .", "................", " . . . . . . . .", "................", " . . . . . . . .", " ", "................", "...... ..... ..", ".. ............", " ", "................", "................", "................", " ", " . . . . . . . .", "............ . .", " . . . . . . . .", "............ . .", " . . . . . . . .", "............ . .", " . . . . . . . .", " . .", "........... .. .", " .... ... ... .", "......... .... .", " ..... .", ".............. .", ".............. .", ".............. .", " .", "................", "................", "................", " ", " ....... ... ...", " .. ... ", " .. ............", " .. . ... . ....", " .. . ... . ... ", " ........... .", " ............ .", " .... . . .. .. ", " .... . . . . .", " ...... .. ..", " .. ..... . . .", " .. .... .. ... ", "....... ", "...... ", "..... ........", " .. ........", "... . ........", " . .. . .. .....", ". . . ........", " .. ... ........", " . . . ........", ". ..... ........", " . . . ........", "... ... ........", " . . . ........", "..... . ........", " . . . ........", "... ... ........", " ", " ", ".............. ", ".............. ", ".............. ", ".............. ", ".............. ", ".............. ", ".............. ", ".............. ", ".............. ", ". ......... ", " .. ........ ", " ............ ", " ............ ", " ............ ", " .. ... . . . .", " .. . .. ......", " .... . . . . .", " .... . ... ... ", " .... . . . .", " .... ...... ..", " .... . . . . .", " .... . ... ... ", " .... . . . . .", " .... ... ......", " .... . . . . .", " .... . ... ... ", " .... . . . . .", " .... ....... ..", " .... . . . . .", " .... . ... ... ", " . . . ........", ". ..... ........", " . . . ........", "... ... ........", " . . . ........", "..... . ........", " . . . ........", "... ... .. .....", " . . . ....... ", ". ..... ", " . . . ... ... .", "... . ..........", " . . ... ... ...", "... ............", " . ... ... ... .", ". ..............", " .. ........ ", ". ......... ", ".............. ", ".............. ", ".............. ", ".. .......... ", ". . ......... ", " ........ .... ", ".............. ", " ", ".. ... ... ... .", "............. ..", " ... ... ... ...", "........... ...", ".. ... ... . ...", "......... .. ...", " .... . . . . .", " .... ... ..... ", " .... . . . . .", " .... . ... . ..", " .... . . ...", " .... .... ....", " .... . . ... .", " .... . . ......", " .... . ... ...", " .... . ........", " . .. ... . . .", " .... ", " ....... ... ...", " .. ............", " ...............", " ", " ... ... ... ...", "................", ".. ... ... ... .", "................", " ... ... ... ...", "................", ".. ... ... ... .", "................", " ....... ... ...", "... .......... ", ".. .. ... ... .", " ", "................", "................", "................", " ", " ... ... ... ...", "....... . .. ...", ".. ... .. .. ...", "..... ... .. ...", " ... .. . .. ...", "... ..... .. ...", ".. .. . . .. ...", ". ....... .. ...", " .. ...", "........ ... ...", ". . . . .... ...", " .... ...", "............ ...", "........ . . ...", "............ ...", " ...", " ", " ...............", " . .............", " ...............", " ...............", " ...............", " .............. ", " ...............", " .. ", " . . . . . . ", " . ..... ..... ", " . . . . . . ", " . ........... ", " . . . . . . ", " . . ....... . ", " . ", " ", "................", "..... ", ".... . . . . .", ".... ..........", ".... . . . . .", ".... ....... ..", ".... . . . . .", ".... ", ".... ... ... ", ".... ", " ...........", "................", "................", "..... . . . ", "..... .........", " ", "............... ", " ... ", " . . . . . . . ", "........... ... ", " . . . . . ... ", "..... ..... ... ", " . . . . . . ", " . . ", " ... ... .. . ", " ... . ", "............. . ", "............. . ", "............. . ", ". . . . . . ", ". . . . . . ", " . ..", " . .............", " . .............", " . ", " . .. ... . ", " . . . . ...", " . .. ... . ", " . ....", " . ... . .......", " . .. . ........", " . . . .........", " . ........", " ....... ...... ", " ...... ", " ...............", " ...............", "..... ... ..", "......... .. .", "..... .. .....", " ........ .....", " ........ .....", "..... .. .. .", " .... ... ..", "................", "..... . . . ", "................", "................", " ", "................", " ", "................", "................", ". . . . . . ", "............. . ", ". . . . . . ", "............. . ", "............. . ", ". . . . . . ", ". . . . . . ", "............. . ", ". . . . . . ", "............. . ", "............. . ", " . ", "............... ", " .. ", "............. . ", ".............. ", " ...............", " ...............", " ", " ...............", " ...............", " ...............", " . .............", " ...............", " ...............", " ...............", " ...............", " ... ...........", " ...............", " ...............", " ...............", " ", "................", "................", " ", "................", "......... ", "........ . . .", "........ . . . ", "........ . . .", "........ . . . ", "........ ", "........ ", "................", "................", "................", "................", " ", "............... ", "............... ", " .. ", "............. . ", " ........ ", " . . ......... ", ". . . ......... ", " . . ......... ", ". . . ......... ", " ......... ", " ........... ", "..... ......... ", "............... ", "............... ", "........... ... ", " ", "............ ", " . . .", " ......... . ...", " ........ .. . .", " ....... ... ...", " ...... .. . . .", " ...... . . ...", " ...... . .. . .", " ...... .. . ...", " ..... . . ...", " ...... . .. .. ", " ...... .. . . ", " . .... . . . ", " ...... . .. . ", " ...... .. . . ", " ...... . . . ", " ", " . . . . . . .. ", "............. ", " . . . . .. .. ", "......... .... ", " . . .. ...... ", "...... ........ ", " . . ......... ", "..... ......... ", "..... ......... ", " .. ......... ", ".. . ......... ", "..... ......... ", "..... ......... ", "..... ......... ", ".. . ......... ", " ...", ".. . . . . . ", " ........... .. ", ". .. . . . . .. ", ". ......... .. ", " . . . . . .. ", ". . ........ .. ", " . . . . . .. ", ". . ........ .. ", " . . . . . .. ", ". . ........ .. ", " . . . . . .. ", ". . ........ .. ", " . . . . . .. ", ". . ........ .. ", " . . . . . .. ", " .... . . .. .. ", " ...... .. . ...", " ...... . . ...", " ...... . .. . .", " .. ... .. . ...", " ...... . . . .", " ...... . .. ", " ...... ... . .", " ...... .. . ..", " ...... . . . .", " ...... . ....", " ...... ", " ...............", " .. .... ......", " ....... . .....", " .... . . . ....", " .. ......... ", "..... ......... ", "..... ....... ", " . . ..... . .", "..... .. .. . ", " . . ..... .", " ", ".... . . .. ...", "... . . ....", ".. . .... ", ". . .. .", " ", " . ", " . ............ ", " . .", " ............ .", " . ........ .. ", " . . . . . .. ", " . ........ .. ", " . . . . .. ", ". ........ .. ", ".. .. . . . .. ", " . ", ". . ... . ... ", " . ... . .... ", ". ... . ..... ", " ... . ...... ", " ....... ", " .............. ", ".. ........... ", ".. . . .... ... ", ". . . ......... ", " . . ... . . ...", " . . ... . ....", " . . . .. .....", " .. . . ....... ", " .. . ...... .", " ............ ..", " ........... ...", " .. ... .... ...", " ... . . . . ...", " .. . . . .. . .", " ... . . . . . .", " .. . . ... . .", " .. . ..... ...", " ........... ...", " ........... ...", " ", " ..", " ............ ..", " .", "....... ..... ", "...... ... .....", "..... ..... ....", "..... ..... ....", "..... ..... ....", "..... ... .....", "...... ......", "................", "................", "................", "................", "................", " ", ". . . ........ ", ". . . ........ ", "... ......... ", "..... . . ..... ", " ..... . ...... ", ". ... . . ..... ", ".. .. . .... .. ", ".. ............ ", ".. ... . ..... ", " . .... . ..... ", " . ... . . .... ", " . .... . .... ", ".. .......... . ", ".. ............ ", ".. ............ ", " ", " ", " ...............", " ........... ", " ... . .... . .", " .. . .... ....", " . . . .. ....", " .. . .. . ....", " . . .. . ....", " ..... . . ....", " .... . . ....", " ... . . . ....", " .. . . . ....", " .. . . . ....", " .. . . . ....", " .. . . ....", " .. . . . ....", " ", "................", " ....", " . . . . . ....", "........... ", ".......... . .", "........... ....", ".......... ....", "........... ....", ".......... ....", "........... ....", "...... . . ", "....... . . ", "...... . ...", "....... . . . ", "...... . . . .", " ", "............... ", "............... ", "............... ", " .. ", " . . . . . . .. ", "........... .. ", "............ .. ", "........... .. ", "............ .. ", "........... .. ", " .. ", ". . . . . . ... ", " . ... . . .... ", ". . . . . ..... ", " . . . . ...... ", " .. . . ....", " .. . . . ....", " .. . . ... ", " .. . . . ... ", " .. . . . ... ", " .. . . . ... ", " .. . . . ... ", " .. . . . ....", " .. . . . ....", " .. . . . ....", " .. . . ....", " .. . . . ....", " .. . . ....", " .. . . . ....", " .. . . ....", " .. . . . ....", "....... ", " .. . . .", " .. .. .......", " ..... ... ...", " ...... .......", " ..... . ... .", " .. .. .......", " .. ... ...", "....... .......", "...... . ... .", "....... .......", "...... ... ...", "....... .......", "...... ", "....... . . . ", "...... . . . .", " .... ", " . . . . . .... ", "......... .... ", " ... ... . .... ", "......... .... ", ".. ... ... .... ", "......... .... ", " ... ... . .... ", "......... ", ".. ... ... .... ", "......... .... ", " ... ... . ", "......... .... ", " .... ", ". . . . . ..... ", " . . . . ...... ", " .. . . . ....", " .. . . . ....", " .. . . . ....", " .. . . . ....", " .. . . . ", " .. . . ......", " .. . . ", " .. . ........", " .. . ", " .. ..........", " .. ", " .. ...........", " .. ", " ...............", " ...............", " ", "....... ", "...... ", "....... . . . . ", "...... ........", " ........", "...... .........", " ..........", ".... ...........", " ", ".. .............", " ", " ........... ", " ", "........... ... ", "........... ... ", " ", " .... .. ", " ... . . ", ". . . . .. . .. ", "...... ... . . ", "....... .... .. ", "...... ....... ", "....... ....... ", "...... .. .... ", " ........ ", "..... ......... ", " ..... . .. ", ".. ..... . ... ", " ....... . .. ", "......... . ... ", "............... ", " ", " ", " ...............", " ...............", " ...... ........", " ...............", " .... ", " ... . . . . . ", " .. . . . . .", " .. . . . . . . ", " .. . . . . ", " .. . .", " .. ..... . .", " .. . . .", " ....... . . . .", " ....... . . . .", " ....... . . . .", " ", "................", "............ ", " ......... ...", "........ . . .", " . . ...", ". . . . . . .", " . . . . . ...", " . . . . . . .", " . . . . . . ...", " . . . . . . . .", " . . . . . . ...", " . . . . . . . .", " . . . . . . ...", " . . . . . . . .", " . . . . . . ...", " ", "............... ", " ... ", "........... ... ", " . . . . . ... ", "........... ... ", " . . . . . ... ", "........... ... ", "........ . ... ", ".. ..... ... ", ". .. . . ... ", ". ........ ... ", ". ..... . ... ", ". ........ ... ", ". .. . . ... ", ".. ..... ... ", " ....... . . . .", " ... ... . . . .", " ....... . . . .", " ....... . . . .", " ....... . . . .", " ....... . . . .", " ....... . . . .", " ....... . . . .", " ....... . . . .", " ....... . . . .", " ....... . . . .", " ... ... . . . .", " ....... . . . .", " ....... ", " ...... .......", " ..... . . . .", " . . . . . . . .", " . . . . . . ...", " . . . . . . . .", " . . . . . . ...", " . . . . . . . .", " . . . . . . ...", " . . . . . . . .", " . . . . . . ", " . . . . . ", " . . . . . ....", " . . . . . ", " . . . . . .....", " . . . . ", " . . ......", ".... . . ", " . . . . .......", "........ . ... ", "........... ... ", " . . . . . ... ", "........... ... ", " . . . . . ... ", "........... ... ", " . . . . . ... ", " ... ", " .... ", "......... .... ", " .... ", "......... ..... ", " ..... ", "......... ..... ", " ... .. ", "........ ... .. ", " .... .......", " ... . . . . .", " ... .......", " ... . . . . .", " ... .......", " ... . . . . .", " ... .......", " ... . . . . .", " ... ", " ... . ........", " ... ... .....", " ... ..........", " ... ", " ...............", " ...............", " ", ".... . ", " . . . ........", ".... . ", " . . . .........", ".... ", " . . ..........", ".... ", " . . ...........", " ", "................", ".. ....... .....", "................", " ", "................", "................", " ", " ...... ", "....... ....... ", " ....... ", "....... ....... ", " ........ ", "...... ... .... ", " ........ ", "..... ......... ", " .. ...... ", ".... .......... ", ".. ........... ", ".. ............ ", " .......... .. ", "......... ..... ", "............... ", " ", "................", "................", "...... ", " . .........", " ... . . . . .", " .. . .........", " . . . . .", " . ... . . .", " . . . . .", " . .........", " . . . . . .", " . ... .....", " . . . . . . .", " . . ........ ", " . . . . . . ", " . ...... ", ".............. ", "............ ..", " ....", "......... ......", " . . . . ... ...", "....... ........", " . . . ...... .", "..... .........", " . . . ... ...", "... ..........", " . .... .....", ". ..........", " .. ... ...", " ..........", " .........", " ..........", " ..........", "..... ........", ".. .... ......", "......... .....", " ... ... .. ....", "............ ...", "...... ...... ..", "............. ..", "........ ... . .", ". ......... .", " .. .... .... ", " ............. ", " ...... ... .. ", " ............. ", " .. ........ ", ". .......... ", " . . . . . ", " . .... ", " . . . . ", " . .. ", " . . . ", " . . ", " . . ", " . .", " . . ", " . . ", " . . .", " . . . ", " . . . ", " . . . .", " . . . ", " . . . .", " .. ... ...", " . .........", " . .. .....", " . . ........", " . . ... ...", " . . . ......", " . . . .... .", " . . . . .....", " . . . . ...", ". . . . . . .", " . . . . . . ", " . . . . . . ", ". . . . . . ", " . . . . . ", ". . . . ", " . . . . ", "........ ... .. ", "............... ", ".. ....... ... .", ".............. .", " ... ... ... ..", "............. ..", "...... .... ...", "........... . ..", " ... ... . ..", "........ . ..", " . . ..", " ... . ..", " . . . ..", " ..... . ..", " . . . . ..", " ....... . ..", " . . . . . ", " . . . . . .", " . . . . . . ", " . . . . . .", " .. . . . . . ", " .. . . . . . ", " .. . . . . .", " ... . . . . ", " . .. . . . ", " ..... . . .", " . ... . . ", " . ... . . ", " . .... . ", " . .. ..... ", " ...............", " ", ". . . . ", " . . . ", ". . ", " . . ", " . . .", ". . .", " . . .", " . .. ", ". .. .", " . . ", " . . .", " .. ", " ..........", " ...... .....", "................", " ", " . . . . ..", " ......... . ..", " . . . . . ..", "........... . ..", " . . . . . . ..", "........... . ..", " . . . . . . ..", " . ..", " . . . . . .. ..", ". . . . . ... ..", " . . . . .... ..", " ... . ..", ".......... .. ..", " ............ ..", "............. ..", " ..", " ", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", " ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", "................", "...... ......", "....... .......", "....... .......", "....... .......", "....... .......", "....... .......", "....... .......", "....... .......", "....... .......", "....... .......", "...... ......", "................", "................", "................", "................", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ...............", " ", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", " ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", " ", " ", " ...............", " .......... ..", " ........... ...", " .... ... ..", " ... .......", " ..... .........", " .... .........", " ... . .........", " .. . ...... ...", " ... ...... ....", " .. ............", " ...............", " ...............", " ...............", " .......... ... ", " ", "................", "................", "................", "................", "................", "... .........", ".. .... ........", ". .... ........", ". .... ....... ", ". .... ...... .", ". ....... .", ".. ...... ...", ".......... ... .", "............ ...", ".............. .", " ", "............... ", "............... ", "............... ", "............... ", "....... ....... ", "...... ........ ", ". .... .. . ... ", ".... ... ...... ", ".. ... ... .... ", " ... ... ...... ", ".. ... ... .... ", " ... ... ... .. ", ".. ... ... .... ", " ... ... ... .. ", ".. ... ... .... ", " ...............", " ...............", " ...............", " ............. .", " ... ... ... ...", " . ... ... ... .", " ... ... ... ...", " . ... ... ... .", " ... ... ... ...", " ......... .....", " ...............", " ...............", " ...............", " ............ ", " .......... ..", " ......... ....", "...... .. ...", "....... .......", "....... .......", ".. .... .......", " ...... .......", ".. .... .......", " ...... .......", ".. ... ......", " ...............", "................", ".............. ", "............. .", "............. .", " .", ".... ........ ", "... ....... ..", " ... ... ... ", ".. ... ....... ", "............... ", "... ...... ", "... ...... ", ".... .. ....... ", ".... .. ..... . ", ".... .. ....... ", " ... ", " . .......... ", " ... ", ". .. ...... ... ", ". .. ...... ... ", ". .. ...... ... ", " ... ", ". .. ..... .... ", " ........ . ....", " ......... ....", " .......... ....", " .......... ..", " ......... ... .", " ........ ..... ", " ....... ..... ", " ...... . ..... ", " ...... .. ... .", " ...... . . ..", " ....... ... ...", " ........ ....", " ...............", " ...............", " ...............", " ", ".. . ...... . ", "... ....... ..", ".... ........ ..", ".... ...... ", "... ... .... ...", ".. ..... .. ....", ". ..... . ....", " . ..... . ....", " .. ... . .. ...", " . . .. . . ", ". ... .... ... .", ".. ...... ..", "................", "................", "................", " ", " ..... ", "............... ", "............... ", "............... ", " .............. ", ". ...... . .... ", ". ............. ", ". ...... . .... ", " .............. ", "........ . .... ", "............... ", "......... ..... ", "............... ", "............... ", "............... ", " ", " ", " ...............", " ...............", " ...............", " .... ", " ... ", " .. ..........", " . . ... ......", " . . ..........", " . . ... ......", " . . ..........", " . . ... ......", " . . ........ ", " . . ......... ", " . . ......... ", " . . ......... ", " ", "................", "................", "................", " ........", " ........", "...... .. .....", "...... ....... ", "...... .. .... ", "...... ....... ", "...... ........", "...... ........", " .... ...... ", " ..... ... ..", " ..... .. ....", " ..... . ....", " ", "............... ", "............... ", "...... .... ", "..... ... .... ", " . ... .... ", " .. . ... .... ", " .. . .... ", " . . . ..... ", ".. ..... ...... ", ".... ........ ", ". . . ...... ", " .... ... .... ", "..... ..... . ", "..... ....... . ", "..... ....... . ", " . . ......... ", " . . ......... ", " . . ......... ", " . . ........ ", " . . ..........", " . . ..........", " . . ..........", " . . ", " . . ...........", " . .. .. .. ", " . ", " ... ..... . ...", " ... ..... . ...", " ... ..... . ...", " ... ..... . ...", " ... ..... . ...", " ..... . ....", " ..... . . ....", " ..... . ....", " .... . . ....", "...... . .. .", "...... . . ....", "...... . ....", " . . ....", "...... .. ....", ".. . ... . ....", " .... ....", ". . . ... . .. .", ". . . ... ....", ". . . ... . ....", ". . . ... ....", ". .. ... . ....", "..... ....... . ", "..... ....... . ", "..... ....... . ", ". ... .. .... . ", "..... ..... . . ", "..... ....... . ", "..... ....... . ", "..... ....... . ", "..... ....... . ", "..... ....... . ", ". ... .. .... . ", "..... ..... . . ", "..... ....... . ", "..... ....... . ", "..... ....... . ", "..... ....... . ", " ... ..... ....", " ... ..... ....", " ... ...........", ". ............", " ...............", "................", " ...............", ". ", " ...............", " ...............", " .... ....", " ... . . . .....", " .. ......", " . ..... .......", " ...............", " ", ". .. ... ....", "..... ... . ....", "..... ... .. .", "..... ... . ....", ".... .... ....", "... ..... . ....", ".. ...... ....", " ....... . ....", "......... ....", ". .... . ....", ". . .... .. ", ". .... . ..", "......... .....", "......... ", "................", " ", "..... ....... . ", ". ... .. .... . ", "..... ..... . . ", "..... ....... . ", "..... ....... . ", "..... ....... . ", "..... ....... . ", "..... ....... . ", ".... ...... . ", ". ... .... . ", " ........ .. . ", ". .. . ", " .. .... .. ", " ..... ... ", "............... ", " ", " ", " ...............", " ...... ", " ..... ........", " .... ........", " ... . ........", " ... . ........", " ... . ... ..", " ... . ........", " ... . ... ..", " ... . ........", " ... . ........", " ... . ........", " ... . ........", " ... . ........", " ... . ........", " ", "................", " ..............", ".. .... ", ".. ... ........", ".. . ........", "...... .. .", ".. .... ........", "...... .. .", "....... ........", ".. ... .. .", "....... ........", "...... ........", ".. .... ........", "...... ........", "....... ........", " ", "............... ", "............... ", " . ", "............. . ", "............. . ", "............. . ", "............. . ", "............. . ", "............. . ", "............. . ", "............. . ", "............. . ", "............. . ", "... ......... . ", ".. ........ . ", " . . . ........", " ... . ........", " . . . ", " ... .........", " . . .. .. ..", " ... ", " ..... . .. ..", " ..... . .. ..", " .. . .. ..", " .. .... ......", " .. .... ......", " .. ............", " .. ............", " .. ............", " .. .. ... .....", " .. ............", ".. ... ........", "....... ........", " .. ....... ", ".... . ...... ", "..... ..... ", " . . .... .", " .. . .... ..", " ... . ........", " ... . ........", " ........", ".... ........", ".... . ........", ".... . ....... ", ".... ...... ", ".... ..... ", ".... . .... .", ". ......... . ", " .......... . ", " ........... . ", " ............ . ", "............. . ", "............. . ", "............. . ", "............. . ", "... ......... . ", ".. ........ . ", ". ......... . ", " .......... . ", " ........... . ", " ............ . ", "............. . ", "............. . ", " .. ............", " .. ............", " .. .. ... .....", " ............", " ...............", " ...............", " ..... ... .....", " ............", " .. ............", " .. ............", " .. ............", " .. ............", " .. ......", " ........ ......", " ........ ......", " ", ".... . .... ..", ".... . ........", " . ........", " ... . ........", " ... . ", " ... .........", " ... .... ....", " ... ", " ...............", " ........ . ", " . . . . . .....", " ........ ..... ", " ....... .", " ....... .... ..", " ...............", " ", "............. . ", "........ . .. . ", "............. . ", "............. . ", " . ", "............ .. ", " ......... ... ", " .... ", "............ .. ", " ............. ", " ........... .. ", ". . . . . . ... ", "............... ", "............... ", "............... ", " ", "..... ", " ..........", " .. ..........", " . . . ......", " . . . ......", " . . . . ......", " . ..........", " . . ..........", " . ..........", " . . ..........", " . ..........", " . . ..........", " . . ..........", " . . ..........", " . . ..........", " . . ......... ", " ", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", ".. ....... .....", ". ..... ....", " ..... .....", " ..... ..... ", " ..", "............. ", "............. . ", "............. . ", "............. . ", "............. . ", "............. . ", "............. . ", "............. . ", "............. . ", "............. . ", "............. . ", ".. .......... . ", ". ......... . ", " .......... . ", " ........... . ", " . . ........ ", " . . ....... ", " . ...... .", " . . ..... ..", " . .. . ...", " . . ... ....", " . . .. .....", " . . .. ......", " . ..........", " . . .. .......", " . ..........", " . . ", " . . . . . . . .", " . . ", " . . ..........", " . . .... .....", " ..... ..... ", "..... ..... ", ".... ..... .", "... ..... ..", " . ... . ...", ". ..... ....", " ..... .....", " ...... ......", "................", " ....... .......", "................", " ", " . . . . . . . .", " ", "................", ". ..... ........", " ............ . ", "............. . ", "............. . ", ".. . ", ".. ......... .. ", ".. ........ ... ", ".. . .. .. ... ", ".. . .. .. .. ", ".. .. ", ".. ......... .. ", ".. .......... ", " ............ ", " ............. ", " ...... ", "........ ...... ", ". .. ... ", " .. ..........", " . . ..........", " . .. ..........", " . . ..........", " . .. ..........", " . .. ... . ..", " . . .... . ...", " . .. ..........", " . . ..........", " . .. ..........", " . .. ", " . . ...........", " . ....... ....", " . ", " ...............", " ", "................", "................", "................", "................", "................", "................", "................", "................", ". ... .........", "................", " ", "................", ".... ........ ..", " ", "................", " ", " ... .. ... .. ", " ... .. ... .. ", " .. ... .. ", " . . ... ... .. ", "........ ... .. ", "........ ... .. ", "........ ... .. ", "........ .. ", ". . . .. ...... ", "........ ...... ", " .. ... ", "....... .. . .. ", "...... .. . ... ", " .... . .. ", "............... ", " ", " ", " ...............", " ...............", " ...............", " ...............", " ...............", " ........ . ....", " ....... . .....", " ..... ", " ..... .........", " ..... ... ", " ..... .. .....", " ..... . . .....", " ..... . . .....", " ..... . . ", " ..... . ......", " ", "................", "................", "... .......", "... ...... ", ".... .. ....... ", ".... .. ..... . ", ".... .. ....... ", " ... ", " . .......... ", " ... ", ". .. ...... ... ", ". .. ...... ... ", ". .. ...... ... ", " ... ", ". .. ..... .... ", " ", ". .. .......... ", ". .. .......... ", ". .. .......... ", " .. .. ", "............ .. ", "............ .. ", ".......... .. ", "............ .. ", " .......... .. ", "............ .. ", "............ .. ", "............ .. ", "... .. .. .. .. ", "... .. .. .. .. ", " .. ", " ..... . ", " ..... .........", " ..... .........", " ..... .........", " ..... .........", " ..... .........", " ..... ...... ..", " ..... .........", " ..... .........", " ..... .........", " ..... ", " ........ ......", " .... . . .... .", " ........ ......", " .... . . . .. .", " ........ ....", " ......", ". .. ...........", ". .. ...........", ". ..............", ". ..............", ". .. .. ", "...... ...... .", "...... ... .", "...... ..... .", "...... ...... .", " ... ... ... ", ".. .. .. ....", " . ........ ....", ".. ........ ....", " . . .. . . . ..", ".. ...... ..", "............... ", "............... ", "............... ", ". ........... ", " ... .......... ", " . . .......... ", " ... ..... .... ", ". ........... ", ".. ............ ", ". ............. ", " .............. ", "............... ", "............... ", "............... ", "..... ..... ", ".... ... ..... ", " ........ . ....", " .......... ....", " .......... ....", " .......... ..", " ......... ... .", " ........ ..... ", " ....... ..... ", " ...... . ..... ", " ...... .. ... .", " ...... . . ..", " ....... ... ...", " ........ ....", " ...............", " ...............", " ...............", " ", ".. . ...... . ..", ".... ........ ..", ".... ........ ..", ".... ...... ", "... ... .... ...", ".. ..... .. ....", ". ..... . ....", " . ..... . ....", " .. ... . .. ...", " . . .. . . ", ". ... .... ... .", ".. ...... ..", "................", "................", "................", " ", "... ... ..... ", "... . ... ..... ", "... ... ..... ", "... . ... ..... ", " .. ... ..... ", ". . . ... ..... ", ". . ... ..... ", ". . . ..... ", " .. ... ...... ", "... ....... ", "............... ", "......... ..... ", "............... ", "............... ", "............... ", " ", " ", " ...............", " ...............", " ...............", " ...............", " ... . . ..... ", " .. . . .......", " ... . . .......", " ... . . .......", " ... . . .......", " ... . . ...... ", " ... . . ..... ", " ... . . .... .", " ... .. .", " .. ... ... . .", " .......... . ..", " ", "................", "................", "......... ", "..... ", ".... ......", " .. ...........", ".. .............", ". ...... .... .", " ...............", " ....... .......", "............ ...", ".... .... ..... ", "............ ...", "................", "........ .......", " ", "............... ", "............... ", " .............. ", " ........... ", ". ......... ", ".... ... ... ", "..... ....... ", "...... ...... ", "....... ..... ", " ... ... .... ", "........ .... ", " . . .... ... ", ".......... ... ", ".......... ... ", "........... .. ", " .......... ..", " .......... . ..", " ......... . ..", " ......... ..", " ......... ..", " ...... .. . ..", " ......... . ..", " ......... .", " ......... . .", " ......... . .", " .......... . ", " .......... . . ", " .......... . .", " ... ....... . ", " ........... .", " ............ . ", ".... . . .. .", ".... ... ... ..", "............ ..", "........ ... ..", "... . . .... ..", " ....... ... ..", "........... .", "........ .......", "....... .......", ".... ...........", "........ ... ...", " ...............", " ..... .. . . .", ". .......... ...", " . .............", ". . ...........", ".. . ...... .. ", "........... .. ", ".... ... .. .. ", "........... .. ", ".. . .. . .. ", "........... .. ", ".... ...... .. ", "........... ... ", ".... ... .. ... ", "........... ... ", " ... ..... .... ", "......... ..... ", ".. .. ... ..... ", "........ ..... ", "....... ...... ", "..... ....... ", " ............. .", " .............. ", " .. ...........", " . ...........", " .. ...........", " .. ... .", " . ....... .....", " ........ ......", " ...............", " ...............", " ..... . . .....", " .... . . ......", " ...............", " ...............", " ...............", " ", " . . ....... ..", ". . . .......", " . . . ", ". . . . . . . ", "... . . . ", "..... ..", "..... ........", ".... .. ........", "................", "................", "................", ".............. .", "................", "................", "................", " ", ".... ........ ", ". ......... ", " . ........... ", ". ............ ", " ...... .... ", "...... .... ", "..... . .... ", "..... . .... ", "..... . .... ", "..... . .... ", "..... .. ..... ", "..... ...... ", "............... ", "............... ", "............... ", " ", " ", " ...............", " .... ", " ... ..........", " .. ..........", " . . ..........", " . . ..........", " . . ..........", " . . ..........", " . . ..........", " . . ......... ", " . . ........ ", " . . ....... ", " . . ...... .", " . . ..... ..", " . . .... ...", " ", "................", " ", "................", "................", "................", "................", "................", "................", " ......... .....", " ....... ....", " ....... .....", "....... ......", "...... .......", "..... ........", ".... ........ ", " ", "............... ", " ........ ", "...... ........ ", "...... . ", "...... ...... . ", "...... ...... . ", "...... ...... . ", "...... . ... . ", "...... ...... . ", "...... ...... . ", "...... ...... . ", "...... . ... . ", "...... ...... . ", "...... ...... . ", ". . .. ...... . ", " . . ... ....", " . . ... .....", " . . ..........", " . . ..........", " . . ..........", " . . ..........", " . . ", " . ...........", " . ... .. .. ..", " . ", " ...............", " .. . ", " . .. ..........", " .. . ..........", " .... ..........", " .. . ..........", "... ......... ", "... .......... ", "............... ", "............... ", "................", "................", " ", "................", " .. ... .... ", " . ..", "........... ..", " ....... . ..", ".. .. ... . ..", ".. . ..", ".......... ..", "...... . ..", ". . .. . ... . ", ". . .. ...... . ", ". . .. ...... . ", ". . .. ...... . ", "...... . ... . ", "...... ...... . ", " ...... . ", "..... ....... . ", " ... ... . ", "............. . ", "............. . ", "............. . ", " ........... . ", ".... ..... . ", "..... ...... . ", "..... ...... . ", " .... ..........", " .... ..........", " .... ..........", " ..........", " ...............", " ...............", " ...............", " ...............", " ..........", " .... ..........", " .. . .", " ............. .", " .. .......... .", " ...... ...... .", " .... .... ... .", " ", ".... . ..", ".... . ..", ".......... ..", ".......... . ..", ".......... . ..", ".......... . ..", ".... ..", ". . . ..", ". . ", ".. ... . . ...", ".. .. .", ".. ....... ", ".. ..... .... ..", ".. ............ ", ".. ......... ...", " ", " .... ..... . ", "..... ...... . ", "..... ...... . ", ".... ..... . ", " ........... . ", "............. . ", "............. . ", "............. . ", " . ", "............ .. ", ". .. .. .. ... ", " .... ", "............... ", "............... ", "............... ", " ", " ", " ...............", " ......... .", " ........ ", " ... ... . ... ", " ...... . . . .", " ..... . . .....", " .... . . . . .", " ... . . . .....", " .. . . . . . .", " .. . . . .....", " .. . . . . . .", " .. . . . .....", " .. . . . . .", " .. . . .....", " .. . . . . . .", " ", "................", "................", " . ", " . ", " . . . . . . ", "............ .", " . . . . . ..", ".......... ...", " . . . . . ..", "........ . ..", " . . . . ..", "...... ... . ", " . . . . . ", ".... ...... ", " . . . . . .", " ", "............... ", "............... ", "............... ", " ........... .. ", " .... ", ".......... .... ", ".......... .... ", ".......... . .. ", ".......... .... ", ".......... .... ", ".......... .... ", ".......... . .. ", " ......... .... ", ".......... .... ", ".......... .... ", " .. . . . .....", " .. . . . . . .", " .. . . . .....", " .. . . . . . .", " .. . . . .....", " .. . . . . . .", " .. . . .....", " .. . . . . . .", " .. . . . .....", " .. . . . . . .", " .. . . . .....", " .. . . . . .", " .. . . . .....", " .. . . . . . .", " .. . . . .....", " .. . . . .. . ", "........... ..", " . . . . . ...", "......... . ..", " . . . . . ..", "....... .. ..", " . . . . . . ", "..... .... . ", " . . . . ", "... ...... .", " . . . . . ..", ".......... ...", " . . . . . ..", "........ . ..", " . . . . ..", "...... ... ..", ". . . . ..", ".......... . .. ", ".......... .... ", ".......... .... ", ".......... .... ", ".......... . .. ", ".......... .... ", " ......... .... ", ".......... .... ", ".......... . .. ", ".......... .... ", ".......... .... ", "... ... .... ", ".... .... . .. ", ".... .... .... ", ".... .... .... ", ".... .... .... ", " .. . . .....", " .. . . . .. . ", " .. . . . .....", " .. . . . .. . ", " .. . . . .....", " .. . . . ", " .. . . ......", " .. . .......", " .. . .. . . .", " .. . .........", " .. . .. . ..", " .. .... .... ", " .. ", " ...............", " ...............", " ", ".... ..... ..", ". . . . . . ..", "............ ..", ". . . . . . ..", "............ ..", " ", "............. ..", "............ .. ", " . . . . . ", ".......... .....", " .. . . ..... ", " ....... .......", " ........", "................", "................", " ", " ... .... . .. ", " .. ... .... ", " ......... .... ", " ......... .... ", ".......... . .. ", " .... ", "......... ..... ", ". ...... ...... ", " .... .. ", "............... ", ". . . ......... ", "............... ", "..... .. ... .. ", "............... ", "............... ", " ", " ", " ", " ...........", " . .. . ......", " .. .. ", " . .. ... .. .", " . .. ... . ", " . .. ........", " .. .. ........", " . .. ........", " .. . ", ".......... ... ", ".......... .. . ", ".......... . . ", ".......... . . ", " . . ", " ", " ", "................", "....... ... ... ", " ", ". ..............", ". .............", "................", "................", "................", " . . ", "..... .... ....", "..... ... . ....", "..... .. . ....", "..... .. . ....", "..... .. . ....", " .... ", " .... ", "........ .... ..", "........ .... ..", " .... ..", ".. .......... ..", ". . ......... ", ".. .............", "................", "........ ..", " . . .... . ", " ..... . .... ..", " .... . .... ..", " .... . .... ..", " .... . .... ..", " .... . .... ..", " ", " . . . . ", ".... . . . . . ", "..... . . . . ", ".... .... . .. ", ".. .... . ... ", " . ... . .... ", "...... . ..... ", "..... . ...... ", ".............. ", " ... ........ ", ". ... ........ ", ". ... ........ ", ". ... ........ ", ". ... .. . ", ". ... . ... . ", " . .... . . ", " .. .... . . ", " . .... . . ", " . .... . . ", " .. .... . .", " . .... . . ", " . .... . . ", " . .... . ", " .. . .. . . ", " . .... . ", " . .... . . ", " . .... . ", " .. . .. . . ", " . .... . ", " . .... . . ", " . .... . ", ". ", " . .. .. .. .. ", " ..............", ". ............. ", " ............ .", ". .. ......... .", " ............. ", ". ............. ", " ........... ", ". ............. ", " ............. ", ". ............. ", " ........ .. ", ". .. ...... ... ", " .......... ", ". ........... ", " ", ".. .. .. .. .. ", "............... ", " .............. ", ". ........ ... ", ". ............. ", " .............. ", " ............. ", " ............ ", " .............. ", " ............. ", " .............. ", " .. ......... ", " ... ..... ... ", " ........... ", " ............ ", ". ... . . . ", ". ..... ... . ", ". ..... ... . ", ". ... . . . ", ". ... . ... . ", ". ... . . ", ". ... . .. ", ". ... ........ ", ". ... ........ ", ". ... ........ ", ". ... .. ", ". ..... . .. ", ". .... . . .. ", ". .... .. ", ". .... . .. ", ". ......... ", " .. . .. . . .", " . .... . . ", " . .... . . .", " . .... . . ", " .. . .. . . ", " . .... . . ", " . .... . . ", " .. .... . . ", " . . .. . . ", " . .... . .", " .. .... . .", " . .... . ", " . .... .....", " .. .... ", " . ..........", " ", " ..............", ". ", " .. .", " ", "................", "................", "................", "................", " ", ". .. ... .. ..", " . . . . . .", " ", "................", " ", ".......... ...", " ..... . .. ", ".............. ", " ", " . . . .", " ..", "............. ..", "............. ..", "............. ..", "............. ..", " ..", ". .. ... . ...", " . . . ....", " .....", "................", " ", "................", " .......... .", ". ..............", ". ..............", ". ..............", ". ..............", ". ... ", ". ... ........ ", ". ... .... ", ". ... ... .. . ", ". ... .. . .. ", ". ... . .. . ", ". ... ... .. . ", ". ... .. .. .. ", ". ... . .. ... ", " ... ........ ", "..... ........ ", "..... .... ... ", " . . . . . . . ", " ", " . ..... .. .", " . .... ", " . ... .. ...", " .. .. ....", " . . . ", " . .. . ....", " .. .. .. ....", " . ..... ....", " . ..... ....", " .. ....", " ........ ....", " . . ....", " ....", " ....", ". . ..... . ", " ..... .. ", " . ........... ", " .... ", ".......... .... ", ".......... .... ", " .... ", "............... ", ".. ............ ", ".... ... .... ", "........ . .. ", " ", " ...............", " . ", " ", " ", ". .. ...... . .", " ........ . .", " ......... . .", " .. .", "........... . .", ".......... . .", "......... . . .", ".. . . .", ".. .... . . . .", ".. ... . .. .", ".. .. ... . .", ".. .... .... .", ".. ......... . .", " ", " . ", " ", "..... ... . .. ", "..... .... ... ", "..... .. ... . ", " . . . . ", "........ ... . ", ".......... ... ", ".... . .. . .. ", ".......... ... ", ".... . ....... ", ".............. ", "............ . ", ". ......... . ", ".............. ", " ", " ", " ", " ", " ...............", " ........... ...", " ...............", " ...............", " ...............", " ... ....... ...", " ...............", " ....... .......", " . . ...........", " . . ....... ...", " ...............", " . ", " . . . . . . . ", " . ..... . . . .", " . . . . . . . ", " ", "................", "............ ...", "................", " ....... .......", "................", ".... ...........", "................", "........ .......", "................", ".... ....... ...", "................", " ", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " ", "................", "................", "........... ..", ".......... ...", "....... . ......", "...... . .......", "..... . . ......", ".... . ... .....", "... . .........", "..... .........", "..... ..........", " ", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " ", "................", ".... ...........", "................", " ....... .......", "................", "............ ...", "................", "........ .......", "................", ".... ....... ...", "................", " ", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " ", "................", "... . ", "...... . . . . ", " .. . ... ... .", "...... . . . . ", "...... . . . . .", "...... . . . . ", "...... . . ... .", "...... . . . . ", ".... . . . ... .", "...... . . . . ", " . . . . .", ". . . . . . . . ", " . . . . . ... .", ". . . . . . . . ", " ", "............... ", " . ......... ", ". ............ ", ".. . .. ...... ", ". ............ ", " . ......... .. ", ". ............ ", " . ............ ", ". ....... . .. ", " . . ..... . .. ", ". ............ ", " . . ", ". . . . . . . . ", " . . . . ... . ", ". . . . . . . . ", " . ..... . . . .", " . . . . . . . ", " . ..... ..... .", " . . . . . . . ", " . ..... . . . .", " . . . . . . . ", " . ..... . . . .", " . . . . . . . ", " . ", " ..... ... ... .", " . . . . ... . .", " . . . ....... .", " ..... . ... . .", " ..... ... ... .", " ... . . ... . .", " ..... ....... .", " . . . . . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " ", "................", ".... ....... ...", "................", " ....... .......", "................", "................", "................", " . . . . . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " ", "................", ".... ....... ...", "................", "........ .......", "................", ".... ....... ...", "................", " . . . . . . . .", ". . . . . . . . ", " ..... . ..... .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " ", "....... .. ... ", ".... .. ... .. ", "....... .. ... ", "....... ... .. ", "....... .. ... ", ".... .. ... .. ", "....... .. ... ", " . . . . . ... .", ". . . . . . . . ", " ..... . .......", ". . . . . . . . ", " . . . . . ... .", ". . . . . . . . ", " . . . . . ... .", ". . . . . . . . ", " . . . . .", "...... . . . . ", ".... . . . ... .", "...... . . . . ", " ..... . . ... .", "...... . . . . ", ".... . . . . . .", "...... . . . . ", " . . . . ... . ", ". . . . . . . . ", " . ..... ... . ", ". . . . . . . . ", " . . . . ... . ", ". . . . . . . . ", " . . . . ... . ", ". . . . . . . . ", " . . ", ". ............ ", " . . ..... . .. ", ". ....... . .. ", " . ..... ...... ", ". ............ ", " . . .......... ", ". ............ ", " ..... . ... . .", " ..... ... ... .", " ... . . ... . .", " ..... ....... .", " ... . ... . ", " ... . ... ... .", " ... ... ... ...", " ... . ....... .", " ... ... ... ", " ... . ... .. .", " ... ... ... .. ", " ... . ... ... .", " ... ... ... . ", " ... .", " .. ........ .", " . ........ .", " ....... .......", "................", ".... ....... ...", ".. .........", " ... ", ".. . ... ... .", " ... ... ... ...", ".. . ... ... .", " . ...", "... . .... ....", " .. . .. .. ...", ". . ", " .......", "....... .......", "....... .......", " ..... .......", " ...............", "................", ".... ....... .. ", "............... ", " ", ".. ... ... ... ", " ... ... ... ", ".. ... ... . ", " ... ... .. ", ".. ....... . ", " ... ... . ", " . . ", " . . . . . . ", "........ . . ", " . . . . . . ", "........ . . ", " ...... ... .. ", "....... .. ... ", " .. ", "............ . ", "......... .. .. ", "............ . ", "..... ...... .. ", ".... ....... . ", "... ........ .. ", "......... .. . ", ".... .. ... .. ", "... ........ . ", ".. ......... .. ", "......... .. . ", "............ .. ", " . ", " ..... . . . . .", "...... . . . . ", ".... . . . ... .", "...... . . . . ", " ..... . . ... .", "...... . . . . ", ".... . . . . . .", "...... . . . . ", " ..... . . . . .", "...... . . . . ", ".... . . . ... .", "...... . . . . ", " ..... . . ... .", "...... . . . . ", ".... . . . . . .", "...... . . . . ", " . ............ ", ". ............ ", " . . ....... .. ", ". ............ ", " . ..... ...... ", ". ............ ", " . . .......... ", ". ............ ", " . ..... ...... ", ". ............ ", " . . ....... .. ", ". ............ ", " . ............ ", ". ............ ", " . . ....... .. ", ". ............ ", " . . ........ .", " . ........ .", " . . ........ .", " . ........ .", " . . ........ .", " . ........ .", " . . ........ .", " . ........ ", " . . ..", " . ..... . ....", " . ", " ....... .. ....", " ..... .. ", " .... . .... .", " ... . ... .", " .. ........", ". ..... .......", " ...... .......", ". ..... .......", " ...... .......", " ..... .......", "....... .......", "....... ", " ........", "............ . .", ".. . .... .... ", " .", ". .. ... . ... .", " .. . .", "........... ..", "........... ..", "................", ".. . . . . . .", "........ . . ", ".... . . . . ...", "........ . ....", "...... . . .....", "........ ......", " ... ", "..... ..........", ".... . .........", " .. . . ........", " . . ... ... ", ". . ........", ".. . ........", "... . . ........", "... . ........", ". . ........", "......... . .. ", " . ... ", "....... ... .. ", "...... ... ... ", "..... ...... .. ", ".... . ... ... ", " ... ... .. ", "... .. ... ... ", "... ....... .. ", "... .. ... ... ", "... ... ... .. ", "... .. ... ... ", "... .. ... .. ", "... .. . ... ", "... . . ... .. ", "... .. . . .. ", " ..... . . . . .", "...... . . . . ", ".... . . . ... .", "...... . . . . ", " ..... . . ... .", "...... . . . . ", ".... . . . . . .", "...... . . . . ", " ..... . . . . .", "...... . . . . ", ".... . . . ... .", "...... . . . . ", " ..... . . ... .", "...... . . . . ", ".... . . . . . .", "...... . . . . ", " . ..... ...... ", ". ............ ", " . . .......... ", ". ............ ", " . ..... ...... ", ". ............ ", " . . ....... .. ", ". ............ ", " . ..... ...... ", ". ............ ", " . . ....... .. ", ". ............ ", " . ............ ", ". ............ ", " . . ....... .. ", ". ............ ", " . . .........", " . . ....... ", " . . ...... . ..", " . ..... . ", " . . ..... . .. ", " . . ..... .....", " . . ..... ", " . .. . .....", " . . .. . .....", " . . .. . .....", " . . ..... .....", " . ..... .....", " . . ..... .....", " . . ..... .....", " . . ..... ", " . ..... .....", "................", " .......", " .. .. .. ......", " . . .....", ".. .. . .. .....", "...... . . . ..", " ..... . ..", ".. .... . . ..", ".. ..... . .....", ".. ..... .....", ".. .... . .....", ".. ..... . .... ", ".. ..... .... ", ".. .... . .... ", " ..... . .....", ". ...... .....", ". . . ........", ". . . . ........", ". . . ........", ". . ........", "... . ........", "... . ........", "... . ........", ". . . ........", ". . . ", ". . . ", ". . . .........", " . . .........", " . . .........", " . . .........", ". . ... . . ", "... ... . . ", "... .. ... . ", "... . ", "... ...... . ", "... .. ", "... .. ... .. ", "... .. . . ... ", "... . . ... .. ", "... .. . ... ", " .. ... .. ", " ... ... ... ", ".. . ....... ...", ".. ... ... ... .", ".. . ... ... ...", ".. ... .........", ".. . ... ... ...", ".. ... ... ... .", " ..... . . . . .", "...... . . . . ", ".... . . . ... .", "...... . . . . ", " ..... . . ... .", "...... . . . . ", ".... . . . . . .", "...... . . . . ", " ..... . . . . .", " . . . . ", " ... . . . ... .", ".. ... . . . . ", " ... . . . ... .", "...... . . . . ", " ... . . . . . .", ".. ... . . . . ", " . ..... ...... ", ". ............ ", " . . .......... ", ". ............ ", " . ..... ...... ", ". ............ ", " . . ....... .. ", ". ............ ", " . ..... ...... ", ". ............ ", " . . ....... .. ", ". ............ ", " . ..... ...... ", ". ............ ", " . . .......... ", ". ............ ", " . . ..... . ", " . . ...... ....", " . . ....... ", " . ...........", " . . ...........", " . . ...........", " . . ..........", " . ... ", " .. ... ... ... ", " ... ", " ... ....... ...", " ...............", " ....... .......", " ...............", " ... ....... ...", " ", " ...... . .....", "....... . ......", " .......", "................", "... ..........", "... ..........", "................", " ......", "... ... .. .....", " ... . .", ".... ... . . .", "......... . . .", " ....... ....", "......... .....", ".... .... .....", " ", "... . .........", ". . ", ". . ", ". . . ..........", ". . ..........", ". ..........", "... ..........", "... . ..........", ". ", ". . ...........", ". . ", ". ..............", ". ...... .......", " ...............", " ... ....... ...", " ", ".. . ....... .. ", " ... ... ... ", " .. ... ... .. ", ". ... ... ... ", ". .. ....... .. ", ". ... ... ... ", ". .. ... ... .. ", ". ", " ...... .......", " ...............", "..... ... ...", ".... .. .......", " ... .......", ".... ........", "............ ...", " ", " . . . . .", "...... . . . . ", ".... . . . ... .", "...... . . . . ", " ..... . . ... .", "...... . . . . ", ".... . . . . . .", "...... . . . . ", ". .. ... ... .", ". . .. . . . . ", "...... ... ... .", "...... . . . . ", " ..... ", "................", ".... .. . . . ", " ", " . ..... ...... ", ". ............ ", " . . ....... .. ", ". ............ ", " . ............ ", ". ............ ", " . . ....... .. ", ". ............ ", ".. .. ....... ", ". .. . ....... ", ".. ......... .. ", ". ............ ", " ..... ...... ", "............... ", ". .. ....... .. ", " ", "................", "................", "....... . ", " . ...... ", " .... . . . .", " ... . ..... . ", " .. . . . . .", " .. . . ..... . ", " .. . . . . .", " .. . . .. .. . ", " .. . . . . .", " .. . . ..... . ", " .. . . . . .", " .. . . ..... . ", " .. . . . . .", " .. . . ..... . ", ". ", " ", " ..............", ". .. ........", " ... .........", ". ............. ", " ............ ", ". .. ..... ", " ... ..... .", ". ......... ..", " ........ ...", ". ..... . ....", " ...... .....", ". ...... ..... ", " ..... .. ... ", ". ........... ", "................", " ...............", " ..............", ". . ", " . ............", " . ...........", " ... ..........", ".... ..........", ".... ..........", ".... ..........", ".... ..........", ".... ..........", " ... ..........", " .. ..........", " ... ..........", ".... ......... ", "................", "................", "................", " ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", "............... ", ". .. .. .. .. . ", " .. .. .. .. .. ", ".. .. .. .. .. .", " .. . . . . .", " .. . . ..... . ", " .. . . . . .", " .. . . ..... . ", " .. . . . . .", " .. . . ..... . ", " .. . . . . .", " .. . . ..... . ", " .. . . . . .", " .. . . .. .. . ", " .. . . . . .", " .. . . .. .. . ", " .. . . . . .", " .. . . ..... . ", " .. . . . . .", " .. . . ..... . ", " .......... .", ". ......... ..", " ........ ...", ". ..... . ....", " ...... .....", ". ...... ..... ", " ..... .. ... ", ". ........... ", " . ........ .", ". ......... ..", " ........ ...", ". ..... . ....", " . .... .....", ". ...... ..... ", " ..... .. ... ", ". ........... ", ".... ..........", ".... ......... ", ".... ..........", ".... ..........", " ... ..........", " .. ......... ", " ... ..........", ".... ..........", ".... ..........", ".... ......... ", ".... ..... ....", ".... .... ... .", " ... ... ... ..", " .. ..... ... ", " ... .... .....", ".... ... ......", " ............ ..", "............... ", ".............. .", ". ........... ..", " .............. ", ".............. .", "............. ..", ". ............. ", " ............. .", "............. ..", "............... ", ". ............ .", " ............ ..", "............... ", ".............. .", "............. ..", " .. . . . . .", " .. . . ..... . ", " .. . . . . .", " .. . . ..... . ", " .. . . . . .", " .. . . ..... . ", " .. . . . . .", " .. . . ..... . ", " .. . . . . .", " .. . . ..... . ", " .. . . . . .", " .. . . ..... . ", " .. . ... . ", " .. . . ..... .", " .. . ..... ", " .. . . ........", " . ........ .", ". ......... ..", " ........ ...", ". ..... . ....", " . .... .....", ". ...... ......", " ..... .. .....", ". ..............", " ..............", ". ..............", " ", " ............. .", ".. ... ... .. ..", ". ... ... .. ...", " ....", "................", ".... ..... ....", ".... .... .....", ".... ... ......", ".... ..... ....", ".... .... .....", ".... .... ......", "... ....... ....", ".. ....... .....", ". . ..... ..... ", " .. ....... .. .", "... ...... ... .", "... ..... .... ", "... . ... .. ", " .. ... .. .....", "... ... . ......", " .. ... ... .. .", "............... ", ".............. .", "............. ..", "............. . ", "............ . .", "........... ... ", ". . ....... . ", " . . ..... .. ", " . . . .... ... ", " . . . ...... . ", " . ..... .. ", ". . . ..... ... ", " . ........ . ", "............ .. ", "............... ", ". .. .. .. .. . ", " .. . ........", " .. . . .. .....", " .. . ........", " .. . . .. .....", " .. . ....... ", " .. . . .. ... .", " .. . ........", " .. . . ", " .. . .........", " .. . ...... .. ", " .. ... . ... ", " .. ", " ...............", " ..... .........", " .... .. .......", " ", "................", ".... .... ......", ". . ............", " ...... ......", ". ..............", "......... ......", "................", " ", "................", " ....... ... ..", " ... . .... ....", " ", "................", "................", "................", " ", "... ... .. .. ..", " .. ... . .. .. ", "... ... ........", " .. ... ", "... .... .. . ", " .. .... .. . ", "... .... .. . ", " ............", ".. .............", ". ........... ", " ............ ", ".. .... ", "...... .... ....", "...... .... ....", "...... .... ....", " . . ", " .. .. .. .. .. ", ".. .. .. .. ... ", "............... ", " . ", " . .... ... . ", " . .... ... . ", " . .... ... . ", "............. . ", "............. . ", "............. . ", "............. . ", " .... . ", ".... .... ..... ", ".... .... ..... ", ".... .... ..... ", " . . ", " ", " ...............", " ........ ......", " ... . .........", " .. . ..........", " ... . .........", " .. . .. ", " ...... ", " . . . . .......", " .... . ... ...", " . . ... .. . ..", " ... . ... ...", " . . ... .......", " ... . .......", " . . ... ... ", " ... . .. ...", " ", "................", "....... ........", "........ . .....", "....... . ......", "........ .......", " ", " ", "............... ", ".. ............ ", ". . ... . .... ", ".. ....... .... ", "............... ", "............... ", " ", "................", " ", "............... ", "............... ", "............... ", ". ... ", ". ......... ... ", " ... ... ", " . ... ... ", " .......... ... ", " ....... ... ", " ....... ... ", " .......... ... ", " . ....... ... ", " . ....... ... ", " ...... ... ", ".... ... .. ", " . . ... . . . ", " ... . . . ", " . . ... . . . .", " ... . . . . .", " . . . . . . . .", " ... . . . . .", " . . . . . . .", " ... . . . . .", " . . . . . . . .", " ... . . . . .", " . . . . . . . .", " ... . . . . .", " . . . . . . . .", " ... . . . .", " . . . . . . .", " ... . . . .", " ", ". . . . . . . . ", "................", " .. ...", " .. ..", " ....... .. .", " ....... ... ", " ....... ... ", " ... ... ", " ... ... ", " ....... ... ", " ....... ... ", " ....... .. .", " ....... ..", " ....... ...", "................", " . .......... ", ". . .......... ", ".. . ...... ", ". . ...... ... ", ".. . ...... ... ", ". . ...... ... ", ".. . ...... ... ", ". . . ", ".. . . ", ". . ....... . ", ".. . .. .... . ", ". . ..... . . ", ".. . .... .. . ", ". . ... ... . ", ".. . .. .... . ", ". . ....... . ", " . . . . . . ", " ... . . . ...", " . . . . . . ", " ... . . . ....", " . . . . . .....", " ... . . ......", " . . . . .... ", " ... . .... . .", " . . . .... ", " ... .... . . .", " ... ", " ........ ..... ", " ........ ..... ", " .. ..... ..... ", " ........ ..... ", " ", " ", "................", " ", "..... .......", ".... .. ........", ".... .........", " ... ..", " . ... . . . ...", " ... ....", " ... . . . .... ", " ", ". . ..... ..... ", "... ..... ......", ". . ..... ......", "... ..... ......", " ", " . ....... . ", ".... ....... . ", " ....... . ", "... .... ... . ", ".. ... ..... . ", ". .......... . ", " . ", "............ .. ", " .. .. ... ... ", " ......... .... ", " ..... ", "............... ", "............... ", "............... ", "............... ", " ", " ", " ...............", " ...............", " .... ..........", " . ...... . ..", " . . ....... ...", " . . ...... . ..", " . . ..... .... ", " . .. .", " ..... . ", " . . . . . .", " ... . . ", " . . . . . .", " .. . . . ", " . . . . . .", " .. . . . ", " ", "................", "....... .. .....", "...... .. ......", ".. ", ". ", " . .............", ". .............", " . ... ... ", ". ... .. ", " . ... ... .. ", ". ... ... .. ", " . ... ... .. ", ". ... .. ", " . ... ... ", ". ... ....... ", " ", "............... ", "............... ", "............... ", " ..... ", " ..... ", "........ ..... ", "........ ..... ", " ..... . ", " .... . ", " .. ... . . . ", " ... .. . ", " ... .. . . . ", " ... .. . ", " ... .. . . . ", " ... .. . ", " . . . . . .", " .. . . . ", " . . . . . .", " .. . . . ", " . . . . . .", " .. . . . ", " . . . . . .", " .. . . . ", " . . . .", " .. . . ...... ", " . . .", " .. . .........", " . ... .. .. ", " .. ...........", " .. ", " ...............", " . ... ....... ", ". ... ....... ", " . ... ....... ", ". ... ....... ", " . .............", ". .............", " . ", ". ..............", " .. .. .. .. .. ", "................", ". .. .. ..... ..", "........ ...", ".. .. . ... .. .", ".... . ... .. ..", " ", ".. ........... .", " ... .. . . . ", " .. ... . ", " .... . . . ", " ..... . ", "........ . . . ", "........ . ", " . . . ", "........ . . ", ".. .. . . . . ", "...... ...... . ", " .. . . ", "............ .. ", ". .. .. ... ... ", ".......... .... ", " ..... ", "............... ", " ...............", " .... . ..... ", " ... . ..... ...", " .... . ... . ..", " ..... ... . .", " ......... . ", " ........ .. . ", " .... . . ......", " ... . .. ......", " .... . . ... ", " ........ ... . ", " ........ ... . ", " . ...... ... . ", " ........ ... . ", " . ...... ... ..", " ", "... ..", " ", "................", "................", " . .", ".. . ......... .", " . .", "........ . ...", "........ . ...", "........ . ...", ". . ..........", ". . ......... ", ". . ......... ", " ", "................", " ", "............... ", " .... . . . ", "..... .... . .. ", "...... .. . ... ", " ..... .. . .. ", " . .... ... ... ", " .... ...... ", "........ ...... ", "........ ...... ", ".. ... ...... ", ".. . ... .. ... ", " . ... . . .. ", " . ... .. ... ", " . ... . . .. ", ".... ... ...... ", " ", " ", " . ... ... ... .", " ....... ... .. ", " . ... ... ... .", " ....... ... .. ", " . . ", " ... ...........", " . . ...........", " ...........", "................", "........ .. .. .", "................", " ...........", " . . ...........", " ... ...........", " . . ...........", " ... ", " ... . ... ... .", " ... ... ... ...", " ... . ... ... .", " ... ... ... ...", " ... ..... ... ", ".... ... ..... .", ".... . ... .. ..", ".... ... ... ...", ".... . .... ...", ". .. ... .. ... ", ".... . ... .. ", ".... .... . ", ".... . .. .. . ", ".... ... . . .. ", ".... ... . . . .", " ", ".. ... .", " ... ....... ", ".. ............", " ..............", "...... ..", ".... ........ ", ".. ............", ". .... ...", " ... ....... .", ".. ........... ", " .... ....", " .. ...... ..", ".. .......... ", ". .. . . . . ...", " ...............", " ", ".. ... ... ... ", " ... ....... .. ", ". ... ... ... ", "... ... ... .. ", "..... ... ... ", "...... . ... .. ", " ..... .. ... ", ".. ... ...... ", "... ... . ... ", " ... ... ... .. ", ". .. ... ... ", ".. .. .. .. ", "... .. ... ", " .. .. .. . .. ", ". .. .. .. ... ", " ... ...........", " . . ... .. .. .", " ... ...........", " . . ...........", " ... ...........", " . . ...........", " ... ...........", " . . ...........", " ... ... .. .. .", " . . ...........", " ... ...........", " . . ...........", " ... ...........", " . . ...........", " ... ...........", " . . ... .. .. .", ".... .. .. . .", ". .. . .. .. ", ".... .. . . ", "....... . . .", ".... . . . .", ".... . ... . .", ".... . . . . .", ".... . . . . .", ".... . ... . .", ".... . . . . .", ".... . . . . .", ".... . ... . .", ".... . . . .", "....... . . .", ".... ... . .", ". .. . . . . .", " ", "................", "................", " ", " . . . . . . . ", " . . . . . . . .", " ...............", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . ....... . .", " . .. .. . .. ", ".. . ... . ... ", ".. .. .. . . .. ", " .. . .. . ... ", " .. . .. . . .. ", " .. . .. . ... ", " .. . .. . . .. ", " .. . .. . ... ", " .. . .. . . .. ", " .. . .. . ... ", " .. . .. . . .. ", " .. . .. . ... ", " .. . .. . . .. ", " .. . .. . ... ", " .. . .. . . .. ", " .. . .. . ... ", " ... ...........", " ... ...........", " ... ...........", " . . ...........", " ... ...........", " . . ...........", " ... ... .. .. .", " . . ...........", " ... ...........", " . . ...........", " ... ...........", " . . ...........", " ... ...........", " . . ... .. .. .", " ... ...........", " . . ...........", ".... . . . . .", ".... . ... . .", ".... . . . . .", ".... . . . . .", ".... . ... . .", ".... . . . . .", ". .. . . . .", "....... .. . .", ".... . . . .", ".... . . . . .", ".... . ... . . ", ".... . . . .. ", ".... . . . . ", ". .. . ... ...", ".... . ... ...", ".... . .. . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ...............", " . . . . . . . .", " . . . . . . . ", " ", "................", " ", ". ..............", ".. . . . . . ", " .. . .. . . .. ", " .. . .. . ... ", " .. . .. . . .. ", " .. . .. . ... ", " .. . .. . . .. ", " .. . .. . ... ", " .. . .. . . .. ", " .. . .. . ... ", " .. . .. . . .. ", " .. . .. . ... ", " . .. .. . . .. ", " . . ... . ... ", ".. . ... . . .. ", " . .. . ... ", " . ... . .. .. ", "... . .. .... ", " ...........", "................", "................", "................", " ... .. .. .", " . .. ..........", " ... . .........", " . ... ........", " ... ... ...", " . ... ... . ...", " ... ...", " . . .. . ...", " .. . . . ...", " . ...", " .. .. .. ...", " ...", ".... . . .. . ", ".... . .... . ", ".... . . ... ..", ".... . ..... ", ". .. .. .. ... ", ".... ... ...... ", ".... ... ... ...", ".... . .. ......", ". .... . . .", ". ... .. ...", ". . .. .. ...", ". ........ . ..", ". . . .... ", ". .... ... .....", ". . .... ... ...", ". ", " .. ..... .", ". ... ....", ".. ........... ", " ... ....... .", " .... ...", " . ............", " .. ........ ", ".. .. ..", ".... ....... ", "...... .", ". ..............", ".... ....... .. ", "........ .... .", " ....... ...", ".. .....", " ", ". . ... .. ", " . .. . ... ", " ... .. ... .. ", "... . .. ... ", ".. . ..... .. ", " .. ... ... ", "... .. ... .. ", ". ..... ... ", " . ... ...... ", ". ... ... ... ", " .. ... ... .. ", " ......... ... ", ".... ... ... .. ", ".. ... ....... ", " ... ... ... .. ", " ", " ", " . ... ... ... .", " ....... ... .. ", " . ... ... ... .", " ....... ... .. ", " . . ", " ... ...........", " . . ....... .", " ....... .", "................", "....... .. . ", "....... .. . ", " .. .. . ", " . . ...........", " ... ... . . ", " . . ... . . ", " ... ", " ... . ... ... .", " ... ... ... ...", " ... . ... ... .", " ... ... ... ...", " ... . ... ... ", ".... ......... .", ".... . ... .. ..", ".... ... ... . ", ".... . .... ", ". . .. .. ... ", ". . . ... . ", ". . .... . ", ".... . .. .. ", ". . ... . . . ", ". . .. . . . .", " ", ".. ... .", " ... .. ... ", ".. . . . .", " .. . .. . ..", ". . . ", ". .. . . .. . .", " .. . . .. .", ". .. . . ", " .. .. . . .", ".. . ... . ", " .. .. .", " .. . .... ", ". ... . .... ", ". .. . . ...", " ........ ......", " ", ".. ... ... ... ", " ... ....... .. ", " ... ... ... ", ". . . ... .. ", " . .. ... ... ", " . . ... .. ", " .... .. ... ", " . ...... ", " .. . . ... ", " . .. ... .. ", ". .. .. ... ", " . .. .. ", "... . ... ", " .. .. . .. ", ". . .. .. ... ", " ... ... . . ", " . . ...........", " ... ...........", " . . ... . . ", " ... ... . . ", " . . ... . . ", " ... ...........", " . . .. . .. ", " ... .. . .. ", " . . .. . .. ", " ... ...........", " . . ....... ...", " ... .. . . . ", " . . .. . . . ", " ... .. . . . ", " . . ...........", ". . . .. . .", ".... .. . ", ".... .. . . ", ". .. . . . .", ". . . . .", ". . . ... . .", ".... . . . . .", ". . . . . .", ". . ... . .", ". . . . . .", ".... . . . .", ".... . ... .", " . . . . . .", " . ... . .", " . . ... .", ".... . . . . .", " ", "..... ..........", ".. .... .... .", " ", " . . . . . . . ", " . . . . . . . .", " ...............", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . ....... . .", " . . . .. ", ".. . ... . ... ", ". .. . .... ", " .. . . . ... ", " .. . . . . .. ", " . . . . ... ", " .. . . . . .. ", " .. . . ... ", " . . .. . . .. ", " .. . . ... ", " .. . .. . . .. ", " .. . . . ... ", " .. . . . . .. ", " . . . . ... ", " .. . . . . .. ", " . . . .... ", " ... .. . . .", " ... .. . . .", " ... .. . . .", " . . ...........", " ... ...........", " . . ... . . ", " ... ... . . ", " . . ... . . ", " ... ...........", " . . .. . . ", " ... .. . . .", " . . .. . . .", " ... ...........", " . . ...........", " ... .. .. . ", " . . .. .. . ", " .. . . . . .", " .. . ... .", " .. . . . . .", "... . . . . .", ".... . ... . .", ". . . . . .", ". . . . .", ". ... .. . .", ".... . . . .", ". . . . . .", ". . . ... . . ", ". . . . . .. ", ".... . . . . ", ".... . ... . .", ". . . ... ", ". . . .. . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ...............", " . . . . . . . .", " . . . . . . . ", " ", "................", " ", ". .... ........", ".. . . . . . ", " .. . . . . .. ", " .. . .. . ... ", " .. . . . . .. ", " .. . . . ... ", " .. . . . .. ", " .. . . ... ", " .. . . . . .. ", " .. . . . ... ", " .. . . . .. ", " .. . . . ... ", " . .. . . .. ", " . . .. . ... ", " . . ... . . .. ", " . . . ... ", " . .. . .. .. ", ". . . .. .... ", " .. .. . ", "................", "........ . . ", "........ . . ", " ... . . ", " . .. ..........", " ... . .... ....", " . ... ........", " ... ... ...", " . ... ... . .. ", " ... .. ", " . . .. . .. ", " .. . . . ...", " . ...", " .. .. .. ...", " ...", ". . . . .. . ", ".... . .... . ", ". . . . ... ..", ". . . ..... ", ". . .. .. ... ", ".... ... ...... ", ". .. ... ... ...", ".... . .. ......", ". .... . . .", " ... .. ...", " . .. .. ...", " ........ . ..", ". . . .... ", ". .... ... .....", ". . .... ... ...", ". ", " .. ..... ", ". . . ", ". .. . ..... ", " . .. .", " ... ...", " . . . . .. . ", " .. .. . .. ", ".. .. . ", ".... .. .... ", "...... .", ". ..............", ".... ....... .. ", "........ .... .", " ....... ...", ".. .....", " ", ". . ... .. ", " . .. . ... ", " . . .. ... .. ", " . . .. ... ", " . . ..... .. ", " . ... ... ", "... .. ...... ", ". ..... ... ", " . ... ... .. ", ". ... ... ... ", " .. ... ... .. ", " ......... ... ", ".... ... ... .. ", ".. ... ....... ", " ... ... ... .. ", " ", "................", "................", "................", ". . . ..........", " ...... ", ".. . . ........", " .... . ", ".. . ........", " .. . ", ".. . ........", " .. . . ", ".. . ........", " .. . . ", ".. . ..... .", " .. . .", ".. . .... ...", "............ ", ".......... ", "........ . ...", "...... . ... .", " ... ...", "...... ....... .", " . ... ...", "..... ... .....", " .. ... ...", ".... ... ... .", " ...... ...", " . . ... ... .", " . . .. .......", "...... ... ... .", " . . . . ... ...", "....... ...... .", " ..............", " ............", " . ........ ", ".. . ...... .", " ... ..", "...... .... . .", " ... . . ...", ".. ... .. ....", " ... .. . ...", "...... . .. .", " ... .. ...", ".. ... . ....", " ... .. . ...", "...... ... . .", " ... . . . ...", ".. ... ...... .", ".. .......", " .....", " ... ... ....", ".. ... ... ...", " ... ... .. ...", ".. ....... . . ", " ... ... ... ..", "...... ...... ", " ... ... ... .", ".. ... ... .. . ", " ....... ... .", ".. ... ... .. . ", " ... ....... .", "...... ... .. ", " ... ... ... ..", ".. ....... . . ", " .. . ...", ".. . ... . ..", " .. . . ....", "... . ... ....", " .. . ....", ". . . ... ....", " .. . ....", ". . . .... . .", " .. . . ...", ". . . ..... ..", " .. . .", ". . ...... ", " .. . . ", ". . . ........", " .. . . ", ". . ....... ", ".. .... ... ...", "........ ... .", ".......... ...", ".... ....... ", "............. ", "........ .. . .", ".............. ", "............. ..", "............. ", "............ ...", "........... ", "... ..... ....", " ...... . ", ".. ........", " . ", "................", ".... . .... .", ".. . ........ ", " . ...........", " ........ .....", " ..............", ". ............ .", " ..............", ".. . ...........", " .............", "... ............", ". ...........", ".... ... ..... ", " ...... ", "........ ..", " . . ", ". ..............", " ... ... .. ...", ".. ... ... .. ", " .. ... . ...", ".. .. .... ", "... . ...", ". . ..... .... ", ".... . . . .", "... ...... .... ", "... ... .", ".. ....... ... ", ". . . ...", " ........ .... ", " . . ...", ".......... .... ", " . ... .", ".......... .... ", " .. . ", ". . ....... ", " .. .. . .. . ", ". ....... . ", " .. . ", ". ... ... . . ", " . . ... ... . ", ". ........ . . ", " . ..... ... . ", ". ........ . . ", " . ......... . ", ". ........ . . ", " . ......... . ", ". ........ . . ", " . ......... . ", ". ........ . . ", "................", "................", "... ..... ..", ".. ... . ... .", ". .... ..... .", ".. .... . ... .", "... .. ... .. .", "... . .. .. . ..", ".... .. .. ...", "... . .. .. . ..", "... .. ... .. ..", ".. .... . .... .", ".. ..... ..... .", ".. ... . ... .", "... ..... ..", "................", ". ", ". ..............", ". ", ". ..............", ". ..............", ". ........... ..", ". ........ . ...", ". ....... ....", ". ...... . .....", ". ..... ........", ". ..............", ". .......... ", ". .......... ...", ". .......... ", ". .......... . .", ". .......... ...", " .....", "......... .... ", " .. .......", "..... . .. .... ", "..... . .......", "..... ... .... ", "..... .. ..... .", "..... ........ ", "..... ..........", "..... ........ ", "..... ..........", " ........ ", " ... ......... ", " ........... ", ".. ", "............... ", " . ......... . ", ". . ...... . . ", " ........... . ", ". . ...... . . ", " ............ . ", ". . ...... .. . ", " . . ........ .", ". . ......... ", " . .... ", ". .... ... .... ", " . .. .. .. . .", ".... ..", " .. ........ ...", ". ... ......... ", " . . . . . . . .", ". . . . . . . . ", "................", " ", " ", "................", "................", " ", ". . . . . . . .", " ", "................", "................", "................", "................", " . .............", ". . . . ... . . ", " . . . . . . . .", ". . . . . . . . ", ". .......... ...", " .......... ...", " ........... . ", "............ . ", "............ . ", " ...", " .. . . . ...", ".. .....", " . ....... .....", ". . . . . .....", ".. . . . . ", "................", "................", "... ... . ..... ", " . . . . . . . .", ". . . . . . . . ", "............... ", "............... ", ". ............ ", ". ........ ", ". ..... ... ", "........ ... ", "........... ... ", ". . .. ... ", ". . .. ... ", ". . ..... ... ", " ... ", ". . ........... ", " . . . ... .... ", "..... . . . . . ", " . . . . . . .. ", ". . . . . . . . ", "..... .....", "... ...... ...", ".. .......... ..", ". .......... . .", ". ..... ... .. .", " .. ... . .... ", " ... .. ..... ", " .... . . .... ", " ..... .. ... ", " ..... ... .. ", " .... .. ...... ", ". .. ......... .", ". . .......... .", ".. .......... ..", "... ...... ...", "..... .....", " . . . . . ", " . ... . . ", " . . . . . ", " . . . . ", " ... . . ", " . . . ", " . . . ", " . . ", " . . ", " . ", " . ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " .", " ..", " . .", " . ..", " . . .", " . . ..", " . . . .", " . ... ..", " . . . . .", " . . . . . ", " . ... . . ", " . . . . . ", " .......... ", " . ... ... ", ".......... ", " ... ... . . .", "........ . . . ", ".. ... . . . .", "...... . . . . ", " ... . ..... .", ".... . . . . . ", ".. . . . . . .", ".. . . . . . . ", " . . . . . . .", " .. .. ", " .. .. ", " ", " ", " ", " ", " ", " .", " ..", " . .", " ....", " . ...", " ......", " . ... .", " ........", " . ... ...", " ..........", " . ... ... ", " .......... ", " . ... ... ", " ", "................", "................", "........... ..", ".......... ...", "....... . ......", "...... . .......", "..... . . ......", ".... . ... .....", "... . .........", "..... .........", "..... ..........", " ", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " ", "................", "................", "................", "................", "....... ........", ".... .....", "... . . ....", ".. . .. .. . ...", ". . ... ... ....", "................", "................", " ", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " ", "................", "................", ". ............", " ...........", "... . ........", ".... .........", "..... ........", ".... . .......", "... ... ......", "........ ......", "........ ......", " ", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . ", "... . ..........", ".... . .........", "..... .........", "..... .........", "... ........", "..... .........", "..... .........", ".... .........", "... . ..........", ".... ...........", "... ............", " ", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . ", "........ ......", ".... ... .......", "..... . ........", "...... .........", "..... . ........", ".... . .........", ". . ..........", " . ...........", " .. ............", "................", "................", " ", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " ", "................", ".. .... .... ...", ". . ... ... ....", ".. . .....", "... ......", "...... .........", "..... ..........", ".... ...........", "... ............", "................", "................", " ", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " . . ", "... ...........", "... ...........", "... . ... ......", ".... . . .......", "..... . ........", "...... . .......", "..... . . ......", ".... ... . ...", "... ..... ....", "................", "................", " ", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " ", "......... ......", "........ .......", "....... .......", "....... .......", "....... .....", "...... .......", "..... . .......", ".... .. .......", "... ... . ......", "........ . .....", "......... ......", " ", ". . . . . . . . ", " . . . . . . . .", ". . . . . . . . ", " ", " .............. ", " .............. ", " ..... ....... ", " ....... ..... ", " ...... . ..... ", " ....... ..... ", " ...... ... ... ", " .......... ... ", " ... .... .... ", " ... . ....... ", " .............. ", " .............. ", " .............. ", " .............. ", " ", " ", " .............. ", " .............. ", " ..... . ..... ", " .... .... .... ", " ..... . ...... ", " ....... .... ", " ........ ..... ", " ..... .... ... ", " ... .... .... ", " ... ......... ", " .............. ", " .............. ", " .............. ", " .............. ", " ", " ", " .............. ", " .............. ", " ..... . ...... ", " ....... ...... ", " ....... . .... ", " .... ... .... ", " ...... ... ... ", " ..... .. ..... ", " ... .... .... ", " ... ......... ", " .............. ", " .............. ", " .............. ", " .............. ", " ", " ", " .............. ", " .............. ", " ...... ....... ", " .... .. ...... ", " ....... ...... ", " ....... . .... ", " ... .. ... ... ", " ..... .... ... ", " ... ... ...... ", " ... ......... ", " .............. ", " .............. ", " .............. ", " .............. ", " ", " ", " .............. ", " .............. ", " .............. ", " ...... .. ... ", "...... .. .....", " .... .. ..... ", " ... .. ...... ", " .. ........... ", " . ............ ", " .............. ", " .............. ", " .............. ", " .............. ", " .............. ", " ", " ", " .............. ", " .............. ", " .............. ", " ....... ..... ", "...... .. ... ", " .... .. .... ", " ... .. ..... ", " .. ........... ", " . ............ ", " .............. ", " .............. ", " .............. ", " .............. ", " .............. ", " ", " ", " .............. ", " .............. ", " .............. ", " ........ .... ", "...... .. ... ", " .... . . .... ", " ... .. ..... ", " .. ........... ", " . ............ ", " .............. ", " .............. ", " .............. ", " .............. ", " .............. ", " ", " ", " .............. ", " .............. ", " .............. ", " ...... .. ... ", "...... . .....", " .... .. ..... ", " ... . ....... ", " .. ........... ", " . ............ ", " .............. ", " .............. ", " .............. ", " .............. ", " .............. ", " ", " ", " .............. ", " .............. ", " .............. ", " ..... ....... ", " .... .. ..... ", " ... .......... ", " .. ........... ", " ....... .. ... ", " ...... .... ", " ..... ........ ", " .... ......... ", " .............. ", " .............. ", " .............. ", " ", " ", " .............. ", " .............. ", " .............. ", " ...... ...... ", " .... .. ..... ", " ... .......... ", " .. ........... ", " ....... ..... ", " ...... . ... ", " ..... ........ ", " .... ......... ", " .............. ", " .............. ", " .............. ", " ", " ", " .............. ", " .............. ", " .............. ", " ....... ..... ", " .... ....... ", " ... .......... ", " .. ........... ", " ....... .... ", " ...... .. ... ", " ..... ........ ", " .... ......... ", " .............. ", " .............. ", " .............. ", " ", " ", " .............. ", " .............. ", " .............. ", " ..... .. ..... ", " .... . ...... ", " ... .......... ", " .. ........... ", " ....... . ... ", " ...... ..... ", " ..... ........ ", " .... ......... ", " .............. ", " .............. ", " .............. ", " ", " ", " ...............", " .......... ..", " ........... ...", " .... ... ..", " ... .......", " ..... .........", " .... .........", " ... . .........", " .. . ...... ...", " ... ...... ....", " .. ............", " ...............", " ...............", " ...............", " ...............", " ", " ...............", " .......... ..", " ........... ...", " .... .... ..", " ... ..........", " .. .........", " .. .........", " .. . ...... ..", " .. . ...... ...", " ... ...... ....", " .. ............", " ...............", " ...............", " ...............", " ...............", " ", " ...............", " .......... ..", " ........... ...", " .......... ..", " ... ...........", " .. . .........", " .. .........", " .. . ...... ..", " .. ...... ...", " ... ...... ....", " .. ............", " ...............", " ...............", " ...............", " ...............", " ", " ...............", " .......... ..", " ........... ...", " .......... ..", " ...............", " ..... .........", " .. ....... .", " .. ...... ..", " .. ...... ...", " ... .... ....", " .. ............", " ...............", " ...............", " ...............", " ...............", " ", " ...............", " .......... ..", " ........... ...", " .......... ..", " ...............", " ..... .........", " .... ....... .", " ... . ...... ..", " .. ... ...", " ... ... ....", " .. ............", " ...............", " ...............", " ...............", " ...............", " ", " ...............", " .......... ..", " ........... ...", " .......... ..", " ...............", " ..... .........", " .... .. ......", " ... . ... ..", " .. . . ... ...", " ... . ... ....", " .. ............", " ...............", " ...............", " ...............", " ...............", " ", " ...............", " .......... ..", " ........... ...", " .......... ..", " ....... .......", " ..... . ......", " .... ......", " ... . . ... ..", " .. . .. ... ...", " ... ...... ....", " .. ............", " ...............", " ...............", " ...............", " ...............", " ", " ...............", " .......... ..", " ........... ...", " ..... ... ..", " ...... .......", " ..... ......", " .... .. ......", " ... . .........", " .. . ...... ...", " ... ...... ....", " .. ............", " ...............", " ...............", " ...............", " ...............", "................", "................", "................", "................", "................", "....... ........", "...... .......", "..... ......", "...... .......", "....... ........", "................", "................", "................", "................", "................", "................", "................", "................", "................", "...... .........", "....... ........", ".... . . .....", "..... . ......", ".... . . .....", ".... . . ......", ".... . ......", "...... .......", "..... . ........", "................", "................", "................", "................", "......... ......", "................", ".... ... ... ...", " ...... .. ....", ". . .. .....", "... .. .. .....", "... .. .. ...", ". . . . ......", "... . .. . ....", ".... .. ... ....", ".. .. .. ....", ". .... . ....", "..... ...... ...", "..... ....... ..", "......... ......", ".... ...........", ". .... ...... ..", "......... ......", "... . . . ....", ".... .. .... ...", ".. .. . .. .....", ". . . . ..", ". . ..... . ..", ".. ...... . ....", ".. ... . . ...", "... . ...... ..", ". . . .. .. ...", "... . ...", "... ... ... ...", "...... .........", "......... .....", ".. .............", "...... . .. . ..", "... .. . .. .", " . ... ... .. ", ".. ... .. . ...", "... .... . .. ", " . . . .. ..", "... ...... . ", ". .. . .... .. ", ".. ...... ..... ", " .. .. ... .", "... . . .. .. ", " . . ... ....", " .. . .. .. ..", ". .... ....... .", " . . .. . . . ..", "... . . . ....", "....... ........", "...... .. .. ...", ".. . ... . .. ..", "... . . . .. ..", "............ . .", ".. .. .... .....", "... .. ... . ...", " ...............", ".. ......... . .", ". . ... .... ..", ".. . ...... ....", "......... ......", "... . ..... . ..", ".... .. . ......", "................", "................", "... ... ........", " . . ..... .. .", ". ... .. .....", ". .. .... . . ", " .. ... . ..... ", ". .. ....... .. ", "....... . .... ", ". ... .. ... ..", ". . . ........ ", ". . . ... . . ..", ".. .. .. .....", ".... .. ..... ..", ". ... . ... ... ", " .. .. ... ...", "... .. .. ....", "..... ... ... ..", "... ... ........", " . . ..... .. .", ". .. . . ....", ". .. ..... . . ", " .. . . ... ", ". .. ... . .. ", "....... . ... ", ". .. . .... ..", ". . . .. . ... ", ". . ... . . ..", ".. .. . .....", ".... .. ........", ". ... . .. .... ", " . . ... .. ", ".. . .. ....", "..... ... ... ..", " ", " . . ......... ", " . . ......... ", " .. . ....... . ", " . . ......... ", " . . ......... ", " . . ....... . ", " .. . ......... ", " . . ......... ", " . . ....... . ", " . . ......... ", " .. . ......... ", " . . ....... . ", " . . ......... ", " . . ......... ", " ", " ", " . . ......... ", " . . ......... ", " .. . ..... ... ", " . . ......... ", " . . ......... ", " . . ..... ... ", " .. . ......... ", " . . ......... ", " . . ..... ... ", " . . ......... ", " .. . ......... ", " . . ..... ... ", " . . ......... ", " . . ......... ", " ", " ", " . . ......... ", " . . ......... ", " .. . ... ..... ", " . . ......... ", " . . ......... ", " . . ... ..... ", " .. . ......... ", " . . ......... ", " . . ... ..... ", " . . ......... ", " .. . ......... ", " . . ... ..... ", " . . ......... ", " . . ......... ", " ", " ", " . . ......... ", " . . ......... ", " .. . . ....... ", " . . ......... ", " . . ......... ", " . . . ....... ", " .. . ......... ", " . . ......... ", " . . . ....... ", " . . ......... ", " .. . ......... ", " . . . ....... ", " . . ......... ", " . . ......... ", " ", " .. . . .. . .. ", " .. . ... . .. ", " .. . .... . .. ", " ..... . .. ", " .. ...... . .. ", " .. ... .. . .. ", " .. .. .. . .. ", " .. . . .. . ...", " . .. . ...", " .. . .. . ...", " .. . .. . ", " .. . .. .....", " .. . ... ", " .. ... . . . ", " ... . . . .", " .. ... ", " .. . . .. . .. ", " .. . ... . .. ", " .. . .... . .. ", " ..... . .. ", " .. ...... . .. ", " .. ... .. . .. ", " .. .. .. . .. ", " .. . . .. . ...", " .. . ...", " .. . . .. . ...", " .. . .. . ", " .. . . .. .....", " .. . ... ", " .. . ... . . . ", " ... . . . .", " .. ... ", " .. . . .. . .. ", " .. . ... . .. ", " .. . .... . .. ", " ..... . .. ", " .. ...... . .. ", " .. ... .. . .. ", " .. .. .. . .. ", " .. . .. . ...", " . .. . ...", " .. .. .. . ...", " .. .. .. . ", " .. .. .. .....", " .. .. ... ", " .. . ... . . . ", " ... . . . .", " .. ... ", " .. . . .. . .. ", " .. . ... . .. ", " .. . .... . .. ", " ..... . .. ", " .. ...... . .. ", " .. ... .. . .. ", " .. .. .. . .. ", " .. . . .. . ...", " .. .. . ...", " .. .. .. . ...", " .. .. .. . ", " .. .. .. .....", " .. .. ... ", " .. . ... . . . ", " ... . . . .", " .. ... ", " .. . . .. . .. ", " .. . ... . .. ", " .. . .... . .. ", " ..... . .. ", " .. ...... . .. ", " .. ... .. . .. ", " .. .. .. . .. ", " .. . . .. . ...", " .. .. . ...", " .. .. . ...", " .. .. . ", " .. .. .....", " .. .. ... ", " .. . ... . . . ", " ... . . . .", " .. ... ", " .. . . .. . .. ", " .. . ... . .. ", " .. . .... . .. ", " ..... . .. ", " .. ...... . .. ", " .. ... .. . .. ", " .. .. .. . .. ", " .. . . .. . ...", " .. .. . ...", " .. . ...", " .. . ", " .. .....", " .. .. ... ", " .. . ... . . . ", " ... . . . .", " .. ... ", " .. . . .. . .. ", " .. . ... . .. ", " .. . .... . .. ", " ..... . .. ", " .. ...... . .. ", " .. ... .. . .. ", " .. .. .. . .. ", " .. . . .. . ...", " .. .. . ...", " . .. . ...", " . .. . ", " . .. .....", " .. .. ... ", " .. . ... . . . ", " ... . . . .", " .. ... ", " .. . . .. . .. ", " .. . ... . .. ", " .. . .... . .. ", " ..... . .. ", " .. ...... . .. ", " .. ... .. . .. ", " .. .. .. . .. ", " .. . . .. . ...", " .. .. . ...", " ... .. . ...", " ... .. . ", " ... .. .....", " .. .. ... ", " .. . ... . . . ", " ... . . . .", " .. ... ", " .. . . .. . .. ", " .. . ... . .. ", " .. . .... . .. ", " ..... . .. ", " .. ...... . .. ", " .. ... .. . .. ", " .. .. .. . .. ", " .. . .. . ...", " . .. . ...", " .. .. .. . ...", " .. .. .. . ", " .. .. .. .....", " .. .. ... ", " .. . ... . . . ", " ... . . . .", " .. ... ", " .. . . .. . .. ", " .. . ... . .. ", " .. . .... . .. ", " ..... . .. ", " .. ...... . .. ", " .. ... .. . .. ", " .. .. .. . .. ", " .. . . .. . ...", " .. . ...", " .. . . .. . ...", " .. . .. . ", " .. . . .. .....", " .. . ... ", " .. . ... . . . ", " ... . . . .", " .. ... ", " .. . . .. . .. ", " .. . ... . .. ", " .. . .... . .. ", " ..... . .. ", " .. ...... . .. ", " .. ... .. . .. ", " .. .. .. . .. ", " .. . . .. . ...", " . .. . ...", " .. . .. . ...", " .. . .. . ", " .. . .. .....", " .. . ... ", " .. ... . . . ", " ... . . . .", " .. ... ", " .. . . .. . .. ", " .. . ... . .. ", " .. . .... . .. ", " ..... . .. ", " .. ...... . .. ", " .. ... .. . .. ", " .. .. .. . .. ", " .. . . .. . ...", " . .. . ...", " .. . . .. . ...", " .. . .. . ", " .. . . .. .....", " .. . ... ", " .. ... . . . ", " ... . . . .", " .. ... ", " ", "............... ", "............... ", " . ", "............. ", "............. . ", "............ . ", "........... . ", "......... .. . ", "........ .. . ", "........ . .. . ", "...... . . . . ", "....... ..... . ", "..... ....... ", "... ........ ", ".. ........ . ", " ", "............... ", "............... ", " . ", "............. . ", "............. ", "............. . ", "............ . ", ".......... . ", "............ ", "........ . .. . ", "....... .. . . ", "....... . ... . ", ".... ....... . ", "... ... ..... ", ".. ........ . ", " ", "............... ", "............... ", " . ", "........... . . ", "............. ", ".......... .. . ", ".......... . ", ".......... .. . ", "......... . . ", "...... . . .. . ", "......... .. . ", "...... .... . ", "..... ...... . ", "... ......... . ", ".. ........ . ", " ", "............... ", "............... ", " . ", "............. ", "............ ", "........... . . ", "............. ", ".......... . . ", "............. . ", "........ . . . ", "....... ... . ", "...... . . .. . ", "..... . ... . . ", "... ......... . ", ".. ........ ", ". ...... . ", " .......... . ", " ....... . . ", " ........ .. . ", "........ .. . . ", "...... ... . ", "...... . .... . ", ".... ....... . ", "... ......... . ", ".. ........ . ", ". ......... . ", " .......... . ", " ........... . ", " ............ . ", "............. . ", "............. . ", ". ....... . ", " ....... .. . ", " ...... .. ", " ......... . . ", "...... . . .. . ", "....... . ... . ", "..... ...... . ", "............. . ", "... . ....... . ", ".. ........ . ", ". ......... . ", " .......... . ", " ........... . ", " ............ . ", "............. . ", "............. . ", ". ......... ", " .......... . ", " ......... .. ", " ......... .. . ", "......... . . . ", "...... . .. . ", "...... .. ... . ", "...... ..... . ", "... . ....... . ", ".. ........ . ", ". ......... . ", " .......... . ", " ........... . ", " ............ . ", "............. . ", "............. . ", ". ........ ", " ....... . . ", " ....... .. ", " ........ .. . ", "........ .. . . ", "...... .. ... . ", "....... ..... . ", "..... ....... . ", "... ....... . ", ".. ........ . ", ". ......... . ", " .......... . ", " ........... . ", " ............ . ", "............. . ", "............. . ", " ", "................", ".............. ", "............ ...", ".......... ... .", "........... . ", "........ ... ...", "......... .. ...", "...... ..... ", "...... .. ... .", ".... . . ... . ", "... .. ... ....", ".. ....... . ...", ". ..... ....", " ..... .....", " ..... ..... ", " ", "............... ", "............. ..", ".......... . .. ", "............ .", "......... .....", ".......... . ...", "........ ... ...", "...... ..... ", "...... .. ......", ".... ........ ", "... . . .... ...", ".. ....... .....", ". ..... ....", " ..... .....", " ..... ..... ", " ", "............... ", "............. ", ".......... .. . ", "........... .", "......... .....", "......... . . ", "........ ...... ", "...... ..... ..", "....... . ... . ", ".... ...... . ", "..... .... ..", ".. . ..... . ...", ". ..... ....", " ..... .....", " ..... ..... ", " ", ".............. ", "................", ".......... .. ", "............. ..", "......... . ....", "........ . . ", ".......... .....", "...... ... ..", "..... .. ... ", ".... . ..... . ", "... .. ..... ...", ".. . .... ...", ". ..... ....", " ..... .....", " ..... ..... ", " ..", "..... .. . .. ", "... ... ... . ", ".... . .... . ", ". .... . .. . ", "... . ... . . ", " . ...... . . . ", "..... .. . . . ", ". ... . . ... . ", " .. ... ..... . ", "..... . .... . ", "... ....... . ", ".. .......... . ", ". ......... . ", " .......... . ", " ........... . ", " ..", " ... ... . .. ", "..... . ... . ", ". .... . .... . ", " ... . .. . ", "... . ... . . ", " . ... .. . . ", " . ... ...... . ", ". .. ... ... . ", " ..... . ... . ", ".... ...... . ", "... ......... . ", ".. . ........ . ", ". ......... . ", " .......... . ", " ........... . ", " . ..", " ... ...... . ", " .. ... . ", ". . . . .. . . ", " ... . .. . ", "... . .. .. . ", " ..... .. . . ", " . ... ..... . ", " ... ... ... . ", " ... . .. ... . ", ".... ........ . ", "... ....... . ", ".. . ........ . ", ". ......... . ", " .......... . ", " ........... . ", " ..", ".. . .. ... ", ". . ... . ", ". .. .. .... . ", ".... . . . ", " .. . ...... . ", " . ..... . . . ", ".... . ..... . ", " .... .. ... . ", ". ... ... ... . ", "... ........ . ", "... . ....... . ", ".. . ........ . ", ". ......... . ", " .......... . ", " ........... . ", " ", "......... .. . .", " ", "............ ...", "....... . ... ", ".... .. ..... ", "....... . ..... ", ". .. ......... .", "... ... .... . .", " ......... .....", " ....... ....", " ....... .....", "....... ......", "...... .......", "..... ........", ".... ........ ", " ", "............ .", " ", "......... ......", "...... .. . .. ", "...... .. .... ", ".... .. . ..... ", ". ... .. ... ..", "... ............", " . ....... ...", " ....... ....", " ....... .....", "....... ......", "...... .......", "..... ........", ".... ........ ", " . ", "......... . . .", " ", "......... .....", "..... ... ...", "....... ... .. ", ".. . . ..... ", "... . .. ... . ", "................", " . ....... ...", " ....... ....", " ....... .....", "....... ......", "...... .......", "..... ........", ".... ........ ", " . ", "......... .. . .", " ", "........ .......", "..... ...... ...", "..... ..... .. ", "... . . ..... ", ".. .... ... . ", "... ............", " ......... ...", " ....... ....", " ....... .....", "....... ......", "...... .......", "..... ........", ".... ........ ", " ", ".... .. ....... ", " ........ ", "..... ........ ", " .... . ", "... .. ...... . ", " ..... ...... . ", "...... ...... . ", "...... . ... . ", "...... ...... . ", "...... ...... . ", "...... ...... . ", "...... . ... . ", "...... ...... . ", "...... ...... . ", ". . .. ...... . ", " ", "... . ....... ", " . ........ ", " .. ........ ", " ... . . ", "... .. ...... . ", " .... ...... . ", "...... ...... . ", "...... . ... . ", "...... ...... . ", "...... ...... . ", "...... ...... . ", "...... . ... . ", "...... ...... . ", "...... ...... . ", ". . .. ...... . ", " . ", "..... ......... ", " ........ ", " .. .. ........ ", ".. .. . ", ". .... ...... . ", "...... ...... . ", "...... ...... . ", "...... . ... . ", "...... ...... . ", "...... ...... . ", "...... ...... . ", "...... . ... . ", "...... ...... . ", "...... ...... . ", ". . .. ...... . ", " . ", "..... ......... ", " . ........ ", " . .. ........ ", ".. .. . ", ". .... ...... . ", "...... ...... . ", "...... ...... . ", "...... . ... . ", "...... ...... . ", "...... ...... . ", "...... ...... . ", "...... . ... . ", "...... ...... . ", "...... ...... . ", ". . .. ...... . ", " . ", "... .. .. ..... ", ". . . ...... ", " ... ....... .. ", " . ........ . ", ". .. . ", "..... .... .. . ", "..... ... . .. ", ".. ... . . . . ", ".... .. .... ", "... .... . . . ", " . . . .. . . ", ". .. .... . . ", " ........ .... ", ".......... . . ", "...... . .... ", " ", "....... ..... ", ".. . . ...... ", ". . .. . .. .. ", " .......... .. ", ". .. . ", ".......... .. . ", "......... .. ", "....... . . ", ".... .. .... ", "...... ... .... ", "... ..... . .. ", ".. ....... . . ", " . ............ ", "........ ...... ", "........ . . . ", " ", "..... ... ... . ", ".. . . . . . ", ".. . ... . .. ", " .... ..... .. ", ". ... ", ". ........ .. ", "......... . ", "....... . . .. ", "..... .. . . .. ", "...... .. .. . ", ".. .. ... . .. ", ". . ..... . . ", " ......... .... ", ".......... . ", ".......... .. ", " ", "......... .... ", ".. . . . .... ", "... . . .... .. ", " .. ... ... .. ", " .... ", ".......... ... ", "......... . ", "....... .. . . ", "...... .. .. ", ".... .. . .... ", ".. . . . . .. ", ". . . .... . . ", " ........ .... ", ".......... .... ", ".......... .. . ", "......... . . ", ".... .. .. .. ", "..... .. . . . ", ".... . ... .... ", ".. .. .. . . .. ", ". . . .... .... ", " ......... .... ", ".......... .... ", ".......... . .. ", ".......... .... ", ".......... .... ", "... ... .... ", ".... .... . .. ", ".... .... .... ", ".... .... .... ", ".... .... .... ", "...... . . . ", "..... . .. ", ".... ... . . . ", ".. .. .... .... ", " ... ... . .. ", ". . .... .... ", " ......... .... ", ".......... .... ", ".......... . .. ", ".......... .... ", ".......... .... ", "... ... .... ", ".... .... . .. ", ".... .... .... ", ".... .... .... ", ".... .... .... ", "...... . . . . ", "..... .. . . .. ", "..... . ", ".... .. .. .... ", ". . .. ... . .. ", ". ....... .... ", " ......... .... ", ".......... .... ", ".......... . .. ", ".......... .... ", ".......... .... ", "... ... .... ", ".... .... . .. ", ".... .... .... ", ".... .... .... ", ".... .... .... ", ".......... . ", "......... . . ", "....... . . . ", ".... . . . .. ", ".. .. . . .. ", ". .. ..... .... ", " ......... .... ", ".......... .... ", ".......... . .. ", ".......... .... ", ".......... .... ", "... ... .... ", ".... .... . .. ", ".... .... .... ", ".... .... .... ", ".... .... .... ", "................", " .... .... . . .", " .. .. . . ... ", ". ", " . . . . .. ...", " . ...........", " ... ........ .", ".... ....... ..", ".... .. . . . ", ".... ... .. ..", "... ...... .", ".... ... . ....", " . . .........", " . ...... . .", " ... ... ... .", ".... ..... . . ", "............. . ", " ....... .. ... ", " . .. .. ... ..", ". . ", " . .. . . . .", " . ...........", " ... ......... ", ".... ..... .. ", ".... ... . .", ".... . ... ...", ".... .. .. ..", "... .. .. ....", " ... ..........", " . ........ .", " ... .... .. ..", ".... .. . . ", "......... ... ..", " ...... .. .. . ", " .. . .. . .. .", ". ", " . .. . .. ... ", " . ...........", " ... ...... ..", ".... .... .....", ".... .. .. .. .", ".... . . .. ..", ".. . . . . .. ", "... ..........", " . ..........", " .. ..........", " ... .... ... .", ".... ..... .. ", "................", " ......... . . ", " ... . ... . .", ". ", " . . ... . . ", " . ..... .....", " ... ........ .", ".... ....... ..", ".... .. .. .. .", ".... ... ....", "... .. .. . ", ".. . .. ...... ", " . ..........", " .. ........ .", " ... ...... . .", ".... ... .. . ", " .. ..... ..... ", "...... ..... ...", "... . .........", " ", ".. ........ ... ", " ... ... ... . ", ". . . ... ..... ", ". . . ........ ", " ..... ........ ", " . .... ...... ", "...... ... .... ", ". ............ ", ".... . . ... ", ".... . .. .. . ", " .. .. .. .. ", ". .. . .... .", "..... .. .. .. ", ". ... .. ......", ".. . . . . .....", " ", ". ..... ... . . ", "... .. . ... .. ", ". . . . .. . ", ".. .... ... .. ", " . . ........ ", " ......... .... ", "......... .. . ", ".. .. .. .. . ", " ............. ", " .. . . .. . ", " .. .. . .. . ", ".. .. .. .. .. .", " ..... ........ ", ". .. ... .......", ". ... ... .. ...", " ", ".. . .......... ", "....... ... ... ", " . . . .. .... ", ". .......... .. ", " . . . ... .. . ", ". . ........... ", "............... ", "...... . . . . ", "..... .. ..... ", ". .. .. .. . ", " .. .. .. .. .. ", ". .. .. .. .. .", "..... .. ...... ", "... . ... ... ..", ". .... ... ....", " ", "..... ... . ... ", ". . ........... ", ".. . . . . ", " .. . ...... . ", ". .... . .... ", "...... . .. . . ", "... . .. ...... ", "......... ..... ", " .. ..... ... ", " .. . . . . ", " . .. .. .. .. ", ".. . .. .. . .", ".... . . . ....", ".... . . . . ", "... . ........", ".. . . ... ...", " . . ..........", " .. ......... ", " ... .... ... .", ".... .. . . ...", ".... .. . .. .", ".... . . ..... ", ".... .... ....", ". .... ... .", " . . ... ... ..", " .. ..... ... ", " ... .... .....", ".... ... ......", ".... . .. ....", ".... . ...... ", "... ....... .", ".. . ...... ...", " . ..... .. .", " .. ...... .. ", " ... ... .....", ".... . . . .. .", ".... .. ......", ".... ........ ", "... ..... ....", ".. . .... ... .", " . . ... ... ..", " .. ..... ... ", " ... .... .....", ".... ... ......", ".... . . . . ", "... ... ..... ", ".... .........", ". . ..........", " . . ..........", " .. .... . . ", " ... .... .... ", ".... ...... . .", ".... .. . ...", ".... . . ..... ", "... . .. ....", ".... .... ... .", " . . ... ... ..", " .. ..... ... ", " ... .... .....", ".... ... ......", ".... ...... ..", ".... . . .. ", ".... . ........", "... ..........", " . . ...... .", " .. ......... ", " ... ..... ...", ".... ... . .. ", ".... . . . ...", ".... . .... . ", "... ..... ....", ".. . ... ... .", " .. ... ... ..", " .. ..... ... ", " ... .... .....", ".... ... ......", " .. . ..... . . ", ".... ....... . ", "... ... .... .", " ... . ..... ..", " . . ... . . .. ", ".... ... .... .", " ... ....... ..", ". ............ ", " ............. .", "............. ..", "............... ", ". ............ .", " ............ ..", "............... ", ".............. .", "............. ..", " .... .... .. ..", " . . .... .. .. ", " ... . .. ... .", ". ........... ..", " . . .... ..... ", "....... ...... .", ". ........... ..", ". ............. ", " ............. .", "............. ..", "............... ", ". ............ .", " ............ ..", "............... ", ".............. .", "............. ..", " .. .. . .. . ..", ".. ...... ..... ", ".... ..... ... .", ". ... ...... . ", " .. ... . . ", ".. .... ...... .", "... . . .... ..", ". ........ .... ", " ............. .", "............. ..", "............... ", ". ............ .", " ............ ..", "............... ", ".............. .", "............. ..", " .. . . .... ..", ". ...... . ... ", "..... . . ... .", ". ........ ..", " . .. . .. ... ", " ... .... ... .", " .. ..... . ..", ". .. . . .. . ", " ........... . .", ".. .......... ..", "............... ", ". ............ .", " ............ ..", "............... ", ".............. .", "............. ..", " ", "..... ..........", ".. .... .... .", " ", " . . . . . . . ", " . . . . . . . .", " ...............", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . ... . . . .", " ... . . . ... ", " . . ....... . .", " ", "..... ..........", ".. .... .... .", " ", " . . . . . . . ", " . . . . . . . .", " ...............", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . ... . . . .", " ... . . ..... ", " . . . ... . . .", " ... . . . ... ", " . . ....... . .", " ", "..... ..........", ".. .... .... .", " ", " . . . . . . . ", " . . . . . . . .", " ...............", " . . . . . . . .", " ... . . . ... ", " . . . . ... . .", " ....... . ... ", " . . . . . . .", " ..... . . ... ", " . . . . . . .", " ... . . ... ", " . . . ..... . .", " ", "..... ..........", ".. .... .... .", " ", " . . . . . . . ", " . . ... . . . .", " ...............", " . . ... . . . .", " ... . ..... ", " . . . . . . .", " ... ... . ... ", " . . . . . . .", " ... . . ... ", " . . . . . . . .", " ... . . . ... ", " . . ....... . .", " ", "..... ..........", ".. .... .... .", " ", " . . . . . . . ", " . . . . . . . .", " ...............", " . . . ... . . .", " ... . . ..... ", " . . ... . . . .", " ... . . ... ", " . . ... . . .", " ... . . ... ", " . . . . . . .", " ... . . . ... ", " . . ....... . .", " ", "..... ..........", ".. .... .... .", " ", " . . . . . . . ", " . . . . . . . .", " ...............", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... ... . ... ", " . . . . ... . .", " ... . . ... ", " . . ... . . . .", " ... . .. ... ", " . . ..... . . .", " ", "..... ..........", ".. .... .... .", " ", " . . . . . . . ", " . . . . . . . .", " ...............", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . ... . . . .", " ... . ... ... ", " . . ....... . .", " ", "..... ..........", ".. .... .... .", " ", " . . . . . . . ", " . . . . . . . .", " ...............", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . ....... . .", " ... . . ..... ", " . . ... . . . .", " ... . ... ... ", " . . . . . . . .", " ... . ... ", " . . . . . . . .", " ... . . .. ", " . . . . . . . .", " ...............", " . . . . . . . .", " . . . . . . . ", " ", "................", " ", ". .... ........", ".. . . . . . ", " .. . ... ... ", " . . . . . .", " ... . . . ... ", " . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ...............", " . . . . . . . .", " . . . . . . . ", " ", "................", " ", ". .... ........", ".. . . . . . ", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ...............", " . . . . . . . .", " . . . . . . . ", " ", "................", " ", ". .... ........", ".. . . . . . ", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ...............", " . . . . . . . .", " . . . . . . . ", " ", "................", " ", ". .... ........", ".. . . . . . ", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ...............", " . . . . . . . .", " . . . . . . . ", " ", "................", " ", ". .... ........", ".. . . . . . ", " ... . . ... ", " . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . . ... ", " . . . . . . . .", " ...............", " . . . . . . . .", " . . . . . . . ", " ", "................", " ", ". .... ........", ".. . . . . . ", " ... . . ... ", " . . ... . . . .", " ... . ... ... ", " . . . . . .", " ... . . . ... ", " . . . . . . . .", " ... . . ... ", " . . . . . . . .", " ...............", " . . . . . . . .", " . . . . . . . ", " ", "................", " ", ". .... ........", ".. . . . . . ", " ... . . . ... ", " . . . . . . . .", " ..... ... ... ", " . . . . . . . .", " ... ... ..... ", " . . . . . . .", " ... . . ... ", " . . . . . . .", " ...............", " . . . . . . .", " . . . . . . . ", " ", "................", " ", ". .... ........", ".. . . . . . ", " . . . . . ", " . . . . ", " .. . ... . ", " .. . . . . ", " . . . ... . .", " . . . . . ", " . . . . ..", " . . . ... ", " . . . .. ..", " . . . ... ", " .. . ... ..", " .. . ... ... ", " . . .. ... ..", " . ... ... ", " ... ... ..", " ... ... ... ", " ", " ........... ", " ... ... .. ", "... ... ... ", ". ... ... ", "... ... . ", ". ... .. ", "... ... ", ". ... ", "... . ", ". .. ", "... ", ". ", ". ", " ", " ", " ", " ", " ", " .", " . ", " . .", " . . ", " . . .", " . . . ", " . . ...", " . . . . ", " . . . . .", " . . ... . ", " . . . . . .", " . . . . . . ", " ", " ", " ........... ", ". . . . . . ", " . ... . . ", ". . . . . ", " . . . . ", "... . . ", " . . . ", ". . . ", " . . ", ". . ", " . ", ". ", " ", " ", " ", "................", "................", "... ..... ..", ".. ... . ... .", ". .... ..... .", ".. .... . ... .", "... .. ... .. .", "... . .. .. . ..", ".... .. .. ...", "... . .. .. . ..", "... .. ... .. ..", ".. .... . .... .", ".. ..... ..... .", ".. ... . ... .", "... ..... ..", "................", "................", "................", "... ..... ..", ".. ... ... .", ".. .... ..... .", ".. .... .... .", "... .. ... .. ..", "... . .. .. . ..", ".... .. .. ...", "... . .. .. . ..", "... .. ... .. ..", ".. .... . .... .", ".. ..... ..... .", ".. .. . ... .", "... .... ..", "................", "................", "................", "... ..... ..", ".. ... . ... .", ".. ..... ..... .", ".. .... . .... .", "... .. ... .. ..", "... . .. .. . ..", ".... .. .. ...", "... . .. .. . ..", ".. .. ... .. .", ".. ... . ... .", ".. ..... ..... .", ".. ... . ... .", "... ..... ..", "................", "................", "................", "... ..... ..", ".. ... ... .", ".. ..... .... .", ".. .... . .... .", "... .. ... .. ..", "... . .. .. . ..", ".... .. .. ...", "... . .. .. . ..", "... .. ... .. ..", ".. .... .... .", ".. ..... .... .", ".. ... ... .", "... ..... ..", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................" }; micropolis-activity/images/tiles-79.xpm0000664000076400007640000000522010724145723020402 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "48 48 7 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c red", "O c gray75", "+ c gray100", "@ c None", /* pixels */ "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@++o@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@X++@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@O++@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@O+++@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@XO++.@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@++++X@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@.OO@@@@@@@@X+++.@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@X+O@@@@@@@@OO++O.@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@X+O@@@@@@@@O++++X@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@.+OO OOOOOOXOOOOO.OOOOOO.@@@@@@@@@@@@@@", "@@@@@@@@@XOXX++++++++++++++++++++.O.@@@@@@@@@@@@", "@@@@@@@@@.OO.O O O O O O O.@@@@@@@@@@@@", "@@@@@@@@@X+O@+XXXXXXXOOOOO.OOOOOOO@@@@@@@@@@@@@@", "@@@@@@@@@.+O@ OOO@@@XOOOOX.@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@OO@@@@@@@@@OO++O.@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@O+++X@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@X+++.@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@X+++.@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@OO++@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@O++@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@O++@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@X+o@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" }; micropolis-activity/images/grcrimhi.xpm0000664000076400007640000000256010724145723020635 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "32 32 8 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #3F3F3F", "c c #3F3F00", "d c #7F0000", "e c #FF0000", "f c #7F3D00", "g c #BFBFBF", /* pixels */ "````````````````````````````````", "``dddddddddddddddddddddddddddd``", "`d`dddddddddddddddddddddddddd`e`", "`dd`dddddddddddddddddddddddd`ee`", "`ddd````````````````````````eee`", "`ddd`gggggggggggggggggggggg`eee`", "`ddd`gggggggggggggggggggggg`eee`", "`ddd`gggggggggggggggggggggg`eee`", "`ddd`ggbbgb``````gggggggbgg`eee`", "`ddd`ggg```bbbbbbbbbbbbb`gg`eee`", "`ddd`ggg```b```b`````````gg`eee`", "`ddd`ggg```b```b`gggggggggg`eee`", "`ddd`ggg`````````gggggggagg`eee`", "`ddd`ggcc``gbg`gggggggabggg`eee`", "`ddd`ggccc`gbg`gggggabbaggg`eee`", "`ddd`gccccg```ggggabbabgggg`eee`", "`ddd`gcfccgggggggabbabagggg`eee`", "`ddd`gccccggggggabbabbggggg`eee`", "`ddd`gccccgg`gggbbabbaggggg`eee`", "`ddd`ggggggga`gababbagggggg`eee`", "`ddd`gggggggga`babbaggggggg`eee`", "`ddd`ggggggggga`baggggggggg`eee`", "`ddd`ggggggggcca`gggggggggg`eee`", "`ddd`gggggggcfcga`ggggggggg`eee`", "`ddd`ggggggcfcggga`gggggggg`eee`", "`ddd`ggggggccgggggggggggggg`eee`", "`ddd`gggggggggggggggggggggg`eee`", "`ddd````````````````````````eee`", "`dd`eeeeeeeeeeeeeeeeeeeeeeee`ee`", "`d`eeeeeeeeeeeeeeeeeeeeeeeeee`e`", "``eeeeeeeeeeeeeeeeeeeeeeeeeeee``", "````````````````````````````````" }; micropolis-activity/images/iccom.xpm0000664000076400007640000000421210724145723020117 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "34 50 11 1", /* colors */ "# c #000000", "a c #0000AF", "b c #00FF00", "c c #5D5D5D", "d c #007F00", "e c #BF7900", "f c #4F4FFF", " c #FFFFFF", "h c #7F7F00", "i c #BFBFBF", "j c #0000FF", /* pixels */ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii", "iffffffffffffffffffffffffffffffffc", "iffffffffffffffffffffffffffffffffc", "iffccccccccccccccccccccccccccccffc", "iffc##########################iffc", "iffc# # # hhhhhhhhhhhhh # # ##iffc", "iffc## # #hhhhhhhhhhhhhh # # #iffc", "iffc# # # hhccccccccccccc # ##iffc", "iffc## # #hhc#####c#####c# # #iffc", "iffc# # # hhc#####caaaaaaa# ##iffc", "iffc## # #hhcccccccajjjjjjj# #iffc", "iffc# # # hhc#####cajaajaaj ##iffc", "iffc## # #hhc#####cajaajaaj# #iffc", "iffc# # # hhcccccccajjjjjjj ##iffc", "iffc## # #hhc#####cajaajaaj# #iffc", "iffc# #dddddddddd#cajaajaaj ##iffc", "iffc## dbbbbbbbbbbcajjjjjjj# #iffc", "iffc# #dbccbccbccbcajaajaaj ##iffc", "iffc## dbccbccbccbcajaajaaj# #iffc", "iffc# #dbbbbbbbbbbcajjjjjjj ##iffc", "iffc## dbccbccbccbcajaajaaj# #iffc", "iffc##fdbccbccbccbcajaajaajff#iffc", "iffc##fdbbbbbbbbbbcajjjjjjj#f#iffc", "iffc##fdbccbccbccbcajaajaaj#f#iffc", "iffc##fdbccbccbccb ajaajaaj#f#iffc", "iffc##f bbbbbbbbbb# jjjjjjj#f#iffc", "iffc##f# # # # # # # # # # #f#iffc", "iffc##f # # # #fffff# # # ##f#iffc", "iffc##f# # # #ff###ff# # # #f#iffc", "iffc##f # # #ff## ##ff# # ##f#iffc", "iffc##f# # ##ff# # ### # # #f#iffc", "iffc##f # # #ff # # # # # ##f#iffc", "iffc##f# # ##ff# # # # # # #f#iffc", "iffc##f # # #ff # # # # # ##f#iffc", "iffc##f# # ##ff# # # # # # #f#iffc", "iffc##f # # #ff # # ff# # ##f#iffc", "iffc##f# # ###ff # ff# # # #f#iffc", "iffc##f # # ###fffff# # # ##f#iffc", "iffc##f# # # ####### # # # #f#iffc", "iffc##f # # # # # # # # # ##f#iffc", "iffc##f# # # # # # # # # # #f#iffc", "iffc##f # # # # # # # # # ##f#iffc", "iffc##f# # # # # # # # # # #f#iffc", "iffc##fffffffffffffffffffffff#iffc", "iffc##########################iffc", "iffc##########################iffc", "iffciiiiiiiiiiiiiiiiiiiiiiiiiiiffc", "iffffffffffffffffffffffffffffffffc", "iffffffffffffffffffffffffffffffffc", "iccccccccccccccccccccccccccccccccc" }; micropolis-activity/images/tiles-97.xpm0000664000076400007640000000520210724145723020402 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "48 48 6 1", " c black", ". c red", "X c #FFFF7F7F0000", "o c yellow", "O c gray100", "+ c None", /* pixels */ "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++XXXX.+++++", "+++++++++++++++++++++++++++++OXX++++XoXXXXX.++++", "++++++++++++++++++++++++++++OXXXX++XooXXXo.X++++", "++++++++++++++++++++++++++++XXXX++XOXXXXooX.++++", "+++++++++++++++++++++++++++XXXXX+XOXXXX..X.X++++", "+++++++++++++++++++++++++++XXXX XXXXXX..X.X+++++", "++++++++++++++++++++++++++XXXXXXOXXXXXXX.X++++++", "+++++++++++++++++++++++++XOXXXXOXXXXXXX..+++++++", "+++++++++++++++++++++++++XXOXXOXXXXXXX..++++++++", "+++++++++++++++++++++++++XXXXXXXXXXXX..+++++++++", "+++++++++++++++++++++++++XXXXOXXXXXX.X.+++++++++", "++++++++++++++++++++++++++++XXXXXXXXX.X+++++++++", "+++++++++++++++++++++++++++XXXXXXXXX.X.+++++++++", "+++++++++++++++++++++OX+++XXXXXXXXX.X.X.++++++++", "++++++++++++++++++++OXXX+XXXXXXXXX.X.X.X++++++++", "+++++++++++++++++++XXXOXXOXXXXXXXXX.X.X.++++++++", "++++++++++++++++++XXXOXXOXXXXXXXXX.X.X.X++++++++", "++++++++++++++++++XXOXXXXXXXXXXXX.X...X.++++++++", "+++++++++++++++++XXXXXXXXXXXXXXX.X.....X.X++++++", "+++++++++++++++++XXXXXOXXXXXXXX.X..++...X.++++++", "+++++++++++++++++XXXXXXXXXXXXXXX..+++....+++++++", "++++++++++++++++++XXXOXXXXXXXXX...+++...++++++++", "+++++++++++++++++++XXXXXXXXXXXX.X.+++..+++++++++", "+++++++++++++++++++XXXXXXXXXXX.X..++++++++++++++", "+++++X+++++++++++++XOXXXXX.XX.X.X+++++++++++++++", "+++++X+++++++++++++XXXXXXXXX.X.X.+++++++++++++++", "+++++XX+++++++++++XXXXXXXXX.X.X..+++++++++++++++", "+++++XXX+++++++++XXXXXXXX....X.X.+++++++++++++++", "+++++XXX+++++++++XOXXXXX..+...X.++++++++++++++++", "++++++XXX+++++++XOXXXXX..++..X..++++++++++++++++", "++++++XXXX+++++XXXXXXX..+++....+++++++++++++++++", "+++++++XXXX+++XOXXXXX..+++.......+++++++++++++++", "+++++++.XXXXXXXXXXX...+++........+++++++++++++++", "++++++++.XXXXXXXXX...+++++......++++++++++++++++", "+++++++++.XXXXXXX...++++++++++++++++++++++++++++", "++++++++++..XXX....+++++++++++++++++++++++++++++", "+++++++++++.....++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++" }; micropolis-activity/images/tiles-134.xpm0000664000076400007640000001031510724145723020453 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "67 57 8 1", " c black", ". c #00007F7F0000", "X c #585858585858", "o c gray50", "O c #7F7F7F7FFFFF", "+ c green", "@ c #FFFFBFBF7F7F", "# c #DFDFDFDFDFDF", /* pixels */ " ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX # ", " XX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ## ", " XXX ### ", " XXX @@@@@@@@@@@@@@@@@@.@OOO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ### ", " XXX @@@@@@@@@@@@.@@@@@@@OOO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ### ", " XXX @@.@@@@@@@@@@@@@@@@@OOO@@@@@.@@@@@@@.@@@@@@@@@@.@@@@@@@@@ ### ", " XXX @@@@@++++@@@@++@@@@@OOO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ### ", " XXX @@@@@++@.@@@+++@@@@@OOO@@@@@@+++@@@@@@@@@@@@@@@@@@@@@@@@@ ### ", " XXX @@@@@@@@@@@++@+@@@@ OOOO@@@@@+++@@@@@@@@@@@@@@@@.@@@@@@@@ ### ", " XXX @@@@@+@@@@@@@@@@@@@@OOOO@@@@@@@@@@@@@@@@@@@.@@@@@@@@@@@@@ ### ", " XXX @@@@@@@@@@@@@@@@@@@@@OOOO @@@@@@@@@@@@@@@@@@@@@@@@@.@@@@@ ### ", " XXX @@.@@@@@@@@@@@@@@@@@@@ OOOO@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@ ### ", " XXX @@@@@++@@@@@@@@.@+@@@@@OOOOO@@@@@@@@++++@@@@@@@@@@@@@@@@@ ### ", " XXX @@@@@@++++++@@@@+@@@@@@@OOOO@@@@@@@+++++@@@@@@@@@@@@@@@O@ ### ", " XXX @@@@@@.@+@@@+@@@.@+++@@@@OOOO@@@@@@@@+++@@@@@@@@@@@@@OOO@ ### ", " XXX @@@@@@@@@@@++@@@@@++++@@@OOOO@@@@@@@@@@@@@@@@@@@@@@OOO@@@ ### ", " XXX @@@@@@@@@@@@@@@@@@@@@+@@@OOOOO@@@@@@@@@@@@@@OOOOOOOO@@@@@ ### ", " XXX @@+@@@@@@+@@@@@@@@@@@@OOOOOOOOO@@@@@@@OOOOOOO@@@OOO@@@@@@ ### ", " XXX @@@@@@++++@@@@@@OOO@@OOOOOOOOOOO@ @@@OO@@@@@@+@@@@OO@@@@@ ### ", " XXX @@.+++OOOOOOOOOOOOOOOOOOOOO@@@@OOOOOOO@@@@@@@++@@@@O@@@@@ ### ", " XXX @@@@@OO@@OOOOOOOOOOOOOOOO @@@@@@@@@@@@@@@@@@@@+++@@@O@@@@ ### ", " XXX @@@OOO@@@O OOOOOOOOO@@@@@@@@@ @@@@@@@@@@@@@.@@@+@@@OO@@@ ### ", " XXX @@OO@@@@OOOOO@@@@@@@@@@@@@@ oo @ ooo++@@+++@@@@@@@@@@O@@@ ### ", " XXX @OO@@@@@OOOO@@@@@@@@@@ @@@@ oo @ ooo@@@@++++@@@@@@@@@O@@@ ### ", " XXX OO@@@@@OOOOO@@@@@@@@ oo o@@oo@@@@@@@@@@@@@@@+@@@@@ ### ", " XXX O@@@@@@OOOO@@@@@@@@@ o oooo oo o oo @@@@@@@@@.@@@@@+@@.@@ ### ", " XXX @@@@@@@OOOO@@@@+@@@@ o ooo o @@@+@@@@@@@++@@@@@@ ### ", " XXX @+@@@@@OOO@@++++@@@ o ooooo ooooo@ oo@@@@@+@@++@@+@+@@@@ ### ", " XXX @++@@@OOOO@@+@++@@@ o o @ oo@@@@@++@@@@@+@+@@@@ ### ", " XXX +++++@OOOO@@+++++@@@@ oo oo o @@@+@.@@@+.@+@@@ ### ", " XXX @@@++@OOOO@@@@@+@@@@@ oo oo oo oo @ @oo@@@@@@@@@@@@+@@@@@ ### ", " XXX @@@@@@OOOOO@@@@@@@@@@ o oo oo oo @@@oo@@@+@@+@@@@@@++@@@ ### ", " XXX @@@@@@@OOOO@@@@@@@@@@@ oo oo @@@@@@@@+++@@@@@@@++@@@ ### ", " XXX @@@@@@@OOOOO@@@@@@@@@@@@@@@@@@@@@@@@OOO@@@@@++@@@@@@+++@@ ### ", " XXX @@@@@@@@OOOOO@@@@@@@@@@@@ @ OOOOOOOOO.OO@@@@@@@@@@@@@@@@@ ### ", " XXX @@@@.@@@@OOOOOOO @@@ OOOOOOOOOOOOO@@@@@OOO@@@@@@ @@@@.@@@ ### ", " XXX @@@@@@@@@@OOOOOOOO@OOOOOOOOOOOOOOOOO@@@@@OO@@@@OOO@.@@@@@ ### ", " XXX @@@@@@@@@@@OOOOOOOOOOOOOO@.@.@.OOOOOO@@@@@OO@OOOOOO@@@@@@ ### ", " XXX @@@@@@@@@@@@OOOOOOOOO @@@@@@@@@.@OOOOO@@@@@OOOOOOOO.@@@@@ ### ", " XXX @@@@@@@@@@@@@OOO @@@@@@@@@@@@@@@@@OOOOO@@@@@.@.OOO.@@@@@@ ### ", " XXX @@@@+@@@@@@@@@@OOOO @@@@@@@@@++@@@@OOOOO@@@@@@@.@.@@.@@@@ ### ", " XXX @@@@+@@@@@@@@@@@@@OOO@@@@@@+@@@@@@@@OOOO@@@@@@@@@@@@@@@@@ ### ", " XXX @@+@@@@@@@@@@@@@@@@@OO@@@@@+.@@++@@@@OOO@@@@@@@@@@@@@@@+@ ### ", " XXX @@+++.@@@@@@+@@@@@@@@O@@@@@@@@@@@@@@@@OOO@.@@@@+@@+++@@+@ ### ", " XXX @@@@@@+++.@@+@@@@@@@@O@@@@@@@@@@@.@@@.OOOO@@@@@@@@@@@@@@@ ### ", " XXX @@@@@@@@+@+@@@@@.@@@@OO@@@++@@@@+@@@@@OOOOO@@@@@@@+.@@@@@ ### ", " XXX @@@@@@@@@@@++++@@@@@@@O@@@@@@+@+@@+@@@@OOOOO@@++@@@@@@@@@ ### ", " XXX @@@@.@+@@@@@@@@@@@@@@@O@@@@.@+@@.@@+@@@@OOOO.@@@+@@.@@@@@ ### ", " XXX @@@@@@@@@@@@@@+@@@@@@OO@@@@@@@@@@@@@@@@@@OOOOO@@@@@@@@@@@ ### ", " XXX @@@@@@@@@@@@@@@@@@@@@O.@@@@@@@@@@@@@@@@@.OOOOO.@@@@@@@@@@ ### ", " XXX ### ", " XX ########################################################### ## ", " X ############################################################# # ", " ############################################################### ", " " }; micropolis-activity/images/tiles-45.xpm0000664000076400007640000000317110724145723020376 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "56 24 7 1", " c black", ". c #7F7F7F7F0000", "X c #5D5D5D5D5D5D", "o c gray50", "O c red", "+ c gray75", "@ c gray100", /* pixels */ "++++++++++++++++++++++++++++++++++++++++++++++++++++++++", "+XXXX....XXXX....XXXX....XXXX....XXXX....XXXX....XXXX..X", "+XXXX....XXXX....XXXX....XXXX....XXXX....XXXX....XXXX..X", "+..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..X", "+..X@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+XXX", "+..X@@@@@@@@@@@@@@@@@@@+++++++++++++++++++@@@@@@@@@@+XXX", "+XXX@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@ @@@@@@@@@+XXX", "+XXX@@ ..@ ..@ ..@ .+ o@O@@@@@@@@@@@@@@@O@ X.@ ..@@@+XXX", "+XXX@@ ..@ ..@ ..@ ++o @@@@@@@@@@@@@@@@@@@XX.@ ..@@@+..X", "+XXX@@ooooooooooooo++ @@@@@@@@@@@@@@@@@@@ Xoooooo@@+..X", "+..X@@ ..X ..X ..X ++ ++XX++XX++XX++XX+ X.X ..X@@+..X", "+..X@@ ..@ ..@ ..@ +++ ooXXooXXooXXooXXooooX.@ ..@@@+..X", "+..X@@ ..@ ..@ ..@ ++oooooooooooooooooooooX..@ ..@@@+XXX", "+..X@@ ..@ ..@ ..@ ..ooXXXXooooooooXXXXooX ..@ ..@@@+XXX", "+XXX@@oooooooooooooooooooooooooooooooooooooooooooo@@+XXX", "+XXX@@ ..X ..X ..X ..X ..X ..X ..X ..X ..X ..X ..X@@+XXX", "+XXX@@ ..@ ..@ ..@ ..@ ..@ ..@ ..@ ..@ ..@ ..@ ..@@@+..X", "+XXX@@ @ @ @ @ @ @ @ @ @ @ @@@+..X", "+..X@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+..X", "+..X@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+..X", "+..X+++++++++++++++++++++++++++++++++++++++++++++++++..X", "+..XXXX....XXXX....XXXX....XXXX....XXXX....XXXX....XXXXX", "+..XXXX....XXXX....XXXX....XXXX....XXXX....XXXX....XXXXX", "+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }; micropolis-activity/images/tiles-118.xpm0000664000076400007640000000516410724145723020463 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "48 48 5 1", " c black", ". c red", "X c #FFFF7F7F0000", "o c yellow", "O c None", /* pixels */ "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOooOOOOOOOOOOOOOOooOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOoOOOOOOOOOOOOoooOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOXXXXOOOOOOOOoOOOOOOOOOOXOOOOOOOO", "OOOOOOXOOOOOOOOOOXXXXOOOOOOOoOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOXOXOOOOOOoOXOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOXXOXOOOOoOXXOOOOOOOOOOOOOOOOOO", "OOOOOOooooOOOOOOOOOXoOXOOoOXXOOOOOOOOOOOOOOOOOOO", "OOOOooOOOXXXOOOOOOOXOoXXoOXOOOOOOOXXooooooOOOOOO", "OOOoOXXXXXOoXXXOOOOOOoXXoXOO..OOXXooXOOOOOoOOOOO", "OOOOOOOOOXXXOOoXXOOOOoOXXXOOOOOXXoXXOOOOOOOOOOOO", "OOOOOOOOOOOXXOOooXXOOoX.X.OXXOXXXXXXOOOOOOOOOOOO", "OOOOOOOOOOOOOXXOOooXXoXoXXX.OoXXXXOOOOOOOOOOOOOO", "OOOOOOOOOOOOOoXXooooOoOoXXXOoXOXOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOoOOXXOOooOooXX.OOXXOOOOOOOOXXXOOOOOO", "OOOOOOOOOOOX.XX.XOOOOooXoXoOOooOOOXXXOOOOOXOOOOO", "OOOOOOOOOOOXOOOOooooooOOooooooOooXoooooooooOOOOO", "OOOOOOOOOOOOOOooOO.XXoOoooXOoXoXXXOOOXXXXOOOOOOO", "OOOOOOOXOOOOOoOOOOOoooooXooooXXXOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOoOOXooooOOooXXXoooXXOOOXOOOOOOOOOOOO", "OOOOOOOOOOOXXOXoOOOXXoooooooooooXXXXXOOOOOOOOOOO", "OOOOOOOOOOOoXXXXXXXXOooOooooXXooooOOXXXXOOOOOOOO", "OOOOOOOOOOoOXoOOOOOoooXoooOOoXOoOoooOOOOOOOOOOOO", "OOOOOOOOOOoOXoOOOooX.oXooXoOOoXXOOOoOOOOOOOOOOOO", "OOOOOOOOOoOOoOXoooooXXoXoXXOOoXXXOOOoOOOOOOOOOOO", "OOOOOOOOoOOOXXooOOXXOOoXoOXOOOoXXOOOOoOOOOOOXOOO", "OOOOOOOOoOOXoooOO.OOXXoXOoXOOOOoXOOOOooOOOOOOOOO", "OOOOOOOOOOXXooOOOXOXXoOXOoXOXOOoXOOOOOOOOOOOOOOO", "OOOOOOOOOXOooOOOXXXOOoOXOoXOXOOOXXOOOOOOOOOOOOOO", "OOOOOOOOOOoOXXXXXOXOOoOXOoOOXOOOoXOOOOOOOOOOOOOO", "OOOOOOOOOoOoOOOOOOXOoOOXOoOOXOOOOXOOOOOOOOOOOOOO", "OOOOOOOOoOOoOOOOOXOOOOOOOoOOOOOOOXOOOOOOOOOOOOOO", "OOOOOOOOoOOoOOOOOXOOOOOOoOOOOOOOOOoOOOOOOOOOOOOO", "OOOOOOOOoOOOOOOOOOOOOOOoOOOOOOOOOOoOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOXOOOOOOOOoOOOOOOOOOOOO", "OOOOOOOOOOOOXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO" }; micropolis-activity/images/tiles-137.xpm0000664000076400007640000001030710724145723020457 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "67 57 7 1", " c black", ". c #3F3F3F3F3F3F", "X c #585858585858", "o c #3F3F3F3FFFFF", "O c #0000BFBF0000", "+ c #BFBF7F7F3F3F", "@ c #DFDFDFDFDFDF", /* pixels */ " ", " @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ", " @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ X ", " @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ XX ", " @@@ XXX ", " @@@ ++++++++++++ ++ o++++oooo++++++++ + +++++++ +++++++++++++ XXX ", " @@@ ++++++++++++ +++o++++oooo+++ +++ ++ +++++ + +++++++++++++ XXX ", " @@@ +++OOOO+++++ ++ o +++ oo++ ++ ... +++++++ + +++++++++++++ XXX ", " @@@ +OOOOOO+++++ +++oo++++oo +++ o...++++++++++ ++ ++ +++++++ XXX ", " @@@ +OOOO++ ++ +++oo+ ++oo+++ oooo..+ + ..+ ++++ XXX ", " @@@ +OOOO+++++ . + ++oo+++oo +..oooo + ...............++++++ XXX ", " @@@ +OOOO+++++ . ++++ oo+ oo. ..oo . ....... +++++ XXX ", " @@@ ++OOO++ ++.. +++ . oooo.....oo . .. +++++ XXX ", " @@@ ++OO+ +++ . ++.. ooo.... oo . .. .. +++ooo XXX ", " @@@ ++++++ . +++ ... ooo... oo . ... +++ooo XXX ", " @@@ +++++ . .. oooooooo...ooooooo..... ..++++++ooooo.. + XXX ", " @@@ ++ . . .oooooooooo.. oooooooo......ooooooooo + ..++ XXX ", " @@@ ..oo..oooooo...ooooooooooooooooo..+ + + + +++ XXX ", " @@@ +++ ooooo .. ..ooo..ooooooo............++++++++O++ XXX ", " @@@ +++++ooooooooo.........oooooooo..... . +++OOOO+O++ XXX ", " @@@ ++ + + + + ++ . .. ..ooooooo.............. + +++OOOO++ XXX ", " @@@ +++ ++++++++ ...oooooo . .. .. + ++ +++O++ XXX ", " @@@ ++O+++++ ....oooooo ...... + ++++++O++ XXX ", " @@@ +OOOOO++ ... ....... oooooo .... ... + ++ ++++ XXX ", " @@@ +OOO++ . ... ... . oooooo . ... + +++++++++ XXX ", " @@@ +OO+++++ . ..... . .. oooooo.. . ... ++++ ++++ XXX ", " @@@ +OO++... . ... . ... oooooo.. ... .... + +++++++ XXX ", " @@@ +++ .......... . ....oooooo.. ... .. . +++ XXX ", " @@@ + .......... .. ..ooooooo... .. .. ..+++++++++ XXX ", " @@@ . ..ooooooo... .. .. ..+++O+++++ XXX ", " @@@ ++ . .... ..ooooooo. . . ... . +++O++++ XXX ", " @@@ +++ ........ ooooooo... . .. . +++OOOO + XXX ", " @@@ +++ ++++++ ..... ...... ooooooo.. . .....++OOOOO++ XXX ", " @@@ +++ ++++++ .. o ooooo.. . ... ..++OOO+O++ XXX ", " @@@ +++ +++ .....oooooo.. . . .. +OOO++ XXX ", " @@@ +++ +++++++++ .... .....ooooo... .. . . ..++++OO+++ XXX ", " @@@ +++ +++++++++...........ooooo . .. . . ..++++OO ++ XXX ", " @@@ +++ +++++OO+ ... ....oooooo . . . . .. +++++ XXX ", " @@@ +++ + ++++OOO .. . . oo ooo .. . ... ......++ ++++ XXX ", " @@@ +++ ++ +++OOO ........ oo oo .. ... +++++++ XXX ", " @@@ +O+ +++ ++OOO .... .. oo oo ... . ++ ++++O++ XXX ", " @@@ O++ ++++ ++++ .... ...o. oo.... .. ... ..OO++ +OOOO++ XXX ", " @@@ O++ ++ .. oo oo.... ...... ....OOO + +++ XXX ", " @@@ ++++++++++ ...... o++ o .... . .... ...OO.OOOOOO+ + XXX ", " @@@ +++++++++++ ... ++ . ...... .. .OO.OOOOO++O+++ XXX ", " @@@ ooo+++ +++ . ++++++ ... ...........OOOOOOOOO+OOO++ XXX ", " @@@ oooo++++ .. + ... .... . ... OOOO++O++ XXX ", " @@@ ooooooooooooo.. oooooooo .oooooooooooo ... OOOO+O++ XXX ", " @@@ oooooooooooooooooooooooooooooooooooooooooooooo++++OOOO+++ XXX ", " @@@ ooooooooooooooooooooooooooooooooooooo.oooooooooo++++O++++ XXX ", " @@@ . + . + + ++oooo oooo.. .................ooooooo++++++++ XXX ", " @@@ ..+++ ++++++++++ ..+++++++++++++++++++++++oooooo+++++++ XXX ", " @@@ XXX ", " @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX ", " @ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " " }; micropolis-activity/images/obj8-3.xpm0000664000076400007640000000250110724145723020026 0ustar simcitysimcity/* XPM */ static char * obj1_3_xpm[] = { "32 32 7 1", " c None", ". c #BFBFBFBFBFBF", "X c #000000000000", "o c #FFFFFFFFFFFF", "O c #FFFF00000000", "+ c #7F7F7F7F7F7F", "@ c #3F3F3F3F3F3F", " ", " ", " ", " ", " ", " ", " ..X ", " .oooXX ", " .oOooXX+ ", " .oooooXX+ ", " .ooooo+X++ ", " .ooooo+++++ ", " .ooooo+@++@ ", " .ooooo++@+@ ", " .ooooo+@++@ ", " .ooooo++@+@ ", " .ooooo+@+++ ", " .ooooo++@++ ", " .ooooo+@+++ ", " XoOooo++@++ ", " XXoooo+@++@ ", " ..X+oo++@+@ ", " ..+XXX+++@ ", " ...XX+++@ ", " ....+++ ", " ...+ ", " ", " ", " ", " ", " ", " "}; micropolis-activity/images/obj8-2.xpm0000664000076400007640000000250110724145723020025 0ustar simcitysimcity/* XPM */ static char * obj1_2_xpm[] = { "32 32 7 1", " c None", ". c #BFBFBFBFBFBF", "X c #FFFFFFFFFFFF", "o c #000000000000", "O c #3F3F3F3F3F3F", "+ c #FFFF00000000", "@ c #7F7F7F7F7F7F", " ", " ", " ", " ", " ", " ", " ..... ", " .XooXX. ", " .XOOoX+X. ", " .oooXXXXX. ", " ..oo.XXXXX. ", " @.@.@OXXXXX. ", " O.@OO.XXXXX. ", " O.O.@OXXXXX. ", " O.@OO.XXXXX. ", " O.O.@OXXXXX. ", " @.@OO.XXXXX. ", " @.O.@OXXXXX. ", " @.@OO.XXXXX. ", " @.O.@OXXX+X. ", " O.@OO.XXXXo ", " O.O.@OXXOo ", " O.@.oooOo ", " O.@.oooO ", " @.@@@O ", " OOOO ", " ", " ", " ", " ", " ", " "}; micropolis-activity/images/icchlkhi.xpm0000664000076400007640000000275410724145723020614 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "34 34 7 1", /* colors */ "# c #000000" "` c #7F7F7F", "a c #5D5D5D", " c #FFFFFF", "c c #FFFF00", "d c #FF7700", "e c #BFBFBF", /* pixels */ "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", "e a", "e a", "e aaaaaaaaaaaaaaaaaaaaaaaaaaaa a", "e a e a", "e a e a", "e a e a", "e a e a", "e a e`` e a", "e a e```` e a", "e a e e```` e a", "e a e e ```` e a", "e a e e ` ``a e a", "e a e e ` ``a e a", "e a e e ` ``a e a", "e a e e ` ``a e a", "e a e e ` ``a ` e a", "e a e e ` ``a ` e a", "e a e e ` ``a ` e a", "e a e e ` ``a ` e a", "e a e e ` ``a ` ` e a", "e a e e ` ``a ` ` e a", "e a e e ` ``a ` ` e a", "e a e ` ``a ` ` e a", "e a e ` ``a e a", "e a ` ``ae e e e e e e e e a", "e a ``ae e e e e e e e e a", "e a eeeeeeeeeeeeeeeeee e a", "e a e a", "e a e a", "e aeeeeeeeeeeeeeeeeeeeeeeeeeee a", "e a", "e a", "eaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" }; micropolis-activity/images/tiles-2.xpm0000664000076400007640000000514210724145723020307 0ustar simcitysimcity/* XPM */ static char *tiles__[] = { /* columns rows colors chars-per-pixel */ "48 48 3 1", " c black", ". c #66666666E6E6", "X c #CCCC7E7E6666", /* pixels */ " ...............................................", " . .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXX .....XXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXX .. ..XXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXX .. XXX ..XXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXX ..XXXXX XXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXX ..XXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXX ..XXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXX ..XXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXX ..XXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXX ..XXXXX..XXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXX ..XXX.. XXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXX ..... XXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " ...............................................", " " }; micropolis-activity/images/tiles-29.xpm0000664000076400007640000000300610724145723020375 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "34 34 9 1", " c black", ". c #5D5D5D5D5D5D", "X c gray50", "o c blue", "O c #BFBF79790000", "+ c red", "@ c #FFFF77770000", "# c gray75", "$ c gray100", /* pixels */ "##################################", "#OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.", "#OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.", "#OO............................OO.", "#OO.$$$$$$$$$$$$$$$$$$$$$$$$$$#OO.", "#OO.$$$$$$$$$$$$$$$$$$$$$$$$$$#OO.", "#OO.$$$$$$$$$$$$$$$$$$$$$$$$$$#OO.", "#OO.$$$$$$$$$$$$$$$$$$$$$$$$$$#OO.", "#OO.$$$$@@+++++@$$$$$$$$$$$$$$#OO.", "#OO.$$$$+@@@@@@@$$$$$$$$$$$.$$#OO.", "#OO.$$$$++@@$$$$$$$$$$$$$$X.$$#OO.", "#OO.$$$$++@@@$$$$$$ $$$$$X.$$$#OO.", "#OO.$$$$++@@oo$$$$$ $$$$XX.$$$#OO.", "#OO.$$$$++@@o$ $$$$ $$$$ .$$$#OO.", "#OO.$$$$++@@@@@++++ +++$ .$$$#OO.", "#OO.$$$$++@@@@@@@@@@@@@$ .$$$#OO.", "#OO.$$$$++@@@@@@@@@@@@@. .$$$#OO.", "#OO.$$$$$ . @. @. @. XXX .$$$#OO.", "#OO.$$$. ............ .X .$$$#OO.", "#OO.$$ .... . . .... .$$$#OO.", "#OO.$$.... . . .... .$$$#OO.", "#OO.$$ .. .. .. .. .. .$$$#OO.", "#OO.$$ .. .. .. .. .. XX.$$$#OO.", "#OO.$$.... . . ....$X.$$$#OO.", "#OO.$$ .... . . .... $$X.$$#OO.", "#OO.$$$. ............ .$$$$.$$#OO.", "#OO.$$$$$ . $. $. $. $$$$$$$$$#OO.", "#OO.$$$$$$$$$$$$$$$$$$$$$$$$$$#OO.", "#OO.$$$$$$$$$$$$$$$$$$$$$$$$$$#OO.", "#OO.$$$$$$$$$$$$$$$$$$$$$$$$$$#OO.", "#OO.###########################OO.", "#OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.", "#OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.", "#................................." }; micropolis-activity/images/tiles-17.xpm0000664000076400007640000000266710724145723020406 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "32 32 10 1", " c black", ". c #00003F3F0000", "X c #3F3F00000000", "o c #3F3F3F3F0000", "O c #3F3F3F3F3F3F", "+ c #7F7F3D3D0000", "@ c #7F7F7F7F3F3F", "# c #3C3C0000BFBF", "$ c #3C3C0000FFFF", "% c #0000BFBF0000", /* pixels */ " ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " X XXXXXXXXXXXXXXXXXXXXXXXXXX @ ", " XX XXXXXXXXXXXXXXXXXXXXXXXX @@ ", " XXX @@@ ", " XXX ########+ooo###+o##o## @@@ ", " XXX #######oooo###+ooo#### @@@ ", " XXX #$#$#+oo#$#$+oo$o$#$#$ @@@ ", " XXX $#$#+oo#$#+ooo$#$#$#$# @@@ ", " XXX #$$+o$$$+oo$$$#$$$#$$$ @@@ ", " XXX $$$o$$$+oo$$$$$$$$$$$$ @@@ ", " XXX $$O $$O $$$$$$$$$$$$$$ @@@ ", " XXX $$O $$O $$$$$$$$$$$$$$ @@@ ", " XXX $$O $$O $$$$$$$$$$$$$$ @@@ ", " XXX $$O $$O $$$$$$$$$$$$$$ @@@ ", " XXX $$O $$O $$$$$$$$$$$$$$ @@@ ", " XXX $$O $$O $$$$$$$$$$$$$$ @@@ ", " XXX $ $$$ @@@ ", " XXX .OOOOOOOOOOOOOOOOOO... @@@ ", " XXX . ... @@@ ", " XXX . O O O O O ... @@@ ", " XXX % O O O O O ... @@@ ", " XXX . .%. @@@ ", " XXX .%.%.%.%.%.%.%.%.%.%.% @@@ ", " XXX %.%.%.%.%.%.%.%.%.%.%. @@@ ", " XXX %%%%%%%%%%%%%%%%%%%%%% @@@ ", " XXX %%%%%%%%%%%%%%%%%%%%%% @@@ ", " XXX @@@ ", " XX @@@@@@@@@@@@@@@@@@@@@@@@ @@ ", " X @@@@@@@@@@@@@@@@@@@@@@@@@@ @ ", " @@@@@@@@@@@@@@@@@@@@@@@@@@@@ ", " " }; micropolis-activity/images/obj2-4.xpm0000664000076400007640000000260110724145723020022 0ustar simcitysimcity/* XPM */ static char * obj2_4_xpm[] = { "32 32 10 1", " c None", ". c #FFFFFFFF0000", "X c #7F7F7F7F7F7F", "o c #BFBFBFBFBFBF", "O c #FFFF00000000", "+ c #FFFFFFFFFFFF", "@ c #66666666E6E6", "# c #3F3F3F3F3F3F", "$ c #000000000000", "% c #00000000E6E6", " . ", " X ", " X ", " oXoX. ", " oXo X ", " oo X ", " o . ", " o ", " OOOOOO ", " OOO o OOO ", " O oX O ", " O o+ O ", " O o+ O ", " O @o+@ O ", " O Xoo+ O ", " O Xoo+ O ", " O X XXoo++ X O ", " O X#XXoo++#X O ", " O X #Xoo+X X O ", " O X XX##++ X O ", " O X XX##++ X O ", " O X#XXoo++#X O ", " O X #$$#$o X O ", " O o #$%%$o o O ", " O #$$#$X O ", " O X$$o O ", " O XX O ", " O O ", " O O ", " O O ", " OOO OOO ", " OOOOOO "}; micropolis-activity/images/tiles-128.xpm0000664000076400007640000001027010724145723020456 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "67 57 7 1", " c black", ". c #585858585858", "X c gray50", "o c #7F7F7F7FFFFF", "O c green", "+ c #FFFFBFBF7F7F", "@ c #DFDFDFDFDFDF", /* pixels */ " ", " ............................................................... ", " . ............................................................. @ ", " .. ........................................................... @@ ", " ... @@@ ", " ... +++++++++++++++OO++++++ooo++++++++++++ooo +++++++++++++++ @@@ ", " ... ++ + ++ + ++++OOOO+++++ooo ooo++++++OO+ooo+++++++OO+O+ + @@@ ", " ... ++ + ++ + ++++OOO+++++++ooooooooo+++O++ooo+++++++OOOO @@@ ", " ... ++ + ++ + ++++++++ +++++++ +++ooo+++O+ ooo++ooo+++++++ @@@ ", " ... +++O++++++++++++++++oo+++O++oo ooo o+++++++ + @@@ ", " ... ++XXXXXXX +++OOO+++++ +++OO++++oo+++OO++ooooooooooo+ + + @@@ ", " ... X +++OOO+ ++++OOOOOOO++oo+++++++oooo+ +ooooo++ ++ @@@ ", " ... +++++++++ +++O++++++OOOOO++++++oo++ ++++ooo+++++o+oo + ++ @@@ ", " ... +++++oooo +++OOO+++++++ooooo+++o+++ ++++ ++++++++++o++ ++ @@@ ", " ... ++ oooo+o o++++OO+++++o oooooooo ++ ++++ +++++++++oo + ++ @@@ ", " ... +oooo +++ oo+++++++++oo +++oooo XXX X ++++++oooo++ ++ @@@ ", " ... oo ++++++ ooo+++++++ooX XX+ +++XX XXXXX ++++ooooo+++ ++ @@@ ", " ... + +++++++ +oooo++++oooX +X ++++++ +++oooo ++++ ++ @@@ ", " ... +++++++++ ++ooooooooo+X + ++XXXX+++++ +++++ oooo+++++ ++ @@@ ", " ... + ++++ ++++oooooo+XX o++ooooo+++++ +++ @@@ ", " ... +++++ +++ +++++++++XXXX XX++XXXXoooooooooooooo +++++ ++++ @@@ ", " ... ++++++ ++ ++++++++++++ +XXX++ooooooooooooooo X ++++ @@@ ", " ... +++++++ ++++X X XXX+oooooo XXXXXXXoooXX XXXX +OO+ @@@ ", " ... ++++++++ +++++++ XX XX XXooooo X XX X XX X +OO+ @@@ ", " ... ++ ++++++ +++++++ X X X+oooo XXX X X XXXXXX XX X ++++ @@@ ", " ... ++++++O++ ++++++ XXXX +oooo XXXXXX X XXXX X XX X ++ @@@ ", " ... +++ +++++ X X oooo X XX XX XX XX XXXXXX + @@@ ", " ... +++++++++ XXXXXX ooo XXX XXXXX XXXXXXXXX +++ @@@ ", " ... ++O++O+++ XXX X XXXXXXXX ++++ @@@ ", " ... +OOO+++++ X XX X XXXX oooXXX XXXX ++++ @@@ ", " ... +OOOO+O++ X XX X oooXXXXXXXXXXXXXX XXXXXXXXXXOO+++ @@@ ", " ... +OO++++++ X XX X XXXX X oo XX XXX X O+OO+ @@@ ", " ... ++++ ++++ XXX X XX X ooooXXXXXXXX X O++++ @@@ ", " ... + +++++++ X X X X oooo XXXX XOOO++ @@@ ", " ... +++++++++XXXXX X X XX XXXoooooooXXXXXXX XXX XO+O++ @@@ ", " ... +++++++++XXXXX X XXXXXX XXXoooooooXXXX X X X XOOO++ @@@ ", " ... ++++ oooX X X XXXX X X ++++ @@@ ", " ... ++++++ ++XX X +++ X XXXXXXXX XXX X X X XX X ++++ @@@ ", " ... +++++++++XXXXX + ++X XXXX+XXX XoXXX X XX X X X ++++ @@@ ", " ... +++++++++ XXXX + ooX X X XX XX X ++++ @@@ ", " ... +++++++++ XXXX O O+ XXX XX+o ooooooX XXX XXX XXXXX @@@ ", " ... +++++++++ X XXX OOX X+X X oo oooooXXX X XXXXX XXXXX ++++ @@@ ", " ... +++ +++++ X XXX OOXX+X+ Xooo o + XXX XXXXXX OOOOO++++ @@@ ", " ... ++++ +X+X+ XooX XXXXX X XXOO OOOOOO+ @@@ ", " ... +++++++++ XXXX X +XXXX Xooo X XXX XXXXXXXOOOOOOOOOOO @@@ ", " ... +++++++++ XXXXX X OXX+X XoooXXX XXXXX XX XX XXX OO++++ @@@ ", " ... +++++++++ XXXX oooooXX XXXXXX XXXXXXXXoooooooo++ @@@ ", " ... +++++++++++++++ +++X+XX+ooooo X XXXoooo XXXXXooooooooooo @@@ ", " ... +++++++++++++++ ++XX++O+ ooooooo oooooooooooooooo+++oooo @@@ ", " ... +++++++++++++++ ++X+++O++++ooooooooooooooooooooo+++++oooo @@@ ", " ... +++++++++++++++ +++++OO++++++oooo+++++ooooooo++++++++++++ @@@ ", " ... +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ @@@ ", " ... @@@ ", " .. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ ", " . @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ ", " @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ", " " }; micropolis-activity/images/obj5-6.xpm0000664000076400007640000000515410724145723020035 0ustar simcitysimcity/* XPM */ static char * obj5_6_xpm[] = { "48 48 6 1", " c None", ". c #FFFF7F7F0000", "X c #FFFF00000000", "o c #FFFFFFFFFFFF", "O c #000000000000", "+ c #FFFFFFFF0000", " ", " ", " ", " ", " ... ", " ... ", " ...X ", " .X.X ", " .... X.X. ", " ...o.....X.X.X ", " ..o.....X.X.X.X ", " ......X.XXX.X.X ", " ...o...XXXX ", " .......XXX ", " o.. ...o....XXX ... ", " .o............XXXX.....X ", " o........o.....XX.X.....X ", " .................XX..X.XXX ", " ...X.X..o.......X.X.X.X.XX ", " ..X.X..o.......X.X.X.X.XX ", " X.X..........X.X.X.XXXXX ", " XX..........X.XXXXX. XX ", " X...o......X.XXXXX ", " ..o......X.XXXX ", " ... .........X.XXX ", " .......o......X.XXX ", " o...............XXXXO.... ", " o.......o.......XXXXX....X ", " o..X.X...........X.....X.X. ", " ...XXXXo........X.X.X.X.X. ", " ..X. .........X.X.X.X.XX ", " . .........X.X.X.XXX ", " .........X.XXXX ", " .........X.XX ", " ........X.X ", " XX......X.X ", " XX..X..X.X ", " X+X.XX+X.X ", " .+.XX+XXX ", " ...X.XXX ", " X...XXX ", " XXXX ", " ", " ", " ", " ", " ", " "}; micropolis-activity/images/scrio.xpm0000664000076400007640000001027710724145723020154 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "67 57 8 1", /* colors */ "` c #000000", "a c #00BF00", "b c #3F3F3F", "c c #3F3FFF", "d c #BF7F3F", "e c #003F00", "f c #585858", "g c #DFDFDF", /* pixels */ "```````````````````````````````````````````````````````````````````", "``ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg``", "`g`ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg`f`", "`gg`ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg`ff`", "`ggg```````````````````````````````````````````````````````````fff`", "`ggg`ddd`dddddddddd``bbbbbbbbbb`dd`d```bbbbbbbbbbbbbbbbbbbbbbd`fff`", "`ggg`ddd`ddddbbddddbbbbbb`ddddb`dd`ddd```bbbbbbbbbbbbbbbbbbbdd`fff`", "`ggg`d`d`d`bbbbbbbbbbe`bb`dddbbbbd`ddd```````bbbbb``````bbbddc`fff`", "`ggg`ad```ebe`ebbbbbbbbbb`bb`bd`db`ddddd`bbbbb```b`bb```bbbdcc`fff`", "`ggg`aad`eebbbbbbbb`bbbbb`dd`bd`ddb`````````````````bb``bb`ccc`fff`", "`ggg`aad`eeeeeeeeee`bbbbb`bb`bbbbb`bb`bb`````````b`b```bbbbccc`fff`", "`ggg`daa````eeeeeee`````````````````dbbb``````bbbb`bbb`bbb`dcc`fff`", "`ggg`dadaaad`````eebbddbdbbb`bbbbbb`bb`bbbbbb`bbbb`bbb`bbdddcc`fff`", "`ggg`daddd`adaaad``bbddbbbbb`dddbbb```````````````````bbbdddcc`fff`", "`ggg`daaddda`aaaddddbbbbbbbd`bbbbbbbbb``bbbb`bbbbb````bbbdd`cc`fff`", "`ggg`aaaaaadd`ddadddd`dddddd`dddd``bbb`bbbbb`bbbbb`b``bb`d`bcc`fff`", "`ggg`adadaddd`ddaaaadd`dddddddddbbbbbb`bbbbb`bbbbb`bbbbb`ddbcc`fff`", "`ggg`adadaadd`ddaadaddd```a`````bbbbbb`bbbb```bbbb`bbbbb`d`bcc`fff`", "`ggg`aaadaadd``dddaadddd`daddd`bbbbbbb`bbbb```bbbb`bbb```dd`cc`fff`", "`ggg`aaddaaadd``ddaadddd`aaddb`bbbbbbb`bbbbb```bb``````````ccc`fff`", "`ggg`aaddaddadd`dd`dddaddaadbb`bb````````````````````````bcccc`fff`", "`ggg`daadaddda``bbb```aaaaa`bb`bbbbb`b`bbbbb`bbbbb`ddd`d`ccccc`fff`", "`ggg`ddaaaaaaaabbbbbbbbbbbb`bb`bbbbbbb`bbbbb`bbbbb`ddd`ddccccc`fff`", "`ggg`ddadadddaabbbbbbbbb````````````````bbbb`bbb`b`ddd```bcccc`fff`", "`ggg`d`daadddd``bbbbbbbbbbbbbb`bb`bbbb`bb``b`bbbb`````````cccc`fff`", "`ggg`d``````````bbbbbbbbbbbbbb`b`bbbb``bb````bbbbbaaaa`````ccc`fff`", "`ggg`d`bbb`bbb``bbbbbbbbbbbbbb`b`bbb````b````bbbbbaaaa`aaaaccc`fff`", "`ggg`d`bbb`bbb````````````b``````````````````````````````a`ccc`fff`", "`ggg`d`bbb`bbbddddddddd`dd```b`b`bb`````b````bbcc`aaaaaaa`cccc`fff`", "`ggg`d`bbb`bbbdddd`dddddddd`bb`bbbb`````b````bbbcc`a`a`a`ccccc`fff`", "`ggg`d`bbb`bbbd`d`ccd`ddddddbb`b`bb`````b````bbbbcc`bbb`cccccc`fff`", "`ggg`d````````dd`ccc`ddddddd`b`bbbb`````b`````bbbbcccccccccccc`fff`", "`ggg```dddddddd`ccccccddd`dd`b`bbbbbbbbbb`b````bbbbbbccccccccc`fff`", "`ggg`b`ddd`d`d`ccccccdddd`dd`b``bbbbbbbbb`b`````bbbbbbcc``cccc`fff`", "`ggg`b``d`ccccccccccc`d`d`dd`b`bbbbbbb``b`bb``````bbbb````cccc`fff`", "`ggg`b``ddcccccd`ccc`d`dd`d```````````````````bbb```bbbb```ccc`fff`", "`ggg`b``dddccccdd`d`ddddd`d`bb`bbb```bbbb`bbbbbbbbbbbbbbdd`ccc`fff`", "`ggg`b```ddccccdddddd``dd``bbb`bb`bbbbbbb`bbbbbbbbbbbbbbbdcccc`fff`", "`ggg`bb```ddd`ddddddd``dd`bbbbb`bbbbbbbbb`bbbbbbbbbbbbbbb`cccc`fff`", "`ggg`bb`d``d`````dd````````````````````````bbbbbbbb```````cccc`fff`", "`ggg`bb``````````d`````````````bbbddccccd`bbbbbb`d`dd`ddd`cccc`fff`", "`ggg`c``````````````````bb`bbbbddddcccccc`ddbbbb`d`dddddddcccc`fff`", "`ggg`cc```bbbbbb`bbbbb`bbb`bbdddbccccccccccddd`d`dddd`dddddccc`fff`", "`ggg`cccc`bbbbbb`bbbbb`bbb`ddccccccccccccccccc`d`dddcccdddddcc`fff`", "`ggg`cccc``bb````bbbbb`bdd`cccccccccccccccccccdd`dddccccddddcc`fff`", "`ggg`ccccddbbbbb`bbbbb`ddccccccccccccccccccccddd`ddcccccccdccc`fff`", "`ggg`ccccc``bbbd`dbbbb`dccccccccccccccccccccc`dd`ddcccccccdccc`fff`", "`ggg`cccccc`bbdccddddddccccccccccccccccccccccddddddccccccccccc`fff`", "`ggg`cccccccccccccccddbcccccccccccccccccccccddddddddcccccccccc`fff`", "`ggg`ccccccccccccccccccccccccccccccccccccccccddddd`dcccccccccc`fff`", "`ggg`ccccccccccccccccccccccccccccccccccccccccccccccccccccccccc`fff`", "`ggg`ccccccccccccccccccccccccccccccccccccccccccccccccccccccccc`fff`", "`ggg```````````````````````````````````````````````````````````fff`", "`gg`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`ff`", "`g`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`f`", "``fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff``", "```````````````````````````````````````````````````````````````````" }; micropolis-activity/images/tiles-8.xpm0000664000076400007640000000410410724145723020312 0ustar simcitysimcity/* XPM */ static char *tiles__[] = { /* columns rows colors chars-per-pixel */ "69 26 6 1", " c black", ". c #3F3F3F3F3F3F", "X c #727272727272", "o c #FFFFBBBB0000", "O c yellow", "+ c #DFDFDFDFDFDF", /* pixels */ " ", " +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ", " + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ X ", " ++ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ XX ", " +++ XXX ", " +++ ........................................................... XXX ", " +++ ........................................................... XXX ", " +++ ...Ooo....Oooo....Ooo......Oooo...Ooooooooo....Ooooo....... XXX ", " +++ ....Oo...Oo..Oo..Oo.Oo......Ooo...Oo.Oo..Ooo..Oo..Oo....... XXX ", " +++ ....Oo...Oo..Oo.Oo...Oo......Ooo.Oo..Oo...Oo..Oo..Oo....... XXX ", " +++ ....Oo.......Oo.Oo...Oo.......Oooo...Oo...Oo..Ooo.......... XXX ", " +++ ....Oo.......Oo.Oo...Oo.......Ooo....Oo..Ooo...Ooo......... XXX ", " +++ ....Oo......Oo..Oo...Oo........Oo....Oooooo.....Ooo........ XXX ", " +++ ....Oo......Oo..Oo...Oo........Oo....OoOoo.......Ooo....... XXX ", " +++ ....Oo.....Oo...Oo...Oo........Oo....Oo.Ooo...Oo..Oo....... XXX ", " +++ ....Oo....Oo..Oo.Oo.Oo.........Oo....Oo..Ooo..Oo..Oo....... XXX ", " +++ ...Oooo..Oooooo...Ooo.........Oooo..Oooo..OoooOoooo...Oo... XXX ", " +++ ........................................................... XXX ", " +++ ........................................................... XXX ", " +++ ........................................................... XXX ", " +++ ........................................................... XXX ", " +++ XXX ", " ++ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX ", " + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " " }; micropolis-activity/images/leftdisabled.xpm0000664000076400007640000000712410724145723021454 0ustar simcitysimcity/* XPM */ static char *leftdisabled[] = { /* columns rows colors chars-per-pixel */ "50 50 57 1", " c #4B8CB6", ". c #4C8EB9", "X c #4D90BD", "o c #508FB7", "O c #508EB8", "+ c #5591B6", "@ c #5392BC", "# c #5895BD", "$ c #4D93C1", "% c #5294C1", "& c #5399C5", "* c #549BC9", "= c #5997C0", "- c #5A9BC4", "; c #5A9EC9", ": c #4FA9CF", "> c #4CA2D4", ", c #4FA5D8", "< c #4EA9D5", "1 c #5FA0C7", "2 c #5DA1CA", "3 c #53A5D6", "4 c #54A5D9", "5 c #55A8D6", "6 c #55A8D8", "7 c #5BA5D3", "8 c #59A5DA", "9 c #5AA9D6", "0 c #5BAAD9", "q c #61A3CC", "w c #64A5D0", "e c #63A9D4", "r c #63AEDA", "t c #69A7D0", "y c #69ABD4", "u c #6AADDA", "i c #66B0DC", "p c #6AB2DD", "a c #6EB8DC", "s c #70AFD8", "d c #70B3D6", "f c #71B5DE", "g c #74B8DE", "h c #79B0DC", "j c #62AEE1", "k c #65B1E1", "l c #66B9E3", "z c #6CB4E1", "x c #6CB1E8", "c c #6CB9E0", "v c #70AFE2", "b c #72B6E0", "n c #75B8E0", "m c #7BBBE2", "M c #81BEE3", "N c #83C0E4", "B c #88C1E5", /* pixels */ "mmmMMmMmmMmmMmmmnnzaapirr0rr00007965,,>>>>>>>>>>>>", "mmMMMMMmmMmmmmmnnnbapirrr000009e044<3>>>>>>>>>>>>>", "MMMMMmMmmmmmmmmnbbbzprr0090969968337,>>>>>>>>>>>>>", "MMMMMMMMMMMMmmnnbaazir009569886<>57*3>>>>>*>>>>>>>", "NMMNNMMMmMmmmmngbbppi0965535874<5w;373>>>>333>3>>,", "NNNNNMMMMMMmmmnnbpzii05533,7<344yq**4>>>>>>3>3>34,", "MNNNMMNMMMMmmnnnbppi095,44>3844ee7&*63>3>3>333334>", "NNNBMMMNMmMmmngzapur9r85<,>4450ue*$&64334>43433344", "BNNNNNMNmNmMmnnbaprr0883:>>470yy7$$*643,33333333>4", "BBNNMNMmmmmmnnbbpprr083373338yyw&$.&66673356555447", "NNNNMMmMmmmnnnbppprr06544,33ywq;$..&69447674476747", "BNNNNMMmmmmnbbbppui00568,47eww2;$. &96495655669666", "BNNNMMmmmnnnnxaziir9008657ew7w;%.X &06606969696696", "BNNNmMmmmnnnzbpprr006446euye;;&%X..*00009669000009", "BBNNNmmmnnxnffpzrur9896eutw2;;&$$..&00008000000000", "NNNMmMmmnnmcfapirr0069euyw;;;&$@$. *0000000000r000", "BMMMmmgmnnffapiirr008eyyt2;&$$$$X..&6000000e0000r0", "BMMmmmmmgzffzpirr060euywe;%$$$.$X. &00r000rr0ii00r", "BBMMmmbbnzfpziiij00eyyy2;&%$$$$$.. &0r0rr0rri0r0r0", "BBMmmbmmggfappp0jreryww;*@$$.$$.X &9rrr0rrr0i0r0r", "MMMmmgggnfapppri0ryyyq;*$$.$$$$$X. &8rrriirrrrr00e", "MMmmmngbbffppiiiyyyyw2;%$$$$$$$.@X &0rzrriirrrr0r0", "MMMmmnnfffpppapuyttw;;%%$$$$$$$$XX.&0zirirrrrrrrr0", "NMmmnnffffzpifut22;;-=%%$$$$$$%$@@O&0ruripuirirr0r", "MMmmgggffppparp2-%==%%$$$$*$$$%%@X.-0prziiiiiirri0", "Nmmmnngzfffppfpi2==%O$O%%$$$$$%$X+o&0iprizipipirii", "NMmmnmnnffbpsizpu2=#=%$$%%%%$$%$@Xo;iiirizikppipri", "Nmmmmgznbzappzikpu-==O@$$%%%$&$&@@.*0pizripkippri0", "MMmmnggnbbfappripie;#O@$O%%%&%%%@Xo*rriizzrzpiiiir", "MMmmmgngbbffadpprxui1=@@%%$$%%%%@X@-rrzprziuppiprr", "MMMmmgngggffpppizrzru;OOO%%%%%%=@@@;ripiipzipiiiii", "BMmmmmmmgbbfzzppuprzvs;=OOO%%%%%@@o;riiippipipiiii", "MMMMMmmgnngfffaappppuuu1@@@@@&&=%@@;rpiippppppiirr", "BMMMmMmmmmnnfzpppppppvzp-#@#@&%=@@@;ipiiippppiirrr", "BMMMmmmmgmgngfbappppbzzza1#@====#ooqipiiidpippirrr", "MMMMMmmmmmnngffzfppfspixaa;##==#@#oqidiiiiiaiiirrr", "MMMMMmmMmmmnnbbbffpppbfzsbf1==#=##+qppiiipiiiiirir", "MMMMMmmmmmnmgmbbfffzabsgnbnf1=##@#+qpiipiiiiipiirr", "MNMMMmmmmmmgnnngbfffzfsbbzzfnq####oqrruipipppriirr", "MMMMmMMmmmnmnnnfbbpffffbbbbfvh1+@++qpuippiiiupiirr", "MMgMMmMmmmmnnnngbbzffpffbbbbbbu;++oqrppppiiipiiirr", "MNNmMMMmmgmnnnnnbzfffsfzzbbbpnbu-++qppppipiiipiir0", "MMMMmMmMmgmgbbbfapppupzfsbbfbbpba-+qppppppppipirrr", "MMMMMMMmmmnnbbaappppppzffzzbbazbpd=;pppppiipiiirrr", "MMMMMMMMmmnfaapppipzipppszffddfpzppyppppdpprpiirrr", "NNNNMMMMmmngapppppiizzuzuzzsaghmlaflbpbppiiuruirrr", "NNNNBMMMmmnffzzziiiirppuuppzpzzpzppaappppipriiirrr", "NNNNMBMmmgnbbppripipirrppufzffbababpapappppriirirr", "NNBNNNMMmmnngapppuiiiirizuzpappbfppbpppppzupruirrr", "NNNBNNMMmmnzfpapziirrirrrpipppbbbbappazppuiriirrr0" }; micropolis-activity/images/button2hilite.xpm0000664000076400007640000010010010724145723021612 0ustar simcitysimcity/* XPM */ static char *button_hilite[] = { /* columns rows colors chars-per-pixel */ "157 90 256 2", " c #045D02", ". c #135900", "X c #016303", "o c #00630B", "O c #016A01", "+ c #00690A", "@ c #0A6700", "# c #006813", "$ c #017301", "% c #017C01", "& c #007C0B", "* c #0A7C00", "= c #047306", "- c #007712", "; c #137A00", ": c #166200", "> c #006B2E", ", c #247400", "< c #2C557C", "1 c #265C8B", "2 c #2B5B85", "3 c #2A5D8C", "4 c #2C5782", "5 c #275E90", "6 c #315E89", "7 c #325C84", "8 c #2D608D", "9 c #2C6191", "0 c #266092", "q c #32618D", "w c #39638A", "e c #336491", "r c #396690", "t c #396893", "y c #476D92", "u c #018302", "i c #008309", "p c #018B02", "a c #008B0A", "s c #0A8200", "d c #098B00", "f c #008412", "g c #008A16", "h c #019301", "j c #00920A", "k c #019B01", "l c #009B0A", "z c #099300", "x c #0B9B00", "c c #009211", "v c #009A12", "b c #00961A", "n c #129600", "m c #118800", "M c #00902E", "N c #01A301", "B c #00A30B", "V c #00AB01", "C c #00AB0A", "Z c #09A300", "A c #0BAB00", "S c #00A312", "D c #00AB14", "F c #00A91C", "G c #01B400", "H c #00B30A", "J c #00BA02", "K c #00BA0B", "L c #09B200", "P c #0BBB00", "I c #00B412", "U c #00BA11", "Y c #00BA1C", "T c #14A800", "R c #17B700", "E c #00AC27", "W c #2AA90D", "Q c #01C302", "! c #00C20B", "~ c #00CB02", "^ c #0CC400", "/ c #0CCC00", "( c #00C90B", ") c #00C613", "_ c #01D202", "` c #00DB01", "' c #06D605", "] c #00D713", "[ c #13C800", "{ c #15D900", "} c #01E302", "| c #00E40C", " . c #01EA02", ".. c #0AE200", "X. c #04EB06", "o. c #00E815", "O. c #00F302", "+. c #01FD03", "@. c #01FD0A", "#. c #0BFD03", "$. c #0CFF0C", "%. c #05F304", "&. c #0BFF13", "*. c #0CFF1C", "=. c #00F515", "-. c #16E800", ";. c #13FC01", ":. c #15FA06", ">. c #14FF13", ",. c #14FF1A", "<. c #1AFF1A", "1. c #1CFF14", "2. c #00E726", "3. c #02FB2A", "4. c #12FF23", "5. c #1BFF23", "6. c #18FF2B", "7. c #15FF34", "8. c #25D500", "9. c #23E600", "0. c #26FC05", "q. c #27FF17", "w. c #33FC08", "e. c #35FA11", "r. c #23FF24", "t. c #28FF28", "y. c #2BFF32", "u. c #29FF3A", "i. c #32FF2C", "p. c #38FF25", "a. c #34FF33", "s. c #3BFF3B", "d. c #37FF37", "f. c #2AE93D", "g. c #00CF2F", "h. c #29FF47", "j. c #3BFF42", "k. c #3AFF4A", "l. c #39FF55", "z. c #2FFF5B", "x. c #38FF74", "c. c #18FF4E", "v. c #42FF14", "b. c #40FF01", "n. c #47FF29", "m. c #42FF33", "M. c #49FF3B", "N. c #54FF28", "B. c #52FF33", "V. c #56FF38", "C. c #67FF33", "Z. c #41FF43", "A. c #42FF49", "S. c #4BFF44", "D. c #4BFF4B", "F. c #4BFF53", "G. c #4BFF58", "H. c #56FE48", "J. c #53FF54", "K. c #54FF5A", "L. c #5BFF5B", "P. c #5CFF54", "I. c #49FF74", "U. c #5CFF64", "Y. c #56FF67", "T. c #5AFF75", "R. c #45FF62", "E. c #64FF47", "W. c #62FF5B", "Q. c #68FF54", "!. c #71FF51", "~. c #64FF63", "^. c #6CFF6C", "/. c #67FF67", "(. c #6AFF73", "). c #74FF72", "_. c #7CFF7C", "`. c #75FF77", "'. c #70FF6A", "]. c #3B99CE", "[. c #3D9AD0", "{. c #3A97D0", "}. c #419ACE", "|. c #4B9AC9", " X c #439CD2", ".X c #499ED3", "XX c #489DD8", "oX c #549CC9", "OX c #519ED4", "+X c #48A1CB", "@X c #44A0D3", "#X c #4AA1D4", "$X c #4AA2D9", "%X c #43A2D8", "&X c #58A4CC", "*X c #51A3D4", "=X c #5BAAD4", "-X c #5CABDA", ";X c #57A7D8", ":X c #5DB1DA", ">X c #5DADE1", ",X c #63ADDB", ".>.q.p.p.p.n.m.m.A.A.M.S.M.S.V.V.C.oXoX.X.XXX.X.X X@X#XXX#X$X#X#X#X#X.X@X.X@X X@X X X X@X X X X.X X}. X X[. X}.].].].].", "3 8 3 8 8 3 2 3 e 3 e 6 3 q 6 3 q q q q q q q q q e e e e e r r q w r 8 e r y i./.rXuXuXrX)./.'.Q.F.A.j.a.r.<.$.@.O. ...} _ _ ~ ~ ~ Q ! K J J J J G J V G G G G J G G G J G G J J K P P Q ~ ~ ' ] | { .@.3.3.4.7.6.u.h.u.h.d.s.s.s.s.M.M.V.oX.X X@X@X X@X@X#X.X#X*X#X#X#X#X#X.X.X.X X.X.X.X.X X.X@X X@X X X@X[. X].].].].", "8 3 8 3 8 3 8 8 9 3 3 6 9 6 8 q 3 6 9 9 q q 9 q q e q q w w r e w t 9 y p.'.aXiX0XrX0X(./.K.k.d.i.<.$.+.O.} _ _ ~ ~ K J G G J G G G G G G G G G G J J J V J J V V K G G C G G G G G H K G G J J J Q ( ! Q ^ [ { { O.+.+.&.,.<.t.u.y.d.u.s.d.n.B.B.|.OX|.#X@X$X#X*X#X*X#X#X#X#X.X.X.X.X.X X.X.X.X.X X@X}. X X X X X].{.].{.", "3 8 3 8 3 3 8 8 3 3 3 e 3 3 8 q 9 q q q q q q q e e w e e r r 6 r q.J.sXdXrXrX)./.L.G.k.y.t.&.+.X.` _ ~ Q J J G J G J G G G J G G G V K K J G K J J V J J G G K J G G G G G G G G G G G G G G V G G G G J K U K ( Q Q / ` } O.+.&.4.<.5.r.t.y.i.i.i.B.B..X.X$X$X#X*X#X#X#X#X#X#X X@X.X@X.X@X.X X.X@X.X@X X X X X[.].].].{.", "8 3 8 8 3 e 3 8 3 9 8 8 8 2 8 q q 8 8 8 8 9 6 e 6 r q e e q y a._.gXpX_._.^.U.D.j.t.>.+. .} _ Q ! K G G G G P G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G J P G G G G G G G G G G G G G G G G Q ! ! Q ~ _ } .O.+.$.>.<.r.t.t.z.t.n.N.oX+X#X$X*X$X$X$X#X#X.X@X.X#X.X#X#X#X.X+X#X@X X X X X}.}.].].].", "3 8 8 8 3 9 3 9 8 3 6 8 8 8 8 8 8 8 1 e q w w 9 e 9 w 6 y M.uXdXiX0X^.~.J.j.t.>.O.} ` _ Q J J G G G G G G G J G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G K G K V G J J Q ~ ` ..O.@.#.>.<.q.r.6.t.i.n.oX*X$X$X*XOX*X%X$X@X.X#X@X#X$X#X.X.X.X.X.X@X X[.].}.].].].", "3 8 3 8 9 3 3 9 9 3 3 3 3 8 3 8 8 8 w w 9 q e 9 9 e y P.iXiXaX0X/.L.M.y.>.+. .` ~ Q J G G G G G G G G G G G G G G G G G G G J P G G G G G G G G G G G G G G G G G G G G G P J G G G G G G G G G G G G G G G G G G G J H J J G G G G G J Q ( _ } O.+.$.>.6.c.7.r.p.p..XoX|.$X#X*X.X$X#X.X#X#X#X#X.X#X@X.X X X X X[. X[.[.[.", "3 3 8 3 3 3 e 3 3 9 3 3 8 8 q 8 q 8 6 3 9 9 e w w H.sXdXiX0X(.K.j.5.&.X.` ~ ! J J J K J G G G G G L G G G G G G G G G G G G G G G G G J P G G G G G G G G G G G G G G G G G G G G G G G G G G J G G G G G G G G G G G G G G G L G G J G J J K Q ~ ` ..%.+.@.,.,.>.>.<.n.+X@X@X#X#X.X#X#X#X#X#X#X.X.X@X.X.X X X X X[.[.[.[.", "8 3 3 e 3 3 e 3 e 3 6 3 8 8 8 8 8 8 e 9 9 8 w p.uXsXqX0X/.K.a.<.@.} _ ~ J K G J G G J V G J V G G L G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G P G G G G G G G G G G G G G G G G G G G G J J G G K Q ^ ' ` .+.#.$.0.4.&.q.n.*X$X#X*X*X.X#X#X#X*X#X#X.X.X X X X X X X[.[.[.", "3 9 5 3 5 3 3 9 3 9 e 3 8 8 8 8 8 8 0 9 2 q._.dXpX0X^.J.f.5.@. ._ Q J G G J J G G G V J J G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G P J G G G J G G G G G G G G G G G G P G J G G G G G G G G G G G V J G G V J G G K ! ( ~ ' .%.@.&.#.#.,.r.B.*X#X*X*X#X#X#X#X$X.X X.X.X@X X@X X X X X[.", "3 3 3 3 3 3 9 3 9 3 3 3 8 8 3 8 8 8 8 y W.sXaX0X^.D.a.<.+.| ~ ! J J G G G G G G G G G G G G J G G J G G G G G G G P J G G G G G G G G G G G G G G G G G G G G P G G G G G G G P G G G G G G G G L G G G J G G G G P G G G G G G J J K G G G G G G G I K G P Q ~ ] =.%.O.@.&.@.@.e.|.+X*X*X#X#X#X.X.X.X.X.X@X X[. X X X[. X", "9 3 e 3 3 e 3 9 3 e e 3 3 q 8 8 8 q n.rXdXpX`.K.j.q.+.` ~ Q K J G G K G G G G G G J G G G K V J K G G G G G G G G G G G G G G G G J P G J P G G G G G G G G J G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G V G V J G G G V G G G G L G G J K K Q ~ ` { -.#.#.#.+.#.N.#X*X#X#X#X$X@X.X X.X X X X X X[. X[.", "9 3 6 3 9 9 3 9 3 6 2 8 8 1 8 3 y '.iXaX0X^.F.r.+. .~ Q J J G G G G J G K J K G G G L G J G K C K G G G G G G G G G G G J P G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G A K K V L G J G G G G G G G G G G G G P G J J J Q ~ ` .O.+.O.+.3.q.oX#X.X$X#X|.@X@X@X X X}.}..X X].].", "3 3 3 6 e 9 3 3 8 q 8 q 8 9 q q.uXiX_.^.F.u.4.O._ Q Q J G G G G G G V J G V G J G G G G J V G G Q G G G G G G G G G G G G G G G G G G G G G J P G G G G G G G G G G G G G G J P G G G G G G G G G G G V G G G G G G A J ( J G G J G G G G G G G G G G G G G G G G J J J Q _ ` .O.%.-. .+.n.*X.X#X$X}..X$X X X.X]..X X X].", "9 3 3 9 6 3 6 3 8 9 8 8 8 8 S.sXpX0X~.M.5.O.` ~ K G G G V G G G G V K V G G V L L Z H G G G G G G J G G G G G G G G G G G G G G G G G G G G G G G G G G G G G J G G G G G G G G G G G G P G G G G G G G G G G G G G A K H K V J G G G G J G G G G G G G G G G G G G G G K J ~ _ } .9. .=. .e.*X@X@X$XXX}.XX.X X@X X[. X X", "3 e 3 5 3 w e 3 8 8 8 9 w W.iXaX^.G.t.&. ._ Q J J G G G G G G G G G J J G G L G J K K J G G G G J J G G G G G G G G G G G G G G G G G G G G G G G G G J G G G P G G G G G G G G G G G G J G G G G G G J V G G G G G L V J G G G G J G G P G G G G G G G G G G G G G V J G G J Q _ _ } .. .| } 0.+X$X}.$X.X X.X X X X X X X", "3 9 3 3 3 9 6 6 e 9 3 w `.iX0X/.D.r.O.` ~ J J G G L G G G G G G G G A P A G G K I ) G G J G G J V J G G G G G J G G P J G G G G G G G G G G G G G G G P G G J G G G G G G G G G P J G G G G G G G G G G G G G G G G G P G G G G J V G G G G G G G G V G G G G G G G G J G G G G J Q ] ] ` { ` ` -.oX.X}.%X@X X.X}. X X]. X", "9 6 q 9 8 5 9 e 6 6 y rXaXqX(.s.<. ._ Q J J K G G G G G G G G G G G ! V H J _ $.&.,.Q G G G V G J G G G G G G P G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G V G G G J G G G A L V K J G G G G G G G G G G G G G G G G G G G V J G G G G J ( ' _ ' ' _ ` ' |.+X]. X@X}.#X X X X X", "6 9 6 8 9 9 e w 7 y uXiX`.K.s.,.` ` Q K G J G G G G G G G G V L G G I ( Y.HXLXLXLXKXLXAXy.C ! H G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G J G G G V J I q.rXK K K G G G G G G G G G G G G L G G G G G J H J J G J J G ! J ~ ( _ / ~ ] { |.|.}..XXX.X[. X X X", "9 6 6 9 9 9 e w y 0XgX).L.i.+.` ~ K G G K K K G J G G G G G G G G G / NXLXLXJXLXLXLXJXLXPXu.C J V L G G G G G G G G G G G G G G G G J P G G G G G G G G G G G G G G J P G G G G G G G G G G G G G G G G G G J V J <.vXLXlXH U V G G G G G G G G G G G G G G G G G V J J J V G J G V L J K Q _ ' ( ~ ( [ |.$X].$X].@X X X[.", "w q w 3 8 8 8 y _.0XqXU.y.+.} ~ G J G G G G G G G G K L G K G G G L lXLXLXLXKXNXxXLXLXLXLXAXZ N V G K G G L A V K K A L J G V H Q G J H J G V L L L K G L L A A P K G J L J H G ! J G G G H J G K Y J I G J V T V zXLXLXjXV J V G H K G L L A V G K K J G A J K V L G G G G G G G G K G G J P Q ~ _ ^ U [ |.].XX X+X[. X X", "q q 3 e 9 8 w W.0X`.Y.y.@.` Q J G P G G G G G G G G ! L V G G G K %.LXLXLXHX} D c 2.FXcXlXS.Q H V C C %.U.T.T.h.V G J J 2.*.4.@.G %.D.K.y.V G G J G C +.Y.T.T.h.V J G H ` >.,...~ K.U.] J H U 6.L.H.H.Q.%.! G P 6.cXLXLXcX;.%.B V G C %.Y.T.T.h.G L G V G G G K J P G G G G G G G G G J G J J Q Q ^ ) Q J { |..X#X}. X X X", "8 8 e q e 2 S.rX`.K.y.@.` Q J G G J G G G G G G G G K V G K G G H H.LXLXLXT.l l S b m u a d z v D ' zXLXLXLXJXLXHX<.J V Y.KXKXlX'.LXLXLXLXiXJ V V o.zXLXLXLXJXLXFXq.Z ) V.KXKXxXBXLXLXS.G .ZXJXLXLXLXKXPXlX( H LXLXLXLXLXLXlXS C / zXLXLXLXJXLXHX1.V K G A G ! K A G G G J G G G G J G G G A G J Q ) Q G D -.}..XXX X X X", "q q 8 q 8 q.rX(.K.d.@.` Q G G G G G G G G G G G G G K L L J G G K lXLXLXPX@.h p q.m.C.d.k.B.-.l J VXJXLXLXLXLXLXLXLXX.C D.LXJXLXKXLXLXJXLXKXq.C Q CXJXLXLXLXLXLXLXLX%.D !.LXLXLXLXLXKX] x ZXLXLXLXKXLXLXJXJXY.I LXLXLXLXLXLXlXl G NXJXLXLXLXLXLXLXLXO.C V G G C ! G G G G G G G G G G G G G G G G P ( Q G K K 0.%X.X@X+X@X", "q q 3 e y '.'./.j.&.} Q J J G G G V J G G G G G G G H V G J J G C lXLXLXLX .d s jXJXLXKXLXLXM.j s.LXLXLX+.N ( ZXLXLXgXI G.LXJXLXaX3.U.LXJXLXS.N H.LXLXKX+.N ( ZXLXLXuXF E.LXLXLXNX3.w.Z / xXDXKX).N Y ZXLXLXhXk 0.cXLXLXcX%._ p M.LXLXLX+.N ' ZXLXLXiXC J Z G J H G G G G G G G G G G G G G V G G J ! G G V I L |.@X@X@X X", "q q e q H.`.L.F.4. .~ J G G G G G G G G G G P J G G K L G K G G P lXLXLXLXX.& u lXLXLXLXLXLXs.a dXLXLXZXA.S.R.vXLXLXGXh A.LXLXLX] l B LXLXLXM.v yXLXLXZXA.D.G.vXLXLXFXF N.LXLXLX,.B j k k k F Y &.D.sXLXLXLXzXB z lXLXJXjXu % d rXLXLXZXA.D.R.zXLXLXFXa C N V V J J G G G G G G G J G G G G G G G G K L L V V B { *X.X.X.X", "q q w :.'.~.S.r.O._ J G G G V G G G G G G G G G G G K L G K J V K H.LXLXLXK.% i y.eXl.LXLXLXs.a zXLXLXLXLXLXJXLXLXLXLXh B.LXJXLXz s c LXLXLXd.b MXLXLXLXLXLXJXLXLXLXLXh V.LXLXLXa h d d h *.cXLXLXLXFXGXPXLXzXi a zXLXLXdX$ % i zXLXLXLXLXLXJXLXLXLXKXj l V x C K J G G G G G G G G G V G G G G J G K P L G C I k w.#X.X.X", "q q q W.W.F.y.$.` ! G G G G J J G G G J G G G G G G G L G I J J V -.LXLXLXFX-.* u a %.KXLXLXN.s pXLXLXCX=.o.=.} { 9. .a k.LXLXLX% d a LXLXLXa.b yXLXLXCX=.=.o.| { 9. .u B.LXLXKXp * g j %.LXLXLXd.P M bXLXLXMX, c dXLXLXfX; % f mXLXLXCX=.o.=. .{ 9...i l h Z V V K G G G P G G G G G G G G V J G J G K J V Y D k ^ #X@X@X", "e 8 <.L.W.m.<.} ~ K G G G G G P G G G J G G G G G G G G G G G G V G lXLXJXJXLXnXvXZXLXLXJXLXl.i <.LXLXLXm.o.h.HXLXBXm.$ l.LXLXLX% % f LXJXLXx.b 7.LXLXLXi.o.u.HXLXMXd.% l.LXLXLX% i p % k.LXLXKXt.=./.LXLXJXhX% & lXLXLXSXo.( p q.LXLXLXm.2.u.HXLXVXs.p a k N C J G G G G G G G G G G G G G G G G G K J J J V C k k e.$X.X", "e q S.L.S.t.+.~ J K G G G G G J G G G P G G G G G G G G G G G G G V ! cXKXLXLXLXLXJXLXLXLXdXV a % hXLXLXLXLXLXLXLXSXm * u.LXLXLXs % % LXJXJXj.% % jXLXLXLXLXLXKXLXSXn % i.LXLXLX* % a j h.LXJXLXLXLXLXIXJXLXdX$ - Y.LXLXLXLXH.% i zXLXLXLXLXLXKXPXAXk $ p h l N V G G G G G G P G G G G G G G G G G G G G G G G N k [ .X$X", "w #.P.H.i.*.} Q J G G G G G G G G G G G G G G G P G G G G G G G G V N L V.FXLXLXLXJXPXuX| u % % u k qXPXLXLXLXLXzXE $ s i.KXKXKXd % * KXLXLXa.u d m qXLXLXLXLXLXzXE $ * i.LXKXKXu % p a h ~.LXLXLXFXd.f.LXLXFXh i Y SXLXLXLXhX* p S qXLXLXLXLXLXgXF $ % p p N C V G G G G G G G G G G G G G G J G G G G J G V V N k z v.*X", "q p.H.d.u.@.( ! G G G G G G G G G G G G G G G G G G G G G G G G G G G k h p I 3.2.2.% % i i & % p i i p | { ..h % % i i a i a i i i p i c i a u % c % a .{ ..h % & a i a i a i i a s h z k G %.@.f u O % $ % % % i p O...} u u p h p h .{ ..h * % u p u k N V V G G G G G G G G G G G G G G P G G G G J K V J Z k a -.*X", "w s.M.a.<.o.! J G L G G G G G G G G G G G G G G G G G G G G G G G G V V k h a f i a u u p & u i a l d h p i i % $ * f a p h j a a p p l j c h p h i d p p u i % $ % i j a h l a a a p k V k N k a c % u u % % % % p d p a a i p h d d h p % i % * * % u h N k G L G G G G G G G G G G G G G G G G G G G J K G V N k l A &X", ";.m.m.q.@.` ! G G P G G G G G G G G G G G G G G G G G G G G G L G V C V C z p d m ; u u i a a l a h d h p v a i % d a p d d p j h p h d k h d u h h d h a a a i u u a p d d a j h d v S B C N N j h p i p a i p a p z p h c c a p z z z h a a % u s p p h k N G V G G G G G G G G G G G G G G G G G G G G V G G V k a p n.", ":.d.i.1. ._ Q G V G G G G G G G G G G G G G G G G G G G G G G V G G G V V N N z * d p u d p a S k x N l k l a p h p h h Z x h h k z k h Z k k k h z k z k h h p a u h h x x k l k h k C B K N h k h h u p a a p l k h k k a l h k h k k h j h p h p p h N C V C V G G G G G G G G J G G G G G G G G G G G G K G V N z p 0.", "1.t.r.>...~ G G J G G J P G G G G G P G G G G G G G G G G G G G G G A V V V B l D c l x m h B F N Z D C N k k k j k S N k Z C C l N S H k V S C B N C C Z z x N j v B N k N C B N Z n A V Z V V N B h N k h N k N k C N N x x k k C C N Z z z k h l k N C C H G Q G G G G G G G G P G G G G G G G G G G G J G G C N d a R ", "y.r.6.@.` ! K V G J G G G G G G G G K G J J A T J K L L L G G G A R K K G Z A V N N k N N V N V V V V V V Z x Z k V V N V V V C V V x C Z V C A V V C I C D C N N N B G N x A V C C V V V G G V N V N N V N C N C C C V C V V C N C V V V V N N N N D J N H K V A G J G G V G G G K G G G G G G G G G G G J J H V x h u V ", "6.q.<.@.` J G J G G G G G G G G G G G G I Y J G K V U J G G K K J V K H J G Z V G V G V N C C G G V G V V V V G V N V C V G G V G C G K G G H H V K G A Z T n T A V H H G G G C H U V G V G V G J N C V V V V V G G J V K V V V C J V V V V V C V C V Z A K I K K K C K J L G V ! V G G G G G G G L J G G G H J C k h % p ", "4.>.@.O._ J G G G G G G G G G G G G L L G H G J J A H G L A G J J V J G V G G G V V V V V V G G G G G G G V V V V J V G J G G G G G I K I V K K J U V L G A A H V H G V J G G G G V A G G J G V G G G G V V G G G V J G G V G G J G K J J G V J V G V L L J V J J G J G G J J G J G J G G G G G G G G G G G K G V x h u $ ", "4.$.@.X.~ J G K G G G G G G G G G G ! Z J K K ! U L G J I U Y K K G T A L G G L G L K G J G J V K V J G G G J G J G K K V G G G G G K J G A G J A U K G K H U U K K G G V G G V A L G G G V J Q J K V G G G G G G G L V A G V L L V G K V V G J H ! K A A G K J G G V G ! K H K G G G P G G G G G G G G G G J K V k h u $ ", "*.#.@. .( K G G G G G G G G P J G G *.KXLXLXNXZ K A K J.LXJXKX;.C K L V A J G G G G K J J G G G J K G K G G G V G K K J G K G G G G G I LXLXLXKXLXLXLXLXLXLXLXLXN G G J J J V G L L G G G J K V V K G G V L G G G G G G G G G G G G G J G J J G ! &.LXLXLX*.I K J K G G K H K J V G G G G G G G G G J G G V H K G k p % $ ", "&.+.O. .~ J G G G G G G G G G G G G c.LXLXLXLXH.H K G J.LXLXLX*.V V V K J K K K H K G J G J V G G K J V G G J G K G J G G G G G G G A K LXLXLXJXLXLXLXLXJXJXLXLXC A H K K K K K K H G G G J G J J G V G J G G G G G H K J K J K H K G G G G G V K ,.LXLXKX*.H C V G G J V J G G G G G G G J G G G J G G G K J H V z p % $ ", "@.O.O.} ~ G G J L G G G G G G G G G 4.KXJXLXPXPX-.D x H.LXLXKX#.A Z V K H V V K U K K G V L G G V K K V G G J V G G G G G J V J P V L D LXLXLXLXLXJXLXLXLXLXLXKXB C C C K C V ! H K G K V G V J V G G G V J G G G J H K C J J C H J G G G V G J G ` Y.F.S.} C V A Z K J G G V G J G G G G G G G G G G G G J J J V k a % O ", "=.O. .} Q J J J G G G G G G G G G G 4.LXLXLXLXJXNXF C G.LXLXLX@.B B V N ;.H.P.H.r.G G J ~ $.1.$.~ G J } >.>.%.G G G O.$.>.O.J V J K J H K N V N KXLXLXKXh h h l x k x %.V.H.Q.q.G J G J ` ,.>.%.~ H.K. .J O.5.&.| | J.m.[ G L / t.F.G.U.s...G G G ~ $.0.0.G C _ $.*.O.V O.D.K.r.J J G G G G G G G G G G G G H J V h i $ O ", "%... .` ~ G J G G G G G G G G G G G #.LXLXLXLXLXLXM.l V.LXLXLX;.j N ] lXLXLXLXJXLXFXr.V A HXLXLXa.V G bXLXLXLXP H G HXLXLXY.G G G G G G V V B N LXLXLXLXu d % h a g.lXLXLXLXLXLXHX<.V G Y.LXLXvXcXJXLXH.J jXLXLX`.GXJXLX7.G N.FXLXLXLXLXLXLX~.J H :.LXLXLX;.k Z.LXLXvX(.LXLXLXLXdXD G G G V G G G G A G G G G G V h a @ i ", "..} ` ` ~ G G G G G L G G G G G J P *.LXLXLXIXKXLXLX] B.LXLXLX-.h C nXLXLXLXLXLXLXLXLX .G `.LXJXsXG _ LXLXLXLXs.V .LXLXLX] V V V G J G G H N k LXLXLXLX% % & u V bXJXLXLXPXKXLXLXLXO.Z F.LXLXLXLXLXLX` N lXLXLXLXLXLXAXD ] LXJXLXLXKXLXPXJXLXX.C :.LXLXLX;.k S.LXLXLXKXLXPXLXLXLXu.V V G V G G G G G G G G G G N h i - N ", "` ' _ ` ~ G J G G G G G G G G G G G *.LXLXLXE.ZXLXLXcXQ.LXLXLX .h m.LXKXKX@.N _ AXLXJXfXB 3.LXLXHXN H.LXLXLXLXdXk H.LXLXdXC V V V V C G V V N N LXLXLXLX$ % i % s.LXLXKX;.k ~ AXLXLXiXN F.LXLXLXbX;.7.N C lXPXLXLX0X+.+.V <.hXKXKXC.F } LXLXLXA.B ;.LXLXLX;.l j.LXLXLXaX@.Q.LXLXLXR.N V V G V G G V G G V J G V N a $ > [ ", "' ~ ~ _ ~ K J G G G G G G G G G G G *.LXLXLXs.o.KXJXLXFXLXLXLX| i kXLXLXZXI.T.s.MXJXLXGXb D DXJXLX| NXLXLXZXLXLXG hXJXLXu.N k k V C V G V V C N LXLXLXLX% & g % uXLXLXAXs.I.I.fXLXLXFXk G.KXLXLX6.z l k k fXLXLXKXC k h h N C S ' 4.I.VXLXLXLXS.N #.LXLXLX%.a j.LXLXLX] b k LXLXLXI.k k N V V G G K G V J J G V k i @ > 9.", "{ P Q ~ Q K J G G G G G G G G G G G 4.LXJXLXd.= wXLXJXLXLXLXJX| i jXLXJXLXLXLXLXKXLXLXLXb h M.LXLX0XLXLXbXT.LXLXs.LXLXFXh N k k k C V G G G C V LXLXLXLX% % f a jXLXPXLXLXLXLXLXLXLXLXx A.LXLXLXa h u d j lXLXLXVXl p k d d k.ZXLXLXLXDXLXLXLXs.h ;.LXLXLX-.l k.LXLXLXc v p LXLXJXI.p h k V V G G G G G K J G V h i @ o N.", "q L G Q Q J J G G G G G G G G G G G *.JXLXLXi.u M NXLXLXLXLXLX..i _.LXKXAX . ... .2.....a d ! LXLXLXLXLXM.K LXLXFXJXLX(.h i p k k B V G G G G V LXLXJXLX% i f p sXJXLXAX..=.| { 8.-.W u l.LXLXLXh a d u u jXLXLXkXa a % p R.LXLXGXh.D N LXLXJXM.i -.LXLXLX..a j.LXLXJXa a * LXLXJXy.p h h N V G G G J G G V V k p $ X d *X", "q ^ V G J J J G G L G G G G G G G G :.LXJXLXB.u - Q LXLXLXLXLX{ = h.PXPXKXl.=.s.FXLXdXs.u p p dXLXLXLXJXL $ VXLXLXLXLX_ i a h h N C V G G G J V LXLXLXLX% % g h t.LXLXLXm.o.l.GXLXjXN.u x.LXLXLX% i * p B jXLXLXjXu % u u lXLXJXDX0.w.MXKXLXJXn.i o.LXLXLX .c j.LXLXJXi % ; LXLXLXm.i p h N V V G G G G G G N h % O X 8.*X", "q ' V G G J G G G G G G G G G G G G $.LXPXLXN.; & % eXLXLXLXLX{ & f nXLXLXLXLXLXJXLXDXS % a u r.KXLXLXUX* yXLXLXLXZX% u i p h N C H G G G V G LXLXLXLX* u i h k zXLXLXLXLXLXLXLXSXm p x.LXLXKXi g u a c MXLXLXMXu * u h ~.LXJXLXLXLXLXGXLXKXm.i | LXLXLX .i d.LXLXLXi i m LXLXLXm.% p h k N G G G G G G V Z p % X + n.;X", "8 8 P V V G J J G G G J G G G L G G 7.KXLXKXk.f & % % cXLXLXKX{ O % k ^.LXLXLXLXKXfXD & i p a N KXKXLXd.$ ; T KXLXLXi.% $ % p h N V V G G J G H KXLXLXKX; % u p N J tXLXLXLXLXLXhXT & % m.LXLXKX% i s a l fXKXKXzXg % j p G hXKXLXLXAX#.^.LXLXdX% ..LXLXKX9.m B.LXLXKXu i i LXKXKXl.i u p k N G V G A J Y A z & O o R &X*X", "8 8 _ Z V H C J G G V J G G G G G G C G h k f j i i p a u $ u $ & % p p % } ..` h % % i p a l p h p i % % i O % i - $ $ p % z k V V G G K J J C C k h i % i p h k k l l =.] o.l & i % a % i a a u a i l v B h z l g a i l p C ~ =.] u u = & & i % & a & j % a i a i u % p p u d % p p p h k V V G L L I H Z u = X . e.3X=X", "8 8 w V V V V J C J G G G G G L G G G V x h p % p p h h p i & i % a % h h a i u % % u p u h j B v v p a & u u i a p % a % p k h V V G V G G G G V x B c c j a k k V N k p % u % u % * a h l a a p u p N B V N k a c a h N V k N h p u % i & i $ i p a p u h p p u p u h u u p j p d p p h k V V V K V I Z a i O # n ;X-X;X", "3 8 q / Z k C C G G G G G G G G G G V V Z z k p d d z k h h p a u u h h j l a i u p % % h h N N C B d d d u u h p p p % u h k N C V G J G K J N G V k l a c v l k N k N p h u % % p d * h h h h u d x k V Z x x k h z z h x Z Z k z u * d % u p % d p p p h u d h h c p d k k l k h p h k N V G J V U V d l O X o N.-X;X;X", "3 8 1 q G k N N G V G G G G G V G G I H C l k k h B N N N k p p k d z k k l p h p d h a z k k V Z N k h d k k h k k h h k h k V V J G J V J G J V V N h k h l k H C H N C a h a a a l k k n n z k l k k V N V Z z k h k Z V Z N k h d d u d p p h z k j j l v l k j l l h p B S k h k k k V V C J G C Z p O # o 8.-X;X;X;X", "8 3 9 8 4 A h k V V V G G G G G G G G K H V Z k Z V C C C B C l l N N Z N N k k z h k k k V Z N A Z V C l N k C B V N k k Z V V G V J J G J C J G V Z Z z N N C V C N V Z k k k k h D B k Z k V l I N H C C G C C N N V V C V C C B B k k B k B k B k k N N N k k V N C N C N G N k k N N V G G G C V p % . # * =X;X;X;X;X", "3 9 8 3 q ^ N k k C V V G G G G G V G V V V Z Z N H C K C V V V V V V C N G V V N N N N V N J G V A V V V V V V V V V G V V V V J G G G K G G K C G G k G V N V G G L V A x Z x k Z S V G V V C C C V V G K C H G V C C V J C J G C C C C B N C C C Z V A x x A A x G N C V N V G V C V C V G G C k z i X X + v.;X,X;X=X;X", "8 3 3 3 5 6 G h l k V V V G G G G J V K ! C G G H I K V A L Z A Z G U I G C V C I H V V J K C H J V J Z V V A V A A V C V V G V G K V J G G G G J J H K C C G G V G I K C G C G C H A Z V G G V L V V L V G G G V Z G J V G V G Z A V N V Z G V V V C J C J J C C H V C K V G Z J H C G J V G V N h & X > w.:X-X=X&X=X=X", "3 3 6 3 1 8 2 L h c k Z Z G K H K L G G G G G G J G G G G G G G G G L V G V G G V G G J G G G G G G G G G G G G G G G G G G J P G G G G G G G G G P G G G G G G G G G G G G G G G G V G G G G G G L G G G G G G G G G J G G G G G G G G V G G V G V G G G G V G G G G G G G G G H V U K G V V C j % O X R X,X=X:X;X-X-X-X", "3 8 8 1 0 8 1 3 6 2 x u c l k Z V H J J V J G V G L G G G G G G G G G G G G G L G G P G G G G G G G G G G G G G P G G G G G G G G J G G G G G G G G G G G P G G G G G G G G G G G G L G G G G G G G G G G J L G G G G G G G G G G G G G V G G G G G G G G G G G G G G V G G G G G G G Z Z u = X X o k 6X7X>X:X=X,X,X,X-X,X", "3 5 8 1 3 8 8 3 1 8 < k a a h k N C G G G G G G G G G G G G G G G G G G G G G V G G G G J G G G G G G G G G G P J G G G G G G G G G G G G G G G G G P G G G G G G G G G G G G G G G G G G G G G G G G J G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G J G K G G G V B V % % o # ^ 6X2X3X,X=X:X>X>X-X,X3X", "5 3 3 3 1 3 8 9 8 8 e < V u % d k N V V V G G G G K G G G G G J G G G G V G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G J G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G L G G G J G G V J G V N l % $ o > X R X,X ; 9.6X2X:X7X2X s e. o X T w.N.X>X-X;X:X-X-X,X,X,X,X3X3X2X,X,X,X,X2X2X2X2X2X2X8X2X8X4X4X4X4X8X8X2X4X2X4X4X2X2X4X4X2X2X", "1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 1 1 1 1 4 1 5 3 5 5 3 8 2 3 3 6 3 3 3 3 3 8 8 3 3 P x d * X X X X X X + O O O + $ $ $ $ $ $ $ $ % $ $ $ $ $ $ $ $ % $ $ $ $ O O O O O X X X X X X X X X O d R 9.e.oX-X;X;X;X-X-X-X-X3X,X=X,X,X,X9X1X,X,X,X,X2X c #15500D", ", c #105C02", "< c #165111", "1 c #1F5D1C", "2 c #116302", "3 c #126A02", "4 c #147402", "5 c #157A02", "6 c #1C740F", "7 c #1F6D22", "8 c #226F37", "9 c #217132", "0 c #16436B", "q c #1D4265", "w c #1C426B", "e c #1C4473", "r c #1C4974", "t c #1D4978", "y c #214265", "u c #22426B", "i c #22486A", "p c #29406B", "a c #2A4B6E", "s c #234271", "d c #25447B", "f c #2A4071", "g c #2F467A", "h c #2D4D74", "j c #2B4A79", "k c #23527C", "l c #244E83", "z c #294E82", "x c #215684", "c c #255788", "v c #255A85", "b c #255989", "n c #2B5585", "m c #2C568A", "M c #2B5A85", "N c #2B5A8A", "B c #2F5792", "V c #36558B", "C c #315A86", "Z c #325B8B", "A c #23608F", "S c #2D678F", "D c #2C6592", "F c #2E6399", "G c #2F6994", "H c #2B6C99", "J c #31618F", "K c #326593", "L c #35679A", "P c #33699B", "I c #39699A", "U c #32709C", "Y c #2777A8", "T c #2878A9", "R c #306FA2", "E c #3573A2", "W c #347FAB", "Q c #3C74A2", "! c #3D76AB", "~ c #3E7CA3", "^ c #397CA9", "/ c #367EB0", "( c #3B7CB1", ") c #40689B", "_ c #4379A5", "` c #437EAC", "' c #168002", "] c #178902", "[ c #188A02", "{ c #199403", "} c #1A9803", "| c #1CA103", " . c #1DAB03", ".. c #1EB103", "X. c #269818", "o. c #2A9227", "O. c #2E9E3D", "+. c #24AC0D", "@. c #23B50A", "#. c #20BC03", "$. c #37BF32", "%. c #31BA3F", "&. c #338A57", "*. c #2E936A", "=. c #318F70", "-. c #33957E", ";. c #349879", ":. c #3AAA47", ">. c #21C403", ",. c #22CC03", "<. c #2AC312", "1. c #23D203", "2. c #25DA04", "3. c #28D909", "4. c #31D01D", "5. c #27E304", "6. c #28E604", "7. c #28EA04", "8. c #2EEF0A", "9. c #29F304", "0. c #2CF309", "q. c #2AF904", "w. c #2FFB09", "e. c #33E517", "r. c #31EB12", "t. c #33F012", "y. c #35FB12", "u. c #3FF81E", "i. c #42FB23", "p. c #59EE57", "a. c #54F245", "s. c #3D9E86", "d. c #3680AE", "f. c #3A82AD", "g. c #3282B5", "h. c #3A82B3", "j. c #3C8AB5", "k. c #3C98A6", "l. c #38A1B2", "z. c #2A8FC7", "x. c #2B8ECA", "c. c #2D91CC", "v. c #3494CD", "b. c #359ACC", "n. c #3D90C4", "m. c #3896CE", "M. c #3B9BC5", "N. c #3B99CE", "B. c #3695D0", "V. c #359AD3", "C. c #3996D0", "Z. c #3C99D0", "A. c #3D9BD8", "S. c #3CA2D3", "D. c #4284AB", "F. c #4483B3", "G. c #4487BB", "H. c #4189B6", "J. c #438CBA", "K. c #4884B6", "L. c #4989B5", "P. c #4A8ABB", "I. c #449CB6", "U. c #4F92BC", "Y. c #508ABA", "T. c #4EB38F", "R. c #55BB8C", "E. c #4196CD", "W. c #439AC4", "Q. c #439BCC", "!. c #4A94C1", "~. c #4B95C8", "^. c #4D9BC4", "/. c #4B9CCC", "(. c #4393D2", "). c #439CD2", "_. c #439BD9", "`. c #489ED3", "'. c #499DDA", "]. c #5096C7", "[. c #539EC6", "{. c #539BCB", "}. c #589FCD", "|. c #519FD5", " X c #519FDD", ".X c #599FDA", "XX c #44A1CD", "oX c #4BA1CC", "OX c #45A0D3", "+X c #42A3D9", "@X c #47A8D3", "#X c #44AED8", "$X c #4BA1D4", "%X c #4CA3D8", "&X c #4AA9D4", "*X c #4CABDD", "=X c #54A2CC", "-X c #5BA4CE", ";X c #52A4D6", ":X c #54A6D8", ">X c #56A8D6", ",X c #55A8D8", "X,XX;X>XX;X;X>X3X8X5X3X3X5X3X3X3X3X3X3X3X3X3X3X3X6X3X2X3X3X3X2X6X3X3X3X2X3X3X6X3X3X3XwX8X3X8X3X8X8X3X8X8X8X", "|.;X%X;X;X;X;X;X;X%X$X;X$X$X`.$X%X$X`.%X$X`.$X`.$X$X$X$X$X$X;X$X;X$X$X;X;X$X;X$X%X`.;X`.$X$X`.$XOXOX`.OX`.`.OX`.).Z.(.N.m.C.v.C.m.m.v.m.m.v.v.v.v.c.m.v.v.v.v.v.v.B.B.v.v.B.v.B.m.B.m.B.v.v.v.m.v.Z.m.B.Z.Z.Z.Q.).N.A.).).).).).).).).).N.).).).`.).).`.`.`.`.OXOX$X$X$X$X$X$X;X;X;X;X;X;X;X>X;X,X,X3X3X3X8X8X3X3X8X8X3X3X8X3X3X6X6X2X3X3X3X3X6X3X3X3X3X3X3X3X6X3X8X8X3X3X8X3X8X8X8X3X8X8X3X", ";X;X;X;X;X;X;X$X$X;X;X%X$X;X;X$X`.$X%X`.%X`.;X$X$X$X$X;X;X;X%X:X:X:X:X,X;X;X;X%X;X;X;X`.;X$X$X$XOX'.`.+X`.%XOX).`.).N.N.m.m.B.C.m.v.v.v.v.v.v.v.v.v.c.v.c.v.c.v.v.v.v.v.v.v.v.v.m.v.m.v.v.N.N.v.B.m.Z.Z.N.Z.Z.A.Z.).Z.).Z.).).).N.).N.).).).).).).).`.`.%X$X`.OXoX$X$X$X$X;X;X$X;X;X;X;X;X>X>X>X,X3X3X3X3X3X3X3X3X8X3X3X8X3X8X3X6X3X6X3X6X6X6X3X6X6X3X3X3X3X3X3X3X3X3X8X3X3X3XwX8X8X8X9X8X8X", ";X|.;X;X;X;X;X;X;X;X;X$X;X;X;X%X$X$X$X$X$X$X$X$X$X;X;X;X%X:X:X;X:X2X:X:X:X:X:X;X;X;X;X;X;X$X$X$X$X$XOX%X`.`.'.`.`.Z.).Z.N.C.v.v.v.B.B.B.v.v.v.c.v.v.v.v.c.v.c.v.c.B.B.B.v.v.v.v.v.B.m.m.v.m.m.v.m.m.Z.Z.Z.Z.Z.Z.).).Z.).).).).N.Z.Q.).).).Z.).).).`.`.OXOX`.%X`.$X$X$X$X$X$X;X;X;X;X;X;X;X;XX,X2X2X2X2X3X3X2X:X:X:X;X:X;X%X;X;X;X$X$X$X`.$X%XOX$X`.`.`.).Z.N.m.m.v.B.v.v.v.v.v.v.v.v.c.c.v.v.c.c.B.B.c.v.c.c.v.v.v.B.v.m.m.m.m.v.m.m.m.Z.B.Z.Z.Z.A.Z.).).).Z.).N.).).).N.Z.).).).`.S.).`.`.%X`.`.`.$X$X$X`.$X;X$X;X$X;X;X>X>X,X,X,X3X,X3X3X3X3X3X3XwX3X8X6X7X8X8X7X8X8X8X8X8X3X8X3X6X2X6X3X6X2X2X2X3X3X3X6X6X3X3X6X8X8X8X8X8X8X", ";X:X;X;X;X;X;X;X;X;X;X;X;X'.;X$X$X;X$X;X;X$X$X;X;X;X;X;X:X,X2X,X3X2X3X2X3X,X,X:X;X:X:X:X;X;X$X$X$X%X%X`.$X`.'.OXOXOXZ.Z.N.N.m.m.v.v.v.v.v.v.v.v.v.v.v.c.v.c.c.v.v.v.B.v.v.v.v.v.B.m.B.B.m.v.m.m.C.C.Z.B.Z.N.Z.Z.).).A.).).(.N.).).Q.).).).).`.).`.`.).`.`.`.OX'.OX`.$X$X$X$X;X;X>X;X;X:X:X:X1X>X>X,X>X2X3X3X3X8X8X8X8X6X3X9X8X9X8X3X8X3X3X8X3X8X2X3X2X3X6X3X3X3X3X6X3X3X6X6X6X6X6X8X8X8X8X8X", ":X;X>X;X;X;X|.;X;X;X;X;X;X;X;X;X`.;X$X;X$X;X;X;X;X;X;X>X,X3X3X3X3X3X3X2X3X3X3X:X1X;X;X:X%X;X;X;X;X$X$X`.`.$XOX`.OXQ.`.).N.m.v.m.v.v.v.v.v.c.v.v.v.v.c.v.v.v.v.v.v.c.v.v.v.v.v.v.v.v.B.v.m.m.m.m.m.C.C.Z.N.Z.Z.).N.A.Q.).N.Q.).).).Z.).Z.).).S.Q.`.).S.`.%X$XOXOX$XOX$X$X$X$X;X;X;X%X%X;X:X>X,X:X2X2X3X2X3X3X6X3X3X3X8X8X7X8X8X5X8X8X8X8X8X3X8X3X3X7X3X3X6X3X3X6X6X3X6X6X6X6X6XwX8X8X8X8X7X8X", ";X:X;X;X>X;X;X;X;X;X;X;X;X;X;X%X;X;X$X;X;X;X;X;X;X:X;X:X2X2X3X3X6X6X3X3X3X3X,X3X>X;X>X;X:X%X;X;X;X`.$X$X$X`.`.`.OX`.).).N.C.v.v.v.x.v.v.c.v.v.c.v.v.v.v.v.v.c.v.v.c.B.v.v.c.v.B.m.m.B.B.v.m.m.m.m.C.C.C.N.N.Z.Z.).N.N.).Q.).).N.).).).Z.).).).Z.).).OX`.`.`.%X`.$X`.$X$X$X$X=X;X;X;X;X;X;X>X,X,X2X,X1X2X2X3X3X8X5X9X8X7X7X3X8X8X8X8X8X3X8X3X8X3X3X3X6X3X6X7X3X3X6X6X6X6X3X7X6X8X8X3X8X8X8X8X", ":X:X>X;X:X;X$X;X;X;X;X;X;X%X;X;X;X$X;X$X$X;X$X;X;X:X;X:X2X2X3X3X3X3X6X6X3X3X3X,X,X,X,X;X:X:X;X;X;X$X$X`.$X$X%X$X`.`.).).N.C.C.v.v.v.v.x.v.c.v.v.c.v.v.v.v.c.v.v.v.v.c.B.v.v.v.v.v.m.B.B.m.m.v.m.v.C.C.C.m.Z.N.).).Z.(.).N.).Q.).).).).).).).).).).`.OX`.`.OX`.`.$X'.$X$X$X$XOX$X;X$X;X;X;X>X>X:X,X2X3X2X3X3X3X8X7X8X6X9X8X8X8X8X8X8X8X8X3X8X3X8X8X3X6X6X2X3X6X6X3X6X6X3X8X6X6X9X8X8X8X8X7X7X", ":X:X:X:X;X%X;X;X;X;X;X;X;X;X;X`.$X;X;X$X;X$X;X;X;X;X,X,X2X1X3X3X3X3X3X3X3X3X3X3X2X2X>X;X;X;X;XOX;X$X$X$X$X`.$X`.OXOX`.Z.N.C.v.v.B.c.n.v.x.n.v.v.B.v.B.B.v.v.v.v.B.v.c.v.v.v.v.v.m.v.m.B.m.m.C.m.C.m.C.C.N.N.Z.N.Z.N.).N.).).N.).).).).Z.).).).).S.'.OX`.`.`.`.`.OX`.$X$X$X$X$X$X;X$X$X;X$X>X>X1X2X3X2X2X3X3X3X3X3X7X7X9X7X3X8X3X8X8X8X3X8X3X8X3X3X8X6X3X6X6X6X6X8X6X8X3X8X3X7X5X8X8X8X8X8X6X", ";X;X%X;X;X;X;X;X|.;X;X;X;X;X;XI.T.a.y.q.q.q.9.9.q.9.9.9.9.9.9.9.9.9.w.9.q.w.q.9.q.q.9.9.9.9.9.9.9.9.q.9.r.$.*.k.`.`.`.).Z.C.v.v.c.c.v.x.v.c.v.c.B.v.B.c.v.v.v.v.v.c.B.v.c.v.v.v.v.v.m.B.m.N.v.m.C.C.C.N.N.Z.Z.N.Z.).).).).).).).).`.S.Q.).).).).).`.).`.`.`.`.%X`.$X`.$X$X$X$X$X$X$X$X$X;X;X;X,X,X3X3X3X3X8X8X3X7X3X3X5X3X8X8X8X8X3X8X8X3X8X3X8X8X3X6X6X2X2X6X6X3X8X8X8X8X9X8X8X8X3X8X8X8X9X", ";X;X;X;X;X;X;X;X;X;X;X;X;X;X;XR.p.u.w.9.9.9.q.9.9.9.9.q.9.9.9.9.q.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.0.6.5.e.%.s.`.`.).).N.v.v.v.c.B.c.B.c.v.v.v.v.v.B.v.v.v.v.v.x.v.B.v.v.v.v.v.m.v.v.m.m.m.C.m.C.Z.V.N.N.Z.Z.).).N.Q.N.).Z.).).).).).).).).).).).`.).`.`.`.OXOXOX;X'.`.`.;X$X$X$X$X$X$X;X;X;X>X*X3X3X4X3X3X3X8X6X8X6X8X6X6X6X8X3X8X8X3X8X8X6X6X6X6X3X8X3X3X3X8X3X8XwX3XwXwX3X8X8X8X8X8X8X8X", ";X;X;X;X$X;X%X$X$X$X|.;X;X;X;Xa.i.8.q.9.7.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.7.9.9.7.9.9.9.7.7.6.1.4.:.`.).).N.Z.v.v.v.c.c.B.c.B.B.v.v.B.v.v.B.v.c.v.c.n.c.x.v.x.B.B.v.v.v.C.m.V.B.C.C.Z.Z.Z.N.Z.N.Z.Z.).`.S.).).).Q.N.).).Q.Z.).`.).).).).`.`.).`.`.`.`.%X`.%X`.`.`.$X$X$X$X$X$X;X;X>X3X8X3X3X3X8X3X3X6X3X6X3X6X6X6X5X6X3X6X8X3X3X8X3X6X3X3X3X8X8X8XwX8X8X3X6XwX3X8X8X8X8X8X8X8X8X", ";X;X;X;X;X;X%X$X`.=X;X`.$X;X;Xt.0.9.9.7.5.7.7.7.5.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.6.6.6.5.2.,.@.X.`.).).Z.C.v.v.v.B.B.c.B.c.v.v.c.B.B.v.v.v.v.v.v.c.v.v.v.B.B.v.v.v.m.m.m.C.m.C.N.N.Z.Z.Z.Z.Z.Z.).Z.).).).).Z.).).).).S.`.).S.`.).+X`.).`.).`.`.%X$X%XOX$X%X$XOX%X$XOX$X$X;X;X:X>X3X3X3X8X8X3X3X8X6X3X3X8X6X6X6X6X3X6X6X3X6X6X3X6X3X6X3X6X3X3X8X3X8X6X8X8X8X8X8X8X8X8X8X9X9X8X", ";X;X;X;X;X'.;X$X$X`.;X$X`.;X;X9.9.7.7.5.5.5.2.2.2.2.5.2.5.2.2.2.2.2.2.2.2.2.5.2.5.2.5.2.2.5.2.2.2.5.5.2.,...} 5 `.N.N.Z.m.v.v.v.c.B.B.c.B.v.v.B.B.v.v.v.v.v.v.v.B.v.v.v.c.B.c.n.v.N.v.m.C.C.m.N.Z.N.Z.Q.N.).Z.).).).).).).).).).).).).`.).).).).`.).).S.).).`.`.`.$XOXOX$X'.$X`.$X$X$X;X;X:X;X>X3X3X3X3X8X3X3X3X8X3X8X*X6X6X6X3X6X6X6X6X6X3X6X6X6X6X6X8X3X8X3X8X8X8X6X8X8X8X8X8X8X8X8X8X8X9X", ";X;X;X;X;X$X$X$X$X$X/.$X;X/.;X5.7.7.7.2.2.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.5.2.2.2.5.2.2.5.,.>.| ] 4 Z.N.N.C.B.b.c.c.c.c.B.c.c.v.B.v.v.v.v.v.v.v.v.v.B.v.v.v.B.v.B.n.v.v.N.m.C.C.N.N.Z.Z.(.N.).N.).Z.).).).).).).).).S.`.).).).).).).OX).).`.OX`.`.`.`.`.$X$X$X$X$XOX$X$X`.;X;X;X:X,X3X3X3X3X3X8X3X3X3X3X8X3X6X5X8X6X6X3X6X3X3X3X6X6X6X6X6X*X5X6X6X6X6X8X9X3X8X3X8X9X8X8X8X8X8X9X", ";X;X;X;X;X;X$X$X$X$X`.OX`.;X`.7.5.2.2.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.1.1...} 5 2 N.Z.m.v.c.c.c.c.c.c.c.B.c.B.v.v.v.v.v.v.v.v.c.v.B.C.B.v.B.v.B.B.Z.v.C.C.C.Z.N.N.Z.).).).).Z.).Q.).).).).).).N.`.`.`.`.`.`.`.).`.`.`.OX`.OX%X`.+X$X$XOX$X$X$X$X$X$X$X;X$X;X;X:X2X3X,X3X3X3X8X6X6X8X3X3X8X6XwX3X8X6X6X6X6X6X6X6X3X6X6X6X6XwX6X6X6X6X3XwX8X8XwX8X8X9X8X9X9X9X9X", ";X;X;X;X;X$X$X$X$X$X{.OX`.`.$X5.5.5.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.1...{ 5 2 m.m.m.c.c.c.c.c.c.c.c.c.c.v.v.x.v.c.v.v.v.v.v.v.B.v.B.B.v.C.B.B.v.Z.C.N.Z.N.N.(.).Z.Z.).).).).).).).Z.).).).`.`.`.).`.).`.).`.`.`.`.`.`.`.$X`.OXXX`.$X$X$X$X$X$X$X;X;X;X;X;X;X2X3X,X3X3X3X3X8X3X3X8X8X3X6X*XwX*X3X6X5X6X6X3X6X3X6X5X6X6X5X8X6X6X8X6X9X8X8X8X9X9X8XwX8X9X9X9X", ";X$X;X;X$X$X$X$X$X$X$X%X$X$X`.5.5.7.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.1...{ 5 2 v.v.v.c.x.c.c.c.x.c.c.c.c.c.v.v.v.c.v.v.c.v.v.m.v.m.C.B.n.B.B.C.Z.v.Z.Z.Z.N.N.).Z.).Z.).A.).).).).).`.).).).`.`.`.`.`.`.).`.`.).`.).$X`.OX`.$X$X$X$X$X$X$X$X$X$X$X%X;X;X;X:X:X;X,X3X3X3X3X3X3X3X8XwX3X3X6X6X6X6X3X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X3XwX3X8X8X8X8X8X9X9X9X9X9X8X", ";X$X$X;X;X`.$X$X$X$X$XOXOX`.`.5.5.7.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.1.1...{ 5 2 c.c.c.c.c.c.c.c.c.c.B.c.c.c.B.B.v.c.v.v.v.v.v.v.C.v.C.m.m.m.B.N.m.N.Z.Z.).N.).N.).).).).).).).).).).).`.`.`.OX`.`.OXOX`.`.`.`.`.`.`.$X`.%X`.$X$XOX$X$X$X$X$X$X%X;X;X;X;X>X;X:X>X,X,X3X2X3X3X3X8X3X6X8X6X6X6X6X6X8X6X6X5X6X6X3X6X6X6X6X6X6X6X6X6X3X6X6X8X6X8XwX8X8X8XwXwXwX7X", "%X;X|.;X$X;X;X`.$X$X$X$X$XOX`.5.5.7.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.1...{ 5 2 c.x.c.c.z.c.c.c.c.c.c.c.v.x.v.x.c.v.x.v.v.v.v.v.v.m.v.C.N.B.Z.m.N.N.m.Z.N.N.N.).Z.).).OXOXOXQ.`.).`.S.`.).).OXOX`.`.$X`.OXOX`.`.`.`.`.OX`.OX$X$X$X$X$X;X;X%X;X$X%X%X>X;X,X;X>X>X,X,X2X3X3X3X3X3X6X6X6X8X6X6X6X6X6X6X6X8X6X3X6X6X6X3X6X6X6X6X6X6X6X8X6X8X8X8X8X8XwX8XwX8XwX7X", ";X;X$X%X%X$X$X`.;X'.`.%X$X$X`.5.5.7.5.2.2.2.2.1.2.2.2.2.2.2.2.2.2.2.2.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.1...{ 5 2 z.z.x.x.c.c.c.c.B.c.B.v.v.v.v.v.B.B.B.v.v.v.v.c @ w % / B.V.V.( q @ w N N.Q.Z._.M.s # y q @ G +X'.Q.).).Z s q y q i y u & c h.|._.'.V s 0 u q f w i Z D.;XXX;X;X:X%X,X;X:X:X:X;X,X>X,X3X3X3X3X6XwX3X8X3X6X6X6X6X6X6X6X6X3X8X8X3X6X6X6X6X6X6X6X6X6X6X6X8X8X8X8X8X7XwXwX7X9X9X", ";X;X;X;X;X$X$X$X`.%X`.OX$X`.|.5.7.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.1.1...{ 5 2 x.x.x.x.x.c.c.c.c.c.c.c.v.x.v.v.c.c.B.n.v.v.v.c u @ @ W C.C.V./ u y q N N.).Z.+Xj.s s . u $ r `.+X/.`.).M X @ p & $ u y $ f e W &XOXC X q $ @ @ # p @ e H ;X>X;X;X>X;X1X;X%X:X;X,X;X,X>X3X3X3X3X*X8X3X8X6X6X6X6X6X3X6X6X3X8X3X8X6X6X6X6X6X5X6X6X6X6X6X6X8X8X8XwXwXwX7XwXwX9X", ";X;X;X;X;X;X$X$X$X%X|.%X$X`.|.7.5.7.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.1...{ 5 2 z.x.x.x.c.c.c.v.c.B.c.B.v.v.v.v.B.B.B.v.v.B.v.c u u i d.N.V.A./ w y @ N N.Z.Z.Q.P X & . u + u ( `.`.`.`.N % u O d e e u + w v oX$XN u i + e e e $ p X e F.;X;X,X;X%X:X:X:X:X>X:X:X,X,X3X3X3X3X3XwX3X6X6X8X6X6X6X6X3X6X6X3X3X8X6X6X6X6X6X6X6X6X6X6X6X8X8X8X8X8X7XwX9XwX9X9X", ";X;X`.$X$X`.$X$X$X$X|.OXoX`.`.5.7.5.7.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.1. .{ 5 2 z.x.x.x.c.c.c.c.x.B.B.B.v.v.x.v.B.B.B.n.v.B.v.c u u @ ( m.N.Z.h.w s # N N.).Z.M.z w @ m w u u L `.`.`.`.M u s @ ` `.;Xh.$ u u % =X*XM u y $ D..X!.D @ p @ n }.&X%X;X;X:X%X:X;X;X>X:X2X2X5X3X3X3X3X3X3X6X3X5X6X6X6X6X8X3X3X8X3X8X6XwX6X6X6X6X6X6X6X6X8X8X8X8X8XwXwXwXeX7X9X9X", ";X;X;X;X|.;X$X$X`.$X;X$X$X`.`.5.7.5.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.,...{ 5 2 z.x.x.c.c.c.c.v.B.c.B.c.v.v.v.v.B.c.B.B.v.B.v.c s u @ F R P E D w & $ b S.).).j.s w @ E Z i u W.`.OXOXM @ w w H.&X;X^.s q i g ;XOXJ + u u J.$X@XoXw u $ 0 -X$X$X.X:X;X:X:X,X;X:X2X>X2X1X3X3X3X3X3X3XwX6X6X6X6X6XwX6X6X8X5X9X8X6X6X6XwX6X6X6X6X8X6X8X8XwXwXwXwXwXwXeXeX0X9X", ";X;X$X;X;X`.;X%X%X$X;XOXoX$X|.7.5.7.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.,...{ 5 3 c.x.c.c.c.c.c.c.c.B.B.B.c.B.B.B.v.B.B.B.C.B.n.m u @ w r @ + @ w q u $ b M.).).U $ s w H.E u y w ^ `.;X$XM w w u I U I k u . w S -X;XM u u X H.;X%X>XM @ u 0 P.$X$X;X;X:X;X:X;X;X;X:X>X>X3X3X3X3X3X3X6X*X6X6X6X6X6X6XwX6X8X8X8X8X6XwX6X6XwX6X6XwX8X8X8X8X8X8X8XwX7XeXeX9XeX9X", ";X:X;X;X$X;X$X;X$X;X|.%X$X$X`.5.7.5.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.,...} 5 2 z.c.c.c.c.v.c.V.v.v.B.B.m.C.m.C.m.v.v.m.v.m.N.c @ u y w u $ # i q $ # M N._.N.k + @ i /.~.u u @ N $XXX`.M @ w y s @ u X @ s M [.;X$XM u i @ J.1X%XX2X2X3X3X2X3X3X3X3X8X3X6X6X6X6X7X6X8X8X8X8X8X9X3XwX3X8X9X3X8X8X7X7X9X9X9X9X0X0X0XqX0X9X", ":X;X;X%X;X;X;X`.$X;X;X%XOXOX;X5.7.5.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.,...} 5 2 z.c.c.V.c.c.v.c.v.v.m.m.m.v.v.v.v.N.v.m.m.C.v.v @ @ y n m c b k w % @ n S.(.n.w q @ h T Y j u w e /.@X$XC s u y s u q u % Q ;X%X,X1XN @ @ e P.,X%X:XN s u @ Y.;X%X%X$X;X;X;X;X;X;X>X>X3X2X3X3X3X3X3X8X3X3X6X6X6X6X8X8X6X8X8X8X6X3X3XwX3X9X8X8X8X8X8X8X9X8X9X9X9X7X7X0XqX0X0X", ";X;X;X;X;X$X;X;X;X;X;X$X$X`.`.5.5.5.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.1...{ 5 2 v.v.c.c.v.v.v.v.v.B.m.m.m.B.m.m.m.v.m.v.N.B.N.c u y # g.N.N.Z.h.q i u c /.N.I @ w @ s @ @ u i y 0 ~ ).%XC @ q y H.J.q i y w f.-XX;X3X>X,X3X,X3X3X3X3X6X8X3X8X6X7X7X7X7X3X6X6X8X9X8X8X8X8X8X8X8X9X8X8X9X9X9X0X9X0X7X0X7X0X0X", ";X;X;X;X;X;X$X$X;X`.;X`.=X`.;X6.7.5.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.1...{ 5 2 v.v.b.V.v.v.v.v.B.B.m.B.N.B.C.v.m.Z.v.N.(.B.N.b u 0 e g.N.).Z.h.w w w B `.Q.l w u f y w w X $ $ @ m %X`.V s q u G.;XQ X $ a r {.*X:XN t u e K.1X{.H i p + M }.OX$X:X;X$X$X;X;X>X;X>X,X,X3X3X2X3X3X6X3X3X6X6X6X8X8X3X6X6X6X7X6X9X8X8XwX3X8X8X8X8X8X8X9X7X9X7X7X0X7XqX7X0X0X9X", "X:X:X2X,X,X,X3X2X3X3X6X6X6X3X6X6X3X9X9X7X6X7X6X6X3X8X8X8X8X9X8X8X9X8X9X9X9X9X9X7X0X0X7XqX0X9X", "1X:X>X;X>X;X;X;X;X$X;X%XoX$X`.7.7.5.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.,...{ 5 2 m.m.m.m.m.m.m.m.Z.B.Z.Z.N.m.m.m.m.m.N.v.C.).E.c $ & i h.N.Q.).d.0 u e Z Q.H u + s G XXOX$X/.G 0 y i E =XN w u u F.$X=XD.s # y 0 U.3XZ e # # u e p y @ r G 1X1X$X;X&X;X;X;X;X;X;X,X,X,X3X3X3X3X2X3X3X6X3X6X6X6X6X8X5X6X6X6X6X7X8XwX8X8X8X8X8X8X9X8X9X9X8X7X9X9X7X0X0X7X0X0X9X", ">X1X>X;X;X%X;X;X;X$X;X$X$X$X;X2.7.5.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.,...{ 5 2 N.C.C.m.Z.m.B.B.Z.B.B.Z.C.m.m.m.m.m.C.b.N.N.N.A e o s ( M.).).W u % % m ^.x $ u u _ |.'.:X1X! t X @ b ^.A u w q Y.X;X>X;X;X;X;X$X%X=X$X$X7.5.5.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.,...{ 5 , N.N.m.m.N.N.N.Z.N.Z.C.m.C.C.C.C.C.m.(.N.Q.N.Z.M.!./.M.+X+XOX_.S./.`.).%X+XQ.$XoX'.OX;X'.).$X$X$X;X;XXX*XoXX=X%X#X*X*X>X=X2X-X,X,X3XX>X,X3X1X-X>X,X%X;X>X;X:X;X2X;X;XX;X:X;X:X;X;X;X$X;X`.$X$X;X5.7.5.5.2.2.2.2.1.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.1...{ 5 2 Z.Z.N.N.N.Z.Z.Z.N.Z.Z.N.Z.Z.N.m.C.m.N.b.N.N.V.N.Q.Z.).A.).`.(.S.Q.'.Q.OX%X%X`.$X$X$XoX$X;XOX$X&X%X XX>X1X:X;X:X;X;X;X;X;X$X$X$X$X5.7.5.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.,...{ 5 2 Z.N.N.S.Z.N.Z.Z.N.Z.b.Z.Z.b.N.N.N.N._.m.N.`.Z.Q.$X_.S._.)./.OXQ.S.'.$X$X).%X$X$X;X$X%X$X;X$X=X;X;X;X;X:X:X:XOX4X1X;X:X,X,X,X2X,X,X3X3X3X3X3X2X2X3X1X,X1X,X3X>X;X,X:X,X1X:X:X2X2X2X3X3X3X3X3X3X6X3X6X6X6X3X6X8X3X3X3X3X3X6X8X8X8X8X9X9X8X9X9X9X9X8X9X9XwXwX9X9X9X9X0X0X9XwX7X", "1X>XX;X;X>X;X;X;X`.$X$X=X$X5.5.5.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.1...{ 5 2 Z.A.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.N.N.N.N.).N.).).).S.`.).).`.`.`.OX`./.`.`.$X;X`.;X$X;X$X;X$X;X;X;X;X;X%X;X:X,XX;X>X;X:X;X;X;X'.;X;X`.5.7.5.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.5.2.2.2.2.2.2.2.1.1...{ 5 2 N.Z.Z.Z.Z.Z.A.Z.Z.m.Z.Z.Z.N.).Z.).N.Q.).Q.).).).).Q.).`.).`.`.OX`.`.$X$X$X$X$X;X;X;X$X;X$X;X;X;X;X:X:X:X,X%X>X>X1X:X,X2X,X2X3X3X3X3X3X5X3X,X2X,X,X2X2X1X3X1X2X2X3X3X3X,X3X3X3X2X3X1X3X1X2X3X6X6X3X6X6X6X6X6X6X6X3X8X8X3X8X3X8X8X8X8X9X8XwX9X9X0X9X9XqXeXeXqXeX9X0X0X9X0X9X0X", "2X>X;X,X>X;X,X:X;X;X;X%XoX$X$X5.5.5.5.5.2.2.2.1.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.1.,...{ 5 2 N.).N.Z.N.).N.N.N.Z.A.N.).Z.).).Z.).).Z.).Q.).).).`.S.Q.S.`.`.`.`.`.$X$X$X%X$X;X;X$X;X;X;X;X%X,X;X%X>X%X>X>X1X;X,X:X2X2X1X3X3X3X3X3X1X3X3X3X3X,X1X2X3X,X2X1X3X1X3X1X3X3X3X3X6X6X3X3X6X3X3X6X2X6X8X6X6X6X6X6X6X6X6X6X6X6X8X7X3X9X8X9X9X9XeX9X9X9X0XeX9XwXqXeX0X0XeX0X9X7X7XwX", ":X1X:X>X,X;X>X%X%X;X;X%X;X;X$X5.7.5.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.3.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.,...[ 5 2 Q.).Z.).N.).N.).N.Q.N.N.A.Q.Z.).).).).).S._.).).`.`.`.`.`.`.`.`.$X$X$X$X%X;X;X$X;X;X:X;X;X%X:X:X:X:X;X;X>X;X;X:X,X>X1X3X3X3X3X6X3X3X3X3X3X3X,X3X3X3X3X3X3X3X3X3X3X3X3X2X3X3X3X3X3X8X3X3X3X3X6X6X6X6X7X3X6X6X3X7X3X6X6X7X3X9X7X9X9X8X9X9X9X9X9XqXeX9XeXeXeXeXeXeX7XeX0X0XeXeX", ",X>X2X:X;X>X;X:X:X%X;X%X;X;X%X5.5.7.5.2.2.2.2.2.2.1.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.3.2.2.2.1...{ 5 2 ).N.).N.).N.N.N.).N.N.).Z.).).).).).).`.`.).).`.`.`.`.`.`.`.OXOX`.$XOX|.|.$X;X;X;X;X;X;X,X:X:X:X:X:X:X>X:X;X2X,X,X2X2X2X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X2X3X3X3X3X3X3X3X3X3X6X3X8X3X6X3X3X6X6X6X6X6X7X6X6X6X7X8X8X3X8X6X6X7X8X8X8X9X9X9X9X9X9X9XeXeXeXwXeXeXwXeX0X0X7X7XeX", ":X1X,X;X>X>X1X:X:X:X;X;X$X;X%X5.5.5.5.2.2.2.2.2.2.2.2.2.2.2.1.2.2.2.2.2.2.2.1.2.2.2.2.2.2.2.2.2.2.2.2.,...{ 5 2 ).).).).N.).Q.).N.).Q.).).).OXQ.).`.`.`.S.`.).`.`.).`.`.`.`.$X$X`.`.;X`.;X;X;X;X;X;X>X;X;X2X:X;X:X:X;X1X1X>X2X,X,X1X2X3X2X6X3X3X3X3X3X3X1X3X3X3X1X3X3X3X,X3X3X3X3X3X3X3X3X3X3X3X5X8X3X3X6X3X6X6X6X6X7X8X8X8X6X6X6X8X7X7X8X8X8X8X8X8X8X8X9X9X9X0X9X0XwXeXeXeXeXeXqX0X0X0X0XeX", ":XX:X;X;X;X%X;X`.%X6.5.6.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.1.2.1.2.2.2.2.,...{ 5 2 Z.A.Q.).).Z.).Z.).N.`.).`.).OX`.`.`.OX`.OX`.`.`.`.`.`.%X`.`.$X`.$X$X;X`.;X$X;X;X;X;X>X;X;X,X>X:X,X:X:X:X,X,X,X3X2X2X3X3X2X2X3X2X2X3X3X3X6X6X2X2X3X3X3X3X3X3X3X3X1X3X3X8X3X6X6X6X6X3X3X6X6X3X6X6X8X6X6X8X8X3X8X8X8X8X8X8X8X8X9X8X8X8X8X9X8X9X9X9X9XeXeXeXeXeXeXeXeXeXeX7XeXeX", ":X,XX,X>X%X;X;X'.;X;X|.`.6.6.5.5.2.2.2.2.2.2.2.2.2.2.1.2.2.1.2.2.2.2.2.2.1.2.2.2.2.2.2.2.2.2.2.2.,. .[ 4 2 ).A.Q.S.).).).).).).).).`.OX`.`.`.OXOXOX%X`.`.`.`.`.OX`.`.OX$X$X$X$X;X;X;X;X;X;X;X>X;X:X>X;X,X:X:X%X3X,X3X3X,X3X3X3X3X3X2X6X6X2X3X2X3X3X6X2X3X2X3X3X3X3X3X3X3X3X3X3X3X3X3X6X6X3X6X6X6X6X6X6X7X7X9X8X8X8X8X8X8X8X8X9X8X8X8X9X8X9X8X8X8X9X9X9X9X9X0XeXeXeX7XeX7XeXeXeXqXeX7XwX", ">X>X;X,X;X>X,X;X;X%X%X$X=X$X/.2.5.5.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.1.2.2.2.2.1.1.,.| ' 3 - `.Q.Q.).).).).`.).).).OX`.`.`.$XOX$X%X`.OX'.`.`.`.`.$XOX%X$X$X$X$X$X;X;X;X;X;X;X;X>X,X;X,X;X:X,X>X2X2X3X3X3X3X3X3X3X3X3X3X3X3X3X3X6X2X3X3X6X3X3X3X3X3X3X3X3X3X3X3X3X3X8X6X3X8X9X6X6X6X8X8X8X8X8X6X8X8X8X8X8X8X9X9X8X9X9X9X9X9X9X8X8X8X9X9X9X9X9X0X0X9XeXeXeXeXeXeXeXqXeXwXeX", ";X,X;X>X;X>X;X>X;X;X:X;X/.OX$X5.5.2.2.,.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>... .' 2 - = V._.).).).).Q.S.Q.).`.OX`.OX`.`.OX$XOX%X$XOX`.OX`.%X`.$XOX$X$X$X$X$X;X$X:X;X:X;X>X>X,X,X,X2X,X,X,X2X3X3X,X3X3X3X3X3X3X3X3X3X3X3X3X6X3X3X3X6X3X6X3X3X6X3X3X3X3X3X6X3X6X3X6X6X6X5X6X8X8X8X8X9X8X7X8X8X8X9X9X9X9X9X9X9X9X9X9XwX9X9X9X9X9X9X9X9X9XqX0X0XeXeXqXeXqXeXeX7XeXeXeXeX", ";X>X>X;X>X;X;X;X;X;X`.`.$X%X+X1.,.>...| } { { { } } } } } } } } } } } { { { } } } } { } { { { { { { ] 4 , = * : `.oX`.).).).).).S.OX`.`.OXOXOX$X$X$X$X$X$X$XOX$X$X/.OXOX$X$X$X$X$X;X;X%X:X:X:X;XX;X;X;X>X;X$X`.;X;X|.$X$X+X<.+.} ] 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 , = = * > 1 S.).`.`.OX`.`.Q.`.`.`.`.OX'.$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X;X;X:X:X>X:X:X,X2X,X2X,X3X2X2X3X3X3X2X3X3X3X3X3X3X3X3X2X6X6X3X8X3X3X3X3X6X6X6X3X3X8X3X8X3X8X8X6X6X6X6X3X8X8X8X8X8X8X9X9X9X9X9X0X9XqX7X9X9X0XwX9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9XeX0X0XeXeXeXeXeXeXtXeXeXeX", ";X>X;X>X;X;X;X$X$X;X%X$X=X`.%XO.o.6 2 , = = = = = = = = = = = = = = = = * = ; ; = = = = = = * = * * * - ; < 8 =.$XoXOX`.`.`.`.`.`.`.`.`.$X`.$X`.$X$X$X$X$X$X$X$X$X$X$X$X$X$X$XoX;X;X:X,X;X,X:X:X3X,X2X3X3X3X3X3X3X3X3X3X3X6X3X3X6XX;X;X;X;X;X;X;X;X$X`.$X;X$X/.s.&.7 ; = = = = = = = = = = = = = = = = = = = = ; = = - ; = = = = = = - * : 9 ;.l.OXS.OX`.`.`.`.`.`.`.`.OX$X$X$X$X$X$X$X$X$X`.$X$X$X$X$X$X$X$X;X$X;X;X;X;X2X2X:X2X:X,X3X3X6X3X3X3X7X3X3X3X3X6X3X6X2X6X3X6X3X3X3X6X3X3X3X3X6X6X3X6X8X3X8X3X8X8X8X3X6XwX8X8X8X8X9X8X9X9X9X9X0X0XqXqX9XqX0X0XeX9XeXwXwX9X9X9X9X0X0X9X9X9X0X9X9X9X9X9XeX7XeXwXeXeXqXqXtXeXtXeXtXtX", ";X;X;X,X;X$X;X;X$X$X;X`.$X$X;X;X%X`.$X$XXXoXOX/.OX$XXX/.Q.Q.Q.$XXX$XoX$XoX$X$X$X;XoX;X;X;XoX$XoX$X;XX,X;X;X;X;X$X%X$X;X;X'.%X$X$X%X+X$X$X`.$X`.`.`.`.`.`.`.`.OXOX`.`.$X$X$X$X$X;X$X;X;X;X;X;X;X;X%X>X$X;X'.'.%X%X$X%X$X$X$XOX$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X&X%X$X%X%X$X;X;X$X%X:X>X;X:X,X,X,X,X3X3X3X3X3X3X6X3X8X8X3X3X8X8X3X8X8X3X3X3X8X3X3X3X3X8X3X3X3X4X8X8X8X8X8X8X8X8X8X3X8X8X8X9X9X9X9X0X9XeX9XeXeXtXqXrXrXeXrXrXeXeXeX0XeXqX9XeX0X9XqXeXeX9XwX9X9X9X9X9X9X0X0XeX9XeXeXeXeXeXrXtXrX", "%X,X$X%X$X;X;X$X$X;X`.;X`.;X;X$X$X$XOX$X$X$X$XXX$XOX`.OX`.`.`.`.`.$X$X$X$X$X`.;X;X;X;X;X%X;X;X;X;X$X;X;X;X;X$X;X$X$X$X$X$X|.;X;X&X;X$X,X$X%X$X$X$X$X$X$X$X$X%X;X;X;X;X;X;X;X;X;X;X>X:X:X1X,X,X3X3X,X3X3X3X8X8X8X3X8X3X*X8X6X6X4X3X3X3X3X3X8X3X3X8X3X3X3X6X6X9X6X3X8X8X8X8X8X3X8X8X8X9X8X9XwX9XqX0XqX9XeXeXeXqXtXtXtXtXtXrXeXeXeX0X0X0X0X9XqXwX9X9XeXwXwX9X0X9X9XqX9XqX9X9XeXeXeXrXrXrXtXrXrX", ",X,X;X;X;X;X;X;X;X$X;X|.%X;X%X%X;X$X$X$XOX$X$X$X$XOXOX`.`.`.`.`.`.$X$XOX;X$X$X$X;X;X;X;X:X;X:X;X,X;X,X;X;X;X;X;X;X$X$X$X;X`.;X`.$X;X$X;X$X;X;X$X;X$X$XoX$X$X$X;X$X;X;X;X;X;X;XX,X;X;X,X;X>X,X%X:X;X;X%X;X$X$X;X`.;X;X;X;X;X;X$X;X$X;X$X$X;X$X$X;X;X$X;X;X;X%X;X>X;X>X;X;X1X>X,X,X3X,X3X3X3X3X3X3X3X3X8X8X3X8X6X6X6X6X6X3X3X8X3X3X8X3X3X3X6X3X6X6X6X6X7X8X8X8X8X8X8X8X9X8X8X9X8X9X9X9X0XwXrXrXrXrXrXtXtXtXtXtXqXrXqXrXqXrXqX0X0X0X0X0XeXwXqXwX9XqX9XeXeXeXwXeXeXeXtXeXtXeXeXtXtXtXtX", "%X;X;X;X;X;X;X;X;X;X$X;X;X;X;X%X%X$X$X$X$X$X$X$X/.`.$X$X$X$X$X/.$X;X'.%X;X;X;X;X;X%X;X>X>X,X:X,X%X>X,X,X:X:X:X;X;X;X;X`.|.;X;X`.;X;X;X;X;X;X;X;X;X;X;X;X;X$X;X;X;X;X;X;X:X>X;X:X2X:X:X2X,X,X3X3X6X3X6X3X3X8X3X3X*X6X8X6X6X6X6X6X8X3X3X8X3X8X3X8X6X3X6X6X6X6X6X6X8X8X8X8X8X8X8X8X9X9X9XwX9X9X0X0XwXwXrXrXrXrXtXtXtXqXqXtXrXrXrXrXrXqXqX0X0X0X0X9X9X9XeXeXeXwXeX0XwXeXeXeXeXeXeXeXtXtXtXeXrXrX", ";X;X;X;X;X;X;X;X;X;X;X;X$X;X;X;X;X$X$X;X$X$XOX$XOX$X$X$X$X$X$X$X;X;X;X;X;X;X;X;X;X>X1X,X:X:X,X:X>X1X>XX;X>X;X:XX,X>X>X2X2X2X,X>X>X,X;X,X;X,X;X;X;X$X;X$X;X;X;X;X;X:X:X:X:X%X:X:X;X;X;X;X;X;X;X:X:X,X;X,X,X>X,X,X,X3X2X3X3X3X6X3X3X6X8X3X3X8X3X6X6X6X8X*X6X6X3X8X3X8XwX8X3X8X3X6X6X6X6X6X6X6X7X3X8X8X8X8X9X8X9X8X9X9X9X9X9X9X9XeXeXeXrXrXqXtXtXtXtXtXtXtXtXtXrXtXrXqXtXrXeX0XqX0X0X9XeX0X0XeXeXeXeXtXeXeXeXtXtXtXtXrXrXrXtX", ":X,X;X;X;X;X:X:X,X;X>X;X;X;X;X$X$X;X$X$X$X$X$X$X$X%X$X;X$X;X$X;X;X;X;X;X:X,X%X,X:X,X,X,X,X3X3X2X3X2X,X,X,X:X2X:X>X;X%X;X,X;X;X;X;X;X;X>X,X;X:X:X%X,X1X>X%X;X,X:X:X:X:X,X:X,X,X2X,X,X3X3X3X3X5X3X3X3X5X8X6X6X3X6X6X3X3X6X6X6X6X6X3X6X6X6X3X3XwX3X8X3X8X3X6X8X3X3X8X3X9X8X8X8X8X9X9X9X9X9X9X0XqX0X0XqX0XqXqXqXrXtXtXtXtXtXtXtXtXtXtXtXtXtXrXrXrXeXwX9XeXeXeXeXeXeXtXtXtXrXrXtXtXrXtXrXrXrXeXeX", ":X;X;X;X;X:X;X:X;X,X>X>X;X;X;X;X;X;X$X$X$X`.$XOX%X$X;X;X;X;X;X;X;X;X:X:X:X,X,X,X:X1X,X,X,X,X3X3X3X3X1X3X2X3X:X:X;X>X,X,X%X;X>X;X;X>X;X;X;X>X>X;X;X;X;X>X>X;X>X;X:X:X3X,X:X3X,X,X2X3X3X3X1X3X8X3X3X3X3X3X6X3X3X6X6X8X8X3X8X3X6X3X6X6X6X3X3X3X3X8X8X8X8XwX6X8X3XwX8X8X8X9X8X8X9X9X9X9XqX9X9X0X9X0X0X0XeXqXqXqXrXtXtXtXtXtXtXtXtXtXtXtXtXtXqXrXwXwXeXqXeXeXeXeXeXeXtXtXtXtXrXtXtXtXrXrXrXrXeXeX", "X:X;X;X;X;X;X;X;X`.|.$X;X`.;X;X%X;X;X:X;X:X;X;X;X;X;X,X:X,X,X3X2X2X3X2X3X3X3X3X3X3X3X,X3X,X2X,X2X1X;X1X>X,X>X>X,X:X>X;X1X;X:X;X>X;X;X;X,X;X1X,X,X3X,X3X3X3X,X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X6X6X3X3X6X6X3X8X3X6X6X6X6X6X6X6X6X6X3XwX4X3X8X8X3XwX8X8X8X8X8X9X8X9X9X9XeX9X9X0XqX0X0X0X0X0XeXeXqXtXrXqXrXrXtXtXtXtXtXtXtXtXrXrXeXrXeXeXeXeXeXeXqXtXtXtXtXtXtXtXtXrXrXeXrXrXeXeX", ",X,X:X:X2X:X,X:X>X1X>X1X%X;X;X;X;X;X'.;X;X;X;X%X%X,X>X%X:X;X;X;X;X;X:X:X,X2X,X3X3X2X3X3X3X3X3X3X3X3X3X3X3X3X,X3X:X,X>X;X2X,X,X>X;X>X,XX>X:X,X2X,X3X3X3X3X,X,X3X3X3X,X3X3X3X3X3X3X3X7X3X6X6X6X3X6X6X3X3X6X3X8X3X6X6X3X6X6X6X6X6X8X3XwX3X3X3X8XwX8X8X8X8X9X9X9X9X0X0X9XqXeXqX9X0XqXqX0XrXeXeXtXtXtXtXrXtXtXtXtXtXtXtXtXtXrXqXrXqXeXwXqXqXeXeXtXtXtXtXtXtXtXtXtXrXrXrXrXeXeXeX", "2X,X,X2X3X:X:X:X,X,X:X,X;X;X:X;X;X;X;X;X$X;X;X;X;X%X1X>X:X,X:X,X2X,X3X,X3X3X3X3X3X3X3X3X3X3X3X3X3X8X3X5X3X3X3X,X2X,X,X>X,X,X,X,X,X;X:X1X>X,X:X1X:X:X:X,X1X:X,X2X3X,X,X,X,X2X,X2X3X3X3X3X3X3X1X3X3X3X3X3X3X6X6X3X6X3X6X6X3X3X8X3X6X4X6X8X3X8X6X6X3X8X6X6X8X8X8X8X9X8X8X9X9X9X9XwX0X0X0X0XqXqXeXqXqXqXqXqXtXrXrXrXtXtXrXtXtXtXtXtXtXtXtXtXtXtXtXtXeXeXqXqXtXeXeXrXtXtXtXtXtXtXrXqXrXrXrXeXeXeX", "1X,X:X3X,X3X3X3X2X3X2X:X:X:X,X;X;X;X;X;X;X;X%X;X:X;X;X>X:X,X:X2X2X2X,X3X3X3X3X3X3X3X3X3X6X3X6X3X3X5X6X8X3X3X3X3X,X2X,X2X2X,X,X>X,X,X,X2X:X2X2X:X:X,X1X:X,X2X2X,X,X3X3X,X2X,X2X2X,X3X1X,X3X3X3X1X3X3X3X3X3X6X3X8X8X3X6X6X8X8X3X8X6X8X6X6X8X8X6X8X8X6X8X8X8X8X8X8X8X8X9X9X9X9XwXeX0X0X0X0XeXrXqXrXrXrXrXrXeXrXrXtXtXtXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXrXeXtXqXtXtXtXtXtXtXtXrXrXrXrXrXrXeXeX" }; micropolis-activity/images/tiles-62.xpm0000664000076400007640000000304210724145723020372 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "93 14 6 1", " c black", ". c #00007F7F0000", "X c #0000E6E60000", "o c #FFFF7F7F0000", "O c yellow", "+ c gray69", /* pixels */ "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++", "+++++++++++++++ ++++++++++++++++ ++++++++++++++++", "+++++++++++++++ OOOOOOOOOO oooooooooo ++++++ ++++++ .......... XXXXXXXXXX ++++++++++++++++", "+++++++++++++++ OOOOOOOOOO oooooooooo +++++ ++ +++++ .......... XXXXXXXXXX +++++++ +++++++", "+++++++++++++++ OOOOOOOOOO oooooooooo ++++ ++++ ++++ .......... XXXXXXXXXX +++++++ +++++++", "+++++++++++++++ OOOOOOOOOO oooooooooo ++++ +++ ++++ .......... XXXXXXXXXX +++++++ +++++++", "+++ ++++ OOOOOOOOOO oooooooooo +++ +++ ++ +++ .......... XXXXXXXXXX ++++ ++++", "+++ ++++ OOOOOOOOOO oooooooooo +++ ++ +++ +++ .......... XXXXXXXXXX ++++ ++++", "+++++++++++++++ OOOOOOOOOO oooooooooo ++++ +++ ++++ .......... XXXXXXXXXX +++++++ +++++++", "+++++++++++++++ OOOOOOOOOO oooooooooo ++++ ++++ ++++ .......... XXXXXXXXXX +++++++ +++++++", "+++++++++++++++ OOOOOOOOOO oooooooooo +++++ ++ +++++ .......... XXXXXXXXXX +++++++ +++++++", "+++++++++++++++ OOOOOOOOOO oooooooooo ++++++ ++++++ .......... XXXXXXXXXX ++++++++++++++++", "+++++++++++++++ ++++++++++++++++ ++++++++++++++++", "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" }; micropolis-activity/images/tiles-54.xpm0000664000076400007640000000414710724145723020402 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "42 42 7 1", " c black", ". c #00007F7F0000", "X c #5D5D5D5D5D5D", "o c gray50", "O c green", "+ c gray75", "@ c gray100", /* pixels */ "++++++++++++++++++++++++++++++++++++++++++", "+ooOOOOooooOOOOooooOOOOooooOOOOooooOOOOooX", "+ooOOOOooooOOOOooooOOOOooooOOOOooooOOOOooX", "+ooXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooX", "+ooX +ooX", "+OOX @ @ @ @ooo@ @ @ @+++++++@ @ @ @ +OOX", "+OOX @ @ @ @ ooo @ @ ++XXXXXXX++ @ @ +OOX", "+OOX @ooooooooo@ @ @XXX XXX+ @ @ +OOX", "+OOX @ ooooooooo @ +XX XXXXX XX+ @ +OOX", "+ooX ooooooooooo@ @+X XXX XXX X+@ @ +ooX", "+ooX oooXoXoXoXo @+X X XXX X X+@ +ooX", "+ooX @ooooooooo@ + X X X X X X X + @ +ooX", "+ooX @ ooooooooo X+X XX +@ +ooX", "+OOX @oXoXoXoXoXX@ XXoXXXXXXXX X + @ +OOX", "+OOX @ oooooooooX@@ X X X +@ +OOX", "+OOX @ooooooooo@@@ X ...++.. X X + @ +OOX", "+OOX @ oXoXoXoXo@@+ X OOO+OOO X X +@ +OOX", "+ooX @ooooooooo@X+ X O.OOO.O X X + @ +ooX", "+ooX @ oooooooooXX+ X O.OOO.O o X +@ +ooX", "+ooX @oXoXoXoXoX++ X OOOOOOO X X + @ +ooX", "+ooX @ ooooooooo+++ X .O.O.O. o X +@ +ooX", "+OOX @ooooooooo+++ X OOOOOOO X X + @ +OOX", "+OOX @ oXoXoXoXo+X+ X O.OOO.O o X +@ +OOX", "+OOX @oooooooooXX+ X O.OOO.O X X + @ +OOX", "+OOX @ oooooooooX++ X OOO++OO X X +@ +OOX", "+ooX @oXoXoXoXo+++ X ...+... X X + @ +ooX", "+ooX @ ooooooooo+++ X X X +@ +ooX", "+ooX @ooooooooo+++ XXXXXXXXXXX X + @ +ooX", "+ooX @ oXoXoXoXo+++X XX +@ +ooX", "+OOX ooooooooooo+++X XX X X X X X + @ +OOX", "+OOX ooooooooooo oo+ XXX XXX + @ +OOX", "+OOX @ oooooooo@oo+X XXXXXXX X+@ @ +OOX", "+OOX @ @ ooooooo ooo+XX XX+@ @ +OOX", "+ooX @ @ @ooo@ @ oXo++XXXXXXX++@ @ @ +ooX", "+ooX @ @ @ ooo @ @ ooXo+++++++ @ @ @ +ooX", "+ooX @ @ @ooo@ @ @ XooXooXXX @ @ @ @ +ooX", "+ooX @ @ @ ooo @ @ @XoXooXXX @ @ @ @ +ooX", "+OOX +OOX", "+OOX+++++++++++++++++++++++++++++++++++OOX", "+OOooooOOOOooooOOOOooooOOOOooooOOOOooooOOX", "+OOooooOOOOooooOOOOooooOOOOooooOOOOooooOOX", "+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }; micropolis-activity/images/sctkyohi.xpm0000664000076400007640000001027710724145723020672 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "67 57 8 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #FFBF7F", "c c #00FF00", "d c #585858", "e c #7F7FFF", "f c #7B00FF", "g c #DFDFDF", /* pixels */ "```````````````````````````````````````````````````````````````````", "``ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd``", "`d`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`g`", "`dd`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`gg`", "`ddd```````````````````````````````````````````````````````````ggg`", "`ddd`bbbb`bbbbbbb`bbcbbbbbbbcbbbbbb`bbbbbcbbbbbbbcccbbbb`bbbbb`ggg`", "`ddd`bbbbb`bbbbbb`bbbbbb`bbcbcbbbbb`bbbbbbbbbcbbbbbccbbb`bbbbb`ggg`", "`ddd`bbbbb`cbcbbb`bbb```a``bbbbcbbc`bcb`b```bbbcbbccbbb``bbbbb`ggg`", "`ddd`bcbbb`bbbbbb`bb`aaaaa`bbbbbb`b`b`````````bcbbbbbbb``bbbbb`ggg`", "`ddd`bbbbb`bbbbbb`bb`aa`````bbbb`bb`bbbbaa``bbbb`bbbbb`bbbbbbb`ggg`", "`ddd`bbbbb`bbbbbb`b``aa```cccbb`bbb`bbbb`a`bbbbb`cb```bbbbccbb`ggg`", "`ddd```````bbb``````baab`bcccccbbb```bbb`aa`bbbb`bb``bbbbbcbcb`ggg`", "`ddd`b`bbb`bbb`bb````bbb``cccccbb`a```bb``aaabaa`ab`bbbbbbbbbb`ggg`", "`ddd`bb`bb`bb`bbb``aa``bccccccbbb`````aaaaaaa`aa`ab`ccbbbbbbbb`ggg`", "`ddd`bbb`b```bb`a`aaaa``cbcc`````a`aaaaaaaaaa`aa`a```````bbbbb`ggg`", "`ddd`bbbb`aaaa``a`aaaaaccccbaa`aaa`````````aaaaa`a``bbaaaabbbb`ggg`", "`ddd`bbb```aa`aaa`aaaaaa```aaa`aaaa`aaaaaaa`````````a`aaaabbbb`ggg`", "`ddd````````aaaaa`aaa``````aaa`aaaa`aaaaaaaa`aa``aa`aaaaaabbbb`ggg`", "`ddd`a`aa`````````aaaa`aaa`aaa`aaaa`aaa``aaa`aaa`aa`aaaaaabbbb`ggg`", "`ddd`a``aa`aaaaaa`aaaa`aaa`aaa`aaaa`aaa````````````````````````ggg`", "`ddd`aaa``aaaaaaa```````````````````aaa``aaa`aaa`aa`aaaaa`aabb`ggg`", "`ddd`aaaaa`aaaaaa`aaaa`aaa`aaa`aaa``aaa``aaa`aaa`aa`aaaaa`aabb`ggg`", "`ddd`aaaaaa``aaaa`aaaa`aaa``aa``````a````````aaa`aa`aaaaa`aabb`ggg`", "`ddd`eaaeaaa``````aaaa`aaa``aa`a````eeee``````````````````aabb`ggg`", "`ddd`eeaeaaaaaaaa`aaaa`aaa`a```aaeeeecceee`a`aaaaaa`aaa`a`a`bb`ggg`", "`ddd`eeea`````````aaaa`aaa`aaa``aeccccccceaa`aaaaaa`aaa`a`a`bb`ggg`", "`ddd`eeeeaaaa`aaa`aaaa`aaa`a`a``aecccccccea`aaaa``````````a`bb`ggg`", "`ddd`eeeeaaaa`aaa```````````````aecccccceea`aaaa`aa`aaa`a`a`bb`ggg`", "`ddd`eeeea````````aa`aa`````a``aaeeeeccceaa``````aa`aaa`a`a`bb`ggg`", "`ddd`eeeeeaaa`aaaaaa``aa```aa``aaa`aeeeeea``aaa`aaa`aaa`a```bb`ggg`", "`ddd`eeeeeaaa`aaaaaa`aaaaa`aa``aaaaa``aaaaaaaaa`aaa`aaa`aaaabb`ggg`", "`ddd`eeeeeaeeeeae`aa`aa`a`````````a``````aaaaaa`aaa`aaa`aaaab``ggg`", "`ddd`eeeeeaeee`eeeee`aaaa``aa``a`aa`````a`aaaaa`aaa``````````a`ggg`", "`ddd`eeeeeeeeeeeeeeeeeee`a``````````````````````````aa``aa`a`a`ggg`", "`ddd`eeeeeeeeeeeeeeeeeeeeaeeaa`aaaaa``aaaaaaaaaaaaaaaaa`aaa``a`ggg`", "`ddd`eeeeeeeeeeeeeeeeeeeeaeaaa`````aaaa```````````aaaaa`a`aa`a`ggg`", "`ddd`eeeeeeeeeeeeeeeeeeeeeeeeeaaa``aeeeeee`eee`aaa`aaaa`a`aaa``ggg`", "`ddd`eeeeeeeeeeeeeeefeeeeeeeeeaae`eeeeaaaeeeeee``aa`aaa`aaaaa``ggg`", "`ddd`eeeeeeeeeeeeeeeeeeeeeeeeeeee`eeeeeeeeeeeaee`eaa`````aaaa``ggg`", "`ddd`eeeeeeeeeeeeeeeeeeeeeeeeeeee`ee`e````e`eeeeeeeaa`a`a``````ggg`", "`ddd`eeefeeeeeeeeeeeeeeeeeeeee```````````````aaaeeeaaa``aa``aa`ggg`", "`ddd`eeeeeeeeeeeeeeeeeeeeeeeeee``aaa````aaaaaa`aeeeeeaa`aaa`aa`ggg`", "`ddd`eeeeeeeeeeeeefeeeeeeeeeeee``aaa`````````````eeeeeea`aaaaa`ggg`", "`ddd`eeeeeeeeeeeeeeeeeeeeeeeee``aaaa``caaa``b``aaaaee`eeeeaaaa`ggg`", "`ddd`eeeeeeeeeeeeeeeeeeeeeeeee`aaaaa``aaaa``b``aaaaaee`eeeaeaa`ggg`", "`ddd`eeeeeeeeeeeeeeeeeeeeeeeeeaaaaaa``aaaa``b```````b`b`eeaeea`ggg`", "`ddd`eeeeeeeefeeeeeeeeeeeeeeee``````````````````bb`bbbbb`b`eee`ggg`", "`ddd`eeeeeeeeeeeeeeeeefeeeeeeeee```a`aaaaaa`bbbbb``bbbbb`bb`b``ggg`", "`ddd`eeeeeeeeeeeeeeeeeeeeeeeeeeeaa`a``aaaaa`cccb`a`bbbbb`bbbbb`ggg`", "`ddd`eeeeeeeeeeeeeeeeeeeeefeeeee```aa````````````c````````bbbb`ggg`", "`ddd`eeeeffeeeeeeeeeeeeeeeeeeeee`a`aa```bbbbbbbbbb`bbbbbbbbbbb`ggg`", "`ddd`eeeeeeeeeeeeeeeeeeeeeeeeeeeaa`aa`bbbbbbbbbbbbbbbbbbbbbbbb`ggg`", "`ddd```````````````````````````````````````````````````````````ggg`", "`dd`ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg`gg`", "`d`ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg`g`", "``ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg``", "```````````````````````````````````````````````````````````````````" }; micropolis-activity/images/tiles-39.xpm0000664000076400007640000000306210724145723020400 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "34 34 11 1", " c black", ". c #00007F7F0000", "X c #7F7F7F7F0000", "o c #5D5D5D5D5D5D", "O c gray50", "+ c green", "@ c #BFBF79790000", "# c red", "$ c #FFFF77770000", "% c gray75", "& c gray100", /* pixels */ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%@@++++@@@@++++@@@@++++@@@@++++@@o", "%@@++++@@@@++++@@@@++++@@@@++++@@o", "%@@oooooooooooooooooooooooooooo@@o", "%@@o&&&&&&&&&&&&&&&&&&&&&&&&&&%@@o", "%++o&&&&&&&&&.+.+++.++&&&&&&&&%++o", "%++o&&&&&&+++++++.++.++.+.&&&&%++o", "%++o&&&&&+.+++.++++.++.++.+&&&%++o", "%++o&&&+++++++++.++++.+.++..&&%++o", "%@@o&&&+.+++++.++.+.+.+.+.+.&&%@@o", "%@@o&&+++++.++++.+.+.+.+...+.&%@@o", "%@@o&&.+++++.+.++.+.++...++..&%@@o", "%@@o&+++.+.++++.+.++..+.+..+.&%@@o", "%++o&++++.++.+++.+...+.+.+..&&%++o", "%++o&.+.+.+.+.+.+.+.+.....O&&&%++o", "%++o&++.++.+.+.+.+.+...&&&O&&&%++o", "%++o&&.++.+.+.+......O&&&&O&&&%++o", "%@@o&&&..........&&&&O&&&&O&&&%@@o", "%@@o&&&&&&&XXXooo&&&&O&&&&O&&&%@@o", "%@@o&&&&&&&XXXooo&&&&O&&&&O&&&%@@o", "%@@o&&&&&&&XXXooo&&&&O&$$&O&&&%@@o", "%++o&&&&&&&XXXooo&&&&O ## O&&&%++o", "%++o&&&&&&&XXXooo&&&&O O&&&%++o", "%++o&&&&&&XXXoooo&&&&O&##&O&&&%++o", "%++o&&&&XXXXoooooo&&&o####o&&&%++o", "%@@o&&XXXXXoooooooo&&& && &&&&%@@o", "%@@o&XXXXXooooooo@@@@@ @@ @@@&%@@o", "%@@o&@@@XX@oo@@ooo@@@@@o@o@@@&%@@o", "%@@o&@@XX@@o@@@@oo@@@@o@o@@@@&%@@o", "%++o&&&&&&&&&&&&&&&&&&&&&&&&&&%++o", "%++o%%%%%%%%%%%%%%%%%%%%%%%%%%%++o", "%++@@@@++++@@@@++++@@@@++++@@@@++o", "%++@@@@++++@@@@++++@@@@++++@@@@++o", "%ooooooooooooooooooooooooooooooooo" }; micropolis-activity/images/tiles-109.xpm0000664000076400007640000000520310724145723020455 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "48 48 6 1", " c black", ". c red", "X c #FFFF7F7F0000", "o c yellow", "O c gray100", "+ c None", /* pixels */ "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "+++++++++++++++++++++++++++++++++++++XXX++++++++", "++++++++++++++++++++++++++++++++++++++XXX+++++++", "+++++++++++++++++++++++++++++++++++++++XXX.+++++", "++++++++++++++++++++++++++++++++++++++++X.X.++++", "+++++++++++++++++++++++++++++++++XXXX+++.X.X++++", "++++++++++++++++++++++++++++++XXXOXXXXX.X.X.++++", "++++++++++++++++++++++++++++XXOXXXXX.X.X.X.+++++", "+++++++++++++++++++++++++++XXXXXX.X...X.X.++++++", "+++++++++++++++++++++++++XXXOXXX....++++++++++++", "++++++++++++++++++++++++XXXXXXX...++++++++++++++", "+++++++++++++++++OXX++XXXOXXXX...++XXX++++++++++", "+++++++++++++++XOXXXXXXXXXXXX....XXXXX.+++++++++", "++++++++++++++OXXXXXXXXOXXXXX..X.XXXXX.+++++++++", "+++++++++++++XXXXXXXXXXXXXXXXX..XX.X...+++++++++", "+++++++++++++XXX.X.XXOXXXXXXX.X.X.X.X..+++++++++", "+++++++++++++XX.X.XXOXXXXXXX.X.X.X.X..++++++++++", "++++++++++++++.X.XXXXXXXXXX.X.X.X.....++++++++++", "++++++++++++++..XXXXXXXXXX.X.....X+..+++++++++++", "++++++++++++++.XXXOXXXXXX.X.....++++++++++++++++", "+++++++++++++++XXOXXXXXX.X....++++++++++++++++++", "+++++++++XXX++XXXXXXXXX.X...++++++++++++++++++++", "++++++++XXXXXXXOXXXXXX.X...+++++++++++++++++++++", "++++++OXXXXXXXXXXXXXXX.... XXXX+++++++++++++++++", "+++++OXXXXXXXOXXXXXXX.....XXXX.+++++++++++++++++", "++++OXX.X.XXXXXXXXXXX.XXXXX.X.X+++++++++++++++++", "++++XXX....OXXXXXXXX.X.X.X.X.X++++++++++++++++++", "+++XX.X+++XXXXXXXXX.X.X.X.X..+++++++++++++++++++", "+++++X+++XXXXXXXXX.X.X.X...+++++++++++++++++++++", "++++++++XXXXXXXXX.X....+++++++++++++++++++++++++", "+++++++XXXXXXXXX.X..++++++++++++++++++++++++++++", "+++++++XXXXXXXX.X.++++++++++++++++++++++++++++++", "++++++..XXXXXX.X.+++++++++++++++++++++++++++++++", "++++++..XX.XX.X.++++++++++++++++++++++++++++++++", "+++++.o.X..o.X.+++++++++++++++++++++++++++++++++", "+++++XoX..o...++++++++++++++++++++++++++++++++++", "+++++XXX.X...+++++++++++++++++++++++++++++++++++", "+++++.XXX...++++++++++++++++++++++++++++++++++++", "++++++....++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++" }; micropolis-activity/images/tiles-24.xpm0000664000076400007640000000263210724145723020374 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "34 34 2 1", " c black", ". c #7E7E7E7E7E7E", /* pixels */ "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "........ . . . . . . . ..... . . .", "..................................", "..................................", "..................................", ".................................." }; micropolis-activity/images/tiles-15.xpm0000664000076400007640000000256410724145723020400 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "32 32 8 1", " c black", ". c #00003F3F0000", "X c #00005F5F0000", "o c #00007F7F0000", "O c #0000BFBF0000", "+ c red", "@ c yellow", "# c gray75", /* pixels */ " ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " X XXXXXXXXXXXXXXXXXXXXXXXXXX o ", " XX XXXXXXXXXXXXXXXXXXXXXXXX oo ", " XXX ooo ", " XXX ###################### ooo ", " XXX ###################### ooo ", " XXX ######OOOOOO#### #### ooo ", " XXX ####OOO.O..O#### #### ooo ", " XXX ####OO..O.OO## ## ooo ", " XXX #####OOOOOO### ## ooo ", " XXX ######OOOO.##### #### ooo ", " XXX #####OO@OOO.#### #### ooo ", " XXX ###.OO@@@OOO.######### ooo ", " XXX ##OOO@.@.@OOO.######## ooo ", " XXX ##OOO@O@O.OOO..####### ooo ", " XXX ##OOO.@@@OOOO..####### ooo ", " XXX #.OOOO.@.@OOO..####### ooo ", " XXX #OOOO@O@O@OOO..####### ooo ", " XXX #OOOO.@@@.OOO..####### ooo ", " XXX ##OOOO.@.OOOO..####### ooo ", " XXX ##.OOOO.OOOO..######## ooo ", " XXX ###.OOOOOOO..##+++++## ooo ", " XXX ####........###+++++## ooo ", " XXX ###################### ooo ", " XXX ###################### ooo ", " XXX ###################### ooo ", " XXX ooo ", " XX oooooooooooooooooooooooo oo ", " X oooooooooooooooooooooooooo o ", " oooooooooooooooooooooooooooo ", " " }; micropolis-activity/images/tiles-88.xpm0000664000076400007640000000526310724145723020411 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "48 48 9 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c #66666666E6E6", "O c red", "+ c yellow", "@ c gray75", "# c gray100", "$ c None", /* pixels */ "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$##O$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$X##$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$@##$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$@###$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$@@##$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$X###.$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$####X$$$$$$$$$$$$$$$$$$$$", "$$$$$$$@@@$$$$$$$$$$$$$X###@.$$$$$$$$$$$$$$$$$$$", "$$$$$$$.#@$$$$$$$$$$$$$@####X$$$$$$$$$$$$$$$$$$$", "$$$$$$$X#@$$$$$$$$$$$$$@@###@.$$$$$$$$$$$$$$$$$$", "$$$$$$$X##@$$ @@O@$$$$$X#####X.$$$$$$$$$$$$$$$$$", "$$$$$$$.###@$ @@@@@@@@@@@@@@@@@@@@@@@@@@@.$$$$$$", "$$$$$$$+XX@X@############################..$$$$$", "$$$$$$$.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ...$$$$", "$$$$$$$X##@@.o oo o o o o o o o o o#.@.$$$$$", "$$$$$$$X##@$$XXXXXXXXXX@@@@@@@.@@@@@@@@@@@$$$$$$", "$$$$$$$X#@$$$ @@O@$$$$$X@@@@@@.$$$$$$$$$$$$$$$$$", "$$$$$$$.@@$$$ ##O$$$$$$@@###@.$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$@####X$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$X###@.$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$####X$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$X###.$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$@###$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$@@##$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$@##$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$X##$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$##O$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" }; micropolis-activity/images/obj2-2.xpm0000664000076400007640000000260110724145723020020 0ustar simcitysimcity/* XPM */ static char * obj2_2_xpm[] = { "32 32 10 1", " c None", ". c #FFFF00000000", "X c #7F7F7F7F7F7F", "o c #BFBFBFBFBFBF", "O c #3F3F3F3F3F3F", "+ c #FFFFFFFF0000", "@ c #FFFFFFFFFFFF", "# c #66666666E6E6", "$ c #000000000000", "% c #00000000E6E6", " ", " ", " ", " ", " ...... ", " ... ... ", " . . ", " . . ", " . . ", " . . ", " . . ", " . XXXXXXXo . ", " . O O .", "+XX+XX+ . @@X@@@XXX .", " X . #@@@@@@@@$$$X .", " ooooo.ooooooooooOOo$%$$X .", " XXo . ooooooooOOo$%$$X .", " oo . #XXXXXXXX$$$X .", " . XXOXXXXXX .", " . O O . ", " . XXXXXXXo . ", " . . ", " . . ", " . . ", " . . ", " . . ", " ... ... ", " ...... ", " ", " ", " ", " "}; micropolis-activity/images/icindhi.xpm0000664000076400007640000000413410724145723020437 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "34 50 8 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #5D5D5D", "c c #BF7900", "d c #FFFFFF", "e c #FFFF00", "f c #7F7F00", "g c #BFBFBF", /* pixels */ "gggggggggggggggggggggggggggggggggg", "geeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeb", "geeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeb", "geebbbbbbbbbbbbbbbbbbbbbbbbbbbbeeb", "geebddddddddddddddddddddddddddgeeb", "geebdddddddddddddffdddffffddddgeeb", "geebddddddddddddfbbdbbffbbbbddgeeb", "geebdddddddddffbbbbbffbbbfbffdgeeb", "geebdddddddddffbbbbbffbbbfbffdgeeb", "geebdddddddddfbbfbbbbbbfbbbdddgeeb", "geebddddddddfbbbdbbfbbbbffddddgeeb", "geebdddddddbfbbddfffbfffddddddgeeb", "geebdddddddbfbbdffffbbbdddddddgeeb", "geebddddddfbbddbfbbdddddddddddgeeb", "geebddddddbb`ddbb`ddddddddddddgeeb", "geebddddddbb`ddbb`ddddddddddddgeeb", "geebddddddbb`ddbb`ddddddddddddgeeb", "geebdddbaabb`aabb`aaaaaaadddddgeeb", "geebdddbbaab`aaab`aaaaaaaaddddgeeb", "geebdddbbbbbbbbbbbbbbbbbbbbdddgeeb", "geebdddbbb````````````````bdddgeeb", "geebd`ebbb````````````````beedgeeb", "geebd`ebbb`bb`bb`bb`bb`bb`b`edgeeb", "geebd`ebbb`bb`bb`bb`bb`bb`b`edgeeb", "geebd`ecbb`bb`bb`bb`bb`bb`b`edgeeb", "geebd`eccb````````````````b`edgeeb", "geebd`ecccccccccccccccccccc`edgeeb", "geebd`eccccccc`eeeecccccccc`edgeeb", "geebd`eccccccc``ee`cccccccc`edgeeb", "geebd`ecccccccc`eeccccccccc`edgeeb", "geebd`ecccccccc`eeccccccccc`edgeeb", "geebd`ecccccccc`eeccccccccc`edgeeb", "geebd`ecccccccc`eeccccccccc`edgeeb", "geebd`ecccccccc`eeccccccccc`edgeeb", "geebd`ecccccccc`eeccccccccc`edgeeb", "geebd`ecccccccc`eeccccccccc`edgeeb", "geebd`ecccccccc`eeccccccccc`edgeeb", "geebd`eccccccc`eeeecccccccc`edgeeb", "geebd`eccccccc`````cccccccc`edgeeb", "geebd`ecccccccccccccccccccc`edgeeb", "geebd`ecccccccccccccccccccc`edgeeb", "geebd`ecccccccccccccccccccc`edgeeb", "geebd`ecccccccccccccccccccc`edgeeb", "geebd`eeeeeeeeeeeeeeeeeeeeeeedgeeb", "geebd````````````````````````dgeeb", "geebddddddddddddddddddddddddddgeeb", "geebgggggggggggggggggggggggggggeeb", "geeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeb", "geeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeb", "gbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" }; micropolis-activity/images/tiles-58.xpm0000664000076400007640000001727110724145723020410 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "134 56 2 1", " c yellow", ". c gray69", /* pixels */ "....................................................................................................... .......................", "..................................................................................................... ........ ......................", ".................................................................................................... ........... . ..............", ".................................................................................................... ............. ..... ............", ".................................................................................................. ..................... ............", "................................................................................................ ....................... ............", ".............................................................................................. ......................... ............", "............................................................................................ ........................... ............", ".......................................................................................... .............................. ...........", "........................................................................................ .. .................. ........... ..........", "...................................................................................... .... .................. ............ .........", ".................................................................................... ... .. .................. ............. ........", ".................................................................................. ..... .. ........................... ..... .......", "................................................................................. ....... .. ........................... ..... ......", "................................................................................. ....... .. ........................... . ..... .....", "...................................... .......... ............... ....... ........ .. ........................... .. ..... ....", "......................... ........... . . ............. . ..... ............... .. ........................... ... .... ...", "................. . ......... .............. .......... ... ................ .. .................. ........ .... .... ", "................ .......... ....... ................. ........ .......................... .. .................. ........ .... ... . ", "............... ........... .................. ........................... .. ........................... . ... .. . ", "....... .......................................................................... .. ........................... ... .. .. . ", "...... .................................................................................. .. ........................... .... . .. . ", ".... ................................................................................... .. ........................... .... . .. . ", "... ....... .. ........................... .... . .. . ", ".. ...................................................................................... .. .................. ........ .... . .. . ", " . .. . .. .. . .. . .. .. . .. . .. .. . .. . .. .. . .. . .. .. . .. . .. .. ........ .. .................. ........ .... . .. . ", " ....... .. ........................... .... . .. . ", " ....................................................................................... .. ........................... .... . .. . ", " . ..................................................................................... .. ........................... .... . .. . ", " ... .................................................................................... .. ........................... .... . .. . ", ". ... ................................................................................... .. ........................... .... . .. . ", ".. .. ................................................................................. .. .................. ........ .... . .. . ", ".... ... ................................................................................ .. .................. ........ .... ... . ", "..... ... ...... .. ........................... .... .... . ", "...... .......................................................................... ...... .. ........................... ... ..... . ", "........ ......................................................................... ...... .. ........................... . ..... .. ", "......... ........................................................................ ...... .. ........................... ..... .. .", "........ .. ...... .. ........................... ..... .. ..", "............................................................................... .. ...... .. ........................... ..... .. ...", "............................................................................... .. ..... .. .................. ........ .... .. ....", "............................................................................... .... ... .. .................. ............ .. .....", "............................................................................... ..... ... .............................. .. .......", "................................................................................. ...... ............................... .. ........", "................................................................................... ...... ............................ .. .........", "..................................................................................... ..... ......................... . ..........", "........................................................................................ ...... ....................... ...........", ".......................................................................................... ..... ..................... ...........", "............................................................................................. .... .............. ...... ...........", "............................................................................................... ... ............ . .... . ...........", "................................................................................................. . ........... .. .. ...........", ".................................................................................................. .. ........ .......... ...........", ".................................................................................................. .... ... ..... ............", ".................................................................................................. .............. . ..............", "................................................................................................... ........... .....................", "..................................................................................................... ........ ......................", "...................................................................................................... ......................." }; micropolis-activity/images/obj2-6.xpm0000664000076400007640000000260110724145723020024 0ustar simcitysimcity/* XPM */ static char * obj2_6_xpm[] = { "32 32 10 1", " c None", ". c #FFFF00000000", "X c #BFBFBFBFBFBF", "o c #7F7F7F7F7F7F", "O c #3F3F3F3F3F3F", "+ c #000000000000", "@ c #66666666E6E6", "# c #00000000E6E6", "$ c #FFFFFFFFFFFF", "% c #FFFFFFFF0000", " ", " ", " ", " ", " ...... ", " ... ... ", " . . ", " . . ", " . . ", " . . ", " . . ", " . Xooooooo . ", " . O O . ", ". ooooooOoo . ", ". o+++oooooooo@ . XX ", ". o++#+XOOXXXXXXXX . Xoo ", ". o++#+XOOXXXXXXXXXX.XXXXX ", ". o+++$$$$$$$$@ . o ", ". ooo$$$o$$ . %oo%oo%", ". O O . ", " . Xooooooo . ", " . . ", " . . ", " . . ", " . . ", " . . ", " ... ... ", " ...... ", " ", " ", " ", " "}; micropolis-activity/images/scenario2hilite.xpm0000664000076400007640000024313710724145723022124 0ustar simcitysimcity/* XPM */ static char *scenario_hilite[] = { /* columns rows colors chars-per-pixel */ "209 188 256 2", " c #182F16", ". c #2D2D1A", "X c #383A38", "o c #2E302D", "O c #1D1928", "+ c #1C3D69", "@ c #1C3871", "# c #393A44", "$ c #2E2E50", "% c #233D6B", "& c #263D67", "* c #2D3571", "= c #192054", "- c #125014", "; c #0D6E0F", ": c #39443A", "> c #2D512C", ", c #316831", "< c #28571D", "1 c #1D426B", "2 c #1B4267", "3 c #1C4571", "4 c #3C4342", "5 c #34524B", "6 c #22416B", "7 c #244268", "8 c #234271", "9 c #274876", "0 c #245579", "q c #29577A", "w c #3A5A72", "e c #38587A", "r c #354974", "t c #2C5D58", "y c #463A37", "u c #563A36", "i c #4D3329", "p c #6F3732", "a c #562217", "s c #463B43", "d c #4B394D", "f c #533969", "g c #46433A", "h c #574539", "j c #51512D", "k c #526D2F", "l c #674737", "z c #764938", "x c #6D5334", "c c #6D6E34", "v c #525E1C", "b c #434443", "n c #484947", "m c #485448", "M c #554A46", "N c #58534A", "B c #575755", "V c #4E4D54", "C c #4F506F", "Z c #516B51", "A c #41746B", "S c #576568", "D c #664A45", "F c #67564A", "G c #685954", "H c #775549", "J c #755C56", "K c #714B4B", "L c #695567", "P c #796356", "I c #6D6D4D", "U c #666866", "Y c #707270", "T c #31338B", "R c #2331A3", "E c #3C5684", "W c #365B88", "Q c #2D5886", "! c #286D92", "~ c #2C7091", "^ c #36638C", "/ c #366D94", "( c #2677A8", ") c #377BA6", "_ c #3F43B0", "` c #44568A", "' c #44598C", "] c #445786", "[ c #455A90", "{ c #4D4D90", "} c #5052AE", "| c #4D7199", " . c #477AA6", ".. c #5374A8", "X. c #7767B9", "o. c #6A5C97", "O. c #585AD0", "+. c #5E6ED5", "@. c #5D6BDA", "#. c #5B6BCD", "$. c #5D63ED", "%. c #5D67E2", "&. c #5A63F2", "*. c #6569DA", "=. c #7969C9", "-. c #7269D2", ";. c #6365E6", ":. c #6165EA", ">. c #6867E8", ",. c #6567F0", "<. c #5B5BE0", "1. c #413EB7", "2. c #279D20", "3. c #00DB00", "4. c #0CDC05", "5. c #17DA09", "6. c #00E300", "7. c #05E701", "8. c #11E906", "9. c #25CB09", "0. c #23CF03", "q. c #24D404", "w. c #25DA04", "e. c #25D70C", "r. c #33CA18", "t. c #28DD0B", "y. c #558F30", "u. c #54B329", "i. c #6C8F35", "p. c #70AB35", "a. c #41981F", "s. c #498F50", "d. c #6B915F", "f. c #50C825", "g. c #52C626", "h. c #3C9F4C", "j. c #2A83B8", "k. c #3486B7", "l. c #2A8ECA", "z. c #298BC6", "x. c #2D91CC", "c. c #3193CD", "v. c #3B99CE", "b. c #3896CE", "n. c #3C9AD0", "m. c #3795D0", "M. c #2F90CB", "N. c #4F8B9B", "B. c #508E90", "V. c #4982A9", "C. c #4889B4", "Z. c #548BB6", "A. c #5693BA", "S. c #4F89B2", "D. c #6595B7", "F. c #779599", "G. c #4A97C7", "H. c #439DD2", "J. c #489ED3", "K. c #4A9FD8", "L. c #5799C7", "P. c #5793C7", "I. c #4BA1D4", "U. c #47A1D4", "Y. c #5AA2CC", "T. c #52A5D5", "R. c #55A6D8", "E. c #56A9D6", "W. c #56A8D8", "Q. c #5BAAD5", "!. c #5BAAD9", "~. c #5AA5D5", "^. c #56AAD5", "/. c #649AC5", "(. c #64A4CC", "). c #62ABD4", "_. c #63ADDB", "`. c #69AAD6", "'. c #65B1DB", "]. c #6BB2DD", "[. c #6BB6DB", "{. c #71B4DE", "}. c #73B8DE", "|. c #79B6D9", " X c #73ACD5", ".X c #6CB4E0", "XX c #6AB7E1", "oX c #73B6E0", "OX c #74B9E1", "+X c #7BBBE2", "@X c #79B5E1", "#X c #6CAEE1", "$X c #58ACE0", "%X c #77C0E3", "&X c #913125", "*X c #8A5537", "=X c #8D6739", "-X c #AB6933", ";X c #875A49", ":X c #91584D", ">X c #866557", ",X c #976858", ".;.;.>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.>.;.;.;.;.;.;.;.;.>.;.;.&.aXuXuXbXbXaX,.>.:.;.;.:.>.;.;.;.;.$.;.;.;.:.:.:.$.&.$.$.$.,.;.;.;.:.;.,.&.$.$.&.$.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.%.;.;.;.;.;.:.;.;.;.;.;.;.;.;.;.;.;.$.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.| ` ` A. X2 t 6 2 X^.c.l.x.x.x.x.x.x.x.", "+XSXZX+XSXSX+XSXDXFXGXHXHXGXGX X[ ` w w.w.q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.&.gXeXcXtXbXbXvXuX6X=.$.;.;.;.;.;.$.$.$.,.$.$.$.&.-.aXX.X.=.-.=.$.$.$.,.*.aXgXgXaXaX=.$.,.$.$.>.:.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.9.| ] ' V.Y.[.|.|.[.Y.U.l.l.x.x.x.x.x.x.l.", "SX+XSX+X+XSX+X+XCXDXDXFXAXFX|.CX[ ` w q.q.w.w.w.w.w.w.w.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.w.+.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.&.aXeXtXyXyXeXeXeXvXcXdX&.$.$.$.$.:.-.X.X.=.X.=.=.aXrX3XN N N V >XsX=.X.=.6X0X0X9X0X9XrXsX=.X.X.@.>.&.&.$.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.| ] ' k.C.Y.Y.Y.E.G.l.l.x.x.c.x.x.x.x.l.", "SX+X+XSX+X+XSX+X+XCXCXCX+XCXSXCX[ ` w q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.@.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.:.&.aXbXyXlXg.u.rXvX9XrXbX6XaX=.aX=.=.o.B D F N F F N N N m X N F X V N F F N N B B N N B F N N N m V C =.gX=.$.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.:.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.e.A ] ] k.k.z.x.x.x.x.x.x.x.x.l.l.c.l.x.l.", "SX+X%X+X+XZX+X+XCX+XCX|.SX+X+X|.' ' w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.&.aXbXiXxXr.7.6.lXyX>XN V M N M M F h N l j x y > ; a O u C O o.sX4 X x p u l p i G p l ; 2.- 2.i . N >XcXqXsX$.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.A ` ] k.k.x.x.x.x.l.x.x.x.x.x.c.x.l.l.l.", "DXSXSXSX+X+X%X+X+XCX+X+X+X+XOX}.' E w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.&.aXtXiXlX9.3.3.4.xXyX>XX k z . B N O C a a g.i.u , NX:Xa 2XsX= * R $ h u.p.i y.p.u G v i.v 2.; ; NX,Xl ,XG 9XuXuXaX&.:.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.A ` ] k.j.z.x.x.x.l.x.x.x.x.x.l.x.l.l.l.", "SXSXSXSX+X+X+X+X+X+XOX+X+X+XOX#X' E w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.:.:.&.gXyXxXu.9.6.3.6.6.lXtXJ j f.kX$ NXfX= O.1Xl v s.s. &X1X- ; ; < g c l z j z u G z x j ; 2.- s.d.< 5XN C T { f R &.,.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.w.q.0.A ` ] k.j.z.x.l.l.l.x.x.x.l.l.x.l.l.l.l.", "SXSXSXSXSX+XSX+X+X+X+XOXOXOX@X.X' ' w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.&.aXyXiXp.7.3.6.6.e.u.vXvX>X: c =XO T R O T * < ; v ,X< ; ; ; - y m m : m m n K N G G B N G G N m 5 5 : N 5X,X3X* $ zXB * aX$.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.A ` ] V.j.z.x.l.l.l.l.x.x.x.x.l.x.l.l.l.", "DXSXSX+X+X+X+X+X+X+X+XOXOX@XOX_.' ] w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.t.+.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.&.aXyXlXu.g.8.6.9.u.xXyXbX>XV g s 4 # # b b l l 4 m m M m : V a a s y y y M *X8X8Xp m y y h g X y u y y g 4 ..MXo.C C Y N * K sX$.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.A ` ] k.j.j.l.l.l.l.l.l.x.x.x.l.l.l.l.l.", "DXSX+XSXSX+X+X+X+X+XOX@XOX.XoX`.' ] w w.q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.:.$.aXyXlX9.6.bXjXg.>XG N G G B o B m . K D : V N N N X j < X # O.1Xi n X K $ . &X8XwXpX: z $ O M g j c i m h C o.MX{ * T { f @ D 0XsX$.:.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.:.;.;.;.;.>.>.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.0.A ` ] ) j.z.l.l.l.l.l.x.x.l.x.l.l.l.l.l.", "SXSXSXZX+XSX%X+XOX+X}.{.{.].oX(.' ' w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.*.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.&.aXeXiXkX7.4.xXiXiXP X n *Xx H c d.d.o 7XG b y K $ o > h.2.: # T T i x n 6Xo.# &X&X&X&Xb 6Xo.X x y u.p.l m h C R R R V L $ d s M D D f C ;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.A ` ] .j.z.z.l.l.l.l.l.l.l.l.l.l.l.l.l.", "SXSXSXSX%X+X+X+X+X+X}.}.{.oX.X(.' ] w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.$.aXtXyXlXe.6.f.uXlXp.J U NX4 g 3XF , Z J u o N 6X{ # > k k o V # d : g n Y ;Xi j j v j n U .;.;.>.$.&.X.tXtXlXe.7.r.rXyXkX7.I b b i X G n X # b X s n B U ;Xo X i i X y D J m 4 n X 4 4 y M D N V m 4 g : j G n G n b : d.d.> N j NXB g d * zXB = f <.&.:.>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.t.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.9...] ` | ( z.z.l.l.l.l.x.x.l.l.l.l.l.l.l.", "SXSX+XSX+X+X+X+X@XOXOX}.].{.].(.' E w w.w.w.w.w.5.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.;.;.;.;.%.$.$.,.:.$.,.$.$.$.;.$.$.$.;.$.-.aXtXtXyXjX5.u.9XeXyXjXf.J X 4 X X g H G X s V a i m 4 X j j m x m V g m M > < C a a X V a . ; k J y l M : o o X x # m s.: V u B y i d f Y B * D fX-.<.>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.B.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.9...` ` N.( j.z.l.l.l.l.x.l.l.x.x.l.l.l.l.", "SXCXCXCXCX+XOX+X@XOXoX}.[..X].(.' ' w q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.>.;.;.$.-.=.-.=.=.=.=.-.=.=.=.=.=.=.-.aX0XtXtX>XG G G G G G -XzXdX8Xc Y V X h ,XP y r O.7Xs s X g y M X V a i m y h v - O.Y i y O.fX< 2.< i m 1XV b B Y M h B X : X V V g b g $ { C C T y D G * <.>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.t.w.w.w.w.w.q...] ] ( ( z.l.x.x.l.x.x.x.x.x.x.x.x.l.l.", "SXSX+X+X+XOX+X@XOX@XoXOXoX.X].).' ] w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.>.;.&.sX0XtX9XP G G F F G G G G G G G F G N F V - > . ;X4X4X4XNXzX4X*XV M y y p *Xg $ T r y b Y 1Xg M s O.7Xy n M 5 2.- T T y o T T . ; ; y BXLXX 4 > > o z J : : B > k ; J y s d d $ $ y U S u X.$.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.w.w.9...' ] ) ( z.l.l.l.x.l.x.l.x.x.x.x.l.l.l.", "SX+XSX+X@X+X+XOXOX@XoX{.}.{.{.(.' ] w q.q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.@.;.&.sX0XJ G G V 3X4Xi j p 7XH u i b b y x i X c d.zXp =X5X5X-XF.1X3X8X,X5XF J -X j : # b : # # : , : i Y Z o n : : u h g : d.d.5 N =Xl b V . s M y i f V l X.$.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.9...] ] .( z.l.x.x.x.x.x.x.x.x.x.x.l.x.l.", "SXCX+X+X+X+X+X}.OXOX.X{.}.{.}.).' ] w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.@.$.sXcX9XG h u i - i o o D -X8Xp g : Z s.: N ; i Y U o U U o d = * * R <.>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.9.o.] ] .( l.l.x.x.x.l.x.x.l.x.l.l.x.l.x.", "CXSXCX}.+XOXOXoXOXOXoXOX[.oXXX).' ' w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.@.=.cXbXrXG z p.x 5X9Xx c l 5Xx c p n D z l l n 6X5X5XXB l k c u S NXNXo.> : , : M o V a i V d , 2.t F.MXQ n n Y B o N > ; 6Xo.$ pX8XlXpXg y a . y : : l B B i n B u d = zXG * &.>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.9...' ] | ( ( l.x.x.l.l.x.x.x.l.x.l.l.l.l.", "+X+XCXCX+X+X+XOX}.OXoXOXoXoX{.`.' ] w q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.@.sX0XtXeXG z j l F G b G U G s D G j : F F F m 2XvXtXyXyXjXr.eXeXeXeXvXvXP m G I x g { d.MXT < B.d.: x s O.7Xy M D - 2.t R R T M b B N y M < ; Y . g h , 5 H h G G 4XtXeXeXvX4Xz H K K K g M G N G F r R R T < v p > M X T { X M y : j > j j g y X o i y y x m b y n g v i d g 3Xo.$ m ; : i 2Xn M b 8Xd T C f T -.<.;.;.;.;.;.;.;.;.:.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.t.w.w.w.w.w.0.o.` ] .( j.z.x.x.x.x.x.x.x.x.x.l.l.l.l.", "+XCXCX+X+X+X+X+XOX+XoX@X@X}.OX(.' ] w q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.#.P G G G M u =Xz b l =Xz 4XF s.zXp 4 M ; , u M O : 6XtXeXeXvXH 4 n m n n m K h u n g : g : : y o y n n s # # 4 V g j N 4 n N n V V N M g V G : : > > u 5Xo.# x m Y >Xl : d.:Xz # . , b o V a O V a a M , < , 5 o m Y zX] M o 4 , A d.5 b Y >Xu h X g i y o s.F.< 4Xm B M X h vX4XhXMX-XX.,.;.;.;.;.:.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.0.| ` ] ..( z.z.l.l.l.l.l.x.x.x.x.x.l.l.l.", "CXCX+XCX%X+X+X+X+X+XOXOXOX@XOX(.[ ] w q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.#.5 :XfX$ m K c x s j hXz 5XG . 4 g M ; > B >XH X 3XvXz ;Xz y M .;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.q.o.` ] | ( ( z.l.l.l.l.l.x.x.x.x.l.l.l.l.", "CXCX+XCX+XCX+X+X+X}.+X+XOXOXOX`.[ ` w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.#.V U >XK n 4X2X:XB :X5X:X9XN &XdX{ g h ; m n b y m 6XvX*Xi.jXp N v p - y y g y h $ O y S ..MXo.V P J y n n m m N n D 9X2X*Xo.&.:.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q...` ] | ( ( l.l.l.l.l.x.l.x.x.l.x.l.l.l.", "CXCXCXCXCX+X+X+X+X+X+X@XOX+XOX`.' ` w q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.t.w.w.w.w.#.V # b : j J >XP N J P rXyXB a 2Xo.: H j g M M M 4 l ,X;Xi.=Xi m -XF h 5X o > b V 5 t 5 m n X i g n h $ 4Xo.o u C R R R B 3X.,.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.w.w.w.w.9.| ` ] N.) ( l.l.l.l.l.l.l.x.l.l.l.l.l.l.", "CXCXCXCXCX+XCX+X+X+X+XOXOXOX|.`.' E w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.B 2X o g 4Xo.= Y >Xh M j 5 5 5 G vX9Xi fXdX:X9XrXN : : b # 6X-.$.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.A ` ] ) ( ( z.l.l.l.z.x.x.l.l.l.l.l.x.l.", "SX%XCX+X+XCX%X+X+XCX+XOX+X+X}.`.' W w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.#.B *X*Xz j c c Z d.Z 4 F l u u >XG ,X4X6XM 2X;Xu u b M :X3X-X9XP V Y b x J B NX: 5XvX:Xg n UXBXO O.:Xy n BXBXo l K 4 BXBX# < 2.; ; , Z < s.2.o n Y XG P N n B M h N V B y z vX;XM m NXZ O _ C : n NXU . v , b NXU o > ; , BXUX , i.> n b g b B m L ;Xp D j =X2Xo.$ y # X g J J B y B B l O.;.;.;.;.;.;.;.;.;.;.;.;.;.;.%.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.0.A ` ] | ( j.l.l.l.l.l.x.l.x.l.x.l.x.x.x.", "CXCXCXCXCXSX%XCX+X+XOX+X+XOX|.`.' ` w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.B z j p n , , : o X m N *Xv p 5XJ j i.c u 4X:Xj x n l l y y 4 V U U & : >Xx *X5X4XvX;Xn b X : $ $ $ b n X b X > , g : : 4 b BXUX NXY . X X X V m V n h > i *X2X{ d 5XY XF i D y b Y Z - # : 4 B B m : U V o s.2.j 5XU >XD G y s n G b X s n X g y M s *.:.>.;.;.;.;.;.;.;.;.;.;.%.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.A ] ] | ( j.z.l.x.x.x.x.l.l.x.x.x.x.x.x.", "+XCXCX+X+XCXCX+X+X+X}.+XOX+XOX`.[ ' w q.w.w.w.w.w.w.w.w.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.w.+.B P tXX,Xi.G b z j x y E R R fX,XNXg F NXX 5XvX3X2X2X2X2XJ F i.I 5X5XH :X3XM u.kXD n X X n B m b y # O BXUXb > , c > G b y 4 g $ i a B ,XX U U X 4 U U # <.:.:.;.;.;.;.;.;.;.;.;.;.>.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.A ` ] | ( j.z.x.x.x.x.x.x.x.x.x.c.x.x.x.", "CX+X+X+X+X+X+XCX+X+X}.%X+X}.|.(.' ] w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.t.w.w.w.@.o.F ;Xz u 4XeXeXeXeXvXrXp p.8.t.3X2X3X3Xh >XyXkXr.J # M G J V 5 G 1X6X>XC y X U y ;XnXvXnXvXnX5XF P 8.p.pXz p :X3XM v jXi N k B 5 : S X X.O.O F.U o m > g : g d u i : } fXu B 9Xy B B y X B B M -.>.*.>.%.$.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.w.w.w.q.0.A ` ] / ( j.z.x.x.c.x.x.c.x.x.x.x.x.x.x.", "+XCX+X+XCX+X+X}.+X+X+X+X@XOX}.`.' E w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.@.X.G p i.x 4XeXeXeXeXtXtX:XK I H H ;X;X;Xh H H H ;XD M 2XK u u n J J J n o y X o y M P P P P P B m G jX5Xc i.i G F x M M N j h > > BXUXo R 1.o X g : B g : S X } 7Xu # T { # G 4Xi o . *XN # o s G K G C <.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.>.N.w.w.t.t.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.0.A ] ] | ( j.z.x.x.x.x.x.x.x.c.c.x.c.x.x.", "+XCX}.CX+X}.CX+X}.+XOX+XOXOX}.`.' ' w q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.X.G l v p 4XyXyXyXyXyXxXkXy.i.k i.I 2X7X4X2X7XX2X7X6X6X2X6X6Xh l y u u y u h i : ,XwXj x u M m m m G N g n j j NXY o :Xd i M M n P : NXIXo T { # N H ;XK J 4Xi NXS x M .;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.0.A ` ] N.! j.z.l.x.x.x.x.c.c.x.c.c.x.x.l.", "+X+X+X+X+X+X}.CXCX|.+X+XOX}.|.(.' ' w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.@.X.F 4X3XjXkXkXkXjXjXkXr.6.6.6.7.7.5.kXkXkXkXlXf.6.6.7.w.5Xj l b 3XlXkXkXkXjXkXlX:Xi.c p c jXp c =Xy G J J F g # J F b h D F =XXy h :X,X2X,XI 8.kX9X5X=X2X;Xi } } $ N h X i X i N h b g l H M N Xy.7.6.3.3.3.3.6.p.X,Xn y i n o h : X i *XM B >XF i u y y y.g.;XX b ;XqXuX=.&.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.B.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.0.A ` ] | j.j.z.x.x.x.c.x.c.c.x.c.c.c.x.x.", "|.}.+X}.+X+X+X+X+X+X+X+X+X+X|.(.' ` w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.*.dXJ u.6.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.5.J s.8.3.3.3.3.3.3.6.6.6.6.6.6.6.6.7.XvXvXvXjXP P P G P B 4 # i i n X # # # G P B y :XsX$ h : NXB z x ;XF b y.g.*X# c hXz X NXB F wXsX&.,.:.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.0.A ` ] ) ( j.z.x.x.x.x.x.c.c.c.x.x.x.c.x.", "CX+X+X+X+X+X+X+X+X+XOX+X+X+X}.`.' E w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.#.fXG 4Xr.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.7.5.G i.8.8.6.3.3.3.3.3.3.3.3.3.3.6.3.7.jXL K M G P P >XG # n X G 3XK } 7Xi V u o # u i u s y pXdXf y g Y M o x wX4Xn c kXz b X g X g U N y 4XvXuX=.$.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.A ` ] | ( j.z.x.c.x.x.x.c.c.x.m.x.c.x.x.", "+X+X}.+X+X+X+X+X+X+X+XOXOXOXOX`.[ ` w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.%.X.F yXu.6.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.7.8.t.P M c g a.6.3.3.3.3.3.3.3.3.3.3.3.6.y.i.d.i.I ,X>X,XP 4 B.w o P 9XK R { X G z k } 7Xp hXu # . a a M 4 o X X n P P j X s X B ,X,X,XN X y g ;XrX6X=.,.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.0.A ` ] | ( z.z.x.x.x.x.x.c.x.m.x.x.x.x.x.", "+X+X+X+X+X+X+X+X+X+X+X+XOX+X|.`.' ` w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.%.X.F rXf.6.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.4.k j h M B d.V k 6.3.3.3.3.3.3.3.3.3.3.3.3.6.6.3.7.kXvXvXvX7X> 2.h.$ P xX5XK K K H x < T } j k u b } 7Xa h ,X1X,X>XM ,X>Xj y g =XG vXvXuXT * T T ,XaX$.$.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.0.A ` ] | ( z.l.x.x.x.x.c.x.x.x.x.x.c.c.x.", "+X+X}.+X+X+X+X+X+X+X+X+XoX+X}.`.' ] w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.@.X.G eXp.6.7.7.4.7.3.6.3.3.3.3.3.3.4.7.4.7.4.4.7.8.8.7.t.k BXL o B BXd.k 7.6.3.3.3.3.3.3.3.3.3.3.3.3.3.3.4.lXyXeXvX1X: < 4 # B >X,X>X;XP B D M $ $ s J G b T } # D nXyXtX4XK vXrXb NXB x F rXcX6X* Y Z * dX=.$.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.A ` ] | ( ( z.x.x.x.x.x.x.x.x.x.c.c.c.x.", "}.CX|.+X+X+X+X+X+X+X+XOX+XOXOX`.[ E w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.@.X.G P >Xd.I I I lXxXf.6.3.3.3.3.5.lXI I I d.I I I Z I 4XI NXA : 4 S B F p.8.7.4.7.4.4.4.6.3.3.3.3.3.3.6.p.yXtXeXvX;X: C 4 : V n # # i i n u M n D x s b y $ O o i *XbXtX4Xx tX4X4 Y M X N eXcX6X* Y G * &.>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.A ` ] N.( j.z.x.x.x.x.c.x.x.x.x.x.x.c.c.", "+X+XCX+X+X+X+X+X+XOXoX+XOXOX|.`.[ ' w q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.%.X.F >XX 4 > H N K :X&XjXu.6.3.3.5.lXK y u M u y b >XD J M 4 > b y y y 4 J I I I I k Z I y.3.3.3.3.3.3.6.lXyXxXxXvX;XBXUXo NXUX4 # } :Xa i o . : o . o N ,X2Xz } 7Xp 9XvX3XK tX6Xm o X X B 0XvXdX{ L C T &.>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.A ` ] | ( j.z.x.x.x.x.x.x.x.x.x.c.x.c.x.", "+X+X+XCX+XOX+X+X+XOXOX}.}.}.|.(.[ E w w.w.w.w.w.q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.@.X.G 5Xt d.Z 5XD T o.p 5XvXu.6.3.7.r.:Xc c p c c g 6XJ X X a ;XG d NXo.j G : : B b n BXBXk 6.3.3.3.3.3.6.lXyXyXvXvX>XNXY O BXd.o # _ } o 2X{ = b C K i J yXnX2XR } D qXvX4XD vXbX,X,XZ B 2X3X:X7Xf * * T <.:.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.t.w.w.w.w.w.w.w.0.A ` ] | ( j.z.x.x.x.x.x.x.x.x.x.c.x.c.c.", "CX+X+X+X+X+X+XoX+XoXOXoXOXoX}.`.[ ` w q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.@.X.J 5X, F < 2XF @ } C 5XyXtXr.3.3.e.:Xv x p k x b 5XH * o.pXH G $ } R *XP n BXBXo N BXS v 8.6.6.7.7.7.7.hX4X>X>X1XD X : X X : : N K K D 1X1Xn : u C # H 9X>XP $ $ X >X>X>Xl ;X:X,X;X4 n ;Xh o g i h j ,X>XJ B G 4 n g g g m ;Xi U S X n >X,XX# s : b N b F I I I i.I I I J u y h H A d.k yXtX0X,X,X,X>XV m h ,XrXi U U u # T * T 1.:.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.0.A ` ] | ( j.M.l.x.x.l.x.x.x.c.c.x.x.x.c.", "+X+X+X+X}.OXOXoXoX+XXXoX{.{.{.).' ` w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.@.=.F H *Xz 9X,XM n Z : 2XyXeXyXp.8.3.3.6.9.lXf o.&XX C X.&Xs P eXnX2X;Xz h b , > s y # i.8.6.6.6.6.7.8.XF >X3XvX9Xh o o X f * Y V * &.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.>.N.t.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.0.A ` ] B.( j.z.x.x.c.x.x.x.x.x.x.x.c.x.x.", "+X+X+X+X}.+XOX{.oXOX}.{.{.oXoX(.' ] w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.@.-.M k p.;X2XG > i rXeXeXeXtXr.3.3.3.6.9.f } C y * } ] : z :Xp M # U P g k v u.jXd d.8.6.6.3.3.3.6.jXj c i :XyXvXvX;XZ Z o b NXUXd X } o.o i.i.z l i.u g > i X 7XF t d.Z 4XV m ,X,X,X>Xh M B B C * Y J * &.$.:.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.0.A ` ] | ( j.M.l.x.x.x.x.x.x.x.c.x.x.c.c.", "+X+X@X}.OX}.OXOXoX}.OXoX.XoX{.`.' ] w w.w.w.w.w.w.w.w.w.w.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.@.%.B j y.p 5XN 2.J a 3XvXeXeXeXiXp.6.3.3.3.4.N $ $ V O = O X l 1X* X b B F X k v p.=Xy ;Xc c a.6.3.3.7.jXp p u =X9XXn s.BXk 4XvXeXbXbXyXp.6.3.3.3.7.r.P M i ; p.m X S 1X>X# X o o # , > h y : K x =Xx 7.3.3.6.X>X;X,XB < : z rXbXtXvXiXp.3.3.3.3.6.w.P z c ; h.F g V V u 4 P ,XM s a o s X : H k j c 7.3.3.7. G rXcXL } pXa 7X{ o >X5X5Xi.7.6.3.6.p.Xn S s.:XnXmXf } [ a -XsX$ ,XwX5X8.7.7.7.3.4.8.8.I H p.I k x : k H H l l p u > , i.> B # { O.$ n g g X G 5Xm H wXlXNX1X8XcXnX9Xl ;X:XXy h g n 5 > s V a.6.3.3.4.c $ O $ n >X3X3X> i a 5 5 S o.U ,XM 4 n b s } { O d.V j 7.3.3.7.c :X;XNXUX. NXBXM x j _ o.# M k p.*Xk I hXi G o { } $ m B ,XyXqX>XB G wXaX,.>.*.V [ { [ [ C T $ @.>.$.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.A ` ` | ( k.M.c.c.c.c.c.x.c.x.x.x.l.x.l.", "oXoXoXoXoXoXoXoX{.oX.XOX.X{.{.`.' ] w w.w.w.w.w.w.w.w.w.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.w.@.@.B ,X2X>X3XtXiX9Xc g.XI I u.6.3.3.e.f o.&Xu X b # 4 4 4 4 b { zXMXo.wXH NXBXX & O.1.X BXF.c 8.6.6.7.c :X,XBXd. BXF.i j Z $ $ X K x k x v v y.u G g > * # 4 y *X;X0X8X-X-XdX,.,.,.O.L aXaX} X.} X.{ ;.$.$.;.;.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.t.w.w.t.w.w.w.w.w.w.w.w.w.w.w.w.w.w.0.A ` ] B.( j.M.c.c.c.c.c.c.x.c.x.x.x.x.l.", "oXoXoXoXoXoX{.oX{.oXOXoX}.+X}.`.[ ] w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.*.%.V X s y V rXvX9Xc p.x s rXp.7.8.3.3.7.8.lXf } { y > Y Z o B U b X { } { o.wXJ UXU o # $ $ O U B N I i.I i.F D H b : o b X j D n : X X N H H F H K H M F x k N >XF : V M 9XtXyX-.&.&.=.fXY x 2X2XM X y =X-XdXdXdX=.$.;.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.0.A ` ] | ( k.M.c.c.b.c.m.c.c.x.x.x.l.x.x.", "oXoXoXOXoXoXoX{.{.oXoXOX}.OX{.`.' W w w.w.w.w.w.q.w.w.w.w.w.w.w.w.w.w.w.w.w.t.w.w.w.w.w.@.*.V j g.=X# 1X2X2Xu D K V i.6.3.3.3.4.y.d.6Xs $ $ b m d.s.X B Y N y t 2 + J 3XM # : : J P P I c I I I G I U F D N X M m F y u n > 2.Z X N M g g g b B B N H M G nX5XB S g 9XuX=.&.=.6XH y . j > m o Y B *X=XmXnXqXuX-.$.:.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.t.w.w.w.w.w.w.t.w.w.w.w.0.A ' ] | ( k.M.c.c.c.c.c.c.x.x.x.x.l.x.x.", "oXoX}.@XoXoXoX{.oXoX}.oX}.}.|.`.' E w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.e.@.%.V k p.;X> , > , , F N >Xr.6.3.3.6.e.>Xd b g : , m : > > b b # X g J I I I Z I I I I 3XwXjX5.7.7.4.8.4.8.w.I :X 2.I g M c =Xx =Xh n g y 4 B G 3X>X < x vXgX&.&.sXwX:X{ = g 5 Y < Y B y . x :XeXnXuXgX$.;.;.;.;.;.;.;.;.;.>.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.9.A ] ] ..) k.M.c.c.c.c.c.c.x.x.x.x.x.x.x.", "oXOXOXOXOXoXoXoXoX@XoXoXOXOXoX`.[ ` w w.q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.*.*.V X u y ; ; ; , ; I G y.6.6.7.e.s.jXJ z c z ; ; . g F G X X X b J i.8.4.5.4.7.7.8.8.e.lXjX7.3.3.3.3.6.3.7.k ,X,XBXNXo N j c u g . y d a.k c c u s y.hXp 4 s y g P N z 5XtX>.&.sX5XY 1XV X d.d., h j a B S X ;X,X3X1X=.&.>.>.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.9.| { ] | ( k.M.m.x.x.m.c.c.c.x.c.c.x.x.l.", "oXoXOX@XoXoX@XoXoX@XOXoX{.OX|.`.' ' w q.w.w.w.w.w.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.%.L =XU U ;X>XV s u : J u.8.i.k c D X d p k k - X G F 5XJ : 4 B # d.7.7.6.6.6.p.u.6.6.y.;X*Xa.6.3.3.3.3.3.7.I :X:Xy , o 4 } pXi G x c b F ;XD G K M M a.kXD X y.i.*X2X4 Y b =X-.&.gX6XP ;Xz n o x j yXxX=XU U u D F V y H sX*.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q...] ] | ( j.M.x.x.x.x.c.x.x.x.x.x.x.x.x.", "oXoX}.}.OXOX@XoXoX@X}.oX}.OX{.(.' ` w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.&.gXwXBXzX8XqXV j p.=X5XxXlX:Xc z s j u.XG U l K z s u.kX:X.,.dXvXvXP B ,XXuXyXyXyXyXrXvXiXnX2Xv c x 7.7.7.7.6.6.7.c :X4XD z N # = $ X F x c u : 2.Z i 5XH o y M ;X4 i h u ,Xn X y i ,X5Xo.} o.2X,X,Xm 4 y X m J >XP N V m 4 Y G X 2XgX&.;.;.;.;.;.;.N.w.w.w.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.9.| ` ] | ( z.c.c.c.x.m.x.x.x.x.x.x.x.x.x.", "{.OXOX}.oXoX}.}.}.OXOX{.oX}.oX`.[ ' w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.&.aX5XZ G 4X8XN X h g ;X3X1XH K D n o p i Z - 4 P P J P B J J >XB ,XtXtXvXeXvX6X,X3X>Xl K H i.s.y.i.i.s.i.K H P B s y x P H G K j i.u > 2.I . k 2. k 2. G P H P n : 4 b P P { ] U P J P J b h 6Xh M eXtX:Xn g J J D M z 4XaX$.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.w.q.| ' ' | ) j.M.c.c.m.x.c.x.x.c.x.x.x.x.x.", "{.OXOXOXoXoXoXoXOX{.OX}.}.oX}.(.[ ] w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.&.aX8X-Xp -X*XN J F P J J J P P P N j u.=Xb G P J 4XtXtXcXP H *XX2X2X3X,X3XG N J P J I P G J J F J J J F M G x =Xi 1XcXlX6XG F G D : > s.i.- y.s.> N :X=X:Xb L B y 0XgX&.-.uXvX0XvXrXb >XUX;Xn 9X4XG B : wXsX>.*.*.>.:.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.t.w.w.w.w.w.w.w.q.| ] ] N.( k.M.c.c.c.c.c.c.x.x.x.x.x.x.x.", "oXoXOXOXoXoXoXoX{.OXOX{.oXoX}.`.' ] w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.$.X.nX9XG S X b 9X5XcXnXtXtXtXbXcXF j p.Xl N tX9XU U D 5XsX&.:.:.$.>.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.o.' ' | ( j.M.c.c.m.c.c.c.x.x.x.c.x.x.x.", "oXoXoXoXoXoXoXOXoXoX}.}.oXoXoX(.' ^ w w.w.w.w.w.w.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.w.w.w.t.+.,.X.cX9XU U M n 4X*XX3X6X3XX3X3XF X X X 4 3XvXeXeXeXeXeXtXuXlX3.3.8.I D z =X*X5X4X=X=Xx F.BXm X D L o 1.o.D 0XtXe.3.3.5.5.5.5.5.i.V z ;X*XrXcXgX&.sXmX9X:X,X2XvX4XN b z 2XrXN # : x B g :XdX,.,.&.&.&.&.;.;.;.;.;.;.N.w.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.9.| ` ' | ( j.M.c.c.c.c.x.m.x.x.x.m.x.x.x.", "].oX{.{.{.oXoXoXoX.X{.{..XoX}.(.[ ] w q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.,.aX0XB : b : V 5Xd.BXj M G b 4 4 m rXnXnXJ 2XvXyX,XG J P j F G J B 3XvXeXeXeXeXeXtXtXeXu.3.7.I K k k :XiXvX:X;X,XBXzXX D l M $ f f K vXtXp.6.6.3.6.3.6.7.y.J f.p.yXeXvXfX>.uXvX2XB B X 5X4Xn B B X 5Xn U B *Xh U N =XdXdXdXdXdX-.&.%.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.9.| ' E | ( k.M.c.c.M.c.m.x.x.x.x.x.x.x.x.", "{.oX{.oXoXoXoXoXOXoX].{.oX.X].).[ ] w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.t.w.@.>.6X0XM B S X y X,XeXtXeXeXeXeXyXbXiXjX6.6.i.>X:X:X5XtXtX:X:X2XG M x nXeXvX0X0X0XyXeXeXyXjXp.6.3.3.3.6.y.J 8.7.jXiXvXrXdXcXvX5XU U h 5X5Xn U U M -Xn zXC X o NXU X *XX;XyX9XuXtXeXeXeX0XeXeXeXeXeXtXiXtX5.3.3.3.6.u.L i.y.XbXvXuX-.%.;.;.>.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.e.o.` ` | j.k.k.c.c.c.c.x.m.x.x.x.x.x.x.x.", "].{.{.].oXOX{..X{.{.].{.oX.X.X(.[ ` w q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.aX0XN X o l d O.$.$.-.yXeXN X X X X B U h X 6XeX6XbX4X3X6XF S Y : # >XeXvXeXtXtXyXtXjX5.3.3.3.7.u.tXtXeXeXvX:XH vXeXeXeXeXeXeXeXeXeXeXeXeXeXeXyXp.6.6.6.7.y.L P L G G G J G B .;.;.;.N.t.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.9.A ` ' | j.k.c.c.b.c.b.m.x.x.x.x.c.x.x.x.", "].].{.{.{.].].{.].].'.]..X#X].(.' ` w w.w.w.w.w.w.w.w.w.w.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.@.=.xXg Y U X O.,.;.;.;.$.$.-.>.;.-.;.$.gXtXG 3XvXG > Y m :X1XB =X0XvXJ 3XlX5.8.5.4.3.3.3.3.6.u.yXeXeXeXeXeXvX>X;XtXeXeXeXeXeXeXeXeXeXeXeXeXeXeXyXeXyXyX4.7.u.L 5.3.6.7.p.yXeXtXbXqXzXNX1XwXsX&.sX5XB B X b n 2.j a 4 4 y X V B -XfX&.&.;.;.;.;.N.w.w.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.0.A [ E | j.k.c.c.c.c.b.x.x.x.x.x.c.c.x.x.", "].].].].].].].].].].'.]..X_._.Y.[ ' w q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.@.,.sXP M l d O.>.;.;.;.;.;.$.;.;.$.;.;.$.*.C 5XvXG Z d.s.*X0XJ x :X2XG 5XxXp.p.r.6.3.3.3.7.u.yXtXeXeXeXeXeXvX;X;XvXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXtXtXkXp.,XG e.6.3.6.u.iXtXeXtXqX x xXF m S b X -XNXNX8XlX7.3.4.3.u.iXtXeXtXeXeXeXeXvX>X;XeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXtXbXeXeXvXiX3XG i.4.3.3.3.p.yXuXtXvX8X*X.$.<.V h u n n - Z - b U U b X G B =XwXsX$.;.;.;.N.w.w.w.w.w.t.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.w.w.q.A ` ` | ~ j.k.c.m.c.c.c.c.c.c.x.x.x.x.x.", ".X.X.X_._.].]._.]._._.`..X#X].(.W ] w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.@.$.aX0XtX0XsX$.;.;.:.*.sXfX-.$.;.;.>.sXdX-.C #.gXU n B g :XnXH B Y N X X;XvXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXvX3XV P e.6.3.3.3.7.u.iXuXqXzXNX1XwXqXdXsX*.&.sXqXvXeX5Xx g N 4XeXI M h p 4XsX$.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.0.A E ' / j.k.c.c.b.c.c.c.c.c.c.c.x.x.c.x.", "_..X_._..X_.].].].'.'._._.]._.Y.[ ] w 5.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.@.$.aX0X0X0XaX$.;.;.:.:.aXeX0XuXO.} X.*XH l y =.&.C h n l 5XvXP N G B 3XqX-X*X8XMXu.tXyXyXeXeXeXeXeXeXeXeXeXvX:X;XvXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXvX3XG tXkXu.3.6.3.3.3.p.yXqX3XY U wXqX0XqXgX&.:.sXcX4XX # b n rXtXtX9XeX9XdX$.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.0.A ' E B.j.j.k.c.b.c.c.x.x.x.x.c.x.c.x.m.", "_..X_._..X_.`._._.].'.!.'._._.Y.[ ] w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.$.aX0XeX0XsX&.%.:.;.;.$.aXeX0Xl c x p y.c s 6XsXL ,X.$.sXnX*Xy.x l z l b ,X0XG b n n B G B 3XvXtXeXeXeXeXeX9X9XeXeXeXeXeXeXeXeXeXeXeXeXtX>X;XvXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXbXvX3XG tXeXrXyXkXu.3.7.7.u.iXtX0XvXcXyXeXeXqXdX>.&.$.sXj < o K rXeXeXeX0XaX&.;.;.;.;.;.N.w.w.w.t.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.A ] ] / j.k.c.c.b.c.c.x.c.x.c.x.x.c.c.m.", ".X_._._..X_._.!._._._._._.!.'.Y.` ] w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.$.aXcXeXcXsX&.;.;.;.;.;.;.$.aX-X;X*XD B G G G B B > U m *XvXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXvX:XJ vXbXeXeXeXeXeXeXeXeXeXtXeXeXeXeXeXeXeXvXrX,XG eXeXeXeXyXyXkXp.u.lXyXeXeXeXeXeXeXeXeXcXdXsX*.&.fX9XfX-.sX0XeXeX0X6X>.,.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.t.w.w.w.w.w.w.w.w.q.q.A ] ] | ( j.c.c.c.c.c.c.c.c.c.x.c.m.c.x.", "_._.]._._._.)._.!.)._.!.Q._._.T.[ ] w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.@.;.$.sX0X0XaX&.;.;.;.;.;.;.;.$.aXyXiX5XG x 5X5XF 5XY d.s.;XvXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXvX;X;XvXtXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXvX6XN G 0XeXeXeXbXuXvXyXyXbXeXeXeXeXeXeXeXeXeXeX0XmXaX&.$.=.>.&.=.cX0XeXrXqXsX,.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.0.A ] E | ( k.c.c.c.c.x.x.x.c.x.m.x.c.c.x.", "_._._._._.).).!.~.).!._.Q._.!.T.[ ` w q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.>.&.=.0X0XdX,.$.;.;.;.;.;.;.;.$.-.sX5XF X X b 4 2XvXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXvXyXeXvXvXeXvXvX:X;XeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXtX3XP tXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXtX0XdX;.:.$.:.;.*.-.sX0XeXqXaX$.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.t.w.0.A ' ] N.j.x.c.c.c.c.x.x.x.c.x.x.c.c.x.x.", "_._._._.).~.Q.Y.~.!.!.!.Q.!.!.L.[ ] w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.;.$.aX0XtXcX6X*.$.;.;.;.;.;.;.:.&.,.>XN m Y S : 6XyX9X9X0XeXvXeXvXvXeXvXvXbXeXvXeXbXvXtXvXrX4X4X4X6X4X4X6XxXH ;XvXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXtXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXtXeXeXeXeX0XqXdX;.&.;.;.:.:.$.sX0XdX;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.0.A ` ' ~ z.x.x.m.c.c.x.x.m.x.c.c.x.c.c.m.", "_._._.).!.~.Q.~.~.Q.!.!.Q.!.~.T.' ` w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.t.w.w.w.+.;.$.=.tXeXeXqXsX&.;.;.;.;.;.;.;.;.,._ V . < y 3XrX9XrX4X4X4XrX6X4X4X4X6X6X4X4X6XrX4X4X4XP m g N F n n n N M H vXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXbXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXtX0XdXsX*.;.:.;.;.$.=.:.:.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.t.0.A ` ` / j.x.x.c.m.c.c.x.m.c.x.x.m.x.x.x.", "_._._._.~.Y.Y.Y.~.~.!.!.!.~.~.T.' ` w q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.;.$.aX0XeXeX0XsX$.;.;.;.;.;.;.;.;.&.{ C N V m j m n d s B V s b n n n N G G G N b n m S C B y U x =X4 S n K .$.gX0XtXtXcXsX&.;.>.;.;.;.;.;.;.,._ %.dXF b M n y y.*X:Xc 8X;X U , x nXeXeXJ B n $ NXlX{ N NX4 : V Y B u ;X6XvXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXtXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX0XdX*.:.;.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.A ` ] | ~ j.k.c.m.x.c.c.c.x.c.m.x.c.x.x.", "!.).~.Y.Y.Y.Y.I.~.R.W.W.R.E.R.T.[ ] w w.q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.;.;.$.fXvXrX0XdXaX;.;.;.;.;.;.;.;.,.{ @.,.K z l s c g.jX:X5XMX9Xg d.d.;XvXvXtX>XY B * F.zXT : X i y M M M i ;XvXtXeXeXtXeXeXeXeXeXeXeXeXeXeXeXeXeXeXtXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX0XdX;.&.;.;.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.A ` ] | j.k.c.m.m.x.c.c.c.c.x.x.x.x.x.x.", "!.).~.Y.Y.Y.Y.Y.T.T.R.R.E.R.R.R.[ ] w q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.;.;.$.=.0XeXeX0XqXdX>.$.;.;.;.;.;.$._ <.>.>Xy.c s y c l :Xz =XK , 5 ;XrX4XrXF b g $ R R 2 g B l =XH 5X=Xx ;XiXvXrXeXeXeXeXeXeXeXtXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXqXdXsX*.:.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.| { ] | j.k.c.m.x.x.x.x.x.x.c.c.c.c.c.x.", "~.~.~.~.T.Y.I.T.I.T.T.R.R.T.T.T.[ ` w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.>.;.$.gXcXeXeXtXtXcX6X;.$.;.;.;.;.:.{ <.dX:Xz p n 4 X X n s # X g X 4 4 n n M b b m G > j j B NXg : n G N o P u.lXyXtXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXtXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX0XqXaX&.;.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q...] ] / j.j.c.x.x.m.m.x.m.x.x.x.x.c.x.m.", "!.~.Y.R.T.Y.T.I.I.I.T.T.T.T.T.T.' ] w w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.;.>.$.gX0XeXtXtXeXeXcXdX>.%.;.>.>.,.} -.tXP B J F g i.z . i.*X. o # . lX=X U m o ,XcXH B x =XM p y V Y B o I 6.5.f.lXuXeXeXeXeXeXtXeXeXeXeXrXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXtXeXeXeXeXeXeX0XdX*.$.;.;.;.;.;.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.0...' ] | j.k.c.c.c.c.c.x.c.c.x.x.m.c.c.x.", "!.~.R.R.T.I.T.T.T.T.T.T.I.T.T.E.' ] w q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.;.:.$.gX0XeXrX4XrXrXbXvX6X>.&.O.O.O.T fX5XG 2XrX9Xc f.jXj g.jXs Y Y i MXvXj d.d.> ;X5X>XNXX x r.r.I g V u i :Xf.3.6.jXiXyXyXyXyXyXyXyXyXyXyXtXyXtXrXeXeXeXeXeXeXeXeXeXeXeXeXtXeXeXeXeXtXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXcXdX*.;.;.;.;.;.;.;.N.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.9.| ] ] / ~ k.c.c.c.x.c.c.x.x.x.x.x.x.c.x.", "~.~.R.T.T.J.T.T.T.I.I.I.I.I.R.R.' ] w q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.:.%.&.gXcXrXN n n B 4XxXcX6XaX4 X # i c z 4 6XyXtXl c z . x D O > . -Xz . , > X >XeXH 4 i l u.r.I V 4 X M z .$.=.cX9XM B X : 2X5X5X5X-XB Y B < f.jXy 6XtXtXJ n M M V D M V D B d V D d V G G L G V f K 7XL J B 4 B B o I 8.3.3.6.6.3.3.3.3.3.3.3.3.6.6.7.p.yXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXtXbXeXeXeXeXeXeXeXeXeXeXvXcXaX$.;.;.;.;.;.%.N.w.w.w.w.w.w.w.w.w.w.t.w.w.w.w.w.w.w.w.w.w.w.w.9...] ] B.V./.).[.Q.^.x.x.m.x.x.x.x.c.c.m.", "~.~.T.T.I.I.I.I.[.|.AXFXFXDXVX(.[ ` w q.w.w.w.w.q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.+.>.%.>.dXcX9XY Y g g 4XrXrXrX9XX < - . =Xx 4 3XtXeXeXrXrXeXjXr.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.>Xm Y G o c 8.3.6.3.3.4.3.4.3.6.7.6.6.6.6.7.p.iXeXeXeXeXbXeXeXeXeXeXeXeXeXvXrXeXeXeXeXeXeXeXeXeXrXeXeXeXeXeXeXeXeXxXvXeX0XdX;.;.>.;.:.;.;.N.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.9...` ] N.D.|.|.CX|.[.Q.x.c.x.x.m.x.c.c.m.", "R.T.T.J.I.I.T.I.AXAX3 6 2 9 AX|.| ' w r.w.w.5.w.w.w.w.w.w.w.q.w.w.w.q.w.w.w.w.w.w.w.w.w.#.+.+.fXxXxX4Xm : g g Z N Z Z N j m m m m : m 3XxXxXxXxXxX9XlXf.r.r.r.r.r.f.r.r.r.r.r.r.r.r.r.r.r.r.f.I 4 g g i I g.r.f.r.f.f.r.r.r.f.r.r.u.u.r.r.lXbXxXxXxXxXxXxXxXxXxXxXbXxXxXlXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxX-.@.+.+.+.+.+.B.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.9.| ` ] N.VX6 & 2 2 VX'.x.c.x.x.x.x.x.m.x.", "R.R.T.T.J.J.J.J.SXFX7 & 2 8 GXVX .' E h.0.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.e.w.w.w.w.w.w.w.9.e.w.w.w.w.w.w.w.w.w.w.q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.t.w.w.w.w.w.w.w.w.w.r.| ` E F.VX8 6 7 2 FX[.c.x.c.x.x.x.m.x.m.", "R.T.T.T.J.T.J.J.DXHX6 & 7 8 HXDXG.' ] h.9.w.q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.w.w.q.s.` ` W F.LX8 & 7 7 HX|.c.c.c.m.x.c.x.x.m.", "T.T.I.I.I.H.I.I.AXJX& 6 7 7 JXSXJ./ [ | h.q.w.w.w.w.w.w.w.w.w.5.w.w.w.w.q.w.q.w.w.w.w.q.w.w.w.q.w.w.w.q.w.q.w.w.q.q.w.w.q.w.w.q.w.q.w.w.q.w.w.w.w.q.w.w.w.w.q.w.w.q.w.w.w.w.q.w.w.w.q.w.w.w.w.q.w.w.q.w.q.w.w.q.w.w.w.w.q.w.w.q.w.q.w.w.q.w.w.w.w.q.w.w.w.q.w.w.q.w.w.w.w.w.q.w.w.w.w.q.w.w.q.w.w.w.q.w.w.w.w.q.w.w.w.q.q.w.w.q.w.w.w.q.w.w.w.q.q.w.w.q.w.w.w.q.w.w.w.w.w.w.w.w.w.w.9.h.| ] ] W XLX7 7 & 7 HX}.b.b.b.b.c.c.c.c.c.", "T.T.I.I.U.U.H.J.DXJX7 9 2 & JXDXK. .[ [ A u.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.5.w.w.w.w.w.w.r.s.W ] ] ^ F.LX7 7 7 7 JXVXv.v.v.b.b.b.b.b.b.", "E.I.T.I.J.G.H.J.DXJX7 7 6 7 JXFXJ.G. .[ W A r.q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.w.w.w.w.w.w.w.w.w.w.q.q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.r.A ] ] ' e ^ F.LX6 1 6 & JX|.n.n.n.n.v.v.b.b.b.", "T.T.I.I.J.J.J.H.DXJX1 6 2 % JXAXH.J.G.) [ [ A h.9.w.w.w.w.w.w.e.w.w.w.w.w.w.w.w.w.w.w.q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.w.w.w.w.w.w.w.w.w.w.w.q.w.w.w.w.w.w.w.w.w.w.w.e.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.q.w.w.w.w.w.w.w.w.w.w.w.q.w.w.w.w.w.w.w.w.w.w.w.q.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.0.h.s.^ ' ' e q / VXLX6 3 1 & HXAXH.H.n.H.n.v.v.v.b.", "T.I.I.I.I.H.J.H.DXJX6 % 6 1 JXDXH.I.I.P.| { ` | s.r.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.0.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.0.9.9.9.9.9.9.9.9.9.9.9.0.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.r.s...] ] ' C 9 / k.VXUX2 3 1 7 JXVXH.n.H.H.v.H.v.v.v.", "I.R.I.I.I.H.J.H.DXJX& 6 8 7 JXAXH.J.I.~. .| [ { { [ ` ` ` ` { E ' ' E ` ' ] E ` ' E ' ` ` ` ` ' [ E ] ] E ` ` ` E ' ` ` ' ' ` E E ` ` ` ] ` ` ] ] E ` ` ' E ` ' ` E ` ` E ' ] ' ` ` E ` ' ' ' E ' E ` ` ` E ` ` ` ] ` ] ' ` E ` ' E ` E ` ` ' E E ' ' ` ` ` ` ` ' E ' ` E ` ` ] ` ` ` ` ' ' ` E ] ] ` ` E ` ` ` ' ' ] ] E ` ` ` ` ` ' E E ' ` ' ` E ` ` ` ] ` ] ] ' [ ` ` ` ` ` ] ' ] e q ^ V.S.VXLX7 1 7 2 JXAXH.U.H.H.H.H.n.v.v.", "E.I.I.I.J.H.H.J.DXJX7 1 % 9 JXFXH.J.J.K.G.C.| ^ ^ W { [ ` ` ` ` ` ` [ { ` ` ` ` { ' ` ` ` ` ] ` ` [ ` ` ` ` ` ` ` ` [ ` ` ` ] ` ` ` { [ ` ' ] ` ' ` ` [ ` ' ' [ ` ` ` [ ` ' ` ' ` ` ] ` ` ` ] ` ` ` ` [ ` [ ` [ ` ` ` ` ] ` ' ] ` ` ] ` ` ` ` ` ` ` ` ` ] ` ] ] ` ` ] ] ` ` ` ` ` ] ` ] ` ` ] ] ` ` ` ] ` ] ] ] ] ] ` ` ` ` ` [ ` ] [ { ` ` ` ` ` ` ' { ` ` ] ` ] ] ` ` ` ` ` ] ] ] q e q V.k.A.AXJX7 + 1 7 JXSXU.H.H.H.H.H.v.H.v.", "I.T.I.I.H.H.H.H.DXJX& & 8 % PXLXH.n.K.H.J.J.G.Z. ./ ^ ' E E E C ] e E E E ` E E E W C E E E E W E E E ] E E ` E E E E E E E E E E E E E E E E ] E E E E E E E E E E E E E E E E E E E E E E E W E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E e E E E E E E E E ] E E E E e E E E E E E C W E E E E W E E E E E E E E E ] w E ' E e E E e r r r q ~ V.C.G.I.FXPX7 8 & % JXVXH.U.H.H.H.H.H.v.v.", "I.T.I.I.H.H.H.H.DXJX% 2 6 7 PXIXLXFXAXDXAXSXAXVXVXD.D.B./ ^ ^ e q q q e e q q q q q q q e q q 0 q e q q q q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 q 0 q 0 q q q q q q 0 q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Q 0 0 0 q 0 0 0 0 0 0 Q 0 0 Q 0 0 0 0 0 0 3 Q 0 0 3 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 q 0 0 0 0 0 0 0 0 0 0 0 q q q q 0 0 0 0 | F.F.F.F.F.BXF.VXVXVXLXPXPX7 2 7 & JXVXI.H.I.H.I.H.H.H.n.", "E.I.I.J.H.H.H.v.DXJX8 6 2 7 PXPXPXJXJXJXJXJXJXLXLXLXVXF.N.U.k.k.k. .) V./ ) V.~ N.~ ~ N.~ / N.~ V.~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ! ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ! ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ! ! ! ~ ~ ~ ~ ~ ~ ~ ~ ~ ! ! ! ! ! ! ! ! ! ~ ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ~ ! ! ~ ~ ! ! ! ! ! ! ! ! ! ~ ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / ) k.C.S.C.F.F.D.BXAXLXLXLXLXLXJXIXIXPXPX7 7 6 & JXDXJ.H.U.H.U.H.U.H.n.", "I.T.I.J.H.H.H.H.SXJX1 1 7 6 7 7 & 7 2 & 7 7 7 6 7 2 7 X XI.G.G.G.C.k.C.C.C.C.C.C.V.C.C.C.C.S.C.k.C.C.S.S.S.C.S.Z.C.C.C.C.C.C.C.C.C.C.V.C.C.C.S.C.V.C.k.k.V.C.k.k.V.C.C.k.V.k.C.C.k.k.V.C.V.C.V.C.C.C.S.C.S.C.S.S.S.A.S.A.Z.C.A.Z.Z.Z.Z.C.A.A.Z.A.A.A.A.S.A.A.A.S.A.A.A.A.A.A.A.Z.A.A.A.A.A.A.S.Z.Z.A.Z.C.Z.S.A.C.A.A.S.S.Z.Z.A.A.C.Z.C.A.Z.C.A.Z.A.A.A.A.A.A.L.L.Y.(.D.VX7 & 6 7 8 8 9 6 6 7 7 & 7 6 6 + 9 HXDXJ.J.J.I.H.U.K.n.I.", "T.I.I.J.H.H.H.v.SXLX8 & 6 6 7 r 9 2 2 6 7 2 7 2 7 7 2 AX|.I.H.G.G.J.G.Y.G.G.G.L.G.G.G.G.G.G.L.G.A.L.G.L.G.Y.L.L.L.L.T.L.L.L.G.G.G.G.G.G.G.G.G.G.H.A.G.v.A.A.G.C.C.b.G.G.G.G.A.G.C.G.A.G.G.G.G.G.G.G.L.G.G.Y.Y.L.L.Y.L.Y.Y.Y.(.L.(.Y.(.(.~.Y.(.(.Y.Y.Y.Y.(.Y.(.Y.(.Y.(.(.(.(.(.(.(.(.Y.(.Y.Y.Y.Y.L.Y.Y.L.Y.Y.Y.Y.Y.Y.L.Y.Y.Y.L.L.L.Y.Y.Y.L.Y.Y.L.Y.Y.Y.Y.Y.Y.).(.).).`.VXAX7 9 % 7 2 2 6 1 7 2 7 7 7 1 6 7 % LXSXJ.J.J.J.J.J.I.n.U.", "T.I.I.I.n.U.H.H.VXFX8 6 2 2 7 6 1 6 % 8 % + 9 6 & & 7 AX|.I.I.J.U.I.I.I.Y.T.T.I.E.I.T.I.Y.Y.I.Y.I.T.Y.T.T.Y.T.T.Y.R.Y.T.E.T.I.Y.G.I.I.I.Y.I.T.I.I.U.Y.U.I.I.Y.J.I.Y.J.G.I.I.I.G.I.I.I.J.J.G.I.T.I.T.Y.T.Q.R.~.~.Y.).Q.Q.)._.).).).).).).Q.`.).`.'.`.`.`.`.`.`.`.[.`.`.`.`.[.`.`.`.`.`.).`.).).`.).Q.).).).).).Q.Q.).Q.).).Q.Q.).Q.Q.).).(.Q.).).).Q.Q.).Q.).Q.).).[.[.VXFX6 6 6 2 7 7 & 6 7 2 2 6 6 8 1 6 3 LX|.I.I.J.I.I.I.K.K.H.", "T.G.I.I.H.H.H.H.[.ZX1 2 7 7 6 6 6 6 6 & & 7 7 7 & 2 2 ZXoXJ.I.U.E.I.T.T.R.E.W.~.Q.Q.W.W.W.W.W.~.^.^.E.T.W.R.Q.!.!.!.!.W.E.E.E.I.R.T.Y.E.I.T.T.R.^.^.^.^.E.I.I.E.E.I.T.T.I.E.I.T.I.^.T.R.I.E.I.T.W.W.E.E.!.!.!._.!._._._._._._.].]._._.].].].].].{.].].[.].].].].[.[.}.}.{.{.{.].[.].].'.[.].]._.]._._._.'._._..X'.'._.).'._._._._._._._._._._._.'.)._.'.)._._.'.[.[.[.|.DX2 6 6 & 7 7 7 6 7 7 7 2 6 8 & 7 1 DX|.I.I.I.I.I.I.I.K.I.", "I.I.I.U.U.H.H.v._.SXVXHXHXJXJXJXJXJXJXJXJXJXJXJXJXGXDXCX].I.I.T.I.T.T.T.R.R.R.W.!.Q.!.W.W.R.R.R.E.R.E.E.R.~.R.!.W.!.!.R.~.E.E.T.T.T.T.T.E.T.R.E.T.E.I.Y.E.T.I.T.I.T.T.T.E.T.T.T.^.T.T.U.E.I.E.R.R.R.Q.!.!.!.!._.'._._.'._.].]._.].]._..X].].].].].].{.].].{.].].].].].].].{.{.].[.].].].'.]._.].]._._.'._.'._._.'._._.].'._.'.'._._._._._.]._._.)._._._.'._.].`.].].[.|.DXFXKXJXJXJXPXJXJXJXJXJXJXJXJXHXHXVX|.].I.I.I.T.I.I.I.I.I.", "I.I.H.H.I.n.H.H.H.).OX+XSXDXAXDXFXDXDXDXFXDXDXSXVXVXCX`.U.I.I.I.I.E.E.E.E.Q.Q.W.W.!.!.~.W.!.!.R.R.T.E.E.W.R.!.W.!.W.!.W.W.R.R.E.E.T.E.T.R.E.T.R.E.E.E.E.T.E.E.T.E.I.T.I.T.I.I.T.I.T.T.T.T.T.T.T.W.W.~.!.!._.!.!.!._._.'.#X_._.]._.].].].].].].].].].].].].].].].].].].].].].].].].].].`.].'.].).'.'.].'.].'.].'.].'.].'.'.'.'._.]._.`.'._._._._.'._.'.)._._._.'.].].].OX|.VXAXFXAXGXFXFXFXFXFXFXFXAXAXAXVX}.'.T.T.T.T.T.T.T.I.I.I.", "J.I.J.H.H.H.n.H.H.n.n.H.H.H.H.H.H.H.H.H.H.H.H.H.H.J.H.H.J.I.I.I.R.R.R.R.!.R.!.$X!.!.!.!.!.W.!.R.Q.E.W.!.W.W.!.R.E.!.!.R.W.!.R.R.R.R.R.E.W.R.R.E.R.R.R.R.T.T.E.E.W.T.T.T.T.T.T.T.R.I.R.R.R.R.R.R.W.~.!.!.!.!.!._._._._._.'.'._.].].].].]..X.X]..X].].].].].].].].[.].].].].].].].].].].].]._.].'.].].]._.'.].]._._..X].]._.]._.]._.`._.'._.'.'._._._._._._._._.].]..X].].oX].oX].{.{..X].]..X].'._._._._.!.!.!.R.W.R.R.T.T.I.I.I.I.", "I.J.J.J.I.H.U.H.H.n.H.n.H.H.H.H.H.H.H.H.H.H.H.H.H.H.J.I.I.I.I.T.I.R.R.R.~.!.~.~.!.!.!.!.!.!.W.W.R.!.!.E.Q.R.E.!.~.!.!.!.!.R.R.!.!.R.E.R.!.W.!.W.W.R.R.E.T.T.T.T.T.T.R.R.T.R.R.R.R.T.T.T.T.R.R.R.R.!.~.!.!.!._.!.Q.'._._._._._.].]._.]._.].].].].].].].].].oX{.].].].].].].].].].].].`.].].]._.].]._.'.].]._.'.].].].].'.'.].]._.]._.].'.]._.'.'._._.`._.]._.]._._.].].].].].].oX.X{.{.{.oX].].].]._._._._.!.!.!.!.!.R.R.T.T.T.I.T.", "I.J.J.J.J.H.H.n.H.n.H.n.H.n.H.H.H.H.H.H.H.H.H.H.n.J.J.I.I.I.T.T.R.R.~.!.!.R.~.!.!.!.!.!.!.~.!.!.!.W.!.W.W.!.!.E.W.!.!.!.!.W.~.W.W.R.W.!.W.R.~.R.~.R.R.T.T.E.T.T.T.T.T.T.R.T.R.R.R.T.T.E.E.R.R.!.!.!.!.Q.Q._.Q._.!.'._._.'._._._.'.]._.]..X].]._.].].].].].].].].[.].].].#X].].].].].].].].]._.'.]..X'.'._.].].]._..X].]..X].'..X].].].'.'.`.].).]._._._._._._.].].].].].].oX].oX{..XOX.X.X.X].]..X]._.]._._._.!.!.!.W.R.R.T.I.T.I.", "J.J.J.J.J.J.H.U.H.H.H.H.H.H.H.I.H.H.I.H.H.H.H.H.K.U.I.J.I.I.E.T.W.~.R.!.!.!.$X~.!._.!.!.!.!.!.!.W.!.!.W.W.Q.R.W.!.~.~.W.~.!.W.!.!.E.E.W.W.!.W.W.E.R.R.~.R.R.E.R.T.W.W.R.R.R.R.R.R.W.R.!.E.Q.!.!.!.!.!.!.!.!._.!.Q._._._._.]._.].].'.].]._.].].].].{.].].].].].].{.].].].].].].#X].].].]._.].]..X'.].].].].'.].'.].]._..X].]..X]..X]._.].].'._.'.]._.]._._.'.]._.'.].].].oX].oX].{.oX.X{.].[.[.].].].].].]._._._._.!.!.!.~.R.R.R.R.", "J.J.J.J.J.J.H.H.U.H.H.H.H.U.U.U.U.U.U.I.I.J.J.J.I.I.I.I.T.R.R.W.W.R.!.!.!.$X~._.~.!.!.!.Q.!.!.!.!.!.Q.!.Q.W.!.!.W.Q.~.!.!.!.!.R.W.E.W.E.!.R.W.W.E.R.R.R.R.R.R.E.W.W.R.R.T.R.R.I.E.R.R.W.!.!.!.!.!.!.!.!._._._.!.'.Q.'._._.'._._.].].].]..X].].].].].].].].].].].].]..X.X].].].].].].].`.].`.].].]..X]..X].'.].]..X].].].].].]..X].].'..X_.]._.].'._._.'._._.].].]._.].].oX].oXoX}.{.{..X{.].oX]..X].].].].].].'._._._.!.~.R.R.R.R.", "I.I.J.J.I.H.J.J.n.K.K.U.J.I.I.I.K.I.I.I.I.I.I.I.I.I.R.R.R.W.R.W.!.!.~.!._._._.$X_.!._.!.!.!.!.!.~.Q.~.~.!.~.!.!.~.W.!.R.$XR.!.R.W.Q.E.!.R.~.!.!.W.!.~.R.W.W.!.R.W.W.!.W.$XR.R.$XR.$X!.E.Q.~.$X!._._.!.#XE.Q.'.Q.'.$X_.]._.'.#X'._._.'.].#X{.#XoX{.oX].].[.].}.].].{.].[.].].`.].[.#X].].].#X.X].{..X_..X'.}.'.'.[..X_.].].{.{.].].].].].].].]._.'.].`.'..X_._._._.]._.].].].].]..XOX].{.oX]..X[.{.].].].]._.].'._._.!.Q.Q.!.E.R.R.", "J.I.U.H.U.U.J.J.K.U.I.I.I.I.I.I.I.I.I.I.T.I.E.T.T.R.R.R.R.W.!.!.!.!.!.!._.!.!.!._._._.~.!.!.!.~.A.@ 8 8 % 8 6 1 8 6 % .E.R.~.!.T.~.!.Q.!.!.Q.!.E.Q.Q.E.R.R.R.E.Q.E.E.E.Y.Z./ T.Q.Q.W 1 1 ^ W._.Q..X_.!._._._.Q.'.'._.!.!.[.'._.`.'.'.[._.#X].].{.{.].].].{.].].OX]..X].[._.].{.]._. .1 8 @ {.{.].].]..X{.].}.].'..X]..X#X].{.].].].].].]._.].'.].'._.]._.'._..X].]..X].].].].oX.X{.{..X{..X.X].].]..X].].].'._._.!.!.!.W.R.!.E.R.", "U.J.I.U.U.U.G.J.I.I.I.I.I.I.I.R.I.T.I.R.E.T.T.E.R.W.R.W.!.!.!.!.!._.!._.!.!._._.~.!.$X_.!.!.!.~.C.3 1 6 7 1 2 6 2 6 7 ) E.W.E.R.Q.!.Q.T.!.!.W.!.Q.~.!.!.W.Q.E.W.Q.Q.E.C.Q 8 W Q.~.Y.W & 7 ^ !.!.!.!.!._._.].!.'.Q.Q.$X'._.!._._.#XXX].[.'..X.X].].].oX{.{.].}.XX]..XOX'.XXXX.X`.oX.X .& 7 9 [.}.].].].].].].{.{.#X#X.X#X]..X[.[.{.].].].].].].'.].'.].'.]._.]._.]._.].].].oXoX].].{.{.{.].{.].{.]..X].].]._.#X].'._._.!.!.!.W.R.R.", "U.G.I.I.U.U.I.I.I.I.I.I.I.T.R.I.E.R.R.E.!.E.!.!.!.!.!.!.!.'.!.!._.!._.!._._.!.'.!._.!.!.!.~.!.Q.G.1 % % % 9 & % % 8 @ ..R.R.$XR.~.E.W._.~.R.!.R.$X_.R.W.~.$X~._.R.!.(.^ @ % W W.Q.^.^ 1 1 Q _.$X!.Q.Q.!._.!.!.$X!._._.W.].Q.].'.!.$X].{.{.[.]..X.X}.{.{.].].OX'.}.[.[.{.{.].'..X.X]. .6 + 6 X]._.[.{.{.]..X.XQ.XX].[.{.|.[.'.].].].].].].].].].].]._._.]._..X_._.].]._.].].].].].{.{.{.].{..X].].].].]..X_._._._._.!.!.!.W.W.Q.Q.", "U.U.I.I.I.U.I.I.I.I.T.T.T.R.R.T.R.~.~.!.!.Q.!.!.!.!.!._.!.'.!.'.!._.!._._.!.$X!._.!.!._.!.!.Q.~.C.8 % 3 Q /.Q.T.Q.Q.(.~.$X$X~.I.C. .) . .P._.!.$XG.G.Z.G.L. .) L.!.A.Q % % Q A.G.W.Q 6 8 W Q.C. . .L._.'.$X_.Q./. .V.C.).L.Z.P.~.#X(.Z.A.G.].{.].A.A.P.`.].oXoX`.Z.V.V...S.(.OX'..XV.6 1 7 }.]._.A.A.D.A.{.'.oX(.V. . .S.`.}.[.{.{.{.].].].].]..X].].].].]._.]._.].].].).].].].]..X{.]..X].].]._.].]._._.]..X_._.'.!.!.!.!.!.!.R.", "U.I.I.U.I.I.I.I.T.I.I.E.T.R.R.~.!.Q.!.!.!._._.!.!._._.'._._.'._._._._._.$X'.'.'.!._.~._.!.!.!.).C.& & 1 q .) ) ) ) ) Q.W._. .9 & 6 6 6 1 3 / ).R. .1 6 Q q % 8 .^.1 7 7 7 1 + ^ Y.W 2 7 e W 1 & + 3 ._.!._. .8 6 @ 3 ^ Q 2 1 .]. .3 8 3 ].{.oX1 9 1 ..oX{.S.9 1 & 6 8 % 9 / }.oXV.% 7 1 OX/.9 8 @ 8 S.@X(. .8 & 7 7 + 1 .oX.X{.].]..X].].].].].].].'.'.].'.].].].`.].].].].].].{..X].].].].].'._.]..X]._._._.!.!._.!.!.!.!.Q.", "U.J.I.I.I.T.I.I.I.R.I.T.T.R.!.!.!.!.!.!.!._.!._._._.'.'._._._.]._.#X$X'.'.!._._._._._.!.!.!.!._.A.8 & % 7 1 1 3 7 8 1 Q.I.L.3 8 2 6 2 1 6 & 3 L.Q./ 6 7 7 2 @ 3 L.).3 1 2 6 6 8 Q Q.^ 2 6 & @ 6 8 6 % 1 (._.L.9 7 6 1 3 2 7 7 1 ._. .& % + }.{.].6 6 8 .CX/.3 % 8 1 2 8 6 7 1 D.oX .% 1 1 X9 * % 3 S.{.@X/ 1 & % 6 7 6 & 9 .].{.{.{.{.{..X.X].].].].].].].'._.].'.]._.].].'.].].].].].].].].'.].]._._._._._.'.'._._.!._._.!.!.", "I.U.I.I.I.I.T.I.R.R.T.T.R.W.!.!.!._._.!.'.!.!._._._._.#X_._._._._.'.].Q.'._._._._.Q._._.!.!.!.).C.1 6 + @ 1 6 & & % 8 ~.Q.C.^ 9 6 k.`.S.3 9 % .[. .+ + 9 Q Z.C.!.!.C.Q 1 6 Q C.L.!.Q 3 & @ .Z.W 7 & 6 C.). .3 1 1 V. X/ @ 6 1 ..'. .7 7 6 X.X}.7 6 1 S.`.A.^ 9 % Z.|.D.3 1 1 ..XXV.1 7 8 q 2 6 7 S.}.[.L.1 6 6 V.{.|.^ 7 & 9 |.].{..X{.].{.].].].].].].]._.].]._.].].'.].].].].].].]._.]._.].]._.].]._.#X_._._._.!.'._._._.!._.", "J.I.I.I.I.I.I.I.T.I.T.R.R.E.!.!.!._.!.'.'.'.'.#X_.]._.].]._._.'._.'._.'.!.'._.Q.!._._._.!.!.!._.G.+ 6 7 9 .) . . .) ).!.^.!.$XL.C. .Q % % 3 ) _. .% & 6 C.`.~._.!.Q.W 6 6 W ).!.#XW 7 + Q _._.Z.8 8 1 A.].W 1 2 Q !.$X(.8 & 1 .!. .6 2 1 {..X{.1 1 8 ..}.oX@X X(.Z. .Q 6 7 1 V.oX .7 & & 6 6 1 1 /.{.{.V.6 & 6 .. .V./ 6 7 2 /.{.OX{..X].].].].].{.].].].].].].].].].].].].]._.].].]..X].]._.'._._._._.]._._.'.'._._._._._._._.", "J.I.I.I.I.I.I.T.T.T.T.R.Q.W.!.!.!._._.!.!.'.'._._._..X_._.]._._.].'._.'._._.!._._._._._._.!.!._.G.8 1 + ^ !.!.R.R.$XR.!.R.~. .Q 6 8 + q & 7 2 .Q.V.+ 2 3 Q.!.!.Q.'.Q.^ 6 2 ^ E.!.!.^ 2 2 Q _._.C.3 1 1 C._.Q 1 1 W _._.].% 6 8 .$XV.@ 7 1 {.oX{.7 % 6 V.@X X .q % @ 3 q 7 6 3 .{. .1 7 1 1 & 6 7 W {.].V.8 & 2 8 9 6 7 8 6 8 D.oX.X{.{.{.{..X].].].].].].].].].].`.].].].].].]..X].]._.]._.]._.]._.]._.'.]._._.'._._._._._._._.", "I.J.I.I.I.T.T.T.R.T.W.W.W.!.!.!.!.'.!.'.'.!._._._.]._._._._.#X'._.'.'.'.'._._._.!._.$X_._.~.~._.C.@ 9 @ ^ (.!.~._.!.~.~._. .% & 8 V.(.Y.3 & % .Q. .6 & 6 `._._._.!.Q.^ 8 1 Q '.!._.W & & ^ Q.'.A.1 6 6 Z._.^ 7 & q `._.(.+ & 3 .XX .% 8 6 X{.(.% & % V. XZ.& % 0 Z. X X2 6 + S.{. .7 & 1 9 .8 & 6 S.|.V.& & 6 A.A.A.P./.D.G.'.oXOX{..X{.{.].}..X{.{.].].].].].].].].].].].].].].].].].].'.].]._.]._.]._._._.]._.].].]._._._._.", "J.J.J.I.I.I.T.T.T.R.W.R.W.!.~._._.$X!._._._._._.'.'.#X_.'._.'.'.].'.'.'._._._._._.!.!._.!.!._._.C.7 7 7 + 6 2 2 7 6 6 Q ).! % 8 9 V.A.^ @ 9 % ._.V.2 6 1 '.'.$X'.'.Q.^ + % 9 A.P.!.W & 7 W Q._.S.1 & 1 A.!.) 1 & 1 | A.Q & 6 3 .#X .6 % % W .0 6 8 1 .{./ @ 9 r A.S.W & 7 6 . XV.6 & + /.|.9 6 6 9 [.(.3 + 6 / D.S.q + E .OX{.{.{.{.{.{.{.].{.{.{.{..X{.].{.].]..X].].].].].].].].].].].]._.]._.]._.]._.].'._.].'.]._._._._.", "H.J.I.I.I.I.I.I.T.R.W.R.W.!.!.!.!._.'._._.'._.'._.'.'.]._.'.'.'._.'.'._.]._.'._.'.!._.'._.!.!.!.C.1 2 8 1 + 2 7 & 2 3 Q _./ @ % 3 6 1 1 7 & 7 ) Q.V.+ 6 1 '.E.W.'.'.!.| 8 7 3 2 | _.W 3 @ ^ _._.L.7 7 8 P.'.Q.0 8 % + 8 2 & 2 6 .].Y.2 & % 8 + 1 9 & 7 V..X| % & 7 6 1 1 r 8 2 V.OX .6 & 6 @X{.C.6 & 7 . X .9 % % + % + 8 @ /.}.{.oX{.{.{.{.{.OX{..X{.{.{.{..X.X{.{.}.].].}.].]..X].].].]..X_.].].].].'.].].'.].]._.].'._._._.].", "J.I.J.I.I.I.T.T.T.W.W.~.!.W.!._._.!.'._._._.`.'._.'._._._.#X].#X].'.'.].'.'.'.!._.'.!._.!.$X!.Q.G.% 6 6 8 8 6 % 7 % @ Q _.L.^ % % % 0 C./ 6 7 ^ ). .8 @ 9 Y..X'.!.!._.L.0 1 2 1 W _.^ 1 3 ^ _._.A.3 % + A._.].D.Q & 9 1 .& 7 & .[.{. .8 6 + 0 Z.^ 6 1 .]. X^ 1 1 1 0 Z.| 6 8 W OXV.1 1 3 }.].%XQ 6 6 2 (.@X..9 6 % % + q A.+X{.oXoXoX{..X{..X{.].{.{..X}..X{.{..X{..X[..X].oX].].{.].].].].].]..X].].].].'.].].].].'.].'._.]._.", "H.J.I.I.I.I.I.T.T.R.W.R.R.!.!.!.!.'._.!.'.!._._._._._._.!.'._._._.'.'._._._._._._._.!._.!.'.!.$XY.)._.!.~.!.!.~.).).)._.!.!.(.(.A.L.!.'.Q.]._._._.'. X].)._.'.!.$X_.#X_.].Z.Z.L. X_.`.].'.).'.'._._.]. X_._.'.'.`.P.A.(.`.8 7 + V.].].{.(.A./. X X].[.}.XX'.XX`.(.A.(.[.oX'.'.{.}.OX X|.}.{.oXoX[.[.}.|.[.[.XX{.|./.D./.`.oXoX].}.oXoX{.}.OX{.OX}.].OX].OX{.{.}.OXOX{.OXoXoX].].]..X{.].oX].].].].].].].].].].].].'.].].]._.]._._.", "J.J.I.I.I.I.T.Y.R.T.E.R.!.W.!.!.!._.!.'._.!.'._._._._._._._.#X_.'.'.'.'._._._.!.!.'.!._._.!.!._._.!.$X!.W.W.$X!.!.!.^.$X!.!.'.!.'.)._.'.Q.`.]._.#X_._._.]._.`._.!.'.Q.$X!._.#X'.].#X]._.[._.'._._.#X'.'..X.X_.].]..X'.'.].3 % 9 k.{.].].].].]..XXX.X].{.#X{..XoX|.{.{. X.X.XXX.XoX.X@X.X'.}.@XoXXXXXoX}.OX+XoXOX}.OX.X}.oXoX.XOXoXoXoXoXoXoXoX{.{.{.OXOX{.{.{.oX.XOX.X{.{.oX].]..X{.{..X{.{..X{..X.X].].].].].].].].#X_.]._.'._.'.", "J.I.I.I.J.T.I.I.T.T.R.E.E.W.!.!.!._._.!._.!.Q._._.!._._._._.'.!._._.'.$X_._._.]._.'._.Q._.!.Q.!._.!.~._.!.W.W.!.Q.).!.'.!.!.#X!.Q.'.'._.[.]._.'._._..X]._.].`.Q.'.'.).#X_._._.].].].].].'._.].].#XoX#X'.'.#X.X].{.oX[.{.{.3 @ 6 | {.[.'.].{.{.`.]..X{.{. X{.].].].].{.{.].].{.oXoXoXOX{.{.{.}.].OXXX.X+X@X{.OX@XOX}.OXoXOX+XoX+X{.{.oX}.}.oXXXoX.X{..X{.{.oXoXoXOX{.oX{.}..X{.].{.{.{.{.{.].{.{.{.{.{.].{.].].].].].].].].].].'.].", "I.H.J.I.I.I.I.T.T.R.R.R.Q.!.!.!.W._.!.!._._._._._._._._._._._._._._.'.W.).'.Q.!.[.!.!._.!._.~.$XR.$X~.$X_.$X_.!.!.!.!.W.$X$X$X_.$X).'.'.$X[.'.'.#X]._._._._._.].'.[.].'.!.#X_..X_.'.XX'.'.'._..X_.'.'.XX'.XX'.XX].].{.{.[.V. .../.[.'.[.].].].{.XXXX'.[.[.[.'.XXXX].]..XoX.X].{.{.{.{.oX{.@XXX'.[.{.OX'.%XOXOX}.OX}.OXXX%XXXoX}.}.@X}.{.+X}.+XoXOX{.{.{.{.oXoXoX{.oX{.oX.X{.{.OXOX.X{.{..XOX{.{.{.{.{.].oX{.].].].].].].]._.].].'.", "H.I.J.I.I.I.T.T.R.W.Y.R.R.W.W.!.!.!.!.'.!._.Q.!.).!._._._._.!.'.!._.W._._.Q.'.$XE.!.!.!.!.!._.!.!._.~.W.W.R.~.W.W._._.'.Q.'.!.'._._.'.'.'.`.'.]..X].].`..X'..X_._.'.'.].`.#X]..X.X.X'..X_.'._..X.X'..X].].`.oX.X.X[.[.[.XX[.}.[.].].].{.{.{.].].].].XX[.'.XX'.].].].oX.X.X].{.}.{.XXoXOX@X|.[.OX}.{.}.+X[.+X+X}.}.+X}.|.}.}.}.].OX{.}.}.{.{.}.{.{..XOXOX{.oXoXoX}.OXOXOX{.OX{.{.{.{.OX}.{.oX{.{.oX{.{.oXoXoXoX_.].]..X]..X]..X_.].", "I.I.I.I.I.I.T.T.T.E.E.R.R.E.W.!.!.!.!.!.!._._.!._.!._.!._.!.'.!._.!.!._._.!.Q.!.Q. .Q ^ ^ ) Y.R.E.E.!.W.!.Q.!.^.$X'._._.(._._._._._._.!.[. . ... .V. .L.].'._.].[.].'.].].].'.'.'.[._..X`.{.].].#X_.].`.oX XOX].].oX....P.oX{.].'.].OX{.]..XoX'.{. X.X[.OX`..X{.{.].].oX.X.XoX].@XXX].}. .^ Z.@X{.}.V.[ / | /.+X+X}./.| ^ ^ /.|.].|.`.) ^ | Z.oXOX{.{.{.oXoXoXoX.XoXOXoXoX{.OXOXOX{.oXoXoXoXoXoXOXoXoXOXoXoXoXoX{.{.{.].].].].].].", "H.J.I.I.I.T.T.T.T.R.R.R.R.E.W.!.!.!.!.!.!.!.!.!.Q._.!._.!._.!._.!._.Q.!.'.!.'.(.Q 8 & % @ 3 Q ).E.$XW.T.$X_.!.$X_.^.$X)._._._._.'.!.'.'._.8 8 + 3 3 1 .].].].`.'.].[.'.[.XX'.[.[.$X[.].'.).].].XX.X].[._.[.'.].{.}.3 3 .oX@X}.XXXX].]..X].[.'.[.[.'.'..X{.].].[.{.{.{..XXX{.]. X@X}...+ + .{.+X .8 6 ^ 1 9 /.CXA.+ + W 6 8 /.OX/.8 6 W + @ A.].{.oX{.].oXoX{.oXOXoXOXoX{.OXoXOXOXOXOXoXoXoXoXoXOXoXoXoXOXoXoX.X.X{..X].].}.].].", "I.I.I.I.I.I.I.E.T.E.R.E.R.~.W.W.W.!.!.!.!.!.!.!.!.!.!.!._.!._.!.!._.!.!.!.$XQ.A.@ % / C.Q @ @ P.W.Y. .V.) V.Y.^.~.Z.C.(.) .L._.'.'.#X#X].+ 3 q . . .L./.A./.Z. .`.(.S. . ...`._._.L.S.`.V. .Y._.'.].L. . .Z.{..X'./.D._.XX(.V.V...(.{.oX.X`.V... . X].oX]. XS. .S.(.{.{.]..XOXoXA.q 1 8 @ V.%XoX9 1 Z.|.S.6 | |.W 6 .|.V.1 / |./ 2 .VX..| S.}.OX{..XoX{.oXOXoXOXOXOXOXOXoXoXOXOXOXOXOX@XoXoXOXoXOXOXOXOXoXoX{.}.{.{.OX].oX].].", "J.I.I.I.T.T.I.T.T.R.R.T.E.E.R.Q.W.W.W.W.R.Q.!.!.!.Q.!.!.!.!.!.!.!.!.Q.!.!.!.!.L.3 & 0 ) V.(._.!.W.Q * + 6 6 Q Q.G.+ 3 Q 3 + 9 X'.'._.'.[.6 6 q .. .V.(.^ @ q 8 3 ).W & 8 9 % Q ].A.3 8 Q 3 8 9 {.OX/ % 1 1 1 W ].{.+ 7 .L.r % Q % 9 (.[.L.9 & % % + Z.].Y.9 + 1 + 0 /.}.].oX].]. .3 | & 7 .}.oX1 1 D.|.Z.8 3 +X6 6 L.}.D.6 9 }.9 2 V./ ^ S.].}.].{.{.oXoXoXOXoXoXOXOXOXOXOXOXoX}.oX}.oX}.}.oXOXOX+X@XoXoXoXoX{.{.{.OX].OXoX[.{.", "J.I.I.I.I.I.T.T.T.E.T.E.E.R.R.E.R.Q.R.E.R.R.!.~.!.~.!.!.!.!.!.!.!.Q.~.!.!.~.W.Q. .9 6 6 6 1 .~.I.k.q N. .6 3 A.A.% 6 / | 6 3 A.'.'.'..X].% 6 6 7 6 3 |.^ + 9 .A.)...^ S.V.3 8 Z.A.+ 8 | | 7 @ L.A.8 % V.D.9 Q L.{.+ 7 .V.7 6 /.V.S.).{.^ @ Q (.^ 9 / {./ 1 ' XW 1 ^ X+X].oX.XL.(.VX1 6 ..@XCX^ 7 ^ D.Q 8 3 |.% % D.+X/.* + }.7 % 7 ' 6 @ S.[.].{.{.OX{.OXOX}.OXOXOXOXOX+XOXOXOXOXOX}.}.OX+XOX+XOX}.}.@XOXOX}.oXoXoXoXoXoXoX}.", "I.I.T.I.T.T.I.E.T.T.T.E.W.W.E.R.R.R.R.R.R.Q.W.W.R.E.!.!.!.W.!.!.!.E.!.!.R.W.W.~.).Y. .) Q % 8 .Q.C.| Q 1 6 1 C.A.1 6 C.A.3 @ A.#X`.XXXX{.6 6 9 V. .V. X^ 8 Q }.{.}.D. .Q 1 1 8 A.P.& 1 L.G.6 1 P.V.@ 8 @X].].oX.X{.8 & .A.1 7 6 6 ^ (.}.1 1 V.[.[.}..X{.1 7 ..[.V.8 8 {.XX.X{.]..X[.[.1 1 V.OX@X/.q & 9 q % 8 }.& 7 /.}.A.8 3 |.6 7 .[.Z.% 9 X].].OXOX{.}.}.}.@XOX+X+XOXoX+XOX+XOXOX+XOXOXOXOX+X+X+X@X}.}.OXOXOXOXoXoXoXoXoX{.", "I.I.I.T.T.I.T.T.E.T.T.R.R.R.E.~.R.R.E.R.W.R.R.W.R.E.W.!.!.W.W.!.!.Q.W.!.$X!.~...1 3 .Y.V.1 + .C.8 @ .V.6 8 S.C.7 3 A.A.6 1 A._.oX_..X X6 & ^ X}.].}.' & W {.}.A.+ 1 N.N.% @ D.A.& 6 A.A.6 7 A.V.1 1 {.[.A.`.@X}.1 + S.|. X| ^ 2 @ / `.+ r | [.(./.].{.3 6 .[.V.% @ }.].].oX}.oX].|.8 7 .OXoX+X XS./.V.6 Q +X^ 6 Z.|.A.@ W [.e 3 A.[.A.8 3 |.[..X].].{.}.OXOX@XOX+XOX@X+X@X+XOXOX+X+XOX+X+X}.+X+X+X@XOXOX@XOX+X|.OXOXoXoXoXoX", "I.I.I.I.T.T.I.T.T.T.E.T.R.R.T.T.T.R.R.R.W.W.E.R.W.W.Q.W.W.!.!.E.W.E.!.E.!.!._.P.8 & 3 W 9 + 1 Z.) 6 6 S.^ 6 6 Z.G.% 3 Z.A.6 2 A.].].'.].{.+ 1 W oX].[.{.W % ^ }.oXV.3 + S./ % + A.L.& 1 A.L.& 2 L.D.8 7 V. .3 + S.{.1 6 .S./ / |.q + | X/ & q A.W 1 Q [./ 2 r A.q + | {.{.}.{.'.}.].@X% 8 .oX+X/ 9 q D.W 8 V.|. .2 W D.W + .|.V.2 W D.W 7 ^ |.].{.{.OX{.}.}.@X}.+X+X+X+XOXOX+X+XOX+X+X+X+X+X+X+X+X+X@X+X+XOX+X@XOX@XOX+XoXoX}.", "I.I.T.I.I.R.R.R.I.R.R.R.R.R.R.R.R.T.R.R.W.W.E.R.W.!.R.E.Q.E.E.~.R.~.!.~.W.R.E.!.k.0 8 @ & 9 V.Y.T.8 8 @ / 7 3 V.P.& 8 A.P.& 8 A.].].]..X'.3 3 ^ }.].XX}./ + ^ {.oX(.9 8 1 | 6 9 S.A.6 8 D.A.8 7 D.[.S.8 6 7 6 .|.oX6 & ./.9 * 3 1 q /.].`.Q 3 1 & e /.[.).^ 1 3 1 ^ X[.XX{.@X{.oXOX{.3 1 V.}.oX@XW % 8 3 .VX@X X^ 3 3 1 ^ XOXoX| 8 + + 0 /.].{.{..X{.oX|.OXOX+XOX+X+XOX+XOX+XOX+X+X+X+X}.+X+X+X+X+XOX+X+X+XOX+X+XOX}.+XoXoXOX", "J.I.I.I.I.R.I.R.I.R.I.R.I.R.I.R.R.E.E.R.T.E.W.E.W.R.R.R.T.R.R.R.R.R.!.!.W.!.W.!.Y.Q.C.A.A.Q.E.!.~.).Z.L.'.Q.!.'._.'.!.'.'.].[.'.'.].'.{.oX X{.{.].{.OX[.+X|.{.}.}.OX`.L.(.{.].].OXoX].]..X].].].XXXXoX X/.A. X}..X.X[.|.OXoX}.L.L./.oXoX{.].oX/./.L.]..X].oX X`.A.`.{.].[.oXoX}.].OX'.%X{.|.|.}.OXOX X(.D.(.|.@X{.}.}././.L.+XOXoXXXOX/.L.Y.].OX.X]..XOX{.oX}.OX@X+X+X+X+X+XOX+X+X+X+X+X+X+X+XCX+X+X+X+X+X+X+X+X+XOX+X+X+X|.+XOXOX", "J.I.I.T.I.I.T.T.T.T.T.T.I.T.R.R.E.R.T.E.W.E.T.R.R.E.R.R.R.R.R.W.R.W.T.~.!.!.~.!.!.'.!.E.T.W.!.!._.!.'.'._.]._.'.#X_.'..X#X{.].].{.].].{.[.OX'.].@XoXOX}.oXXXOXXX}.@X{.oX{.oXoX.XoXoX].{.oXoX{..X@XoX.XoX{.{.OXoXoXOXoX|.{..X}.}.[.oXXX].]..X.X].oX.X'.XX.X].oX].{.{.}.[._.oX{.OX{.@XOXoX}.}.}.OXoX+X%XXXXX{.OX].+X}.@X}.{.+X}.].OXOXoXoXOX[..X.XoXoX{.{.{.oXoXOXOX+XOX+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X}.OX+X+X+X+X}.OX", "J.I.I.I.I.I.I.I.I.T.I.T.R.R.I.R.T.T.R.T.T.R.W.R.R.R.E.R.E.R.R.R.W.!.T.!.!.!.!.!.~.)._.!._.!._._.W._.!.XX_.`.].'.#X'.'.'.].].#X{.].].}.{.[..XXXOXoXoXoX+XOXOX.X+XoX@XoXOXoX].+XOX@X@XoXoXoXoXoX}.oXoXoXoX@X+XoX.X{..X@X@XXXXX}.[.XX[.'.OX@X.X.X{.{.oX{..XoXoX.XXX X].].XX].oXoXoX{.OXOXoX}.oXOX+XOX@X+XOXoX].+X.X{.|.}.}.+X{.}.}.oX.XoXoX{.oX{.OX]..X.X{.OX{.OXoX@XOX+X+X+X+X+X+X+X+X+X+X+XCX+XCX+XSX+X+X%X+X+X+X+X+X+X+X@X+XOX@X@X", "J.I.I.I.I.I.I.T.I.T.T.I.T.T.R.R.T.T.T.T.E.T.T.T.E.T.E.R.E.T.E.E.W.!.~.W.W.W.!.!.!.!.!.!.Q._.!._.'.)._._.#X_.).[.]..X].].].{.].].'.{.{.oX{.oX.XOX{.{.@X@X@X@X+X@XOXOX}.}.oX+X{.@X{.|.OXOX|.}.}.oXoX{.}.XX%X].OXoX{.XX}.}.}.oXoX}.oX{.].].}.].oX{.[..X{.{.{.[.oX'.XX].+X].OXoXoXOX.X@XOX@X}.}.}.OXoXOXOXOXoX+X].}.@XoX[.XX[.oX.XOX].oX].{.oX.XOX.X}.oXoX}.oXoX}.+X+X|.+X+XCXCX+X+XCX+XCX+XCXCX+XCX+X+X+XSX+X+X+X+XOX@X+XOX|.+X+XOXOX", "I.J.J.I.I.I.I.I.I.I.I.I.I.T.R.I.T.T.T.E.T.T.T.T.T.T.T.R.R.Q.R.E.R.E.R.!.!.W.!.!.!.!.!.!.!._.!._.'.'.'.'.'.'.].].].].].].].{.{.{.OX{.}.].oX.XOXoXoXOXOXoXOX+XOX@X}.@XOX}.oX+XOXOX}.@XOXoX@XOXOXOX}.}.}.|.}.OX{.OX{.oX].{.oX{.{.oX{.{.{.{.]..X{.}.].{.{..X}.}.{.}.{..X{.{.].oXOXOXOXOXOXoXOXOX@X}.OXOXOXOXOX}.{.OX{.{.OX{.oXoX{.{.oXoX{.{.{.{.].{.].].{.].oXoX}.}.OX+X|.+X+XCX%XCX+X+XCXCXCXCXCXCX+XSX%XSX+X+X+X+X+X+X+X+X+X+XOXOXOX", "J.I.I.I.I.I.I.I.I.I.I.R.T.I.I.R.T.T.T.T.T.R.T.R.T.T.T.E.R.E.R.E.R.R.R.!.W.!.$X!.!.!.!._._.!._.)._.'.'.'.'..X'.].].]..X].{.].{.{..X{.{.oXoXoXOXoXoXOXOXOX+X@XOXOXOX}.OX@X+XoX+X+X+XOXOX}.|.OXOX}.@XOXOXOX}.{.{.OX{.{..X{.{.{.oX{.OX].{.{..X].]..X].{..XOX{.{.OX].{.].}..X{.oXoXOXOXOXoXoXoXOX+XOXOXoX}.oXoX.XOX].{.{.oX{..X}.].{.{.{..X{.].{..X{.{.{.OX.X.XoXOXOX+XOXOX+X%X+XCXCXCXCX|.CXCXSXCX+XSX+X+XSXSX+XSX+X+X+X+X+X}.+XOX+X+X", "J.I.I.I.I.I.I.T.I.I.I.I.T.T.I.R.T.T.T.T.T.T.R.R.T.E.T.T.T.T.T.T.R.R.R.R.!.!.!.!.!.!.!.!.!.!._._._.'.'.#X[.'..X].].{..X{.{.{.{.{.oX{.oXoXoXoXoXOXOXoXOXOXOX+X+X+X@X+X+X@XOX+X+X+X+X@X@X+X@XOXOX+X@XOX+X}.OXOXOX.XOX{.OX{.{.{.{.{.{.OX]..X].OX}..X{.{.{.{.}.{..X{.{.{.{.OXoXoXoXOXOXOXOXoXOXOXoXOXOX+X}.@XoXoX].OX{..X{..X]..X{.]..X].{.].{.].{.{.].].{.{.oX{.oXOX}.+X+X+X+X+X+XCX+XCXCXCXCX}.CXCXSX%X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X", "J.I.J.J.J.T.I.I.I.R.I.R.I.T.I.T.T.T.T.I.R.R.R.R.R.R.R.R.R.R.R.R.R.T.E.R.Q.!.E.!.W.!.!.$X!._._._._.]._..X].].]..X].{..XOX{.oXOX{.}.OXOXOXOXOXOXOXoXOXOXOXOX+X+X+X+X+X+X+X+X+X+X+XOX+X+XoXOXOX|.+XOX+X+X}.OXoX{.OX.X{.OX].OXOX].OX.XOX{.{..X.X].].].].].{.{.OXoXoX.XOX@X#X@XOXOXOX@XOXoXoXoXOXoXOXoX}.}.OX{.oX.X{.{.{.].{.].].].].].].{.].].].].].].{.{.{.{.oXoXOXOX+X+XCX+X+X+X+X%XSXCXCXCXCX|.CX+XSX+X+XSX+X+X+XCX+X+X+X+XSX+X+X+X", "J.J.T.J.J.I.I.I.I.I.I.I.I.T.T.I.I.T.T.T.T.T.T.R.I.R.R.R.T.I.T.R.R.T.T.R.R.E.E.W.!.~.!.!._.!.Q._._._._._.].].].].].{.{.{.oXoXOXoXOX|.oX}.oXOXOX}.{.oXOX}.}.+XOXOX+X+X+X+X+X+X+X+X+XOX@X+XOX@X@XOXOX+XOXOXOXoXoX{.{.OX{.].{.{.OX].{.{.{..XOX]..X].]..X{.{.{.oXoX}.OX@XOXOXoXOXOXOXoXOXOXOXOXoX@X#XoXoX}.@XOX{.OX{.{.].].].].{.].].].].].].].].{.].].{.{.{.{.{.{.OXOX+X}.%X+X+X+XCXSX|.CXCXCX+XCXCX+X%XSX+X+X+X+XSX+X+XSX+X+X+X+X+X+X", "I.I.I.T.J.T.I.I.I.I.I.R.I.T.T.J.T.T.T.R.I.T.T.T.R.R.R.I.I.T.I.W.R.T.T.E.R.~.R.!.!.!.!.!.!._.!._.#X'.].]..X].].].{.{.{.OXOXOXOXOXOX}.OXOX+X}.+X}.oXoXoXOX}.+X+X+X+X+XCX%X+X+X+X+X+X+X+X+X@X@X+XOX+XOXOX}.OX{.{.OXOX{.OX}.].OX{.].].OXOX{.].OX].}.].{..X}.{.OX}.oXOX@X@XOXoXOXOXOXOXoX@XoXOXOXOXOXOXoX}.}.oXoXoX{.{.].].].].].].].].].].].].].].].].].{.{.oX.X{.{.OX}.+X}.|.+XCX+X%XCXCXCXCXCXCX+X+XCXCX+XSX+X+X%XCXCX+X%X+XCXSX+X+X", "J.J.J.J.J.J.I.I.I.I.W.I.I.J.T.T.I.R.I.I.T.T.I.T.R.I.R.I.R.R.T.R.T.E.R.T.T.R.R.E.!.!.!.!.!._._._.'._._.]..X].]..X{.{.OX{.@XOXOX+X@XOXOXOX}.OXoX}.oXoXOXOX+XOX+X+X+X+X+XCXCXCX+X+X+X+XOXOX+XOX+XOX+X}.OX}.}.OXOXOX.XOX.XOXOX{.{.OXOX{..X{..X].].].].].]..X.X{.|.{.OXOXOXOXOXOXOX@XoXOXOXOX#XOXOXOXOXOX}.}.{.{.{..X}.].{.].].].`.[.].{.].].].].].].].{..X.X.XOXOXOX+XOX|.+X+X+X+XCXSXCX|.SX}.CXCXCXCXCX+XSX+XSXSX+X+X%XCX+XCX+X+X+X+X" }; micropolis-activity/images/tiles-96.xpm0000664000076400007640000000532010724145723020402 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "48 48 10 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c #00000000E6E6", "O c red", "+ c #FFFF7F7F0000", "@ c #CCCC7F7F6666", "# c gray75", "$ c gray100", "% c None", /* pixels */ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%% @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%% @@@@ %%%o%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%% @@.@@@ %%%%%o%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%% .@@@@.@@ %%o%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%% @@@@@@@@ %%%%o%%o%%%o%%%%%%%%%%%%%%%%%%", "%%%%%%% .@.@@@@###%%%%%%%%%%%%%%%o%%%%%%%%%%%%%", "%%%%%%%O @@@@@#X#XX%%%%%%%o%%%%%%%%%%%%%%%%%%%%", "%%%%%%%% @@@#X#XX$X%%%%%%%%%o%o%%o%%o%%%%%%%%%", "%%%%%%%%O @#X#XXXXXX%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%% ##XX$XXX. %%%%%%%%%%o%%%%%%%%o%%%", "%%%%%%%%oO .XXXX + . %%%%%%%%%%%%%%%%o%%%%%", "%%%%%%%%%%O X .XX + . %%%%%%%%%%%%o%%%%%%%%%", "%%%%%%%%o%%O .X. + %%%%%%%%%%%%%%%o%%%%%%", "%%%%%%%%%%%%O X .X. + XX%%%%%%%%%%%%%%%%%o%%%", "%%%%%%%%%o%%%O .X. .XXXX%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%O X .X.XXXX %%%%%%%%%%%%%%%%%", "%%%%%%%%%o%%%%%O .XXXX + . %%%%%%%%%%%%%%%%", "%%%%%%%%%%%o%%%%O X .XX + . %%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%O .X. + %%%%%%%%%%%%%%%%", "%%%%%%%%%%o%%%%%%%O X .X. + XX%%%%%%%%%%%%%%%", "%%%%%%%%%%%%o%%%%%%O .X. XXX#%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%O X .X.XXX#X %%%%%%%%%%%%%", "%%%%%%%%%%%o%o%%%%%%%O .XXX#X#@ %%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%O X .X#X#@@ %%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%O .X#@@@..%%%%%%%%%%%", "%%%%%%%%%%%%o%o%%%%%%%%%O .#@@@@@ %%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%O @@@@@@ %%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%O @@@@@@ %%%%%%%%%%%", "%%%%%%%%%%%%%o%%o%%%%%%%%%%O .@@@@ %%o%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%O %%%%%o%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%o%o%%%%%%%%%%%%%%%%%%%%%%%%o%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%o%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%o%%%%%%%%%%%%%%%%o%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%o%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" }; micropolis-activity/images/obj5-14.xpm0000664000076400007640000000513010724145723020106 0ustar simcitysimcity/* XPM */ static char * obj5_14_xpm[] = { "48 48 5 1", " c None", ". c #FFFF7F7F0000", "X c #FFFF00000000", "o c #FFFFFFFFFFFF", "O c #FFFFFFFF0000", " ", " ", " ....... ", " ............ ", " .X..XXXX...... ", " XXXX X X..... ", " X XXX.. ", " X.X..X ", " XXX..X ", " XX...X ", " XX...X ", " X....X ", " XXX...X ", " XX....X ", " X....X ..X ", " ......X ..X. ", " o ...o...X ..XX. ", " o.o........X X.XXX.X ", " .................X.. ", " ...X...o......XXXX . ", " ...X........X..XXX ", " ...X..o.....X..XX ", " .XXX..........XXX ", " XXXX........X.XX ", " XXXX........XXX ", " X........XXX ", " .........XXX ", " ...o.....XX ", " .........X ", " .. ..o......X XX ", " .o.o..........X ..X ", " .....o........X..XX ", " ...X........X.XXXXXX ", " ...X.......XX.XXXXXX ", " ..XXX.o....X..XXX X ", " ..XXX......XXXXX ", " ..XX X.....XXX X ", " ..XX X......X ", " XX X....XX ", " XX...XX ", " XXX..XX ", " XOX.XOX ", " XO..XO ", " X..XX ", " XX..XXX ", " XXXXX ", " X X ", " "}; micropolis-activity/images/grmony.xpm0000664000076400007640000000256010724145723020344 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "32 32 8 1", /* colors */ "` c #000000", "a c #00BF00", "b c #003F00", "c c #FF0000", "d c #727272", "e c #FFFF00", "f c #DFDFDF", "g c #BFBFBF", /* pixels */ "````````````````````````````````", "``ffffffffffffffffffffffffffff``", "`f`ffffffffffffffffffffffffff`d`", "`ff`ffffffffffffffffffffffff`dd`", "`fff````````````````````````ddd`", "`fff`gggggggggggggggggggggg`ddd`", "`fff`gggggggggggggggggggggg`ddd`", "`fff`ggggggaaaaaagggg``gggg`ddd`", "`fff`ggggaaababbagggg``gggg`ddd`", "`fff`ggggaabbabaagg``````gg`ddd`", "`fff`gggggaaaaaaggg``````gg`ddd`", "`fff`ggggggaaaabggggg``gggg`ddd`", "`fff`gggggaaeaaabgggg``gggg`ddd`", "`fff`gggbaaeeeaaabggggggggg`ddd`", "`fff`ggaaaebebeaaabgggggggg`ddd`", "`fff`ggaaaeaeabaaabbggggggg`ddd`", "`fff`ggaaabeeeaaaabbggggggg`ddd`", "`fff`gbaaaabebeaaabbggggggg`ddd`", "`fff`gaaaaeaeaeaaabbggggggg`ddd`", "`fff`gaaaabeeebaaabbggggggg`ddd`", "`fff`ggaaaabebaaaabbggggggg`ddd`", "`fff`ggbaaaabaaaabbgggggggg`ddd`", "`fff`gggbaaaaaaabbggcccccgg`ddd`", "`fff`ggggbbbbbbbbgggcccccgg`ddd`", "`fff`gggggggggggggggggggggg`ddd`", "`fff`gggggggggggggggggggggg`ddd`", "`fff`gggggggggggggggggggggg`ddd`", "`fff````````````````````````ddd`", "`ff`dddddddddddddddddddddddd`dd`", "`f`dddddddddddddddddddddddddd`d`", "``dddddddddddddddddddddddddddd``", "````````````````````````````````" }; micropolis-activity/images/scsfo.xpm0000664000076400007640000001027710724145723020152 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "67 57 8 1", /* colors */ "` c #000000", "a c #00BF00", "b c #3F3F3F", "c c #3F3FFF", "d c #BF7F3F", "e c #003F00", "f c #585858", "g c #DFDFDF", /* pixels */ "```````````````````````````````````````````````````````````````````", "``ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg``", "`g`ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg`f`", "`gg`ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg`ff`", "`ggg```````````````````````````````````````````````````````````fff`", "`ggg`ccccccccccccccccccccccccccccccccccccccccccccccccccccccccc`fff`", "`ggg`ccccccccccccccccccccccccccccccccccccccccccccccccccccccccc`fff`", "`ggg`ccccccccccccccccccaaaaaccccc`bbbccccccccccccccccccccccccc`fff`", "`ggg`ccccccccccccccaaaaaaaadaaddbb`b`b`ccccccccccccccccccccccc`fff`", "`ggg`cccccccccccccaaaadadadadaaad``````````````````bcccccccccc`fff`", "`ggg`cccccccccccccaaaadabaaadddad`bb`````bb`bb`b````cccccccccc`fff`", "`ggg`ccccccccccaaaaadaaabbaaaaaad`dd`bb````````b`b```bcccccccc`fff`", "`ggg`ccccccccccaaaaaaaaaaaaaaaadd`db`bbb`b```````b```bcccccccc`fff`", "`ggg`ccccccccaaaaaaaaaaaaaaabaaad`````````````````````cccccccc`fff`", "`ggg`cccccccaaaadddd`dddddddddbdd`b`````````b````b````bccccccc`fff`", "`ggg`cccccaaaaaaaad```````````````````````````````````bbcccccc`fff`", "`ggg`cccccdddddddddd`db``b`b````````````````````b``````b`b`ccc`fff`", "`ggg`ccccc```````````b``b``bb`dd`bb```b`````bb`````````b`bcccc`fff`", "`ggg`cccd`ddd`````````b`b``bb`bb`b`b`bb``b``b``````b```b`bcccc`fff`", "`ggg`cccd```````````````````````````````````````b````````bcccc`fff`", "`ggg`cccd`bbb`bdb`bb`bb`b``bb`bb`dd`b``b`bd````bb````````bcccc`fff`", "`ggg`cccd`bbb`bbb`bb`bb`bbbbb`bb``dd`b`b````bb`````b``b``bcccc`fff`", "`ggg`cccd``````````````````````````d```b```````````b``b``bcccc`fff`", "`ggg`cccd`aaaaaaaaaaaaaaa`b```bb`ddbdd`b`bb`bb`b``````b``bcccc`fff`", "`ggg`cccd`aaaaaaaaaaaaaaa```````````d`bb`bb`db```````````bcccc`fff`", "`ggg`ccdd`aaaaaaaaaaaaaaa`b```ddddaadd```````````b````b```cccc`fff`", "`ggg`ccdd`aaaaaaaaaaaaaaa`bb``ddaaaaddddddddd````b````bb`bcccc`fff`", "`ggg`ccdd`````````````````````ddddadaaddbbbd``b```````bd`bcccc`fff`", "`ggg`cccd`dbb`bb`bb`bb`bb`d``aaeeeaadaaddbb`b````````````bcccc`fff`", "`ggg`cccd`dbb`bb`bb`bb`b``dddadddaeaaddddde`bb`b`b````b```cccc`fff`", "`ggg`cccd`````b```b```````dddeeadaadadaaddd`bb```b``b`b````ccc`fff`", "`ggg`cccd`bbb`bb`dd`bb`bd`dddaaaddaaddaaddd`bb`b````b````bbccc`fff`", "`ggg`cccd`bbd`b``b``b``bd`ddeaaddddaadaadbd`````````````bb`ccc`fff`", "`ggg`cccd`````````````````daaaaadeadaddaddd`b``b```````bb`bccc`fff`", "`ggg`cccd`bbb`bb`b``b```b`daaadaaaadaaaaddb`b``b`b````bb`bbccc`fff`", "`ggg`cccd`bbb``b`b``b``bb``addddedddaddaabb`b``b`b````b`bbcccc`fff`", "`ggg`ccdd````````````b````dadadddddddedaddd`b``````````bbccccc`fff`", "`ggg`ccdd`ddb`bb`bb````bb`daadadddedadadddd`b``b`d``````bccccc`fff`", "`ggg`ccdd`ddb`dd`bb`bb`bd``aaa`aaaaaadddd``````b``````bbb``ccc`fff`", "`ggg`ccdd`````````````````daaaddaaddddddddd`bb`b`b`bb``````ccc`fff`", "`ggg`cccd`bdb`bb`bb`db`bb`daadddddddddddddd`bb```b`bb`ddd``ccc`fff`", "`ggg`cccd`````````````````aaad`b`````````````````b`bb`ddd``ccc`fff`", "`ggg`cccedddd`dd`bd`dbbbddaaad`bbb`bbb`bbb`b`bb``b`bb``dd``ccc`fff`", "`ggg`cccddccddddddd`dbbddaaadd```````````````````b`bbb`dd``ccc`fff`", "`ggg`cccedcdcdddbddddddddaabad``db``bb`bbb`bb``b```````dcccccc`fff`", "`ggg`cccddccccdddbddeddddddaad`ddb`````bbb`bb`b``d`ddd`dcccccc`fff`", "`ggg`cceedcccccddddddddddddddd```````````````````ddddd`dcccccc`fff`", "`ggg`ccedddcccceddddeddddddddd`ddd```d`bbb`bbbbb`ddddd`ddccccc`fff`", "`ggg`cccdddcccccddddeddddddddd`ddd`ddd`bbb`bbbbb`ddddd`ddccccc`fff`", "`ggg`cccdddcccccdddddddddedddddd`````````````````ddddd`ddccccc`fff`", "`ggg`cccdddddccceddddddddddddddddddddddddddddddddddddd`dddeccc`fff`", "`ggg`cceddddddddddddddeddedddddddddddddddddddddddddddd`ddddccc`fff`", "`ggg```````````````````````````````````````````````````````````fff`", "`gg`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`ff`", "`g`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`f`", "``fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff``", "```````````````````````````````````````````````````````````````````" }; micropolis-activity/images/checkbox2checked.xpm0000664000076400007640000007456710724145723022230 0ustar simcitysimcity/* XPM */ static char *checkbox_checked[] = { /* columns rows colors chars-per-pixel */ "190 70 256 2", " c #0C111B", ". c #0D1522", "X c #0C1B2C", "o c #0D1826", "O c #0F1C33", "+ c #131924", "@ c #121B2B", "# c #161B29", "$ c #101D34", "% c #16212B", "& c #172639", "* c #0B2436", "= c #222C3A", "- c #24323C", "; c #152B43", ": c #182A43", "> c #192E4D", ", c #142845", "< c #192E51", "1 c #1C314C", "2 c #17304F", "3 c #1A3253", "4 c #1C355B", "5 c #1B3A5B", "6 c #163256", "7 c #0E2A45", "8 c #1D3C63", "9 c #1D3D6A", "0 c #1D3E71", "q c #223546", "w c #203456", "e c #213A5D", "r c #233A57", "t c #313E50", "y c #223D64", "u c #233D6B", "i c #293D6A", "p c #273B66", "a c #233E72", "s c #293D71", "d c #313F6E", "f c #1D4165", "g c #1C426B", "h c #17456B", "j c #1C4371", "k c #1D4776", "l c #274359", "z c #3B464D", "x c #3C4952", "c c #364758", "v c #3F5057", "b c #224165", "n c #23426B", "m c #244A6D", "M c #2A4464", "N c #2A426C", "B c #2D4B6D", "V c #274864", "C c #234372", "Z c #294372", "A c #2B4971", "S c #254977", "D c #295279", "F c #324C69", "G c #334C74", "H c #3D597C", "J c #365379", "K c #385160", "L c #414952", "P c #45525C", "I c #425A7C", "U c #505966", "Y c #4D616C", "T c #4F6067", "R c #4F6270", "E c #49657A", "W c #50626E", "Q c #566875", "! c #5A6A7A", "~ c #546674", "^ c #284E80", "/ c #2C5C85", "( c #2C5D8A", ") c #225580", "_ c #325C85", "` c #325C8C", "' c #3C5B84", "] c #375D90", "[ c #2F5588", "{ c #2C618B", "} c #2A6487", "| c #2E6392", " . c #31628D", ".. c #356587", "X. c #366795", "o. c #38759C", "O. c #2F7098", "+. c #3C75A3", "@. c #3B79A4", "#. c #3B78A7", "$. c #435D83", "%. c #4A6485", "&. c #4C6A8B", "*. c #486686", "=. c #437598", "-. c #526A8B", ";. c #526D91", ":. c #597583", ">. c #5A7594", ",. c #4275A5", "<. c #4476A9", "1. c #417AA5", "2. c #427AAA", "3. c #4978A6", "4. c #477CB2", "5. c #647586", "6. c #63788B", "7. c #627B9B", "8. c #657A94", "9. c #727F9F", "0. c #3C88B6", "q. c #3C83A3", "w. c #2E92CD", "e. c #3594CE", "r. c #3598CE", "t. c #3896CE", "y. c #3B99CE", "u. c #3A95C6", "i. c #3696D0", "p. c #3599D1", "a. c #3A96D0", "s. c #3C99D0", "d. c #399CD9", "f. c #3DA0D7", "g. c #4683AC", "h. c #438DBB", "j. c #4B8BB9", "k. c #4688B3", "l. c #4A91BA", "z. c #4893B8", "x. c #518BB9", "c. c #5492BD", "v. c #5E88A2", "b. c #668496", "n. c #71849A", "m. c #77919F", "M. c #6A85A3", "N. c #6E90AA", "B. c #7285A2", "V. c #768CA8", "C. c #7592A2", "Z. c #7993A5", "A. c #7C93AA", "S. c #7494AB", "D. c #7797B3", "F. c #6095B7", "G. c #7EA2BA", "H. c #429BCD", "J. c #4C96C2", "K. c #4A9BCC", "L. c #4698C6", "P. c #429CD1", "I. c #429BD8", "U. c #489ED3", "Y. c #4598D4", "T. c #518BC0", "R. c #5699C7", "E. c #569ED4", "W. c #4AA1CC", "Q. c #45A0D3", "!. c #4BA1D4", "~. c #4DAAD4", "^. c #4CAADB", "/. c #49A2D8", "(. c #53A4CD", "). c #55A9CE", "_. c #5CA5CD", "`. c #53A5D6", "'. c #55A6D8", "]. c #56A8D6", "[. c #55A8D8", "{. c #5AA4D4", "}. c #5BA4DA", "|. c #5BAAD4", " X c #5BAAD9", ".X c #57B2D9", "XX c #5BAAE1", "oX c #57A8E1", "OX c #4CADE4", "+X c #63A3CD", "@X c #62A4D3", "#X c #61A5DB", "$X c #61A9D4", "%X c #62ADDB", "&X c #6AA9D7", "*X c #65B0DC", "=X c #62B0D7", "-X c #7BACD2", ";X c #7DAFD3", ":X c #64A9E0", ">X c #64B0E2", ",X c #82949E", "X X X*X*X X*X X*X*X%X*X", "U.U.P.P.P.P.P.y.y.P.P.y.P.Y.s.s.y.s.s.s.s.s.H.P.P.s.P.P.P.P.U.P.U.P.P.U.P.U.U.U.!.!.!.!.!.!.!.!.U.`.!.`.`.!.`.!.`.+Xb.#./.`.`.`.'.`.`.`.`.].`.`.`.`.`.(.].).].].`.`.`.`.`.`.`.].'.'. X X[.[. X X X X X X X XXX X X X'. X}.'.].'. X]. X X%X X%X X X%X%X%X%X%X%X%X&X%X%X%X&X%X*X%X%X%X*X*X*X%X%X>X*X*X*X%X&X*X*X%X*X=X%X X*X X%X%X%X X X X X X XXX X X X#X X X}. X X X X X%X X X*X X*X*X*X*X%X", "U.U.U.U.P.P.P.P.P.y.s.s.y.s.P.a.s.P.P.s.s.H.s.H.Q.H.P.P.P.P.P.P.P.P.P.U.P.U.P./.U.U.!.W.!.!.!.~.!.`.!.!.!.`.!.!.-XD.&.#.!.!.`.!.`.!.`.`.`.`.`.`.`.`.`.`.].`.`.`.`.`.`.`.`.`.`.'.'.'.'. X X X X%X X X X X X X#X X X X[. X]. X].].[. X X X%X X X%X%X X%X%X%X%X%X%X%X%X&X*X%X%X%X*X%X%X%X*X%X*X*X*X*X*X*X*X%X%X=X%X*X X X*X X%X%X X X%X X XXX%X X X X XXXXXXX X X X X X*X X X X*X X*X X%X%X*X*X", "U.U.U.P.P.P.P.P.P.Y.s.y.y.y.y.y.s.s.s.s.s.s.H.P.y.P.s.P.s.P.P.s.P.y.P.P.P.U.P.U.U.U.U./.U.U.!.!.!.!.!.!.!.!.`.;X5Xb.S #.`.`.`.`.'.`.`.`.`.`.].`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.'.'.'.'.].[. X X X X X X X X X X X X X X X X X]. X X X X X#X X|.%X X X%X X%X X%X%X%X%X%X%X%X%X%X*X%X%X%X&X*X*X%X*X*X*X*X%X*X%X=X X%X X*X X X X X X X X X X X X X%X X X X X X#X X X X X X X X X*X X*X X%X%X*X%X%X", "!.U.U.P.P.U.P.P.y.P.y.s.s.y.s.s.p.s.s.s.s.H.P.y.Q.Q.P.y.P.P.P.s.P.P.y.P.P.P.P.P.H.H.P.U.U.U.U.!.!.!.!.!.`.!.qXrXX*X*X X:X>X*X%X&X*X%X*X%X*X%X%X*X%X*X%X%X%X%X%X%X%X%X X*X X X X X X X|.|. X X X X#X%X X X XoX X X%X X X X X X X X*X*X X*X=X*X=X*X*X", "!.U.U.U.P.P.P.s.H.y.y.a.s.t.s.s.y.s.y.s.s.y.y.P.y.s.P.Q.P.s.s.P.y.y.s.s.y.y.H.P.P.P.P.P.P.P.U.U.!.!.U.~.U.-XyX7X7.M l h.!.`.`.`.`.`.`.`.!.`.`.'.`.'.`.`.].`.`.`.`.`.'.'.'.'.'.'.'.]. X'. X X X X X X[. X X X[.[. X X'. X'.].}.].[.'. X}. X X%X X X X X*X>X X%X>X%X%X%X*X%X%X*X%X*X%X*X%X X*X*X X%X*X X%X%X X X%X X#X X X X X X X X X X X X X X X X X X X X X%X X>X X X>X>X X X*X*X X X*X%X*X", "!.!./.U.P.P.P.P.y.H.s.s.s.s.i.y.s.s.s.s.s.P.y.s.Q.y.P.s.s.s.y.s.s.s.y.s.y.y.y.P.y.P.P.P.P.P.U.U.U./.!.U.&XrX8XV.D 5 B K.`.`.!.`.`.`.`.`. X].`.].'.].'.].].!.].`.].`.`.'.'.[.'.'.'.]. X].[. X X X X X X[.]. X X[.].].'.'.'.].'.}. X X X X X X X%X*X X X X>X X%X%X%X%X%X*X%X%X%X*X%X*X&X*X>X*X X*X X*X%X X X X X%X X X X X X X X}. X X X X X X#X X X#X X%X X X X X X X X X X X X*X*X*X X X%X*X", "!.!./.!.Q.P.P.P.P.P.d.s.y.i.s.i.s.s.p.y.P.y.P.H.H.y.f.s.s.s.y.y.s.s.s.s.y.s.t.P.H.s.P.P.P.P.U./.U.U.K.@XwX9X1X>.b 3 D U.`.U.`.`.`.`.`.`.`.'.'.'.'.'.'.].`.{.{.].!.'.'.'.'.'.{.].'.}.]. X[. X X X X X]. X[. X].[.}.'.'.'.{.].].'.'.'.'. X X X X X*X X*X X*X%X%X%X%X&X*X%X*X%X%X*X*X%X X%X X%X X%X%X X X X%X%X X X X X#X X X X X X{. X}. X X X X X X X X X X%XXX X X X*X X X*X%X%X X X*X=X*X%X", "!.!.!.!.U.P.P.H.H.P.y.s.d.s.y.L.y.t.y.y.s.y.y.y.s.s.s.s.s.s.p.i.y.e.a.a.a.I.y.P.y.P.y.P.Y.Y.U.U.U.U.E.qXrX6Xn.J 6 3 J K.`.`.`.`.!.`.].`.].`.'.].].'.`.].'.`.`.].].`.].{.'.'.].'.].`.[.[.]. X X]. X[. X[. X'.'.'.`.'.'.'.`.'.].'.`. X X]. X|. X X X*X*X X*X*X=X*X%X%X%X*X%X*X%X%X%X*X>X X X*X#X X X X X X X X'. X X X X#X}. X X}.'. X[.[. X X X X X X X X X X=X X X X=X%X X%X%X%X%X%X|.%X%X%X", "!.!.!.W.U.P.P.Q.s.H.y.y.r.y.y.t.r.d.y.y.s.y.y.t.y.y.p.s.r.t.t.t.u.t.y.i.y.i.y.y.y.y.y.P.Y.H.U.U.U.U.qX8X6XV.>.i 6 > B !.`.`.`.!.].`.'.'.'.'.`.`.].'.'.].`.`.`.`.!.'.'.].'.`.].}.'.`. X X X`. X X[. X[. X'.'.].].].'.].].].`.'.`.[.[.]. X X|. X X X X X X*X X%X*X%X%X*X%X*X%X%X%X%X*X X*X*X X X X X X X X X X X X X X X X X X X X X}. X X X X X X X X%X X%X X X*X%X X%X X%X X X%X X%X%X$X%X*X", "~.!.!.!.Q.H.Q.P.s.H.u.Q.s.y.y.y.y.i.y.a.s.Y.H.a.s.s.s.a.a.a.y.a.a.a.a.t.i.y.y.i.a.a.s.d.s.I.d.s.s.&XtX7XX%X%X%X%X X=X X X X X X X[.[. X X`.].]. X[. X X X X X X'. X'. X X#X X%X X%X X X X X*X X X%X X%X X%X%X%X%X X%X%X%X X*X", "`.U.!.!.!.Q.Q.P.P.s.y.y.Y.P.p.d.d.w.d.a.e.t.e.e.e.a.y.e.e.a.e.e.e.t.t.e.a.e.y.i.H.a.y.y.y.y.P.+X8X4XA.6.I B 8 8 6 ; 1 0.U.`.'.].`.'.[.`.'.`.`.'.`.'.`.].[.`.`.[.].`.'.'.'.'.'.'.'.'.`. X[.[.].'.'.'. X`.`.`.!.'.`.`.`.`.`.`./.'.'.'.'.[.[. X[. X X X*X*X X X*X X X*X X X X%X X%X%X X X%X X X X X X[.'.].].].].}.[. X'. X X X X X X X[. X X X X X X X|.%X X X.X*X X%X X%X X X X X%X X%X X*X>X", "U.U.!.!.!.Q.P.P.P.P.y.H.L.y.P.y.y.J.i.i.t.e.e.t.i.i.t.t.e.t.i.i.r.e.i.i.e.e.s.s.i.i.y.y.y.Y.K.qX7XX X%X X X%X X X X'. X X'. X'.].'.'.'.'.[. X X X}. X X X X X X X X X%X X X|. X|. X%X X%X X X%X X X%X X%X%X X%X%X X X", "`.E.!.!.P.Q.P.P.P.s.I.U.y.d.p.L.;XHXUXUXUXJXJXJXJXJXJXJXJXJXJXJXJXUXJXKXKXKXJXJXJXKXKXKXUXKXgXiX3Xn.;.H N N 8 y 1 & & } U.`.'.`.`.`.`.'.].`.`.].`.`.`.].`.`.`.'.'.`.].].}.'.{.].].].[.`.'.].`.`.'.`.].`.`.`.!.'.`.`.`.`./.`.`.'.'.'.].'. X[.[. X X X X X X X X X*X X%X%X X%X%X X%X%X X X X X X X'.`.'.'.].{.'.'. X[.}. X X X}. X[. X X X X X|. X X%X X|. X X X X%X X|. X%X|. X%X X*X X%X*X*X", "`.!.!.U.U.P.Q.P.P.H.P.s.y.d.y.uXKXPXUXUXKXKXKXKXKXKXJXJXHXJXJXHXKXJXHXKXJXJXJXJXHXJXHXKXJXSXiX3XA.7.' G b 5 8 3 : X X 5 K.`.`.'.`.`.].!.].`.`.`.`.`.].`.`.{.'.'.'.'.'.'. X'.'.'.'.'.}.].{.`.'.'.'.'.[.].`.`.`.`.`.`./.`.`.`.'.'.'.`.`.[.'. X]. X X[. X X X X X%X%X X%X X X%X X%X X|. X|. X].'.'.'.'.'.'.'.].'.'.'.'.'. X X X].}. X X X X X X X%X|. X X|. X|.|. X X X X%X|. X X%X X%X%X%X X>X", "!.!.!.!.U.!.P.Q.P.P.P.I.P.s.Y.GXUXKXPXKXHXHXLXLXLXLXHXLXHXHXHXHXLXLXLXLXHXHXHXHXHXHXHXHXLXgXiX1X7.-.G N 9 8 2 ; @ . o : h.`.`.`.`.`.`.`.].`.].`.`.`.{.`.`.`.'.'.'.'. X'.'. X'.'.'.].].].`.`.`.'.'.'.].`.`.`.`.`.`.`.`.`.`.'.'.`.`.'.'.'.'. X X[.[. X X X X].|. X X%X X|.%X X X%X X%X X X X X X'.'.'.`.{.{.'.'.'.'. X'. X].]. X X X X|. X%X|. X X%X X X%X X X%X|. X|.%X X X%X|. X%X X X%X X%X", "!.!.!.W.!.P.Q.P.P.P.y.P.P.s.e.PXHXHXHXLXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXZXFXFXFXFXFXFXmXiX4XV.;.I Z u 4 6 & + o * m u.U.`.`.`.`.].].].'.].`.'.'.{.].{.'.'.'. X'. X X X].].].`.].'.'.'.{.'.`.[.`.].].{.].`.`.`.`.`.`.`.`.`.'.`.`.'.'.[.'.].[.]. X X[. X X X X X|. X%X X X%X X X&X X|.}. X[. X}.].'.].'.'.].{.].'.'.'.'.].].].'. X X X X X%X|. X X%X X%X X%X X X X X X X X%X X X%X%X X%X X", "!.!.U.!.U.U.P.Q.P.P.U.s.y.s.s.GXSXGXGXZXBXBXBXBXBXBXBXBXBXBXBXBXBXNXBXVXBXBXBXBXBXBXBXnXuXeX2X7.*.A e 5 3 ; + X 2 O.R.U.`.`.`.`.`.].`.`.`.].].'.'.'.'.'.'.}. X'. X X X X'. X X X X].'.'.'.`.'.[.'.`.].`.`.`.`.`.`.`.`.`.`.`.`.'.'.`.].`.'. X X X[.[. X X X X X X|. X X X%X X=X%X X%X X X X].[. X'.'.].'.`.`.].].].].`.'.'.].}. X[. X X X%X X%X%X X X=X X X|. X X|. X&X%X|.%X X>X X X%X X%X", ")./.U.U.U.U.P.Q.P.P.H.P.H.y.P.FXLXIXZXBXzXzXvXNXcXcXNXnXbXcXcXcXvXvXvXMXNXvXNXNXcXcXcXgXrX1XV.-.J y 8 1 ; o + # 5 k.U.U.U.`.`.`.'.'.`.`.'.`.'.'.'.'.].].[.[.[.[.[. X X X`.]. X[. X X[.[. X'.].'.`.'.'.!.].`.`.`.`.`.`.`.`.`.`.`.!.[.`.[.'.[.].'.'.].[. X X X X X|. X X X X*X X*X X%X X X X X X'.`. X`.[.].`.`.`.`.`.].{.'.].'.].[. X%X X X%X X X X X%X X X X X X X X X X X X X X X X%X X%X X", "!.~.!.U.U.U.!.P.P.P.P.s.H.y.y.ZXSXZXBXBXcXzXvXNXnXNXNXcXvXvXcXcXvXvXMXcXvXcXvXvXcXnXbXtX6X + + & t Q J.!.~.!.`.U.`.`.`.`.`.`.].].'.'. X'. X'. X X X X X X}.|.'. X X X X X X X X'.'.'.'.].`.`.`.`.`.].`.`. X`.`.].'.!.`.`.`.`.[.'.`.[.`.[.[.[. X[. X X X X X X X X X*X%X*X X%X X X X'.'.`.`. X`.`.`.`.`.`.`.`.].'.'.'. X X|. X%X X X X X%X X X%X|. X X|. X X X X'. X X X X X X%X X", "`.U.`.W.!.U.Q.Q.P.P.y.P.y.y.s.ZXFXZXZXnXMXMXNXMXvXvXcXcXcXbXuXqXvXvXvXcXcXcXcXMXcXlXyX6XA.>.$.f 4 , $ + & c 5.~ K.!.!.!.!.`.U.!.`./.`.`.{.].}.'.'.'. X X X X X X X X X X X X X X X X X}. X X]. X].].`.`.`.`.`.`. X X'.'.'.].'.'.`.`.'.'.'.[.[.`.].`.[.[.[.[.[. X X X X X X=X X>X%X X X X X X X X X[.[.`.].`.`.`.`.`.'.`.`.`. X X X[. X X|. X|.%X X$X X%X X X X X|. X X}. X X X X X X%X X=X X", "!.`.!.U.U.U.U.U.P.P.P.P.P.y.y.FXFXVXBXBXnXnXvXvXNXNXNXcXbXuX5XM.kXvXvXvXvXvXNXNXVXuX3X2XB.-.A 4 > & + & c C.b.T P.!.!.!.~.!.!.`.`.`.`.`.'.'.'.[.'. X[.'. X X[. X X].[. X|. X X X].%X}.[.[. X X'.#X~.`.].!.].^.[.[.'. X X}.[.~.'.#X`.[.'.]. XE.}.[.`.`.'.'.~. XoX[. X X X X X X X X#X:X|. X X X[.'.}.].'.`.'.[.E.'.`.`.].}.'.}. X'. X X X X X X X XXX#X X X X X X X}. X|.'. X X X X X X X X%X", "`.U.!.!.U.!.U.U.P.P.Q.s.y.y.y.ZXDXZXZXnXcXcXvXvXcXcXNXCXgXrXV.&.D.vXvXvXvXvXMXMXlXtX3XX_.D j b b N ` X X/ u h j g g Z b C 8 a X].} b n u g f f m h j X.E.'.'.<.g N u ,.|.}._ n b j l.|.|.*Xj.g i Z / $X%X/ N n p f S ).[.}.A n n b g { {.[.}. X'. X X X X X X X X X X#X X X|. X X}. X X X}. X|.|. X", "`.U.U.!.!.!.!.U.U.P.P.P.P.s.P.ZXDXDXBXcXcXcXcXCXfXiXpX3XM.;.N b M M.vXvXcXMXMXjXrX2XB.$.n 2 & . = E lXxXwXC.:.R P.!.P.P.!.!.!.U./.'.`.`.'.`.`.`. X].`. X X].|.( C y u b j K.%XR.j n p n n ( X X` n p b n u u 9 n a k '.!.( f n Z 9 n C u i i n g.`.`.+.g f g +.]. X_ 8 n j c.%X.X#Xl.m N 9 / |.`.( g j n b g K.!.R.n Z u b y ( XoX X]. X[. X[. X X X X X X X X#X X X}. X X|.'.}.|.}.|. X X", "E.`.!.!.!.U.!.!.U.U.P.U.P.P.H.ZXDXZXZXBXcXcXuXtXrX4Xm.8.-.[ 9 8 y I fXvXNXMXMXuX2XV.8.J 6 * o # c sXvXhX8XC.6.R Q.K.Q.!.U.U.U.~././.!.!.`.`.`.`.`.[. X}. X[.|.( n 8 A y N k.@Xk.u u Z 9 g { X X` g u k j.|. X X}.}.+X[.}.{ g N 9 x.).L.| j u f D ].'.,.u p s 1.|.}.` i s u j.%X X>Xj.u i a ` %X X_ M n Z u u k.].4.n a Z n u ( X[.`. X X].[. X X X X X X X'. X X X X X}. X}. X}. X X X X X", "!.!.!.!.W.!.!.!.Q.!.P.U.U.P.H.FXZXDXBXnXuX2XN.B.7.>.&.' A m e y e G D.MXcXNXCXrX4XB.$.i & % + q G.vXzXhX8XC.6.T H.U.P./.U.U.U.U.`.`./././.`.`.`.'.[.[.`. X X X( n n .g g X.|.X.9 j X.n n ` |. X` f a g X.@.#.@.+.+.h.'.#X` b u j j.'.'.+X0 y b h !.`.,.n g h #.].}.} h g j l. X X#XT.f b n ` X X' g g { Z u X.|.X.g Z ` g s ` {. X X'.'.'. X X X X XoX X X X X X X}. X|. X{.'. X X X|.&X%X", "`.!.!.~.!.!.!.U.!.!.P.U.P.y.P.FXDXZXBXBXhXS.%.G N M y p n f b e 5 A ;.cXNXnXkX3X2X7.G w * . & 6.cXvXzXhXwXC.6.Y Q.U.P.P.U.U.U./.!./.`.E.`.`.`./.`.`.[. X X'.@X` 9 n 1.C n D @XD u S ,.g b _ |.%X{ n b N m u n g m f @.`.{.( f b g j.'.[.].( g n j T.~.+.m y n @.].]._ N u u l. X X%Xc.f b n ( }.|._ M a o.Z a ) ).D h n 3.h 9 ( ].!.'.'. X'. X'.[.[. X X X X}. X'. X X X X'. X X X X X X X X", "U.!.!.!.!.W.!.U.U.U.Q./.U.P.P.FXDXFXBXBXcXcXuX>.A 3 3 w e 8 8 u 8 n I uXNXlXtX3XV.$.e & o # K jXNXNXvXhX0XC.5.R P.P.Q.I.U.U.U./.`./.!.!.U.`.`.`.'.`.[.[.].{.].( f b ,.| C y z.u m ] @.g n / |. X` f b 9 Z u a b n b <.}.].( p u C h.].{.'.( g f C 0.`.,.g b n +.].}._ b p b l.[. X|.c.g b m / X%X_ g u 1. .n n x.C f .1.g n ` {.~.'.'.`.'.]. X X X X X X[.]. X X[.[. X[. X}. X X X X X X%X", "`.!.!.!.!.!.U././.U.Q.P.U.P.P.FXFXVXVXnXnXcXvXlXv.r : w 3 y 8 u 8 n ' N.bXhX8X2X8.G 6 # o q 0XNXNXNXvXhX0XC.5.W s.P.P./.U.U.U.U.U.U.!.`.`.`.U.{.`.`.`.|.].}.].` n u o.#.C n / n g @.+.u b ..$X|.` n u C X.3.2.#.+.,.0. X]./ b n u h.{.`. X` f b u l.'.+.g f g #.[.'.( g p C T. X X Xj.Z n f ` XX{._ u n =.1.f 8 / u j 1.,.g u | ].'.{.`.'.'. X X[.[. X[. X X[.[.].]. X]. X[. X X X X|. X X=X", "!.`.!.!.!.U.U.U.U.!.P.U.U.Q.P.FXDXFXBXBXnXnXNXvXzX>.q : 3 w y 8 9 Z J >.uXeX1X9.I 5 , . = 8.NXvXvXNXvXhX0XC.5.W y.P.P.P.U.U.U.U.U.U.U.!.U.`.`.U.`./.'.!.].'.[./ s s 3.J.u u n i u J.2.n g ( |.|. .b 8 j x. X].~.'.].^.[.{./ g 9 a h.}.'.{.a f n u R.`.#.Z n n +. X[.( a u g x.{.XXoXk.g u f ( %X X_ n g +.J.g C j f 9 R.,.b u ] ].{.`.'. X'.]. X X[.[. X[. X X]. X'.[. X[.[. X X X X X X*X X", "!.!.!.!.!.U././.U.U.Q.U.I.Q.Q.FXDXVXBXcXnXnXNXvXvXcXb.r , > 4 y b Z $.-.S.B.8.$.V , X @ c jXvXNXNXNXNXhXeXC.5.W s.H.P.P.P.P.U.U.U.U./.!.U.U.U.`.`.`.`.!.^.`.]./ n C ,.`.D y u n Z '.+.n n ( {.|.` i C k j. X[.[.oX}.`.}.}.( j 9 C k.).K.O.N n f ^ @X'.<.g y N +.!.[.+.C b g ` {.[..X..9 Z u 3.`.%X` u u 3.#XS s s n S $X1.g y ] '.#X'.{.].].'. X[. X X[.]. X X[. X`.]. X[. X X X%X X*X X X*X", "!.!./.U./.U.U.U.Q.Q.U.Q.U.P.P.FXDXFXVXBXnXNXvXvXvXcXnXS.l 3 w 3 e m J $.;.;.%.B < $ + 1 5XvXNXvXNXNXvXhX0XC.5.Y y.P.P.P.P.P.U.P.U.U.U.U.U.!.!./.U.E.'.`.'.`.'.} f b 3.~.( m f g .].@.C u / |..X` n i y N n g g n b k h.]./ N n i u j n 9 p u h 0.`.U.+.g f g @.`.[.J.j N b n m / Z f Z u g R. X|./ u A 2.].| b s f | |.+.g b ( ^.`.].].'.`.'.'.[.].]. X`. X X X].`. X[.[. X X X X%X X%X*X X", "`.U.!./.U.U.U.U.P.Q.P.P.U.P.P.FXDXVXBXnXnXNXvXvXcXcXcXcXD.F w w 5 n A J I H n 5 , o = :.vXvXNXNXvXNXvXhXeXC.5.R y.H.P.y.P.P.P.P.U.P.U.U.U.U.U.`.U.`.U.U.`.}.`.` y n +.`.3.u g u 3.|.@.b n ..|.]./ n n n b b n b b b 9 j.)./ f f n n u i u N 9 O.E.E.`.+.A u i ,.{.].|.2.h n n 8 m p i 9 h g.]. X@X .u f #.~.q.g Z e @.|.3.u i ` ].`.'.{.'.'.].'.].[.].]. X X[.]. X]. X].[. X X X X X%X X X*X", "U.U./.U.U.U.H.P.Q.U.P.P.P.Q.P.FXDXFXZXcXnXcXvXvXcXBXvXcXMXS.M r w 5 b A n n 4 : X @ c hXvXvXNXvXNXNXnXhX0XC.5.R s.y.P.P.y.P.P.P.P.P.P.P.U.U./.U.!.!.OX/.~.E.U.` n j #.'.T.j j k j.#X+.C 9 ` @X}.] g 9 j g n b g n n s x.E.` 9 j Z 9 j C S { k.{.'.Q.`.#.j 9 C <.`.'.!.{.k.^ k 9 n i g ^ 0.|.|. X@X{ g g 2.:Xk.S a g J.`.#.C u | `. X'.'.[.[. X'.].`.`.`.'. X X'.[. X X X X X X X X X X%X%X%X", "U.U.U.U.U.Y.P.P.Q.P.Q.I.U.P.P.FXFXVXZXBXnXnXvXvXcXcXcXcXcXbXM.l w e 8 8 n 4 3 X % q A.vXNXNXNXNXvXNXnXhXeXC.5.Y y.y.P.s.P.y.H.y.P.P.U.P.U.U.U.U.U.!.K.`./.E.^.E.{.`.].^.[.{.@X_..X'.'.].].`.oX[.`.].#X}.'. X!.'.'.!.`.^.OXE.`.~.E.`.`.!.`.].!.^.`.'.~.{.).].(.^.^.{. X`.}.@X(.j.j.h.R._. X`.'. X X{.|.|. X X].&X}. X|.XX`. X_.].oX'.[.'.[.[.`.`.'.'.].'.'.'.'.[.'.[. X[. XoX%X X X%X X%X%X%X", "!.Q.Q.Q.Q.Q.Q.P.P.Q.Q.P.P.P.H.FXDXZXBXnXnXcXNXvXNXvXNXvXNXMXzX>.M < e y 4 > & O : ~ lXcXcXNXNXNXNXNXvXhX0XC.5.T y.a.Y.s.y.y.y.P.s.P.P.P.P./.U.U.!./.U.!.~.!.!.`.`.`.`.`.`.`.`. X'. X'.[.`.'.`. X`.].].'.'.].'.`.`.`.`.'.`.`.'.'.`.`.U.`.U.`.!.`.`.`.`.'.'.'.'.'.].'.`.`.[.`.].'.'.].'.'.`.{.'. X[. X X X X[. X X[.[.[. X X X[.[.'.`.].].`.].].'.].'.[. X'.[.`. X X X X X X X X X X%X%X%X*X%X", "Q.!.Q.Q.P.P.P.P.I.P.P.P.P.P.P.FXIXZXZXnXnXcXNXcXNXNXNXNXNXNXNXhX*.r 3 4 3 : O # c wXBXcXcXcXNXNXvXvXzXhX0XC.5.Y y.s.P.s.H.P.P.y.P.P.P.P.P.P.P.U.!.P.!.!.!.!.~.].!.`.`.`.`.`.[.`.'.'.'.'.`.`.[.`.!.].`.`.`.`.`.`.`.`.`.'.`.'.`./.U.`.`.`.`.!.`.`./.`.`.`.'.'.'.'.`.`.].'.'.].`.`.`.`.`.'.'.].].'.[.]. X[.[. X X[. X X[. X[. X]. X]. X X`.'.'.{.`.'.].[.`.[.].[.'.].[.[. X X X X X X X X%X*X%X", "!./.Q.Q.Q.P.P.P.Q.s.Q.P.P.P.P.ZXDXZXBXnXnXnXcXcXNXvXvXNXNXNXvXcXfXB r < , & o - >.nXcXcXNXNXNXNXvXvXvXhX0XC.5.Y y.s.y.s.y.s.y.P.P.s.P.P.P.P.U.U.U.!.U.!.!.!.!.!.!.`.`.`.`.`.`.].`.`.`.`.`.`.`.`.`.`.`.`.`.`.].!.`.`.!.'.`./.!.`.`.`.`.U.`.`.`.`.`.`.`.`.'.`.!.].]. X X!.`.!.].`.`.`.`.`.`.`.`.'. X X[. X[. X[. X X[.[.|. X X X]. X`. X X'.'.'.'.`.`.'.'.`.`. X X]. X X[. X X X X X%X%X%X%X*X", "/./.P.!.Q.P.P.P.s.Q.Q.P.U.P.P.ZXDXZXZXBXnXnXNXcXNXNXvXvXvXvXNXNXcXqXM > & @ O c sXnXcXcXNXNXNXNXvXvXvXhX0XZ.5.Y P.s.Y.a.H.P.P.P.P.P.P.P.P.P.U.P.U.U.U.!.!.!.!.!.!.`.!.`.`.!.'.`.`./.`.`.!.].`.`.`.`.`.!.`.'.'.'.'. X!.'.`.`.`.`.E.`.`.`.`.U.'.!.`.`./.`.`.`.`.`.!.[.'.'.'.'.`.`.`.`.`.`.`.`.'.'.[.[.].]. X[. X X[. X].[.].`.`. X]. X[.]. X'.'.'.`. X`.].`.[.`.'.'.].]. X X X X%X|.%X X%X X*X", "/./.U.U.U.P.P.P.P.P.P.s.P.P.P.ZXDXZXZXnXMXvXvXvXMXvXvXNXvXNXNXNXcXMXN.r & + - b.NXNXNXNXvXNXvXNXNXcXvXhX0XC.5.Y y.s.Y.y.P.y.P.P.H.Q.P.P.P.P.P.U.U.U.U.U.U.!.!.!.`.!.U.`.`.`.`.!.`.`.`.`.`.!.`.`.`.`.!.`.`.`.`.`.'.`.`.`./.`.!.`.!.`.`.`.`.`.E././.E.U.`.!.'.`.!.'.`.'.`.'.`.`.'.`.`.`.`.^.`.'.'.'.[.'.'.'. X X'.].[.'.`.'. X'.'. X'. X].'. X'.'.`.'.`.`.'.`.].'.].[.[. X X X X X%X X%X%X%X%X", "U.!.U.U.U.U.P.P.U.P.P.U.K.P.P.FXDXFXBXnXMXNXvXvXMXMXvXNXNXNXNXvXnXNXbX-.& # c fXNXvXNXvXNXNXNXNXNXvXvXhX0XC.5.Y y.y.P.s.y.H.P.y.y.P.s.P.P.U.P.P.P.U.U.U.!.U.!.!.!.U.`.`.!.`.U.`.!.`.U.`.`.`.`.!.U.`.!.!.`.`.`.`.`.`.^.`.E.`.`.`.`./.`.!.`.U./.`.`.`.`.`.`.`.`.`.!.'.'.'.^.`.`./.`.`.E.`.'.'.'.'.'.`.].'.[.'.`. X[.].`.].`.'. X'.'.`.[.'. X'.'.'.'.].].'.`.'.].'. X[. X[. X X X#X X X X%X%X%X", "!.!.U./.U.U.U.P.U.P.H.U.P.P.P.ZXDXZXBXMXMXMXvXvXvXNXNXNXNXNXNXNXcXcXnXfXl t M.MXNXNXNXNXvXvXvXNXNXMXlXjX0XC.5.Y P.s.y.Y.P.y.y.P.P.H.P.P.H.Q.Q.Q.U.P.U.U.U.U./.U.U.!.!.!.!.!./.`.!.!.!.`.U./.!.!.!./.`.E.`.U.{.!.`.`.`.`./.!.'.`.`.`.`.!.`.`.`.`.`./.U.'.!.`.`.`.'././.`.`.`.`.'.'.`./.`.'.'.[.`.`.`.].`.`.`.[.'.].].'.`.].[.`.].].'.]. X X'.'.].].`.`.].].'.].'.[. X X X X X X X X X%X%X%X%X", "U.!.U.U./.U.Q.U.P.U.P.P.P.H.Y.FXDXZXVXBXMXMXvXvXMXNXNXvXNXNXNXcXNXcXvXbX2XE uXNXNXNXvXvXvXvXNXNXMXzXzXjX0XC.5.Y y.a.s.y.s.P.y.H.y.P.y.P.P.H.Q.Q.P.P.U./.U.!.!.U.!.!.U.`.!.!.U.U.!.!.!./.!.!././.!.`.!.`.U.`.!.`.`.`.`./.!.'.!.`.`.U.`.`.`.U.`.!.`.`.`.`.`.`.!.`.`.`.`.}.U.`.`./.`.`.`.`.'.[.'.'.].'. X`.`.].`.].'.`.[.[.`.`.`.].[.[. X X'. X'.'.].`.`.`.`.`.[.'.[. X X X X X X X|. X X X%X|.", "!./.!.!.U.U.U.U.U.U.f.y.W.Q.H.AXZXSXZXcXnXcXvXvXcXcXcXBXzXnXnXzXcXcXnXvXvXwXnXnXNXcXcXnXvXnXvXnXzXzXzXdX0Xm.:.T a.H.a.s.s.Y.H.s.y.y.P.P.Y.P.P.U.P.Q./.U.U.U.U././././.~.U./.U.U.U.U.U.!./.!.~.`.`.U.U.`.`.!.!.`.`.`.`.`.`.`.`.!.`.`.`.U.`.!.`.`.`.!.U.`.`.!.`.`.`.`.`.`.`.`.'.`.`.`.`.`.'.'.'.'.].[.'.].'.`.`.`.].`.'.].].`.`.`.`.'.'. X'.'. X`.'.`.`.'.`.`.'.'. X X X X X X X X X X$X=X%X%X", "/.!.!.!.`.U./.U.U.U.I.K.H.H.K.AXZXFXAXnXnXvXvXcXvXzXcXcXvXvXvXvXNXnXvXvXvXvXvXvXvXvXnXNXvXvXvXvXnXcXzXdXqXn.! T i.y.s.s.s.y.s.s.y.P.P.s.s.U.P.P.Q.Q.U.U.U.U./.P./.Q.U.U.U.U.P.U.U.U.U./.!.!.!.!.U.`.U.!.U.`.'.!.!.!.!.!.!.!.`.`.!.`.`.`.`.`.`.!.!.`.`.`.`.E.!.`.`.`.`.`.`.`.'.`.`.`.^.`./.}.'.`.'. X`.`.].'.].`.`.`.'.`.].`.].`.`.].].'.'.'.`.].`.`.`.`.'.'.'. X[. X[.oX X X X X X%X%X X&X%X", "U.!.!.!.!.!.U.U.U.H.P.U.H.Q.P.ZXAXAXZXnXzXzXzXvXvXvXvXvXvXvXvXvXnXvXvXvXvXvXvXvXzXMXzXvXvXvXvXvXvXvXxXaXG.b.! P r.P.a.y.y.s.s.s.P.s.y.P.y.s.P.P.P.Q.I.U.U.U.P.U.!.U.U.!.U.U.U.U.U.U.U.U.!.!.!.!.U.!.!.!.!.!.`.!.!.`.`.!.!.`.!.`.`.`.`.E.`.!.U.`.`.`.U.U.`.`.`.`.`.`.`.`.`.`.`.`./.`.`.`.`.`.'.`.`.[.`.`.`.'.`.].].`.`.].`.`.`.].'.'.'.'.'.`.`.`.`.`.`.`.'.`.'.'.'. X X X X X X#X X X X=X%X*X", "/.!.U.!.!.!./.U.U.U.Q.U.P.f.Q.nXNXnXlXfXsXaXaXaXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXfXsXsXsXsXsXsXyX5Xb.Y P z s.a.a.y.s.s.s.s.s.s.s.y.P.y.H.P.P.P.U.P.P.P.U.P.Q.Q.P.!.P.P.P.P.P.P.H.U.P.!.U.!.!.!.!.!.`.!.!.!.~.!.!.!.!.!.`.!.!.!.!.!.!.E.`.`.K.`.`.`.!.!.`.`.].`.`.`.`.`.`.`.`.`.`./.^.`.`.`.].`. X'.'.].'.].'.{.].].`.`.`.].`.'.{.].`.'.`.`.`.`.`.`.`.`.`.'.[. X[. X X X X X%X X|.%X%X*X", "!.U.!.!.!.!./.U.U.U.Q.U.Q.s.W.lXfXaXeX2XZ.A.A.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.A.V.C.C.C.! U L z z u.i.e.a.a.y.y.y.s.s.P.y.s.P.P.P.P.P.P.P.P.Q.Q.P.P.Q.P.P.P.U.P.P.P.P.P.U.P.!./.U./.!.!.!.!.!.!.!.U.!.!.!.!.`.`.`.`.`.!.`.`.!.`.!.U.`.U.`.`.`.!.`.`.`.`.`.`.'.[.!.`.U.!.`.`.`.'.`.'.'.[.[.'. X'.'.'.`.'.`.`.].`.`.`.'.`.'.`.`.`.`.!.`.`.`.`.`.[.'.'.'. X X X X X X X X%X=X%X*X", "/./.!.W.W.U.!.U.U.U.!.P./.P.K.uX5X,Xn.:.Q ! ! Q Q ! Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q ~ R T x L z K I e.d.e.y.a.a.y.y.y.p.P.s.s.P.y.P.P.P.P.P.P.P.Q.P.P.P.P.P.P.P.P.P.P.P.U.P.U.P.U.U.U.U.U.!.!.U.U.U.U.!.U.!.!.!.U.`.`.!.`.`.W.`.!.`.`.U.`.`.`.`.!.`.].`.].'.`.'.`.'.`.`.`.!.`.`.'.`.`.].'.'.].'.].'.'.'. X`.`.].`.`.`.`.'.].`.`.`.`.`.`.`.`.'.`.].'.'.'. X'. X}. X X X%X X%X%X%X", "!.!.!.!.!.!./.U./.U.U.!.!.U.s.+Xc.! Y P x x x z x x x x x x x x x x x x x x x x x x x x x x x x x x L x z K ..h.s.i.y.i.a.a.i.y.y.y.s.s.s.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.U.P.U.Q.U./.U.U.U.U.U././.U.U.!.!.U.!.!.!.~.`.`.!.!.`.!.!.!.`.U.`.!.`.`.].`.].'.'.].`.'.'.!.U.U.`.`.U.`.`.`.].`. X'.'.'.'.'. X'.`.`.`.`.`.`.`.`.!.`.`.`.`.`.`.`.'.'.'.`.`.].{.`. X]. X}. X X|. X=X=X%X*X", "/.!.!.!.!.U.!./.U.U./.Q.y.K.f.W.J.! x x x x L x x z x x x x x x x x z x x x x x z x x x x x z z x x z v x o.u.p.i.r.i.i.a.a.y.i.y.y.P.y.Y.P.P.P.P.P.H.P.P.P.H.Q.y.P.P.s.P.P.P.P.P.P.P.P.P.P.P.P.U.U.U.U.U.U.U.!.U.U.W.U.U.!.U.!.!.!.`.!.!.!.`.W.U.`.`.!.`.`.`.].`.[.`.`.'.[.'.`.`.`.E.`.`.`.}.`.'.'.'. X X X'.'.`.'.'.].`.].`.`.`.`.`.`.`.`.!.`.`.`.'.'.'.'.].'.].].`. X]. X X X X%X%X%X%X*X", "!.U./.U.U.U.U.U.!.U.!.U.Q.P.P.P.W.y.Q.y.P.P.P.s.P.y.P.P.s.P.s.s.p.y.s.a.t.e.e.w.w.w.w.e.w.e.e.e.e.i.y.i.r.t.t.t.t.t.t.t.y.a.a.a.s.s.s.P.P.P.P.P.P.P.y.P.P.H.s.P.U.s.s.Y.U.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.!.U.U.!.Q.Q.K.!.U.!.!.!.!.!.`.!.!.!.!.`.`.`.E./.`.`.`.`.'.!.].'.`.].].`.).`.).!.`.`.`.`.`.].]. X].].].'.].'. X[.`.`.`.`.`.`.`.`.`.`.!.`./.'.!.].`.`.`.].'.`. X[. X]. X X X X X%X*X%X", "!.U.!.U./.U./.U.U./././.Q.P.P.P.f.Q.y.Q.P.P.P.P.s.P.s.y.y.y.s.s.y.y.d.a.t.e.e.w.w.w.w.w.w.e.e.e.w.p.t.r.r.r.t.t.r.t.t.t.i.a.a.y.s.s.s.s.y.y.y.P.P.s.P.P.H.s.P.s.s.P.s.s.P.y.P.P.P.P.P.P.P.P.P.P.P.P.U.P.P.U.!.P.!.U.!.Q.Q.U.!.!.!.!.!.!.`.K.`.!.`.U.`.`./.`.!.`.'.`.'.].].!.`.`.!.`.!.(.(.`.`.`.`.'.`. X X[. X].]. X'.'.`.].`.`.`.`.`.`.`.'.'.`.'.'.[.`.].'. X`.'.[. X].'. X X X%X X*X%X&X*X", "U.U.U.U.U.!.U./.Q.U.U.U.Q.P.P.P.s.H.Q.y.P.y.y.P.P.s.P.s.P.s.s.s.a.a.i.y.t.e.e.e.w.w.e.w.e.w.e.e.r.i.t.t.t.t.t.t.t.t.t.t.y.a.y.s.s.a.s.y.y.y.P.y.P.y.Q.P.y.P.s.P.s.s.s.s.s.U.y.P.s.P.P.P.P.P.P.P.P.P.U.P.Q.P.P.!.U.Q.!.P.!./.P.!.!.!.`.W.U.!.E.!.K.U.`.`.`.`.`.`.'.`.'.`.`.`.`.`.`.`.`.`.!.`.`.`.[.'.'.`.'. X].'.].'. X'. X`.].[.{.!.`.`.`.`.`.`.`.`.'.'.`.'.`.[.[.[. X X X X X&X X*X%X%X%X%X", "!.!.U./.U././.U.!.U.U.U.Q.P.P.P.P.H.y.Q.P.y.P.H.P.U.s.P.y.s.y.r.a.a.y.i.e.e.e.e.e.w.i.e.w.e.e.e.e.i.t.t.t.t.t.t.t.t.y.t.i.a.a.i.a.s.s.y.s.y.s.H.y.Q.y.H.P.y.P.y.P.s.s.y.s.s.s.Y.s.H.P.P.P.P.P.P.P.P.P.P.P.Q.P.U.U.U.U.U.U./.!.!.).!.!.!.!.!.~.`.`.`.U.`.`.U.`.`.`.`.].`.].'.].`.`.`.`.`.`.`.`.`.`.].[. X X'.'.'.[.'.'.'.[.`.'.`.].`.`.`.`.!.].`.`.'.'.'.'.].].'.'. X X X X X X X%X X%X%X%X%X", "!.!.U.!.U././.U.Q.U.P.Q.Q.P.P.P.Q.y.y.P.y.H.y.P.P.P.s.s.Y.s.y.s.s.a.y.i.i.t.e.e.e.e.e.e.w.e.e.e.e.r.t.t.t.t.t.t.t.i.a.a.a.y.a.a.i.a.s.s.s.s.p.P.P.y.P.P.y.a.P.y.s.y.s.s.s.Y.s.a.H.P.P.y.P.P.P.P.y.Q.P.P.P.P.Q.Q.!.P.!.!.Q.!.!.!./.!.~.U.!.!.!.!./.E.`.`.U.E./.'.`.`.`.`.'.].`.'.`.`.`.`.`.`.`.`.`.`.].].`.[.`.`.'.'.].`.`.'.].`.`.'.].{. X`.[.'. X`.].[.].].}.].[.]. X X X X X*X X*X X>X%X*X", "`.!./.!.!././.U./.U.!.U.Q.P.P.P.H.y.P.s.P.y.P.y.P.y.P.P.P.s.y.s.a.s.i.y.t.t.e.e.w.e.e.e.w.e.e.e.e.t.t.t.t.t.t.t.i.y.a.a.a.a.a.y.a.a.i.s.s.s.s.s.y.P.y.Y.P.y.y.i.y.s.s.s.s.s.s.H.s.s.y.H.y.P.y.P.Q.P.P.P.P.Q.P.P.P.!.U.!.!.!.Q.!.U.!.!.!.!.!.!.!./.`.U.U.`.`.`.`.`.`.`.`.`.`.'.].].].].].{.`.`.`.`.`.].].`.[.].`.`.`.'.].'.].'.'.].].'.'.].[. X].[.[. X X].'.]. X X[. X X%X X X X*X X X*X*X*X", "U.!.U./.U.`.U.U./.P.P.P.Q.P.P.P.y.y.P.H.P.y.H.P.y.y.s.s.s.s.y.s.a.s.i.i.e.t.e.e.e.e.e.e.i.i.e.e.e.e.t.t.t.e.t.t.y.i.y.a.s.a.a.a.y.i.s.i.s.s.s.s.y.s.s.s.y.s.y.y.s.a.s.s.s.s.a.P.y.P.y.P.P.y.s.P.H.H.P.s.P.P.P.Q.U.P./.U.P.!.!.!.!.!.!.U.!.!.!.!.`.!.U.`./.`.`.`.`.`.`.'.].'.'.`.'.'.'.].].`.`.`.`.`.`.`.].`.`.`.`.`.].].].].`.].].`. X'.]. X X[. X X X[. X[.]. X[. X%X|. X%X*X X=X X*X X#X*X", "`.U./.!./.U.U.U./././.P.P.P.P.P.P.P.H.s.y.P.P.y.P.P.U.s.s.y.y.s.a.a.y.i.t.e.e.e.e.e.e.i.e.e.t.e.e.e.t.t.t.t.t.t.i.y.a.a.a.s.a.a.y.i.y.p.s.y.y.s.y.s.Y.s.s.s.y.a.i.i.a.s.y.s.y.y.y.y.y.y.y.y.P.P.s.s.P.P.P.H.Q.Q.P.P.P.U.P.U.Q.K.U.K.!.U.U.!.U.!.!.!.`.U.`.`./.`.`.`.{.].'.'.].'.'.'.'.{.`.{.].`.`.].`.`.`.`.`.`.`.{.].'.]. X X[. X]. X X[. X[. X X[. X[. X X X X X X|. X X X X=X X X*X>X*X*X", "!.`.`.!.!.Q.U.!.!.U./.P.!.P.P.P.P.P.s.P.P.P.s.P.s.I.s.P.s.a.y.e.y.e.t.t.e.u.e.a.i.i.e.e.e.e.e.a.i.i.a.e.e.t.t.a.a.s.s.a.a.y.a.y.i.y.a.a.t.t.s.s.p.s.y.s.s.y.s.s.y.y.y.y.y.i.i.y.y.a.a.y.s.s.s.s.s.Y.y.P.P.P.P.U.U.H.U.U.P.U.U.U.U.U.P.U.!./././.!.!.E.!.`.!.`.`.`.`.`.`.'.'.`.[. X'.].'.'.'.].].`.`.'.`.`.'.'.'.'.'.`.'.'. X'. X'.'. X X X X%X X XXX X X X X%X|. X X X X X X*X X*X X*X*X*X*X", "`.`.U.U.!.!.U.!./.U.U.!.Q.P.P.P.P.P.P.P.s.s.P.s.P.P.P.s.s.y.y.y.a.a.t.t.e.a.e.e.e.i.i.i.i.i.e.e.i.i.i.i.e.t.t.a.a.a.a.a.a.i.a.a.y.a.i.i.i.i.i.s.s.s.y.y.s.y.s.s.y.i.i.y.y.y.y.y.y.y.s.a.y.s.P.y.P.s.P.P.P.y.P.P.P.U.U.U.U.U.P.U.H.U.U.U.P.!.U./.!.!.U.`.!.`.!.`.`.`.`.`.!.`.'.[.`. X'.].].].'.].'.'. X`.'.!.`.`.`.`.'.'.'. X[.'. X X X'. X X X X#XXX%X X X X|. X X X*X X X>X X X X*X%X%X*X*X", "U.`.~.U.!.!.!.!.U.U.U.P.P.P.P.P.P.P.s.P.P.P.P.s.s.P.s.s.s.s.y.y.a.y.t.t.a.e.e.a.e.i.e.e.e.e.e.e.i.i.a.a.e.y.t.y.y.a.a.a.y.a.a.a.y.y.y.i.i.s.a.a.p.s.i.i.i.s.s.s.y.y.y.i.a.a.e.a.a.a.a.s.a.y.y.s.P.Y.s.s.P.s.P.P.P.P.U.U.U.U.U.U.U.P.U.U.U.U.U././.U.!.!.!.`.`.`.{.!.`.`.'.`.'.].'. X]. X'.[.].`.'.'.[.'.'.`.`.`.'.[.]. X X]. X X X X X X X X X#X X X X X X X X X*X X X X X X*X*X X%X%X*X*X*X", "E.`.!.~.!.U.!.!.!.U.!.U.U.U.P.P.P.P.P.P.P.P.P.P.P.s.P.s.P.s.y.i.y.e.t.t.e.a.a.e.e.e.e.e.e.i.e.e.i.i.e.i.a.e.t.a.i.i.a.a.a.a.a.y.e.i.y.i.i.s.a.y.i.t.s.y.s.p.s.i.i.y.i.s.i.y.y.y.s.a.a.a.a.s.y.s.y.y.s.y.s.P.P.P.P.P.U.P.H.U.P.U.U.U.P./.U.U.U.!./.U.!.!.!.!.!.U.U.`.!.`.'.'.`.`.'.'.'.].[.[.[.[.'.'.'.'.].].].`.'.'. X X X X[. X X X X X X X%XXX%X X%X X%X%X X%X X X>X>X*X X X X%X%X%X*X%X*X", "!.!.!.`.!.!.!.!.!.U.!.U.P.!.P.P.P.Q.P.Q.Q.P.P.P.P.y.P.s.s.s.y.y.a.a.e.i.a.e.e.a.i.e.e.e.e.e.a.e.e.e.e.a.i.y.e.t.y.a.a.a.i.y.y.i.a.a.e.y.e.a.a.i.t.t.t.t.r.i.s.i.t.t.s.i.i.s.t.t.i.i.i.t.i.y.y.y.s.s.s.s.s.P.P.P.P.U.U.U.U.P.P.U.U.U.P.!./.U.U.U./.U.K.U.U.!.!.`.`.!.`.!.`.`.`.`.`. X`.[.`.[.[.`.'.'. X].'.].].'. X'. X X X X X X X X X X X X X X X X X X X X=X%X X X*X X%X X%X%X%X%X*X*X%X*X", "!.`.!.!.!.!.!.!.U.!.U./.U.!.U.U.Q.P.P.P.P.P.I.P.P.P.P.s.s.y.y.y.a.y.a.y.a.a.a.e.a.e.e.e.a.e.i.i.e.e.e.a.e.t.i.a.e.a.t.a.t.y.y.a.a.e.y.e.y.i.y.i.t.t.r.t.t.t.t.t.t.t.r.r.t.r.t.t.s.i.r.s.i.y.a.y.s.p.s.s.s.P.s.P.P.P.P.U.U.U./.!.U.U./.U.!.U.U./.U./.!.U.!.U.!./.!.!.!.`.!.`.`.`.`.`.].`.`. X'. X X`. X X X'. X X X X X'. X X X X X X}. X X X X X X X X X X%X*X X*X X X*X%X%X X%X%X%X*X%X*X*X" }; micropolis-activity/images/tiles-67.xpm0000664000076400007640000000252010724145723020377 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "32 32 7 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c red", "O c gray75", "+ c gray100", "@ c None", /* pixels */ "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@OOOOO@@@@@@@@@@@@@@@@@@@", "@@@@@@@O+ ++O@@@@@@@@@@@@@@@@@@", "@@@@@@O+.. +o+O@@@@@@@@@@@@@@@@@", "@@@@@@O +++++O@@@@@@@@@@@@@@@@", "@@@@@@OO O+++++O@@@@@@@@@@@@@@@", "@@@@@@XOXOX.+++++O@@@@@@@@@@@@@@", "@@@@@@@.OX..O+++++O@@@@@@@@@@@@@", "@@@@@@@@.O.OX.+++++O@@@@@@@@@@@@", "@@@@@@@@@.OX..O+++++O@@@@@@@@@@@", "@@@@@@@@@@.O.OX.+++++O@@@@@@@@@@", "@@@@@@@@@@@XOX..O+++++O@@@@@@@@@", "@@@@@@@@@@@@XO.OX.+++++O@@@@@@@@", "@@@@@@@@@@@@@XOX..O+++++O@@@@@@@", "@@@@@@@@@@@@@@XO.OX.+++o+O@@@@@@", "@@@@@@@@@@@@@@@.OX..O++++ @@@@@@", "@@@@@@@@@@@@@@@@.O.OX.++. @@@@@@", "@@@@@@@@@@@@@@@@@.OXO . @@@@@@", "@@@@@@@@@@@@@@@@@@.OXO .@@@@@@", "@@@@@@@@@@@@@@@@@@@XOXXX.@@@@@@@", "@@@@@@@@@@@@@@@@@@@@....@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" }; micropolis-activity/images/grmonyhi.xpm0000664000076400007640000000256010724145723020665 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "32 32 8 1", /* colors */ "` c #000000", "a c #007F00", "b c #00BF00", "c c #003F00", "d c #FF0000", "e c #FFFF00", "f c #005F00", "g c #BFBFBF", /* pixels */ "````````````````````````````````", "``ffffffffffffffffffffffffffff``", "`f`ffffffffffffffffffffffffff`a`", "`ff`ffffffffffffffffffffffff`aa`", "`fff````````````````````````aaa`", "`fff`gggggggggggggggggggggg`aaa`", "`fff`gggggggggggggggggggggg`aaa`", "`fff`ggggggbbbbbbgggg``gggg`aaa`", "`fff`ggggbbbcbccbgggg``gggg`aaa`", "`fff`ggggbbccbcbbgg``````gg`aaa`", "`fff`gggggbbbbbbggg``````gg`aaa`", "`fff`ggggggbbbbcggggg``gggg`aaa`", "`fff`gggggbbebbbcgggg``gggg`aaa`", "`fff`gggcbbeeebbbcggggggggg`aaa`", "`fff`ggbbbececebbbcgggggggg`aaa`", "`fff`ggbbbebebcbbbccggggggg`aaa`", "`fff`ggbbbceeebbbbccggggggg`aaa`", "`fff`gcbbbbcecebbbccggggggg`aaa`", "`fff`gbbbbebebebbbccggggggg`aaa`", "`fff`gbbbbceeecbbbccggggggg`aaa`", "`fff`ggbbbbcecbbbbccggggggg`aaa`", "`fff`ggcbbbbcbbbbccgggggggg`aaa`", "`fff`gggcbbbbbbbccggdddddgg`aaa`", "`fff`ggggccccccccgggdddddgg`aaa`", "`fff`gggggggggggggggggggggg`aaa`", "`fff`gggggggggggggggggggggg`aaa`", "`fff`gggggggggggggggggggggg`aaa`", "`fff````````````````````````aaa`", "`ff`aaaaaaaaaaaaaaaaaaaaaaaa`aa`", "`f`aaaaaaaaaaaaaaaaaaaaaaaaaa`a`", "``aaaaaaaaaaaaaaaaaaaaaaaaaaaa``", "````````````````````````````````" }; micropolis-activity/images/icchlk.xpm0000664000076400007640000000275410724145723020273 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "34 34 7 1", /* colors */ "# c #000000" "` c #7F7F7F", "a c #5D5D5D", " c #FFFFFF", "c c #FFFF00", "d c #FF7700", "e c #BFBFBF", /* pixels */ "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", "e a", "e a", "e aaaaaaaaaaaaaaaaaaaaaaaaaaaa a", "e a # # # # # # # # # # # # #e a", "e a# # # # # # # # # # # # # e a", "e a # # # # # # # # # # # # #e a", "e a# # # # # # # # # # # # # e a", "e a # # # # # # # # #e``# # #e a", "e a# # # # # # # # e````# # e a", "e a # # # # # # # e e````# #e a", "e a# # # # # # # e e ```` # e a", "e a # # # # # # e e ` ``a# #e a", "e a# # # # # # e e ` ``a# # e a", "e a # # # # # e e ` ``a# # #e a", "e a# # # # # e e ` ``a# # # e a", "e a # # # # e e ` ``a# #e# #e a", "e a# # # # e e ` ``a# #e# # e a", "e a # # # e e ` ``a# #e# # #e a", "e a# # # e e ` ``a# #e# # # e a", "e a # # e e ` ``a# #e# #e# #e a", "e a# # e e ` ``a# #e# #e# # e a", "e a # #e e ` ``a# #e# #e# # #e a", "e a# # e ` ``a# #e# #e# # # e a", "e a # #e ` ``a# # # # # # # #e a", "e a# # #` ``ae e e e e e e e e a", "e a # # #``ae e e e e e e e ee a", "e a# # # #eeeeeeeeeeeeeeeeee e a", "e a # # # # # # # # # # # # #e a", "e a# # # # # # # # # # # # # e a", "e aeeeeeeeeeeeeeeeeeeeeeeeeeee a", "e a", "e a", "eaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" }; micropolis-activity/images/maphilite.xpm0000664000076400007640000102461110724145723021007 0ustar simcitysimcity/* XPM */ static char *maphilite[] = { /* columns rows colors chars-per-pixel */ "396 338 226 2", " c #1C526E", ". c #1B5172", "X c #335D5D", "o c #385C5E", "O c #21536E", "+ c #235570", "@ c #205678", "# c #265871", "$ c #215C7E", "% c #285771", "& c #2B5A73", "* c #335E60", "= c #385D60", "- c #335C75", "; c #375F78", ": c #395E78", "> c #33605C", ", c #3C6279", "< c #455F7E", "1 c #40667B", "2 c #45697D", "3 c #496B7E", "4 c #51737D", "5 c #3F558A", "6 c #3F5A86", "7 c #3E5A89", "8 c #3C5C94", "9 c #266286", "0 c #29698D", "q c #256694", "w c #256995", "e c #296794", "r c #2A6894", "t c #2A739E", "y c #326C95", "u c #376B9D", "i c #3E6398", "p c #307296", "a c #367098", "s c #397097", "d c #3D7599", "f c #3D789B", "g c #3D6DA1", "h c #337AA7", "j c #327EAA", "k c #3A76AA", "l c #3C7AB2", "z c #445686", "x c #44568A", "c c #415886", "v c #43598B", "b c #485685", "n c #48558B", "m c #4A5887", "M c #495A8D", "N c #455690", "B c #425A90", "V c #465F98", "C c #4B5590", "Z c #495C90", "A c #4B5998", "S c #466089", "D c #4C6783", "F c #4C638D", "G c #4B6D80", "H c #49698C", "J c #426294", "K c #446399", "L c #466B9B", "P c #4C6293", "I c #4C659D", "U c #4E6D93", "Y c #4F7081", "T c #44759C", "R c #43799C", "E c #4A759E", "W c #4A7B9E", "Q c #506F81", "! c #526494", "~ c #546498", "^ c #536995", "/ c #536B99", "( c #5D6A97", ") c #586C9B", "_ c #517182", "` c #54748B", "' c #537198", "] c #59719D", "[ c #5F7E96", "{ c #5B7C9C", "} c #456CA1", "| c #4868A3", " . c #4474AB", ".. c #477BA2", "X. c #437AAD", "o. c #4A74A2", "O. c #4975A9", "+. c #4D7AA0", "@. c #497FB2", "#. c #5277A0", "$. c #5076AA", "%. c #517AA1", "&. c #5B71A0", "*. c #597EA3", "=. c #6275A4", "-. c #627CA5", ";. c #637DAA", ":. c #687FAB", ">. c #399C3E", ",. c #2EBA1D", "<. c #2FB722", "1. c #2FB920", "2. c #33A72F", "3. c #35AB31", "4. c #31B425", "5. c #34B12B", "6. c #31B923", "7. c #34B929", "8. c #3B914B", "9. c #24CE05", "0. c #25CB08", "q. c #28C70D", "w. c #28CC0C", "e. c #2AC414", "r. c #2DC219", "t. c #29C911", "y. c #24D503", "u. c #25DA04", "i. c #28D10B", "p. c #27E104", "a. c #3580B1", "s. c #3C81B3", "d. c #3B8BB7", "f. c #3C8ABA", "g. c #3796C4", "h. c #3796CE", "j. c #3897CF", "k. c #3B99CF", "l. c #3A97D0", "z. c #3C99D0", "x. c #58819F", "c. c #4F80A1", "v. c #4D83AC", "b. c #4786B8", "n. c #4B81B2", "m. c #4F85B9", "M. c #5481A2", "N. c #5B82A4", "B. c #5E84A8", "V. c #5F89A1", "C. c #548BB4", "Z. c #538DBE", "A. c #5790BF", "S. c #5993BB", "D. c #6185A3", "F. c #6582AB", "G. c #6589A3", "H. c #638AAA", "J. c #6984AD", "K. c #6B8DA5", "L. c #6D8CAA", "P. c #6E85B1", "I. c #6C8CB2", "U. c #6791AA", "Y. c #6892AD", "T. c #6790B1", "R. c #6A92B2", "E. c #6E9CB6", "W. c #7384AF", "Q. c #718CB3", "!. c #778EBA", "~. c #7290B6", "^. c #7694BA", "/. c #719AB7", "(. c #739BBC", "). c #7896BC", "_. c #7B9ABD", "`. c #4394C3", "'. c #449CCA", "]. c #4B92C3", "[. c #4E95C8", "{. c #4A9CCC", "}. c #429DD2", "|. c #499DD0", " X c #5494C3", ".X c #5496C9", "XX c #549ACB", "oX c #5C96C7", "OX c #5A96C9", "+X c #5B9ECD", "@X c #549CD0", "#X c #47A0D4", "$X c #4CA2D4", "%X c #59A1C7", "&X c #5BA3CC", "*X c #51A3D5", "=X c #54A6D9", "-X c #51A8D4", ";X c #56A9D8", ":X c #5AA5D4", ">X c #5AA8D5", ",X c #5EACDA", " o o o o X o o o o o X > o o X X X o X X X X X X X X X X X X X X * * * * X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X * * = X X X X o X > * > = * X X * X * X o o o o o o X X o X o = * = = = = = o X X X X X X X * X X * X X X o X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X * = = = = = = * * * * * * o * X X o o = X X X X X o X X o X X o o o o * = * = * = X X * X o * X * = = * = X X * X X c b b c x v 7 L XX=X}.}.z.l.l.l.l.", "$X$X$X$X=X:X .B v M P ] J.1X<.e.9.y.y.y.y.i.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.9.9.y.y.y.y.9.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.i.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.i.y.y.y.y.u.y.u.y.y.y.y.y.y.y.y.9.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.i.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.u.y.y.y.y.y.u.y.y.y.y.y.y.y.u.y.y.y.u.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.9.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.9.y.y.y.i.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.9.y.y.y.y.y.y.y.y.y.y.y.u.u.y.y.u.u.y.y.y.u.y.y.i.y.y.u.y.y.y.u.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.u.y.y.y.y.u.u.u.u.u.y.y.y.y.y.y.y.u.y.y.u.u.u.y.y.i.y.y.y.u.u.y.y.y.u.y.y.y.y.y.y.y.u.y.y.y.y.y.y.e.4.).J.) M z 7 } .X=X}.}.z.l.z.l.", "$X$X$X$X-X XB v x M ( W.9X4.t.y.u.u.u.y.u.u.u.u.y.y.y.u.u.u.u.u.u.u.u.u.y.u.u.y.u.y.u.y.u.u.u.u.y.u.y.u.u.y.u.u.u.u.u.u.y.u.u.u.u.u.u.u.u.u.u.u.y.y.u.u.u.u.u.u.u.y.u.u.y.u.u.y.y.u.u.y.u.u.u.u.y.y.y.u.u.y.u.y.y.u.u.y.y.u.y.u.u.u.u.u.u.u.u.u.y.u.u.u.u.u.u.u.u.u.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.y.u.y.u.y.u.u.y.u.u.y.y.u.y.u.u.y.u.y.i.u.u.u.y.u.u.u.u.u.u.u.u.u.u.u.y.u.u.u.u.u.u.u.u.u.u.u.y.u.u.u.u.u.u.u.u.u.u.u.y.u.u.u.u.u.u.u.u.u.u.u.y.y.u.u.u.u.u.u.u.u.u.u.y.u.u.u.u.y.u.u.u.u.y.u.y.u.u.y.u.y.u.y.u.u.u.u.y.u.y.u.u.i.u.i.i.u.u.i.y.y.y.u.y.u.u.y.u.u.u.u.y.u.u.y.y.u.u.u.u.u.u.u.y.u.u.u.u.u.y.u.u.u.u.u.y.u.u.u.u.u.u.u.u.u.u.u.y.y.y.u.u.u.u.u.u.y.y.u.u.u.u.y.y.u.u.y.u.y.y.u.u.u.u.y.u.u.y.u.u.y.u.u.u.y.u.y.u.u.u.u.u.u.u.i.u.u.u.u.u.y.y.u.y.u.u.u.y.y.u.u.u.u.u.y.e.4.1XJ./ m M 7 L .X*X#X}.k.k.z.", "*X$X*X@XZ.L 6 v M #./.4.t.0.y.u.u.p.p.p.p.p.y.u.p.u.u.p.p.u.p.u.u.u.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.p.p.u.u.u.u.u.u.u.p.p.p.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.y.u.u.u.u.u.u.u.u.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.p.u.p.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.y.u.p.u.u.u.u.u.u.u.u.u.u.u.u.p.p.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.y.p.p.u.u.u.p.u.u.p.u.u.y.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.p.u.u.p.u.u.u.u.u.p.u.u.u.u.u.u.p.p.p.p.p.p.p.p.u.p.u.u.u.p.u.p.p.p.u.p.p.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.u.u.u.u.u.y.u.u.u.u.y.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.u.u.y.u.u.u.u.u.y.y.u.y.u.y.u.u.u.u.y.i.e.3.J./ m n v } oX=X$X}.z.z.", "$X$XXX .V v 5 F ) ^.6.w.u.u.y.u.u.u.u.y.u.u.u.u.y.u.y.u.y.u.y.u.u.u.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.u.u.u.u.y.u.y.y.u.u.i.u.u.u.u.u.i.u.y.u.u.y.u.y.u.y.u.u.y.u.y.u.u.u.u.u.u.u.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.y.u.u.y.y.u.u.y.u.u.u.u.y.u.y.u.y.u.y.u.y.u.u.y.u.y.y.u.u.y.u.u.u.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.u.y.u.u.y.u.u.u.u.u.u.u.u.y.u.u.y.u.u.y.u.u.y.u.u.u.u.u.u.u.u.u.u.y.u.u.u.u.u.u.u.u.u.u.y.u.u.y.u.u.u.y.u.u.u.u.u.u.u.y.y.u.y.u.u.y.y.u.u.u.y.y.u.u.u.u.u.u.u.u.u.u.u.y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.y.y.u.u.y.y.u.y.u.y.y.u.y.u.u.u.p.y.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.u.u.u.u.y.u.y.y.u.y.u.u.w.5.8./ x v x } XX$X#X}.z.", "=X.XO.v 7 v M ^ >.,.i.u.y.p.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.9.5.J./ M n 5 } oX$X}.z.", "$X@.B x 7 V ) ^.1.y.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.i.4.Q.~ Z v v o..X$X}.", "$X} v M Z / !.<.y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.5.J./ v x x X.XX$X", "$XV M M ^ J.4.i.y.u.y.y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.q.3.F.P n n 8 X.@X", "'.n x ^ -.1Xe.y.u.u.u.y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.y.r.^.) Z x n K :X", "`.N b *.~.<.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.0.5.P./ v n M 2X", "l C z Q.6Xe.y.u.u.u.u.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.p.y.r.1X*.Z x v &X", "k n z 0X1.i.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.u.y.y.7.F.~ c n %X", "I x z ,.w.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.u.u.u.y.e.I./ x v S.", "P n X e.y.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.~.) b x S.", "B x X y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.u.u.u.u.w.).] x x C.", "B x X y.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.i./.] n x n.", "V z X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] x x v.", "5 z X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.u.u.u.y.9.).&.x n c.", "v c X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.w.).] n n ..", "B x X 9.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.u.u.u.i.^.] x n ..", "v x X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] x x W ", "B x X y.u.p.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] v v o.", "8 x X y.y.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] n x W ", "v x X y.u.p.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.n z W ", "B z X y.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] x x E ", "v n X y.y.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.x v E ", "7 v X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.x x W ", "8 x X y.u.p.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.9.^.&.x x +.", "v x X i.u.p.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.x x W ", "v n X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.c x E ", "8 n X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.x x W ", "v x X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.v x W ", "v x X u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.c x E ", "B x X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0._.&.x v E ", "8 x X y.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.).&.v v W ", "v x X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.) v v E ", "B b X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.).&.x c E ", "B x X y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0./.&.n x W ", "v b X y.y.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.).] x x W ", "v n X y.y.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.).&.x x W ", "B x X y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] x x +.", "v z X y.u.p.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.).&.x x %.", "v z X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.(.&.x x W ", "B x X y.y.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.x x W ", "v x o y.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.c x +.", "B x > u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.).&.c x +.", "B x = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.(.&.v n +.", "B x = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.9.).&.v x +.", "V n = u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.v x +.", "v x = u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.c n +.", "v x = y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.x x +.", "B x = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.c v +.", "v v = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.).&.x 5 { ", "B v = y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.x 6 +.", "B n = u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.n 6 %.", "8 x = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.n c %.", "v x = u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.9.).&.x 6 %.", "v x = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.).] x 6 %.", "B x = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.).&.x 6 %.", "v x = u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.9.^.&.x 6 %.", "B x * y.y.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] n 6 %.", "B v * y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.x c %.", "B c * y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.x c %.", "B v X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.n c %.", "S v * y.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] x 6 W ", "v x o y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.(.&.x c %.", "B x o y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.0.).] n c +.", "B c > y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.).&.x c +.", "B x > y.y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] x x +.", "v c o y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.).] v v W ", "B v X y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.(.&.n c ' ", "B c o y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] v c %.", "B c X y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.v c %.", "B c X y.y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.n b %.", "B c o y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] v z +.", "B x X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] v v +.", "J c X y.y.y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.n 6 +.", "V c X y.y.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] x c %.", "v x X y.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.x 6 W ", "v c X y.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.n 6 %.", "B c * y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] n c %.", "B c X y.y.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.y.0.).&.x c %.", "8 c X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.(.&.M 6 +.", "v v X y.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.).] c 6 %.", "B n = u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] M v ' ", "B x = y.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.x x W ", "v x = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.v c %.", "B x = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.n v +.", "v v = y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] c 6 %.", "B n = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.w.(.] n 7 ' ", "B v = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] x 7 W ", "B x * y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] v c W ", "v x X y.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] b M W ", "V x X y.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.).] n c W ", "v x X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.(.] n b +.", "v n X y.y.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] v v o.", "v n X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.n v E ", "B n X y.y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.x v +.", "v n X y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.v c W ", "v x X i.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.x c W ", "B v o y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.v n E ", "V x = u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.v x W ", "c v = y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.x b E ", "v v * y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.5 x E ", "B x * y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.5 x E ", "B x o y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.).&.v v E ", "B x o y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.(.&.v c E ", "V x = y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.5 z E ", "v v * y.u.y.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.y.0.^.&.v x T ", "v c o y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.).&.v v T ", "v x * y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] v v L ", "B v * y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.n n T ", "S 7 * y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.y.0.^.] v c T ", "v v X y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.(.] v x T ", "B x o y.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] v x T ", "B v X y.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.n v T ", "v v * u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.) v v T ", "7 v X y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.(.&.x v T ", "B v X y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.).&.x x T ", "v x X y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.) v v T ", "5 z o y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.) v z T ", "B v X y.y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.n n T ", "7 v o y.y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.9.^.] v v T ", "v v X y.y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.).&.c v T ", "B v o y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.).&.n v E ", "M m o i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.) v v E ", "M m o u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.).&.v v E ", "v n o i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.x n T ", "v x o u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.v v T ", "V x X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.).&.v n L ", "v x = y.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.(.&.v x T ", "v n o y.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.) x x W ", "B x = u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] v v E ", "B x = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.v x E ", "v x = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.v n L ", "B c * y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.v x E ", "B M = y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.v x E ", "B n = u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] v n E ", "B v = y.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] v n E ", "v v = y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.v n E ", "B x = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] c x o.", "B n * y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.5 n E ", "S v = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.8 x E ", "B n = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.v v E ", "v v = y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.v n E ", "B x o y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] v n +.", "B x o y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] c x +.", "S v * y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.v z ' ", "B x X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.v v %.", "v z X y.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.x x +.", "B z X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.x x +.", "x v X y.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.x x +.", "v n X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.).&.x c +.", "B z X y.u.u.y.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.).] v c %.", "B x X y.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.(.] c b +.", "v z X y.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.v x M.", "x z X y.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.y.0.^.&.n c #.", "B n X y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.(.] n 7 %.", "x v X y.y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.).] n 7 *.", "B v X y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] n 7 %.", "B n X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] n 7 +.", "x x * y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.).] n 7 *.", "B x X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] n 7 %.", "B n X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.n 7 %.", "x v X y.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] N 7 *.", "B n X y.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] n 7 *.", "B n X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.).] n 6 %.", "v n * y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.v v *.", "x v X y.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.v 6 *.", "8 n X y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.x c *.", "B x X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.n c N.", "B x X y.u.p.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.).&.x c N.", "B n X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.(.&.n c N.", "v x X y.y.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] n 6 N.", "v x X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.n c N.", "B n X y.y.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.x 5 N.", "B v X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.n v N.", "v n * y.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.n 5 N.", "B n * y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.x 5 N.", "B n X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] n c N.", "B x X y.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.).&.n 7 N.", "B x X y.y.p.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.w.(.] n c N.", "v x X y.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] n 7 N.", "B n X y.y.p.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] n 5 N.", "8 x X y.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] x c N.", "v x X y.u.p.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.x c *.", "8 c X y.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] n c N.", "v x X y.y.p.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.x 5 N.", "B x X y.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.v 5 N.", "v x X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.w.^.&.v 6 *.", "8 x X y.y.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] v c N.", "v c o y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] n 7 +.", "8 b X y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.n 7 +.", "v x = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] x M #.", "J x = y.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] x c +.", "v x = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.x c +.", "v v = y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] n c +.", "B n = u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.x 6 %.", "8 B = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.x 6 +.", "v x = y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.n c ' ", "v x = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.x 6 W ", "V x X y.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] x x +.", "v x X y.y.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.c M +.", "v n X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.).&.x c +.", "v n X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] x c +.", "B n X 9.y.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] n v o.", "v v X y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] v v E ", "v x X y.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.n x W ", "B x X i.y.u.u.u.u.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.) v v W ", "B x X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.(.&.c x E ", "v x = u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.).&.v n W ", "B x o u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.c n E ", "B x o y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] x x E ", "v x = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.).] v x E ", "B v = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.(.&.v v E ", "v x = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] 5 z L ", "B x = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] v v E ", "B M * y.y.u.p.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] n v T ", "7 v X u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] v v T ", "v c o y.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] v v T ", "8 M X y.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.).&.v x L ", "v v o y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] x v T ", "v n o y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.x x T ", "8 v o y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.x x T ", "v c o y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.c v T ", "v v X y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.n c T ", "B v X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.).&.v v T ", "v x X y.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.v v L ", "5 z o y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.y.0.^.&.v c R ", "B v o y.y.y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] v v T ", "7 v o y.y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] v v L ", "v v X y.y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.n v T ", "7 v X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] n v T ", "B v = y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] v n E ", "B n = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] n v T ", "B x = u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.) v c E ", "v x = y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] v v E ", "B v * y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.5 x E ", "S v = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.v x T ", "v x = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.v v L ", "B M = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.5 v E ", "B x = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.v x E ", "v x = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.v x E ", "B x = u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.v x E ", "B x = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.5 x E ", "B n * y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.v x E ", "B n * y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.x n E ", "B c = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.v x E ", "8 n = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.5 x E ", "v x = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.w.^.] v x E ", "v v = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] c n E ", "V x = u.u.u.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.B n W ", "c v = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] v n E ", "B x = y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.v x E ", "v x o u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.v n E ", "B x > y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.(.&.c n W ", "B x = u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.).&.x v ' ", "v b X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.n v +.", "B b X y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] v v +.", "B x X y.y.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.n c +.", "B b X y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.n c +.", "B z X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.x v %.", "B z X y.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.x c +.", "v z X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.).&.x c %.", "v z X y.u.p.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.(.] c v +.", "B x X y.y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.x v %.", "v n X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.n v %.", "B x X y.y.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.).&.x v %.", "B x X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.9.).&.x 6 %.", "v n X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.x 5 +.", "B v X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.v c %.", "x v X u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] n 7 *.", "B n o y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] n 7 %.", "x v X y.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.x 7 *.", "B n X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] N 7 %.", "x x X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.x 7 *.", "B x X y.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.n c *.", "B n X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.y.0.^.] n 7 *.", "B n X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] n c *.", "B x X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.w.^.&.n 7 N.", "B n X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] v v *.", "x v X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] n c N.", "B v X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.N v N.", "B n X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] n 5 N.", "8 n X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] n 6 N.", "v n X y.y.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] x v *.", "B x X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] N c N.", "v n X y.y.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] n c N.", "B x X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.N c N.", "B x X y.y.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.n c N.", "B x X y.y.p.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] n c *.", "B x X y.u.p.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.0.^.&.v 5 N.", "B x X y.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.n 6 N.", "8 c X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.x 5 N.", "v 5 X y.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.x c *.", "B x X y.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.x c N.", "B x > u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.x c *.", "7 x X y.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.n c N.", "B n X y.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.).&.n 6 N.", "v n X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.).) x 6 *.", "8 x X y.u.p.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.).&.x v N.", "v x X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.&.n 7 *.", "v x X y.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.v 7 N.", "8 x o y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] v c N.", "v x o y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.n c *.", "c v X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.n 7 N.", "v v X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] N 7 N.", "7 v X y.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.] n c N.", "B N X y.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.N 7 N.", "v v X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.0.^.] n c N.", "v v X y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.z c N.", "v n X y.u.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.9.^.&.x 6 N.", "v n X y.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.0.^.&.n 6 B.", "v M X y.y.p.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.y.u.w.~.] n c B.", "v v X y.y.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.y.u.u.p.w.^.] x 6 B.", "V n X 0.u.p.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.^.] n c B.", "i x v r.y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.t.~./ x c B.", "g n v 5.t.i.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.u.y.y.r.I.! n 7 H.", "k v v X[.l J v n F / F.1X7.t.y.u.u.u.u.u.u.u.u.u.y.u.u.u.u.y.u.y.u.u.u.u.u.u.y.u.u.u.u.u.y.y.u.u.u.y.u.u.u.u.y.y.u.u.u.u.u.y.u.u.u.u.y.y.u.y.u.u.u.u.u.u.u.u.u.u.u.u.u.y.y.y.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.y.u.u.u.y.u.u.u.u.u.u.u.u.y.u.u.y.y.u.u.u.u.y.y.y.u.u.u.y.y.y.u.u.u.y.u.u.u.y.u.u.u.u.p.y.u.u.u.y.u.u.u.p.u.u.u.u.u.y.u.u.u.u.u.y.y.u.p.u.u.y.y.u.y.u.y.y.y.u.y.u.u.p.u.u.u.u.u.u.u.u.u.u.u.y.u.u.u.u.u.y.y.u.u.y.y.u.u.u.u.y.y.u.u.u.y.u.p.u.y.y.y.u.u.u.y.y.u.u.u.u.u.u.u.u.u.u.y.u.y.y.u.u.u.u.u.u.y.u.u.y.u.u.y.u.y.u.u.y.u.u.u.u.u.u.u.u.u.u.y.u.u.u.u.u.y.u.u.y.u.y.y.u.u.y.y.u.u.y.u.u.y.u.u.y.u.u.y.u.y.u.y.u.y.u.u.u.u.u.y.y.y.u.u.u.y.y.u.y.y.y.u.u.u.y.y.i.p.u.u.y.y.u.u.u.u.y.y.u.y.y.u.u.y.u.u.y.u.y.u.u.y.y.y.y.u.y.u.y.u.u.u.u.y.u.u.y.y.u.y.y.y.9.e.qX^.;.I v x b c H H.8XuXsXdXsXsX", "5X5X5X3X4X,X@XO.K v c 7 6 6 5 X X X X X X X > X X X X X X X X X * X X X X X X X X X o X X X X X X X X X X X X * X * X X X X X X X * X X X X X X X X X X o o o o X X X X X X X X X X X X * X * X X X X o X X X X X X X X X X X X X X X X X * * X X X X X o X X X X X X X X X X X > X X X X X X X X X X X X X = X * X X X X X X X > X > > X X X X > X X X X X > X X X X > > X > X > > > > X X X X X X X X > > > X X X X X X X > X > X > X > X X X X X > > > > X > X X X X X X X X X X X X X X X X X X X X X X X > X X X X X X X X * X X X * * * * X X X X > X * > > X X X X X X X X X X X X X X X X X X X X X X X X o X X * * * X * X * * X X * * X X * X X X X o X X * * * * X X * X X X o o o o * X X X X X X X X * * * X * * * X X X X X X X X X X X X X X X X > X X X X X X X X X X z v v c c b z F { Y.8XyXsXdXdXsXsX", "5X3X5X5X5X3X3X+Xm.| A C n n v x c v v c n v 5 x b x x x v v x v B 5 5 x v 5 v v z x x z c c v v c v c v x x x c x x x v v x v x v v c v v v v c c v x c x x M n c v c c v v v c v v c v x x x x x x x x c x b c c v c v c v n x v v v c x n x v v v v v v 5 v v v v v v 6 c v v v v 6 c v v c c v c x x v v v c c x x x x c x x n z 5 v z n z n c v x x v n v z z n x x c v n x x n 5 v x n x x b c x n x x 5 v n x z n v v x x v c x x x n 5 c n z n x 6 v c b b n n n n x b x n z n x z x x x x x x x n n 5 c n n n n b x x n x x n n n n v v n n x x 5 v n n v x n b n x b b x n n n n x n z x x x x n x v n x x x n n x n x n v n v n N N n n n n M n n m m n n N n n n n x n n x n n n m n x n n n n n x C n n v v n x n n v n n v v x x x v N n n n n N n n n v x n n n n v n z b x x x x M H -./.wXyXsXsXdXdXsXsX", "5X5X5X5X5X5X5X3X>X{.g.d.h u 8 7 7 c b x c b x x x n x n n n n v n N n v n n n x x n x x x v v n v n n n x v n n x x x N x x x n x n N n n N n v n c x x x x n b x x n z x x n x x x x n x n n z c x n x x x x x c n n v n x v x n n v n x x x N x x v n n n n n x n z x x v v n x v n c x x n x x x x x x n x n v n v v x M x x x v v c v v 5 c c v x v v v c c v v n 5 v v x z v v c v x x x x c x x b x z x c z 5 x v z c x z z v x z v c v v v 5 z z v c S 6 x c c v v c c c c z c c c c c c c c v c 7 c c v v c c c c c c v v v v c 5 v v 5 v x z z v v z z z c c c c c c c c c c x c c v v v v c 5 v v v v M x x x x x x x v x c c x c c c c b c c b x m D c z x v z z z z v 5 z x x z n m x v v v v v 5 x x v v v c v c c c v c v v v v v c c x x c c x x v x c v v x x v v c 5 z < < D ` [ Y.7XtXaXfXfXfXdXsXsXpX", "5X5X5X5X5X5X5X5X5X5X:X{.`.d.j p 0 9 . . . . . . . . . . . . O O O + O . . . O O O O O O O # + + + + + + + + % # # # O # # % % % % % % % # & & & & & & & & & - - . . . . . O O O O O O O + + + O + + + + O % % O % O % % # % % % % * # # & & & & & & & & & - - - - - - - - - - - - - - - - - - - - - , & , & - - ; - ; ; - : : : : : : : : , , , , , , , , , , , , , , , , , , & , , & - , - , , - , , , , , , , , 1 1 2 2 , 1 2 1 3 3 2 2 2 2 2 2 2 3 2 2 2 3 2 4 2 3 3 2 3 3 3 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 G 2 3 2 2 2 3 3 G 3 G Q G Y _ 4 Q Q 4 Q Q Y Y Y Y Y Q _ _ _ _ _ _ 4 [ 4 4 _ _ _ _ _ 4 _ _ 4 Q _ Q Q _ Q Q _ 4 4 4 4 4 4 4 4 4 _ _ 4 _ G Y Y G G Y Y 3 3 3 3 Y Y 3 Y 3 3 3 3 G G G 3 G G 3 3 4 4 Q ` { H./.9XtXiXiXfXfXfXfXfXsXsXsX", "5X5X5X5X5X5X5X5X5X5X5X3X>X*X'.b.h t t w w w r w r r e e w e r 0 e e 0 r r r r e e e w e w q q q q q q q q q q 0 r y r y y y y y r y y y y y u y y r y y y y y y y y y s s s s s s a d d d R d R d q q q q q q q q q q q q q e q q r y r y r y y y y y y y y y y y p p y y y y y y y y y y s a a s s s s d s T d T R f f f f f p T d f d T f d f d d f d f p f f f f T R R R R R R R R R R R R R R ....R W W R ..R W R c.c.R c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.M.M.x.M.M.M.M.M.V.x.M.M.x.x.M.V.x.N.N.N.x.N.N.G.x.G.N.B.x.B.B.B.N.D.V.D.D.D.G.V.V.G.V.V.V.V.G.G.D.H.D.B.N.B.x.N.x.G.B.B.B.G.G.H.D.D.G.G.G.G.G.L.K.G.G.K.L.G.G.L.K.K.K.K.K.Y.K.L.L.L.K.K.K.L.K.K.K.L.L.K.L.L.K.K.K.K.K.K.K.K.K.K.L.L.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.H.G.G.G.G.G.G.G.G.G.G.G.K.K.G.G.G.G.G.G.G.G.G.D.x.K.E.7XwXyXyXiXfXfXfXfXfXfXfXsXsXsX" }; micropolis-activity/images/obj5-9.xpm0000664000076400007640000000515410724145723020040 0ustar simcitysimcity/* XPM */ static char * obj5_9_xpm[] = { "48 48 6 1", " c None", ". c #FFFF7F7F0000", "X c #FFFF00000000", "o c #FFFFFFFF0000", "O c #FFFFFFFFFFFF", "+ c #000000000000", " ", " ", " ", " ", " ", " ", " .... ", " ....X.X ", " ...XooXX ", " .oX.XoXXX ", " .oX..X.X.X ", " X......X.X ", " X.......X.X ", " ...O....X.X ", " X........X.XX ", " X........X...XX ", " O X..O.....X.......X ", " O.. X...........X.....X ", " .....O....O........X...X.X ", " ........X..O.......XX.X.X.X ", " X.X...X.X..........XXXX.X. ", " X.X.X.X.X.O.......XX+XXXX ", " .X.XXXXX.........XX ", " XXX XX..O.......XX ", " .X.........XXX. ", " ...X..O......X.... ", " ..............X..... .X ", " .O......O..............X ", " O.....X................X. ", " ..X.X.XX.........XX...X.X. ", " .X.X.X.XX.........XX.X.X.X ", " .X.X.XXXX.X......XXX.X.X. ", " XXXXXXXXX.X......XXXXXXX ", " XXX XXX.X...... XXX ", " XX.X...... ", " XX.X....... ", " XX.X.X......... ", " XXXX.X......... ", " XXXXXXXXXX..X. ", " XXXX .X.X ", " X.X. ", " X.X. ", " X.X ", " X.X ", " . ", " ", " ", " "}; micropolis-activity/images/obj2-1.xpm0000664000076400007640000000260110724145723020017 0ustar simcitysimcity/* XPM */ static char * obj2_1_xpm[] = { "32 32 10 1", " c None", ". c #FFFF00000000", "X c #BFBFBFBFBFBF", "o c #3F3F3F3F3F3F", "O c #7F7F7F7F7F7F", "+ c #FFFFFFFFFFFF", "@ c #000000000000", "# c #00000000E6E6", "$ c #66666666E6E6", "% c #FFFFFFFF0000", " ", " ", " ...... ", " ... ... ", " . . ", " . . ", " . . ", " . . ", " . . ", " . X ooo . ", " . O +o@@@o . ", " . Oo++@#@@o . ", " . O +++O@#@o . ", " . O O++ooO@@ . ", " . O o++XooXOO . ", " . ++XXXXOO X . ", " . $+XXXOOOoO . ", " . +XXXOOo O . ", " . +XXOOo O . ", " . +XXO$ O . ", " . +XX O . ", " .XX . ", " % X. . ", " O XX . . ", " % XOX ... ... ", " O XOOX ...... ", " % OOX ", " X ", " ", " ", " ", " "}; micropolis-activity/images/tiles-23.xpm0000664000076400007640000000263210724145723020373 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "34 34 2 1", " c black", ". c #7E7E7E7E7E7E", /* pixels */ "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "........ . . . . . . . ..... . . .", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", ".................................." }; micropolis-activity/images/obj5-15.xpm0000664000076400007640000000513010724145723020107 0ustar simcitysimcity/* XPM */ static char * obj5_15_xpm[] = { "48 48 5 1", " c None", ". c #FFFF7F7F0000", "X c #FFFFFFFFFFFF", "o c #FFFF00000000", "O c #FFFFFFFF0000", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " . ", " .X. . ", " ......... .. ", " ......X.. X .. ... ", " .....X... .X...... ... ", " . ....... ..X..... ... ", " ...XX....XX... ...X...... .. ", " .............X................ ...o ", " ......................X........ ..o ", " o............................X... ... ", " o..OOOo........................... ...o ", " o.ooo.................................. .....o ", " oooooooooo.........................X..X....oo ", " .ooooo.oo...............................o ", " ..................................o ", " .oo..oo.oo......o.........oo..ooo ", " .oooooo.oo.o.......oo.oo.oooooo ", " ..o.oooooooo.oooooo oooooooo o ", " .o.oo ooo.oo..oo ", " oooo oo.....ooo ", " o.ooo oo..oooooo ", " .o.oooo oooooooooo ", " ooooo o ooooo ", " oooo ", " oooo ", " o ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; micropolis-activity/images/checkbox1checked.xpm0000664000076400007640000007456710724145723022227 0ustar simcitysimcity/* XPM */ static char *checkbox_checked[] = { /* columns rows colors chars-per-pixel */ "190 70 256 2", " c #0B111B", ". c #10131A", "X c #0D1522", "o c #0C1B2C", "O c #0D1826", "+ c #0F1C33", "@ c #131924", "# c #121B2B", "$ c #161B29", "% c #101D34", "& c #16212B", "* c #142236", "= c #18273A", "- c #0C2436", "; c #222C3A", ": c #24323C", "> c #152A43", ", c #142A49", "< c #182B43", "1 c #192E4D", "2 c #142541", "3 c #1A2E52", "4 c #172F51", "5 c #1C314C", "6 c #17304F", "7 c #1A3253", "8 c #1C355B", "9 c #1B3A5C", "0 c #163255", "q c #0F2A45", "w c #1D3C63", "e c #1D3E6A", "r c #1D3C72", "t c #223546", "y c #203456", "u c #213A5D", "i c #233A57", "p c #313E50", "a c #223C64", "s c #233D6B", "d c #2A3B65", "f c #2A3C6B", "g c #233E72", "h c #293E72", "j c #1D4265", "k c #1C426B", "l c #1B4768", "z c #1B4372", "x c #174977", "c c #274359", "v c #3B464D", "b c #3C4952", "n c #364758", "m c #3F5057", "M c #224164", "N c #23416A", "B c #254B6D", "V c #2A4464", "C c #2A426B", "Z c #2D4B6D", "A c #274865", "S c #234371", "D c #234C7B", "F c #2C4A71", "G c #254776", "H c #24517B", "J c #2E5575", "K c #324C69", "L c #334C74", "P c #39557B", "I c #3D597C", "U c #355378", "Y c #385160", "T c #414952", "R c #45525C", "E c #425A7C", "W c #505966", "Q c #4D616C", "! c #4F6067", "~ c #4F6270", "^ c #49657A", "/ c #50626E", "( c #566875", ") c #5A6A7A", "_ c #546674", "` c #1C5985", "' c #244E80", "] c #225381", "[ c #295B8A", "{ c #275887", "} c #2A5E92", "| c #3E5B82", " . c #325B8D", ".. c #345D95", "X. c #2B6595", "o. c #2D729E", "O. c #346489", "+. c #326593", "@. c #336A98", "#. c #38749C", "$. c #2A6188", "%. c #356CA1", "&. c #3573A2", "*. c #3C73A4", "=. c #3B7BAA", "-. c #3676A7", ";. c #2D74A0", ":. c #435D83", ">. c #4A6485", ",. c #4C6A8B", "<. c #486686", "1. c #467390", "2. c #526A8B", "3. c #526D91", "4. c #597583", "5. c #5A7594", "6. c #4177A6", "7. c #647586", "8. c #63788B", "9. c #627B9B", "0. c #657A94", "q. c #727F9F", "w. c #3881AF", "e. c #3D84B3", "r. c #3A8AB9", "t. c #3B96CE", "y. c #3D9ACE", "u. c #389AC8", "i. c #3A97D0", "p. c #3D9AD0", "a. c #3A9BD6", "s. c #3DA1CD", "d. c #3BA0D6", "f. c #4383B2", "g. c #428CBC", "h. c #4A8AB3", "j. c #4688B5", "k. c #4E8BB3", "l. c #668496", "z. c #71849A", "x. c #77919F", "c. c #6A85A3", "v. c #6E90AA", "b. c #7285A2", "n. c #768CA8", "m. c #7592A2", "M. c #7993A5", "N. c #7C93AA", "B. c #7494AB", "V. c #7797B3", "C. c #6095B7", "Z. c #7EA2BA", "A. c #488EC0", "S. c #429BCD", "D. c #4A9BC5", "F. c #4A9CCC", "G. c #4694C7", "H. c #4396D2", "J. c #439CD2", "K. c #459DD8", "L. c #489ED3", "P. c #4A9ED8", "I. c #4897D2", "U. c #519CCB", "Y. c #5599C6", "T. c #519DD3", "R. c #559ED5", "E. c #44A1CD", "W. c #4BA1CD", "Q. c #4AA1C5", "!. c #45A1D3", "~. c #44A2D8", "^. c #4BA1D4", "/. c #4CA3D9", "(. c #4CA9D4", "). c #4BA9D9", "_. c #47A8DB", "`. c #52A2CD", "'. c #5FA4CF", "]. c #52A4D5", "[. c #54A5D8", "{. c #55A8D6", "}. c #55A8D8", "|. c #59A4D3", " X c #59A4DA", ".X c #5AA9D6", "XX c #5CAAD9", "oX c #41A0E0", "OX c #66A1CB", "+X c #62ADDB", "@X c #6AA8D2", "#X c #66B0DC", "$X c #6AB2DD", "%X c #7AACD2", "&X c #77AED3", "*X c #82949E", "=X c #8393AB", "-X c #8B99AC", ";X c #839AB3", ":X c #8A99B2", ">X c #919DB3", ",X c #949CAE", "XN.3.C 4 5 J !.^.L.^.L.L.^.^.^.L.L.^.^.L.!.J.J.!.J.J.J.J.!.J.!.J.L.J.L.^.L.^.^.L.L.^.!.L.L.L.L.L.L.^.^.^./.^././.].^.^.^.^.^.^.^.^.^.^.^.^.^.^.^./.L.].]./.].].].{.[.[. X X XXX XXXXX+XXX+X+XXX+X+X+X+X#X+X#X#X#X#X#X#X$X#X#X#X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$XaX$X$X$X$X$X$X$X", "J.J.J.J.J.S.p.p.p.S.p.S.p.p.p.S.S.p.J.S.p.S.S.p.J.J.S.J.J.J.J.!.^.^.^./.].[.{.{.[.[.}.).{.].].].^.@XwX2XN.9.:.9 5 > A F.^.^.L.^.P.^./././.L.^.L.L.L.J.!.J.J.p.J.J.p.J.J.J.J.L.L.L.L.^.^.^.^.L./.!.L.!.L.L.L.^.L.^.^.(./.^.^.^.].^.^.^.^.^.^.!.^.L.^.^.^.^.^.].T.].].]./.].].{.{. X}.XXXX+XXXXXXXXXXXXXXX+XXX+X+X+X+X#X#X#X#X$X+X#X#X#X$X$X#X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X#X$X$X+X$X", "J.J.!.S.J.J.J.J.S.p.J.p.J.p.S.p.S.S.J.p.J.J.S.J.y.J.p.J.J.S.L.!.^.^.].].[.[.[.[.[.{.[.[.[.[.].`.OXqX3X;Xq.,.Z 8 5 > A S.^.^.^.^.^.^.^.^.^.^.^.L.!.E.J.J.J.p.J.p.p.J.J.J.J.!.J.L.L.L.^.!.!.!.^.!.L.L.L.!.!.!.^.^.^.^.].^./.^.^.^.^.^.!.^.^.!.^.^.^.!.L.^.^.^./.^.].R.].].{.[.]..X{.XX.XXX XXXXXXX+X+XXX+XXX+X+X+X#X#X#X$X#X$X+X$X#X#X#X$X#X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X#X#X$X#X#X$X", "!.!.!.J.J.J.J.p.p.J.J.S.p.S.S.J.J.J.J.J.J.S.J.J.J.J.p.J.J.J.L.!.^.].].{.{.XX{.[.{.}.XX}.[.[.].].7X4X:Xb.3.P a 8 6 > 9 r.(.^.^.^.^.^.^.^.^.^.L.^.!.J.J.J.p.p.J.p.J.p.!.J.J.J.J.J.L.L.^.^.L.^.K.L.J.J.!.J.J.!.L./.^.^./.^.^.^.^.^.^.^.L.L.!.^.^.^.^.L.L.^.^.^.^.].]./.].].[.].[.{.{. X}. XXXXX X XXXXXXXXXXX+X+X+XXX#X#X#X$X$X$X$X#X$X#X#X$X$X$X$X$X$X$X$X$X$X$XrX$X$X$X$X$X$X#X$X$X#X$X$X$X$X", "J.!.L.J.J.J.J.J.J.J.p.J.p.J.S.S.p.J.p.J.J.J.S.p.p.S.J.S.J.J.L.L.^.].].{.{.}.{.XX}.}.}.}.[.[.].@X4X>Xn.0.E L e w 0 > 5 r.L.(.^.L.^.^.^.]./.^.].L.L.J.J.J.J.y.y.p.p.p.J.J.J.!.J.!.L.L.!.^.L.K.L.L.!.J.J.L.J.L.L.^././.^.^.^.^.^.^.`.^.^.^.^.^.!.^.!.L.L.L./.^.^.^.^./.^.]./.[.].].{.}.}.XXXX X+XXXXXXXXX XXXXX+X+X#X+X#X#X$X$X#X$X$X$X#X#X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X+X$X$X", "L.L.!.!.!.J.J.J.J.S.H.a.y.S.S.J.H.D.J.J.J.J.J.H.p.S.S.S.S.F.F.!.].].]..X{..X}.XXXXXX}.}..X[.'.7X2X-X0.>.U M s w 7 < > &.!.^.^.^.^.L.^.].].^.L.L.L.J.p.J.p.J.p.y.p.J.p.J.J.J.!.J.!.L.L./.L.!.L.!.L.J.J.J.J.L.L.L.^.!././.].^./.L.L.].^.^.L.^.L.^.^.!.L.L.^.L.^.^.^.].].].].].].[.[.{.}.}. X}.}.XXXXXXXXXXXX+X+X+X#X#X#X#X$X$X#X#X$X$X$X$X$X$X$X$XaX$X$X$X$X$X$X$X$X$X$X#X#X$X$X$X$X+X$X$X#X#X", "L.L.!.!.!.J.J.J.J.p.S.S.I.K.d.u.&XPXJXUXJXJXJXJXJXJXUXJXJXJXJXJXJXJXKXKXPXPXKXJXJXKXPXPXPXJXgXyX,Xq.3.I C B w u 1 = = $.L.^.(.^.^.].].^.^./.^.!.J.J.J.S.p.S.p.S.p.J.J.p.J.J.J.J.J.!.L.!.L.L.L.L.L.J.J.J.J.!.L.L.^.^.^.^././.P././.^.!.^.W.^.^.^.^.^.^.^.^.^.^.^.`.^.^.]./.].].].{.].{.{.}.}.}.}.}.}.XXXX+X+X+X+X+X#X#X#X#X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X#X#X$X#X$X$X+X$X@X", "!.L.!.J.J.!.J.J.J.J.S.!.t.oXa.rXKXUXUXPXJXJXKXKXKXKXJXJXHXJXJXJXKXKXKXJXKXHXJXHXJXJXKXHXJXSXyX2XN.5.:.L j w w 7 < o o 9 W.^.^.^.].]./.].L.L.!.L.J.J.J.J.p.p.S.p.S.p.J.J.J.J.K.J.J.J.L.L.L.!.J.L.J.J.J.J.J.J.J.L.^.^.P.^.P./.P./.L./.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.].].].^.].{.].].].{..X[.}.}.}.XXXXXX+X+X+X+X+X+X$X#X#X$X$X$X$X#X$X$X$X$X$X$X$X$X$XkX$X$X$X$X$X$X#X$X#X#X$X#X#X+X#X#X#X", "L.L.L.L.L.L.L.J.L.!.K.p.L.y.S.GXUXPXPXJXHXHXLXLXLXLXLXLXHXHXLXLXLXLXGXHXHXHXHXHXHXHXHXHXHXgXtX>X9.3.L C w w 5 < # X O > g.^.[.].].^.^.`.].L.L.L.J.J.y.p.p.J.p.S.p.J.p.J.J.J.J.J.J.L.L.L.J.L.L.L.L.J.!.!.L.L.L.L.!.L.L.^.L.^.P.^./.R.^.^.^.^./.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.].].].].].].].].]..X}.}.XXXXXXXX+X+X#X+X+X+X#X$X#X#X$X$X#X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X#X$X#X#X#X#X#X#X+X+X", "L.L.L.J.L.J.L.L.L.L.d.!.F.S.L.PXHXHXPXGXFXFXFXFXFXFXFXFXGXFXFXFXFXFXGXGXFXFXFXFXFXFXFXFXmXyX,Xn.3.:.C s 8 0 = @ . O * B r.)./.^.^.].^.^.L.L.J.J.S.p.p.S.p.J.p.y.S.J.J.J.J.J.J.p.S.S.J.L.J.L.L.L.L.S.J.!.L.L.L.L.L.L.L.L.L.L.^.^.^././.^.^.].].^.^.^.^.^.^.^.{.^.^.^.^.^.^.^.^.].^.].].].[.].]..X{.{.}.XXXXXXXX+X#X+X+X+X$X$X#X#X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X#X$X#X#X$X#X+X#X+X+X", "K.J.L.L.L.!.L.L.L.J.~.S.T.L.!.GXLXGXFXDXBXBXBXBXBXBXBXBXBXBXNXBXBXNXBXNXBXBXBXBXBXBXBXNXrX2X;X9.<.F a 8 7 > X . & q #.D.!.].].].^.^.L.^.L.L.J.S.J.J.p.p.y.p.p.y.p.S.p.J.J.J.J.!.J.S.L.J.L.J.L.J.J.L.J.!.!.L.!.L.E.L.!.L.L.L.P.^./.^.].^.^.^.^.^.^.{.^.].^./.^.^.^.^.^.!.^.^.].^.^.].].].[.{.].].{..XXX}.XXXX+X+X.X#X#X+X#X$X#X#X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X#X#X$X$X#X#X+X+X+X", "!.!.L.L.L.!.L.!.L.L.L.S.P.S.~.ZXSXIXZXNXnXnXvXNXNXnXcXNXcXcXnXcXvXvXvXvXvXvXNXNXnXnXbXfXqX-Xn.2.L s w 5 2 O @ & 9 h.^.^.(.].].^.^.^.L.L.J.J.p.S.S.p.p.p.p.p.p.S.y.J.J.p.J.J.J.J.J.J.J.L.S.L.!.J.L.L.J.L.!.J.!.L.L.L.L.L.L.L.^.P.L./.].`.^.].`.^.^.].L.].].^.^.^.L.L.^.^.^.^.^.^.^.].^.].].[.[.{.{.{..X XXX+XXXXX#X#X#X.X#X#X#X#X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X#X#X$X#X#X$X#X#X#X#X#X+X+X#X", "L.L.L.L.L.L.L.L.L.J.!.!.K.^.y.ZXSXZXBXBXcXcXvXvXvXcXcXvXcXcXcXcXcXvXNXcXcXcXcXcXcXcXlXwX1X=X8.:.F a 0 = o X $ : h.^.^.(.[.[.]./.^.L.J.J.J.p.p.p.t.p.p.p.p.S.p.y.p.J.p.!.p.J.J.J.J.H.J.J.J.L.K.L.L.J.J.!.!.L.L.J.E.L.J.E.L.L.^.^.^.P.^.^.].L.^.].].].`.].].^.^.^.L.L.^.^.K.^.^.^.^.^.].].].].{.].[.{.}.XXXXXX+X+X+XXX#X#X#X#X$X#X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X#X$X$X$X$X$X#X$X#X#X#X#X+X+XXX", "P.L.^.!.L.L.^.L.!.L.W.J.!.L.I.FXIXZXZXnXcXcXvXvXvXvXNXvXNXnXzXlXcXvXvXvXvXvXcXcXcXnXsX4X:Xz.2.L a 8 , @ @ = p _ Y.].{.{.].[.].].^.L.J.S.p.H.p.J.p.p.p.p.y.p.p.p.y.y.p.S.J.J.s.p.S.L.J.J.J.J.!.!.L.S.E.E.L.L.L.S.L.L.E.L.P.L.L.^.`.L.R.P.].^.(.^./.].^.].^.).^.).!.W.^.S.(.!.L.[.`./.(.].].].].].{.{.{.XXXX+X.X#X+X#XXX#X#X#X$X#X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X#X#X$X#X+X+X+XXX", "L.L.^.L.L.L.L.^.L.L.!.!.!.L.L.VXGXBXBXBXnXnXNXNXvXvXcXvXcXbXrX7XNXvXcXNXcXNXcXNXnXlXwX1XN.0.:.e 8 , * O * n 8._ ].{.{.{.{.].{.^.L.J.H.p.p.p.p.a.p.p.H.p.p.S.H.J.J.K.p.L.J.S.d.~.K.J.p.I.L.P.H.I.L.^.L.J.L.I.L.L.J.E.!.J.K.P.^.L.L./.]./.L.^.]. XR.P.].[.T.|./.L.R./.E.^.L././.J.^.^.^.^.].].].].{.{.{.}..X.X+XXX.XXXXX#X#X#X#X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X#X$X#X$X+X#X#X+X+X+X+X", "L.P.L.^.!.K.L.L.L.!.^.!.L.L.L.DXDXZXBXnXNXvXvXcXNXnXvXvXCXuXX=X9.P s 0 = & n ;XM.8./ ].[.].[.{.].].^.J.L.p.y.i.i.p.i.u.y.y.p.p.y.a.J.S.S.K.S.H.H.L.J.!.p.S.L.J.y./.S.W.L.F.I.L./.a.J.L.L._.!.E.D.g.r.r.D.^.(.(.^.^.^.(.W.`.].).(./.`.R.|.T.^.]./.L.L.].T.^.^.^.].].].[.}.[..X}.XXXXXXXX+X+X+X+X#X#X#X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X#X#X#X#X+X#X#X+X+X+X#XXX", "^.L.L.^.!.^.^.^.^.!.J.!.!.L.J.ZXSXFXBXNXnXcXvXcXvXbXCXgXuX>X5.L 1.lXNXNXNXNXNXcXuX7X=Xq.,.C 0 2 o & : N.eXm.7./ ].{.].{.].].^.!.H.p.t.t.i.i.i.i.y.y.d.t.p.p.G.} r k e k S k s N N e !.!.~.!.D.x S N k G +.W.!.!.P.J.U.f.] C N h s N .k.^.].+.r N N [ ].].R.`.[ N k z @.D.W.^.].L.L.^.^.].^.].].[.{.{.{.XX{.XXXX+XXX+X+X+X#X+X#X#X$X$X$X$X#X$X$X$X$X$X$X$X$X$X$X#X$X#X#X#X+X+X#X+X+X+X+X+X+X", "^.P.^.L.^.^.^.!.^.!.!.J.L.L.J.ZXFXZXZXNXnXcXcXcXbXCXgXyX>Xb.E C I rXNXNXNXcXNXcXwX:X=X0.U u < + O = l.jXeXm.7./ [.{.{.].].^.L.!.J.p.y.y.i.i.i.i.i.y.p.p.S.J.G.[ e A M s j S N s V s L.H.L.!.j.l e s V a G D.!.!.R.L.e.x j s k k B s M x D.{.Y.D s f k h.[.[.e.G a M ' k.^.(.(.L.].!.^.^.^.^.]./.].[.{.[.{.{.XXXXXXXXXX+X+X#X#X#X$X$X#X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X#X#X#X#X+X+X+X+X#X+X#X", "^.L.^.^.^.^.(.!.^.^.W.J.J.L.L.ZXDXZXVXnXNXnXbXjXgXuXtX-Xc.3.G a V c.cXvXMXvXbXkXqX:Xq.<.M 4 * X : ^ lXxX9Xm.4._ [.{.].].].^.!.J.J.p.y.i.i.i.i.i.y.i.y.p.J.u.G.[ k j d s k N S s s N y.!.K.L.@.k s B l k z w.!.^.!.^.] s C k =.6.H e C k %.`.L.e.l f k D U.U.H w k N e.[.).!.].]./.^.^.L.^./.].`.].{.]..X{..X{. XXXXX+X+X+X+X+X#X#X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X#X$X#X#X#X#X+X@X#X#XXX#X#X", "/.^.^.!.!.^.!.^.^.!.W.!.L.L.J.FXDXVXBXBXMXbXuXwX3X1XM.0.2.U e w d E aXbXMXMXvXuX>Xn.5.U 8 - O $ n pXvXhX4Xm.7./ ].].].^.^.^.J.J.p.t.y.y.i.i.i.y.y.y.y.y.J.a.y. .f d x e.S.S.S.J.J.s.!.L.P.T.] N C ' j f h X.L./.F.(.N C f z D./.g. .U #.=.].[.].+.k f k =.*.k C h ..[./././.R.^.!.!.^.^.^.^.^.].].].].].{.{..XXXXXXX+XXX+X+X#X+X#X#X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X#X#X#X#X#X+X#X+X.X#X+XXX", "^.!.^.F.!.W.^.^.!.!.!.L.J.L.J.ZXSXBXBXnXpXV.v.b.9.5.,.| F B w u u Z V.NXvXNXjXqX:Xb.>.f > # @ t Z.cXzXhX9Xm.7./ ].^.`.^.!.!.J.J.p.p.y.t.i.y.i.a.a.p.i.y.y.a.p.{ N N z +.#.*.o.o.&.f.~.E.~.j.j N s %.$.C a S D.].^.^.H j f s ' @.-.D.L.].L./.[.^.D.D h j S s c z x R.].].^.].].^.^.^.^.^.^.].]./.].].[.[.}.}.{.XXXXXXXX+X+XXX+X#X#X$X#X$X$X$X$X$X$X8X$X$X$X$X$X$X$X$X$X#X#X#X#X#X#X#X#X#X#X+X", "L.^.^.!.^.^.!.!.L.L.L.!.J.!.L.IXDXDXVXBXhXB.>.U C a a s a M s u w F 3.cXNXMXfX2X:X9.L 3 - . = 8.zXcXzXhX4Xm.7./ ].^.^.L.!.L.J.y.p.y.y.y.y.a.y.y.y.y.a.t.y.p.p.{ N N a k e M M k l @.H.!.!.@.S N k g.=.e s S =.L././.#.z f s s S k k [ 6..X^.]./.XX6.r A s C j r j.`.].].^.].^./.^.^.^.^.^.^.].].].].[.{. X}.{.XX XXXXXXX+X+X+X+X#X#X#X$X#X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X#X#X#X#X#X+X#X#X#X#X", "^.^.L.^.^.!.^.L.L.^.J.J.L.p.J.ZXDXFXVXNXNXMXrX5.Z 8 8 8 u w a M a s E rXNXlXwX>Xb.>.a * O $ Y jXNXNXcXhX0Xm.7.~ L.^.L.!.J.J.J.J.p.p.y.y.a.y.p.p.p.p.p.y.t.J.y.[ N s N S s s s s g -.L.!.J.' N f z E.D.x k j O.^.].^.R.-.z N N s M M M G =.{.].}././.+.M S s s +..X`.].].^.].^./.]./.^.^./.].].].]./.].|.[.}.}. XXXXXXXXXXX+X+X+X+X$X#X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X#X$X#X#X#X#X#X#X#X+X#X", "^.^.^.^.^.L.K.L.!.!.J.J.J.J.L.FXDXZXVXNXnXNXcXlXl.9 5 5 7 u e e w s | v.cXdX3X:X5.F 0 # O t 6XNXcXNXvXhX0Xm.7.~ L.L.!.!.J.J.p.p.p.p.p.H.p.J.p.p.p.p.p.S.t.p.t.{ N N s +.&.;.;.*.%.r.L.!.g.S e C F &.&.D N s G D.].]./.^.].=.+.D G f s a z `.].R.[.].Y.l N s l Y.(.].].].].].].].^.].].].^.`.].].].[.]..X}.}.{.XXXXXXXXXXXX+X+X+X+X+X#X#X#X$X$X$X$X$X$X$X$X$X$X$X$X#X$X$X#X$X#X#X#X#X#X#X#X#X", "L.L.L.L.L.L.L.L.L.L.J.J.J.J.J.ZXDXFXVXnXNXMXNXcXnX5.t > y 8 w w w F P 5.pX6X=Xq.>.9 2 . : 8.NXvXNXNXvXhX6Xm.7.~ J.!.!.J.J.J.J.p.H.y.p.p.S.p.J.p.J.p.p.p.p.p.y.[ N N e e.L.p.J.L.L.L./.L.@.s j M C k S j f N s =.^.G.h.=.&.g.R.}.f.D j f z g.(.{.].].{.s s s s .X!.].].].]./.].R./.]./.].].].].].]..X].}..X[.XX.XXXXXXXXXXX+X+X+X#X+X+X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X#X$X$X#X#X#X$X#X#X", "^.L.^.^.L.!.L.!.L.L.J.J.L.J.J.FXSXZXBXBXnXNXnXnXnXnX5.i , 1 8 a s G :.,.v.z.q.:.M > + & n jXvXNXNXNXvXhX0Xm.7.~ J.J.L.L.J.J.S.p.p.S.p.S.p.J.p.p.p.p.p.J.t.K.y.[ N N z e.H.P.P.J.W.E.!.^.H s l M N s s j f N e { F.e.j C s } ^.(.'.{ k f G g.(.}.{.].].N N s k ].).].^.].^.].]./././.].].].].].].].]..X].[.[..X.XXX XXX XXX+XXX+X+X#X+X$X+X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X#X$X#X$X#X#X#X", "L.^.L.L.L.J.J.L.J.L.J.J.J.J.J.FXDXAXVXNXnXNXvXvXNXnXnXv.A 5 y 7 w C P :.2.3.>.Z 3 % @ t 6XcXcXvXNXNXvXhX0Xm.7.~ J.L.L.J.J.!.J.J.J.S.J.J.J.p.J.J.H.S.p.S.y.J.p.[ s N d F S s S e s k r.g.N N k l [ } [ [ F s k S Y.D.k s f C @.h.1.z k s ' .X[.{.XX].[.j k M k `.].^.].].].].].].]./.].].].]..X].].{.{.}..X XXX}.}.XXXXXXXXXXXX+X+X+X#X#X$X#X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X#X$X$X$X$X#X$X#X$X", "L.L.L.!.!.J.J.!.J.J.!.L.L.p.J.ZXDXZXVXNXnXNXvXvXvXNXcXnXN.K y y 9 M F U E I B 9 , O ; 4.cXcXvXNXNXvXvXhX6Xm.7.Q J.L.J.!.!.J.J.J.J.J.p.J.J.J.J.p.S.p.a.J.p.K.p.[ s N l k N k j A s k e.%.a N N +.L.^.!.|.} M l s 6.^.*.z N M N e S S l S h.].[..X]. X Xk k N N |.R.].].]./.]./.].].^.].].].].].].{.{..X}.}. X}.XXXXXXXXXX+XXX+XXX+X+X#X#X#X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X#X$X#X$X#X$X$X", "L.L.!.!.J.J.J.J.J.!.J.!.L.L.L.ZXDXFXVXnXnXNXvXvXNXNXNXNXcXv.K y 7 9 a B C s 8 > o + n kXvXNXNXNXNXNXnXhX0Xm.7.Q L.E.!.L.L.L.L.L.L.J.J.J.J.J.J.p.J.S.J.J.J.L.G.} z N s a s M M s l s f.] k s S *.`./.^.`.6.k s l ` Y.R.=.] l l s s N X.A..X].{.[.[.XX|.x G N z Y.]./.].].].]./.].]./.{.].{.{.].].[.{.XX}.}.XXXX}.XXXXXXXXXXXX+X+X+X+X+X#X#X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X#X$X#X$X$X$X#X", "^.L.!.!.!.L.J.!.J.L.J.J.J.L.J.FXFXZXBXBXnXnXvXvXnXvXcXNXvXcXl.V i a w e s 9 5 o # t N.cXNXNXvXNXvXnXvXhX0Xm.7.Q L.L.L.L.L.!.L.L.L.L.J.J.J.J.J.J.J.J.S.H.!.p.K.S.S.S.!.J.J.J.!.!.L.K.].F.W.`.F.^._.~./.L.(.W.(.^.^.[./.].`.U.h.f.g.Y.|.XX.X].{.{.[. X{.`.'.'.`.}.).].].^.].].].].[.].].{.[.].{.].[.}.}.XX}.}.}.XXXXXXXXXXXXXXXX+X+X+X+X#X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X#X$X$X#X#X#X#X#X#X", "!.!.!.!.L.L.J.J.!.J.F.!.L.J.J.ZXDXZXZXNXnXnXvXvXvXvXvXNXNXNXcX5.V 7 u w 8 3 2 # ; ^ lXNXNXNXNXNXvXNXvXhX7XM.7.Q L.!.L.L.!.J.J.L.J.L.J.!.J.J.J.J.J.p.S.S.!.p.J.p./.J.J.L.L.F.J.!.L.L.L././.L././.P.R.[.P././.^./.R.R././.^.].{.(.).}..X{.].{.{..X[.[./.XX].].).!.R. X].].].[.].].[.[.{.].].[.].[.}.}.}. X{.{..X{..X{.XXXXXXXX+XXX+X).+X+X+X#X#X#X#X$X$X#X$X$X$X$X$X$X$X$X#X#X$X#X#X#X$X$X#X$X", "L.L.L.L.L.L.L.L.L.!.J.!.!.J.L.FXIXZXBXnXNXnXvXcXvXvXNXNXvXNXcXjX>.u 1 8 7 < # $ n 9XNXNXNXvXNXcXNXvXzXjX6Xm.7.Q !.!.L.L.L.L.L.J.L.L.J.!.!.J.J.!.J.J.!.E.J.P.L.J.I.L.!.!.J.J.L.!.!.!.^.^.^.L.L.^.L.F.!.^.].T./.]./.^.].R.].].].{.[.].(.{..X{.[.[.[.[.}.].[. X[.}.}.`.].].].].].[.[.{.].].{.{.{.[.}.}..X.X.X{.{. X{.XX XXXXXXXXX+X+X#X+XXX+X+X#X+X+X#X#X$X$X$X$X$X$X$X#X$X$X$X#X$X#X$X#X#X#X#X", "L.!.L.L.L.L.!.L.L.!.L.J.L.L.L.DXDXZXZXnXNXnXnXcXvXMXvXNXNXNXNXvXsXK i 3 < * # ; 0.bXvXNXNXNXNXNXvXvXzXhX6Xm.7.Q !.^.!.^.L.L.L.L.L.L.J.J.J.!.L.J.!.J.!.L.!.S.L.!.!.!.!.!.J.J.L.L.L.K.(.^.^./.L.!.(.E.].^.^./.^.L.).^.].`.^.{.{.[.{.].).[.].[.].[.[.].(.[. XR. X].(.{.].[.[.[.[.{.[.].].{.[.{.[.[. X}.}.}.[. X{.}.}.}.XXXXXXXXXX+X+XXX+XXX+X+X+X#X#X#X#X$X#X$X#X#X$X$X#X#X#X#X#X#X+X+X#X#X+X#X", "L.L.L.L.!.L.L.L.L.L.L.L.L.L.H.DXDXZXBXBXnXNXNXcXMXvXNXNXvXNXNXvXnX7XV 7 = # # n rXnXNXvXNXvXvXvXvXvXzXjX6Xm.7.Q L.!.L.!.L.L.J.L.!.L.!.L.L.L.J.L.L.L.p.!.L.J.L.E.E.E.!.E.L.L.E.!.E.E.J./.P.R.R.^.!.^.^.`.].[.].].].R./.]./.].].].[. X[.[.].[.[.].].].].].{.].}.[.(.{.[.].[.].[.].].{.[.[.[.{.}.[..X}.}.].{.[.{.}.}.{.XX XXXXXXXXXXX+X+X+XXX+X+X+X#X#X#X#X#X#X#X$X$X$X#X#X#X#X#X@X#X#X#X#X#X+X", "L.^.^.!.!.^.F.L.W.^.^.!.!.L.L.ZXIXZXZXNXNXNXvXvXMXMXNXNXcXvXvXNXNXNXv.i * @ : l.NXcXcXcXNXNXNXNXvXNXvXjX0Xm.7.Q !.!.^.L.!.L.L.L.L.L./.L.!.!.L.L.L.L.L.L.!.!.^.L.F.L.T.L.L.L.L.L.L.L.L.L.L.L.)./.L.^././.^.L.[.]./.).].].].[.[.}. X.X/.].].[.[.].].{.].].}.}.{.{. X X{.].[.[.].[.{.].]..X}.}.}.[..X}.{.[.{.[.[.{.}.}.}.XXXXXXXX+XXXXXXXXX+XXX+XXX+X+X+X+X#XXX#X#X#X#X#X#X#X#X#X#X#X#X#X#X+X+X", "^.K.!.^.L.W.!.!.!.!.^.K.L.L.L.ZXSXZXBXnXnXNXvXvXNXvXMXvXNXNXNXNXNXNXnX>.= $ n dXNXNXcXcXNXNXNXNXvXvXzXhX0Xx.7.Q L.^.L.L.L.L.L.J.L.!.!.L.K.L.!.L.L.L.^.L.^.L.L.L.P.P.J.!.!.!.L.L.!.!.L.L.E.!.W.!./././.^.].].^.^.].R.(.[.[.].].].^.(.|. X[.].].].].].^.}.^.).[..X}.}.{.[.{..X{.[.{.[.].{.}.}.[.XX X}.{..X{.{.}.{.XX}.XX}.XXXXXXXXXXXX+X+XXX+X+X+X+X+X#X#X+X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X+X+X", "^.!.!.^.L.^.W.L.L.^.L.!.L./.L.FXDXZXVXNXbXNXNXvXvXMXNXNXvXNXvXNXNXNXnXsXc t c.NXNXNXNXcXNXNXNXNXvXvXzXhX6Xm.7.Q ~.L.L.!.!.L.E.^.L.L.!.L.L.K.L.L.^.L.^.^.^.^.^.^.^.L.!.!.L.L.L.L.L.J.!.!.L.L.!.^.].^.^.^.^.^.].].].].].].].].].^.].]./.].[.].].].].].{.{.{.].].].{.{. X[.[..X.X|.].[.[.]. X}.}.}..X X].]..X.X}.XX}.XX XXXXXXXXXXX+X+X+XXXXX+XXX+X+X+X+X#X#X#X#X#X#X#X#X+X#X#X#X+X+X+X+X#X+X+X", "^.!.^.!.!.^.!.^.!.^.L.!.L.L.L.FXDXZXBXBXnXNXNXNXMXvXNXvXNXNXNXNXNXNXNXnX c #226221", ", c #1C426B", "< c #1C4267", "1 c #1C4572", "2 c #054D6F", "3 c #3B4443", "4 c #344E4F", "5 c #22416B", "6 c #244268", "7 c #224271", "8 c #264775", "9 c #325C7C", "0 c #2C5378", "q c #316976", "w c #2B6351", "e c #463A37", "r c #4D352D", "t c #673930", "y c #5A2718", "u c #463B43", "i c #513C4E", "p c #4F3766", "a c #474439", "s c #574539", "d c #505130", "f c #516D2E", "g c #674838", "h c #725134", "j c #6F6E33", "k c #526118", "l c #474746", "z c #495848", "x c #554847", "c c #57544A", "v c #575655", "b c #4D4D54", "n c #42587B", "m c #50506E", "M c #516A4E", "N c #52696D", "B c #674844", "V c #685648", "C c #675955", "Z c #764A44", "A c #775547", "S c #765A57", "D c #6A4B54", "F c #6C5769", "G c #786357", "H c #6E6B4E", "J c #666767", "K c #716F71", "L c #2E3495", "P c #3B5785", "I c #305688", "U c #376285", "Y c #3B6995", "T c #3A7795", "R c #2E678B", "E c #3B77A5", "W c #3644A9", "Q c #415585", "! c #44568A", "~ c #415883", "^ c #43588A", "/ c #495589", "( c #4E5190", ") c #4F51AD", "_ c #436C97", "` c #447798", "' c #566D99", "] c #466684", "[ c #467AA7", "{ c #4E70AB", "} c #6D578F", "| c #655BB3", " . c #6F6D8F", ".. c #726CB1", "X. c #5457CC", "o. c #5558E7", "O. c #5B66D3", "+. c #5D63EA", "@. c #5C63F3", "#. c #6A5DF1", "$. c #6D67D3", "%. c #6264E6", "&. c #6265E9", "*. c #6768EB", "=. c #6666F5", "-. c #7469EC", ";. c #615DCB", ":. c #4338A0", ">. c #008302", ",. c #0E8516", "<. c #37BA1D", "1. c #34A326", "2. c #00DB00", "3. c #0BDC04", "4. c #17D909", "5. c #1CC90E", "6. c #00E300", "7. c #00EA00", "8. c #0BE503", "9. c #10E804", "0. c #26CB0A", "q. c #25CC09", "w. c #24D404", "e. c #25DA04", "r. c #26D70B", "t. c #26D312", "y. c #37C819", "u. c #2CCE13", "i. c #29D317", "p. c #539330", "a. c #51B329", "s. c #6C8F36", "d. c #79A93A", "f. c #68B230", "g. c #4FAD1B", "h. c #718B47", "j. c #719173", "k. c #559C55", "l. c #42C61C", "z. c #4AC423", "x. c #74C836", "c. c #3EA261", "v. c #3B84B2", "b. c #3B829E", "n. c #258CC9", "m. c #298ECA", "M. c #238CC6", "N. c #2C90CC", "B. c #2B96CB", "V. c #3293CE", "C. c #3B98CE", "Z. c #3896CD", "A. c #3D9AD0", "S. c #3695D0", "D. c #2F93CD", "F. c #4E809B", "G. c #4786AC", "H. c #4A8AB3", "J. c #5693B9", "K. c #528BB6", "L. c #7194A2", "P. c #4A97C5", "I. c #439DD2", "U. c #489ED4", "Y. c #569AC6", "T. c #539DD0", "R. c #4BA1D4", "E. c #4AA3D6", "W. c #58A3CC", "Q. c #53A5D5", "!. c #55A6D8", "~. c #55A8D6", "^. c #55A9D8", "/. c #5AA5D2", "(. c #5BAAD5", "). c #5BAAD9", "_. c #5AA5D9", "`. c #56ACD8", "'. c #64A3CC", "]. c #62ADDB", "[. c #65AAD6", "{. c #65B0DC", "}. c #6AB2DD", "|. c #6AB5D9", " X c #71B4DE", ".X c #76B7DB", "XX c #75ADD3", "oX c #6AB4E1", "OX c #73B6E0", "+X c #75B8E1", "@X c #7ABAE1", "#X c #79B6E2", "$X c #66ACE0", "%X c #62A0CE", "&X c #74C0E3", "*X c #8C302E", "=X c #8B5536", "-X c #9E6732", ";X c #875848", ":X c #8F574D", ">X c #866657", ",X c #976858", " k k k hXj.hXhXhXj.hXNXhXj.hXhXcXjXM d.f.f.f.f.f.f.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.u.] / ! %XZX< 6 6 6 ZX{.~.~.Q.Q.Q.Q.~.!.", "N.m.m.m.N.m.m.D.V.FXJX1 6 < , JXAX^ / Q 4.r.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.eXcXd.d.d.d.d.zXrXcXzXeXqXqXwXrXrXrXxXd.gXd.d.d.zXrXf.7.6.7.7.6.6.6.2.7.6.7.7.6.7.6.d.rX9X} ) ( W ) W D NXbX2XmXgXd.d.d.d.lXwXmXqXqXqXqXmXeXrXrXrXrXrX>X>XnXrXeXrXrXeXrXqXmXqX9XrX3Xc a LXF u NXNX=XK BXkX8XcXBXzX8XX>XjXd.d.d.gXd.lXwX9XnXlXd.,Xx r ,XkXr -XbX=XjXBX,X8XvXBX1X8XkXBX,X0X9.p.S t.2.2.2.2.2.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.e.e.w.q _ ^ v.J. X.X.X XW.I.~.!.Q.Q.Q.Q.!.Q.", "m.m.m.m.N.N.N.N.N.N.DXFXFXDXFX.XV.! / Q e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.a.6.2.3.4.2.u.yXxX5.8.y.yXyXf.7.6.6.6.2.2.2.2.2.3.d.y.6.2.2.2.2.2.2.2.2.2.2.2.2.2.2.8.>XB m m X.=.=.q * r y :XzX7.2.6.2.2.6.cXeXqXeXqXeXxX7.6.6.6.6.7.H H 7.6.6.6.6.6.7.jXaXtXt.9.h.l g 2Xj g X r 8X=Xs ;X8X-Xx A 8X2Xs h 8Xr.1.S t.2.2.2.2.2.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.N ^ ^ b.H.Q.W.W.~.P.Q.Q.Q.!.Q.!.~.~.~.", "m.m.m.m.m.m.m.N.N.N.N.N.V.N.N.N.B.^ ! n w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.mXu.i.rXrXy.4.d.5.t.eXa.d.d.z.qXrXa.6.2.2.2.2.2.2.6.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.8.y.H b J l ; [ =.X.D s.s.2XzX6.2.2.2.2.4.xXeXqXqXqXqXf.2.3.3.2.2.6.h.H 6.3.4.3.2.2.2.jXdXaXzXH 6Xc ;XxX7.p.CXb h h h -X8XhXgXgXhXgXgXhXgX6.a.F t.2.2.2.2.2.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.N ^ ^ ` H.P.Q.^.Q.~.~.Q.Q.~.~.Q.Q.Q.!.", "m.m.m.m.m.N.N.N.N.N.N.N.N.N.N.N.N.^ / ~ e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.eX<.3.lXlXt.6.6.6.4.lXt.6.6.3.lXlXu.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.3.4.u.xXrXS l M D * = { =.sXd h 2XlX6.2.2.2.6.zXrXeXeXeXrXzX6.6.p.p.3.2.6.p.H 7.jXdXkX8.2.3.a.aXpXgXa.3Xv x h i.s.J a . - K C A 9.8.7.7.9.7.6.7.7.p.S t.2.2.2.2.2.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' P ^ ` H.J.Q.~.~.Q.Q.Q.Q.Q.Q.Q.Q.Q.~.", "m.m.m.m.N.N.N.n.N.N.m.N.N.N.N.V.N.P ! ~ e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.mXz.6.6.6.2.2.2.2.2.6.2.2.2.2.6.6.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.4.cX,XC S S v 3 . . a : m ] x Z D F jX3.2.2.2.6.Xl Z MX:X y o e A 1Xs y.4.2.2.2.2.2.2.6.a.D u.2.2.2.2.2.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ! ^ _ H.P.W.!.Q.Q.Q.Q.~.Q.Q.Q.Q.Q.!.", "m.m.n.m.n.B.N.N.m.N.m.m.m.N.N.N.N.^ ! ~ e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.nXa.6.2.2.2.3.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.3.mXg s e e : > j k : : q | | w = : 3XlX2.2.6.t.H ; > X g >XH 7.2.<.a.2.2.6.s.H 6.6.7.6.2.2.6.4.8.7.p.p.7.p.b x S D - s a d 3 - l C >XbXu.6.2.6.4.9.h.S 4.2.2.2.2.2.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.' ! ^ Y G.J.T.!.!.Q.!.Q.Q.Q.Q.~.Q.!.^.", "m.n.n.m.n.n.m.m.m.m.m.m.m.N.N.V.B.^ ! n w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.cX4.2.3.2.u.eXl.8.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.8.y.eXh z.cXu > >.j 1.: > T =.=.q >.: 3XxX4.t.cXrX>X: j.t =X,XH r.2.2.6.2.2.7.M H 7.p.p.9.2.3.jXaXaXzXu.g.3.h.l g h.A g g e a l s -XX v h mXy.9.p.h ;Xg C a.4.3.2.2.2.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.' ! ~ Y G.P.T.!.Q.!.Q.Q.Q.Q.Q.Q.Q.~.^.", "m.m.n.n.m.n.n.m.m.m.m.m.m.N.N.m.N.^ ! ~ e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.y.7.u.rXy.4.lXa.mXz.6.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.3.2.2.6.u.xXmXnXh d.j . f w c f z > : { #.w >.: S G J G S >XC ; UXk.h ,Xv G h.r.2.2.2.7.s.H 7.<.1.3.4.lXsX@.@.aX4.6.d.6Xl A 9.p.NXMXs 3 CXb r k.K k 5X5X5X=Xg.f.Z 3 h j h 5.6.2.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ! ~ T H.P.W.!.Q.~.^.!.^.!.~.Q.~.!.Q.", "m.m.n.m.n.m.n.m.n.m.m.n.m.m.N.N.N.P ^ ~ e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.a.6.q.lXu.6.7.4.lXu.6.2.3.3.3.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.4.bXf.4.xXmXrX9X,Xl u V b b e s g l : >.U =.w >.: @ 3 y x X @ X o o X e . . D G h.r.8.4.H H 8.6.8.1.H yX-.@.+.pXcX7.lX6Xl V 9.p.-X8Xt 3 J a M k.d 0XwX0X2Xj lXg . p.f.:X5.2.2.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ! ~ ` G.P.W.`.~.~.~.Q.~.~.~.~.Q.^.~.", "n.m.m.n.m.n.n.m.m.m.m.m.m.V.N.N.N.^ ^ Q w.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.mXy.7.t.mXa.8.2.6.2.2.t.wXwXwXz.6.2.2.2.2.2.2.2.2.2.2.2.2.2.3.lXa.xXrX=XD B x - X X g v d z.j l > >.T =.w >.: p | ;Xy 6XL . z v K X K XC . u 3 - j hX=X5.2.2.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ! ^ _ H.P.W.`.^.(.!.^.Q.~.!.!.Q.!.!.", "m.m.m.n.n.n.n.n.n.n.m.m.m.m.m.N.B.^ / n e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.qXz.6.5.xXrXqXeXl.2.2.4.cXyXyXf.6.2.2.2.2.2.2.2.2.2.2.2.2.2.2.7.6.jXqX*X6X( . x v J -XS r gX=Xs > >.T =.q > d @ :./ . >XXe h ;Xu.2.2.8.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.q.' ^ / Y H.P.W.~.^.(.~._._.~.!.^.~.!.^.", "m.m.m.m.n.n.n.n.n.n.n.n.N.N.N.n.m.^ ^ ~ e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.eXz.6.2.2.2.6.6.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.5.5XG H H H H H G G r r - b e ; m o.( ;.) o.( | -.-.=.w = K IXkXP =.=.=.U : Z j jXe b l u X :.W r z.gXB c A J V S C G H M : z G H C l ;X4XV e a l l G 1Xo M k.; a j gXg C eXMX5Xp.f.:X5.2.2.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' / ~ _ H.P./.^.^.(._.^.(.^.^.^.~.~.~.", "m.m.n.n.n.n.n.n.n.n.n.n.n.N.N.N.m.^ ! P w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.cX5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.t.eXD . x r X @ y u . : . * = ] =.R : p m i i w w { =.{ m M CXJ ( =.&.=.q > ;Xd h e - a - X % F @ s.jXr - LXv x V 3 o - x - l 3 l . V Z B a g s a . r k r e r r x h =X=Xj gXh 5.2.2.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.' ^ ~ ` H.J./.^._._._.(.^.^.)._.^._.~.", "m.m.N.n.n.n.n.n.n.n.n.n.n.m.m.m.N.^ ^ n w.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.z.7.6.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.t.qXC B LX3X% | *X. z IXk.= w +.Y = > p | =Xe ; * X ) =.' X . l b ;.=.Y ,.> C S D D ; k.,.% BXNX, * - l e 6X1X. J v o J K ; l K v X f w ( m | | ( v } ( ..| ..} b | | | ) ) | ..:.} 2Xl.2.2.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.' ^ ! _ G.P.W._._.).^.).)._._.(.~._._.", "n.B.N.n.n.n.n.n.n.n.n.n.n.m.m.m.N.^ ! n e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.y.t.qXy.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.u.eXD e aX:X& ) m - b sXp.0 @.pXzX,.; % ) n e @ ( X ) =.;.N - l o ( =.w > M X s e e > f s.7 W W 2 >.> v . r r X J C k.k.; u N v r 4 { ;.v ( ' n v ( m ) ' ( n m ' ( } ( ' ' .| -.pXwX4.2.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' / Q ` G.Y./.).).).).(.).).^.).^.^.^.", "N.m.m.n.m.n.n.n.n.n.m.n.N.m.m.m.N.^ ^ ~ w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.l.4.zX<.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.3.zXS . a e . @ @ x l X X / ' G ,Xz z @ @ @ l @ W L D $.=.( c L.M ( =.( VXCX z.jXi l * * * 4 & * ; k d * a o s r t r s h c h d r r r jXF.pXsXl.6.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ! / _ H.J.W.).).].(.).).).^.^.).^._.", "n.N.n.n.n.m.n.n.n.m.n.n.n.N.m.m.n.^ ! P e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.y.6.6.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.6.5.S e x e X d a * : n ;.: j ,Xs.G : j f : z @ & = k sX@.;.D UXj.^ =.( CXJ d.hX- 4 : >.> 1Xv o BXi B e 1X6Xt z : = f G J jXMXfX .z : = - k.=Xr iXy f gXt d gXg C H 5Xh gXt h t.7.d.pXbXy.8.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.' ! Q _ G.W./.).).).).).].).{.^.).)._.", "m.B.B.n.n.n.m.n.n.n.n.m.m.m.m.m.N.! / n w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.a.6.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.6.y.C i aX3Xo h = w *.) d h s.7.9.k s y = > w > >.k m n | ) | ) ) =.0 * - X i e ; z > >.* 6XG X J r . l a e u : = > ; r H u.kXdXX.: >.: ; j.j.M j.d g k g h f t 3 a :Xh d r B y.6.y.tXpXpXxXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.' ! Q ` G.J./.].).].].].].).].(.{.^.(.", "N.m.m.m.n.m.m.m.n.N.m.m.m.m.m.m.N.^ ^ 9 e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.bXu.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.4.cXbXC B aX:Xy B h 0 *.{ d d.=Xp.7.9.m ) =X* >.z = = M IXK % =.=.*.*.-.{ 4 l v . l y e z : ; X r y h X . l 3 l l ; * 1XJ X V X. m ) .s.;Xd N sXn l @ . v b b e s.lXg v A f lX;XqXxX,XZ 3X4.2.7.l.tXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ^ Q _ G.Y.'.].`.{.).{.).].).{.].].).", "m.N.m.m.m.m.m.m.m.N.m.m.m.N.N.N.N.^ ^ n w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.nXa.6.2.6.2.6.2.2.6.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.y.C . s e l z >X} ( 4 z e V V Xx @ @ B >Xb D ;Xa . X w Q ) *.%.%.*./ CXH o :.( * >.= : b K a . l N v e l J V . ( ( @ ( -.j.9.s./ .NX8 K J X a - t X u e . C S e e s eXr.d.2XZ i.2.2.6.y.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.' ^ / _ K.J.[.|.{.{.{.$X$X).].).).].].", "m.m.m.m.N.m.m.m.m.m.m.m.m.N.N.m.N.^ ! n e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.qXqXxXxXxXxX4Xy.u.xXa.6.6.6.2.2.2.2.2.2.2.2.2.6.t.xXC d z.Xh p.f i r @ . u : : = > > > > > = > : l UXkX0 =.%.%.*.) ( ! L :.:.: >.>.> l X e a d X X a ; > :.X.O.q D K fXe.8.s.L W ( L ,X1X. e p.gXg v H h.>Xl C ,X6XrX9.f.tXZ t.2.2.2.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' / ! ` H.W.(.{.{.{.].{.).).].{.].].].", "N.m.m.N.N.N.m.N.m.N.m.m.N.N.N.N.m.^ ! ~ w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.s..>.= >.: b BXp.I *.%.%.%.*.=.=.=.;.%.O.T R N m | | N v ;.| } w O.O.q _ h.K x ;XH j 6X- * < o e X u s.gXt G r.7.z.G G xXzXjX9.f.6XZ t.2.2.2.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.' ^ / _ H.Y.'.{.{.].].].$X[.].).).{.$X", "N.N.N.N.N.N.m.N.N.m.N.N.N.N.N.N.B.^ / 9 w.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.4.k.LXUXh.xXeX9XeXeXnXeXrXeXeXyXf.6.2.2.2.2.2.4.xXeXqXC Z 2Xm i m g h r r r 3 y 3XsX@ f f VXCX* = = > ; = : X o o L *.*.%.%.%.%.%.*.) ) @.=.=.' | O.q M M q q w v q > ; BXNX! 3 J b g 6X; J j.* J K ; 3 a a . C 4.2.7.s.S y.7.6.2.z.3XZ t.2.2.2.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.' ! n ` K.Y.[.].].].}.].].}.].].].].].", "N.N.N.N.N.N.N.N.N.m.N.N.N.V.N.V.N.^ / n e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.M VXx.p.5X5X5X4X5X5X5X4XmXeXbXy.6.2.2.2.2.2.2.u.eXnXC 4XaX#.( = k.; . M J @ . f c VXz ; j d BXVXd f i $.( P =.*.%.%.%.%.%.*.) | .q q M q = = ; w > : : 4 > * 2 W ( L l J C h ,X. k.k.o k.k.; C ,X,X ; d : ; r s ; ; - . u : : < < 4 d . . t C @ . f h h s . G eX>XH ,XV f =X0XC cX3.2.2.6.a.iXt.2.2.2.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' / / ` K.Y.[.].{.}.].}.].{.].}.}.].{.", "m.N.N.N.N.N.N.N.N.V.N.V.N.N.V.N.D.^ ^ 9 e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.H jXH j mXMXnX9XnXnXMX5XqXrXa.6.2.2.2.2.2.2.2.5.qXeXC X.) Z t o o o o @ M UXM l v : : : : 4 - X u ; 4 X o . ; ^ =.%.%.%.&.{ 9 ( 4 * > a > 3 @ a NXbX; = 1.J . S ,X,X>Xd z v l e e . H e.d.3X>Xx C G 3 . a =XBXz g S u.2.2.2.2.g.Z t.2.2.2.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.' / / _ J.Y.'.].].].].].}.].$X].].].{.", "N.N.N.m.N.N.V.V.N.V.N.V.N.N.V.N.D.^ ^ P e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.mXnXeXnX,X>X>X>X>XA S g 4XyXf.7.7.6.2.2.2.2.6.y.eXmXC 6XC % } iXe b BXK u D o o l = >.>.>.: z : > : 4 > > VXCX4 { *.%.%.#.w > IXsX M - VXUXo e NXMX = ,.H e C ,X,X>Xa X X X 1XfXr H e.p.D G a - s =XBXx h K x X C t.6.2.2.6.f.Z t.6.2.6.6.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ! / ' H.W.[.].].].].].}.].{.{.{.].{.", "N.m.N.N.N.V.N.N.V.N.V.N.V.N.N.V.V.^ / ~ e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.bXqXqXwXv >X,X>Xl v K X 5XeXnXcXxXa.7.7.7.8.t.xXnXnXC f c % ) m - % | L l Z j 4 J > . > * * * - = >.,.>.: > : VXJ * R =.&.%.=.' f VXK k f l BXk.> . > * = > h h =XG - * ; X l J X sX6Xs J > * = : 4 ; . - > _ =.&.%.+.-.V ; b ; z l . X . z : : : f ,XXs e K N g c Z =X=XwX0XM K : =X4XiXsX& ;Xf a.* u >.= : M x r e . x u :X4Xh ;X=Xl f : CXj.X v kXz * : - l v . l @ ) *.%.%.*.sXf : ; > . X l b l l d . e u e - b - UXj.X ; X a 3XH d k q .NXP b j =X;X,X1X>X3 X X s xXmXtXsXdX*.pXpXsX.. .L.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ! / ` H.'./.{.{.{.].[.}.].}.{.{.}.{.", "N.N.N.N.V.N.N.V.m.V.D.D.D.N.N.D.N.^ ! ~ e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.4XJ v . . K v . l mX5XeXrX0XM j.M 2X5XG 1XG =X: h.: e : > > c h a.h r hXh 3XnXmXnXyX>X= = * ; 3 m VXL.k c 3 VXCX. j.z :.*.%.%.%.#.K 1.* UXUXo CXVX@ a 3XL r h hXt C e k 3 ; g c b b z d V K W ) :.5Xr.lX6X,X,X>Xl 3 J D 9XwXpX&.pXsXg 9Xy.6.8.6.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ! n ` K.J.[.|.{.{.}.[.{.}.{.}.{.}.{.", "N.N.N.N.N.N.N.V.N.V.V.N.V.N.V.N.V.^ / 9 e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.xXC J s l . X . d >XA >X,X>X; ; ; >X,Xx l e >X; a ; a v v : > d x.Xv : : = = z > >Xf : f b VXM . VXj.( =.%.%.%.%.-.M * BXk.* VXK X z 1X1Xg d f =X,Xv H x c d H S - 3 . C G 6 < b 5XH H 3 l e a 3 4 M e sXpX@.aX9X5XB xX3.2.2.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ! ~ ' K.Y.'.|.{.{.{.{.}.{.{.{.{.}.{.", "V.V.N.N.N.N.V.N.V.V.N.V.N.N.N.N.m.! ! n e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.X,X>Xs z H G l l h a l l l l x x l x x x x x x > > . r g h :X3X4XeXeXC H h.H C ; > f > k ,.>.: l u - X J M ( =.%.%.%.%.=.K z B e X a - - a x a s A V G A d 3 j A @ s t K v X >X>Xe r a e e u r h hXr s d 0 I =.pXaXeXbX4XZ u.2.2.2.6.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ! ~ _ H.Y.[.{.{.{.}.}.{.{.}.{.}.{.{.", "N.N.N.N.V.N.N.V.V.N.V.N.V.N.N.N.B.^ ! P e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.- l 3 G v wXnXnX>Xl =XZ X s r - A :Xz J F e h =Xr e X > ; r r =X > = : a - b - . X ( =.%.%.%.%.%.&.-.-.sXx - X r d - b z z n K m h A 5XX,X4 < < . x . X a . = > ; . e >X3X>Xx S ,X,X,XC G H a.9.p.f H g.6.6.e.G 3 3 ; X M J ) =.%.%.%.%.%.%.%.%.*.) | | 4 m ! ( b m W W ' sXpXsXF pXsXpXpXpXsXpXdX%.pXpXpXpXpXpXaXyXbXxXzXt.6.6.2.6.f.3XZ ;X;X:X:XZ ;Xw.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ^ ! ` H.Y.'.].oX}.}.}.}.}.{.}.{.}.oX", "N.N.N.N.D.N.S.N.N.N.N.N.N.N.N.m.N.^ ! n w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.xX3X-XX>X,X1X>Xu e a . - h g 3 3 3 l l c D S h.z.9.p.1.6.8.s.C G ,XS >XA sX=.%.%.%.%.%.%.%.%.%.*.$.pXpX} K pXdX} K SXpXpXpXpX .F pXpXpXpXpXpXpXpXaXnX9XnXrXrX9XmXzX4.6.2.2.2.2.2.7.d.3X6XnXrXmXmXrX3Xe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.' ^ Q ` K.Y.[.].}.[.{.oX}.}.}.{.}.}.{.", "D.N.D.D.D.N.S.D.V.V.N.N.m.m.N.N.m.^ ^ ^ w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.d e =X=Xa B Xa.6.2.2.3.H S H xX4X0XMX6X+.%.%.%.%.%.%.%.%.%.=...2X5XC c =X,XS g 2X;X=X=X2XV >XMX9XbXxX9XeX9XrX9XrXxXxXxXxXzX5.6.3.2.2.2.2.2.7.z.wX5XeXmXcXi.a.mXeXr.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' / Q _ H.Y.[.].].}.{.{.}.}.}.{.}.{.{.", "S.m.N.S.N.S.N.N.N.N.V.N.V.m.N.m.B.P ! ~ w.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.a C v h s v K X . k d.=X. 8 | L . G 1XV - k.- @ wXnX>XJ s g LX. l K . 3XMX>Xh.9.t.jXA ;XC v S a.6.7.8.H ;X,.k =X=X4XaX+.%.%.%.%.%.%.%.%.=.;.n C >XG - BXVX. @ } ( o L.VX@ v 4XqX4.7.d.xXxXxXxXzXr.6.2.6.6.2.2.2.2.2.6.6.z.zXnX4Xx eXy.7.2.7.d.rXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' / ~ _ J.J.[.].$X}.}.}.}.{.}.}.{.}.{.", "V.V.N.N.V.N.N.V.V.N.N.m.V.m.V.m.N.^ ( P e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.a D vXb . V CXe X f d.XX= >.; aX,X=XaX=.%.%.%.%.%.%.%.*.O.m d h 2XA l VXj.X i o.W X CXj.r C c 4XcXd.2.3.6.3.2.2.2.2.2.2.2.2.2.2.6.a.jXzX3X,X2X;XZ mXt.6.2.6.z.rXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' / ~ ] G.W.(.].{.}.{.}.}.{.|.{.}.{.{.", "N.N.V.V.N.N.V.N.N.N.N.N.m.m.m.m.n.^ / P w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.a . x . u r =Xc t l :X2X=Xv . e r . b u d S u r t h A l l - S >X>Xb S a.7.p.<.6.3.zX;Xe c C S 6XS > >.- aX6XS -.%.&.%.%.%.%.%.%.;.m C >Xh j a . X X X & @ o X g qXv x 4XyXlX2.2.2.2.6.6.2.2.2.2.6.6.6.l.nXyXwXB A ;XA 6XrXt.y.jX3.f.rXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.' / ^ ` J.J.[.{.{.{.}.{.oX}.{.}.[.{.{.", "N.V.V.N.N.V.N.N.N.N.N.N.N.m.V.m.N.^ ^ ~ e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.d @ a . l K F h x g kXc . % } y a m } y > j.: @ 4XG v A bXrXG J - 2XMXMXS h.7.3.p.1.7.2.4.cX:XZ C f 3 4 * = o t ;X7X=.&.&.&.%.%.%.%.*.} V 6X0Xk j e l ) iXr 3 BXVX. ) iX*XmX4XV b 4XnX3.6.2.6.a.lX3.2.2.6.a.jXzXnXeX5X;Xs mXMXrXqXcX3.a.xX8.a.rXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ! ~ T H.Y.'.{.{.{.{.}.{.}.[.{.{.{.{.", "N.N.N.V.N.N.N.N.m.N.N.m.m.m.m.m.m.^ / P e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.a C G X . j.v . 3 t ;X;X- L | J e L ) m z j.M a 4XA aXJ 2X9XC N x t :X;XD p.7.2.4.a.<.6.6.4.mXwXZ f M > : j.a ;XMXaX=.&.&.&.*.*.*.=.;.J G 3X>XZ 2X>X@ ) } a l VXj.o ) ' A rXnXwXC x 4XxXd.3.7.lXrX4.6.2.6.lXyX4X:X,X:XA A Z ,XwXl.7.6.6.y.zXbXqXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.' ! / ` J.J.(.|.{.{.{.{.}.}.{.{.].[.{.", "V.V.m.N.N.N.N.N.m.N.n.N.m.m.m.m.m.^ ^ P e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.a V CXe l . X e a e g e x @ $ @ x @ @ @ ; X l G n N s 5X9X;Xg t y 0X,Xe p.6.2.4.p.3XzXlXzX9XeXqX=XD v v VXj.h 7XX.X.X.) X.X.X.X.X.( - ; ; . G ,X>X@ & @ i i l - o & @ x ,X,X,XS 3 c 6XyXlX6.d.rXcXd.3.<.,XXv ^ NXlXaX9XwXeXeX9X2XLXCXx k.6.2.2.u.qXrXrXrXeXXs C 3 G M j % ) ) ) ) ) ) ) :.n m ; j.BXX l 3 . ; : : : : : 3 b i - x G >X>XA >Xc v 4XrXcXmXrXrXrXzX,X;XA 4XmXxXxXeXeXnXeX:XZ eXyXt.7.d.rXqXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ! ^ _ H.J.[.{.).|.}.].}.].{.|.}.].{.", "V.N.N.N.N.N.m.m.m.n.N.N.n.m.N.n.N.^ ^ ~ w.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.- >XBX3 m _ NXkX% Z aX=XX l b = j y f. 4 F.@ X ,.= * * = = s 3XL r yXwXkXmXaX0XC G nX6X,X,X4XeX4X3XrXnXu.6.3.6.f.bXqXqXeX:XA eXcXlXxXrXqXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ! ] ` G.'.(.].{.{.}.}.}.}.}.}.}.{.{.", "V.N.m.m.m.m.N.m.N.B.n.n.B.n.n.B.n.P ( n e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.- ,XLXx b W .W @ D LX:X- J - k.VXd d x.h g uXH & & + S XVXN h :XV v K F | &.%.%.+.=.%.m z = > e o X ; <.c.D hX* v G : v 1X1XZ yX1X .NX} rX,Xc :Xg ;XA 5XxXu.8.d.rXjX3.2.2.2.8.gXrXmX4XB 4XnXyXnXnXnXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.' ^ ~ ] K.Y.'.{.{.{.}.].[.].[.}.].{.{.", "N.N.m.N.m.m.m.m.N.n.m.B.n.m.n.n.n.^ ! P w.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.d g =Xh b m n m b e i r X * o * v > X t J J h s s 6XM X ; N : . h 7X& - G xXH > 1.8.bXnX6X3X 3 D f * F ;Xu x . . r 2XF ) ' ) 3Xa l :X0XxXu.3.2.2.2.6.d.bX4.2.2.2.6.f.yXeXnX,XA 2X,X,X,X3Xw.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ! ^ _ H.Y.~.{.$X{.].}.{.].].].].{.{.", "N.m.N.N.m.m.m.m.n.m.n.n.m.n.n.n.n.^ / P e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.s qXeXwXC =X-X2Xc u e - b 7XG i e r S l K J . 3 g =X;X@ : F f - J 1XF a h.9.i.p.<.8.5X6XC l u a . u u 3 l a / | ) ) | ) | m : - } ! X ; k.p.- l i X c C u o o X 6X% o ) *Xr m P b A 3X,XxXt.2.2.2.2.2.2.2.2.2.2.2.2.2.6.a.mXeXqXqX2XV A A A A e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.' ^ ^ _ H.Y./.].{.{.].}.].].].].{.].].", "N.N.N.N.m.m.m.m.m.n.N.n.N.n.N.n.n.^ ! P e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.d mXnXwXl B aXZ . f f.=X3 4X0Xm } *X2XC X o u . r r . * y - b b r 3 >Xp.h.z.7.3.H - 3 B j h r | % X V s K L. . . . .J >Xj 3 X.W @ - ; a . 3 ' 4 g 6XS i ) iXy 1X1XX W | Z 4X:Xh wXmXu.8.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.7.lXrXwXmXeXeXeXnXeXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ^ ! ` G.J._.].$X].].].].].].].].].$X", "N.N.N.m.m.m.n.m.m.m.n.n.n.n.n.n.n.^ ! ~ e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.g wXmXmXx S LX:X@ f x.Xx h NX3X2XnXrXeXeXnXnX9XZ aX:Xu h.9.y.>Xc >XjXD v VXH : h h a } p X @ ) .3 *X8X8X2XnXnX:X( *X*XmXnX4XA B nXeXeXmXbXzX3.2.2.2.2.2.2.6.f.qX4.2.y.lX3.2.2.2.2.3.3.2.2.2.8.d.rXqXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' / ! T H.J.W.).).].].).).].$X].).].].", "m.N.m.m.m.m.m.n.n.n.n.n.n.n.n.n.m.P ^ P e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.d mXqXc d f.=X5XC :X=X:XD f.3.4.3.4.l.>Xv 4XnXnXmXnXmXeXqXqXqXh ;X;Xx p.6.2.4.G * = a s e l S Z C UXj.S dXO.O.*.*.O...q ; :Xf 4 o.:.u . & & . *X8X2X*XmXnXF W } A nX2XB A Z ;X3XbXt.7.6.6.6.2.2.2.2.2.2.2.3.2.2.f.qX4.2.2.2.2.2.2.2.2.2.u.xXeXqXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ! ! _ G.P.W.`.).{.].).).].).).].).).", "m.N.N.m.m.n.n.n.n.n.n.n.n.n.n.n.m.P ( P e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.g wXwXx f x. ; :X;X} Q o } / X b VXj.X m L.NX} nXeX3Xh A g g 4XcXu.lXyX3Xs 6XrXyXrXqX3.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.6.u.d.d.mXl.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.' ^ ~ _ G.P.W.).^.).).).).).].).).).).", "N.m.N.m.m.n.n.n.n.n.n.n.n.n.n.n.m.^ ! ~ w.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.s qXnX>Xv Xp.p.p.h.6XC X o - o r = Q O.;.1X4X=Xr ..sXr t > > V g y r y g c x A Z A A h h A V A 4XlXz.p.2XbX3.2.2.2.6.8.jXyX3XB 3XrXyXlX6.2.2.2.2.2.2.2.2.2.2.6.a.eX4.2.2.u.d.3.2.2.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ^ ! T G.J.T.^._.~.(.^._.~._.^.).^.).", "N.N.n.n.n.n.n.n.n.n.n.n.n.n.n.n.n.P ^ ~ e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.a -XNX:X. f x..= o d g u = k.- = ,.z xXnXZ H f.p.p.p.f.u.6.2.3.<.lXG t : k x IXM A -.n J K ) / g S c i p p u u p p r p p 2X,X>XlXgXlXa.6.6.8.2.3.z.a.7.h.;XxX6.2.2.2.2.2.2.2.2.4.lXrXA ;XeXyXlX6.2.2.2.2.2.<.d.3.3.f.rX5.2.2.2.2.2.2.2.r.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.' ^ ~ T G.J.W.!.!.^.!.~.!.!.~.!.^.^.).", "N.N.N.N.n.n.n.n.n.n.n.n.M.M.M.M.m.P ( P w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.cXCXkX8X=XJ G h c > = = = r d h u ,.k.H * = z 3X6X,Xx B x B i Z ,Xu.6.4.f 5XS $ H ; m 4 ) -.b r x { } 5XuX>X>X5X4XA >X4X4X6X5X5X6XS G 4X6X6XeXgXgXz.2.7.zXxX7.f :XrXf.6.2.2.2.2.2.2.2.2.6.zXrXA ;X3X3XlX6.7.2.2.6.f.rX4.2.2.3.2.2.2.2.2.2.2.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.' / ^ Y G.P.T.^.Q.^.^.^.^.^.^.!.^.^.).", "N.n.N.N.n.n.n.n.n.n.n.n.n.n.M.n.n.! ! n e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.jXBX1X8X0XBXvX8XV @ e u b - b 3 l o o l l l 3 ; - u . . a 3 . b s.7.7.9.z.S @ .f . ) -.dX,X-X4X=XpX .6XCXS - - . d d l l x G v 3 l c G S c G 6X6X6Xa.7.7.8.7.s.,XrXbX7.6.6.2.2.2.2.2.2.6.d.yXeX:XB B :XjXf.2.6.2.2.4.2.2.2.6.2.2.2.2.2.2.2.2.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' / ~ _ H.J.T.!.^.~.!.!.!.Q.!.!.!.!.^.", "N.n.n.@.n.n.n.n.n.n.n.n.n.n.n.n.n.^ ! Q e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.zXN F 4XxXBX1XxXg t aXh 4 I NXvX% > j.; . = f y = d 7X& p.* r u >Xa.a.p.d.C X f k . $.aX5X5XXyXwX8.2.2.6.2.2.2.2.2.t.4.lXrXeXA ;X6XyXlX2.6.2.2.2.2.2.2.7.0.d.d.f.3.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ! ^ Y G.P.Q.Q.~.~.Q.~.!.!.!.~.Q.~.!.", "N.N.N.n.N.n.N.n.n.n.n.n.n.n.n.n.n.W ( P e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.O.-.>Xr -X=Xh -Xh e D e l , + L b X : ; i > M > = z c r o s ; =XC - BXsX; BXBXX BXBX- | m BXBXX BXBX( L & + 6 a ; ; a @ } *X=X=X;XG t x e ,X& s MXj ,.t X ; 1.t :XnX,XS rXeXf.6.y.f.6.6.2.2.2.2.6.2.t.lXrX:Xg ;XrXjXf.6.6.6.2.6.u.d.xXrXrXyXt.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.' ! ~ _ G.P.W.~.~.!.~.!.Q.^.~.Q.~.!.!.", "N.N.N.N.N.n.N.n.n.N.n.n.n.n.n.n.n.^ ! P w.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.%.%.L $.wXs l j d . . h a a a - h V z u l @ l e u a a u e a - 4XS J IXz l IXc a IXJ . ! / IXv . IXJ % n UXH X 3XrXMXXc 6X .g 4Xj UX>X- - UX1X; ;XnX,XG 9X0XmXgX0XrXlXa.6.6.6.2.2.2.2.6.lXrXeXA A rXyXjXf.f.2.6.f.yXrXqXqXeXjXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.' ! ^ Y G.J.T.!.~.Q.Q.~.Q.~.!.!.~.!.!.", "N.N.N.N.N.N.N.N.N.N.N.N.n.N.n.n.M.^ ! n w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.O.%.( -.4XG b -Xs J v =XV J o - V =Xg ; p.* . c X4X4XS & + @ A B i r B >X- v s h tXd M z ; X : : o :XnX,X>X8XvXCX4X8XnXrXrXlXd.a.2.2.2.2.2.3.lXyXqX;X;XmXrXyXrXt.7.6.4.lXrXqXqXrXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ! ^ Y G.P.T.Q.~.~.!.!.^.!.Q.~.Q.^.!.", "N.N.n.N.N.n.N.N.N.N.n.n.N.n.n.n.M.P ! ~ r.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.%X%.W %.6XBXJ . . K K X g CX. x kXJ . > k.1.r A LXX g.& F q @ m m m m m 3 x m m m d z m m m C C c x ; - c . v v C C G H A C C V J S d h C C C G C C C S t g h r ;XnX,XG uXkXBX,X8XnXmXqXrXrXrXd.6.2.2.2.2.6.lXeXeXA ;X5XqXeXjXf.f.6.a.rXrXwXnXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ^ ^ Y G.P.T.!.^.!.~.Q.~.~.~.!.!.!.~.", "N.N.N.N.n.N.n.N.n.N.N.N.N.n.n.n.n.! ! ~ e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.$.%.:.%.O.% u i p b l u @ S i u F @ b ; b l 7Xb F l D D @ ; > ) =.=.*.&.) / .%.*.&.m } @.%.@.sXtXK m m m m m 1XG XbXnXqXqXqXqXqXrXd.2.2.2.2.2.2.t.zXrX:Xx ;XqXyXrXrXlX6.9.d.rXeXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.' / ~ T G.J./.!.~.!.!.!.!.Q.Q.!.~.~._.", "D.N.N.N.N.N.N.n.N.N.n.N.n.n.n.n.n.P ( ~ w.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.O.*.W %.%.+.+.+.&.o.+.%.+.o.+.#.o.+.%.#.o.%.%.+.o.%.*.*.*.@.=.%.&.%.%.+.) O.=.%.%.%.' .%.%.%.%.+.%.%.%.%.%.%.=.' .%.%.&.pXk.k.a.k.f.1XK k.k.a.k.a.k.a.k.1X7X7Xx ;XsXm J uX-X=X-X8XnX9XqXqXqXqXqXrXd.6.6.2.2.2.6.f.rXeXqX;X;X6XqXeXrXjXa.2.lXrXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ! ^ Y v.P.T.!.Q.~.^.~.!.!.~.!.^.~._.", "D.N.N.N.N.n.N.N.N.N.N.N.n.n.n.n.n.! ! P e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.O.&.( %.%.%.%.%.&.&.&.%.%.%.%.&.&.&.&.%.&.%.%.%.%.&.%.&.&.&.&.%.%.%.%.%.) X.*.%.%.%.%.*.&.%.%.%.%.%.%.%.%.%.%.%.+.*.*.%.%.%.#.-.=.#.=.O.O.-.#.#.#.=.=.=.-.%.*.*.' } @.} / ..1X$.dX$.$.aX9XqXqX9XqXqXrXlXa.2.2.2.2.2.lXrXeXqX:Xs ;X4XqXyXyXlXjXeXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.' ! ^ Y G.J.T.!.~.!.Q.!.~.~.!.!.^.(.^.", "D.N.N.N.N.N.N.N.N.N.N.N.N.n.n.n.m.^ ^ ~ w.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.O.+.:.%.%.%.%.&.%.&.%.%.%.%.%.%.%.%.&.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.=.) O.;.%.%.%.%.&.%.%.%.%.%.%.%.%.&.%.%.%.%.&.#.%.%.%.%.&.&.&.&.} ' &.&.&.%.%.+.*.*.&.%.+.-.SX=.( } X.W *.@.@.+.$.$.$.$.aX9XqXqXrXrXd.6.7.2.2.2.t.t.t.lXrX:Xg ;X4XmXrXrXwXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ^ ^ _ G.P.T.!.!.~.!.!.~.!.).~._.^.^.", "N.N.N.N.N.N.N.N.n.N.N.N.N.N.N.n.n.^ / ~ e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.O.+.:.%.%.%.%.&.=.@.@.*.*.*.%.%.%.%.&.*.*.&.*.*.=.%.%.%.%.%.o.o.o.o.X.) L ( / %.*.%.*.O.+.=.&.%.+.+.+.&.%.&.&.&.&.O.O.%.%.%.%.&.&.%.&./ ( =.%.%.%.%.%.%.%.%.%.+.SXSX@.| ] X.) *.+.%.%.%.%.%.@.$.aXbXnXqXeXrXlXa.2.2.2.6.2.6.2.i.t.lX:XB ;XqXeXeXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.' ^ ~ Y G.J.T.!.Q.!.~.!.~.!.~.^.(._.).", "N.N.S.N.D.N.N.N.N.N.N.N.N.N.N.N.N.^ / ~ w.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.O.%.( %.%.%.%.+.) dX..) X.X.O.%.%.+.X.X.) ;.X.) X.O.%.O.%.o.L p m + % J . . } ) X.o.;.i ) X.O.&.$.$.dX%.+.$.$.$.O.m O.&.%.%.&.*.&.*.&.( ' =.%.%.%.%.%.%.%.%.%.#.$XSX@.( } o.) *.&.&.%.%.%.%.%.&.*.6XnXqXqXwXrXrXd.2.2.2.2.2.2.6.2.2.u.h.:X;X4XqXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.' ^ ~ Y G.P.W.!.~.~.~.^.!._.(.^._.).^.", "S.N.S.N.D.N.N.N.N.N.N.N.N.N.N.N.m.^ / 9 w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.*.%.) %.%.%.#.O.m h =XV v - X.=.&.O.v XIXJ . 1XtXG e ,XH t bXpX@.j.7.9...=.D S & X | %.%.%.%.&.$.wX0X9X>X:XsXm K i % ;XD . X =X-Xr x C D 0 J 1Xb + K s 8XpX@.&.%.%.%.%.*.%.%.%.%.%.dX$.$.dXdX$.$.aX9XrXt.6.2.6.a.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' / ^ _ G.P.W.!._.~._.(.).).).(._.(.).", "V.D.V.N.V.N.V.N.D.D.D.D.N.V.N.N.N.^ / Q w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.c - % o.o.o.*.%.%.%.%.l r g s % ) W ( L N K x r | @.%.&.%.%.%.%.+.$.m N l 8 vXvXI g =XG y bXsX#.j.7.a.pX+.} 6XK e { *.%.%.%.*.&.$.tXeXXH a.cX3X4 - 3 c c A pX&.%.%.%.%.%.%.+.%.$.dX+.@.%.%.%.%.+.%.aXu.6.6.1.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ! ^ Y G.P.T._.^.^.).)._.(.).).)._.).", "N.D.N.V.N.V.V.V.S.N.N.V.S.D.V.V.S.P ^ n e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.4Xb ( H J % o.%.%.%.%.x a x t b ;.&.%.+.m v a e ;.&.&.%.%.&.X.X.X.%.%.%.+.1X5X5Xc B NX0X) =.6XvXCX8XsX@.+.aXnXX:X:XsX%.&.%.%.#.} MXLX1X>XK v . v c c x x C C v H 7.5.XW :.>X5Xj Q :.:.p aXfX;X0XpX@.=.%.&.( ;X:X:X2Xx s e G 4X6X>XV 5X5X;XH 3.6.lX2XkX1XX rX3XC -.%.%.&.%.&.#.aXz.8.3.l.hXaXdX%.%.%.&.pXgX8.6.a.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ! ^ _ G.J.T.!.!.^.(.(.).(.).).).).).", "N.N.N.D.N.V.N.S.D.V.S.S.V.V.Z.V.V.^ / ~ e.e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.5Xx l b @ m ;.%.%.%.%.%.x b v m ;.&.%.+.b a e a ;.&.%.%.+.o.F vXa ( -.*.@.( J J . r hXh ( =.1XK F 3XaX%.%.aXXZ k hX( =.&.%.+.sXu.7.6.7.H < L L % r : : - G 3.6.p.S wX:XK M . J $.%.%.%.&.+.pXw.2.2.2.2.2.2.3.zX$.+.%.%.@.sXi.1.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.' ! Q T v.P.W.^._.~._.(.^.).).).).).].", "N.S.N.V.V.V.V.V.S.B.S.S.V.V.V.V.S.^ ^ n e.e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.s >Xe 3 r =XA X.%.%.%.%.x b O.&.%.%.%.6Xh 4X$.&.%.%.%.%.%.%.&.kXa.G h p.j u Xv p.7.2.2.2.4...#.j.7.2.2.2.2.3.H ) &.%.%.%.&.@.sXXl.6.2.2.2.2.6.lX6X3 1X .X S $.#.#.%.%.+.+.sX4.6.6.6.6.6.8.f.dXo.#.+.@.sX9X4Xw.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.' ! ^ Y G.J.T.).^.(.).).).).).).].).).", "V.V.V.V.S.V.S.V.V.Z. XoXAXZX.X}.S.^ ^ ^ w.e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.z s r c x l c v m m m m - v v v b v 4XwXB 3XpX6XmXwX0X..*.-.-.kXz.y.<.y.a.S Xl S wXXxX4XxXbXz.y.z.l.l.l.z.l.zXwXbXbXxX4XkXT.$.-.-.$.%X..0X4X4XxX4XxXxX6X*.%.O.%X$.O...xXw.w.e.e.w.e.w.e.e.e.e.w.e.e.e.e.e.e.e.e.e.e.e.w.q.' ! ~ L.ZX$ $ 8 5 ZX[.(.).].(.).].).].", "Z.V.Z.V.S.S.Z.Z.V.ZXGX5 5 < 7 GXAX_ / ~ a.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.4.e.e.r.e.e.e.e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.e.e.e.e.e.e.e.e.e.e.e.w.e.e.e.e.e.w.e.e.e.e.e.e.e.e.e.e.e.r.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.e.e.r.e.e.r.e.e.w.e.e.e.e.e.r.e.r.u.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.r.e.r.4.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.w.e.e.e.e.e.e.w.e.<._ ! P L.ZX5 5 6 5 FX X].).(.).).(.).).", "V.Z.S.Z.Z.Z.Z.S.Z.FXGX5 5 < 7 GXDXv.P ! K.y.e.e.e.e.e.e.e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.4.e.r.e.r.c.Q / n L.KX6 O $ 5 GX X{.).].].).).).).", "Z.V.S.Z.Z.Z.S.S.V.FXHX6 5 6 7 HXDXZ.I ( ] k.e.e.e.e.e.e.e.e.e.e.e.w.w.e.e.e.e.w.w.e.e.w.w.e.e.e.e.w.e.e.e.e.w.e.w.e.e.e.w.e.w.w.e.w.w.e.e.w.e.w.w.e.w.e.w.e.e.e.e.w.w.e.e.e.w.e.w.e.e.e.w.e.e.e.w.w.w.e.e.w.e.w.e.e.w.e.e.e.w.w.w.e.e.w.e.e.e.w.e.w.e.e.w.e.e.e.w.w.w.e.e.w.e.w.e.e.e.w.e.w.w.e.e.e.w.w.e.e.e.w.e.w.e.e.w.e.w.e.w.e.e.e.w.e.w.e.e.e.e.w.e.e.e.w.w.w.e.w.e.e.e.e.e.e.r.4.a.{ ! ! 9 ZXKXO 6 $ 6 GX.X).).`.).).).].].", "V.Z.S.Z.Z.C.C.C.C.FXGX6 # $ 5 HXFXS.Y ( / N 1.e.e.e.e.w.w.e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.e.e.a.N Q Q P q L.KX< , # 5 GXZX].(.).].).).).].", "Z.S.S.C.C.Z.Z.C.Z.FXHX< 7 6 7 HXFXA.[ _ Q Q c.c.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.e.e.e.e.e.e.e.e.e.y.c.] Q Q 0 ] L.KX$ 5 7 $ HXZX^.(.{.).).].].].", "Z.Z.S.C.C.A.C.A.C.FXHX5 # 6 5 HXAXA.I.E Y P P ] 1.y.r.e.e.e.e.w.e.e.e.e.e.e.e.e.w.e.e.e.e.e.e.e.e.e.r.e.e.e.w.e.e.e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.w.e.e.e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.w.e.e.e.e.e.e.e.e.e.e.e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.w.e.e.e.e.w.w.e.e.e.e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.e.e.e.e.e.e.w.e.e.e.e.e.e.e.r.i.a.N / ^ ^ 9 0 U ZXKX< , , O HXDX^.).).).).].].).", "Z.Z.A.C.C.C.A.A.A.FXHX6 # 6 # HXFXI.Z.C.{ Y ^ ! ' c.<.u.q.r.q.q.0.0.0.0.q.q.q.q.0.0.q.q.0.0.0.0.q.q.0.q.q.q.0.0.0.q.q.0.q.q.q.q.0.0.0.0.0.0.q.q.q.q.0.0.0.0.0.0.q.q.q.0.0.0.0.0.0.0.0.0.0.0.0.0.q.q.0.0.0.0.0.0.0.0.0.0.q.q.0.q.0.0.q.q.0.0.q.q.q.q.0.0.0.0.0.0.q.q.0.0.0.0.0.0.q.q.q.0.q.q.0.q.0.0.q.q.0.0.0.0.q.q.0.0.0.0.0.0.0.0.0.0.q.q.q.q.0.0.q.q.q.q.q.0.q.w.q.q.0.w.0.<.c.' U / / P 0 U ` XXIX< , 5 $ HXZX^.).).).).).).].", "C.S.C.C.I.A.C.A.A.FXHX# 6 7 # HXDXI.S.A.Z.Y P ( ! ^ / ! ^ ^ P ^ ^ Q Q ~ ^ ~ P Q ! ! ^ ! ^ ^ ^ ^ P ^ ^ P ^ ^ ^ ^ Q ^ ^ ^ ^ P Q ^ Q ^ ^ ^ / ^ ^ ^ ~ ^ ^ ^ Q ^ Q Q ~ ^ ! ! Q ! ^ ^ ^ ^ ^ ^ / ^ ^ Q ^ Q ^ ^ Q / ^ Q ! ^ P ! Q ^ ^ Q ^ ! ^ ^ / ^ ! ~ ~ ^ ^ ^ ^ P ^ ! ~ ^ ^ ^ ^ / ^ Q / ^ ! ^ / ^ ^ Q ! ! ^ ! ^ ^ ! ! ^ P ^ P ^ P ! ! ^ ^ P ! ! ! ^ ^ ! ! ! / ^ Q ^ / ^ P ^ ^ ^ P ^ P ^ ( / n 9 9 U T G.ZXHX6 # , # HXDX^.).).$X).{.{.].", "C.I.C.A.C.A.A.A.V.FXHX5 $ # 8 HXFXI.A.S.I.[ Y P ^ ^ ^ ! ^ / / Q / / ^ / / / / / ! ! ! ! ! ! ! ! ! ! ! ( ! / ! ! / / ^ / / / / / ^ ^ / / ^ / / / ! ! / ^ / ^ ! / ^ ^ ^ ! ^ ^ Q ^ ^ ^ ^ ^ / ^ / ^ / ^ / / / ^ ^ ! ! ! ! ^ ^ ^ ^ / ! Q ^ Q ^ ^ ^ ^ ! ! / ! / / ! / ^ ! ! ! ! ! ! ! ! Q ! ! Q ! ^ / ! ! ! ! ! ! ! ! ^ / / / / / / / ! ! ( ! ! ! ! ! ! ! ! ! ! ! ! / / / ! / / / / / ^ P n 9 9 9 Y G.H.ZXHX8 O 5 5 GXDX^.).^.).^.).).].", "C.C.C.I.I.C.I.A.A.FXHX6 6 8 O PXKXI.Z.I.I.P.Z.v.[ Y Y 9 P P P I P P P P P P P P P P P P P P P P P I P P P Q P P P P P Q P Q P Q P P Q ~ Q Q Q Q Q ~ P n P ~ n P P ~ ~ P ~ ~ ~ ~ P ~ ~ ~ P ~ ~ ! ! ^ ^ ~ ~ 9 ~ ~ P 9 ] P ~ P ~ ~ ] ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ! ^ P ^ P ~ Q P 9 P P P P P P P P P n Q P P P Q P Q P P Q P P P ~ ~ ^ ~ P P P P ~ P ~ ~ ~ P P P ~ P ~ P Q Q n P ~ n P 0 9 0 q q R T b.K.P.GXPX$ 5 6 # HXZX^._.).).).(.).].", "I.I.I.I.I.I.A.A.S.FXHX5 < < 6 PXPXKXFXAX@XDXFXDXZXZXL.L.F.R 0 R 0 0 0 0 0 q 0 0 9 9 9 0 0 q 0 9 I 9 9 9 9 9 0 9 9 9 9 9 9 9 9 9 U 9 9 9 9 9 9 q 9 9 9 q 9 P 9 q 9 n ] 9 U 9 9 ] 9 ] ] U ] n ] q n q ] q ] n U U n ~ ] n n ] ] 9 ] n ] U U n Y N U ] 9 9 9 q 9 9 9 9 9 9 9 9 9 9 9 9 9 0 9 9 9 9 U U 9 9 9 9 9 9 9 9 9 q U 9 9 9 P 9 9 9 U 9 9 U U U 9 9 9 9 U U 9 9 P q q ` .L.L.L.L.CXVXXXZXZXKXIXPX< , 6 # HXDX_.).).).(.].).`.", "I.C.I.C.C.I.I.I.I.&XHX7 6 < 6 PXPXPXHXHXHXHXHXIXHXKXDXZX'.L.T R T R T R T R R T T T T R T T T T T T T T T T T T T T T T T T T T T T T T T b.` b.` b.b.` F.T F.b.F.` ` F.F.` F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.b.F.F.` ` ` T T ` T T T T T T T T T T T T T T T T T T T T T T F.T T T ` T b.` ` ` b.` F.` F.T ` F.F.b.F.` ` T ` ` L.L.CXZXKXKXVXKXKXKXIXHXPXPXPX6 < 6 # HXDX^.).~._.(.).].].", "I.I.I.I.I.I.I.U.I.DXHX7 6 6 $ 6 6 6 6 5 6 5 6 6 # O < 6 XX'.v.v.v.v.v.v.v.v.v.v.v.G.v.v.v.v.v.v.G.G.G.H.H.G.H.H.H.H.H.H.H.H.H.H.H.H.H.G.H.H.H.H.H.K.H.J.H.H.K.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.H.K.J.H.K.H.G.H.H.H.H.G.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.J.H.H.H.K.H.H.J.H.H.H.H.K.H.H.H.H.'.ZX6 # $ 6 , 8 8 # 5 5 5 6 6 7 5 O 8 HXFX^._.).).).).).).", "U.I.I.I.I.R.I.U.R.@XKX7 6 6 7 5 # 8 , , , 6 O < O 5 5 O FXXXP.H.B.Z.v.P.C.P.P.Z.Z.H.P.P.Z.J.P.P.P.P.P.Y.Y.P.Y.Y.P.Y.P.Y.Y.Y.P.Y.Y.Y.Y.Y.Y.Y.T.Y.W.Y.Y.Y.Y.W.Y.Y.W.W.W.W.W.'.W.'.W.W.W.'.'.'.'.[.[.[.'.[.'.'.'.'.'.'.'.'.XX'.'.'.'.'.'.'.'.'.'.'.'.'.'.W.T.Y.'.Y.W.Y.Y.Y.Y.P.Y.P.P.Y.P.P.P.P.Y.P.Y.Y.Y.Y.P.Y.Y.Y.Y.Y.T.Y.Y.T.Y.Y.Y.Y.Y.Y.W.Y.Y.Y.T.Y.Y.Y./.Y.Y.T.W.Y.Y.T.XXFX6 8 5 6 , 7 # # , , , 5 $ # , 6 O GX@X_.^.).).(.).).].", "I.U.I.I.I.I.I.I.I.#XKX7 5 < , 6 7 , # # 5 5 # 8 # # # 6 AX.XU.I.C.P.C.P.I.I.R.P.I.R.R.P.P.U.W.R.U.U.R.R.R.W.T.R.Q.W.R.Q.R.Q.Q.R.R.W.R.W.Q.Q.W.Q.W.~.W.~.W.~.].[.'.'.[.[.[.'.[.'.[.[.[.XXXX{.XX}.|.XXXX|.}.XX}.XX|.[.|.|.|.|.XX|.[.XX|.[.[.[.|.[.[.[.[.'.[.(.[.~.W.(.~.W.R.W.E.Q.W.R.T.W.T.T.Q.W.Q./.Q.Q.T.W.Q.~.Q.W.W.Q.W./.!./.W.(.W.~.!.[.(.W.W.~.W.(./.(././.~.(././.ZXFX6 5 , 6 6 6 6 6 6 < 6 7 5 # < < # GXZX^.).).).).].(.).", "U.U.U.U.I.I.I.R.U.}.DX1 < < 6 6 5 7 6 5 # $ < 6 6 < $ < FXOXU.U.R.R.R.R.R.R.R.R.R.R.R.E.E.E.~.E.R.Q.W.Q.!.!.!.!.!.!.~._.!._.Q.~.^.!./.Q.!.!._.).).).).).).{.).{.{.{.).{.{.{.{.}.|.}.}.}.}.}.}.oX}.}.|. X X}. X}.}.}.}. X}.}.}.}. X}.}.}.|.}.}.}.{.}.{.{.].{.$X].).).^.(.^._.^.!.!.T.!.!.!.!.!.!.^.).^.(._.^.^.).^.(.!.^._.).(.].].].).].].).]._.).).).).].).).).].).).).AXFX1 7 5 $ 5 5 6 6 6 , 5 5 5 5 # 6 < FX X^.).).).).).).).", "R.U.U.U.U.U.R.I.R.{..X.XGXGXHXHXHXHXHXHXHXHXHXHXHXGXGXFXAX}.U.U.R.I.R.R.R.R.R.R.R.R.R.Q.R.R.E.R.Q.Q.Q.Q.!.~.~.!.!.!._.~.!.(.!.~.~.~.!.!.!.!.).).^.).).).).{.).].{.{.{.{.{.{.{.{.}.}.{.}.{.oX}.OX}.OX}. X X X X X}. X}.}. X X}.}.}.}. X}.}.|.{.|.}.{.|.{.{.{.].].).].).^._.~._.~._.^.!.!.!._.!._.).^.^.^.^._.).^.^._._.^.).(.).).].).].(.].(.(.).].).].).].).).].).].).].@XFXFXJXHXHXHXPXHXHXHXHXHXHXHXGXJXGXDX.X|._._.).).).).{.).", "R.U.R.E.E.I.U.U.U.U.[.#XAXDXFXZXFXFXDXFXFXFXFXFXDXAXZXAX].R.R.U.Q.E.E.U.E.T.Q.U.W.R.R.R.Q.Q.R.Q.Q.Q.Q.Q.!.~.^.~.~._.(.^.^.^.(.^.~.^.~.!.!.!._._.^.^.).{.).].).].].}.oX].{.{.{.{.}.{.{.}.}.oX$X}.+X}.oX XoX+X}.OX|. XoXoX XoX X}.}.}.}.}. X}.{.|.}.{.{.{.$X{.].].$X).).).^.^.)._._.^._._.~.^.)._.^.).).(.^.^.).^.^.).^.).(.).).).].).).].].).).).).).^.].).{.).].].).].).)..XDXDXFXDXFXFXKXFXFXFXFXFXDXDXDXZX.X|.(.).).).).).).).].", "R.R.R.R.I.E.R.R.E.R.R.U.E.A.E.I.R.A.U.I.I.U.I.I.R.R.R.R.U.R.R.R.E.E.E.T.!.Q.U.Q.Q.R.Q.Q.R.R.Q.R.R.Q.Q.Q.^.Q.!.!.~._.).^.).^.^.)._.^.!.!.!.!.^._._.^.).^.).].].].].].].{.}.{.}.}.}.}.}.}.}.oX X}. X X X XOX}. X XoX X|. X X|.}.}. X}.}.}.}.|.}.}.}.{.}.].{.].].].).].).).).).).^.).^.^.^._.~.^.^.).^.^.).^.).^.).).^.).^.).(.(.].).).].).].).].).{.).{.$X).).{.).).].).].).).^._.(.(.(.]._.).].[.).).[.).).(.).)._.^._.).).^.).).).", "R.R.R.P.U.R.E.U.R.U.E.U.R.I.E.U.R.I.U.I.U.U.U.E.U.U.E.E.R.E.Q.Q.Q.U.Q.E.E.Q.Q.R.R.Q.Q.R.Q.Q.Q.Q.U.Q.Q.Q.Q.~.~._.^.^.).).^.).).).^.~._.!./.!.!.~._.^.^.).).).).).].].].}.{.}.{.}.{.}.{.}.}.}.oX XoXoX+X.XOX}. XoX}. X X X X}.}.}.}.}.}. X}.}.}.{.{.}.{.{.{.].].).].).).).).).).^.^.).(._.~.~.^.^.^.).^.^.).^.).^.^.).^.).).).).).(.].).].).].).].).).].).{.).).{.].].].).].).].).).).).).(.).(.].).).].).).).).).).^.(._.).).).).).", "Q.R.R.R.R.U.U.U.U.U.Q.U.U.U.U.U.U.R.R.I.U.R.U.R.Q.U.E.U.R.E.E.E.Q.!.Q.E.T.Q.Q.Q.R.Q.R.Q.Q.R.R.Q.Q.Q.Q.Q.~.~._.~.^.).).^.).^.).^._._.^.!.~.^.~._._.^._.).).(.].].[.].].].}.}.}.}.{.}.}.}.}.}.oX X}.}.}.}. X+X}.OXoX XoXOXoXoX}.}.}.}.}.|.}.}.}.|.}.{.}.{.].].].].).).).).).).).).).^.^._._._.(.^.).^.).(.(.).^.).(.^.).^.).).(.).).].].).].).{.).).{.).].).{.{.).).).].].).].).).{.).).).].].).).{.).).).(.).).).).).^.).).).).`.).", "Q.E.R.Q.R.R.R.R.U.E.E.E.E.U.U.E.U.E.U.U.R.E.E.E.U.Q.T.Q.Q.R.R.Q.Q.Q.Q.!.!.Q.Q.Q.Q.R.Q.Q.Q.R.Q.R.!.Q.Q.Q.!.^.^.)._.)._.).).).).).).)._.!.!.^.!._.~.^.^.^.).).).].].].].oX{.}.{.{.}.}.}.}.oX}.}.$X|. X}. X X X X XOX}.OX}. X}.}.{.[.}.}.}.}.{.}.|.{.}.{.{.].].].).].).).).].).].).).).).)._._.^.).).^.^.^.^.).^.).).).^.).).(.(.).).].).].].).].).].).].{.].].).{.{.].{.).).{.{.).].).).].).].).).{.`.(.(.).).).^.).].).).].).].].).", "!.Q.Q.E.R.R.R.R.E.T.!.U.E.U.Q.U.Q.U.E.!.R.U.E.Q.Q.Q.!.E.R.Q.Q.Q.Q.Q.Q.Q.!.!.!.Q.Q.Q.R.Q.~.R.Q.Q.E.!.Q.!.!.~.^.^.!.).).).).).).).).)._.^.!.!.^._.^.~._._.).).).].[.].].].}.{.}.}.$X}.}.}.oX$X}.}.oX}. X}. X X XoX}. X}.}.}.}.}.|. X}.}.}.|.}.}.}.}.{.{.{.].].).].].].).).).).).).).).)._._._.).^.^.(.^.~.~.^.(.^.^.^.).^.).).).).].).).].].).].].].].].].].].{.].].].).{.).).).(.).).].).].).).].).).).).).).).].).).).).).).).].].", "!.Q.Q.R.Q.Q.Q.R.E.Q.!.U.!.T.Q.E.T.E.Q.U.!.U.Q.Q.Q.U.Q.R.Q.Q.E.!.T.!.Q.!.!.(.!.~.Q.!.Q.Q.Q.Q.Q.E.!.!.!.!.!._._.^.).(.^.].~.R 6 # 5 5 # 5 7 O R H.).~.^.~.].).].].[.[.oX}.}.[.[.$X{.{.$X$XXXoX|.}.oXOX}.|.+X|.oX X X5 # 6 [ .XOX}.[.OX[.}.}.R $ % I |.{.[.{.$X$X).(.^.).].).).].).].).(.].~.[.Q.`.^.).~._.).~.).(.(.^._.).).).(.].).).].).].].].].].].].].].{.].].].{.).).{.(.{.].{.].].].].).].].].`.).].).).].).].).].).].).].).{.", "!.!.!.Q.R.Q.R.Q.E.!.U.!.E.!.E.Q.U.Q.U.!.E.!.E.!.Q.E.Q.Q.R.Q.Q.Q.!.!.!.!.!.~.!.!.~.~.Q.Q.Q.Q.Q.Q.!.!.!.!.^._.^.^.).(.^.[.~.I 6 , # # 5 O 6 5 , # K.^.~.).).!.).~.).).].].}.}.{.}. X].oXOXOX}.{.oX$X}.}.|.}.+X|.oX|.O 8 # [ }.}.}. X[. X}.[.R < 7 R [.{.[.].).).{.).].).$X^.$X).).].).]._.).(.).^.).).).~.!._._.~._._.).)._.(.).).].].).].).].].].}.].].].].{.[.{.{.].).{.).{.).{.].].).].].].].).).].].).).{.).).].).).].].).].].).", "!.!.~.!.!.Q.Q.Q.R.R.Q.Q.Q.E.Q.E.Q.Q.Q.Q.Q.Q.R.Q.Q.E.Q.Q.Q.!.Q.~.!._._._.^._.^._.!.!.!.Q.Q.Q.~.~.~.!.!.~.^.^.^.).).]._.)._.I 6 6 5 7 , < 6 < 6 , Y `.Q.].^._.].~.].$X].$X$X{.oX{.].{.}.{.}.[.}.}.|.{. X.X.XOXOX}.+X5 O < [ XOXoX]. X].$X$XK.[ [ H.{.$X].`.{.].).]._.].].`.`.].{.).).).).(.^.^.$X/.~._.~._.^.~._.^.).).).).).).).).].).].].{.).{.].[.].[.].].].[.|.`.].{.{.).{.).].].].].].$X].).).].].).].).].].].].].).).).].].{.", "!.^.~.!.Q.!.E.Q.Q.Q.Q.Q.Q.Q.Q.Q.!.U.U.!.Q.Q.Q.Q.Q.Q.Q.Q.!.!.!.!.^.^.).^.^.).^.^.^._.!.Q.Q.~.~.Q.!.~._.^.).^.).).).(._.[.~.R , 5 5 H.Q.Q.E 7 7 $ I ^.^._.).W.[ [ E G.'.[.$X{.[.Y.Y.J.'.XXG.G.[ [.|.}.K.[ G.'.OX}.|.7 5 , [ '.[ { P.[.].$X].J.J.J.J.].$XK.J.H.[.W.H.[ [ Y.{.].~.).(.G.[ G.Y.W.J.H.K.)._.~.^._.).).).^.).).].).).].).).).].).].].].].].].].].].].].].].].`.).{.).].{.).].].].].].{.{.).).].].].).].$X).].).{.).$X].].", "~._.^._.~.!.Q.Q.Q.Q.Q.Q.Q.Q.Q.~.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.!.^.!.~.^._.).^.^.).^.^.).^.!.!.!.~.~.!.!.!.!._.^.^._.).).).(.^.].!.R 6 , 1 H.).T.[ # O 6 [ !.).).E 0 7 5 1 # 1 G.}.$X[.7 O 8 ' 7 O # O 8 J.I O 5 , 1 J.OX X7 6 6 9 , O 5 5 I W.oX[.R , , Y ).].1 6 5 { 0 O < # 7 H.(.{.Y.0 5 # # 8 _ 7 7 1 W.).).).^.).!.^.)._.).).).).).].(.].).].).).].].].].].].].].(.].].`.{.{.].].].].].].{.].].].].).{.].].].].].].].].].].].).].].].", ").^._.~.!.~.Q.!.Q.Q.Q.Q.~.!.~.~.Q.!.!.!.Q.Q.Q.!.!.^.!.^.~.~._.(.^.^.).).).).^.).).^._.!.!.!.!.~.~._.^._.).).).).).).).).~.I 5 6 # # # # # # 1 T _.).).G.8 O 7 O < 7 6 < [ oX X# 5 5 8 8 6 # 8 # 6 , , 7 6 6 9 +X.X7 6 O 6 1 6 5 # O ` ].|.I # 5 I ).].O $ O , 8 5 6 6 # I ].].I 6 5 $ 5 5 O 6 5 1 (.)._.).^._.).).^.).).).).].].).].).].).].].].].{.[.].].[.].[.(.].].].].].].].].].{.].{.{.].].{.].].].).].].).{.).].].{.{.].].].", ").^.).^.^.^.!.!.Q.!.!.!.!.!.~._.!.!.^.^.!.!.!.!.^.Q.~.(._.~.^.).).).).).).).).).).).).!.).^.^._._.^.).^.).).].).).]._._.~.U , 6 # # 7 O 5 5 6 ^ /.~.(.I $ 6 I '.%X0 6 6 8 ].[.7 6 , 1 G.G.O 6 , 5 [ K.I O $ 8 }.+XO 6 5 8 J.XXI 6 6 # /.].R 6 O I `.).7 $ , 1 [ H.0 6 # 7 (./., O < R '.J.0 O 5 5 (.^.$X^.^._.^.^.).).).).).).).).).).].].).{.$X|.].].].].].].[.].].`.|.].{.].{.].].].{.{.{.].].{.].].].{.].].].{.].].].].}.}.].{.", "{.].).^.^.).^.^.!.!.~._.~._._._._._._._.!.!.!._.^.!._.^.^.^.).).).).).).).)._.).).).).).(.^.^.).^.).^.].).).).).$X).).].~.I , 6 O Y E [ Y , , 7 I Q.J.O 5 < G.].$XK., 6 # Y.].5 6 5 [ [.XXY # 6 P XOXG.# $ , OX X# 6 < [ +X XJ.# 7 O Y.}.I $ 8 P {.}.1 6 < Y [.).[ 5 5 O }.H.# 6 O P.).).E , # $ (.).]._.^.).).).^.).).).).).).).].).).).].).].].].].|.].].].].].(.].{.].].{.].].].}.].{.].}.].].].}.].].].].].].].].].].].[.].].", ").).{.).].^.(.(.!.!.!.~._.).).).^.).).).(.).)._._._.^.(.].).).).).).).).).).^.).).).).^.^.^.).).(.).).].).).].).^.].[.).[.I # 6 , P.^.^./.0 5 5 1 P.K.# 5 < Y.$X).K.< 5 # J.|.# 5 5 [ oX$XI # 6 I |. X{ < 6 , OX X5 $ 5 G.}.|.J.5 # 5 J.].I 5 # I `.).# $ < [ ].].[ O < # ).Y.# 6 < H.^.).[ O $ 6 (.^.).].[.).^.).).).).).).).$X].].).].].).{.).].].].].].].(.].].].].].].].].].}.].].}.}.].}.}.].].].}.].{.}.].}.].].{.].{.].].{.", "{.).).).(.).^._.~.~.)._.^.).).).).).).).).).).).).).).).(.).].).).).).).).).].).).].).).).].).).).(.].).).].).].^.$X).)./.R , , 1 H._.).H.1 , # 5 H.T.# $ , { ].).H., 5 O W.(., < 1 [ {.{.R 6 < U |.oX[ < 6 5 OX+X< $ 5 _ [.oXH.< 5 5 Y./.R , 5 R ~.).8 < < b.].].[ 6 < 7 ).%X# $ 5 Y W.T.I O $ 5 ~.].^.).).).^.^.).).).).).).).).).).{.).{.).{.].`.|.].].].].].].].].].[.}.}.}.].].].].}.{.].[.}.].].].].}.].].].].].].].].{.{.].", "{.).{.).).^.).).^._.).^.).).).).).).).).).).).).).).].(.).].].].].].].].].).).).).].).).).)._.).].).].].$X].).].).].).^.].I < < $ # , O 1 O 6 , O '.(.0 , 5 8 H.H.8 1 O I ].}.5 6 7 [ }. XP 5 5 P }.OX[ 6 # 5 X#X7 $ O # K.K.8 < < I ].$XU O , P ).).# 6 # [ {.(.G.6 6 # ).).T 1 # # # O $ 5 , # ~.).).(.).^.).).).^.$X).).).).].).].).].].].].(.].].].].].|.].].|.].].}.].}.}.].].].}.].}.].}.{.].].{.{.{.{.{.].].{.{.{.].].{.).", "{.{.).).].{.).).).).).).].).).].].).].).].].).).].].).].].].].].].].].].].].).$X).].].).].].).].).].).].].].].).].).).{.[.R # 6 5 7 # , 6 7 # 7 [ ~.].P.8 6 6 < 5 $ # 8 Y.[.XX7 # # [ {.{.I O # I X X[ 5 # # .X#XO 6 5 8 , 5 6 $ 6 E ).].I 7 7 R ).).# 5 7 E (.].E # O 7 ].^.W.I # 8 1 1 Y 5 # 7 [._.(.(.).~.].).).)._.).).$X).).].).).].).].].].`.(.].].(.`.].].].{.].].}.[.].[.}.}.].}.].].].].].].).).).].].{.{.].{.{.].{.].{.", "].].].].].).).^.).)._.).).].].).).{.).].$X).].].).].].].].].].{.{.{.{.{.].].{.].).].[.].).).].].).[.].].].].].[.).(.].)./.Y 7 5 6 6 6 < 6 8 R [ ].^.^.].Y.I , 6 , , R Y.{.{.].O 5 1 [ [. XY , # Y X XG.1 O 8 XXX8 O 7 ' I 5 7 7 ` [.oX).R , 1 I ).).1 O 7 E {./.[ 1 , , ).].[.(.K.{ E W.[ , , # [.).].(.).^.).^.).).).).).).).).).].].].].].`.].].].(.].(.|.].}.].].{.{.}.}.{.{.{.|.[.{.].}.].].].).{.{.).{.{.{.{.{.).$X].].].{.", "].].].{.).].].).].].].).).].].].].].].].].].].].].].].}.{.{.}.{.{.}.}.{.{.{.{.].].].].].}.[.].].].].].].].].].].].].[._.{./.'.[.).~.(.].[.[._.$X].$X].).).[.'.J.J.'.[.}.{.oX{.}.|.}. X].}.{.|.|.[.|.|.OX[.AXOXoX{.OX X.X X.XY.J.'.|.].).].}.'.].].^.^.'.].'.~.~.).].(.[.'.].).1 8 I [ [.].R 8 $ , ~.).(.(.).).).^.).).).).).$X).].).).].).].).].(.].].].].].`.{.].{.{.{.{.}.{.{.{.{.}.}.{.].].].].].{.).).{.).{.].].].{.].).].].).", "{.].].].].].$X].).).).{.].].[.].{.].].].].[.].].].{.{.{.{.}.}.{.}.oXOX}.}.oX{.{.{.{.].{.].].{.].].].].].].].].].].{.{.).).$X).`.).).).`.^.^.).^.).$X[.).].$X(.{.{.].oX{.{.|.}.{.oXoX]. X.X}.}.}.OXOX{.}.OXOX}.}.+X}.OX{.+X}. X}.oX].].oX[.].(.).~.).)./.~.).).].(.)._.).).^.].8 6 O , I I # # O Y E.).)._.).).).).).).).).).).).).`.].].].`.].).].(.].].).].].].].{.{.}.}.{.oX{. X[.].}.{.].].].{.).{.{.{.).{.).).].].).].).].).).", "].{.}.].].].$X].{.{.].].].].].].].{.{.].].}.].].{.{.].}.}.{.oX}.}.}.}.}.}.}.}.}.].}.{.{.oX].oX{.}.].].[.{.].].].].].{.{.).].$X).).$X].(.$X).{.].].].].].).{.oX{.$XoX{.{.|.{.OX$X$XOXoX X XOX}.}.oX X.X+X}.|.&XOX|.OX}.OX}.}.}.{.$X{.}.[.].].).$X].].).].].).^.].]._.$X_.$X^.~.K.6 8 < < 6 6 , 0 %X^.).].).^.).).).`.).).).).].).$X].).].].].].].].(.].].{.{.{.].{.{.{.}.}.}.}.}.}.}.}.}.oX].].].).].).).).].).{.).].].).).].].).{.", "{.{.}.[.].].].{.{.{.{.{.].[.].].].].].{.].}.].}.].}.}. X}.}. X}.}. X}.}.}.}.}.}.}.}.}.].}.}.{.{.].}.}.}.}.}.}.[.{.|.].{.].].).$X).].{.{.{.(.].].).{.(.[.].{.{.{.oXoX[.}.OX$X X X X$X].oXOX{.oX}.}.OXoX X}.&X}.+X.X XOXoX|.}.}.}.oX].].].].].].].].).).)./.`.(.`._.~.).).)._.].).Y.[ Y I R Y E Q._._._._.^.).).`.).$X).).).).).).).].`.).$X`.].).].].].].{.{.}.}.}.{.}.}.}.}.}.}.}.}.}.].oX].].].{.).).).).].].).].].).].).].).].).", "}.{.{.].{.{.{.{.].{.$X{.}.].].].{.].].{.}.].}.]. X}.}.}.}. X}.OX XOXOXOXOX X X X}.}. X}.}.}.oXoX}.}.].}.}.].}.}.].|.{.$X].].{.).$X`.`.$X^.].).$X].].}.}.{.{.{.{. X{.}.oXOX].}.}.OX}.OX X}.OX X XOXoX X.X XoX+X.X}.oXoX X}.{.].oX$XoX].].{.{.).).].).].(.}.E.]._.^.~.Q.)._.).^.`.E.^././.W.~.^.).^.(.~.].!.).^.].).).).).].).).(.).`.].).).].].].[.].].].].].].[.{.}.}.{.}.{.}.}.}.}.}.}.].].].].).].].{.).).).).].).].).].).].).{.", "}.}.}.}.{.}.oX].{.oX{.oX].{.{.{.oX].].}.}.$X}.}.OX}.}.oX}.OXOX}.OX}.OXOXOXOX}. X}.|.}.}.}.}.}.}.].}.}.}.{.}.{.}.G.[ [ $XoXJ.[ [ T.).$X[.).$X).[.$XoX].].).oXoXoX].{. X{.}.OX[ [ Y.}.}.+X X&X|.OX XoXOXOXOX}.OXOX.XOXOX XOX XoX$X}.].).{.{.].).{.^.oXJ.I I ^._.).W.Y I R E !._.~.).^.~.E I R ~.[.!.).!.E I P ^.].).{.).).).).).].$X`.).].).].).).].].].].{.oX].}.{.{.}.{.{.oX}.}.}.}.}.}.].].].].).].).].).).].).).].].).).).).).).", "}.}.oX}.}.}.}.}.}.}.{.{.{.{.{.{.].}.}.].}.}.}.}.}.}.OX+XOXOXOXOXOXOXOXOXOXOXOX XOX X X X}.}.}.}.}.}.].].}.}.oX{.I 6 1 $X].[ 7 # P.].{.].).$X[.].{.$X).{.oX{.).|.{.}.[. X}. X# O [ .X X.X|.oX X.X+X{.#X.XOXoXOX X.X.XoXoX[. X}.}.XX[.{.{.{.).{.).[.Y.I $ O {.].R.8 8 8 0 O Y [.Q.T.~.[ , # % ].^.).(.E O 7 # (.).).].).].).{.).].).].].).].).).].].].}.].].].}.}.{.{.}.}.{.}.}.}.}.{.].oX].}.].].].].].).].).).).).).).].{.).$X).].", " X}. X}.}.}.oX}.}.{.}.oX}.}.{.oX}.{.}.}.}.].}.}.OX}.OXOX}.+XOXOX+XOXOXOXOX X+X X X X X X}.}.}.{.}.}.}.oX}.}.}.}.U < , ].{.[ O 7 Y.'.{.H.G.[ [ '.}.(.J.Y.'.H.{ J. Xv.G.J..X X5 6 ' G.G.'..X+XY.Y.'.OXJ.Y.'.+XJ.%X'.{ H.|.'.[ [ '.J.J./.{.].).].).R 1 5 5 8 Q.[.E # 0 ~.W.8 8 H.^.R.H.# # 5 7 ~.^.(.H.# # O 5 (.).).).).].).).].).).).).].{.).).{.].].[.].{.{.].[.}.{.{.}.}.}.{.}.}.}.}.{.{.$X].].].).].(.).).).].{.).).).).).).).^.", "|. X X}.}. X}.oX{.oX}.|.}.{.}.}. X}.}. X X X X XOX}.OXOX+X+XOX+XOXOXOXOXOXOX+X XoXOX+XoXOXOXOX}.}. X}. X}.}. X}.P 5 , G.[ U 5 5 J. XY # , 1 O 8 '.|.1 , I , 7 , I 1 % 1 Y.}.7 < # < # 8 '.XXO 1 K. X8 # K. X# # 9 8 I XX1 # 8 I 7 1 K.{.].].{.].< 8 Y O # ^./.E 6 I ~.~.I 1 E !.P.# I R 7 # ~.^.J.8 I Y < 6 ].].{.).{.).{.).).].].].).].).].$X).].].{.].].].}.}.{.}.{.}.}.{.}.{.{.{.].{.{.].].$X).].).].].(.).(.).).).).).).$X).).", "}. XOX}.OX}.}.}.}.}.}.}.}.}.|.oX|.oX}. X X X XOXOXOX+X+X@X+X+X+X+XOX+X+X+X+X+X+X+X+XOXOXOX}.}.OX X X}. X X}. X}.P 6 O 8 , 6 6 # P.].[ Y [ J.8 # [ XX# O R K.$ # I J.# 5 G. X8 # Y XX8 8 Y AX5 O [ @X# , ' ZX# 7 8 K.'.G.1 1 K.G.# 1 K.].).).].].G.%X[ , 7 _.).H.5 7 G.E O # E T.I O H.b.O 8 /./.0 7 J.[ < 7 [.[.).].).{.).].).).).].`.].].].].{.}.].].].].}.}.}.{.{.}.}.}.{.{.{.{.{.{.{.].].].).{.).).).)._.).).).$X).).).).).).).", "+X+X XOX X XoX XoX|.}. XoX}. X X X X X}. XOX}.OXOXOXOX+X+X+X#X+X+X+X+X@X#X+X#X+X+X+X+X+X+XOXOXOX X X X X X}.}. XY O , [ [ U O 7 Y.].W.[ U 7 O 5 b. X# 8 T XX# < b.XX5 6 [ .X# 5 [ .XI # R XX6 5 G. X7 , G..X5 5 [ .X|.{ 8 O XXK.# # J.}.{.{.(.].].$XE < # ).).!.T , 1 1 8 5 [ R # I E 9 , # T R < 0 E I 5 , E ].{.(.{.(.(.(.].{.].).].].].].$X].].}.}.].].].}.].{.}.{.{.{.oX{.}.{.{.{.{.].).].].).].].).).)._.).).).).)._.).).).).", "OX XOX X X X X X XoXOX}.}.OX XoX XoXOX+XOX.X.XOX.X+X+X+X#X@X@X@X+X+X+X+X+X+X@X+XOX+XOX+X+XOX+XOXOX XoX X X X XoXP 5 O }.{.G.5 # J.'.7 7 Y J.7 5 [ |.O # [ {.5 $ G.|.$ , [ X5 $ G.ZXP 7 R ZXO 7 F.ZX# 5 G..X# # G.#XoXH.O 1 %XK.# O K.}.].].].].).).[ 6 < ~.~._._.{ v.P.I 1 G.I # # 5 5 # 7 , P , , , 7 $ 6 1 [.).].).].{.).).).).).].].$X].{.].].].{.].}.}.$X}.}.].}.}.{.{.{.{.{.{.].].].].).].].).).).).).).).^.^.).).).$X_.).).", "OX+X}.OX XOX X X X.X X+X X X X X+X+XOX+XOX+X XOX#X+X#X@X+X@X@X@X@X+X@X+X+X+X+X+X+X+X+X+X+XOXOXOXOXOXOX X X}. XOXU # # .X|.[ , # J.J.8 5 [ F.7 1 [ {.5 1 K.}., $ [ }.5 O G..X5 6 0 J.# O K.ZX8 # I Y O 6 G..XO 7 { X X/.8 # 0 8 # 7 J.].$X].).[.]._.[ 5 7 '.!.U.7 1 T E % 8 T.E [ T [ I # O [ v.T [ [ P , O [ ).].).].).].).{.).].].].].].{.].{.].].].}.].].].].}.].oX{.oX{.$X{.{.{.$X$X].].].).).].].].).).).).).).^.).).).).).).", "OXOXOXOX X+X XOXOXOXOXOXOXOXOXOXOX+XOX+X+X+X+X@X+X+X#X@X@X@X@X@X@X@X@X+X+XOX+X+X#X+X+XoXOX+X+X+XOXOX+X X X X X}.Y O 8 XXOX[ # , Y..XP # 1 I I 1 _ }.7 7 [ OX1 # { X# 5 G.OX8 # _ 5 5 I .X.X[ , O I I 8 K.XX7 1 G.#X X[.J._ Y G.# , J.[.].$X].].`.].[ 1 1 W.).!.b.5 8 , 1 J.E.`.E.E.W.E 1 1 %X^.).).[.[ 1 1 /.].).).].).).).{.).).{.).{.{.].].{.].].].}.}.].].].].}.$X}.$XoX].}.}.].].].].].].].).{.).).(.).).(._._.^.^.).).).).).", "+XOX+XOX X+X+XOXOXOXOX+XOXOXOXOX+X+X+X#X#X@X@X+X@X@X@X@X@X@X&X@X@X+X+X+X+X+X+X+X+X+X+X#X+X+X+X#XOXOXoX+X X XoX+X X.X.X&XoXoX XOX}.|.}.J.Y. X+X|.OXoXXX}. XoX}.|. X|..X X#XoX.X.X.X'.'.@X@X.X.X'.%X.X+X.X}.@X@X X.X[. X%XI F.J.G.# , Y.[.).).`.$X`.^._.(.~.^.E.^.^.T.H.H.~.R.`.E.E.`.!.(./._.$X!.^.).).!._.!.oX).).].].).).).).].).).].).(.].].{.].}.].].].].}.}.].}.].$X}.}.}.].}.].].].{.].].].).{.).).).).)._._._.).^._.).).).).", "+X.X X.X.X+X.X+X+X+X+X.X+X+X+X+X+X+X+X#X@X@X@X#X@X+X+X@X@X@X@X@X&X+X+X+X+X+X+X+X+X#XoX#XOXOXOX+XOXOX+XOX X XOXOX.X+X+XOX}.OXOX X+X{.OX#X.X X XoX+XoX|.}.OX{.}.oXOX+X X+XOX+XOX@X.X@X@X.X.X@X+X.X@X+XOXOX+X@X XoX+X{.OX[.8 # 5 , , R [.{.].].).^.(._._.Q.Q.^.Q.Q._.^.!.!.^.!./.!.~.~.Q.~.^.).Q.[.).).^.^.).(.~.).).].).).).$X).).(.).].].].).{.).}.].}.}.].].].].].oX{.}.oX].].}.].].].].{.$X).$X{.).].).(.).).(.^._.(.^._.).).).).", "+X+X+X+X+X+X+X&X+X+X@X@X@X.X@X+X+X+X@X@X@X@X@X@X@X@X#X@X+X@X@X@X+X+X+X.X+X+X+X+X#X+X#X+X#X+XOXOXOXOXOXOXOXOX+XOX.XoX+X+X+X X}.}.{.oX+XOX X X XoX X|.}.}. X|.}.|.+XoXoX+X+XoXoX+X&X@X+X&X+X@X+X.X+X+XOX+XoX+X+XoX XOX{.+X'.K.[ { K.'.{.^.].^.].).(._.)./.(._.!.Q.!._.T.!.Q._.T.!.~.~.!.~.^.!.!.!.~.).]./.]._.~.).).).).).).).).$X].).).).).{.).].].].].].].}.].].].].].].].].oX].].}.}.[.{.).$X).).].).).).).).!.^.).^.^.[.).).).).", "+X+X+X+X&X+X.X@X@X@X@X@X@X@X@X@X+X@X@X@X@X@X@X@X@X@X@X@X@X@X+X@X+X+X.X&XoX+X+X+XoX+X+X+X+X+X+X#X X.X.XoX+X.X+X.X#X+X#XOXOXOX+XOXOX+XOX[.OX#XOXOXOX X+XOX X X XoXOX X+XOX#X#X#XOXOX#X@X+XOX#X+X+X#XOX#X#X+X.XOXOXOXoX}.{.|.|.].{.].{._.).].].).).(.).^.(.~._.!.!.!.E.^.E.`.E.~.~.!.!.^._.^.!.).^.(.~.]._._.!.$X~.).).).).).$X).).).).).).).].$X).].].{.{.].].].}.].}.].}.].oX}.$X{.{.{.{.].).$X].).].).).(._._.)._.^.~.).).).).).).", "@X+X@X@X+X+X@X@X@X@X@X@X@X@X@X@X@X@X+X@X@X@X@XAX@X@X+X@X@X+X@X@X.X+X.X X#XoX+X+X+X+X+X+X+X+X+XOX+X+X+X.X+X+X+X.X.X+X+X+X+XOXOXOXoX+X X+XOX}. XOX|.OX}. X X}.oX+XOX XoX}.#X XOX@X+X#X+X+X@X}.oX+XoX+X+X}.+XOX+X+X|.oXOXoX}.{.{.].$X).].]._.].(.).(.).^.~.Q.^.~.Q.E._._._.Q.Q.E.Q.Q.Q.^.Q.^.^.Q.^.(.~.!.~.^.)._.[.).).).).).).).).).].).].].].].$X].[.[.].].].}.].].].].}.].].].].{.{.].{.].].].].].).[._.).).)._.(.^.).~.).).).).$X", "@X@X+X@X@X+X@X@X&XDX@X&X@X@X@X@X@X@XAX@X@X@X@X@X@X@X@X@X+X+X+X.X+XOX+XOX+X#XoX#X+X+X#X+X+X+XOX+X+XOX.X X.XoX.X+X+X#X+X+X+XOX+X+XOX+XOX+XOXOXOXOXOXOXOXOXOX X X XOX}. XOXOXOXOX+X+X+X+X+X+XOX X X X X X+X+XOX X X X}.}.}.}.{.{.{.].(.].).).).).).^.^.(.~.Q.Q.Q.~.!.!.!.!.Q.^.Q.^.~.Q.!.!.!.^.^.).~.^.).^.^.).^.^.).).^.).).).).].).{.).{.).).].].{.{.{.].{.}.].].].].].].}.].}.].].].{.{.{.{.].).].).).).).(.).(.).).)._.)._.).).).", "@X@X@X@X@X@X@X@X@X@X@X@XDX@X@X@X@X@X@X@X@X@X@X@X@X@X@X@X@X+X+X+XOX+X+X+X+X+X#X+X+X+X+X+X+XoX+XOX+XOX+X+X+X.X+X@X@X+X#X+X+X+X+XOX+XOXOXOXOX+XOXOXOXOXOXOXOX X X X X X XOXOX+XOX+X+X+X+X+XOXOXOXOX X XoX+XOXOX X X}. X}.oX}.}.{.].].).].).).).^.).)._._.~.Q.Q.Q.Q.!.!.!.E.Q.Q.^.Q.Q.^.~.!._.^._.^.(.^._.^.^.^.~._.).).).^.).).).).).).).).).[.[.$X$X{.{.].].].].].}.[.$X].].].}.].].{.).{.).{.).).).].).(.].).).(._.~.).).).).).).).", "@X@X@X@X@X@XAX&X@X@X@X&XFX@X@X@X@X@X@X@X@X@X@X@X@X@X@X@X@X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+XOX+X+XOXOX+X+X+X+X+X@X@X@X@X+X+X+X+X+X+X+X+XOX+XOXOXOX XOX XOX+X}. XOX XoXoXOXOXOXOXOX+XOXOXOXOXOX X X X X X XOXOXOX XOX}.}.}.}.{.{.{.).].(.).).).^.).~.!.!.!.Q.Q.Q.Q.Q.Q.!.Q.Q.!.Q.!.!.~.!.Q.~.!.~.).^.).^.^.(._._.^.^.).^.^.).).).(.).).^.{.).].].].oX].].].{.].].].].].].$X].].{.].).{.].].).].).].).].).).).].).(.).).).).).).).).).", "@X@X@X@XFX@X@X@X&XAX@X@X@X@X&X@X@X@X@X@X@X@X@XDX@X@X+X@X@X+X+X+X+X+X+X#X#X+X+X+X+X+X+X+XOX+XOXOX+X+X+X+X+X@X@X@X@X@X@X@X@X+X+X+X+X+X+X+X+X+XOXOX+XOXOXOX+X+X X X XOX+X+X+X+XOXOXOXOX+XOXOX XOX X X+XoX X XOX}.OXOX}.}.{.}.{.{.{.].].].(.)._.).^.~.!.~.Q.Q.Q.Q.Q.Q.Q.Q.~.Q.Q.Q.~.^.Q.!.!.!.~.~._.^.(.(._.^.^.~.!._.~.~._.~.).).).).).{.).{.].].].].].].].{.].].].].].].`.).].].].{.).$X).].].).].).].(.).).(.).(.).).).).).].).).).", "&XAX@X@X@X@X+X@XFXFX@XFXFX&XDX@X@X@X@X@X@X@X@X@X@X@X+X@X+X+X+X+X+X+X@X+X#X#X+X+X+X#X+X+XOXOX+XOXOX+X+X@X#X#X+X@X@X@X@X+X@X+X+X+X+X.X+X+X+X+X+X+XOX+X+XOX X+X}.OX}. X XoXOXOXOXOX+X+X+XoXOX+X X X XoX X X}.OXOX}.}.OX}.}.{.{.{.{.].(.].(._.).~.^._.~.!.Q.Q.Q.Q.Q.Q.Q.Q.Q.~.Q.Q.!.!.Q.~.!.^.(._.^.).^._.~.~._.!.!.~.~._.~._.~._.^.(.].).).].}.].{.].{.].].].{.).].].].].].].].].).).{.).{.].].].).).(.].(.).).).).).).).).).].].).).", "@X&XFX@X&X@XFX@X@X@X@X@X@XAX@X@X@X@X@X@X@X@X@X@X@X@X@X@X+X+X+X+X+X+X+X+X+X+X+X#X+X+XOXOXOX+XOXOX+X+X#X+X@X@X@X@X@X@X@X@X@X@X+X+X#X.X+X.X#X+XOX.X+XOX X+X+XoX X XOX X X XOX XOXOXoX XOX+XOX}.OX XoX X X}.OX}.}. X}.}.}.}.{.oX{.].].].).).).~._.(.^.~.!.!.Q.R.^.^.Q.Q.~.Q.Q.Q.!.~.!.~.!.!.^._.^.(.^.^.~._.^.~.~.!.~.!.~.~.~._._.~.).).].{.].].].{.{.].{.{.{.].{.{.].].].].].].].].{.).{.).`.].).].].).).).].].].).).].].).].).).].)." }; micropolis-activity/images/tiles-63.xpm0000664000076400007640000000511710724145723020400 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "58 39 7 1", " c black", ". c blue", "X c #0000BFBF7F7F", "o c red", "O c #BBBB0000FFFF", "+ c #FFFFBBBB0000", "@ c gray69", /* pixels */ "@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@ @@@@@@@@@ @@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@", "@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@", "@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@", "@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@", "@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@", "@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@", "@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@", "@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@", "@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@", "@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@", "...@@@...@ @@@@@+++@@@@@@@OOO@@OOO@@@@@@oo@@@@@@@XXXXX@", "...@@@...@ @@@@++++@@@@@@@@OO@OOO@@@@@@@oo@@@@@@XXXXXXX", "....@....@ @@@@++++@@@@@@@@OOOOO@@@@@@@@oo@@@@@@XX@@@XX", "....@....@ @@@@+++++@@@@@@@@OOOO@@@@@@@@oo@@@@@@XX@@@@@", "....@....@ @@@++@@++@@@@@@@@@OO@@@@@@@@@oo@@@@@@@XXXXX@", "..@...@..@ @@@++++++@@@@@@@@OOOO@@@@@@@@oo@@@@@@@@@@@XX", "..@...@..@ @@@+++++++@@@@@@OOOOO@@@@@@@@oo@@@@@@XX@@@XX", "..@...@..@ @@++@@@@++@@@@@@OO@OOO@@@@@@@oo@@@@@@XXXXXXX", "..@@.@@..@@ @@++@@@@++@@@@@OOO@@OOO@@@@@@oo@@@@@@@XXXXX@", "@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" }; micropolis-activity/images/scham.xpm0000664000076400007640000001026010724145723020120 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "67 57 7 1", /* colors */ "` c #000000", "a c #00BF00", "b c #3F3F3F", "c c #3F3FFF", "d c #BF7F3F", "e c #585858", "f c #DFDFDF", /* pixels */ "```````````````````````````````````````````````````````````````````", "``fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff``", "`f`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`e`", "`ff`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`ee`", "`fff```````````````````````````````````````````````````````````eee`", "`fff`dddddddddddd`dd`cddddccccdddddddd`d`ddddddd`ddddddddddddd`eee`", "`fff`dddddddddddd`dddcddddccccddd`ddd`dd`ddddd`d`ddddddddddddd`eee`", "`fff`dddaaaaddddd`dd`c`ddd`ccdd`dd`bbb`ddddddd`d`ddddddddddddd`eee`", "`fff`daaaaaaddddd`dddccddddcc`ddd`cbbbdddddddddd`dd`dd`ddddddd`eee`", "`fff`daaaadd`dd```dddccd`ddccddd`ccccbbd````d`````````bbd`dddd`eee`", "`fff`daaaaddddd`b`d`ddccdddcc`dbbcccc``d`bbbbbbbbbbbbbbbdddddd`eee`", "`fff`daaaaddddd`b`dddd`ccd`ccb`bbcc``````b```bbbbbbb`````ddddd`eee`", "`fff`ddaaadd`ddbb`ddd`b`ccccbbbbbcc``````b````bb`````````ddddd`eee`", "`fff`ddaad`ddd`b````ddbb`cccbbbb`cc`b````bb```bb````````dddccc`eee`", "`fff`dddddd`````b`ddd`bbb`cccbbb`cc```````b`bbb````````dddccc``eee`", "`fff`ddddd`b````bb```ccccccccbbbcccccccbbbbb`bbddddddcccccbb`d`eee`", "`fff``dd```b````b`bccccccccccbb`ccccccccbbbbbbccccccccc`d`bbdd`eee`", "`fff`````````````bbccbbccccccbbbcccccccccccccccccbbd`d`d`d`ddd`eee`", "`fff`ddd```````ccccc`bb``bbcccbbcccccccbbbbbbbbbbbbddddddddadd`eee`", "`fff`dddddcccccccccbbbbbbbbbccccccccbbbbb````````b`dddaaaadadd`eee`", "`fff`dd`d`d`d`d`dd```b`bb``bbcccccccbbbbbbbbbbbbbb`d`dddaaaadd`eee`", "`fff`ddd`dddddddd``````````bbbcccccc`b````bb````bb`d`dd`dddadd`eee`", "`fff`ddaddddd``````````````bbbbcccccc```````bbbbbb`d`ddddddadd`eee`", "`fff`daaaaadd`bbb``````bbbbbbb`cccccc`````bbbb`bbb`d`dd```dddd`eee`", "`fff`daaadd```b`bbb````bbb```b``cccccc````b````bbb`d`ddddddddd`eee`", "`fff`daaddddd`b`bbbbb``b`````bb`ccccccbb``b`````bbb``dddd`dddd`eee`", "`fff`daaddbbb`b`bbb````b````bbb`ccccccbb``bbb```bbbb`d`ddddddd`eee`", "`fff`ddd`bbbbbbbbbb````b````bbbbccccccbb``bbb```bb`b```````ddd`eee`", "`fff`d``bbbbbbbbbb````bb`````bbcccccccbbb``bb```bb`bbddddddddd`eee`", "`fff``````````````````b``````bbcccccccbbb``bb```bb`bbdddaddddd`eee`", "`fff``dd`b`````````````bbbb``bbcccccccb`b```b``bbb`b``dddadddd`eee`", "`fff`ddd``````````````bbbbbbbb`cccccccbbb````b``bb`b`dddaaaa`d`eee`", "`fff`ddd`dddddd`bbbbb`bbbbbb``cccccccbb``````b``bbbbbddaaaaadd`eee`", "`fff`ddd`dddddd`bb```````````c`cccccbb```````b`bbb`bbddaaadadd`eee`", "`fff`ddd`ddd````````````bbbbbccccccbb````````b```b`bb```daaadd`eee`", "`fff`ddd`ddddddddd`bbbb`bbbbbcccccbbb````bb``b```b`bbddddaaddd`eee`", "`fff`ddd`dddddddddbbbbbbbbbbbccccc````b``bb``b```b`bbddddaa`dd`eee`", "`fff`ddd``dddddaad`bbb``bbbbcccccc````b``b```b```b`bb````ddddd`eee`", "`fff`ddd`d`ddddaaa`bb`b```b`cc`ccc````bb`b```bbb`bbbbbbdd`dddd`eee`", "`fff`ddd`dd`dddaaa`bbbbbbbb`cc`cc`bb``bbb``````````````ddddddd`eee`", "`fff`dad`ddd`ddaaa`bbbb`bb`cc`cc`bbb``b`````````````dd`ddddadd`eee`", "`fff`add`dddd`dddd`bbbb`bbbcb`ccbbbb``bb`bbb````bbaadd`daaaadd`eee`", "`fff`add`dd`````````bb````cc``ccbbbb`bbbbbb``bbbbaaa`d`````ddd`eee`", "`fff`dddddddddd`bbbbbb````cdd`c`bbbb`b`bbbb```bbbaabaaaaaad``d`eee`", "`fff`ddddddddddd`bbb```````dd`b`bbbbbb`bb`````baabaaaaaddaddd``eee`", "`fff`cccddd`ddd````b```dddddd`bbb```bbbbbbbbbbbaaaaaaaaadaaadd`eee`", "`fff`ccccdddd`````bb````````d`bbb```bbbb`````b``bbb``aaaaddadd`eee`", "`fff`cccccccccccccbb`cccccccc`bcccccccccccc``bbb``````aaaadadd`eee`", "`fff`ccccccccccccccccccccccccccccccccccccccccccccccddddaaaaddd`eee`", "`fff`cccccccccccccccccccccccccccccccccccccbccccccccccddddadddd`eee`", "`fff``b`d`b`d`d`ddcccc`ccccbb`bbbbbbbbbbbbbbbbbcccccccdddddddd`eee`", "`fff`bbddd`dddddddddd```bbdddddddddddddddddddddddccccccddddddd`eee`", "`fff```````````````````````````````````````````````````````````eee`", "`ff`eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`ee`", "`f`eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`e`", "``eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee``", "```````````````````````````````````````````````````````````````````" }; micropolis-activity/images/obj4-2.xpm0000664000076400007640000000530110724145723020022 0ustar simcitysimcity/* XPM */ static char * obj4_2_xpm[] = { "48 48 10 1", " c None", ". c #00000000E6E6", "X c #000000000000", "o c #BFBFBFBFBFBF", "O c #7F7F7F7F7F7F", "+ c #3F3F3F3F3F3F", "@ c #CCCC7F7F6666", "# c #FFFF7F7F0000", "$ c #FFFFFFFFFFFF", "% c #FFFF00000000", " ", " ", " ", " ", " ", " . . ", " . ", " . . ", " . ", " . ", " . . ", " . ", " . . ", " . . ", " . ", " . . . ", " . . ", " . XXXX XXXX . ", " . XXXooO+X++X+OO+X++X+OOOOO ", " X+@@@ooOXXXXX#+OXXXXX#+OO$OoXXXXX ", " . X@@@@@ooOOX###XX+OX###XX+OOOoo@@@@+XX ", " . X@@@@@ooOOOXXXXXX+OXXXXXX+OOoo@@@+@@@+X ", " X@@@@@ooOOOOXXXX+OOOXXXX+OOOoo@@@@@@+@@X ", " X@@@@@ooOOOOO+++OOOOO+++OO$Ooo@@@@@@@@@X ", " X@@@@@ooOOOOOOOOOOOOOOOOOOOOoo@@@+@@@+X ", " X+@@@oXXXXXXXXXXXXXXXXXXXXXoo@@@@+XXX ", " XXXXXXXXOXXOXXOXXOXXOXXOXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " . %%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", " . ", " . . . ", " . . ", " . . ", " . . . ", " . . ", " . ", " . ", " ", " . ", " . ", " . ", " ", " ", " ", " ", " ", " ", " "}; micropolis-activity/images/tiles-4.xpm0000664000076400007640000000536310724145723020316 0ustar simcitysimcity/* XPM */ static char *tiles__[] = { /* columns rows colors chars-per-pixel */ "48 48 11 1", " c black", ". c #3F3F3F3F3F3F", "X c #00007F7F0000", "o c gray50", "O c #00000000E6E6", "+ c #0000E6E60000", "@ c #99997E7E4C4C", "# c red", "$ c #FFFF7B7B0000", "% c #CCCC7E7E6666", "& c yellow", /* pixels */ " ###############################################", " # #", " #++X++++++++++++++++++++++++++++++++++++++++X #", " #+X+++++++++++X+++++++++++X++++++++++++++++++ #", " #++XX++X++++++++++++++X+++++++++ooooooooooo++ #", " #X+XX+X+++++++++++++++++o+++++++ooooooooooo++ #", " #+X++++################o######## $$$oooOOOo++ #", " #+X+++## o #o$$$oooOOOo++ #", " #++++###.......o.....o........ #ooooooooooo++ #", " #+++####......o............... #.oooooo%%%o++ #", " #++##@##.....o................ #.oooooo%%%o++ #", " #++##@##....o................. #.oooooooooo++ #", " #++#####...................... #. oooooooo++ #", " #++#####...................... #. oooooooo++ #", " #++#@#@#...#########################ooooooo++ #", " #++#@#@#..##.......................#ooo ooooooo", " #++#####.###oooooooooooooooooooooo.#ooooooooooo", " #X+##@####@#oooooooooooooooooooooo.#ooooooooooo", " #++##@#@##@#oooooooooooooooooooooo.#ooooooooooo", " #++####@####oo.&&&&&&&o.&&&&&ooooo.#.oooooo++ #", " #++#@#######oo.&&&&&&&o.&&&&&&oooo.#.oooooo++ #", " #++#@####@##oo.&&.....o.&&..&&&ooo.#.oooooo++ #", " #++###@##@##oo.&&oooooo.&&oo.&&ooo.#.oooooo++ #", " #++###@#####oo.&&oooooo.&&oo.&&ooo.#@@@@@@@@@ #", " #++#@###@###oo.&&&&&&oo.&&oo.&&ooo.# @ #", " #++#@###@#@#oo.&&&&&&oo.&&oo.&&ooo.#....... @ #", " #++#######@#oo.&&....oo.&&oo.&&ooo.#..o ... @ #", " #++###@#####oo.&&oooooo.&&oo.&&ooo.#.....o. @ #", " #X+###@#####oo.&&oooooo.&&oo&&&ooo.#....o.. @ #", " #++#@#######oo.&&oooooo.&&&&&&.ooo.#...o... @ #", " #++#@###@###oo.&&oooooo.&&&&&.oooo.#..o.... @ #", " #++###@#@###oo...oooooo......ooooo.#....... @ #", " #++###@#####oooooooooooooooooooooo.#....... # #", " #++######@##oooooooooooooooooooooo.#....... # #", " #++#@####@##########################....... # #", " #++#@#@############################..o o .. # #", " #++###@###########################...o o .. # #", " #++##############################.......... # #", " #++#@####### ### ################ #", " #++#@###### @.@.@.### @.@.@.################+ #", " #++####### @.@.@.### @.@.@.###.##.######.##X+ #", " #X+###### @.@.@.### @.@.@.### .# .# ## .#XX+ #", " #++##### @%@%@%### @%@%@%######### #####XXX+ #", " #+++XXXXX.....XXXXX.....XXXXXXXXXXXXXXXXXXXX+ #", " #++++XXXX.....XXXXX.....XXXXXXXXXXXXXXXXXXXX+ #", " #++X++XXX.....XXXXX.....XXXXXXXXXX++++++X++++ #", " #######@@.....@@@@@.....@@@@@@@@@@#############", " ..... ..... " }; micropolis-activity/images/spacer.xpm0000664000076400007640000000063310724145723020305 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "126 2 2 1", /* colors */ "+ c #3f3f3f", "# c #bfbfbf", /* pixels */ "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#", "+#############################################################################################################################", }; micropolis-activity/images/sclctyhi.xpm0000664000076400007640000001022210724145723020645 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "67 57 5 1", /* colors */ "` c #000000", "a c #00FFFF", "b c #585858", "c c #FFFF00", "d c #DFDFDF", /* pixels */ "```````````````````````````````````````````````````````````````````", "``bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb``", "`b`bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`d`", "`bb`bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`dd`", "`bbb```````````````````````````````````````````````````````````ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaacccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacccaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaccc`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccc`aaaaaaaa`ddd`", "`bbb`aaaaaaaaaccc`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccc`aaaaaaaa`ddd`", "`bbb`aaaaaaaaaccc`aaaaaaacccccaaaaccccccaaaaaacccaccc`aaaaaaaa`ddd`", "`bbb`aaaaaaaaaccc`aaaaaacccccccaaacccccccaaaacccccccc`aaaaaaaa`ddd`", "`bbb`aaaaaaaaaccc`aaaaacccc`ccccaac```ccc`aacccc``ccc`aaaaaaaa`ddd`", "`bbb`aaaaaaaaaccc`aaaaaccc``accc`aacccccc`aaccc``accc`aaaaaaaa`ddd`", "`bbb`aaaaaaaaaccc`aaaaaccc`aaccc`cccccccc`aaccc`aaccc`aaaaaaaa`ddd`", "`bbb`aaaaaaaaaccc`aaaaaccc`aaccc`ccc``ccc`aaccc`aaccc`aaaaaaaa`ddd`", "`bbb`aaaaaaaaaccc`aaaaaccccacccc`ccc`accc`aaccc`acccc`aaaaaaaa`ddd`", "`bbb`aaaaaaaaaccccccccaaccccccc``cccccccccaaacccccccc`aaaaaaaa`ddd`", "`bbb`aaaaaaaaacccccccc`aaccccc``aaccc``ccc`aaaccc`ccc`aaaaaaaa`ddd`", "`bbb`aaaaaaaaaa````````aaa`````aaaa```aa```aaaa```a```aaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaacccccccacccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaacccccccc`ccc`aaaaccaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaacccc````c`a```aaaccc`aaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaacccc``aaaa`cccaaacccccccccaaaaaccaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaccc``aaaaaaccc`aacccccc`cccaaacc``aaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaccc`aaaaaaaccc`aaaccc```ccc`aacc`aaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaccc`aaaaaaaccc`aaaccc`aaccccacc``aaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaccc`aaaaaaaccc`aaaccc`aaaccc`cc`aaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaccccaaaaaaaccc`aaaccc`aaaccccc``aaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaccccaaaacaccc`aaaccc`aaaacccc`aaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaacccccccc`ccc`aaacccccaaaccc``aaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaacccccc``ccc`aaaacccc`aaccc`aaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaa``````aa```aaaaa````aacc``aaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccc`aaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccc``aaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ddd`", "`bbb```````````````````````````````````````````````````````````ddd`", "`bb`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`dd`", "`b`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`d`", "``ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd``", "```````````````````````````````````````````````````````````````````" }; micropolis-activity/images/gr10.xpm0000664000076400007640000000410610724145723017600 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "69 26 6 1", /* colors */ "` c #000000", "a c #3F3F3F", "b c #727272 m #ffffff", "c c #FFFF00", "d c #FFBB00", "e c #DFDFDF", /* pixels */ "`````````````````````````````````````````````````````````````````````", "``eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee``", "`e`eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`b`", "`ee`eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`bb`", "`eee`````````````````````````````````````````````````````````````bbb`", "`eee`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`bbb`", "`eee`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`bbb`", "`eee`aaaaaaacddaaaaacddaaaaaacdddaaacddddddddaaaacddddaaaaaaaaaa`bbb`", "`eee`aaaaaaaacdaaaacdacdaaaaaacddaaacdacdaacddaacdaacdaaaaaaaaaa`bbb`", "`eee`aaaaaaaacdaaacdaaacdaaaaaacddacdaacdaaacdaacdaacdaaaaaaaaaa`bbb`", "`eee`aaaaaaaacdaaacdaaacdaaaaaaacdddaaacdaaacdaacddaaaaaaaaaaaaa`bbb`", "`eee`aaaaaaaacdaaacdaaacdaaaaaaacddaaaacdaacddaaacddaaaaaaaaaaaa`bbb`", "`eee`aaaaaaaacdaaacdaaacdaaaaaaaacdaaaacdddddaaaaacddaaaaaaaaaaa`bbb`", "`eee`aaaaaaaacdaaacdaaacdaaaaaaaacdaaaacdcddaaaaaaacddaaaaaaaaaa`bbb`", "`eee`aaaaaaaacdaaacdaaacdaaaaaaaacdaaaacdacddaaacdaacdaaaaaaaaaa`bbb`", "`eee`aaaaaaaacdaaaacdacdaaaaaaaaacdaaaacdaacddaacdaacdaaaaaaaaaa`bbb`", "`eee`aaaaaaacdddaaaacddaaaaaaaaacdddaacdddaacdddcddddaaacdaaaaaa`bbb`", "`eee`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`bbb`", "`eee`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`bbb`", "`eee`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`bbb`", "`eee`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`bbb`", "`eee`````````````````````````````````````````````````````````````bbb`", "`ee`bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`bb`", "`e`bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`b`", "``bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb``", "`````````````````````````````````````````````````````````````````````" }; micropolis-activity/images/tiles-133.xpm0000664000076400007640000001030710724145723020453 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "67 57 7 1", " c black", ". c #3F3F3F3F3F3F", "X c #585858585858", "o c #3F3F3F3FFFFF", "O c #0000BFBF0000", "+ c #BFBF7F7F3F3F", "@ c #DFDFDFDFDFDF", /* pixels */ " ", " @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ", " @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ X ", " @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ XX ", " @@@ XXX ", " @@@ ++++++++++++ +++++++++++++++++++++++++++++++++ XXX ", " @@@ ++++++++++++ +++++++++ +++O++++++++++++ +++++++++++OO+++ XXX ", " @@@ + ++ +++ + + ++ ++ O+++++++ +++OOO++++OO++ XXX ", " @@@ ++++ +++++++++++ ++ +++ +++O++O++++ . ++++OO+OOOOO+O++ XXX ", " @@@ + ++ +++++++ ++ ++ ++++ +++O+O++ + . +++++OOOO+++O+++ XXX ", " @@@ + +++++OO+ + ++++++ +++OOO+ + . ++++++++.+++++++ XXX ", " @@@ + ++++O+++++++ + ++ +++.OO......... .+++++++ .+++++++ XXX ", " @@@ +++++O+++++ + +++ ++ .. + ..... ....... ++.++O+++ XXX ", " @@@ +++++ OOOO+ . +++ ..... . .. . ..+++++ XXX ", " @@@ +++++OOO+O++ .. ..... . .. ......... .++o XXX ", " @@@ ++++++++++++ ..... ..... .... .............++o XXX ", " @@@ +++++ +++++++ ......... ... . ... .... ... .....+oo XXX ", " @@@ +++++++++++++ ....... . ... ++oo XXX ", " @@@ ++ . . .. .. . ...++oo XXX ", " @@@ ++++ ++++++++ .......... .. . . .. .. ........+ooo XXX ", " @@@ ++++ ++OO++++ .. ... ........ .. .. .. ....ooo XXX ", " @@@ ++O+ ++OO++++ .. ... .... .. .... .. .. ..oooo XXX ", " @@@ ++O+ +++ + + .. .... ........ ...... . .. . o.oo XXX ", " @@@ ++++ +++ ++ .. ..... ........ .... . . . . . oooo XXX ", " @@@ . .. . ... . . . .ooo XXX ", " @@@ ++++ .. . . .. ..... ........ ... . .... ..oo XXX ", " @@@ ++++ . . .... ... ........ ... .... ...oo XXX ", " @@@ ++++ . .... ... ... .. . . .... .... oo XXX ", " @@@ ++++ ..... .. ......... ... .. .. .. .ooo XXX ", " @@@ + . ... . .ooo XXX ", " @@@ ++++ . . ... . ... . .ooo XXX ", " @@@ O+++ . . . . .. . . .... . .. .ooo XXX ", " @@@ +O++ . . . . .. ..... .. .ooo XXX ", " @@@ +O++ . . .. .. .. . . .ooo XXX ", " @@@ +O++ . . .. .. ..O . .. . ... .. . ..ooo XXX ", " @@@ . . . . .. . ..oooo XXX ", " @@@ ++++ .. . .. .. .. . . ... . .. O...oooo XXX ", " @@@ ++++ .. . . . . ... .. ... ... . .... ..oooo XXX ", " @@@ ++++ .. . . . . ... .. O O .O.O.... oooooo XXX ", " @@@ ++++ .. O . oooooooo XXX ", " @@@ ++++ .. .. O .O... ........ ...oooo +++oo XXX ", " @@@ ++++ . ... ... ........ ..o..ooo+ +OO+oo XXX ", " @@@ ++++ .. . . ... . ooooo.ooooo++ +O++oo XXX ", " @@@ ++++ . . . .. .. . ... .....ooooooooooooo++OO ++ooo XXX ", " @@@ ++++ . ..... oo.oooooooooooooo +O oooo+ XXX ", " @@@ .. ... .......ooooooooooooooooooooooooooo++ XXX ", " @@@ ++ . ......oooooooooooooo ooooooooo +++ +++ XXX ", " @@@ ++++ +++++ ......oooooooo ++++++++++++ ++++++ ++++ XXX ", " @@@ +O++ +++++ + ......ooooo++++++++++ ++ + + +++ ++++ XXX ", " @@@ ++OO +++++ + .....oooo+++++++++O+ ++O+ +++++ ++ ++++ XXX ", " @@@ ++++O++++++ + ....ooooo++++ OOO+O +++OOOO++++++ ++++ XXX ", " @@@ +++++++++++++ ..ooooo++++++++++++++++ +++O++OO++++++++ XXX ", " @@@ XXX ", " @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX ", " @ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " " }; micropolis-activity/images/obj6-0.xpm0000664000076400007640000000512710724145723020030 0ustar simcitysimcity/* XPM */ static char * obj6_0_xpm[] = { "48 48 5 1", " c None", ". c #3F3F3F3F3F3F", "X c #7F7F7F7F7F7F", "o c #000000000000", "O c #BFBFBFBFBFBF", " ", " .XX o . ... .o ", " O .O..XO. . oo... ... . ..... ", " OX XOXOO ..XXX..X..XX........ ", " OOOO..X.OXOXX.XXXO...X.......o. ", " oO .X.XOOX..XXXX..X...XX.oO.... ", " OX .OO...OO..X..........X....... ", " O OO......XX.....X.ooooo.... . ", " .O .....O.OOOXX.X....ooooo ", " .. O..OXOOX.O......oooo o ", " o OOOOOXXXXXXX....oooo ", " OOOOOOXXXXX.X...oooo ", " OOOXOOOX..X....oooo ", " OOOOXXXXX...o.ooo ", " OOOOXXXX...XX..o.o ", " OOOOOXXXX..o.oooo ", " OOOOOXXXXXX...oooo ", " OOOOOXX.XX...ooo ", " OOOOOXXXXX.ooooo ", " OOOOXXXX....ooo ", " OOOOXXXX.Xooooo ", " OOOOXXX.....oo ", " OOOOXXXX..ooo ", " OOOXXXX...ooo ", " OOOXXXX...oo ", " OOXXXXX..ooo ", " OOOXX..o.oo ", " OOXOXX....o ", " OOOX....oo ", " OOOXXXX.oo ", " OOOXX.ooo ", " OOXX...o ", " OOXX..o ", " OOOXX..o ", " OOX..o ", " OOXXXoo ", " OXXX.o ", " OX... ", " OOXX.o ", " OXXX.o ", " X..o ", " OXXo ", " OXo ", " OX. ", " OX. ", " OX. ", " O ", " O "}; micropolis-activity/images/obj7-3.xpm0000664000076400007640000000510210724145723020025 0ustar simcitysimcity/* XPM */ static char * obj7_3_xpm[] = { "48 48 4 1", " c None", ". c #FFFF00000000", "X c #FFFF7F7F0000", "o c #FFFFFFFF0000", " ", " ", " ", " . XXX XX ", " XXXXXX X XX XXXX ", " X X XX...X . X .. X ", " ..X X... X ", " X..X Xo. XX XXX ", " X X..X X. XX X ", " X.. X.XX ", " XX.X oX X ", " oooo X..X o X X ", " oo XXXX . X oXXo X XXoooXXXXXX ", " X ........XX oX . XooX X o X ", " XX XX...oX X X X...X XXXX ", " X XX.. XX .X X XX.XXXX ", " X X XX XX X ", " X XX oX ooo X ", " XXXo X X.X . . XXX ", " X X.XX X X XXX... X ", " X X X .X oo.oX.XXo ", " o X. X XXXX XXX ", " X o X . . X ", " X o o. . X X ", " X XXX XX X .X o XXXX ", " ..... oXXXX XX X o XXXX ", " X o Xo. XXXX . oo ", " X X o Xo o o .X o ", " X o o Xoooo . XXX XX ", " X o XXoo XX Xo o . XX X ", " o Xooo . . oX oX ", " XXXX.. X XXo X. oX. XX ", " X XX XXXX o X XX X X.X X ", " X XXXXX X o X XX X o.X X ", " X..X X X.o X o. X .X X . ", " X.XX X . o. .X X ", " X..Xo X .. o . X . .X ", " X.XX o . X ", " X X .. o X ", " X X X . o ", " X X X Xo ", " X X X Xo ", " X X X XX ", " X X X X X . X ", " X X. . ", " ", " ", " "}; micropolis-activity/images/scsfohi.xpm0000664000076400007640000001027710724145723020473 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "67 57 8 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #FFBF7F", "c c #00FF00", "d c #007F00", "e c #585858", "f c #7F7FFF", "g c #DFDFDF", /* pixels */ "```````````````````````````````````````````````````````````````````", "``eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee``", "`e`eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`g`", "`ee`eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`gg`", "`eee```````````````````````````````````````````````````````````ggg`", "`eee`fffffffffffffffffffffffffffffffffffffffffffffffffffffffff`ggg`", "`eee`fffffffffffffffffffffffffffffffffffffffffffffffffffffffff`ggg`", "`eee`ffffffffffffffffffcccccfffff`aaafffffffffffffffffffffffff`ggg`", "`eee`ffffffffffffffccccccccbccbbaa`a`a`fffffffffffffffffffffff`ggg`", "`eee`fffffffffffffccccbcbcbcbcccb``````````````````affffffffff`ggg`", "`eee`fffffffffffffccccbcacccbbbcb`aa`````aa`aa`a````ffffffffff`ggg`", "`eee`ffffffffffcccccbcccaaccccccb`bb`aa````````a`a```affffffff`ggg`", "`eee`ffffffffffccccccccccccccccbb`ba`aaa`a```````a```affffffff`ggg`", "`eee`ffffffffcccccccccccccccacccb`````````````````````ffffffff`ggg`", "`eee`fffffffccccbbbb`bbbbbbbbbabb`a`````````a````a````afffffff`ggg`", "`eee`fffffccccccccb```````````````````````````````````aaffffff`ggg`", "`eee`fffffbbbbbbbbbb`ba``a`a````````````````````a``````a`a`fff`ggg`", "`eee`fffff```````````a``a``aa`bb`aa```a`````aa`````````a`affff`ggg`", "`eee`fffb`bbb`````````a`a``aa`aa`a`a`aa``a``a``````a```a`affff`ggg`", "`eee`fffb```````````````````````````````````````a````````affff`ggg`", "`eee`fffb`aaa`aba`aa`aa`a``aa`aa`bb`a``a`ab````aa````````affff`ggg`", "`eee`fffb`aaa`aaa`aa`aa`aaaaa`aa``bb`a`a````aa`````a``a``affff`ggg`", "`eee`fffb``````````````````````````b```a```````````a``a``affff`ggg`", "`eee`fffb`ccccccccccccccc`a```aa`bbabb`a`aa`aa`a``````a``affff`ggg`", "`eee`fffb`ccccccccccccccc```````````b`aa`aa`ba```````````affff`ggg`", "`eee`ffbb`ccccccccccccccc`a```bbbbccbb```````````a````a```ffff`ggg`", "`eee`ffbb`ccccccccccccccc`aa``bbccccbbbbbbbbb````a````aa`affff`ggg`", "`eee`ffbb`````````````````````bbbbcbccbbaaab``a```````ab`affff`ggg`", "`eee`fffb`baa`aa`aa`aa`aa`b``ccdddccbccbbaa`a````````````affff`ggg`", "`eee`fffb`baa`aa`aa`aa`a``bbbcbbbcdccbbbbbd`aa`a`a````a```ffff`ggg`", "`eee`fffb`````a```a```````bbbddcbccbcbccbbb`aa```a``a`a````fff`ggg`", "`eee`fffb`aaa`aa`bb`aa`ab`bbbcccbbccbbccbbb`aa`a````a````aafff`ggg`", "`eee`fffb`aab`a``a``a``ab`bbdccbbbbccbccbab`````````````aa`fff`ggg`", "`eee`fffb`````````````````bcccccbdcbcbbcbbb`a``a```````aa`afff`ggg`", "`eee`fffb`aaa`aa`a``a```a`bcccbccccbccccbba`a``a`a````aa`aafff`ggg`", "`eee`fffb`aaa``a`a``a``aa``cbbbbdbbbcbbccaa`a``a`a````a`aaffff`ggg`", "`eee`ffbb````````````a````bcbcbbbbbbbdbcbbb`a``````````aafffff`ggg`", "`eee`ffbb`bba`aa`aa````aa`bccbcbbbdbcbcbbbb`a``a`b``````afffff`ggg`", "`eee`ffbb`bba`bb`aa`aa`ab``ccc`ccccccbbbb``````a``````aaa``fff`ggg`", "`eee`ffbb`````````````````bcccbbccbbbbbbbbb`aa`a`a`aa``````fff`ggg`", "`eee`fffb`aba`aa`aa`ba`aa`bccbbbbbbbbbbbbbb`aa```a`aa`bbb``fff`ggg`", "`eee`fffb`````````````````cccb`a`````````````````a`aa`bbb``fff`ggg`", "`eee`fffdbbbb`bb`ab`baaabbcccb`aaa`aaa`aaa`a`aa``a`aa``bb``fff`ggg`", "`eee`fffbbffbbbbbbb`baabbcccbb```````````````````a`aaa`bb``fff`ggg`", "`eee`fffdbfbfbbbabbbbbbbbccacb``ba``aa`aaa`aa``a```````bffffff`ggg`", "`eee`fffbbffffbbbabbdbbbbbbccb`bba`````aaa`aa`a``b`bbb`bffffff`ggg`", "`eee`ffddbfffffbbbbbbbbbbbbbbb```````````````````bbbbb`bffffff`ggg`", "`eee`ffdbbbffffdbbbbdbbbbbbbbb`bbb```b`aaa`aaaaa`bbbbb`bbfffff`ggg`", "`eee`fffbbbfffffbbbbdbbbbbbbbb`bbb`bbb`aaa`aaaaa`bbbbb`bbfffff`ggg`", "`eee`fffbbbfffffbbbbbbbbbdbbbbbb`````````````````bbbbb`bbfffff`ggg`", "`eee`fffbbbbbfffdbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`bbbdfff`ggg`", "`eee`ffdbbbbbbbbbbbbbbdbbdbbbbbbbbbbbbbbbbbbbbbbbbbbbb`bbbbfff`ggg`", "`eee```````````````````````````````````````````````````````````ggg`", "`ee`ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg`gg`", "`e`ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg`g`", "``ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg``", "```````````````````````````````````````````````````````````````````" }; micropolis-activity/images/tiles-125.xpm0000664000076400007640000000252110724145723020453 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "32 32 7 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c red", "O c gray75", "+ c gray100", "@ c None", /* pixels */ "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@OO @@@@@@@@@", "@@@@@@@@@@@@@@@@@@@O+++ @@@@@@@", "@@@@@@@@@@@@@@@@@@O+o++ X@@@@@@", "@@@@@@@@@@@@@@@@@O+++++ X@@@@@@", "@@@@@@@@@@@@@@@@O+++++X XX@@@@@@", "@@@@@@@@@@@@@@@O+++++XXXXX@@@@@@", "@@@@@@@@@@@@@@O+++++X.XX.@@@@@@@", "@@@@@@@@@@@@@O+++++XX.X.@@@@@@@@", "@@@@@@@@@@@@O+++++X.XX.@@@@@@@@@", "@@@@@@@@@@@O+++++XX.X.@@@@@@@@@@", "@@@@@@@@@@O+++++X.XXX@@@@@@@@@@@", "@@@@@@@@@O+++++XX.XX@@@@@@@@@@@@", "@@@@@@@@O+++++X.XXX@@@@@@@@@@@@@", "@@@@@@@ +o+++XX.XX@@@@@@@@@@@@@@", "@@@@@@ ++++X.XX.@@@@@@@@@@@@@@@", "@@@@@OO X++XX.X.@@@@@@@@@@@@@@@@", "@@@@@OOX XXX.@@@@@@@@@@@@@@@@@", "@@@@@OOO XXX.@@@@@@@@@@@@@@@@@@", "@@@@@@OOOOXXX@@@@@@@@@@@@@@@@@@@", "@@@@@@@OOOX@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" }; micropolis-activity/images/icstadhi.xpm0000664000076400007640000000421310724145723020616 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "42 42 9 1", /* colors */ "# c #000000", "a c #7F7F7F", "b c #00FF00", "c c #5D5D5D", "d c #007F00", "e c #BF7900", " c #FFFFFF", "g c #BFBFBF", "h c #7F7F00", /* pixels */ "gggggggggggggggggggggggggggggggggggggggggg", "gaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaac", "gaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaac", "gaaccccccccccccccccccccccccccccccccccccaac", "gaac gaac", "gbbc eeeebeebaaabebebeegggggggeeeeeee gbbc", "gbbc eeedeebeaaadeeeeggcccccccggeebee gbbc", "gbbc eeaaaaaaaaaeeedgccc#####cccgeeee gbbc", "gbbc ebaaaaaaaaaedbgcc##ccccc##ccgeee gbbc", "gaac aaaaaaaaaaaeeegc#ccc###ccc#cgeeb gaac", "gaac aaacacacacaeegc#c###ccc###c#cgee gaac", "gaac eeaaaaaaaaabeg#c#c#c#c#c#c#c#gee gaac", "gaac eeaaaaaaaaaecgc###########cc#gee gaac", "gbbc eeacacacacacc #ccacccccccc#c#gee gbbc", "gbbc ebaaaaaaaaac #c#########c#c#gee gbbc", "gbbc edaaaaaaaaa #c#dddggdd#c#c#gee gbbc", "gbbc eeacacacaca g#c#bbbgbbb#c#c#gee gbbc", "gaac eeaaaaaaaaa cg#c#bdbbbdb#c#c#gbe gaac", "gaac eeaaaaaaaaaccg#c#bdbbbdb#a#c#gee gaac", "gaac eeacacacacacgg#c#bbbbbbb#c#c#gee gaac", "gaac eeaaaaaaaaaggg#c#dbdbdbd#a#c#gee gaac", "gbbc eeaaaaaaaaaggg#c#bbbbbbb#c#c#gee gbbc", "gbbc ebacacacacagcg#c#bdbbbdb#a#c#geb gbbc", "gbbc eeaaaaaaaaaccg#c#bdbbbdb#c#c#gee gbbc", "gbbc eeaaaaaaaaacgg#c#bbbggbb#c#c#gee gbbc", "gaac eeacacacacaggg#c#dddgddd#c#c#gee gaac", "gaac eeaaaaaaaaaggg#c#########c#c#gee gaac", "gaac eeaaaaaaaaaggg#ccccccccccc#c#gee gaac", "gaac eeacacacacagggc###########cc#gbe gaac", "gbbc aaaaaaaaaaagggc#cc#c#c#c#c#c#gee gbbc", "gbbc aaaaaaaaaaa#aag#ccc#####ccc#gcee gbbc", "gbbc ebeaaaaaaaaeaagc##ccccccc##cgdee gbbc", "gbbc eeebaaaaaaaeaaagcc#######ccgdhbe gbbc", "gaac edeeebaaaeebeacaggcccccccgghheee gaac", "gaac eebbeeaaaeeeebaacaggggggghhheeeb gaac", "gaac eedeeeaaaeeeebbcaacaaccchhheeeee gaac", "gaac ebeeeeaaaebededcacaaccchdhbebeee gaac", "gbbc gbbc", "gbbcgggggggggggggggggggggggggggggggggggbbc", "gbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbc", "gbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbc", "gccccccccccccccccccccccccccccccccccccccccc" }; micropolis-activity/images/tiles-60.xpm0000664000076400007640000000302110724145723020365 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "93 14 6 1", " c black", ". c red", "X c #FFFF7F7F0000", "o c yellow", "O c gray69", "+ c gray75", /* pixels */ "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOO ++++++++++ oooooooooo XXXXXXXXXX .......... OOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOO ++++++++++ oooooooooo XXXXXXXXXX .......... OOOOOOOOOOOOOOOOOOOOOOOOOO", "OO OOOOO OO OO OOOO OO ++++++++++ oooooooooo XXXXXXXXXX .......... OO OOOOO OOOO OOOO OOOO OO", "OO OOO OO OO OOO OO ++++++++++ oooooooooo XXXXXXXXXX .......... OO OOO OOO O OOOO OO OOO", "OO O O O OO OO O OO OO ++++++++++ oooooooooo XXXXXXXXXX .......... OO O O O OO OOO OOOO OOOO", "OO OO OO OO OO OO O OO ++++++++++ oooooooooo XXXXXXXXXX .......... OO OO OO O OOO OOOO", "OO OOOOO OO OO OOO OO ++++++++++ oooooooooo XXXXXXXXXX .......... OO OOOOO O OOOOO OO OO OOO", "OO OOOOO OO OO OOOO OO ++++++++++ oooooooooo XXXXXXXXXX .......... OO OOOOO O OOOOO O OOOO OO", "OOOOOOOOOOOOOOOOOOOOOO ++++++++++ oooooooooo XXXXXXXXXX .......... OOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOO ++++++++++ oooooooooo XXXXXXXXXX .......... OOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO" }; micropolis-activity/images/tiles-69.xpm0000664000076400007640000000240510724145723020403 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "32 32 2 1", " c black", ". c None", /* pixels */ "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................" }; micropolis-activity/images/obj3-2.xpm0000664000076400007640000000525310724145723020027 0ustar simcitysimcity/* XPM */ static char * obj3_2_xpm[] = { "48 48 9 1", " c None", ". c #FFFFFFFFFFFF", "X c #FFFF00000000", "o c #7F7F7F7F7F7F", "O c #BFBFBFBFBFBF", "+ c #3F3F3F3F3F3F", "@ c #FFFFFFFF0000", "# c #000000000000", "$ c #66666666E6E6", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ...X ", " o... ", " O.... ", " O.... ", " O..... ", " O.O... ", " o.....+ ", " ......o ", " OOO o.....O+ ", " +..O O......o ", " o..O O.O....O+ ", " o...O O.......o ", " o...O OOOXO o.......O+ ", " +....O OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+ ", " @oOoOoO..................................+O+ ", " +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO#+O++ ", " o...OO+$$#$$#$#$#$#$#$#$#$#$#$$#$#$#$#$.+OO+ ", " o...O oooooooooooOOOOOOOOO+OOOOOOOOOOOOO ", " o..O OOOXO oOOOOOOOO+ ", " +..O ...X. O.......o ", " OOO O.O....O+ ", " O......o ", " o.....O+ ", " ......o ", " o.....+ ", " O..... ", " O.O... ", " O.... ", " O.... ", " o... ", " ...X ", " ", " ", " ", " ", " ", " ", " "}; micropolis-activity/images/icdozrhi.xpm0000664000076400007640000000301310724145723020636 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "34 34 9 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #5D5D5D", "c c #BF7900", "d c #FF0000", "e c #FFFFFF", "f c #FF7700", "g c #BFBFBF", "h c #0000FF", /* pixels */ "gggggggggggggggggggggggggggggggggg", "gccccccccccccccccccccccccccccccccb", "gccccccccccccccccccccccccccccccccb", "gccbbbbbbbbbbbbbbbbbbbbbbbbbbbbccb", "gccbeeeeeeeeeeeeeeeeeeeeeeeeeegccb", "gccbeeeeeeeeeeeeeeeeeeeeeeeeeegccb", "gccbeeeeeeeeeeeeeeeeeeeeeeeeeegccb", "gccbeeeeeeeeeeeeeeeeeeeeeeeeeegccb", "gccbeeeeffdddddfeeeeeeeeeeeeeegccb", "gccbeeeedfffffffeeeeeeeeeeebeegccb", "gccbeeeeddffeeeeeeeeeeeeeeabeegccb", "gccbeeeeddfffeeeeee`eeeeeabeeegccb", "gccbeeeeddffhheeeee`eeeeaabeeegccb", "gccbeeeeddffhe`eeee`eeee``beeegccb", "gccbeeeeddfffffdddd`ddde``beeegccb", "gccbeeeeddfffffffffffffe``beeegccb", "gccbeeeeddfffffffffffffb``beeegccb", "gccbeeeee`b`fb`fb`fb`aaa``beeegccb", "gccbeeeb`bbbbbbbbbbbb`ba``beeegccb", "gccbee`bbbb``b``b``bbbb```beeegccb", "gccbeebbbb```b``b```bbbb``beeegccb", "gccbee`bb`bb``bb``bb`bb```beeegccb", "gccbee`bb`bb``bb``bb`bb`aabeeegccb", "gccbeebbbb```b``b```bbbbeabeeegccb", "gccbee`bbbb``b``b``bbbb`eeabeegccb", "gccbeeeb`bbbbbbbbbbbb`beeeebeegccb", "gccbeeeee`b`eb`eb`eb`eeeeeeeeegccb", "gccbeeeeeeeeeeeeeeeeeeeeeeeeeegccb", "gccbeeeeeeeeeeeeeeeeeeeeeeeeeegccb", "gccbeeeeeeeeeeeeeeeeeeeeeeeeeegccb", "gccbgggggggggggggggggggggggggggccb", "gccccccccccccccccccccccccccccccccb", "gccccccccccccccccccccccccccccccccb", "gbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" }; micropolis-activity/images/scriohi.xpm0000664000076400007640000001027710724145723020475 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "67 57 8 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #FFBF7F", "c c #00FF00", "d c #007F00", "e c #585858", "f c #7F7FFF", "g c #DFDFDF", /* pixels */ "```````````````````````````````````````````````````````````````````", "``eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee``", "`e`eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`g`", "`ee`eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`gg`", "`eee```````````````````````````````````````````````````````````ggg`", "`eee`bbb`bbbbbbbbbb``aaaaaaaaaa`bb`b```aaaaaaaaaaaaaaaaaaaaaab`ggg`", "`eee`bbb`bbbbaabbbbaaaaaa`bbbba`bb`bbb```aaaaaaaaaaaaaaaaaaabb`ggg`", "`eee`b`b`b`aaaaaaaaaad`aa`bbbaaaab`bbb```````aaaaa``````aaabbf`ggg`", "`eee`cb```dad`daaaaaaaaaa`aa`ab`ba`bbbbb`aaaaa```a`aa```aaabff`ggg`", "`eee`ccb`ddaaaaaaaa`aaaaa`bb`ab`bba`````````````````aa``aa`fff`ggg`", "`eee`ccb`dddddddddd`aaaaa`aa`aaaaa`aa`aa`````````a`a```aaaafff`ggg`", "`eee`bcc````ddddddd`````````````````baaa``````aaaa`aaa`aaa`bff`ggg`", "`eee`bcbcccb`````ddaabbabaaa`aaaaaa`aa`aaaaaa`aaaa`aaa`aabbbff`ggg`", "`eee`bcbbb`cbcccb``aabbaaaaa`bbbaaa```````````````````aaabbbff`ggg`", "`eee`bccbbbc`cccbbbbaaaaaaab`aaaaaaaaa``aaaa`aaaaa````aaabb`ff`ggg`", "`eee`ccccccbb`bbcbbbb`bbbbbb`bbbb``aaa`aaaaa`aaaaa`a``aa`b`aff`ggg`", "`eee`cbcbcbbb`bbccccbb`bbbbbbbbbaaaaaa`aaaaa`aaaaa`aaaaa`bbaff`ggg`", "`eee`cbcbccbb`bbccbcbbb```c`````aaaaaa`aaaa```aaaa`aaaaa`b`aff`ggg`", "`eee`cccbccbb``bbbccbbbb`bcbbb`aaaaaaa`aaaa```aaaa`aaa```bb`ff`ggg`", "`eee`ccbbcccbb``bbccbbbb`ccbba`aaaaaaa`aaaaa```aa``````````fff`ggg`", "`eee`ccbbcbbcbb`bb`bbbcbbccbaa`aa````````````````````````affff`ggg`", "`eee`bccbcbbbc``aaa```ccccc`aa`aaaaa`a`aaaaa`aaaaa`bbb`b`fffff`ggg`", "`eee`bbccccccccaaaaaaaaaaaa`aa`aaaaaaa`aaaaa`aaaaa`bbb`bbfffff`ggg`", "`eee`bbcbcbbbccaaaaaaaaa````````````````aaaa`aaa`a`bbb```affff`ggg`", "`eee`b`bccbbbb``aaaaaaaaaaaaaa`aa`aaaa`aa``a`aaaa`````````ffff`ggg`", "`eee`b``````````aaaaaaaaaaaaaa`a`aaaa``aa````aaaaacccc`````fff`ggg`", "`eee`b`aaa`aaa``aaaaaaaaaaaaaa`a`aaa````a````aaaaacccc`ccccfff`ggg`", "`eee`b`aaa`aaa````````````a``````````````````````````````c`fff`ggg`", "`eee`b`aaa`aaabbbbbbbbb`bb```a`a`aa`````a````aaff`ccccccc`ffff`ggg`", "`eee`b`aaa`aaabbbb`bbbbbbbb`aa`aaaa`````a````aaaff`c`c`c`fffff`ggg`", "`eee`b`aaa`aaab`b`ffb`bbbbbbaa`a`aa`````a````aaaaff`aaa`ffffff`ggg`", "`eee`b````````bb`fff`bbbbbbb`a`aaaa`````a`````aaaaffffffffffff`ggg`", "`eee```bbbbbbbb`ffffffbbb`bb`a`aaaaaaaaaa`a````aaaaaafffffffff`ggg`", "`eee`a`bbb`b`b`ffffffbbbb`bb`a``aaaaaaaaa`a`````aaaaaaff``ffff`ggg`", "`eee`a``b`fffffffffff`b`b`bb`a`aaaaaaa``a`aa``````aaaa````ffff`ggg`", "`eee`a``bbfffffb`fff`b`bb`b```````````````````aaa```aaaa```fff`ggg`", "`eee`a``bbbffffbb`b`bbbbb`b`aa`aaa```aaaa`aaaaaaaaaaaaaabb`fff`ggg`", "`eee`a```bbffffbbbbbb``bb``aaa`aa`aaaaaaa`aaaaaaaaaaaaaaabffff`ggg`", "`eee`aa```bbb`bbbbbbb``bb`aaaaa`aaaaaaaaa`aaaaaaaaaaaaaaa`ffff`ggg`", "`eee`aa`b``b`````bb````````````````````````aaaaaaaa```````ffff`ggg`", "`eee`aa``````````b`````````````aaabbffffb`aaaaaa`b`bb`bbb`ffff`ggg`", "`eee`f``````````````````aa`aaaabbbbffffff`bbaaaa`b`bbbbbbbffff`ggg`", "`eee`ff```aaaaaa`aaaaa`aaa`aabbbaffffffffffbbb`b`bbbb`bbbbbfff`ggg`", "`eee`ffff`aaaaaa`aaaaa`aaa`bbfffffffffffffffff`b`bbbfffbbbbbff`ggg`", "`eee`ffff``aa````aaaaa`abb`fffffffffffffffffffbb`bbbffffbbbbff`ggg`", "`eee`ffffbbaaaaa`aaaaa`bbffffffffffffffffffffbbb`bbfffffffbfff`ggg`", "`eee`fffff``aaab`baaaa`bfffffffffffffffffffff`bb`bbfffffffbfff`ggg`", "`eee`ffffff`aabffbbbbbbffffffffffffffffffffffbbbbbbfffffffffff`ggg`", "`eee`fffffffffffffffbbafffffffffffffffffffffbbbbbbbbffffffffff`ggg`", "`eee`ffffffffffffffffffffffffffffffffffffffffbbbbb`bffffffffff`ggg`", "`eee`fffffffffffffffffffffffffffffffffffffffffffffffffffffffff`ggg`", "`eee`fffffffffffffffffffffffffffffffffffffffffffffffffffffffff`ggg`", "`eee```````````````````````````````````````````````````````````ggg`", "`ee`ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg`gg`", "`e`ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg`g`", "``ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg``", "```````````````````````````````````````````````````````````````````" }; micropolis-activity/images/tiles-84.xpm0000664000076400007640000000526310724145723020405 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "48 48 9 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c #66666666E6E6", "O c red", "+ c yellow", "@ c gray75", "# c gray100", "$ c None", /* pixels */ "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@#@$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@##.$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@###.$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@###.$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@####+$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@##X#.$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@#X###.$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@#####.$$$$$$$$$", "$$$$$$$$$$$#$$$$$$$$$$$$$$$$$$X@@@@####@$$$$$$$$", "$$$$$$$$$$##X$$$$$$$$$$$$$$##XX#..$@@###@$$$$$$$", "$$$$$$$$$O###@$$$$$$$$$$$$##X##..$$$$@@@$$$$$$$$", "$$$$$$$$$#####@$$$$$$$$$$O#X###.$$$$$$$$$$$$$$$$", "$$$$$$$$$$#####X$$$$$$$$##X###@$$$$$$$$$$$$$$$$$", "$$$$$$$$$$#######$$$$$$$$X###@##$$$$$$$$$$$$$$$$", "$$$$$$$$$$@######X$$$$$$X###@##X$$$$$$$$$$$$$$$$", "$$$$$$$$$$$@######@$$$$X###@#OX$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$X#######@$$X###@o#X$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$.@#######XX###@oX$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$X#######X###@oX$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$.######X###@ X$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$.@####X###@oX$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$X###X###@ XX$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$.##X###@oX@@@$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$.XX###@ X@@@#@$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$X###@oX@@@###X$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$X###@ X@@@######$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$X###@oX@@@#######X$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$X###@ X@@@#########@$$$$$$$$$$$$$$$$$", "$$$$$$$$$$X###@oX$..X@#########@$$$$$$$$$$$$$$$$", "$$$$$$$$$X###@ X$$$$$..X@#######X$$$$$$$$$$$$$$$", "$$$$$$$$X###@oX$$$$$$$$$.X@#######$$$$$$$$$$$$$$", "$$$$$$$X###@ X$$$$$$$$$$$$$@#####$$$$$$$$$$$$$$$", "$$$$$$X###@oX$$$$$$$$$$$$$$$$$#O$$$$$$$$$$$$$$$$", "$$$$$X###@ X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$X###@oX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$.##.@X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$.# .@X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$..#XX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$...$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" }; micropolis-activity/images/grreshi.xpm0000664000076400007640000000261710724145723020477 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "32 32 10 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #00FF00", "c c #3F3F3F", "d c #3F3F00", "e c #00DF00", "f c #3C00BF", "g c #FFFFFF", "h c #3C00FF", "i c #BFBFBF", /* pixels */ "````````````````````````````````", "``eeeeeeeeeeeeeeeeeeeeeeeeeeee``", "`e`eeeeeeeeeeeeeeeeeeeeeeeeee`b`", "`ee`eeeeeeeeeeeeeeeeeeeeeeee`bb`", "`eee````````````````````````bbb`", "`eee`ffffffffffffffffffffff`bbb`", "`eee`fhfhfhfhfhfhfhfhfhfhfh`bbb`", "`eee`hfhfhfhfhfhfhfhfhfhfhf`bbb`", "`eee`hhfh`hfchhfhhhfhhhfhhh`bbb`", "`eee`hhhh`hc``hhhhhhhhhhhhh`bbb`", "`eee`fhhh`c````cccccchhhhfh`bbb`", "`eee`hhhhc``````c`````hhhhh`bbb`", "`eee`hhhc````````c`````hhhh`bbb`", "`eee`hhc``````````c`````hhh`bbb`", "`eee`hhhgggggggggiiiiiihhhh`bbb`", "`eee`hhhgaaggaaggiaiaiihhhh`bbb`", "`eee`eeegacggacggiiiiiieeee`bbb`", "`eee`eeegggggggggiiiiiieeee`bbb`", "`eee`eeeggaagaaggiaiaiieeee`bbb`", "`eee`eeeggacgacggiiiaiieeee`bbb`", "`eee`eeeggacgggggeeeeeeeeee`bbb`", "`eee`eeeeeddeeeeeeeeeeeeeee`bbb`", "`eee`eeeeedddeeeeeeeeeeeeee`bbb`", "`eee`eeeeeddddeeeeeeeeeeeee`bbb`", "`eee`eeeeeeddddddeeeeeeeeee`bbb`", "`eee`eeeeeeeddddddddeeeeeee`bbb`", "`eee`eeeeeeeeedddddddddeeee`bbb`", "`eee````````````````````````bbb`", "`ee`bbbbbbbbbbbbbbbbbbbbbbbb`bb`", "`e`bbbbbbbbbbbbbbbbbbbbbbbbbb`b`", "``bbbbbbbbbbbbbbbbbbbbbbbbbbbb``", "````````````````````````````````" }; micropolis-activity/images/scbern.xpm0000664000076400007640000001026010724145723020301 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "67 57 7 1", /* colors */ "` c #000000", "a c #00BF00", "b c #3F3F3F", "c c #3F3FFF", "d c #BF7F3F", "e c #585858", "f c #DFDFDF", /* pixels */ "```````````````````````````````````````````````````````````````````", "``fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff``", "`f`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`e`", "`ff`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`ee`", "`fff```````````````````````````````````````````````````````````eee`", "`fff`dddddddddddddddaaddddddcccddddddddddddccc`ddddddddddddddd`eee`", "`fff`dd`d`dd`d`ddddaaaadddddccc`cccddddddaadcccdddddddaadad``d`eee`", "`fff`dd`d`dd`d`ddddaaadddddddcccccccccdddaddcccdddddddaaaa`````eee`", "`fff`dd`d`dd`d`dddddddd`ddddddd`dddcccdddad`cccddcccddddddd````eee`", "`fff````````````dddaddddddddddddddddccdddaddcc`ccc`cddddddd``d`eee`", "`fff`ddbbbbbbb`dddaaaddddd`dddaaddddccdddaaddcccccccccccd`d``d`eee`", "`fff````````b``dddaaad`ddddaaaaaaaddccdddddddccccd`dcccccdd`dd`eee`", "`fff`ddddddddd`dddaddddddaaaaaddddddccdd`ddddcccdddddcdcc`d`dd`eee`", "`fff`dddddcccc`dddaaadddddddcccccdddcddd`dddd`ddddddddddcdd`dd`eee`", "`fff`dd`ccccdc`cddddaadddddc`cccccccc`dd`dddd`dddddddddcc`d`dd`eee`", "`fff`dcccc`ddd`ccdddddddddcc`dddcccc`bbb`b`````ddddddccccdd`dd`eee`", "`fff`cc`dddddd`cccdddddddccb`bbd`dddbb```bbbbb`ddddcccccddd`dd`eee`", "`fff`d`ddddddd`dccccddddcccb`db`dddddd`````````dddcccc`dddd`dd`eee`", "`fff`ddddddddd`ddcccccccccdb`d`ddbbbbddddd``ddddd`ccccddddd`dd`eee`", "`fff`d````dddd`ddddccccccdbb`````````````````cddcccccddddd`ddd`eee`", "`fff`ddddd`ddd`dddddddddbbbb`bbddbbbbcccccccccccccc`ddddd`dddd`eee`", "`fff`dddddd`dd`dddddddddddd``dbbbddccccccccccccccc`b``````dddd`eee`", "`fff`ddddddd`````````ddddb`b`bbbdcccccc`bbbbbbbcccbb`bbbb`daad`eee`", "`fff`dddddddd``ddddddd`bb`bb`bbccccc`b````````bb```b`bb`b`daad`eee`", "`fff`dd`dddddd`ddddddd```b`b`bdcccc`bbb`b```b`bbbbbb`bb`b`dddd`eee`", "`fff`ddddddadd``dddddd``bbbb`dcccc`bbbbbb```b`bbbb`b`bb`b`dd```eee`", "`fff`ddd`ddddd``````````b``b`cccc`b`bb`bb``bb```bb`bbbbbb`d````eee`", "`fff`ddddddddd`bbbbbb````````ccc`bbb```bbbbb```bbbbbbbbb```ddd`eee`", "`fff`ddaddaddd`bbb``b`````````````````bbbbbbbb````````````dddd`eee`", "`fff`daaaddddd`b`bb`b`bbbb```cccbbb````````````````bbbb```dddd`eee`", "`fff`daaaadadd`b`bb`b````````cccbbbbbbbbbbbbbb`bbbbbbbbbbaaddd`eee`", "`fff`daadddddd`b`bb`b`bbbb``b`cc`bb```bbb``````````````b`adaad`eee`", "`fff`dddd`dddd``bbb`b```bb``b`ccccbbbbbbbb`````````````b`adddd`eee`", "`fff`d`ddddddd``b`b`b``````b``cccc`````````````````bbbb`baaadd`eee`", "`fff`dddddddddbbbbb`b`b```bb`bbbcccccccbbbbbbb`bbb``````badadd`eee`", "`fff`dddddddddbbbbb`b`bbbbbb`bbbcccccccbbbb`b``b`b``````baaadd`eee`", "`fff`dddd````````````````````````````cccb`b`b``bbbb``b``b`dddd`eee`", "`fff`dddddd`ddbb``b````ddd`b`bbbbbbbb```bbb`b``b``b`bb``b`dddd`eee`", "`fff`dddddddddbbbbb````d`ddb`bbbbdbbb`bcbbb`b``bb`b`b```b`dddd`eee`", "`fff`ddddddddd`bbbb````d``````````````ccb`b`b````bb`bb``b`dddd`eee`", "`fff`ddddddddd`bbbb`a`ad`bbb`bbdc`ccccccb`bbb```bbb`bbbbb``````eee`", "`fff`ddddddddd`b`bbb`aab`bdb`b`cc`cccccbbb`b``bbbbb`bbbbb`dddd`eee`", "`fff`ddd`ddddd`b`bbb`aabbdbd`bccc`c`d`bbb`````bbbbbb`aaaaadddd`eee`", "`fff`dddd``````````````dbdbd`bccb`bbbbb`````b````bbaa``aaaaaad`eee`", "`fff`ddddddddd`bbbb``b`dbbbb`bccc`b````bbb``bbbbbbbaaaaaaaaaaa`eee`", "`fff`ddddddddd`bbbbb`b`abbdb`bcccbbb`bbbbb`bb`bb```bbb``aadddd`eee`", "`fff`ddddddddd``````````bbbb`cccccbb`bbbbbb`bbbbbbbbccccccccdd`eee`", "`fff`ddddddddddddddd`dddbdbbdccccc`b`bbbcccc``bbbbbccccccccccc`eee`", "`fff`ddddddddddddddd`ddbbddad`ccccccc`ccccccccccccccccdddcccc``eee`", "`fff`ddddddddddddddd`ddbdddaddddcccccccccccccccccccccdddddcccc`eee`", "`fff`ddddddddddddddd`dddddaaddddddccccdddddcccccccdddddddddddd`eee`", "`fff`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`eee`", "`fff```````````````````````````````````````````````````````````eee`", "`ff`eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`ee`", "`f`eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`e`", "``eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee``", "```````````````````````````````````````````````````````````````````" }; micropolis-activity/images/icqry.xpm0000664000076400007640000000277310724145723020166 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "34 34 8 1", /* colors */ "# c #000000" "` c #7F7F7F", "a c #5D5D5D", " c #FFFFFF", "c c #FFFF00", "d c #FF7700", "e c #BFBFBF", "f c #ff0000", /* pixels */ "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", "edddddddddddddddddddddddddddddddda", "edddddddddddddddddddddddddddddddda", "eddaaaaaaaaaaaaaaaaaaaaaaaaaaaadda", "edda##########################edda", "edda## # # # # # # # # # # # #edda", "edda# # # # #cccccc # # # # ##edda", "edda## # # #cddddddf # # # # #edda", "edda# # # #cddddddddf # # # ##edda", "edda## # #cdddffffdddf # # # #edda", "edda# # #cdddf# # cdddf # # ##edda", "edda## # cddf# # # cddf# # # #edda", "edda# # #cddf # # #cddf # # ##edda", "edda## # #ff # # # cddf# # # #edda", "edda# # # # # # # cdddf # # ##edda", "edda## # # # # # cdddf # # # #edda", "edda# # # # # # cdddf # # # ##edda", "edda## # # # # cdddf # # # # #edda", "edda# # # # # cdddf # # # # ##edda", "edda## # # # #cddf # # # # # #edda", "edda# # # # # cddf# # # # # ##edda", "edda## # # # #cddf # # # # # #edda", "edda# # # # # #ff # # # # # ##edda", "edda## # # # # # # # # # # # #edda", "edda# # # # # cccc# # # # # ##edda", "edda## # # # cddddf# # # # # #edda", "edda# # # # #cddddf # # # # ##edda", "edda## # # # #ffff # # # # # #edda", "edda# # # # # # # # # # # # ##edda", "edda##########################edda", "eddaeeeeeeeeeeeeeeeeeeeeeeeeeeedda", "edddddddddddddddddddddddddddddddda", "edddddddddddddddddddddddddddddddda", "eaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" }; micropolis-activity/images/tiles-22.xpm0000664000076400007640000000750610724145723020377 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "58 58 12 1", " c black", ". c #00007F7F0000", "X c #7F7F7F7F0000", "o c #5D5D5D5D5D5D", "O c gray50", "+ c blue", "@ c #4F4F4F4FFFFF", "# c #BFBF79790000", "$ c red", "% c #FFFF77770000", "& c gray75", "* c gray100", /* pixels */ "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&", "&OO####OOOO####OOOO####OOOO####OOOO####OOOO####OOOO####OOo", "&OO####OOOO####OOOO####OOOO####OOOO####OOOO####OOOO####OOo", "&OOooooooooooooooooooooooooooooooooooooooooooooooooooooOOo", "&OOo &OOo", "&##o * * * * * * * * * * * * * * * * * * * * * * * &##o", "&##o * * * * * * * * * * o&* * * *OOOOOo&o&o&o * * * &##o", "&##o * * * * * * * * * * o * * *OO&O&OoOOoOoo* * * &##o", "&##o * * * * * * * * * *o * * OOOOOOoOOoOoo * * * &##o", "&OOo * * * * * * * * * *oXX@ * * OO&O* *oOOoOOo* * * &OOo", "&OOo oooooooooooooooooooooooooooooooooooooooooooooo* &OOo", "&OOo *&oooooooooooooooooooooooooooooooooooo&ooooOOo& &OOo", "&OOo ooOoooooooooooooooooooooooooooooooooo&ooooOoOo* &OOo", "&##o *&OoOo&&o&&o&&o&&o&&o&&o&&o&&o&&o&&o&&o&&ooooo& &##o", "&##o oOOoooooooooooooooooooooooooooooooooo&oooooOOo* &##o", "&##o *&oooooooooooooooooooooooooooooooooooo&ooooOoO& &##o", "&##o oooooooooooooooooooooooooooooooooooooooooooooo* &##o", "&OOo * *O&OO * * * * * * * * * * OOOO* *ooo&ooo* * * &OOo", "&OOo * OOOO* * * * * * * * * * *O&OO * ooo&ooo * * * &OOo", "&OOo * *O&OO * * * * * * * * * * OOOO* *ooooooo* * * &OOo", "&OOo * OOOO* * * * * * * * * * *O&OO * ooo&ooo * * * &OOo", "&##o * *O&OO * * * * * * * * * * OOOO* *ooo&ooo* * * &##o", "&##o * OOOOO * * * * * * * *&&&&&&&O * ooooooo * * * &##o", "&##o * OOO&OO***OOOOOO*O*OOO &&&$&o&O* *ooo&ooo* * * &##o", "&##o *OOOOO&O*O&O&O&O****Oo &&o&&&&O * ooo&ooo * * * &##o", "&OOo * OOOO**o*o**OOOOOo*OoO &o&&&$&O* *ooooooo* * * &OOo", "&OOo *OOOOO*****O$&&&&&&oOo &&O&o&&O * ooo&ooo * * * &OOo", "&OOo * $&&&&o$&&&o*O*O*O&OoO &&&O&O&O* *ooo&ooo* * * &OOo", "&OOo o&*O*Oo*O*Oo&&&&&&&oOo &&&&&o&O * ooooooo * * * &OOo", "&##o *o&&&&&o&&&&o&&&&&&&OoO OO* *ooo&ooo* * * &##o", "&##o o&&&&&o&&&&o*O*O*O&oOooooooO&OO * ooo&ooo * * * &##o", "&##o *o&*O*Oo*O*Oo$&&&&&&OoooooooOOOO* *ooooooo* * * &##o", "&##o o$&&&&o$&&&o+++++++&OOOOOooO&OO * ooo&ooo * * * &##o", "&OOo *o+++++++ ++ ++ ++@&&OO&OooOOOO* *ooo&ooo* * * &OOo", "&OOo * XXXooXooXXoX o @@&oOOoOooO&OO * ooooooo * * * &OOo", "&OOo * *OOOOooooooo oo @&*&O*OoOOOOO* *ooo&ooo* * * &OOo", "&OOo *Oo OXXOOOOOO OOO @&O&&O&oO*&OO * ooo&ooo * * * &OOo", "&##o * O OoooooooOOOO @@&*&&*&o**OO** *ooooooo* * * &##o", "&##o o&OOOoOoOoOoOoOOOO @&O&&O&**O&** * ooo&ooo * * * &##o", "&##o ooOOOoXXXX* oo@OOO @$&&&&$******* *ooo&ooo* * * &##o", "&##o o&OO.ooooo *Oo@OO @oooooooo*OOOO * ooooooo * * * &##o", "&OOo ooOO.ooooo* ooOOO @&O*OO*Oo**&OOOOOooo&ooo* * * &OOo", "&OOo o&OOOooooo *OoOO. @&&O&&O&oO*OOOOOOooo&ooo * * * &OOo", "&OOo ooOOOooooo* ooOO.O &&*&&*&oOO&O&O&Oooooooo* * * &OOo", "&OOo o&OOOo * *OoOOOO $&O&&O$oOOOOOOOOooo&ooo * * * &OOo", "&##o ooOOOO* * * oOOOO @ooooooooOO&OO* *ooo&ooo* * * &##o", "&##o o&OOOOOOOOOOOOOOO @&OOOOOoOOOOOO * ooooooo * * * &##o", "&##o ooOOOOOOOOXOOOOOOO &*&&*&oOOOOOO* *oOOooOo* * * &##o", "&##o o&oOOOOOOOOOOOOOOO &O&&O&oOOOOOO * ooOoOoo * * * &##o", "&OOo *oo&o&o&o&o&o&O%O @$&&&&$ * * * * *oOOoOOo* * * &OOo", "&OOo *ooooooooooooO%O*oooooo * * * * * o&o&o&o * * * &OOo", "&OOo * * * * * * o OOO * * * * * * * * * * * * * * * &OOo", "&OOo * * * * * *oOOO * * * * * * * * * * * * * * * * &OOo", "&##o &##o", "&##o&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&##o", "&##OOOO####OOOO####OOOO####OOOO####OOOO####OOOO####OOOO##o", "&##OOOO####OOOO####OOOO####OOOO####OOOO####OOOO####OOOO##o", "&ooooooooooooooooooooooooooooooooooooooooooooooooooooooooo" }; micropolis-activity/images/obj5-4.xpm0000664000076400007640000000515410724145723020033 0ustar simcitysimcity/* XPM */ static char * obj5_4_xpm[] = { "48 48 6 1", " c None", ". c #FFFFFFFFFFFF", "X c #FFFF7F7F0000", "o c #FFFF00000000", "O c #000000000000", "+ c #FFFFFFFF0000", " ", " ", " ", " ", " ", " ..XXXX ", " XXXXoooX ", " X.XXo ooo ", " XXXXo ", " X.XXo ", " XXXXXo ", " XXXXXXo ", " XXXXXXo ooo ", " XX.XXXXo oXooo ", " XXXXXXXo oXoXoo ", " XXXXXXXo oXoXo ", " X.XXXXXo XoXoo ", " XXXXXXXXoOXoXooo ", " XX.XXXXXooXoXooo ", " XXXXXXXXoooooooo ", " XX.XXXXXooooooo ", " ..XX XXXXXXXXoooooo ", " XXXX.XXXX.XXXXXXooooo ", " XXXXXXXXXXXXXXXXXooooo oXo ", " XXXXXXXXoXX.XXXXXoXoooooXoXo ", " XXXXXoooXXXXXXXXXoXoooXXXoo ", " XXXXoooooXX.XXXXXXoXoXoXoooo ", " XXX ooooXXXXXXXXXoXoXoXooo ", " ooooXX.XXXXXXoXoXoXoo ", " oooXX.XXXXXXoXoXoooo ", " XXX.XXXXXXoXooo ", " XXXXXXXXXXooo ", " .XXXX.XXXXXXooo ", " .XXXXoXXXXXXXXooo ", " .XXXXooXXXXXXXXooo ", " XXXXXoooXXXXXXXXoo ", " XXXXXooooXXXXXXXXoo ", " XXXXo XXXXXXXXoo ", " XXX XXooXXoooo ", " Xo+oXoo+o ", " Xo++X++o ", " XoXoXoX ", " oXoXo ", " ", " ", " ", " ", " "}; micropolis-activity/images/iccoal.xpm0000664000076400007640000000432710724145723020266 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "42 42 14 1", /* colors */ "# c #000000", "a c #7F7F7F", "b c #00FF00", "c c #5D5D5D", "d c #007F00", "e c #BF7900", "f c #FF0000", "g c #4F4FFF", " c #FFFFFF", "i c #FFFF00", "j c #7F7F00", "k c #FF7700", "l c #BFBFBF", "m c #0000FF", /* pixels */ "llllllllllllllllllllllllllllllllllllllllll", "laaiiiiaaaaiiiiaaaaiiiiaaaaiiiiaaaaiiiiaac", "laaiiiiaaaaiiiiaaaaiiiiaaaaiiiiaaaaiiiiaac", "laaccccccccccccccccccccccccccccccccccccaac", "laac##################################laac", "liic# # # # #llllllll #ja c # c c # ##liic", "liic## #llllllfaaaaafajaajc#jaac # c #liic", "liic# #llkaallaaaaaac#cc# #ja #a# c ##liic", "liic##lllaaallaaaaag#aac aca #jjc#j# #liic", "laac# lal cal aaaacgaaajjcj # c # cc##laac", "laac##allaaa aaaac#aacj# # # a #ccc# #laac", "laac# lllaaaalaaa#aac#ac#a# acjjc #j##laac", "laac##lalaaallaaaaag#aac ca#cj # # # #laac", "liic# lllaaallaaaacgaaajjcca#c# # #c##liic", "liic##lalaaal aaac#aaacc # # #cajaj# #liic", "liic# lllcaa aaaa#aac#ac# # ccac# # ##liic", "liic##ll aaaalaaaaag#aac #caajcc # # #liic", "laac# l laaallaaaacgaaajcacjjc# # # ##laac", "laac## llcaallaaac#aacjc # # # # # # #laac", "laac# llaaaallaaa#aac#ac# # # # # # ##laac", "laac##lalaaal aaaaag#aac # # # # # # #laac", "liic# allaaa aaaaacgaaac# # # # # # ##liic", "liic##lllc calaaac#aaaac # # # # # # #liic", "liic# lalc cllaaa#aaaaac# # # # # # ##liic", "liic##aalaaallaaaaaaaac# # # # # # # #liic", "laac# lalc cllfaaaaafcc # # # # # # ##laac", "laac##aalc clacccccccac# # # # # # # #laac", "laac# lalaaaaccccccc#ac caadaaaaaaa ##laac", "laac##allacaaaaaaiaaaac#caadaaaaaaaaa#laac", "liic# lllaaaaaiiiaca#accaaaaaaaaaaaaa#liic", "liic##lllacaaiiiaaaaaac#aaaaaaaamaa# #liic", "liic# lllkaaiaaaaaca#kc aaaaaaaamaa ##liic", "liic##lllcccccccccccccc#aaaaaaaaaaa# #liic", "laac# llccccccccccccccc acamadaaaaa ##laac", "laac##lcccccccccccccccc#ajamadaaaaa# #laac", "laac# # # # # # # # # # # # # # # # ##laac", "laac## # # # # # # # # # # # # # # # #laac", "liic##################################liic", "liicllllllllllllllllllllllllllllllllllliic", "liiaaaaiiiiaaaaiiiiaaaaiiiiaaaaiiiiaaaaiic", "liiaaaaiiiiaaaaiiiiaaaaiiiiaaaaiiiiaaaaiic", "lccccccccccccccccccccccccccccccccccccccccc" }; micropolis-activity/images/tiles-87.xpm0000664000076400007640000000526310724145723020410 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "48 48 9 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c #66666666E6E6", "O c red", "+ c yellow", "@ c gray75", "# c gray100", "$ c None", /* pixels */ "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$###O$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$X###$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$@####$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$@####$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$@#####$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$@#@###$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$X#####.$$$$$$$$$$$$$$$$$$$$$$", "$$@@@$$$$$$$$$$$$$$X#####X$$$$$$$$$$$$$$$$$$$$$$", "$$.##@$$$$$$$$$$$$$@######X$$$$$$$$$$$$$$$$$$$$$", "$$X##@$$$$$$$$$$$$$@#@####@$$$$$$$$$$$$$$$$$$$$$", "$$X###@$$$$$$$$$$$$@#######X$$$$$$$$$$$$$$$$$$$$", "$$X###@$ @@@O@$$$$$X#######.$$$$$$$$$$$$$$$$$$$$", "$$.####@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.$$$$$$$$", "$$+X@X@X###############################.@.$$$$$$", "$$.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ .@..$$$$$", "$$X###@.oo oo o o o o o o oo o o o o.@@.$$$$$$", "$$X###@$#XXXXXXXXXX@@@@@@@@.@@@@@@@@@@@@$$$$$$$$", "$$X##@$$ @@@O@$$$$$X@@@@@@@.$$$$$$$$$$$$$$$$$$$$", "$$.##@$$ ###O$$$$$$@#######X$$$$$$$$$$$$$$$$$$$$", "$$@@@$$$$$$$$$$$$$$@#@####@$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$@######X$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$X#####@$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$X#####.$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$@#####$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$@#@###$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$@####$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$@####$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$X###$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$###O$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" }; micropolis-activity/images/tiles-130.xpm0000664000076400007640000001027010724145723020447 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "67 57 7 1", " c black", ". c #585858585858", "X c gray50", "o c #7F7F7F7FFFFF", "O c green", "+ c #FFFFBFBF7F7F", "@ c #DFDFDFDFDFDF", /* pixels */ " ", " ............................................................... ", " . ............................................................. @ ", " .. ........................................................... @@ ", " ... @@@ ", " ... ooooooooo ++++++++++++++++++++++++++++++++ooooo++++++ @@@ ", " ... + oooooooooXX ++++++++++++++++++ ++ +ooooo+++O+++ @@@ ", " ... ++ ooooooooXXX ++++++++ XX Xoooo+++OO++++ @@@ ", " ... ++ ooooooooXXoooooooX+ +++++++ XXXXXXooo++OO++++++ @@@ ", " ... +++ XXXoooooooooooooooXo++++++ +++ XXXoooooo+++ +++ @@@ ", " ... O+++ XXooooooooooooooXooo+++++ +++ X oXooooo ++ ++++++++ @@@ ", " ... +++++++X+ ooooooooooXooo +++++ XX ooXoooo ++ ++++++++ @@@ ", " ... ++O++++ +++ XX X Xooooooo+ X ooooXooX + ++++++++ @@@ ", " ... +++O+++ + ++ XXXXXXXXXX oooooooooooooooX XXXX ++++++++ @@@ ", " ... +++O+++ +++XX XX XX ooooooooooooo+X+ X XXXX ++++++++ @@@ ", " ... +++OO++ ++++ XXX ooooooooooo++ +XX XX X ++++++++ @@@ ", " ... ++OOO++ +++++ XXXX XXooooooooooo++ X XX ++ @@@ ", " ... +++OO+ XXXXX XXX Xoooooooooo + XX XXX++++++++ @@@ ", " ... +++++++++ XXXX XX X oooooooooX XXXXXXXX++++++++ @@@ ", " ... +++++++++ XXX X X ooooooooo XX XXX ++++++++ @@@ ", " ... +++++++ XX X Xoooooooooo XXXX X ++++++++ @@@ ", " ... ++++++ X X X XXX XoooooooooooXXXXXXXXXXX ++++++++ @@@ ", " ... OO+++ XXXX ooooooooooooooXXXX XXX + @@@ ", " ... OO+ XX X XX oooooooooooooooo XXX ++++++++ @@@ ", " ... OO +++ X XXXoooooooXX ooooooo XXX +O++++++ @@@ ", " ... OO +++ ooooooXX X Xooooo XX X X ++++O+++ @@@ ", " ... ++ +++ XX XX X X +XXooXXXXXX XXXXXXXX X XX +++OO+++ @@@ ", " ... ++ +++ XX XX XXX +oXX X X ooooo XXXX +++O++++ @@@ ", " ... ++ +++ XXXXXX XX ooooXX X X ooooo X X ++++++ @@@ ", " ... ++ +++ ooooXXXX XX Xooooo +++++ @@@ ", " ... ++ +++ XXXXXX X oooXXXXX XX XX Xooooo XX +++++ @@@ ", " ... ++ +++ XXXXX XXoooXXXXXXX XXX Xooooooo X +++ @@@ ", " ... ++ +++ XX X oooo X XXooooooo X ++ @@@ ", " ... ++ +++XXX XX ooooo XoooooooXX ++ ++ @@@ ", " ... ++ XXX ooooo O XXoooooooooo++++++++++ @@@ ", " ... ++ +++ XX ooooXXXOOOO X XXoooooooooooooo + + + @@@ ", " ... ++++++ XXXX oooooX OOOO XXXX XXooooooooooooooooooXXX @@@ ", " ... ++++++ XXXX XXoXXXX OOOO XX XXooooooooooooooooooooo @@@ ", " ... + XXX oXXXXXXX OOO XXX XXooooooooooooooooooooo @@@ ", " ... OOOOO+ ooooooXoX XX XXXooooooooooooooooooooo @@@ ", " ... O+OOO oooooooXX XXXXX XX XX XX ooooooooooooooooooooo @@@ ", " ... +OO+ oooooooo+X XXXX XXXX X XX ooooooooooooooooooooo @@@ ", " ... + +oooooooo ++XX XXXXXXX X XX XX ooooooooooooooooooooo @@@ ", " ... oooooo++++++++ XXXX XXXX XXX Xooooooooooooooooooooooo @@@ ", " ... oooooo XXX XXX XXoooo oooooX oo Xoooooo @@@ ", " ... ooooo+OO +++O++ XXXXXXX oo XX XXXXXXXX XX oooo @@@ ", " ... oooo++OOO+++XX XXXXXXXXX +X+++++ooXXXXX XXX XXXoooo @@@ ", " ... oo++++OOOO XX +X++ oo X XXXXXooo @@@ ", " ... ++ O+O+++ ++XX++X+++++OOO+X+++++ ++ XXXXXXX XXX ooo @@@ ", " ... X OO + +++X+++++X++OO+++++ ++++ O XXX oo @@@ ", " ... +++ +++O++++++++++++++OO+++++++++++ +++++O+++++++++ oo @@@ ", " ... ++++++++++++++++++++++++++++++++++++++++++++++++++++++ XX @@@ ", " ... @@@ ", " .. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ ", " . @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ ", " @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ", " " }; micropolis-activity/images/tiles-51.xpm0000664000076400007640000000432610724145723020376 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "42 42 13 1", " c black", ". c #00007F7F0000", "X c #7F7F7F7F0000", "o c #5D5D5D5D5D5D", "O c gray50", "+ c blue", "@ c #4F4F4F4FFFFF", "# c green", "$ c #BFBF79790000", "% c #FFFF77770000", "& c yellow", "* c gray75", "= c gray100", /* pixels */ "******************************************", "*OO++++OOOO++++OOOO++++OOOO++++OOOO++++OOo", "*OO++++OOOO++++OOOO++++OOOO++++OOOO++++OOo", "*OOooooooooooooooooooooooooooooooooooooOOo", "*OOo==================================*OOo", "*++o=$$$$$$$$$$$$$$$$$$$$OOO$$$$o%%$$=*++o", "*++o=$$$X$$$$$$$X$$$$$$$$O*O$$$o$$%%$=*++o", "*++o=$$$OOOOOOOOOOOOOO OOOOO$$$$$$ %%=*++o", "*++o=$$$O*O*O& *O*O*O o O***OOOo$ $ %=*++o", "*OOo=OOOOOOOO***OOO*** O*OOo*OOO o $%=*OOo", "*OOo=*O*O*O$*OOoOO*OOo&**OOooO*Oo ooo=*OOo", "*OOo=OOOOOO**OOoo**OOoo**OOooOOo$*O o=*OOo", "*OOo=$$$$$$*o****************O*O$*OOo=*OOo", "*++o=$$$$$$***OOOOOOOOOOOOOO*OOOO*O o=*++o", "*++o=$$$$***o*OOOOOO*+OOOOOO*O*OO*ooo=*++o", "*++o=$$$*ooo*oO*oOO*+*+OO*oO*oOO$ooXX=*++o", "*++o=$$**ooO**OOOOOO*+OOOOOO*o*OO.XXX=*++o", "*OOo=$$**ooOo*OOOOOO*+OOOOOO*oOO#.$$$=*OOo", "*OOo=$$**ooO**OOOOOO*+OOOOOO*o*OO.O.$=*OOo", "*OOo=$$*OOOO**O*oO*+*+*+O*oO*oOO#.#.$=*OOo", "*OOo=$$OOXOOo*OOOOO*+++OOOOO*o*OOOOOO=*OOo", "*++o=$$$XXO******************oOOO*OO*=*++o", "*++o=$$@oX*o*OOOOOOOOOOOOOOOoo*OOOOOO=*++o", "*++o=$$@+$***ooooooooooooooOoOOO$$$$$=*++o", "*++o=$$@o$*o*ooooooooooooooOoO*O$$*OO=*++o", "*OOo=$$@+$o*OOOOOOOOOOOOOOOooOOO$&***=*OOo", "*OOo=$$@o$*OOooOOooOOooOOOXooO*O&o&o&=*OOo", "*OOo=$$@+$OOooOoooOOooOOOXXooOOOo&o&o=*OOo", "*OOo=$$$$$$ooooooooooooooooooO*O$o&o$=*OOo", "*++o=$$$$$$*o$oOO*o*oOOOOO*%OOOO$$X$X=*++o", "*++o=%%%%%%%%%%OOO*O*O*O*O*o*O*O$$*o$=*++o", "*++o=$$$$*o$$$$OOOOOOOOOOO*%OOOO$$$$$=*++o", "*++o=$$$*o$$$$$$$O*OO$$$$*oo$$$$*o$*o=*++o", "*OOo=$$$X$$OOOOOOOOOO$oo*o$%$$$$$$$$$=*OOo", "*OOo=$$$$X$O*O*O*O*OO$o*o$$o$$X$X$*o$=*OOo", "*OOo=$ $$$XOOOOOOOOOO$o$o$$%$$X$X$$$$=*OOo", "*OOo=$$$$$$o*O$$$$$$$$o$$$$o$$$$$$$$$=*OOo", "*++o==================================*++o", "*++o***********************************++o", "*++OOOO++++OOOO++++OOOO++++OOOO++++OOOO++o", "*++OOOO++++OOOO++++OOOO++++OOOO++++OOOO++o", "*ooooooooooooooooooooooooooooooooooooooooo" }; micropolis-activity/images/icroad.xpm0000664000076400007640000000314310724145723020270 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "56 24 5 1", /* colors */ "# c #000000", "a c #7F7F7F", "b c #5D5D5D", " c #FFFFFF", "d c #BFBFBF", /* pixels */ "dddddddddddddddddddddddddddddddddddddddddddddddddddddddd", "dbbbb bbbb bbbb bbbb bbbb bbbb bbbb b", "dbbbb bbbb bbbb bbbb bbbb bbbb bbbb b", "d bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb b", "d b################################################d b", "d b# # # # # # # # # # # # # # # # # # # # # # # ##dbbb", "d b##bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb #dbbb", "dbbb# b aad#bbbbbbbbbbbb aad#bbbbbb aad#bbbb aad#b##dbbb", "dbbb##b aad#bbbbbbbbbbbb aad#bbbbbb aad#bbbb aad#b #dbbb", "dbbb# b#####bbbbbbbbbbbb#####bbbbbb#####bbbb#####b##d b", "dbbb##bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb #d b", "d b# bbbb# # bbbb# # bbbb# # bbbb# # bbbb# # bbbb##d b", "d b##bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb #d b", "d b# bb aad#bbbbb aad#bbbbbbbbb aad#bbbbbb aad#bb##dbbb", "d b##bb aad#bbbbb aad#bbbbbbbbb aad#bbbbbb aad#bb #dbbb", "dbbb# bb#####bbbbb#####bbbbbbbbb#####bbbbbb#####bb##dbbb", "dbbb##bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb #dbbb", "dbbb# ##############################################d b", "dbbb## # # # # # # # # # # # # # # # # # # # # # # #d b", "d b################################################d b", "d bddddddddddddddddddddddddddddddddddddddddddddddddd b", "d bbbb bbbb bbbb bbbb bbbb bbbb bbbbb", "d bbbb bbbb bbbb bbbb bbbb bbbb bbbbb", "dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" }; micropolis-activity/images/icstad.xpm0000664000076400007640000000417410724145723020303 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "42 42 8 1", /* colors */ "# c #000000", "a c #7F7F7F", "b c #00FF00", "c c #5D5D5D", "d c #007F00", "e c #BF7900", " c #FFFFFF", "g c #BFBFBF", /* pixels */ "gggggggggggggggggggggggggggggggggggggggggg", "gaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaac", "gaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaac", "gaaccccccccccccccccccccccccccccccccccccaac", "gaac##################################gaac", "gbbc## # # # aaa # # # ggggggg # # # #gbbc", "gbbc# # # # #aaa# # #ggcccccccgg# # ##gbbc", "gbbc## aaaaaaaaa # # ccc#####cccg# # #gbbc", "gbbc# #aaaaaaaaa# #gcc##ccccc##ccg# ##gbbc", "gaac#aaaaaaaaaaa # gc#ccc###ccc#cg # #gaac", "gaac#aaacacacaca# gc#c###ccc###c#cg ##gaac", "gaac## aaaaaaaaa #g#c#c#c#c#c#c#c#g# #gaac", "gaac# #aaaaaaaaa#cgc###########cc#g ##gaac", "gbbc## acacacacacc #ccacccccccc#c#g# #gbbc", "gbbc# #aaaaaaaaac #c#########c#c#g ##gbbc", "gbbc## aaaaaaaaa #c#dddggdd#c#c#g# #gbbc", "gbbc# #acacacaca g#c#bbbgbbb#c#c#g ##gbbc", "gaac## aaaaaaaaa cg#c#bdbbbdb#c#c#g# #gaac", "gaac# #aaaaaaaaaccg#c#bdbbbdb#a#c#g ##gaac", "gaac## acacacacacgg#c#bbbbbbb#c#c#g# #gaac", "gaac# #aaaaaaaaaggg#c#dbdbdbd#a#c#g ##gaac", "gbbc## aaaaaaaaaggg#c#bbbbbbb#c#c#g# #gbbc", "gbbc# #acacacacagcg#c#bdbbbdb#a#c#g ##gbbc", "gbbc## aaaaaaaaaccg#c#bdbbbdb#c#c#g# #gbbc", "gbbc# #aaaaaaaaacgg#c#bbbggbb#c#c#g ##gbbc", "gaac## acacacacaggg#c#dddgddd#c#c#g# #gaac", "gaac# #aaaaaaaaaggg#c#########c#c#g ##gaac", "gaac## aaaaaaaaaggg#ccccccccccc#c#g# #gaac", "gaac# #acacacacagggc###########cc#g ##gaac", "gbbc#aaaaaaaaaaagggc#cc#c#c#c#c#c#g# #gbbc", "gbbc#aaaaaaaaaaa#aag#ccc#####ccc#g# ##gbbc", "gbbc## #aaaaaaaa aagc##ccccccc##cg # #gbbc", "gbbc# # #aaaaaaa#aaagcc#######ccg # ##gbbc", "gaac## # # aaa # #acaggcccccccgg # # #gaac", "gaac# # # #aaa# # #aacaggggggg# # # ##gaac", "gaac## # # aaa # # #caacaaccc# # # # #gaac", "gaac# # # #aaa# # # cacaaccc# # # # ##gaac", "gbbc##################################gbbc", "gbbcgggggggggggggggggggggggggggggggggggbbc", "gbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbc", "gbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbc", "gccccccccccccccccccccccccccccccccccccccccc" }; micropolis-activity/images/tiles-34.xpm0000664000076400007640000000302610724145723020373 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "34 34 10 1", " c black", ". c #7F7F7F7F0000", "X c #5D5D5D5D5D5D", "o c gray50", "O c green", "+ c #BFBF79790000", "@ c red", "# c yellow", "$ c gray75", "% c gray100", /* pixels */ "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$@@OOOO@@@@OOOO@@@@OOOO@@@@OOOO@@X", "$@@OOOO@@@@OOOO@@@@OOOO@@@@OOOO@@X", "$@@XXXXXXXXXXXXXXXXXXXXXXXXXXXX@@X", "$@@X $@@X", "$OOX % % % % % % % % % % % % $OOX", "$OOX % % % % % % % % % % % % $OOX", "$OOX % % @@@@o@@@@o@@% % % % $OOX", "$OOX % % @ o o @ % % % $OOX", "$@@X % @@XXoXXXXoXXX@% % % % $@@X", "$@@X % @+@XoXXXXXXXXX@ % % % $@@X", "$@@X %@@@XX@@@@@@@@@@@@% % % $@@X", "$@@X % @@+X@XXXXXXXXXXX@ % % $@@X", "$OOX %+@@@+ooooooooooX@% % % $OOX", "$OOX % @+@@@o####o##ooX@ % % $OOX", "$OOX %@@@+@X#XXoX#X#oX@% % % $OOX", "$OOX % +@@@@X###oX#X#oX@..... $OOX", "$@@X %@@@+@X#XooX#X#oX@ . $@@X", "$@@X % @+@@+X#oooX#X#oX@o Xo. $@@X", "$@@X %@@+@@X#oooX##ooX@XXo . $@@X", "$@@X % +@@@@XXoooXXXooX@XoX . $@@X", "$OOX %@@+@@ooooooooooX@XXX @ $OOX", "$OOX % @@@+@@@@@@@@@@@@ o o @ $OOX", "$OOX %@+@@@ @ @XXXXX @ $OOX", "$OOX % @@@@ XXX@ XXX@@@@@@@@@ $OOX", "$@@X %+@@ XXX@ XXX@ @ @ @ @% $@@X", "$@@X % @@ +++@ +++@@@@@ @@@% $@@X", "$@@X % % % % % % % % % % % % $@@X", "$@@X % % % % % % % % % % % % $@@X", "$OOX $OOX", "$OOX$$$$$$$$$$$$$$$$$$$$$$$$$$$OOX", "$OO@@@@OOOO@@@@OOOO@@@@OOOO@@@@OOX", "$OO@@@@OOOO@@@@OOOO@@@@OOOO@@@@OOX", "$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }; micropolis-activity/images/obj4-3.xpm0000664000076400007640000000530110724145723020023 0ustar simcitysimcity/* XPM */ static char * obj4_3_xpm[] = { "48 48 10 1", " c None", ". c #00000000E6E6", "X c #000000000000", "o c #CCCC7F7F6666", "O c #3F3F3F3F3F3F", "+ c #BFBFBFBFBFBF", "@ c #7F7F7F7F7F7F", "# c #FFFF7F7F0000", "$ c #FFFF00000000", "% c #FFFFFFFFFFFF", " ", " ", " ", " ", " ", " ", " . ", " . . ", " ", " ", " . . . ", " . ", " XXXX ", " . XoooOXX . ", " . Xoooooo++ . ", " . Xoooooo+@+@ ", " XOoooo+@+@@@ ", " XXooo+@+@@@XXX . ", " XXoo+@+@@@XXOXX . ", " XXX@@@@@@@XXXOX ", " XXXOOO@@@#XXXX ", " $XXXOXO@@X#XX$@ . ", " $XXXXXO@OX##X@XXX ", " $XX@XXO@OXXXXXOXX ", " . $XXXXXO@OXXXXXOX . ", " . $XX@XXO@@@#XXXX ", " . $XXXXXO@@X#XX$@ . ", " . $XX@XXO@OX##X@@ ", " . $XXXXXO@OXXX@@@ . ", " $XX@XXO@OXX@@%@ ", " . $XXXXXO@@@@@@@+ . ", " $XX@XXO@@%@@++ ", " . . $XXXXXO@@@+@+X . ", " $XX@XXO@+@+ooX ", " . $XXXXX+@+ooooX ", " $XX@X++oooooO ", " . $XXX+oooooOoX ", " . $XXXoooooooX ", " . $XXXooOoooO ", " $XXXooooOoX ", " . . $XXXOooooX ", " . $XXXOooX ", " $XXXX ", " ", " ", " ", " ", " "}; micropolis-activity/images/police.xpm0000664000076400007640000000533610724145723020310 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "48 48 11 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #0000E6", "c c #3F3F3F", "d c #007F00", "e c #6666E6", "f c #FF0000", "g c #00E600", "h c #FFFFFF", "i c #FFFF00", "j c #BFBFBF", /* pixels */ "`eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", "`e`````````````````````````````````````````````e", "`egggggggggggggggggggggcggcggggggggggggggggggg`e", "`eggg`ggggggggggggggggcggcgggggggggggggggggggg`e", "`eajjggggggagaggggeeeeeeeeeeeeeeeeeeeeeeeegggg`e", "`eajjgggggggaggggee``````````````````````bgggg`e", "`eajjggggggagaggebeaaaaaaaaaaaaaaaaaaaaa`bgggg`e", "`eajjgggggaggggebeeaaaaaaaaaaaaaaaaaaaaa`bgggg`e", "`ecccggeaccccccbeeeaaciiiiiiaaciiiiiaaaa`bccca`e", "`eggggeeacccccceebeaaciiiiiiiaciiiiiiaaa`bccca`e", "`eg`gebeaccccccebeeaaciiccciiaciicciiiaa`bccca`e", "`eggebeeaccccccbeeeaaciiaaciiaciiaaciiaa`bccca`e", "`egebeeeacca`cceebeaaciiaaciiaciiaaciiaa`bccca`e", "`egeeebeacca`ccebeeaaciiiiiiiaciiaaciiaa`bccca`e", "`egeebeeaccccccbeeeaaciiiiiicaciiaaciiaa`bccca`e", "`egebeeeacccccceebeaaciiccccaaciiaaciiaa`bccca`e", "`egeeebeaccccccebeeaaciiaaaaaaciiaaciiaa`bccca`e", "`egeebeeacca`ccbeeeaaciiaaaaaaciiaaiiiaa`bccca`e", "`egebeeeacca`cceebeaaciiaaaaaaciiiiiicaa`bccca`e", "`egeeebeaccccccebeeaaciiaaaaaaciiiiicaaa`bccca`e", "`egeebeeaccccccbeeeaacccaaaaaaccccccaaaa`bccca`e", "`egebeeeacccccceebeaaaaaaaaaaaaaaaaaaaaa`bccca`e", "`egeeebeaccccccebeebbbbbbbbbbbbbbbbbbbbbbbccca`e", "`egeebeeaccccccbeebbbbbbbbbbbbbbbbbbbbbbbcccca`e", "`egebeeeacccccceebb`bb`bb`bb`bb`bb`bb`bbccccca`e", "`egeeebeaaaaaaaebbbbbbbbbbbbbbbbbbbbbbbaaaaaaa`e", "`egeebeebbbbbbbbb`bb`bb`bbbbb`bb`bb`bbbbbbbbbb`e", "`egebeebbbbbbbbbbbbbbbbb`````bbbbbbbbbbbbbbbbg`e", "`egeeebbb`bb`bb`bb`bhbb`ccccbbbhb`bb`bb`bbbbdg`e", "`egeebbbbbbbbbbbbbbabb`ccccbbbabbbbbbbbbbbbddg`e", "`egebbbbbbbbbbbbbbabb`ccccbbbabbbbbbbbbbbbdddg`e", "`eggddddddddddddddacaccccccacaaddddddddddddddg`e", "`egggdddddddddddddaccccccccccadddddddddddddddg`e", "`eggggddddddddccccccccccccccccccccccdddddddddg`e", "`egggggggggggaaaaccccccccccccccccccccdddgggggg`e", "`eggggggggggaaaaaaccccccccccccccccccccddgggggg`e", "`egggggggggaaaaaaaaccccccccccccccccccccdgdgggg`e", "`eggggggggaaaaggggaaagggggggggaaggggaaaagggggg`e", "`eggggdgggaaaaggggaaagggggggggaaggggaaaaggggdg`e", "`eggggggggaaaaaaaaaabbaaaa``aaaabbaaaaaagggggg`e", "`egdggggggaaaaaaaaaabbaaaahfaaaabbaaaaaaggdggg`e", "`eggggggggaaaaaaaaaabbaaaa``aaaabbaaaaaagggggg`e", "`egggggdggaaaaggaaaaaaaaaaaaaaaaaaggaaaagggggg`e", "`eggggggggaaaagga``a``a``aaa``aaaaggaaaagggggg`e", "`egdggggggaaaaggahfahfahfaaahfaaaaggaaaagggggg`e", "`eggggggggaaaagga``a``a``aaa``aaaaggaaaagdgggg`e", "`eeeeeeeeeaaaaeeeeeeeeeeeeeeeeeeeeeeaaaaeeeeeeee", "``````````aaaa``````````````````````aaaa````````" }; micropolis-activity/images/tiles-143.xpm0000664000076400007640000001033410724145723020454 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "67 57 8 1", " c black", ". c #00003F3F0000", "X c #3F3F3F3F3F3F", "o c #585858585858", "O c #3F3F3F3FFFFF", "+ c #0000BFBF0000", "@ c #BFBF7F7F3F3F", "# c #DFDFDFDFDFDF", /* pixels */ " ", " ############################################################### ", " # ############################################################# o ", " ## ########################################################### oo ", " ### ooo ", " ### @@@ @@@@@@@@@@ XXXXXXXXXX @@ @ XXXXXXXXXXXXXXXXXXXXXX@ ooo ", " ### @@@ @@@@XX@@@@XXXXXX @@@@X @@ @@@ XXXXXXXXXXXXXXXXXXX@@ ooo ", " ### @ @ @ XXXXXXXXXX. XX @@@XXXX@ @@@ XXXXX XXX@@O ooo ", " ### +@ .X. .XXXXXXXXXX XX X@ @X @@@@@ XXXXX X XX XXX@OO ooo ", " ### ++@ ..XXXXXXXX XXXXX @@ X@ @@X XX XX OOO ooo ", " ### ++@ .......... XXXXX XX XXXXX XX XX X X XXXXOOO ooo ", " ### @++ ....... @XXX XXXX XXX XXX @OO ooo ", " ### @+@+++@ ..XX@@X@XXX XXXXXX XX XXXXXX XXXX XXX XX@@@OO ooo ", " ### @+@@@ +@+++@ XX@@XXXXX @@@XXX XXX@@@OO ooo ", " ### @++@@@+ +++@@@@XXXXXXX@ XXXXXXXXX XXXX XXXXX XXX@@ OO ooo ", " ### ++++++@@ @@+@@@@ @@@@@@ @@@@ XXX XXXXX XXXXX X XX @ XOO ooo ", " ### +@+@+@@@ @@++++@@ @@@@@@@@@XXXXXX XXXXX XXXXX XXXXX @@XOO ooo ", " ### +@+@++@@ @@++@+@@@ + XXXXXX XXXX XXXX XXXXX @ XOO ooo ", " ### +++@++@@ @@@++@@@@ @+@@@ XXXXXXX XXXX XXXX XXX @@ OO ooo ", " ### ++@@+++@@ @@++@@@@ ++@@X XXXXXXX XXXXX XX OOO ooo ", " ### ++@@+@@+@@ @@ @@@+@@++@XX XX XOOOO ooo ", " ### @++@+@@@+ XXX +++++ XX XXXXX X XXXXX XXXXX @@@ @ OOOOO ooo ", " ### @@++++++++XXXXXXXXXXXX XX XXXXXXX XXXXX XXXXX @@@ @@OOOOO ooo ", " ### @@+@+@@@++XXXXXXXXX XXXX XXX X @@@ XOOOO ooo ", " ### @ @++@@@@ XXXXXXXXXXXXXX XX XXXX XX X XXXX OOOO ooo ", " ### @ XXXXXXXXXXXXXX X XXXX XX XXXXX++++ OOO ooo ", " ### @ XXX XXX XXXXXXXXXXXXXX X XXX X XXXXX++++ ++++OOO ooo ", " ### @ XXX XXX X + OOO ooo ", " ### @ XXX XXX@@@@@@@@@ @@ X X XX X XXOO +++++++ OOOO ooo ", " ### @ XXX XXX@@@@ @@@@@@@@ XX XXXX X XXXOO + + + OOOOO ooo ", " ### @ XXX XXX@ @ OO@ @@@@@@XX X XX X XXXXOO XXX OOOOOO ooo ", " ### @ @@ OOO @@@@@@@ X XXXX X XXXXOOOOOOOOOOOO ooo ", " ### @@@@@@@@ OOOOOO@@@ @@ X XXXXXXXXXX X XXXXXXOOOOOOOOO ooo ", " ### X @@@ @ @ OOOOOO@@@@ @@ X XXXXXXXXX X XXXXXXOO OOOO ooo ", " ### X @ OOOOOOOOOOO @ @ @@ X XXXXXXX X XX XXXX OOOO ooo ", " ### X @@OOOOO@ OOO @ @@ @ XXX XXXX OOO ooo ", " ### X @@@OOOO@@ @ @@@@@ @ XX XXX XXXX XXXXXXXXXXXXXX@@ OOO ooo ", " ### X @@OOOO@@@@@@ @@ XXX XX XXXXXXX XXXXXXXXXXXXXXX@OOOO ooo ", " ### XX @@@ @@@@@@@ @@ XXXXX XXXXXXXXX XXXXXXXXXXXXXXX OOOO ooo ", " ### XX @ @ @@ XXXXXXXX OOOO ooo ", " ### XX @ XXX@@OOOO@ XXXXXX @ @@ @@@ OOOO ooo ", " ### O XX XXXX@@@@OOOOOO @@XXXX @ @@@@@@@OOOO ooo ", " ### OO XXXXXX XXXXX XXX XX@@@XOOOOOOOOOO@@@ @ @@@@ @@@@@OOO ooo ", " ### OOOO XXXXXX XXXXX XXX @@OOOOOOOOOOOOOOOOO @ @@@OOO@@@@@OO ooo ", " ### OOOO XX XXXXX X@@ OOOOOOOOOOOOOOOOOOO@@ @@@OOOO@@@@OO ooo ", " ### OOOO@@XXXXX XXXXX @@OOOOOOOOOOOOOOOOOOOO@@@ @@OOOOOOO@OOO ooo ", " ### OOOOO XXX@ @XXXX @OOOOOOOOOOOOOOOOOOOOO @@ @@OOOOOOO@OOO ooo ", " ### OOOOOO XX@OO@@@@@@OOOOOOOOOOOOOOOOOOOOOO@@@@@@OOOOOOOOOOO ooo ", " ### OOOOOOOOOOOOOOO@@XOOOOOOOOOOOOOOOOOOOOO@@@@@@@@OOOOOOOOOO ooo ", " ### OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@@@@ @OOOOOOOOOO ooo ", " ### OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ooo ", " ### OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ooo ", " ### ooo ", " ## ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo oo ", " # ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo o ", " ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo ", " " }; micropolis-activity/images/icersr.xpm0000664000076400007640000000277210724145723020325 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "34 34 8 1", /* colors */ "# c #000000" "` c #7F7F7F", "a c #5D5D5D", " c #FFFFFF", "c c #FFFF00", "d c #FF7700", "e c #BFBFBF", "f c #3F3F3F" /* pixels */ "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", "effffffffffffffffffffffffffffffffa", "effffffffffffffffffffffffffffffffa", "effaaaaaaaaaaaaaaaaaaaaaaaaaaaaffa", "effa# # # # # # # # # # # # # effa", "effa # # # # # # # # # # # # #effa", "effa# # # # # # # # # # # # # effa", "effa # # # # f # # # # # # # #effa", "effa# # # # fff # # # # # # # effa", "effa # # # fffff # # # # # # #effa", "effa# # # fffffff # # # # # # effa", "effa # # fffffffff # # # # # #effa", "effa# # `ffffffffff # # # # # effa", "effa # ```ffffffffff # # # # #effa", "effa# #````ffffffffff e e e e effa", "effa # #````ffffffffff e e e eeffa", "effa# # #````ffffffffffeeeeeeeeffa", "effa # # #````ffffffffff # # #effa", "effa# #e# #````fffffffffa # # effa", "effa # #e# #````fffffffaaa # #effa", "effa# # #e# #````fffffaaaa# # effa", "effa # # #e# #````fffaaaa# # #effa", "effa# #e# #e# #````faaaa# # # effa", "effa # #e# #e# #```aaaa# # # #effa", "effa# # #e# #e# #``aaa# # # # effa", "effa # # #e# #e# #`aa# # # # #effa", "effa# # # # # # # #a# # # # # effa", "effa # # # # # # # # # # # # #effa", "effa# # # # # # # # # # # # # effa", "effa # # # # # # # # # # # # #effa", "effaeeeeeeeeeeeeeeeeeeeeeeeeeeeffa", "effffffffffffffffffffffffffffffffa", "effffffffffffffffffffffffffffffffa", "eaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" }; micropolis-activity/images/tiles-47.xpm0000664000076400007640000000413210724145723020376 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "34 50 8 1", " c black", ". c #5D5D5D5D5D5D", "X c #00000000AFAF", "o c blue", "O c green", "+ c #BFBF79790000", "@ c gray75", "# c gray100", /* pixels */ "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.", "@OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.", "@OO............................OO.", "@OO.##########################@OO.", "@OO.########## ##############@OO.", "@OO.######### .. ############@OO.", "@OO.######## ..... ##########@OO.", "@OO.####### ..... #...#####@OO.", "@OO.###### ..... oo ...#####@OO.", "@OO.##### ..... oooo ..#####@OO.", "@OO.#### ..... oooooo .#####@OO.", "@OO.### ..... oooXXooo #####@OO.", "@OO.## .... oooooooooo ####@OO.", "@OO.### .. oooooooooooo ###@OO.", "@OO.###XX oXooXoXXoXooXo ##@OO.", "@OO.###XXX oooooooooooooooo###@OO.", "@OO.###XXXXoooooooooooooooo###@OO.", "@OO.###XXXXoooooooooooooooo###@OO.", "@OO.###XXXXooo oo.. ..oo###@OO.", "@OO.###XXXXooo oo.. ..oo###@OO.", "@OO.# OXXXXooo oo ooOO#@OO.", "@OO.# O+XXXooo. oo.. ..oo O#@OO.", "@OO.# O++XXooo oo.. ..oo O#@OO.", "@OO.# O+++Xooo ooooooooo O#@OO.", "@OO.# O++++ooo ooooooooo O#@OO.", "@OO.# O++++++++++++++++++++ O#@OO.", "@OO.# O++++++OOOOOOO+++++++ O#@OO.", "@OO.# O+++++ OO OO++++++ O#@OO.", "@OO.# O++++++ OO++ OO+++++ O#@OO.", "@OO.# O++++++ OO+++ OO+++++ O#@OO.", "@OO.# O++++++ OO+++ OO+++++ O#@OO.", "@OO.# O++++++ OO+++OO++++++ O#@OO.", "@OO.# O++++++ OOOOOO+++++++ O#@OO.", "@OO.# O++++++ OO+ OO+++++++ O#@OO.", "@OO.# O++++++ OO+ OO++++++ O#@OO.", "@OO.# O++++++ OO++ OO+++++ O#@OO.", "@OO.# O++++++OOOO++OOOO++++ O#@OO.", "@OO.# O+++++ ++ +++++ O#@OO.", "@OO.# O++++++++++++++++++++ O#@OO.", "@OO.# O++++++++++++++++++++ O#@OO.", "@OO.# O++++++++++++++++++++ O#@OO.", "@OO.# O++++++++++++++++++++ O#@OO.", "@OO.# OOOOOOOOOOOOOOOOOOOOOOO#@OO.", "@OO.# #@OO.", "@OO.##########################@OO.", "@OO.@@@@@@@@@@@@@@@@@@@@@@@@@@@OO.", "@OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.", "@OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.", "@................................." }; micropolis-activity/images/tiles-16.xpm0000664000076400007640000000256410724145723020401 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "32 32 8 1", " c black", ". c #00003F3F0000", "X c #727272727272", "o c #0000BFBF0000", "O c red", "+ c yellow", "@ c gray75", "# c #DFDFDFDFDFDF", /* pixels */ " ", " ############################ ", " # ########################## X ", " ## ######################## XX ", " ### XXX ", " ### @@@@@@@@@@@@@@@@@@@@@@ XXX ", " ### @@@@@@@@@@@@@@@@@@@@@@ XXX ", " ### @@@@@@oooooo@@@@ @@@@ XXX ", " ### @@@@ooo.o..o@@@@ @@@@ XXX ", " ### @@@@oo..o.oo@@ @@ XXX ", " ### @@@@@oooooo@@@ @@ XXX ", " ### @@@@@@oooo.@@@@@ @@@@ XXX ", " ### @@@@@oo+ooo.@@@@ @@@@ XXX ", " ### @@@.oo+++ooo.@@@@@@@@@ XXX ", " ### @@ooo+.+.+ooo.@@@@@@@@ XXX ", " ### @@ooo+o+o.ooo..@@@@@@@ XXX ", " ### @@ooo.+++oooo..@@@@@@@ XXX ", " ### @.oooo.+.+ooo..@@@@@@@ XXX ", " ### @oooo+o+o+ooo..@@@@@@@ XXX ", " ### @oooo.+++.ooo..@@@@@@@ XXX ", " ### @@oooo.+.oooo..@@@@@@@ XXX ", " ### @@.oooo.oooo..@@@@@@@@ XXX ", " ### @@@.ooooooo..@@OOOOO@@ XXX ", " ### @@@@........@@@OOOOO@@ XXX ", " ### @@@@@@@@@@@@@@@@@@@@@@ XXX ", " ### @@@@@@@@@@@@@@@@@@@@@@ XXX ", " ### @@@@@@@@@@@@@@@@@@@@@@ XXX ", " ### XXX ", " ## XXXXXXXXXXXXXXXXXXXXXXXX XX ", " # XXXXXXXXXXXXXXXXXXXXXXXXXX X ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " " }; micropolis-activity/images/obj7-2.xpm0000664000076400007640000000510210724145723020024 0ustar simcitysimcity/* XPM */ static char * obj7_2_xpm[] = { "48 48 4 1", " c None", ". c #FFFFFFFF0000", "X c #FFFF7F7F0000", "o c #FFFF00000000", " ", " ", " ", " ", " ", " .. .. ", " . ... ", " XXXX . X ", " X XXXX . ", " X X . X ", " XX X . XX ", " .... X. X . XX ", " .. XXX X .XX. X XX...... ", " . XXXXX .XXX .XX.X oo XX..X . ", " XXX .XX . XXX XX.XX ", " XX ..XX .XoXo XX XXXXXX ", " XX ..XX.X.XXXo .XXXX ", " .XX.... . .XXX .X X ", " . XX .. ..XXo XX XXX ", " XoXXoX ..X.X. .. XXX X ", " X ...... ...... ..X......... ", " .. oXX. ...X .X.XXX XXXX ", " X . .....X....XXX ", " . X.... ..XXX...XX X ", " XX X. XX...........XXXXX ", " .XXXXXXXX .. ....XX.... XXXX ", " . X. ...X... .X . ... ", " . X. ..Xo.X..X. .XX . ", " . . X.....XX.X.XX .XXX . ", " . XX.. XX .X. X .XX . X ", " . X... o XX.X .X .X .. ", " XX.. X XX. X .X X .X ", " X .. XXX . X .X X XX ", " . XXXXX X . X . X .X ", " . . X . X . X X ", " . . X . X ", " . . X . . ", " . . . ", " . ", " . ", " . ", " X . ", " X ", " ", " ", " ", " ", " "}; micropolis-activity/images/obj4-1.xpm0000664000076400007640000000530110724145723020021 0ustar simcitysimcity/* XPM */ static char * obj4_1_xpm[] = { "48 48 10 1", " c None", ". c #000000000000", "X c #3F3F3F3F3F3F", "o c #CCCC7F7F6666", "O c #00000000E6E6", "+ c #BFBFBFBFBFBF", "@ c #7F7F7F7F7F7F", "# c #FFFF00000000", "$ c #FFFFFFFFFFFF", "% c #FFFF7F7F0000", " ", " ", " ", " ", " ", " .. ", " .Xoo. ", " .Xoooo. ", " O .XoooXoo. ", " O .ooXooooX. ", " O .oooooooo.. ", " ++oooooXoX.. ", " O O @+@+oooooo..# ", " O @@@+@+oooo... ", " O @@$@@+@+oo...# ", " ....@@@@@++o.... ", " O O ..X.%.@@$@XX....# ", " .X..%..@@XX.@..#O ", " O O ...%..X@XX....# ", " @X.%..X@XX.@..# O ", " O @@@X..X@XX....# O ", " O ....@@@XX@XX.@..# ", " ..X.%.@@@@XX....# ", " O .X..%..@@XX.@..# O ", " ...%..X@XX....# ", " @X.%..X@XX.@..# O ", " +@@X..X@XX....# O ", " .@+@@XX@XX.@..# O ", " .@+@+@@@XX....# ", " .oo+@+@XX.@..# O ", " XXooo+@@.....# O ", " .ooooo+@....# ", " .oooooo....# O ", " .Xooooo...# O ", " O .XoooX..# ", " .....# O O ", " O O ", " O O O ", " O ", " ", " O O ", " O O ", " O ", " O ", " ", " O ", " ", " "}; micropolis-activity/images/obj1-2.xpm0000664000076400007640000000250110724145723020016 0ustar simcitysimcity/* XPM */ static char * obj1_2_xpm[] = { "32 32 7 1", " c None", ". c #BFBFBFBFBFBF", "X c #FFFFFFFFFFFF", "o c #000000000000", "O c #3F3F3F3F3F3F", "+ c #FFFF00000000", "@ c #7F7F7F7F7F7F", " ", " ", " ", " ", " ", " ", " ..... ", " .XooXX. ", " .XOOoX+X. ", " .oooXXXXX. ", " ..oo.XXXXX. ", " @.@.@OXXXXX. ", " O.@OO.XXXXX. ", " O.O.@OXXXXX. ", " O.@OO.XXXXX. ", " O.O.@OXXXXX. ", " @.@OO.XXXXX. ", " @.O.@OXXXXX. ", " @.@OO.XXXXX. ", " @.O.@OXXX+X. ", " O.@OO.XXXXo ", " O.O.@OXXOo ", " O.@.oooOo ", " O.@.oooO ", " @.@@@O ", " OOOO ", " ", " ", " ", " ", " ", " "}; micropolis-activity/images/res.xpm0000664000076400007640000000517110724145723017623 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "48 48 3 1", /* colors */ "` c #000000", "a c #00E600 m #000000", "b c #CC7E66 m #ffffff", /* pixels */ "`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "`a`````````````````````````````````````````````a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbaaaaaaabbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbb``aa```aabbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbb`aabb``aabbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbb`aabbb`aabbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbb`aabbb`aabbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbb`aabbbaabbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbb`aaaaaabbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbb`aa``aabbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbb`aab``aabbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbb`aabb``aabbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbaaaabbaaaabbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbb````bb````bbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "````````````````````````````````````````````````" }; micropolis-activity/images/grcrim.xpm0000664000076400007640000000256010724145723020314 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "32 32 8 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #3F3F3F", "c c #3F3F00", "d c #727272", "e c #DFDFDF", "f c #7F3D00", "g c #BFBFBF", /* pixels */ "````````````````````````````````", "``eeeeeeeeeeeeeeeeeeeeeeeeeeee``", "`e`eeeeeeeeeeeeeeeeeeeeeeeeee`d`", "`ee`eeeeeeeeeeeeeeeeeeeeeeee`dd`", "`eee````````````````````````ddd`", "`eee`gggggggggggggggggggggg`ddd`", "`eee`gggggggggggggggggggggg`ddd`", "`eee`gggggggggggggggggggggg`ddd`", "`eee`ggbbgb``````gggggggbgg`ddd`", "`eee`ggg```bbbbbbbbbbbbb`gg`ddd`", "`eee`ggg```b```b`````````gg`ddd`", "`eee`ggg```b```b`gggggggggg`ddd`", "`eee`ggg`````````gggggggagg`ddd`", "`eee`ggcc``gbg`gggggggabggg`ddd`", "`eee`ggccc`gbg`gggggabbaggg`ddd`", "`eee`gccccg```ggggabbabgggg`ddd`", "`eee`gcfccgggggggabbabagggg`ddd`", "`eee`gccccggggggabbabbggggg`ddd`", "`eee`gccccgg`gggbbabbaggggg`ddd`", "`eee`ggggggga`gababbagggggg`ddd`", "`eee`gggggggga`babbaggggggg`ddd`", "`eee`ggggggggga`baggggggggg`ddd`", "`eee`ggggggggcca`gggggggggg`ddd`", "`eee`gggggggcfcga`ggggggggg`ddd`", "`eee`ggggggcfcggga`gggggggg`ddd`", "`eee`ggggggccgggggggggggggg`ddd`", "`eee`gggggggggggggggggggggg`ddd`", "`eee````````````````````````ddd`", "`ee`dddddddddddddddddddddddd`dd`", "`e`dddddddddddddddddddddddddd`d`", "``dddddddddddddddddddddddddddd``", "````````````````````````````````" }; micropolis-activity/images/icparkhi.xpm0000664000076400007640000000305210724145723020620 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "34 34 11 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #00FF00", "c c #5D5D5D", "d c #007F00", "e c #BF7900", "f c #FF0000", "g c #FFFFFF", "h c #7F7F00", "i c #FF7700", "j c #BFBFBF", /* pixels */ "jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj", "jeebbbbeeeebbbbeeeebbbbeeeebbbbeec", "jeebbbbeeeebbbbeeeebbbbeeeebbbbeec", "jeecccccccccccccccccccccccccccceec", "jeecggggggggggggggggggggggggggjeec", "jbbcgggggggggdbdbbbdbbggggggggjbbc", "jbbcggggggbbbbbbbdbbdbbdbdggggjbbc", "jbbcgggggbdbbbdbbbbdbbdbbdbgggjbbc", "jbbcgggbbbbbbbbbdbbbbdbdbbddggjbbc", "jeecgggbdbbbbbdbbdbdbdbdbdbdggjeec", "jeecggbbbbbdbbbbdbdbdbdbdddbdgjeec", "jeecggdbbbbbdbdbbdbdbbdddbbddgjeec", "jeecgbbbdbdbbbbdbdbbddbdbddbdgjeec", "jbbcgbbbbdbbdbbbdbdddbdbdbddggjbbc", "jbbcgdbdbdbdbdbdbdbdbdddddagggjbbc", "jbbcgbbdbbdbdbdbdbdbdddgggagggjbbc", "jbbcggdbbdbdbdbddddddaggggagggjbbc", "jeecgggddddddddddggggaggggagggjeec", "jeecggggggghhhcccggggaggggagggjeec", "jeecggggggghhhcccggggaggggagggjeec", "jeecggggggghhhcccggggagiigagggjeec", "jbbcggggggghhhcccgggga`ff`agggjbbc", "jbbcggggggghhhcccgggga````agggjbbc", "jbbcgggggghhhccccggggagffgagggjbbc", "jbbcgggghhhhccccccgggcffffcgggjbbc", "jeecgghhhhhccccccccggg`gg`ggggjeec", "jeecghhhhhccccccceeeee`ee`eeegjeec", "jeecgeeehhecceeccceeeeececeeegjeec", "jeecgeehheeceeeecceeeececeeeegjeec", "jbbcggggggggggggggggggggggggggjbbc", "jbbcjjjjjjjjjjjjjjjjjjjjjjjjjjjbbc", "jbbeeeebbbbeeeebbbbeeeebbbbeeeebbc", "jbbeeeebbbbeeeebbbbeeeebbbbeeeebbc", "jccccccccccccccccccccccccccccccccc" }; micropolis-activity/images/tiles-18.xpm0000664000076400007640000000266710724145723020407 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "32 32 10 1", " c black", ". c #00003F3F0000", "X c #3F3F3F3F0000", "o c #3F3F3F3F3F3F", "O c #7F7F3D3D0000", "+ c #727272727272", "@ c #3C3C0000BFBF", "# c #3C3C0000FFFF", "$ c #0000BFBF0000", "% c #DFDFDFDFDFDF", /* pixels */ " ", " %%%%%%%%%%%%%%%%%%%%%%%%%%%% ", " % %%%%%%%%%%%%%%%%%%%%%%%%%% + ", " %% %%%%%%%%%%%%%%%%%%%%%%%% ++ ", " %%% +++ ", " %%% @@@@@@@@OXXX@@@OX@@X@@ +++ ", " %%% @@@@@@@XXXX@@@OXXX@@@@ +++ ", " %%% @#@#@OXX@#@#OXX#X#@#@# +++ ", " %%% #@#@OXX@#@OXXX#@#@#@#@ +++ ", " %%% @##OX###OXX###@###@### +++ ", " %%% ###X###OXX############ +++ ", " %%% ##o ##o ############## +++ ", " %%% ##o ##o ############## +++ ", " %%% ##o ##o ############## +++ ", " %%% ##o ##o ############## +++ ", " %%% ##o ##o ############## +++ ", " %%% ##o ##o ############## +++ ", " %%% # ### +++ ", " %%% .oooooooooooooooooo... +++ ", " %%% . ... +++ ", " %%% . o o o o o ... +++ ", " %%% $ o o o o o ... +++ ", " %%% . .$. +++ ", " %%% .$.$.$.$.$.$.$.$.$.$.$ +++ ", " %%% $.$.$.$.$.$.$.$.$.$.$. +++ ", " %%% $$$$$$$$$$$$$$$$$$$$$$ +++ ", " %%% $$$$$$$$$$$$$$$$$$$$$$ +++ ", " %%% +++ ", " %% ++++++++++++++++++++++++ ++ ", " % ++++++++++++++++++++++++++ + ", " ++++++++++++++++++++++++++++ ", " " }; micropolis-activity/images/tiles-74.xpm0000664000076400007640000000261110724145723020376 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "32 32 10 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c #00000000E6E6", "O c #66666666E6E6", "+ c red", "@ c yellow", "# c gray75", "$ c gray100", "% c None", /* pixels */ "%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%X%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%X%%%%%%%%%%%%", "%%%%%%%%%%%%%%%#X#X@%%%%%%%%%%%%", "%%%%%%%%%%%%%%%#X#%X%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%##%X%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%#%@%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%++++++%%%%%%%%%%%", "%%%%%%%%%%%%+++%%#%%%+++%%%%%%%%", "%%%%%%%%%%%+%%%%%#X%%%%%+%%%%%%%", "%%%%%%%%%%+%%%%%%#$%%%%%%+%%%%%%", "%%%%%%%%%+%%%%%%%#$%%%%%%%+%%%%%", "%%%%%%%%+%%%%%%%O#$O%%%%%%%+%%%%", "%%%%%%%+%%%%%%%%X##$%%%%%%%%+%%%", "%%%%%%%+%%%%%%%%X##$%%%%%%%%+%%%", "%%%%%%%+%%%%%X%XX##$$%X%%%%%+%%%", "%%%%%%+%%%%%%X.XX##$$.X%%%%%%+%%", "%%%%%%+%%%%%%X%.X##$X%X%%%%%%+%%", "%%%%%%+%%%%%%X%XX..$$%X%%%%%%+%%", "%%%%%%+%%%%%%X%XX..$$%X%%%%%%+%%", "%%%%%%+%%%%%%X.XX##$$.X%%%%%%+%%", "%%%%%%+%%%%%%X%. . #%X%%%%%%+%%", "%%%%%%+%%%%%%#%. oo #%#%%%%%%+%%", "%%%%%%%+%%%%%%%. . X%%%%%%%+%%%", "%%%%%%%+%%%%%%%%X #%%%%%%%%+%%%", "%%%%%%%%+%%%%%%%%XX%%%%%%%%+%%%%", "%%%%%%%%%+%%%%%%%%%%%%%%%%+%%%%%", "%%%%%%%%%%+%%%%%%%%%%%%%%+%%%%%%", "%%%%%%%%%%%+%%%%%%%%%%%%+%%%%%%%", "%%%%%%%%%%%%+++%%%%%%+++%%%%%%%%", "%%%%%%%%%%%%%%%++++++%%%%%%%%%%%" }; micropolis-activity/images/schamhi.xpm0000664000076400007640000001026010724145723020441 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "67 57 7 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #FFBF7F", "c c #00FF00", "d c #585858", "e c #7F7FFF", "f c #DFDFDF", /* pixels */ "```````````````````````````````````````````````````````````````````", "``ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd``", "`d`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`f`", "`dd`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`ff`", "`ddd```````````````````````````````````````````````````````````fff`", "`ddd`bbbbbbbbbbbb`bb`ebbbbeeeebbbbbbbb`b`bbbbbbb`bbbbbbbbbbbbb`fff`", "`ddd`bbbbbbbbbbbb`bbbebbbbeeeebbb`bbb`bb`bbbbb`b`bbbbbbbbbbbbb`fff`", "`ddd`bbbccccbbbbb`bb`e`bbb`eebb`bb`aaa`bbbbbbb`b`bbbbbbbbbbbbb`fff`", "`ddd`bccccccbbbbb`bbbeebbbbee`bbb`eaaabbbbbbbbbb`bb`bb`bbbbbbb`fff`", "`ddd`bccccbb`bb```bbbeeb`bbeebbb`eeeeaab````b`````````aab`bbbb`fff`", "`ddd`bccccbbbbb`a`b`bbeebbbee`baaeeee``b`aaaaaaaaaaaaaaabbbbbb`fff`", "`ddd`bccccbbbbb`a`bbbb`eeb`eea`aaee``````a```aaaaaaa`````bbbbb`fff`", "`ddd`bbcccbb`bbaa`bbb`a`eeeeaaaaaee``````a````aa`````````bbbbb`fff`", "`ddd`bbccb`bbb`a````bbaa`eeeaaaa`ee`a````aa```aa````````bbbeee`fff`", "`ddd`bbbbbb`````a`bbb`aaa`eeeaaa`ee```````a`aaa````````bbbeee``fff`", "`ddd`bbbbb`a````aa```eeeeeeeeaaaeeeeeeeaaaaa`aabbbbbbeeeeeaa`b`fff`", "`ddd``bb```a````a`aeeeeeeeeeeaa`eeeeeeeeaaaaaaeeeeeeeee`b`aabb`fff`", "`ddd`````````````aaeeaaeeeeeeaaaeeeeeeeeeeeeeeeeeaab`b`b`b`bbb`fff`", "`ddd`bbb```````eeeee`aa``aaeeeaaeeeeeeeaaaaaaaaaaaabbbbbbbbcbb`fff`", "`ddd`bbbbbeeeeeeeeeaaaaaaaaaeeeeeeeeaaaaa````````a`bbbccccbcbb`fff`", "`ddd`bb`b`b`b`b`bb```a`aa``aaeeeeeeeaaaaaaaaaaaaaa`b`bbbccccbb`fff`", "`ddd`bbb`bbbbbbbb``````````aaaeeeeee`a````aa````aa`b`bb`bbbcbb`fff`", "`ddd`bbcbbbbb``````````````aaaaeeeeee```````aaaaaa`b`bbbbbbcbb`fff`", "`ddd`bcccccbb`aaa``````aaaaaaa`eeeeee`````aaaa`aaa`b`bb```bbbb`fff`", "`ddd`bcccbb```a`aaa````aaa```a``eeeeee````a````aaa`b`bbbbbbbbb`fff`", "`ddd`bccbbbbb`a`aaaaa``a`````aa`eeeeeeaa``a`````aaa``bbbb`bbbb`fff`", "`ddd`bccbbaaa`a`aaa````a````aaa`eeeeeeaa``aaa```aaaa`b`bbbbbbb`fff`", "`ddd`bbb`aaaaaaaaaa````a````aaaaeeeeeeaa``aaa```aa`a```````bbb`fff`", "`ddd`b``aaaaaaaaaa````aa`````aaeeeeeeeaaa``aa```aa`aabbbbbbbbb`fff`", "`ddd``````````````````a``````aaeeeeeeeaaa``aa```aa`aabbbcbbbbb`fff`", "`ddd``bb`a`````````````aaaa``aaeeeeeeea`a```a``aaa`a``bbbcbbbb`fff`", "`ddd`bbb``````````````aaaaaaaa`eeeeeeeaaa````a``aa`a`bbbcccc`b`fff`", "`ddd`bbb`bbbbbb`aaaaa`aaaaaa``eeeeeeeaa``````a``aaaaabbcccccbb`fff`", "`ddd`bbb`bbbbbb`aa```````````e`eeeeeaa```````a`aaa`aabbcccbcbb`fff`", "`ddd`bbb`bbb````````````aaaaaeeeeeeaa````````a```a`aa```bcccbb`fff`", "`ddd`bbb`bbbbbbbbb`aaaa`aaaaaeeeeeaaa````aa``a```a`aabbbbccbbb`fff`", "`ddd`bbb`bbbbbbbbbaaaaaaaaaaaeeeee````a``aa``a```a`aabbbbcc`bb`fff`", "`ddd`bbb``bbbbbccb`aaa``aaaaeeeeee````a``a```a```a`aa````bbbbb`fff`", "`ddd`bbb`b`bbbbccc`aa`a```a`ee`eee````aa`a```aaa`aaaaaabb`bbbb`fff`", "`ddd`bbb`bb`bbbccc`aaaaaaaa`ee`ee`aa``aaa``````````````bbbbbbb`fff`", "`ddd`bcb`bbb`bbccc`aaaa`aa`ee`ee`aaa``a`````````````bb`bbbbcbb`fff`", "`ddd`cbb`bbbb`bbbb`aaaa`aaaea`eeaaaa``aa`aaa````aaccbb`bccccbb`fff`", "`ddd`cbb`bb`````````aa````ee``eeaaaa`aaaaaa``aaaaccc`b`````bbb`fff`", "`ddd`bbbbbbbbbb`aaaaaa````ebb`e`aaaa`a`aaaa```aaaccaccccccb``b`fff`", "`ddd`bbbbbbbbbbb`aaa```````bb`a`aaaaaa`aa`````accacccccbbcbbb``fff`", "`ddd`eeebbb`bbb````a```bbbbbb`aaa```aaaaaaaaaaacccccccccbcccbb`fff`", "`ddd`eeeebbbb`````aa````````b`aaa```aaaa`````a``aaa``ccccbbcbb`fff`", "`ddd`eeeeeeeeeeeeeaa`eeeeeeee`aeeeeeeeeeeee``aaa``````ccccbcbb`fff`", "`ddd`eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeebbbbccccbbb`fff`", "`ddd`eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeaeeeeeeeeeebbbbcbbbb`fff`", "`ddd``a`b`a`b`b`bbeeee`eeeeaa`aaaaaaaaaaaaaaaaaeeeeeeebbbbbbbb`fff`", "`ddd`aabbb`bbbbbbbbbb```aabbbbbbbbbbbbbbbbbbbbbbbeeeeeebbbbbbb`fff`", "`ddd```````````````````````````````````````````````````````````fff`", "`dd`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`ff`", "`d`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`f`", "``fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff``", "```````````````````````````````````````````````````````````````````" }; micropolis-activity/images/scboshi.xpm0000664000076400007640000001026010724145723020457 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "67 57 7 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #FFBF7F", "c c #00FF00", "d c #585858", "e c #7F7FFF", "f c #DFDFDF", /* pixels */ "```````````````````````````````````````````````````````````````````", "``ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd``", "`d`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`f`", "`dd`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`ff`", "`ddd```````````````````````````````````````````````````````````fff`", "`ddd``eeeeeeeee````bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbeeeeebbbbbb`fff`", "`ddd`b`eeeeeeeeeaa````bbbbbbbbbbbbbbbbbb``````bb`beeeeebbbcbbb`fff`", "`ddd`bb``eeeeeeeeaaa``````````bbbbbbbb``````aa``aeeeebbbccbbbb`fff`", "`ddd`bb```eeeeeeeeaaeeeeeeeab`bbbbbbb``````aaaaaaeeebbccbbbbbb`fff`", "`ddd`bbb`aaaeeeeeeeeeeeeeeeaebbbbbb``bbb``aaaeeeeeebbb`````bbb`fff`", "`ddd`cbbb``aaeeeeeeeeeeeeeeaeeebbbbb`bbb`a`eaeeeee`bb`bbbbbbbb`fff`", "`ddd`bbbbbbbab```eeeeeeeeeeaeee`bbbbb``aa`eeaeeee``bb`bbbbbbbb`fff`", "`ddd`bbcbbbb`bbb``aa`a`````aeeeeeeeb`a``eeeeaeea````b`bbbbbbbb`fff`", "`ddd`bbbcbbb`b`bb`aaaaaaaaaa`eeeeeeeeeeeeeeea``aaaa```bbbbbbbb`fff`", "`ddd`bbbcbbb```bbbaa`aa```aa``eeeeeeeeeeeeebab`a`aaaa`bbbbbbbb`fff`", "`ddd`bbbccbb```bbbb````````aaa`eeeeeeeeeeebb`baa`aa`a`bbbbbbbb`fff`", "`ddd`bbcccbb```bbbbb``aaaa```aaeeeeeeeeeeebb``a````aa```````bb`fff`", "`ddd`bbbccb````aaaaa``aaa`````aeeeeeeeeee``b``aa```aaabbbbbbbb`fff`", "`ddd`bbbbbbbbb`aaaa```aa``````a`eeeeeeeeea````aaaaaaaabbbbbbbb`fff`", "`ddd`bbbbbbbbb`aaa```````a```a``eeeeeeeee``````aa`aaa`bbbbbbbb`fff`", "`ddd`bbbbbbb```aa````````a````aeeeeeeeeee``````aaaa`a`bbbbbbbb`fff`", "`ddd`bbbbbb``a`a`````a```aaa``aeeeeeeeeeeeaaaaaaaaaaa`bbbbbbbb`fff`", "`ddd`ccbbb``````````aaaa`````eeeeeeeeeeeeeeaaaa`aaa``````````b`fff`", "`ddd`ccb````````aa``a``aa```eeeeeeeeeeeeeeee````aaa```bbbbbbbb`fff`", "`ddd`cc`bbb`````a```````aaaeeeeeeeaa`eeeeeee````aaa```bcbbbbbb`fff`", "`ddd`cc`bbb``````````````eeeeeeaa`a```aeeeee`aa`a`a```bbbbcbbb`fff`", "`ddd`bb`bbb`aa```aa`a`a`baaeeaaaaaa````aaaaaaaa`a`aa``bbbccbbb`fff`", "`ddd`bb`bbb`aa```aa`aaa`beaa`a``````a```eeeee```aaaa``bbbcbbbb`fff`", "`ddd`bb`bbb`aaaaaa```aa`eeeeaa`a````a```eeeee```a`a`````bbbbbb`fff`", "`ddd`bb`bbb`````````````eeeeaaaa````aa``aeeeee```````````bbbbb`fff`", "`ddd`bb`bbb`aaaaaa````a`eeeaaaaa`aa`aa``aeeeee```````aa``bbbbb`fff`", "`ddd`bb`bbb`aaaaa`````aaeeeaaaaaaa`aaa``aeeeeeee``````a````bbb`fff`", "`ddd`bb`bbb`aa```a````eeee`````````a````aaeeeeeee`````a`````bb`fff`", "`ddd`bb`bbbaaa``aa```eeeee```````````````aeeeeeeeaa``````bb`bb`fff`", "`ddd`bb````aaa``````eeeee````c``````````aaeeeeeeeeeebbbbbbbbbb`fff`", "`ddd`bb`bbb``aa`````eeeeaaacccc```a````aaeeeeeeeeeeeeee`b`b`b``fff`", "`ddd`bbbbbb```aaaa`eeeeea`cccc```aaaa``aaeeeeeeeeeeeeeeeeeeaaa`fff`", "`ddd`bbbbbb``aaaa`aaeaaaa`cccc`````aa``aaeeeeeeeeeeeeeeeeeeeee`fff`", "`ddd`b```````aaa`eaaaaaaa`ccc`````aaa``aaeeeeeeeeeeeeeeeeeeeee`fff`", "`ddd`cccccb`eeeeeeaea`````````````aa``aaaeeeeeeeeeeeeeeeeeeeee`fff`", "`ddd`cbccc`eeeeeeeaa``aaaaa``aa``aa```aa`eeeeeeeeeeeeeeeeeeeee`fff`", "`ddd`bccb`eeeeeeeeba`aaaa```aaaa``a```aa`eeeeeeeeeeeeeeeeeeeee`fff`", "`ddd`b`beeeeeeee`bbaa``aaaaaaa`a``aa``aa`eeeeeeeeeeeeeeeeeeeee`fff`", "`ddd``eeeeeebbbbbbbb`aaaa`aaaa`aaa````aeeeeeeeeeeeeeeeeeeeeeee`fff`", "`ddd`eeeeee```````````````aaa``aaa```aaeeee`eeeeea``ee`aeeeeee`fff`", "`ddd`eeeeebcc`bbbcbb`````aaaaaaa```````ee`aa`aaaaaaaa``aa`eeee`fff`", "`ddd`eeeebbcccbbbaa``aaaaaaaaa``babbbbbeeaaaaa````aaa``aaaeeee`fff`", "`ddd`eebbbbcccc```aa```````````babb````ee```````````a`aaaaaeee`fff`", "`ddd`bb````cbcbbb`bbaabbabbbbbcccbabbbbb`bb```aaaaaaa`aaa``eee`fff`", "`ddd``````a`cc`````b`bbbabbbbbabbccbbbbb`bbbb`c````````aaa``ee`fff`", "`ddd`bbb`bbbcbbbbbbbbbbbbbbccbbbbbbbbbbb`bbbbbcbbbbbbbbb````ee`fff`", "`ddd`bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`aa`fff`", "`ddd```````````````````````````````````````````````````````````fff`", "`dd`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`ff`", "`d`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`f`", "``fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff``", "```````````````````````````````````````````````````````````````````" }; micropolis-activity/images/playhilite.xpm0000664000076400007640000005361110724145723021200 0ustar simcitysimcity/* XPM */ static char *playhilite[] = { /* columns rows colors chars-per-pixel */ "180 50 256 2", " c #055C05", ". c #115905", "X c #006404", "o c #006609", "O c #016B01", "+ c #006A09", "@ c #096C00", "# c #0D6808", "$ c #017402", "% c #007509", "& c #007B02", "* c #007A0A", "= c #097400", "- c #097B00", "; c #007915", ": c #136A00", "> c #12700D", ", c #0A7B25", "< c #018301", "1 c #00830A", "2 c #008C02", "3 c #008B0A", "4 c #0A8100", "5 c #0A8C00", "6 c #0B840C", "7 c #008717", "8 c #009201", "9 c #00940A", "0 c #009B02", "q c #009B09", "w c #099200", "e c #0B9D00", "r c #009213", "t c #009C12", "y c #039617", "u c #108400", "i c #009622", "p c #05922D", "a c #01A301", "s c #00A309", "d c #00AA01", "f c #00AA0B", "g c #0AA400", "h c #0AAC00", "j c #08A40E", "k c #00A617", "l c #01B401", "z c #00B30A", "x c #00B903", "c c #00BA0B", "v c #09B100", "b c #0BBB00", "n c #00B613", "m c #00B518", "M c #00BA12", "N c #00BA1A", "B c #13AB00", "V c #18A300", "C c #17BB00", "Z c #00B623", "A c #20BD00", "S c #2BA31F", "D c #3CAD6F", "F c #02C502", "G c #00C10A", "H c #02C900", "J c #08C500", "K c #03CA09", "L c #00C11B", "P c #00C316", "I c #02D100", "U c #00DA02", "Y c #0AD702", "T c #04D511", "R c #16CA00", "E c #10DC04", "W c #00D028", "Q c #01E302", "! c #00E60A", "~ c #00EA04", "^ c #00EC0D", "/ c #0AE400", "( c #0FE800", ") c #00EA18", "_ c #01F401", "` c #03FD03", "' c #03FD0A", "] c #0CFF0A", "[ c #06F905", "{ c #00FD10", "} c #0CFF11", "| c #08FB17", " . c #11EB00", ".. c #1CE500", "X. c #13FF0C", "o. c #15FF15", "O. c #14FE19", "+. c #18FF15", "@. c #1AFF1C", "#. c #07FD24", "$. c #17FF28", "%. c #19FF36", "&. c #07F233", "*. c #24D500", "=. c #28CC37", "-. c #23E100", ";. c #2FF009", ":. c #29FE36", ">. c #39FE2A", ",. c #32FF33", "<. c #33FF3A", "1. c #3CFF34", "2. c #3BFF3B", "3. c #27FF27", "4. c #3BFF4B", "5. c #37FF45", "6. c #39FF59", "7. c #29FF53", "8. c #3CFF6B", "9. c #36FF72", "0. c #44B378", "q. c #4CE200", "w. c #44FF2E", "e. c #45FD37", "r. c #55FF31", "t. c #63FF35", "y. c #41FF42", "u. c #47FE49", "i. c #4AFF59", "p. c #56FF48", "a. c #56FD56", "s. c #5EFF62", "d. c #53FF69", "f. c #57FF74", "g. c #49FF6A", "h. c #60E35F", "j. c #6DFF6D", "k. c #63FF67", "l. c #6FFF72", "z. c #6AFF7B", "x. c #75FF6C", "c. c #7AFF6D", "v. c #73FF64", "b. c #71FE75", "n. c #71FE7D", "m. c #7AF87A", "M. c #6DE178", "N. c #5FB4B4", "B. c #549FD4", "V. c #4EA3D3", "C. c #4CA7D9", "Z. c #52A4D5", "A. c #54A5D9", "S. c #55A8D5", "D. c #55A8D8", "F. c #58A6D4", "G. c #59A5DA", "H. c #5AAAD6", "J. c #5BAAD9", "K. c #5DB0DA", "L. c #51A8CE", "P. c #62ADDB", "I. c #68AEDF", "U. c #65B0DB", "Y. c #6AB2DD", "T. c #6DB8DF", "R. c #71B5DE", "E. c #73B8DF", "W. c #7BBADE", "Q. c #6EB3E0", "!. c #6EB9E0", "~. c #73B6E0", "^. c #75B8E1", "/. c #79B6E1", "(. c #7ABBE2", "). c #7DBDE9", "_. c #69AFE0", "`. c #5CFF83", "'. c #76FF80", "]. c #71FF93", "[. c #74FFA0", "{. c #7ECDA6", "}. c #7EC2E5", "|. c #7DC8CE", " X c #85FE78", ".X c #9AFF77", "XX c #80FF64", "oX c #C5FF7B", "OX c #81BEE3", "+X c #81BEE9", "@X c #91BFE0", "#X c #8AD4B1", "$X c #89FF8A", "%X c #87FE96", "&X c #9AFF9B", "*X c #97FC97", "=X c #96F68A", "-X c #98FFA6", ";X c #91F8A8", ":X c #ADFF8E", ">X c #A1FF9B", ",X c #A4FF94", "XLXLXLXLXnXn z x mXLXLXLXLX7Xd d d l z l l x z l l l l l l l l l l l l l l l l x l l l l x z d 0 3 & @ rXqXqXeXeXqXqXqX+X", "A.S.S.Z.L.Z.Z.Z.Z.Z.` ] ' ~ J l l x x l x l ] LXLXLXLXLXLXLXLXLXLXt.d #.LXHXLX] d d a l x h v l l l l l l l l l l l b l l x l z h x P h l c LXLXLXLXLXLXLXLXLXLXLXLXg g LXLXLXp.a z f h h f M c 4.f.i.2.g h h z d l l l l l l l l l l l l x l 9XLXLXJXLXLXR g I LXLXLXLXLX6Xa a d d l l z x x l l l l l x l l l l l l l l l l x l l l l z l l 0 9 & @ rXqXwX@XqXqXqXqXqX", "A.Z.G.Z.Z.Z.Z.A.L.S.` ` ` ^ J v l x l l x z ] LXLXLX3X0 l b.LXLXLX.u.u.U d h h _ #.] ) Z d a W %.a.a.a.5.K l x l x l l l l l 7XLXLXCXLXLX>.e :.LXLXCXLXLX>X0 0 g g .s.g.`.f.$.N l b x ~ %.] E H >.f.r.K x c l l x l l l l z 0 2 & @ qXqXqXqXqXqXqXqXqX", "S.S.Z.S.Z.V.Z.A.V.F.` ] _ ^ J v l x d l x x ] LXLXLX&X8 < / LXLXLX&X8 ' LXLXLX[ 9 q w.FXLXJXJXLXLXLXk.h l CXLXKX5XN x f CXKXLXa.x d x l z x l d d 0 LXLXLXLX2 3 < 2 2 8 LXLXLX%XnXLXLXKXCXO.x h X2 q d 4XLXLXJXHXLXLXnX .G d 8XKXKX XnXLXLXKXVX..h l d l l l l l l 0 9 & @ qXqXwX+XqXqXqXqXqX", "Z.Z.Z.Z.Z.Z.Z.A.L.Z.` ` _ ^ H l z x l l z x ] LXLXLXgX^ ' gXHXLXLXx.& _ KXLXLX_ 3 K KXLXLXLXLXLXLXJXLX .a p.LXLXLXc N %.LXJXLXU d x z l l l a d a 0 LXLXLXLX- * < < 3 8 JXLXLXJXLXGXLXLXLXvXk d 7XLXJXjX0 J LXLXLXfXd.MXLXHXFXG x d l d l l l 3XLXLX5.MXLXnX< nXLXCXr.LXLX:X< i [.LXLXLXLXLXLXDXHX=Xm Z 4XLXDXLXLXKXLXJXLXcXd d d l l l l l l 0 2 & @ wXOXqXqXqXqXqXqX+X", "A.A.A.Z.Z.Z.V.B.V.B.` ` ` ^ J v l l l v x x ] LXLXLXLXLXLXLXLXLXLX/ & ~ LXLXLX-.2 #.2XSXLX<.s -.LXLXLXp.a I LXJXLX1.f '.JXJX$Xd d d a d l d l d a 0 LXLXLXLX$ * & < 3 8 LXLXLXSX3.O.mXJXLXKXs d fXLXLX>X8 ;.HXKXLXy.e g ` I a a a d l l d l l 3XLXLX8.%XLXLX^ LXLX;Xr.LXLX1X$ 5 X9XLXcXN k -XLXLXKXs z XLXLXMXr < L LXLXLX6.3 2 q a d x l l 0 2 & @ qXOXqXOXqX}.OX(.qX", "V.V.C.C.V.A.B.A.V.Z.` ` ` ^ H v l x l l x l ] JXLXLX*X& $ * $ = 1 1 5 / LXLXLX! 7 fXLXLXmXO.' 6XLXJXLX<.2 - r e.LXLXLXLXLXR 2 2 2 w 0 d l x c x x d LXLXLXLX< < < 5 a a LXLXLX8.4 = w.LXLXLX< < 2XLXHX1X< r.zXHXVX0 1 a LXLXLX5.2 0 a d h l l 6XLXLX5.< XLXLXLX.X* <.LXLX,X& ..LXJXLXa.~ 2.IXHXLXLX= 4 1XKXHXLXv.-.3XLXLXLXR 2 8 0 a d l d d 0 9 & @ qXOXqXOXqXqXOXqXqX", "V.V.V.B.B.B.C.B.L.Z.` ` ` ^ H l l l l x l l } HXLXLXdX; * & = 1 1 < 2 ~ LXLXLX) < s.LXHXLXLXLXLXFXHXLX>.$ & 3 V KXHXHXLXgX* - 2 2 8 0 d l l h c x d LXHXLXLX* 7 < 8 f f KXHXLX4.& < 1.LXJXLX1 1 -XLXLX&X< ~ LXLXLXNXUXDXHXLXCXz 8 8 a a d l l 3XLXLX4.< ,.LXJXLX6.& >.LXJX-X1 h LXLXLXJXLXLXZXLXLXLX1 ; &XLXLXLXLXLXLXLXLX>X- < 2 8 s d z l d a 3 & @ wXqX}.OXqXqXOXqX(.", "V.B.V.V.C.C.C.B.Z.F.` ' _ ^ J l l x c d l x ' LXKXLX3X* % & - < 2 w 8 ` GXLXLX^ & a &XLXGXLXnX_ x.LXLX&X& * 5 y ].LXLXLX7.& - < 2 8 a d d l l l l h KXKXLXLX4 3 2 w s d KXKXLX1.3 & e.LXKXKX< 1 -XLXLX>X2 & ] mXGXKXLXLXLX&XG 2 & 2 0 a d d z 4XKXLXe.4 R LXLXLXG $ e.LXKX&X* < 3.MXLXLXLXa.K KXLXKX! * ,XLXLX9X&XLXKXLX&X0 - 2 < 8 a d l l d q 2 & @ wX).qXOXqX}.OX).qX", "V.V.V.C.B.C.B.C.V.B.` ] _ ^ J x l l l l x d x a 0 8 & < < < < w 0 e e 0 q q 9 2 < 2 < l _ H 4 < * O < $ - < < p dXLXLXPX0 $ & < 2 0 a l l l l z x z d q 9 3 < 1 < w a d g e 8 2 < < < 3 3 2 - 4 < 1 1 2 - < < 2 x ~ .~ 8 & & & < 8 q d d z l a f q 3 2 < < 1 7 & - = & < * - < 3 2 ^ ) s 2 * & : & & < &XLXLX-X$ d ~ l & & < < 2 8 a d l l l q 9 & @ eXOX}.qXqXOXOXOXOX", "V.V.V.C.C.B.C.B.V.A.` ` ` ^ J l l l l x x l d f a 8 2 < < 3 9 w 0 a a l d a 9 2 2 2 9 2 2 < < 1 < 1 & & 5 m.4X9XLXJXLXXX$ & 1 < 8 a d d l l l l l l d a 8 w < & 8 w d a a a 0 3 8 < 0 r t 5 u u 2 r r < 5 2 2 2 8 < 2 2 < & 1 < 2 2 0 a d z x d e e 0 < 5 & & 7 & = - & 3 < 5 2 8 9 8 8 < < < < < & & & *XLXLX2X* < & & < < < < 2 8 a d l l d a 3 & @ OXqXqXqX).).OX).OX", "V.V.V.B.B.C.B.A.V.Z.` ] _ ^ J l l l l l l l l z f 0 w < 2 8 a a d z l d a a 0 0 2 9 8 8 8 2 2 2 3 1 1 2 & a.LXHXHXLXCXh < $ & 2 8 a d z l l l l l l d d 0 8 2 5 8 0 a d l d q 0 8 w 2 k q 8 5 5 2 9 t 3 5 2 2 2 0 2 2 < 2 < 3 < 2 8 q d d z z l a a 8 8 2 w 2 r 2 5 5 9 3 8 5 q 2 8 2 8 2 < < < < * 8 < 6XLXLX3X< & & < < 2 < 2 w 0 d d l l d q 2 < = OX}.qXqXqXOX(.OXOX", "V.V.V.V.C.B.C.C.V.Z.` ` ` ^ J z l l l x l l l n f a 8 0 8 q q f l d l l d d 0 q q 8 q 0 8 0 3 2 9 9 2 2 2 _ $X X X X X X X X X X o X X X o o X o X o o X X X o X X o X X X o o X o X X . X X X X X X O X X X X o o X o o o O O $ $ $ $ $ - & 4 < 5 < < 5 < < < < < < < < < < < < < < < - < < < < < < < < < < & < & & & & & & * $ $ $ $ $ $ O $ O O $ X O O O O O O O O O @ @ @ O O + @ @ @ % X $ O O : @ @ O O O O O # =.#X|.).OXW.(.^.~.R.Y.Y.", "C.B.V.B.B.V.V.B.Z.V.Z.Z.Z.D.D.Z.F.D.F.G.A.S.S.Z.S.Z.S.S.Z.Z.A.V.Z.V.Z.Z.S.A.S.G.H.G.J.J.J.P.J.P.J.P.P.P.U.P.U.U.U.U.P.U.Y.Y.U.U.Y.Y.Y.Y.Y.Y.Y.Y.R.T.R.R.R.R.R.R.R.R.R.R.R.~.R.E.^.^.^.^.E././.^.E.(.(.(./.).(.(.(.(.).}.(.OX(.qX(.OX(.(.).(.(.(././.(.(.(.(.(.(.(.W.(.(.(.).OX(.(.(.(.(.(.OX}.(.(.(.(.W.(.(.E.^.~./.^.^.E.(.(.^./.~.E.(.(.(.).W.W.(.(.(.W.(.E.E.E.R.Y.U.", "V.V.C.B.Z.Z.C.V.V.Z.Z.Z.S.D.D.D.G.D.D.D.D.Z.G.Z.Z.S.S.Z.A.Z.A.Z.V.Z.Z.Z.Z.S.D.D.H.H.H.H.J.J.J.P.P.P.I.U.P.U.P.Y.U.U.Y.U.U.Y.U.Y.Y.U.Y.Y.Y.Y.Y.Y.Q.R.R.R.Y.~.R.R.R.R.R.R.R.~.~.~.R.~.R.E.E.E.^.^.E./.(.^.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(./.(.(.(.(.W.(.(.(.(.OX(.OX(.(.(.(.(.(.(.(.(.(.(.(.(.^.^.^.^.^.~.~.~.R.~.E.(.E.E.(.(./.(.(.(.(.(./.(.^.R.R.Y.U.", "C.V.V.C.V.C.A.V.V.B.Z.Z.S.A.G.S.G.G.D.D.G.D.S.D.S.Z.S.Z.A.Z.Z.A.A.V.Z.Z.S.S.S.D.G.H.J.J.P.J.P.J.P.P.P.U.U.P.P.U.P.U.P.P.U.P.U.Y.U.U.Y.Y.Y.Y.Y.Y.Y.R.Y.R.R.R.R.Q.R.R.R.~.~.~.R.R.R.R.R.R.R.~.R.^.^.^.E.(.(.(.(.(.(.(.(.(.(.(.(.(.W.(.W.(.(.(.(.(.(.(.(.(.^.(.(.(.(./.(.(.W.(.(.(.(.}.(.(.(.(.(.(.(.(.^.(././.^.^.^.~.~.~.~.R.R.R.~.R.R.E.E.E./.E.E.(.^.(.^.(.^.~.R.Y.Y.I.", "C.B.V.B.B.B.Z.C.Z.A.Z.A.S.D.A.D.G.D.H.H.G.D.D.S.A.S.Z.Z.Z.Z.Z.Z.V.A.Z.Z.Z.A.S.D.G.G.J.J.J.P.J.P.K.P.P.U.P.U.U.I.U.P.I.U.U.P.P.I.U.Y.Y.U.I.Y.Y.Y.Y.Y.R.R.Q.R.R.Y.Q.T.R.T.~.Y.R.Y.T.~.R.R.R.R.R.R.~.^.^.E.E./.E.(.E.(.(.(./.(./.E./.(.(.E.(./.E.(.(.E.^.(.(.^.(./.(./.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.^.^.^.~.^.~.~.T.Q.Q.~.Q.T.R.R.R.R.R.R.E.^.^.E.E.(.(.(.E.E.~./.Y.Y.Y." }; micropolis-activity/images/grindhi.xpm0000664000076400007640000000257710724145723020465 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "32 32 9 1", /* colors */ "` c #000000", "a c #BFBF00", "b c #3F3F3F", "c c #3F3F00", "d c #003F00", "e c #FF3C00", "f c #FFFF00", "g c #7F3D00", "h c #3C00FF", /* pixels */ "````````````````````````````````", "``aaaaaaaaaaaaaaaaaaaaaaaaaaaa``", "`a`aaaaaaaaaaaaaaaaaaaaaaaaaa`f`", "`aa`aaaaaaaaaaaaaaaaaaaaaaaa`ff`", "`aaa````````````````````````fff`", "`aaa`hhhhhhhhhhhhhhgccccchh`fff`", "`aaa`hhhhhhhhhhhhccccgcgchc`fff`", "`aaa`hhhhhhhhhhhhgcgchc`cch`fff`", "`aaa`hhhhhhhhhhcgcccgccchch`fff`", "`aaa`hhhhhhhhhcccgchccchchh`fff`", "`aaa`hhhhhhhhhccc`ccccchhhh`fff`", "`aaa`hhhhhhhggcchccgchhhchh`fff`", "`aaa`hhhhhhccchhgcchhhhhhch`fff`", "`aaa`hhhhhhcchhcchhhhhhhghh`fff`", "`aaa`hhhhgch`ccchhhchhhcchc`fff`", "`aaa`hhhhcchgcchhhhhhhhgcgc`fff`", "`aaa`hhhchhchhhhhhhhhhgcchh`fff`", "`aaa`hhchhchhhhhhhhhhggccch`fff`", "`aaa`hh`h`hhhhhhhhhhhchchhh`fff`", "`aaa`hh`h`hhhhhhhhhhchchhhh`fff`", "`aaa`hh`h`hhhhhhhhhbhbhhhhh`fff`", "`aaa`hh`h`hhhhhhhhhbhbhhhhh`fff`", "`aaa`h````````hhhbbbbbhhhhh`fff`", "`aaa`d``b`b```dddb`b`bddddd`fff`", "`aaa`d````````dddddddeddddd`fff`", "`aaa`dddddddddedddedddddddd`fff`", "`aaa`dddddddddddddddddddddd`fff`", "`aaa````````````````````````fff`", "`aa`ffffffffffffffffffffffff`ff`", "`a`ffffffffffffffffffffffffff`f`", "``ffffffffffffffffffffffffffff``", "````````````````````````````````" }; micropolis-activity/images/scbernhi.xpm0000664000076400007640000001026010724145723020622 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "67 57 7 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #FFBF7F", "c c #00FF00", "d c #585858", "e c #7F7FFF", "f c #DFDFDF", /* pixels */ "```````````````````````````````````````````````````````````````````", "``ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd``", "`d`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`f`", "`dd`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`ff`", "`ddd```````````````````````````````````````````````````````````fff`", "`ddd`bbbbbbbbbbbbbbbccbbbbbbeeebbbbbbbbbbbbeee`bbbbbbbbbbbbbbb`fff`", "`ddd`bb`b`bb`b`bbbbccccbbbbbeee`eeebbbbbbccbeeebbbbbbbccbcb``b`fff`", "`ddd`bb`b`bb`b`bbbbcccbbbbbbbeeeeeeeeebbbcbbeeebbbbbbbcccc`````fff`", "`ddd`bb`b`bb`b`bbbbbbbb`bbbbbbb`bbbeeebbbcb`eeebbeeebbbbbbb````fff`", "`ddd````````````bbbcbbbbbbbbbbbbbbbbeebbbcbbee`eee`ebbbbbbb``b`fff`", "`ddd`bbaaaaaaa`bbbcccbbbbb`bbbccbbbbeebbbccbbeeeeeeeeeeeb`b``b`fff`", "`ddd````````a``bbbcccb`bbbbcccccccbbeebbbbbbbeeeeb`beeeeebb`bb`fff`", "`ddd`bbbbbbbbb`bbbcbbbbbbcccccbbbbbbeebb`bbbbeeebbbbbebee`b`bb`fff`", "`ddd`bbbbbeeee`bbbcccbbbbbbbeeeeebbbebbb`bbbb`bbbbbbbbbbebb`bb`fff`", "`ddd`bb`eeeebe`ebbbbccbbbbbe`eeeeeeee`bb`bbbb`bbbbbbbbbee`b`bb`fff`", "`ddd`beeee`bbb`eebbbbbbbbbee`bbbeeee`aaa`a`````bbbbbbeeeebb`bb`fff`", "`ddd`ee`bbbbbb`eeebbbbbbbeea`aab`bbbaa```aaaaa`bbbbeeeeebbb`bb`fff`", "`ddd`b`bbbbbbb`beeeebbbbeeea`ba`bbbbbb`````````bbbeeee`bbbb`bb`fff`", "`ddd`bbbbbbbbb`bbeeeeeeeeeba`b`bbaaaabbbbb``bbbbb`eeeebbbbb`bb`fff`", "`ddd`b````bbbb`bbbbeeeeeebaa`````````````````ebbeeeeebbbbb`bbb`fff`", "`ddd`bbbbb`bbb`bbbbbbbbbaaaa`aabbaaaaeeeeeeeeeeeeee`bbbbb`bbbb`fff`", "`ddd`bbbbbb`bb`bbbbbbbbbbbb``baaabbeeeeeeeeeeeeeee`a``````bbbb`fff`", "`ddd`bbbbbbb`````````bbbba`a`aaabeeeeee`aaaaaaaeeeaa`aaaa`bccb`fff`", "`ddd`bbbbbbbb``bbbbbbb`aa`aa`aaeeeee`a````````aa```a`aa`a`bccb`fff`", "`ddd`bb`bbbbbb`bbbbbbb```a`a`abeeee`aaa`a```a`aaaaaa`aa`a`bbbb`fff`", "`ddd`bbbbbbcbb``bbbbbb``aaaa`beeee`aaaaaa```a`aaaa`a`aa`a`bb```fff`", "`ddd`bbb`bbbbb``````````a``a`eeee`a`aa`aa``aa```aa`aaaaaa`b````fff`", "`ddd`bbbbbbbbb`aaaaaa````````eee`aaa```aaaaa```aaaaaaaaa```bbb`fff`", "`ddd`bbcbbcbbb`aaa``a`````````````````aaaaaaaa````````````bbbb`fff`", "`ddd`bcccbbbbb`a`aa`a`aaaa```eeeaaa````````````````aaaa```bbbb`fff`", "`ddd`bccccbcbb`a`aa`a````````eeeaaaaaaaaaaaaaa`aaaaaaaaaaccbbb`fff`", "`ddd`bccbbbbbb`a`aa`a`aaaa``a`ee`aa```aaa``````````````a`cbccb`fff`", "`ddd`bbbb`bbbb``aaa`a```aa``a`eeeeaaaaaaaa`````````````a`cbbbb`fff`", "`ddd`b`bbbbbbb``a`a`a``````a``eeee`````````````````aaaa`acccbb`fff`", "`ddd`bbbbbbbbbaaaaa`a`a```aa`aaaeeeeeeeaaaaaaa`aaa``````acbcbb`fff`", "`ddd`bbbbbbbbbaaaaa`a`aaaaaa`aaaeeeeeeeaaaa`a``a`a``````acccbb`fff`", "`ddd`bbbb````````````````````````````eeea`a`a``aaaa``a``a`bbbb`fff`", "`ddd`bbbbbb`bbaa``a````bbb`a`aaaaaaaa```aaa`a``a``a`aa``a`bbbb`fff`", "`ddd`bbbbbbbbbaaaaa````b`bba`aaaabaaa`aeaaa`a``aa`a`a```a`bbbb`fff`", "`ddd`bbbbbbbbb`aaaa````b``````````````eea`a`a````aa`aa``a`bbbb`fff`", "`ddd`bbbbbbbbb`aaaa`c`cb`aaa`aabe`eeeeeea`aaa```aaa`aaaaa``````fff`", "`ddd`bbbbbbbbb`a`aaa`cca`aba`a`ee`eeeeeaaa`a``aaaaa`aaaaa`bbbb`fff`", "`ddd`bbb`bbbbb`a`aaa`ccaabab`aeee`e`b`aaa`````aaaaaa`cccccbbbb`fff`", "`ddd`bbbb``````````````babab`aeea`aaaaa`````a````aacc``ccccccb`fff`", "`ddd`bbbbbbbbb`aaaa``a`baaaa`aeee`a````aaa``aaaaaaaccccccccccc`fff`", "`ddd`bbbbbbbbb`aaaaa`a`caaba`aeeeaaa`aaaaa`aa`aa```aaa``ccbbbb`fff`", "`ddd`bbbbbbbbb``````````aaaa`eeeeeaa`aaaaaa`aaaaaaaaeeeeeeeebb`fff`", "`ddd`bbbbbbbbbbbbbbb`bbbabaabeeeee`a`aaaeeee``aaaaaeeeeeeeeeee`fff`", "`ddd`bbbbbbbbbbbbbbb`bbaabbcb`eeeeeee`eeeeeeeeeeeeeeeebbbeeee``fff`", "`ddd`bbbbbbbbbbbbbbb`bbabbbcbbbbeeeeeeeeeeeeeeeeeeeeebbbbbeeee`fff`", "`ddd`bbbbbbbbbbbbbbb`bbbbbccbbbbbbeeeebbbbbeeeeeeebbbbbbbbbbbb`fff`", "`ddd`bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`fff`", "`ddd```````````````````````````````````````````````````````````fff`", "`dd`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`ff`", "`d`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`f`", "``fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff``", "```````````````````````````````````````````````````````````````````" }; micropolis-activity/images/tiles-40.xpm0000664000076400007640000000306210724145723020370 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "34 34 11 1", " c black", ". c #00007F7F0000", "X c #7F7F7F7F0000", "o c #5D5D5D5D5D5D", "O c gray50", "+ c green", "@ c #BFBF79790000", "# c red", "$ c #FFFF77770000", "% c gray75", "& c gray100", /* pixels */ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%@@++++@@@@++++@@@@++++@@@@++++@@o", "%@@++++@@@@++++@@@@++++@@@@++++@@o", "%@@oooooooooooooooooooooooooooo@@o", "%@@o %@@o", "%++o & & & & .+.+++.++ & & & %++o", "%++o & & +++++++.++.++.+.& & %++o", "%++o & & +.+++.++++.++.++.+& %++o", "%++o &+++++++++.++++.+.++..& %++o", "%@@o & +.+++++.++.+.+.+.+.+. %@@o", "%@@o +++++.++++.+.+.+.+...+. %@@o", "%@@o &.+++++.+.++.+.++...++.. %@@o", "%@@o +++.+.++++.+.++..+.+..+. %@@o", "%++o ++++.++.+++.+...+.+.+.. %++o", "%++o .+.+.+.+.+.+.+.+.....O & %++o", "%++o ++.++.+.+.+.+.+...& &O& %++o", "%++o .++.+.+.+......O& & O & %++o", "%@@o & ..........& & O & &O& %@@o", "%@@o & & &XXXooo & &O& & O & %@@o", "%@@o & & & XXXooo& & O & &O& %@@o", "%@@o & & &XXXooo & &O&$$ O & %@@o", "%++o & & & XXXooo& & O ## O& %++o", "%++o & & &XXXooo & &O O & %++o", "%++o & & &XXXoooo& & O&##&O& %++o", "%++o & XXXXoooooo& &o####o & %++o", "%@@o &XXXXXoooooooo& & & & %@@o", "%@@o XXXXXooooooo@@@@@ @@ @@@ %@@o", "%@@o @@@XX@oo@@ooo@@@@@o@o@@@ %@@o", "%@@o @@XX@@o@@@@oo@@@@o@o@@@@ %@@o", "%++o %++o", "%++o%%%%%%%%%%%%%%%%%%%%%%%%%%%++o", "%++@@@@++++@@@@++++@@@@++++@@@@++o", "%++@@@@++++@@@@++++@@@@++++@@@@++o", "%ooooooooooooooooooooooooooooooooo" }; micropolis-activity/images/checkbox3hilitechecked.xpm0000664000076400007640000007457510724145723023427 0ustar simcitysimcity/* XPM */ static char *checkbox_hilitechecked[] = { /* columns rows colors chars-per-pixel */ "190 70 256 2", " c #0A141B", ". c #0B1A1B", "X c #0C1915", "o c #121B1E", "O c #0C1C2C", "+ c #0B1825", "@ c #111B27", "# c #0E1E36", "$ c #0B221B", "% c #0C2D19", "& c #0A3318", "* c #112816", "= c #14391B", "- c #13243A", "; c #102F34", ": c #142B43", "> c #182A43", ", c #192E4D", "< c #132744", "1 c #182E52", "2 c #19334A", "3 c #1B3353", "4 c #1C355A", "5 c #1C395C", "6 c #163656", "7 c #0D2944", "8 c #1D3C63", "9 c #1D3D6B", "0 c #153F6F", "q c #1E3F74", "w c #213B5E", "e c #203455", "r c #223D65", "t c #243D6B", "y c #293E6C", "u c #263A63", "i c #273E70", "p c #0D4A02", "a c #0C4702", "s c #0E4719", "d c #0E5302", "f c #114C08", "g c #114819", "h c #115805", "j c #1A5716", "k c #17453C", "l c #104A21", "z c #116302", "x c #126A02", "c c #166608", "v c #157A02", "b c #177607", "n c #176416", "m c #1C6A2B", "M c #286A37", "N c #2B7733", "B c #247D1B", "V c #194A44", "C c #1C4057", "Z c #1C5D42", "A c #1D4265", "S c #1C436B", "D c #16436B", "F c #1C4473", "G c #1C4975", "H c #264F59", "J c #224165", "K c #22426B", "L c #23496B", "P c #2A426C", "I c #2D4B6E", "U c #234271", "Y c #2A4071", "T c #2C4A71", "R c #284778", "E c #265278", "W c #334C74", "Q c #3D587B", "! c #375379", "~ c #2E536E", "^ c #257344", "/ c #2B7249", "( c #3F696C", ") c #435B7C", "_ c #254E82", "` c #255788", "' c #255989", "] c #2B5585", "[ c #2B5A85", "{ c #2B5A8A", "} c #265886", "| c #325B8B", " . c #355986", ".. c #2F5792", "X. c #2C6896", "o. c #336998", "O. c #2E6894", "+. c #3777A5", "@. c #3A7DB1", "#. c #2A74A6", "$. c #435D83", "%. c #4D698B", "&. c #496586", "*. c #526A8B", "=. c #5A7493", "-. c #506F8F", ";. c #437CAA", ":. c #637A97", ">. c #6A7996", ",. c #178502", "<. c #199403", "1. c #1A9803", "2. c #1D9508", "3. c #1CA603", "4. c #1EB103", "5. c #2E8C35", "6. c #21B307", "7. c #24AC0D", "8. c #2DA921", "9. c #3C9554", "0. c #358C4F", "q. c #329374", "w. c #21C403", "e. c #22CB03", "r. c #23D203", "t. c #25DA04", "y. c #28DB07", "u. c #2ADA0C", "i. c #28D50B", "p. c #2DDA11", "a. c #30DA16", "s. c #33DB1B", "d. c #2AC312", "f. c #36DA22", "g. c #39DA25", "h. c #3DDA2A", "j. c #3AD329", "k. c #3ED930", "l. c #27E304", "z. c #28E604", "x. c #28EA04", "c. c #2DE60C", "v. c #29F304", "b. c #2CF707", "n. c #37F416", "m. c #46B73F", "M. c #439A47", "N. c #44965C", "B. c #4B906C", "V. c #47AF50", "C. c #56B667", "Z. c #69BE78", "A. c #44D938", "S. c #40DB2E", "D. c #43F128", "F. c #4BD942", "G. c #4DD746", "H. c #54CA58", "J. c #54D452", "K. c #59D95B", "L. c #58D556", "P. c #4CC44C", "I. c #5ED663", "U. c #56F048", "Y. c #63D35C", "T. c #68C675", "R. c #71C879", "E. c #6BD375", "W. c #66E35E", "Q. c #3981AD", "!. c #3A82B3", "~. c #3988B8", "^. c #2F87BC", "/. c #3A9F9C", "(. c #2B8ECA", "). c #2A8FC7", "_. c #2D91CC", "`. c #3494CD", "'. c #359ACC", "]. c #3896CE", "[. c #3B99CE", "{. c #3C94C5", "}. c #3695D0", "|. c #3A96D0", " X c #3C99D0", ".X c #389AD4", "XX c #3CA2D3", "oX c #4284AB", "OX c #4687B7", "+X c #4E8FB3", "@X c #71879C", "#X c #6D8A99", "$X c #6D84A3", "%X c #7589A3", "&X c #7B92AB", "*X c #6D90A6", "=X c #77B588", "-X c #7AB595", ";X c #75A592", ":X c #7FACA6", ">X c #51B78D", ",X c #439BCC", ".G #.[.].].`.`.`.[.].].].`.].].`.`.`.`.`.].].}.`.`.}.].`.].`.`.|.'.}.[.`.].`.].}..X|.[. X.X[.2X[.2X2X,X2X4X2X4X4X0X4X2X4X4X4X2X4X2X4X2XqX2XqXqXqXqXwXqXwXtXqXuXwXyXyXpXuXyXiXdXdXdXdXgXdXdXgXdXdXdXgXgXdXdXdXdXdXdXdXdXaXdXdXdXaXdXdXgXdXgXdXdXgXdXgXgXgXgXjXgXgXjXjXgXgX", "7XtXtXqXtXwXtXqXqXqXqXqXqXqXqXqX0XwXqX0XqX5X5X4XqX2X2X2X4X4X2XqXqXqX2XqXqX4XqX2X4X4X4X4X4X4X2X2X2X2X4X2X3X,XlXLXCXQ A @.|.`.].|.[.`.].].`.].`.`.}.`.}.}.`.`.`.`.}.`.`.}.|.}.`.`.[.`.}.}.'.`.[.`.[.`.].|.[. X X2X|.2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X4X2X4XqX4X4X4X8X9XwXqXqXwXqXtXtXtXwXfXtXuXyXuXdXiXdXdXdXdXdXgXdXgXdXdXgXdXaXgXdXdXdXdXdXdXgXdXgXdXdXdXsXgXdXgXdXgXgXgXgXgXgXgXjXjXjXgXjXgX", "tXtXtXtXtX4XtXwXtXwXqXqXqXqXqXqX4XqX0X5XqX0XqX4X4XqXqXqX4X4XqXqXwXqXqXqXqXqXqXqX5XqX4X4X4X4XqX2X4X4X4X3X2XlXLXGX=.J 8 ~.|.].].}.].].].`.].`.`.`.`._.`.`.`.`.`.`.`.}.}.`.`.}.}.}.].].`.].`.].`.].`.].].|.|. X X X2X|.|.2X2X2X2X2X2X2X2X2X2X2X2X2X4X4X2X4X2XqX4XqXqXqXqXqXqXrXtXtXtXtXtXtXtXtXpXuXiXdXdXiXdXgXdXgXgXdXdXdXdXgXaXgXdXdXhXdXdXdXdXdXdXdXdXdXdXdXdXdXdXgXgXgXgXgXgXgXjXgXjXgXgXjX", "tXtXtXtXtXtXtX7XqXqXqXqXwX9XqXqXqX0XqXqXqX5XqXqXqXqXqXqXqXqXtXwXwXwXwXtXqXtXwXwXqXqXqXqX9XqX4XqX4X0X4XqXlXGXGX%XW 5 L {.|.|.].`.].`.].].`.`.`.`.`.`.`.`.`.`.`.`.`.}.`.}.`.`.`.}.].}.].`.[.`.].`.].[.|.|. X X X2X,X2X|.2X.X2X2X2X2X2X2X X2X2X2X2X2X4X2X4XqX0X4X4X2XwXqXqXqXqXqXtXqXtXqXtXuXuXtXpXiXdXdXvXdXdXdXgXdXgXdXdXgXdXgXaXgXdXsXdXdXgXdXdXdXdXdXdXdXdXdXgXdXdXgXgXgXgXgXgXjXjXjXjXjXgX", "tXqXwXtXtXtXtXqXtXtXtXwXwXtXtXqXqXqXqXqXqXqXwXqX9XqXwXqXtXtXwXpXyXyXpXtXtXtXtXtXtXtXtXqXwXqXqXqXqXqX2XhXIXJXAX=.A 6 E ].].|.`.`.`.].`.].].`.`.`._.`.}._._.`._.`.`.`.`.`.`.`.}.`.`.}.].].`.].`.[.].].|.|.[. X X X2X.X2X2X2X2X2X2X2X[.,X2X2X,X2X2X2X2X4X5X0XqX0X4X9XqXqXqXqXqXqXwXtXtXuXyXtXtXpXuXiXiXdXdXdXdXgXdXgXgXgXgXgXgXaXgXgXgXgXdXgXdXgXdXgXdXdXdXgXdXdXdXgXdXdXfXgXgXdXvXgXjXgXjXvXgX", "tXtXtXtXpXtXtXtXqXtXqXpXyXqXqXqXwX4XqXqXwXqX9XtXwXtXwXtXtXyXyXiXuXuXiXsXiXiXtXtXtXwXtXtXtXtXqXqXqX4XtXKXPXGX@X! 6 3 E {.[.].].].`.`.`.`.`.`.`.`.`.`._.`._.`._.`.}.`.}.`.`.`.`.}.}.}.].`.].].].`.].].}..X[.[. X2X2X2X.X2X|.3X2X,X X,X2X X2XXX2X2X2X2X3X4X4X4X4XqX4XqXqXqXqXqXtXpXtXtXwXtXpXtXpXiXdXdXdXdXdXdXjXdXdXgXgXjXgXgXjXgXjXgXgXdXdXgXdXgXgXgXgXsXsXsXgXdXdXgXgXgXiXgXgXgXgXjXjXjXkXgX", "tXtXtXtXuXqXqXqXtXtXtXtXqXyXuXtXtXwXqX9XqXqXtXtXtXtXtXpXtXiXiXiXsXuXsXsXiXiXiXyXyXtXtXwXqXtXwXqXqXqXIXGXAX&X*.y 1 , L [.[.].`.`.}.`.`.`.`.`.`.`.}._.`._.}._.`.`._.`._.`.`._.`.`.`.`.].].`.`.].].].].|.[.[.[. X.X2X X2X2X2X2X[.2X2X2X[.2X2X2X2X2X4X0X4XqX0XwX0X4X4XqXqXqXqXqXqXqXtXwXuXyXyXuXyXyXiXiXdXdXdXdXdXjXgXgXgXgXjXgXjXgXgXgXgXgXgXgXgXdXdXfXdXdXsXdXsXdXgXdXdXgXgXgXdXgXjXgXjXjXgXkX", "tXtXpXtXtXtXtXtXtXtXtXtXpXwXqXwX4XtXqXtXtXqXqXtXtXtXtXtXyXuXdXdXsXdXdXsXsXiXdXyXyXtXtXtXtXtXwX9X9XcXLXGXCX:. .4 2 2 L [.[.[.].].`.}.`.`.`.`.`.`.`.`.`._.`._._.`.`.`.`.`.`.`.`.`.}.].}.].].`.].].|.|.[.|. X X X X2X2X2X2X|.2X2X,X2X,X2X2X2X2X2X2X2X0X2X0XqX5XqX0XqXqX0XqXqXwXqXtXtXtXwXyXyXyXiXuXyXyXdXdXdXdXdXgXgXgXjXjXjXjXjXgXjXgXgXgXgXgXdXgXgXgXsXdXdXsXgXgXvXaXdXdXdXgXgXvXjXjXjXjXkXgX", "tXtXtXpXpXtXtXqXtXtXtXtXtXtXtXwXqXtXqXtXqXtXtXtXtXtXtXiXuXiXdXdXdXdXdXdXdXdXdXyXyXyXpXtXyXyXtXwXpXIXGXAX$X%.W 4 , : J {. X[.`.`.`.}.`.`.`.`._.`.`.`.`.`.`.`.`._._.`.}.`.`.`.`.`.].`.}.}.].].`.].|.|.[..X X X X2X.X X2X2X,X2X[.2X X2X X2X2X2X2X2X2X0X0X0X0XqX0XqX0XqXqXqXqXwXqXuXtXtXyXtXyXyXiXiXdXdXuXuXsXdXjXgXgXjXgXjXjXgXjXjXjXjXjXjXgXgXgXgXgXdXgXsXgXgXsXdXdXgXdXgXgXgXgXgXjXjXjXjXhXkX", "tXtXtXtXtXyXuXtXtXtXtXtXtXtXtXtXtXtXqXtXqXqXuXqXtXtXyXuXuXaXdXdXdXgXdXdXdXdXdXsXiXpXyXyXpXtXwX9XKXGXAX$X*.Q r 4 2 : C ~.[.[.}.`._.`.`.`.`.`._.`.`.`.`.`.`.`._.`._.}.}.`.`._.`.}.}.`.}..X}.].].].|.|.|.|.|.[. X X2X,X,X2X|.2X|.2X2X2X2X2X2X2X2X2X2X0X0X4XqXqXqX0X4XqXqXqXqXwXqXqXqXqXtXuXpXyXyXuXiXdXaXsXsXgXdXgXgXgXjXjXjXgXgXjXgXjXgXgXgXgXdXdXgXgXgXsXgXdXgXsXgXgXaXgXgXgXjXjXgXjXjXjXkXgX", "yXyXyXyXyXtXqXuXtXtXtXtXtXwXtXwXqXtXqXqXtXwXqXuXtXyXyXuXuXdXdXdXdXgXdXgXdXdXdXsXdXyXyXyXuXuXqXcXGXAXCX=.) W 8 8 1 : 2 ~.[.}.`.`.}.(.`._._.`._.{.`.`.`.`.`.`.`.`.}._._.`.`.`.`.`.`.].].].}.`.].].{.|.|.|.|.[. X X2X|.[.2X2X2X2X2X2X2X2X X2X2X2X2X2X0X0X4X0X5X5XqX4X4XqX4XqXtXqXqXrXwXwXtXtXuXyXuXuXiXdXsXdXdXdXgXgXgXgXgXgXjXjXgXjXjXjXjXjXdXgXgXdXdXgXgXdXgXgXgXgXgXdXgXgXgXjXaXjXjXjXjXgXkX", "yXyXyXyXtXyXwXqXtXtXwXpXtXtXqXeXwXqXtXtXtXwXqXpXtXtXuXuXsXdXdXdXdXdXdXdXgXdXdXfXiXuXyXtXpXqXpXIXGXZX>.&.W K r 8 3 : : #.[.].].`.`._._.`._.`.`.`.`.}.`.}.`.`._.`.`.`.`.`.`.`.`.`.`.].`.}.].].].].}.|.|.|.[.[..X2X|.[.2X,X,X|.2X2X2X2X2X2X2X X2X2X0X0X0X4X4X4X4X4X4XqXqXqXqXqXqXqXqXrXqXqXqXuXpXiXdXiXdXuXdXdXgXgXgXgXgXgXgXgXjXgXjXjXgXhXgXgXgXgXgXgXgXgXdXgXgXgXgXgXgXgXgXgXjXjXgXjXgXjXjXgX", "yXtXyXwXtXqXtXqXtXtXtXwXtXtXtX+X>XU.n.v.v.b.v.v.v.v.v.v.v.v.v.v.v.v.b.b.b.b.v.b.b.v.v.v.n.U.R.DXAX@X-.) P I 8 8 , - - [ [.[.`.`.`.`.`.(.}._._.`.`.`.`.`.`.`.`._._.`.`._.`.`.`.`.`.`.].}.].].].].|.|.|.|.[.[. X X2X|.2X2X2X2X2X,X2X2XXX2X2X2X2X2X2X3X2X4X4X4X4X4XqXqXqXqX9XqXqXqXqXqXqXtXwXyXyXuXiXdXdXdXdXgXgXdXgXhXgXgXgXgXgXjXgXdXjXjXgXdXgXgXdXgXsXgXgXgXdXgXgXgXgXjXjXjXgXjXjXjXjXjXjXjX", "tXtXtXtXtXtXwXqXqXtXtXpXtXtXrX>XU.n.b.b.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.x.v.b.D.W.UXFXCX=. .W r 8 r 3 : O # C {.}.].`._.`.}.}.(._.`.`.`.`.}.`.`._.`.(.`.`.`.`.`.`.`.`.].`.].].].].[.|.|.[.[.[.[. X X2X X X2X2X2X2X,X2X2X2X2X2X2X2X2X2X2X0X0X4X4X4X4X4X0XwX5X4X4XqXqXqXqXqXqXwXqXuXuXuXdXiXdXdXdXdXdXgXgXgXgXgXgXgXgXgXgXgXgXgXgXdXgXgXgXiXgXgXgXdXgXgXgXgXgXgXgXgXgXvXhXjXjXjXjXjX", "tXpXwXtXtXtXtXtXtXqXtXwXqXtXtXU.D.b.b.b.v.v.v.v.x.v.x.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.x.n.A.R.HXFX:.*.! P 8 8 3 - @ + + - ~.}.`.`.`._.(.}.}.`.`.`.}.}.`.}.`.`.`.(._._.(.`.`.`.`.`.`.`.`.|..X}.|.|.|.|..X[.[.[. X X2X2X2X2X2X2X X2X2X2X2X X2X2X2X2X2X2X2X0X4X4X4X0XqXqXwXwX4XqXqXqXqXqXwX9XtXqXtXuXiXdXdXdXgXgXgXgXgXgXgXgXgXgXgXgXgXsXgXgXdXjXgXgXgXdXgXgXgXgXgXgXgXgXvXgXvXgXgXgXjXjXjXjXjXvX", "yXtXtXtX4XwXwXqX4X4XtX9XtXtXtXn.b.v.v.x.l.z.z.l.z.l.z.z.z.z.z.x.x.x.x.x.x.x.x.x.x.x.c.D.Y.=XFX@X-.$.P t 4 6 - @ + # G ^.}.`._.`.`.(.}.`.`.`.`.}.}._.`.`.`.`.}.`.`.`.`.`.`.`.`.`.].].|.|.].|.[..X X X2X X2X2X X2X X2X X[.2X2X2X2X2X2X2X2X2X2X2X0X2X0X2X2X2X4X0XeXqXqX0XwX4XwX4X4XqXqXwXtXtXyXuXdXdXdXgXdXgXgXdXgXgXiXgXgXeXeXvXgXgXgXgXgXgXgXdXgXgXgXdXgXgXgXgXgXgXvXgXgXvXvXgXjXjXjXjXjXkX", "uXqXtXtX7XtXwXqX4XtX4XqXtXqXtXv.x.v.x.z.l.l.l.l.l.l.l.l.l.l.t.l.t.l.t.t.t.t.t.l.l.u.f.K.T.FXCX>.%.P u 4 3 < O 7 O.{.`.'.'._.(.}.}._.`.`.`.`.}.}.}.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.[.`.].|.].[. X X[.[.2X X X X2X2X2X2X2X2X2X2X2X2X2X2X3X2X4X2X4X0X2X2XeX2X4XqX4XqXqXqX4XwX4X4XqXqXqXwXwXtXyXuXdXdXdXgXdXgXgXdXgXgXgXgXgXvXgXgXgXdXgXgXgXdXgXgXgXdXgXgXgXdXgXgXvXgXgXgXgXgXgXvXjXjXjXjXjXkX", "tXyXtXqXtXtXqXqX4X9X4X9XtX4XtXz.z.x.l.l.t.t.t.t.t.t.t.t.t.t.t.y.t.t.t.t.t.t.l.t.u.a.F.T.-XVX@X*.! r 8 2 < + o X 5 Q.[.'.`._.`._._.}._.}.(.`.`._.`.`.`.`.`.`.`.`.}.{.`.`.`.`.1X`.`.].].|.|.|.|.|.2X|.2X[.2X[.2X2X2X2X2X2X2X2X2X2X0X2X4X2X2X2X2XqX0X2X2X3X4X4X0XqXqX4X2XqXqXqX9X8XqXqXqXqXtXyXyXiXiXgXdXdXgXgXgXgXgXgXgXgXgXgXgXgXgXdXgXgXdXdXgXgXgXdXgXgXgXdXgXgXjXjXgXjXvXvXgXgXjXjXjXjXkXjX", "pXwXqXyXtXwXqXqXtX4X4X4XqX4X4Xz.l.l.l.l.t.t.r.t.r.t.t.t.t.y.p.p.u.t.t.t.t.t.t.t.u.g.I.=XVXCX=.&.P r 6 > O o X = Q.[.}.`.`._._._.(.(._.(._.}.`.}.`.`.`.`.`.`.(.`.}.|.`.`.`.`.`.`.|.`.[.|.|.[.[.,X[.,X2X2X2X X2X,X2X2X2X2X2X2X2X2X2X4X4X2X2X4X2X2X4X4X2X4X4X4XqX0XqX2XqXqXqXqXqXqX4XqXtXqXtXtXpXyXdXiXdXdXiXgXgXiXgXiXgXgXgXgXeXvXgXgXgXgXgXgXgXdXgXvXgXdXgXgXgXgXjXdXjXjXgXgXvXvXvXjXvXjXjXkX", "tXtXuXqXtXqXqXqXqXqX7XqX4XtX9Xl.l.l.l.t.t.t.t.t.t.t.t.y.p.s.A.S.f.p.t.t.t.t.t.y.a.F.T.:XCX@X*.W r 4 < @ o $ g M ~.}.].`._._.(._.(.}.}.(.(.}.}.`.}._.`.`.`.`.`.`.`.`.`.`.|.|.}.}.|.|.[.[.[.|.,X|.[.2X X2X2X2X2X2X2X2X2X2X2X2X2X2XqX4X4X4X4X2X2XqX4X2XqX4X5XqX0XqXqXqX2XqXqXqXqXqXqXqXtXtXtXpXtXiXdXiXdXdXiXgXgXgXgXgXgXiXgXgXgXgXdXgXgXdXgXgXdXgXgXeXgXgXgXdXgXgXjXgXjXgXvXdXvXgXjXvXkXjXkXkX", "wXtXtXpXqX9XqXqXqXqXqX4X4XqX4Xl.l.z.l.t.t.t.t.t.t.t.y.u.S.J.C.V.J.f.u.t.t.t.t.p.k.I.=XFX&X=.$.u 4 : # . * g N n '.`._._.(.(._.(.(.(.(.(.}.(.}.(._.`._.`.`.`.`.].}.`.|.|.`.`.|.}.[.].|. X X.X[. X2X X2X2XXX2X2X2X2X2X2X2X2X2X4X2X2XqX4X2X2X4XqX2X4X4X0X4XqX0X4XqXqXqXqXqXqXqXqXwXqXtXtXtXyXtXyXiXiXiXdXdXgXiXgXiXgXgXgXgXvXeXgXgXdXgXgXgXdXgXdXgXgXgXgXgXgXgXgXgXjXgXgXgXdXvXgXvXvXjXkXkXkXkX", "tXqX9XtXtX4XqX4X4XqXtX4XqX4X4Xl.l.z.z.t.t.t.t.t.t.y.u.S.J.Z.;X( E.k.p.t.t.y.c.f.L.NXSXCX$X%.I 5 > - % s 5.B c _._._._._._._._.(.(.}.(.}.(.`.`._._.}.`.`.`.`.`.|.|.`.|.[.}.}.|.[.}.[.[. X2X X2X X2X2X2X2X4X2X4X4X2X2X2X2X4XqX4X4X4X4X4X4X4X4X4X4X4XqX4X4X4XqXqX9XwXqXqXwXwXqXtXwXeXtXtXtXtXuXyXiXiXdXdXdXdXdXgXgXgXgXgXgXgXgXgXgXgXdXgXdXdXgXdXgXgXgXgXgXgXgXgXgXjXgXgXjXjXjXjXkXjXvXkXkXkX", "tXtXtXtXqXtXtXqXqX4X4X4X0XqXqXl.l.z.z.t.t.t.t.t.y.p.g.Y.NXDX;X( q.F.a.y.t.y.p.A.BXSXZXCX:.! 8 1 - $ g M.8.b c _._._._.)._._._._.}._.(.(.`._.`._.`._.`.`.`.`.].}.`.}.|.'.}.[.[.[.[.[.[.[.2X,X X2X2X2X2X2X2X2X2X2X2X4X2X0X2X2X4X4X4X4XqXqX4X4X2X4X4X5X4X4XqXqXqXqXwXqXqX9XwXwXtXtXtXuXtXuXuXyXuXeXiXiXdXdXdXgXdXgXgXgXgXgXgXgXgXgXgXgXdXvXdXdXvXgXgXgXgXgXgXgXgXgXgXgXjXjXjXjXkXjXkXkXkXkXjX", "tXtXtXwXqXqXqX4XwXtX4XeXqXwX4Xl.l.z.z.t.t.t.y.y.a.S.Y.NXHXAX=.H ^ J.s.i.t.y.a.L.NX:XCX$X*.P 4 < + . & M.V.2.b c ).(.(.(._._._._._.}.}.}.(.`.(.`.}._.}.{.`.`.`.` P 9 i @.}..X.X@.9 P S { '.,X[.5X[.U r L S r O.0X5X,X2X4X| U S J S S J K i ` !.tX0XwX .U A K S U S J .oXtXqXtXqXpXtXtXuXyXyXyXtXdXiXiXdXdXdXdXdXgXgXgXgXgXgXgXgXgXgXgXgXdXdXdXvXgXgXgXgXgXgXgXgXgXgXgXgXgXjXjXjXkXkXkXkXkXkX", "tXqXtXwXwXqXwXqX4XwX4X4X2XqX4Xl.z.z.y.y.t.u.a.S.A.Y.DXDXAX>.) H Z V.h.u.t.u.h.I.=XZXCX:.W w : O & N J.8.2.v z (.(.(.(._._._._._._.(.(.`.`.}.`.}.}.}.`.`._.{.` t r 9 @.].}.}.@.S A K { [.2X[..X!.K U 8 L P G 4XwX8X2X2X[ K K P P t J K t Y D @.eX2X{ t A t K t t P t G X.tXyXtXtXtXtXyXtXyXyXtXiXyXiXsXdXdXdXgXiXgXgXgXgXgXgXgXgXgXgXgXvXdXdXdXgXgXgXgXgXgXgXgXgXgXgXjXjXjXkXjXkXkXvXkXkXkX", "tXtXtXtXtXqXqXqXqXwX7X4X.:.*.&. .T L 8 w 6 V 9.A.s.A.NXSXCX%X&.u - O . = V.A.a.e.4.1.v c (.(.(.(._._.`.`.}._.}.}.}.`.`.`.}.}.}.`.`.}.`.` t K q X.o.+.+.O.S i y } [..X2X~.U U 9 +.{ L P 0 2 3 w 8 9 r J ~ B.BXUXHX&X=.~ 1 @ . & C.G.p.t.t.r.4.<.v z _._.`._._._.`._.`.].'.}.].].`.`.].].`.`.`.|.'.} K K r ] ] [ ' E A y t ] ,X3X{.9 K K T #.#.R K S K .) 5 - = N L.s.y.t.t.r.4.<.v z '.`.`.`.`.`.`.`.`.].}.}.].].|.].`.].}.].|.}.[.` t S t !.[.[.[.Q.J L K { 2X[.o.K S t P t q K P J D +.4XwX .r A J OXOXA L r S oXrXuXwX{ L r q OXyXdXtXK L u D rXtXwXtXwXtXtXtXtXtXuXiXsXsXdXiXdXsXdXdXdXgXgXgXgXgXgXjXhXjXgXgXjXjXjXgXvXgXgXjXjXjXjXkXjXkXkXkXkXhXkXzXkXkXkXzX", "yXpXqXtXuXqXuXqXqXtX9XwX8XqX7Xz.z.l.l.t.t.t.t.y.a.I./ V 7 2 4 J K R $.-.*X%X>.$.L 2 O $ l H.h.p.t.t.t.e.4.<.v z `._.`.`.`.`.`.].}.}.].].].].`.|.].].}.{.,X}.[.' K A S ^.[.3X.X!.D S S ..4X2X_ S K i S S S S r P t { wX4X| i S K OXtX+.9 t T G 6XyXyX..G K q OXgX c #007D00", ", c #097607", "< c #0F700F", "1 c #137427", "2 c #3A433A", "3 c #30532E", "4 c #2B7412", "5 c #316A31", "6 c #254E1E", "7 c #1C426B", "8 c #1C4367", "9 c #1C4573", "0 c #1D5374", "q c #3C4342", "w c #38504A", "e c #22416B", "r c #244267", "t c #234272", "y c #264777", "u c #265678", "i c #3E5A7D", "p c #34587A", "a c #384671", "s c #2D6464", "d c #4D2E15", "f c #463529", "g c #463B38", "h c #543B36", "j c #513128", "k c #69362E", "l c #681F14", "z c #483A46", "x c #4E376E", "c c #46433B", "v c #564439", "b c #4E502C", "n c #526D2E", "m c #674736", "M c #754939", "N c #785639", "B c #6A4F2F", "V c #6F6D35", "C c #594B16", "Z c #424443", "A c #484947", "S c #485748", "D c #554946", "F c #57534B", "G c #575654", "H c #4E4F53", "J c #52536E", "K c #506C4E", "L c #516C6E", "P c #674945", "I c #685549", "U c #675955", "Y c #775648", "T c #765957", "R c #6F4A4D", "E c #6C546C", "W c #786258", "Q c #6E654E", "! c #6E6D6D", "~ c #34358B", "^ c #3033A9", "/ c #383ACA", "( c #285887", ") c #3B5686", "_ c #2F568D", "` c #266A95", "' c #357398", "] c #316892", "[ c #2A78A8", "{ c #3678A7", "} c #2F74AC", "| c #1F598E", " . c #425685", ".. c #44558A", "X. c #44598C", "o. c #465788", "O. c #4F548F", "+. c #5455AD", "@. c #48749A", "#. c #556D99", "$. c #496993", "%. c #4974AB", "&. c #716E91", "*. c #716BAF", "=. c #6A5699", "-. c #5254CF", ";. c #5A65CF", ":. c #5E63EB", ">. c #5B63F3", ",. c #6567DA", "<. c #7569CF", "1. c #6364E6", "2. c #6264EA", "3. c #6868EA", "4. c #6565F3", "5. c #756EEA", "6. c #5757E2", "7. c #453DB1", "8. c #018201", "9. c #0F8612", "0. c #33A222", "q. c #05DB02", "w. c #16D80A", "e. c #01E500", "r. c #0DE905", "t. c #28CC0F", "y. c #26CE0A", "u. c #24D305", "i. c #25DA04", "p. c #26D10A", "a. c #2FCB16", "s. c #2FCF1A", "d. c #53B526", "f. c #698E31", "g. c #6AB030", "h. c #549227", "j. c #5F9262", "k. c #5ECE2B", "l. c #42AD56", "z. c #2C86BA", "x. c #3686B7", "c. c #3884AF", "v. c #258CCA", "b. c #2A8ECA", "n. c #2A8CC4", "m. c #2D91CC", "M. c #2994C7", "N. c #358DC5", "B. c #3293CD", "V. c #3A95CC", "C. c #3B99CD", "Z. c #3598C8", "A. c #3595D1", "S. c #3C9AD1", "D. c #3997D2", "F. c #2D91D2", "G. c #3CA1D2", "H. c #4789B6", "J. c #5592B4", "K. c #498AB2", "L. c #6192A2", "P. c #4598CA", "I. c #429CD2", "U. c #499DD3", "Y. c #4599D6", "T. c #569AC6", "R. c #4C95CC", "E. c #4BA2D4", "W. c #48A3D6", "Q. c #53A5D5", "!. c #54A5D8", "~. c #55A8D5", "^. c #5BAAD5", "/. c #5BAAD9", "(. c #58A6D7", "). c #55A7D0", "_. c #63A3C7", "`. c #62ADDB", "'. c #66ABD6", "]. c #65B0DC", "[. c #6BB2DD", "{. c #66B1D6", "}. c #70B5DE", "|. c #76B8DB", " X c #75AED1", ".X c #72B6E0", "XX c #75B8E1", "oX c #7ABBE1", "OX c #7CB5E2", "+X c #68B1E0", "@X c #63A1DE", "#X c #7EC0E3", "$X c #875436", "%X c #8F6B35", "&X c #AC6A35", "*X c #875746", "=X c #90574B", "-X c #876558", ";X c #966958", ":X c #906C47", ">X c #8F6E6E", ",X c #A56A59", ".:.;.:.:.;.1.,.,.1.;.1.,.,.1.yX7X7X5XxXd.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.e.e.e.e.e.r.q.kX5X2X4.;.6.uX7X9Xg.e.r.kX9X7X0X-XT >X;XP Z v Z Z v D + A P q W -XW -X1X9XxX5X7X9XkXq.e.e.e.e.gX9X7X7X7XgXsX7X7X7X7Xi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.p.L X.) J. X8 7 8 8 XQ.}.[.[.+X[.}.[.[.[.", "ZXDXSXSXSXSXFXDXZXDXJXGXJXFXSX X.... .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kX7X;XF 8X9X7X7X7X7X7X7X7X7X7X7X7X7XiX:.,.1.1.1.1.1.1.1.,.1.2.>.<.5X7X9X7Xd.q.q.q.q.q.q.gXg.e.q.q.q.e.q.gXgXgXgXgXg.e.q.q.w.kX5XtX:.3.3.xX0XgXe.w.sX0X7XzX,XG ;XzXzX*Xd.sXh g d.sXj d.sXP 2 g h O U -X-XW W T .1.1.1.1.1.1.1.1.1.:.<.qX5X7X7Xd.e.q.q.r.s.9X0XfXe.e.q.q.gX0X0X.1.1.1.yX9XgXr.sX0X7XzX,XG U 8XwX7X7X1X*X=XI q z g + g c q o f.dXd 2X~ + Q *XM c P T G 3XT ,XzX7X7X7X0XgXw.e.sX7Xi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.#.) X.@.J.{.'.[.}.}.}.}.}..X.X.X.X}.}.}.", "SXSXSXSXSXSXFXDXFXDXFXDXFXDXDXFXX. . .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kX7X8X;XG .1.1.1.1.1.1.1.1.2.,.qX5X7X0XaXe.e.w.sXgX8X7X7X0Xd.e.q.e.fXgX0X9X7X7X7X9XsXe.q.gX0X5XtX:.1.1.3.8XkX8XkX0XzXXY W O uX2Xk Y g v Q G ,XzX7X7X7X9XgXgX9X8Xi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.#.X.o.%.J._.{.[.}.}..X.X.X.X.XXX.XXX}.XX", "SXSXSXDXSXSXDXDXFXSXSXDXFXSXDXFXX.X. .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kXlXxXxXU 6X7X7X9XgXs.e.e.s.0X9X7X7X7XtX:.1.1.1.1.1.1.1.:.<.lX7X7X7X7XgXgXkX0X0X9X7X7X0XfXe.q.q.e.q.sX0X7X7X7X7X7XgXgX0X5XyX2.1.1.1.3.8XzX9X0XzX,XG U ;X.1.1.1.1.1.1.tXyX2XyXyX2X2XyX2XyXyX2XqX5X9X5X7X9XgXgXgXg.r.i.7X7X7X7X7X7X7X7XtX:.1.1.1.2.,.qXzXzXzX-X .rXpX2XyXqXwXfXq.e.gX9X2XuX2.2.1.1.1.>.:.2.3.2.uX>X! -Xg A bXUXv Q $X=XxXgX9XzXzX7X7X7X5X7XxXkXi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#...o.@.J._.'.}.}..X.XXXXXXXXX|.|.|.XXOX", "SXSXSXSXDXDXFXDXSXDXSXDXSXSXSXSXo.X. .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kX7X7X9X8XG -X8X9X0X0XzXgXs.k.0X7X7X7X9X8XtX>.1.1.1.1.1.1.3.2.2.2.2.2.1.2.1.1.1.,.yXyX2XqX5X5X0X9X9XgXkX9X5X9X5X5X5XlXyX>.1.1.1.1.1.2.yX2X2X2XW +.4.:.:.3.1.uXqXaXw.gXqX2.:.2.1.1.1.1.1.2.2.2.2.2.;.E N H z nXL b i.gXwXkXw.sXwX7X7X7X7X7X7XcXcXi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.#.o. .@.J._.'.}.}..X.XXXXXXXXX#XXXXXXXXX", "SXSXDXSXDXDXSXSXDXSXFXDXSXSXSXSXX.X. .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kX7X7X7X7X;XG 8X9XV Y N =X=XN 6X9X7X0XkX.4.4.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.2.2.2.4.2.2.2.2.3.1.3.2.2.2.2.2.1.1.1.1.1.1.1.1.1.1.5.O.+.3.1.1.1.1.1.:.:.yXyX4.1.1.1.1.1.1.1.1.1.1.1.1.2.3.-./ +.O.4.4.3.tXhX2X2XhXw.sX5X5XqX2X2XyX1.;.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#. . .@.J._. X}.}..XXXXXXXXXXXXXXXXXXXXX", "SXSXAXSXSXSXSXSXDXDXSXSXSXSXAXSXX.X.) u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kX7X7X7XzXzX;XG R j.nX5 k n B .:.1.1.1.1.1.1.1.1.1.1.1.1.2.2.-.+.=.O.4.1.2.2.2.2.:.<.rXuXyXtX,.2.2.:.:.,.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#.o. .@.J._.'..X}..X.X.X.XXXXXXXXXXXXX.X", "SXSXSXSXSXSXSXSXSXSXSXSXDXSXSXAXo.X. .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kX7X7X7X6X=X=Xc 2 + q 3 I T Y -X;X-X*X*XV 1X5X$X$XO.;.3.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.4.O.#.4.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.3.+.-.#.o.3.1.1.1.1.1.3.:.>.:.2.2.:.1.1.:.:.,.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#...o.@.L._.{.[..X}.}..X.X.XXXXXXXXXXX.X", "SXSXSXSXSXDXSXSXSXSXSXSXAXSXSXZXX.X. .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kXxX7X9XXE 3.:.:.,.:.1.1.1.1.1.2.2.1.:.tXlX5X5Xi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.#.o. .@.J._. X[.}.}.}.}..X}..X.XXX.X.XOX", "SXAXSXSXSXSXAXSXSXSXSXSXDXZXZXAXX.) X.i.i.u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kX7X0Xd.d.8X1Xj m O % n g.$Xb g.$Xq g j m h Z g j M $X*.>.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.3.1.4.O.=.>.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.:.uXqXxXcX6X6X,X-XqXqX2XLXyX1.3.2.1.1.1.:.2.tXlXzX0XgXi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.#.X.X.@.J._.'.[..X}.}.+X}..X}..X.X.X.X.X", "SXAXSXSXSXAXSXSXSXSXSXAXAXAXZXAXX... .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kX9X7Xp.w.7X6XS H G q g =Xd d j B Q G b k.N T G b g.$X=.4.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.3.o.! ,.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.:.uXlXzXzX,XY Y P U ;X;X;X;X;X>XrX,.4.2.5.yX2X7XxX0XsXw.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#. ...@.J._.'.[.}.[.}..X}.}.}.}..X.X.X.X", "SXDXAXDXSXAXSXAXDXDXZXSXAXAXAXAXX.X.o.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kXxXa.q.q.s.1XS K 2 Y G T V g.=Xh.s.U n h.m X;X;X.2.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.4.+.P 2 % -X;X! G g g d.sXj h.sXh -X.+.- - -.4.4.1.>.2.2.1.2.2.+.J 3.3.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.3.+.k j H Z A j.z + W I g D + g v o w m =XM $X=X=X9X9X8X-Xi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.#. ...@.J._.{.{.{.[.[.+X}.[.}.}.}.}.[.}.", "AXAXZXAXZXAXAXZXAXAXCXCXCXNXMXCXX.X. .u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kX7XxXzX0X9X0X9X9X7XzX1X7X9X;XH g m I g m c -XG @ X =X$X< 5 V Z v N N ; -.J 2 x =.eXX d =XpXyXqXyXqXyX2XLXyXpXpXX X ; ^ 6./ / -./ / 6.:.4.J +.4.3.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.4.E LXG H A z g o ;X=Xh.dXj h.aXh c h.fXj h.dX$X7X0X,XS i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#.X. .@.L._.'.[.[.[.[.[.[.}.[.}.[.}.}.[.", "ZXZXNXZXAXAXNXAXMXAXCXCXoXMXoX#XX.X. .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kX7XkXgXkX9X7X8X7X7X7X&X7X7X8XD A A A F A A Z I G + S -X;X+ . g D 2 2 + + ; % c - -.J B :XO R ,X:X;X:X;X;X:X;X;X;X,XX j - H ! % ^ % ! % +.;.&.U +.4.:.:.2.2.2.1.1.1.1.1.1.1.1.1.1.1.1.1.4.*XLXjXc A g B Y -X=Xg.fXj f.fXP g f.fXj f.fX*XzX8XQ Q i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#.o.o.@.J.J.'.'.}.[.'.[.}.[.[.+X}.+X+X[.", "ZXAXZXZXCXCXNXAXAXAXCXCXCXoXMXoXX... .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kX0Xg.e.d.0X9X9X7XzXzX:X7X6XY Y A *X*Xf j j Y Y A A U -X-X3X>Xg + q O I 2 I ;XU + ; % z O g O + c O % Z + g @ 6 + O @ @ ; U ! % ^ G jX% rX-X2 c R >X2XLXuX2.3.1.1.1.1.1.1.1.1.1.1.1.1.1.4.z d f + A bXv N W Y g h + h D Z Z h v + g c v ,XW G ;Xi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.p.#... .@.J._. X}.[.[.[.+X[.[.[.[.[.[.[.[.", "AXAXAXCXCXNXCXCXAXoXCXCX#X#XXX#XX...) i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kX9XgXsXgXzX7X7X7X7X7X&X7X8XP .>.:.1.1.1.1.1.1.2.1.1.1.1.1.1.1.:.3XxXLXG O X D + H ! U M L G @ h.fXj h.aX$X6X,Xb $XcXlXi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.#...o.@.J._.'.+X`.[.`.[.].].[.].[.[.+X+X", "CXZXAXNXCXCXNXCXCXCXCXoXoXoXoXXXo.X...i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.gXa.s.gX7X0Xd.s.9XlXgXbXjX4XM XS O v O U L B W L M B U L Y B c D hXL o ! P o v g.1X h h O 2 O A Y h h . S 3 v 1XT b d.:Xv F ! q m T F % A g J +.*.tXtX2.1.1.1.1.1.1.1.1.1.1.:.1.1.4.>XM =XD Z LXK H Z ;XjX+ ! T X g.fXj f.fX$X1XF N hXbXbXi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.#.O.X.@.J._.'.'.[.[.`.[.[.[.[.[.].+X[.[.", "CXAXCXCXCXCXCXMXoXCXoX#XoX#XXX#XO.X.) i.i.i.u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.p.d.w.sXs.d.0XgXgX7XzX1XbX>X4X$X1XX>X@ @ ! G g 2 >X>XO F ,XzX6X&XxXxXi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#.X. .@.J.T.'.`.].].].].].].[.[..X[.[.[.", "AXCXCXCXCXoX#XCXoXoXoXoXXXoXXX.XX...) i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.8X9X0Xg.r.s.8X9X7XkXzX&XxX9Xs.d.0XzXG w L E G X+ D =Xm c W m m m D *XN + W zX7XgX1XcXxXi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.#.X. .@.J.T._.`.].].].].].].[.`.[.[.[.[.", "CXCXCXCXCXoX#XoXoXoXOXoXXXXXXX.XX...) i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.xXcX9XgXt.e.s.9X0X7X5X:X0Xg.e.w.xX7XU X.vXfX) ,XR hXA q v m T D h T D P *XR D D B m R P U G j >XJ O - +.L c B d l 6 3 . @ d @ 2 G ! k x - ~ ~ G tX:.2.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.4.pX,Xq A v o W -Xv v -X;X:X-XU ,X-XI 1XlXwX4X4X4XlXi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#. . .' J._._.`.+X].].[.`.`.[.[.[.[.`.[.", "CXCXCXoXoX#XoXCXoXoXoXXXXXXX.X}.X...) i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kXxXzXzXhXsXw.s.xX9XzX:X0XgXsXa.p.8XU ^ #./ a &XY =X*XA v uX4.5.5.3.5.5.2.3.5.5.E <.4.5.4.J l 8X*.q % ; % A M V :X: 8.b uX2X: 3 U ! g ; J ! ; =.iX:.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.4.>XN 2 O 2 v $XA A A O z g O z z % -X4X&X;X1X*Xm 4Xi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.#.X. .@.K.T.'.`.].].].`.[.[.[.`.[.[.[.[.", "CXCXCX#XCX#XoXoXoXoXoXoX.X.X.X}.O...) u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.dX;X;X,X9XwXk.r.d.0X0X1X9X0XwXxXp.d.U L J a H XD %XF j O j h.aXd h.dXh T 4X$XG U F S 4Xi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#.o. .@.L.J._.`.+X].`.`.[.`.`.[.[.[.].[.", "CXCX#XCXMXoXoXoXoXoXXXXX.X.X}.+XX.X. .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.W W W G ;X,X;Xf.dX;X2X*X,X;X,X,X-Xf.G ;X.uXrXL ! % -.3.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.>.O.kXLXh L.Z o @ @ v g.fXj g.fXh *XcXbXbXjXQ I lXi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#... .@.K.).^.`.`.].`.`.[.`.}.[.].].[.`.", "#XMXMXMXoXoXoXoX#XXXXXXXXX}.}.}.X...) i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kX9X7Xv z g g g z w w 5 b n 5 S W -X-XH 3 2 2 w z D v b c c c S ;XXnX-XN 4Xi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#... .@.J.T.'.[.`.`.[.[.`.[.[.[.[.}.{.[.", "#XNXMXoXoXoXXXoXXXXXXXXX}.}.[.[...X.L i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kX7X7Xb h.j n g.B Z V K nXfXf.w 9.Q l 2 j.UXS 2 n g.:XO D LX2 + 3 ! 5 2 % O g + O O c D LXG . I x E R *XY R n 3 A h P h 2 %XV #.4.1.1.1.2.1.2.1.1.1.1.4.4.4.3.1.1.1.1.1.2.1.3.3.1.1.2.1.1.1.1.1.2.! G ;X2XnXW -X,Xf h.fXP q + + q N dXaX%X&X4X4Xi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.#.o.X.$.J._._.`.`.[.{.`.`.`.`.`.[.[.[.`.", "MXoXMXoXoXoXoXoXXX#XXXXX}.}.}.[.X.X.$.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.zXd.d.,X,X$XM =X=XS > K nXnXK 2 j.nXS q . S . 2 X h X z g D O 2 K j.j.q z g z g c c A g v z 5 #.4.5.,.,.3.5.` 3 R E H G E -X*.3.1.1.1.1.1.1.1.1.2.4.4.%.@.' ;.4.2.4.2.2.3.2.3.4.4.1.;.2.1.1.1.4.tXW Q E &.vX) ;X,Xh $XB + O @ 5 Q LXjXf.kX1Xi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.p.#.....@.K.T.'.[.`.`.`.[.`.[.`.[.`.`.[.[.", "oXoXMXoXoXoXoXXXXXXXXX|.}.}.[.[.O.X.) u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kXgXgX9X5X0X0X0X0XG 1 5 f.K 5 S . 3 . o n dXm Z l rXa Z 2 O O D @ + . 2 z yX=Xj yX3Xc 3 5 3 +.+.+.3.2.1.2.2.4.=.*.5.O.=.4.+.-.:.1.1.1.1.1.6.4.3.;.=.rXK 4 < K rXrX>X+.+.*.+.+.+.*.O.+.3.1.*.&.=.W F U .+.&.^ W Y I XUXk.f..+.-.2.1.1.1.:.4.iX*.*.T c 3 D z z g g o I :XW O.J J L J O.1.2.4.;.G S G .O.*.4.+.-.3.1.1.>.4.4.yXY 3 S c bXj.+ z uX,X% =.rX3X,.2.2.1.2.4.2.2.1.2.+.2 I ,XI c j.m N Q &Xb K ! 6 o X f + K f.:XV :XkXdXi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.#.O.o.@.J._._.`.`.`.`.[.`.`.[.].].[.].`.", "oXCXoXoX#X|.XXXX|.XXXX.X|.}.[.[.X.X. .u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kX7X7X7X9Xa.q.q.q.s.0XP n k.:Xz : : : 3 H g z O k T G z . . . z h P v Z W c 2 A I S 5 &.3.2.1.1.4.+.F O.1.2.4.BXiX:.J +.4.=.;.4.4.;.*.+.+.E S , 1 H UXj.6 D yX0X; * =.% / 3.1.1.1.:.2.2.1.4.=.c ! A + H bXc O ;X,X2 j.j.2 Z O G o *X0XxXzXzX6X1Xi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.#.o.o.$.J.T.'.`.[.`.+X`.`.[.`.].].'.].[.", "#XoXMXoXoXoXXXXXXX|..X.X.X}.}.[.X... .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kX7X7X0Xg.e.q.e.w.gX0XU + m h S 1 4 4 < A k >X- v >Xg % 4 j.2 c q g o H .=.S O.,.3.BXiX4.O.>XyX;XW j.&.E 2 O O O 6 : 3 o @ O + v f ; H bXO / 4.3.1.1.1.4.:.1.2.=.A ! U g A + f o W :X+ . + @ A K ! + W gXp.fX0X6X1Xi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#...X.@.J.T._.{.`.{.].`.].[.].[.].[.].].", "CXoXoXoXoXoXoXoXXXXX|..X}.}.[.[.X.X.) u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kX7X7X7XgXfXg.fXgX=X=Xz U H % h g % z g A l 2X=.j *Xk A < 0.I c $ x eXq :X>XUXJ B n &.4.3.1.1.1.1.1.:.+.D +.>.BXJ.%.O.$X%X:Xn < b F 3 bXG @ L.; O % z h o 3 L K $ ! ! Z / 4.1.:.1.:.4.>.:.:.;.q @ @ f G A H F A A j 3X2Xv 2 6 6 + W s.e.q.sX6XdXi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.#.....@.K._.'.[.`.{.].[.`.+X].`.[.].].].", "oXoXoXoXoXoXXXXXXX|.|..X}.}.}.+XX.X...i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.8X7X7X7X7X0X0X0X6Xc q H 1XR b g.$X6 g.$X% k $X-XX3.1.1.1.1.1.1.1.2.4.J +.4.BX5 3 D F F A G F 5 A 3 UXL.: l.l.O Z D E o A j.j.- ~ - - ~ <.iX@X5.@XiXiX5.BX<.a @ f m Z D A Z c k yXLXh A % z Z Q r.e.a.7X jX1.:.2.1.1.1.1.1.1.2.3.J +.rX%Xb c O b h O P n < 3 A g : : w z o h % q 2 3 b m m 3 H E <.BXBXBXBXBXBXBXBX*.D X O h B g k $XF % h D g f h.dXh W fXaX6XLXkXvXi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#... .@.K._.{.+X].].].[.`.+X[.[.[.[.].[.", "oXoXoXoXoXXXoXXX|.XX}..X}.}.}.+XO.X.) i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kX7X7X7X8X7X5X=X=XX . . R D g P f O m h D A % g o g q b 3 2 3 q x E eXE UXj.< 0.&.2.1.1.1.1.1.1.1.1.1.2.O.W 4 8.8.5 A bXbXq W F D c v c jXj.% D z g A A c Z A R B 4 > ] 4.4.1.1.1.1.1.1.:.:.4.O.X X 4XgXeX4X4Xk U W o g A Z d.fXm W 0XwX,XbXgX4Xi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#...o.@.J._.'.].].[.[.+X[.`.`.[.+X+X].[.", "oXoXoXoXoXoXoXXXXXXX.X.X}.}.[.[.X._ J u.u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kX7X7X7X9X9X6Xn g.k < V d w D o o 2 q 2 F B f.N j -XU o 5 ! 5 2 ~ -.E @ U 2 : ! 4.1.1.1.1.1.1.1.1.1.1.2.O.4 1 < 1 3 E UX! O A Z A H v F UXj.3 h 3X$ O g >X3Xg D 4 > 8.s ,.4.1.1.1.1.1.1.:.:.>.tXLXT vXlXeX4X1Xk W ,XV %XP O j k + W kX4XjXbX>XlXi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#. ...@.J.J.'.[.+X[.[.[.[.}.[.[.[.}.[.[.", "oXoXoXXXXXoXXXXXXX.X.X.X+X[.}.`.X.X. .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.gX9X8X7X7X0X6XV k.*Xj.nXn A Y %XB l E x O V k.:Xm -XZ o 5 &.K b @ 8 @ 3 K O 4 &.4.2.1.1.1.1.1.1.1.1.2.3.L 2 O z c S c A 3 2 c bXbXo B h % 6 2 U 2X! o D yXpXv A 3 < 9.< s +.2.1.1.1.1.1.1.1.:.:.>.+.Y $Xl C l C w Z g.fXh g B N f T 1X4XW U W 4Xi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.#.o.o.@.J._.'.[.[.[.[.[.[.[.[.[.[.[.[.[.", "oXoXXXoXoXXXXX.XXXXX.X.X}.[.+X[.X.X.) u.i.i.u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.xX9XzXzX9X.<.,X4X%XK ! + O f m g T n f.h W zXlX&X%X&XlXi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.p.#... .@.J._.'.[.[.[.[.[.}.[.[.[.[.[.[.[.", "oXXXoXXXXXXXXX.XXXXX.X}.+X[.[.].O.X.) u.i.i.u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.lXzX,X1X=XF q Z q S g g z A X k X l j g q @ f m 1XU % g z o z Z H 2 3 + L K -.:.2.1.1.1.2.1.1.1.1.:.5.4 , 1 UXj.: 5 2 bXbXO z H 2 2 D 4 8.6 z g X rX3XC 3 S F D j ,X! + +.4.3.1.1.1.1.1.1.1.1.1.<.tXiXrX6X=Xj.j.3 2 K ! 3 U M R v W zX8XlXzXzXkXi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.#.o. .@.J._.{.[.+X}.[.[.[.[.[.[.[.[.[.[.", "oXXXXXXXXXXXXXXX.X.X}.}.+X[.].].X.X. .u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.xXgXn f.m z < K 3 % M W F o b f.$Xm V k Z f v Y 1XI b g.N d g.$Xz 3 UXK : &.4.2.2.1.1.1.2.2.1.1.2.3.uXn < q H 2 < 3 G IX! O c o 2 D A 6 1 3 R E g yXqXk z b j m M Y *Xv L ;.4.1.1.1.1.1.1.1.1.>.tX1XX;Xg o.%.;.2.1.1.1.1.1.1.1.3./ * &.% / 4.4.tX;Xa - - J ;X7X<.>.4.yX5XkXa.w.sXi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#... .@.J._.[.[.}.}.[.[.[.[..X[.[.[.[.[.", "oXoXXXoXXX.X.X.X.X.XXX[.[.[.[.[.O.X...i.u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.Q T Q W T T A z A b U z 2 g w 2 2 3 w Z 2 2 3 S A g A z g Z U W W T D J L J J J J J J J J J J J F S 5 - 6.7.X U E O S j.j.2 + ; ; + 5 8.5 z 2 2 A w 5 S S g v m j yXqXk w 1 ' 4.1.1.1.1.1.1.1.4.-.% jXw ^ -.6.rX3X$ =.% x zXpX2.1.:.yX5X0Xg.r.g.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.p.#.o. .@.J._. X}.+X}.[.}.[.}.[.[.[.[.[.[.", "oXoXoXoXXX.X.X.X.X.X[.[.[.[.[.].X.X.) i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.xXg.w.w.w.g.N f.m D 1XR yXN : 6 ! 5 : 1 ! 5 5 K N V N M V N ,XwX.2.1.1.1.1.1.1.1.1.2.6.U ! b ^ +.+.E E w bX% x zX<.3.:.:.yX7X9X7Xq.q.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#.o.) #.J._. X}..X}.}.[.}.[.}.}.[.}.[.[.", "XXoXXXXXXX.X.X.X[.[.[.[.[.[.].[.....i u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.xXs.e.q.q.t.V d.m A :X-XLX;X: 1 &.5 : 1 ! K B v n k.%Xb k.:X=X.iX=.E ! D x <.6.6.;.tX6XkX8X0Xg.q.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.#... .L.J._. X+X}.}.[.}.[.[.[.}.[.[.[.[.", "XXXXXXXXXX.X.X}.[.}.[.[.[.[.].{.X...) u.i.i.u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kXgXw.e.w.dX$X=X=XR H k D f , , d C > , C . < S m =XM j Y m A U J *.3.2.1.2.1.1.1.1.1.1.2.2.<.9.3 P LX2Xg ,X*XO.% ; z f =X-XO + + o v % z h X w 3 + =.- g hX>XY -X- H jX2 / 4.1.1.1.1.1.1.1.1.1.4.4.:.2.4.1.1.3.-.^ 7.^ ^ 7._ +.=.1X%X1XzX9X7Xr.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#...X.@.J._. X}.+X}.}.[.}..X[..X[..X}.+X", ".XXXXXOXXX.X}.}.}.[.[.[.[.[.[.[.O.X...i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kX0XgXg.gX0X0X9Xg.d.U ;X> > 8.1 9.B : : > > S U 8X9X.2.3.4.3.>.yXlX%X1XzXkXr.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#.o. .#.J._. X[.}.[.XX}.[..X[..X}.}..X}.", "XXXXXXXX.X|.}.[.[.[.[.[.[.[.].].X.X.) i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kXzX9X0X0X9Xg.w.e.s.F S 1 : , : < c 2X*X, < S 8X.yXzX8X1X7X0Xg.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.#.....@.J._.{.}.}.}.[.[..X+X}.}.[.+X.X}.", "XX.XXX.X.X.X}.}.[.[.[.[.[.[.].[.X...) u.i.i.u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kXzX9X9Xg.r.r.0.d.f.1 S < % z f : T LX3X, 8.c ;XG I J <.<.2.:.2.1.1.1.1.1.1.1.1.1.1.1.1.4.>.*.4 , 5 S 5 o z >X=Xm v z h R U S < 8.5 S S A o Z Z 2 2 c A q z z LXqXc S =.iX,.:.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.>.yXzX6X1XzX0X7Xi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.#...o.@._._.|.[.}.}.[.}.}.}.}..X.X}.}.}.", "XXXX.X.X.X[.}.}.[.[.[.}.[.[.].{.o.X. .u.u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.xXg.w.w.e.d.f.< > , , O A D U G B b v b < < b J T rX1.:.2.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.4.;.1 , , K L.n O D LX2Xf F S S 5 S < 1 1 1 8.5 h >X3X@ z O O h >X; B m O J >XqXtX>.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.>.yXlX4X4XwX5X6Xi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.p.#...o.@.L._.{.}.}.[.}.[.}.}.[.+X}.}.XX}.", "XX.X.X.X[.}.[.[.[.[.[.[.[.[.].[.O.X.X.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.g.r.d.a.f.: : : 4 % z X z O b ; 6 , , , S U E ;.,.3.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.:.2.;.1 > 4 > 3 T v Z g R P + D 4 > > > 1 %.>.5 > 5 z LXqXj G E o F 2X! : 8.1 U &.,.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.:.iX5X4X1X&X%XN 4Xi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.L...X.#.L._.[.}.{.XX}.}.}.+X}.XX}.}.}.}.", "XX.X}..X.X|.[.[.[.].[.].[.[.].{.X.X. .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.g.n : : 4 P >X$XB P T U 3 H , b U U U U J 2X,.2.2.1.1.1.1.1.1.1.1.1.1.1.1.1.3.4.4.4.;.;.1 > 1 rX0.%X8X > 8.s ,.1 > > 3 g v m @ h % o F G m 3 1 w ;X0XtX>.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.>.yX4Xm G F H v gXi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.&...o.L.J._. X[.XXXX}.}.}.}..X}..X.X.X}.", ".X.X}..X[.[.}.[.[.[.[.[.].].].{.X.X.o.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i., n bX3 C 3XLX;X: + g ; 1 S U J <.<.<.<.:.:.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.4.+.%.%.1 8.1 1 ;.5.n :XU G H Y F H I 4 > > > > 8.> 9.> > 5 5 > 3 G A b b c q q % c 2 =XyX3.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.iX7X6XhXbX>XW T 4Xi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.#.o...#.J._.}.}.[.XX}.}..XXX}..X.X+X}..X", ".X.X}..X}.}.[.[.].[.[.].[.].].{.X.X.o.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.> ! IX0., 2 R h S G U U R F rX1.:.2.2.>.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.4.4.;.1 > 1 1 1 %.4.>.&.6XW G Y b B <.4.s , > > > > > > > > > 5 S S w Y 4 , 3 z j.nX+ #.O R <.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.>.2X5XlX-XjXbX! I lXi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.p.#.o...#.J._.[.}.}.}.+X.X.X}.+X.X}.}.XX.X", "}.}.+X}.}.}.[.+X].[.].].].].].].X.X.) u.u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.< o O 6 1 : c F L <.<.<.*.E ;.3.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.4.4.;.%.1 1 1 +.4.4.>.;.rXX =XW R N 4 8.i 3.4.s 8.8.> > > > > > > 5 3 : , . O.x + G IX! . l.l.~ 4.3.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.:.iX8XxX6XjX>XnX! I 4Xi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#. ...#.J._. X[.}.}..X.X.X.X}..X.X.X}.}.", "}..X}.}.}.[.[.+X[.[.[.].].'.].]...X. .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.L I F I I G J <.3.1.2.2.6.J -.3.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.3.2.;.%.1 9.1 %.4.4.4.&.&.5 9.3 R 2 m 4 8.8.8.i 4.s 8.8.> > > 8.> > > 3 g >X3X% 6.7.O o Z O X 4 s ^ 4.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.:.yXlX5XlX4X c.4.s 9.8.> > > > > 8.5 G yXqX+ = - o 2 K O R iX,.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.:.,.<.2X5X5XwXcX7XcXkXi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.#.....L.K._.].[.|..X}..X.X}..X}.}.}.}.}.", ".X}.}.}.[.'.[.[.[.].].].`.]./.`.X.....i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.,.4.~ 1.2.1.2.1.1.1.1.1.,.J ,.3.1.1.1.1.1.1.1.1.1.1.1.1.1.1.:.;.< 1 1 ;.:.>.;.rX4 9.< . Z % E l f F A % Z H 1 8.8.s 3.' < > > > > > , 5 z R k O F I G G UXj.O.>.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.3.:.3.<.<.2X5X7XxXcXi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#.o. .@.L._. X|.[..X}.|.}.}.}.}.}.}.}.}.", "}.}.}.}.[.[.[.}.[.[.].].+X/.+X/.X.X. .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.@X,.~ 4.1.1.1.1.1.1.1.4.6.G ;.3.1.1.1.1.1.1.1.1.1.1.1.1.1.1.3.5 1 %.4.4.2.&.9.< 2 A c A D - ;.! f H h >X=Xg 1 > 8.8.i ;.1 , 8.> 8.8.3 U U D P Q .1.4.4.*.rX4 , S P x E l c % - - f A P LX2XZ 5 , 9., 8.8.> > 8.> , < 3 ,X0XT &XxXhXbX! N .2.2.4.4.4.4.4.3.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.3.:.2.1.<.2Xi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.#.....@.J._.[.[.|.}.}..X[..X[.[.}.}.[.[.", "}.[.[.[.[.[.[.[.].].+X`.`.`./.+XX.X. .i.i.u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.,.1...1.1.1.1.1.1.1.1.3.,.J ,.2.1.1.1.1.1.1.1.1.1.1.1.1.1.3.:.2.3.*.rX9.> S Q G ;XJ *.! c A g z o A O P k o H c c H < 8.8.> , , 5 E D *XX5.4.4.4.*.&.&.&.&.*.:.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.:.>.,.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#...o.@.L._.'.}.}.}.}.}.}.}.}.}.}.}.[.[.", "}.[.[.[.[.`.[.[.+X].+X+X/.+X`./.X.o. .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.,.1.^ 1.1.1.1.1.1.1.1.1.;.J ;.3.1.1.1.1.1.1.1.1.1.1.1.2.4.>.4.4.2X9., , S A =XP A ; ; ; o f f.N f H X d v o z E - g 1 , < < 5 H q *XP O.eX+ :XbXnXnX%XE ,.-.;.tXn 4 < < 8.Q yX<.1.3.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.:.3.;.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#.....@.J._.{.[.[..X+X[.}.[.[.[.[.[.[.[.", "+X[.[.'.`.}.`.[.[.[.{.`.`.`./.`.X.X. .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.,.4.O.:.4.2.1.1.1.1.1.2.1.G ;.4.1.1.1.1.1.1.1.1.1.1.4.;.&.&.&.>Xh., b U S h -XI o % T F O b k.V B F + v N b a 6.+.+ 1 3 H Z Z j 3X; ; -.! 2 &X$Xv eX$XJ G J G Z Z z Z F F T qXtX6.6.3.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.,.r.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.#.....@.J._. X[.[.}.[.}.[.}.[.[.[.[.[.[.", "[.[.+X[.[.`.[.`.`.[.`.[.`.`.`.`.X.X. .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.jX&.:XrX&.3.>.4.4.4.2.2.,.J ;.2.1.3.1.1.1.4.2.1.>.3.*.9., , 9.< S A D =XF Y -XD O J bXO.c c V *Xh F g D f c % ~ - 2 U H j %XM g bX! @ - - g ,X$XgX&XE 4.1.4.R eX-XX ! M %X~ - O.; / 3.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.3.;.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#...o.@.J._.'.[.[.[.[.[.[.}.[.}.[.}.[.+X", "`.`.[.[.[.`.[.`.[.[.`.`.`.`.`.`.X. . .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i., 4 %X< , >X*.&.&.uX5.4.4.J 6.4.4.4.4.4.2.,.;.;.*.rX4 , w S 2 2 H Y N m A X z X o ; ^ ; m h + g Y I 2 O o z g A S w :XQ l 6X>Xz W $Xc c g q ,X=XvXvXO.4.1.3.3XLXLXG bXo g - H jXz / 2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.,.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.#... .@.J._._.[.[.].[.[.[.[.[.[.[.[.[.[.", "}.[.'.[.+X[.`.[.`.`.[.`.`.`.`./.X.X. .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.K A A A S 4 , < < gX>X&.&.G &.&.&.*.&.&.&.1 8.8., n F A A 3 K 5 o b k.V z b V N Z D k P O + ! 3 O + f B % E l g S s 9.w j eXz R .tXT G B %XA G F ~ ) x ~ / 3.1.1.:.6.6.6.>.:.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.3.,.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#...X.@.J._.'.`.'.].].'.].].[.].].].[.`.", "`.[.`.[.+X[.[.`.`.`.+X/./.`.`./. .X. .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.1Xf.g.B 2 B %Xj A Z Z Z Z A c F U I F F I A w A A U Y h.B . d X 2 H z D H + B j q eXlXeXh @ 5 6 2 v v f @ - % c O.rXjX~ 6 K 4 X -X; % + X ! M 2X>.2.2.2.xX;XbXq % -X7X-XH R .1.1.3./ - O.% / 2.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.;.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.#... .@.K._._.`.].`.`.].].`.].[.].[.].`.", "[.[.'.`.`.`.[.[.`.`.`.`.`./././.X. .X.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.1Xh k k Z n k.B Z k W D + ! 3 B %XG V 1X&X3 K 4 Z :X$XB B l E - q b f.N c h >XP 3 eXeXeXv . 2 A c O z % z z A # ~ ~ a 5 &.j.c 2X! % ,XzX;XbXO O.4.2.3.4.xX*XO f o F Z c A Y 6XuX4.3.1.4./ A jX2 / 3.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.3.,.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#... .@.J.T.^.`.`.`.].`.+X].].`.].].[.[.", "{.[.`.`.[.`.`.`.`.`.`.`././././.X... .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i. w h 3X*X; E l g g -XN B U 6 d d + U P o ;X9XI O f a ,.,.6.*.8XW H D c c Q m + Q &XrX6.-.-.<.-.L ! b / 4.1.1.2.3.3.1.1.1.1.1.1.1.1.1.1.1.1.1.1.3.,.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.#.o.X.$.K._.)./.`./.].`./.`.`.`.].`.`.`.", "].].].].`.].`.`./.`.`././././.(.o... .i.u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.1Xf.k.:Xz z >XM o g I f 2 n 6 , 8.S 1 8.1 : l f v < , , , d Y G z g N N A h T m q D : , , 1 , 5 R LX2X; <.! o D LX2Xc A o g % g O Z A c A A F H J G J J K S w ,Xm @ hXW @ A L F + ! % B =.~ x - / 1.1.2.>.>.6.6.6.1.1.1.1.1.1.1.1.1.1.1.1.1.,.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.#. .) @.K.T._./.]./.`.`././.+X`.`.`.`.`.", "].].`.`.`.`.`.].+X`./././.(.^.(.X.X. .u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i. 8.S , < S A q 3 b Z Z Z Z q O 2 A 2 o G A 2 O q G o F U S Z A H h R k @ $ ; g f R k o h 3X; X rX*X2 A I O + rX2.,.:.:.tXn > 5 ,Xm @ T D + H ! G X hX! + G J G H =.4.1.3./ $ O.- / 3.1.1.1.1.1.1.1.1.1.1.1.2.;.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#.....@.K.T.)././.^.^./.`././.`.'.`.`.`.", "].+X].`.]././.]././././.^.!.!.!.X.) .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.Xk . W n 2 z 3XY o 6 K 5 q *Xh I X=.j yXqXg c nXG R <.>.4.2.5.n 8.> 5 H Z q o O v G c A g X U m O -X5X9X1X>X:.6.3./ A jXc ^ 4.3.1.1.1.1.1.1.1.1.3.2.3.,.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.y.#. .X.$.K.T.)././.`././.`./.]./.`./.`.`.", "`.`.].`.].].]./.`./././.(.(.Q.!.X... .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.G H A A S q A ,X7X:XZ T LX,Xc S S G S S S 5 &.K o E LX,XS L.j.+ E LX :X5 8.S : l d w v T m + 5 3 z h T M z 6 l X b T h P 2Xm U j o Y N Y l j + % h T R O Z O A F S D I I A H J J G J J 4 6 jXG A g xXxXH bX2 2 Z W m X G S O Z G A X rX5.,.,./ ~ - - / 3.1.1.6.>.6.6.:.:.2.1.1.1.;.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.#...X.' K.T.)././././././.`./.`./.`.`./.", "`.`.`.].+X/.]././././.!.Q.!.!.Q.X.) .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.1Xf.k.:X< , Z b f.M % g o A S , > 8.8.8.w H % z w c % % 2 o o A A o o % z % w b I D A z A O A D G ;XT G z H Z o O q 6 G 5 *XzX5X1X,X<.E +.1.,.6.1.=.< 6 IXU H h >X-Xf H h O A hXW @ &.U g Z hX! d .1.1.3.-.$ O.- / 2.2.1.1.3.,.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.#.o. .$.K.T._./././.`.`.^./.`./.`./././.", "]./.`././.`././././.(.!.!.!.!.Q.X...) i.i.i.u.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.1XB :Xm 1 > 8.< > S v 3XM 2 h 3Xm X f.N % h 3XP j 3XY Z 1XM 3XR k n N ,XR Z A =X6XY g 3X*Xg 5 &.K %XqXiX>X*.>.O.+.4.4.4.tXW 1 6 $X*Xo -X.3.;.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.#.X.X.] K.T.)././.`.^./.^.`./.`././.`./.", "].]./.].`././.^./.!.^.!.!.E.!.U.X. . .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.kX6X 1 > > > > < 3 E LX,X2 T LX,Xb k.%XO E LX,Xz LXX! *XyX3.<.,.,.-.E ! H x 9X7XbX<.:.:.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.p.#.O.o.$.K.T.)././././.`.`./.`./.`././.`.", "/.`./.]./././././.~.!.!.!.!.!.!.X. .) i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.8X9X > 8.2 h T m % g 3Xm X Q N c c -Xk f T P q ,XM T Y h B N k f.V b k.V Z g T R o A ;X2X,.2.4.>X=.tXU ,XpX>.iXW q G A O ;X*XG w M *XG O + Z U N N Q M X ;XL A w H o + 2 I G f &X:X:X%X&XJ ~ - - O.wX5XlXzXuXtXi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.p.@.o...$.K.T.).^./.^.]./.`./.`././././.(.", "]./.]././././.^.!.!.~.!.E.!.U.!.X. . .i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.gX0X S F A D H q q q z 2 F D q Z q o O g A Z H 2 o D D H Y m k f V N D H F D F G ;X<.:.>.tXY U g + ,XyX>.yX-XH ! F O :XW ! H M $XbX! + A >X! O hX! IXW v Z hX! O G D H G J G G E J G J J J E qX8XqX8X9XbXi.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.p.L o.) ' K.T.).^.^./.^.^.`.`./.^.'./././.", "/./.]././././././.!.~.Q.!.!.U.W.o.X.) i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.7X7X.:.tXzX*XbXU + >X<.*.8X-Xo w v O ;XY A g *XY T M b v W Q @ I F $X-Xc o Y R + W 8X2X;.,.,.,.,.:.;.,.,.6.,.3.,.,.1.3.,.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.L ..X.$.K.J.)././.{././././././././././.", "]./././.~././.~.!.!.!.~.U.E.E.Y.o. .) i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.xX9X6Xb V M H D D H H n k.:XX V m X f.M A c #017402", ", c #017709", "< c #017C01", "1 c #007D0C", "2 c #0B7D00", "3 c #007311", "4 c #00701B", "5 c #097817", "6 c #016520", "7 c #016541", "8 c #008305", "9 c #018A04", "0 c #008D09", "q c #088D0E", "w c #038418", "e c #008916", "r c #009301", "t c #009409", "y c #009D05", "u c #0F9F11", "i c #118D00", "p c #1E9526", "a c #199629", "s c #1E9D2A", "d c #01A401", "f c #00A20F", "g c #00AB02", "h c #09A201", "j c #0BA708", "k c #0FA512", "l c #0FAF12", "z c #00B401", "x c #00BC03", "c c #08B402", "v c #0BBC05", "b c #0EB313", "n c #0FB913", "m c #10AE12", "M c #11B112", "N c #298F24", "B c #218E31", "V c #229426", "C c #249926", "Z c #219C2C", "A c #299E28", "S c #22A32B", "D c #2FB748", "F c #00C203", "G c #02C10D", "H c #00CB02", "J c #00CD0A", "K c #0CC005", "L c #0ACE00", "P c #0FC114", "I c #01D103", "U c #00D00C", "Y c #00D902", "T c #18D50A", "R c #13DC16", "E c #03E302", "W c #00E109", "Q c #00E902", "! c #09E100", "~ c #09EF0B", "^ c #00F302", "/ c #03F30A", "( c #01FD04", ") c #02FE0A", "_ c #09FE0F", "` c #06F314", "' c #00FF15", "] c #0AF412", "[ c #0DF319", "{ c #0CFF12", "} c #08FE19", "| c #18FE1D", " . c #0CF320", ".. c #11FE23", "X. c #1AF421", "o. c #1EFF29", "O. c #2AC837", "+. c #2FD438", "@. c #31D538", "#. c #2CF52C", "$. c #2DFE31", "%. c #2EFF3A", "&. c #32EA30", "*. c #32F931", "=. c #33FE39", "-. c #38F640", ";. c #59BE7D", ":. c #41CD4F", ">. c #43D94B", ",. c #47D357", "<. c #4DD45B", "1. c #4BDB52", "2. c #50D55D", "3. c #54DC5D", "4. c #51D561", "5. c #56DD61", "6. c #5ADE64", "7. c #5CDE68", "8. c #4DF74F", "9. c #49FE51", "0. c #56ED56", "q. c #55FD56", "w. c #56F960", "e. c #60DF67", "r. c #61DF69", "t. c #63DA73", "y. c #65E06B", "u. c #6CE275", "i. c #64F76D", "p. c #7BE07E", "a. c #5CB98F", "s. c #67B0DD", "d. c #6EB2D5", "f. c #6CB3DD", "g. c #6EB8DC", "h. c #75BFC9", "j. c #7ABDC9", "k. c #70B7D7", "l. c #70B5DE", "z. c #71BBD5", "x. c #74BBDB", "c. c #79BADE", "v. c #6EB4E1", "b. c #6FBAE2", "n. c #6DBAE8", "m. c #73B6E0", "M. c #75B9E1", "N. c #7AB5E2", "B. c #7BBBE2", "V. c #7BCEAC", "C. c #75C7BA", "Z. c #76C8B1", "A. c #7ACEB5", "S. c #7DCEBB", "D. c #7DD0AB", "F. c #7ED0B9", "G. c #69E880", "H. c #75E480", "J. c #7DE689", "K. c #74F39F", "L. c #74C4C6", "P. c #75C3CA", "I. c #79C5CC", "U. c #71C3D0", "Y. c #7AC5D2", "T. c #7BC1DB", "R. c #7BC8D2", "E. c #7EC0E3", "W. c #81BEE3", "Q. c #8BBDE3", "!. c #84DB9B", "~. c #84CBB3", "^. c #82D1AC", "/. c #84D3B2", "(. c #83D2BC", "). c #8CD5B4", "_. c #8DD4BA", "`. c #90D7B4", "'. c #92D8B9", "]. c #80E08E", "[. c #85E492", "{. c #89E893", "}. c #88CECF", "|. c #83C5DD", " X c #82C9D1", ".X c #82CAD8", "XX c #8BC5DE", "oX c #8ACFD6", "OX c #8CD4C2", "+X c #8CD1D7", "@X c #8FD0D9", "#X c #92CBDC", "$X c #93D6C6", "%X c #94D5C9", "&X c #95D8C3", "*X c #95D8C8", "=X c #98D7C7", "-X c #98D7CB", ";X c #99DBC5", ":X c #9BDCC9", ">X c #96D1D5", ",X c #95D1DA", "X_.-X,XqX6X0XwX0X9X0X0XwXwX0XwXwXwXwXwXwXwXwXwXwXwXwX0X8X7X7X8X8X4X3X4X4X", "4X4X4X4X4X8X4X5X0X8X7X8X#X=X^.K.'. & & S ~.9X6X0X8X0X4X4X4X1X1XW.W.W.W.", "W.W.B.W.W.W.W.W.W.1XW.W.|.(.3.[ ) ^ Y x z v z z z z z d t 1 = 6 . A `.,X9X4XqX8X8X4X3X3X1X1X1XB.B.B.", "B.W.W.B.B.W.W.W.1XB.B.3Xc.(.6.[ ) ^ Y F z z z z z z d r 1 ; # 6 S ).+X7XqX4X5X4X8X4X6X4X1X1XW.W.B.B.", "W.B.B.B.B.W.B.W.W.c.c.W.T.(.5.[ ) ^ Y x g z z z z d 9 < % X X s _.oX2X8XQ.0X1X4X4X4X3X3X1X1XB.B.W.B.", "B.B.B.B.B.B.B.B.B.B.c.W.T.(.5.] ) ^ Y x z z g g d r < * O @ p ^.@X6X3X4XwX1X6X6X4X4X3X3X1XW.W.B.B.B.", "B.B.B.B.B.B.B.W.B.c.c.B.T.(.5.[ ) ^ Y F g z d d r 8 % % O p `.}.XXQ.3X3X3X4XQ.6X3X6X3XW.1XW.E.B.B.B.", "B.B.B.B.B.B.B.n.B.c.M.B.z.(.3.[ ( / Y x x g g t 2 % : # s ). XXX1X1X3X3X6X3X3X6X1X1X1XQ.W.1XB.B.N.B.", "n.N.B.n.B.B.M.B.M.c.M.B.x.F.5.[ ) ^ I g g d r 2 = - X V /. X2X1X3X3X1X3X3X3X4X3X3X1X4XW.W.W.B.B.B.N.", "N.B.M.B.M.M.M.M.M.c.m.B.T.F.5./ ) ^ L c g r < + - $ C /..XB.|.W.W.1XW.1X3X1X1X3X3X1XW.W.W.W.B.B.c.B.", "M.M.M.M.l.x.m.M.M.M.m.B.x.F.3.[ _ Q H d 9 8 & & O C ^. XE.B.B.W.B.3XW.3X1X6X1X1XW.3XW.W.W.W.B.B.c.B.", "m.m.m.M.m.m.m.M.M.x.m.B.x.F.5.[ ) W z t 1 = & C /.R.c.E.1XB.B.B.B.W.W.1X1X1X1XW.W.W.W.B.W.B.B.B.M.", "m.v.l.l.l.m.m.m.M.g.m.B.T.F.3.` / J f e : o C V.R.E.B.E.k.W.B.B.W.W.1XB.1X1X1XW.W.W.W.W.B.B.B.M.B.", "f.m.l.l.m.l.l.m.M.m.M.M.T.A.3./ Y z 9 , X @ V D.I.B.M.E.k.B.N.B.B.B.B.1XB.1X1XB.W.W.E.E.B.W.B.B.B.M.", "l.l.m.v.g.g.m.l.l.l.m.M.x.A.3.T c r > & O V ^.I.c.B.M.M.W.N.B.B.B.B.B.B.B.W.W.1XW.B.B.W.W.B.B.B.B.B.", "f.l.f.m.v.m.v.l.l.l.M.f.T.A.1.G d < & . a /.L.x.x.M.c.M.B.M.M.B.B.B.1XB.B.E.B.W.B.W.W.W.B.W.B.B.B.B.", "l.f.m.f.l.v.m.v.m.g.l.l.T.F.>.j 9 3 p V.I.x.M.m.c.M.M.m.B.M.B.B.B.B.B.E.B.1XB.W.B.W.B.B.W.B.B.c.B.", "f.l.f.m.l.f.l.f.g.g.l.m.z.A.@.0 , X V V.P.x.M.m.m.m.M.N.B.m.B.B.B.B.B.B.B.B.B.W.B.W.W.B.E.B.B.B.B.B.", "f.f.f.l.f.f.f.v.s.g.m.M.z.S.+.w o N D.Y.M.m.M.m.m.m.m.M.m.B.M.B.B.B.B.B.B.B.B.B.W.W.B.B.B.B.B.B.B.c.", "m.f.f.f.f.f.f.m.s.g.l.m.z.S.O.; s D.I.k.m.M.d.m.m.m.m.M.M.m.M.B.M.B.B.B.B.E.1XB.B.B.B.B.B.B.B.B.B.B.", "f.f.f.f.f.s.f.f.s.l.f.m.g.A.D B A.P.g.g.m.l.M.m.m.m.m.M.M.M.M.M.B.B.c.B.B.B.1XW.B.N.B.B.M.M.N.B.M.B.", "f.f.f.f.f.f.f.l.l.f.f.v.g.L.a.Z.h.k.g.B.l.m.l.m.m.m.m.M.M.m.m.B.x.M.B.B.E.B.E.B.B.B.B.M.B.B.B.M.B.M.", "f.f.f.f.f.f.f.l.l.f.m.m.d.z.j.z.k.k.m.v.N.l.n.m.m.m.N.M.N.m.M.M.M.M.c.B.B.1XB.B.B.B.B.B.B.M.B.m.M.M.", "s.s.f.f.f.f.f.f.l.f.l.g.s.l.l.g.l.l.m.m.m.m.m.m.M.m.M.M.M.m.M.M.M.B.B.B.B.B.B.B.B.B.M.B.M.B.M.M.M.M.", "s.f.f.f.f.f.v.s.f.f.f.f.f.f.m.l.m.l.m.m.m.m.m.m.m.N.m.M.m.B.M.M.N.M.M.W.B.B.M.M.M.M.M.M.M.M.M.M.M.M.", "s.s.s.s.s.s.s.f.f.f.f.f.f.f.f.l.f.l.l.m.l.m.m.m.m.m.m.M.N.m.m.m.c.B.B.M.M.M.N.M.M.M.M.M.M.M.N.m.M.M." }; micropolis-activity/images/tiles-89.xpm0000664000076400007640000000532010724145723020404 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "48 48 10 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c #00000000E6E6", "O c red", "+ c #FFFF7F7F0000", "@ c #CCCC7F7F6666", "# c gray75", "$ c gray100", "% c None", /* pixels */ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%% @@ %%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%% .@@.%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%O @.@@ %%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%% @@@@ %%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%O .@@@@.%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%% @.@@.@ %%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%O @@@@@@ %%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%O @@@@@@ %o%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%O @@@@@@ %%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%O #######%o%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%o%O .#######%%o%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%O X .XXXXXX%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%o%O .X$XX$X%%o%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%o%%%O .XX XXX%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%O X .X XX%%%o%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%O . X%%%%%o%%%%%%%%%%%", "%%%%%%%%%%%%%%%%o%%%O . + %%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%O X .. + %%o%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%o%%%%O .X + . %%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%o%%%O .XX + . %%%%o%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%O X .XXX %%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%o%%%%%O .XX X %%%%%%o%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%O .X XX%%%%%%%%%o%%%%%%%", "%%%%%%%%%%%%%o%o%%%%O X . X%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%O . + %%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%O .. + %%%%%o%%%%%%%%%%", "%%%%%%%%%%%%%o%%%%%%O X .X + . %%%%%%%%o%%%%%%%", "%%%%%%%%%%%%%%%%%%%%O .XX + . %%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%O .XXX %%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%o%%%%O .XXXX %%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%O ..XXXXXX%%%%%%%%%%o%%%%%%", "%%%%%%%%%%o%%%%%%%%%O .#######%%%%%%%o%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%O ####### %%%%%%%%%%%%%%%%%", "%%%%%%%%%%%o%%%%%%%%O @@@@@@@ %%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%O @@@@@@@ %%%%%%%%%o%%%%%%%", "%%%%%%%%%%%%%%%%%%%%% @@@@@@@ %%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%O .@@@@@.%%%%%%%%%%%%%%%%%%", "%%%%%%%%o%o%%%%%%%%%%% @@@@@ %%%%%%%%%%%%o%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%o%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%o%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%oo%%%%%%%%%%%%o%%%o%%%%o%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%o%%%%%%%o%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" }; micropolis-activity/images/tiles-103.xpm0000664000076400007640000000520310724145723020447 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "48 48 6 1", " c black", ". c red", "X c #FFFF7F7F0000", "o c yellow", "O c gray100", "+ c None", /* pixels */ "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++X+++++", "++++++++++XOX++++++++++++++++++++++++++++++X++++", "+++++++++XXXXXXXXX+++++++++++++++++++++++++XX+++", "++++++++++XXXXXXOXX+++++O++XX++++++++++++++XXX++", "+++++++++++XXXXXOXXX+++XOXXXXXX++++++++++++XXX++", "++++++X+++++XXXXXXX+++++XXOXXXXX++++++++++++XXX+", "++++XXXOOXXXXOOXXX+++++XXXOXXXXXX+++++++++++XX++", "+++XXXXXXXXXXXXXOXXXXXXXXXXXXXXXX++++++++++XXX.+", "++XXXXXXXXXXXXXXXXXXXXXXOXXXXXXXX+++++++++++XX.+", "+.XXXXXXXXXXXXXXXXXXXXXXXXXXXXOXXX++++++++++XXX+", "+.XXooo.XXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++XXX.+", "+.X...XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXX.+", "++..........XXXXXXXXXXXXXXXXXXXXXXXXXOXXOXXXX..+", "++++++X.....X..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.+", "+++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.++", "++++++++++++X..XX..X..XXXXXX.XXXXXXXXX..XX...+++", "++++++++++++X......X..X.XXXXXXX..X..X......+++++", "++++++++++++XX.X........X......+........+.++++++", "+++++++++++++X.X..+++...X..XX..+++++++++++++++++", "++++++++++++++....++++..XXXXX...++++++++++++++++", "++++++++++++++.X...++++++..XX......+++++++++++++", "+++++++++++++X.X....++++++..........++++++++++++", "++++++++++++++.....+++++++++.+.....+++++++++++++", "++++++++++++++++++++++++++++++....++++++++++++++", "+++++++++++++++++++++++++++++....+++++++++++++++", "+++++++++++++++++++++++++++++++.++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++" }; micropolis-activity/images/icseap.xpm0000664000076400007640000000431010724145723020270 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "42 42 13 1", /* colors */ "# c #000000", "a c #7F7F7F", "b c #00FF00", "c c #5D5D5D", "d c #007F00", "e c #BF7900", "f c #4F4FFF", " c #FFFFFF", "h c #FFFF00", "i c #7F7F00", "j c #FF7700", "k c #BFBFBF", "l c #0000FF", /* pixels */ "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", "kaallllaaaallllaaaallllaaaallllaaaallllaac", "kaallllaaaallllaaaallllaaaallllaaaallllaac", "kaaccccccccccccccccccccccccccccccccccccaac", "kaac##################################kaac", "kllc# # # # # # # # # # #aaa# # # # ##kllc", "kllc## # # # # # # # # # aka # # # # #kllc", "kllc# # aaaaaaaaaaaaaa#aaaaa# # # # ##kllc", "kllc## #akakah#kakaka#c#akkkaaac # # #kllc", "kaac#aaaaaaaakkkaaakkk#akaackaaa# # ##kaac", "kaac#kakaka#kaacaakaachkkaaccaka # # #kaac", "kaac#aaaaaakkaacckkaacckkaaccaac# # ##kaac", "kaac## # # kckkkkkkkkkkkkkkkkaka # # #kaac", "kllc# # # #kkkaaaaaaaaaaaaaakaaa# # ##kllc", "kllc## # kkkckaaaaaaklaaaaaakaka # # #kllc", "kllc# # kccckcakcaaklklaakcakcaa# # ##kllc", "kllc## kkccakkaaaaaaklaaaaaakcka # # #kllc", "kaac# #kkccackaaaaaaklaaaaaakcaa# # ##kaac", "kaac## kkccakkaaaaaaklaaaaaakcka # # #kaac", "kaac# #kaaaakkakcaklklklakcakcaa# # ##kaac", "kaac## aa#aackaaaaaklllaaaaakckaaaaaa#kaac", "kllc# # # akkkkkkkkkkkkkkkkkkcaaakaak#kllc", "kllc## # #kckaaaaaaaaaaaaaaacckaaaaaa#kllc", "kllc# # # kkkccccccccccccccacaaa# # ##kllc", "kllc## # #kckccccccccccccccacaka # # #kllc", "kaac# # # ckaaaaaaaaaaaaaaaccaaa# # ##kaac", "kaac## # #kaaccaaccaaccaaaiccaka # # #kaac", "kaac# # # aaccacccaaccaaaiiccaaa# # ##kaac", "kaac## # # ccccccccccccccccccaka # # #kaac", "kllc# # # # # #aakckcaaaaakjaaaa# # ##kllc", "kllc## # # # # aaakakakakakckaka # # #kllc", "kllc# # # # # #aaaaaaaaaaakjaaaa# # ##kllc", "kllc## # # # # # akaa# # # # # # # # #kllc", "kaac# # # #aaaaaaaaaa # # # # # # # ##kaac", "kaac## # # akakakakaa# # # # # # # # #kaac", "kaac# # # #aaaaaaaaaa # # # # # # # ##kaac", "kaac## # # cka # # # # # # # # # # # #kaac", "kllc##################################kllc", "kllckkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllc", "kllaaaallllaaaallllaaaallllaaaallllaaaallc", "kllaaaallllaaaallllaaaallllaaaallllaaaallc", "kccccccccccccccccccccccccccccccccccccccccc" }; micropolis-activity/images/tiles-83.xpm0000664000076400007640000000526310724145723020404 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "48 48 9 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c #66666666E6E6", "O c red", "+ c yellow", "@ c gray75", "# c gray100", "$ c None", /* pixels */ "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$@.XXX.+.XXX.@$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$######X@####@$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$@#####@@####@$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$@####X@##@@$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$@##@@@@$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$@@X@$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$.#@$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$o#@$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$#@Xo#@X@$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$#@X #@X@$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$#@Xo#@X@$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$OOXo#@XO$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$#@X #@X@$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$Xo#@X$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$X #@X$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$Xo#@X$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$X #@X$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$Xo#@X$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$X #@X$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$#X@@@@X#X@@@X#o#@XX@@@X#X@@@@X#$$$$$$$", "$$$$$$$$$$############## #@X@############$$$$$$$", "$$$$$$$$$$####@#####@###o#@X@#@####@#####$$$$$$$", "$$$$$$$$$$O############# #@X@###########O$$$$$$$", "$$$$$$$$$$$$############o#@X@##########$$$$$$$$$", "$$$$$$$$$$$$$$########## #@X@########$$$$$$$$$$$", "$$$$$$$$$$$$$$$$.X@#####o#@X@###@X.$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$.X@### #@X@#@X.$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$.X@#o#@X@X.$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$.. #@X.$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$@o#@X$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$@o#@X$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$@ #@X$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$@o#@X$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$@ #@X$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$@o#@X$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$@ #@X$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$@o#@X$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$@ #@X$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$@o#@X$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$@##@X$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$@. @X$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$@#...$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$##@$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$...$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$.$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" }; micropolis-activity/images/tiles-75.xpm0000664000076400007640000000261110724145723020377 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "32 32 10 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c #00000000E6E6", "O c #66666666E6E6", "+ c red", "@ c yellow", "# c gray75", "$ c gray100", "% c None", /* pixels */ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%#XX%%%@%", "%%%%%%%%%%%%%++++++%%%%%#XX#%X%%", "%%%%%%%%%%+++%%%%%%+++%%#X#%@%%%", "%%%%%%%%%+%%%%%%%%%%%%+%##%X%%%%", "%%%%%%%%+%%%%%%%%%%%%%%+#%@%%%%%", "%%%%%%%+%%%%%%%%%%%%%%##+%%%%%%%", "%%%%%%+%%%%%%%%%X%%%%##$%+%%%%%%", "%%%%%+%%%%%%%%%X%%OX##$%%%+%%%%%", "%%%%%+%%%%%%%%X%.XX##$%%%%+%%%%%", "%%%%%+%%%%%%%X%.XX###$%%%%+%%%%%", "%%%%+%%%%%%%X.XXX###$O%%%%%+%%%%", "%%%%+%%%%%%#%XX####$$%%%%%%+%%%%", "%%%%+%%%%%%%XX#..#$$.%X%%%%+%%%%", "%%%%+%%%%%%% X..$$X%X%%%%%+%%%%", "%%%%+%%%%%%. o X$$$%X%%%%%%+%%%%", "%%%%+%%%%%%. o $$.X%%%%%%%+%%%%", "%%%%+%%%%%%. .$%X%%%%%%%%+%%%%", "%%%%%+%%%%%%...%%#%%%%%%%%+%%%%%", "%%%%%+%%%%%%%%%%%%%%%%%%%%+%%%%%", "%%%%%%+%%%%%%%%%%%%%%%%%%+%%%%%%", "%%%%%%%+%%%%%%%%%%%%%%%%+%%%%%%%", "%%%%%%%%+%%%%%%%%%%%%%%+%%%%%%%%", "%%%%%%%%%+%%%%%%%%%%%%+%%%%%%%%%", "%%%%%%%%%%+++%%%%%%+++%%%%%%%%%%", "%%%%%%%%%%%%%++++++%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" }; micropolis-activity/images/tiles-120.xpm0000664000076400007640000000521110724145723020445 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "48 48 6 1", " c black", ". c #99997F7F4C4C", "X c red", "o c #FFFF7F7F0000", "O c yellow", "+ c None", /* pixels */ "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "+++++++++++++++++++++++XX+++++++++++++++++++++++", "+++++++++++++++++++X++++++++++ooo+oo++++++++++++", "+++++++++XXXo+o++++++++++++++++++++++++o++++++++", "+++++XXXX++XX+++o++++++++X+.++++++++++++++++++++", "++++XX+++++++XX++Xo+++++++++o++++o+++XXX++++++++", "++++++++++.+++++++X++++++++o+X+.oo+++ooXX+++++++", "++++++o++++++.++++++++++++.++++o++++.+o+X+++++++", "+++++++++++++++++.++.+++++++++++++++++++XXX+++++", "++++++++++++++++++o++++++.+++o++++.+++++.+++++++", "++++++OOOO+++++++++oX+.++++++++++++.++++++o+++++", "++++OO++++oo+++++X+o++++++o+++.++++oO+O.o.XXo+++", "+++o+++XX+++++.++++++++++++++++++++++++++++XXX++", "++oX+++++oo++X+o+++++++++o+++++oX+X++++++++++XX+", "+++X+++++++o++++++o++.++++++o++++++o++++++.+++X+", "++oX++o+++++++++++++++.+++++++oo++++++++++++++X+", "+XX+++o+oo+++O++OO++++++++++++++++++++.+++++++X+", "+X+X+++++oo+O+++o++++++++++X++++++X++++ooo++++X+", "++XX++o+.++oX+++.++++++.+.+..+++++++++++++o+++++", "+++++++++++++++++.+o+++++o++++++++O+.++XooO+++++", "+++++++++++.++O+++++oX++.+.++.++++++...oo+ooo+++", "+++++++.+++++O+++++o+++++.++X++++.++X+++++++o+X+", "+++++++++++.+++++X++++++++++++++++++++++.++++oX+", "++++++++oo+oo++.+++++++X.++++++O++++o+++++++++X+", "+++++XXXX++O+o+..++++++++++++.+++++++ooo+++++XX+", "++++++++++O+++++++o+oo++++++X+++++++++++.++++X++", "+++o++o+++O+o++++O++.O++++++.+X++.++++++++++++++", "++XXX++o+O+++++++O+++++..+++++++o+++o+++++.+++++", "++XX++++++.+++O+++++++++++++++O++++++.o+++++o+++", "++XX+++++++++++++++++++++++++++O+++++Oo+++++++++", "++XX+++++++++o+X+++o+.++++++o++O++++++oo+++.++++", "++XX+++++o+++++oo+.+++++++o+.++.++o++++o.+++++++", "+++++++++++++o++++o++++o+++++.++++o++++o++++++++", "+++++++++++++.+++++++++o+O++++++++o+++++o++X++++", "++++++++o+o.+++++++X+++++.+++++++Xo+++++o+++++++", "+++++++oX+o++++++o+++XX+O++++++.++o++X++Xo++++++", "+++++++o++o++++++++++++O+X++++++++o+++++++++++++", "++++++++X+++++++++.+++++XX+++++++++O++++XX++++++", "++++++++X+++++++++++++++o++++X+++++O+++XX+++++++", "+++++o+XX++o++++++++XXX+o+++++++++oO+++X++++++++", "+++++++XXo+++++++..+X+++o+o+++++++oO+++X++++++++", "++++++++XXXXX+++++++XXo+o.++++++oo++.+++++++++++", "+++++++oXX+XX++++++++X+o+++X++X+o+++++++++++++++", "+++++o+XX++X++++++++++++++++++XXX+++X+++++++++++", "++++++++X+++++++++++X+++++++++++++++++++++++++++", "++++++++X+++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++" }; micropolis-activity/images/obj1-4.xpm0000664000076400007640000000230310724145723020020 0ustar simcitysimcity/* XPM */ static char * obj1_3_xpm[] = { "32 32 1 1", " c None", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; micropolis-activity/images/tiles-12.xpm0000664000076400007640000000257610724145723020400 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "32 32 8 1", " c black", ". c #3F3F3F3F0000", "X c #3F3F3F3F3F3F", "o c #7F7F3D3D0000", "O c #727272727272", "+ c gray50", "@ c gray75", "# c #DFDFDFDFDFDF", /* pixels */ " ", " ############################ ", " # ########################## O ", " ## ######################## OO ", " ### OOO ", " ### @@@@@@@@@@@@@@@@@@@@@@ OOO ", " ### @@@@@@@@@@@@@@@@@@@@@@ OOO ", " ### @@@@@@@@@@@@@@@@@@@@@@ OOO ", " ### @@XX@X @@@@@@@X@@ OOO ", " ### @@@ XXXXXXXXXXXXX @@ OOO ", " ### @@@ X X @@ OOO ", " ### @@@ X X @@@@@@@@@@ OOO ", " ### @@@ @@@@@@@+@@ OOO ", " ### @@.. @X@ @@@@@@@+X@@@ OOO ", " ### @@... @X@ @@@@@+XX+@@@ OOO ", " ### @....@ @@@@+XX+X@@@@ OOO ", " ### @.o..@@@@@@@+XX+X+@@@@ OOO ", " ### @....@@@@@@+XX+XX@@@@@ OOO ", " ### @....@@ @@@XX+XX+@@@@@ OOO ", " ### @@@@@@@+ @+X+XX+@@@@@@ OOO ", " ### @@@@@@@@+ X+XX+@@@@@@@ OOO ", " ### @@@@@@@@@+ X+@@@@@@@@@ OOO ", " ### @@@@@@@@..+ @@@@@@@@@@ OOO ", " ### @@@@@@@.o.@+ @@@@@@@@@ OOO ", " ### @@@@@@.o.@@@+ @@@@@@@@ OOO ", " ### @@@@@@..@@@@@@@@@@@@@@ OOO ", " ### @@@@@@@@@@@@@@@@@@@@@@ OOO ", " ### OOO ", " ## OOOOOOOOOOOOOOOOOOOOOOOO OO ", " # OOOOOOOOOOOOOOOOOOOOOOOOOO O ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " " }; micropolis-activity/images/nuclear.xpm0000664000076400007640000001107410724145723020462 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "64 64 13 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #0000E6", "c c #3F3F3F", "d c #007F00", "e c #FF0000", "f c #997E4C", "g c #00E600", "h c #FFFFFF", "i c #FFFF00", "j c #CC7E66", "k c #FF7B00", "l c #BFBFBF", /* pixels */ "`iiiiiiiiiiiiiiiiiiiiiiiiiihhhehhhiiiiiiiiiiiiiiiihhhehhhiiiiiii", "`i```````````````````````hhaaaaaaahh````````````hhaaaaaaahh````i", "`ijjjjjjjjjfjjjjjjjjjjjjhac`c`c`c`cahjjjjjjjjjjhac`c`c`c`cahjj`i", "`ijfjjjjjjjjjjjjjjjjjjjhac`c`c`c`c`cahjjjjjjjjhac`c`c`c`c`cahj`i", "`ijjjjjliccccccccccccchac`c`c`c`c`c`cahcccccchac`c`c`c`c`c`cah`i", "`ijjjjllcccccccccccccchc`c`c`c`c`c`c`chcccccchc`c`c`c`c`c`c`ch`i", "`ijjjlllca`ccccccccccha`c`c`c`c`c`c`c`ahccccha`c`c`c`c`c`c`c`ahi", "`ijjllllca`cccccccccch`c`c`c`c`c`c`c`cahcccch`c`c`c`c`c`c`c`cahi", "`ijlllllcccccccccccclhc`c`c`c`c`c`c`c`ahccclhc`c`c`c`c`c`c`c`ahi", "`ijlalllcccccccccchhle`c`c`c`c`c`c`c`caechhle`c`c`c`c`c`c`c`caei", "`ijlllllcccccccchhhhlhc`c`c`c`c`c`c`c`ahlhhlhc`c`c`c`c`c`c`c`ahi", "`ijlllllccccccchhhhhlh`c`c`c`c`c`c`c`cahlhhlh`c`c`c`c`c`c`c`cahi", "`ijlalllcccccchhhhhhlha`c`c`c`c`c`c`c`ahlhhlha`c`c`c`c`c`c`c`ahi", "`ijlllllccccchlhhhhhllhc`c`c`c`c`c`c`chllhhllhc`c`c`c`c`c`c`ch`i", "`ijlllllccccchhhhhhlllhac`c`c`c`c`c`cahlhhlllhac`c`c`c`c`c`cah`i", "`ijlalllcccchhhhhhhllllhac`c`c`c`c`cchlhhhllllhac`c`c`c`c`cchj`i", "`ijlllllcccchhhhhhllllllhac`c`c`c`cahlhhhllllllhac`c`c`c`cahjj`i", "`ijlllllcccchhhhhllllllllhha`c`c`ahhlhhhllllllllhha`c`c`ahhjjj`i", "`ijlalllcccchlhhlllllllllaahhhehhhcllhhlllllllllaahhhehhhccjjj`i", "`ijlllllcccchhllllllllllaaaaaaaaacclhllllllllllaaaaaaaaacccjjj`i", "`ijlllllcccchlllllllllaaaaaaaaaaccchlllllllllaaaaaaaaaaccccfjj`i", "`ijlalllcccclllllllllaaaaaaaaaacccclllllllllaaaaaaaaaacccccfjj`i", "`ijlllllcccccllallllaaaaaaaaaaccccccllallllaaaaaaaaaaccccccfjj`i", "`ijlllllcccccllllllaaaaaaaaaaaccccccllllllaaaaaaaaaaaccccccfjj`i", "`ijlalllcccccclllllaaaaaaacaacccccccclllllaaaaaaacaacccccccfjj`i", "`ijlllllccccccclllaacaaaaaaacccccccccclllaacaaaaaaaccccccccfjj`i", "`ijlllllcccccccclaaaaaaaaaacccccccccccclaaaaaaaaaacccccccccfjj`i", "`ijlalllca`cccccccaaaaaaaccccccccccccccccaaaaaaacccccccccccfjj`i", "`ijlllllca`ccccccccccccccccccccccccccccccccccccccccccccca`cfjj`i", "`ijlllllcccccccccccc`c`c`ccccccccccccccccccccccccccccccca`cfjj`i", "`ijlalllccccccclllllllllllllllllllcccccccccccccccccccccccccfjj`i", "`ijlllllicccccclaaaaaaaaaaaaaaaaalccccccccccccccccccccccccifjf`i", "`ijllllaaaaaaaalaaaaaaaaaaaaaaaaalaacacacaaaaaaaaaaaaaaaaaafjj`i", "`ijlalaaaaaaaaalaaaaaaaaaaaaaaaaalaaaaaaaaaaaaaaaaaaaaaaaaffjj`i", "`ijllaaaaaaaaaalaaacccaaaaacccaaalccccccccccccccccccccaaafffjj`i", "`ijlaaaaaaaaaallaacaaaccaccaaacaalccccccccccccccccccccaaffffjj`i", "`ijaaaaaaaaaalalaacaaaaacaaaaacaalccccccccciccccccccccafffffjj`i", "`ijjfffffffflallaaiaaaaiacaaaacaalccccccccicccccccccccffffffjj`i", "`ijjjfffffffalalaaacaacaaacaacaaalccccccciccccccccccccffffffjj`i", "`ijjjjfffffflallaaacacaaeaacacaaalccccccicccccccccccccffffffjj`i", "`ijjjjjfffffalllaaaacaaeekaacaaaalccccciccccccccccccccffffffjj`i", "`ijjjjjjffffllllaaacacaakaacacaaalcccciiiiicccccccccccffffffjj`i", "`ijjjjjjjjjjlallaaacaacaaacaacaaalccciiiiiccccccccccccfjjjjjjj`i", "`ijjjjjjjjjjllllaacaaaacaiaaaaiaalccccccicccccccccccccfjjjjjjj`i", "`ijjjjjjjjjjlallaacaaaaacaaaaacaalcccccicccccaaaaaaacffjjjjjfj`i", "`ijjjjjfjjjjllllaacaaaccaccaaacaalcccciccccccaaaaaacfffjjjjjjj`i", "`ijjjjjjjjjjlallaaacccaaaaacccaaalcccicccccccccccccaaaallkklllll", "`ijjjgdjjjjjllllaaaaaaaaaaaaaaaaalcciccccccccaaaaaaaaaallkklllll", "`ijjjddjjjjjlallaaaaaaaaaaaaaaaaalcccccccccccaaaaaaaaaalllllllll", "`ijjfjjjjjjjllllacacacacacacacacaccccccccccccaaaaaaaaaalllllllll", "`ijfjjjjjjjjlalacacacacacacacacacccccccccccccaaaaaaaaaalllllllll", "`ijjjjjjjgdjlllccccccccccccccccccccccccccccccallllllllllllllllll", "`ijjjjjjjddjlalccccccccccccccccccccccccccccccalllllllllllllllj`i", "`ijjjjjjfjjjllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacalllllllllllllllj`i", "`ijjjjjfjjjjlaaacacacacaaaaaaaaaaaacacaacaacaalllllllllllllllj`i", "`ijjjjjgdjjjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaalllllllllllllllj`i", "`ijjjjjddjjjjfffffffffffffffffffffffffffffaaadglbblllllllllllj`i", "`ijjjjfjjjjjjjffffffffffffffffffffffffffffaaadglbblllllllllllj`i", "`ijjjfjjjjjjjjjfffffffffffffffffffffffffffaaaalllllllllllllllj`i", "`ijjjjjjjjjjjjjjffffffffffffffffffffffffffffffjjjjjjjjjjjjjjjj`i", "`ijjjjjjjjjfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjlhlhjjj`i", "`ijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjfjjjjjjjjjjjjjjjjjjjjjhhlhfjjj`i", "`iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii", "````````````````````````````````````````````````````````````````" }; micropolis-activity/images/tiles-7.xpm0000664000076400007640000000406210724145723020314 0ustar simcitysimcity/* XPM */ static char *tiles__[] = { /* columns rows colors chars-per-pixel */ "69 26 6 1", " c black", ". c #727272727272", "X c blue", "o c cyan", "O c yellow", "+ c #DFDFDFDFDFDF", /* pixels */ " ", " ................................................................. ", " . ............................................................... + ", " .. ............................................................. ++ ", " ... +++ ", " ... OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +++ ", " ... OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +++ ", " ... OOOoXXOOOOoXXXOOOOoXXOOOOOOoXXXOOOoXXXXXXXXOOOOoXXXXOOOOOOO +++ ", " ... OOOOoXOOOoXOOoXOOoXOoXOOOOOOoXXOOOoXOoXOOoXXOOoXOOoXOOOOOOO +++ ", " ... OOOOoXOOOoXOOoXOoXOOOoXOOOOOOoXXOoXOOoXOOOoXOOoXOOoXOOOOOOO +++ ", " ... OOOOoXOOOOOOOoXOoXOOOoXOOOOOOOoXXXOOOoXOOOoXOOoXXOOOOOOOOOO +++ ", " ... OOOOoXOOOOOOOoXOoXOOOoXOOOOOOOoXXOOOOoXOOoXXOOOoXXOOOOOOOOO +++ ", " ... OOOOoXOOOOOOoXOOoXOOOoXOOOOOOOOoXOOOOoXXXXXOOOOOoXXOOOOOOOO +++ ", " ... OOOOoXOOOOOOoXOOoXOOOoXOOOOOOOOoXOOOOoXoXXOOOOOOOoXXOOOOOOO +++ ", " ... OOOOoXOOOOOoXOOOoXOOOoXOOOOOOOOoXOOOOoXOoXXOOOoXOOoXOOOOOOO +++ ", " ... OOOOoXOOOOoXOOoXOoXOoXOOOOOOOOOoXOOOOoXOOoXXOOoXOOoXOOOOOOO +++ ", " ... OOOoXXXOOoXXXXXOOOoXXOOOOOOOOOoXXXOOoXXXOOoXXXoXXXXOOOoXOOO +++ ", " ... OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +++ ", " ... OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +++ ", " ... OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +++ ", " ... OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +++ ", " ... +++ ", " .. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++ ", " . +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + ", " +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ", " " }; micropolis-activity/images/obj8-1.xpm0000664000076400007640000000250110724145723020024 0ustar simcitysimcity/* XPM */ static char * obj1_1_xpm[] = { "32 32 7 1", " c None", ". c #BFBFBFBFBFBF", "X c #000000000000", "o c #FFFFFFFFFFFF", "O c #7F7F7F7F7F7F", "+ c #FFFF00000000", "@ c #3F3F3F3F3F3F", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ................... ", " XXoooooooooooooooooooX ", " .XOo+ooooooooooooooo+oX@ ", " ..OXooooooooooooooooooo@@ ", " ..XXoooooooooooooooooooX@ ", " ..XXX..@@..@@..@@..@@.XX@ ", " ...XOO@@OO@@OO@@OO@@OOOO@ ", " ..OOOOOOOOOOOOOOOOOOOOO@ ", " OO@@@@OOOOOOOO@@@@OO@ ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; micropolis-activity/images/tiles-106.xpm0000664000076400007640000000520310724145723020452 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "48 48 6 1", " c black", ". c red", "X c #FFFF7F7F0000", "o c yellow", "O c gray100", "+ c None", /* pixels */ "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "+++++++++OXXXX++++++++++++++++++++++++++++++++++", "++++++++OXXXXXX..+++++++++++++++++++++++++++++++", "+++++++XXXXXXXXX..++++++++++++++++++++++++++++++", "++++++OXXXXX..XXX..+++++X.X.X.++++++++++++++++++", "++++++XX.....X.XXX..+++XXX.X.X.+++++++++++++++++", "+++++XX..+++...XXXX..+++XXX.X.X+++++++++++++++++", "++++XX..+++++...XXXX..+++X.X.+++++++++++++++++++", "++++X..+++++++..XXXXX..++.X...++++++++++++++++++", "+++XX.+++++++++..XXXXX..+X....++++++++++++++++++", "+++X.++++++++++..XXXXXX.XX.X...+++++++++++++++++", "+++X.+++++++++++..XXXXXX.XX.X..+++++++++++++++++", "+++.+++++++++++++.XOXXXXX.XX...+++++++++++++++++", "+++.+++++++++++++XXXXXXXXX.XX..+++++++++++++++++", "+++++++++++++++++XXXXOXXXXX.....++++++++++++++++", "+++++++++++++++++XXXXOXXXXXX....+++X.+++++++++++", "++++++++++++++++OXXXXXXXXXXXX...+++.X.++++++++++", "+++++++++++++++OXXXXXXOXXXXXXX..+++X...+++++++++", "+++++++++++++++OXX.XXXXXXXXXXXX..++.X...++++++++", "+++++++++++++++XXXX.XXXXXXXXXXXX.X.X....++++++++", "++++++++++++++++XX.X.XXXOXXXXXXXX.X.X.++++++++++", "++++++++++++++++XXX.X.XXXXXXXXXXXX.X..++++++++++", "+++++++++++++++++XX....XXXOXXXXXX.X...++++++++++", "++++++++++++++++++X...+XXXXXXXXXXX.X..++++++++++", "+++++++++++++++++++..+++XXXOXXXXX.X...++++++++++", "+++++++++++++++++++++++++XXXXXXXXX...+++++++++++", "++++++++++++++++++++++++++XXOXXXXXX..+++++++++++", "+++++++++++++++++++++++XXOXXXOXXXX.X.+++++++++++", "+++++++++++++++++++++++XOXXXXXOXXXXX.+++++++++++", "+++++++++++++++++++++++XOX.XXXXXXXX...++++++++++", "+++++++++++++++++++++++XXXX...XXXXXX..++++++++++", "++++++++++++++++++++++++XXX....XXXXXX..+++++++++", "+++++++++++++++++++++++++XXX. ..X.XXX...++++++++", "+++++++++++++++++++++++++XXX..+..o..X..o.+++++++", "++++++++++++++++++++++++++XX..++..ooXXoo.+++++++", "++++++++++++++++++++++++++X.X..++..XXXXX.+++++++", "+++++++++++++++++++++++++++X..++++...XX..+++++++", "++++++++++++++++++++++++++++++++++++....++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++" }; micropolis-activity/images/gr120.xpm0000664000076400007640000000410610724145723017662 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "69 26 6 1", /* colors */ "` c #000000", "a c #3F3F3F", "b c #727272 m #ffffff", "c c #FFFF00", "d c #FFBB00", "e c #DFDFDF", /* pixels */ "`````````````````````````````````````````````````````````````````````", "``eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee``", "`e`eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`b`", "`ee`eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`bb`", "`eee`````````````````````````````````````````````````````````````bbb`", "`eee`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`bbb`", "`eee`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`bbb`", "`eee`aaacddaaaacdddaaaacddaaaaaacdddaaacddddddddaaaacddddaaaaaaa`bbb`", "`eee`aaaacdaaacdaacdaacdacdaaaaaacddaaacdacdaacddaacdaacdaaaaaaa`bbb`", "`eee`aaaacdaaacdaacdacdaaacdaaaaaacddacdaacdaaacdaacdaacdaaaaaaa`bbb`", "`eee`aaaacdaaaaaaacdacdaaacdaaaaaaacdddaaacdaaacdaacddaaaaaaaaaa`bbb`", "`eee`aaaacdaaaaaaacdacdaaacdaaaaaaacddaaaacdaacddaaacddaaaaaaaaa`bbb`", "`eee`aaaacdaaaaaacdaacdaaacdaaaaaaaacdaaaacdddddaaaaacddaaaaaaaa`bbb`", "`eee`aaaacdaaaaaacdaacdaaacdaaaaaaaacdaaaacdcddaaaaaaacddaaaaaaa`bbb`", "`eee`aaaacdaaaaacdaaacdaaacdaaaaaaaacdaaaacdacddaaacdaacdaaaaaaa`bbb`", "`eee`aaaacdaaaacdaacdacdacdaaaaaaaaacdaaaacdaacddaacdaacdaaaaaaa`bbb`", "`eee`aaacdddaacdddddaaacddaaaaaaaaacdddaacdddaacdddcddddaaacdaaa`bbb`", "`eee`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`bbb`", "`eee`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`bbb`", "`eee`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`bbb`", "`eee`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`bbb`", "`eee`````````````````````````````````````````````````````````````bbb`", "`ee`bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`bb`", "`e`bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`b`", "``bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb``", "`````````````````````````````````````````````````````````````````````" }; micropolis-activity/images/tiles-35.xpm0000664000076400007640000000413510724145723020376 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "34 50 8 1", " c black", ". c #7F7F7F7F0000", "X c #5D5D5D5D5D5D", "o c gray50", "O c #BFBF79790000", "+ c yellow", "@ c gray75", "# c gray100", /* pixels */ "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@++++++++++++++++++++++++++++++++X", "@++++++++++++++++++++++++++++++++X", "@++XXXXXXXXXXXXXXXXXXXXXXXXXXXX++X", "@++X##########################@++X", "@++X#############..###....####@++X", "@++X############.XX#XX..XXXX##@++X", "@++X#########..XXXXX..XXX.X..#@++X", "@++X#########..XXXXX..XXX.X..#@++X", "@++X#########.XX.XXXXXX.XXX###@++X", "@++X########.XXX#XX.XXXX..####@++X", "@++X#######X.XX##...X...######@++X", "@++X#######X.XX#....XXX#######@++X", "@++X######.XX##X.XX###########@++X", "@++X######XX ##XX ############@++X", "@++X######XX ##XX ############@++X", "@++X######XX ##XX ############@++X", "@++X###XooXX ooXX ooooooo#####@++X", "@++X###XXooX oooX oooooooo####@++X", "@++X###XXXXXXXXXXXXXXXXXXXX###@++X", "@++X###XXX X###@++X", "@++X# +XXX X++#@++X", "@++X# +XXX XX XX XX XX XX X +#@++X", "@++X# +XXX XX XX XX XX XX X +#@++X", "@++X# +OXX XX XX XX XX XX X +#@++X", "@++X# +OOX X +#@++X", "@++X# +OOOOOOOOOOOOOOOOOOOO +#@++X", "@++X# +OOOOOOO ++++OOOOOOOO +#@++X", "@++X# +OOOOOOO ++ OOOOOOOO +#@++X", "@++X# +OOOOOOOO ++OOOOOOOOO +#@++X", "@++X# +OOOOOOOO ++OOOOOOOOO +#@++X", "@++X# +OOOOOOOO ++OOOOOOOOO +#@++X", "@++X# +OOOOOOOO ++OOOOOOOOO +#@++X", "@++X# +OOOOOOOO ++OOOOOOOOO +#@++X", "@++X# +OOOOOOOO ++OOOOOOOOO +#@++X", "@++X# +OOOOOOOO ++OOOOOOOOO +#@++X", "@++X# +OOOOOOOO ++OOOOOOOOO +#@++X", "@++X# +OOOOOOO ++++OOOOOOOO +#@++X", "@++X# +OOOOOOO OOOOOOOO +#@++X", "@++X# +OOOOOOOOOOOOOOOOOOOO +#@++X", "@++X# +OOOOOOOOOOOOOOOOOOOO +#@++X", "@++X# +OOOOOOOOOOOOOOOOOOOO +#@++X", "@++X# +OOOOOOOOOOOOOOOOOOOO +#@++X", "@++X# +++++++++++++++++++++++#@++X", "@++X# #@++X", "@++X##########################@++X", "@++X@@@@@@@@@@@@@@@@@@@@@@@@@@@++X", "@++++++++++++++++++++++++++++++++X", "@++++++++++++++++++++++++++++++++X", "@XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }; micropolis-activity/images/tiles-37.xpm0000664000076400007640000000431410724145723020377 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "42 42 13 1", " c black", ". c #00007F7F0000", "X c #7F7F7F7F0000", "o c #5D5D5D5D5D5D", "O c gray50", "+ c blue", "@ c green", "# c #BFBF79790000", "$ c red", "% c #FFFF77770000", "& c yellow", "* c gray75", "= c gray100", /* pixels */ "******************************************", "*OO&&&&OOOO&&&&OOOO&&&&OOOO&&&&OOOO&&&&OOo", "*OO&&&&OOOO&&&&OOOO&&&&OOOO&&&&OOOO&&&&OOo", "*OOooooooooooooooooooooooooooooooooooooOOo", "*OOo==================================*OOo", "*&&o=######X#######=$=#########=$=###=*&&o", "*&&o=X############=o o=#######= o =##=*&&o", "*&&o=###*&ooooooo=o o o=ooooo= o o =#=*&&o", "*&&o=##**o* oooo=o o o o=ooo= o o o ==*&&o", "*OOo=#*O*oooooo=$ o o o $oo=$o o o o$=*OOo", "*OOo=#***oooo====o o o o=*=== o o o ==*OOo", "*OOo=#***ooo===**=o o o=*==**= o o =#=*OOo", "*OOo=#*O*oo=o=****=o o=*==****= o =O#=*OOo", "*&&o=#***oo==*****o=$=o==*****O=$=O##=*&&o", "*&&o=#***oo=*****OOOOOo=*****OOOOOo##=*&&o", "*&&o=#*O*oo*O***OOOOOoo**o*OOOOOooo##=*&&o", "*&&o=#***ooo***OOOoOooo***OOOOoOooo##=*&&o", "*OOo=#***oooo*OoOOOooooo**OoOOOoooo##=*OOo", "*OOo=#*O*oooooOOOOooooooooOOOoooooo##=*OOo", "*OOo=#***o* ooo o o oooooooooooo* o##=*OOo", "*OOo=#**O&ooo*********oooooooooooo&#X=*OOo", "*&&o=#*OOOOOO*OOOOOOO*OOOOOOOOOOOOX##=*&&o", "*&&o=#OOOOOO**Oo&OooO*ooooooooooOXX##=*&&o", "*&&o=##XXXX***oOOoOO&*ooooo&ooooXXX##=*&&o", "*&&o=###XXX***oOoOoOo*oooo&oooooXXX##=*&&o", "*OOo=####XX***OoO$OoO*ooo&ooooooXXX##=*OOo", "*OOo=##X###***oOoOoOo*oo&&&oooooX##X#=*OOo", "*OOo=######***&OOoOOo*ooo&ooOOOoX####=*OOo", "*OOo=##@.##***OooO&oO*oo&ooooooOO*%**=*OOo", "*&&o=##X###***OOOOOOO*o&ooooOOOOO****=*&&o", "*&&o=#X##@.**oOoOoOoOooooooo*********=*&&o", "*&&o=####X#*OOOOOOOOOOOOOOOo********#=*&&o", "*&&o=###@.#OOOoOoOoOOOoOoOoO********#=*&&o", "*OOo=###X###XXXXXXXXXXXXXXOO@+******#=*OOo", "*OOo=##X#####XXXXXXXXXXXXXXX#########=*OOo", "*OOo=#####X#####################=*=##=*OOo", "*OOo=################X#########=*=*##=*OOo", "*&&o==================================*&&o", "*&&o***********************************&&o", "*&&OOOO&&&&OOOO&&&&OOOO&&&&OOOO&&&&OOOO&&o", "*&&OOOO&&&&OOOO&&&&OOOO&&&&OOOO&&&&OOOO&&o", "*ooooooooooooooooooooooooooooooooooooooooo" }; micropolis-activity/images/icairphi.xpm0000664000076400007640000000747110724145723020627 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "58 58 12 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #5D5D5D", "c c #007F00", "d c #BF7900", "e c #FF0000", "f c #4F4FFF", "g c #FFFFFF", "h c #7F7F00", "i c #FF7700", "j c #BFBFBF", "k c #0000FF", /* pixels */ "jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj", "jaaddddaaaaddddaaaaddddaaaaddddaaaaddddaaaaddddaaaaddddaab", "jaaddddaaaaddddaaaaddddaaaaddddaaaaddddaaaaddddaaaaddddaab", "jaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaab", "jaabggggggggggggggggggggggggggggggggggggggggggggggggggjaab", "jddbgdddhdddddddddddddddd`ddddddddddddddededededdddddgjddb", "jddbgaaaaaaaaaaaadddddddd`bjdddddhdaaaaabjbjbjbfdddddgjddb", "jddbgddddddddddhadddddddd``bddddddaajajabaababbddddddgjddb", "jddbgdddddddddddaddddddddb```dddddaaaaaabaababbddddddgjddb", "jaabgdfdddddfdddafddddfdbhhfddddfaajafdfbaabaabfdddfdgjaab", "jaabgebbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbegjaab", "jaabgdjbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbjbbbbaabjdgjaab", "jaabgebbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbjbbbbababegjaab", "jddbgdjababjjbjjbjjbjjbjjbjjbjjbjjbjjbjjbjjbjjbbbbbjdgjddb", "jddbgebaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbjbbbbbaabegjddb", "jddbgdjbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbjbbbbabajdgjddb", "jddbgebbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbegjddb", "jaabgddfajaafddddfddddfadddfddddfaaaafdfbbbjbbbfdddfdgjaab", "jaabgdddaaaadddddddddddaddddddhddajaadddbbbjbbbddddddgjaab", "jaabgdddajaadddddddddddaaaaadddddaaaadddbbbbbbbddaaadgjaab", "jaabgdddaaaaaaaaaaaaaaaadddadddddajaadddbbbjbbbdjbdadgjaab", "jddbgdddajaadddddddddddddddadddddaaaadddbbbjbbbdjadadgjddb", "jddbgdddaaaaaddddddddddddddadjjjjjjjaddfbbbbbbbfdddadgjddb", "jddbgddaaajaagggaaaaaagagaaa`jjjejbjadddbbbjbbbddddadgjddb", "jddbgddaaaaajagajajajaggggab`jjbjjjjadddbbbjbbbdddhadgjddb", "jaabgddaaaaggbgbggaaaaabgaba`jbjjjejadddbbbbbbbddddadgjaab", "jaabgddaaaaagggggaejjjjjjbab`jjajbjjadddbbbjbbbddddadgjaab", "jaabgddejjjjbejjjbgagagajaba`jjjajajaddfbbbjbbbfdddadgjaab", "jaabgdbjgagabgagabjjjjjjjbab`jjjjjbjahddbbbbbbbddddadgjaab", "jddbgdbjjjjjbjjjjbjjjjjjjaba```````aadddbbbjbbbddddadgjddb", "jddbgdbjjjjjbjjjjbgagagajbabbbbbbajaadddbbbjbbbddddadgjddb", "jddbgdbjgagabgagabejjjjjjabbbbbbbaaaadddbbbbbbbdaaaadgjddb", "jddbgdbejjjjbejjjbkkkkkkkjaaaaabbajaaddfbbbjbbbfaddddgjddb", "jaabgdbkkkkkkk``kk`kk`kkfjjaajabbaaaadddbbbjbbbdadaadgjaab", "jaabgddhhhhbbhbbhhbh`b`ffjbaababbajaadddbbbbbbbdadbbdgjaab", "jaabgdddaaaabbbbbbb`bb``fjgjagabaaaaadddbbbjbbbdadaadgjaab", "jaabgddab`ahhaaaaaa`aaa`fjajjajbagjaadddbbbjbbbdadbbdgjaab", "jddbgd`a``abbbbbbbaaaa`ffjgjjgjbggaagddfbbbbbbbfadaadgjddb", "jddbgbjaaabababababaaaa`fjajjajggajggdddbbbjbbbdadbbdgjddb", "jddbgbbaaabhhhhhhbbfaaa`fejjjjeggggggdddbbbjbbbdaddddgjddb", "jddbgbjaacbbbbbddabfaa`fbbbbbbbbgaaaaddfbbbbbbbfaddddgjddb", "jaabgbbaacbbbbbdhbbaaa`fjagaagabggjaaaaabbbjbbbdaddddgjaab", "jaabgbjaaabbbbbddabaac`fjjajjajbagaaaaaabbbjbbbaaddddgjaab", "jaabgbbaaabbbbbdhbbaaca`jjgjjgjbaajajajabbbbbbbddddddgjaab", "jaabgbjaaab```dddabaaaa`ejajjaebaaaaaaaabbbjbbbddddddgjaab", "jddbgbbaaaadddddhbaaaa`fbbbbbbbbaajaaddfbbbjbbbfdddddgjddb", "jddbgbjaaaaaaaaaaaaaaa`fjaaaaabaaaaaadddbbbbbbbddddddgjddb", "jddbgbbaaaaaaaahaaaaaaa`jgjjgjbaaaaaadddbaabbabdddhddgjddb", "jddbgbjbaaaaaaaaaaaaaaa`jajjajbaaaaaadddbbababbddddddgjddb", "jaabgdbbjbjbjbjbjbjaia`fejjjjehdddddhddfbaabaabfdddddgjaab", "jaabgddbbbbbbbbbbbbaiadbbbbbbhhdddddddhdbjbjbjbddddddgjaab", "jaabgdhddhhhhhhhhb`aaaddhhhhhhhdhddddddddddddddddddddgjaab", "jaabgddddddddddddbaaadddddddddddddddddddededededdddddgjaab", "jddbggggggggggggggggggggggggggggggggggggggggggggggggggjddb", "jddbjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjddb", "jddaaaaddddaaaaddddaaaaddddaaaaddddaaaaddddaaaaddddaaaaddb", "jddaaaaddddaaaaddddaaaaddddaaaaddddaaaaddddaaaaddddaaaaddb", "jbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" }; micropolis-activity/images/tiles-149.xpm0000664000076400007640000000432010724145723020460 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "37 47 12 1", " c #7F7F7F7F0000", ". c blue", "X c #0000CFCF0000", "o c #BFBF00000000", "O c red", "+ c #BFBFBFBF3F3F", "@ c #FFFFBBBB0000", "# c #FFFFBFBF7F7F", "$ c yellow", "% c #FFFFFFFF7F7F", "& c gray75", "* c #FFFFBFBFFFFF", /* pixels */ "&&&&&&&& &&&&&", "&&&&&&& ######################## &&&&", "&&&&&& ###### ########@@@@# &&&", "&&&&& ##### XXXXXXX #####@%%%%@# &&", "&&&&& #### XXXXXXXXXXX ####@%%%%@# &&", "&&&&& ### XXXXXXXXXXXXX ###@%%%%@# &&", "&&&++++++++XXXXXXXXXXXXX ##@%%%%@# &&", "&&&& ### XXXXXXXXXXXXXXX ##@%%%%@# &&", "&&&+++++++XXXXXXXXXXXXXXX ##@@@@## &&", "&&&& ## XXXXXXXXXXXXXXXXX ###oo### &&", "&&&&& # XXXXXXXXXXXXXXXXX ##oOOo## &&", "&&&&++# XXXXXXXXXXXXXXXXX #oOOOOo## &", "&&& ++# XXXXXXXXXXXXXXXXX ##oooo### &", "&&& ++# XXXXXXXXXXXXX+++++++++++++++ ", "&&& ++## XXXXXXXXXXXXXXX ########## &", "&&& ++## XXXXXXXXXXX++++++++++++++++ ", "&&& ++### XXXXXXXXXXXXX ########### &", "&& #++#### XXXXXXX++++++++++++++++++ ", "& ###+##### XXXXXXXXX ############# &", "++++++++++++++++++++++++++++++++++++ ", "++++++++++++++++++++++++++++++++++++ ", "& ###+############################# &", "&& #++#+++++++#o#####o##o##o##o##o## ", "&&& ++#+$+$$$+oOo###oOooOooOoo*ooOo# ", "&&& ++#+$+$$$+oOo###oOooOooOoo*ooOo# ", "&&& ++#+++++++#o#####o##o##o##o##o## ", "&&& ++############################## ", "&&& ++############################## ", "&&& +ooooo++++++++++++++++++++++++++ ", "&&& +oOOOo++++++#######ooooooooo### &", "&&& +oOOOo++++++######o%%%%%%%%%o# &&", "&&& +#oOOo+++++######o%%%%%%%o%%%o &&", "&&& +##ooo+++++######o%%%%%%o%%%%o &&", "&&& #+####++++#######o%%%%%%o%%%%o &&", "&&& #+###########%%##o%%%%%o%%%%%o &&", "&&& #+##########%%%%##ooooooooooo# &&", "&&& #+#########%%oo%%#####oo####### &", "&&&& #+#########oOOo#####oOOo#$$### &", "&&&&& #+########oooo#####oooo$$$...+ ", "&&&&& #+####################$$....# &", "&&&&& ##+###################....$$++ ", "&&&&&& #+##################...$$$## &", "&&&&&&& #+####################$$#### ", "&&&& ##+######################### &", "&&& ######++++++++++++++++++++++++++ ", "&&& ############################### &", "&&&& &&" }; micropolis-activity/images/tiles-38.xpm0000664000076400007640000000421510724145723020400 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "42 42 10 1", " c black", ". c #5D5D5D5D5D5D", "X c gray50", "o c blue", "O c green", "+ c red", "@ c #FFFF77770000", "# c yellow", "$ c gray75", "% c gray100", /* pixels */ "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$XX####XXXX####XXXX####XXXX####XXXX####XX.", "$XX####XXXX####XXXX####XXXX####XXXX####XX.", "$XX....................................XX.", "$XX. $XX.", "$##. % % % % % % % %+% % % % % %+% % $##.", "$##. % % % % % % %. .% % % % % . % % $##.", "$##. % %$#.......%. . .%.....% . . % $##.", "$##. %$$.$ ....%. . . .%...% . . . % $##.", "$XX. %$X$......%+ . . . +..%+. . . .+ $XX.", "$XX. $$$....%%%%. . . .%$%%% . . . % $XX.", "$XX. %$$$...%%%$$%. . .%$%%$$% . . % $XX.", "$XX. $X$..%.%$$$$%. .%$%%$$$$% . %X% $XX.", "$##. %$$$..%%$$$$$.%+%.%%$$$$$X%+%X% $##.", "$##. $$$..%$$$$$XXXXX.%$$$$$XXXXX. % $##.", "$##. %$X$..$X$$$XXXXX..$$.$XXXXX...% $##.", "$##. $$$...$$$XXX.X...$$$XXXX.X... % $##.", "$XX. %$$$....$X.XXX.....$$X.XXX....% $XX.", "$XX. $X$.....XXXX........XXX...... % $XX.", "$XX. %$$$.$ ... . . ............$ .% $XX.", "$XX. $$X#...$$$$$$$$$............# % $XX.", "$##. %$XXXXXX$XXXXXXX$XXXXXXXXXXXX % $##.", "$##. XXXXXX$$X.#X..X$..........X % % $##.", "$##. % % % $$$.XX.XX#$.....#.... % % $##.", "$##. % % %$$$.X.X.X.$....#.....% % % $##.", "$XX. % % % $$$X.X+X.X$...#...... % % $XX.", "$XX. % % %$$$.X.X.X.$..###.....% % % $XX.", "$XX. % % % $$$#XX.XX.$...#..XXX. % % $XX.", "$XX. % % %$$$X..X#.X$..#......XX$@$$ $XX.", "$##. % % % $$$XXXXXXX$.#....XXXXX$$$$ $##.", "$##. % % %$$.X.X.X.X.......$$$$$$$$$ $##.", "$##. % % % $XXXXXXXXXXXXXXX.$$$$$$$$ $##.", "$##. % % %XXX.X.X.XXX.X.X.X$$$$$$$$% $##.", "$XX. % % % % % % % % % % %XXOo$$$$$$ $XX.", "$XX. % % % % % % % % % % % % % % % % $XX.", "$XX. % % % % % % % % % % % % % % % % $XX.", "$XX. % % % % % % % % % % % % % % % % $XX.", "$##. $##.", "$##.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$##.", "$##XXXX####XXXX####XXXX####XXXX####XXXX##.", "$##XXXX####XXXX####XXXX####XXXX####XXXX##.", "$........................................." }; micropolis-activity/images/tiles-21.xpm0000664000076400007640000000750610724145723020376 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "58 58 12 1", " c black", ". c #00007F7F0000", "X c #7F7F7F7F0000", "o c #5D5D5D5D5D5D", "O c gray50", "+ c blue", "@ c #4F4F4F4FFFFF", "# c #BFBF79790000", "$ c red", "% c #FFFF77770000", "& c gray75", "* c gray100", /* pixels */ "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&", "&OO####OOOO####OOOO####OOOO####OOOO####OOOO####OOOO####OOo", "&OO####OOOO####OOOO####OOOO####OOOO####OOOO####OOOO####OOo", "&OOooooooooooooooooooooooooooooooooooooooooooooooooooooOOo", "&OOo**************************************************&OOo", "&##o*###X################ ##############$#$#$#$######*&##o", "&##o*OOOOOOOOOOOO######## o&#####X#OOOOOo&o&o&o@#####*&##o", "&##o*##########XO######## o######OO&O&OoOOoOoo######*&##o", "&##o*###########O########o #####OOOOOOoOOoOoo######*&##o", "&OOo*#@#####@###O@####@#oXX@####@OO&O@#@oOOoOOo@###@#*&OOo", "&OOo*$oooooooooooooooooooooooooooooooooooooooooooooo$*&OOo", "&OOo*#&oooooooooooooooooooooooooooooooooooo&ooooOOo&#*&OOo", "&OOo*$ooOoooooooooooooooooooooooooooooooooo&ooooOoOo$*&OOo", "&##o*#&OoOo&&o&&o&&o&&o&&o&&o&&o&&o&&o&&o&&o&&ooooo&#*&##o", "&##o*$oOOoooooooooooooooooooooooooooooooooo&oooooOOo$*&##o", "&##o*#&oooooooooooooooooooooooooooooooooooo&ooooOoO&#*&##o", "&##o*$oooooooooooooooooooooooooooooooooooooooooooooo$*&##o", "&OOo*##@O&OO@####@####@O###@####@OOOO@#@ooo&ooo@###@#*&OOo", "&OOo*###OOOO###########O######X##O&OO###ooo&ooo######*&OOo", "&OOo*###O&OO###########OOOOO#####OOOO###ooooooo##OOO#*&OOo", "&OOo*###OOOOOOOOOOOOOOOO###O#####O&OO###ooo&ooo#&o#O#*&OOo", "&##o*###O&OO###############O#####OOOO###ooo&ooo#&O#O#*&##o", "&##o*###OOOOO##############O#&&&&&&&O##@ooooooo@###O#*&##o", "&##o*##OOO&OO***OOOOOO*O*OOO &&&$&o&O###ooo&ooo####O#*&##o", "&##o*##OOOOO&O*O&O&O&O****Oo &&o&&&&O###ooo&ooo###XO#*&##o", "&OOo*##OOOO**o*o**OOOOOo*OoO &o&&&$&O###ooooooo####O#*&OOo", "&OOo*##OOOOO*****O$&&&&&&oOo &&O&o&&O###ooo&ooo####O#*&OOo", "&OOo*##$&&&&o$&&&o*O*O*O&OoO &&&O&O&O##@ooo&ooo@###O#*&OOo", "&OOo*#o&*O*Oo*O*Oo&&&&&&&oOo &&&&&o&OX##ooooooo####O#*&OOo", "&##o*#o&&&&&o&&&&o&&&&&&&OoO OO###ooo&ooo####O#*&##o", "&##o*#o&&&&&o&&&&o*O*O*O&oOooooooO&OO###ooo&ooo####O#*&##o", "&##o*#o&*O*Oo*O*Oo$&&&&&&OoooooooOOOO###ooooooo#OOOO#*&##o", "&##o*#o$&&&&o$&&&o+++++++&OOOOOooO&OO##@ooo&ooo@O####*&##o", "&OOo*#o+++++++ ++ ++ ++@&&OO&OooOOOO###ooo&ooo#O#OO#*&OOo", "&OOo*##XXXXooXooXXoX o @@&oOOoOooO&OO###ooooooo#O#oo#*&OOo", "&OOo*###OOOOooooooo oo @&*&O*OoOOOOO###ooo&ooo#O#OO#*&OOo", "&OOo*##Oo OXXOOOOOO OOO @&O&&O&oO*&OO###ooo&ooo#O#oo#*&OOo", "&##o*# O OoooooooOOOO @@&*&&*&o**OO*##@ooooooo@O#OO#*&##o", "&##o*o&OOOoOoOoOoOoOOOO @&O&&O&**O&**###ooo&ooo#O#oo#*&##o", "&##o*ooOOOoXXXXXXoo@OOO @$&&&&$******###ooo&ooo#O####*&##o", "&##o*o&OO.ooooo##Oo@OO @oooooooo*OOOO##@ooooooo@O####*&##o", "&OOo*ooOO.ooooo#XooOOO @&O*OO*Oo**&OOOOOooo&ooo#O####*&OOo", "&OOo*o&OOOooooo##OoOO. @&&O&&O&oO*OOOOOOooo&oooOO####*&OOo", "&OOo*ooOOOooooo#XooOO.O &&*&&*&oOO&O&O&Oooooooo######*&OOo", "&OOo*o&OOOo ###OoOOOO $&O&&O$oOOOOOOOOooo&ooo######*&OOo", "&##o*ooOOOO#####XoOOOO @ooooooooOO&OO##@ooo&ooo@#####*&##o", "&##o*o&OOOOOOOOOOOOOOO @&OOOOOoOOOOOO###ooooooo######*&##o", "&##o*ooOOOOOOOOXOOOOOOO &*&&*&oOOOOOO###oOOooOo###X##*&##o", "&##o*o&oOOOOOOOOOOOOOOO &O&&O&oOOOOOO###ooOoOoo######*&##o", "&OOo*#oo&o&o&o&o&o&O%O @$&&&&$X#####X##@oOOoOOo@#####*&OOo", "&OOo*##ooooooooooooO%O#ooooooXX#######X#o&o&o&o######*&OOo", "&OOo*#X##XXXXXXXXo OOO##XXXXXXX#X####################*&OOo", "&OOo*############oOOO###################$#$#$#$######*&OOo", "&##o**************************************************&##o", "&##o&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&##o", "&##OOOO####OOOO####OOOO####OOOO####OOOO####OOOO####OOOO##o", "&##OOOO####OOOO####OOOO####OOOO####OOOO####OOOO####OOOO##o", "&ooooooooooooooooooooooooooooooooooooooooooooooooooooooooo" }; micropolis-activity/images/tiles-102.xpm0000664000076400007640000000520310724145723020446 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "48 48 6 1", " c black", ". c red", "X c #FFFF7F7F0000", "o c yellow", "O c gray100", "+ c None", /* pixels */ "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "+++++++++++++++++XXXXXXX++++++++++++++++++++++++", "+++++++++++++++XXXXXXXXXXXX+++++++++++++++++++++", "++++++++++++++X.XX....XXXXXX++++++++++++++++++++", "+++++++++++++....++.++.XXXXX++++++++++++++++++++", "++++++++++++.++++++++++...XX++++++++++++++++++++", "+++++++++++++++++++++++.X.XX.+++++++++++++++++++", "+++++++++++++++++++++++...XX.+++++++++++++++++++", "+++++++++++++++++++++++..XXX.+++++++++++++++++++", "+++++++++++++++++++++++..XXX.+++++++++++++++++++", "+++++++++++++++++++++++.XXXX.+++++++++++++++++++", "++++++++++++++++++++++...XXX.+++++++++++++++++++", "++++++++++++++++++++++..XXXX.+++++++++++++++++++", "+++++++++++++++++++++++.XXXX.++XX.++++++++++++++", "++++++++++++++++++++++XXXXXX.++XX.X+++++++++++++", "+++++++++++++++++++O+XXXOXXX.++XX..X++++++++++++", "+++++++++++++++++OXOXXXXXXXX.+.X...X.+++++++++++", "++++++++++++++++XXXXXXXXXXXXXXXXX.XX++++++++++++", "++++++++++++++++XXX.XXXOXXXXXX....+X++++++++++++", "++++++++++++++++XXX.XXXXXXXX.XX...++++++++++++++", "++++++++++++++++XXX.XXOXXXXX.XX..+++++++++++++++", "++++++++++++++++X...XXXXXXXXXX...+++++++++++++++", "++++++++++++++++....XXXXXXXX.X..++++++++++++++++", "++++++++++++++++....XXXXXXXX...+++++++++++++++++", "+++++++++++++++++++.XXXXXXXX...+++++++++++++++++", "+++++++++++++++++++XXXXXXXXX...+++++++++++++++++", "+++++++++++++++++++XXXOXXXXX..++++++++++++++++++", "+++++++++++++++++++XXXXXXXXX.+++++++++++++++++++", "++++++++++++++++XX+XXOXXXXXX.+++..++++++++++++++", "+++++++++++++++XOXOXXXXXXXXXX.+XX.++++++++++++++", "+++++++++++++++XXXXXOXXXXXXXX.XX..++++++++++++++", "++++++++++++++XXX.XXXXXXXX.X......++++++++++++++", "++++++++++++++XXX.XXXXXXX..X......++++++++++++++", "++++++++++++++XX...XOXXXX.XX...+.+++++++++++++++", "++++++++++++++XX...XXXXXX.....++++++++++++++++++", "+++++++++++++XX..+.XXXXX...+.+++++++++++++++++++", "+++++++++++++XX..+.XXXXXX.++++++++++++++++++++++", "++++++++++++++..++.XXXX..+++++++++++++++++++++++", "++++++++++++++++++..XXX..+++++++++++++++++++++++", "++++++++++++++++++...XX..+++++++++++++++++++++++", "++++++++++++++++++.o.X.o.+++++++++++++++++++++++", "++++++++++++++++++.oXX.o++++++++++++++++++++++++", "+++++++++++++++++++.XX..++++++++++++++++++++++++", "++++++++++++++++++..XX...+++++++++++++++++++++++", "+++++++++++++++++++.....++++++++++++++++++++++++", "++++++++++++++++++++.+.+++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++" }; micropolis-activity/images/tiles-99.xpm0000664000076400007640000000520210724145723020404 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "48 48 6 1", " c black", ". c red", "X c #FFFF7F7F0000", "o c yellow", "O c gray100", "+ c None", /* pixels */ "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++XXXX++++++++++++++++++++++++++++++++++++++", "+++++XXXXX..++++OXO+++++++++++++++++++++++++++++", "+++++XXX..o..++XXX.X++++++++++++++++++++++++++++", "+++++XXo..XoXX++XXX.++++++++++++++++++++++++++++", "+++++.Xo..XXXXX+XX.X.+++++++++++++++++++++++++++", "++++++.X.XXXXXXX XX.X+++++++++++++++++++++++++++", "+++++++.XXXXXXXX.X.X.X++++++++++++++++++++++++++", "++++++++XXOXXXXXX.X.X.X+++++++++++++++++++++++++", "++++++++.XXXXXX.X..X.X.+++++++++++++++++++++++++", "+++++++++.XOXXXX.X.....+++++++++++++++++++++++++", "+++++++++XXXXXXXX.X....+++++++++++++++++++++++++", "+++++++++XXXOXXXXX.X++++++++++++++++++++++++++++", "+++++++++OXXXXXXXXX.X+++++++++++++++++++++++++++", "++++++++XXXXXXOXXXXX.X+++XX+++++++++++++++++++++", "++++++++OXXX.XXOXXXXX.X+XXXX++++++++++++++++++++", "++++++++XXX..XXXXXXXXX.XXXXXX+++++++++++++++++++", "++++++++XX...XXXOXXXXXXXXXXX.X++++++++++++++++++", "++++++++X.X...XXXXXXXXXXXXXXX.++++++++++++++++++", "++++++XX.X....XXXXOXXXXX.X.X.X.+++++++++++++++++", "++++++X.X..++.X.XXXXXXXXX.X.X..+++++++++++++++++", "+++++++X.X.+++.X.XXXOXXXX......+++++++++++++++++", "++++++++...+++..X.XXXXXXX.....++++++++++++++++++", "+++++++++..+++...XXXXXXXXX...+++++++++++++++++++", "++++++++++++++..X.XXXXXXXXX..+++++++++++++++++++", "+++++++++++++++..X.XXXXXXX.X.+++++++++++++.+++++", "+++++++++++++++.X.X.X.XXXXX.X+++++++++++++X+++++", "+++++++++++++++..X...X.XXXXX.X+++++++++++OX+++++", "+++++++++++++++.X.X...X.XXXXX.X+++++++++.X.+++++", "++++++++++++++++.X.X.+.X.XXX.X.+++++++++O..+++++", "++++++++++++++++X.X..++.X.XXX.X.+++++++X..++++++", "+++++++++++++++++X.X.+++.X.XXX.X.+++++X.X.++++++", "+++++++++++++++.X.X...+++.X.XXX.X.+++X.X.+++++++", "+++++++++++++++X.X.X...+++.X.XXX.XX.X.X..+++++++", "++++++++++++++++......+++++..X.X.X.X.X.X++++++++", "++++++++++++++++++++++++++++..X.X.X.X.X+++++++++", "+++++++++++++++++++++++++++++....X.X.X++++++++++", "++++++++++++++++++++++++++++++++.....+++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++" }; micropolis-activity/images/tiles-70.xpm0000664000076400007640000000261110724145723020372 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "32 32 10 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c #00000000E6E6", "O c #66666666E6E6", "+ c red", "@ c yellow", "# c gray75", "$ c gray100", "% c None", /* pixels */ "%%%%%%%%%%%%%++++++%%%%%%%%%%%%%", "%%%%%%%%%%+++%%%%%%+++%%%%%%%%%%", "%%%%%%%%%+%%%%%%%%%%%%+%%%%%%%%%", "%%%%%%%%+%%%%%%%%%%%%%%+%%%%%%%%", "%%%%%%%+%%%%%%%%%%%%%%%%+%%%%%%%", "%%%%%%+%%%%%%%%XX%%%%%%%%+%%%%%%", "%%%%%+%%%%%%%%# X%%%%%%%%+%%%%%", "%%%%%+%%%%%%%X . .%%%%%%%+%%%%%", "%%%%+%%%%%%#%# oo .%#%%%%%%+%%%%", "%%%%+%%%%%%X%# . .%X%%%%%%+%%%%", "%%%%+%%%%%%X.$$##XX.X%%%%%%+%%%%", "%%%%+%%%%%%X%$$..XX%X%%%%%%+%%%%", "%%%%+%%%%%%X%$$..XX%X%%%%%%+%%%%", "%%%%+%%%%%%X%X$##X.%X%%%%%%+%%%%", "%%%%+%%%%%%X.$$##XX.X%%%%%%+%%%%", "%%%%%+%%%%%X%$$##XX%X%%%%%+%%%%%", "%%%%%+%%%%%%%%$##X%%%%%%%%+%%%%%", "%%%%%+%%%%%%%%$##X%%%%%%%%+%%%%%", "%%%%%%+%%%%%%%O$#O%%%%%%%+%%%%%%", "%%%%%%%+%%%%%%%$#%%%%%%%+%%%%%%%", "%%%%%%%%+%%%%%%$#%%%%%%+%%%%%%%%", "%%%%%%%%%+%%%%%X#%%%%%+%%%%%%%%%", "%%%%%%%%%%+++%%%#%%+++%%%%%%%%%%", "%%%%%%%%%%%%%++++++%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%@%#%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%X%##%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%X%#X#%%%%%%%%%%%%%", "%%%%%%%%%%%%%%@X#X#%%%%%%%%%%%%%", "%%%%%%%%%%%%%%X%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%X%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%" }; micropolis-activity/images/tiles-71.xpm0000664000076400007640000000261110724145723020373 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "32 32 10 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c #00000000E6E6", "O c #66666666E6E6", "+ c red", "@ c yellow", "# c gray75", "$ c gray100", "% c None", /* pixels */ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%++++++%%%%%%%%%%%", "%%%%%%%%%%%%+++%%%%%%+++%%%%%%%%", "%%%%%%%%%%%+%%%%%%%%%%%%+%%%%%%%", "%%%%%%%%%%+%%%%%%%%%%%%%%+%%%%%%", "%%%%%%%%%+%%%%%%%%%%%%%%%%+%%%%%", "%%%%%%%%+%%%%%%%%%%%%%%%%%%+%%%%", "%%%%%%%+%%%%%%%%%%%%%%%%%%%%+%%%", "%%%%%%%+%%%%%%%%#%%...%%%%%%+%%%", "%%%%%%+%%%%%%%%X%$. .%%%%%%+%%", "%%%%%%+%%%%%%%X.$$ o .%%%%%%+%%", "%%%%%%+%%%%%%X%$$$X o .%%%%%%+%%", "%%%%%%+%%%%%X%X$$..X %%%%%%%+%%", "%%%%%%+%%%%X%.$$#..#XX%%%%%%%+%%", "%%%%%%+%%%%%%$$####XX%#%%%%%%+%%", "%%%%%%+%%%%%O$###XXX.X%%%%%%%+%%", "%%%%%%%+%%%%$###XX.%X%%%%%%%+%%%", "%%%%%%%+%%%%$##XX.%X%%%%%%%%+%%%", "%%%%%%%+%%%$##XO%%X%%%%%%%%%+%%%", "%%%%%%%%+%$##%%%%X%%%%%%%%%+%%%%", "%%%%%%%%%+##%%%%%%%%%%%%%%+%%%%%", "%%%%%%%@%#+%%%%%%%%%%%%%%+%%%%%%", "%%%%%%X%##%+%%%%%%%%%%%%+%%%%%%%", "%%%%%@%#X#%%+++%%%%%%+++%%%%%%%%", "%%%%X%#XX#%%%%%++++++%%%%%%%%%%%", "%%%@%%%XX#%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" }; micropolis-activity/images/tiles-32.xpm0000664000076400007640000000263210724145723020373 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "34 34 2 1", " c black", ". c #7E7E7E7E7E7E", /* pixels */ "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "............. . . . . . . ... ....", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "......... . . . . . . . . . . ....", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", ".................................." }; micropolis-activity/images/icind.xpm0000664000076400007640000000413410724145723020116 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "34 50 8 1", /* colors */ "# c #000000", "a c #7F7F7F", "b c #5D5D5D", "c c #BF7900", " c #FFFFFF", "e c #FFFF00", "f c #7F7F00", "g c #BFBFBF", /* pixels */ "gggggggggggggggggggggggggggggggggg", "geeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeb", "geeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeb", "geebbbbbbbbbbbbbbbbbbbbbbbbbbbbeeb", "geeb##########################geeb", "geeb# # # # # # #ff # ffff# ##geeb", "geeb## # # # # #fbb#bbffbbbb #geeb", "geeb# # # # #ffbbbbbffbbbfbff#geeb", "geeb## # # # ffbbbbbffbbbfbff#geeb", "geeb# # # # #fbbfbbbbbbfbbb ##geeb", "geeb## # # #fbbb bbfbbbbff # #geeb", "geeb# # # #bfbb #fffbfff# # ##geeb", "geeb## # # bfbb#ffffbbb# # # #geeb", "geeb# # # fbb #bfbb # # # # ##geeb", "geeb## # #bb## bb# # # # # # #geeb", "geeb# # # bb# #bb## # # # # ##geeb", "geeb## # #bb## bb# # # # # # #geeb", "geeb# #baabb#aabb#aaaaaaa # ##geeb", "geeb## bbaab#aaab#aaaaaaaa # #geeb", "geeb# #bbbbbbbbbbbbbbbbbbbb ##geeb", "geeb## bbb################b# #geeb", "geeb##ebbb################bee#geeb", "geeb##ebbb#bb#bb#bb#bb#bb#b#e#geeb", "geeb##ebbb#bb#bb#bb#bb#bb#b#e#geeb", "geeb##e#bb#bb#bb#bb#bb#bb#b#e#geeb", "geeb##e #b################b#e#geeb", "geeb##e# # # # # # # # # # #e#geeb", "geeb##e # # # #eeee # # # ##e#geeb", "geeb##e# # # ###ee## # # # #e#geeb", "geeb##e # # # ##ee# # # # ##e#geeb", "geeb##e# # # # #ee # # # # #e#geeb", "geeb##e # # # ##ee# # # # ##e#geeb", "geeb##e# # # # #ee # # # # #e#geeb", "geeb##e # # # ##ee# # # # ##e#geeb", "geeb##e# # # # #ee # # # # #e#geeb", "geeb##e # # # ##ee# # # # ##e#geeb", "geeb##e# # # # #ee # # # # #e#geeb", "geeb##e # # # #eeee # # # ##e#geeb", "geeb##e# # # ####### # # # #e#geeb", "geeb##e # # # # # # # # # ##e#geeb", "geeb##e# # # # # # # # # # #e#geeb", "geeb##e # # # # # # # # # ##e#geeb", "geeb##e# # # # # # # # # # #e#geeb", "geeb##eeeeeeeeeeeeeeeeeeeeeee#geeb", "geeb##########################geeb", "geeb##########################geeb", "geebgggggggggggggggggggggggggggeeb", "geeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeb", "geeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeb", "gbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" }; micropolis-activity/images/tiles-82.xpm0000664000076400007640000000526310724145723020403 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "48 48 9 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c #66666666E6E6", "O c red", "+ c yellow", "@ c gray75", "# c gray100", "$ c None", /* pixels */ "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$@#@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$.##@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$.###@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$.###@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$+####@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$.#X##@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$.###X#@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$.#####@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$@####@@@@X$$$$$$$$$$$$$$$$$$#$$$$$$$$$$$", "$$$$$$$@###@@$..#XX##$$$$$$$$$$$$$$X##$$$$$$$$$$", "$$$$$$$$@@@$$$$..##X##$$$$$$$$$$$$@###O$$$$$$$$$", "$$$$$$$$$$$$$$$$.###X#O$$$$$$$$$$@#####$$$$$$$$$", "$$$$$$$$$$$$$$$$$@###X##$$$$$$$$X#####$$$$$$$$$$", "$$$$$$$$$$$$$$$$##@###X$$$$$$$$@######$$$$$$$$$$", "$$$$$$$$$$$$$$$$X##@###X$$$$$$X######@$$$$$$$$$$", "$$$$$$$$$$$$$$$$$XO#@###X$$$$@######@$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$X#o@###X$$@#######X$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$Xo@###XX#######@.$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$Xo@###X#######X$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$X @###X######.$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$Xo@###X####@.$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$XX @###X###X$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$@#@Xo@###X##.$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$@###@X @###XX.$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$X#####@Xo@###X$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$@#######@X @###X$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$X##########Xo@###X$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$@###########@X @###X$$$$$$$$$$$", "$$$$$$$$$$$$$$$$@#########@X..$Xo@###X$$$$$$$$$$", "$$$$$$$$$$$$$$$X#######@X..$$$$$X @###X$$$$$$$$$", "$$$$$$$$$$$$$$#######@X.$$$$$$$$$Xo@###X$$$$$$$$", "$$$$$$$$$$$$$$$#####@$$$$$$$$$$$$$X @###X$$$$$$$", "$$$$$$$$$$$$$$$$O#$$$$$$$$$$$$$$$$$Xo@###X$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X @###X$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$Xo@###X$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X@.##.$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X@. @.$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XX@..$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$...$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" }; micropolis-activity/images/button4hilite.xpm0000664000076400007640000010010010724145723021614 0ustar simcitysimcity/* XPM */ static char *button_hilite[] = { /* columns rows colors chars-per-pixel */ "157 90 256 2", " c #025D01", ". c #095E00", "X c #005E0C", "o c #155B00", "O c #005D14", "+ c #016303", "@ c #00630C", "# c #016B01", "$ c #006B0B", "% c #0B6300", "& c #0B6B00", "* c #006614", "= c #017301", "- c #017B02", "; c #007A0A", ": c #0A7C00", "> c #017308", ", c #007714", "< c #146500", "1 c #137600", "2 c #006828", "3 c #006739", "4 c #2A557D", "5 c #31587F", "6 c #006641", "7 c #265B8B", "8 c #2C5A85", "9 c #2B5E8C", "0 c #265985", "q c #245E91", "w c #295E90", "e c #315D85", "r c #315E8A", "t c #305780", "y c #325F91", "u c #2C608D", "i c #286089", "p c #2C6191", "a c #276292", "s c #31618D", "d c #3A648C", "f c #386085", "g c #326491", "h c #396691", "j c #376895", "k c #1F5B8F", "l c #466A8D", "z c #466D92", "x c #507497", "c c #018301", "v c #00830A", "b c #008B01", "n c #008B0A", "m c #098300", "M c #0A8B00", "N c #008614", "B c #019301", "V c #00920A", "C c #009B01", "Z c #009A09", "A c #099400", "S c #0A9B00", "D c #009816", "F c #158800", "G c #139900", "H c #01A401", "J c #00A20A", "K c #00AB01", "L c #00AC0A", "P c #0AA300", "I c #0AAD00", "U c #00A711", "Y c #01B400", "T c #00B30A", "R c #00BA03", "E c #00BA0A", "W c #09B200", "Q c #09BA00", "! c #00B610", "~ c #00B811", "^ c #00B919", "/ c #12A700", "( c #12BE00", ") c #15B300", "_ c #119B10", "` c #00C302", "' c #00C20B", "] c #00CB02", "[ c #00CB0A", "{ c #0CC300", "} c #0ACA00", "| c #00C218", " . c #00D202", ".. c #01DB02", "X. c #00DD0B", "o. c #07D603", "O. c #00DB10", "+. c #00D614", "@. c #16C900", "#. c #14D400", "$. c #00E302", "%. c #00E309", "&. c #00EA03", "*. c #06E904", "=. c #00E916", "-. c #01F202", ";. c #01FB02", ":. c #02FE0A", ">. c #0CFE04", ",. c #07F706", "<. c #0CFF14", "1. c #03FA15", "2. c #15E900", "3. c #12FF0B", "4. c #17FB05", "5. c #15FF14", "6. c #13FF19", "7. c #1BFF1B", "8. c #1AFF15", "9. c #0BFF28", "0. c #1DFF2A", "q. c #17FF27", "w. c #1AFF33", "e. c #00E923", "r. c #28D500", "t. c #28E700", "y. c #29FC06", "u. c #23FF1B", "i. c #27FF17", "p. c #39FD07", "a. c #37F70C", "s. c #23FF24", "d. c #2BFF25", "f. c #2CFF2B", "g. c #25FF2B", "h. c #2CFF33", "j. c #29FF38", "k. c #37FF27", "l. c #33FF33", "z. c #3BFF34", "x. c #3AFF3B", "c. c #31FF3C", "v. c #00C422", "b. c #3DFF42", "n. c #38FF47", "m. c #31FF53", "M. c #00FC56", "N. c #44FF1C", "B. c #48FF28", "V. c #42FF34", "C. c #45FF3D", "Z. c #4BFF37", "A. c #58FF35", "S. c #56FF2E", "D. c #62FF3A", "F. c #43FF42", "G. c #42FF49", "H. c #4BFF45", "J. c #4BFF4B", "K. c #4BFF52", "L. c #48FF54", "P. c #52FF43", "I. c #57FF49", "U. c #51FF59", "Y. c #5BFF54", "T. c #5AFF5B", "R. c #52FF54", "E. c #52FF62", "W. c #5DFF6D", "Q. c #58FF67", "!. c #4DFF69", "~. c #64FF43", "^. c #66FF4A", "/. c #63FF54", "(. c #62FF5C", "). c #6AFF59", "_. c #75F854", "`. c #63FF63", "'. c #6CFF6B", "]. c #69FF64", "[. c #6CFF72", "{. c #66FF76", "}. c #74FF63", "|. c #76FF6A", " X c #73FF72", ".X c #7AFF7B", "XX c #77FF77", "oX c #449DBF", "OX c #459CD3", "+X c #4497C8", "@X c #4EA5D7", "#X c #54A5D6", "$X c #56A9D6", "%X c #55AADA", "&X c #5BA6D4", "*X c #5BAAD5", "=X c #5BAAD9", "-X c #58A6D9", ";X c #5EB0DC", ":X c #5EB0D6", ">X c #58A3CB", ",X c #5CAAE0", ".<.5.i.i.h.c.m.c.b.x.n.b.C.H.A.P.~.^.3X2X3X=X=X=X%X%X=X*X#X%X-X=X=X=X=X3X=X=X7X5X3X3X3X5X7X3X3X7X7X7X7X8X7X8X8X8X8XqX8X8X", "9 9 u u w g 9 u 9 r s s 9 9 r r u s s s s s s s s s g s u h g u s h g d r f l z.].xXxXsXlX.X].Q.W.U.J.x.h.g.5.5.:.;.&.&... . .] ] ` E R R R R Y Y R T W W I W W W W W E T Y R R E ' ' { } ` . .....%.1.1.;.>.>.8.8.s.j.h.c.c.z.x.V.Z.L.P.~.1X*X#X&X-X=X#X=X*X-X=X=X=X*X=X=X7X=XeX7X3X7X7X7XtX3X7X7X5X7X7X5X8X8X8X8X7X8X8X", "9 9 9 9 9 9 9 g 9 s y 9 g r 9 g s s s s i s s u s s g s u g s s s s s h k.XXbXlXzXsX[.'.(.J.J.x.d.6.5.;.&.$...] ] ` ` R R R R Y Y R R Y Y Y R Y Y Y T R Y R Y Y Y Y R Y Y R Y Y Y W Y ~ ~ T Y Y Y W Y Q { ] ...%.1.:.>.3.5.q.g.h.c.n.k.l.l.x.C.I.6X=X#X=X-X#X*X*X=X=X=X=X3X7X=X=X=X7X=X3X7X3XtX7X3X7X8X8X7XrX8X9X8X8X8X8X", "9 9 w 9 9 9 9 9 9 s 9 r 9 y s y u s u i d 5 s h u u h s s g g g d 3.Y.mXvXxXsX X].T.I.V.k.i.>.;.&... .` ` ` R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y R ` ` ` .o.*.-.;.>.6.6.7.h.f.h.c.h.k.z.~.&X-X#X%X%X$X*X*X*X=X=X=X7X7X7X7X7XtX7X7X5X5X7X8X9X8X8X8X8X8X8X8X0X", "9 w 9 9 9 9 9 9 g 9 y 9 9 y r 9 s 9 s s p p s 8 f j 9 g g r l z.gXbXlXzX.X[.T.J.x.d.5.;.-... .] ' ' E R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y K Y Y R Y R ` ] .$.=.:.;.<.6.0.u.g.s.d.g.V.D.&X%X-X-X,XeX-X=X=X2XeX7X=XtX7XrX7X8X7X8X7X9X8X8X8X8X8X8X8X8X8X", "w 9 9 9 9 9 u 9 9 r r s g r u r 9 s 9 9 p p u d f i g e z C.cXxXzXzX[.`.U.x.g.6.;.$...[ ` E E Y R E Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y R Q Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y E T R E E ] [ .$.-.;.:.6.5.u.g.0.7.k.S.>X3X,X-X-X3X=X3X=X3XtX3X7X7X7X7X8X7X7X8X9X8X8X9X8X8X8X0X8X", "9 9 9 w 9 w 9 9 9 r 9 r 9 s g r r r u s s s 9 p g d z Y.cXbXzX.X`.R.H.f.6.;.&...[ ` E R R R E R R Y Y Y Y Y Y Y W K Y Y Y Y Y W Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R T R Y Y R R R R ` ] ..$.-.;.:.<.5.q.0.w.s.B.pX*X3X3X&X3X7X7X3X7X7X7X8X8X8X7X8X9X8X7X8X8X8X8X8X0X0X", "9 9 9 9 9 u 9 u u 9 g 9 s y 9 9 g 9 s u s g s 9 h z.cXxXzX X`.Y.b.d.;.-...] ' R E E R T Y Y K Y Y Y Y Y Y Y Y K Y Y Y Y Y Y Y Y Y Y Y Y Y W R Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y K Y Y Y K Y Y Y Y Y Y Y Y Y R R E ` ] ..$.2.;.9.w.6.i.y.i.B.pX=X=XeX3X3X9XrX7X5XrX8X8X8X8X5X9X8X8X8X8X8X8XqX8X", "7 9 9 w 9 9 u u 9 g r s s r 9 r 9 y r r s 9 s B.xXmXfX X'.J.l.7.:.X.O.` E Y Y Y R Y Y Y Y Y Y Y Y Y K Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Q Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y K Y Y Y Y Y Y Y R ' ` O...2.,.;.<.3.4.9.i.Z.&X7X=X:X9X2X7X8X8X8X8X8X8X8X8X8X8X0X8X8X8X0X0X", "9 w 9 9 9 u 9 u 9 r 9 9 u r g r r 9 s s e i.XXbXzXaX'.Y.h.5.>... .[ Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y K K Y Y Y Y Y Y Y R Y Y Y Y Y R E ` [ ..*.,.1.9.q.9.>.k.A.2X8X7X7X8X7X7X8X8X8X8X8X8X8X8X8X8X0X8X0X0X", "9 w u 9 9 9 u 9 9 r 9 s g 9 s 9 s 9 y z ].bXvX.X'.R.z.8.;.$.] ` R Y R Y Y R Y Y Y Y Y Y Y Y Y Y Y T Y Y K Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y W Y Y Y Y Y K Y Y Y Y Y Y Y W Y Y Y Y T R Y Y Y Y Y Y Y R R ` ] X.=.1.;.;.4.;.3.k.4X7XtX7X5X8X5X8X8X8X8X0X8X0X8X8X8X0X0X0X", "u u u g 9 s u u g 9 r u 8 u s y 9 e Z.vXvXgX XY.F.0.1.$. .` R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R ` . .o.;.:.1.1.-.3.C.5XrX7XrXtX8X8XtX0X8X8X8X8X0X0X8X0X0X", "u u 9 u s u u 9 s 9 s i g u a g l XnXcXsX`.F.s.:.&. .` R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y R W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W ` ` ] ..$.1.:.-.,.4.y.4X2XrXtXyX8X0X8X8X8X8X0X0X0X0X0XuX", "9 u s 9 u u s 9 u p u 9 9 p u a.cXvXcX'.R.f.<.&. .` R Y Y Y Y Y K Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y W R Y Y Y R Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Q W Y Y K Y R ` ' .$.&.-.-.*.*.2.~.8XtXtX5X9X8XyX0X8X0X0XuX0X0XuX", "9 u 9 u 9 8 s s 9 u u p u s G.mXxXhXT.Z.7.-...] R W W R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R R Q } } o.&.-.2.&.&.V.7X5XyXtX0X0X0X8XyX8X0X0XuXuX", "9 9 9 9 u s s s u s u 9 d ).MXMX|.P.z.>.&. .' R R Y Y W Y K Y Y Y K Y Y Y Y W W Y Y Y R Y Y Y Y R Y Y W Y R Y Y R Y Y Y W R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y K Y Y Y Y Y R Y Y R R ] ..%.=.$.%...y.8XtXyX8X8X0XiXiX0X0XuXuXuX", "w 9 w g 9 9 9 9 g f e d XXvXjX}.L.g.;...` R Y R R R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R E ] .O.$.o.o...2.4XyX0X0X0X0X0XiX0X0XiXqX", "u u 9 9 9 u 9 s 9 5 x sXzXXX).I.<.1. .' R Y Y Y Y Y K Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W R Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y K Y R R E Y Y ' ] X...#. .+.&.4X8X8X0X0X0X0XiXuXiXuX", "9 9 9 9 s g 9 g 9 x jXdXhX).n.<.$.] ' R R Y Y Y Y R E Y K Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R W Y Y Y Y Y Y Y Y R Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y W Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y K Y Y Y W Y E E E E R W | Q } .X. .} #.8X8X0X0XyXiX0XuXuXuX", "u u r g e 9 p s l hXfXdXE.f.;.$.] R R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R ` ' ] . .] ` ..4X0X0XtXiX0XqXuXuX", "u w u 9 s w 9 d gX.X XE.h.:.$.] R K Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W R Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y R Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R E ` ] ] ] ' R #.wX7X0XuXuXuXuXuX", "9 g 9 s p p d ].sX.XI.g.:...` R R Y R Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y R Y Y W Y Y Y Y Y Y Y Q Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R ' ` ] ] W E *.qX8XqXiXuXuXiX", "g 9 s r p u C.zX[.R.f.;...` W Y Y Y R Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y R Y Y Y Y Y W Y Y R Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R W Y Y Y Y Y Y Y Y R ' ` ] ` T T 4.qX0X0X0XiXuX", "9 g g 9 u i..X[.Y.x.;...` R Y Y Y K Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y R Y Y Y Y R W R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y R Y Y Y Y Y Y Y R W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R R ` ` R Y K W k.0XyXiX0XuX", "g 9 g g z '. X`.x.:.%.] Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R W Y Y Y Y Y Y Y Y Y W Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y T R Y Y R R R ' W Y K I 4X8XiX0X0X", "r g r s Y.[.`.x.7.$.] R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y R Y Y Y R Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R W Y Y Y Y R Y Y Y Y Y Y Y Y Y Y W Y Y Y Y R Y Y Y Y Y Y Y Y W Y Y Y Y Y Y R W Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y R R R K I H 2.qX8X0X0X", "y g g 4.'.`.J.f.&. .R R Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y W R Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y T Y Y Y Y R E ! E K H H V.0X0X8X", "9 g r (.).E.l.:...` R Y Y Y Y Y Y Y Y Y Y Y Y R W Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y R W Y Y Y Y Y Y Y Y R K Q / W W Y Y R | | ^ Y I Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y E Y W W Y R R Y Y Y Y Y Y Y Y W Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y E T U K @.qXyX8X", "u r i.T.Y.F.6.%.] E Y Y Y Y Y Y Y Y Y Y Y Y W R Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y K E T E E E T Y / I Y R W W P R Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y R W Y Y Y Y Y Y Y R Y Y Y Y Y Y K Y Y Y Y Y Y R W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R W Y Y Y Y Y Y Y Y L C P B.8X8X", "g e I.Y.J.d.-. .E R Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y W Y Y Y Y Y Y Y R W Y W W Y R K Y Y I W Y W K Y R E Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y K R Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W R Y Y Y Y Y Y Y Y Y Y Y Y R W K K J A @.8X8X", "e 4.Y.J.l.6.%.` R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y R E E R Y Y R E ~ E E T E ' T R K Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y I R K E Y ' Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y E R W Y H K C A I.8X", "e k.H.b.s.;.[ R Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y ^ ~ R Y R Y ~ ^ T R Y K Y K W W Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y E T K Y W Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y E Y W Y K J C b t.0X", "f C.F.l.6.&.` R Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y W P Q K K W W ) Y K R R Y R R E Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y K R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y E R K Y K H Z B I qX", ",.C.z.f.:...' R R Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y W R Y Y R Y Y Y W R Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y R Y ' ! Y K Y Y R E Y R K ~ | Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y ` K R Y Y R Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y R W Y Y Y Y Y Y Y T R Y Y T T J b B D.", "4.z.f.q.-.] R Y Y Y R Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y HXLXLXLXLXzXT K T E K KXKXKXJ.Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W R Y Y Y Y Y Y Y Y Y Y Y Y Y R Y ] sX5.K E R Y Y Y Y Y R Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y E E L Z M n p.", "8.k.g.3.$.` R Y Y Y E Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R I Y ' ~ Y Y E q.LXLXLXLXLXGXL L Y Y Y LXLXLXI.K Y K E T R R Y Y W Y W I I Y R E K T K R Y W Y Y R W T E ~ Y / +.J.IXKX9.E Y I T Y Y Y T Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y I Y Y K C B M @.", "8.d.7.>...' Y I Y T E Y Y Y Y W Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y E W W E T Y Y T `.LXLXJXLXLXLXq.H K Y K LXLXLXZ.I P W H Y R Y E Y E R L E T E E ! Y T Q Y E W R Y R K R Y ! Q W <.LXLXLXq.H Y K Y T Y Y Y Y E R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y W Y Y K Z B c ) ", "6.i.<.;...E Y Y Y Y E Y Y Y Y Y Y Y R Y Y Y Y W Y Y Y Y Y Y Q Y Y Y Y R Y Y Y Y Y Y Y Y W W Y E Y R T DXLXLXAXLXLXLX'.C C K H LXLXLXI. .F.F.i.K K K Y ' T [ G.E.T.b.[ ! W R Y 6.q.:.$.` Y o.6.<.w.H *.I.LXLXLXG.>.' K K Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W R Y Y Y Y Y Y Y Y Y Y Y R Y W Y K Y C B c M ", "6.8.:.-. .R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y W R -.LXLXLXL.xXLXLXLXK C C K LXLXLXBXLXLXLXLXAX` Y Y ! !.HXLXLXLXLXHX!.G T Y LXLXLXR.K K T.KXLXLXY U.LXJXLXLXLXLX-.H K K Y K Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y I Y Y K H B v = ", "6.3.:.*. .Y Y Y K Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y T Y R K [.LXLXLX=.j.LXLXLX0.b C H LXLXLXLXLXLXJXLXLX.XP K s.KXPXLXLXLXLXJXLXS.T C LXLXLXI.T K H.LXLXLXC E.LXLXLXLXLXLX1.C H K K Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y I Y Y K C B v # ", ":.>.:.*.[ R Y Y Y Y R Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y W Y E Y Y Y Y DXLXLXKXD Z KXLXLXzX- B B LXLXKXHX .C NXLXLXKXY K GXLXLXCXv.^ FXLXLXHXH Y JXKXLX~.H K J.LXLXLXH X.G.LXLXLXm.2.L D C H K Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Z b v = ", ":.;.;.&.] R Y Y I Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Q Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y E Y Y Y ;.PXLXLXUXm.m.UXLXLXLXP m A LXLXLX!.- : 4.LXLXLX;.*.LXLXLX6.L U 9.LXLXKXe.J LXLXLXZ.C C L.LXLXLXH Z 1.LXLXLX1.: v n B C K K Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y R Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y I Y Y T C n ; & ", ":.-.1...` Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y R W Y Y Y Y Y Y Y Y R Y Y Y Y Y Y I E T Y K R `.LXLXLXLXLXLXLXLXLXLX6.b M LXLXLXV.c - %.LXLXLX*.*.LXLXLXa.M B -.LXLXLXM.D LXLXLXF.B C G.LXLXLXA Z -.LXLXLX#.1 c m B C P K Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y R Y Y K Y Y K C n ; & ", "-.;.&.$.] E Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y E W W K R K DXJXLXLXLXLXLXLXLXLXLXSX; D LXLXLXVX- - w.LXLXLX] E LXLXLXm.Z n i.LXJXLX| n KXLXKXW.A n nXLXLXLXD n t.LXLXLX$.= m : B C K K Y T Y Y Y Y Q Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R W Y Y Y Y Y Y Y Y Y Y Y Y W K B c - # ", "&.&.&...] R R Y E Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y E Y Y R ~ 9.LXLXLXHXbXmXmXmXHXLXLXKXE N LXLXLXLXn.-.HXLXLXDXc n FXLXLXHX>.>.HXLXPXBXc b LXJXLXHX^.|.JXLXJXLXn M &.LXJXJX_.4.- n B C K Y T Y Y Y Y Y Y Y R Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y K K B c > : ", "$.$.$...` R Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y K E T aXLXJXLXaX- - = $ vXLXJXLXn.N LXLXLXHXLXLXLXLXLXz.- - .HXLXLXLXLXLXLXHXo.c - jXLXLXLXLXLXIXLXLXLXc : D KXJXJXLXLXZ n B H K K Y R Y K Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y R W Y Y Y Y Y Y E R Y Y H B - $ P ", "o. .$. .] E Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W K W DXKXLXLXs.- - - = w.LXLXLXAX: KXLXLXkXCXLXLXKXT.- c c - o.bXLXLXLXLXZX#.- c - R AXLXLXLXfX;.LXLXKXv v c n.LXLXLXKX=.n B C K K Y Y Y Y W Y Y Y Y W Y Y Y Y Y Y Y Y R Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y C b - $ @.", "#.] O.] ] E Y T R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W R Y Y Y Y Y Y Y Y Y Y Y Y R E ~ U U B v v - - - ; - , , N N N n N n - ] 2.A - - - v b v , ^ &.&./ : c c v n c c .%.^ v - - n N ; n c b R e.e.T c M B C K T Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y K C c = y.", "#.` ' ] ` R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y R Y Y R W Y Y Y Y Y Y R K W K C C B b c v c b c c c v c c M c b c - m - - c b c b n n D n v c m n v n n n B B c c : b m c v M c c M b J n V - F B C K K Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y K K B c # + A.", "8 Q E E ` R Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R I P P G C b c c b b B B b b n c m m b v b b c b b b c b B B C B B b b c c b b B V B V B M : - - b c : M b C B V B b b b C H K K Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y W Y Y K K C c # + G %X", "u ` T Y R E Y R Y Y Y Y Y R W Y Y Y Y Y R W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y E Y Y R T L C B B B B B C C B Z V Z b B Z Z n n Z v V b B B B H P C B B b V M M M M H H C B B M B b b n M B D B K C C b B C B C K K Y T Y Y Y W Y Y Y Y Y Y Y Y Y Y W Y Y R W Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y K C c # + r. * * G &X=X=X", "u u u } H J K K K Y E Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y R W Y Y Y Y Y Y Y Y T Y Y Y Y Y T Y Y Y Y Y Y Y Y Y Y Y Y T Y Y Y T Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y K Y Y Y Y Y Y Y K Y Y Y Y K Y Y Y Y Y Y Y Y R Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y L C c ; 6 S.=X=X=X", "u u 9 9 W C C H K Y T Y Y Y Y Y Y R Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y K W Y Y Y Y R Y T R Y R Y Y T Y Y Y T Y R Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y K K Y Y Y Y Y Y Y K W Y Y Y Y Y R Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y K Z M - . #.rX&X=X=X", "9 8 9 g 5 K B C H K Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y E Y Y Y Y R T Y Y R T Y Y Y Y Y Y Y Y T Y E Y Y Y Y Y Y Y Y Y Y K Y Y Y Y Y Y Y Y Y Y T R Y Y Y Y Y Y Y Y Y Y K Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y K H A # @ F 6X%X3X=X=X", "9 g s w h { C C S H Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y K Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y E Y Y R Y Y T Y Y T Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y T Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y R Y Y Y Y Y Y R Y Y Y Y H Z = # 2 + B. ) 1X,X=X=X2X2X3X-X#X=X=X", "u u u u 9 u 9 9 u 7 h 5 P c c b B H K H K W K Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y W Y Y K Y K C V - # + ( 5X=X,X=X*X=X=X=X=X=X%X=X", "9 9 u 9 9 9 9 9 9 u 7 w e I - c n B C P K Y K Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y R W Y Y Y Y Y Y R W Y Y Y Y Y Y Y Y Y Y R W Y Y Y Y Y Y Y R Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y L J V c . $ 2 . N.7X=X=XeX6X=X%X,X=X&X*X%X=X", "9 u 9 9 9 9 9 9 9 9 9 q 9 9 Q b - v n B Z L T Y K I Y E E E R Y T Y Y Y Y Y Y Y R Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y R R E Y Y Y Y Y R Y Y R Y Y Y Y I Y U U D c & o 3 + F B.2X=X=X7X7X=X=X%X%X%X=X=X=X$X", "s u 9 w 9 9 9 9 w 9 9 s 0 9 h { B - - c M A C L T E Y Y Y T E Y R Y T Y R R Y R Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y T Y T Y Y Y Y T R K R R Y Y Y I H J B = # X $ $ ) D.7X7XtX3X3X3X=X=X=X=X=X=X-X=X%X", "u u u 9 9 9 9 9 9 9 9 9 8 9 u 9 5 I c ; = m A C U K K Y K Y Y Y Y Y Y Y Y T Y Y Y R T Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y R Y E Y Y T R Y Y R W K H J B 1 < $ + # # 2.qX2X7X7X3X3X7X=X3X*X=X=X=X=X%X=X=X", "u u 9 9 9 9 9 9 9 9 8 9 u u 7 i s 8 { c v , v m M A H K K Y Y Y T Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y R Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y R Y Y E E Y R W K K H C B n - < o @ @ / A.tX3X3XyX=XrX7X6X=X=X=X=X=X=X-X-X*X#X", "w 9 9 9 9 w 9 9 9 9 9 9 8 9 u 9 7 u p s Y - = - : M B C H K K K Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y T Y Y Y Y Y K K C B n = & X 2 @ F p.8X5X7X=XtX2X7X3X7X7X7X3X3X=X=X=X=X=X#X%X", "w 9 9 9 9 9 9 9 9 9 9 q u 8 8 9 9 a k a p @.S = , , v n B B H K K Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y H H B c - # @ o @ * #.^.8X=XrX3X7X:X7X3XtX3X;X=XeX=X3X=X=X=X=X=X-X", "9 9 9 9 9 9 9 9 9 9 9 w 7 9 9 8 7 7 p 9 7 i u { B - = - c b b B C H K K K Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y T Y Y K K J C b c = # # % @.S.8X7XtX7X7X5X8X:X7X7X5XeX7X3X3X;X3X=X=X*X=X=X=X", "9 9 9 9 w 9 9 9 9 9 9 9 9 w 9 w 9 9 8 5 9 9 7 i u W b # # - c n V B C K K K K Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y Y Y K K H C B - - # @ @ # C B.qX4X7XrX7XtX3X7X3X5X3X3X3X3X5X3X7X=X7X=X=X*X&X=X=X", "9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 q 9 9 9 ( M # # ; ; c b b C J H H K Y Y Y Y R R T Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y W Y Y R Y R Y Y T Y Y Q W Y Y Y Y R Y Y Y T R R E E T ~ E T K H K H B M - < * $ + . . / N.7X5XtXtXtX7X7X5X5X3X2X7X3X3X3X5X3X3X=X7X=X7X3X=X=X=X=X", "7 7 9 9 9 7 9 7 9 9 9 9 7 9 9 9 9 9 9 9 9 9 w 9 9 9 9 0 9 { M & # = = c c b B C C H L Y K Y T T R Y Y Y Y K Y Y Y Y Y Y Y Y Y Y Y Y Y R Y Y T Y Y R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y E Y T Y Y Y Y Y Y Y Y Y Y K Y Y Y Y Y I K I W I P P J B b c > * $ $ < @ @.A.7X7X5X7X7X8X8X7X7X7X7X7X7X7X3X7X5X3X3X3X7X3X3X3X=X3X=X=X=X", "9 9 9 9 9 9 9 9 9 9 w i w 9 9 7 7 9 i q 9 9 7 9 9 7 9 a 7 7 9 { C # # # = = - v B B B C H K Y K K Y R Y Y Y Y Y Y Y Y Y Y Y Y T Y Y T Y E Y E Y T R T Y Y Y Y Y T Y Y Y T Y Y T Y E E Y T Y Y R Y T Y Y Y R Y Y Y W K L T K K H C b b v - # @ # @ * 3 & r.S.3XtX3X7XyX7X7X8X8X7X7X5X5X7X7X7X5X7X7X3XtX7X3X7X3X=X3X=X3X3X=X", "9 w 7 9 9 9 u 9 7 9 7 9 7 9 9 9 w 9 9 9 7 9 7 9 9 7 7 8 7 9 a w 9 @.W = # # # = = - c M b B C H H K K K K Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y T Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y T Y Y Y Y T R Y Y Y T Y Y Y Y E T Y Y Y K K K K C V n n v ; # + @ @ # / y._.3X=X3XeX7X9X4X8XtX8X7XtX8XrX8X7X8X8X7X7X7X7X7X7X5X7X3X3X3X=X=X=X=X", "9 7 9 9 q u 7 7 u w 9 9 u w i 9 w i 9 9 9 9 9 9 9 9 9 9 7 9 9 8 9 9 9 u { P & @ = # - = - c v n B C H J H K K K K Y K Y Y Y R Y Y Y R Y Y R Y Y R Y Y Y R Y Y Y Y R Y Y Y Y Y Y Y Y R Y Y Y Y Y Y K Y L K H H B A B m : : - # @ @ @ % < + M r.A.7X=X%X=X3X6X3X7X7XrX7X8X7X8X7X7X8X8X8X5X9X7X8X5X7X7X7X7X3X7X3X7X2X7X=X7X", "7 9 9 7 9 9 9 9 u 7 7 9 w 7 9 9 9 9 9 7 9 w u w 9 7 7 q w 9 7 9 9 8 u p q q 9 { S # X # # # ; = ; v n b B B B Z C H H K H K K K K Y K Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y K Y Y K K K K K K J H C B B B b c c = # = # X X + # + M @.N.=X7X=X*X=X3X3X=X5X7X7X7XyX5X8X8X8X8X5X8X8X8X8X8X8X8X7X5X7X7X7X7X7X3X7X3X3X7X=X", "7 9 9 9 7 9 9 9 w 9 u 9 9 9 7 9 w 7 9 9 w u w 9 9 9 8 q w 7 9 9 7 7 9 9 9 9 7 7 i 0 @.P b + . + # $ * = # = - - c c b b b B B B B C C H J H J H J K K K H H K H K H K H H H H J C C C C Z B b b b c c - - = # # + # @ # $ @ X & G 4.Z.=X3X2X=X=X=X=X4X=X3X2X7X3X5X8X2X5X8X8X8XtX8X8XtX8X8X0XtX8X8X7X5X7X7X7X3X7X=X7X7X=X;X", "9 9 9 7 u w 9 7 9 7 7 9 7 9 u 9 9 9 9 w 9 9 u w 9 9 9 9 7 9 7 q 9 u 7 8 9 9 9 9 9 7 7 9 7 4 ) A = % + @ # # # # # # = - - - c - b c b n b n b B b B B B B V B V b V V B V b b c c c c c - ; - - # > # + + + + @ @ C @.a.#X=X$X*X:X*X=XeX,XeX=X=X;X=X3X3X7X7X9X5X8X8XtX8X8XtXyX8X8X8X0X8X8X8X7X7X7X4X5X7X3X3X7X7X7X2X", "9 9 9 9 9 9 9 9 9 9 9 9 9 w u 7 9 9 9 9 u u 9 9 9 w 9 9 9 9 9 9 9 i 9 9 9 9 9 8 7 8 7 9 7 9 9 8 9 0 ( S m = # # @ + @ + # # # & # = = = = = > - > = = = = - = = = - = - = # # # $ # + $ 2 2 + @ . @ @ > b Q t.p.$X#X$X$X%X=X=X$X=X%X=X=X=X=X7X3X3X3X5X7X3X5X5X8X5X8X8X8X8X8X8X0X0X8X8X8X8X8X8X9X8X7X7X7X7X7X5X3X7X7X", "9 9 9 9 9 9 9 9 9 9 9 9 9 w 9 7 9 9 9 w 9 9 9 u 9 9 9 9 9 9 9 9 7 9 7 9 9 9 9 7 7 7 9 7 7 7 7 7 9 8 0 9 7 8 0 ( I S m = # + # + @ + + + % . % # + @ # + @ + $ @ @ + @ + @ O < + < F K } t.p.oX@X@X@X#X#X$X#X#X=X%X%X=X=X=X=X=X=X=X7X=X7X7X7X7X7X8X8X8X9X5X8X8X0X8X8X8X8X8X8X8X8X8X9X9X7X5X8X7X7X7X7X5X5X7X", "9 9 9 9 9 9 9 9 9 9 9 9 7 u 9 9 9 9 9 9 9 9 9 u w 9 9 9 9 9 9 9 9 9 9 9 9 9 9 7 9 7 7 7 7 7 7 0 7 9 7 q k q 7 7 7 7 8 7 0 4 ( W P P G c v v = $ @ @ @ @ + + + + + @ + # = - m M A ) r.t.p.+X+X@XOXOXOXOX@X#X@X@X@X#X#X#X#X*X*X=X%X%X=X=X7X=X7X=X7X=X=X7X7X5X8X8X8X7X8X8X8X8X8X0X8X8X0X8XtX8X8X8X8X8X8X7X8X8X7X7X7X8X8X" }; micropolis-activity/images/tiles-129.xpm0000664000076400007640000001030710724145723020460 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "67 57 7 1", " c black", ". c #3F3F3F3F3F3F", "X c #585858585858", "o c #3F3F3F3FFFFF", "O c #0000BFBF0000", "+ c #BFBF7F7F3F3F", "@ c #DFDFDFDFDFDF", /* pixels */ " ", " @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ", " @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ X ", " @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ XX ", " @@@ XXX ", " @@@ +++++++++++++++OO++++++ooo++++++++++++ooo +++++++++++++++ XXX ", " @@@ ++ + ++ + ++++OOOO+++++ooo ooo++++++OO+ooo+++++++OO+O+ + XXX ", " @@@ ++ + ++ + ++++OOO+++++++ooooooooo+++O++ooo+++++++OOOO XXX ", " @@@ ++ + ++ + ++++++++ +++++++ +++ooo+++O+ ooo++ooo+++++++ XXX ", " @@@ +++O++++++++++++++++oo+++O++oo ooo o+++++++ + XXX ", " @@@ ++....... +++OOO+++++ +++OO++++oo+++OO++ooooooooooo+ + + XXX ", " @@@ . +++OOO+ ++++OOOOOOO++oo+++++++oooo+ +ooooo++ ++ XXX ", " @@@ +++++++++ +++O++++++OOOOO++++++oo++ ++++ooo+++++o+oo + ++ XXX ", " @@@ +++++oooo +++OOO+++++++ooooo+++o+++ ++++ ++++++++++o++ ++ XXX ", " @@@ ++ oooo+o o++++OO+++++o oooooooo ++ ++++ +++++++++oo + ++ XXX ", " @@@ +oooo +++ oo+++++++++oo +++oooo ... . ++++++oooo++ ++ XXX ", " @@@ oo ++++++ ooo+++++++oo. ..+ +++.. ..... ++++ooooo+++ ++ XXX ", " @@@ + +++++++ +oooo++++ooo. +. ++++++ +++oooo ++++ ++ XXX ", " @@@ +++++++++ ++ooooooooo+. + ++....+++++ +++++ oooo+++++ ++ XXX ", " @@@ + ++++ ++++oooooo+.. o++ooooo+++++ +++ XXX ", " @@@ +++++ +++ +++++++++.... ..++....oooooooooooooo +++++ ++++ XXX ", " @@@ ++++++ ++ ++++++++++++ +...++ooooooooooooooo . ++++ XXX ", " @@@ +++++++ ++++. . ...+oooooo .......ooo.. .... +OO+ XXX ", " @@@ ++++++++ +++++++ .. .. ..ooooo . .. . .. . +OO+ XXX ", " @@@ ++ ++++++ +++++++ . . .+oooo ... . . ...... .. . ++++ XXX ", " @@@ ++++++O++ ++++++ .... +oooo ...... . .... . .. . ++ XXX ", " @@@ +++ +++++ . . oooo . .. .. .. .. ...... + XXX ", " @@@ +++++++++ ...... ooo ... ..... ......... +++ XXX ", " @@@ ++O++O+++ ... . ........ ++++ XXX ", " @@@ +OOO+++++ . .. . .... ooo... .... ++++ XXX ", " @@@ +OOOO+O++ . .. . ooo.............. ..........OO+++ XXX ", " @@@ +OO++++++ . .. . .... . oo .. ... . O+OO+ XXX ", " @@@ ++++ ++++ ... . .. . oooo........ . O++++ XXX ", " @@@ + +++++++ . . . . oooo .... .OOO++ XXX ", " @@@ +++++++++..... . . .. ...ooooooo....... ... .O+O++ XXX ", " @@@ +++++++++..... . ...... ...ooooooo.... . . . .OOO++ XXX ", " @@@ ++++ ooo. . . .... . . ++++ XXX ", " @@@ ++++++ ++.. . +++ . ........ ... . . . .. . ++++ XXX ", " @@@ +++++++++..... + ++. ....+... .o... . .. . . . ++++ XXX ", " @@@ +++++++++ .... + oo. . . .. .. . ++++ XXX ", " @@@ +++++++++ .... O O+ ... ..+o oooooo. ... ... ..... XXX ", " @@@ +++++++++ . ... OO. .+. . oo ooooo... . ..... ..... ++++ XXX ", " @@@ +++ +++++ . ... OO..+.+ .ooo o + ... ...... OOOOO++++ XXX ", " @@@ ++++ +.+.+ .oo. ..... . ..OO OOOOOO+ XXX ", " @@@ +++++++++ .... . +.... .ooo . ... .......OOOOOOOOOOO XXX ", " @@@ +++++++++ ..... . O..+. .ooo... ..... .. .. ... OO++++ XXX ", " @@@ +++++++++ .... ooooo.. ...... ........oooooooo++ XXX ", " @@@ +++++++++++++++ +++.+..+ooooo . ...oooo .....ooooooooooo XXX ", " @@@ +++++++++++++++ ++..++O+ ooooooo oooooooooooooooo+++oooo XXX ", " @@@ +++++++++++++++ ++.+++O++++ooooooooooooooooooooo+++++oooo XXX ", " @@@ +++++++++++++++ +++++OO++++++oooo+++++ooooooo++++++++++++ XXX ", " @@@ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ XXX ", " @@@ XXX ", " @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX ", " @ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " " }; micropolis-activity/images/iccomhi.xpm0000664000076400007640000000421210724145723020440 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "34 50 11 1", /* colors */ "` c #000000", "a c #0000AF", "b c #00FF00", "c c #5D5D5D", "d c #007F00", "e c #BF7900", "f c #4F4FFF", "g c #FFFFFF", "h c #7F7F00", "i c #BFBFBF", "j c #0000FF", /* pixels */ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii", "iffffffffffffffffffffffffffffffffc", "iffffffffffffffffffffffffffffffffc", "iffccccccccccccccccccccccccccccffc", "iffcggggggggggggggggggggggggggiffc", "iffcgggggghhhhhhhhhhhhhgggggggiffc", "iffcgggggghhhhhhhhhhhhhhggggggiffc", "iffcgggggghhcccccccccccccgggggiffc", "iffcgggggghhc`````c`````cgggggiffc", "iffcgggggghhc`````caaaaaaaggggiffc", "iffcgggggghhcccccccajjjjjjjgggiffc", "iffcgggggghhc`````cajaajaajgggiffc", "iffcgggggghhc`````cajaajaajgggiffc", "iffcgggggghhcccccccajjjjjjjgggiffc", "iffcgggggghhc`````cajaajaajgggiffc", "iffcgggdddddddddd`cajaajaajgggiffc", "iffcgggdbbbbbbbbbbcajjjjjjjgggiffc", "iffcgggdbccbccbccbcajaajaajgggiffc", "iffcgggdbccbccbccbcajaajaajgggiffc", "iffcgggdbbbbbbbbbbcajjjjjjjgggiffc", "iffcgggdbccbccbccbcajaajaajgggiffc", "iffcg`fdbccbccbccbcajaajaajffgiffc", "iffcg`fdbbbbbbbbbbcajjjjjjj`fgiffc", "iffcg`fdbccbccbccbcajaajaaj`fgiffc", "iffcg`fdbccbccbccbeajaajaaj`fgiffc", "iffcg`febbbbbbbbbbeejjjjjjj`fgiffc", "iffcg`feeeeeeeeeeeeeeeeeeee`fgiffc", "iffcg`feeeeeee`fffffeeeeeee`fgiffc", "iffcg`feeeeee`ff```ffeeeeee`fgiffc", "iffcg`feeeee`ff`eee`ffeeeee`fgiffc", "iffcg`feeeee`ffeeeee``eeeee`fgiffc", "iffcg`feeeee`ffeeeeeeeeeeee`fgiffc", "iffcg`feeeee`ffeeeeeeeeeeee`fgiffc", "iffcg`feeeee`ffeeeeeeeeeeee`fgiffc", "iffcg`feeeee`ffeeeeeeeeeeee`fgiffc", "iffcg`feeeee`ffeeeeeffeeeee`fgiffc", "iffcg`feeeee``ffeeeff`eeeee`fgiffc", "iffcg`feeeeee``fffff`eeeeee`fgiffc", "iffcg`feeeeeee``````eeeeeee`fgiffc", "iffcg`feeeeeeeeeeeeeeeeeeee`fgiffc", "iffcg`feeeeeeeeeeeeeeeeeeee`fgiffc", "iffcg`feeeeeeeeeeeeeeeeeeee`fgiffc", "iffcg`feeeeeeeeeeeeeeeeeeee`fgiffc", "iffcg`fffffffffffffffffffffffgiffc", "iffcg````````````````````````giffc", "iffcggggggggggggggggggggggggggiffc", "iffciiiiiiiiiiiiiiiiiiiiiiiiiiiffc", "iffffffffffffffffffffffffffffffffc", "iffffffffffffffffffffffffffffffffc", "iccccccccccccccccccccccccccccccccc" }; micropolis-activity/images/tiles-30.xpm0000664000076400007640000000300610724145723020365 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "34 34 9 1", " c black", ". c #5D5D5D5D5D5D", "X c gray50", "o c blue", "O c #BFBF79790000", "+ c red", "@ c #FFFF77770000", "# c gray75", "$ c gray100", /* pixels */ "##################################", "#OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.", "#OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.", "#OO............................OO.", "#OO. #OO.", "#OO. $ $ $ $ $ $ $ $ $ $ $ $ #OO.", "#OO. $ $ $ $ $ $ $ $ $ $ $ $ #OO.", "#OO. $ $ $ $ $ $ $ $ $ $ $ $ #OO.", "#OO. $ @@+++++@$ $ $ $ $ $ $ #OO.", "#OO. $ $+@@@@@@@ $ $ $ $ $ . #OO.", "#OO. $ ++@@$ $ $ $ $ $ $ X.$ #OO.", "#OO. $ $++@@@$ $ $ $ $ X.$ #OO.", "#OO. $ ++@@oo$ $ $ $ $ XX. $ #OO.", "#OO. $ $++@@o$ $ $ $ $ .$ #OO.", "#OO. $ ++@@@@@++++ +++ . $ #OO.", "#OO. $ $++@@@@@@@@@@@@@$ .$ #OO.", "#OO. $ ++@@@@@@@@@@@@@. . $ #OO.", "#OO. $ $ . @. @. @. XXX .$ #OO.", "#OO. $. ............ .X . $ #OO.", "#OO. $ .... . . .... .$ #OO.", "#OO. .... . . .... . $ #OO.", "#OO. $ .. .. .. .. .. .$ #OO.", "#OO. .. .. .. .. .. XX. $ #OO.", "#OO. $.... . . .... X.$ #OO.", "#OO. .... . . .... $ X.$ #OO.", "#OO. $ . ............ .$ $ . #OO.", "#OO. $ $ . $. $. $. $ $ $ $ #OO.", "#OO. $ $ $ $ $ $ $ $ $ $ $ $ #OO.", "#OO. $ $ $ $ $ $ $ $ $ $ $ $ #OO.", "#OO. #OO.", "#OO.###########################OO.", "#OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.", "#OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.", "#................................." }; micropolis-activity/images/obj1-1.xpm0000664000076400007640000000250110724145723020015 0ustar simcitysimcity/* XPM */ static char * obj1_1_xpm[] = { "32 32 7 1", " c None", ". c #BFBFBFBFBFBF", "X c #000000000000", "o c #FFFFFFFFFFFF", "O c #7F7F7F7F7F7F", "+ c #FFFF00000000", "@ c #3F3F3F3F3F3F", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ................... ", " XXoooooooooooooooooooX ", " .XOo+ooooooooooooooo+oX@ ", " ..OXooooooooooooooooooo@@ ", " ..XXoooooooooooooooooooX@ ", " ..XXX..@@..@@..@@..@@.XX@ ", " ...XOO@@OO@@OO@@OO@@OOOO@ ", " ..OOOOOOOOOOOOOOOOOOOOO@ ", " OO@@@@OOOOOOOO@@@@OO@ ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; micropolis-activity/images/tiles-104.xpm0000664000076400007640000000520310724145723020450 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "48 48 6 1", " c black", ". c red", "X c #FFFF7F7F0000", "o c yellow", "O c gray100", "+ c None", /* pixels */ "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "+++++++++++++++++++++++++++++++++++++XXXXX++++++", "+++++++++++++++++++++++++++++++++++XXXXXXX++++++", "++++++++++++++++++++++++++++++++++XoXXXX.X++++++", "+++++++++++++++++++++++++++++++++XoOXXXoX.++++++", "++++++++++++++++++++++++XOX+++++XXOXXXoo.X++++++", "++++++++++++++++++++++XOXXX++++XXXXXXXX.X+++++++", "+++++++++++++++++++++XXXXXXXXXXXXXXXXX.X++++++++", "+++++++++++++++++++++XXXXXXXXXOXXXXXX.X+++++++++", "+++++++++++++++++++++XXXXXXXXXXXXXXX...+++++++++", "+++++++++++++++++++++XXXXXXOXXXXXXX...++++++++++", "++++++++++++++++++++++XXXXXXXXXXXX...+++++++++++", "++++++++++++++++++++++XXXXXXXXXXX...++++++++++++", "++++++++++++++++++++++XXXOXXXXXX.X.X.+++++++++++", "+++++++++++++++++++OXXXXXXXXXXX.X.X.X..+++++++++", "+++++++++++++++++XOXXXOXXXXXXX.X.X.X.X++++++++++", "+++++++++++OXX++XXXXXOXXXXXXXXX...X.X.++++++++++", "++++++++++XXXXXXXXXXXXXXXXXXXX.....X..++++++++++", "++++++++++OXXXXXXXXOXXXXXXXXX........+++++++++++", "+++++++++OXXXXXXXXXXXXXXXXXX.........+++++++++++", "+++++++++XXXXXXXXXXXXXXXXXX.X..++...++++++++++++", "+++++++++XXXXXXXXXXXXXXXXXXX..++++++++++++++++++", "++++++++++XXXX++XXXXXXXXXXX.X.++++++++++++++++++", "+++++++++++++++XXXXXXXX..X.X..++++++++++++++++++", "++++++++++++++XXXXXXXX..X.X...++++++++++++++++++", "+++++++++++++XXXXXX.X..X.X...+++++++++++++++++++", "++++++++++++XXXXXX.X. ..X...++++++++++++++++++++", "++++++++++++XXXXX.X.+..X.X++++++++++++++++++++++", "+++++++++++XXXXX.X.++...X.++++++++++++++++++++++", "++++++++++XXXXX.X.++......++++++++++++++++++++++", "+++++++++XXXXX.X.++++.....++++++++++++++++++++++", "+++++++++XXXX.X.++++++...+++++++++++++++++++++++", "++++++++XXXX.X.+++++++++++++++++++++++++++++++++", "++++++++XXX.X.++++++++++++++++++++++++++++++++++", "++++++++XX.X.+++++++++++++++++++++++++++++++++++", "++++++++XXX.X+++++++++++++++++++++++++++++++++++", "++++++++.XXX.++XX.++++++++++++++++++++++++++++++", "+++++++++.XXXXX..+++++++++++++++++++++++++++++++", "++++++++++......++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++" }; micropolis-activity/images/obj5-13.xpm0000664000076400007640000000515510724145723020114 0ustar simcitysimcity/* XPM */ static char * obj5_13_xpm[] = { "48 48 6 1", " c None", ". c #FFFF7F7F0000", "X c #FFFFFFFFFFFF", "o c #000000000000", "O c #FFFF00000000", "+ c #FFFFFFFF0000", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " . ", " . . ... ", " ... ......... ", " .. . .X .......... ", " ... ........ ...XX.... ", " ... ....X..X. ......o. . ", " ... ....X..X. ...XXX..X.XX. . ", " ... .........X.....X.............. ", " ... ....X....X..................... ", " .. ...X.X..........................O ", " ... . X........................O+++O.. ", " .... .. .....X.........................O..O.. ", " O....XX.X.X......................O.OOOOOOOOO ", " O.............................O.OO.O O .. ", " OO................................. ", " OOO.OO..........O......O.OO.OO.OO ", " O OOOOO.OO.OO........OO.OO.OOOOO ", " OO OOOOO OOOOOO.OO.OOOOOOO.O. ", " OO.OO.OO.O OO.O ", " OOO......O OOOO ", " OOOO..OOOO OOOO ", " OOOOOOOOO OOOOO. ", " OOOOO O OOO ", " OOOO ", " OOOO ", " O ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; micropolis-activity/images/tiles-85.xpm0000664000076400007640000000526310724145723020406 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "48 48 9 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c #66666666E6E6", "O c red", "+ c yellow", "@ c gray75", "# c gray100", "$ c None", /* pixels */ "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$O###$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$###X$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$####@$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$####@$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$@####@$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$###@#@$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$.#####X$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$X######$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$.@#####X$$$$$$$$$$$$$$$$@@@", "$$$$$$$$$$$$$$$$$$$$$X######@$$$$$$$$$$$$$$$@##.", "$$$$$$$$$$$$$$$$$$$$.@####@#@$$$$$$$$$$$$$$$@##X", "$$$$$$$$$$$$$$$$$$$$X#######@$$$$$$$$$$$$$$@###X", "$$$$$$$$$$$$$$$$$$$.@#######X$$$$$$@O@@@$$$@###X", "$$$$$$.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$$@####.", "$$$$.@.##################################@X@X@X+", "$$$..#. #################################@@@@@@.", "$$$$.##.#o o o o oo o o o o o o o o oo oo.@@###X", "$$$$$$@@@@@@@@@@@@@.@@@@@@@@@XXXXXXXXXXX$$$@###X", "$$$$$$$$$$$$$$$$$$$.@@@@@@@@X$$$$$$@O@@@$$$$###X", "$$$$$$$$$$$$$$$$$$$$X#######@$$$$$$#O###$$$$@##.", "$$$$$$$$$$$$$$$$$$$$.@####@#@$$$$$$$$$$$$$$$$@#@", "$$$$$$$$$$$$$$$$$$$$$X######@$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$.@#####X$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$X######$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$.#####X$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$#####@$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$@##@#@$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$####@$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$####@$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$###X$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$O###$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" }; micropolis-activity/images/ind.xpm0000664000076400007640000000517110724145723017604 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "48 48 3 1", /* colors */ "` c #000000", "a c #FFFF00 m #000000", "b c #CC7E66 m #ffffff", /* pixels */ "`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "`a`````````````````````````````````````````````a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbb`aaaabbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbb``aa`bbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbb`aabbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbb`aabbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbb`aabbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbb`aabbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbb`aabbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbb`aabbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbb`aabbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbb`aabbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbb`aaaabbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbb`````bbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "````````````````````````````````````````````````" }; micropolis-activity/images/tiles-92.xpm0000664000076400007640000000532010724145723020376 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "48 48 10 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c #00000000E6E6", "O c red", "+ c #FFFF7F7F0000", "@ c #CCCC7F7F6666", "# c gray75", "$ c gray100", "% c None", /* pixels */ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%o%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%o%%%%%%%%%%%%%%%%%o%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%o%%%%%%%%%%%%%%%o%%o%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%o%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%o%%%%%%%% @@@. %%%%%%%o%%%%%%%%%%%%%%%%%", "%%%%%%%%%%o%%%% @@@@@@##%%%%%%%%%o%%%%%%%%%%%%%%", "%%%%%%%%%%%%o% @@@@@@#X#X%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%% .@@@@#X#XXX%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%% @@@#X#XXX %%%%o%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%% @@#X#XXX . %%%%%%o%%%%%%%%%%%%", "%%%%%%%%%%%%%% XXXXXXX . %%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%% ...XXX+ %%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%O . .XX + OX%%%%%%%o%%%%%%%%%%", "%%%%%%%%%%%%%%%%O .X. ++ X %%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%O X .X. . %%%%%%%%%%%%%%", "%%%%o%%%%%%%%%%%%%O .X. . %%%%o%%%%%%%%%", "%%%%%%%%o%%%%%%%%%%O X .XXX+ %%%%%%%%%%%%%%", "%%%%%o%%%%%%%%%%%%%%O .XX + OX%%%%o%%%%%%%%", "%%%%%%%%%%o%%%%%%%%%%O X .X. ++ XX%%%%%%%%%%%%", "%%%%%%%%%%%%%%o%%%%%%%O .X. XXX%%%%o%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%O X .X. XX$X%%%%%%%%%%", "%%%%%%%%%%%%o%%%%%%%%%%%O .XXXXXXX#%o%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%O X .XX$XX##%%%%%%%%%", "%%%%%%%%%%%%%%%o%%o%%%%%%%O .XXX#X# %%o%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%O X .X#X#@@ %%%%%%%", "%%%%%%%%%%%%%%%%%%%%%o%%%%%%O #X#@@@@ %%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%O X ##@@@@@.%%%%%%", "%%%%%%%%%%%%%%%%%%%%%o%%%%%%%%O #@@@@@.@ %%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%o%%%%%%O @@@@@@@ %%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%o%%%%O @@.@@@.%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%O @@@@.@ %%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o%o%%O .@@@@ %%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o%%O .@@ %%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%O %%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" }; micropolis-activity/images/tiles-152.xpm0000664000076400007640000000432010724145723020452 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "37 47 12 1", " c #7F7F7F7F0000", ". c blue", "X c #BFBF00000000", "o c #CFCF00000000", "O c red", "+ c #BFBFBFBF3F3F", "@ c #FFFFBBBB0000", "# c #FFFFBFBF7F7F", "$ c yellow", "% c #FFFFFFFF7F7F", "& c gray75", "* c #FFFFBFBFFFFF", /* pixels */ "&&&&&&&& &&&&&", "&&&&&&& ######################## &&&&", "&&&&&& ###### ########@@@@# &&&", "&&&&& ##### ooooooo #####@%%%%@# &&", "&&&&& #### ooooooooooo ####@%%%%@# &&", "&&&&& ### ooooooooooooo ###@%%%%@# &&", "&&&++++++++ooooooooooooo ##@%%%%@# &&", "&&&& ### ooooooooooooooo ##@%%%%@# &&", "&&&+++++++ooooooooooooooo ##@@@@## &&", "&&&& ## ooooooooooooooooo ###XX### &&", "&&&&& # ooooooooooooooooo ##XOOX## &&", "&&&&++# ooooooooooooooooo #XOOOOX## &", "&&& ++# ooooooooooooooooo ##XXXX### &", "&&& ++# ooooooooooooo+++++++++++++++ ", "&&& ++## ooooooooooooooo ########## &", "&&& ++## ooooooooooo++++++++++++++++ ", "&&& ++### ooooooooooooo ########### &", "&& #++#### ooooooo++++++++++++++++++ ", "& ###+##### ooooooooo ############# &", "++++++++++++++++++++++++++++++++++++ ", "++++++++++++++++++++++++++++++++++++ ", "& ###+############################# &", "&& #++#+++++++#X#####X##X##X##X##X## ", "&&& ++#+$+$$$+XOX###XOXXOXXOXX*XXOX# ", "&&& ++#+$+$$$+XOX###XOXXOXXOXX*XXOX# ", "&&& ++#+++++++#X#####X##X##X##X##X## ", "&&& ++############################## ", "&&& ++############################## ", "&&& +XXXXX++++++++++++++++++++++++++ ", "&&& +XOOOX++++++#######XXXXXXXXX### &", "&&& +XOOOX++++++######X%%%%%%%%%X# &&", "&&& +#XOOX+++++######X%%%%%%%X%%%X &&", "&&& +##XXX+++++######X%%%%%%X%%%%X &&", "&&& #+####++++#######X%%%%%%X%%%%X &&", "&&& #+###########%%##X%%%%%X%%%%%X &&", "&&& #+##########%%%%##XXXXXXXXXXX# &&", "&&& #+#########%%XX%%#####XX####### &", "&&&& #+#########XOOX#####XOOX#$$### &", "&&&&& #+########XXXX#####XXXX$$$...+ ", "&&&&& #+####################$$....# &", "&&&&& ##+###################....$$++ ", "&&&&&& #+##################...$$$## &", "&&&&&&& #+####################$$#### ", "&&&& ##+######################### &", "&&& ######++++++++++++++++++++++++++ ", "&&& ############################### &", "&&&& &&" }; micropolis-activity/images/obj5-3.xpm0000664000076400007640000000515410724145723020032 0ustar simcitysimcity/* XPM */ static char * obj5_3_xpm[] = { "48 48 6 1", " c None", ". c #FFFFFFFFFFFF", "X c #FFFF7F7F0000", "o c #FFFF00000000", "O c #000000000000", "+ c #FFFFFFFF0000", " ", " ", " ", " ", " ", " ", " .XXXX ", " .XXXXXXoo ", " XXXXXXXXXoo ", " .XXXXXooXXXoo XoXoXo ", " XXoooooXoXXXoo XXXoXoXo ", " XXoo oooXXXXoo XXXoXoX ", " XXoo oooXXXXoo XoXo ", " Xoo ooXXXXXoo oXooo ", " XXo ooXXXXXoo Xoooo ", " Xo ooXXXXXXoXXoXooo ", " Xo ooXXXXXXoXXoXoo ", " o oX.XXXXXoXXooo ", " o XXXXXXXXXoXXoo ", " XXXX.XXXXXooooo ", " XXXX.XXXXXXoooo Xo ", " .XXXXXXXXXXXXooo oXo ", " .XXXXXX.XXXXXXXoo Xooo ", " .XXoXXXXXXXXXXXXoo oXooo ", " XXXXoXXXXXXXXXXXXoXoXoooo ", " XXoXoXXX.XXXXXXXXoXoXo ", " XXXoXoXXXXXXXXXXXXoXoo ", " XXooooXXX.XXXXXXoXooo ", " Xooo XXXXXXXXXXXoXoo ", " oo XXX.XXXXXoXooo ", " XXXXXXXXXooo ", " XX.XXXXXXoo ", " XX.XXX.XXXXoXo ", " X.XXXXX.XXXXXo ", " X.XoXXXXXXXXooo ", " XXXXoooXXXXXXoo ", " XXXooooXXXXXXoo ", " XXXoOooXoXXXooo ", " XXXoo oo+ooXoo+o ", " XXoo oo++XX++o ", " XoXoo ooXXXXXo ", " Xoo oooXXoo ", " oooo ", " ", " ", " ", " ", " "}; micropolis-activity/images/icroadhi.xpm0000664000076400007640000000314310724145723020611 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "56 24 5 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #5D5D5D", "c c #FFFFFF", "d c #BFBFBF", /* pixels */ "dddddddddddddddddddddddddddddddddddddddddddddddddddddddd", "dbbbbccccbbbbccccbbbbccccbbbbccccbbbbccccbbbbccccbbbbccb", "dbbbbccccbbbbccccbbbbccccbbbbccccbbbbccccbbbbccccbbbbccb", "dccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccb", "dccbccccccccccccccccccccccccccccccccccccccccccccccccdccb", "dccbccccccccccccccccccccccccccccccccccccccccccccccccdbbb", "dccbccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccdbbb", "dbbbccbcaad`bbbbbbbbbbbbcaad`bbbbbbcaad`bbbbcaad`bccdbbb", "dbbbccbcaad`bbbbbbbbbbbbcaad`bbbbbbcaad`bbbbcaad`bccdbbb", "dbbbccb`````bbbbbbbbbbbb`````bbbbbb`````bbbb`````bccdccb", "dbbbccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccdccb", "dccbccbbbbccccbbbbccccbbbbccccbbbbccccbbbbccccbbbbccdccb", "dccbccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccdccb", "dccbccbbcaad`bbbbbcaad`bbbbbbbbbcaad`bbbbbbcaad`bbccdbbb", "dccbccbbcaad`bbbbbcaad`bbbbbbbbbcaad`bbbbbbcaad`bbccdbbb", "dbbbccbb`````bbbbb`````bbbbbbbbb`````bbbbbb`````bbccdbbb", "dbbbccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccdbbb", "dbbbcc````````````````````````````````````````````ccdccb", "dbbbccccccccccccccccccccccccccccccccccccccccccccccccdccb", "dccbccccccccccccccccccccccccccccccccccccccccccccccccdccb", "dccbdddddddddddddddddddddddddddddddddddddddddddddddddccb", "dccbbbbccccbbbbccccbbbbccccbbbbccccbbbbccccbbbbccccbbbbb", "dccbbbbccccbbbbccccbbbbccccbbbbccccbbbbccccbbbbccccbbbbb", "dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" }; micropolis-activity/images/obj1-3.xpm0000664000076400007640000000250110724145723020017 0ustar simcitysimcity/* XPM */ static char * obj1_3_xpm[] = { "32 32 7 1", " c None", ". c #BFBFBFBFBFBF", "X c #000000000000", "o c #FFFFFFFFFFFF", "O c #FFFF00000000", "+ c #7F7F7F7F7F7F", "@ c #3F3F3F3F3F3F", " ", " ", " ", " ", " ", " ", " ..X ", " .oooXX ", " .oOooXX+ ", " .oooooXX+ ", " .ooooo+X++ ", " .ooooo+++++ ", " .ooooo+@++@ ", " .ooooo++@+@ ", " .ooooo+@++@ ", " .ooooo++@+@ ", " .ooooo+@+++ ", " .ooooo++@++ ", " .ooooo+@+++ ", " XoOooo++@++ ", " XXoooo+@++@ ", " ..X+oo++@+@ ", " ..+XXX+++@ ", " ...XX+++@ ", " ....+++ ", " ...+ ", " ", " ", " ", " ", " ", " "}; micropolis-activity/images/icseaphi.xpm0000664000076400007640000000431010724145723020611 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "42 42 13 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #00FF00", "c c #5D5D5D", "d c #007F00", "e c #BF7900", "f c #4F4FFF", "g c #FFFFFF", "h c #FFFF00", "i c #7F7F00", "j c #FF7700", "k c #BFBFBF", "l c #0000FF", /* pixels */ "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", "kaallllaaaallllaaaallllaaaallllaaaallllaac", "kaallllaaaallllaaaallllaaaallllaaaallllaac", "kaaccccccccccccccccccccccccccccccccccccaac", "kaacggggggggggggggggggggggggggggggggggkaac", "kllcgeeeeeeeeeeeeeeeeeeeeaaaeeeecjjeegkllc", "kllcgeeeieeeeeeeieeeeeeeeakaeeeceejjegkllc", "kllcgeeeaaaaaaaaaaaaaa`aaaaaeeeeee`jjgkllc", "kllcgeeeakakah`kakaka`c`akkkaaace`e`jgkllc", "kaacgaaaaaaaakkkaaakkk`akaackaaa`c`ejgkaac", "kaacgkakakaekaacaakaachkkaaccakac`cccgkaac", "kaacgaaaaaakkaacckkaacckkaaccaaceka`cgkaac", "kaacgeeeeeekckkkkkkkkkkkkkkkkakaekaacgkaac", "kllcgeeeeeekkkaaaaaaaaaaaaaakaaaaka`cgkllc", "kllcgeeeekkkckaaaaaaklaaaaaakakaakcccgkllc", "kllcgeeekccckcakcaaklklaakcakcaaecciigkllc", "kllcgeekkccakkaaaaaaklaaaaaakckaadiiigkllc", "kaacgeekkccackaaaaaaklaaaaaakcaabdeeegkaac", "kaacgeekkccakkaaaaaaklaaaaaakckaadadegkaac", "kaacgeekaaaakkakcaklklklakcakcaabdbdegkaac", "kaacgeeaaiaackaaaaaklllaaaaakckaaaaaagkaac", "kllcgeeeiiakkkkkkkkkkkkkkkkkkcaaakaakgkllc", "kllcgeefcikckaaaaaaaaaaaaaaacckaaaaaagkllc", "kllcgeeflekkkccccccccccccccacaaaeeeeegkllc", "kllcgeefcekckccccccccccccccacakaeekaagkllc", "kaacgeefleckaaaaaaaaaaaaaaaccaaaehkkkgkaac", "kaacgeefcekaaccaaccaaccaaaiccakahchchgkaac", "kaacgeefleaaccacccaaccaaaiiccaaachchcgkaac", "kaacgeeeeeeccccccccccccccccccakaechcegkaac", "kllcgeeeeeekcecaakckcaaaaakjaaaaeeieigkllc", "kllcgjjjjjjjjjjaaakakakakakckakaeekcegkllc", "kllcgeeeekceeeeaaaaaaaaaaakjaaaaeeeeegkllc", "kllcgeeekceeeeeeeakaaeeeekcceeeekcekcgkllc", "kaacgeeeieeaaaaaaaaaaecckcejeeeeeeeeegkaac", "kaacgeeeeieakakakakaaeckceeceeieiekcegkaac", "kaacge`eeeiaaaaaaaaaaececeejeeieieeeegkaac", "kaacgeeeeeeckaeeeeeeeeceeeeceeeeeeeeegkaac", "kllcggggggggggggggggggggggggggggggggggkllc", "kllckkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllc", "kllaaaallllaaaallllaaaallllaaaallllaaaallc", "kllaaaallllaaaallllaaaallllaaaallllaaaallc", "kccccccccccccccccccccccccccccccccccccccccc" }; micropolis-activity/images/obj3-3.xpm0000664000076400007640000000525310724145723020030 0ustar simcitysimcity/* XPM */ static char * obj3_3_xpm[] = { "48 48 9 1", " c None", ". c #BFBFBFBFBFBF", "X c #FFFFFFFFFFFF", "o c #3F3F3F3F3F3F", "O c #FFFFFFFF0000", "+ c #7F7F7F7F7F7F", "@ c #FFFF00000000", "# c #66666666E6E6", "$ c #000000000000", " ", " ", " ", " ", " . ", " .X. ", " oXX. ", " oXXX. ", " oXXX. ", " OXXXX. ", " oX+XX. ", " oXXX+X. ", " oXXXXX.. ", " .XXXX....+ X ", " .XXX.. ooX++XX +XX ", " ... ooXX+XX .XXX@ ", " oXXX+X@ .XXXXX ", " .XXX+XX +XXXXX ", " XX.XXX+ .XXXXXX ", " +XX.XXX+ +XXXXXX. ", " +@X.XXX+ .XXXXXX. ", " +X#.XXX+ .XXXXXXX+ ", " +#.XXX++XXXXXXX.o ", " +#.XXX+XXXXXXX+ ", " +$.XXX+XXXXXXo ", " +#.XXX+XXXX.o ", " ++$.XXX+XXX+ ", " .X.+#.XXX+XXo ", " .XXX.+$.XXX++o ", " +XXXXX.+#.XXX+ ", " .XXXXXXX.+$.XXX+ ", " +XXXXXXXXXX+#.XXX+ ", " .XXXXXXXXXXX.+$.XXX+ ", " .XXXXXXXXX.+oo +#.XXX+ ", " +XXXXXXX.+oo +$.XXX+ ", " XXXXXXX.+o +#.XXX+ ", " XXXXX. +$.XXX+ ", " @X +#.XXX+ ", " +$.XXX+ ", " +#.XXX+ ", " +.oXXo ", " +.o$.o ", " ++.oo ", " ooo ", " ", " ", " ", " "}; micropolis-activity/images/obj3-0.xpm0000664000076400007640000000525310724145723020025 0ustar simcitysimcity/* XPM */ static char * obj3_0_xpm[] = { "48 48 9 1", " c None", ". c #3F3F3F3F3F3F", "X c #FFFFFFFFFFFF", "o c #BFBFBFBFBFBF", "O c #000000000000", "+ c #7F7F7F7F7F7F", "@ c #66666666E6E6", "# c #FFFF00000000", "$ c #FFFFFFFF0000", " ", " ", " . ", " ... ", " XXo ", " oX... ", " o.Oo+ ", " oXoo+ ", " o@oo+ ", " oOoo+ ", " o@oo+ ", " oOoo+ ", " o@oo+ ", " oOoo+ ", " o@oo+ ", " oOoo+ ", " o@oo+ ", " o@oo+ ", " ..Ooo+. ", " .+oX@oo+o+. ", " .+oXXXOoo+ooo+. ", " .+oXXXXX@oo+ooooo+. ", " XXXXXXXXXXOoo+oXXXXXXXX ", " XXXXXXXXXXXX@oo+oXXXXXXXXXX ", " #XXXXXXXXXXXXXOoo+oXXXXXXXXXXX# ", " XXXXoXXXXXoXXX@oo+oXoXXXXoXXXXX ", " XXXXXXXXXXXXXXOoo+oXXXXXXXXXXXX ", " X+oooo+X+ooo+X@oo++ooo+X+oooo+X ", " +Ooo+ ", " +@oo+ ", " +Ooo+ ", " +@oo+ ", " +Ooo+ ", " +@oo+ ", " Xo+Ooo+o ", " ##+@oo+# ", " Xo+@oo+o ", " Xo+Ooo+o ", " Xo+@oo+o ", " @oo ", " .oo ", " oo+o ", " oXXoooo ", " oXXXX+oXXoo ", " oXXXXXooXXXXo ", " XXXXXX+oXXXXo ", " o.+++.$.+++.o ", " "}; micropolis-activity/images/checkbox1hilitechecked.xpm0000664000076400007640000007457510724145723023425 0ustar simcitysimcity/* XPM */ static char *checkbox_hilitechecked[] = { /* columns rows colors chars-per-pixel */ "190 70 256 2", " c #0A141B", ". c #0B1A1B", "X c #0C1915", "o c #121B1E", "O c #0B1A25", "+ c #0C1C2C", "@ c #0B1625", "# c #111C27", "$ c #0E1F36", "% c #0B221B", "& c #0C2D19", "* c #0A3318", "= c #112816", "- c #143A1B", "; c #14253A", ": c #133B39", "> c #0F242E", ", c #142B43", "< c #182B43", "1 c #192E4D", "2 c #132745", "3 c #182E52", "4 c #1B314C", "5 c #183449", "6 c #1B3353", "7 c #1C355A", "8 c #1B3A5C", "9 c #163255", "0 c #0F2A45", "q c #1D3C63", "w c #1D3E6A", "e c #1D3C72", "r c #213B5E", "t c #203455", "y c #223C64", "u c #233D6B", "i c #2A3C6B", "p c #2A3B65", "a c #263E72", "s c #0D4A02", "d c #0C4702", "f c #0E4719", "g c #0E5302", "h c #124B0B", "j c #144919", "k c #115F02", "l c #17453C", "z c #104A21", "x c #116302", "c c #126B02", "v c #166608", "b c #157902", "n c #157504", "m c #196B15", "M c #1C6831", "N c #22741D", "B c #276735", "V c #2D7933", "C c #194A44", "Z c #1C4E49", "A c #1D4265", "S c #1C426B", "D c #1B4768", "F c #1B4372", "G c #174977", "H c #24485B", "J c #265857", "K c #224164", "L c #23416A", "P c #2A426C", "I c #27496B", "U c #234371", "Y c #234C7B", "T c #2B4A71", "R c #254776", "E c #295378", "W c #334C74", "Q c #3D587B", "! c #36547A", "~ c #32546E", "^ c #257344", "/ c #2B724B", "( c #3F696C", ") c #435B7C", "_ c #244E80", "` c #295B8A", "' c #255685", "] c #2A5E92", "[ c #385B88", "{ c #345D95", "} c #2B6595", "| c #2D729E", " . c #326593", ".. c #336A98", "X. c #38749C", "o. c #2E6089", "O. c #3573A2", "+. c #3C73A4", "@. c #3B7BAA", "#. c #3676A7", "$. c #326FA0", "%. c #1C5985", "&. c #435D83", "*. c #4C698A", "=. c #4A6486", "-. c #526A8B", ";. c #5A7493", ":. c #54708D", ">. c #4177A6", ",. c #647A97", "<. c #6A7996", "1. c #178702", "2. c #199403", "3. c #1A9803", "4. c #1D9509", "5. c #1CA703", "6. c #1EB203", "7. c #2F8A37", "8. c #21B607", "9. c #2BAE1B", "0. c #35B72D", "q. c #229412", "w. c #3C9554", "e. c #368E4C", "r. c #328D70", "t. c #21C403", "y. c #22CE03", "u. c #27CD09", "i. c #24D403", "p. c #25DA04", "a. c #28DB07", "s. c #2ADA0C", "d. c #28D50B", "f. c #2DDA11", "g. c #2DD711", "h. c #30DA16", "j. c #33DB1B", "k. c #39DA25", "l. c #3DDA2A", "z. c #37D923", "x. c #3ED930", "c. c #27E304", "v. c #28E604", "b. c #28E904", "n. c #2CE40C", "m. c #29F304", "M. c #2DF709", "N. c #33F411", "B. c #3BEA22", "V. c #46B73F", "C. c #439A47", "Z. c #44965C", "A. c #469B65", "S. c #4E8A72", "D. c #43B946", "F. c #49AA55", "G. c #56B56C", "H. c #68BC77", "J. c #44D938", "K. c #40DB2E", "L. c #44F429", "P. c #4BD942", "I. c #4DD746", "U. c #54CA58", "Y. c #56D954", "T. c #59D95B", "R. c #57D355", "E. c #4DC44C", "W. c #5ED663", "Q. c #59EF4B", "!. c #63D25C", "~. c #68C675", "^. c #71C879", "/. c #6BD375", "(. c #67EA5C", "). c #3881AF", "_. c #3D84B3", "`. c #3A8AB9", "'. c #3897AB", "]. c #33928C", "[. c #3B96CE", "{. c #3D9ACE", "}. c #369CCD", "|. c #3A97D0", " X c #3D9AD0", ".X c #3B9DD7", "XX c #3DA1CD", "oX c #3BA0D6", "OX c #4383B2", "+X c #428CBC", "@X c #4788B4", "#X c #4F8AB2", "$X c #71879C", "%X c #6D8A99", "&X c #6D84A3", "*X c #7589A3", "=X c #7C93AB", "-X c #6D90A6", ";X c #77B588", ":X c #7AB595", ">X c #75A592", ",X c #7FACA6", " 8 1XfXfXuXfXfXfXiXfXiX5X3X I `.gXfXiXiXiXiXiXiXiX3X3X X3X X3X X3X XX( BXJ.f.p.p.p.s.z.T.BX>XZX&X*.T 8 < ; & f e.q.v hXgXhXgXgXfXiXrX3X3X3X{.{.{.{. X|.{.}. X3X X X7X5X7X{.3XiX3X3X3X{.XXXXuX3XyX4X6XiX4XuX3XuX7X4X5X3X3X3X3XsX5X5XgX3XpXpXiXlX0XfXfXiXiXhXuXfXuXhXuX6XsXsXiX5X0XiXpX6XfXiXiXiX0XfXhXhXgXhXzXzXxXxXxXvXxXnXvXnXnXvXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXnXnXnXnXnXnXnXnXvXvXvXvX", "6X6XiXiXiXuXiXiXiXiXiXyXuX3X3Xv.v.v.c.p.p.a.a.a.a.s.k.!.BXDX>X( w.P.h.c.p.p.f.J./.GXAXZX,.! q 3 ; % f C.q.m v gXhXhXfXgXfXiXiX3X3X[. X}.|.|.|.|.|.{.7X7X|..X X.>.Y L P S $.0X1XOXF P L G 8X8XY q D L OXgXaX3XfXqXpXuXiXiXiXiXiXiXfXhXhXhXjXjXjXzXxXxXxXvXvXvXvXmXnXnXmXmXmXnXmXmXmXmXmXmXmXmXmXmXnXmXmXnXnXnXvXnXnXvXvXvXvXvX", "iXuXrXiX3XuXuXrXiXiXiXyXiX7X1Xv.v.c.n.j.J.U.H.H.DXDX%X<.-.! y r 8 M E.l.f.k.W.BX,X$X,.W 9 0 @ X j D.K.g.8.2.b x fXfXfXiXiXiX3X3X X{.{.{.|.|.|. X{. X X{.3X.X2X` a L G _..kXiXfXiXzXOXa K w P K S OXhXfXfXfXfXiX6XiXiXiXiXfXpXfXfXiXqXgXgXlXzXjXxXjXxXxXxXvXvXxXnXnXnXmXnXmXnXmXmXmXmXmXmXmXmXmXmXmXmXmXmXnXnXnXnXnXvXnXnXnXnX", "iXiXiXiXuX5X5XiXuX5XiX3X5X3X3Xb.b.c.v.j.l.J.D.M Z 5 9 7 r y q u y K J G.(.VX,XSX-X*.q ; @ % z R.K.f.a.i.6.2.b c 3XiXiX3X3X3X X X X{.[. X X X X X X X X.xXiXgXpXgX .A a u K .zXfXfXfXfXiXfX6XiXiXfX6XfXfX5XfXfXfXfXlXhXhXkXzXxXxXjXxXvXvXvXvXnXmXnXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXnXmXmXnXnXnXnXnXnXnXnXnX", "iXiXiXiXiXiX5X5X5X5X X5X3X X Xb.b.c.c.a.f.f.f.J.7.: 5 5 6 r w w q K ~ A.VXUXJX=X;.~ 3 O . * G.I.f.p.p.i.6.2.b x iX3XiX3X3X3X3X.L S u Y hXjXhXxXfXgXL F y A fXgX5XfXfXfXpXfXfXpXfXfXfXfXfXhXfXfXjXgXjXxXjXxXjXlXjXxXxXvXxXxXxXvXvXnXmXnXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXnXmXmXmXmXnXnXmXnX", "5XiXiXuX3X3XyXyX X3X3X5X5X X3Xb.b.c.c.p.p.p.p.p.i.s.k.T.Z.l : t 8 K T ! Q Q K 8 2 # = B T.k.s.p.p.p.p.y.6.2.b x 3XiXiX3X3XiX3X X3X.iX>.F L K I w U L D U #XhXgXlXfXlXlXA A P u lXfXfXfXfXfXfXfXpXiXpXfXfXgXfXfXfXgXgXzXzXlXjXjXxXxXxXxXvXxXvXxXvXvXvXvXvXnXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXnXmXmXmXmXnXnXnXmX", "iXiX3X3X3X3X3X3X3XiX3X3X3X3X5Xv.b.c.c.p.p.p.p.p.a.a.s.l.T.w.l 5 6 8 L T R L 7 < + % j U.K.f.a.p.p.p.p.y.6.2.b x 3X3XuX3XiX3XiX5X3X5X X3X3X3X3X3X X3X5X X3X5X2X} F L A u I y L L L L OXY S L L >.fXiXiXkX>.S u S %.dXqX@.Y S K L i i } wXhXhXhXjXgXjXkXG U L F 9XhXiXfXfXfX6XfXfXfXiXhXfXhXfXhXhXgXjXxXxXxXjXxXjXxXxXlXxXxXxXxXvXvXvXmXvXnXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXnXnXmXmXmXnXnX", "3X5X3X3X3XiX3X3X3X3XiX3X3X5X3Xv.c.b.c.p.p.p.p.p.p.p.a.f.l.T.e.l 5 r 8 y L 7 6 + O * C.J.h.a.p.p.p.p.p.y.6.2.b x 3XrXiXiX3XiXiX5X5X5X3X3X3X3X3X3X3X3X . & 7.P.h.a.p.p.i.p.p.p.p.i.i.6.2.b x yXiXiXiX3XiX3X5XuXiX3X5XpXiX5X3X5X3XiX3X5XiX5X5X1X0X5X5X5X5X0X5X5X5X5XiX3X3XaXsXpXpXsXiX6XiXgXfXpXsXfXfXfXgXlXlXlXfXhXgXgXfXqXfXiXkXhXfXjXzXfXzXjXlXfXfXgXhXhXhXjXfXhXhXjXjXjXlXzXzXjXjXhXhXjXjXjXgXxXjXxXxXxXvXxXvXxXvXxXvXvXxXvXvXnXvXnXnXnXnXnXvXnXnXnXnXnXnXnXnXnXvXvXvX", "5XiXiXiXrX . j U.l.a.p.p.p.c.p.p.p.p.i.i.6.2.b k uXiXiX3XiX3XiXiX5X3XiXiXiX3X3XiX5XiX5XiXiXiX3XuX6X5X5X3XiX3X3XiXuX3X3XrXeXrXiX1XpXpXfXiXfXfXrXdXfXgXaXgXhXfXiXiXiXaXfXlXgXfXiXfXhXhXuXhXrXsXgXjXlXlXjXjXhXhXgXhXjXhXfXhXjXjXjXgXgXgXjXjXjXgXjXjXjXjXjXjXxXxXxXxXxXxXxXxXxXvXvXvXvXvXnXnXnXnXnXnXnXnXnXnXnXnXnXnXnXnXxXnXvXvX", "pXyX3XiXiXiXrXiXiXiXiX3XiXuX5Xv.c.v.c.c.p.p.p.p.p.p.p.p.p.p.p.p.a.h.I.H.z * 7.J.h.a.p.c.a.p.p.p.p.p.i.y.6.2.b c yX3X3X3XuXiX3XrXiXiXiX4X6XiXiXiXiXiXiXiXiXiXiXiXiX5X3X5X5X5XiX5X5X3X5XiXiXiXiXiX6XiXiXrXiXhXiXhXfXqXfXfXfXfXfXfXfXfXfXfXgXfXfXfXhXhXfXhXfXhXhXfXhXhXzXgXgXlXhXlXfXhXhXgXlXlXjXjXzXlXjXjXhXjXzXjXjXxXxXxXxXxXxXxXvXvXvXxXxXvXxXvXvXxXvXnXnXvXnXvXnXvXvXvXnXnXnXnXnXnXvXvXvXvX", "3XrX3XiXiXiX3XiX3XiXiX3XiXiX5Xv.v.v.c.p.p.p.p.p.p.p.p.p.p.p.p.p.p.a.z.R.C.m E.l.a.p.p.p.p.p.i.c.p.p.i.y.6.2.b x 3XiXiXuX3XyXrX3XiX3XiXiX3X5X5XuX3XiXiXiXiXiXiXiXiXiXiX5XiXiXuX5X5X5X5X3XiX3XiXiX6XiXiXfXiXiXhXiXfXfXfXpXfXiXfXfXfXfXgXfXfXfXfXfXfXfXfXfXhXhXfXjXjXjXjXzXlXhXgXlXkXhXlXgXxXjXjXjXjXgXzXjXzXzXjXzXxXjXxXxXxXxXxXvXvXxXxXvXvXxXvXvXvXvXvXvXnXnXnXvXnXvXvXvXvXnXnXnXnXnXvXvXvXxX", "uXiX5X3XiXiX3XiXiX3XiX5X3XiX5Xc.c.v.v.p.p.i.p.p.p.p.p.p.p.i.p.p.p.i.f.l.I.0.J.f.i.p.p.p.p.i.p.p.p.i.p.y.6.3.n k 5X5X5XyXyX5XiXiXiXiX3XrXiX3XrXiXiXiXiXiXiXiXiXfXiXiXiXiXiXiXiXiXiXiX3XiXiXiXiX6XiXiXiXiX8XfXfXfXfXfXfXfXfXfXfXhX0XfXfXfXfX0XqXfXfXfXgXhXhXhXfXjXjXjXxXjXjXxXjXjXjXjXjXjXlXxXxXvXxXjXzXzXxXjXxXjXvXsXxXxXvXvXxXxXxXxXvXxXvXvXvXvXsXnXvXvXvXvXvXvXvXvXvXvXvXnXnXvXvXvXvXxXvXxX", "iX3XiXiXiX4X5XiX5XiX5XuX3XiX5Xv.v.v.v.p.i.c.p.p.p.p.p.p.p.p.p.p.p.p.a.s.j.k.j.s.p.p.p.p.p.p.p.p.p.p.p.y.6.1.n k 5X5X5X3X5X5X3XiX3XiXiXuXiXiXuX6XiXiXiXiXiXiXiXiXfX6XiXiXiXiXiX6XiX3X5X5X3XiX3XuXiXiXiXiXiXfX5XfXfXfX5XfXfXiXfXiXfX6XfXfXfXfXfXfXfXfXfXjXhXgXjXgXxXjXjXxXxXjXxXlXxXjXjXxXxXjXxXsXzXjXjXxXxXxXxXjXvXxXxXvXsXxXxXvXvXvXvXvXvXnXvXvXvXvXxXvXvXvXxXvXvXxXvXvXvXvXvXvXvXvXvXvXxXvX", "iX3XiX3XiX3X5X4X3XiXiXpXuXiXiXv.v.v.v.i.i.i.i.p.p.p.p.i.p.p.p.i.i.p.p.i.s.s.s.i.p.p.p.i.i.p.p.p.p.i.i.6.5.1.c s iX5X5X5X5XiXiXiXrXiXiXiXiXiXiXiXiXiXiXiXfXpXfXfXfXfXfXfXiXiXiXiX3X5X3XiX3XiXiXiXiXiX1XiXfXiX5XfXfXfXdXiXiXfXfXiX5XfXfXfXfXfXfXfXfXfXfXgXhXhXlXzXxXxXxXxXxXxXjXxXxXxXxXxXjXxXxXxXjXxXxXjXxXxXxXxXsXvXxXxXnXvXvXxXvXvXxXvXvXsXvXxXxXxXvXvXxXvXvXxXvXvXvXxXxXxXvXvXvXxXxXxXvXxX", "5X X3XiX5X3X5X5XiX3X5XyXiX3X6Xp.c.i.i.y.y.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.6.5.1.x g s 3X3X5X5X3XuX3XiXiXiXiXiXfXpXiXiXiXiXdXiX6XfXiXfXhXiXiXiXhXiXiXuXiXiX5XiXiXiX3XiXfXiXfXiXiXfXfXfXfXiXfXfX5XfXiXfXfXfXfXfXfXfXfXfXgXjXjXjXjXlXjXjXlXxXlXxXxXxXxXxXxXxXxXxXjXvXjXlXxXxXxXxXxXxXxXxXxXvXxXxXvXxXxXvXvXvXvXvXvXvXvXvXvXxXxXxXvXxXxXxXxXxXxXxXxXvXxXxXxXvXxXvXxXxX", "iX3XiX3X3X3X3X5XiX3XiX3X X4X4Xg.u.8.6.5.3.3.3.3.3.3.3.3.3.3.3.3.3.2.2.2.2.2.2.3.3.3.3.2.3.3.3.3.3.2.1.n k d d h 3XyXiX5X3XiXiXiXiXiXiXiXiXhXpXiXiXiXfXiXiXfXfXfXfXfX6XiXhXiXiXiXiXiX5X3XiXiXiXrXiXiXfXiXdX5XfXiX5XfXfXiX6XfXfXfXfXfXfXfXfXfXfXhXgXgXgXjXgXgXzXjXjXxXjXjXvXlXxXxXvXvXxXxXxXvXxXxXxXxXxXvXsXvXvXxXxXxXvXxXxXvXxXxXxXvXvXvXvXvXvXvXvXvXvXxXxXxXxXxXvXzXvXvXxXxXxXvXxXvXvXzXvXxX", "3X3X3X3X3X3X3X3X3X3X6X3X3X7X7Xx.9.4.1.b c c c c c c c c c c c c c c c c c c c c c c c c c c c c x c x s s d j B yX3XuXiXiXiXiXiXiX6XfX6XpXiXiXpXfX5XfXfXhXhXfXfXhX0XiXhXiXiXiXiXiXiXiX3XuXiXiXiXiXiXiXaXfX5XfXfX0XfXfXfXfXfXfXfXfXfXfXfX0X5XfXhXfXgXjXjXzXgXgXzXvXsXxXxXlXxXxXvXxXxXxXxXxXvXxXxXvXvXvXxXvXvXxXvXvXxXxXvXvXxXvXvXvXvXvXvXvXvXvXvXxXvXxXxXxXxXxXxXxXzXxXxXvXxXvXxXxXxXxXvXvXxX", "3XyX3XyX3X3X3X3X3XiX X3X6X3X7XA.7.N v g s g s s s s s s d s s s s s s s s s s s s s s s s s s s s s s s h j M r.iXdXuX3XiXiXiXiXiX6XfXfXfXiXfXfXfX6XfXiXfXfXfXfXiXhXfXfXhXiXiXiXiXiXiXiX6XiXiXiXfXiXiXiXiXfXfX6X6XfXfX6XfXiXfXiX5XfXfXhXhXfXdXfXhXhXgXjXjXjXzXlXxXxXxXxXxXxXxXxXxXlXxXxXvXxXvXxXvXvXvXxXvXxXvXvXvXxXvXxXxXvXxXxXxXvXvXvXvXvXvXxXvXxXxXxXxXxXxXsXxXxXxXxXzXzXvXzXxXnXvXxXxXvX", "3X3XpX3X3X3X3X3X3X3XiXiX1X3XiX'.r.N d s s s s s s d s s d s s s d s s s s s s s s s s d s s s s s s h h z / ].}.yXuX6XpXrX3XiXiXfXfXiXhXfXfXfXiXhXiXfXiXfXfXfX6XiXfXfXfXfXfXhXiXiXiXiXiX6XiXiXiXiXiXfXhXiXfXfXfXhXfXfXfXfXfXfXfX0XhXiXhXhXhXhXfXhXfXgXjXjXzXjXzXxXxXxXxXxXxXxXvXvXvXxXvXxXvXxXvXxXxXvXvXvXvXxXxXvXvXvXvXvXxXvXvXvXvXvXvXvXvXvXvXvXvXxXxXxXxXxXvXzXxXxXvXxXxXxXxXvXaXzXvXxXxX", "uX3X3X3X3XyX3XyX3X3X3X3XiX3X.XuXrX9X X3X3XuXiXiXiXuXiXiX6XiXiXiXiXiXiXiXiXiXfX6XiXpX6XiXiXhXfXiXfXiX6XdXrX c #174D19", ", c #184B17", "< c #115F02", "1 c #116302", "2 c #126B02", "3 c #1E6B1A", "4 c #147402", "5 c #157A02", "6 c #1B780C", "7 c #1F663C", "8 c #216530", "9 c #164362", "0 c #15456E", "q c #1D4165", "w c #1C426B", "e c #1E486E", "r c #1C4371", "t c #1E4378", "y c #1C4973", "u c #1D487A", "i c #224065", "p c #22426B", "a c #22496A", "s c #2A4067", "d c #2A416D", "f c #234372", "g c #224678", "h c #234A73", "j c #244D7B", "k c #294372", "l c #28467C", "z c #294972", "x c #2A4A7B", "c c #25527B", "v c #2A507B", "b c #2A714A", "n c #244E80", "m c #2D4E81", "M c #205381", "N c #205A80", "B c #2B5680", "V c #2C5C85", "C c #2C5D8A", "Z c #2F5F90", "A c #304B80", "S c #335789", "D c #325C85", "F c #325C8C", "G c #3A5C89", "H c #375D90", "J c #266588", "K c #2A6086", "L c #2C618B", "P c #2E698B", "I c #2E6291", "U c #2B6894", "Y c #2F7098", "T c #336087", "R c #31628D", "E c #336192", "W c #346994", "Q c #346A99", "! c #3C6594", "~ c #3B6B96", "^ c #367A9F", "/ c #3B749F", "( c #377AA4", ") c #377BA8", "_ c #3C74A3", "` c #3F75A9", "' c #3B79A3", "] c #3D79A9", "[ c #40779E", "{ c #42789F", "} c #4275A5", "| c #4476A9", " . c #417AA5", ".. c #427AAA", "X. c #4C79A2", "o. c #4878A9", "O. c #477CB2", "+. c #168402", "@. c #178902", "#. c #199303", "$. c #1A9803", "%. c #1E9E09", "&. c #1CA203", "*. c #1DAB03", "=. c #1EB103", "-. c #2C9333", ";. c #27AE14", ":. c #20B705", ">. c #20BB03", ",. c #2BAE22", "<. c #3BBF35", "1. c #369E55", "2. c #318E61", "3. c #328C7A", "4. c #3C9E69", "5. c #21C403", "6. c #22CD03", "7. c #2CCF13", "8. c #23D303", "9. c #25DA04", "0. c #2ADB0A", "q. c #2DD711", "w. c #3EC63F", "e. c #3DC83D", "r. c #27E304", "t. c #28E604", "y. c #28E904", "u. c #2CED0A", "i. c #29F304", "p. c #2EF20B", "a. c #2BF905", "s. c #2EF90A", "d. c #37E41E", "f. c #37EB1D", "g. c #33F512", "h. c #3CF91D", "j. c #449F72", "k. c #4CB369", "l. c #5DBA66", "z. c #4CEF3A", "x. c #54F145", "c. c #59F244", "v. c #33928D", "b. c #3E9A92", "n. c #3C83A3", "m. c #3E8CB3", "M. c #3F99A6", "N. c #3396B8", "B. c #2E92CD", "V. c #3593C6", "C. c #3594CE", "Z. c #3598CE", "A. c #3D96C7", "S. c #3896CE", "D. c #3B99CE", "F. c #3696D0", "G. c #3599D1", "H. c #359DD9", "J. c #3A96D0", "K. c #3C99D0", "L. c #3B9BDA", "P. c #3CA1D5", "I. c #3EA0DD", "U. c #4182A8", "Y. c #4B84AF", "T. c #4385B2", "R. c #438BB4", "E. c #448CBA", "W. c #4B85B3", "Q. c #4A8BB3", "!. c #4B8CB9", "~. c #4597BF", "^. c #4A91B4", "/. c #4A91BA", "(. c #5385B8", "). c #518CB5", "_. c #518CBB", "`. c #5090BD", "'. c #5C97BF", "]. c #4095CC", "[. c #429BCD", "{. c #4B96C2", "}. c #4C9DC6", "|. c #499DCD", " X c #4395D3", ".X c #429CD1", "XX c #429BD8", "oX c #489ED3", "OX c #499FD8", "+X c #518BC0", "@X c #5293C1", "#X c #539BC3", "$X c #559DCD", "%X c #5B99C2", "&X c #5D9CCF", "*X c #539ED1", "=X c #539DD9", "-X c #5A9ED2", ";X c #4AA1CC", ":X c #45A0D3", ">X c #4BA1D4", ",X c #4BA3D8", "X>X>X>X>X>X>X>X>X6X>X6X>X6X6X6X>X6X>X6X6X6X6X6X6X6X6XOX6X6X6X6X6X6X6X6X6X6X6X6X6X2XX6X6X6X6X8X0X7XeX9X9XeX9XeXeXeXeXeXeXeXcXeXjXqXeXqXeXqX8XeXeX7XeXjXeXeXeXjXeXjXjXjXjXjXeXjXjXjXjXhXjXkXzXjXzXjXkXzXzXjXzXzXzXzXkXzXzXzXzXzXzXhXjXeXjXjXeXjXjXeXeXeXsXeXjXjXeXsXeXeXeXeXeXqXsXeXjXeXjXjXeXjXjXjXjXjXjXzX", "oXoX.X.X.X.X.X.X.XD.K..X.XK..XK.K..XD.XXD.D.D..XK.[..X.X.X.X:X.X.X.X.X.XoX.X.X>X;X>X>X>X>X>X>X6X>X6X>X>X>X6X|.6X6X>X6X>X6X6X6X6X7X6X6X6X6X8X6X6X6X6X2X6X6X6X6X6X6X6X6X6X6X6X6X8X7X7XeX9XeX9X9XeXeXeXeXeXeXeXeXeXeXeX9XeXwX8X0XqX0XeXeXeXjXeXjXeXjXeXjXeXyXjXjXjXjXkXjXjXjXjXlXkXjXjXzXzXjXzXzXzXzXzXzXzXzXzXzXlXjXeXyXjXjXeXjXeXeXjXeXeXeXeXeXeXcXeXeXeXeXeXeXeXeXeXeXeXeXeXvXeXjXeXzXjXzXjX", "oXoXoXoX.X.X.X.XK..XK.K.K.K. XK..XK.D.K.D..XD..X.XD..X.X.X.X.X.X.X.X.X.X.XoX.XoXoXoX>X>X>X>X>X>X>X>X>X6X>X6X6X6X6X6X6X6X>X>X6X6X,X6X6X6X6X6X6X8X6X8X6X6X6X8X6X6X6X6X6X6X6X6X6X7X7X8X9XeXeXeXeXeXjXeXeXgXeXeXeXeXeXeX9XeX9XeX8X8X9XeXeXeXjXeXeXeXjXeXjXjXjXjXjXjXjXjXjXkXjXjXzXjXlXjXzXzXcXjXzXzXzXzXzXjXjXzXjXjXjXjXeXjXeXeXjXjXjXeXeXeXeXyXeXeXeXeXeXeXeXeXeXcXeXeXcXeXjXeXjXjXjXjXjXzXzXzX", "oXoX.XoX.X.X.XD.[..XK.K.K.D.D.D.D.D..XK.D.D..X.X.X.X.X.XD..X.XD.K..X.X.X.X.X.X>X.XoXoXoX>X>X>X>X>X6X>X>X6X>X|.6X6XOX6X>X6X6X6X>X6X6X6X6X6X6X8X6X6X6X6X6X6X6X6X6X6X6X6X7X6X6X7X7X7X7XeX8XeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX9X9XeXeX9XqXeXeXeXjXjXeXjXeXjXjXjXjXjXjXjXjXjXjXkXjXjXkXjXjXjXzXzXzXzXzXkXjXjXjXhXjXyXeXjXjXeXeXjXeXeXwXeXjXeXeXeXcXeXeXeXeXeXeXeXeXeXeXeXyXeXeXjXvXjXjXjXjXzXjXzX", ">X:XoXoX.X.X.X.X.X[.K.D.K.K.D.K.K.D.K.D.K.D..XD.D.:X.X.X.X.X.XD..XK..X.X.XK..X.X.X|.>XoXoXoX>X>X>X>X>X>X>X6X6X>X>X6X6X6X6X6X6X>X6X6X6X6X6X8X8X6X8X6X6X8X8X6X6X6X6X6X7X6X7X8X7X7XqX8X8X9XeXeXeXgXeXeXeX9XeX9XeXeXeXeX9X9X7X8X8X9X9XeXeXeXgXeXeXjXjXjXeXyXeXjXvXjXzXzXjXjXkXjXjXzXzXjXjXzXzXzXjXjXjXjXjXjXjXeXjXeXjXeXeXjXeXjXeXeXeXwXeXeXgXeXjXeXeXeXeXeXeXeXeXeXeXjXeXeXyXjXjXeXjXjXjXjXzXzX", ">XoXoXoXoX.X.X.XD.[.K.K.D.D.S.D.K.K.K.D.K..XD..X.XD..XK..XK.K..X.XD.K.K.K..X[.K.D..X.X.X.XoX.X>X>X>X>X>X>X>XOX6X*X6X>X6X6XOX6X6X6X6X6X6X6X6X7X6X7X8X7X8X6X6X8X6X6X6X7X7X7X8X7X8X7X7XeX8X9XeXeXjXeXeXeXeXeXeX9X9X9XqXeX7X7XqX7XqXeX7XeXeXeXeXwXjXeXeXjXjXvXjXeXjXjXjXjXzXlXjXjXjXzXjXjXjXjXjXjXjXjXjXjXeXeXjXeXjXeXgXeXeXeXeXeXwXeXqXeXeXeXeXeXeXeXeXeXcXeXcXjXsXeXeXeXjXjXeXvXjXjXjXhXyXjXjX", ">X>XoXoXoX.X.X.X.XD.K.K.K.S.S.K.K.J.K.K.K.D.D.D..X.X:XP.K.K.D.K.D.D.D.K.D.K.[..X.XK..X.X.X.XoX.X>X>X>X>X>X>X>X>XoX6X6X6X6X>X6X6X,X6X6X6X8X7X8X7X6X7X8X6X8X6X6X6X6X6X7X7X7X7X7XqX7X7XeXeXeX9XjXeXgXeX9XeX9X9XeX9X8X8X7X7XqX8X7X7X7X7XeXeXeXeXjXeXjXeXjXjXjXjXvXjXkXjXjXlXzXjXzXjXjXzXjXjXyXjXjXeXjXeXeXjXeXjXyXeXeXeXeXeXeXqXqXeXeXeXqXwXeXeXeXeXeXeXeXeXeXsXeXeXeXjXeXeXeXjXjXjXyXjXwXjXjXzX", ">X>XoXoX:X.X.X.XK..XL.J.J.K.K.K.Z.J.D.K.K.:X.X.X.XD.K.K.K.D.K.K.D.K.D.D.K.K.K.K.D..X.XD..X.XoX>XoX>X>X>X>X>X,X6X6X>X>X>X6X6X>X6X6X6X7X6X7X6X8X7X7X0X8X8X6X6X0X6X6X6X7X7X7X7X8X7XqX8X8X9X9XeXeX7X9XeXeX9XeX9X9X9X8X8XqX7X8X8X8X7X7XeXeXqXeXeXeXjXeXjXeXvXeXjXjXjXjXjXzXzXkXjXjXzXlXkXjXjXjXeXeXjXeXjXjXeXeXeXeXjXeXeXeXeXeXeXeXeX7XeXeXeXeXeXgXeXeXeXeXeXeXeXjXeXeXeXjXeXeXjXjXjXjXjXjXjXjXzX", ">X>X>X>XoX.X.XD..X.XD..XL.J.K.].D.K.D.K.D.K.K.K.K.D.K.K.K.K.G.S.K.D.J.K.J.L.K.K.K..XD.[..X.X.XoXoX.XoXoX.X>X6X6XOX6XOX6X>X6X7X6X6X6X8X9X8X6X7X6X7X7X8X7X6X6X6X6X6X6X8X7X6X0X7X8X8X7X9X9X9XeXwX9X9XeXeX9X9X7X9X7X8X7X7X7X7X6X8X7XqX7XwXeXeXeXwXeXjXeXjXjXjXzXjXjXzXjXzXzXzXjXzXzXjXjXeXjXjXeXeXjXeXjXeXeXjXqXwXeXeXeXeXeXeXeXeX9XeXqXqX9XeXgXeXeXeXeXeXjXeXeXyXjXjXwXjXeXjXeXeXjXeXjXjXhXjXjX", ">X>X>X:XoX.XD.oXD.D.D.D.Z.D.D.S.Z.H.A.D.D.D.D.A.D.D.S.A.K.S.S.S.C.S.S.S.S.D.D.A.K.D.].]..X.XoXoXoXOX:X:XX;X6X6X6X6X6X7X6X6X6X6X6X6X7X7X8X8X6X7X7X6X8X6X8X6X6X7X0X7X7X7X7X7X7X7XeXeXwX9X7XeXeX9XeX9X7X7X8X8X6X7X8X8X6X7X7X6X8X9X7X9XqXwXeXeXeXjXeXjXjXjXjXjXjXzXjXkXjXjXjXjXjXjXvXjXjXjXeXeXeXeXeXeXeXeX9XeXjXqXeXeXeXeXqXeXeXeX9XeXeXeXeXeXeXeXeXeXeXjXeXeXeXjXeXjXeXjXjXwXjXjXhXjXzXjX", ">X>X>X>X|.:XoXD..XD.A.:XD.D.D.D.Z.G.K.K.K.XXK.J.K.S.L.L.J.K.S.S.J.J.J.K.C.S.L.D.K.K.L.L.K.XXoXXXXXXXOX*X>X>X>X>X6X>X>X6XOX7X7X6X8X8X7X8X6X7X6X7X9X9X8X7X7X6X6X8X7X8X7X0X6X7X7X7X7XqXeX7X7XeX9X8X7XqX8X9X7X8X7X6X6X6X7X6X6X6X6X7X8X7XeX8X9XeXeXeXeXeXjXjXjXjXjXzXjXzXjXjXjXjXkXjXjXjXjXyXeXeXeXeXeXeXeXeXeX9X9XeXeXeXeXeXeXqXeXeXeXeXeX9XeXeXeXeXcXeXeXgXeXjXjXeXeXeXeXjXjXjXeXjXeXjXhXjXjXjX", ">XX:X>X:X:XD..XD.XX.XD.Z.D.K. X XD.D.A.S.S.S.D.D.S.S.S.S.S.S.S.S.C.V.A.S.S.S.D.S.D.D..X.XD..X.XoX.X,X>X>X>XX>X>X6X6X,X7X7X8X6X6X7X8X6X7X8X6X9X6X8X8X8X7X6X6X8X7X7X0X7X7X7XeX7X7XeX7X7XqX7X8X8X7X8X6X6X6X6X6X7X8X6X7X6X6X6X8X6X9X8XeXeXeXeXjXeXjXeXyXyXjXjXjXjXjXjXjXjXzXjXjXjXjXeXjXeXeXeXeX9XeXeX9X7XwX7X9XeXgXeXeXeXeXqX9XqXeXeXeXeXeXeXeXeXeXeXjXeXeXjXjXeXjXeXjXeXjXeXeXjXjXjXjXjX", "6X>X>X>XoX:X:X:X.X.XXXK..X.XK.G.K. XZ.Z.G.S.S.S.C.S.F.F.F.F.C.C.G.F.C.C.S.S.G.S.S.S.D.D.D.K.[.D..X:X[.;X;X>X>X>X>X6X|.6X6X7X7X7X7X7X8X8X6X7X6X6X7X8X8X7X7X8X7X6X7X8X8X7X7X7X8X9X7X9X8X7X7X7X8X7X8X0X8X7X6X6X6X6X6X7X6X6X6X6X6X7X7X6X9X9XeXeXeXeXjXeXjXeXjXjXjXeXyXjXjXjXeXjXjXeXjXjXeXeXgXeXeXeXeX9XeX9X8X0X8XeX9XeXeXeXeXeXeXeX9XeX9XeXeXjXeXjXeXeXjXeXeXjXeXjXeXjXeXjXeXjXeXjXjXeXjXjXjXjX", "6X>X>X>XoX:XoXD..XD.D.D.[. XL.H.H.Z.J.J.S.F.G.F.G.F.G.F.J.J.F.F.C.F.C.C.J.J.J.K.D.D.S.D.D.D.K..X.X:X>XoXoXoX,X6X6X*X6X6X6X6X7X7X6X7X6X7X7X8X8X7X6X7X6X8X6X6X7X8X6X7X7X7X7X8XqXqX7XqX9X9X7X9X8X7X7X7X6X8X6X6X6X6X6X6X6X6X6X6X6X6X7X7XwX9X9XeXeXeXeXeXyXeXeXjXjXjXjXjXeXjXjXjXjXjXjXeXjXeXeXeXeX9X9X9X8X7X9X9X9X0X9XeX9XqXeXeXeXeXeXeXeXeXeXeXeXeXeXeXwXeXeXeXyXeXjXeXjXeXjXwXjXjXeXjXeXjXeXvX", ">X6X>X>XoXoX:XoX.XD.D.[.].K.P.D.A.{.H.S.Z.G.C.S.C.C.S.S.F.C.B.C.C.S.C.G.F.F.S.S.S.D.D.K.K..X.X.X.XXX[.;XX6X>XoX6X6X6X7X6X8X8X7X6X8X6X6X6X6X8X6X6X8X6X8X8X8X7X8XqX8X7X7X7X7X8X8X8X7X7X6X7X7X6X6X6X6X6X6X6X7X6X6X6X6X6X6X9X7X7X7X9XeX9XeXeXeXeXjXeXjXeXjXjXeXeXjXjXeXjXjXjXeXeXeXeXeX9XeX9X7X7X7XqX8X7X7X9XeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXjXwXeXhXeXeXjXeXjXeXjXjXeXeXjXeXeXjXjXjXeXvX", "6X|.>X>X:X:X:XD..X.XXXXX.XK.D.v.k.x.h.s.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.a.i.i.p.f.w.4.b.>X,X6X6X6X6X6X7X6X6X7X6X8X8X6X6X8X6X6X6X6X6X6X6X7X8X7XqX8X7X7X7X7X0X8X7X6X7X6X6X6X6X9X6X6X6X6X6X6XOX6X6XOX6X6X6X7X7X7X7XeX9XeX9XeX9XeXeXwXeXeXjXjXeXjXjXeXjXeXjXeXjXeXeXeXeXeX9X7X7X7XeX8X8X7X7X9XeXeXeXqXeXeXqXeXeXeXeXwXjXeXjXeXeXeXwXeXjXeXwXeXeXwXeXwXjXeXyXjXeXvXjXjXjX", ">X>X>X>XoX.XoXoX.X.XD..XK.D.K.l.c.h.s.a.a.i.i.i.i.a.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.d.w.1.oX2X6X>X6X6X6X7X6X6X6X6X6X6X6X8X6X6X6X7X6X6X8X7XqX7X7XeX7X7X7XqXqX8X7X8X0X7X7X7X7X7X9X9X0X6X6X6X6X6X6XOX6X6X7X7X7X6X7X7X7X9XeXeX9XeXeXeXeXwXeXeXeXjXeXeXeXwXeXeXjXjXwXwXeX7XwXqXqX7X7X8X7X0X7X7X7XeX9X9X9X9X8XqXeX9XjX0XeXeXeXeXeXeXwXwXeXeXwXeXwXeXjXwXeXjX0XjXjXeXjXjXjXeX", ">X>X>XoXoX:X:XD..XoX.XK.K.K.XXz.h.p.a.i.i.y.i.i.y.i.i.i.y.i.y.i.i.i.i.i.i.y.i.i.y.i.i.i.i.i.i.i.i.i.y.t.0.0.q.,.6XoX6X6XOX6X6X6X6X6X6X6X6X6X6X6X0X6X6X0X7X0X8X7X7X8X9XeXeX7X8X9X7X7X7X8X6X6X6X7X9X7X9X6X8X6X6X6X6X6X6X6X6X6X7X7X7X7X9X6X7XeX8XeXeX9X9XeXeXjXeXjXwXjXeXjXeXjXjXeXwXeXeXeXeXeX7X9X7X7X8X7X0X8X7X7X8X9XqXeXeXwX9XqXeX9XeXwXeXjXeXhXeXjXjXeXjXeXjXeXwXeXeXwXjXeXjXeXyXjXjXeXjXjX", ">X>X>X;XoXoXoX:X.X.XD..X.XK.S.g.u.i.i.y.y.y.t.t.y.y.y.y.y.y.y.y.y.y.y.y.y.t.y.y.t.t.t.t.y.y.t.t.t.t.y.t.9.6.=.&.*X>X6X>X6X6X6X6X6X6X8X8X7X6X8X6X8X8X7X8X7X7X7X7XqX7XeX9XeX8X8XqX8X8X7X7X0X7X6X6X7X7X8X8X6X6X6X6X6X6X6X6X6X6X6X7X7X6X6X9X7X7XeX9X9X9XeXeXeXeXwXeXeXeXjXeXjXjXeXjXjXeXjXwXeXqX7XeX8X8X7X6X7X7X0X7X8X7X8X7X9X8X8X8X9XeXeXeXeXeXeXjXeXeXeXjXwXjXeXeXeXeXjXjXeXjXeXjXjXeXjXeXeXjX", "6X>X:X>XoXoX.X:X.X.XoXXXD.D..Xy.y.y.y.t.r.r.9.r.r.r.r.9.r.9.r.r.9.t.9.9.r.r.r.9.r.r.r.9.9.9.r.r.r.r.9.9.6.=.$.+.oX,X6X6X>X6X6X6X8X6X8X6X8X8X8X8X7X8XqX7X7X7X7XqX9XeX9XeX9XeX9X8XeX9XeX7X7X7X8X7X7X7X6X8X6X6X6X6X6X6X7X6X6X6X6X6X6X7X8X6X8X8X9X9XeX8XeX9XeXeXeXeXeX0XeXwXeXeXjXeXjXeXjXeXeXeXeX9X7X7X7X6X7X7X6X8X0X8X6X8XqX7X8XqXeX9XjXeXjXeXjXeXhXeXeXeXeXeXeXwXjX0XeXeXeXeXeXwXeXjXeXjXeXjX", ";X>X>X>XoXoX:X:X.XoXD..X[.S..Xy.y.t.t.r.9.8.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.8.8.>.&.@.4 -XOX7X6X>X6X6X6X6X7X6X7X7X7X7X7X7XqX8X8X9XeX9XeXeX9XeX9X8X8X9XeXeXeX9X9XeX7X0X7X8X6X9X6X6X6X6X6X6X6X6X8X6X6X6X8X6X7X7X9X7X9X9X6X7X8XeXeX9XeXeXeXeXeXwXjXeXeXyXjXeXjXjXeXqX9XwX7X7X8X7X7X8X6X6X6X7X6X6X6X7X8X7X8X9XeXeXeXwXjXeXjXeXjXwXjXeXwXeXeXjXeXwXjXeX0XeXeXeXjXeXeXjXeX", ">X>X>X>XoXoX:X.X:XD.D..X.XD.S.t.r.t.t.9.9.9.9.9.9.9.9.9.9.9.9.8.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.8.6.=.$.+.1 oX7XOX*X6X6X>X6X6X7X6X6X6X8XqX7X9X7X8XeX8X9XeX9X9XeX8X9XeXeX9XeXeXeX9XeX9X7X7X8X7X6X6X6X0X6X6X6X6X6X8X6X8X6X6X6X6X8X6X6X6X7X9X9XqX9X9X9XeXeXeXeXeXeXeXeXjXjXeXjXjXeXjXeXeXeX9XeX7X8X9X7X8X6X6X6X6X6X6X6X8X6X7X8X9XeXwXjXeXeXeXeXeXeXeXeXjXeXjXeXeXeXeXeXeXjXeXeXgXeXeXeXeXeX", "6X>X>X;XoXoX:X:X:X.X:XD.D.D.K.y.t.y.r.r.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.6.=.#.5 1 >X6X,X>X6X>X6X6X>X6X6X6X0X8X8X7X7XeXeXqXeXeXeXeXeXjX0XeXeXeXeXeXeXeXeXeXeX9XeX7X0X8X6X6X6X6X8X8X8X8X9X9X6X7X6X6X6X6X7X6X9X9X7X9X8X6X7X7X9XeXeXeXeXeXjXeXeXeXgXeXjXjXeXeXeXeXeX9X7X8X9X7X8X6X6X8X6X8X6X6X8X7X9X9XeXeXeXwXeXjXeXjXeXjXeXeXeXeXjXeXwXeXeXeXeXeXeXjXeXeXjXeXjXeX", ">X>X>X>X>X.X:X:X.XoXD.oX[.D.D.t.y.9.r.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.6.=.#.5 1 >X>X>X,X>X6X>X>X6X6X6X7X0X8X7X7XeX7XeXeXeXeXeX9XeXeXeXeXqX7XeXjXeXeXeX0XjX9X9X7X7X8X8X6X8X6X6X7X7X9X7X7X7X8X7X6X6X6X6X6X7X6X7X6X8X9X9X9X9X9X9XeXeX9XwXeXeXeXeXjXeXjXjXwXeXeX9XqXqX9X7X8X8X6X6X6X6X6X6X6X8X8X9X9XeXeXeXwXeXeXeXwXeXwXjXwXjXeXeX9XwXeXqXeXeXqXeX7XeXeXeXeXjXeX", ">X6X>X>XoXoXoXoX.X.X.XK..XD.K.t.t.r.t.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.8.*.#.5 1 :X:X>X>XX>X6X>X6X7X6X6X9X9X9X9XeX9XqXjXeX9XeXeX8X9XwXrX9XcXeX8XjXqX9X9XyX8XqXqX,X6X8XX>X>XoX>XoX.X.X.XD..X.XD.K.t.t.t.t.9.9.9.9.8.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.6.=.#.5 1 oX;X>X>X>X>X>X6X6X>X6X7X6X7X6X9X7X7X8XjXeXeXjXfXfXkXjXdXwXeX7XeX5XwXhXwXwX0X9XrX6XwXwX*X8XeX6X9X8X8X8X1X1X6XwX7X$XwX2X4X8X6XgX6XX*X>X>X>XoXoXoX.X|.:XXXD.D.:Xt.t.t.r.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.8.=.#.5 1 :X:X>X;X>X>X>X>X6XOX6XOX6X6X6X7X7X9X8XeXeX9X0XI r . X r W jXkXdXQ u p . + H fXhXF + + p p + p + + i $ fX0XF + + g . p + h P o.qX7XiX>X_ r + + } 0XwXS k w r !.hXyXwX_.r w g L 4XhXR p $ p h W 2X9X6X! X p r . F fXkXeXqXeXeXgXeXeXeXeXeXeXeXeXgXeXeXeXeXeX0XqXeXeXeXeXeXwXeX", "6X|.>X>X>XoX,XoXoXoXD..X:XD.D.y.t.r.t.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.8.*.#.5 1 :XoXoX:X>X>X>X>X6X6X6X6X6X6X6X6X7X9XeX9X8XwXhXC . k p p c 8XcXwXc p i p d F eXeXV + w y p p p p p $ eX8XJ p p + e q e e r Q -X7X8X} w p d } 0X8XD p p w ^.hXeXjX!.w + k V hXjXV p + @ x wX9X0Xc p p p w L 0X9X9XeXeX9XeXeXeXeXcXeXeXeXeXeXeXeXeXeXeXeX8XwXqXeXeX0XeXwX", ">X6X>X>X>X>XoXoXoXoX:XK.:XD.K.t.t.r.r.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.8.8.=.#.5 1 :X:XoXoX>X>X>X>XoX6X6X6X6XOX6X6X6X8X8XgXeX8XhXC f O # i e }.eX#Xw p O p p F eX9XF i @ O p + w . p k r 8X6XC i p k . w f + # # p T.2X6X] w p . ( 8XeXD p f `.jXyXgX/.y + . V wX8XC q r f p p |.X>X>X>X>X>X:XoXoX:X.X.XD..Xy.t.r.r.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.r.9.9.9.9.9.9.9.6.=.#.5 1 oX>X:XoX.X>X|.>XOX6X>X6X6X7X6X7X6X7X9XqXeX9XwXC p O z O + W.hXY.+ + h . w L 9XeXR i X u !.eXeXeX7XfXfX9X-XC e p . ).8X{.U w + i c 8X7X} + @ + _ wXeXF # % + !.kXeXcX!.p # k F jXeXD d + k + @ T.8XO.w + h p + Z 9XiX7X9X9XwX9XeXeXeXeXeXeXqX7XeXeXeXeXeXeXeXeXwX0XeXeXwXeXeX", ";XoX>X>X>X>X>X>XoXoX:X.XoXD.:Xt.y.r.r.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.8.=.#.5 1 :XD.:XoXOXoX>X>X>X6X6X6X6X6X6X7X7X7X9X8X9X9XhXC w p R w w Q wXW p w ! e p F hXqXR p p w ~ ' ) ' ] ] R.9XqXF i i r Q.8X9X&XX i i y ;X8X} p w r ' 8XqXJ . e r ^.eXeXfX`.p O p C jXwXD w w R k + Q 4X! . k G . + F -XeX9X9X7XqX9XeX9XeXeXeXeXqXeXeX9XeXeXwXeXqXwXqXeXeXeXqXjXeX", "6X6X>X>X>X>X>X>XoX>X.X.XoX:XD.r.y.t.r.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.8.*.#.5 1 .X|.:XoXoXoXoX>X>XOXOX6X>X6X6XOX7X7X8X9XeX9XfXE + i ] h p m fXv + l } . i D wXjXC i i d p + f + p w ' ,XqXC q + r !.7X9X0XC e p X _.X>X>X>X>X>XoXoXoX:X:XoXK.:Xy.r.r.r.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.6.=.#.5 1 D..XoX.X>XOXoXOX>XOX>X>X*X6X6X6X6X6X6X8X6X0XwXV p } H h O ^.+ p F ] . p V hXeXF w p f o + + p a _ 7X6XD O # g !.0X6X6XC p q h m.6X} q p p _ 7X7XD i @ + /.9XeX5X_.p i a V eXeXD p p .E O p ).X p R .e p C 0XX>X>X>XoX>XoXoXoX.XoX:X.Xy.y.r.r.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.r.9.9.9.9.9.9.9.r.9.9.9.9.6.=.#.5 1 P..X.XoX.X>X.X>X>X>X>X>X>X6XoX6X6X6X7X8X8XqX9XR p w / ) X p V p e ] ' O p K hXwXF i d . [ } ..] .._ E.7X8XV q + X R.7X6XeXF . p o !.9X_ w q w ] 7X6XF w + w +XeX9XyX!.f i q F cXwXF + i [ .p q V + p ' _ e p H 8X6X0X7X7X7X8XeX9XeXeX9X9XeX9X9X8X8XeX8X9X9XqXeXeXeXeXeXeXyX", ">X6X>X>X>X:XoXoX:XoXoX:XXX:X.Xy.y.r.y.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.6.=.#.5 1 .X.X.XoXoX.X>X.XoXOX>X>X>X>XoX6X6X6X7X6X6X7X9XC d % o.{.+ @ + d O @X..p e K wXwXR p O e ^.wX6X8X6X6X9X7X0XC w + f R.0X9X2Xf p p + }.7X` h p p _ 7X9XC g @ p (.0XaXxXQ.w + p Z jXwXF p . ' {.w p g q p `.} p + H 8XqX7X6X7X7XeX9XeX9XeXeXeXeX9XeXeX8X9XeX9X9XeXeXeXeXwXeXjXjX", ">X>X>X>X>X:XoXoX>X>X:X:XOX.XoXt.y.t.r.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.8.=.#.5 1 D.D.D..XoX.X.X>XOX>X>X>X>X>X6X>X6XOX6X>X1X7X9XV p p } 8Xx p p x 7X} + p L 0XwXF + X g !.eX9X9XqXaX7X7XqXC w . f W.8X|.W p a i A 0X7X| p O d _ 6X9X_ p + w L wX9XeXP . k . o.9XjXC + + o.eXl # + e l hX} p O F 7XgX0X8X8XqX7X8X9XeX8X9XeX9XeX8XeX8X9XeX9XeXeXeXeXeXeXeXjXjX", ">XOX>X>XoXoXoXoX:XoXoX.X.XoX.Xy.r.r.r.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.6.*.#.5 1 D..X.X.X.X.XoXoXoX>XoX>XoX>X>X6X>XOXqX6X9X6X6XV e i o.6XK p q p R 8X .p p V wXyXF p # O d p w w p p r E.8XV d p # X r p . # p 0 T.>X>X_ e p ' 6X9X`.y d i i h B g q k + w %XeXjXV @ h ` X>X>XoXoXoXoX:X:X.X.XoX.X.Xt.y.y.r.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.8.=.#.5 1 D.D.D.K..X.X.X.X.X.X.X.XoXoXoX>X>X6XOXoX>XqX8XD O O ' 6Xo.+ f .8X^ p i T wX8XV p p f p O i O p O . !.2XV a 9 p p + & + p w Q *X6X6X_ p # d } 8X8XwX..e p i z p d + 0 n.8X9X0XF + p ' 8Xn.w % i ] 8Xo.+ + F 8X6X7X7X7X7X6X9X9X9X8X9X8XeX8X9X9X8XeX9X9XeXeXeXeXeXjXjXjXjX", "OX>XoXoXoXOX.XoX.X:XoXoX.XoX.Xy.r.r.r.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.r.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.6.=.#.5 1 D.D..X.X.X.X.X.X.XoX.X>XoXoX>XOX>X>X1X>X>XqX|.L w w ' 7X+Xr t g ^.qX_ h . F fXqXE . . w w p p w p p + _.-XF w r k . w p j R T.6X9X,X9X_ y . f ` 6X9X6XqXW.n g . p + p M T.eXwXeX0XK p . ..kXQ.g $ w `.8X] f p H 7XeX7X7XeX7X9X6X7X7X8X8XqX9XeX7X9X9XeX9XsXeXeXeXeXjXeXjXjXjX", "OXOXoXoX.X.X.X.X.X:X.XoX.X.X.Xt.y.y.r.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.6.=.#.5 1 D.D..X.X[.K.D.D..X.X.X.XoXOXoXoXoX>X;X6X6X=XuX0X0X6X8X1X9X0XfX0XrXeXqX&X8X6XeXiX6X8XgXqX7X7X6X6X7X7X6X,XuX6X8X>X-X6X6X>X6X6X>X6X6X7X>XqX2X2X6XXqXfX2XE.!.R.%X-XeX9X7XeXeXwXrXwXeXqX8XkX9XeXwXsX9X9XdX8X9X7X9X9X9X7X9X6X7X0X8X7X7X7X7XeXeXeX9XeXeXeXeXeXeXeXeXjXjXjX", "oX:X:X:X:X:X:X.X.X:X.X.X.X.X.Xt.r.y.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.8.6.=.#.5 < D.K..XK.K.D.D..XD..XD..X.XoXoXoX>X.X>X>X>X6X6X>X7X6X*X6X8X8X9X9X9X9X9X9X8X8X7X7X8X6X8X6X6X7X7X6X6X6X6X6X6X6X6X,X6X6X6X6X6XoX>X6X6X6X6X7X7X9X7X6X7X6X8X8X7X6X9X6X9X6X7X6X8XqX7X9X8X9XeXeXeX9XeXeX9XeX9XeXeX9XeX8XqX7X8X8X8X0X7X7X8X7X7X8X7X9X7X9X9XeXeX9XeXeXeXeXeXjXjXjXjXzX", "oXoX:X:X.X.X.X.X:XL..X.X.X.X.Xt.r.y.r.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.r.9.9.9.9.9.9.9.9.9.r.9.9.9.9.9.9.8.=.#.5 1 D.K.K..X.X X[.D..X.X.X.X>X.X.XoXoX>X>X>X>X>X>X>X>X6X6X6X6X6X9X9X7X9X6X9X6X6X6X6X6X6X6X6X7X7X6X6X6X6X6X6X7X7X6X7X>X6X>X>X*X6X6X6X6X6X6X7X6X7X6X9X7X7X9X6X7X8X6X6X6X6X6X7X8X7X8X7X9XwXeX9XeXeXeXeXeX9X8XeX9XeX9XeX9X9XeX8X0X7X7X7X6X7X9X9X7X9X7XeXwX9XeX9XjXeXeXjXeXeXyXjXjXjX", ">XoX:X:X:X.X.X.X.X.X.X.X.X.X.Xt.r.r.y.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.8.8.=.#.4 < D. X XK.D..XD..X.XD..X.XoX.XoXoXoX>X>X>X>X>X>X6X>X6X6X6X6X6X6X8X6X6X6X6X6X6X6X6X6X6X6X6X6X7X7X6X6X6X6X6X6XOX6X>X6X6X6X6XOX6X6X>X,X6X6X7X6X6X6X6X6X9X9X6X6X6X7X6X6X6X6X6X6X0X7X7XqX9X9XeXeX9XeXeXeX9X9XeXqX8XeX9X9XwX9X9X8X7X7X7X7X8X9X6X8X6X7X7X7XeX8XeXeXeXeXeXeXjXjXeXjXjX", "oX,XoXoX:X.X.X.X.X.X:X.X.X.X.Xt.r.y.r.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.6.=.#.5 1 D.K.D.K..XD..X.X.X.X.X.X.X.X.XoXoXoX.X>X>X>X>X>X6XOX6X>X6X6X7X6X7XOX6X6X6X6X6X6X6X6X6X6X6X6X6X6X7X7X6X6X6X6X6X6X6X>X>X6X6X6X6X6X6X6XOX6X6X6X6X6X6X9X6X6X6X6X6X6X6X6X6X6X6X6X7X7X9XeX8X9X9XeX9X9XwX9X8X8X8X8X8XeX9X9X9XeX7X7X7X7X6X8X7X8X8X7X8X7X8X7XeX9XjXeXeXeXeXjXeXjXjXjX", ":X,XoXoXoX.X.X.X.X.XD..X.X.X[.t.t.9.t.9.9.9.9.8.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.8.*.#.5 < D..XK.K..XD..X.X.XD.oXD.oX:XD.oX.X>X.XoXOX>X>X>XOX6X6X>X>X6X6X6X6X6X6X6XOX6XOX6X>X6X6X6X6X6X6X6X7X,X6X,X6X6X>X6X6X6X6XoX6X>X6X6X6X6X6X7X6X6X6X6X9X6X7X6X7X6X6X6X6X7X6X6X,X6X9X7X8X7X0X7X7X7X9XeX9X9X7X8X7X7X7X7X7X7XwX9XeX9X9X9X7X6X8X7X6X7X6X9X8X9X9XeXqXeXeXeXjXeXjXjXjXjX", ",X>XoXoXoX:X.X:X.X|.:XXXoX.X.Xt.r.t.r.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.8.8.=.#.5 1 D.K.D..XK..X[.K.D.oXD.oX.X.X:XoX.X:X.X>X>XoX>X>X>X>XoX6X6X>X6XOX>X6X>X6X6X6X6X6X>X6X6X6X6XoX6X6X9X6X6X6X6XOX6X6XoX6X6X7X6X6X6XOX6X6XoXOX6X6X6X>X,X6X6X6X6X6X,X6X6X6X6X6X7X7X9X9X7X8X7X8X9X7X7X9X9X6X8X6X8X7X7X7X9X9X9XeX7XqX7X9X8X8X7X6X8X8X8X7X9X9XeX9XeXeXeXeXeXeXeXjXjXjX", "OX>XoXoXoXoXoX:X:X.X.X.XoX.X.Xt.t.r.t.9.9.9.9.9.r.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.6.=.#.5 < D.K.K. X.XD.D..X.X|.D.oX:XoX:XD.oX:X>X.XoX>X>XoX>X>X6X>X>X>XOX>X>X>X>X>X>XOX>XX6X6X|.oX>X6X6X6X6X6X6X6XOX6X>X6X>X*XOX6X>X6X6XoX7X6X6X6X6X6X>X6X7X7X6X6X6X6X6X6X6X6XOX7X7X9X7X7X8X8X6X7X8X7X8X8X8X7X6X7X8X7X8X9X8X9X8X9X7XqX8X6X6X6X6X7X6X9X9X9XeXeXeXeXeXeXeXeXwXeXjXjXhX", "OX,XoX>XoXoXoXoX.X:X|.XX.XD.|.t.r.t.t.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.8.8.=.#.5 < D.K..XK.K.[.D.K.D..XD.:XD.D.:XoXoX.XOXoX>XoX,X|.>X>X>X>X>X>X>X|.>X>X>X>X6X>X>X>X>X>X>X6X6X*XoX6X,X6X6X,X6X6X6X6X6X6X6X6X6X>X6XOX*X6X6XOX6X>X6X6X6X6XOX6X6X,X7XOX6X6X6X7X7X7X7X6X8X7X7X7X7X6X6X9X7X6X9X9X8X6X6X6XeX7XeX8XqXeX9X6X8X6X8X6X6X7X8X9XeXeXeXeXeXgXeX0XeXwXjXeXjXjX", ">X>X>X>X>X>XoXoX.XoXP.D.;X|.[.r.r.t.r.9.9.9.9.9.9.9.9.9.9.8.8.9.9.9.9.9.9.8.9.8.9.9.8.9.9.9.9.9.9.9.9.6.=.$.4 1 J. XK.K..XK..X.XD.D..X.XXXD..X.XoXoXoXoXoXoXoX,XoX>X,X,XoXoXOX.X>X>XOX>X,X>X>X,X>X>X6X>XOX6X>X6X6X6X>X6X6X6X6X>X6X6X6X>X>X6X6X6X6X*X6X>X6X>X6X6X6X6X6X6X6X6X7X6X6X,X6X7X6XiX6X7X7X9X6X9X7X0X6X6X6X6X7X8X6X6X6X6X8X7X7X7X7X7X7X8X7X6X7X7X7X7X7X7XeX9XeX9XeXeXeXeXeXeXjXjXzXjX", ",X>X>X>XoX>XoXoXoXOXOX[.|..X|.t.t.t.r.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.8.9.9.9.8.9.6.*.@.4 1 G.].K.K.K.K.D.D.D..X.XK..XK..X.X.XoXoXoXoXoXoXoX>XoXoX>XoXoX>X.XoXoX>X.XoX,X>X>X6X>XoX6X6X>X6X6XOX6X>X6X|.6X>X6X>X6X6X6X6X6X6XoX6X>X>X*X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X7X6X9X9X8X6X7X8X8X6X8X6X7X6X6X6X0X6X6X8X7X7X7X7X8X6X6X6X6X6X6X6X7X9XeXeXeXeXeXeXcXeXeXeXwXjXhXzX", "oXoX>XOX>X>XoXoXoX.XoXoX.X:XoXt.t.t.t.9.9.8.8.9.9.9.9.9.9.9.9.9.9.9.9.9.8.9.9.9.9.9.9.9.9.9.8.9.9.9.6.=.&.+.2 = S.D.K.K.K.K.K.D..XD.K..X.X.X.X.X:X:XoXoX.XoX.XoX.X>X>X.XoXoX.X.XoX.X.XOXoX>X>X>X>XOX>X>X>X>X>X>X,X6X>X>X>X6X6X6X6X6X>X6X6X>X6X6X>X6X6X6XoX6X6X6X6X6X6X6X6X6X8X6X6X6X,X6X6X6X6X7X8X6X6X8X7X6X8X7X8X6X8X7X6X6X6X8X7X8XqX8X7X7X6X6X6X6X6X6X7X6X7X7X9XeXeXeXeXeXeXeXeXwXeXjXjXkX", ">X,X>X>X>X:X>XoXoX>XD.:XL.K.:X9.9.9.8.6.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.=.*.+.1 - = D.G.K.S.K.D.D.D.D.K.K.K.K.[..X.X.X.X.X.X.X.X:X:X:X:XoX:X:X.X:X.X.X.X|.oXoXoXoX>X>X>X>X>X>X>X>X>X>X>X6X>X>X>X>X6X>X>X6X6X6X6X|.>X6XoXoX6X6X6X>X6X8X6X6X6X6X6X6X6X6X6X,X6X6X6X7X6X8X7X7X9X7X6X8X8X8X7X6X8X8X6X6X8X6X7X8X8X6X7X6X6X6X6X6X6X6X8X8X9X9X9XeXeXeXeXeXeXeXeXjXhXjXjX", ">XoX>X>X>X>XoXoXoXoXoX.XK.D.:Xq.6.>.=.&.#.$.$.$.$.$.#.#.$.#.$.#.$.#.#.#.$.$.#.$.$.#.$.#.#.$.$.#.#.#.@.4 < = ; ; A.F.J.S.K.S.S.D.K.K..XK..XK..XD..X.X.X.X:X.XoX:XoXoX.X:XoX.X.X.X.XoX.X:X.X>X>XoX>X>X>X>X>X>X>X>X>X>X>X>X>X>X6X6X6X6X6X>X6X6X;X6X*X6XoX6X6X6X>X6X6X6X6X6X6X7X6X6XOX6X6X6X6X6X7X6X7X7X9X7X8X7X9X9X7X8X8X7X6X6X6X6X8X7X7X6X6X6X6X6X,X6X6X6X6X6X6X7X7XqX9XeXwXqXeXeXeXjXhXjXzXzX", ":X>X>X>X>X>X>X:XoXoXoXoX,X|.|.<.;.$.@.5 2 2 4 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 = = ; ; 7 V.L.F.J.K.K.D.D.D.K.K.K..X.X.X.X.X.X.X.X.X:X.X.X.X>X.X.X.X.X.X.XoX.X:X.XoX.XoX>XOXoX:X>X>X:X:X>X>X>X>X>X>X>X>X>X6X>X6X>X6X|.6X>X>XoX6X6X6X6X6X6X9X6X8X7X6X6X6X6X>X6XoX6XoX6X6X6X6X8X7X7XeX7X7X7X7X7X8X6X8X6X8X6X6X6X6X7X6X6X6X6X6X6X6X6X7X6X7X7X7X7X9X9XeXeXeXeXeXeXyXjXjXjX", ">X>X>X>X>X>X>X>X>XoXoX>X>X>XXXj.-.6 1 - = = = = = = = = = = = = = = = = = = = = = = = = * = * * = = = = ; : 8 v.H.C.J.S.S.S.S.D.D.K.K..XK.K..X.X.X.X.X.X.X.X.X.X.XD.D..X.X.X.X.X.X.X:X.X.X:X.X.X.X>X|.oXoXoX>XoX>XoXoX>X>X>X>XX6X>X6X>X6X>X>X>X6XOX6X6X7X9X7X6X9X6X7X6X6X6X6X6X6X6X6X6X7X6X8XeX7X7X7X9X7XqX7X7X6X8X6X8X6X6X6X6X7X6X6X>X6X6X6X7X6X7X7X8X8X0X0X9XeXeXeXqXwXjXjXjXhXjXzX", ">X,X>X>X>X:X>XoXoX>X>X:XD.|.I.M.2.3 = = = = = = = * = = = = = = = = = = = * = * = = = = = * * * = = = = , b v.N.C.S.S.S.K.S.S.S.D.K.K.D..X.X.X[..X.X.X.X.X:XD..X.XD..X.X.X.X.X.X.X.X.X.X.XoX.X>XoX.XoXoXoXoXoXoXoXoXoX|.>X>X>X>X6X>X>X>X>X>X>X>X>X6X6X6X6X6X6X6X9X6X9X6X6X9X6X6X6X>XoX6X6X6X6X7X7X7XeX9XeX8XqX7X8X7X6X7X6X8X6X6X6X*X6X6X6X6X6X6X,X6X6X7X7X7X7X0X8X8X8X9X8XqXeXeXwXeXyXjXzXjX", ">X>XoXoX,XoXoXoX,XoX:X:X.X.X.X.X.X[..X.X.X.X.XK..XD..X.XK.K.K.D.D.K.J.J.J.C.B.B.B.B.B.B.B.B.C.C.F.F.F.J.G.S.S.S.S.S.S.S.S.J.J.K.J.K.D.D.D..X.XD..XD.D..X.XD..X.X.XK..X.X.X.X.X.X.X.X.X.X.X.X.X.X.XoX.X:X:X.XoXoX>X:X>XoXoXoX>X>X>X>X;X>X>X6X>X6X6X>X6X6X6X6X6X6X7X6X8X8X6X6X8X6X6XX6X6X6X6X8X6X8X9XeX7X7X8X7XeX7X7X8X6X6X6X6X6X6X6X6X6X>X6X6X6X6X6X6X6X6X9X7X8XeX8X9XqXeXeXeXeXjXyXjXzX", ",XOXoXoXoXoXoXoXoXoX,XoX:X:X.X.XXX.X.XD..X.X.X.XD..X.XK..XD.K.K.S.K.J.J.G.C.C.C.B.B.C.B.C.B.C.C.G.F.S.C.S.Z.S.S.S.S.S.S.S.J.S. XK.K.K.D..XK..X.X.X.X.X.XD..X[..XK..XK.K..XK..X.X.X.X.X.X.X.XoX.X.X.X.X:X:X|.oXoX:X:XoX>XoX>X:X>X>X>X6X>X>X6X|.>X>X6X6XoXOX6XoX6X7X6X7X6X6X8X6X6X6X2X6X2X2X6X6X6X8X7X9XwX9XwX8XeX8X8X8X9X7X8X6X6X6X6X*X6XOX6X7X6X7X7X8X7X8X6X8X6X9X9X7XeXwXeXeXeXjXjXeXjXkXzX", "oX>X>XoXoXoXoXoXoXoX:X:X:X.X.XD..X.X.XD..XD.K..XK..XK..XK.K.D.K.K.J.J.J.S.C.C.C.B.B.C.B.B.C.C.C.C.F.S.S.S.C.S.S.S.S.S.S.J.S.S.K.J.K.D.K.K.K.D..XD..X.X.X.XD.K.K.:XK.D.K.K..XK.K..X.X.X.X.X.X.X.X.X.XoX.X.X:XoXoXoX:XoXoXoX>XoX>X>X>X6X>X;X>X>X6X6X6XOX6X6X6X6X7X6X6X6X6X6X6X6X6X6X6X6X6X>X6X6X6X7X7X7X7X9XqX7X7X7XeX9X7X7X6X7X7X6X6X6X6X6X6X7X6X6X6X7X7X6X8X7X9X9X9XeXeXeXeXjXjXeXjXjXjXzXzX", ">XoX,XoX,XoX,XoX,X,X:X:XoX.X.X.X.XD..X.X.XK.[..X.X[.XXK.K.K.K.K.J.J.J.J.C.C.C.C.C.C.F.B.C.C.B.C.C.G.S.S.S.S.S.S.S.S.S.S.S.J.J.J.K.J.K.K.K.K..XK..XD..XD.D..XK..XK.K.K.K.XXK..X.XD.D..XK..X.X[..X.X.X.XoX.X:X:XoXoXoXoXoX:X>X>X>X>X>X>X>X>X>X>X6X|.6X6X6X*X6XOX6X6X6X7X7X8X6X9X6X6X6X6X6X6X6X6X6X6X8X9X7X9X8X9X7X9X9X6X7X9X8X8X6X6X6X8X6X6X6X0X8X6X7X7X7X7X6X7X7X9X9XeX9XeXeXqXeXjXeXjXjXjXjX", ">X>XOX>X>X,XoX,XoX:X:X:X:XD..X.XD..XD..XD.[..XD..XK..XK.K.K.D.D.J.K.S.S.G.C.C.C.C.B.C.C.C.B.C.C.C.C.S.S.S.S.S.S.S.S.J.J.C.K.S.J.J.J.D.D.K.D.D..XD..XK.[. X.XD.K.K.K.D.K.D.K.K..X.X.XD..X.X.X.X.X.X.X:X.X:X:X:X.XoXoXoXoXoXoX>X;X>X>X>X6X>X>X>X>XOX6X*X6X>XOX7X6X6X6X6X6X6X8X7X6X6X6X6X8X6X6X6X6X6X6X0X8X9X7X8X7X8X7X6X7X8X7X7X8X8X8X8X7X9XeX8X8XeX9X9X9X8X0X9X9X9XeXeXeXeXjXeXjXjXjXjXjXzXjX", ">X>X>X>X>XoXoX,XoXoX:X:X:XoX:X.X.XD..XK..XD.[.K.[..X.XK..XK.D.D.K.J.S.G.S.S.C.C.C.C.C.B.C.C.J.V.C.C.S.S.S.S.S.S.K.S.K.S.K.J.J.J.J.J.H.D.K.K.D.K..XK..XK.K.D.K.D.K.J.J.D.D.K. X.XD..XD.D.D..XD..X.X.XD..XD.oX.X:X.X:XoXoXoXoX>X>X>X>X>X>X>X>X>X>X>X>XOX6X6X6X6X6X6X6X6X6X7X7X6X6X6X6X6X6X8X6X6X0X6X6X7X8X8X8X8X6X8X6X0X7X0X8X7X7X6X7X7X8X8X8X9XeX8X9X9X9X9X8X8XeX9XwXeXeXeXeXeXjXeXjXjXyXjXzX", ">X>X>X,X,X,XoXoXoXoX:X:X:X.X.X.XK.K.[.[.[.D..X[.K.[.XX.XK.K.D.S.J.J.K.K.C.C.C.S.C.C.C.F.C.C.C.C.C.S.K.S.S.S.S.S.S.S.S.K.J.K.J.K.K.S.S.K.K.D.D.K.K.K.K. X.XK.S.D.S.J.J.J.D.D.K.D.D. X[.D.[.D.D..XD..XD.:XoXD..X.X.X:XoXoXoX>XoX>XoX>X>X>X>X>X>X>X>X6X6XoX6X6X6X6X6X6X6X8X8X9X6X7X8X7XwX6X0X6X6X6X6X6X6X6X8X6X6X6X6X8X8X8X7X7X8X8XwX9XqX8X9XeXeX9XeX9XeXeXeX9X9XwXeX9XeXwXeXjXjXeXjXeXjXvXzXzX", ">X>X>X>XoXoXoXoX,XoX:X:X.X.X.X.X.X[.K..XK..XD..X.XD..XK..XS.D.S.J.J.Z.Z.S.S.C.V.C.C.F.C.C.F.C.C.C.V.S.C.S.S.S.S.K.G.K.L.K.J.J.C.S.S.S.G.S.D.D.K.D.K..XK.D.K.S.K.K.K.K.K.J.K.S..XD.D.K.K.K.K..X.XK..X.X.X.X:XoXD..X:X:XoXoXoXoX;X:X>X;X:X>X>X>X>X>X>XoX6X>XOX6X6X6X6X0X7X8X7X7X7X0X8X8X8X8X8X6X6X6X6X6X6X6X8X6X6X6X6X8XqX8X9X9XeX9X8X9XeX9X9XeXeXeXeXeXeXeXeX9XeXeXeXeXeXwXjXeXjXwXjXeXjXjXzX", ">X6X>X>X>XoXoX>X>XoXOX.XoX.X.X.X.X.X.X.X.X.XK..X.XXX.XK.K.K.D.S.K.S.S.S.C.C.C.J.C.C.C.C.C.C.C.C.F.C.F.J.J.S.S.J.J.J.J.K.C.J.J.J.K.S.K.S.G.S.S.K.K.J.K.K.K.D.D.D.D.K.S.S.D.D.K.K.D.S.K.K.K.K.K..XK..X.X[.K..X.X.XoX.XoXoX.XoXoXoX[.oX.XoXoX,XoX:X,X,X>X6XOXoX6X6X6X6X6X6X6X7X9X9X7X9X7X8X8X7X7X8X7X7X7X7X7X6X6X7X7X7X6X7XqX9X7XeX7X7XeXeXeXeXsXeXeXeXeXeXeXeXwXeXeXeXeXeXeXjXjXeXjXvXjXjXzXzX", "6X6X>X>X>XoX>X>XoX>XoX>X:X.X.X.X.X:XD.K..XK..XK.K.K..XK.K.D.D.D.J.K.S.S.C.J.C.C.C.J.C.J.C.J.C.C.C.C.F.F.C.C.S.J.J.J.K.J.K.K.C.J.S.K.S.S.S.S.S.K.J.J.K.D.K.D.D.K.K.S.S.D.D.D.K.K.D.D.S.K.D.K.D.K..XK..XD..X.X.X.X.X.XoXoX|.oXoX.XoXoXoXoXoXoXoX,X>X>X>X>X6X6X6X6X6X6X6X6X6X6X7X9X7X9XeX8X8X9X8X7X7X7X7X6X6X6X6X6X6X8X7X7X9XeX9XeXeXeXeXqXeXeXcXeXeXeXeXjXjXeXwXeXjXeXeXjXeXeXeXjXjXeXjXjXjXzX", "6X>X>X>X>X>X>X>XOX>XOX.X.X:X.X.X.X.X.X.X.XD..XK..XK..XD.K.K.D.S.J.S.K.C.J.C.C.J.C.C.C.C.C.J.C.C.C.J.F.F.J.C.S.J.S.J.C.K.J.K.J.J.J.J.J.S.S.S.K.J.J.Z.J.J.S.K.J.K.S.S.S.S.S.S.S.S.S.K.K.S.K.K.D.K.K. XK..XD..X.X.X>X.XoXOX.XoX.XoXoXoX.XOXoXoX>X,XoX>X>X>XoX6XoX6X6X6X>X6X6X6X6X7X7XeX8X8XqX8X8X8X7X6X9X8X6X6X6X6X7X9XwX9X8X9X9X9X9XeXeXeXeXeXeXeXjXsXjXeXeXeXjXeXeXeXeXeXcXjXeXjXjXjXjXzXkXzX", ">X6X>X>X>X>X>X>X>X.X>X>X.X.X:X.X:X.X.X.X.X.X.XD..X.X.XD.D.K.D.S.S.S.S.S.S.S.C.J.F.C.C.C.C.C.C.C.F.F.J.J.S.S.S.S.S.S.J.J.K.J.K.K.S.S.S.S.G.K.Z.S.G.K.K.Z.Z.K.K.H.K.S.K.K.S.S.K.S.S.J.S.S.S.S.K.K.D.K.K.K..X.X.X.X.X.X.X.XoXoXoXoXoX.XoXoXoXoXoX:X>XOX>X>X>X>XoX6X*XoX6X6X6X7X6X7X7X7X7X7X7X7X7X9X7X7X9X7X8X7X8X8X7XeX9X8XeXeXeXeXeXeXeXeXeXjXeXjXeXeXeXeXjXeXjXeXvXeXjXjXyXeXjXeXjXjXzXzXjXzX", "6X6XoX>X>X>X>X>X>XoXoX>XoX.XoX.X.XoX:X.X.X.X.X.X.X.XK.K.K.K.D.S.K.S.S.S.J.C.C.C.C.C.C.C.C.C.C.J.J.F.F.J.J.C.S.S.S.S.S.J.S.K.K.S.S.S.S.S.S.J.K.G.S.S.S.G.S.K.G.S.S.S.S.S.S.G.S.S.S.S.S.S.J.K.K.K.D.K.K.K.D.K.:X.X.X:XoXoX.XoX:XoXoXoXoXoXoXoXoXoXOXoX;X>X>X>X>X>X>X6X>X6X>X6X6X6X8X7X6X7X6X9X7X9X7X9X9XeX7X8X8XqX9XeXeXqXeXeXeXjXeXjX9XeXeXgXeXeXeXeXeXeXeXjXeXjXjXjXeXyXjXeXjXjXjXjXkXzXzXzX", ">X6X6X>X>X>X>X>X>X>X>X.XoXoXoX.X:X.X:X.X:XoX:X.X.XK..XK.K.K.D.D.J.S.J.K.J.J.J.C.F.J.C.C.J.C.C.C.C.F.F.C.J.S.S.S.S.S.S.J.S.S.K.S.S.S.S.S.S.S.J.J.S.S.S.S.S.S.S.S.S.S.S.G.S.S.S.S.K.S.G.S.J.J.K.K.D.D.K.K.K..XK..XoX.X.X.XoX.XoX,XoXoXoX>X>X:XoX>X>XOX>X>X>XOX>X>X>X>X6X>X6X6X6X6X6X8X7X8X8X9X9X7XeX8XeX9XeX7X8XeXeX9XeXeXeXqXeXeXeXeXqXeXeXeXeXeXeX8XjXeXjXeXjXeXeXeXjXjXjXjXjXjXjXjXjXjXzXjX" }; micropolis-activity/images/tiles-14.xpm0000664000076400007640000000264110724145723020373 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "32 32 9 1", " c black", ". c #00003F3F0000", "X c #3F3F3F3F0000", "o c #3F3F3F3F3F3F", "O c #7F7F3D3D0000", "+ c #727272727272", "@ c #3C3C0000FFFF", "# c #FFFF3C3C0000", "$ c #DFDFDFDFDFDF", /* pixels */ " ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $ $$$$$$$$$$$$$$$$$$$$$$$$$$ + ", " $$ $$$$$$$$$$$$$$$$$$$$$$$$ ++ ", " $$$ +++ ", " $$$ @@@@@@@@@@@@@@OXXXXX@@ +++ ", " $$$ @@@@@@@@@@@@XXXXOXOX@X +++ ", " $$$ @@@@@@@@@@@@OXOX@X XX@ +++ ", " $$$ @@@@@@@@@@XOXXXOXXX@X@ +++ ", " $$$ @@@@@@@@@XXXOX@XXX@X@@ +++ ", " $$$ @@@@@@@@@XXX XXXXX@@@@ +++ ", " $$$ @@@@@@@OOXX@XXOX@@@X@@ +++ ", " $$$ @@@@@@XXX@@OXX@@@@@@X@ +++ ", " $$$ @@@@@@XX@@XX@@@@@@@O@@ +++ ", " $$$ @@@@OX@ XXX@@@X@@@XX@X +++ ", " $$$ @@@@XX@OXX@@@@@@@@OXOX +++ ", " $$$ @@@X@@X@@@@@@@@@@OXX@@ +++ ", " $$$ @@X@@X@@@@@@@@@@OOXXX@ +++ ", " $$$ @@ @ @@@@@@@@@@@X@X@@@ +++ ", " $$$ @@ @ @@@@@@@@@@X@X@@@@ +++ ", " $$$ @@ @ @@@@@@@@@o@o@@@@@ +++ ", " $$$ @@ @ @@@@@@@@@o@o@@@@@ +++ ", " $$$ @ @@@ooooo@@@@@ +++ ", " $$$ . o o ...o o o..... +++ ", " $$$ . .......#..... +++ ", " $$$ .........#...#........ +++ ", " $$$ ...................... +++ ", " $$$ +++ ", " $$ ++++++++++++++++++++++++ ++ ", " $ ++++++++++++++++++++++++++ + ", " ++++++++++++++++++++++++++++ ", " " }; micropolis-activity/images/tiles-5.xpm0000664000076400007640000000406210724145723020312 0ustar simcitysimcity/* XPM */ static char *tiles__[] = { /* columns rows colors chars-per-pixel */ "69 26 6 1", " c black", ". c #727272727272", "X c blue", "o c cyan", "O c yellow", "+ c #DFDFDFDFDFDF", /* pixels */ " ", " ................................................................. ", " . ............................................................... + ", " .. ............................................................. ++ ", " ... +++ ", " ... OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +++ ", " ... OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +++ ", " ... OOOOOOOoXXOOOOOoXXOOOOOOoXXXOOOoXXXXXXXXOOOOoXXXXOOOOOOOOOO +++ ", " ... OOOOOOOOoXOOOOoXOoXOOOOOOoXXOOOoXOoXOOoXXOOoXOOoXOOOOOOOOOO +++ ", " ... OOOOOOOOoXOOOoXOOOoXOOOOOOoXXOoXOOoXOOOoXOOoXOOoXOOOOOOOOOO +++ ", " ... OOOOOOOOoXOOOoXOOOoXOOOOOOOoXXXOOOoXOOOoXOOoXXOOOOOOOOOOOOO +++ ", " ... OOOOOOOOoXOOOoXOOOoXOOOOOOOoXXOOOOoXOOoXXOOOoXXOOOOOOOOOOOO +++ ", " ... OOOOOOOOoXOOOoXOOOoXOOOOOOOOoXOOOOoXXXXXOOOOOoXXOOOOOOOOOOO +++ ", " ... OOOOOOOOoXOOOoXOOOoXOOOOOOOOoXOOOOoXoXXOOOOOOOoXXOOOOOOOOOO +++ ", " ... OOOOOOOOoXOOOoXOOOoXOOOOOOOOoXOOOOoXOoXXOOOoXOOoXOOOOOOOOOO +++ ", " ... OOOOOOOOoXOOOOoXOoXOOOOOOOOOoXOOOOoXOOoXXOOoXOOoXOOOOOOOOOO +++ ", " ... OOOOOOOoXXXOOOOoXXOOOOOOOOOoXXXOOoXXXOOoXXXoXXXXOOOoXOOOOOO +++ ", " ... OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +++ ", " ... OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +++ ", " ... OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +++ ", " ... OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +++ ", " ... +++ ", " .. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++ ", " . +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + ", " +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ", " " }; micropolis-activity/images/tiles-50.xpm0000664000076400007640000000313110724145723020366 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "56 24 5 1", " c black", ". c #5D5D5D5D5D5D", "X c gray50", "o c gray75", "O c gray100", /* pixels */ "oooooooooooooooooooooooooooooooooooooooooooooooooooooooo", "o....OOOO....OOOO....OOOO....OOOO....OOOO....OOOO....OO.", "o....OOOO....OOOO....OOOO....OOOO....OOOO....OOOO....OO.", "oOO..................................................OO.", "oOO. oOO.", "oOO. O O O O O O O O O O O O O O O O O O O O O O O o...", "oOO. ............................................O o...", "o... O.OXXo ............OXXo ......OXXo ....OXXo . o...", "o... .OXXo ............OXXo ......OXXo ....OXXo .O o...", "o... O. ............ ...... .... . oOO.", "o... ............................................O oOO.", "oOO. O.... O O.... O O.... O O.... O O.... O O.... oOO.", "oOO. ............................................O oOO.", "oOO. O..OXXo .....OXXo .........OXXo ......OXXo .. o...", "oOO. ..OXXo .....OXXo .........OXXo ......OXXo ..O o...", "o... O.. ..... ......... ...... .. o...", "o... ............................................O o...", "o... O oOO.", "o... O O O O O O O O O O O O O O O O O O O O O O O oOO.", "oOO. oOO.", "oOO.oooooooooooooooooooooooooooooooooooooooooooooooooOO.", "oOO....OOOO....OOOO....OOOO....OOOO....OOOO....OOOO.....", "oOO....OOOO....OOOO....OOOO....OOOO....OOOO....OOOO.....", "o......................................................." }; micropolis-activity/images/tiles-100.xpm0000664000076400007640000000520310724145723020444 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "48 48 6 1", " c black", ". c red", "X c #FFFF7F7F0000", "o c yellow", "O c gray100", "+ c None", /* pixels */ "++++++++++++++++++++++++++++++++++++++++++++++++", "+++++++++++++++++++++XXX++++++++++++++++++++++++", "++++++++++++++++++++X....+++++++++++++++++++++++", "+++++++++++++++++++XXXX..X++++++++++++++++++++++", "+++++++++++++++++++XXX.oXX++++++++++++++++++++++", "++++++++++++++++++XXXX.o.X++++++++++++++++++++++", "++++++++++++++++++OOXX...+++++++++++++++++++++++", "++++++++++++++++++XXXX.X..++++++++++++++++++++++", "++++++++++++++++++XXXXXX..++++++++++++++++++++++", "++++++++++++++XXX+OOXXXX.+++++++++++++++++++++++", "+++++++++++++OXXX+XXXXXX..++++++++++++++++++++++", "+++++++++++++XXXXXXXXXXXXXX+++++++++++++++++++++", "+++++++++++++OXXX XXXXXX.XX..X++++++++++++++++++", "++++++++++++++XXXXOOXXXXX....X.+++++++++++++++++", "++++++++++++++XXXXXXXXXXXXX.XXX.+X.+++++++++++++", "+++++++++++++++XXXXXXXXXXXX.XXX.XX.+++++++++++++", "++++++++++++++XOXXXXXXXXX..........+++++++++++++", "++++++++++++++XOXXXOXXXXXXX........+++++++++++++", "+++++++++++++++XXXXXXXXXXXXXX.++..++++++++++++++", "++++++++++++++++XX+XXXXXXXX...+++..+++++++++++++", "++++++++++++++++++++XXXXXXX...++++++++++++++++++", "+++++++++++++++++++XXXXXXXX.X.++++++++++++++++++", "+++++++++++++++++++XXXXXXXX.X..+++++++++++++++++", "++++++++++++++++++++OXXXXXXX..X.++++++++++++++++", "++++++++++++++++OXXXOXXXXXXXX.XX++++++++++++++++", "++++++++++++++++XXOXXXXXXXXXX....+++++++++++++++", "++++++++++++++++XXXXXXXXXXXXX.XXXX++++++++++++++", "++++++++++++++++XXOXXOXXXXX.X..X...+++++++++++++", "++++++++++++++++XXXXXXXXXXX.X..X...+.+++++++++++", "+++++++++++++++++XXXXOXXXXXXX...XX....++++++++++", "+++++++++++++++++XXXXXXXXXXX..+.......++++++++++", "++++++++++++++++++XXXXXXXXXXX.++.....+++++++++++", "+++++++++++++++++++++XXOXXXX..++....++++++++++++", "++++++++++++++++++++++XXXXXX..++...+++++++++++++", "+++++++++++++++++++++++XXXXXX.++..++++++++++++++", "+++++++++++++++++++++++XXXXXX.++++++++++++++++++", "+++++++++++++++++++++++XOXXX..++++++++++++++++++", "++++++++++++++++++++++++OXXX..++++++++++++++++++", "+++++++++++++++++++++++XXXX...++++++++++++++++++", "++++++++++++++++++++++++XXXX..++++++++++++++++++", "++++++++++++++++++++++++OXXX..++++++++++++++++++", "+++++++++++++++++++++++XXXXX..++++++++++++++++++", "++++++++++++X++++++++++XXXXX.+++++++++++++++++++", "+++++++++++++XXXX+++++XXXXX.++++++++++++++++++++", "++++++++++++++XXXXXXXXXXXXX.++++++++++++++++++++", "+++++++++++++++XXXXXXXXXXX.+++++++++++++++++++++", "+++++++++++++++++X+.XX.X..++++++++++++++++++++++", "++++++++++++++++++++++.+++++++++++++++++++++++++" }; micropolis-activity/images/grpoll.xpm0000664000076400007640000000261710724145723020333 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "32 32 10 1", /* colors */ "` c #000000", "a c #00BF00", "b c #3F3F3F", "c c #3F3F00", "d c #003F00", "e c #3C00BF", "f c #727272", "g c #DFDFDF", "h c #7F3D00", "i c #3C00FF", /* pixels */ "````````````````````````````````", "``gggggggggggggggggggggggggggg``", "`g`gggggggggggggggggggggggggg`f`", "`gg`gggggggggggggggggggggggg`ff`", "`ggg````````````````````````fff`", "`ggg`eeeeeeeehccceeehceecee`fff`", "`ggg`eeeeeeecccceeehccceeee`fff`", "`ggg`eieiehcceieihccicieiei`fff`", "`ggg`ieiehcceiehcccieieieie`fff`", "`ggg`eiihciiihcciiieiiieiii`fff`", "`ggg`iiiciiihcciiiiiiiiiiii`fff`", "`ggg`iib`iib`iiiiiiiiiiiiii`fff`", "`ggg`iib`iib`iiiiiiiiiiiiii`fff`", "`ggg`iib`iib`iiiiiiiiiiiiii`fff`", "`ggg`iib`iib`iiiiiiiiiiiiii`fff`", "`ggg`iib`iib`iiiiiiiiiiiiii`fff`", "`ggg`iib`iib`iiiiiiiiiiiiii`fff`", "`ggg`i``````````````````iii`fff`", "`ggg`dbbbbbbbbbbbbbbbbbbddd`fff`", "`ggg`d``````````````````ddd`fff`", "`ggg`d`b``b``b``b``b````ddd`fff`", "`ggg`a`b``b``b``b``b````ddd`fff`", "`ggg`d``````````````````dad`fff`", "`ggg`dadadadadadadadadadada`fff`", "`ggg`adadadadadadadadadadad`fff`", "`ggg`aaaaaaaaaaaaaaaaaaaaaa`fff`", "`ggg`aaaaaaaaaaaaaaaaaaaaaa`fff`", "`ggg````````````````````````fff`", "`gg`ffffffffffffffffffffffff`ff`", "`g`ffffffffffffffffffffffffff`f`", "``ffffffffffffffffffffffffffff``", "````````````````````````````````" }; micropolis-activity/images/obj5-12.xpm0000664000076400007640000000515510724145723020113 0ustar simcitysimcity/* XPM */ static char * obj5_12_xpm[] = { "48 48 6 1", " c None", ". c #FFFF7F7F0000", "X c #FFFF00000000", "o c #FFFFFFFF0000", "O c #FFFFFFFFFFFF", "+ c #000000000000", " ", " ... ", " .XXXX ", " ....XX. ", " ...Xo.. ", " ....XoX. ", " OO..XXX ", " ....X.XX ", " ......XX ", " ... OO....X ", " O... ......XX ", " .............. ", " O...+......X..XX. ", " ....OO.....XXXX.X ", " .............X...X .X ", " ............X...X..X ", " .O.........XXXXXXXXXX ", " .O...O.......XXXXXXXX ", " ..............X XX ", " .. ........XXX XX ", " .......XXX ", " ........X.X ", " ........X.XX ", " O.......XX.X ", " O...O........X.. ", " ..O..........XXXX ", " .............X.... ", " ..O..O.....X.XX.XXX ", " ...........X.XX.XXX X ", " ....O.......XXX..XXXX ", " ...........XX XXXXXXX ", " ...........X XXXXX ", " ..O....XX XXXX ", " ......XX XXX ", " ......X XX ", " ......X ", " .O...XX ", " O...XX ", " ....XXX ", " ....XX ", " O...XX ", " .....XX ", " . .....X ", " .... .....X ", " .............X ", " ...........X ", " . X..X.XX ", " X "}; micropolis-activity/images/obj3-5.xpm0000664000076400007640000000525310724145723020032 0ustar simcitysimcity/* XPM */ static char * obj3_5_xpm[] = { "48 48 9 1", " c None", ". c #BFBFBFBFBFBF", "X c #FFFFFFFFFFFF", "o c #3F3F3F3F3F3F", "O c #FFFFFFFF0000", "+ c #7F7F7F7F7F7F", "@ c #FFFF00000000", "# c #66666666E6E6", "$ c #000000000000", " ", " ", " ", " ", " . ", " .X. ", " .XXo ", " .XXXo ", " .XXXo ", " .XXXXO ", " .XX+Xo ", " .X+XXXo ", " ..XXXXXo ", " X +....XXXX. ", " XX+ XX++Xoo ..XXX. ", " @XXX. XX+XXoo ... ", " XXXXX. @X+XXXo ", " XXXXX+ XX+XXX. ", " XXXXXXX +XXX.XX ", " .XXXXXX+ +XXX.XX+ ", " .XXXXXX. +XXX.X@+ ", " +XXXXXXX. +XXX.#X+ ", " o.XXXXXXX++XXX.#+ ", " +XXXXXXX+XXX.#+ ", " oXXXXXX+XXX.$+ ", " o.XXXX+XXX.#+ ", " +XXX+XXX.$++ ", " oXX+XXX.#+... ", " o++XXX.$+...X. ", " +XXX.#+...XXX+ ", " +XXX.$+...XXXXXX ", " +XXX.#+...XXXXXXX+ ", " +XXX.$+...XXXXXXXXX. ", " +XXX.#+ oo+.XXXXXXXXX. ", " +XXX.$+ oo+.XXXXXXX+ ", " +XXX.#+ o+.XXXXXXX ", " +XXX.$+ .XXXXX ", " +XXX.#+ X@ ", " +XXX.$+ ", " +XXX.#+ ", " oXXo.+ ", " oX$o.+ ", " ooX++ ", " ooo ", " ", " ", " ", " "}; micropolis-activity/images/tiles-141.xpm0000664000076400007640000001021510724145723020450 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "67 57 5 1", " c black", ". c #585858585858", "X c blue", "o c yellow", "O c #DFDFDFDFDFDF", /* pixels */ " ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " O OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO . ", " OO OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO .. ", " OOO ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXoooXXXXXooXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXoooXXXXXooXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXooooXXXXooXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXoooooXXXooXXXXoooooXXXoooXXXooXXXooXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXooooooXXooXXXoooooooXXoooXXooooXXooXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXooXoooXXooXXoooXXXoooXXooXXooooXXooXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXooXXoooXooXXoooXXXoooXXooXXooooXooXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXooXXooooooXXoooooooooXXoooXoXooXooXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXooXXXoooooXXoooooooooXXoooooXoooooXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXooXXXXooooXXoooXXXXXXXXXooooXoooooXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXooXXXXXoooXXXooooooooXXXoooXXXoooXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXooXXXXXoooXXXXXooooooXXXoooXXXoooXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXoooooooXXoooXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXooooooooXXoooXXXXooXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXooooXXXXoXXXXXXXXoooXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXooooXXXXXXXXoooXXoooooooooXXXXXooXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXoooXXXXXXXXXoooXXooooooXoooXXXooXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXoooXXXXXXXXXoooXXXoooXXXoooXXXooXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXoooXXXXXXXXXoooXXXoooXXXooooXooXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXoooXXXXXXXXXoooXXXoooXXXXoooXooXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXooooXXXXXXXXoooXXXoooXXXXoooooXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXooooXXXXoXXoooXXXoooXXXXXooooXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXooooooooXXoooXXXoooooXXXoooXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXooooooXXXoooXXXXooooXXXoooXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoooXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoooXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO ... ", " OO ........................................................... .. ", " O ............................................................. . ", " ............................................................... ", " " }; micropolis-activity/images/tiles-114.xpm0000664000076400007640000000516710724145723020462 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "48 48 5 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c gray75", "O c None", /* pixels */ "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOoOOOOOOOOOOO ....OOOO.OOO OOOOOOOOOOOOOO", "OOOOOOOOOOOOO OoO ..O.OO..OOO...OOOOOOOOOOOOOOOO", "OOOOOOOOOOo.O....X X. .XO..O. O... OO.OOOOOOOOOO", "OOOOOOOO.oo.o..oooXXX.XXX............OOOOOOOOOOO", "OOOOOOOoOoo.Xo.oo...X..XX...... .... OOOOOOOOOOO", "OOOOOOOOOoXXX.X.XX....XX.....o......OOOOOOOOOOOO", "OOOOOOoOOO.o...o...oX.X....X...o.... OOOOOOOOOOO", "OOOOOOOoO.O. X.ooXooXo.XX...... . .OOOOOOOOOOO", "OOOOOOOOOOOO.OOoooo.ooXX....... OOOOOOOOOOOOO", "OOOOOOOOOOOOOO OoooooXXXXXX.... OOOOOOOOOOOOO", "OOOOOOOOOOOOOOOooooooXXXXX.X... OOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOoooXoooX...... OOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOooooXXXXX... . OOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOooooXXX...XX.. . OOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOoooooXXXX.. . OOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOoooooXXXXX... OOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOooooXX.XX... OOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOoooooXXXXX. OOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOooooXXXX.... OOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOooooXXXX.X OOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOooooXXX..... OOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOooooXXXX.. OOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOoooXXXX... OOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOoooXXXX... OOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOooXXXXX.. OOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOoooXX.. . OOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOooXoXX.... OOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOoooX.... OOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOoooXXXX. OOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOoooXXX. OOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOooXX... OOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOooXX.. OOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOoooXX...OOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOooX.. OOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOooXXX OOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOoXXX. OOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOoXX...OOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOooXX. OOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOoXXX.OOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOX.. OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOoXX OOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOoX OOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOoX.OOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOoX.OOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOoX.OOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOoOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOOOOOOOOOOOOOOOOOO" }; micropolis-activity/images/obj7-1.xpm0000664000076400007640000000510210724145723020023 0ustar simcitysimcity/* XPM */ static char * obj7_1_xpm[] = { "48 48 4 1", " c None", ". c #FFFFFFFF0000", "X c #FFFF7F7F0000", "o c #FFFF00000000", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " .. ", " ... ", " .. . ", " XX . . X ", " .XX . X ... ", " .. X ..... . ... ", " .. ... ......... ", " ........ X..X.. ..... ", " .X .... X.. ..... .. ", " .... .X .. ........ . ", " X ............X. . ", " X ............. XXXXXX ", " ............X ", " .X. ................. ", " X .. . ............ . ", " ... .......o.... ...... ", " X....... ..... ..XX ... ", " X .... X........ XX . ", " ..... ...... ", " X . .X . X X ", " .. X ... XX.X ", " X X XX X ", " ", " X ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; micropolis-activity/images/tiles.xpm0000664000076400007640000113244010724145723020153 0ustar simcitysimcity/* XPM */ static char * tiles_xpm[] = { "16 15360 14 1", " c #CCCC7F7F6666", ". c #3F3F3F3F3F3F", "X c #000000000000", "o c #66666666E6E6", "O c #00000000E6E6", "+ c #99997F7F4C4C", "@ c #7F7F7F7F7F7F", "# c #0000E6E60000", "$ c #00007F7F0000", "% c #FFFFFFFFFFFF", "& c #FFFF00000000", "* c #FFFFFFFF0000", "= c #FFFF7F7F0000", "- c #BFBFBFBFBFBF", " ", " ", " . ", " ", " . ", " ", " . ", " ", " ", " ", " . ", " ", " . ", " ", " ", " ", " ", " ", " ", " ", " ", "X ", "X ", "X X ", "X ", " ", " ", " ", " ", " ", " ", " ", "oooooooooooooooo", "oooOooooooOooooo", "oooooooooooooooo", "oooooooooooooOoo", "oooooooooooooooo", "oooooooOoooooooo", "oooOoooooooooooo", "oooooooooooOoooO", "oooooooooooooooo", "OoooOooooooooooo", "oooooooooooooooo", "ooooooooooOoooOo", "ooooOOoooooooooo", "oooooooooooooooo", "oooOoooooooOoooo", "oooooooooooooooO", "oooooooooooooooo", "oooooooooooooooo", "oooooOoooooooOoo", "oOOoooooOooooooo", "oooooooooooooooO", "oooooooooooooooo", "ooooOooooooooOoo", "oooooooooooooooo", "ooooooOooooooooo", "oooooooooooooooo", "oooooooooOoooooo", "oooooooooooooOoo", "oooooooooooooooO", "oooooOoooooooooo", "ooOooooooooooooo", "ooooooooooooOooo", "oooooooooooooooo", "oooOooooooOooooo", "oooooooooooooooo", "oooooooooooooOoo", "oooooooooooooooo", "oooooooOoooooooo", "oooOoooooooooooo", "oooooooooooOoooO", "oooooooooooooooo", "OoooOooooooooooo", "oooooooooooooooo", "ooooooooooOoooOo", "ooooOOoooooooooo", "oooooooooooooooo", "oooOoooooooOoooo", "oooooooooooooooO", "O ", " o++ o+++", "o++++++o++++++oo", "++@+ooOOo++ooO@o", "oOoOoOooOooOoOOo", "oOooooooooOooooo", "ooooo@oooooooooo", "ooooooooooooOooo", "oooooooOoooooooo", "oooooooooooooooo", "ooooOooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "oooooOoooooOoooo", "oooooooooooooooo", "oooooooooooooooo", "O ", "+o +++ooo ", "+++++oo+++++++ ", "Oo+ooOOo++ooo+++", "OoooOooooooOOoo+", "oooOoOoOoOooooO+", "ooooooooooooooo ", "oOooooooooooooOO", "ooooooooOoooOooo", "ooooOooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "ooOooooooooooooo", "oooooooOOoooooOo", "oooooooooooooooo", "oooooooooooooooo", "O ", " ", " ", " ", "o++ ", "++++o ", "+oo++ ", "ooOo++++ ", "ooooO + ", "oooOoo++ ", "oooOoO++ ", "ooooooo++ ", "oooooOOo+++ ", "ooOooooO++++ ", "oooooooOooo+ ", "ooooooooOOo++ ", "O ", " ", "+ ", "+ ++ ", "++O+++ ", "oOoo++o ", "oooO++o ", "oOooo++ ", "oooOOo++ ", "oooOoOO+++ ", "ooooooooo+ ", "ooooooOoO++ ", "oOoooooooo++ ", "ooooooooOoOo+ ", "ooooOoooOOoo+o ", "oooooooooooO++ ", " oooooo.oOoo+ ", "ooooooooooOo+ ", "ooooooooOoo++ ", "ooOooooooOo+ ", "oooooooOooo++ O ", "ooooooooo o++ ", "ooooooooO+++ ", "oooOoo.Oo++ ", "ooooooOoOo+++ ", "oooooooooOo++ ", "ooooooooOo++o ", "ooooooooOo++ ", "oooooooooOo++ ", "oooooooOooo++ ", "oooooooooOO+ ", "ooooooooooo+ ", "ooooooooooOo++ ", "oooooooooOoO++ ", "oooooooooooo++ ", "oooooooooOo++ ", "ooOOoooOOoo ++ ", "oooooooooOo O+O ", "ooooooooooo+++ ", "ooooooooOOo+o ", "oooooooooo +++ ", "ooooOoooO o+ ", "oooooooooo++++ ", "oooooOooOo+ ", "oooooooooOo++ ", "ooooooooooO ++ ", "oooooooooOooo+ ", "ooooooooooOOo+ ", "ooooooooooooo + ", "oooooooooO ++++ ", "oooooooooO++ ", "oOooooOoo++ ", "ooooooooo+ ", "oooooooOo+ ", "oooooOooo+ ", "ooOooo oo+ + ", "oo.ooO++++ ", "oooOo++ O ", "oooo@o+ ", "oOoOoo+ ", "oO ++++ O ", "Oo++ ", "+++ ", "++ ", "oooooooooooooo++", "oooooooooooo+++ ", "oooooOoooO ++ ", "ooooooooo+++ ", "oooOoooOO+ OOO ", "oooooooo+ ", "ooOooo..+ ", "ooooooo++ ", "oooo@.++ ", "ooooo++ ", "ooOo++o + ", "O++++ ", "++. ", " OO ", " ", " ", "oooooooooooooooo", "ooooOooooooooooo", "oooooooooooooooo", "oooooooooooooOoo", "oooooooooooooooo", "oOoooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "oo ooooOoooooooo", "ooooooooooooooOo", "oooooo@ooooooooo", "ooo@oooooooooooo", "oo++ o ++++oooo", "+++++oo+o +++++", " oo++ o ", " ", "oooooooooooooooo", "oooooooooooooooo", "oooOoooooooooooo", "oooooooooooooooo", "ooooooooooooOooo", "ooooooOooooooooo", "oooooooooooooooo", "oooooooooooooooo", "ooooooooooOooooo", "oooooooooooooooo", "oooooooooooooooo", "++++++ooo++++++o", "+o +oo++o++ ++", "+ +++ o+", " ", " ", "+ooooooooooooooo", "++oooooooooooooo", " ++OoooOooooOooo", " +@oooooooooooo", " ++++oooooooooo", " ++++ooooooooo", " o +ooooOoooo", " + ++oooooooOo", " ++OoOo@oooo", " +oo+++oooo", " +++ ++ooo", " +oo.", " + ++@o", " ++o", " +o", " ", "oooooooooooooooo", "++oooooooooooooo", " ++O.ooOoooooOoo", " +++oooooooooooo", " ++oooooooooooo", " ++Oooo@ooOooo", " ++oooooooooo", " ooOoo@oooooo", " .+oooooooOo", " ++ooOooooo", " ++oOo@oooo", " ++++oo@oo", " ++ooOo", " ++ooo", " ++o ", " ++ ", " O+oooooooooooo", " +oooooooooooo", " +++OooooOoooo", " OOO+oooooooooo", " O..+oooooooooo", " +++ooOooooooo", " +oOoooooooooo", " +oooooooooooo", " +oOoooooooooo", " o++oooooooOooo", " ++oooooooooooo", " O+.oooOooOooooo", " +ooooooooooooo", " ++.Ooooooooooo", " ++oooooooooOo", " o++ooooooooooo", " +oooooooooooo", " +oOoooooooooo", " ++ooooooooooo", " ++Oooooooooo", " +ooooooooOo", " +ooooOooooo", " +oooooooooo", " ++oooooooooo", " +ooooooooooo", " +ooOoooooooo", " ++oooooooooo", " ++OoooooOooo", " ++ooooooooooo", " +oo@ooooooooo", " o+oOoooooooooo", " o+oooooooooooo", " ", " ++", " ++o", " +oo", " +oo", " oo o++oo", " o++++++ooo", " +++o +ooooo", " o+o@oooOoooo", " o+ oooooOooo", " ++oOooooooo", " +++ooooooooo", " o++ooooooOooOo", " o++oooooooooooo", "+++oooOooooooooo", "oooooooooooooooo", " ", " +", " +", " ++", " o+++++o", " + oo@oo", " ++oOoOoo", " +oO@oooo", " o+++ooooooo", " ++ooooooooo", " +ooOooooooo", " ++oooooooooo", "o o++ooooooooooo", "@+++oooooOooOooo", "++o@OOoooooooooo", "oooooooooooooooo", " ", " ", " ", " ", " ", " ", " # # # ## ", " # # ### # ", "###+####+# #### ", "###### #####+###", "###+#####$####$$", "#####$###$##$###", "###$###$#+##$###", "###$#####$#$####", "##############$$", "##$#####$#######", " ", " # # ", " # ", " # # ", " #+ ## ", "# # ++ #+ # ", "####+##++ # $ ", " #### +$ # # ", "######## ### ", "########## # ", "$$###$#$$### # ", "###$##### # + ", "###$####$### # ", "$#############+ ", "#########$###++ ", "####$###$$##++#+", "#####$##+++ ", "####$#### #+ ", "#$$$##$## + ", "##$$##$# + + ", "$##$$$#++ # ", "$#$###$+$ ", "######++ #+ $", "$$###$##+# + ", "#$###+### + ", "######$++ # ", "$#$#$#$#+# + ", "$##$#$##+ + ", "$$$$+##+#++ + ", "######$++#+ ", "#$####++# ", "##$$##$+ ++ ", "##########@$$# ", "##$$#$####$#$@# ", "$#######$###$# ", "#$###$$$##$++# ", "#####$#$# # ++ ", "#$##$##$#### # ", "####$#$###++#+ ", "#$######+###++ ", "$$$##++#+#++# ", "+###+##+++# ++ ", "+++++++#++# ++ ", "### # ++##++ ", " ++++#++#++ ", "# ++++++ # + ", " # # + + ", " ", "###$#$#$##$##$##", "#$#######$######", "###$$#$####$#$$#", "######$$$+####$#", "##$$######$##$$#", "#$# #$#$$#$$#$##", "##$###+$#$## $$#", "###+#### # #### ", "++#++#+###+#++++", " #+# ++ #++++##+", "+ +++ ++++++++++", "+++++++ +++++ + ", " + + + ", " + + ", " + + ", " ", " #@#@###$###$##", " ###$$#$##$#####", " $#+$####$$###$#", "$ #+##$$########", " + #+##$#$##$#", " # $###$$##$#$#", " #+$$#####$#$#", " +### ##$#$#$#", " #+ #+$ $####$", " ++++ $#$$@##", " + # # ++$## ", " # + #+$$#", " + # +#++++#", " # + + #+ ", " + + #+# ", " + ", " ####$###", " # #$#$###$#", " ##+##$#$#", " ##$$#$##", " # +#$##$$#", " #$$#$$#$#", " # +######", " # $$$$###$", " ###$##$#$", " +# ++$##$#$", " #$#$##$###", " ###$###$", " #+$#$#$##", " +#++$#$$$##", " + # +##$#$ ", " #####$#", " # ", " ", " # ", " # # # #", " + ##+", " # + # ", " # ## ", " # ###$ ##++#", " ##$###$###", " ##$###$#$##", " ##++$########", " ####$##$##$$", " ###$+#######", " # # # ###$#$$##", " # #$$##$#$##", " # ##$########", " ", " ", " ", " ", " ", " ", " # # # +# ", " #+ # ### # ", "$##+####+# ####$", "$#$### ####$$##$", "+$# $$#$######$$", "##$####$$##+##$#", "$########+#$##$#", "###$##$###$##$##", "#$##$###$####$##", "###########$#$##", " ", " # # ", "# # # ", " # # # ", "#+++$ ## ", " ##+$ # # ", "#$#$+$#++ # ", "#####++# # +# ", "##$##$## $## + ", "$$######## # ", "##$##$#$####+# ", "###$##@## #++ + ", "$$#$$#$$#$#++#+ ", "###$$$######+#++", "########$#@###++", "#######$###++ # ", "####$###++ + + ", "#$$####$#+#+ ", "#$##$# ##+++ ", "#$#$$### +++ + ", "####### $+#++ ", "#####$$$$++ + + ", "#$#$## #+++ ", "#####$## # +++ ", "#$#$# ###++++ ", "#$##$$+++ #+ +", "$##### #+# + ", "$#$#####++ + ", "#### $#+#+++ ", "$###$$#+ #++ + ", "#$#$##++#++ + ", "#######+++ + ", "#########$$ #+# ", "#$##$$$$$$###+++", "###$###$#@$# #++", "#$#####$$$## # +", "##$#$$##$ #+$ +", "##$#########+#++", "#@$##@#$## +# + ", "#$###### ### ++ ", "#$#@#+++ # #+ ", "##$# ##+++#+++ +", "@#$ $+ # +#+++ ", "@## #+++##+++++ ", "#++#+#++#+++ + ", "++##++++++ # + ", "+# #++++++ ", "++++++ ++ ", "######$###$$$###", "#$######$$##$###", "#$##############", "####$#### #####$", "$#$$#$#$$##$####", "#$$ #$######$$$#", "#$####$$##$# ###", "##$ #### $$####+", "++#++#+###+$++++", "+#+#++++#++++## ", "+ + +++++++++ ++", "+++++ ++++ ++++", "+ + ++ + +++", " + + ", " + + ", " ", " ####$$#####", " # ####$##$$$$$#", " ##@$#@#$$###$#", " # #$#####$##$#", " ++# $$##$$$##", " #+#$####$$##$#", " #++$##$######", " ###+##$$#$#$", " # #$$+$#####", " #++$#$ ####", " # +#$$+ ## ", " + ##++ # # +", " #+ # #+++", " # +++#+#", " + #+# ", " ++", " ########", " # ##$#$#$##", " ##+####$#", " +#$$$#$##", " # $ #$$$###", " # $##$##", "$ #+ +#$#$##", " # ###$####", " + ##$ ###$#", " # +++$####$", " #$# #$#$##", " ######$#", " + $+##+#$$#", " #++$##$#$#", " # $##$###", " #######", " # ", " ", " # #", " # # # ", " ## ", " # ", " # + ## +", " # ## #+$# #", " ##$$$@$###", " +##$####$###", " #$$+####$#$##", " #######$$##$", " ##@#+$###$##", " # #$# ######$#$", "# +# ##$##$####", " # ++###########", "###$##$$##$#####", "##$###$#$###$###", "###$#$$#######$#", "#$$####$$$$#$#$$", "##$##$$####$####", "##$#$$###$##$$##", "########$##$##$#", "###$###$$$######", "$####$$$$#####$#", "####$######$##$#", "#$$#$$#####$####", "$$##$$$#$$#####$", "##$##$######$###", "##$$####$$#$$###", "##$#$$###$######", "$###############", " ", " ", " X X ", " X X X ", " X X%X%X X ", " X%X%X%X ", " X%X%X%X%X ", " X%X%X%X X ", " X%X%X%X ", " X%X%X%X X ", " X%X%X%X ", " X%X X%X X ", " X X X ", " ", " ", " ", "XXXX$$XXXXXXXXXX", "XX%X%X%X%X%X%X%X", "X%X%X%X%X%X%X%XX", "XX%X%X%%%%%X%X%X", "X%X%X%X%X%%%X%XX", "XX%X%%%X%X%X%X%X", "X%X%X%%%%%X%X%XX", "XX%X%%%%%%%X%X%X", "X%X%X%%%X%X%X%XX", "XX%%%X%%%%%X%X%X", "X%X%X%X%X%X%X%XX", "XX%X%%%X%X%X%X%X", "X%X%X%X%X%X%X%XX", "XX%X%X%X%X%X%X%X", "X%X%X%X%X%X%X%XX", "XXXXXXXXXXXXXXXX", "############$#$#", "######## $######", "#####$### #$####", "######## $## $#$", "### $ ## ###+##$", "#####$# # ###", "###$###+ ######", "## # # ", " # ##$+ # # # #", "## #### ### # ", "### $ $###$#$##$", "####$### ###$##", "########+#######", "####$### ###$$#$", "##########$##$#$", "################", "################", "$### # ##$######", "#$###########$##", "##### ##$######", "##$#########$###", "###### ########+", "# # ## # #$ # ", " # # $ ## # ", "#####$ #########", "##$### ####$# # ", "#$#### ####### #", "##$##+# ########", "####$ ######$###", "###$######$##$##", "#$#### #########", "############$#$#", "######### ######", "$#$### # # #####", "#### ### $ # ###", "## ########### $", "####### $ #####", "# $####$# ## $##", "####### # ## #", "# # # $#### ####", "# ##$## # #### $", " ######### # ###", "# #$### ## #####", "### ### $# #####", "##### $ ## ##$", "$###### # ##$ #", "$#$#### ###$####", "######### ######", "################", "$#$#### ########", "####$+# ###$###", " #####$######$##", "## #$ # #######", "+########$#$####", "# $ ## ########", " ####### # # ##", " $ ## ## #######", "######+$########", "##+#+## #######", "######$#####$###", "# ## # # ####+##", "#+#$#$#####$####", "#######+#+##+###", "##+#############", " X X XX ", " XX X X ", " X XX XX XX", " X X X X X", " X X X+XX X ", "XX XX+ + ", "+X +X+ XX X ", "+X X XX XXX +", "X XX X X+ XX XX", " X X X + X ", " X XX X XX", " XX XX X XX X", "XX XXXX + X ", "X XX X X", " X X X ", " XX X X ", " XX X XX ", " + X X X", " X X++ X+X X ", " X+X ++X+ ", " X X XX ++X X+", "XX X X + X X++ ", " X X+ X X", "X X X + ", "++XX XX +XX XX", "+ X+X X X ++ X", "+ XX + X ", " XX X X X", " X X XX", "X X X X ", " XXXX XX X ", " X XX ", " X X + ", "X X XX X X ", " XX XX X ", " X XX XX X X", "X X X X X", " X X + X X", " + X XX +", " X X + XX ", " X X XX + X", "+X X X+ X X X ", " XX+ X+ X ", " X X X ", " X X X+ X X", "XX X XX X ", " X X XXX ", " X X X ", " X X ", " XX XX X ", " XX X XX XX ", "XXX X X XXX ", " X X + X ", " X X+ XX ++X X", " XXX X +XX+ XX", "XX X X XXX+X+X X", " + XX X+X XX ", "XX XX XX XXX X", " X X XX XX X ", "XX X+++X+++XX X", " X XXX ++X XX", " XX XX XX ", " XX XX XX@ ", " X X ", "++ oooo ooooo ", "X oo%oooooooooo ", ".oooooo%o%%%o%oo", "ooo%%%oooooooo%%", "o%oooooo%ooooooo", "ooooooooooo%%ooo", "...o%o%%%ooooooo", "ooooooooooo%oo%%", "oo%oooo%oooooooo", ".ooooooooo%oo%oo", "oo%oo%%%oooooooo", "ooooooooo%oo%%%o", "..oooooooooooooo", "ooooo%oo%%%ooooo", "oo%oooooooooo%oo", "..oo%oo%ooooooo%", " ooooooo ooo X ", " oo%ooooooo%oo ", "oooooo%%oooooooo", "o%%%ooooooo%%ooo", "ooooooooo%ooooo%", "oooooo%ooooooo%o", "oo%oo%%%ooo%oooo", "ooooooooooooo%oo", "oo%%oooooooooooo", "oooooo%oo%%ooo%o", "oooooooooooooooo", "o%%oo%ooo%ooo%o%", "oooooooooooooooo", "oo%ooooo%%oo%%oo", "%ooooo%oooooooo%", "%oo%%ooooo%ooooo", " ooooooooooooo ", "oooo%%oooooooooo", "%ooooooo%%%oooo ", "oo%%ooooooooo%oo", "ooooooooo%oooooo", "%oooo%%ooooooooo", "o%%%ooooooo%%%oo", "ooooooo%%oooooo%", "ooooooooooo%%ooo", "oo%%oooooooooooo", "%oooo%oo%%oooooo", "oooooooooooo%%oo", "ooo%%ooooo%oooo%", "oooooooooooooooo", "o%oooooo%%oo%ooo", " ooo ooooooooo ", " ooo%oooooooo ", " oooooooo%%oooo", " ooooooooooooooo", "o%%%ooo%%ooo%%oo", "oooooooooooooooo", "oooooooooo%%oooo", "ooooo%%ooooo%ooo", "o%%oooooo%oooooo", "ooooo%ooooo%%ooo", "oooooooo%ooooooo", "ooo%%%oooooooooo", "ooooooooooo%%%oo", "o%%%oooooooooooo", "ooooooooooooooo ", " o%o%o%%%oo ", " oooooooooooooo ", " ", " ", " &&& &&& ", " X & X & ", " & & & ", "+ & & & & ", " & & * & & ", " & *** & ", " & & * & & ", " & & & & ", " & & & ", " & X & X ", " &&& &&& ", " + +", " + ", " ", " XX%X%%XX ", " X%%%%X X X", " X%XXX%XXX%XX%", " XXX%%XXXX%XX%%", " X%X%%XX XXX%%XX", "XX%X%X X X XXX ", " X%%XX X X", "X%%%X X X ", "XXXX%XX XXX XX", " XXX X X X X", " XX X X ", " XX X X X", " X X XX", "X X X X ", " XXXX XX X ", " X XX ", " X X ", "X X XX X X ", "%XX XX X ", "%X XX XX X X", "X X X X X", " X X X X", " X XX X", " X X X XX ", " X X XX X", " X X X X X X ", " XX XX X ", " X X X ", " X X X X X", "XX X XX X ", " X X XXX ", " X X X ", " X X ", " XX XX X ", " XX X%%XX XX ", "XXX X X%%XXX ", "%%%X X%X%X ", "%X%%XX XX%%X%X X", "%XXX X XXX%%XX", "XX X X XXX%XXX%X", " XX%%XXX%XX ", "XX XX%%XX%%XXX%X", " X X%%XX%XX%%X%%", "XX X%%%X%%XXX%X", " X XXX%XXX%%XX", " XX%%XX%%XX ", " XX XX%%XX XX ", " X%X%X%X ", " ", " * * ", " * * * * * ", " *& * *", " ** ** &** * ", " ** ** &** **", " ** ** *&**** ", " ******=**&*** *", " =====&&* **&*=", "===& = * =&===", " ==&+&=& =&=== ", " &==&&=&=&&+=&=&", "&&&&=&&&=+&&&&&&", "&&&=&&&&=&&=&=&&", "&&=&& &&=& & &", " & & & & &", " ", " * * ", " ** * * ", " ** * * ", " ** *** * ** ", " *** & *** ****&", " * * ** **=*=& ", "* &&=** *==== &", "*=&========&=&&=", "=& &===== =&= &=", "& &==&=&&&&& &&&", "&&== &&&&&& & =&", "=& &&&&+&&& & = ", " =&&&&&= &=& &+=", " &=& == && == ", " +& & ", " ", " ", " ** ** ** *", " **** ** * * ", " ** *** * * * ", "*** ** **** &", "** *** * *&* *", "==*** **===* *&*", "=*= =====&&**==", "= &=&===&&= *==&", "==== ==&&& &=&=&", " &&& && = & & ", " &+&=&&=&&&&&& &", "& = & &=&&& & + ", "& && & & & &&", " & & & & ", " ", " ", " * * * ", "* ** ** ", " **** ** * **", "**** *& **&", "**& * ******** &", "*** == *&* ==&&", "&& = * **====+ ", "**=&&&&==== =&&&", "=&& + & & &=&&=", "&+&+&=&&&& && &", "=& &&&=&& &&+ = ", "= && &=&=&&+=&", "&&& & && & &&&", " & & & ", " ", " * ", " * ", "**** * * **", "* ** ** * ***", " * *** ** ** *", "&*==********* **", " &&=****==** =**", "&== **&&== ==&=", "&== &+====+== &=", "&=& &&&= &= & =", "&&&&&= =&&== && ", "&+==&&& =&&+&+&&", "&=&+ & & &&&&= ", " &&&& & &= & & ", " & & & & &", " ", " * * ", " * * ", "** * * **", "* ** ** **", " ** *** * *", " *==* **== ****", "=== *&==== ==*=", "== =&= =&*=====", "= &=&+===*&&= &+", "&=&&&=& &&=====&", " &+=&=&&=&& &&=", "&&&&& && &&&&+&&", "&=& &&&+=&&&=& ", "&& & &&&& & &", " & & & & & ", " * ", " &", " * ** * ", "** ** * &", "* **** ** *", " * **= *= &*", " * &*== **= **&", "*** ===***=*& ", "= &==&* =*&****", "&&=&==* = =&*&=&", "=&==&&& &=&=&&&+", "& =&&+&=&=&&=& ", " && &&=&&&+&+ &=", "& =+ && & & &", " = & & & & & &", "& && & & = ", " * ", " * ", " ** ** ", "** ** *& ", "** * *** ", "* = *== *&*& ", "*=== *=== &**= ", "== &&==***&== ", "=*&&*==*& **&=**", "&& ==&=& &&&== ", "&=&= &= =&&=& +", "&= & ==&=& ==&=&", "&&&&+&&& &+ & ", " & = =&=+ & &= &", " & & & ", " & & & ", "oooooooooooooooo", "ooooXXooooooXXoo", "................", "................", "................", "................", "................", "..%%%%....%%%%..", "................", "................", "................", "................", "................", "@@@@XX@@@@@@XX@@", "OOOXXOOOOOOXXOOO", "OOXXOOOOOOXXOOOO", "oo@...........Oo", "oo@...........Oo", "ooX.....%.....Xo", "oXX.....%.....Xo", "XX@.....%.....OO", "Xo@.....%.....OO", "oo@...........Oo", "oo@...........Oo", "oo@...........Oo", "oo@...........Oo", "ooX.....%.....Xo", "oXX.....%.....Xo", "XX@.....%.....OO", "Xo@.....%.....OO", "oo@...........Oo", "oo@...........Oo", " ", " ", "................", "................", "................", "................", "................", "..%%%%....%%%%..", "................", "................", "................", "................", "................", "XXXXXXXXXXXXXXXX", " ", " ", " X........... ", " X........... ", " X.....%..... ", " X.....%..... ", " X.....%..... ", " X.....%..... ", " X........... ", " X........... ", " X........... ", " X........... ", " X.....%..... ", " X.....%..... ", " X.....%..... ", " X.....%..... ", " X........... ", " X........... ", " X............ ", " X.............", " X.............", " X.....%......", " X......%.....", " X.......%....", " X...........", " X...........", " X..........", " X.........", " X........", " XX......", " XXX...", " XXX", " ", " ", " ", " ", " ..", " .....", " .......", " X.......", " X........", " X.........", " X..........", " X.......%..", " X.......%...", " X......%....", " X...........", " X............", " X............", " X............", " ", " ", ".... ", "....... ", "......... ", ".......... ", "........... ", "............ ", "............ ", ".....%....... ", "......%...... ", ".......%..... ", ".............. ", "X............. ", " X............ ", " X........... ", " X............ ", "X............. ", ".............. ", ".......%...... ", "......%....... ", ".....%....... ", "............. ", "............. ", "............ ", "...........X ", "..........X ", "........XX ", ".....XXX ", "XXXXX ", " ", " ", " X........... ", " X.%.%.%.%.%. ", "................", "................", "................", "................", "................", "...%%%%...%%%%..", "................", "................", "................", "................", "................", "XXXXXXXXXXXXXXXX", " ", " ", " X........... ", " X........... ", " X.....%.......", " X.....%.....%.", " X.....%.......", " X.....%.....%.", " X.............", " X...........%.", " X.............", " X...........%.", " X.....%.......", " X.....%.....%.", " X.....%.......", " X.....%.....XX", " X........... ", " X........... ", " ", " ", "................", "................", "................", "................", "................", "..%%%%....%%%%..", "................", "................", "................", "................", "................", "XXX.%.%.%.%.%.XX", " X........... ", " X........... ", " X........... ", " X........... ", "........%..... ", "..%.....%..... ", "........%..... ", "..%.....%..... ", ".............. ", "..%........... ", ".............. ", "..%........... ", "........%..... ", "..%.....%..... ", "........%..... ", "XXX.....%..... ", " X........... ", " X........... ", " X.-.-.-.-.-. ", " X.-.-.-.-.-. ", ".--...........--", "................", ".--...........--", "........#.......", ".--....&X&....--", "........#.......", ".--...........--", "................", ".--...........--", "................", ".--...........--", "XXX-.-.-.-.-.-XX", " X-.-.-.-.-.- ", " X........... ", " . . ", " . . ", "......@..@......", "......@..@......", "......@..@......", "......@..@......", "......@..@......", "..%%%%@..@%%%%..", "......@..@......", "......@..@......", "......@..@......", "......@..@......", "......@..@......", "XXXXXX@XX@XXXXXX", " . . ", " . . ", " X........... ", " X........... ", " X.....%..... ", " X.....%..... ", " X.....%..... ", "..@@@@@@@@@@@@..", " X........... ", " X........... ", "..@@@@@@@@@@@@..", " X........... ", " X.....%..... ", " X.....%..... ", " X.....%..... ", " X.....%..... ", " X........... ", " X........... ", "oooooooooooooooo", "oooOooooooOooooo", "oooooooooooooooo", "oooooooooooooOoo", "oooooooooooooooo", "oooooooOoooooooo", "oooOoooooooooooo", "oooooooooooOoooO", "oooooooooooooooo", "OoooOooooooooooo", "oooooooooooooooo", "ooooooooooOoooOo", "ooooOOoooooooooo", "oooooooooooooooo", "oooOoooooooOoooo", "oooooooooooooooO", "oooooooooooooooo", "ooooXXooooooXXoo", "................", "...........%@@-X", "...........%@@-X", "...........XXXXX", "................", "..%%%%....%%%%..", "................", "%@@-X...........", "%@@-X...........", "XXXXX...........", "................", "@@@@XX@@@@@@XX@@", "OOOXXOOOOOOXXOOO", "OOXXOOOOOOXXOOOO", "oo@.%%X.......Oo", "oo@.@@X.......Oo", "ooX.@@X.%.....Xo", "oXX.--X.%.....Xo", "XX@.XXX.%.....OO", "Xo@.....%.....OO", "oo@...........Oo", "oo@...........Oo", "oo@...........Oo", "oo@...........Oo", "ooX.....%.....Xo", "oXX.....%.%%X.Xo", "XX@.....%.@@X.OO", "Xo@.....%.@@X.OO", "oo@.......--X.Oo", "oo@.......XXX.Oo", " ", " ", "................", "...........%@@-X", "...........%@@-X", "...........XXXXX", "................", "..%%%%....%%%%..", "................", "%@@-X...........", "%@@-X...........", "XXXXX...........", "................", "XXXXXXXXXXXXXXXX", " ", " ", " X.%%X....... ", " X.@@X....... ", " X.@@X.%..... ", " X.--X.%..... ", " X.XXX.%..... ", " X.....%..... ", " X........... ", " X........... ", " X........... ", " X........... ", " X.....%..... ", " X.....%.%%X. ", " X.....%.@@X. ", " X.....%.@@X. ", " X.......--X. ", " X.......XXX. ", " X.X--........ ", " X.X@@.........", " X.X@@.........", " XX%%..%..XXXX", " X......%.X-@@", " X.......%.-@@", " X...........", " X...........", " X..........", " X.........", " X........", " XX......", " XXX...", " XXX", " ", " ", " ", " ", " ..", " .....", " ....XXX", " X....%@@", " X.....%@@", " X.........", " X..........", " X.......%..", " X.......%...", " X......%....", " X.......XX..", " X.......--X..", " X.......@@X..", " X.......@@X..", " ", " ", ".... ", "....... ", "......... ", ".......... ", "........... ", "............ ", "............ ", "%@@-.%....... ", "%@@-X.%...... ", "XXXXX..%..%%X ", "..........@@X. ", "X.........@@X. ", " X........--X. ", " X.......XXX. ", " X...X@@...... ", "X....X@@...... ", ".....X--...... ", ".....XX....... ", ".......%...... ", "......%...... ", ".....%....... ", "............. ", "............ ", ".X-@@%.....X ", ".X-@@%....X ", ".XXXXX..XX ", ".....XXX ", "XXXXX ", " ", " ", " X........... ", " X.%.%.%.%.%. ", "................", "...........%@@-X", "...........%@@-X", "...........XXXXX", "................", "..%%%%....%%%%..", "................", "%@@-X...........", "%@@-X...........", "XXXXX...........", "................", "XXXXXXXXXXXXXXXX", " ", " ", " X.%%X....... ", " X.@@X....... ", " X.@@X.%.......", " X.--X.%.....%.", " X.XXX.%.......", " X.....%.....%.", " X.............", " X...........%.", " X.............", " X...........%.", " X.....%.......", " X.....%.%%X.%.", " X.....%.@@X...", " X.....%.@@X.XX", " X.......--X. ", " X.......XXX. ", " ", " ", "................", "...........%@@-X", "...........%@@-X", "...........XXXXX", "................", "..%%%%....%%%%..", "................", "%@@-X...........", "%@@-X...........", "XXXXX...........", "................", "XXX.%.%.%.%.%.XX", " X........... ", " X........... ", " X.%%X....... ", " X.@@X....... ", "....@@X.%..... ", "..%.--X.%..... ", "....XXX.%..... ", "..%.....%..... ", ".............. ", "..%........... ", ".............. ", "..%........... ", "........%..... ", "..%.....%.%%X. ", "........%.@@X. ", "XXX.....%.@@X. ", " X.......--X. ", " X.......XXX. ", " X.-.-.-.-.-. ", " X.%%X.-.-.-. ", ".--.@@X.......--", "....@@X......%@@", ".--.--X......%@@", "....XXX.#....XXX", ".--....&X&....--", "........#.......", ".--...........--", "%@@-X.....%%X...", "%@@-X.....@@X.--", "XXXXX.....@@X...", ".--.......--X.--", "XXX-.-.-.-XXX-XX", " X-.-.-.-.-.- ", " X........... ", " . . ", " . . ", "......@..@......", "......@..@.%@@-X", "......@..@.%@@-X", "......@..@.XXXXX", "......@..@......", "..%%%%@..@%%%%..", "......@..@......", "%@@-X.@..@......", "%@@-X.@..@......", "XXXXX.@..@......", "......@..@......", "XXXXXX@XX@XXXXXX", " . . ", " . . ", " X.%%X....... ", " X.@@X....... ", " X.@@X.%..... ", " X.--X.%..... ", " X.XXX.%..... ", "..@@@@@@@@@@@@..", " X........... ", " X........... ", "..@@@@@@@@@@@@..", " X........... ", " X.....%..... ", " X.....%.%%X. ", " X.....%.@@X. ", " X.....%.@@X. ", " X.......--X. ", " X.......XXX. ", "oooooooooooooooo", "oooOooooooOooooo", "oooooooooooooooo", "oooooooooooooOoo", "oooooooooooooooo", "oooooooOoooooooo", "oooOoooooooooooo", "oooooooooooOoooO", "oooooooooooooooo", "OoooOooooooooooo", "oooooooooooooooo", "ooooooooooOoooOo", "ooooOOoooooooooo", "oooooooooooooooo", "oooOoooooooOoooo", "oooooooooooooooO", "oooooooooooooooo", "ooooXXooooooXXoo", "................", ".......%@@-X....", ".......%@@-X....", ".......XXXXX....", "................", "..%%%%....%%%%..", "................", "....%@@-X.......", "....%@@-X.......", "....XXXXX.......", "................", "@@@@XX@@@@@@XX@@", "OOOXXOOOOOOXXOOO", "OOXXOOOOOOXXOOOO", "oo@...........Oo", "oo@...........Oo", "ooX.....%.....Xo", "oXX.....%.....Xo", "XX@.%%X.%.....OO", "Xo@.@@X.%.....OO", "oo@.@@X.......Oo", "oo@.--X...%%X.Oo", "oo@.XXX...@@X.Oo", "oo@.......@@X.Oo", "ooX.....%.--X.Xo", "oXX.....%.XXX.Xo", "XX@.....%.....OO", "Xo@.....%.....OO", "oo@...........Oo", "oo@...........Oo", " ", " ", "................", ".......%@@-X....", ".......%@@-X....", ".......XXXXX....", "................", "..%%%%....%%%%..", "................", "....%@@-X.......", "....%@@-X.......", "....XXXXX.......", "................", "XXXXXXXXXXXXXXXX", " ", " ", " X........... ", " X........... ", " X.....%..... ", " X.....%..... ", " X.%%X.%..... ", " X.@@X.%..... ", " X.@@X....... ", " X.--X...%%X. ", " X.XXX...@@X. ", " X.......@@X. ", " X.....%.--X. ", " X.....%.XXX. ", " X.....%..... ", " X.....%..... ", " X........... ", " X........... ", " X............ ", " X..........X..", " X.........-@.X", " X..X..%..-@@%", " X..-X..%..@@%", " X.-@@X..%....", " X.@@%X......", " X..%........", " X..........", " X.........", " X........", " XX......", " XXX...", " XXX", " ", " ", " ", " ", " ..", " .....", " .......", " X..-....", " X..@@-X..", " X..%@@X...", " X....%X....", " X....X..%..", " X.......%...", " X......%....", " X........--.", " X........@@@X", " X........@@..", " X........%%X.", " ", " ", ".... ", "....... ", "......... ", ".......... ", "........... ", ".........%.. ", ".......X%@@. ", ".....%..X@@-. ", ".%@@..%..X-.. ", ".%@@-..%..X.. ", ".X.@-......... ", "X..X.......... ", " X............ ", " X........... ", " X...@@....... ", "X..X@@@....... ", "....--........ ", ".......%...... ", "......%....... ", ".....%..X.... ", ".......X%.... ", "......X@@%... ", ".....X-@@... ", ".......-...X ", "..........X ", "........XX ", ".....XXX ", "XXXXX ", " ", " ", " X........... ", " X.%.%.%.%.%. ", "................", ".......%@@-X....", ".......%@@-X....", ".......XXXXX....", "................", "..%%%%....%%%%..", "................", "....%@@-X.......", "....%@@-X.......", "....XXXXX.......", "................", "XXXXXXXXXXXXXXXX", " ", " ", " X........... ", " X........... ", " X.....%.......", " X.....%.....%.", " X.%%X.%.......", " X.@@X.%.....%.", " X.@@X.........", " X.--X...%%X.%.", " X.XXX...@@X...", " X.......@@X.%.", " X.....%.--X...", " X.....%.XXX.%.", " X.....%.......", " X.....%.....XX", " X........... ", " X........... ", " ", " ", "................", ".......%@@-X....", ".......%@@-X....", ".......XXXXX....", "................", "..%%%%....%%%%..", "................", "....%@@-X.......", "....%@@-X.......", "....XXXXX.......", "................", "XXX.%.%.%.%.%.XX", " X........... ", " X........... ", " X........... ", " X........... ", "........%..... ", "..%.....%..... ", "....%%X.%..... ", "..%.@@X.%..... ", "....@@X....... ", "..%.--X...%%X. ", "....XXX...@@X. ", "..%.......@@X. ", "........%.--X. ", "..%.....%.XXX. ", "........%..... ", "XXX.....%..... ", " X........... ", " X........... ", " X.-.-.-.-.-. ", " X.-.-.-.-.-. ", ".--...........--", "..........%%X%@@", ".--.......@@X%@@", "........#.@@XXXX", ".--.%%X&X&--X.--", "....@@X.#.XXX...", ".--.@@X.......--", "%@@---X.........", "%@@-XXX.......--", "XXXX............", ".--...........--", "XXX-.-.-.-.-.-XX", " X-.-.-.-.-.- ", " X........... ", " . . ", " . . ", "......@..@......", "......@%@@-X....", "......@%@@-X....", "......@XX@XX....", "......@..@......", "..%%%%@..@%%%%..", "......@..@......", "....%@@-X@......", "....%@@-X@......", "....XX@XX@......", "......@..@......", "XXXXXX@XX@XXXXXX", " . . ", " . . ", " X........... ", " X........... ", " X.....%..... ", " X.....%..... ", " X.%%X.%..... ", "..@@@@@@@@@@@@..", " X.@@X....... ", " X.--X...%%X. ", "..@@@@@@@@@@@@..", " X.......@@X. ", " X.....%.--X. ", " X.....%.XXX. ", " X.....%..... ", " X.....%..... ", " X........... ", " X........... ", "oooooooooooooooo", "oooOooooooOooooo", "oooooooooooooooo", "oooooooooooooOoo", "oooooooooooooooo", "oooooooOoooooooo", "oooOoooooooooooo", "oooooooooooOoooO", "oooooooooooooooo", "OoooOooooooooooo", "oooooooooooooooo", "ooooooooooOoooOo", "ooooOOoooooooooo", "oooooooooooooooo", "oooOoooooooOoooo", "oooooooooooooooO", "oooooooooooooooo", "ooooXXooooooXXoo", "................", "...%@@-X........", "...%@@-X........", "...XXXXX........", "................", "..%%%%....%%%%..", "................", "........%@@-X...", "........%@@-X...", "........XXXXX...", "................", "@@@@XX@@@@@@XX@@", "OOOXXOOOOOOXXOOO", "OOXXOOOOOOXXOOOO", "oo@...........Oo", "oo@...........Oo", "ooX.....%.....Xo", "oXX.....%.%%X.Xo", "XX@.....%.@@X.OO", "Xo@.....%.@@X.OO", "oo@.......--X.Oo", "oo@.......XXX.Oo", "oo@.%%X.......Oo", "oo@.@@X.......Oo", "ooX.@@X.%.....Xo", "oXX.--X.%.....Xo", "XX@.XXX.%.....OO", "Xo@.....%.....OO", "oo@...........Oo", "oo@...........Oo", " ", " ", "................", "...%@@-X........", "...%@@-X........", "...XXXXX........", "................", "..%%%%....%%%%..", "................", "........%@@-X...", "........%@@-X...", "........XXXXX...", "................", "XXXXXXXXXXXXXXXX", " ", " ", " X........... ", " X........... ", " X.....%..... ", " X.....%.%%X. ", " X.....%.@@X. ", " X.....%.@@X. ", " X.......--X. ", " X.......XXX. ", " X.%%X....... ", " X.@@X....... ", " X.@@X.%..... ", " X.--X.%..... ", " X.XXX.%..... ", " X.....%..... ", " X........... ", " X........... ", " X........X-.. ", " X........-@@..", " X.........@@%.", " X.....%...%..", " X......%.....", " X.....X.%....", " X...X-X.....", " X...-@@X....", " X...@@.....", " X...%.....", " X........", " XX......", " XXX...", " XXX", " ", " ", " ", " ", " ..", " .....", " .......", " X.......", " X........", " X.........", " X...-X.....", " X..@@-X.%..", " X..%@@X.%...", " X....X.%...-", " X.........@@", " X.........%@@", " X..........%.", " X............", " ", " ", ".... ", "....... ", "......... ", "......%... ", ".....%@@... ", ".....X@@-... ", "......X-X... ", ".....%.X..... ", "......%...... ", "...%...%..... ", "..%@@......... ", "X..@@-........ ", " X..-X........ ", " X........... ", " X..%......... ", "X..@@%........ ", "..-@@......... ", "..X-...%.X.... ", "......%.X@@%.. ", ".....%.X-@@.. ", "........X-... ", "............. ", "............ ", "...........X ", "..........X ", "........XX ", ".....XXX ", "XXXXX ", " ", " ", " X........... ", " X.%.%.%.%.%. ", "................", "...%@@-X........", "...%@@-X........", "...XXXXX........", "................", "..%%%%....%%%%..", "................", "........%@@-X...", "........%@@-X...", "........XXXXX...", "................", "XXXXXXXXXXXXXXXX", " ", " ", " X........... ", " X........... ", " X.....%.......", " X.....%.%%X.%.", " X.....%.@@X...", " X.....%.@@X.%.", " X.......--X...", " X.......XXX.%.", " X.%%X.........", " X.@@X.......%.", " X.@@X.%.......", " X.--X.%.....%.", " X.XXX.%.......", " X.....%.....XX", " X........... ", " X........... ", " ", " ", "................", "...%@@-X........", "...%@@-X........", "...XXXXX........", "................", "..%%%%....%%%%..", "................", "........%@@-X...", "........%@@-X...", "........XXXXX...", "................", "XXX.%.%.%.%.%.XX", " X........... ", " X........... ", " X........... ", " X........... ", "........%..... ", "..%.....%.%%X. ", "........%.@@X. ", "..%.....%.@@X. ", "..........--X. ", "..%.......XXX. ", "....%%X....... ", "..%.@@X....... ", "....@@X.%..... ", "..%.--X.%..... ", "....XXX.%..... ", "XXX.....%..... ", " X........... ", " X........... ", " X.-.-.-.@@X. ", " X.-.-.-.@@X. ", ".--.......--X.--", ".......%@@-XX...", ".--....%@@-X..--", ".......X&XXX....", ".--....#X#....--", "........&.......", ".--.%@@-X.....--", "....%@@-X.......", ".--.XXXXX.....--", "....@@X.........", ".--.@@X.......--", "XXX---X-.-.-.-XX", " X-XXX-.-.-.- ", " X........... ", " . . ", " . . ", "......@..@......", "...%@@@X.@......", "...%@@@X.@......", "...XXX@X.@......", "......@..@......", "..%%%%@..@%%%%..", "......@..@......", "......@.%@@-X...", "......@.%@@-X...", "......@.X@XXX...", "......@..@......", "XXXXXX@XX@XXXXXX", " . . ", " . . ", " X........... ", " X........... ", " X.....%..... ", " X.....%.%%X. ", " X.....%.@@X. ", "..@@@@@@@@@@@@..", " X.......--X. ", " X.......XXX. ", "..@@@@@@@@@@@@..", " X.@@X....... ", " X.@@X.%..... ", " X.--X.%..... ", " X.XXX.%..... ", " X.....%..... ", " X........... ", " X........... ", "oooooooooooooooo", "oooOooooooOooooo", "oooooooooooooooo", "oooooooooooooOoo", "oooooooooooooooo", "oooooooOoooooooo", "oooOoooooooooooo", "oooooooooooOoooO", "oooooooooooooooo", "OoooOooooooooooo", "oooooooooooooooo", "ooooooooooOoooOo", "ooooOOoooooooooo", "oooooooooooooooo", "oooOoooooooOoooo", "oooooooooooooooO", "oooooooooooooooo", "ooooXXooooooXXoo", "................", "@@-X...........%", "@@-X...........%", "XXXX...........X", "................", "..%%%%....%%%%..", "................", "X...........%@@-", "X...........%@@-", "X...........XXXX", "................", "@@@@XX@@@@@@XX@@", "OOOXXOOOOOOXXOOO", "OOXXOOOOOOXXOOOO", "oo@.XXX...@@X.Oo", "oo@.......@@X.Oo", "ooX.....%.--X.Xo", "oXX.....%.XXX.Xo", "XX@.....%.....OO", "Xo@.....%.....OO", "oo@...........Oo", "oo@...........Oo", "oo@...........Oo", "oo@...........Oo", "ooX.....%.....Xo", "oXX.....%.....Xo", "XX@.%%X.%.....OO", "Xo@.@@X.%.....OO", "oo@.@@X.......Oo", "oo@.--X...%%X.Oo", " ", " ", "................", "@@-X...........%", "@@-X...........%", "XXXX...........X", "................", "..%%%%....%%%%..", "................", "X...........%@@-", "X...........%@@-", "X...........XXXX", "................", "XXXXXXXXXXXXXXXX", " ", " ", " X.XXX...@@X. ", " X.......@@X. ", " X.....%.--X. ", " X.....%.XXX. ", " X.....%..... ", " X.....%..... ", " X........... ", " X........... ", " X........... ", " X........... ", " X.....%..... ", " X.....%..... ", " X.%%X.%..... ", " X.@@X.%..... ", " X.@@X....... ", " X.--X...%%X. ", " X.......X@@.. ", " X.......X@@@..", " X........X....", " X.....%......", " X......%.....", " X.......%....", " X...........", " X...........", " X.....XXXXX", " X....X-@@%", " X....-@@%", " XX......", " XXX...", " XXX", " ", " ", " ", " ", " ..", " .....", " .......", " X.......", " X........", " X.........", " X..........", " X.......%..", " X.......%..X", " X..XX..%..X@", " X.--X......@", " X..@@X......@", " X..@@X.......", " X..%%X.......", " ", " ", ".... ", "....... ", "%@@-..... ", "%@@-X..... ", "XXXXX...... ", "............ ", "............ ", ".....%....... ", "......%...... ", ".......%..... ", "...%%X........ ", "X..@@@X....... ", " X..@@X....... ", " X.--X....... ", " X........X@@. ", "X..@......X@@. ", ".-@@......X--. ", ".-@@X..%..XX.. ", ".XXX..%....... ", ".....%....... ", "............. ", "............. ", "............ ", "...........X ", "..........X ", "........XX ", ".....XXX ", "XXXXX ", " ", " ", " X........... ", " X.%.%.%.%.%. ", "................", "@@-X...........%", "@@-X...........%", "XXXX...........X", "................", "..%%%%....%%%%..", "................", "X...........%@@-", "X...........%@@-", "X...........XXXX", "................", "XXXXXXXXXXXXXXXX", " ", " ", " X.XXX...@@X. ", " X.......@@X. ", " X.....%.--X...", " X.....%.XXX.%.", " X.....%.......", " X.....%.....%.", " X.............", " X...........%.", " X.............", " X...........%.", " X.....%.......", " X.....%.....%.", " X.%%X.%.......", " X.@@X.%.....XX", " X.@@X....... ", " X.--X...%%X. ", " ", " ", "................", "@@-X...........%", "@@-X...........%", "XXXX...........X", "................", "..%%%%....%%%%..", "................", "X...........%@@-", "X...........%@@-", "X...........XXXX", "................", "XXX.%.%.%.%.%.XX", " X........... ", " X........... ", " X.XXX...@@X. ", " X.......@@X. ", "........%.--X. ", "..%.....%.XXX. ", "........%..... ", "..%.....%..... ", ".............. ", "..%........... ", ".............. ", "..%........... ", "........%..... ", "..%.....%..... ", "....%%X.%..... ", "XXX.@@X.%..... ", " X.@@X....... ", " X.--X...%%X. ", " X.-.-.-.@@X. ", " X.-.-.-.--X. ", ".--.......XXX.--", "@@-X............", "@@-X..........--", "XXXX....&.......", ".--....#X#....--", "........&.......", ".--...........--", "..........%@@-X.", ".--.......%@@-X-", "..........XXXXX.", ".--.%%X.......--", "XXX-@@X-.-.-.-XX", " X-@@X-.-.-.- ", " X.--X...%%X. ", " . . ", " . . ", "......@..@......", "@@-X..@..@.....%", "@@-X..@..@.....%", "XXXX..@..@.....X", "......@..@......", "..%%%%@..@%%%%..", "......@..@......", "X.....@..@..%@@-", "X.....@..@..%@@-", "X.....@..@..XXXX", "......@..@......", "XXXXXX@XX@XXXXXX", " . . ", " . . ", " X.XXX...@@X. ", " X.......@@X. ", " X.....%.--X. ", " X.....%.XXX. ", " X.....%..... ", "..@@@@@@@@@@@@..", " X........... ", " X........... ", "..@@@@@@@@@@@@..", " X........... ", " X.....%..... ", " X.....%..... ", " X.%%X.%..... ", " X.@@X.%..... ", " X.@@X....... ", " X.--X...%%X. ", "oooooooooooooooo", "oooOooooooOooooo", "oooooooooooooooo", "oooooooooooooOoo", "oooooooooooooooo", "oooooooOoooooooo", "oooOoooooooooooo", "oooooooooooOoooO", "oooooooooooooooo", "OoooOooooooooooo", "oooooooooooooooo", "ooooooooooOoooOo", "ooooOOoooooooooo", "oooooooooooooooo", "oooOoooooooOoooo", "oooooooooooooooO", "oooooooooooooooo", "ooooXXooooooXXoo", "................", "...%@@-X...%@@-X", "...%@@-X...%@@-X", "...XXXXX...XXXXX", "................", "..%%%%....%%%%..", "................", "%@@-X...%@@-X...", "%@@-X...%@@-X...", "XXXXX...XXXXX...", "................", "@@@@XX@@@@@@XX@@", "OOOXXOOOOOOXXOOO", "OOXXOOOOOOXXOOOO", "oo@.%%X.......Oo", "oo@.@@X.......Oo", "ooX.@@X.%.....Xo", "oXX.--X.%.%%X.Xo", "XX@.XXX.%.@@X.OO", "Xo@.....%.@@X.OO", "oo@.......--X.Oo", "oo@.......XXX.Oo", "oo@.%%X.......Oo", "oo@.@@X.......Oo", "ooX.@@X.%.....Xo", "oXX.--X.%.%%X.Xo", "XX@.XXX.%.@@X.OO", "Xo@.....%.@@X.OO", "oo@.......--X.Oo", "oo@.......XXX.Oo", " ", " ", "................", "...%@@-X...%@@-X", "...%@@-X...%@@-X", "...XXXXX...XXXXX", "................", "..%%%%....%%%%..", "................", "%@@-X...%@@-X...", "%@@-X...%@@-X...", "XXXXX...XXXXX...", "................", "XXXXXXXXXXXXXXXX", " ", " ", " X.%%X....... ", " X.@@X....... ", " X.@@X.%..... ", " X.--X.%.%%X. ", " X.XXX.%.@@X. ", " X.....%.@@X. ", " X.......--X. ", " X.......XXX. ", " X.%%X....... ", " X.@@X....... ", " X.@@X.%..... ", " X.--X.%.%%X. ", " X.XXX.%.@@X. ", " X.....%.@@X. ", " X.......--X. ", " X.......XXX. ", " X.%%X........ ", " X.@@X....%X...", " X.@@X...%@-X..", " X--X..%.-X%@-", " XXXX...%..%@-", " X.......%.XXX", " X...........", " X....%X.....", " X..%@@X....", " X..@@-X...", " X..-X....", " XX......", " XXX...", " XXX", " ", " ", " ", " ", " ..", " .....", " ...X-@@", " X...X-@@", " X....XXXX", " X.........", " X..%.......", " X.@@%...%..", " X.-@@X..%.%.", " X.X-X..%.-@%", " X..X.....X-X", " X.......X%%X.", " X.......X@@..", " X.......X--..", " ", " ", ".... ", "....... ", "%....X-.. ", "%...X-@@.. ", "X....X@@%.. ", "......X%.... ", "............ ", ".XXX.%....... ", ".-@%..%...XXX ", ".-@%X-.%..X-- ", "...X-@%...X@@. ", "....X%....X@@. ", " X........X%%. ", " X........... ", " X...--X...... ", "X....@@X...... ", "....X%%X...... ", "...X-X.....X.. ", "...%@-.%..X-X. ", "....%.%..X@@- ", ".....%...%@@. ", "..........%.. ", "............ ", "..XXXXX....X ", "..%@@-X...X ", "..%@@-X.XX ", ".....XXX ", "XXXXX ", " ", " ", " X........... ", " X.%.%.%.%.%. ", "................", "...%@@-X...%@@-X", "...%@@-X...%@@-X", "...XXXXX...XXXXX", "................", "..%%%%....%%%%..", "................", "%@@-X...%@@-X...", "%@@-X...%@@-X...", "XXXXX...XXXXX...", "................", "XXXXXXXXXXXXXXXX", " ", " ", " X.%%X....... ", " X.@@X....... ", " X.@@X.%.......", " X.--X.%.%%X.%.", " X.XXX.%.@@X...", " X.....%.@@X.%.", " X.......--X...", " X.......XXX.%.", " X.%%X.........", " X.@@X.......%.", " X.@@X.%.......", " X.--X.%.%%X.%.", " X.XXX.%.@@X...", " X.....%.@@X.XX", " X.......--X. ", " X.......XXX. ", " ", " ", "................", "...%@@-X...%@@-X", "...%@@-X...%@@-X", "...XXXXX...XXXXX", "................", "..%%%%....%%%%..", "................", "%@@-X...%@@-X...", "%@@-X...%@@-X...", "XXXXX...XXXXX...", "................", "XXX.%.%.%.%.%.XX", " X........... ", " X........... ", " X.%%X....... ", " X.@@X....... ", "....@@X.%..... ", "..%.--X.%.%%X. ", "....XXX.%.@@X. ", "..%.....%.@@X. ", "..........--X. ", "..%.......XXX. ", "....%%X....... ", "..%.@@X....... ", "....@@X.%..... ", "..%.--X.%.%%X. ", "....XXX.%.@@X. ", "XXX.....%.@@X. ", " X.......--X. ", " X.......XXX. ", " X.-.-.-.-.-. ", " X.-.-.-.-.-. ", ".--...........--", "...%@@-X...%@@-X", ".--%@@-X...%@@-X", "...XXXXX&..XXXXX", ".--....#X#....--", "........&.......", ".--...........--", "%@@-X...%@@-X...", "%@@-X...%@@-X.--", "XXXXX...XXXXX...", ".--...........--", "XXX-.-.-.-.-.-XX", " X-.-.-.-.-.- ", " X........... ", " . . ", " . . ", "......@..@......", "...%@@@X.@.%@@-X", "...%@@@X.@.%@@-X", "...XXX@X.@.XXXXX", "......@..@......", "..%%%%@..@%%%%..", "......@..@......", "%@@-X.@.%@@-X...", "%@@-X.@.%@@-X...", "XXXXX.@.X@XXX...", "......@..@......", "XXXXXX@XX@XXXXXX", " . . ", " . . ", " X.%%X....... ", " X.@@X....... ", " X.@@X.%..... ", " X.--X.%.%%X. ", " X.XXX.%.@@X. ", "..@@@@@@@@@@@@..", " X.......--X. ", " X.......XXX. ", "..@@@@@@@@@@@@..", " X.@@X....... ", " X.@@X.%..... ", " X.--X.%.%%X. ", " X.XXX.%.@@X. ", " X.....%.@@X. ", " X.......--X. ", " X.......XXX. ", "oooooooooooooooo", "oooOooooooOooooo", "oooooooooooooooo", "oooooooooooooOoo", "oooooooooooooooo", "oooooooOoooooooo", "oooOoooooooooooo", "oooooooooooOoooO", "oooooooooooooooo", "OoooOooooooooooo", "oooooooooooooooo", "ooooooooooOoooOo", "ooooOOoooooooooo", "oooooooooooooooo", "oooOoooooooOoooo", "oooooooooooooooO", "oooooooooooooooo", "ooooXXooooooXXoo", "................", ".%@@-X...%@@-X..", ".%@@-X...%@@-X..", ".XXXXX...XXXXX..", "................", "..%%%%....%%%%..", "................", "..%@@-X...%@@-X.", "..%@@-X...%@@-X.", "..XXXXX...XXXXX.", "................", "@@@@XX@@@@@@XX@@", "OOOXXOOOOOOXXOOO", "OOXXOOOOOOXXOOOO", "oo@...........Oo", "oo@.......%%X.Oo", "ooX.....%.@@X.Xo", "oXX.%%X.%.@@X.Xo", "XX@.@@X.%.--X.OO", "Xo@.@@X.%.XXX.OO", "oo@.--X.......Oo", "oo@.XXX.......Oo", "oo@...........Oo", "oo@.......%%X.Oo", "ooX.....%.@@X.Xo", "oXX.%%X.%.@@X.Xo", "XX@.@@X.%.--X.OO", "Xo@.@@X.%.XXX.OO", "oo@.--X.......Oo", "oo@.XXX.......Oo", " ", " ", "................", ".%@@-X...%@@-X..", ".%@@-X...%@@-X..", ".XXXXX...XXXXX..", "................", "..%%%%....%%%%..", "................", "..%@@-X...%@@-X.", "..%@@-X...%@@-X.", "..XXXXX...XXXXX.", "................", "XXXXXXXXXXXXXXXX", " ", " ", " X........... ", " X.......%%X. ", " X.....%.@@X. ", " X.%%X.%.@@X. ", " X.@@X.%.--X. ", " X.@@X.%.XXX. ", " X.--X....... ", " X.XXX....... ", " X........... ", " X.......%%X. ", " X.....%.@@X. ", " X.%%X.%.@@X. ", " X.@@X.%.--X. ", " X.@@X.%.XXX. ", " X.--X....... ", " X.XXX....... ", " X.......%%X.. ", " X.%%X...@@X...", " X.@@X...--X...", " X@@X..%XX%@-.", " X--X...%.%@-.", " XXXX....%XXX.", " X...........", " X...........", " X.....%X...", " X...%@@X..", " X...@@-X.", " XX..-X..", " XXX...", " XXX", " ", " ", " ", " ", " ..", " .....", " ...-@@%", " X..X-@@%", " X...XXXXX", " X.........", " X..........", " X.......%..", " X..%....%X-@", " X.@@%..%.X-@", " X-@@X..X%%XX", " X.X-X...X@@..", " X..X....X--..", " X............", " ", " ", ".... ", "...X-.. ", "..X-@@... ", "...X@@%... ", "....X%..... ", "............ ", "............ ", "..XXX%....XX. ", "%.-@%.%...--X ", "%.-@%XX%..@@X ", "X...--X...@@X. ", "X...@@X...%%X. ", " X..-%X....... ", " X........... ", " X............ ", "X....--X....X. ", ".....@@X...X-X ", "..XXX%%X..X@@- ", "..%@-X.%..%@@. ", "..%@-X%....%. ", ".....%....... ", "............. ", "............ ", "...XXXXX...X ", "...%@@-X..X ", "...%@@-.XX ", ".....XXX ", "XXXXX ", " ", " ", " X........... ", " X.%.%.%.%.%. ", "................", ".%@@-X...%@@-X..", ".%@@-X...%@@-X..", ".XXXXX...XXXXX..", "................", "..%%%%....%%%%..", "................", "..%@@-X...%@@-X.", "..%@@-X...%@@-X.", "..XXXXX...XXXXX.", "................", "XXXXXXXXXXXXXXXX", " ", " ", " X........... ", " X.......%%X. ", " X.....%.@@X...", " X.%%X.%.@@X.%.", " X.@@X.%.--X...", " X.@@X.%.XXX.%.", " X.--X.........", " X.XXX.......%.", " X.............", " X.......%%X.%.", " X.....%.@@X...", " X.%%X.%.@@X.%.", " X.@@X.%.--X...", " X.@@X.%.XXX.XX", " X.--X....... ", " X.XXX....... ", " ", " ", "................", ".%@@-X...%@@-X..", ".%@@-X...%@@-X..", ".XXXXX...XXXXX..", "................", "..%%%%....%%%%..", "................", "..%@@-X...%@@-X.", "..%@@-X...%@@-X.", "..XXXXX...XXXXX.", "................", "XXX.%.%.%.%.%.XX", " X........... ", " X........... ", " X........... ", " X.......%%X. ", "........%.@@X. ", "..%.%%X.%.@@X. ", "....@@X.%.--X. ", "..%.@@X.%.XXX. ", "....--X....... ", "..%.XXX....... ", ".............. ", "..%.......%%X. ", "........%.@@X. ", "..%.%%X.%.@@X. ", "....@@X.%.--X. ", "XXX.@@X.%.XXX. ", " X.--X....... ", " X.XXX....... ", " X.-.-.-.-.-. ", " X.-.-.-.-.-. ", ".--...........--", ".%@@-X...%@@-X..", ".%@@-X...%@@-X--", ".XXXXX..&XXXXX..", ".--....#X#....--", "........&.......", ".--...........--", "..%@@-X...%@@-X.", ".-%@@-X...%@@-X-", "..XXXXX...XXXXX.", ".--...........--", "XXX-.-.-.-.-.-XX", " X-.-.-.-.-.- ", " X........... ", " . . ", " . . ", "......@..@......", ".%@@-X@..@@@-X..", ".%@@-X@..@@@-X..", ".XXXXX@..@XXXX..", "......@..@......", "..%%%%@..@%%%%..", "......@..@......", "..%@@-@..@%@@-X.", "..%@@-@..@%@@-X.", "..XXXX@..@XXXXX.", "......@..@......", "XXXXXX@XX@XXXXXX", " . . ", " . . ", " X........... ", " X.......%%X. ", " X.....%.@@X. ", " X.%%X.%.@@X. ", " X.@@X.%.--X. ", "..@@@@@@@@@@@@..", " X.--X....... ", " X.XXX....... ", "..@@@@@@@@@@@@..", " X.......%%X. ", " X.....%.@@X. ", " X.%%X.%.@@X. ", " X.@@X.%.--X. ", " X.@@X.%.XXX. ", " X.--X....... ", " X.XXX....... ", "oooooooooooooooo", "oooOooooooOooooo", "oooooooooooooooo", "oooooooooooooOoo", "oooooooooooooooo", "oooooooOoooooooo", "oooOoooooooooooo", "oooooooooooOoooO", "oooooooooooooooo", "OoooOooooooooooo", "oooooooooooooooo", "ooooooooooOoooOo", "ooooOOoooooooooo", "oooooooooooooooo", "oooOoooooooOoooo", "oooooooooooooooO", "oooooooooooooooo", "ooooXXooooooXXoo", "................", "@@-X...%@@-X...%", "@@-X...%@@-X...%", "XXXX...XXXXX...X", "................", "..%%%%....%%%%..", "................", "X...%@@-X...%@@-", "X...%@@-X...%@@-", "X...XXXXX...XXXX", "................", "@@@@XX@@@@@@XX@@", "OOOXXOOOOOOXXOOO", "OOXXOOOOOOXXOOOO", "oo@.--X...@@X.Oo", "oo@.XXX...@@X.Oo", "ooX.....%.--X.Xo", "oXX.....%.XXX.Xo", "XX@.....%.....OO", "Xo@.%%X.%.....OO", "oo@.@@X.......Oo", "oo@.@@X...%%X.Oo", "oo@.--X...@@X.Oo", "oo@.XXX...@@X.Oo", "ooX.....%.--X.Xo", "oXX.....%.XXX.Xo", "XX@.....%.....OO", "Xo@.%%X.%.....OO", "oo@.@@X.......Oo", "oo@.@@X...%%X.Oo", " ", " ", "................", "@@-X...%@@-X...%", "@@-X...%@@-X...%", "XXXX...XXXXX...X", "................", "..%%%%....%%%%..", "................", "X...%@@-X...%@@-", "X...%@@-X...%@@-", "X...XXXXX...XXXX", "................", "XXXXXXXXXXXXXXXX", " ", " ", " X.--X...@@X. ", " X.XXX...@@X. ", " X.....%.--X. ", " X.....%.XXX. ", " X.....%..... ", " X.%%X.%..... ", " X.@@X....... ", " X.@@X...%%X. ", " X.--X...@@X. ", " X.XXX...@@X. ", " X.....%.--X. ", " X.....%.XXX. ", " X.....%..... ", " X.%%X.%..... ", " X.@@X....... ", " X.@@X...%%X. ", " X.XXX...--X.. ", " X.......XXX...", " X.........%X..", " X.%X..%.%@-X%", " X%@@X..%.-X.%", " X.@@-X..%...X", " X.-X........", " X...........", " X..........", " X.....%@@-", " X....%@@-", " XX..XXXX", " XXX...", " XXX", " ", " ", " ", " ", " ..", " .....", " ...%...", " X..@@%..", " X..-@@X..", " X...X-X...", " X.....X....", " X.......%..", " X.......%..X", " X......%.%.X", " XX%%....-@%X", " X.X@@....X-X.", " X.X@@.....X..", " X.X--...X%%..", " ", " ", ".... ", ".XXXX.. ", "X-@@%.... ", "X-@@%..... ", "X.......... ", "............ ", ".........X-. ", ".X...%..X-@@. ", "-%.X-.%..X@@% ", "-%X-@%.%..X%. ", "X..X%......... ", "X...XXX....... ", " X..--X...XXX. ", " X.@@X...--X. ", " X...X.....@@X ", "X...X-X....@@X ", "..XX%@-....%%X ", "..-X.%.%...... ", "..-X..%....... ", ".....%....... ", ".......X..... ", "......X-X.... ", "..X..X@@-... ", "..X..%@@...X ", "..X...%...X ", "........XX ", ".....XXX ", "XXXXX ", " ", " ", " X........... ", " X.%.%.%.%.%. ", "................", "@@-X...%@@-X...%", "@@-X...%@@-X...%", "XXXX...XXXXX...X", "................", "..%%%%....%%%%..", "................", "X...%@@-X...%@@-", "X...%@@-X...%@@-", "X...XXXXX...XXXX", "................", "XXXXXXXXXXXXXXXX", " ", " ", " X.--X...@@X. ", " X.XXX...@@X. ", " X.....%.--X...", " X.....%.XXX.%.", " X.....%.......", " X.%%X.%.....%.", " X.@@X.........", " X.@@X...%%X.%.", " X.--X...@@X...", " X.XXX...@@X.%.", " X.....%.--X...", " X.....%.XXX.%.", " X.....%.......", " X.%%X.%.....XX", " X.@@X....... ", " X.@@X...%%X. ", " ", " ", "................", "@@-X...%@@-X...%", "@@-X...%@@-X...%", "XXXX...XXXXX...X", "................", "..%%%%....%%%%..", "................", "X...%@@-X...%@@-", "X...%@@-X...%@@-", "X...XXXXX...XXXX", "................", "XXX.%.%.%.%.%.XX", " X........... ", " X........... ", " X.--X...@@X. ", " X.XXX...@@X. ", "........%.--X. ", "..%.....%.XXX. ", "........%..... ", "..%.%%X.%..... ", "....@@X....... ", "..%.@@X...%%X. ", "....--X...@@X. ", "..%.XXX...@@X. ", "........%.--X. ", "..%.....%.XXX. ", "........%..... ", "XXX.%%X.%..... ", " X.@@X....... ", " X.@@X...%%X. ", " X.--X.-.@@X. ", " X.XXX.-.@@X. ", ".--.......--X.--", "@@-X......XXX..%", "@@-X..........-%", "XXXX%%X.#......X", ".--.@@X&X&....--", "....@@X.#.%%X...", ".--.--X...@@X.--", "X...XXX...@@X@@-", "X--.......--X@@-", "X.........XXXXXX", ".--...........--", "XXX-%%X-.-.-.-XX", " X-@@X-.-.-.- ", " X.@@X...%%X. ", " . . ", " . . ", "......@..@......", "@@-X..@%@@-X...%", "@@-X..@%@@-X...%", "XXXX..@XX@XX...X", "......@..@......", "..%%%%@..@%%%%..", "......@..@......", "X...%@@-X@..%@@-", "X...%@@-X@..%@@-", "X...XX@XX@..XXXX", "......@..@......", "XXXXXX@XX@XXXXXX", " . . ", " . . ", " X.--X...@@X. ", " X.XXX...@@X. ", " X.....%.--X. ", " X.....%.XXX. ", " X.....%..... ", "..@@@@@@@@@@@@..", " X.@@X....... ", " X.@@X...%%X. ", "..@@@@@@@@@@@@..", " X.XXX...@@X. ", " X.....%.--X. ", " X.....%.XXX. ", " X.....%..... ", " X.%%X.%..... ", " X.@@X....... ", " X.@@X...%%X. ", "oooooooooooooooo", "oooOooooooOooooo", "oooooooooooooooo", "oooooooooooooOoo", "oooooooooooooooo", "oooooooOoooooooo", "oooOoooooooooooo", "oooooooooooOoooO", "oooooooooooooooo", "OoooOooooooooooo", "oooooooooooooooo", "ooooooooooOoooOo", "ooooOOoooooooooo", "oooooooooooooooo", "oooOoooooooOoooo", "oooooooooooooooO", "oooooooooooooooo", "ooooXXooooooXXoo", "................", "-X...%@@-X...%@@", "-X...%@@-X...%@@", "XX...XXXXX...XXX", "................", "..%%%%....%%%%..", "................", "@-X...%@@-X...%@", "@-X...%@@-X...%@", "XXX...XXXXX...XX", "................", "@@@@XX@@@@@@XX@@", "OOOXXOOOOOOXXOOO", "OOXXOOOOOOXXOOOO", "oo@.@@X...--X.Oo", "oo@.@@X...XXX.Oo", "ooX.--X.%.....Xo", "oXX.XXX.%.....Xo", "XX@.....%.....OO", "Xo@.....%.%%X.OO", "oo@.......@@X.Oo", "oo@.%%X...@@X.Oo", "oo@.@@X...--X.Oo", "oo@.@@X...XXX.Oo", "ooX.--X.%.....Xo", "oXX.XXX.%.....Xo", "XX@.....%.....OO", "Xo@.....%.%%X.OO", "oo@.......@@X.Oo", "oo@.%%X...@@X.Oo", " ", " ", "................", "-X...%@@-X...%@@", "-X...%@@-X...%@@", "XX...XXXXX...XXX", "................", "..%%%%....%%%%..", "................", "@-X...%@@-X...%@", "@-X...%@@-X...%@", "XXX...XXXXX...XX", "................", "XXXXXXXXXXXXXXXX", " ", " ", " X.@@X...--X. ", " X.@@X...XXX. ", " X.--X.%..... ", " X.XXX.%..... ", " X.....%..... ", " X.....%.%%X. ", " X.......@@X. ", " X.%%X...@@X. ", " X.@@X...--X. ", " X.@@X...XXX. ", " X.--X.%..... ", " X.XXX.%..... ", " X.....%..... ", " X.....%.%%X. ", " X.......@@X. ", " X.%%X...@@X. ", " X.@@X...XXX.. ", " X.--X....%X...", " X.XXX...%@-X..", " X.....%.-X.%@", " X......%...%@", " X...%X..%..XX", " X.%@@X......", " X..@@-X.....", " X..-X......", " X.......%@", " X......%@", " XX....XX", " XXX...", " XXX", " ", " ", " ", " ", " ..", " .....", " .....X-", " X.....X-", " X..%...XX", " X..@@%....", " X..-@@X....", " X..X-X..%..", " X....X..%.%.", " X......%.-@%", " X........X-X", " X..........X.", " X.X%%...X%%..", " X.X@@...X@@..", " ", " ", ".... ", ".XX.... ", "@@%...... ", "@@%....... ", "X......-X.. ", "......-@@X.. ", ".......@@%X. ", ".XX..%..%X... ", "X@%...%...... ", "X@%.-X.%..... ", "X..-@@X...XXX. ", "X...%X....--X. ", " X..XXX...@@X. ", " X.--X...--X. ", " X...%%X...%%X ", "X...X......... ", "..XX-X........ ", "@-X%@-.%...... ", "@-X.%.%....... ", "XXX..%...-X.. ", "........@@-X. ", ".......%@@X.. ", "........%X.. ", ".-@-X...X..X ", ".-@-X.....X ", ".XXXX...XX ", ".....XXX ", "XXXXX ", " ", " ", " X........... ", " X.%.%.%.%.%. ", "................", "-X...%@@-X...%@@", "-X...%@@-X...%@@", "XX...XXXXX...XXX", "................", "..%%%%....%%%%..", "................", "@-X...%@@-X...%@", "@-X...%@@-X...%@", "XXX...XXXXX...XX", "................", "XXXXXXXXXXXXXXXX", " ", " ", " X.@@X...--X. ", " X.@@X...XXX. ", " X.--X.%.......", " X.XXX.%.....%.", " X.....%.......", " X.....%.%%X.%.", " X.......@@X...", " X.%%X...@@X.%.", " X.@@X...--X...", " X.@@X...XXX.%.", " X.--X.%.......", " X.XXX.%.....%.", " X.....%.......", " X.....%.%%X.XX", " X.......@@X. ", " X.%%X...@@X. ", " ", " ", "................", "-X...%@@-X...%@@", "-X...%@@-X...%@@", "XX...XXXXX...XXX", "................", "..%%%%....%%%%..", "................", "@-X...%@@-X...%@", "@-X...%@@-X...%@", "XXX...XXXXX...XX", "................", "XXX.%.%.%.%.%.XX", " X........... ", " X........... ", " X.@@X...--X. ", " X.@@X...XXX. ", "....--X.%..... ", "..%.XXX.%..... ", "........%..... ", "..%.....%.%%X. ", "..........@@X. ", "..%.%%X...@@X. ", "....@@X...--X. ", "..%.@@X...XXX. ", "....--X.%..... ", "..%.XXX.%..... ", "........%..... ", "XXX.....%.%%X. ", " X.......@@X. ", " X.%%X...@@X. ", " X.@@X.-.--X. ", " X.@@X.-.XXX. ", ".--.--X.......--", "-X..XXX......%@@", "-X-..........%@@", "XX......#.%%XXXX", ".--....&X&@@X.--", "....%%X.#.@@X...", ".--.@@X...--X.--", "@-X.@@X...XXX.%@", "@-X.--X.......%@", "XXX.XXX.......XX", ".--...........--", "XXX-.-.-.-%%X-XX", " X-.-.-.-@@X- ", " X.%%X...@@X. ", " . . ", " . . ", "......@..@......", "-X...%@@-@...%@@", "-X...%@@-@...%@@", "XX...X@XX@...XXX", "......@..@......", "..%%%%@..@%%%%..", "......@..@......", "@-X...@@@@X...%@", "@-X...@@@@X...%@", "XXX...@XX@X...XX", "......@..@......", "XXXXXX@XX@XXXXXX", " . . ", " . . ", " X.@@X...--X. ", " X.@@X...XXX. ", " X.--X.%..... ", " X.XXX.%..... ", " X.....%..... ", "..@@@@@@@@@@@@..", " X.......@@X. ", " X.%%X...@@X. ", "..@@@@@@@@@@@@..", " X.@@X...XXX. ", " X.--X.%..... ", " X.XXX.%..... ", " X.....%..... ", " X.....%.%%X. ", " X.......@@X. ", " X.%%X...@@X. ", "oooooooooooooooo", "oooOooooooOooooo", "oooooooooooooooo", "oooooooooooooOoo", "oooooooooooooooo", "oooooooOoooooooo", "oooOoooooooooooo", "oooooooooooOoooO", "oooooooooooooooo", "OoooOooooooooooo", "oooooooooooooooo", "ooooooooooOoooOo", "ooooOOoooooooooo", "oooooooooooooooo", "oooOoooooooOoooo", "oooooooooooooooO", "oooooo-oo-oooooo", "oooooooooooooooo", "oooooo@oo@oooooo", "oooooooooooooooo", "oooooo-oo-oooooo", "oooooooooooooooo", "oooooo@oo@oooooo", "oooooooooooooooo", "oooooo-oo-oooooo", "oooooooooooooooo", "oooooo@oo@oooooo", "oooooooooooooooo", "oooooo-oo-oooooo", "oooooooooooooooo", "oooooo@oo@oooooo", "oooooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "@o-o@o-o@o-o@o-o", "oooooooooooooooo", "oooooooooooooooo", "@o-o@o-o@o-o@o-o", "oooooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", " ", " ", " ", " ", " ", "........X.......", " X ", " XX ", "................", " X ", " X ", " + ", " + ", " ++ ", " + ", " + ", " . . ", " . . ", " . . ", " . . ", " .X . ", " .XX. ", " . . ", " X. . ", " X . . ", " +. . ", " . . ", " .+ . ", " . +. ", " . . ", " . . ", " . . ", " . . ", " . . ", " . . ", " . . ", " . . ", " . X......", " . X ", " .X ", " ..........", " X ", " X ", " + ", " + ", " + + ", " + ", " + ", " ", " ", " ", " ", " ", " X.........", " .X ", " . X ", " X. .......", " X . . ", " +. . ", " . . ", " .+ . ", " . +. ", " . . ", " . . ", " ", " ", " ", " ", " ", ".........X ", " X. ", " X . ", "....... . ", " X. . ", " X . . ", " +. . ", " . . ", " .+ . ", " . +. ", " .+ . ", " . . ", " . . ", " . . ", " . . ", " . . ", "......X . ", " X . ", " X X. ", ".......... ", " X ", " X ", " + ", " + ", " + ", " + ", " + ", " . . ", " . . ", " . . ", " . . ", " . . ", "......X.........", " X . ", " XX. ", ".........X......", " X ", " X ", " + ", " + ", " + ", " + ", " ", " . . ", " . . ", " . . ", " . . ", " . . ", " X.........", " .X . ", " .XX. ", " . X......", " X. . ", " X . . ", " +. . ", " . . ", " .+ . ", " . +. ", " . . ", " ", " ", " ", " ", " ", "......X.........", " .X ", " .XX ", ".........X......", " X. . ", " X . . ", " +. . ", " . . ", " .+ . ", " . +. ", " . . ", " . . ", " . . ", " . . ", " . . ", " . . ", "......X . ", " .X . ", " .XX. ", ".........X ", " X. . ", " X . . ", " +. . ", " . . ", " .+ . ", " . +. ", " . . ", " . . ", " . . ", " . . ", " . . ", " . . ", "......X.........", " .X . ", " .XX. ", ".........X......", " X. . ", " X . . ", " +. . ", " . . ", " .+ . ", " . +. ", " . . ", " . . ", " . . ", " . . ", "X++ X+. X.+ X++ ", "X++ X+. X.+ X++ ", "@@@@@@.@@.@@@@@@", "X++.X+..X.+.X++.", "X++ X+. X.+ X++ ", "X++ X+. X.+ X++ ", "X++ X+. X.+ X++ ", "@@@@@@.@@.@@@@@@", "X++.X+..X.+.X++.", "X++ X+. X.+ X++ ", "XXX XX. X.X XXX ", " . . ", " . . ", " @. @. ", " X++@++++@++ ", " X++@++++@++ ", " XXX@XXXX@XX ", " @. @. ", "................", " X++@++++@++ ", " XXX@XXXX@XX ", "................", " X++@++++@++ ", " X++@++++@++ ", " XXX@XXXX@XX ", " @. @. ", " X++@++++@++ ", " X++@++++@++ ", " XXX@XXXX@XX ", " XXXXXXXXXXXXXXX", " %%%%%%%%%%%%%%X", " %%%%%%%%%%%%%%X", " %%%%%%%%%%%%%%X", " %%%%%%%%%%%%%%X", " %%%%%%%%%%%%%%X", " %%%%%%%%%%%%%%X", " %%%%%%%%%%%%%%X", ".%%%%%%%%%%%%%%X", " %%%%%%%%%%%%%%X", " %%%%%%%%%%%%%%X", ".%%%%%%%%%%%%%%X", " %%%%%%%%%%%%%%X", " %%%%%%%%%%%%%%X", " %%%%%%%%%%%%%%X", " XXXXXXXXXXXXXXX", "oooooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "oo@@@@oooo@@@@oo", "oooooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "oo@@@@oooo@@@@oo", "oooooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "oooo@oooooo@oooo", "oooo@oooooo@oooo", "oooo@oooooo@oooo", "oooo@oooooo@oooo", "oooooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "oooo@oooooo@oooo", "oooo@oooooo@oooo", "oooo@oooooo@oooo", "oooo@oooooo@oooo", "oooooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", " ", " ", " ", "X++ X++ X++ X++ ", "X++ X++ X++ X++ ", "@@@@@@@@@@@@@@@@", "X++.X++.X++.X++.", "X++ X++ X++ X++ ", "X++ X++ X++ X++ ", "X++ X++ X++ X++ ", "@@@@@@@@@@@@@@@@", "X++..++.X++.X++.", "X++ X++ X++ X++ ", "XXX XXX XXX XXX ", " ", " ", " @. @. ", " X++@++++@++ ", " X++@++++@++ ", " XXX@XXXX@XX ", " @. @. ", " X++@++++@++ ", " X++@++++@++ ", " XXX@XXXX@XX ", " @. @. ", " X++@++++@++ ", " X++@++++@++ ", " XXX@XXXX@XX ", " @. @. ", " X++@++++@++ ", " X++@++++@++ ", " XXX@XXXX@XX ", " @. @. ", " @. @++ ", " @. +@+X +", " @ ++.@ ++", " @+++X .@@X", " +@+X ++@", " X++.@ ++X.", " X+X.@ ++X ", " X .@++X ", " +@@ ", " +++.@@@", " X+X ...", " X ", " ", " ", " ", " ", " ", " ", " ", " + ", " X+++ @@@", " X+@@...", " @.+ ", " @.++ ", " ++ @. X++ ", " X++@. ++ @", " X@.++ X@@.", " @X+++ @.+ ", " @. X+@.X++", " @. X@++ ", " @. @.X+ ", " ", " ", " ", " ", " + ", "@@@ +++ ", "...@@+X ", " ..@ ", " ++.@ ", " ++X .@++ ", "@++X .@++ ", ".@@ +++@ ", " +.@+++X @ ", "++X.@+X @ ", " X++@X @. ", " X+X @ @. ", " + @. @. ", " ++@. @. ", "++X+@++ @. ", "X+ @.X+++@. ", " @@. X++@+ ", "@.++ X@+++ ", ".X++ @.X+ ", " X++ @. ", " X+@. ", " @@++ ", "@@@..+++ ", "... X+ ", " ", " ", " ", " ", " @@. @@ ", " @@. @@ ", " @. @ @. @ ", " @. @. @ @ ", "@@. @@. @@", "@@@@@@.@@.@@@@@@", "......@..@......", " @. @ ", " @. @ ", " @@. @@ ", "@@@@@@@@@@@@@@@@", "................", " ", " .@@ ", " ... ", " ", " @. @@ ", " @. @@ ", " @@ @.@ ", " @@ @..@ ", " @.@ @. .@@", " .@ @. @ @. @@", " .@ @. @..@@..", " .. @. @@. ", " @. @@ ", " @. @..@@ ", " @. @.@. .@@", " @.@. @. @@", " @@. @. @. ", " @@ @.@. ", " @. @@. ", " @. @@ ", " ", " .@@ ", " ... ", " ", " ", "@@@@@@@@@@@@@@@@", "..@@........@@..", " @ @. ", " @ @. ", " @ @. ", "@@@@@@.@@.@@@@@@", "@@.....@@.....@@", " @ @. @ @. ", " @ @ @ @. ", " @@. @@. ", " @@. @@. ", " @@. @. ", " @@. @. ", " @.@. @@. ", " @. @. @@. ", "@@. @. @.@. ", "@@ @.@. @. .@ ", "..@@ .@. @. .@ ", " .@@. @. .. ", " @@. @. ", " @@..@ @. ", "@@. @.@ @. ", "@@ @. @ @. ", " @ @. @@. ", " @ @. @@. ", " @@. @. ", " @@. @. ", ".@ @. @. ", ".. @. @. ", " @. @. ", " @. @. ", " @. @. ", "@@@@@.@@@@.@@@@@", ".....@....@.....", " @. @. ", " @. @. ", " @. @. ", "@@@@@.@@@@.@@@@@", ".....@....@.....", " @. @ ", " @. @ ", " @. @ ", " @. @ ", " X........... ", " X........... ", " X*.*.*.*.*.* ", " X........... ", " X........... ", "@@@@@@@@@@@@@@@@", "...XXXXXXXXXXX..", " X........... ", " X........... ", " X........... ", "@@@@@@@@@@@@@@@@", "...XXXXXXXXXXX..", " X........... ", " X........... ", " X*.*.*.*.*.* ", " X........... ", " @. @. ", " @. @. ", "..*..@X...@X..*.", ".....@X...@X....", "..*..@X...@X..*.", ".....@X...@X....", "..*..@X...@X..*.", ".....@X...@X....", "..*..@X...@X..*.", ".....@X...@X....", "..*..@X...@X..*.", ".....@X...@X....", "..*..@X...@X..*.", "XXXXX@.XXX@.XXXX", " @. @. ", " @. @. ", " X........... ", " X.....%..... ", " X.....%..... ", " X.....%..... ", " X.....%..... ", "XXXXXXXXXXXXXXXX", " X........... ", " X........... ", "XXXXXXXXXXXXXXXX", " X.....%..... ", " X.....%..... ", " X.....%..... ", " X.....%..... ", " X.....%..... ", " X........... ", " X........... ", "X###############", "X#XXXXXXXXXXXXXX", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "################", "XXXXXXXXXXXXXXXX", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "################", "XXXXXXXXXXXXXXX#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", " ", " ", " ####### ", " XX##XXX## ", " X## XX## ", " X## X## ", " X## X## ", " X## ## ", " X###### ", " X##XX## ", " X## XX## ", " X## XX## ", " #### #### ", " XXXX XXXX ", " ", " ", " X#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X# ", "X###############", "XXXXXXXXXXXXXXXX", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "################", "XXXXXXXXXXXXXXXX", " X#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", " X#", "################", "XXXXXXXXXXXXXXXX", " ", " ", " + + ", " + ", " @XXXXX ", " @@XXXXX ", " @@XXXXX $ ", " + @@..... + ", " @..X..+ ", " ++++++ $ ", " @@ @XXXX ", " @@@@@@ @@XXXX ", " +@@@@@ @@.... ", " @@@@@ @..X. ", " @ + ", " @ ", " ", "+ #..... ", " + +##.XXXX ", " ##$$$$$ ", " #$$$$$++", " +++++++", " @@@ ++++++", " O@@. ", " O+@@. @@@@@", " +O@@.@@@ @@@ ", " +O+@@.... @@@ ", " +O@..... @@@ ", " O+XXXXX+ @@@ ", " +XXXXX++ + ", " +++++++ ", " +++++ ", "@ @ @ @ @ @ @ @", " ", "@ .... .... @", " &.XXX@ #.XXX ", "@ &.XXX #.XXX @", " &++++@ #$$$+ ", "@ ++++ ++++ @", " + + ", " @ @ @ @ @ @ @ @", " .... .... ", "@ o.XXX @-.XXX @", " o.XXX -.XXX ", "@ oOOO+ @-@@@+ @", " ++++ ++++ ", "@+ + @ @", " @ @ @ @ @ @ ", " ", " $ $ $ $ $ $ $ $", " ", " $#$ $ $ $ $ $ $", " oXXXX@@@@@@", " $ $o@XXXX@@ $ $", " @oXXXX@@ ", " $ $o@XXXX@@ # $", " @oXXXX+ ", " $ $o@XXXX+$#$#$", " @oXXXX+ ", " # $o@O.O.+$ $ $", " @O.O.++ ", " $ $ $+$+$+$ $ $", " # ", " $ $ $ $ $ $ $ $", " ", " $ $ $ $ $ $ $ $", " ", " $ $ $ $ $ $ $ $", " &....... ", " $ &&..XXXXX $ $", " &&.XXXX.X ", " $ .&XXXXXXX+$ $", " &&+.++.+++ ", " $ &+++X+++$+$ $", " +++++++++ ", " $ $ $@@@@@$ $ $", " @@@@@ ", " $ $ $@@@@@$ $ $", " @@ ", " $ $ $ $ @@$ $ $", " ", " # # # # # # # #", " ", " # # # # # # # #", " ", " # # @X......# #", " @@..XXXXX ", " # #.@.XXXXXX$ #", " @@XXXXXXX+ ", " # #.@.......$ #", " @...X...++ ", " # # $+$.$+$+$ #", " @@@@@@@@ ", " # # # @@@@@@@@#", " @@ ", " # # # # # # @@#", " #$#############", " ##=..........X#", " #==.........XX#", " #@=..XXXXXX.XX#", " #==.XXXXXX..XX#", " #=++++++++..XX$", " #++.+.++++..XX$", " ##$$$$$$+=..XX$", " #.......==..XX$", " #.OOOOO.==..XX$", " @@@oooO.@=..XX$", " #.ooooO.==.XXX$", " #.......=++++$$", " ########++.+$$#", " #########$$$$$$", " $#$#$#$#$######", "################", "#$$$$&$$$$$$$$$#", "#$$$$$$&$$.....#", "#$$...$$$*...XX#", "#$*..Xo$**.XX.X#", "#**..X$$**=*..X#", "#**..X$$*=**..X#", "#**..X$$$$**..X#", "# *...........X#", "#**...........X#", "# *..XXXXXXXXXX#", "#**============#", "#*==++=+=+=+==$#", "#$$$$$$$$$$$$$$#", "#$$$$$$$$$$$$$$#", "################", "#$#$#$#$#$#$#$#$", "##########@#####", "$#########@@###$", "###o@........###", "$#oo.@......X##$", "##oo..XXXXXXX###", "$#oo..XXXXXXX$#$", "##oo..XOOO..O$##", "$#oo..XOO..O$$#$", "##oo..X$$@@$$$##", "##oo...$@@@@###$", "$#ooOOO$@@@@####", "##oOOO$$@@@@#$#$", "$##$$$$$#@@#####", "#########@@#$##$", "$#$#$#$##@@###$#", "################", "#$########$#####", "###%@@@@@@@@@@.#", "##%%@@@........#", "#%-%@@.........#", "#%%%@..........#", "#--%----@--@---#", "#%%-@-@---@-@-$#", "#%------.----$$#", "##$$$$$---$$$$$#", "###$$$.....$$$##", "#$##@@@@@@@@@###", "###@@@#####@@@$#", "###@@#$#####@@##", "#$#@@###$###@@##", "###@@#######@@##", " # # # # # # # #", "# # # # # # # # ", " # %...........#", "# %%..........X ", " %@%...XX.XX.XX#", "#%%%..-X.-X.-XX ", " %@%XXXXXXXXXXX#", "#%%%.-@---@--.- ", " %%..X--@--%..X#", "#%%..X-@-@%%..X ", " @%..X # #@%..X#", "#%%.XX#oo %%.XX ", " %@--- oo#%@---#", "#@--- #oo @---# ", " # # # # # # # #", "# # # # # # # # ", "#$######$#######", "##%%%%%%%%%%%%-#", "#%%@@@@@@@@@@@-#", "#%%@@@@@@@@@@@-#", "#@%@@@@@-@-----$", "#%%@@@@@-@----$$", "#@%@@@@@-$$$$$$$", "#%------$$$$$$$$", "#-@-%@@@$#o%---#", "##$$%@@@$o#%@@-#", "###o%@@@oo#%@@-#", "#$oo%%%%%%%%@@-$", "##o#%%@@@@@@@@-$", "####%%@@@@@@@@-$", "##$#%---------$$", "####--@-@-@--$$$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "$$ ", "$$ ", "$$ + $ +. ", "$$ ", "$$ ", "$$ .", "$$ . $ ..", "$$ $ ...", "$$ @ ....", "$$ ....", "$$ . ....", "$$ $ ....", "$$ $ ....", "$$ ....", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", " ", " $ $ ", " ", " ...............", "..@@@@@@@@@@@@@@", "..@@@@@@@@@@@@@@", "..@@@@@@@@@@@@@@", "..@@@@@@@@@@@@@.", "..@@@@@@@@@@@@.@", "..@@@@@@@@@@@@@@", "..@@@@@@@@@@@@@@", "..@@@@@@@@@@@@@@", "..@@@@@@@@@@@@@@", "..XXXXXXXXXXXXXX", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", " $$", " $$", " $$", "............. $$", "@@@@@@@@@@@@X $$", "@@@@@@@@@@@@X $$", "@@@@@@@@@@@@X $$", "@@@@@.@@@@@@X $$", "@@@@.@@@@@@@X $$", "@@@@@@@@@@@@X $$", "@@@@@@@@@@@@X $$", "@@@@@@@@@@@@X $$", "@@@@@@@@@@@@X+$$", "XXXXXXXXXXXXX+$$", "$$ + ....", "$$ + ....", "$$ ...@", "$$ ...XX", "$$ + .XXX", "$$ @ +++", "$$$ . @++", "$$ @ @@@ @@+", "$$ @@@@@@@ ", "$$ @@@@@@@@@", "$$+ @@@@@@@@@@", "$$ @@@@@@@@@@", "$$ @ @@@@@@@", "$$ @@@ @@@@@", "$$ @@@@@@@@@@", "$$ @@@@@@@@@", ".XX@XXX@XXX@XXX@", "X@XXX@XXX-XXX@X.", "XXX@XXX@XXX@XX..", "X@XXX@XXX@XXX...", "XXXXXXXXXXXX....", "++++++.+++++....", "+$++..++.+++....", "........++++....", "........++++....", "@@@@@@@@@ ....", "@@@@@@@@ @ ....", "@@@@@@@@@ ....", "@@@@@@@@@@ ....", "@@@@@@@@@@ ....", "@@@@@@@@@ ....", "@@@@@@@@@@ ....", "XXX@XXX@XXXX++$$", "..........X+++$$", "@@@@@@@@@@X+++$$", "@@@@@@@@@@X+++$$", "@@$$$$$@@@X+++$$", "@@$$@@$$@@X+++$$", "@@$$@@$$@@X+++$$", "@@$$$$$@@@X+++$$", "@@$$$$@@@@X+++$$", "@@$$@$$@@@X+ $$", "@@$$@@$$@@X+ $$", "@@@@@@@@@@X+$ $$", "@@@@@@@@@@X+ $$", "@@@@@@@@@@X+ $$", "@@@@@@@@@@X+ $$", "@@@@@@@@@@X+$ $$", "$$+ @@@@@@@ @", "$$ @@@@@@@@@", "$$ @ @@@@@@@", "$$ @ @@@@@", "$$ @ @ @@@", "$$ @@@", "$$ @@@@@", "$$ @ @@", "$$ $ @ @", "$$ + @@@@", "$$ + @@@", "$$ . @@", "$$ @ @@", "$$ @ @ ", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "@@@ @@@@@@ ....", "@@@@@@@ ...X", " @@@@ @ ..X@", "@ @ $ .XXX", "@ +++", "@@ + $ ++", "@ + +", "@@ @ ", "@@ . ", " @ @ ", "@@@ ", "@@@@ $ + @", " ", "@@ $", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "XXXXXXXXXXX+ $$", "X@XXX@XXXX++ $$", "XXX@XXX@X+++ $$", "XXXXXXXX++++ $$", "++++++++++++ $$", "++++++++++++ $$", "++++++++++++ $$", " $$", " . $$", " $$", "$ + $$", " + $$", " $$", " .$$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "$$ + ", "$$ ........", "$$+ ..XXXXXXX", "$$ ...+++++++", "$$ .@..+++++++", "$$ .....+++++++", "$$ .@....+++++++", "$$ ...@..+++++++", "$$ ......+++++++", "$$ .@....+++++++", "$$ ...@..XXXXXXX", "$$ .....XXXXXXXX", "$$ .@..XXX.XX.XX", "$$ ...XXXXXXXXXX", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", " ", "................", "XXXXXXXXXXXXXXXX", "++++++++++++++++", "++++++++++++++++", "++++++++++++++++", "++++++++++++++++", "++++++++++++++++", "++++++++++++++++", "++++++++++++++++", "XXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXX", ".XX.XX.XX.XX.XX.", "XXXXXXXXXXXXXXXX", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", " $$", ".... + + $$", "XXXX $$", "+++X + $$", "+++X $$", "+++X @@@@@@@$$", "+++X oOO@@@@$$", "+++X + oOO@@@@$$", "+++X @@@@@@@$$", "+++X @@@@@@@$$", "XXXX+ *=*@@@@$$", "XXX++ *=*@@@@$$", "XX+++ @@@@@@@$$", "X++++ @@@@@@@$$", "$$ ..XXX.XX.XX.X", "$$ .XXXXXXXXXXXX", "$$ ++++++++++++", "$$+ +++++++++++", "$$ ++++++++++", "$$ # +++++++++", "@@@@@@@@........", "@@@@@@@@@.......", "@--@@@--@@@--@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "$$ @@@@@ ", "$$ @@@@@ +# @@", "$$ @@@@@ $ @@+", "$$$@@@@@ @@@+", "$$ @@@@@ @@@@+", "X.XX.XX.XX.XX.XX", "XXXXXXXXXXXXXXX+", "++++++++++++++++", "++++++++++++++++", "++++++++++++++++", "++++++++++++++++", "................", "................", "--@@@--@@@--@@@-", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", " ", "@@@@@@@@@@@@@@@@", "++++++++++++++++", "+@++++++++++++++", "+.++++++++++$$$$", "+++++ @@@@@@@$$", "+++++ @@@@@@@$$", "+++++ @@@@@@@$$", "+++++ @@@@@@@$$", "+++++ @@@@@@@$$", "+++++ #@@@@@@@$$", ".....@@@@@@@@@@@", ".....@@@@@@@@@@@", "-@@@--@@@--@@@--", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", " $$", "@@@@@@@@@@@@@ $$", "++++++++++++. $$", "++++++++++@+. $$", "$+++++++++++. $$", "$$ $#$@@ @@@@@+", "$$ $#$@@ @@@.@@+", "$$ @@@@@ @@@@@@+", "$$#@@@@@ @.@@@@+", "$$ @@@@@ @@@.@@+", "$$ @@@@@ @@@@@@+", "$$ &&&@@ @.@@@@+", "$$ &&&@@ @@@.@@.", "$$$@@@@@ @@@@@..", "$$ @.@@...", "$$ @@@....", "$$ + @@...X.", "$$ @......", "$$+ ++++++", "$$ +++++", "$$$$$$$$$$$$$$$$", "++++++++++++$$++", "++++++++++++$$++", "++++++++++++$$$$", "++++++++++++$$$$", "++++++++++++$$+$", "+@++++++++++$$++", "++++++++++++++++", "................", "................", "X..X..X..X..X..X", "................", ".X..X..X..X..X..", "................", "++++++++++++++++", "++++++++++++++++", "$$$$$$$$$$$$$$$$", "$$++++++++++. $$", "$$++++++++++. $$", "$+++++++++++. $$", "++++++++++++.+$$", "$+++++++++++.+$$", "$$++++++++@+.+$$", "++++++++++++.+$$", ".............+$$", "............++$$", "..X..X..X..+++$$", "..........++++$$", "X..X..X..+++++$$", "........++++++$$", "++++++++++++++$$", "++++++++++++++$$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "$$ ## --------", "$$### @-X.X.X.X", "$$## @@-.......", "$$ @@@-.......", "$$ @@@@-.......", "$$ @.@@@-.......", "$$ @@@@@-.......", "$$ @.@@@-......@", "$$ @@@@@-.....@.", "$$ @.@@@-.......", "$$ .@@@@-.......", "$$ @.@@@-.......", "$$ @@@@@--------", "$$ @.@@@........", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "--- $ ", ".X- $ ", "..-.............", ".X-.............", "..-.............", ".X-.............", "..-.............", ".X-.............", "..-.............", ".X-.............", "..-@@@@@@@@@@@@@", ".X-@.@.@.@.@.@.@", "---.@.@.@.@.@.@X", "..++++++++++++..", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", " $$", " @@@@@@@@@@@ $$", ".@.........@ $$", ".@++++++++.@ $$", ".@++++++++.@ $$", ".@++++++++.@ $$", ".@+++ ++++.@ $$", ".@++ +++++.@ $$", ".@++++++++.@ $$", ".@++++++++.@ $$", "@@++++++++.@ $$", ".@++++++++.@ $$", ".@++++++++.@ $$", ".@++++++++.@ $$", "$$ @@@@.X.X.X.X.", "$$ @.@..........", "$$ @@@@.........", "$$ @.@..........", "$$ @@@@.........", "$$ @.@..........", "$$ @@@@.........", "$$ @.@..........", "$$ @@@@.........", "$$ @.@..........", "$$ @@@@.........", "$$ @.@...-------", "$$ @@@@.@-XXXXXX", "$$ @.@@@@-......", "$$ @@@@.@-......", "$$ @.@.@@-......", "X+++++++++++++X.", ".+++++++++++++..", ".++ X.", ".++ $ $ ..", ".++ $ X.", ".++ ..", ".++ $ X.", ".++ $ ..", ".++ .@", ".++ $ @@", ".++ @@@", "----------------", "XXXXXXXXXXXXXXXX", "................", ".......$$$$$....", ".......$$..$$...", ".@++++++++.@ $$", ".@++++++++.@ $$$", ".@++++++++.@ $$", ".@++++++++.@ $$", ".@++++++++.@ $$", ".@++++++++.@ $$", ".@++++++++.@ $$", "@@@@@@@@@@@@@ $$", "@XXXXXXXXXXX@ $$", "@......+...X@ $$", "@..+++..+..X@+$$", "--.+..@@@@.X@+$$", "X-..+..@.+.X@+$$", "X-..+.@.+..X@+$$", "X-...++....X@+$$", "X-....+.+..X@+$$", "$$ @@@@@.-......", "$$ @.@.@@-......", "$$ @@@@@.-.... .", "$$ @.@.@@-......", "$$ @@@@@.-.... .", "$$ @@@.@@-......", "$$ @.@@@@-......", "$$ .@@.@@-------", "$$ @.@@@..+.....", "$$ @@@@.........", "$$ @.@......$...", "$$ @@...........", "$$ @....X......X", "$$ ++++++++++++", "$$ +++++++++++", "$$$$$$$$$$$$$$$$", ".......$$..$$...", ".......$$$$$....", " . ....$$$$.....", ".......$$.$$....", " . ....$$..$$...", "................", "................", "----------------", "................", "................", "$...$...$...$...", "................", "......X.....X...", "++++++++++++++++", "++++++++++++++++", "$$$$$$$$$$$$$$$$", "X-++++.++++X@+$$", "X-++..++.++X@+$$", "X-+.++..+.+X@+$$", "X-+.+.+@+++X@+$$", "X-+++++@+.+X@+$$", "X-++++@+..+X@+$$", "X-++.+..+++X@+$$", "--+++++++++X@+$$", ".@@@@@@@@@@@@+$$", "............++$$", "...........+++$$", "..........++++$$", "...X.....+++++$$", "++++++++++++++$$", "++++++++++++++$$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "$ OOOOOOO", "$ OO@@@@@@", "$ O.O@@@@@@", "$ OOOO@@@@@@", "$ O.O.O@@@.@@", "$ OOOOOO@@@@@@", "$ O.O.O.O@@@@@@", "$ OOOOOOO@@@.@@", "$ O.O.O.O@@@@@@", "$ OOOOOOO@@@@@@", "$ O.O.O.O@@@@@@", "$ OOOOOOO@@@@@@", "$ O.O.O.O@@@@@@", "$ OOOOOOO@@@@@@", "$ O.O.OOOXOXOXO", "$$$$$$$$$$$$$$$$", "OOOO &XXXX", "@@@X &&@@@@", "@@@O &.&@@@@", "@@@X.....&&&@@@@", "@@@O.....&.&@@@@", "@@@X.....&&&@@@@", "@@@O.....&.&@@@@", "@@@X.....&&&@@@@", "@@@O.....&&XXXXX", "@@@X.....&XXXXXX", "@@@OXXXXXXXXXXXX", "@@@XXXXXXXXXXXXX", "@@@OXXXXXXXXXXXX", "@@@X+++++++++++X", "XOXO++++++++++XX", "$$$$$$$$$$$$$$$$", "XXXXXXXXXXXXXX $", "@@@@@@@@@@@@@X $", "@@@@@@@@.@@@@X $", "@@@@@@@@..@@@X $", "@@@@@@@@@@@@@X $", "@@@@@@@@@@@@@X $", "@@@@@@@@@@@@@X $", "@@@@@@@@@@@@@X $", "XXXX@@@@@@@@XX $", "XXXX@@@@@@@@XX $", "XXXX@@@@@@@@XX $", "XXXX@@@@@@@@XX $", "XXXXXXXXXXXXXXXX", "@@@@@@@@@@@@@@@X", "@@@@@@@@@@@@@@@X", "$ OOOOOOXOXOXOX", "$ O.O.OXOXOXO&&", "$ OOOO......&&X", "$ O.O......&&&@", "$ OOOO....&&&&@", "$ O.O....&&.&&@", "$ OOOO..&&&&&&@", "$ O.OO.&&.&&&&@", "$ OOOO&&&&&.&&@", "$ OOO&&.&&&&&&@", "$ OO&&&&&.&&&&@", "$ O&&.&&&&&.&&@", "$ &&&&&.&&&&&&@", "$ &.&&&&&.&&&&@", "$ &&&.&&&&&.&&@", "$ &&&&&.&&&&&&@", "OXO++++++++++XXX", "&&&&&&&&&&&&&&&&", "XXXXXXXXXXXXXXXX", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@.@@@@@@@@@@@@@", "@.@@@@@@@$$$$$@@", "@@@@@@@@@$$@@$$@", "@@@@@@@@@$$@@$$@", "@@@@@@@@@$$$$$@@", "@@@@@@@@@$$$$@@@", "@@@@@@@@@$$@$$@@", "@@.....@@$$@@$$@", "@.@@@.@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@X", "&&&&&&&&&&@@@@@X", "XXXXXXXXX.@@@@@X", "@@@@@@@@X.@@@@@X", "@@@@@@@@X.@@@@@X", "@@-.@@@@X.@@@@@X", "@@-.@@@@X.@@@@@X", "@@@@@@@@X.@@@@@X", "@@@@@@@@X.@@@@@X", "@@@@@@@@X.@@@@@X", "@@-.@@@@X.@@@@@X", "@@-.@@@@X.@@@@@X", "@@@@@@@@X.@@@@@X", "@@@@@@@@X.@@@@@X", "@@@@@@@@X.@@@@@X", "@@@@@@@@X.@@@@@X", "$ &.&&&&&.&&&&@", "$ &&&.&&&&&.&&.", "$ &&&&&.&&&&&..", "$ &.&&&&&.&&..X", "$ &&&.&&&&&....", "$ &&&&&.&&..X@.", "$ &.&&&&&......", "$ &&&.&&..X@..X", "$ &&&&&........", "$ &.&&..X@..X@.", "$ &&&..........", "$ &&..X@..X@..X", "$ &............", "$ ++++++++++++", "$ +++++++++++", "$$$$$$$$$$$$$$$$", "@@@@@@@@@@@@@@@@", "................", "................", "@..X@..X@..X@..X", "................", ".X@..X@..X@..X@.", "................", "@..X@..X@..X@..X", "................", ".X@..X@..X@..X@.", "................", "@..X@..X@..X@..X", "................", "++++++++++++++++", "++++++++++++++++", "$$$$$$$$$$$$$$$$", "@@@@@@@@X.@@@@@X", "..........@@@@@X", ".........@@@@@@X", "@..X@...@@@@@@@X", ".......@@@@@@@@X", ".X@.............", "...............%", "@..X@..X@..X@.$%", ".............+$%", ".X@..X@..X@.++$%", "...........+++$%", "@..X@..X@.++++$%", ".........+++++$%", "++++++++++++++$%", "++++++++++++++$%", "$$$$$$$$$$$$$$$%", "################", "# ", "# # ", "# ", "# &&&&&&&&&&", "# &&.........", "# &&&@@@@@@@@@", "# &&&&@@@@@@@@@", "# &&&&@@@@@@@@@", "# &&&&@@.@@@@@@", "# &&&&@@@@@@@@@", "# &&&&@@@@@@@@@", "# &&&&@@@@@@@@@", "# &&&&@@@@@@@@@", "# &&&&@@@@@@@@@", "# &&&&@@@@@@@@@", "################", " # ", " # ", " oooo", "&&&&&&& oo...", "......& ooo@@@", "@@@@@.& oooo@@@", "@@@@@.& o.oo@@@", "@@@@@.& oooo@@@", "@@@@@.& oooo@@@", "@@@@@.& o.oo@@@", "@@@@@.& ooooOOO", "@@@@@.&+ oooOOOO", "@@@@@.&+ ooOOOOo", "@@@@@.&+ oOOOOoo", "&&&&&&&+ ++++oX", "################", " #", " #", "oooooooooooo #", "...........o #", "@@@@@@@@@@.o #", "@@@@@@@@.@.o #", "@@@@@@@@@@.o #", "@@@@@@@@@@.o #", "@@@@@@@@@@.o #", "@@@@@@@@@@.o+ #", "Oo@@@@@@@@.o+ #", "oo@@@@@@@@.o+ #", "oo@@@@@@@@.o+ #", "oo@@@@@@@@.o+ #", "oo@@@@@@@@.o+ #", "# &&&&@@@@@@@@X", "# &&&&@@@@@@@@X", "# &&&&@@@@@@@@X", "# &&&&@@@@@@@@X", "# &&&&@@@.@@@@X", "# &&&&@@@@@@@@X", "# &&&&@$$$$$@@X", "# &&&&@$$@@$$@X", "# &&&&@$$@@$$@X", "# &&&&@$$$$$@@X", "# &&&&@$$$$@@@X", "# &&&&@$$@$$@@X", "# &&&&@$$@@$$@X", "# &&&&@@@@@@@@X", "# &&&&@@@@@@@@X", "# &&&&@@@@@@@@X", "&&&&&&++ +++oo", "&&&&&+++ oo", "&&&&++++ oo", "&+++++++ Xo", "&+++++++ ----Xo", "&+ ----oo", "&+ -- oo", "&+ # -- oX", "&+ # # -- oo", "&+ -- oX", "&+ # # -- oo", "&+ -- oo", "&+ # -- oO", "&+ -- +", "&+ -- ", "&+## -----------", "oo@@@@@@@@.o+ #", "oo@@@@@@@@.o+ #", "oo@@@@@@@@.o+ #", "oo@@@@@@@@.o+ #", "oo@@@@@@@@.o+ #", "oo@@@@@@@@.o+ #", "oo@@@@@@.@.o+ #", "oo@@@@@@@@.o+ #", "oo@@@@@@@@.o+ #", "ooOOOOOOOOOO+ #", "oOOOOOOOOOO++ #", "OOOOOOOOOO+++ #", "OOOOOOOOO++++ #", "+++++++++++++ #", "+++++++++++++ #", "------------ #", "# &&&&@@@@@@@@X", "# &&&&@@@@@@@@X", "# &&&&@@@@@@@@X", "# &&&&@@@@@@@@X", "# &&&&@@@@@@@@X", "# &&&&@@@@@@@@X", "# &&&&@@@@@@@@X", "# &&&&@@@@@..@X", "# &&&&@@@@@@@@X", "# &&&&&&&&&&&&&", "# &&&&&&&&&&&&&", "# &&&&&&&&&&&&+", "# &&&&&&&&&&&++", "# ++++++++++++", "# +++++++++++", "################", "&+ --@------@-", "&@------@----@--", "&@-------@--@--@", "&+ -----------", "&+ # -----------", "&+ -----------", "&+ # -----------", "&+ ##-----------", "&+ -----@----@", "&+ ----@------", "++ ---@-------", "++ -----------", "++ # ----- ", "++ ----- ", "++ ----- ", "##########-----#", "-@--@--@--@- #", "@--@--@--@------", "--@--@--@-------", "----------------", "----------------", "----------------", "------------ #", "------------ #", "--@--@--@--- #", "@--@--@--@-- #", "-@--@--@--@- #", "------------ #", " # #", " # # #", " # #", "################", "################", "# ", "# ", "# # ", "# oooooooooo", "# oo.........", "# ooo@@@@@@@@@", "# oooo@@@.@@@@@", "# oooo@@@@@@@@@", "# oooo@@@.@@@@@", "# oooo@@@@@@@@@", "# o=oo@@@@@@@@@", "# oooo@@@@@@@@.", "# oooo@@@@@@@@.", "# oooo@@@@@@@@.", "# oooo@@@@@@@@.", "##########@@@###", " @@@ ", " @@@ ", " @@@ ", "ooooooooooo@@ ", "..........o@@ o", "@@@@@@@@@.o@@ oo", "@@@@@@@@@.o@@ oo", "@@@@@@@@@.o@@ oo", "@@@@@@@@@.o@@ oo", "@@@@@@@@@.o.@ oo", "oOOOOOOOOOO.@ oo", "oOOOOOOOOO..@ oo", "oOOOOOOOO+..@ oo", "oOOOOOOO++..@ oo", "o+++++++++..@ oo", "################", " #", " #", " ooooooooooo #", "oo@@@@@@@@@O #", "oo@@@@@@@@@O ##", "oo@@@@@@@@@O #", "oo@@@@@@@@@O #", "oo@@@@@@@@@O #", "oo@@@@@@@@@O #", "oo@@@@@@@@@O #", "oo@@@@@@@@@O #", "oo@@@@@@@@@O #", "oo@@@@@@@@@O #", "oo@@@@@@@@@O #", "oo@@@@@@@@@O #", "# oooo@@@@@@@@.", "# oooo@@@@@@@@.", "# oooo@@@@@@@@.", "# o=oo@@@@@@@@.", "# oooo@@@@@@@@.", "# oooo@$$$$$@@.", "# oooo@$$@@$$@.", "# oooo@$$@@$$@.", "# oooo@$$$$$@@.", "# o=oo@$$$$@@@.", "# oooo@$$@$$@@.", "# oooo@$$@@$$@.", "# oooo@@@@@@@@.", "# oooo@@@@@@@@.", "# oooo@@@@@@@@.", "# oooo@@@@@@@@.", "o...........@#oo", "o...........@ oo", "o.@@@@@@@@@@@ oo", "o.@@@@@@@@@@@ oo", "o.@-@@@-@@@@@ oo", "o.@@@@@@@@@@@ oo", "o.@@@@@@@@@@@ oo", "o.@-@@@-@@@@@ oo", "o.@@@@@@@@@@@ oO", "o.@@@@@@@@ # Oo", "o.@-@@@-@@ ooo", "o.@@@@@@@@ oooo", "o.@@@@@@@@ oooo", "o+ # # # oooo", "oooooooooooooooo", "................", "oo@@@@@@@@@O #", "oo@@@@@@@@@O #", "oo@@@@@@@@@O #", "oo@@@@@@@@@O #", "oo@@@@@@@@@O #", "oo@@@@@@@@@O #", "oO@@@@@@@@@O #", "OooooooooooOO #", "o...........O #", "o@@@@@@@@@@.O #", "o@@@@@@@@@@.O #", "o@@@@@@@@@@.O #", "o@@@@@@@@@@.O #", "o@@@@@@@@@@.O #", "o@@@@@@@@@@.O #", "o@@@@@@@@@@.O #", "# oooo@@@@@@@@@", "# o=oo@@@@@@@@@", "# oooo@@@@@@@@@", "# oooo@@@@@@@@@", "# oooo@@@@@@@@@", "# oooo@@@@@@@@@", "# oooo@@@@@@@@@", "# oooo@@@@@@@@@", "# o=oo@@@@@@@@@", "# ooooOOOOOOOOO", "# oooOOOOOOOOOO", "# ooOO&OO&OO&OO", "# oOOOOOOOOOOOO", "# ++++++++++++", "# +++++++++++", "######$$$$$$$$$$", "@@@@@@@@@@@@@@@.", "@@@@@@@@@@@@@@@.", "@@@@@@@@@@@@@@@.", "@@@@@@@@@@@@@@@.", "@@@@@@@@@@@@@@@.", "@@@@@@@+@+@@@@@.", "@@@@@@@@@@@@@@@.", "@@@@@@@@@@@@@@@.", "@@@@@@@@@@@@@@@O", "OOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOO", "O&OO&OOO&OOOOOOO", "OOOOOOOOOOOOOOOO", "++++++++++++++++", "++++++++++++++++", "$$$$$$$$$$$$$$$$", "o@@@@@@@@@@.O+ #", "o@@@@@@@@@@.O+ #", "o@@+ +@@@@@.O+ #", "o@@ @@@@@.O+ #", "o@@+++@@@@@.O+ #", "o@@@@@@@@@@.O+ #", "o@@@@@@@@@@.O+ #", "o@@@@@@@@@@.O+ #", "oOOOOOOOOOOOO+ #", "OOO&OO&OOOOO++ #", "OO&OO&OOOOO+++ #", "O&OO&OOOOO++++ #", "OOOOOOOOO+++++ #", "++++++++++++++ #", "++++++++++++++ #", "$$$$$$$$$$$$$$##", "################", "# $ ", "# $$$ ", "# $$ +$ ", "# $$ + ", "# +$ ", "# + #######", "# ##......", "# ###@@@@@@", "# ##.#@@@@@@", "# #####@@@@@@", "# ##.#.#@@@@@@", "# #######@@@.@@", "# #.#X#.#@@.@@@", "# #######@@@@@@", "# #.#.#.#@@@@@@", "################", " ", " ", " $ ", " $$ ", " $ #$$$$$", "## + ##@@@@@", ".# ###@@@@@", ".# ####@@@@@", ".# #####@@@@@", ".#$$$$$$$$$@@@@@", ".#@@@@@@@@@@@@@@", ".#..@@@@@@@@@@@@", ".#..@@@@@@@@@.@@", ".#..@@@@@@@@@..@", ".#..@@@@@@@@@@@@", "################", " #", " #", " #", " #", "$$$$$$$$$$$$$ #", "@@@@@@@@@@@@$ #", "@@@@@@@@@.@@$ #", "@@@@@@@@@@@@$ #", "@@$$$$$@@@@@$ #", "@@$$@@$$@@@@$ #", "@@$$@@$$@@@@$ #", "@@$$$$$@@@@@$ #", "@@$$$$@@@@@@$ #", "@@$$@$$@@@@@$+ #", "@@$$@@$$@@@@$+ #", "# #######@@@@@@", "# #.#X#.#@@@@@@", "# #######@@@@@@", "# #.#.#X#@@@@@@", "# #######@@@@@@", "# #X#.#.#@@@@@@", "# #######@@@@@@", "# #.#X#.#@@@@@@", "# #######@@@@@@", "# #.#.#X#@@@@@@", "# #######@@@@@@", "# #.#.#.#@@@@@@", "# #######@@@@@@", "# #X#.#.#@@@@@@", "# #######@@@@@@", "# #X#X#.#@@@@@@", ".#..@@@@@@@@@@@@", ".#..@@@@@@@@@@@@", ".#..@@@@@@@@@@@@", ".#..@@@@@@@@@@@@", ".#$$$$$$$$$$$$$$", ".#$+$+$+$+$+$+$+", ".#$$$$$$$$$$$$$$", ".#$+$+$+$+$+$+$+", ".#$$$$$$$$$$$$$$", ".#++++++++++++++", ".#++++++++++++++", ".#++++++++++++++", ".#++ ", ".##############$", "...............$", "@@@@@@@@@@@@@@.$", "@@@@@@@@@@@@$+ #", "@@@@@@@@@.@@$+ #", "@@@@@@@@@@@@$+ #", "@@@@@@@@@@@@$+ #", "$$$$$$$$$$$$$+ #", "$+$+$+$+$+$$++ #", "$$$$$$$$$$$+++ #", "$+$+$+$+$$++++ #", "$$$$$$$$$+++++ #", "+++..+++++++++ #", "++...........+ #", "++...........+ #", " @@@@@@@@@@@ #", " &&@-@@@-@@@ #", " &&@@@@@@@@@ #", " @@@@@@@@@@@ #", "# #######@@@@@@", "# #.#.#.#@@@@@@", "# #######@@@.@@", "# #X###X#@@.@@@", "# #######@@@@@@", "# #.#####$$$$$$", "# ######$$$$$$$", "# #.###$$$$$$$$", "# ####$$$$$$$$$", "# #X#$$$$$$$$$$", "# ##$$+$+$+$+$+", "# #$$$$$$$$$$$$", "# ++++++++++++", "# +++++++++++", "# ++++++++++", "#######$$$$$$$$$", "@@@@@@@@@@@@@@.$", "@@@@@@@@@@@@@@.$", "@@@@@@@@@@@@@@.$", "@@@@@@@@@@@@@@.$", "@@@@@@@@@@@@@@.$", "$$$$$$$$$$$$$$$$", "$$$$$+$+$+$+$+$ ", "$$$$$$$$$$$$$$+ ", "$$$+$+$+$+$+$+++", "$$$$$$$$$$$$++++", "$+$+$+$+$+$+++++", "$$$$$$$$$$++++++", "++++++++++++++++", "++++++++++++++++", "++++++++++++++++", "$$$$$$$$$$$$$$$$", " @@@@@@@@@@@@@@", " @@@-@@@-@@@@@@", " @@@@@@@@@@@@@@", " @@@@@@@@@@@@@@", " @@@@@@@@@@@ #", " @@@-@@@-@OO #", " @@@@@@@@@OO #", " @@@@@@@@@@@ #", " OO@@@@@@@@@ #", "+ OO@-@@@-@@@ #", "+ @@@@@@@@@@@ #", "+ @@@@@@@@@@@ #", "+ @@@@ #", "+ @@@@ #", "+ @@@@ #", "$#####@@@@######", " ooo", "############oo..", "# ooo@@", "# # oooo@&", "# # oo.oo@@", "# # oo.ooo@@", "# oooo.oo@@", "# # oo.o.ooo@@", "# oo.ooo.oo@@", "# oooo.o.ooo@@", "# oo.o.ooo.oo@@", "# o.ooo.o.ooo@@", "# oo.o.ooo.oo@@", "# o.ooo.o.ooo@@", "# oo.o.ooo.oo@@", "# o.ooo.o.ooo@@", "oooooooooooooo ", ".............O##", "@@@@@@@@@@@@.O&&", "@@@@@@@@@@@@.O@@", "@@@@@@@@@@@@.O@@", "@@@@@@@@@@@@.O@@", "@@@@@@@@@@@@.O@@", "@@@@@@@OOOOOOO@@", "@@@@@@.OOOOOO@@@", "@@@@@@.OOOOO&&&&", "@@@@@@.OOOO&&&&&", "@@@@@@.OOO&&&&&&", "@@@@@@.OO&&&&&&&", "@@@@@@.O&&&&&&&&", "@@@@@@.O&&&&&&&&", "@@@@@@.O++++++&&", " %", "###############%", "&&&&&&&&&&&&& #%", "@@@@@@@@@@@@& #%", "@@@@@@@@@@@@& #%", "@@@@@@@@@@@@& #%", "@@@@@@@@@@@@& #%", "@@@@@@@@@@@@& #%", "@@@@@@@@@@@@& #%", "&&&&@@@@@@@@& #%", "&&&&@@@@@@@@& #%", "&&&&@@@@@@@@& #%", "&&&&@@@@@@@@& #%", "&&&&@@@@@@@@& #%", "&oooooooooooooo%", "oo............O%", "# oo.o.ooo.oo@@", "# o.ooo.o.ooo@@", "# oo.o.ooo.oo@@", "# o.ooo.o.ooo@@", "# oo.o.ooo.oo@@", "# o.ooo.o.ooo@@", "# oo.o.oooooo@@", "# o.ooo.oooooOO", "# oo.o.oooooOOO", "# o.oooooooOOOO", "# oo.oooooOOOOO", "# o.ooo.oOOOOOO", "# oooo.oo@@@@@@", "# ooooo.o@@@@@@", "# oo.o.oo@@@@@@", "# o.ooo.o@@@@@@", "@@@@@@.O++++++&o", "@@@@@@.O++++++oo", "@@@@@@.O++ ooo", "@@@@@@.O++ oooo", "@@@@@@.O++ oooo", "@@@@@@.O++# oooo", "@@@@@@.O++ oooo", "OOOOOOOO++ #oooo", "OOOOOOO+++ oooo", "OOOOOO++++ #oooo", "OOOOO+++++ oooo", "OOOO++++++ oooo", "@@@@oooooooooooo", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "oo@@@@@@@@@@@.O%", "oo@@@@@@@@@@@.O%", "oo@@@@@@@@@@@.O%", "oo@@@$$$$$@@@.O%", "oo@@@$$@@$$@@.O%", "oo@@@$$@@$$@@.O%", "oo@@@$$$$$@@@.O%", "oo@@@$$$$@@@@.O%", "oo@@@$$@$$@@@.O%", "oo@@@$$@@$$@@.O%", "oo@@@@@@@@@@@.O%", "oo@@@@@@@@@@@.O%", "oo@@@-...@@@@.O%", "@@@@@-...@@@@.O%", "@@@@@-...@@@@.O%", "@@@@@.@@.@@@@.O%", "# oo.o.oo@@@@@@", "# o.ooo.o@@@@@@", "# oo.o.oo@@@@@@", "# o.ooo.o@@@@@@", "# oo.o.oo@.@.@.", "# o.ooooo@@@@@@", "# oo.oooOOOOOOO", "# o.oooOOOOOOOO", "# ooooOXOXOXOXO", "# oooOOOOOOOOOO", "# ooOXOXOXOXOXO", "# oOOOOOOOOOOOO", "# OXOXOXOXOXOXO", "# ++++++++++++", "# # +++++++++++", "######$$$$$$$$$$", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "OOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOO", "XOXOXOXOXOXOXOXO", "OOOOOOOOOOOOOOOO", "XOXOXOXOXOXOXOXO", "OOOOOOOOOOOOOOOO", "XOXOXOXOXOXOXOXO", "++++++++++++++++", "++++++++++++++++", "$$$$$$$$$$$$$$$$", "@@@@@@@@@@@@@.O%", "@@@@@@@@@@@@@.O%", "@@@@@@@@@@@@@.O%", "@@@@@@@@@@@@@.O%", "@@@@@@@@@@@@@.O%", "@@@@@@@@@@@@@.O%", "OOOOOOOOOOOOOOO%", "OOOOOOOOOOOOOO$%", "XOXOXOXOXOXOO+$%", "OOOOOOOOOOOO++$%", "XOXOXOXOXOO+++$%", "OOOOOOOOOO++++$%", "XOXOXOXOO+++++$%", "++++++++++++++$%", "++++++++++++++$%", "$$$$$$$$$$$$$$$%", "################", "# ", "# ", "# ", "# oooooooooo", "# ooXXXXXXXXX", "# ooo........X", "# oooo........X", "# oooo........X", "# oooo........X", "# oooo........X", "# oooo........X", "# oooo........X", "# ooooOOOOOOOOO", "# oooOOOOOOOOOO", "# ooo@@@@@@@@@O", "################", " ", " ", " ", "o ", "O #", "O ##", "O ##", "O #$", "O@@@@@@@@@@@@ $#", "O@@@OO@XX@@@@ ##", "O@@@OO@XX@@@@@##", "O@@@OO@XX@@@@@$#", "O@@@@@@@@@@@@@##", "+@@@@@@@@@@@@ ##", "+@XX@@@@@@@@@ $#", "################", " #", " #", " ########### #", "##XXXXXXXXX$ #", "##........X$ #", "##........X$ #", "##........X$ #", "##........X$ #", "$#........X$ #", "##........X$+ #", "##........X$+ #", "##........X$+ #", "$#........X$+ #", "##........X$+ #", "##........X$+ #", "# ooo@@@@@@@@@O", "# ooo@@$$$$$@@O", "# ooo@@$$@@$$@O", "# ooo@@$$@@$$@O", "# ooo@@$$$$$@@O", "# ooo@@$$$$@@@O", "# ooo@@$$@$$@@O", "# ooo@@$$@@$$@O", "# ooo@@@@@@@@@O", "# ooo@@@@@@@@@O", "# ooo@@@@@@@@@O", "# ooo@@@@@@@@@O", "# oooOOOOOOOOOO", "# ooOOOOOOOOOO+", "# oOOOOOOOOOO++", "# ++++++++++++", "+@XX@@@@@$$$@ ##", "+@@@@@@@@$$$@ ##", "+&&&@@@@@@@@@ $#", "+&&&@@@@@@@@@ ##", "+@@@@@@@@@@@@@##", ".@@@@@@@@@@@@@$#", ".@@@@@@@@@@@@@##", ".@@@@@@@@@@@@ ##", "+ @@@@@ $#", "+ @@@@@ ##", "+ ### @@@@@ ##", "+ ####$@@@@@ ##", "+ ####$@@@@@ #$", "+ ###$$#@@@@ +", "+ #$$$#@@@@@ ", "+ #$$$#@@@@@ ", "$#........X$+ #", "##........X$+ #", "##........X$+ #", "$#........X$+ #", "##........X$+ #", "##........X$+ #", "$#........X$+ #", "##........X$+ #", "##........X$+ #", "##$$$$$$$$$$+ #", "#$$$$$$$$$$++ #", "$$$$$$$$$$+++ #", "$$$$$$$$$++++ #", "+++++++++++++ #", "+++++++++++++ #", " ++++++++++++ #", "# +++++++++++", "# ", "# ", "# ", "# #### $ ", "# #####$$ ", "# $$$## $ ", "# #$##$$$$ #", "# #$$#$$$$ ", "# #$$$$$+++ ", "# ##$$$$+++ %%=%", "# +++++ %==%=", "# ++++ %%=%=%", "# X X ", "# + +", "################", "+##$$# @@@@@ ", "$#$$+ @@@@@ ", "$$$+++ @@@@@ ", "++++++ @@@@@ ", " ++++ @@@@@ ", " # @@@@@ ", " ####@@@@ ", "## ####$$#@@ ", "####$$#$$@@@ ", " ##$#$$$$@@@ ", "%%#$#$##$.@@ ", "% ##$$$$$.@@ ", " #$$$#...@@ ", " +$$$..@@@ ", " ++++.@@@@ ", "################", " #", " #", " #", " #", " $## #", " #######$ #", " #$##$$##$ #", " #$$##$$##$ #", " ###$$$$##$ #", " ###$#$$##$+ #", " $$$$####$++ #", " #$#$$$$$++ #", " #$$###+++ #", " ##+#++ #", " +#++ #", "################", "$$$$$$$$$$$$$$$$", "$###############", "$###############", "$######$########", "$###$###########", "$#$#####O&O&O&O&", "$######O&XXXXXXX", "$#####O&O......X", "$####O&O&......X", "$####&O&O......X", "$###$O&O&......X", "$##$#&O&O......X", "$####O&O&......X", "$####&O&O......X", "$####O&O&......X", "$####&O&O......X", "$$$$$$$$$$$$$$$$", "################", "################", "################", "oooooooooooooooo", "O...............", "&@@@@@@@@@@@@@@@", "O@@@@@@@@@@@...@", "&@@@@@@@@@@@@@@@", "O@@@@@.@@@@@@@@@", "&@@@@@@@@@@@@@@@", "OOOOOOOOOOOOOOOO", "&OOO.O.OOO.OO.OO", "OOOOOOOOOOOOOOOO", "&O.O.OOO.OO.OOOo", "OOOOOOO.OOOOOOoo", "$$$$$$$$$$$$$$$$", "###############$", "###############$", "###############$", "ooooooooooooo##$", "............o##$", "@@@@@@@@@@@.o##$", "@@@@@@@@@@@.o##$", "@@@@@@@@@@@.o##$", "@@@@$$$$$@@.o##$", "@@@@$$@@$$@.o##$", "OO@@$$@@$$@.o##$", "Oo@@$$$$$@@.o##$", "oo@@$$$$@@@.o$#$", "oo@@$$@$$@@.o$#$", "+o@@$$@@$$@.o$#$", "$####O&O&......X", "$####&O&O......X", "$$###O&O&......X", "$####&O&O......X", "$#$##O&O&......X", "$####&O&O......X", "$####O&O&......X", "$####&O&O......X", "$##$#O&O&......X", "$####&O&O......X", "$#$##O&O&......X", "$####&O&O......X", "$####O&O&......X", "$####&O&O......X", "$####O&O&......X", "$####&O&O......X", "&$$$$$$.$$$$$oo+", "O$$$$$$.$$$$$o+o", "&$$$$$$.$$$$$oo+", "O######@#####o+o", "&######@#####Xo+", "O@@@@@@@@@@@@o+o", "&######@#####oo+", "O######@#####o+o", "&######@#####ooo", "O######@#####ooO", "&######@#####oOO", "O######@######$$", "&######@#######$", "O######@@@@@@@##", "&############@##", "O&O&O&O&O&O&O&&#", "oo@@@@@@@@@.o$#$", "+o@@@@@@@@@.o$#$", "oo@@@@@.@@@.o$#$", "+o@@@@@@@@@.o$#$", "oo@@@@@@@@@.o$#$", "+o@@@@@@@@@.o$#$", "ooOOOOOOOOOOO$#$", "oOOOOOOOOOOO$$#$", "OOOOOOOOOOO$$$#$", "OOOOOOOOOO$$$$#$", "OOOOOOOOO$$$$$#$", "$$$$$$...$$$$$#$", "$$$$$$...$$$$$#$", "$............$#$", "#@@@@@@@@@@@@##$", "#@@X@@@@@@X@@@@@", "$####O&O&......X", "$####&O&O.......", "$####O&O&.......", "$#$##&O&O.......", "$$$##O&O&.......", "$####&O&O.......", "$####O&O&.......", "$####&O&O&&&&&&&", "$#$##O&O&&&&&&&&", "$####&O&&&&&&&&&", "$$###O&&&&&&&&&&", "$#####$$$$$$$$$$", "$#$####$$$$$$$$$", "$###############", "$###############", "$$$$$$$$$$$$$$$$", "XXXXXXXXXXXXXX&#", ".............X&@", ".............X&@", ".............X&@", ".............X&@", ".............X&$", ".............X&$", "&&&&&&&&&&&&&&&$", "&&&&&&&&&&&&&&$$", "&&&&&&&&&&&&&$$$", "&&&&&&&&&&&&$$$$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "################", "################", "$$$$$$$$$$$$$$$$", "#@@@X@@@@X@@@@@@", "@@@@@X@@X@@@@@@@", "@@@X@@@@@@X@@@@@", "@@@@X@@@@X@@@@@@", "@@@@@X@@X@@@@##$", "#@@X@@@@@@X@@##$", "#@@@X@@@@X@@@##$", "#@@@@X@@X@@@@##$", "#@@@@@@@@@@@@##$", "#@@@@@@@@@@@@##$", "#@@@@@@@@@@@@##$", "#@@@@@@@@@@@@##$", "######@@@@@####$", "######@@@@@####$", "######@@@@@####$", "$$$$$$@@@@@$$$$$", "################", "# ", "# ", "# # ", "# ========", "# ==.......", "# =@=@@@@@@@", "# =@==@@@@@@@", "# =@=@=@@@@@@@", "# @=@==@@@@@@@", "# =@=@=@@@@@@@", "# @=@==@@@@@@@", "# =@=@========", "# @=@=........", "# =@=@........", "# @=@=........", "################", " ", " # ", " # ", "====== ", ".....= ==", "@@@@.= ==.", "@@@@.= =@=.", "@@@@.= =@==.", "@@@@.= @=@=.", "@@@@.=@@@@@=@==.", "@@@@.=+@@@@@=@=.", "======+@@@@=@==.", "=.=.=++ @=@=.", ".=.=+++ =@==.", "=.=++++ @=@=.", "################", " #", " ## #", " #", " -------@ #", "===o-@@@@@@@ #", "X.oo-@@@@@@@ #", "..oo-@@@@@@@ #", "..oo-@@@@@@@ #", "..oo-@@@@@@@ #", "..oo-@@@@@@@ #", "..oo-@@@@@@@ #", "..oo@@@@@@@@ #", "..ooOOOOOOO #", "..oOOOOOOO= #", ".........X= # #", "# =@=@........", "# @=@=........", "# =@=@........", "# @=@=........", "# # =@=@..======", "# @=@=.==.....", "# =@=@=@=@@@@@", "# @=@=@==@@@@@", "# =@=@=@=$$$$$", "# @=@=@==$$@@$", "# =@=@=@=$$@@$", "# @=@=@==$$$$$", "# =@=@=@=$$$$@", "# @=@=@==$$@$$", "# =@=@=@=$$@@$", "# @=@=@==@@@@@", "+++++++ =@==.", "+++++++ @=@=.", "+++++++ # =@==.", "++ @=@=.", "=== =@===", "..=@@@@@@@@@==.=", "@.= @@@ ==.=.", "@.= # @ =.=.=", "@.= # @ ++++", "$.= @ +++", "$.=+ @ ++", "@.=+ @ # ", "@.==============", "@...............", "$@@@@@@@@@@@@@@.", "@@@@@@@@@@@@@@@.", "..........=+ #", ".........X=+ #", "..........=+ #", ".........X=+ #", "===========+ #", ".=.=.=.=.=++ #", "=.=.=.=.=+++ #", ".=.=.=.=++++ #", "++++++++++++ #", "+++oooooooooo #", "++ooX.X.X.X.O #", " ooo.......XO #", "=ooo........O #", "=ooo.......XO #", "=ooo........O+ #", "=ooo.......XO+ #", "# =@=@=@=@@@@@", "# + @=@=@==@@@@@", "# =@=@=@=@@@@@", "# @=@=@==@@@@@", "# =@=@=@======", "# @=@=@==.=.=.", "# =@=@==.=.=.=", "# @=@==.=.=.=.", "# + =@==.=.=.=.=", "# @==.=.=.=.=.", "# ==.=.=.=.=.=", "# +++++++++++", "# # ++++++++++", "# +++++++++", "# + ++++++++", "#########$$$$$$$", "@@@@@@@@@@@@@@@.", "@@@@@@@@@@@@@@@.", "@@@@@@@@@@@@@@@.", "@@@@@@@@@@@@@@@.", "================", "=.=.=.=.=.=.=.=.", ".=.=.=.=.=.=.=..", "=.=.=.=.=.=.=...", ".=.=.=.=.=.=....", "=.=.=.=.=.=.+...", ".=.=.=.=.=.++...", "+++++++++++++...", "++++++++++++++++", "++++++++++++++++", "++++++++++++++++", "$$$$$$$$$$$$$$$$", "=ooo........O+ #", "=ooo.......XO+ #", "=ooo........O+ #", "=ooo.......XO+ #", "=oooOOOOOOOOO+ #", "@ooOOOOOOOOO++ #", ".oOOOOOOOOO+++ #", "............++ #", "..@.........++ #", "..@@@@@@@@@@ #", "..@@@@@@@@@@ #", "..@@@@@@@@@@ #", "++ @@@@@@@ #", "++ @@@@@@@ #", "++ @@@@@@@ #", "$$###@@@@@@@####", " %%%%%%", "#########-%.....", "# --%@@@@@", "# ---%@@@@@", "# ----%@@@OO", "# -@-@-%@@OOO", "# ------%@@OOO", "# -@-@-@-%@@@OO", "# -------%@@@@@", "# -@-@-@-%@@@@@", "# -------%@@@@@", "# -@-@-@-%@@@@@", "# -------%@@&@&", "# -@-@---%%%%%%", "# ------@@@@@@@", "# -@-@-@@@@@@@@", "%%%% ", "...%########%%%%", "@@.% -%...", "@@.% --%@@@", "@@.% ---%@@@", "O@.%....----%@@@", "O@.%....----%@@@", "@@.%....----%@@@", "@@.%....----%@@@", "@@.%....----%@@@", "@@.%....----%@@@", "@@.%....----%@@@", "@@.%....----%@@@", "%%%%....----%%%%", "@@@.....---@@@@@", "@@......--@@@@@@", " ", "%%%%%%%%%%%%%%%%", "...............%", "@@@@@@@@@@@@@@.%", "@@OO@@@@@@@@@@.%", "@@@@@@@@@@@@@@.%", "@@@@@@@@@@@@@@.%", "@@@@@@@@@@@%@@.%", "@@@%@@@@@@%@@@.%", "@@%@@@@@@%@@@@.%", "@%@@@@@@@@@@@@.%", "@@@@@@@@@@@@@@.%", "@@@@@@@@@@@@@@.%", "%%%%%%%%%%%%%%%%", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@$", "# ----@@@@@@@@@", "# -@-@.........", "# ----.........", "# -@-@........%", "# ----.......-%", "# -@-@..%...--%", "# ----.....---%", "# -@-@....-@-@%", "# ----...-----%", "# -@-@..-@-@-@%", "# ----.-------%", "# -@-@-@-@-@-@%", "# ------------%", "# -@-@-@-@-@-@%", "# ------------%", "# -@-@-@-@-@-@%", "@.......-@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "%%%%%%%%%%%%%%%%", "................", "----------------", "----------------", "-----$$$$$------", "-----$$--$$-----", "-----$$--$$-----", "-----$$$$$------", "-----$$$$-------", "-----$$-$$------", "-----$$--$$-----", "----------------", "----------------", "@@@@@@@@@@@@@@+$", "@-..........@++$", "--..........+++$", "%%%%........+++$", "...%........+++$", "--.%........+++$", "--.%........++ #", "--.%........++ #", "--.%........++ #", "--.%........++ #", "--.%........++ #", "--.%@@@@@@@@@@@#", "--.%..........@#", "--.%..........@#", "--.%..........@#", "--.%..........@#", "# ------------%", "# -@-@-@-@-@--@", "# -----------@@", "# -@-@-@-@--@@.", "# ---------@@@@", "# -@-@-@--@@.@.", "# -------@@@@@@", "# -@-@--@@.@.@.", "# -----@@@@@@@@", "# -@--@@.@.@.@.", "# ---@@@@@@@@@@", "# --@@.@.@.@.@.", "# -@@@@@@@@@@@@", "# ++++++++++++", "# +++++++++++", "######$$$$$$$$$$", "%%%%%%%%%%%%%%%%", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@.@.@.@.@.@.@.@.", "@@@@@@@@@@@@@@@@", "@.@.@.@.@.@.@.@.", "@@@@@@@@@@@@@@@@", "@.@.@.@.@.@.@.@.", "@@@@@@@@@@@@@@@@", "@.@.@.@.@.@.@.@.", "@@@@@@@@@@@@@@@@", "@.@.@.@.@.@.@.@.", "@@@@@@@@@@@@@@@@", "++++++++++++++++", "++++++++++++++++", "$$$$$$$$$$$$$$$$", "%%%%..........@#", "@@@...........@#", "@@............@#", "@.............@#", "..............@$", "..............@$", "@@@@@@@@@@@@@@@$", "@.@.@.@.@.@@@@+$", "@@@@@@@@@@@@@++$", "@.@.@.@.@.@@+++$", "@@@@@@@@@@@++++$", "@.@.@.@.@@+++++$", "@@@@@@@@@++++++$", "+++++++++++++++$", "+++++++++++++++$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "$###############", "$###############", "$#######&&&&&&&&", "$######&&.......", "$#####&&&@@@@@@@", "$#####&&&@@@@@@@", "$#####&&&@@@@@@@", "$#####&&&@@@@@@@", "$#####&&&@@@@@@@", "$#####&&&@@@@@@@", "$#####&&&&&&&&&&", "$#####&&&&&&&&&&", "$#####&&&&&&&&&&", "$######$$$$$$$$$", "$######@......$$", "$$$$$$$$$$$$$$$$", "################", "################", "&&##oooooooooooo", ".&#oo...........", ".&ooo@@@@@@@@@@@", ".&ooo@@X@@@@@@@@", ".&oOo@@@@@@@@@@@", ".&ooo@@@@@@@@@@@", ".&ooo@@X@@@@@@@@", ".&oOo@@@@@@@@@@@", "&&oooOOOOOOOOOOO", "&$ooOOOOOOOOOOOO", "$$oOOOOOOOOOOOOO", "$$#$$$$$$$$$$$$$", "@@@@.........$$$", "$$$$$$$$$$$$$$$$", "###############$", "###############$", "oooooooooo#####$", ".........O#####$", "@@@@@@@@.O#####$", "@@@@X@@@.O#####$", "@@@@@@@@.O#####$", "@@@@@@@@.O#####$", "@@@@X@@@.O$####$", "@@@@@@@@.O$####$", "OOOOOOOOOO$####$", "OOOOOOOOO$$####$", "OOOOOOOO$$$####$", "$$$..$$$$$$####$", "$$$..$$$$$$####$", "$######@@@@@.@##", "$######@@@@.@@@@", "$######@@@.@@@@@", "$######@@@@@@@##", "$######@@@@@.@##", "@@@@@@@@@@@.@@##", "@@@@@@@@@@.@@@##", "@@@@@@@@@@@@@@##", "@@@@@@@@@@@@.@##", "@@@@@@@@@@@.@@##", "@@@@@@@@@@.@@@##", "@@@@@@@@@@@@@@##", "$######@@@@@.@##", "$######@@@@.@@##", "$######@@@.@@@@@", "$######@@@@@@@@@", "@@@@@@%@@@@@@###", "@@@@--%--@@@@###", "@@@-OO%OO-@@@###", "#@-ooo%oOO-@@@@@", "#@-ooooooO-@$$$$", "#@-ooooooO-@$$@@", "#@-ooooooO-@$$@@", "#@-ooooooO-@$$$$", "#@-ooooooO-@$$$$", "#@-ooooooO-@$$@$", "#@-ooooooO-@$$@@", "#@-ooooooO-@@@@@", "#@@-ooooo-@@@###", "#@@@-----@@@@###", "@@@@@@@@@@@@@###", "@@@@@@@@@@@@@###", "##@@@@@@@@#####$", "##@@@@@@@@#####$", "##@@@.@@@@#####$", "@@@@.@@@@@#####$", "$@@.@@@@@@#####$", "$$@@@@@@@@@@@@@@", "$$@@@.@@@@@@@@@@", "$@@@.@@@@@@@@@@@", "@@@.@@@@@@@@@@@@", "$@@@@@@@@@#####$", "$$@@@.@@@@#####$", "@@@@.@@@@@#####$", "##@.@@@@@@#####$", "##@@@@@@@@#####$", "##@@@.@@@@#####$", "##@@.@@@@@#####$", "$######@@@@@@@##", "$##########@@@##", "$##########@@@##", "$##########@@@##", "$#######oooooooo", "$######oo.......", "$######oo@@@@@@@", "$######Oo@@@@@@@", "$######oo@@@@@@@", "$######oo@@@@@@@", "$######Oo@@@@@@@", "$######oo@@@@@@@", "$######ooOOOOOOO", "$######oOOOOOOOO", "$#######$$$$$$$$", "$$$$$$$$$$$$$$$$", "################", "################", "################", "################", "oooooooooooooo##", ".............O# ", "@@@@@@@@@@@@.O@ ", "@@@@@@@@@@@@.O@ ", "@@@@@@@@@@@@.O@ ", "@@@@@@@@@@@@.O# ", "@@@@@@@@@@@@.O# ", "@@@@@@@@@@@@.O$ ", "OOOOOOOOOOOOOO$ ", "OOOOOOOOOOOOO$$ ", "$$$$$$$$$$$$$$$#", "$$$$$$$$$$$$$$$$", "##@.@@@@@@#####$", "##@@@@@@@@#####$", "###############$", "# ####$", " @@@@@@@@+####$", " -------@+####$", " -------@+####$", " -------@+####$", " -------@+####$", " -------@+####$", " -------@+$###$", " +++++++++$###$", " +++++++++$$###$", "+++++++++$$$###$", "$$$$$$$$$$$$###$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "$###############", "$##.############", "$#..############", "$#####.#########", "$####..#oooooooo", "$######ooXXXXXXo", "$#..##ooo@@@@@@o", "$####oOoo@@@@@@o", "$####oooo@@@@@@o", "$####ooOo@@@@@@o", "$####oooo@@@@@@o", "$####oooo@@@@@@o", "$####oOoo@@@@@@X", "$####oooo@@@@@@X", "$####ooOo@@@@@@X", "$$$$$$$$$@@@$$$$", "#########@@@####", "#########@@@####", "#########@@@####", "oooooooooooooooo", "oXXXXXXXXXXXXXXX", "o@@@@@@@@@@@@@@@", "o@@@@@@@@@@@@@@@", "o@@@@@@@@@@@@@@X", "o@@@@@@@@@@@@@@X", "o@@@@@@@@@@@@@@@", "oOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOo", "OOOOOOOOOOOOOOoo", "OOOOOOOOOOOOOooo", "$$$$$$$$$$$$$$$$", "###############$", "###############$", "###############$", "ooooooooooooo##$", "XXXXXXXXXXXXO##$", "@@@@@@@@@@@XO##$", "@@@@@@@@@@@XO##$", "@@@$$$$$@@@XO##$", "@@@$$@@$$@@XO##$", "@@@$$@@$$@@XO##$", "Oo@$$$$$@@@XO##$", "oo@$$$$@@@@XO##$", "oo@$$@$$@@@XO##$", "oo@$$@@$$@@XO$#$", "Oo@@@@@@@@@XO$#$", "$####oooo@@@@@@X", "$####oooo@@@@@@X", "$####oOoo@@@@@@X", "$####ooOo@@@@@@X", "$####oooo@@@@@@X", "$####oooo@@@@@@X", "$####oooo@@@@@@X", "$####oOoo@@@@@@X", "$##$#ooOo@@@@@@X", "$####oooo@@@@@@X", "$####oooo@@@@@@X", "$####oooo@@@@@@X", "$####oOoo@@@@@@X", "$####oooo@@@@@@X", "$####ooOo@@@@@@X", "$####oooo@@@@@@X", "O$$$$$$$$$$$$ooo", "O.........$$$oOo", "O.@@@@@@@@###ooo", "O.@@OOOO@@##$ooo", "O.@oooooO@###oOo", "O.--ooooO@###ooo", "O.@oooooO@#$#ooo", "O.@@oooo@@###oOo", "O.@@@@@@@@###ooo", "O$###########ooO", "O$###########oOO", "O.@@@@@#######$$", "O.@@@@@@##$####$", "O.@@@@@@########", "O$###@@@########", "ooooooooooooooo#", "oo@@@@@@@@@XO$#$", "oo@@@@@@@@@XO$#$", "Oo@@@@@X@@@XO$#$", "oo@@@@@@@@@XO$#$", "oo@@@@@@@@@XO$#$", "Oo@@@@@@@@@XO$#$", "ooOOOOOOOOOOO$#$", "oOOOOOOOOOOO$$#$", "OOOOOOOOOOO$$$#$", "OOOOOOOOOO$$$$#$", "OOOOOOOOO$$$$$#$", "$$$$$....$$$$$#$", "$$$$$....$$$$$#$", "$$$$......$$$$#$", "###@@@@@@@@####$", "##@@@....@@@###$", "$#$##oooo@@@@@@X", "$####oooo@@@@@@@", "$####oOoo@@@@XX@", "$####oooo@@@@@X@", "$####oooo@@@@XX@", "$##$#ooOo@@@@@@@", "$####ooOo@@@@@@@", "$####oOooOOOOOOO", "$####oooOOOOOOOO", "$####ooOOOOOOOOO", "$####oOOOOOXXXXO", "$#####$$$$$...$$", "$######$$$$...$$", "$##########@@@##", "$##########@@@##", "$$$$$$$$$$$@@@$$", "XXXXXXXXXXXXXXO#", "@@@@@@@@@@@@@XO@", "@@@@@@@@@@@@@XO@", "@@@@@@@@@@@@@XO@", "@@@@@@@@@@@@@XO@", "@@@@@@@@@@@@@XO#", "@@@@@@@@@@@@@XO$", "OOOOOOOOOOOOOOO$", "OOOOOOOOOOOOOO$$", "OOOOOOOOOOOOO$$$", "OOOOOOOOOOOO$$$$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "################", "################", "$$$$$$$$$$$$$$$$", "#@@@-Oooo.@@@#$$", "@@@-oooOoo.@@##$", "@@@-ooo-Oo.@@##$", "@@@-oOoooo.@@##$", "@@@-oooOoo.@@##$", "#@@@-ooOo-@@@##$", "##@@@----@@@###$", "###@@@@@@@@####$", "####@@@@@@##$##$", "###############$", "#####$#########$", "###############$", "###$###########$", "#########$#####$", "###############$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "$###############", "$####$##########", "$##############-", "$#########$###-@", "$############--@", "$###########@-@@", "$####$#####%@-@@", "$#$#######@%%-@@", "$########%@%--@@", "$#######@%%---@@", "$######%@%-----@", "$#####@%%---@--@", "$####%@%-----@--", "$###@%%--------@", "$###@%---@----@@", "$$$$$$$$$$$$$$$$", "##-----#########", "--.....--######$", "@@@@@@@..-#####$", "@@@@@@@@@.-####$", "@@@@@@@@@.-##@@@", "@@@@@@@@@@.-#@#$", "@@@@@@@@@@.-#@#$", "@@@@@@@@@@.-#@#$", "@@@@@@@@@@.-#@#$", "@@@@@@@@@@.-#@##", "@@@@@@@@@@-@@@@@", "@@@@@@@@@@-@@@-@", "@@@@@@@@@-#@@O-O", "--@@@@@--##@@ooo", "@@------###@@ooo", "$$$$$$$$$$$$$$$$", "$$$$$$$########$", "-@@%@@-$#######$", "@@@%@@@$#######$", "-@@%@@-$###$###$", "$@$@$@$$#######$", "@$@$@$@$#######$", "-@@%@@-$#### ##$", "@@@%@@@$#######$", "-@@%@@-$#######$", "$$$$$$$##$#####$", "@@@############$", "@@@#########$##$", "O@@###$########$", "O@@###### #####$", "O@@###### #####$", "$##%%-----@--@@-", "$##%--------@@@@", "$##---@----@@-@@", "$##----@--@@@@..", "$##------@@-@@@@", "$###----@@@@..@@", "$$##---@@-@@@@@.", "$####-@@@@..@@..", "$#####@@@@@@@..$", "$######...@@...$", "$######@..$$$$..", "$##$###@@.$$$$$.", "$######@@@$$$+$$", "$######@@@#$$$$$", "$######@@@##$$$$", "@@@@@@@@@@@@@.$$", "@@@@@..@@@@@@ooo", "..@@..#####@@ooo", "@@@..######@@ooo", "@@..#######@@@@@", "@..#### ###@@@@@", "..###########@##", ".$$##########@##", "$$$$####$####@##", "$$$$$########@##", "$$+$$$#######@#@", "$$$$$$$######@%@", ".$$$$$$######@%%", "..$$$$$#####%@%-", "$..$$$$####@%%--", "$$..$$####%@%---", "$$...$###@%%---@", "O@@#$### ####$#$", "O@@############$", "O@@#######$####$", "@@@############$", "@@@##-----#####$", "###--.....--###$", "##-@@@@@@@..-##$", "#-@@@@@@@@@@.-#$", "--@@@$$$$$@@.-#$", "-@@@@$$@@$$@@.-$", "-@@@@$$@@$$@@.-$", "-@@@@$$$$$@@@.-$", "-@@@@$$$$@@@@.-$", "-@@@@$$@$$@@@.-$", "--@@@$$@@$$@@-#$", "--@@@@@@@@@@@-#$", "@@@@@@@@@@@@@@..", "@@@@@@@@@@@@@@@$", "@@@@@@@@@@@@@@@#", "$###########@@@#", "$###########@@@#", "$##### ###$#@@@#", "$##$########@@@#", "$###########@@@#", "$###$#####$#@@@@", "$###########@@@@", "$#######$####@@@", "$###############", "$#$$###$########", "$###########$###", "$###############", "$$$$$$$$$$$$$$$$", "...$@@##%@%-----", "$$$##@@@%%------", "######@@%---@---", "#$####%%-----@--", "######%--------@", "**#&##---@----@@", "##o###----@--@@@", "&*####------@@-@", "@@@@@@..---@@@@.", "@@@@@@@.--@@-@@@", "@@@@@@@#-@@@@..@", "#########@@@@@@@", "#######$##$@@@@.", "## ########$$$$$", "############$$$$", "$$$$$$$$$$$$$$$$", "@--@@@@@@@@@-##$", "--@--@@@@@--###$", "-@@@@------### $", "@@-@@@@@..#####$", "@@@..@@..######$", "-@@@@@..#######$", "@..@@..########$", "@@@@..#########$", ".@@..#### #####$", "@@..$$#########$", "@..$$$$########$", "..$$$$$$## ####$", "$$$$$$$$$######$", "$$$$$$+$$$#####$", "+$$$$$$$$$#####$", "$$$$$$$$$$$$$$$$", " %%%%%%", "$$$$$$$$$-%-----", "$#######--%-----", "$#$$$##---%-----", "$$$$$#----%-----", "$$$$$-----%-----", "$$$$------%-----", "$##-------%-----", "$##-------%-----", "$##-------%----+", "$##-------%-----", "$##-------%-----", "$##-------%%%%%%", "$##-------@@@@@@", "$##------@@@@@@@", "$##-----@@@@@@@@", "%%%%% -...", "----%$$$$$$--@@@", "----%#####---@@@", "----%####----@@@", "----%....----@@@", "----%@@@.----@@@", "----%@@@.----@@@", "----%@@@.----@@@", "----%@@@.----@@@", "----%@@@.-------", "----%@@@.--@@@@@", "----%....-@@@@@@", "%%%%%..@@@@@@@@@", "@@@@..@@@@@@@@@-", "@@@..@@@@@@@@@--", "@@$$$$$$$#####--", "............... ", "@@@@@@@@@@@@@@. ", "@@@@@@@@@@@@@@. ", "@@@X@@@@@@@@@@. ", "@@X@@@@@@@@@@@. ", "@@@@@@@@@@@@@@. ", "@@@@@@@@@@@@@@. ", "@@@@@@@@@@@@@@. ", "@@@@@@@@@@@@@@. ", "----@@@@@@@@@@. ", "@@--@@@@@@@@@@. ", "@---@@@@@@@@@@. ", "---%%%%%%%%%%%%%", "--@%...........%", "-@@%----------.%", "@@@%----------.%", "$##----@@@@@@@@@", "$##----.........", "$##----.........", "$##----.........", "$##----.........", "$##----.........", "$##----.........", "$##----.........", "$##----.........", "$##----....%%%%%", "$##----...-%....", "$##----..--%----", "$##----.---%----", "$##--------%----", "$##--------%----", "$##--------%----", "@$$$$$$$$#####-@", ".@@@@@@@@--###@@", ".@@@@-@@@--##@@@", ".@@@O-O@@--#@@@@", ".@@OO-OO@--#@@X@", ".@@OOOOO@--#@@@@", ".@-ooooO---#@@X@", ".@-ooooO---#@@@@", ".@-ooooO---#@@X@", "%%%%%ooO---#@@@@", "....%ooO---#@@X@", "---.%oo----#@@@@", "---.%%%%%%%%%%%%", "---.............", "----------------", "----------------", "@@@%----------.%", "@@@%----------.%", "X@@%--$$$$$---.%", "@@@%--$$--$$--.%", "X@@%--$$--$$--.%", "@@@%--$$$$$---.%", "X@@%--$$$$----.%", "@@@%--$$-$$---.%", "X@@%--$$--$$--.%", "@@@%----------.%", "X@@%----------.%", "@@@%----+-----.%", "%%%%---+------.%", "...---+-------.%", "--------------.%", "--------------.%", "$##--------%---+", "$##--------%----", "$##--------%----", "$##--------%----", "$##--------%%%%-", "$##-------@@@-%%", "$##------@@@-%-%", "$##-----@@@-%-..", "$##----@@@-%-%%%", "$##---@@@-%-..%-", "$##--@@@-%-%%%-@", "$##-@@@-%-..%-@@", "$##@@@-%-%%%-@@.", "$###$$%-----$$$$", "$####$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "----------------", "----------X-----", "----------------", "----------------", "---%%%%%%%%----%", "%%%%@@%@@-%%%%%%", "%%-@@.@@-%-%%%-@", "%-@@%@@-%-..%-@@", "-@@.@@-%-%%%-@@.", "@@%@@-%-..%-@@%@", "@@@@-%-%%%-@@@@@", "%@@-%-..%-@@%@@-", "@@-%-%%%-@@.@@-%", "$$%-----$$$$$$%-", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "--------------.%", "--------------.%", "--------------.%", "--------------.%", "%%%%%%%----%%%%%", "@@@@@-%%%%%%@@@ ", "@.@@-%-%%%-@@@$ ", "%@@-%-..%-@@@#$ ", "@@-%-%%%-@@@$#$ ", "@-%-..%-@@@$$#$ ", "-%-%%%-@@@$$$#$ ", "%-..%-@@@$$$$#$ ", "-%%%-@@@$$$$$#$ ", "----$$$$$$$$$#$ ", "$$$$$$$$$$$$$#$ ", "$$$$$$$$$$$$$$$ ", "XXXXXXX@@@XXXXXX", "X######@@@######", "X######@@@######", "X###@@@@@@@@@@@#", "X###@@@@@@@@@@@#", "X###@@@@@@@@@@@#", "X###@@@@@@@@@@@#", "X###@@@@@@@@@@@#", "X###@@@@@@@@@@@#", "@@@@@@@@@@@@@@@#", "@@@@@@@@@@@@@@@#", "@@@@@@@@@@@@@@@#", "X###@@@@@@@@@@@-", "X###@@@@@@@@@@--", "X###@@@@@@@@@-@-", "X###@@@@@@@@--@-", "XXXXXXXXXXXXXXXX", "#### ###########", "##########XXXXXX", "#########-......", " #######--......", "#######---......", "######----......", "#####-----......", "####------......", "##XXXXXXXX......", "#-............%%", "--..........%%%%", "@-..........%%%&", "@-.........%%%%&", "@-.........%%&&&", "--.........%%&&&", "XXXXXXXXXXXXXXXX", "###############X", "XXXXXX#########X", ".....X#########X", ".....X#### ####X", ".....X#########X", ".....X#########X", ".....X###### ##X", ".....X#########X", ".....XXXXXXXXX#X", "%%...........X#X", "%%%%.........X#X", "&%%%.........X#X", "&%%%%........X#X", "&&&%%........X#X", "&&&%%........X#X", "X###@@@@@@@-@-@-", "X#########--@---", "X########-@-@---", "X#######--@---@-", "X######-@-@---@-", "X# ###--@---@-@-", "X####-@-@---@---", "X####-@---@-@--@", "X## #-@---@---@@", "X## #---@-@--@@@", "X####---@---@@@@", "X####-@-@--@@@@@", "X####-@---@@@@@@", "X ##-@--@@@@@@@", "X####---@@@@@@@@", "X####--@@@@@@@@-", "--.........%%%%&", "@-..........%%%&", "@-..........%%%%", "@-............%%", "--..............", "-@@@@@@@@-......", "@@@@@@@@--......", "@@@@@@@---......", "@@@@@@----......", "@@@@@-----......", "@@@@------......", "@@@-------......", "@@-------@@@@@@@", "@-------@@...@@@", "-------@@@@@@@@@", "------@@...@@@..", "&%%%%........X#X", "&%%%.........X#X", "%%%%.........X#X", "%%...........X#X", ".............X#X", ".....X@@@@@@@##X", ".....X@@@@@@###X", ".....X@@@@@####X", ".....X@@@@### #X", ".....X@@@$#####X", ".....X@@$$$####X", ".....X@$$$$$###X", "@@@@@@$$$$$$$##X", "...@@$$$$$$$$$#X", "@@@@$$$$$$$$$$$X", ".@@$$$$$$$$$$$$X", "X####-@@@@@@@@--", "X####@@@@@@@@---", "X#####$$$$$$$---", "X###@@@.....$---", "X###@@@@....$---", "X###@@@@@...$---", "@@@@@@@@@@..$--@", "@@@@@@@@@@@.$-@@", "@@@@@@@@@@@@$@@@", "X###@@@@@@@@##$$", "X###@@@@@@@@###$", "X## @@@@@@@@####", "X## @@@@@@@@## #", "X#######@@@#####", "X#######@@@#####", "XXXXXXXX@@@XXXXX", "-----@@@@@@@@@@@", "----@@...@@@...@", "---@@@@@@@@@@@@@", "--@@...@@@...@@$", "-@@@@@@@@@@@@@$$", "@@...@@@...@@$$$", "@@@@@@@@@@@@$$$$", "...@@@...@@$$$$$", "@@@@@@@@@@$$$$$$", "$$$$$$$$$$$$$$$+", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "#$$$$$$$$$$$$$$$", "##$+$$$$$$$$+$$$", "###$$$$$$$$$$$$$", "XXXXXXXXXXXXXXXX", "@@$$$$$$$$$$$$$X", "@$$$+$$$$+$$$$$X", "$$$$$$$$$$$$$$$X", "$$$$$$$$$$$$$$$X", "$$$$$$$+$$$+$$$X", "$$$$$$$$$$$$$$$X", "$$$$$$$$$$$$$$$X", "$$$$$$$$$$$$$$$X", "$$$$$$$$$$$$$$$X", "$$$$$$$$$$$$$$$X", "$$$$$$$$$$$$$$$X", "$$$$$$$+$######X", "$$$$$$$$$# # ##X", "$$$$$$$$$### ##X", "$$$$$$$$$######X", "XXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXX", "X###############", "X###############", "X############@@@", "X###########-@..", "X##########--@..", "X#########---@..", "X########----@..", "X#######-----@..", "X######---X--@..", "X#####---XX--@@@", "X#####---@X-@XXX", "X#####--@@--@...", "X#####--@---@...", "X#####----X-@...", "X#####---XX-@...", "XXXXXXXXXXXXXXXX", "################", "################", "@@@@@@##########", ".....@@@@@@@@@@@", ".....@..........", ".....@..........", ".....@..........", ".....@..........", ".....@..........", "@@@@@@......X.X.", "XXXXX...........", "................", "................", "................", "..X.............", "XXXXXXXXXXXXXXXX", "###############X", "###############X", "###############X", "@@@@@@@@@@@@@##X", "............@##X", ".........X..@##X", "............@##X", ".........X..@##X", "............@##X", "X........X..@$#X", "............@$#X", "............@$#X", "............@$#X", "............@$#X", ".........%..@$#X", "X#####---@X-@...", "X#####--@@--@...", "X#####--@---@...", "X#####----X-@...", "X#####---XX-@...", "X#####---@X-@...", "X#####--@@--@...", "X#####--@---@...", "X#####----X-@...", "X#####---XX-@...", "X#####---@X-@...", "X#####--@@--@...", "X#####--@---@...", "X#####----X-@...", "X#####---XX-@...", "X#####---@X-@...", "................", "................", "..X.............", "................", "................", "..X.............", "...............%", ".............%%%", "............-%%%", "...........--%%-", "..........---%--", ".........-------", "........----@@@@", ".......----@@@XX", ".......---@@@X..", ".......--@@@X..@", "........%...@$#X", ".....%%%%%..@$#X", "......%.....@$#X", ".....%......@$#X", "...%%X......@$#X", ".%%--.......@$#X", "%%---.......@$#X", "%----.......@$#X", "-----.......@$#X", "-----.......@$#X", "-----.......@$#X", "-----.......@$#X", "@@@@........@$#X", "@@@.........@$#X", "@@..........@$#X", "@...........@$#X", "X#####--@@--@...", "X#####--@---@@@@", "X#####-----@@@@@", "X#####----@@@@XX", "X#####---@@@@X..", "X#####--@@@@X..@", "X#####-@@@@@@@@@", "X#####@@@@@@@@@@", "X######$$$$$$$$$", "X#######$$$$$$$$", "X########$$$$$$$", "X#########$$$$$$", "X##########$$$$$", "X###############", "X###############", "XXXXXXXXXXXXXXXX", ".......-@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@+@@+@@+@", "X@@@@@@@@@@@@@@@", "@@@@@@@XXXXXX@@@", "@@@@@@X+++++@@@@", "@@@@@X+++++@@@@@", "@@@@X+++++@@@@@@", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "########$$$$$$$#", "#########$$$$$$$", "XXXXXXXXXXXXXXXX", "............@$#X", "@@@@@@@@@@@@@$#X", "@@@@@@@@@@@@$$#X", "@@@XXX@@@@@$$$#X", "@@X..@@@@@$$$$#X", "@X..@@@@@$$$$$#X", "@@@@@@@@$$$$$$#X", "@@@@@@@$$$$$$$#X", "$$$$$$$$$$$$$$#X", "$$$$$$$$$$$$$$#X", "$$$$$$$$$$$$$$#X", "$$$$$$$$$$$$$$#X", "$$$$$$$$$$$$$$#X", "###############X", "###############X", "XXXXXXXXXXXXXXXX", "Xooooooooooooooo", "XoXXXXXXXXXXXXXX", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "oooooooooooooooo", "XXXXXXXXXXXXXXXX", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "oooooooooooooooo", "XXXXXXXXXXXXXXXo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", " ", " ", " Xooooo ", " XooXXXoo ", " XooX Xoo ", " Xoo XX ", " Xoo ", " Xoo ", " Xoo ", " Xoo ", " Xoo oo ", " XXoo ooX ", " XXoooooX ", " XXXXXX ", " ", " ", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xo ", "Xooooooooooooooo", "XXXXXXXXXXXXXXXX", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "oooooooooooooooo", "XXXXXXXXXXXXXXXX", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", " Xo", "oooooooooooooooo", "XXXXXXXXXXXXXXXX", "oooooooooooooooo", "o###############", "o#########$#####", "o###############", "o#########@@@@@@", "o#######@@@@@@@@", "o#####$@@@@@@@@@", "o######@@@@@@@@@", "o##$###@@@@@@...", "o######@@@@@.%%%", "o######@@@@@.%%%", "o######@@@@@.%%%", "o######@@@@@.%%%", "o######@@@@@@...", "o######@@@@@@@..", "o#$####@%@@@.@.%", "oooooooooooooooo", "################", "################", "################", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "................", "%@@@@@@@@@@@@@@@", ".@..............", "+@..............", "+@..............", "+@..............", ".@..............", "+@..............", "oooooooooooooooo", "###############o", "################", "################", "@@@@@@##$######o", "@@@@@@@@###$###o", "@@@@@@@@@######o", "@@@@@@@@@#$####o", "...@@@@@@######o", "@%%.@@@@@######o", "@X%.@@@@@######o", "@%%.@@@@@####$#o", "@%%.@@@@@######o", "@..@@@@@@######o", "@..@@@@@@######o", "@.@.@@@@@######o", "o######%+@@@@...", "o#####%+%@@@@@.%", "o####%+%%@@@.@..", "o###%+%%%@@@@..%", "o##%+#%%%@@@@@..", "o##+##%%%@@@.@.%", "o#####%%%@@@@...", "o#####%%%@@@@@.%", "o#####%%+@@@.@..", "o#####%+@@@@@..%", "o####%+@@@@@@@..", "o###%+#@@@@@.@.%", "o##%+##@@@@@@...", "o##+###@@@@@@@.%", "o######@@@@@.@..", "o###$##@@@@@@..%", ".@..............", "+@..............", ".@..............", "+@@@@@@@@@@@@@@@", ".....++..+++++++", "+.+.........++++", "....++++++++....", "%.%..........%.%", "....$$$$$$$$....", ".%%.$------$.%%%", "....$------$....", "%.%.$------$.%%+", "....$------$....", ".%%.$------$.+%%", "....$------$....", "%.%.$------$.%%%", "@.@@@@@@@######o", "@..@@@@@@######o", "@.@.@@@@@######o", "@.@@@@@@@######o", "...@@@@@@######o", "%.@.@@@@@#####$o", "..@@@@@@@######o", "%..@@@@@@######o", "..@.@@@@@######o", "%.@@@@@@@##$###o", "...@@@@@@##$###o", "%.@.@@@@@######o", "..@@@@@@@######o", "%..@@@@@@######o", "..@.@@@@@######o", "%.@@@@@@@######o", "o######@@@@.....", "o#$####@@@$$$$$$", "o######@@@$@----", "o######@@@$$$$$$", "o######@@@@@@@@@", "o@@@@@@@@@@@@@@@", "o@@@@@@@@@@@@@@@", "o@@@@@@@@@@@@@@@", "o@@@@@@@@@@@@@@@", "o@@@@@@@@@@@@@@@", "o###############", "o########$######", "o###$###########", "o############$##", "o###############", "oooooooooooooooo", "....$------$....", "$$$$$$$$$$$$$$$$", "----$-----------", "$$$$$$$$$$$$$$$$", "@@@@@@@@@@@@@@@@", "@@@@@oooo@@@@@@@", "@@@@oo@@oo@@@@@@", "@@@@oo@@@@@@@@@@", "@@@@oo@@@@@@@@@@", "@@@@oo@@@@@@@@@@", "@@@@oo@@oo@@@@##", "#@@@@oooo@@@@###", "#$#@@@@@@@@##$$#", "##@####$########", "################", "oooooooooooooooo", "....@@@@@######o", "$$$$$@@@@####$#o", "----$@@@@######o", "$$$$$@@@@######o", "@@@@@@@@@######o", "@@@@@@@@@@@@@@@o", "@@@@@@@@@@@@@@@o", "@@@@@@@@@@@@@@@o", "@@@@@@@@@@@@@@@o", "@@@@@@@@@@@@@@@o", "##############$o", "###########$###o", "#$$$#$$$#######o", "###############o", "###############o", "oooooooooooooooo", "oooooooooooooooo", "o ", "o ", "o ", "o ", "o @XXXXXX ", "o @@XXXXXX ", "o @@XXXXXX ", "o @@XXXXXX . ", "o @@XXXXXX . ", "o @@XXXXXX . .", "o @@XXXXXX + ", "o @..=.... . ", "o @...... . ", "o @@ . ", "o @@ + ", "oooooooooooooooo", " ", " ", " ", " %", " %%-", " %%--", " %%---", " . . %%----", ". . %%-X---", " . %%X-----", "+ + %%X------", " %%--------", " %%---X--X--", " %%---X-----@", " %X--------@@", "oooooooooooooooo", " o", " o", " o", "%%%%-- o", "----%--@ o", "-----%-@@ o", "--------@@ o", "-------&@@@ o", "-----@@@.@@ o", "---@@@@@.@@@ o", "--@@@@@@@.@@. o", "-@@@@@@@@..@. o", "@@@@@@@@@.... o", "@@@@@@@@@.... o", "@@@@@@@@@.... o", "o @@ . . ", "o @@ . . ", "o @@ . . ", "o @@ + + ", "o @@ . X", "o @@ . XX", "o @@ . XX ", "o @@ + XX ", "o @@ XX ", "@@@@@@ . + ", "@@@@@@ . + X", "@@@@@@. XX", "o + XX+", "o . XX ", "o . XX ", "o . + ", " XX------X-@@@", " XXX-----X-@@@@", " XX X------@@@@@", "XX -X---@@@X@@", "X X---@@@X@@@", " XXX-@@@@@@@@", " XX X@@@@@@@@X", " XX XX@@@@@@@@", " XX+ X@X@@@@@", "XX + .@@@@@@", "X + XX..@@@.", " +XX ....", " XX ++XX ", "+ XX +++XX++", " + XX ++++XX++X", " +XX ++++XX++XX", "@@@@@@@@@.... o", "X@@@@@@@..... o", "@@@@@@@....X. o", "@@@@X@..X... o", "@@@@@...... o", "X@@@...... . o", "@@@.X..X. . o", "@@.X..X. . o", "@...... + o", "...... . o", "X..X. . o", ".... . o", " XX + o", "XX . o", "X++ . o", "++++ . o", "o + + ", "o . + ", "o . oooo +", "o . oo oo ", "o + oo ", "o .oo ", "o . oo ", "o . oo oo ", "o + oooo ", "o . . ", "o . . .", "o . . . ", "o + + +", "o ", "o ", "oooooooooooooooo", " XX+++++XX++XX+", " XX ++++XX++XX++", "XX +++XX++XX+++", "+ ++XX++XX++++", " + +XX+++++++++", " + ++++++++++++", " +++++++++++++", " ++++++++++++", " +++++++++++", ". . ++.+++.+++", " . .+++.+++.", " . . +.+++.+", " + + + +++", " ", " ", "oooooooooooooooo", "+++++ + o", "++++++ . o", "+++++++ . o", "+++++++ . o", "+++++++ + o", "+++++++ . o", "+++++++ . o", "+++++++ . o", "++++++ + o", ".+++.+ . . o", "+++.+ . . o", "++.+ . . o", "++ + + + o", " o", " o", "oooooooooooooooo", "oooooooooooooooo", "o ", "o $$$$$$$$$", "o $$@@@@@@@@", "o $$$@@@@@@@@", "o $$$$@@@@@@@@", "o $$$$$@@@@@@@@", "o $$$$$@@@@@@@@", "o $X$$$@@@@@@@@", "o $$$$$@@@@@@@@", "o $X$$$@@@@@@@@", "o $$$$$@@@@@@@@", "o $X$$$@@@@@@@@", "o $$$$$@@@.@@@@", "o $X$$$@@@@@@@@", "o $$$$$@@@@@@@@", "oooooooooooooooo", " ", "$$ ", "@$$$$$$$$$$$$$$$", "@$@@@@@@@@@@@@@@", "@$@@@@@@@@@@@@@@", "@$@@@@@@@@@@@@@@", "@$@@@@@@@@@@@@@@", "@$@@@@@.@.@@@@@@", "@$@@@@@.@.@@@@@@", "@$@@@@@@@@@@@@@@", "@$@@@@@@@@@@@@@@", "@$@@@@@@@@@@@@@@", "@$$$$$$$$$$$$$$$", "@$$$$$$$$$$$$$oo", "@$$$$$$$$$$$$OoX", "oooooooooooooooo", " o", " o", "$$$$$$$$$$$ o", "@@@@@@@@@@$ o", "@@@@@@@@@@$ o", "@@@@@@@@@@$ o", "@@@@@@@@@@$ o", "@@@@@@@@@@$++ o", "@@@@@@@@@@$++ o", "@@@@@@@@@@$++ o", "@@@@@@@@@@$++ o", "@@@@@@@@@@$++ o", "$$$$$$$$$$$++ o", "oooooooooooooO o", "XXXXXXXXXXXXXO o", "o $$$$$@@@@@@@@", "o $$$$$@@@@@@@@", "o $$$$$@@@@@@@@", "o $$$$$@@@@@@@@", "o $$$$$@@@@@@@@", "o $$$$$@@@@@@@@", "o $X$$$@@@@@@@@", "o $$$$$@@@@@@@@", "o $X$$$@@@.@@@@", "o $$$$$@@@@@@@@", "o $X$$$@@@@@@@@", "o $$$$$@@@@@@@@", "o $X$$$@@@@@@@@", "o $$$$$@@@@@@@@", "o $.$$$@@@@@@@@", "o ..$$$&&&&&&&&", "@$$$$$$$$$$$Ooo@", "@$$$$$$$$$$OOoo@", "@$++++++++OOooo@", "@$+++++++OOOooo@", "@$++++++OOOoooo@", "@$+++++OOOOoooo@", "@$+++++OOOooooo@", "@$+++++OOOooooo@", "@$+++++OOoooooo@", "@$+++++OOoooooo@", "@$+++++Oooooooo@", "@$+++++Oooooooo@", "@$++ oooooooo@", "@$++ oooooooo@", "@$++ oooooooo@", "&&&&&&&&&&&&&&&&", "@@@@@@@@@@@@XO o", "@@@@@@@@@@@@XO o", "@@@@@@@@@@@@XO o", "@@@@@@@@.@@@XO o", "@@@@@@@@@@@@XO o", "@@oooo@@@@@@XO o", "@oo@@oo@@@@@XO o", "@oo@@@@@.@@@XO+o", "@oo@@@@@@@@@XO+O", "@oo@@@@@@@@@XO+O", "@oo@@oo@@@@@XO+O", "@@oooo@@.@@@XO+O", "@@@@@@@@@@@@XO+O", "@@@@@@@@@@@@XO+O", "@@@@@@@@@@@@XO+O", "@@@@@@@@@@@@XO+O", "o .$$$&&XXXXXXX", "o $$$&&&.......", "o $$&&X&.......", "o $&&&&&.......", "o &&X&X&.....X.", "o &&&&&&.......", "o &&X&X&.......", "o &&&&&&&&&&&&&", "o &&X&&&&X&X&X&", "o &&&&&&&&&&&&&", "o &&&&&X&X&X&X&", "o &&&&&&&&&&&&&", "o &&&&&&&&&&&&&", "o ++++++++++++", "o +++++++++++", "ooooooOOOOOOOOOO", "XXXXXXXXXXXXXXX&", "..............X&", "..............X&", "..............X&", "....X......X..X&", "..........X...X&", "..............X&", "&&&&&&&&&&&&&&&&", "X&X&X&X&X&X&&&&O", "&&&&&&&&&&&&&&OO", "X&X&X&X&X&&&&OOO", "&&&&&&&&&&&&OO.O", "&&&&&&&&&&&OOOOO", "++++++++++++++++", "++++++++++++++++", "OOOOOOOOOOOOOOOO", "@@@@@@@@@@@@XO+O", "@@@@@@@@@@@@XO+O", "@@@@@@@@@@@@XO+O", "@@@@@@@@@@@@XO+O", "@@@@@@@@@@@@XO+O", "OOOOOOOOOOOOOO+O", "OOOOOOO.OOOOO++O", "OOOOOOOOOOOO+++O", "..O.OOOOOOO++++O", "OOOOOO.OOO+++++O", "OOOOOOOOO++++++O", ".OO.OOOO+++++++O", "OOOOOOO++++++++O", "+++++++++++++++O", "+++++++++++++++O", "OOOOOOOOOOOOOOOO", "oo@@oooooooooooo", "o#@@############", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@oo", "o#@@#########oo@", "o#@@########ooo@", "o#@@#######oooo@", "o#@@######oooOo@", "o#@@#####oooOoo@", "o#@@####oooOoOo@", "o#@@###oooOoOoo@", "o#@@##oooOoOooo@", "o#@@##ooOoOoooo@", "o#@@##oOoOooooo@", "o#@@##OoOoooooo@", "o#@@##oOooooooo@", "oooooooooooooooo", "################", "@@@@@@@@@@@@@@@@", "ooooooooooooooo@", "@@@@@@@@@@@@@@O#", "@@@@@@@@@@@@@@OO", "@@@@@@@@@@@@@@O@", "@@@@@@@@@@@@@@O@", "@@.@@@@@@@@@@@O@", "@@@@@@@@@@@@@@O@", "@@@@@@@@@@@@@@O@", "@@@@@@@@@@@@@@O@", "@@.@@@@@@@@@@@OO", "@@@@@@@@@@@@@@O.", "@@@@@@@@@@@@@@O.", "@@@@@@@@@@@@@@O.", "oooooooooooo@@oo", "############@@#o", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "############@@#o", "OOOOOOOOOOOO@@#o", "@@@@@@@@@@@O@@#o", "@@@@@@@@@@@O@@#o", "@@@@@@@@@@@O@@#o", "@@@@@@@@@@@O@@#o", "@@@@@@@@@@@O@@#o", "@@@@@@@@@@@O.@#o", "OOOOOOOOOOOO.@#o", "...........$.@#o", "..........$$.@#o", ".........$$$.@#o", "o#@@##OooooooOo@", "o#@@##ooooooOoo@", "o#@@##oooooOooo@", "o#@@##ooooOooOo@", "o#@@##oooOooOoo@", "o#@@##ooOooOooo@", "o#@@##oOooOoooo@", "o#@@##OooOooooo@", "o#@@##ooOoooooo@", "o#@@##oOooooooo@", "o#@@##Ooooooooo@", "o#@@##ooooooooo@", "o#@@##ooooooooo@", "o#@@##ooooooooo@", "o#@@##ooooooooo@", "o#@@##oooooooOo@", "@@oooo@@@@@@@@O.", "@oo@@oo@@@@@@@OO", "@oo@@@@@@@@@@@O@", "@oo@@@@@@@@@@@O@", "@oo@@@@@@@@@@@O@", "@oo@@oo@@@@.@@O@", "@@oooo@@...@@@O@", "@@@@@@@@@.@@@@O@", "@@@@@@@@.@@@@@O@", "@@@@@@@.@@@@@@O@", "@@@@@@.@@@@@@@O@", "@@@@@@@@@@@@@@O@", "@@@@@@@@@@@@@@O@", "@@@@@@@@@@@@@@O@", "@@@@@@@@@@@@@@O@", "@@@@@@@@@@@@@@O@", "........$$$$.@#o", "OOOOOOOOOOOO.@#o", "@@@@@@@@@@@O@@#o", "@@@@@@@@@@@O@@#o", "@@@@@@@@@@@O@@#o", "@@@@@@@@@@@O@@#o", "@@@@@@@@@@@O@@#o", "@@@@@@@@@@@O@@#o", "@@@@@@@@@@@O@@#o", "@@@@@@@@@@@O.@#o", "@@@@@@@@@@@O.@#o", "@@@@@@@@@@@O.@#o", "@@@@@@@@@@@O.@#o", "@@@@@@@@@@@O.@#o", "@@@@@@@@@@@O.@#o", "@@@@@@@@@@@O.@#o", "o#@@##ooooooOoo@", "o#@@##oooooOoOo@", "o#@@##ooooOoOoo@", "o#@@##oooOoOoooO", "o#@@##ooOoOoooOO", "o#@@##oOoOoooOOO", "o#@@##OoOoooOOOO", "o#@@##oOoooOOOOO", "o#@@##OoooOOOOOO", "o#@@##oooOOOXOOO", "o#@@##ooOOOOOOOO", "o#@@##oOOOOOOOOO", "@@@@@@@.........", "@@@@@@@@........", "o#@@#####$$$$$$$", "oo@@oooooooooooo", "@@@@@@@@@@@@@@O@", "@@@@@@@@@@@@@@O@", "@@@@@@@@@@@@@@O@", "OOOOOOOOOOOOOOO@", "OOOOOOOOOOOOOO@@", "OXOOOXOOOXOOO@@@", "OOOOOOOOOOOO@@@@", "OOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOO", "XOOOXOOOOOOOOOOO", "OOOOOOOOOOOOOOOO", "OOOOOOOXOOOOOOOO", "................", "................", "$$$$$$$$$$$$$$$$", "oooooooooooooooo", "@@@@@@@@@@@O.@#o", "@@@@@@@@@@@O.@#o", "@@@@@@@@@@@O.@#o", "@@@@@@@@@@@O.@#o", "@@@@@@@@@@@O.@#o", "@@@@@@@@@@@O.@#o", "@@@@@@@@@@@O.@#o", "OOOOOOOOOOOO.@#o", "OOOOOOOOOOO$.@#o", "OOOOOOOOOO$$.@#o", "OOOOOOOOO$$$.@#o", "OOOOOOOO$$$$.@#o", ".............@@@", ".............@@@", "$$$$$$$$$$$$.@$o", "oooooooooooo.@oo", " OOOOOO", "ooooooooo&O@@@@@", "o &OO@@@@@", "o &X&O@@@@@", "o &O&OO@@@@@", "o &O&O&O@@@@@", "o &O&O&OO@@@@@", "o &O&O&O&O@@@@@", "o O&O&O&OO@@@@@", "o &O&O&O&O@@@@@", "o O&O&O&OOOOOOO", "o &O&O&O&OOOOOO", "o O&O&O&OOOOOOO", "o &O&O&O.......", "o O&O&O&.......", "o &O&O&O.......", "OOOOOO ", "@@@@@Ooooooooooo", "@@@@@O ", "@@@@@O ", "@@@@@O .", "@@@@@O &.", "@@@@@O .&.", "@@@@@O &...", "@@@@@O .&.&.", "@@@@@O &...&.", "OOOOOO .&.&.&.", "OOOOO &...&...", "OOOO + .&.&.&.&.", "...+++&...&...&.", "...+++&.&.&.&.&.", "...+++..&.&.&...", " ", "oooooooooooooooo", " o", "&&&&&&&&&&&&&& o", "&............& o", "&@@@@@@@@@@@.& o", "&@@@@@@@@@@@.& o", "&@@@@@@@@@@@.& o", "&@@@@@@@@@@@.& o", "&@@@@@@@@@@@.& o", "&@@@@@@@@@@@.& o", "&@@@@@@@@@@@.& o", "&@@@@@@@@@@@.& o", "&@@@@@@@@@@@.& o", "&@@@@@@@@@@@.& o", "&@@@@@@@@@@@.& o", "o O&O&O&...&OOO", "o &O&O&O..&O...", "o O&O&O&.&O&@@@", "o &O&O&O&O&O@@@", "o O&O&O&O&O&@@@", "o &O&O&O&O&O@@@", "o O&O&O&O&O&@@@", "o &O&O&O&O&O@@@", "o O&O&O&O&O&@@@", "o &O&O&O&O&O@@@", "o O&O&O&O&O&@@@", "o &O&O&O&O&O@@@", "o O&O&O&O&O&@@@", "o &O&O&O&O&O@@@", "o O&O&O&O&O&@@@", "o &O&O&O&O&O@@@", "OOOOOOOOOO&.&.&.", ".........O&...&.", "@@@@@@@@.O&.&.&.", "@@@@@@@@.O..&...", "@@@@@@@@.O&.&.&&", "@@@@@@@@.O&...&&", "@oooo@@@.O&.&&&&", "oo@@oo@@.O&.&&&&", "oo@@@@@@.O&&&&&&", "oo@@@@@@.O&&&&&o", "oo@@@@@@.O&&&&oo", "oo@@oo@@.OXXXooo", "@oooo@@@.OXXXooo", "@@@@@@@@.OXXXooo", "@@@@@@@@.OXXXooo", "@@@@@@@@.OXXXooo", "&@@@@@@@@@@@.& o", "&@@@@@@@@@@@.& o", "&&&&&&&&&&&&&& o", "&&&&&&&&&&&&& o", "&&&&&&&&&&&& o", "&&&&&&&&&&&++ o", "&&&&&&&&&&+++ o", "&oOOOOOOOOOOOOOo", "oo@@@@@@@@@@@@Oo", "oo@@@@@@@@@@@@Oo", "oo@@@@@@@@@@@@Oo", "oo@@@@@@@@@@@@Oo", "oo@@@@@@@@@@@@Oo", "oo@@@.@.@@@@@@Oo", "oo@@@@@@@@@@@@Oo", "oo@@@.@.@@@@@@Oo", "o O&O&O&O&O&@@@", "o &O&O&O&O&O@@@", "o O&O&O&O&O&@@@", "o &O&O&O&O&OOOO", "o O&O&O&O&OOOOO", "o &O&O&O&OOOXOX", "o O&O&O&OOOOOOO", "o &O&O&OOOOXOXO", "o O&O&OOOOOOOOO", "o &X&OOOOOXOOOO", "o O&OOOXXOOXOXX", "o &OOOOOOOOOOOO", "o OOOOOOOOOOOOO", "o ++++++++++++", "o +++++++++++", "ooooooOOOOOOOOOO", "@@@@@@@@.OXXXooo", "@@@@@@@@.OXXXooo", "@@@@@@@@.OXXXooo", "OOOOOOOOOOXXXooo", "OOOOOOOOOXXXXooo", "OOXOOXOOXXXXXooo", "OOOOOOOXXXXXXooO", "OOXOOOXXXXXXXoOO", "OXOOOOOOOOOOOOOO", "OOOOOOOOOOXOOOOO", "OXXOXOXOOOOOXXOO", "OOOOOXOOOOOOOOOO", "OOOOOOOOOOOOOOOO", "++++++++++++++++", "++++++++++++++++", "OOOOOOOOOOOOOOOO", "oo@@@@@@@@@@@@Oo", "oo@@@@@@@@@@@@Oo", "oo@@@@@@@@@@@@Oo", "ooOOOOOOOOOOOOOo", "oOOOOOOOOOOOOO o", "OXOOOOOOXOOOO+ o", "OOOOXXOOOOXO++ o", "OOXXOOOOXOO+++ o", "OOOOOOOOOO++++ o", "XOOOOOOXO+++++ o", "OXOXOOOO++++++ o", "XOOOOOO+++++++ o", "OOOOOO++++++++ o", "++++++++++++++ o", "++++++++++++++ o", "OOOOOOOOOOOOOOoo", "oooooooooooooooo", "o###############", "o###############", "o#$##+++++++++++", "o###o++ ", "o##oo+ + ", "o##oo+ ++++++++", "o##oo+ + + +", "o##oo+ + ++++++", "o##oo+ + + ++.+", "o##oo+ + + ++.+", "o##oo+ + + ++.+", "o##oo+ + + ++.+", "o##oo+ + + ++.+", "o##oo+ + ++++++", "o##oo+ + +....+", "oooooooooooooooo", "##$#############", "################", "+++#@@@@@@@@@@@@", " +#@@@@@@@@@@@@", " ++#@@@@@@@@@@@@", "+++#&&&@@@@@@@@@", ".++#&&&@@@@@@@@@", ".++#@@@@@@@@@@@@", ".++$@@@@@@@@@@@@", ".++$@@@@@@@@@@@@", ".++$@@@@@@@@@@@@", ".++$OOO@@@@@@@@@", ".++$OOO@@@@@@@@@", ".++$@@@@@@@@@@@@", ".++$%%%@@@@@@@@@", "oooooooooooooooo", "###############o", "###############o", "@@@@@@@@#######o", "@@@@@@@@#$#####o", "@@@@@@@@#######o", "@@@@@@@@####$##o", "@@@@@@@@#######o", "@@@@@@@@#######o", "@@@@@@@@#######o", "@@OOOX@@#######o", "@@OOOX@@##$####o", "@@@@@@@@###$###o", "@@@@@@@@#######o", "@@@@@@@@#######o", "@@@@=========##o", "o##oo+ ++++++++", "o##oo+ ........", "o##oo+ ++++++++", "o##oo+ +++++++++", "o##oo+++++++++++", "o##ooOOOOOOOOOOO", "o##oOOOOOOOOOOOO", "o###$$$$$$$$$$$$", "@@@@@...........", "@@@@@@@@@@@@@@@@", "@@@-@@@-@@@-@@@-", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "o########@@@@###", "o########@@@@@@@", "o########@@@@@@@", ".++$%%%@@@@@@@@@", "+++$@@@@@@@@@@@@", "+++$ooo@@oooo@@@", "+++$ooo@oo@@oo@@", "+++$@@@@oo@@@@@@", "OO$$@@@@oo@@@@@@", "O$$$##@@oo@@@@##", "$$$$##@@oo@@oo@@", "....@@@@@oooo@@@", "@@@@@@@@@@@@@@@@", "@@@-@@@-@@@-@@@-", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "################", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@=%%%%%%%=###o", "@@=%%%%%%%=####o", "@=========#####o", "@@@@--@@#######o", "@@@--@@@#######o", "@@--@@@@#######o", "#--###########$o", "@@.@@@@@@@@@@@@@", "@@@.@@@@@@@@@@@@", "@@@@.@@@@@@@@@@@", "@@.@...@.@@-@@@@", "@@@.......@@@@@@", "@@@@@@@@@@@@@@@@", "##@@@@#########o", "@@@@@@#########o", "@@@@@@#########o", "o########@@@@@@@", "o#####$##@@@@@@@", "o#########@@@@@@", "o###############", "o##$############", "o###############", "o###############", "o##########$####", "o#######$#######", "o#######$#######", "o###############", "o###############", "o####$##########", "o###############", "o###############", "oooooooooooooooo", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "################", "##@@@@@@@@@@@@@@", "#&XXXXXXXXXXXXXX", "&&..............", "&&..............", "&&..............", "&&..............", "&&..............", "&&@@@@@@@@@@@@@@", "&&&&&&&&&&&&&&&&", "&&&&&&&&&&&&&&&&", "#$$$$$$$$$$$$$$$", "oooooooooooooooo", "@@@@@@##$######o", "@@@@@##########o", "@@@@#######$###o", "###############o", "@@@############o", "XX@############o", ".X@######$#####o", ".X@############o", ".X@############o", ".X@$###########o", ".X@$####$######o", "@@@$###########o", "&&$$###########o", "&$$$###########o", "$$$$###########o", "oooooooooooooooo", "oooooooooooooooo", "o ", "o ", "o $ ", "o $ $ ", "o ", "o ", "o $ ", "o ", "o $ $ ...", "o .##", "o .##", "o $ .##", "o .##", "o .##", "o $ $ .##", "oooooooooooooooo", " ", " $ ", " $ ", " oooooooo", " $ oo.......", " oOo.......", " oooo.......", " OoOo...X.X.", ".... oooo...XXXX", "#### OoOo...X.X.", "#### oooo.......", "#.. OoOo.......", "#. oooo.......", "#. OoOoooooooo", "#. oooOO.O.O.O", "oooooooooooooooo", " o", " $ o", " o", "oooooooooooo o", "...........o o", "...........o o", "...........o o", "X..........o o", "X..........o o", "X..........o+ o", "...........o+ o", "...........o+ o", "...........o+ o", "oooooooooooo+ o", ".O.O.O.O.OO++ o", "o .##", "o .##", "o $ $ .##", "o .##", "o .##", "o .##", "o $ .......", "o %.......", "o %%...%.%.", "o $ %%%.......", "o %%%%...%.%.", "o %%%%.......", "o %%%%...%.%.", "o %%%%.......", "o %%%%...%.%.", "o %%%%.......", "#. .OoOOOOOOOOO", "#. oOO.O.O.O.O", "#. ++++++++++", "#. +++++++++", "#. ++++++++", "#. @@@@@@@@", "....... @@@@@@@@", "....... @@@oooo@", "%.%.%.. @@oo@@oo", "....... @@oo@@@@", "%.%.%.. @@oo@@@@", "....... @@oo@@@@", "%.%.%..+@@oo@@oo", ".......+@@@oooo@", "%.%.%..+@@@@@@@@", ".......+@@@@@@@@", "OOOOOOOOOO+++ o", ".O.O.O.OO++++ o", "+++++++++++++ o", "+++++++++++++ o", "+++++++++++++ o", "@@@@@@ o", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@ o", "@@@@@@ o", "@@@@@@ o", "o %%%%...%.%.", "o %%%%.......", "o $ %%%%...%.%.", "o %%%%.......", "o %%%%...%.%.", "o %%%%.......", "o $ %%%%.......", "o %%%%.......", "o %%%%@@@@@@@", "o %%%@@X@@X@@", "o %%@@@@@@@@X", "o $ %@@@@@@@@X@", "o ++++++++++", "o +++++++++", "o ++++++++", "oooooooooooooooo", "%.%.%..+@@@@@@@@", ".......+@@@@@@@@", "%.%.%..+@@@@@@@@", ".......+@@@@@@@@", "%.%.%..+@@@@@@@@", ".......+@@@X@@@X", ".......+@@@X@@@X", ".......+@@@X@@@X", "@@@@@@++@@@@@@@@", "X@@@@+++ ", "@@@@++++ X $ ", "@@@+++++ ", "++++++++ ", "++++++++ ", "++++++++ $ ", "oooooooooooooooo", "@@@@@@ $ $ o", "@@@@@@ o", "@@@@@@ $ o", "@@@@@@ o", "@@@@@@ o", "@@@X@@ $ o", "@@@X@@ $ o", "@@@X@@ $ o", "@@@@@@ o", " o", " $ $ o", " o", " $ $ o", " o", " o", "oooooooooooooooo", "oooooooooooooooo", "o ", "o ", "o ", "o ", "o #........", "o ##@@@@@@@@", "o ###@@@@@@@@", "o ##.#@@@@@@@@", "o #####@@@@@@@@", "o #.###@@@@@@@@", "o ###.#@@@@@@@@", "o #####@@@@@@@@", "o #.###@@@@@@@@", "o ###.#@@@@@@@@", "o #####@@@@@@@@", "oooooooooooooooo", " ", " ", " #XXXXXXX", " ##.......", "......###.......", "@@@@@##.#.......", "@@@@#####.......", "@@@##.###.......", "@@#####.#.......", "@.#######......o", "@.#.#.###......o", "@.#####.#......o", "@.#######......o", "@.#.#.###......o", "@.#####.#.......", "oooooooooooooooo", " o", " o", "XXXXXXXXXXXX o", "...........X o", "...........X o", "...........X o", "...........X o", "...........X o", "oooo.......X o", "o..oo......X o", "o..........X o", "o..........X o", "o..........X o", "o..oo......X o", "oooo.......X o", "o #.###@@@@@@@@", "o ###.#@@@@@@@@", "o #####@@@@@@@@", "o #.###@@@@@@@@", "o ###.#@@@@@@@@", "o #####@@@@@@@@", "o #.###@@@@@@@@", "o ###.#@@@@@@@@", "o #####@@@@@@@@", "o #.###@@@@@@@@", "o ###.#@@@@@@@@", "o #####@@@@@@@@", "o #.###@@@@@@@@", "o ###.#@@@@@@@@", "o #####@@@@@@@@", "o #.###@@@@@@@@", "@.#######.......", "@.#.#.###.......", "@.#####.#.......", "@.#######.......", "@.#.#.###.......", "@.#######$$$$$$$", "@.######$$X$$$$$", "@.#.###$$$$$$$$$", "@.####$$X$X$X$$$", "@.###$$$$$$$$$$$", "@.##$$$$$$$$$$$$", "@.#$$$$$$$$$$$$$", "@.$$X$$$$$$$X$$$", "@.$$$$$$$$$$$$$#", "@.$$$X$$X$$$$$##", "@.$$X$$X$$X$$#$#", "...........X o", "...........X o", "...........X o", "...........X o", "...........X o", "$$$$$$$$$$$$ o", "$$$$$$X$$$$ o", "$$$$$$$$$$+ o", "X$$$X$$$$.+ o", "$$$$$$$$@X+ o", "$$X$$$$@@X+ o", "$$$$$$@@@X+ o", "#@@@@@@@@X+ o", "#@@@@@@@@X+ o", "#@@@@@@@@X+ o", "#@@@@@@@@X+ o", "o ###.#@@@@@@@@", "o #####@@@@@@@@", "o #.###@@@@@@@@", "o ###.#@@@@@@@@", "o #####@@@@@@@@", "o #.###@@@@@@@@", "o #####$$$$$$$$", "o ####$$.$$.$$.", "o ###$$$$$$$$$$", "o ##$.$$.$$.$$+", "o #$$$$$$$$$$++", "o ++++++++++++", "o +++++++++++", "o ++++++++++", "o ", "oooooooooooooooo", "@...........#$##", "@.++++++++++$###", "@.++++++++++#$##", "@.++++++++++$###", "@.++++++++++#$##", "@.++++++++++$###", "$$+ ++++++++####", "$ + +++++++$###", "+++ ++++++###$", "+++ +++++$#$$", "+++ ++++#$$$", "+++ +++", "+++ ++", "+++ +", " ", "oooooooooooooooo", "#@@@@@@@@X+ o", "#@@@@@@@@X+ o", "#@@@@@@@@X+ o", "#@@@@@@@@X+ o", "#@@@@@@@@X+ o", "#@@@@@@@@X+ o", "#$$$$$$$$$+ o", "$$$.$$$$$++ o", "$$$$$$$$+++ o", "$.$$.$$++++ o", ".$$$$$+++++ o", "+++++++++++ o", "+++++++++++ o", "+++++++++++ o", " o", "oooooooooooooooo", " ", " ", "oooooooooooooooo", "o@@--@@@@@@@@@@@", "o@@--@@@@@@@@@@o", "o@@--@@@@@@@@@oo", "o@@--@@@@@@@@ooo", "o@@--@@@@@@@oooo", "o@@--@@@@@@oooo%", "o@@--@@@@@oooo%o", "o@@--@@@@oooo%oo", "o@@--@@@oooo%ooo", "o@@--@@oooo%ooo%", "o@@--@@ooo%ooo%o", "o@@--@@oo%ooo%oo", "o@@--@@o%ooo%ooo", " ooooooooooooo", " ooXXXXXXXXXXXX", "oooo............", "oooo............", "oooo............", "oo%o............", "o%oo............", "%ooo............", "oooo..........oo", "oo%o.........oo.", "o%oo.........oo.", "%ooo.........oo.", "oooo.........oo.", "oo%o.........oo.", "o%oo..........oo", "%ooo............", "oooooooooooooooo", "XXXXXXXXXXXXXXXO", "..............XO", "..............XO", "..............XO", "..............XO", "..............XO", "..............XO", "oo............XO", ".oo...........XO", "..............XO", "..............XO", "..............XO", ".oo...........XO", "oo............XO", "..............XO", "o@@--@@oooo%ooo%", "o@@--@@ooo%ooo%o", "o@@--@@oo%ooo%oo", "o@@--@@o%ooo%ooo", "o@@--@@oooo%ooo%", "o@@--@@ooo%ooo%o", "o@@--@@oo%ooo%oo", "o@@--@@o%ooo%ooo", "o@@--@@oooo%ooo%", "o@@--@@ooo%ooo%o", "o@@--@@oo%ooo%oo", "o@@--@@o%ooo%ooo", "o@@--@@oooo%ooo%", "o@@--@@ooo%ooo%o", "o@@--@@oo%ooo%oo", "o@@--@@o%ooo%ooo", "oooo............", "oo%o............", "o%oo............", "%ooo............", "oooo............", "oo%o............", "o%oo............", "%ooo............", "oooo............", "oo%o............", "o%oo............", "%oooOOOOOOOOOOOO", "oooXOOOXOOOXOOOX", "ooXOOOXOOOXOOOXO", "oXOOOXOOOXOOOXOO", "XOOOXOOOXOOOXOOO", "..............XO", "..............XO", "..............XO", "..............XO", "..............XO", "..............XO", "..............XO", "..............XO", "..............XO", "..............XO", "..............XO", "OOOOOOOOOOOOOOOO", "OOOXOOOXOOOXOOO ", "OOXOOOXOOOXOOO ", "OXOOOXOOOXOOOo ", "XOOOXOOOXOOO@o ", "o@@--@@oooo%oooX", "o@@--@@ooo%oooXO", "o@@--@@oo%oooXOO", "o@@--@@o%oooXOOO", "o@@--@@ooooXOOOo", "o@@--@@oooXOOOoo", "o@@--@@ooXOOOooo", "o@@--@@oXOOOoooo", "o@@--@@@....oooo", "o@@--@@@@...oooO", "o@@--@@@@@..ooOO", "o@@--@@@@@@.oOOO", "o-----------@@@@", "o------------@@@", "o@@--@@@@@@@@@..", "oooooooooooooooo", "OOOXOOOXOOOXOOOX", "OOXOOOXOOOXOOOXO", "OXOOOXOOOXOOOXOO", "XOOOXOOOXOOOXOOO", "....OOOXOOOXOOOX", "....OOXOOOXOOOXO", "....OXOOOXOOOXOO", "....XOOOXOOOXOOO", "OOOO............", "OOO.............", "OO..............", "O...............", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "................", "oooooooooooooooo", "OOOXOOOXOOO@@o ", "OOXOOOXOOO.@@o ", "OXOOOXOOO..@@o ", "XOOOXOOO...@@o ", "OOOXOOO....@@o ", "OOXOOO.....@@o ", "OXOOO......@@o ", "XOOO.......@@o ", "...........@@o ", "...........@@o ", "...........@@o ", "...........@@o ", "@@@@@@@@@@@--o ", "@@@@@@@@@@@--o ", "...........@@o ", "oooooooooooooo ", " #XXXXXXX", " ##.......", "oooooo###.......", "o----####.......", "o---#####.......", "o--######.......", "o--######......#", "o--######$$$$$##", "o--#####$$$$$###", "o--####$$$$$####", "o--###$$$$$###%#", "o--##$$$$$######", "o--#$$$$$###%###", "o-------########", "o------###%###%#", "o-----##########", "X ###########", "X ##..........", "Xoo###..........", "X-####..........", "X###%#..........", "######..........", "##%###..........", "######..........", "%###%#..........", "######..........", "##%###.........o", "######.........o", "%###%#.........o", "######.........o", "##%###.........o", "######..........", "################", "...............#", "...............#", "...............#", "...............#", "...............#", "...............#", "...............#", "...............#", "oooo...........#", "o..oo..........#", "o..............#", "o..............#", "o..............#", "o..oo..........#", "oooo...........#", "o----###%###%###", "o---############", "o---##%###%###%#", "o---############", "o---####%###%###", "o---############", "o---##%###%###%#", "o---############", "o---####%###%###", "o---############", "o---##%###%###%#", "o---############", "o---####%###%###", "o---############", "o---##%###%###%#", "o---###########$", "%###%#..........", "######..........", "##%###..........", "######..........", "%###%#..........", "######..........", "##%###..........", "######..........", "%###%#$$$$$$$$$$", "#####$$$$$$$$$$$", "##%#$$$$$$$$$$$$", "###$$$$$$$$$$$$$", "%#$$$$$$$$$$$$$$", "#$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "...............#", "...............#", "...............#", "...............#", "...............#", "...............#", "...............#", "...............#", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$ ", "$$$$$$$$$$$$$$ ", "$$$$$$$$$$$$$o ", "$$$$$$$$$$$$-o ", "$$$$$$$$$$$--o ", "$$$$$$$$$$---o ", "$$$$$$$$$----o ", "o---####%###%#$$", "o---#########$$$", "o---##%###%#$$$$", "o---#######$$$$$", "o---####%#$$$$$$", "o---#####$$$$$$$", "o---##%#$$$$$$$$", "o---###$$$$$$$$$", "o---##$$$$$$$$$$", "o---#$$$$$$$$$$$", "o---------------", "o---------------", "o---------------", "o---------------", "o---------------", "oooooooooooooooo", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$-", "----------------", "----------------", "----------------", "----------------", "----------------", "oooooooooooooooo", "$$$$$$$$-----o ", "$$$$$$$.#----o ", "$$$$$$..#----o ", "$$$$$...#----o ", "$$$$#####----o ", "$$$%#%##-----o ", "$$#####--X--Xo ", "$----#--X--X-o ", "----X--X--X--o ", "-------------o ", "-------------o ", "-------------o ", "-------------o ", "-------------o ", "-------------o ", "oooooooooooooo ", "oooooooooooooooo", "o ", "o XX", "o oXXXXXXXXXX.", "o oo........XX.", "o oOo........XX.", "o ooo........XX.", "o oOo........XX.", "o ooo........XX.", "o oOo........XX.", "o ooo........XX.", "o oOo........XX.", "o ooo........XXO", "o oOoOOOOO====OO", "o oo.O.OO====O@@", "o oOOOOO====OOOO", "oooooooooooooooo", " ", "XXXXXX ", ".....XXXXXXXXX--", ".....X......----", ".....X......----", ".....X......----", ".....X......----", ".....X......----", ".....X......----", ".....X......----", ".....X......----", "OOOOOO......--..", "OOOOO&&@@@@@$$&$", "@@@@&&@.@.@$$$$$", "OOO&&@@@@@$$$.$$", "oooooooooooooooo", " o", "-@ o", "-@@XXXXXXXXXX o", "-@@@@.......X o", "-@@@@.......X o", "-@@@@.......X o", "-@@@@.......X o", "-@@@@.......X o", "-@@@@.......X o", "-@@@@.......X o", "..@@@.......X o", "....@.......X o", "&$&$$@@@@@@@@ o", "$$$$@@.@.@.@ o", ".$$@@.@@@@@+ o", "o XXXXXXXXXXXXX", "o +..+++++..++", "o @...@...@...@", "o .@...@...@...", "o ..@...@...@..", "o .............", "o# .............", "o ...@...@...oo", "o ..@...@...oo.", "o .@...@....oo.", "o ..........oo.", "o ..........oo.", "o @...@.....oo.", "o .@...@.....oo", "o ..@...@......", "o ....", "XXXXXXXXXXXXXXXX", "+++++..+++++..++", "...@...@...@....", "@...@...@...@...", ".@...@...@...@..", "................", "................", "oo....@...@..@..", ".oo..@...@....@.", "....@...@......@", "................", ".............@..", ".oo....@......@.", "oo....@........@", ".....@..........", "... ..@....@..", "XXXXXXXXXX++ o", "++++++++++++ o", "++++++++++++ o", " o", " X X o", " oOOOOOOO o", " oo......O o", " oo......O o", " oo......O o", " oo......O o", " oo......O o", "...oo......O o", "...oo......O o", "...oo......O o", " oo......O o", " ooOOOOOOO o", "o # ### ...*", "o # .....", "o ......", ".............*..", "................", "..........*.....", "............... ", ".............. ", "o ", "o ", "o ", "o ", "o ", "o ", "o ", "oooooooooooooooo", "... .@......@.", "... @........@", "... ..........", ".. ..@....@..", ". .@......@.", " @........@", " ..@.......", " .@.....@..", " # @.......@.", " # .........@", " ", " ", " ", " # ", " ", "oooooooooooooooo", " oOOOOOOO+ o", " ++++++++ o", " oOOOO o", " oo...O o", " oo...O o", " oo...O o", "...oo...O o", "...oo...O o", "...ooOOOO o", " oOOOO+ o", " +++++ # o", " o", "# # o", "# ## o", " o", "oooooooooooooooo", "oooooooooooooooo", "o###############", "o###############", "o$###$###--@@@##", "o######----@@@..", "o##$##------@...", "o####-------@.-X", "o####-------@-XX", "o###------@@@XXX", "o###---@@@@@@.XX", "o##o-@@@@@@@..XX", "o##o@@@@@@@@..XX", "o##o@@@@@@@....X", "o##oo@@@@@@.....", "o##Xo@@@@@......", "o###oo@@@@......", "oooooooooooooooo", "#$##########$###", "################", "######$#####$###", "################", "X@@@@@@@@@@@@@@@", "XX..............", "XXX.............", "XXX....@X@X.....", "XXX....@X@X.....", "XXX....@X@X.....", "XXX....@X@X.....", "XXX.............", "XXX.............", ".XX.............", "..X.............", "oooooooooooooooo", "###############o", "####$##########o", "########$##$###o", "###############o", "@@@@@@@@@@@@@##o", "............@##o", "............@##o", "............@##o", "....@X......@##o", "....@X......@##o", "....@X......@##o", "............@$#o", "............@$#o", "............@$#o", "............@$#o", "o###ooo@@.......", "o#$##XoOO......O", "o$$$##oOOOOOOOOO", "o$$$###$OXOOXOOO", "o#######$$$$$$$$", "@@@@@@@@@.......", "@@@@@@@@@@@.....", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "oXXXXXXXXXXXXXXX", "o####$$$$#######", "o###$$$$#$######", "o#$$$$$$$$$#@...", "o##$$$$$$$#@OOOO", ".O.OOOOOOOOOOOOO", "O.OXOOXOOXOOXOOo", "O.OOOOOOOOOOOOoo", ".OOOOOXXOOXXOooo", "$$$$$$$$$$$$$ooX", ".........$$$$ooo", "..........$$$ooo", "@@@@@@@@@@@##ooX", "@@@@@@X========o", "@@@@@@X========o", "@@@@@@X========o", "XXXX@@X========o", "####X@X========o", "####X@X========o", "####X@XXXXXXXXoX", ".###X@@@@@@@@ooo", "o....oooo...@$#o", "o...oo..oo..@$#o", "o...oo......@$#o", "o...oo......@$#o", "o...oo......@$#o", "o...oo..oo..@$#o", "o....oooo...@$#o", "o...........@$#o", "o...........@$#o", "o...@X......@$#o", "o...@X......@$#o", "o...........@$#o", "o...........@$#o", "o...@X......@$#o", "o...@X......@$#o", "o...........@$#o", "o##$$$$$$#@ooooO", "o##$$$$$#@@ooooo", "o###$####@@ooooo", "o########@@ooooo", "o#########@@oooo", "o######$##@....X", "o###########...#", "o###$###########", "o#############$#", "o########$#$#$$$", "o############$$$", "o######$###$$$$$", "o###$#######$$$$", "o###############", "o###############", "oooooooooooooooo", "O.##X@@@@@@@@ooo", "O.##X@@@@@@@@XoX", "O.##X@@@@@@@@Xoo", "OX##X@@@@@@@@ooo", "X###X@@@@@@@@ooX", "####X@@@@@@@@ooo", "####X@@@@@@@@Xoo", "#$##X@@@@@@@@XoX", "$$##X@@@@@@@@ooo", "####X@@@@@@@@ooo", "$###X@@@@@@@@ooO", "$###X@@@@@@@@oOO", "$###X@@@@@@@@#$$", "####X@@@@@@@@##$", "####X@@@@@@@@###", "ooooo@@@@@@@@ooo", "o...........@$#o", "o...@X......@$#o", "o...@X......@$#o", "o...........@$#o", "o...........@$#o", "o...........@$#o", "o...........@$#o", "o...........@$#o", "oOOOOOOOOOOOO$#o", "OOOOOOOOOOOO$$#o", "OOOOOOOOOOO$$$#o", "OOOOOOOOOO$$$$#o", "$$$$$$$$$$$$$$#o", "$$$$$$$$$$$$$$#o", "###############o", "oooooooooooooooo", "oooooooooooooooo", "o@-@@@@@@@@@@@$@", "o@-@@$@@$@@@@@@o", "o@-@@@@@@@@@@@oo", "o------#$----ooo", "o-----#$$---oXoo", "o@-@@@$$@@@ooooo", "o@-@@+@@@@oXoXoo", "o$-@+##@#ooooooo", "o@-@@@@@oXoXoXoo", "o@-@#@@ooooooooo", "o@-@@@oXoXoXoXoo", "o$-@#ooooooooooo", "o@-@oXoXoXoXoXoo", "o@-ooooooooooooo", "o@-ooXoXoXoXoXoo", "oooooooooooooooo", "$@@@@@@@@$@$$@@@", "OOOOOOOOOOO@@@@@", "XXXXXXXXXXO@@@@@", ".........XO-----", ".........XO-----", ".........XO#@@@o", ".........XO@@#oX", "..oooo...XO@#ooo", ".oo..oo..XO@oXoX", ".oo......XOooooo", ".oo......XOXoXoX", ".oo......XOooooo", ".oo..oo..XOXoXoX", "..oooo...XOooooo", ".........XOXoXoX", "oooooooooooooooo", "@@@@@@@$$@$@@@@o", "@@@oOOOOOOOOOOOo", "@@ooXXXXXXXXXXOo", "-ooo.........XOo", "oXoo.........XOo", "oooo.........XOo", "oXoo.........XOo", "oooo.........XOo", "oXoo.........XOo", "oooo.........XOo", "oXoo.........XOo", "oooo.........XOo", "oXoo.........XOo", "oooo.........XOo", "oXoo.........XOo", "o@-ooooooooooooo", "o@-ooXoXoXoXoXoo", "o@-ooooooooooooo", "o$-ooXoXoXoXoXoo", "o@-ooooooooooooo", "o@-ooXoXoXoXoXoo", "o$-ooooooooooooo", "o@-ooXoXoXoXoXoo", "o@-ooooooooooooo", "o@-ooXoXoXoXoXoo", "o@-ooooooooooooo", "o@-ooXoXoXoXoXoo", "o$-ooooooooooooo", "o@-ooXoXoXoXoXoO", "o@-oooooooooooOO", "o$-ooXoXoXoXoOOO", ".........XOooooo", ".........XOXoXoX", ".........XOooooo", ".........XOXoXoX", ".........XOooooo", ".........XOXoXoX", ".........XOooooo", ".........XOXoXoX", ".........XOooooo", ".........XOXoXoX", ".........XOooooo", ".........XOXoXoX", "OOOOOOOOOOOooooo", "OOOOOOOOOO@ooXoX", "XOXOXOOOO@@ooooo", "OOOOOOOO@@@ooXoX", "oooo.........XOo", "oXoo.........XOo", "oooo.........XOo", "oXoo.........XOo", "oooo.........XOo", "oXoo.........XOo", "oooo.........XOo", "oXoo.........XOo", "oooo.........XOo", "oXoo.........XOo", "oooo.........XOo", "oXoo.........XOo", "ooooOOOOOOOOOOOo", "oXoOOOOOOOOOOO.o", "ooOOXOXOXOOOO@.o", "oOOOOOOOOOOO@@.o", "o@-oooooooooOOXO", "o@-ooXoXoXoOOOOO", "o@-oooooooOOXOXO", "o@-ooXoXoOOOOOOO", "o@-oooooOOOOOOOO", "o$-ooXoo@@@@@@@@", "o@-ooooo@@@@@@@@", "o@-ooXoo@@@@@@@@", "o$-ooooooooooooo", "o$-ooXoOOOOOOOOO", "o@-oooOOOOOOOOOO", "o@-ooOOOOOOOOOO.", "o@-oOOOOOOOOOO..", "o---@@@@@@@@@@@@", "o@-@$...........", "oooooooooooooooo", "XOXOOOO@@@@ooooo", "OOOOOO@@@@@ooXoO", "XOOOO@@@@@@oooOO", "OOOO@@@@@@@ooOOO", "OOOoooooooooOOOO", "@@@@$$&$$OO@@@@@", "@@@$$&$$OOOO@@@@", "@@$$&$$OOOOOO@@@", "oo$&$$OOOOOOOooo", "O.....OOOOOOOOOO", "....$..OOOOOOOOO", "..$.....OOOOOOOO", ".........OOOOOOO", "@@@@@@@@@@@@@@@@", "................", "oooooooooooooooo", "OOXOXOXOOOO.@@.o", "OOOOOOOOOO..@@.o", "XOXOXOOOO...@@.o", "OOOOOOOO..$.@@.o", "OOOOOOO.$$..@@.o", "@@@@@@o.$.$.@@.o", "@@@@@@o...$.@@.o", "@@@@@@o.$$..@@.o", "ooooooo.$$..@@.o", "OOOOOO......@@.o", "OOOOO.......@@.o", "OOOO........@@.o", "OOO@@@@@@@@@@@@o", "@@@@@@@@@@@@@@@o", "...............o", "oooooooooooooooo", " ", " ", "oooooooooooooooo", "o#-#############", "o---------------", "o#-#############", "o#-#############", "o#-#############", "o#-#############", "o#-####@-@@@@.-@", "o#-###@@--@@..--", "o#-##@@@----..-@", "o#-#@@@@---@..@%", "o#-@@@@@--@@@.%%", "o#-@@@@@-@@@@@%-", "o#-@@@@@-@@@@.%%", " %%%%%", " %%....", "ooooooooo%%%....", "########%%%%....", "-------%%-%%....", "######%%-%%%....", "#####%%%%%%%....", "####%%-%%-%%....", "###%%-%%-%%%....", "@@%%%%%%%%%%....", "@%%-%%-%%-%%....", "%%-%%-%%-%%%....", "%%%%%%%%%%%%....", "-%%-%%-%%-%%....", "%%-%%-%%-%%%....", "%%%%%%%%%%%%....", "%%%%%%%%%%%%%%%%", "..............@%", "..............@%", "..............@%", "..............@%", "....oooo......@%", "...oo..oo.....@%", "...oo.........@%", "...oo.........@%", "...oo.........@%", "...oo..oo.....@%", "....oooo......@%", "..............@%", "..............@%", "..............@%", "..............@%", "o#-@@@@@--@@..%%", "o#-@@@@@----..%-", "o#-@@@@@---@..%%", "o#-@@@@@--@@@.%%", "o#-@@@@@-@@@@@%-", "o#-@@@@@-@@@@.%%", "o#-@@@@@--@@..%%", "o#-@@@@@----..%-", "o#-@@@@@---@..%%", "o#-@@@@@--@@@.%%", "o#-@@@@@-@@@@@%-", "o#-@@@@@-@@@@.%%", "o#-@@@@@--@@..%%", "o#-@@@@@----..%-", "o#-@@@@@---@..%%", "o#-@@@@@--@@@.%%", "-%%-%%-%%-%%....", "%%-%%-%%-%%%....", "%%%%%%%%%%%%....", "-%%-%%-%%-%%@@@@", "%%-%%-%%-%%@@.@@", "%%%%%%%%%%@@.@@.", "-%%-%%-%%@@@@@@@", "%%-%%-%%@@.@@.@@", "%%%%%%%@@.@@.@@.", "-%%-%%@@@@@@@@@@", "%%-%%@@.@@.@@.@@", "%%%%@@.@@.@@.@@.", "-%%@@@@@@@@@@@@@", "%%@@.@@.@@.@@.@@", "%@@.@@.@@.@@.@@.", "@@@@@@@@@@@@@@@@", "..............@%", "..............@%", "..............@%", "@@@@@@@@@@@@@@@%", ".@@.@@.@@.@@.@o%", "@@.@@.@@.@@.@$o%", "@@@@@@@@@@@@.$o%", ".@@.@@.@@.@..$o%", "@@.@@.@@.@...$o%", "@@@@@@@@@.@..$o%", ".@@.@@.@.@@@.$o%", "@@.@@.@.@@@..$o%", "@@@@@@--@@...$o%", ".@@.@.----...$o%", "@@.@..---@...$o%", "@@@...--@@@..$o%", "o#-@@@@@-@@@@@--", "o#-@@@@@-@@@@.-@", "o#-@@@@@--@@..--", "o#-@@@@@----..--", "o#-@@@@@---@..--", "o#-@@@@@--@@@.--", "o#-@@@@@-@@@@@-@", "o#-@@@@@........", "o#-@@@@.X.X.X.X.", "o#-@@@..........", "o#-@@..X.X.X.X.X", "o#-@............", "o#-#$$$$$$$$$$$$", "o----@@@@@@@@@@@", "o#-###$$$$$$$$$$", "oooooooooooooooo", "----------------", "@@@.%@@@@.%@@@@.", "@@..%%@@..%%@@..", "--..%%%%..%%%%..", "-@..%%%@..%%%@..", "@@@.%%@@@.%%@@@.", "@@@@%@@@@@%@@@@@", "................", "X.X.X.X..X.X.X.X", "................", ".X.X.XX.X.X.X.X.", "....XX..........", "$$$$$$$$$$$$$$$$", "@@@@@@@@@@@@@@@@", "$$$$$$$$$$$$$$$$", "oooooooooooooooo", "--....-@@@@@.$o%", "%@@@@.-@@@@..$o%", "%%@@..--@@...$o%", "%%%%..----...$o%", "%%%@..---@...$o%", "%%@@@.--@@@..$o%", "%@@@@@-@@@@@.$o%", ".............$o%", ".X.X.X.X.X..@$o%", "...........$@$o%", "X.X.X.X.X.$$@$o%", ".........$$$@$o%", "$$$$$$$$$$$$@$o%", "@@@@@@@@@@@@@@o%", "$$$$$$$$$$$$@$o%", "ooooooooooooooo%", " @@@@@ ", " @@@@@ ", " @@@@@ ", "oooooooo@@@@@ooo", "o-------@@@@@---", "o--==@##@@@@$$@@", "o--==@##@@@@$$@@", "o--==@##@@@@$$@@", "o--@@@@@@@@@@@@.", "o@@@@@@@@@@@@@..", "o@@@@@@**@@@@...", "o@@@@@@**@@@...@", "o@@@@@@**@@...@.", "o@@@@@@@@@...@..", "o--@@@@@@...@..@", "o--OO@@@...@..@.", " @@@@@@@@@", " .@........", " ..@--------", "oooo...@--------", "---...@@--------", "@@...@.@--------", "@...@..@--------", "...@..@@--------", ".@..@..@--------", "@..@..@@--------", "..@..@.@--------", ".@..@..@--------", "@..@..@@--------", "..@..@.@--------", ".@..@..@--------", "@..@..@@--------", "@@@@@@@@@@@@@@@@", "...............@", "--------------.@", "--------------.@", "--------------.@", "--------------.@", "--------------.@", "--------------.@", "--oooo--------.@", "-oo--oo-------.@", "-oo-----------.@", "-oo-----------.@", "-oo-----------.@", "-oo--oo-------.@", "--oooo--------.@", "--------------.@", "o--OO@@..@..@..@", "o--@@@..@..@..@.", "o----.....@..@..", "o----..@.@..@..@", "o----.@.@..@..@.", "o----@....@..@..", "o----..@.@..@..@", "o----.@.@..@..@.", "o----..@.@..@..@", "o----.@.@..@..@.", "o----@....@..@..", "o----..@.@..@..@", "o----.@.@..@..@.", "o----@....@..@..", "o----..@.@..@..@", "o----.@.@..@..@.", ".@..@..@--------", "@..@..@@--------", "..@..@.@--------", ".@..@..@--------", "@..@..@@--------", "..@..@.@--------", ".@..@..@--------", "@..@..@@--------", ".@..@..@--------", "@..@..@@@@@@@@@@", "..@..@....X..@X.", ".@..@....@......", "@..@..@.X..@X.@.", "..@.............", ".@..@.X..@X.@.X.", "@...............", "--------------.@", "--------------.@", "--------------.@", "--------------.@", "--------------.@", "--------------.@", "--------------.@", "--------------.@", "--------------.@", "@@@@@@@@@@@@@@@@", "..X..@X...X..@. ", ".@.......@.... ", "X..@X.@.X..@. ", "............o ", ".@X.@.X..@.-o ", "..........--o ", "o----..@.@..@..@", "o----.@.@..@..@.", "o----@....@..@..", "o----..@.@..@...", "o----.@.@..@..@.", "o----@....@.....", "o----..@.@..@.X.", "o----.@.@.......", "o----..@....X..@", "o----.@....@....", "o-X--@....X.X@X.", "o----...........", "o-------X---X---", "o--X------------", "o---------------", "oooooooooooooooo", ".......@X...X..@", "...@.......@....", "..X..@X...X..@X.", ".@.......@......", "X..@X.@.X..@X.@.", "................", ".@X.@.X..@X.@.X.", "................", "X......@X...X..@", "...XX......@....", "..XX.@X...X..@..", ".XX.............", "----------------", "----------------", "----------------", "oooooooooooooooo", "X...X..@..--o ", "...@....X.--o ", "..X..@.XX.--o ", ".@....XXX.--o ", "X..@.XXXX.--o ", "....XXXXX.--o ", ".@.XXXXXX.--o ", "..XXXXXXX.--o ", "..........--o ", ".........---o ", "........----o ", ".......----Xo ", "------------o ", "--------X-X-o ", "------------o ", "ooooooooooooo ", "oooooooooooooooo", "o ", "o X ", "o ", "o ", "o ", "o X", "o ", "o #############", "o ##@@@@@@@@@@@#", "o ##@@@@@@@@@@@#", "o ##@@@@@@@@@@@#", "o ##@@@@@@@@@@@#", "o ##@@@@@@@@@@@#", "o ##@@@@@@@@@@@#", "o ##############", "oooooooooooooooo", " ", " ooooooooooo", " oo@@@@@@@@@@", " ooo@@@@@@@@@@", " ooo@@@@@@@@@@", " ooo@@@@@@@@@@", " ooo@@@@@@@@@@", " ooooooooooooo", " ooOOOOOOOOOOO", " oOOOOXOOOXOOO", "................", "...&&&..........", "...&&&..........", "................", "................", "oooooooooooooooo", " o", "oooooooooooo o", "@@@@@@@@@@@o X o", "@@@@@@@@@@@o o", "@@@@@@@@@@@o o", "@@@@@@@@@@@o o", "@@@@@@@@@@@o.. o", "oooooooooooo.. o", "OOOOOOOOOOO... o", "OOOOOOXOOO.... o", ".............. o", "..........###. o", "..........###. o", ".............. o", ".............. o", "o #$$$$$$$$$$$$.", "o ..............", "o ..............", "o...............", "o...............", "o...............", "o...............", "o.............OO", "o.............OO", "o.............OO", "o...............", "o...............", "o...............", "o...............", "o...............", "o...............", "..........oooo..", ".........oo..oo.", ".........oo.....", ".........oo.....", ".........oo.....", ".........oo..oo.", "..........oooo..", ".&&.............", ".&&.............", ".&&.............", "................", "................", " ", "................", "................", "................", ".............. o", "........$$$... o", "........$$$... o", ".............. o", "..........OOO. o", "..........OOO. o", ".............. o", ".............. o", ".....$$....... o", ".....$$....... o", ".....$$....... o", ".............. o", " o", "............. o", ".............. o", "...............o", "o...............", "o...............", "o...............", "o ", "o ", "o ", "o X ", "o ", "o ", "o ", "o ", "o X ", "o ", "o ", "o ", "oooooooooooooooo", "................", "................", "................", " ", " -------", " --@@@@@@", " --@@@@@@", " --@@@@@@", " --@@@@@@", " --------", " -@@@@@@@", " +++++++", " ++++++", " ", " ", "oooooooooooooooo", "...............o", "...............o", "...............o", " ..o", "------ .o", "@@@@@- o", "@@@@@- o", "@@@@@-+ o", "@@@@@-+ o", "------+ o", "@@@@ ++ o", "+++++++ o", "+++++++ o", " o", " X o", "oooooooooooooooo", " #---", "ooooooooooo##-@@", "o ###-@@", "o ####-@@", "o # #####-@@", "o ###X##-@@", "o # ##XX##-@@", "o # ##X###-@@", "o ###X##-@@", "o ##XX##-@@", "o ##X###-@@", "o ###X##-@@", "o ###XX##-@@", "o ##X###-@@", "o ###X##-@@", "o ##XX##-@@", "----------------", "@@@@@@@@@@@@@@@.", "@@@@@@@@@@@@@--.", "@@@@@@@@@@@----.", "@@@@@@@@@------.", "@@@@@@@--------.", "@@@@@@---------.", "@@@@@----------.", "@@@@@---oooo---.", "@@@@@--oo--oo--.", "@@@@@--oo------.", "@@@@@--oo------.", "@@@@@--oo------.", "@@@@@--oo--oo--.", "@@@@@---oooo---.", "@@@@@----------.", "------------- ", "@@@@@@@@@@@@-ooo", ".@@@@@@@@@@@- o", "..@@@@@@@@@@- o", "...@@@@@@@@@- o", "....@@@@@@@@- o", "....@@@@@@@@- o", "....@@@@@@@@- o", "....@@@@@@@@- o", "....@@@@@@@@- o", "....@@@@@@@@- o", "....@@@@@@@@- o", "....@@@@@@@@- o", "....@@@@@@@@- o", "....@@@@@@@@- o", "....@@@@@@@@- o", "o ##X###-@@", "o ###X##-@@", "o ##XX##-@@", "o ##X###-@@", "o # ###X##-@@", "o ##XX##---", "o # ##X###$$$", "o #####$$$$", "o ####$$$$$", "o ###$$$$$$", "o ##$$$$$$$", "o # #$$$$$$$$", "o +++$$+++", "o +++++++", "o +++$++", "o +++++", "@@@@@----------.", "@@@@@----------.", "@@@@@--------@@@", "@@@@@------@@%%%", "@@@@@----@@%%%%%", "------X@@%%%%%%%", "$$$$$@@..*@..*@.", "$$$$$%..*@..*@..", "$$$$%..*@..*@..*", "$$$%..*@..*@..*@", "$$.@.*@..*@..*@.", "$..@*@@@*@@@*@@@", "...@@@@@@@@@@@@@", "...@@@@@@@@@@@@@", "................", "..@@@@@@@@@@@@@+", "....@@@@@@@@- o", "....@@@@@@@@- o", "....@@@@@@@@- o", "@...@@@@@@@@- o", "%@..@@@@@@@@- o", "%%@.--------- o", ".*@.$$$$$$$$$ o", "*@.$$$$$$$$$ o", "@.$$$$$$$$$+ o", ".$$$$$$$$$++ o", "$$$$$$$$$+++ o", "$$$$$$$$++++ o", "+++++++++++$ o", "++++++++++++ o", "++++++$+++++ # o", "+++$$+++++++ o", "o # ++++", "o # ", "o # ", "o -", "o --", "o # ---", "o # #$ ---", "o $$ # ---", "o # # ---", "o #$ $ -X-", "o -X-", "o -X-", "o # ---", "o ---", "o ---", "oooooooooooooooo", "...............+", ".@@@@@@@@@@@@@ ", "..............- ", "-------XXX------", "------XOOOX-----", "-----Xoo%OOX----", "-----Xo%o%OX----", "-----Xoo%oOX----", "-----XXoooX-----", "------XXXX------", "----------------", "----------------", "----------------", "----------------", "----------------", "oooooooooooooooo", "++++++++++++ o", " o", " o", " # o", "- # o", "-- ## o", "-- # $$ o", "-- #$ o", "-- ##$ o", "X- #$ o", "X- #$# o", "X- # o", "-- o", "-- o", "-- o", "oooooooooooooooo", "oooooooooooooooo", "o###############", "o###########----", "o##########--@@@", "o####$####-X-...", "o$#######--.-...", "o###$###-X-X-...", "o######--.-X-...", "o#####-X-X---...", "o####--.-X-X-...", "o###-X-X---X-...", "o##-XX-X-X-.-...", "o##-XX---X-X-...", "o##-XX-X-.-X-...", "o##-X--X-X---...", "o##--X-.-X-X-...", "oooooooooooooooo", "################", "------------####", "@@@@@@@@@@@-####", "..........@-@@@@", "..........@-XXXX", "..........@-....", "..........@-....", "..........@-....", "..........@-....", "..........@-....", ".......-----@@@@", "......@-@@@.@@..", "......@-@@.@@@@@", "......@-@.@@...@", "......@-.@@@@@@@", "oooooooooooooooo", "###############o", "###############o", "#####$#######$#o", "@@@@@@@@@@@@@##o", "XXXXXXXXXXXX@##o", "...........X@##o", "...........X@##o", "...........X@##o", "...........X@##o", "...........X@##o", "@@@@@@@@@@@@@##o", ".@@...@@...@###o", "@@@@@@@@@@@####o", "@...@@...@$$###o", "@@@@@@@@@$$$$##o", "o##-XX-X---X-...", "o##-X.-X-X-.-...", "o##-.X---X-X-..o", "o##-XX-X-.-X-..o", "o##-X--X-X-X-..o", "o##--X-.-X---..o", "o##-XX-X-X-X-..o", "o##-XX-X---X-...", "o##-X.-X-X-.-...", "o##-.X---X-X-...", "o##-XX-X-.-X-...", "o##-X--X-X---...", "o##--X-.-X-X-...", "o##-XX-X---X-...", "o##-X.-X-X-X-...", "o##-.X---X-.-...", "......@-$$$$$$$$", "oooo..@-$@OO@@@@", "o..oo.@-$@OO@@@@", "o.....@-$@OO@@@@", "o.....@-$@@@@@@@", "o.....@-$@@@@-%-", "o..oo.@-$@@@----", "oooo..@-$XX.----", "......@-$XX.----", "......@-$@@---%-", "......@-$@@-----", "......@-$@@-&&--", "......@-$@@-&&--", "......@-$@@-&&--", "......@-$$$#####", "......@-$$$#####", "$$$$$$$$$$$$$##o", "@@@@@@@&&@@$$##o", "@@@@@@@&&@@$$##o", "@@@@@@@&&@@$$##o", "@@@@@@@@@@@$$##o", "%-%-%-%----####o", "-----------####o", "-----------####o", "----------------", "%-%-%-%---------", "---------%--%--%", "-++-------------", "- -------------", "-++--------####o", "###############o", "############$$#o", "o##-XX-X-X-X-...", "o#$-X--X-.-X-...", "o##--X-X-X-X-...", "o##-XX-.-X-X-...", "o##-XX-X-X--@@@@", "o##-X.-X---@@XXX", "o##-.X-X--@@@@@@", "o##-XX---@@XXXX@", "o##-XX--@@@@@@@@", "o##-X--@@XXXX@XX", "o##---@@@@@@@@@@", "o##--@@XXXX@XX.@", "o##-@@@@@@@@@@@@", "o###$$$$$$$$$$$$", "o####$$$$$$$$$$$", "ooooooOOOOOOOOOO", "......@-@@@@@@@@", "......@-XXXXXXXX", "......@-........", "......@-........", "@@@@@@@@........", "X@XX.@@.........", "@@@@@@..........", "XX.@@...........", "@@@@@@@@@@@@@@@@", ".@@XXX.@XXXX@XXX", "@@@@@@@@@@@@@@@@", "@XXX.@XXXX@@XXXX", "@@@@@@@@@@@XXXX@", "$$$$$$$$$$$@@@@$", "$$$$$$$$$$$@@@@$", "OOOOOOOOOOO@@@@O", "@@@@@@@@####$$#o", "XXXXXXX@#$#+###o", "......X@##+####o", "......X@#######o", "......X@#####$#o", "......X@###$$$#o", "......X@###$$##o", "......X@###$$##o", "@@@@@@@@##+####o", "X@XXX@@##+#####o", "@@@@@@######$##o", "@@@@@$#########o", "@@@@$$$########o", "$$$$$$$$#######o", "$$$$$$$$#######o", "OOOOOOOOoooooooo", "Xooooooooooooooo", "XoXXXXXXXXXXXXXX", "Xo##############", "Xo##############", "Xo##############", "Xo###-XXXXXXXXXX", "Xo##--..........", "Xo#---..........", "Xo#---..........", "Xo#---........@@", "Xo#---@@@@@@@@@-", "Xo#--@@@@@@@@-@-", "Xo#-@@@@@@@-@-@-", "Xo##$$$$@-@-@-@-", "Xo###$$$@-@-@-@-", "Xo####$$@-@-@-@-", "oooooooooooooooo", "XXXXXXXXXXXXXXXX", "############@@@@", "##########@@@...", "########@@@-@...", "XXXXXX@@@-@-@...", "....@@@-@-@-@...", "..@@@-@-@-@-@...", "@@@-@-@-@-@-@...", "@-@-@-@-@-@-@...", "@-@-@-@-@-@-@...", "@-@-@-@-@-@-@...", "@-@-@-@-@-@-@...", "@-@-@-@-@-@-@...", "@-@-@-@-@-@-@...", "@-@-@-@-@-@-@...", "oooooooooooooooo", "XXXXXXXXXXXXXXXo", "@@@@@@@@@@@@##Xo", "...........@##Xo", "X.X.X.X.X.X@##Xo", "...........@##Xo", "..........X@##Xo", "...........@##Xo", "..........X@##Xo", "..oooo.....@##Xo", ".oo..oo...X@##Xo", ".oo........@##Xo", ".oo.......X@##Xo", ".oo........@##Xo", ".oo..oo...X@$#Xo", "..oooo.....@$#Xo", "Xo######@-@-@-@-", "Xo######@-@-@-@-", "Xo######@-@-@-@-", "Xo######@-@-@-@-", "@@@@@@##@-@-@-@-", "@@@@@@@#@-@-@-@-", "@@@@@@@#@-@-@-@-", "@@@@@@@#@-@-@-@-", "Xo##@@@#@-@-@-@-", "Xo##@@@#@-@-@-@-", "@@@@@@@#@-@-@-@-", "@@@@@@@#@-@-@-@-", "@@@@@@@#@-@-@-@-", "@@@@@@##-.......", "Xo#####--.......", "Xo####---.X.X.X.", "@-@-@-@-@-@-@...", "@-@-@-@-@-@-@...", "@-@-@-@-@-@-@...", "@-@-@-@-@-@-@...", "@-@-@-@-@-@-@...", "@-@-@-@-@-@-@...", "@-@-@-@-@-@-@...", "@-@-@-@-@-@-@@@@", "@-@-@-@-@-@-....", "@-@-@-@-@-@-@@@@", "@-@-@-@-@-@.....", "@-@-@-@-@-@@@@@@", "@-@-@-@-@-@.....", "....@-@-@-@@@@@@", "....@-@-@.......", "X.X.@-@-@@@@@@@@", "..........X@$#Xo", "...........@$#Xo", "X.X.X.X...X@$#Xo", "...........@$#Xo", "..........X@$#Xo", "...........@$#Xo", "...........@$#Xo", "@@@@@@@@@@@@$#Xo", "............$#Xo", "@@@@@@@@@@.$$#Xo", "...........$$#Xo", "@@@@@@@@@@.$$#Xo", "..........$$$#Xo", "@@@@@@@@@.$$$#Xo", "..........$$$#Xo", "@@@@@@@@.$$$##Xo", "Xo###----.......", "Xo##-----.......", "Xo##-----.......", "Xo##-----.......", "Xo##-----.......", "Xo##-----.X.X.X.", "Xo##-----.......", "Xo##-----.......", "Xo##-----@@@@@@@", "Xo##----@@@@@@@@", "Xo##---@@@X@@@@@", "Xo##--@@@@@@@@@@", "Xo##-@@@@@@@@@@@", "Xo###$$$$$$$$$$$", "XoooooOOOOOOOOOO", "XXXXXXXXXXXXXXXX", "....@-@-........", "..X.@-@-@@@@@@@@", "....@-@.........", "..X.@-@@@@@@@@@@", "....@-..........", "X.X.@-@@@@@@@@@@", "....@...........", "....@@@@@@@@@@@@", "@@@@............", "@@@@@@@@@@@@@@@@", "@@X@@@@@@@X@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "$$$$$$$$$$$$$$$$", "OOOOOOOOOOOOOOOO", "XXXXXXXXXXXXXXXX", ".........$$$##Xo", "@@@@@@@.$$$$##Xo", "........$$$###Xo", "@@@@@@@.$$$###Xo", ".......$$$$###Xo", "@@@@@@.$$$####Xo", ".......$$$####Xo", "@@@@@.$$$$####Xo", "......$$$#####Xo", "@@@@@$$$$#####Xo", "@@@@$$$$$#####Xo", "@@@$$$$$######Xo", "@@$$$$$$######Xo", "$$$$$$$$######Xo", "OOOOOOOOoooooooo", "XXXXXXXXXXXXXXXX", " ", " ", " %---------", "ooooo%%.@.@.@.@.", "o$$$%%%@@@@@@@@@", "o$$%%%%.@.@.@.@.", "o$%%%%%@@@@@@@@@", "o$%%%%%.@.@.@.@.", "o$%%%%%@@@@@@@@@", "o$%%%%%.@.@.@.@.", "o$%%%%%@@@@@@@@@", "o$%%%%%.@.@.@.@.", "o$%%%%%@@@@@@@@@", "o$%%%%%.@.@.@.@%", "o$%%%%%@@@@@@@%%", "o$%%%%%.@.@.@%%%", " %%", " %%XX", "----------%%....", "@.@.@.@.@-......", "@@@@@@@@-.......", "@.@.@..-........", "@@@@@@-.........", "@.@.@--.........", "@@@@%-..........", "@.@%%-.........o", "@@%%-.........oo", "@%%%-.........oo", "%%%%-.........oo", "%%%%-.........oo", "%%%%-.........oo", "%%%%-..........o", "%%%%%% ", "XXXXXX%% ", "......XX%% ", "........XX% ", "..........X% ", "...........X% ", "............X% ", "............X% ", ".............X% ", "ooo..........X% ", "..oo..........X%", "..............X%", "..............X%", "..............X%", "..oo..........X%", "ooo...........X%", "o$%%%%%@@@@@%%%%", "o$%%%%%.@.@%%%%%", "o$%%%%%@@@%%%%%%", "o$%%%%%.@%%%%%%%", "o$%%%%%.%%%%%%%%", "o$%%%%%%%%%%%%%%", "o$%%%%%%%%%%%%%%", "o$%%%%%%%%%%%%-%", "o$%%%%%%%%%%%%%%", "o$%%%%%%%%%%-%%-", "o$%%%%%%%%%%%%-%", "o$%%%%%%%%-%%-%-", "o$%%%%%%%%%%-%-%", "o$%%%%%%-%%-%-%-", "o$%%%%%%%%-%-%--", "o$%%%%-%%-%-%---", "%%%%-...........", "%%%%-...........", "%%%%%%..........", "%%-%%%..........", "%%%%-%%.........", "-%%-%-%.........", "%%-%-%-%........", "%-%-%---%.......", "-%-%---@-%%.....", "%-%---@-@@@%%...", "-%---@-@@@@-@%%%", "%---@-@@@@@@@@.@", "---@-@@@@-@@@.@.", "--@-@@@@@@@@.@..", "-@-@@@@-@@@.@...", "@-@@@@@@@@.@....", "..............X%", "..............X%", "..............% ", "..............% ", ".............% ", ".............% ", "............%o ", "...........%$o ", ".........%%X$o ", ".......%%X@X$o ", "%%%%%%%XX@@X$o ", ".....X.X@.@X$o ", "....X.X@@@@X$o ", "...X.X@.@.@X$o ", "..X.X@@@@@@X$o ", ".X.X@.@.@.@X$o ", "o$%%%%%%-%-%---@", "o$%%-%%-%-%---@-", "o$%%%%-%-%---@-@", "o$-%%-%-%---@-@@", "o$$%-%-%---@-@@@", "o$$-%-%---@-@@@@", "o$$%-%---@-@@@@-", "o$$$%---@-@@@@@@", "o$X$$--@-@@@@-@@", "o$$$$$@-@@@@@@@@", "o$XX$$$@@@@-@@@.", "oX%XX$$$@@@@@@.@", "oXX%X$$$$-@@@.@.", "o$XX$$X$$$$$.@..", "o$$$$$$$$$$$$$$$", "oooooooooooooooo", "-@@@@-@@@.@.....", "@@@@@@@@.@.....X", "@@@-@@@.@.....X.", "@@@@@@.@.....X.X", "@-@@@.@.....X.X@", "@@@@.@.....X.XX.", "@@@.@.....X.XXX@", "@@.@.....X.XXXXX", "@.@.....X.XXXX..", ".@.....X.XXXX...", "@.....X.X$XX..o.", ".....X.X$$X.....", "....XX$$$$$$$$$$", "...X$$$$$$X$$$$$", "$$$$$$$$$$$$$$$$", "oooooooooooooooo", "X.X@@@@@@@@X$o ", ".X@.@.@.@.@X$o ", "X@@@@@@@@@@X$o ", "@.@.@.@.@.@X$o ", "@@@@@@@@@@@X$o ", "@.@.@.@.@.@X$o ", "@@@@@@@@@@@X$o ", "XXXXXXXXXXXX$o ", "...........$$o ", "..........$$$o ", ".o..o....$$$$o ", "........$$$X$o ", "$$$$$$$$$$X$$o ", "X$$$$$$$$$$$$o ", "$$$$$$$$$$$$$o ", "oooooooooooooo ", "X***************", "X*XXXXXXXXXXXXXX", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "****************", "XXXXXXXXXXXXXXXX", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "****************", "XXXXXXXXXXXXXXX*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", " ", " X**** ", " XX**X ", " X** ", " X** ", " X** ", " X** ", " X** ", " X** ", " X** ", " X** ", " X**** ", " XXXXX ", " ", " ", " ", " X*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X* ", "X***************", "XXXXXXXXXXXXXXXX", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "****************", "XXXXXXXXXXXXXXXX", " X*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", " X*", "****************", "XXXXXXXXXXXXXXXX", "****************", "* %# %#", "* %-@ %-@", "* &&%-@. &&%-@.", "* -&%-@. -&%-@. ", "* -&-@.+ -&-@.+ ", "* -&X.X+ -&X.X+ ", "* -&&&&+ -&&&&+ ", "* -....%#-....%#", "* +++%-@ +++%-@", "* &&%-@. &&%-@.", "* -&%-@. -&%-@. ", "* -&-@.+ -&-@.+ ", "* -&X.X+ -&X.X+ ", "* -&&&&+ -&&&&+ ", "* -....+ -....+ ", "********@@@*****", " @@@ ", " @@@ ", " @@@ ", " @@@@ ", " @@@@ ", " @@@ -@@@", " @@ --@-@", " @@ ---@@@", " @@ -X-@@@", " @@@@@XX-@@@", " @@@@@@X.-@-@", " @@@@@@X.-@@@", " @@@ .-@...", " @@@ -@....", " @@@ @...-@", "****************", " *", " *", " *", " *", " *", "@@@@@ *", "@@@-@ *", "@@@@@ *", "@@@@@+ *", "@@@@@+ *", "@@@-@+ *", "@@@@@+ *", ".....+ *", "....@@@@ *", "@@@@@@@@ *", "* +++++ ++%%% ", "* %X..%", "* %XXX..", "* %%XXXX.", "* %%-XXXX.", "* %%---XX.%", "* %%---@@@@ ", "* %%---@@.. ", "* %---@@.. ", "* ---@@..@@@@", "* -@@..+++++", "* @..++++ ", "* +++++++ ", "* +++++++", "* ++++++", "* +++++", ". @@@ --@", " @@@ --@", "% @@@ --@", "% @@@@ -@.", "% @@@@@ @..", " @@@@@@@ ++", " @@@@ @@@ ", " @@ @@@ ", " @@@ ", "@@@@@+ @@@ %", "++++@+ @@@ %%", " @+ @ %%-", " @+ %%--", " @+ %%---", " @+ %%---@", " @+ %---@@", "@@@@@@@@ *", "-@@@@@@@+ *", "@@@@@@@@+ *", "........+ *", ".......++ *", "+++++++++ *", " *", " %%% *", "%X..% *", "XXX..% *", "XXXX.% *", "XXXX.% *", "-XX.% *", "@@@@ *", "@.. %%% *", ".. %X..% *", "* +++ ", "* ", "* ", "* ", "* ", "* -", "* -", "* -", "* -", "* -", "* @", "* ", "* ", "* ", "* ", "****************", " +@ -@-@@.", " +@ @-@@..", " +@ @+ @..+", " +@+ +++", "-@@@@ @+ +%", "-@@.@ @+ %%", "-@@@@@@@@@@@@@@@", "-@.@@+++++++++--", "-@@@@ -", "@....+ ", "....++ ", "++++++ ", " +++++ ", " ", " ", "****************", ". %XXX..% *", "++%%XXXX.% *", "+%%-XXXX.% *", "%%---XX.% *", "%---@@@@ *", "---@@.. *", "--@@.. *", "-@@.. *", "@@..++ *", "@..++++ *", " +++++++ *", " +++++++ *", " ++++++ *", " +++++ *", " +++ *", "****************", "****************", "* ", "* + ", "* ", "* @XXXXXXXXXX", "* @@++++++++++", "* @@@++++++++++", "* @@-@++++++++++", "* @@@@++++++++++", "* -@@@++++++++++", "* @@@@++++++++++", "* @@@@++++++++++", "* @@@@++++++++++", "* @@@@++++++++++", "* @@@@++++++++++", "* @@@@++++++++++", "****************", " ", " ", " ", "XXXXXXXX ", "+++++++X ", "+++++++X + @", "+++++++X + @", "+++++++X + @", "+++++++X @", "+++++++X ", "+++++++X ", "+++++++X ..", "+++++++X .....", "+++++++X -.....", "+++++++X --.....", "****************", " *", " *", " @@@@@ *", " @@.... *", "@@@@ @@.... *", "@... @@.... *", "@... @@.... *", "@... @....+ *", "...+ +++++ *", "++++.XX *", " ....XXXX *", ".....XXXXXX *", ".....XXXXXXXXX *", ".....XXXXXXXXX *", ".....XXXXXXXXX *", "* @@@@++++++++++", "* @@@@++++++++++", "* @@@@++++++++++", "* @@@@++++++++++", "* @@@@++++++++++", "* @@@@++++++++++", "* @@-@++++++++++", "* @@@@..........", "* -@@...........", "* @@..XX..XX..XX", "* @...X..XXXXX$.", "* ++++++++++$$+", "* .........$$.", "* @........$$.", "* @@@@@@@@@##@", "* @@@@@@@@@##@", "+++++++X --.....", "+++++++X --.....", "+++++++X --.....", "+++++++X %-.....", "+++++++X --...X.", "+++++++X --.....", "+++++++X --.....", "........ --.....", "....... --.....", "..XX..+ --.....", ".XXX.++ --.....", "+++++++ %-...X.", "......+ --.....", "......+ --.....", "@@@@@@ --.....", "@@@@@@ --.....", ".....XXXXXXXXX *", ".....XXXXXXXXX *", ".....XXXXXXXXX *", ".X...XXX.XXXXX *", ".....XXXXXX.XX *", ".....XXXXXXXXX *", ".....XXXXXXXXX *", ".....XXXXXXXXX *", ".....XXXXXXXXX *", ".....XXXXXXXXX *", ".X...XXX.XXXXX *", ".....XXXXXX.XX *", ".....XXXXXXXXX *", ".....XXXXXXXXX *", ".....XXXXXXXXX *", ".....XXXXXXXXX *", "* @@@@@@@@@==@", "* @@@@@@@@@@@@", "* @@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@+++@@@@@@", "@@@@@@@+++@@@@@@", "@@@@@@@@@@@@@@@@", "* ", "* ", "* o%%%%%% ", "* %%o%oo% ", "* %oo%o%% ", "* . . ", "*. . ", "****************", "@@@@@@ --.....", "@@@@@@ --.....", "@@@@@@ %-...X.", "@@@@@@ --.....", "@@@@@ --.....", "@@@@ --.....", "@@@ --.....", "@@ +--.....", " --.....", " OOOO %-.....", " OOOO --.....", " OOOO --...@@", "+ -@@@@@@", " @@@@@@@", " ++++++", "****************", ".....XXXXXXXXX *", ".X...XXX.XXXXX *", ".....XXXXXX.XX *", ".....XXXXXXXXX *", ".....XXXXXXXXX *", ".....XXXXXXXXX *", ".....XXXXXXXXX *", ".....XXXXXXXXX *", ".....XXXXXXXXX *", "....@@.XXXXXXX *", ".@@@@@@@.XXXXX *", "@@.......@.XXX *", "@.++XXX.@@@@@+ *", ".+++++.@@@@@++ *", "++++++++++++++ *", "****************", "****************", "* ", "* ---------", "* --@@@@@@@@", "* ---@@@@@@@@", "* ----@@@@@@@@", "* ----@@@@@@@@", "* ----@@@---@@", "* ----@@@...@@", "* ----@@@---@@", "* ----@@@...@@", "* ----@@@@@@@@", "* ----@@@@@@@@", "* ----@@@@@@@@", "* ----@@@@@@@@", "* ----@@@@@@@@", "****************", " ", "--- ", "@@- ---------", "@@- --=@@@@@@@", "@@------@@@@@@@@", "@--@@@@@@@-.-.-@", "@..@@@@@@@.....@", "@@@@@-.@@@-.-.-@", "@--@@@@@@@.....@", "@..@@-.@@@-.-.-@", "@@@@@@@@@@@@@@@@", "@@@@@-.@@@@@@@@@", "@@.@@@@@@@@@@@@@", "@@@@@-.@@@@@@@@@", "@@@@@@@@@@@@@@@@", "****************", " *", " *", "-------------- *", "@@@@@@@@@@@@=. *", "@@@@@@@@@@@@@. *", "@@@@@@@@@@@@@. *", "@@@@@@@@@@@@@. *", "@@@@@@@@@@@@@. *", "@@@@@@@@@@@@@. *", "@@@@@@@@@@@@@. *", "@@@@@@@@@@@@@.+*", "@@@@@@@@@@@@@.+*", "@@@@@@@@@@@@@.+*", "@@.X@@@@@@@@@.+*", "@.XXX@@@@@@@@.+*", "* X ----@@@@@@@@", "* ----@@@@@@@@", "* X ----........", "* ---.........", "* X --...XX@.XX@", "* -...XX@.XX@.", "* +..&&..XX..", "* ..&&..XX..", "* .....&&..XX..", "* .@@@@&&@@@@@@", "* .@@@@&&@@@@@@", "* .@@@@@@@@@@@@", "* .@@@@@@@@@@@@", "* .@@@@@@@@@@@@", "* .@@X@@@X@@@@@", "* .@@@@@@@@@@@@", "@-.@@-.@@@@@@@@@", "@@@@@@@@@@@@@@@&", "........@@@@@@.&", ".......-@@@@@.XX", "......@-@@@@.XXX", ".....@-@@@@@XXX@", "++++@-@-@@@@XX@@", "++++-@--@@@@@@@@", "++++@---@@@@@@@@", "....----@@@@@@@@", "@@@@----@@@@@@@@", "@@@@----@@@@@@@&", "@@@@----@@@@@@.&", "@@@@-X--@@@@@.XX", "@@@@X@--@@@@.XXX", "@@@@@@--@-@@XXX@", ".XXX@@@@@@@@@.+*", "XXX@@@@@@@@@@.+*", "&X@@@@@@@@@@@.+*", "X@@@@@@@@@@@@.+*", "@@@@@@@@@@@@@.+*", "@@@@@@@@@@@@@.+*", "@@@@@@@@@@@@@.+*", "@@@@@@@@@@@@@.+*", "@@.X@@@@@@@@@.+*", "@.XXX@@@@@@@@.+*", ".XXX@@@@@@@@@.+*", "XXX@@@@@@@@@@.+*", "&X@@@@@@@@@@@.+*", "X@@@@@@@@@@@@.+*", "@@@@@@@@---@@.+*", "@@@@@@@@...@@.+*", "* .@@@@@@@@@@@@", "* .@@@@@@@@@@@@", "* .@@X@@@X@@@@@", "*...@@@@@@@@@@@@", "*@@@@@@@@@@@@@@@", "*@@@@@@@@@@@@@@@", "*@@@@@X@@@X@@@@@", "*...@@@@@@@@@@@@", "* .@@@@@@@@@@@@", "* .@@@@@@@@@@@@", "* .@@@@@@@@@@@@", "* .@@@@@@@@@@@@", "* .......@@@@@@", "* .@@@@@@", "* .@@@@@@", "****************", "@@@@@---@@@@XX@@", "@@@@----@@@@@@@@", "....----@@@@@@@@", ". ----=@@@@@@@", ". ---.........", ". --..........", ". -...........", ". ............", ". +++++++++++", ". +++++OOOOO", ". +++O%=%=%", ". O%=%=%O", ". OOOOOOO ", ". O O ", ". ", "****************", "@@@@@@@@---@@.+*", "@@@@@@@@...@@.+*", "@@@@@@@@@@@@@.+*", "@@@@@@@@@@@@=.+*", "..............+*", ".............++*", "............+++*", "...........++++*", "+++++++++++++++*", "OO+++++++++++++*", "O++++++++++++++*", " *", " *", " *", " *", "****************", " -..........", "****--@@@@@@@@@@", "* ---@@@@@@@@@@", "* ----@-.-.-.-@@", "*-----@-.-.-.-@@", "*-----@-.-.-.-@@", "*-----@@@@@@@@@@", "*-----@@@@@@@@@@", "*-@---@@@@@@@@@@", "*@@---@@@@@@@@@@", "*@@---@@@@@@@@@@", "*@----@@@@@@@@@@", "*-----@@@@@@@@@@", "*-----@@@@@@@@@@", "*-----@@@@@@@@@.", "*-----@@@@@@@@oX", "................", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@..@@@@@@..@@@@", "@.X@.@@@@.X@.@@@", "oXXX.@@@oXXX.@@@", "oXX.@@@.oXX.@@@.", "XOO@@@oXXOO@@@oX", ".............. ", "@@@@@@@@@@@@@.**", "@@@@@@@@@@@@@. *", "@@@@@@@@@@@@@. *", "@@@@@@@@@@@@@. *", "@@@@@@@@@@@@@. *", "@@@@@@@@@@@@@. *", "@@@@@@@@@@@@@. *", "@@@@@@@@@@@@@. *", "@@@@@@@@@@@@@. *", "@@@@@@@@@@@@@. *", "@@..@@@@@@@@@. *", "@.X@.@@@@@@@@. *", "oXXX.@@@@@@@@. *", "oXX.@@@@@@@@@. *", "XOO@@@@@@@@@@. *", "*-----@@@@@@@.oX", "*-----@@@@@@.XXO", "*-----@@@@@.XXX.", "*-----@@@@.XXX.@", "*-----@@@.XXX.@@", "*-@---@@.XXX.@@@", "*-----@@XXX.@@@@", "*-----@@.X.@@@@@", "*-@---@@@@@@@@@@", "*-----@@.@@@@@@@", "*-@---@@@@@@@@@@", "*-----..........", "*-@--...........", "*---.-----------", "*--.--@@@@@@@@@@", "*-.---@@@-.@@@@@", "X.@@@.oXX.@@@.oX", "O@@@.XXOO@@@.XXO", "@@@.XXX.@@@.XXX.", "@@.XXX.@@@.XXX.@", "@.XXX.@@@.XXX.@@", ".XXX.@@@.XXX.@@@", "XXX.@@@@XXX.@@@@", ".X.@@@@@.X.@@@@@", "@@@@@@@@@@@@@@@@", ".@@@@@@@.@@@@@@@", "@@@@@@@@@@@@@@@@", "................", "................", "----------------", "@@@@@@@@@@@@@@@@", "-.@@@@-.@@@@@@@@", "X.@@@@@@@@@@@. *", "O@@@@@@@@@@@@. *", "@@@@@@@@@@@@@. *", "@@............ *", "@@........... *", "@@..........+ *", "@@...XXX...++ *", "@@..XXX...+++ *", "@@.@.@.@+++++ *", "@@..@.@.+++++ *", "@@.@.@.@.@.@. *", "....@@@@@@@@@ *", "..@@.@@@@@@@@ *", "---------@@@@ *", "@@@@@@@@-@@@@ *", "@-----@@-@@@@ *", "*X----@@@@@@@@@@", "* ----@@@@@@@@@@", "* ----@@@@@@@@@@", "* ----@@@@@@@@@@", "* -@--@@@@@@@@@@", "* ----@@-..-..@@", "* -@--@@-..-..@@", "* ----@@-..-..@@", "* -@--@@@@@@@@@@", "* ----@@@@@@@@@@", "* -@--..........", "* ---.........@.", "* --...@.@.@....", "* -.............", "* ", "****************", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@-.@@@@@@", "@@@@@@@@-.@@@@@@", "@@@@@@@@-.@@@@@@", "@@@@@@@@-.@@@@@@", "@@@@@@@@@@@@@@@@", "-.@@-..@@@@@@@@@", "@@@@@@@@@@@@@@@@", "................", "@.@.............", ".....@.@.@..@.@.", "................", " ", "****************", "--@@@-@@-@@@@ *", "--@@@-@@-@@@@@@@", "-.....@@-@@@@@@@", ".....@@@-@@@@@@@", "@@@@@@@@-@@@@@@@", "@@@@@@@@-@@@@ *", "@@@@@@@@-@@@@ *", "@@@@@@@@-@@@@ *", "-.-.-.@@-@@@@ *", "@@@@@@@@- @@@ *", "......... @@@ *", "........ @@@ *", "@.@.@.. @@@ *", "...... @@@ *", " @@@ *", "**********@@@***", "****************", "* ", "* ", "* ", "* ", "* + + ", "* ", "* ", "* ", "* ", "* @@@@@@", "* -@@@@@@", "* --@@@@@@", "* @-@@@@@@", "* @-@@@@@@", "* -.......", "****************", " ", " ", " ", " @", " + @", " @", " @", " + @", " @", "@@@@@@@@@@@@ @", "@@@@@@@@@@@@ @", "@@@@@@@@@@@@ @", "@@@@@@@@@@@@+ @", "@@@@@@@@@@@@+ @", "...........++ @", "*@@@@***********", " @@@@ *", " @@@@ *", " @@@@ *", "@@@@@@@@@@@@@ *", "@@@@@@@@@@@@@ *", "@@@@@@@@@@@@@ *", "@@--@@@--@@@@ *", "@@@@@ooo@@@@@ *", "@@@@@oOO@@@@@ *", "@@@@@@@@@@@@@ *", "@@--@@@--@@@@ *", "@@@@@@@@@@@@@ *", "@###@@@@@@@@@ *", "@#$$@@@@@@@@@ *", "@@--@@@--@@@@ *", "* ...X.X..", "* +++++++", "* + ", "* ", "* ", "* ", "* + ", "* ", "* ", "* + ", "* ", "* ", "* ", "* + ", "* @--- ", "* @---@@", "..X.X.X...+++ @", "+++++++++++++ @", " @", " @", " @", " %-- @", " %%--- @", " %%%%&-@ ", " %%--@@.@ ", " %%---@@.. ", " %---@@@. +", " ---@@@. ", " -@@@.+ ", " @..+++ ", " +.+++++ ", "@@@@@+++++ ", "@@@@@@@@@@@@@ *", "@@@@@+++@@@@@ *", "@@@@@+++@@@@@ *", "@@--@@@--@@@@ *", "@@@@@@@@@@@@@ *", "@@@@@@@@@@@@@ *", "@@@@@@@@@@@@@ *", " *", " *", " *", " *", " *", " *", " *", " %@@@@ *", " %%@@@@ *", "* @... ", "* ", "* + ", "* %-- ", "* %%--- ", "* %%%%&-@", "* %%--@@.@", "* %%---@@..", "* %---@@@.@", "* ---@@@.++", "* -@@@.++ ", "* @@.++++", "* ++++++", "* +++++", "* ++++", "****************", " +@ +++ ", " +@ ", " +@ ", " +%-- %--", " %%--- %%--", " %%%%&-@ %%%%&", " %%--@@.@ %%--@@", "%%---@@..%%---@@", "@---@@@.@@---@@@", "---@@@. ---@@@.", " -@@@.++ -@@@.+", " @@.++++ @@.++", "+ +++++++ ++++", "+ ++++++ +++", " ++++ ++", "****************", " %%%@@@@ *", " %%%@@@@ *", " %%%@@@@ *", " %%%@@@@+ *", "- %%%@@@@+ *", "-@ %%%@@@@+ *", ".@ %%%@@@@+ *", ".. %%@....+ *", ". %@....++ *", " @....+++ *", "+ +++++++ *", "++ ++++++ *", "+++ *", "+++ *", "++ *", "****************", "****************", "* ", "* ", "* $ + ", "* -@@@@@@ ", "* --@@@@@@ $ ", "* --@@@@@@ + ", "* --@@@@@@ ", "* --...... ", "* -...... ", "* ..@.@. -", "* @ @ -X", "* @ @ %-.", "* @ @ + %%.X", "* @ @ %%-..", "* @---+ %%%-.X", "****************", " ", " ", " ", " --------", " ---.X.X.X.X", " --...........", " --.X.X.X.X.X.X", " -..............", "-X.X.X.X.X.X.X.X", "................", ".X.X.X.X.X.X.X.X", "................", ".X.X.X.X.X.X.X.X", "................", ".X.X.X.X.X.X.X.X", "****************", " *", " $ *", " *", " $ *", "--- + *", "...-- *", ".X.X-- *", "......- $*", ".X.X.X.- *", "........- *", ".X.X.X.X.- *", ".........- *", ".X.X.X.X.X- *", "..........- *", ".X.X.X.X.X- *", "* @---@@@@%%...", "* @...+ %%%%X.X", "* ++++ %%%%...", "* %%%-X.X", "* %%%-%...", "* %%-%%X.X", "* %-%-%...", "* -%-%-%.X", "* %-%--%..", "* -%---%.X", "* %-----%.", "* -----%X", "* ------%", "* -------", "* -----@", "* ----@-", "................", ".X.X.X.X.X.X.X.X", "................", ".X.X.X.X.X.X.X.X", "................", ".X.X.X.X.X.X.X.X", "................", ".X.X.X.X.X.X.X.X", "................", ".X.X.X.X.X.X.X.X", "................", ".X.X.X.X.X.X.X.X", "................", "%X.X.X.X.X.X.X.X", "--..............", "@--@.X.X.X.X.X.X", "...........@ *", ".X.X.X.X.X.@ *", "...........@ *", ".X.X.X.X.X.@ *", "...........@+ *", ".X.X.X.X.X.@+ *", "...........@+ *", ".X.X.X.X.X@++ *", "..........@++ *", ".X.X.X.X.X@++$ *", ".........@+++ *", ".X.X.X.X.@+++ *", "........@+++ *", ".X.X.X.@++++ *", "......@+++++ *", ".X.X@@+++++ *", "* + --@-@", "* + @-@-", "* @-@", "* @@", "* @", "* ", "* ", "* ", "* @. ", "* @. + ", "* @. @. ", "* @. $", "* @. ", "* ", "* ", "****************", "-@@--...........", "@@@@@--@.X.X.X.X", "@@@@@@@@-@@@@@@@", "@@@@@@@@@.@.@...", "@@@@@@@@.@.@....", "+@@@@@@.@.@....+", " +++@@......++++", " +++.+.+.++++++", " ++.+.+.++++++", " @+@+@++++++", " @ @ @ ", " -----------", " -----......", " +++++ ", " ", "****************", "...@@++++++ *", ".@@@+++++++ *", "@@.++++++$ *", "..+++++++ *", ".+++++++ $ *", "+++++++ *", "++++++ *", "+++++ *", "+++ -@@@@@ *", "+ --@@@@@ *", " --@@@@@ *", "--------.....+ *", "......-.....++ *", " +++++++ *", " *", "****************", "****************", "* ", "* -----------", "* --@@@@@@@@@@", "* ---@-@@@@@@@@", "* --%-@@@@@@@@@@", "* ----@@@@@@@@@@", "* ----@@@@@@@@@@", "* --%-@@@@@@@@@@", "* ----@@@@@@@@@.", "* ----@@@@@@@@.X", "* --%-@@@@@@@.XX", "* %---@@@@@@oXXX", "* ----@@@@@.oXX.", "* --%-@@@@oXXOO@", "* ----@@@.oXX.@@", "****************", " ", "----------------", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "..@@@@@@@@..@@@@", "X@.@@@@@@.X@.@@@", "XX.@@@@@.XXX.@@@", "X.@@@@@.XXX.@@@@", ".@@@@@oXXX.@@@@@", "@@@@@.oXX.@@@@@@", "@@@@oXXOO@@@@@@@", "@@@.oXX.@@@@@@@.", "****************", " *", "------- *", "@@@@@@. *", "@@@@-@.@@@@@@@ *", "@@@@@@.@@@@@-@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@.@.@@.@@@@@@@ *", "* %---@@@XXOO@@@", "* --%-@@@XX.@@@@", "* ----@@@@.@.@@@", "* %---@@@@@.@.@@", "* --%-@-@@@@.@.@", "* ----@@@@@@@.@.", "* ---@..........", "* --@...........", "* -@.......X..X.", "* @....XX.......", "* +++++++++++++", "* +...........", "* ...........", "* @..........", "* @@@-@@-@@-@", "* @@@@@@@@@@@", "@@@XXOO@@@@@@@@.", "@@@XX.@@@@@@@@@.", "@@@@.@.@@@@@@@@.", "@@@@@.@.@@@@@@@.", "@@@@@@.@.@@@@@@@", "@@@@@@@.@.@@@@@@", "................", "................", ".X..X..X..X..@..", "............@@@@", "+++++++++++@@-@-", ".......+++@@--@@", ".......+++@---@@", "..........----@@", "@@@@@@@@@@----@@", "@@@@@@@---X---@@", "@.@.@@.@@@@@@@ *", "@.@.@@.@@@@@@@ *", "@.@.@@.@@@@@@@ *", "@.@.@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", ".......@@@@@@@ *", "......@@@@@@@@ *", ".............. *", "@@@@@@@@@@@@@. *", "@@@@@@@@@@@-@. *", "@@@@@@@@@@@@@. *", "@@@@@@@@@@@@@. *", "@@.@.@.@@@@@@. *", "@@@@@@@@@@@@@.+*", "@@.@.@.@@@@@@.+*", "* $$ @@@@@@@@@@@", "* $@@@+@@@@@@@", "* @@+++@@@@@@", "@@@@@@+++@@@@@@@", "@@@@@@@+@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@-@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "* @@@@@@@@@@@", "* @@@@@@@@@@@", "* %%%@@", "* $ %%% @@", "*$ $ @@", "* @@", "**************@@", "@@@@@XOOOOX---@@", "@@@@@XOOOO----@@", "@@@@@@@-------@@", "@@@@@@@@@@--.-@@", "@@@@@@@@@@----@@", "@@@@@@@---X-.-@@", "@@@@@X&&&&X---@-", "@@@@@X&&&&--.-@@", "-@@@@@@------@..", "@@@@@@@@@@--@...", "@@@@@@@@@@-@..X.", "@@@ @.....", "@@@ $$ +++++", "@@@ $$ ++++", "@@@ +++", "@@@*************", "@@@@@@@@@@@@@.+*", "@@.@.@.@@@@@@.+*", "@@@@@@@@@@@@@.+*", "@@@@@@@@@@@@@.+*", "@@@@@@@@@@@@@.+*", "@@@@@@@@@@@@@.+*", "@@@@@@@@@@@-@.+*", "@@@@@@@@@@@@@.+*", "..............+*", ".............++*", "X.X...X.X.X.+++*", "...........++++*", "+++++++++++++++*", "+++++++++++++++*", "+++++++++++++++*", "****************", "****************", "* ", "* ----- ", "* @-...--", "* @@-@@@..", "* @@@-@@@@@", "* @@@@-@@@@@", "* @@@@@-@@@@@", "* @@@@@@-@@@@@", "* @@@@@@@-@-@@@", "* @@@@@@@-@.@@@", "* @@@@@@@-@.@@@", "* @@-@@@@-@.@@@", "* @--@@@@-@.@@@", "* -@-@@@@-@.@@@", "* -@@-@@@@-@.@@@", "****************", " ", " .", "--------------.X", "..............XX", "@@@@@@@@@@@@.XXX", "@.....@@@@@&XXX@", "@@@@@@@@@@&&&&@@", "@...@@@@@.&&&-@@", "@@@@@@@@.XXX.-@@", "@.@@@@@.XXX@.-@@", "@@@@@@.XXX@@.-@.", "@@@@@.XXX@@@.-.X", "@@@@.XXX@@@@..XX", "@@@@XXX@@@@@.XXX", "@@@@XX@@@@@&XXX@", "****************", " *", " *", ". + *", "X *", "........... *", "@@@@@@@@@@. *", "@@@@@@@-@@. *", "@@@@@@@@@@. *", "@@@@@@@@@@. *", "@@@@@@@@@@. *", "@@@@@@@@@@.+ *", ".@@@@@@@@@.+ *", "X@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "* @@.-@@@@-@.@@@", "* @.@-@@@@-@.@@@", "* .@.-@@@@-@.@@@", "* .@-@@@@-@.@@@", "* @.-@@@@-@.@@@", "* .@-@@@@-@.@@@", "* @.-@@@@-@.@@@", "* .--@@@@-@.@@@", "* -@-@@@@-@.@@@", "* -@@-@@@@-@.@@@", "* @@@-@@@@-@.@@@", "* @@.@@@@@-@.@@@", "* @.@@@@@@-@.@@@", "* .@@@@@@@-@.@@@", "* @@@-@@@-@.@@@", "* @@--@@@-@...@", "@@@@@@@@@@&&&&@@", "@@@@@@@@@.&&&-@@", "@@@@@@@@.XXX.-@@", "@@@@@@@.XXX@.-@@", "@@@@@@.XXX@@.-@.", "@@@@@.XXX@@@.-.X", "@@@@.XXX@@@@..XX", "@@@@XXX@@@@@.XXX", "@@@@XX@@@@@&XXX@", "@@@@@@@@@@&&&&@@", "@@@@@@@@@.&&&-@@", "@@@@@@@@.XXX.-@@", "@@@@@@@.XXX@.-@@", "@@@@@@.XXX@@.-@@", "@@@@@.XXX@@@.-@@", "@@@@.XXX@@@@.-@@", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", ".@@@@@@@@@.+ *", "X@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "* @-@-@@@-@.@.@", "* -@@-@@@-@.@.@", "* -@@@-@@@-@.@.@", "* @@@@-@@@-@-@-@", "* @@@@.@@@-@@@@@", "* @@@.@@@@------", "* @@.@@@@@......", "* @.@@@@@..X....", "* .@@@@@........", "* @@@@.........", "* @@@..........", "* @@......XX...", "* @......XX....", "* ++++++++++++", "* +++++++++++", "****************", "@@@@XXX@@@@@.-@@", "@@@@XX@@@@@@.-@@", "@@@@@@@@@@@@.-@@", "@@@@@@-@-@-@.-@@", "@@@@@@@@@@@@.-@@", "--------------X.", ".............X..", ".........X..X...", "...........X....", "..........++++++", ".........+++++++", "........++++++++", ".......+++++ ", "++++++++++++ ", "++++++++++++ ", "****************", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@-@@.+ *", "@@@@@@@@@@.+ *", "...........+ *", "..@@@X@@@X++ *", ".@..X@..X+++ *", "@..X@..X++++ *", "++++++++++++ *", "++++++++++++ *", "++++++++++++ *", " *", " + *", " *", "****************", "oooooooooooooooo", "oooooooooooooooo", "oooo ", "oooX + + ", "ooOX @@@@@@@@@", "ooOX @@@@@@@@@@", "ooOX @@@@@@@@@@", "ooOX @@-@@-@@-@", "ooOX @@@@@@@@@@", "ooOX @@@@@@@@@@", "@@@@@@@@-@@@@@@-", "@@@@@@@@@@@ --", "@@@@@@@@@@@ ---", "@@-@@-@@-@@ ----", "@@@@@@@@@@@-----", "@@@@@@@@@@@-----", "oooooooooooooooo", "oooooooooooooooo", " ", " + + +", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "**X@-@@-@@-@@-@@", "**X@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "------@@@@@-----", "@@@@@.@@@@--@@@@", "@@@@@..@@---@@@@", "@@@@@..@----@@@@", "@@@@@..@----@@@@", "@@@@@..@----@@@@", "oooooooX@@@@@@oo", "oooooooX@@@@@@oo", " @@@@@@ ", " @@@@@@ ", "@@@@@@@@@@@@@@ ", "@@X@@@@@@@@@@@ ", "@X.X@@@@@@@@@@@@", "@@X@@@@-@@-@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@------@@", "-@*.*@*--@@@@.@@", ".@@@@@---@@@@.@@", "..@@@----@@@@..-", "..@@@----@@@@..@", "..@@@----@@@@..@", "..@@@----@@@@..@", "oooooooooooooooo", "oooooo==oooooooo", " . == oo", " . == oo", " X == oo", " X== oo", "@@@@@@ X X== oo", "@@@@.@ X X = oo", "@@@@@.X.X oo", "@@@@@X.X oo", "@@@@@.X. oo", "@@@@.@ . oo", "@@-@@@ + oo", "@@@@@@ + oo", "@@@@@@ -.... oo", "@@-@@@ --@@@. oo", "@@@@@@@@@@ --.--", "XXXX -----", "ooOX --.--", "ooOX ---------", "ooOX --.....---", "ooOX ---.....-.-", "ooOX ---.....---", "ooOX ---...@@---", "ooOX ---...@@---", "ooOX ---...@@---", "ooOX ---...@@---", "ooOX ---...@@.--", "ooOX ---...@@---", "ooOX ---...@@---", "ooOX --@@@@@@---", "ooOX -@@@@+@@---", "@---------------", "--..............", "--@@@@@@@@@@@@@@", "--@@@@@@@@@@@@-o", "--@@-.@@@@@@@-o@", "--@@-.@@@@@@@-o@", "--@@@@@@@@@@@@-o", "--@@@@@@@@@@@@-o", "--@@@@@@@@@@-ooo", "--@@@@@@@@@@@@-o", "--@@@@@@@@@@@@-o", "--@@@@@@@@@@@@-o", "--@@@@@@@-ooo@-o", "--@@-.@@@@-oO@-o", "--@@-.@@@@@-oOOo", "--@@@@@@@@@@-ooo", "----------------", "...............-", "@@@@@@@@@@@@@@.-", "o@@@@@@@@@@@@@.-", "-o@@@@@@@@-.@@.-", "-o@@@@@@@@-.@@.-", "O@@@@@@@@@@@@@.-", "O@@@@@@@@@@@@@.-", "Ooo@@@@@@@@@@@.-", "O@@@@@@@@@@@@@.-", "O@@@@@@@@@@@@@.-", "O@@@@@@@@@@@@@.-", "O@-ooo@@@@@@@@.-", "O@-Oo@@@@@-.@@.-", "OOOo@@@@@@-.@@.-", "ooo@@@@@@@@@@@.-", "@@@@@@@--@X@. oo", "@@@@@@@--@@@. oo", "@@-@@@@--@@@.+oo", "@@@@@@@--@X@.+oo", "@@@@@@ --@@@.+oo", ".@-@@@ --....+oo", ".@@@@@ -....++oo", ".@@@@@@#$$++++oo", ".@-@@@##$$ oo", ".@@@@@##$$ oo", ".@@@@@#$$@@@ oo", ".@-@@@@#$$@#$$oo", ".@@@@@##$$##$$oo", ".@@@@@##$$##$$oo", ".@-@@@#$$@#$$@oo", ".@@@@@@@@@@@@@@@", "ooOX @@@@++@-.--", "ooOX +++++@----", "ooOX ++++@----", "ooOX o..+++-----", "ooOX o.. -----", "ooOX oOO --.--", "ooOX -.---", "ooOX o.. -----", "ooOX o.. ----@", "ooOX oOO ---@@", "ooOX --@@@", "ooOX o.. -@@@X", "ooOX o.. @@@..", "ooOX oOO ++..", "ooOX ++.", "oo==============", "--@@@@@@@@@@@@@@", "----------------", "-@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "................", "................", "................", "................", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "XXXX@@@@XXXX@@@@", "...@@@@X...@@@@X", "..@@@@....@@@@..", "...+++..........", "..........- ...", "==--.....-- ..-", "@@@@@@@@@@@@@@.-", "----------------", "@@@@@@@@@@@@@@@.", "@@@@@@@@@@@@@@..", ".............@..", ".............@..", ".............@..", ".............@..", "@@@@@@@@@@@@@@..", "@@@@@@@@@@@@@...", "XXXX@@@@@@@@+...", "...@@@@@@@@++...", "..@@@@@@@@+++...", "................", "................", " ..........=...", ".@@@@@@@@@@@@@@@", ".@-@@-@@-@@-@@-@", ".@@@@@@@@@@@@@@@", ".@@@@@@@@@@@@@@@", ".@-@@@@@@@@@@@@@", "@@@@@@ XX", "@@@@@@ -@@@oo", "@@-@@@ *-@@@.o", "@@@@@@ *.-@@@oo", "@@@@@@ *. ----.o", "@@-@@@ *. *.oo", "@@@@@@ *. *. oo", "@@@@@@ *. *. oo", "@@-@@@ + + oo", "@@@@@@ + + oo", "@@@@@@ @ + oo", "oo==============", "ooOX -X. ", "ooOX -X. ", "ooOX -X. ", "ooOX -X. ", "ooOX -X. ", "ooOX -X. @@@@@", "ooOX . @@@@@", "ooOX + @@-@@", "ooOX +@@@@@", "ooOX X .@@@@", "ooOX @.-.@", "ooOXXXXXXXX.....", "ooOOOOOOOOX@@@@@", "ooooooooooX@@-@@", "ooooooooooX@@@@@", "==..@@@@@--..@--", " -..@@@@@-..@@--", " ...@@@@@@@@-@-.", " @@@@@@@@@@@@@", " @@@@@@", " @@-@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "-@@-@@-@@-@@-@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@ ", "@XXXXXXXXXXXXXXX", "@OOOOOOOOOOOOOOO", "@ooooooooooooooo", "@ooooooooooooooo", " @@-@@-@@--.=@-", "..@@@@@@@@-.=.@@", ".@@@@@@@@@...=@@", "@@@@@@@@@@@@=.@@", " -.= ", " -X=. ", " -X..= ", " ..... -X. =. ", " . -X. .= ", " . -X. =. ", " . -X. .= ", " . . =. ", "XXXXXXXXXXXX.=XX", "OOOOOOOOOOOO=.OO", "oooooooooooo.ooo", "oooooooooooooooo", "@@-@@@ -@. oo", "@@@@@@ @ oo", "@@@@@@ @ @ oo", "@@@@@@ -@. -@.oo", " @ @ oo", " @ oo", " + + -@. oo", " @ oo", " + + oo", " oo", " oo", " + oo", "XXXXXXXXXXXXXXoo", "OOOOOOOOOOOOOooo", "oooooooooooooooo", "oooooooooooooooo", "****************", "* ", "* ", "* ", "* ", "* ", "* + ", "* @@@@@@@@@@@@@@", "* ", "* ", "* ", "* o o ", "*&..............", "* .--...........", "*&..............", "* .--...........", "****************", " ", " ", " ", " ", " ", " ", "@@@@@@@@@@ ", " +@ ", " @ ", " @ ", " o o ", "................", "................", "................", "................", "****************", " ", " ", " ", " XXX ", " . X.. ", " . X ", " . X - ", " . XX ", " XX ", " X ", " o o ", "................", "................", "................", "................", "****************", " ", " ", " ", " @@@", " + @@@@", " @@@@@", " @@@@-@", " @@@@@@@", " @@@@-@@@", " @@@@@@@@", " o o@@@@@@@@", "................", "................", "................", "................", "****************", " & & & & & ", " ..........", " .-.-.-.-.-", "@@@@@@.-.-.-.-.-", "@@@@@@..........", "@-@@@@....@@@.@.", "@@@@@@....@.@.@.", "@@@@@@....@@@.@.", "@ ....@.@.@@", " ....@@@.@.", "o o..........", "................", "................", "............-...", "............-...", "****************", "& & *", "... *", ".-. *", ".-. *", "...o + *", "... *", "... *", "... *", "... *", "... *", "...o o *", "..............&*", "...........--. *", "..............&*", ".....@@@...--. *", "*&..............", "* .--.@.@@@.....", "*&....@.@.@...--", "* .--.@@@@@.....", "*&..............", "* .--...........", "*&..............", "* .--...........", "*&..............", "* o@@@@@@@@o ", "* @@@@@@@@ ", "* @@@-@@@@ ", "* @@@@@@@@ ", "* @@@@@@@@ ", "* @@@-@@@@ ", "* @@@@@@@@ ", "................", "................", "--...----...----", "................", "................", "................", "................", "................", "................", " o o @", " @", " @", " @", " @", " @", " @", "................", "................", "...----...----..", "................", "................", "................", "................", "................", "................", " o o ", " ", " ", " + ", " ", "@@@@@@@@@@@@@ ", " @ ", "................", "................", ".----...----...-", "................", "................", "................", "................", "................", "................", " o o@@@@@@@@", " @@@@@@@@", " @@@-@@@@", " @@@@@@@@", " @@@@@@@@", " @@@-@@@@", " @@@@@@@@", "............-...", "................", "---...----....--", "................", "................", "............-...", "............-...", "............-...", "............-...", "o o..........", " ..........", " ..........", " ......-...", " ......-...", " ......-...", " ......-...", ".....@..@@....&*", ".....@.....--. *", "--............&*", ".....@@@.@.--. *", ".....@.@.@....&*", ".....@.@@@.--. *", "..............&*", "...........--. *", "..............&*", "...o o *", "... *", "... *", "... @@@ *", "... @ *", "... -.. @ *", "... -.. @ *", "* @@@@@@@@@@", "* @@@-@@@@ ", "* @@@@@@@@ ", "* @@@@@@@@@@ ", "* @@@@@-@@@@@@", "* @@@@@@@@@@@@", "* @@@@@@@-@@@@", "* @@@@@@@@@@@@", "* @@@@@@@@@@@@", "* @@@@@@@@@%%%", "* @@@@@@@@@@-%", "* @@@@@@@@@@@@", "* @@@@@@@@@@--", "* ---------.-&", "* .-&-------.--", "* ..---%@-%@-.--", "@@@@@@@@@@@@@@@@", " ", " ", " ", "@%%%%%@@@@@@@@@@", "@@%%%@@@@@@@@@@@", "@@@%@@@@@@@@@@@@", "@@-%@@@@@@@@@@@@", "@@%%@@@@@@@@@@@@", "+%-%%%+%%@@@-@@@", "+%-%%%+-@@@@@@@@", "-%-%%-@@--------", "-------.-&------", "-------.---%@--%", "-%@-%@-.---%@--%", "-%@-%@-.--------", " @ ", " @ ", " @ -", " @ -", "@@@@@@@@@@@@@@X-", "@@@@@@%@@@@@@@X-", "@@@%@@%@@@@@@XX-", "@@@%%%%%@@@@@XX-", "@@@@@.-@@@@@.XX-", "@-@@@@%@@@@.@XX-", "@@@@@@@@@@.@.X.-", "--------@.@.@.X-", "--------.@.@.XX-", "@--%@---@.@.@XX-", "@--%@---.@.@.XX-", "--------@.@.@XX-", " @@@@@@@@", " @@@@@@@@", "-------------@@@", "-------------@@@", "---------.---@@@", "-------------@@@", "-----&-------@@@", "----.--------@@@", "---.---------@@@", "----@----&---@@@", "-----@--.----@@@", "---------@---@@@", "-------------@@@", "---------.---@@@", "-------------@@@", "-------------@@@", " o..........", " ..........", " ..........", " ......-...", " ......-...", " ......-...", " ......-...", " o..........", " ..........", " ..........", " ......-...", " ......-...", " ......-...", " ......-...", " o..........", "+ ..........", "...o -@@ @ *", "... @ *", "... @ *", "... @ *", "... @ *", "... +@ *", "... @ *", "...o @ *", "... @ *", "... @ *", "... @ *", "... @ *", "... @ *", "... @ *", "...o @ *", "... @ *", "* ..---%@-%@-.--", "* ..---------.--", "* ..---------.--", "* ..---------.--", "* ..---------.--", "* ..---%@-%@-.--", "* ..---%@-%@-.-&", "* ..-&-------.--", "* ..---------.OO", "* .OOOOOOOOOOOOO", "* .OOOOOO...OOOO", "* +++++....++++", "* @@@@@@@@..", "* @.X@@@@+++@", "* @.XXX@@@+++@", "* X@XXX@@@@@@@@", "-------.--------", "-------.--------", "-------.--------", "-------.---%@--%", "-%@-%@-.---%@--%", "-%@-%@-.-&------", "-------.--------", "-------.OOOOOOOO", "OOOOOOOOOOOOOOOO", "OOXXXOOOOXXOOOOX", "OO...OOOO..OOOO.", "+X...+++X..+++X.", "................", "@@@@@@@@@..XXX..", "@@@@@@@@@@@XXX@@", "@@@@@@@@@@@@@@@@", "--------.@.@.XXX", "--------@.@.@XXX", "--------.@.@....", "@--%@---@.@.....", "@--%@---.@......", "--------@.......", "--------........", "OOOOOOO--@@@@@@@", "OOOOOOo---@@@@@@", "XXOOOoo---%@@@@@", "..OOooo---@@@@@@", "..XXoOo-----@@@@", "..XXooo------@@@", "....Xoo------@@@", "@@@@XOo---%%----", "@@XXooo---@@----", "XXXX.XXXXXX@@@@@", "XXX.XXXXX@@@@@@@", "........@@@@@@@@", ".......@@@-@@@@@", "......@@@@@@@@@@", "........@@@@@@@@", "........@@@@@@@@", "@@@@....@@-@@@@@", "@@@@....@@@@@@@@", "@@@@....@@@@@@@@", "..@@....@@@@@@@@", "@@@@....@@-@@@@@", "@@@@....@@@@@@@@", "@@@@..@@@@@@@@@@", "%%--..@@@@@@@@@@", "@@--..@%@@-@@@@@", " ..........", " ......-...", " ......-...", " ......-...", " ......-...", " o..........", " ..........", " ..........", " ......-...", " ......-...", " ......-...", " o......-...", " ..........", " ..........", " ..........", " ......-...", "... @ *", "... @ *", "... @ *", "... @ *", "... @@@@@ *", "...o @ *", "... @ *", "... @ *", "... @ *", "... @ @@@ *", "... @ ... *", "...o @ *", "... @ *", "... @ @@@ *", "... @ ... *", "... @ *", "* .-@@X@@@@@@@@@", "* ..@@@@@@@@....", "* ..@@@@@@@...@.", "* .-@@@@@@......", "* ..@@@@@@.+++++", "* ..@@@@@@.+++++", "* .-@@@@@@......", "* ..@@@$$@......", "* ..@@@$$@......", "* .-@@@$$@......", "* ..@@@@@@......", "* ..@@@@@@......", "* ..@@@@@@......", "* ..@@@@@@......", "* .-@@@@@@......", "* ..@@@@@@.XXXXX", "@@@@@@@@@@@@@@@@", ".........@@@@@@@", ".@..@.....@@@@@@", "........@..@@@@@", "+++++++....@@@@@", "++++++++...@oo@@", "... .@.@oo@@", "... +...@oo@@", "... ...@@@@@", "... .@.@@@@@", "... +...@@@@@", "... ...@@@@$", "... .@.@@@@$", "... +...@@@@$", "... ...@@@@@", "XX .@.@@@@@", "@@+XoOo---------", "@@+Xooo---------", "@@+Xooo---------", "@@XXooo---%%----", "@@@@XOo---@@----", "@@@@Xoo---------", "@@@@ooo-&-------", "@@XXooo---------", "@@+Xoo..........", "@@+XoO-@@@@@@@@@", "@@+Xoo---%%----%", "$@+Xoo---@@----@", "$@+XOo----------", "$@+Xoo----------", "@@XXoo---%%----%", "@@@@Xo---@@----@", "----..-%@@@@@@@@", "----..%%@@@@@@@@", "----..%%@@@@%@@@", "%%--.@%%@@@%%@@@", "@@--@@%%%%%%%@@@", "----@@%%%%%@%@@@", "--&-.@%%@@@@@@@@", "----..%%@@@@@@@@", "......%%@@@@@@@@", "@@@..@-%@@-@@@@@", "%--.@@@%@@@@@@@@", "@--.@@@@@@@@@@@@", "---.@@@@@@@@@-@@", "---.@@@@@@@@@@@@", "%--.@@@@@@-@@@@@", "@--.@@@@@@@@@@@@", " ......-...", " ......-...", " o......-...", " ..........", " ..........", " ..........", " ......-...", " ......-...", "@ o......-...", "@@@@@@......-...", "@@@@@@..........", "@@@@@@..........", "-@@-@@..........", "@@@@@@......-...", "@@@@@@......-...", "@@@@@@......-...", "... @ *", "... @ @@@ *", "...o @ ... *", "... @ *", "... @ *", "... @ *", "... @ *", "... @ *", "...o @ *", "... @ *", "...@@@@ *", "... *", "... *", "... *", "... *", "... *", "* ..@@@@@@.XXXXX", "* .-@@@@@@@. ", "* ..@@@@@@@@....", "* ..@@@@@@@@@@@@", "* .-@@@@@@@@@@@@", "* ..@@@@@@@@@@@@", "* ...@@@@@@@@@@@", "* ....@@@@@@@@@@", "* ...-...-..-..", "* ............", "* +++++++++++", "* +++++++++", "* + ", "* ", "* ", "****************", "X ...@@@@@", " ...@@@@@@", ".........@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@+++@@@@@@@@@@", "@@@+++@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", ".-...-..-.@@@@@@", "...........@@==@", "++++++++...@@==@", "+++++++++..@@==@", " ..X@@@@@", " ..X@@@@@", " ..@@@@@@", "*********.@@@@@@", "@@@@Xo-&--------", "@@XXoo----------", "@@+Xo...........", "@@+Xo-@@@@@@@@@@", "@@+Xo-----------", "@@XXo---%%----%%", "@@@@X---@@----@@", "@@@@X-&---------", "@@XXo-----------", "@@+Xo...........", "@@ X............", "@@ +++++++++++", "@@ ++++++++++", "@ ", "@ ", "****************", "-&-.@@@@@@@@@@@@", "---.@@@@@@-@@@@@", "....@@@@@@@@@@@@", "@@..@@@@@@@@@@@@", "--.@@@@@@@@@@@@@", "--.@@@@@@@@@@@@@", "--.@@@@@@@@@@@@@", "&-.@@@@@@@@@@@@@", "--+ ", ".++ + ", "+++ ", "+++ ", "+++ ", " + ", " ", "****************", "@ o......-...", " ..........", " ..........", " ..........", " ...@@@.@@@", " .....@.@..", " ....@@.@@@", " o.....@.@.@", " ...@@@.@@@", " ..........", " + .-.-.-.-.-", " .-.-.-.-.-", " ..........", " ", " & & & & & ", "****************", "...o *", "... *", "... *", "... *", "... + *", "... *", "... *", "...o *", "... *", "... *", ".-. *", ".-. *", "... *", " *", "& & *", "****************", " ", " ", " ---------", "******--=@@@@@--", "* ---@@@@@---", "* ----@@@@@---", "* -----@@@@@---", "* -----@@@@@---", "* -----@%.@@---", "* -@---@%.@@---", "* @@---@@@@@--%", "* @----@@@@@-%@", "* -----@@@@@-@-", "* -----@@@@@---", "* -@---@@@@@---", "* -----@@@@@---", " ---------------", "--&@@@@@@@@@@@@&", "--@@@@@@@@@@@@@@", "--@@@@@@@@@@@@@@", "--@@@@@@@@@@@@@@", "--@@@@@@@@@@@@@.", "--@@@@@@@@@@@@.X", "--@@@@@@@@@@@.XX", "--@@@@@@@@@@oXX@", "%-@@@@@@@@@ooO@@", "@-@@@@@@@@.oO@@@", "--@@@@@.@.XX@@@@", "--@@@@@@.XX@@@@@", "--@@@@@@XX@@@@@.", "--@@@@@.@@.@@@.X", "--@@@@@@@@@@@.XX", " ", ". ", "@. ", "@@.*************", ".@@. ", "XX@@. ", "X@@@@. ", "@@@@@. ", "@@@@@. ", "@@@@@. ", "@@@@@. ", "@@@@@. ", ".@@@@. ", "XX@@@. ", "X@@@@. ", "@@@@@.+ ", " ", " ", " ", "****************", " *", " *", " *", " *", " *", " *", " *", " *", " . . . . . *", ". . . . . *", " + + + + + *", " *", "* -@---@@@@@---", "* -----@@@@@---", "* -@---@@@@@---", "* -----@@@@@---", "* -@---@@@@@---", "* -----@@@@@--%", "* ----%.@@@@-%@", "* ---%@@@@@@-@-", "* --%@-@@@@@---", "* -%@--@@@@@---", "* %@---@@@@@---", "* @---%.@@@@---", "* ---%@@@@@@---", "* --%@-@@@@@---", "* -%@--@@@@@---", "* %@---@@@@@---", "--@@@@@@@@@@oXX@", "--@@@@@@@@@ooO@@", "--@@@@@@@@.oO@@@", "--@@@@@.@.XX@@@@", "%-@@@@@@.XX@@@@@", "@-@@@@@@XX@@@@@.", "--@@@@@.@@.@@@.X", "--@@@@@@@@@@@.XX", "--@X@@@@@@@@oXX@", "--@@@@@@@@@ooO@@", "--@@@@@@@@.oO@@@", "--@@@@@.@.XX@@@@", "--@X@@@@.XX@@@@@", "--@@@@@@XX@@@@@.", "--@@@@@.@@.@@@.X", "%-@@@@@@@@@@@.XX", "@@@@@.++ ", "@@@@@.++ ", "@@@@@.++ ", "@@@@@.++ ", ".@@@@.++ ", "XX@@@.++ ", "X@@@@.++ ", "@@@@@.++ ", "@@@@@.++ . . ", "@@@@@.++ . . ", "@@@@@.++ + + ", "@@@@@.++ ", ".@@@@.++ . ", "XX@@@.++ . ", "X@@@@.++ + ", "@@@@@.++ ", " . . *", ". . *", " + + *", " *", " . . *", ". . *", " + + *", " *", " . . *", ". . *", " + + *", " *", " . *", " . *", " + *", " *", "* @----@@@@@--%", "* -----@@@@@-%@", "* -----@@@@@-@-", "* ---@-@@@@@---", "* --@@-@%.%.---", "* -@-@-@%.%.---", "* @--@-@@@@@---", "* --@@-@%.%.---", "* -@-@-@@@@@---", "* @--@-@%.%.---", "* --@@-@@@@@-@-", "* -@-@-@%.%.---", "* @--@-@%.%.--@", "* --@--@@@@@-@.", "* -@---@@@@@@..", "* @----@@@@@@@@", "@-@X@@@@@@@@oXX@", "--@@@@@@@@@ooO@@", "--@@@@@@@@.oO@@@", "--@@@@@.@.XX@@@@", "--@X@@@@.XX@@@@@", "--@@@@@@XX@@@@@@", "--@@@@@.@@.@@@@@", "--@@@@@@@@@@@@@@", "@-@@@@@@@@@@@@@@", "--&@@@@@@@@@@@@&", "-@..............", "@..............@", "..............@@", ".............@@@", "............@@@@", "@@@@@@@@@@@@@@@@", "@@@@@.++ . ", "@@@@@.++ . ", "@@@@@.++ + ", "@@@@@.++ ", "@@@@@.++ . ", "@@@@.+++ . ", "@@@.++++ + ", "@@..++++ ", "@.@.++++ . . ", ".@@.++++ . . ", "@@@.++++ + + ", "@@@.++++ ", "@@@.+...@@@$$@@@", "X@@.+...@@@$$@@@", "@@@.+...@@@$$@@@", "X@@.+..@@@@@@@@@", " . *", " . *", " + *", " *", " . *", " . *", " + *", " *", " . . . . . *", ". . . . . *", " + + + + + *", " *", "@@@@@@@@@@@@ *", "@@@@@@@@@@@@ *", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "* -----@@@@@@@@", "* -----@@.@@@@@", "* -----@@@@@@@@", "* -----@@.@@@@@", "* -----@@@@@@@*", "* -----@@.@@@*@", "* -----=@@@@@@@", "* -----........", "* ----.........", "* ---..........", "* --....X..X...", "* -............", "* ++++++++++++", "* +++++++++++", "* ++++++++++", "****************", "@@@@@*@@@@@@@@@@", "@@*@*@@@@.@@@@@@", "@***@@@@@@@@@@@@", "***@@@@@@.@@@@@@", "@*@@@@@@@@@@@@@@", "@@@@@@@@@.@@@@@@", "@@@@@@@@@@@@@@@@", "................", "................", "................", ".........X...X..", "................", "++++++++++++++++", "+++++++++++++++$", "++++++++++++++++", "****************", "@@@.+.@@@@@@@@@@", "X@@..@@@@@@@@@@@", "@@@.+@@@@@@@@@@@", "X@@.+@@@@@@@@@@@", "@@@.+@@@@@@@@@@@", "X@@.+@@@@@@@@@@@", "@@=.+@@@@@@@@@@@", "....+@@@@@@@@@@@", "...++@@@@@@@@@@@", "..+++@@++@@@@@@@", ".++++@@++@@@OO@$", "+++++@@++@@@OO@$", "+++++@@@@@@@OO@$", "++$++# # # # ", "+++++ ", "****************", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@ *", "@@@@@OO@@@@@ # *", "@@@@@OO@@@@@# *", "@@@@@OO@@@@@ *", "@@@@@@@@@@@@ *", "@@@@@@@@@@@@ # *", "@@@@@@@@@@@@ *", "@@@@@@@@@@@@ # *", "$@@@@@@@@@@@ *", "$@@@@@@@@@@@## *", "$@@@@@@@@@@@ *", " # @@@@ *", " @@@@ # # *", "***@@@@*********", "X&&&&&&&&&&&&&&&", "X&XXXXXXXXXXXXXX", "X&##$###########", "X&#$###########$", "X&##$$##$#######", "X&$#$$#$########", "X&#$####&&&&&&&&", "X&#$###&&XXXXXXX", "X&####&&&.......", "X&###&&&&......@", "X&##&&+&&.....@.", "X&##&&+&&....@..", "X&##&&&&&.......", "X&##&&&&&.......", "X&##&+&+&...&&&&", "X&##&+&+&..&&...", "&&&&&&&&&&&&&&&&", "XXXXXXXXXXXXXXXX", "################", "###########$####", "#######$########", "#########@######", "&&&&&&&&@&&&&&&&", "XXXXXXX@XXXXXXXX", "@.....@........X", "...............X", "...............X", "...............X", "...............X", "...............X", "&&&&&&&&&&&&&&&&", "................", "&&&&&&&&&&&&&&&&", "XXXXXXXXXXXXXXX&", "#############$X&", "##############X&", "#@@@@@@@@@@@##X&", "#@@@@@@@@@@@##X&", "&X===@@@OOO@##X&", "&@===@@@OOO@##X&", "&@@@@@@@@@@@##X&", "&.@@@@@@ @##X&", "&.@@@@@@ @##X&", "&.@@@@@@@@@@##X&", "&.XX@@@@@@@@##X&", "&.XX@@@@@@@@##X&", "&&&&&@@@@@@@##X&", "....&@@@X@@@@@@@", "X&##&&&&&.&&&@@@", "X&$#&&+&&&&+&@@@", "X&##&&+&+&&+&@@@", "X&##&&&&+&&&&@@.", "X&##&+&&&&&&&@@.", "X&##&+&&&&+&&@@.", "X&##&&&+&&+&&@@.", "X&##&&&+&&&&&@@.", "X&##&+&&&+&&&@@.", "X&##&+&&&+&+&@@.", "X&##&&&&&&&+&@@.", "X&##&&&+&&&&&@@.", "X&$#&&&+&&&&&@@.", "X&##&+&&&&&&&@@.", "X&##&+&&&+&&&@@.", "X&##&&&+&+&&&@@.", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "*******@.*****@@", "*******@.******@", "**.....@.**..***", "**@@@@@@.**@@.**", "**@@@@@@.**@@.**", "******@@.**@@.**", "******@@.**@@.**", "**....@@.**@@.**", "**@@@@@@.**@@.**", "**@@@@@@.**@@***", "**@@@@@@.******.", "**@@@@@@.*****.@", "..@@@@@@......@@", "@@@.&@@@@@@@@@@@", "@@@.&@@@@@@@@@@@", "@@@.&@@@@@@@@@@@", "@@@.&.@@@@@@##X&", "@@@.&.@@@@@@##X&", "@@@.&.@@@@@@##X&", "@@@.&.@@@@@@##X&", "@@@.&+++++++++X&", "@@@.&XXXXXXXX+X&", "@@@.&.......X+X&", "@@@.&..@X...X+X&", "@@@.&.....@.X+X&", "@@@.&....@..X+X&", "@@@.&...@...X+X&", "@@@.&..@....X+X&", "@@@.&.......X+X&", "X&##&&&+&&&&&@@@", "X&##&&&&&&+&&@@@", "X&##&+&&&&+&&&&&", "X&##&+&+&&&&&&&&", "X&##&&&+&&&&&&&&", "X&##&&&&&&&&&&&&", "X&##&+&&&&&&&XXX", "X&##&+&&&&&&X+.+", "X&##&&&&&&&X+.+.", "X&$#&&&&&&X+.+.+", "X&##&&&&&X+ + + ", "X&###$$$$$.....$", "X&####$$$$.....$", "X&##$##$$$.....$", "X&&&&&&&++.....+", "XXXXXXXXXX.....X", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "&&&&&&&&&&&&&&&&", "&&&&&&&&&&&&&&&&", "&&&&&&&&&&&&&&&&", "&&&&&&&&&&&&&&&&", "XXXX&&&XXXXXXX&&", ".+.&&&X+.+.+.&&&", "+.&&&X+.+.+.&&&.", ".&&&X+.+.+.&&&X.", "&&&X+ + + &&&&&&", "$$$$.....$$$$$$$", "$$$$.....$$$$$$$", "$$$$.....$$$$$$$", "++++.....+++++++", "XXXX.....XXXXXXX", "@@@.&.......X&X&", "@@@.&.......X&X&", "&&&&&.......X&X&", "&&&&..@X@X..X&X&", "&&&...@X@X..X&X&", "&&..........X&X&", "&&&&&&&&&&&&&&X&", "&&&&&&&&&&&&&#X&", "&&.&&&&&&.&&$#X&", "&X.&XX&&X.&$$#X&", "&&&XX&&&&&$$$#X&", "$$$$$$$$$$$$$#X&", "$$$$$$$$$$$$$#X&", "$$$######$####X&", "+++&&&&&&&&&&&&&", "XXXXXXXXXXXXXXXX", "Xooooooooooooooo", "XoXXXXXXXXXXXXXX", "Xo##############", "Xo###X##########", "Xo@--######@#@##", "Xo@--#######@###", "Xo@--######@#@##", "Xo@--#####@####o", "Xo...##o@......O", "Xo####oo@......o", "Xo#X#oOo@......o", "Xo##oOoo@......O", "Xo#oOooo@..@X..o", "Xo#oooOo@..@X..o", "Xo#ooOoo@......O", "Xo#oOooo@......o", "oooooooooooooooo", "XXXXXXXXXXXXXXXX", "#######.##.#####", "######.##.######", "##oooooooooooooo", "#ooXXXXXXXXXXXXX", "oOo@@@@@@@@@@@@@", "Ooo@@@@@@@@@@@@@", "ooo@@.******@@.*", "oOo@@.*******@.*", "Ooo@@.**...**@.*", "ooo@@.**@@.**@.*", "oOo@@.**@@.**@.*", "Ooo@@.*******@.*", "ooo@@.******.@.*", "oOo@@.**....@@.*", "oooooooooooooooo", "XXXXXXXXXXXXXXXo", "##############Xo", "##############Xo", "oooooooooo####Xo", "XXXXXXXXXO####Xo", "@@@@@@@@XO####Xo", "@@@@@@@@XO####Xo", "****@@@@XO...@Xo", "*****@@@XO...@Xo", "*..***@@XO...@Xo", "*@@.**@@XO...@Xo", "*@@.**@@XO...@Xo", "*@@.**@@XO...@Xo", "*@@.**@@XO...@Xo", "*@@.**@@XO...@Xo", "Xo#oooOo@......o", "Xo#ooOoo@..@X..O", "Xo#oOooo@..@X..o", "Xo#oooOo@......o", "Xo#ooOoo@......O", "Xo#oOooo@......o", "Xo#oooOo@......o", "Xo#ooOoo@......O", "Xo#oOooo@......o", "Xo#oooOo@@@@@@@o", "Xo#ooOooOOOOOOOO", "Xo#oOooOOOOOOOOO", "Xo#oooOOOXOOXOOX", "Xo#ooOOOOOOOOOOO", "Xo#oOOOOOOOOOOOO", "Xo##$$$$$$$$$$$$", "Ooo@@.**@@@@@@.*", "ooo@@.**@@@@@@.*", "oOo@@.**@@@@@@.*", "Ooo@@.**@@@@@@.*", "ooo@@...@@@@@@..", "oOo@@@@@@@@@@@@@", "OooOOOOOOOOOOOOO", "ooOOOOOOOOOOOOOO", "oOOXOOXOOXOOXOOX", "OOOOOOOOOOOOOOOO", "OXOOXOOXOOOOOXOO", "OOOOOOOOXXXXXOOO", "OOXO%OOX....OOO%", "OOO@OOX....OOO@O", "OO@OOX....OOO@OO", "$$@.@......@.@@$", "*@@.**@@XO...@Xo", "*@@***@@XO...@Xo", "*****.@@XO...@Xo", "****.@@@XO...@Xo", "....@@@@XO...@Xo", "@@@@@@@@XO...@Xo", "OOOOOOOOOO...@Xo", "OOOOOOOOO....@Xo", "OOXOOXOO.....@Xo", "OOOOOOO@@@@@@@Xo", "XOOXOOOOOOOOOOXo", "OOOOOOOOOOOOO#Xo", "OXOOXOOXOOOO$#Xo", "OOOOOOOOOOO$$#Xo", "OOOOOOOOOO$$$#Xo", "$$$$$$$$$$$$$#Xo", "Xo###$$$$$$$$$$$", "Xo####$$$$$$$$..", "Xo###########@@@", "Xo##########@@@@", "Xo#########@@@@@", "Xo########@@@@##", "Xo####$###@@@@##", "Xo########@@@@@@", "Xo#$######@@@@@@", "Xo########@@@@@@", "Xo#####$##@@@@##", "Xo########@@@@##", "Xo#$######@@@@##", "Xo########@@@@##", "Xooooooooo@@@@oo", "XXXXXXXXXX@@@@XX", "$$@..........@$$", "................", "@...............", "@@..............", "@@@.............", "##@@@#########@@", "##@@@#########@@", "@@@@OO@@@@XX@@@@", "@@@@OO@@@@%&@@@@", "@@@@OO@@@@XX@@@@", "@@@@@@@@@@@@@@@@", "@XX@XX@XX@@@XX@@", "@%&@%&@%&@@@%&@@", "@XX@XX@XX@@@XX@@", "oooooooooooooooo", "XXXXXXXXXXXXXXXX", "$$$$$$$$$$$$$#Xo", "....$$$$$$$$$#Xo", ".....$$$######Xo", "......$$######Xo", ".......$#$####Xo", "####@@@@######Xo", "####@@@@####$#Xo", "OO@@@@@@######Xo", "OO@@@@@@##$###Xo", "OO@@@@@@######Xo", "@@##@@@@######Xo", "@@##@@@@######Xo", "@@##@@@@######Xo", "@@##@@@@#$####Xo", "oooo@@@@oooooooo", "XXXX@@@@XXXXXXXX", "$$$$$$$$$$$$$$$$", "$ # ", "$ ## ", "$ $$ ", "$ # #", "$ @@@@@@@@@@@@", "$ # @@@@@@@@@@@@", "$ # @@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@.@@.@@.@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "$ @@@@@@@@@@@@", "$ @@@@@@@@@@@@", "$ @@@@@@@@@@@@", "$$$$$$$$$$$$$$$$", "@@@@@ # # # ", "@@@@@ $# # ", "@@@@@ ", "@@@@@ # # ", "@@@@@ $$ #-", "@@@@@ -.", "@@@@@ # # -..", "@@@@@ $ -...", "@@@@@ -X...", "@.@@@ -...X", "@@@@@ -X..XX", "@@@@@ --X.XXX", "@@@@@ # --..X.X", "@@@@@ -%-.X..X", "@@@@@ -%-.X.X.", "$$$$$$$$$$$$$$$$", " --------- ", " ---.......--", " --............", "--..............", "......XXXXXXXX..", "....XX........XX", "..XX............", ".X....XXXXXXX...", "X...XX.......XX.", "..XX...........X", "XX....XXXXXX....", "@..XXX......XX..", "..XX..........XX", ".X..X.X.X.X.X...", "X...............", "$$$$$$$$$$$$$$$$", " $", "- $", ".-- $", ". .-- $", ".....- $", "......- # $", "XX.....- $", "..XX...- $", "...XX...- $", "X...X...- # $", ".X..XX...- $", "..XXXXX..- $", "...X@XX..- $", "X..XX..X..- $", ".X..X..X..- $", "$ @@@@@@@@@@@@", "$ @@@@.@@.@@.@", "$ @@@@@@@@@@@@", "$ @@@@@@@@@@@@", "$ # @@@@@@@@@@@@", "$ $ @@@@@@@@@@@@", "$ @@@@@@@@@@@@", "$ @@@@@@@@@@@@", "$ @@@@.@@.@@.@", "$ @@@@@@@@@@@@", "$ @@@@@@@@@@@@", "$ @@@@@@@@@@@@", "$ @@@@@@@@@@@@", "$ @@@@@@@@@@@@", "$ @@@@@@@@@@@@", "$ @@@@.@@.@@.@", "@@@@@ .%%-.X.X.", "@.@@@ ..%%-...XX", "@@@@@X..%%-..X.X", "@@@@@@.%%%-..XX.", "@@@@@X%%%%-..XX.", "@@@@@%-%%%-..XX.", "@@@@@%%%%%-..XX.", "@@@@@%-%-%-..XX.", "@.@@@%-%%%-..XX.", "@@@@@%%%---..XX.", "@@@@@%-.---..XX@", "@@@@@%..-%-..XX.", "@@@@@X..---..XX.", "@@@@@@.----..XX.", "@@@@@X-%---..XX@", "@.@@@ -----..XX.", "XXXXXXXXXXXXXXXX", ".@@.............", "................", "XXXXXXXXXXXXXXXX", "X$$$$$$$$-$-$$$$", "X$$$$$$$---$$$$$", "X$$$$$$$-$$$$$$$", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$$#$#$#$#$#$#$$", "XXX.X..X..- $", "..X.X...X.- $", "..X..X..X.- $", "X..X.X..X.-+ $", "X..X.X..X.-+ $", "X..X.X..X.-+ $", "X..X.X..X.-+ $", "X..X.X..X.-+ $", "X..X.X..X.-+ $", "X..X.X..X.-+ $", "X..X.X..X.-+# $", "X@.X.X..X.-+ $", "X..X.X..X.-+ $", "X..X.X..X.-+ $", "X..X.X..X.-+ $", "X@.X.X..X.-+ $", "$ @@@@@@@@@@@@", "$ @@@@@@@@@@@@", "$ @@@@@@@@@@@@", "$ # @@@@@@@@@@@@", "$ @@@@@@@@@@@@", "$ @@@@@@@@@@@@", "$ @@@@.@@.@@.@", "$ @@@@@@@@@@@@", "$ @@@@@@@@@@@@", "$ @@@@@@@@@@@@", "$ @@@@@@@@@@@@", "$ @@@@@@@@@@@@", "$ @@@@@@@@@@@@", "$ @@@@.@@.@@.@", "$ @@@@@@@@@@@@", "$ @@@@@@@@@@@@", "@@@@@ -----..XX.", "@@@@@ -----..XX.", "@@@@@ -----..XX@", "@@@@@ -----..XX.", "@@@@@ -.---..XX.", "@@@@@ ..---..XX.", "@.@@@X..---..XX.", "@@@@@@.----..XX.", "@@@@@X-----..XX.", "@@@@@ -----..XX.", "@@@@@ -----..X.X", "@@@@@ -----...XX", "@@@@@ -----.X.XX", "@.@@@ -----@X...", "@@@@@ ----@@X...", "@@@@@ ---@@@%XX.", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$$$$$$$$-$-$$$$", "X$$$$$$$---$$$$$", "X$$$$$$$-$$$$$$$", "XXXXXXXXXXXXXXXX", "................", "XXXXXXXXXXXXXXXX", ".X..............", "..XX.X.X.X.X.XXX", "X..X.X..X.-+ $", "X..X.X..X.-+ $", "X..X.X..X.-+ $", "X@.X.X..X.-+ #$", "X..X.X..X.-+ $", "X..X.X..X.-+ $", "X..X.X..X.-+ $", "X..X.X..X.-+ $", "X..X.X..X.-+ $", "X..X.X..X.-+ $", "X.X..X..X.-+ $", "X.X.X...X.-+ $", "..X.X...X.-+# $", "XXX.X..X.X-+ $", "XX.X...X.-++ $", "...XX.X..-++ $", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@.@@.@@.@", "$ @@@@@@@@@@@", "$ # @@@@@@@@@@", "$ #@@@@@@@@@", "$ @@@@@@@@", "$ $$ # @@@@", "$ # ## @@@@", "$ ## @@@@", "$ $$ @@@@", "$ # @@@@", "$ @@@@", "$$$$$$$$$$$$@@@@", "@@@@@ @-@@@@%XXX", "@@@@@@@@@@@@@%XX", "@@@@@ @@@X@@@-..", "@@@@@ X@@@@@@-XX", "@.@@@ @@@X@@@-X", "@@@@@ @@@@@.@-", "@@@@@ @@@@.@@@", "@@@@@ @@.@@@.", "@@@@@ #@@@@.@", "@@ # ##@@.@@", "@@ $##@@@@", "@@ ###@@@", "@@ $ $ +@", "@@ + ", "@@ # # +", "@@$$$$$$$$$$$$$$", "X..XXXX.....XXX.", ".XX...XXXXXX....", "..XX...........X", "X...XX.......XX.", "XX....XXXXXXX...", "X.XX............", "--..XX........XX", "@@--..XXXXXXXX..", "@@@@--.........-", "@@.@@@---------@", "@.@@@.@@........", ".@@@.@@.@...X...", "@@@.@@.@.@.....+", ".@.@@.@.@....+++", " ..........+++++", "$$$$$$$$$$$$$$$$", ".XX@XXX.-+++ $", "XX.XXX..-+++ $", "X...X..-++++ $", "...XX.-+++$+ $", "..XX.-.++++ # $", "XX..-..+$++ $", "...-..++++ $", ".--..+++++ # $", "-%.++++++ $", "...++$++ $", "..+++++ $", "++++++ $", "+++$+ $", "$$++## ## $", "++++# # $", "$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$", "$ # ", "$ ## ", "$ $$ ", "$ # #", "$ @@@@@@@@@@@@", "$ # @@@@@@@@@@@@", "$ # @@@@@@@@@@@@", "@@@@@@@@&&@@OO@@", "@@@@@@@@&&@@OO@@", "@@@@@@@@##@.@@.@", "@@@@@@@@##@==$$@", "@@@@@@@@@@@==$$@", "$ @@@@@@@@@@@@", "$ @@@@@@@@@@@@", "$ @@@@@**@%%##", "$$$$$$$$$$$$$$$$", "@@@@@ # # # ", "@@@@@ $# # ", "@@@@@ ", "@@@@@ # # ", "@@@@@ $$ #-", "@@@@@ -.", "@@@@@ # # -..", "%%@@@ $ -..o", "%%@@@ -X.&.", "@.@@@ -...X", "++@@@ -X..XX", "++@@@ --X#XXX", "@@@@@ # --..X.X", "@@@@@ -%-.X.&X", "@@@@@ -%-.X.X.", "$$$$$$$$$$$$$$$$", " --------- ", " --=.....oO--", " --....O.O.....", "--....o...#....O", "......XXXXX&X#..", "..o&XX&.o.....XX", "*.XX..O.&.#..&.#", ".X.o#OOXXXooX..=", "o..&XX.O.*...XX.", "..XX&..#.=.#...X", "XX.o.OXXXXXX..#.", "@#.XXX.#...&XX..", "..XX.........*XX", ".X..X.X.X.X.X..O", "X......=........", "$$$$$$$$$$$$$$$$", " $", "- $", ".-- $", ". .-- $", ".....- $", ".#....- # $", "XX..&..- $", ".&XXO..- $", "...XXO..- $", "X.&#X...- # $", "oo..#X.#.- $", "o.XXXXo..- $", "&..X@XX..- $", "X.oXX#.X.#- $", ".X.*X..X..- $", "$ @@@@@**@%%##", "$ @@@@.@@.@@.@", "$ @@@@@&&@@XX@", "$ @@@@@&&@@XX@", "$ # @@@@@@@@@@@@", "$ $ @@@@@@@@@@@@", "$ @@@@@**@@$$@", "$ @@@@@**@@$$@", "$ @@@@.@@.@@.@", "$ @@@@==++@ &", "$ @@@@==++@ &", "$ @@@@@@@@@@@@", "$ @@@@@@@@@@@@", "$ @@@@..@@@@$$", "$ @@@@..@@@@$$", "$ @@@@.@@.@@%%", "@@@@@ .%%-.#.o.", "@.@@@ ..%%-...*X", "@@@@@X..%%-..X.X", "@@@@@@.%%%-.oXX.", "@@@@@X%%%%-..XX.", "@@@@@%-%%%-..XX.", "@@@@@%%%%%-.*XX.", "@@@@@%-%-%-..XX.", "@.@@@%-%%%-..#X.", "&@@@@%%%---..XX.", "&@@@@%-.---*.XX@", "@@@@@%..-%-.oXX.", "@@@@@X..---..XX.", "@@@@@@.----..Xo.", "@@@@@X-%---..XX@", "@.@@@ -----..XX.", "XXXXXXXXXXXXXXXX", ".@@.............", "O.....O.........", "XXXXXXXXXXXXXXXX", "X$$$$$$$$-$-$$$$", "X$$$$$$$---$$$$$", "X$$$$$$$-$$$$$$$", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$$#$#$#$#$#$#$$", "XXX.o..*..- $", "..X.X..oX.- $", "..X..O..X.- $", "X..X.X..&.-+ $", "XOOX.X.OX.-+ $", "X..XoX.oX.-+ $", "X..XoX.&X.-+ $", "X..X.X#.X.-+ $", "X..X#o..X*-+ $", "X..X#X..X.-+ $", "X..X.#..X.-+# $", "X@.o.X*.O.-+ $", "X..X.X=oX.-+ $", "X..=.X#.X.-+ $", "X..X.X..X.-+ $", "X@.X.Xo.&.-+ $", "$ @@@@@@ @@%%", "$ @@@@@@ @@@@", "$ @@@@@@@@@@@@", "$ # @@@@@@@@@@@@", "$ @@@@##@**@@=", "$ @@@@##@**@@=", "$ @@@@.@@.@@.@", "$ @@@@@@@@@@##", "$ @@@@@@@@@@##", "$ @@@@@@@@@@@@", "$ @@@@@@@@@@@@", "$ @@@@&&@@@$$+", "$ @@@@&&@@@$$+", "$ @@@@.@@.@@.@", "$ @@@@%%@==@@@", "$ @@@@%%@==@@@", "@@@@@ -----..XX.", "@@@@@ -----..oX.", "@@@@@ -----..XX@", "@@@@@ -----..XX.", "=@@@@ -.---.#XX.", "=@@@@ ..---..XX.", "@.@@@X..---.*X&.", "@@@@@@.----..XX.", "@@@@@X-----..XX.", "@@@@@ -----.O&*.", "@@@@@ -----..X.X", "+@@@@ -----...XX", "+@@@@ -----.X.XX", "@.@@@ -----@Xooo", "@@@@@ ----@@X..*", "@@@@@ ---@@@%XX.", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$$$$$$$$-$-$$$$", "X$$$$$$$---$$$$$", "X$$$$$$$-$$$$$$$", "XXXXXXXXXXXXXXXX", "................", "XXXXXXXXXXXXXXXX", ".X.#.O........*.", "..XX.X.X.X.X.XXX", "X..XoO.#X.-+ $", "XO=XoXOOX.-+ $", "X..X.Xo.O*-+ $", "X@.X.#.oX.-+ #$", "X..X.X..o.-+ $", "X..X.*.#Xo-+ $", "X.OX.X..X.-+ $", "X..X.X*.X.-+ $", "X..X*Xo=X.-+ $", "X..X.X..o.-+ $", "X.X.#Xo.X.-+ $", "X.X.X.#.X.-+ $", "..X.Xo..o.-+# $", "XXX.O.&X.X-+ $", "XX.Xo..X.-++ $", "..=XXoX..-++ $", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@**@@@@@@@XX@@$", "@@**@@@@@@@XX@@$", "@@@@@@@@.@@.@@.@", "$ @@@@@@@@@@=", "$ # @@@@@@@@@=", "$ #@@@@@@@@@", "$ @@@@@@@@", "$ $$ # @@@@", "$ # ## @@@@", "$ ## @@@@", "$ $$ @@##", "$ # @@##", "$ @@@@", "$$$$$$$$$$$$@@@@", "@@@@@ @-@@@@%XXX", "@@@@@@@@@@@@@%XX", "$@@@@ @@@X@@@-..", "$@@@@ X@@@@@@-XX", "@.@@@ @@@X@@@-X", "=@@@@ @@@@@.@-", "=@@@@ @@@@.@@@", "@@@@@ @@.@@@.", "@@@@@ #@@@@.@", "@@ # ##@@.@@", "@@ $##@@@@", "@@ ###@@@", "@@ $ $ +@", "@@ + ", "@@ # # +", "@@$$$$$$$$$$$$$$", "X#*XXXX*....XXX.", ".=X.=.oXXXXX.*..", ".oXX...O..&.##.=", "X..oo=..O....XX.", "XX.o..XX#XX&X...", "X.XX..*o.O.=.O..", "--..XX....o.o.OX", "@@--..XX*XXX#XOO", "@@@@--.........-", "@@.@@@---------@", "@.@@@.@@........", ".@@@.@@.@...X...", "@@@.@@.@.@.....+", ".@.@@.@.@....+++", " ..........+++++", "$$$$$$$$$$$$$$$$", ".XXooXX.-+++ $", "*X=XXX..-+++ $", "X.o.X..-++++ $", "..OXX.-+++$+ $", "o.XX.-.++++ # $", "OX..-..+$++ $", "...-..++++ $", ".--..+++++ # $", "-%.++++++ $", "...++$++ $", "..+++++ $", "++++++ $", "+++$+ $", "$$++## ## $", "++++# # $", "$$$$$$$$$$$$$$$$", "X***************", "X*XXXXXXXXXXXXXX", "X* + ", "X* + ", "X* -*.......", "X* --........", "X* ---.@X.....", "X* ----.@X.....", "X* -----........", "X* -@---........", "X* -----........", "X* -----.......%", "X* -@---......%%", "X* -----.....%-%", "X* -----.....%%%", "X* -@---....%%%%", "***********%%%&%", "XXXXXXXXX%%@@@@@", " %@.X.X.X", " %@.X.X.X.", "......%@.X.X.X.X", "......%.X.X.X.X.", ".....%@X.X.X.X.X", ".....%X.X.X.X.X.", "....-%.X.X.X.X.X", "..%%-&X.X.X.X.X.", "%%%%-%.X.X.X.X.X", "%%%%-%X.X.X.X.X.", "%%%%-%@X.X.X.X.X", "%%%%--%.X.X.X.X.", "%%%---%@.X.X.X.X", "%%%----%@.X.X.X.", "%%**************", "@@%%XXXXXXXXXXXX", ".X.@% %", "X.X.@% %@", ".X.X.@%......%@.", "X.X.X.%......%.X", ".X.X.X@%....%@X.", "X.X.X.@%....%X.X", ".X.X.X@%...-%.X.", "X.X.X.@&.%%-&X.X", ".X.X.X@%-%%-%.X.", "X.X.X.@%-%%-%X.X", ".X.X.X@%-%%-%@X.", "X.X.X.%--%%--%.X", ".X.X.@%-%%---%@.", "X.X..%-%%%----%@", "**%%%&%%%*******", "%%@@@@@@@%%XXXX*", "@.X.X.X.X.@% X*", ".X.X.X.X.X.@% X*", "X.X.X.X.X.X.@%X*", ".X.X.X.X.X.X.%X*", "X.X.X.X.X.X.X@%*", ".X.X.X.X.X.X.@%*", "X.X.X.X.X.X.X@%*", ".X.X.X.X.X.X.@&*", "X.X.X.X.X.X.X@%*", ".X.X.X.X.X.X.@%*", "X.X.X.X.X.X.X@%*", ".X.X.X.X.X.X.%X*", "X.X.X.X.X.X.@%X*", ".X.X.X.X.X..% X*", "X* -----....%%%%", "X* -----....%%%%", "X* -@---....%-%%", "X* -----....%%--", "X* -----....%---", "X* -@---....----", "X* -----.....--@", "X* -----.....---", "X* -@---......--", "X* -----.......-", "X* -----........", "X* -@---.@X.....", "X* -----.@X.....", "X* -----........", "X* -@---.......-", "X* -----*......-", "%%------%@.X.X.X", "%--------%%@X.X.", "---------@@%%%&%", "--------@@@@@@@@", "------@@@@@@@@@@", "-----@@@@@@@@@@.", "----@@@@@@@@@@..", "---@@@@@@@@@@@..", "---@@@@@@@.@@...", "--@@.@@@@@@@....", "-@@@@@@@@@@.....", "..@@@@@@@.......", "................", "....X.X.X.......", "----------------", "@@@@@@@@@@@@@@@@", ".X.@%-%%%------%", "X@%%-%%%--------", "%%.--%%---------", "@..-%----------@", "...%---------@@@", "...---------@@@@", "....--@----@@@@@", "....------@@@@@@", ".....-----@@@@@@", "......---@@.@@@@", ".......-@@@@@@@@", ".........@@@@@@@", "................", "................", "--..............", "@-..............", "@.X.X.X.X.@% X*", "%%@X.X.X@%% X*", "@@%%%&%%%.. X*", "@@@@@@@@... X*", "@@@@@@@....+ X*", "@@@@@@.....+ X*", "@@@@@......+ X*", "@@@@@......+ X*", "@.@@.......+ X*", "@@@........+ X*", "@@.........+ X*", "...........+ X*", "........@X.+ X*", "........@X.+ X*", "...........+ X*", "..........*+ +X*", "X* ----@@@@@@@@-", "X* -@-@@@@@@@@@-", "X* --@@@@@@@@@@-", "X* -@@@@@@@@@@--", "X* @@@@@@@@@@-@-", "X* ++++++++-@--", "X* +++++++@-@-", "X* ++++++-@--", "X* +++++@---", "X* ++++----", "X* -@--", "X* ----", "X* -@--", "X* + ----", "X* -@--", "X* #$ ----", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@...@@@@@...@@", "@@.@@@..@..@@@.@", "@@.@@@@@.@@@@@.@", "@@*@@@@*@.@@@@.@", "@@@.@@.@@@.@@.@@", "@@@.@.@@&@@.@.@@", "@@@@.@@&&=@@.@@@", "@@@.@.@@=@@.@.@@", "@@@.@@.@@@.@@.@@", "@@.@@@@.@*@@@@*@", "@@.@@@@@.@@@@@.@", "@@.@@@..@..@@@.@", "@@@...@@@@@...@@", "@@@@@@@@@@@@@@@@", "@-@@.@.@.@@@@@@@", "@-@@@@@@@@@@@@@@", "@-..............", "@-..............", "@-.........*....", "@-........*.....", "@-.......*......", "@-......*.......", "@-.....*........", "@-....*****.....", "@-...*****......", "@-......*.......", "@-.....*.....@@@", "@-....*......@@@", "@-...*..........", "@-..*........@@@", "@@@@@@@@@@@+ X*", "@@@@@@@@@@++ X*", "......@@@+++ X*", "......@@++++ X*", "......@+++++ X*", "......++++++ X*", "......++++++ X*", "......++++++ X*", "......++++++ X*", "......++++++ X*", "......+ X*", "......+ X*", "@@@@.++ + X*", "@@@.+++ X*", "...@@@@--==-----", "@@@@@@@--==-----", "X* $$ -@--", "X* + ----", "X* + -@-@", "X* #$ ---.", "X* $$ -@-.", "X* + --@@", "X* + -@@@", "X* #$ @@@@", "X* $$ +++", "X* + ++", "X* + +", "X* ", "X* + ", "X* ", "X***************", "XXXXXXXXXXXXXXXX", "@@@@@@@@@@@@@@@@", "@.@.@.@.@.@.@.@.", ".@.@.@.@.@.@.@.@", "................", "................", "@@@@@@@@@@@@@@@@", ".@.@.@.@@@@@@@@@", "@@@@@@@@@@@@@@@@", "++++++++++++++++", "++++++++++++++++", "++++++++++++++++", "++++++++++++++++", " ", " ", "****************", "XXXXXXXXXXXXXXXX", "@-...........@@@", "@............@@@", ".............@@@", ".............@--", ".............@--", "@@@@@@@@@@@@.@--", "@@@.@.@@.@@.@@--", "@@@@@@@@@@.@@@--", "++++++++++@@@$#-", "++++++++++@@@$#-", "++++++++++@@@@--", "++++++++++++++ ", " ", "+ ", "****************", "XXXXXXXXXXXXXXXX", "@@@@@@@---------", "@@@@@@@---------", "@@@@@@@---------", "----------------", "------------- X*", "------------- X*", "------------- X*", "------------- X*", "OO----------- X*", "OO----------- X*", "------------- X*", " X*", " -%-% X*", " %%-%+ X*", "****************", "XXXXXXXXXXXXXXXX", "&&&&&&&&&&&&&&&&", "&&.............&", "&.&@@@@@@@@@@@.&", "&.@&@@@@@@@@@*.&", "&.@@&@@@@@@@*@.&", "&.@@@&@@*@@*@@.&", "&.@@@@&**@*@@@.&", "&.@@@@*&**@@@@.&", "&.@@@***&@@@@@.&", "&.@@*@**@&@@@@.&", "&.@*@@*@@@&@@@.&", "&.*@@@@@@@@&@@.&", "&.@@@@@@@@@@&@.&", "&.@@@@@@@@@@@&.&", "&.............&&", "&&&&&&&&&&&&&&&&", "oo.........@oooo", "o....%....@ooooo", "....%....@oooooo", "...%....@oooooOo", "..%....@oooooooo", "......@oOOoooooo", ".....@OOOOoooooo", "....@OOOOOoooooo", "...@OOOOOOoooooo", "..@OOOOOOOooOooo", ".@OOOOOOOOoooooo", "@OOOOOOOoooooooo", "OOOOOOoooOoooooo", "OOOOoooooooooOoo", "oooooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "ooooooooOooooooo", "ooOooooooooooooo", "ooooooooooooooo@", "oooooooooooOoo.@", "ooooooOoooooo..@", "oooooooooooo...@", "ooooOoooooo....@", "oooooooooo.....@", "ooooooooo......@", "ooOooooo....%..@", "ooooooo....%...@", "oooooo....%....@", "ooooo....%....@o", "oooo.........@oo", "ooo.........@ooo", "oo@@@@@@@@@-oooo", "o@@@@@@@@@-ooooo", "@.@@@@@.@-ooXXoo", "@@@@@@@@-.......", "@@@@@@@-........", "@@@@@@-.........", "@@@@@-..........", "@@@@-.....%%%%..", "@.@-............", "@@-.............", "@-..............", "-...............", "OOOOXXOOOOOOXXOO", "OOOXXOOOOOOXXOOO", "oooooOOooooooOOo", "oooooooooooooooo", "ooooooooOooooooo", "oooooooooooooooo", "oooOoooooooooooo", "ooooooooooooooo-", "oooooooooooOoo@-", "ooooooOoooooo@@-", "oooooooooooo@.@-", "ooooOoooooo@@@@-", "oooooooooo@@@@@-", "ooooooooo@@@@@@-", "ooOooooo@@@@@@@-", "ooooooo@@@@@@@@-", "oooooo@.@@@@@.@-", "ooooo@@@@@@@@@-o", "oooo@@@@@@@@@-oo", "ooo@@@@@@@@@-ooo", "****************", " ", " ", " ", " XXX ", " . X.. ", " . X ", " . X - ", " . XX ", " +XX + ", " X + ", " o + o ", "................", "................", "................", "................", "****************", " ", " ", " ", " ", " . ", " XXXXX ", " X.....X ", " X. - X ", " + ", " + ", " o +++++o ", "................", "................", "................", "................", "****************", " ", " ", " ", " XXX ", " ...X . ", " .X ", " -.X ", " . .X ", " + .X ", " ++.X ", " o + o ", "................", "................", "................", "................", "****************", " X ", " .X ", " .X ", " .X ", " -.X. ", " .X ", " .X ", " .X + ", " X+ + ", " ++ ", " o + o ", "................", "................", "................", "................", "********X*******", " .X ", " .X ", " - X ", " X ", " XXX . ", " XXX . ", " . ", " . + ", " + + ", " + + ", " o + o ", "................", "................", "................", "................", "****************", " ", " X X ", " XX - XX ", " XXXXXXX ", " XX.XX ", " . ", " . ", " . ", " + ", " + ", " o +++++o ", "................", "................", "................", "................", "******X*********", " X. ", " X. ", " XX.- ", " XX. ", " .XX... ", " . XXXX ", " . ", " . ", " ++ ", " + ", " o + o ", "................", "................", "................", "................", "****************", " X ", " X. ", " X. ", " X. ", " .X.- ", " . X. ", " . X. ", " . +X. ", " + + X ", " ++ ", " o + o ", "................", "................", "................", "................", "$$$$$$@@$$$$$$$$", "$#####@@#######$", "$#####@@#######$", "$#####@@#######$", "$#####@@%#%####$", "$#####@%###%###$", "$####@@@@%##%##$", "$###-oooo@#%###$", "@@@@-oo%o@@@@@@@", "@@@@-oooo@@@@@@@", "$##@-oooo@@####$", "$###@....@#####$", "$####@@@@######$", "$#####@@#######$", "$#####@@#######$", "$$$$$$@@$$$$$$$$", "$$$$$$@@$$$$$$$$", "$#####@@#######$", "$#####@@#######$", "$#####@@#%#####$", "$#####@@##%####$", "$#####@%##%####$", "$####@@@@###%##$", "$###-ooo%@#%###$", "@@@@-ooXo@%@@@@@", "@@@@-oooo@@@@@@@", "$##@-oooo@@####$", "$###@....@#####$", "$####@@@@######$", "$#####@@#######$", "$#####@@#######$", "$$$$$$@@$$$$$$$$", "$$$$$$@@$$$$$$$$", "$#####@@#######$", "$#####@@#######$", "$#####@@#%#####$", "$#####@@%#%####$", "$#####@@###%###$", "$####@@@@%#####$", "$###-oooo@#%###$", "@@@@-oo%o@%@@@@@", "@@@@-oooo@@@@@@@", "$##@-oooo@@####$", "$###@....@#####$", "$####@@@@######$", "$#####@@#######$", "$#####@@#######$", "$$$$$$@@$$$$$$$$", "$$$$$$@@$$$$$$$$", "$#####@@#######$", "$#####@@#######$", "$#####@@#%#####$", "$#####@@%######$", "$#####@%##%%###$", "$####@@@@###%##$", "$###-ooo%@#####$", "@@@@-oo%o@%@@@@@", "@@@@-oooo@@@@@@@", "$##@-oooo@@####$", "$###@....@#####$", "$####@@@@######$", "$#####@@#######$", "$#####@@#######$", "$$$$$$@@$$$$$$$$", " ", " ", " ", " ", " XXX ", " . X.. ", " . X ", " . X - ", " . XX ", " +XX + ", " X + ", " o + o ", "................", "................", "................", "................", " ", " ", " ", " ", " ", " . ", " XXXXX ", " X.....X ", " X. - X ", " + ", " + ", " o +++++o ", "................", "................", "................", "................", " ", " ", " ", " ", " XXX ", " ...X . ", " .X ", " -.X ", " . .X ", " + .X ", " ++.X ", " o + o ", "................", "................", "................", "................", " ", " X ", " .X ", " .X ", " .X ", " -.X. ", " .X ", " .X ", " .X + ", " X+ + ", " ++ ", " o + o ", "................", "................", "................", "................", " X ", " .X ", " .X ", " - X ", " X ", " XXX . ", " XXX . ", " . ", " . + ", " + + ", " + + ", " o + o ", "................", "................", "................", "................", " ", " ", " X X ", " XX - XX ", " XXXXXXX ", " XX.XX ", " . ", " . ", " . ", " + ", " + ", " o +++++o ", "................", "................", "................", "................", " X ", " X. ", " X. ", " XX.- ", " XX. ", " .XX... ", " . XXXX ", " . ", " . ", " ++ ", " + ", " o + o ", "................", "................", "................", "................", " ", " X ", " X. ", " X. ", " X. ", " .X.- ", " . X. ", " . X. ", " . +X. ", " + + X ", " ++ ", " o + o ", "................", "................", "................", "................", "****************", "* %& ", "* %-@ ", "* ++%-@. ++++ ", "* -+%-@. -+%#+ ", "* -+-@.+ -+-@.+ ", "* -+X.X+ -+X.X+ ", "* -+++++ -+++++ ", "* -....+ -....%&", "* +++++ +++%-@", "* ++++ ++%-@.", "* -+%#+ -+%-@. ", "* -+-@.+ -+-@.+ ", "* -+X.X+ -+X.X+ ", "* -+++++ -+++++ ", "* -....+ -....+ ", "****************", "* ", "* %# ", "* ++%-@ ++%# ", "* -+%-@. -+%-@ ", "* -+-@.+ -+-@.+ ", "* -+X.X+ -+X.X+ ", "* -+++++ -+++++ ", "* -....+ -....+ ", "* +++++ +++%# ", "* ++++ ++%-@ ", "* -+%#+ -+%-@. ", "* -+-@.+ -+-@.+ ", "* -+X.X+ -+X.X+ ", "* -+++++ -+++++ ", "* -....+ -....+ ", "****************", "* ", "* %# ", "* ++%# ++%-@ ", "* -+%-@ -+%-@. ", "* -+-@.+ -+-@.+ ", "* -+X.X+ -+X.X+ ", "* -+++++ -+++++ ", "* -....+ -....+ ", "* +++++ +++++ ", "* ++%# ++%# ", "* -+%-@ -+%-@ ", "* -+-@.+ -+-@.+ ", "* -+X.X+ -+X.X+ ", "* -+++++ -+++++ ", "* -....+ -....+ ", "****************", "* %&", "* %-@", "* ++++ ++%-@.", "* -+%#+ -+%-@. ", "* -+-@.+ -+-@.+ ", "* -+X.X+ -+X.X+ ", "* -+++++ -+++++ ", "* -....+ -....+ ", "* +++%# +++++ ", "* ++%-@ ++++ ", "* -+%-@. -+%#+ ", "* -+-@.+ -+-@.+ ", "* -+X.X+ -+X.X+ ", "* -+++++ -+++++ ", "* -....+ -....+ ", "****************", "* %&", "* %-@", "* ++++ ++%-@.", "* -+%#+ -+%-@. ", "* -+-@.+ -+-@.+ ", "* -+X.X+ -+X.X+ ", "* -+++++ -+++++ ", "* -....%&-....+ ", "* +++%-@ +++++ ", "* ++%-@. ++++ ", "* -+%-@. -+%#+ ", "* -+-@.+ -+-@.+ ", "* -+X.X+ -+X.X+ ", "* -+++++ -+++++ ", "* -....+ -....+ ", "****************", "* ", "* %# ", "* ++%# ++%-@ ", "* -+%-@ -+%-@. ", "* -+-@.+ -+-@.+ ", "* -+X.X+ -+X.X+ ", "* -+++++ -+++++ ", "* -....%&-....+ ", "* +++%-@ +++++ ", "* ++%-@. ++%# ", "* -+%-@. -+%-@. ", "* -+-@.+ -+-@.+ ", "* -+X.X+ -+X.X+ ", "* -+++++ -+++++ ", "* -....+ -....+ ", "****************", "* ", "* %# ", "* ++%-@ ++%# ", "* -+%-@. -+%-@ ", "* -+-@.+ -+-@.+ ", "* -+X.X+ -+X.X+ ", "* -+++++ -+++++ ", "* -....+ -....+ ", "* +++%# +++%# ", "* ++%-@ ++%-@ ", "* -+%-@. -+%-@. ", "* -+-@.+ -+-@.+ ", "* -+X.X+ -+X.X+ ", "* -+++++ -+++++ ", "* -....+ -....+ ", "****************", "* %& ", "* %-@ ", "* ++%-@. ++++ ", "* -+%-@. -+%#+ ", "* -+-@.+ -+-@.+ ", "* -+X.X+ -+X.X+ ", "* -+++++ -+++++ ", "* -....+ -....%&", "* +++++ +++%-@", "* ++%# ++%-@.", "* -+%-@ -+%-@. ", "* -+-@.+ -+-@.+ ", "* -+X.X+ -+X.X+ ", "* -+++++ -+++++ ", "* -....+ -....+ ", " ", " ", " ", " ", " ", " ", " &.& ", " .&. ", " &.& ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " & . & ", " .&.. ", " &*& ", " .&& ", " & . & ", " ", " ", " ", " ", " ", " ", " ", " ", " . ", " ", " && & & ", " &&&=&& ", " . ***.& ", " &*.*& . ", " =***=& ", " & & & & ", " .&& & ", " & ", " & . ", " ", " ", " ", " ", " ", " + + . && ", " & .& &&& ", " &&&=**=&&& & ", " &=**+*=& . ", " &*&**&*& ", " &=*&*&**=&+. ", " =*****& ", "+.=& ==&=&&&& ", " &&&&&=&& && ", " &&&& && & ", " & &&+ . ", " & & ", " . ", " ", "& ", " & & & & & ", " &+ & . && &", " &&& .& X & & ", " &&&&*+ = & & ", " &=++= ++ .X ", " &+= =&+ . ", "&&& += = +*+&&& ", " =+ *+= ++ & ", "+.X =++ =+= ", "& && & && & ", " && & && & ", " && &&+ X . & ", " && & & ", "& . ", " ", "& ", " & + & & & & ", " &+ & . && &", " & X.& X+& . +", " &+ &* .& & ", " + +++X + + ", " X + ", "&&& ++ X +*X & ", " + *++ ++ & ", "+. X+++ ++ + ", "& & & &X X& ", " &X & && . & ", " &&+ X. X & ", " && & X + ", "& .+ + ", " ", "X X ", " &X + ++ + ", " + X X. X X&", " X +.X +.X+ +", " . X + XX X ", " ++ + +X . +. ", " X+. + X. +X+ ", " & X+X+ + + & ", " + X. X + ", " .X+X++ + X +. ", " + X & X & ", " & + . X X + ", " . +X ..+ & ", " & &. . X X+ ", "& X X+. + ", " ", " XX X XX ", " + X X X", " X X++ X+X X ", " X+X ++X+ ", " X X XX ++X X+", "XX X X + X X++ ", " X X+ X X", "X X X + ", "++XX XX +XX XX", "+ X+X X X ++ X", "+ XX + X ", " XX X X X", " X X XX", "X X X X ", " XXXX XX X ", " X XX ", " XXXXXXXXXXXXXXX", "-X%X%X%%%%%%%%%X", "-%X%XX%%%%%%%%%X", "-%%X%X%%%%%%%X%X", "-%X%XX%%%%%%%%%X", "-X%X%X%%%%%%%%%X", "-%X%XX%%%%%%%X%X", "-%%X%X%%%%%%%%%X", "-%X%XX%%%%%%%%%X", "-X%X%X%%%%%%%X%X", "-%X%XX%%%%%%%%%X", "--%X%X%%%%%%%%%X", "--X%XX%%%%%%%X%X", " X%X%X%%%%%%%%%X", " %X%XX%%%%%%%%%X", "XXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXX", "XX%X%X%%%%%%%%%X", "X%X%XX%%%%%%%%%X", "X%%X%X%%%%%X%%%X", "X%X%XX%%%%%%%%%X", "XX%X%X%%%%%%%%%X", "X%X%XX%%%%%X%%%X", "X%%X%X%%%%%%%%%X", "X%X%XX%%%%%%%%%X", "XX%X%X%%%%%X%%%X", "X%X%XX%%%%%%%%%X", "X%%X%X%%%%%%%%%X", "X%X%XX%%%%%X%%%X", "XX%X%X%%%%%%%%%X", "X%X%XX%%%%%%%%%X", "XXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXX", "XX%X%X%%%%%%%%%X", "X%X%XX%%%%%%%%%X", "X%%X%X%%%X%%%%%X", "X%X%XX%%%%%%%%%X", "XX%X%X%%%%%%%%%X", "X%X%XX%%%X%%%%%X", "X%%X%X%%%%%%%%%X", "X%X%XX%%%%%%%%%X", "XX%X%X%%%X%%%%%X", "X%X%XX%%%%%%%%%X", "X%%X%X%%%%%%%%%X", "X%X%XX%%%X%%%%%X", "XX%X%X%%%%%%%%%X", "X%X%XX%%%%%%%%%X", "XXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXX", "XX%X%X%%%%%%%%%X", "X%X%XX%%%%%%%%%X", "X%%X%X%X%%%%%%%X", "X%X%XX%%%%%%%%%X", "XX%X%X%%%%%%%%%X", "X%X%XX%X%%%%%%%X", "X%%X%X%%%%%%%%%X", "X%X%XX%%%%%%%%%X", "XX%X%X%X%%%%%%%X", "X%X%XX%%%%%%%%%X", "X%%X%X%%%%%%%%%X", "X%X%XX%X%%%%%%%X", "XX%X%X%%%%%%%%%X", "X%X%XX%%%%%%%%%X", "XXXXXXXXXXXXXXXX", "X%%X%X%X%%X%X%%X", "X%%XX%X%%%X%X%%X", "X%%X%X%%%%X%X%%X", "XXXXX%%%%%X%X%%X", "X%%X%%%%%%X%X%%X", "X%%X%%%X%%X%X%%X", "X%%X%%XX%%X%X%%X", "X%%X%X%X%%X%X%%%", "XXXXX%XX%%X%X%%%", "X%%XXX%X%%X%X%%%", "X%%XX%XX%%X%XXXX", "X%%XXX%X%%X%%%%%", "X%%XX%X%%%XXXXXX", "X%%XXX%%%X%X%X%X", "XXXXX%%%X%X%X%X%", "X%%X%%%XXXXXXXXX", "X%%X%X%X%%X%X%%X", "X%%XX%X%%%X%X%%X", "X%%X%X%%%%X%X%%X", "XXXXX%%%%%X%X%%X", "X%%X%%%%%%X%X%%X", "X%%X%%%X%%X%X%%X", "X%%X%%XX%%X%X%%X", "X%%X%X%X%%X%X%%%", "XXXXXXXX%%X%X%%%", "X%%X%X%X%%X%X%%%", "X%%X%XXX%%X%XXXX", "X%%X%X%X%%X%%%%%", "X%%X%XX%%%XXXXXX", "X%%X%X%%%X%X%X%X", "XXXXX%%%X%X%X%X%", "X%%X%%%XXXXXXXXX", "X%%X%X%X%%X%X%%X", "X%%XX%X%%%X%X%%X", "X%%X%X%%%%X%X%%X", "XXXXX%%%%%X%X%%X", "X%%X%%%%%%X%X%%X", "X%%X%%%X%%X%X%%X", "X%%X%%XX%%X%X%%X", "X%%X%XXX%%X%X%%%", "XXXXX%XX%%X%X%%%", "X%%X%%XX%%X%X%%%", "X%%X%%XX%%X%XXXX", "X%%X%%XX%%X%%%%%", "X%%X%%X%%%XXXXXX", "X%%X%X%%%X%X%X%X", "XXXXX%%%X%X%X%X%", "X%%X%%%XXXXXXXXX", "X%%X%X%X%%X%X%%X", "X%%XX%X%%%X%X%%X", "X%%X%X%%%%X%X%%X", "XXXXX%%%%%X%X%%X", "X%%X%%%%%%X%X%%X", "X%%X%%%X%%X%X%%X", "X%%X%%XX%%X%X%%X", "X%%X%X%X%%X%X%%%", "XXXXX%%X%%X%X%%%", "X%%X%%XX%%X%X%%%", "X%%X%%XX%%X%XXXX", "X%%X%%XX%%X%%%%%", "X%%X%%X%%%XXXXXX", "X%%X%X%%%X%X%X%X", "XXXXX%%%X%X%X%X%", "X%%X%%%XXXXXXXXX", "%% %%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "X%%X%X%%%%X%X%%X", "XXXXX%%%%%X%X%%X", "X%%X%%%%%%X%X%%X", "X%%X%%%X%%X%X%%X", "X%%X%%XX%%X%X%%X", "X%%X%X%X%%X%X%%%", "XXXXX%%X%%X%X%%%", "X%%XXXXX%%X%X%%%", "X%%XXXXX%%X%XXXX", "X%%XXXXX%%X%%%%%", "X%%X%%X%%%XXXXXX", "X%%X%X%%%X%X%X%X", "XXXXX%%%X%X%X%X%", "X%%X%%%XXXXXXXXX", "%%%X%X%X%%X%X%%X", "%%%XX%X%%%X%X%%X", "X%%X%X%%%%X%X%%X", "XXXXX%%%%%X%X%%X", "X%%X%%%%%%X%X%%X", "X%%X%%%X%%X%X%%X", "X%%X%%XX%%X%X%%X", "X%%X%X%X%%X%X%%%", "XXXXX%%X%%X%X%%%", "XXXXXXXX%%X%X%%%", "XXXXXXXX%%X%XXXX", "XXXXXXXX%%X%%%%%", "X%%X%%X%%%XXXXXX", "X%%X%X%%%X%X%X%X", "XXXXX%%%X%X%X%X%", "X%%X%%%XXXXXXXXX", "X%%X%X%X%%X%X%%X", "X%%XX%X%%%X%X%%X", "X%%X%X%%%%X%X%%X", "XXXXX%%%%%X%X%%X", "X%%X%%%%%%X%X%%X", "X%%X%%%X%%X%X%%X", "X%%X%%XX%%X%X%%X", "X%%X%X%X%%X%X%%%", "XXXXX%%X%%X%X%%%", "XXXXXX%X%%X%X%%%", "XXXXXX%X%%X%XXXX", "XXXXXX%X%%X%%%%%", "X%%X%%X%%%XXXXXX", "X%%X%X%%%X%X%X%X", "XXXXX%%%X%X%X%X%", "X%%X%%%XXXXXXXXX", "X%%X%X%X%%X%X%%X", "X%%XX%X%%%X%X%%X", "X%%X%X%%%%X%X%%X", "XXXXX%%%%%X%X%%X", "X%%X%%%%%%X%X%%X", "X%%X%%%X%%X%X%%X", "X%%X%%XX%%X%X%%X", "X%%X%X%X%%X%X%%%", "XXXXX%%X%%X%X%%%", "XXXX%%%X%%X%X%%%", "XXXX%%%X%%X%XXXX", "XXXX%%%X%%X%%%%%", "X%%X%%X%%%XXXXXX", "X%%X%X%%%X%X%X%X", "XXXXX%%%X%X%X%X%", "X%%X%%%XXXXXXXXX", "X%%X%X%X%%X%X%%X", "X%%XX%X%%%X%X%%X", "X%%X%X%%%%X%X%%X", "XXXXX%%%%%X%X%%X", "X%%X%%%%%%X%X%%X", "X%%X%%%X%%X%X%%X", "X%%X%%XX%%X%X%%X", "X%%X%XXX%%X%X%%%", "XXXXX%XX%%X%X%%%", "X%%X%%XX%%X%X%%%", "X%%X%%XX%%X%XXXX", "X%%X%%XX%%X%%%%%", "X%%X%%X%%%XXXXXX", "X%%X%X%%%X%X%X%X", "XXXXX%%%X%X%X%X%", "X%%X%%%XXXXXXXXX", "X%%X%X%X%%X%X%%X", "X%%XX%X%%%X%X%%X", "X%%X%X%%%%X%X%%X", "XXXXX%%%%%X%X%%X", "X%%X%%%%%%X%X%%X", "X%%X%%%X%%X%X%%X", "X%%X%%XX%%X%X%%X", "X%%X%X%X%%X%X%%%", "XXXXXXXX%%X%X%%%", "X%%X%X%X%%X%X%%%", "X%%X%XXX%%X%XXXX", "X%%X%X%X%%X%%%%%", "X%%X%XX%%%XXXXXX", "X%%X%X%%%X%X%X%X", "XXXXX%%%X%X%X%X%", "X%%X%%%XXXXXXXXX", "X%%X%X%X%%X%X%%X", "X%%XX%X%%%X%X%%X", "X%%X%X%%%%X%X%%X", "XXXXX%%%%%X%X%%X", "X%%X%%%%%%X%X%%X", "X%%X%%%X%%X%X%%X", "X%%X%%XX%%X%X%%X", "X%%X%X%X%%X%X%%%", "XXXXX%XX%%X%X%%%", "X%%XXX%X%%X%X%%%", "X%%XX%XX%%X%XXXX", "X%%XXX%X%%X%%%%%", "X%%XX%X%%%XXXXXX", "X%%XXX%%%X%X%X%X", "XXXXX%%%X%X%X%X%", "X%%X%%%XXXXXXXXX", "X%%X%X%X%%X%X%%X", "X%%XX%X%%%X%X%%X", "X%%X%X%%%%X%X%%X", "XXXXX%%%%%X%X%%X", "X%%X%%%%%%X%X%%X", "X%%X%%%X%%X%X%%X", "X%%X%%XX%%X%X%%X", "X%%X%X%X%%X%X%%%", "XXXXX%XX%%X%X%%%", "X%%X%X%X%%X%X%%%", "X%%XX%XX%%X%XXXX", "X%%X%X%X%%X%%%%%", "X%%XX%X%%%XXXXXX", "X%%XXX%%%X%X%X%X", "XXXXX%%%X%X%X%X%", "X%%X%%%XXXXXXXXX", "****************", " *", " *", "-------------- *", "@@@@@@@@@@@@=. *", "@@@@@@@@@@@@@. *", "@@@@@@@@@@@@@. *", "@@@@@@@@@@@@@ .*", "@@@@@@@@@@@@ +", "@@@@@@@@@@ ++*", "@@@@@@@@ ++ ++ *", "@@@@@@@+ +@+@.+*", "@@@@@ +@@@@.+*", "@@@@ +@+@@@@@.+*", "@@.X++@@@@@@@.+*", "@.XXX@@@@@@@@.+*", "****************", " *", " *", "-------------- *", "@@@@@@@@@@@@=. *", "@@@@@@@@@@@@@. *", "@@@@@@@@@@@@@. *", "@@@@@@@@@@@@@ .", "@@@@@@@@@@@@ + +", "@@@@@@@@@@ + +*", "@@@@@@@@ +@+ + *", "@@@@@@++ + +@.+*", "@@@@@@@ @@@@@.+*", "@@@@ ++@@@@@.+*", "@@.X++@@@@@@@.+*", "@.XXX@@@@@@@@.+*", "****************", " *", " *", "-------------- *", "@@@@@@@@@@@@=. *", "@@@@@@@@@@@@@. *", "@@@@@@@@@@@@@. *", "@@@@@@@@@@@@@ + ", "@@@@@@@@@@@@ ++", "@@@@@@@@@@ + ++*", "@@@@@@@@ +++@ *", "@@@@@@+++@ @.+*", "@@@@@ @@ @@@@.+*", "@@@@+ ++@@@@@.+*", "@@.X++@@@@@@@.+*", "@.XXX@@@@@@@@.+*", "****************", " *", " *", "-------------- *", "@@@@@@@@@@@@=. *", "@@@@@@@@@@@@@. *", "@@@@@@@@@@@@@.+ ", "@@@@@@@@@@@@@ ", "@@@@@@@@@@@+@ +*", "@@@@@@@@@@+ ++", "@@@@@@@@ @+ +@ *", "@@@@@@@+ ++ @.+*", "@@@@@ + @@@@@.+*", "@@@@++++@@@@@.+*", "@@.X++@@@@@@@.+*", "@.XXX@@@@@@@@.+*", ".XXX@@@@@@@@@ .*", "XXX@@@@@@@@@@ *", "&X@@@@@@@@@ @ ++", "X@@@@@@@@ @ +++*", "@@@@@@@@ @+ +.+*", "@@@@@@ @ + +@.+*", "@@@@@@+ @+@@@.+*", "@@@@@ @+@@@@.+*", "@@.X+@@@@@@@@.+*", "@.XXX@@@@@@@@.+*", ".XXX@@@@@@@@@.+*", "XXX@@@@@@@@@@.+*", "&X@@@@@@@@@@@.+*", "X@@@@@@@@@@@@.+*", "@@@@@@@@---@@.+*", "@@@@@@@@...@@.+*", ".XXX@@@@@@@@@ *", "XXX@@@@@@@@@@ .*", "&X@@@@@@@@@ + +", "X@@@@@@ @@+++@+*", "@@@@@@@@ @ +.+*", "@@@@@@ @++ +@.+*", "@@@@@@+ @@@@.+*", "@@@@@@ @+@@@@.+*", "@@.X@+@@@@@@@.+*", "@.XXX@@@@@@@@.+*", ".XXX@@@@@@@@@.+*", "XXX@@@@@@@@@@.+*", "&X@@@@@@@@@@@.+*", "X@@@@@@@@@@@@.+*", "@@@@@@@@---@@.+*", "@@@@@@@@...@@.+*", ".XXX@@@@@@@@@ .*", "XXX@@@@@@@@@@+ *", "&X@@@@@@@@@ + *", "X@@@@@@ @@+ +.@+", "@@@@@@@@ +@+ ++*", "@@@@@@ @ +@ @.+*", "@@@@@++@ +@@@.+*", "@@@@@@@ +@@@@.+*", "@@.X+++@@@@@@.+*", "@.XXX@@@@@@@@.+*", ".XXX@@@@@@@@@.+*", "XXX@@@@@@@@@@.+*", "&X@@@@@@@@@@@.+*", "X@@@@@@@@@@@@.+*", "@@@@@@@@---@@.+*", "@@@@@@@@...@@.+*", ".XXX@@@@@@@@@+ *", "XXX@@@@@@@@@+@ *", "&X@@@@@@@@@ +", "X@@@@@@ @+@+++.@", "@@@@@@@@ @+@ +*", "@@@@@@ @@+@@ .+*", "@@@@@@+++ +@@.+*", "@@@@@+@@ @@@@.+*", "@@.X++++@@@@@.+*", "@.XXX@@@@@@@@.+*", ".XXX@@@@@@@@@.+*", "XXX@@@@@@@@@@.+*", "&X@@@@@@@@@@@.+*", "X@@@@@@@@@@@@.+*", "@@@@@@@@---@@.+*", "@@@@@@@@...@@.+*", "................", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@ ", "@@@@@@@@@@@+@ +", "@@@@@@@@@@@ @++@", "@@@@@@@@@@+@ +@ ", "@@@@@@@@@ +++@@@", "@@@@@@@ ++@@@@@", "@@@@@ +++ @@@@ +", "@@@@ + @@@@ +++", "@@.+++@@@@..+ ", "@.X+.@@@@.X++@@@", "oXXX.@@@oXXX.@@@", "oXX.@@@.oXX.@@@.", "XOO@@@oXXOO@@@oX", "................", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@ @@", "@@@@@@@@@@@+@@ +", "@@@@@@@@@@+@ ++ ", "@@@@@@@@@ @@ @+@", "@@@@@@@@ @+@++@@", "@@@@@@@+ ++@@ @", "@@@@@ +@+@@@@++", "@@@@++ + @@@ +", "@@.+++@@@@..++ ", "@.X+.@@@@.X++@@@", "oXXX.@@@oXXX.@@@", "oXX.@@@.oXX.@@@.", "XOO@@@oXXOO@@@oX", "................", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@ ", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@++ @@ ", "@@@@@@@@@@@@++@+", "@@@@@@@@@ @+ +@", "@@@@@@@@+ ++@+@@", "@@@@@@@+++ +@@ +", "@@@@@ @+@@@@ +", "@@@+++ + @@@ + ", "@@.@.+@@@@..++ @", "@.X++@@@@.X++@@@", "oXXX.@@@oXXX.@@@", "oXX.@@@.oXX.@@@.", "XOO@@@oXXOO@@@oX", "................", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@+@@", "@@@@@@@@@@+@+ @ ", "@@@@@@@@@@ @@@ +", "@@@@@@@@@+ ++@", "@@@@@@@@+++@++@@", "@@@@@@@@++ +@@ @", "@@@@ + +@@@@++", "@@@+@.++ @@@ @", "@@.+.+@@@@..+++ ", "@.X++@@@@.X++@@@", "oXXX.@@@oXXX.@@@", "oXX.@@@.oXX.@@@.", "XOO@@@oXXOO@@@oX", ".............. ", "@@@+@@@+@@@@@.**", "++ @+@@@ @@@@. *", "+@+@@+ +@+ @ +", "@@+@@ ++@@@ . *", "@@@+ ++ @+ +. *", "@@ ++@+@ ++. *", "@ + @@@@ ++@++*", "@++@ @+ ++@+ *", " @@@ ++ @@@. *", "@@@@@++ @@@@. *", "@@..++ @@@@@@. *", "@.X++ @@@@@@@. *", "oXXX.@@@@@@@@. *", "oXX.@@@@@@@@@. *", "XOO@@@@@@@@@@. *", ".............. ", "@+@+@@@@+@@@@..*", " ++ +@ @ +@@@ *", "+@@@@ ++@@ @ +", "@@@@ @+ +@ . *", "@@ ++@+@ @ +. *", "@@@@+@++@ +++.*", "@ +@ @@@ ++@@+*", "@+@+ @+ +@+++ *", "@ @@+ ++ @@. *", "+@@@+ + @@@@. *", "@@..@ +@@@@@@. *", "@.X+++@@@@@@@. *", "oXXX.@@@@@@@@. *", "oXX.@@@@@@@@@. *", "XOO@@@@@@@@@@. *", ".............. ", "+@+@@@ @++@@@..*", "@++ +@+@@ @@ @ *", "@+@@@@ +@ @ +", " @@@+ +@+@@ +. *", "@@ @ +++@ + . *", "@ @@+ @+@ ++.*", "@@@+@@@@+ +@+@+*", "@ ++ @++ ++++ *", "@+ @@++ + @@@. *", "+@@@+ @+@@@. *", "@@..+ +@@@@@@. *", "@.X+ +@@@@@@@. *", "oXXX.@@@@@@@@. *", "oXX.@@@@@@@@@. *", "XOO@@@@@@@@@@. *", ".............. ", " +@@@@ @++@@@..*", " ++ +@+@ @ @@ *", "++@@@ + +@ @. +", "@@@+ +@+@@ . *", "@@@@ ++@@ ++++ *", "@@ +@ @@ ++ .*", " @ +@@@++ ++@@+*", "@@+ @@++ @+++ *", "++ @@++ @@. *", " @@@ +++@+@@@. *", "@@.. + @@@@@@. *", "@.X+++@@@@@@@. *", "oXXX.@@@@@@@@. *", "oXX.@@@@@@@@@. *", "XOO@@@@@@@@@@. *", "****************", " ", "------------ -++", "@@@@@@@@@@ +@@", "@@@@@@@@ +++@@@", "@@@@@@ ++@@@@ ", "@@@@ +++@@@@ ", "@@ ++@@@@@ +", ".. +++@@@@.. +++", "X++@@@@@@.X++@@@", "XX.@@@@@.XXX.@@@", "X.@@@@@.XXX.@@@@", ".@@@@@oXXX.@@@@@", "@@@@@.oXX.@@@@@@", "@@@@oXXOO@@@@@@@", "@@@.oXX.@@@@@@@.", "****************", " +", "------------ -+", "@@@@@@@@@@+ +@@", "@@@@@@@@ + ++@@@", "@@@@@@ + +@@@@ ", "@@@@ + ++@@@@ ", "@@ + +@@@@@ ++", ".. ++@@@@.. +++", "X++@@@@@@.X++@@@", "XX.@@@@@.XXX.@@@", "X.@@@@@.XXX.@@@@", ".@@@@@oXXX.@@@@@", "@@@@@.oXX.@@@@@@", "@@@@oXXOO@@@@@@@", "@@@.oXX.@@@@@@@.", "****************", " +", "------------ -@+", "@@@@@@@@@@+ +@", "@@@@@@@@+ + +@@@", "@@@@@@@+ +@@@@ ", "@@@+@ +@+@@@@ ", "@@+ + @@@@@ +++", ".. +@@@@..+ @", "X++@@@@@@.X++@@@", "XX.@@@@@.XXX.@@@", "X.@@@@@.XXX.@@@@", ".@@@@@oXXX.@@@@@", "@@@@@.oXX.@@@@@@", "@@@@oXXOO@@@@@@@", "@@@.oXX.@@@@@@@.", "**************+*", " + ", "----------- -+@", "@@@@@@@@@+@++ @", "@@@@@@@++ ++ @@@", "@@@@@@+ @@@@@", "@@@+@++ @+@@@@ +", "@@+ @@@@@ +++", ".. + +@@@@..+ @+", "X++@@@@@@.X++@@@", "XX.@@@@@.XXX.@@@", "X.@@@@@.XXX.@@@@", ".@@@@@oXXX.@@@@@", "@@@@@.oXX.@@@@@@", "@@@@oXXOO@@@@@@@", "@@@.oXX.@@@@@@@.", "****************", " *", "------- + *", "@@@@@@ *", "@@ +@@@@@@ *", " ++++@@@@@-@ *", "+++++@.@@@@@@@ *", "++@@@@.@@@@@@@ *", "+@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@.@.@@.@@@@@@@ *", "****************", " *", "------- *", "@@@@@ @ + *", "@@ + + @@@@@@ *", "++ ++ +@@@@@-@ *", " ++ +@.@@@@@@@ *", " +@@@@.@@@@@@@ *", "++@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@.@.@@.@@@@@@@ *", "****************", " *", "------- + *", "@@@@@ +++ *", "@@ ++ + @@@@@@ *", "++ +++@@@@@-@ *", "+++@ @.@@@@@@@ *", "++ @@@.@@@@@@@ *", "+@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@.@.@@.@@@@@@@ *", "* **************", "+ + *", "---@- -+ + *", "@@@ @+ +++ *", "+@ @+ + @@@@@@ *", " + + ++@@@@@-@ *", "+++@ @.@@@@@@@ *", " + @@@.@@@@@@@ *", "+@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@@@@@@.@@@@@@@ *", "@.@.@@.@@@@@@@ *", "**********+++***", " ++++. *", " ..+++. . *", "++++. + *", "X. *", "........... . *", "@@@@@@@@@@.. *", "@@@@@@@@@ +++*", "@@@@@ . +++ *", "@@ .+++.+ *", "@. ++.+.@@. *", " ++@@@@@@.+ *", "+++@@@@@@@.+ . *", "X@@@@@@@@@.+ .+*", "@@@@@@@@@@ ++ *", "@@@@@@@. .++ *", "*********+++****", " +++.+. *", " .+.+ +++ *", "+++++ + *", "X+.. *", ".. ........ . *", "@@@@@@@@@@. + *", "@@@@@@@.@ . +++*", "@@@@@@ + + + *", "@@ .++. + *", "@.+++.+.@@. *", " +@@@@@@.+ *", "+++@@@@@@@.+ . *", "X@@@@@@@@@.+.+ *", "@@@@@@@@@@ ++*", "@@@@@@@..+ ++ *", "*********++.****", " + +++++. *", " ...++ ++ *", "+++++. + *", "X+ + ", "........... . *", "@@@@@@@@@@.. ++ ", "@@@@@@@.+@ + +*", "@@@@@.@ . ++ *", "@@@ + ++++. *", "@. +++.@@@. *", " + @@@@@@.+ *", "+++@@@@@@@.+ + *", "X@@@@@@@@@.+ .+ ", "@@@@@@@@@@ ++*", "@@@@@@@. .+.+ *", "*********++ .***", " + +++++.+ *", " ... ++ ++ *", "+ ++++. + *", "X++ *", "........... .*", "@@@@@@@@@@...++ ", "@@@@@@@ +.+.+ +", "@@@@@ .+. + + *", "@@@+++@+@+. *", "@ + +@.@@. *", "++ + @@@@@.+ *", "+++@@@@@@@.+ ++ ", "X@@@@@@@@@.++ .*", "@@@@@@@@@.. ++", "@@@@@@@+. +. *", "@@@@@@ +.+ *", "@@@@ . ++@.+ *", "@@@ +++@@.+ *", "@@ .+@@@@.+ *", " . .@@@@@@.+ *", " ++@@@@@@@.+ *", "X@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@ +.. *", "@@@@ +++@+ *", "@@@ +.++@@.+ *", "@@. .@@@@.+ *", " + @@@@@@.+ *", " ++@@@@@@@.+ *", "X@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@ + ++. *", "@@@@ ++ +.+ *", "@@@ +.+.@@.+ *", "@@. @@@@@.+ *", " +++@@@@@@.+ *", " ++@@@@@@@.+ *", "X@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@+ +++. *", "@@@@+ +@ .+ *", "@@@ .+.@.+ *", "@@+.@@@@@@.+ *", " +@+@@@@@.+ *", " ++@@@@@@.+ *", "X@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", "@@@@@@@@@@.+ *", " ", ". @ @ + ", "@. @ .+ + + ", "@@.***+.+*+*+*+*", ".@....+ + + ", "XX@.@ + . ", "X@@@+. . . ", "@@@@@. . .+", "@@@@@. ..@.. ", "@@@@@. ..... ", "@@@@@. ... + ", "@@@.... ", ".@@+@. ", "XX@@@. ..", "X@@@@. ..+@", "@@@@@.+ . +. ", " + ", ". + + + +..", "@. ++ + . . .@", "@@+**+.@.*.*.**.", "+@..+ . . . ", "XX+@. . . . ", "X@@@@. +", "@@@@@. + + ", "@@@@@. + ++", "@@@@@. ++ @+@+@ ", "@@@@@++ @.+.+ . ", "@@@+@.@. . ", ".@+.+. . ", "XX@@@. ", "X@@@@. . @", "@@@@@.+ . @ ++", " @ +", ". + + .", "@. @ ..+. .", "@@.@*.*..+*+*.+.", ".+.+...+ . . ", "XX@@.+ ", "X@@@@. +", "@@@@@. +.@+ +", "@@@@@.. .@++ . ", "@@@@..+ + +. .", "@@@@@. +. . . ", "@@@.+.+. @", ".@+.+. @ +", "XX@@@. @ + ", "X@@@@. + + +", "@@@@@.+ + + ..", " ", ". + + + ", "@. + @ @.+", "@@.**.+@..*+*+*+", ".@@.@@+. + + ", "XX+.+ + ", "X@@@@.+ + + ", "@@@@@. ", "@@@@@. +...", "@@@@@. ++@+@+..", "@@.@@+++. . ..", ".@@@@@ @ ... . ", ".@+@+.+.. ", "XX@@@. ", "X@@@@. ", "@@@@@.+ @+", " + ", "+ ", "+ .@. ", "****************", " @ *", "@ + *", ". . + + *", " +.+ .+ *", " + . *", " .+ *", " . + . . *", " . + . *", "..+.+ . . . *", "+ .. .. +. . *", ".@ ++ +. + + *", " + . . *", " ", ".. . ", " . . ", "****************", " *", " *", " + *", " @. + . *", "@+ + . . *", " . *", ". . *", " . . @. *", " . @. ++ . . *", ". +++.@+. . *", " ++++ +. + + *", " + . . *", " + + ", " .+. ", "+. + ", "*******+********", " + *", " @ @ @ + +. *", " + .+. . *", " .+. . + *", ".+. + *", " + *", " @ . + *", " @ @ +. + + . *", " . +.+.+ .. . *", ".+ ..+. . . *", "..+ + + + + *", "+ *", " + + ", "@ +@. ", ".. . + ", "*+*+************", " *", " @ + *", "+ @ +.+ *", " .@.+.+. + *", "+. +@ + + *", ". . .+ *", " *", " *", " . . .@ @ .. *", ". . .. + . *", "@+ +. ++ + + *", " . . @.@ . *", "@@@@@.++. +. . ", "@@@@@.++@. . ", "@@@@@.+. + ", "@@@.@.++ +@", ".@.@@.++ @ @ .", "XX@@@.++ . ... ", "X@@@@.++ .@. ", "@@@@@.++. +.+ .", "@@@@@.+.+. . ...", "@@@@@.+..... . ", "@@@.@.++@ + + ", "@@@@..+. ", ".@..@.++ . ", "XX@@@.++ . ", "X@@@@.++ + ", "@@@@@.++ ", "@@@@@.++ .+ +..", "@@@@@.+. + + +. ", "@@@@@@++.+ . ", "@@+@@+++ ", ".+@+..++ ", "XX@@@.++ .+", "X@@@@.++ +. ", "@@@@@.++ + . ++", "@@@@@.+++++.@+@.", "@@@@@..+. .. . ", "@@@@+++.@. + + ", "@@@+@.++ ", ".+@@@.++ . ", "XX@@@.++ . ", "X@@@@.++ + ", "@@@@@.++ ", "@@@@@.+@ +. +.+ ", "@@@@@.++. +. ", "@@@@+.+. . ", "@+++.+.+ + ", ".@.@@.++ ", "XX@@@.++ + ", "X@@@@.++ + ", "@@@@@.++ + @.", "@@@@@.++ . +.", "@@@@@.++@ .++.+ ", "@@@@@.@+ +... + ", "@@@@+..+.. ", ".+@+@++. . ", "XX@+@.++ . ", "X@@.@.++ + ", "@@@@@.++ ", "@@@@@.++ @ +.", "@@@@@.++ + + +", "@@@@@.++ + +. ..", "@@@@@@+@.... . ", ".@.@..+. ", "XX+@+.++ ", "X@@@@.++ +", "@@@@@.++ + +.", "@@@@@.++ +. .+", "@@@@@.+++..@ ++ ", "@@@@@.++ +.++ . ", "@@@@+@+@. ", ".@.@...+ . ", "XX@@@.++ . ", "X@@@@.++ + ", "@@@@@.++ ", ".. .@ . . *", ". + @. . .. *", "++ . . + *", " . . . *", "... . *", ". . .. *", " . . + *", " . . . *", " . . *", ". . *", " + + *", " *", " . *", " . *", " + *", " *", ".. . . *", ". + +. . *", " + + + *", " + ++ *", " +. @+.+ + . *", ". @+ + . *", "++ + + + *", " + *", " +. . . *", ". . *", " + + *", " *", " . *", " . *", " + *", " *", " . . . *", ". @ +.+ *", " + + +... + *", " + ..@ + + *", "+. @..+.+.+ . *", ". .+. . + . *", " .. .+ + *", "+.+.+ *", "+.+ . *", ". . *", " + + *", " *", " . *", " . *", " + *", " *", " ..+. . . *", ".+ . . . *", " . + *", " *", " . @. .+. . *", ".+ +@+ ++@ + *", "+.+ + ++@. . + *", " @++.@ . . *", " ++.. . . *", "+.. . . *", ".+. . + *", " *", " . *", " . *", " + *", " *", "XXXXXXXXXXXXXXXX", ".@@.............", "O.....O.........", "XXXXXXXXXXXXXXXX", "X$$$$$$$$-$-$$$$", "X$$$$$$$---$$$$$", "X$$$$$$$-$$$$$$$", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$##&$#####$$##$", "X$######&###&##$", "X$###&#&##&####$", "X$$#$#$#$*$#$#$$", "XXXXXXXXXXXXXXXX", ".@@.............", "O.....O.........", "XXXXXXXXXXXXXXXX", "X$$$$$$$$-$-$$$$", "X$$$$$$$---$$$$$", "X$$$$$$$-$$$$$$$", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$$&$#$#$#$#$#$$", "XXXXXXXXXXXXXXXX", ".@@.............", "O.....O.........", "XXXXXXXXXXXXXXXX", "X$$$$$$$$-$-$$$$", "X$$$$$$$---$$$$$", "X$$$$$$$-$$$$$$$", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$$#$#$#$#$#$#$$", "XXXXXXXXXXXXXXXX", ".@@.............", "O.....O.........", "XXXXXXXXXXXXXXXX", "X$$$$$$$$-$-$$$$", "X$$$$$$$---$$$$$", "X$$$$$$$-$$$$$$$", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$$#$#$#$#$#&#$$", "XXXXXXXXXXXXXXXX", ".@@.............", "O.....O.........", "XXXXXXXXXXXXXXXX", "X$$$$$$$$-$-$$$$", "X$$$$$$$---$$$$$", "X$$$$$$$-$$$$$$$", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$##$$###&#$$##$", "X$####&#####&##$", "X$#&###&*#&####$", "X$$#$*$#$#$*$#$$", "XXXXXXXXXXXXXXXX", ".@@.............", "O.....O.........", "XXXXXXXXXXXXXXXX", "X$$$$$$$$-$-$$$$", "X$$$$$$$---$$$$$", "X$$$$$$$-$$$$$$$", "X$#############$", "X$#############$", "X$##$&#####$$##$", "X$######&######$", "X$##&##&##&####$", "X$##$$*##*#&*##$", "X$##*######*###$", "X$######*######$", "X$$#$#$#$#$#$#$$", "XXXXXXXXXXXXXXXX", ".@@.............", "O.....O.........", "XXXXXXXXXXXXXXXX", "X$$$$$$$$-$-$$$$", "X$$$$$$$---$$$$$", "X$$$$$$$-$$$$$$$", "X$###&#&#&#&###$", "X$#############$", "X$##$&*####*$##$", "X$##*####&#####$", "X$#######*#####$", "X$##$$#*###$$##$", "X$#########*###$", "X$#############$", "X$$#$#$#$#$#$#$$", "XXXXXXXXXXXXXXXX", ".@@.............", "O.....O.........", "XXXXXXXXXXXXXXXX", "X$$$$$$$$-$-$$$$", "X$$$$$$$---$$$$$", "X$$$$$$$-$$$$$$$", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$###&##&######$", "X$########&####$", "X$##*$&####$&##$", "X$#######*#&###$", "X$#####*##*####$", "X$$#$#$#$#$#$#$$", "X$####*#*#*####$", "X$##*#######*##$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$$$$$$$$-$-$$$$", "X$$$$$$$---$$$$$", "X$$$$$$$-$$$$$$$", "XXXXXXXXXXXXXXXX", "................", "XXXXXXXXXXXXXXXX", ".X.#.O........*.", "..XX.X.X.X.X.XXX", "X$########&####$", "X$####&########$", "X$##$&#*#&#$&##$", "X$#*#*####*####$", "X$######*###*##$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$$$$$$$$-$-$$$$", "X$$$$$$$---$$$$$", "X$$$$$$$-$$$$$$$", "XXXXXXXXXXXXXXXX", "................", "XXXXXXXXXXXXXXXX", ".X.#.O........*.", "..XX.X.X.X.X.XXX", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$##&##########$", "X$#######&##&##$", "X$##$$&####$$##$", "X$#*####*#&#*##$", "X$###*#&##*####$", "X$$$$$*$$-$-$$$$", "X$$$$$$$---$$$$$", "X$$$$$$$-$$$$$$$", "XXXXXXXXXXXXXXXX", "................", "XXXXXXXXXXXXXXXX", ".X.#.O........*.", "..XX.X.X.X.X.XXX", "X$#############$", "X$########&####$", "X$##$&#&###*&##$", "X$####*##*###*#$", "X$##*#&########$", "X$##$$#####*$##$", "X$#############$", "X$#############$", "X$$$$$$$$-$-$$$$", "X$$$$$$$---$$$$$", "X$$$$$$$-$$$$$$$", "XXXXXXXXXXXXXXXX", "................", "XXXXXXXXXXXXXXXX", ".X.#.O........*.", "..XX.X.X.X.X.XXX", "X$#######*#####$", "X$#*########*##$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$$$$$$$$-$-$$$$", "X$$$$$$$---$$$$$", "X$$$$$$$-$$$$$$$", "XXXXXXXXXXXXXXXX", "................", "XXXXXXXXXXXXXXXX", ".X.#.O........*.", "..XX.X.X.X.X.XXX", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$$$$$$$$-$-$$$$", "X$$$$$$$---$$$$$", "X$$$$$$$-$$$$$$$", "XXXXXXXXXXXXXXXX", "................", "XXXXXXXXXXXXXXXX", ".X.#.O........*.", "..XX.X.X.X.X.XXX", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$$$$$$$$-$-$$$$", "X$$$$$$$---$$$$$", "X$$$$$$$-$$$$$$$", "XXXXXXXXXXXXXXXX", "................", "XXXXXXXXXXXXXXXX", ".X.#.O........*.", "..XX.X.X.X.X.XXX", "X$######*###*##$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$##$$#####$$##$", "X$#############$", "X$#############$", "X$$$$$$$$-$-$$$$", "X$$$$$$$---$$$$$", "X$$$$$$$-$$$$$$$", "XXXXXXXXXXXXXXXX", "................", "XXXXXXXXXXXXXXXX", ".X.#.O........*.", "..XX.X.X.X.X.XXX", "oooo.........OOo", "oooo.........OOo", "oooX....%....XOo", "ooXX....%....XO-", "ooXo....%....O-@", "oooO....%....-@@", "oooo........-@@@", "oooo.......-@@@@", "oooo......-@.@@@", "oooo.....-@@@@@@", "oooX....-@@@@@@@", "ooXX...-@@@@@@@@", "ooXo..-@@@@@@@@@", "oooO.-@@@@@@@@@@", "oooo-@.@@@@@@.@O", "oooo@@@@@@@@@@OO", "oo-----------ooo", "o-@@@@@@@@@@oooo", "-@.@@@@@@.@ooooo", "@@@@@@@@@@oooooo", "@@@@@@@@@ooooooo", "@@@@@@@@oooooooo", "@@@@@@@oooooOooo", "@@@@@@ooooOooooo", "@@@.@ooooooooooo", "@@@@oooooooooooo", "@@@ooOoooooooooo", "@@oooooooooOOooo", "@ooooooooooooooo", "oOoooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "oooooOooooOooooo", "oooooooooooooooo", "ooooooooooooooo@", "ooOooooOoooooo@.", "ooooooooooooo@..", "oooooooooooo@...", "ooooooooooo@....", "oooOoooooo@.....", "ooooooOOO@......", "ooooooOO@....%..", "oooooOO@....%...", "oooooO@....%....", "ooooO@....%.....", "oooo@..........O", "oooo..........Oo", "oo@@@@@@@@@@@ooo", "o@..........oooo", "@..........ooooo", "....%.....oooooo", "...%.....ooooooo", "..%.....oooooooo", ".%.....oooooOooo", "......ooooOooooo", ".....ooooooooooo", "....oooooooooooo", "...ooOoooooooooo", "..oooooooooOOooo", ".ooooooooooooooo", "oOoooooooooooooo", "oooooooooooooooo", "oooooooooooooooo", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@...@@@@@...@@", "@@.@@@..@..@@@.@", "@@.@@@@@.@@@@@.@", "@@*@@@@*@.@@@@.@", "@@@.@@.@@@.@@.@@", "@@@.@.@@&@@.@.@@", "@@@@.@@&&=@@.@@@", "@@@.@.@@=@@.@.@@", "@@@.@@.@@@.@@.@@", "@@.@@@@.@*@@@@*@", "@@.@@@@@.@@@@@.@", "@@.@@@..@..@@@.@", "@@@...@@@@@...@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@...@@@@@*..@@", "@@.@@@..@..@@@.@", "@@.@@@@@.@@@@@.@", "@@.@@@@.@.@@@@.@", "@@@.@@.@@@.@@.@@", "@@@.@.@@&@@*@.@@", "@@@@.@@&&=@@.@@@", "@@@.@*@@=@@.@.@@", "@@@.@@.@@@.@@.@@", "@@.@@@@.@.@@@@.@", "@@.@@@@@.@@@@@.@", "@@.@@@..@..@@@.@", "@@@..*@@@@@...@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@...@@@@@...@@", "@@.@@@.*@..@@@*@", "@@.@@@@@.@@@@@.@", "@@.@@@@.@.@@@@.@", "@@@.@@.@@@.@@.@@", "@@@.@.@@=@@.@.@@", "@@@@.@@=&&@@.@@@", "@@@.@.@@&@@.@.@@", "@@@.@@.@@@.@@.@@", "@@.@@@@.@.@@@@.@", "@@.@@@@@.@@@@@.@", "@@*@@@..@*.@@@.@", "@@@...@@@@@...@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@", "@@@*..@@@@@...@@", "@@.@@@..@..@@@.@", "@@.@@@@@.@@@@@.@", "@@.@@@@.@.@@@@.@", "@@@.@@.@@@.@@.@@", "@@@.@.@@=@@.@*@@", "@@@@.@@=&=@@.@@@", "@@@*@.@@=@@.@.@@", "@@@.@@.@@@.@@.@@", "@@.@@@@.@.@@@@.@", "@@.@@@@@.@@@@@.@", "@@.@@@..@..@@@.@", "@@@...@@@@@..*@@", "@@@@@@@@@@@@@@@@", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%"}; micropolis-activity/images/obj3-6.xpm0000664000076400007640000000525310724145723020033 0ustar simcitysimcity/* XPM */ static char * obj3_6_xpm[] = { "48 48 9 1", " c None", ". c #FFFF00000000", "X c #FFFFFFFFFFFF", "o c #7F7F7F7F7F7F", "O c #BFBFBFBFBFBF", "+ c #3F3F3F3F3F3F", "@ c #FFFFFFFF0000", "# c #000000000000", "$ c #66666666E6E6", " ", " ", " ", " ", " ", " ", " ", " ", " ", " .XXX ", " XXXo ", " XXXXO ", " XXXXO ", " OXXXXO ", " XXXOXO ", " +XXXXXo ", " oXXXXXX ", " +OXXXXXo OOO", " oXXXXXXO OXX+", " +OXXXXOXO OXXo", " oXXXXXXXO OXXXo", " +OXXXXXXXo O.OOO OXXXo", " +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OXXXX+", " +O+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXOoOoOo@", " ++X+#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXOOOOOO+", " +XX+X$#$#$#$#$$#$#$#$#$#$#$#$#$#$$#$$+OOXXXo", " OOOOOOOOOOOOO+OOOOOOOOOooooooooooo OXXXo", " +OOOOOOOOo O.OOO XXXo", " oXXXXXXXO X.XXX OXX+", " +OXXXXOXO OXO", " oXXXXXXO ", " +OXXXXXo ", " oXXXXXX ", " +XXXXXo ", " XXXXXO ", " OXXOXO ", " XXXXO ", " XXXXO ", " XXXo ", " .XXX ", " ", " ", " ", " ", " ", " ", " ", " "}; micropolis-activity/images/tiles-127.xpm0000664000076400007640000000514410724145723020461 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "48 48 3 1", " c black", ". c #0000E6E60000", "X c #CCCC7E7E6666", /* pixels */ " ...............................................", " . .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXX.......XXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXX .. ..XXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXX ..XX ..XXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXX ..XXX ..XXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXX ..XXX ..XXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXX ..XXX..XXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXX ......XXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXX .. ..XXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXX ..X ..XXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXX ..XX ..XXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXX....XX....XXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXX XX XXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .", " ...............................................", " " }; micropolis-activity/images/scncty.xpm0000664000076400007640000001022210724145723020326 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "67 57 5 1", /* colors */ "` c #000000", "a c #585858", "b c #FFFF00", "c c #DFDFDF", "d c #0000FF", /* pixels */ "```````````````````````````````````````````````````````````````````", "``ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc``", "`c`ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc`a`", "`cc`ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc`aa`", "`ccc```````````````````````````````````````````````````````````aaa`", "`ccc`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`aaa`", "`ccc`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`aaa`", "`ccc`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`aaa`", "`ccc`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`aaa`", "`ccc`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`aaa`", "`ccc`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`aaa`", "`ccc`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`aaa`", "`ccc`dddddddddddbbbdddddbbdddddddddddddddddddddddddddddddddddd`aaa`", "`ccc`dddddddddddbbbdddddbbdddddddddddddddddddddddddddddddddddd`aaa`", "`ccc`dddddddddddbbbbddddbbdddddddddddddddddddddddddddddddddddd`aaa`", "`ccc`dddddddddddbbbbbdddbbddddbbbbbdddbbbdddbbdddbbddddddddddd`aaa`", "`ccc`dddddddddddbbbbbbddbbdddbbbbbbbddbbbddbbbbddbbddddddddddd`aaa`", "`ccc`dddddddddddbbdbbbddbbddbbbdddbbbddbbddbbbbddbbddddddddddd`aaa`", "`ccc`dddddddddddbbddbbbdbbddbbbdddbbbddbbddbbbbdbbdddddddddddd`aaa`", "`ccc`dddddddddddbbddbbbbbbddbbbbbbbbbddbbbdbdbbdbbdddddddddddd`aaa`", "`ccc`dddddddddddbbdddbbbbbddbbbbbbbbbddbbbbbdbbbbbdddddddddddd`aaa`", "`ccc`dddddddddddbbddddbbbbddbbbdddddddddbbbbdbbbbbdddddddddddd`aaa`", "`ccc`dddddddddddbbdddddbbbdddbbbbbbbbdddbbbdddbbbddddddddddddd`aaa`", "`ccc`dddddddddddbbdddddbbbdddddbbbbbbdddbbbdddbbbddddddddddddd`aaa`", "`ccc`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`aaa`", "`ccc`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`aaa`", "`ccc`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`aaa`", "`ccc`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`aaa`", "`ccc`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`aaa`", "`ccc`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`aaa`", "`ccc`dddddddddddddddbbbbbbbddbbbdddddddddddddddddddddddddddddd`aaa`", "`ccc`ddddddddddddddbbbbbbbbddbbbddddbbdddddddddddddddddddddddd`aaa`", "`ccc`dddddddddddddbbbbddddbddddddddbbbdddddddddddddddddddddddd`aaa`", "`ccc`ddddddddddddbbbbddddddddbbbddbbbbbbbbbdddddbbdddddddddddd`aaa`", "`ccc`ddddddddddddbbbdddddddddbbbddbbbbbbdbbbdddbbddddddddddddd`aaa`", "`ccc`ddddddddddddbbbdddddddddbbbdddbbbdddbbbdddbbddddddddddddd`aaa`", "`ccc`ddddddddddddbbbdddddddddbbbdddbbbdddbbbbdbbdddddddddddddd`aaa`", "`ccc`ddddddddddddbbbdddddddddbbbdddbbbddddbbbdbbdddddddddddddd`aaa`", "`ccc`ddddddddddddbbbbddddddddbbbdddbbbddddbbbbbddddddddddddddd`aaa`", "`ccc`dddddddddddddbbbbddddbddbbbdddbbbdddddbbbbddddddddddddddd`aaa`", "`ccc`ddddddddddddddbbbbbbbbddbbbdddbbbbbdddbbbdddddddddddddddd`aaa`", "`ccc`dddddddddddddddbbbbbbdddbbbddddbbbbdddbbbdddddddddddddddd`aaa`", "`ccc`ddddddddddddddddddddddddddddddddddddddbbddddddddddddddddd`aaa`", "`ccc`dddddddddddddddddddddddddddddddddddddbbbddddddddddddddddd`aaa`", "`ccc`ddddddddddddddddddddddddddddddddddddbbbdddddddddddddddddd`aaa`", "`ccc`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`aaa`", "`ccc`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`aaa`", "`ccc`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`aaa`", "`ccc`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`aaa`", "`ccc`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`aaa`", "`ccc`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`aaa`", "`ccc`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`aaa`", "`ccc```````````````````````````````````````````````````````````aaa`", "`cc`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa`", "`c`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a`", "``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``", "```````````````````````````````````````````````````````````````````" }; micropolis-activity/images/tiles-11.xpm0000664000076400007640000000256410724145723020374 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "32 32 8 1", " c black", ". c #3F3F3F3F0000", "X c #3F3F3F3F3F3F", "o c #7F7F00000000", "O c #7F7F3D3D0000", "+ c gray50", "@ c red", "# c gray75", /* pixels */ " ", " oooooooooooooooooooooooooooo ", " o oooooooooooooooooooooooooo @ ", " oo oooooooooooooooooooooooo @@ ", " ooo @@@ ", " ooo ###################### @@@ ", " ooo ###################### @@@ ", " ooo ###################### @@@ ", " ooo ##XX#X #######X## @@@ ", " ooo ### XXXXXXXXXXXXX ## @@@ ", " ooo ### X X ## @@@ ", " ooo ### X X ########## @@@ ", " ooo ### #######+## @@@ ", " ooo ##.. #X# #######+X### @@@ ", " ooo ##... #X# #####+XX+### @@@ ", " ooo #....# ####+XX+X#### @@@ ", " ooo #.O..#######+XX+X+#### @@@ ", " ooo #....######+XX+XX##### @@@ ", " ooo #....## ###XX+XX+##### @@@ ", " ooo #######+ #+X+XX+###### @@@ ", " ooo ########+ X+XX+####### @@@ ", " ooo #########+ X+######### @@@ ", " ooo ########..+ ########## @@@ ", " ooo #######.O.#+ ######### @@@ ", " ooo ######.O.###+ ######## @@@ ", " ooo ######..############## @@@ ", " ooo ###################### @@@ ", " ooo @@@ ", " oo @@@@@@@@@@@@@@@@@@@@@@@@ @@ ", " o @@@@@@@@@@@@@@@@@@@@@@@@@@ @ ", " @@@@@@@@@@@@@@@@@@@@@@@@@@@@ ", " " }; micropolis-activity/images/obj4-5.xpm0000664000076400007640000000530110724145723020025 0ustar simcitysimcity/* XPM */ static char * obj4_5_xpm[] = { "48 48 10 1", " c None", ". c #00000000E6E6", "X c #000000000000", "o c #3F3F3F3F3F3F", "O c #CCCC7F7F6666", "+ c #BFBFBFBFBFBF", "@ c #7F7F7F7F7F7F", "# c #FFFF7F7F0000", "$ c #FFFF00000000", "% c #FFFFFFFFFFFF", " ", " ", " ", " . ", " . ", " ", " . ", " . . ", " ", " ", " . . . ", " . ", " . XXXX . ", " oXOOOOX ", " . ++OOOOOOX . ", " @+@+OOOOOOX ", " . @@@+@+OOOOOX ", " . XXX@@@+@+OOOXX ", " XXoXX@@@+@+OXXX . .", " XoXX#@@@@++XXX$ ", " . XXX#X@@@oooXXX ", " . @X##XX@@oXXXXX$ ", " XXX@XXXXo@oXXXXX$ . ", " . XXoXXXXXo@oXX@XX$ ", " XoXX#XXo@oXXXXX$ . ", " . XXX#X@@@oXX@XX$ ", " @X##XX@@oXXXXX$ . ", " . @@XXXXo@oXX@XX$ . ", " @@@XXXo@oXXXXX$ . ", " . @@%@XXo@oXX@XX$ ", " +@@@@@@oXXXXX$ . . ", " . X@+@@%@oXX@XX$ . ", " XO+@+@@oXXXXX$ . ", " XOOO+@+oXX@XX$ . ", " XOOOOO++oXXXX$ . ", " oOOOOOO+o@XX$ . ", " XOoOOOOOOoXX$ ", " XOOOOOOOXXX$ . ", " oOOOoOOXXX$ . ", " XOoOOOOXXX$ . ", " XOOOOoXXX$ ", " XOOoXXX$ . . ", " XXXX$ ", " ", " ", " ", " ", " "}; micropolis-activity/images/button3hilite.xpm0000664000076400007640000010010010724145723021613 0ustar simcitysimcity/* XPM */ static char *button_hilite[] = { /* columns rows colors chars-per-pixel */ "157 90 256 2", " c #025D01", ". c #085C00", "X c #00580B", "o c #135B00", "O c #005F10", "+ c #016302", "@ c #00640A", "# c #016A02", "$ c #006A0A", "% c #0B6300", "& c #0A6C00", "* c #006411", "= c #006A11", "- c #00681A", "; c #017301", ": c #017C02", "> c #007B0A", ", c #087C00", "< c #047405", "1 c #007412", "2 c #136500", "3 c #117000", "4 c #006725", "5 c #006A37", "6 c #29567E", "7 c #315C7E", "8 c #00605A", "9 c #1E5688", "0 c #1E588A", "q c #1D5686", "w c #1E5C90", "e c #225684", "r c #235885", "t c #21598A", "y c #2B5A84", "u c #2A5D8C", "i c #225688", "p c #225C91", "a c #2B5D90", "s c #325C84", "d c #325D88", "f c #2D608D", "g c #2C6191", "h c #256092", "j c #32628D", "k c #3A658D", "l c #376080", "z c #336491", "x c #3A6690", "c c #3C6892", "v c #366996", "b c #1F6193", "n c #43678A", "m c #446E94", "M c #018302", "N c #00830A", "B c #008B02", "V c #008B09", "C c #098C00", "Z c #0A8000", "A c #008515", "S c #019301", "D c #009309", "F c #009B02", "G c #009A09", "H c #099200", "J c #0A9C00", "K c #009311", "L c #009B12", "P c #009418", "I c #128600", "U c #109200", "Y c #01A301", "T c #00A40B", "R c #00AB01", "E c #00AB0A", "W c #0AA300", "Q c #0BAB00", "! c #00A411", "~ c #00A812", "^ c #01B400", "/ c #00B30A", "( c #00BA03", ") c #00BA0A", "_ c #09B100", "` c #0ABA00", "' c #00BC12", "] c #00B516", "[ c #15AA00", "{ c #19BB00", "} c #01C302", "| c #00C20B", " . c #00CB02", ".. c #07C803", "X. c #00C211", "o. c #00C916", "O. c #01D302", "+. c #00D40B", "@. c #00DA02", "#. c #00DB0B", "$. c #0AD300", "%. c #0CD900", "&. c #00D314", "*. c #17C600", "=. c #11D100", "-. c #15DB00", ";. c #00CE2A", ":. c #01E301", ">. c #00E40B", ",. c #00EA03", "<. c #0CE200", "1. c #05EC05", "2. c #00EA15", "3. c #01F402", "4. c #01FB03", "5. c #01FD09", "6. c #0BFD01", "7. c #0BFF0A", "8. c #05F205", "9. c #02FE13", "0. c #0CFF13", "q. c #04F817", "w. c #14E900", "e. c #12FD00", "r. c #1AFE03", "t. c #15FC09", "y. c #14FF19", "u. c #1AFF1B", "i. c #17FF14", "p. c #04FA29", "a. c #1BFF24", "s. c #16FF27", "d. c #1BFF33", "f. c #00EB31", "g. c #26F801", "h. c #26FF18", "j. c #33FD03", "k. c #38FF1B", "l. c #2AE400", "z. c #23FF24", "x. c #2BFF25", "c. c #28FF2A", "v. c #2AFF34", "b. c #36FF28", "n. c #33FF33", "m. c #34FF39", "M. c #3BFF34", "N. c #3BFF3C", "B. c #26DF00", "V. c #3CFF42", "C. c #39FF47", "Z. c #39FF55", "A. c #29FF4B", "S. c #1FF75F", "D. c #44FF18", "F. c #51E900", "G. c #45FF27", "H. c #42FF35", "J. c #47FF3A", "K. c #56FF37", "L. c #58FF2B", "P. c #60FF38", "I. c #42FF44", "U. c #42FF49", "Y. c #4BFF44", "T. c #4BFF4A", "R. c #49FF56", "E. c #52FF4B", "W. c #59FF49", "Q. c #52FF53", "!. c #5BFF53", "~. c #5BFF5A", "^. c #52FF59", "/. c #5EFF63", "(. c #57FF66", "). c #4AFF6E", "_. c #64FF48", "`. c #62FF53", "'. c #66FF59", "]. c #72FF5B", "[. c #76FF54", "{. c #74FF4A", "}. c #63FF63", "|. c #64FF6A", " X c #6CFF66", ".X c #6BFF6A", "XX c #67FF76", "oX c #75FF68", "OX c #71FF74", "+X c #71FF7A", "@X c #7BFF75", "#X c #7BFF7B", "$X c #5DABDA", "%X c #5BABD4", "&X c #5DAAD1", "*X c #5BAEE2", "=X c #62ADDB", "-X c #6BAEDA", ";X c #65ABD4", ":X c #65B1DB", ">X c #6BB2DD", ",X c #6FB5D7", "X>X>X>X>X8X9X9X9X8X8X9XwX1XwX1XwX3XwX2X2X0X9X2X2X0XqX0XqX0XqXwX2X2X2XwX3XqXqXqXqXqXqXsXsX3XqXNXqXsXsX3XqXqXNXNXqXqXqXqX", "t t 9 t t 9 9 t t t 9 t t 9 t 0 t 9 t 9 9 i 9 t 9 t t 9 t t t r t r r u i u u t u u y y u t u t u u t u y j m h.M.Y./.rX#XhX@X@XOXXXOX.X|..X X|./.}.}./././././././././.~.~.~.~.~.~.~.~.XX(.|.|.'.~.'.'.].]..3.:.@.@.@.O.@.@.@.@.O.@.O.@.@.@.@.@.@.@.,.>.8.3.4.5.5.0.s.s.v.k.k.b.G.G.M.N.C.J.J.U.R.T.`.[.4X1X3X0X0X0X0XwXwX2X2XqX2X3XqXqXqXqX3XyX3XqXqXNXyXsX3XyXqX3XqX3XqXyXCXqXwXqXqXqXqXqX", "t t t t 9 t t 9 0 t t i t t 0 t 9 t t t t t t t t t t 9 u 0 0 0 t p t t r y k x. XhXfXhX#XOX.X}.~.^.U.N.G.k.h.7.5.9.9.2.@.O.O. . .} ) } ( ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ _ ( ( ( ( } } } .O.O.@.#.:.,.3.5.5.s.y.u.k.D.m.m.M.M.M.N.U.Z.!.'.4X3XqXqXqX0XqXwX3XqXqXqXqXNXqXsXsXsX3XNXqXqXqXNXqXNXCXqXCXCXqXqXqXqXqXqXNXqXCX", "t t t t t t t t t t t t t t 0 t t t t t t t t t t t t t i 0 t t t r y s x.oXzXhX#X#X+X|.}.^.Y.n.c.u.y.5.1.%.$.O.O.| ) o.^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ / ^ / ^ ^ ^ ^ R ^ ^ _ _ ^ ( ^ ( ^ ' ' ' X.' | X.o.;.&.&.>.:.3.5.q.d.s.d.z.c.x.n.n.Z.Z.H.T.].4X3X3X2XqXqXqX3XqXsXqXqXqXsX3XqXsX3XdXqXqXqXqXqXqXqXqXqXqXyX3XqXqXqXqXqX", "0 t t 9 t t 0 t 9 t t 9 t t i i t t t t t p t t t t 9 i i t w 0 y e.W.lXkXkXrX+XXX~.Y.Y.n.y.0.5.,.>.@.} o.| } ^ _ ^ _ Q ( ( ^ ( ^ ^ ^ ^ ( ^ / ^ ^ ^ ^ ^ ^ ^ ^ ^ / ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ _ _ _ _ _ _ _ _ _ _ ^ ( ( } .O.%.:.3.5.0.a.s.z.D.x.C.Z.A.M._.[.qXwXqXqXyX3XuXqXsXNXNXqXqXsXqXqX3XyXqXqXyXqXqXqXCXyXqXNXqXyXqXqXqX", "i i 0 i t 9 t t t t t t i i i 0 w w 0 t u 0 w t t r r r p i d c.fXzXkXjX@X X~.E.N.z.y.5.3.:.O. .} ( ( ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( } } O.#.,.5.7.7.i.a.h.h.z.x.c.M.'.aXqXqXyX3X3XdXdXqXqXyXqXNXdXqXqXqXyXqXdXqXdXsXsXsXsXsXsX3XyXqX", "0 0 9 9 9 t 9 t 9 t 9 t t t 0 0 0 u r r 9 t u u p 0 t t 7 J.lXlXpXpX@X].R.N.z.y.5.,.@.&.} ( ^ ^ ^ / ^ ) ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ( } } +.@.:.3.4.7.y.u.a.d.v.a.x.`.aXsXyXyXqXsXqXqXyXNX3XqXqXqXqX3XqXqXdXqXsXsX3XqXsX3X3XsXqX", "9 t t 9 t 9 t 9 t t t t 0 t u r e e i r r r t 9 p t j `.lXlXlXpX X`.K.b.u.9.,.#.| } ( ^ ^ ^ ^ ^ / ^ / ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ^ ^ ( ( } .@.:.8.5.0.y.s.v.c.s.x.`.3XdXyXCXqXwXsXsXqXsXNXqXyXsXNXqXqXqXqXNXNXqXqXqXqXNXqX", "9 9 9 9 q t q t 9 9 t t 0 0 i r y r u t 0 p 0 r 7 G.hXkXhX#XXX!.C.v.7.,.#.O.| } ( ( ^ ^ ^ ^ _ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ( } .#.,.8.6.4.0.a.a.0.h.Y.dXdXBXCXsX3XyX3XNXqXdXqXqXqXqXBXNXqXsXNXsXqXyXqXqX", "9 0 0 0 9 9 t 9 t t 9 t t t t 0 0 t p w b 9 e M.gXxXfXpXXX(.C.s.9.2.#. .( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ^ ( ^ ) ^ ^ ( ( } .O.@.w.6.6.7.y.p.s.k._.aXdXNXNXqX3XNX3XqXqXNXsXqXNXNXqXqXqXsX3XqXqXqX", "0 9 0 0 9 t q t 9 t t t t t p t 0 t t 0 6 r.#XzXjXrX|.E.n.y.4.,.$.} ( ( ( ^ ^ ^ ^ R ^ _ ( ^ ^ R ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( / ^ ^ ^ ^ ^ ^ ^ / / ) ( ( | O.@.<.w.e.6.7.5.e.G.].sXsXqXCX3XsXqXdXNXqXNXqXqXBXqXBXqXqXCXqXCX", "9 0 0 9 t 9 0 9 t 9 t t r r 9 0 t e y x |.kXgX@XoX~.N.s.4.:. .` ^ ^ ^ _ ^ ^ ^ ^ ^ / ( ^ / ^ _ ^ R ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ) ^ ^ ^ / / ^ ^ / ^ ^ ^ ^ ^ ( ( ( .@.<.1.e.5.5.6.e.H.3XVXwXsXsXNXqXsXdXNXBXBXNXqXqXdXqXqXqXqX", "0 9 9 0 9 t t t t t t t r t 0 p t y b.lXhXfXOXXXC.s.4.@. .} ( ^ ( ^ ^ ^ ^ / ^ ( ( ^ ( / ^ ( ( ^ ^ ^ ^ _ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ^ ( ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ Q _ ( X.o.+.O.:.8.4.9.9.4.g._.BXsXNXqXqXNXaXBXqXNXyXqXdXqXdXNXqXqX", "9 9 t 9 t t t r r r t 9 u 9 p i n '.zXfX@X}.Y.z.5.,. ..._ ^ ^ ^ R ^ ^ R ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( } .@.,.8.5.5.3.8.h.3XdXdXdXdX3XBXNXNXNXqXyXqXsX3XyXuX", "9 9 9 9 9 t t 9 r t t h 9 t e k.pXzX#XOXE.b.0.>.O.} ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( } } .:.>.8.3.1.8.6.].aXBXBXNXNXNXBXqXBXNXNXNXqXBXyX", "9 q 9 9 9 u 9 t 9 0 t t 0 y J.hXfX@X}.N.u.4.#. .( ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ R ^ ( ( .+.@.,.,.:.q.%.W.NXqXVXNXNXNXNXNXNXdXBXqXqX3X", "0 9 9 9 9 q h 9 h t t t j `.hXhX+X^.n.e.,.O.} ) ( ( ^ ^ ^ ^ ^ ^ _ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ _ R ^ ^ ^ ^ ( ^ ( } .@.,.:.>.,.$.k.BXNXqXBXNXBXBXdXNXNXBXqXqX", "q r 9 0 r 9 0 0 9 t e l oXgX@X|.T.u.4.@. .( ( ^ ( ^ ^ ^ R ^ ^ R ^ ( ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ R ^ ^ ^ ^ ^ ^ ^ ( ( ^ ( } +.@.%.>.#.O.e.aXBXNXBXBXdXBXBXNXNXNXuX", "0 q q t t 9 9 h t 7 m pXhX#X|.V.t.4.O.( ( ( ^ ) / ^ ^ ^ ^ ^ ^ _ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R ^ ^ ^ ^ ^ ^ ( ( ( .#.O.@.@. .8.aXBXBXBXBXCXBXNXNXNXNX", "9 q t 9 r t t t 6 n gXgX+X/.n.7.,.o.( ^ ^ ^ ( ^ ^ ^ ^ _ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R ^ ^ ^ ^ ^ / ^ R ^ ^ ( } ) O. .@.+.O.-.aXNXBXBXBXCXBXBXNXNX", "0 t 9 t t t t r m pXgXOX^.x.7.@.} | ( ( ^ ^ ^ ^ / ( ^ R ^ ^ R ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ _ _ ^ ^ ( } .+.O.$.{ ..,.dXCXBXBXBXBXdXCXBX", "r 6 t t f 0 w s #XkXXX~.b.6.@. .) ) ( ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ( } } .O.} ( @.aXBXBXBXBXBXBXCX", "0 0 t 0 9 u y ].pX+X(.z.6.@.} ) ( ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ) } } . .( ( -.BXBXCXVXBXBXBX", "0 t 9 0 p 6 K.pXiXQ.v.q.@.} ( ( ^ ^ ^ _ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ / ( ( ( ( } } ( R R h.ZXBXCXVXBXBX", "9 9 0 w i u.pXoX~.b.7.@.} ( ^ ( ( / ^ _ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ( } } _ ^ R K.ZXVXNXZXBX", "r t t 9 k OX.XXXm.7.:.} ( / ^ ( ( ^ ^ Q ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R _ ( ( ( ` E R ` aXBXBXZXVX", "t t r e W.oXXXR.s.,...( ( ^ ^ / ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ( ( ( ^ ^ ^ F r.dXZXBXZX", "t r 6 t.OX~.R.a.4.O.( ^ ^ ( ^ ^ / ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ( ^ ^ ^ ^ ^ ^ / ^ R Y J !.VXVXVX", "t e y ~.tX(.n.e.%.( ) ) ^ ^ ^ ^ ^ ( ^ / ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ( ^ Q Y R %.ZXVXZX", "0 y r.}.~.N.y.:.} ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ( ^ _ ^ ^ ^ ^ _ ^ ( E / ) ( ) ^ ^ ^ ^ ^ ^ ^ ^ ) ^ ( ^ ^ ^ ^ ^ ) ^ ^ ^ ^ / ( ( ^ ^ ^ / ) ) ^ _ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ' ( Q R T F _.BXZX", "0 y J.~.R.v.4.O.( ^ ^ _ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ( ^ ( R ^ ^ ^ ^ _ Q Q [ R ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ( ^ R ( ^ ^ ^ / R ^ ` R ^ / ^ ( ) ^ ^ _ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ X.^ W R T F =.ZXVX", "t w.~.T.n.0.#.} ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ / ( ( / / ^ / ^ / ^ ^ ( ( ( ( ^ _ ^ ^ ^ ^ ^ ^ ^ ^ R ^ ( ^ ^ ) ( ^ ^ ( ) ( ^ _ [ ^ / ( ^ ^ ( ( E ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ^ _ R E T C oXZX", "t k.T.U.z.4. .( ( ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( E ( ) ( ^ ( ^ ( ^ ^ ^ ( E ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ^ ( ^ ^ _ _ _ R ) ) / ( ^ ^ ^ ^ _ R / } ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R ~ F B r.VX", "y J.V.n.y.:.} ( ^ / ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ _ ^ ^ ( ( / ( R | / ( ( R Q _ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ) ( ^ ^ ) ) ( ^ ^ ( ^ ) _ ( ( R _ ` ^ / ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( R ^ / E F F ^ BX", "w.H.U.z.4.#.( ( ^ ^ _ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( R } R ^ _ f.s.d.#.) ) ) ) ^ ^ ^ ^ _ ^ R ^ R ^ / ) / ( Y / ] ) E } R _ / ) _ Y } ^ _ Q ) X.^ ( ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ^ R ^ R F B D oX", "e.M.m.y.3. .( ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R ( ( R O.T.IXKXLXKXLXIXJ. .^ ^ R ^ ^ ^ ^ ^ ^ ( ^ / ) ^ ^ i.KXLXKXr.R ( / ' A.pX) / / ( R R ) ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ( ^ ^ R Y D B D.", "t.M.a.0.:. .^ ( ) ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ .AXLXJXLXJXJXJXLXKXGX( ^ R R ^ ^ ^ ^ ^ ^ ^ / ( ^ ^ e.LXJXLX0.^ / t.mXKXbXR ' ^ _ _ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( E ^ ^ W J S N B.", "i.z.u.9.#.} ( / ^ ^ R ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ) W | / mXLXJXLXLXvXbXLXLXJXLXnXT W ^ _ ' ^ ( ^ ( R ( R ^ ) <.^.^.T.%.Y R nXLXLXmX/ ^ Q R ) / Q ^ ^ ^ ^ R ^ ^ R ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ E F S M ` ", "h.a.y.5.@.( ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ` / 3.LXLXLXHXf.T S #.IXJXJXLX9.W +.r.9.t.E ( ) y.s.u.>./ .p.5.6.( Y 6.GXLXLXMX4.,.W _ R ( ^ ^ ^ ^ ^ ^ ^ ^ _ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R ^ ^ ^ ^ F S M B ", "t.u.7.3.O.( ^ ( / ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( / / !.LXJXJX/.E B H S (.LXJXLX|.S ^.KXLXKX( / Q KXLXKX`._ j.LXLXLXp.~ KXJXLXJXLXLXmXT E W _ ) ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R T B M ; ", "t.t.5.>. .( / ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ) ( cXLXLXLX9.C Z I M 2.LXLXLXbXB ).LXLXLXF / R LXLXLXH.E r.JXLXLXp.L KXLXLXLXLXLXcXG ~ Y Y ) R ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R F S M ; ", "6.7.5.,. .^ / ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ( ( MXLXLXLX8.D B , V 2.LXLXLXvXZ ).LXLXLXW R R LXJXLXT.R e.LXLXJXp.G F.DXJXLXMX<.O.B G G R / ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( _ ^ / R F B : # ", "6.4.4.,. .^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( _ / bXLXLXJXq.A D Y M ,.LXKXLXvXZ ).LXLXLXH F W LXJXLXE.S g.LXLXLXq.D I vXLXLXcXM M C B T R R ^ R ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ( ^ R F B : 3 ", "e.3.,.:. .^ ^ ) / ^ ^ _ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ Q / ^.LXLXLXQ.B Q.HXm.(.KXLXLXC.Z Z.LXLXKXF S S LXLXLXI.G 4.LXJXLX3.M C cXLXLXzXM : : B F F _ R ^ R ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ) ^ ^ R F M : ; ", "1.8.3.:. .^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ X.q.LXLXLXHXo.e.GXLXLXJXJXLXf.: n.LXLXLXT V %.LXLXLXK.S l.LXLXLX<.B : nXLXJXnX> : M B S F Q ^ ^ _ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ) ^ / R F M ; + ", "<.,.@.@. .^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ) ) ) E bXKXJXJXLXcXDXLXLXLXLXxX: : C.KXJXLXnX).GXPXLXLXH.C :.LXLXLXq.N B nXLXJXHXS.;.N B F Y R R ^ ^ ^ R ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R S M < : ", "w.@.>.#...( ^ ^ ^ R ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ` ^ ( ) E ^ ( MXLXLXLXLXLXLXJXLXJXUX_ ; | LXLXJXLXLXKXPXLXLXM.: >.LXLXLX<.Z B E.LXJXLXLX_., H S E E ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R R S : # [ ", "$.$.@.O...^ R ^ _ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R ( R Y ( M.HXLXLXLXLXIXHXJXLXLXB Z H.KXLXLXHXe.zXLXKXM.M 2.KXLXKX<.Z : ` GXLXKXKXmXM B E T / ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( E F B : $ -.", "$...O.O. .^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R F S B ^ >.2.o.1 > W.PX X: : Z F 1.<.M : : , B : , M M M M B N G N D ,.f.q.N N D F R R ^ R ^ ^ R ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ^ ( ^ F N ; % k.", "=.( } .} ( ^ ^ ^ R ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ _ ^ R ^ R Y F S M B B N N : : Q E > : M S B B : : B : : M M : B B S N B V D S D K K D V S F F R _ ^ ^ ^ _ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ^ ^ R D : # + [.", "y ` ^ } ( ( ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R F F S B : M N N : : N : D B D A D M B Z M M B B B B C M C B H H F F S M B B H F W R R ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ E F D ; + C qX", "u ..R ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( R ( E ^ F F B F B : M V N N B B S G T D H B B B D M S S S S F H S F H F F C J H B F F R R R ^ ^ ^ ^ ^ R ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R S : & % g.NX", "u =.R ^ ^ _ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ^ ( ^ E R R Y F H H F S D G H H C J F T J H F F S F F F F W T E F R T R R Y E T G T F R R R ^ ^ ^ ^ R ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R ^ W B ; + % `.yX", "u y ` E Q ^ / ( ^ ^ ( / ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ _ ^ R R R R F F F F J Y Y F Y F R Y R F R Y Y Y Y R R R R Y R R R R R R R R Y R R R ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ^ R / G N 2 o =.qXqX", "u y ..Y R R ^ / ^ _ ^ / ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ _ ^ ^ E / E R R R R R R R R R E R R R R R R E R E R R ^ R ^ / ^ R ^ E R R E R R E / ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R ^ ^ ^ ^ E F L & . + P.aXqX", "h y s ^ Y R / / ^ ^ R ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R ^ ^ E ^ ^ ^ R ^ ^ / ^ R ^ R ^ E / R ^ ^ ^ ^ / ^ ^ ^ / ^ ^ ^ ^ ^ ^ ^ / ^ ^ ^ / / ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ E S ; % = ^ 3XCXdX", "r u u *.F T / R ^ _ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R ^ ^ ^ / ^ ^ ^ ^ ^ ^ ^ ^ ^ R ^ ^ / ( ^ / / ) ) ) ^ ( ) ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ^ ^ ^ ^ ^ R W S N 3 @ @ ].3XyXdX", "u u t f _ F E E R Q R ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ( ^ ^ ^ ^ ^ ^ ^ ^ / ^ / ^ ^ ^ ^ ^ ^ ^ ^ ^ ( / ^ ) ^ ) / ( ^ ^ ( ^ ^ ( ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ R F B & + - w.BXNXNXCX", "u h r g 7 R S T Y R R ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ / ^ ^ / ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R / ^ ^ ( ^ ^ ( ^ ^ ^ / ^ ^ ) ( / ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R F S ; 2 @ B aXqXyXqXqX", "u h f a u *.F F F Y R ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ^ / ^ / ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R F B N = % & K.dXqXqXCXNX", "u t f r h y ^ S S T R / ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ( ^ ^ ^ ^ ^ / ^ ^ ^ R ^ R ^ ^ ^ ^ ^ ^ ^ R ^ ^ ^ R ^ / ^ ( ( ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R Y F N # * 4 j.3XqXqXdX3XNX", "u u u u s f y Q D L ! Y R ^ ^ ^ ) ^ ^ ( ^ ^ ^ ^ _ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ( / ^ _ ^ ^ ' Q ^ R R S A = % @ $.aXwXdXdXqXqXNX", "u u u u f t f y T D D F F Y ^ / E ( ( R ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ^ ^ ^ ^ ^ / ^ R Y K N % % 4 { aXqXqX2XsXqXCXqX", "u t u u h t f u 7 F B S S F E ^ ^ ^ / ^ / ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ^ ^ ^ ^ ^ R ^ R T D : % % . J 5XyXyX0XwXqXqXqXNX", "u u a u h g y u d y J Z B F F Y R / R ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ R ^ R F G ; & . $ U 5XyX,XyX2XCXqXqXyX3X", "u r a u f r j u u u 6 H B B S F F R ^ ^ ^ / ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ R R Y F B , . 5 $ *.,X0X0XqXqXqXqXqXqXqXqX", "u u u u y u y g 0 h f 6 J M M S F F R W ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / R R Y S M & . - @ *.3X9X0XqXwX2XCXwXqXqXqXqX", "u u u u f f u t f u f g s R M M B D F F R R ^ ^ ^ ^ / ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / R ^ R F B > # % O # j.4XqXwX0X9XwX3X3XwXqXNXqXqX", "u u u u t a a f y y f a g j ` M > M B F Y Y E R ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R T F V > + . 8 C L.2X1X0X1XwXqXqX3X3XyXqX3XaXqX", "u u u u u u u u u u j u d d z ..C , : N D F J Y R ^ ^ / ^ ^ ^ ^ ^ ) ) ^ ^ ^ _ ^ ^ ^ _ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ R ^ ^ R ^ ^ ^ ^ _ _ ^ ^ _ ( ^ ^ ( ^ ( ( ( ^ ^ E Y G A M 2 o o - { _.wX8X0X0X0XwXyX0X0X0XqX0XqXqXqX", "u t u u u t u u u u u u g u r d s W < : : M D T E R R Q ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ / ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ R ^ ^ ^ _ ^ / ( ^ ^ / R R Y F V C 3 X 4 * : l.X8X0X0X0X0X0X0XqX0XqXqX0X3X", "u u u u u u u t u u u f g f g g u d *.C ; M M : S F Y E R ^ R ^ ( / ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ( ^ ^ ^ R R R R F S B 3 + + $ 4 ^ K.1X4XX2X2X0X0X0X0XqX0XwXwX", "u u u t t u u u u f u f g u g g u u j u R Z 3 : : M G T R Y R ^ ^ ^ ^ ^ ( ^ ( / ^ ( ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ _ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ^ ^ R R F S M ; % @ = 4 L j.,X>X:X7X-X9X9X7X9X1XqX0X2X0X2X0XwX2X0X2X", "i u u u u u u u u f u f u g j u z u y g f =.W ; = A N M F F F R R ^ ^ ^ / ^ / ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R ^ ^ ^ ^ ^ ^ ^ ( ^ ^ R ^ R F F V > $ @ + @ $ =.{.1X:X8X>X>X8X>X8X9X9X9X9X1X2X2X0X0X2XwX0X3X", "u u u t u u u u u u f u d u d g a u u u f f d ..H # ; : : B S F F F R ^ ^ ^ ^ ^ ^ ^ / ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ _ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ / R Y F D N A - * @ . 2 ..K.1X;X:X6X-X7X1X9X9X9X1X>XwX9X1X9X2X2X2X0X0X0X9X", "u u u u u u t u u u u u u u u u u u u g d z u g j *.C ; ; > N M B S F F R R E ^ _ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R ^ ^ ^ ^ ^ R R F F B B : @ * = % [ k.>X>X-X:X>X8XeXwX>X>X2X>X1X9X0X>X0X0X9X9X0X9X0X0X2X", "u u u u u u u u u u u u g g f u g u u u d d z g g j y *.N ; $ ; M M B S F F R R R R ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ^ _ ^ ^ R R Y F D B : $ $ . # + . W D.;X>X:X>X-X>X>X;X1X:X2X1X>X>X1X>X1X9X2X2X9X9X0X0X0X9XwX", "u u u u u u g u u u u u u u a h u d f f f f g j j j f j x ..U % % $ ; M M B S F F Y R R ^ ^ ( ^ ^ ( ( ^ ^ ^ ^ ^ ^ ) ( / ^ ^ ^ ( ( ^ / ^ ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ / ^ / ^ ^ ^ ( ^ ^ ^ ^ ^ ( ^ ^ ^ ^ ^ ^ ^ ) ) ) ( ( ^ ^ ^ ^ _ _ Q _ R T ! G V : , % @ * - + . *.P.:X=X>X:X>X>X>X:X7X7X>X>X1X1X1X1X1X1X1X1X9X9X9X9X9X9XwXwX0X", "u t u u u u u u u u u u u u u f f u f f f f d j f j j j j j k =.W ; + = ; > > N B S F F J W R ^ ^ ^ / ( ^ ( ^ ^ / ^ ^ ( ^ ^ ^ ^ ^ _ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ^ ) ^ ( ^ ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ^ ^ ^ ^ R _ ^ _ _ _ Q Q W R / ~ L G B , ; ; $ @ + . % & B.K.4X;X6X6X=X>X>X:X:X7X>X-X>X>X1X>X2X1X1X1X1XwX9X9X9X9X0X0X0X2X0X", "i u u u u u u u a u u f u u f u u f u f f d g j j j j j j z v z j -.` M $ @ $ ; ; > M M D D D F F W W Q ^ ^ ( ^ ^ ^ ^ ^ _ _ _ _ _ R _ _ / ^ ^ / ^ / ^ ^ / ( ^ ^ / ( ^ ^ ^ ^ ^ / / ( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ _ _ R R E E ] ! ! D B M , ; $ 1 o % O # [ j.{.-XeX6X*X6X:X>X7X>X>X:XeX>X>X>X1X1X1X1X>X1X1X1X1X1X9X9X9X9X2X0X0X0X", "u u u u u u p u u u u a u u g u f u f f j j g j j j j j x j f j z z k j -.J ; # # # ; ; < Z M B B S T F F F Y R R E ^ ^ _ R ^ ^ ^ ^ _ ^ ^ ^ ^ ^ ^ ^ ^ R ( ^ ^ ) ( ^ / ( ^ ^ ^ ^ ^ ( ^ / ^ / ^ ^ ^ / R R ^ T E E T L L N N N > $ @ @ + % o % I -.K.$X$X:X7X=XeX>X-X;X:X>X:X8X>X>X>X>X>X7X>X1X1X0X1X1X1X1X9X9X0X9X9XwX0XqX0X", "u u u u u u u u u f u u u u g u f u f f z z g j j j j x j j k x x z j v z x k %.J ; % @ & # # ; : M M : B S H S F F F Y E R E R ^ R R ^ R ^ ^ ^ ^ ^ R ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R ^ ^ E ^ R E R R F T F F F B B M : 3 3 2 - @ + % . % I *.k.$X*X$X6X=X=X=XeX-X;X>X8X-X:X7X>X>X>X>X>X1X1X>X1X9X1X1X1X1X9X9X9X0X0X0X9X2XwX0X", "u u u u p u a u u u u u a f g u u f f j z d j j j j j z f v j j j x k k v v x k n n $._ A = @ + # % & < ; ; M M M M B B S D G F G F T T F Y Y Y R R R R Y Y Y R Y R Y R E Y Y Y F F F F F S S B B M M : & < ; $ @ = @ @ 2 & . # Q g.L.&X*XeX;X&X%X$X=X:XeX6X>X>X=X:X>X8X7X>X>X>X>X>X>X1X1X1X>X9X1X1X9X9X9X9X0X9X0XwX0XwXqX", "u u u u a u u u a u u a g u u u d u z g z u g z j j j j v f j v c j k k j c c j x x x x m l { Y : $ * - + + + $ ; ; ; ; : : : : M N M B B B B S S B S B B B B B B B B B B B B M M M N M : ; ; # ; # $ # % # + * $ $ $ # H *.D.&X%X$X$X=X;X;X$X$X$X$X:X6X$X:X$X6X>X8X:X7X>X>X>X>X1X1X1X1X1X1X9X1X1X1X9X9X9X9X9X0X0X0XwX0X0X", "u u u u u a u u u u u u u u u g u u u d a z d j j j x j k j k k x v v j x x x c c x x c v c c k n n ..Q S : # . @ + @ + + # # # # & # ; # ; ; ; ; ; ; ; ; : : ; ; ; ; ; ; ; ; ; # # @ $ $ @ + @ @ + + * * $ U { l.D.&X$X%X%X=X$X$X$X%X*X$X$XeX=X:X;X:X;X-X:X>X-X-X>X>X>X>X>X>X1X>X1X>X1X9X>X9X1X1X9X9X9X9X9X9X9X0XwXwX0X", "u u a u u u u u u u u u f u u f f f j j d g j j j z x j j z z x j x z x x x x c c c n c c c x x c x x c c x k =.` Q C M + + + + + @ # @ + + + + + + @ @ + + + + @ + @ + @ + + $ + + + + 4 O + % . [ [ B.g.G.;X;X=X$X$X=X$X$X$X$X$X$X$X$X$X$X$X$X$X=X=X:X:X-X>X>X>X>X>X>X>X>X>X>X>X1X1X1X>X1X1X>X1X1X9X9X9X9X9X0X0X2X2X2XwX", "u u u u u f u u f p u u u g u f f f j u d g z g j j j j z x j j j x x x x x x v x x c c c c n x k c x n x c m k k n n n n n O.$._ R J S M Z ; # + + + @ + @ + + + + + + ; Z B F Y R *.h.G.X6X>X>X>X;X$X=X$X=X$X$X$X=X$X=X$X$X$X$X=X=X=X=X:X:X:X>X>X:X>X>X>X>X>X>X8X>X>X>X9X1X1X1X1X1X>X1X9X0X9X9X0X2XwX2XwXqXwX" }; micropolis-activity/images/scbos.xpm0000664000076400007640000001026010724145723020136 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "67 57 7 1", /* colors */ "` c #000000", "a c #00BF00", "b c #3F3F3F", "c c #3F3FFF", "d c #BF7F3F", "e c #585858", "f c #DFDFDF", /* pixels */ "```````````````````````````````````````````````````````````````````", "``fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff``", "`f`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`e`", "`ff`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`ee`", "`fff```````````````````````````````````````````````````````````eee`", "`fff``ccccccccc````ddddddddddddddddddddddddddddddddcccccdddddd`eee`", "`fff`d`cccccccccbb````dddddddddddddddddd``````dd`dcccccdddaddd`eee`", "`fff`dd``ccccccccbbb``````````dddddddd``````bb``bccccdddaadddd`eee`", "`fff`dd```ccccccccbbcccccccbd`ddddddd``````bbbbbbcccddaadddddd`eee`", "`fff`ddd`bbbcccccccccccccccbcdddddd``ddd``bbbccccccddd`````ddd`eee`", "`fff`addd``bbccccccccccccccbcccddddd`ddd`b`cbccccc`dd`dddddddd`eee`", "`fff`dddddddbd```ccccccccccbccc`ddddd``bb`ccbcccc``dd`dddddddd`eee`", "`fff`ddadddd`ddd``bb`b`````bcccccccd`b``ccccbccb````d`dddddddd`eee`", "`fff`dddaddd`d`dd`bbbbbbbbbb`cccccccccccccccb``bbbb```dddddddd`eee`", "`fff`dddaddd```dddbb`bb```bb``cccccccccccccdbd`b`bbbb`dddddddd`eee`", "`fff`dddaadd```dddd````````bbb`cccccccccccdd`dbb`bb`b`dddddddd`eee`", "`fff`ddaaadd```ddddd``bbbb```bbcccccccccccdd``b````bb```````dd`eee`", "`fff`dddaad````bbbbb``bbb`````bcccccccccc``d``bb```bbbdddddddd`eee`", "`fff`ddddddddd`bbbb```bb``````b`cccccccccb````bbbbbbbbdddddddd`eee`", "`fff`ddddddddd`bbb```````b```b``ccccccccc``````bb`bbb`dddddddd`eee`", "`fff`ddddddd```bb````````b````bcccccccccc``````bbbb`b`dddddddd`eee`", "`fff`dddddd``b`b`````b```bbb``bcccccccccccbbbbbbbbbbb`dddddddd`eee`", "`fff`aaddd``````````bbbb`````ccccccccccccccbbbb`bbb``````````d`eee`", "`fff`aad````````bb``b``bb```cccccccccccccccc````bbb```dddddddd`eee`", "`fff`aa`ddd`````b```````bbbcccccccbb`ccccccc````bbb```dadddddd`eee`", "`fff`aa`ddd``````````````ccccccbb`b```bccccc`bb`b`b```ddddaddd`eee`", "`fff`dd`ddd`bb```bb`b`b`dbbccbbbbbb````bbbbbbbb`b`bb``dddaaddd`eee`", "`fff`dd`ddd`bb```bb`bbb`dcbb`b``````b```ccccc```bbbb``dddadddd`eee`", "`fff`dd`ddd`bbbbbb```bb`ccccbb`b````b```ccccc```b`b`````dddddd`eee`", "`fff`dd`ddd`````````````ccccbbbb````bb``bccccc```````````ddddd`eee`", "`fff`dd`ddd`bbbbbb````b`cccbbbbb`bb`bb``bccccc```````bb``ddddd`eee`", "`fff`dd`ddd`bbbbb`````bbcccbbbbbbb`bbb``bccccccc``````b````ddd`eee`", "`fff`dd`ddd`bb```b````cccc`````````b````bbccccccc`````b`````dd`eee`", "`fff`dd`dddbbb``bb```ccccc```````````````bcccccccbb``````dd`dd`eee`", "`fff`dd````bbb``````ccccc````a``````````bbccccccccccdddddddddd`eee`", "`fff`dd`ddd``bb`````ccccbbbaaaa```b````bbcccccccccccccc`d`d`d``eee`", "`fff`dddddd```bbbb`cccccb`aaaa```bbbb``bbccccccccccccccccccbbb`eee`", "`fff`dddddd``bbbb`bbcbbbb`aaaa`````bb``bbccccccccccccccccccccc`eee`", "`fff`d```````bbb`cbbbbbbb`aaa`````bbb``bbccccccccccccccccccccc`eee`", "`fff`aaaaad`ccccccbcb`````````````bb``bbbccccccccccccccccccccc`eee`", "`fff`adaaa`cccccccbb``bbbbb``bb``bb```bb`ccccccccccccccccccccc`eee`", "`fff`daad`ccccccccdb`bbbb```bbbb``b```bb`ccccccccccccccccccccc`eee`", "`fff`d`dcccccccc`ddbb``bbbbbbb`b``bb``bb`ccccccccccccccccccccc`eee`", "`fff``ccccccdddddddd`bbbb`bbbb`bbb````bccccccccccccccccccccccc`eee`", "`fff`cccccc```````````````bbb``bbb```bbcccc`cccccb``cc`bcccccc`eee`", "`fff`cccccdaa`dddadd`````bbbbbbb```````cc`bb`bbbbbbbb``bb`cccc`eee`", "`fff`ccccddaaadddbb``bbbbbbbbb``dbdddddccbbbbb````bbb``bbbcccc`eee`", "`fff`ccddddaaaa```bb```````````dbdd````cc```````````b`bbbbbccc`eee`", "`fff`dd````adaddd`ddbbddbdddddaaadbddddd`dd```bbbbbbb`bbb``ccc`eee`", "`fff``````b`aa`````d`dddbdddddbddaaddddd`dddd`a````````bbb``cc`eee`", "`fff`ddd`dddaddddddddddddddaaddddddddddd`dddddaddddddddd````cc`eee`", "`fff`dddddddddddddddddddddddddddddddddddddddddddddddddddddd`bb`eee`", "`fff```````````````````````````````````````````````````````````eee`", "`ff`eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`ee`", "`f`eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`e`", "``eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee``", "```````````````````````````````````````````````````````````````````" }; micropolis-activity/images/icnuchi.xpm0000664000076400007640000000431010724145723020446 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "42 42 13 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #00FF00", "c c #5D5D5D", "d c #007F00", "e c #BF7900", "f c #FF0000", "g c #FFFFFF", "h c #FFFF00", "i c #7F7F00", "j c #FF7700", "k c #BFBFBF", "l c #0000FF", /* pixels */ "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", "kaahhhhaaaahhhhaaaahhhhaaaahhhhaaaahhhhaac", "kaahhhhaaaahhhhaaaahhhhaaaahhhhaaaahhhhaac", "kaaccccccccccccccccccccccccccccccccccccaac", "kaacggggggggggggggggggggggggggggggggggkaac", "khhcgeeeeeeieeeeeeegfgeeeeeeeeegfgeeegkhhc", "khhcgieeeeeeeeeeeegc`cgeeeeeeeg`c`geegkhhc", "khhcgeeekhcccccccgc`c`cgcccccg`c`c`gegkhhc", "khhcgeekkck`ccccgc`c`c`cgcccg`c`c`c`ggkhhc", "kaacgekakccccccgf`c`c`c`fccgfc`c`c`cfgkaac", "kaacgekkkccccggggc`c`c`cgkggg`c`c`c`ggkaac", "kaacgekkkcccgggkkgc`c`cgkggkkg`c`c`gegkaac", "kaacgekakccgcgkkkkgc`cgkggkkkkg`c`gaegkaac", "khhcgekkkccggkkkkkcgfgcggkkkkkagfgaeegkhhc", "khhcgekkkccgkkkkkaaaaacgkkkkkaaaaaceegkhhc", "khhcgekakcckakkkaaaaacckkckaaaaaccceegkhhc", "khhcgekkkccckkkaaacaccckkkaaaacaccceegkhhc", "kaacgekkkcccckacaaaccccckkacaaacccceegkaac", "kaacgekakcccccaaaaccccccccaaacccccceegkaac", "kaacgekkkck`ccc`c`c`cccccccccccck`ceegkaac", "kaacgekkahccckkkkkkkkkccccccccccccheigkaac", "khhcgekaaaaaakaaaaaaakaaaaaaaaaaaaieegkhhc", "khhcgeaaaaaakkachaccakccccccccccaiieegkhhc", "khhcgeeiiiikkkcaacaahkccccchcccciiieegkhhc", "khhcgeeeiiikkkcacacackcccchccccciiieegkhhc", "kaacgeeeeiikkkacafacakccchcccccciiieegkaac", "kaacgeeieeekkkcacacackcchhhcccccieeiegkaac", "kaacgeeeeeekkkhaacaackccchccaaacieeeegkaac", "kaacgeebdeekkkaccahcakcchccccccaakjkkgkaac", "khhcgeeieeekkkaaaaaaakchccccaaaaakkkkgkhhc", "khhcgeieebdkkcacacacaccccccckkkkkkkkkgkhhc", "khhcgeeeeiekaaaaaaaaaaaaaaackkkkkkkkegkhhc", "khhcgeeebdeaaacacacaaacacacakkkkkkkkegkhhc", "kaacgeeeieeeiiiiiiiiiiiiiiaablkkkkkkegkaac", "kaacgeeieeeeeiiiiiiiiiiiiiiieeeeeeeeegkaac", "kaacgeeeeeieeeeeeeeeeeeeeeeeeeeegkgeegkaac", "kaacgeeeeeeeeeeeeeeeeieeeeeeeeegkgkeegkaac", "khhcggggggggggggggggggggggggggggggggggkhhc", "khhckkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkhhc", "khhaaaahhhhaaaahhhhaaaahhhhaaaahhhhaaaahhc", "khhaaaahhhhaaaahhhhaaaahhhhaaaahhhhaaaahhc", "kccccccccccccccccccccccccccccccccccccccccc" }; micropolis-activity/images/micropoliss.xpm0000664000076400007640000000445410724145723021400 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "37 47 12 1", /* colors */ "` c #BF0000 m #000000", "a c #FFFF7F m #ffffff", "b c #FFBF7F m #ffffff", "c c #BFBF3F m #000000", "d c #FF0000 m #000000", "e c #FFFF00 m #ffffff", "f c #7F7F00 m #000000", "g c #BFBFBF m #ffffff", "h c #FFBFFF m #ffffff", "i c #FFBB00 m #000000", "j c #0000FF m #000000", "k c #CF0000 m #000000", /* pixels */ "ggggggggffffffffffffffffffffffffggggg", "gggggggfbbbbbbbbbbbbbbbbbbbbbbbbfgggg", "ggggggfbbbbbbfffffffbbbbbbbbiiiibfggg", "gggggfbbbbbffkkkkkkkffbbbbbiaaaaibfgg", "gggggfbbbbfkkkkkkkkkkkfbbbbiaaaaibfgg", "gggggfbbbfkkkkkkkkkkkkkfbbbiaaaaibfgg", "gggcccccccckkkkkkkkkkkkkfbbiaaaaibfgg", "ggggfbbbfkkkkkkkkkkkkkkkfbbiaaaaibfgg", "gggccccccckkkkkkkkkkkkkkkfbbiiiibbfgg", "ggggfbbfkkkkkkkkkkkkkkkkkfbbb``bbbfgg", "gggggfbfkkkkkkkkkkkkkkkkkfbb`dd`bbfgg", "ggggccbfkkkkkkkkkkkkkkkkkfb`dddd`bbfg", "gggfccbfkkkkkkkkkkkkkkkkkfbb````bbbfg", "gggfccbfkkkkkkkkkkkkkcccccccccccccccf", "gggfccbbfkkkkkkkkkkkkkkkfbbbbbbbbbbfg", "gggfccbbfkkkkkkkkkkkccccccccccccccccf", "gggfccbbbfkkkkkkkkkkkkkfbbbbbbbbbbbfg", "ggfbccbbbbfkkkkkkkccccccccccccccccccf", "gfbbbcbbbbbfkkkkkkkkkfbbbbbbbbbbbbbfg", "ccccccccccccccccccccccccccccccccccccf", "ccccccccccccccccccccccccccccccccccccf", "gfbbbcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbfg", "ggfbccbcccccccb`bbbbb`bb`bb`bb`bb`bbf", "gggfccbceceeec`d`bbb`d``d``d``h``d`bf", "gggfccbceceeec`d`bbb`d``d``d``h``d`bf", "gggfccbcccccccb`bbbbb`bb`bb`bb`bb`bbf", "gggfccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf", "gggfccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf", "gggfc`````ccccccccccccccccccccccccccf", "gggfc`ddd`ccccccbbbbbbb`````````bbbfg", "gggfc`ddd`ccccccbbbbbb`aaaaaaaaa`bfgg", "gggfcb`dd`cccccbbbbbb`aaaaaaa`aaa`fgg", "gggfcbb```cccccbbbbbb`aaaaaa`aaaa`fgg", "gggfbcbbbbccccbbbbbbb`aaaaaa`aaaa`fgg", "gggfbcbbbbbbbbbbbaabb`aaaaa`aaaaa`fgg", "gggfbcbbbbbbbbbbaaaabb```````````bfgg", "gggfbcbbbbbbbbbaa``aabbbbb``bbbbbbbfg", "ggggfbcbbbbbbbbb`dd`bbbbb`dd`beebbbfg", "gggggfbcbbbbbbbb````bbbbb````eeejjjcf", "gggggfbcbbbbbbbbbbbbbbbbbbbbeejjjjbfg", "gggggfbbcbbbbbbbbbbbbbbbbbbbjjjjeeccf", "ggggggfbcbbbbbbbbbbbbbbbbbbjjjeeebbfg", "gggggggfbcbbbbbbbbbbbbbbbbbbbbeebbbbf", "ggggfffbbcbbbbbbbbbbbbbbbbbbbbbbbbbfg", "gggfbbbbbbccccccccccccccccccccccccccf", "gggfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbfg", "ggggfffffffffffffffffffffffffffffffgg" }; micropolis-activity/images/tiles-95.xpm0000664000076400007640000000532010724145723020401 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "48 48 10 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c #00000000E6E6", "O c red", "+ c #FFFF7F7F0000", "@ c #CCCC7F7F6666", "# c gray75", "$ c gray100", "% c None", /* pixels */ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o%%%%o%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o%%%%%%o%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%o%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%o%%o%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%o%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%o%o%%%o%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%o%o%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%o%%%%%%%% %%%% %%%%%%%%%%%%%%o", "%%%%%%%%%%%%%%%XXXXX .. XX .. X# %%%%%o%%", "%%%%%%%%% .#X$XX + X + X##@@@. %o%%%%", "%%%%%% .@@@@##XXX +++ X +++ XX##@@@@@ %%%%%", "%%%% .@@@.@@@##XX X XXX##@@@@@ %%%%%", "%%% @@.@@@@@@##XXX XXX XXXX##@@@@@ %%%%%", "%%% @@@@@@@@@##X$XX .XXXXX .XXXXX##@@@@@ %%%%%", "%%%% .@@@.@@@##XXXXXXXXXXXXXXXXXXXX##@@@@@ %%%%%", "%%%%% .@@@@#. ##@@@. %%%%%%", "%%%%%%O X X X X X X %o%%%%", "%%%%%%%%O O%%%%%o%", "%%%%%%%%%%OOOOOOOOOOOOOOOOOOOOOOOOOOOOO%%%%%%%%%", "%%%%%%%%%%%%o%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%o%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%o%%%%%o%%o%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%o%%%%%o%%%o%%%%%%%%o%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%o%%%%%%%o%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o%%%o%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o%%%%o%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" }; micropolis-activity/images/tiles-151.xpm0000664000076400007640000001055610724145723020461 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "58 67 11 1", " c #7F7F7F7F0000", ". c blue", "X c #BFBF00000000", "o c red", "O c #BFBFBFBF3F3F", "+ c #FFFFBBBB0000", "@ c #FFFFBFBF7F7F", "# c yellow", "$ c #FFFFFFFF7F7F", "% c gray75", "& c #FFFFBFBFFFFF", /* pixels */ "%%%%%%%%%%%%%%%%%%% %%%%%%%%%%", "%%%%%%%%%%%%%%% @@@@@@@@@@@@@@@@@@@@@@@@@@@@ %%%%%%%%%%", "%%%%%%%%%%%%% @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ %%%%%%%%", "%%%%%%%%%%% @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ %%%%%%%", "%%%%%%%%%% @@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@ %%%%%", "%%%%%%%%% @@@@@@@@@ @@@@@@@@@@@+++++++@@ %%%%%", "%%%%%%%%% @@@@@@@ ...... @@@@@@@@+$$$$$$$+@ %%%%%", "%%%%%%%% @@@@@@@ ........... @@@@@@@+$$$$$$$+@ %%%%%", "%%%%%%%% @@@@@@ ............... @@@@@@+$$$$$$$+@ %%%%%", "%%%%%%%% @@@@@ .................. @@@@@+$$$$$$$+@ %%%%%", "%%%%%%OOOOOOOOOOO.................. @@@@+$$$$$$$+@ %%%%%", "%%%%%OOOOOOOOOOOOO.................. @@@+$$$$$$$+@ %%%%%", "%%%%%%%% @@@ ....................... @@@+$$$$$$$+@ %%%%%", "%%%%%%OOOOOOOOOO..................... @@@+++++++++@ %%%%%", "%%%%%OOOOOOOOOOOO..................... @@@@@@@@@@@@ %%%%%", "%%%%%%% @@@ ......................... @@@@@XX@@@@@ %%%%%", "%%%%%%%% @@ ......................... @@@@XooX@@@@ %%%%%", "%%%%%%% @ ......................... @@@@XooXX@@@@ %%", "%%%%% O@O@ ......................... @@@@oXXo@@@@@@@@ %", "%%%%% @O@O@ ......................... @@@@@@@@@@@@@@@@ %", "%%%%% @O@O@ .....................OOOOOOOOOOOOOOOOOOOOO@ ", "%%%%% @O@O@@ ....................OOOOOOOOOOOOOOOOOOOOOOO%", "%%%%% @O@O@@ ....................... @@@@@@@@@@@@@@@@@ %", "%%%%% @O@O@@@ .................OOOOOOOOOOOOOOOOOOOOOOOO@ ", "%%%%% @O@O@@@ ...............OOOOOOOOOOOOOOOOOOOOOOOOOO%", "%%%%% @O@O@@@@ ................. @@@@@@@@@@@@@@@@@@@ %", "%%% @O@O@@@@@ .........OOOOOOOOOOOOOOOOOOOOOOOOOOOO ", "%%% @@@@@O@@@@@@ OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO%", "%% @@@@@O@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@ %", "%OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO %", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", "%%% @@@@@O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ %", "%%%% @@@@O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ %", "%%%%% @O@O@OOOOOOOOOOO@XX@@@@@@@XXX@@XXX@@XXX@@ooo@@XXX@ %", "%%%%% @O@O@O###O#####OXooX@@@@@XoooXXoooXXoooXo&&&oXoooX %", "%%%%% @O@O@O###O#####OXooXX@@@@XoooXXoooXXoooXo&&&oXoooX %", "%%%%% @O@O@O###O#####OoXXo@@@@@XoooXXoooXXoooXo&&&oXoooX %", "%%%%% @O@O@OOOOOOOOOOO@@@@@@@@@XXXXXXXXXXXXXXXoooooXXXXX %", "%%%%% @O@O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ %", "%%%%% @O@O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ %", "%%%%% @O@O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ %", "%%%%% @O@XXXXXXXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO%%", "%%%%% @O@XoooooXOOOOOOOOO@@@@@@@@@@@XXXXXXXXXXXX@@@@ %%%%%", "%%%%% @O@XoooooXOOOOOOOOO@@@@@@@@@@X$$$$$$$$$$$$XX@@ %%%%%", "%%%%% @O@@XooooXOOOOOOOOO@@@@@@@@@X$$$$$$$$$$$$$$$X@ %%%%%", "%%%%% @O@@XooooXOOOOOOOO@@@@@@@@@X$$$$$$$$$$$X$$$$$X %%%%%", "%%%%% @O@@@XXooXOOOOOOOO@@@@@@@@@X$$$$$$$$$$$X$$$$$X %%%%%", "%%%%% @O@@@@@XXXOOOOOOO@@@@@@@@@@X$$$$$$$$$$X$$$$$$X %%%%%", "%%%%% @@O@@@@@@@OOOOOO@@@@@@@@@@@X$$$$$$$$$$X$$$$$$X %%%%%", "%%%%%% @O@@@@@@@OOOOO@@@@@@@@$@@@@X$$$$$$$$X$$$$$$X@ %%%%%", "%%%%%% @O@@@@@@@@@@@@@@@@@@$$$$$@@X$$$$$$$$X$$$$$XX@ %%%%%", "%%%%%% @@O@@@@@@@@@@@@@@@$$$$$$$$@@XXXXXXXXXXXXXX@@@ %%%%%", "%%%%%%% @O@@@@@@@@@@@@@@@$$$XX$$$@@@@@@@@XX@@@@@@@@@@ %%%", "%%%%%%% @O@@@@@@@@@@@@@@$$$XooX$$$@@@@@@XooX@@@@#@@@@@@ %%", "%%%%%%% @@O@@@@@@@@@@@@@@@@XooXX@@@@@@@@XooXX@####@@@@ %%", "%%%%%%%% @@O@@@@@@@@@@@@@@@oXXo@@@@@@@@@oXXo#######...O %%", "%%%%%%%%% @O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####.OOOO.OO%%", "%%%%%%%%% @O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##..OO.OO.. %%%", "%%%%%%%%%% @O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@...OOOOO..@OO %", "%%%%%%%%%% @@O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OOOO..###OOOO%%", "%%%%%%%%%%% @O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.O.######@@@ %%", "%%%%%% @@O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######@@OO %%", "%%%%% @@@@@@@@@O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OOOO %", "%%%%% @@@@@@@@@@O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ %%", "%%%%% @@@@@@@@@@@OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO%%%", "%%%% @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ %%", "%%%% %%%" }; micropolis-activity/images/grcomhi.xpm0000664000076400007640000000273210724145723020462 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "32 32 15 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #00BF00", "c c #3F3F3F", "d c #00007F", "e c #3F3F00", "f c #003F00", "g c #FF3C00", "h c #3C00BF", "i c #FFFFFF", "j c #FFFF00", "k c #7F3D00", "l c #3C00FF", "m c #BFBFBF", "n c #0000FF", /* pixels */ "````````````````````````````````", "``dddddddddddddddddddddddddddd``", "`d`dddddddddddddddddddddddddd`n`", "`dd`dddddddddddddddddddddddd`nn`", "`ddd````````````````````````nnn`", "`ddd`hhhhhhhhhhhhhhhhhhhhhh`nnn`", "`ddd`hhhhhhhhhhhhhhhhhhhhhh`nnn`", "`ddd`hlhlhlhlhlhlhlhlhlhlhl`nnn`", "`ddd`lhlhlhkkkkkhlhlhlhlhlh`nnn`", "`ddd`hlllhlkeeeelhlllhlllhl`nnn`", "`ddd`llllllkcecelllllllllll`nnn`", "`ddd`llllllkeeeelllllllllll`nnn`", "`ddd`llllllkceaaaaaaallllll`nnn`", "`ddd`llllllkeeimmmmmmmlllll`nnn`", "`ddd`lljaaaaceimcmcmcmlllll`nnn`", "`ddd`lljgggggeimmmmmmmlllll`nnn`", "`ddd`lljgggggeimcmcmcmlllll`nnn`", "`ddd`lljgagageimmmmmmmlllll`nnn`", "`ddd`ffjgggggeimcmcmcmfffff`nnn`", "`ddd`ffjgggggeimmmmmmmfffff`nnn`", "`ddd`ffjgagageimcmcmcmfffff`nnn`", "`ddd`ffjgggggeimmmmmmmfffff`nnn`", "`ddd`ffjgggggfimcmcmcmfffbf`nnn`", "`ddd`fbjgagagfimmmmmmmbfbfb`nnn`", "`ddd`bfbgggggbimcmcmcmfbfbf`nnn`", "`ddd`bbbbbbbbbbmmmmmmmbbbbb`nnn`", "`ddd`bbbbbbbbbbbbbbbbbbbbbb`nnn`", "`ddd````````````````````````nnn`", "`dd`nnnnnnnnnnnnnnnnnnnnnnnn`nn`", "`d`nnnnnnnnnnnnnnnnnnnnnnnnnn`n`", "``nnnnnnnnnnnnnnnnnnnnnnnnnnnn``", "````````````````````````````````" }; micropolis-activity/images/tiles-116.xpm0000664000076400007640000000515110724145723020455 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "48 48 4 1", " c black", ". c #FFFF7F7F0000", "X c yellow", "o c None", /* pixels */ "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "ooooooooooooooooooooo.oooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooXXXXXXXoooooooooooooooooooooo", "ooooooooooooooooooXXXXXXXoXXoooooooooooooooooooo", "oooooooooooooooo.oXXXXoXXXoXXooooooooooooooooooo", "oooooooooooooooooXoXXXXXX.XXXooooooooooooooooooo", "ooooooooooooooooXXXXXXXXXXXXXXoooooooooooooooooo", "ooooooooooooooooXXXXXXXXXXXXXXoooooooooooooooooo", "ooooooooooooooooXoXXXXXXXXXXXXoooooooooooooooooo", "ooooooooooooooooXXXXXXXXXXXXoXoooooooooooooooooo", "oooooooooooooooooXXXXXXXXXXXoXoooooooooooooooooo", "ooooooooooooooooooXXXXXXXXXXo.oooooooooooooooooo", "oooooooooooooooooX.XXXooXXXXoXoooooooooooooooooo", "ooooooooooooooooooXXXXXXXXoXXooooooooooooooooooo", "ooooooooooooooooooooXXX.XXXXoooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo", "oooooooooooooooooooooooooooooooooooooooooooooooo" }; micropolis-activity/images/tiles-81.xpm0000664000076400007640000000526310724145723020402 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "48 48 9 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c #66666666E6E6", "O c red", "+ c yellow", "@ c gray75", "# c gray100", "$ c None", /* pixels */ "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$###O$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$X###$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$@####$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$@####$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$@#####$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$@#@###$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$X#####.$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$######X$$$$$$$$$$$$$$$$$$$$$", "$@@@$$$$$$$$$$$$$$$$X#####@.$$$$$$$$$$$$$$$$$$$$", "$.##@$$$$$$$$$$$$$$$@######X$$$$$$$$$$$$$$$$$$$$", "$X##@$$$$$$$$$$$$$$$@#@####@.$$$$$$$$$$$$$$$$$$$", "$X###@$$$$$$$$$$$$$$@#######X$$$$$$$$$$$$$$$$$$$", "$X###@$$$@@@O@$$$$$$X#######@.$$$$$$$$$$$$$$$$$$", "$.####@$$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.$$$$$", "$+X@X@X@##################################.@.$$$", "$.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ .@..$$", "$X###@@.oo oo o o o o o o o o oo o o o o#.@@.$$$", "$X###@$$$XXXXXXXXXXX@@@@@@@@@.@@@@@@@@@@@@@$$$$$", "$X##@$$$$@@@O@$$$$$$X@@@@@@@@.$$$$$$$$$$$$$$$$$$", "$.##@$$$$###O#$$$$$$@#######X$$$$$$$$$$$$$$$$$$$", "$@@@$$$$$$$$$$$$$$$$@#@####@.$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$@######X$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$X#####@.$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$######X$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$X#####.$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$@#####$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$@#@###$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$@####$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$@####$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$X###$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$###O$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" }; micropolis-activity/images/tiles-10.xpm0000664000076400007640000000300510724145723020362 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "32 32 15 1", " c black", ". c #00003F3F0000", "X c #3F3F3F3F0000", "o c #3F3F3F3F3F3F", "O c #7F7F3D3D0000", "+ c #727272727272", "@ c gray50", "# c #3C3C0000BFBF", "$ c #3C3C0000FFFF", "% c #0000BFBF0000", "& c #FFFF3C3C0000", "* c yellow", "= c gray75", "- c #DFDFDFDFDFDF", "; c gray100", /* pixels */ " ", " ---------------------------- ", " - -------------------------- + ", " -- ------------------------ ++ ", " --- +++ ", " --- ###################### +++ ", " --- ###################### +++ ", " --- #$#$#$#$#$#$#$#$#$#$#$ +++ ", " --- $#$#$#OOOOO#$#$#$#$#$# +++ ", " --- #$$$#$OXXXX$#$$$#$$$#$ +++ ", " --- $$$$$$OoXoX$$$$$$$$$$$ +++ ", " --- $$$$$$OXXXX$$$$$$$$$$$ +++ ", " --- $$$$$$OoX@@@@@@@$$$$$$ +++ ", " --- $$$$$$OXX;=======$$$$$ +++ ", " --- $$*@@@@oX;=o=o=o=$$$$$ +++ ", " --- $$*&&&&&X;=======$$$$$ +++ ", " --- $$*&&&&&X;=o=o=o=$$$$$ +++ ", " --- $$*&@&@&X;=======$$$$$ +++ ", " --- ..*&&&&&X;=o=o=o=..... +++ ", " --- ..*&&&&&X;=======..... +++ ", " --- ..*&@&@&X;=o=o=o=..... +++ ", " --- ..*&&&&&X;=======..... +++ ", " --- ..*&&&&&.;=o=o=o=...%. +++ ", " --- .%*&@&@&.;=======%.%.% +++ ", " --- %.%&&&&&%;=o=o=o=.%.%. +++ ", " --- %%%%%%%%%%=======%%%%% +++ ", " --- %%%%%%%%%%%%%%%%%%%%%% +++ ", " --- +++ ", " -- ++++++++++++++++++++++++ ++ ", " - ++++++++++++++++++++++++++ + ", " ++++++++++++++++++++++++++++ ", " " }; micropolis-activity/images/obj2-3.xpm0000664000076400007640000000260110724145723020021 0ustar simcitysimcity/* XPM */ static char * obj2_3_xpm[] = { "32 32 10 1", " c None", ". c #FFFFFFFF0000", "X c #7F7F7F7F7F7F", "o c #BFBFBFBFBFBF", "O c #FFFF00000000", "+ c #FFFFFFFFFFFF", "@ c #66666666E6E6", "# c #3F3F3F3F3F3F", "$ c #000000000000", "% c #00000000E6E6", " ", " ", " ", " . ", " X ", " . ", " o X OOOOOOO ", " XXo . OOO OO ", " oXXXo O O ", " oooooO O ", " Oo+ O ", " O oo+ X O ", " O oo++@ X O ", " O ooo++# X O ", " O Xooo++X X O ", " O @Xooo+++#X O ", " O XXooo+++ o O ", " O X #XXo##+++ O ", " O X #Xo##X$# O ", " O X XXoX$%$# O ", " O X#XX$%$$# O ", " O X X$$$$# O ", " O o ### O ", " O O ", " O O ", " O O ", " O O ", " O O ", " OOO OO ", " OOOOOOO ", " ", " "}; micropolis-activity/images/tiles-42.xpm0000664000076400007640000000301510724145723020370 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "34 34 10 1", " c black", ". c #5D5D5D5D5D5D", "X c gray50", "o c blue", "O c #4F4F4F4FFFFF", "+ c green", "@ c red", "# c yellow", "$ c gray75", "% c gray100", /* pixels */ "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$oo++++oooo++++oooo++++oooo++++oo.", "$oo++++oooo++++oooo++++oooo++++oo.", "$oo............................oo.", "$oo. $oo.", "$++. % % % % % % % % % % % % $++.", "$++. % % % % %O.OO.OOOOOOO % $++.", "$++. % % % % %o o% $++.", "$++. % % % %oOXXXXXXXXXX o % $++.", "$oo. % %oX...OOX###XX##XX o.X $oo.", "$oo. %oOX...Oo.#..#.#.#X o.X $oo.", "$oo. %oOOX.X oO.###..#.#X o.X $oo.", "$oo. OOoX...OO.#..X.#.#X o.X $oo.", "$++. %OoOX...Oo.#XXX.#.#X o.X $++.", "$++. oOOX.X oO.#XXX.##.X o.X $++.", "$++. %OOoX...OO.XXXX...XX o.X $++.", "$++. OoOX...Ooooooooooooo..X $++.", "$oo. %oOOXXXXo o o o o o XXXX $oo.", "$oo. OOooooooo%o o%oooooo% $oo.", "$oo. %Ooo o o Xo ..oX o o o% $oo.", "$oo. oooooooXo ..oXoooooo% % $oo.", "$++. % % % % X.X..X.X% % % % $++.", "$++. % % % ........... % % % $++.", "$++. % % % XXX.......... % % $++.", "$++. % % XX% XX% % X %XX % % $++.", "$oo. % % %XXXXXoX XXoXXX% % $oo.", "$oo. % % XX%X X%@X %XX % % $oo.", "$oo. % % %XX X%@X X%@ XX% % $oo.", "$oo. % % XX%X XXXX %XX % % $oo.", "$++. $++.", "$++.$$$$$$$$$$$$$$$$$$$$$$$$$$$++.", "$++oooo++++oooo++++oooo++++oooo++.", "$++oooo++++oooo++++oooo++++oooo++.", "$................................." }; micropolis-activity/images/tiles-78.xpm0000664000076400007640000000526310724145723020410 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "48 48 9 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c #66666666E6E6", "O c red", "+ c yellow", "@ c gray75", "# c gray100", "$ c None", /* pixels */ "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$.$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$...$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$##@$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$@#...$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$@. @X$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$@#@@X$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$@o@@X$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$@ @@X$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$@o@@X$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$@ @@X$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$@o@@X$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$@ @@X$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$@o@@X$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$@ @@X$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$@o@@X$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$@o@@X$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$.. @@X.$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$.X@#o@@X@X.$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$.X@### @@X@@@X.$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$.X@#####o@@X@@@@@X.$$$$$$$$$$$$$$$", "$$$$$$$$$$$$########## @@X@########$$$$$$$$$$$$$", "$$$$$$$$$$############o@@X@##########$$$$$$$$$$$", "$$$$$$$$O############# @@X@###########O$$$$$$$$$", "$$$$$$$$####@#####@###o@@X@#@####@#####$$$$$$$$$", "$$$$$$$$############## @@X@############$$$$$$$$$", "$$$$$$$$#X@@@@X#X@@@X#o@@XX@@@X#X@@@@X#$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$X @@X$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$Xo@@X$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$X @@X$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$Xo@@X$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$X @@X$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$Xo@@X$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$#@X @@X@$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$OOXo@@XO$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$#@Xo@@X@$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$#@X @@X@$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$#@Xo@@X@$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$o@@$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$.@@$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$@@X@$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$@##@@@@$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$@####X@##@@$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$@#####@@####@$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$######X@####@$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$@.XXX.+.XXX.@$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" }; micropolis-activity/images/obj4-0.xpm0000664000076400007640000000530110724145723020020 0ustar simcitysimcity/* XPM */ static char * obj4_0_xpm[] = { "48 48 10 1", " c None", ". c #000000000000", "X c #CCCC7F7F6666", "o c #3F3F3F3F3F3F", "O c #FFFF00000000", "+ c #00000000E6E6", "@ c #BFBFBFBFBFBF", "# c #7F7F7F7F7F7F", "$ c #FFFFFFFFFFFF", "% c #FFFF7F7F0000", " ", " ", " ", " ", " .. ", " .XX. ", " .oXXo ", " O.XoXX. ", " ..XXXX. ", " O.oXXXXo ", " ..XoXXoX. ", " O..XXXXXX. ", " O..XXXXXX. + ", " O..XXXXXX. ", " O..@@@@@@@ + ", " + O..o@@@@@@@ + ", " O.#.o###### ", " + O...o#$##$# + ", " + O...o##.### ", " O.#.o#...## + ", " O...o.....# + ", " + O...o....%. ", " O.#.oo..%... + ", " + O...o#..%.o. ", " + O...o##.%.o. + ", " O.#.o###.... ", " + O...o##.#.. + ", " O...o#...## + ", " + + O.#.o.....# ", " O...o....%. ", " O...oo..%... + ", " + O.#.o#..%.o. + ", " O...o##.%.o. ", " O...o###.... ", " + O...o####.. ", " O..oo###### + ", " + O..o@@@@@@@ + ", " O..@@@@@@@. ", " + O..XXXXXXX. ", " O..XXXXXXX. + ", " ..XXXXXXX. ", " O.oXXXXXo ", " + + ..XXXXX. + ", " ..... + ", " + ", " ++ + + + ", " + + ", " "}; micropolis-activity/images/tiles-86.xpm0000664000076400007640000000526310724145723020407 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "48 48 9 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c #66666666E6E6", "O c red", "+ c yellow", "@ c gray75", "# c gray100", "$ c None", /* pixels */ "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$...$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$..#.X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$.# ##X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$X.###X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$X@.###X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$X@@###X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$Xo@###X$$$$$$$$$$$$$$$$$#O$$$$$$$$$$$$$$", "$$$$$$$$$X @###X$$$$$$$$$$$$$@#####$$$$$$$$$$$$$", "$$$$$$$$$$Xo@###X$$$$$$$$$.X@#######$$$$$$$$$$$$", "$$$$$$$$$$$X @###X$$$$$..X@#######X$$$$$$$$$$$$$", "$$$$$$$$$$$$Xo@###X$..X@#########@$$$$$$$$$$$$$$", "$$$$$$$$$$$$$X @###XX###########@$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$Xo@###X##########X$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$X @###X#########$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$Xo@###X######X$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$.@X @###X####@$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$.#@Xo@###X##@$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$X##@X @###XX$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$.@###@Xo@###X$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$.#####@X @###X$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$X######@Xo@###X$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$.@#######XX @###X$#$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$X#######@$$Xo@###X#O$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$@######@$$$$Xo@###X##$$$$$$$$$$$$$$", "$$$$$$$$$$$$@######X$$$$$$Xo@###X##$$$$$$$$$$$$$", "$$$$$$$$$$$$#######$$$$$$$$##@###X#$$$$$$$$$$$$$", "$$$$$$$$$$$$#####X$$$$$$$$$XO#@###X$$$$$$@@@$$$$", "$$$$$$$$$$$#####@$$$$$$$$$$$X##@##XX$$$@@###@$$$", "$$$$$$$$$$$O###@$$$$$$$$$$$$$X#$.##@@@@####@$$$$", "$$$$$$$$$$$$##X$$$$$$$$$$$$$$$$$$..@@#####.$$$$$", "$$$$$$$$$$$$$#$$$$$$$$$$$$$$$$$$$$.@#X###.$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@##X#.$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@####+$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@###.$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@###.$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@##.$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@#@$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" }; micropolis-activity/images/fire.xpm0000664000076400007640000000547010724145723017761 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "48 48 13 1", /* colors */ "` c #000000", "a c #7F7F7F m #ffffff", "b c #0000E6", "c c #3F3F3F m #ffffff", "d c #007F00 m #ffffff", "e c #FF0000", "f c #997E4C", "g c #00E600", "h c #FFFF00 m #000000", "i c #CC7E66", "j c #FF7B00", "k c #7F7F7F m #000000", "l c #3F3F3F m #000000", /* pixels */ "`eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", "`e`````````````````````````````````````````````e", "`eggdggggggggggggggggggggggggggggggggggggggggd`e", "`egdgggggggggggdgggggggggggdgggggggggggggggggg`e", "`eggddggdggggggggggggggdgggggggggaaaaaaaaaaagg`e", "`edgddgdgggggggggggggggggagggggggaaaaaaaaaaagg`e", "`egdggggeeeeeeeeeeeeeeeeaeeeeeeee`jjjaaabbbagg`e", "`egdgggee``````````````a````````eajjjaaabbbagg`e", "`eggggeeecccccccacccccacccccccc`eaaaaaaaaaaagg`e", "`egggeeeeccccccaccccccccccccccc`ecaaaaaaiiiagg`e", "`eggeefeecccccacccccccccccccccc`ecaaaaaaiiiagg`e", "`eggeefeeccccaccccccccccccccccc`ecaaaaaaaaaagg`e", "`eggeeeeecccccccccccccccccccccc`ec``aaaaaaaagg`e", "`eggeeeeecccccccccccccccccccccc`ec``aaaaaaaagg`e", "`eggefefeccceeeeeeeeeeeeeeeeeeeeeeeeeaaaaaaagg`e", "`eggefefecceeccccccccccccccccccccccceaka`akakakk", "`eggeeeeeceeeaaaaaaaaaaaaaaaaaaaaaacekakakakakkk", "`edgeefeeeefeaaaaaaaaaaaaaaaaaaaaaaceakakakakakk", "`eggeefefeefeaaaaaaaaaaaaaaaaaaaaaacekakakakakkk", "`eggeeeefeeeeaachhhhhhhachhhhhaaaaacecaaaaaagg`e", "`eggefeeeeeeeaachhhhhhhachhhhhhaaaacecaaaaaagg`e", "`eggefeeeefeeaachhcccccachhcchhhaaacecaaaaaagg`e", "`eggeeefeefeeaachhaaaaaachhaachhaaacecaaaaaagg`e", "`eggeeefeeeeeaachhaaaaaachhaachhaaacefffffffff`e", "`eggefeeefeeeaachhhhhhaachhaachhaaace````````f`e", "`eggefeeefefeaachhhhhhaachhaachhaaaceccccccc`f`e", "`eggeeeeeeefeaachhccccaachhaachhaaacecca`ccc`f`e", "`eggeeefeeeeeaachhaaaaaachhaachhaaacecccccac`f`e", "`edgeeefeeeeeaachhaaaaaachhaahhhaaaceccccacc`f`e", "`eggefeeeeeeeaachhaaaaaachhhhhhcaaacecccaccc`f`e", "`eggefeeefeeeaachhaaaaaachhhhhcaaaaceccacccc`f`e", "`eggeeefefeeeaacccaaaaaaccccccaaaaaceccccccc`f`e", "`eggeeefeeeeeaaaaaaaaaaaaaaaaaaaaaaceccccccc`e`e", "`eggeeeeeefeeaaaaaaaaaaaaaaaaaaaaaaceccccccc`e`e", "`eggefeeeefeeeeeeeeeeeeeeeeeeeeeeeeeeccccccc`e`e", "`eggefefeeeeeeeeeeeeeeeeeeeeeeeeeeeecca`a`cc`e`e", "`eggeeefeeeeeeeeeeeeeeeeeeeeeeeeeeeccca`a`cc`e`e", "`eggeeeeeeeeeeeeeeeeeeeeeeeeeeeeeecccccccccc`e`e", "`eggefeeeeeee```````eee```````eeeeeeeeeeeeeeee`e", "`eggefeeeeee`flflfceee`flflfceeeeeeeeeeeeeeeeg`e", "`eggeeeeeee`flflfceee`flflfceeeceeceeeeeeceedg`e", "`edgeeeeee`flflfceee`flflfceee`ce`ce``ee`ceddg`e", "`eggeeeee`fififieee`fififieeeeeeeee``eeeeedddg`e", "`egggdddddlclcldddddlclclddddddddddddddddddddg`e", "`eggggddddclclcdddddclclcddddddddddddddddddddg`e", "`eggdggdddlclcldddddlclclddddddddddggggggdgggg`e", "`eeeeeeefflllllffffflllllffffffffffeeeeeeeeeeeee", "``````````lllll`````lllll```````````````````````" }; micropolis-activity/images/tiles-36.xpm0000664000076400007640000000411010724145723020370 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "34 50 7 1", " c black", ". c #7F7F7F7F0000", "X c #5D5D5D5D5D5D", "o c gray50", "O c yellow", "+ c gray75", "@ c gray100", /* pixels */ "++++++++++++++++++++++++++++++++++", "+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX", "+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX", "+OOXXXXXXXXXXXXXXXXXXXXXXXXXXXXOOX", "+OOX +OOX", "+OOX @ @ @ @ @ @ ..@ @.... @ +OOX", "+OOX @ @ @ @ @ .XX XX..XXXX@ +OOX", "+OOX @ @ @ @ ..XXXXX..XXX.X.. +OOX", "+OOX @ @ @ @..XXXXX..XXX.X.. +OOX", "+OOX @ @ @ @ .XX.XXXXXX.XXX@ +OOX", "+OOX @ @ @ .XXX@XX.XXXX..@ @ +OOX", "+OOX @ @ @ X.XX@ ...X... @ @ +OOX", "+OOX @ @ @X.XX ....XXX @ @ @ +OOX", "+OOX @ @ @.XX@ X.XX@ @ @ @ @ +OOX", "+OOX @ @ XX @XX @ @ @ @ @ @ +OOX", "+OOX @ @ @XX @ XX @ @ @ @ @ +OOX", "+OOX @ @ XX @XX @ @ @ @ @ @ +OOX", "+OOX @ XooXX ooXX ooooooo@ @ +OOX", "+OOX @XXooX oooX oooooooo@ @ +OOX", "+OOX @ XXXXXXXXXXXXXXXXXXXX@ +OOX", "+OOX @XXX X @ +OOX", "+OOX OXXX XOO +OOX", "+OOX OXXX XX XX XX XX XX X O +OOX", "+OOX OXXX XX XX XX XX XX X O +OOX", "+OOX O XX XX XX XX XX XX X O +OOX", "+OOX O@ X X O +OOX", "+OOX O @ @ @ @ @ @ @ @ @ @ O +OOX", "+OOX O@ @ @ @ OOOO@ @ @ @ O +OOX", "+OOX O @ @ @ OO @ @ @ @ O +OOX", "+OOX O@ @ @ @ OO @ @ @ @ O +OOX", "+OOX O @ @ @ @ OO@ @ @ @ @ O +OOX", "+OOX O@ @ @ @ OO @ @ @ @ O +OOX", "+OOX O @ @ @ @ OO@ @ @ @ @ O +OOX", "+OOX O@ @ @ @ OO @ @ @ @ O +OOX", "+OOX O @ @ @ @ OO@ @ @ @ @ O +OOX", "+OOX O@ @ @ @ OO @ @ @ @ O +OOX", "+OOX O @ @ @ @ OO@ @ @ @ @ O +OOX", "+OOX O@ @ @ @ OOOO@ @ @ @ O +OOX", "+OOX O @ @ @ @ @ @ @ O +OOX", "+OOX O@ @ @ @ @ @ @ @ @ @ O +OOX", "+OOX O @ @ @ @ @ @ @ @ @ @ O +OOX", "+OOX O@ @ @ @ @ @ @ @ @ @ O +OOX", "+OOX O @ @ @ @ @ @ @ @ @ @ O +OOX", "+OOX OOOOOOOOOOOOOOOOOOOOOOO +OOX", "+OOX +OOX", "+OOX +OOX", "+OOX+++++++++++++++++++++++++++OOX", "+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX", "+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX", "+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }; micropolis-activity/images/tiles-57.xpm0000664000076400007640000000513410724145723020402 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "48 48 3 1", " c black", ". c #CCCC7E7E6666", "X c yellow", /* pixels */ " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", " X X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X................... XXXX.................... X", " X................... XX .................... X", " X.................... XX..................... X", " X.................... XX..................... X", " X.................... XX..................... X", " X.................... XX..................... X", " X.................... XX..................... X", " X.................... XX..................... X", " X.................... XX..................... X", " X.................... XX..................... X", " X................... XXXX.................... X", " X................... .................... X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " X............................................ X", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", " " }; micropolis-activity/images/key.xpm0000664000076400007640000000271110724145723017617 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "53 23 2 1", /* colors */ "` c #B0B0B0 m #ffffff", "a c #FFFF00 m #000000", /* pixels */ "`````````aaaa````````````````````````````````````````", "`````aaaaaaa`a```````````````````````````````````````", "````aaa`a```aaa``````````````````````````````````````", "````a``a`````aaaa````````````````````````````````````", "````a``````````aaaaa`````````````````````````````````", "```a````````````aaa`aa```````````````````````````````", "`aa``a``a```````aa`aaa```````````````````````````````", "aa``aa``````````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```", "a`aaaa``````````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``", "aaa`aa``a```````aa````````````````````````````````aa`", "aaa`aa``````````aa`````````````````````````````````aa", "aaa`aa``a```````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaa`aa``a```````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`", "aaa`aa``````````aa````````````````````````````````a``", "aa`aaa``a```````aa``````````aaaa``````aaaa````aaaa```", "a`a`aa``a```````aa``aaaaaaaa````aaaaaa````aaaa```````", "`a`aaa``````````aa``a`````a``````````````````````````", "``aa`a``a```````aa`aa````````````````````````````````", "````a```a```````aaa``````````````````````````````````", "````a``````````aa````````````````````````````````````", "````a``a`````aa``````````````````````````````````````", "`````aa`a```a````````````````````````````````````````", "`````````aaa`````````````````````````````````````````" }; micropolis-activity/images/tiles-65.xpm0000664000076400007640000000252010724145723020375 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "32 32 7 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c red", "O c gray75", "+ c gray100", "@ c None", /* pixels */ "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@OOOO@@@@@@@@@@@@@", "@@@@@@@@@@@@@@O+ . @@@@@@@@@@@", "@@@@@@@@@@@@@O++ ++++O@@@@@@@@@@", "@@@@@@@@@@@@@OOOO++o+O@@@@@@@@@@", "@@@@@@@@@@@@@OOO.++++O@@@@@@@@@@", "@@@@@@@@@@@@@XO..++++O@@@@@@@@@@", "@@@@@@@@@@@@@XO.O++++O@@@@@@@@@@", "@@@@@@@@@@@@@XOOO++++O@@@@@@@@@@", "@@@@@@@@@@@@@XOO.++++O@@@@@@@@@@", "@@@@@@@@@@@@@OO..++++O@@@@@@@@@@", "@@@@@@@@@@@@@OO.O++++O@@@@@@@@@@", "@@@@@@@@@@@@@OOOO++++O@@@@@@@@@@", "@@@@@@@@@@@@@OOO.++++O@@@@@@@@@@", "@@@@@@@@@@@@@OO..++++O@@@@@@@@@@", "@@@@@@@@@@@@@OO.O++++O@@@@@@@@@@", "@@@@@@@@@@@@@OOOO++++O@@@@@@@@@@", "@@@@@@@@@@@@@XOO.++++O@@@@@@@@@@", "@@@@@@@@@@@@@XO..++++O@@@@@@@@@@", "@@@@@@@@@@@@@XO.O++++O@@@@@@@@@@", "@@@@@@@@@@@@@XOOO++o+O@@@@@@@@@@", "@@@@@@@@@@@@@OOO ++++O@@@@@@@@@@", "@@@@@@@@@@@@@OO X @@@@@@@@@@@", "@@@@@@@@@@@@@OXX X @@@@@@@@@@@", "@@@@@@@@@@@@@@XXXXXX@@@@@@@@@@@@", "@@@@@@@@@@@@@@XXXXX@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" }; micropolis-activity/images/obj3-4.xpm0000664000076400007640000000525310724145723020031 0ustar simcitysimcity/* XPM */ static char * obj3_4_xpm[] = { "48 48 9 1", " c None", ". c #BFBFBFBFBFBF", "X c #3F3F3F3F3F3F", "o c #7F7F7F7F7F7F", "O c #FFFFFFFF0000", "+ c #FFFFFFFFFFFF", "@ c #66666666E6E6", "# c #000000000000", "$ c #FFFF00000000", " ", " .XoooXOXoooX. ", " ++++++o.++++. ", " .+++++..++++. ", " .++++o.++.. ", " .++.... ", " ..o. ", " X+. ", " @+. ", " +.o@+.o. ", " +.o#+.o. ", " +.o@+.o. ", " $$o@+.o$ ", " +.o#+.o. ", " o@+.o ", " o#+.o ", " o@+.o ", " o#+.o ", " o@+.o ", " o#+.o ", " +o....o+o...o+@+.oo...o+o....o+ ", " ++++++++++++++#+.o.++++++++++++ ", " ++++.+++++.+++@+.o.+.++++.+++++ ", " $+++++++++++++#+.o.+++++++++++$ ", " ++++++++++++@+.o.++++++++++ ", " ++++++++++#+.o.++++++++ ", " Xo.+++++@+.o.+++.oX ", " Xo.+++#+.o.+.oX ", " Xo.+@+.o.oX ", " XX#+.oX ", " .@+.o ", " .@+.o ", " .#+.o ", " .@+.o ", " .#+.o ", " .@+.o ", " .#+.o ", " .@+.o ", " .#+.o ", " .@+.o ", " .++.o ", " .X#.o ", " .+XXX ", " ++. ", " XXX ", " X ", " ", " "}; micropolis-activity/images/grpollhi.xpm0000664000076400007640000000261710724145723020654 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "32 32 10 1", /* colors */ "` c #000000", "a c #00BF00", "b c #3F3F3F", "c c #3F3F00", "d c #003F00", "e c #3C00BF", "f c #7F7F3F", "g c #7F3D00", "h c #3F0000", "i c #3C00FF", /* pixels */ "````````````````````````````````", "``hhhhhhhhhhhhhhhhhhhhhhhhhhhh``", "`h`hhhhhhhhhhhhhhhhhhhhhhhhhh`f`", "`hh`hhhhhhhhhhhhhhhhhhhhhhhh`ff`", "`hhh````````````````````````fff`", "`hhh`eeeeeeeegccceeegceecee`fff`", "`hhh`eeeeeeecccceeegccceeee`fff`", "`hhh`eieiegcceieigccicieiei`fff`", "`hhh`ieiegcceiegcccieieieie`fff`", "`hhh`eiigciiigcciiieiiieiii`fff`", "`hhh`iiiciiigcciiiiiiiiiiii`fff`", "`hhh`iib`iib`iiiiiiiiiiiiii`fff`", "`hhh`iib`iib`iiiiiiiiiiiiii`fff`", "`hhh`iib`iib`iiiiiiiiiiiiii`fff`", "`hhh`iib`iib`iiiiiiiiiiiiii`fff`", "`hhh`iib`iib`iiiiiiiiiiiiii`fff`", "`hhh`iib`iib`iiiiiiiiiiiiii`fff`", "`hhh`i``````````````````iii`fff`", "`hhh`dbbbbbbbbbbbbbbbbbbddd`fff`", "`hhh`d``````````````````ddd`fff`", "`hhh`d`b``b``b``b``b````ddd`fff`", "`hhh`a`b``b``b``b``b````ddd`fff`", "`hhh`d``````````````````dad`fff`", "`hhh`dadadadadadadadadadada`fff`", "`hhh`adadadadadadadadadadad`fff`", "`hhh`aaaaaaaaaaaaaaaaaaaaaa`fff`", "`hhh`aaaaaaaaaaaaaaaaaaaaaa`fff`", "`hhh````````````````````````fff`", "`hh`ffffffffffffffffffffffff`ff`", "`h`ffffffffffffffffffffffffff`f`", "``ffffffffffffffffffffffffffff``", "````````````````````````````````" }; micropolis-activity/images/scenario6hilite.xpm0000664000076400007640000024313710724145723022130 0ustar simcitysimcity/* XPM */ static char *scenario_hilite[] = { /* columns rows colors chars-per-pixel */ "209 188 256 2", " c #162C14", ". c #2E2C17", "X c #282A28", "o c #283729", "O c #38342A", "+ c #3B3C3B", "@ c #363835", "# c #312E2F", "$ c #1B1C20", "% c #1C3D69", "& c #183D73", "* c #31324A", "= c #233D6A", "- c #253D67", "; c #2D3570", ": c #181D52", "> c #104E10", ", c #037A05", "< c #0C6F0F", "1 c #394439", "2 c #31502F", "3 c #316A30", "4 c #26601C", "5 c #1C426B", "6 c #1B4267", "7 c #1C4572", "8 c #3B4442", "9 c #35514A", "0 c #22426B", "q c #254169", "w c #234371", "e c #254874", "r c #3E5A7D", "t c #37547A", "y c #2D4F78", "u c #3A667C", "i c #2C5B4E", "p c #4B2C19", "a c #46362A", "s c #463B38", "d c #553936", "f c #513029", "g c #69382F", "h c #622418", "j c #463C43", "k c #523B4E", "l c #4E3668", "z c #474339", "x c #56463A", "c c #504F2F", "v c #516C2F", "b c #674737", "n c #754838", "m c #775637", "M c #6A502F", "N c #6E6D32", "B c #4F5918", "V c #434343", "C c #484947", "Z c #495548", "A c #554945", "S c #57534A", "D c #575756", "F c #4D4F53", "G c #50506F", "H c #526E4F", "J c #4F6973", "K c #664A44", "L c #675548", "P c #685A55", "I c #754B44", "U c #775548", "Y c #735A54", "T c #724D56", "R c #776257", "E c #6D6C4F", "W c #666867", "Q c #727370", "! c #6B526B", "~ c #293399", "^ c #395A86", "/ c #2D5985", "( c #37638A", ") c #376894", "_ c #3D6EA4", "` c #425585", "' c #44558B", "] c #415885", "[ c #43588B", "{ c #48578C", "} c #455690", "| c #514F90", " . c #5151B0", ".. c #476A81", "X. c #536A97", "o. c #49739A", "O. c #477BA6", "+. c #557BB3", "@. c #6F619C", "#. c #5757CE", "$. c #5E6CD8", "%. c #5D65D8", "&. c #586DC6", "*. c #5D63EA", "=. c #5C63F2", "-. c #7168D4", ";. c #6365E6", ":. c #6265EA", ">. c #6A67E6", ",. c #6366F2", "<. c #736DE7", "1. c #5C5DE3", "2. c #4637A3", "3. c #0B850B", "4. c #309A26", "5. c #00DB00", "6. c #0BDC05", "7. c #16D60A", "8. c #00E300", "9. c #03E901", "0. c #0AEF03", "q. c #27CE0A", "w. c #29CE0E", "e. c #25CD07", "r. c #24D604", "t. c #25DA04", "y. c #27D20C", "u. c #2FCB16", "i. c #2ED11A", "p. c #53912B", "a. c #52B727", "s. c #6C8E34", "d. c #6CAC33", "f. c #499C1B", "g. c #529251", "h. c #738873", "j. c #659A5C", "k. c #42C71D", "l. c #4EC624", "z. c #69D22F", "x. c #37A245", "c. c #3C99CF", "v. c #4D809E", "b. c #53829D", "n. c #4A83AA", "m. c #5584A6", "M. c #578AB4", "N. c #5A94B8", "B. c #4B8BB6", "V. c #628BA2", "C. c #679ABB", "Z. c #6C93B1", "A. c #73A1BD", "S. c #70A0BB", "D. c #758D8A", "F. c #439DD2", "G. c #489ED4", "H. c #5699C5", "J. c #4E97C7", "K. c #4BA1D4", "L. c #4BA3D7", "P. c #52A4D5", "I. c #54A5D8", "U. c #5BAAD9", "Y. c #58A8D6", "T. c #5BACD4", "R. c #669BC2", "E. c #6F9DC9", "W. c #63A4CC", "Q. c #69A6CB", "!. c #63ADDB", "~. c #69ADDA", "^. c #66AAD4", "/. c #65B0DB", "(. c #6BB2DD", "). c #68B4D9", "_. c #75A8C9", "`. c #74ACD3", "'. c #71B5DE", "]. c #74B8DE", "[. c #7AB9DD", "{. c #79B3D6", "}. c #78B0CE", "|. c #6CB3E0", " X c #67B5E1", ".X c #73B6E0", "XX c #75B9E1", "oX c #7BBBE2", "OX c #7AB7E1", "+X c #67ADE0", "@X c #5EAAE1", "#X c #7BC0E4", "$X c #912D28", "%X c #895535", "&X c #8C6B39", "*X c #AB6934", "=X c #A25520", "-X c #875848", ";X c #91554B", ":X c #876658", ">X c #976757", ",X c #916B49", " B B N d.d.a.a.gXgXgXgXgXgXgXhXgXD.+.&.+.+.+.+.&.+.M.+.+.+.M.&.+.M.+.+.+.+.+.+.+.+.&.+.M.+.+.&.M.+.+.+.+.+.+.+.+.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.` ' ' Q.mX6 q q q mX).ZXZXDXDXZXZXZXDXDX", "G.G.G.G.G.G.F.F.FXKX0 q 6 = GXnX} [ X.u.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.x P x 2XcXQ V V A * *XK 8 F + V C 1 *XM b a ,XP 8 F + 8 2XP D Q C V Q C M .;.;.;.;.;.:.:.;.;.:.:.;.;.:.:.;.;.:.:.:.;.;.;.:.:.;.;.;.;.:.:.:.;.;.;.,.:.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.` ' { N.}.6 7 6 5 }.L.ZXZXZXSXFXAXDXFXDX", "G.G.G.L.G.G.G.G.ZXGXGXHXKXGXGX`.' ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.y.H W z 4XR z a @ dXQ z z W W z @ X8X7X7X7X7X8X7X7X7XzX-XD A . xX2XN 8.5.8.s.k #.! -X,X4 b M tX;.;.;.;.;.;.;.;.:.:.;.;.;.:.;.;.;.;.;.;.:.:.;.;.;.;.:.:.;.;.;.;.:.:.;.;.;.;.;.:.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.] ' ^ n.H.).'.OX`.T.L.ZXZXFXFXZXFXAXFXFX", "K.K.K.G.G.G.G.G.K.VXSXVXmXFX[.J.^ { X.y.t.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.Z D x L z + V C D C a * F D x s D C a O 3XO %XY C D z 1 c Z 1 @ V j + z S C s V S D a s.&X@ W Q @ P b -X* -XlXkX6X6X7X7X2X1XI X * @ c y.5.9.s.* ~ 2.f c h.;XK >.*.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.( ' ' Z.B.H.T.Y.K.J.SXDXSXFXSXFXAXAXFXFX", "K.K.K.K.G.G.G.L.G.G.G.L.K.L.L.J.' } X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.-Xz 1 C 2 D 1 8 # 1 X C 1 @ 1 c 1 + z + + z P S # # =Xm C 2 D 9 E s.,XM L F V >X3X3X2X%Xx o 3 2 @ F x 3Xl -XsX,XaXdXsX8X7XzX>XC Q D U kX7.9.s.* # j # 1 j.H i ,.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.] ' ' Z._.nXVXAXAXSXFXSXSXSXFXAXAXFXAXFX", "K.K.K.G.K.G.G.K.K.K.L.K.L.P.P.J.^ { X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.L C *Xx H D.H # W W z 1 x V *XM V V *Xx Z + ;XS Q D.V 4XP Z h.H f.0.n k * + A D cXjX9X>XD V 1 @ C Z F Q Y ;Xs.eXUXj.,X8X7XlX:X8 D S -X0XhXi.E * eXcX9 1 2 H G =.:.;.*.:.:.*.:.;.;.;.:.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.^ [ { V._.nXVXZXDXZXAXSXFXAXAXFXAXFXFXFX", "K.K.K.G.K.K.G.K.K.K.L.K.K.P.G.J.' ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.h.W x V 2 g.3 s D D x + D.Q z z eXQ s D Q V 1XY F Z f 1XY 1 g.H 4.6.! -.| @ A | jXgX- 3 O @ s K : @ Z 1 s L N cXUXa.,XlXlX3XD C + b 2X8X8XlX1X* ~ ~ * Z vXvXK -.-.<.-.-.-.-.-.-.-.;.:.:.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.G { ^ V.A.nXVXZXSXAXDXSXAXAXAXAXFXAXFXFX", "K.K.K.K.K.K.K.K.K.P.G.I.P.P.G.J.' ' X.w.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.H C a C @ o 1 c 1 @ + V D C a * D A a @ D d 1XR X + O A D -X*X4XfXk.G ~ ~ + A y ~ ~ u j.$X8 K 3XG I I A X * v h.dXH v I U A V ,XU P P >XlXlX>X@ O f O 8 eXW . %X-Xa a s f -X:XA @.jX-.>.*.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.:.:.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.` ` ` V.A.nXVXAXFXAXAXZXAXFXZXFXAXFXFXFX", "K.F.K.K.K.K.P.K.P.J.L.L.L.P.P.J.[ ' X.y.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.o z X V C S 1 z z j *XL # o =Xm # # =Xa @ . 1XL D Q C + F P Y Y P Y > . + V 9 i i 4 bXH 1 D W Y %X;X3XG * Z 2 2 v C C C C K m m Y F S 1XlXXW @ D Q # %X.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.^ [ ' V._.mXZXAXAXAXAXDXZXFXAXAXFXDXZXFX", "K.K.K.K.P.K.K.K.K.J.P.L.G.P.P.J.' ' X.w.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.W W s + W W + @ cXQ z s cXQ C z D.Q z P Q V 4XY F D x z >Xx v d @ j g.dX$X+ A b k d < 2 a b s n :XQ Y s j C C * V C V X S A O C :XR F 1X1X@ N iXs R k.s.j R b $ 9 3 g %XF ~ ~ ~ m -XI >.*.;.;.;.:.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.,.,.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.] ' ' V.A.nXZXDXDXAXDXAXZXDXAXAXDXDXAXFX", "K.K.K.K.K.K.P.K.K.P.P.G.P.G.P.J.[ ' X.w.t.t.t.t.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.Z D x 8 F D x z D A s + D S O + D A a 1 D A 2XP 8 + @ Z 3XN l.,Xj F 4 bX3 @ M m d.,X3 jX$X* d 1XQ ;XR J XlXR D P C j j + S Y L C * @ @ 1 + + j j 8 i i @ f.d.4X@.-.>.:.*.:.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.<.E.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.' ' ' V.A.nXVXAXDXDXDXZXDXAXAXAXFXDXFXFX", "K.K.K.P.P.L.G.P.P.K.P.K.P.P.P.J.^ { X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.o # $ z V @ * c 1 1 1 c @ + V c 1 + s * + + P S F D >XP 2Xm s.&Xz F U ,X,XL S b v ,X> bX3 2 d n %X;XeXcXxX; Z D A s C D A O W S a z x U L z s A b b d z s + C x x b * O D V o # x ,Xj N aXg I I qX-.>.,.=.=.>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.] { ' V.mXnXCXAXFXAXDXDXDXDXDXFXDXFXFXFX", "K.K.J.P.P.P.P.P.P.P.L.P.P.K.P.J.' ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.E cX@ 1 z Z o x 1X3X2Xx z 8 *Xm >Xx x d C >XC C + C 3XR P x s * c Z R R :XD + S A s + 1 9 9 C V z S | ~ ~ ~ R %X%XR @ @ # f a # d K Y 1X2XR + g # . c M O + c M f 3X| * F C D Q 2 4 9 > > > bXC P @.i ~ 2.2.2.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.' { ' V.A.mXZXFXAXDXDXAXDXDXDXDXFXFXFXFX", "K.K.P.K.P.P.P.P.P.P.P.P.K.P.P.J.' ' X.w.t.t.t.t.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.c 3Xs * 3 a.4 A kXlXlXA Q Q z S 2X:XjXa z 2XR Q C 1 2XP + F V ;XL O x d 8 >X-XM x A Y 2Xb K X * >XE R :X9 9 K %X%XA C Q D # ;X2X2X>X:XzXzX>XV 3X| $ a.fXK s a.fXg Q ,Xs F z 3 9 v Z 3 3 2 W s * E S * @.v ~ ;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.^ ' ' V.S.mXZXFXFXAXDXDXDXDXDXDXDXDXFXDX", "K.K.K.K.L.P.P.P.P.P.P.P.K.P.P.J.[ ' X.y.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.o O =Xx < E 4 C 3X:XR A W F a * P x dXs 8 3XP D x z 3XP D W z 1XR c z.sXj P R S S C x 2X;XtX; @ 3X:XD K z F C Z F C C D L O D R R L S R Y P Z Q :XO N sXd s N sXf C V j S O X 8 X s D o Z + + V v i G Q D ~ =.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.] ' ' V.mXmXVXFXFXFXFXDXDXDXDXDXDXDXDXFX", "P.P.P.K.P.P.P.P.P.P.I.L.I.P.I.H.' { X.w.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.dXW S A X X =XL 2XD j * =X. V 1 8 1 s 1 F P V @ 1 C 3XY Z D S 1XY c iX&Xs :Xz X X V C 1X:XQ -Xs 1X7X1XK Y 6X j.h.2 + 1 D @ 3 > | W F ~ yX=.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.] ^ ' V.A.nXZXGXFXAXGXFXAXFXDXDXDXGXSXDX", "L.J.K.P.P.P.K.P.P.H.I.L.P.P.P.J.' ' X.w.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.H F @ @ cXW x A 2XS Q Q a H h.H + C C + @ C + C $X*X=XS 1 @ + L D s j 1 C R S ! Q @ A 1X2X&X%XY D R :XK S *XcXcX2X*XF bXZ M g >XX2 < 3 3 , > s.iXd 1 H g.o H g.2 * j.h.2 * i ; : ; l qX-.1.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.] ' ' V.A.mXVXAXFXFXFXFXFXFXFXDXDXAXAXFX", "L.K.K.P.K.P.P.L.P.P.K.P.P.Y.P.J.^ { X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.=XQ ,X=XR F O C 7XS W A O 2 g.3 + W W z C W z s wXxX4Xd >X3Xz F 1 C o D 1 * 1 3 2 + V L :XY R P S d d @ :X*XcXdX2X,XC W z a f n %Xs L M M d >X2XR R :X:XY 9 3 9 3 3 2 1 J dXy > 2 > < > -X8 H g.2 C Q W . cXC n rX=.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.[ ^ ' V.A.VXVXAXGXAXFXFXGXAXAXDXDXFXAXSX", "K.K.K.P.K.P.P.P.P.P.P.P.K.L.K.H.' ' X.w.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.aXcXdXkX%XO @ + Y F X X =X. 1 @ F D z V W A V wX=XwXK 3Xn 2 h.H o Z h.H 2 z 2 @ C V 9 X.h.G Z I N s.f 1XkXL c ,X%X@ O a d x z s 8 P P P x S P S d d 4 4 k # @ k k # - D.xXy < z 2 > o R 8 o 1 j C D H a W A d 9XyX,.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.^ { ' V.A.nXAXFXAXAXGXFXFXAXFXDXDXDXDXDX", "P.K.K.K.P.P.P.P.P.P.P.P.K.P.K.H.' { X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.,XcXXzX1XM m L 8 A A S P 8 2 + @ R 1XM R :XI N iX. > 3X| * s 3X| * ~ #.~ < k 2X| * 8 x P 1 4 C + * + # O s n N ; 1.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.' ' ' V.A.VXVXAXGXSXDXDXDXFXFXDXFXDXDXDX", "K.K.K.P.K.P.P.K.P.P.L.I.P.P.K.J.^ ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.sXA K 6X6XD ! d 2X6XW S X 2 j.3 @ Q Q x P W V 8 x d C C I a . . c L X h m 9 h.g.o b ~ ~ ~ ; D S L Y 1 S -XD :X3X1XU o 3 V s B x.W 1 :X&Xb c z L M M 4 < X@ < < < < C Q >Xx V ;XdX. 4 D 2 4 < 4 C 8 x.4.2 rX=.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.^ ' ' V.A.nXVXAXGXFXFXGXFXFXAXDXDXDXDXDX", "H.P.K.P.K.P.K.P.L.P.K.P.K.Y.L.H.' ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.kX*XpXpXfXp.v v sXhX4X;X4X;X-X%XA W D s 8 D A + >X1X1X>X>X1X1X1Xn C W cXc S 1 j.H + z E E :XP :X3X>X3XL U >X1Xs.fXzX4X+ UXUXB N 3.v s :XN j.3.o D Y P S 2 C z V C 8 z z 3 3 3 c C C z V V g -Xp J h.> > 3 > x o 4 E v 7X-.;.>.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.` ^ ' V.A.mXFXFXDXDXDXSXFXFXFXDXDXAXAXAX", "P.P.K.K.P.P.P.P.P.K.K.P.K.L.K.J.' { X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.hXy.8.8.9.9.0.9.9.7.fXaXaXaXfXaXs.v v v N ;X%X>X7XlXlX8XlXlXlXlXI 8 D W a 1 1 o 2 C S I &X%XS L -X-X-Xn 2X0Xd.0.6.hXI s eXH 3 K # 1 * 1XN 3 v 2 R I z 2 X x K L U x * X x 1 X j x * Z 3 C s A # H g.2 W eX2 x + . $ $ 6X8X-.*.;.;.;.;.;.;.;.:.>.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.y.^ ' ' V.S.nXVXFXDXDXDXAXFXAXFXDXAXFXAXZX", "P.K.P.K.P.P.K.P.G.P.L.P.G.P.K.J.{ ' X.y.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.l.9.5.5.6.6.6.6.5.5.8.8.5.8.9.9.9.9.9.9.7.gXlXlX7X7X7X7X7X7X7X8XU C 1 @ z C F V 8 %X,Xs x @ @ V U 1X4X3XaXd.fXkXkX1Xd s @ o 8 P s.>XR D S c %Xb 3 A s 1 X g.g.2 x C 1X@.j 8X8X8XuX=.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.` { ' V.A.nXVXZXFXAXFXFXFXFXDXAXFXFXAXAX", "P.P.P.P.P.P.P.P.P.P.L.I.G.P.K.J.' ' X.w.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.k.8.5.k.kXhXhXlXk.5.5.5.5.y.hXkX7Xl.5.5.8.y.8X8X7X7X7X7X7X7X7X8X-XL P V C %Xm W D.x x F Q F @ A 1XlXgXa.0.sX8XgX8X8X;XK Xb Y 2.! | 2.*.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.^ ' ' V.A.}.VXZXFXAXDXSXFXAXFXAXAXAXAXAX", "P.P.P.P.P.Y.K.P.G.P.G.P.K.K.K.J.' ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.k.8.u.7X8X8X7XaXu.5.5.5.5.i.0X7XaXu.5.5.5.6.gX0X8X8X8X7X8X8X8X7XkXI C W Q x x D P s @ F W S z C 4Xd.8.5.8.lXgX9.d.aXgX4X-X2X-X%X1X:X .:Xs 8 X X + V @ s 1 A Y Y P V s s o z @ * * + @ j.h.4 %X=Xp 2 j O D A E c j s z - * Q Z ; =.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.' ' ' V.A.nXZXAXDXFXAXSXFXSXFXFXDXAXAXAX", "P.P.P.K.P.K.K.K.P.P.G.P.P.P.K.H.' ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.k.8.k.0X8X7Xi.8.5.5.5.5.5.7.aXu.9.5.5.5.5.5.6.fXaXaXhX0X7XaXgX8XlXI V D W s 1 8 @ z C V @ @ V A s.9.5.5.5.d.d.5.5.9.9.d.-XI N N %XT 2.| 1 8 F Q V z s - z 1 s x # x 2 X d * X @ * s V 1 2 $X5XfXh 1X| * U c 4 z 1 F 1 ; l Q L ~ =.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.^ ' ' V.A.mXZXAXDXFXFXFXDXFXDXAXAXAXDXAX", "P.P.I.J.P.K.K.P.L.P.L.P.P.P.K.J.' ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.k.8.7.aXaXu.5.5.5.5.5.5.5.5.8.5.5.5.5.7.hXa.8.8.8.8.7.fXa.9.6.aX8XU C 8 @ z 8 R A C A A C A V d sX8.5.5.5.8.8.5.5.5.5.9.E I c N b A * * C z Z Z 2 f ;X@.* s a.fXp g.4. 3X| $ W Xs.4X>X>X2Xa.8.8.8.8.5.5.5.8.5.5.8.&XK n n I S z z V # o X d wXtX8 a s.sX. 3 s.> Q >Xf C M s Z 4 m 4 4 > p O . b b 3 9 8 g.g.Z * : ~ : @.u u $.:.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t...^ ' V._.mXVXFXAXFXAXFXDXDXDXDXDXDXAXSX", "P.P.P.P.P.P.P.P.P.P.K.Y.P.P.I.K.{ ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.l.5.5.5.5.5.5.5.5.8.i.hXhXa.5.5.5.5.7.7X8Xk.5.5.5.5.5.5.8.8.5.5.7.8X>X>X>X4X>X1XlXzXgX7.kX8XzXd.8.sXhXkXlXd.9.aXfX9.9.aX2X1 # 4 a k eXeX1 C eXeX8 @ p p a C s A @ @ z @ C A @ # o @ T M d.d S B 2X| * c 3 V D X o 1 H h.v B 3., ;.:.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.{ } ' V.A.{.ZXAXFXFXAXSXDXDXDXDXDXAXAXAX", "P.Y.Y.P.K.P.K.P.P.Y.L.L.P.Y.I.H.' ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.k.5.5.5.5.5.5.5.y.hX7X0X0X8Xk.8.5.5.u.0Xd.9.5.5.5.5.5.7.gXkXa.8.6.aX0X8XlXlXlX8X7X7XlX2X7X8XgX8.6.kX8XgXgXd.8.kXhX9.iX0X>X: 2.X.a * | 2.* * | .* 8 #.;Xp 1 + o x 1 X 1 + 1 J h.@.R L M aXn Z v Q >Xb M B H Q > H cX2 1 H j.3 , , , ;.*.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.( [ ' V.A.mXZXFXAXFXFXFXDXSXDXFXSXAXAXSX", "P.P.P.P.P.P.P.P.P.P.P.I.P.I.I.J.[ ' X.w.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.k.5.5.5.5.5.5.5.k.0X7XgXaXgXi.5.5.5.7.aXu.5.5.8.8.5.7.hX8X8XfX8.5.6.fXhX8X8X8X8X8X8X8X8X8X8Xa.5.5.kXgX8.8.8.5.d.d.6.hX0X:X: d x.o X : $ O 1 $ o * 2.{ o 4.E g.4. 4.H 9 @.xX@.hXC b h O 9 2 C A g ;X*Xg.j.2 H g.2 j X . 3.J ;.;.;.;.$.>.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.' ' ' V.A.mXZXAXDXDXDXAXDXAXDXZXDXDXAXFX", "P.I.Y.I.P.I.P.P.P.I.I.I.P.I.I.H.' ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.k.8.5.5.5.5.5.5.7.gXu.8.8.8.5.5.5.5.5.8.5.5.7.hXkXa.6.gX0X0Xd.8.5.5.8.6.fXgXaXgXgXsXgXaXgXd.5.5.8.fXd.8.5.5.5.8.9.fX8X8X:XX p . O C @.;Xd i x.$Xz 8 * G 3.H . p.s.> 3.H k 2. .2.hXA M s.x Z 3 3 Y b %Xd . $ o + z 2X@.: J -.*.*.;.:.:.:.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.^ ' ' V.A.{.VXAXDXAXDXAXAXAXAXAXAXAXSXSX", "P.I.I.P.P.P.P.I.I.I.I.I.P.I.I.K.[ ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.k.8.5.5.8.5.5.5.5.8.5.5.5.5.5.5.5.5.5.5.5.5.7.aXhXa.8.7.sXgXa.8.5.5.5.5.8.8.8.5.8.8.8.8.8.8.5.5.5.8.8.5.5.5.5.5.6.hX8X8X:Xa l.iXg @ 2.| j 2 bXj.2 8 H H o # @ @ o s o o @ 8 i 6 D R P M N d i 3.v m 4 4X| $ 4X| : H D.2 V Q XL + K Y Y L A A C C A *XkX@.*X,X2 bXUX .4Xp .;Xp @.tX1 x i 4 4 3 S T k Z 3 V j # 8 V @ o o A z S a D.cXO I { ; @.*.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.` ' ' V.A.mXVXSXSXZXAXAXAXZXZXAXSXZXCXCX", "P.Y.P.I.I.Y.I.I.I.I.I.I.Y.I.U.H.' ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.lXl.k.8X0Xl.5.5.5.5.7.kX0Xk.8.5.5.5.5.5.5.5.5.5.5.5.5.5.5.8.5.5.5.5.6.hX0XfX9.5.8.5.5.5.5.5.5.5.5.5.fXd.9.sX8X8X8X:X2 1 F O * p s V s j K R V %XjXcXgX*X9 eXh.> 2. .: 2. .# | 2.* x 1 4 4 H D b I d j D X>X>Xk p.d.n C + j j o %X@.$ F 1.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.' ' ' V.A.}.CXSXSXAXAXZXAXSXSXZXCXCXCXSX", "Y.I.Y.Y.Y.I.Y.I.Y.Y.I.I.I.I.I.J.' ' X.y.r.t.t.t.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.kXlXlX7XgXu.5.5.5.5.8.w.gXi.8.5.5.5.5.5.5.5.5.5.5.5.5.8.6.hXa.8.5.5.6.sXhXa.8.5.5.5.5.5.5.5.5.5.5.6.lXhX9.kX8X8X8X:X8 bXvX: .%Xs f ;X .U 3XV %XcXcX3X*XS x o . # * X * * X * : a K V L -XK V -XM iXd D -.,.,.rXzX7XV N fXM F z 4 3 C Q XY U S A m x N d A 1 K m x 1 Z H X :XY X Z H o L <.,.,.,.,.-.hXX,X0.0.0.E + m cXcX3X*X1 I M N d P M N %XlX4XA V D Q . v 4. h.vXz Q vXR yX,.,.*.<.>.<.,.<.tXzX2X; *.:.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.] ' { m.S.}.oXSXCXCXCXCXCXoXCXCXoXoXCXoX", "U.U.U.U.U.U.U.U.!.U.Y.!.U.U.U.P.^ { X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.kX8X8X0XkXaXaXaXaXaXu.8.0.9.8.8.8.9.7.hX8Xk.t.2XcXeXhX5XZ.eX6X5XcXdX6XpX9.5.5.5.6.aX7Xd.9.5.5.5.5.aXhXkX1Xm m d Y N B A j.B d E dX9X3XN v s.>X@ m .tXtX,.:.;.;.:.:.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.` { ' V.S.}.CXCXCXCXCXCXCXCXCXoXCX#XoXoX", "U.!.U.U.U.U.U.!.U.U.U.U./.+X!.W.' } X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.kX7X8X7X7X8X0X8XlX0XlXaXaXaXgXaXaXgXk.0.9.8.t.2XJ D *X5XD D 2X5XJ Z 1XpX9.8.9.9.8.9.9.fXd.8.9.8.9.9.0.t.&X3 N x A d I f v N d ` dXxX| n &X%X1X1 N =X,XhX>XC K M &Xd P M ,Xg ;XT >XC o @ X 2 z o j 1 o * 1 z -.*.;.;.;.;.;.;.;.;.*.,.;.;.;.;.<.<.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.] ` { V.C.}.nXoXCXMXCXoXMXoX#X[.oX[.oXoX", "/.U.U.U.^.U.!.U.U./.U./.+X!.!.W.^ ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.kXlXlX8X7X7X1X>X>X>X1X1X4X4X1X1X1X4X:Xs.aXaXd.zX*X*X5XkX*X=X5XkX2X=X5X*XiXiXiXiXiXiXpX6X2XiXiXiXs.N v N S bXbXj 8 bXbXA n m x ` .X.2.B N ;X1XV E P @.xX} Z n c s.d P M v a f K 8 1 1 @ 8 * # 1 C S Y F J @.;.;.;.;.;.;.;.;.;.;.;.;.;.;.:.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.` ` { m.S.}.[.#XMXMXCXoXCXoXnX[.oXoXoX[.", "U.U./.U.U.!.U.U.U.+X/./.+X+X!.H.{ ' X.w.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.kX2X>X1X>Xb O O %Xx # O %Xb s O # %Xx I 1X4X6X4X>X;X5XbXjXxX5XcXdX6X5XpX2X6X2X*X,X2X2X2X2XgX2X6X4Xm &Xs F vXW # D vXQ o F Z z 9 6 & F -XU -X-XC U ! .X.~ x A I I A S U f .I h 2 4.W X Q H $ h.vXY 6XXI n S U B N F U v N g m N d Y m N g m N b L z c S Z S A C U 2X2X4Xx S K : - j V o O X 1 D 2 U L L -.*.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.] ' ' V.Z.}.{.oXCX[.oXoX[.[.oXoXoXoXoXoX", "!./.U./.U.U./.!.!.!.U.).+X+X/.^.' ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.E 2XcXP + d s @ s s + + s m m + @ n z Q W s f c O a %XM M =X=XM M =X%X%X%Xm m %X;X%X-Xm ,XsX0XlX:X9 J X.! m v V P I I I v N s U v N g c N %X2X@ O M n a O X f O # I >XZ j f a 3 3 2 3 2 W vXY 7X-.<.:.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.( ] ' b.C._.].#XMXoXMXoXoX[.oXoXoXoXoXoX", "U.~.+X/./././.!.!.!././. X/./.W.' { X.w.t.t.t.t.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.N 2Xs @ s C 1 C + X C 8 F O g &XL :XP 1 @ s s A A A x m -XY -X-X-X-X-XU -XY U E L U U %Xm >X1X1XR ' jXxXl B N f s s j P I I S Y n -X1X1X4X2X1Xs cXx %XP D g.3.$ ;X2X* .T . 3., 3.3.> bXcXc -.=.;.;.;.;.;.;.;.;.;.;.;.;.:.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.] ' ' V.C.}.{.oXoX[.oXOX[.oXoX[.oX[.oX[.", "U.!././.+X/././.~./.U.).~.+X/.^.^ { X.w.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.c %XA 8 F L Z Q 2 2 Q 3 # Q W n L P V z * U z s z 1 C 2XzX8XlXkXkX8XlXlXlXlXgX9.9.9.y.hX7X:XC z z ^ | .@.k | $XM &Xf + f s 9 4 O a 1XzXlXzX;XA D.j X Q P . g.s.2 -X3X8 .@.4 3.3., 3.< 2 I S >.:.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.] ` ' b.Z.`.[.oXoX[.oXoXoXXXXXoXXXXXoXOX", "+X/./. X~.!./.U./.~.).~./.|. XH.' ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.z i Q 2 A 2Xj.j.3 H j.H @ Q W + V 2XP W z 4Xm 2 p.> s 3X8X8Xd.0.i.hX7X8X7X7XkXfXfXk.9.*X6XR K m m * & & T T .@.3 N # .$Xa Z j.cX$ -X1X1X-XI K @ s # 1 + X > c X U < < < 3 yX;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.] ' ' V.C.`.].oXoXoXoXXXoXOX[.oX[.oXoXoX", "/.+X/./.+X/.+X X/./././.+X+X~.W.{ ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.z H j.H C :Xo 2 o o 2 2 8 @ @ O C ,XW W K %X%X4 j.3 1 2XlXfX0.9.9.0.i.lX8X7X7X8X8X7XgX2X6XR I v N s H S D * ; * b ;Xk #.@.1 C vXh.4 x z C K Y F Z F P L 1 j C C @ @ @ + s o h.vX* Q vX3 3.yX*.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.t.t.] ' ' b.S.}.].[.[.[.oX].oXXXoXXXoXoXoXoX", "!./.~.~././.~./.(././././. X~.Y.^ ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.c 2 C R R S @ @ # F R R D F C 1Xx s a :XA z 2 8 >X1X>Xs.g.g.p.sXlX7X8X7X7X7X7XlX2X6X:XL U I S 1 1 s @ + V 9 >XK : : z A s o O S V 2 8 1 @ C C >X;X| | # V W v -.*.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.:.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.t.t.r.` ' ^ m.C.Q.].oXoXXXXXXXOXOXXX[.XXXXOXOX", "/.)./.).).!.)./.!. X+X(./.+X!.W.' ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.z N z.-XC v N 1 Z W Z C E s.D 6X8X~ G W ; 3X2XI I 2XfXi.8Xv p.> * Y R F :XkXlX7X7X7X7XkX&X6X1Xm m s D vXh.C vXQ M c :X2Xs A ;X:X8 1 C 1 UXE o vXh.X U x : : z * : ; $ X X X v 3.X + Q vXY -.:.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.:.>.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.] ' ' V.C._.].XXoXOXoXXXoXOX].XXOX].XXOX", "!.(./.(.(.~.(.!.!.~.!.)./././.^.} } X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.c s b z * 4.M h O o C Y Y P 7X8X; W Q : tX8X8X2XI ,XaX8Xv j.4.* 2XzX>XF :X7X7X7X7X7X8X2X6X1XB N z S 3XX1 cXvX. E H * G G q F 2 C + 9 1 z S :X:XY 2 g.g.2 z vXcXz -.:.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.] ` ' m.C._..XXXXXoXOXXXXXXXXXXXXXXX|..X", "!./.!./.!. X!.~.!.~.!.)./.~.~.Y.^ ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.x z j z V j.vXv ,XD P R rX>.>.rX3X@.E E ; 3X8X6X7X2XL 7X8X. . + 2X8XlX>XF R 7XlX7X7XlX2XkX1XL I x :X2X2XL * K g g -X-XC >X7XY F vXD.k -.:.=.;.;.,. .S W # 1 Q vXK ;X,X-X1 c 2 8 o # z -.*.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.] ' { o.C.E..XXXoXoXOXXXXXXXoXXXXXXXOX.X", "!./.~.+X(.+X!. X~.+X+X).~.(.~.W.' ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.a v d.n * 4 W > 8 R tX>.:.*.,.:.>.2.2.2.2.3X8X8X8XlXm 2XzXc p.> + 3X8X7X8X>XZ 1X8X7X7XlX2X6XU V V c c s V 1 cXbX@ bXbXO C :XR 9 o # 1 ^ ,.:.;.;.;.>. .2 c z C vXcX$ 1X; X F j s z 2 E vXY tX:.*.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.] ' ' b.C.`.'.XXXXOXXXXXXXXXXX.XXXXXXX.X", "!.~.!./././.(.!./.~./.!./.~.!.W.' [ X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.z N z.-XV A + A R 6XrX=.;.:.:.:.=.,.:.>.-.-.>.rX9XkXK 2X8Xv j.4.8 2XlX7X7XlXP :X3X7XkXlX2X6Xm p.,Xj U m m d UXQ o vXQ O A C S x h.1 k <.:.:.;.;.;.;.,.tXlX1X@ 2 o X 3X.-.@.-.<.X . . @ 3XlXlXlX8XX@ j.bX D c z * .@.2 , 2 L M -.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t...' ' b.N.Q.{..XXXXXXXXX.X.XXX.X.XXX.X.X", "!.(.!.!. X!.(.!./.).U.~././.~.Y.[ [ X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.c F @ V A n f.M eX,.:.;.;.;.;.;.;.;.;.;.;.;.;.;.*.:.BX<.%.2.G $Xs ;X1X4X2X8X6X2XY :Xp.sX2X2XK b x a Y I I S 1 @ C A R A c L x X W F y <.:.;.;.;.;.;.;.=.tX1X8 vXbX< @ V 1 o : : > 3.3 rX>.;.;.;.;.;.;.;.;.;.;.;.;.:.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t...' ' b.C.Q.'..X.XOXXXXX.X.XXXXXXXOXXX.X", "~.!.(.!. X~.~. X X(.+X)./.~.~.W.{ { o.y.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.x C 2 Q 2 -X4X! 1.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.BXuX*.~ &.Q + d -XP N i.R * * j C 3XhXE V s * c c A C C 9 cXbX-X2Xb P >X4X1 W 2 ; ,.;.;.;.;.;.;.:.:.,..;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.{ { ' b.N.Q.'.XX.X.XXXXX.XOX.XXXXXXX.X.X", "/.!.~. X!.~. X~. X!./.(./.(.(.W.[ [ X.i.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.c 8 h.j.H #.,.,.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.BX<. .: : : 8 U p.9 @ .:.,.,.BX<.3 v h 1 k # f p c N Y < x.E x D N U z z.aXj z z.aXd A Y z c U L :XzX>XX W Z y ,.,.:.:.>.;.;.;.;.;.>.:XbXh.c P D * G F y ,.*.*.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.] { ^ b.N.Q.).]..X.X.X.X]..X.X.XXX.X.X.X", "!.(././. X~././.(.+X/.|.~.(.!.W.` ' X.w.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.x C c s.I #.:.;.;.;.;.;.;.;.;.;.;.;.;.;.,.,.,.<.,.<.BX<.h.UXL 1 s p.%X* | $Xs . . %XL m L O b b + O b b @ :X4Xx x P D 3XzX4X1 W O l ,.>.:.;.;.;.;.;.;.>.,. .@.@.W yX-.,.1.=.*.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.:.;.;.;.;.;.;.;.;.,.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.` { ' v.Z.Q.`.|.].'.XX.X.X.X.XXX.X.X.X|.", "/.!.~.+X(.!. X(.(.(./.(.)./.(.^.' ' X.w.t.t.t.t.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.x C N z.>X#.=.:.;.;.;.;.;.;.;.;.;.;.;.;. .#. . . .#.yX&.> i 2 z c z.pX: &.! z * .t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.t.t.` { ' v.N.Q.{.|.].'.].]..X.X]..XXX.X.X|.", " X~.(./.(.(.!.(.(. X/.(.~.(.(.^.' { X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.c Z z M a . .=.:.;.;.;.;.;.;.;.;.;.*.;.x &XM M %XM a B s.m -XY @ m c : ; * s t @. .# P Y c c V V c L Y R P Y Y P 1X0X2X2Xs.%Xx Q S - #.:.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.<.E.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.t.t.` ] { b.N.Q.)..X'.'..X|..X.X.X.X.X.X.X'.", "!.(.!.(./.(./.(.(.~.~.).~.'.(.W.' ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.c A * C c &Xg eX<.,.;.;.;.;.;.;.;.;.,.yX%Xp.m g p.M f M z.sXj c x 8 8 L U L Y j ; l a 4X2XR U m m z >X2X1X7XgXw.t.i.>XA A k K 1XM W 1 l ,.>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.t.t.` ` ^ b.N.Q.~.(.'.]..X].|..X.X.X]..X'.|.", "~.!.(.(. X(./.(.(.(.).).(.(.|.^.' ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.v s.n F M p.M 2X4X#.1.;.;.;.;.;.;.;.,.-.1Xn n n K n + O L x V P m m b N l.8XgXy.k.1Xf # f c U v N V L n n N 7.5.9.l.-Xz C * j C F UXh.W :.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.' ' ' b.N.R.).|.].'.(.|.'.(..X|.(.|..X.X", "/././. X(.(.(./.(.(./.(.(.(.(.W.' ' X.w.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.p.z.&XC I n m g %XM #.:.;.;.;.;.;.;.;.*.rX:XP R E R z S V * V S I v M p.9.8XfX9.9.L @ dXcXV m c M Z U v N N 0.9.0.,XK j > p.Z @ 1 Q P M rX,.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.t.t.] ] ' o.N.Q.~..X(.(.].|.'.'.(.'.(.'.(.'.", "!.(./.~.(. X/.(.(.~.(.~.(.|.'.^.` ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.M %Xb @ C z P n p.M 3X<.,.;.;.;.;.;.;.;.=.rX8X7X7XlXI 1Xm s.%XC -X;X;Xs.9.hX1Xa.d.b S IXQ + 3 3.< v U I n -Xa.f.p.n C D < x.E z O M c b 6X@.,.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.t.t.' ] ] b.N.Q./.|..X(.'.(.(.(..X(.(.(.'.(.", " X!.(.(.~./.(.(.(.~.(.(.)..X.XW.' { X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.2X7X2X3 E 4 F U I n M >X .1.;.;.;.;.;.;.*.=.-.rXlX7XU 1XM l.&Xj s.z.7XgXd.! j k C s @ j o 1 C z C c c C F C k Q bXd A T . > . M L N 3 h.1 k <.:.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.:.:.>.:.;.:.:.>.;.;.;.;.;.;.;.;.:.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.] ] ' v.N.W.Q.(.].(.'.(.(.(.(.(.(.(.(.'.", "(.(.(.(.(.(./. X(.|.(.(.(.|.(.W.' { X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.kX7X7Xv @.p.8 V C k < N p #.,.;.;.;.;.;.;.;.,.*.-.rXU 2X2Xn m C E d.P V k C d 4X: X f U L z d >XW @ U v &X+ C Q Q c L U v N g v p.;Xb bXh.:XrX=.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.:.,.,.:.:.>.:.:.;.;.;.;.;.;.;.;.;.;.:.>.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.` { ' o.C.Q.).|.'.(.(.).|.(.(./.(.~.(.(.", "|.+X(.~.~.|.(.|.(.(./.(.)..X(.Q.` { X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.jX8X2X> h 8 n | $ j.vXb 1X<.*.;.;.;.;.;.;.;.;.,.-.I s.l.2XL @ A k C d >XD x dX! O n .:.,.,.,.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.t.t.` ' ^ b.N.Q.).(.(.(.'.(.(.(.(.(.(.(.(.~.", "(.~. X X(.|.|.|.(.(.(.'.)..X(.^.' ' X.w.r.t.t.t.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.y.:.tX6X@ O V * :X H > M .;.;.;.;.,.-.I E d.2XS c s.m + x -XR + P U s O K d z s b b s s m U A D P A n I A J G W A C 1 z + @ L 1X@.#.:.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;. .rXJ < 4 Y M m k ;.;.;.;.;.;.;.;.;.*.&.#. .#. .#.;.:.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.t.t.` ` ' o.N.R.).(.'.(.(.(.(.~.(.(.~.).(.(.", "(.(.(.(.(.|.].).(.|.(.'.(.(.(.Q.' ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.$.-.6XL Q S + D L c < 1 g ,Xg :X>.:.;.:.;.;.;.;.:.-.S V k + C c z.sXk a n b + C I x x s x P V 1 8 c c + V F >XlXwXqX5Xk D.xX` a v &Xp v N O Q bX{ :.;.;.;.*.>.:.;.;.;.;.;.;.;.;.;.;.,.@.g m h z V L c p.n -.;.;.;.;.;.;.;.,.&.4 m f c %Xb .#.$.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.] ] ' b.N.Q.^.(.(.(.(.).(.(. X(.(.(.~.(.", "(.(.(.(.(.(.(.(.'.'.(.(.)..X(.^.' ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.$.;.-.@ > + z 9 < 3.9 =X3X! z 3X-.#. .*.;.;.;.*.-.n a s.%X* x m b b A M x z z I P C + # 8 x U P s # O b s .;.;.;.1.#.#.3XM d.n M p.U m g #.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.{ ` ' b.N.Q./..X(.'.(.(.(.). X(./. X/.~.", "(.(.(.(.(.(.|.(.(.'.|.'.(.|.(.Q.' ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.$.;.=.yX*X9 cXQ V < < 9 h $X; V 2X;Xn b .,.;.;.:.tXn c z.sXj Y a # b L 1 V V 9 Z F z m M s K X7XwXh =Xj ~ ~ 6 1 m m . m m O W 2 F rXrX@.@.rX@.rXrX@.rX@.rXeXrX,.;.,.-.gXx 2 4.j.c V P Q 1 B cX>.:.:.,.#.M m M g g m U b D d.%X-.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.t.t.` ] ^ o.N.Q.). X(.'.(.(. X(./.(./././.~.", "(.(.(.(.(..X'.|.(.|.|.'.(..X|.^.^ ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.$.;.;.,.eX , 3 I p.N A z c a # O z . O V C S Z 2 2 3 S D P Z + 8 * * V + V Z A z A S c z c x A A A C n 2X#.,.=.@.3.3 1 o s + 2 > o M *XeX#.#.#.3XM d.n %XM p.Z D C F L tXt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.t.t.` ' { b.N.Q.`.(.(.(.(.~./.~.~.~./.(.~.!.", "(.'.(.'.'.(.'..X'.|.(.(.(.(.'.^.{ ' X.w.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.$.;.;.:.%.G E O * T h F | h.@.; 4 g.1 g >X@.@.@.eXg s a # p O a L Q A @ D Q F 1 S K %Xg g s F < , > v > $ o 8 1 3X$XT G 1 :X3X6XM 3.h N c n Y x m . M m . W bXF + M m . W bX! @.rXXO z.f.>XD v p.g M s.f vXbXX Y c d.d vXvXX S Z c 3 , , < G l j 3XA p.d.b M d.n M d.d C P D D S P E M p.n eXt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.' ` { b.N.Q.~.|.'.~.(.)././.~.~.!.(.!.!.", "|.(.(.|.'.|.|..X|..X|..X'..X(.W.' ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.$.;.;.;.;.;.,.1.; ; j s 1 2 Z S > > a F rX| + #.#.k 2XL f g d P n I n n x S :X2.} G v f.n %XT ;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.` ] ' b.N.Q./.|.'.'.~.(.(. X(.~.+X/./.~.", "(.(.(.'.(..X.X.X.X'.(..X(.'..X^.' { X.w.t.t.t.t.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.$.;.;.;.;.;.:.*.1.tX*X< v p V V j j Z : ~ : X # X O N M j P b @ Z ^ jXfXX.dX1 * $Xh $X. f %Xx s ;X: $ 4X-X$ ! P @ 2 3 O + 3X@.8 C @ * S S I M n f vXbXo A d.p.A o 3.g O s -X: X z v < a sX3.> % ~ s &XV M iXb Z Z S H P R G ;.:.*.-.T I T 3X<.:.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.] { ] b.N.Q.~.|.(.(.(./.(././.)././.!./.", "].(.].'..X(.].(.'.'.|..X|..X.XW.' ' X.w.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.E.>.;.;.;.;.;.;.;.,.eXj.cXb 8 2 Q 2 8 9 Z z 9 Z C 9 8 9 c 9 9 Z F .dX@.: # f + 9 H 9 # D n %XS 3XX.# tX3X* rX@.* 4 x.j.@ D b a s ;XQ p m g p.iXd R c 1 + M m s Z UX:Xz V 3X@.j 2 g.p.4 < 3.3., C G G j f.z.g 9 3., < %XeX;.:.;.;.;.<.>.<.>.;.;.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.[ { ] v.N.W.^. X+X'.(.(.(././././.!./.!.", "|.'.(.'.'.'..X.X.X.X(..X|..X'.Q.' ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.$.>.;.;.;.;.;.;.;.:.1.i h.3 s H h.g.1 3 , 3.3.< Z < 3.< 3.< , , v & ~ & * >XD # D Q A C cX+ z S R %Xa -X;X# ~ ; s 2 > O $ G h a x -X C W &Xd 1 4 L > , , 3.3 o.xX..* M ,Xx Z 3 < , M # *.;.;.;.;.;.;.:.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.{ { ^ b.N.W.`.(.(.~.(./.(./.(.~././.!.!.", ".X.X]..X'..X.X.X.X.X].]..X.X].Q.' ' X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.$.:.;.;.;.;.;.;.;.;.;.1.#.rXL o 3 2 Z < , < , , 2 < 3., , , , , 3 f U H p -XR z C A x a x d %XzX2X6X6X6X2X6X6X6X>XA K b * #.eXs @ f g . a.s.! ,.>.*.*.;.*.tX1XC S j 9 D C L 2X>XP 2X&X, , 3.f..:.:.G Z z 1 S Z Z Z < 3.Z V z Z F Z C C C x -XU p n %X;X7X6X6X6X6X3XrX-.yXyXyXyXyXrXyXyXrX4Xv &X$ ; : s s n U . &Xg l *.;.;.;.;.:.-.3XB p.g s R a C A C C C Z 9 3 ,X, 4 ~ ~ ~ Z 3 < &XZ D 8 4.W > #.:.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.^ ` ' v.N.Q.).(.~.(. X/.~.(././.+X/.!.!.", ".X.X.X'.'.'..X.XXX.X].XX.X.X.X^.{ [ X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.$.;.;.;.;.;.;.;.;.;.;.;.;.;.*.rXf., f x b V < 3.2 g ! $ + 2 W 2 + x n %X1X6X6X3XyXyXyXyXyX-.=.*.,.*.*.*.1.,.*.*.=.eXI I I g a C A >XD U 2Xn n G ,.;.;.:.;.=.-.%X%X%XM p.p o * X G g p F C S C Z Z Z Z c < 4 N < 3 Z + g l : #.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.' ' { b.M.W.).).).).~./.~././.~././.!.!.", "XXXX].]..X.X.X.XXX].].XX.XOXXX`.' [ X.w.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.$.;.;.;.;.;.;.;.;.;.;.;.;.;.:.*.tX< M p.M C < , 1 Y tXG @ H D.g.@ >X6X2X3X-.rX-.=.,.=.*.*.*.:.;.;.;.:.;.;.;.;.;.:.:.>.<.4Xv s.s s L d b 4XN s.-XyX,.:.>.;.;.>.-.rXrXn U k D h.# .eXx U x S n f Z C F C S Z C 2 3.< Z >XeXA -.;.;.;.;.;.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.` ^ ^ o.N.C.)././.~./.+X/. X/././.!.!.!.", "OXXXOX].XX.X.XXXXX'.].].XXOX.XQ.' [ X.u.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.$.;.;.;.;.;.;.;.;.;.;.;.;.;.;.:.-.f.M g M A Z V C Z S M + o 3 2 C 3X8X8XtX=.:.:.:.;.;.;.:.;.;.;.;.;.;.;.;.;.;.;.>.:.,.=.eXI %Xb C + 8 D P Z C A -X@.1.:.;.;.;.:.=.:.<.<.} 2 4 $ ~ ~ # v d.c d.g b M b f E . 3.M . Z C D L M eX1.;.;.;.;.;.;.:.:.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.G ' ' v.N.R.^.).!.!.~././././.+X+X/.!.!.", "OXXXXXXXOX.X.XXX].'.].NXoX[.(.^.{ ^ X.w.t.t.t.7.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.$.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.>.-.tXf.&XS f .,.yX.*.1.1.%.#.#. .n I I I n M d.n M d.p bX.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.,.*.-.tXR b :XI C Q A @ W Q A :X<.=.*.;.;.;.;.;.;.;.;.;.;.;.;.>.;.;.;.;.;.;.>.;.;.;.;.:.*.,.X.8 .@.m $X4XrXk v s.%XyX*.:.;.;.;.;.;.;.:.>.:.:.;.;.>.<.>.-.>.yXm I U U I d 4.h.4 D m $ P M d.K *.:.;.>.;.;.;.;.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.] { ] v.C.}.nXCX[.~.Y./.!.U.!.U.!.U.!.U.", "oXoXXXoXXXOXXXXX[.VX5 0 6 e VX{.{ ' X.k.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.&.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.&.$.$.&.M M M 2 Z z z 1 9 c :X-.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.%.$.$.$.$.$.*.X.+ ; q %X%X$XQ x m U &XkX@.$.$.$.$.$.$.$.$.$.$.$.$.$.$.*.$.$.$.$.$.-.-.$.-.%.#.Xz E m M L &.$.$.$.$.$.$.$.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.` } ^ b.mX7 - q % nX^.!.U.!.U.!.!.U.U.U.", "oXXXXXoXoXXXXXXXCXLX0 q 6 q HX[.} [ ^ g.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.e.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.w.{ [ ^ Z.mXw 0 0 q FX{.U.!.U.U.Y.U.!.T.U.", "oXoX[.oXoXOXOX].ZXHX0 q q w HXZX[ { ( u k.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.t.t.t.t.t.t.t.t.t.t.t.r.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.x.[ [ J V.LX6 q q q GX[.U.!.U.^.U.U.U.U.U.", "oXoXoXoXoXoXXXXXZXJX0 q 6 = JXZXX.} ' ` x.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.7.u.X.} } [ bXLX6 q q 6 HX[.T.U.U.U.U.U.U.U.U.", "#XoXoXoXXXoXXXXXAXJXq = 6 q JXFX^.X.^ | ..x.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.t.r.r.t.r.t.t.r.t.t.t.r.t.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.t.t.t.t.t.t.t.r.t.r.t.t.r.r.t.t.t.t.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.u.g.} } ^ ( Z.LX6 q q q JXCXT.U.U./.U.U.U.U.@X", "CXoXCXoXXXoXXXXXAXJXq = 0 = JXVX'.E.X.` { J x.t.t.t.t.t.t.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.t.t.t.t.r.r.t.r.r.t.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.t.r.t.t.t.r.t.r.t.t.r.t.t.t.r.r.t.t.t.t.r.r.t.t.r.t.t.t.t.t.t.r.t.r.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.y.t.t.r.t.r.t.t.t.t.t.r.r.r.i.u X.' ] r ( S.LX0 0 0 q HXnXU.+XU.U.U.U.U.U.U.", "oXoXoXoXoXOXOXXXZXJXq q 0 - JXZX.X'.H.[ { { J x.u.t.t.t.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.t.r.r.t.t.r.t.t.t.t.t.t.t.t.t.t.t.r.t.t.r.t.t.r.t.t.t.r.t.t.r.t.t.r.t.t.t.r.r.t.t.r.t.t.t.r.t.t.r.t.t.t.t.r.t.t.t.t.t.t.r.t.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.u.4.j.( ^ ] r ^ o.mXLX0 5 0 - JXnXU.U.U.U.U.U.I.U.U.", "#XoXoXoXoXoXXX].AXJX5 = 6 6 JXFX]..X'.H.^ ' | X.g.k.u.w.e.q.w.q.q.q.q.w.y.q.w.w.w.q.q.q.q.q.q.q.t.y.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.r.e.e.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.w.w.w.w.w.w.w.q.e.q.q.q.q.q.q.q.w.u.w.q.q.q.q.q.q.q.q.q.q.y.r.q.q.q.q.q.q.q.q.r.q.q.q.q.q.q.q.e.w.w.w.y.w.w.w.w.w.w.w.w.w.w.w.y.e.q.q.q.q.q.q.q.q.q.e.q.e.q.q.e.e.q.q.q.e.q.q.r.r.q.q.q.w.k.x.+.{ ^ ( G t ( v.mXLXq 6 0 6 JXnX!.Y.U.U.U.U.U.P.I.", "oXCXoXoXoXoXoXXXAXJX= q e - JXVX|.'.(.`.o.{ ' ' ^ ^ { ' ] ] ^ ^ [ ' ^ ' ^ ] ] ` ` ` ` ] ] ] ' ^ ] [ ] ] ' ^ ` ^ ' ` ' ^ ` ^ ` ' ^ ' ' ` ] { ^ [ ' ^ ' ^ ] ] ` ` ] ' ^ ^ ^ ' ] ` ' ^ ] ' ] ] ' ] ' ^ ] ` ' ^ ` ' ^ ` ` ^ ^ ^ ' ' ` ' ] ^ ' ^ ' [ ^ ' ' ` ] ] ' ` ^ ^ ^ ^ ] ] ` ^ ^ ` ` ` ] ] ` ` ' ^ ` ` ` ` ^ ` ^ ^ ` ^ ^ ] ^ ] ` ^ ` ` ^ ] ^ ` ` ` ` ` ` ` ` ` ` ^ ^ ' [ ' ' ` G { { t t ( v.n.mXLX6 q q 6 JXCXU.U.U.U.U.I.Y.Y.I.", "oXCX[.CXoXoXoXoXZXJX= 0 = w JXFX.X'..X~.W.) ^ } } } } ' ' ' { ' ' { ^ } { ' { } ' ' { { { } [ } { [ } { { { ' { ' ' { ' { { } } { ' ' { } } [ } ' { ' ' { { ' { { { ' { ' ' { ' { ' } { } } } } ' } } } { { ' } } } { ' } } ' ' { ' } } { ' [ } ' } } } } ' } } } { { { { { ' ' ' { ' ' { ' [ ' ' ' ' ' ` ' ' ' { { { ' ' ' ' { { { ' { { { ' ' ' ' { { ' { ' { { ` ' ' { ` ' ' [ ^ u y u v.v.N.VXJXq 6 q q JXVXU.U.U.Y.I.U.P.P.P.", "CXoXoX[.oX[.oXXXZXJXq - w = PXLX|.OX|..X~.'.E.C.O.} [ ^ ] ] ` G ` ^ G ^ ` ^ ` ^ ^ ` ^ ] ] ^ ^ ( ] ] ^ ] ] ] ^ ` ` ^ ` ` ^ ` ^ ` ` ` ^ ] ] ` ] [ ^ ` ` ] ] ] ^ ] ] ` ] ] ] ] ] ] ] ] ] ] ] ] ' ..^ ` ` ] ` ] ^ ` ` ] ] ] ` ` ` ^ ` ^ ` ` ` ^ ] ] ` ` ^ ` ^ ` ^ ` ` ` ` ` ^ ` ` ` ` ` ` ` ` ^ ` ` ` ` ` ` ` ` ` ^ ] ` ^ ` ` ` ` ` ` ^ ^ ` ` ` ` ` ` ` ` ` ` ` ` ` ` ' ` t J ^ ^ t t t u u v.v.B.T.FXPXq 0 q = JXnXY.Y.I.Y.P.I.P.P.P.", "MXoXoXCXoXoXoXoXVXJX0 6 0 q PXIXLXFXVXVXZXZXVXmX}.A.S.b.o.) ..( J J ( J J ( J u J J ( J J ....J ......J ..J ..J J ..J ....J ....J ....J ........J ......X.....................X.J ....X.............J ........J ..........J ....J ..J ....J J ..J ......( J ( J ( J ( J J u ( J ( J u J ( u u ..u u u J u ( ( J r ..u ..u u ( J u ..J ..J ( u J ( u u J u u u u u u ( ....b.V.D.D.A.bXmXmXmXmXLXIXPXq 6 q = JXCXU.U.Y.I.I.I.P.P.P.", "oXoXoXoXoXoXOXoXCXJX= 0 6 q PXPXPXJXJXJXJXJXJXLXLXLXA.S.V.m.m.m.O.m.v.n.m.m.m.m.m.m.m.m.m.b.m.b.b.m.m.b.m.m.m.m.m.m.b.b.m.V.m.m.m.m.M.m.V.V.V.m.V.V.Z.V.V.V.V.V.V.V.V.Z.V.V.V.V.V.V.V.V.V.m.V.V.V.V.V.m.V.V.m.m.m.V.V.m.V.m.m.V.V.m.m.m.m.m.b.b.m.b.m.b.b.b.m.v.v.v.v.b.n.m.v.v.O.O.v.v.v.v.v.O.v.O.b.O.v.v.v.v.m.b.O.b.O.m.v.b.O.o.O.n.v.b.O.b.O.v.v.v.v.O.v.v.o.v.v.V.bXbXmXLXUXLXLXLXLXLXIXIXPXPXq q q = JXnXY.Y.I.I.I.I.K.P.L.", "oXoXoXoXoXoXoXoXCXJX5 0 0 = 9 = - 6 q - q q q q 6 6 6 mXS.W.C.N.N.C.N.C.C.C.C.C.C.C.N.C.C.C.C.C.C.C.C.C.R.C.C.C.C.C.C.C.C.C.S.C.C.S.R.S.Q.S.S.S.Q.A.A.A.A.A.A.A.A.A.A.A._.A.A._.A.A.A.S.S.R.S.S.Q.A.S.R._.S.S.S.A.S.C.S.S.S.S.S.C.C.C.C.C.C.C.C.C.R.C.C.C.N.N.C.C.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N.C.N.N.N.N.N.N.C.N.N.N.N.N.N.N.N.N.N.N.N.N.N.N._.nX6 0 0 q 0 e w = w 0 q - q 0 0 6 e JXVXY.I.I.P.I.K.P.P.P.", "oXoXoXoXoXoXoXoXCXLXw = 0 w w w e 6 6 0 q 6 q 6 q q 6 VX}.T.Q.Q.Q.Q.^.Q.Q.Q.^.Q.Q.Q.).`.`.`.`.}.`.`.`.`.`.`.}.`.`.`.`.`.}.`.`.}.{.}.}.}.}.{.}.}.}.}.}.}.{.mX}.{.}.{.}.}.}.}.}.}.}.{.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.`.`.`.`.).`.`.}.Q.}.`.}.).Q.).`.Q.Q.`.Q.W.Q.Q.W.W.W.W.W.Q.Q.W.Q.W.W.W.W.Q.W.W.W.W.W.R.T.W.W.W.W.W.W.Q.W.Q.Q.W.W.W.W.W.Q.W.Q.W.W.W.W.W.W.W.W.Q.H.mXFX% w = e 0 5 = = 6 6 6 0 q 5 0 q = HXNXY.I.P.P.P.I.P.P.G.", "oXoXoXoXoXoXoXoX[.HX7 q 6 6 q 0 5 = = w = % e = q q q FX[.~.`.~.~.'.(.(.{.'.(.{.].'.].].{.].[.[.[.[.[.].OXOX[.OX[.[.{.[.].[.[.[.[.oX[.[.oXnX[.CXCX[.nXCXMXMXNXCXNXnXNXMXoXnXMXoXoXnXoXnXMX[.[.[.#X[.nXoX{.oX#X[.[.[.[.[.[.[.[.].OX'.{.OX'.[.[.[.[.{.'.'.'.'.~.{././.~.~./.~.~./.(.~.~.~.^.~.~.~.~.~.~.~.~./.~.).).).~.~./.~.~.~.^.).).~.~.^.~.~./././.`.).!.~.~.^.!.~.[.FXq q q 6 q = q 0 q 6 6 e 0 w 6 0 7 LXnXY.I.I.P.P.P.K.K.L.", "oXMXoXoXMXoXCXoX/.NX5 6 q q q = 0 q = q q - q 6 q 6 q nXOX.X'.].].].XX.X].].].[.[.[.oXoXCXoXoX[.oXCXoXCXMXMXoXMXCXoXCX[.oXoX#XCXoXMXCXCXCXCXCXCXCXCXCXCXCXCXCXCXSXCXCXNX#XSXNXSX#XSX#XCXCXCXoXCXCXCXCXCXCXMXCXMXCXoXCXoXoXoX[.#XoXMXoXMXoXoXOXoX#X[.[.[.].].].].].].XX].'.'.'.'.(..X'.~.(.(.'.~.'.(.).(.(.(.(.'.(.(.(.(.'.(.'.).(.~.(.'.(.(.(.'.'.'.'.(.(.(.(.(.).)./.MXFX6 0 q q q 0 q 0 0 q 0 q q = 0 0 5 AX~.Y.I.P.P.P.K.P.K.G.", "oXoXoXCXoX#XoXoX~.{.nXHXHXJXJXJXJXJXJXJXJXJXJXJXHXGXFXMX(.|.|..X].].[.OX].].[.].#X[.[.oX[.[.CXCXCXMXCXMXoXMXMXMXMXoXCXCXnXCXnXCXMXMXCXCXCXCXCXNXCXNXCXCXSXNXSXCXCXMXSXMXSXSXMXMXSXNXCXCXMXNXCXCXCXCXCXNXMXCXCX[.CXCXCXnX[.MX[.CXoXOXoXoXoXMXoXoXoX[.[.[.].[.XXXX].'.].'.'.(.'.(.(.'.(.'.'.~.~.'.(.'.(.'.(.'.(.(.(.(.'.`.'.~.~.(.'.(./.(.{.(.'.'.'.'.(.'.(.(./.~.~.~.~.[.ZXFXKXJXJXJXIXJXJXJXJXJXJXJXJXHXHXnX[.~.Y.P.P.P.P.P.P.K.L.", "oXMXoXoXMXoXCXMXoX~.XX[.CXAXVXZXVXZXZXFXAXAXZXVXVX[.CX^.'.'.'.'.'..X'..XOX].OXOX[.[.oXoXoXCXCXoXMXoXCXMXCXMXMXCXMXMXoXCXoXoXCXoXMXCXCXCXCXCXCXCXZXnXCXCXCXCXCXCXSXCXMXSXMXMXNXCXNXCXCXCXCXCXCXoXMXCXCXCXMXCXCXCXCX[.oXCXCXMXoXoXoXoXoXoXoXOXoXXXoXXXoXXXOXXXXX.X].'..X'.'.(.'.'.(.(.(.(.(.(.(.(.(.'.(.(.(.~.(.(.(.(.(.(.(.(.|.(.).`.~.(.(.(.(.(.(.(.(.(.(.(.(.(.(./.)./.{.nXVXFXVXGXFXFXLXFXFXFXVXVXVXVXnX[.`.Y.Y.T.P.P.P.K.L.K.G.", "oXoXMXoXMXMXoXMXCXoXoXoX[.XXXXXXOXXXXXXX.X]..X.X'.|.'.(.]..X|..X|..X.X.XXXXXXXoXoXoXoXoXMX#XoXMX#XoXCXCXCXMXCXoXCXCXnX#XMXCXCXoX#XMX#X#XCXCXCXCXCXCXCXMXCXCXCXCXCXCXCXCXCXCXNXMXCXoXCXCXCXoXCXCXCXCXCXCXoXoXCXoXMXMXoXoXCXoXMXoXoXOXoXoXXXXXoXXXXXXXXXXXXXXXXXXX.X.X]..X|.|.(.(. X|.).(.(. X(.|. X|.|.|.(.|.(.(. X|.(.(.(. X|.~./.).~.~.|.~. X|.(.'.|. X X(. X(.(.).).!.!.(.!.+X+X!.!./.!.!.!.U./.U.U.U.U.Y.Y.I.Y.Y.P.L.K.P.K.K.K.", "oXCXoXMXoXMXMXoXoXoXoXoXXXoXoXOXXX].XX[.(.XX.X.X.X.X(.XX].(.'.XX.X]..X].XXoXoXoXXXoX#XoXoX#XoX#XoXCXCX[.CXMXoXCXoX#X#XCXCXoXCXSXNXCXNXSXMXSXSXCXCXCXCX#XSXNXNXSXCXCXSXCXCXCXCXMXCX#XCXCX#XoXCXMX#XCXCXoXCXCXCXCXMXOXCXXXoXMXoXoXoXoXoXXXoXXXXXXXXX].XX.XOXOX.X.X].].(.].].(.'.(.).(.|.(.|.|.(.(.'.(.|.~.(.(.(.).)./.|.(. X|.|.!.)./. X(.~.'.|.|.|./.'.(.~.~.|.|./.(.!./.~.!. X(.U.~.~.!./.T.U.U.U.U.U.U.U.I.Y.Y.L.Y.Y.Y.P.P.K.K.K.", "oXCXoXoXMX#XMXoXoXoXoXoXoXXXOXXXXX]..XXX.X.X.X.X.X].XX].'.W.N.H.~.[.XXXXXXoXXXoXoXoXOXoXMXoXoXMXnX#XCX#XCXCXMXMXCX#XCXCXCXCXoXCXMX#XCXSXNXCXCX#XCXCXSXMXMXnXNXCX#XAXCXoXCXoXMXSXCX#XCXnX#XCXNXZXNXoXCXCXCXoX#XnXNXCX{.CX#XoXoXoXXXoX[.#X].XXXXOXOX[.|.oXOX.XXX X'.OX.X X(.'.'..X).~.(.(.(.'.~.|.).|.|.'.(.!.|.~.(.).`.~.~.(.~.).(.~.~.).(.). X(.'.(.(.(.(..X~.!.).!. X^.).!.!.!.!.).+X!.!.!./.U.U.U.U.Y.U.I.I.L.P.P.P.P.P.K.P.G.K.", "oXoXoXCXoXoXCXoXoXoXoXoXoXoXXXoXXX[.(.XX.X.X]..X].'.`.O.7 6 e 5 5 7 m.OXXX.X#X].MXoXoXoXCXCXMXoXCXCXCXCXoXCXMXMXCXCXCXCXNXNXCXSXMXMX#X#XCXCXCXSXSXCXNXNXC.O.MXCXoXSXSXCXAXCXCXoXnX#XMXNXZXR.7 6 q Q.CX[.oXoXoXCXoXC.e w = w - = w w = ( {.'.7 7 = n.XX.X.XXX XXX'.'..X.X.XOX~.(.|.).).~.'.'.~.~.)..X~.~.).~. X(. X)./ = 7 / ).).5 = 5 O.(.(.|.~.~.|.|.). X~.).(.(.).!.~.!.).!././.U.U. XU./.U.U.U.U.I.Y.Y.I.Y.Y.Y.P.P.K.P.K.L.P.K.", "#XoXMX#XMXMXoXMXoXoXoXoXoXoXoXoXXXOX'.XX.X.X(.XXXX_./ % e = q q - 0 0 ) [.{.].oXoXoXoXCXoX[.MXCXoXCXCX[.CXCXoXSXNXMXCXCXCXCXoXCXMXMXCXoXCXCXCXNXCXSXC.( % ) CXCXCX#XAX#XMXSXoXMXCXCXoXCXCXR.6 = 6 R.MX[.oX#X[.CXoXR.6 5 % 6 0 0 = - = ) [.].w e 6 +.'.].XX X.X|..X.X.X(.|.(.XX(.(.~.|.|./.~.).~./.(. X). X). X!.(.(.^ % q ( `.~.7 e 7 O.|.(.~.'.(.(.|.~.).(.).!. X!.(.!.!.+X/.U./.U.U.U.U.+XU.U.U.Y.Y.I.Y.Y.I.I.P.P.P.P.G.K.G.G.K.", "MXoXoXoXoX#XoXoX#XoXoXoXoXXXoXXXoX.XXX.X.X.X(.XX'.( % e - 7 t ( 6 5 0 w +.OXXXoXXXoXMXoXMXMXMXoXCXoXoXCXCXCXMXSXNXCXCX#XoXCXCXMXMXMXNXSXCXMXCXCXCXMX) 6 = ( NXZXSX#XMXAXMX[.AXNXCXoXZXoXCXR.0 - 6 R.ZXCX#XCX[.oXoXR.w = = = e 5 7 0 e / [.oX= - = M.{.).(..X.X X.X].|.XX(.).|.).(.+X|.~.). X~.).+X~. XU.T. X^..X(.).) 6 = / ).).+._ O.H././.|.|.).|.(. X).(.~. XU.+XU.@X(.!.~.!./.^.!.!.U.U.U.U.U.I.U.I.Y.L.Y.I.P.Y.P.P.P.K.P.G.F.", "oXoXMXoXoXoXoXoXoXoXoXoXXXoXOXoXXXOXXXXX'.XX].].H.6 = % e R.].'.W.e 7 5 ) {..X].oX_.B.+.m.Q.NX[.#XoXCXNX{.N.M.m.M.N.`.nXAX[.NXNX`.m.m.O.M._.CXZXNXE./ 0 - ^ R.Q.SXCXSX{.C.M.n.m.M.}.CXCX#XR.0 = q R.[.[.oX#X[.oXoXR.5 0 = ( [.[.[.].{.#XXX(.w % 0 n.).(..XXXE.n.O.n.B.`.(.(.!.).(.~.^.O.O.n.B.). X!././.!.^.n.O.n.^.^ w 7 / (.).M.N.M.W.(.~.M.H.N.~.R.O.O.n.^.~.).~.(.H.O.O.B.Y.H.N.B.J./.U.U.U.Y.U.I.P.P.I.P.I.P.P.P.P.L.P.G.L.K.", "MXoXoXoXoXMX#XoXoXoXoXoXXXOXoX].XXXXOX.XXX].].[.O.0 0 % O.[.#XXX].M.R.{.[.[.oX`.) 6 5 % 7 5 ( `.NX[.CXM.y 6 0 6 % = 5 m.[.CX[.( 6 5 e e % 6 ( {.SX5 0 q = 0 q ) CXNXM.e 6 e % e 6 7 o.CXCXR.0 - 5 R.CXCXoXoXoXoXXXR.5 e 6 / S.H.R.C.H..XXXOX= w = O.{.'.(.O.5 5 0 5 5 y C.'.|.).~.O.& 5 w = 7 e M.(.!.~.N.e w 5 5 e y = = ) ^.).w 5 7 O.^.J.e e 5 B.7 5 & 5 / R.!.~.n./ & 5 % y _ 5 7 ) T.U.@XU.Y.Y.I.Y.P.Y.P.P.P.P.L.L.K.G.L.G.F.", "oXoXoXoXoX[.oXoXoXoXoXoXXXoXoXOXXXOXXXXXXX].XX[.( = = 0 C.OX.XXXOXOXOXoX.X#XXX/ = - - q - 0 5 ^ nXMX`.7 - w - = q - w 6 Q.MXo.5 w e +.X.w - 6 M.NXq = 6 0 q 6 ( CX}.5 5 w = = - = 6 e Q.CXC.% w 6 W.[.[.oXOXoXoXoXC.5 q - q q = = ; 0 [.OX'.% 0 - O.XX~.O.= w = q 0 - % e H.'.~._ w = q q q q q e H.~.~./ % - q q 6 6 q w ^ ).).w = e O./.N.% - 6 6 % = = = & O.).Q.7 5 = = = 5 6 - 0 / ~.U.U.U.U.Y.Y.I.I.I.P.P.P.P.K.P.L.L.L.L.G.", "oXoXoXoXOX[.oX[.oXoX[.#XoX[.XXXX].].XXOXXX.XXX[.( % 0 6 R.OX'.XXOXOX#X.XXXoXM.7 q 6 M.MXM.0 = 6 O.NXN.( e w M.NXQ.0 % = m.NX( 6 5 y }.nXQ.R.CXCXCXC./ e 6 y Q.Q.SXN.( y 0 M.CXQ.w = 0 +.NXE.5 = 0 R.MXoXoXoXOXoX[.H.0 6 q - 5 6 = q 6 [.'.'.w % 6 O.).W.7 - = o.(.R.e 6 w ) ~.^.= = 5 o./.H.7 q q ( ~.B.0 0 = _ ).n.6 0 = ^ (.(.= = = O.U.H.5 q - / M.n.7 - 7 ^ !.B.q q = O.^.n.6 0 6 ( Y.U.I.I.I.I.I.I.P.I.P.P.K.K.K.L.L.K.K.G.K.", "oXoXoXOXoXoXoXoXoXoXoX[.oXXXoXXXoXXXOXOXXX.XXXOX) q % 5 N.OX#XXXXX`.OXoXoX[.) q q ^ [.XXCXt = w X.XXoXCXMX`.N.m./ 6 % e m.MXm.w = w 0 q ^ o.R.NXCXNX( 0 w ..NXCXoXNXCXoX`.R.m.^ w = 5 m.CXC.6 e 6 R.MX[.oXoXoX#XoXH.= q = e ( ) ^ ( ) ].'.OX% 5 0 O.'.n.= = = _./.~.O.q = 7 )._ e 6 7 ^.U./._ 5 6 e T.O.% 0 = ^./.~./ 6 5 ( X X0 e = O. XM.% q 0 B.^.~.^ = 5 ^ U.n.- - 7 T.~././ 0 0 / U.U.Y.Y.I.I.I.I.P.I.P.P.K.P.K.K.K.K.K.G.K.", "oXoXXXoX[.oXoXoXoXoXoXoXoXXXOXoXXX.XOXXXXXXXoXOXO.= w 7 M.XX].OXoX( 7 o.M.NX( 5 0 ^ MX#XXXo.% = ( [.nX+.y % 0 % t e = = +.#XCXO.5 - 6 e - w q M.SXCX^ 0 5 ( NXCXCXNXm.t % 5 7 y 0 = & m.nXW.6 % q R.MXoXoXoX[.OXoXR.5 6 w ( {.OX].XX]. XOX.X= = = +.^.m.= 7 7 |. XU.n.q 6 e ).n.% w 5 ~. XU._ e = w T.O.7 = w !.(././ w 0 / ~.~.0 6 6 O.!.H.7 0 % H.!.~./ w e ^ U.O.= - w ~./.!.( 0 0 / Y.U.Y.U.Y.Y.P.P.I.P.P.P.K.K.K.K.K.K.K.G.K.", "oXXXOXXXoXoXoXoXoXoXoXoXoX[.XXXXoXXXoXoXXXXXXXOXR.= e = e `.NX{.M.q 5 5 / nXo.6 q y [.#X].y 0 5 o.oXn.e w e M.}.{.- = w n.oXCXnXMXR.m.) e 0 q e MX#X( 6 0 ^ AX].#Xm.= = y M.{.{.5 - 0 m.{.C.0 = - R.oXMXoXoXMXOXOXH.= 6 6 ( OX].XXXX). X'.'.w e 0 O.XXn.5 0 6 W. X/.) 0 0 / ^.n.- - e N.U.U._ % - e !.O.7 0 7 H.).^.y = = ( .X!.0 - = O.~.H.% - = H.!.U.( = = ^ T.B.6 7 = O.~.B.5 0 0 / U.U.U.I.I.Y.I.P.P.P.P.K.K.G.P.G.K.F.K.G.F.", "oXoXoXXXXXoXoXoXoXoXoXoXoXoX#XXX#XXXXXoXoXXXoXoXoX( 6 5 % 6 ( / e - = 7 M.[.M.6 - % o.R.o.q 0 5 N.XX( 6 w y N.C.( 0 0 6 m.`.( t 6 m.nXCXO.0 q e NXCX) 0 - ^ C.`.CX( 5 5 y C.C.( % 0 5 M.#XW.7 = 0 R.MXMXOXMX#XoXXXC.q q = ( OXXX].'.oXXX(.'.5 0 0 O. XH.5 6 0 / B.n.0 0 q _ (.H.5 q % / B.n.5 = q _ U.W.% % 7 / M.) 7 = 0 / !.!.6 q e O.U.H.6 - = J.U.!./ 0 0 ^ T.)./ 6 q 5 & 5 0 0 6 / U.U.Y.Y.I.I.P.P.K.K.P.P.P.P.K.G.K.G.G.G.G.", "oXXXoXoXoXoXXXoXCXoX[.[.oXoXXXoXoXXXXXXXoXoXoXXXoX{.y 5 0 6 0 0 % q % o.[.oX[.o.w q 5 % 0 q = o.oXMXo.= = = w % = e 0 q O.NX/ 7 w q / t q q % O.NXNXO.q = = = O.MXO.7 e = = = = e = = +.nXC.5 w = R.oX#XoXCXoXoXXXR.- 6 = ( XX].].(.XX).].).6 6 q O.(..X+.0 - = 0 - - 0 y T.).).n.6 q w 0 = = e y T.T.!.) q = - q w e % e ( ^.+Xq 0 % O./.B.6 q = M.^.+X( w 6 / ).U.N.e 5 % 0 / t 0 5 ( U.U.Y.Y.I.I.P.K.P.K.L.P.K.K.K.K.G.G.F.F.F.", "XXoXXXoXoXoXoXoX[.oXoXoX[.oXoXoXoXoXoXoXoXoXoXoXoXMX{.o.e 5 6 5 0 e m.OXoXOX#XOXn.e 5 w 5 e m.nXoXoX`.) % = e y N.o.0 e ( [.].o.5 6 e 5 6 e M.NXNXNX{.y 0 0 = ) NXnX^ w = = ^ M.o.7 e ( nXE.% 0 5 R.[.oXoXoXoXoXoXH.e 6 5 [ OX.X'.(..X X'.).7 5 w n.!.(.'.M.y 5 5 7 5 ) T.!.U.T.!.B.y % e = = ) T.T./.+XR./ e w 0 ) o.7 % ^ (.~.5 5 w O.!.M.e 6 & H.~.^.) 5 7 ( +XU.~.W.v.n.B././ 0 6 ( U.U.Y.Y.Y.P.P.P.P.P.P.P.K.K.K.G.G.G.F.K.F.", "oXoXoXXXoXoXoXXXoXoX[.oXXXoXoXoXoX[.oXoXoXOXoXoXXX.XMXoXNXE.R.R.Q.oXoX#XOXoX].oXXX[.E.R.R.OXXX#XoXOXoXoXQ.W.W.[.[.[.oXoXOXXXoXMXMXR.H.E._.oXoXoXCX].#XCXQ.C.R.MXoXCX[.}.H.Q.[.#X#X[.[.#X].].CXnX[.MXSXoXMX#XMXoXXX#XoX].].XX X#X|.|.'..X].(.{.(./.{.U. X X@X).H.H.B.^./.@X!.+X~./.+X!.H.B.B.^.U.U.!.U.@XU.!.R.B.H.@XT.^.).T. X@X^.U.^./.U.+X^.).U.U.U.@X^.).T.(.U.H.= / ( B.~.^./ % 6 / Y.@XY.Y.U.I.P.P.L.P.P.G.G.P.G.G.G.G.J.G.F.", "oXoXoXoXXXXXOXoXXXoXXXOXoXoXoXoXoXoX#XoXoXoXoXoXoXoXMXoX[.oXoXoXoXoXCXoXOXoXoXXXOXoXXXXXXXOX#XoXOXMXoX.XoX].[.[.].XXoXXXoXOXMXoXoXoXMXoXCXoXMXCXCXCXMXnXNXNXNXoX[.MXCXCXCXoX#X#XoXoXoX[.#X].oX#XoXMX[.oXoXoXoXoXoX[.[.XXoXXX].OX{.OX'..X(.(./.(.].|. X(.|.+X!.+X/.+XU./.U.+XU.U.+XT.!.!./.T.!.T.U.!.U.!.U.!.!.!.T. XU.T.!.+X@X/.).T.^.!. XU.!.!./.~.!.+XU.U.U.U./.H.& % = 5 / y = = & n.T.U.U.I.I.I.P.I.P.P.P.G.K.G.G.L.G.G.G.F.F.", "XXoXXXoXoXoXoXoXoXoX].oXoXoX[.[.oXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXMXoXoXoXoXoXXXoXOXXXOXoXoXXXoXoXoXoX#XXXXXXX].oXXXoXXXOXOXoXoX#XoXoXMX[.[.MXoXCXoXCXoX#X#XoXoXCXoXCXoX#XCX#XnXoXoXXXoX#XoXCXoXoXoX#XCXoXCXCXoXoXoXoX.X(.XXXX|..XOX.X(.(.).(..X!.(.).).~./.!./././.!.T.T././.U.U.T.T.U.U.U.Y.!.!.@X!.~./.U.!.Y. XU.!.^.T.U.U.U.T. XU. XU.@X/.U.U.U.U.!.U.U.U.!.U.^._ e = 0 e w = & _ W.!.U.Y.U.I.P.P.P.L.L.P.L.G.K.K.G.G.G.F.F.F.", "oXXXOXoXoXXXoX[.XXoXoXoXoXXX#XoXoXoXoXoXoXoXoXoX#XoXoXCXoXoXCXoXoXoXoXoXoXoXoXoXOXXXOXOXoXoXOXoXXXXXXXoXOXoX[.].XXoXOXoXoXoXoXOXOX#XoXOXNXCXoXoXoX#X#X#XCXoXCXMXMXCXoXoX#XoXoXoXoXoX#XOX#XoX[.[.oX#XoXoXoXMXoXoXXX#XXXXX#X[.]..X.X|..X X.X].~.(.(.).~.).~./././.!.!.!. X).U.!.!.T.).!.T.!. X@X X XU.U. X/.U.@X/.U. XU.).!.U. XU.T./.+XU.+X/.!.U. XU.U.Y./.!./.U.U.U.W.B._ / / ( O.O.Y.!.I.I.U.Y.P.P.P.L.P.L.L.L.K.K.K.G.G.F.K.F.F.", "#XoXoXoXoXoXoX#XoXoXoXoXoXoXoXoXoXoXoXoXoXoXMXMXoXMXoXMXoX#XMXoX#XoXoXoXoXoXoXoXoXXXXXoXOXoX[.[.oX#XXX.X.XoXoX#X#XXXXXoXoXXXoXoXoXoXMXoX#XOX#XoXCXCXMX[.MXoXoXNXMXoXCX[.oXoXoXoXoXoX{.MXCX].#XCXoXoXoXMXMX[.oXoXoXXXoXoX].OXoX]..XXX.X(.|.|.(.(./.(.~..X(.!.(.~.(./.!.!.!.~.~.!.).U.U.).!.!.U.@XT.T.U./.T.).T.!.T. XT./.Y./.U.Y.).U.!.T.T.T.!.!.!.^.Y.!.U.U.+XU.U.U.U.U.T./.!.T.T.U.U.I.I.U.Y.I.P.P.P.P.P.P.P.P.K.K.G.K.K.F.G.F.F.", "oXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXMX#X#XoXoX#X#XMXMXoXCXoXoXMX#XoXoXoXoXoXoXXXoX^.n.m.n.m.O.m.Q.].`.m.M.~.(.oX(..X#XXXXX#XoXXXoXOXoXOX#XoX`.m.m.`.CXNXoXMXCXoXCXCX[.CXMXoXCXoXOXMXM.m.m.[.#X].CXoXoXOXXXXXoXOXoXXXOXCXoX].XX].XX.XXX.X'.'.H.O.m. X!.(.!.(.(.~.!./. X/.!.!.!./. X+XU.U.!.n.( / ) n.!.U.T.O.) / ) H.).U.@XU.!.n./ / H.N.n.n._ O.O.O.n.U.U.@XU.U.T.@XP. X!.U.).U.U.!.U.U.U.Y.I.I.P.P.P.P.P.P.G.G.K.K.F.K.K.K.G.F.F.", "oXoXoXoXoXoXoXoX[.CXoXoXoXoXoXoXoXCXoXCXoXCXMX#X#XoXMXoXCX[.MXoXNXoXoXoXoXoXoXoXOXR.w = 6 5 6 % y Q.E.6 & R.OX[.oXXX|.OX#XoXXXoXoXNXMXMXoXMXE.5 % Q.nXoXCXOXoX#X[.oXoXoX#XoXoXoXoXMX( % 7 oX].#X[.oXoXoX#XXX[.OX].OXoX.XoX#X(.OX].].'.'.XX'.O.7 7 X/.~.~.|.!.!. X)./.U.!. XU. X@X!.).).O.7 5 / = % n.!.O.= e / 6 7 W.I.U.U.B.= 7 & N.M.5 e 6 7 5 & ) T.U.U.U.U.U.U.U.U.U.@X/.U.U.U.U.U.U.Y.U.I.P.P.P.P.P.P.K.P.K.K.G.K.F.G.F.G.F.", "oXCXoXoXoXoXCXoXoXoXoXoXoXoXCXoXoXoXMXoXMXMXMXMXMXMXMXMXCX[.MXMXMXoXoXoXoXXXoXoXOXR.= = ..O.X.w % n.`.R.R.`.oX'.W.m.M.R.OXoXXXoXoXoXoX{.m.m.V.6 0 H.CXNXE.m.n.R.nXoXMXoXMXoXoXoXoXXX( e 5 nX[.`.+.m.n.N.].oXQ.R.Q.`.n.M.{.].oXOXm.n.m.H.].(.T.N.N.~.T.N.R.N.O.~.!.R.n.O.N.^.).U. X/./.~.e 7 _ `._ % ) ^.% = B.^./ 5 n.U.U.J.7 % 0 e B.P._ _ n.) 7 7 n.T.U.@XU.Y.!.U.U.U.U.Y.I.U.U.U.U.U.Y.I.Y.G.P.P.P.P.P.G.P.L.K.K.G.K.K.F.G.F.F.", "oX#XoXoXMXoX#XMXoX[.oXoXCX#XoXoX#XMXMXCXoXCXoXCXMXMXoXMXMXoXCX[.oXoXoXoXoXoXXXoXXXR.7 5 _ R.O.0 7 n.C.e 5 C.NXo.7 = % 7 o.[.oX].oXoX]./ 6 0 q q % W.nXO.% e = 5 O.MX[.MXoXoXoXoXoXoX) 5 = NXQ.7 0 q 5 5 O.nX+.5 y e 7 6 ) NX'./ w - = 7 M.OXO.0 0 '.O.5 y y 7 M.B.- % 0 % / W.|./.(.U./.~.B.^.W./ q ) B.0 6 !.U._ 6 ) Y.P./ = o.5 = B.Y.U./.T./ q O.W.Y.U.I. XY.I.Y.Y.U.U.U.U.U.U.I.I.Y.Y.L.Y.I.P.P.P.P.P.G.P.L.K.K.G.G.K.G.G.F.F.", "CX#XMX#XMXoXMXoXCXoXoXoXoX[.oXCXoXMXoXCXCXoXCXMXCXCXCXMXMXMX[.MXoXMXoXoXoX[.oXoXoXC.0 = 6 q q q 7 ].N.0 = R.E.w 0 R.E.= 7 R.[.[.oXNXM.= = W.B.0 - R.R.5 7 R.R.w = Q.nX[.oX].XX#XoXoX( q = oXC.n.( _.o.6 e ].n.0 = n.) ; 6 #Xm.; e {.O.5 e (.n.= 6 XXO.q 7 o.M.{.0 e O.`.y = O.^.+X/./.).).T.H./ = e P.J.q 6 T.U.n.0 ) Y.( 6 O.B.5 = B.U.U.U.n.& ( Y.U.Y.U.U.I.U.U.U.U.U.U.I.U.Y.Y.Y.Y.Y.P.P.Y.I.Y.K.K.P.K.P.K.L.K.K.L.K.G.K.G.G.F.", "MXoXMXMXMXoXoXMXMXoXCXoXoXCXoXoXCXNXCXoXoXMXCXCXCXCXCXMXoXoXMX[.oXMXoXoXoXoXoX[.XXC.5 0 y e = y C.OXH.0 = R.n.% 0 #X[.7 = m.oX#XoXCXn.w q CXC.0 q C.M.; = ( ^ = w n.oXoXOXCXOXnXE.[.( 0 5 [.oXM.o.t 5 = = oXn.w - oXm.= 6 {.( = e ^ / = = N.m.= q Xn.0 % Q..XN.5 6 H.)./ % ( (.@X!.!. X XH.e & / H.U.B.= = U.@X_ q / n.6 e O._ 6 q ) K.U.T.y 7 O.U.T.U.U.U.U.I.I.Y.I.U.I.U.I.I.Y.I.Y.P.Y.Y.L.Y.P.P.P.K.P.P.G.P.K.K.G.L.G.G.K.F.F.", "MXMXMXMXMXMXMXMXoXCXoXoXCXoX#XMXoX#XoXCXCXCXMXCXCXNXCXCXCXMXoXMXMX[.oXoX[.oXoX[.OXR.5 0 n.`.e 6 e `.R.0 = H.n.= 0 ].nX5 7 m.MXoX#XCXn.0 = NXC.5 q R.O.7 = m.M.O.M.R.oXoXOXoX( 7 - {.^ % 5 nXO.% w M.O.q = [.m.= w oXn.= e [.( = y B.n.m.n.T.O.% q ).O.; 5 ].+XH.5 6 N.).( q ( ~. X X!.).H.e & o.W.^.!.^.5 w H.U.) 0 _ _ 6 0 = & q - w J.K.B.6 e ^.T.U.U.U.I.Y.Y.I.I.Y.I.I.I.Y.Y.I.I.I.I.Y.L.P.P.P.P.K.P.K.P.P.G.K.K.K.G.K.G.F.F.F.", "CXMXMXMXCXCXCXoXCXoXoXoXMX[.CXoXoXCXCXCXCXCXCXCXSXMXMXNX#XoXMXMXnXoXoXoXoX[.oX#XoXR.7 = O.nXm.7 = B.R.- e R._.= 5 m.+.e = _.MXoXoXCXQ.= = m.o.- 0 C.`.5 = m.m.( m.{.OXXXCXoXm.5 = ^ = = ) nX) % t C./ 5 % oXm.w 6 oXm.= % MXn.w - N.o.o.+.OXO.w - .XO.= = '.).OX/ - ) M.5 6 n.(. X+X/.^.^ - w = % = / W.( - o.O.7 0 B.B._ O.O.) q q ) F.I.O.- ^ Y.U.U.U.I.U.Y.I.U.L.Y.Y.Y.P.I.P.P.Y.P.P.P.P.P.P.P.K.P.P.K.L.L.K.K.K.K.F.G.G.F.G.K.", "oXoXCXMXCXoXCXCXCXoXCXCXCXCXoXCXoXCXoXoXCXCXCXCXCXMXSXMXCXMXMXMXCXoXCXoXoXoXoXoXoXH.5 0 m.OX'.7 0 7 M.e 5 N.OXM.e 0 % y M.MXMX[.CX[.nXO.0 6 ) e 6 Q.nXM.w w 7 5 m.].#XoX[.oXCX( % 7 % ^ }.[.N.5 % % o.q w E.+.= 0 Xn.5 0 ].].o.= & = e R.{.M.0 6 ].O.7 7 .X].(.E.y 5 e 7 _ )..X(././.N.6 0 % = 7 % ) Y.B./ % 7 5 _ T.Y.Y.Y.Y.B.5 0 B.P.I.( = O.Y.U.I.U.U.I.Y.Y.I.Y.Y.L.I.I.P.Y.P.P.P.P.K.P.P.K.P.Y.K.K.K.K.K.K.K.K.K.K.G.G.G.F.c.", "CXCXCXCXCXCXCXCXCXCXCXoX[.CXCX[.CXCXnXCXCXCXCXCXMXSXCXCXCXMXoX#XoX#XCXoXoXoXoXoXoXoX[.MXOX].XX].NXOXoXnXXX#X#XoXoXR.R.oXoX#XOXCXnXoX#XOX_.Q.NXoXoX[.oXoX{.H.R.{.[.oXOXoX(.XXoX{.`.R.Q.nXoX#X#X`.R.(.].].(.#XXX].].#XoX{.'.XXoX].Q.H.W.}.#X|.~..X'.'..XOX.X'.].].(.~.H.N.^.|.).~.~.!./.U.U.^.^.^.U.!.!.U.Y.Y.J.B.H.U.Y.P.P.P.I.U.P.T.P.L.L.P.T.P.I.U.U.U.I.I.I.I.I.Y.I.I.P.I.K.Y.P.P.P.P.L.P.K.P.L.L.K.K.K.K.K.K.F.K.K.F.G.G.G.F.K.", "CXCXCXCXCXCXCXCXCXCXCXCXCXoXoXCXoXMXCXNXCXCXCXCXSXCXCXCXCXMXMXMXoXoX[.oXoXoXoXoXoXoXoXXXOXoXoX#XXXXXOX[.#X).#XoXoXoXoXoX#X#XoXMXNX#XoX#XoXOXoXoX#X#XXXCXoXoXOXNXOXoX[.OX#XoXoXoXoXXXMX].#X].XXXXoXOXoX[.XXXX].XX]..X].].XX'.XXoX'.XXXXoX(..X.X'.].(.|.).].'.].(.].)..X'.|.).~.).(./.+X+X XU.~.!.!.U.!.!.Y.I.L.U.I.I.P.I.P.I.Y.H.P.K.P.P.P.I.P.P.U.I.P.P.I.I.I.P.P.I.I.L.Y.K.Y.P.P.P.P.P.P.K.K.K.K.K.K.K.K.K.K.F.K.F.K.K.G.G.G.G.F.", "CXCXCXNXZXCXCXCXCXCXNXCXoXMXoXCXMXMXCXCXCXCXSXCXSXCXSXMXNXCXoXMXMXoXMX#XoXoXoXOXoXXXoXOXOXoXXXXXoXoXOX[.oX#XoXOXMXoXMXoXMXMXMXOX#XoXSXOXoXoXoXMXoXoXXXOXoXXXoXOX#XXXXXoXOXoXXXXXoXoXoX[.oXOXOXoX#XXXXXoXOX].oX|.XX.XOX.X.XOXOX|.[.XXOX.X.X.XOX|.|..X|.XX|.XX'.'..X|.OX|.|.(.(.(.!.!.T.~.!. XU.U.!.U.Y.Y.!.Y.Y.^.L.I.I.Y.P.P.K.P.I.L.Y.H.L.P.L.L.T.P.P.P.Y.K.K.K.L.P.P.P.P.P.K.P.L.P.P.G.P.P.L.L.L.K.K.K.K.K.L.G.G.G.L.G.G.G.G.G.G.", "CXCXCXCXCXCXCXCXCXCXCXCXCXCXCXMXCXoXMXCXCXCXCXCXMXCXSXMXCX#XMXoXoX#XoXoXXXoXoXoXXXoXoXoXOXXXoXoXoXoXoXoXoXoXoXoXoXoXoXCXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXOXoXoXoXoXXXOXoXoXXXoXoXoXoXXXXXoXoXoXOX[.].XXXXOXXXoX.XoXXXXXXX.X.X.X.X.X.X].XX]..XXX.X]..X.X.X.X.X.X'.'.|.|.(.'.(. X(.!.).!.!.!.U.U.U.@XU.U.U.U.Y.I.Y.Y.I.I.P.I.K.P.P.P.K.P.P.P.P.P.P.P.P.P.P.P.P.P.P.L.L.Y.P.P.P.K.P.P.P.L.P.P.G.L.G.G.K.G.K.G.G.G.G.G.G.G.G.G.G.G.G.G.G.", "CXCXCXCXCXCXZXCXCXCXCXCXCXCXMXNXCXMXMXCXoX#XCX#XCXCXNXCXCXMX#XoXMXoXoXoXoXoXoXXXoXoXoXOXoXoXoXoXoXoXoXoXoXoXoXoXOXoXoXoXoXMXoXMXMXoXoXoXoXoXoXoXoXoXoXXXoXXXoXoX#XXXoXXXoXoXXXoXXXXXXXXXXXoXoX].oXOXoXoXoXXXXXXXXXXXXX.X.X.XXX.X.XXX]..X.X.X.X|.|.'.'..X.X.X(..X.X(.(.(./. X~./.).!.^.!.U.U.+XU.U.U.U.U.Y.U.I.I.I.I.P.P.K.P.P.P.Y.K.K.P.P.K.K.P.P.K.P.P.P.K.K.K.L.L.L.K.L.L.K.L.G.P.G.K.K.K.P.G.K.G.F.K.G.K.G.G.G.G.G.G.G.L.G.F.G.", "CXCXCXZXCXCXCXCXCXCXCXCXCXCXCXCXCXoXCXMXCXCXMXCX#XCXCXMXMXCXMXMXMXoXoXoXoXoX#XoXoXXXXXXXoXXXoXXXoXoXoXoXoXoXCXoXoXoXoXoXoXoXoXoX#XoXoXoXoXoXoXoX].oXoXoXoXoXXXOXXXXXXXoXOXXXOXOXoXXXXXXXXXXXOXXXXXXXoXXXOXOXXX.XOXXXXX.XOX.X.XXX.XXX].XX.X.X.X]..X'..X.X]..X]..X'.(.(.|./.).~./.!.!.!.U./. XU.U.U.U.U.U.Y.U.I.I.P.I.P.P.P.P.P.G.K.K.P.P.L.L.K.K.P.K.K.K.K.K.K.K.L.K.K.K.K.K.K.L.L.K.G.K.G.G.G.G.G.G.G.K.G.G.G.G.G.G.G.G.G.G.G.G.G.", "CXCXCXCXCXCXCXCXSXCXCXNXCXCXCXCXCXCXCXMXCXCXCXoXMXCXCXMXMXMXMXoXoX[.oXoXoXoXoXXXoXXXoXXXXXoXoXXXoXoXoX#XoXoXMXoXoXMXoXoXoXoXCXoXoXoXoXoXoXoXoXXXoXoXoXXXoXXXoXXXXXoXXXXXXXXXXXXXXXXXXXXXXXXXoXoXoXoXXXoXoXXX].XX.XXX.X.XXX.X.X.XXXXX'..X.X.X.X]..X'.].].].|.'.'.(.(. X(.~.~.)./././.!.!.U.U.@XU.U.U.Y.U.I.Y.Y.Y.P.Y.P.P.P.G.P.P.K.L.K.K.K.K.K.K.K.K.K.K.K.K.K.L.K.G.K.G.K.G.K.G.G.G.F.K.G.G.G.G.c.K.K.F.G.G.G.G.G.G.G.G.G.G.G.G.F.", "CXCXCXCXCXCXCXCXCXCXCXSXCXCXCXCXCXoXCX#XoXoXCXCXMXMXMX#XMXMXMXMXCXoXoXoXoXoXoXXXXXoXOXXXoXoXoXoXXXoXXXoXoXoXoX#XoXoX#XoXoXoXoXoXoXoXoXoXXXoXoXoX[.oXoX[.XX[.XXOXXXXXXXXX.X].XXXX]..X.XXXXXXXXXXXOXXXOXoXOXXXXXXX.X.XOXXX.XXXXXXX.XXXXX.X.X].|.].].'.(..X.X|.(.(.(.(.~.).~.)./.+X/.T.!.!./.U./.U.U.I.I.I.U.Y.I.P.P.P.P.P.P.P.K.L.Y.L.K.K.K.K.K.K.K.G.G.G.K.L.F.K.K.F.F.G.G.G.G.G.G.K.F.F.G.G.G.G.K.K.c.K.G.G.F.F.K.G.G.F.G.F.F.F.G.", "CXCXCXCXCXCXCXCXCXCXMXMXSXCXCXCXCXCX#XCXCXoXoXCX#XMXMXMXoXoX#X#XCXoXCXoXoXoXoXXXOXoXoXoXoXoXXXoXXXoXoXoXCXoXoXoXoXCXoXCXCXoXoXoXoXXXoXoXoXoXoXoXoXoXoXoXOXOXXX].XX.X]..X.X'..X.X.X]..X]..X.X.X].XXoXoXXXXXXX].XX.X.X.XXXXXXX.XXX.X].]..X.X.X.X(.|.'.(.].|.(.(.(.(.(.!.!././.+X~./.!./.!.+XU.U.U.U.Y.U.Y.I.I.P.I.P.P.P.P.K.P.K.P.L.K.L.L.G.G.G.G.G.F.G.G.K.F.K.K.F.F.F.F.F.F.G.F.K.c.F.K.F.K.G.G.F.K.K.F.F.F.F.F.c.F.F.L.F.L.F.F.F.", "MXCXNXCXnXCXZXCXSXCXSXCXMXCXCXCXCXCXCXCXCXCXCXCXMXMXMXMXMXoXMXoXoXoXoXoXoXoXoXoXOXOXoXXXXXOXoXoX#XoXoXoXoXoXCX#XoXoXoX#XoXoXoXoXoXoXoXoXXXoXoXXXXXoX].oXoXXXOX].].].|..X.X'.'..X|.|..X.X].].XX].XXXXXX[.OXoXXXXX.XXXOXXX.X.XXX.X.X.X]..X.X.X].(.'.(.|.(.|.(.(.(.!.(.(.~./././.U./.!.!.!.U.U.U.U.Y.I.I.Y.I.I.I.I.P.P.P.P.P.G.K.K.K.K.K.K.G.G.G.F.G.F.G.F.F.F.c.c.F.F.c.F.F.F.F.F.c.K.K.c.K.G.F.G.F.F.F.F.F.F.F.c.K.c.F.F.F.F.F.F.F.", "#XNXMXMXCXCXCXCXNXCXCXCXCXCXCXMXnXCXCX#XCXCXMXoXCXMXnXMXCXoXoXoXoXCXoXoX#XoXoX[.oXoXOXXXOXoXoXoX#XoXoXoXMXMX#X#XCXoXCXoX#XoXoXoXoXoXOXoXoXXXoXXXXXoX[.XXOXOXOX].'.(..X(..X.X'.|..X(.'.'..X.X].].XXXXOXXXOXXXXXXXXX.X.XXX.XXXXXOX.X.X]..X.X.X].'.'.(.|.|.(.).).~.!.).!.~.)././././.!.!.U.!.U.U.Y.Y.Y.P.P.P.P.P.P.P.Y.P.T.K.K.K.K.K.G.K.c.G.K.c.K.c.K.c.K.c.K.c.c.c.c.c.c.K.F.c.c.c.K.F.K.c.c.K.c.F.F.F.F.F.F.F.F.c.F.F.F.F.F.F.F.c.", "CXNXSXSXMXCXCXCXMXCXMXCXCXNXCXCXCXCXCXCXCXoXCXoXoXMX#XoXoX#XoXCXoXoXoXoX[.[.oXoXoXoXoXoXXXoXoXoXoXoXoXCXoXMX#XoXCXoX#XoXoXoXOXoXoX].XXoXXXoXoXXXoXXX[.XXXX]..X.X]..X'.|.(.(.|.|.|.'.(..X|..X.X.X.X.XXXXXXXOXXX.XXXXXXXXXXXXX|.XX'.'..X.X'.XX|..X.X|.|.~.(./.+X/.~.!././.+XU.U. XU.!./.U.U.U.U.I.P.Y.P.P.P.P.P.L.P.K.K.K.K.K.K.K.G.K.K.K.K.c.c.c.K.c.c.c.c.c.c.c.c.c.c.c.c.c.F.K.c.c.c.K.c.K.c.K.F.F.c.F.c.F.F.F.F.F.F.F.F.F.c.F.F.", "CXCXCXMXCXCXCXMXCXNXCXCXCXNXCXMXCXCXCXoXCX#XCXCXMXoXoXMXoXoXoXoXoXCXoXoXoX[.oX[.oXoXoXoXoXoXoXoXoXoXoXoXoXMXoXoX#XoXoXCXoXoXoXoXoXXXoXXXoXoXoXoXXX[.].[.OX[..X.X.X.X).(.(.(.(.|.(.(.|.(.'..X|..X.X.X.X.XXXXX.XXXOXXXXXXXXXXXOX|.]..X.X.X.X].|..X(.(. X(./././././.!.!.U.U.U.+XU./.U./.U.U.Y.I.Y.P.P.P.P.P.P.P.P.K.P.P.K.P.K.K.K.G.G.L.c.F.c.K.c.K.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.K.c.c.K.c.c.F.c.F.c.F.c.F.c.c.F.F.c.F.c.F.c.c.", "NXCXMXSXMXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXoXCXMXCXoXoXCXoXoX#XoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXXXoXoX[.OXXXoXOXXXXXOXXXOX[.XXXX]..X.X|.'.|.(.(.(.(.(.|.(.(. X(..X'.]..X.X.X]..X]..X.X.X.X.XXX.XXXXXXX.X.X(..X'..X(.'.'.(.(.(.(.!.~.!.!.U./.U.U./.U.U.U.U.U.U.U.Y.Y.I.Y.P.P.P.P.P.P.P.K.P.K.K.K.K.F.K.G.F.c.K.F.K.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.F.c.c.c.c.c.K.c.F.c.F.c.F.c.F.c.F.F.c.F.F.c.F.c." }; micropolis-activity/images/obj2-5.xpm0000664000076400007640000000260110724145723020023 0ustar simcitysimcity/* XPM */ static char * obj2_5_xpm[] = { "32 32 10 1", " c None", ". c #BFBFBFBFBFBF", "X c #7F7F7F7F7F7F", "o c #FFFFFFFF0000", "O c #FFFF00000000", "+ c #FFFFFFFFFFFF", "@ c #66666666E6E6", "# c #3F3F3F3F3F3F", "$ c #000000000000", "% c #00000000E6E6", " ", " ", " ", " ", " . ", " .XX o ", " OOOOOO .XX. X ", " OOO OOO .X. o ", " O O .. X ", " O O. o ", " O ..O ", " O X ..+ O ", " O X @X..+ O ", " O X #XX..+ O ", " O X #XX...+ O ", " O X#XXX...+@ O ", " O . XX....++ O ", " O XX.##.++# X O ", " O $$X##++X X O ", " O #$%$X+++ X O ", " O #$$%$++#X O ", " O #$$$#+ X O ", " O ### . O ", " O O ", " O O ", " O O ", " O O ", " O O ", " OOO OOO ", " OOOOOO ", " ", " "}; micropolis-activity/images/button1hilite.xpm0000664000076400007640000010010010724145723021611 0ustar simcitysimcity/* XPM */ static char *button_hilite[] = { /* columns rows colors chars-per-pixel */ "157 90 256 2", " c #035E00", ". c #0A5C00", "X c #035A08", "o c #145C00", "O c #016302", "+ c #00640B", "@ c #016B01", "# c #006A0B", "$ c #0A6700", "% c #006A1A", "& c #006614", "* c #007302", "= c #017C01", "- c #007B0A", "; c #0A7C00", ": c #057505", "> c #007413", ", c #007917", "< c #116200", "1 c #127A00", "2 c #137700", "3 c #006828", "4 c #006A30", "5 c #205900", "6 c #106A17", "7 c #25557D", "8 c #265C8B", "9 c #2A5D8C", "0 c #2A5A84", "q c #295E90", "w c #315E89", "e c #335D83", "r c #2C608D", "t c #2C6292", "y c #266090", "u c #34638D", "i c #38648E", "p c #3A658A", "a c #346491", "s c #396590", "d c #3B6892", "f c #386796", "g c #307EB1", "h c #456789", "j c #466B91", "k c #4D7295", "l c #4A77A0", "z c #018301", "x c #00830A", "c c #008B01", "v c #008B0A", "b c #098200", "n c #0A8B00", "m c #008814", "M c #019301", "N c #00930A", "B c #009B02", "V c #009A0A", "C c #0A9200", "Z c #0B9B00", "A c #009714", "S c #128300", "D c #148C00", "F c #169900", "G c #008B27", "H c #00A302", "J c #00A30A", "K c #00AB02", "L c #00AB0A", "P c #0AA300", "I c #0BAC00", "U c #00AC15", "Y c #00A313", "T c #01B400", "R c #00B30A", "E c #00BA03", "W c #00BA0B", "Q c #0AB200", "! c #0CBC00", "~ c #00B411", "^ c #00BA11", "/ c #00BA19", "( c #15A700", ") c #16B700", "_ c #21A900", "` c #23B500", "' c #109911", "] c #01C302", "[ c #00C20B", "{ c #00CB03", "} c #00CC0A", "| c #0AC300", " . c #0BCA00", ".. c #00C416", "X. c #01D301", "o. c #00DB02", "O. c #00DC09", "+. c #08D602", "@. c #00D612", "#. c #16C900", "$. c #14D700", "%. c #00E302", "&. c #00EA02", "*. c #06E606", "=. c #00E817", "-. c #01F302", ";. c #02FC03", ":. c #02FD0C", ">. c #0AFD02", ",. c #09FF0A", "<. c #09F501", "1. c #0CFF13", "2. c #03FB16", "3. c #15FA04", "4. c #13FF15", "5. c #13FF1A", "6. c #1BFF13", "7. c #19FF1B", "8. c #14EC00", "9. c #00EA25", "0. c #01F725", "q. c #04FC34", "w. c #1CFF24", "e. c #17FF27", "r. c #11F936", "t. c #26C700", "y. c #25D900", "u. c #33CA00", "i. c #2AE800", "p. c #2CFC01", "a. c #28F804", "s. c #24FF13", "d. c #22FF19", "f. c #29FF17", "g. c #36FB05", "h. c #33FF14", "j. c #36E400", "k. c #24FF24", "l. c #2BFF2A", "z. c #25FF28", "x. c #2DFF32", "c. c #27FF38", "v. c #36FF28", "b. c #33FF32", "n. c #3AFF34", "m. c #3AFF3B", "M. c #33FF3B", "N. c #0DFE49", "B. c #3CFF42", "V. c #38FF4A", "C. c #38FF56", "Z. c #29FF43", "A. c #36FF6A", "S. c #44FF1A", "D. c #47FF29", "F. c #41FF3C", "G. c #47FF35", "H. c #57FF39", "J. c #60FF3C", "K. c #43FF43", "L. c #42FF4B", "P. c #4CFF44", "I. c #4CFF4A", "U. c #48FF54", "Y. c #56FF46", "T. c #53FF53", "R. c #53FF5B", "E. c #5AFF53", "W. c #5BFF5B", "Q. c #59FF65", "!. c #4DFF6B", "~. c #60FF5B", "^. c #66FF56", "/. c #64FF46", "(. c #64FF64", "). c #6BFF6C", "_. c #67FF67", "`. c #6DFF71", "'. c #64FF78", "]. c #73FF69", "[. c #72FF72", "{. c #73FF7B", "}. c #7AFF75", "|. c #7BFF7A", " X c #1E82B7", ".X c #2985BB", "XX c #3589B8", "oX c #1C89C5", "OX c #1C89C9", "+X c #1B86C5", "@X c #1B8ED3", "#X c #248BC5", "$X c #248CCA", "%X c #2B8CC5", "&X c #2A8ECA", "*X c #2886C5", "=X c #2A8DD1", "-X c #268CD0", ";X c #2590CB", ":X c #2B91C6", ">X c #2C90CC", ",X c #2391C3", ".j j iXrXrXeXeXeXqXeXqXqXqXqXqX7X7X5X7X7X4X8X3X3X3X8X>X3X3X3X3X>X3X3XX&X&X;X:X&X$X$X:X&X>X&X>X>X>X3XX>XX&X>X>X$X&X$X>X;X&X&X&X>X&X3X&X3X>X3X3X3X3X3X3X3X3X", "9 8 8 8 9 9 9 9 9 9 8 9 9 9 q 9 9 t 9 t q u u 9 r u 9 u a a t t 9 f a a i d p s d d i p p i d i d l l.K.].|.kXaX}.sX[.`._.(.(.~.W.E.T.T.I.P.I.P.P.K.L.L.L.L.L.L.V.L.L.B.L.L.B.B.L.B.K.P.I.I.I.I.U.U.Y.T.R.Q.R.Y.Y.J.Y.rXqX7X7X7X7X7X8X8X>X5X3X4X3X8X4X8X3X4X8X>X&X&X>X>X&X&X>X&X&X:X&X&X>X&X&X>X&X9X>X:X3X>XXX&X>X&X&X;X$X&X&X&X&X&X>XX3X>X>X3X>X>X3X>X3X6X", "9 8 8 8 9 9 9 8 9 9 9 9 9 9 9 9 9 9 9 q u 9 r r 9 u 9 f 9 w s s w e d u f f f d p j l.E.|.jXjXtXtXtX`._.W.U.U.I.B.M.l.z.7.4.,.:.;.-.:.=.&.%.%.*.O.O.o.X.o.o.o.o.o.o.o.X.o.o.o.O.%.*.-.-.-.;.;.,.1.1.f.s.k.k.l.B.V.V.H.G.B.U.L.B.G.H.H.0X4X2X6X4X4X3X4X3X:X>X>X>X:X:X>X&X>X&X&X&X&X$X&X&X=X>X>X&X>X>X3X&X&X3X>X>X3X>X3X>X3X", "9 9 8 0 0 9 9 8 8 9 9 9 8 9 9 9 q w 9 q 9 q r 9 u 9 u 9 a a w w i w d u s j k n.].zXlXkXkXtX_.(.Q.R.L.B.b.z.e.5.:.;.&.%.o.O.{ { ] ] E { [ E E T T T T T T K K T K T T T T E T T E E E E ] { { X.o.o.o.*.-.>.:.1.e.c.w.c.C.C.A.B.G.G.V.m.G.D.4X4X3X3X3X3X4X6X>X:X;X&X>X&X&X$X&X&X$X>X&X>X&X&X>X&X&X&X&X>X>X&X>X&X&X>X>X3X>X", "8 9 8 8 9 8 8 9 9 9 9 9 t 9 9 9 9 r 9 9 9 9 u 9 9 u a 9 f a a f i i i h D.sXnXzXlXlX{.'.'.R.L.m.c.w.,.;.-.%.o.X.} { E E T T E T T T T T T T T T T Q T T T T Q T T T R T T E R T E R T T T T T T T E [ [ ] { { o.&.-.;.:.2.4.e.z.z.l.M.V.n.n.G.D.D.5X3X3X6X4X>X>X=X=X;X&X$X:X&X&X>X&X>X>X>X&X&X>XX3X&X&X&X&X>XX>X", "9 0 8 8 9 9 9 8 8 9 9 8 9 9 9 9 9 q q u t 9 9 u w w s 9 w w s w e s.'.lXzXnXsX).`.'.R.B.k.7.,.;.&.o.X.{ ] E E T T T E E E E E T T T T T Q T T T T T R T R E E T E T T R E E E T E E T T T T T T T T W E T E T E E | @.@.o.*.8.3.,.4.s.f.h.l.v.x.v.b.D.S.3X>XX;X&X:X$X&X&X&X:X>X>X&X&X&X>X&X:X9X>X&X&X>X&X&X&X&X3X>X3X", "9 8 8 8 9 9 8 8 9 9 9 9 9 9 9 9 9 q 9 9 r 9 r 9 t w 9 i i w h n.aXzXlXjX{.(.(.U.m.d.4.;.-.&.X.| E E E E T T T T T T T E T E T T T T R E T T T T T T T T E T R T E R T K T T T T T T T T T T T Q T T T T T E W T T T Q Q ! | ] O.=.9.<.;.,.5.w.e.c.Z.v.l.v.v.XX:X%X%X&X&X&X$X&X>X&X>X>X>X&X&X&X&X&X>X&X&X&X&X&X&X:X&X>X>X3X", "8 8 8 9 8 9 9 9 8 9 9 9 9 9 9 9 9 9 u t 9 9 r u u t q 9 i H.jXjXhX|.{.Q.R.B.d.4.:.&.o.{ E T T T T T E T T E Q T T T T T T T T T E T T T R E E E E E R T R T T T E T T T T T T T T T Q T T T T T Q T I T T W ^ ^ E T T W W E T T E ! @.=.*.-.;.,.6.s.c.e.7.f.v.h.2X-X&X$X>X:X&X&X>X>X>X>X&X&X&X&X&X>X>X&X&X&X&X&X&X3X9XX", "9 9 9 8 8 9 9 8 8 9 9 8 t 9 9 9 9 q 9 9 u w 9 9 q t h E.hXjXgX}.].E.F.b.4.;.&.o.] E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T E E T T Q T T T T T T T T Q T T T T T T T E { { o.%.-.;.5.e.e.e.7.s.h.h.&X&X#X>X=X=X>X$X>X>X=X>X&X&X>X2X&X&X&X&X&X&X>X>X:X3X3X", "8 8 9 9 9 9 8 9 8 9 9 9 8 9 t 9 9 9 r 9 q q t e h G.zXxXhX}.).E.F.k.,.-.o.{ ] E T E T T T T T K T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T { } X.&.-.;.1.5.6.6.s.6.h.&X>X:X:X;X;X>X>X>X$X&X3X>X>X&X&X&X&X9X&X&X&X>X>X>X", "9 0 9 9 9 9 8 9 9 8 8 9 t 9 0 8 u 9 9 r 8 9 u G.jXjXgX}.~.U.M.6.;.&.X.{ E W E R W W T T T T T T K T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T E E | X.o.-.:.:.1.5.1.1.s.h.X>X:X&X>X>X:X3X3X>X$X&X&X&X&X&XX>X3X>X>X", "9 8 9 9 9 9 9 9 9 9 8 9 8 9 r 8 8 r t 8 p s.].xXkX|.(.R.b.7.;.%.X.] E T T E T R E W T T T T T T T T T T T Q T T T T T T T T T T T T T T T T T T T T T T T T T T Q E T T T T T T T T T T T T T T T T T T T T Q E T T T T T T T T T T T E T T T T T Q T E ] X.O.&.-.2.>.,.,.,.s.h.3X3X>X>X&X>X:X$X&X>X>X>X&X3X>X&X3X&X&X>X&X", "8 9 9 9 9 9 9 9 9 9 9 9 8 t 8 8 t 8 0 k E.zXlXyX_.T.m.6.;.o.{ { [ R T T T T K T K T T T T T T T T T T T T T T T T T T T T E Q T T T T T T T Q E T T T T T T T T T E T T T T T T T T T T T T T T T T T T T E T T T T T T T Q T T T T T T T T T R T T R W E E { { o.8.-.;.;.,.q.:.a..XX>X>X&X&X&X>X&X3X>X&X3X&X9X9X", "9 9 9 9 9 9 9 9 9 9 w 0 9 9 t t 0 u n.jXxXkX|.W.m.k.;.o.X.] T R E E T T Q T T T T T T T T T T T T T T T T T T T T T T T T E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T E T T T T T T E T T E E E W W W R E E E .O.*.8.<.2.2.;.3.h.2X3X>X>XX&X&X>X&XXX&X&X>X>X>X>X>X>X3X>X&X>X>X", "r 9 9 9 9 9 9 q 9 9 9 r 8 q r s.aXxX|.[.U.x.,.%.o.] E T E T E T Q E E E E R R T T T T T T T T T T T T T T T T T T T E T T T T T T T T Q T T T T T T T T T T T T T Q T T T T E T T T T T T Q T T T T T T T T T T Q T T T T T T T T T E E E E T T T T I T T T T R E T R [ { X.o.*.*.<.<.*.8.g.3X>X&X3X&X>X>X3X>X>X&XX>X>X", "9 q q q e 9 q q r 0 9 q y e Y.xXgX{._.F.7.;.%.{ ] Q T T T T T T T E T T T T T T T T T T T T T T T T T T T T T T T T T T T T Q T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T E T E ] O.%.&.&.2.9.*.p.2XX1X3X9X:X>X&X&X", "9 u 9 9 w w t q r r q 8 p ~.hXjX].E.l.,.&.X.[ T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T E T T T T T T T T T T T T T T E T T T T T T T T T T T T T T T T T T E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T E T T E ] { X.+.%.*.%.*.8..X>X$XX&X:X", "9 t 9 9 q w q q t r 8 p [.xX|.~.Y.d.<.o.] E T T T T T T T T T T T T T T T T E E T T T T T T T T T T T T T T T T T E Q T T T T T T T T T T T T T T T T Q T T T T T E T T T E Q T T T T T T T T T Q T T T T E E T T T T T Q T T T T T T T T T T T T T T T T T T T T T T T T T T T E { { o.o.=.9.@.i.XX1X&X:X%X3X$X>XX>X>X", "q 9 9 w w q q t r r j aXlXtXQ.F.6.-.X.] E T T T T T E T T T T T T T T T T T Q T T T Q T T T T T T T E T E T T T T T T T T T T T T T T Q T T T T T T T E T T T T T T T T T T T T T T T T T T T T T T T T T T Q T T T T T E E T T T T T T T T T T E T T T T T T T T T T T T T T T E T [ X.X.*.*.{ .$.*X&X>X$X$X>X&X>X&X&X&X", "9 9 u 9 9 a q 9 e k aXaX|.R.B.5.*.} E T T T E T E R T T T T T T T T T T T T T T T T T T T T T T T T E Q T T T T T T T T E T T T T T T E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T Q T T T T T T T T T K T T T T T T T ..[ { .o.X.} { $..X&X=X$X#X&X&X&X&X&X", "9 w 9 9 w q w e k aXzX].U.l.1.%.} ..E E T E Q T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T E T T T E T T T T T T T T T T T T T T T T T T Q E E T T T T T T T T T T T T T T T T T T T T T T E Q T T T T T T T T T T T T T T T T T T T T W T R E X.@.@.| ! $.*X&XX&X:X$X:X", "u 9 a 9 9 u w e |.aX`.R.x.;.o.] E T R E T T T T T E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T E Q T T T T T T T T T T T T T T T T T E T T T T E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T Q E T T T T T T T T T T T T T T T T T T T T E E T T E E [ } { | ! W ..X&X=X$X$X&X&X#X", "9 w 9 9 9 9 p ].aX[.'.c.;.O.] T Q Q W T T T Q T T E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T Q E T T T T T T T T Q T T T T Q T T T T T T T T T T T T T T E T E Q T T Q E T T T T T T T T T E T T T T T T T T T T T T T T T T T T Q T T T ( T ..W Q ) | @.} T T #.&X-X$X$X$X$X&X", "9 9 9 a 9 w Y.yX).E.v.>.X.] E E T T T T T T T T T T T T T T T T T T E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T E T T T T T T T T T T T T T T T T T T T E T T T T T T T T T T T T T E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T E T T T T T T T E E ] @.T T / t.,X-X$X$X$X#X", "u 9 9 t 0 f.[.].Q.v.>.o.| E T E T E T T T T T T T T T T T T T T T Q E T T T T T T T T Q E E T T T T T T T Q E E T T T T T T T T T T T T T T T T T T T T T E T T T T T T T T T T T T Q E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T E ] { E T K E y.$X-X$X#X#X", "t 9 9 u j _.{.(.n.,.o.] T E R E T T T T E E Q T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T Q T T T E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T Q T T T T T T T T T T T T T T T E E T T T T T T T T T T T T T E Q T T T T T T T T T T T T T T T T T E E E E Q Q U W g OX@X$X#X", "w u q w T.{._.B.4.&.{ [ W T T T T T T T T T T T T T T T T Q T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T E T T T T T T T T T T T T T T T T T T T T E E T T T Q T T T T T T T T T T Q T T T T T T T T T T T T T T E T T T T T T T T T T T T K T T T T K Q T T I Q T ~ U #.#X-X$X&X", "a 9 q s.).(.L.x.-.X.[ R T T T T T R T T T T T T T T T T T T T T T T T T T T Q T T T T T T T T T E E T T T T T T T T T T T T T T T Q T T T T T T T T T Q T T T T T T T T T E E T T T T T T T T T T T T E E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T Q T T T T T T T T T T T T W Q ! R K B K a.$XOXOX", "u u w W.W.R.l.1.o.E W E E E T K T E T T T T T T T T T T T T T T T T T T T T E E T T T T T T T T T Q T T T T T T T T T T T T T T T E T T T T T T T T T E T T T T T T T E T T Q T T T T T T T T T T T T T T T T T T T T T T T T T T T T T Q E E T T T T T T T T T T T T T T T T T T T T T T T T T T T T ..T K Q Z J ! %X#XOX", "9 9 6.].T.m.7.O.{ T T T T T T T E R T T T T T T T T T T T T T T T Q T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T Q T T T T T T T T T T T T T T Q T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T / E I I P H B i.*XOX", "u u P.E.I.l.;.X.T E T T T Q I T E E T T T T T T T T T Q T T T T T T T T T Q T T T T T T T T T T T T T T T T T T T Q T T T T T T T T T T T T T T T T T T T T T T T T T T T T T Q T T T T T T T E T T T T T T Q T T T T T T T R T T T T T T Q T T T T T T T Q T T T T T T T Q T T T T T T T T T T T T Q Q ..Q K ^ H C ) g &X", "p 3.E.P.M.5.o.{ E T T T T T T T Q T T T T T T T T T E E T T K T T E Q T T T E T Q ^ T T T T T T R T W E E T T E T W E E T E E T E T T T T T W E T I T T [ E ( E Q ^ T T T E T I E ..Q Q Q K Q Q E E E T W E T E T ..W E E I K ..T I T T Q E R W T Q E R [ W E T Q T T T T T T T T T T T T T T T T T T K T E T K H B C a.$X", "p l.I.m.z.-.X.E T T T T T T T T E T T T T T T T T T T E K Q E T K [ ~ ..R T R E T T T E E T T Q T T R W W T K Q T E T T E T T T K E R T T R K T T E E R L ^ K W E / T T R E T E R W R ..q.N.r.=.^ / T I W T L ..( K I T E Q E ~ R ) T T Q K E R T T T K T K T T T T T T T T T T T T T T T T T T T T T T E T T K H B c t.oX", "e m.K.b.1.&.{ T T E T T T T T T E T T T T T T T T T T E T T T T E 1.PXPXLXMXW R Q T R W R E T T Q T E E R E E R T T T T T T T K Q T T R R T T I E R I Q LXPXPXQ.Q E T R T T T W K ] E.JXPXPXKXPXJXR.T T ^ e.LXPXPX1.Q K E R k.hXT I T E E E T T T W Q K Q Q T T E E T T T T T T T T T T E Q T T T T T T R T T K H B M F *X", "8.B.n.k.;.o.E T T T T T T Q T T T T T T T T T Q T T T T T T T T R 7.PXPXPXmXU W T T W K T E T K T K T T E E R E T Q R E E E R T E T T E W Q T E R [ T I KXPXKXK.T P K T R T E R %.HXPXPXPXPXPXPXPXPXjXP W >.PXKXPXr.T E ;.mXPXMXE E K W R E T E E ^ T T K ! K T T T T T T T T T T T T T T T T T T T T K T T T E K B V b a.", "4.B.l.5.-.{ T T T T T T T T T T T T T T T T T E T T T T K R T T T 1.PXPXKXbXR R H K T T T E E E T T T T K T E W T Q T T T E R T T T [ K Q K T R R W ..^ PXPXPXU.T K K E E K E W mXPXKXPXPXZXSXPXKXPXPXY.K +.R.!./.#.K L MXPXPXZXR R K K L E Q Q T ^ / W K T E E T R T T T T T T T T T T T T T T T T T T T T T R H B v = y.", "s.M.z.1.&.{ T T T T T T T T T T T T T T T T T T T T T T E E R T K 1.KXKXKXZXV J P K K K T K R R 2.W.R.T.<.Q E W K T T { z.R.R.T.M.O.~ T Q Q T *.R.I.M.R KXPXPX!.P B B K T E K e.PXPXKXJX&.K M $.JXPXPXMXZ Q 1.N.:.] P ;.VXPXPXAX>.*.E 6.1.:.o.Q T [ q.e.6.-.R [ Q T T T T T T T T T T T T T T T T T T T T R T T K H N m ) ", "s.w.7.;.o.E T E T T T T T T T T T T T T T T T T T T T T E E T E T :.PXPXPXBXV M Z J K K T W @.mXPXLXPXPXIXmXO.~ E T n.JXPXPXPXPXPXPX'.T K T n.LXPXPXPXAXKXPXLXY.S V B K K T K (.PXPXPX'.V M c M 0.0.U z V <.PXKXLXq.B LXPXPXPXPXPXmXB JXPXPXNXK T R IXLXLXI.R ^ L Q T T T T T T E T T T T T T T T T T T T E E R K H M v F ", "f.w.4.;.O.T T T T T T T Q T T T T T T T T T T T T T T T R W E T T 1.KXKXPXvXc n M J R R ~ W VXPXKXKXPXPXKXPXFX..L O.LXPXPXPXKXKXPXPXPX&.K o.LXKXKXPXKXPXPXPXPXC.C G M H K R Q MXPXPXPX;.z M c ; b c b n N 2.PXPXPX<.J PXKXKXPXPXPXBXZ H.KXKXPXE K >.KXKXLX$.L ^ R T Q T T T T T T T T T T T T T T T T E R E R T K B c z b ", "5.4.>.-.X.T T T T T T T T T T T T T Q E T T T T T T E T T T E T R 1.PXPXPXbX; z C C L H E C.PXLXPXD.K Z.PXKXPXP.H h.ZXJXPXb.B &.PXKXPXY.U '.PXPXPXz.H }.PXKXPXM.z D M B K L R MXPXPXLX0.v b 2 z v v S n A q.PXPXLXq.A 0.NXPXPXVX&.$.A ) LXKXKXC.J _.PXPXzXP R ~ L T K T T T T T T T T T T T T T T T K T T T E ^ R H M = = ", "5.1.>.&.X.Q T R T T T T T T T T T T T T T T E T T T T T T R T T T 1.PXPXPXBXG A m Y H W K jXPXPXNXH D J NXPXPXkXU H J L X.e.!.GXPXPXPXH.N mXKXKXAXB B K PXPXPXC.z z v H H E R mXPXKXLX0.m x 1 c W v M V V 2.PXPXPXN.N C bXPXPXxXz z A S zXPXPX{.J FXPXPX6.H B J L L K T T T T T T T T T T T T Q T T T T T T R W L H c = = ", "1.;.>.&.{ T T E T T T T T T T T T T T T T T T T T T T T E R T T K 1.PXPXPXxX; z z C H R Q MXKXPXbXH C N BXPXPXmXA V U.DXIXPXIXHXKXKXPXH.N bXIXKXbXN B c PXPXPXA.- v V M Z K R U.PXKXKXB.m m v z BXJX`.c.B -.PXPXLX2.n z bXPXPXcX= = - n ,.PXKXJXO.LXPXJXJ B c B H K K K T T T T T T T T T T T E T T T K T T E R R B c = * ", ":.;.;.%.X.T E E T Q T T T T T T T T T T T T T T T T T K E E T T T 1.PXPXPXNX%.9.=.;.;.2.I sXKXPXFXM z G GXPXPXdXv H.PXKXUXZ.K H LXPXPXM.v aXPXPXFXv z Q PXPXIXC.x x A B Z Q E r.PXKXPXJX^ v z l.LXPXKXAXB :.KXPXPX*.N z BXIXPXBXx = x b v GXPXPXcXPXIXR.x N M C Z H K T K T T T Q T T T E T T T T T T T T T T W R B c = @ ", ":.-.-.%.] T R E T T T T T T T T T T T T T T T T T T E T E E T T E ,.PXKXKXPXPXPXPXLXKXPXK B.PXPXPXsX9.uXPXKXPXp.c ZXKXPXHXg.>.vXLXPXPXv.x x.PXPXPX'.*.AXPXKXPXB.- c A B P K E ~ BXPXKXPXPXxXNXPXPXPXPXx.Y q.PXPXPX-.x x xXPXPXFX+.| = n N !.KXKXPXPXPXX.v c n n Z K K K T T T T T T T T T T T T T T T T K T T W K C c = @ ", "-.-.-.o.] T T T T T T T T T T T T T T T T T T T T T T T E T E T K 5.PXPXPXPXPXPXPXPXKXPXJ U tXPXKXPXPXPXKXPX].z x ].PXPXPXPXPXPXUXKXPXpX= c FXPXKXPXPXPXUXKXKXc.= z v J P P K ~ W AXPXPXKXKXKXKXKXPXtXV H -.PXPXPX9.b = R.PXKXKXLXdXz n N ~ PXKXPXPXNX= x v c M B H T K T T T T T T T T T T T T T T Q T Q T T R K M c @ @ ", "-.%.&.o.] E E E T Q T T T T T T T T T T T T T T T T T T E T T T E ,.PXPXPXPXKXPXKXKXPXLXB V B F.JXPXLXLXJXG.= x m J mXPXKXPXGXq.yXPXPXvX= 2 #.DXPXPXPXc.mXIXPXV.z ; M V K Q P T J Q uXJXPXPXPXPXJXC.n Z n ;.LXPXPX&.; c E FXPXPXPXxXm c B V ].PXPXPXb.= ; z v V L P K T T K T Q T T T T T T T T T T T T T T T R H C z @ z ", "&.o.O.O.{ E E E T T T T T T T T T T T T T T T T T T T T E E R T R K H V M z x x = z ; N C n M n n =.y.q.x v z b x z m } 8.X.; = = * , = = ; ; x X.=.M c = z x x = b c J L K Q K R H N n .9.9.+.b c M z N A N A 1 b z c m v 2.&.=.G v C B V hXPXPXPXM : ; = A Y K K T T T T T T T T T T T T T T T T E T T T E T K n z @ v ", "o.o.o.X.{ E K T T K T T T T T T T T T T T T T T T T T T T T T T T T K H M z z = x x z z c c M N c v z z z z z z c v M c c c z z x x - x = z z c c c z z z z z z z c N V K K T K T J B M c z z z z v c v c M M c M c c c M M M c c z n kXCXfXPXPXPX].= - = z M B K K T T T T T T T T T T T T T T T T T Q T T T K B M ; O ( ", "+.X.X.X.{ E T K Q T T T T T Q T T T T T T T T T T T T T T T T T T K K H B c z z z z z c c M M M M M c c z c z c c M M M M c c z z z x z c c c c c c v c v z z z c c B J K T T T R H H B M c z c z z c c c M B M M c M N M M B M c c z W.PXPXKXPXJXT = = z c C H K E T T T T T T T T T T T T T T T T K T T T T K B z * + t.", "+.E E { } E T T T T T T T T T T T T T T T T T T T T T T Q E T T T T K K B M c c c c c c M M B B B B M M M M c M M B B V B M N M v v M c M M M B M C M M c M c c M B B H K K T T T K L J B M M c v v c M V V B V V B M B B B V V B M M -.zXvXbX^.E = = = z c B H K R T T T T T Q T T T T T T Q T T T T T T E K H M = @ O i.", "p | E E E E T E T T T T T T T T T T T T T T E T T T T T T T T T T T K K K B B B M M M Z M V B J H H B V M C B B J H K K H J B V B B B V B B H H H H J V B M B B V B K K T K T T E K R K H J V B B B B B H H K H K H J J L H K H J B B H V J J V c c z z c M H K K E T T T T T T T T T T T T E T T T T T T K K J z = 4 ; X", "p { T T E E T E T T T T T T T T T T T T T T E Q T T T T T T T T K T K T K K H H H H H H H K K K K K K K H H H H L K K K K K H H H K H H K K K L K K K H H H H H L K K T T T T T R T R K K H K H H H J H H K K T K K K K K K K K H K H H L V H N M z z c c B H K T E T T T T T T T T T T T T T T T T T T T T K M x @ 4 _ oX", "i +.K K E T T E T T T T T T T T T T T T T T T T T T T T T T T T T T K T R K T K K K K K K K K K T K K K K K K K K R E T K K K K K K K K K K T K T K K K K K K K K T K K T K T T T T E R T K K K K K K K T K T K R T K R R T T K K K H T H P Z M M c c M B J K E T T T T T T T T T T T T T T T T T T T T T T H c * O @ j.oX", "i u E K T T T T T T T T T T T T T T T T T T T T T T T T T T T T T K Q T E E R R T K T R E R T T T K T T T K K T T T T T T T K T K T K T K T E E T E E R K K T R E E K T T T E T K T E E T K K T R T K R T T T T T T E E T T T K T K T K B I B B M M B V H K K T T I T T T T T T T T T T T T T T T T T K T K M x @ O ( oXoX", "u i X.T K K K T E R T T T T T T T T T T T T E Q T T T T T T T T T T I T T E T T T T E T E T T T R T T T T T T T E R K T T T Q T T T T T T T E T T R E T T T T T E T T Q T T T T T T R T T T T T T T E T T T T K T T E K K T T T T T T R E ~ R J H B J H K R K T Q Q T T T T T T T T T T T T T T T T T T K H c * O $.oX@X", "a i p Q K L K K T R T T K T T T T T T E T T T T T T T T T T T T T T Q T T T T T T T T T T T T T T T T T T T T T T T T T T T T T Q T T T T T T T T T T T T T T T T T T T T T T T Q T T T T T E Q T T T T T T T T T T T T T T T T T T R E E R K K K K K K T K T T K T T T T T T T T T T T T T T T T E R T F M = # + D +XOX+X", "a i u +.B K K K T E T T T E E T T T Q E T T T T T T T T T T T T T T T T T T T Q T T T T T T T T T T T T T T T Q T T T T T T T T T T T T T T E T T T T T T T T T T T T T T T T T T T T T T T E T T T T T T T T T T T T T T T T T T T E T R T R K K K T T K T T T T T T T T T T T T T K T T T T T T T T H H z # % # i.OX+X+X", "s a a d Q Z H L K T T T T T T E T T T T T T T T T T T T T T T T T T T T T T T E T T T T T T T T T T T T T T T E T T T T T E T T T T T T T T T T T T T T T T T T E E Q T T T T T T T T T T T T T T T T T T T T T T T T T T Q T T T T E R T R T T T T T K T T T T T T T T T T T T T T T T T T T T T T L Z v : # 3 _ -X+XOX+X", "i i a i r P V Y L P R T T R R E R E T T T T T T T T T T T T T T T T T T T T T E T T T T T T T T T T T T T T T T T T T T T Q T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T K T T T T T T T T K T T T T T T T T T T T T T T T K J n : + 3 $ #X+XOX+X+X", "i i f a p +.B J V P T T E E R T T T T T T T T T T T T T T E Q T T T T T T T T T T T T T T T Q T T T T T T T T T T T T T T T T T T T T T T T T T T T T Q T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T E T T T T T K H M m o O % j.#X+X#XOXOX", "s i a a p p ! M M B H K R T E T T T T T T T T T T T T T T E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T E T T T T T T T T T Q T T T T T T T T T T T T T T T T T T R E T E E T E T T T T T T T T T E T T T K K H M ; % o o #.$X+X+XOXOX#X", "a i i i s a i Q B A B B K R T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T Q T T T T T T Q E T T T T T T T T Q E T T T T T T T T T T T T T T E E T T T T T T T T T T T T E T E T T T T T T T T T T T T T T T E E Q T T T T T T T T E E E R T E E T T T T T T T T T T T T T T K H N z $ @ $ F $X*X@XOXOXOX$X", "a i i j a a s e Z A C B H K K T K T T T T T T T T T T T T T T T T T T T T T T T T T T T T E T T T T T T T T E T T T T T T T T E T T T T T T T T T T T T T T T Q T T T T T T T T T T T T T T Q T T T T T T T T T T T T T T T T T T T T T T T T T E E E T T T R E R E T T T T T T T T E T T K H M z @ + 5 Z *XOX$Xg @XOXOXOX", "s s a a s s u d e Z v N B B H T T T T T T Q T T E Q T T T T Q T T T T T T E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T E T T E T T T T T T T T T T T E E T T T T T T T T T T T T T E T T T T T T T T T T T T T T T T T T T T T T T K T T K T T T E E E E R E T T K P B c 2 $ + . S .X@X+X$X+X$X+X$X$X", "s s a a s s i i i e B c z B H H K K T T T T T T T T T T T T T T T T T T T Q E T E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T Q T T T T T T T T T T T T T T T Q T T T T T T T T T T T T T Q T E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T R T W E E T R L L v ; # + $ S g #XOXOXoX$XOX*X$X#X", "s s p s i i a u u i w C z v N B B T K T T T K T T T T T T T T K T T T T T T T T T T T T T T T T T T T T T T T T T T T E T T T T E Q T T T T T T T Q T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T E T T T T T T T T T T E T T T T T T T T T T T T T T R E R E K K B U v = % 4 < ( g &X$XoX#X#X$X@X*X$X$X", "s s i s i a s a u u a e P z z N H B L K R E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T E T T T T T T T T T T T T T T E E T T T T T T Q T T T T T T T T T T T T T T T T T T T T T T T T E Q T T T T T T T T Q E T T T T T T T T T Q T T T T T T T K K B c 2 * & o 5 ( *X@XOX$X#X#XoXOXOX$XOX#X", "i i i i s a u f s t u i i Q z v v N B H K T T T T T T T T T K T T T T T T T T T T T T T T T T T T T E T T T T T T T Q T T T T T T T T T T T T T T T T T T T T T E E T T T T T T T T T Q T T T T E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T K K B c ; O o < O t.&X=XOX>X;X$X$XOX$X*X$X$XOX", "s i d i s s a r u u i a q s | c z = c M B H K T E T T T T T T T T T T T T T T T T T Q E T T T T T Q E T T T T T T T T T T T T T T T T T T E T T T T T T T T T T T T T T T T T T T T E E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T K L H V z * X @ X ; i.6X*X&X:X#X#X&XOX$X$X#X$X$X#X", "i s d i s s a s a u r a a u p X.n = ; z c M B H K K T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T E T T T T T T E T T T E T T T T T T T T T T T T T T T T T T T T T K R K H V v = @ O O X ( g.&X9X=X%X*X&X-X&X&X$X$X#X$XOX$X", "s s u a s a i a p i s u p p u a p ( * = = c M B H K T K T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T Q T T T T T T T T T T Q T T T T T T T T T T T T T T T T T T T T T T K B N z * O O O $ t.&X&X&X:X&X1X>X-X-X&X$X&X$X$X$X$X$X", "i i i i a s i i u a u u u u u u i w #.C * = v v V V H K K R E T T T E W T R E E E R T T T T E T T E T T T T T T T T T T E T T T T T T T T E T T T T T T T T T E T T T T T Q T T T T T T T T E Q T T T T T T T T T T E W W T T T T T T E E E T E T T T W R T K K P Z D b : + % & : M g.&X&X&X&X&X>X&X&X&X>X&X:X*X&X*X$X$X$X", "i i i a s a u u u d u u u a u u u u p p Q ; * - = N M B H H K R E R T T T T T T T T T R T T T K T T T T T T T T T T T T Q T T T T T T T Q E T T T T T T T T Q E T T T T E E T T T T T T T T E T T T T T T T T T T T T T T T T T T T T K T T T Q T T W T Q ~ U H M - m # O O X ; y.&X%X&X2X&X:X&X&X&X&X>X&X&X&X&X*X$X$X$X$X", "s i u u a u i u a u u u u u u u u u a w p $.B = * * z v M B H K K R K T T T T T T K T E E T E T E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T E Q T T T T T T T E T T T T T T T T T T T T T T T Q T T K Q Q T K I L U J C v - * 4 % O < ( g.1X>X&X>X>X&X&X&X&X&X&X&X&X&X&X&X:X&X$X&X$X", "s s s i i i i s i i i u i u u u u a a f a w p #.c $ * * z v M V H K K T T K T T T T T E E T T T T T T T T T T T T T T T T T T T T T T T T T T T E T T T T T T T T T T T T T T T T E T T T T T T T T T T Q E T T T T T T T T T R E R E T T T T K K K L Z C z * @ O . @ < _ p.1X>X&X&X&X&X&X&X&X&X&X&X&X&X&X&X&X&X&X&X-X&X$X", "i s i s s i i s i i i a a i i u u i i a a a u p p #.b ; @ * - z N B V H L K K T T E T T T T T T T T T T T T E Q T T T Q T T T T T T T T T T T T E Q T T T T T T Q T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T E E T T E E R K H H B D z > % + < . + D i.&XX>X;X&X$X$X&X&X&X&X&X&X&X&X&X;X", "s s s s s s u i s i u u i u i i i a d s a f a a i s s | c * @ - - - v N B J H K R R T R T K T T T T T T T T T T T T T E T T T T T T T T T T T T T T T T T T T T E E T T T T T T T T T T T T T T T T T T T T T T T T Q T T T T T T T E R K H J M c = $ # % 3 4 % C j.9X2X4X&X%X2X%X;X&X>X&X&X;X$X&X&X&X&X&X&X&X&X$X&X:X&X;X", "i i s s s s i i u i s u u a p a i u u i i u a a u s a f i .M * $ * : = c c M M J H K K K T T T T T T T T T T T T T T T T T T T E E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T H K J B M c z * @ O + $ + ( p.3X&X&X1X>XX$X:X&X&X&X>X&X$X&X&X&X&X&X&X&X>X:X:X$X;X", "s s i s i s s i i s a s s u u a u a d a i s s s a a p i u a i .P $ $ @ $ * = z c M H V H K K K K T T T T T T T T T T T T T T T T Q T T T T T T T T T T T T T T T T T T T T T T T Q T T T T T Q T T T Q T T T Q T T T T K K H B B M c z = $ O O O O 4 $ ` g.,X3X%X3X6X%X>XX$X$X;X", "i i s s s s i u i s u a u a i u u i i i i i i i i i d i i u i u i $.T z O & # * * = z c M M B B H H K T T T T T T T T T T Q T T T T T T T T T E E K E E T E R E E T I Q T Q T T E E ^ [ W [ R W W E / W T T T K K K L U J B M z = = > & + O . O . F y.h.3X:X>X>X&X9X&X&X3X>X>X>X&X&X&X>X&X*X$X&X&X&X&X&X&X&X&X&X&X&X&X$X;X", "i i d i i s s s i i u a i i i i i a u i s i u s a i i i i u u u i w t i $.P * O @ @ * * = = z z c M V V J H H L K R R W W R W W W [ T T T T R E T T R T E E T T T R E R R E R E W W I Q Q I I I I I K K K K K L V N c n z $ $ @ > O O O o 2 t.p.&X*X2X>X>X>X>X9X&X3X3X:X>X>X>X&X&X&X&X&X&X&X&X&X&X&X&X&X&X&X&X&X&X>X:X:X", "s s s s i s i i d u d u i u d u u u s s i i i a i i i i s i u u u u u t u u u .Z $ & O O @ * = = = = z c c M M B H B P H I I K P K T T K K T T T T T T T T T T T T ^ ^ R R T E K K R K L K R K J H Z B M c z x x m = @ O O O $ O o S ` p.&X-X&X&X3X:X$X>X>X;X6X3X>X&X>X>X>X>X:X&X&X&X&X&X&X&X&X&X&X&X&X&X&XX>X&X&X>X", "i s s i i s i i u u u u a u u u i i i i i i i i i i i i i i u u u u p p r t t r 9 w #.P b O O O @ : : * = = ; z z v v v N N N B V B H J H H K H K H K K H K K K H K H K P P Z Z C B M B B v c v v 2 = = , , > @ . O % % % $ D u.p.2X%X2X>X&X&X&X$X$X;X>X>X;X:X%X>X>X&X&X&X&X&X>X&X>X>X&X>X&X&X&X&X&X&X&X3X&X>X>X&X>X>X", "d d i s s i i s d d d u u d u d u a i a s i i i i i s i s u u u p u u u u r u t r r w u 9 0 ! Z = O O O O O @ # @ @ - - = - x z z z z z v z c c c v M v M c N c c M n n b z z z z z x x x - : > > > % % + O O % O S ` i.%X3X&X=X=X&X&X>X:X$X>X-X;X&X;X;X>X&X&X&X>X&X&X&X&X&X>X&X&X&X&X>X&X&X&X&X%X&X:X>X>X>X>X>X>X:X", "i i i s s s i i u p u u u u u u i i i i i i i i i a i d i u u u r i t a u r r u u q u 9 w w e 8 y y Q B n = $ O O O $ . O $ O $ $ $ * @ * * * - - - * * = * * * * * * = * - - , > > O $ O . O < . < O + + X @ S _ u.j.XX3X>X2X3X2X:XX;X$X;X$X&X-X>X>X&XX>X&X&X&X:X&X;X&X&X&X&X&X&X&X&X&X&X&X3XX>X>X>X", "i u i d u p u d u d u d u d u u i i i a i i a i i s i i i u u u u u s a a w u u q t 9 q q q a q 9 9 9 9 9 w 0 ! I P x = * # + + # + @ O O O O @ # + O + O + + + + & & & + # O O $ 4 % & # O . n P ) i.p.2X7X6X6X:X4X>X>XX3X3X:X>X>X&X&XX>X&X>X&X&X$X&X$X&X&X&X&X&X&X&X3X&X&X3X>X3X>X3X:XX>X3X3X&X&X>X1X>X$X>X&X:X&X&X&X=X$X&X=X>X$X&X&X&X;X:X$X&X&X&X&X&X&X&X&X&X&X9XX3X3X:X:XX" }; micropolis-activity/images/tiles-139.xpm0000664000076400007640000001021510724145723020457 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "67 57 5 1", " c black", ". c #585858585858", "X c blue", "o c yellow", "O c #DFDFDFDFDFDF", /* pixels */ " ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " O OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO . ", " OO OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO .. ", " OOO ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXoooXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoooXXXXXXXXX ... ", " OOO XXXXXXXXXoooXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoooXXXXXXXXX ... ", " OOO XXXXXXXXXoooXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoooXXXXXXXXX ... ", " OOO XXXXXXXXXoooXXXXXXXXoooooXXXXooooooXXXXXXoooXoooXXXXXXXXX ... ", " OOO XXXXXXXXXoooXXXXXXXoooooooXXXoooooooXXXXooooooooXXXXXXXXX ... ", " OOO XXXXXXXXXoooXXXXXXooooXooooXXoXXXoooXXXooooXXoooXXXXXXXXX ... ", " OOO XXXXXXXXXoooXXXXXXoooXXXoooXXXooooooXXXoooXXXoooXXXXXXXXX ... ", " OOO XXXXXXXXXoooXXXXXXoooXXXoooXooooooooXXXoooXXXoooXXXXXXXXX ... ", " OOO XXXXXXXXXoooXXXXXXoooXXXoooXoooXXoooXXXoooXXXoooXXXXXXXXX ... ", " OOO XXXXXXXXXoooXXXXXXooooXooooXoooXXoooXXXoooXXooooXXXXXXXXX ... ", " OOO XXXXXXXXXooooooooXXoooooooXXoooooooooXXXooooooooXXXXXXXXX ... ", " OOO XXXXXXXXXooooooooXXXoooooXXXXoooXXoooXXXXoooXoooXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXoooooooXoooXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXooooooooXoooXXXXXooXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXooooXXXXoXXXXXXXXoooXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXooooXXXXXXXoooXXXoooooooooXXXXXooXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXoooXXXXXXXXoooXXXooooooXoooXXXooXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXoooXXXXXXXXoooXXXXoooXXXoooXXXooXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXoooXXXXXXXXoooXXXXoooXXXooooXooXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXoooXXXXXXXXoooXXXXoooXXXXoooXooXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXooooXXXXXXXoooXXXXoooXXXXoooooXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXooooXXXXoXoooXXXXoooXXXXXooooXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXooooooooXoooXXXXoooooXXXoooXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXooooooXXoooXXXXXooooXXXoooXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoooXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoooXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ... ", " OOO ... ", " OO ........................................................... .. ", " O ............................................................. . ", " ............................................................... ", " " }; micropolis-activity/images/tiles-145.xpm0000664000076400007640000001033410724145723020456 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "67 57 8 1", " c black", ". c #00003F3F0000", "X c #3F3F3F3F3F3F", "o c #585858585858", "O c #3F3F3F3FFFFF", "+ c #0000BFBF0000", "@ c #BFBF7F7F3F3F", "# c #DFDFDFDFDFDF", /* pixels */ " ", " ############################################################### ", " # ############################################################# o ", " ## ########################################################### oo ", " ### ooo ", " ### OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ooo ", " ### OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ooo ", " ### OOOOOOOOOOOOOOOOOO+++++OOOOO XXXOOOOOOOOOOOOOOOOOOOOOOOOO ooo ", " ### OOOOOOOOOOOOOO++++++++@++@@XX X X OOOOOOOOOOOOOOOOOOOOOOO ooo ", " ### OOOOOOOOOOOOO++++@+@+@+@+++@ XOOOOOOOOOO ooo ", " ### OOOOOOOOOOOOO++++@+X+++@@@+@ XX XX XX X OOOOOOOOOO ooo ", " ### OOOOOOOOOO+++++@+++XX++++++@ @@ XX X X XOOOOOOOO ooo ", " ### OOOOOOOOOO++++++++++++++++@@ @X XXX X X XOOOOOOOO ooo ", " ### OOOOOOOO+++++++++++++++X+++@ OOOOOOOO ooo ", " ### OOOOOOO++++@@@@ @@@@@@@@@X@@ X X X XOOOOOOO ooo ", " ### OOOOO++++++++@ XXOOOOOO ooo ", " ### OOOOO@@@@@@@@@@ @X X X X X X OOO ooo ", " ### OOOOO X X XX @@ XX X XX X XOOOO ooo ", " ### OOO@ @@@ X X XX XX X X XX X X X X XOOOO ooo ", " ### OOO@ X XOOOO ooo ", " ### OOO@ XXX X@X XX XX X XX XX @@ X X X@ XX XOOOO ooo ", " ### OOO@ XXX XXX XX XX XXXXX XX @@ X X XX X X XOOOO ooo ", " ### OOO@ @ X X X XOOOO ooo ", " ### OOO@ +++++++++++++++ X XX @@X@@ X XX XX X X XOOOO ooo ", " ### OOO@ +++++++++++++++ @ XX XX @X XOOOO ooo ", " ### OO@@ +++++++++++++++ X @@@@++@@ X X OOOO ooo ", " ### OO@@ +++++++++++++++ XX @@++++@@@@@@@@@ X XX XOOOO ooo ", " ### OO@@ @@@@+@++@@XXX@ X X@ XOOOO ooo ", " ### OOO@ @XX XX XX XX XX @ ++...++@++@@XX X XOOOO ooo ", " ### OOO@ @XX XX XX XX X @@@+@@@+.++@@@@@. XX X X X OOOO ooo ", " ### OOO@ X X @@@..+@++@+@++@@@ XX X X X OOO ooo ", " ### OOO@ XXX XX @@ XX X@ @@@+++@@++@@++@@@ XX X X XXOOO ooo ", " ### OOO@ XX@ X X X X@ @@.++@@@@++@++@X@ XX OOO ooo ", " ### OOO@ @+++++@.+@+@@+@@@ X X XX XOOO ooo ", " ### OOO@ XXX XX X X X @+++@++++@++++@@X X X X XX XXOOO ooo ", " ### OOO@ XXX X X X XX +@@@@.@@@+@@++XX X X X X XXOOOO ooo ", " ### OO@@ X @+@+@@@@@@@.@+@@@ X XXOOOOO ooo ", " ### OO@@ @@X XX XX XX @++@+@@@.@+@+@@@@ X X @ XOOOOO ooo ", " ### OO@@ @@X @@ XX XX X@ +++ ++++++@@@@ X XXX OOO ooo ", " ### OO@@ @+++@@++@@@@@@@@@ XX X X XX OOO ooo ", " ### OOO@ X@X XX XX @X XX @++@@@@@@@@@@@@@@ XX X XX @@@ OOO ooo ", " ### OOO@ +++@ X X XX @@@ OOO ooo ", " ### OOO.@@@@ @@ X@ @XXX@@+++@ XXX XXX XXX X XX X XX @@ OOO ooo ", " ### OOO@@OO@@@@@@@ @XX@@+++@@ X XXX @@ OOO ooo ", " ### OOO.@O@O@@@X@@@@@@@@++X+@ @X XX XXX XX X @OOOOOO ooo ", " ### OOO@@OOOO@@@X@@.@@@@@@++@ @@X XXX XX X @ @@@ @OOOOOO ooo ", " ### OO..@OOOOO@@@@@@@@@@@@@@@ @@@@@ @OOOOOO ooo ", " ### OO.@@@OOOO.@@@@.@@@@@@@@@ @@@ @ XXX XXXXX @@@@@ @@OOOOO ooo ", " ### OOO@@@OOOOO@@@@.@@@@@@@@@ @@@ @@@ XXX XXXXX @@@@@ @@OOOOO ooo ", " ### OOO@@@OOOOO@@@@@@@@@.@@@@@@ @@@@@ @@OOOOO ooo ", " ### OOO@@@@@OOO.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@.OOO ooo ", " ### OO.@@@@@@@@@@@@@@.@@.@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@OOO ooo ", " ### ooo ", " ## ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo oo ", " # ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo o ", " ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo ", " " }; micropolis-activity/images/stadium.xpm0000664000076400007640000001077710724145723020510 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "64 64 9 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #3F3F3F", "c c #007F00", "d c #997E4C", "e c #00E600", "f c #FFFFFF", "g c #CC7E66", "h c #BFBFBF", /* pixels */ "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", "cgggggggggggggegaaaaagegggegggeggggggghhhhhhhhhggggggggggggggggc", "cgggggeeggggggggaaaaagceggggggeggggghhhbbbbbbbhhhggggggggggggggc", "cggggccgggggggggaaaaaggggggggggggghhbbbbbbbbbbbbbhhggggggggggggc", "cgggggggggggeggeaaaaagggggggegeghhbbbbbbbbbbbbbbbgbhhggggggggggc", "cgggaaaaaaaaaaaaaaaaaggggggccgehbbbbbb````````bbbbbbbhgggggggggc", "cgegaaaaaaaaaaaaaaaaaggggggggghbbbbb``bbbbbbbb``bbbbbbhgggeggggc", "cgegaaaaaaaaaaaaaaaaaggeggegghbbbb``bbbbbbbbbbbb``bbbbbhgggggggc", "aaaaaaaaaaaaaaaaaaaaaggggcgghbbbb`bbbb```````bbbbb``bbbhgggggggc", "aaaaaaaaaaaaaaaaaaaaaggggggh`bbb`bbb``bbbbbbb``bbbb``bbbhggggggc", "aaaaaaaabaabaabaabaaagggggghbbb`bb``bbbbbbbbbbb``bbb`bbbhggggegc", "aaaaaaaaaaaaaaaaaaaaagggggh`bb````bbbb``````bbbbb`bb``bbbhgggggc", "aaaaaaaaaaaaaaaaaaaaagggghh`b```abb```bbbbbb``bbbb`````bbhgggggc", "cgggaaaaaaaaaaaaaaaaagegghhbb`b`bb``bbbbbbbbbb``bbb`a``bbhgggggc", "cgggaaaaaaaaaaaaaaaaaggghfhb`bb`b`bb`b`b`b`b`bbb`bb``bb`bbhggggc", "cgggaaaaaaaaaaaaaaaaaggghfhb`b`b`bbbbbbbbbbbbbbbb`bb`bb`bbhggggc", "cgggaaaaaaaaaaaaaaaaaggbffhb`b`b```````````````````b`bb`bbhggggc", "cgggaaaabaabaabaabaaagbbffhbbb``baabbbbbbbbbbbbbbb`b`bbb`bhggggc", "cgggaaaaaaaaaaaaaaaaa`bbffhbb`b`bbbbbbbbbbbbbbbbbb`bb`bb`bhggggc", "cgggaaaaaaaaaaaaaaaaaabfffhbb``b`````````````````bb`b`bb`bhdgggc", "cgegaaaaaaaaaaaaaaaaa`ffffhbb``b`cccccccchchcccc`bb`b`bb`bhdgggc", "cgcgaaaaaaaaaaaaaaaaafhfffhbb``b`ccccccchhhccccc`bb`b`bb`bhdgggc", "cgggaaaaaaaaaaaaaaaaafffffhbb``b`ccccccchccccccc`bb`b`bb`bhdgggc", "cgggaaaaaaaaaaaaaaaaafhfhfhbb``b`ceeeeeeeeeeeeec`bb`b`bb`bhdgggc", "cgggaaaabaabaabaabaaafhfffhbb``b`ceeeeeeeeeeeeec`bb`b`bb`bhdgggc", "cgggaaaaaaaaaaaaaaaaafffhhhbb``b`ceecceeeeecceec`bb`b`bb`bhdgggc", "cgggaaaaaaaaaaaaaaaaafhbhhhbb``a`ceeeeeeeeeeeeec`bb`b`bb`bhdeggc", "cgggaaaaaaaaaaaaaaaaafbbhfhbb``b`ceeeeeeeeeeeeec`ab`b`bb`bhdgggc", "cgggaaaaaaaaaaaaaaaaa`bbhhhbb``b`ceecceeeeecceec`bb`b`bb`bhdgggc", "cgggaaaaaaaaaaaaaaaaaabhhhhbb``b`ceeeeeeeeeeeeec`bb`b`bb`bhdgggc", "cgggaaaaaaaaaaaaaaaaa`hfhhhbb``a`ceeeeeeeeeeeeec`bb`b`bb`bhdgggc", "cgggaaaabaabaabaabaaaghhhhhbb``b`ccececececececc`ab`b`bb`bhdgggc", "cgggaaaaaaaaaaaaaaaaaghhhhhbb``b`ceeeeeeeeeeeeec`bb`b`bb`bhdgggc", "cgggaaaaaaaaaaaaaaaaaghhhhhbb``b`ceeeeeeeeeeeeec`bb`b`bb`bhdgggc", "cgggaaaaaaaaaaaaaaaaaghhhhhbb``a`ceecceeeeecceec`bb`b`bb`bhdgggc", "cgegaaaaaaaaaaaaaaaaaghhhhhbb``b`ceeeeeeeeeeeeec`ab`b`bb`bhdggec", "cgggaaaaaaaaaaaaaaaaaghbhhhbb``b`ceeeeeeeeeeeeec`bb`b`bb`bhdgggc", "cgggaaaaaaaaaaaaaaaaagbbhhhbb``b`ceecceeeeecceec`bb`b`bb`bhdgggc", "cgggaaaabaabaabaabaaa`bbhhhbb``b`ceeeeeeeeeeeeec`bb`b`bb`bhdgggc", "cgggaaaaaaaaaaaaaaaaaabhhhhbb``b`ceeeeeeeeeeeeec`bb`b`bb`bhdgggc", "cgggaaaaaaaaaaaaaaaaa`hhhhhbb``b`cccccccchchcccc`bb`b`bb`bhdgggc", "cgggaaaaaaaaaaaaaaaaaghhhhhbb``b`ccccccchhhccccc`bb`b`bb`bhdgggc", "cgggaaaaaaaaaaaaaaaaaghhhhhbb`b``ccccccchccccccc`b`bb`bb`bhdgggc", "cgggaaaaaaaaaaaaaaaaaghhhhhbbb```````````````````b`b`bbb`bhdgggc", "cgggaaaaaaaaaaaaaaaaaghhhhhb`b``bbbbbbbbbbbbbbbbbb`b`bbb`bhdeggc", "cgggaaaabaabaabaabaaaghhhhha`bbb```````````````````b`bb`b`hdgggc", "cgggaaaaaaaaaaaaaaaaaghhhhaa`bbbb`bbbbbbbbbbbbbb``b`bbb`bhddgggc", "cgggaaaaaaaaaaaaaaaaaghhhaaaf``bbb``b`b`b`b`b```bbb``b`bbhddgggc", "aaaaaaaaaaaaaaaaaaaaagahaaaaf````bb````bbbbb```bb``a```bhdddgggc", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaf``b``bbb``````bbbb``b```bbhdddgggc", "aaaaaaaaaaaaaaaaaaaaagaaa`aaahbbbb``bbbbbbbbbbb``bbb`bbhddddgggc", "aaaaaaaaaaaaaaaaaaaaag`aaaaaah```bbb``bbbbbbb``bbbb``bhdddcdgggc", "aaaaaaaabaabaabaabaaaggaaa`aaah```bbbb```````bbbbb``bhbddddgeggc", "cggggaaaaaaaaaaaaaaaagggaaaaabah`b``bbbbbbbbbbbb``bbhbbdcddggggc", "cgggegaaaaaaaaaaaaaaagggaaaabaaahhbb``bbbbbbbb``bbbhbbddddgggggc", "cgggggeaaaaaaaaaaaaaaggggaabaaabaahhbb````````bbbhhbbdddddgggegc", "cgggggggaaaaaaaaaaaaaggggeaaaabaaaaahhbbbbbbbbbhhfbddddddggggggc", "cgccggggggegaaaaaagggegggeeaabaaaabaaahhhhhhhhhabbbddcddgggggggc", "cgggeggggeegaaaaaagggggggceeaaaaabaaabaabbbbbbbbbbdddddggggggggc", "cgggeeggggggaaaaaaggggggggeeeaaabaaabaababbb`bbbddddddgggggggggc", "cggccgggggggaaaaaaggggggggcgcgdaaaabaabababbbbbddddcdggggggggggc", "cggeggggggggaaaaaaggggggggggggdgbabaabababbbbdddccddeeggeegggggc", "cgggggggggggaaaaaageggggggggeggdgbbbbbbbbbbdddddddddegggeggggggc", "ccccccccccccaaaaaacccccccccccccccccccccccccccccccccccccccccccccc" }; micropolis-activity/images/tiles-28.xpm0000664000076400007640000000420510724145723020376 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "34 50 10 1", " c black", ". c #00007F7F0000", "X c #7F7F7F7F0000", "o c #5D5D5D5D5D5D", "O c #00000000AFAF", "+ c blue", "@ c #4F4F4F4FFFFF", "# c green", "$ c gray75", "% c gray100", /* pixels */ "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@o", "$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@o", "$@@oooooooooooooooooooooooooooo@@o", "$@@o $@@o", "$@@o % % %XXXXXXXXXXXXX% % % $@@o", "$@@o % % XXXXXXXXXXXXXX% % % $@@o", "$@@o % % %XXooooooooooooo% % $@@o", "$@@o % % XXo o o % % $@@o", "$@@o % % %XXo oOOOOOOO % $@@o", "$@@o % % XXoooooooO+++++++ % $@@o", "$@@o % % %XXo oO+OO+OO+% $@@o", "$@@o % % XXo oO+OO+OO+ % $@@o", "$@@o % % %XXoooooooO+++++++% $@@o", "$@@o % % XXo oO+OO+OO+ % $@@o", "$@@o % .......... oO+OO+OO+% $@@o", "$@@o %.##########oO+++++++ % $@@o", "$@@o % .#oo#oo#oo#oO+OO+OO+% $@@o", "$@@o %.#oo#oo#oo#oO+OO+OO+ % $@@o", "$@@o % .##########oO+++++++% $@@o", "$@@o %.#oo#oo#oo#oO+OO+OO+ % $@@o", "$@@o @.#oo#oo#oo#oO+OO+OO+@@ $@@o", "$@@o @.##########oO+++++++ @ $@@o", "$@@o @.#oo#oo#oo#oO+OO+OO+ @ $@@o", "$@@o @.#oo#oo#oo#%O+OO+OO+ @ $@@o", "$@@o @%########## %+++++++ @ $@@o", "$@@o @ % % % % % % % % % % @ $@@o", "$@@o @% % % % @@@@@ % % % @ $@@o", "$@@o @ % % % @@ @@ % % % @ $@@o", "$@@o @% % % @@ % @@ % % @ $@@o", "$@@o @ % % @@ % % % % % @ $@@o", "$@@o @% % % @@% % % % % % @ $@@o", "$@@o @ % % @@ % % % % % % @ $@@o", "$@@o @% % % @@% % % % % % @ $@@o", "$@@o @ % % @@ % % % % % % @ $@@o", "$@@o @% % % @@% % %@@ % % @ $@@o", "$@@o @ % % @@% %@@ % % % @ $@@o", "$@@o @% % % @@@@@ % % % @ $@@o", "$@@o @ % % % % % % % @ $@@o", "$@@o @% % % % % % % % % % @ $@@o", "$@@o @ % % % % % % % % % % @ $@@o", "$@@o @% % % % % % % % % % @ $@@o", "$@@o @ % % % % % % % % % % @ $@@o", "$@@o @@@@@@@@@@@@@@@@@@@@@@@ $@@o", "$@@o $@@o", "$@@o $@@o", "$@@o$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o", "$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@o", "$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@o", "$ooooooooooooooooooooooooooooooooo" }; micropolis-activity/images/obj2-0.xpm0000664000076400007640000000260110724145723020016 0ustar simcitysimcity/* XPM */ static char * obj2_0_xpm[] = { "32 32 10 1", " c None", ". c #FFFF00000000", "X c #7F7F7F7F7F7F", "o c #BFBFBFBFBFBF", "O c #000000000000", "+ c #3F3F3F3F3F3F", "@ c #00000000E6E6", "# c #FFFFFFFFFFFF", "$ c #66666666E6E6", "% c #FFFFFFFF0000", " ...... ", " ... ... ", " . . ", " . . ", " . . ", " . XX . ", " . oOOX . ", " . XO+OO+ . ", " . o oO@@O+ o . ", " . X oO+OO+ X . ", " . X+##ooXX+X . ", " . X ##++XX X . ", " . X ##++XX X . ", " . X X#ooX+ X . ", " . X+##ooXX+X . ", " . X ##ooXX X . ", " . #ooX . ", " . #ooX . ", " . $#o$ . ", " . #o . ", " . #o . ", " . Xo . ", " ... o ... ", " ...... ", " o ", " % o ", " X oo ", " X oXo ", " %XoXo ", " X ", " X ", " % "}; micropolis-activity/images/tiles-135.xpm0000664000076400007640000001033410724145723020455 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "67 57 8 1", " c black", ". c #00003F3F0000", "X c #3F3F3F3F3F3F", "o c #585858585858", "O c #3F3F3F3FFFFF", "+ c #0000BFBF0000", "@ c #BFBF7F7F3F3F", "# c #DFDFDFDFDFDF", /* pixels */ " ", " ############################################################### ", " # ############################################################# o ", " ## ########################################################### oo ", " ### ooo ", " ### @@@@@@@@@@@@@@@@@@.@OOO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ooo ", " ### @@@@@@@@@@@@.@@@@@@@OOO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ooo ", " ### @@.@@@@@@@@@@@@@@@@@OOO@@@@@.@@@@@@@.@@@@@@@@@@.@@@@@@@@@ ooo ", " ### @@@@@++++@@@@++@@@@@OOO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ooo ", " ### @@@@@++@.@@@+++@@@@@OOO@@@@@@+++@@@@@@@@@@@@@@@@@@@@@@@@@ ooo ", " ### @@@@@@@@@@@++@+@@@@ OOOO@@@@@+++@@@@@@@@@@@@@@@@.@@@@@@@@ ooo ", " ### @@@@@+@@@@@@@@@@@@@@OOOO@@@@@@@@@@@@@@@@@@@.@@@@@@@@@@@@@ ooo ", " ### @@@@@@@@@@@@@@@@@@@@@OOOO @@@@@@@@@@@@@@@@@@@@@@@@@.@@@@@ ooo ", " ### @@.@@@@@@@@@@@@@@@@@@@ OOOO@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@ ooo ", " ### @@@@@++@@@@@@@@.@+@@@@@OOOOO@@@@@@@@++++@@@@@@@@@@@@@@@@@ ooo ", " ### @@@@@@++++++@@@@+@@@@@@@OOOO@@@@@@@+++++@@@@@@@@@@@@@@@O@ ooo ", " ### @@@@@@.@+@@@+@@@.@+++@@@@OOOO@@@@@@@@+++@@@@@@@@@@@@@OOO@ ooo ", " ### @@@@@@@@@@@++@@@@@++++@@@OOOO@@@@@@@@@@@@@@@@@@@@@@OOO@@@ ooo ", " ### @@@@@@@@@@@@@@@@@@@@@+@@@OOOOO@@@@@@@@@@@@@@OOOOOOOO@@@@@ ooo ", " ### @@+@@@@@@+@@@@@@@@@@@@OOOOOOOOO@@@@@@@OOOOOOO@@@OOO@@@@@@ ooo ", " ### @@@@@@++++@@@@@@OOO@@OOOOOOOOOOO@ @@@OO@@@@@@+@@@@OO@@@@@ ooo ", " ### @@.+++OOOOOOOOOOOOOOOOOOOOO@@@@OOOOOOO@@@@@@@++@@@@O@@@@@ ooo ", " ### @@@@@OO@@OOOOOOOOOOOOOOOO @@@@@@@@@@@@@@@@@@@@+++@@@O@@@@ ooo ", " ### @@@OOO@@@O OOOOOOOOO@@@@@@@@@ @@@@@@@@@@@@@.@@@+@@@OO@@@ ooo ", " ### @@OO@@@@OOOOO@@@@@@@@@@@@@@ XX @ XXX++@@+++@@@@@@@@@@O@@@ ooo ", " ### @OO@@@@@OOOO@@@@@@@@@@ @@@@ XX @ XXX@@@@++++@@@@@@@@@O@@@ ooo ", " ### OO@@@@@OOOOO@@@@@@@@ XX X@@XX@@@@@@@@@@@@@@@+@@@@@ ooo ", " ### O@@@@@@OOOO@@@@@@@@@ X XXXX XX X XX @@@@@@@@@.@@@@@+@@.@@ ooo ", " ### @@@@@@@OOOO@@@@+@@@@ X XXX X @@@+@@@@@@@++@@@@@@ ooo ", " ### @+@@@@@OOO@@++++@@@ X XXXXX XXXXX@ XX@@@@@+@@++@@+@+@@@@ ooo ", " ### @++@@@OOOO@@+@++@@@ X X @ XX@@@@@++@@@@@+@+@@@@ ooo ", " ### +++++@OOOO@@+++++@@@@ XX XX X @@@+@.@@@+.@+@@@ ooo ", " ### @@@++@OOOO@@@@@+@@@@@ XX XX XX XX @ @XX@@@@@@@@@@@@+@@@@@ ooo ", " ### @@@@@@OOOOO@@@@@@@@@@ X XX XX XX @@@XX@@@+@@+@@@@@@++@@@ ooo ", " ### @@@@@@@OOOO@@@@@@@@@@@ XX XX @@@@@@@@+++@@@@@@@++@@@ ooo ", " ### @@@@@@@OOOOO@@@@@@@@@@@@@@@@@@@@@@@@OOO@@@@@++@@@@@@+++@@ ooo ", " ### @@@@@@@@OOOOO@@@@@@@@@@@@ @ OOOOOOOOO.OO@@@@@@@@@@@@@@@@@ ooo ", " ### @@@@.@@@@OOOOOOO @@@ OOOOOOOOOOOOO@@@@@OOO@@@@@@ @@@@.@@@ ooo ", " ### @@@@@@@@@@OOOOOOOO@OOOOOOOOOOOOOOOOO@@@@@OO@@@@OOO@.@@@@@ ooo ", " ### @@@@@@@@@@@OOOOOOOOOOOOOO@.@.@.OOOOOO@@@@@OO@OOOOOO@@@@@@ ooo ", " ### @@@@@@@@@@@@OOOOOOOOO @@@@@@@@@.@OOOOO@@@@@OOOOOOOO.@@@@@ ooo ", " ### @@@@@@@@@@@@@OOO @@@@@@@@@@@@@@@@@OOOOO@@@@@.@.OOO.@@@@@@ ooo ", " ### @@@@+@@@@@@@@@@OOOO @@@@@@@@@++@@@@OOOOO@@@@@@@.@.@@.@@@@ ooo ", " ### @@@@+@@@@@@@@@@@@@OOO@@@@@@+@@@@@@@@OOOO@@@@@@@@@@@@@@@@@ ooo ", " ### @@+@@@@@@@@@@@@@@@@@OO@@@@@+.@@++@@@@OOO@@@@@@@@@@@@@@@+@ ooo ", " ### @@+++.@@@@@@+@@@@@@@@O@@@@@@@@@@@@@@@@OOO@.@@@@+@@+++@@+@ ooo ", " ### @@@@@@+++.@@+@@@@@@@@O@@@@@@@@@@@.@@@.OOOO@@@@@@@@@@@@@@@ ooo ", " ### @@@@@@@@+@+@@@@@.@@@@OO@@@++@@@@+@@@@@OOOOO@@@@@@@+.@@@@@ ooo ", " ### @@@@@@@@@@@++++@@@@@@@O@@@@@@+@+@@+@@@@OOOOO@@++@@@@@@@@@ ooo ", " ### @@@@.@+@@@@@@@@@@@@@@@O@@@@.@+@@.@@+@@@@OOOO.@@@+@@.@@@@@ ooo ", " ### @@@@@@@@@@@@@@+@@@@@@OO@@@@@@@@@@@@@@@@@@OOOOO@@@@@@@@@@@ ooo ", " ### @@@@@@@@@@@@@@@@@@@@@O.@@@@@@@@@@@@@@@@@.OOOOO.@@@@@@@@@@ ooo ", " ### ooo ", " ## ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo oo ", " # ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo o ", " ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo ", " " }; micropolis-activity/images/background-micropolis.xpm0000664000076400007640001021201610726074454023332 0ustar simcitysimcity/* XPM */ static char *background_micropolis[] = { /* columns rows colors chars-per-pixel */ "1200 900 256 2", " c #0D1928", ". c #0F2B0D", "X c #133510", "o c #142637", "O c #252918", "+ c #2D312E", "@ c #383938", "# c #080F14", "$ c #142A47", "% c #1B3657", "& c #193349", "* c #1D3C65", "= c #183971", "- c #2A374E", "; c #223D67", ": c #223E68", "> c #2C3770", ", c #1B1956", "< c #1D5918", "1 c #194715", "2 c #087609", "3 c #205C1A", "4 c #2E502C", "5 c #374438", "6 c #24651D", "7 c #2D692B", "8 c #2A7723", "9 c #1E4329", "0 c #1C426A", "q c #1C4873", "w c #2F484F", "e c #254567", "r c #22416B", "t c #26486A", "y c #254673", "u c #2E5676", "i c #37676D", "p c #4F362E", "a c #463A37", "s c #632F24", "d c #483B45", "f c #523666", "g c #524B33", "h c #474438", "j c #5F6B2E", "k c #6D4D35", "l c #4F524C", "z c #504C4A", "x c #596358", "c c #4E6773", "v c #6D544E", "b c #726752", "n c #5F626D", "m c #155286", "M c #195586", "N c #1A5588", "B c #1E5889", "V c #1C5886", "C c #235A8A", "Z c #2A5C8C", "A c #275884", "S c #385986", "D c #2D608C", "F c #296387", "G c #2A6592", "H c #32628E", "J c #38648E", "K c #386685", "L c #346490", "P c #3A6690", "I c #3C6891", "U c #356995", "Y c #377296", "T c #2E73A7", "R c #1877BC", "E c #1279C3", "W c #403AB0", "Q c #455687", "! c #445689", "~ c #43598B", "^ c #415985", "/ c #495590", "( c #425E90", ") c #426B93", "_ c #496D94", "` c #467597", "' c #506D8F", "] c #4C6E8F", "[ c #4C77A3", "{ c #667492", "} c #6B61A4", "| c #5152AD", " . c #5D63EC", ".. c #5B63F2", "X. c #6365E6", "o. c #6466E9", "O. c #6768F1", "+. c #6862D3", "@. c #2C3498", "#. c #36972C", "$. c #308727", "%. c #3DAA32", "&. c #3AA530", "*. c #39A12F", "=. c #178E11", "-. c #00DB00", ";. c #0BDB05", ":. c #17D80A", ">. c #00E300", ",. c #05E801", "<. c #2ECD15", "1. c #2DD41F", "2. c #5E912F", "3. c #42AD38", "4. c #51B52C", "5. c #6FAD34", "6. c #54B54A", "7. c #63BB5A", "8. c #63A261", "9. c #4DC526", "0. c #75C36D", "q. c #39985A", "w. c #1B85B9", "e. c #3484B5", "r. c #1986C6", "t. c #1D88C7", "y. c #1282C4", "u. c #238BC9", "i. c #2A8EC9", "p. c #2489C5", "a. c #2D90CB", "s. c #2792C7", "d. c #318DCA", "f. c #3394CC", "g. c #3896CD", "h. c #3B99CE", "j. c #3795CA", "k. c #3595D0", "l. c #3C99D0", "z. c #3798D2", "x. c #30A1DC", "c. c #51839C", "v. c #4E8699", "b. c #4C87AE", "n. c #5792AF", "m. c #6E92B0", "M. c #718EA1", "N. c #6499A8", "B. c #79BBB6", "V. c #6AA9AD", "C. c #62AA98", "Z. c #4898CA", "A. c #429CD1", "S. c #489ED3", "D. c #499CD7", "F. c #5599C6", "G. c #46A1D4", "H. c #4BA1D4", "J. c #4CA9D4", "K. c #56A6CE", "L. c #52A5D6", "P. c #54A6D8", "I. c #55A8D5", "U. c #55A8D8", "Y. c #59A6D5", "T. c #5BAAD8", "R. c #59AAD6", "E. c #5AB4D7", "W. c #4BA7CE", "Q. c #679AC3", "!. c #65AAD5", "~. c #62ADDB", "^. c #69AEDD", "/. c #65B0DB", "(. c #6AB2DC", "). c #64BBDA", "_. c #70B5DE", "`. c #72B8DE", "'. c #79B7DB", "]. c #6BA8CC", "[. c #65B0E2", "{. c #6AB4E0", "}. c #72B5E0", "|. c #74B8E1", " X c #78B6E3", ".X c #7ABBE2", "XX c #62AEE1", "oX c #659FEC", "OX c #76C5A1", "+X c #70C7DB", "@X c #76CEEA", "#X c #79CAE0", "$X c #7CD2E0", "%X c #70CCF1", "&X c #5EC0D8", "*X c #935D35", "=X c #B1452A", "-X c #90574F", ";X c #8F6853", ":X c #A86F5F", ">X c #CF7A58", ",X c #CD7C62", " 0 y G S.A.H.H.A.Z.e.A r y > ; y D b.L.L.U = : : F I.S.U.L.Z ; * q G G.D.G.U.S.G.H.H.H.L.D.L.L.Y.U.U.U.Y.T.Y.~.T.Y.~.~.~./././././.(.(.(.[.(.(.^.(.(.(.(.(./.(././.!./././.~.~.~.~.~.~.~.~.~.~.T.~.~.T.T.T.T.~.T.T.Y.T.~.T.T.U.T.P.P.T.Y.T.T.P.U.", "P P P J I J P P I L J L J J Y I U ` ` Y Y v.v.b.v.n.V.V.V.B.7.7.7.7.6.6.3.3.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.&.#.8 8 < 1 X v.B.aXB.lX].lXOX0.0.7.7.7.6.3.3.%.%.%.%.%.%.%.*.$.8 3 1 1 X B.B.B.B.B.OX7.7.7.7.6.6.3.3.3.%.%.%.%.%.%.&.#.$.$.6 < < i B.B.B.V.V.N.N.N.N.N.N.N.N.c.n.N.N.V.V.B.B.B.jXjXrX0.7.7.3.3.%.%.%.%.%.%.%.%.&.&.&.&.&.*.&.&.%.%.%.%.%.&.#.#.$.8 6 < 3 +X$X$X$X$X$X#X#X+X$X#X$X$XbXOX0.7.0.7.7.6.3.%.%.%.*.#.$.$.8 6 < C.$X$X$XbXbX$XbXkXUXkXjXjX0.7.6.%.%.%.#.$.8 1 X . . v.bXbXbX$XbXbXlXjXrXOX0.0.6.%.%.%.%.%.%.%.%.%.&.*.#.#.$.$.$.8 8 6 < 1 1 X . . . . 9 B.NXNXNXNXvXNXNXJXNXbXNXNXNXJXrXrXOX0.7.6.6.%.%.%.&.#.$.6 3 1 1 hXNXNXNXCXJXNXNXNXbXUXUXlXlXjX0.7.9.3.%.&.#.$.6 1 . . . i $X$X$X$X$XlXkXjXjXrX0.6.3.%.%.%.%.%.%.&.#.8 < 1 . . 9 $X@X+X+X+X&X&X&XE.&X&X&X&X&X&X+X&X$XlXkXjXjXrX0.3.3.%.%.%.%.%.%.%.&.#.8 3 1 . . X $X$X$X+X$X+X$X$X$X$X$X$X7.6.6.6.6.6.6.%.%.%.%.%.%.#.$.8 < 1 . 9 $X+X$X+X&X&X&X&X&XJ.W.W.W.s.s.s.s.x.s.s.u.u.r.t.u.t.p.t.t.u.t.u.u.t.t.t.t.E t.t.t.u.u.t.u.u.u.u.u.u.P ! / ZXVXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXSXGXFXFXFXFXFXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXDXAXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXMXm.[ ~ Q [ T.~.T.~.~.~.~./.!././.(.(.!.].(.(.[.(.(.(.(.(.(./.^./.!.~.~.~.~.T.~.~.T.T.T.~.T.T.~.U.~.~.~.T.I.T.T.T.T.T.U.I.L.L.L.L.S.L.L.L.H.L.S.S.L.H.S.S.A.H.H.G.H.A.L.G.S.H.A.H.D.D.DXIXGXGXGXHXFXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXBXhXM.{ c U.U.L.L.L.L.H.H.A.A.h.h.h.h.l.l.h.l.h.A.A.h.Z.Z 0 e e 0 * r r r e r A.D.D.D.e.0 * e e : y Z.G.S.G.H.b.q * r r q r ; = q A.U.F.y > > 0 b.U.I.[ y ; t y n.G.G.S.S.L.G.H.H.H.H.U.L.L.L.U.I.U.T.U.T.T.T./.~.~./././.(.(.(.[./.^._.(.(.{.(.(.(.(.(.(.(.(./././.!.~././.~.~.~.~.~.~.~.T.~.T.T.~.~.T.T.T.T.T.T.Y.P.U.T.T.L.P.P.T.U.T.Y.P.T.", "J P P ) I P P J I K J J P I I I I I U Y ` v.v.v.C.n.N.V.V.B.0.7.7.7.7.6.6.3.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.&.#.$.8 < < 1 c B.lXB.B.B.B.B.0.0.0.0.7.6.3.%.%.%.%.%.%.%.%.*.$.$.6 < 1 X C.B.B.B.B.B.0.7.6.7.6.6.6.3.%.%.%.%.%.%.%.&.#.#.$.8 6 < 3 B.B.B.B.V.V.N.N.N.c.N.n.N.N.N.V.V.V.V.B.B.B.OXrXrX0.0.7.4.3.%.%.%.%.%.%.%.&.*.*.*.*.*.*.*.&.%.%.%.%.%.%.*.#.$.$.8 3 < q.bX$X$X$X#X$X+X$X$X#X#X$X$XbX7.7.0.7.7.6.3.%.%.%.&.*.#.$.$.6 6 8 $X$X$X$XbXbXbXUXkXkXkXrX0.6.3.%.%.%.#.$.6 1 . . X B.bX$XbXNXbXbXlXjXjXrX0.0.6.%.%.%.%.%.%.%.%.&.&.#.#.$.8 6 6 < < 1 1 X . . . . . w JXbXvXNXvXJXbXmXNXNXbXNXNXNXNXNXrXrX0.0.0.7.%.%.%.%.*.#.$.8 6 < 1 8.NXNXNXNXNXNXNXNXbXUXUXUXjXrX0.6.%.%.%.&.#.$.6 1 . . . V.bXbX$X$X$XlXkXjXjXrX0.6.3.%.%.%.%.%.%.&.$.8 < 1 . . q.$X$X&X&X&X&X&XE.E.E.&X&X&X&X+X&X$X$XlXjXkXjXrX7.6.%.%.%.%.%.%.%.&.*.$.8 < X . . i $X$X$X$X+X+X$X+X+X+X$X$X&X3.6.6.6.6.6.%.3.%.%.%.%.*.$.8 < 1 . 4 +X$X$X+X&X&X&X&XJ.J.W.s.W.s.h.s.s.s.s.t.s.t.t.t.u.t.t.t.t.t.u.t.t.t.t.t.t.r.t.t.t.t.t.u.u.u.u.u.a.i./ ! / BXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXDXAXDXDXFXFXFXFXFXFXAXDXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXDXAXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXFXBXpX} S Q [ ~.T.~.~.~.~.~.(././.(./.(._.(.(.(.(.^.(.(.(.(././.~./.~.~.R.T.~.~.~.~.T.~.T.T.T.~.I.T.T.T.~.I.~.T.T.T.I.U.T.L.I.S.L.L.L.L.L.H.L.S.U.H.H.H.H.G.H.H.H.H.H.H.Y.h.G.S.A.D.G.D.GXGXGXGXFXFXAXAXAXFXHXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXBXaXM.b c Y.U.L.L.A.U.H.A.A.g.h.h.z.z.k.h.h.h.g.A.h.f.Z.C ; = > e r r y r ; r A.S.A.S.G e r r 0 : 0 e.A.G.H.G.B * > 0 [ e.A * > q L L.G.e.q ; 0 V F.S.N * * y e.T.T.D.H.H.D.H.H.H.H.L.S.U.P.L.L.U.U.Y.U.T.T.T.T./.~.~.~.~./././.(.^.^.(.(.).{.(.(.(.(.(./.(.(.(././././.~.~./.~.~.~.~.T.~.T.~.~.T.Y.T.T.~.~.T.T.T.T.Y.Y.U.T.L.L.I.L.T.Y.P.T.P.", "P P P P I P P I J J J L J J K I I Y ) ` Y Y v.v.e.v.n.V.V.B.C.7.7.7.7.6.6.3.3.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.&.%.%.%.&.%.&.%.&.%.%.%.&.#.$.8 < 1 1 4 B.+XB.B.B.B.B.0.0.0.0.7.6.3.4.%.%.%.%.%.%.%.&.#.8 6 1 1 X C.B.B.B.B.B.B.6.7.6.6.6.6.6.3.3.%.%.%.%.%.%.*.#.$.$.6 6 < q.aXB.B.V.V.V.N.N.N.C.n.N.N.N.N.V.V.V.V.B.B.OXrXrXrX0.7.6.3.%.%.%.%.%.%.%.&.*.*.*.*.#.*.*.*.%.%.%.%.%.%.&.*.#.$.8 8 3 6 V.bX$X$X$X$X#X+X+X$X$X$X$X$XOX7.7.7.7.6.6.3.%.%.%.*.#.$.$.$.8 $.8.$X$XbX$XbXUXUXkXlXjX0.7.6.3.%.%.%.#.8 < 1 . . 9 bXbXNXbXbXbXbXbXjXjXrX0.0.6.%.%.%.%.%.%.%.&.&.*.$.$.8 6 < 1 1 X X . . . . . 9 V.NXNXvXbXvXbXvXxXbXbXJXNXJXNXJXNXVXjX0.0.0.7.7.6.%.%.%.&.*.$.8 8 < < q.NXNXJXNXNXNXNXbXUXUXkXkXjX0.7.6.6.&.&.*.$.6 < X . . 4 $X$X$X$X$XbXkXjXkXjXrX7.6.%.%.%.%.%.%.%.&.$.6 < 1 . . v.$X$X$X+X&X&X&X&XE.&XE.&X&X&X&X+X$X$XlXkXkXrX0.6.6.%.%.%.%.%.%.%.%.*.$.8 1 X . . C.@X$X$X$X+X+X+X+X+X$X$X$X$X0.3.6.3.6.6.3.6.%.%.%.%.*.$.6 < 1 . 4 $X$X$X&X&X&XJ.&XJ.J.W.W.x.x.s.j.s.s.s.t.t.s.t.t.u.r.t.t.u.t.t.u.t.t.t.t.r.t.t.t.t.t.t.u.u.i.u.u.u.u.S / ! ZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXAXDXFXFXFXFXFXFXDXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXAXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXZXBXm.[ ~ ! [ T.~.~.T.~.~.(.~.!././.(./.!.(.(./.|.(.(.(././.(./.[.~.~.~.!.~.T.T.T.T.~.T.T.~.T.I.~.T.~.T.T.~.I.T.T.T.T.U.U.L.L.H.L.L.L.G.L.L.G.U.H.S.H.L.H.H.S.A.G.H.H.G.G.H.H.H.A.G.D.z.FXPXGXGXGXFXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXBXaXm.{ c H.H.L.H.H.H.A.A.A.h.z.h.h.h.h.l.h.h.h.A.D.z.Z.A > : q T A.A.z.A.A.A.A.D.S.Z.A * > u 0 e > U H.L.F.G.; > ; q Z.G.b.Z S ` T L.L.U.U ; ; r [ Y * e y Z L.J.L.D.L.D.G.G.H.H.H.S.L.S.S.L.L.U.U.L.Y.T.Y.T.T.~.~.~.~.!.(./.(.^./.(.(.(.(.(.(.(.(.(.(.(./.(././././.~././.~./.~.~.~.~.~.~.~.T.~.~.~.T.T.T.T.~.T.T.T.T.U.U.L.Y.L.Y.U.P.P.P.T.", "P P P P P P P P J J L J H L Y H H I I Y Y ` v.v.b.v.N.C.V.V.B.7.7.7.7.7.6.3.%.%.%.%.%.%.%.%.%.%.<.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.&.&.&.&.&.&.&.&.&.%.3.#.$.8 6 1 1 1 aXB.B.JXB.B.lXOX0.0.0.7.6.6.%.%.%.%.%.%.%.%.&.#.$.6 < 1 X c B.B.B.$XOXB.0.6.6.6.6.6.%.9.%.%.%.%.%.%.%.%.*.#.$.8 6 6 4 C.B.B.B.V.V.V.V.N.V.n.V.N.N.V.V.V.V.B.B.B.OXjXjXrX0.7.6.%.%.%.%.%.%.%.&.*.*.*.#.#.#.$.*.*.&.%.%.%.%.%.%.&.#.#.$.8 6 6 7 bXbX$X$X$X@X#X#X+X$X$X$X$XB.7.7.7.7.6.6.3.%.%.%.&.&.#.#.$.$.#.#.OX$X$XNXlXUXkXkXjXrX0.6.6.%.%.%.*.$.8 1 X . . i bXbXbXNXbX$X$XbXjXjXrXrX0.6.3.3.%.%.%.%.%.&.*.#.$.8 6 1 1 X . . X . . . 4 C.bXbXvXvXbXnXbXxXvXbXxXvXxXbXmXNXNXNXNXlX0.0.0.0.7.6.%.%.%.%.&.#.$.8 6 6 < bXNXNXNXNXNXNXUXUXkXkXjXrX0.7.6.%.&.*.#.8 6 1 . . . C.bXbX$X$XbX$XkXjXjXrXrX7.7.9.%.%.%.%.%.%.#.$.6 < X . . &X$X&X&X&X+X+X&XE.&X).).&X&X&X%X+X$XOXkXlXjXrX0.7.3.%.%.%.%.%.%.%.&.#.$.3 1 . . . +X$X+X+X+X+X+X+X+X+X+X+X@X$X$X6.6.6.6.6.3.3.3.%.%.%.*.$.8 < 1 X w +X@X+X+X&X&X&XW.x.W.s.W.W.s.x.s.s.t.u.s.t.t.t.w.u.t.t.t.t.u.u.t.t.u.r.t.r.r.t.t.u.t.t.u.u.t.u.u.u.i.! ! / CXVXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXZXVXBXm.} ^ ~ ` T.~.~.~./.^.(.~././././.(.(.(.(.!.(.(.`.^./.^.!.^.~.(.~.~.~.T.~.~.T.T.~.~.T.T.T.T.T.T.T.Y.I.T.~.U.T.T.T.T.L.L.L.L.L.L.L.L.G.G.L.H.Z.H.H.U.D.H.H.Z.H.S.H.H.H.H.H.H.G.S.A.z.IXPXGXGXDXDXDXAXAXDXDXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHXBXhXM.n c I.H.H.H.H.H.A.A.h.h.h.h.h.h.h.h.l.h.h.h.k.h.g.Z ; r y J U T Y T T [ G.A.G.b.q 0 = T H ; e : Z.U.U.S.u : * > A U T F.H.G.H.H.U.K.F.y e * y > 0 : q L.L.L.H.L.H.S.S.S.S.S.L.S.L.L.P.P.Y.P.Y.L.L.T.T.Y.T.T.~.~././././././.(.).(.[.|.(.(._._.(.(.[.(.(.(./././././.~./.~./.~./.~.~.~.~.~.~.~.~.T.T.~.T.T.T.P.T.P.U.U.U.P.Y.P.P.P.T.T.P.", "P P J P P U J P P P J J I L H I K Y ` K ` Y ` ` v.v.N.N.V.V.V.OX6.7.7.6.6.6.6.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.&.&.*.*.*.#.&.&.&.%.&.%.*.#.8 6 < 1 X C.B.B.B.B.B.B.OX7.0.0.0.7.6.3.%.%.%.%.%.%.%.&.#.$.6 < 1 X 7 B.B.B.B.B.B.OX6.6.6.6.6.6.3.3.%.%.%.%.%.%.%.&.#.#.$.$.8 6 q.B.B.B.B.V.V.V.V.V.N.V.V.V.V.V.V.V.B.aXB.OXjX0.0.0.0.6.%.%.%.%.%.%.%.%.*.#.#.#.$.$.q.#.#.&.%.%.%.%.%.%.&.*.#.$.$.8 6 3 8.$X$X$X$X$X+X#X#X@X$X@X$X$X0.7.7.7.7.6.6.3.%.%.&.&.#.#.#.#.#.%.6.OXOXlXkXkXkXjXjX0.7.6.3.%.%.&.#.8 < 1 . . . B.bXbXbX$XbXNX$XlXjXjXrX0.0.6.3.%.%.%.%.%.%.&.#.$.8 6 1 X . . . . X w 8.hXNX$XvXbXvXvX$XvX#X#XzXvX$XvXbXxXbXMXJXNXNXlX0.0.0.0.7.6.%.%.%.%.&.#.$.$.8 6 8 0.NXNXNXNXNX$XUXUXUXkXjX0.0.6.3.%.&.*.$.8 1 . . . o $XbX$X$X$X$X$XlXkXkXjXrX7.9.%.%.%.%.%.%.&.#.8 6 1 . . 9 $X$X$X$X&X+X&X&X&X&X+X&X).&X+X+X+X$XlXkXlXjXrX0.6.3.%.%.%.%.%.%.%.&.$.8 < X . . 4 $X$X$X+X+X+X+X@X{.+X+X+X+X$X$XC.3.6.6.6.6.6.6.3.%.%.&.$.7 < 1 1 . $X$X+X&X&X&X&XW.&Xx.W.s.s.s.s.s.s.s.t.t.t.t.t.t.t.t.t.t.t.p.t.u.t.u.r.t.r.t.E t.t.t.t.t.t.u.u.i.u.u.S ! ! ZXVXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXAXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXDXFXHXQ.[ S ^ ` ~.~.T.~./.~.~././.!./.^.(.(.(.(.(.(.[.(.(./.[././.~.~.~.~.~.~.~.~.~.~.T.T.T.~.T.T.~.T.T.~./.T.~.P.T.T.T.U.Y.U.L.L.H.D.L.L.L.L.G.H.H.H.H.U.H.H.H.H.H.H.h.S.G.A.H.l.A.S.A.D.GXSXGXGXDXAXDXAXAXDXAXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXHXhXm.{ c H.G.H.S.A.A.A.A.A.h.h.h.h.h.A.l.l.l.h.A.h.A.h.Z r 0 0 q ; e e 0 y Y l.D.G.G r y q b.T * r : T S.S.S.T 0 : e ; r = y C [ L.H.A.H.L.e.; e = e : = b.L.G.L.H.L.D.U.S.L.S.S.S.P.S.L.S.L.U.P.P.U.T.T.T.Y.T.~.T.~.R././.(././.^.^.(.(.^.(.(.(.[.(.(.(.(.(.(./.(././.!./.~.~./././.~.~.~.~.~.~.~.T.T.~.T.T.T.T.T.T.T.L.U.L.P.P.P.T.P.P.P.T.", "P P P P P P ) P P L P L J L U U U U L Y Y ` ` v.v.v.n.C.V.V.B.B.7.7.7.7.6.6.3.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.&.*.*.#.#.#.#.#.&.&.&.%.3.&.#.$.8 3 1 X 8.].B.B.B.B.B.OX0.0.0.7.7.6.6.%.%.%.%.%.%.%.%.*.$.8 6 1 1 4 B.B.B.B.B.B.B.0.6.6.6.6.6.3.%.%.%.%.%.%.%.%.&.*.#.#.$.8 8 6 8.&XB.B.B.B.V.V.V.V.V.V.V.V.B.V.B.B.B.B.lXOXjX0.0.0.6.6.%.%.%.%.%.%.&.*.#.#.$.$.$.C.#.#.*.&.%.%.6.%.%.%.&.*.#.$.8 7 6 3 +XbX$X$X#X$X#X+X+X$X$X$X$XOX7.7.7.7.6.6.3.3.%.%.&.&.&.&.#.%.3.6.7.0.jXjXjXjXjX0.7.7.6.3.%.%.#.$.8 < X . . 4 $XbXbXbXbXbX$XbXlXjXjXrXrX7.6.3.%.%.%.%.%.%.&.#.$.8 < 1 . v.V.V.NXbXbXbXbXbXbXzXvXbX#XzX.X#X#X+XzXzXvXbXbXvXbXNXMXNXNX0.0.0.7.7.6.3.3.%.%.&.#.#.$.$.$.$.*.bXNXJXbXNXUXUXUXkXjXOX0.6.6.%.&.*.#.$.6 1 . . . 8.$X$X$XbX$X$XbXjXjXjXrX0.7.6.%.%.%.%.%.%.&.#.8 < 9 . . i $X$X$X&X$X$X&X&X&X&X+X&X&X+X+X+X$X$XkXkXjXjXrX7.6.%.%.%.%.%.%.%.&.#.$.6 < X . . v.$X$X+X+X+X&X+X+X&X+X+X+X+X$X$X$X7.6.6.6.6.6.3.%.%.%.*.$.8 3 1 X . &X+X&X&X&X&Xx.W.W.W.x.s.s.W.j.s.w.s.u.t.s.r.t.t.t.t.t.t.t.t.t.t.u.t.t.t.r.t.t.t.t.t.u.t.u.u.u.u.u.u./ / / BXVXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXAXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXDXHXBXm.} S S [ ~.~././.~././.~.(./.(.~.(././.{.(./.(././.(././.~./.~.~.~.~.~.T.~.T.~.T.~.T.T.T.T.T.~.T.Y.Y.~.T.T.T.U.T.P.Y.U.L.L.L.L.L.P.P.A.P.H.K.L.H.H.H.H.H.H.H.H.H.S.S.A.H.A.G.A.A.G.IXGXGXGXGXDXDXAXAXDXZXFXFXFXFXAXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXHXaXM.{ c H.Z.H.h.A.A.A.h.h.h.h.h.A.h.l.l.h.h.h.A.h.G.G.A > r e : e : t > = T D.D.Z.V r > q J.Z.q q 0 K H.U.S.Y.T q y 0 * e * * y [ U.A.T.H.L.L 0 y : 0 Z U.L.L.L.L.H.L.H.L.L.L.L.S.L.L.L.P.L.P.P.U.U.T.U.T.L.T.T.~.~.~.~.~.(.^././.(.(.(.(.(.(.|.(.(.(.{.!.{.(.(.^./.(.~.^././././.~.~.~.~.~.~.~.[.~.~.~.T.T.Y.T.P.P.P.U.U.L.P.Y.P.P.T.T.P.P.", "J P P P P P J P J P L H J D J L J I I U ` Y Y Y v.b.v.N.n.V.V.B.0.7.7.7.6.6.6.6.%.3.%.%.%.%.&.&.%.%.&.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.*.#.#.#.$.$.#.#.*.*.&.%.%.&.#.$.6 3 1 X q.aXB.+XlXB.+XaX0.0.0.0.0.6.6.%.%.%.%.%.%.%.%.*.$.8 < < X 1 B.B.B.B.B.B.B.B.6.3.3.6.3.6.6.3.%.%.%.%.%.%.&.&.*.#.#.$.$.8 $.8.B.B.B.B.B.V.V.V.V.V.V.B.V.V.B.B.B.B.OXrX0.0.0.0.6.6.3.%.%.%.%.%.%.#.#.$.$.$.8 8.8.#.*.&.%.%.6.3.%.%.&.&.#.#.$.8 6 6 7 $X$X$X#X+X+X#X$X+X$X$X$XOX7.7.6.7.6.3.3.3.%.%.%.%.&.&.&.3.6.6.0.0.rXrXrXrX0.7.6.9.%.%.%.%.#.$.6 1 X . . v.bXbXNXbX$XNXbXbXlXjXjXrX0.0.6.3.%.%.%.%.%.%.*.$.8 6 1 . . NXbXbXbXJXbXNXvXbXzXbXdX#XvX.X#X#X#XdXdXzX'.dXxXnXbXmXNXNXNXOX0.0.0.7.7.6.3.%.%.&.*.#.#.#.$.$.%.6.lXNXJXlXlXlXlXjXrX0.0.9.%.%.&.*.$.6 < X . . X +X$X$XbXbX$X$XlXkXkXjXjX0.7.3.%.%.%.%.%.%.*.#.8 < 1 . . q.$X$X$X$X$X&X&X$X+X&X+X&X+X&X+X+X$X$XkXjXkXrX0.0.6.%.%.%.%.%.%.%.&.#.$.3 1 . . . $X$X+X+X+X+X+X&X+X&X&X&X+X+X+X$X$XOX6.6.7.6.6.6.6.3.%.&.#.8 6 1 1 . V.+X&X&X&XJ.&XW.W.s.s.W.s.s.s.s.s.s.u.t.s.t.t.t.t.t.t.t.t.s.u.t.t.t.t.t.t.r.t.t.t.t.E i.u.t.u.u.u.i.S ! ! ZXVXFXZXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXSXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXZXDXBXHXQ.[ ! ! _ [.T.T.~.~.~.~./.T././.(./.(./.(.(.(./.(././././.~.~.~.~.~.T.T.~.~.~.T.~.T.T.[.T.T.T.~.T.Y.~.Y.U.T.T.T.U.T.T.P.P.U.L.L.L.L.P.P.l.L.H.S.H.S.H.H.H.G.G.A.H.H.S.H.H.A.S.A.A.z.SXPXGXGXAXDXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXJXaXM.' x G.H.H.H.A.A.j.A.A.h.G.h.h.A.A.l.h.h.k.Z.g.A.j.A e r = H T T T U T e.A.H.b.y = t t T Y B r y : F.U.S.H.H.Y.T U y y > r : q H.L.U.U.L.F.r r r e F.L.L.L.L.H.L.H.L.G.L.S.U.L.L.L.L.L.P.K.P.L.U.I.T.T.T.T.T.~.T.~.~.~./.[./.(././.(.^.(._.^.^.!.(.(.(.(./.(./.(.E.^.^./././././.~.(.~.~.~.~.T.T.T.T.T.T.T.T.T.P.L.L.U.U.P.P.T.T.P.P.P.T.", "J J J P L P H P H P P P H L H I H Y J U Y Y ` ` Y b.v.n.n.V.V.V.B.7.7.7.7.6.6.3.3.%.%.%.%.%.%.&.&.%.&.%.&.&.&.%.%.%.%.%.%.%.%.%.%.%.%.&.#.$.$.$.$.8 $.$.#.&.&.%.3.%.*.$.8 6 1 1 4 B.B.lXB.B.aXOXOX0.0.7.7.6.6.3.%.%.%.%.%.%.%.*.$.8 < < 1 . V.B.B.B.B.B.B.B.C.3.6.3.6.3.6.%.%.3.%.%.%.%.%.%.%.&.#.#.$.$.$.$.C.B.B.B.B.B.B.B.V.B.V.B.V.B.OXB.aXB.B.OXrXrX0.0.7.6.%.%.%.%.%.%.%.*.$.$.$.8 8 8.+X#.#.&.%.6.%.3.%.%.%.&.*.#.$.8 6 6 3 V.$X$X#X+X+X+X+X+X$X$X$X$X7.7.7.6.7.6.3.3.3.%.%.%.%.%.3.3.6.6.7.0.0.0.0.0.7.6.6.3.%.%.&.*.$.8 < 1 . . 1 $XbXbXbXbXbXbXNX$XlXjXjXrXrX7.6.9.%.%.%.%.%.%.*.$.8 3 1 . . bXNXbXbXbXbX#XvX#X#X#X#X+X#X`.|..X#X.X#X`.#XdX#XxXvXJXNXNXNXjX0.0.7.7.7.9.3.%.%.%.&.&.#.*.*.#.%.3.7.0.jXkXlXlXjXjX0.7.6.9.%.%.*.$.8 3 1 . . . q.nX$XbX$XbX$X$XlXlXlXjXrX0.6.%.%.%.%.%.%.%.*.#.8 < 1 X . V.$X$X$X$X$X&X@X+X+X&X+X&X+X+X@X+X$X$XkXkXjXOX0.7.3.%.%.%.%.%.%.%.*.$.8 < X . . w $X@X+X+X).).+X&X&X&X+X+X&X$X&X$X$X$X0.7.7.7.7.6.6.3.%.%.#.8 6 1 1 X C.+X+X&X&X&XJ.W.x.W.z.h.s.f.s.u.u.u.t.s.t.t.t.w.i.t.t.r.t.t.u.t.t.t.t.t.t.t.t.t.t.u.t.t.t.u.u.u.u.u./ ~ ~ ZXVXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXDXFXFXFXAXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXSXGXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXDXGXSXDXAXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXAXDXAXFXFXFXFXFXFXFXFXFXFXAXFXZXZXDXBXQ.} ( ! [ ~.~.~.~.~.~./.~././.(./.(.^./.(.(././././././././.~.~./.~.~.T.~.~.~.~.Y.~.T.T.~.T.T.~.T.T.T.Y.Y.T.T.T.T.T.T.P.P.L.L.L.L.L.L.D.H.L.H.H.H.H.H.H.H.H.H.G.S.H.A.S.A.A.A.A.A.A.IXGXGXGXGXVXFXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXBXaXM.{ n D.G.A.A.A.A.A.A.h.A.g.A.g.A.A.h.h.A.h.D.l.A.g.D ; r = b.D.D.H.A.S.A.G.G.G = 0 e > ; y : : e ; T U.Z.b.T T b.L.P.b.u 0 > y f.A.Y.U.U.U.r = e : U.D.G.L.L.L.L.L.L.L.G.S.L.L.S.L.L.U.L.P.P.P.Y.T.U.T.T.T.T.T.[.T.~.~././././.(.(./.{.^.^.`.(.(.(.(._.[.(.(.^./.(./.(././.!.(./.(.(.~.~./.~.~.~.R.~.L.T.U.Y.U.Y.P.U.U.U.P.P.P.P.P.U.U.T.", "P P P J P P P P J J J H J U L H H L U L K U ` Y v.v.c.N.N.V.V.B.B.7.7.7.7.7.6.6.3.3.%.&.&.%.#.&.#.#.#.#.&.&.&.%.%.%.%.%.%.%.%.%.%.%.&.&.#.$.$.$.8 7 q.#.#.#.&.3.3.4.*.$.8 6 < 1 1 aXB.B.B.B.B.B.OX0.0.0.0.7.6.3.3.%.%.%.%.%.%.&.#.$.6 < 1 X C.B.B.B.B.B.B.B.B.3.3.3.3.q.6.%.3.%.%.%.%.%.%.%.%.%.#.*.#.#.#.$.$.8.OXB.B.B.B.B.B.B.B.&XOX7.OXB.OXB.B.jXrXrX0.0.7.4.3.%.%.%.%.%.&.*.$.$.8 8 8 7 $Xq.*.&.%.3.6.6.6.%.%.&.*.*.#.$.8 6 2 i $X$X#X#X#X#X+X@X+X+X#X$XB.6.6.7.6.6.6.3.3.%.%.&.%.%.3.3.3.6.6.7.7.7.7.6.6.3.3.3.%.%.*.#.$.8 1 . . . i bXbXbXbXbXbXbXbXbXbXjXjXrXrX7.6.3.%.%.%.%.%.%.*.$.6 < X . . bXbXbXbXbXbXvX#X#X#X'.'.'.|.+X)..X).'..X+X+XzXzXzXzXbXvXbXNXlX7.0.0.7.7.6.3.3.%.%.%.&.&.*.&.%.%.6.7.0.rXjXjXjXjX0.0.6.6.9.%.&.#.$.6 1 X . . 9 bXvXbXbXbX$X$XbXlXjXjXjX0.0.7.%.%.%.%.%.%.%.*.$.8 6 < 1 1 @X&X$X$X$X$X$X+X+X+X$X+X+X+X+X+X$X@XlXkXlXjXjX0.7.3.%.%.%.%.%.%.%.#.$.8 < X . . 8.$X#X+X+X&X+X).).+X&X&X+X+X&X$X$X$X$X$X7.0.7.7.7.6.3.%.%.$.$.6 < 1 X i +X&X&X&XJ.J.W.W.x.z.s.x.s.a.s.s.u.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.u.t.t.u.t.t.u.u.u.S / ~ CXVXFXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXAXFXSXGXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXDXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXDXSXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXBXpX[ ~ S ` [.T.~././.!./.~././.(.(.(././.(.(.^././.(.!.~././.~./.~.~.~.[.T.~.~.~.~.T.~.~.T.T.~.T.T.~.~.~.U.T.T.T.T.P.U.P.P.P.L.L.U.L.L.L.L.H.L.L.H.H.S.H.S.G.G.S.S.A.J.S.Z.A.G.h.A.G.GXPXGXGXDXDXAXFXAXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHXBXaXM.c c l.G.S.A.A.A.h.A.j.Z.g.A.G.g.A.h.A.h.h.h.A.z.g.A ; ; 0 e.l.A.D.S.Z.H.G.D.A : 0 e r ; : * > r ; C H.e.; y > Z H.S.L.A r ; q b.H.T.S.L.L.r r ; ; P.L.L.L.G.L.L.L.L.L.L.L.L.L.L.L.L.L.L.P.P.P.P.U.U.T.T.T.T.T.~.~.~.~.~./././.(.(.(./.(.^.!.[.^.[._.(.(.(.(.(.!./.(././.(.).~././.~./.!.[.~.~.~.~.R.Y.T.U.U.P.U.Y.Y.Y.L.T.P.T.P.P.Y.P.U.", "J P J P J J P L P P J J H J H H H K Y K K P Y Y v.Y v.v.n.N.V.V.V.OX7.7.7.7.6.6.3.3.%.%.#.&.#.#.#.#.#.#.#.&.&.&.%.%.%.%.%.%.%.%.%.%.&.#.$.$.8 6 6 6 8.8.#.#.%.3.6.3.*.#.$.6 < 1 X N.aXB.bXOXB.'.B.0.0.0.0.7.6.6.%.%.%.%.%.%.%.&.#.$.6 < 1 X c B.$XOXB.B.B.B.B.OX3.3.3.3.%.6.%.3.%.%.%.%.%.%.%.%.&.*.#.#.#.*.*.&.3.0.B.B.B.B.B.B.B.0.6.3.0.B.B.B.V.jXrXrXrX0.7.6.3.%.%.%.%.%.%.*.$.8 8 6 7 q.@XB.#.&.%.6.6.6.6.%.%.%.%.*.#.$.8 8 6 3 C.$X$X+X@X+X+X#X+X$X$X$X@X7.6.6.7.6.6.3.3.3.%.%.%.%.3.3.3.6.6.6.9.6.6.6.3.3.3.3.%.&.&.$.8 < 1 . . X OX$XbXbXbXbXNXbX$XbXlXkXjXrXrX0.6.3.%.%.%.%.%.%.*.$.6 < X . 9 bXNXbXbXbX#X#X#X+X#X).#X+X|.|.`.`.|.|._..X#X'.#XzX#XvXmXbXNXNX0.0.7.7.7.6.6.%.%.%.%.&.%.&.%.%.6.6.7.0.0.0.0.0.0.7.6.6.3.3.&.#.$.8 6 1 . . . N.bXbXbXbX$XbXbX$XlXlXlXjXrX0.6.%.%.%.%.%.%.%.*.$.$.6 < < 7 @X$X$X$X$X$X$X$X+X$X$X+X+X@X+X$X$X$XlXkXkXjXrX0.6.3.3.%.%.%.%.%.%.#.$.6 1 . . . &X$X+X+X+X+X).&X).&X&X&X+X+X+X$X+X$X$X$XOX0.0.0.7.7.3.%.*.#.$.6 1 X . Y &X&X&XE.J.J.x.W.x.h.s.s.f.a.u.u.s.t.s.t.s.t.t.p.t.t.t.t.t.t.t.u.t.t.t.r.t.t.t.u.t.t.t.t.u.u.t.t.u./ ~ / CXVXAXGXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXAXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXDXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXGXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXDXDXDXSXFXFXFXFXFXFXFXFXFXFXFXFXZXZXBXm.{ ! ! [ ~.[.~././.~.[.^././././.(.(.(./.^.!.~.[.~.~./.~./.~.~./.~.~.~.[.~.!.(.~.~.T.~.T.~.~.T.~.P.~.P.T.T.T.T.P.T.U.U.L.L.P.L.L.D.L.L.L.H.L.L.H.H.H.S.H.H.A.S.S.A.A.G.Z.A.H.A.A.G.GXIXGXIXFXSXDXFXAXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXAXgXJXM.{ c A.G.H.H.S.A.A.A.A.A.G.A.A.A.A.A.A.A.h.z.h.D.z.Z e r : y y : r 0 e 0 e.b.r e 0 0 Z Z C Z y e 0 y F.S.r t : y U n.T r r ; u L.U.L.T.L.U.* y r = P.L.D.L.L.H.L.G.P.G.L.D.L.L.L.L.L.P.P.P.P.Y.Y.U.T.T.T.T.T.T.T.T.T.~.~././././.(.(./.(.(.(.~._._.(._.(.(.(./.(.(./.(./.(./.!.(./.(./.E.~.~.~.~.T.T.T.T.U.U.L.T.U.Y.U.U.P.P.P.T.Y.U.Y.T.", "J L J P J P L L P J J J H H P H F K L J Y Y Y ` ` v.c.v.n.N.N.V.V.B.7.7.7.7.6.6.3.3.%.%.&.#.#.#.$.$.$.#.#.#.#.&.%.%.%.%.%.%.%.%.%.%.&.#.$.8 6 3 < < V.C.#.%.%.6.6.6.3.#.$.6 < 1 X q.OX+XB.lXB.B.aX0.0.0.0.7.6.6.3.%.%.%.%.%.%.&.$.$.6 < 1 1 i B.B.B.B.B.B.B.B.B.7.3.%.3.%.3.%.%.3.%.%.%.%.%.%.%.%.&.%.&.&.&.&.&.3.6.7.0.0.OXOX0.7.6.%.*.8.B.B.B.B.OXrXrX0.0.7.6.3.%.%.%.%.%.%.*.#.=.8 6 6 7 $X$Xq.&.%.6.6.6.3.%.%.%.%.*.*.#.$.8 6 < 7 $X#X+X+X+X+X+X+X+X+X$X@XOX6.6.6.6.6.3.3.3.%.%.%.3.%.3.3.3.%.%.%.6.3.3.3.%.%.%.%.&.#.$.6 1 X . . 7 bXbXbXbXbX$XbXbX$X$XlXjXjXjXrX0.7.4.%.%.%.%.%.%.#.$.6 1 X X 4 bXbXbX$XzX#X#X#X|.|.+X_.(.)._.).)._.|.(.#X`.'.#X#XxX$XvXJXNXNXOX7.0.7.7.6.6.%.%.%.%.%.%.%.%.3.3.6.7.7.0.0.7.0.7.6.6.3.%.%.*.$.$.6 1 . . . 4 bXbXbXbX$XbXbX$XbXkXkXjXjX0.0.6.%.%.%.%.%.%.%.*.#.$.8 6 < C.@X$X$X$X$X$X$X@X$X+X$X$X+X$X@X+X$X$XkXjXkXjXrX0.6.3.%.%.%.%.%.%.&.#.8 < 1 . . 9 $X$X+X+X+X).&X&X).+X&X&X&X+X&X+X$X$X$X@XlX0.OX0.0.6.6.%.*.#.8 6 < X . 7 &X&X&X&XJ.W.W.h.h.h.s.f.f.a.u.i.t.i.t.i.t.u.i.t.t.p.t.t.t.t.t.t.t.t.t.t.t.t.u.E t.u.t.u.t.t.t.u.u.S ~ ~ CXVXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXDXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXGXFXFXFXFXFXFXFXFXFXVXFXAXZXZXBXm.[ ! ! _ ~.~.~././.^.~.[.E.(.(./././.(././././.~.(.~.~.~./././.~.~.~.~.~.(.T.~.~.~.T.T.(.T.T.T.T.I.T.Y.~.T.T.T.T.T.U.U.U.U.D.P.P.P.U.L.G.H.H.K.H.S.H.H.H.l.H.A.A.A.G.A.A.A.l.A.A.l.IXIXGXGXFXGXAXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXAXHXaXM.n c A.H.h.A.A.G.A.A.A.A.A.A.G.j.A.h.A.j.z.A.z.D.A.Z : r 0 0 r 0 0 e > 0 b.T ; e 0 J A.L.G.Y.Z e r ; U H.` = : t y = r r 0 q b.J.U.T.L.T.U.0 * e * P.L.U.L.G.P.D.U.P.G.L.L.L.L.L.L.L.P.P.Y.P.U.Y.T.U.T.T.T.T.(.U.~.~.~.~./././.(./.{.(./.^.~.(.[._.(.^.{.(.).(././.(.(.(././.^.)./.~.(.~.~.~.T.~.T.T.T.T.Y.U.U.U.T.P.U.Y.T.P.T.P.U.T.U.U.", "J J P J P P J P P H L H H H H H L H U H Y K I Y ` Y v.v.v.C.N.V.V.B.C.7.7.7.6.7.6.%.%.%.*.#.$.$.8 $.8 $.$.#.#.*.&.3.&.&.%.%.%.%.%.%.&.$.8 6 < 1 1 7 B.OX#.%.3.6.6.6.3.*.$.7 6 1 1 7 hXB.B.B.B.lXB.OX0.0.0.7.7.6.3.%.%.%.%.%.%.%.#.$.8 < 1 1 4 B.B.B.B.B.B.B.B.B.B.6.&.&.%.%.3.%.3.%.%.%.%.%.%.%.%.%.%.%.%.%.3.3.6.6.7.7.0.jX0.7.6.3.$.$.C.B.B.aXB.B.0.jX0.0.0.6.%.%.%.%.%.%.%.*.$.8 6 6 6 6 $X$XC.%.3.6.6.6.6.%.%.%.%.%.&.#.$.8 8 6 3 q.@X#X+X+X+X#X+X+X#X+X$X$X6.6.6.6.6.3.3.3.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.&.*.$.8 < X . . . V.$X$X$X$XbX$X$XbX$XNXlXjXjXrX0.7.6.3.%.%.%.%.%.&.#.$.6 < X X 7 bXbXvX#X#X+X`.`.+X).{.(.(.`.).(.(.(.).'.`._.|.#X.X.XvXvXvXmXNX#X7.7.7.7.6.6.3.3.%.%.%.%.%.3.%.6.6.6.6.7.6.6.6.6.6.%.%.%.&.#.$.8 1 X . . . B.bXbXbXbX$XbXbX$X$XkXjXjXjX0.7.6.%.%.%.%.%.%.%.*.#.$.$.$.8 V.$X$X$X+X@X$X$X$X$X@X$X@X%X+X$X$X+X$XkXkXjXjXrX7.6.3.%.%.%.%.%.&.*.$.8 < X . . q.#X$X+X+X&X+X).).&X).).+X&X+X+X$X$X$X$X$X$XjXrX0.0.0.9.%.&.#.8 7 1 X . w &X&X&X&Xx.J.W.x.h.h.s.s.s.a.s.u.t.t.u.s.u.t.u.u.t.u.t.u.t.t.u.t.u.u.E u.E i.u.t.t.u.u.u.t.u.u.u.u.S / / CXVXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXAXDXAXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXDXAXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXDXZXDXHXBXpX[ / / U [././.~.(.~.(.(.(.~.^./.(./././././.~.~.~.~.~./.~./.~./.^.(.~.~.~.~.T.~.~.~.~.~.T.~.T.T.T.T.T.T.T.P.T.T.U.P.P.P.U.L.L.L.U.L.L.L.S.S.H.G.H.H.G.S.A.A.G.A.A.A.G.A.S.z.D.G.D.GXIXSXGXFXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXBXhXM.{ c Z.Z.S.S.S.S.S.S.S.A.A.A.A.A.A.A.A.A.S.A.A.A.Z.Z q y : r e e : : r r b.M * = y Y Y.G.H.U.[ 0 ; q B F.Y.T V q = = ; = Z Z.P.P.P.P.U.Y.].q q = q F.L.L.L.L.H.U.S.L.L.S.L.L.L.L.L.Y.Y.Y.T.P.T.P.U.T.U.T.T.T.T.T.Y.(.T.~././././././.(.^.(.(.(./.^.(.(.(.(.(.(./.(././.(.(.(./.(././.~.~.~.~.~.!.T.T.T.U.U.P.P.T.U.T.T.U.U.U.T.U.T.U.T.U.", "L L H L H H P H H P P H H U H H H H F U F U Y Y ` ` v.v.n.N.N.V.V.B.OX7.7.7.7.6.6.3.%.&.#.#.$.$.7 8.8 8 8 $.#.*.&.&.%.%.%.%.%.%.%.&.&.$.8 < 1 1 X 8.B.B.q.%.6.6.7.7.4.%.$.8 6 1 X 9 B.B.+XlXB.B.B.OX0.0.0.7.7.6.3.3.%.%.%.%.%.%.&.$.8 < 1 X X B.].B.B.B.B.B.B.B.B.V.%.&.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.3.3.6.6.6.7.0.0.0.0.6.3.$.8 6 C.B.B.B.B.OXjX0.rX0.7.7.3.%.%.%.%.%.%.*.$.8 8 6 < < $X$X$X%.%.3.6.7.6.3.3.3.%.%.&.*.#.8 8 6 < 4 +X#X+X+X&X+X{.+X+X@X+X#XB.6.3.6.6.6.6.3.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.&.*.#.$.3 1 . . . 7 $X$X$X$X$X#X#X#XbX$X$XbXrXjXjXrX0.6.3.%.%.%.%.%.%.#.8 6 1 X . l bXbX@X#X#X#X+X+X`.).(./.)././.).(.(.(.).`.|.+X`.#X#XvXbXzXbXbXNX0.7.7.7.7.6.6.3.%.%.%.%.%.%.6.%.%.3.6.6.6.3.6.3.3.%.%.&.#.$.8 < X . . . c $X$XbXbXbXbXbX$X$XlXkXkXjXrXrX7.3.%.%.%.%.%.%.%.&.#.#.#.#.$.#.*.6.7.0.C.OXOXOX0.C.7.0.0.0.OX$X$X$XjXkXjXjX0.7.9.%.%.%.%.%.%.&.#.$.6 1 X . . V.#X@X+X+X&X&XE.).&X).).E.+X&X$X&X$X$X+X$X$XkXjXjX0.0.6.3.&.#.8 3 1 X . 4 &X&X&XJ.J.J.x.h.h.z.z.f.s.a.u.u.u.u.u.t.u.r.i.t.u.t.t.u.t.t.t.E u.t.d.t.t.u.t.t.t.i.E t.u.u.t.t.p./ S ! CXVXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXAXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXGXDXBXm.} S ~ [ /./././.~.(./.T.(.(././././././././.~.~.~.~.~./.~./.~./.!.~.~.~.~.~.~.~.~.~.T.~.~.T.~.Y.T.T.T.T.T.T.T.T.U.P.Y.P.L.L.Y.L.L.L.U.S.L.L.H.H.H.H.H.S.G.A.A.G.h.G.A.H.A.A.G.H.D.GXGXPXGXGXFXDXAXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXBXaXM.c c H.H.S.S.S.S.S.A.S.A.A.A.A.A.A.A.A.A.Z.S.G.z.A.Z.A.Z.A.A.h.A.S.A.S.A.H.Z.Z.L.G.H.G.G.G.H.S.G.L.H.S.Y.U.U.Z.F.b.b.n.L.H.^.Y.L.P.P.P.P.L.P.F.!.H.L.H.U.L.G.U.S.U.L.L.L.L.U.L.L.L.K.P.L.T.U.T.Y.T.U.Y.U.T.T.T.~.Y.T.~.~././.!./.(././.(.^.^.(.(.{.(.(.(.(.(.(./.(./././.(./././././././.~.~.T.Y.T.T.T.I.P.P.P.P.U.U.T.U.T.Y.U.U.U.T.T.T.", "P H J J H P H P U J H P L Z H H H L K J I Y J I ` Y v.c.v.n.N.N.V.V.B.0.6.7.7.7.6.3.%.&.#.$.$.8 6 q.OX8 8 $.$.#.*.&.%.%.3.%.%.%.%.&.#.$.6 < 1 X X C.B.B.0.3.6.7.7.7.3.&.#.8 6 < 1 X B.lXB.B.$XB.lXB.0.0.0.7.7.6.6.3.3.%.%.%.%.%.*.$.8 6 < 1 . B.B.B.B.B.B.B.B.B.B.B.0.#.&.&.&.%.%.%.%.%.%.%.%.%.%.%.%.%.%.3.3.6.6.6.7.7.0.0.7.3.3.8 6 < 8.B.B.B.B.B.0.jXrX0.0.6.6.%.%.%.%.%.%.*.#.8 6 < < 1 +X$X$X7.%.6.6.7.6.6.3.3.%.%.&.*.#.$.6 6 < 1 q.@X+X).+X+X+X{.&X{.#X#X+X7.6.3.3.3.6.3.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.*.#.$.8 < X . . . ].$X$X#X#X#X#X#X#XbX$X$XJXjXjXrX0.0.6.3.%.%.%.%.%.&.$.$.3 1 X . q.vXvX#X#X+X+X`.`.)._./././.).~.).(.E./.(.|.|.|._..X.XvXvXbXvXNXbXjX7.6.6.6.6.3.3.3.%.%.%.%.%.%.%.%.3.3.3.%.%.%.%.%.%.&.#.#.$.< 1 . . . 9 $XbXbXbX$X$X$XbX$XbXbXkXjXjXjX0.7.3.%.%.%.%.%.%.%.&.*.*.#.*.#.#.%.6.6.7.0.0.0.0.7.6.6.3.3.6.OX$X+XlXkXlXjXrX0.6.6.%.%.%.%.%.%.&.#.8 3 1 . X 9 @X$X+X+X+X+X+X&X).{.{.+X&X+X$X&X+X$X$X$X$XOXkXjXjX0.7.6.1.&.$.8 < 1 X . i +X&XE.J.J.W.s.h.x.f.s.s.f.k.u.i.u.i.u.u.i.i.i.r.t.u.t.t.t.t.u.t.u.u.t.t.u.t.u.t.t.t.u.u.t.t.u.t.u.! / ! CXVXZXZXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXFXZXSXBXQ.[ ^ / ` /./.~./.(.T.~.(.~.~././././.~././.~./.!./.~./././.~././.~.~.~.~.~.~.~.~.XXU.~.[.~.T.~.T.~.T.T.T.T.T.P.T.P.P.P.P.L.U.L.U.L.Y.L.L.L.H.L.H.S.G.G.S.A.G.G.A.A.G.A.A.H.A.G.z.D.IXGXGXIXFXHXFXAXAXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXCXHXaXM.{ c A.G.S.S.S.S.S.S.S.S.A.A.l.A.A.A.A.A.h.A.A.A.A.A.G.z.H.A.h.A.H.H.H.H.A.S.L.H.L.S.G.U.L.S.L.U.H.L.L.H.S.U.G.L.U.L.L.P.Y.L.P.P.P.P.P.P.L.P.L.L.L.S.P.U.L.L.U.U.L.L.L.U.L.L.Y.L.L.L.U.U.T.L.L.I.Y.U.U.T.T.T.T.T.~.T.~.T.~.~././././.~.(.(.~.(.(.(././.(.[./.(.(./././.(./././././././.~.~.~.~.T.T.T.T.T.T.U.Y.T.U.Y.T.T.U.U.T.T.T.T.T.T.", "H P H P U H P L H J H H L H H G H D H H Y J L Y Y Y ` v.v.v.N.N.V.V.B.C.7.7.7.6.7.6.6.%.*.$.$.8 6 6 B.V.7 $.$.$.#.&.&.%.%.%.%.%.%.&.#.8 < 1 X . o +XB.B.C.6.6.7.7.7.6.3.#.$.6 < 1 1 v.B.B.OXaXB.].OXOX0.0.0.0.7.3.3.%.%.%.%.%.%.#.#.$.6 1 1 . C.B.B.B.B.V.B.V.B.V.B.+X8.#.&.*.*.%.%.%.%.%.%.%.%.%.%.%.%.3.3.3.3.3.6.7.7.7.7.3.*.8 6 < X C.B.B.B.B.B.jX0.0.0.0.7.6.%.%.%.%.%.%.*.$.8 6 < < 1 V.$X$X+X%.6.6.6.6.6.3.%.%.%.&.*.$.$.6 < 1 X X n.{.+X{.+X&X+X+X+X+X#X$X&X3.3.3.3.3.3.6.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.&.#.$.8 < X . . X c bX$X#X#X+X#X#X+X#X#X$X@XlXjXjXrX0.0.7.3.%.%.%.%.%.&.$.8 6 1 X . ' bX#X#X+X|.).`.).(.)./.).~.~.~.!.T.~./.)._.`.`.).|.`.#X#XzXbXvXNXbX7.6.6.6.6.6.3.3.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.&.#.#.8 6 1 . . . . V.bXbXbXbX$X$X$X$X$X$XlXkXkXjXrX0.6.6.%.%.%.%.%.%.%.%.&.&.*.&.%.%.3.6.7.0.0.0.0.0.6.%.*.#.#.%.+X$X$XOXkXjXjXOX0.6.3.%.%.%.%.%.%.*.$.8 1 X . . i @X$X+X+X&X&X&X).&X&X&X&X&X+X&X+X$X$X$X$X$XlXkXkXjX0.7.6.%.%.$.8 < X X X i &XE.E.J.J.W.W.W.h.k.f.a.f.u.i.a.s.u.u.u.u.r.u.t.u.t.t.u.t.t.u.t.t.t.u.u.t.u.i.E u.t.u.t.t.u.u.u.u.S S / CXFXZXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXAXGXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXDXDXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXAXFXFXFXFXFXFXAXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXZXFXZXBXm.{ Q S ` /./.T./.~.T.(.[.(.[././.~./.~.~.~.~./.~.~././.~.~././.~.^.~.[.~.XX~.E.XXT.XXT.[.T.~.~.T.T.T.T.T.P.T.T.P.T.P.Y.P.L.U.L.U.L.S.S.L.D.U.S.H.H.H.A.S.H.H.A.H.H.A.A.S.A.H.z.D.D.GXIXGXGXFXDXZXAXAXFXZXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXHXhXM.n c G.A.A.H.A.S.S.A.A.S.A.H.A.H.A.A.h.A.H.A.H.S.D.Z.S.S.A.H.A.G.h.H.A.H.H.H.H.S.D.L.S.H.G.U.S.Z.H.H.H.G.Z.P.U.L.L.L.P.U.D.L.P.P.P.P.P.L.U.P.P.P.P.P.P.L.L.L.S.U.L.L.L.L.L.L.U.L.Y.L.U.Y.I.I.T.I.L.T.U.U.T.T.T.T.T.~.T.~.Y.~.T./././.(.(.(.(.(.(.(.(./.^./.^./././.(./.(./././././././.~.T.~.T.T.T.T.T.T.U.L.T.Y.T.U.T.T.T.U.T.U.U.U.U.U.", "H P P H J H P P H Y P H H H H H H H H L L H Y U Y ` ` v.v.c.N.N.N.V.V.B.7.7.7.7.7.6.6.%.*.$.$.8 6 3 C.B.B.$.8 $.#.#.*.3.*.3.%.%.&.*.$.8 < X . . i B.B.B.B.6.7.0.7.7.6.3.#.$.8 3 1 X q.aXB.B.B.B.B.B.OX0.0.0.7.7.6.3.%.%.%.%.%.%.&.#.8 6 < 1 . 8.B.B.B.V.V.V.V.V.V.V.B.B.8.*.#.*.&.&.&.%.%.%.%.%.%.%.%.%.%.%.3.3.3.6.6.6.6.6.&.$.8 3 X X C.B.B.B.B.B.jXrX0.0.0.7.3.%.%.%.%.%.%.*.#.8 6 < 1 1 V.$X$X$XC.3.6.6.6.6.3.3.%.%.#.#.$.8 < 1 1 . . 9 {.+X).).).&X).+X{.+X+X@XC.1.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.*.#.#.8 6 1 . . . X '.$X#X#X+X#X+X+X#X#X#X#X#XB.jXjXrX0.7.3.%.&.&.&.*.*.*.$.8 < 1 . . q.#X#X#X|.).(.).(.).)./.~.E./.T.~.~.~.~./.(.E._._.#X`.#X.X#XxXzXbXJXOX6.6.6.6.6.3.3.3.%.%.%.%.%.%.%.%.%.%.%.%.%.&.&.#.$.$.6 < . . . O q.bXbX$X$X$X#X#X$X#X$XbXlXlXlXjXrX0.7.%.%.%.%.%.%.%.%.%.&.&.%.%.%.3.6.6.7.7.0.0.0.6.9.#.$.$.$.6.$X$X$XlXjXkXrXrX0.6.3.%.%.%.%.%.%.#.$.6 1 . . . V.$X+X+X+X&X+X&X+X&X&X&X+X&X+X+X$X$X+X$X$X$XUXlXlXjX0.7.6.%.#.$.6 1 X . . n.&X&XJ.J.J.x.W.s.W.s.j.s.f.i.a.u.t.f.u.t.p.t.i.r.i.t.u.t.u.t.t.u.t.u.t.t.u.r.u.u.u.u.t.t.u.u.u.u.u./ ! ! BXVXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXDXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXAXFXFXFXFXFXFXAXGXFXFXFXFXFXFXAXDXFXFXFXFXFXFXAXDXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXZXZXZXMXm.} S ! ` ~././.~.^.~.(./.(.~./.~.~.~.~.!.T./.!./.~./././././././.~.~.~.~.U.XXE.T.~.~.~.T.~.~.T.~.T.T.T.T.U.Y.T.U.Y.L.T.L.L.L.U.L.L.L.L.H.H.L.H.H.H.H.G.H.G.A.A.Z.G.S.S.S.Z.S.S.S.G.IXIXGXGXGXVXAXFXVXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXBXhXM.8.c G.G.H.A.S.S.S.S.S.S.G.h.H.A.A.A.A.A.A.G.A.A.A.A.G.A.H.A.G.S.S.S.S.A.G.H.H.H.S.A.H.G.L.H.G.L.H.H.H.D.L.D.L.L.L.L.L.P.U.U.L.L.P.P.P.P.L.P.U.U.U.L.L.L.L.L.L.L.U.P.P.L.U.L.U.U.P.P.U.Y.U.U.T.U.L.P.T.U.T.T.T.T.~.T.~.~.R.T.T.(.{.T.~.E.(.~.(.~.(.~././././././././.(.!.).T.]./.~.~.~.~.T.~.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.T.", "H H H U U H L L H H H H H H H H H H L H L H K Y Y Y Y v.v.n.v.n.N.V.V.B.OX7.7.7.7.6.3.%.*.$.$.6 3 < x B.aXaXq.$.$.#.#.#.&.&.3.&.&.#.$.6 1 X . X 8.B.B.B.+X7.7.7.0.7.7.6.*.$.8 3 1 1 4 B.hXB.B.B.B.B.OX0.0.0.0.7.6.3.3.%.%.%.%.%.&.#.$.6 < 9 X i B.B.V.V.B.V.V.V.V.B.V.B.V.6.#.#.#.*.*.*.&.%.&.%.%.%.%.%.%.%.%.%.%.3.3.3.3.3.#.$.6 1 X X C.B.B.B.B.B.OX0.rX0.7.7.6.%.&.&.*.*.*.*.$.8 3 1 1 X C.@X$X$XOX3.6.6.6.6.6.%.%.*.#.$.8 7 1 X . . . . v.).).).).).).).).#X+X+X+X6.%.&.%.&.%.%.%.%.%.%.%.%.%.%.%.%.%.&.*.#.$.8 6 1 . . . . C.#X#X+X#X#X).#X+X`.+X+X#X#XlX0.rX0.7.4.&.#.#.$.#.#.#.$.$.6 1 X . . n.#X+X+X#X).(.).).~.~.T.~./.E./.T.T.T./.E.(.)._.|.(.#X.XzX#XvXbXvXbXbX6.3.6.6.3.3.3.%.%.%.%.%.%.%.%.%.%.%.%.%.%.&.*.#.$.6 < X . . . w bX$X#X$X$X#X#X#X+X$X#X$XlXkXjXjXrX7.6.3.%.%.%.%.%.%.%.%.%.%.%.3.3.6.6.6.7.7.0.7.7.%.*.8 8 6 8 OX$X$X$XlXjXjXrX0.7.6.3.%.%.%.%.%.%.$.8 6 1 . . X $X+X#X+X+X).).&X&X&X&X+X&X+X+X+X$X$X@X$X$XlXUXkXjXrX0.6.3.&.#.8 < 1 . . . V.&X&X&XJ.W.W.x.W.x.h.s.j.s.i.u.a.u.i.t.p.u.s.t.u.t.p.t.t.t.u.u.t.u.E u.u.t.t.u.u.E u.u.u.t.u.t.u.u.P / ! ZXVXVXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXDXGXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXDXAXFXFXFXFXFXFXDXAXFXFXFXFXAXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXZXFXFXHXQ.[ ! ! ` ~.~.~.~.~.(.~.(.~.(.~././.~.~.T.!.!./././.~./.R./.~.~./.(.~.~.!.XXXXT.T.~.~.(.T.T.[.~.T.T.T.T.T.T.T.P.U.T.Y.U.U.I.L.L.L.L.H.L.L.H.H.H.D.H.H.G.S.G.G.S.H.S.A.S.S.H.S.S.S.G.GXGXGXGXFXGXFXFXAXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXBXaXM.{ x A.G.A.J.S.S.A.S.S.S.A.G.A.H.S.A.G.S.h.A.G.A.D.S.A.A.Z.S.A.A.A.A.S.H.H.S.S.H.J.D.H.H.U.A.L.L.U.S.L.U.L.L.L.L.L.L.P.Y.L.Y.L.L.U.U.D.U.L.L.L.U.U.L.L.U.L.L.U.L.U.L.U.P.L.L.L.U.P.P.U.P.Y.L.L.U.L.T.U.U.T.T.T.T.T.T.T.T.E.~.T.T.T.~.~.(./.(./.(.^./././././././././././.(.~./.~.~.~.~.~.T.T.T.T.~.T.Y.T.T.T.T.T.T.T.T.T.T.Y.Y.Y.U.T.P.T.", "H H L H H H L H H H H H H H H H H H L L L F H K ^ I ` ` v.v.c.N.N.N.V.V.V.7.7.7.7.6.6.3.*.#.$.6 6 < 3 +XB.B.B.q.$.#.#.3.*.3.&.%.&.#.$.< 1 . . 1 B.B.B.B.B.C.0.0.0.7.7.3.%.$.8 3 < 1 . B.B.B.B.OXB.B.B.0.0.0.0.7.7.3.3.%.%.%.%.%.%.#.$.6 < 1 X 4 V.B.V.V.V.V.V.V.V.V.V.V.B.V.q.#.#.#.#.#.*.&.&.%.&.%.%.%.%.%.%.%.%.%.%.%.%.*.#.8 3 1 X . 8.B.+XB.B.B.OX0.0.7.7.3.&.$.#.$.#.$.$.$.8 < < 1 X X q.$X$X$X$X7.3.6.6.6.6.%.*.#.$.8 3 1 X . . . X w E.&X).).).).).).).).+X+X+X&X%.&.*.*.&.%.%.%.&.&.%.&.%.%.%.&.&.&.#.$.8 6 1 X . . . i #X#X#X+X).+X).`.+X).#X+X+X+XB.0.7.7.3.&.$.$.8 $.8 $.$.8 7 1 X X . . N.@X#X#X)._.).~.E.).T.E.R.T.Y.Y.E.T.R./.~.^./.{.(.|.(.`..X#XxX#XbXJXNXOX3.3.3.3.3.3.%.%.%.%.%.%.%.%.%.%.%.%.&.*.#.$.8 8 1 X . . . + #XbX#X#X#X#X+X#X#X+X#X$X$XkXlXjXrXrX7.6.%.%.%.%.%.%.%.&.%.%.%.%.3.3.3.6.6.6.6.6.6.%.*.$.6 3 3 8 @X$X$X$XjXjXjXjX0.7.9.3.%.%.%.%.%.*.$.8 < X . . i $X@X+X+X&X&X+X+X{.OXlX+X&X+X+X+X$X$X$X$XlXUXUXkXjX0.0.6.%.*.$.8 < X . X 9 &X&X&XJ.E.W.W.x.W.j.h.j.j.s.s.s.i.u.t.u.i.u.t.u.u.t.u.t.s.t.E a.u.u.a.u.u.u.u.t.u.u.t.u.u.u.u.u.u.u.! ! ! CXVXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXAXDXFXFXFXFXGXDXDXDXFXFXFXFXDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXZXZXDXDXBXm.{ ! ~ ` ~.~.~././.~.~.~.~.~./.~.~.T.~.~.(.T.~./.~.~././././.(./.T.~.!.~.~.~./.~.^.~.[.~.[.T.T.T.~.T.T.Y.U.T.U.T.T.L.P.Y.L.U.L.L.L.S.L.H.H.H.S.H.H.H.S.S.H.H.H.H.S.H.S.S.A.G.S.S.G.IXGXGXGXGXAXAXFXAXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXVXBXaXM.{ c Z.G.S.H.S.S.A.S.S.S.H.A.H.A.S.S.S.S.H.S.A.A.G.G.Z.H.S.S.S.S.H.S.S.S.S.H.A.G.H.S.G.S.U.H.H.H.P.L.S.U.H.S.L.U.L.U.L.U.P.L.L.L.U.D.P.L.P.L.U.U.L.P.P.P.L.L.L.U.U.U.L.L.P.P.T.P.P.P.P.P.U.U.U.L.L.Y.U.U.U.T.T.T.T.~.T.T.T.T.^.T.~.~.T.)./.(.~.~././.[././.~././././.!./.(.~.~.~.~.~.~.I.T.T.T.T.T.T.!.Y.T.T.T.T.T.[.T.T.T.~.~.Y.^.P.T.T.", "H H H H H H H H H J H H H H H H H F F H J U Y I Y Y ` ` ` c.n.c.N.N.V.V.V.0.7.7.7.7.6.3.%.#.$.8 6 < 1 8.B.B.OX+Xq.$.#.#.#.&.&.&.*.$.8 < X . . w B.B.B.B.OXB.7.0.0.0.7.6.%.#.$.6 < 1 X C.B.B.lX+XB.B.B.OX0.0.0.7.7.6.3.%.%.%.%.%.&.*.$.8 3 1 1 9 V.V.V.V.V.n.N.N.F.V.V.V.V.V.V.*.$.$.$.#.#.#.#.&.&.&.&.%.%.%.%.%.%.%.%.&.%.*.$.8 3 1 X . v.B.B.B.B.B.OX0.7.6.%.%.#.$.8 $.8 8 8 8 6 < 1 . . X c $X$X$X$XB.3.6.6.6.3.%.#.$.6 < 1 . . . . X v.&X).).E.).E.E.E.).).).).&X+X$XV.#.#.#.#.#.#.#.*.*.*.*.%.%.*.*.#.$.$.8 6 1 X . . . 9 +X#X+X#X+X).`.+X).).).).|.).+XOX0.6.%.&.$.$.6 6 6 6 6 6 6 < 1 X . . . N.#X).)._.).).~.~.~.T.Y.R.T.U.U.U.T.Y.T./.~./.E.(.).|.`.`.#X.X#X#XvXNX@X6.3.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.*.#.$.$.6 1 X X . . X V.bX#X#X#X+X+X+X+X+X+X+X+X$XkXjXjXOX0.7.3.%.&.&.&.&.&.&.*.&.%.%.%.%.3.3.3.%.6.6.3.&.#.$.< 1 X 1 q.$X@X$XOXjXjXjXjX0.0.9.3.%.%.%.%.%.#.$.8 1 X . . C.$X+X+X+X).%X&X&X&XJXUXkXlXlX+X$XB.$XlXlXUXlXlXjXrX0.7.3.%.$.8 < X . . q.&X&X&XJ.J.x.W.j.j.j.x.s.j.s.a.a.s.i.i.s.u.u.u.t.t.s.t.u.t.u.u.u.t.t.u.u.u.i.u.u.u.t.u.u.u.u.u.u.u.u.S S / CXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXAXDXAXDXAXDXFXFXFXFXFXFXDXAXFXFXFXFXSXDXAXDXFXFXFXFXGXSXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXSXZXZXDXDXBXpX[ / Q T ~.[.^./.~.(.(.~.~.~.~.~.[.~.(.T.R.~.~.~.~.~.~./.~.!.T.~.(.~.~.~.T.T.~.~.T.^.T.~.T.~.~.~.T.T.T.P.T.Y.T.U.T.T.T.L.U.L.L.L.L.L.L.H.H.H.H.H.H.H.S.G.Z.G.G.G.G.Z.S.S.H.G.S.S.G.GXIXIXGXFXFXFXAXAXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXGXVXBXhXM.n c S.G.S.S.S.S.S.S.S.H.A.H.G.H.S.S.S.S.F.H.K.G.G.G.G.G.S.A.S.H.G.A.A.G.A.H.S.H.G.S.L.U.D.S.U.H.S.L.L.U.U.L.U.L.K.L.L.S.P.P.L.L.S.P.P.F.S.L.H.L.U.P.P.P.U.U.L.U.U.L.U.U.P.P.P.Y.P.P.U.Y.P.U.U.U.T.P.U.U.Y.T.T.T.T.T.~.T.~.(.T.T.T.~.~.XXT.(.~.(././.~././.^./././.(././.~.~.~.~.~.~.~.I.T.~.T.T.T.T.T.T.T.T.T.T.~.T.T.T.~.T.T.T.P.T.T.T.", "H H H H H H H K H H H Z L J H H U J F L L L L G K Y ` ` ` v.c.v.v.N.N.V.V.OX7.7.7.6.6.6.3.&.$.8 6 3 1 i B.B.B.B.B.6.$.#.#.*.*.*.*.$.6 1 X . X v.B.B.B.B.B.OX0.0.0.7.7.7.3.#.$.6 3 1 . 8.B.B.B.B.B.B.B.B.0.0.0.7.6.6.%.&.&.&.*.*.*.#.$.6 < 1 X . V.V.V.N.C.n.N.N.N.C.V.V.V.V.V.V.q.$.$.$.$.2.$.#.#.*.*.*.3.#.3.3.%.%.&.%.&.#.$.6 1 1 . . v.B.aXB.B.B.B.7.4.3.3.$.8 6 6 6 6 6 6 < < 1 . . . . v.$X$X$X$X$X7.%.6.9.%.#.$.8 3 1 . . . . 9 V.).&X).).E.E.E.E.E.E.).).).).).#X+XC.#.#.$.$.#.$.$.#.$.#.$.#.$.$.8 8 6 < 1 X . . . X +X#X+X+X`.+X).).)./.).(._.).+X+XOX3.%.#.$.8 < < < < < < 1 1 1 X . . . . V.|.`.).).)././.E.T.E.T.Y.U.I.U.Y.U.U.Y.R.E.^.~./.(.).`.|.`.#X#X#XxXvXbXhX%.&.*.*.*.*.*.*.*.&.&.&.&.&.*.#.#.$.$.8 3 1 X . . . o B.$X$X#X#X#X{.+X+X#X+X+X%X+X$XrXjX0.0.6.%.*.$.#.#.#.#.#.#.#.#.#.*.#.*.&.&.%.%.&.%.*.#.8 6 1 1 . X &X$X+X$XOXjXjXjXjX0.6.3.%.%.%.%.%.&.#.$.6 1 . . . $X$X+X+X&X+X&X+X).).JXkXkXkXkXjXjXjXkXkXkXkXkXjXjX0.7.6.3.#.$.6 1 X . . X &X).E.E.J.J.J.W.W.x.h.h.z.z.a.a.a.i.s.i.i.t.i.u.u.u.t.i.u.t.s.u.u.u.u.u.u.u.E u.t.u.i.u.u.u.u.u.u.i.u./ S / CXZXZXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXAXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXGXSXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXDXSXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXDXAXDXAXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXDXDXZXBXm.} ! ! ` ~././.^.~.~.~.~.~.~.~.~.!.T.~.~.(.R././.~.(.~././.(.(.~.~.~.).XX~.~.~.~.T.T.(.T.~.T.~.T.T.T.T.T.Y.Y.T.T.P.T.P.P.P.P.P.U.L.L.L.S.H.H.H.G.H.G.S.G.S.S.S.H.S.H.S.H.G.S.G.G.H.DXIXGXGXGXFXFXFXVXAXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXBXaXM.n c H.H.G.A.G.A.A.G.G.A.H.S.G.H.S.H.S.H.G.H.H.S.H.H.H.S.S.S.H.S.S.S.S.A.A.H.H.A.H.H.H.H.H.H.L.L.L.S.L.L.U.L.L.L.S.L.H.L.U.D.U.L.L.S.L.L.L.L.L.Y.P.P.U.U.Y.U.U.P.L.L.U.P.P.P.P.P.T.P.U.P.T.P.U.U.T.U.U.T.T.T.T.T.T.T.T.~.P.~.T.~.~.~.~.~.~.~./.[.~.~./.^.~.~./.(./.T.(.~.~.~.~.T.~.T.T.~.T.~.T.T.K.T.~.T.T.T.T.T.T.T.~.T.T.^.~.T.T.T.~.T.", "J D D H H H H H D H H H H F H H H H D H J F L K Y I Y Y ` v.v.b.n.N.N.V.V.B.7.7.7.7.7.6.3.%.$.$.6 < < < B.B.B.B.B.hXq.#.#.#.*.#.#.$.6 1 . . . OXB.B.B.B.B.B.C.0.0.0.7.7.3.#.$.8 < 1 X i B.B.B.B.B.B.B.B.7.7.7.7.3.%.#.#.$.#.$.$.$.8 6 < < X . . v.V.N.N.n.N.N.N.n.n.N.N.n.V.V.V.B.q.8 $.$.$.$.$.$.$.#.$.#.#.#.3.&.#.#.#.#.$.8 < 1 X . . C.OXV.B.V.B.V.3.3.#.$.8 6 < 1 1 < 1 1 1 1 X . . . . 4 $X$X$X$X$X+X6.3.%.&.#.8 < X . . . . i &X&X).).E.E.E.E.T.E.E.E.E.E.).).+X).+X#XC.$.$.$.$.$.8 $.$.8 $.8 8 6 6 < < 1 . . . . X V.#X+X+X+X).`.(.).).).).).).).&X&XC.&.#.$.8 < < 1 X 1 1 1 1 1 X . . X . . #X+X+X(./.).E.T.T.T.U.R.U.I.U.U.U.U.T.T.R.T.~.~.T.).(.`.)..X`..X#X#XbXvXbXC.*.*.#.#.#.#.#.#.#.#.#.#.#.$.$.$.8 6 < 1 X . . . X B.#X#X#X#X).+X+X+X).).+X).`.+XOXrX0.7.6.%.#.$.$.8 $.8 8 $.$.$.$.$.$.$.$.$.$.$.#.$.$.$.8 6 1 X . . 7 +X$X$X$XOXjXjXrX0.7.6.%.*.&.&.%.&.*.$.6 < 1 . X 7 +X+X+X&X+X).&X&X&X&XlXUXUXkXjXjXjXrXjXjXkXjXjXrX0.7.6.3.&.$.8 < X . . . i ).&X).E.E.J.W.x.A.A.h.f.f.f.f.a.i.i.a.i.t.i.t.t.u.u.t.r.u.t.t.u.u.u.t.u.u.u.u.u.u.u.E u.u.u.u.u.u.u.i.S ! / CXZXZXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXAXDXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXFXAXFXFXFXFXFXFXFXFXFXFXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXDXGXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXCXDXBXm.[ ~ ~ ` /./.~.~.^.E.(.(.~.^.~.~.~.~.~.T.T.~.T.T.~.~.~./.~.~.T.~.~.XXU.~.~.T.~.T.~.~.E.T.~.~.~.T.T.T.T.T.Y.T.T.U.T.P.T.P.P.P.L.L.S.L.L.F.H.G.H.H.G.G.S.G.H.H.S.H.H.G.H.H.S.S.H.H.H.IXGXGXGXGXHXVXFXFXZXZXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXVXZXaXM.{ c A.S.H.G.H.S.H.G.G.G.S.S.S.S.G.D.G.G.G.H.H.H.H.H.H.H.H.S.S.H.S.S.S.S.H.A.H.G.H.H.D.H.H.H.H.Y.H.L.L.L.U.S.U.S.L.L.S.L.U.S.U.L.L.U.L.L.L.U.L.L.L.U.L.U.Y.U.T.U.Y.U.P.U.P.P.T.P.P.T.T.U.U.Y.P.T.U.U.T.T.T.T.T.T.(.T.~.T.^.T.~.T.~.~.~.T.~.~./.~.~.~.~.~.~./.~.~.~.(.~.~.~.~.T.~.~.T.T.~.T.K.T.R.~.T.T.T.~.T.T.~.~.~.T.T.^.T.T.T.~.T.~.~.", "F H H H H H H H L H H H H H H Z H D D H L H L Y L I ) ` ` v.` v.v.C.N.N.V.V.OX6.7.7.7.6.6.%.#.$.8 6 1 1 8.lXB.B.B.B.B.q.$.#.#.#.$.$.< 1 . . w B.&XB.B.B.B.B.OX7.7.7.6.6.3.$.8 6 < X X X B.B.V.B.B.V.B.B.0.6.3.3.%.#.$.8 8 8 8 8 8 7 3 1 X . . . q.V.C.n.N.N.N.v.N.v.N.C.N.N.V.V.V.V.C.$.8 8 8 $.$.$.$.$.$.$.$.$.$.$.$.$.$.6 3 1 X . . . q.V.B.B.B.V.V.6.$.$.8 3 < 1 1 1 X 1 1 X . . . . . . 4 $X$X$X$X$X$XC.%.&.#.8 3 1 . . . X v.).+X).E.).E.E.E.E.E.U.E.U.E.E.).).).).&X+X+XC.$.8 8 8 8 6 8 8 6 6 < < < X X . . . . 4 ].#X+X+X).`.).).)./.E.E.).E./.).).&XC.#.8 6 < 1 1 X X . X X X . . X X . . {.{.(.).)./.E.E.E.T.R.R.U.R.U.L.L.U.I.Y.I.Y.R.~./.E.E.{._.|.#X)..X.XdX#XbXbX8.#.$.$.$.$.$.$.$.$.$.8 8 8 8 3 < 1 X . . . . X V.@X#X#X).+X`.+X).).)._.).).+X&XOX0.6.%.*.#.$.6 6 6 8 6 8 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 1 X . . . v.$X+X+X$X0.rXrX0.7.3.%.#.#.#.#.#.#.#.8 6 1 . . . v.+X+X+X+X).&X&X+X+X+XlXUXkXkXkXjXrXrXjXrXrXrXrX0.7.6.3.&.#.8 3 1 . . . X ).+X&XE.J.J.J.G.h.h.h.h.z.f.a.k.f.i.i.i.u.u.u.i.u.p.u.a.u.u.u.u.E i.u.u.E u.u.u.u.u.u.p.u.u.u.u.u.i.i.i.S / / CXAXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXDXFXFXFXFXFXFXFXFXFXFXAXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXAXDXDXBXQ.[ ~ ~ ` ~.~./.~.~./.~.~./.~.~.~.T.~.T.^.~.T.~.T.R.~.~.T./.~.{.~.~.T.~.~.T.~.T.~.T.~.T.[.~.T.~.T.T.T.T.T.T.T.T.U.L.Y.L.Y.U.U.L.L.L.H.H.L.H.G.H.H.G.H.H.A.S.S.H.S.S.S.G.H.S.S.S.G.U.GXGXPXGXFXAXAXVXAXZXGXFXHXAXAXFXHXHXVXFXFXFXFXVXVXFXAXZXHXVXVXFXFXHXAXSXBXhXM.' x S.Z.A.A.S.S.G.A.Z.G.G.G.S.H.S.G.H.H.H.H.H.H.U.S.L.S.H.H.H.H.G.S.H.A.S.S.S.G.G.H.H.H.K.H.H.H.L.L.H.L.H.U.L.L.L.S.L.L.L.L.L.L.L.L.L.L.L.U.U.L.P.P.P.T.U.U.T.P.T.P.Y.U.T.P.T.T.T.T.T.U.U.T.U.T.T.T.T.T.T.T.T.T.T.T.T.[.E.[.U.XX~.T.~.~.~.~.[.T.~.~.~.~.!.~.~./.~.~.~.~.~.~.~.~.T.~.T.T.T.T.I.Y.T.T.T.T.~.T.T.T.T.(.~.T.T.T.~.~.T.~.T.T.", "H Z H D H H H H H H H H H H H H H H H H H L H F U I Y Y ` Y v.v.v.b.n.N.C.V.V.7.7.7.7.6.6.3.&.$.8 6 < 1 i B.B.B.B.B.B.OXC.$.#.$.$.6 < 1 . . i B.V.OXB.B.B.B.B.7.7.6.3.&.#.$.6 3 1 X . . N.B.B.].V.B.B.V.0.6.3.&.#.$.8 6 6 3 6 3 < < < X X . . . i n.N.N.n.v.n.N.v.n.n.v.v.N.N.n.V.N.V.C.q.6 6 8 6 8 8 8 8 8 8 8 8 8 8 6 6 < 1 X . . . . c V.V.V.V.V.V.6.$.6 3 < 1 . . . . . . . . . . . . . w +X+X+X$X@X+X+X3.#.$.8 1 . . . 9 V.+X+X&XE.E.E.E.E.I.U.E.U.J.E.U.E.E.~.E.).&X+X+X+XV.q.8 6 6 6 < 3 < 1 < 1 X . . . . . w +X+X|.+X).).).)./.E.).E./.E./.).E.).).).V.V.N.V.W.n.V.N.C.N.V.C.v.i q.c i c i +X).)./.E.~.T.R.R.Y.U.U.L.H.L.L.K.Y.I.I.L.Y.R.T.T.~.(.(.).(.`.`.#X#X+X#XbXbX$X8.$.$.$.8 8 8 8 8 8 6 6 6 < 1 1 . . . . X 4 ].#X#X#X#X`.+X).).).).).E.).).{.).OX6.9.*.$.8 6 < < < < < < < < 3 < < 6 < 6 6 6 6 6 8 6 < < 1 X . . 1 &X$X$X$XB.0.0.7.6.3.#.$.$.$.$.$.$.$.8 6 < X . . . &X+X+X&X&X+X&X).&X).&XlXkXkXkXkXjXrX0.0.0.0.0.7.6.6.3.*.$.8 3 1 . . . X v.&X&X&XJ.E.J.W.G.W.h.h.z.z.f.l.s.a.a.i.i.i.u.u.i.p.u.t.u.t.t.u.t.u.t.u.u.u.u.u.u.u.t.u.p.u.u.i.u.i.i.p.i.! S / CXAXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXDXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXCXHXpX} ^ ^ ` ~.~.T.~.~.~.~.~.~.~.~.~./.~.T.T.T.~.T.~.~.~.(./.R.~.~.T.~.~.~.T.~.T.~.T.~.T.~.P.T.~.Y.T.~.T.T.T.T.T.T.U.Y.U.L.L.L.L.D.Y.L.L.L.H.S.G.G.G.G.H.A.H.A.S.H.A.H.H.A.A.G.S.G.A.G.GXSXGXGXFXVXCXFXAXFXZXFXVXFXFXAXFXZXVXAXFXAXAXFXFXFXFXVXVXFXHXFXFXAXAXZXJXaXM.c n S.S.A.A.S.S.G.G.H.R.S.G.H.H.H.H.H.H.H.H.H.H.H.S.L.U.H.S.H.H.H.H.H.H.S.S.G.S.H.H.H.H.H.H.H.L.L.S.L.L.U.S.S.L.L.L.L.S.L.L.L.L.L.L.L.L.L.U.Y.L.P.P.T.T.T.U.U.T.T.T.P.Y.P.T.T.P.T.P.U.T.Y.T.T.T.L.T.T.T.T.T.T.T.~.T.~.T.R.T.XXT.T.~.T.~.~.T.T.~.~.~.~.~.R.~.~.~.T.~.~.~.T.~.T.T.~.K.T.T.~.T.~.Y.T.~.T.~.T.T.~.R.R./.T.~.~.~.T.~.~.T.T.~.", "H H H H H H H H D H H H H H G J L H G H H L H L L K I I ` ` v.` v.v.N.N.N.V.V.C.7.7.7.6.6.3.*.$.8 6 < 1 1 B.B.B.B.B.B.B.B.8.#.$.$.6 < X . . C.B.V.B.V.B.B.B.V.7.6.3.#.#.$.8 3 1 X . . . 8.V.V.V.V.V.B.V.C.4.*.$.8 8 3 < < < 1 1 1 1 X X . . . . 4 N.n.N.c.n.c.c.c.v.c.v.n.C.n.n.C.N.V.V.V.8.7 7 6 6 6 6 6 6 6 6 6 4 3 3 1 1 X . . . . . i V.V.V.V.V.V.C.q.q.v.v.8.v.v.v.v.v.C.C.V.&X+X+X+X).).+X+X&X#X+X+X+XC.#.8 < 1 . . w ).&X&X).).E.E.E.E.J.J.E.I.J.I.E.E.I.R.).E.E.&X&X+X{.+X#X8.7 < < < 1 1 1 X X . . . . 9 v.#X#X+X+X{.).).).E./.E.E.E.E.E.E.T.E.(.).).).+X|.#X`.+X#X+X#X#X#X#X#X`.#X+X#X+X&X{.).).E.~.E.T.T.U.I.U.R.U.K.U.U.L.K.K.L.R.Y.R.R.T.~.E.^.(.).).`.|.#X#X'.#X$XvX#XC.$.8 8 7 7 < < 3 < 1 1 1 X . . . . . c $X$X#X+X#X)._.).)././.).E./.{.&X).).7.%.#.$.6 6 < 1 1 1 1 1 1 1 1 1 < 1 < 1 < 1 1 1 < 1 < 1 X X . . . w $X+X$X+XOX7.6.3.%.#.$.8 6 8 6 8 8 6 6 < X . . . 9 +X+X+X&X&X&X).&X&X&X+XlXkXkXkXjXrX0.7.7.7.7.6.6.3.&.#.$.8 < 1 . . . . i +X&XE.E.E.J.J.W.G.W.W.j.h.f.f.z.f.f.a.a.s.i.i.t.t.u.u.u.u.u.t.u.u.u.t.u.i.t.u.u.t.u.u.u.u.u.i.u.u.u.i.i.a./ S ! BXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXGXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXAXFXFXFXFXBXQ.{ ~ S [ ~.~.T.~.XXE.~.~.~.~.T.~.T.~.T.T.T.T.T.T.T.(.~.~./.~.~.~.T.~.T.T.T.~.~.T.T.T.~.T.T.~.Y.Y.T.T.T.T.T.T.T.T.U.U.L.Y.U.L.L.L.L.L.H.H.H.Z.Z.G.G.Z.A.A.H.S.H.G.A.H.S.H.H.G.A.H.D.GXGXGXGXHXVXCXHXZXGXGXFXVXVXZXDXDXFXZXVXZXVXVXFXCXZXAXHXVXGXHXVXHXZXDXgXJXm.M.c - Z.S.S.A.H.H.G.G.G.G.L.A.S.H.H.S.H.S.H.H.S.L.S.S.L.S.H.H.S.H.H.H.A.H.S.S.G.S.H.S.H.S.H.S.H.H.L.L.H.L.L.L.L.L.S.L.L.L.L.L.S.Y.L.L.L.L.L.Y.L.Y.P.T.T.T.T.T.T.T.P.T.T.T.T.T.T.T.T.T.T.T.T.Y.T.T.T.T.T.T.T.T.T.T.T.~.~.T.~.T.XXXX~.T.~.T.T.T.~.T.T.~.T.T.T.~.~.~.~.~.~.~.K.~.~.~.~.T.T.~.K.T.T.T.T.T.U.T.T.T.T.T.T.~.~.~.~.~.~.Y.~.T.~.T.", "H F H H H H H F H H H D H H F J D H K H H H H L U Y Y Y Y ` ` v.b.v.v.n.N.n.V.C.6.7.6.6.3.&.#.$.8 < 1 1 . C.B.B.B.B.B.B.B.B.C.$.8 6 < . . 3 V.V.V.C.V.V.B.V.B.C.3.*.#.$.6 6 1 X X . . . i V.V.V.V.V.V.V.V.3.$.$.8 3 1 1 X X X X X X X . . . . . 9 n.n.c.v.b.c.v.c.v.n.b.v.n.N.v.N.N.n.V.V.V.V.q.6 6 6 3 3 < < 1 < 1 1 X X X . . . . X c V.V.V.N.V.N.N.N.V.N.V.N.N.V.C.N.C.V.N.V.V.B.&X+X+X+X+X+X@X&X&X+X).+X+Xq.6 < X . i &X).).).E.E.E.E.T.U.E.J.J.I.J.J.J.I.I.U.T.E.E.{.).).+X+X+X{.+XC.i 1 1 X X . . . X w N.#X#X).+X+X).).).).E.T.E.~.E.T.R.T.E.~.E.E.E.E.{.).).).#X+X+X#X+X).#X|.+X#X#X).|.{.{.(.(.E.T.E.E.E.R.I.U.U.I.L.U.L.L.L.L.U.L.L.Y.U.R.T.E.T././.{._.{.{.).'.+X#X.X#X#X#XV.8 6 < 3 < < 1 1 1 X X . . . . w V.@X#X+X`.+X).).).).E.E.E.E.E.E.U.).E.).q.#.8 6 < 1 1 . X 1 . X X 1 X X X X X 1 1 9 1 1 1 1 1 1 . . . . X q.+X+X+X+XC.3.%.&.$.8 6 < < < 6 3 6 < 1 1 . . . . v.+X&X&X).+X).).).E.&X&XlXjXjXrXrXrX6.6.6.3.3.3.3.*.$.$.8 < 1 . . . . 9 ).).&XE.E.E.J.W.W.J.x.h.h.j.h.f.f.a.a.a.a.f.i.i.i.i.u.u.u.i.u.u.t.u.u.u.u.E u.t.u.u.u.u.u.u.u.u.i.i.i.i.a.a./ / / CXVXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXAXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXSXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXZXZXBXm.[ ~ ~ ` T.~.T.~.U.XXT.~.~.~.~.~.T.T.T.~.T.T.T.~.T.T.~.~.R.~.~.T.~.T.T.T.T.T.T.~.T.~.~.T.T.~.T.~.T.T.T.T.T.T.Y.U.P.P.L.Y.L.S.S.L.H.S.H.H.H.H.G.H.G.H.H.A.S.A.Z.S.A.S.S.H.A.H.A.A.G.GXGXFXCXHXJXgXfXJXBXJXBXJXBXfXgXHXJXfXJXBXJXCXBXJXgXBXfXBXfXJXgXnXfXfXJXaX{ x c z S.S.H.S.S.A.H.F.G.G.G.G.H.L.H.S.U.D.H.L.L.H.L.L.L.L.L.H.L.H.H.H.H.S.G.S.G.D.H.H.H.H.H.H.H.H.K.H.L.H.L.S.H.S.L.L.L.H.L.L.U.D.L.L.L.U.L.L.I.I.P.P.P.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.T.~.~.~.T.T./.~.T.[.E.~.~.T.T.T.~.T.T.~.T.T.~.T.T.T.T.T.T.T.T.~.T.T.T.T.T.T.T.~.T.~.T.T.~.T.T.T.~.T.T.~.R.T.~./.~.~.~.~.T.T.~.", "D D D D D Z F H D D D Z D H H H H H G H H H H L F J P I ) ` Y v.v.b.v.N.N.C.N.V.7.6.3.3.*.#.$.8 < 1 1 X . l B.B.B.B.B.B.V.V.V.8.8 3 1 . . w n.V.V.W.V.n.V.V.C.C.&.#.$.6 3 1 X X . . . . 9 V.V.N.V.N.V.V.V.q.$.8 < 1 X X . . . . . . X 9 9 4 9 w w N.v.c.v.v.v.v.c.b.c.c.v.v.v.v.N.n.N.N.m.V.V.V.N.8.7 < 9 1 1 1 1 X X X . . . . X i N.V.V.N.N.N.N.N.N.N.C.n.N.N.N.N.C.N.N.N.N.V.V.K.).).).).&X).&X&X&X&X).).).K.6 9 1 v.&X&XE.).E.E.E.E.U.U.J.J.J.L.J.L.J.H.U.I.U.E.E.E.E.E.).).).).+X+X&X+X@XV.n.N.n.V.V.#X#X`.#X+X+X`.)./.).).E./.T.E.T.T.R.E.U.E.T.E.E.(./.{./.).+X).{.#X{.+X+X#X+X+X).).{.).+XXXE.E.E./.R.I.Y.I.I.I.J.U.L.L.L.L.L.L.L.L.L.Y.I.U.T.R.~.E.~.^.(.).).(._.+X`.#X#X#XvX#X@XC.7 3 1 9 1 X X . . . X i V.#X#X#X+X+X`.+X)./.).E.E.E.U.E.R.E.E.E.E.E.{.&X&X).&X+XW.n.n.C.V.v.q.] q.] i w w 7 7 X X X . X X . . . . . . W.+X+X&X+Xq.3.#.$.8 6 < 1 1 1 1 1 1 1 1 . . . . . E.&X&X&X&XXX&X&X).).&X&XjXjX0.0.7.9.3.*.*.#.#.$.$.8 6 < < X . . . . 9 ).+X).E.&X&XJ.J.J.J.x.W.h.x.h.f.h.j.f.g.a.a.a.i.u.i.i.i.u.i.u.u.u.u.t.u.u.u.u.u.t.u.u.u.u.u.u.u.i.i.u.a.i.a.a.P / / ZXVXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXDXAXDXDXFXFXFXFXFXFXDXAXDXAXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXDXZXHXm.} S ~ [ /.T.~.~.~.~.T.~.~.T.~.T.T.~.~.T.~.~.~.T./.T.~.T.~.~.~.T.~.T.T.T.T.T.T.T.T.T.T.~.~.T.~.T.~.Y.T.T.T.T.U.Y.P.U.P.L.L.L.L.L.H.L.S.H.H.G.G.H.G.H.A.S.S.A.A.S.S.A.S.S.H.A.A.H.A.CXBXJXaXpXpXM.pXM.m.pXM.m.M.M.m.M.M.M.M.pXM.pXM.m.M.m.V.aXM.m.M.M.M.M.M.{ l w z t A.S.A.S.H.H.H.H.K.A.H.L.L.H.H.U.L.S.K.L.H.L.L.S.I.S.L.L.H.H.H.H.H.S.S.S.S.H.G.H.H.H.K.H.H.K.S.L.H.H.L.H.F.L.L.L.L.S.L.S.L.L.L.L.L.L.U.U.I.U.P.T.T.P.T.T.T.T.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.~.T.~.~.T.~.T.~.T.~.~.~.~.~.~.~.T.T./.~.T.~.T.T.T.T.T.~.T.T.~.T.~.~.T.~.~.~.T.T.T.T.T.K.T.K.T.T.T.T.T.~.T.T.~.~.~.~.~./.~.~.~.~.T.~.~.", "H H H F F D D D F H K H H H H H F L K H H H H L I K Y I Y Y ` ` ` v.v.v.v.N.N.N.C.3.%.#.$.$.8 < 1 1 X X . X B.V.V.V.V.V.V.V.F.V.q.3 < X . v.V.C.N.C.V.n.C.n.V.V.#.$.6 3 1 1 . . . . . . . V.n.C.n.N.V.n.N.v.q.x q.c v.] 8.v.C.V.V.V.V.N.V.n.C.n.N.n.c.c.v.b.` [ ` v.` v.c.v.n.v.c.v.n.n.V.n.N.V.N.V.V.C.q.i 7 X X . . . 9 9 u 8.V.V.N.N.C.N.N.n.C.N.v.n.N.n.N.n.N.n.N.n.N.n.N.n.n.].E.E.).E.E.E.&X&X&X&X).).).).q.9 n.&X&XE.E.E.E.E.E.U.E.J.J.U.J.J.J.H.J.J.J.J.J.J.R.T.E.E.E.E.(.).).&X&X+X+X+X+X+X+X+X).#X+X+X+X).).).).)./.E.).T.E.R.E.R.U.E.U.R.R.T.R.E.E.E.).(.{.).).).{.).{.|.).|.).|.).).{.).).E.~.T.E.Y.T.I.I.U.U.L.H.L.L.L.L.S.L.L.L.L.I.U.U.Y.R.T.~.E.(./.(.(.).`.`.).+X|.#X#X#X#X#XB.N.q.i 4 w c q.N.$X#X#X#X+X|.#X).).).).).E.R.E.I.E.E.U.U.U.U.E.E.E.E.E.).).&X&X&X+X&X&X+X+X+X+X+X+X+X+X@X+X+X+X+X&X&XC.n.n.C.v.i v.+X&X&X+X&X3.$.8 6 3 < 1 X 1 X 1 X 1 X . . . . . 9 &X{.).E.E.&XE.E.E.E.).+X0.0.0.7.4.3.$.$.$.8 $.8 6 6 < 1 X . . . . 4 +X&X).).&XE.J.J.J.J.h.G.h.h.h.h.f.z.a.a.a.d.a.a.i.i.u.i.u.i.u.u.u.u.t.u.u.E u.t.u.u.t.u.i.i.u.u.i.u.i.i.a.a.a.a./ S / BXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXAXDXFXFXFXFXFXFXAXDXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXAXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXZXDXBXm.[ ~ S ` T.~.~.T.T.~.~.~.T.~.~.T.~.T.~.T.T.T.T.T.T.~.T.~.T.T.~.~.T.T.~.T.T.~.T.T.~.~.~.T.T.~.T.T.T.T.T.T.T.U.P.P.P.P.P.L.L.S.S.L.S.L.H.H.H.H.G.H.A.H.A.A.A.A.A.A.A.A.A.A.H.A.A.z.A.hXhXsXM.{ c c n c c c n b c c n c c n c c c n n c n c c n n n c c c c x w z w w K G.G.S.G.h.H.H.H.H.H.L.G.L.L.H.S.S.D.H.H.L.L.L.L.L.L.L.H.L.H.H.H.H.H.S.G.H.S.H.H.H.H.H.H.H.L.L.H.L.F.L.L.L.L.S.L.L.L.L.L.L.L.L.L.L.L.U.Y.U.U.P.T.P.T.P.T.T.T.T.T.T.T.T.~.T.T.T.T.T.T.~.~.~.T.T.~.T.T.T.~.T.~.T.~.~.~.~.~.~.~.~.~.T.XXT.T.T.T.T.T.T.T.~.T.T.~.T.T.T.~.K.~.T.T.~.T.T.T.~.T.T.T.T.T.T.T.~.T.T.~.~.~.~.~././.~.(.~.~.~.~.", "H Z H D D Z H Z D H H D H Z H H H H Z Z H H J D L L P I U ` Y ` ` v.v.v.c.n.n.C.N.3.#.#.$.8 < < X X . . . . q.V.V.V.V.V.N.N.C.n.N.q.3 1 X N.N.v.C.N.N.N.N.C.n.N.q.8 7 7 7 w i i w q.q.' ] N.n.N.n.N.v.N.N.C.N.V.N.C.N.V.N.V.N.V.N.N.C.n.N.N.v.N.c.v.c.c.v.` v.` ` v.` v.v.` v.v.c.c.n.c.N.N.N.n.C.N.N.V.V.V.V.V.V.V.V.V.V.V.V.N.N.N.N.N.N.n.v.n.c.N.n.n.c.N.N.v.n.N.c.v.N.n.N.n.n.K.E.E.E.E.E.E.E.E.E.E.E.E.E.E.K.W.E.E.E.E.E.E.I.E.E.I.L.J.J.J.J.W.J.G.J.J.J.H.J.I.I.I.E.E.E.E.E.).(.{.).).).#X).+X).#X).#X).).).)./.).)./.E.E.E.R.R.U.U.E.U.U.U.U.I.E.T.E./.[.).E.).(.).)._.).).)._.).(.(.(.(.(.E.~.E.E.R.I.U.U.U.L.L.J.L.H.L.L.S.L.L.L.L.H.L.L.L.P.P.R.T.T.T.E.T.(.E./.).(.+X_.+X#X`.#X#X`.#X#X#X#X#X#X#X#X#X#X#X).|.+X).).).(.E./.E.E.I.I.I.I.J.L.W.I.E.I.E.E.E.&X&XE.&XE.&XE.&X&X&X&X&X+X+X+X+X+X&X+X+X&X+X).+X&X+X).&X&X&X+X&X).&X&X&X&X&X&X&X).C.n.n.C.i i v.7 w w 7 X . . i &XE.J.&XE.&XE.E.&X&X&X&X7.7.6.&.#.$.8 8 6 6 < 3 < 1 X . . . . . i +X+X&X&X).E.I.E.W.W.J.G.W.j.h.f.h.j.z.h.f.a.z.d.a.a.u.u.i.u.u.u.u.u.E a.u.u.u.t.u.t.u.u.E u.i.u.i.i.i.a.a.a.a.k.i.! ! ! CXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXSXDXDXDXAXDXFXFXFXFXFXFXFXFXFXAXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXAXAXBXQ.} ! ! ` T.T.T.T.~.T.~.T.T.T.[.T.T.T.T.T.T.T.T.T.T.[.P.T.[.T.~.T.T.~.T.T.T.T.T.T.T.~.T.T.~.~.T.T.T.T.Y.T.Y.Y.Y.U.P.P.L.L.H.U.H.S.L.L.D.L.S.S.A.G.W.A.A.G.G.h.A.A.A.G.A.G.A.S.W.A.A.].n.n c l w w l w w z w t w z w z w w z t w f w w l w z e h u h w w l u w z u K e.U.H.G.A.A.H.H.H.H.L.D.U.H.U.U.L.L.L.S.L.L.L.S.P.L.L.L.L.H.L.H.L.S.D.G.S.H.H.H.D.G.L.L.S.L.L.S.U.L.L.H.L.S.L.S.L.L.L.L.L.L.L.L.L.Y.L.U.U.U.T.U.T.Y.T.T.U.T.~.U.T.T.T.~.T.T.~.~.T.~.~.T.~.XX{.U.T.T.~.T.~.T.T.~.T.U.XXE.~.~.~.~.T.XXU.T.T.Y.Y.T.T.T.T.T.I.~.T.T.T.T.(.K./.T.T.T.T.T.U.U.E.T.T.T.~.T.T.T.T.~.~.~.~.~././././././.~.~.~.", "D H H D D D Z F S H D H H H H H H H H J H H H H L L H K Y I Y ` ` v.` v.v.n.n.N.N.q.#.$.8 < < X X . . . . . w m.V.N.N.N.n.N.N.N.n.m.7 1 w N.C.n.v.n.n.v.n.n.n.C.N.N.N.n.N.N.C.v.N.m.N.N.N.N.N.v.N.N.N.v.n.n.N.N.N.n.n.N.C.N.n.N.N.N.n.N.n.v.n.v.b.v.c.` ` ` ` ` ` ` Y ` Y v.` v.v.c.c.c.v.N.v.N.N.N.N.N.V.V.N.V.V.V.V.N.N.N.N.N.N.N.N.v.N.c.N.v.c.v.c.c.c.v.n.c.c.c.c.n.v.v.v.n.F.E.E.W.E.E.J.E.I.E.I.E.E.I.E.E.E.E.E.E.E.J.E.I.J.I.J.L.J.J.J.H.H.G.G.W.S.S.H.J.G.J.J.I.U.I.E.R.E.E.E.).).).).).)._.).).).).).(.)._.)././.E.T.T.R.E.E.U.Y.I.U.U.J.I.I.U.T.E.E.T./././.).E.(.(.)././.).).E.)./.E./.E.T.E.R.I.U.I.U.L.J.L.L.K.H.L.L.L.H.L.D.H.L.L.L.L.U.U.R.R.R.R.T.T.E.(./.).).(.).(.).{.).#X).+X(.#X#X+X#X`.+X`.).#X+X)./.)./.).E.E.R.T.I.I.I.J.J.J.J.J.J.J.L.W.J.J.J.J.J.E.E.E.E.&XE.{.&X&X).&X&X&X&X&X&X&X&X).&X&X&X).E.).E.&X&XE.E.E.E.&XE.&X).&X&X&X&X&X&X&X&X&X&X&X&X&X&X&XE.E.E.E.&X&XE.J.E.E.J.E.E.OX7.3.*.#.$.8 6 < < < 1 1 X X . . . . + C.&X&X).&XE.E.W.E.J.W.G.G.h.x.h.l.h.j.f.s.f.f.a.k.a.a.d.a.d.a.i.i.u.i.i.u.i.u.E u.u.u.u.u.u.i.u.u.i.u.i.i.a.a.a.d.i.f.S ! / CXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXDXAXDXAXFXFXFXFXFXFXFXFXFXDXDXDXFXAXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXBXpX[ ^ ~ ` ^.T.T.~.T.~.T.~.~.T.T.T.T.T.[.T.T.T.T.T.T.T.T.T.T.T.~.T.~.T.P.~.T.T.~.T.T.T.~.T.T.T.T.T.T.T.T.Y.Y.!.L.U.P.L.L.P.U.D.Y.L.D.A.L.A.L.S.H.G.h.A.G.A.G.G.G.A.A.A.A.A.G.Z.S.A.H.Z.b.' w w l w w l z w w z z w z w w z w z z w w l l w w z w z w z z w d - w Y f.k.G.G.G.H.H.H.S.H.L.H.L.D.U.D.P.A.L.D.L.L.S.L.U.Y.S.L.L.U.S.L.G.H.H.L.H.G.S.H.H.D.L.G.L.L.Z.S.U.D.L.P.S.L.L.L.L.L.L.L.L.L.L.U.L.L.L.L.L.U.U.U.U.T.T.T.T.~.T.T.~.T.~.T.~.~.~.T.T.~.~.T.T.~.T.~.E.XX~.T.~.~.T.~.~.~.XX~.~.~.~.~.~.~.E.XX~.T.T.T.T.T.Y.T.~.T.T.T.T.~.T.T./.Y.T.T.T.T.~.XXXXU.T.U.T.T.T.T.~.T.T.~.~.~.~.!./././././.~.~.!.", "D D D D Z H P Z J Z Z H H H H H Z H H H H Z H H L L Y Y I I ` I ` Y v.v.v.v.n.N.v.M.$.8 6 < 1 . . O . . . . 4 V.C.n.N.N.N.n.N.n.c.n.c.i i n.v.b.b.v.n.v.v.v.N.n.n.N.n.n.n.v.N.c.n.n.c.v.v.n.v.n.v.c.n.c.v.v.N.v.N.N.n.v.N.n.v.N.n.v.N.N.n.c.v.v.v.v.` v.v.Y ` ` ` Y ` ` ` ` ` ` ` ` b.c.c.c.N.v.N.n.n.N.N.N.N.N.N.N.N.N.N.N.n.N.C.n.v.n.n.c.c.c.c.v.c.c.c.c.v.c.c.v.c.v.c.c.b.c.F.W.W.E.J.I.J.J.J.E.E.I.I.E.E.E.E.E.E.I.I.J.I.I.J.E.J.H.J.H.J.W.G.G.G.G.G.S.W.H.J.J.L.L.J.I.I.U.E.R.E.E.E.(.).(.).{.(.).).).).E.(.).E.E.E.~.E.T.E.I.E.I.U.I.U.J.I.U.I.I.T.U.~.E.E.~././.E.(.(.)./.)./.)././.).E.T.E.E.U.R.U.U.I.I.L.K.H.L.H.L.L.H.L.L.S.L.H.J.L.L.L.L.L.I.I.Y.Y.U.T.T.T.T././.).E.(.(.).{.).`.).|.+X).#X+X+X).+X{.).).E.(.).E.R.E.E.U.E.L.J.J.J.J.J.J.J.J.J.W.J.J.J.J.J.J.E.E.E.J.E.E.E.&XE.&X&X&X&X&XE.E.E.E.E.E.&X&XE.E.E.E.E.E.E.E.E.&X&XJ.&XE.E.&X&X&X&X&X&X&X&X&X&X&X&XE.&XE.E.J.E.E.J.J.E.J.E.E.E.&XC.3.*.$.8 8 3 1 1 1 1 X X . . . . X c +X&X&X&X).E.E.E.J.J.J.J.G.G.G.A.A.h.h.j.z.f.f.s.a.a.a.a.i.i.i.i.i.a.i.u.u.u.u.u.u.u.u.t.u.u.u.u.u.i.i.u.i.i.i.a.a.a.k.i./ / ! DXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXDXFXFXFXFXFXFXFXFXFXAXFXAXZXZXBXQ.} Q ~ [ T.~.T.~.~.T.~.T.[.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.[.T./.~.T.~.~.T.T.T.T.T.T.~.T.T.T.T.T.T.T.T.Y.T.Y.T.U.U.P.L.U.P.S.Y.L.D.L.L.L.F.L.H.H.G.H.A.A.A.l.G.W.A.A.A.W.h.A.A.S.A.z.G.G.F.A.A.H.H.D.D.D.S.H.A.l.L.H.H.S.S.H.A.L.D.D.J.D.L.S.U.U.H.D.A.L.L.S.D.Z.J.A.G.A.G.G.G.H.H.H.H.H.L.L.L.L.L.L.L.A.H.L.L.L.L.L.L.S.U.S.U.L.H.L.H.L.S.S.H.H.H.H.H.H.L.S.L.L.L.S.U.L.S.P.U.L.U.L.U.L.L.L.L.L.L.K.R.R.L.U.U.U.U.U.T.T.T.~.T.~.T.T.~.~.~.~.T.~.~.~.T.~.~.~.~.T.T.T.~.~.~.T.~.T.~.T.~.~.~.~.~.~.~.~.T.T.~.T.~.T.Y.Y.T.T.T.T.T.T.T.L.T.T.T.~.T.T.T.~.T.~.~.T.T.T.T.~.T.~.T.T.~.~.T.T.~./././././.~./.~.~.~.", "D D D D H Z H Z Z J Z L H H Z H H H H Z L Z H H D L H H I Y I Y ` Y Y ` v.c.v.c.N.n.q.7 8 i l i ] q.` N.N.N.N.n.n.N.v.n.v.v.v.v.n.c.c.c.v.v.v.v.v.v.v.b.v.n.v.v.v.v.v.v.v.v.n.v.c.c.n.v.n.v.v.v.b.c.v.v.b.v.n.v.v.v.v.n.c.N.v.n.v.n.v.v.c.c.c.v.` v.` ` ` ` ` ` ) ` ` ` ` ` ` ` ` v.v.` c.v.v.n.c.N.c.N.n.n.v.N.N.v.N.n.n.N.c.N.c.n.v.v.c.c.c.c.c.b.v.c.v.b.` v.v.b.` b.c.c.b.b.n.W.W.W.J.E.J.J.J.W.J.W.I.J.I.L.E.W.J.I.J.E.L.J.J.J.J.J.H.H.S.W.G.S.Z.G.G.G.S.G.H.H.J.J.J.J.I.I.U.E.R.E.T.E.E.E.E.E.(.E./.).(.(.).T.T./.~.T.E.T.U.U.I.I.U.U.U.I.I.U.I.I.U.T.T.E.T.E.E././.~.E.E.E./.E./.T.E.R.R.T.T.R.R.U.U.L.L.L.L.H.L.L.L.L.H.K.L.S.L.H.L.H.K.L.L.J.L.L.L.L.L.U.R.T.R.T.E.R./.(.).E.).)._.).).).{.).).)./.).(.).).E.(.E.E.R.E.I.I.I.J.J.J.W.W.J.G.G.G.G.G.G.J.J.J.J.W.J.U.J.J.J.E.J.E.E.J.J.E.E.E.E.E.E.E.E.E.E.E.E.&XE.E.E.J.E.E.J.E.J.J.E.J.E.E.J.E.J.&XJ.&XE.E.E.&XJ.E.J.J.J.J.E.J.J.E.J.J.J.E.J.&XE.E.q.$.8 6 < < 1 X X . . . . . 9 q.&X+X).).+XE.E.E.E.W.J.J.W.G.G.G.h.h.l.z.z.z.f.z.a.f.d.a.a.a.a.i.i.a.a.u.i.i.u.u.u.u.u.u.u.u.t.u.u.u.u.u.u.i.i.i.i.a.i.z.i.k.S ! / BXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXAXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXSXGXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXAXFXVXBXm.[ S Q ` ~.T.~.T.T.~.T.~.T.T.T.T.T.T.T.T.T.T.[.T.T.T.T.[.T.T.T.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.~.T.T.T.T.T.T.Y.P.P.P.U.S.U.A.Z.D.P.A.S.L.H.H.H.A.H.H.G.A.A.h.h.A.A.G.A.A.A.Z.A.A.G.z.h.G.A.G.A.A.D.D.S.S.D.H.H.S.H.H.L.H.S.L.G.L.G.G.G.D.D.L.S.H.L.L.S.H.A.P.Z.K.S.H.G.A.G.H.H.H.H.H.H.L.L.U.S.L.L.L.P.P.L.F.S.L.L.S.L.L.L.L.L.S.L.G.D.L.H.H.H.H.H.L.H.H.S.L.S.L.L.L.L.P.P.A.U.L.L.L.U.L.L.K.U.L.L.L.L.Y.U.U.R.U.T.T.T.T.Y.~.T.~.~.T.~.~.~.~.~.~.~.T.~.~.T.~.~.~.~.T.~.~.~.~.~.T.T.~.T.~.~.~.U.~.T.~.T.~.T.T.T.T.T.T.I.!.T.~.T.T.~.T.~.T.T.T.~.T.T.~.T.T.T.~.T.~.~.T.T.~.~.T.~.~.~.^./.~.~./.~.[./.~./.~.", "D D D Z Z D D Z H H Z Z H H H H H H D H H H H Z F G H L K U U Y Y ` ` v.` v.v.v.v.n.n.N.c.N.N.N.N.N.N.N.n.N.c.N.n.v.c.N.c.v.c.v.v.c.` b.v.v.v.` Y v.c.c.v.b.v.v.v.v.v.v.v.v.b.v.c.v.c.v.v.c.v.v.v.v.v.v.v.b.c.v.v.v.v.v.b.v.c.c.c.c.c.n.c.c.c.` ` ` ` ` ` ` ` _ ` ) ` ` I ` ` ` ` ` ` ` c.b.v.v.c.c.c.N.c.N.N.c.v.N.N.c.n.c.c.c.c.c.c.c.` c.` c.` v.` ` ` ` v.` [ ` ` c.` b.b.b.W.W.J.G.J.J.G.W.J.W.J.G.J.J.J.J.W.J.J.I.H.J.J.H.J.J.H.H.S.H.S.A.G.Z.G.A.W.A.S.G.S.J.H.H.I.H.I.J.I.I.U.U.R.E.E.E.E.~.E./.E.E./.E.E.E.E.T.R.T.R.E.Y.I.I.I.U.U.L.U.I.I.U.I.Y.R.T.R.T.E.R./.E.~./.E.E.E.~.T.E.E.R.T.T.E.T.U.U.I.I.L.K.L.H.H.J.L.S.L.S.D.L.H.L.S.H.F.S.L.L.L.L.L.L.K.U.U.I.U.U.E.R.E.E.~.E.E.E.E.(.E.E.).(.(.)././.E./.).E.U.E.I.R.I.J.J.W.J.S.S.A.W.G.G.h.W.A.W.h.W.W.G.W.W.J.W.W.W.J.J.W.J.J.E.J.E.J.J.E.E.E.J.E.E.J.E.J.J.E.J.W.E.W.J.J.J.J.J.J.&XJ.J.J.J.J.E.J.E.J.&XJ.J.&XJ.J.J.J.J.J.J.J.J.J.J.J.J.J.E.E.E.E.&XW.v.q.i 7 w 4 w 4 i v.!.%X).&X+X&XE.).E.E.E.J.J.J.J.W.G.l.G.A.h.h.z.z.h.z.z.a.a.x.a.a.a.a.a.a.a.u.a.i.u.i.u.u.u.p.t.p.u.u.u.u.u.u.u.i.u.i.i.a.a.a.k.z.a.P ! ! CXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXDXAXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXFXFXFXFXFXFXFXFXFXAXFXFXZXDXBXpX{ ! ! [ ~.~.T.T.T.~.T.~.T.T.T.T.T.T.T.T.T.U.T.T.T.T.T.T.T.T.T.[.~.T.~.T.T.T.T.T.T.T.T.T.Y.T.T.U.T.T.T.T.T.T.U.U.P.L.D.P.D.H.U.L.L.L.S.S.H.H.H.G.A.A.A.S.A.A.A.G.W.A.A.A.G.A.Z.H.G.G.z.A.A.S.S.A.S.G.G.G.H.S.S.S.S.H.L.S.S.L.S.H.S.P.D.D.U.L.S.S.L.L.U.S.T.S.H.G.L.L.D.G.D.S.D.A.H.S.L.L.L.L.A.L.L.L.S.L.A.L.D.L.S.Y.L.U.L.U.L.A.S.L.S.A.L.S.U.S.L.D.L.L.L.Z.U.L.U.L.L.S.L.P.L.P.L.Y.P.U.U.Y.U.L.L.L.I.U.U.U.U.U.U.[.T.~.~.~./.T./.T.~.~.~.~.~.~.~.T.~.~.~.~.T.T.~.~.T.~.~.~.T.~.T.~.T.^.~.~.~.T.T.T.T.T.T.T.I.Y.Y.Y.T.T.T.T.T.~.T.T.R.R.T.~.T.T.~.T.R.~.U.~.~.~.P.T.~.T.T.~.T.~.~.~.~././.~.~./.~.~.~.~.", "Z D D Z H Z D D L Z Z H Z H D D H Z H H D Z H H D H H L K Y I P I ` Y ` Y ` ` v.v.v.c.N.N.c.n.N.n.N.v.c.n.v.v.b.v.v.c.c.v.b.c.v.v.` v.v.v.b.Y v.v.v.Y v.v.` v.v.v.v.` b.b.` v.` v.` b.v.v.` ` v.` b.` b.` ` v.v.b.v.b.c.c.v.c.c.c.c.c.c.v.` c.` ` ` ` ` ` I ` Y Y ) I ` ` I I ` _ ` ` ` ` v.` ` c.c.c.c.c.c.c.v.c.v.c.c.c.c.c.c.` c.c.v.` ` b.` ` ` [ ` ` ` ` ` ` ` ` ` ` Y v.b.Z.A.A.W.G.W.W.W.W.W.J.G.H.J.J.H.W.K.J.J.J.J.J.H.H.H.H.H.W.A.G.S.S.G.W.A.A.A.W.G.G.H.H.J.J.J.J.L.I.I.I.E.U.U.R.U.E.T.T.E.~.E.E.T.~.T.T.E.E.Y.Y.Y.Y.U.I.U.U.L.L.L.L.J.U.I.I.I.R.T.T.T.R.E.T.~.T.Y.T.T.T.~.T.R.R.I.U.U.U.U.U.U.U.J.L.J.L.L.L.L.L.H.S.L.H.H.H.S.L.S.S.L.H.H.H.L.H.L.J.J.I.U.I.I.I.R.T.T.E.T.E.~./.E.T.E.E.E.E.E.).E.R.E.E.I.I.I.H.J.H.H.G.J.G.W.W.G.A.h.W.G.A.A.G.G.A.x.G.G.W.x.G.W.J.J.W.W.W.W.J.W.E.J.W.J.J.J.J.W.J.W.E.J.J.J.J.J.W.J.J.W.J.J.W.W.J.x.&XJ.J.J.J.J.W.W.J.J.W.J.W.W.J.J.x.J.J.J.G.W.J.J.J.J.W.E.E.E.E.E.&X&X&X&X&X&X&X&X&X&X).).E.[.E.E.E.E.J.J.J.W.G.G.G.A.h.z.l.l.z.h.f.z.f.f.f.f.a.a.a.d.a.a.a.u.a.i.i.i.i.u.i.u.p.u.u.u.u.u.u.u.u.i.u.i.i.i.a.a.a.a.a.a.~ ! / HXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXAXDXDXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXAXFXAXFXZXBXQ.[ ! / ` T.~.~.~.~.T.~.T.T.T.U.XXT.T.T.T.T.U.U.[.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.Y.U.Y.Y.T.T.T.U.T.T.T.T.U.T.U.L.L.P.S.P.H.A.L.L.S.L.L.H.H.S.A.H.G.A.A.A.G.G.h.A.A.A.A.z.G.A.A.G.G.A.G.S.H.A.D.S.Z.A.A.G.D.G.D.A.H.G.G.H.H.H.H.L.A.G.H.D.H.H.U.S.L.L.H.H.P.S.S.H.A.H.G.H.S.D.U.L.L.L.S.L.L.P.L.L.L.L.L.P.L.L.L.L.L.L.A.L.D.P.U.L.H.U.L.S.L.S.L.F.L.S.L.L.L.L.L.L.L.L.L.L.D.U.L.L.P.P.P.U.L.L.U.I.I.U.U.U.U.U.~.T.T.T.T.~.T.T.T./.T.T./.~.~.(.~.~.~.~.~.T.~./.[.T.~.~.T.~.T.~.T.T.R.^.~.~.T.~.T.~.T.~.~.~.I.~.Y.Y.T.Y.~.~.T.T.T.T.T.~.~.~.T.~.T.T.~.R.~.T.~.U.U.T.~.~.~.~.~.[.T.~.~././.~././.~.~.^.~.~.", "D D Z Z Z D Z D Z H Z L G D D D Z D H Z Z H Z D D D L L G K K Y Y I ` Y ` b.v.v.c.b.v.c.c.c.n.c.v.v.c.n.c.v.v.c.b.` ` v.v.` v.` ` ` v.` ` v.` ` ` ` ` v.Y ` v.` v.v.` v.v.` v.v.` ` v.` v.` ` b.v.` ` ` ` v.v.` v.` v.v.` ` v.b.` b.` ` c.` ` ` ` ` ` I I I Y ] ` I ` I I ` Y ` ` ` ` ` ` ` ` c.c.` c.c.c.c.c.c.c.c.c.c.c.c.[ c.c.c.` b.` ` ` ` ` ` ` ` ) ` ` ` ` ` ` ` Y ` [ b.h.W.G.W.A.W.A.G.G.A.G.H.W.G.G.J.H.G.W.G.W.G.G.G.W.G.G.G.G.G.S.G.G.A.G.l.A.G.G.S.S.S.H.H.H.H.H.L.H.L.U.L.E.U.I.I.T.R.E.E.T.E.T.E.T.T.R.R.T.E.I.U.U.I.U.U.U.U.L.Y.U.U.U.I.I.T.U.R.T.~./.U.R.R.R.E.R.E.R.T.T.T.T.U.U.U.U.L.U.H.L.L.L.L.H.J.H.H.L.H.H.H.H.H.S.L.H.H.S.H.H.H.J.H.H.J.L.H.L.U.J.U.I.U.T.U.R.E.E.R.T.E.E.E.E.E.T.I.E.I.R.J.E.I.J.J.J.J.H.G.G.A.A.G.A.A.h.G.G.h.h.G.h.h.W.G.h.W.G.G.W.G.x.W.G.x.x.W.W.G.W.W.W.x.W.J.W.W.W.W.G.W.J.J.G.G.G.J.G.J.J.W.J.W.W.W.W.W.W.W.x.J.W.G.W.W.x.W.W.W.x.J.W.W.W.W.W.W.J.W.J.J.W.E.J.E.E.E.E.E.E.&X&X&X&X).&X).&XE.E.).E.E.E.J.J.J.W.W.J.W.G.G.G.A.l.h.h.z.f.f.f.z.g.a.a.a.a.a.a.a.a.a.a.i.i.i.a.a.u.u.u.u.u.u.u.u.u.u.u.u.i.u.i.i.i.a.i.a.a.a.~ ! Q CXAXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXGXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXSXDXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXZXFXMXm.[ ! ! _ ~.T.~.~.T.~.~.T.T.T.T.U.T.T.T.U.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.T.T.U.T.T.Y.T.T.T.T.T.T.U.Y.U.P.P.L.L.L.L.L.P.L.L.L.S.U.H.H.H.S.A.A.A.A.A.A.A.G.A.h.A.A.h.S.A.A.A.A.D.z.j.g.j.Z.A.A.A.A.l.A.D.G.G.G.H.S.G.H.D.G.G.H.H.H.S.H.H.H.L.S.L.S.U.L.S.D.S.G.F.H.H.L.A.S.S.D.L.S.L.L.P.P.L.L.S.L.L.L.L.L.L.L.U.S.L.U.L.D.L.L.L.S.L.P.U.L.L.L.L.L.L.L.L.L.L.L.L.L.U.P.L.L.P.P.P.P.Y.T.T.Y.T.U.U.U.U.T.T.T.T.~.~.~.~.T.~.^./.T./.T././.~.~.~.~.~.~.~.~.T.T.XX~.~.~.~.~.T.~.T.~.~.T.~.~.T.~.T.T.T.T.~.I.T.~.Y.~.T.~.T.~.XXE.T.~./.R.T.~.T.~.~.~.T.R.~.T.~.~.~.T.T.~.~.T.~.~.~.~./.~././.~././.~.~.(.", "Z D Z Z D Z D Z Z Z H Z H D Z Z D D D D H D D Z D H F H L L U L I I Y I ` Y ` ` ` v.v.` v.c.v.c.n.c.c.c.b.c.v.c.v.v.` b.` ` ` Y ` ` ` Y ` ` Y ` ` Y ` Y ` ` ` ` Y ` ` Y ` ` Y ` ` ` ` ` Y ` ` ` ` ` ` Y ` ` ` ` Y v.` ` ` v.` ` v.` ` ` ` ` ` ` ] ` Y ` I ` ) I ) I I I I I ) ) ` I ` ` ` ` ` ` [ ` ` ` c.[ c.v.c.` c.[ c.c.v.` ` ` ` ` ` c.` ` Y ` ` ) ` ` Y ` Y ` ) Y ` ` T b.e.J.A.A.A.A.A.G.A.W.A.G.A.W.S.S.G.W.H.G.W.S.S.G.H.Z.G.G.G.A.A.A.A.G.A.G.A.A.A.G.S.S.A.G.H.H.J.H.J.H.J.J.J.I.I.I.U.T.U.U.T.R.R.R.T.T.R.R.Y.R.U.R.I.U.U.U.Y.U.U.U.I.U.Y.U.T.U.T.R.R.R.R.R.R.T.T.T.R.U.T.I.U.U.Y.U.U.U.U.L.L.L.L.H.L.H.L.H.H.L.S.L.H.S.L.H.H.H.S.K.S.H.H.S.H.L.H.H.H.L.L.H.L.L.J.L.U.L.I.U.U.U.U.U.I.I.U.I.U.I.I.I.U.I.G.J.J.G.H.G.H.G.G.A.A.A.h.A.A.h.h.h.G.h.h.A.h.h.h.h.h.x.A.x.G.h.G.W.W.G.x.W.W.x.W.G.G.W.x.G.x.G.G.W.G.x.W.W.J.x.G.h.x.W.x.h.x.J.J.W.x.W.x.J.W.W.x.W.x.W.x.W.J.x.G.G.G.G.x.W.G.W.W.W.W.J.J.J.J.E.E.E.E.E.E.&XE.E.E.E.E.E.E.E.E.E.J.E.W.J.G.G.A.x.l.l.l.z.h.h.j.j.f.f.z.a.z.a.a.a.z.a.a.a.a.z.i.a.a.a.i.u.u.u.u.u.u.u.u.u.u.u.u.i.u.i.i.a.a.a.f.a.a.k./ ! Q ZXVXFXFXFXFXFXFXFXDXFXFXFXFXFXAXDXAXDXDXDXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXBXm.} ! S [ T.[.T.T.~.T.T.~.T.T.T.XXT.T.U.T.T.T.T.T.T.T.[.P.T.T.T.T.T.T.T.T.U.T.U.T.T.L.U.T.P.T.T.I.T.L.U.U.T.U.P.P.L.L.L.D.D.L.L.D.S.U.S.H.S.U.S.H.H.G.A.A.A.A.A.g.A.A.A.h.z.G.S.A.z.A.A.H.A.A.H.A.A.A.G.A.D.A.S.G.H.H.D.S.S.S.G.D.H.D.L.G.L.H.H.L.L.L.U.S.L.D.U.L.S.G.G.G.D.A.L.D.P.U.U.U.L.L.L.P.F.L.L.L.L.L.P.A.S.L.L.L.L.S.L.L.L.L.L.L.L.A.L.L.U.S.S.L.L.L.L.S.L.L.L.L.P.P.P.Y.P.T.T.T.T.T.U.T.T.Y.Y.U.T.T.T.T.T.T.T.~.!.T.!.^././././.~./././.~.~.~.~.T.~.E.XXXX~.~.T.~.~.~.T.~.T.T.~.T.~.T.T.T.T.~.T.U.~.T.Y.~.T.T.T.T.T.T.XXT.~.T.T.~.T.~.T.~.T.(.R.~.~.~.T.~.~.~.~.~.~.~.~.~.~./.~.~./.[./.~.(.(.~.", "Z Z Z Z Z F Z G Z Z D D Z D D D Z D Z H D D Z Z D A Z H H J L U L Y I I ` I ` ` ` v.` v.` b.` v.v.v.` b.v.v.` [ v.` ` ` ` ` ` ` Y ` ` Y Y ` I ` Y ` Y ` ` Y ] ` ` ` ` ` ` ` Y ` Y ` ` ` ` ` ` ` ] ` Y ` Y ` ` ` ` ` ` ` ` ` ` ` ` ` ` ) ` ` ` Y _ ` I I ) I I ` I ` I I I ) I ) I ) ` ) ` ` ` ` ` ` ` ` ` v.` ` c.` ` ` v.` ` ` ` ` ` ` ` _ ) ` ` ` ) ` I Y ` ) ) Y ` [ ) ) [ j.Z.A.A.A.A.A.l.A.A.G.h.G.A.A.W.G.W.G.W.H.G.G.W.G.G.A.G.S.G.A.G.A.A.S.A.A.A.S.A.A.A.S.G.S.S.S.W.W.H.H.J.H.L.L.L.U.U.U.U.T.R.R.R.R.T.E.R.U.R.R.R.T.U.T.I.T.Y.L.T.U.U.L.U.U.U.I.U.T.T.T.T.U.T.U.R.I.U.T.I.I.P.U.P.L.L.I.U.L.L.L.L.J.K.H.L.J.S.H.H.H.S.L.H.H.J.S.H.S.H.H.H.H.S.W.H.H.H.H.H.H.L.H.H.L.L.G.U.L.U.U.U.I.U.J.I.U.U.J.L.J.J.J.W.G.G.G.G.D.G.A.A.A.h.A.A.A.A.h.A.l.l.l.l.h.l.l.z.l.A.h.G.h.A.x.G.G.A.h.h.G.h.G.x.W.h.W.G.G.h.W.x.A.W.h.x.A.x.W.A.x.h.W.A.A.W.x.W.x.h.h.W.x.x.W.h.W.x.h.x.W.W.x.h.W.x.G.G.G.x.G.W.G.G.W.J.W.J.J.E.J.E.E.E.E.E.E.E.E.E.E.E.E.J.J.J.J.W.x.W.W.G.G.h.z.l.h.z.h.f.f.f.j.f.f.f.f.a.k.a.a.k.a.a.u.i.a.i.a.a.i.i.i.u.u.u.i.u.u.u.u.u.u.a.a.i.a.a.a.a.a.a.a.P / / ZXAXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXDXDXDXAXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXGXSXDXFXFXFXFXFXFXFXFXFXFXAXDXGXFXFXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXZXZXFXBXQ.} ~ Q ` ~.~.~.~.T.T.T.T.T.T.T.T.U.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.Y.Y.U.T.T.U.U.P.T.Y.Y.P.Y.Y.P.P.U.L.L.P.L.D.U.S.L.L.L.L.Z.Z.H.H.S.S.S.S.S.A.A.A.A.h.A.A.A.A.A.A.A.A.H.A.A.A.A.h.A.h.A.h.A.h.A.l.G.G.S.G.G.S.S.S.H.H.G.L.L.D.H.H.H.L.H.L.L.L.L.H.L.U.S.L.H.H.S.H.H.L.L.L.L.L.L.U.U.P.P.L.L.D.U.L.L.U.L.L.L.L.H.L.S.H.S.U.L.L.Y.L.L.L.L.U.L.L.L.L.P.L.L.L.L.L.U.U.L.R.L.U.T.T.T.T.T.Y.T.T.Y.Y.Y.T.T.T.~.T.~.T.~.~.~.~.~.~.~./.~.(.T./.~.(.~./.~.~.~.~.~.~.~.~.~.T.!.~.T.~.T.T.~.~.T.T.T.T.T.~.P.~.~.~.Y.~.I.T.T.~.~.T.~.T.~.T.(.T.~.~.~.T.~.T.~.~.~.T.~.~.~.T.~.~.~.!.~.~.~././.~./././.(././.~.", "Z D D Z Z Z Z Z Z Z D D D D D D D D D D Z D D F D D H G H H H U K Y P Y I Y Y ` Y ` ` ` v.` v.v.` v.v.` ` v.` ` Y ` ` Y Y ` Y ` ` Y Y ) ` I ` Y I I Y I ) Y Y Y Y Y I Y I ` Y ` ` Y ` Y I Y Y I ) Y ` I ` ) Y ] Y I ` Y ) ` Y ` ` ` ` ` I ` I ` ` I ` I ) ) I I I I I I I I I I I I I ) I ` ] I ) ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` Y ) I ` Y ) I I _ Y I I ) I ) ) I U [ U T b.h.h.h.l.l.l.A.A.A.h.A.W.A.G.A.A.A.G.h.Z.G.S.A.G.A.A.A.S.A.Z.G.A.A.A.S.A.A.S.G.A.A.S.A.S.G.A.S.H.G.H.H.J.J.L.J.L.J.U.U.U.U.U.U.T.T.T.T.T.R.U.U.U.I.I.U.I.U.R.U.Y.Y.Y.Y.U.R.T.T.R.T.T.T.T.Y.U.R.I.U.U.I.U.L.L.U.L.L.J.L.H.H.L.H.L.L.S.H.L.H.L.H.H.L.S.S.H.S.S.H.H.S.S.H.S.S.H.G.G.H.H.H.J.H.H.H.J.H.J.H.J.J.H.U.G.L.J.J.H.L.J.H.J.S.H.G.S.A.G.A.A.l.A.l.h.h.A.h.h.A.h.l.l.z.h.z.z.g.h.h.h.z.h.h.h.h.h.f.h.h.h.A.h.h.W.h.j.A.h.h.G.h.h.h.G.h.h.h.A.h.h.h.h.x.h.h.h.h.W.h.W.h.W.h.j.h.h.h.h.h.h.W.h.h.h.h.h.h.h.h.G.W.G.W.h.G.W.W.J.E.W.W.E.E.J.J.E.E.E.I.J.J.E.W.J.J.J.W.G.G.W.h.A.h.h.h.h.l.z.f.f.s.z.f.f.f.f.f.a.k.a.a.a.a.a.a.k.i.a.a.a.a.u.i.i.i.u.i.u.u.u.u.a.a.u.u.i.i.a.i.a.a.a.a.a./ S / BXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXDXAXAXDXFXFXFXFXSXGXDXAXFXFXFXFXFXFXFXFXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXDXSXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXDXDXAXDXDXAXDXDXFXFXFXFXFXFXAXFXFXFXGXSXSXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXFXZXVXBXpX[ Q Q [ ~.T.T.~.T.~.~.T.T.T.T.T.^.T.U.T.T.T.T.T.T.T.T.T.T.T.T.P.T.T.T.P.Y.Y.U.T.L.U.Y.T.P.T.Y.P.P.P.P.L.L.U.U.L.L.L.L.S.L.S.S.L.P.H.U.S.H.H.H.H.S.S.A.A.A.A.A.A.Z.A.A.A.h.A.A.h.A.A.Z.h.A.h.h.Z.Z.A.A.A.S.h.G.S.S.S.S.S.S.S.H.H.D.H.H.H.S.H.L.L.L.H.L.S.L.L.S.L.H.H.H.S.U.H.L.A.S.L.L.L.P.A.P.P.L.U.Y.U.L.L.S.L.L.S.L.L.L.L.U.L.L.L.L.L.S.L.L.L.L.L.L.L.U.U.P.P.P.L.U.U.L.R.Y.U.U.I.T.T.T.T.T.T.T.!.Y.Y.T.T.T.T.~.T.~.~.Y.~.~././.!.)./.T.(.~.~.~./.~.^.~.~./.~.~.~.U.XXT.(.~.T.T.T.T.~.T.Y.~.T.Y.~.Y.~.U.T.Y.Y.~.T.~.T.T.T.~.T.T.~.~.T.~.~.T.XX~.~.~.~.~.Y.~.T.T.~.~.~.~.!.T.~.~.~.~./././././././././.", "Z Z Z Z Z Z Z Z Z F D D D D D D Z D F D Z D Z Z D Z Z F F H H K L U P Y I I Y ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` Y ` ` ` ` ` I Y ` Y ) ) Y I Y P Y Y I I I Y I I I K ` Y ` I Y I I Y I Y ` ) ) ) ) ` I ) Y Y ] Y Y ` I ) ` Y ) ` ) ` ) Y ) I ` ` ) ` ) I I I P I I ) I I ) I I ) P I _ ` ) I ` Y ) ) ` ) ` _ ` ` ` ` ) ` ` ` ` ` ) _ ) ) ` ) ` ) I I _ I ) I ) I I I Y I I U U [ j.h.h.A.h.l.A.l.A.A.A.A.A.A.A.A.A.A.A.G.A.S.A.S.Z.H.A.S.A.A.A.A.S.A.S.A.A.A.A.A.A.A.G.S.A.G.G.S.S.H.H.H.H.H.L.H.L.L.L.T.U.U.U.U.T.T.T.T.U.Y.T.T.U.U.Y.T.T.U.T.T.U.U.P.T.T.T.T.Y.R.Y.T.I.R.Y.I.L.U.U.L.L.I.Y.L.L.P.L.U.L.L.L.L.H.L.L.H.H.L.H.D.L.H.S.H.H.S.H.S.H.S.W.S.S.S.J.Z.G.H.H.S.H.A.Z.J.S.H.J.H.H.H.J.H.G.J.H.G.H.H.H.H.H.G.A.H.G.G.l.G.A.l.l.l.A.z.h.A.g.h.h.h.h.h.h.f.h.h.z.g.h.g.z.j.z.h.h.h.h.h.h.h.g.g.x.h.h.h.h.G.h.h.h.h.x.j.z.A.h.h.h.h.h.G.h.h.G.x.h.h.h.h.W.h.j.h.j.h.h.h.h.x.h.h.h.h.h.h.W.h.A.h.h.G.x.W.G.G.G.J.G.W.W.W.J.J.J.J.J.J.J.J.J.J.W.J.J.G.G.W.W.h.A.h.h.h.h.z.h.z.z.h.h.j.f.f.a.g.f.f.k.a.a.a.a.a.a.u.a.a.a.i.u.a.a.u.i.i.u.i.u.a.u.u.u.i.a.a.a.a.a.a.a.a.a.a.! ! ! ZXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXDXAXDXDXFXFXFXAXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXAXFXZXZXVXBXQ.' ! ! [ ~.~.~.T.~.~.T.T.T.T.Y.T.P.Y.T.T.T.T.T.Y.T.U.Y.T.T.T.T.U.Y.T.T.Y.U.L.U.Y.U.Y.L.L.P.P.P.P.P.P.Y.U.L.L.L.U.Y.L.L.H.L.L.S.L.L.H.L.S.H.H.H.D.S.G.H.z.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.h.Z.A.A.A.A.A.A.l.A.A.S.A.S.S.S.H.H.H.D.L.G.H.H.L.H.L.L.L.L.L.L.L.L.S.U.S.L.L.S.L.L.L.L.L.L.L.L.P.P.P.P.D.U.L.L.L.U.L.U.D.P.L.L.U.L.U.S.L.L.U.L.U.Y.U.Y.U.U.P.P.U.U.U.U.U.U.L.L.U.U.U.U.T.T.T.T.T.Y.T.T.T.T.T.T.T.T.T.T.T./.T.~.~.~.~././.~.(.~.(.(.~././.~.^.~.{.~.~.~./.(.XXU.T.T.^.T.~.T.T.T.T.T.~.Y.~.T.~.P.T.T.~.I.I.T.I.Y.T.~.T.~.T.T.~.T.T.~.E.T.~.~.~.T.~.~.~.~.~.T.T.~.~.~.~.!.~.~.~././.~././././.(.~.", "Z Z Z Z Z Z Z Z Z Z D D D D Z D D A D D D A Z Z F Z Z H H F G H L L L L Y I I Y Y Y U ` ` Y ` ` ` ` Y ` Y ` ) ` I ` Y I I I I I I I I ) I I I I I J K Y I Y I J K Y K Y I I I Y ` P I I I Y I I I Y I I I I I I Y I I Y ) I Y I Y ) ) ) ` I I I I J I ` I ` I ) I I I I I I I ) I Y I I ) I I ` I ] Y ) ` ) ) ) ) ` ` ) ) ) ) ` ` ) I ` I I ) I I Y I I I P Y I ) U I I I Y d.j.h.h.z.Z.l.l.A.l.h.A.h.A.A.A.A.A.A.A.A.A.A.A.A.A.S.A.A.S.A.S.A.A.A.A.A.A.h.S.Z.A.Z.A.A.S.Z.A.G.G.S.H.H.H.H.H.L.L.L.L.H.U.T.T.T.P.U.U.U.T.T.T.U.T.Y.T.T.T.T.T.T.T.T.T.U.T.T.T.T.T.T.I.U.Y.U.R.Y.U.U.L.U.L.L.L.L.H.L.H.L.H.L.S.L.H.L.D.L.H.L.S.H.D.S.S.S.H.H.H.S.H.S.S.S.S.S.H.H.H.S.G.H.H.H.Z.H.H.S.S.H.G.H.H.H.H.G.S.G.S.G.A.G.A.A.G.l.G.l.g.z.A.A.l.h.h.h.z.A.h.x.A.h.z.z.z.h.f.k.g.g.z.h.z.j.s.h.j.h.s.z.h.g.g.h.h.j.h.x.h.h.h.h.h.h.h.f.z.f.h.j.j.s.j.h.j.z.z.x.s.h.h.s.j.j.x.j.x.h.z.h.h.h.h.h.h.x.j.h.h.z.A.h.h.h.G.G.h.G.G.h.G.G.G.W.J.W.J.J.J.J.J.J.G.W.W.G.W.x.G.G.h.G.G.z.G.h.z.h.f.f.f.z.j.f.f.g.a.f.f.a.a.k.a.a.a.a.a.i.a.i.a.a.a.i.i.i.i.i.u.u.i.a.i.i.i.a.a.a.a.a.a.a.a.a.a.S ! / CXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXGXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXAXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXVXBXm.} Q Q [ T.~.~.T.T.T.T.T.T.T.T.Y.U.P.T.T.T.T.T.U.T.Y.P.Y.U.U.T.T.P.T.P.P.Y.Y.U.L.U.L.L.L.S.P.L.K.P.P.L.L.L.U.L.L.L.L.L.S.L.L.L.L.D.U.D.K.U.S.H.A.S.S.A.A.A.h.A.A.A.A.A.A.A.A.A.A.h.h.A.h.h.A.A.h.A.A.h.A.A.A.S.A.A.G.S.S.D.S.H.A.H.H.H.H.H.H.H.H.L.H.L.H.L.L.L.L.U.S.L.L.L.D.L.L.L.L.S.L.L.L.D.P.P.P.L.P.L.S.L.S.U.A.L.L.S.L.L.L.L.L.L.U.U.U.U.L.P.T.U.Y.U.T.U.T.P.Y.Y.L.U.T.U.T.U.U.T.T.T.~.~.T.T.~.T.T.T.T.~.~./.T./.T.~.~././.!./.~.(.(.~.~.(.~.(.~.~.[.~./.~.T.T.E.XXT.T.T.~.T.T.~.T.Y.~.T.T.Y.T.T.~.T.I.Y.~.Y.~.T.~.T.T.~.T.~.T.~.~.T.~.XXXX(.T.~.~.~.T.T.~.~.~.~.(.~.!.~.~.!.~.~.~.~././././.!.(.~.", "Z Z D Z Z Z Z Z Z Z D Z D Z D Z D D Z D Z Z Z Z Z Z Z H H H D H L L Y H J Y Y I ) ` I ` ` Y ` ` ` ` ) Y ] ` ` I Y I Y ) I I J I I Y Y J J I K H I I U K Y J U Y I I Y K I U I I I I I I I I I I J I I I J Y I I I I I I U I I ) ) ) ) I ) I ) I I I ) P ) I P I I I ) I P P ) P I I I ) I I ) ) ] I I ` ` ) ) ) ` _ ` I _ ) ) ) I ` I I I ) I ) I ) I I I I I P I U I I ) Y T Z.h.h.h.h.l.A.l.A.A.A.h.A.A.A.A.A.A.A.A.A.A.S.S.A.A.S.A.Z.A.Z.A.A.A.A.A.A.A.A.l.A.A.A.G.A.Z.A.G.S.G.G.H.H.H.H.L.L.L.L.L.U.U.U.U.T.Y.T.R.T.R.T.R.T.Y.Y.T.T.R.T.T.Y.T.T.T.T.T.T.T.~.T.T.T.P.T.U.Y.U.L.U.L.K.L.H.L.H.L.L.L.H.H.H.H.L.L.H.H.H.H.H.H.H.H.H.J.Z.Z.H.S.S.S.H.S.G.Z.G.Z.S.G.G.G.S.S.H.H.A.S.G.S.S.S.G.S.S.A.S.A.S.S.A.A.D.f.Z.h.l.A.g.l.l.z.l.h.g.h.z.h.z.g.z.g.z.z.z.f.h.l.g.f.f.z.f.z.f.f.h.f.f.f.g.g.f.j.j.z.h.h.h.z.f.h.j.f.h.z.h.f.z.j.s.h.h.f.f.f.f.h.f.z.k.h.j.h.h.z.f.z.f.h.z.z.z.x.j.s.A.z.l.h.h.G.h.A.h.A.G.h.G.G.W.h.W.G.W.W.G.J.J.G.W.G.G.W.G.G.G.G.W.h.h.h.h.z.h.z.s.h.f.g.h.a.g.d.g.f.f.a.g.a.a.a.a.a.a.a.a.a.a.i.i.i.i.i.i.i.u.u.i.i.i.i.i.i.a.a.a.a.a.a.a.a.a.a.a.~ S / ZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXSXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXAXDXAXDXAXGXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXBXpX[ Q / ` ~.T.~.T.[.T.T.T.T.T.[.U.T.U.T.T.T.T.T.T.P.Y.P.U.P.P.P.Y.T.P.T.P.U.L.Y.U.Y.L.U.D.P.L.L.L.L.D.U.L.L.L.D.L.L.S.U.L.L.L.H.S.L.L.S.L.H.H.H.G.S.h.H.z.A.h.A.A.A.g.A.A.A.A.A.h.A.A.A.A.Z.A.A.A.A.A.A.A.A.A.S.A.A.G.S.G.G.H.H.G.H.H.H.H.H.L.L.L.S.L.L.L.H.L.L.A.L.S.L.L.S.L.S.L.L.L.L.L.L.D.P.P.L.L.P.L.L.L.L.L.L.U.L.L.U.L.L.L.U.L.L.U.U.U.T.P.Y.T.T.T.T.T.P.T.T.T.P.P.Y.P.T.Y.T.T.T.T.~.U.~.T.~.~.T.T.~.T.~.~.~.~.~./.T.~.~.(././.(.~.XX(.~.(./././.(././././.~.~.T.~.T.T.~.T.~.T.T.T.T.~.T.Y.Y.T.T.T.~.~.I.T.~.Y.I.~.~.T.~.T.~.T.Y.~.T.T.(.E.E.~.~.~.~.T.T.(.~.).T.E.~.!.~.~.~./.!.~././././.(.(.~.(.", "Z Z G B Z Z C Z Z Z Z D G C Z D D D Z Z Z Z Z C Z C H Z Z H H D L H H K L J J J P U I Y ) ) ) ) Y I ) Y I Y I Y I I P I I I Y I I J I U U J Y J L L L L Y L I J J U L L P L I H Y I J Y I I Y K Y I Y K I I U P J J P Y P P I I I I I ) ) I I I ) I P ) ) I ) P I I I I ) J P ) J ] K I I ) I I I ) ) ) I P ` ) I I ) I ) ) I ) I I I I ) I I P I I I I P P I I I I I I U T [ d.h.g.g.h.A.g.l.l.h.l.h.A.h.h.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.S.A.A.A.A.A.G.A.A.A.A.A.A.G.S.A.S.S.G.H.H.H.H.L.L.U.U.U.U.T.Y.P.Y.Y.T.T.R.T.T.T.T.R.T.~.T.Y.~.Y.T.T.T.~.T.~.T.T.T.Y.P.T.Y.P.U.Y.F.U.L.U.L.L.L.L.H.H.L.L.L.L.L.H.H.L.H.D.H.S.H.H.A.H.A.H.H.S.S.W.S.H.S.S.J.S.G.G.S.Z.G.S.Z.S.A.S.G.A.S.S.A.A.A.A.A.A.A.A.A.A.f.S.G.h.h.z.g.z.g.l.h.g.z.h.g.h.g.z.z.g.g.g.f.h.z.a.a.g.k.g.f.f.f.f.s.h.f.f.g.f.f.g.z.j.f.z.z.f.l.z.f.j.h.f.s.z.k.g.s.z.f.f.z.z.f.f.f.z.f.s.x.s.h.s.f.f.z.j.s.h.s.f.h.j.z.h.h.f.h.f.x.h.h.s.G.h.G.h.h.h.h.G.W.x.G.W.G.G.G.W.G.A.h.A.G.h.h.A.h.h.h.h.z.j.z.h.f.f.f.f.g.g.a.a.g.a.a.g.z.a.k.a.a.a.a.a.i.i.a.i.i.a.a.a.i.i.a.a.i.i.i.a.a.a.a.a.a.a.d.a.a.a.a.a./ ~ / ZXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXGXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXDXSXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXVXFXDXBXQ.[ Q Q [ ~.~.T.^.T.T.T.T.T.T.Y.Y.T.T.T.T.T.U.T.P.Y.P.Y.P.P.Y.P.P.P.P.P.P.L.U.U.U.L.U.U.P.U.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.H.L.L.L.L.L.L.H.L.S.G.S.G.H.A.A.A.A.A.A.g.Z.A.A.A.A.A.Z.A.h.Z.h.A.A.A.h.A.h.h.A.A.A.S.l.S.S.S.D.G.A.D.H.H.H.H.H.L.H.L.L.L.L.S.L.L.L.L.L.L.L.S.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.S.L.L.H.L.L.S.L.S.S.L.L.L.L.Y.L.U.U.T.P.T.T.T.T.T.T.T.T.P.T.P.T.P.Y.U.U.T.I.T.T.T.U.~.T.~.T.T.T.~.T.~.~.T.~.~.~.R.~.~.~././.!.~./.(.~././.^.[.~.^./.^./.!.~.~.~.~.~.T.T.~.T.~.T.T.T.Y.T.T.Y.~.~.T.~.U.T.K.Y.Y.~.I.~.T.T.T.~.~.(.T.{.T.~.~.XX).T.T.~.~.~.T.~.XXT.[.~.~.~.!.~.~.~.~./.~././.~.(.(.(.", "Z Z B Z B Z Z C Z F Z Z D H Z Z Z Z Z Z Z Z Z Z C C Z Z Z H D D D D L H H G J Y P L J I I Y Y I ` I I ) I Y I P I K L Y I P U J J J J L J L U H L L L J H H H J Y L L U Y K J I H H P L P J K U J I I U P I P I P I K J P P I I I I I I I I I ) I I ) P J ) P P ) J J I P I ) J ) ) P ) ) I ] I ) I ) I ) I I ) ) ) I ) I ) ) ) I I I ) I P I I I P I I I P P P I I I I [ T Z.d.g.g.l.h.g.A.A.g.h.A.h.A.h.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.h.A.A.D.A.A.A.A.G.S.S.S.S.G.W.H.H.H.L.L.L.L.U.U.P.Y.T.T.R.R.T.T.T.T.T.T.T./.~.T.T.T.Y.~.~.T.~.Y.T.T.T.T.T.T.T.T.P.T.U.P.U.U.U.L.Y.L.L.L.L.H.H.H.L.H.H.H.H.H.L.S.H.H.H.A.H.H.S.H.H.H.G.H.A.H.H.S.A.S.S.G.A.G.Z.A.S.A.A.S.A.A.l.S.A.A.A.h.A.A.A.l.A.h.A.z.z.h.h.g.g.d.g.g.g.z.g.g.k.z.h.z.g.g.g.g.a.z.g.g.z.f.g.a.f.f.f.f.s.z.f.f.f.f.f.f.z.f.h.f.f.f.z.f.h.z.s.z.G.f.f.f.f.s.f.f.a.a.f.f.f.k.f.k.z.s.j.f.f.f.f.z.l.f.j.h.f.z.j.j.z.h.h.k.h.j.h.h.h.h.h.h.h.G.h.G.h.G.G.h.G.W.A.A.G.G.G.G.h.A.h.h.G.h.x.h.j.z.j.z.g.f.z.d.g.j.g.g.g.g.a.g.a.a.a.a.z.a.a.a.u.i.i.i.a.a.a.a.d.i.a.a.i.a.a.a.i.a.a.i.d.a.a.d.a.a.a.a.! ! ! BXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXFXBXm.} ~ Q [ ~.T.~.~.~.P.Y.!.T.P.Y.T.T.T.T.T.P.T.P.T.P.P.P.P.P.P.P.P.P.Y.P.P.Y.L.Y.L.U.U.L.L.U.S.S.L.L.L.L.L.L.L.S.L.U.A.G.L.L.L.L.H.A.U.L.S.H.H.G.G.S.S.A.G.A.A.A.A.A.A.G.A.g.h.A.A.j.h.A.A.A.h.h.A.h.A.A.W.A.A.G.A.S.S.A.S.S.S.G.D.H.H.H.G.S.H.L.S.L.S.G.L.G.L.L.L.U.L.L.L.L.L.G.L.S.L.L.P.L.L.L.P.L.L.L.L.L.A.U.L.L.L.L.L.L.L.L.L.L.L.U.T.T.T.T.T.T.Y.U.Y.T.T.T.Y.P.T.T.P.T.U.U.U.I.I.L.Y.~.Y.T.T.T.T.T.~.T.T.~.T.~.T.~.~.R.T.Y.(.~.~././.~.~././.E.^./.{.~./././.~.T.~.~.!.T.T.~.~.T.~.T.Y.T.Y.T.Y.T.T.~.U.L.~.~.L.Y.R.Y.T.T.T.~.T.~.~.~.[.XX~.~.~.~.~.~.~.T.~.~.T.(.~.~.~.~./.~./.!.~././././././.(.(.(.", "F Z D D D Z F Z Z Z D C B Z Z Z Z Z Z Z Z F A C Z Z A Z F Z Z F D L F L H K H U U K Y I I P ) I I J I Y I I I K I Y P P L L J U J U L L J J L L L L L F H H H J H L J J J H J H J J L L P J J J J U L L L P P J J L I J P I P P I P I I I I I I I I P I I P P ) I ) I I ) ) J ) J I I ) P I I I P ) I ) ) I ) I I I ) I P ) P I I I I I I I I I P I P I P I I I U I I I [ T j.g.g.A.l.g.g.A.g.g.A.h.A.h.A.A.A.h.S.h.A.A.A.A.A.A.A.A.A.A.S.G.A.A.A.A.A.A.A.A.A.A.A.A.S.A.A.G.A.G.S.G.Z.H.H.L.J.L.L.L.U.P.T.U.T.T.T.R.T.~.~.~.~.T.T.T./.T./.!.T.~.Y.~.T.~.~.T.~.T.R.~.T.T.T.T.P.T.T.U.L.U.L.L.L.L.H.Y.L.S.L.L.H.L.H.H.H.H.H.S.H.G.S.H.H.A.H.H.H.A.H.H.A.H.H.A.G.A.S.G.A.G.A.A.D.h.A.A.S.A.l.A.A.A.l.A.l.A.A.A.h.h.h.h.g.h.g.l.g.g.g.g.g.g.l.g.z.a.z.f.z.g.z.f.g.a.f.f.f.k.s.f.j.f.h.z.f.f.f.f.f.z.s.j.f.h.f.l.g.h.f.f.h.f.f.f.f.k.k.f.f.f.f.s.f.f.f.s.f.f.f.f.h.s.z.f.s.f.f.f.z.s.f.f.f.f.f.k.f.f.h.h.j.h.z.s.h.l.h.h.h.h.h.h.h.G.l.h.l.l.z.h.z.h.h.h.G.z.h.h.A.j.z.f.z.j.f.g.a.g.f.a.a.g.a.f.a.a.a.z.a.a.a.a.u.z.u.i.i.i.u.i.a.a.d.i.a.a.a.a.a.a.i.a.a.a.a.a.a.i.a.a.i.d.S ! / ZXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXBXm.[ ! Q ` T.~.~.T.Y.~.P.[.T.[.T.T.T.T.T.T.T.T.P.P.P.P.P.Y.P.P.P.P.P.P.P.P.U.L.L.L.L.L.L.L.L.L.L.L.L.L.A.L.L.L.L.L.L.L.G.L.L.H.L.H.F.L.L.S.L.H.G.G.S.S.H.g.A.A.A.A.A.A.h.h.Z.j.A.A.A.A.A.h.A.Z.A.h.Z.h.A.h.A.l.A.A.A.S.A.S.S.S.S.D.H.H.S.L.L.S.L.L.L.L.L.L.L.L.L.L.A.L.H.H.L.L.L.L.U.L.L.A.L.U.P.L.L.L.L.L.L.U.L.L.L.L.L.H.L.L.L.L.L.L.U.U.Y.U.T.Y.Y.T.P.T.T.T.T.T.Y.T.T.T.U.T.U.Y.Y.R.R.Y.~.U.T.T.~.~.T.T.~.T.~./.T.~.~.~.~./.R./.~./.!.^./././.(.(.(././.!././././.(.~.~.~.T.~.T.~.T.T.T.~.T.T.T.T.T.T.T.~.Y.Y.R.~.Y.T.!.T.~.~.T.~.~.~.T.U.~.~.~.T.(.T.~.~.~.(.~.~.~.~.T.[.!.~.~.~.~.[./.~.~./.[.(./.(.(.", "Z Z Z Z Z Z Z Z Z Z Z Z Z C Z C Z Z Z Z C D Z C Z A F Z C Z D D F Z H D Z H H L L L L P P L I P I I U P I L J J P J L J L P L L J I J H H H J H H H H H H K H H H K H D L H L J J L L J J J L J P J L J J P J I J I J J P P J P J ) J I J ) ) ) ( P P ) I I I ) J ) P I I ) J ) P ) I J P P P ) P P ) P ) ) ) J I I ) ) I I P I I I P ) I I I P ) I P P P P ( I I I ) I T d.Z.g.A.g.g.g.A.g.g.A.h.A.A.l.A.A.A.D.g.A.A.A.D.D.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.S.G.G.S.S.H.H.S.S.L.L.P.P.P.P.P.T.T.Y.T.T.~.T.T.~.~.T.T.~.~.~.~.~.~.~.~.K.!./.~.T.~.~.~.T.~.T.T.T.L.T.T.P.P.Y.Y.L.L.L.L.H.L.S.L.H.H.H.H.H.D.H.D.D.L.S.S.H.S.S.H.S.H.H.H.G.S.H.H.H.A.G.W.A.A.S.A.A.A.A.A.A.A.A.A.z.A.A.z.g.g.A.k.R D.l.k.g.g.k.g.g.k.k.f.g.g.h.k.z.g.l.z.g.f.k.g.g.g.f.f.f.a.g.f.f.g.g.g.d.k.f.d.g.i.k.z.d.g.k.z.d.g.z.z.g.k.k.k.g.f.k.f.f.a.f.i.a.a.a.a.a.a.f.a.g.a.a.k.a.f.a.f.f.k.f.f.k.f.f.g.f.l.j.z.f.f.f.f.G.l.h.h.f.h.l.z.h.A.A.A.h.h.A.l.l.l.h.h.z.j.l.l.j.x.j.h.h.f.z.d.z.g.k.k.k.g.d.k.f.f.f.k.f.d.i.k.i.z.i.i.i.i.i.i.i.a.a.a.i.a.a.a.a.a.a.a.a.k.i.i.d.i.a.a.a.a.a./ ! ! BXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXZXZXBXQ.} ~ Q [ !.~.T.~.T.T.T.T.~.Y.Y.Y.T.T.T.T.T.P.P.P.P.P.U.P.L.L.L.L.L.Y.U.U.L.L.U.L.L.L.L.L.L.L.L.U.S.L.L.L.G.L.H.L.U.L.L.L.S.U.H.L.H.L.Y.S.H.S.L.S.S.S.S.A.S.A.z.A.A.A.j.j.l.A.h.S.A.h.A.l.A.l.h.h.S.g.h.A.A.A.A.A.A.A.G.A.A.G.H.A.S.S.H.H.G.H.H.H.S.L.L.H.L.L.L.S.L.L.L.L.P.U.L.L.G.L.L.L.L.L.L.L.U.L.K.Y.L.D.U.K.L.L.L.L.L.L.L.L.Y.U.L.Y.U.T.U.I.T.T.T.T.T.T.T.T.T.P.T.T.T.U.U.Y.Y.Y.Y.Y.T.T.T.T.T.~.~.T.~.~.~.~.T.^.~.~.~.~.~.~.~.~.~.~.[.~.[.!.~.~.^.~.(.~./.~./.~.~.~.T.~.T.~.T.T.~.T.Y.T.T.P.T.T.[.P.U.XXT.T.T.T.T.T.T.T.T.T.T.~.~.~.).~.~.~.~.~.~.~.!.~.~./.!.~./.~.~.^.~.~.~./././.!./.^.(.(.(.(.{.", "Z Z C Z A D B C A C Z D Z Z Z Z B Z C F Z Z C Z D B C Z Z Z Z Z F G D D D H F J L H L L J L L J L I L L I J L L P L L J L J J J H H H H H H H H H H H Z H Z H H D H H H H J H H H J J L L J L J J L Y H P P J P L L J J P L P I I J I I P I J J I ) P P P ) I I I I ) P P I I I ) P ) ) ) ) ) ) ) ) ) I ) P ) ) I I I I ) I ) I P ) I I I P I I L I P ) I I P I I U ) U [ T d.g.g.g.A.g.g.l.A.g.h.h.A.l.A.g.g.A.D.A.A.A.k.Z.A.A.A.A.A.A.A.A.A.A.A.A.A.A.l.A.A.A.A.S.S.A.H.A.S.G.H.H.S.K.L.L.L.L.L.Y.Y.P.T.T.T.~.Y.^.~.T.^.~.T.~.~.~.~.~.~.).Y.!.~.~.T./.~.^.~.~.!.Y.T.T.~.T.T.T.Y.P.Y.P.L.L.L.H.L.L.L.L.H.L.H.L.H.H.L.Z.H.S.H.S.G.H.H.S.A.G.A.H.G.Z.G.S.S.A.A.H.G.A.A.S.A.A.A.A.A.A.A.A.l.A.g.A.z.A.A.g.k.k.l.k.g.f.g.g.k.k.g.g.g.f.k.f.f.l.k.d.f.f.i.z.k.f.g.g.a.f.j.a.f.f.f.f.f.f.g.h.d.k.d.f.g.g.d.g.g.g.l.g.g.h.z.g.h.f.f.d.f.f.f.k.g.g.g.a.i.g.a.a.a.a.a.g.a.f.k.a.k.f.f.f.f.f.f.k.g.g.a.z.f.h.f.f.z.z.z.h.h.h.z.h.h.h.h.g.l.h.l.h.l.l.l.l.h.j.A.h.h.h.h.j.s.l.a.h.k.g.d.g.k.d.k.f.k.d.d.f.f.d.k.i.k.d.a.i.i.k.i.i.a.a.a.a.a.k.a.a.k.a.a.k.i.i.i.a.a.a.i.a.a.a.a.d.P ! ! ZXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXDXDXGXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXAXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXFXBXm.[ ~ / ` T.~.~.T.~.T.T.T.T.P.T.T.T.T.T.T.P.P.P.P.P.U.L.U.L.L.L.L.L.K.L.L.L.U.L.L.K.L.L.L.L.L.L.D.L.L.P.S.L.S.L.H.S.L.S.U.L.S.L.H.L.H.H.L.H.H.L.S.D.S.S.S.A.A.A.A.G.g.A.Z.A.l.A.h.h.A.z.A.A.A.l.A.j.A.A.A.A.A.A.G.A.G.A.A.J.h.A.H.H.S.H.S.H.H.H.H.S.L.H.L.H.H.L.U.H.L.H.K.L.G.L.L.U.L.L.L.K.L.L.L.L.L.L.L.L.L.L.L.J.K.L.L.L.L.L.L.L.U.Y.U.T.U.U.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.Y.U.T.P.Y.T.Y.T.T.T.T.T.~.T.~.T.~.~.T.~.T.~.~.~.~.!.~.~.~./.~.~.~.~./.~.[./.^.~./.(./.!.~.~.~.~.T./.T.T.~.T.~.P.[.Y.[.T.!.T.T.U.XXT.T.T.T.T.T.T.T.~.~.~.T.~.T.~.~.E.(./.~./.~.~.~.~.~.~./././.~.~./././././.!././.(./.(.(.`.^.", "Z Z Z Z C Z C Z B D Z B Z C F Z Z Z Z Z Z Z F B Z C C Z D Z F Z Z Z Z D D D D D F H L J J J L L L P J J L L J J Z P P J P L J H J J L H J H L H H H H D H Z K H H H H H H J Z L L H L L L J L P J J J J L P L P P P I L P P P I I I P ) ) P I I P I I ) ) P P ( I P I I J ) I ) P ) ( P I P ) ) ) ) ( I P ) J ) I ) I ) I ) I P I I I I P P I I I I ( P I I I P I U I U U Z.Z.g.g.l.A.g.A.g.g.l.l.l.l.A.l.A.l.z.k.A.A.A.A.l.A.l.G.A.l.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.S.A.S.S.Z.H.H.H.S.H.L.L.L.P.P.P.Y.P.Y.T.^.T.T.T.T.T./.~.~.~.~.(.~.~.~.~.~././.Y./.~.~.T.XXT./.~.Y.T.T.R.Y.T.P.P.Y.L.L.U.P.L.L.L.S.L.S.L.S.H.H.H.H.S.H.S.S.H.H.G.A.H.S.A.A.S.S.A.H.A.S.S.S.S.S.A.A.S.A.A.A.A.A.A.l.A.l.l.l.k.k.k.l.A.g.g.g.g.k.f.k.d.f.f.f.f.f.z.f.l.d.k.k.z.g.f.f.k.g.a.g.f.g.a.g.f.g.f.j.k.f.d.d.k.f.g.g.g.g.l.g.g.z.k.g.h.g.z.g.g.g.k.h.f.f.f.a.a.a.g.a.a.f.a.g.a.a.f.f.a.a.f.f.a.f.f.a.f.k.f.g.k.a.z.f.f.h.f.f.f.h.g.g.h.k.f.z.z.h.z.h.z.h.h.h.h.f.z.h.f.z.z.h.j.h.l.f.f.h.h.k.d.g.g.d.f.f.f.f.f.f.f.f.k.f.f.f.k.i.a.k.a.i.k.u.a.a.a.a.k.a.a.a.i.i.a.a.k.i.d.a.E D.a.a.a.a.a.z./ / / ZXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXAXFXFXFXFXFXGXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXDXAXDXAXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXBXpX{ ! ! [ ~.~.T.~.T.T.~.T.T.T.T.T.T.P.T.P.P.T.P.P.L.U.L.L.L.Y.P.L.U.U.L.K.L.L.Y.U.L.U.L.L.L.L.L.L.S.P.S.P.S.L.S.L.U.L.L.L.L.Z.L.H.U.S.Z.U.H.L.L.H.S.H.D.D.S.A.H.h.A.A.A.h.A.A.h.h.l.l.l.l.h.l.h.h.A.g.A.h.A.A.A.A.A.A.A.A.A.A.h.A.S.S.S.S.H.H.H.H.H.H.H.L.U.H.H.H.L.L.L.L.L.L.L.L.L.L.L.L.L.L.U.L.L.U.L.L.U.L.L.L.L.L.U.L.D.L.L.L.U.P.P.P.U.T.T.U.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.U.T.P.U.Y.T.T.T.T.T.~.T.T.T.T.~.[.~.~.[.T.!.~.~.~.!.~.~.~././.~.~./././.~./.!.~.~.~.~.T.~.T.T.~.~.T.T.T.~.T.T.T.P.T.P.T.T.T.T.T.T.T.T.T.T.T.~.~.T.~.~.~.~.(.~.[.(././.~.~.~.~.~./.~.~.~./.~.(.~.~././././.(.(./.(.(.(.(.(.", "D B C C Z Z Z D B D Z C Z Z Z C B C Z C C Z A Z C Z Z Z Z Z Z Z Z Z D D D D D D H D L D D J J J P L J L L L L H L L H H L L H L H H H H H H H H H H H H H H H H H H H H L L H H L L J J J J P J H H Y U L J I L L L P J P P P P J I P I P I I I P I P ) P I ) P P ) ) P P I ) J ) ) P ) ) P P I P P P I ) ) P ) ) I I I ) I I ) I I I I ) ) P I I I I P I P P I I I I I T d.g.l.l.l.g.l.k.A.A.l.A.l.l.l.A.l.A.A.Z.A.z.A.A.A.D.A.l.D.A.A.S.A.A.A.A.A.h.A.A.A.A.A.A.S.A.A.S.G.S.G.S.H.H.H.H.L.L.L.Y.P.P.T.~.T.T.T.T.^.^.~.T.!./././.~.~./.!././.~./.!.~./.~.~.~.~.~.~.~.T.~.T.~.Y.T.T.P.T.L.P.Y.L.L.L.L.L.L.S.S.L.L.H.H.H.H.S.H.H.H.A.H.H.S.G.H.H.S.S.A.A.S.H.H.A.h.S.A.S.A.A.A.A.A.A.l.A.A.A.l.g.Z.A.k.l.g.k.g.g.g.g.d.f.g.g.d.k.d.k.f.g.k.k.k.g.s.f.z.f.f.a.g.a.f.a.g.a.f.a.g.f.z.k.d.g.h.z.g.k.g.h.g.g.l.g.k.A.g.h.g.g.g.g.k.g.f.g.z.k.a.g.a.a.a.a.a.a.a.f.a.a.s.a.f.z.k.a.a.g.f.f.k.f.f.g.k.f.f.f.f.a.f.f.a.g.h.f.h.z.f.h.h.g.h.h.h.f.z.h.f.h.h.h.f.h.k.k.f.f.k.k.g.k.g.k.g.z.f.f.f.f.k.d.k.d.d.k.d.k.k.i.a.a.a.i.k.i.a.a.k.a.a.a.k.a.a.k.a.k.a.z.a.z.i.d.a.d.a.a.a.i.S ! ! BXAXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXSXGXDXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXDXBXQ.[ ! ! [ ~.T.~.T.~.~.T.~.T.T.T.T.T.T.P.P.P.P.P.P.L.L.L.U.L.U.L.P.L.L.L.L.L.L.K.J.L.L.L.K.L.H.D.L.U.S.L.S.L.L.S.L.S.L.Z.S.L.L.L.F.S.U.H.D.L.G.H.H.S.H.A.H.S.H.A.A.A.h.A.A.h.k.h.h.l.l.l.l.l.l.h.h.Z.A.A.A.A.h.A.g.A.h.A.A.A.A.S.A.h.S.h.S.H.A.H.H.H.H.H.H.S.H.S.H.S.L.H.H.S.L.L.L.G.L.L.L.L.L.L.L.U.L.L.L.L.U.L.L.K.Y.L.L.U.U.L.L.L.P.Y.P.U.U.T.T.T.T.T.T.T.T.T.T.T.T.U.T.T.U.T.U.T.T.P.T.T.T.~.T.~.T.~.T.~.~.~.~.~.~.~.~.~.~.~.~.!.~.~.~.~./././.~./.~.(././.T.~.R.~.~.T.T.~.T.T.T.T.Y.~.T.T.T.[.T.[.T.P.T.T.T.T.T.T.T.T.T.T.T.T.~.~.~.T.T.~.~.~.~././.~.~.!./././.!.(./.~.~.^.(././.^.(././.(.(.(.(.(.(.", "C B Z Z C Z B C Z A Z C C Z Z Z D C A C Z C Z C D B C Z F Z Z Z Z F D Z D D Z Z H D H D H H H J L L Z J J H J L H H J L H J H H H H H H J L H H H Z H Z H H H H J H H H H J H L H J H P H P L J J J U J L J P P I P L P P P I I I I I J I ( I ) I I I ) I P ) I ) I I I I ) ( J I P ) P ) P P ) ) P ) ) ) P ) P I ) I I P ) ) P P I I I I P I I P ) P I I I ( U I I I ) [ d.g.l.l.l.l.l.g.l.l.l.l.l.A.A.g.A.k.Z.g.A.g.A.A.l.A.A.A.A.A.A.A.A.G.A.A.A.A.A.A.A.A.S.A.A.S.S.H.A.H.H.H.H.H.H.L.L.L.L.T.P.P.T.T.T.~.T.T.~.T.~./././././.~././.^.E./././.E.(././.~.~.(.~.~.~.T.T.T.T.T.T.P.Y.U.U.L.U.U.L.L.L.L.H.H.H.H.H.L.D.H.H.H.H.H.H.S.H.H.H.G.H.Z.W.A.S.H.A.A.S.A.A.S.A.A.h.A.A.A.A.l.l.l.l.A.z.A.g.g.g.g.g.g.D.d.z.i.g.f.f.f.f.d.f.g.f.f.g.k.f.k.f.f.f.h.g.f.g.f.f.f.f.f.j.g.a.g.d.g.k.k.g.g.g.g.l.g.l.l.l.l.l.l.g.A.g.g.h.g.z.l.g.f.g.g.a.g.z.a.f.a.a.a.f.a.f.a.a.f.a.a.z.a.f.f.f.k.k.k.f.f.a.g.f.f.a.k.f.k.a.f.f.h.z.f.g.g.g.g.f.h.f.h.f.h.f.h.f.h.f.h.z.f.f.g.g.f.g.g.g.d.g.f.f.f.f.f.k.f.f.f.f.f.i.d.f.f.d.f.k.i.a.z.i.d.a.k.k.i.k.i.a.k.a.a.a.i.a.a.a.a.i.i.i.a.a.a.S / / CXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXFXGXDXDXAXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXHXVXBXm.{ ~ Q ` ~.~.~.~.T.T.~.T.T.T.T.T.Y.Y.U.Y.L.U.U.L.Y.Y.L.U.P.P.P.P.P.P.P.P.L.L.L.L.U.L.L.L.L.L.P.L.L.L.U.S.S.Z.L.H.H.L.L.L.L.L.H.H.U.S.L.L.L.D.L.S.S.H.H.A.S.Z.h.S.h.A.g.h.h.h.l.h.h.h.h.l.h.h.l.S.g.h.h.A.A.h.G.l.l.G.h.A.h.A.h.G.S.A.A.A.G.S.S.S.G.G.H.H.H.H.S.U.L.S.L.L.L.G.L.L.L.L.L.L.R.I.L.I.U.U.L.L.U.U.L.L.Y.L.L.L.L.U.Y.U.P.P.P.Y.P.T.P.T.T.~.T.T.T.T.T.U.T.U.T.T.Y.P.P.Y.U.P.P.T.T.T.T.~.~.T.T.~.~.T.[.T.[.~.~.~.~.~.~././.T.~.(.~.~.~.~./.~.~.~.~.~.~.~.~.T.T.T.T.T.T.T.~.T.~.Y.T.T.[.T.T.T.T.P.T.T.T.T.T.T.T.T.T.T.XX).T.~.~.~.T.!.~./././././.!.~.[./.~././.(.^.~.(.~.^.(.(.E.(.(.^.(./.(.(.(.", "C Z C Z Z C C Z C F C Z Z B C Z Z C Z Z Z Z Z C Z Z D F C Z F Z Z F Z C Z D Z G Z D H H H H H H L L P H J H L L L L H H L H H L J H H H Z L Z H H H Z H H Z Z H H Z J H J Z K H H H H H L L P H J U J J P U P L P L I L P P P P I I I I I I J I I I P P I P P I P I I I I I P ) ) I P ) ) ) ) I ) ) J ) P ) ) ) ) I I ) I I ) P ( I I I I J I P I P P I I I U I I I U ` d.Z.g.g.k.l.k.l.A.g.l.g.l.l.g.g.l.z.D.l.A.l.D.A.A.A.A.A.A.A.A.A.G.A.l.A.A.A.A.A.A.A.A.l.G.A.A.A.A.S.S.H.H.H.H.H.H.L.L.U.P.T.T.T.T.~.~.~.~.~.~.)././.~././.(./.~.(././././.~.~./.(./.E./.~.~.~.~.~.T.T.!.Y.T.P.T.U.U.L.L.L.H.L.D.L.L.L.S.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.S.S.A.S.S.A.A.A.A.S.D.Z.S.A.A.A.A.A.A.l.l.A.z.A.g.l.A.g.k.k.k.l.f.g.k.f.f.k.k.f.k.d.z.d.z.z.k.g.f.f.f.f.f.f.d.g.f.f.j.g.a.g.g.g.g.g.g.k.z.l.z.l.z.l.l.z.l.A.l.h.g.A.g.h.h.g.A.j.f.a.g.g.a.a.a.a.k.f.a.a.a.a.a.f.a.a.a.f.f.f.f.k.k.f.g.z.a.g.a.f.a.f.f.f.a.g.g.f.k.z.f.g.g.g.g.f.z.f.g.z.h.g.f.f.z.f.f.f.f.f.f.z.f.g.k.k.k.g.g.f.f.f.d.f.f.d.k.f.f.k.k.f.a.k.d.k.z.d.i.d.z.a.k.k.k.k.z.k.a.k.i.a.a.a.a.a.a.a.i.a.i.a.a./ ! ! CXZXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXAXFXFXFXFXFXFXFXFXFXDXFXFXFXFXSXGXDXAXSXDXDXDXFXAXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXAXDXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXZXZXZXBXm.[ ~ Q [ T.T.~.T.~.T.~.T.T.T.T.T.L.L.U.L.L.U.L.J.L.L.L.U.P.P.P.P.P.P.P.U.L.L.U.L.L.Y.L.L.L.U.L.P.L.S.L.U.U.D.L.D.L.H.S.U.F.S.U.L.L.Z.U.S.L.S.D.S.H.G.H.S.S.G.H.S.A.l.Z.A.h.h.l.h.h.h.z.z.h.h.h.z.Z.A.A.A.A.A.l.l.l.h.A.l.h.A.l.h.Z.A.j.A.h.S.A.S.S.H.H.G.H.H.H.H.S.U.H.L.L.L.L.L.H.L.L.L.K.H.L.L.Y.U.U.L.U.L.L.U.U.L.L.L.P.L.U.P.P.Y.P.P.T.T.T.T.T.T.T.T.T.T.U.T.T.U.U.Y.T.Y.P.P.U.P.P.P.T.Y.T.T.T.T.~.T.T.~.T.~.T.~.~.~.~.~.~.!.~.~.~.~.~.~.~.[.~.~.~.~.T.~.T.T.T.[.T.T.T.T.T.T.Y.I.T.I.T.T.P.T.T.P.[.T.T.T.T.T.T.T.~.T.~.T.T.T.~.~.[.T.~.~.~.~././.~././.~.~././.~.(.T.E./.[.(./.^.(.(.(.(.(.(.(.(.(.(.", "Z C C Z Z C C Z Z A Z A C Z C Z C Z C C C Z A Z Z C Z C C D Z C C Z Z D D D Z F F Z H D Z H H H H L H H J H H H H H J H H L D H H H L H H H Z H Z D H H Z H H D H H Z H H H H H H J L H H P J L J L L L L P P L P J P P P P P P J I I I I P I I I I P P I I I I P I P I I I ) I I ) I I P I I I P ( I I P P P ) I I I ) I I P I I I P P P ) I P P I U I P P P I I I Y T [ j.Z.g.g.l.l.g.g.l.l.l.l.l.l.A.l.A.A.A.g.A.g.A.A.A.A.A.A.A.A.A.l.A.A.A.A.A.A.A.A.A.S.A.S.S.S.S.G.G.S.H.H.H.L.L.L.L.U.T.T.Y.T.T.T.~.~.T.~.~././.!.(./.(./.(./.^.[.~././.(.(.^.(.!.(.(.(././.!./.~.(.T.T.P.T.T.Y.Y.U.T.U.L.L.L.L.D.L.L.L.H.H.H.L.H.H.H.H.H.H.H.H.H.H.S.S.H.H.H.S.S.S.A.A.A.A.A.A.Z.A.A.A.A.l.l.A.l.A.z.A.l.l.z.g.z.g.z.z.h.k.k.f.g.d.k.k.f.k.f.k.g.f.f.g.g.g.g.a.g.f.f.g.f.f.g.g.g.h.g.g.g.z.h.h.z.h.h.l.z.A.l.A.l.l.A.l.l.l.l.z.h.h.h.z.g.g.z.z.f.f.a.g.f.a.f.f.a.f.f.a.k.f.a.f.f.f.f.f.f.f.z.f.g.g.g.g.k.a.a.a.g.g.a.k.g.g.g.j.h.z.g.z.f.l.k.k.z.f.f.z.z.f.f.f.f.f.f.f.g.k.g.k.g.z.g.k.k.f.k.g.k.f.k.k.z.d.k.k.f.f.f.f.i.i.d.z.k.d.k.k.i.f.f.f.k.k.k.d.a.a.z.k.a.a.a.a.a.i.a.a.P ! ! CXFXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXDXAXFXFXFXFXDXDXAXDXFXFXAXDXFXFXFXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXAXAXFXFXDXZXBXQ.} ~ Q [ ~.~.~.~.T.T.T.T.T.T.T.P.P.P.U.U.Y.U.Y.K.Y.L.U.U.T.P.T.T.P.P.Y.U.Y.K.L.Y.U.U.R.Y.L.L.L.L.H.K.L.D.S.S.L.L.Z.H.U.H.L.S.L.H.L.H.S.H.H.S.S.S.H.H.H.H.G.S.S.S.A.A.z.h.l.l.h.h.l.l.h.h.l.h.h.S.A.h.A.A.h.A.h.A.z.h.h.l.h.h.h.A.h.h.A.j.A.S.A.A.S.S.S.S.H.H.H.H.H.L.H.L.U.S.L.L.L.L.L.L.L.L.I.Y.U.L.L.U.U.U.L.L.L.L.L.U.L.P.P.P.P.P.Y.P.P.P.P.T.T.T.T.T.U.T.U.U.U.T.U.U.U.P.U.U.P.P.T.P.Y.T.T.T.T.~.T.~.~.~.~.~.~.~.~.~.~.~.~.~./.~.(.~.~.[.~.T.T.~.~.~.~.T.T.T.T.T.T.T.T.T.T.T.Y.T.T.T.T.P.T.!.T.T.T.T.T.T.T.T.T.~.T.T.T.T.T.XX~.~.~.~.~.~.~.(./././.(././././././.[.~./.(.(./.^.(.(.`.(.(.(./.`.(.(.(.", "C C C C C C C C C C Z C Z C Z Z Z C C F C Z C Z Z Z C D F Z C D F Z Z Z D Z Z Z Z H D H H H H H L H S H H H H H L L L H H H L H H D H H H H H H K D H Z H H Z H H Z L F Z H H H H L L L H L P H I L L I L L P P L P P P P P P P I I I J I I I P P P P ) P I I I P ) J ) I J ) I I I I I ( ) ) I I P ) I I ) ) P ( ) P I I ) ) I I I I ( P P P ) ) I P I I ( P P I U ) T d.g.g.z.l.g.l.l.k.l.l.g.g.l.l.l.A.g.k.l.l.l.A.A.g.A.l.A.A.A.A.A.A.G.D.l.l.A.A.A.A.A.A.S.A.G.A.H.Z.H.H.H.H.H.L.H.L.U.U.P.P.T.T.T.T.~.~.~.~.~.(././.(.(.(././.^.~.`.^./.(.^.(.(.(.(.(.(.(.(.(.(./.^.~.^.T.T.T.T.~.T.P.U.U.Y.L.L.L.U.L.L.D.L.L.H.H.L.H.H.H.H.H.H.H.H.G.H.S.H.Z.G.A.S.S.A.D.G.A.S.l.A.A.h.A.A.A.l.A.A.l.h.l.l.l.l.l.l.g.z.l.g.f.k.k.g.k.g.d.k.g.z.h.f.z.f.g.g.g.g.j.f.g.g.g.g.h.g.a.g.f.g.g.g.g.g.g.g.h.h.h.h.l.l.l.l.A.g.l.A.l.l.g.z.A.z.l.l.l.g.g.k.k.z.a.a.a.a.a.f.f.a.g.f.a.f.a.f.f.f.f.f.g.f.f.g.a.a.g.f.f.k.f.f.g.g.j.z.g.a.z.z.g.g.g.h.f.z.f.f.f.f.f.z.f.f.f.g.f.f.f.d.k.g.k.k.k.k.k.f.g.k.f.g.k.f.f.k.z.a.k.k.f.f.f.z.k.k.i.i.z.i.k.f.k.f.f.a.k.d.d.d.a.a.i.a.a.a.a.i.a.a.a./ ! S CXFXZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXSXGXFXFXFXFXFXFXFXAXDXFXFXFXFXDXDXDXAXFXAXDXAXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXGXAXFXFXZXDXDXBXpX[ S Q c.~.T.~.~.~.~.T.~.T.T.T.Y.P.Y.U.L.U.L.L.U.L.U.U.L.P.P.P.Y.P.P.P.P.L.U.L.Y.L.L.U.U.L.U.L.L.L.L.D.L.L.L.L.F.H.H.D.Y.L.S.H.L.H.S.F.K.H.H.S.S.H.H.H.H.S.G.S.z.A.A.A.A.l.l.l.l.h.h.z.l.h.h.h.z.h.A.g.A.h.l.l.l.h.h.h.h.h.l.h.h.h.Z.h.A.h.z.A.A.S.S.S.S.H.H.H.H.H.U.S.H.L.L.L.G.H.L.L.L.U.L.I.I.L.U.Y.L.P.L.U.L.L.Y.K.L.L.U.P.P.P.P.Y.P.U.U.T.T.T.T.P.T.U.T.U.Y.U.U.U.U.P.P.T.P.P.P.P.T.T.Y.T.T.T.T.~.T.[.T.T.~.~.~.[.[././.!.~./.!.T.~.~.T.~.T.~.T.~.T.T.T.T.[.T.T.T.T.T.~.T.Y.T.T.I.Y.T.P.T.T.T.T.~.T.T.T.T.T.~.T.T.~.T.T.T.~.~.^.T.~.T.~.~.~./././.~./.[.(./.^./././.(./.^.{.(.(.(.(.`._.`.|.(.(.`.`.", "C C C Z C F C C G Z C C C Z Z C Z C C Z C Z Z Z Z Z Z Z Z Z D C F Z Z Z D Z Z Z Z D D H F H D H H H H Z L L H L H H H D L H H H H H H H H D H D D H D D D H H Z H D Z H H H H H H H J Z H P J L H H P J P L J L P P P L P J I P J I I I I I I I P I I I ( I I P ) P P ) P ) I P ( I ) P I P ) I I I I ) ) P ) I I I I ) ) P I P P I I I I L I I P I L I I P I I I U U [ Z.d.Z.g.h.h.h.l.g.l.g.l.l.k.l.l.g.l.A.A.A.l.l.l.A.Z.A.D.A.A.A.A.A.A.A.A.A.A.G.A.A.A.A.G.A.A.S.S.S.S.H.H.H.H.L.L.L.L.P.Y.T.T.T.T.~.~.T.^././.^.(.^.(.(.(._.(.(.(._.(.(./._.(._.(.(.(._.^././.(.~.!.~./././.~.T.Y.T.Y.U.R.P.P.L.P.L.P.L.H.L.H.H.H.L.H.H.P.J.H.S.H.D.L.S.H.H.S.G.S.S.S.S.A.A.S.A.A.A.D.A.G.h.h.A.h.l.A.h.A.l.l.A.l.l.g.g.l.d.l.z.z.l.k.g.z.k.z.k.g.g.g.g.j.a.f.f.h.g.g.g.g.f.f.g.l.g.g.z.g.g.g.A.h.l.h.A.z.l.l.A.g.A.A.l.l.A.g.h.h.h.h.A.z.G.g.g.l.f.g.f.g.z.k.k.a.f.a.k.f.a.f.f.a.a.z.f.k.g.f.a.g.g.z.g.a.f.f.f.f.f.h.f.f.g.g.g.z.g.g.g.g.z.k.k.f.f.k.f.f.g.f.f.f.g.f.f.f.g.z.k.k.g.f.f.z.d.g.k.k.k.k.k.k.k.k.g.g.f.f.f.f.k.k.k.k.d.k.f.k.f.k.k.d.k.z.d.k.a.a.i.a.i.a.i.a.i.a.a.a.S ! S CXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXGXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXDXAXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXGXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXFXVXBXm.[ Q ^ [ ~.~.T.~.T.~.T.T.T.T.T.Y.U.U.U.U.L.U.L.Y.L.U.T.L.Y.U.T.T.P.Y.U.P.Y.L.L.U.U.U.U.P.U.L.L.L.L.L.L.L.H.L.H.L.Z.L.L.L.H.H.H.H.H.H.L.K.H.H.G.A.H.H.H.S.H.G.A.G.A.A.A.h.l.l.h.z.D.Z.g.g.g.h.h.l.z.h.g.h.d.D.g.k.g.k.g.z.h.h.l.l.l.l.l.l.A.g.A.A.F.S.A.D.S.G.G.G.L.L.L.K.L.L.P.L.P.L.L.L.L.I.L.Y.L.U.U.U.U.L.Y.L.L.L.L.L.U.P.U.P.P.P.P.K.T.Y.U.U.T.U.Y.T.T.U.U.U.U.L.U.U.P.P.P.P.L.P.U.U.Y.U.T.Y.Y.T.T.~.T.~.T.^.~.~.~.~././.~.~.~.~.T.~.~./.T.T.T.T.T.[.T.T.T.U.U.T.T.T.T.T.T.U.Y.P.T.Y.P.T.T.T.T.T.T.T.T.T.T.T.E.~.T.T.T.~.T.T.T.~.~.T.!.~.~.~././.(./.(././.(.[.(./.(./.(.(.(.(.`.`.(.{._.|._._.(.(.(.", "C C C C C C C Z C C C D C C Z C C C Z C Z B D C Z C C Z Z Z C Z Z Z F C Z Z Z H H Z Z Z H D H H H Z H L Z L H H H H Z L H D H H H H H H D H Z H H D D Z D F D H Z H Z H Z F H H H H H H H J L H L P L L J L I L J P P P P J I I I I J I J I I J I P L I I P I I P P P P P ) I ) P I ) P I ) ( I I I ) ( ) J P ) I ) I P J ) I I I P P P P I I I I P I I I U I P I P I d.j.g.j.g.h.g.h.g.A.g.l.g.l.l.l.z.D.l.k.z.l.l.l.A.l.A.A.z.A.A.A.A.A.A.A.A.A.A.A.A.H.A.A.A.Z.G.G.S.G.S.H.H.L.S.L.L.L.L.U.T.T.T.T.T.~.~.~.E.~.~.^.^.(.(./.(.^.(.(.(.(.(.(.(.(._._.(._._.^.{.(.(.(.(./.T.~.~.T.Y.~.E.T.T.T.T.P.P.Y.L.P.L.P.L.L.L.P.H.H.L.L.D.H.H.L.H.S.H.L.S.S.H.D.S.S.H.A.S.A.A.A.A.A.A.A.A.A.A.A.h.l.h.A.z.A.g.l.l.g.l.l.g.l.l.g.l.d.g.d.k.f.g.g.g.g.g.h.g.h.h.h.g.g.g.g.g.h.j.h.f.h.g.g.l.l.h.h.h.h.h.h.A.l.A.g.A.D.A.A.z.l.z.l.D.l.A.l.l.g.g.z.g.g.h.f.a.f.f.a.a.f.f.a.f.f.f.z.f.k.a.f.f.f.g.g.f.f.a.f.j.f.z.f.f.f.k.g.z.g.g.g.g.g.g.g.g.f.f.z.z.f.a.f.f.g.a.f.s.a.a.a.k.a.j.k.k.k.f.f.f.f.f.k.k.h.k.z.k.k.f.g.f.f.f.k.d.d.i.k.f.k.f.f.f.f.k.f.f.k.i.d.i.z.i.a.a.a.i.a.i.a.a.a.a./ ! ! CXAXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXDXSXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXDXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXSXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXHXQ.} ! ^ [ ~.~.~.T.~.T.T.~.T.T.T.I.U.L.U.L.L.L.L.L.L.T.U.T.U.T.Y.U.U.U.P.P.U.U.U.U.L.U.P.U.U.L.L.L.L.L.A.L.H.H.H.S.S.S.S.L.H.L.H.L.H.H.H.H.H.H.G.H.H.H.H.S.H.H.H.A.Z.A.A.A.A.l.h.k.z.k.k.z.g.d.h.h.h.h.h.f.z.g.g.g.g.g.k.g.h.h.l.j.h.h.l.l.z.D.A.A.A.S.D.D.A.H.H.L.G.H.H.U.L.S.A.P.L.L.L.L.L.U.I.U.U.L.L.U.U.L.K.L.U.U.L.Y.P.P.L.U.P.Y.P.P.P.T.T.U.Y.U.P.Y.U.Y.L.T.U.U.L.U.P.P.Y.P.U.L.U.Y.Y.U.T.Y.Y.~.~.Y.T.~.T././.~./.~.T./.~.~./.~./.~.~.T.~.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.Y.T.Y.P.T.T.T.P.~.T.T.[.T.R.XXT.T.T.~.T.~.T.~.~.T.T.~.!.~.~.~.~./././.(.[.(.(.(.!.[.(.(.(.(.(.(.(.(.(.|._.^.(._._.|.(.", "C C C A Z C C C Z B C C Z C C C Z C C Z Z Z Z Z Z Z G Z D C D Z C F C Z F Z F Z D F Z D Z Z H Z Z Z H H Z H H H L H D H H H H Z H H Z Z H H H D D H D Z S Z D D H D F H H H Z H D D J S H H H J H P J L L L I P L P P L P P P P J I I I I I I I I I I I P I I I P P ) P P P P ) P P P ) P P P ) ) J I I I ) I I I I P I P I P P P I P P I P I I I L I L I P P I I I Y T j.g.h.g.g.l.l.g.l.k.l.g.g.l.A.g.k.g.g.Z.l.l.Z.l.A.z.A.z.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.S.G.G.S.G.H.H.H.H.L.L.L.L.L.Y.U.P.T.T.~.~.~.~.~.~.(.(.(.{.(.(.{.(.(.{.(.^./.^.].(._._.(._.(.`._.XX(.(.(.(.(.~.!.E./.~.~.Y.~.T.T.R.T.T.U.P.Y.L.L.L.L.H.L.L.H.L.H.H.H.L.S.L.L.Z.J.H.H.H.H.H.S.G.S.A.A.A.A.A.G.l.A.l.A.A.A.A.l.A.h.A.A.g.A.z.A.A.g.l.l.g.k.g.z.g.g.z.h.g.g.g.g.l.j.g.h.f.f.h.h.g.h.g.h.h.z.g.h.h.h.h.h.g.h.g.h.g.l.l.A.A.A.A.z.A.A.A.A.A.l.l.A.l.l.l.l.z.l.g.g.g.a.z.f.k.f.f.k.g.f.a.k.f.f.f.s.a.h.a.f.f.f.f.z.f.g.z.j.f.f.h.k.h.f.j.z.h.z.g.g.g.g.g.h.f.f.f.f.f.f.a.a.g.i.z.a.f.a.z.g.a.a.g.k.f.f.k.f.z.f.z.k.g.k.g.k.k.k.k.g.f.f.f.f.k.f.f.k.f.f.f.f.k.f.k.f.f.k.f.a.f.a.a.a.a.i.a.a.i.a.a./ ! ! CXFXFXZXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXZXZXHXBXm.[ ! ~ [ T.~.T.~.T.T.T.T.T.T.U.Y.U.Y.L.L.L.Y.L.L.U.U.U.U.T.U.U.T.U.T.T.U.U.U.U.U.L.T.U.U.Y.L.L.L.H.L.L.H.H.G.S.L.S.S.S.L.L.L.H.H.U.H.H.H.S.H.H.H.H.S.H.U.G.G.H.A.g.A.A.A.z.A.h.h.g.g.g.z.D.A.k.D.h.h.A.D.h.z.h.D.g.g.g.z.z.z.j.z.k.l.l.h.z.h.h.h.z.l.D.A.H.S.H.H.S.S.U.D.L.L.L.L.L.L.U.P.L.Y.U.Y.U.U.U.U.U.L.L.U.L.L.L.L.P.P.Y.P.P.P.Y.P.T.P.T.P.Y.U.U.L.T.Y.U.L.U.L.L.L.U.L.L.Y.L.U.P.L.U.P.T.T.T.T.T.T.T.~./.T.~.~.~./.~.~.~.(.~.~./.T.~.~.T.T.T.T.T.T.T.U.T.U.T.T.T.T.T.T.T.Y.T.T.T.P.P.T.T.T.T.P.~.P.T.U.U.T.T.T.T.~.T.T.T.~.T.~.T.~.~.Y.~.!.~./.(././.[.(./././.(.(.(.(.(.(.(.(._._._._.^._.|.}.|._.", "C C C C C C Z C C C Z F B Z D C Z Z Z Z C Z Z Z Z Z B C C D C F Z F Z Z C D C Z Z Z Z D D Z Z Z H H Z H Z H H Z G D H D H H D H Z H H H F Z H D H Z H Z D Z H H Z D Z D H Z H D Z H D H H H H H L H H L J L L L P P P P L P I J J I J I I J I P P P I I P I P I P P ) P P ( P P P ) ) P ) ) P I J ) J ) I I I I ) I I I J ) I P I I P P P P P I P ) P I P P I P P ) T Z.j.h.h.h.l.l.g.l.l.g.l.l.g.g.g.z.Z.g.l.z.l.l.A.z.z.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.H.G.Z.G.S.Z.G.H.H.K.S.D.L.L.L.L.U.U.Y.T.T.T.~.~.~././.^.^.(.{.(.~.`.`.(.(.(.^.|./.(.(._.(.`.(._.^._.^.~.(.(.~./.^.~./.~./.T.~.~.~.~.Y.T.P.P.U.U.L.Y.L.L.L.P.H.P.H.P.K.L.H.L.S.L.L.S.L.H.H.H.H.D.S.H.A.G.G.D.A.D.A.A.S.l.A.A.A.A.A.A.A.z.l.l.A.l.g.A.g.g.l.l.l.l.g.g.g.g.k.h.f.g.g.g.f.g.h.z.h.h.g.g.h.g.g.h.h.h.h.z.h.l.A.g.A.A.A.z.l.g.g.D.k.D.g.A.A.A.l.A.g.l.l.l.l.l.z.z.l.f.g.g.k.k.f.f.k.f.a.f.g.a.f.k.f.z.g.f.j.g.f.g.z.a.g.a.g.f.f.f.f.k.f.f.f.a.z.g.a.k.z.g.g.f.f.f.f.z.f.f.f.a.a.z.a.f.f.g.s.a.g.k.i.f.f.k.f.k.d.k.k.h.g.g.k.f.g.g.k.f.f.f.f.k.i.f.f.f.k.k.k.k.f.k.a.k.k.f.f.f.a.k.a.a.a.a.a.i.a.a.g.~ S ! CXFXDXAXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXHXQ.{ ~ Q [ T.~.T.T.^.~.T.T.T.U.T.U.U.S.U.L.L.L.L.L.L.U.Y.T.U.T.U.T.T.T.T.T.T.T.T.I.T.L.U.I.U.L.L.L.L.L.H.H.H.H.S.S.U.S.L.S.L.H.L.L.L.H.S.K.U.S.U.S.H.U.U.S.G.G.A.G.A.A.A.h.A.h.h.z.h.k.Z.D.g.g.z.g.h.h.g.j.h.h.g.g.g.g.g.z.j.g.j.h.h.h.h.h.A.z.D.A.A.A.S.S.G.H.L.G.G.H.H.D.S.L.L.U.U.P.P.P.L.U.L.L.K.L.L.U.U.U.Y.U.L.R.U.U.P.P.P.P.P.U.Y.Y.P.T.P.Y.U.U.U.U.U.L.L.U.L.L.L.L.L.U.L.L.L.L.P.P.T.T.U.T.T.T.T.~.~.T.~./.~.~.~.~.~./.~.T.~.~.~.(.T.T.~.T.T.T.T.T.U.T.P.P.U.U.T.P.T.~.T.T.T.Y.T.T.[.P.T.T.T.T.Y.~.T.XX/.T.~.~.T.T.~.T.~.T.~.T.~.T.~.~.~.~.~.!./.~.(.^.^.(./././.(.(.(.(.(._.(._.(.|.^.|._.[.}._._.", "C A C C B C C D C C D C C Z C D C C Z Z Z C Z C C Z Z Z Z A G Z Z C F Z C Z C Z D Z Z F F Z D Z D Z D D H Z L Z D H Z H H H J F H Z H H L H H D H A H H H H D H H H F H Z D H H Z H D H H K H H L L L L L L L L J L P L P P P P J I I J J I J I I P P ( P P I P I I P I P P ) J I I ) I P ) ) I ) J P ) P ) I I J ( P I P I I I I P I P P P P U I P I I I I P I I U [ d.g.Z.z.g.g.l.h.g.A.z.g.g.A.g.Z.z.l.l.g.A.z.g.A.A.A.A.A.A.A.h.A.A.A.A.A.A.A.S.A.A.A.A.H.G.S.S.H.H.H.S.H.H.L.L.L.L.U.U.T.T.T.T.T.~.~.~./.~.^.^.(.^._._._.^.`._.^.`.^.(._.^._._.`.(._._.{._.(.^.(.(././././.~.~.~.~.T.~.T.T.T.~.Y.U.L.Y.U.U.L.L.L.L.L.H.L.L.H.L.L.L.L.H.L.H.H.H.L.H.H.H.S.S.A.S.S.A.A.S.S.l.D.A.S.l.G.A.A.h.A.A.A.A.l.l.l.A.g.A.A.g.h.g.h.g.h.g.z.j.g.g.Z.g.h.l.h.j.h.l.Z.z.h.h.h.l.l.l.h.h.g.A.Z.h.A.g.h.l.A.A.l.l.g.l.z.D.A.l.A.A.A.A.l.A.h.h.z.h.h.f.g.f.k.k.k.k.z.j.g.a.l.f.z.f.z.a.g.f.f.g.k.a.f.f.k.z.z.f.f.f.a.a.z.g.h.z.g.g.z.f.f.k.g.f.f.f.f.a.x.a.a.z.k.i.z.i.z.f.f.g.a.g.f.f.k.f.k.k.k.h.g.z.g.k.g.k.f.d.f.k.f.f.f.f.k.k.k.k.k.f.f.k.f.f.k.f.k.f.i.k.a.a.a.a.a.i.a.i.i.a.~ ~ S CXAXDXAXFXAXAXDXAXFXFXFXFXAXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXGXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXZXZXZXMXQ.} u / c.T.T.U.T.T.E.T.T.T.U.T.L.L.L.U.L.K.L.L.L.K.Y.T.U.T.T.T.T.T.T.T.T.T.T.T.U.U.Y.L.U.L.L.L.L.L.S.U.S.S.S.H.H.S.H.S.L.L.L.H.L.S.H.L.L.Z.U.L.U.L.H.S.G.K.H.G.A.A.A.A.z.h.h.G.g.l.z.z.l.z.k.z.k.f.k.k.z.k.z.k.k.k.k.k.k.k.i.k.f.k.h.h.h.z.z.A.h.h.h.z.A.A.S.L.A.H.U.S.U.S.L.L.L.U.P.P.P.U.U.U.L.L.K.L.L.U.Y.L.U.P.Y.L.P.P.P.P.P.Y.Y.P.T.U.L.T.U.U.T.U.L.L.L.L.L.L.L.L.L.L.L.L.L.L.Y.P.P.U.Y.U.T.T.T.T.T.T.T.~.~.T.~.~.T.T./.~.T.~.~.~.T.T.T.T.T.T.T.U.U.T.U.Y.P.Y.T.P.T.T.T.T.T.T.Y.T.T.P.P.T.[.P.T.T.P.T.T.T.~.T.T.T.~.~.T.~.~.T.~.T.~.T.T.~.~.~.~.~.^.~.[.(.(.(./.(.(.^.(.(.(.[.(._._.`.^._.|._.|._.|.", "C C C C C C C C D C C C C Z Z B Z Z B Z Z Z Z Z Z Z Z C Z C Z F D C C Z F Z F Z D Z Z Z Z Z F Z D H D Z Z H L Z H D D L H H Z H D D H Z Z H D D H D D D D D Z H D Z D D H H D Z H S D D H D H H H L H L L J P L L J P P P P P J I J J I I J J I U P P P I I P P I P P P I I P ) P I P P I P P P P ) ) P P I I I I I P I ) P P P P P P I P P P I I I L I P P I U I U T Z.g.g.z.Z.g.g.g.z.l.g.z.l.z.k.l.z.l.g.Z.z.l.A.g.g.A.g.A.A.A.G.A.A.A.A.A.A.A.A.A.G.G.A.A.H.H.S.H.D.H.H.H.H.H.L.L.L.U.U.T.T.T.T.~.~./.~./.^.^._.{._.{._._.(.[.(.^.^.(.(.(.}.`._._._._._._.}.(.`.(.^./.!./.~.~.~.^.~.~.~.~.T.T.~.U.Y.Y.U.U.L.Y.L.L.L.L.L.Y.H.L.L.L.L.S.L.L.L.L.H.H.H.D.S.H.H.H.A.S.S.S.S.S.S.S.G.A.S.S.A.A.S.D.A.A.A.A.A.l.A.l.l.l.g.g.A.l.h.h.g.g.g.h.h.h.g.l.g.A.h.Z.l.l.l.G.l.h.A.h.l.g.A.A.g.l.l.l.A.l.A.l.A.A.h.A.Z.A.g.A.l.h.A.l.l.l.h.h.z.g.g.h.f.g.f.g.f.g.f.a.g.g.z.f.f.f.f.g.f.f.f.z.f.g.z.g.z.a.z.z.f.f.z.g.z.j.g.a.z.f.z.f.f.z.f.f.f.f.f.f.f.a.a.i.k.i.k.k.k.i.a.f.a.a.s.f.i.f.f.k.k.k.k.g.k.k.k.k.g.k.g.k.f.f.f.f.f.k.f.k.f.f.k.f.f.k.k.f.k.a.k.f.i.k.i.d.a.a.a.a.i.a.a./ ! ! ZXAXDXAXFXDXDXFXFXFXFXFXFXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXGXFXFXFXFXFXFXFXFXFXFXZXZXCXpX} / / c.T.~.XXT.T.T.T.T.T.U.L.U.L.Y.L.L.L.L.U.L.L.U.U.U.T.T.T.T.P.^.T.T.Y.T.T.T.I.L.L.K.L.K.U.L.S.L.H.H.H.H.S.H.H.H.U.S.Z.S.L.L.L.L.L.H.L.H.D.H.H.L.L.S.A.H.A.G.A.l.A.A.h.h.Z.A.l.z.z.z.z.z.z.k.z.z.k.k.g.g.k.k.z.z.k.z.z.z.z.k.k.h.z.k.z.z.h.h.A.z.H.G.H.D.G.A.S.L.L.Z.D.L.L.L.L.U.P.P.L.U.L.U.U.U.R.Y.L.L.Y.L.U.L.U.L.P.Y.P.T.P.P.P.P.U.U.L.U.L.L.U.U.U.U.L.L.L.L.L.L.L.L.L.P.L.L.L.U.U.U.T.U.U.T.T.T.T.~.T.~.T.~.~.~.~.~.~.~.~.T.~.T.T.~.T.T.T.U.T.U.U.U.P.P.P.P.T.P.T.T.P.U.U.~.Y.P.P.T.T.T.T.T.~.~.T.P.T.T.T.~.T.T.T.~.T.T.~.T.~.T.~.~.~.~.~.~.~.(.(.(.~././.(.(.(.(.^.(.(.(._._.(.(.`.|._._._.^.|.", "C C B C C C C F Z B C Z Z C Z Z Z Z F Z F C Z Z Z C C Z C Z C C F C C Z C Z Z F Z C Z Z Z Z C Z Z Z Z Z Z Z Z G D D D D D Z Z D D G H H Z H D D H D H Z Z H Z D Z Z Z D H Z F H Z H D H H H H H J J L H J L L J L L L P I J J J I J J I J I I J I P P P P P P I P P P I P J P ) P P P I ) I I ) ) I P I I ) P I I I P I P I P P P P P P P P P I L ) P I I P P P I ) T g.g.Z.z.g.l.l.g.l.g.g.l.k.g.l.k.l.l.l.g.l.l.l.z.A.l.A.g.A.A.l.l.A.A.A.A.A.G.A.S.A.S.G.A.S.S.H.H.H.H.H.H.K.L.H.L.L.U.L.U.P.T.XXT./.~.~.^.^.(.{.^.{.{._.(._._._.(._.(.|.|._.}.}._._._.{._._._.(.(.(.(.(.!./.~.^.~.~.~.~.T.T.T.~.Y.T.U.U.U.L.L.L.L.L.L.P.H.L.L.L.H.L.U.L.U.L.L.L.H.J.H.L.H.D.H.G.S.S.S.H.D.G.G.H.S.S.G.D.G.S.A.A.A.A.A.A.A.A.A.A.l.A.h.l.g.h.g.h.z.Z.h.h.h.h.A.h.h.h.z.l.l.A.h.h.A.h.A.h.l.h.g.h.l.g.h.A.h.l.g.A.A.A.A.A.l.l.A.h.g.A.l.h.A.z.g.h.g.g.g.g.g.k.g.f.g.f.k.k.g.g.f.f.g.f.f.g.g.a.g.f.a.g.f.f.a.z.a.z.k.f.f.f.a.z.f.z.f.k.z.j.j.f.f.f.g.k.a.f.j.a.a.a.a.f.i.k.a.f.f.a.f.s.k.k.f.f.k.g.k.k.k.k.z.d.k.h.k.k.k.k.f.f.f.g.k.k.f.f.g.f.f.f.f.k.k.f.k.f.f.d.a.d.a.a.a.i.a.a.a.a.S / ! SXAXDXAXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXAXDXDXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXDXAXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXAXFXFXFXFXFXFXFXFXZXZXZXBXm.[ / / [ T.T.T.T.T.T.T.T.U.T.U.L.U.P.L.L.L.L.L.L.L.L.Y.T.U.T.T.T.T.T.T.T.T.T.T.U.T.U.L.U.U.L.L.S.L.L.S.H.D.F.H.H.H.H.S.U.H.L.H.L.L.L.L.L.L.L.L.H.L.L.K.K.H.H.H.G.h.S.A.z.h.S.G.g.h.j.f.G.z.x.a.k.a.z.a.k.k.z.k.d.z.k.z.z.k.k.x.f.z.z.f.k.z.z.z.z.A.A.A.l.A.G.L.H.h.L.L.H.U.H.L.U.P.L.P.L.U.L.U.U.L.L.L.L.Y.L.L.L.L.P.P.P.Y.P.P.P.Y.P.P.Y.L.U.U.U.L.T.I.L.Y.L.L.L.L.L.L.L.L.U.L.L.P.P.P.U.U.U.T.T.T.T.T.T.T.T.T.T.~.~.T.~.T./.~.~.~.~.T.~.T.T.T.U.T.U.U.U.P.P.P.P.P.L.T.T.U.T.T.T.T.~.P.~.T.T.T.T.T.T.~.T.Y.~.~.T.T.~.~.T.~.T.T.~.T.T.T.T.(.T.(.T.T.~.~./././.(.(././.(.(.^.^.(._.|._.|._.`.`.^._._.|.`.`.", "C A C C C C C C C C Z C Z Z Z C Z C D Z Z Z V Z C Z Z C Z Z C D Z Z F A Z C Z F C F Z C C Z Z Z Z Z Z Z Z H Z Z Z Z H H D H H H Z H Z H Z H Z Z Z D Z S D D H Z H F H D Z Z H H Z D D H Z H H H Z H H L L L L J J J L J L L P I J J J I J I J I P P ( P P I P I P I I P P ) P P I ) P ) P I I P P I ) I I I P I I P P I P P P P P P P P P P I P P P P P P I P I I T Z.d.g.l.z.h.l.l.l.g.l.l.l.l.g.k.A.g.g.l.l.l.l.l.A.g.A.z.A.A.A.A.A.A.A.A.A.A.A.A.G.A.S.A.G.H.H.A.H.H.H.H.L.J.H.L.L.L.U.Y.T.T.T.T.T.E././././._.(._.^._.{._._.{.(.(._.(._._.|.}.}.}._._.|._.{.|._.(.(.(./././._.~.~.~.~.T.T.T.T.T.Y.T.Y.U.Y.Y.Y.L.Y.L.L.P.P.F.L.Y.P.H.H.L.H.L.L.D.L.L.L.H.H.S.H.H.H.H.H.S.S.H.S.H.G.D.S.G.G.A.D.A.A.D.D.l.A.D.A.A.A.g.A.g.l.l.Z.k.h.h.A.g.h.A.A.j.h.A.h.l.A.l.S.h.S.h.l.A.z.A.l.l.A.A.A.h.A.l.A.A.l.A.g.l.g.A.h.A.l.h.h.l.g.l.A.h.g.h.g.z.f.f.h.h.g.g.g.g.k.g.h.g.g.g.g.f.j.g.a.g.g.d.f.g.g.a.g.g.f.f.g.f.f.g.f.f.f.f.k.k.z.z.f.f.z.a.g.a.a.z.k.a.a.z.i.i.f.i.a.f.a.g.i.i.f.k.d.k.k.k.k.k.k.z.k.k.k.k.k.k.k.d.g.f.z.f.f.g.f.k.f.k.f.f.k.z.i.k.k.z.d.a.a.a.a.a.a.a.a.a.! / S ZXAXAXAXFXFXFXFXFXAXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXSXGXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXAXDXAXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXDXDXFXFXFXFXFXFXAXFXVXZXZXBXm.{ S S ` T.T.XXU.T.T.T.T.U.U.P.P.U.U.U.L.L.U.U.L.R.K.U.U.Y.U.T.T.T.T.~.T.Y.T.Y.T.I.U.U.L.Y.L.L.L.L.S.D.H.H.H.H.H.L.S.L.S.D.L.L.H.L.H.L.L.L.H.L.L.L.H.H.H.G.H.H.A.S.A.A.A.A.D.l.l.l.G.'.IXIXPXPXPXPXIXPXIXPXPXPXIXGXPXPXIXPXIXPXPXIXPXIXPXPXPXIXPXPXIXPXPXIXPXSXxXU.Z.L.G.L.L.L.L.P.P.L.P.U.U.K.L.U.L.L.L.L.L.U.L.U.P.P.P.T.P.Y.P.P.P.P.P.Y.L.L.L.U.L.L.L.U.K.Y.L.L.L.L.L.L.L.U.S.L.P.L.P.L.P.U.T.T.U.U.U.T.T.T.~.T.~.~.T.T.T.T.T.T.T.~.T.T.T.T.T.T.U.U.U.P.P.P.Y.P.T.P.T.T.T.T.T.P.P.Y.Y.T.T.T.T.T.T.T.T.T.Y.T.T.T.T.T.T.T.~.T.T.T.~.T.(.T.~.T.T.~.!.~.~././.~./.(.(.(.(.|.(.(.(.^._._._.`.(.`.|._.`.(.{.", "C C C C C C D C Z B C Z Z Z Z C Z Z A B F Z C Z Z Z C Z Z C Z Z C Z Z Z C Z F Z Z C F Z Z C B Z F D C D Z Z Z F D Z D D F H G Z D D D D D D Z D Z D Z H D Z D Z Z D Z Z H H D Z Z H S D D H H D K L H H J J L J L L L L P L P J P P P P P P P P P P P P P P P J I P P P P I J P ~ P P P I P I ) J ) J ) I I I I I P P P P P P I P L L P P P P I L I U U P I U P I [ [ j.k.Z.l.l.l.l.l.g.l.g.h.g.D.k.g.Z.g.A.g.A.g.l.A.l.g.A.A.A.A.A.A.A.A.A.h.A.S.S.S.S.S.A.H.H.H.H.H.H.L.H.L.H.H.L.L.L.Y.P.P.T.T.~.T././././.(.(.(.{.(._.{.^.^.[._.|.(.{.|.(.|.`.`.`.`.`._.{.(._.}.{.^.^.(.~.~./.~.^.~.~.~.~.T.~.T.T.T.Y.U.Y.Y.L.U.L.U.L.L.U.U.U.H.L.U.U.S.L.L.L.L.H.L.L.K.K.L.L.H.L.D.L.H.H.H.S.H.S.H.H.S.H.S.H.G.S.A.Z.A.h.A.A.A.h.A.h.A.A.g.A.h.z.Z.g.A.A.h.g.A.A.h.G.h.G.h.A.h.A.h.S.l.h.A.l.A.g.A.z.D.D.g.l.l.A.g.l.l.g.l.l.l.l.l.l.h.h.g.g.g.g.g.z.g.g.g.z.g.a.h.g.z.g.l.k.g.l.k.k.g.d.k.f.f.f.f.f.g.k.k.k.d.k.g.f.g.f.a.k.g.z.g.g.z.f.g.a.g.g.a.j.g.s.j.f.a.s.a.z.a.a.a.a.a.a.a.f.a.k.z.z.g.f.g.z.f.g.g.f.k.g.k.g.g.g.j.k.k.k.h.f.g.j.f.f.g.f.f.k.f.f.k.d.f.i.i.a.a.a.a.a.a.d.a./ / ~ DXZXFXZXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXAXDXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXZXDXZXBXQ.{ ~ ~ [ T.T.T.T.T.T.T.T.I.Y.L.L.U.L.L.I.L.L.D.P.P.P.P.T.P.T.T.T.T.oXY.Y.T.T.T.T.P.L.L.P.L.L.L.S.L.G.D.A.H.H.G.H.L.D.U.L.H.L.L.L.L.L.L.L.L.H.L.H.L.L.H.H.H.H.H.h.A.A.A.A.Z.h.A.A.h.hXPXPXPXPXPXGXPXPXGXPXPXPXGXIXPXGXPXPXGXPXIXGXPXPXGXPXGXPXGXPXGXPXPXGXPXPXGXIXnXY.D.K.L.L.S.L.P.L.P.L.L.L.L.L.L.Y.I.L.U.L.K.P.P.P.P.P.Y.T.T.P.P.P.P.Y.Y.P.U.Y.L.U.P.P.P.Y.P.P.L.L.L.L.L.L.L.P.L.U.L.L.L.U.U.U.U.U.T.T.T.T.T.T.T.T.~.T.~.T.T.T.T.T.T.T.T.Y.Y.T.T.U.T.P.K.P.L.U.L.T.Y.Y.U.Y.Y.T.T.U.T.Y.T.T.~.T.T.T.!.T.Y.T.T.T.U.~.Y.Y.I.Y.~.~.Y.T.~.T.T.T.~.~.T.~.~.^.T.~.[./.(./.(.(.(.(.(.`.`.`.(.`.|._.|.{.|.^.|.[.", "C C C C C C C C C C C Z B D Z Z C Z Z Z C Z Z D C A C Z Z Z A Z Z C C Z C A C C V Z C C F F Z F C Z D C Z Z D Z Z D G Z Z Z H Z D D D Z D D D Z Z Z D D F Z D Z Z H Z H F Z Z Z D D D D H D H D H D L Z H H H L J L L J L P P L P P L P L P P P P P P P J P P I P P P P P J ) P P J ) P ) I I P ) J ) P I I I J P P I I P P I J I P P P P P P L I P L ( P P I I U T d.g.g.l.g.g.l.l.l.l.l.l.l.l.k.l.k.z.g.g.l.l.g.A.g.A.A.A.g.A.A.h.h.A.A.A.S.G.A.S.A.S.A.G.S.S.S.H.H.H.H.H.H.L.L.L.Y.L.U.Y.I.T.T.T.~.~.~.^.(./.(.{._.(.{._.(.(._._.^.{.(.^.|._.{.{.(.`.`.(._._._._._._.(.^.^.(./././.~.~.~.~.R.Y.T.R.Y.Y.U.U.U.L.Y.Y.U.F.L.U.L.U.H.U.L.L.U.K.L.L.L.L.L.S.L.J.L.L.L.H.L.L.H.L.L.H.K.H.L.D.J.H.H.H.H.S.S.K.G.G.G.l.G.A.H.A.h.A.A.g.A.h.h.h.g.h.A.A.h.A.A.z.A.g.A.A.D.h.G.l.A.l.z.A.l.g.g.l.g.g.z.l.l.l.l.l.A.l.l.l.l.h.h.l.l.h.l.g.h.g.g.g.g.f.h.g.z.g.z.z.z.l.l.g.g.k.k.g.g.k.k.k.f.f.f.g.f.g.d.f.f.f.g.z.i.f.f.a.g.i.k.a.g.g.a.z.k.a.g.g.f.f.g.a.f.f.f.a.a.a.a.a.a.f.a.f.a.k.a.a.g.g.a.a.g.f.z.g.g.d.g.g.a.j.f.h.j.k.j.f.g.f.h.g.f.f.f.k.f.f.f.f.d.k.i.a.a.a.d.a.a.a.a./ S S CXZXFXAXDXAXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXZXZXBXpX[ ~ S { T.T.T.T.T.T.U.T.U.I.T.U.U.U.U.I.U.Y.P.P.P.P.P.P.T.T.T.T.T.T.T.!.T.T.T.T.Y.U.L.P.S.L.L.L.S.L.L.L.H.H.H.H.A.U.H.H.H.L.L.U.L.L.L.L.L.L.L.L.L.H.H.H.H.H.H.A.G.A.h.A.A.h.h.z.h.IXPXPXGXPXGXPXPXGXPXIXGXPXPXGXGXPXIXPXPXGXPXGXGXPXIXGXPXGXPXGXIXPXGXPXGXIXAXVXBX].L.D.A.L.L.L.L.L.L.L.L.L.L.L.H.K.L.L.U.U.P.P.U.Y.P.P.T.P.T.P.P.P.P.P.P.P.L.L.L.P.P.P.P.P.L.L.L.L.L.K.L.L.L.L.P.P.L.L.Y.L.U.T.T.T.U.T.I.T.T.T.~.Y.~.T.T.T.~.T.T.T.^.T.~.T.T.T.U.Y.U.P.P.L.Y.U.U.U.L.T.U.U.U.T.I.I.T.T.Y.Y.T.T.T.T.T.T.T.T.T.T.Y.~.Y.~.~.~.T.Y.I.~.~.T.[.~.~.T.~.~.~.~./.~./.^./.(.(.(.(.`.(._.(.`.`.'.|.|.}.}._._.|._.", "C C A C C C C C D C F C C Z B D C Z Z Z Z D C B Z C Z A B Z Z Z C C Z Z C Z Z C Z C Z F C C Z Z Z Z Z F Z D Z F Z D D D Z F D Z D D D Z H D Z D D Z F Z Z D Z F Z Z H F Z D H H Z F Z H F D K D H D H H H L H L L H L L J J L P L P L P P S ( P P J P P U L P P P P P P I ) P P P I P ) P ) P P I I ) P I P I I I P P P I P J I P P P P P P I L P P P P P U I P Y [ Z.g.A.g.l.A.g.l.l.l.h.l.g.h.l.k.l.l.g.A.g.g.l.l.l.l.g.A.A.A.A.A.A.S.A.A.H.S.G.Z.A.G.S.H.S.S.H.H.H.H.H.H.L.L.L.L.L.L.U.Y.Y.T.T.~.~.T.E.^.^.(.(.(.~.(.(.(._._.{.|._._.(._.`.|._._.(.|._.`.(.`.(._._.(.(.(.^./.(.^.T./.~.~.~.~./.T.Y.U.T.Y.Y.P.Y.U.L.U.H.L.L.U.L.L.L.L.L.L.U.Y.L.I.L.L.L.H.L.L.L.L.L.L.H.P.H.L.L.H.S.H.H.J.J.S.H.G.G.A.G.z.Z.G.A.G.A.h.A.h.A.j.A.h.h.g.h.A.g.h.h.A.g.A.A.G.A.G.h.S.A.h.A.h.h.A.A.g.g.A.A.g.Z.A.g.l.A.l.A.g.l.l.l.h.h.h.h.g.z.g.g.z.z.g.g.g.f.g.k.h.h.k.D.d.g.z.g.k.k.k.k.d.g.g.g.f.k.k.f.f.k.k.a.k.f.d.k.i.g.k.a.d.i.i.g.i.a.f.g.g.z.f.i.f.i.a.f.a.f.a.a.a.z.a.a.z.a.a.a.a.f.f.k.g.g.g.h.h.g.k.g.g.k.g.g.g.g.a.f.j.f.k.k.f.h.f.z.f.f.k.f.k.f.k.i.k.d.a.a.i.a.a.a.a.f.a./ ! S ZXZXFXSXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXAXZXZXBXm.} ~ ~ [ T.T.T.T.T.T.T.Y.T.T.U.T.T.L.U.U.U.P.P.P.P.T.U.T.P.T.T.T.T.T.!.Y.T.T.T.T.P.P.L.P.L.L.L.L.L.L.S.L.S.H.L.H.L.S.U.S.L.L.L.S.L.L.A.P.L.H.L.H.L.L.S.H.H.Z.S.A.G.A.h.A.A.A.A.A.x.PXGXPXPXGXIXPXGXGXIXIXIXIXGXIXIXGXAXPXGXIXGXPXIXIXIXPXIXPXPXIXGXIXIXIXIXIXAXBXhXpXL.D.S.L.L.L.L.L.Y.L.Y.U.U.U.P.I.L.L.P.P.P.P.P.P.U.T.T.U.P.T.P.P.P.T.U.P.U.Y.L.Y.U.L.U.U.U.L.L.L.L.L.L.L.L.L.L.P.L.L.U.U.U.L.U.U.P.Y.I.T.T.T.P.Y.T.T.T.T.T.~./.T.T.T.Y.T.P.T.Y.P.U.L.P.P.L.U.U.U.L.T.P.P.L.Y.I.I.U.T.T.T.T.T.T.T.Y.T.T.T.T.T.T.~.~.U.Y.~.Y.~.~.T.T.~.T.T.~.T.~.~.T.~.~././././.(.(.(.`._._._._._.(. X_.|._.|.|.|.|.|.", "F A C C B Z C C C C C Z Z C Z C Z D B Z Z Z Z Z Z Z C Z Z A Z Z Z C Z A C C Z F C Z C Z Z Z C Z C C C Z B Z Z D Z F Z Z H D Z Z Z D D D Z Z D C D Z Z Z D Z D Z D Z D Z H Z Z Z D Z H Z D D Z H Z H H Z Z H H H D L L J L J P L P L L P P L U P P P P L P P P P P P P P J J ( P I P P ) P P ) P ) J P P ) J I I P I I P P P U P P P P P L P P I P P P P P P U I T d.d.A.g.l.l.l.l.A.l.l.l.l.z.l.l.l.l.l.g.A.A.l.l.A.A.l.A.l.A.A.h.A.A.A.A.A.A.A.A.S.G.G.S.H.S.H.H.H.H.H.L.H.H.L.L.L.L.U.U.Y.T.T.T.T.~.~./.^.E.^.(.(.(._._.^.{._._._._.{.{.`.(.^.|._.`.(.(._._._.(._.{.^.(.(.~.(.(.!././.~.~.T.T.R.U.T.R.Y.P.P.U.T.U.U.L.Y.L.Y.L.Y.L.L.U.U.L.L.L.U.L.L.L.L.L.L.L.P.H.H.L.P.L.L.L.L.L.L.L.H.L.H.L.S.S.H.G.H.G.G.A.G.A.A.A.A.A.A.A.g.Z.g.Z.h.A.Z.A.h.A.H.A.g.G.S.h.h.A.h.Z.A.A.Z.A.A.l.A.D.g.l.l.l.g.l.l.l.l.l.l.l.Z.z.h.h.h.z.k.g.f.g.g.f.g.g.g.f.k.z.h.h.l.z.l.l.A.k.l.k.g.g.g.g.f.k.f.f.f.f.f.g.g.g.k.i.i.g.i.i.a.f.g.g.g.g.i.g.a.g.i.a.f.s.g.a.f.f.s.f.a.a.a.a.a.a.a.f.f.f.f.f.k.k.a.k.g.a.z.k.f.g.k.z.g.g.g.g.k.k.h.k.h.h.k.h.f.g.k.f.k.d.f.d.k.a.a.a.a.a.i.a.a.a.i.a.S ! ! CXZXDXDXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXZXZXCXm.[ ~ ! c.T.T.T.T.T.T.T.T.T.U.T.U.T.U.I.U.U.P.T.P.P.P.U.T.P.T.P.T.T.T.oXT.T.T.T.Y.Y.P.L.L.L.L.S.L.L.S.L.S.L.L.H.L.L.S.L.L.S.U.L.L.L.P.L.L.L.L.L.L.L.H.K.A.H.H.S.H.A.H.A.A.A.h.h.h.G.GXGXIXIXGXSXFXVXIXVXFXFXGXSXIXGXGXFXGXIXSXSXGXAXVXVXGXAXAXSXGXVXVXAXGXFXVXBXhXM.M.F.L.U.L.L.L.L.L.U.L.U.L.L.L.Y.L.T.U.Y.P.Y.P.U.T.U.U.U.T.P.P.T.Y.T.P.Y.L.U.U.U.L.L.U.U.L.Y.L.L.I.L.L.L.L.U.P.L.P.L.U.U.L.U.U.U.T.P.T.T.I.T.T.T.T.T.T.~.T.T.T./.T.~.T.~.T.T.T.T.P.T.L.P.P.Y.U.L.L.L.L.L.U.U.U.U.U.I.T.Y.~.T.~.T.~.~.T.~.~.!.T.T.U.Y.~.~.I.~.I.I.Y.~.~.~.T.T.~.T.~.~.T.~.!./././.(.(._.(._._._.|._._.`.|. X_._.|._.|._.", "C C C C F C C C Z C C Z C C Z Z C Z Z C C Z Z C Z C B D C F Z C Z C Z Z Z C Z C Z C A C C F Z C F C Z Z C Z Z F D C F Z F H Z Z Z Z D Z D D D Z Z D Z F Z Z Z Z H Z Z Z C Z Z D F Z H H Z Z D H F H H D H H H H H H L L L L L J P L L P P L P L L P J P P P J P P P P P J I J P I J ( P I P I I J I ) J J I J I P J I P I P L P P P P P L I P P P I I P P I P U [ T A.A.l.l.l.l.l.l.A.g.l.l.l.h.l.l.g.l.l.A.l.l.h.A.A.h.A.A.A.A.A.A.A.h.A.S.A.S.G.A.Z.J.A.H.H.H.S.H.H.H.H.L.H.L.L.L.L.L.I.Y.T.T.T.T.T.~./././.~.(./.(.(.~._.(.^.(._._.`._._._._.`._.^.`.`.(.`.(.{.(.(.(.(.(.(.~././.~.!.!.T.~.~.T.R.P.Y.P.P.P.Y.P.Y.L.Y.F.P.U.P.P.L.U.L.H.L.L.L.L.U.L.U.L.L.L.L.P.D.L.L.L.L.L.L.L.L.L.L.L.H.S.S.K.H.S.G.A.S.H.H.A.h.A.A.A.A.j.A.g.A.g.A.g.A.A.A.h.A.h.S.h.A.A.A.A.A.A.A.l.A.l.l.g.Z.A.g.g.g.l.g.l.l.g.g.l.A.l.l.l.l.g.h.k.f.h.f.g.k.g.g.g.k.z.k.z.h.k.h.h.h.h.l.k.h.h.z.g.g.d.z.k.k.k.g.k.d.k.z.i.g.k.k.i.d.a.k.a.a.a.z.a.i.g.i.a.a.g.a.a.k.a.a.a.g.f.a.f.a.a.a.a.a.a.a.f.f.f.f.k.k.g.g.d.g.g.z.g.f.g.g.g.g.g.g.g.k.k.k.h.h.z.a.g.f.f.k.k.f.i.k.i.a.a.a.a.a.a.a.a.a.a.a./ / S ZXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXDXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXDXDXAXDXFXFXFXFXFXFXAXFXDXDXGXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXZXFXZXAXFXFXBXm.[ ! ^ [ T.T.T.T.T.T.T.T.T.T.T.U.T.U.I.I.T.Y.U.U.T.U.U.U.T.T.P.T.T.T.T.T.T.T.T.T.P.P.P.P.L.L.L.S.L.H.L.L.L.L.L.S.L.L.L.L.L.D.U.G.L.L.L.S.L.L.L.L.S.L.U.H.H.H.S.S.A.H.H.A.h.A.A.k.x.GXIXGXIXFXFXAXAXFXDXZXFXFXDXAXDXFXAXFXAXDXZXAXAXDXDXDXFXFXFXFXFXFXFXFXAXBXgXm.M.n L.H.S.L.L.P.L.L.U.L.P.P.Y.Y.P.P.U.U.P.Y.L.P.Y.T.U.T.T.T.P.U.T.T.T.U.T.T.P.L.U.U.U.L.L.L.L.L.R.K.L.I.P.P.L.P.L.Y.L.U.L.L.U.U.U.U.U.P.U.T.T.T.T.T.T.T.U.~.I.T.T.~.T.~.T.T.T.Y.T.P.P.Y.Y.U.U.L.R.L.L.L.L.Y.U.U.U.U.T.Y.T.~.T.T.T.T.~.T.T.T.T.T.~.~.U.T.T.T.T.T.~.T.T.T.T.~.T.T.T.~.T.~.~.~././.(.(.^.(.(.^.|.[._.}.}.}.`.`._.`.|.|.|.|.", "C C C B C C C C B C C C Z C C B Z A D Z Z Z Z Z Z C Z Z C Z A C C Z C A Z Z C Z Z Z D F D Z A Z Z D Z C F Z A C Z F Z Z Z Z Z Z F Z D Z Z Z Z Z D D Z C D Z Z Z D A D Z H Z A Z Z F Z Z H F H Z D H H F D H H Z H H H H H L J L L L L S L L L P J L J J P L J P P P P P P P ) P J ) P P J ) P P J ) I J I P I I I I P P I P I J P L L P L I P L L L I L P L P U T Z.g.l.g.A.l.l.z.l.g.A.l.l.Z.h.l.l.l.l.g.l.l.g.A.h.h.A.g.A.A.g.A.A.A.S.S.S.G.A.A.H.G.S.S.H.S.H.L.H.S.L.H.L.L.L.L.L.L.L.U.Y.T.R.T.~.~.T.~././.~.(.(.(.(.^.~._.{./.^.^.|.{._.(.^._.(.{.(.(.(.(.(.(.(.(./.(.~.(.(.~.~.~.T.T.~.T.T.T.R.Y.P.Y.T.U.P.Y.L.Y.Y.U.U.U.L.L.L.L.L.Y.L.L.L.P.J.Y.L.L.L.L.L.P.P.P.L.L.U.L.L.L.L.L.H.Y.S.L.L.G.H.A.G.H.h.A.A.A.A.A.A.A.A.A.h.S.j.Z.g.A.A.h.g.A.A.A.A.G.A.A.A.A.h.G.z.h.A.h.A.A.g.g.A.D.l.l.l.l.l.A.l.l.g.h.h.l.k.l.f.k.g.f.f.k.k.f.k.g.k.k.k.g.h.h.z.h.k.g.z.h.h.h.h.g.g.g.g.k.k.g.k.k.z.i.a.z.i.i.k.i.k.f.i.a.a.a.i.i.z.i.g.z.a.a.z.f.a.z.f.a.d.a.f.a.f.a.k.k.a.f.f.a.z.f.f.g.k.k.k.g.z.a.f.f.f.f.g.d.g.g.g.g.h.h.h.k.h.l.z.g.k.f.f.i.a.g.d.k.a.a.i.a.i.a.a.a.a.a.a.P / ! BXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXAXAXDXDXFXFXFXFXFXFXDXFXDXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXCXm.} / S [ U.Y.T.Y.T.T.T.T.Y.T.T.T.U.T.U.T.U.Y.Y.U.T.P.T.T.T.T.P.T.T.T.T.T.Y.T.T.P.Y.P.P.P.U.L.L.U.H.L.L.L.L.L.L.L.S.L.S.L.L.L.L.L.L.L.L.U.L.S.H.L.U.L.H.H.H.H.A.H.A.A.A.A.A.A.A.z.g.IXGXIXGXFXAXDXAXFXFXAXFXAXDXDXSXFXAXAXFXDXZXSXFXFXAXAXAXAXVXFXVXFXAXFXAXBXhXm.v.c S.L.L.L.L.S.S.L.L.P.P.L.L.L.P.P.P.U.U.Y.U.T.T.T.T.T.U.P.P.T.P.T.T.T.P.T.T.T.L.L.U.L.U.L.L.L.L.U.L.Y.P.P.U.U.L.L.L.Y.P.P.U.L.U.U.T.L.T.U.T.T.T.T.T.T.~.I.~.~.T.~.~.T.T.Y.T.T.T.L.P.P.U.U.L.Y.L.L.L.Y.Y.L.U.L.U.Y.L.Y.Y.T.T.T.~.T.P.T.T.T.P.Y.T.Y.Y.~.~.T.T.T.Y.T.T.T.T.T.T.~.T.T.~.~.~.~.~./././.(.`.(.}._.}._.|.}. X`.`.|.|.|.|.|.|.", "Z C C C C C C B C B C C C F F C Z Z V Z Z Z Z C Z C Z C Z C Z Z Z A Z Z Z A A C C Z Z C Z C Z C C Z C Z Z C Z Z Z Z Z Z Z Z F D Z Z D C F Z D Z D D Z Z Z Z Z Z Z Z H C F Z H Z Z Z Z Z D Z F H Z D D H H D H K H H H H L L H H L L P S P L P L J J P J L J P L P J J J J I I P I I J ) I J I P I J ) J P I J I J I P P P P L P L P P P L P J U P P L L L P I ) [ d.g.A.g.g.g.A.A.l.l.A.l.l.g.Z.l.A.g.l.A.l.l.A.l.h.Z.h.A.A.A.A.A.A.A.Z.A.S.S.S.H.G.S.S.H.H.H.H.S.H.L.H.L.H.H.L.L.U.U.T.U.T.Y.T.Y.R.T././.E.~.^././.(.~.(.(.(.(._.^.{._._._.(.`._._.^.(.(./.(.(.(.(././././.^.~.~././.~.~.T.T.T.T.Y.U.U.Y.U.U.Y.L.L.L.L.L.Y.P.L.L.L.Y.P.L.P.L.L.L.L.L.U.L.L.L.L.L.L.L.L.L.L.D.L.H.L.L.L.L.S.H.S.H.S.S.S.A.J.A.A.G.G.A.A.A.j.A.j.g.A.j.h.A.g.A.h.A.h.h.A.A.A.l.A.A.h.g.z.h.l.Z.h.h.g.h.h.z.k.k.A.g.g.l.l.g.l.l.h.l.l.h.h.h.g.z.k.f.f.f.f.f.k.f.k.z.a.l.g.h.l.l.h.h.h.h.h.g.h.g.g.k.k.k.f.f.i.k.a.i.k.i.f.k.a.a.k.z.f.z.i.i.z.a.a.a.g.a.i.a.x.k.a.g.a.g.f.f.f.a.a.a.f.f.f.f.f.f.x.k.g.k.k.k.k.d.g.f.f.g.g.g.g.g.g.g.h.h.h.h.h.z.h.g.f.f.f.k.f.k.k.i.a.a.a.i.a.i.a.a.a.i.i./ ! ! ZXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXAXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXDXGXFXFXFXFXFXFXFXFXFXFXDXDXGXSXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXDXAXSXDXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXGXSXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXZXDXBXQ.[ / ~ c.T.T.Y.T.T.T.T.T.Y.T.T.T.T.T.I.I.U.T.I.U.T.T.T.P.T.T.T.P.P.T.T.P.T.T.P.T.Y.P.L.L.P.P.L.L.L.G.L.L.S.L.L.S.U.S.L.L.L.L.L.U.U.U.L.U.L.L.L.L.L.S.H.H.H.A.H.S.G.G.A.A.G.g.k.l.x.PXIXGXGXGXFXZXAXAXZXFXFXSXDXSXDXZXZXDXFXFXDXAXDXDXZXSXAXAXFXAXVXFXAXAXFXBXaXM.8.c S.L.D.H.S.P.L.L.S.P.L.P.P.P.P.P.T.U.Y.T.T.T.U.T.Y.T.Y.T.T.T.T.T.T.T.T.Y.T.P.U.Y.L.T.L.L.L.L.L.U.L.U.U.U.U.L.L.L.U.L.L.L.U.L.H.U.P.P.U.U.U.T.T.I.I.T.~.I.I.~.T.~.~.T.~.T.T.Y.T.U.U.L.U.U.P.L.L.L.L.L.L.L.L.Y.U.T.T.T.T.T.T.T.T.T.^.T.T.T.T.~.T.~.Y.Y.Y.T.T.T.T.T.T.T.~.T.~.T.~.T.~.T.~.~./././.(./.(.|._.|.}.}.|.}.|.`.`.|._.|.@X|.|.", "C C C Z C C C u C C C C C C A C C Z F Z Z C Z Z C Z Z A A Z C Z Z F C Z C Z Z D C F C C D Z D C Z F F Z C Z F Z Z A Z A Z D Z Z D F Z Z Z Z Z C Z C G Z Z Z Z Z Z D Z Z Z Z Z Z H Z F H Z F Z A D D D D Z H D H Z H H H H L H J L L L L L L S P L L L L J L J P J P J P P P P J P P P J J I P P J I I I I P I J I I P P U I L P P L P L L P L P P P P P P L U T T j.Z.g.A.g.Z.g.l.g.A.g.l.l.g.g.Z.g.A.g.g.A.A.l.h.A.l.A.l.l.A.A.h.G.A.A.S.A.A.H.S.S.S.S.H.S.H.S.S.L.D.H.L.H.L.L.L.L.U.U.Y.I.T.Y.Y./.T.~.Y.T.~.~.(./.^.^.(.(.^.(.^.(.(.^._.{.`.^._.{.^.(.`.^.(.~.(.(.~././.!.~.^.~.~.~.T.T.T.T.T.U.U.U.Y.U.Y.U.L.K.Y.Y.L.U.L.H.Y.U.L.L.L.P.Y.Y.L.H.U.H.L.L.L.L.L.L.L.L.L.L.L.U.L.L.L.L.L.L.L.H.L.S.S.S.S.G.A.H.A.A.j.A.A.S.A.h.A.A.A.h.A.g.A.A.A.A.A.A.A.g.h.G.A.A.A.A.A.A.h.z.A.g.A.h.z.A.d.k.z.A.g.g.g.h.h.g.z.z.l.h.z.k.f.k.k.f.f.k.f.k.k.f.k.h.z.l.z.z.h.l.z.l.l.h.h.h.h.g.g.k.k.k.f.f.k.a.a.f.i.f.i.i.z.a.a.i.i.i.i.g.a.i.g.a.a.a.f.a.a.a.f.a.g.f.a.a.a.z.a.f.a.a.a.f.f.i.z.k.g.k.k.k.g.h.a.j.i.j.f.g.g.g.g.h.g.h.h.f.h.h.h.g.k.z.f.f.d.i.k.a.a.a.a.a.a.a.a.a.a.f.i.S / S CXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXDXFXFXFXFXFXFXAXDXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXDXAXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXZXFXDXZXZXZXBXpX{ ! ~ [ Y.U.T.T.T.T.T.T.T.~.T.T.T.T.T.T.T.U.T.T.T.P.T.T.T.T.T.T.Y.T.P.T.P.Y.Y.P.P.U.Y.U.U.P.U.A.L.L.L.G.S.L.L.L.L.L.L.L.L.L.D.P.U.S.P.P.L.L.L.S.L.U.D.H.H.H.S.A.A.A.A.A.h.A.z.z.a.GXIXGXGXGXFXFXFXFXAXAXDXDXDXZXDXAXZXZXAXAXAXDXAXZXZXDXHXFXFXFXFXFXFXFXGXMXaXM.{ n S.S.S.H.U.S.L.S.L.P.P.L.U.P.T.Y.T.P.Y.T.Y.T.T.T.T.T.U.T.U.T.T.T.T.T.T.T.P.T.Y.L.L.T.L.U.L.Y.L.U.L.I.L.U.L.U.P.L.U.L.L.L.U.Y.P.P.P.P.U.I.U.I.I.T.T.Y.Y.Y.~.I.T.T.~.~.~.T.T.Y.Y.Y.U.Y.L.U.Y.L.L.L.U.U.U.L.U.L.U.U.T.T.!.T.T.T.T.~.P.T.~.Y.T.~.~.Y.I.~.T.T.T.I.T.T.T.T.T.T.T.T.T.~.~.Y.~.!./.^.(.(./.(._.(._.}.}.}.}.}.`.|.|.|.'.|.|.|.", "D C F B C C C C C C C C Z D C Z C Z C Z B D F C Z D F B Z C Z C C Z Z C Z Z A Z C Z Z C C C Z A Z Z Z F C Z Z Z F C Z Z F F Z Z Z Z Z Z Z Z Z Z Z Z F Z Z F Z Z Z Z Z Z Z Z Z Z Z F D Z Z Z F K F Z H D L Z Z D H H Z L L L H H H L L L L L L L L L J L L J L L J L J P P P P J P P P P P P P I J ) I I J I J I J P P P P P L P L P P P L P P L L P P L P L U T Z.j.A.g.Z.l.Z.h.l.A.Z.A.g.l.A.A.A.A.A.g.A.l.l.A.A.h.A.A.A.A.A.A.A.A.S.A.G.Z.H.A.S.A.S.S.H.Z.H.H.H.S.L.H.L.H.L.L.L.Y.L.L.P.Y.T.T.Y.R.T.T.~.~.~.!.!./.T.(.(./.E.(.(.^.(.`.{._.`.~._.(./.^.^.(.(.^.(.(.(././.~.~.~.~.~.T.~.~.T.T.T.P.Y.Y.P.U.Y.P.P.P.P.L.L.L.L.Y.L.L.U.L.Y.D.U.L.L.L.L.L.L.H.K.H.L.L.F.L.Y.D.L.Z.Y.L.S.L.H.S.H.S.S.L.S.S.A.Z.A.G.A.A.A.A.A.A.h.h.A.g.A.h.A.A.h.h.A.h.A.A.h.A.A.A.h.k.S.h.H.z.h.h.g.z.D.k.l.k.l.A.k.g.g.k.g.d.D.g.g.g.z.h.k.k.f.f.f.f.k.f.i.z.k.g.g.k.h.k.h.k.l.h.h.h.A.h.h.h.k.g.g.g.k.d.k.i.z.i.k.k.a.k.a.k.a.k.a.i.a.i.a.a.a.a.z.a.a.k.a.a.g.f.f.g.f.g.i.a.g.a.k.f.z.a.f.f.a.g.k.h.k.k.k.z.a.g.f.f.f.f.f.g.j.g.l.g.h.l.z.h.f.h.h.k.k.g.d.a.i.f.i.a.a.i.a.i.i.i.k.a.i.i.f./ / S CXSXDXDXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXDXAXFXFXFXFXFXFXFXFXFXDXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXZXZXBXm.} ! ! [ T.U.T.T.T.T.Y.T.~.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.P.Y.Y.T.P.T.T.P.T.Y.T.P.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.P.L.L.L.L.S.U.F.L.L.Z.L.H.G.G.S.H.A.h.A.h.A.g.h.z.IXGXGXGXGXDXDXFXAXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHXBXJXM.{ x Z.G.L.H.U.S.H.L.H.U.U.P.P.P.P.U.U.T.T.Y.T.T.L.U.R.U.U.T.U.T.T.T.U.~.T.T.U.T.Y.Y.Y.H.U.T.L.L.U.U.U.U.T.U.T.U.G.U.[.L.U.U.L.U.Y.U.P.P.U.U.I.I.T.T.L.T.U.T.U.P.T.T.T.~.[.P.T.T.~.U.U.T.L.Y.H.I.I.L.U.L.L.Y.T.L.T.~.U.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.Y.T.Y.Y.T.T.T.T.~.T.T.T.~.T.~.~.E././././.(.(.|.(.(.|._.}.}.}.}.}.}. X X|..X.X.X", "C C C C C C C C A C C Z C B C Z C Z Z Z C Z Z C C C A Z B Z C Z Z A C Z C Z D C Z Z A Z Z Z Z Z Z A Z A Z F C D Z Z F Z C Z C Z C D F C Z Z C G C Z C Z Z F A Z S C Z A Z Z Z F Z A Z F Z D Z Z H Z A Z Z Z K H H Z H H H H H H H H L S L L L L L P H J L L J J J P L P P P J P P P P P P P P I I J J I I I I J P P J I L P I P P P L P P L L P P U L P P P [ T [ j.g.g.g.g.l.l.l.l.h.h.l.A.l.l.g.g.A.g.A.l.l.A.A.A.l.A.Z.A.A.A.A.A.A.H.A.G.A.S.S.H.S.H.H.L.H.H.L.H.H.L.H.L.H.L.L.L.L.Y.U.Y.T.T.~.T.T.~.R.~.~.T.)./././.(.(.{.(.(.(.(.(.^.(.~.`.^.(.~.~.(.~.(.~.^./.T./.~./.~.~.~.T.T.~.P.T.Y.Y.P.L.P.Y.P.P.L.L.P.L.P.L.L.P.L.P.L.U.L.U.L.U.L.L.Y.L.L.L.L.L.L.L.L.D.L.L.L.L.D.P.U.H.K.H.U.H.L.S.H.S.S.S.F.A.A.A.A.A.A.h.A.A.A.j.h.A.A.h.A.A.G.h.A.A.A.A.l.A.A.A.h.z.h.z.h.z.h.h.l.l.g.z.g.k.k.k.g.g.g.g.k.g.z.k.k.z.z.k.g.g.f.f.f.f.f.k.g.g.g.g.k.k.l.k.l.h.h.h.h.h.l.l.h.h.g.g.k.g.f.f.k.i.a.a.i.a.a.i.a.i.a.a.a.a.z.a.a.a.a.a.a.a.a.a.f.i.f.f.f.g.a.f.g.a.k.i.a.z.i.f.f.z.f.k.k.k.h.f.f.f.f.f.f.f.f.g.g.g.h.f.j.g.h.h.h.h.h.h.k.k.a.g.g.z.k.i.a.a.a.i.i.i.i.i.a.a.i.i.S ! / ZXZXZXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXGXAXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXZXZXBXm.[ ! ! M.T.Y.P.T.T.Y.P.[.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.P.Y.P.P.P.P.P.P.P.U.U.L.L.L.L.L.L.L.L.L.L.L.L.L.L.U.L.P.L.H.U.U.L.L.L.L.L.L.A.L.L.H.H.S.S.S.S.S.A.G.h.G.l.G.GXGXGXGXGXDXAXAXAXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXMXaXM.' c G.H.S.H.H.H.H.L.L.S.L.P.L.L.U.U.P.P.P.T.T.T.R.].!.!.T.].K.T.U.T.Y.Y.!.T.I.I.U.U.L.T.P.S.U.T.U.U.U.U.Y.S.Y.L.U.T.F.U.F.L.U.H.Y.U.P.A.L.U.I.Y.L.I.U.U.P.].T.].T.[.T.~.~.Y.~.T.U.T.P.U.L.L.I.K.K.I.L.L.H.K.Y.U.Y.L.U.P.T.T.T.T.T.T.T.T.T.T.T.P.T.T.P.P.T.Y.Y.U.T.Y.T.T.T.T.T.~.T.~.~.~.~././.(.(.^.{.(._._.{._.}.}.}.|.}.}.|. X|. X.X|.", "Z C Z C C A Z V C F C C B Z C C A Z Z C Z Z C Z Z Z C Z D C Z C Z A Z C Z C Z D Z Z Z Z Z Z Z C Z C C Z Z Z Z A C Z Z A Z C Z F C C Z F C Z Z C Z Z Z A Z Z Z Z A Z Z Z Z A F A F Z Z Z D Z A D Z D D Z Z H Z J Z H S H Z H H H H H H L L L L L L L L H P J J J L P J P J J P P P P P P ) J P J P I P P I J P P Y P P P P P L L P P I L L P P J L P P L L L T [ d.j.Z.Z.g.g.l.A.A.l.A.l.l.l.Z.g.A.A.A.A.A.A.A.g.A.A.A.A.A.A.A.A.A.A.A.A.H.H.H.S.H.S.H.H.H.H.H.H.L.S.L.S.K.H.H.L.L.L.U.U.U.Y.Y.T.R.Y.T.T.~.T.T.~.!.~.~.(.^.(.^.~.(.(.(.(.(.~.(.~.(./.`.[./.^.~.(./.(././.^.~.~.~.T.T.~.Y.T.Y.T.Y.P.Y.P.L.P.Y.P.P.Y.P.L.Y.L.P.L.L.U.U.L.U.L.L.L.L.U.S.Y.H.H.L.H.H.P.L.L.L.F.L.P.L.S.L.K.H.S.L.S.H.S.S.S.S.A.H.A.A.h.A.j.A.h.h.W.A.A.h.A.A.h.A.h.A.h.A.A.A.l.A.A.A.A.h.l.l.l.h.h.g.z.k.k.Z.A.A.d.z.z.g.g.z.g.l.h.D.h.k.k.k.f.k.k.f.f.f.f.f.k.k.g.g.h.k.h.h.k.g.h.h.h.h.h.h.h.k.g.g.f.k.f.f.i.z.a.a.i.i.a.k.a.a.a.a.a.f.i.i.a.a.a.a.a.g.a.a.f.a.a.f.f.a.f.f.a.g.k.f.i.f.k.k.a.g.g.f.k.k.z.f.a.g.k.k.f.l.k.g.g.g.g.h.h.h.h.h.g.k.f.g.k.z.k.k.a.f.i.f.a.a.a.a.i.a.i.i.a.i.k.i./ ! S ZXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXGXFXFXFXFXAXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXAXFXDXAXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXDXFXFXDXDXGXSXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXAXZXDXHXQ.{ ! ! c.T.T.T.T.T.T.Y.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.P.Y.T.P.Y.P.Y.P.P.T.Y.P.P.U.L.L.L.L.L.L.L.L.S.L.L.K.L.L.L.L.P.L.P.L.L.L.L.L.L.L.S.L.L.D.L.H.H.H.S.G.S.A.Z.A.A.A.g.z.IXFXPXGXGXDXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXCXaXM.n c G.G.S.S.H.L.H.H.S.L.P.U.P.L.L.U.U.U.P.T.P.T.Y.H q = = q I ~.(.].U q : * > J !.!.Z ; : ; : y : : : : y !.L.Z = > t q t : y G b.Y.L.T.L.` y 0 y ` U.I.Z y = q b.T.T.T.n.q : y Z F.P.L y > y y U K.G.L.P 0 y 0 ; Z ].[.T.Y.T.T.T.T.T.T.T.T.oXP.T.T.T.T.U.U.T.Y.Y.T.T.T.T.Y.Y.T.~.T.[.~.!.[.[.(.(.(.(.(.(._._.}.}.}.}._. X}.|.|.|..X|..X", "C Z C F C C C C C C C C C C Z C Z C Z D C Z Z C Z C Z Z C Z D B C Z C Z C D C B Z D C Z Z C Z D Z Z Z Z Z Z C Z C A F C Z Z Z C F C u C F C u F Z A Z Z C Z C Z F Z Z Z Z Z Z Z Z Z A Z Z F Z Z H Z Z Z Z H Z H H Z Z H H H H H H H H L L H H H L H L L J L J H P L P L P P P J P P P P J P I P P P P P L I J P L L I L J P P P L L L U P P L L L P L L ( U U T g.Z.g.g.l.Z.g.A.g.g.Z.A.l.A.A.A.g.Z.A.A.A.g.A.l.l.l.l.A.A.A.A.A.S.A.S.S.S.A.A.H.H.S.A.H.H.H.H.H.S.L.S.L.L.H.L.L.L.L.U.L.U.Y.Y.T.Y.R.R.Y.!.~.~.^.T.T.!.T.(.^.(.~.(.(./.(.(.(.(.^.^.^.(.(.~.E.^.E./.T./.R.~.T.~.E.T.~.T.Y.T.Y.U.I.U.P.U.L.L.L.P.L.H.P.P.L.L.L.L.P.H.L.K.U.L.L.Y.L.L.L.S.L.L.S.L.H.S.S.S.H.D.H.S.D.H.H.H.H.S.H.S.H.H.S.S.S.S.A.A.A.A.A.A.A.A.h.j.G.Z.h.h.h.h.A.h.Z.A.A.A.z.A.h.z.h.h.h.l.l.h.h.h.h.k.A.z.k.k.g.z.k.z.g.g.g.g.z.l.g.k.l.l.k.g.k.f.f.f.f.f.f.g.f.f.g.g.k.z.d.z.l.g.z.l.l.l.l.z.g.g.f.f.f.f.d.k.z.a.a.a.a.a.a.a.a.a.a.z.i.i.f.i.a.a.a.a.a.a.a.a.z.k.f.g.a.f.g.a.g.k.a.g.f.g.a.f.f.j.h.k.k.j.f.z.a.k.k.a.z.k.k.g.f.h.k.h.k.a.l.g.g.g.g.k.k.k.a.f.i.k.i.k.a.a.a.i.i.k.i.a.i.k.i.S / / CXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXDXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXDXAXDXAXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXCXBXpX[ / ! [ T.U.T.P.T.T.P.!.T.~.T.T.T.~.T.~.T.T./.T.~.T.T.T.T.T.T.T.T.T.Y.T.P.P.P.T.T.Y.P.P.Y.U.Y.L.L.L.K.L.U.U.L.L.L.L.L.L.P.P.P.L.U.U.L.L.L.P.L.L.L.D.L.S.H.H.H.H.G.S.S.A.g.H.h.h.x.GXIXGXGXFXDXFXAXAXAXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXBXaXM.{ c G.G.S.S.H.G.H.H.L.L.L.A.L.L.U.L.P.U.T.P.U.T.E.Z ; e : 0 A L.T.K.A : 0 e > Z T.T.A e 0 q 0 * y r y * : T.U.Z r r : * 0 0 q 0 q U F.T.L.T 0 ; = [ T.I.S e 0 q n.U.T.[.b.= : y A !.^.Z y = : : u K.U.L.u 0 = r : Z U.L.Y.P.U.T.T.T.T.T.T.T.D.hXT.T.T.T.T.T.T.Y.U.T.Y.U.T.Y.T.T.Y.~.!.~.~.~././.(.^.(.[._._.^.}.}.}.}.|.|.}.}.}.|.|..X.X", "Z D C C Z C Z C C C C C C C Z Z Z C Z B Z C A C C Z C Z D Z B Z Z Z Z Z Z B C F B D F D Z C Z Z Z F Z Z Z Z C C C Z Z A C C F A Z C F Z F Z F Z Z C C Z Z A C C Z Z A Z Z F F Z Z Z Z Z Z Z Z F Z A D D D Z D Z H Z H Z H Z L Z H H H L H H L H H H J H L L L J P L L J J J P P P P P P P P K Y P J I P I P P P P L P P P J P P I L P P P P L P J P P L L U T e.d.Z.g.Z.Z.l.A.Z.Z.h.l.l.A.l.Z.l.A.A.A.l.A.A.l.A.A.A.A.Z.A.A.A.A.A.A.S.S.S.H.A.S.S.W.H.H.H.S.H.H.H.L.L.S.H.L.H.L.L.H.Y.L.Y.U.U.P.Y.R.T.T.T.~.T.~.E.!.T./.~.~././.(.!.(.(./././.(.^./.~./.^.~.(.~./.T.T.~.T.~.T.T.T.Y.T.U.U.T.Y.Y.U.L.L.L.U.U.U.P.U.P.L.U.U.Y.U.L.U.U.Y.H.L.U.L.L.S.L.S.Y.L.H.H.S.D.L.H.H.H.H.H.H.L.S.H.H.G.S.S.S.S.S.S.S.S.A.A.z.A.A.A.A.A.h.h.j.h.A.h.A.G.A.A.A.A.z.A.A.A.z.l.h.h.h.l.h.h.h.h.h.l.k.l.k.l.k.k.k.l.l.k.g.g.h.z.g.g.g.g.f.f.g.d.k.f.f.f.f.f.f.g.g.g.g.g.g.A.d.l.k.h.l.h.h.k.k.g.g.f.f.k.i.d.z.a.a.k.a.a.a.a.a.a.a.k.a.k.i.a.a.i.i.a.i.a.a.a.a.g.f.a.i.g.a.f.f.f.k.a.g.f.g.f.j.x.a.j.z.z.f.g.k.k.k.z.k.k.h.g.g.g.g.g.g.g.g.g.g.g.g.k.k.k.f.a.a.k.a.i.i.d.k.i.i.f.i.a.z.a.k./ / S ZXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXDXDXSXGXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXDXFXAXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXZXAXBXQ.' / ! m.U.T.T.T.T.^.P.T.~.T.T.~.~.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.P.T.P.T.P.P.T.P.T.L.L.L.U.L.U.U.L.P.L.L.U.L.U.U.U.K.L.U.L.L.L.U.L.L.L.L.L.L.U.H.G.H.S.H.G.S.S.S.A.H.A.A.A.IXGXGXGXGXAXAXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXAXVXBXaXM.{ n G.Z.S.S.G.H.H.H.L.L.D.L.L.L.L.L.U.U.P.T.T.P.Y.A r ; ; : q F.T.F.q : ; e e Z T.Y.Z ; e e e ; : * r > q Y.L.Z 0 e y 0 ; r : > * 0 b.L.T.T 0 r 0 T Y.U.S 0 r r Z.~.T.T.n.r ; ; Z T.U.Z 0 0 r r 0 A.H.L.: y : e ; S Y.U.Y.T.U.Y.U.T.U.T.P.T.T.T.T.T.T.T.T.T.Y.P.T.U.Y.Y.T.Y.T.Y.~.~.~.~.^././.(.[.(.(.(.(._._._._._._. X[.|.}. X|. X|. X", "Z B Z Z C Z C Z C B Z C C D Z C Z C A F C Z Z D Z A B Z D B D Z Z Z C Z Z D Z Z Z Z B Z Z Z Z Z Z Z Z Z Z Z F Z Z F C Z Z C F Z C Z A C C C C C F F C C Z F Z F A Z Z Z Z A C Z Z C Z F Z Z Z D Z Z F Z Z Z D Z Z H Z Z S Z Z L H H H S J H H J H J J H H J H J L P L L J J J J P P H P P P P J I P P L J P P P P P P P P P U P L L P P L P L P J U P P I I Y b.Z.g.g.g.g.l.l.g.A.l.l.A.A.h.A.A.A.g.A.A.Z.A.A.A.A.l.A.A.A.A.A.A.S.S.A.H.S.S.S.G.S.S.H.S.H.H.H.H.L.S.H.L.S.H.L.L.L.L.P.H.L.P.Y.Y.R.R.Y.T.T.T.~.T.T.T.~.T./.~././.~.(./.(./.(.T././.(.~.E.~.T.~.T.T././.T.~.T.T.T.~.T.T.Y.U.U.L.L.Y.U.L.L.H.L.H.L.P.L.L.U.L.L.L.L.H.U.H.L.L.H.L.U.L.L.U.S.S.L.H.L.H.H.H.H.H.H.S.H.S.G.H.A.H.G.S.S.S.A.S.S.S.A.A.A.A.A.A.A.A.A.A.A.h.h.A.A.A.g.A.h.h.A.l.A.A.A.l.l.h.h.h.k.l.l.l.h.k.z.g.A.l.k.Z.k.k.d.A.g.g.g.g.g.g.g.g.f.f.f.f.f.f.f.k.k.f.g.f.g.g.g.g.g.k.g.l.l.l.l.h.z.h.k.k.k.k.f.z.i.i.i.a.a.i.a.a.a.a.a.a.a.i.i.i.i.i.i.i.i.i.a.d.g.a.g.a.a.g.g.a.g.f.a.f.f.a.z.z.a.f.j.j.f.f.f.a.a.k.k.k.k.k.z.h.k.g.g.g.g.g.g.g.g.g.g.z.f.k.k.k.f.z.z.i.a.a.k.k.i.f.i.k.i.a.i.a.a./ S ! CXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXDXAXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXAXDXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXZXZXBXm.} ! ! [ Y.U.Y.T.T.T.Y.^.T./.T.!.T.T.~.~.~.~.~.~.~.T.~.T.T.T.T.T.T.T.Y.T.T.P.T.T.T.P.P.T.I.L.U.U.L.L.L.L.P.L.L.P.U.L.L.U.U.R.L.L.L.I.L.L.L.L.U.L.D.U.D.H.H.H.H.H.H.A.S.S.A.G.A.h.l.GXIXGXGXFXGXFXAXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXAXVXCXaXM.c c S.H.G.S.S.S.S.G.L.S.L.L.L.L.L.L.P.P.P.T.T.T.!.A r e t ; ; b.P.[ 0 > y * r Z T.T.H r = q b.T.~.(.T.U.].P.Y.Z 0 e : b.K.Z.G : * 0 u L.T.[ ; : ; [ U.T.Z : e > b.[.T.[.Z.; > e S ~.T.K r > y e ; b.U.[ r y r : ; Z U.U.P.P.T.U.T.U.T.U.T.T.T.T.T.T.T.T.T.P.T.T.Y.T.U.T.T.T.T.~.T.~.~.~.^./.~.(.(.(.`.^.(._._._._._._._.|._.}.}.|. X.X|.", "Z C C C C C Z C F C Z C C C C Z Z Z Z Z Z A Z B A Z D C Z Z Z D Z Z Z Z Z Z Z Z Z Z Z Z Z D Z Z Z F Z Z C Z C Z A D Z C Z C C Z C Z Z C C Z C A A Z Z A C Z F C C Z C F Z Z C Z A Z C F A Z F Z Z Z H Z Z D Z H H Z Z H H Z L L H L H H H H J H H H H H J H H J S P J J L P J P P J P P P P I I J I I P P P P P P P P P L P P L P L P L U P P L P P P P L ) [ d.j.Z.Z.g.A.g.Z.g.A.g.A.A.Z.h.l.A.A.A.A.A.A.A.A.A.A.l.A.S.A.A.D.A.S.A.A.A.A.H.Z.H.A.H.H.Z.H.H.S.H.S.H.L.K.K.H.L.H.L.L.P.Y.Y.Y.L.U.L.Y.Y.U.T.Y.Y.T.T.T./.~.~.~.~.~./.T./././.!.^.(./.^.~.~.~.~.^.~.T.T.E.T.T.R.T.I.Y.U.U.Y.U.L.U.L.L.Y.L.L.H.T.H.U.H.P.U.H.L.P.L.H.Y.H.L.H.F.H.U.H.L.U.S.S.A.J.H.H.S.L.H.H.S.H.D.S.H.S.H.A.G.S.S.H.S.S.S.A.A.A.A.A.A.A.l.h.A.h.j.W.h.h.h.A.h.h.h.A.A.A.A.l.h.h.l.h.k.z.l.l.l.l.l.z.g.g.k.A.k.k.l.l.k.k.k.k.f.g.g.g.g.f.g.f.f.f.k.k.g.f.f.k.g.g.g.f.g.g.g.k.k.l.k.k.l.l.k.k.k.g.k.d.i.d.i.d.k.k.k.a.a.a.a.i.a.a.a.a.i.a.a.s.a.i.i.i.a.a.a.i.i.a.a.z.a.f.g.f.k.k.k.k.z.f.k.f.k.z.f.j.f.f.f.x.k.k.k.l.k.h.k.k.g.f.k.g.g.f.g.a.g.a.g.g.k.k.k.z.i.a.i.i.i.f.i.z.i.k.f.f.z.a.k.k.P / ! CXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXFXFXFXFXFXFXFXFXDXDXAXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXDXDXDXAXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXAXFXFXDXDXGXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXBXm.[ / ! c.T.T.T.T.T.T.P.~.(.Y.~.T.~.~.R.~.T.~.~.T.T.~.T.~.T.T.T.T.T.T.T.P.T.T.Y.Y.T.T.T.P.Y.T.L.U.Y.L.U.L.L.L.P.P.L.L.U.L.L.U.L.L.U.L.U.U.L.U.L.L.U.K.Z.H.H.H.S.H.H.H.S.S.A.H.z.A.l.GXIXDXGXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXAXAXCXhXM.{ c A.H.G.G.h.S.S.S.H.H.L.L.S.L.L.L.U.Y.P.P.U.T.Y.Z 0 r L = = U U.U : q _ 0 e Z Y.T.J e : q Y [ T T T ` b.L.T.Z ; ; y b.P.P.].q r : q F.U.[ : 0 q ` I.!.F 0 q t b.T.T.~.n.* ; r Z Y.I.S 0 0 H t > U ~.H = y S = ; Z L.T.U.L.T.U.U.T.U.T.T.T.T.T.T.Y.Y.T.T.T.Y.Y.P.U.^.P.T.T.T.~.~.~.~./.~./.^.(.(.(.(.^.`.^.`._.|.|._._._._.|.|.|.|..X.X", "Z Z C Z C Z C C Z C C C Z D B Z Z C Z D B Z Z C Z C Z Z Z C Z B C Z B D C Z Z C Z Z Z Z Z D D Z Z A Z Z Z Z Z C D Z Z C Z C Z C C Z C Z F A F Z C C C F C Z Z A Z C Z C C Z A D Z Z C A F Z Z A F Z D Z Z Z Z Z Z Z Z Z H Z H H H H Z H H L Z J H J H H H H J J L L L L L P J J P L J P P L L J I J P I L P P L L P P L P P P P P L L P P L P P L U P P U U T b.j.j.g.g.Z.Z.l.l.h.Z.A.l.A.l.Z.A.A.A.A.A.A.A.Z.A.A.S.A.A.D.l.Z.A.A.S.S.G.H.Z.S.A.H.H.G.H.H.H.H.J.S.L.S.S.L.L.L.L.L.Y.L.L.P.L.Y.U.Y.U.U.Y.P.U.T.Y.T.T.T.~.T./.T.T.~./././././.T.~././.T.~.~.T.~.T.!.R.T.T.T.T.T.T.I.I.U.U.L.U.L.L.L.H.H.L.L.H.L.L.L.P.U.H.L.H.L.L.L.L.H.L.H.H.Y.S.S.S.Y.S.K.H.Z.G.S.S.G.Z.L.S.S.A.A.H.A.S.S.S.S.S.S.h.S.A.H.A.H.A.A.Z.G.G.h.W.A.A.A.h.h.h.A.Z.h.h.h.A.l.A.l.l.l.h.z.l.l.z.l.l.l.k.g.g.l.k.g.A.k.l.k.k.A.g.g.g.g.g.g.g.g.f.g.k.f.f.k.f.k.k.k.g.z.d.g.g.k.z.g.A.g.A.z.k.k.k.k.g.f.g.k.i.z.i.i.i.i.i.a.a.a.a.a.i.k.a.a.a.a.u.z.i.i.i.a.i.a.g.a.a.a.a.g.f.f.f.f.k.k.k.z.k.f.f.k.j.f.f.f.f.f.f.h.k.h.k.g.h.k.h.g.g.k.g.f.g.g.j.g.j.f.f.z.f.f.i.f.z.f.z.a.k.i.i.i.k.i.i.i.a.a.a./ / S CXAXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXDXDXAXDXSXGXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXDXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXDXGXBXQ.{ / ! [ U.T.T.T.T.T.T.T.T.T.T.T.~.T.~.~.[.~.T.~.~.T.Y.~.~.T.T.T.P.T.T.P.T.T.T.T.T.P.T.T.P.T.Y.U.U.Y.P.U.P.P.L.P.U.L.L.I.L.K.U.L.L.L.U.K.U.U.S.L.L.S.L.L.H.H.S.H.S.H.H.H.A.A.H.h.G.IXPXSXIXFXFXSXAXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXVXCXaXM.n c A.A.A.G.H.G.H.H.H.L.S.L.U.L.L.L.L.A.P.U.T.T.!.H r 0 [ y * C ].u > y T 0 r S Y.~.A : = : 0 > y e r y T L.T.A r 0 = Z.P.J.U.Z * e = Z.L.U y : : T L.U.Z > : > b.T.T.T.F.0 e r Z T.!.A r q ` : ; V K.u 0 r [ q : Z T.U.U.U.U.U.T.U.T.U.T.T.T.T.Y.T.P.Y.T.T.P.P.^.Y.T.P.T.T.T.T.~.T.~././././.(.(.(.(.|._._.(.`.(._._._._._._.|.|. X|.'.", "Z Z Z C Z Z C C D B D C Z B C Z Z C Z Z C Z C Z B D Z D Z Z Z Z Z Z Z Z Z L G Z Z L Z Z Z Z L L Z Z Z Z Z Z C C D Z Z C Z Z C C A Z Z Z C Z A C Z C C Z C Z Z Z Z C Z C Z C Z Z Z Z Z A Z A Z C Z Z Z Z A Z Z G D Z D Z Z H H D H H H H D H H H H J H H J H H J J L L J L P L P J P P L P P P P J L I U J J P L I P P L P P L P P P L L L P P L ( L P L U U [ z.Z.g.j.Z.g.l.l.Z.h.l.Z.A.Z.A.h.A.A.Z.A.A.A.Z.A.A.l.A.A.A.A.A.A.A.S.A.A.S.S.S.S.H.S.S.G.S.W.Z.H.Z.Z.L.S.L.S.L.H.H.L.Y.L.L.L.Y.L.U.U.Y.L.Y.P.L.P.P.P.T.T.T.T.~.T.~./.~.~.~.T././.^.~.~.~.~.^.T.T.Y.T.T.T.T.Y.T.Y.T.P.Y.P.L.U.L.Y.L.L.L.H.K.L.H.U.H.L.L.L.L.H.L.L.L.L.H.H.L.U.H.H.L.L.H.H.H.S.K.H.H.S.S.S.S.J.A.A.Z.G.A.G.A.A.J.S.A.G.A.G.A.A.A.A.A.A.h.A.A.A.A.h.h.h.A.h.A.A.h.h.D.g.h.l.l.l.l.l.l.l.l.A.l.l.z.j.h.z.z.g.h.g.z.g.z.A.d.k.l.k.k.g.g.f.g.f.j.j.f.j.j.j.h.k.h.f.k.h.f.l.g.g.l.A.g.g.z.h.f.g.j.g.a.s.j.a.k.k.a.a.a.a.a.a.k.i.i.a.a.a.a.a.a.a.a.a.a.a.a.i.i.i.a.a.a.a.z.a.k.k.a.f.f.f.f.f.g.g.g.g.d.d.z.d.g.g.g.k.k.g.z.g.g.f.f.g.g.f.z.k.k.f.f.f.f.f.k.f.f.d.k.a.f.g.i.k.d.f.k.d.k.d.k.z.i.a.g./ ! S CXZXFXAXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXSXDXDXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXVXZXBXQ.} / Q { T.U.T.T.T.T.T.!./.!.~.~.~.!.~.~.~.~.~.T.~.T.~.T.T.T.T.T.T.T.T.T.~.T.T.T.T.T.T.U.U.T.U.T.T.I.U.U.P.P.L.L.L.L.L.P.L.L.U.P.L.P.L.U.L.L.L.L.L.U.S.L.H.H.H.H.H.S.S.S.D.D.l.G.x.IXPXGXGXFXFXAXAXAXFXHXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXBXhXM.{ c Z.A.S.S.S.S.S.S.A.H.L.S.S.L.H.L.L.L.P.T.S.P.Y.S 0 t [ D q : b.r ; P [ = r A ^.T.Z e : : r = y : : 0 T T.P.Z e ; > n.L.T.G.G y 0 y b.S.[ 0 : r [ U.P.S : t ; b.L.T.Y.b.= : e S T.T.S * y ` P 0 q b.y 0 H [ 0 : D !.S.P.P.P.Y.T.U.T.T.T.T.T.P.P.P.P.T.U.T.U.U.T.T.T.T.Y.T.T.~.~.~.~.(./.(./.(./.(.(.(.(._._.|.|._.(.`.[.{.|.|.|.|..X|.", "Z Z Z Z C Z C Z D B C Z Z D D B Z Z F B Z Z Z C Z Z Z B C Z D B Z Z Z Z Z Z C Z Z Z Z Z L Z Z Z Z D D Z Z Z Z Z Z Z C Z C Z Z Z C Z C C C C Z Z Z Z Z C Z A C Z Z A Z Z Z D Z C A Z C Z Z Z Z Z Z C D C D Z F Z D Z Z D D Z D H H D H F K H D H H H H H H H H H L L H L P P J H L P P J L J J P I P I J I L P P L P P P L L P L L I P P L P L P U L L P P T d.A.j.g.Z.g.g.Z.h.Z.l.A.l.A.A.A.l.A.A.l.A.A.A.D.A.A.A.A.D.S.S.S.Z.A.A.S.S.S.S.S.H.A.G.Z.S.S.S.J.H.H.H.L.S.H.L.H.L.L.L.L.L.L.L.L.L.U.L.L.U.Y.Y.P.P.Y.P.Y.T.T.~.Y.T.T.T.^.~.~.~.~.~.~.~./.~.T.T.T.T.T.T.T.T.P.T.T.P.P.P.P.P.L.L.H.L.S.L.H.L.H.H.J.L.L.L.U.S.U.S.L.H.H.H.L.L.L.H.H.H.D.D.H.H.H.S.A.A.H.S.S.S.S.A.A.H.A.A.A.A.G.G.A.A.H.A.A.h.W.G.A.A.A.A.A.A.A.G.h.h.A.h.h.A.h.h.A.A.h.h.h.h.l.l.l.l.l.l.l.l.h.l.h.h.g.h.h.z.h.k.A.z.g.g.g.l.k.g.k.g.g.g.f.f.d.a.j.f.a.f.a.h.f.h.f.h.f.k.k.k.g.z.l.g.l.h.h.g.z.g.g.g.f.k.a.a.a.z.a.a.a.a.f.i.f.a.a.a.a.k.i.a.z.i.a.a.u.i.f.f.i.a.a.z.a.k.k.k.k.f.k.k.k.f.g.f.f.g.g.g.d.f.f.g.k.k.k.k.z.f.h.h.g.g.f.f.j.k.f.k.f.f.f.k.f.i.k.f.f.f.d.k.i.d.f.i.k.i.d.f.f.i.g.a.a.S ! / CXFXFXAXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXDXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXDXAXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXBXpX[ Q ~ b.U.T.U.T.T.T.T.T.T./.T./.~.~.~.~.~.~.!.~.T.T.T.[.T.~.T.T.T.T.~.T.T.T.T.T.T.T.U.T.T.U.T.U.I.T.U.L.P.P.L.P.L.Y.P.L.L.U.L.P.L.U.L.U.U.L.L.L.S.S.S.L.H.H.H.S.H.S.G.S.G.D.l.D.D.GXHXDXGXGXFXDXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXBXaXM.' c Z.h.S.S.h.S.S.H.H.H.S.L.S.L.H.L.L.L.S.U.T.U.T.Z : 0 Y T = y F r t T T * : Z T.Y.S e t = ) [ [ T T [ b.P.T.Z r ; q e.T.H.T.L * * * Z.U.[ 0 0 0 T U.U.A 0 : : Z.[.U.Y.Z.> r 0 D T.U.S : : U [ r * A : r [ T 0 ; J P.P.P.Y.P.P.U.T.U.T.T.T.T.T.P.T.T.P.T.U.U.T.L.T.Y.T.T.T.T.~.~.~./.(././.(.(.(.(.^.(.`.^.`.(.(.(.|.`.|.{.|._._.|.|.|.", "Z Z Z Z D B Z Z C Z D B C Z Z Z B Z Z Z D B Z Z B D F Z Z Z Z Z Z Z Z L Z Z Z Z Z Z Z Z Z Z Z Z D Z D Z Z C Z C Z Z C C Z C C Z C Z C Z Z Z C C Z Z A C Z Z Z Z Z Z Z A C Z A C C Z C Z Z A A Z D Z F Z D Z Z Z Z D Z Z Z D H H Z H H H Z H D J H H H H H J J H J H L L Z P L J P L J P J J P L P L P L P L L L P P L P P P P P J J L L L P P L L P L L T [ Z.Z.g.Z.Z.g.Z.Z.h.A.Z.l.Z.h.A.h.A.A.A.A.A.A.A.A.A.A.S.Z.S.A.Z.D.A.A.S.S.A.S.A.S.A.A.S.G.S.S.S.H.H.H.H.L.H.H.H.S.L.L.L.L.U.L.L.L.L.L.L.U.U.L.Y.P.L.P.P.P.T.P.U.T.Y.T.T.T.~.~.~.~.T.T.~.~.T.T.~.T.T.T.~.T.U.T.U.P.L.P.P.P.L.L.H.L.L.L.H.L.H.L.H.H.L.L.H.L.H.L.L.L.H.L.L.L.H.H.D.S.H.G.H.G.G.G.H.J.H.H.H.S.Z.H.A.G.A.A.A.A.A.A.S.A.A.A.A.G.A.h.A.A.A.A.A.A.A.A.Z.A.G.h.G.h.h.h.z.h.h.h.l.l.l.l.l.l.l.l.h.h.z.h.z.x.j.g.h.k.g.l.z.g.D.g.Z.g.k.z.g.k.g.d.g.f.g.f.g.g.g.j.g.h.f.h.f.h.a.l.A.d.g.g.g.l.k.g.j.f.h.h.g.g.j.g.k.a.a.a.a.a.a.a.a.d.d.a.a.a.d.a.i.z.E i.a.a.a.u.a.i.a.a.a.i.z.a.k.k.a.k.k.f.k.k.j.g.z.g.g.f.z.k.g.k.k.k.k.k.k.g.h.f.h.f.g.f.f.f.f.k.f.k.f.f.k.k.k.f.f.f.d.f.k.f.f.f.d.k.k.k.f.f.a.z.k.a./ S ! ZXZXZXAXFXFXFXFXFXFXFXFXFXDXAXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXFXFXFXFXFXFXAXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXAXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXAXFXZXFXVXBXQ.} ! ^ c.T.U.T.T.T.T.~.T.~.~./.!.~.(.~./.~./.~.~.~.(.T.~.~.~.T.T.T.T.T.T.T.T.T.T.T.T.T.U.U.T.U.T.U.U.T.U.P.P.P.L.S.P.P.P.S.L.L.L.L.U.L.U.U.L.L.S.U.S.H.H.S.H.S.G.S.S.H.S.l.G.D.D.D.GXPXSXIXFXHXFXFXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXCXaXM.n c h.A.l.S.S.S.A.H.S.H.S.S.D.L.U.S.L.L.T.L.L.U.T.A : > [ Z.: t e > : Z.[ r * F T.Y.Z 0 : q b.Y.T.J.U.U.U.P.Y.A r y q b.T.T.F.> e 0 > Z.L.T r e = T T.U.Z y > 0 b.U.T.[.b.r : 0 D [.Y.S : * T S.0 r y 0 = F.[ r ; L L.P.P.Y.Y.P.T.U.P.Y.P.P.P.T.U.T.P.T.T.U.U.T.T.T.T.T.T.T.~.T.~././.(.(.(.(.(.(.^.`._._._.`.`.`.|.`.^.`.^._.|.|.|.'.|.", "G B D D Z Z Z C Z C Z Z Z Z C Z D D Z Z Z Z Z Z D C D Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z G Z Z Z L Z D Z Z Z H Z Z G C Z Z Z Z C D C Z C Z A A C Z C A C Z C Z Z Z A C Z Z C Z Z Z Z Z C F Z C C Z Z Z C C Z Z Z F D D Z Z H H D Z D H H D H S H H D D H H H H H H L H H H J J J L J L J J P J L I J J J P J J I P P L L J P L P J L L P L P P P L L L L U P T T [ d.Z.g.g.Z.g.h.h.l.l.A.l.A.A.h.A.Z.A.A.A.Z.A.A.Z.D.A.A.A.A.l.A.A.S.A.A.S.A.H.S.A.S.S.S.G.G.H.A.H.H.H.H.H.K.L.S.L.H.L.S.H.L.L.K.L.L.L.U.U.H.L.L.P.L.T.P.P.L.Y.Y.Y.T.T.~.T.~.~.~.~.~.~.T.~.T.T.T.T.Y.T.T.T.T.T.P.U.L.L.Y.L.L.H.L.L.H.L.H.H.H.H.L.H.D.H.H.H.S.S.L.H.L.H.S.S.S.H.J.G.L.H.J.A.H.A.A.A.A.A.S.D.h.A.A.A.A.A.A.l.A.A.A.A.A.G.A.A.W.A.l.A.A.A.A.A.A.A.A.j.h.h.h.A.h.D.h.A.A.l.l.A.l.g.l.g.l.h.h.h.h.z.h.j.z.h.l.g.z.d.Z.k.k.d.l.Z.d.g.g.g.g.f.g.f.f.g.a.g.g.h.f.h.k.h.f.h.f.k.k.k.A.A.g.g.l.h.h.g.g.g.g.g.g.k.k.k.a.k.a.f.a.a.i.a.a.a.d.d.a.E z.z.k.i.i.i.a.a.a.a.a.a.z.i.z.a.k.k.a.a.f.f.k.k.d.k.f.f.g.f.k.f.g.k.k.k.g.k.g.k.h.k.f.g.f.j.g.k.f.k.f.k.f.d.k.f.f.f.d.f.f.f.f.f.f.k.f.k.k.f.f.a.g.k.k./ / S ZXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXDXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXFXFXFXFXFXFXFXFXFXFXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXAXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXAXZXAXBXm.[ / S m.T.T.T.Y.T.~.~.~.~./././.~./.~.~./.~.~.^.~.~.~.~.~.T.~.~.~.~.T.T.T.T.T.T.T.T.T.T.T.U.T.U.T.U.U.U.P.P.P.U.P.L.P.P.P.P.P.P.L.P.P.P.L.L.L.L.S.L.U.H.H.H.H.G.H.S.S.G.G.G.D.D.x.IXIXGXGXFXDXAXFXAXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXUXhXM.{ c h.A.l.l.S.S.S.S.S.H.H.H.P.A.U.H.L.L.L.H.L.U.U.Z 0 y [ T.y * : y t P.` : y G Y.!.Z : = q n.~.L.XXXXG.P.U.Y.Z r = = b.L.Z.Y * * * S K.U.[ r : r ` U.T.T r : 0 J U.U.T.G * r : ` I.R.Z y : [ ~.y y > r y !.T 0 ; L U.P.P.P.P.P.U.T.U.U.T.P.P.T.T.U.T.U.U.T.U.U.T.T.T.T.T.~.~.~.~.~./.~./.^.(.(.(.`.(.(.(._.`.^.|.(.|.^.|.`.|._.|._.|._.", "Z D Z Z Z Z C Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z D Z Z Z Z Z Z Z Z Z L Z G Z Z Z Z Z D Z Z D Z D Z C Z Z Z C Z Z C Z Z C C C C C C C C Z Z Z C Z A Z Z Z Z Z Z Z C Z Z C C Z C C Z C Z F Z Z C Z F Z D Z D F Z H Z H H H H H H H D H L H L H L H H H J H H H J J H J J H P L P L P J J J L J J L I L P L L L P L L L P L L P L P P U L P P G U d.Z.g.g.Z.g.g.g.A.A.h.Z.A.A.A.l.A.A.A.l.l.S.l.A.A.A.A.A.A.A.S.D.A.A.A.A.S.A.A.S.S.S.A.A.H.G.Z.G.Z.S.G.H.H.H.H.H.H.H.L.L.H.L.L.H.L.L.L.H.Y.L.L.L.Y.L.P.L.H.I.P.U.Y.Y.P.T.T.~.~.T.~.~.T.T.~.T.T.T.T.T.P.Y.L.T.T.P.P.P.P.L.L.L.D.H.H.H.L.H.H.J.H.H.H.H.L.H.H.H.L.S.D.L.H.A.L.S.H.D.S.H.H.A.K.A.A.A.W.A.G.H.A.S.A.A.A.A.h.A.A.Z.A.A.A.A.A.Z.A.A.A.A.A.A.A.A.A.A.A.h.Z.j.A.A.A.h.A.h.S.A.h.z.h.z.h.l.l.l.l.l.h.h.h.h.h.z.j.k.h.g.g.g.g.k.k.k.h.h.f.k.g.g.f.g.g.f.f.g.g.k.g.f.f.h.g.h.k.z.g.k.l.k.g.g.k.g.g.h.g.h.h.g.g.g.a.k.a.g.i.a.f.a.a.d.a.a.a.d.a.d.a.a.a.u.a.i.i.i.E a.a.a.a.a.a.i.k.k.k.k.a.a.k.k.f.k.f.k.f.k.f.k.f.f.d.z.k.g.k.g.k.f.g.g.g.f.j.j.f.k.f.k.k.f.k.f.f.k.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.z.a.g.g.~ / ! CXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXSXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXAXDXSXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXDXAXDXAXFXFXFXFXFXFXFXFXFXAXFXAXZXDXBXpX' ~ ~ c.T.T.T.T.!.~.~.~./.!./.!././.^./.~./.~.~.~.!.~.~./.T.T./.~.T.T.~.T.T.T.T.T.T.U.T.T.U.T.U.U.Y.U.U.Y.U.U.U.Y.P.P.P.L.L.L.P.L.P.Y.L.U.A.L.L.U.H.H.H.G.H.S.S.S.S.G.A.z.G.S.A.D.IXGXGXGXFXFXFXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXBXhXM.8.c h.A.A.A.A.A.A.h.A.A.A.D.G.H.H.H.L.S.P.U.P.P.Y.F e 0 [ H.Z r 0 0 G U.[ ; : A Y.~.H e y ; ; : 0 * r : = Z.P.A : y > r q r : e r q e.L.H.T r : : T L.U.F.: y * : y A y 0 e * q F.U.~.A : y [ U.J : y e P Y.Y 0 e A L.K.P.P.P.P.P.P.P.Y.T.P.P.T.U.U.T.U.U.U.T.U.T.T.~.T.T.T.R.~.~./././.).^.^.(.(._._._.`.`.^.|.{.|.^.`.`.`.^._._.|.|.`.", "D Z F D Z Z Z Z C Z C Z Z Z Z Z Z Z D D D Z G Z Z Z Z D Z D Z D Z G Z Z Z L Z Z Z Z Z Z Z Z L Z Z H G D D D D Z Z Z Z Z C Z Z C C C Z C Z Z Z Z Z C Z C C Z Z Z Z Z Z A C Z Z C Z F A Z A Z Z Z C B D A Z G Z C Z H D Z Z Z H H D L Z H H J H H J Z D H J H H J J J L J J L J J P L J P P J P L L J P U P P J P J P P J L P J J P L P L L J P J P L P U [ b.Z.j.Z.g.Z.g.Z.Z.g.Z.l.h.Z.l.h.Z.l.A.A.A.Z.A.A.A.A.A.Z.D.A.A.Z.A.A.A.A.A.A.S.A.A.A.G.A.S.A.G.H.S.H.H.H.H.H.L.L.L.H.L.H.H.L.D.L.H.H.L.L.L.L.L.L.U.L.L.L.U.U.U.U.U.Y.U.T.P.T.T.T.T.~.~.T.T.Y.T.T.Y.P.P.L.I.L.L.L.L.L.L.H.L.L.H.L.H.L.S.H.S.H.H.H.H.S.H.H.H.H.H.H.L.H.J.H.L.H.S.H.H.H.D.H.H.H.S.G.A.A.A.A.A.A.A.h.A.Z.h.h.h.j.A.A.A.A.A.A.A.A.A.h.A.A.A.A.h.h.A.h.A.W.h.A.h.g.G.h.z.h.z.H.z.A.A.l.l.l.A.l.l.h.h.x.l.l.z.z.h.z.g.g.g.D.z.g.k.h.g.g.g.g.g.g.g.g.g.g.g.k.k.h.g.g.h.z.k.f.g.z.k.l.l.g.z.A.z.h.k.h.h.z.g.g.g.k.a.k.g.f.i.a.a.a.a.a.a.a.a.z.z.a.a.a.a.i.i.a.z.a.a.a.a.a.a.z.i.k.a.k.a.k.a.i.f.f.f.f.f.f.f.f.k.g.f.k.g.k.k.k.g.z.g.g.f.f.g.g.f.f.k.f.f.k.k.f.g.k.f.f.f.f.d.f.f.f.f.f.f.f.f.k.f.g.k.g.a.~ ~ S HXDXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXDXAXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXAXFXFXFXFXFXAXDXDXGXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXGXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXDXDXAXDXFXFXFXFXFXFXFXFXFXAXFXFXZXZXBXm.} S S m.T.T.T.~.T.!.~././././././././././.(././.~.~.~.~.~./.T.T.T.~.T.T.T.T.T.T.T.T.T.U.T.U.U.T.T.Y.T.U.P.Y.P.U.L.U.P.P.L.L.L.P.P.L.L.L.L.L.L.L.S.L.G.H.H.S.S.S.A.h.G.G.G.S.H.l.G.GXIXGXGXGXVXFXFXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXBXaXM.{ c g.A.h.A.A.A.A.A.A.H.S.S.S.G.S.L.H.L.D.S.D.U.I.Z ; e [ U.[ = : % b.T.T ; e H Y.U.A e : ; ; ; e e r : ; b.L.C t * ; e ; > : : * U L.L.L.` y : t ` U.U.^.T = y e : y : e ; 0 b.I.U.Y.H e 0 T T.T r e : T U.[ > e Z I.Y.P.P.P.P.P.T.U.U.P.P.T.P.U.T.U.U.T.U.U.T.T.T.T.T./.T./.~.~././.(.(.(.(.(.(.(._._._.|.`.{.|._.|.`.^.`.|._._._.`.`.", "D D D Z Z Z F Z Z Z Z F Z Z Z Z D Z Z D D D Z Z Z D F Z D Z Z D Z Z G Z Z Z Z G Z Z Z L Z L Z Z Z Z H D D Z H D Z Z Z Z Z Z Z Z Z Z Z C C Z C C C C Z Z Z Z Z Z Z C Z Z Z Z C Z C C C Z Z C C Z Z C Z D C Z Z Z Z Z H Z Z H Z Z Z Z Z H H H H H H H Z H H H L L L L L L J L H L H J L L J P J J I J L J L L J L L P L L P L P P L J L L L L P L L L L U [ b.g.Z.g.Z.g.Z.g.Z.Z.l.A.A.l.l.A.h.Z.A.A.A.A.A.A.A.Z.A.A.A.A.A.A.g.Z.A.A.A.A.A.A.A.A.S.A.G.A.S.G.H.H.H.H.H.H.H.H.H.H.H.H.H.S.H.H.H.S.L.D.H.U.S.S.L.L.L.L.L.U.L.I.L.L.U.P.T.T.T.T.~.T.T.T.T.T.T.T.P.P.T.L.U.U.L.L.P.P.H.L.P.H.H.J.H.H.S.H.H.S.H.H.S.S.L.H.S.S.H.H.L.L.A.D.H.H.H.H.H.S.S.H.Z.W.A.A.G.A.A.A.H.A.A.A.h.h.h.A.h.j.S.h.h.A.A.A.A.h.A.h.A.A.h.h.A.Z.h.A.A.h.Z.g.A.A.g.A.h.h.D.z.h.A.z.A.l.l.h.l.l.h.h.j.a.l.j.h.g.z.k.g.z.g.g.g.h.h.k.k.g.g.g.k.g.g.g.f.g.k.g.h.f.g.h.h.h.h.f.z.k.A.d.A.D.Z.k.h.g.z.k.z.g.z.f.z.a.a.g.f.f.k.a.a.i.a.a.a.a.a.E u.a.u.a.i.i.a.a.a.a.a.a.a.z.f.k.k.z.a.k.a.k.k.k.f.f.f.d.d.f.k.k.z.f.f.g.k.g.k.k.f.g.g.g.f.f.g.f.k.k.f.f.f.k.d.k.d.f.f.f.k.i.f.k.f.f.f.f.k.g.k.k.g.g.g.g.S / ! CXDXDXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXGXSXFXFXFXFXFXFXFXFXFXFXFXAXFXAXZXFXBXQ.{ Q ! [ T.~.T.[.~.~./././././././.^././././././.^.~.~.~.~./.T.~.~.T.~.T.T.~.T.T.T.T.T.U.I.T.U.U.I.T.U.U.T.P.L.L.L.P.P.S.L.L.L.L.L.P.L.L.L.L.S.L.G.H.D.S.G.S.G.A.A.S.h.G.S.A.A.z.S.IXHXPXGXGXFXGXAXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXBXaXM.{ c g.g.g.A.A.A.A.h.A.H.A.A.S.S.H.S.H.H.U.H.S.U.Z.Z r 0 T T.n.= q y b.T.T y ; Z Y.T.J * = y 0 0 r * : : > n.D.Z * q r * y = q H b.L.U.H.L.T q 0 > T L.P.U.Y.b.y q q : q ; A [ T.I.U.T.Z * = T [.b.t > 0 F.P.T y : H L.T.P.P.T.P.P.P.P.U.L.U.P.T.U.T.T.U.T.U.T.T.T.T.T.T.R.~.~.~.~.!././.(.(.^.(.|._.`.`._.|.|._.|._.|._._.`.^.|._.|._.|.", "D D D Z Z F Z Z F Z Z Z Z Z Z D Z D Z D D D Z D Z Z Z D Z D H Z L L Z Z Z Z Z Z L Z L Z Z Z L Z D H Z D D Z Z D Z Z Z Z Z Z C Z Z Z A Z C Z C C C Z Z C C Z A Z G Z Z Z Z C Z C H Z C C C Z Z C C Z C C F G Z D Z F D Z H Z H F Z L L L Z H J Z J L J H H H L L H H J H L L J J H J L J J L J L L J P L J P L L P H P L L J L L P J L L L L J L P L U U e.d.Z.g.g.Z.h.Z.g.h.A.l.Z.h.Z.A.l.A.A.A.A.Z.A.Z.A.A.l.A.A.A.A.A.A.A.A.A.h.A.A.A.A.S.A.A.S.A.S.H.H.A.A.H.D.H.S.L.H.L.H.L.H.L.H.H.S.H.L.H.S.L.S.L.L.H.L.S.L.L.L.H.L.Y.L.Y.P.U.T.T.T.T.T.T.P.T.T.P.T.P.P.P.P.L.L.L.L.L.H.L.H.H.D.L.H.S.H.H.A.H.S.S.H.G.S.S.J.Z.H.H.S.S.A.H.S.S.S.S.A.A.S.H.A.H.h.G.A.A.G.A.A.S.A.h.h.S.S.h.h.h.A.h.A.Z.A.A.A.A.A.A.A.h.A.Z.A.h.A.A.h.A.h.A.H.h.h.A.h.A.A.h.g.A.z.h.h.z.A.A.l.l.h.h.g.h.z.z.z.h.g.l.g.g.z.g.j.h.f.h.g.g.g.g.g.g.k.g.g.g.g.g.f.h.a.g.x.k.h.h.k.k.d.A.z.d.k.k.g.h.l.k.g.g.a.z.g.z.z.a.f.k.a.a.d.a.a.d.d.d.i.i.a.u.a.u.a.i.a.a.a.a.a.a.a.i.i.z.a.a.a.a.a.a.i.a.f.f.f.f.f.f.f.d.d.g.f.f.k.k.k.k.f.g.f.g.g.j.g.g.f.k.f.k.f.f.f.f.d.f.d.f.f.f.f.f.f.f.k.g.f.g.g.g.z.g.g.h./ S ! ZXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXBXpX[ / ~ [ T.~.~.~.~.~./.(./././././././.(./././././.~./.~.~.~./.T.~.~.~.~.~.~.T.T.T.T.U.T.U.U.U.T.T.U.T.T.T.T.T.Y.P.P.P.P.L.L.P.U.D.L.L.L.L.L.L.L.L.L.G.H.G.A.H.A.S.A.G.G.S.A.S.S.x.GXIXGXGXFXVXAXAXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXBXhXM.{ l Z.g.A.A.z.A.A.A.A.z.S.A.S.S.S.S.S.H.S.L.L.U.P.K.K.L.U.L.U.Y.Y.U.U.U.T.].U.U.T.L.L.I.U.T.T.U.L.U.Y.L.L.L.XXD.I.H.L.I.L.U.L.L.S.L.L.L.H.!.L.U.U.T.U.P.U.H.T.Y.F.b.b.b.F.Y.I.U.Y.T.T.K.U.T.T.T.P.~.T.U.T.T.U.U.!.U.U.L.T.P.P.P.P.P.P.U.P.U.U.U.U.U.U.P.T.U.T.T.T.T.T.~.Y.~.~.~././././././.^.(.(.|.(.`._.|._.|._._._.|._.|.^.`._._.|.|.", "D D D D D D D D D D A D D Z Z D D Z F F D D Z Z D D D D D D D Z Z G L Z Z Z D Z Z Z L L Z Z Z G Z D Z Z Z Z H G Z Z Z D Z Z Z Z D F Z Z C Z D Z C Z D B Z C Z B C Z C Z Z Z Z Z Z Z C C Z Z Z C D F Z A Z F C Z D D Z D Z H D D L Z H J G H H F K H H H H L H L H H H L L H J P P H P J J J L J J L J J J L J J L P L P L H L L P L L L L L J L L L U T Z.g.Z.A.Z.g.Z.g.h.l.Z.l.l.l.A.l.g.Z.A.l.A.A.A.A.Z.A.z.A.A.A.A.l.A.l.A.A.A.l.A.A.G.A.A.A.l.l.G.G.A.H.H.H.H.H.H.H.H.H.H.L.H.H.S.H.S.H.H.S.H.H.H.H.S.H.H.L.H.H.L.L.L.L.L.L.Y.I.Y.Y.U.T.U.P.P.T.T.U.T.L.L.H.U.H.L.L.L.D.L.L.K.H.J.H.H.H.S.H.A.H.H.H.G.S.H.S.Z.A.H.H.G.S.G.W.H.G.G.A.S.A.S.A.A.G.A.Z.A.G.A.W.A.A.h.A.l.A.h.h.h.G.l.l.h.A.h.A.A.A.h.A.h.A.A.h.h.Z.A.h.A.h.A.A.j.A.A.h.h.A.A.h.h.z.z.h.G.h.G.h.h.h.h.l.l.l.h.z.k.h.g.g.z.z.l.g.h.z.z.z.h.h.z.h.h.h.h.k.h.h.k.g.h.h.k.h.h.k.h.k.k.k.h.h.k.z.k.d.h.h.z.g.g.g.g.z.g.f.f.f.f.f.j.a.f.a.a.a.a.a.f.a.a.a.a.a.a.i.i.i.i.a.i.a.k.a.z.i.a.g.a.f.g.s.f.f.f.d.d.k.f.f.f.f.f.k.k.k.k.k.k.g.j.z.f.g.g.g.g.g.g.z.g.k.g.k.g.k.f.f.f.i.f.f.f.d.f.f.f.f.k.k.h.g.h.h.z.h.~ / ~ CXDXZXZXAXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXZXSXBXQ.} Q Q [ !.R.~.~././.(././.(.(.[.(.(.(.(.{././././.~.~.~./././.~.T.T.T.~.T.~.T.~.T.T.T.U.T.U.U.T.T.U.T.T.P.P.P.P.P.K.L.U.L.H.L.L.P.S.P.L.L.H.P.G.H.G.H.D.G.A.A.A.A.A.S.A.A.A.A.h.A.GXIXGXGXZXZXFXVXAXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXCXVXhXM.{ x h.h.h.A.A.h.A.A.g.A.A.A.h.J.h.H.H.A.S.H.H.H.L.H.U.L.U.L.U.U.L.Y.P.U.U.P.L.U.U.U.U.U.L.P.P.P.P.U.L.L.L.L.P.P.P.U.L.L.H.L.H.A.U.L.L.L.U.P.P.P.L.P.P.P.U.L.L.P.P.P.P.P.P.P.U.U.L.T.T.Y.T.T.T.U.U.T.T.U.U.T.U.T.U.T.U.U.U.Y.P.P.L.K.L.U.P.P.Y.U.U.U.P.T.U.T.T.T.T.T.T.T././.~.~.~././././.(.(.(.(.`.`.{._.|.|._.}.}.}.}.|.}.}.}.}.}.(._.", "D D D D D D A H D Z D D F D D Z D D D D D D Z H L D D D D D D D Z Z Z Z L Z Z D Z L Z Z Z G Z Z Z Z H Z Z Z Z Z Z Z Z Z Z Z Z Z C Z C Z Z C C Z Z Z C Z C Z D Z Z C Z Z Z C C Z Z C C Z Z C Z C C C Z Z Z Z Z Z D D D D D Z H D H H D D H H H H H L H H H J H H P J H L J H J H J J H J H J J L J L J U L J U L P P L J P P P P L L J J L L L L L L U T [ l.Z.g.g.Z.g.Z.Z.A.l.l.S.l.Z.g.A.A.A.g.l.A.g.A.A.l.D.A.Z.l.A.A.A.A.l.l.h.Z.A.A.l.A.S.A.D.G.S.G.H.G.H.H.H.H.H.S.L.S.H.S.H.S.S.S.H.S.H.H.A.S.H.H.D.L.H.H.L.L.L.H.H.L.Y.Y.U.Y.I.U.T.U.U.Y.T.U.T.U.U.T.L.T.L.L.L.L.H.K.L.H.H.H.D.S.H.S.A.G.H.A.G.A.H.A.S.G.A.J.H.A.H.Z.S.S.S.Z.G.A.A.S.A.A.G.S.A.A.h.W.A.A.S.A.A.A.A.A.h.h.h.h.h.h.A.z.A.A.h.A.A.A.A.h.h.h.h.A.h.A.h.h.Z.h.A.A.A.A.h.l.l.A.l.A.z.A.z.h.l.h.h.A.h.l.h.l.h.h.h.h.g.g.g.h.l.l.h.h.h.h.h.h.h.h.h.h.l.k.k.h.g.g.k.k.h.k.h.h.h.z.h.h.h.k.k.d.A.D.h.k.g.z.g.g.g.h.g.g.g.f.f.f.f.f.f.a.f.k.a.a.a.a.a.a.a.a.a.i.u.a.i.a.i.a.i.a.i.i.g.a.s.g.a.a.f.s.i.i.d.f.d.f.f.f.k.k.d.k.g.g.k.k.j.a.f.g.k.k.g.a.g.a.k.k.k.k.g.d.f.f.f.k.f.f.f.k.f.z.f.g.h.k.g.g.h.h.g.A.~ ~ S CXGXDXAXZXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXAXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXZXDXDXBXpX[ Q S M.~.~.~.~./.(./.(.(.(.(.(./.^.^.^./.(.(.(./././././././.T.~./.~.~.~.R.T.T.T.T.T.T.U.U.T.U.T.T.T.T.T.T.Y.P.P.L.P.L.L.F.S.L.L.P.L.L.D.P.L.G.H.G.H.G.G.G.z.G.h.A.A.H.A.A.A.A.A.IXGXGXGXSXDXFXAXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXaXM.{ c h.h.A.h.h.A.g.A.Z.A.A.A.A.A.H.S.S.H.S.L.H.L.H.L.H.L.K.L.L.L.U.U.T.U.U.U.L.L.L.U.L.L.L.L.P.P.L.L.L.U.P.L.L.U.P.A.L.U.H.L.L.L.L.L.L.L.L.L.L.P.L.U.P.P.L.U.U.U.L.L.P.P.U.P.U.L.L.U.U.P.T.T.T.U.T.T.U.T.Y.U.T.U.U.U.I.I.Y.Y.P.P.U.Y.L.U.P.P.U.Y.Y.Y.Y.U.T.U.T.T.T.Y.T.~.T./.~./././.(./.^./.(.(.(.(.`.|.|._.|.|.|.}.}.}.}.}.}.|.}.}.|._.", "D D D D Z Z Z Z D D D D D D D D H H G H L D L D H D H D D D D D L Z L Z Z Z D D Z Z Z Z Z L Z L G Z G Z L Z Z Z Z Z Z D Z Z Z Z Z B D D Z Z Z Z Z Z Z Z Z Z C D G Z Z Z Z F Z Z C Z C Z C C C C Z Z C Z Z Z A D Z H D D H H H Z H Z L H H H L F H H H H H H H L H J H L L H L P H L P P J J J L J J J U J L L J L L P L L J H H L P J L J L H L L L P T Z.g.g.Z.Z.g.l.g.A.l.l.h.Z.g.Z.A.A.A.A.Z.g.Z.A.A.A.l.A.A.A.A.A.g.A.A.l.l.h.A.A.h.S.l.l.l.A.H.A.G.Z.H.H.S.H.H.H.H.S.S.H.S.H.H.H.G.S.H.A.A.H.A.H.G.L.S.S.H.S.L.H.L.L.L.H.L.U.L.L.Y.U.L.U.U.L.L.T.U.H.L.P.H.L.H.H.H.H.L.Z.J.H.S.J.H.H.S.S.A.S.A.A.A.G.A.A.D.Z.A.S.S.G.G.A.S.H.A.A.A.A.A.G.A.G.A.A.A.A.A.Z.A.A.h.A.h.A.l.A.h.h.A.h.A.g.A.h.A.A.A.A.g.A.h.A.h.h.W.h.h.A.A.A.Z.A.A.A.h.h.A.z.h.h.G.z.h.x.h.z.h.G.g.h.g.l.h.h.h.h.h.g.h.g.h.h.h.h.h.h.h.l.l.l.h.l.h.h.h.k.h.h.h.h.h.h.k.z.h.h.h.g.h.h.z.k.D.k.k.z.z.g.h.g.g.z.g.g.g.g.f.k.f.f.a.a.z.a.a.f.a.a.a.z.a.a.u.a.u.a.a.a.i.a.a.f.a.k.a.s.a.a.s.s.g.a.f.k.i.k.f.f.f.f.j.k.f.k.k.f.k.f.f.f.f.f.f.z.j.g.z.g.k.k.g.k.g.f.d.k.f.f.f.k.k.k.f.f.h.g.g.h.k.k.h.h.h.h.h.S ! ! ZXZXDXAXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXGXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXGXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXFXZXZXBXQ.{ / Q [ ~./././././.^.(.(.(.(.(.(.(.[.^.(.(././././././././././././.~.~.~.~.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.P.P.P.L.L.L.L.U.U.L.L.S.S.L.L.L.L.D.H.D.H.A.G.G.S.A.A.A.A.A.A.A.A.H.x.PXPXAXPXCXHXZXAXVXZXAXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXDXFXFXFXFXFXFXFXFXVXBXaXM.c c h.A.h.h.h.h.h.A.A.A.A.A.A.A.h.h.H.H.S.G.A.P.H.H.D.L.L.L.L.U.L.U.L.L.U.L.L.L.L.L.L.L.L.L.L.L.U.L.L.U.L.L.L.L.L.L.L.A.L.H.L.H.L.L.L.L.L.L.U.L.U.L.U.P.U.L.P.L.L.U.U.U.K.L.Y.K.U.U.P.T.U.T.I.T.T.T.T.I.U.T.Y.T.T.U.Y.T.U.Y.P.Y.U.U.Y.L.P.L.L.U.U.U.U.T.T.U.T.T.T.~.Y.~.T.~.~.~.~.~.~./.(.(.^.(.(.`.^.|._.{._.'.}.}.}.}.}.}.}.}.}.}.}.|.", "D D Z D D L Z Z D D D D D D D D Z Z H H Z L H H H H H D H H Z D Z Z Z Z D D D D Z U Z Z Z Z Z Z G Z Z H Z Z H Z Z F Z Z Z Z Z Z Z Z Z C Z C D B Z Z C Z Z Z D Z Z C Z Z Z Z C Z Z Z C Z Z C Z C Z C A Z F Z Z Z Z Z H Z Z J Z H H H L H H H H H H H H H P H Z J H H L K L J L J J J H P J J U P L J J J J L I J J H H P L H P J J J L J L L H L L L U [ d.Z.g.Z.g.Z.A.Z.g.Z.l.Z.l.l.A.g.Z.g.A.A.A.A.g.A.g.A.l.A.g.l.D.A.z.Z.A.A.A.h.A.A.l.A.G.G.G.A.A.A.G.S.H.H.H.H.H.L.L.L.H.H.H.S.A.H.A.H.A.G.H.A.H.Z.H.S.H.H.H.H.H.L.L.H.Y.L.U.U.L.U.K.J.U.Y.L.U.L.L.P.L.U.H.H.L.L.H.S.H.H.H.H.H.H.Z.A.S.A.H.A.A.S.h.S.l.A.S.A.G.A.G.A.G.h.S.S.h.S.H.S.A.S.g.A.A.G.A.A.A.h.A.h.A.h.A.z.Z.l.l.h.h.A.h.A.h.A.h.g.A.A.A.h.A.A.h.A.j.A.h.A.h.A.h.A.A.A.h.A.h.A.h.h.z.g.A.j.h.G.h.l.l.l.h.h.h.h.h.h.h.h.h.l.h.h.h.k.h.h.h.l.l.l.h.l.l.l.h.h.h.h.k.h.h.h.h.h.h.h.l.l.h.h.z.A.k.k.Z.g.g.z.g.g.D.g.g.g.g.g.g.z.k.f.k.z.i.a.k.f.f.a.a.a.a.z.a.a.a.a.a.a.a.a.a.a.k.a.k.f.g.f.s.f.d.i.g.k.i.f.f.f.k.f.f.k.k.f.f.f.d.f.f.f.f.f.k.a.z.a.a.k.k.g.k.k.k.k.z.f.k.f.f.k.k.k.k.h.f.h.g.h.h.h.h.A.A.A.A./ / S CXZXFXVXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXZXBXm.[ / ! c./././.(.(./.(.(.(.(.(.(./.^.{.).(.(.^././././.(././.~.~.~.[.~.~.^.~.T.T.T.~.T.T.T.T.T.T.T.T.T.T.Y.T.P.T.P.K.L.L.L.D.L.L.L.L.L.P.L.G.H.D.H.G.H.L.A.S.S.A.A.A.A.A.A.A.A.g.z.GXIXFXGXDXDXAXGXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXCXCXhXM.n n h.h.h.A.A.A.A.j.A.A.A.A.A.G.S.H.H.A.S.G.H.D.H.H.H.L.S.H.L.L.U.L.L.L.L.L.L.L.L.U.L.S.S.L.L.P.L.P.L.L.P.L.D.L.L.L.L.L.L.L.L.L.H.S.L.L.L.L.L.L.L.L.L.P.P.L.L.P.L.L.A.L.P.L.L.L.U.U.P.T.U.T.U.T.U.U.T.U.U.Y.U.Y.Y.U.I.I.U.Y.P.Y.L.U.L.U.U.U.L.U.L.U.Y.U.U.T.T.T.T.T.T.T.~.T.~.~.~.~.^.^.~.(.(.(.^.`.`.(.|.|.|._. X}.}. X}.}.}.}.}.}.}.^.", "G H D H D Z F L H H H H D H D D H H Z H L Z D H H H D H D D G D Z H Z D D D D D L Z G L Z Z Z Z H H Z Z Z H Z Z D Z D Z Z D D D C D Z Z B Z F C Z Z Z C Z D D D Z Z Z Z Z Z Z C Z Z C C C C C Z C F C Z Z Z Z Z Z H F Z H K Z L H J H H H H Z Z H H H H J H H J H H L H H H I H H P H I L L J L J L J L L J L J P L P L L H P J L L L H L L L L L L Y d.Z.Z.g.Z.A.Z.g.A.Z.A.Z.l.Z.g.l.l.A.A.A.l.A.g.A.g.A.g.A.g.A.l.A.A.z.l.A.l.A.A.h.A.A.A.A.D.A.A.A.G.S.S.H.H.H.H.H.H.Z.H.H.H.Z.H.A.A.H.S.S.A.A.S.A.S.H.G.Z.S.H.L.H.H.H.L.L.L.U.U.L.H.K.L.L.L.U.L.U.L.L.L.H.L.L.D.J.H.H.J.S.H.H.H.S.G.H.A.S.A.A.A.A.A.A.S.A.A.A.A.A.A.h.G.A.G.S.A.G.h.Z.A.h.S.A.A.A.A.A.A.h.A.A.A.h.h.h.h.h.h.h.l.h.h.h.A.h.A.l.G.g.G.h.A.h.W.h.h.G.j.h.h.A.Z.A.A.h.h.h.A.A.h.G.h.h.J.G.h.z.G.h.h.h.h.h.A.z.l.h.l.l.l.h.l.h.h.h.h.h.l.h.l.l.D.l.l.l.l.h.l.l.l.l.l.h.h.l.h.h.l.l.l.g.g.A.k.k.k.z.A.g.k.z.g.g.g.g.g.g.g.f.g.f.z.a.f.a.a.i.k.a.a.z.a.z.a.a.a.a.a.a.a.a.s.a.a.f.f.s.g.s.g.g.i.g.f.f.d.f.f.f.f.f.z.f.k.f.f.a.f.f.f.f.f.g.a.g.a.z.g.g.g.k.h.k.k.f.k.k.k.f.k.h.f.z.k.f.h.k.l.h.h.h.h.l.A.h.A./ ~ ! CXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXDXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXZXMXaX} Q Q c././././.(.^.^.{.^.(.(.[.(.^.(.(.E.^.(.(.(.(././././././././.~.~.T.~.T.T.T.T.T.~.T.T.T.T.T.T.T.T.T.Y.T.P.P.P.L.L.L.L.L.L.S.L.L.S.D.G.H.H.H.H.S.H.S.S.A.A.A.A.h.S.z.A.A.A.l.GXIXGXGXGXAXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXVXVXCXBXaXM.{ c g.h.g.g.h.h.A.A.A.A.A.A.A.A.A.S.A.A.S.S.S.H.H.H.A.U.L.L.L.L.S.U.U.L.L.S.U.L.L.L.L.L.L.L.U.L.Y.U.L.P.S.L.D.L.S.L.L.L.L.S.U.S.L.H.L.L.L.L.L.L.U.U.L.L.L.L.L.L.L.L.U.P.S.L.P.L.L.U.U.P.U.U.U.U.U.U.U.U.L.U.U.L.U.P.U.U.Y.U.T.U.U.U.L.U.Y.L.L.U.L.Y.U.U.U.T.T.T.T.T.~.T.T.~.T././.~.^.~.(.(.(.(.|.(.`.|.}.}.}.}.}.}. X|.|._.|.|.|.|._._.", "H H H D H D H H D H F H H H H H H Z H H H H H H H H H H H D D D H Z Z D D D D D Z Z Z Z Z H L Z Z Z G Z Z G Z Z Z D Z Z F D Z Z D D Z B Z Z Z Z Z Z D Z Z D D D G Z Z Z Z Z Z Z F B C Z C Z Z C C C Z C Z Z Z D H D D H J Z L Z K H J H H H J J F H H H H H H H P H H I J H H I K J J L J J L J P J J J J L P L H P J H P F L H L L L L L L H H H J T b.b.A.Z.A.g.Z.Z.h.Z.l.h.h.l.Z.Z.A.l.g.Z.g.Z.A.A.g.l.Z.A.g.l.l.k.A.Z.l.A.z.z.A.A.A.h.A.A.l.S.G.A.H.G.G.S.S.H.S.H.H.L.H.H.H.G.S.G.A.A.A.A.G.S.A.A.H.A.H.G.G.S.D.D.L.H.L.L.L.H.L.H.U.L.H.L.L.L.H.L.L.U.H.H.L.H.J.D.L.H.D.H.S.H.H.H.S.A.G.A.A.A.A.A.l.A.l.D.A.A.A.A.A.A.h.l.H.h.G.A.S.G.h.A.S.A.A.A.W.A.h.Z.A.Z.g.h.h.A.h.l.A.l.l.h.A.A.h.Z.h.l.l.g.l.z.l.h.h.A.h.j.G.A.A.h.A.A.j.A.h.A.h.h.h.z.h.h.z.h.h.G.j.h.Z.h.A.A.A.h.l.l.l.l.h.h.g.l.h.z.h.h.l.l.l.h.z.A.A.l.h.l.A.g.A.l.l.h.h.h.l.h.h.z.l.A.z.k.k.k.k.k.g.g.l.g.k.g.g.g.f.g.g.f.g.h.f.k.k.z.z.f.f.z.k.a.k.a.a.a.a.a.a.a.a.a.z.z.f.a.f.a.a.g.a.a.i.s.a.i.f.f.f.f.f.k.f.f.k.f.f.k.f.f.f.f.f.a.g.f.g.a.i.k.a.k.k.k.g.g.f.f.f.f.f.k.h.h.f.k.h.l.h.l.l.h.z.A.h.A.A.H / ! CXDXAXAXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXSXGXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXVXZXZXBXm.[ Q Q [ /./././././.(.(.(.(.(.(.(.(.(.(.^.{.{.~./.(.(.(./././././.~./.~./.~.~./.~.~.T.T.T.[.T.T.T.T.T.T.Y.T.P.P.P.P.U.P.L.L.L.U.L.L.S.S.G.L.H.A.G.H.S.L.S.S.S.S.A.A.S.A.A.A.A.A.l.IXGXGXGXAXZXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXGXVXCXaXM.c c g.h.h.S.h.Z.j.A.A.A.h.h.A.A.A.h.H.G.S.S.S.G.H.H.H.H.H.H.L.S.S.L.S.U.L.L.S.L.U.S.L.L.S.L.D.L.L.L.P.L.U.L.L.L.L.L.S.L.L.L.L.L.L.L.L.H.L.L.L.G.L.H.L.P.L.P.L.L.L.L.L.L.P.P.P.P.U.U.U.L.K.L.U.U.U.I.U.I.U.L.U.U.P.U.U.U.T.U.Y.P.Y.L.Y.U.U.U.Y.U.L.U.I.I.U.T.T.T.T.T.T.T.T.~.~.~.~./.[.E.(.(.(.(.(.^.^.`.}.}.}.}.|.}. X|.|.|.|._.|._.|._.", "Z H D H H H H H H H H H H H D H H H H H H H H H H H H H Z H D D L D Z L Z Z D U Z G G Z G Z G Z Z H Z Z Z Z D D G Z Z G D Z H D D C Z D Z Z Z F Z Z D Z Z Z Z G Z Z Z Z Z Z D B C Z Z C Z Z C D Z C Z Z Z Z F Z D D D D D H H H Z L H H J J L G H J H H J J H J H L L L H I H L U L P H L P J L L L J P L P P H H L J L P J J L L H L H L J H H H H [ e.g.Z.Z.g.Z.h.Z.g.z.h.Z.h.Z.A.h.l.Z.g.A.l.k.A.g.A.l.g.A.l.l.z.l.A.z.k.l.A.A.A.A.G.S.A.A.A.A.A.G.A.Z.G.S.W.H.S.S.H.H.S.H.S.G.S.H.S.A.A.S.A.A.S.A.A.A.A.S.A.H.H.H.H.H.L.L.L.L.L.H.L.D.L.H.L.H.H.H.H.H.U.L.H.L.H.H.D.H.G.H.H.G.A.Z.G.A.H.A.A.A.A.A.A.A.h.l.A.h.A.A.A.A.W.h.h.S.G.S.h.A.G.S.G.A.A.A.A.h.A.h.G.h.A.A.h.h.h.l.l.h.h.h.l.g.Z.j.h.l.l.h.g.A.h.A.j.j.A.A.Z.A.h.A.h.A.A.A.h.h.A.h.h.z.h.h.h.z.A.j.z.A.h.A.h.A.h.l.l.h.z.l.l.A.h.h.h.k.l.h.l.l.l.l.l.h.A.h.A.A.A.l.l.l.g.l.g.l.l.z.h.g.k.g.g.l.A.k.A.k.g.g.z.g.g.g.D.h.h.g.f.z.j.f.f.f.z.a.k.k.a.k.k.a.z.a.z.k.a.k.a.a.a.a.z.a.a.a.f.a.i.s.s.i.f.d.k.k.i.f.f.k.k.k.g.k.f.f.f.k.a.f.f.i.a.g.i.a.g.d.d.k.g.k.k.g.k.k.k.k.g.g.g.h.k.h.h.h.h.l.l.A.l.A.D.A.h.A.A.S ! ! CXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXGXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXGXSXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXDXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXZXBXm.[ Q Q m././.!.(.(.(.(.(.(.(.(.{.(.(.(.{.(.^.^.^.(././.(.(.(.^.(././.~./.~.~.T./.T.~.T.T.[.T.T.T.T.T.T.T.T.Y.P.T.P.P.P.U.L.L.L.S.L.L.L.L.H.H.H.D.H.H.H.D.G.G.S.S.G.S.A.z.A.S.z.D.x.PXIXGXAXSXFXFXFXAXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXVXBXhXM.n n h.z.S.z.h.A.h.A.h.Z.A.A.A.G.A.A.A.A.S.S.S.S.G.H.H.H.H.H.H.H.S.S.L.S.H.H.S.L.S.U.G.G.L.L.S.L.S.L.L.P.L.L.L.L.L.L.L.L.L.L.L.L.H.L.L.L.L.U.L.L.L.S.L.L.L.L.L.L.L.L.L.L.L.L.P.P.U.L.I.L.L.L.U.L.U.U.U.U.L.I.U.L.U.L.P.T.T.U.U.T.Y.U.U.L.L.L.U.U.U.L.T.T.T.U.T.T.T.T.T.T.T.~.~.~.T.~./.(./.(.(.(.(.(.|.`.}.}. X|.|.}.|. X|.|.`.|.|.`._.`.", "H H H H F J H H H H H H H H H H H L H H H L U H H H H H H H D H Z H Z P L L D D P Z Z L Z Z Z Z Z Z Z H D Z D D D Z D D D Z D D D F C F F Z Z Z F Z Z Z Z D F Z Z Z G Z Z D Z Z Z Z C C Z C Z C Z D C Z Z Z Z Z D Z D D H H H H Z J H H H F H L H J H J H H H H P L L L L L P P L P J P J L P L P J P J L J J J J P J L J L L P H L H L L H H H H L T [ Z.Z.l.Z.Z.A.l.Z.A.h.l.h.h.h.h.Z.A.g.A.A.g.A.A.g.g.A.g.A.g.Z.l.g.A.A.l.Z.A.l.A.h.A.l.A.A.A.h.A.S.S.G.S.S.H.F.H.H.H.H.H.H.H.A.A.A.S.G.A.l.A.A.S.G.H.A.A.G.Z.S.D.Z.L.H.H.H.H.H.L.H.H.H.L.H.J.H.K.H.H.H.H.H.H.H.G.H.G.H.H.S.A.G.G.S.A.A.A.A.A.A.l.A.l.A.A.l.A.A.h.A.h.A.h.A.h.h.h.S.A.h.A.j.A.A.h.h.A.A.h.h.l.h.h.h.A.h.h.h.h.h.h.h.g.h.A.h.l.l.l.G.h.h.h.h.h.G.h.j.A.h.A.h.Z.h.A.A.A.h.A.h.G.h.h.G.z.h.h.h.h.A.h.A.A.A.G.l.G.l.l.G.h.h.A.h.l.l.h.l.l.l.l.l.l.A.D.z.A.h.A.l.l.G.g.G.l.l.h.h.k.l.g.g.k.g.k.g.g.g.z.g.g.g.g.z.j.g.g.g.f.j.f.f.f.z.f.f.k.k.a.k.k.a.a.k.a.k.a.a.a.a.a.a.a.f.f.d.g.f.a.g.g.i.k.i.f.k.f.k.f.f.g.f.f.f.f.f.g.z.f.f.f.f.a.k.f.k.k.k.g.d.a.f.d.k.g.g.f.g.f.k.f.h.h.k.h.h.h.l.l.A.h.A.A.A.h.h./ / ! CXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXDXDXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXFXZXFXBXm.} Q ^ [ !./././.(.(.(._.{.{.(._.(.{.(.(.(.{.^./.(./.(.(.(.(.^.(.~.[././.~.~./.~.T.~.[.T.T.T.T.T.T.T.T.T.T.P.T.P.P.P.P.P.U.L.L.U.S.L.Z.S.H.G.H.H.H.H.D.G.G.G.G.S.S.G.S.S.A.A.D.z.k.GXIXGXPXFXAXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXSXCXaXM.{ c S.l.g.A.A.j.A.h.A.h.A.A.A.A.A.A.G.A.S.S.G.S.S.S.S.H.H.H.H.H.S.L.S.H.G.H.S.L.H.H.S.U.L.L.L.Z.H.L.S.U.U.U.L.G.S.L.L.L.S.L.L.L.L.L.L.H.D.L.G.L.L.L.L.L.L.L.L.L.L.S.L.L.L.P.P.P.U.U.U.U.U.U.U.U.L.K.U.U.Y.P.U.L.L.Y.P.P.P.P.T.P.L.L.U.U.L.L.L.U.U.Y.T.U.U.T.T.T.T.T.T.Y.~.T.T./././././.(.(.^.{.|.(.`.(.}.}.}.|.}.}. X}.|.|.'.|.`.|.|.`.", "H H H H L H H P L H Z L P H H J L H H D L J H L H H H F A H H F Z L H Z J P Z H D D H D D D D Z D Z D D G C Z G Z Z D G Z D D Z Z Z Z H Z Z Z Z Z Z D Z Z Z L G Z Z L C Z Z C Z C F Z Z Z C C Z F Z Z D Z Z Z Z D H H F H H H H H H H L H H H D Z L Z L L L L L H H J H J H P P P J P P P P J L P J L P L P J P L J J P H L L H L L L H L H L L L L [ Z.g.Z.Z.Z.A.A.Z.h.A.Z.g.h.l.A.Z.l.l.l.h.g.A.g.A.g.h.l.g.A.g.A.g.A.A.g.l.h.l.A.h.S.A.A.A.A.A.A.A.H.A.H.S.H.H.H.H.H.H.H.H.H.S.G.Z.G.G.G.S.A.G.Z.G.A.A.A.A.Z.G.G.W.S.H.H.K.H.H.U.H.I.H.H.U.H.H.H.H.H.H.J.H.H.H.H.H.H.J.S.S.H.A.H.A.G.S.A.l.G.l.l.l.l.h.A.h.l.A.A.A.h.h.A.A.h.g.Z.A.S.A.A.h.A.D.A.A.h.h.A.l.g.l.h.h.h.l.g.h.h.h.h.h.z.h.l.l.l.h.l.l.l.l.l.l.l.A.A.A.A.A.A.A.A.h.A.Z.A.h.h.h.h.h.h.h.G.l.A.l.l.l.A.A.A.A.h.A.A.A.A.A.j.A.h.h.h.l.l.h.h.A.h.h.h.h.Z.h.h.A.A.h.Z.D.h.h.h.l.l.g.z.h.g.j.g.g.g.k.h.g.g.k.g.g.z.k.g.k.k.k.k.g.g.f.g.d.k.f.f.k.k.f.f.d.f.i.f.i.k.i.d.a.a.x.a.a.d.d.x.d.d.a.k.d.d.z.d.k.d.k.k.k.k.d.k.f.f.f.f.f.f.f.f.f.d.g.a.a.d.f.f.z.a.f.f.f.f.a.g.l.f.f.h.j.h.h.h.h.l.l.A.A.h.Z.j.A.A.z.S.~ ! ! CXZXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXDXAXAXDXAXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXAXFXFXZXZXMXQ.} Q ^ [ (.(././.(.(.(.(.`.(.(.(.(.`.(.(.(.(.(./.(.(.{.[.^.(.(.[.(./././././.~.~.!.~.T.!.T.~.T.T./.T.T.T.P.T.U.T.U.T.Y.U.P.P.L.L.U.H.H.G.G.D.G.H.G.G.G.G.H.H.H.H.S.S.S.A.G.h.G.Z.A.SXPXIXGXGXDXZXFXFXZXDXZXZXHXFXVXVXAXFXVXHXZXVXVXZXHXFXVXVXFXFXVXVXCXHXSXJXhXsXc x k.A.h.A.A.A.z.h.A.h.g.A.h.A.A.A.H.G.H.G.S.S.H.A.G.H.G.H.H.H.S.S.A.S.D.H.H.S.L.S.H.H.S.H.G.L.H.L.L.K.G.D.L.G.L.L.H.L.L.L.H.L.H.L.H.S.L.L.L.L.U.L.L.L.L.L.L.U.L.L.U.L.L.L.L.P.P.P.L.P.P.U.U.L.L.U.L.L.L.Y.U.L.L.L.U.Y.P.P.P.P.P.P.U.L.U.L.P.P.U.T.T.U.T.T.Y.T.T.Y.T.T.R.~.!.~.!./././.(./.|.(.{._.|._.[.|._.'.|. X|.|.|.|.|.|.|.|._.`.", "H H H P H H H H H H L H H H H H L J J L L J Z J H J H H J H H H L Z Z H L Z Z H Z S Z D D Z Z D Z D Z Z Z Z Z Z Z G D D Z Z Z D G Z Z Z H Z Z L Z Z Z D Z G Z Z Z L Z L C G Z Z Z Z Z C Z Z Z D Z Z C Z Z Z Z Z D Z H H F Z H Z H D L L H H J H S J J J L H L L H H H J H P J U P P P L J J P P P J P L J J L J L J J H P H L H L L L H H L L Z Z T T T [ Z.g.S.Z.g.A.h.h.A.h.Z.l.g.g.g.Z.l.g.Z.g.A.g.l.l.g.g.g.g.k.g.g.g.A.l.A.l.A.l.A.A.A.A.A.A.G.A.A.G.G.Z.S.S.A.H.W.S.H.S.S.G.A.A.A.G.h.A.G.A.h.A.G.S.G.S.S.A.S.S.S.W.H.L.H.G.H.H.S.H.H.J.G.H.G.W.H.H.H.H.H.J.S.H.H.D.S.H.S.S.A.H.A.H.l.A.A.A.G.z.l.A.l.A.A.l.G.h.A.A.h.A.h.G.g.S.h.A.S.A.A.A.h.A.A.A.g.A.z.h.h.h.h.Z.z.h.k.h.k.h.l.l.l.h.l.l.l.h.l.l.h.l.A.h.h.z.A.h.A.A.A.A.A.h.A.A.A.h.Z.h.h.h.h.l.A.h.A.z.A.A.h.A.G.A.A.A.A.A.A.A.A.A.h.l.h.h.h.h.A.h.h.A.A.A.A.A.A.A.h.g.z.S.h.h.h.z.h.h.h.k.g.g.g.k.g.g.k.k.k.g.d.k.k.k.k.k.k.k.d.g.k.k.f.f.f.f.f.f.f.d.f.f.f.k.a.a.a.d.a.i.d.a.a.d.i.i.d.a.a.d.x.d.a.k.k.a.k.k.k.k.a.i.f.d.f.f.j.k.k.a.f.f.a.g.g.a.d.f.f.f.g.f.g.g.g.k.h.f.f.a.g.l.h.h.l.l.h.A.A.h.A.A.A.A.A.! ! ! CXZXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXAXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXDXDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXAXFXAXZXDXBXm.{ / ^ c.(.!.(.(.(.(.(.(._.(.`.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(././.(././.~.(.~.~.~.!.~.~.T././.T.T.T.T.T.T.T.U.U.T.T.U.U.P.U.U.L.L.H.H.H.A.D.G.H.L.D.L.H.H.H.H.H.G.S.S.S.H.A.A.G.Z.GXGXFXGXHXAXAXAXFXCXHXFXFXVXFXCXHXAXAXFXFXZXHXZXVXFXFXVXZXVXZXZXVXCXHXZXBXpXM.{ c z.A.h.z.h.l.h.A.h.h.D.h.A.A.A.A.S.D.A.S.S.S.G.H.G.G.H.H.S.S.S.A.H.H.S.H.H.H.H.H.H.H.L.D.L.L.L.L.H.U.L.L.L.L.D.L.L.L.L.H.L.L.L.L.H.K.L.L.L.H.S.L.L.L.K.Y.L.U.U.L.L.L.L.L.L.L.P.P.U.P.P.T.L.U.U.L.L.U.L.K.L.U.U.L.U.L.P.U.P.P.P.P.L.U.L.P.L.P.U.U.U.T.T.T.T.T.T.T.!.T.R.~.~.~./././.(./.(.^.(._.^.`._.|._.|._.}. X|.|.|.|..X|.|.|.|._.", "H H H H U P P H L J H U H H J K L L J L Z J Z H L H U H H H H H L Z Z L Z H L Z H D D D D D Z Z D Z Z Z Z Z Z Z Z D D Z D D Z G D D D D Z G Z Z L Z D G Z Z Z Z L Z Z Z Z Z Z Z C Z Z C Z Z Z B C Z Z Z Z Z Z H H Z Z G H H H H L H H L P P H P P L L Z H J L L J H J J L L H L P L P P P L P P P P J J L J P L L J L J L L J Z L L L P L L L L H T Z.b.Z.d.Z.Z.A.Z.l.Z.h.Z.h.A.l.Z.h.h.h.l.h.A.g.g.g.g.g.k.g.g.l.g.z.l.g.A.g.l.A.z.A.l.h.A.A.l.h.G.A.H.A.Z.H.A.H.A.H.S.S.A.Z.G.A.S.G.A.A.h.S.A.A.A.A.A.A.A.A.G.S.G.S.W.H.H.H.H.G.G.L.S.G.S.S.S.S.H.A.H.H.H.W.S.H.H.S.A.S.D.S.S.A.S.A.S.A.A.A.h.l.l.l.A.h.A.g.A.z.z.A.l.h.A.l.G.h.A.S.A.h.A.l.G.h.h.D.z.g.h.g.A.h.l.l.h.h.h.h.k.l.l.k.h.h.h.h.h.h.h.h.l.h.h.G.l.A.A.A.A.A.A.A.A.A.h.A.G.h.h.A.h.A.h.h.h.h.h.h.h.A.A.A.A.A.A.A.G.A.A.A.A.A.A.h.h.l.l.h.h.h.A.h.A.A.A.A.A.A.A.A.A.A.A.h.h.l.z.g.l.h.g.g.g.g.g.g.g.d.g.k.g.d.k.d.g.k.k.k.k.z.f.k.f.f.f.f.f.f.f.k.i.f.k.i.k.k.a.a.a.a.d.a.a.z.a.a.d.a.a.k.a.a.d.x.d.a.k.k.k.k.k.k.a.k.f.g.f.f.f.f.f.g.f.d.g.a.f.a.g.f.f.z.d.f.f.g.d.k.g.f.h.l.h.h.h.z.h.h.A.h.A.A.A.A.h.A.A.S / / ZXVXHXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXGXSXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXDXFXDXDXFXFXFXFXFXFXFXFXFXFXAXDXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXSXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXDXCXHXQ.[ ! ~ [ /./.(.(.(.`.(.(.(.(.(.`.(.(.(.^.(.(.(.{.(.(.(.(.(.(.(.(././././.[.~.~.!.!.~.~.!./.T./.T.~.T.T.T.T.P.T.U.U.T.T.U.P.P.U.L.L.H.H.H.G.G.D.S.D.G.H.H.H.H.H.G.S.S.S.S.A.H.A.G.G.GXGXGXGXHXFXDXVXCXHXHXZXZXAXAXHXHXVXHXFXZXZXHXHXCXFXAXHXHXZXCXFXCXCXHXgXfXm.M.c w a.G.h.h.h.l.h.h.A.h.A.A.h.A.A.h.S.A.S.S.H.A.A.S.H.A.A.H.S.S.A.S.H.A.S.S.S.H.H.H.S.H.D.S.H.G.H.L.H.H.G.L.G.L.L.H.L.H.L.L.L.L.S.L.H.L.L.L.L.L.L.L.L.L.L.L.U.L.U.A.L.L.L.L.L.L.U.L.U.P.U.L.U.L.L.U.U.P.U.L.L.L.L.I.L.Y.U.P.U.U.P.L.L.L.L.L.P.L.L.P.T.T.T.T.T.T.T.T.T.T.T.!.~.~././././.(.(.(._.^._._._.|.(.|.|.|.|.|.|.'.|.`.'.|.`.`.'.", "L L H P H H H H L L H H P H G J L L Z L L J L H L H H H H H H H H L L Z J H H H Z D D D D D D Z Z D Z D Z Z Z Z D D D Z D D Z Z Z D D D Z Z Z Z Z Z Z Z Z Z H H Z G Z Z Z Z Z C Z Z Z Z C Z Z Z Z D H Z Z H Z Z D H H H H H H H L H H P H H H P L H J L L L L L J J J P P P P J P J P P P J P P L P L L P J P L J J L P J P H J L L L Z H Z L Z H T b.Z.b.Z.j.Z.S.h.Z.z.A.l.l.h.g.A.h.g.h.g.g.g.A.g.g.g.g.A.h.g.g.g.g.g.g.d.h.h.h.h.l.l.h.A.A.A.A.A.A.h.S.G.G.A.H.S.S.A.W.G.G.Z.S.A.G.A.S.G.A.A.A.A.A.A.A.H.A.A.A.A.A.S.H.H.H.H.I.G.H.G.G.S.W.S.J.W.S.S.H.H.G.G.S.H.H.H.S.A.S.S.H.h.S.S.A.A.h.A.A.l.l.h.A.z.A.g.A.h.A.l.A.l.A.l.j.S.h.A.G.h.l.S.D.A.h.h.k.l.h.g.z.h.g.z.g.k.h.k.k.k.h.h.k.h.h.h.h.h.h.l.h.h.g.l.A.h.h.A.A.A.A.A.A.A.A.h.A.A.A.h.h.A.h.A.h.A.A.h.A.A.h.G.h.G.A.A.g.G.S.A.A.h.A.A.l.h.h.h.A.A.A.h.A.A.A.A.Z.h.h.A.D.h.A.A.h.g.z.l.h.g.g.g.g.a.z.a.k.d.d.d.z.d.d.g.d.k.k.z.k.k.f.k.f.k.f.f.f.f.f.f.f.d.i.d.i.k.a.a.a.a.a.a.a.a.x.i.a.a.z.a.z.d.d.d.d.d.d.k.d.k.k.a.k.d.i.f.f.i.i.k.f.f.a.g.a.g.d.g.f.f.f.a.f.f.g.g.f.g.h.k.z.l.l.h.l.h.h.h.A.h.A.A.A.A.A.A.! ! ! ZXCXZXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXGXFXFXFXFXGXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXVXFXZXDXDXBXpX} S ~ [ /.(./.(.(.(.(.(._.(.(.(.`.(.(.(.^.(.(.(.(.^.(.(.(.^.(./.(.(././.~.~.!.[.~.~.~.T.T./.T.~.T.~.T.T.Y.T.T.T.T.U.U.U.P.P.L.L.L.S.S.H.D.G.S.D.H.G.H.D.H.S.S.G.D.G.S.S.A.A.A.z.l.AXGXGXHXBXJXHXJXBXfXJXJXgXJXBXJXBXfXfXBXJXfXJXfXBXJXBXJXfXBXfXBXHXfXJXhXaX{ c x w g.f.h.h.h.h.h.h.h.h.h.h.A.A.A.z.A.A.A.A.A.S.h.S.A.G.S.S.A.A.A.A.h.A.z.S.S.G.G.H.H.H.H.H.H.H.H.H.H.H.L.G.L.G.H.L.L.L.L.H.L.H.L.H.L.H.L.L.S.H.L.L.L.L.U.L.L.L.L.L.L.L.U.S.L.L.U.L.P.P.U.U.U.L.Y.L.L.Y.P.U.Y.L.L.L.L.U.P.U.U.U.U.Y.L.L.L.L.L.P.P.U.Y.Y.T.U.T.T.T.T.T.T.T.~.~.~./././.(./.(.(.^.{._.(._._.{.{._.|.|.|.|.|.|._.@X|.@X`.`.", "H L L L H U P P L L H L H H G J L L H Z H L H J H J L H H H H H H H L Z Z L Z L H D Z D D Z D Z D B Z Z Z Z Z Z L Z Z Z D Z G Z Z Z G Z D Z Z Z Z D Z G H Z Z H G Z Z Z Z Z C H Z Z Z Z Z Z Z Z Z Z F Z D Z D F D L Z H H H H H H H P L P H H H L H L H L L J L P H P P J P J P L P P P P P P P P P U P P P P J P H J J H J J H L L L L G L H H H [ Z.Z.[ d.e.g.Z.g.d.b.l.g.h.h.A.z.h.Z.g.g.g.h.d.d.l.k.g.g.g.z.k.k.k.g.f.z.g.h.A.h.l.h.A.A.h.l.h.h.H.A.A.S.A.H.G.A.Z.G.A.A.Z.W.G.A.A.S.G.D.l.A.A.A.A.A.A.A.A.A.A.G.H.A.A.H.H.G.L.G.A.G.G.G.G.H.S.A.L.G.G.G.S.S.G.G.D.A.S.A.D.A.Z.A.A.A.D.z.A.k.G.l.l.A.A.z.h.A.g.z.h.G.A.l.A.A.G.S.h.A.l.A.l.h.g.h.g.h.g.h.h.h.f.h.z.f.h.h.k.k.h.h.h.h.g.h.h.g.z.f.h.l.z.h.g.g.h.A.A.A.h.A.A.A.A.A.A.A.G.h.z.n.J.h.A.h.h.A.h.G.A.A.A.A.A.A.A.G.A.A.H.A.A.A.A.A.l.l.A.l.A.h.A.A.A.A.A.A.A.A.A.A.z.A.h.h.h.h.z.h.h.h.k.k.z.k.k.g.z.z.k.z.d.d.k.f.k.k.k.a.k.k.k.k.z.f.f.f.f.f.f.f.z.i.a.g.g.k.i.a.i.a.a.a.a.a.a.a.a.a.k.a.k.a.d.z.z.i.k.i.d.k.k.f.f.f.f.f.f.k.i.f.g.f.f.i.g.g.a.a.a.f.f.f.g.g.a.a.g.f.z.g.h.g.h.h.h.l.l.h.h.A.A.A.A.A.A.A.~ ~ ! BXVXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXAXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXSXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXGXSXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXAXFXFXFXFXFXAXFXAXZXZXBXm.{ ! ^ [ /./.(.(.(.(.(.(.^.|.(./.(.(.`.(.(.^.(./.(.(.(.(.(.(.(./.^./././.~././.~.~.~.~.~.~.~./.~.~.~.~.T.T.T.P.T.T.T.T.T.P.U.U.L.L.H.H.G.S.D.H.H.H.G.H.A.S.S.L.A.H.A.G.S.H.z.A.A.G.CXBXaXaXm.M.V.pXm.M.m.M.pXpXM.M.pXpXM.M.m.M.pXM.pXM.pXpXM.pXpXM.m.M.M.M.c c - z t j.z.h.h.h.l.h.h.h.l.A.h.A.A.h.A.A.A.A.S.A.A.A.A.A.H.h.A.A.A.l.A.A.A.S.h.S.S.S.S.G.G.H.H.H.H.H.H.H.H.H.H.H.S.L.L.L.L.Y.H.L.L.S.U.K.H.Z.U.L.L.L.L.L.L.L.L.L.P.L.K.L.L.S.Y.L.U.L.L.L.L.U.U.U.P.Y.P.U.L.U.L.L.U.L.L.U.L.L.U.L.L.L.L.L.L.L.L.L.L.U.L.U.Y.U.U.T.T.T.T.T.T.~.T.(.T././././.(./.(.(.(._._._._._._.|.}.|.}.}.|.|.|.|.@X|.|.|.", "P H J J J J J H J L J H J H H J L J L J H L L H H H H H H J H Z L L Z L L Z L Z Z S D D D D Z D F G Z Z Z Z Z Z Z Z Z Z Z D Z Z D Z Z Z Z D Z Z D Z H Z G Z Z G H Z Z Z C G C Z Z Z Z Z Z Z D D D Z Z Z Z H D H H F H H H H H H H J H H H J P H P J L P J J P P P P P I P P L P P P P P U P P ( P L P P P L P L P L H J J J P L L L Z J J D L H G b.b.d.Z.Z.Z.Z.Z.Z.j.Z.Z.Z.Z.j.h.k.g.j.g.j.j.h.l.g.g.k.g.g.g.d.g.d.g.k.f.f.g.g.g.g.h.h.h.h.h.l.h.A.A.A.A.A.S.A.A.G.G.G.S.A.G.h.A.A.G.A.z.A.G.A.h.G.A.W.S.W.G.Z.A.A.A.H.H.A.J.S.A.J.S.H.S.A.S.G.G.H.G.G.A.S.G.W.S.A.S.D.A.S.S.A.A.A.A.A.A.A.A.A.z.l.l.l.l.h.h.A.A.A.A.h.A.l.l.A.h.h.A.h.l.A.A.h.g.g.h.g.l.g.z.h.h.h.h.g.k.k.h.f.k.h.f.k.h.h.g.g.h.l.h.h.l.h.G.l.A.A.h.A.A.A.A.A.A.A.A.A.A.h.z.A.A.h.A.h.h.A.A.A.A.A.A.h.A.A.A.A.S.h.h.S.A.A.A.h.S.z.l.A.h.h.A.A.A.h.A.A.A.A.A.h.h.A.h.h.h.h.f.l.k.h.h.k.f.f.f.f.i.d.i.i.d.k.d.i.d.k.a.k.k.k.d.z.f.f.f.f.f.d.k.i.f.a.a.i.i.i.a.a.d.a.d.a.a.a.a.a.a.k.a.a.d.x.a.k.i.k.i.f.i.z.k.i.d.f.i.d.i.f.f.f.f.f.a.g.a.a.d.g.z.f.g.a.a.z.z.g.g.f.g.g.g.g.g.h.h.l.l.l.j.A.A.A.Z.A.A.l.~ ~ / CXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXAXFXFXFXFXGXFXFXFXFXAXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXAXDXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXZXSXMXm.[ Q ^ c./././././.(.(.(.`./.|.{.(.`.(.(.(.(.|.|.|.|.(.(.(.(.(.(././././././.~.~.~.~.~.~.~.~.~./.~.T.~.~.^.P.T.T.T.T.U.U.P.Y.L.L.L.L.G.L.H.H.S.G.G.H.H.H.S.D.H.H.H.D.H.D.H.G.G.G.Z.JXaXpXM.n c n c n c c c c c c c c c c n b c c c c c c c c c c c n c _ x w z h t c j.z.d.k.h.l.h.h.l.l.A.h.A.h.A.g.A.A.h.S.A.A.A.A.A.A.S.h.A.A.A.G.A.J.S.G.S.A.S.S.S.H.H.G.H.D.H.H.h.H.H.H.H.H.S.L.L.H.H.H.L.H.U.H.S.H.S.L.L.L.L.L.U.L.P.P.L.L.L.L.L.L.H.L.L.L.I.L.I.U.U.U.P.U.L.T.P.U.L.Y.U.L.L.I.Y.L.U.U.L.L.L.L.L.L.L.L.P.P.U.Y.Y.L.U.T.T.T.Y.T.T.~.~.~.(./././././.(.(.(.(.(.(._._._._._.|.}.}.}.}.|.|.|.|.`..X|.|.", "J H J L J J H J H H J H H J F J L L L Z H J H H H H H H H Z L D L Z S Z H L Z H L D D D D F Z Z Z G Z Z Z Z Z D H Z Z Z D H H Z Z Z D D Z G Z G Z Z G Z Z H Z Z Z Z Z Z Z Z Z Z Z Z Z Z D Z D D Z D D D Z Z H H H Z H H H H P H H J J J H J L L J J J J J P J J P P J K P J P P P P P P P P L P P L ) P P P L P P L L J J P L L J L L H L H Z P U [ d.b.b.b.d.d.e.Z.Z.d.j.Z.j.j.d.b.e.j.d.j.j.d.d.g.g.g.f.d.f.d.d.k.d.k.k.f.g.g.g.g.h.z.g.g.g.l.h.l.z.h.A.A.A.S.A.A.G.Z.S.A.A.A.G.A.G.A.A.l.A.A.G.S.G.A.A.G.S.G.H.Z.S.S.S.S.A.S.S.A.H.S.S.G.S.A.H.H.S.Z.S.W.S.A.S.S.S.A.A.A.l.A.A.A.A.A.A.g.A.k.l.l.z.l.A.g.g.A.z.A.h.A.h.A.A.h.A.A.A.h.h.A.h.A.h.h.z.h.g.g.g.g.f.h.h.k.k.h.f.g.h.k.k.h.j.h.k.g.j.h.h.l.l.l.l.g.A.h.h.A.A.A.A.A.A.A.A.A.A.A.A.h.A.h.A.A.h.h.W.j.A.A.J.A.A.W.G.A.h.S.A.A.A.A.A.h.A.h.A.z.A.A.A.G.A.A.A.h.A.A.A.A.A.h.D.h.h.h.h.k.g.g.k.k.a.f.f.f.i.z.z.i.i.z.z.i.a.d.d.a.d.d.z.d.f.f.f.f.f.f.d.f.a.a.i.g.a.a.a.a.a.i.a.a.a.a.a.a.a.a.k.k.a.k.d.d.a.z.k.i.i.z.i.d.d.f.d.d.a.k.f.f.a.k.g.f.a.g.g.a.k.k.f.f.a.g.f.g.g.g.j.j.x.j.h.h.h.h.h.A.h.A.A.A.A.A.A.A.J ! ! CXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXZXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXGXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXDXFXFXDXAXDXAXAXDXSXDXFXFXFXFXDXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXAXFXFXFXGXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXZXFXFXBXpX} ~ S [ /./.(.(.(.(.(.(.^.(.(.|.^.`.(.`.|./.{.(.|./.(._._.(.(.(.(././.^.!.(.~.~.~./.!.[.~./.~./.[.T.~.~.~.T.~.T.T.Y.Y.P.Y.P.L.L.L.G.L.H.L.G.H.G.H.G.H.H.G.A.H.H.H.D.S.G.H.A.G.Z.A.].n.c.c f w n l w w l z - c z z w c z w l z t w l z w z w h w l w - z w w h u i Z.x.k.k.k.h.k.g.g.h.l.h.A.h.A.Z.h.A.A.A.A.h.A.A.A.A.A.A.A.A.A.A.A.A.A.S.A.A.S.S.S.S.G.S.S.A.S.S.H.H.H.S.S.H.H.S.L.S.L.H.K.H.H.Z.D.K.H.U.S.U.L.L.L.U.U.P.P.P.P.L.L.L.G.H.L.L.L.U.L.U.L.U.U.Y.U.U.T.L.T.L.U.U.L.L.L.K.J.L.L.L.G.L.L.H.L.L.P.P.P.L.L.U.L.Y.T.T.T.T.T.T.T.R././.!.!././.(.(.(.(.(.{.`._._._.|._._._.|.|.|.|.|.|.'.`.'.|.|.", "P P P P P J P J I J J J J J J H L J J J L H H H H H H H H H H H L Z L Z H Z H Z Z Z D Z Z Z D Z D D Z Z Z Z G B C G G D Z Z Z Z Z Z Z D Z Z D D D Z Z Z Z Z Z Z Z H Z G C Z Z Z F H A C D Z D A D Z D D Z H Z H Z Z H H H H H H L J J J P J H J J J J J P P J J P P I J H J P Y P P I U P P P P P P L P P J P P J P J J J J Z J H L H L Z L D U T Z.Z.Z.j.Z.Z.b.b.d.Z.e.Z.j.e.Z.d.Z.j.d.d.d.d.i.d.d.d.d.d.f.i.d.d.d.d.d.f.i.f.k.i.g.f.f.g.g.h.h.h.h.A.A.z.A.A.h.H.A.A.A.A.A.A.G.A.A.l.A.S.A.l.A.A.A.A.A.S.A.G.S.G.G.A.H.A.S.S.A.A.W.A.S.G.l.A.W.S.A.A.G.A.A.S.G.A.A.A.S.A.A.A.A.A.A.A.A.A.z.A.g.l.l.l.h.z.g.A.z.z.l.A.h.A.l.h.A.l.h.A.h.A.h.h.h.h.h.h.g.g.g.g.k.z.f.k.f.j.k.k.j.k.k.k.j.k.f.h.h.h.h.h.l.l.l.G.g.h.A.A.h.A.A.A.A.A.A.h.h.A.h.h.A.h.h.A.h.A.A.A.G.A.G.h.A.A.A.A.A.J.A.A.A.A.g.A.A.A.A.A.h.h.A.A.h.A.A.h.W.A.A.h.A.g.A.z.z.h.h.k.h.g.g.g.f.k.f.j.f.i.i.i.f.i.a.a.i.k.d.d.k.a.k.d.x.f.f.f.f.i.d.d.f.a.k.z.a.a.a.a.a.a.a.a.i.d.a.a.a.a.a.a.a.k.a.k.a.k.i.z.a.a.i.i.k.k.d.d.i.k.a.f.k.z.z.f.f.g.f.a.i.k.g.a.f.z.i.g.g.f.k.a.h.f.j.h.h.h.h.h.l.A.h.A.j.A.A.A.A.~ / ! ZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXSXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXFXFXBXm.[ ~ ! ] (.!./././.!.(.`.(.(.|.^.`.^.`.^.(.|.(.|.^.|.(._.[._.(././././.~.~.~.!./.~.^.~.~.~./.~.~.^.^.~.~.~.T.~.T.~.T.Y.Y.P.U.L.L.L.G.L.U.G.G.D.H.G.H.G.H.H.H.H.H.H.H.S.S.H.G.Z.D.k.A.n.c w z w w l w h w w z - w - z - w w u w w l - w z - n w z t z z w z u w ` e.z.g.j.k.h.l.k.h.g.l.l.A.h.h.A.h.A.A.A.A.A.A.A.A.A.A.A.A.A.h.A.A.A.A.A.A.h.G.A.A.S.S.A.S.S.S.S.H.H.h.H.H.S.S.S.H.H.H.H.S.U.H.H.S.L.H.H.L.L.L.L.L.L.U.L.P.P.L.U.L.L.L.L.L.L.S.L.U.U.L.U.T.U.U.Y.P.P.P.P.L.L.K.L.U.L.L.L.L.L.L.L.L.L.L.L.P.P.L.U.U.U.U.L.I.U.U.T.T.T.T.T.R.T.!././././././.(.(.(._._._._._.|.|._._._.|._.|.|.|.|.|.|.|.|.", "I P P P P J J P J J J J J L J H L L H L H H L L H H H H H Z Z L Z L Z L L Z L Z H Z Z Z H A D D Z Z H Z Z H Z Z Z Z L Z Z Z Z Z Z Z Z D D Z H D D D Z Z G C C Z Z Z Z Z Z Z Z D D D D D Z D Z D D D H D D H D H L Z H H H H H H P J P P H J P J U H H J J P P P P I I I U P I P P I P P P P P J P P L P P P P P P L P L L P J J L L L H L L H Z T b.Z.b.Z.Z.b.d.g.b.j.d.Z.e.j.Z.d.e.d.e.d.d.j.e.d.d.d.i.d.s.e.a.i.i.i.i.i.d.s.i.f.d.k.d.k.k.k.g.z.g.z.z.A.h.A.A.j.A.A.A.A.S.A.A.h.A.A.G.A.A.D.D.A.A.S.S.A.S.S.S.A.H.A.G.S.G.A.S.G.A.G.A.G.S.A.G.A.A.A.G.A.A.G.W.A.A.A.h.A.A.A.S.A.A.l.l.A.A.z.Z.l.l.A.g.l.l.h.l.z.A.l.l.A.l.D.z.l.S.A.l.l.l.l.l.h.z.g.g.f.h.g.k.k.k.f.k.g.k.k.k.k.g.k.g.g.a.g.g.z.h.h.l.l.l.A.h.A.h.h.G.A.G.A.A.A.A.A.A.Z.h.A.h.h.A.A.A.A.A.A.A.A.A.G.A.A.l.A.z.H.G.h.A.A.A.z.h.l.l.A.A.h.h.h.S.A.A.A.A.A.A.A.h.A.h.A.k.h.h.k.g.z.g.a.f.f.a.f.s.k.i.a.a.a.a.a.a.a.a.a.a.a.z.a.a.z.a.a.z.z.i.z.i.a.a.a.a.a.a.a.a.a.u.k.k.i.a.a.a.k.a.a.a.a.a.a.a.i.k.i.f.a.k.i.i.k.z.i.i.k.f.f.k.d.a.f.a.f.a.g.a.g.a.f.a.g.g.f.f.h.f.f.k.z.f.g.g.h.h.h.h.z.h.A.A.A.A.A.A./ ! / CXAXAXZXFXGXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXVXZXZXBXm.[ / S [ ~.~.[.E.^./.!.^.(._.(._._.`.(.`.`.`.(._.^.|._._.(.(.(./.(.^./././././.~.!.(.~./.~.~././.E.[.^.~.T.!.~.T.T.T.Y.I.U.U.L.L.L.L.S.S.L.G.G.L.D.L.G.D.D.H.H.G.G.D.G.H.G.G.A.A.A.A.A.A.A.A.A.A.A.A.h.A.A.l.A.l.l.l.h.z.D.g.k.k.d.d.k.d.i.i.k.z.k.k.f.k.g.g.g.g.g.g.g.g.h.k.h.h.g.Z.k.g.D.A.A.A.A.A.A.A.A.A.h.h.h.A.h.A.S.g.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.h.W.H.A.H.H.A.S.H.S.S.H.H.H.H.H.H.H.L.H.H.L.H.L.U.L.U.L.L.P.L.P.U.L.U.L.L.L.L.L.D.U.U.L.L.K.U.L.U.Y.T.U.U.L.U.Y.U.L.L.L.L.L.L.L.K.L.L.L.L.L.L.L.L.L.L.L.P.L.P.T.U.T.U.T.T.T.~./.~.~./././././.(.!.(.(.(.`.|._.}.}.}.}.|.{.|.|.`.`.|.|.|..X.X.X", "I I I I J P J P J J H J P K H J J Z L J H H H H H H G H H L H H L Z L Z L S Z Z Z Z Z Z D D D D Z G Z Z Z Z D G G Z Z Z Z Z Z L Z Z D D Z D Z Z D Z Z G Z D D Z Z Z Z Z Z Z Z Z C D B D Z D D D D D D D H D D H H Z U H I H H U J P H P J P P P P J I I P P I J J P I P I P P P P I P P P U U U U P L P L I Z P P L L L U L L H G L D H H D H U b.Z.Z.Z.Z.Z.j.Z.d.Z.b.Z.Z.g.j.j.d.Z.j.g.e.d.j.d.d.d.i.i.d.d.a.i.i.a.a.s.d.d.i.a.i.a.i.k.z.k.a.z.h.z.g.z.g.z.z.A.A.h.l.h.h.A.A.G.A.A.A.g.A.z.A.z.A.A.A.S.S.A.S.S.H.A.H.A.S.S.A.A.A.W.A.A.A.G.S.G.W.A.H.A.A.W.h.A.A.A.A.A.G.h.h.S.A.z.A.A.z.A.Z.d.A.l.l.l.g.A.A.l.A.l.A.h.l.l.l.l.S.l.l.l.l.l.h.A.g.g.h.g.g.f.f.k.k.f.f.k.g.g.g.k.k.k.k.g.g.z.h.g.l.l.h.h.l.h.h.h.h.A.G.g.A.h.A.A.A.A.A.h.h.h.A.h.A.A.h.j.A.A.h.A.A.A.A.A.G.A.A.H.h.S.S.A.A.h.A.A.h.A.h.A.A.A.A.G.A.h.A.A.A.A.A.h.A.h.h.h.h.h.h.g.k.f.z.f.g.a.a.f.k.i.z.a.a.d.a.z.a.a.a.a.d.a.a.a.a.z.a.a.a.i.k.k.a.k.a.a.a.a.a.a.i.k.i.u.a.u.a.a.a.a.a.k.k.k.a.k.k.i.k.i.a.a.i.k.i.i.i.z.i.f.a.k.f.g.f.f.f.f.g.f.g.a.f.f.a.k.k.f.f.f.z.f.g.g.g.f.h.h.h.h.h.h.A.A.G.A.A.h.S S / CXAXAXAXFXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXGXAXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXGXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXAXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXHXQ.{ ! ! [ ^.~.^.(.^./.(.{.(.(.(.(.(.{.^.^.(.(.(.|._.(.^.|.`.(./.(.!.~./.^./.~.~././.~.~././.~././.(.~.~.T.^.~.~.T.~.T.Y.T.U.Y.U.L.L.L.U.S.L.L.L.G.H.D.H.D.G.H.G.A.S.G.D.A.G.A.G.A.A.A.h.h.A.h.A.A.A.A.h.A.l.A.h.l.l.l.g.l.g.A.g.k.k.i.k.d.f.i.i.z.f.f.k.k.g.k.g.g.g.k.g.l.k.h.g.z.k.k.k.l.g.z.l.g.g.A.h.A.A.A.Z.A.A.h.A.h.g.A.l.A.h.A.A.h.A.A.G.A.G.A.G.A.G.A.A.A.S.A.A.S.H.S.S.G.H.S.H.H.H.H.H.H.H.K.H.L.L.S.L.S.L.L.P.L.L.U.L.L.U.L.U.S.K.L.K.S.L.L.U.U.Y.T.U.U.U.U.Y.T.I.I.U.Y.Y.L.L.L.L.S.L.L.L.K.L.L.U.U.P.P.P.L.Y.U.I.Y.Y.T.T.T.T.T.~.~.~./././././.(.(.(.^.(.(._._.}.}.|._.|.|.|.|.`.|.|.|.'.|.|..X", "I J P U P P P P P P J P L P J J J L H H H H H H H H Z L H Z H H Z S Z L L Z L Z D D L Z Z D H Z L H C Z Z Z D Z Z Z Z Z Z Z Z Z Z Z D F D Z Z D D G D C D Z D Z Z Z Z Z D Z G Z Z D G Z D Z D D D D D D D H H H H H H H H H H P J P H P H P P P I J P P J L P I I I P J P P P P P I I S S ) I S I L J P P P P P L P P J J H J J U L L P L H D U j.Z.Z.Z.d.b.b.d.d.b.f.j.Z.e.j.j.d.d.Z.d.d.j.d.d.d.d.e.i.i.s.s.i.i.e.i.s.s.s.s.a.f.d.f.i.f.z.a.A.g.g.z.z.h.h.g.h.z.A.A.l.A.h.A.l.A.h.A.G.z.D.l.A.G.A.A.A.A.W.G.A.S.A.H.H.G.S.S.A.A.A.G.A.A.W.A.A.A.A.A.A.A.G.A.Z.A.A.A.l.h.A.A.G.A.A.A.A.l.A.A.d.z.g.l.g.z.h.h.Z.l.z.l.A.A.l.S.l.z.A.h.l.h.l.z.h.h.g.h.f.j.f.g.k.f.k.k.f.k.k.k.k.k.k.g.g.k.g.a.l.g.g.h.h.l.l.S.z.h.A.h.A.A.A.A.A.h.A.h.Z.h.A.h.h.h.A.A.A.A.A.A.A.A.A.S.G.A.A.A.A.A.G.A.A.A.A.h.A.A.A.A.A.g.A.A.A.A.G.A.A.A.A.A.A.h.A.k.h.h.h.k.k.f.z.z.a.f.f.a.a.a.a.i.d.a.a.a.a.a.a.a.a.a.a.a.a.a.k.z.a.a.a.i.i.a.a.a.a.a.a.a.a.a.u.a.a.a.a.a.a.a.d.a.a.a.a.k.a.f.i.i.a.i.a.a.a.i.k.i.k.i.k.i.f.g.f.f.f.g.g.a.g.j.a.g.a.z.g.a.f.f.f.z.h.g.g.g.g.z.j.h.l.h.g.A.h.A.A.D.D./ Q ! ZXVXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXDXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXSXDXFXFXFXFXFXFXFXFXFXFXDXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXGXSXFXFXFXFXDXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXCXDXBXm.[ Q Q ` ~.~./././.(.(.(.(.(.(.(.|.(.`.^._.(.(.^.(.(._.(.^.(.(./.^././.~.~.^./.~././.~.^././././.[.(././.~.~.~.~.~.T.T.T.T.U.L.L.L.L.L.U.S.A.P.H.H.G.A.D.D.H.D.D.D.G.G.H.G.G.A.A.A.A.h.A.A.A.A.h.h.A.h.Z.A.h.g.h.l.l.z.h.g.g.l.k.f.f.i.i.f.f.f.d.f.f.k.k.k.h.g.k.g.k.k.k.g.g.g.g.k.D.l.d.h.l.g.D.A.A.A.A.A.A.A.h.A.G.g.A.G.g.z.g.A.A.h.A.A.H.g.A.A.A.A.A.A.A.A.A.H.S.J.S.S.S.G.S.A.H.H.H.H.H.H.H.H.L.G.K.L.L.L.L.S.U.L.U.U.U.L.L.U.L.H.U.L.L.L.L.L.Y.I.L.U.U.Y.U.U.U.U.T.U.U.U.L.U.L.U.L.L.L.L.L.L.U.L.L.L.P.U.P.P.P.U.U.T.T.T.T.T.T.~.~.T.~.~.~././.^.(.(.(.(.(.(._._._._.|.|._.|._.|.|.|.|..X.X|..X|..X", "P ) I S J P P H P L P L L L H J J H L H L H H H L L Z L H H H H ( L L Z Z Z Z Z D P Z Z D Z Z Z Z Z G Z H Z Z D H Z Z Z Z Z Z Z Z Z D Z Z G D Z Z C Z Z Z Z D B Z Z Z Z D Z Z Z C Z D H Z D D D D Z D H H H D H D H P H H J P H J J P P P P P L P P P P I P I P K I I I P ! P ) P P I I P I I P P J P P P P J P J L H J L H H L S K H F S H H U Z.e.j.Z.Z.Z.Z.Z.j.Z.d.Z.d.Z.j.j.b.j.d.d.j.d.j.d.d.d.i.i.d.d.d.d.d.d.i.d.i.e.a.a.f.u.i.f.a.a.f.f.f.g.g.l.z.h.j.h.h.h.z.l.h.h.Z.l.A.h.A.h.A.l.D.A.A.A.A.A.A.S.H.A.H.A.H.A.S.G.A.A.Z.A.A.G.A.A.h.A.A.A.G.h.W.A.A.A.A.A.A.A.G.l.h.h.h.l.l.l.A.z.A.l.h.l.l.l.h.z.k.h.A.l.l.l.l.S.l.A.h.h.h.l.h.h.g.z.g.g.g.z.f.f.f.f.k.f.g.k.k.k.k.k.k.k.k.g.g.z.l.h.z.h.h.h.h.l.h.h.A.h.W.g.A.A.A.A.A.A.h.h.A.h.h.Z.h.A.g.A.A.A.A.A.G.H.h.A.G.A.A.G.A.A.A.A.A.h.A.A.A.h.g.A.A.A.G.A.A.G.A.A.h.A.h.h.A.h.h.h.h.k.g.h.z.z.a.f.a.a.f.a.a.a.a.a.u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.z.a.a.a.a.a.a.a.a.a.i.a.a.u.a.a.a.a.a.a.a.k.a.a.a.d.i.k.a.a.k.a.a.a.f.a.i.k.f.f.k.f.a.g.k.f.k.a.f.a.f.f.d.g.a.g.g.f.f.f.f.f.g.k.g.h.h.h.h.l.h.G.A.A.A.A.h.g.~ ! S CXVXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXDXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXDXZXHXQ.{ Q ! [ ~.~./././././.(.(.|.{.(.^.(.`.(.(.(._.`.(.(.^.(.(.(.(./././.~./.~.~.T.[.~././.~././././././.(./.^./.~.~.T.~.~.T.U.T.T.L.L.U.L.S.L.L.P.D.D.H.H.G.A.H.G.G.D.H.S.S.G.A.G.l.A.A.A.A.h.A.h.A.A.h.h.G.l.A.D.l.l.h.h.h.g.g.g.k.f.f.f.k.k.f.f.f.f.k.f.f.d.h.g.g.g.k.l.k.z.l.g.z.z.d.A.D.h.g.g.k.A.l.l.A.A.j.h.A.j.l.h.h.g.g.A.S.h.A.A.h.z.A.A.h.h.A.A.A.A.G.A.G.A.A.h.H.S.S.H.S.H.H.H.H.H.H.H.S.S.L.H.H.L.S.P.S.L.L.L.L.U.L.U.L.L.L.Y.L.L.L.L.L.L.L.K.U.U.U.U.U.U.Y.I.U.U.U.U.U.U.L.U.U.K.L.L.U.L.U.Y.U.U.P.P.P.Y.U.T.U.T.T.T.T.T.T.T.~.~.~.~./././././.(.(.(.^.(._._._._._._.{.|.|.|.|.|.|..X|..X'..X.X", "I P ) P P P P P J P P L P H J H P H P L H H H H L Z L Z Z H H H Z G Z P Z L U Z D D Z H Z D D Z Z L Z Z D D D Z Z D Z Z Z Z Z Z Z Z Z Z Z G Z Z Z D Z Z Z Z C D Z Z Z Z Z Z Z Z D G Z D D D Z D D H H H H H H H U H H J J J J Y P P J J J P P P P P U P P P ( P I P I I I U J P I I I P P I ( U P L J L P S J J J L H J H H H H J Z G H J P P T b.Z.Z.Z.Z.Z.Z.Z.j.Z.Z.d.Z.e.b.g.f.g.e.g.g.d.d.d.d.s.s.d.i.d.s.d.d.s.s.p.i.i.i.i.p.a.a.a.a.i.k.z.h.a.h.f.g.z.g.l.z.h.h.h.h.h.l.l.A.h.A.l.A.z.l.A.h.A.A.W.W.Z.A.A.G.G.G.Z.A.A.G.A.A.A.A.A.A.A.A.A.A.A.l.A.G.h.A.A.l.D.h.A.A.A.A.A.A.l.h.h.h.l.l.l.z.A.h.h.A.h.z.A.A.l.l.l.h.h.h.A.h.A.z.h.z.h.g.z.g.f.g.g.d.f.f.k.f.f.f.z.f.k.z.h.g.z.g.k.k.g.h.k.l.z.l.h.l.h.h.z.g.G.A.A.A.G.A.A.A.A.h.A.h.h.A.h.h.A.A.A.A.A.A.A.G.g.A.G.h.H.A.A.A.A.A.A.A.A.h.A.A.A.H.g.A.A.G.A.A.A.A.A.A.z.l.A.l.l.l.h.k.k.g.g.z.a.f.a.a.a.a.a.a.a.i.i.i.a.a.i.E z.a.a.a.i.a.a.a.a.a.a.a.z.i.a.z.f.a.a.i.a.a.i.u.a.a.a.u.a.a.a.k.a.a.a.a.a.a.a.k.i.a.a.a.z.a.a.f.i.z.a.a.k.f.f.g.a.k.z.g.a.g.a.f.a.g.a.g.a.k.f.k.d.a.g.g.g.k.g.h.h.h.h.h.h.A.h.A.A.g.A.~ / ! CXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXAXGXSXDXDXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXAXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXZXBXm.} Q ^ [ ~.~.~.(./././.(.(.(.(.(.(.`.^.(.{.(.(.^.(.(.(.^.(.(.E.[.~.~.(./.^.~.~.~./.!.~.^././././.(./.!./././.~.~.[.~.T.T.T.T.U.U.U.U.P.L.L.D.S.L.H.L.S.S.D.G.H.G.S.D.G.S.A.G.G.A.A.A.A.h.A.h.h.A.h.A.h.h.l.g.A.k.h.h.h.h.g.g.g.f.k.f.f.f.f.f.f.f.f.k.f.g.h.h.f.z.g.l.k.z.g.g.k.k.g.g.k.k.h.h.h.h.h.A.l.h.A.A.g.A.A.h.h.h.l.l.z.A.j.G.h.A.Z.A.A.A.A.A.A.Z.A.A.A.A.A.A.G.A.G.S.G.G.D.S.S.H.H.H.H.H.S.K.H.L.L.S.L.L.L.L.L.U.L.U.L.I.L.U.L.L.L.P.L.L.L.L.J.K.L.Y.U.U.U.L.L.L.L.U.U.Y.L.L.U.L.U.U.U.U.U.Y.U.U.R.L.U.U.L.P.T.T.T.T.T.T.T.T.~.~.T.~.T.^./././.(.(.(.`.`.(._._.(.^.|._._.|.|. X|..X.X|..X.X|..X.X", "I I P I P P P P J P K P L J H U H H H H H H D H Z Z L L P H Z Z L Z Z L H Z S Z D D Z H D D D D G Z Z G Z Z D D Z D Z Z Z Z C Z Z Z Z Z Z Z Z Z Z B Z Z Z Z D Z Z Z Z Z G Z Z Z Z Z Z Z D D G D H D H Z H H H H H H J H J J J K J J L P P P P P P P P P P I P J I Y P I I ) ) I P U P I I P I L P U L P H J J U L L J H P H L G U L H H Z D G [ Z.Z.Z.Z.Z.Z.Z.d.Z.d.j.g.g.Z.j.j.j.j.j.j.j.d.j.d.j.d.d.d.d.d.d.i.d.i.d.s.s.i.s.i.d.s.d.a.i.k.a.i.a.z.a.z.g.a.g.g.z.h.j.z.h.h.l.l.A.l.l.A.A.D.D.A.A.A.A.h.h.G.A.H.G.Z.G.G.G.Z.A.G.A.S.S.A.G.A.J.h.A.G.A.G.h.G.A.A.l.h.S.A.A.A.A.h.l.G.A.A.l.h.l.A.z.g.h.h.g.z.j.h.h.z.l.A.l.A.G.A.l.h.l.h.z.j.g.h.f.k.f.f.g.f.f.d.f.f.f.j.k.k.g.k.g.g.k.k.g.k.h.g.h.l.h.h.l.h.h.S.A.h.h.A.j.A.A.A.A.h.A.h.h.h.Z.A.h.A.h.A.S.h.S.A.G.J.z.G.G.A.A.A.A.A.A.A.G.j.g.J.g.A.A.H.A.A.A.A.A.A.A.A.G.G.l.A.l.l.h.l.h.k.j.g.f.f.a.f.k.a.a.a.a.a.k.i.i.a.i.a.a.a.a.a.i.a.a.i.a.a.a.a.a.a.a.a.i.i.k.a.i.a.i.a.a.a.a.i.a.a.a.a.a.a.a.a.a.a.a.a.f.i.a.i.a.i.a.a.k.i.a.k.f.k.f.f.f.g.a.f.a.g.g.d.g.a.a.g.g.z.a.g.a.k.k.g.g.g.g.g.h.h.h.l.h.Z.h.A.A.A.H.z.~ ~ ~ CXAXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXDXDXAXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXZXDXHXHXQ.[ ! ^ [ ~.T.~.~././.^./.(.(.(.(.).{.(.(.(.(.[.`._.(.(.(.(.(.^.^.(.~.~.~.!.~./.~.~.(.[.~.~./.(.^./.(.(./.(./.~.~.~.T.~.T.T.T.Y.T.T.P.L.P.P.P.U.P.S.S.H.L.H.H.H.G.H.H.S.S.G.A.A.A.A.A.A.h.h.h.h.Z.h.A.A.A.D.A.A.z.h.g.h.z.g.g.g.g.a.f.f.f.k.f.f.f.f.f.f.g.k.h.h.f.g.k.Z.d.k.D.A.g.g.z.A.z.A.h.z.h.h.l.l.A.h.h.A.z.g.g.h.h.l.l.h.l.A.h.h.A.h.h.h.h.h.A.A.j.A.A.A.G.A.H.A.H.S.S.S.G.H.H.H.H.H.H.H.H.H.G.H.H.S.L.S.L.L.L.L.L.L.U.I.L.R.K.U.U.U.U.P.K.U.L.U.Y.U.L.Y.L.Y.L.Y.K.U.L.L.U.U.U.U.L.L.U.I.T.Y.U.U.U.I.T.U.U.P.P.T.U.T.T.T.T.~.~.T.T.^.~.~.E././.(./.(.^.^.(.(._._._.^.|.|.|.}._.|.|..X|. X.X.X.X.X.X", ") I ) P I I U I P P P L L J P H U P P H H Z H Z Z P S Z Z H H H Z Z Z Z Z Z Z Z D D D D D D Z D L P L Z Z G Z Z D Z Z Z Z Z Z D Z Z Z Z D Z Z Z Z C Z B D D Z D D Z Z Z Z Z Z Z Z Z Z G Z D D D H H H H H H D H H P H J J P P P P P P P P I P P P P P _ I I _ ) ~ K _ _ { M.c.m.M.m.pXpXaXpXhXaXpXgXaXpXpXhXQ.aXpXpXaXpXpXm.M.M.m.} M.[ ` ) _ [ Z.F.Z.Z.Z.d.Z.Z.Z.h.Z.Z.j.b.k.h.j.j.d.d.d.d.g.d.d.e.i.i.d.s.d.j.d.d.a.i.s.i.i.s.i.i.i.d.a.i.a.a.a.f.l.a.a.g.g.g.g.g.g.g.z.h.h.l.l.z.D.l.A.l.A.A.h.A.h.A.A.S.Z.A.S.S.S.h.Z.A.G.A.G.A.G.A.G.A.G.G.A.l.l.A.A.A.A.A.A.A.h.h.A.A.A.A.A.h.A.g.A.h.h.l.Z.k.z.z.j.h.A.z.l.A.l.l.l.G.h.l.l.h.l.z.f.h.k.j.z.k.k.k.k.f.k.k.k.f.j.f.z.a.k.k.z.z.g.k.z.g.g.h.l.k.h.h.l.A.l.l.h.A.h.h.Z.A.h.A.h.A.h.A.A.A.h.h.A.h.A.A.h.S.h.A.g.G.h.H.G.G.A.G.A.A.A.A.h.A.g.A.G.h.H.g.A.G.G.A.A.A.A.A.h.h.A.l.A.l.l.f.g.h.f.a.a.g.g.i.i.i.a.a.a.a.a.i.a.a.i.i.a.i.E a.a.a.i.i.a.a.a.a.i.a.i.i.i.a.a.a.f.i.i.i.a.i.u.z.a.a.a.a.a.a.a.a.a.a.a.d.i.k.i.i.a.i.a.k.i.k.i.a.a.a.k.f.a.g.a.g.f.f.f.f.i.g.f.d.a.g.f.a.g.a.f.f.g.g.h.g.g.h.h.h.h.h.h.A.A.A.h.S./ / S CXVXFXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXSXFXFXDXAXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXGXSXFXFXFXFXFXFXFXFXGXDXDXDXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXDXVXBXm.} Q Q [ ~.T.T.~.T.~././.(.!.(.(./.(.(.(.(.^.[.(.(.(.(.(.(.(.^././.~.~.~.~.~.!./.~./.~.~.~./.^./.(./.(./././././.~.~.~.T.T.T.T.T.U.U.L.L.P.P.L.A.L.S.H.H.G.D.H.S.H.H.H.S.G.A.A.G.A.l.A.A.A.A.h.h.A.h.h.A.A.A.h.l.h.h.h.z.g.g.g.f.k.f.k.k.f.k.k.f.g.g.g.f.h.f.f.f.g.g.k.k.g.A.k.g.z.k.k.d.g.l.h.h.l.l.l.l.S.g.S.k.h.h.l.l.l.l.h.h.g.A.h.h.h.h.A.A.h.A.A.A.A.A.A.A.A.A.A.G.S.S.S.S.H.H.Z.H.H.H.H.H.G.H.H.H.D.L.L.L.L.L.L.L.L.U.U.L.R.L.L.U.L.Y.U.L.L.L.L.L.L.L.U.L.U.L.L.U.L.R.L.U.Y.Y.U.Y.T.L.T.L.T.U.T.T.T.I.U.T.Y.T.U.T.T.T.T.~.T.~.T.~.T.~./.(./.(.(./.^.^.[.}._._._._.`.`._._. X|.|.|.|.'..X.X X.X.X.X", ") I P I I I I J P L J J J J H P H P H H P H L L P Z L L Z H Z H L L Z L Z Z ( Z Z Z D Z D D H Z G Z Z Z D Z G Z Z Z Z D Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z D B Z Z C D D Z Z Z Z Z Z Z Z Z Z D D D D H D H H H H H K H P H P P H P P J P P P P H U P P I I _ ' ` m.m.aXaXgXaXaXhXaXpXgXpXpXaXpXaXM.pXpXm.pXpXaXpXpXpXpXpXm.pXaXpXpXpXpXm.pXpXm.pXpX].m.Q.n.F.Z.Z.Z.d.b.h.j.j.Z.d.g.j.g.d.Z.j.j.d.j.d.f.a.j.d.f.d.d.i.a.a.a.i.i.i.i.i.i.i.a.a.a.a.g.a.f.a.a.a.l.a.a.z.d.g.g.g.g.h.h.h.A.l.l.A.l.A.z.z.A.A.h.A.G.h.G.G.A.Z.S.G.G.G.G.Z.A.G.l.S.G.h.A.A.W.G.A.G.A.A.h.H.A.A.S.A.h.A.h.A.h.A.A.h.h.z.h.h.g.z.g.A.z.h.h.z.h.l.A.l.h.h.z.J.l.A.l.z.h.g.z.h.g.d.k.k.g.f.f.k.d.f.z.k.g.z.k.k.g.k.g.k.g.g.z.g.l.l.l.h.l.l.l.A.h.h.h.h.h.h.A.A.Z.h.A.A.h.A.A.h.A.A.h.A.S.h.H.A.S.A.S.S.h.S.G.A.G.l.A.A.A.A.A.A.A.A.h.A.A.A.A.A.A.z.H.S.S.h.A.A.z.l.g.g.g.a.j.g.g.a.a.z.a.a.a.a.a.a.a.z.i.a.i.i.i.i.z.z.i.a.i.i.a.a.a.a.i.k.f.i.z.a.d.i.i.d.d.f.i.a.a.i.a.a.a.a.a.a.a.a.a.a.a.i.i.i.i.k.a.z.a.a.k.i.z.f.z.a.k.k.g.a.g.i.f.g.a.f.f.f.f.f.g.a.f.f.f.g.z.g.k.g.z.h.g.G.h.h.h.A.A.A.A.A.h.S.S ~ / CXHXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXGXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXFXFXFXFXFXFXFXFXSXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXDXZXBXm.[ Q Q ` T.~.T.~.(.!././.(././.(./.(.(.(.(.(.(.(.(./.^./.{./.^./.~.~./.~.~.~.~.~.~././.~.^././.(./.(./.(./././.(.^.~.T.~.T.T.T.T.U.Y.P.L.L.P.U.L.L.U.L.S.L.A.H.G.G.D.S.G.A.G.A.A.A.A.A.g.A.h.A.A.h.Z.G.j.l.l.A.h.h.k.h.f.g.g.k.f.g.k.k.k.f.k.f.f.f.f.k.k.f.h.f.h.g.g.k.l.g.k.l.g.g.A.g.A.z.k.k.h.l.l.l.l.A.h.l.h.h.g.z.l.g.l.h.h.h.g.A.h.j.A.l.h.A.h.A.h.A.A.h.A.A.A.A.A.S.S.S.S.S.S.H.H.H.H.G.H.H.H.H.H.L.U.H.H.L.L.L.K.U.L.K.U.I.L.R.L.U.L.Y.K.L.U.L.L.L.U.L.L.L.L.L.L.L.R.R.Y.Y.Y.Y.L.T.T.R.Y.U.T.U.T.T.T.T.I.T.U.T.U.T.T.T.T.~.T.T.T.~.^./././././.(.`.^.(.(._._._._.(.`.|._.|.|.|.|.'.|.|..X.X.X.X.X", "P ) I I P P ) P P P P Z I P P S H H H H H H H Z H D D H Z L Z Z H Z H L L L Z Z H H Z J Z H H Z Z L Z Z Z D Z Z Z Z Z Z Z Z B D Z C Z Z B D Z B F B D Z C Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z F D H H I H H P P H H J I J ) L ) ) J K P P I [ } m.aXgXgXgXaXpXgXaXaXpXpXM.aXm.M.M.pXm.pXm.M.m.m.m.pX{ m.M.M.m.M.{ M.m.c.M.pXm.M.m.M.M.pX} pXm.M.M.pXpXpXpXm.Q.L.F.b.Z.g.d.g.A.j.d.j.d.j.d.d.j.j.f.f.d.f.a.d.a.i.a.i.d.i.s.p.a.i.i.i.f.i.i.i.f.a.f.d.a.j.a.a.f.z.f.k.z.g.A.g.g.A.l.l.A.h.A.g.G.h.A.A.h.S.A.h.S.G.Z.A.Z.W.G.A.A.h.S.G.A.W.l.h.S.A.h.h.A.h.h.S.l.A.l.S.A.G.A.A.h.A.l.l.l.z.h.g.z.A.j.h.z.h.A.z.z.z.z.A.h.l.h.l.A.l.Z.z.h.k.g.h.j.f.k.k.g.f.f.k.k.a.a.f.f.a.g.g.g.g.z.j.g.k.z.z.l.l.h.l.l.g.z.l.h.A.h.h.A.l.A.h.l.A.l.A.A.l.A.A.l.A.A.h.A.A.A.A.A.A.A.G.A.G.A.g.G.G.A.A.A.A.S.h.A.A.A.G.A.S.A.A.A.A.A.A.A.A.A.A.h.l.l.k.h.k.k.f.f.f.k.i.d.a.a.a.a.a.a.i.u.a.i.i.i.u.i.a.a.a.i.i.a.a.a.a.a.a.k.a.a.a.a.a.a.a.a.a.i.i.a.a.a.a.a.a.a.a.a.a.a.a.E k.k.i.i.a.i.a.a.a.a.a.z.k.z.a.z.a.z.d.a.d.g.i.z.i.k.k.i.a.k.s.f.a.f.f.j.f.f.h.k.f.h.h.h.h.G.h.h.A.h.h.A.A.A.~ ! ^ CXVXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXDXDXHXQ.[ ~ ~ ] T.T.T.~.~.~././././././.[./.(./.(./.(.(.(.(.(.(././././.~.~.~.~.~.~.~./.(.~././././.(./.(.(.(.!././.(.~./.~.~.T.~.Y.T.T.Y.T.U.L.L.Y.L.P.P.L.L.L.S.H.S.S.S.S.G.S.H.A.A.h.A.A.A.h.h.A.A.A.A.h.A.g.A.l.l.l.h.k.h.k.k.h.g.g.f.g.k.k.g.k.f.g.d.z.d.k.z.k.g.k.g.g.g.z.d.D.g.f.z.g.k.S.l.z.f.l.f.h.l.l.g.l.l.h.h.h.h.g.h.h.h.h.h.h.h.h.h.l.h.l.l.D.g.A.A.A.g.A.A.G.A.g.A.S.A.S.S.S.S.S.G.S.G.D.D.G.H.H.L.L.D.L.H.L.U.L.L.L.U.U.U.U.L.U.L.U.Y.U.U.L.Y.L.L.L.L.L.L.U.L.U.P.P.P.T.T.U.P.P.U.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.~.~.T.~.~.~.!.(.T././.(.(.(.(.(.{.(.(.(._.(._._._._._.|.|.|.|.'..X|.|..X.X.X", ") ) I I ) P P P ) P P P P L P P P H P Z H H H H H H H D H H H H Z H Z S Z S Z L Z S Z Z H Z H H Z Z Z L D D Z D Z Z D Z Z Z C D Z Z F Z Z Z Z Z Z Z B Z Z Z Z Z Z Z Z Z Z Z Z Z L H Z H F Z L H H D H P Z Z J Z D P ) D H I U I J S ) ' M.aXgXgXgXhXgXaXpXaXaXaXpXpXm.m.pXpXM.M.m.M.M.{ { { { { ' { { } { { { { { { { { { { { ' { M.{ M.M.M.{ M.pXM.{ pXM.M.M.pXM.m.m.m.F.F.d.k.g.j.d.j.j.d.d.g.a.f.a.d.a.i.a.d.i.a.i.i.p.d.a.i.k.i.i.i.f.i.a.a.f.a.k.a.a.j.h.a.d.d.k.k.d.g.l.A.h.A.h.l.A.h.h.l.A.h.h.A.A.h.G.h.A.A.G.S.h.A.A.S.A.S.A.A.S.S.G.Z.A.G.J.z.W.h.S.h.l.l.S.A.h.A.h.A.z.A.A.h.A.A.h.A.z.h.h.z.g.h.l.l.A.h.l.h.l.A.l.h.l.h.h.h.h.z.g.g.g.g.z.d.f.k.k.d.z.f.f.f.h.f.g.f.j.a.z.z.j.g.h.h.l.l.l.l.G.z.G.g.h.A.z.A.A.h.h.A.h.A.h.l.D.h.h.A.h.A.A.A.h.A.A.H.A.g.A.H.G.G.H.A.G.S.A.A.A.l.S.G.A.S.A.G.A.S.W.g.A.A.A.A.A.A.h.A.l.h.h.k.h.f.f.f.i.i.k.a.a.a.a.a.a.a.a.z.i.i.i.i.i.i.a.i.i.i.a.a.u.a.a.a.a.a.a.a.u.a.i.a.a.i.a.i.i.a.i.a.x.a.a.a.a.a.a.a.a.a.d.d.i.i.a.a.a.a.z.a.a.a.i.i.a.a.a.a.a.g.g.s.z.i.z.i.a.d.z.a.k.f.f.f.f.f.g.g.k.h.h.g.h.h.h.g.h.A.A.h.A.A.h.A.~ Q ! CXAXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXDXDXDXBXpX} ~ ~ [ T.~.T.~.~.~./././././.(.^./.[.(.(./.(.(.^.[./.(./.(././.~.^.~.!.~.~.~./.~./././.(./././.(.!.(.(.(.(.~.(./.~.~.~.T.~.T.T.T.T.U.T.L.L.L.U.P.L.L.S.H.D.H.H.G.S.S.S.A.H.H.A.A.A.A.A.A.A.h.g.h.A.h.A.h.l.l.l.h.h.g.h.h.k.g.g.f.f.k.k.f.f.g.f.k.d.g.k.k.k.k.g.g.g.z.g.z.h.g.k.g.z.z.g.z.h.h.a.l.z.l.z.h.h.l.h.h.g.h.g.g.h.h.g.h.h.h.h.h.h.h.l.h.z.D.h.g.A.A.A.A.A.l.H.S.S.S.S.A.S.A.S.A.S.S.G.H.H.L.D.D.H.A.L.L.L.L.L.L.L.L.L.U.U.P.Y.Y.U.Y.U.L.U.L.U.U.L.L.U.L.L.L.L.P.P.P.P.P.U.P.P.T.T.T.T.T.(.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.~.~.~.(./.(.~.(.(.(.(.(.(.(._._._._._._._.|._.|.'.|.|. X.X.X.X.X", ") I ) P P P ) P P P P P P L P L P H H H H Z H D H H Z Z H Z Z H Z Z Z Z Z L Z Z S Z Z Z H Z H Z H Z Z Z D D Z D Z Z Z Z B Z D D Z Z Z D B Z C C B Z D Z Z Z C Z G V Z Z Z Z D Z Z Z H Z P Z Z H Z Y H D I I K H P H U P J ) S ' ' aXhXgXgXgXsXsXhXpXpXpXm.pXpXM.} { { ' ' ' ' ' / / ~ c S u S u u u u S u S u S H J S S u ^ / ! c ! ' ' ' ' { ' { { { M.{ M.M.M.sXM.pXM.pXm.m.n.F.Z.d.d.d.g.j.d.d.f.a.j.i.d.i.i.d.i.i.i.i.i.i.i.i.i.i.f.i.i.k.a.a.a.i.a.a.a.j.a.i.f.f.k.g.g.g.h.h.h.A.g.z.h.A.l.h.A.G.A.h.S.G.h.G.Z.A.h.S.H.A.G.A.S.G.Z.A.S.S.G.A.h.h.A.h.A.G.A.A.G.A.h.A.h.A.l.h.A.A.h.h.h.l.h.h.h.j.A.z.h.h.A.h.h.h.h.l.l.l.l.h.l.h.g.g.g.g.g.g.g.k.g.f.f.f.f.f.f.f.z.f.f.f.j.a.h.g.z.h.h.h.l.l.l.z.h.A.h.z.h.z.l.h.g.l.l.h.h.l.l.A.l.z.h.A.l.A.h.z.A.h.A.A.A.A.A.H.g.z.h.g.H.A.G.S.A.A.G.S.A.A.A.G.A.A.A.S.A.A.A.A.A.A.A.A.h.h.h.h.k.k.k.f.k.i.k.a.a.a.a.a.a.a.a.i.i.i.i.u.i.u.u.i.i.i.i.a.a.a.a.a.a.a.a.a.i.a.i.a.a.i.a.a.i.a.a.i.a.E d.d.a.a.a.a.a.a.a.a.a.a.a.a.i.a.a.a.a.a.a.k.i.a.k.a.z.i.z.a.a.a.z.k.i.z.z.a.i.a.k.f.f.f.f.f.k.h.h.k.h.h.h.h.l.h.A.h.A.A.A.A.A.S ! ! ZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXZXZXBXm.{ S Q [ T.T.~.~.~.(./././././.^./././.(.(.(./.(.(.(././././././.~.~.~.~.~.~.~./.~.~././.!././.(.(.(.(.(.(.(.(.(././.~.~.~.T.~.~.T.T.T.U.Y.U.P.P.L.L.S.L.L.H.H.H.S.H.S.S.G.S.A.A.A.A.A.A.A.A.A.A.A.A.A.A.D.g.l.l.h.z.h.h.k.k.k.g.g.k.g.f.f.z.k.g.z.f.g.k.k.k.g.k.g.g.k.l.g.g.g.D.z.g.g.z.h.f.h.h.l.x.z.k.h.h.l.z.h.z.z.g.h.l.z.z.h.h.z.z.z.h.h.h.h.h.D.A.j.S.h.A.H.A.A.G.S.S.S.h.S.S.S.l.S.S.S.S.H.G.H.A.L.S.U.S.H.L.S.L.L.L.U.U.U.U.U.Y.Y.U.U.Y.U.L.L.L.U.P.U.L.L.T.L.U.T.T.P.T.T.T.P.[.T.T.T.T.T.T.T.T.T.~.T.~.T.T.T.T.T.~.T.~.T.~.~.T.~./././.~.(.(.(.(.(.(.(.(.(.(.(.(._._._.|._.|.|.|.|..X|..X.X.X.X", ") ) ) ) ) P P P P J P L P L L P H J H H H H H H H H L H H L Z D Z J J Z Z Z Z Z Z L H Z Z H H Z H L H Z D D D Z Z Z Z Z G Z Z Z Z C Z B D Z Z Z C C Z Z C Z F F Z Z Z Z Z Z G B L Z Z Z H Z D H H Z H H Z H H J P Z P ) ] M.hXgXgXgXgXgXaXhXaXpXpXpX{ M.{ { / ' ! / S n u u u y y u y y > y y r y q y = r y y r : : ; : r y y y y y u y y u S ~ S ! ' ) ) { { { { { { M.7X{ M.M.sXm.m.Z.g.f.f.d.a.j.d.i.i.f.i.i.s.i.i.i.p.i.s.i.d.i.i.i.d.i.i.d.a.a.a.a.a.d.a.a.i.f.d.d.g.g.g.k.z.h.z.h.A.h.z.l.h.h.A.h.S.A.h.A.h.G.G.A.S.A.h.S.G.A.S.G.G.A.A.h.h.S.A.G.S.S.h.h.l.A.S.S.h.G.l.h.A.h.h.g.A.h.l.l.A.k.A.h.h.A.h.h.h.h.A.A.A.h.h.A.g.h.g.h.g.g.g.g.g.g.g.f.k.f.f.f.a.f.f.f.j.j.g.f.f.g.l.z.h.h.l.l.l.l.l.l.h.l.A.z.G.g.h.G.l.l.l.l.l.h.h.h.h.h.h.l.h.A.h.A.A.A.A.A.A.A.A.A.S.S.H.S.A.A.A.A.A.z.l.G.A.A.G.A.A.A.A.A.h.A.A.A.h.A.A.h.A.h.h.k.k.f.f.i.i.a.a.a.a.a.a.a.a.i.i.i.i.i.a.u.a.u.i.i.i.a.a.a.a.a.a.z.a.k.a.a.a.a.a.i.a.i.a.a.a.a.a.a.x.i.a.d.a.a.a.d.a.a.a.a.a.i.a.i.a.a.a.a.a.a.i.z.i.i.a.i.i.a.a.a.a.a.i.z.a.a.a.k.a.a.a.f.h.f.h.h.k.h.h.h.h.h.h.l.h.h.A.h.A.A.A.A.S ! / CXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXAXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXZXZXBXm.` ~ Q ` ~.~.T.~.T.~.~.~.~././.~./.(.[./././.(.(./.(./.(././././././.~.~.[.!.~././././././.(.(./.(.(.(.(./.(.(./././.~.!.T.~.T.T.T.T.U.T.L.U.U.S.P.S.L.L.H.H.H.S.H.H.H.H.G.S.H.H.A.A.S.A.A.A.A.A.A.h.g.A.l.A.l.l.h.k.h.k.k.h.h.k.g.k.f.k.d.k.g.d.f.g.g.k.k.k.g.k.g.g.g.g.D.g.g.g.g.g.z.g.k.h.f.g.g.g.l.h.k.h.k.h.h.h.g.g.h.a.h.l.k.k.h.k.h.k.h.z.h.h.g.h.h.h.g.A.z.A.A.S.S.A.S.S.A.S.A.S.G.S.D.H.D.A.S.S.S.S.S.L.H.L.L.L.H.L.L.L.L.P.U.U.P.P.U.U.U.U.T.U.T.Y.L.P.L.L.T.U.P.T.P.T.T.P.T.T.T.T.T.[.T.T.T.T.T.T.T.T.T.~.~.~.~.T.~.T.~.T.~.~././.~./.(.(.~.(.^.~.[.(.(.(.(._.(._._._._.|._.|.|.|.|.|.'.|.|..X", ") ) ) I ) P P ) P P P P P P S J H L H H H H H H Z H L Z D H H H L H Z H L Z Z Z Z Z Z S H H H L H H Z Z D Z Z D Z Z Z D D Z D Z Z Z C Z Z D Z Z D Z C Z Z Z Z Z Z Z Z Z Z Z Z D Z Z H D H D H Z H D P P Z U J H J _ M.gXgXgXgXgXgXaXaXaXpXM.M.M.' ' ' c S u u y : y y r r y r r ; y e y r y 0 r e y y y : t e y r r y r r t y : : y y r y r t t : y y u S S ~ ' ( ' { { { M.{ M.' { pXpXm.F.Z.Z.a.j.d.z.d.i.i.i.i.i.s.i.i.i.i.i.i.a.i.i.i.f.i.a.g.i.d.d.s.a.d.a.f.i.k.k.z.g.f.h.h.g.h.g.z.z.l.l.h.A.l.A.l.G.h.H.S.H.S.A.A.S.A.h.S.A.G.A.S.A.H.A.G.S.h.S.h.G.A.h.J.S.l.G.S.l.l.G.h.l.A.l.h.l.A.A.h.h.l.l.A.l.h.h.z.G.h.A.h.l.h.h.l.g.A.h.A.z.k.d.g.g.g.f.f.f.f.f.z.f.f.f.f.j.a.g.h.h.h.l.l.l.l.h.l.G.h.l.A.z.A.h.g.A.l.l.G.h.l.l.h.h.h.h.l.l.l.l.h.D.A.l.A.A.A.A.h.A.A.A.S.A.S.h.A.G.A.A.A.A.l.A.A.A.A.A.A.H.A.A.A.A.A.A.h.h.A.h.h.h.h.h.g.z.z.d.k.i.a.a.a.a.a.a.a.a.i.i.i.u.u.u.i.i.i.i.i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.i.i.a.a.i.a.a.a.a.a.a.a.a.a.a.u.a.a.i.a.a.a.a.a.a.a.a.a.a.a.a.z.a.a.a.d.a.a.a.f.f.f.k.a.z.a.g.j.h.f.k.h.h.h.h.h.h.l.l.l.A.A.A.A.A.g./ ! ~ CXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXZXFXBXm.[ ^ ^ [ ~.T.[.T.~.~.~./.(.~.(.~././.^.E.(./.(.^.(.^./.(./.~./.~./././.~.~.~.^././.(././.(.(.(.(.(.(.(.(.(.(.(.(.(.!./.~.T.T.~.~.T.T.T.T.P.P.P.P.P.L.U.P.H.H.S.H.H.H.H.S.S.G.S.S.A.A.A.A.A.A.G.A.A.h.A.A.l.z.l.l.l.h.k.h.k.g.g.g.g.g.f.d.d.z.d.g.f.g.z.g.k.k.g.k.k.k.z.g.k.g.g.g.l.g.g.g.h.z.k.k.h.k.h.h.k.k.g.k.g.g.g.g.f.h.h.h.k.h.f.z.g.z.g.h.h.h.h.h.l.l.h.A.A.A.A.A.S.S.S.A.A.S.S.S.G.G.S.D.S.S.S.G.S.S.H.H.H.H.H.U.L.U.L.L.L.L.U.U.L.U.L.U.U.I.U.U.U.T.U.L.U.Y.Y.U.T.P.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.~.T.~.T.~.T.T.~.T.~.T.~././.~.~.^.^././././.(.(.(.(.(.(._._._._._.|._._.|.|. X|.|. X X.X", ") ) ) I ) I ) P P ) P P P L J J J L L K H H H H H H Z L H H H Z H Z H H S Z J L Z L H L S Z Z Z Z Z H Z D D Z Z Z Z Z Z Z Z Z Z Z C Z Z Z B Z C Z C Z Z B Z C Z Z Z Z Z Z Z Z D Z Z Z G Z H Z H H H Z L P S I { aXgXgXgXgXaXaXaXpXM.} { ' ( c u c u y r > = y t t e : r r : r t ; : r r r y t y y : e : : r : y y y r t y y y y y t r q y 0 y t > e * y : t y y u S S S / ' ' { _ M.{ { { M.{ M.n.b.d.i.i.d.i.i.i.i.u.i.i.a.i.i.a.a.i.i.i.i.a.i.i.a.i.a.i.i.a.a.f.d.f.f.d.f.f.h.z.g.g.A.l.h.l.l.h.h.A.l.A.h.A.A.A.A.A.A.A.G.S.G.A.S.A.S.S.G.A.A.h.A.A.S.Z.A.S.h.l.A.l.h.h.S.S.A.A.l.l.l.g.G.l.l.h.A.l.h.S.h.h.G.h.l.l.l.h.h.h.h.k.k.d.A.d.k.A.A.k.k.g.g.f.k.f.f.z.f.f.f.f.g.h.g.h.f.l.l.l.l.z.h.l.l.z.g.G.l.l.l.h.g.G.l.g.g.l.l.h.z.h.h.l.h.l.h.h.g.h.l.h.A.A.A.G.l.A.A.A.A.A.G.A.A.A.H.S.S.S.S.A.G.H.h.S.A.h.G.A.h.A.A.A.A.A.h.h.h.k.k.f.f.f.i.k.a.k.a.a.a.a.a.i.a.i.i.i.u.u.u.u.i.a.i.a.a.a.a.a.k.k.a.a.k.a.a.z.a.a.a.i.a.u.a.a.a.a.a.u.i.a.i.a.a.a.a.a.z.a.a.a.a.a.a.i.i.a.i.a.i.a.i.a.a.a.a.f.i.a.a.a.a.i.z.s.f.s.k.s.a.z.s.f.g.k.h.h.h.h.h.h.h.z.l.h.A.h.A.A.A.A.A.~ / / ZXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXZXZXBXQ.} S Q ` T./.~.~.~.~.~.~.~.[.~.~././.^.{./.(././.(.^.!./././.~./././.~.~.~.^.~./././././././.(./.(.{.(.^.(.(.(.^.(.^./.^.^.~.T.T.T.T.T.U.P.P.L.P.L.Y.S.D.L.H.H.H.H.H.H.S.H.S.S.S.A.A.H.A.A.A.A.A.H.A.A.A.D.g.h.l.h.h.h.h.h.g.h.g.g.g.f.k.g.g.z.k.k.f.f.z.k.g.k.k.k.g.l.g.g.k.f.D.l.k.g.g.f.h.h.k.h.h.f.f.k.h.g.g.g.k.g.g.h.h.a.g.g.k.k.h.k.g.h.h.h.h.h.h.h.l.h.A.z.A.G.l.A.Z.S.S.S.S.S.S.G.S.S.S.S.S.G.G.S.H.S.A.H.H.H.H.S.S.D.L.L.L.L.L.U.L.U.U.U.T.U.U.T.U.T.U.U.T.U.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.Y.~.T.~.~.~.T.~.T.~.~.T.~.T.~.(.~./././.!./.!././.^.~.(.XX(.{.(.(.(.(._.^.|._.|._.|._.|.|..X|. X", ") ) P ) I ) I ) ) J P P U P J J L L H H H H H H H H H J L D H D Z H Z H Z L Z Z Z Z Z Z Z J Z L Z L Z H Z Z D L B G Z Z Z B Z Z Z F Z D C Z Z Z C Z Z D D C Z Z Z Z G C D Z C Z Z D D D H Z Z L Z L P J ) m.hXgXgXgXaXaXaXpXM.} { ' ' ^ S y e y > ; = * r r r r : y y r y r t : : y r r y r t 0 t : y y r = t : : r r : r r e r y * 0 r r r y r y y r t t q y r r > : y u u c / ' ' { { { M.{ M.M.b.n.D.d.d.i.d.s.u.a.s.i.i.i.a.a.i.d.i.i.i.a.a.a.a.i.d.i.i.f.d.i.f.i.k.k.k.k.l.g.g.g.g.g.h.h.A.A.A.h.l.h.S.S.A.A.S.A.A.S.A.A.A.S.S.A.J.S.A.A.H.G.h.G.G.h.S.h.S.S.h.A.S.h.S.l.A.l.z.A.l.A.h.h.h.A.H.h.S.z.h.A.l.A.l.l.l.A.h.l.h.l.Z.d.A.z.A.d.z.h.k.h.g.g.f.f.f.k.a.f.f.z.a.f.g.z.l.k.h.l.l.l.A.l.z.h.G.g.h.h.l.h.z.l.l.h.h.l.h.h.z.h.l.l.l.h.h.A.g.h.h.A.l.D.A.A.A.A.A.A.A.h.G.S.A.A.H.S.S.S.D.H.S.S.S.S.A.S.Z.A.A.A.A.A.h.A.h.h.A.k.g.g.f.f.f.i.a.a.f.a.a.a.a.i.i.i.u.i.u.i.i.i.i.i.a.a.a.f.i.k.k.k.k.a.a.a.a.a.i.a.a.a.a.a.a.a.a.i.a.a.a.a.a.a.a.a.d.a.a.a.k.a.a.a.u.a.i.a.a.u.a.i.i.a.i.a.a.i.i.f.a.a.a.a.d.f.f.g.s.a.g.g.a.f.g.k.h.k.h.h.l.h.l.h.l.l.z.A.h.h.A.A.A./ ! ! BXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXBXm.[ ^ ! ` /.~.~.~.~.(.T.~.~.~.~.(.~.(.^.[.(./.(.(./././././.!././.^.~.^.~.(./././././.(./././././.(.(.(.(.(.(.(.(.(.(.E.^.!.^.T.~.T.T.T.U.P.P.L.Y.P.D.L.Z.L.H.H.G.H.H.H.S.H.H.S.Z.A.H.A.H.A.A.W.h.A.A.A.A.h.l.A.l.h.A.h.h.A.g.g.g.h.k.h.k.g.g.g.k.k.g.g.g.h.h.g.Z.g.g.d.g.h.g.k.g.h.h.g.f.g.g.g.g.g.g.h.z.k.z.g.g.g.g.g.g.z.k.g.g.g.g.k.h.g.k.k.k.z.g.g.g.h.l.l.h.A.A.A.A.H.l.A.S.S.S.G.A.S.G.G.H.S.S.S.S.S.S.S.H.H.H.H.S.S.Y.U.L.L.L.L.P.U.U.L.U.U.I.U.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.T.T.T.T.T.T.~.U.T.T.T.T.T.~.~.~.~.~.~.~.~./.~././././.!./././.(.(.(.(.|.(.(.(.(._.[._.|._.{.|.|.|.|.|.'.'.", ") _ ) ) ) P I P P P P J J P J J L H J J H H G Z H Z Z L Z H H D H H H Z Z L P J Z L Z Z Z H Z J Z Z L Z Z D Z Z Z D Z Z H G B Z Z Z Z B Z Z Z C Z C Z B Z Z Z Z Z Z F Z Z C G Z D D D D Z H Z Z Z D J m.gXgXgXgXaXaXpXM.M.{ ' Q u u e : ; * : : * ; ; : r r r t r y : : r r r y : r r t r r r y : y : : y y : y y r r y r r y r t r y r r y 0 e 0 r r t : > r e t y : : ; ; > y u u / P ' ' { { { { { { [ b.d.d.i.i.t.a.i.i.a.i.i.a.i.i.u.i.a.a.a.a.i.i.d.i.i.d.f.i.f.i.d.d.f.d.g.g.z.l.h.z.g.h.h.h.A.l.h.h.z.A.A.A.A.A.W.A.A.S.Z.A.A.A.S.A.A.H.Z.G.S.j.G.h.J.h.A.S.h.A.A.h.G.l.G.A.l.J.h.A.G.A.A.h.l.l.H.A.h.A.h.A.l.l.h.h.h.h.l.g.A.g.z.k.A.k.k.h.k.g.d.j.f.f.f.f.f.f.f.f.g.f.z.h.h.h.l.h.A.l.h.l.l.z.h.h.l.l.g.G.z.h.h.h.h.h.h.h.h.h.h.h.h.h.h.D.l.D.h.A.l.A.h.A.A.A.S.A.A.S.A.G.A.H.S.S.S.G.A.G.H.A.S.S.S.A.A.A.A.A.A.A.A.h.h.h.g.g.g.k.k.i.z.a.k.i.a.a.a.a.i.i.i.i.u.i.u.t.i.i.i.i.d.i.i.i.k.a.a.a.a.k.k.a.z.a.a.a.a.u.a.a.d.i.a.i.i.a.i.a.d.a.a.a.a.a.a.a.a.a.a.a.a.a.u.i.i.i.i.i.i.a.i.a.i.i.a.a.a.a.a.a.s.a.a.g.s.a.s.g.k.a.j.k.f.h.h.h.l.l.l.l.l.A.h.G.A.A.A.h.~ ! ! ZXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXFXFXFXFXFXFXDXDXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXDXAXDXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXBXpX} S ! [ ~.~.~.~.T.~./.~.~.~.~.~.~.~.(.^./.(./.!./././././././.~.(.~./.~.~./././././././.!././.(._.].(.(.{.(.(.(.(.(.(.~./.!.~.~.~.T.P.P.L.L.L.L.U.U.P.S.H.L.K.Z.H.H.H.A.A.H.G.G.H.H.A.H.A.A.H.g.A.A.A.h.A.h.A.h.l.l.A.h.A.h.A.z.A.h.h.h.g.g.g.D.h.h.A.h.D.k.h.g.z.Z.z.g.g.z.g.g.h.k.h.h.g.z.f.k.g.g.f.k.h.k.g.g.a.h.g.g.f.z.g.g.k.g.h.k.g.z.g.h.z.l.g.g.h.h.l.l.A.l.A.A.A.Z.A.S.S.D.G.G.G.G.S.S.S.S.S.F.S.S.S.H.A.H.H.H.U.S.S.S.L.L.L.L.L.U.U.U.L.T.T.U.Y.Y.Y.T.T.T.Y.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.~.U.T.~.~.T.~.T.T.~.~.~.~.~.~.~././.!./././.(.(.(.(.(.(.XX{._.(._.(.|.(._.(._.|._.|.|.|.|.|.", ") ) ) ) ) I I I P P P P P P P P H P H H H U H H H H H Z L H H L H H P Z L L Z H Z H H Z H H H Z L Z D D Z G Z Z Z Z D Z D D Z Z Z Z F G C Z Z Z Z C Z D D B Z Z Z B D D C Z D D D Z D C Z J J Z _ pXgXgXgXgXaXaXm.} { ' n S u y r r r y * y : y r r y * r y r : y : : r r r r y t r y r r y r r r y r r r r y r r r r t y y r r r t r y r r r r r r t r r r y t y r r y r r r y y y y u u S / ' ' ' { { { c.c.[ i.i.i.i.i.i.i.a.a.i.i.i.i.u.i.a.i.i.i.k.i.i.a.d.i.f.f.i.a.k.f.k.z.j.k.z.f.f.h.z.h.h.A.h.h.G.h.G.h.S.A.A.S.A.S.G.J.h.A.S.A.J.A.A.S.A.G.h.A.S.A.A.A.S.A.A.G.h.l.H.A.h.A.Z.h.h.A.h.A.A.A.A.A.g.A.Z.G.h.h.h.h.h.l.A.g.g.g.g.z.k.z.A.h.h.k.k.a.f.f.f.f.f.f.k.k.k.k.k.g.l.h.l.l.h.l.l.l.l.l.l.A.l.z.l.h.h.h.h.h.j.h.x.a.g.g.h.h.h.h.h.l.l.h.j.h.A.A.A.A.A.A.h.A.A.A.J.D.S.S.S.S.G.A.H.D.S.G.S.G.G.S.A.A.A.A.A.A.A.h.Z.h.h.h.l.k.k.k.f.z.i.a.a.a.a.a.a.i.i.u.a.s.u.i.i.a.i.i.i.a.z.i.z.f.k.k.k.k.f.d.d.u.a.a.a.a.a.a.a.a.a.a.a.d.i.d.i.a.a.a.a.a.a.a.a.a.a.a.E z.a.a.a.i.i.a.i.a.i.i.i.a.i.a.a.a.a.a.a.s.f.z.i.a.a.a.g.a.z.g.g.g.g.h.l.h.h.h.A.h.A.A.A.A.A.A.j.~ S / ZXZXZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXSXDXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXFXBXQ.} ~ S [ ~.~./.~.~.~.~.T.!.~.~.~.~.!.(.^.(.(././.(./././.^.~.~./.~./.~./.~.~./.^.^./.~./././././.(.(.^.(.(.(.(.(.(.(.(./././.~.~.T.U.U.U.U.U.L.Y.U.U.L.L.L.L.H.H.D.D.H.H.H.Z.S.H.Z.H.H.h.S.S.S.S.A.A.S.A.A.A.A.z.A.h.h.A.A.A.z.A.A.A.g.h.A.z.A.g.A.h.A.h.l.h.h.h.l.l.h.h.g.g.g.g.g.g.g.k.g.g.g.g.g.f.k.k.z.f.f.f.j.a.j.k.g.f.f.g.g.f.g.g.g.f.g.g.g.g.f.g.z.z.h.l.l.l.h.A.A.A.A.S.A.H.G.G.A.G.G.A.H.A.S.S.A.S.A.A.A.H.S.S.S.L.L.G.L.L.H.L.K.L.L.L.R.L.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.T.T.T.T.~.~.~.E.[.T.~.~.~.[.~.!.~././.~././././.(.(.(.(.(.(._.(._.(._._._._._._._. X X.X|.", ") P ) I P ) I ( ) P P S P P P P P K H P H H H H H H H H H Z Z Z H Z Z Z L Z Z H H H D H L Z Z L H Z D D Z Z D Z Z Z C Z Z C Z Z Z D C Z Z C C Z Z Z Z B Z Z Z Z Z Z Z Z G Z Z Z H B G G Z S ~ M.fXgXgXgXaXaXM.{ { ' u u > * e ; r r r r * * * 0 r r r y r r r y t : y r t r r : r r r r r r t y r t r y t t r r t t r r r r t r r y r r y r r y r r q y y r : r r r r r r t r r r r t t t y u u ~ ' ' { { { { { { e.i.a.i.f.i.i.d.a.a.i.i.k.a.u.i.i.i.i.i.i.a.a.i.i.f.i.k.i.f.i.g.f.k.k.h.z.h.z.h.h.h.A.h.h.h.G.h.A.A.S.A.A.A.J.A.S.A.A.A.A.A.A.A.A.G.A.S.j.G.S.A.A.S.A.Z.h.l.A.h.A.h.W.h.A.A.G.A.h.A.S.A.A.A.A.S.h.A.A.A.h.h.h.D.k.A.k.l.l.z.g.h.h.h.f.z.f.f.z.f.f.f.k.k.k.k.k.z.h.h.l.l.l.l.l.A.l.l.G.h.l.l.l.h.h.h.h.z.l.j.j.g.g.g.g.z.l.h.h.l.l.h.G.A.A.j.A.g.J.A.G.A.A.H.h.A.G.S.S.G.H.G.G.G.S.S.G.S.S.G.S.A.A.A.A.A.A.A.h.h.D.h.k.h.k.z.k.k.k.a.a.a.a.i.i.i.i.s.a.u.s.i.s.a.i.i.a.i.i.k.d.k.k.i.k.f.k.d.d.a.a.a.a.a.a.a.a.a.a.a.d.d.i.i.d.u.a.a.a.a.a.a.a.a.a.z.a.z.i.i.a.a.i.i.i.i.i.i.i.i.a.a.u.a.a.a.a.a.f.i.i.g.g.g.i.f.f.g.g.g.g.l.l.A.h.A.h.A.h.h.A.h.A.A.A./ ! ! ZXZXZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXZXFXBXm.[ ~ ! _ /./.~.~.~.^.T.~.~.~.~.!.~.(.^.^./.(./././.~././.^.~./.~.!.~./././.^./././.(././././.(.(.^.(.`.(.(.(.(.(.(.(.(./././.~.T.~.T.T.U.D.P.P.D.S.L.L.U.H.H.L.L.U.H.H.D.H.H.H.H.H.G.H.H.S.D.G.A.S.A.A.h.A.H.A.A.S.S.S.S.l.D.A.Z.A.A.A.S.A.A.A.A.A.A.h.A.D.A.A.h.l.A.l.h.h.g.g.g.g.k.f.g.g.z.g.g.g.g.f.f.z.a.f.f.z.f.k.k.f.g.g.g.j.f.g.f.g.j.g.d.g.g.g.g.k.h.g.l.l.l.A.z.A.A.h.S.S.A.S.S.H.A.A.H.A.H.S.A.H.A.S.S.H.H.G.S.D.L.L.H.L.L.L.L.L.L.L.Y.I.Y.U.T.T.T.T.T.T.^.T.~.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.~.T.T.~.~.T.).~.(.T.^./.^.~.~.~./.[./.^./.(.(.(.(.(.(.(.(.(._.(._._._._._._._.|._.|.|.", ") ) ) ) ) ) P I P P P ) P P L P J L J J L H H H H H H H H H H Z H H Z L G Z S Z S H H Z Z Z H Z Z Z D D Z Z D D Z Z Z Z Z Z Z G Z C Z Z Z Z Z Z Z B Z Z Z C D F F Z G Z C Z D Z Z Z Z S L M.gXgXgXgXaXpXM.{ ' Q u u > : y ; > r r r r : t : : y y * t 0 r r : r r r r r r r r y e y y r t r r r r y r r y : r y y r r y y r y : r r y r r y r t t r r r r r r r r y r r y t r r r q r r e e e e u u Q / ' ' { ' { { ` e.a.a.i.s.a.a.a.a.i.i.a.i.d.u.i.i.a.d.a.i.k.d.i.z.i.f.i.z.f.f.a.z.f.z.h.h.h.h.h.h.h.G.A.h.A.h.J.A.J.A.A.G.A.A.S.A.A.A.S.Z.A.S.Z.A.A.A.A.A.S.A.G.A.G.h.A.A.h.A.Z.h.A.h.A.h.h.G.h.S.A.Z.h.A.h.A.h.z.l.l.l.h.l.l.z.l.k.g.g.l.z.h.f.h.l.f.k.j.k.a.f.k.h.k.h.k.z.l.h.h.h.h.l.G.l.A.l.h.l.l.h.h.h.h.h.z.h.h.h.f.g.g.g.g.g.z.g.h.h.l.h.h.A.h.A.A.A.A.A.A.h.S.S.H.D.D.A.H.H.G.H.H.S.S.G.G.H.D.S.S.W.A.A.A.A.A.A.A.A.h.h.k.k.k.k.k.a.a.k.i.a.i.a.i.s.a.u.u.a.u.u.i.i.i.i.d.a.i.z.k.d.k.a.f.f.d.d.k.a.a.a.a.a.a.a.a.a.a.a.a.i.a.a.a.a.a.a.a.a.a.a.i.a.a.a.d.a.a.a.i.i.i.i.i.a.a.u.i.i.a.a.a.u.k.a.i.a.a.a.a.f.a.a.g.f.k.f.g.g.h.h.l.h.A.h.A.A.h.A.h.A.A.A.A.S / / AXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXZXDXFXBXpX{ ! ! [ [.!./.~.~./.T.~.~.~.~.~.~.~././.^./././././.~./.(.~.~./.(.~.~.^./.~.~./.~.(./././.(.(./.(.(.(.(.`.(.(.`.(.(./././.~.T.~.T.U.U.U.P.P.P.L.Y.L.L.S.L.L.H.H.H.K.A.D.H.H.H.H.H.G.H.G.H.D.D.D.S.S.S.S.A.S.S.S.S.S.H.A.D.S.S.H.S.S.S.S.S.A.A.S.A.A.A.A.S.A.D.z.A.l.h.h.D.g.g.g.k.d.g.g.g.f.g.g.f.f.g.a.f.f.f.f.z.f.f.f.g.f.g.f.f.g.g.g.f.z.f.g.g.g.g.g.k.h.l.l.l.A.h.S.A.h.S.S.A.A.S.A.A.A.A.H.A.A.H.S.A.A.H.S.H.A.H.H.H.H.H.H.H.L.H.L.L.L.L.U.L.U.T.U.~.T.T.~.T.~.T.T.T.T.T.T.~.Y.P.T.T.T.T.~.T.~.T.T.T.T.T.~.T.T.T.~.T.~.~.XX~./.(./.~.~.[./././.~./.!.^.(.(.(.(.(.(.(.(._.(._.^._._._._._._._. X|.|.", ") P ) I ) P ) P P ) P P P P P P L J H J H J L J H H H H P Z H H H H Z S L ( Z Z Z Z Z L Z L Z Z Z H D D Z D H Z Z Z F D Z D C B Z D B Z Z Z C Z F D Z Z Z Z Z Z D Z B Z D Z Z D D Z K { hXBXgXgXaXpXM.{ ' n u y > ; : y y ; y r 0 r r : 0 y r r y t r r r r y 0 r r y r r t r : y r r r r r r r e r r : y r r r * y r r r r r r t : : r r t r r r r r r r r r r r r r r * r r r r r r r > t y r e e u u u ~ ' ' ' ' { ' [ e.i.k.i.i.a.a.i.i.i.i.k.d.i.u.k.d.a.a.f.i.i.i.a.i.f.i.a.a.g.g.f.z.g.f.g.z.h.j.h.h.h.h.h.G.h.S.h.A.A.S.H.A.A.A.H.A.A.L.A.H.A.G.h.Z.A.W.A.A.A.A.A.A.A.A.G.h.Z.A.A.A.W.h.Z.h.A.A.h.h.A.A.h.h.A.h.A.l.l.h.g.l.g.l.l.l.A.k.g.z.h.h.z.h.l.k.z.g.g.g.k.k.k.h.g.h.h.h.h.h.l.l.h.l.l.A.l.l.h.h.z.h.h.j.k.k.f.j.k.g.g.g.g.h.z.g.h.g.g.A.h.A.j.Z.A.A.A.A.S.S.H.h.H.H.H.G.G.H.D.D.H.H.D.H.D.G.H.S.h.G.G.A.A.G.j.W.A.h.A.h.h.k.h.d.k.z.a.a.a.a.a.i.a.s.a.u.s.i.i.s.i.i.i.a.a.k.k.f.f.f.f.k.f.f.k.a.z.a.z.k.a.a.i.x.d.a.a.a.a.a.a.a.a.a.i.a.a.a.a.a.a.a.E z.i.i.i.i.a.a.i.i.i.i.a.a.i.i.a.a.a.u.a.i.a.a.a.a.a.f.a.f.f.f.g.g.g.g.h.l.h.h.A.h.Z.h.h.Z.A.h.A.A.S ! ! CXVXFXZXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXBXQ.[ ! ~ ` ^././.~.~.~.~.~.~.~.T.~.~.^.E./.!././././.~./.~.~.~././.~./.[.~./.(.~.^././././.~./.(./.(.(.(.(.(.).(.(.(.(././.~.~.~.T.T.T.U.T.P.P.L.P.L.L.L.L.L.H.L.L.H.G.L.L.H.H.L.H.H.H.S.H.A.H.H.H.S.S.S.S.S.S.G.H.H.H.D.S.D.H.H.H.H.G.S.S.H.S.H.S.Z.S.S.S.S.D.A.D.A.D.h.h.f.g.g.g.k.g.k.g.g.f.g.f.f.f.f.f.f.f.f.f.f.f.f.f.f.g.g.g.f.k.g.f.f.g.g.g.g.f.g.g.h.k.l.l.h.A.A.z.g.Z.h.A.A.A.A.A.A.A.A.A.A.A.A.A.A.H.A.S.S.H.S.H.H.H.H.L.L.L.H.L.L.L.L.L.I.I.I.T.T.T.T.~.T.T.~.T.T.[.^.P.T.T.~.T.I.~.I.T.T.T.T.T.T.~.T.T.T.~.T.~.~.~.Y.~.T.T././.~.~.~./.~././././././././.(.(.(.(.(.(._._._._._.|._.|._.|._.|.|.", ") ) I ) ) P P P I J I P P P P P H P P P H J H H L L H H Z L L H H H H H Z Z Z L Z J Z S Z Z D L Z Z H Z D Z G Z Z D Z Z Z Z Z Z Z C D C Z B Z Z Z Z Z Z Z Z Z Z D Z B G Z Z G Z Q _ pXgXgXgXhXpXpX{ ' u u y y : r 0 * r * = e ; r 0 : 0 r r e r * e r y e r r t r r y r r r y : r r r r r r r r r r r r r y : r r r r r r t y r y : r : 0 e r r y r r r r r r r * y r r y y r r r r r r r r y = e e y y y u u Q ~ ' ' ' ' ' [ f.g.i.d.i.i.a.i.d.i.u.i.i.u.a.a.a.i.a.a.i.f.f.i.a.g.a.a.f.g.z.g.h.z.g.g.h.h.h.h.A.h.A.A.A.S.J.h.S.A.S.S.G.H.h.A.S.A.H.A.A.A.A.A.A.A.S.A.A.A.A.h.h.A.j.A.A.j.A.A.S.h.A.h.A.h.A.h.A.h.A.A.h.h.h.h.h.z.h.h.h.S.g.A.g.g.h.l.z.h.g.g.f.z.h.h.k.k.g.g.h.g.h.h.h.A.l.l.h.l.l.z.h.l.h.j.h.h.h.h.j.z.k.j.f.g.a.z.g.h.k.h.k.h.h.h.l.A.A.A.A.A.g.A.A.S.S.S.S.H.H.G.H.G.H.P.P.S.S.S.L.D.H.A.D.A.A.H.A.G.G.A.A.A.A.z.h.z.z.k.k.k.a.a.a.a.i.a.i.i.i.a.i.i.i.i.i.i.i.i.a.d.d.d.k.f.k.f.f.d.z.k.a.d.a.a.d.a.a.a.z.a.z.u.d.i.a.d.d.a.a.a.a.d.d.d.a.a.i.i.a.i.i.a.i.a.i.a.a.s.a.z.i.i.i.a.a.a.a.a.a.i.a.a.a.a.f.f.f.g.f.g.g.h.h.h.h.G.A.A.A.A.A.A.A.A.A.A.A.^ S ~ CXVXAXGXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXAXFXFXFXAXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXFXBXm.[ / S ` /././.!.~.~.~.~.T.~.T.~.~.~.^.^.~.~.~./.~.~.~.(.~.~.~.~.~.~./.~.(.^.(././.[.~.[./.^.(.(.^.(.(.(.(.(.(.`.(.(././.!.~.T.T.T.T.U.U.S.U.P.L.L.L.L.L.L.L.S.U.L.L.S.S.H.H.L.S.H.H.H.H.A.H.H.H.H.H.H.G.L.H.H.H.L.L.L.L.D.L.S.U.S.S.L.S.S.S.S.L.H.G.G.D.G.D.S.G.S.A.A.A.A.g.g.g.k.g.g.d.g.g.j.f.a.a.i.f.f.k.f.f.k.f.f.f.z.f.z.f.f.k.k.k.f.f.g.g.g.g.g.k.k.h.h.h.l.l.G.A.h.A.h.A.A.A.A.A.A.A.A.h.A.A.H.A.A.H.H.A.S.G.S.H.H.H.H.S.H.S.U.L.L.L.U.L.U.U.T.P.T.~.T.T.~.T.~.~.T.~.T.T.~.T.~.T.I.T.~.T.~.T.T.~.T.T.T.T.T./.T.T.~.T.T.~.~.~.(./.~.~./.~./.~.^.~./././.(.[.^.^.(.(.(._.(._._._.|._._._. X_.|.`.|.", "I ) ) P ) P ) J I I I I P P P P I I L P L J H H L L L L L L Z H Z H Z L L Z Z Z Z Z Z Z H Z H Z Z H Z L D D Z Z Z Z Z Z Z Z Z Z Z C Z Z Z Z F Z D Z Z Z Z Z Z Z Z C G Z F G B Z m.gXHXgXsXaXM.{ Q f u u r ; : y r r r r ; r r r r r r r r r 0 r r r r * r r y * r r r r y r r : r r y r r r y r r r r y r : r t r r t r y * r r r r r y r r r r r t r r : y r y y 0 t r * r r r r r y = r r : ; > : : : r y y u c S n ' ' ' ' ' T d.k.i.a.a.a.u.i.k.i.a.a.a.a.a.a.a.i.f.i.a.k.i.a.i.f.f.j.a.g.g.g.g.h.g.h.h.h.h.A.h.A.A.A.A.H.A.S.S.G.Z.S.S.H.A.A.A.A.G.A.A.A.A.A.A.A.S.h.A.S.S.G.h.h.A.G.S.j.h.h.h.h.h.D.l.A.A.A.A.z.h.h.h.h.h.g.z.h.g.k.g.g.g.z.a.h.z.g.g.h.j.k.f.h.h.h.k.g.k.g.g.h.h.l.l.h.z.l.l.l.l.l.l.z.f.z.a.j.x.j.k.a.f.g.z.g.k.g.h.k.h.h.h.g.G.A.A.g.G.h.A.A.G.S.S.S.S.D.D.D.D.D.D.D.l.L.D.H.D.A.U.H.H.H.G.A.H.G.A.G.G.A.A.A.z.h.k.k.z.k.i.i.z.a.a.i.i.a.a.u.i.i.i.a.a.i.i.a.a.i.k.f.f.f.f.k.k.a.k.k.k.k.k.k.k.z.a.a.a.d.a.a.a.a.a.a.i.a.a.a.i.z.E a.a.a.d.i.i.i.i.i.i.i.a.i.a.a.a.t.i.a.a.a.a.a.a.a.i.a.i.a.a.a.a.a.f.f.g.g.g.g.h.h.h.g.A.A.h.h.A.A.h.A.A.A.A./ ^ / BXVXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXDXDXFXAXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXDXFXFXFXDXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXAXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXSXFXFXFXFXFXDXAXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXZXDXBXm.} S / ` {./././././.~.~.~.~.~.(.~.!.~.~./.~.^.~./.~.~.T.~.~.~.~.(.^.~.~.~.~.~./././.(.!.(.^.(.(.(.(._.(._.(.(.^.(.(.(./.^.~.~.!.T.T.P.U.P.P.P.S.S.L.L.L.L.L.L.L.U.S.L.L.L.L.H.L.S.L.G.H.H.H.H.H.H.U.A.H.H.H.L.H.L.L.L.L.Y.L.U.U.L.U.L.L.L.L.L.S.S.H.H.H.H.G.G.A.S.A.S.h.h.A.z.g.g.g.k.k.f.z.f.f.k.z.z.f.f.a.k.s.a.f.z.k.a.f.a.f.f.k.k.k.g.g.g.f.k.g.h.k.h.h.h.h.h.D.l.l.A.A.A.A.A.A.A.A.h.A.A.A.A.A.A.A.H.A.G.G.G.H.H.H.H.H.H.U.A.U.L.L.L.L.L.U.P.U.T.T.T.T.~.T.T.T.~.T.[.T.~.!.T.~.~.~.~.T.~.T.T.~.T.K.K.~.T.~.T.T.T.~.T.~.~.~.~.~././.[./././././.~.~././././.(.(.(.{._._.(.|._._.(.`._._._._.|._.`.|.", ") I ) I ) I J I I I ( P U P P P I K P P I J J U H J J J Z L Z L S Z L S Z Z L Z Z H H Z Z Z H H G Z H Z Z D Z Z Z Z G B D F G B D Z Z F Z Z Z Z Z Z Z Z Z A Z Z Z Z G C D S ) aXgXgXgXaXaX} ' c S y : : e ; 0 y r r r r r r r r r r r r r r r r r r r r y : * y r q r r r r r t r r r r r r y : t * r r r y r r r r y r r r r y r y r t y r r y r r r r y * t * r : r r r r e 0 r r r r = r r r r r : : r r e y > u u / ' ' ! ' _ ` S.z.a.a.i.i.k.i.k.i.a.a.a.a.i.a.a.i.a.a.i.d.i.g.f.g.g.a.g.a.h.g.g.g.h.h.h.h.A.h.A.A.A.J.A.A.H.S.H.H.A.H.H.S.A.H.A.H.A.A.A.A.A.A.G.h.h.A.A.h.Z.h.h.S.A.j.h.Z.j.W.A.A.l.A.A.h.A.h.A.h.z.h.h.z.A.k.k.D.k.g.z.g.z.g.k.k.g.g.h.h.h.k.h.k.z.h.h.h.z.g.h.h.z.h.l.l.l.l.l.l.l.z.l.k.g.h.j.z.f.h.z.f.g.a.a.k.k.k.h.k.h.h.h.h.A.h.A.A.H.A.A.A.S.S.G.G.L.D.D.U.L.D.G.D.D.H.D.L.S.H.H.S.H.G.A.G.A.G.A.G.D.A.A.h.l.l.k.k.i.k.z.i.a.i.i.i.i.i.i.i.i.i.i.a.i.f.k.i.f.f.f.f.k.d.f.k.k.k.k.k.k.k.d.d.a.a.a.z.d.a.d.d.i.a.i.i.i.a.a.i.z.x.a.a.a.a.a.a.a.a.a.a.a.i.a.i.a.a.a.a.a.a.a.a.a.a.i.a.a.i.a.a.a.a.a.a.f.a.g.a.z.g.h.h.A.h.h.A.A.g.A.A.h.A.A.A.~ S / VXVXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXDXDXDXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXGXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXAXFXFXFXFXFXFXFXFXFXFXGXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXZXDXDXBXm.[ ^ ~ ` /./././././.~.T.~.~.~.T.~.~.~.~././.~.~.~.~.~.~.~.~.^.~.~.!.~.~.!.^./././.^.^./.(.~.(.(.`.^.(._._.(.(.`.(.^.^./.^.~.T.T.T.T.P.P.P.L.U.L.U.L.S.U.L.L.L.L.U.L.H.L.H.L.L.S.L.H.S.H.D.H.L.S.H.S.H.L.L.L.L.I.U.L.L.U.I.U.P.P.L.L.L.L.U.S.L.S.H.H.G.H.D.H.G.G.S.S.A.A.A.g.g.g.g.f.k.d.k.k.a.f.k.a.f.a.f.f.f.a.a.a.f.a.g.f.f.f.a.g.z.f.f.g.f.g.g.g.k.h.h.z.h.h.h.h.g.A.h.h.A.A.A.j.g.Z.A.h.h.h.A.A.A.A.S.S.A.S.A.S.H.Z.S.H.S.H.L.S.S.L.L.U.L.P.P.P.T.P.T.T.T.T.T.~.T.~.~.~.[.~.[.~.~.T.~.~.T.~.~.T.T.~.T.T.T.K.T.T.T.T./.T.R.~.~.~./.~././.~.(././.(.T./././././.(.{.(._._._._.|._._.|._._._._._. X`._.", "P ) P ) ) P ) I I I P P P P P P J P P P L J H P H H H D L P Z L Z L Z Z L P Z Z Z H Z H H S S Z Z Z Z H Z Z G G Z Z Z Z Z Z Z C C G Z Z Z Z Z Z Z F Z Z Z Z Z Z S Z C H H [ gXgXgXaXpXM.' ' S y : : e : e r = r ; r e = r ; 0 r 0 r r 0 r r r r r r r r r r r r r t r y r r r r t r r y r r * y y r t r r y r r y r r r r r r r r r r r r r r t r r y r : y 0 y * y r r r r r r r r ; ; r r r r 0 0 r r ; : : : : y y u u c ! c ! ! L E a.u.u.d.i.u.k.i.a.a.a.a.a.i.a.a.a.a.a.a.a.a.f.a.d.g.j.h.a.g.g.z.A.h.h.h.A.A.A.A.A.A.A.A.A.S.S.G.H.A.A.A.J.g.J.A.W.A.A.A.A.h.A.A.l.z.S.h.A.j.A.A.h.A.h.Z.h.h.h.h.h.h.h.A.h.h.h.z.A.A.z.A.z.g.g.g.g.g.g.g.g.k.g.h.g.z.f.g.h.h.z.k.k.h.h.k.z.l.h.h.l.l.l.l.l.l.h.l.l.l.k.l.f.j.a.j.f.f.f.f.a.g.z.g.k.k.k.k.h.h.h.h.h.A.h.g.A.A.A.A.S.A.H.G.z.D.L.l.G.D.G.L.P.D.S.G.S.H.H.A.J.A.H.H.H.G.G.A.A.A.A.A.l.l.k.k.k.z.a.a.a.a.a.i.a.i.i.i.i.a.a.a.i.f.i.i.f.k.f.d.k.k.f.k.k.k.k.k.d.k.z.x.a.a.a.a.d.x.a.k.z.E a.a.a.a.i.a.E a.a.a.a.a.d.i.a.u.a.a.i.i.i.a.i.a.a.a.a.a.a.i.a.a.a.a.a.a.a.a.a.a.a.a.f.f.g.g.g.g.g.z.g.A.h.A.A.j.A.A.A.A.A.A.~ ~ ~ CXVXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXAXFXAXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXDXFXFXFXFXFXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXGXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXDXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXBXQ.{ Q ~ ` (./././.(.[.~.(.~.T.~.T.~.~.!.~.~.~.~.~.~.~.T.!.~.~.~.!.~.!.~.~.[.~./././.[././.(.~./.^.^.`.(._.(._.(.^.(.(.(././.~.~.T.T.P.P.P.P.L.L.L.D.L.L.L.L.L.L.L.S.L.L.L.L.L.L.L.L.L.L.S.H.H.H.L.S.U.L.L.L.L.L.I.U.U.T.T.T.T.P.U.L.U.L.U.L.L.L.L.S.H.H.H.H.D.D.G.S.D.A.D.A.h.g.g.g.z.k.k.f.f.k.f.f.f.f.f.a.f.a.f.f.f.f.f.f.f.f.f.f.f.z.a.g.g.g.k.f.g.k.k.h.l.h.l.h.A.A.z.D.S.g.A.A.A.G.j.h.A.A.A.A.A.H.A.S.S.H.H.H.H.H.H.H.H.L.S.L.L.L.L.L.L.L.P.P.P.P.T.T.T.T.T.T.~.~.~.~.~.~.~.!.!.[.~.~.~.~.~.T.~.T.~.T.~.T.T.T.T./.T.T./.~.R.~.~.~./././././././././.~././.(.[.(.(.(._._.^._._._.(.`._._._._._.|.`.`.", ") ) ) ) S P I I ) P P I J P I I P P P P P J J S P P H H H U Z Z P Z L L Z H Z Z L H Z Z Z G Z Z Z Z D Z D Z Z D D Z D Z D Z Z Z Z Z D D Z Z Z Z G Z A L Z H Z Z Z Z Z A m.gXgXgXaXM.{ ' u u y : y : r r r r : r r r r r r e r r r r r 0 r r r r e 0 r r r r r r r r r r r r r r e * t y t 0 y r r r r t y r r r r r r * y r r y * * t r r r r * t y r y r q e r r r r r r r r r r r r r r * r e q r 0 y : r r r r r y r y u u / ~ { c K T d.a.a.a.a.k.i.d.i.z.u.i.a.a.i.a.s.i.a.a.a.a.g.g.a.g.g.a.g.g.h.l.h.h.h.A.A.A.A.l.A.S.Z.A.H.S.H.Z.A.H.A.A.A.G.A.A.A.A.A.h.S.h.A.A.h.D.A.l.D.A.h.D.A.z.h.h.h.h.g.l.l.A.A.h.l.l.h.A.h.h.l.l.l.z.z.z.f.j.f.g.g.g.a.g.g.g.z.g.f.h.z.h.k.h.g.g.h.g.h.h.l.h.l.h.h.h.h.h.k.g.g.j.a.f.z.f.z.a.g.z.i.a.g.z.g.g.g.h.h.h.l.A.h.A.A.A.A.A.H.S.S.S.S.S.G.H.G.G.H.H.S.Z.D.H.U.S.H.H.H.S.H.H.H.S.H.S.S.z.A.j.A.g.h.g.g.k.a.g.a.a.a.i.a.a.i.a.a.a.a.a.a.z.i.a.z.a.k.i.z.a.z.a.d.f.z.g.z.z.g.a.g.a.a.z.a.f.a.a.a.a.i.i.i.a.a.a.a.i.a.z.a.i.a.a.a.a.i.a.i.i.a.a.i.a.a.a.a.i.i.f.i.i.f.a.d.i.a.a.i.a.a.k.a.k.k.k.d.k.g.k.h.l.h.A.l.A.A.G.G.D.S.D.A.~ ! / BXVXZXDXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXDXAXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXSXZXZXMXm.} ~ ! ` [.(.(.(./././.~.~.~.~.T.~.~.~.T./.~.~.~.~.~.~.~.~.~.~.~.~.~.(.~.~./././././././.~.(.(.(.{.(.|.^.|.(.(.|.(.(.(.(././.^.T.T.T.U.U.L.L.L.L.L.L.P.P.L.L.L.L.L.F.L.L.L.L.P.L.L.L.D.H.L.S.L.L.L.L.L.S.U.P.P.P.T.U.T.L.P.T.T.P.P.P.P.P.L.P.L.L.D.L.D.D.H.H.S.S.S.H.S.A.A.h.h.k.z.f.f.f.f.f.f.f.f.f.f.f.f.f.i.f.d.f.f.i.k.f.f.f.f.f.k.g.k.k.g.k.g.g.l.k.g.g.Z.k.h.A.A.D.A.A.A.Z.g.h.A.A.A.A.A.A.A.A.G.A.A.S.G.S.G.G.G.S.H.H.L.S.L.L.L.L.K.L.L.U.U.U.U.L.T.Y.T.~.~.~.~.~.~.~.~././.~.~./.~.~.~.~.T.~.T.T.T.T.T.T.T.T.T.~.T.~.~.~.~.(./././././././././././././.(.~.(.(.[.{.(.|._.(.|.`._._._.(._._.|._.}.", "_ J J ) ) ) ) I P P ) I P ) P P P ) J P P J J L H U P H H H D H S Z L Z H Z Z L Z Z Z Z Z Z Z H Z Z D Z Z Z D Z Z D Z D D D F Z Z Z Z D Z Z H D D D Z Z H C D D Z Z J aXgXgXaXpX{ { n u y y : e r : r r r r r r r r r r r r : : r r r r r r r r r r r r r r r r r r r r 0 y r r 0 y y * r r * y y r r r * y r r r r t y r r r r t y * y r y r y y * r r r r r r r r r r r r r r r r r r r r r r r r t * r r r r ; 0 0 r > u u ^ u Q Q S L L T z.u.a.a.a.i.i.u.d.a.i.i.a.a.a.i.i.a.a.a.a.a.a.a.g.g.g.j.h.g.h.h.A.l.g.g.A.A.A.A.A.S.S.D.A.G.H.S.H.H.A.G.A.A.A.G.j.A.h.S.h.h.g.g.l.Z.g.h.g.g.Z.h.h.h.h.h.l.z.h.h.h.l.l.l.l.h.h.h.l.l.l.h.h.j.h.f.g.a.g.j.g.g.g.g.g.h.g.z.g.h.k.h.h.j.h.h.h.h.h.h.h.h.h.h.h.l.h.g.g.f.f.k.f.g.g.g.a.i.z.g.z.a.z.g.k.h.g.l.l.l.A.A.A.A.A.A.A.A.S.H.S.H.S.D.H.H.H.H.H.L.L.U.S.H.H.H.H.S.Z.H.H.S.H.S.S.A.A.A.A.h.h.j.j.k.z.a.a.a.a.a.a.i.a.a.i.a.a.a.a.a.a.a.z.x.i.k.k.k.k.g.g.a.f.a.z.g.a.g.a.f.a.a.a.a.a.a.a.i.a.i.a.a.a.a.i.a.a.a.a.a.a.a.u.a.i.i.u.i.i.i.i.a.a.a.a.z.a.i.z.a.i.a.i.a.i.i.a.a.a.a.a.d.k.k.k.g.k.a.D.A.l.l.G.h.A.h.A.D.H.H.S.~ / S ZXVXAXDXZXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXAXDXDXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXSXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXZXZXBXQ.[ ~ S ` (.(.(.(.(././.~.~.~.[.T.T.~.~.T.T.~.~.~.~.T.T.[.~.~.~.~.~.~.~.[./.~.~./././././.(.(.(.^.(.(.(.(.|./.(.(.(./././.(.T.^.T.T.T.U.U.U.U.L.L.L.Y.P.S.L.L.U.L.L.L.L.L.L.L.P.A.D.U.D.L.S.L.L.S.S.L.L.L.P.P.P.P.T.T.Y.^.~.Y.T.P.T.P.P.P.P.L.P.P.L.L.H.P.S.H.A.H.H.S.S.S.A.A.A.k.g.g.f.f.f.f.f.i.f.f.i.f.f.f.k.i.f.f.d.f.k.k.f.f.f.f.f.k.g.k.k.g.g.g.g.z.g.g.g.l.l.l.h.A.l.A.h.A.A.A.A.A.A.A.A.A.G.A.h.G.G.S.G.G.D.G.S.D.H.H.H.H.H.L.L.L.U.L.U.U.U.U.U.U.Y.Y.T.T.T.~.~.~.~.~././.~./.(.!./.~.~.~.~.T./.T.~.T.T.~.~.T.~.T.~.T.R.(.~.~./././.(././.(././.(.(./.^.).(.(.|.(.(.(.(.(.(.(.|.^._._._._.}._.}._.", ") ) ) ) I I I I P ) ) L P P P P I P P J L J J L H H P H H H H H Z Z J Z Z Z Z Z Z Z Z H Z H Z Z H D D D Z D Z D A H D Z D Z Z Z Z H D Z D D D Z D Z Z Z Z Z G Z S ( gXgXgXaXpXM.' S > : r r ; ; r r r r r r r r r r r r r r r y r r r r r r r r r r r r y * r r r r r r : r r r r r r r r r r r * y : r y 0 r y r r * y r 0 y r r 0 y r y * * r * r r r r r r r e 0 r r r r r r r r r r r r r r r r r e r r r r r ; r 0 ; : y t t S u Q / > G e.x.a.u.u.z.u.i.d.a.a.a.a.a.i.i.i.s.a.a.a.a.z.a.g.a.g.g.g.h.h.h.h.l.A.h.A.S.A.A.A.A.A.S.H.S.S.S.A.A.G.S.Z.G.S.A.A.h.A.g.J.h.D.D.h.A.h.h.D.A.h.h.h.g.h.g.g.h.h.h.z.h.h.z.h.h.h.h.h.l.l.h.f.j.k.k.h.g.g.g.g.g.f.g.g.g.g.a.h.g.h.g.g.h.h.h.l.g.z.l.z.h.k.h.h.l.h.k.g.j.k.f.f.z.a.a.a.z.a.g.a.g.g.k.g.j.g.h.h.H.A.A.h.A.h.A.H.S.S.A.H.S.H.L.D.H.H.H.L.L.S.U.S.H.H.H.H.H.H.H.Z.H.H.S.S.H.A.A.A.h.h.g.g.z.f.a.a.a.a.a.a.a.a.a.a.a.a.f.a.z.z.i.i.k.f.k.k.k.k.k.k.z.k.k.g.f.f.a.d.f.a.a.a.a.a.a.a.f.i.i.f.a.u.a.a.i.i.a.a.a.a.a.a.a.i.u.a.a.i.i.a.i.a.i.a.a.a.z.d.a.a.a.d.i.a.a.i.a.a.a.k.d.d.k.k.k.h.l.l.h.l.A.A.G.A.A.A.l.S.S.S.P ! / BXVXVXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXAXDXGXSXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXGXDXAXDXDXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXDXFXAXZXDXZXBXpX} Q Q ` (.(.(.[././././.~.~.~.T.T.~.~.T.[.T.~.~.T.T.~.T.T.T.~.XX~.~.T.(././.~././././.(.(.(.(.(.(.^.(.|.(.`.(.(.(.(./././.E.~.T.T.T.T.U.P.P.L.L.P.L.L.P.L.L.L.L.L.L.L.L.L.L.L.L.U.S.H.U.U.H.L.L.U.L.L.L.P.P.P.T.T.Y.Y.Y.T.T.T.T.T.P.P.P.P.L.U.U.L.A.P.A.G.H.H.H.G.A.H.g.S.h.h.h.k.f.f.d.f.f.d.f.f.f.f.f.k.i.k.f.d.f.i.f.k.z.f.d.f.k.z.g.k.g.k.g.g.g.g.g.g.g.g.A.h.h.A.h.g.A.A.A.A.A.A.A.A.A.A.A.h.A.G.A.S.S.G.G.H.H.D.A.G.H.H.H.S.L.H.L.L.L.L.I.U.U.U.T.Y.T.Y.~.T.~.~.~.(.~.(.~././.T.~.~./.~.T.~.~.T.~.~.T.~.T.T.~.T.~.~.T.~.T.T.(.T./././././.~.(.~./././.!.(.(.(.(.(.|.(.|.(.(.(.^.(._._._._._.}.}._.", ") L ) H ) ) I I ) P P P ) J P P J J I J P L L J K H H Z H H H D Z L Z Z Z Z S H H Z H Z Z H G G H Z Z Z D Z D D D D D D D D Z Z Z G Z Z Z D Z D D Z J Z G G H A / gXgXgXaXpX{ / u u = y r r ; : r r r r r r r r r r r r r r : 0 r r r r r r r r r r r r r : r r r r r r e q r r r r r r r r r r t 0 q r : t r * q 0 y r r r r r r r r r * y t r r r r r r r r r r r r r r r r r r r 0 e r r r r r r r r r r r r r r r r y ; e e y : u n c u u Z t.a.a.i.u.a.i.i.i.i.i.a.i.i.s.i.i.i.a.a.a.a.g.a.g.z.g.g.k.k.z.h.l.l.l.A.h.A.A.A.S.S.S.S.S.H.H.Z.A.H.A.S.A.A.g.S.A.A.h.g.A.h.h.A.z.A.A.h.g.l.h.h.k.S.g.g.z.g.h.h.k.h.h.k.h.h.h.h.h.g.g.h.g.h.g.f.g.a.g.z.f.g.g.a.z.g.g.z.g.g.k.g.f.h.k.g.g.g.z.g.h.h.h.k.k.k.k.k.f.f.f.f.a.d.g.g.a.z.k.k.g.z.h.h.A.G.h.h.z.h.A.A.A.S.A.A.A.H.H.S.S.S.S.L.H.S.D.L.L.L.S.S.U.S.H.H.H.H.H.H.A.H.S.S.A.A.A.A.h.g.h.h.k.k.f.f.k.a.a.a.a.a.a.a.a.a.a.a.a.a.a.z.i.k.z.i.k.h.k.k.z.g.k.k.k.z.f.g.f.a.k.f.f.a.a.a.i.i.i.d.a.a.a.a.i.a.a.a.a.a.u.a.u.a.a.a.a.i.i.i.i.i.a.a.a.a.i.a.a.a.a.d.i.i.a.a.a.a.a.a.k.k.k.x.k.k.l.l.h.h.h.h.h.A.A.G.S.S.S.S.S ! ! CXVXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXSXGXFXFXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXAXDXDXBXQ.[ ! ! ` (.(.(.(.(./.~.~.~.~.R.~.~.T.~.T.T.~.T.~.~.~.T.[.(.XXE.U.T.~.~.~.~./././././.(.(.(.(.(.(.(.`.(.(._.(.(.(./././././.T.T.~.T.T.T.T.P.P.P.P.L.L.P.P.L.U.L.L.S.L.L.L.L.L.L.L.L.U.S.L.H.S.L.D.L.L.L.L.P.P.P.Y.T.Y.XX[.~.T.T.~.T.T.Y.P.L.P.U.U.L.L.L.D.H.H.H.H.H.H.G.H.A.A.h.k.g.f.f.f.d.f.d.d.d.j.f.f.f.f.k.d.k.f.f.f.d.i.f.f.f.d.f.g.g.k.k.g.g.k.g.g.z.z.h.g.h.D.h.g.h.A.A.A.A.h.h.A.l.h.A.A.A.A.A.G.S.H.A.G.D.D.H.A.H.H.H.H.L.S.L.S.H.L.L.L.L.Y.Y.U.T.Y.T.T.~.T.~.~.~.~.~./.~.~./.^.(.T.(.~.T.~./.T.~.~.T.~.~.T.~.~.~.~.~.~.~.~././.!./././.(.~.(./.^./.(./.(.(.(.(.^.(.^.(./.|.(.(._._._._.}.{._._.", ") ) ) ) I ) I I P ) P ) I P P P P P P P P H Z H H H H H H H F H H H Z H H S Z Z Z H Z Z Z Z H Z D D D H C Z D D Z H D Z D D Z Z H Z Z Z Z Z D Z Z Z Z L Z Z A ` gXgXgXaXm.' Q u : e r q r : : e r r r r r r r r r r r r e r r r r r r : * y e r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r e r r r r r r r r r r r r r r e 0 r r r r r r r r : r r r r r r r r r r r r r r r r r r r : 0 r r : 0 : r 0 r r r > u t u u c > u Z e.i.a.i.a.s.i.i.u.s.u.i.i.i.i.i.i.a.i.a.a.a.z.a.z.g.g.g.g.h.z.z.h.h.l.h.A.A.A.S.S.S.S.S.S.S.A.A.S.H.S.A.A.A.A.h.A.h.D.h.h.h.h.h.z.g.A.h.l.h.h.h.g.h.g.g.g.g.g.k.h.g.g.h.h.g.k.g.h.h.g.k.k.k.j.z.j.k.a.f.k.k.a.a.g.k.g.g.g.g.g.g.g.k.h.z.h.g.g.h.g.g.g.g.g.g.g.f.f.f.f.f.f.a.f.f.f.f.k.g.g.g.h.A.h.h.A.j.Z.A.G.S.A.S.A.S.G.G.S.S.S.H.L.H.H.L.L.L.F.S.L.U.H.H.H.S.S.H.H.H.G.H.S.A.A.A.A.G.l.G.g.k.k.g.f.j.i.z.i.a.a.a.a.a.a.a.f.z.i.d.a.f.f.k.k.k.k.k.k.k.k.h.k.g.a.g.a.g.a.f.a.d.a.a.a.f.d.f.i.a.a.a.u.i.i.i.a.a.a.u.a.a.u.a.u.i.u.i.i.i.a.a.i.a.a.a.a.a.i.i.a.a.d.a.i.a.a.a.a.k.d.g.g.h.z.h.z.h.l.A.A.A.A.A.A.A.S.S.S.~ ~ / CXVXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXDXAXFXSXMXpX[ Q S ` (.(.(.(.^.~././.~.~.~.~.T.T.~.T.~.~.~.T.T./.T.^.T.~.~.T.~.~.~.(./.!./././.(.(.(.(.(.(.^._.(.`.(.(.(.(.(././.!././.~.~.~.T.T.T.T.T.T.U.P.L.L.U.L.L.U.L.L.L.L.L.S.L.L.L.L.L.S.Y.S.oXA.D.U.x.U.U.z.P.P.J.J.E.XXoXT.T.(.P.oXT.T.T.U.oXH.U.G.U.z.U.G.H.H.G.D.L.D.S.S.D.g.A.h.f.f.f.i.d.i.g.g.f.i.f.f.k.g.f.f.i.k.f.f.f.f.d.f.f.f.k.f.k.k.k.k.g.g.k.g.g.g.g.l.l.D.l.D.A.A.A.A.A.h.A.A.A.h.H.A.h.z.H.S.S.S.S.S.A.S.S.K.A.H.H.H.S.H.H.H.L.L.L.L.I.U.U.U.T.Y.T.T.~.~.~.~.~.~.~.~.~.~././.~.(.T.~.T.~.~.~.T.~.~.T.~.~.~.T.~.~.~./.~.(.E.~.(.[.~./.(.T.(.(.(././.(.(.(.(./.(.(.^.(.(.^.(.(._.(._._._._._.|.", ") ) P S I I P I P ) P P I I I I P P H P H H J J H P H H H H H H H Z Z Z D Z Z D Z Z Z Z Z H Z Z D D Z A H Z D D H Z D D D D H D H Z H H D D Z D H H D Z G Z _ gXgXaXpX{ ' n u y ; : r r : 0 : y r * t r r r r r r r q r r r r r r r r r r r r r e r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r e r r r r r r r r r r r r r r 0 r r r r r r r r r r r r r r r r r r r r r r r r r r r y r r r * y r : r r r r = t y y y u n y y Z E i.i.i.i.i.i.s.i.i.u.s.u.u.a.i.i.a.a.a.a.f.g.g.a.z.g.g.k.k.z.h.h.l.A.h.A.A.A.h.S.A.S.S.S.H.A.D.A.A.S.A.A.h.A.A.A.h.h.A.D.h.l.D.l.l.l.h.h.k.g.h.z.g.g.g.g.g.g.g.k.g.k.k.f.g.g.g.z.g.k.h.a.z.a.z.a.g.f.a.f.k.g.a.f.f.g.g.g.g.g.k.g.h.g.k.g.k.g.g.g.g.f.g.f.g.j.a.f.f.f.f.g.a.a.f.h.g.g.g.g.G.h.A.A.A.h.A.A.A.G.G.A.A.A.G.S.S.S.S.H.S.L.H.L.S.H.L.H.U.S.H.S.H.L.S.H.H.G.H.S.S.H.H.A.A.g.g.g.g.h.k.g.f.z.a.g.i.a.g.k.a.k.a.a.a.k.k.i.f.d.f.f.k.k.l.l.k.h.k.k.k.k.g.a.f.a.a.a.f.a.d.a.a.i.i.i.d.a.a.a.a.a.a.a.i.a.a.a.a.u.a.i.i.i.i.i.i.i.i.i.a.a.a.d.a.a.a.i.a.a.a.a.a.a.a.z.a.d.k.g.g.l.g.d.D.h.h.A.h.A.A.A.A.S.S.G.G.S ! ! CXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXGXSXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXAXZXFXBXm.} ~ ~ ` _.(.(.(.(.[./.~.~.~.T.T.~.T.~.T.T.~.T.~.~.T./.T.(.T.~.T.~.T.T.[./././.(.(.(.(.(.(.^.(.`.(._.^.`._.(.(.(./.(.(././.^.T.~.~.T.T.T.T.T.U.P.U.U.L.L.L.L.L.U.U.S.L.L.D.L.L.L.L.h.[.IXPXGXPXIXPXIXPXPXIXPXPXPXPXIXPXIXIXPXIXPXIXPXPXPXIXPXIXPXPXPXPXPXPXIXIXdXz.D.S.S.A.S.h.h.f.f.k.i.j.f.a.f.k.f.f.f.f.k.f.f.f.f.f.i.d.f.f.f.f.f.f.g.k.k.g.g.g.g.z.z.k.A.g.l.h.g.l.g.A.j.A.S.Z.h.S.A.h.A.A.A.H.H.z.z.A.S.S.S.S.G.H.S.H.H.H.H.L.H.H.H.H.H.L.L.L.U.T.T.T.T.T.~.~.T.~.~.~.~.~.~.~.~.[.~.(.~.T.~.~.~.T.~.T.~.~.T.~.~.~.~./././.T.~.~.^.^.T.(.^./.(.(.(.(.(.(.(.(.(./.(.(./.(./.(.(.|.(.|.(._._._._._. X_.", "P ) P ) ) P ) ) P ) ) P I I I I P J P J ( L L J J H H H H H H H H H H Z D Z Z H Z L Z U Z Z Z Z A D Z H F D D D Z H L D H F Z D Z D H Z F Z S Z D Z Z H A c hXgXaXaXM._ S > ; r : : : r r * r r r r r r r r r r r r r r r r r r r e r r r r 0 r r r r r q r r r r r r r r r r r r r 0 r : r r r e 0 r r y : r r r r r r r r r 0 r r r e r r r r r r r r * r r r r r r r r r r r r r r r r r r r r r 0 : r r r r y : r r * r 0 r > r e y > y u u u ; N w.i.a.i.i.i.u.u.i.s.i.i.i.i.i.i.i.a.a.a.g.a.g.g.a.g.g.k.h.k.h.h.h.A.A.z.A.A.S.F.S.S.S.A.S.S.A.A.A.A.A.A.A.h.A.h.h.D.z.A.A.l.l.l.l.h.h.z.g.g.a.g.g.a.g.g.g.g.d.z.g.g.g.g.g.g.g.g.z.z.g.h.z.z.a.z.a.f.f.k.f.f.d.f.f.a.g.f.g.z.g.h.k.k.g.g.g.g.g.g.g.g.g.g.a.z.k.k.j.f.f.f.a.z.k.g.h.h.h.g.h.A.h.A.g.G.h.A.A.h.G.g.S.H.S.G.H.S.S.L.S.L.S.S.L.L.L.S.U.H.H.H.H.A.H.H.H.G.G.S.S.S.A.h.A.H.l.h.h.k.k.h.f.g.f.z.a.k.a.a.a.a.a.a.k.d.i.f.f.f.f.k.f.k.k.l.k.k.k.k.k.f.f.i.g.g.a.a.a.a.z.a.a.i.d.i.f.a.a.i.a.a.i.a.a.a.a.a.a.a.u.a.i.i.i.i.i.u.d.i.a.a.d.d.a.a.a.a.a.i.i.a.a.a.a.z.a.k.l.z.g.g.g.h.z.h.h.A.A.A.A.S.G.S.G.G.H.~ ! Q CXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXDXFXHXpX[ Q S [ (.(.`.(.(./.~.~.~.T.T.~.T.~.~.T.T.T.~.T.T.T.T.~.T.~.~.~.~.~.T.T.!././././.(.(.(.(.`.(.`.(.`.`.(.(._.(.^.(././././.~.!.T.T.~.T.T.T.T.T.U.U.L.L.U.L.L.L.Y.L.U.S.L.J.P.H.L.L.(.GXPXPXPXPXPXPXIXGXPXPXPXPXGXPXGXPXPXPXPXPXIXPXPXGXPXPXGXGXPXGXPXPXGXGXPXGXGXT.S.S.S.A.A.h.k.a.k.k.i.a.a.a.g.a.g.k.k.k.f.f.f.d.d.f.f.k.i.d.k.f.f.g.f.k.k.g.k.g.z.g.h.l.k.A.l.l.g.A.D.A.Z.A.A.A.A.h.A.A.A.A.A.A.A.G.G.G.A.H.S.S.S.H.S.H.H.H.H.S.H.H.H.L.H.D.L.L.T.U.T.T.T.~.T.T.(.~.~.~.T.T.~.~.~.~.T.T.~.T.E.XX[.~.T.~.~.~.~.~.~.~.(./././././.~././.~.[.(.~.(.(.(.(.(.(././././.(./.{.^./.(.(.(.(./.[.(._._._._. X_.", ") P ) ) P ) P P P ) P I I P U I J J P J L H L J H H H H H H H Z L J Z H Z H Z D Z Z Z Z G Z L Z D D D Z Z D D D Z Z Z D S Z S D Z H Z Z Z L H Z D D Z Z S hXgXaXaX{ _ c t > r q y : : : r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r * t y r * y r r r r r r * r r r r r r r r r y * r r r r r r r r r r r r y r r r r r r 0 e r r r : r r r r r r r r r r r r r r r 0 t * r r r y r r : ; ; y e y u r e > N u.i.t.u.u.u.i.s.u.i.i.i.i.i.a.a.a.a.a.a.g.a.a.g.a.z.k.h.h.h.h.h.h.A.A.A.A.A.S.S.A.S.A.S.A.A.A.A.A.h.h.A.A.h.h.D.d.A.A.h.l.h.l.h.k.h.k.g.g.g.f.g.d.j.g.g.g.g.g.g.g.g.g.g.g.g.k.g.g.k.z.k.f.g.a.a.k.s.a.f.f.f.f.f.f.z.g.g.g.g.k.k.h.k.g.g.g.g.a.f.k.k.z.a.k.k.f.k.f.f.f.x.f.k.h.a.h.h.l.h.A.h.A.A.A.A.A.A.H.G.H.A.A.S.S.H.L.S.S.S.L.L.L.S.S.H.L.S.U.H.H.H.H.H.H.A.G.H.S.h.A.S.H.A.h.h.h.h.k.h.f.j.k.k.j.g.a.z.z.f.z.a.z.s.f.k.f.k.k.f.z.k.k.k.k.h.k.k.g.z.f.f.g.a.d.a.g.f.a.a.a.a.i.i.i.d.u.a.a.a.a.a.i.a.u.a.a.u.u.a.i.u.u.i.u.i.a.i.i.i.a.a.a.a.a.a.i.a.a.a.a.a.a.z.a.z.z.k.k.g.g.k.g.D.h.h.g.j.A.A.A.A.H.H.H.H.! ! ! CXVXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXAXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXAXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXDXFXMXm.' Q / U (.(.^.^.^././.~.~.~.~.T.~.T.~.T.T.~.T.~.T.~.T.[.T.~.~.~.~.~.~.(././.!./.(.^.`.(.(.^.`.(.(.`.(.(.(.(.(.(.(././.!.T.~.~.T.~.T.~.T.T.T.U.Y.Y.Y.U.U.L.L.S.S.S.H.L.L.L.L.L.L.L.PXPXIXPXPXGXGXPXIXPXGXIXIXGXPXGXPXGXIXPXGXGXPXGXGXPXGXPXGXPXIXPXGXIXIXPXGXGXAXBX_.S.S.A.g.z.k.g.g.k.i.f.f.g.i.f.f.f.k.f.k.f.f.k.f.d.d.d.k.f.f.f.f.d.g.k.z.g.h.g.h.z.h.l.l.g.l.l.A.l.A.A.j.j.A.S.h.S.A.A.A.A.A.A.A.A.A.h.H.A.G.S.G.H.H.A.H.A.L.G.H.H.S.H.H.H.L.L.U.T.U.T.T.T.~.~.T.~.~.T.[.[.T.~.T.~.~./.T.(.XXXXU.~.T.~.T.!.Y.~.~.~.~.~./././.~./././.(.T.(.(.(.(.(.(.`.^.(.(.(.^.(.(.(./.(.(.(./.{./.(.(._.(._._._.|.", "I P ) ) P ) P ) ) I I I I I P P P L P H H P H H H H H J F H H H H Z H H Z Z D D D D D D D Z D D D A D D D Z D D H D Z D H Z F H H D H H H Z H Z Z L Z S m.gXaXaXM.' u u > r r 0 r r r r r r r r r r r r r r r r r * r r 0 r r r r r : r r r r r r r 0 r r * y r r r r r r r r r r r r r r r r r r r r r r r r r r y r r r r r : r r r e r r r r e r r r r 0 r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r y ; u y y t ; Z y.s.t.u.i.u.u.u.a.a.i.i.a.a.i.a.a.a.a.a.f.f.f.z.g.g.g.g.l.h.h.D.g.h.S.A.A.A.A.S.A.S.H.h.G.A.A.A.h.l.h.l.h.l.l.A.h.h.h.l.l.h.h.z.h.g.g.a.z.g.g.k.a.a.z.g.g.f.g.g.g.g.z.g.g.g.g.g.a.j.g.g.f.f.i.a.a.k.a.a.f.a.a.f.g.a.g.g.g.g.g.g.g.g.g.z.f.g.f.z.g.f.g.g.f.g.k.j.f.k.k.h.l.z.h.g.A.h.A.h.h.A.A.A.A.A.G.H.A.A.H.A.H.H.H.S.L.G.L.S.H.H.H.U.H.K.K.S.S.U.D.H.H.H.H.H.G.H.S.A.G.A.A.A.Z.h.h.h.h.h.h.z.g.g.h.g.g.g.g.f.f.f.f.z.f.f.f.g.g.f.g.g.h.a.h.f.h.k.a.k.k.k.z.f.f.a.g.a.a.a.a.k.i.i.k.i.i.a.z.a.a.a.a.a.i.s.i.i.i.u.i.u.u.i.u.i.u.a.a.a.a.a.a.a.a.a.a.i.f.f.i.i.f.d.g.k.g.k.k.g.g.h.h.h.g.A.A.h.A.H.S.S.H.H.H.~ S ! ZXVXVXFXFXFXFXFXFXFXFXFXFXFXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXGXSXDXAXDXDXDXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXDXAXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXAXAXBXm.{ ! ! [ (.(.(./././././.~.T.T.~.T.T./.T.T.T.T.T.T.~.~.T.~.T.~.~.~.~.~./.!./.(.(.(.(.(.^.`.`.(.`._._._.|.^.`.(./.~.^.(.~./.!.~.~.T.T.T.~.T.T.T.P.P.P.L.L.L.L.L.L.S.H.H.H.L.L.L.S.U.IXPXPXGXPXGXGXPXAXIXPXSXPXGXIXIXGXPXGXGXIXIXGXPXIXGXPXIXGXPXIXPXAXPXAXIXIXFXgXaXsXA.A.A.A.k.z.k.f.f.k.f.i.k.k.f.f.k.k.f.f.f.f.f.f.f.d.k.k.d.f.f.d.z.g.z.h.h.g.g.A.h.h.h.h.h.h.h.l.A.z.A.A.h.A.A.A.A.h.S.A.S.A.A.A.G.A.G.A.A.S.S.S.H.G.H.H.H.G.H.S.H.S.H.L.L.L.L.Y.T.Y.T.~.T.~.T.~.~.~.~.T.~.T.XXU.XX[./.T./.T.~.~.T.T.~.~.~.T.~.~.~.~././.~.~./././././././.(.(.(.^.{.`.[.(.(.(._.[./.(./.(.(.(.~.`.(.(.^.^.(._._._.'.", ") ) ) P ) I ) P L ( P I ( P P P J J Y P H H J U H H G H H F H H H H H D Z H Z H D Z D D A D D A Z D D D A D D D D D H S Z H L Z D H Z Z Z H F Z Z D Z [ gXaXaX{ ' n : : : = ; e r r r r r r r r r r r r r r e q : y r r r r r : r * y r r r r r r r e r r r r r r r r r r r r r r r r r r r r r r r r r r r r r : * r r r r r r r r r q r r r r r r r r r e r r r r r r r r e r r r r r r r r r r r r r r r r r r r 0 e r r r r r r r r r r y y u y t * 0 T u.u.u.u.u.i.u.u.u.i.i.a.i.a.i.a.a.a.f.f.f.f.a.f.g.g.g.g.h.l.h.A.A.h.A.A.A.A.A.H.S.S.A.A.A.A.A.A.A.h.l.h.l.l.l.h.h.h.l.l.h.g.d.z.g.k.f.z.a.g.a.k.g.z.f.f.g.g.g.g.z.a.g.k.g.g.g.g.g.a.f.f.a.g.z.a.a.a.a.a.g.g.f.a.g.a.i.g.k.k.a.z.g.a.a.z.a.z.g.f.j.g.g.g.g.f.f.f.k.g.k.h.h.h.g.j.A.h.A.A.A.A.A.l.G.A.A.H.H.A.H.H.H.H.H.H.H.L.H.H.A.K.D.U.S.S.L.F.H.Z.H.H.H.H.H.S.A.A.S.A.A.A.A.h.h.h.h.h.h.h.h.h.h.h.g.k.g.g.g.k.f.f.f.g.j.g.g.g.g.g.g.g.h.f.f.f.k.f.i.f.f.i.d.g.d.d.a.z.a.a.i.i.k.i.i.k.i.i.a.a.a.a.a.i.i.u.u.u.i.u.u.u.u.u.u.i.i.a.a.a.a.a.a.a.a.a.i.i.i.k.d.d.f.f.k.k.h.h.h.h.h.h.A.A.A.A.A.A.S.S.S.H.H.H.~ ^ ! BXVXAXZXFXFXFXFXFXFXFXFXFXGXSXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXAXDXFXFXFXFXDXDXDXAXDXSXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXAXHXQ.[ ~ ! ` `.{.(.(././.~.T.[.~.~.T.~.T.T.T.~.T.[.T.~.T.T.~.(.~.~./.~./.~././././.(.(.(.(.`.^.(.^.`.(._.(.(.(.(.(.(.(.[.E.~././.~.~.~.T.T.T.T.T.T.T.T.U.L.L.L.L.H.L.L.S.L.H.D.S.H.D.D.IXGXIXPXSXIXSXGXGXAXAXGXGXGXGXGXSXAXGXAXFXGXDXSXGXSXSXGXGXSXAXGXSXGXFXSXAXBXhXm.c.G.H.h.k.g.j.i.z.f.i.i.z.k.f.f.f.k.f.f.f.f.f.f.f.g.f.f.f.f.f.z.k.f.g.a.g.z.g.g.g.h.h.A.A.A.A.l.A.h.A.A.A.A.A.g.A.A.S.A.S.g.G.G.A.A.G.A.A.G.S.S.G.S.G.H.H.G.G.D.S.L.S.H.L.L.L.L.I.T.T.~.T.~.T.~.~.T.~.T./.T./.XXU.U.E.T./.~.~.T.~.~.~.T.T.~.~.~.~.~.[.T././.^./././././.(./.(.(.(.`.{.^.(.(.(.[.!.(.(.(.(.(.(.(.(.^.(.~.^.(.(._._._._.", ") ) ) S I I I I ) P ) P P P P P P H J H P H H D D H H H H H D H H Z L Z D D D Z Z D Z Z H D D D Z D D A Z D D Z Z H Z H L Z H Z Z H D H H Z Z H D Z _ gXaXgXM.{ u y r r r r r r : 0 r r r r e r e r r r r r r r r r r r r r r r r r r r r r * r r r r r r r r r r r r r r r r 0 r r r r r r r r r r r r r r r r r r r r r e r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r > t : : : y w.u.u.u.u.s.a.u.t.i.i.i.i.a.a.a.a.z.f.f.f.a.g.j.g.g.z.l.h.h.A.h.A.D.A.A.h.A.D.h.z.D.A.A.A.A.A.h.h.h.h.h.l.h.h.h.h.A.l.l.l.k.g.f.d.k.a.z.f.k.f.a.g.a.f.a.f.f.a.g.z.g.g.g.g.g.a.g.j.f.f.f.g.a.a.f.a.a.a.f.a.a.f.z.g.g.k.g.a.k.f.f.f.g.f.f.f.f.f.g.g.g.g.k.h.z.h.k.l.l.h.h.l.h.g.G.g.A.h.A.h.G.H.A.H.A.S.S.H.H.S.H.H.H.L.H.L.L.G.Y.H.I.H.H.L.H.H.L.H.H.H.H.G.H.H.A.A.H.S.A.A.h.j.A.A.h.h.h.h.l.h.l.h.h.h.h.k.h.g.g.f.k.g.g.f.f.g.g.g.g.g.g.g.g.z.a.f.f.k.a.f.f.a.g.z.a.a.a.a.a.i.k.i.z.k.i.a.z.a.a.a.a.i.i.i.i.i.u.i.u.u.u.u.i.a.u.i.a.f.a.i.i.a.a.a.a.i.z.i.i.k.k.k.k.k.g.k.h.h.h.h.h.A.h.A.A.G.S.A.G.H.H.H.H.! ! ! ZXVXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXSXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXAXAXFXFXFXFXFXFXAXDXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXDXDXBXm.} S ! ` ^.{.(./.^./././.T.~.T.~.~.T.T.~.~.T.T.T.~.T.~.T.T.E.!.^.~.^./././././.(.(.(.^.`.^.`.(.(._.(.`.(.^.(.(./.(./.~.(.~./.T.T.~.T.T.~.T.T.P.P.L.U.L.L.L.L.S.L.H.H.G.H.S.H.L.H.A.IXGXIXGXDXAXDXFXAXDXFXAXSXAXAXSXAXAXAXFXDXDXDXDXDXDXDXFXFXZXFXDXAXDXGXSXBXhXpXM.8.h.h.g.k.f.i.z.i.a.a.i.k.i.k.k.a.f.f.f.f.f.f.d.k.g.f.f.f.f.f.f.f.f.g.z.g.g.g.g.h.g.g.A.z.A.A.A.A.A.A.A.A.A.A.A.H.A.A.S.S.H.G.A.A.A.G.A.A.S.S.S.S.H.S.A.H.H.H.H.H.S.S.S.S.L.L.U.Y.Y.T.Y.T.~.~.~.~.~.T.~.~./.T.~.XXT.~.~.~.T.~.~.T.~.T.~.T.~.T.~.[.~.~.[./././././././././.{.[.(./.(.(.`.^.(.{.(.~.(.(.(.(.(.(.(.(.`.~.(.^.(.(.(.{._._.", "I ) P ) P I I I I I ) P P P J P L H J U H H J H H H H H H F H H H Z H L D D D Z D Z F D D D D D D D D D Z D D H H D H D Z H H L Z H H Z Z H H Z Z Z pXaXaXM.[ f u y > y r y r : : y r r r r q r * r r r r r r r r r r r r r e r r r r r r r y : r r r r r r r : r r r r r r r e r r r 0 e r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r : 0 r r q r r r r r r r r r r r r r r r r r 0 r r r r r r r r r r r r r r r r t : e : % % m u.u.t.s.u.u.i.i.u.s.i.a.a.i.a.a.a.f.f.f.f.f.a.g.g.g.g.z.l.h.z.A.h.h.A.h.A.A.h.A.A.h.A.A.z.h.A.h.h.k.h.h.h.h.h.h.h.k.k.k.k.g.z.f.f.g.a.f.a.f.f.a.g.z.a.g.a.g.a.a.f.k.z.a.a.k.z.s.f.g.f.f.a.f.g.a.k.k.a.a.a.a.a.i.k.g.k.k.g.f.f.f.f.a.z.f.f.g.a.g.g.h.k.k.h.h.h.l.l.l.h.l.l.A.j.G.g.A.A.A.A.A.A.Z.A.S.H.A.H.H.H.S.U.H.H.H.H.G.L.H.H.Z.L.H.L.L.H.L.S.L.H.G.H.F.S.H.S.A.A.H.A.A.A.S.A.h.A.z.S.h.A.A.h.h.h.h.g.k.g.g.g.f.g.g.g.g.k.f.g.g.g.g.g.h.f.z.f.g.g.f.f.f.a.i.f.k.k.a.k.i.z.i.i.i.f.i.i.a.a.i.a.a.i.i.u.i.u.u.i.u.i.u.a.u.i.i.i.i.i.k.k.a.a.a.a.i.i.k.i.f.f.f.k.g.g.z.h.g.j.S.h.A.A.A.A.A.S.G.H.H.H.H.H./ ! ! ZXAXFXAXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXDXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXDXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXSXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXCXHXQ.[ ! ! ` {.(.(.(././././.~.~.~.T.~.~.~.T.T.T.~.~.T.[.T.~.XXT.~.~.~.~./././.!.(.(.(.(.(.(.(.(.^.|._.(.^.(.(.(.(.(./.^.(./.!./.~.~.T.~.T.T.T.T.P.P.L.L.L.L.L.H.H.L.L.H.G.D.S.S.H.H.x.PXGXGXGXDXDXDXFXVXAXDXZXZXAXAXAXDXFXFXDXDXSXZXDXDXSXZXFXFXDXFXAXAXAXAXCXHXhXM.{ c h.h.g.f.f.d.i.a.a.a.i.f.i.i.f.f.f.f.f.f.f.d.f.f.f.g.k.f.k.f.g.f.g.g.h.l.g.h.h.A.A.A.h.A.A.h.A.A.A.A.A.A.h.A.A.A.A.S.A.S.A.h.H.l.S.S.G.G.S.D.S.G.S.H.H.H.H.H.H.H.D.L.L.S.L.L.U.U.U.T.~.T.T.T.~.Y.T.~.T.~.T.~.~.T.~.~.~.T.~.~.~.~.~.~.~.~.T.~.~.~.~.[././././././.(.^.(./.^.(.(.(.(.(.(.^.(.(.^.`.(./.(.^.(.(.(.^.^.[.(.(.(.(.(.(.(.(.", ") L I P ) P I I I I ) P P P J P P L J L H H H H H H H H H H H H H Z J Z D D Z Z A D D D H Z Z D D D D Z D D H D F L Z J L Z H Z L Z H H D H Z H P [ gXaXpX{ ' J y y ; r : : : : : r r r : r r r t y r r r r r r r r r r r r r r r r r r r e * y r r r r r r e 0 r r e r r r 0 e r r r r r r r * r r r r r r r r r r r r e 0 r r r r r r r r r r r r r r : * r r r r r r r r r r r r r r r r r r r r r r r r r e r r 0 r r r r r ; r r ; r r r r : e r : ; % * T t.t.u.s.p.u.i.u.s.i.s.a.a.a.f.a.i.j.a.g.f.f.g.g.h.z.h.l.l.l.A.h.S.h.A.g.S.g.A.h.A.A.h.A.h.h.h.h.l.z.h.h.h.k.h.h.f.k.z.z.f.k.f.d.f.a.f.f.f.g.g.a.g.a.g.d.a.g.f.z.k.g.g.a.z.a.g.f.f.i.z.i.g.a.a.a.a.a.f.a.k.g.i.a.f.f.f.k.f.f.f.k.f.f.f.k.a.g.g.g.g.g.h.g.h.h.h.h.k.h.h.S.g.A.A.A.A.S.A.A.A.H.H.H.S.H.H.H.H.H.U.H.H.L.L.U.I.H.R.H.S.L.F.S.H.H.L.H.L.G.L.G.S.G.S.H.S.A.A.A.A.h.A.A.H.A.l.A.A.z.z.A.S.A.h.h.k.k.k.h.g.g.g.g.g.g.g.f.z.g.g.k.g.a.g.a.k.g.a.g.f.f.f.f.a.z.a.k.a.a.k.i.i.z.i.a.a.a.i.a.i.i.i.u.i.u.u.u.u.i.i.u.u.i.i.i.f.i.a.a.f.i.i.k.d.a.a.k.f.f.g.g.z.d.k.h.A.h.A.A.A.A.G.A.H.A.H.G.H.H.H.H.~ ! ~ ZXAXAXAXFXFXFXFXDXFXFXFXFXAXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXGXSXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXSXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXAXDXAXFXAXZXZXBXm.} ^ ! [ (.(.(.(.(././.!././.~.T.~.T.~.T.T.T.~.~.~.~.~.~.~.~.!.^././././.(././.(.(.(.^.(.(.|.(._.{.^.^.^.(.(.(././.(././.~.~.~.T.~.T.T.~.T.U.U.P.U.L.L.L.L.L.S.L.H.H.H.H.F.G.S.S.H.IXIXGXGXDXAXAXAXDXAXDXDXDXAXDXFXFXFXFXAXDXFXFXDXDXDXAXFXFXFXFXDXZXZXFXAXHXhXM.{ c h.k.a.g.i.a.i.i.a.a.f.i.k.i.i.z.a.f.f.f.f.f.f.f.k.f.f.g.g.g.g.g.g.f.h.h.g.g.h.h.A.g.A.A.A.A.A.A.l.A.A.A.A.A.A.J.S.A.H.A.A.S.A.A.S.A.S.S.A.S.S.H.S.S.D.G.G.H.H.H.H.H.S.L.L.L.L.U.U.T.Y.T.T.~.~.T.^.T.~.~.U.E.T.T.~.T.~.T.XXU.E.XX~.T.~.T.[.T.~.[.~.~./.~././.(.(.(.(.(.(.(.[.[.(.(.(.{.(.(.^.(.(.(.(.[.(.[.`.^.(.[._.(.(.(.(.(._.(._.", "I ) I P P I I I ) L P P P P P J L L J L J H P D H H H H H Z H F H Z Z H D D D D D Z D A D H D D D D Z Z D D D Z Z Z H H J Z H H H H Z H H H H H ^ pXpXaX{ { u > ; ; r ; * y * e r r r r : y r r r * r r r r r r r r 0 e r r r r r r r r r r t 0 r r r r r r r r r r 0 r r r r r r r r r r r r r e r r r r r r r r r r r r r r r r r 0 e r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r e r r r r r 0 r 0 r r r r r e y r 0 ; % % q p.t.t.t.u.u.i.i.u.i.i.a.a.a.a.f.a.a.f.h.k.z.g.k.g.g.h.l.G.l.A.h.A.h.A.A.h.h.h.A.g.A.h.h.l.h.h.h.l.z.h.k.g.g.k.k.k.f.k.f.f.k.i.k.a.k.a.a.a.a.a.a.a.g.a.g.z.d.f.f.g.g.g.g.a.g.a.g.a.g.i.z.a.a.f.a.f.a.a.a.i.k.i.k.f.f.f.k.f.i.f.d.f.f.k.f.l.g.g.g.g.h.h.h.h.h.l.h.l.A.g.G.A.g.A.A.A.A.H.A.S.h.A.S.H.S.H.S.H.H.S.H.L.L.S.S.H.L.K.H.U.S.H.L.H.L.H.L.G.L.S.H.H.S.G.S.A.H.H.A.H.h.h.A.A.A.G.l.A.A.A.A.A.z.h.A.D.h.z.z.h.h.g.k.g.g.h.z.z.z.k.g.g.g.z.k.a.k.a.k.f.f.f.f.a.a.a.k.k.k.i.f.k.i.z.i.a.a.a.i.i.i.u.i.u.i.i.u.u.u.u.u.u.i.a.a.i.k.k.i.i.k.i.i.a.k.i.f.f.f.f.k.z.l.g.h.h.A.A.A.A.A.z.H.S.H.H.H.G.H.L.L.S / / BXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXSXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXDXSXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXDXHXHXQ.[ ! ~ ` (.(.(././././././.T./.~.T.~.T.~.~.T.~.T.~.~.~.~.^.~.~.~.!././././.(.(.(.(.`.`.(./.(.(.{.{.(.{.(./.(.(.(.(./././.^.(.~.~.~.T.T.T.T.T.U.U.U.H.L.S.L.L.L.S.H.H.H.H.H.G.G.S.S.GXGXIXGXGXDXAXAXAXDXAXDXAXAXAXFXFXFXFXDXAXDXFXDXAXFXFXFXFXFXFXFXVXFXVXHXBXaXM.n c g.j.g.i.s.a.i.f.a.a.i.z.k.k.k.a.j.f.f.a.f.f.f.k.k.g.g.f.g.g.g.g.k.h.h.h.h.G.h.A.h.A.A.A.g.A.A.A.A.A.G.A.A.A.A.A.S.S.G.A.S.S.D.F.S.S.S.G.H.S.G.H.H.H.H.D.L.H.S.H.H.L.L.L.U.L.I.I.U.U.I.T.T.T.T.T.T./.~.~.XXXX~.XX~.T.~.~.~.~.T.T.~.T.T.[.~.~.~.~.~.~.~./.~././.(.(.(.(.(.(.(.(.(.(./.[.^.{.].(.(.(.^.~.(.(.(.^.`.(.(.(.(.(.(.[.(.(.(.", "I I I I ) I I P L P P P P P P J J J J H J H H H F H H H H H H H H H H D D D D Z Z D Z D F D D D F D D D Z D D D L Z Z H L H H H H H H H H D H D { hXaXM.{ Q u > e r r r * t r r r r r 0 : 0 r r r r r r r r r r r r r r r r r r q e r r * r r r r r r r r r r r r r r r r r r r r r r r r : r r r r r r r r r r e r r r r r r r r r r r r r r r r r r r r r r e r r r r r r e 0 r r r : r r r r r r e r r r : r r r r r r r r r r r r r 0 r r r * > r * * * % % T R t.r.i.p.u.i.i.i.a.i.a.a.a.a.i.g.a.f.k.g.g.h.l.l.h.h.g.A.h.A.A.S.j.h.h.h.h.z.h.h.h.h.h.z.h.h.z.h.k.h.f.g.k.g.f.f.f.f.z.i.f.f.a.a.a.f.a.f.g.g.i.d.f.f.g.a.f.g.d.k.k.z.z.a.d.a.g.f.i.i.g.g.a.f.a.a.a.a.k.i.a.d.d.f.k.i.k.i.f.f.a.f.a.z.g.g.g.g.g.g.h.h.l.l.h.h.l.z.h.g.h.A.A.S.A.A.A.A.S.H.H.H.H.S.H.H.H.H.S.S.D.U.U.L.K.L.J.S.H.L.L.F.K.S.H.H.H.H.H.H.A.H.H.G.H.A.A.A.A.A.J.A.G.S.S.G.H.A.S.A.A.A.D.A.A.h.S.g.h.h.h.g.h.g.g.h.h.l.z.g.g.z.k.k.k.g.z.k.f.f.z.a.k.k.d.d.k.d.f.f.k.i.k.f.a.a.a.a.i.a.i.u.u.u.u.u.i.u.u.i.u.i.a.i.a.a.i.k.a.k.f.k.i.k.k.k.f.g.f.g.g.k.g.h.A.Z.g.A.A.G.h.S.G.H.H.A.A.L.H.H.! ! ! ZXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXSXDXFXFXFXDXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXGXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXDXAXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXVXBXm.} S Q [ (.(.[././.~././.~.~.~.~.~.T.~.~.~.~.T.~.~.~.~.~./.~./.~.(.!.~.(.(./.(.(.^.(.(.(.(.{.(.(.^.(.{.(.^.^.(.(.(./.^./././.~.~.~.~.T.T.T.P.P.P.U.L.L.L.L.S.L.S.H.H.G.L.L.S.G.S.D.GXIXGXGXDXGXAXAXAXAXDXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXGXZXFXVXVXCXaXM.{ c j.g.i.f.i.a.i.a.a.a.i.i.z.a.a.k.k.a.f.f.i.k.k.f.g.g.g.g.k.g.g.k.h.h.h.h.h.A.h.A.g.A.A.S.S.h.A.G.S.z.A.A.W.A.S.S.S.H.A.S.S.S.S.S.S.S.G.D.G.S.H.H.H.H.G.H.P.D.L.G.L.L.L.L.L.L.U.L.I.U.T.T.T.T.T.^.T.[.[.~.~.~.~.~.~.~.T.~.~.T.T.T.(.~.~.~.~.T.~.~.~.~.~./.~././.(.(./.(.(.(.^.(./.(././.(.{.(.(.(.^.{.`.(.{.(.(.(.[._.`.(.[.(._.(.{.(.", "I ) I I P ( P I P P P P P P J L H J J H H H H H H H H H H F H H Z H H Z H D D D D D F D D Z D D Z D D D D D F D Z L L S H Z H H H H H H H H H H pXpXm.{ ' u : : * r r = y 0 r e r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r r r r q r r r r r r r r r r r r r r r r r r r r r r 0 r r r r r r r r r r r r r r r r r r q r r r r r r r r r r : r r ; 0 ; r r r r r r 0 > r * : % & m d.u.r.u.p.a.r.u.u.i.i.i.i.a.f.g.a.g.f.k.g.g.g.h.a.h.l.h.h.D.z.h.h.h.h.k.h.z.h.g.h.h.g.h.h.h.z.z.f.g.k.f.f.g.z.i.f.f.k.k.k.i.i.f.a.a.a.a.a.a.i.z.g.a.z.z.a.f.a.k.d.k.a.g.g.z.g.f.f.g.i.a.a.a.a.a.a.z.a.a.a.a.i.d.i.d.k.d.k.d.f.f.f.f.g.g.z.g.g.h.g.h.h.l.l.l.h.A.A.A.A.A.A.A.A.A.G.A.J.H.A.A.H.H.A.H.H.D.Z.K.L.H.K.H.H.S.U.S.P.L.H.S.L.S.L.L.L.H.H.H.H.K.S.H.A.A.H.H.A.A.A.h.A.A.A.S.S.G.H.S.S.A.S.A.A.A.A.h.A.h.h.h.h.g.h.h.g.h.h.g.g.k.g.k.k.g.g.g.g.g.j.f.g.k.d.k.k.k.a.f.f.i.k.i.k.a.a.a.i.i.i.i.s.i.u.i.i.u.i.i.u.i.i.a.a.i.i.k.f.i.i.i.k.i.i.z.i.f.f.f.f.g.f.g.h.h.A.A.h.G.A.S.S.S.G.H.H.G.D.H.H.! ! ! ZXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXAXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXSXGXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXSXGXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXDXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXDXZXBXm.[ Q ! _ (.^./././.(.~.~.~.~.~.~.~.~.~.T.T.~.~.T.T.!.~.~.~./.~./././.^.(./.(.(.(.(.(.(.(.(.(.(.(.(.(.(.[.(.~.(.(./.(././././.~.~.T.T.T.T.T.P.P.L.P.L.L.L.L.L.L.L.H.H.D.G.S.H.G.D.S.GXPXSXGXGXDXAXAXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXZXVXVXVXHXhXM.c c d.s.s.i.a.a.i.a.a.a.i.k.i.i.z.s.i.a.f.d.k.f.f.k.f.g.f.z.g.g.h.h.h.h.h.h.h.h.A.A.A.A.A.A.H.A.A.A.G.D.A.G.g.G.S.S.H.A.H.H.H.S.S.S.l.H.S.G.G.G.H.G.H.H.H.H.U.A.G.L.L.L.U.U.U.L.U.I.I.I.Y.T.T.T.T.T.~.~.T.[.~.~.~.~.~.~.~.T.T.~.(.~.T.~.~.~.~.~.~.~.~.(.~.~.~./.(././.(.(.(.(.^./.(.(./.[.(.^.^.(.(./.(.^.(.^.(.{.^._.(.^.(.`.(.(.(.^.(.", "I I I I I I I I L P J J P P H P H H L H P H H Z H H F H H H H F H Z L H Z H D F D Z D A Z D D D H S J Z D H Z H Z D H Z H H H H H L Z P H G Z ' pXpXM.{ S y r r r r r r r r t r r r r * t 0 r r : r : t 0 r e > * > e e y 0 e > * y r 0 r r * r : r ; r r : 0 r : e ; ; ; y r ; r r 0 r r : : 0 ; q e * 0 y 0 : y : : y 0 0 : > q r : : r 0 : : : ; y ; e > ; ; ; e q * = > e * r 0 r r r y 0 r e r : y : : t * r r r r e r r r r r r r r r 0 r e 0 r r 0 * % % % E w.t.s.u.i.t.i.u.a.a.a.i.a.a.d.z.a.k.k.k.f.l.a.x.z.l.h.h.h.h.h.h.h.h.k.h.k.h.g.g.g.g.k.h.g.g.k.g.g.g.z.a.g.a.g.a.a.g.a.z.a.a.a.d.a.a.a.a.k.a.a.k.a.k.i.k.g.g.f.k.k.k.k.z.k.d.d.z.a.x.z.a.z.a.a.a.i.i.a.i.a.a.i.k.k.a.z.i.a.z.z.k.k.z.k.z.h.f.l.h.h.l.l.l.h.A.A.A.A.h.A.h.H.A.A.S.S.S.H.G.H.G.H.H.H.H.L.S.U.L.S.L.L.L.L.F.L.L.K.H.H.H.H.H.G.H.L.H.G.H.H.H.S.H.H.H.H.A.H.A.H.A.A.S.S.A.S.S.D.S.S.S.S.l.A.S.A.A.A.h.h.h.h.h.h.h.l.h.h.h.z.k.h.j.f.j.f.g.j.f.f.f.f.f.f.z.g.a.a.g.f.k.z.i.d.i.i.s.a.i.a.i.i.i.u.i.i.u.i.i.i.a.i.a.k.i.a.a.a.z.i.z.d.k.k.k.f.k.k.g.g.g.g.h.g.A.A.A.H.D.A.D.S.S.H.D.G.S.H.S./ / ! ZXZXZXFXGXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXAXDXAXFXFXFXFXFXFXFXVXFXFXZXZXCXpX[ ! S ` (.(./././././.~.~.!.~././.~.~.~.~.T.~.~.~.T.~.~././././././.(.^.(.(.(.(.(.(.(.(.(.(.(.(.(.^.(.[.(.(.!.(.(.(./.[.(.~.~.T.~.T.T.U.U.U.P.L.L.P.L.A.L.L.D.L.D.H.H.G.D.G.H.H.z.PXIXGXGXFXFXFXAXAXHXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXBXhXM.{ c a.i.i.i.i.f.i.k.k.i.k.d.d.f.d.k.k.f.k.d.k.k.j.C > * : e.h.h.z.e.* r r Z j.Z.h.S.z.y ; r 0 ; U S.A.G.z.F.Z r 0 e 0 0 r * > A e.F.A.H.S ; * t 0 y 0 e S [ L.S.L.L.U.U.L.U.L.P.P.L.U.P.U.T.T.T.T.T.~.T.~.T.~.[.[.T.~.~.T.[.~.T.~.~.~.~.[.T.~.~.~.~.XXXX~.!./.E.[.^./.(.(.`.^.(./.(././.[./.(.(.(./.(.(.(._.(.(.(.(.(.^.!._.[._.(.(.|.[.", "I I I P P I P P P J I I J J J H H H L L H H H H H H H H H H H H H H Z Z Z Z Z D D Z Z H H Z D D H Z Z Z S Z Z Z Z Z H H F H H Z Z L H L H L Z M.pXpX{ ' u y : : r r r r r r r : r r r e : y r r r r : * r r * e r e e > = r 0 r y * r e r r r r > r y ; r r r : q : y q = q * y * ; r ; : e * e e ; ; e ; ; : e r : * r 0 : 0 > : e ' { ' ! > : y : y e : : e : ; e ; * e ; r e r r r * y ; ; ; r r : * y y 0 * r r r r 0 r r r r r r r r r r r r r ; r ; ; % % $ m w.s.u.u.t.u.u.u.u.i.i.a.a.f.a.i.z.f.f.k.k.k.g.h.j.k.h.h.f.h.l.h.k.z.h.f.h.k.h.g.g.f.k.f.j.g.k.g.f.g.g.a.a.z.a.a.a.a.a.a.a.a.a.d.k.a.a.k.a.a.a.a.k.i.a.g.a.a.i.a.d.k.a.a.k.k.z.d.a.d.a.a.k.a.s.z.z.a.a.z.a.a.i.k.i.i.z.a.a.k.a.k.k.k.k.z.h.h.l.l.l.l.l.A.A.z.A.A.A.A.A.A.A.A.G.S.S.A.G.S.G.G.H.H.H.H.Z.L.S.L.L.L.L.S.S.L.L.S.H.H.H.H.K.H.G.K.G.H.H.H.D.H.H.S.A.G.A.H.H.G.A.A.S.S.S.S.G.G.G.H.S.S.S.S.S.z.A.A.g.A.l.A.h.h.h.h.S.l.h.h.z.k.g.g.h.g.k.k.h.k.g.g.g.g.g.f.g.g.z.a.f.k.i.i.i.k.i.f.a.a.i.i.i.u.i.u.s.i.a.i.i.i.a.a.a.a.z.a.a.a.z.i.k.k.k.k.f.h.z.g.g.g.g.g.A.A.A.A.S.G.D.D.S.D.L.H.H.G.H.L.S ! ! ZXFXZXZXFXZXFXFXZXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXAXGXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXDXDXAXDXFXDXFXFXFXFXFXFXFXZXZXZXBXQ.} S / [ (.(././././.~./.~.~.T.~.T././.T.~./.T.~.~.T.T.~./.~././.(.(.E.{.!.(.(.(.(.(.(.(.(.(.{.{.(.(.(.{.[.(.(././.(.^./.(.T.~.~.~.T.T.T.T.U.L.L.L.L.L.L.L.S.L.G.H.H.D.G.Z.G.H.G.x.GXGXGXGXGXHXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXBXaXM.n c j.p.i.a.i.i.i.a.i.i.d.k.i.f.k.k.i.f.f.k.d.d.j.C : : : e.g.k.l.T r * r Z h.A.h.A.e.r ; * e y q A.G.F.G.A.S = r r y > r : : y q e.H.A.Z = r e > = ; y q q D S.U.H.L.L.L.L.L.P.P.L.U.U.P.P.T.T.T.~.T.~.~.~.~.[.~.~.~.~.~.T.~.~.T.T.~.[.[.~.~.T.~.~.XXU.~./.~.(.^.(.(.(.(.^.`.(.[.(.(.(././././.(.(.(.(._.[.(.`.(.(.(.|._.(.(.(.(.^.(.^.", ") P P ) K ) P I P P J J J H H J H L J H H U H H H H L H H F H Z H H Z H H H D D Z Z D Z A Z Z L Z L Z Z H H H Z D D H H H H H H H U L H Z H Z m.pX{ { Q y ; e : r r r r r r r r r r r r r r r r = r e * r 0 r [ LXLXLXgXe ; r : : t : ; : r : : y r = y t : r e e * 0 > ; ; : * ; ; y ; : 0 : ; * ; LXLXLXpX0 e 0 : : t : : * t pXPXLXLXLXLXPXpXy t : ' LXLXLX] : = e - M.gXr 0 r ; : e ; r e y 0 r 0 r * y r : r r r r r r r r e r r r 0 r r r r r r r r ; % % $ = u.u.t.i.t.u.u.u.u.i.a.i.a.a.a.g.f.k.k.f.f.f.j.f.j.f.f.h.z.h.z.g.f.f.f.k.z.k.f.j.z.h.j.k.g.g.f.g.z.f.a.g.k.i.g.a.a.a.g.a.a.a.a.a.a.a.a.a.a.a.i.z.i.k.i.k.f.k.i.k.a.a.k.a.a.d.a.a.a.a.a.a.a.a.a.z.s.a.a.i.a.a.i.i.f.i.i.a.k.k.k.k.k.k.k.h.h.h.h.h.h.A.A.A.A.A.A.A.A.S.H.H.S.S.S.H.H.H.H.H.L.G.D.H.U.S.S.L.H.L.S.L.S.L.D.U.D.H.U.S.H.H.H.H.K.H.L.H.H.H.H.H.H.H.H.H.A.H.A.H.H.H.H.H.H.H.H.G.H.G.G.H.G.D.H.A.l.A.A.A.A.h.h.h.h.z.h.l.l.h.g.z.z.h.h.j.h.a.k.g.f.g.g.g.z.j.k.k.z.k.f.i.f.i.a.a.i.i.a.a.a.s.i.i.i.u.i.i.i.i.a.a.a.a.z.i.a.a.z.i.k.k.f.f.k.k.k.k.h.k.g.g.h.A.A.A.l.A.A.S.A.L.S.P.H.H.H.H.H.H.S / / CXVXZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXSXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXFXFXFXFXFXFXFXFXFXFXFXFXDXDXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXDXDXDXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXAXFXFXFXFXFXFXFXZXZXFXBXm.[ Q ! _ (.(.(./././.^.E.~.~.~.~./.T.~.T.~.T.T./.~.~.~.~././.~././.~.~.(.(.(.(.(.`.(.(.(.[.(.|.^.(.(.(.).(.[.`.(.(./././.^./.~.~.T.T.T.U.U.U.U.P.L.U.L.L.L.H.L.D.H.H.H.L.S.U.D.D.D.PXSXGXPXCXFXVXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHXJXhXM.c c s.s.i.i.k.i.k.a.k.a.f.i.f.f.i.k.f.f.f.g.d.z.j.C t = e T g.z.z.e.y r : Z g.A.l.g.U r y ; : : r T H.L.G.h.Z r e : q = q q : r 0 A K.H.Z r e : q q y : ; ; q b.S.L.L.L.L.U.P.L.P.L.L.U.P.P.T.T.T.T.T.~.~.T.T.T.~.~.~.[.~.T.~.T.~.~.~.~.T.~.[.~.(.T.E./.T././.(./.(.(.^.(.(.(.(.(.(./.(./././.(.(.(.(.(./.^.(.!.(.`.(.(.(.[._.[.(.[.{.(.", "I I P P I P J P I H J J I H L J L H H H Z H H H H H H H H H H H H H H Z Z Z D D Z D F D D Z Z F H Z Z Z L Z Z H D D D H H H H D D D L H H H ~ pXM.M.' u y y e > r r r r r r r r r r r r r r r r y r : : r 0 0 { LXLXPXIX; ; : * > * = t : ; ; ; 0 0 r y * y 0 e : e 0 * e ; e e = y e r 0 y = > r e LXLXLXpX= * * r : : : : n IXLXLXLXLXLXLXLXLXgX% : { LXLXLX{ * y ' IXLXBX; 0 0 0 > : * r ; ; r r 0 : * * r : r r r r r r r r 0 r r r e r r r 0 ; * r r ; ; % % $ T t.t.u.u.u.u.u.u.t.u.i.i.a.a.i.a.k.a.a.a.g.g.a.f.z.j.f.h.a.k.k.g.h.f.k.f.f.h.f.a.f.f.h.g.f.g.g.g.f.k.i.g.i.a.a.a.g.a.a.a.a.a.a.i.a.a.a.a.a.i.d.i.i.k.i.i.k.k.i.a.k.a.a.a.k.a.a.a.a.z.d.a.a.a.f.a.z.a.f.a.a.f.i.i.a.a.k.k.a.f.k.k.k.h.g.k.D.A.h.A.A.A.A.A.G.G.A.G.G.A.H.S.H.H.S.H.H.H.H.H.H.H.H.H.H.S.L.L.L.L.L.L.L.U.H.Z.U.H.H.H.D.S.H.H.H.G.H.L.H.H.H.H.H.H.S.H.H.H.H.D.G.H.H.S.H.S.H.H.H.G.H.G.D.A.H.G.A.A.A.A.A.S.z.l.S.l.l.l.z.h.g.z.h.h.z.h.h.h.k.h.k.g.g.h.a.j.k.a.k.k.z.z.i.f.k.f.f.a.a.a.a.a.a.a.a.i.i.i.a.i.i.i.z.i.i.z.z.i.z.d.k.f.f.k.f.k.l.d.h.h.h.g.A.A.h.S.A.S.G.S.D.D.A.H.D.H.L.S.H.! ! ! CXZXZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXGXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXAXDXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXDXGXAXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXDXZXVXBXm.} S ! [ (.(.(././.^.^././././././././.T.T.~.T.T.~.T.T.(./.~././.(.(.(.{.(.(.(.(.(.].(.(.(.(.(.(.(._.^./.(.!.^.(./.(././.~./.~.T.~.T.T.T.U.U.L.L.L.L.L.L.L.S.L.L.D.H.H.H.H.S.D.D.z.DXPXGXGXSXFXAXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXaXpX{ c a.s.a.i.i.i.a.f.i.f.z.k.d.f.f.f.f.k.k.z.f.k.j.C : r y T Z.h.G.T q r : A A.A.l.Z.A r : A = r r U S.S.S.S.A > ; ; b.F.F.e.: e 0 > H.L.Z : ; ; [ Y.Z.G ; y ; Z U.G.L.L.L.L.L.P.P.L.U.U.P.T.T.P.T.T.T.T.T.~.~.T.~.~.~.~.~.~.~.~.~.~.~./././.T./.~.~.~.T././././.^.^.(.`.`.^.(.(.[.(.(.(.(.(././.~.(.^./.(./.(.(.(.^.^.`.(._.(.(.(.(.^.{.", "I I I J P P P P J P P L J L H H H K H L H H H H H H H P H H H H H H H H D D D D D A A D Z D F D Z H Z Z Z Z S Z D D H H H H H H H L L L Y P ' m.M.{ / u e r r r r r r r r r r r r r e r r r r e r 0 : * e y e ' LXLXLXIX* > % * 0 r ; t y : ; ; e ; ; > * q * y = ; r e y * * = y ; : = * t * * > ; LXLXLXpX; % r ; t * e e IXLXLXLXPXIXIXPXLXLXLXpX$ u pXpXpXu - > gXLXLXUX> % * * : t : : e > : ; ; ; y : 0 : r r r r : r r r r r r r r r r r r ; = ; r ; % % $ o G r.t.u.u.u.u.u.u.s.i.i.s.i.a.i.a.a.a.a.f.a.f.f.f.f.g.f.f.z.a.g.f.z.k.k.k.z.f.f.z.f.f.h.f.g.k.k.g.f.f.i.d.k.a.a.g.a.a.a.a.a.a.a.d.a.a.a.a.a.a.a.a.a.a.z.z.i.i.i.i.a.a.d.a.a.a.d.a.x.a.a.z.z.z.i.i.z.z.a.a.a.a.k.i.i.f.i.f.f.g.k.k.k.h.h.A.h.A.A.A.A.S.A.S.S.A.A.H.H.G.H.S.S.H.H.S.H.H.H.H.G.H.H.L.G.L.H.L.L.L.L.L.L.S.H.H.U.L.Z.P.L.L.S.L.S.L.G.H.G.L.G.L.H.H.H.H.H.G.H.H.G.S.H.S.S.H.H.H.G.H.H.H.S.H.S.S.A.A.z.h.h.h.h.h.z.l.h.l.h.h.h.z.h.h.h.h.h.g.g.z.h.g.g.g.g.g.k.k.g.f.f.f.f.k.f.i.i.a.a.a.a.a.a.a.a.a.i.a.a.a.a.k.a.i.a.a.a.i.k.i.f.f.k.g.g.g.k.z.h.l.h.l.A.A.S.S.S.S.G.G.D.S.H.S.S.G.H.H.H.S Q ! HXVXFXFXFXFXFXFXFXFXFXFXFXDXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXZXZXAXBXm.{ / ! _ (.(.(.(./.(.(.(.!.~.).~././.T.T.T.~.T./.~.~.~././.~./.{./.(.(.(.(.(.(.(.(.{.^.(._.^._.^.(.|./.|.(.(.(./.(.(./././.~.!.~./.T.T.U.P.L.L.L.L.P.L.L.H.L.S.S.H.H.D.L.U.H.G.S.D.IXIXIXGXVXZXAXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXVXBXhXM.8.n s.s.i.a.a.a.d.i.k.f.k.f.f.f.d.k.k.f.a.j.k.k.a.C * ; r U T U T Z 0 y ; Z g.A.A.e.y r q U J r e q Z.G.G.G.C : 0 q e.U.S.h.y * r y U.H.Z : : y e.L.H.Z.q ; ; 0 F.D.H.U.L.U.U.P.L.L.K.U.P.P.T.T.T.Y.T.~.~.~.~.T.~.~.~.~.~.~.~./.~./.~.~.~.(.~.~.~.T.~.(././././.(.(.(.(._._._.(._.(.(.(.(./.(./././.^./././.(.(.(.[.`.(.(.(.[._.(.(.(.].", "I J I I J P P P P L J J L L H L H L H H H H H H H H F G H H H H D H Z H D D D D Z H D D D D D D Z Z Z H H Z H H D D Z H D H H H Z U Z L Z Z { pXM.{ Q : r 0 r r r r r r r r r r r r r r r r r r r r e r = : : { LXLXLXgX- % % * % * ; ; : * ' pXpXpX' t ; > = 0 ; t { hXpXpXM.x ; r ; * = c aXpXm.; LXLXLXpX% % % % : r % { LXLXLXPXf > o n PXLXLXIX% e ' { { > % ' IXLXLXIX' c t { { ' u : : > ' { { ~ ; y r e e 0 r r r r r r r r r r r r : r 0 : y ; r ; ; % $ $ q r.u.t.u.t.u.t.u.u.u.u.i.i.i.i.i.a.i.a.a.a.f.a.f.a.a.g.f.a.f.a.g.a.f.f.f.k.k.f.f.g.j.f.h.f.k.k.f.f.f.k.f.i.a.f.a.a.f.a.a.a.a.a.a.u.i.a.a.d.a.a.a.a.i.i.a.a.d.z.a.a.a.a.a.a.a.a.d.d.a.a.a.a.i.i.z.a.i.f.a.f.i.i.z.k.f.k.f.f.g.g.k.h.h.h.g.D.A.h.h.A.h.A.S.S.S.H.H.G.H.H.H.H.H.H.H.S.H.H.H.L.H.H.H.H.H.L.L.S.F.L.S.H.K.H.F.L.L.L.D.U.F.L.L.L.L.H.H.H.H.H.H.H.L.H.H.L.G.L.H.H.H.H.H.H.H.H.H.H.H.H.H.H.G.S.S.A.G.H.A.A.S.z.H.A.l.A.h.h.h.h.h.h.h.l.h.h.h.h.g.h.g.g.g.g.j.k.j.a.f.f.f.f.i.f.k.i.i.k.k.a.a.a.a.a.a.a.a.a.a.a.a.a.k.f.z.a.z.d.z.f.i.f.g.k.h.k.h.l.A.h.A.A.A.S.S.S.A.G.H.S.S.H.H.S.H.H.A.L.) Q ! ZXVXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXAXFXFXFXFXFXFXFXFXFXFXFXFXZXZXFXFXVXFXHXQ.[ ~ ! [ _.(.(._.(./.(././.(.~.~./.T.~./.T.~.~.T.~.~.T.~./././.~.(.(.(.{.(.(.].`.(.(.^.(.(.{.^.`.(.|.(.(.(.^.(.(././././.^.~.~.~.T.T.T.U.U.Y.U.L.L.P.P.L.L.L.L.L.L.S.L.H.S.H.H.H.D.GXGXGXGXGXHXZXFXAXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHXBXaXpX{ c a.s.i.a.a.a.f.i.g.f.f.k.k.f.g.f.f.k.z.g.g.g.j.Z y ; 0 y = * : : * : > A h.A.h.Y ; r q b.T * r r T A.G.H.Z : 0 0 U T ) u r : r D L.Y.Z : e = b.L.S.U.A y ; 0 n.G.D.U.L.Y.L.P.L.L.U.U.Y.T.Y.T.T.T.T.T.~.T.T.[.~.~.T.[.~././.~././././.[.T.(.~.(././././.(.^.(.(.(.(._._._._._.(.(.(.(.(.(./.(.(./.^././.(././.(.(.^.(.(.^.(.(.(.(.(.(.", ") P P I J P P J P H J H L L L Z H H P H H H H H H H H H H H H H H H L H D D D D D D D D D D Z D Z J Z S L D H Z H Z L H H D H H Z J Z L S J [ { { ' c y r r r r r r r r r r r r r r r r 0 r r * 0 ; : y : : w ' LXLXLXIX& % % % * * e : u HXLXLXLXLXLXgXc > r : sXPXLXLXLXLXLXLXaX; ; * M.LXLXLXLXIXLXLXLXpX$ - % % * : ; aXLXLXLXaX% $ $ $ { c - o % c LXLXLX' $ LXLXLXLXLXLXIX% PXLXLXIX% ; ; LXLXLXpXe > * e r r r r r r r r r r r r r r r r r ; ; q e ; ; % $ $ * t.t.u.t.u.t.u.s.u.u.u.i.u.u.i.i.i.i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.k.k.k.k.f.f.j.j.f.f.a.f.k.k.f.f.k.z.i.k.f.a.a.a.a.a.a.a.a.a.i.i.i.i.i.i.a.a.a.a.k.k.i.a.k.i.a.z.a.i.i.a.i.i.d.i.a.a.a.a.z.i.i.a.z.a.z.s.f.f.k.d.k.f.f.f.g.g.k.h.z.A.A.A.A.H.A.A.S.G.S.G.S.H.H.H.H.H.H.S.H.H.H.H.H.H.H.H.H.U.S.L.L.U.L.L.S.L.L.S.L.H.S.L.S.L.A.L.A.P.S.L.S.H.H.K.L.K.H.S.L.L.L.L.G.G.H.H.L.H.H.H.L.H.S.L.H.H.H.H.S.S.S.A.S.A.A.A.H.A.A.A.G.g.h.l.l.l.h.l.h.l.l.h.h.h.l.l.g.h.k.f.k.k.k.f.f.j.f.f.i.k.f.f.k.k.a.a.a.i.a.a.z.i.s.a.i.z.k.i.z.i.f.i.i.z.f.k.k.f.g.z.h.z.h.h.h.A.A.A.S.S.S.H.G.S.S.H.G.D.S.S.S.S.G.G.! ! ! BXVXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXDXZXZXZXZXZXBXm.[ ^ Q ` (.(.(.(.(.(.(.(./././.(.~.~.T.~.~.T.~.T.T.~.T././././.(.(.(.(.(.(._.`.(.{.(.(.(.(._.`.^.^.^.|.(.[.|.^.(.(.(././.~.~.~.~.T.T.T.U.P.P.P.P.P.L.L.L.L.L.L.L.H.S.D.U.S.H.H.H.G.IXPXGXGXDXDXFXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHXBXaXM.{ c w.s.i.f.a.k.i.k.f.f.k.f.k.k.g.k.k.g.k.g.a.z.j.C ; r : = : : : r 0 e e A g.A.j.u e ; r S.Z.y e 0 L H.S.S.A r r : y : r 0 : y C S.P.D.S r r : b.T.L.U.Z : ; ; b.U.L.L.L.A.S.L.U.L.L.R.U.T.T.Y.T.~.Y.~.~.T.T.~.~.~.[././././.~./.~.~.^.~.~.(.~././././.(.^.(.(.(.(._.(.(._._._.(.(._.(.(.(.(./././././././.(.(.^./._.!.(.(._.(.(.^.(.(.", "J P P P J Y K U K L P H H H L L H H H H H H H U L H H L F H F H H L Z Z D D D D D D D D D D D D Z Z H H Z D Z Z L Z H H H H F H S L J Z P J c.{ ' ' u r : : r = r r r r r r r r r r r r r r r r ; y : : r ; & { LXLXLXgX$ $ $ * r : : : IXLXLXLXLXLXLXLXIXe : u LXLXLXLXLXLXLXLXLXc * c LXLXLXLXLXLXLXLXLXM.& , % % ; * ; gXLXLXLXn $ $ $ o o o $ & , n LXLXLXc % LXLXLXLXLXLXgXo sXLXLXLXu ; ' LXLXPXc % ; ; : r r r r r r r r r r r r r r r r r r r ; ; e ; % $ o $ u.t.u.u.t.u.t.t.u.u.t.p.u.u.u.i.i.i.a.a.a.s.a.a.a.k.f.i.a.g.g.a.a.a.k.a.f.j.j.f.f.j.f.f.g.g.f.f.f.i.i.k.i.a.a.a.a.a.i.a.a.i.i.i.i.i.i.u.d.a.a.a.a.i.a.z.a.i.f.i.i.i.a.a.i.i.i.a.a.a.a.a.a.i.z.z.i.z.a.z.a.i.f.k.f.f.f.f.f.g.k.h.h.h.h.A.g.z.A.H.A.S.G.S.G.H.S.H.H.G.H.L.L.H.L.H.H.H.H.S.H.H.H.H.H.H.A.S.L.L.H.H.L.H.L.S.L.L.L.P.L.L.D.L.L.H.K.L.H.H.L.H.L.A.L.L.H.L.L.L.G.L.H.H.L.H.L.L.L.H.H.H.H.H.H.S.S.S.A.A.S.S.A.A.A.h.A.A.h.l.l.l.h.l.l.A.h.h.h.l.l.h.h.g.h.g.j.k.z.f.g.k.i.f.k.i.f.a.a.k.a.a.z.k.a.a.a.i.z.a.a.a.k.i.i.k.z.i.i.g.g.z.g.g.k.h.h.h.h.h.A.G.l.S.H.H.S.S.G.D.S.G.A.S.S.A.S.H.S.~ ~ / ZXVXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXSXGXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXDXHXDXZXZXZXHXQ.} Q Q [ (.(.(.(.(.(.(.(.(.).(.~.(.~.~.T.T.~.T.~.~.T.~.~./././.~.~.(.(.~.(.(.(.(.{._.(._.|.^._.`.`.`.(.^.(./.(.(.^.~.(.[./.~.~.~.T.T.T.T.Y.U.U.U.P.P.L.L.L.H.L.H.H.L.L.S.U.G.H.G.G.GXFXIXGXGXFXAXAXFXFXHXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXBXhXM.{ f j.s.k.i.a.a.i.f.f.f.g.g.z.f.f.g.g.g.k.g.g.g.j.C y r ; u Z A Z A 0 > r A g.A.A.* r y q T T t : : : F.H.S.S y 0 : : e 0 y > T L.P.P.T.Z r r q j.L.S.U.Z r : = Z.L.H.L.L.L.L.L.L.L.L.L.U.U.Y.T.U.Y.Y.T.T.~.T.~.~.~.~.~.~.~./././.~./.~.~.~.~.[.T./././.!.(.(.(.^.{.(.^._._._.(.(.(.(.(.(.(./.(././././././././.^.^.(.[.(.(._.[.(.(.(.(.", "P P P P P J P J H L J J J L L H D H H H H H H H H L H H H H H H L Z D H D D Z Z D D D Z D D D D Z H Z Z Z L Z L H D H H H D H H H H Z H P J { { ' ' t : r r r r r : r r r r r r : r r r r : r r : r e y y = t ' LXLXLXgX $ $ & % - > M.LXLXLXM.; M.LXLXLXpX- { IXPXLX{ % c LXLXPXpX% aXLXLXLX{ % gXLXLXLXM.$ $ % % ; * ; IXLXLXLX' o o o $ $ $ o $ $ ' LXLXLXn , c IXLXLXIXc c o f PXLXLXpXo aXLXPXgX- ; ; ; ; e 0 r r r r r r r r r r r r : r r 0 ; 0 r y ; % $ o t.r.E t.s.u.u.u.u.t.u.u.u.u.u.u.u.i.i.a.i.i.i.i.i.i.i.a.i.i.i.a.a.a.f.a.f.g.f.a.z.a.g.a.g.f.f.k.a.i.z.a.g.f.a.a.i.a.i.i.i.i.a.i.u.i.i.u.i.a.i.a.a.i.a.a.a.k.i.a.a.z.i.a.a.a.u.a.i.i.a.a.a.a.z.i.k.f.i.k.f.f.f.f.k.k.g.g.h.k.h.h.A.A.A.A.A.H.A.H.S.G.S.G.H.S.H.S.L.L.L.S.L.L.H.L.S.L.S.H.H.H.H.H.H.H.H.S.U.H.H.H.H.L.L.L.L.L.L.L.P.L.L.P.L.L.L.L.S.L.S.L.L.U.L.S.L.S.L.L.L.L.F.A.D.L.S.L.S.H.H.H.H.H.L.D.S.G.S.S.S.G.h.A.A.A.A.A.A.Z.j.A.A.A.h.A.A.l.A.h.l.h.h.h.h.j.z.g.g.f.f.k.k.f.f.f.f.k.f.f.f.g.a.s.j.a.k.k.k.f.a.k.k.f.f.i.a.g.f.d.a.j.z.h.h.h.h.G.j.A.A.G.J.h.S.H.H.S.H.D.G.S.S.S.A.S.S.S.A.S ! / CXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXGXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXDXDXAXDXAXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXDXAXDXAXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXDXAXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXZXBXm.} ~ ! [ (.(.(._.(.(.(.(.(.(././././.~.~.T.~.T.~.~.T.T.[.!././././.(./.(.(.(.^.^._.^.|.^._._._._._._.`.(.(.|.(././.(./././.~.~.R.T.T.T.I.T.U.U.U.P.P.L.L.L.L.L.L.L.S.L.H.L.S.H.F.G.GXIXGXGXGXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXgXhXM.{ c j.f.k.a.a.g.f.f.f.l.k.h.k.k.h.k.g.g.a.j.h.g.h.Z e 0 > e.g.h.h.e.t e r A D.g.P e 0 > y ; : r e ; 0 T A.L.S ; * e e.b.* q e r e.L.U.G.S * : * F.U.U.L.r e e 0 F.H.L.S.S.U.L.U.L.L.L.Y.U.U.T.U.P.T.T.T.T.[.~.~.~.~.(.~./.!.~.~.^./.~.~.^.T.(.(././.(.(.(.(.(./.(.(.(.^.(.(._._.^.(.(.^.(.(.(.^././././.[.(././.(./.[.!.(.(.(.(.(.(.(._.", "P ) P P P P P J J H L Z L L H L H H H H H H H H H H H F H H H H L J L Z D D G D D D D D D D D D Z Z H Z Z H Z Z H H H F H H H H L H D J Z K ] { ' ! u t : r r r r r r r r e r r 0 r r r r r r r r y r = : * e { LXLXLXIXo $ , - * ; % gXLXLXIX$ $ - IXLXLXgX; & % - f { pXIXLXLXLXsX- gXLXLXIX- & - LXLXLXsX$ o $ % % ; - BXLXLXLXc , $ o $ - - $ % , c LXLXLXc & - gXLXLXgX $ $ o gXLXLXaX- IXLXLX{ % % ; % % % e 0 r 0 r r 0 r r r r r r r r r ; r r ; ; ; % $ o o r.t.i.t.t.t.t.t.u.u.t.t.u.u.u.u.u.u.i.u.i.i.i.i.i.i.i.i.i.i.a.a.a.a.a.a.f.a.g.g.f.f.f.g.a.f.a.k.k.z.a.a.i.a.a.a.a.i.i.a.i.i.d.i.i.i.i.i.i.i.i.i.i.a.z.a.a.a.a.a.a.i.i.a.a.a.i.i.i.i.a.i.a.a.a.a.k.d.k.f.f.f.f.f.k.k.k.g.h.h.h.l.h.h.A.A.A.h.H.S.H.G.H.S.H.S.L.L.S.A.L.A.L.L.H.H.L.H.H.H.H.S.H.H.H.H.S.K.H.L.H.H.H.L.H.H.L.L.L.S.S.S.L.S.S.L.S.L.L.L.U.S.L.L.L.L.L.U.L.S.L.L.L.P.L.L.L.S.D.H.S.H.H.S.A.S.D.G.G.S.S.S.z.A.A.A.A.h.A.A.A.A.A.A.A.h.A.h.A.l.l.l.h.l.l.h.h.h.h.h.z.h.f.g.f.f.g.f.g.f.g.f.g.a.f.f.k.i.f.f.f.g.a.k.k.a.g.i.f.f.g.a.g.j.h.h.A.j.A.Z.A.A.A.H.H.G.H.D.G.S.G.S.S.S.S.S.S.S.D./ ! ! HXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXAXDXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXAXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXSXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXDXSXDXAXAXDXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXGXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXZXZXZXMXm.[ ~ Q ` _._.(.^.|.(.(._.(.(.(././.~.~.~.~.T.~.T.T.~.~.~.~./.[././.(.(.(._.(.|.(.(.|._.`._._._.(._._.`.^.(.(.(.(.(.(./.(.!./.~.~.T.T.T.T.U.T.U.T.P.P.U.L.L.L.K.L.L.S.L.F.L.H.H.S.G.IXIXGXGXAXFXVXAXAXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXCXaXM.n c j.f.a.g.f.g.f.f.f.z.k.z.k.h.g.g.g.g.g.j.S.g.h.V * 0 q e.h.h.S.T 0 0 q Z D.F.V = : y * 0 q r ; y ; A L.A.Z y 0 r b.U.Y = : y y F.L.U.C q y y [ Y.S.U r e = C L.H.G.T.L.L.L.S.L.L.L.L.T.Y.T.T.T.T.T.T.T.T.T./.~.~.~.~./.~.~.~./.~.^.~./.(.(.~./././././.^.(./.(.(.`.`.(._._.(._.(.`.^.(.(.^./././././.(./.(././.(.^.`.].(.(.(.(.(.(.(.", "S I P P J P H J J H L J L L L L H H H H H H H H F H L J L Z H H H H H Z D Z D L D Z D D D D D D S Z L L Z J J Z H F F H D H H H L Z G H H H ' ' ' Q u : r r r r r r r r r r r r r r r r r r r r = r e : q r : ' LXLXLXgXo $ $ w * ; > IXLXLXIX- & $ gXLXLXIX$ % pXIXLXLXLXIXLXLXLXsX$ IXLXLXIXo % o LXLXLXM.o $ % & % * > pXLXLXLXsXo $ o o IXPXgX{ % ' LXLXLX/ , o UXLXLXIXo o o $ n LXLXPXn LXLXPX- $ $ % % ; * 0 0 ; r r r ; r r r r r r r r r 0 r r ; ; ; % $ $ o u.t.u.t.u.t.t.t.t.t.t.t.t.u.u.t.u.u.u.u.u.u.u.u.u.i.i.u.i.u.a.a.a.a.a.a.f.a.a.g.k.f.f.f.z.f.i.a.g.i.g.g.i.a.a.i.i.i.i.i.a.i.u.i.i.u.i.u.i.i.i.i.a.a.a.a.z.k.a.a.a.a.a.i.i.a.i.u.a.i.i.a.a.a.a.a.k.i.k.f.f.k.z.k.k.z.h.k.k.h.h.l.l.A.z.A.z.S.S.H.H.H.H.G.H.Z.S.U.U.L.S.P.P.H.L.S.L.H.H.D.F.H.H.S.H.H.H.K.H.H.H.H.H.K.L.L.H.S.L.L.L.P.L.S.L.L.L.S.L.L.L.S.P.L.L.L.L.L.L.U.P.L.P.P.P.L.L.A.L.U.S.U.S.G.L.H.H.H.H.G.S.S.G.S.S.h.A.A.J.A.A.A.A.G.A.G.h.A.h.j.A.l.l.l.l.l.h.h.h.l.z.h.k.k.g.k.k.k.f.g.a.f.z.a.j.f.i.k.f.k.k.a.z.k.f.a.f.g.g.g.a.h.z.h.h.A.g.h.A.A.A.G.S.H.A.h.H.A.G.D.H.G.S.S.S.S.G.S.A.! ! ! ZXVXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXAXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXDXDXGXAXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXFXFXSXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXZXDXZXZXQ.{ / S [ (.(.^.`.(.(.(.(.(.(.!.(.~.~.~.~.~.T.T.~.~.~.T.T.~.~.~././.(./.(.^.(._.(.^.|._._._._.(.`._.|.^._.(.(.^.(.(./.(./.!.~.R.~.~.T.T.T.U.T.Y.U.P.Y.P.P.L.L.L.S.L.L.L.S.L.L.S.H.D.GXGXGXGXGXFXDXAXAXAXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXBXhXM.{ n j.f.z.f.z.a.k.f.k.l.g.h.g.g.g.k.h.k.a.j.k.k.g.A > e 0 b.l.A.h.e.r > = C Z.e.q 0 0 q S C C A y : y 0 Z.S.A r = * Z.S.H.u y : y U R.U.Z : ; ; y = y e y > q [ U.U.U.H.L.L.L.L.L.L.U.L.I.U.T.U.T.T.T.~.T.T.^.T.~.T.~.~.~.~.~.~.~.~./.^./.^.(.T./././././.(.(.{.(.^.^.`._._._.(.(.(.(.(.(.(.(././././.(././././.[.(.^.(.(.(.`.(.(.(.(.`.", "P I P P P P H J J L L H Z J Z J H H F J J G H D L H G J H F H H Z H H H D D D D Z D D Z D D D D H H H Z H Z J Z H H H H F H H H H L D H D K ' ' ' Q u ; * r r : r r r r r r r r r r r r r r r r r 0 : r = r r { LXLXLXIXn n f c { ' % aXLXLXIX% $ $ IXLXLXsXo pXLXLXLX{ - - LXLXPX6Xo gXLXLXIX& $ - LXLXPX6Xo $ $ % % : ; { LXLXLXLX- o o M.LXLXLXIX% n LXLXLXc $ IXLXLXgXo $ $ $ PXLXLXHXLXLXaXo $ $ $ $ ; * ; r 0 r r r r r r r r r r r r r r r ; ; ; ; % $ $ u.t.u.t.t.t.t.t.t.t.t.t.t.r.u.u.t.u.u.u.u.u.u.u.u.u.u.i.u.i.i.i.i.a.a.a.a.z.i.i.i.a.z.a.a.k.z.a.z.a.a.i.a.a.a.i.i.i.i.i.s.i.i.i.k.u.i.u.u.i.i.i.i.a.a.a.a.i.z.z.i.z.a.a.i.a.a.a.a.i.d.a.i.a.a.a.a.f.k.a.k.f.i.k.k.k.k.h.h.h.z.A.A.A.A.A.S.G.H.H.H.L.G.L.H.U.D.L.S.S.L.D.P.L.L.H.H.H.H.H.H.S.H.H.H.H.H.S.U.H.H.H.K.H.S.L.L.L.L.L.S.L.L.L.L.L.S.L.P.P.P.P.L.L.L.L.L.D.P.L.P.P.L.L.P.L.U.P.L.L.L.L.U.L.H.U.S.H.H.G.G.S.S.S.S.G.A.G.A.G.A.H.h.A.A.A.G.A.g.S.h.G.l.l.A.l.h.z.l.h.h.h.h.h.k.h.k.g.g.g.g.a.g.f.f.x.f.k.k.k.g.z.a.k.f.g.f.a.z.g.g.h.g.h.h.h.Z.A.A.G.A.A.A.S.H.G.H.H.H.D.H.S.S.S.S.S.S.S.D.~ ! / BXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXBXpX[ / ! [ `.(.(.`.`.(.(.(.(.(.(./.!.~.~.~.~.T.~.T.~.T.~.[.~./././././.(.(.(.(.(._.(.(.`.^.{.(.(.|.(.(.(._.(.(.(.(.^././././.~.~.~.T.~.T.T.T.U.T.T.P.P.P.P.U.U.Y.S.L.L.L.L.L.H.H.H.D.IXSXPXGXFXGXAXFXAXZXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXBXaXpXc c h.g.z.f.g.z.z.f.h.h.g.g.z.g.g.g.g.g.S.j.k.D.Z.A > ; 0 e.A.Z.A.e.0 e q Z l.Y ; r r G A.H.H.F.G 0 0 : T I.S * r r b.H.H.[ y : : 0 n.T.H r r ; * y * * : q G T.U.H.L.H.L.D.L.L.L.U.U.U.U.T.T.Y.T.T.T.T.~.~.Y./.~.T.[.~.!.~.~.~././.(.E./.~.(.(./.(.^.{.(.(.^./.(.(.(.(.(._.(.(._.(.(.(.(.(.(././././././.(.{.^.(.(.(.(.(.(.^.^.(.{.(.(.", "P P U P P J J J J L H Z H H H H H F H L H H G K H H H H H H H F Z S H J D D D Z Z L Z Z D D D D L L Z Z S Z H Z D H H H H H H H H H G Z H H ' ' Q c S ; ; ; 0 * r r r r r e r r r r r r r r r r q r y ; r r e ' LXLXLXLXLXLXLXLXLXLX- M.LXLXLXsXb aXLXPXLX{ o UXPXLXIXb n gXLXLXLXM. { LXLXLXsXf UXLXLXLXsX# $ $ % % % ; ; IXLXLXLXLXgXIXLXLXLXLX{ % } LXLXLXc $ $ IXPXLXIXf c o $ $ pXLXLXLXLXLXn $ $ $ $ % ; * e ; e 0 r r r r r r r r r r r r r r r r > 0 % % o r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.u.u.u.u.t.u.u.u.u.i.u.u.u.i.a.a.i.i.a.a.a.k.z.a.k.a.i.k.i.a.a.g.i.a.i.i.i.i.i.i.i.i.u.i.u.E u.u.u.i.i.i.i.i.a.a.a.i.i.i.z.i.a.i.a.z.a.a.a.a.i.i.i.a.a.a.a.k.i.k.f.z.f.k.g.g.g.g.h.k.h.A.h.D.A.A.S.H.S.H.H.H.L.H.L.L.P.D.D.L.L.S.P.L.H.H.H.G.H.H.G.H.H.H.H.H.H.H.H.S.H.H.U.S.H.H.L.L.L.L.L.L.L.L.L.L.Y.L.U.L.L.P.P.P.L.U.L.L.U.L.L.U.P.P.P.P.U.L.P.L.L.L.L.L.L.L.S.U.H.H.H.H.D.H.D.H.A.G.G.S.S.S.G.G.h.A.A.A.A.A.h.A.A.A.A.h.A.A.h.A.z.h.A.h.h.a.f.h.g.f.z.g.g.f.g.j.g.g.a.z.k.z.g.k.a.f.f.f.j.k.g.z.h.h.l.l.j.G.G.h.G.A.A.S.S.S.G.Z.S.H.S.H.H.S.A.S.S.A.S.S.~ S / ZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXDXFXDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXZXAXBXm.{ ~ / ` (._.^.|.`.^.(.^.(.[.(.(.[./.~.~.~.~.T.~.~.~.~.~.~.~.~././.(.(./.(.(.(._._._.(._.`.^.(.(.^.`.(.^.(.(.(.^.^.!./.!./././.R./.~.~.T.T.T.T.T.T.U.T.P.L.U.L.P.L.S.L.L.U.H.D.H.U.GXPXSXGXGXSXAXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXFXFXFXFXVXBXaXm.c.x h.g.j.l.k.h.h.l.z.f.z.g.z.z.g.g.g.g.a.j.h.A.j.Z 0 q t T z.h.A.e.q y q u Z.A : e : [ S.L.L.U.T y = > C F.Z = q * b.T.L.J.C > * * P U.C r r r * * 0 u U b.T.T.L.P.U.P.L.L.L.L.P.U.U.T.U.T.T.T.T.T.~.T.~.~.~.T.~.~.T.~.T./.~.~././././.^./.(././.(././.(./.(.(.{.`.(.`.(.(.{.^.{._.[.(.{.(././.(./././.~.(.(.(.(.(.(.`.^.(.(.^.(.(.(.(.", "J L L J J J H G J H H J H P H H H H J G H D H H H H D H G H H H H D H Z D D D Z Z Z Z D D D D D Z Z P Z L H J L H H H D H D H H H J D L H H ^ ' c S y 0 = y r r q e r r r 0 r r e r r r r r r r = r ; r y = : { LXLXLXLXLXLXLXLXLXPX% ; aXLXLXLXLXLXLXLXaXo o aXLXLXLXLXLXLXPXLXPXsXo + IXLXLXLXLXLXPXLXLXsX $ $ % ; ; ; ; % IXLXLXLXLXLXLXLXPXgX- % c LXLXLXc o o pXLXLXLXPXsX$ o % - LXLXLXLXHXo o $ $ % % ; * 0 0 ; r r r r r r r r r r r r ; r r 0 ; r % & $ E t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.u.t.t.u.t.u.u.u.i.i.i.i.i.a.a.a.a.a.i.a.i.a.i.f.a.a.a.a.a.i.i.i.i.i.i.i.i.u.i.u.u.i.i.i.u.u.i.i.i.i.a.a.a.z.z.z.i.f.a.a.a.i.a.a.a.a.a.a.a.i.i.a.a.a.i.k.f.f.f.k.f.g.g.g.k.h.A.h.A.A.A.S.A.G.H.H.H.L.G.H.S.L.H.L.L.H.S.P.A.L.G.K.K.A.H.A.K.H.S.H.H.H.H.K.H.L.H.h.K.H.H.L.L.H.S.L.L.L.P.S.P.P.L.L.L.Y.L.U.L.L.L.L.Y.L.P.U.P.L.P.P.P.P.U.U.P.P.L.L.L.U.L.L.L.S.L.H.G.H.H.H.D.A.H.H.G.H.H.H.Z.G.A.J.G.G.S.h.A.A.G.S.S.h.A.H.A.A.A.l.l.S.D.G.h.h.g.g.g.g.g.g.g.g.z.g.z.g.k.a.g.g.f.f.z.k.a.k.k.z.g.l.l.A.j.Z.A.A.S.G.G.S.S.S.K.G.S.S.H.A.S.S.S.A.A.G.A.G.~ ! ! ZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXAXFXGXSXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXMXm.[ ~ Q [ (.`.|.(.^.^.(.`.(.(.(.(./././.!.~.~.~.!.!.~.~.~.~././././././.(.(.(.(.(.(._._.(.(.`.(.(.`.(.(.^.!.(.(.(./.(./././.~./.~.~.~.T.T.T.T.T.Y.U.T.Y.P.U.L.L.P.L.U.L.L.U.G.H.H.D.IXGXGXGXGXAXFXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXVXVXCXhXM.' c h.h.h.g.l.l.h.h.h.z.l.g.g.g.g.h.h.g.D.h.h.h.h.j.Z.J.h.H.G.D.A.A.Z.H.A.H.G.l.S.A.A.G.H.H.S.U.S.S.U.D.A.G.K.L.U.L.I.H.XXP.P.F.Y.L.P.U.T.T.Y.T.P.Y.T.T.L.U.U.A.L.L.L.U.L.U.U.P.L.L.U.U.T.T.T.T.T.T.T.~.~.T.~.[.T.[.T.~.~.~.~.~.!.!.(./.(././././.(.(./.(.(.(.(.^.^.(.`._.(.(.(.^.(.^.{.^.(.(.(.(./.[.(.(.^.(.(.(.(.(.(.`.(.`.^.{.(.(.(.", "P P K P L L L J J H Z Y P H H H H H J F H H H H D D D H D H Z D H Z D D Z D D H Z H L Z D D H Z L Z D H L D Z H Z H H H H H H H D Z H L H H ! S c n > q : r r r r r r r r r r r r r r r q r r r ; r ; r y r : ' LXLXLXLXLXLXLXLXLXLX& - - M.PXLXLXLXPX6Xo o , - IXLXLXLXPXn sXLXLXHXo o c IXLXLXLX6XHXPXLXM.$ o $ % % : % ; % e aXPXLXLXLXLXPXsX$ % $ ' LXLXLXc o o w IXLXLXLXIX$ $ $ % aXLXLXLXM. o $ $ , % * 0 ; r 0 r r r r r r r 0 r r r r r 0 r r ; ; % % o o r.t.t.y.r.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.u.u.t.u.u.p.u.u.a.i.i.i.a.a.a.i.a.a.a.a.a.a.z.a.a.a.i.i.i.i.i.i.u.u.i.u.i.u.i.u.u.u.i.i.i.i.i.a.a.a.a.i.z.i.i.i.i.a.z.a.a.a.a.a.a.a.i.i.a.a.i.i.i.k.f.f.g.g.g.g.g.h.h.A.A.A.A.S.S.S.H.G.H.S.H.L.L.H.H.D.L.P.D.L.S.D.P.H.H.A.K.S.S.L.S.H.H.H.K.H.H.K.S.H.H.H.H.L.H.L.L.L.L.L.L.P.P.P.P.L.Y.U.U.U.L.U.K.U.U.L.U.U.T.Y.P.P.P.P.P.U.U.U.P.U.L.U.L.L.L.L.L.L.H.H.D.H.H.H.G.H.H.Z.G.H.H.H.H.H.G.G.Z.G.A.A.G.A.G.H.S.G.A.A.A.G.l.S.h.l.l.h.h.h.h.g.g.g.h.g.g.g.g.g.g.g.g.a.g.z.f.f.j.g.z.l.l.h.h.l.S.A.A.A.A.A.G.G.G.S.A.G.G.S.H.H.H.S.A.A.A.A.G.A.A.~ ~ Q CXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXZXZXVXZXm.[ / Q ` (.(./.(.(.`.(.(.(.(.^.(.(././.[.~.~.!.~.~.~.!.~./.~.~././.(./.(._.(.(.(.(._.(._.(.(.(.(.^.(.`.^.(.~.(.(./.(./././././.~.~.~.T.T.T.T.T.T.T.U.P.P.Y.L.K.Y.L.L.S.L.L.D.P.D.D.GXGXGXIXFXAXFXAXAXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXVXVXBXaXM.n c h.z.l.h.l.h.l.l.h.h.h.h.h.h.h.h.j.g.h.z.l.g.h.h.A.h.A.z.D.S.h.G.h.J.A.A.H.D.S.H.H.H.A.S.U.H.H.U.L.U.U.L.U.T.U.L.I.U.P.Y.T.L.U.~.T.T.Y.T.T.Y.U.P.P.P.T.D.T.U.L.U.P.L.P.T.P.P.P.Y.U.T.T.T.T.T.T.T.T.T.~.T.~.T.U.E.~.T./.T.~./.~.(.!.(.(./.(.(.(.(./.(.(.(.(.(.`.(.(.(.(.(._.(.(.(.(.(.[.(././././.(./.(.(.(.(.(._._._._.^.(.(.^.(.(.(.", "J J P H P P L H H H L H H H D H H H F H H Z H H D D D D D D D D Z H Z Z D D Z D D Z Z Z Z H Z Z H H H H Z L D H H H H H K F Z H H L H P H Z ! c S u q > r r : r r r r r r r r r r r r r r r r r r r ; r * e ; ; % % $ $ o o o $ o $ % $ % o , c c c o $ o $ $ o , t c u o - o o $ o o f c & o o o $ o o $ $ % ; ; : ; * % - o f c x f o $ $ $ $ - $ $ o $ $ , $ $ f n n o $ $ , % gXLXLXLX- o o o & % % ; ; r r : r r r r r r r r r r r r ; r r r r ; * & & $ r.t.t.t.t.r.r.t.r.t.t.t.r.y.t.r.r.t.r.t.t.r.t.r.r.t.t.t.i.u.u.p.i.u.i.i.i.i.a.i.a.a.i.a.a.a.a.i.i.a.i.i.i.i.i.u.i.i.u.u.u.u.i.u.u.u.u.i.i.i.i.i.a.a.i.z.a.a.i.k.d.z.z.i.k.a.a.a.a.a.a.i.a.i.a.a.a.k.f.i.k.f.g.f.g.f.z.A.h.h.A.A.A.S.S.S.H.H.H.L.L.H.H.H.L.D.L.P.A.L.L.L.S.H.G.K.S.G.G.A.S.H.H.H.A.H.H.H.U.S.U.S.K.H.L.L.H.L.L.L.L.L.P.L.U.L.L.U.L.U.L.U.U.Y.L.P.Y.L.P.P.T.T.T.T.P.Y.U.L.U.L.L.L.L.L.L.L.L.L.L.L.L.S.H.H.H.H.H.H.H.H.H.H.H.K.A.G.H.K.A.G.A.A.A.A.A.H.G.A.H.A.A.S.A.l.G.A.A.h.h.h.g.h.g.h.z.h.h.g.g.a.g.j.g.f.f.g.z.g.g.l.l.h.h.A.z.A.A.A.G.A.A.A.S.S.S.G.A.S.S.S.A.S.S.A.A.A.A.A.G./ Q ! ZXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXGXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXVXBXm.} Q ~ [ (.(.^.{.(.{.(.(.(._.(.(.(././.~.~.~.~.~.~.~.~.~./.~././././.(./._.(.(._.(._.(._.(.(.(.(._.(.[.{.(.(.!.(.(././.(./.(./.~.~.T.~.T.T.T.T.P.T.U.P.P.U.U.L.L.L.L.L.L.L.S.G.A.L.SXPXIXGXFXDXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXVXgXJXM.{ c h.l.h.h.l.l.l.l.l.h.h.h.h.h.h.h.h.h.D.a.l.G.G.h.A.A.h.H.S.Z.G.G.g.G.S.L.A.L.S.L.H.L.U.H.S.H.S.Y.S.L.L.L.U.U.S.U.U.U.U.U.L.U.U.T.U.T.T.U.~.U.U.T.Y.^.P.T.Y.Y.Y.L.P.P.T.P.Y.P.U.T.T.T.T.T.T.T.T.T././.T./.~.~.XXXXU.XXT.T.~.!.~./.^.(.(.^.{.(.(./.{.(.(.(.(.(.^.(.`.^.(.(.(.(.(.(.(.[.(./.(././.(.(.{.(.(.(.^._.(._._.(._.(.(.(._._.^.", "J J J J L L J J F H H H H H H H H H F H H H D H D D D D D D D D D D D D D H D D D D Z Z S D Z D D D D D H H F H H H H H H H H H H Z L G D H S u u u u y r r r * r r r r r 0 r r r r r r r r r r r r r r r r r r * % % $ o o o o $ o $ $ $ * $ $ $ $ $ o $ $ $ $ $ $ $ & $ o o o o o o o $ $ o $ $ $ o $ $ $ $ & % ; * ; ; ; % % $ $ $ $ o o $ $ $ o $ $ $ $ $ & $ & & & $ $ $ , gXUXIXLXLXLXaX , o & % ; % : r r r r r r r r r r r r r r r 0 r r 0 * ; % $ $ = r.t.t.t.y.t.t.t.t.t.r.t.r.r.r.r.r.r.r.r.t.r.t.r.t.t.t.t.w.p.p.u.u.u.u.i.i.i.t.i.i.i.i.i.i.a.u.a.a.i.i.u.a.u.a.u.i.i.s.u.u.u.u.s.s.s.i.i.s.i.i.a.a.a.a.a.a.a.a.z.a.k.a.a.f.a.f.s.z.k.i.i.i.i.a.a.f.a.f.f.g.g.k.h.z.h.l.A.h.h.A.S.A.S.S.H.H.S.L.S.U.L.L.S.L.L.S.L.S.S.H.H.U.H.H.H.H.H.H.H.A.H.H.H.H.L.S.L.D.U.U.H.L.L.L.L.U.L.R.K.L.U.L.I.U.T.T.U.L.U.U.I.Y.U.T.I.T.Y.U.T.U.Y.Y.Y.Y.T.U.U.U.L.U.U.Y.U.L.L.L.S.L.L.L.L.L.S.H.S.U.H.S.H.H.S.L.S.D.H.H.H.H.S.S.H.H.H.A.H.S.S.S.S.S.S.h.A.h.A.h.A.h.h.A.h.h.l.l.z.z.z.j.k.k.k.k.k.g.g.g.k.h.h.A.A.h.A.A.D.A.S.A.Z.S.A.A.S.S.G.S.S.S.H.A.S.S.A.Z.G.z.A.A.I ! ! ZXAXAXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXDXAXGXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXGXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXBXQ.} Q ! [ (.(.`.(.(.(.|.^.(.(.(.(.(.~.(.^.~.~.~././.~.~././.!./././.(./.(.^.(.(.`.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(./././.(./././././.^.T.T.T.T.T.T.T.T.T.P.T.U.L.U.L.L.L.L.L.H.H.S.S.S.DXIXGXGXGXFXAXAXAXDXDXAXDXAXDXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXVXBXhXM.M.x z.z.h.h.h.l.l.l.l.z.h.h.A.S.h.l.g.A.g.A.h.h.A.A.A.h.A.A.h.H.A.S.S.S.S.S.D.H.S.U.S.H.L.L.L.G.L.L.L.L.L.L.L.U.L.U.Y.Y.P.Y.P.T.T.T.T.T.T.T.T.T.I.U.T.Y.T.U.Y.Y.Y.Y.T.P.P.P.T.T.P.T.T.T.P.T.T.T.[.~.T.~.T.~.~.[.T.~.~.T.~.~.~.T./.!./.(.[.(.[.{.(.(.(.(._._.{._.`.^.`.^._.(.(.(.(.(.(.~././././.^././.(._.(._.(.(.(.(._._.(.[.^.(.(.(.!.", "J J L J L H J J H K U H Z H J F Z H H H F H H D D D D D D D D D D A F D A D D D D H H Z H D Z D D H Z H D H H H H H H H H H H H H H H L H Z S u y S r : r 0 r r r r r r r e r r r r r r r r r r r r r r r r r 0 ; % % $ $ $ o $ $ $ $ $ $ $ $ % $ $ o $ $ $ $ $ % $ & o $ $ $ $ , o $ $ $ $ $ & $ $ $ $ $ $ o & & % ; ; : = r * % - $ $ o $ $ o $ $ $ & % % & $ $ o & , & & $ $ pXLXLXLXLXPX- o o o $ % % ; ; r r r r r r r r r r r r r r r r e 0 r r ; ; & $ m r.t.t.r.t.t.t.t.t.r.t.r.y.r.r.r.r.r.r.r.t.t.r.r.r.r.t.t.t.r.u.u.u.u.u.u.i.u.i.i.i.i.s.i.u.a.a.a.i.a.i.i.i.a.i.i.u.u.i.u.u.u.u.u.i.p.t.i.u.i.i.a.a.a.a.a.a.a.a.a.a.a.z.f.a.a.a.a.i.i.i.d.i.i.a.a.a.f.f.f.a.k.k.j.z.l.h.h.g.A.A.A.A.S.S.H.H.L.S.L.H.S.S.L.S.L.L.L.S.L.S.H.S.H.H.A.H.A.H.H.H.H.S.H.S.S.S.S.L.A.L.H.L.L.L.U.L.L.L.U.L.K.U.U.U.I.U.U.T.U.I.T.U.U.I.T.I.U.T.U.T.T.T.T.T.T.U.U.T.Y.Y.L.L.L.U.Y.L.L.L.L.S.S.S.L.L.U.S.U.H.H.H.H.L.L.L.H.H.H.S.D.S.H.A.S.H.H.H.H.S.S.S.H.A.H.S.A.A.A.A.A.A.h.h.l.l.k.h.f.h.k.k.h.k.g.k.g.g.k.h.h.h.A.A.A.l.A.A.A.H.A.S.S.S.S.S.S.G.H.S.G.D.S.A.S.A.H.h.A.A.~ ~ / CXZXAXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXDXAXFXFXFXFXDXDXDXAXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXDXDXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXDXSXAXDXFXDXAXDXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXZXVXBXpX[ Q / ` (.`.^.(.`.(.(.^.|./.(./.^.(.~.^./././.~.~./././././.!.(.(././.(.(.(.(.`.(.(._.(._.(._.(._.(.(.(.(.(./././././././././.T.T.~.T.T.T.T.T.Y.U.T.P.Y.L.U.S.U.L.L.L.L.L.L.L.L.L.IXPXGXGXFXAXAXAXFXAXDXDXAXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXBXaXM.c n f.g.h.h.h.h.l.A.l.l.h.l.h.h.A.l.z.A.A.A.A.g.A.A.A.A.S.H.A.A.S.S.S.A.H.H.H.H.L.S.U.D.L.G.L.L.L.L.L.L.L.U.L.U.U.P.P.P.Y.P.T.P.P.T.T.T.T.I.U.I.I.T.U.U.T.I.P.U.T.P.T.T.T.T.Y.T.T.T.T.T.T.~.T.T.~.~.~.~.~.~.~.T.~.T.T.T.~.~.~.~./././.).(.^._.(._._._.`._._._._.(.`.^._.(.(.(.(.(.^.(.{.(.(.(.(./.(.(./.(.(.(.(._.(.(.(.(._.(.{.`.!.(.(.", "J J J J J H H Z H H H H H H Z H H H H H D H D H D D D D D D D D D A D Z Z D D D H D Z D D Z H Z D D D D H H H H F H H H H H H D H L H H H H S y y u u e r r r 0 r r r r r r r r r r r r r r r r r r r r r r r 0 * % % & $ $ $ $ $ $ $ $ $ - % % $ , & $ $ $ $ % & % % & $ $ $ $ $ $ $ $ % % & % $ $ $ o $ $ $ % % % ; * r r : % > % $ $ $ & $ $ $ & , % % & % % % % % % % % % $ - ' gXHXBXsXz $ o $ $ $ % % * ; r r r r r r r r r r r r r r r r r 0 0 ; * % $ o E w.t.t.y.t.t.t.t.y.t.r.t.r.r.r.r.r.r.r.t.r.r.r.r.t.t.r.t.r.t.t.r.u.t.u.u.i.u.i.u.i.u.i.s.i.u.u.u.a.i.i.i.i.i.i.u.i.s.u.u.u.u.u.i.i.i.i.i.i.i.i.a.i.a.a.a.a.a.a.a.f.a.a.z.a.z.a.a.z.i.d.i.i.a.i.a.a.a.f.f.z.j.k.h.l.h.h.h.A.A.A.A.S.H.H.S.H.S.S.U.S.S.U.H.H.A.S.H.S.H.H.H.L.H.H.H.S.S.A.H.H.S.H.H.H.S.L.H.D.L.D.U.L.L.L.L.L.U.U.U.U.L.I.T.U.T.T.T.T.T.T.T.T.T.T.T.Y.T.T.T.T.T.T.T.U.U.U.T.U.U.U.L.U.U.L.L.L.L.U.L.L.L.L.L.S.S.U.L.H.L.L.L.D.H.L.L.H.H.H.A.D.H.H.H.H.H.H.H.H.H.H.H.H.A.A.A.H.A.h.A.A.S.h.l.l.h.h.h.h.k.h.k.k.k.k.z.k.h.h.h.h.h.A.A.A.S.A.A.G.S.A.S.S.S.S.G.G.S.S.S.S.S.S.S.S.h.h.H.S./ Q Q CXFXFXAXDXDXAXDXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXDXAXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXVXFXVXBXQ.[ ! Q [ (.(.`.(.^.^.(.`.(.(./.(.(.~.(././.~./././././././.(.(./.(./.(./.].(.(.(.(.^.(.(.(._.(.(.{.(.(././././././.~./.~.~.~./.~.^.R.T.T.T.T.Y.U.T.U.P.P.U.U.P.P.U.U.L.L.L.G.L.H.D.IXAXGXGXFXFXVXAXAXAXAXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHXBXhXM.{ c h.A.h.A.A.A.h.h.A.h.l.l.g.A.A.A.A.A.A.A.A.A.A.A.A.A.h.H.A.S.S.S.S.H.H.H.L.S.L.S.L.L.G.L.L.L.L.L.L.U.L.L.L.U.Y.P.U.U.Y.U.Y.T.T.T.T.T.Y.T.T.T.T.T.T.T.T.T.Y.T.Y.T.T.T.T.T.T.T.T.~.~.T.T.~.~.T.T.~.T.~.~.T.~.(.[.~.T.^./.T.~.(./././.(.(.^.(.(.(._._.^.^.|._._.`._._._._.(.(.(.(.`.(.(.(./.(./.(.(./.{.(.(.(.(._.(.(.(.(.(.{.(.`.^.!.(.", "Z K G J H J H J H H H H Z H L Z Z H D D H S H D D D D D D D D D D Z D Z D D D D Z D D D D H Z H D D D Z H D H D H D H H H H H L L L H H H H S y u > y r r r * r e r r r r r r r r r r r * : r r r r r r r r r ; r * % - $ & $ % % $ % % % % % % % % % & % % % % : * % % % % - $ % % % % % % % % % % % & % , % % * % ; 0 r r : ; ; ; ; % % $ % % & % ; % % ; % % % % % ; % * % % % - - % - & o $ o o $ $ % * ; 0 r r r r r r r r r r r r r r 0 : r r ; r * % $ o $ w.r.r.y.r.t.y.t.t.t.r.r.r.r.r.r.r.r.r.r.r.t.r.r.r.r.r.r.t.t.i.u.t.u.u.u.u.u.u.u.i.u.i.a.t.a.i.a.u.u.u.u.u.i.i.u.i.u.u.i.i.i.i.u.i.u.s.p.u.t.i.i.i.a.a.i.a.a.k.a.a.z.a.f.a.a.i.a.a.i.i.k.i.i.a.a.f.a.g.a.f.f.g.z.A.h.h.h.A.A.A.A.A.A.S.S.H.H.S.L.S.U.S.S.H.H.P.D.D.L.H.H.D.A.H.F.H.D.H.K.H.H.H.S.H.S.L.A.U.U.S.L.L.L.L.L.L.U.U.T.U.T.T.U.U.T.T.T.T.T.~.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.T.U.Y.Y.Y.U.T.L.T.P.U.U.S.L.L.L.L.L.U.L.H.L.L.P.A.S.H.S.L.H.H.L.G.H.H.H.H.S.L.H.H.H.H.S.A.H.H.H.A.H.A.A.h.h.S.h.l.l.h.k.h.h.k.h.k.h.h.k.A.h.h.h.A.A.A.A.A.A.A.A.A.S.S.S.S.S.H.D.G.S.G.S.S.S.S.S.S.S.H.z.h.~ Q S BXAXFXAXAXAXDXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXDXDXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXVXBXm.} Q c [ (.`.^.(.(.`.(.(.{.(.(.(.^.{.E./.^.(./././././.(.^.^.(./.(.(.(.^.|.(.(.(.(.`.`.^.(.(.(.(.(.(.^.(.(././.[./././.~.T.~.T./.T.T.T.T.T.T.P.P.P.P.Y.P.T.L.P.P.P.U.L.L.L.G.H.L.G.GXGXIXIXGXHXFXAXAXAXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHXHXaXM.n c A.l.S.z.h.h.S.z.A.h.l.h.h.j.h.A.A.A.A.A.A.A.G.A.S.S.A.S.A.H.A.H.S.H.H.H.S.L.L.Y.L.L.L.L.L.L.L.L.L.L.P.L.U.U.U.P.U.Y.Y.T.T.~.T.T.T.T.T.T.T.I.T.T.T.U.T.T.T.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.T.P.!.~.Y.~.~.~.T.~.~.T.~.!.~./.~.(.~./.!./.(.(.(.(.(.(._._._.(._._._._._.[._._._.(.`.^.^.(.(.(.{.(./.(.(.(.|.(.(.(.(.(.[._.(.(.(.^.(.^.^.(.(.", "P L L L L H H H H H H H H H Z D H D D D D D D G D D D H D D D D D D F Z L Z D D D D Z D D Z D F D D H D D H H F H H H H J H H J H J L L H J K u > ; e e r r r r 0 r r r r q e r r r r r r e 0 r r r 0 r r r r 0 ; ; % * % % % % % % % % ; % * * * % % % % % ; ; * % t % % % : % % % % * ; % * * ; % * % % % % ; % : y : r r r r ; ; ; % % % % % ; % % ; * ; % ; > % ; ; % * % % % % % , % % % $ $ $ $ % % ; r : r r r r r r r : r r r r r r r r r r r r % % o # 0 t.t.y.t.t.r.t.t.t.r.t.t.r.r.r.r.r.r.r.t.r.t.r.r.r.r.t.t.t.p.t.t.t.u.u.u.t.u.u.u.u.u.u.i.u.u.a.u.u.a.i.u.i.u.u.s.u.i.u.i.s.u.s.i.i.u.p.s.i.i.a.i.i.i.a.d.i.a.z.i.i.i.a.a.k.a.a.a.z.i.a.a.i.k.a.g.a.a.f.f.f.g.z.j.h.l.g.A.A.h.A.h.A.A.H.G.H.H.S.S.H.L.S.L.H.S.H.H.H.H.H.H.H.H.H.H.S.H.H.H.H.H.A.U.S.H.H.H.S.H.L.H.L.L.L.L.U.L.U.U.U.U.U.I.I.I.T.T.T.T.~.T.~.T.~.T.~.T.T.T.T.T.Y.T.T.~.T.T.T.T.T.T.Y.U.P.P.P.U.P.U.P.P.U.L.L.L.U.U.L.L.L.L.D.L.L.L.L.S.L.H.H.G.U.S.H.S.H.H.H.H.H.H.H.H.H.h.H.A.G.S.A.h.A.h.A.g.l.l.A.k.z.h.h.h.h.h.h.h.l.A.A.h.A.S.S.A.A.A.S.S.S.S.S.S.A.G.A.H.S.S.S.S.S.S.S.z.H.A.A.A.~ ! ~ CXAXDXAXDXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXDXDXDXAXFXFXFXFXFXFXFXFXFXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXDXBXQ.[ / ! ` `.(._.(.`.(.(.`.(.(.(.(.~.^./././.(././.(././.(./.(.(.(.(.(./.(.(.(.(.(.(.^.(.(.(.(.{.^.(.(.(././././././.~.~.~.T.T.~.T.T.T.U.U.U.T.P.P.Y.Y.P.P.U.U.L.U.L.U.L.L.P.G.L.L.G.PXSXIXGXHXFXDXFXAXAXAXAXFXFXAXAXAXAXAXFXFXFXFXAXAXAXFXVXZXAXFXAXVXAXFXVXCXaXM.v.c l.G.Z.h.A.h.z.A.h.h.h.S.A.A.A.h.A.A.l.A.A.A.S.S.S.S.G.S.S.G.S.H.S.S.S.L.S.L.U.L.L.L.L.L.U.P.U.L.L.U.U.L.P.P.P.P.P.T.T.T.T.T.T.T.T.T.T.T.T.Y.T.T.T.T.T.T.T.U.T.P.T.T.T.T.T.T.~.T.T.~.T.T.T.T.T.~.~.~.~./.~.~.~.^.~.E.~.~./.~.(.~././.(.(.(.(.(.`._._.|.|._.}.}.}._._._.(.(._.(._.(.(.(.(.(.(.(.(.|.(.}.(.(.(.(.{._.^.(.(.(.(.(.(./.(.", "H P L L H L H H H H D D H D G D Z D D D D D D D F D D D D D D A Z D F Z Z H D H D D D D D D Z Z D D D D H H H H H H H H H H L L H J L J F J P A ; ; : ; r r r r r r r r r r r r r r r r r r r r r r r ; r r r r 0 ; r ; ; ; ; : ; ; ; * * : : * ; ; ; * ; ; ; ; * * : = : * ; % * > * ; ; : ; * ; * ; % > * ; e : * * r r r r r ; ; ; ; 0 % ; ; ; ; ; ; ; 0 r r ; ; ; ; ; 0 e ; > * % * % $ $ $ $ $ % % ; ; : : r r r r r r r r r r r r r r r r r r r ; - $ w.r.r.t.y.r.t.t.t.r.t.r.r.r.r.r.r.r.r.r.r.r.r.r.r.t.r.t.t.t.t.t.u.u.t.u.t.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.i.u.i.u.i.i.s.s.i.u.i.i.i.p.i.i.s.p.i.i.i.i.a.s.a.f.a.a.i.a.g.a.a.a.a.a.a.a.a.a.a.i.k.a.a.i.z.a.k.g.g.z.l.h.z.h.A.h.A.Z.g.A.A.A.H.H.A.S.L.H.H.H.H.H.H.H.H.H.H.U.S.H.H.H.H.H.H.H.H.H.S.S.S.L.S.H.H.L.S.S.L.L.L.L.U.P.Y.T.T.T.T.T.I.~.T.T.~.Y.~.T.~.T.~.~.T.~.T.~.T.T.~.~.T.T.Y.T.T.T.T.T.U.U.T.T.P.P.P.P.L.L.L.L.L.L.Y.L.L.L.L.P.P.U.P.L.S.L.L.L.S.L.L.H.H.K.H.H.H.H.H.H.H.H.H.H.H.H.H.G.A.S.A.A.A.A.A.A.h.h.h.h.h.h.h.h.A.A.h.D.l.z.A.A.g.A.A.S.S.S.S.S.S.S.G.H.H.G.H.G.S.S.S.S.S.S.S.A.A.A.A./ ~ S CXAXDXAXAXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXSXGXFXFXFXFXFXFXFXFXFXFXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXDXDXBXpX{ Q ! [ _.`._._.(.^.(.(.(.(.[.(.~.!.[./././.(././.(.(./.!.(.(.!./.(./.(._.(.(.(.(.`.(.(.(.(.(.(.(.(./.^././.^.E.~.~.T.~.T.~.T.T.T.T.U.T.U.Y.T.P.P.P.P.P.P.L.U.L.U.U.L.L.P.L.D.P.U.DXGXGXDXSXFXVXAXAXAXFXDXAXAXAXAXDXAXAXVXAXVXAXDXAXAXAXFXFXZXFXZXZXVXVXVXBXaXM.n c h.W.A.G.h.h.A.h.A.A.A.A.A.A.A.A.A.A.H.A.A.H.A.S.A.S.H.A.S.S.H.H.H.H.U.S.L.L.S.P.P.P.L.L.U.L.L.I.U.L.P.U.P.P.P.Y.T.P.Y.T.T.T.T.T.T.T.Y.~.~.Y.T.T.T.T.T.T.T.T.P.~.T.T.T.!.T.T.~.~.T.~.~.~.T.!.~.~.~.~.~././.!.~.~.[./.~.~././.!.(./.(.~.(.^.(.(.^._._._._.}.{.}.}.}._._._._._._.(.(.(.^.(.(.(.(.(.(.^.].(.(.(.(.(.(.].(.(.(.(./.(././.", "H P H H H J D L H D H H D D H D D D G F D D D D Z D H D D Z D Z F Z D D H Z Z A D D D D H Z H F D D D D D H H H H H H H J J H L L L S P H H J H e * : ; r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r ; e r : r 0 ; ; ; : y : 0 0 r ; * * ; : ; ; r : : : * : 0 : * = ; y : : r : e ; ; ; ; ; ; ; 0 y r r r r r r r r ; = 0 ; ; 0 e ; ; = r r r r : : * ; r ; ; ; : e % e % % % $ $ % % % ; ; * ; r r r r r r r r r r r r r r r r r ; ; * % $ 0 y.y.t.t.t.t.t.y.t.t.r.r.t.r.t.r.r.r.r.r.r.r.w.r.r.r.t.t.t.p.t.t.u.t.u.t.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.i.u.s.u.s.u.u.i.i.i.i.i.i.i.i.i.i.i.a.i.d.a.i.a.i.i.z.i.a.a.i.f.a.a.a.a.a.a.a.i.i.i.a.a.z.i.g.g.z.z.z.h.h.l.A.h.A.l.A.h.A.A.A.H.H.H.H.A.H.H.H.H.H.H.H.H.L.H.H.H.H.H.H.S.H.S.H.H.H.S.S.S.S.S.S.H.U.L.L.L.L.L.P.P.T.T.T.T.T.T.T.T.T.~.T.~.T.~.~.~.T.T.T./.T.~.~.T.~.T.~.T.T.T.T.T.T.T.T.T.Y.I.T.T.Y.U.U.Y.P.P.L.L.U.U.P.P.U.L.P.P.P.P.L.L.L.S.S.U.L.L.U.U.S.S.L.H.K.L.L.L.U.S.H.H.H.H.S.S.H.A.A.A.A.l.A.A.h.A.h.h.h.h.A.h.A.g.g.h.A.A.A.S.A.S.A.S.S.S.G.S.S.S.S.S.H.A.S.S.S.S.S.S.S.A.A.A.A.A./ ! ! CXAXDXAXFXFXFXFXFXFXFXFXFXFXFXGXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXFXFXDXAXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXZXZXBXQ.[ ! ! [ (.|.|.(.`.(.(.(.(.(.[.(.{./././.(.(.^./.{./.(.(._.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.^.[./.^.~.^.~.~.T.T.[.T.T.T.T.T.U.T.Y.P.T.T.P.P.Y.L.L.Y.L.Y.L.L.L.L.U.H.D.P.D.D.IXPXSXPXCXFXFXAXAXFXHXAXDXAXDXDXAXDXAXFXFXFXFXFXDXDXFXVXZXZXVXZXAXHXGXVXBXhXM.{ c h.h.A.h.A.A.A.g.A.g.A.A.A.A.H.H.H.H.A.J.h.G.S.S.S.S.S.G.G.S.A.H.G.H.S.Z.S.L.S.P.L.U.L.P.L.U.L.U.L.I.P.P.P.T.T.T.T.T.T.Y.P.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.Y.T.Y.T.T.T.[.T.T.T.[.~.T.T.~.~.~.~.~.~.~./.~.[.!.^.(././.(./././.~.(.(./././.^./.{._._.}._._.}.}._._._._._._._._._._.`.(.(.(.(.(.|.(.(.(._.(.^.(.(.(.(.(.(.!.(././.(.^./.", "H H H H H H L Z H H L D D H D D D D D Z D D D D Z Z Z Z D A D D D Z D Z Z Z Z D Z F D D Z H Z D Z D D Z H H D H H H H H H H L L L H P P H H H P S * ; : * y t ; r r r r r r r r r r r r r r r r r 0 r 0 r r r ; r r r : r r 0 0 ; > : r : r ; : r r r r : : ; = r : 0 0 0 t q e ; ; : : r : e : r ; r 0 : : ; e t * r r * : r 0 * r r : ; r r r ; ; r : r 0 r r : : : = 0 ; 0 : ; * : * * % % - % > ; ; ; * ; = r r r r r y * r r r r r r r r r r 0 * % $ o G y.y.t.t.r.t.t.r.t.r.t.r.r.t.r.r.r.r.r.r.r.r.r.r.r.r.r.t.t.t.u.u.t.t.u.u.t.u.u.u.u.r.u.u.u.u.u.i.u.u.u.u.u.u.i.i.i.i.i.s.i.s.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.f.a.i.k.i.k.i.a.a.a.a.a.a.s.a.i.a.a.a.a.g.a.j.j.z.l.l.l.l.z.A.l.h.A.A.h.H.A.S.A.H.H.D.H.H.H.H.H.S.S.A.S.H.G.L.H.H.H.H.H.H.H.H.H.H.L.S.L.S.H.H.L.S.L.L.L.L.T.P.T.P.T.T.~.T.~.T.T.~.~.Y.~.T.~.~.~.~./.T.~.~.T.~.T.~.T.T.!.Y.T.I.T.T.T.T.T.T.T.Y.L.L.U.U.U.P.U.T.U.U.U.Y.L.U.L.L.L.L.U.L.L.U.U.D.L.P.L.S.U.L.H.L.H.H.U.S.S.U.H.H.H.H.H.H.H.S.A.J.A.A.A.h.A.h.A.h.D.h.g.A.h.D.A.A.A.A.A.A.A.h.S.S.S.G.S.S.H.G.S.H.H.H.G.S.S.S.S.S.S.S.h.S.A.A.~ ! S CXAXDXAXFXFXFXFXFXFXFXAXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXDXAXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXFXFXFXFXGXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXZXZXBXm.{ ! ^ c.|.|.(.|.`.(.(.^.(.(.(.(.(.^.^././././.(.^.(./.(.(.(.(.(.(.(.(._.(.(.(.(.^.`.(.(.(.(.(.(.(.E.^.^./.~.~.~.~.T.T.T.T.T.T.T.Y.U.U.P.Y.P.Y.T.L.Y.U.U.U.U.U.L.U.U.L.L.L.L.P.D.x.GXGXGXGXHXFXDXFXAXZXZXAXAXAXAXAXAXAXAXAXVXVXFXVXAXAXAXAXFXAXFXFXFXVXVXVXBXaXM.n c A.A.h.A.A.A.h.A.A.H.h.H.A.A.H.A.A.H.H.G.G.G.S.S.S.S.S.S.S.H.G.H.H.H.L.S.L.L.L.U.D.L.L.L.P.U.U.I.U.L.P.P.T.P.T.P.Y.T.Y.T.~.T.T.T.T.T.T.Y.~.P.~.T.T.U.T.T.T.T.P.~.T.T.T.T.T.~.~.T.~.~.T.~.~.~././.^.^.~.~.~.(.~.~./././././.(.(.^././.(.(./.(.^._.}.[. X}._.}.|._._._._._.(._.(.`.^.(.(.(.{.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(./.^././.!./.", "K H H H Z H H H D H Z H D H Z D D Z D Z D Z Z D H Z G Z Z Z D B Z Z Z Z Z Z H Z Z H H L Z Z H Z D F S Z H H H H H J H J H J J H L L P H U L L L K 0 % : * * r ; r r r : : 0 : r r r r r r r r r r r r r r r r r r r r r r r r e r r : r r r r r r r 0 r r r r r r r r r r r * y e r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r * y ; ; * * % 0 * * * : r r 0 r r r r r r r r r 0 r r r r ; r r = 0 & $ o $ y.t.t.t.t.t.t.t.t.r.t.r.t.t.t.r.t.t.t.t.y.t.t.r.t.t.t.u.u.t.i.u.u.u.u.t.r.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.i.i.i.i.i.i.i.a.i.a.i.a.a.i.a.i.s.i.i.a.a.s.a.i.i.a.a.f.a.z.s.a.f.a.a.a.a.a.a.a.g.k.a.g.k.g.k.h.h.h.l.l.S.z.H.A.A.A.A.j.A.S.S.A.G.G.S.H.H.S.S.H.D.D.G.H.H.H.L.H.H.H.H.H.H.L.S.L.H.L.S.S.S.A.H.S.U.L.T.T.T.T.T.T.T.~.~.T.~.I.~.~.!.~.~.~./.!.~./.~.T.~.~.T.~.~.T.T.~.T.T.U.U.I.T.T.T.T.T.T.T.T.U.U.U.U.U.T.U.U.U.U.T.U.U.P.U.P.P.L.L.L.L.S.P.S.L.U.U.S.U.S.L.L.L.S.L.S.Y.U.S.U.H.H.H.A.H.A.A.S.A.A.h.S.g.A.j.A.A.A.A.h.h.A.A.A.A.A.G.A.G.J.G.G.G.H.H.H.G.A.A.H.S.A.S.S.S.S.A.S.A.A.A.A.P / ! CXAXFXZXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXZXDXDXBXQ.} ! ! [ |.}.}.}.}.}.(.`.(.(.(.(.~.(.(./.(.~.~.(.(.(.(.(.(.(.(.(.(.(.(.(._.(.(.(.(._.(.(.(./.(.^.[./.!./.~.~.~.T.~.T.T.T.T.T.T.U.T.U.Y.U.P.U.P.P.P.Y.L.I.U.L.U.U.L.L.L.H.D.A.P.H.G.GXGXIXGXAXAXAXGXFXFXHXZXZXHXHXAXZXDXFXFXFXHXCXHXZXCXDXHXHXCXCXZXZXGXVXHXJXpXM.c x A.A.A.G.A.A.A.H.A.G.A.A.G.A.A.G.H.G.G.H.G.S.S.S.S.S.S.S.H.H.H.H.H.L.L.L.L.L.L.L.L.L.I.U.L.L.U.U.Y.T.T.Y.Y.T.T.T.I.T.~.Y.T.T.T.T.T.T.~.~.T.T.T.T.T.T.T.T.T.T.T.T.(.T.T.T./.T.~.~.!.~.!.~./././././.^.!.(.(./.(././.^.(.(.(.(.(.(.(././.(.E.{.^._._._._._.{.|._.}._._._._._._._._._.(._._._._._.^.(.(.}.(.(.(.!.`.^./.(.[.(./././.[.(.", "H H H H H H H H H H H Z H Z D D Z D Z D F Z Z D Z Z H Z Z Z Z G Z Z L Z Z Z Z H H Z Z H G Z Z G Z Z Z L Z H H H H H H Z H H J J P J L P L L L L H S * % % * = ; r r r r * y r r r r r r r r r r r r r r 0 r r r r r : r r r r r e r r r r r r r r r e r r r r r r r r r r r : r 0 r r r r r r 0 r r r r r r r r r r 0 r r r r r r r r r r r r r r r r r 0 e r r r r r r r r r r t ; ; ; : ; r % 0 * r 0 r r r r r r 0 e r r r r r 0 r ; r r ; r 0 * % $ w.t.t.t.t.r.t.t.t.t.t.t.t.t.r.t.r.t.t.t.r.t.r.r.r.t.t.t.t.t.u.t.u.u.i.E u.u.r.u.u.t.u.u.u.u.u.u.t.u.u.u.u.u.i.i.u.i.i.i.i.i.i.i.i.a.a.i.a.i.i.a.a.a.i.a.i.a.i.a.a.i.x.a.a.i.i.a.a.a.a.a.a.a.a.a.a.a.f.f.i.g.g.z.g.z.A.h.l.l.h.l.l.g.A.A.A.A.H.A.S.H.G.S.G.S.S.G.G.H.H.D.H.H.H.H.S.H.H.H.H.L.H.H.Y.H.S.L.L.L.L.U.L.L.L.U.P.L.T.T.T.T.T.T.~.~.T.~.~.~.~.~.~.~.~.~.~.~.~.~.~.T.~.T.T.~.T.T.T.T.T.T.~.T.T.T.T.T.T.T.T.T.U.~.T.T.T.E.U.U.U.P.T.T.U.P.U.P.U.U.L.P.P.P.S.L.S.L.D.S.L.L.U.L.U.L.S.L.S.S.L.L.H.H.H.H.G.A.H.G.A.A.h.A.A.A.A.h.A.h.A.A.j.A.A.A.A.A.A.A.h.H.h.A.S.A.H.Z.G.A.H.S.S.S.S.S.S.S.A.S.A.A.A./ ! ! BXAXFXFXZXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXAXFXFXFXFXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXFXFXZXZXBXpX[ Q ^ [ |. X}.}.[.}.^.`.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(._.(.(.(.(._.(.(.(.(.(.(.(.(././././././.~.(.T.~.T.T.~.P.T.T.T.U.U.U.P.P.P.P.U.U.Y.P.L.U.U.L.L.U.K.Y.L.L.P.L.G.H.J.DXHXHXVXBXfXBXgXBXfXJXBXJXBXHXfXfXJXgXBXJXHXBXJXfXgXBXBXJXfXJXJXBXfXgXhXsX[ c t w z.A.A.A.A.A.A.h.A.A.A.G.A.G.H.A.H.H.H.G.H.G.H.S.D.H.S.H.H.G.H.S.H.H.S.L.L.P.L.P.T.L.I.Y.U.U.I.L.I.I.T.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.!.T.~.T.~.T.~.T.U.[.T.T.T.T.T.T.T././.T.!.!.~.~.~././././.^././.(.(./.(././.(.[.(.(.(.(.(.(././.(.^.(.(.(.(.|.|.(.|._.|._.[.}._.}.`.|._._._._._._.(._.(.`.^.|.(.^._.^.(.(.(.(.(.(./././././.[.~.(.", "D H H H H H Z Z Z H Z J D D D D Z Z Z D Z D Z D D Z D Z D D Z Z G Z Z L L Z Z G Z D D Z D D D Z Z H D D L H H H H H H Y H J J J L L L L P L P L H P > % : % ; * e r r r t ; r r r r r r e r r r r r r r r r r r r r 0 r r r r r r r r 0 r r r r r r r r r r r r r r r r r r r r r r r r : 0 r e r r r r e r r r r r r r e r r r r r r r r r r r r r r r r r r r r r r r r r r r ; r ; r : r : r r r r r r : = r r r r r r r r r r r r r r r r r % % $ o # q t.t.t.t.t.t.t.t.t.t.t.t.u.t.t.t.t.t.t.t.t.t.t.t.t.t.p.t.u.u.u.u.t.u.E t.u.t.u.u.u.s.u.u.u.p.p.u.u.u.u.u.u.i.u.u.i.i.i.i.i.d.a.a.i.i.f.a.i.i.i.a.i.a.i.a.a.a.a.a.a.f.a.a.a.a.a.a.a.f.a.a.f.a.a.a.a.a.a.a.a.k.k.g.h.h.h.h.h.h.l.l.l.A.A.A.A.A.A.A.A.G.A.S.h.G.S.A.G.S.S.H.S.H.H.H.H.H.H.H.H.H.S.H.L.H.L.S.L.L.L.L.L.L.U.L.P.Y.U.T.T.T.~.~.~.~.T.~.~.T.[.~.~.~./.~./.~.~.~.T.~.~.T./.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.P.T.T.T.T.P.P.P.U.L.Y.L.P.L.P.P.Y.L.L.L.U.L.L.S.L.S.L.L.L.L.L.L.U.S.H.Z.A.H.A.A.H.A.h.S.H.A.A.A.A.A.A.h.h.A.A.A.A.G.A.G.A.A.A.G.S.S.S.S.H.H.H.A.S.J.S.S.A.S.S.S.A.A.A.A.S / S CXFXFXFXAXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXAXAXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXFXZXZXZXBXm.{ Q ^ [ |.}.}.|.`.`.^.(.(.(.(.(.(.(.(.(./././.(.(.(.^.(.(.(.(._.(.(._.(.(.(./.(.(.(.(./.(.(././././.~.T.T.~.T.T.~.Y.T.P.T.T.T.T.P.U.U.L.P.P.P.Y.U.U.U.U.L.L.L.L.H.L.L.L.H.Z.L.G.G.CXBXJXaXm.M.M.m.M.M.pXM.M.M.m.M.pXpXM.M.m.M.pXM.M.M.M.m.pXM.pXM.M.M.M.M.b c w w z A.G.W.A.G.A.A.A.h.J.S.S.G.H.H.H.H.H.H.H.H.G.A.H.G.S.H.G.H.H.H.H.H.S.L.P.P.P.L.L.L.U.U.U.Y.T.T.I.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.Y.~.T.T.T.~.T.T.T.~.XXT.T.^.P.T.E.~.T.T.~.~.~.~.(./././././.(.(./.(./.(.(.(.(._.(.(.(.(.(._.(.(.(.(.(.(.(.(.(.(.^.^._.^.|.|._.|.}.}.}.`.{. X_._._._.|.{._._._.|.^.|._._.!.(.(.(.(.(.(././././././././.", "Z H H H Z D H H H Z L Z D D D Z Z Z Z Z Z Z Z Z F Z Z D D Z G Z Z Z Z G Z Z Z Z Z D D Z Z D D D Z H Z Z Z H H Z Z P H P H H J J P L J P P J L P P L F * % - % ; 0 r : r * 0 r ; r r : r 0 r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r : : y r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r r : e r r r r r * r r r r r r r r r r ; r r y r r 0 * % & $ s.r.t.t.t.t.t.r.t.t.t.t.t.t.u.u.t.t.t.t.t.t.t.t.t.t.t.p.u.t.u.t.u.t.u.i.u.u.u.t.u.u.t.u.t.u.t.u.t.u.u.u.u.u.u.i.i.u.i.i.i.i.a.i.i.i.i.a.a.i.a.i.i.i.i.i.a.i.a.a.k.a.a.a.f.a.a.a.g.a.a.a.a.g.a.a.a.a.a.z.z.j.g.k.g.h.h.h.h.l.l.l.l.l.h.h.g.G.h.A.A.h.A.A.S.S.A.A.A.A.S.S.S.H.H.H.H.G.H.H.H.H.H.H.L.H.L.H.L.L.L.L.K.L.P.P.P.P.U.T.T.T.~.T.~.T.~.~.~.~.~.!.~.~.!./.~.[.~.~.~.~.~.~.T.T.~.~.~.T.~.T.T.T.T.~.T.T.T.Y.T.T.T.~.T.~.~.T.XXU.T.T.T.T.T.T.P.T.Y.U.P.L.U.L.P.P.U.L.U.U.S.L.L.L.S.L.L.L.L.L.L.S.H.H.H.H.H.H.H.S.H.A.S.A.A.A.A.A.A.h.A.h.A.A.A.A.A.A.A.A.G.G.A.A.S.S.S.S.G.A.A.H.S.h.S.S.S.S.S.h.S.A.A.A./ ! ! CXZXFXFXZXDXAXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXSXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXFXZXHXZXMXm.[ Q ~ c.|.}.}._._.^.^.^.(.(.(./././.)./.(.(.(./.{./.(.(.(.(._.(._._._._._.^.|.(.(.(.(.(./.(././.~.~.~.~.~.T.T.~.T.~.T.T.T.T.U.T.P.T.T.U.Y.P.P.P.L.L.U.L.L.L.L.L.L.L.G.H.H.L.H.G.Z.JXhXm.M.{ c n n c c c n c c c n c c ' c n c c n { c c n n c c n c c c n w w w l f G.A.G.A.Z.G.H.H.Z.A.S.H.A.H.H.S.H.H.H.S.H.H.H.H.H.H.H.H.S.H.H.H.U.L.Y.L.P.L.Y.L.P.Y.T.U.I.T.I.T.T.T.T.Y.T.T.T.T.Y.~.~.Y.T.~.~.T.~.T.~.T.T.~.~.~.XXU.~.~.P.^.XXT.~.~.(.~.~.~.(./././.^.(.^.(.(.(.(.(._._.(.(.(.(.(.{.(.(.(.(.(.(.(.(.(.(.^.(.(.^._._.|.[._.|.}.}.}.}.`._.|. X}.|._.`.|._._._.(.`.(.|._._.(.(.(.(./.^.[././.(./.(././.", "Z H H Z H Z H P Z F D D Z Z Z Z D Z Z D F D Z Z Z Z D Z Z Z Z Z L Z Z Z G Z Z Z Z D Z H D Z G Z D D H H Z H Z H H P H H H L L P P H J J P H J P P L L u % % % % % ; r ; y = y : r r r r r r r r r r ; e 0 r r r r r r r r r r r r r r r r r r r r r r r r r e 0 r r r r r r r r r r r r r r r r r r r r r r r r r r r e r r r r r r r r r r r r r e 0 r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r : r r r ; r r 0 r * % % % o T t.t.t.t.t.t.u.t.t.t.t.t.t.t.t.u.t.u.p.t.t.u.t.t.u.t.t.t.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.t.u.u.u.u.i.i.i.u.i.d.i.i.a.i.a.a.a.i.a.a.a.a.i.a.a.i.a.a.a.a.a.i.a.a.k.a.a.a.a.a.f.a.a.a.a.a.z.k.z.i.f.f.a.f.g.h.h.h.h.h.l.l.h.l.h.l.l.l.A.j.S.A.A.h.S.S.H.A.A.A.z.A.A.S.S.G.G.G.S.H.S.H.L.G.H.L.H.L.L.L.L.L.Y.U.T.P.T.U.U.U.Y.~.T./././.!././.!.~.~.~./.~./././.~.~.~.~.R.~.~.~.T.~.T.T.~.T.T.~.~.Y.T.T.Y.T.T.T.T.T.~.T.~.T.T.T.T.T.T.T.T.T.T.T.U.U.Y.U.U.U.U.U.L.Y.Y.L.P.L.L.S.L.L.S.L.S.L.L.S.L.S.L.H.H.H.H.H.S.S.A.S.S.A.A.A.A.A.A.A.h.A.A.A.Z.G.A.A.A.A.G.A.S.S.S.S.S.S.S.S.H.S.S.S.S.S.A.S.A.A.H.g.~ ~ ! CXZXFXAXAXFXFXAXGXGXDXDXAXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXSXFXFXFXFXFXFXFXFXFXFXFXFXDXDXGXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXDXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXAXDXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXDXDXDXBXQ.} Q ~ [ }.}.}._.`.`.`.(.(.(.(.(.(.(.(.(.(.(.(.(./.(././.(.(.(._._._._._.(.(.|.(.(.(.^.(././././.^.~.T.T.T.T.T.T.T.T.~.Y.T.T.T.P.P.P.T.P.U.Y.L.L.L.L.U.L.L.L.L.L.U.D.L.U.P.D.S.S.L.].M.c x x l w z t z e w w z u w z w w w l w z w w z w d w z & - - w z w z z t Y n.A.G.G.G.Z.G.A.H.G.h.S.S.H.H.H.H.H.H.H.H.H.H.H.H.H.H.G.G.G.S.S.H.L.L.U.U.U.U.T.P.T.P.T.P.T.T.Y.T.T.T.T.T.T.T.~.Y.~.I.T.T.I.~.T.T.T.~.T.~.T.~.~.~.T.~.~.T.~.~.~.~.~.~.[./.~./.(.^.^.(.(.(.(.(.(.(.`.`._._._._.|.^.(.(.{.(.{.^.(.(.(.^.`.(.`.(.(.^.(.`.^.`._._.|.}.|.'. X}. X}. X}.|.}._.|._._.|.(.^.|._.(.(.`.^.(.(./.^./.[.(./.(.^./.", "H J Z H Z G Z Z Z D D D H Z Z Z D Z Z C Z B Z Z Z Z Z C Z Z Z Z Z Z Z L Z Z Z Z D Z H Z Z D Z Z D D D Z H H H H H H H P H J L P J J P P P J P J U L L S q $ & % * ; ; e ; : y * r r r r r r r r r r r r r r r r r r r r r r r : r r r r r r r r r r r r r r r r r r r r r r r y r r r r r q r r r r r : r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r r r r r r r 0 r : 0 r : r r ; r r r r r * y r r ; r r r r = % $ o # B u.E t.t.t.u.t.t.t.u.t.u.u.t.u.u.t.u.t.t.u.s.t.s.u.u.r.u.u.u.u.u.r.u.u.u.t.u.u.u.u.E i.u.t.u.t.u.t.u.u.u.u.u.u.i.u.i.i.i.i.i.i.a.i.i.a.i.a.a.i.a.a.i.a.i.i.a.a.a.a.i.z.a.a.a.a.a.a.k.f.a.f.f.a.f.a.a.a.a.f.f.g.g.g.g.h.g.z.h.h.h.h.h.h.h.h.l.h.A.A.j.A.A.A.A.h.h.A.h.A.h.A.G.S.G.G.G.S.H.H.H.H.H.H.L.H.L.L.S.L.L.U.Y.U.U.T.U.T.T.T.T.T.~.T.T./././././.!.[.~.!././.~.!.~.~.~./.~./.~.T.T.~.~.T.~.T.T.~.T.~.~.T.T.~.T.~.~.~.T.~.T.~.T.~.~.~.T.~.T.T.T.T.T.T.T.Y.T.T.I.U.U.L.U.U.L.L.S.L.L.L.L.L.U.L.L.L.K.H.H.L.L.H.H.H.H.S.S.S.S.S.S.A.h.A.A.A.A.A.A.A.A.A.A.G.A.A.A.G.A.S.Z.A.A.Z.S.S.S.S.S.S.S.H.Z.G.S.A.S.A.~ Q ! CXZXFXAXFXFXZXDXAXSXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXSXDXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXSXGXAXDXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXDXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXDXSXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXZXDXDXBXpX[ / Q [ X}.}._.(.(.(.^.(.(.(.(.(.(.(.(.(.~.(.(.(./.(.(.(.(._.(._._._._.^.{.^.|.|.(.(.(././././.~.~.~.T.T.T.T.T.T.T.T.T.T.P.T.T.P.T.P.P.L.Y.L.L.Y.L.L.L.U.U.U.L.L.H.F.S.D.L.L.H.S.S.b.' w w w w w z w z l w w h z w w l t - z w z w w n w z w n z u z w z w w ` Z.G.G.z.G.G.G.G.G.A.Z.G.H.S.G.H.H.H.H.H.H.H.H.H.S.H.H.H.L.G.H.H.H.D.L.U.L.L.U.P.P.P.P.T.T.T.T.T.T.~.T.~.~.T.T.~.U.~.~.Y.~.I.~.~.T.~.T.T.T.T.~.T.T.~.~.T.~.^./.~.~.~.~.~.T.^././.(.(./.(.(.(._.(.`.`.`.(._._._._.(.|._.(.(.(.`.(._.(.(.|.^.(.^.(.`.(.(.^._._.|._.}.}._.|.}.}.}.}.|. X}.|.`.|._.|.`._.`._._.`.(.^.(.(.(./.[./././././.(.^.", "L D Z H D D D D D D D Z D C Z H D B Z Z C Z C Z B Z Z Z Z Z Z Z Z Z Z Z Z Z H G Z G Z Z Z D Z H D D D H H H H H Z P H U H U H J J P P P J P P H P P L L I ; % & % % * ; r r : r r r r r r r r r r r r r r r r r r r r r r e 0 r 0 e r r r r r r r r r r r r r r r r r 0 r r : * r r r r r e r r r r r r 0 r r r r : r r r r r r r e r r r r r r r r r r r r r r r r r e r r r r r r r r r r r r = = r r r r r r r r r r r r r r ; r r ; ; % $ $ * t.t.u.t.u.t.t.t.u.t.t.t.u.t.t.u.u.t.u.u.t.u.t.u.t.u.p.p.u.u.u.t.p.u.u.u.i.u.u.u.u.u.u.u.t.u.u.u.u.t.u.t.r.u.u.i.u.i.i.u.i.i.i.d.i.a.k.i.a.i.i.a.a.a.a.a.a.i.a.a.i.z.i.g.a.a.a.a.a.a.a.f.z.a.a.a.k.a.f.a.g.a.f.f.f.g.g.h.z.h.h.h.l.z.h.h.h.h.h.l.h.h.A.h.A.z.S.h.A.h.j.h.A.A.S.A.A.S.S.S.H.H.H.L.L.H.L.H.L.L.U.U.U.U.T.U.T.U.T.U.T.Y.T.~.~././.~././././.^.^././././.~./.(.~.~.~.~.~.R.(.~.T.~.T.T.T.~.T.~.T.~.T.~.T.~.~.~.T.T./.~.~.~.R.T.T.~.T.~.T.T.T.T.T.Y.U.T.U.Y.T.P.Y.L.U.Y.L.P.D.L.L.L.L.U.L.Y.L.L.H.L.H.L.L.H.S.H.H.H.H.H.S.S.S.A.A.A.A.A.G.A.G.A.A.A.A.Z.G.G.A.H.H.Z.h.S.S.S.A.S.S.S.S.S.A.H.A.A.S.h.A./ ~ ~ CXZXFXZXFXZXFXFXDXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXAXFXFXAXDXDXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXDXDXDXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXZXDXDXCXBXQ.{ Q ^ c.|._.|._.`.^.^.(.(.`.`.(.^.(.^.(.{.[.~.{.^.(.(.{.(.(.(._._._._._.(.`._.(.(.(.(.(././.!.~.~.T.~.P.T.T.T.T.T.T.T.T.T.T.T.P.T.T.P.T.U.Y.U.Y.L.L.L.Y.L.U.L.L.S.L.L.S.G.H.H.H.S.L.L.H.Y.H.G.A.A.S.S.S.S.S.D.S.A.A.A.H.S.S.S.L.D.L.D.D.L.L.L.H.K.S.L.S.U.S.H.P.G.S.F.L.G.G.G.G.H.H.G.H.G.H.H.H.H.S.H.H.H.H.H.H.H.H.H.H.H.L.L.L.S.U.L.L.L.Y.P.P.U.U.T.T.Y.Y.T.T.~.~.~.T.T.~.~.~.T.~.T.~.I.~.T.~.~.T.T.T.~.T.T.~.~.~.(.~./././.T.~.~.~.(././././.(.(.(.^._._.|._._.|.`.(._._._._.{.`.|.^.|.^.^.(.(.(.`.{._.(.(.(.(.^.(.(.{.}._.}.}.}._._.|.|.@X}.|.|. X|.|.|.|._._._._._._.`.^.^.(.(.(./.(./.(.(.[./././.", "D D H Z D D D Z D D Z D D Z F Z Z C Z C D Z Z Z D Z Z C C D Z Z Z Z Z Z Z H Z Z Z Z Z G Z Z H Z D Z H H D H U H H H H P P H P J H P P P P P P J P P L L P S % $ $ % % * : * r r r r r r r r r r r r r r r e r r r r r r r r r r r r r r r r r r r r r r r : r r r r r e r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r * r : r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 y t r : r r r q r r r r r r r r ; r 0 * % & $ % r.t.u.t.t.t.u.t.u.t.t.u.t.u.s.u.u.u.u.u.u.i.u.u.u.u.s.u.u.u.u.p.u.u.i.u.u.u.u.u.u.u.i.E t.u.u.t.u.u.u.u.p.u.u.u.u.u.i.i.a.i.i.i.a.i.i.i.i.a.a.a.a.a.a.a.a.a.a.a.a.i.a.a.i.z.a.k.a.a.z.a.k.a.a.a.z.i.f.f.k.f.g.f.g.j.g.h.j.l.g.z.g.z.z.h.l.h.h.h.h.h.g.j.Z.A.h.h.S.h.A.A.A.A.A.A.S.A.S.S.G.H.H.H.H.L.G.L.L.L.L.P.P.U.U.U.T.U.T.T.T.T.T.~.T.T./.~.~././././.!./././././.^././.~.(.~.~.~.~.T.T.~.T.~.T.~.T.T.~.T.T.~.T.~.~.T.~.T./.T.~././.~.^.^.~.~.T.~.T.T.T.T.T.T.T.T.T.T.Y.P.L.U.P.L.P.P.F.L.L.L.U.L.L.L.L.L.L.L.L.L.L.L.H.H.H.H.S.S.S.S.W.G.A.A.A.A.G.h.W.A.A.A.h.A.G.A.h.Z.G.S.A.S.S.S.h.S.A.S.A.H.A.A.Z.h.S.A.~ ~ S ZXZXFXAXFXFXDXDXAXFXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXGXSXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXDXZXZXDXHXm.[ Q Q [ _.|._._._.`.`.^.`.`.^.(.`.(.(.(.^.(.(.(.^.^.^.E.(.(._.(._._._._.{.{.|.{.|.^.(././././.!.~.~.T.T.T.T.T.T.T.T.T.T.T.T.P.T.T.P.T.Y.Y.P.U.L.U.U.J.K.L.L.S.L.L.L.S.S.L.H.D.H.S.H.H.G.Y.S.H.H.S.S.S.S.Z.D.S.S.A.H.H.H.H.F.S.S.U.L.L.S.L.L.S.L.L.L.L.U.S.T.H.D.L.G.D.A.H.Z.H.G.H.H.H.H.K.A.H.H.H.A.H.H.H.H.H.H.S.H.L.H.L.U.S.L.S.L.L.P.L.U.Y.P.U.T.T.P.T.T.^.T.~.T.T.~.~.~.T.~.~.T.~.I.Y.~.Y.~.T.P.~.~.T.T.~.T.~.~.~.~././././.(.~.~.~./.(.(.^.(.(.(.[.}.|._.|._._. X|.|.|.|._._.`._.(._.`.(.|.`.(.(.|.(.|.(.(.(.`.(.(._.^._.}.}.}.|._.`.|.|.|..X.X|.|.|.|.|.|._._._._._.^.^.`.(.(.(././.(.[./.(./.[.~.", "G D D D G D D D Z G Z D D Z Z Z Z Z Z Z D C Z C Z Z C C Z Z Z Z C Z C Z Z Z Z Z D D D H D Z Z G Z Z H H H H H H P H Y J H P J H P P L P J P J J P H P J D I S % $ $ % % ; : ; ; : r r r r r r r r r r r r r : r r r r r r r r r r 0 r r r r r r r r r r r r r r r r r 0 r r r r r r r e r r r r r r r e r r r r r r r r r r r * r r r r r r r r r r r r r r r r r r r r r r r r r r r e r r r r r r 0 : r 0 r r r r : y y : : r y 0 * % $ o $ y.u.r.a.r.u.u.u.u.t.u.s.t.u.t.u.p.t.u.u.u.u.p.i.u.p.u.p.i.t.p.p.i.u.u.u.s.i.u.u.u.u.u.u.t.u.u.t.u.t.u.t.u.E i.u.u.u.i.i.i.i.i.i.i.i.d.d.i.i.a.a.a.a.a.a.a.a.j.d.d.a.a.f.i.a.z.i.s.f.a.f.f.f.s.a.a.a.f.a.a.f.f.f.z.j.j.f.f.z.g.h.l.l.k.k.h.h.h.h.l.l.h.l.h.l.l.l.l.l.h.A.A.h.A.A.A.A.A.A.A.S.H.A.H.H.L.L.H.L.L.L.U.L.P.P.T.T.T.T.T.T.~.T.~.~.!.~.~././.(.^././.(././.^./.~././.~./.~.!.~.!.R.T.T.~.T.T.T.~.T.T.T.T.~.~.~.~.~.T.~.~.(.~.~.[.~.~.~.~.~.~.~.Y.~.R.~.R.T.T.T.T.T.U.T.Y.U.U.U.L.L.I.L.L.L.U.U.Y.P.U.L.L.L.L.L.L.L.P.L.L.S.S.S.H.A.G.G.G.A.G.G.A.h.A.S.Z.j.A.G.A.S.G.h.G.A.G.A.A.A.S.H.z.h.A.A.A.A.A.A.A.z.S ! ! CXAXFXAXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXDXAXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXSXDXDXAXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXDXAXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXVXZXZXBXm.} ~ ! [ '..X|.|.|._.|._.|.^.`.^.).{.`.(.(.{.(.(.(.(.(.(.(.(.(.(._.(.`.{.`.(.|.(.(.(.(.(.(.~.~.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.P.T.P.P.Y.U.U.P.P.P.L.L.L.L.L.L.L.L.S.S.H.L.L.G.H.H.H.H.G.H.H.H.G.S.A.H.S.G.A.S.S.S.S.S.S.U.H.H.H.S.U.U.L.L.L.L.L.L.L.L.L.L.L.L.D.Y.L.D.H.S.L.S.S.K.U.S.L.Y.L.S.S.U.L.S.S.L.H.H.K.L.L.L.L.H.L.L.A.L.L.U.P.P.P.P.P.T.T.T.T.T.T.[.~.~.T.~.~.T.~.[.T.~.U.T.T.~.T.T.T.XX~.T.T.~.~.~.[.T.(.(././.!./././.(.~.(.(.(.(.`.^.`.|.|._._.|.|.'.'.|.|.|._.|._.|._._.(.(.`._.(.|.{.^.{.(.{.(.^.(.|.(.`.`.|._._._.|. X'. X|..X|. X.X'.|.|.|.|._._._._._.(.`.(.(.(.(./.(./.(././././.~.", "D D Z G Z D Z Z D D Z Z Z Z Z Z G B C Z C Z C D Z C Z Z Z C C Z Z Z Z D Z Z Z G D Z Z Z Z D D Z Z H H Z H H H H H H H J H J J J H P P P J P P P H P P P P J J Z % $ $ & - % ; * r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r e r r r r r r t * : : r r r r r r r r r r r r r r r e r y r r r r r r r r r r r r r r q e r r r r r r r r r r r r r r r r r r r r r r r r : = r r ; y r * : % % $ $ T i.r.u.r.u.t.t.u.t.u.u.r.t.u.u.u.u.p.p.u.u.u.u.u.u.u.u.u.u.u.u.u.t.u.u.u.p.p.u.u.u.u.u.t.u.u.u.u.t.u.t.u.u.t.u.u.u.i.u.i.i.i.i.i.d.z.i.z.z.a.a.a.a.a.a.z.a.a.i.d.a.g.f.a.a.i.g.a.g.a.f.s.f.a.z.a.k.k.a.k.k.f.f.g.f.f.f.g.h.f.f.h.k.z.h.h.h.h.h.h.h.h.h.h.h.h.l.l.l.l.A.g.h.A.A.A.A.A.A.A.S.S.H.H.H.H.H.S.L.L.U.U.L.Y.Y.P.Y.T.T.T.T.T.T.~.T.!.~././././././.(.(.(.(.(.(.~././././.~././.~.~.~.[.~.T.T.~.~.T.~.~.~.T.~.~.T.T.~.~.~.~.~.~.[.~.~.(.~./.~.~.~.~.~.~.R.T.T.T.T.T.T.T.T.T.U.U.U.L.Y.L.U.U.U.L.U.P.P.L.U.U.U.U.L.U.L.P.S.S.L.S.L.H.H.G.G.G.Z.A.G.A.J.S.A.S.A.A.A.h.G.A.S.A.A.A.A.A.G.S.A.A.A.A.A.A.A.A.h.A.S./ ! ! SXFXFXAXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXAXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXDXDXAXDXAXDXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXDXMXm.[ Q _ { |.|.|.|._.|.|.|._._.`.|.|._.{.^.(.(.(.(.(.(.^.(.`./.(.(.(.`.`.{.|.^.(.(.(.^./.(.~./.~.T.T.~.~.T.T.T.T.T.T.T.T.T.T.P.T.T.T.T.P.T.U.U.P.P.P.L.U.L.L.L.S.L.L.L.L.L.L.H.L.L.L.L.H.H.G.H.G.A.G.S.H.S.H.H.H.S.S.S.S.S.L.S.H.H.H.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.A.L.A.P.H.U.S.L.U.S.L.U.G.H.H.L.H.D.L.S.H.H.H.H.S.S.S.L.L.L.L.L.P.U.Y.U.P.P.P.T.T.P.T.T.T.T.T.T.T.~.[.T.T.~.~.T.~.~.~.~.T.~.~.T.XXE.T.T.T.~.T.~.~.(.(.T././././././.~./.(.(.(.(.(.|.|.(._.|.|.|.|. X X|..X|. X|._.|.|._._.|.`.^._.^.(.|.{.(.(._.^.^.`.^.`.(._.|.|. X|.|.|..X'.|. X|.|.|.|.|.|.|.`.|._._.(.(./.(./.(.(./././.[././././.(.", "H H Z D Z G Z Z D D D Z Z Z D Z Z Z C Z C Z Z C C Z C D B Z Z C C Z Z Z Z Z Z Z Z Z Z Z D Z G D D Z D H Z H G H H P P H L P J J P J P H J J P P J P H P J H H H K % o $ $ % ; ; ; r r 0 0 ; r r r r r r r r 0 r r r r r r r r r r r r r r r r r r : r r r r r r r r r r r r r r r r 0 y 0 y r r r 0 r r r r r r r r 0 r r r r : r r r r r r r r r r r r r r r r r e r r : r r r r r r r r r r r r r r r r r r r : r : : ; : ; : % ; $ o # = p.p.p.u.r.t.u.u.u.u.u.u.u.u.u.u.u.p.u.u.t.u.u.u.u.p.i.u.u.u.p.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.t.u.u.u.u.u.i.u.i.i.i.a.a.d.i.z.i.a.a.a.a.a.z.i.k.i.a.g.f.a.a.a.z.z.i.a.k.a.j.a.k.a.a.f.a.f.f.f.f.k.g.j.g.f.g.f.f.k.h.h.k.l.h.h.h.h.h.h.h.h.h.h.h.h.l.l.l.A.h.A.A.h.A.A.A.A.A.S.S.S.A.G.H.S.H.L.L.L.L.U.L.U.P.P.T.Y.T.T.T.T.T.~.~.~././././.(.(.^.(.(.(.(.^.(.^.[.E./././.~./.~.~.~.T.~.T.~.T.~.~.T.(.T.~.T./.E.[.U.~.~.T.~./.(.(.[.~./.^.~.~.~.~.~.~.T.~.T.T.T.T.T.T.T.T.U.T.U.I.I.T.U.U.U.U.U.L.P.U.L.Y.L.Y.L.L.L.L.L.L.D.L.H.H.H.G.Z.G.G.H.A.G.h.H.S.H.A.A.A.A.G.A.A.A.G.G.A.A.G.z.A.A.A.A.A.A.h.g.A.A.h.~ / ! BXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXDXAXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXDXAXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXGXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXSXDXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXDXAXFXFXFXFXFXFXFXFXGXAXFXFXFXFXFXFXFXFXFXFXFXAXFXFXDXDXBXQ.{ / Q [ .X X'.|.|.{._.|.|.|.|.[.`.`._.|.(.(.|.(.(._._.(.(.(.(.|.(.|.(.{._._.^.^.(.(./.(././.(.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.P.T.T.P.T.P.U.U.L.U.L.L.L.L.L.L.L.L.L.L.L.S.S.L.L.G.L.H.S.H.H.H.G.K.L.A.H.H.S.S.H.H.S.H.H.H.S.S.H.S.S.S.S.L.L.U.P.U.L.U.L.L.P.L.L.L.L.L.S.L.U.S.Z.L.S.U.L.S.L.H.L.S.U.S.S.L.H.H.H.L.D.U.L.L.L.L.U.L.U.U.U.L.P.P.T.P.T.T.T.T.~.T.^.P.[.T.~.~.^.~.~.~.T.~.T.~.~.T.~.T.U.T.~.T.~.~.~.~././.T././././.!./.(./././.(.(.(.^.|.|._._.|.|.|.|..X|..X|.|.|._.|._. X}.^._.[.}._.|.^.^._.(._.(.[.|._.}.`._._._.|.|.|._..X|.|..X.X|..X.X|.|.|.|._._.`.`.(._.`.(.(./././././.(./././.~.T.", "Z Z Z D Z Z H H D Z Z Z Z Z D D Z H Z C Z Z C Z C C Z B C C Z Z Z C C C Z Z Z Z Z Z Z Z Z D Z Z D D L Z L H L H H H U P H J J P L P P P J Y K P J J J H P J J J P u : o $ $ % $ % * ; ; r ; 0 r r r r r 0 r ; r r r r r r r r r r r : r r r r r e q r r r r r r r r r r r r r r r r r : : r r r r r r r r r : r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r q r r r r r r e r r r r r r r r r : q r * 0 ; : % % & o * w.i.t.u.u.u.u.t.u.u.t.u.t.t.u.t.u.u.u.t.u.u.u.u.u.u.t.u.u.u.u.i.t.u.t.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.t.u.u.u.u.u.u.u.u.u.i.u.i.i.i.i.a.a.a.i.a.i.a.a.a.z.a.i.i.z.z.g.a.g.d.z.i.i.i.g.i.i.g.a.a.k.a.f.a.f.k.f.f.f.a.a.a.j.g.g.g.f.h.f.h.h.l.z.h.h.h.h.z.h.h.l.l.l.l.l.l.l.h.A.A.h.A.j.A.A.A.A.S.S.A.S.H.H.H.L.S.H.K.Y.Y.L.U.P.Y.T.T.T.T.~.~.[.!.~.~././.(.(.(.(.(.(.(.(.(.(.(.(.(.[././././.~./.~./.T.[.~.~.T.~.~.T.T.~.~.~.U.(.U.T.~.~.~.~.~.~.~.~.(././.^.~./.~.~.~.~.T.~.T.T.~.T.T.Y.T.U.U.U.T.T.U.U.T.U.U.L.P.P.L.U.U.U.K.L.Y.U.P.L.U.P.L.D.H.H.G.H.G.H.A.H.H.A.h.H.A.A.H.A.H.A.S.A.A.A.A.A.A.h.G.A.G.A.A.S.j.A.h.A.A.h.~ ~ ! SXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXAXDXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXSXGXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXAXDXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXSXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXDXBXpX[ / S [ @X X.X X.X|._.|.|._._._.^.|.^.(.(.^.(.(.(.(.(.(.(.(.(.^.(.`.{.(.(.`.(.|.(.(././.(.!.!.T.T.T.T.T.T.U.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.U.U.L.L.L.L.L.L.S.L.L.L.L.L.L.L.H.L.H.L.L.L.H.H.H.H.S.H.S.S.G.S.S.H.S.H.H.H.L.U.L.U.L.U.L.L.Y.U.P.U.P.P.P.U.U.P.L.U.L.P.L.L.L.H.H.L.S.L.L.L.L.L.I.L.L.L.L.P.S.H.H.L.L.L.L.S.L.L.L.U.P.L.Y.L.U.P.T.P.T.T.T.T.T.T.T.T.T.T.~.T.T.~.~.T.(.~.~.~.~.~.T.~.T.T.~.~.T.~.T.~.~.T./././.(./././././.(.(.(.(./.(.(.(.{._.|.|.|..X|..X.X|.|.|.|.@X|._. X}.|._.|.}.(._.|.|.{._._._.}.}.}.}.(.|.|._.|.|.'._.|.|.|.|.|.|.|._.|.|.|._._._.(.(.(.(.(.(./././././././.T./././.~.", "Z L Z Z Z H Z Z G Z C Z Z Z Z F Z Z Z Z Z B D C D C Z D Z Z Z C C Z Z C C Z Z Z Z Z Z Z Z D Z D D Z L Z Z Z H L H P H H J J J P P K L P P P I H J J P L H U P Z H P H 0 $ $ $ $ % % * : : r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r r r * r r r r r r r r : r r r r r r r r r r r r r r r e r r r r r r r r r r r r r r * 0 r r r r r r r r r r r r r r r r r r r 0 r : : r r r r r r r r r 0 ; ; * % $ o B p.i.t.i.u.u.u.t.p.p.u.u.t.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.t.p.t.u.u.t.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.t.p.u.u.u.u.u.i.i.u.i.a.i.d.d.a.a.a.z.a.f.i.i.f.z.f.k.k.a.f.f.g.a.k.f.a.s.j.a.f.a.s.g.s.a.a.z.k.k.z.k.a.j.f.f.f.g.g.j.f.f.z.z.l.h.h.h.l.h.h.h.d.h.h.h.g.l.l.l.l.A.l.z.A.A.A.A.A.A.A.H.S.S.H.S.H.S.L.L.L.L.L.P.Y.Y.U.T.T.~.T.~.R.~.~.^.!.(.(.(.^.(.(.(.(.(.(.(.(.(.(.(.(././././.~.~.^.!.~.T.~.~.T.~.~.~.[.~.~.T.[.T.~.XXT.~.~./.~./.~./.!.^.(.~.(.~.~.~.~.T.T.~.T.T.T.T.T.T.T.T.T.U.T.T.T.T.U.U.T.U.U.U.T.U.T.U.L.T.L.L.P.L.P.P.L.L.P.A.U.H.H.H.G.S.H.H.H.H.h.S.A.G.A.A.W.A.A.h.A.A.A.A.A.H.A.H.A.A.A.z.A.A.A.g./ / ! CXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXAXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXAXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXVXFXFXZXZXBXQ.{ Q / [ dX.X.X.X|.'.|.|.|.|.|.|.|._._._._.(.(.(.(.(._.(.(.(.(.(.[.|.(.(./.|.(.(.(././.(.[.T.~.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.P.P.P.U.L.L.L.L.L.L.U.P.A.U.L.U.L.L.L.L.L.H.L.H.H.H.H.H.D.H.G.H.H.K.H.S.H.H.H.S.S.L.L.L.U.P.L.U.P.P.P.P.U.U.P.P.P.P.U.P.P.P.L.L.U.S.L.H.H.L.L.L.U.L.L.L.D.U.L.L.U.L.L.S.L.L.P.L.L.L.L.Y.P.U.Y.U.P.P.T.T.T.T.T.P.[.~.~.T.~.T.T.!.~.~.~.T.~.~.T.~.T.(.~.~.~.~.T.~.T.(.~.~./.^.^./././.!./././.(.(.(.(.(.(.|.|.(._.|.|.|.|.|. X|..X|.|.|.|.|.|.|.|.|.|._._._.[._.|.|.^.|.|.(._.}.}._.|.|.|.|. X'.|.|.|. X_.'._._.`.|.|.|._._._.`.^.(.(.(././././.~.~./.~.~./.~.~.~.", "G Z G Z Z Z Z H D Z Z G Z G Z Z Z C Z Z C Z A C Z Z C C C C C Z B Z C C Z C Z Z Z Z Z Z D Z D Z D Z J H L H L H H J H P H J P P P J P P J K J P I L P L H H H H P H Z P 0 $ o o $ % % % : : 0 e r r 0 ; r 0 ; 0 r r r r r r r r r r r r r r r r r e r r e 0 r r r 0 r r r r r : y 0 r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r t e r r e 0 r r r r r r r r r r r r r r r r r r r 0 r r r r r r : ; : ; - $ $ # # $ T i.i.u.a.p.u.u.t.u.u.u.u.u.u.u.u.t.t.u.u.p.t.u.u.u.t.t.u.u.t.u.u.u.u.u.p.u.p.t.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.t.u.u.t.u.u.u.u.u.u.i.i.a.i.i.a.a.a.i.i.a.i.k.f.k.k.k.f.k.g.j.k.a.i.a.k.f.f.a.f.a.j.a.a.k.a.a.f.a.f.a.z.z.f.f.f.g.j.g.g.g.h.k.k.l.h.h.h.l.A.h.h.D.A.h.A.l.z.l.h.z.l.A.A.A.A.A.A.A.A.A.S.S.H.H.S.U.L.L.L.L.P.U.P.Y.Y.Y.T.Y.T.T.~.~.^.~./.(.(.(.(.{.(.(.(.(.(.(.(.(.{.(.(.(.(.(.(./.[.~.^.~.~.[.~.~.~.~.~.~.~.T.T.[.T.~.~.~.~.~.~.^.~./././.^.~.~.(.~.~.(.~.~.~.~.T.T.~.T.~.T.T.T.T.T.T.T.T.T.T.~.T.T.T.T.U.U.U.U.U.U.U.U.T.P.P.P.D.L.L.L.L.L.H.S.H.R.h.H.A.S.H.H.A.A.A.G.A.A.A.A.h.A.A.A.A.A.S.A.A.A.h.A.z.h.h.h.h.S ! ! CXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXDXSXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXDXFXFXFXFXDXAXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXSXBXm.[ / ~ c.@X.XdX.X.X.X X.X|. X_.|._._._._._._._._._._._._.`.^.|.(.^.(.(.|.|.(.(.(./.(././.(./.~.~.(.T.T.T.T.Y.Y.Y.T.T.T.T.T.T.T.T.T.P.T.U.T.P.P.P.L.L.L.L.L.L.U.D.L.Y.L.L.U.L.L.L.L.H.H.H.H.H.H.H.H.D.H.H.A.H.A.K.H.L.H.L.L.L.L.L.P.L.L.U.U.U.P.T.T.T.T.P.U.P.U.U.P.P.L.L.L.L.L.L.L.L.L.L.L.L.U.U.P.P.L.P.L.L.U.L.L.L.P.P.U.Y.U.L.Y.U.U.Y.T.P.T.T.T.T.T.[.T.T.T.T.T.~.~.~.~.T.~.~.T.~.T.~.~.~.T.~.T.~.~.~.~.~.~.~.E.[.~././.(./././.(./.(.`.(.(.(./._.|._._._.|.|.|.|.'.|..X|. X|.'. X|.'.|.|.|.|._.|._.(.|._._._.{.|.}.}.|.|.|.|.'.|.|. X|. X|.|.|.`.|.|.|._.(.`._.(.`.(.(.(.(./././.(././.~./.~.T./.T.T.", "Z G Z H Z Z D Z Z Z D C Z Z Z Z C Z Z Z C Z Z C C C Z C C C F C D C C Z Z C C Z Z Z D D D D Z D D D H D Z H H U H H U H P J J J P P P P I L P P I L P P P J U H F P U L P u $ o $ $ $ $ % % * ; r r r r e r r r r r r r r r r r e r r r r r r r r r r r r r r r r e r r r r r r : r r r r r r r r r r r r r r r r r r r r r 0 e r r r r r r r r y * r r r r r r r r r r r r r r r r r r r r r r r r r r r r * r ; * % , $ o * w.i.a.i.i.u.a.i.i.i.p.u.p.u.E u.t.t.u.u.u.u.t.t.u.u.u.u.u.t.u.u.u.u.u.p.t.u.t.t.p.u.t.u.u.t.u.u.u.u.u.u.t.u.u.u.t.u.t.u.u.u.u.u.i.u.a.i.a.a.a.a.a.k.i.k.a.z.i.i.f.f.f.f.f.g.j.z.a.g.a.f.f.a.a.a.a.a.f.g.s.s.k.a.f.f.f.f.f.j.j.f.g.f.f.g.h.f.g.k.l.h.h.h.h.g.A.h.A.h.D.D.z.h.h.l.H.A.A.l.h.A.A.h.A.S.S.A.H.H.H.H.U.L.L.L.L.P.P.P.P.Y.T.T.~.~.T.~.~./././.{.(.(.(.(.(.(._._.`._.(.^.^.(.^.(.(.(.(./.E.(.T.XX~.~.~.T.~.T./.T.~.~.~.~.~.T.[.T.T.~.~.T.Y.XX/./.E.{.^.~.(.~./.~.~.~.~.~.~.~.T.T.~.T.T.T.T.[.T.T.T.T.T.T.T.T.T.T.T.U.T.U.U.T.Y.U.T.U.U.L.L.L.L.L.L.S.L.H.H.H.H.H.H.h.A.G.G.A.G.A.h.A.A.A.h.A.A.A.A.h.A.z.h.A.l.D.h.h.l.h./ ! S ZXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXAXDXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXSXDXFXFXFXFXFXFXFXGXAXDXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXGXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXVXFXAXFXFXBXpX{ / ! [ dX.XdX.X.XdX.X'..X.X.X|.|._._._._.|._._._.(.(._.(.(.(.(.`.^.(.(.^.(.(././././././.~.~.~.T.T.T.~.T.Y.T.~.~.T.Y.Y.T.T.T.T.T.U.U.T.T.P.U.P.P.P.P.L.L.L.L.P.L.L.L.Y.L.L.L.L.L.L.H.H.H.H.S.H.S.L.P.A.H.L.L.L.L.H.L.L.L.L.P.P.L.L.Y.U.U.T.P.P.T.U.T.P.U.T.T.U.P.P.P.L.L.L.L.L.L.L.L.L.P.L.L.P.Y.P.L.L.U.L.U.U.U.L.L.P.U.U.U.L.L.T.Y.Y.P.T.T.T.[.Y.T.!.T.T.[.~.~.~.T.T.~.~.T./.T.XX~.T.T.~.~.T.~.~.~.T.T.~.~.~.~././.~././././.{.^.^.(.(.(.|.(._._.`.(._.|.|.|.|..X X X.X|. X.X.X.X.X X|.'.|._.|._._._._.|._.|._._. X X}.|.|..X'. X.X|.|.}._.|._.|._._.|.{._.^._.(.(.^.(.(.(././././././.T.T./.T.~.!.~.", "Z Z Z Z L G Z Z Z Z Z Z Z Z Z Z Z Z B Z Z A Z C F C B C C Z C C Z C Z C C Z C Z Z Z Z Z Z D D Z D D Z H L H H H J H H J H J J J P L P H J P L P L H P H L P H J U H K ~ Z H F w o o $ $ % % : 0 ; 0 ; q 0 r r r r e r r r r r 0 r r r r r r r r r r r r r r r r r r r r r q e : r r r r r r r r e r r q r r r r r r r r r r r e 0 r r r r r r * y r r r r r r r r r r r r r r r r r r r r r r r r r r r : 0 * ; % $ $ m a.i.i.i.i.i.i.u.i.u.i.i.u.u.u.i.u.u.u.u.u.t.u.t.u.u.u.t.u.u.t.u.t.u.t.u.t.u.t.u.t.t.u.u.t.u.p.p.u.u.u.u.u.p.u.u.u.u.u.u.u.t.u.u.u.u.u.u.i.a.a.a.d.a.a.a.i.i.i.f.f.f.z.f.f.f.a.f.g.z.f.g.f.f.f.j.f.g.s.s.f.k.z.a.f.f.z.a.k.s.j.f.f.f.g.g.f.f.f.g.z.l.h.h.h.h.A.g.A.h.h.g.h.h.D.h.l.l.h.A.A.A.A.A.A.A.A.S.H.H.H.H.S.L.D.L.L.P.P.P.Y.P.T.T.T.T.~.~.~.!.~././.^.(.(.^.(.(.|.^.`.`.(.(.|.|.{.|.(.(.(.(./.~.(.(.).XX~.~./.~.T.~.[.~.~.~.T.~.~.~.~.T.[.~.~.^.E.(.~.(.(./.(.(.~./.!.~.~.T.~.~.T.T.~.T.~.~.T.T.T.T.~.~.T./.T.T.T.T.T.T.T.U.T.T.T.U.T.U.Y.U.U.U.U.L.U.L.U.U.A.H.H.H.H.W.A.S.A.G.A.A.A.A.A.A.A.A.A.A.j.A.A.A.D.h.h.A.l.h.h.h.h.S / / SXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXDXDXDXSXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXDXSXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXZXZXZXBXm.[ / Q [ dXdXdXdX.X.X.X@X.X.X.X X|.'.|._.(.(._._._._._._.|.(.(.`.{.^._.(.(.(.(./.(./.[./.~.~.~.~.T.[.T.R.T.T.T.T.T.T.~.Y.T.T.T.T.U.T.U.U.P.P.U.U.U.L.L.P.L.L.L.U.U.U.U.L.L.L.L.L.H.L.L.K.H.H.H.H.S.L.D.U.H.U.H.L.L.L.L.L.L.L.P.U.T.Y.P.P.U.T.T.U.T.T.T.T.Y.P.U.U.P.P.U.P.Y.U.L.L.U.S.U.U.L.U.L.P.L.L.L.Y.L.U.L.L.U.U.Y.P.U.T.T.U.Y.U.T.T.P.[.T.T.Y.Y.T.T.T.T.T.~.T.~.~.~.~.T.T.XXT.E.XX~.~.~.~.~.T.~.~.~.~.~.~.~.~.~.~./.!./.(./.(.(.(.(.^.`.(.^._._._._.`._.|.|.|.|.|.|.|..X|..X|.|..X.X|.|.|.|._._._.(._._._._.|.|. X}.|.|.|..X|.|.'.|.|. X|._.|._.`.|.{.(.^.`.(.(.(.(.(.(./././././././.~./.T.~.T.T.T.", "H Z Z Z Z D D H Z Z C Z Z Z Z Z Z Z B D Z B C C C B C C C C C C C C C Z C Z C C Z Z Z Z Z Z Z D Z D D H H H H H H L H L P P P J P J P P J P J H J L J J H J H J J L J J Z P H J u % o $ $ $ % % % ; ; ; ; ; : ; : : ; y ; e ; r r r r r r e e r r r e 0 r r r r r r r r r r r r r r r r r r q r r r e 0 r r r r r r r r r r r r r r r r r r r r r r : y y : r r y ; ; r r r r ; ; ; r ; 0 r r r r = e * * % * $ $ $ p.p.i.i.i.i.a.i.i.i.a.i.i.i.u.p.u.u.u.u.u.u.t.u.t.t.u.u.u.t.u.t.u.u.t.u.u.t.u.u.u.u.t.u.t.u.t.u.t.u.t.u.u.t.u.u.p.u.p.u.u.p.t.p.u.u.u.u.i.i.i.i.d.a.a.a.d.d.f.k.z.f.f.f.g.g.f.g.f.f.g.f.g.z.a.g.f.f.s.j.f.f.f.a.f.g.a.a.k.f.f.z.f.f.z.a.g.k.g.f.g.g.g.h.h.h.h.h.h.l.l.l.l.A.D.g.h.A.G.j.A.A.A.h.W.A.A.S.S.S.W.H.H.H.L.L.L.L.L.P.P.P.U.U.T.T.T.T.T.~.~.~.~.^.(.^.^.(.`.(.(.(.`.^.{._._.[._.`.^._.(.(.^.^./.^.^.(.~.~.~.~.~.R./.T.~.~.~.T.E.XXXX~.T./.~.~.!.E.[.^.(./.(./././././.~.~.~.~.~.Y.~.!.~.~.T.~.~.T.~.T.~.~.~.T.T.I.T.U.T.T.T.T.T.T.~.Y.T.T.T.T.P.P.T.P.L.L.L.L.S.S.H.S.S.S.H.A.A.A.A.A.h.A.h.A.A.A.A.h.A.A.A.h.D.A.z.z.h.h.g.g.~ ~ ~ CXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXZXVXBXm.[ Q ! M.dXxXdXzX@XdXdX.X.XdX.X.X|.|.|.|.`.`.`.(.|.|.(.|.[.`.(.^._.(.(.(.(.(./.(././.!././././././.~.~.!.T.~.T.~.T.T.T.T.T.T.T.P.T.T.P.T.T.U.T.T.P.P.P.T.P.P.P.U.U.U.P.P.L.L.L.L.L.L.D.H.H.S.U.S.L.L.S.U.L.L.L.L.L.L.L.U.U.P.U.U.Y.U.T.U.Y.Y.T.T.T.T.T.T.T.T.P.T.T.P.P.T.L.P.U.U.U.P.U.P.I.I.U.U.P.P.P.P.L.L.P.P.U.T.U.T.T.U.T.U.T.U.T.T.T.Y.T.T.T.T.T.T.T.T.T.T.T.~.~.~.~.T.~.~.T./.T.~.~.~.~.~.T.~.~.~.~.T.~.~.!./.(.[.^.(.(.(.(.(.(.(.(.(.`.`.|.`._.`.|.{.|.|.|.|.|.|.|.|..X.X.X.X.X X.X|.|.|._._.|.|._.|.|.|._.|. X.X X X|..X X|.|. X|.}.}.}.{._._.(.^.(.(.(.^.(.(././././.!.(.~.~.(./.~.~.~.R.~.T.T.", "Z H Z Z C G Z G Z Z C Z D Z Z Z Z Z Z Z Z C Z C C D C Z F C C A C C Z C D C Z Z A Z B Z F Z Z H D D D H F H H H L L L L L J K Y J J Y I P P J J J H J J I H L H F J L J F H J H J S * $ o o $ % % % ; ; ; ; ; y 0 y = ; r = r r r r = r r : = : r r r r r r r r r r r r r r r r r r r r r r r r r : r r r r r r r r r q e r r r r r r r r r r r r r r : * r r ; r ; y r r r r r r r 0 r r r r * r r ; * = $ o o o C i.p.i.i.i.i.i.i.i.i.i.i.i.i.i.i.p.u.u.u.u.u.u.t.u.u.u.u.t.u.t.u.t.t.t.u.t.t.u.t.t.t.t.u.t.u.t.i.t.u.u.u.u.u.u.u.u.u.p.u.p.p.u.u.u.u.u.u.u.u.i.i.i.a.a.a.a.d.i.d.d.f.f.f.f.k.f.g.g.k.g.g.g.a.z.g.a.f.f.a.f.a.f.a.g.g.a.a.g.a.z.f.f.a.f.f.z.f.k.f.k.g.f.g.g.h.f.h.h.l.k.l.l.l.l.h.h.A.j.A.A.A.h.A.A.A.A.S.S.G.S.G.H.H.L.L.L.L.L.L.P.D.U.U.T.T.T.T.T.T.T.~.(.~.(./.(.{.(.[.^.^.`.^.`._._._._._.(.`._.^.`.{.E./.~./././././.~.~./.R.~.XX~.T.~./.U.XX~.~.~.~.~./.(.^.(./.(././././././././.~.~.!.~.~.~.~.~.T.~.!.~.~.~.~.T.~.~.~.T.~.~.T.T.Y.~.T.T.T.~.~.T.T.T.P.P.T.P.L.L.L.L.L.L.U.H.H.S.Z.S.G.A.A.h.A.A.A.A.h.A.h.A.A.h.h.h.l.l.h.h.h.h.z.h.~ ~ ~ CXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXFXFXHXQ.{ Q S [ fXdXzXzXzXzXdXdXdX.X.X.X.X|.|.|.|.{._.|._.|._.|._.^.`.|.|.(.(.(.(.(.^.(./.(.(././.!././.~.~.~.!.~.T.~.T.~.~.Y.T.P.U.P.T.T.P.T.T.Y.U.T.U.P.T.P.T.P.P.P.U.P.P.P.P.U.U.L.L.L.L.L.H.D.L.L.L.H.S.Y.D.L.L.U.L.L.L.U.P.P.U.U.U.T.U.T.T.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.P.P.U.U.P.P.P.P.U.Y.Y.P.U.Y.P.P.P.Y.L.P.P.P.P.U.U.T.U.T.U.T.U.T.T.T.T.T.T.T.P.[.T.T.T.T.~.~.~.T.~.~.T.~.~.T.T.[.~.T.~.~.~.~.~.~.~.~.~.(.~.~.~.~.(.E.^.~.^.(.^.^.`.`.(.`.`.(.{._.(.`._._.|.|. X|. X X|.'.|. X|..X.X.X|..X|.|.|.{._._.|._.|.|.|.|. X X X|. X.X|.|.|.|.|.|.}.}.|.^._.(.`.(.`.(.(.(./.(./././.(./.(.~.!.~.~.T.T.~.T.T.~.", "L Z Z G D Z Z Z Z Z Z H B Z Z Z Z Z C Z D C Z C C B C C C C C C Z C C B B F C Z Z Z D Z Z Z D D D D H H H H G H L H L K L I K I P P P P P L J J J L L H J J L L J J H J L J J J L Z P S % o o o $ $ % % = ; ; 0 : ; ; r r 0 r y : : : : * r r r r r r r * r r y r r r r r r r r r r r r r r r r r * r r r r r r r r r r r r r r r r r r e r r r r r r r r r r r r r r r r r r y 0 r r r r * ; % ; ; % $ $ $ m y.a.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.e.u.i.u.i.u.t.u.u.u.u.u.u.u.u.u.t.u.t.t.t.u.t.u.t.t.u.t.t.t.u.t.p.t.u.u.u.u.u.u.u.p.t.p.t.u.u.u.u.u.u.i.u.i.i.u.d.a.a.a.a.i.k.f.k.f.f.f.k.g.g.g.k.g.f.g.f.a.g.f.g.a.f.f.f.z.f.a.f.j.f.g.d.f.f.a.z.z.d.a.f.f.k.k.k.f.g.g.g.h.h.k.h.l.l.h.h.l.z.D.A.A.h.j.A.A.A.A.H.A.S.S.G.G.S.H.H.H.H.L.L.L.H.U.L.U.L.U.U.T.T.Y.T.~.~.~.~././.^.(.(.(.`.(.(.(.|.(._._._._._._._._.(.`.^.(./.(.!.[.!./.~./.~.~./.~.XXU.~.~.T.~.~.~.~././.~././.^.^.(.(./.(././././././.[.~.!./.~.~.T./.(.~.~.~.~.!./.T.~.T.~.~.~.T.T.~.~.T.T.~.~.~.T.~.~.T.T.U.T.U.U.U.L.L.L.L.U.H.H.A.H.H.G.A.A.A.A.A.h.A.A.A.h.A.l.l.h.S.l.l.l.l.h.z.h.h./ ~ ! CXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXZXDXHXBXm.[ ~ ! m.zXdXzXzXzXzXzXdXxX.X.X.X.X.X.X|.|.|._.|._.{.|.|._.^.(.`.(.|._.(.)././.(.(././.^././.~./.~.!.~.~.~.T.~.T.T.T.T.T.T.T.P.T.T.T.T.T.T.T.U.T.T.P.T.P.Y.P.U.U.Y.P.U.P.U.U.L.U.L.L.L.L.L.L.S.L.Y.Y.U.U.L.Y.U.U.U.U.U.U.U.U.T.T.T.T.T.T.T.T.T.T.T.T.~.T.T.T.T.T.T.P.P.P.U.U.U.U.U.U.L.U.P.P.P.P.Y.Y.P.P.L.P.U.P.P.P.U.T.U.U.Y.U.T.I.T.T.T.T.T.T.P.T.T.T.T.~.T.T.~.T.T.~.T.~.~.T.T.T.XXXX~.~.~.~.~.~.~.~.~.~.~.(.~.(.(.!././.(.(.(.{.(._._._.|.`._.|.|.|.`.`.|.|.|.'.'.|.|. X.X.X.X.X|..X.X.X.X|.|.|.|.|.|.{.|.|.|.|.|..X.X.X X|.|.|._.|. X|.|.|._._.{.(.(.(.(.(.(.(./.(./././.!.~.(./.~.~.~.T.[.~.~.T.Y.", "H Z Z Z D Z Z Z Z Z G C G Z Z Z B Z Z C Z C C C C D C C C C Z B C C C D C C Z D Z Z D Z Z Z D D D H Z H H H H P H H P H L H J L P J P J I H P J J J P J J P L P G K J Z L J H J U L L D P y $ o o o $ & $ ; % ; ; ; ; r 0 r r q ; q r r r r r r r r r r r r r * r r r r r r r r r e r r r r r r r y r r r r r r r r r r r r r r r * y : 0 r r r r r r r r r r r 0 r ; = r y = y r r 0 ; 0 * * % % & o # * T x.i.i.i.i.i.i.i.i.i.i.a.i.i.i.i.i.i.i.i.i.i.i.u.u.u.u.t.t.u.t.t.t.u.t.u.t.u.t.u.t.t.t.u.t.t.t.u.t.t.s.t.t.t.u.u.u.u.t.u.t.p.u.u.t.u.p.u.u.u.u.i.u.i.a.i.a.a.a.a.k.i.k.d.k.f.f.k.g.g.g.h.g.g.g.g.z.f.f.a.f.f.a.f.a.k.k.f.f.f.a.f.a.a.g.a.a.g.a.f.f.f.f.k.f.g.f.z.f.f.h.k.l.l.h.h.l.A.z.h.A.A.A.A.A.A.A.A.S.A.Z.G.S.S.H.H.H.L.S.L.L.L.L.U.Y.L.U.U.T.T.T.~.T.~.~.~./.!.(./.(.(.^.(.(.(.(.(._._._._._._.`.(.(.(.(.(.(././.(./././././.~.~.~.E.XX~.~.~.~.~.[.~.(././.(././.(.(.(.^.(.(.(././././.~./.~./././.!./.!.(./.~.~.~.E./.(.~.~.~.~.~.~.T.~.~.~.T.~.~.~.[.T.~.T.T.T.T.U.U.U.U.U.U.S.D.H.H.H.A.A.S.h.A.h.A.A.h.A.A.h.h.S.A.h.A.l.h.z.l.h.h.h.k.P ! ! CXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXDXBXHXQ.} ! ! [ cXcXzXcXxX.XdXzXzX.XzX.X.X.X.X.X X|.'._.|._.|.|.|._.`.`._._._.(.^.(.(.(.(./.(./././.~.!./.~./.~.~.~.Y.~.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.P.P.P.T.Y.T.T.T.Y.T.U.T.U.U.U.U.U.L.L.P.P.L.L.U.S.S.U.L.U.L.U.U.Y.T.U.Y.T.U.T.T.T.T.T.T.T.~.T.~.T.T.~.T.(.T.T.T.T.P.U.U.Y.P.Y.P.P.U.U.P.P.T.P.P.P.P.P.U.U.T.U.T.T.T.U.T.U.U.Y.I.U.T.T.T.T.T.T.T.T.T.T.T.T.!.[.T.T.T.~.~.~.T.~.T.E.XXT.~.~.T.{.~./.~./.(.~.~.~./././.(.(.(.(.^.(.|._.|._._._.|._.|.|.|.|.`.|.|.|..X|..X|.|..X|.|. X.X X|.'.|.|.|. X|.|.|.|.|.|. X|.|..X.X.X|..X X|.|.|. X|._._._._._.^.(.(.(.(.(.(.(./.(.!././.~.~.~.~.~.T.[.T.T.T.T.T.", "Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z F Z Z Z Z C B Z C C A C C C C C C Z C Z C Z Z B Z Z Z Z D D D D D D H D H H H H L L J H L P H J P P J I J J P P P P L L H J J J J G J J J H P L S P J L Z ) S u $ o o o & $ % % % * * y = * y ; : r r r r 0 * r r r r r r r r r r r r e r r r * e 0 r : r r r r r r r r r r r r r r r r r r r r r e * y : y r r r r r r r e q 0 ; r 0 ; r ; ; 0 r = r = % % % & $ $ G i.a.a.a.i.a.i.i.i.i.i.i.a.u.i.i.i.i.i.i.i.i.i.i.i.i.u.u.u.u.u.u.u.u.r.u.t.t.t.t.t.u.t.t.t.t.p.r.t.t.p.t.p.r.u.t.t.u.u.t.u.u.u.u.p.t.u.u.u.u.u.i.u.i.i.i.i.i.a.a.a.a.d.z.k.k.z.f.f.h.z.k.f.k.g.g.g.g.g.a.a.g.f.f.f.f.f.f.f.f.f.i.f.a.f.a.a.a.a.a.g.f.f.a.k.z.f.k.f.f.z.f.l.f.h.h.h.z.h.h.h.z.h.A.A.A.A.h.S.A.A.A.A.S.S.S.H.S.H.H.A.S.L.L.L.L.U.U.Y.U.T.T.T.T.T.~.~././././.^.(.(.(.(.(._.(._.(._.(._._._._.`.`.(.(.(.(./.^././././././.~.~.(.[.E.~.~.~.~.~.T.[.E.(./././.(.{.(.(.(.(.(.(.(././.^./././.(./.!././././.~./.~./.^.~.!./.E.~.T./.~.~.~.~.~.~.~./.~.~.~.~.Y.T.T.T.Y.U.L.U.L.U.L.L.H.H.H.A.A.A.S.A.A.A.A.h.A.h.h.h.z.g.h.h.h.l.z.h.h.h.h.k.! / S CXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXSXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXDXBXm.} ^ ! c.cXzXxXzXxXzXdXzXzX.XdX'..X.X.X.X X X|.|.|.|.|.|.|.|._._._._._.(.(._.(.(.(.(.(.^.(./.~./.~./.~.~.!.~.T.~.~.T.T.T.T.T.T.T.U.T.T.T.T.T.T.T.T.T.T.P.T.P.T.T.T.T.T.T.U.U.P.P.U.U.U.P.P.P.L.L.L.L.L.U.L.P.U.U.T.U.T.T.T.T.T.[.T.T.~.T.~.T.T.~.~.T.~.T.T.T.T.T.T.T.T.T.P.T.T.T.P.P.P.T.P.T.P.T.T.T.Y.P.Y.T.T.T.U.T.T.T.T.U.T.U.U.U.T.T.U.T.T.T.T.T.T.T.T.T.T.~.~.~.T.~.~.T.~.T.~.~.~.~.~.(././.~././././.[.~.^././.(.(.(.(.^.(.|.|.|._._.|.|._.|.|..X|.'.|. X|. X.X.X|.|..X.X|..X X.X X X|.|.|. X|.|.|.|.|..X|.|. X.X X.X X|..X X|.|.|. X|._.|.|.^.(.|.(.(.(.(.(.(.(.(././.(./.(.~.~.~.~.T.~.~.~.T.T.T.", "Z Z Z L Z Z Z H Z Z Z Z Z Z Z Z D Z C Z C Z C Z C C C C C F Z C C C C Z B Z Z Z Z Z Z G D D Z H H D H Z H H H H H L H H H P J P J P P J J Y J P J P P J J H J L J J J J H J J L P P U L L L J P P y $ o o o % $ $ % % : : * ; ; : r r r r r r r r r r r r r r r r r 0 r : r y r r r r r r r r r r r r r r r r * r r r r r r r r 0 t 0 t * r r r r r r r r r r r r r r ; ; : ; ; ; % % $ $ $ % T k.u.k.a.i.i.a.u.d.d.i.i.s.i.u.i.i.i.i.i.i.i.i.i.i.i.i.u.u.u.u.u.u.t.r.u.u.t.t.t.p.t.t.t.u.t.u.t.u.t.u.t.t.t.t.t.t.u.u.t.u.u.u.t.u.u.u.u.u.p.u.u.u.u.u.i.i.i.i.a.a.a.a.z.z.a.k.z.f.z.h.h.h.k.h.z.g.g.g.g.g.g.j.f.f.f.f.f.k.a.f.f.f.f.g.a.a.a.a.a.a.a.f.a.f.f.f.f.f.f.f.z.f.h.z.h.k.k.h.h.h.A.h.H.H.A.A.A.A.S.H.A.H.S.S.S.G.S.H.H.H.H.L.L.L.L.Y.U.Y.U.Y.Y.T.T.~.T.~.R.~.~././.(././.^.(.(.(.(.(._._._._._._.`._.^.^.(.(.(.(.(.(.(.(.(././.~.~.[.~.XXT.~.~.~.~.~.[.^.(./.(.^.(.|.(.(.(.`.(.(.(.(./././.^././././.(.(././././.~./.~.(.^.!.~.~.~././.~.T.~.~.~./.~./.~.~.~.~.~.~.T.T.T.T.T.U.U.L.L.L.H.H.h.H.A.H.A.A.A.A.A.A.h.A.h.A.g.A.h.h.l.l.h.h.h.k.k.k./ ! ! CXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXSXGXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXDXDXHXQ.[ ! ! [ vXzXxXcXzXzXzXzXzXzXdXdXzX.X.X.X.X.X.X.X X.X|.|.|._._.|._._.|.(.(.(.(.(.^.(.^.)./.!./.~.~.~./.~.T.T.~.T.T.Y.T.~.Y.T.T.Y.T.T.T.T.~.T.T.T.T.T.P.T.T.T.U.T.T.T.U.U.T.T.T.U.U.U.P.P.P.U.P.U.U.L.L.L.U.U.L.Y.T.T.Y.T.T.T.T.T.~.T.T.~.T.~.~.T.T.T.~.~.T.T.T.~.T.T.T.T.T.T.T.T.T.P.T.P.T.P.T.T.P.T.P.P.T.P.T.P.T.U.U.Y.P.Y.U.Y.T.I.T.T.T.T.T.T.T.T.T.T.T.~.T.T.T.~.~.~.XXXXT.~.~.T.~.~.E.T./.^.~./.~.(.(.~.^.[./.(./.(.(.{.(.(.`.{._._.|.|.|.|.|. X X|..X.X|..X.X|.|.|.|.|. X|.|..X.X'..X.X.X X|..X|.|.|.|..X.X.X|.|..X|..X.X|.|.|.|. X X|.|._.|._.`.^.(.`.(.(.(.(.(./././././.T.^.~.~.~.~.~.T.T.T.T.T.", "Z C Z Z Z Z Z Z Z C Z Z Z Z Z D C Z C D C Z C C C C C A C Z C C Z F C C D C Z Z Z D D D D D D L D D H H H H U H H H P J L J P P P P L P I K J P L I K I J J J J J J L L P H H L Z J L L P J Z U H I S y $ o o $ $ $ % % % ; ; : 0 r r r t r r r r r r r r r r r r r r r r r r r r r r r e * y 0 r r r r r : y r r r r r r : y : y e * r r r * r r r r r r r r r e r ; : : % & & $ o * T f.i.i.z.u.a.k.i.a.i.s.i.i.i.i.i.i.u.i.i.i.i.i.i.i.p.u.i.u.i.i.u.u.i.u.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.u.t.u.p.t.t.t.t.u.u.t.u.u.u.p.u.p.u.p.p.u.u.u.u.i.u.u.a.i.i.a.z.a.i.z.k.k.z.h.k.h.f.h.k.k.h.z.h.g.g.g.j.h.f.f.k.k.f.k.f.f.f.f.f.f.a.g.g.i.a.a.k.a.a.f.f.a.f.f.f.k.k.f.h.k.k.k.h.l.l.l.S.S.z.A.A.h.A.S.A.S.S.A.S.S.S.H.L.H.H.H.H.H.L.L.L.L.U.U.T.T.T.T.T.T.~.T.~.~.!.!./././.^.^.(.(.(.(.(._._._._._._.^.`.`.^.`.(.~.(.(.(.(.(.^.!.(././.~.~.T.XX~.T.T./.~.(.~.^./.^.(.(.(.{.(.(.(.(.(.(.(.(././.(./././.(.^./.(././.(.~.(.(.~./.~.~.~.~.~.T.~.~.~./././.~.~.!.~./.~.~.~.T.~.T.T.T.Y.Y.L.L.L.H.H.H.H.A.S.h.h.A.A.A.h.h.h.h.h.h.l.l.h.l.l.h.z.k.k.k.k.S / ! ZXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXGXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXZXZXBXm.} / ^ M.cXxXxXcXxXzXzXzXcXzXzX@XzX'..X.X.X.X.X.X.X.X|.|.|.|.|._.|._._._._.(.(.^././././././.!././.~.^.~.T.~.T.T.T.~.T.T.T.Y.T.T.T.~.T.T.T.Y.P.T.T.T.Y.T.P.T.T.T.Y.Y.U.Y.P.T.T.T.T.T.P.P.Y.L.Y.U.L.Y.L.U.L.U.T.T.T.T.T.T.T.T.T.~.~.T.~.T.~.T.~.T.~.[.T.~.T.T.T.~.^.T.[.T.~.T.T.T.Y.T.P.T.T.T.T.T.T.P.T.T.T.Y.T.P.T.U.P.T.P.P.P.Y.U.U.U.T.T.T.U.T.T.T.T.T.T.T.T.~.T.T.~.T.XXXXT./.T.T.~.~.~.~.~.~././.~./.(.~.(.E.(./.^.(.(.(.`.|.^.`._.|.|.|.|.|.'..X X|. X'. X.X X.X|.|.|..X|..X.X X.X.X X X.X|.'.|..X'..X|..X|..X.X.X X.X|..X X|.|.|.|._.|.|.|.{.{.{.|.(.(.(.(.(.(.(.(.(././.!.!.~.~.!.~.T.T.~.T.T.R.~.", "Z U Z Z Z Z Z Z Z Z Z Z G C Z Z Z Z Z B Z C C C C C C C C C C C C B D Z C Z Z Z Z Z D D D D D D H D H D H H D H H P H U L P P J J L P P J P P P P J J P P J L J J L J L L L P P P L J J L P P L P L L L U S % o $ $ $ % % % % 0 r 0 * r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r * y : 0 : : r r r r r r r r r r r r r 0 ; = % % % $ $ $ o 0 w.p.i.i.d.i.s.a.a.i.i.a.i.i.i.i.i.i.i.u.i.i.i.i.p.i.i.i.i.u.i.i.u.u.u.i.t.u.u.u.t.t.t.t.t.r.t.y.t.r.t.t.t.p.t.t.p.t.t.t.p.t.u.t.u.u.t.t.u.t.u.t.u.u.r.u.u.u.u.u.i.i.i.a.a.a.a.z.k.k.k.k.k.k.h.z.z.h.h.h.h.g.g.h.g.g.g.g.j.a.z.k.f.f.f.k.f.f.f.i.g.i.a.a.z.a.a.a.k.a.k.k.f.f.f.f.k.k.g.g.g.h.h.z.l.l.h.A.g.A.A.G.S.S.A.A.S.A.A.A.H.A.h.H.S.H.H.L.S.L.U.P.U.Y.U.T.T.T.Y.~.T.~.T.T./././././.^.{.(.!.^.(.(.^._.[._.|._.`.(.(.^.`.(.(.(.(.(.(.(.^././././.~.E.[.XX~.~./.T.~.~.~.^.(.(./.^.{.(.(.`.(.(.(.(./.(.(.(././.(.^.^.(._.(.(.(.(././.~.~.(.(.~.~.^.~./.!.~.^.~./.~.~./.~./.~./.~.T.~.T.T.U.T.U.U.L.L.L.H.H.H.G.H.A.A.S.A.h.h.A.h.Z.h.A.l.l.G.g.l.h.l.l.k.h.k.z./ ! S CXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXDXSXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXZXBXm.[ Q ^ c.cXcXxX.XxXxXzXcXzXzXzXzXdX.XzX.X.X.X.X.X.X|..X X|.|.|._.|._._._.(.(._.^././././.!./.!./.~./.~.~.~.~.T.~.Y.~.T.T.~.T.T.T.T.T.T.T.P.^.T.U.T.T.U.T.T.T.U.T.P.U.Y.T.Y.T.T.T.U.P.T.T.T.Y.L.U.R.L.U.U.T.Y.T.T.T.T.T.[.T.T.T.~.T.~.T.~.T.~.T.T.[.T.~.~.~.~.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.P.T.~.T.Y.T.U.T.T.P.L.Y.P.P.P.T.Y.T.T.T.T.T.T.T.T.T.~.T.Y.T.~.T.T.!.E.U.T.T.~.~.~.~.~.(.(.~./.~././.~.(.~.(./.(.(.(.|.^.|.(.|.|.|.|.|.|.'. X.X|..X.X X.X.X|..X|.|.|.|.|.'..X.X|.|. X'..X|..X.X.X|..X.X.X.X.X.X.X X X|..X|..X|.|. X|.|._.|.|._.`._.|.|.(.`.(.(.(./.(./.(.^./.~.~.~.~.~.[.T.T.T.T.Y.~.", "B Z Z Z D C Z Z Z Z Z Z Z Z Z Z C D C C C Z Z C B C C C Z C C F A Z C C A Z Z A Z Z Z Z Z H Z D D H H H H H L L F J J J L H J I L P P L J J J J L P P J J J J J P L H L J J K U H L J J J J J J P J J K U J F H r $ o % o $ $ $ $ * * % = 0 : : * : : q r q r r r ; ; e = r r r : y r * r y : ; : r : y 0 0 q r = e : : > y y y ; r ; ; > e * 0 0 * 0 : = % % & $ $ o o # - R i.z.i.a.a.i.d.a.i.a.a.a.a.a.i.i.d.i.u.p.i.i.i.a.i.i.a.i.i.i.i.s.p.i.u.i.u.u.u.t.u.t.u.p.t.r.r.r.r.t.r.t.p.t.t.u.u.u.u.u.t.t.t.t.t.p.t.t.t.u.t.u.u.r.u.u.t.u.u.u.u.u.i.i.i.i.a.a.k.z.f.k.k.h.k.l.k.A.g.z.l.l.g.l.h.l.h.g.g.g.g.f.g.g.f.d.f.f.f.k.z.k.d.d.k.d.f.a.a.a.a.f.a.k.f.k.f.g.g.f.z.g.g.h.h.h.g.l.l.A.A.A.h.A.J.A.W.h.S.h.S.H.G.H.S.H.H.S.H.U.S.U.U.U.U.Y.T.T.U.~.Y.T.~.~.T.~.[.~.~.^./.~.^.(.(.(.(.(._.(.(.|./.[._._._.(._.(._.(.(._.^.(.(.(.[.(.~.!.~.!.~.~.~.~.~.~.~.^.(.(.(.(.^.(.(.'.(.(.(.(.(.(.!./.(./.(.[.^.(.[.(.(.(.^.(.(.(.!.^.^.^.{././././.~.~.~././.~./.~./.~.~././.T.T.~.T.T.T.T.P.Y.L.L.L.L.H.S.A.G.A.A.A.h.A.h.l.h.h.h.l.h.h.h.l.l.h.h.k.k.g.g.~ / S ZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXDXDXDXAXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXFXBXpX{ Q / [ xXxXcXcXcXcXcXzXdXvXzXzXzX.XdX.X.XdX.XdX@X'.'. X'.|.`.`.^.|.`.|.|.(.).^./.[././.~././.(./.~.~.~.~.~.T.T.T.T.T.T.T.T.T.[.T.T.T.T.~.T.T.T.T.T.T.T.T.U.T.U.T.U.T.T.T.T.T.T.T.T.T.T.U.T.T.U.P.T.Y.P.Y.Y.T.~.T.!.T.T.T.[.~.T.~.T.~.~.T.~.(.T.[.~.~.T./.T.~.~.T.T.~.T.~.T.T.T.T.T.T.P.T.T.T.T.T.~.T.T.T.T.T.T.T.L.P.U.U.U.Y.U.T.T.T.U.T.T.T.T.P.T.T.T.T.P.T.T.[.P.Y.T.T.T.T.T.T.~.T./.!./.^.~.~./././././.~.!./.(.(.`.^.|._._._.|.|.|.|..X.X X.X.X.X X.X X|..X X|..X X X|.|.'.|..X.X.X X.X X.X.X.X.X.X.X.X.X.X.X'. X.X'.|..X|. X.X.X|.|.|.|.|.|.}.}.}.}.}.`.^.^.(.^./.(.(.~.(.[.!.(.^.T.~.T.T.T.T.T.T.", "G Z Z Z Z Z Z D Z Z Z Z Z F B Z Z B Z Z Z C C C C C C C C C C B Z C Z Z Z Z H Z H Z Z Z Z L H L H H H H H H H H L H J H L P P J I J J P P L P J P K P P L J K L K L L P K L L H P H L J J L L J J H J H J J H H H P u % o o $ o $ $ $ $ % % r % : ; ; * * : = > y y ; r r 0 r * : : : = : 0 r y : r * r r : y r : 0 t 0 q = * * * 0 0 * * = * % r % $ $ $ $ # $ B w.u.E a.a.u.a.i.k.i.a.i.a.a.a.a.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.a.i.i.i.i.u.i.u.i.s.u.u.t.p.t.t.r.t.t.r.t.t.t.t.u.t.t.t.t.t.u.t.p.t.u.t.t.u.u.t.u.t.u.u.u.u.i.u.u.u.i.u.i.i.i.a.a.a.a.k.f.k.k.h.g.k.k.k.z.g.h.z.h.h.h.f.h.g.z.f.f.g.g.f.g.f.f.f.k.i.a.f.f.i.d.f.d.k.a.z.g.a.f.a.k.f.z.g.g.g.g.g.g.h.h.l.l.l.l.A.H.A.A.S.h.S.Z.S.H.H.A.Z.H.A.H.H.H.U.H.L.L.L.L.L.U.T.T.T.T.T.Y.~.T.T.~.~.~.~.^./././.(.(.(.(.(.(.(.(._.^.|.}._._.(.(._._.(._.(.`.(.{.(.(.(.^.^././.~.~./.!.~.~.~.^.!.(.~.(.(.(.`.(./.`.(.(.(.(./.(.(.(.(.(.|.(.(.(.(.(.(.(./.(./././.T.^.E././.[./.~./.~./.(./.!././././.~.~.~.~.R.T.~.T.T.T.P.L.L.L.S.H.G.S.A.H.A.h.Z.h.h.h.h.h.h.l.h.h.h.l.h.l.z.h.g.g.g./ / S ZXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXHXBXQ.[ / ~ c.cXcXcXcXvXdXvXcXzXnXdXdXzXzX.XdXdXdXdX.XdX.X X X|.'.|.`._.`.(._.|.^.{.^.(././.~././.~.~.~.~.~.T.T.~.~.T.T.T.T.T.T.T.T.T.T.T.T.~.T.T.^.T.T.T.T.T.XXU.T.T.U.U.U.T.P.T.Y.T.T.T.T.T.T.T.T.T.P.Y.P.~.T.T.T.Y.T.T.T.~.T.^.~.T.~.T.~.T.~.~.T.[.~.~.~.~.T./.~.~.^.E.T.~.~.~.~.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.P.U.T.U.U.Y.P.U.T.U.T.T.T.T.T.T.T.T.P.T.[.T.T.T.T.T.T.T.T.~.~.~.T.~./.~.~.^.~././././././.(.(.)./.(.(._.(._.}.|.|._.|.|..X X X.X.X|. X|.|..X.X.X.X|..X'.|..X X X.X.X.X.X.X.X X.X.X'.'..X.XdX X.X'..X.X|..X|. X'.|.|. X|.|.|.|.|.}.}.}.|.[.^.^.(.|.(.(.(.~.(.(.(.~.(.~.T.^.~.T.T.T.T.T.", "D C D Z Z C Z Z B D B D Z Z Z Z Z A Z C B C C C C C C Z C C C Z Z C Z C Z Z Z Z Z H H Z H H H L H H G H H H H H J H J J P P P J J P P P P P P J J L P L J P P L H L J J U J H J P K J J J J H P H J J J Z J K H H L H H H u % # o o o $ $ $ $ $ $ % % % % % % 0 0 * * ; e ; * : * * = r : r y r r r r > * * * e r 0 * ; ; % ; > * * % % % & $ $ o o $ o # $ q T a.s.i.i.d.d.t.z.u.a.z.i.a.a.a.i.i.a.i.i.i.i.i.i.i.i.i.i.i.a.i.i.i.i.a.a.i.s.i.i.i.i.u.u.u.u.u.u.p.t.p.r.t.t.t.t.w.p.t.t.t.t.u.t.u.t.t.t.r.t.t.u.t.u.t.u.u.u.u.u.u.u.u.u.u.i.u.i.i.i.a.a.a.f.a.f.k.g.g.g.g.A.g.g.g.g.h.h.k.h.k.h.h.k.g.g.f.g.z.d.f.f.f.d.k.i.f.f.k.f.f.d.z.i.a.a.k.k.g.a.f.g.g.f.g.g.h.g.h.h.g.A.G.A.A.A.A.A.h.H.A.S.A.S.A.A.S.G.S.H.H.H.D.H.A.U.L.L.Y.U.Y.T.T.Y.T.~.~.T.~.~.!.~./././.(.(.(.(.(.(.(.(._.(./.|._._._._._._._._._._.^.^.`.(.(.(.(././././.~.~.~.~.~.~.[.!././.(.(.(.^.^.(.(.(.!._.(.(.(.].(.(.(.(.).{.(.{.(.{.(.(.(.(./././././.(.(./.(.!.(./.!./.^./././.~.[./.~.~.~.~.~.[.T.T.T.T.T.P.L.S.L.L.G.S.S.G.z.A.A.A.h.l.A.A.h.l.h.h.l.l.h.h.h.g.g.g.g./ S S ZXZXDXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXGXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXVXZXZXBXm.} ~ Q [ xXcXcXcXxXxXcXzXcXzXvXzXzX.XdXzXdXdXdX.X.X.X.X.X'.|.|.`.|.`.`.^.^.^.(.[./././.~.~.~.~.~./.T.~.~.~.T.T.T.T.T.T.T.T.T.T.T.T.T.~.T.T.T.T.~.T.T.T.T.T.T.U.T.U.T.U.T.P.P.T.T.T.T.T.T.T.T.T.T.P.~.P.P.P.T.T.T.T.~.~.~.T.~.~.~.T.[.T.~.~.~./.~.~././././.T.~.T./.R.Y.~.~.~.T.T.T.T.T.T.T.T.T.~.T.T.T.T.T.T.T.T.T.P.T.P.Y.P.P.P.T.U.T.U.Y.T.T.Y.P.P.T.P.oXT.T.T.T.U.T.T.~.T.~.T.T.~.~.~././.~.~.~./././././././.(.(.^.(._._.}.}._.|.|.|.|..X X X X.X.X.X X.X|..X.X.X.X X X.X.X.X.X.X.X.XdX.X X.X.X.X.X X.X'.@X'..X.X.X|.|..X|. X|. X|.|.|.|.|._.|.}.}._.^._.(.`.(.(.(.(.(.(.(.~.T.(.~.~./.T.T.T.~.T.T.U.", "Z Z B Z Z Z C Z C Z Z Z D C Z C C Z C Z C D D C D C C C C Z C Z C Z F Z Z Z Z Z Z Z Z Z Z H Z Z D H P H H H H H L J J J P L J P J J J J P L P P I J P P J L J P G K H J H H P J P L J J J J P P J I J J J H H J K J H Z H Z C K q = $ # o o o $ $ $ $ & , $ & & % % % % % ; ; % % : % * % % % * * * % * % % % % & % $ % & $ $ $ $ o o o $ B w.a.i.t.i.u.i.i.p.w.i.a.i.i.i.i.a.a.a.i.i.i.a.u.i.i.i.d.i.i.i.i.i.i.i.a.i.a.a.a.i.i.s.i.i.u.i.u.u.u.u.u.p.t.t.t.y.t.t.t.t.t.r.t.t.t.t.u.t.t.p.t.t.t.t.t.u.t.u.t.u.t.u.t.u.u.u.i.u.u.i.i.i.a.a.a.a.a.f.f.h.g.g.g.k.k.g.k.k.A.h.z.k.h.k.h.h.g.g.g.f.g.k.k.f.k.k.f.k.k.z.f.f.f.f.f.z.f.f.k.f.f.f.f.a.z.z.h.h.h.h.h.h.h.h.h.g.A.A.A.G.H.A.S.S.S.S.S.H.A.H.A.H.S.L.H.L.L.L.L.L.L.U.U.T.T.T.T.Y.T.Y.T.T.~.~.~./././.^.(.(.(.^.(.^.|.^.`.|./.|.}._._._._.`._._._._._._.^.`.(.~./././././.~.(.~.~.~.^.E././.(.(.|.`.(.(.(./._.(.(.(.(.(.(.(./.`.(.(.(.(.(.^.(.(.(.(.^././.^././.^.(./.[./.(.(.(.(.^././././.~./.~.~.~.~.T.~.~.T.T.U.P.U.L.L.H.H.S.S.S.z.A.h.A.A.l.l.h.A.h.A.l.A.h.h.h.h.g.g.g.a.S ! / BXDXDXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXAXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXDXFXFXFXFXDXFXFXFXFXFXFXFXSXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXGXAXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXZXZXZXBXpX[ ~ Q m.cXcXnXdXvXxXzXcXzXcXdXcXcXxXzXzXdXdXdXdXdX.XdX.X X.X|.|._._.|.^.(.^.(.(.(././.~.~.~.~.T.(.~.~.~.T.~.T.T.T.T.T.U.T.T.T.T.T.~.T.~.~.~.T.T.~.T.T.T.T.T.T.T.T.T.U.T.Y.T.T.P.T.T.T.T.T.T.T.T.~.P.Y.Y.T.T.T.Y.Y.~.T.P.~.T.T.~.[.T.~.~.~.~.T.~.~./.~./././.(.~.R././.~.~.~.~.~.~.~.T.T.Y.T.T.T.~.T.T.~.T.T.T.T.T.T.T.P.T.P.T.P.U.T.U.Y.Y.T.Y.T.T.T.!.[.Y.T.T.T.T.T.T.T.T.T.T.~.T.~.~.T.~.(.~.[.~././././.(.(.~.(.(.`.^.|._.}.}.|._.|.|.|.|._. X@X X.X X|..X.X.X|..X.X'.|..X.X.X.X.XzX.XdX.XdX@X.X.X.X.X.X.X XdX.X.X.X.X X.X.X X.X|.'..X|.|.|.|.|.}._._.|.^.(.|.|.(.{.(.(.(.(.(.(.~.~.~.~./.T./.T.T.T.T.", "Z D Z Z Z Z Z Z Z C Z Z D C Z Z Z B F C C C C C C F C Z D Z C C Z Z C Z Z C Z G Z H Z D Z H H H H H H H H H L J J J H H J J J H J J P P J P L L P P L P J J J J J J J J L L H I L P J J J J P L L P I H H K H J H P H Z L G L H Z H Z u y % o # o o $ o $ o o o $ $ $ $ $ , $ $ $ $ , $ $ $ $ , $ $ $ $ & $ $ o $ o o # # $ q T i.a.i.t.f.a.a.a.i.i.i.d.i.u.i.i.a.a.a.a.a.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.a.a.a.a.a.a.i.a.u.a.i.s.i.u.u.u.i.u.t.t.t.t.u.t.t.t.r.t.t.t.t.t.t.t.t.t.t.t.t.u.u.t.u.u.t.t.u.u.u.u.u.u.i.i.i.i.i.i.k.i.f.a.k.f.f.g.g.g.g.k.A.d.g.z.h.g.h.g.h.h.k.g.g.f.g.g.f.g.f.k.f.k.k.k.f.f.f.f.k.f.k.a.a.f.f.f.f.f.a.j.l.l.h.h.h.l.h.l.l.A.A.A.A.A.A.G.S.S.S.S.A.S.S.H.A.H.H.H.S.L.L.L.S.L.L.L.Y.P.U.Y.T.T.T.^.T.~.T./././.(.!.(.(.(.(.(.`.(.(.(._.{.`.{._._.|.}._.}.}.}.}.|.(._.(.^.(.(.(./.(././././.!.^.~././.(./.(.(.(.^.(.(.(.(.(.(.(.(.(.(.`.(.(.(._.(._.(.|.|.(.(.(.(.(./.(.(.(./.(.(.(.(.(.(.(.^.(.(././././././././.~.~.!.~.^.T.T.T.T.T.U.L.L.L.H.G.A.H.G.A.A.g.A.h.A.h.h.A.z.A.h.h.h.l.z.h.h.k.g.~ ~ ! ZXDXZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXDXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXDXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXGXZXZXFXBXm.[ ! ! c.cXcXcXcXvXzXxXzXcXcXzXzXzXzXzXcXzXzXdXdXdX'.@X'..X|.|.|.|._.}.}.(.(.^.(./././.~.~.~.~.R.~.T.~.T.T.T.T.T.T.T.T.T.U.T.T.T.T.~.T.~.~.~.T.T.T.T.T.T.T.T.T.U.T.U.P.T.P.T.P.P.P.Y.Y.T.T.T.T.T.T.T.T.T.T.T.Y.T.T.!.~.~.~.~.~.~.T.~.~.~.~.T.^.~.~.~./././.~./././././.~.(.~.~.T.T.~.T.T.T.~.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.Y.Y.T.T.Y.T.T.T.T.T.T.T.T.T.!.P.T.T.T.T.T.T.~.T.~.T.~.~.T.[.~.~./././././.[.(./././.{.^.(.{.`._._.|.}.}.'.|.|.|.'. X.X.X|..X'.|..X.X.X.X.X.X.XdX.X.X.XzX.X.XdX.X.X.XdX.X.X.X.X.X.X.X.X.X|..X X|..X|..X X X|.|.|.|.|._.|.}._.(.|.^._.|.^.(.(.(.(.(.(.(././././.T.T.~.T.T.T.T.", "B Z B D C Z C Z B F C C Z B C Z C Z A Z Z C Z B C C C C B C Z Z Z Z Z Z Z Z Z Z Z Z D D H D H D Z H H H H J J J J H H I J J J P J P J J J J P P P H P I J L L J P H G J L L H J P L P J J L K L P P J F H H H H L L H Z D D D Z Z Z H H C F H Z * % $ o o o o o o o o o o o # # $ 0 u w.e.g.i.i.d.f.s.a.s.a.s.i.s.i.u.i.i.i.u.a.a.u.a.a.i.i.i.u.u.i.i.d.i.i.i.i.i.i.i.i.d.i.f.a.f.a.a.a.a.a.a.a.i.i.u.u.i.u.u.u.u.u.u.u.t.t.t.t.t.r.t.t.r.r.r.r.t.t.t.t.t.t.t.t.t.t.t.u.u.u.u.u.u.u.u.u.i.i.a.i.s.i.f.a.f.k.f.g.g.g.f.A.k.A.k.z.l.g.z.g.h.h.k.g.g.g.g.g.f.g.f.k.f.k.f.k.k.k.f.f.k.k.k.k.z.g.g.g.z.g.g.h.z.h.l.h.h.l.l.h.j.A.A.A.A.A.A.A.A.h.S.A.S.S.S.S.A.H.Z.H.L.L.S.L.S.L.Y.L.L.Y.P.Y.T.T.Y.T.Y.~.T.!././././.(.(.(.(.(.`.(.(._._._.(.(._.`.|._.}.|.}.}.}.}._.|._.|._.(.(.(.(./.(.^.~.(.(.~.~././././././.(.(.(.(.(.(.).(.(.(.(.(.(.(._.(.(.(._.(._.^.`.^.(.(.(.(././.(.(.(.(.(.(.(.(./.(./.(.(./.(././.~././.~.~.~.~.T.~.T.~.T.U.U.L.L.L.H.L.G.D.D.A.A.A.A.A.A.A.h.l.A.A.A.h.h.S.h.h.k.h.k.~ ! S CXDXZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXAXAXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXZXZXZXFXBXQ.{ Q ! [ cXmXcXxXxXxXcXcXzXcXxXcXcXzXzXzXzXzXzXzXdXdXdX X|..X|.|.|._.[.|.(.(.(.(././././.!././.~.~.~.T.T.T.T.T.T.T.P.U.T.T.T.T.T.[.T.~.T.T.~.T.~.~.~.T.T.T.T.T.T.U.P.T.P.T.T.T.P.P.P.P.P.T.Y.T.T.T.Y.Y.I.Y.T.T.P.T.T.~.P.~.~.~./.~.~.~.~.~.~.~.~.!.~.~././.(./././.T.!./.T.~.~.~.~.T.T.~.T.~.~.T.T.T.T.T.~.T.Y.~.Y.T.T.Y.Y.T.T.T.T.T.T.U.Y.T.P.T.T.T.T.P.oXY.T.Y.U.T.T.T.T.T.T.~.T.~.~.~.~.~./.~././././.!.!.(.).(.(.|.^.(.`.{._.|._.|.|.|.|.|..X X.X.X.X.X.X'..X.X.X.XdX@X X.X.XxX.X.XzXdX.XdXdX.XzX@XdX'..X.X.X.X.X.X'..X|..X|.|.|.'.|.|.|.|.|.}.}.}._.(.(.|.|.`._._._.(.(.(.(./././././.~.~.T.T.~.T.T.", "Z Z Z Z Z C Z Z Z Z Z Z C Z C D C Z C Z C Z D B C C D C C Z Z Z Z Z Z Z Z Z Z D Z D D D D H D H H H P H H L J P H J K Y J J P P P K Y J I P P J L P P K J J J J J J U K J J H H J J H J J H J J J J J J J L J H P H P L H Z H Z H Z Z D G H Z A D D Z Z A y % % $ o # # % % u Z T d.z.i.k.i.f.s.a.i.k.a.a.i.i.k.a.i.i.a.i.i.u.i.i.i.u.u.a.i.i.i.i.a.a.u.a.i.i.i.i.i.i.i.a.d.i.i.f.a.a.a.a.a.a.a.a.i.a.i.i.u.i.i.u.u.u.u.u.t.u.t.t.t.r.t.r.t.r.t.r.r.t.t.t.t.t.u.t.t.u.t.t.u.t.u.u.u.u.u.u.u.a.i.i.a.a.a.s.a.a.a.k.a.g.g.g.k.k.k.k.z.g.h.h.k.h.k.h.g.g.g.g.g.g.d.g.k.k.f.f.f.g.k.k.g.k.k.g.k.g.g.k.g.a.g.g.g.h.h.l.g.g.l.G.A.A.A.A.A.A.A.S.A.A.A.S.S.G.A.A.H.H.H.H.H.S.L.L.U.U.L.L.L.I.P.T.T.U.T.P.T.~.~.~./.~././.(.(.(.(.(._.(.(._._._.(.|.^.|.|._.|._._.}.}.}.|.|._.(._.(.(.(.(.(./././.(././.~./.^.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(._._._.(.(.(._.(.(.(.(.(.(.(.(.(.(.(.^.(./.|./.(.(.(.(.(.(././.(.(.(.~./.^.~.T.~.T.~.T.T.T.U.L.U.L.H.L.G.D.H.A.A.A.Z.h.S.A.A.A.A.A.A.A.g.A.A.A.h.h.h.~ ~ ! ZXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXAXFXFXFXFXFXDXDXGXSXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXDXAXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXDXBXpX[ ^ ~ [ cXcXcXcXnXcXcXvXvXxXxXdXcXdXzXzXxXzXdXzXdXdXdX@X.X.X|.`. X|._.`.(.(.(.(./.{./.[.~.~.R.R./.T.~.T.T.T.T.T.T.T.T.U.T.U.T.T.T.P.T.~.T.~.~.T.T.~.~.P.T.T.T.T.T.P.T.P.T.U.T.T.P.P.P.P.Y.Y.T.T.T.T.T.T.T.T.T.[.T.~.T.~.~.~.~.~.~.~.~.~./.~.~./././.!././.(./././././.R.^.T.~.~.~.T.~.~.~.T.T.~.~.T.T.~.T.T.T.Y.T.T.Y.T.~.T.T.T.T.T.T.U.Y.P.Y.P.P.T.T.T.Y.T.U.U.^.T.T.T.T.T.T.T.~.T.~.~.~.~.~.~./.[././.(./.(.(.).(.(.(.^.|.|._.|._.|.|.|.|. X|. X.X.X X'..X.X@X.X.X.XzX.XdXdXdX.X.X.XzXdXdXdXdX.X'..X.X'.'. X.X.X.X.X|..X.X.X|. X|.|.'.|.|.|._.}.}.}.}.|.`._._.^.|._._.(._.(.(./././.!./.~.~.~.~.~.T.~.", "Z Z D C C Z C C C C C Z D C Z C Z C Z C Z C C C F Z C C Z D B Z Z Z Z Z Z Z Z Z D D D D H D D Z H H H H J H J H J J H J Y K P P L P J J J J H J P P P H J J P J L H H J J L H J J J J J J J J J K J H H J H H J H H G H Z H H L D Z H Z Z Z Z Z Z Z D D D Z Z C Z B m u q = 0 * % o $ o # # o $ & w u u Z Y T z.z.z.g.g.g.z.k.k.f.k.z.f.k.s.i.i.s.a.i.a.a.t.a.a.a.i.i.i.i.u.u.a.a.u.a.i.i.i.u.u.a.u.i.i.i.i.i.i.i.a.a.i.f.i.a.f.a.a.a.a.a.a.i.i.i.i.i.i.i.u.u.u.u.u.u.t.p.p.t.t.r.r.r.r.r.t.r.t.r.t.t.t.t.t.t.t.u.u.t.u.u.u.u.u.u.i.a.i.i.i.a.a.a.a.k.a.k.f.g.g.a.g.k.Z.k.k.h.h.k.g.h.h.h.k.g.f.f.f.f.g.f.g.k.f.f.f.g.f.g.f.g.k.k.k.g.k.g.g.g.g.z.g.z.h.l.l.l.G.l.l.A.A.A.j.A.A.A.S.G.A.G.A.S.Z.S.S.H.A.S.S.L.L.L.L.U.L.U.L.U.U.P.P.T.T.T.^.T.T.T.~.~.~./.!.(.!.(.(.(._.(.|.^._._.(.`._.|.{.|.|.|.{.}.}.}.}._._._._.(.(.(.!.(.(.(.^.(././././.^.(././.(.(.(.(.(.(.(.(.!.(.(.!.(.(.(.(.(._._._._._._._._._.(.^.`.(.(.(.^.(.(.(.{.{./.{.{.(.{.(.(.(./.(././.(.^./.~./.~.T.^.T.T.T.T.I.I.L.L.L.H.H.H.D.G.A.H.g.A.A.A.A.A.A.A.A.A.A.A.h.h.h.h.h.~ ~ ! CXDXDXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXDXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXZXDXDXZXBXQ.} ~ ! M.cXcXcXcXxXdXvXcXxXxXcXcXzXcXzXzXzXzXzXzX.XdX X.X.X.X|.|._._._.^.(.(.(.^./././.~.[.~.~.(.T.T.~.T.~.T.T.T.T.U.U.T.L.^.T.T.T.~.T.T.~.~.T.T.~.T.T.T.T.T.T.T.U.T.P.T.P.P.Y.P.P.P.T.Y.U.Y.T.T.T.T.T.~.Y.T.T.T.~.T.~.[.!.~.~.~.~.^.~.^././.(./.~./././././.(./.(././.(.~.^.~.~.~.~.~.T.~.T.~.T.~.~.~.T.T.~.Y.T.T.~.T.Y.T.T.T.T.~.T.P.P.T.Y.P.L.^.P.P.T.Y.U.T.T.P.T.T.T.T.T.T.~.~.R.~.!.~.~.~.^.~./././.(././.(.(.^.`.(.`.^.|.|._._.|.|.|..X|.'. X'..X.XdX.X X'..XdX@X.XzXdXzXdXxX.XzX.X.XdXdXdX.XzX.XdX.XcX@X.X.X.X.X.X|..X X'.|..X|.'.`.`.|._.}.}.}.}.`.(._._.`.{.|.(.(.(.(.(.(.)./.!.~.~.~.~.~.T.T.T.", "Z Z Z Z B Z Z C C C Z Z C F Z C A C Z C D B Z D G C C Z Z Z Z Z Z Z Z Z F Z D Z Z Z G H Z D L L H H H L H J H J H L L P L J J P I J P P L P J I J L P L L J J L H J J U H H J J J J J J J K H I J H J H H H I U H H H Z L Z Z Z Z Z D D Z D D Z D D C D Z Z Z C Z C C C D C C Z B Z B Z Z Z Z Z S D Z Z Z C H Z T b.z.h.h.A.A.A.l.A.H.l.l.l.h.h.A.z.k.h.k.g.a.h.f.a.f.a.a.a.a.a.d.a.a.s.i.i.i.i.i.i.u.i.i.i.i.s.u.a.u.i.i.u.a.a.p.i.i.i.i.i.s.t.a.a.a.a.a.k.a.g.a.a.a.a.a.a.a.a.s.u.i.i.u.u.i.u.s.t.u.t.t.t.r.r.r.r.r.t.r.r.r.t.t.t.t.t.t.t.i.t.u.u.u.u.u.u.i.u.i.i.a.a.a.f.a.a.j.a.a.f.f.f.g.g.A.k.z.k.g.k.g.k.h.g.g.g.g.g.g.g.f.g.k.f.g.f.k.d.g.k.g.g.g.f.k.h.h.l.h.h.h.h.h.h.g.l.l.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.G.A.A.G.S.S.H.H.G.H.H.K.H.L.U.L.L.I.L.Y.U.P.T.T.T.T.~.~.~.!././.(./.(.(.(.(.(.|.^._.(._.(._._._._. X X_._._. X}.}.|._._._._._.(.(.(.^.(.(.(././.^./.^./.(.^.(.^.(.(.!.(.^.[./.(.(.(.].(.(.(.(.(.(.`.).(.(.`.(._._.(._._.(._.(.|.(.(.`.|.(.|.(.(.(.^.(.(.(.(.(./.(././././.~.~.~./.T.T.T.T.I.P.U.P.L.S.L.G.D.A.G.G.h.A.A.G.A.A.G.S.A.A.S.z.A.A.z.h.h./ / ! BXDXDXVXZXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXDXDXGXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXGXDXDXDXAXDXFXFXFXFXFXFXFXFXFXAXFXAXZXZXBXQ.} ~ ~ c.fXvXxXxXnXxXxXcXcXcXxXxXxXdXzXcXdXxXzXzXzXxX'.@X.X.X.X|.|.|.|.{.`.(.(.(.(./.~././.~.~.~.T.T.T.~.[.T.T.T.U.T.U.U.Y.T.T.P.T.T.!.T.T.T.~.~.T.T.T.T.T.T.T.T.T.P.P.T.T.T.U.T.U.T.I.I.I.U.T.U.T.Y.T.Y.T.T.~.T.~.~.~.T.T.~.~.~.(.[.(.~./././.(./././.^.(.^.(./.(././.!.(.~.~.~.~.~.~.~.T.T.~.T.T.~.~.~.~.T.~.T.T.T.~.T.~.T.T.T.T.Y.~.Y.T.T.T.T.T.T.Y.U.U.I.Y.T.T.T.T.T.~.T.T.~.~.T.~.~.T.(.T.~.~.(.~.(.!.(.(.(.(.(.`.|.(._._._.|.}.}.|.|.|.|.|.'. X.X|..XdX.X.XzX.X.XzXzXzXzXzXzXdXzXzXzXdXdX.XzX.X X.X.X.X.XdX.X.X.X.X.X.X|.|.|.|.|.|.}.}.}.}.}._.}.}._.|.|._.}._._.}.{.(.(.(.(.^.(././././.~.~.T.~.~.", "B Z Z C D C Z C Z C C C C C C Z C C C Z C Z Z C C Z C Z C Z C Z Z Z Z Z Z G Z G H Z D H Z L L Z H H H L L H J J J H I J J I I J J P L P P P H J K P I K L L U K J J H K L L Y K J H P J J P P L J J H H H H H H H H H H H H Z H Z Z D D G Z D H Z Z Z G Z C Z Z C C Z C C C C Z D Z D Z Z Z Z Z C Z Z Z Z Z C G G g.D.S.A.g.h.h.l.z.z.l.l.G.l.h.g.z.h.g.k.g.j.g.f.k.f.a.a.f.k.a.a.a.i.a.i.i.i.i.i.i.i.i.i.t.i.u.u.a.u.a.u.a.E x.p.a.i.i.s.i.a.i.a.a.a.a.i.k.a.a.a.a.z.a.a.a.f.t.i.i.s.u.s.u.u.i.u.u.u.t.t.t.r.r.r.r.r.E r.r.r.t.t.t.r.t.t.t.u.t.t.u.u.u.u.i.u.u.i.i.i.a.a.a.f.a.d.a.f.f.d.f.a.g.k.d.z.k.A.k.A.g.g.h.g.f.g.g.g.g.k.g.g.k.k.f.k.k.g.k.g.g.g.k.h.h.h.l.l.h.h.h.h.h.h.l.h.l.A.A.g.H.S.A.H.S.A.H.S.S.G.A.A.S.A.S.S.H.Z.H.H.S.H.L.R.K.U.K.U.U.P.U.Y.T.T.T.T.~.~.~.~.~././././.(.(.^.(.^.(.(.(.(._.`.`._._._._._.}.|.|.}.}.}.}. X_._._._.[.(.(.(.(.(.!.(.(./././.{./.(.(.(.{.(.(.(.[.(.).(./.(.(.(.].`.(.^.(.(.|.`.(.(._._.(._._.(.(._.(.(.(.(.(.^.`.(._.(.|.^.(.(.(.(./.^./././.^.~.~.T.~.T./.T.T.T.I.U.L.P.L.A.G.G.G.A.G.G.H.H.A.H.G.G.A.S.H.A.A.S.A.H.A.D.z.P S ! CXDXDXAXAXZXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXAXDXSXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXDXSXDXAXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXAXZXZXBXm.[ Q Q b.cXcXcXxXxXxXxXcXxXxXxXxXxXcXzXcXcX.XzXzX.X.X.XdX.X.X X'.|.|.|._.`.(.(.(.(.(.(././.~.T.T.T.~.~.T.U.T.T.T.U.U.T.T.P.P.T.T.T.T.T.T.~.T.T.T.T.~.T.~.T.T.T.T.P.T.T.T.T.T.T.U.I.Y.I.I.I.T.I.T.T.Y.T.T.~.~.T.T.T.~.T.~.T.~.~.~.~.~./.(./.^.~.(././.~.(.(.^.).(.(././././.(././.~.~.!.~.~.~.(.~.~.~.T.T.U.~.T.~.~.T.T.T.T.T.~.T.Y.T.Y.T.T.T.T.T.P.U.P.U.T.T.U.T.T.Y.Y.T.T.T.T.~.T.~.~.T.[.T.~.~.~.~.(.~././.(.(.^.(.(.^._._._._.{.}.}.}.|.|.|.|..X|..X.X.X.X.X.XzX.X.X.XzXdXdXzXzXzXdXdXzXzXdXdX.XdXdXdX@XdX.X.X.X'..X.X.X.X|.|.|.|.|.|.}.}.}.{.}.}.}.}._._._.|.}._._._._.^.(.(.^.(./.(./.~././.~.~.T.T.", "F C Z Z C C B Z C C C C C Z C B Z C D C Z Z Z C B D Z C Z Z Z Z Z Z Z Z D Z D D L D H Z L Z L L H H H Z P H J J Y H P J J P P P P P P L L P P J I P P L H J L J H J Z J K H L J J H J J J J J H K J H L H H H H H H H H Z L D D L Z L H Z Z Z Z D D Z Z C C Z C Z B Z C G Z D Z C Z D Z F Z D Z Z Z Z Z Z Z D D T Z.G.A.h.Z.h.A.l.l.l.h.l.l.l.h.A.h.g.k.g.g.g.g.f.f.g.a.a.f.a.a.a.a.d.a.a.i.i.i.i.a.i.u.i.i.s.i.u.u.i.u.a.a.u.u.s.i.p.i.i.i.i.a.a.a.i.i.g.a.g.a.f.a.a.a.a.a.a.a.i.i.s.i.i.u.u.u.u.p.t.u.t.t.t.r.r.r.r.r.r.r.t.r.t.t.t.t.t.u.t.u.t.u.u.u.u.u.u.i.a.s.a.a.a.i.a.f.d.f.j.d.f.f.f.a.d.z.g.d.d.A.k.g.h.g.g.h.h.h.k.g.k.g.d.f.k.f.z.g.k.h.k.z.g.g.h.h.l.l.h.h.A.l.h.h.l.h.l.A.A.A.G.H.A.S.H.H.G.A.S.S.H.H.S.S.S.S.H.G.H.H.H.H.H.L.R.H.L.Y.U.U.T.T.T.T.T.T.Y.~.T.~.~./././.^.(.(.(.(.(.(.(.(.(.(._._.(._. X_._.}._.}._.}.}. X}._._._._.`.^._.(.!.(.(.^./.(././.(./.(.(.(.(.(.[.^.!.(.!.(.!.).!.(.(.(.(.(.(.^.^.(.(.(._._._.(.(._.(._._.(.^._.(.(.^.(.(._.(._.(.(.(.(./.(././././.).^.~././.T.T.T.T.T.I.U.U.L.L.U.L.G.L.H.H.H.H.H.H.H.Z.H.H.H.H.G.H.A.A.A.A.A.A.! ! ! CXDXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXDXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXDXDXFXFXFXFXFXFXDXAXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXGXSXFXFXFXFXFXFXAXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXAXFXAXDXFXBXpX{ / Q [ cXnXJXcXcXxXxXcXcXxXdXxXxXdXxXzXzXzXzXzXzXzX.XdX.X.X X X|.|._._.`.`.^.(.(./././.!.~.(.T.T.~.T.T.T.T.T.T.U.T.T.U.^.Y.T.T.T.T.T.[.P.T.^.T.T.T.T.T.T.T.T.T.T.P.P.P.U.T.U.U.Y.I.U.U.Y.U.U.T.T.Y.T.T.T.~.T.~.T.~.[.T.~.T.~.~.~.~.~.~.[.^.[.^./.(./.(./.(.(.(.(.(././.(.!./.~.~.~.~.~.~.^.T.E.^.~.E.T.~.~.~.T.T.~.T.T.~.T.T.Y.T.T.T.T.T.T.T.T.T.T.U.T.I.U.T.U.T.T.T.Y.T.~.T.T.T.~.~.T.~.~.(.~.~.~.^.(.(./.(.{.(.(.(.(.(._.(._._.|._._. X|._.|. X|.|..X.X.XdXdX.X.XzXzXzX.XxXzXzXcXxXcXzXzXzX.X.X.XzX@XzX'.dX.XdX.X.X.X.X.X.X|.|.`.|.|.|.|.}.}.}._.}.}.|.|._._.|._._._.^.|.(.(.(././././.~.^.T.~.~.T.~.", "G B C C Z Z Z B C C Z C C C C C C Z B C C Z C Z Z Z C D Z Z Z Z F Z Z D D G Z Z D D Z H H H L L H P H Y H H J P H K L P P J P P P P P J P P J P L P L H J J J H G K H J P U L L P J J J H I J J J H L L H J H H H Z U H L H D D Z L Z Z Z Z Z G Z C Z C Z C G Z C Z C C C C B C C Z C Z Z D Z Z H Z Z Z Z Z Z Z T g.H.z.G.g.h.A.A.A.l.l.l.l.l.l.g.g.h.h.g.g.a.g.k.f.f.f.f.s.a.f.f.k.a.a.i.a.a.s.i.i.i.i.u.s.i.u.i.u.u.i.u.u.u.a.i.i.i.s.i.i.a.i.i.i.k.k.i.k.f.f.f.f.f.f.a.a.a.a.i.a.u.u.u.i.u.u.p.u.u.t.p.r.r.r.r.t.y.r.r.y.r.r.t.t.t.r.r.t.t.t.t.t.u.t.u.u.u.i.a.i.i.a.a.i.z.a.f.f.a.a.i.g.a.g.k.g.d.A.k.k.k.A.h.h.g.g.k.k.k.g.f.g.g.g.g.g.f.g.k.k.h.h.A.h.h.A.S.l.h.h.G.A.h.A.l.A.A.A.A.A.A.G.H.G.A.A.H.G.S.S.S.S.S.S.S.S.A.H.G.H.H.H.H.L.H.L.I.L.U.T.T.T.T.T.T.T.T.~.~.~.^.~./././.(.^.(.{.(.`.(.(.(._._._.(._._. X_.}.}.}.}.}.}.}.}._. X_._._._.(.(.(.(.(.^./.!.(.(./.(.!.(.(.(.(.(.[.`.(.(.(.(.(.(.(.(.(.(.(.(.|.(.(.(.(._.(._._._._._._._._.|.(.^.|.{.`._._.(.(.(.(.(.(.(././././././.~.~.T.T.T.T.T.T.U.T.U.U.U.L.P.L.L.G.H.H.H.H.H.H.H.H.S.H.H.H.G.G.S.S.G.A.D.h.S / ! ZXDXDXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXDXSXGXZXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXFXFXDXAXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXDXDXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXDXZXBXQ.[ / ^ { cXcXzXxXcXcXxXxXcXxXcXxXdXcXdXzXzXzXzX.XdXzX.X'..X.X.X.X|._._.|._.^.(.^.(./.[././.(.T.~.!.T.T.T.T.T.U.T.U.T.U.T.U.P.T.Y.P.P.T.P.^.T.P.T.T.~.T.T.T.T.P.T.T.T.P.T.U.U.U.T.T.U.U.I.I.U.T.U.T.T.T.T.~.T.~.T.T.~.T.~.~.(.T.~.{.~.~./.~.~.^.E.(.(.(.(.{.(./.(.(./.(.(.~.)././././.!.~.T.P.^.T.T.~.T.(.T.~.T.~.~.T.~.T.Y.T.Y.T.T.T.T.T.T.T.T.T.T.Y.Y.U.U.Y.Y.Y.T.T.U.T.T.T.T.T.T.T.~.~.~.T.T.~.~.[.^.~./.(.(.(.(.(.(.(._._._._._._._.|.|.|.|..X.X.X.X.X.X.XdX X.XzX.XzXzXdXzXzXzXdXdXdXzXzXzXzXcX.X.XzX.X.XdX'.@X'..X.X.X.X.X|.|.|.|.|.|.}.}.|._.|.|._._.|.|.{._.|.[.}._.{.|.(.(.(.(././.^.~.~.(.T.~.~.", "C C C Z Z C C Z C C C C D C Z C Z C Z C C Z Z C C Z Z B C D Z Z Z Z D D D D H Z D H Z Z H H H H H H H H H H P J L L P L P J P P Y P P J I J J P P L L J H J J F J H J H J J J J J J J P H J J J H J L Z J H H H H F H H D H D Z H Z Z H Z D Z Z Z Z Z D Z Z Z B Z C Z Z C Z D B Z C Z F Z Z D F Z Z Z Z Z Z Z G T Z.l.l.A.l.h.A.z.G.l.z.l.l.l.h.l.l.l.h.z.g.g.g.k.g.a.f.a.j.f.s.i.k.i.a.a.a.a.a.a.i.a.i.i.s.i.u.u.i.u.u.i.u.i.i.s.i.a.i.i.a.i.a.a.i.a.i.f.g.j.z.f.z.f.f.a.a.a.a.i.i.i.a.i.u.i.u.u.p.t.s.t.t.r.r.y.t.r.y.y.r.r.r.r.r.r.t.t.t.t.t.t.u.u.u.u.u.u.u.s.u.u.a.a.f.a.f.a.g.g.f.a.j.f.f.k.g.k.k.k.k.g.A.h.g.g.h.g.g.g.g.j.f.g.f.g.f.f.g.g.h.h.l.h.h.S.h.A.z.A.A.A.h.A.A.A.g.A.A.S.A.S.S.H.H.G.H.H.S.H.H.G.A.H.H.H.S.H.S.H.H.H.L.H.I.L.U.U.Y.U.T.T.T.T.T.T.~.T.~.~.~./.^././.(./.(.(.[.|.(.{.^.(.[._.}.}._._._._.}.}.}. X}.}._. X_._._. X_._.(.(.(.(.(.(.(.(.(./.^.(.(.(.[.(.(.(.`.(.(.[.(.(.(.(.(.(.(.(.|.(.(.(.(._.(.(.`.|.(.`._._._._.|._.|.|._.|.`.|.`.`.(.(.(.(./.(./.[././././.~./.~.~.T.T.T.T.U.U.Y.U.K.L.U.S.U.S.U.S.G.L.L.H.H.H.L.S.H.S.H.S.D.D.A.A.A.A./ ~ ! ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXZXFXBXm.} Q Q [ mXcXnXcXcXcXcXxXnXcXxXxXdXnXdXxXzXzXzXzXzXzX@XdXdX X'.'. X_._. X(.`.(.(././././.(.~.~.~.~.T.T.T.T.T.T.T.U.T.U.U.T.T.T.P.T.T.T.T.T.[.P.T.!.T.T.P.T.T.T.T.T.T.P.P.T.U.T.U.U.T.T.I.Y.I.U.T.T.U.T.~.~.T.~.T.~.T.[.T.T.[.~.~.~.~./.~./././.(./.(./.(./.(.(./.(./.(././.(./././././.~.~.T./.T./.T.T.T.~.~.T.~.~.T.~.T.Y.~.T.Y.!.T.T.T.T.T.T.T.T.T.Y.P.U.U.U.Y.P.T.T.T.T.T.T.T.T.~.T.~.~.~.~.~./././.(././.(.`._.(././.(._._._._._._.|.|.|..X.X.X.X.X.X@XdXdXdX.X.XdXdXcXdXdXmXzXzXdXnXdXvXdXzXzXzXzXzXzX'. X.X.X.X.X.X|..X'..X X|.|.|.|.}.}.}.`._.|.|.|._.|._.|._.{.|.|._.(.(.(.[.(.(.(.(.~.~.~.~.T.~.", "Z Z C C C C C C B Z C F C C C C C Z B C Z C C Z G C Z Z Z C Z Z Z Z D H D D H L D L L L H Z J H U H P H P H H J L H P P K I J P J I P P J I P J P J H J G J J J J J H J H G J J J J L H J J J J J H L H H H H H H H H H H H D D Z H H Z D Z Z Z Z Z C C C Z Z D C Z Z C Z C Z Z Z Z Z Z F Z D D Z Z Z Z Z Z Z D T Z.D.A.D.l.h.A.l.z.A.h.l.l.l.A.l.l.l.h.g.g.g.g.h.k.g.g.f.f.f.g.k.a.k.a.a.a.a.a.i.i.i.i.i.u.s.i.u.i.u.i.u.a.t.i.t.a.i.i.a.a.a.i.a.a.a.k.a.z.a.a.f.a.f.a.k.a.a.k.a.i.i.i.i.i.u.i.u.u.u.t.t.t.r.r.r.r.y.r.y.y.r.r.r.r.t.r.r.t.t.t.t.u.u.u.t.u.i.u.i.i.a.a.a.a.z.a.a.g.a.g.a.f.f.f.d.k.k.k.g.l.k.k.g.h.g.h.g.g.a.d.f.f.g.g.g.g.g.g.h.z.l.k.h.h.z.h.A.A.A.A.h.A.A.A.H.A.H.A.S.S.S.S.H.H.K.A.Z.S.G.H.H.H.S.G.G.G.H.A.H.H.H.H.L.H.L.L.K.U.T.T.T.T.T.T.T.(.T.~.~././.~./././.(.(.(.(./.^.`.`.^.|._.}._._.'.}.}.}.}.}.}.}.}.}._._.}._._._._.(.(.(.(.(.(.(.(.(.(.~.(.(.(.(.(.^.^.^.(.(.(.(.!.(.(.(.(.(.(.^.(.(.(.(.(.(._.^.^.`.|._._._._.^._.^._._.(.(.(.(.(.`.(.(.(.(././././././.~.~.T.T.T.T.T.T.U.T.U.L.L.L.L.U.L.L.L.S.L.L.G.H.L.L.H.S.H.H.H.H.G.G.H.S.A.H.A.~ ~ S CXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXAXDXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXZXBXm.[ ! ^ m.cXnXcXcXcXcXcXxXnXdXxXxXcXdXnXdXdXzXzX.X.X'..X'.@X.X X X|. X_._.`.(.(.(././.~./.~.!.~.T.T.P.~.P.T.T.T.T.T.T.T.T.T.T.T.P.P.P.P.T.T.T.T.T.T.T.T.T.T.U.T.T.P.T.T.T.T.U.U.U.Y.Y.U.I.U.T.U.T.T.Y.T.~.T.~.T.~.~.T.T.[.~.~.~.~.~.^./.~.!./.~.(././.(.(.^././.(././././.(.~.(./.(././.!.^.^./.R.~./.~.~.~.~.~.T.T.T.~.T.U.T.U.Y.Y.Y.T.T.T.T.T.T.P.P.P.U.U.U.P.P.T.P.T.U.T.T.T.T.T.T.T.~.~.T.T.~.~././.^.(.(./.(.(.(.^.(._._._._._._._._.|.|..X.X.X.X X@X XdX XdXdXvXdXdXdXdXdXdXdXzXzXzXzXnXdXnXzX.XzXzX.XzXdX'.'..X.X.X.X.X X'.|..X|.|.|.|.|.}.|.|._._.|.|.|._._.|.|._._.|.|.(.(.(.(.(.(.T./.~.!.T.(.T.", "C C C C Z C C C C C C C C C C Z Z C Z C C Z Z Z D Z C Z Z Z Z Z Z H H Z H H H Z L Z H H H H H H H H H P J H H J H J J P Y J P P J I P P J J K P J J J J H F J J K G J H J J J L J J L P J J H Y J J H H J H H H H Z H D Z D H D H Z Z H Z D D Z Z Z Z D C B Z Z Z C Z C Z B Z Z Z C Z Z Z Z Z Z Z Z Z Z Z F Z D j.A.h.l.A.g.h.A.A.z.z.A.l.l.h.g.A.g.l.h.h.h.g.h.h.g.g.a.k.f.g.a.g.a.i.a.a.a.a.a.i.i.i.a.i.i.u.i.u.u.u.a.u.a.i.i.a.s.i.i.a.i.a.i.f.i.i.s.a.g.a.z.k.f.f.f.a.f.a.a.a.i.a.a.u.u.i.u.u.p.u.t.t.t.r.r.r.y.t.r.t.y.y.y.r.r.r.r.t.t.t.t.t.u.u.u.u.u.u.i.u.i.a.a.a.a.a.a.g.a.f.f.f.k.f.f.d.k.d.z.g.g.k.g.g.g.g.g.g.g.g.j.g.d.f.g.g.g.g.g.h.h.z.z.S.h.h.A.j.Z.A.A.A.A.A.A.A.G.S.S.S.L.S.S.H.H.H.H.H.H.H.H.S.H.G.G.G.G.H.G.H.H.L.H.H.L.K.L.T.P.T.T.~.T.T.T.T.~.[.~.~.~.~.[./.(./.(.(.(.[.(.(.(.^.|.^._._._.}._._. X X}.|._.}._.}.}. X}._. X_.(.(.(.(.^.(.(._.!.!.(.(.(.(.(.`.^.`.`.!.[.(.(.(.(._.(.(.(._.(.(.(.(.(.(.(.(.(.(.(.|.^.`.{._.|._._.}.|._.(._._._.^.|.(.(././.(./.~./.~.T.~.~.~.~.T.T.T.T.U.U.U.U.L.L.L.L.L.L.L.U.L.L.L.L.L.L.H.H.H.S.H.H.H.D.S.H.A.A.A.S / ~ CXAXFXHXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXFXDXDXBXpX[ Q ~ c.vXnXcXcXnXxXcXvXxXcXcXcXzXcXdXdX.XxXzXzXdXzXdX'..X.X.X.X|._._._.`.(.(.(.^./.(.~.~.~.~.~.T.~.T.~.T.T.T.T.T.T.T.U.U.T.T.T.T.P.T.T.P.P.T.T.T.T.T.T.T.Y.U.T.T.P.T.P.U.T.U.T.I.T.U.T.U.T.U.T.T.T.T.T.~.T.~.~.~.~.~.~.~.~.~.~./.~././.~.~./././.(.^./.(./.(.(.{.(.(.~.(.(.(.(././././././././././.~.~.~.~.~.~.T.~.~.T.T.T.Y.~.Y.T.~.T.T.T.T.U.T.T.U.U.U.U.P.P.T.T.P.T.T.U.T.T.T.T.T.~.Y.~.~.~.~./././././.(.(.(.(.(.{._.(._.(._._._.|.'. X X'..XzX.X.X XdX#XdXdXzXdXdXdXdXdXdXdXdXzX%XdXdXdXzXzX.XzX.XzXdX.XdXzX'..X.X.X@X X'..X X|.|.|.|.|.|.`.|.|.|.|.|.|.`._.`.`.`._._._.^.(.(.(.(./.[./.~.~.~.!.T.", "Z C Z C C B C Z C C C D C C C C Z C C C Z C Z Z C Z Z D C Z Z D Z Z Z Z Z Z H L Z H H H H H H P H H H H Z J H J J H P P J J P J P J P P I J U P J J P L H J J H H J H J H J J L L J J J J J J H J H L J H H H H H H H H D H H D Z H D Z D D D Z D B Z C C G Z Z Z Z C Z C D Z C Z Z Z Z Z Z F Z Z Z Z Z Z Z Z D b.z.z.S.D.k.h.A.z.A.h.h.l.l.l.g.G.l.h.h.h.l.h.h.h.z.g.g.z.k.a.g.i.k.a.k.a.a.a.a.i.i.i.i.i.i.i.i.a.u.u.u.a.u.i.i.i.a.s.i.a.a.i.a.i.i.f.g.a.a.g.z.k.k.k.a.z.a.f.a.i.a.a.u.i.i.s.p.u.t.s.t.t.t.t.r.r.r.E E y.t.w.r.t.E r.r.t.t.t.t.t.u.t.u.u.u.u.u.u.i.s.i.a.a.z.a.a.a.k.k.f.f.z.a.d.k.A.g.g.g.g.g.j.g.g.g.g.f.f.g.g.j.g.z.g.g.k.g.h.h.h.f.D.A.A.h.h.A.A.A.A.A.A.A.H.A.S.H.H.S.S.L.H.S.H.L.H.H.H.H.H.L.h.L.H.H.H.L.S.H.H.H.L.L.L.L.U.U.T.T.T.~.~.[.~.~.~.~.(.!.(././././.^./.(.(.!.{.(.(.^.^.|.}._._._._.}.|._._._.{.}. X_._._._._._.^.(.(.(._.(.(.(.(.(.(.(.!.(.(.[.(.[.(.(.|.(.(.(.(.(._.(.(.(.(.(._.(.(.(.(.(.(.`.`.(.^.`.|.|.(._.|.[._.|._.(.`.|._.(.(.!.(.(./././.~./.~.~.T.~.~.T.T.T.T.U.U.U.U.L.U.L.L.L.L.L.L.L.J.U.L.L.L.H.U.S.S.H.H.H.G.H.S.S.A.H.! ! ! AXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXDXMXQ.{ Q ! c.nXnXmXcXxXxXxXxXxXcXxXdXcXdXnXdX.XzXzXzX'.dX.XzX.X.X.X X|. X X_._.`.(.(.(.^.(./.~.~.~.~.~.T.T.T.T.T.P.U.U.T.U.T.U.T.T.T.P.T.P.P.P.T.P.T.T.P.T.P.T.T.T.T.T.T.T.P.U.T.T.U.T.U.T.U.T.U.T.U.T.I.T.~.T.~.T.~.~.~.~.T./.T.[./.~././.~././././././.^.^.).(./.(.(.^.^.{.(.(.!.(.(././././././.~././.~.~.~.~.~.T.T.Y.~.T.T.~.Y.~.T.T.Y.~.T.T.T.T.T.U.T.L.U.L.U.T.P.P.P.T.T.T.U.T.T.T.~.T.~.~.Y.~.~.~.~././.(.(.(.(.(.(.(.(._._._._.|.|._.'.|. X.X.X.X.XdXdXdXdXdXdXzXdXcXdXzXdXdXmXnXdXdXzX.XmXzXzXzXdXzXzX@XdXdX.XdX.XxX.X.X X.X|..X.X.X|.|.|.|.|.`.|._.|.|.|.`.`.`.`.`._._._._.{.(.(.(.(.(./.~.~.T.~.~.", "C C C C C C F C C C A C C C C C C C Z C Z Z Z Z C C Z F Z Z D D H S Z H Z H Z L H L H ( G L H J H L H H L H H J J H J J P P J I P P P P J P P J L K U P H L J H H J J H J K G H P J P J J H H K H L L H L H H H F H D H S F H F H Z J Z Z Z Z Z Z B B Z C Z Z C C Z C Z Z C Z Z Z Z A F Z Z Z Z Z Z Z Z Z Z Z G j.h.A.z.h.h.l.A.A.A.A.h.A.h.h.l.h.h.A.A.h.A.A.h.h.h.z.d.l.k.d.z.a.f.z.z.a.a.a.a.a.i.a.a.a.u.i.i.u.u.u.i.i.i.a.i.a.a.a.a.i.i.a.a.a.a.a.a.a.i.z.a.k.z.f.s.a.a.a.a.a.a.a.s.a.i.i.u.i.u.t.u.t.t.r.y.t.t.y.y.y.t.y.t.r.r.r.r.r.r.t.t.t.t.s.r.a.u.a.r.u.i.i.a.a.a.i.k.a.g.i.k.f.f.f.s.g.k.k.k.k.k.z.d.k.l.k.g.g.k.g.k.k.j.h.k.z.z.l.l.l.l.l.l.h.A.A.Z.A.A.A.A.A.A.A.G.S.S.H.H.H.H.S.S.L.H.L.D.L.A.L.L.H.H.H.H.S.H.D.S.H.L.L.L.L.L.L.L.I.T.~.T.Y./.~.~.~.~.~././././././././.(./.(./.[.(.(.(.(.|._.|._._.{.|.|._.}.|.|.|.|._.|._._._.^.`.(.|.(.(.(.(.(.(.(.(.(.(.^.(.(.(.(.(.(.(.(.(.(.(.{.(.`.^.(.`.(.(._.(.|./.|.|./.^.(._.|.|.^.|./.|.(.(.|._._._._.(.`.^.`.^.(.(./.!.(.~.~.~.T.T.~.T.T.T.T.T.U.P.P.P.P.P.P.P.L.L.L.L.L.L.L.L.L.L.L.S.U.S.H.L.H.H.H.S.S.Z.S.S Q Q ZXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXVXBXQ.} Q Q c.MXnXnXnXcXcXcXfXxXnXxXzXdXzXzXdXzXzXzX'.zX.XxX'..X.X.X'..X|.|.|._._._.(.(.(././.!.T./.~.~.T.T.~.T.T.T.T.T.T.T.T.T.T.T.U.T.U.T.I.T.Y.Y.Y.Y.T.T.T.T.P.T.T.T.T.T.T.U.T.T.T.T.Y.Y.T.T.T.T.T.T.T.T.T.T.~.T.~.~.~.T.~.~.^.~./.~./.~./.~.^.~.(.~.(.(./.(.(.(.(.^.^.(.^./.(.(.^.~.{.(.^.[.!./.~./.~./.~.~.T.~.XXE.T.T./.T.T.T.T.T.T.T.T.T.T.XXU.U.U.T.T.T.P.T.P.P.P.P.P.U.T.U.T.T.T.~.~.T.T.~.T.~.~.~.(.(.(.~.^./.(.(.[.(.(.|._._._.|._.|.|..X.X.XzX.X.XzX.XxXzXzXzXzXzXcXdXzXzXzXzXzXxXzXzXdXxXnXzXzXzXzXzXzXzXdXdXzX.X.X.X.X.X.X.X.X.X.X.X|.|.|..X|.|.|.|..X|.|.|.|._.|._._.(.(.(.(.(.^.(.!.~.~.~.~.T.", "C C B Z C C C C C C C C Z C A C C D C Z Z C C Z Z Z Z Z Z Z H D Z Z H Z H L L Z J Z H H Z L H L L H H L L J J H J J H J L P P J P P P P L J P P P H H P K P J J J H H H J H J P P L J J J J J H J L L H H H H H H H H F H H D H Z Z D Z D Z Z Z Z Z Z C D C Z Z Z Z Z Z Z Z Z C Z Z Z Z F Z Z F Z Z F Z Z Z C G g.A.h.S.H.z.l.A.A.h.A.l.h.A.l.l.h.h.k.h.h.h.h.h.l.h.h.g.g.k.k.f.f.z.s.a.a.a.a.a.i.a.a.i.a.u.u.a.u.u.a.t.i.i.a.a.a.a.a.s.a.a.a.a.a.a.a.a.k.f.a.g.f.k.f.f.a.a.k.a.k.a.a.a.s.a.s.i.u.u.u.t.t.t.t.t.y.y.y.t.y.r.r.y.r.y.r.r.r.t.t.t.u.u.t.t.r.a.u.a.i.s.s.u.a.a.k.a.k.i.z.a.f.f.f.z.z.d.k.k.g.k.g.k.k.k.k.k.g.g.g.g.k.k.k.h.h.z.h.h.l.l.z.S.A.j.A.A.A.A.A.h.A.G.G.A.D.D.H.H.H.H.L.H.L.L.L.S.L.L.L.D.H.H.H.H.H.H.L.G.L.S.L.L.L.L.L.Y.T.I.T.T./.R.~.~.~.[././././././.(./.(.[.[.(.(.(.(.(.(.(.`.^._.(.|._.|._.|.|.|.|._._.|._.|.|.|.`.`.^.`.(.(.(.(.(.(.(.(.(.(.`.(.(.(.(.|.(.^.`.(.(.(.(.(.(.^.(.(.(.(.(.(.(.(./.(.(.^.`.).^._.|.`.`.`.`.`._._.|.|._.(.(.(.(.{.E././.!.~.~.~.~./.~.T.[.T.T.T.T.U.T.P.P.P.U.P.P.L.L.L.L.L.L.L.L.L.U.S.L.S.H.L.G.L.H.H.H.H.H.H.~ ~ Q CXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXAXGXSXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXFXZXAXBXpX[ / / { nXdXxXxXcXnXcXcXxXxXxXnXcXcXzXcXdXxXzXzX.XzX'.@X.X.X.X'.'.|.|.|._._.(.(.(.(././.!./.~.T.~.T.T.T.T.T.T.T.T.T.U.T.T.T.I.T.U.T.I.T.T.U.Y.U.T.Y.T.T.T.T.T.T.P.[.T.T.T.U.Y.T.T.Y.T.T.T.T.I.T.T.T.T.T.~.T.~.~./.T././.~.~.~././.~./.~.~.~.^./.(.~./.(.(./.(.(.(./.(.).(.(./.(.(.(.[.~.~./.~./.!.~./.~.(.T.T.~.T.T.T.T.~.T.T.T.T.T.T.T.T.T.T.U.U.T.T.P.T.Y.U.U.P.Y.T.P.T.U.XXT.T.T.Y.T.~.T.~.T.~.~.~.~.~.^.(.(.(.(.(.(.(._.(._.(.`._.|.|.|. X.XdXdXzX.XzXzX.XzXzXzXzXzXzXzXzXzXzXzXzXxXzXzXdXxXdXzXzXzXzXzXzXzXzXzXdXzXzXzX.X.X.X.X.X.X.X'..X'.|.|.|.|.|..X|. X X|.|.|._._._.(.`.^.(.(.(.^././.~.~.T.T.", "C Z Z D Z C B C C C C C C C C C C C Z Z Z Z Z Z Z Z D D D L Z Z Z J Z H L Z H H Z H H H H H H H H H L H L J H J L P P L P J P P P J Y P L P J P H P L H U H H J Z J J J U K J J J J I H J J H J H H U L H H H Z H H D H H D H D H Z Z Z Z Z Z Z F D B D Z C B D Z C Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z A Z Z Z Z H G Z.A.A.h.z.h.A.h.h.h.h.A.h.z.h.h.h.h.k.h.h.l.l.z.h.g.g.k.k.f.f.f.a.a.a.a.a.i.i.i.i.a.i.a.i.i.u.i.u.u.u.i.i.a.a.i.a.a.a.a.i.a.a.a.a.k.a.a.a.a.k.f.f.f.a.z.f.z.a.a.a.a.a.a.i.i.u.i.u.u.u.u.t.t.t.y.y.r.r.y.E r.y.r.r.r.r.r.r.t.t.t.t.u.t.u.t.u.u.s.u.a.u.a.a.a.a.a.f.a.g.a.f.k.f.j.d.g.k.k.k.k.g.g.d.k.k.k.g.k.g.z.j.k.h.k.h.h.h.h.A.h.A.h.A.A.j.A.A.A.A.H.A.A.A.G.S.H.H.G.H.S.L.S.S.L.S.L.S.L.L.Z.H.H.H.H.L.H.L.L.Z.U.L.L.L.L.U.P.T.T.T./.T./.~././././.[././././././.(././.(.[.(.(.^.(.(.^.^.`.`._._._._._._.`.`.'.|.|.{._._.|.^.(.(.(.(.`.^.(.{.(.(.(.(.(.^.(.(.^.(.(.(.(./.(.^.(.(.`.(.(.^.`.(.^.(.(.(.(.(.(.(.[.(._._.|.^._.|.`.|.|.|.|.(._.`.(.`.(.(.^.^././././.~.~.~.T.T.~.~.~.T.T.U.Y.P.U.P.P.P.P.Y.L.L.U.L.U.P.P.U.L.L.L.L.L.L.H.L.G.L.S.H.S.H.H.~ ~ ! CXZXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXAXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXAXAXDXGXSXFXFXFXFXFXGXSXDXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXAXDXFXDXAXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXBXQ.[ ! S b.nXnXnXxXcXnXcXcXvXxXxXxXdXxXdXnXdXdXzX@X.X.X.X'..X.X.X.X X|._.}._._._.(.(.(././.!.!.~.~.T.~.T.T.T.T.T.T.P.Y.T.T.T.T.T.T.T.T.I.I.T.T.U.T.T.T.T.T.T.T.T.T.Y.T.T.T.T.T.T.U.T.T.T.T.T.T.T.T.T.T.T.~.~.T.~.~.~./.~.~./.!./.~.^.~.~.~.~./.~.^.~././.(././.(.(.{././.{./.(.(./.^./.{.^././.~././.[.~./.T.~.~.~.T.~.T.T.T.T.E.U.T.T.T.T.T.U.XXT.U.T.U.T.P.P.P.T.P.P.T.T.U.T.U.U.T.I.T.~.T.T.~.~.~.~.~.(.{.~.(./.(.{.^.(.`.(.(.(._.`.{.|._.|..X.X.X.X.XzX.XzXzXzXzXzXzXzXzXzXzXzXzXcXzXxXcXcXxXdXzXzXcXdXzXzXzXzXzXzXzXzXxX'..X.X.X.X.X.X.X.X|..X|.|.|.|.'.'.|. X X X|._.|._._.[.`.(.(.(./.(././.~.!.~.Y.", "C C C B C B F Z C C C C C C Z C Z C C C B D C Z Z Z Z Z Z Z H Z L Z H H Z H H H L H H H U H L J H L L L L H H H J L L L P J P P J I P P P I K J H U K J H J H L K G J H J L H J J J J P J J J H H H H H L H H H H H H H H H Z H Z H Z L D Z Z Z B D Z C C Z Z C D B Z Z C F C F Z Z Z Z C Z Z D Z Z F Z Z Z Z U h.A.h.A.h.h.l.l.A.h.h.l.l.h.h.h.h.h.h.g.l.h.l.l.h.z.l.k.k.f.f.f.a.a.z.f.a.z.a.z.a.i.a.i.a.i.s.u.i.s.a.i.i.i.a.a.f.a.a.a.a.a.a.a.a.a.a.a.i.f.f.f.f.f.f.f.a.f.z.a.a.a.a.s.i.i.i.s.u.s.t.t.t.t.t.t.r.r.y.t.r.r.y.r.r.r.y.r.y.t.t.t.t.u.u.u.u.t.i.r.i.u.a.i.a.a.a.a.i.a.a.g.a.k.f.f.g.k.k.k.z.k.k.k.z.d.k.g.g.h.k.k.k.h.k.h.h.h.h.h.A.A.h.A.h.A.A.A.g.G.A.A.G.G.A.H.A.H.L.H.L.L.L.L.U.L.L.L.P.U.D.U.S.L.K.H.L.H.H.L.L.L.L.L.L.L.L.U.T.T.T.T.T.T.~./././.(.^././.(./././././.(.XX(.(.^.(.(.(.(.`.(.`._.|.|._.|._.`.|.|.|.|.|._.|._._.`.`.(.(.`.(.^.^.(.(.(.(.(.`.|.(._.`.|.^.|.`.|._.`.(.(.(.(.|.(.(.(.`.(.(.(.(.|.^.|.|.(._._.^.|._.|.|.(.|._.|._.^.^.(.`.(.(.^.^././.!.~.~./.T.~.T.T.T.T.T.T.T.Y.T.P.P.P.P.P.L.U.U.U.T.U.P.L.L.Y.U.L.L.L.L.L.G.L.L.U.H.H.H.~ ~ Q CXZXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXGXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXAXDXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXDXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXDXAXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXVXBXm.} / S M.nXnXnXnXcXcXcXcXcXxXxXxXcXnXzXzXdXdXdXdXzXzX'.'..X.X.X.X X|.}.}._._._.(.(./././.~.~.~.T.~.T.T.T.T.T.T.T.T.U.[.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.P.T.U.Y.T.T.T.T.~.T.T.T.T.T.T.~.U.T.T.~.T.T.~././././././.~.~./.(./.~.(.~./././././.(.(.(.(.(.(.(./.(.(.(.^.^.E.[.~./././.~.~././.(.T.T.~.~.T.T./.T.T.T.XXT.T.U.T.XXU.U.U.U.U.L.T.Y.P.P.P.P.T.P.P.T.U.T.T.Y.~.U.T.T.~.~.~.~.~.~././.~.[.(.E.(.(.^.^.(.(.^.^.|.(._.|.|.'.|..X.XzX.XzX'.zXzXzXzXzXzXzXzXzXzXzXzXcXzXxXnXdXdXnXdXzXdXzXzXzXzXzXzXzXzXzXzXzX.X.X.X.X.X.X.X.X|..X.X.X X.X|..X|.|.|. X_._.|.^.|.(.(.(.(.(./././.~.!.~.~.", "C C A C C D C C C C C B Z C C C C D C C D B Z Z Z Z D D D D L H H H H H H H H Z Z L H U H L H H H H L L J H J H J J J H J I J J P J P P P L J P P H P J H J H J H J L L H H H J J J H L H J J H H H J H H P Z H H F H H H F H H H Z H Z D D Z Z Z Z D Z Z Z Z Z Z B D C Z C Z D B F Z B D Z C Z Z Z Z Z Z Z G T Z.A.A.A.h.h.l.h.A.h.l.l.l.z.h.h.g.g.z.D.k.D.h.g.h.h.k.k.k.f.k.i.f.a.z.a.a.a.a.a.a.a.a.a.i.i.s.a.i.i.i.i.i.a.a.a.k.a.a.a.a.a.a.i.z.a.z.a.a.a.f.s.f.f.g.f.a.f.f.a.a.a.a.i.i.i.s.u.i.u.u.u.t.r.r.r.r.r.y.w.y.r.y.r.y.r.r.r.r.r.t.t.u.t.t.u.u.u.u.u.i.u.i.i.i.i.i.a.i.f.g.f.f.f.f.g.g.k.k.g.z.k.d.z.f.k.f.g.g.g.g.g.z.z.h.h.h.z.l.h.A.h.A.h.A.h.A.A.A.A.h.S.A.A.G.G.H.H.H.L.S.L.L.L.L.L.L.L.L.L.L.D.S.L.L.L.S.L.U.D.D.L.L.L.L.I.U.U.T.T.T.T.R.!./.~./.^./.^././.(././././././.[.(.~.(.(.^.(.(.(._._._.|._.|._._.|.|.|.|._.|.|.|._._.(.(.`.^.^.^.(.`.^.{.(.(.(.^.(.`.{.`._.|.}.|._.|.{.|.(.^.(.^.|./.|./.(.(.(.(.(._.^._.|._.^.|.`._._.|.(.|.|.|./.|.(.`.(.(.(.(.(././.~.~.~.T.~.~.T.~.T.T.T.T.T.T.U.T.U.U.Y.P.Y.L.Y.U.P.P.Y.P.U.P.P.L.L.L.H.L.L.A.L.L.G.U.S.~ / S ZXZXAXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXFXFXFXFXFXFXFXFXSXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXZXZXHXm.[ ! ~ c.nXcXcXzXcXcXcXxXcXxXxXxXxXxXzXzXdXdXdXdXdX'.'.dX.X.X.X|.|.|.|.|.|.^._.(.(.(././.~.~.~.T.~.T.~.T.T.T.T.T.T.T.T.[.T.T.T.T.T.T.Y.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.T.T.T.T.T.T.T.T.T.T.T.T.U.~.~.T.~.T.XXT.XX~./.[.~.(.~.~.~.~.~.~./.(.^././.!.(./.^.(.(.(.).(.(.(.(./././.!.^.(.^./.(.~.[.~././.~.~.~.~.~.U.~.T.T.T.T.T.T.T.R.T.T.T.T.T.T.Y.U.U.P.P.P.P.P.T.T.P.U.T.T.T.T.T.T.T.T.T.T.~.~.T./.~.(.~.(.^././.(.(.^.^.(.(.(.|.|._.|.|.|..X.X.XdXzXdXdXdXdXzXdXdXdXzXzXzXzXdXxXxXxXxXdXxXdXcXzXnXvXzXzXzXzXzXzXzXcXcXzXzX.XdX'..X.X.X.X.X.X.X X.X X|.|.'.|.|.|.|.|.|.{._.|.(.`.(././././././.[.~.T.", "C C C C C C C C C C C B C C Z C B Z G C Z Z Z Z Z Z Z D D D Z H H Z H H H D H H D Z H H H H J H H H H H H J H H J H J I J K Y K P P L P P P J J P L H J J H J H J H L H H J J H J J H L J H H J H H J H Z Y H H H H H Z H H H H Z J H D Z Z Z H B Z C A Z B C Z Z Z Z Z Z Z Z B Z D Z Z C Z Z Z Z Z D Z Z Z Z T j.A.A.A.A.h.l.S.h.h.l.h.h.h.x.h.g.g.g.g.z.h.z.z.h.k.h.f.f.d.k.i.a.a.a.a.a.a.z.a.a.a.a.a.i.i.t.i.i.s.i.i.i.a.a.f.a.a.a.f.k.i.g.f.a.a.a.a.a.a.a.f.f.f.a.k.f.a.a.a.a.a.i.i.i.i.u.s.u.u.t.t.p.t.t.t.y.r.r.y.y.r.r.r.r.r.r.r.r.t.t.t.t.u.t.u.t.u.u.u.u.u.i.u.i.i.i.a.g.d.s.a.z.f.g.g.k.g.g.k.A.d.z.k.f.f.f.f.g.g.g.k.k.h.h.h.h.l.l.l.A.h.A.h.A.A.A.g.A.S.A.h.H.H.H.H.H.H.U.L.L.H.L.L.L.L.L.L.L.L.L.U.L.L.D.U.U.L.P.L.U.L.L.U.L.I.T.U.T.T.T./.~././.(./.(.{.(.(./.!././././.(././.(.(.!.(.(.(.(.(.(.^.{.|.|._.|.|.|.|.|.|.|._.|.|.|.{.`.`.(._.|.(.^.|.(.(.(._.`.`.(.`._.|._._.[.|.(._.^.`.`.`.`.`.(.`.(.(.|.^.|.^.|.`.|.{.(.(.|.^.(.`._._.|.|.|.^.(.^.(.(.(.(.(./.(./.~./.~.~.T././.T.T.T.~.T.T.T.T.T.U.T.T.T.T.T.U.T.T.Y.P.P.P.Y.L.L.L.L.L.L.I.L.L.L.L.L.L.L.~ ~ Q CXZXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXGXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXZXVXZXZXBXQ.' / ! m.nXcXcXJXJXcXcXxXcXxXxXxXxXdXdXcXcXdXzXdXzXzX@X.X.X.X.X.X.X|.|._.|.^._.(.(./.(.(.~.~.T.T.~.T.T.T.T.T.T.T.T.T.T.P.I.~.T.T.T.T.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.P.T.T.T.T.U.L.T.T.T.~.T.!.~.T.~.T.~.~.U.~.~.~.T.T.E.~.(.(.(.~.~.~./.~.^./.(.E.[./././././././.(.(.[./.(.(././.(.^./.(.(.^././././.~././.~.(.~.T.~.~.T.~.~.T.T.T.T.T.Y.T.Y.T.U.L.U.U.I.T.T.P.P.Y.P.P.P.P.T.U.P.T.T.T.U.T.T.~.T.~.Y./.~.~.~.~.~.(.^././.(.(.(.(.(.(.^.|.^.|._.|.|.'..X.X.XdXdXdX@XzX@XzXzXzXzXzXcXcXxXxXxXxXcXcXdXvXzXdXzXcXxXcXdXxXzXxXdX.XcXzXzXdXdX.X.X.X.X.X.X'..X X.X'..X.X|.|.|.|._.|._.|._._.(.(.(./.(././.~.~.~.~.", "C C C C C N B C C C B F C C B C B F Z C Z Z Z Z Z D D D G Z J Z H H L H H L L H L H L H H H H H J H H P U H H J J H K L P L P J I P L P P L L J L H H J J H Z J J H K H F J H K H J H J K H H H H L H H H H H H H H H H H D H H L S Z Z H Z Z Z D Z C Z C Z Z Z Z C C Z Z B Z Z C Z B C Z Z Z Z Z Z F Z Z C H T A.A.A.A.A.h.A.h.h.h.l.l.h.l.j.j.g.g.g.h.z.h.g.g.k.h.k.k.k.i.k.i.a.f.a.a.a.a.a.a.a.a.a.a.a.i.i.i.i.i.i.i.a.i.a.a.a.a.a.f.a.f.g.a.f.a.f.a.a.f.a.s.s.a.f.a.f.f.a.f.a.k.a.a.i.i.i.u.u.u.u.t.t.t.t.t.t.r.r.r.r.r.y.r.t.r.r.t.r.t.t.t.t.u.t.t.u.t.t.u.u.u.u.i.u.i.i.a.i.a.g.f.a.k.k.f.g.z.k.g.d.k.d.d.f.f.f.g.g.k.k.h.h.l.h.h.h.h.h.l.z.A.h.A.h.h.A.Z.G.A.S.H.H.H.H.A.D.H.L.L.L.H.L.L.L.L.P.L.P.L.L.L.L.L.L.L.L.L.P.P.L.U.L.L.I.T.I.T.T.T.!.~.T././.(./.(.(.[.(./././.~.(.(.~.~.(./.[.T.(.E.(.(.(.(.`._.^._.|._.}.|.|.|.|._._.|._._._._.^.|.^.{._.(.(.`.^.(._._._._._.`.^.|._._.`._._.{.`.(.|./.`.|.`.|._.|.^.(.|.(.`.{.(.(.`.(.`.^.|.{.`.`.(.|.(.(.(.(.(.(.(.(././.(.[.~.~.~.~./.T.T.~.T.T.T.T.T.~.T.T.T.T.T.T.T.T.T.T.U.P.P.U.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.! ! Q CXZXGXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXDXDXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXZXZXFXBXm.[ ~ S [ fXvXcXcXdXcXxXxXcXxXdXxXzXxXzXzXnXxXdXdXzX.X'..X@XdX.X.X|.|.|.|.|.`.(.|.(.(./././.T.!.(.~.T.T.T.[.P.T.T.T.T.T.[.T.~.~.T.T.T.~.~.T.T.T.T.T.T.T.T.T.~.T.T.T.P.P.T.I.Y.T.T.T.T.T.~.T.~.~.T.~.T.T.~.~.~.T.~.~.~.~.~.T.(.~.(.~./.~.~./.~././.(.!./././.(.(.(.^.^./.(././.(./.~././././././.[./.!.[./.~.~.(.E.T.T.~.T.T.T.T.T.T.T.T.T.Y.T.T.T.T.U.U.T.P.Y.P.T.P.Y.L.Y.U.U.U.T.T.T.T.T.T.~.~.~.~.R.~.~.~.~.~./././.^.(.^.(.(.(.(.`.`._._._.|. X.X.X@X.X'.dXzXzXdXdX'.xXzXzXdXxXdXcXxXxXcXcXxXxXzXnXdXnXxXxXxXxXzXxXxXxXxXzXzXzXdXdXdXdX'.'.dX.XdX.X.X.X.X.X|..X'.|.|.|.|.|._._._.^.(.[.(./././.~.~.~.~.", "C C C B C u C C C C u C C C C C Z C C D B Z Z D D Z D D Z H H H L L Z G G Z Z H H H Z H H H J H H H H H H K J H H H U L P P H I P P J I K P J J H J J H J H L J F J J H H J J G J H J H J H H H H J H H H H H H H D H K H F H D Z L Z Z Z H Z Z Z Z Z Z Z F B Z Z Z Z A D F C Z Z Z D Z C Z B F Z Z Z Z Z F U e.Z.A.A.A.A.A.h.h.l.h.l.l.h.g.z.g.h.k.k.k.g.g.g.k.h.k.k.k.i.k.i.f.a.a.f.a.g.a.a.a.a.a.a.a.a.i.i.i.i.i.a.i.a.a.a.a.z.a.a.a.a.a.a.a.a.f.f.i.a.a.s.f.f.i.a.f.f.a.a.a.a.a.a.a.i.s.u.i.u.u.u.t.p.t.t.u.r.r.r.r.y.r.t.r.r.t.t.r.t.t.t.t.u.t.u.t.t.t.u.u.u.u.u.u.u.i.i.i.i.i.a.g.g.k.g.g.g.g.g.k.d.z.k.k.f.f.f.g.g.k.h.k.h.h.l.h.h.l.l.h.A.h.h.A.A.A.A.A.A.A.h.H.S.h.J.S.H.A.L.H.L.L.L.L.L.L.L.P.L.L.L.U.L.P.L.P.L.P.P.P.L.L.K.R.I.T.T.T.T.T.~.~././././.(./.(.(.(././././.[.(.T.[./././.^.^.{.(.(.(.(.^.|.|._._.|.`.|.|.|.|.|.|._._.|._._.|._._.).^.(.(.(.].(._._._._._.|._.^._.(.`._._.`.`.(.|._.|.(._.|.`.(.`.`.^.(.`.^._.|.^.(.`.`.(.`.^.(.|./.(.`.(.(.^./.^./.(././././.~./.~.T./.T.T.T.T.T.Y.T.T.T.T.T.T.T.T.Y.T.Y.Y.Y.Y.U.Y.P.P.L.L.L.L.L.L.L.L.U.L.U.U.L.~ ! Q CXZXAXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXAXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXFXFXZXFXCXm.} / ~ { cXnXcXcXcXcXxXxXxXxXcXxXxXzXcXzXdXdXdXxX.XzXzX.X.X X.X.X X|.|.|._.`.{.(.(.(.(./.^././.~.T.(.T.T.T.T.T.[.T.T.T.T.~.T.T.T.~.T.T.T.U.[.T.T.T.T.T.T.T.T.P.Y.P.~.T.P.T.Y.T.T.T.T.~.T.~.~.~.T.T.~.T.T.~.T.~.~.~.~.~.{.~.~.(.~.(.~.~.(.~./.T.!.(././././.(.(.(.^././.(././././.(././.~.[././.~.~./.~.~.(.~.~.R.(.~.~.~.~.T.~.T.T.T.T.T.T.Y.Y.T.I.U.Y.U.T.P.T.P.P.P.U.U.U.U.U.E.T.T.T.T.T.T.R.R.~.(.T.T.~.~./././.~.~.^./.(./.(.(.(.(.|.|.|.|.|.|..X'..XzX'.'.dX'.dX@XzXzXzXdXdXdXcXxXxXxXxXxXxXdXnXcXdXxXxXxXvXvXxXxXvXxXxXcXcXzXdXdXdXdX@X.XdX.XdX'..X|..X.X.X.X|.|.|._._.|.|.|.(.(.(./.(././.(.[.~.~.", "C B C C C C C C C C C C C C Z C Z B D Z Z Z B G Z L Z Z Z L L L L L L Z H Z L L D H H H H H K H L H H H L U P H L H K L K J H L L U H H J H L Z H H P H L L L L L L J H L Z J J L J L L J H L J H J H H H H H H H H H H H H H H H D D D Z Z D Z Z Z Z Z Z Z B D Z Z Z F D Z Z C A Z Z C Z Z Z Z Z B Z C D A G e.A.A.A.A.A.A.A.A.l.l.l.l.h.g.h.g.h.g.g.h.g.g.g.g.z.f.k.f.k.i.a.a.a.a.a.i.f.a.a.a.a.k.a.a.a.a.a.i.i.i.i.a.i.i.i.a.g.i.s.a.s.g.g.a.a.f.a.a.a.a.a.a.k.i.i.a.a.k.a.k.f.a.a.a.a.u.u.i.u.u.u.t.u.t.t.E t.r.r.r.r.r.t.y.r.r.E t.t.u.t.u.t.u.t.u.t.i.r.u.u.u.u.u.u.i.i.a.a.a.f.f.f.h.g.g.f.g.f.g.k.f.f.k.f.f.j.f.g.g.k.z.z.z.h.l.l.x.h.h.h.h.h.A.A.A.A.A.G.A.S.S.H.H.H.H.H.H.H.L.L.L.L.L.L.L.U.U.L.L.U.L.L.L.U.L.P.P.P.P.U.U.L.Y.I.U.~.T.~.T.~.~.(.~././././.{.(.(.(.^./././.(.~.(./.(.~.(./.(.(.(.|.{.|.(.[.|.|.|.|.|.'.|.|._.|.|._.|.|.[.|._.^._.(.(.|.(.(.(.|.{.|._.|.^._.|.^._._._._.(.(.`.`.}._._._. X}._.}.^.|.(.(.^.`.^.{.^._.(.`.(.`.`.^.`._.(._.(.(./././.(././.~.~.~.~.~.~.~.T.~.T.~.I.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.P.P.P.L.P.L.P.U.A.L.U.L.U.U.P.T.U.~ / S CXDXAXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXZXDXFXBXM.} ! ! c.xXnXxXnXxXxXxXxXcXzXdXcXcXdXdXdXzXzXzX.XdXdXdXdX.X.X.X X X|.|.|.|.}.}.{.}.^.^././.!.~.^./.~.~.R.T.T.~.T.T.T.Y.T.T.T.~.~.T.T.T.T.T.Y.T.T.T.U.T.U.Y.T.T.T.T.T.P.T.U.T.U.R.T.~.T.~.~.~.T.~.~.~.T.~.T.~.T./.~.~.T./.(.(.^././.^./.!.(.T.XX~./.~.~.!././.~.(./././.(./.(./././././././.~././.~./././.^.~.T.~.~.~.~.~.T.~.~.T.~.T.K.T.T.T.U.Y.T.T.U.T.U.T.U.U.Y.U.U.U.U.U.U.U.U.U.U.U.T.T.~.~.T.~.T.(.T.^.~.^.~.~.~./.(././.(.(.(.(.`._.`.{.|.|.'..X.X.X.XdXdXdX.XzXzXcXdXzXdXcXcXxXxXdXxXxXxXxXxXxXxXxXxXxXnXnXvXxXxXcXcXJXdXdXnXdXdX.X.X.X.X.XdX.X.X.X.X.X.X.X|. X_.}.}.}.}.}.[.(.(.(.(././.~./.~./.", "C A C C C A C C B A C B C C F C C C C D D B D D Z L Z H L Z Z L L L D L J L Z S Z H H H H H J Z H H H H H L H J K H U H U J J J P K L L J J K Y Y J P H L L L J L L J H J L L Z Z J L H J I L Z H H H H L H H H H H D H H H H H D Z D D H H Z Z B Z Z Z Z Z F C Z Z Z B Z C Z D C C Z Z Z C Z Z C D Z C D Z T e.A.S.S.h.h.A.A.h.l.l.G.l.h.h.g.h.g.h.h.g.g.g.g.g.k.f.f.f.i.k.a.a.k.a.z.a.a.a.a.f.a.a.a.k.a.a.i.a.i.a.i.a.i.f.k.a.s.a.f.g.g.a.a.s.f.f.g.k.a.g.a.a.a.i.k.k.a.i.k.a.a.a.i.a.a.i.i.u.u.u.t.u.p.t.t.t.u.t.r.r.r.t.y.r.r.t.t.t.t.t.t.u.t.t.t.u.u.t.u.t.u.u.u.u.u.a.a.i.a.a.a.g.f.g.a.g.f.g.j.f.f.k.f.f.f.g.j.f.f.g.g.g.z.h.h.j.h.j.h.h.h.h.h.A.h.A.h.h.A.S.G.S.G.H.A.H.H.H.H.L.L.L.L.L.L.P.L.U.U.U.Y.Y.Y.U.L.U.P.P.P.T.L.L.I.Y.R.T.T.T.~.T.~.~./.(.(././.^.~.(./.(././././.~.(.[./.~.(.~./.~.(.^.^.^.`._.}.}.|._._.|.`.`.|._._._.|.{.|.}.|.(.|.|.(.`.^.(.|.^.`._.|._._._.|._.|._.|.|._.`.`.`._._.}.}._.}._._.}._.`.(.^.`.(.(.(.(.^.{.{.(.(.(.(.(.^.(./.(.{.{.(././.~./.(.(.~.~.T.~.T.T.T.T.T.~.T.T.T.~.T.~.~.T.~.T.T.~.T.~.T.T.P.P.L.L.P.P.P.U.L.L.U.U.U.Y.U.T.~ ~ ! ZXDXDXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXFXAXZXVXHXQ.[ / Q m.nXxXnXxXnXxXxXvXcXcXcXdXcXmXdXmXzXzXzXzXdXdXdXdX.X.X.X.X.X X|.|.|.}.}.^.(.(.{.^././.^.~.T.~.~.R.[.T.~.T.T.~.~.~.~.T.~.T.~.~.~.T.T.T.T.T.T.T.T.T.T.T.T.T.P.T.T.P.T.U.U.T.T.T.~.T.T.~.~.~.T.T.~.T.~.~.~.T.~.~.~./.~.~.(.~./.~./.!.~.~.~././.~.(./.~././././.(.~./.!./.~././././.~./.~.~./.[.!.~././.~.~.T.~.~.~.T.T.T.T.T.T.T.T.T.T.T.T.T.U.T.T.U.U.U.R.L.U.Y.L.Y.U.U.T.U.T.E.U.XXT.T.T.T.T.~.R./.[.~.~.~.~././.~./.(./.(.`.^.`.`.^.|._.|.|.|.|..X.X.X.X.X.XdXdX@XdXdXzXcXzXzXcXcXnXxXxXxXxXvXcXnXxXxXnXcXxXnXxXnXcXcXxXxXxXcX@XzXcXzXzXdXdX.X@XxX@X.X.X.X.X X|. X|._.}.}._.^.(.(.(./.!./.^././.~.", "C A C A C A A V C C u C C C C C C Z C Z Z Z Z Z G Z Z L Z J L Z L Z H D D L L Z H H H H D H H H G P H H H P H L P H J J H H J L J J K J L P U K H P H P J L L L J H H H L H H H Z L D H L Z L L H H U H H F P H H H H D H H K H H H D D Z F G B Z Z Z D Z D Z Z D Z Z Z Z Z C B Z Z C Z C F Z C Z Z B Z Z D Y j.h.S.S.S.A.A.A.A.g.G.g.A.g.h.h.j.h.h.g.h.g.g.g.f.k.f.f.f.i.i.k.i.a.k.i.i.a.a.f.a.a.k.a.a.a.a.a.i.a.a.i.a.a.a.k.i.a.g.a.f.s.i.g.g.a.f.f.a.a.a.a.a.a.a.i.i.i.k.d.a.a.a.a.a.a.i.i.u.u.u.u.u.u.t.u.t.t.t.t.t.r.t.t.r.r.r.r.t.t.t.E u.t.p.t.u.r.i.t.t.u.t.u.u.u.u.i.i.a.f.a.a.f.f.a.j.g.f.f.g.a.k.g.f.f.f.g.g.g.k.k.h.z.h.k.h.h.h.h.h.h.g.A.h.h.h.h.G.A.Z.S.S.G.G.A.H.G.H.H.L.D.U.L.L.P.L.U.U.U.Y.U.U.P.P.U.U.P.P.P.P.T.L.T.I.T.T.~.T.~.~.~././././././.(.(.(.(././././.[./.T./.[.[.(.~.(.(.(.(.(.(.|._.|.|._.|.|. X`.'.|.|.|.|._._.|._._._.(.^.^.(.(.(.(.`._._._._._._.|.|.|._._.(.`._._._._._. X_.}._._._.}.|.(.(.`.^.(.(.(.(._.(.(.(.`.(.|.(.(.(.(.(./.(.(././.!./.~.~.~.~.~.~.T.~.T.~.T.T.T.T.T.K.T.T.~.T.T.Y.T.T.T.T.T.T.P.T.U.L.L.P.L.L.L.L.I.U.T.T.P.U.! ~ ! ZXZXGXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXVXAXZXZXBXm.{ ! Q [ nXnXxXvXxXnXxXnXcXcXcXcXdXmXdXdXzXzXzXzX.X.X@X'..X.X X X|.|.'.|.}.}._.{.(._.(.^.(./.~.~./.T.R.~.~.~.^.T.~.T.T.~.T.~.~.T.~.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.P.U.T.U.T.T.T.T.~.~.T.~.T.~.~.~.~.~.~.T./.~.~.~.(.~.(.~.(.~././.~.~.~./.~././.~./.~.~.~./././././././.~.~.~./.~.~.~.~.~.[.~./.~.~.T.~.T.~.~.T.T.~.T.T.~.T.~.L.T.K.T.T.U.P.T.T.T.P.Y.L.I.U.U.U.L.Y.U.U.I.T.U.~.T.T.T.T.~.~.T.~.~.R.~.T.T.~.~.~.~././.~./.(.^.(.(.(.|.|.`._._. X|.'..X.X.X.X.XdXdXdXdXdXdXcXzXzXdXcXnXxXcXcXxXxXcXcXcXnXcXmXxXJXnXnXcXcXcXcXcXxXxXzXzXdXdXdXdXdX.X'.dX.X.X'.|..X|._.|.|._.|.(.^.|.(.(./././.~.[././.", "C B C C C V C C C C B B C B C C C C Z C B D Z D Z Z Z Z L Z Z L Z Z D L H Z Z Z H H Z Z Z H H H H H H P H H L H L Y J J H L L H H L H U J H H H P U H H J J Z H H H P H H H L L J L L J H J Z J H H H H H H H H D H H H G H F H Z H D D Z Z Z Z Z Z Z D D Z C Z B Z Z C C Z Z Z C B Z Z C A C Z Z Z D Z Z B L Z.A.A.S.A.A.S.A.h.A.h.A.A.j.G.h.j.h.h.h.f.g.g.g.g.f.f.f.f.f.k.i.i.a.a.a.a.a.a.a.a.a.a.a.k.a.a.a.a.a.i.s.i.a.a.a.g.s.f.f.s.a.f.s.a.a.f.f.a.g.a.a.i.a.a.i.k.f.i.a.a.a.a.a.a.a.a.i.s.u.u.u.u.t.u.t.u.t.u.t.r.t.t.r.t.r.u.t.t.t.t.r.i.t.t.t.w.t.t.t.u.t.u.u.t.u.u.i.a.a.a.a.f.f.a.g.a.g.f.z.k.f.k.f.f.f.f.j.f.k.k.h.k.h.k.h.g.g.h.h.h.h.h.h.j.G.h.G.h.h.A.S.S.A.H.H.H.G.H.L.H.S.L.L.L.P.P.P.Y.U.U.T.U.T.L.U.Y.P.P.T.Y.R.U.T.T.T.T.~.T.T.T./.~././././.^./.(.(./.(.^././././.[.(.(.~.(.(./.(.(.(.(.(.(.`.^.|._.|._.`._.|.|.|.|.|.|.|._.|._._._.`.^.|.(._.|._._._._.|.|._._._.|.|._.|.`. X_._._.}.}.}.}._.|.[.}.|.(.(.^.(.(.(.(.(.(.(.(.(.^.(.(._.(._.(.(.{./.(.(./././.~.~.~.~.~.T.~.~.~.T.T.~.T.~.~.T.T.T.T.T.~.~.~.T.T.[.T.T.T.P.T.L.P.U.U.L.L.T.Y.U.U.Y.T.T./ / S CXZXDXCXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXZXFXVXFXZXBXm.[ Q / c.nXcXnXxXnXxXxXxXcXdXcXcXdXdXdXcXzXzXzXzXzXzX#X'..X.X'..X X.X'.|.}.}.}._.{.(.|.^.(.(.(.~.E.(./.~.~.[.T.T.T.~.~.~.~.~.T.~.T.~.~.T.[.T.Y.~.T.T.T.T.T.T.T.T.T.T.T.T.T.U.T.T.Y.T.T.T.~.T.~.~.~.T.T.~.~.T./.T.~.~.~.~.~.~.~.~.~././.!./.~././././.~.~.T.)./.~.~.~.~./.T.~.~.~.~.~.T.~.~.~.~.~.~.~.~.!.~.~.T.~.T.~.~.T.~.~.T.T.~.R.T.~.T.T.T.Y.P.T.T.P.U.U.U.T.U.U.I.L.U.L.I.U.U.U.U.T.T.T.T.T.T.T.R.~.~.T.~.~.!./.~.~.~.(././.^.(.(.(.{.^.`.^.|.|._.|..X`..X@X.XdX'.dX@XzXzXzXcXdXJXdXxXxXxXcXcXcXxXnXcXnXnXnXcXnXnXnXnXnXnXcXxXxXxXdXcX.XdXdXdXxXdXdXdX'..X.X.X|.|._._.{.|.|.|.^.^.(.(./././././.[.~.", "C u B C C C C C C C C C C C C C C Z C Z C Z Z Z L Z L Z S L Z L P Z U Z L Z H J Z H H H H H H H H H H H H H H J H J H J J H J J L J L L L L H P H U H L Z L Z L H H H H H P L L J L J H D L Z J H H H J G H H H D H H H D D H H L L Z Z D D D D D G Z Z Z B G C B D Z Z Z Z C C F Z C Z C Z C Z Z Z Z Z C Z T Z.A.S.S.h.S.A.S.S.A.A.h.A.A.j.h.A.h.h.l.h.z.g.f.j.k.f.f.i.d.i.k.f.a.a.a.a.s.f.a.g.z.a.a.a.g.a.a.a.a.a.a.a.a.a.z.a.f.k.s.f.i.g.s.a.f.f.k.a.a.z.i.i.z.a.a.a.a.k.i.a.a.i.i.a.u.a.i.u.u.i.u.u.t.u.p.r.u.t.u.t.t.t.t.r.r.r.t.r.r.t.t.t.t.t.t.t.u.t.p.t.r.u.u.u.i.u.u.i.i.a.a.a.f.k.a.g.f.f.z.a.k.k.g.f.g.g.g.g.h.g.g.g.h.g.z.g.h.h.h.l.G.A.h.h.h.h.A.A.A.A.S.S.S.G.H.K.H.S.G.L.L.L.L.U.P.P.U.L.Y.T.U.T.Y.P.T.U.P.Y.T.U.T.T.T.T.T.T.T.~.~.~.~././.(././.(.(.(.(.(.[.(.^.(./././.[.(.(.E.(./.(.(.(.^.(.`.^.`.(.|._.|._.`.|.|._.|.|.}.}.}.|._.|.{.(.(._.(.|.|.|._._.|._._.|.|.|.|.|._.`._._._._. X_._.}.}.|.^._._.|.^.(.(.^.(.(.(.(.(.(.(.(.(.(._.(.(.(.(.(./.(./.).(.(.Y.~.~.~.R.~.~.~.T.T.~.T.~.~.T.~.T.T.T.T.T.T.T.T.~.T.T.T.T.T.U.U.U.L.U.L.U.L.U.R.T.Y.T.T.T./ ~ ! BXZXFXVXFXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXSXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXZXFXFXBXQ.} ~ ~ b.nXnXnXnXnXxXcXxXcXcXcXcXcXdXzXzXzXcXzX$XzXzX'.zX.X.X|..X X|.'.|. X|.|.{.|.(.|.(.(.(./././.~.!.~.T.[.[.~.~.~.~.~.~.T.~.~.T.~.T.~.T.~.~.T.Y.T.T.T.T.T.T.[.T.T.T.P.Y.T.T.T.T.T.T.T.~.~.T.~.T.XXU.XXT.~.T.~.~.~.~./././.~.~.~.~.~.(.~.~.~./.~.~.~.~.T.Y.~.~./.T.~.~.T././.T.T.T./.T.~.~.~.~.T.~.~.~.T.~.~.T.~.T.~.~.T.T.T.T.T.K.T.T.T.T.Y.P.P.P.Y.P.U.L.Y.I.I.U.U.U.U.L.U.U.U.T.U.T.U.T.T.T.T.T.~.~.[.T.T.~.~.~.~.~././././.(.(.(.(.(.^.(.|.|.`.|.|. X|..X.X.X.X.X.XzXzXzXzXdXxXxXxXxXxXxXxXnXcXnXcXcXmXmXcXmXmXmXcXcXnXnXcXcXcXxXzXzX.XzXzXzXzXdXdXdXdX.X.X.X.X X|._.|._._._._._.(.(./././././././.", "C B C C C C C C u C C C C C C A C Z C Z Z C Z Z Z Z Z Z Z Z Z J Z L L L L L Z Z H H H H H Z F J H U H H J J F J J H J H H J H H J J H J U K J J L H L L H L L L P H H P H H H L L L J Z L J L J H H H G P H H H L H Z H H H D D Z Z Z Z D D D Z Z B D Z Z Z Z Z Z Z A C A C Z Z A C C A Z C Z C C Z C Z F Z T Z.S.A.S.A.A.h.G.z.A.A.A.A.A.S.h.A.h.h.l.g.h.z.g.g.f.f.f.d.k.f.i.i.k.a.a.a.a.a.a.a.a.k.k.a.a.a.a.a.a.a.a.a.a.a.g.a.s.f.a.f.s.a.g.f.f.f.f.a.i.g.a.z.a.a.a.a.d.a.a.a.i.a.a.a.a.a.s.i.u.u.u.u.u.u.u.u.t.t.t.t.t.t.r.r.r.r.t.r.t.r.r.r.t.u.t.r.t.t.u.t.s.r.u.u.u.u.u.i.u.a.a.i.i.f.i.k.f.i.z.g.f.j.g.g.g.g.g.g.g.g.g.a.z.h.g.h.h.h.h.h.g.h.h.A.Z.h.A.A.G.Z.A.S.H.S.H.S.H.H.L.G.H.D.P.L.P.P.T.U.T.P.T.T.Y.T.Y.U.U.T.T.T.T.T.T.T.[.T.T.~./.~./.~.~.(./.(.(.^./.(.~.(.(.T./.(.[.(.^./.^.[.(././.^.(.(.(.(.(.`.(.`._.|.|.|.|.|. X|.}.}.}.}._.(.(.{._.|.(.{._.[._.|._._.`.`._.|._.|. X_.{.|._._._._._. X}.}.|._._.`.(._.`.(.(.(.(./.^././.(.(.(.(.(.(.(.(.(.(.!./.(.~.~./.(.~.~.~.~.~.~.T.~.~.T.~.T.T.~.T.~.T.T.~.T.T.~.~.T.T.T.T.T.T.T.T.T.Y.U.U.Y.Y.U.U.T.T.T.T.T.P ~ / fXCXSXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXDXDXDXDXFXFXFXFXFXFXDXSXDXAXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXGXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXFXfXm.' ! S M.mXmXnXnXxXnXcXcXcXcXxXxXcXxXcXzXdXcXdX X.XdX.X'..X.X.X'.|..X.X|._.|._.|._.(.(.^.^.(.(.(././././.~.~.~.~.~.~.^.~.T.[.T.~.~.T.~.T.[.T.~.T.~.T.~.T.T.T.T.P.T.T.T.T.T.T.T.T.T.Y.T.T.T.T.T.T.T.U.E.~.T.~.T.~.!.T.T.(.~.~.~.~.~.~./.~.(.~.(.~.^.^.T.[.^.~.Y.~.T./.~.T.T.T.T.T.T.~.~.T.T.T.T.~.~.~.T.T.T.T.T.~.~.T.T.T.T.T.~.T.I.(.T.T.T.U.^.P.P.Y.U.Y.U.T.T.L.U.L.L.U.L.U.L.U.I.T.T.U.T.T.T.T.T.T.T.T.T.~.[.T.~.T.~.T./.~./././.(.(./.(.|.(.(.^.|._.|.|..X|..X.XdX.XzXdXfXzXzXzXdXdXxXxXxXxXxXcXnXnXnXmXmXmXmXmXnXmXmXmXcXcXcXcXcXxXxXcXxXzXzXzXzXzXzXdXdX.X.X.X|.|.|. X_._.|._.(.(.(./././.(./.(./.~.", "C C C C C C C C B B C C C C C C C C Z C C Z C D Z Z L Z H H H Z H L Z H H F H H H H H F H F H D H Z H H H H H H H J H H H H H P J H H K J K U L L P H L J J J J H H H H H H H L L L H L L Z J H H H H H H H H H Z D D D Z H H Z Z Z H D D Z Z Z Z Z C D Z Z Z Z Z Z Z C C Z C A C Z Z Z C Z F C C Z C Z Z Z T G.A.S.H.H.A.S.S.A.G.A.A.A.A.j.Z.A.l.g.l.z.k.k.g.f.f.z.f.k.f.k.i.k.i.a.a.a.a.i.a.a.a.k.k.a.a.a.a.a.a.a.a.a.a.i.i.g.f.f.a.a.j.a.f.i.f.f.a.a.g.a.a.a.s.a.a.a.a.a.i.a.a.i.a.i.i.i.i.u.i.i.u.i.u.u.u.u.u.t.u.t.t.u.t.r.r.t.r.r.r.r.r.r.r.t.t.t.t.r.t.t.t.u.u.u.u.u.u.u.u.i.i.i.a.i.i.a.f.f.f.g.f.g.a.h.k.g.g.g.g.g.g.g.j.a.j.z.h.h.l.l.l.h.h.A.A.A.l.A.A.H.A.S.H.H.H.S.H.H.L.L.L.U.L.U.P.T.U.U.T.U.T.T.T.T.T.T.T.Y.T.T.T.T.T.T.T.T.~.[.!./.~.[.(.(./././.(.(.(.(.(.(.(.[.(.[./.(.(.[.^.(.(.(.(.(.`.(.(.(._.`._.|._.`.`.|.|.|._._.|.[._._.|.^.|._.(.{.(.(.`._.{._._.|.|._.`.`.|.|.|.|.|._._. X_.|._.|.|._._.{.{.{.^.(.(.(.(././.(.(././.(.(.(.(.(.(.(.(.(.(././.^./.~.~.~.!.~.~.~.T.~.T.T.~.~.T.T.T.T.~.~.T.T.~.T.~.T.~.T.T.T.T.T.T.T.T.T.T.T.U.T.T.T.T.T.P.T.T.U / S hXfXBXCXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXAXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXAXFXFXFXFXFXFXFXFXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXDXHXfXm./ / ! m.nXvXnXnXnXnXzXcXcXcXxXcXcXdXxXdXdXdXdXdX.XzX'.@X.X.X|..X X.X|.|.|._._._._._.{.(.(.(.(./.(././.(.!.~.~.~.~.~.!.~.~.~.~.(.~.~.T.~.~.~.T.T.T.T.T.T.[.Y.T.P.P.[.T.T.T.T.Y.Y.T.T.T.Y.T.T.T.~.T.~.~.T.T.~.T.T.~.T.~.~.~.~.~.~.~./.~.~.(.~.~.~.~.T.T.T.~.E./.Y.~.T.T.~.T.T.[.T.T.T.T.T.[.T.T.T.T.T.T.T.T.~.T.T.T.T.T.T.T.T.I.T.R.R.T.T.T.T.U.P.T.Y.P.T.L.U.U.L.K.L.L.U.L.L.R.I.U.T.T.U.U.T.T.T.T.T.~.T.[.T.~.T.T.~.~.~.(././././.(././.(.(./.(.).|.|.|.|.|.|..X.X.X.X.X.X.XdXdXzXdXdXcXxXxXnXxXnXnXmXmXmXmXnXMXnXMXcXcXmXmXcXcXMXcXcXcXxXxXcXcXzXzX.X.XdX.X.X.X.X.X.X|.|.`.`._._.(.(.(././.(././.~./.~.", "C C C C C C C C C F C A C C C Z C C Z C C Z Z Z Z Z L Z H Z H H Z Z H Z Z D H H H F H H H H H H H H H H J H H H H H J J J J H H H H J H H L H L P L H Y J Z L Z H H H H H H H H L J L L L L L Z H H F H H H H F D D H H D H H D Z H Z H D D Z Z Z Z D Z D Z C Z C Z Z Z C Z Z C Z A Z C Z C Z H C C Z Z Z H T Z.A.H.A.G.A.A.S.G.A.S.A.A.A.A.h.h.G.g.z.g.k.k.g.g.a.d.f.i.d.i.i.i.a.a.a.a.a.k.g.a.g.d.z.i.a.z.a.a.a.a.a.i.g.i.z.i.s.f.g.g.i.f.a.a.k.f.f.f.a.a.z.a.a.k.a.a.a.i.a.a.i.a.a.i.i.i.s.u.u.i.u.u.u.u.u.u.t.u.t.u.u.t.t.t.r.y.t.r.r.r.r.r.t.r.t.r.t.t.r.t.t.u.t.t.u.u.p.u.i.i.i.i.a.i.g.a.f.f.a.g.f.g.g.g.k.h.g.g.j.a.g.g.k.k.g.z.g.h.l.l.l.h.h.h.h.A.A.A.A.A.H.G.H.h.H.H.H.L.L.L.L.L.L.U.T.U.T.T.T.T.T.T.Y.Y.T.T.T.T.T.T.T.T.T.T.~.~.T.T.~.~./.~.(.~./.(.(./.(./.(.~.(.(.[.(.(.(././.^.^./.(.(.(.(.^.^.(._.(._.|._._.`.`.|._.|._.|.{._.|._.`._.[.|.|._.(.|._._.|.|._._._.|.|.`._.|.|.|.|. X_._. X X_._. X|._.|.`.|.^.(.(./././.(././.(.(./.(./.(.(./.(.(.(.(.(./././.~.(.~.).~.T.~.T.~.T.~.T.~.~.~.(.Y.T.~.T.T.~.T.T.~.T.[.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.T.^.T.~.T / / pXhXBXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXAXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXZXZXBXhX} ' ! Q b.nXJXnXnXnXnXcXcXcXcXcXcXcXdXcXcXnXdXxXdXdXdXdX.X.X.X.X|..X|..X|._.|._._._.{.(.(.(.(.(.(./././.(.^.[././.~.!.[.~.~.~.~.~.~.~.(.~.~.~.~.~.~.T.~.T.U.U.T.[.T.T.T.T.T.T.T.T.T.Y.T.T.T.T.T.T.T.T.T.~.T.T.T.(.T.T.!.~.~.~.~.!.~.!.~.~.~.(.~.~.~.~.~.T.Y.T.R.R.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.K.~.T.T.^.L.T.Y.P.P.P.P.L.L.L.L.L.U.L.L.L.L.L.U.I.T.U.T.T.U.T.T.T.T.T.~.T.T.~.~.~.T.~.~.~././././././././.(.(.(.^.{._.|.|.|.'..X.X.XxX'.dXdX@XxXdXcXdXxXxXxXcXcXnXnXmXmXmXmXmXMXMXcXMXMXcXmXcXmXmXcXcXcXvXxXcXxXmX.XcXdXdXdXdX@X.X.X.X X{._.|._._.(.(.(.(.(./././././.~.", "C C C u N C C C C C C C D C C C C C Z C C Z Z Z Z Z H D D D D G L S H J H H H H H H H Z H H H H H H Z H J P H H H L H L L H H L P D L L L L H P U H P L H J H H L L L H L J L L L L L H P H J H H H H H H H H H D H H H H F H H D H Z Z Z Z D Z Z Z Z Z Z Z Z Z Z Z Z Z C Z C C Z Z C Z D Z Z Z Z C Z Z A D T H.H.A.H.H.S.H.G.H.A.H.H.A.A.A.S.h.A.A.g.k.z.g.g.a.f.f.f.k.f.a.a.f.k.i.a.i.i.f.i.k.i.a.a.f.f.a.a.a.d.a.a.a.s.g.f.f.f.a.j.a.s.f.f.d.f.f.z.a.a.a.z.f.a.a.z.f.i.i.a.a.a.a.a.i.a.i.i.i.u.i.t.i.u.u.u.u.u.t.u.t.t.t.r.r.t.r.r.r.r.r.r.r.t.r.t.r.r.t.t.w.t.u.t.u.t.u.u.p.u.u.u.s.u.a.i.i.i.f.f.k.f.k.k.k.k.z.k.z.g.f.g.j.z.d.g.z.g.h.l.z.h.l.S.h.A.A.A.G.S.A.H.G.A.H.A.H.S.L.S.L.L.L.L.L.U.U.U.T.T.T.T.T.Y.Y.~.T.T.~.T.Y.[.T.T.T.[.~.~.T.~.(.!./.(./.^.(.^.(./.(.^.(./.{.{.(.(.(.(.(.(.(.(.(.(.(.^.(.(.(.(.(.`.`._._.|._.|.{.|.`.`.|._.|.^._.|._._.|._.|._._.^.`.(.`.`.`.}.|._.{.|.|.|._.|._.|.'.`.`.`.`.`.`.`.(.(.(.(.(.(.(./.(./././.(././.(./.(.(.(./.(.(.E.(././.~.~.~.~.~.~.T.~.~.T.~.T.~.~.T.XXT.~.T.~.T.T.I.~.~.T.~.T.T.~.T.T.~.~.T.T.T.T.T.!.T.T.R.R.~.~.T / ~ m.pXhXHXGXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXFXhXQ.[ / / ~ m.MXmXmXcXnXnXJXcXcXcXfXdXnXxXzXxXzXzX.XzX'.'.zX'.@X.X.X X.X|.|.|.`.`.|.(.|._._.^.^.(.(.(.(././././.!./././././.~.~./.~././.~.!.~.~.~.~.~.~.I.!.L.~.~.T.U.Y.~.Y.~.T.T.T.T.T.T.T.T.T.T.T.T.[.T.P.T.[.T.T.T.~.~.T.T.^.T.T.^.T./.~.~.~.~.~.~.T.T.T.T.T.T.T.T.T.T.P.T.T.T.T.T.T.T.T.U.T.T.T.T.P.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.P.T.P.U.Y.U.U.Y.L.L.L.Y.L.L.L.R.R.U.U.U.T.Y.T.T.P.T.T.T.T.T.~.T.[.~.T.T./.~.~././.~.~.^./././././.(.^.`.`._.|.|.'. X.X|..X.XzX.XzXzXzXzXcXcXdXnXcXcXnXnXMXmXmXmXmXmXMXmXmXmXmXnXmXnXmXnXnXnXnXJXxXxXxXcXxXdXdXdXdX.X.X'.dX X X|. X|.{.`.^.(.(.(./.(./././.~.~.", "C C C C B C C C B B C C C C C F D C C Z D B Z C Z Z Z D D D H Z Z L H Z H Z Z H H Z H L H H H Z H H H H H H H H L L H P L L L L L L L L L L Y H L P H P H H H H H P Z H L Z H L L H L H H H H H H H H H H H H H D K D Z H H Z K D Z H Z D D Z D Z D Z Z Z Z Z Z C Z C Z Z C Z Z C Z Z C B Z C Z Z Z C Z Z D e.G.H.h.S.A.H.A.D.H.S.G.A.H.A.A.l.h.g.h.A.g.h.g.g.z.k.f.f.k.f.k.a.a.a.k.a.k.k.i.k.i.a.g.a.f.i.a.z.a.i.i.g.s.f.f.s.f.f.a.f.f.f.g.s.f.z.a.a.f.a.a.a.a.a.i.i.i.i.f.i.i.a.i.i.a.a.i.i.u.i.u.i.u.i.u.u.u.u.t.t.s.t.t.t.r.r.r.r.r.r.r.y.r.r.r.r.t.r.t.t.t.u.t.t.u.u.u.u.u.u.i.i.u.i.i.i.k.f.d.f.z.k.k.k.k.k.k.k.k.k.f.f.g.g.h.g.g.g.h.h.h.l.h.h.A.A.A.A.A.A.A.A.A.S.A.H.H.H.D.L.L.L.Y.L.U.U.T.U.U.T.T.T.T.T.T.Y.T.T.T.T.~.T.T.T.T.T.T.T.~.~.~./.(./.(.^.(.{.^.(.(.|.(.(.(.(.(.(.(./.(.(./.(.(.(.(.(.(.(.(.|.`.`.^._._._.|.|.|.{._.^.|.`./.|._.^.|.|._._.|._._._.|.|.^.`.|._._.|.|.|.|._._.`.|._.|.`.`._.|.(.(.`.`.(.(.(.(.(./.(.[./.(.(.~.(././././.^.(.(.(.(.~.[.~.[.~.~.~.~.~.~.~.T.~.~.~.T.~.~.).XX~.T.~.T.T.~.~.~.I.~.~.~.~.T.~.~.~.T.~.~.T.T.T.T.T.~.~.~.Y.~.j.S S } m.hXBXDXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXfXaX} ] / / ~ m.MXmXmXmXnXnXdXcXnXcXcXnXxXxXzXzXzXzXzX.X@XxX'.zX|..X'..X.X|.`.`._._.{.|.`.^.^.|.`.(.(.|.{.(.(././././.(././.~./.~././.~././.~.~.~.T.~.~.~.~.~.~.Y.T.T.Y.I.T.I.I.~.T.T.T.T.T.T.T.T.T.T.T.T.T.[.T.P.!.~.[.T.~.~.~.~.T.~.~./.T.~.~.T.~.T.~.~.~.~.T.T.T.T.T.T.T.T.P.T.T.U.T.T.T.Y.Y.T.T.U.P.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.L.L.U.P.U.L.U.U.K.L.L.U.H.K.L.U.U.U.U.U.P.T.T.T.T.T.T.~.T.T.~.~.~.T.~.~./.~.~./.^./.(././.^.(.(.(.`._._.|.|.|..X XfX.X.X.XzXzXzXzXdXcXcXnXdXcXnXnXmXmXmXmXmXmXMXmXmXMXmXnXcXnXnXnXmXnXnXcXcXxXxXxXxXdXdXdXdXdX@X@X.X'.'.|.|._.`.|.(.(.(.(.^.(./././.~./.", "Z C C C C C C C C u C C C C C C C C C Z C Z Z C Z F Z Z Z Z H Z Z Z Z H H L H H H H H F H F H H H H H H H H P H P L H P L L H L L L L L L P L P L L L H H L H H H L H H L L H L L L H H H H H H H H F H Z H H H D H D H H F H A H H D Z D Z H Z D Z Z Z Z Z C Z Z C Z C Z C Z C Z C A Z C Z B Z Z Z C Z Z H e.S.A.H.S.H.S.G.S.S.S.S.G.A.A.A.A.A.A.A.D.g.h.h.k.z.k.k.z.s.f.f.a.a.f.a.i.a.i.k.f.i.a.a.a.f.f.a.i.i.d.g.a.a.i.a.g.f.f.f.a.f.s.a.i.f.a.f.a.a.a.a.f.a.a.z.i.z.i.i.a.i.a.a.a.i.a.i.i.i.i.i.i.i.s.u.u.u.t.u.u.t.t.t.r.r.r.y.r.r.r.r.r.r.t.t.t.t.t.t.w.t.u.t.u.u.t.u.t.u.u.i.u.i.i.a.a.a.d.z.k.i.f.k.k.k.k.k.k.h.k.f.z.f.k.g.g.z.z.h.h.l.h.h.g.G.A.A.A.A.G.A.H.A.A.H.H.S.H.H.S.L.U.L.U.Y.T.U.T.T.T.T.T.[.T.~.~.T.T.T.T.T.T.T.T.~.T./.~./.~././.!././.(.{.|.(.(.(.(.(.(.{.(.(.(.(.(.(.(.(.{.(.(.^.(./.(.^._.(.(.`.|.`.`._._.|.(.|.(.`.`.^.^._._.{.(.(.|.{._._.(.|.`.(.`.(._._._.|.|._.|.|._.}. X}._._.}._._._.`.^.(.^.(.(.(.(.[.(.(./.^./.(./././././././.(.^.[.^.^./.[.~./.~.~.T.T.~.T.~.~.~.T.~.U.T.T./.~.T.T.~.I.~.I.~.~.~.~.~.~.~.~.~.~.T.~.R.T.T.~.T.~.T.~.~.j./ / ' } m.fXHXDXFXDXZXFXZXFXFXFXZXZXFXZXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXFXAXFXFXFXFXHXAXCXhXm.' ! ~ / ^ m.mXmXmXcXnXnXmXmXnXnXxXxXdXcXzXzXzXzX.XzX'.zX'.'..X.X'. X|.|.|.`._.|._._.`.|.|.(.(.(.^.|.^.(.(.(.(.(././.[./././.~.^./.(./.~.~.~.~.~.~.T.T.~.T.~.~.I.T.~.~.Y.~.Y.T.T.T.T.T.L.T.T.T.T.T.T.T.[.P.T.T.T.T.T.~.T.~.~.T.T.~.~.T.~.T.~.~.T.~.~.T.T.T.T.T.T.T.Y.Y.Y.U.T.T.U.T.P.P.P.T.T.U.T.U.T.T.T.P.T.T.T.T.T.T.T.T.T.U.T.U.T.T.U.U.T.T.T.T.P.Y.Y.P.L.L.L.L.L.J.U.U.L.I.L.I.L.L.U.T.U.T.T.T.T.T.T.T.T.T.~.T.T.~.~.~.~.~.~.~.~.R.(.!./.~.(.(.(.`.(._.|.|.'..X.X.X@X'.dX.X.XzXzXzXzXcXcXdXcXnXnXnXmXmXmXmXmXNXnXmXmXmXmXmXnXmXmXnXnXnXnXcXnXxXcXxXxXzX@XdXdXdX X.X.X.X X|.|._.|._.^.`.^.(.(.(././.~.~./.", "B C A V C C C C C C C C C Z B C C C B Z C Z C Z Z Z Z D H Z H H L Z L Z H Z H H H Z H J H H H H D H H H H J H H H L L H H P H L J H L L L L P P P H L L L H H H L H H P S Z L H H H H H P H H H H H H J H H H H H H H H H H H H Z H H S D D D Z Z Z Z Z D C Z Z Z Z C C C C C Z C Z Z C Z Z D Z Z Z Z Z Z H e.S.H.H.H.H.H.S.S.H.S.S.G.A.A.H.h.A.A.h.h.h.h.h.z.l.k.k.z.f.f.f.k.s.i.f.f.f.f.i.f.f.z.a.g.a.a.i.g.a.f.a.k.k.a.g.a.g.f.f.a.f.f.f.a.d.a.a.a.f.g.a.a.x.i.z.a.a.k.i.a.z.a.a.a.i.i.i.i.a.s.i.u.i.u.u.u.u.t.s.t.t.t.r.t.r.r.r.r.y.y.r.r.r.r.t.t.t.t.t.s.t.t.t.u.t.u.u.u.u.u.u.i.s.i.a.a.a.d.i.k.k.f.f.f.f.k.k.k.k.f.j.g.g.g.z.k.g.g.h.h.h.h.h.h.h.z.A.A.H.A.G.A.H.A.H.H.G.H.H.U.A.L.L.L.L.Y.U.T.T.T.T.T.T.T.T.T.T.T.~.T.Y.T.[.T.T.T.T./.T.~././.(.(.(.^.).(.^.(.(.(.(.(./.^.(.{.(.(.(.(.(.^.|.(.{.|.|._.|._.`.`.(._.^.`.|.{._._.|.`.|.(.`.|._._._.(._.|.{._.|._._.|.(.{.(.[.|.|._.|.{._.|.}.}.}.}._. X}._._._.{.(.(.(.(.(.^.(.(.(.!.(./.^.!.(./.(././.(.(.(.^././.!.~.~.~.~.!.!.~.~.T.[.T.~.~.~.~.T.T.T.T.T.T.~.T.~.~.~.~.~.~.T.~.~.T.~.~.~.T.~.~.~.T.~.T.~.~.~.~.A./ Q ~ ( m.].MXZXFXZXZXAXVXAXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXAXAXFXHXBXfX].{ / S ~ ^ ' ].cXmXmXcXnXvXxXxXxXxXxXxXcXzXzXzXzXzXzX.XdX.X.X.X.X.X.X X.X`.|.`.|._.|.|._.|.(.`.{.`.^.(.(.(.[.(.(.(./.^././.[.~./.(./././././.~./.T.~.~.T.T.~.T.~.~.T.Y.~.I.I.Y.T.T.T.T.T.(.T.T.T.T.T.T.T.T.P.T.T.T.T.~.T.~.T.T.~.~.~.T.~.~.T.~.~.T.T.T.T.T.T.T.Y.Y.P.T.P.P.P.Y.U.T.U.U.T.T.P.T.T.U.T.U.T.P.T.Y.T.T.T.T.T.T.T.T.U.T.T.T.U.T.T.U.T.T.P.P.Y.P.U.L.L.L.Y.L.L.L.L.L.U.U.I.U.Y.U.L.U.P.T.T.T.T.T.T.T.T.Y.T.~.T.T.~.~./.~.[./.(./././.[.(.(.(.`.`.|._.|.|.|..X.X.XdXdXcXxXzXzXcXcXcXdXcXcXvXnXmXmXmXmXmXmXnXMXmXmXMXmXmXmXmXnXnXnXnXnXnXnXcXcXxXdXzXzX.XdX.X.X.X.X|..X|.|._.|.|._.(.^.(.(./.(./.~.~.[.", "C A C A u G B C A B C A C C C C C D C Z C Z D Z H Z H G Z Z H Z H Z H H H H H H F J H H H H H H H H H H J H H P L H L H H H L H L L L L L L H H L L L L H H H L H L L H L H L L L H H L J H H H H L L H H H H H H H F H H H H H H H Z L Z D Z Z Z Z Z C Z D Z B C Z C C C Z C Z Z A Z Z Z Z Z Z Z Z Z Z Z U j.A.A.H.G.G.S.H.D.A.S.S.S.A.H.A.A.A.S.h.A.h.h.h.h.h.k.g.z.g.k.f.f.f.k.i.i.z.i.k.f.f.g.a.f.z.a.f.i.f.a.k.f.i.a.f.i.z.f.f.s.i.g.a.s.f.a.a.a.a.a.a.a.a.f.f.i.i.a.f.i.f.a.a.i.i.a.i.u.u.a.i.i.u.u.u.u.u.t.t.t.t.t.r.r.r.s.y.r.r.r.w.E t.r.t.t.t.r.u.s.t.u.t.t.s.u.t.u.u.u.i.u.a.i.i.i.k.i.z.i.z.d.z.k.z.f.f.f.f.z.k.g.g.h.f.z.l.h.h.h.h.h.h.h.A.A.A.A.A.H.H.A.G.G.S.S.H.S.S.Y.L.L.L.Y.U.U.Y.T.T.T.~.T.~.~.~.T.T.T.T.~.~.~.T.~.T./.~.~.~.~./.^./.(.(.(.(.(.(._.(.(.(.(.|.[.|.|.(.`.(.`.(.(.(.|._.^.|.`.`._._.`.(.`.`._.(.(.(.(.`.`.|./.`._.(.|.^._.(.^.|.|.|.(.|._.(.|.`._._.^.`.`.^.|.(._._.|.}.|._.(.{._.(._.(.(.(.(.^.(.^.(.(.(.(.(.(.^./.(.^.(.!././././.~.(././.[.^.T.~.~.T.~.[.T.~.~.~.T.T./.T.T.T.~.~.~.T.~.~.~.~.~.~.~.~.T.Y./.~.~.~.~.~.~.T.~.~.~.~.~.~.A._ ^ ! / ' m.hXHXZXDXZXAXAXAXGXFXFXFXZXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXGXFXFXFXFXFXFXZXFXVXAXZXAXZXVXVXfXhX} _ ~ ^ ^ ' M.'.cXnXnXnXnXnXnXxXxXcXcXxXxXxXzXzX.XzXzXzX.X.X.X.X.X`.'..X|.|.`.`.`.`.`.|.{.`._._._.{._.(.(.(.(.(.(.(.(.(././././././././.~./.~./.~.~.T.T.~.~.I.T.I.~.~.Y.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.T.~.T.T.T.~.T.~.~.T.T.T.T.T.T.T.T.T.T.T.P.P.P.P.U.L.P.T.Y.P.T.T.U.T.Y.T.Y.T.T.T.T.P.T.P.T.T.T.U.T.T.T.T.U.U.T.Y.P.T.P.T.P.P.P.U.L.U.Y.L.L.R.L.Y.K.U.L.L.U.Y.U.Y.U.Y.P.T.T.T.T.Y.~.T.~.T.~.T.~.T.T./.(.T././.!./.(./.(.(.(._.{._.|.|.|. X'.'. X.XdXdXdXzXzXdXzXzXcXcXcXcXcXnXmXmXMXmXmXmXmXmXSXnXmXmXmXmXnXcXnXnXnXnXmXnXxXxXxXnXdXxXdXdX.X.X.X.X.X|. X|.|._.}.}._.^.(.(.(.(./././.(.", "C N C C B B C C C C C C C C C Z C C C Z D B B Z Z Z Z Z Z H D H D D H H H D H D H H H H H J H L H H H H H H H H L L L L J I H H L L D L L H L L L L H H H P Y H L L L L H H H J H L L H H L H J H H H H J H S H H H H H H H F H Z H H D D D G D F Z Z Z Z B D Z Z C Z Z Z C C Z C Z C Z Z C C Z Z Z F Z Z U b.S.H.H.H.A.G.H.H.H.A.G.A.H.S.A.A.A.z.A.h.A.h.h.h.h.z.g.g.g.f.j.f.f.a.g.a.g.d.f.i.k.f.g.a.i.k.a.a.f.f.a.f.f.f.f.f.f.a.j.j.a.g.a.g.i.a.f.a.f.a.z.a.k.g.i.k.i.z.i.k.i.a.a.a.i.i.i.u.i.u.u.i.u.i.u.u.u.s.t.u.t.r.t.r.r.w.y.r.r.r.r.r.r.t.r.t.t.t.t.t.t.t.s.u.u.u.u.t.a.u.u.u.u.i.f.a.i.i.z.z.i.k.d.i.d.i.f.f.f.f.k.g.g.l.h.f.h.h.h.h.h.h.h.A.h.j.A.G.A.h.H.H.H.H.H.G.H.H.S.L.L.L.L.L.U.P.P.T.P.T.T.T.T.T.T.T.~.T.T.T.T.T.~.T.~.T.~.~.~.~./.^.(.(.(.(.(.(.(.(.(.(.|.(.`._.(._.|.(.`.^.`.(.{.^.(.|.(.^.`.^.|.`.^.(.(.(.`.`.`.|.(.|.^.`.|.(.{.{.|.^.`.|._._._.(._._.{.^.{._._._.`._.|._._._._._._._._.|._._._._.(.^.`.`.{.(.`.(.(.`.^.(.(.(.(.(./././././.~././.(././.E.(./.~.^.~.~.T./.T.T.~.T.~.T.T.~./.~.T.T.~.U.~.~.~.~.~.~.~.(.~.~.~.~.~./.!.~.~.T.~.T.~.~.~.H.[ / ! / / ( m.hXfXZXZXAXVXZXZXFXFXFXVXZXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXZXAXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXFXFXFXFXFXFXFXFXVXDXZXZXVXMXhX{ _ ~ ~ ^ ' m.].zXnXmXzXJXmXcXnXvXcXcXxXcXzXzXxX'.zX.X.X'.@X.X.X.X`..X`..X.X|.|.|.|.|.`.`.|.|.|.|._.|.{.^.(.(.|.(.(.(.(.(.^.^.(.!./.^.~.(./.~.~.~.~.~.~.~.~.T.T.~.T.T.~.U.T.T.I.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.P.[.T.T.~.T.T.T.~.~.T.T.T.T.T.T.T.T.T.T.T.U.T.T.U.T.Y.P.U.Y.P.P.P.Y.P.T.U.U.P.Y.T.U.T.P.T.P.P.T.T.P.T.U.U.T.U.U.U.T.P.P.Y.I.P.P.P.P.U.P.U.P.L.L.J.K.L.L.L.U.Y.U.L.U.U.L.Y.U.T.P.T.T.T.T.~.T.T.T.T.~.~.~./.~./././././.!./.(.(.(.(.|._._.|.|.|. X X'..XdX.XdXzXzXzXnXcXcXcXcXnXnXnXnXmXmXmXmXMXMXmXMXmXmXmXmXMXmXMXmXnXnXnXnXcXxXcXxXxXnXdXdXdX.XdX.X.X.X|..X|.'.|.|.}.}._._.`.^.^.~././.~.~.", "C C C C C C C Z C C B C C C C C C B C C Z C Z A Z Z Z Z H Z D H H Z H H D H H H H H H H H H H H H H H H H I H H P H L L H L H I L J P L H P P L H L L L H H H H H L L H L J H L H L L J L L H L J L L H H H H J H H H F H D H H L H Z H D D D D Z A Z Z Z Z C C C Z A C C Z F C Z Z C Z C Z C Z Z Z D Z Z U g.A.A.H.A.H.L.S.H.Z.G.S.A.A.A.A.A.h.A.h.h.A.h.l.A.h.h.h.g.g.g.j.k.j.g.a.g.a.f.f.k.z.f.i.f.a.a.a.k.a.k.f.f.f.f.i.f.f.f.a.a.a.f.s.a.s.a.f.a.a.x.a.z.a.a.g.k.z.i.k.i.z.a.a.a.i.i.i.u.i.u.i.i.u.u.u.u.u.t.t.t.r.t.r.r.r.r.y.r.y.r.r.r.r.t.r.t.t.t.t.t.u.t.u.u.t.u.u.u.u.u.u.u.a.i.a.a.i.a.a.i.z.i.k.i.d.f.f.f.k.g.f.g.k.z.k.h.h.h.l.h.l.h.h.h.A.A.A.A.G.H.A.H.H.H.H.S.L.H.H.L.L.L.L.L.U.U.U.U.T.T.T.T.~.T.T.T.T.~.T.T.~.T.~.T.~.~.~./.~.^./.[.T.(.XX(.{.^.^.(.(.|./.|.^.|._._._._._.`.`._.(.`.(.`.^.`.(.`._.(.|.`.(.`.^.`.`.^.`.`.`.^.`._.|._._.|.|.|.^._.^.|.(._.(.^.|.^.|.^._.{.(._.(.`._._._._._.`.^._._._._.(.^.`.^.`.^.(.(.^.`.(.(.(.(./.(.(./././.~./.~././.~.(.~././.~.[.~.~.T.~.~.T.T.~.T.~.T.T.~.T.~.T.(.~.(./././.~./.~.~.(.R./.!.^.~.(./.~.~.~.T.~.~.U.S.[ ~ / ~ / [ m.hXBXBXFXAXAXAXFXFXZXFXZXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXGXAXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXDXZXMXhXc.' / ! S c ` hXJXzXmXvXnXnXcXxXnXxXcXxXxXzXzXzXzXzXdX.XdX.X X.X.X.X.X|.'.|.|.|.|.|.|.`.|.|._._.{._._._.`.(.^.(.(.(.(.(.(.(.~.{.(././.~./.~./.~.~.~.~.~.~.T.T.~.T.T.~.~.U.~.T.T.T.U.T.T.T.T.T.T.T.T.[.T.T.T.T.T.T.T.T.T.T.T.T.P.T.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.U.P.L.U.L.P.P.P.P.P.P.U.U.U.P.P.P.L.U.T.P.U.T.U.U.U.T.T.T.U.T.U.U.P.Y.J.T.Y.L.Y.U.U.P.L.U.U.L.L.U.L.L.L.U.L.U.U.U.L.U.T.U.T.T.T.T.T.T.T.T.~.T.T.T.T.T.~.^.~.(./././.(.(.(.(.(.(._._.|.|..X.X.X.XdX.XdXdX.XzXzXdXcXxXcXdXMXcXnXnXnXnXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXnXnXnXnXnXfXdX@XxXdXdXdX.X.X.X.X.X.X.X.X.X.X|.|.}._.[.`.^.(.(.[.(.^.~.~.", "V A C C C C B C A C C C C C C C C Z D Z C Z Z Z Z Z Z D Z Z H D Z D H D D H H H H H H H H H L H H F H H H H H H H H L L L L J H L H L L H L H L H L L J P L L H J J J J H H P J J L H L L L L L L L H H H H H H H D H H H H F H H H J Z D D D D D D Z D B Z Z C C Z Z D C B A B Z C A Z Z Z Z C C Z Z Z Z T Z.H.K.H.S.H.H.H.S.S.S.S.H.A.S.A.A.Z.A.A.A.h.A.h.h.h.h.h.h.g.z.k.k.j.f.z.a.g.k.d.d.i.d.f.k.a.k.a.z.f.f.f.f.f.k.a.f.z.f.f.g.d.i.z.f.g.a.a.a.a.a.k.a.a.g.k.i.i.a.a.i.k.a.a.a.i.i.u.i.u.u.u.u.u.u.t.u.t.t.t.t.r.r.r.r.r.y.s.r.r.r.r.r.t.r.t.r.r.r.s.u.t.u.t.u.u.u.u.u.u.u.i.i.a.i.a.a.a.a.d.i.i.f.i.k.z.d.k.f.f.k.g.g.g.h.l.h.l.l.l.h.g.h.j.A.h.A.A.A.G.A.S.H.A.H.H.H.H.L.H.L.H.L.U.L.L.U.U.U.U.T.T.T.T.T.T.T.~.T.T.~.T.~.T.T.~.~.~.~./.[.~.{.(.(.(.(.(.(.`._._.(.|.{._.|._.|._._.'.`.(._.^.`.`.`.(.`.^.`.`.|.^.`.`._.`.(.^.`.`.(.^.{.|.|._.{.|._._._._.(._.[.|.^.|.).^.|.^._.`.|.^.|.|._.`.`.^._._.(._._.|._.(._.^.^._._.(.^.`.(.(.`.(.(.(.(.(././././.~././././.(.~.(././.~.[.~.~.~.T.T.T.T.T.~.T.~.T.T.~.~.~.~.~./.T./.~./.~.~.)./.(.^.^.~.T.~.E.~.~./.[.~./.T.U.H.[ / ~ ~ Q ' m.hXfXBXZXZXFXFXFXFXZXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXVXFXFXZXZXBXxXaX} ` / S ^ ! ' '.hXnXnXmXnXnXxXnXnXxXnXcXxXzXcXzXzXzXzXdXdXzX.X.X.X.X.X'..X|..X.X|..X|.`.|.|.|.|.|._.|.|.`.^.`.(.(.(.(.(.(.(.(.(.(./.(.[.(././.~./.~.~.~.~.~.~.~.T.~.T.Y.R.~.L.T.T.T.T.[.T.T.U.[.T.T.T.T.T.T.T.T.T.Y.T.P.T.P.T.T.[.T.T.T.T.T.T.T.T.T.T.U.T.T.T.T.T.U.T.T.U.U.U.L.P.U.L.P.P.P.P.P.P.P.P.U.T.P.P.P.P.P.T.U.U.U.T.T.U.U.U.Y.U.Y.U.P.P.U.K.U.U.U.U.L.U.Y.Y.L.U.L.L.L.U.L.U.L.U.Y.P.P.L.T.Y.P.T.T.T.T.T.T.T.T.~.~.~.[.[.[.~.(.~./././././.(.(._.|._._.|.|..X.X.X.X@XxX@XdXdXcXdXdXxXxXcXcXcXcXnXnXnXnXmXmXmXmXmXmXmXMXmXMXmXmXmXmXnXnXnXnXcXnXcXcXxXxXxXxXdXdXdXdX.X.X'.'.|. X|.|._.}._.|.^.{.(.(.(.~.~.~.~.", "B C C B C C V B C C C C C Z C F C Z Z C Z C Z Z Z Z D Z G Z Z L D D D D H H F H H F H J H H H U H H H H L L G H H H G J H H H J P L L L H L L L J H H J J J H P H L L J L J J J L K H H L L H H L L H H L Z J J H P H Z H H H H L L H H D D D Z D A Z Z Z A D Z Z Z B C Z C Z Z H B Z Z C Z Z Z Z F Z D D T A.P.D.S.H.H.H.H.S.H.H.H.A.G.A.A.A.h.A.h.A.A.A.h.h.h.h.h.f.h.h.k.g.h.k.k.g.g.d.d.k.d.k.f.k.k.k.f.d.f.f.i.z.i.k.a.a.a.a.f.a.a.a.f.a.a.a.a.a.a.g.f.a.g.a.g.g.f.f.i.a.a.a.a.d.u.i.a.u.u.u.u.u.u.t.i.t.t.t.t.t.t.r.r.r.r.y.y.s.y.r.r.t.t.t.t.t.t.t.t.t.u.u.u.u.u.u.u.u.i.i.i.i.i.i.i.i.i.i.a.a.a.a.z.i.a.f.z.f.f.g.a.g.f.h.h.h.h.l.l.h.l.l.h.l.l.A.A.h.A.S.S.H.H.H.L.L.H.S.U.L.L.L.L.L.P.P.P.U.T.P.T.T.T.T.T.T.T.T.T.P.T.T.T.~.T.~.~.(.(./.(./.(.(.[.(.(.(.(.(.^._._.`._.[.|._._._._. X_.^._.`.`._._.(.`.`.(.(.|.^.|.(.`.`._.|.^.(.`.(.`._.`.(._.`.`.(._.|.`.^.(._.|._.(.(.|.{.{.(.`.^._.^.|.|.{._.|.(.|._._.{._._._.[._._._.(.|._.`.^.(.^.^.(.(./././././.~./.~.~.^.~.^./././.~.~.T.~.~.(.T.T./.T.T.~.T.~.~.~.!.~.~.T.~./.~./././././././.(.!./././.~./.~.~.(.~.~.T.I.Z.[ P / ! / ' m.hXfXBXHXHXZXZXDXZXFXFXZXFXFXFXFXFXFXFXFXFXDXFXDXAXZXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXZXZXDXFXDXFXFXZXFXAXAXDXAXDXFXFXFXFXFXFXFXFXZXFXFXFXZXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXZXFXFXFXFXDXDXFXFXFXFXAXZXDXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXFXFXDXDXAXAXAXDXDXZXFXFXFXFXFXFXFXFXDXDXFXFXZXFXFXFXFXFXFXDXFXFXDXDXFXFXFXFXAXDXAXFXFXFXFXFXDXDXFXZXFXFXAXFXFXFXFXFXAXZXFXFXFXFXAXDXFXFXFXFXFXFXFXFXAXDXDXAXDXAXZXFXFXFXFXZXFXFXFXZXFXFXFXFXFXFXFXFXDXZXZXDXVXDXFXFXFXFXFXFXFXFXFXZXZXAXZXFXFXFXDXZXZXFXGXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXDXZXAXDXFXZXDXZXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXZXZXFXDXZXDXDXFXFXFXFXZXFXDXDXFXFXFXFXAXFXFXFXZXFXFXZXFXDXFXFXFXFXZXVXZXZXZXZXCXfXhXpX} _ ~ ~ ~ S ' m.dXfXxXMXnXnXxXnXnXnXxXcXcXxXcXcXdXzXzX@XzX.XzXdX.X.X.X.X.X.X X|. X|.|.|..X|.|.|._._.|.|.|.|._.|.`.(.(.(.(.(./.(./.{.(.{.(././.!./././.~.~.~.~.T./.~.T.~.T.T.~.T.T.T.T.~.U.T.T.T.T.Y.T.P.Y.T.U.T.P.P.Y.P.I.T.U.U.U.T.U.Y.T.T.T.U.T.T.I.U.U.T.U.U.T.U.T.T.T.T.U.L.A.U.L.L.P.P.U.L.P.P.P.P.U.P.Y.P.Y.P.Y.Y.T.P.P.P.P.P.P.Y.Y.P.T.U.L.Y.L.Y.L.L.Y.L.L.L.L.U.L.U.L.L.L.L.L.L.U.Y.U.U.U.L.T.T.T.T.T.U.T.T.T.T.T.T.T.~.~.~././.~.(.^.(./.^.(.(.(.|.{.`.`.|.|..X.X.X.X.X.XzXzXzXcXzXcXvXxXxXcXnXnXcXMXcXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXnXnXnXnXcXcXvXxXxXdXdXdXdXdX'..X.X.X|..X'.|.|.|.|._._._.(._.(./././.~./.", "C B C C C B C C C C C C C C C C C C C C C Z Z Z H Z Z D Z Z D L D Z H D D H H H H H H H H H H H U L L L L L H J J H H J H J J H L L P H J L H L L L J H H J P H J L H P L J H Z H H J H J L J K L L L J H L L Z H S H H H F H H Z L Z H Z D D D D D Z Z Z B C Z C A Z A D Z Z C Z Z D C Z Z Z Z Z D Z S U T Z.D.S.G.H.H.H.S.H.H.A.H.H.A.A.A.A.A.h.A.A.A.h.h.g.A.A.h.h.h.h.h.h.k.k.k.g.d.k.k.i.k.f.f.k.i.f.f.k.d.d.f.f.f.a.k.i.f.f.a.g.g.z.a.a.a.a.a.a.a.a.f.f.f.g.a.i.g.k.a.i.k.a.a.a.a.i.a.u.a.i.u.u.u.i.t.u.t.u.t.t.t.y.t.r.y.r.r.r.r.t.r.r.r.r.t.t.t.s.t.u.t.u.t.u.u.t.u.u.u.i.i.u.i.i.i.i.i.i.a.a.a.i.i.z.a.a.a.a.f.k.g.g.h.g.h.h.h.h.h.l.h.l.l.l.A.A.A.A.A.Z.H.H.S.L.H.K.L.L.L.L.L.Y.L.K.Y.P.P.U.U.T.P.T.U.T.T.T.T.T.T.U.[.T.~.T.~.T.T.~.~././././.(.(.(.(.(.(.|._._._._._._._._._. X_._._.|._.`.^.^.`.`.`.`.`.|._.(._.|.|.`.(.`.`.(.(.`.|.^.|.(.|.(.`._._.(.^.`.|._.(.^.|.(.`./.`.{.(.|.(._.^.).^.^.{.{.^._._.`._.[._._._._._.|._.`.(.`.(.`.^.(.(.^./.~./.~./.!.~.~.~.[././././.~.~.~.~.T.T.T.T.T.T./.T.~.~.~.~.~.^.~.~.(.~./.~././.(.(././././././././.~.^.~.^.~.~.^.~.U.D._ / / S / ' [ m.hXfXBXZXFXFXZXFXAXFXFXFXFXFXAXFXFXFXFXDXDXFXAXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXAXFXFXZXFXFXAXFXZXDXDXDXFXZXFXAXFXGXAXDXDXFXFXFXDXFXFXFXFXFXFXGXZXFXFXFXFXZXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXDXDXFXZXZXFXFXFXFXFXDXDXZXFXFXFXAXFXFXGXFXZXFXZXFXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXDXVXFXFXAXAXZXDXDXDXZXDXFXFXFXFXFXFXFXFXDXDXDXFXFXDXDXDXFXAXFXDXFXZXFXDXFXFXFXFXAXZXFXFXFXFXFXFXDXDXZXFXFXFXDXDXFXFXFXFXFXDXFXFXFXFXAXDXFXFXFXFXFXFXFXFXAXZXAXDXDXDXAXZXFXZXFXFXFXFXFXZXFXFXFXFXFXFXFXFXDXDXZXDXFXGXFXVXFXFXFXZXFXFXFXZXFXFXFXDXFXFXFXZXFXDXZXAXFXFXFXFXZXFXFXFXFXFXFXFXZXZXFXDXDXZXFXDXDXAXDXFXZXDXZXDXDXAXFXZXFXFXFXFXFXZXFXFXFXFXAXAXFXFXFXDXDXZXDXZXFXFXFXFXFXFXDXDXFXFXFXDXAXFXFXFXFXFXZXFXGXFXFXDXFXFXFXZXZXDXBXBXhXhXV.} ' S ~ / Q ' m.hXJXmXnXnXnXnXxXnXcXcXcXcXxXcXdXvXzXzXdXdXzX.X'.#XdX.X.X.X.X|..X.X|. X@X|.'..X|.|.|.|.|._.{._.}.}.(.(.(.(.^.(.(.(.(./.(.^.^./././.!./.~./.~.~././.~.T.T.T.~.T.T.T.T.T.T.~.T.T.T.T.T.P.Y.^.T.T.T.P.P.P.P.P.I.Y.P.Y.U.Y.U.Y.T.U.U.T.U.Y.U.T.U.T.U.T.T.U.L.T.U.L.U.Y.U.L.U.L.P.P.L.P.P.P.L.L.P.U.Y.P.P.P.P.P.U.U.P.U.P.P.P.T.Y.Y.U.L.L.U.L.Y.Y.L.L.L.L.L.L.L.L.L.L.U.L.L.J.K.L.L.Y.L.Y.U.I.U.T.U.U.T.T.T.T.T.~.T.~.T.~.~.~./.E.(./.(.(.(.(.(.(.(.`.`.|.|..X.X@X.XcX.XzX.XzXxXzXcXdXzXxXxXcXcXMXcXnXMXmXmXmXmXmXMXmXMXMXmXmXmXmXmXnXmXnXxXnXxXcXxXxXdXcXdX.XdX.XdX'. X.X.X.X X|.|.`.|._.|._.{.[.(.(.[.(././.~.", "C V C C C C C C C C C A C C C Z Z C C Z Z Z D Z Z H D Z D D Z G D D D D H D H H H H L H H H H H H H H H Z H J J H H H H L H J H L D L L D L L L H H L F J L P H J L J H L F H J J Z D K J J F H L J L L L H L H L H H H H H Z H H D H D D D D Z D D D Z Z Z Z Z C Z Z C C Z A Z B D N C Z Z Z Z Z D Z D Z [ S.P.L.S.H.S.H.H.H.H.H.G.S.A.A.Z.A.A.h.A.A.h.A.A.h.z.h.h.h.h.h.h.l.f.g.g.d.g.f.f.f.f.f.f.k.f.f.f.f.f.j.k.d.i.a.a.k.a.a.a.a.a.a.a.k.a.a.a.a.a.f.a.a.f.i.k.k.k.i.k.i.i.a.i.u.a.i.i.u.u.u.u.u.u.t.u.t.u.t.t.t.t.y.t.r.y.r.r.r.r.r.t.r.t.t.t.t.t.t.u.u.t.t.u.u.u.u.u.u.u.u.i.i.i.s.a.i.i.a.i.a.a.a.f.i.i.f.a.f.f.f.g.g.g.h.h.h.h.h.h.h.h.l.h.l.A.A.A.A.A.H.H.H.H.A.L.H.H.L.U.L.L.L.L.Y.L.P.L.P.U.U.U.U.T.T.T.T.T.T.T.T.T.T.T.~.T.~.~.~.~.(._./.(.(.^.(.(.(.(.(.|.|.^.^.|._._._. X_._. X_.{.}.}.}._.|.^.(.(.|.`.^.`.(._._.(.|.(.^.(.|.(.(.(.`.|.(.`.|.|._.`.(._.(.|.).{.(.(.(.{.(.`.`.^.|.(.{.|.|.`.(.`.^._._.(._._._._._.|.^.{._.`.`.(.`.(.(.(.(.(.~.~./.(.~.~.~.~.(././.~.T./.~.~.~.T./.T.~.~.T.T.~.T.~.~.~./.~.!.~./.~./././.(././.(.(./.^.(./././././.(.T././.~.~.^.~.T.Z.T _ / ! / ' { ].hXBXHXDXDXHXAXAXAXAXAXVXAXZXAXAXAXDXZXDXFXFXDXDXZXGXZXAXVXFXFXFXFXFXFXFXAXAXFXFXFXZXDXDXDXDXZXDXZXAXDXDXHXFXDXDXDXDXZXFXZXZXVXZXZXAXZXZXZXZXDXDXZXAXHXDXZXZXZXFXAXZXDXDXFXFXVXVXFXVXFXZXVXFXFXFXVXVXDXDXZXDXDXDXDXDXDXDXDXHXZXFXDXDXFXVXDXFXFXVXVXAXFXVXZXFXFXVXAXZXFXDXZXZXFXFXZXZXZXFXZXFXFXDXDXDXDXDXZXDXFXDXDXDXHXDXDXDXDXDXDXDXDXAXCXZXFXZXFXFXZXZXFXGXDXDXDXDXZXHXDXVXFXZXDXHXZXDXZXDXDXDXFXZXFXZXDXZXHXDXDXDXDXDXDXDXZXZXDXDXZXVXAXFXDXZXFXHXAXDXZXDXZXAXZXAXFXZXFXFXDXDXDXDXAXAXAXFXZXDXDXZXDXDXZXZXAXAXFXFXDXDXZXZXGXDXDXDXFXZXZXZXFXFXZXFXZXZXDXHXDXDXFXFXDXFXDXHXFXFXAXAXHXZXAXVXZXHXFXDXFXVXFXVXFXHXFXDXHXFXZXDXDXHXAXAXAXAXDXHXAXFXFXAXAXFXFXAXAXVXZXDXAXZXFXZXFXFXFXZXFXFXDXDXFXVXVXVXHXVXZXDXZXDXDXHXHXVXAXAXFXVXVXFXVXFXHXDXFXVXFXVXFXFXBXfXhXQ.[ } ~ Q ^ ( ' c.].xXcXmXxXcXnXnXcXnXnXxXcXcXxXxXxXzXzXzXdXdXzX.X.X.X.X.X.X.X|..X.X X X.X|.|.|..X.X|.|.|._.|.}._.[.{.`.(.(.^.(.(.(./.^.(./.(.(./.^.~./.~./.~.~./.~.T.~.T./.T.~.T.~.T.~.T.T.T.P.U.T.T.T.T.T.T.T.T.P.P.P.P.P.P.L.U.U.U.U.U.P.U.U.U.U.U.U.U.U.Y.P.P.P.P.U.U.L.Y.U.L.L.L.P.U.L.U.P.L.P.L.L.P.L.U.P.P.P.P.L.L.D.L.U.U.U.L.P.Y.P.T.P.P.U.L.U.L.U.U.U.U.L.K.L.L.K.L.K.U.I.L.L.Y.L.Y.L.U.L.U.L.Y.Y.T.U.Y.T.U.T.T.T.T.T.T.~.~.~.~.~./.^.^.~.^.(.{.(.(.(.`._.|.|..X.X.XdX.X`..X.XxXzXzXxXxXcXcXxXcXnXnXnXnXmXmXmXMXMXmXMXnXnXMXmXmXmXmXmXmXnXmXnXnXnXnXcXxXxXnXzXzXzXdXzX'.@XdX.X.X X|.|.|.`.`.|._._._._.(.(.(./.(././.", "C F A C Z C C C u C C C C C C C C C C Z C Z B Z Z Z Z D D Z H Z D D D H H H H D H H G L H H H H L L H H H H H H H J H H L J H L L L L L P J P D K J L J H H K U P J Z P L J J J J J L H H J L L L H H L H H J H H H H H H H H H H H D H D D Z Z D A Z Z C Z C Z Z Z C Z Z B D C Z Z G Z Z Z Z Z Z D Z S J e.A.D.H.L.S.S.H.H.S.H.H.A.S.S.A.G.A.A.A.H.A.A.A.h.S.A.h.h.h.h.h.h.l.l.k.g.k.g.f.k.k.f.k.f.f.f.k.f.f.f.d.k.i.k.z.a.a.a.a.a.a.a.a.a.a.f.a.a.g.a.a.f.a.f.f.f.k.a.f.i.i.f.i.a.a.a.i.i.a.u.u.u.t.u.u.u.t.t.t.t.y.t.t.t.t.r.r.r.r.r.r.t.t.t.t.t.t.t.t.t.u.t.t.u.u.u.t.u.u.i.i.u.u.i.i.s.t.z.a.a.a.a.a.a.f.k.f.a.a.f.f.g.g.g.l.h.h.h.z.z.h.h.A.A.l.l.A.A.G.G.H.H.H.H.S.L.H.L.S.L.L.L.U.L.U.U.P.P.U.Y.P.T.U.U.T.T.T.T.T.T.T.U.T.T.T.^.~.~.~.~././.(././.(.(.{.(.`.^.^.|._.}.}._._._._._. X_._.}.}.}.|._.|._.|._._.`.`.(.|.(._.(.^.`.(.^.|.|.|.{.|.^.|.^.|.(.{.`._.|._.|.^.|.(.(.`./.(.(.{.).{.{.(.^.(.{.^.`.{.(._._._._._._._.`._.|.(.|.(.`.`.`.(.{.(.(.~.^.~.~./.~.~.~.!.~.~./././.~.~.~.~.T.T.~.T.T.~.T.~.~.~.!.~.~.~.^./.~./././.~.(.(.(.(./.(.).(.(.(./././.(././.^.(./.^.(.^.Z.[ ) / P ~ S ~ ^ / ! ~ Q ^ ^ ^ ~ ! ! ! ! S ~ ~ ~ ~ ~ ~ ~ / ! ! ! S ^ ~ ~ ^ ~ ~ ! S ~ ~ ! ~ ~ ! ! ~ ! ! ! S S ! ! ! ~ ^ / ~ ! S ! S ~ ~ S ! S ~ ~ ~ ~ ! S ^ ! S ~ ! ~ ! ! ! / ! ! S ~ S ~ ~ Q ! ~ ~ ~ ~ ~ S ~ ! ! ~ ! ! ~ S Q S ~ ~ ! ~ Q Q ~ ~ S Q S ~ ~ ! ~ ~ S ~ ~ ~ ~ ~ ~ ! ! ~ S ! ! ~ ! ! ! ! ! ~ ~ ~ ~ ~ ~ ~ ! ! S ~ S ! S ~ ~ ~ ~ / ~ ~ ! ~ ~ S ! S ~ S ~ S S ! ! S S ! ! S ~ ~ ~ ~ ~ ~ ~ ! S ! ! S S ! ~ S ~ ~ ! ~ S ! ! S S ! ! ~ ! ~ ~ S S ~ ~ ~ ~ ~ S ! ~ ~ ~ S ~ ~ ~ ~ ~ S ~ ! ! S ! ~ ~ ~ ~ ~ ~ ~ ~ S ~ ! ! ! ~ ~ S / S S / S S S Q S ~ ! ~ ~ ~ ~ ~ ~ ~ ~ ! ! ~ ~ ~ ~ ~ S ~ ~ ~ S ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Q ! ~ ~ ~ S ~ ~ S ! ~ ~ ! ! S ! S Q ~ S S / ! S ~ ~ ~ ! ~ ! ~ ^ S ! ! S ^ ^ ! ~ S ! ~ ~ ~ ~ ~ ~ S ! ~ S ! ~ ~ ! ~ ~ ~ ! ~ / S ~ S ~ ~ ! ~ ! ! ~ ! S ~ ~ S ( Q ~ ' v.m.hXdXnXmXmXmXJXxXfXxXnXnXnXcXnXvXxXzXzXzXzXdXxX.XxX.XxXdX.XdX.X.X.X|..X.X|.|.|..X|..X.X|.|.|.|.}.}.}.(.(.(.(.`.(.(.(.[.^./.(./.(./././././.~./.(.~.~./.~.~.~.~.T.~.~.T.T.~.T.~.[.[.T.T.T.Y.P.Y.P.P.P.P.P.P.P.L.L.L.L.P.Y.L.P.U.L.U.U.U.U.U.U.I.P.P.L.L.U.L.U.L.U.U.P.P.P.P.U.L.L.L.L.P.P.U.U.U.P.P.P.P.L.U.L.L.P.L.L.U.T.P.P.P.U.Y.L.U.L.Y.Y.L.L.U.L.L.Y.L.L.L.L.L.U.L.R.L.L.R.Y.Y.L.U.U.T.U.L.P.U.T.U.P.T.T.T.T.~.T.~.T.!.~./.~.{.(.(.`.(.{.(.|.^.|.`.|..X.X.X.X.XxX'.zXzXzXxXzXxXcXcXxXnXxXnXmXnXnXMXMXMXmXmXnXMXMXmXNXMXmXmXmXmXnXnXnXnXxXnXcXnXdXdXzXzX@XdX.XzX.X.X.X.X'.|.|.|.|.|.|._._.|._.^.(.(.(./././.", "C C C C Z B C C F N F B C Z C C D C D C C Z Z Z Z Z D D D Z D Z D D H D D H H F F H H H H H F H L H H F P H H G H H H H L H H H L L L L L L L L L L L J K L L H L L H P L J J L J J J J J H H L L H L H L H H U L H H H H H F H L H D H D D D D Z F D B Z B D Z C Z C C D B C Z C B D D Z Z Z Z D Z F Z L b.A.L.H.L.H.H.H.H.H.G.H.H.S.A.G.A.A.A.A.A.G.l.A.A.G.g.A.l.h.g.h.h.l.k.l.k.k.g.k.k.g.z.f.k.f.k.k.f.f.i.i.i.f.f.i.i.a.z.a.a.a.a.a.a.a.i.a.a.a.a.f.f.f.a.f.i.f.i.d.a.d.i.a.a.i.a.u.u.a.u.i.u.u.u.t.u.t.u.t.t.t.t.t.t.r.t.r.r.r.t.t.t.t.t.t.t.t.t.u.t.t.s.t.u.u.u.u.u.u.u.i.u.i.u.i.s.i.i.a.i.a.i.a.a.a.a.a.a.a.f.f.g.g.g.h.h.h.l.l.l.h.h.l.l.A.h.A.A.A.H.H.S.U.H.U.L.L.L.L.L.L.P.U.L.Y.L.U.U.Y.P.P.P.T.U.U.T.U.U.T.U.T.U.T.T.T.[.T.~.~.~././.(././.(.(.(.(.`.|.(._.}.}._._._._._._._._. X|._. X|.|._._._._.(.`._.`.(.(._.(.(.(.`.^.`.|.^.(.(.{.(.`.|._.|.|.^.{._._.^.(.{.(.|.(.`.(./.(.`.(.^.(.(.(.(.(.(._._.(.(.{._._._.(.`.|.`.(.|.(.(.^.(.(.(././.^.~.~.~.!.~.~.~.!./././.~.~.~.T.~.~.T.~.T.~.~.~./.~./.~./.~.~.~.~.^./././.(./.{.(.(.(.(.(.(.(.(./.(././././././.(.(././.~.F.F._ / / / / S S ! ! ~ ! S S ! ! ! ! ! c ~ ~ ~ ~ ~ S / S ! ! ~ ^ ^ ~ S ^ S ! ! ! ^ S ~ ~ ^ ^ ^ ~ ! ! ! S ^ ~ ~ ! ~ ~ ~ S ! ! ~ ~ S S ! ! ~ ~ ~ ^ ~ ~ Q ^ ~ ~ ~ ! ! S S ! ~ ~ ~ ^ ! Q ! Q S ^ ^ S ! ~ ^ K ^ ~ ^ S Q ! ! ! S ^ ~ ~ ! ! ! S ~ ~ ( ( ! ! ~ ~ S ~ ~ ~ ! S S S ! S ! S ~ ! ~ ! ! S / ! ! ! ! / ~ ~ / ! ! ! ! ! ! ! ~ ^ ~ ~ Q Q ~ ! / ! ! / ! ! ! ! ! Q / ! ! ! ~ ~ ^ ! Q Q / ! ! ! ! Q ! ! ! ! Q ! / ! ! / ! ! ! ! / ! ! ! / ! ! ! ~ / ! Q / Q ! ! ! ! ! ! Q ! Q Q Q Q Q ! ! ! ! S / ! Q / ! ~ ! Q Q / ~ ~ / ! ! Q Q Q / ~ ~ ! Q Q ~ ~ Q Q Q / Q Q Q Q ! Q Q / ! ! / Q ! / ! ! ! Q Q / ~ ! ! ! ~ Q Q Q ! ! ~ ! ~ ! / / ! ! ! Q ~ ! / Q S Q Q / ! ! ! S / ! / Q ! ! ! ! ~ ~ ! ! / ! / / ! ! ! ! ~ ! ! ! ~ ~ ~ / ~ / ! / ~ / Q / / ~ / Q / Q Q Q Q ! ! / ! ! ! ! ^ ^ ^ ~ ~ ' { m.hXhXcXMXcXMXMXvXnXnXxXvXnXxXxXxXxXxXdXxXzXzXzXzXzXzX'..XdXdX.X.X.X.X.X X.X X|..X X.X X.X|.|.|._.|.}.}.}.^.|.^.(.(.(.^.(.).^.^.(././././.~./.~././.~.~.~./.~.~.~.~.~.~.~.~.T.~.T.P.[.T.T.U.P.P.P.P.P.P.L.P.P.L.L.I.L.L.L.L.U.U.L.U.U.I.L.U.U.U.T.L.U.L.U.L.L.U.L.L.L.P.L.L.L.L.L.L.L.L.L.P.L.U.L.P.P.L.P.L.L.L.L.L.L.L.L.P.P.L.P.L.L.Y.Y.L.L.U.U.R.L.L.L.K.L.L.U.H.L.U.I.L.L.L.U.U.U.P.T.P.P.L.T.L.P.T.U.Y.Y.T.~.T./.T./.~.^.~././.!./.(.^.(.(.`.`.`._.|.'.|..X.X.XzXzXdXzXzXxXzXxXxXxXcXmXxXnXnXnXmXNXmXmXMXmXmXmXmXmXmXmXmXmXnXMXnXnXnXnXxXnXcXcXxX@XdXzXzXzXzXdXzX'.@X.X.X|.|.`.|._._._._._._.(.(.(.(.(./././.", "C A C Z F C C D C B C C C C B C C C Z C Z Z Z Z Z D C Z Z Z Z D D D Z D H H H Z G K H H H H J H H U H J G H H J H H L H L H D L H L H J L L H L H H J J U J L U P L P H L L J J L J J H J J J H L L L L H P H L H L L H H H H H Z D H Z Z D D Z Z Z Z Z F Z Z Z Z C C Z C Z Z Z Z D Z Z D B Z Z D D D Z Z e.U.U.H.L.H.H.H.H.H.H.S.h.J.H.A.G.A.G.A.G.g.G.A.j.A.A.l.h.h.z.h.k.z.l.g.g.g.k.k.k.k.k.k.k.k.f.f.f.f.k.z.i.k.f.a.a.a.a.a.a.a.a.a.a.a.a.a.a.f.i.f.a.f.f.f.f.i.k.i.a.a.a.a.i.a.i.a.a.a.u.u.u.u.u.u.t.t.t.y.t.t.y.r.y.t.r.y.s.r.y.t.t.t.t.t.t.t.t.t.u.u.t.u.u.u.t.u.u.u.u.t.i.u.i.u.s.i.i.i.a.a.a.a.i.a.a.a.f.f.k.a.g.g.z.h.k.h.h.h.z.l.l.A.l.h.A.A.G.A.H.H.H.H.H.S.L.L.Z.L.D.U.L.Y.L.U.U.U.P.L.P.T.P.T.L.T.U.U.T.U.T.U.T.U.T.T.T.~.T.~.~././.!.(./.(.(.(.(.^._.|.}._._.}._. X_._. X_._._._._.|._. X_.|._.|.`._._.`.(.|.^.(.(.(.(.(.^.(.|.`.(.(.`.(._.{.(.`.|._._.|.^._.(.^./.(.(.{.|.(.(.|.(.`.(.`.^.(.`.(.(._._.|._._._._.`.^.`._.(.`.(.^.|.{.(.^.(.~.^.~.~.~.~.~.~.~.~././.~./.~.~.~.~.~.~.~.T.~./.~./././././././.(.~././.(./.(.(.^.(.`.(.^.`.(.(.(./.(.(.(./.(././.(.(.^.(.~.Y.Z.Z.e.T L J K S S Q ^ K F ~ / ! ! ! ) ! ! ^ S ~ ~ u Y ~ ~ ^ ~ ^ ~ S S Q ! ! ~ G G ~ ^ ^ ~ ~ K ! ! ! ! ^ K ^ ~ ~ ~ ~ K ! ! ! ! Z c ! ! ! ! ^ J ^ ~ ^ A ! ! ^ S Q Q Q ! Q Q ~ ~ ~ Q ! ! L F ~ ~ ! ~ ~ L ^ ~ ~ K Q ~ ! ~ S Y ^ / ! ! ! S ! ~ ^ u ! ! Q ! ^ S ~ ~ S ! / c ! ! ! S ! ! Q Q Z c / ! ! ! ~ S ~ ~ / S ! ! ( / ! ! S ~ ~ ~ ( ( ~ S ! ! / c ! ! ! ! ! / ~ ! ! ~ ~ / ~ ! ! Q ! ! ! Q Q ! ! ! ! Q ! ! / S Q Q / / ! ! S S ! ! S S Q Q ! / ! ! ! ! ! / ! ! ! ^ ! ~ Q ^ ~ u ! ~ S Q ! S S ! Q S ! P ^ S ! Q ~ S ! ! ! ! ! ^ / ! ! ! ^ Q Q Q Q S Q u S Q ! Q ^ S ! S ^ S ! Q ! S ! S ! ~ Q u ! ! ~ ! ! ! ~ ~ ! S ~ K ! ~ Q ^ c ) ! Q ^ ^ ^ Q Q ' Q Q ! ! ! n ! S ! Q S K ! ! ! ~ ~ J ! ! ! ~ ! S ! ! ~ ~ S ! S ^ Q ~ ~ S ~ ! S ~ ! ! u S ~ Q ! ! ^ ^ ! ! ! ! ! ! c Q S n ' ' v.m.].hXcXJXMXMXMXcXnXnXnXnXcXcXnXxXxXxXxXcXcXdXzXzX@XzX.XzX.X.XdX%X.XdX.X.X.X.X|..X.X.X.X|..X|..X|.|.|.}.}.}.}._.^.`.(.(.{././.^.(.(./.(./.(./.(././.~./.~.~./.~./.~././.T.T.~.T.~.T.T.Y.P.T.T.Y.P.P.P.U.Y.P.P.P.L.L.L.L.L.U.L.L.L.L.U.L.L.L.K.L.U.U.I.L.U.L.U.L.L.L.L.L.L.L.L.L.H.L.H.L.L.L.L.P.P.U.L.P.P.L.L.L.L.L.L.H.L.L.L.P.P.L.U.L.U.U.L.L.Y.L.L.L.Y.L.L.J.U.L.L.K.U.L.L.L.L.U.U.U.Y.P.P.T.T.U.U.U.Y.Y.Y.U.T.T.T.^.T./.T.T.^.^././.[.^.(.(.(.(.`.(.`.|._..X.X.X.XzX.X.XzXzXzXzXzXxXxXxXxXnXnXnXnXmXmXmXmXMXMXMXMXMXmXmXmXmXmXJXnXnXnXnXnXxXxXxXnXvXdXdXxXcXzX.X.X.XdX XdX.X.X|.'.|._.|._._._._.(.`.`.(.(.{.^././.", "C C Z C C C C C G C D C C C Z Z C Z C C D C C Z C Z Z Z Z Z D Z D D D D D H K D H H H D H H H H Z Z L P L H G H H H L L D L L L H J L H L P J L H H F J H J P K K Y H P L H J H L J H J H H H P L L H H L L L H H H J H H H H D H Z D Z D Z D Z Z Z Z Z Z D B D Z Z Z Z Z Z Z D C D Z Z Z G Z Z D C G Z Z j.L.H.G.L.G.H.H.D.H.H.H.H.H.A.S.Z.H.A.G.A.A.Z.A.A.A.h.A.h.h.h.h.h.g.z.z.g.h.k.g.l.l.k.k.k.k.f.k.g.d.d.k.f.i.i.a.a.a.a.a.a.a.a.a.a.a.a.f.a.i.g.a.f.a.f.i.k.k.i.a.a.a.i.i.a.i.i.u.a.x.u.a.u.u.u.u.t.t.t.r.y.r.t.t.y.t.r.t.r.s.s.t.s.r.r.s.t.t.t.s.u.t.t.u.t.u.u.u.u.u.u.i.u.i.i.i.i.i.i.i.a.a.a.a.a.a.k.a.a.z.a.g.z.g.z.h.h.h.h.l.l.l.l.h.h.G.A.A.A.H.S.H.H.S.L.L.S.D.U.L.P.P.L.K.J.L.Y.L.Y.U.L.P.P.L.P.T.U.U.U.T.T.T.U.T.T.T.T.T.T.[.~.T.~./.~.(.(.(.(.(.|.^.)._._._._._._.}.}.}.}. X_.`.`.|.|._.|.'._._._._._.(.(.`.^.(.(.(.(.(.(.(.(.(.(.(.(.|.{.`._._._.|.`.|.|.(.(.(.|.(.(.`.(.{.^.(.(.`.(.{.(.(.(.^.`.^.`.`.(._.|.^.(.`.|.|.|._.`.(.(.|././././.E./.~.~.!.~.~.~.~./.~./.T.[.T.~.~.T.~.~.~.~.~./.~./.(././././././.(.{./.{.(.(.(.(.`._.^.^.(.(.(.(.(.(.(.^.(.(.(.`.(.`.^.^.!.!.U.H.Z.e.e.Y F V A u q u q q q u q q u q q q u e u e y u q q u q w u q q q u q w q q u q q t q u u u q q u u u q u % u u u u u u u u u u u q u u u u u u u u u u i S u u K q i q u q u q w q q q q q q u q q u u u e u 0 u u q u u u u u u q u u u u u 0 u u u u u q u u u u u u u u u u i u u u i u u u i i u i u i u u u u u i u u K u u i u i u i u i i K K i u i i K K i u c i K i K i c u i K i u i K i u i i i c i K i u i c u c K i u J c c i c i c ' c i c S c i ^ ' c ' c ' c c ' c c ) ^ c ' ^ c ' ' c ' n c I c ) ' c c ' ' c ' c c ' c ' ' ^ c ' ' c c ' ^ K c ) ' c c ' ' c ' ' ) c ' c ' c c ' ' c ' c c ' ' c ' c c ' c ' ' c ' c c ' ' c ' ' c ' ' c ' c ] c ' c c c c.c c ' c ' ' ' c ' ' c ' c c ' ' c ' c c ' c ' ' c c ] c ' ' ' c ' c ' ' c c ' ' [ M.m.'.hXhXmXMXMXMXMXMXmXmXnXxXMXnXcXJXxXxXzXdXcXzXcXzXzXdXdXzX.X.XzX XdX.X.X.X.X X.X.X.X.X.X.X.X|..X'..X|.|.|.}.}.}.(.^.(.(.{././.(.(./.).^./.(././.~./.~./././.T./.~./.[.~.T././.T.~.T.T.~.[.T.T.T.U.P.P.P.Z.P.L.P.A.L.L.L.L.L.H.L.L.L.L.U.L.L.L.Y.L.L.L.U.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.H.L.L.L.L.L.A.P.L.L.L.L.L.A.L.D.P.L.L.H.L.D.L.L.L.Y.L.U.L.L.Y.U.U.Y.K.L.L.L.L.U.L.L.L.L.U.Y.K.U.U.Y.Y.U.T.U.L.U.L.U.P.T.U.T.T.T.T.~.T.~.T.E.!././.(./.(.(.(.^._._.|._.|.|.|..X.XzX.X.XzXzXzXzXzXxXzXxXxXxXxXnXnXnXmXmXmXmXMXMXMXMXmXmXmXnXmXnXMXnXnXnXnXxXnXxXxXxXxXxXcXcXzXzXzX.XzX.X'.'..X.X.X|.|._._._.^._.`.`.`.^.(.(.(.(././.", "C F C C C Z Z C C C C C Z C C C C C C Z B Z Z D C Z C H Z Z Z G Z D D Z H H H H G H H H U H D Z J L L G J J H J H J L D H L L H H L H D L H L L K L L J H J H P H Z P K H U K L L L L J H H H D J L H P L H H P H H L H H H H H Z H H Z Z F Z D Z D Z Z Z B Z D Z Z Z B Z Z Z C G D C Z Z Z Z C D D D Z D b.G.A.H.S.G.H.H.L.H.L.H.Z.S.A.H.H.G.G.S.G.G.A.G.A.A.A.A.l.A.l.h.g.z.g.l.g.h.k.h.k.k.k.k.k.f.k.k.f.g.j.g.i.i.k.a.a.a.a.a.i.a.a.a.a.a.a.a.a.k.a.k.f.f.f.f.f.k.k.a.d.a.d.a.a.i.i.a.a.u.i.u.a.u.u.t.u.t.t.t.t.t.t.t.t.t.t.t.r.y.w.t.t.r.s.r.t.t.s.t.t.u.u.t.u.u.u.u.u.u.u.u.u.t.i.u.i.a.i.i.i.a.a.a.a.a.a.k.k.a.g.a.g.g.g.j.h.f.h.l.l.l.l.l.l.l.A.h.J.H.G.H.H.H.L.L.H.L.L.P.L.L.L.U.L.L.L.U.L.T.U.T.P.P.P.U.U.T.T.U.U.U.T.T.T.T.T.T.~.T.~./.(./.(.~.^.(.(.(.{.(.|._._._._._. X}.}.}.}. X}.`.`.`.|.|.|.|._._._._._.`.|.(.`.`.^.^.(.(.(.(.(.(.(.`.^.^.|.|._.|.^.{._._.).^.|.(.(.|.`.^.(.|./.|.(.(.^.`.(.`.(._._._.^.|._._._.|.|._.(.`.(.^.|.`.(.{./.(.[./././.~.~.~.~./.!.~.~./.~./.~.[.T.~.~.~.~.~./.~././.(./.^./././.(.(././.(.(.(.(.(.(.(.`.`.^.(.(.(.(.(.(.(.(.(.(.(.(.^.^.`.(.^.[.~.T.].L.Z.e.e.T G G G G G G G D G G G G G G G G G G G G G G G G R C G G G B G G G G G G G G G G U D Y G G U G Y T G G U U H G Y F L L U F Y U H Y Y Y Y G Y U Y Y Y U ` ` Y Y G G G G B T G G G V G G G G G C G G G G G C G Y L U U G G G Y G Y U Z Y G D Y L G Y Y U L Y L Y Y Y Y U [ Y Y ` ` ` Y Y ` Y [ ` Y [ Y ` Y c.) Y Y ` Y Y ` Y Y e.Y [ Y [ _ ` T ` [ _ ` ` U [ ` U [ [ [ _ T [ ` b.[ c.` c.` [ c.` c.[ [ ` [ c.[ c.[ b.[ ` [ c.[ c.[ c.[ [ [ b.c.c.[ m.c.c.[ M.c.c.c.c.c.M.[ c.[ M.c.M.c.c.M.c.c.c.M.c.` M.c.c.M.c.c.M.c.[ M.c.M.c.c.m.c.c.M.c.c.c.m.c.c.M.M.c.M.c.m.c.M.c.M.M.c.M.m.M.M.c.m.M.M.m.M.M.m.M.M.m.M.m.M.m.M.M.m.M.M.M.m.m.M.m.M.M.c.M.m.M.M.M.m.M.m.M.M.M.M.M.M.M.M.m.M.m.m.m.m.M.M.M.m.` m.c.M.c.M.c.M.c.M.M.[ m.M.c.M.c.M.c.M.c.M.c.M.b.m.m.].hXhXJXJXJXMXMXMXMXMXMXmXcXnXxXxXxXJXxXxXxXcXcXzXdXcXzXzXdXdXxX.XzX.X.X X.X.X.X.X X.X.X|..X.X.X.X.X'..X|. X.X X|.}.}.|.^.(.(.(./.(.(./.^.^.{.(./.(./.^./././.^.~./.~.~.~.[./././.~./.T.^.~.~.Y.Y.T.U.P.P.P.P.Y.P.L.D.P.L.D.L.H.H.L.H.L.L.L.L.L.L.L.L.U.U.L.L.L.L.L.L.U.D.H.L.H.H.H.D.L.H.H.L.D.U.S.P.L.L.P.L.L.L.L.L.L.L.L.A.H.H.L.S.U.L.L.U.L.L.L.P.J.K.L.L.P.J.K.L.L.L.U.L.U.L.L.L.L.U.U.U.Y.~.Y.T.T.U.L.U.L.P.Y.U.Y.T.T.T.~.~.~././.[././.(.(.(.(.(.`.^.|.(.`.|.|..X.X'.zX.XzX.XzXzXzXxXxXxXxXxXxXnXnXnXMXmXmXMXMXMXMXmXMXMXmXmXMXmXMXnXnXnXnXnXnXxXxXvXvXxXxXxXdXzXzXzX'..XdX.XdX.X|..X|.|.|.|._.`.`.(.^.`.(.(.(.(.(.^.(.", "C Z C C Z D C Z C C C C Z C Z B D Z B Z C Z Z B D Z Z Z Z C D D Z Z D D H D H Z H H H H H H H H H H H F H H H H H H H H F J H H L H H L L H L J J H P H H H H L J H L H L L L H L J P P L L L L L L Z H L L H L L I H H L P L D H J Z Z Z Z Z D D D D D Z Z Z Z C Z C Z Z Z Z H Z Z Z Z D D Z D Z H Z H G b.S.L.L.S.H.H.G.L.S.L.H.A.H.H.G.G.H.D.G.S.A.G.z.h.A.h.h.A.h.h.h.h.j.h.h.g.h.h.g.l.z.k.g.g.g.a.f.k.z.k.a.k.a.a.a.a.a.s.a.i.a.a.a.a.f.a.a.a.a.g.f.f.g.f.a.k.a.a.k.a.a.i.a.i.a.i.a.u.a.i.i.s.u.u.i.t.t.t.t.t.t.t.t.t.t.t.t.t.u.t.t.u.t.t.t.u.u.t.u.t.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.i.t.i.a.i.a.a.a.a.k.a.a.g.f.a.z.a.g.g.k.h.k.l.l.h.A.A.h.l.S.S.G.H.D.H.H.L.S.H.L.L.L.D.L.L.U.L.U.L.L.U.U.L.U.U.L.U.Y.T.U.Y.U.I.U.T.U.T.T.~.T.T./.T./.^.~.^.T.~.(.(.(.(.(._._.}.[._._._.|.}.|. X}.}.}.}.}.}.}.}.}.}.}.}.}._._.`.{.(.(.(.(.(.`.(.(.!.(.^.{.(._.}.}.}.}._._.|._.(._._._.^.(.^.`.^.|.(.{.(.(.(.(.`.^.(.(.`.(.`.`._._._._.|._._._.(.`.(.^._.^.`.(./.(././.~.~.~.!.~.!.~.~././.~./.~./.~./.~.(.~.T.{.!./././.(.(.(./.(.(.[.(.(.(.(._.{.[.}._._._.(.|.^.^.|.(.(.(.(.(.(.(.^.(.(._._.(._.(._.(.^.`.(.(.^././././././.~.[.^.(.(.(.|.|._._._._.`.(.(.^.`.(.`.(.(.(.).)./.T./.T./.~.T.~.T.T.T.T.T.I.L.L.H.H.A.A.A.A.S.A.S.G.A.A.A.H.A.I.L.L.L.L.L.L.L.L.Z.L.A.F.U.H.H.H.H.H.H.H.L.H.H.H.H.H.H.H.H.H.H.S.G.L.L.G.L.G.G.L.S.L.L.S.U.L.L.U.P.Y.P.T.P.T.T.T.T.T.T.T.T.T.T.T.T.T.~.T.~.Y.~.~.~.~.~.~.~.~.~.~.~.~.~.[.(.~././././././.^.(.~.(./.(.(.(.(.(._.(._.`._._._.|._.(.|.[._._._. X X|. X X|..X'.@X.X.X.XzXzXzXdXdXcX.XvXdXdXdXcXdXzXcXcXvXnXnXxXcXnXnXxXnXxXxXnXxXcXxXcXnXxXcXnXxXnXxXcXxXxXxXcXnXxXxX@XxXxXdXdXdXmXdXdXdXdXcXcXcXcXcXdXcXdXmXnXnXxXxXxXnXnXxXcXxXnXnXnXnXMXnXcXMXmXnXnXnXcXcXnXcXnXnXcXnXmXnXnXnXnXxXnXcXnXnXNXnXnXmXnXnXxXnXmXmXmXmXmXmXnXmXmXcXcXmXmXnXnXmXnXnXmXmXmXnXmXmXxXcXnXmXMXmXMXMXMXMXMXMXMXMXMXmXMXmXMXmXMXMXSXmXSXmXmXSXmXmXmXMXmXMXmXMXmXSXMXMXMXmXMXmXmXnXmXmXMXcXcXcXxXxXxXdXxXdXcXdXxXzX@XdXzXzX.XzX'..X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X X.X|.|._.`._._.`.(./.(./.(.(./.{.(.{.(.(./.(././.!././././.~././.~./.~.~.~.~.~.T.T.T.T.T.T.U.U.L.L.S.L.P.Z.D.L.L.G.H.U.L.G.L.H.U.L.L.L.L.L.L.L.L.D.U.L.L.S.U.L.L.L.H.K.G.L.G.L.L.L.L.H.L.G.G.L.L.L.L.L.S.Y.Z.L.L.H.H.K.H.H.U.S.U.S.U.L.L.L.L.U.L.L.U.L.L.L.L.P.P.P.L.L.L.U.L.T.U.T.T.T.T.T.Y.P.P.P.U.U.U.T.T.T.~.T.T.~.~.~./././.~./.^.(._.(._._._.|.|.|.|..X.X.X.XdXdXcXdX.XzXzXxXxXxXnXnXcXcXcXnXmXmXmXmXmXmXmXmXmXmXmXmXmXnXcXmXnXnXxXxXxXxXxXxXxX@XxXzXzXzXzXzX.X'..X.X'..X|.|.{._.{.|.^.{.`.(.(.`.^.(.(.(./.(.", "Z C Z Z C B C C Z Z Z Z G B D Z C Z C Z Z C Z Z C Z F D Z G D D F Z D D D D D H H H H H H H H H H H H H H H H H H H H H H G H H D H H L H H H H J J D K P H H J J P K U P K L L P L P H L L L L Z J J L L L L L H U Z H Z Z Z D Z Z H Z D D Z D Z D D D Z Z Z Z Z H Z Z Z G Z Z G Z Z G H Z D Z Z Z Z H T Z.L.H.S.L.G.L.L.L.A.S.H.H.G.A.D.H.S.S.G.S.S.S.S.G.A.A.A.A.A.h.A.h.h.h.h.h.h.h.l.l.g.k.g.z.g.g.k.z.a.a.f.a.a.a.a.a.a.a.i.a.a.i.a.a.a.a.f.k.a.a.f.f.g.a.z.a.k.a.a.a.a.a.i.i.i.i.u.a.u.a.u.i.u.u.u.a.t.u.t.t.t.t.t.t.t.t.t.t.t.t.u.t.u.t.u.t.t.u.t.u.u.u.u.u.u.u.u.u.u.u.s.u.i.u.i.i.i.a.i.i.a.a.a.i.a.k.a.g.f.f.g.z.z.g.h.h.h.h.h.h.h.h.l.A.l.l.Z.H.D.A.G.H.S.U.L.L.L.L.P.P.L.L.U.L.P.P.L.Y.U.U.U.Y.Y.U.U.U.I.Y.T.U.Y.T.T.I.T.T.T.T.~.T.~.~././.(.[.(.(.(._.(.|.}.}._.|._._.}.}.|.}.|.}.}.}. X}.}.}.|._.}.}._._.`.`.`.(.`.(.(.!.!.(.`.^.(.(.(._.{.}.}.}._.|.|._._.|.{._._.(.^.`.(.(.`.(.^.`.`.(.(.(.(.(.(.(.`.(._._._._._._._._.|.`.[.`.(.`.^.(.(././.!.~.~.~.~.~.~.~././.~.[.!.~./.[.!.~.~.(.(.^.^.(./.(./.~.(.(.(.(.(.(.(.(.(.^._._.}.|._.|.|.{.|.|._.`.(.^.`.(.^.`.`.(._.(._._._.(._.`.`.^.(.(.(.(.(.(.!././.(.(.^.^.(.(.{._.|._.|._.|._.|.`.`.(.(.^.(.(./.~./././.~./.T.~.~.~.T.T.T.T.L.L.L.H.H.H.H.G.A.A.h.A.A.S.H.A.A.H.G.S.L.L.L.K.L.L.L.P.P.P.L.I.H.H.L.H.H.K.H.H.L.L.H.H.H.H.L.H.L.H.K.H.G.G.L.L.L.S.L.L.S.L.L.J.L.L.I.P.T.T.T.Y.T.T.T.T.T.T.T.T.T.Y.T.T.T.T.~.T.~.~.T.T.~.~.~.~./.~.~.!.~.~./.(.~.~./././.(./.^.(.{.(.(.(.(.(.|.(._._._.|._._._.|.|._.|.|. X_.'._.|.'. X.X.X X X'..X.X.X.X.X.X@X.XdXdXdXfXdXdXcXxXxXcXxXxXnXnXxXnXvXnXnXxXvXxXnXcXcXnXcXxXnXxXxXnXxXxXcXxXxXcXnXcXxXxXdXxXdXnXmXdXdXcXcXmXdXcXdXcXcXcXcXcXcXcXxXxXnXnXnXnXnXnXMXcXmXnXmXmXmXMXmXmXcXmXmXnXmXmXmXnXnXmXMXmXmXmXmXnXMXJXmXMXmXnXMXnXnXMXmXJXmXmXmXmXmXmXmXcXmXnXmXmXmXmXnXnXnXnXmXnXnXnXnXmXnXmXmXMXMXMXMXMXMXMXMXMXMXMXmXMXmXmXmXmXmXMXMXMXMXMXMXMXMXMXMXMXSXMXmXmXmXmXmXMXMXMXMXNXmXmXmXnXJXnXmXcXcXcXnXxXdXcXnXdXdXzXdXzXdX.X.XzXzX.X@X.X.X.X.X.X.X.X'..X.X.X.X.X.X.X.X|..X|.|.|._.{._._.(.(.(././././.(.(./.(././.(./././././.[./.~./.~.~./.~.~.~.~.T.~.T.~.T.T.T.U.U.U.L.L.L.D.P.L.H.L.G.L.S.H.G.L.H.H.G.L.G.L.L.L.L.L.L.L.S.L.L.L.U.S.S.U.U.G.L.A.H.L.H.G.L.D.L.L.L.L.L.L.H.H.H.L.H.L.S.L.H.H.H.H.S.L.L.L.L.L.L.U.U.L.U.L.L.L.U.L.P.L.P.P.L.L.L.L.Y.L.U.T.P.T.T.T.T.Y.P.P.T.U.U.U.T.T.T.T.T.~.T.~.(.^./.(.(.(.(.(._._.`._._.|.|..X.X.X.X.XdXdXxXdXxXzXzXzXdXxXxXcXnXmXmXJXcXmXmXmXmXmXmXmXNXmXmXmXmXmXmXnXnXnXnXxXcXxXxXxXcXdXxXzXzXzXzXdXzX.XzX.X.X.X.X|._.|._.|._.(.|.{.`.(.(.^.(.^.(./.", "C Z C Z C Z Z C Z Z Z Z B C Z D Z D Z D F Z B Z Z Z Z C B G C G D D D D D D H D H H H Z Z H Z H F J H H H H H H H F H F H H H H H H H L H L P P H J H H J Z L J J H L D H J J H P J P H L L L L J J J L H J L J P H H L L H D H Z L Z H H Z Z Z D Z Z Z Z Z D D Z C H Z Z G Z Z Z Z Z H Z Z D D Z Z Z Z G Z.L.S.L.L.L.G.D.D.S.H.H.H.G.G.S.S.S.S.S.G.S.S.G.A.A.A.A.A.h.h.h.h.h.h.h.z.h.h.z.h.h.z.g.g.h.g.f.f.f.z.z.a.z.a.a.a.a.a.a.a.a.a.a.a.a.f.f.f.a.f.a.z.f.f.a.k.k.a.a.k.a.u.i.i.i.i.i.i.i.a.i.s.u.u.u.u.u.t.t.t.t.t.t.t.t.t.u.E t.u.t.t.t.u.t.u.u.t.u.u.u.u.u.u.u.u.u.u.t.u.u.u.u.u.u.i.i.i.a.i.a.a.a.g.i.a.i.f.d.a.k.a.f.k.k.h.l.h.h.l.h.h.l.S.h.S.A.S.D.L.S.H.L.A.S.L.L.P.P.P.P.P.U.L.P.P.K.J.L.L.L.U.Y.Y.T.I.U.T.T.I.U.U.T.T.T.T.T.~.~.~.~././.(.(.(.(.(.^.^.|._.}.}.|._.|. X}. X X}.}.}.}.}.}.}.}._._.|._.|._.|.|.(.(.`.(.(.(.(._.(.(.(.(.(.^.|.^.|._.}.}.}.|._._.(.`.^.(.^.^.^.(.(.^.(.(.(.`.(.(.(.(.`.(.`.^.`._._._._._.|._._.`.(.^.(._.(.^.(.(./.(.~././.~.~.[.~./.~./.~./.~.~./.~.~./.[././.^.(./.(.{.~.(.(.^.(.(.(.(.{.`.`.|._.}.}.|._._._.`._.|._.`.(.`.(.|.|.^.|.`._._.(.(.(.|.(.`.^._.(.`.(.(.(.(.(.(.^.(.(.{.|._.|.|.|._.|.'._.|.|.|.`.`.`.^.`.(.(.(.~././././.~.~.~.T.~.T.~.I.T.L.L.L.L.H.A.A.S.A.S.A.S.h.H.S.H.A.S.S.S.H.L.L.K.L.L.P.P.L.L.L.L.L.L.Y.L.L.L.S.L.H.L.S.L.S.L.H.H.H.S.G.L.H.L.H.P.A.L.L.L.L.L.L.U.U.U.U.Y.T.Y.T.T.T.T.T.Y.T.T.~.T.T.T.T.~.T.~.T.~.T.T.T.T./.~.~.~.~.~./.[.!.~.~.T.~./././.[.(.[././.~.(.(.^.(.(.(.(.`._.}.|._.|.|.|. X'.'..X.X'..X X'..X X X.X.XdXdX'.zXzXzXzXzXdXdX.XcXdXdXcXdXzXzXxXxXnXnXnXxXvXnXvXnXnXvXnXnXcXnXcXcXnXnXxXnXxXnXnXxXxXzXxXxXxXxXxXxXxXxXxXxXcXdXnXdXdXcXvXdXcXcXcXdXcXcXcXcXnXnXnXnXnXnXnXnXxXcXmXmXcXmXmXmXmXmXmXfXmXcXmXcXcXnXcXnXnXmXcXmXmXmXnXMXmXMXnXmXMXmXmXvXmXmXmXmXmXmXnXmXmXcXmXmXnXcXmXcXmXmXmXnXnXnXmXcXnXnXmXmXnXmXmXMXMXmXMXMXMXMXMXMXNXMXMXmXMXmXMXmXmXMXMXMXmXMXMXMXmXMXmXmXmXmXmXmXmXmXnXMXMXmXmXmXmXmXcXmXnXnXnXcXxXnXxXcXfXvXzXzXdXxXdXdX.X.X.X.XxX.X.X.X'..X.X.X.XdX'..X.X.X.X'..X|..X|.`.|.`.|._._.(.(./.(.(././.(.(./.{.(././.(./././.~.~.~.[.~./.~.~.~.~.T.~.~.T.~.T.T.T.Y.U.P.P.L.P.L.L.L.S.H.L.H.H.H.H.G.S.H.S.H.H.L.L.L.L.H.P.L.L.U.L.L.L.S.H.H.S.H.H.D.L.L.D.H.H.D.G.H.L.H.G.H.H.H.H.H.U.D.H.H.H.H.H.S.U.H.U.L.H.L.L.L.L.U.L.L.U.L.U.L.P.L.P.A.P.L.P.U.U.Y.U.T.U.Y.Y.T.U.T.T.T.U.U.U.U.T.T.~.T.~.~.~.~.~.~.~././.(./.(.(.(.{._._.|.{.|.|..X.X.XdXdXdXdX@XzXzXzXzXzXxXxXcXcXnXnXmXmXnXmXmXmXmXJXcXmXmXmXmXnXnXnXnXnXcXfXcXnXxXxXxXxXxXxXxXxXzXzXdXzX.X.X.X`.|.|.|.|.{.|.{.|.^.^.^._.(._.(.(.(.(.(.", "Z Z D Z Z C C Z B Z Z D Z C Z B C B Z Z Z Z Z Z Z Z Z Z Z Z Z Z D Z D D D D Z Z Z Z H H H H L H H D H H H H F H H H H H H H H H H H L H H H H H J H H J L J J H J J L U U L H J J J U H L S L L L L L Z L L L L U H H H H L L H Z Z H Z Z Z D D Z D G B Z Z D D Z Z Z Z Z Z Z L Z G H Z D D D Z Z H Z G G b.S.H.L.S.G.H.L.H.H.H.S.H.A.H.G.S.S.G.H.S.S.S.A.A.A.A.A.h.h.Z.A.h.A.h.A.A.h.h.l.l.l.l.h.h.z.a.f.x.f.f.a.a.a.a.a.a.a.a.a.a.a.a.f.a.a.a.f.f.f.z.g.f.f.f.k.k.a.k.k.u.a.a.i.a.i.i.u.i.i.u.u.u.i.u.u.u.u.t.t.t.t.t.t.t.t.t.u.u.t.u.t.u.u.t.u.t.u.t.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.i.s.i.a.i.i.a.a.a.z.a.a.f.g.i.f.k.k.k.k.k.l.h.h.h.h.l.l.h.A.S.S.A.H.S.S.U.U.L.L.L.P.P.P.L.P.U.D.P.P.Y.L.L.L.Y.L.L.U.U.I.I.U.I.T.I.T.Y.T.T.T.T.T.T.~.~.~.(.~.(.(.(.(.(.[.|.(.|._.|.|._.|.}.}.|._.}. X}._.}.}._._._._.(.(._.(.(.`.(.(.(.(.(.(.(.(.(.(.(.^.^.^.|._.|._.|.}.|.(._._._._.(.|.`.{.|.(.(.(.(.(.(.(.(.(.(.(.^.^.(.^._._.(.(._.^._._.(.(.`.(._.(.(.(././././.~.~.^.~.!.~.~.~.~././.~./.~././././././.(./.(./.(.(.(.(.`.(.(.^.^._.^.^._.|.}.}.|.|.|._.|._._.{._.`.`. X_.{.|._._._._._.|.|.(._.(._.(.(.(.(.(.(.(.(.(.`._._.(._.}.}.|.|.'.'.`.`.|.'.|.|.|._.|._.)._.(.(./.~././.~.~.T.~.~.~.T.T.Y.U.L.H.H.H.H.A.S.A.S.A.H.A.h.A.G.H.Z.S.S.S.Z.U.Z.Y.K.L.Y.L.L.K.U.J.K.H.L.L.L.L.L.L.L.L.L.U.H.L.L.S.U.L.L.L.L.H.L.L.L.L.L.L.L.U.U.T.U.U.P.P.T.P.T.T.T.T.~.T.T.T.T.Y.~.T.~.T.~.~.~.~.~.^.~.~.!./.[.!.~.~.~.~.~.~.(.[.~././.(.(.(.(.^.(.^.(.!.(.(.(.(.`.(.}._.|. X|..X.X.X.X.X.X@X.XzX.XdXdXxXdX.XdXdXzXdXcXzXzXnXfXdXcXdXvXcXdXcXxXxXxXcXxXxXxXnXnXnXnXnXnXcXnXnXnXnXcXcXnXnXnXxXcXxXxXxXxXzXxXxXxXxXxXxXxXxXxXxXdXcXcXcXcXcXcXcXcXcXvXcXnXcXnXcXnXnXvXmXnXmXmXmXmXmXnXnXmXmXnXmXcXmXmXmXcXmXcXmXnXnXnXnXnXcXmXcXnXMXnXnXnXnXnXmXnXmXmXmXmXmXmXMXmXmXmXmXmXmXmXmXmXmXmXmXcXcXmXmXmXmXnXmXnXmXnXmXmXmXmXMXMXNXMXMXMXMXMXMXMXMXMXnXmXmXMXmXmXMXMXMXmXMXMXMXmXmXmXmXmXMXnXmXmXmXnXJXmXmXmXmXmXcXmXnXnXnXxXxXxXxXxXdXdXcXzXzXdXdXdXdXxXzX.X.X X.XdX.X.X.XzX.X.X.X.XdX.X.X.X.X.X.X.X|.'.`.`._._._.^./.(.(./.(.(./.(.(.(./.(./././.~./.~./.~.(.~.~./.~.~.T.~.T.~.T.T.T.T.Y.U.Y.P.P.P.L.S.L.S.U.S.H.L.H.H.H.H.H.H.H.H.H.G.G.D.D.H.A.L.L.S.L.Z.S.L.S.H.H.H.H.G.H.H.H.H.H.S.L.L.H.H.H.S.K.H.H.H.H.H.H.H.G.K.H.H.S.Z.L.H.L.L.L.S.U.L.L.U.L.P.L.P.L.P.L.P.P.P.L.L.U.L.U.L.U.P.Y.T.U.T.U.T.U.T.T.T.U.T.T.T.T.T.~.T.~././.[./.(./.(.(.`.(.|._.|.|.|..X.X.X@X.X.XdXdXdXzXzXzXzXxXxXxXxXnXnXnXMXnXmXmXmXmXmXmXmXmXmXdXmXnXnXnXnXcXcXvXcXxXcXxXxXxXxXzXzXzXzXzXdXxX'.zX'..X'.|.|.|.|._._.`._.|.`.(.(.(.(.(.(.(.(.", "C C Z Z D Z Z D Z C Z Z Z Z C D Z Z C Z Z Z F Z Z Z C G Z H Z Z Z Z Z Z Z H Z L H Z H Z H Z H H H H H H H F H H H D H H F J H H H H H L H P U D J J H H J J H J L L P K J H J H P P P L L L L L Z L Z J L H H J H H L H H H L Z J Z Z H Z Z H D Z Z Z G Z Z Z Z Z H Z G Z Z L Z H Z L Z Z Z D D Z Z Z L Y Z.S.L.S.U.A.D.H.S.H.H.H.H.G.G.S.S.S.H.D.H.G.S.H.A.A.A.A.A.h.h.A.A.A.l.h.S.h.h.h.h.h.h.h.h.h.h.f.f.f.f.a.f.a.a.a.a.f.a.a.a.a.a.a.f.a.f.f.g.f.f.a.a.g.a.k.a.a.a.a.a.a.a.a.i.i.i.u.a.u.u.i.u.u.u.u.u.u.u.t.t.t.u.t.u.t.t.u.t.u.t.t.t.t.t.u.u.u.t.u.u.u.u.u.u.u.u.u.u.u.u.u.u.r.a.i.i.s.i.a.i.a.a.a.a.i.g.a.z.z.a.k.f.f.k.g.g.g.g.h.h.h.h.A.h.A.A.A.D.H.H.S.Y.L.L.L.L.A.U.P.P.P.L.U.P.P.P.L.L.U.L.U.L.Y.U.Y.I.Y.U.T.U.U.U.T.T.T.Y.T.~.~.~.~.~./.^.(.(.(.(.(.`.|.^.`._.|. X X}.}.}.}.}.}.}._.|.{.|._.|._.(.|._.`.^.`.^.^.(.(.`.^.(.`.(.(.(.`.(._._._._._.|.}.}._.{._._._._.{.(.`.|.(.^.(.(.(.(.(.^.(.(.^.(.(.(._.(.(.(.(.`.(._._.(.(.(.(.{.(.(.(./.(.~.~.^./.~.~./.~.~.~.!./.~./.~.~.[.~.~./././.(./.(.(.^.(.(.(.(.(.(.^.`.`.(.(.`.|.}.}.|.|._.|.|.|.|.|.|. X_.|.|.|.|.|.|._._._._._.|.^.(._.(.(._.(.^.(.^.|._.|.|._.|.|.|.|.|.|..X|..X.X X|..X|.|.|.|.`._.|.(.|././././.T./.~.R./.T.~.U.T.U.L.L.L.H.H.S.H.Z.G.S.S.S.S.S.H.S.h.H.H.S.H.S.H.L.L.L.Y.L.K.L.L.L.L.L.L.L.L.L.K.L.L.L.L.K.L.L.L.L.L.L.L.L.L.D.L.L.L.L.U.P.P.P.U.L.Y.P.P.Y.Y.Y.T.T.Y.T.T.T.T.T.~.~.T.~.~.Y.!.!.T.~.~.T.~.~.~.!./.!.~.~.~.~.~.!.~.[.~././.[.^.^.^.).^.^.(./.(.(.(.^.|.}.}.}.|.|.`.'..X.X.XdX@XdX.XdXzXdXzXzXzXvXdXdXzXcXxXcXcXcXdXcXvXcXcXcXcXcXcXcXcXvXcXcXcXnXnXcXcXcXnXnXnXxXnXcXxXcXcXnXxXnXdXxXxXxXxXxXzXxXxXxXxXxXxXnXfXxXxXcXcXcXcXcXcXcXcXnXcXcXcXnXnXnXnXnXnXmXmXMXvXmXmXNXmXnXnXmXmXmXmXMXnXmXmXmXnXnXnXmXmXnXnXnXnXnXnXnXnXnXnXmXcXmXmXmXcXnXmXvXmXmXcXnXnXnXnXnXnXmXmXmXnXnXnXmXmXcXmXmXcXmXmXmXmXfXnXmXmXmXMXMXMXMXMXSXMXMXMXNXMXMXMXmXmXmXmXMXmXMXmXnXMXMXnXnXMXnXMXmXnXnXnXMXnXmXnXMXmXmXmXmXnXnXnXmXcXxXxXxXxXxX@XcXdXzXzXzX@XdXdXdX.XdX.X.X X.X.X.XzX.X.X.XdX.X.X@X'.zX'..X.X|..X|.|.|._._.`.(.(._.(.(./.(./.(./.(.(.(./././././.~.(.(.~.T.(.~.T.~.T.~.Y.T.T.T.~.T.T.P.T.U.L.U.L.L.L.S.L.L.H.H.H.H.H.H.S.H.S.S.H.S.H.S.H.H.P.H.L.U.L.S.U.L.H.H.S.A.D.H.H.H.H.G.H.H.G.G.S.H.H.H.H.S.H.H.H.H.H.H.H.H.H.H.H.H.H.K.H.L.L.L.L.L.L.L.L.P.P.P.P.P.P.Y.S.L.P.U.U.U.Y.U.T.P.P.T.T.T.T.T.U.U.T.T.T.T.~.T.~.~.~.~.~.~.^./.(.(._.(.(.`.|._._.|._.|..X.X.X XdXdXdXcX.XzXzXzXzXxXzXxXxXxXnXnXnXnXnXnXmXmXmXmXmXcXnXnXnXnXmXcXcXcXxXcXcXcXcXcXcXzXxXzXxXzXzXzXzXdX.X.X.X X'.@X|.|._.|.{.`.(.`.(._.(.(._.(.(.)./.", "G Z H Z B Z Z B Z D B Z D B Z Z Z Z Z Z Z Z Z Z Z D Z B Z Z G D Z Z H Z Z Z D Z S H D H F D Z H H F H H H H H H H H F H H H H F D H L H H H H H F J J J Z J F J L J L J P J P P P L L L L H L J J L L J H L H H L H H H H H D L Z L Z Z Z S Z Z Z Z Z D Z H Z G Z Z Z Z Z H Z Z Z Z D Z Z L D H H Z Z L T Z.L.L.U.S.L.L.H.H.H.H.D.H.G.D.H.S.G.D.G.S.S.S.H.A.h.A.A.A.A.A.A.A.h.A.A.z.A.h.h.h.l.l.h.h.h.h.h.f.f.f.z.f.f.f.f.a.a.a.a.a.a.f.a.f.f.f.f.a.f.g.d.g.f.g.k.a.k.a.a.a.a.a.i.a.i.i.a.u.a.u.u.u.u.u.u.u.u.t.t.u.t.u.u.t.t.u.u.t.p.u.u.t.u.u.u.u.u.u.u.u.u.u.u.u.u.u.t.s.u.u.u.u.i.r.u.i.i.s.a.i.i.a.a.a.a.i.g.i.a.k.a.f.f.g.g.g.k.g.h.h.h.h.A.A.A.A.Z.S.D.D.D.L.H.L.H.L.L.L.L.L.L.L.U.L.U.D.L.U.L.Y.L.P.U.P.I.T.U.U.Y.U.T.U.T.T.T.T.T.!.T.~.~./././.(.(.(.(.(.(./.|.{.|._._.}.}.}. X|.}.}.}.|.|.(._.|.(._.`._.(.^.`.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(._._._._._._.[.|._.|._.{.`.(.(./.^.(.|.(.(.(.{.`.^._.(.(.`.(.(.(.(.(.(.`.(.(._.(.(.(.(.(.(.(./.(./.(./.^.[./././.~.~././././././././.!./././.(.(./.(.(.!.(.(.~.(.(.(.(.^.^.^.`.(.`._. X}.}.|.{.}.|.|.|.|.|. X_.|.|.|.|.|.|._._.|._.|.(.(.|.(._._.(.^._.|._._.|._.|._.{.'.|.|. X.X.X.X.X.X@X.X.X.X.X.X|.`.`.`.{.(.(./././.~.~.T./.Y.T.T.T.U.T.U.L.H.H.H.A.Z.A.G.H.A.S.S.A.S.S.H.H.S.S.S.S.S.D.L.P.P.U.Y.U.L.U.U.L.K.L.U.L.K.L.L.L.L.S.L.L.L.L.L.L.L.L.L.U.L.L.L.L.L.U.P.P.P.Y.P.P.P.L.U.P.Y.T.T.T.~.T.T.T.T.T.T.~.T.T.T.^.^.~.~.~.~.~.~.T.(.~.~.~.~.~.~.~.~.~.~.~./.E.(.~.(./.^.~.(.(.(.(.(.^.(.^.}.}.|.|. X X X.X.X X.XdXzXdX@XdXdXzXzXdXnXzXcXxXxXdXcXnXcXcXcXcXcXnXnXcXmXcXcXcXvXcXcXcXcXcXcXcXcXnXnXxXxXxXxXdXcXxXxXcXdXxXxXvXzXzXxXxXxXxXcXxXcXxXnXcXxXcXcXcXcXcXcXmXcXcXnXcXnXnXnXnXcXcXMXnXMXmXmXnXnXdXmXnXnXcXmXmXmXmXMXnXmXmXnXnXnXnXdXnXnXnXnXnXnXnXnXnXnXnXnXnXmXmXmXmXnXmXmXcXmXnXnXnXnXnXnXnXmXmXmXnXnXcXmXcXmXmXmXmXcXcXdXNXNXmXmXmXmXMXMXmXSXMXMXMXMXmXMXMXMXMXMXmXmXmXmXmXmXnXnXcXmXMXmXnXnXnXmXnXmXmXvXnXMXmXmXmXmXnXnXnXnXnXnXxXxXJXcXxXxXdXcXcXzXdXdXdXdXdXzX'.zX.X@X.X.X.X.X.X.X.X.X.X.X X.X.X.X.X|..X|.|.|._.|.(.|.(.(.{.(./.(.(.{./.{.(.(./.(./.(././.~.~.T.~.~.~.~.~.T.~.T.T.T.~.T.T.T.T.T.P.U.U.P.P.P.L.L.L.H.L.H.H.G.H.H.G.S.H.H.H.H.H.H.H.H.H.H.H.S.L.L.S.S.H.H.H.H.G.H.H.H.H.G.D.G.S.G.H.S.H.S.G.H.H.H.H.H.H.H.H.H.H.G.K.K.K.S.L.G.L.S.L.L.L.L.L.P.P.P.P.P.P.P.P.P.L.L.U.U.U.U.U.P.Y.P.T.U.T.T.T.T.T.T.T.T.T.~.T.~.T.~.T.R.^./.[.(.(.(.^.(.(._._._.|.|.|..X.X.XdX XdX.XzX@XzXzXzXzXxXxXcXnXnXxXvXnXJXcXmXMXnXmXmXcXnXnXnXnXdXcXcXcXcXcXcXcXxXcXnXxXxXxXxXxXzXzXzXdXdX'.zX.X X`.|.|.|._.|.|.{.`.|.(._.(.(.(.(.(.(.", "Z Z Z Z Z Z Z Z Z Z D Z Z Z Z D B Z Z Z Z Z Z F D Z Z Z Z Z Z Z Z H Z Z G Z Z Z D D D D L Z Z H H F Z D H Z H F H H Z H D H H H L H H H H P L P L L F L J J J H L K L L H J J D L L L L L L L D Z L H Z H L L H L H Z H H Z Z H L L Z J D F Z Z L Z D D Z D D G Z L Z H D Z Z G Z Z Z Z H Z Z S H Z D G [ l.P.A.D.S.L.D.H.H.K.S.H.G.A.G.A.G.S.D.S.S.S.S.S.S.H.S.A.A.A.A.A.z.A.h.g.Z.h.A.D.h.h.h.h.h.h.z.k.k.f.f.f.f.f.f.a.a.a.a.a.a.k.a.f.a.k.a.f.f.g.f.a.g.d.f.k.a.k.a.a.k.a.a.a.i.i.a.u.a.u.u.x.u.u.u.u.u.u.u.t.u.u.u.t.u.u.u.u.u.t.u.u.u.u.t.i.r.u.u.u.u.i.u.i.u.u.u.u.u.u.u.u.u.u.i.i.i.i.i.a.a.a.a.a.z.z.i.i.a.z.a.a.i.k.a.f.g.g.g.k.h.z.z.A.h.A.A.A.S.S.S.H.H.L.L.L.L.L.L.A.U.L.P.L.D.U.L.L.L.L.U.Y.T.U.T.T.U.T.T.I.I.T.T.T.T.T.Y.T.T.T.~././././.(.(.^.`.(._.|.`.{._._.|.}.}.}.}.}._.}._.|._._.|._.(.|.^.(.^.^.(.(.(.(.(.`.(.(.(.(.(.(.(.^.`.(.(._._._._._.`.(._._._._._.`.(.|./.(.|.(.(.]._.(.(.(.(.(.^.(.(.(.(.(.(.!.(.(.(.(.(.(.(./.(./.(./././././.!.[./.~././././.~././.(.!./././././././.(.(.(.(.(.(.(.(.(.(.(.{.[._._._._.|.|.|._.|._.|.|..X|.|.|.|.|.|.|.|.|.|.|. X|.`.`._._.`.(._.(.`.`.|.`._.|._.|.|.|.|.|..X'.'.dX.X.X.X.X.X.X.X.X.X|.|.|.|.{.`.(.(././.~.~./.T./.~.Y.~.T.T.Y.L.L.U.A.H.H.H.S.H.Z.G.G.G.H.S.S.G.H.H.H.S.H.S.S.S.D.L.P.U.L.P.P.L.Y.L.L.U.U.L.U.L.L.L.L.L.L.L.L.L.L.L.L.S.U.L.L.P.P.P.P.P.U.P.T.L.U.Y.U.U.P.Y.U.Y.Y.T.P.T.Y.!.~.!.Y.!.Y.~.Y.T.XX~.~.~.~.~.~.!.T.~.!.!.!.!.~.~.~.T.~././.!./.(./.(./.(.(.(./.(.(.^.(.}.|.|.|.|..X XdX'.dX.XdXzXzXdXdXdXxXzXdXzXdXcX.XxXcXdXmXmXcXcXmXcXcXmXmXmXnXMXcXnXnXnXcXmXcXcXnXcXnXcXxXxXxXcXcXxXcXxXxXcXxXxXcXcXzXxXxXxXxXxXcXcXcXcXcXnXnXcXcXdXcXcXmXcXcXnXxXmXcXcXcXcXcXmXcXJXmXJXnXnXnXmXnXmXmXcXmXvXnXmXdXmXnXnXnXnXnXnXnXnXcXmXmXdXmXcXnXnXnXnXnXMXxXmXcXcXmXvXcXcXmXcXnXnXmXnXmXmXmXnXnXmXnXcXNXmXnXmXmXmXmXmXcXmXfXmXMXmXMXMXMXmXMXMXMXNXfXmXmXMXMXMXmXmXmXmXmXmXmXnXnXcXmXcXcXnXnXnXnXnXnXnXnXnXmXmXmXcXmXnXnXzXJXnXxXnXxXdXxXxXxXcXnXzXzXdXzXdXdXdX'.dXdXzX X.X.X.X.X@X.X.X.XdXdX@X.X.X.X.X.X.X.X|.|._.|.`.^.(.(.(.(.E.^./.(./.(.!.(././././.~./.~.[.[.~.T.~.T.~.~.T.T.T.T.T.T.T.Y.P.P.P.U.U.L.L.L.L.L.L.L.H.H.H.H.H.H.S.H.l.H.G.S.S.H.S.H.H.D.H.H.H.H.H.H.H.H.H.H.H.G.G.D.G.A.H.S.H.S.S.H.A.S.S.S.H.H.S.H.H.H.H.K.H.K.H.A.H.H.H.L.H.L.L.L.L.L.L.P.S.L.L.P.P.P.P.L.L.L.P.U.P.Y.Y.U.P.T.P.T.T.T.T.T.T.T.T.T.~.~.~.~.T.(.~././././.(.(.(.`.`.^.|._._._.|.|..X.X.X.X'.'.zX.X.X.XzXzXzXxXxXxXcXnXcXmXnXnXmXcXnXnXnXMXmXmXnXnXcXmXcXcXJXdXxXcXcXcXcXdXvXxXxXzXdXzXzXzXdXdXdX@X.X.X|.|.|.`._._.`.|.`.^.(.(.(._.(.^././.", "Z Z Z Z Z G Z Z Z Z Z Z Z Z Z Z F D Z F Z F Z C Z D Z Z Z D Z Z Z H Z Z H H Z Z D D D D H Z L Z D D D D F D D D D H H H H H H H L D H L H H H H H J J J H H J L L L L H P H L J L L J L L S H L L L J J H L H J H H L H H H H H Z Z Z Z D D Z H Z Z D D Z D D Z H G G Z Z G H Z Z H U Z Z H H Z Z Z G H T Z.P.P.L.L.L.G.H.H.A.S.H.H.D.H.D.G.H.S.S.S.G.S.S.S.S.S.A.A.A.A.A.A.A.h.h.A.A.h.z.A.h.h.l.h.h.k.l.j.a.f.f.f.f.a.g.a.z.f.z.a.f.a.f.f.k.k.g.f.a.g.a.d.a.f.d.a.a.a.a.a.k.a.a.a.a.u.i.i.u.u.t.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.t.u.u.t.u.u.u.t.u.u.u.u.u.u.u.u.i.i.u.u.u.s.u.u.u.u.u.i.u.i.s.a.a.a.a.a.a.a.i.a.g.a.a.k.a.k.k.f.f.f.f.k.k.h.h.h.A.g.A.S.A.L.H.H.H.L.H.L.L.L.L.P.P.L.L.P.P.L.P.U.L.L.P.U.U.U.T.U.T.U.U.U.T.U.T.T.T.T.T.T.T.T.~.T./././.(./.(.(.|.^.^.|.`.`.|.|.}. X}. X_._._._._.|._.{._.|._.^.|.[.(.(.(.(.(.`.(.(.(.(.(.(.`.(.(.(.(.`._.(._._.^.`._.(.[.|.|.^.^.|.^.`.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.!.(.(.(.(.(.(.(.(.(.(.^.(./././././.(./././././././.~.~././.!././././.!.^.(./.(.(.(.(.(.(.{.(.(.(.|.(.(.|._._.|._._.|.|._.|.|.|.|.|.|.|.|.'.'. X X X.X.X|..X|.|.`.|.(.`.`._.(.(.(.(.`.|.|.|.'.|..X.X.X.X.X.X X@X.X.X.X.X.X.X.X.X.X'.|.`.|.^.^.(././././.T.~.~.(.T.I.T.R.L.L.L.L.H.H.H.H.H.H.H.H.H.H.H.H.H.K.S.A.H.H.H.D.S.Y.Z.L.L.U.Y.L.L.L.U.L.L.L.L.L.L.L.L.L.L.H.L.L.L.L.L.L.L.L.L.L.U.P.P.U.U.U.P.P.P.T.L.U.Y.Y.P.Y.Y.T.T.T.T.T.~.T.Y.T.T.~.~.[.~.~.[.~.~.T.!.T.^.~.~.T.[.[.T.[././.~./.[.[.~.(././.(.(.(.(.(.(.[.(.(.(.{.{.}.{.}.}. X X@X.X.X.XdX.X.XdXdXdXdXdXvXvXzXcXxXxXxXvXcXcXcXcXcXcXnXcXnXmXmXmXmXmXmXnXnXcXxXcXcXcXcXvXxXvXvXxXdXxXcXdXdX X@X.XvXzXxXxXxXzXxXxXxXcXxXxXxXcXdXvXcXnXvXcXcXcXmXvXxXdXnXnXvXcXnXmXcXnXvXmXzXnXmXnXmXcXmXmXmXmXmXmXnXmXnXnXnXnXnXnXnXnXnXnXdXcXmXcXcXnXnXnXnXnXnXvXmXmXnXnXmXcXcXnXnXnXnXnXnXnXnXnXmXmXnXnXcXcXmXmXmXmXmXmXmXmXmXmXmXmXMXMXMXMXMXMXMXMXDXMXMXMXMXMXmXmXmXmXcXcXfXnXcXnXcXmXmXnXnXcXnXcXcXnXnXnXnXnXMXvXnXnXnXnXnXxXnXcXnXcXcXxXxXdXcXzXcXdXdXdXdXdXdX.X.X.X.X.X.X.X'.dX.X.X.X'..XdXzX.X.X.X|..X X|.|.|._.`.`.(.(.{.(.(.^.(.(.(././././././././.~.~.~.~.~.~.T.~.T.~.T.~.T.T.T.U.Y.P.P.P.P.L.U.L.L.L.L.L.A.L.L.S.L.H.G.H.D.S.H.H.A.S.G.G.H.D.S.H.H.H.H.H.H.H.H.H.G.H.H.G.G.D.H.G.H.H.S.S.G.H.H.S.S.S.H.H.H.S.H.L.G.G.H.G.G.H.K.H.L.L.G.L.L.D.P.A.H.S.L.L.L.P.L.P.L.L.L.Y.P.U.L.Y.U.T.Y.U.T.T.T.~.T.T.T.T.T.T.~.R.R.T.~.T./.~./././.(./.(.^.^.|.{._.|.|.|. X X.X.X.X.XzX.XzX.XzXzXzXzXzXzXxXcXcXcXnXnXmXnXnXnXnXnXnXnXnXnXnXnXdXmXmXcXxXcXcXcXcXnXdXxXxXvXzXcXzXzXzXdXdX X.X.X.X.X|.`.|.|._._.|.`.(._.(._._.!././.!.", "Z Z Z Z Z Z G Z Z Z C Z Z D C D D Z Z Z Z Z Z Z Z G Z Z F Z G B Z Z Z Z Z Z Z D Z Z Z P Z G Z L H F H Z H D H Z H D L D H H H G H H H H L H H L J J J J H J J H J D J J J J J H H L L L J J H H J L Z J Z H H L H H H H D Z D L Z Z Z Z Z Z Z H H Z Z D Z D D D L Z L Z Z H Z Z H H H Z H Z H H D H L L e.F.T.H.H.H.H.H.H.H.S.H.A.h.G.S.H.H.H.A.H.S.G.S.S.S.S.S.S.S.A.A.A.h.A.A.A.h.A.h.A.A.A.A.l.l.l.h.k.j.f.k.f.f.g.f.f.f.a.j.a.j.f.j.g.g.a.z.f.f.z.a.a.a.f.a.a.a.a.a.a.a.a.a.a.a.a.i.i.u.s.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.p.u.p.u.u.u.u.u.i.u.i.i.a.u.u.a.u.u.r.u.u.u.i.t.i.i.u.i.a.a.a.a.a.z.a.k.i.k.a.k.i.f.f.f.f.d.k.k.k.g.k.g.h.S.A.A.A.H.G.S.H.H.L.H.H.L.L.L.L.l.H.P.L.L.L.G.L.U.P.T.U.Y.Y.T.T.T.T.Y.P.Y.T.U.T.T.T.~.T.~.T.~.~./././.^.(.(.(.(.(.(._.^._._._.}.|.}.|.}.}.}.}.|.[.|._.{.^.{.|.`.^.(.(.(.(.(.(.].(.(.(.(.(.(.`.`.(.(._.(.(._.(.(._._.(._._._._.{.`.(.^.).|.^.(.(.(.(.(.`.^.`.^.(.(.(.(.(.(.(./.(.[.(./.(.(./.(./././././././.(./.(././././././././.!./.(.(./.(.(.(.(.(.`.^.(.(.(.(.(.(.`.^.^.|._.|.}.|.}.}.}.|.|.|.|..X|..X'.|.|. X.X X'. X.X.X|.|.|.|._.^.|.(._.(.|.`.`.`.'..X.X.X.X'..X.X.X'.dXdXdX X.X.X.X.X.X.X.X.X|.|.|./.(.(./.(.~.~.~.~.T.T.T.T.T.T.I.L.L.H.H.H.H.H.H.H.H.S.L.H.H.S.H.H.H.H.H.H.H.H.H.H.H.U.S.D.U.U.L.L.L.P.L.P.L.L.L.L.L.L.L.L.L.L.L.L.L.L.Y.K.U.U.T.U.P.P.T.P.P.T.P.Y.U.P.U.L.P.P.P.P.Y.T.T.Y.T.T.T.T.T.T.T.T.~.T.T.T.T.T.T.T.T.Y.~.Y.T.~.Y.T.~.T.T.T.~.~.~.(./.(.(.(.(.(.(.(.(.(.^.^.(.(._._._._.|._.'. X'.@X.XdXdXzXfXdXdXdXcXdXdXdXcXxXxXxXJXnXnXnXmXcXmXmXmXmXMXnXmXmXmXmXfXmXmXcXnXnXxXnXJXxXxXxXJXdXxXnXcXdXcXJXxXcXnXxXcXcXcXcXxXxXxXxXcXcXcXxXxXnXnXxXcXcXcXdXxXxXJXdXcXcXcXcXxXvXcXmXmXcXnXmXnXnXnXmXfXmXmXcXmXmXmXmXnXnXnXnXcXnXnXnXnXcXnXnXxXxXnXnXnXfXvXcXcXmXcXmXnXnXcXvXnXnXnXnXnXcXMXnXnXmXnXMXmXxXmXMXcXmXNXmXmXmXmXmXMXmXmXMXMXMXMXMXSXMXMXMXDXmXmXMXmXmXmXmXmXmXcXmXdXcXcXcXcXcXnXnXcXnXnXnXnXxXnXxXnXnXnXnXnXnXnXxXxXxXcXcXxXxXcXdXcXdXcXzXzX XdXdXzX.X.X'..X.X.X.X.X.X|..X X X@X.X.X.X.X'..X.X.X.X X|.|.|.|._.`.^.(.(.(.(./.(.(./.(./././././.~.~.~.~.T.T.^.T.T.~.T.T.T.T.U.T.U.T.P.P.Y.L.U.L.L.L.L.L.S.L.S.L.S.L.H.H.H.H.S.S.S.S.G.S.S.H.S.S.H.H.H.H.H.L.H.H.H.H.H.S.S.S.S.S.H.S.G.S.S.S.S.S.S.S.S.H.H.S.H.H.L.L.A.L.D.H.L.H.L.L.H.H.L.L.L.L.Z.U.S.L.L.L.L.L.U.S.L.P.P.P.P.P.P.P.U.U.U.U.T.T.T.T.T.T.~.T.T.~.R.~.~.~.T.(././././.(./.(.(.(.`.{.|._._. X'. X.X|..X.X@X'..XzXdXzXzX@XdXcXxXxXxXxXcXnXnXvXnXxXvXxXvXnXcXcXcXxXxXxXxXxXcXcXcXnXxXnXnXvXxXxXzXzXzXzXzXzXxXdXdX.X.X X|._. X_.|.{.|._.[.|._._.^.~.(.~.(.", "Z Z Z D Z D D Z Z D D Z D C D C Z Z G Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z D Z L G Z Z H Z L H Z Z Z D Z H H S D D L D H H H H H H H L H L H L H H L L J H H H L J L L L H J L L L L L L Z L L J Z L L J L Z L D H Z H H L D Z H H Z L H Z H Z Z D D Z Z D D D Z Z Z Z Z Z H Z Z H Z H Z H Z Z Z Z Z L e.Z.H.H.H.H.H.H.H.H.S.S.H.Y.S.A.G.A.H.H.D.H.S.S.S.S.S.S.G.S.A.G.A.H.A.h.A.h.Z.A.h.A.j.h.l.l.l.l.h.k.f.j.g.g.j.f.a.j.g.j.j.f.f.g.a.z.a.f.f.f.g.a.g.i.a.a.k.a.a.k.a.k.a.a.a.a.i.i.i.i.i.u.u.u.u.a.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.i.u.a.u.u.u.i.i.u.i.u.u.u.i.i.i.i.i.a.a.a.i.i.i.k.a.i.k.i.f.d.f.f.f.z.k.k.f.g.h.h.h.h.A.A.z.H.S.G.S.H.L.L.L.L.H.L.P.P.D.L.L.L.P.P.L.L.Y.P.T.L.U.T.T.T.T.P.^.U.T.T.T.T.T.T.T.T.T.~.~.~././.^.(.(.(.|./.|.|.|.|.|.|.}.}. X}.}.}._._._.|._.|._.`._._.].`.(.(.(.(.(.(.(.(.(.(.(.(.(.].(.`._._._.(._.].(.(.(._.(._.(._.{.(.(./.{.(.`.(.(.(.^.(.^.^.(.(.!.^.(.(.(./.(.(.!.^.(.(./././././.^./././.^./.(.(././././././.!.^.^./././././.(.(.(.(.{.(.(.(.(.(._.(.(.^.`.`.{._._.|.}.|.}. X|.|.|.|..X|..X|..X.X.X|..X X.X.X.X.X'.|.|.|.|.`.|._.|.(.|.`. X X'..X.X.X.X.X.XxXzX.X.X.XdXdXdX.X.X.X.X.X|.|.|.`.(.(./.~.~.T.T.T.T.T.T.I.T.~.L.L.L.L.L.H.H.H.S.H.H.L.G.H.H.H.L.U.H.H.G.H.L.H.H.L.L.H.D.Y.U.L.U.U.P.P.L.L.P.L.L.L.L.L.H.L.L.L.L.L.L.L.L.L.U.U.U.U.U.T.P.P.P.P.P.P.U.P.P.P.P.Y.F.P.Y.T.T.T.U.T.Y.~.T.T.P.T.T.~.T.T.T.[.T.~.~.~.[.T.[.[.T.~.~.~.[.~.~.~.T.^./././.~.(.(.~.(.~.^.(.^.^.`.`._._.|. X X X X X.XdX.XdX.XdXdXdXdXdXdXcXnXfXdXzXxXxXdXnXcXcXmXcXmXmXmXmXmXmXmXmXmXmXmXmXmXnXxXnXnXnXdXxXxXxXzXcXxXdXcXnXdXcXzXdXxXxXcXnXdXcXvXcXcXcXcXcXxXxXdXcXxXxXdXvXcXcXxXxXxXxXcXcXnXcXcXmXxXxXmXcXmXvXnXnXmXmXmXmXcXmXmXmXcXmXnXnXnXnXnXxXdXJXnXdXcXnXxXmXnXxXcXcXcXcXcXcXcXcXcXcXmXcXnXnXnXnXcXcXcXnXmXcXnXnXnXcXmXcXMXvXmXmXmXmXmXmXmXMXmXMXmXmXMXMXMXMXMXMXMXMXMXMXMXmXmXmXcXmXmXcXmXcXcXcXcXcXcXcXnXnXxXnXnXnXcXMXvXnXnXvXmXxXxXnXcXxXcXcXxXcXcXxXdXcXzXzX@XdX XdX.X.X.X.X.X.X.X|. X.X.X.X.X X X.XdX.XdX.X.X.X.X X'.|.|._._.{.|.(.(.(.(.^.{.(.(.^.(././.!.~./.!.~.~.T.~.T.~.~.T.T.T.T.T.T.T.U.T.U.P.Y.P.U.L.L.L.S.L.L.L.L.L.L.L.L.H.H.H.H.G.S.S.S.G.S.S.G.G.S.D.H.G.H.S.G.H.A.H.G.S.S.G.S.H.H.S.G.G.H.H.G.S.H.G.D.H.G.H.H.H.S.H.L.P.U.U.U.S.L.H.S.L.H.S.L.L.S.H.D.L.L.L.L.L.L.L.L.L.L.P.P.P.P.P.P.T.L.T.T.U.Y.T.T.T.~.T.~.~.~.~./.~.~.~./././././.(.(.(.(.^.|.`.{.|._.|.'.|. X.X.X.X.XxXxXdX.XzXzXdXdXdXxXxXxXnXcXnXnXnXnXnXMXnXmXnXcXcXnXxXcXxXxXxXxXcXcXcXcXxXxXxXzXxXxXxXzXzXzXdXdXdX'..X.X'.|.'. X|.|.|.|.|.}._.{._.(.(.(.(.(.", "Z Z Z D Z G Z D Z D D Z D Z D D D Z Z Z G Z Z Z Z Z Z Z F Z Z Z Z Z Z Z Z Z Z Z Z Z G Z H Z Z L H D L H H Z H H D H Z H D H H H H H H H H J H L H L L L H L H H L L L U L J L J L L L L L L H H J J Z L H H H L H H H Z H D L H Z Z J Z Z Z H H D Z Z D D D Z D P G L Z L Z D Z H Z H H H H Z H Z H D Z b.H.D.H.H.H.A.K.A.H.G.S.S.S.A.H.A.H.S.S.D.S.S.S.S.S.S.S.S.S.H.A.S.G.z.h.A.A.A.A.A.h.A.A.A.l.h.l.h.k.h.k.h.g.g.k.g.j.a.g.g.g.a.g.g.g.f.k.i.g.f.g.z.a.f.a.a.a.z.a.a.a.a.a.a.a.a.i.i.i.s.s.u.u.a.u.u.u.u.u.u.u.a.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.i.u.i.i.a.u.a.u.i.u.i.u.i.u.i.i.i.i.a.a.a.a.a.i.k.i.i.i.a.z.f.i.i.z.i.k.k.f.k.k.k.h.z.h.h.h.h.A.A.H.H.H.H.H.H.L.L.L.L.L.P.l.P.P.L.L.H.P.P.P.P.U.U.T.T.T.T.T.T.T.P.P.T.T.T.T.T.T.T.~.~.T.~.~./././.(./.(./.(.(.`.(.|.|._.}.}.|.}.}._._._._._.(.`.^.^.|.(.`.^.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.{.(.(.(.(._.(.(._._._.(.(.`.|.{.(.|.^.(.(.(.^.(.`.^.(._.(.(.(.(./.(./.^.^././././.!./.~.~.(./././././././.(./.!./././././.(././.(.(.(.(.(.(.(.`.(._.(._.(.`.(.(.|._._.|.}.}.}.|.|.|.|.'..X.X.X.X.X.X X.X.X.X.X.X.X@X|..X X|.|.|._._.|.|._.|.|. X X'. X@XdXzX.X.XxX.XzXdXdXdX@X.X.X.X.X.X.X.X|.`._.^.{.(.~.T.T.T.Y.T.U.I.Y.I.I.T.Z.L.F.L.H.H.H.H.S.H.H.G.L.H.H.H.L.L.D.L.L.H.S.L.L.H.L.P.D.H.D.L.L.Y.S.P.U.L.P.L.L.L.L.L.L.S.S.S.L.L.L.L.U.U.P.U.U.U.Y.T.T.P.T.P.P.P.L.P.P.P.U.P.P.P.P.U.T.U.T.Y.T.Y.T.Y.^.!.!.T.T.~.~.~.T.Y.~.Y.~.^.P.!.~.~.~.~.[.!.~.^.!.XX^./.(.(.(.~.(.(.(.(.(.}._.^.^.(.{.{.|.|.`. X X{.fXdXdXdXdXdXdXdXdXdXdXdXdXxXxXxXxXdXJXcXnXmXcXcXmXmXmXMXmXfXmXmXMXmXnXnXnXnXnXnXxXxXxXxXxXdXcXdXnXcXxXxXcXxXxXxXnXnXcXnXcXxXnXcXcXcXcXdXcXcXcXxXxXcXcXdXfXcXcXcXcXzXdXcXcXcXcXcXmXmXcXnXnXmXmXmXmXnXNXmXmXmXmXmXcXnXnXnXcXnXnXnXcXJXcXnXxXxXnXxXxXcXcXxXdXcXcXcXcXxXcXnXnXxXnXnXcXnXcXcXnXcXnXnXcXxXnXJXvXmXmXmXcXmXMXMXmXMXMXMXMXfXNXMXMXmXmXMXMXMXMXMXMXmXmXmXcXcXcXcXcXcXcXcXcXmXcXcXcXcXnXnXnXnXnXnXxXnXnXcXmXnXmXxXxXcXcXxXcXvXxXxXxXxXcXzXzXdXdXdXdXdX X.X.X.X.X|..X X@X.X.X.X X.X|..X.X.X.X.X.X X|.'.|.|._.|._.(.^.(.^.{._.(.(.(.(./.(.!./.!.~./.~.~.~.T.~.T.~.T.~.T.T.T.T.U.Y.T.U.P.P.P.P.L.L.L.L.S.L.L.L.S.S.S.S.H.D.G.G.S.S.S.S.S.S.S.S.D.A.H.D.H.A.S.H.G.G.H.G.H.S.S.G.H.S.S.S.S.D.D.G.S.H.S.S.S.G.H.H.H.H.H.S.L.L.S.H.L.L.L.H.S.S.H.S.H.H.H.U.L.S.S.H.L.L.L.U.L.L.L.L.L.L.P.P.L.Y.Y.P.U.T.T.~.~.T.~.T.T.R.~.!.[.~.~././././././.(.(.(.(.^.(.|._._.}.|..X X.X.XdX.X'..XdXdXzX.XdXdXnXcXxXxXnXnXnXnXnXnXxXxXxXxXcXnXnXxXxXnXxXnXxXcXcXcXcXcXcXxXxXxXxXxXzXzXzXzXdXdXdX'..X.X X.X.X X X|.|.|.|.|._.|._.(.(.).(./.", "Z Z Z Z Z Z D Z Z D Z D D Z D D Z G Z Z Z Z D D Z Z Z Z Z Z Z Z Z Z Z G Z Z G Z Z Z Z Z Z S L Z S Z H Z Z H H Z D D H D H H H H H H H H H L H L H H L Z H L H H J Z L H H H L D J Z J J Z L L H D H J J D H H L D H H H Z Z H Z L S Z H H S S Z D D D D D D D D Z Z Z Z L Z D U L S Z H Z H H H H H Z Y b.H.H.H.H.H.H.A.S.S.S.S.S.S.H.h.H.A.H.G.A.G.S.G.S.S.S.S.G.H.A.S.S.S.S.H.A.A.A.h.A.A.h.A.l.l.l.l.h.z.z.h.k.h.k.k.k.g.h.z.g.g.g.g.g.g.g.f.k.a.a.i.a.a.f.a.a.a.i.i.a.k.k.a.k.a.a.s.i.i.i.u.u.u.u.u.a.u.a.u.a.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.i.u.i.i.u.i.a.i.u.a.u.u.a.u.u.i.i.i.i.u.i.i.i.a.a.a.a.i.i.k.f.k.i.i.f.k.i.f.f.k.f.k.k.k.g.g.f.h.A.h.A.A.A.H.A.G.H.H.H.L.D.H.H.L.P.L.P.P.L.L.L.L.P.P.P.T.T.U.T.T.T.T.Y.Y.P.T.T.T.T.T.~.T.T.T.~.~.T./././.(./.(.(.(.(.^.(./.|.^.|.}. X}.}._. X_._._.|.(.|.|._._._.`.`.(.(.(.(.(.(.(.(.(.(.(.`.(.(.|.(.(.(.(.(.(.(.(.(.(.(.(.(.(._.`.(.|./.`.{.(._._.(.(.{.(.(.(.(._.(.(.(.(.(./.(././.!././././.!.^.[.~././.(.(./.(.(./.(././././.(././.(.(.(.(.(./.(.(.(.^._._._._._.`.(.`.|.|.|._.}. X|.|.'. X X|..X.X.X.X.X.X.X.X.X.X.X.X.X'..X.X|..X|.|.|._._._.|.|. X'..X@XdXdX.X.XxX.X.XzX.XxX.XdX XzX.XzXzX.X.X|.|.|.`.(.|./.~.T.T.T.Y.Y.U.U.T.I.I.H.T.L.b.H.S.U.H.H.U.S.L.H.G.H.H.H.H.L.S.H.L.L.H.S.S.H.S.A.U.U.U.L.L.L.L.L.L.L.P.P.L.L.L.H.L.L.L.K.L.L.L.L.L.T.P.P.Y.T.U.Y.P.T.P.T.P.U.P.P.P.P.L.P.P.Y.D.L.U.U.U.U.T.T.T.T.Y.P.Y.T.T.T.T.T.~.[.T.T.T.Y.Y.~.T.~.T.~.~.~.~.[.^.^.~.(.(.(.(.`.(.(._.^.`. X^.^.|.`.).|._._.|.'. X XdXdX.XdXdXdX%X%XcXdXcXdXdXxXvXxXxXcXvXcXnXmXmXmXcXmXmXmXnXmXmXmXnXNXmXnXnXnXxXmXvXxXxXxXxX@XzXfXcXcXcXxXdXxXxXnXxXcXcXnXdXvXxXxXxXdXvXfXcXvXdXdXxXvXcXfXdXxXvXdXxXvXcXcXfXnXxXcXcXxXMXcXnXNXmXmXmXmXmXnXnXnXnXnXnXnXnXcXcXcXcXcXdXxXxXnXnXmXnXxXnXxXcXxXJXcXxXcXcXxXnXxXxXnXxXnXxXcXcXnXcXnXnXnXnXJXxXzXhXhXMXmXmXMXMXMXmXMXMXMXMXMXMXSXMXMXNXfXDXMXMXMXMXmXMXdXmXmXcXcXcXdXmXdXcXdXcXdXcXxXcXnXxXxXnXnXnXnXvXcXcXnXxXmXvXxXJXxXcXvXxXxXcXxXdXzXzX.XzX.XdX.X.X.X.X.X.X.X.X X X.X X.X.X X.X.X.X.X.X|..X|..X|.|.|.|._.{.|.^.(.(.(.(.(.{.(.(.(././././.~.~.~.T.~.~.T.~.T.T.T.T.T.T.T.T.I.U.T.Y.P.P.P.L.U.Y.A.L.L.S.H.S.L.S.L.H.S.G.S.S.S.S.S.S.S.S.S.H.G.H.H.H.A.H.H.G.S.Z.G.D.D.H.A.H.S.G.S.S.S.G.A.H.S.S.S.G.D.H.G.H.H.H.H.P.D.U.H.L.S.H.L.S.H.H.H.H.H.H.D.H.L.L.L.S.L.L.S.L.L.L.L.P.L.P.P.U.P.P.T.T.T.T.T.T.T.~.~.~.(.(.T.~.~.~././././././.(./.(.|.|.(._.|.}.}.|.|.|.|..X.X.XzX.X.X.X.X.XdXcXdXnXxXvXxXnXnXnXcXcXnXnXnXnXcXMXdXnXnXxXnXxXcXcXcXcXcXcXxXcXxXxXxXzXzXdXcXzXdX@XzXzX.X.X.X X.X.X|.|._.|._._._.|._.(.(.(.(.^.", "Z Z Z Z Z D Z D D Z D Z D Z Z L Z D Z D Z D Z Z Z B Z Z Z Z V Z Z C Z C Z Z Z Z Z Z U Z Z L G Z H Z H Z J H Z H D D H H H H H H H H H Z H H L L H P H H L H J H J Z P H Z L J Z J J J L L L L H D L H H H H H L D H H H H H D D H H Z Z H Z Z Z D D D D D D D D H Z L S Z L L L Z L Z L H Z H D H Z P G g.l.H.H.H.H.h.H.H.H.Z.H.S.S.S.S.G.H.A.S.l.S.S.S.S.S.S.S.S.S.S.S.J.G.A.A.A.A.A.Z.A.A.h.h.h.A.l.l.h.h.h.f.k.h.z.k.k.g.k.h.g.g.k.g.g.f.f.f.f.f.a.f.a.a.a.a.a.a.a.i.i.k.i.k.a.a.a.a.i.i.u.i.u.u.i.u.a.u.a.u.a.u.u.u.u.t.u.u.u.u.i.u.i.i.i.u.i.i.i.u.u.i.i.i.x.u.s.u.i.t.a.u.i.a.i.i.i.a.i.a.i.a.a.g.a.k.a.a.f.i.i.z.f.i.k.f.f.f.k.k.k.g.h.h.h.h.A.A.A.S.A.H.H.H.H.L.L.H.H.L.P.S.L.P.L.L.U.L.P.Y.P.U.P.T.!.T.T.T.T.Y.U.T.T.P.T.T.T.T.T.~.T.~.~.~.~././.(./.(.(.(.(.(.(.(.`._.|._.|._.}.}._.}._.(._.(.^._._.[.(.^.(.(.(.(.(.(.(.(.(.(.(.(.(.`.(.(.(.(.(.(.(././.(.(.(.(.(.^.^.(.^.^.|.(.^.{.(.(._.(.(.(.(.(.(._.(.(.(././.(././././.!./.~././.~.(.~././././.(./.^./././.(./.(.(./.(.(.(.(.(.(.(.(.(.(._.(.`.`.|.`._._.|._.|._.|. X|. X.X X.X.X'..X'..X.X.X.X.X.XdX X.X.X.X.X.X.X X.X|.|.|.|.|.|. X|..X.X.X XdXdX.X.XzX.XzXdXzXzX'.zXdX.X.XzX.X.X.X|.|.`.(.(./.~.T.T.I.U.Y.L.U.U.L.U.H.K.m.m.[ L.A.D.H.L.H.H.L.L.H.L.L.L.L.L.L.S.L.S.L.U.U.L.S.S.H.U.H.L.L.L.L.U.L.L.U.L.L.S.L.L.L.L.U.L.L.L.L.L.U.U.P.P.U.U.T.Y.T.P.P.S.Y.P.].T.S.S.L.F.D.Y.Y.L.L.P.F.Y.L.K.U.Y.Y.].P.P.Y.P.F.T.T.T.T.P.oX!.Y.!.Y.^.].T.~.T.^.oXT.XX!.^.!.!.].[.^.(.(.^.oX'.]. X X X'.|.|. X'.fX XdXdXfX XdXdXdXfXcXdXhXdXdXfXdXdXfXfXcXnXMXcXfXfXcXfXfXfXMXBXmXfXMXMXfXfXnXcXcXfXfXfXcXmXmXnXfX XfXdXfXdXfXMXxXnXMXMXfXmXnXfXcXcXfXdXnXnXfXhXcXxXfXdXnXnXfXdXxXxXfXdXdXfXfXdXmXdXcXnXxXcXnXMXcXnXmXnXmXnXmXnXnXnXnXnXcXcXnXcXcXnXxXxXxXxXxXxXnXcXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXcXcXcXcXcXcXnXcXnXMXxXfXhXaXaXhXMXmXMXMXMXMXNXMXMXMXSXmXMXMXMXDXmXmXMXMXMXMXmXfXdXcXcXmXcXcXcXdXmXcXcXdXcXxXxXnXnXnXzXnXnXnXxXnXzXnXcXxXJXxXxXcXcXxXvXzXdXzXzXcXzXzXzX.X.XdX.X.X.X|..X.X.X X.X.X X.X|..X.X.X X'..X X X|.|.'.|.|.|.|.|.|.(.|.(.(.(.(.`.^.^.(././.!./.~.~.~.~.~.T.[.~.~.~.T.T.T.T.T.U.T.Y.U.U.U.L.L.L.L.D.L.S.H.L.L.S.H.H.H.H.H.H.A.A.D.D.S.S.D.G.A.G.G.H.A.S.G.S.S.S.S.S.S.S.S.S.S.G.S.S.S.A.H.S.G.S.S.H.S.H.H.H.H.H.H.D.G.A.D.U.L.H.L.H.H.H.H.S.H.H.H.H.L.Y.L.D.H.S.L.S.L.L.U.L.L.L.L.U.P.P.T.T.P.T.T.T.T.Y.~.~.~.^.~.~.!.~.~./.!./././.!.(.(.(.(.^.(.|.(._.|._.}.`.|. X X'.'.@X.XdXdXdXdXzXzXzXzXxXxXxXxXxXcXcXcXnXxXxXxXcXcXcXcXcXcXxXnXcXnXcXmXcXcXcXcX@XdXzXxXdXxXzXzXdXdXxX.X.X.X X.X.X|. X|.|.|._.|.|.|.|./.(.^.^.(.", "Z Z Z Z D D D Z Z Z Z D Z D Z Z Z Z G Z D D D G Z G D D Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z H Z Z H H L Z Z H H D D H H H F H H H H H H P H H D H H H P F H H Z J S P J L J L L Z Z H H H L L J L L L H H H H H H D H D H D D H Z H H Z H Z H D D D D Z D D D Z Z Z L L Z Z Z L Z H Z L Z D H L Z H G b.G.H.H.H.H.H.S.A.h.G.A.A.A.G.A.A.H.A.H.S.S.S.S.S.S.S.S.S.S.S.S.h.h.H.A.A.A.h.h.A.A.A.A.A.A.A.l.h.h.h.h.h.h.z.h.h.z.g.z.k.h.h.g.z.f.f.f.k.a.k.k.k.a.a.g.d.a.a.z.i.i.k.a.a.a.a.i.a.s.i.u.i.s.u.i.u.u.u.a.u.u.a.u.a.i.a.u.i.i.u.i.u.i.i.i.i.i.i.i.i.u.i.u.u.u.a.a.u.i.u.i.u.s.t.a.i.a.a.a.k.a.z.i.a.a.a.a.i.z.k.k.f.f.f.f.f.f.h.k.h.g.h.h.h.A.A.A.A.S.G.H.H.H.H.H.L.H.L.H.L.L.L.P.U.U.U.U.P.P.Y.T.T.T.P.P.T.T.T.T.T.T.T.U.T.T.T.T.T.~.T.(.~.~.~.[././.(.(.(.^.(._.{.(.`.(._._._.{.}._._._._._._._.|._.|.|.`._.|.(.(.(.(.(.].(.(.(.(.(.(.~._.(.(.(.(.(.(.(./.(./.(.(.(.(.`.`.(._.{.|._.`.|._.(._._._._._._.(.(.(.(.(././././././././././.~.~././././.(.(.^.(.(.(.(.[.(.(.^.(.(.(.(.(.(.(.^.(.(.`.`._.`.^.^._.|.|._.|.|.|..X|.'.'. X.X|..X.XzX'..X'..X'.zXzX.X@XdX'.'..XzX'..X.X.X|..X|.|.|.|.|..X.X.X.XdX.XdXdXdX.XzXdXzXzXdXzX.XdXzXzX.X.X.X.X|.|.`.`.(.(.~.Y.T.I.L.L.L.L.L.U.T.H.].aX' T L.A.U.D.H.L.L.L.L.L.L.H.P.S.S.P.P.L.P.L.U.S.L.L.L.L.S.U.H.S.L.L.L.L.L.L.L.L.P.P.U.Y.L.U.L.L.U.Y.Y.U.L.T.T.U.T.Y.P.P.P.].hXfXgXgXgXgXgXaXgXaXaXgXaXaXgXgXaXgXgXaXaXgXgXaXaXaXgXgXaXgXgXaXaXgXaXgXgXaXgXaXgXaXaXgXgXaXaXgXgXgXaXgXaXgXaXaXaXaXaXgXaXaXaXaXaXgXaXaXaXaXhXaXaXgXaXgXaXaXgXaXgXaXgXaXaXhXgXaXaXaXgXaXgXaXgXaXgXaXgXaXgXhXaXgXgXaXgXaXgXaXgXaXaXaXgXaXaXgXgXaXgXaXgXaXaXaXgXaXaXaXgXaXgXaXgXaXaXgXaXaXaXaXaXaXaXaXgXaXaXaXgXaXgXaXaXpXm.m.xXcXcXvXnXnXnXnXnXnXmXnXnXmXnXnXcXnXnXcXcXnXdXJXxXxXcXxXxXxXxXxXxXcXxXxXxXxXxXxXdX@XcXdXzXxXxXxXcXcXcXcXnXnXnXnXcXxXcXcXzXhXaXm.hXMXmXMXMXMXMXMXMXMXMXmXmXDXmXDXMXMXMXMXMXMXMXmXNXmXcXcXvXdXmXdX%XcXdXcXcXcXcXxXxXxXxXJXnXxXnXxXnXJXmXxXxXxXnXxXcXxXxXvXcXvXcXcXzXzXzX.X.XzX.X.X.X.X.X X.X|. X X|..X.X X|..X|..X|. X|.|.|.|.`.`.|._.{.^._.^.(.|.(.|.`.(.(.(.(././.^.~./.~.~.T.~.~.T.T.T.T.T.T.T.T.T.T.U.U.T.Y.U.Y.Y.L.L.L.L.K.H.H.H.H.H.H.H.H.H.H.S.H.G.G.G.S.D.G.H.D.H.G.D.G.S.S.S.G.S.S.S.S.S.A.S.S.S.S.S.S.A.H.G.H.H.S.H.H.D.H.P.H.A.L.L.D.P.L.S.L.H.G.H.S.H.S.H.H.H.H.H.S.S.H.U.L.L.L.L.L.D.L.L.L.U.U.L.P.P.P.T.T.T.T.T.~.Y.~.~./.^.~.~.~./.(./././.(./.(.(.(.(.(._.(.`._._.}.}.|.`.|.|.'. X.XdX.XdXdXdXzXzXzXzXzXxXxXnXxXxXcXcXxXxXxXxXnXdXxXxXcXcXnXxXcXnXcXcXcXcXcXcXxXnXxXzXdXzXzXzXdXdXdX'.dX@XdX X X.X.X X|.|.|._.^.{.`.(.(.(.{.).", "Z Z Z D D D Z G D D Z D Z D H Z Z Z Z Z Z D D Z G Z Z C D F Z Z Z C Z C Z C Z Z Z Z Z L Z H Z H H Z H Z Z L L Z D D D H H F H H F H H H H H H H Z U H H Z U H H Z J J H L L L L H L J J H L P H H P L L L D H H D H D H J Z D H H H H H S Z G Z Z D D D H D H D L L L Z Z Z Z S Z H Z H D H H Z G D L G Z.S.H.L.H.H.H.S.S.A.G.A.A.G.A.G.S.A.A.S.S.S.G.G.G.S.S.S.S.H.S.S.H.S.h.H.A.A.h.A.A.h.j.A.h.A.l.l.l.l.l.l.g.g.h.h.h.h.h.h.A.z.h.f.k.k.a.f.f.f.a.a.a.f.a.a.d.a.a.i.i.d.i.a.a.i.a.i.i.u.s.u.u.i.s.u.a.a.a.a.u.a.u.i.u.i.t.a.i.i.i.i.i.i.i.i.i.i.i.i.u.i.u.i.u.u.u.u.i.i.i.i.i.i.i.i.i.i.a.a.i.i.a.a.k.i.a.a.k.i.i.z.i.k.i.f.f.f.f.h.h.h.h.h.g.z.A.A.A.S.H.A.H.H.H.H.L.H.L.L.L.P.P.S.P.P.U.T.P.^.T.P.T.P.T.T.[.T.T.T.T.T.T.T.T.T.T.~.T.~.~.T.T././.~././.(./.(.(.|.{.|.^.^.|.[.|.|._.(._._.[.(.(._.^.`._.(._.`.{._._.(.(.(.(.(.(.!.).(.(.(.(.(.^.^.{././.(././.(.(.(.(.(.^.`.(.(._._.|._._.(._._._._._._.`.(.^.`.(.(.(./.(././././.~./.~.~.~.~././.(.(.(.[.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.`.^._._._.|.|.|.|.|.|..X.X X X.X.X.X.X.X.X.XzX.X'.zXxX.X'..XzX.XdX.XzX.X.X.X.X.X.X.X.X.X'.|..X.X.X.X.XdXdXdXdX.XxXdXdXzXzXzXzXzX@XdXzXzXzX.X.X|.`.|.^.^.(./.~.I.I.L.U.L.U.D.U.S.U.hXgXm.u ' L.L.H.L.L.L.L.H.L.L.L.L.P.P.P.L.P.L.L.L.L.L.L.L.H.L.L.H.L.L.L.L.L.L.L.S.L.L.Y.P.L.L.U.L.L.L.L.L.P.P.L.U.T.T.T.U.L.U.P.hXgXgXgXgXgXpXaXaXaXaXaXaXaXaXpXaXpXaXaXaXaXaXaXaXaXaXpXaXaXpXaXaXpXaXpXaXpXaXaXaXpXaXaXaXaXaXaXaXpXaXaXaXpXaXaXaXaXaXpXgXaXaXaXaXaXaXaXaXaXaXaXpXaXaXpXaXaXaXpXaXgXpXaXaXaXaXaXaXpXaXaXaXaXaXpXaXpXaXpXaXaXaXaXpXpXaXaXaXpXaXaXaXpXaXaXaXaXaXpXaXpXaXaXpXpXaXaXaXpXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXpXpXpXM.{ ! ` hXvXnXnXcXnXnXnXnXnXnXcXnXnXnXcXnXcXcXcXdXcXcXxXxXnXvXxXnXxXxXvXcXxXxXdXzXxXxXzXxXxXcXxXcXxXdXcXcXJXxXnXnXcXnXcXnXnXcXmXhXaXpX} m.mXMXmXNXMXMXMXMXMXfXNXMXMXMXMXMXMXSXmXMXNXmXmXmXcXcXcXcXdXmXcXcXcXcXdXcXxXxXxXxXxXvXnXnXvXcXnXcXcXcXnXxXxXvXcXcXxXxXxXxXxXzXzXzX.XzX.X.X.X.X.X X.X.X.X X.X|..X|..X|.|..X.X|.'.|.|.|.|.|.`.`.|._._.(.(.|.(.`.|.(.(.(.(.(.(./.^.~.(./.!.~.T.~.T.~.T.~.T.T.T.T.T.T.U.T.P.P.L.Y.U.L.L.S.L.Z.H.U.U.H.H.H.H.H.H.H.H.S.D.D.H.H.H.G.D.S.A.H.G.D.S.S.S.S.A.S.A.S.H.A.S.A.S.S.S.S.S.S.H.H.H.H.H.H.A.H.G.L.P.L.G.G.H.H.D.L.H.H.H.H.K.A.H.H.A.K.H.H.S.H.S.L.A.L.L.L.L.L.L.L.U.L.P.P.P.T.T.P.T.T.[.T.~.~.~./.~./.~.~.(.~.~.(././././.(./.(.(.(.(.(.|._._.|._._.|.|.|. X.X.X.XdXdXdXdX'.zXzXxXzXxXxXzXxXxXcXvXxXxXxXxXcXdXnXxXnXnXxXnXcXcXcXcXcXcXcXcXxXdXxXxXdXzXzXzXdXdX.XdX X.X.X.X.X.X X|.|.|._.|.(.^.|.(.(.(.(.(.", "Z Z Z D D D Z Z D Z H D D D Z Z L Z G L Z G D G Z Z Z D B Z Z C C Z C Z Z Z Z Z Z Z Z Z H Z Z Z H Z H D H Z H H D D H H H H H H H L Z J H H H H H H H H H H H H Z H Z L Z L L J Z L L J P H H P J H L L H H H H H H H D H H D D Z Z J Z L Z Z Z D D D D D D D D L Z H L L P H H H H H Z H Z H L Z L Z G F.J.D.L.H.H.A.S.S.H.A.A.G.A.A.A.A.z.G.S.S.S.D.S.G.G.S.S.G.H.H.H.H.H.J.h.A.A.W.A.A.h.A.A.A.h.l.l.l.h.h.z.G.h.h.l.l.g.g.g.z.h.h.h.k.k.k.f.f.a.a.z.a.a.g.a.a.d.i.i.k.i.i.i.i.a.i.i.i.i.i.i.i.u.u.u.a.u.s.u.a.a.i.i.u.i.i.i.i.i.u.a.i.i.a.d.i.i.i.i.i.u.i.u.a.a.u.a.i.i.i.i.i.i.i.i.a.a.a.a.k.i.i.a.k.a.z.f.i.i.k.a.k.f.k.f.f.f.h.k.k.k.g.h.g.A.A.A.A.A.A.S.H.H.H.H.L.H.L.H.H.L.L.P.P.P.U.P.T.T.T.T.T.T.T.P.P.T.T.T.T.T.T.T.T.T.T.T.~.T.~.~.~.R.~.~./././././.^.(.(.^.^.`.(.^.}._._._._._._.`.^.|.{._._._._.`.|.{.{.`.(.(.(.(./.(./.(.(.(.(.(.(.(./.(.(./.^././.(./.(.(.(.(.^.|.{._._.|.^.|._._._.(._._.`.(.`.(.(.{.(././././././.~.~.~.!.~.~./././.[.(.(.(.(./.|.[.{.^.`.(.`.(._._.(._.(.(.(.(.^.`.^.|._.|.`.|.|.|.'.|..X|..X.X'..X.X'. X@X.X@XzX.XzX.XzX.X.XdXdXdXzX.XzX.X.XdX.X.X.X.X.X.X.X.X.X XdXdX@X.XxXdXxXdXzXzXzXzXdXdXzXzX.X.XzX.X.X'.|.|.`.(./.(.T.T.U.L.L.S.L.U.U.K.'.gXpX' r P L.L.U.L.L.L.L.L.L.L.L.L.S.P.L.L.L.K.L.L.L.U.L.S.L.S.K.L.L.H.L.U.S.U.S.U.U.P.P.Y.P.P.U.U.U.U.K.U.L.L.T.T.U.U.U.T.Y.U.U.pXaXgXaXpXpXpXpXM.pXpX} M.pXpXpXpXpXpXM.pX} pXpXM.pXpXpXpXpXpXM.pXpXpXpXpXM.pXpXm.pXpXpXM.6XpXM.pXM.pXM.pXpXpXpXpXpXpXpX{ pXpXM.pXpXM.pXpXm.pXpXpXpX{ pXpXM.pXpXm.pX{ pXM.pXpXM.pXpXpXpXM.M.pXpXpXpXm.pXM.pXpXm.pXpXpXM.pXpXm.M.pXpXpXpXM.M.pXpXpXpXm.pXm.pXpXpXM.pXpXm.pXM.pXM.pXM.pXM.pXpXpXM.pXpXpXM.pXpXpXM.pXpXm.pX{ _ y ; c cXnXMXxXnXnXcXnXnXnXnXdXcXcXcXcXcXcXcXcXxXxXxXxXvXcXxXxXcXxXxXdXxXxXcXzXxXxXvXcXdXcXxXdXxXxXxXxXdXxXxXdXcXcXxXxXnXcXcXhXpXpXm.' m.vXMXMXMXMXZXmXMXSXmXMXMXSXMXMXMXMXMXMXmXMXmXfXcXcXcXdXdXdXcXdXdXcXvXdXxXxXnXxXxXnXnXxXnXnXnXcXcXmXnXxXxXfXxXcXxXxXxXxXzXcXnXdXzX.X.XzX.X.X.X@X|..X.X|..X.X X.X X|..X.X'.|.|.|._.|.|.|.|.`.`._.|.|._._.`.|.^.|.(.`.(.(.(./.^.[.E./.~./.~.~.~.~.T.T.T.T.T.T.U.T.T.I.Y.Y.T.L.L.Y.L.L.U.D.A.U.S.H.H.H.H.H.H.A.L.G.H.H.H.A.H.H.H.G.H.S.G.S.G.G.G.G.A.A.H.G.A.S.h.S.A.G.A.S.G.G.H.L.H.L.L.S.P.G.L.G.L.G.L.L.G.H.H.S.S.H.H.H.H.H.H.S.H.S.S.H.S.S.S.D.A.L.S.L.S.L.L.L.L.U.Y.P.T.P.T.T.T.T.T.T.~.~.~.~./.~.~.[.(./././././.(.(.(.(.(.(.(.(.^.|._._._._.|._.|.|. X.X.X.X.X.X.X'.@XzXzXzXzXzXxXvXcXzXzXxXxXxXxXzXdXnXnXcXxXnXnXxXmXcXmXcXcXcXcXdXxXxXdXcXnXzXzXzXzX@XdX'..X.X.XdX.X.X.X|..X|.|._.|.`.`.^.(.(.(.`.", "G Z D Z D Z Z Z Z J Z Z H Z Z S D D D F Z Z Z H D H Z D C Z C D A C Z Z A Z B D B D C D Z Z D G Z Z Z Z H S D Z H Z Z H H H Z H H H Z H H H H Z H H H H H H H J Z L Z H H H H H H U H L L H P J H J H H H H H Z H H F H H H D H Z Z L Z H Z Z Z H Z L Z H H Z L H L H Z L Z L L Z Z Z P Z L Z Z L Z D G Z.H.L.S.A.G.S.S.S.S.h.A.A.A.A.A.H.A.H.A.S.D.H.G.S.S.G.G.G.H.H.H.S.S.S.A.A.A.h.A.A.A.A.A.A.A.h.Z.Z.h.h.A.h.h.h.A.h.h.h.Z.j.h.l.h.z.z.f.k.k.k.a.f.a.a.a.a.a.a.a.a.a.a.i.i.i.a.i.i.i.i.i.i.i.i.i.u.a.i.u.a.i.i.u.i.a.a.a.i.i.i.k.i.u.a.a.a.u.a.a.u.a.u.a.u.i.u.a.a.i.a.a.a.u.i.a.a.a.a.u.a.a.a.a.k.a.a.z.a.k.k.d.i.d.k.f.f.d.f.z.g.h.h.h.l.A.A.h.S.A.A.H.G.S.G.L.H.K.H.L.H.L.L.I.I.U.L.Y.T.T.T.U.T.T.U.T.T.T.T.T.T.P.T.T.T.T.T.T.T.[.~.~.~.T.~.~.~.~.~.^./.(./.(.{.(.{.(._._._._.(.(.(.(.(.(.(.`.`._.|.^./.`.|.`.{.(.^.(.(.`.!.[.(.(.(.(.(.(.^./.(.(.(.(././.(./.).(.(.(.(._._._.^._.|._._.^._._._._._._._._.(.(.(.(./.(././.~.~.!.~.~.~.~./.~./.^./.(.(.(.(.(.(.(._._._._.(._._.|._.^.(.`.^.(.`.`.|._.|.|.'. X X X X.X.X.X'.@X'.'.dX.X.X'.dX.X.XzXzX.XzXzXxXzXzXdXzX.X.XzX@X.XdXdX.X.X'..X.XdX.XdX'.dXdXxXdXdXdXxXdXdXzXzXdXzXdXzXzX.X.X.X.X|. X{.^.(.(./.R.R.U.L.L.S.U.P.oX'.gXgXM.t % H L.L.L.L.L.L.L.L.U.L.U.K.L.L.L.U.P.P.P.P.P.U.L.L.L.D.L.L.U.L.L.L.L.L.L.L.Y.U.U.U.U.L.U.L.L.U.I.L.U.U.U.U.Y.T.U.P.P.Y.L.m.pXaXpXm._ { { { { { { { [ { { { { { { { { { [ { { { { { [ { { { { { { { { { { [ { { { { { [ { [ { { { { { { { { { { { { { { { { { { { { { { { { { { { [ { { { { { [ { { { { { { { { { { { [ { { [ { [ { { { [ { { [ { { { { { [ { { { { { { { { { { { { { { { { ' { [ { { { { { { { { { { { { { { { { { { { { { { ' { ' t = % - cXcXcXcXnXnXcXnXcXnXcXxXcXnXcXxXnXcXxXxXcXdXdXxXxXxXcXnXcXdXcXzXzXcXcXcXxXxXxXxXxXxXcXdXdXcXdXvXcXcXcXcXxXxXJXcXcXcXzXhXM.pXM.' u b.MXmXmXSXmXMXfXSXMXmXmXDXMXMXmXDXMXMXMXMXmXmXcXxXxXxXxXxXzXxXzXcXcXcXxXxXcXcXxXxXcXxXcXcXcXxXnXnXcXcXcXcXcXcXxXxXxXxX@XdXdXzXdXzX.XzX.X@XdX.X.X.X.X X.X|..X.X.X.X|.|..X X_.|. X|.{.|.|.|.|._.|._.}.}.}.}.{.}._.(.(.(.(.(.(./.(././././.~.Y./.U.~.T.T.T.T.T.T.I.T.U.U.Y.U.Y.L.U.S.L.S.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.G.G.G.H.S.S.S.G.S.S.H.S.S.S.S.S.S.S.h.S.S.S.S.S.S.S.L.S.D.U.U.S.L.S.L.F.D.U.L.K.S.S.L.S.S.G.H.H.G.H.G.H.H.h.H.H.S.H.H.G.G.L.H.G.D.L.L.L.I.U.L.Y.U.Y.T.Y.T.~.~.T.~.~.(.T./.~././.{././.(./.~.(.(./.(.~.^.~.(.(.`.^.)._.|._.`._.|. X.X X.X.X.XzX@X.XdXdXzXzXzXzXdXcXxXxXxXcXdXcXxXxXxXxXxXxXcXxXnXnXxXnXnXnXcXcXdXcXcXcXcXcXxXdXdXdXdXxXdXzX.XdX X X.X.X.X.X'._.|._.|.|.`.^.(.|.(.(.", "Z Z Z D Z Z H Z Z Z L J Z L H H D D D D Z H Z F Z A Z D Z Z F B C Z C Z C Z Z Z G C Z D D D Z D Z H Z H Z Z D H Z G H H Z L J Z H Z L L H H H H H H H Z Z H H Z L Z H H H H F J H H H L J L H J J H H H H H J H H H H H H H H Z H Z Z L Z H H Z Z Z S Z Z L L Z H Z H L P Z Z Z L P L Z Z L Z L L Z J U D.G.L.H.L.G.S.S.G.A.S.A.A.H.A.A.A.h.A.H.H.S.G.D.S.H.A.H.D.S.S.D.S.S.S.A.A.A.S.h.A.A.A.A.A.h.A.h.h.h.A.h.A.h.h.A.h.h.A.j.h.f.h.z.f.h.f.h.f.f.k.a.a.f.a.k.a.a.a.a.a.i.a.a.i.i.i.i.i.i.u.i.u.i.u.i.i.i.a.i.i.i.i.a.a.u.i.i.i.i.i.i.a.a.a.a.a.u.u.a.u.a.i.i.u.i.i.a.i.a.i.a.a.a.a.i.a.a.a.a.a.a.u.k.a.k.k.a.d.k.k.k.f.k.k.f.f.k.g.k.h.h.h.h.h.A.A.A.H.z.A.A.G.Z.A.H.L.L.H.L.L.L.L.L.T.L.P.T.T.T.T.U.T.T.T.T.T.T.T.T.T.T.T.T.T.T.[.T.T.~.T.~.Y.~.~.~.~.[././././.{.(.(.(.`.`.(._._.(.(.`.`.^.(.(.(._.|.|.|.`.`.^.`.{.`.^.(.(.(.[.^.!.(.[.^.(./.(.(././././././././.(.(.(.(.(._._._.|.|._._._._._.(._._._._._.(.(.(.(.!././././././.~.~.~./.~./././././.(./.^.(.(.^.^.(._._._.|.^.|.[._.`.(.(.^.(.{._._.|.}.|. X X.X X.X'.dX@XdX'.dXdX'..XzXdXdXdXzX.XzX.XzXdX.XzXzXzXdXzXzXzX.XzXdX'..XdX.X XdX'.dXdXdXdXdXdXdXxXdXcXxXdXzXdXdXdXzX.X.X.X.X.X|..X|.|.`.(.!.~.T.U.L.U.U.L.L.P.fXgXgXpX' % & S Y.L.Y.L.L.L.U.U.L.L.L.Y.L.U.U.U.P.P.P.P.L.P.P.L.L.L.L.L.S.L.S.L.L.L.L.L.U.L.Y.L.L.L.Y.K.U.L.L.L.L.U.L.U.U.U.L.P.L.Y.L.M.M.{ { / c S S u S ! u u n S u S S u S u u ~ n u S u u S c u S u u S u S ~ u n u u S S u n u c u S u u S u u ~ S u A ~ u S u u S u S S u u S u u ~ S u u u S S u n u S u Z u u S u S S u n u S u u n u u ^ u c S u u u u Q u n u u u S ~ u A u S ~ u S ^ u u ~ S u S n u ~ u S u S S S u ~ u ^ u u S S u S u S S S c u t : % $ $ cXmXcXcXnXnXnXxXnXnXnXnXxXxXxXxXxXcXdXxXcXcXcXxXdXxXcXdXcXzXzXzXdXzXdXzXzXxXzXzXdXxXxXxXvXcXdXcXdXcXdXnXcXxXdXcXnXxXnXQ.{ M.} _ y y m.mXMXmXMXNXmXmXMXSXMXMXMXMXmXMXMXmXMXMXmXnXnXxXdXxXzXzXxXzXcXzXdXdXxXxXxXcXxXcXxXnXcXcXcXnXnXxXcXcXcXcXdXJXvXxXxXxXdXcXcXdX.X.X'..X.XcX.X.X.X.X.X.X.X.X.X.X|. X|.|.|. X|.|.|.|._._.|._._.|.|._.}.}.}.}._._.|.(.(.(.(.(.(.^././././.~.~./.Y.~.R.~.T.T.T.T.U.T.L.U.T.P.P.U.Y.P.L.L.L.H.H.H.H.S.H.S.L.H.H.H.H.H.H.H.L.H.H.S.S.G.S.H.S.S.G.G.S.S.S.S.H.S.S.S.S.S.S.S.H.F.L.L.L.L.S.L.L.U.H.H.H.K.H.U.S.H.S.S.H.H.H.H.H.G.H.H.A.H.G.G.G.H.A.G.S.S.H.J.H.L.H.L.L.Y.L.U.Y.T.U.T.T.T.T.T.[.~.~.T.~.~.[././.(././.(.(.(./.(.(.{.{.(.(.(.^.`.(.|.^.|._._.|.|.|..X.X|..X.XdX.XdXdXzXzXzXcXcXcXxXxXxXdXdXcXxXvXxXxXxXxXcXnXcXcXnXnXxXcXcXcXnXcXdXcXdXzXdXdXcXdX.XdX.X.X.XdX X@X.X.X|. X'.|._.|.(.(.^.`.(.(.^.|.", "Z G D Z D D S Z S Z D Z H H Z H Z D D D H D D D Z Z Z D Z C Z A Z Z B C Z D C Z D C Z Z D Z D Z Z H H Z D D D D Z Z L H H Z Z H H H H H H H H H H H H H H H Z H Z G K L H H H H H H H H L J J J H H L J H H H H Z H F H H H Z H Z L S Z Z Z S H Z Z H H H Z Z L L Z L Z L Z Z Z Z Z Z Z L S S L Z Z H U Z.H.L.G.H.S.G.G.S.S.A.S.A.A.A.A.l.A.G.A.H.S.G.S.S.S.S.S.G.A.H.G.S.A.S.A.A.A.A.S.A.S.A.A.A.A.A.h.h.h.A.A.h.h.h.h.h.h.h.h.h.z.f.h.h.g.g.f.k.f.f.f.f.a.a.a.a.a.a.a.i.a.i.a.i.a.i.i.u.u.i.i.a.i.i.i.i.i.i.i.i.i.i.a.a.a.a.a.a.a.i.k.a.i.a.i.a.z.u.i.i.i.i.i.i.i.i.i.a.a.i.a.a.i.i.a.a.a.a.a.a.u.a.a.a.a.a.k.k.d.k.f.d.f.f.k.g.g.g.f.z.h.h.h.D.A.A.A.A.A.S.S.H.H.H.S.G.L.L.H.L.L.I.I.U.U.T.U.U.U.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.P.T.~.T.T.~.~.T.~.~./.~./.(.(.(./.|.`.(.`.(._.{._._.(.(.(.(._.(.(.|./.(.`.(.{.`.^.`.`.(.`.(.(.(.^.^.!.!.(.(./.(.!.(.(.!././././.(.(.(.(.(.(._._._._.^._.|._._._.`.(._._._._.(.(.(.(./././././.~.!.~.!.~.~.~./././.(./.(.(.(.(.(.`.`._.`._.`.|._._._._.`.^._.^.|.|._.|.|..X'..X.X.X X.X.X X.X.XdX@X'..X'.xX.X.XzXzXzXzXzX.XzXxXzXzXzXxXdX@XdX.X.XzXdXzX.X.XdXxX.XdX.XzX@XdXxXdXzXzXcXzXzXdXdXdXdX@XdX.X.X.X.X|.{.|._.^./.~.~.T.U.L.U.U.H.K.hXgXsXaXM.y $ o i P.U.Y.H.U.Y.P.U.Y.U.L.L.U.Y.U.U.P.P.U.U.L.L.P.L.P.P.L.L.L.U.P.P.L.L.L.U.L.L.L.U.U.Y.U.U.L.I.L.I.U.L.Y.K.U.L.U.P.T.K.U.{ { { ' u r r r ; : y : : ; : > : y : : r r : r y ; : > r r ; r r > r : r : ; q ; : : e r q * y y : r > : y ; ; r : ; y : ; r > y : : : r y e : > ; e t : r r e r y ; ; > y ; y > r r y r y ; ; > ; ; > y ; ; r r > e e y : y > = y : : r : r y : : r 0 0 ; y r ; e y : : ; : : y r : : ; : r ; : y : : r * : y ; > ; y * : $ $ dXmXcXcXxXnXnXcXnXxXcXcXcXxXxXxXxXxXxXxXxXzXcXxXcXxX@XdXzXdXdXzXcXdXzXcXxXzXxXxXcXcX@XdXcXcXdXcXdXmXcXdXcXdXxXcXnXxXmXm.{ { { ` n y A m.mXMXfXmXNXmXMXMXMXMXSXmXmXMXMXNXMXNXmXmXcXnXxXxXxXzXxXzXzXzXdXcX@XcXxXxXxXcXxXxXcXcXcXcXcXcXcXcXcXnXcXxXxXxXcXcXdXdXxXcX.XzXzX.X.X'..X.XdX.X.X.X.X.X|..X.X.X'. X|..X|.|.|.|.|.|.|.|.{.|.|._._._. X^._.}._.^.(.(.^.^.^.^./././.T././.~.T.R.R.~.T.~.T.T.T.U.T.I.T.T.U.U.L.L.U.L.S.S.H.H.S.U.H.H.U.H.G.H.H.H.A.H.H.G.H.G.G.H.H.G.S.H.S.G.A.G.S.S.G.S.A.H.H.S.H.H.S.H.S.L.L.L.S.S.L.L.S.L.S.S.L.Z.U.S.H.H.H.L.S.H.A.S.H.H.G.H.S.H.H.S.L.H.H.H.H.H.S.U.H.L.L.L.L.P.U.T.T.T.~.T.T.~.T.~.~.~././././././.(.(.{.(././.(.^.(./.(.(.`.(.`.`.`.|.`.|._.|.'.|..X.X.X.X.XdX'.dXdX.XzXdXcXxXxX@XdXxXxXcXzXxXzXxX@XxXxXxXcXmXmXnXxXcXcXcXdXcXdXvXzXzXzXdXxX@XdXdXxXdX.X.X.X.X|..X|. X|.|.|.|._.`.(.(.(.(.(.`.^.", "Z Z D D D D U Z L Z Z L Z H Z D D D D Z Z D D Z Z F Z Z Z Z C Z A C D Z C B Z Z Z Z Z Z Z D Z G Z Z Z H D D D D Z L Z S H L Z H H H Z H Z H Z H H H H H H Z H H L Z H Z D H H H H Z J H L H J J J H J H H H H H H H H H D Z H Z L L Z H H Z H H Z S Z H H Z L Z L Z H H P Z Z L Z S L L Z Z H H H Z H Y Z.G.H.H.H.S.H.D.S.S.H.S.G.H.H.A.A.H.A.H.G.S.S.S.S.S.S.S.D.S.S.S.S.S.S.A.A.A.S.A.S.A.A.A.A.A.A.h.A.A.h.A.G.A.A.A.A.A.A.A.A.h.h.h.g.g.g.g.k.k.f.f.f.f.a.a.k.a.k.a.a.a.a.i.i.i.i.i.i.i.u.i.t.i.i.u.i.a.i.a.i.i.a.a.a.a.a.t.a.i.i.i.a.a.i.a.a.u.i.a.a.i.i.u.i.i.a.a.a.a.a.a.a.a.a.a.u.a.a.a.i.a.a.a.k.a.k.a.k.k.i.d.f.f.f.k.d.g.g.g.h.h.l.h.l.z.h.D.A.G.S.H.H.H.H.H.L.H.L.L.U.L.L.U.U.L.K.T.U.T.T.U.T.T.T.T.T.T.T.[.T.T.T.T.T.T.T.T.T.T.~.T.~.!.~.~./././.!././.^.(.^.`.`.^._._._.|.(.`.(.^.(.(.(.^.|.`.(.|.|.`.`.|.`.(.(.(.^.(.^.(.`.^.[.(.(.(.(././.(././././.!./.(.(.].(.[.|.(._._._._._._.(.`.`._.(._.(.(.(.(.!./././.!./.~.~.~.~.~.~.!.E./.!./.[.(.(.(.{.(.^.`.(.(._._._._.{.|.^.|._.|._._.|._.|.|. X.X.X.X.X@X.XdX'.dXdXdX.XzXzX.XzX@XzX.XzXzXzXcXdXzXzXzXzXzXdXdXdX.XzX.XdX.X.XzXzX@X.X.XzX.X XzXzXdXxXdXzXdXzXzXzXzX.X.XfX.X.X.X X|.|.|.(.{././.~.T.T.U.U.U.H.U.].gXgXaXpX/ ; $ o S Y.T.P.Y.P.U.U.U.U.Y.Y.U.U.Y.L.Y.U.U.Y.U.P.P.L.P.L.P.L.L.D.P.P.P.Y.U.Y.L.L.Y.L.U.L.L.L.L.L.L.L.L.L.L.U.L.U.L.U.L.L.U.U.{ ' ' Q y r r ; r : : : 0 y q t = r r r r = r r r q y r r ; r r r : : : r : = y ; y * : r ; > = r y r : : r r r ; y e ; : r r r r y r r : y = : r : > y e ; r ; r ; y q ; ; r r r ; r ; ; ; y q ; y ; y ; r r r r ; : y ; : r r r r r : r y : : : r r : : y r r r ; : r y r e r r r r r r r r = y : y r r y r : ; 0 : r 0 % $ $ $ mXdXcXcXnXxXnXnXxXnXnXnXcXxXxXxXxXvXcXzXxXxXzXzXzXdXcXdXdXcXdXxXxXcXzXcXcXvXzXcXcXdXxXxXdXcXvXcXcXcXcXnXcXcXxXcXnXdXmXm.[ { { ` f y > > Q.fXSXmXMXMXmXmXfXSXMXMXMXMXMXMXMXMXMXnXnXnXcXxXxXzXzXxXzXzXxXdXdXdXdXnXxXxXxXxXcXcXdXcXcXxXxXxXcXnXdXxXxXxXxXvXxXdXdXzXzXzXzXzX.X.XzX.X.X.X'.dX.X.X.X.X.X X.X.X.X|..X X|.|.|.|.|.|._.|._._.|.|._.}.}.}._.(.`.(.(.(././././././.!.T.(.~.~.~.T.~.T.T.T.T.T.T.U.U.T.U.U.U.U.L.U.L.U.S.H.L.S.H.H.H.L.L.H.L.S.H.H.H.G.H.H.H.H.S.H.S.A.H.G.H.S.H.S.D.S.H.H.A.H.H.H.H.S.L.L.S.L.L.S.K.H.L.S.F.S.L.H.H.U.H.H.H.H.A.H.K.H.H.H.H.H.H.H.H.S.H.S.H.H.H.H.K.H.L.L.L.U.U.T.T.T.T.T.T.~.~.T.~.~./.~.~.~./.[.^.(./.^././.).(./.^.^.(.).(.(.(.^.^.`.^.(._.|.|.'..X.X|..X.X.X.XdXdXdX.XcXdXdXdX@XxXxXxXxXcXxXxXxXxXdXxXxXcXcXcXcXnXnXcXcXxXcXcXdXzXzXdXxXdXdXzX.XdX X@X.XzX.X.X.X|..X X|.|._._.|.`.`.`.(./.(.(.(.", "Z D G H Z Z Z H Z H Z Z H Z H Z F Z D H D D Z D Z D Z Z Z F Z C A Z D B Z Z Z C Z C H Z Z Z Z D Z D Z Z Z D D D Z Z J Z Z H H D J Z L H C H H H Z H H H Z L Z H H F H H L L H H H H H P J H J J J K J H H L H J H Z H H H Z J Z Z L Z L H S H Z L L P L Z L L L Z S L Z Z L P L P Z Z L Z Z Z ( Z D Z Y A.H.L.S.H.H.H.Z.H.H.A.S.H.A.A.A.H.A.H.H.G.S.S.S.G.S.S.S.S.G.S.S.S.A.S.S.A.H.A.A.G.A.A.A.A.A.A.Z.A.A.h.A.A.A.h.A.A.A.h.A.D.z.h.k.h.l.z.g.h.k.k.f.f.f.j.f.k.a.a.a.a.a.s.i.a.i.i.i.i.i.u.u.u.i.i.i.i.i.i.i.i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.i.a.a.a.a.i.a.i.i.i.i.a.a.a.f.a.a.a.a.a.a.i.a.u.a.i.i.u.a.a.a.k.i.f.f.f.f.f.f.f.g.g.g.k.h.h.h.h.g.h.A.h.A.H.A.G.H.H.H.H.H.S.L.L.L.L.U.U.L.U.L.U.Y.P.P.T.U.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.T.~.T./.~./././.(./.(.(.(.(.`.^.|._.|._._.{.^.^.(._.(.(.|.^.(._._._.(._.(.(.`.^.(.(.(.(.(.(.(.(.(.(.(.(.(.(././.(.!.(.~.~.(.(.(.(._._.|._.|.(._._.(.(.|.^.(._.(.(.^./.(./.!./.~.~./.~.~.~.~.~.!.^.^./.(.(./.(.(.(.(.^.`.|.(.`.|._._._._._.|.|.{.|.|.|.|.|. X'..XdX@X'.'.zXzX.XzXzXzX.X.XdXdXdXdXzX.XzXzXzXzXzXzXdXxXdXcXcXxXdXdXdXdXdXzXdXdXdXdXzXzX@XdXdXdXxXdXdXdXdXcXzXzXdXdXdXdX'..X.X.X|.|._.|.(.(.(.[.~.T.Y.P.P.P.Y.].gXgXaXpX' y $ $ $ i T.P.T.T.U.U.U.T.U.U.U.T.Y.T.T.T.T.U.T.U.P.L.P.P.P.U.P.P.P.P.P.P.Y.P.P.U.L.P.P.L.L.P.L.L.L.L.L.U.L.U.K.U.L.U.L.K.L.L.].' ' ' c u r r * r r 0 r r = : * y * * r : r * y * ; : : 0 r r r ; r r r r y ; r r 0 r r r : r r * = r r r 0 r r r r r * r r r r r r * r r ; r 0 r : r r 0 r 0 : r r : 0 : r 0 r r r r r r 0 r * : : * y r 0 r r r r r r r r r r r : r r : 0 : r ; r r r 0 r r = r r r ; 0 r * r r r r r 0 r r r 0 r r r r * r : y r r : : % $ o nXcXvXmXnXnXxXxXnXxXxXdXxXxXxXnXxXxXdXcXxXxXdXdXdXcXcXxXxXdXdXcXxXdXzXdXdXzXJX.XnXxXdXcX%XnXdXcXcXdX%XdXdXxX@XdXxXvXxXQ.' ' ' c u y c > y m.MXMXfXnXmXSXNXmXmXMXMXMXMXMXMXMXMXNXMXcXxXxXxXzXzXzXdXzXzXdXxXzXzXzXxXxXxXxXcXxXvXcXnXdXcXzXcXdXxXnXxXdXcXdXzXzXxX.XzX.XzX'.dX.X.X.X.X.X.X.X@XdX.X.X.X.X.X X.X|.|. X.X|.|.|.|.|.|.|.|._.[.|.|._.}.}.[.(.(._.(.{./.(././././.~./.~.~.~.T.T.~.T.T.T.T.T.T.Y.T.T.T.T.L.L.L.L.L.L.F.A.D.S.S.S.L.H.L.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.G.H.H.H.H.H.S.G.L.H.H.H.H.H.H.U.S.S.L.F.L.H.L.H.K.S.L.L.S.S.L.S.L.L.H.H.G.H.S.H.H.H.H.H.H.H.H.H.S.L.H.S.S.L.S.L.L.L.L.L.L.T.U.~.T.T.~.T.T.~.~./.T.(././././.(.(./.(./.(.(./.(.(./.(.(.(.(.(.(.(.|.(.`.|.|.|.|.|..X.X.X|..X X.XdXdXzXzXdXdXcXxXxXxXxXvXxXxXxXzXxXnXxXxXxXcXcXcXxXxXnXxXcXzXzXdXcXzXzXzXzX.X.XzXdX.X@XdX X.X.X'. X|.|.|._.|._._._._._.{.(.(.(.(.", "D D Z Z H Z Z H H H S J Z Z S Z D D H D Z Z D Z D Z Z Z D B Z D Z C Z Z Z F C Z Z Z D Z Z Z D Z Z Z Z L D Z D Z L Z Z H L Z Z H Z H H Z H H H H Z H L Z H Z H H Z Z H F L Z F J H H H H H J Z J J H L L H J H H H H H H H Z J F H H H Z Z Z H J Z Z Z Z Z H Z L G ( L Z L Z Z Z Z Z Z L Z L Z Z D F H T F.S.D.D.H.S.H.S.S.G.S.H.H.H.H.A.A.H.H.A.S.S.S.S.A.h.S.S.A.D.S.S.l.S.S.A.h.Z.A.A.g.A.A.H.A.A.A.A.A.h.A.h.j.A.A.A.A.h.Z.A.g.A.A.h.h.z.g.z.l.k.h.a.k.k.a.f.k.k.z.a.a.i.i.a.i.i.i.a.i.u.a.u.i.i.u.i.i.i.i.i.i.a.i.a.a.a.a.a.a.a.a.a.a.a.a.i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.f.f.a.a.i.a.i.a.a.i.i.a.a.a.a.a.i.z.d.f.f.f.f.f.f.f.g.g.h.k.k.h.h.h.h.h.A.A.A.G.G.H.H.H.Y.H.U.L.L.U.L.L.L.U.U.U.R.L.P.P.U.T.U.P.T.T.T.T.T.T.T.T.T.T.[.T.T.T.T.T.T.~.~.~./././.!./././.(.(.{.(.^.`.`.|.^._._._._.`.^.|.(.{.`.(.`.|.|._.`.|.|.`.^.(.(.(._.[._.(.(.(.(.`.(.(.(.(.(.(.(.(.~.(.(.(.(.(.(._._._._._._._.`.(._._.|.|.(.(.(.).(.(./././.!.~.~./.~./.~./.~.^./.^./././.(.(.[._.(.(.{.(.|.`.(._._._.|.|.{.|.|.|.|.|.|.|. X.X.X X'.cXzXdX'.zX.X XdXzXzXdXdXdX@XzXzXzXzXzXzXzXzXdXcXdXdXdXdXdXxXdXxXdXzXdXdXdXdX@XzXzXzXdXdXdXdXdXdXcXcXzXzXzXzXdXdXdX.X|.'.|._.|.(.(.(.^.T.~.T.P.P.P.Y.hXgXgXaXpX{ i y $ $ o u T.T.T.T.U.T.U.T.T.T.T.T.T.T.T.T.T.T.U.T.P.P.P.P.P.L.P.P.P.Y.U.U.U.U.P.L.L.U.L.P.P.L.U.L.L.U.L.L.H.K.L.L.L.L.L.L.L.I.T.' ' n ! > r r r r r r r r : y y : r y r e r y : t : r r r r r r r r r r r : : y r r r r r y r r r e : r r r r r r r r y r r r r r r r r r r r r r y r r r r r r r r r = y r r r r r r 0 y r : y r : r r r r r r r r r r r r r r : r r * y r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r = y r r y : : % % $ o dXvXvXdXnXxXxXnXdXcXxXxXxXdXxXxXcXcXzXzX@XdXdXxXzXzXdXdXdXxXzXzXcXdXzXzXcXxXdXdXdXxXcXcXdXmXcXcXdXcXdXmXnXxXfXdXxXzXxXm.{ ' ' S u u > c y y m.mXNXmXmXmXmXmXMXMXMXMXSXMXMXMXmXmXnXnXxXxXxXzXzXzXdXdXdXxXzXzXzXzX@XdXxXxXcXzXdXcXcXvXcXcXcXnXxXcXdXnXnXdXzXzXzXxXzXzX.XxXdXdX.X.XzX.X.XzX.X X.X.X.X.X X.X.X.X.X.X.X X@X|.|.|.|.|.|._.|.|.|._._._.|.(._.(./.(.(./././././.~./.~.~.!.~.~.Y.T.~.T.T.T.T.T.Y.L.Y.U.Y.Y.L.L.U.L.L.U.L.L.L.L.H.S.L.L.H.H.H.H.H.H.H.H.S.H.H.H.H.H.H.H.H.H.H.G.S.H.A.H.H.H.H.H.S.Z.K.H.U.L.S.L.H.U.D.U.S.L.L.L.D.S.L.S.F.H.S.G.G.H.H.H.H.H.H.H.H.H.L.H.H.L.L.S.L.L.L.L.U.L.U.U.U.Y.T.T.T.~.~.T.~.T././.~./.!./.(./.(./.{.(.(.(.(.(.(.(.(.(.(.(.(.(._.`.`.|.|.|..X.X X.X.X.X.XdX@X XdX@XdXnXnXdXxXcXxXcXvXxXzXxXxXxXdXxXxXxXcXcXcXxXnXxXxXzXcXdXmXdXzXzXdXxX.X'.zX'.zX.X X X X|.|.|.|.|.|.|._.|._._.^.|.^.(.(.(.(.", "D Z D G D D Z Z Z H Z Z Z H H H D D D Z D C D Z Z D Z Z Z Z Z B C Z Z C Z Z Z Z Z Z Z G D Z D D Z Z D Z Z D Z Z Z Z Z H Z H H Z Z H Z H H Z H Z J Z H H H Z H H Z L H H J H H H H P H P H J J J J H H L H H H H H H L H Z L J Z H Z Z H L Z H Z Z Z S Z L Z ( G L L Z ( Z L Z Z Z Z Z Z Z Z L Z D D F [ S.H.L.D.H.H.H.S.H.H.S.S.A.H.G.K.G.S.A.H.S.S.S.S.S.S.S.S.S.S.S.S.H.S.S.S.H.S.A.S.S.G.H.A.A.A.A.A.A.h.A.A.A.A.h.A.A.A.Z.A.A.h.A.h.h.h.g.z.h.l.k.g.g.g.g.f.k.a.a.a.a.a.a.i.i.i.u.a.u.a.u.u.i.i.i.i.i.i.i.a.a.a.i.a.a.a.z.a.a.z.i.a.a.a.i.a.u.i.a.a.a.a.a.a.a.a.a.k.a.f.a.a.a.a.a.a.i.i.a.a.i.i.a.a.a.i.d.z.f.f.f.f.f.g.g.g.g.g.k.h.h.h.h.h.l.A.z.S.A.S.S.H.H.H.S.L.S.S.U.L.U.I.L.I.L.L.Y.U.P.Y.T.U.T.T.T.T.T.T.T.(.T.T.T.T.P.T.T.T.T.T.~.~.T.~././././././.(.^.(.(.(._.(.`._._._._._.}.^.`.^.`.{.|.`._.|._.{._.`.(.`.(.(.(.[._.[.(.(.(.(.(.^.^.(.(.(.^././.(.(.(.(.(.(.(.(._.(.^._._.|.`.(._.(.(.^.^.(.(.(.{.{./././././.~./.~.~.~.~.(.~.~./.(.[.^.(./.(.(._.(.(.|.|._._.|._._.[.}.|._.|._.|.|.|.'..X.X.X.X.XdX.X.XdXdXzXzXzXzXxXdXdXxXdXzXzXzXzXzXzXzXzXcXzXdXcXzXdXcXdXxXxXdXcXdXdXdXdX@XdXdXdXdXdXdXnXcXmXdXdXmXzXzXzXzXdX.X.X.X.X|.`.`.(._._.(././.!.I.T.P.R.hXgXgXaXpX{ / y % % $ o Z T.T.T.T.T.T.T.T.T.T.T.T.T.~.T.T.T.T.T.T.P.P.L.P.Y.P.Y.P.P.Y.Y.T.U.U.U.P.L.U.L.L.L.L.J.L.L.L.Y.L.U.L.L.L.U.L.L.L.L.L.L.' ' ' ! t r r r 0 * y r r : t 0 : : 0 0 = 0 0 * * 0 y : > 0 r r 0 r r * r * r r r r r r r : r r r r r r r r r ; y : ; e r r = t r : = r r r ; q r e r : : r r : : r > : : > ; q 0 0 r * ; r : r 0 r r r r r r r r r r r r * * t y r * * : : 0 > q y r 0 r r r r r r r r r r r r r r r r r r r r r r r r r r e r r 0 : ; ; $ % o cXcXcXcXxXxXxXxXzXcXxXcXxXcXxXdXnXdXdXdX.XxXzXzXzXzXdXdXdXzXzXvXnXdXcXdXzXzXxXxXxXxXdXxXcXcXdXdXmXcXmXdXzXdXcXxXxXxXmXm.' ] ! u t y y u y y y F.fXnXmXmXmXmXMXMXmXMXSXMXMXMXmXMXnXnXcXdXJXzXzXzXdXxXdXdXzXdX.XxXzXdXdXxXzXcXzXcXcXcXcXvXnXdXnXnXnXxXdXdXzXzXxX.XzXzXxX.X.XdX.X.X.X@X.X.X.X'.@X.XdX.X.X.X.X X.X.X.X X X'.|.|.|.|.|.|.}._.|.}.{._.}.(.(.(.(././.(.!.(././././.^.~.~.!.~.~.~.T.~.T.T.T.T.~.Y.T.U.Y.Y.L.L.L.L.S.S.L.L.L.U.L.L.H.L.L.H.S.H.H.H.H.G.G.H.H.H.S.H.H.H.H.H.H.S.H.H.H.H.H.H.S.H.U.L.F.U.S.D.U.H.L.Z.L.S.D.S.L.H.G.L.L.L.L.L.H.S.H.H.S.H.G.S.H.H.H.L.S.L.S.H.L.L.L.L.L.U.L.U.P.U.T.Y.T.T.~.~.T.~.^././././././.(./.(.^./.(./.^.^.(./.(.(.(.(.(.(.`.(.|._.|._.|.|.|.|..X.X|..X.X.X.XdXdXxXdXxXdXcXxXxXxXxXxXxXzX@XxXxXdXxXxXxXcXxXxXcXzXxXcXnXdXdXnXzXzXdX.X.XzX.XdX.XdX.X.X X|.|.|.`.|.|._.|.`.|.(.`.^.`.^.`.(.(.(.", "Z D Z Z D D Z H Z Z Z H Z H Z Z Z D D H Z F D Z D A Z Z Z C Z Z Z C A Z C D B Z Z Z Z Z Z Z Z B Z D Z D D Z Z H H S Z H J Z H H Z H L Z H H Z H Z L H Z Z H H Z D D Z H F H H H H H H H H H H H J H H L H J H U H H P Z L Z H H Z H L Z H H H H L Z Z L Z S Z Z Z Z Z Z Z Z L Z L S L S Z P Z Z H Z L T A.H.D.L.H.H.H.H.H.H.H.H.A.H.G.Z.H.H.A.A.S.S.A.S.S.A.S.D.S.S.S.S.G.S.S.S.G.H.S.S.S.A.Z.G.A.A.A.h.A.A.h.A.A.A.h.h.A.h.h.h.h.A.h.D.h.h.h.h.h.k.h.g.g.g.f.g.z.k.z.a.a.d.s.i.i.a.a.a.u.a.u.a.a.t.i.i.i.i.i.i.i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.i.a.a.a.a.a.u.z.a.a.a.a.a.a.a.a.a.a.s.i.i.i.a.i.a.i.a.a.i.z.a.z.d.f.f.f.f.f.f.g.g.g.k.h.h.h.g.h.h.l.l.A.S.A.S.A.H.H.H.D.J.K.Y.U.P.K.L.I.L.Y.U.Y.U.Y.P.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.~.T.T.~.T./.~./././.(.(.(.(.^._.`.(._._.|._._._.|.`.|.{.^.|.|._._.{.^.|.`.(.^.|.^.|.(.(._.(.(.(.(.(.(.(.(.(.(.(.(.(.(./.~.(.(.(.(.(._.(._.|._._.`.{.(._.|.^.(.(.(.(.(.^./././././.R.~.~.~.(.~.~.^.^././.~./.(.(.(.^.(._.(.|._._._.|.|._._.}.}.|.|._.|.|. X X'..X@X'.dXdXdXdXdX@XdXzXzXzXdXcXzXdXxXdXzXzXzXzXxXvXxXzXdXnXzXzXcXzXzXdXdXdXcXdXcXdXdXnXzXdXxXzXnXdXdXxXdXmXdXmXdXzXzXdX@X.X.X|.|.|._.|.{.`.^./.~.T.T.T.L.!.hXgXgXaXM.{ Q u : ; $ $ o S T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.Y.Y.Y.U.U.P.P.Y.U.Y.P.Y.T.U.Y.U.P.L.L.L.L.L.L.L.K.Y.L.L.L.Y.L.U.L.L.K.L.L.L.L.F.' { ' Q u ; r r r r * ; r * * y ; q > * y : e : e r r r r r * r r r r e r y : r r r r r r r r r r r r r r r r r = ; y * r t = r r r y r r ; y 0 > : = y : r 0 * q y r : y q r ; ; e > r r r r r r r r r r r r r r r r r r t > : * : y : y e e ; ; ; y ; ; ; ; 0 r ; 0 r r r r r r r r r r r r r r r r : r r = r r = > ; = % $ o cXcXcXcXxXxXvXxXzXvXzXcXdXzXzXzXdXxXdXdXdXdXdXcXzXzXzXzXzXdXzXzXdXxXdXdXzXzXzXzXxXxXxXxXdXcXdXcXdX XcXcXcXxXxXdXcXcXvXm.' ] ) f u > t u u u u > Q.mXMXmXmXmXMXMXMXmXnXmXMXMXmXmXMXcXxXcX.XzXzXzXdXdXzXzXdXzXdXxXdXcXzXdXzXcXcXzXcXvXdXvXcXcXnXdXcXxXdXxXzXzX.XzXzXzX.XxXxX.XzXzX.XzXzX.X'.dXdX.X.XdX.X.X.X.X.X.X.X'. X|.|.|.|.|.|._.}._._.|._.|._.^.(.(./.^.(./.(.^.~.(./././.~.^.~.~.~.T.~.T.T.T.T.T.T.Y.Y.U.Y.U.U.L.U.L.L.L.L.U.S.D.L.L.L.L.H.L.H.L.H.H.H.L.U.H.H.S.U.H.L.S.H.H.G.L.U.H.H.U.A.H.U.U.S.H.H.S.L.U.Z.L.H.D.L.U.Z.S.L.P.P.L.L.S.L.L.H.Y.H.H.H.H.H.H.H.L.H.S.S.S.L.S.L.L.S.L.L.U.U.U.L.Y.U.~.~.~.T.~.~.~./.!.(././.!.(./.(./.(.(./.).^.^.(.(./.(.(.(.(.(.(.(.(.(._._.|.|..X.X|..X.X.X.X.X.X'.dX.XdXcXdXxXxXxXxXxXxXzXxXxXxXdX@XxXxXcXxXxXxXcXvXcXcXdXnXdXdXzXcX.XzX.XdXdXzX'..X.X'.'. X|.|._.{.|.|.(.|.(.`._.|.`.^.(.(.(.(.", "Z Z D Z G Z D Z H Z D D D D D D D D Z D D Z Z D Z D Z Z Z Z Z Z Z Z Z F Z Z C Z Z B D Z Z D Z G Z Z D D D Z D D H Z D D D Z D D L H Z D H Z L L H Z Z H Z J L J H Z H H D H H Z J L L L J H H L H P L H H H J J H Z H H H H H H H Z Z J J G Z Z Z S P _ [ { [ M.aXpXpXaXaXgXaXgXaXgXgXaXaXgXaXgXaXaXgXaXaXaXfXpXpX].hXQ.].Y.Y.Z.H.G.G.G.D.D.A.D.H.l.G.H.H.S.S.D.G.A.A.A.H.L.S.S.A.H.S.A.H.H.H.H.S.A.A.A.A.A.h.A.A.h.j.A.A.g.A.A.A.h.A.A.A.g.h.h.g.h.h.g.g.g.g.g.k.k.a.k.a.a.a.s.i.u.t.a.i.i.i.u.a.i.i.i.s.u.i.i.a.a.u.i.a.i.a.a.k.z.z.a.a.a.z.z.i.a.a.a.a.a.a.z.a.f.a.a.a.a.f.a.a.a.a.i.a.i.i.i.a.a.a.a.a.k.a.a.z.k.k.k.k.f.k.g.k.h.k.h.h.g.g.S.A.A.A.A.H.H.S.H.H.L.H.L.L.L.H.L.L.U.U.L.U.U.L.T.U.U.T.T.U.T.T.U.T.T.~.~.T.T.T.U.T.T.T.T.~.T.~.T.(.~./.!./.E.^.^./.(.(.(.|.`.`.`._._._._.`.`.(.`.|._.|.|.}.}.|.|.|.|.(.(.(.(.(.(.^.^.!.(.(.(.(.(.(.(.(.(.(.(.`.~./.(.(.(.(.`.^.(._.].|.`._._.^.|.(.`.(.(.^.{.(.(.^.^.(./././././.~.~./.~.~.~.^.[.!.(.^./.(.(.(.(.`.`._._.}.}.}.}.|._.|._.|.|. X X.X X X.X.X.X.XdXdX.XzXzXzXzXzXzXdXdXdXxXdXdXdXcXdXxXdXnXcXzXcXcXcXcXxXxXxXxXxXxXdXxXdXzXdXdXnXdXzXzX.XzXxXdXcXcXcXcXxXxXdXzXzXdXdX.X.X.X|.|._.{.{.(.(.~.~.(.R.R.T.'.gXgXgXpX{ c u e e > % o o K T.T.T.T.T.T.T.T.~.T.T.T.~.T.T.[.[.T.T.T.T.P.U.T.U.T.T.T.P.T.P.T.U.P.P.T.L.L.L.L.L.U.L.L.P.L.L.L.L.L.L.Y.Y.L.L.H.L.L.U.' ' ' c t e r r ; r r r r r : y : r 0 r 0 r ; ; y ; ; : : : = : e y r ; = r r r r r r r r r r r r r r r r 0 r 0 y r * e r r * r r : r 0 : r r r y : : : e * y r = y : * 0 ; e ; ; y r * 0 r r r r r r r r r r r r r r r 0 r r 0 r r r y ; r 0 r y r r 0 r = r r r r ; 0 r r r r r r r r r r r r r r r r r r : y : : y * * % $ o dXfXdXcXxXxXxXxXdXdXxXdXzXzXzXzXdXxXzX@XxXdXdXdXdXxXdXdXzXzXzXzXzXzXdXxXzXzXxXdXnXdXzXcXcXdXcXdXcXdXcXdXcXzXcXcXdXdXcXQ.' c / u > ; y y y n A y y m.dXMXnXmXmXnXmXMXmXMXmXSXMXmXnXnXdXcXzXzXzX.XcX.X.XzXdXzXzX@XdXdXxXxXdXvXcXzXxXxXxXvXcXdXvXcXdXcXdXdXzXzXzXzXzXdXzXzX XzXzXzX.XzXzX.X.XzX.X.XdX XdX.X.X.X.X.X.X X.X X|.|.|.|.|._.|.|._.`._.`._.(._.(.(.(.!.(.).)._.^.(././.(.!./.~.~.~.T.~.T.T.T.T.T.T.T.U.U.U.U.L.U.U.L.L.L.L.L.L.P.T.A.L.L.S.S.L.L.L.H.L.H.L.H.H.L.D.U.L.L.L.S.S.H.S.L.L.L.L.L.L.P.P.L.L.H.L.L.S.L.S.L.D.H.S.P.S.U.H.H.H.L.H.K.H.H.H.S.H.K.G.H.G.H.G.A.P.L.L.D.L.L.H.L.L.U.U.U.Y.T.Y.T.~.~./.~./././././././.(././././.(.~./.(.(./.(.(.^.!.(.^.(.{.(.(.|.`.|.|.|..X.X.X.X.X.X.X.XdXdX'..XzXzXcXzXcXzXcXzXcXxXxXxXxXfXcXxX@XdXcXxXxXxXxXcXxXdXdXdXxXzXzXdXdXzX.X.X.X.X.X X X'. X_.|._._.|.`.(._._.|.`.`.^.(.(.(.^.(.", "Z Z G D Z Z Z D Z H H L D D H Z D D D D D Z D Z D Z Z Z Z Z C Z Z C B Z Z C Z Z Z D C D D Z D Z Z D D Z Z D Z D Z Z D D D Z H Z Z Z H S Z L Z G H H H H Z Z Z Z D H H H H H H J H L J Z Z L P P P L L J J P H J H J H J H Z D H Q P Z S ) { m.pXaXhXgXgXgXaXgXgXhXaXhXgXaXaXaXaXaXaXaXaXpXaXaXpXaXaXpXaXaXaXpXaXaXaX7XaXaXpXaXpXm.aXQ.F.F.Z.D.D.G.G.G.G.D.D.S.H.H.H.A.G.A.h.A.G.S.A.S.D.H.A.H.A.h.H.A.G.A.A.j.Z.A.A.A.A.A.A.A.h.A.A.A.g.G.h.A.h.g.h.h.h.a.g.g.f.k.k.k.a.k.a.a.a.u.i.i.i.i.i.s.i.u.i.i.i.i.a.i.i.i.a.a.a.i.a.a.a.a.z.E a.a.a.a.E a.i.a.a.a.a.z.u.f.a.a.a.a.f.a.a.a.a.i.i.i.i.i.i.i.d.a.a.a.k.a.z.a.k.k.a.f.f.k.k.h.k.h.h.h.A.g.g.A.h.A.A.A.H.H.H.L.H.L.L.L.L.K.Y.L.U.L.Y.L.L.U.L.U.U.T.U.T.T.T.T.T.T.T.T.~.T.U.T.T.T.T.T.T.T.~.~.~.~./././.(./.^./.(.(.(.^./.^.`._._.|._.`.`.`.|._.{.|.[.|.|.|.|._.`.`./.`.^.(.`.`.(.`.(.(.(.(.(.(.(.(.(.(.!.^.(.(.(.(.(.(.(.(._.(.(.`.`.`.`.|._.^.^.`.`.(.(.(./.(.(./././././.~.~.~.~.(.~.(.E.^./.^./.(.(.(.(.(.`.(._._.}.}.}.}.|.|.|.|.|. X|. X|..X.X.X'..XdXdXzX.X.XzXzXzXzXzXxXxXxXdXdXxXdXxXdXnXdXdXzXmX.XxXcXcXcXxXxXxXxXdXcXxXzXcXnXdXdXdXzXzXxXxX.XcXzXdXdXcXcXzXzXzXzX'.'..X X|.|.{.|.`.(././.^.[.Y.I.W.hXgXgXaXm.{ Q u : e ; % % $ J ~.~.T.Y.T.T././.~.~.~.T.T.~.~.T.T.T.T.T.T.T.T.T.U.U.T.P.T.P.P.T.P.Y.U.U.U.Y.L.L.L.S.L.U.U.L.L.U.L.L.U.L.L.L.Y.Y.U.L.I.' ' ' Q t y r r 0 * y r = r : 0 ; r r r ; : r r = y ; ; q : y r : = ; r y r r y r r r r r r r r r r r r r > * r r 0 y : e r r r : r r r : 0 ; e = 0 e y = e ; ; 0 * y * t : e ; t = 0 t % * : r r r r r 0 r r r r r r r r = y ; * : r : ; ; ; > ; r ; ; e r r r r r r r r r r r r r r r r r r r r r r r r r : r r 0 : ; : % $ o cXdXdXcXzXdXxXxXdXdXxXdXzXxXzX.X@XzXzXzXxXdX.XdXdXdXdXdXdXzXzXzXzXzXdXdXzXzXdXxXdXxXxXzXdXmXdXmXcXcXcXdXcXxXdXdXcXdXdXm.{ ' ' c > ; e y q > > n y u b.MXnXnXmXMXmXmXMXmXmXmXMXmXmXnXcXcXzXzXzXzXzX.XdX'.zX'..XdXdXdXdXdXzXzXdXdXcXcXxXxXcXcXzXvXdXdXcXvXzXzXzXzXdXzX.XdXvXdX.XvXzX.X.X.XzXdX.X|.dXvX XdXdX X.XzX.X X X X|.|.|.`.|.|._.|.`.(.`._._.`.(.(.(.(.(.(.(.(.(.(.(.(.(././.~.!.~.~.~.T.~.T.T.[.T.T.U.T.U.Y.U.L.L.L.L.L.Y.P.L.P.L.U.L.L.L.U.L.L.L.L.L.S.S.L.H.L.H.L.L.L.L.S.U.L.L.L.L.S.S.L.L.L.S.L.L.L.H.S.U.L.S.L.S.H.H.P.H.L.A.L.L.L.H.H.K.H.H.h.Y.A.K.H.H.H.K.L.G.L.P.S.L.L.L.L.L.I.U.T.T.T.T.Y.T.~.~.~.~././.(./.(././.!.(././.^.(.(.(.[.(.(./.(.(.(.(.(.^.`.(.(.`.(._.`.|.|..X X.X.X.X.X.XdXdX.X.XcXzXzXcXzXcXzXxXcXzXxXzXvXxXcXxXxXJXdXnXxXcXxXxXxXdXnXcXdX.XzXdXzX.XzXzX.XdX@X X.X X|.|.^._._.(._._._.^.`.^.`.|.^.`.(.(.(.", "Z Z D D Z D Z Z Z Z Z Z Z H Z Z D D D D D Z D D Z B Z Z Z Z Z Z Z Z D Z Z D Z Z Z Z G Z D D Z D D D D Z D Z D Z Z H Z D D D Z Z D D D D Z H H D H Z H Z S H L Z Z Z D H H H J Z J Z H L P H H J S L U L G J K S H H H H H P P _ [ M.pXgXgXgXaXaXgXaXaXaXaXaXaXpXpXpXpXpXpXpXpXm.m.pXM.pXpXM.M.pXm.pXM.pXpXpX{ pXM.pXpXpXpXpXpXpXpXpXaXpXpXhXpXm.K.L.I.Z.Z.D.D.Z.S.S.A.G.H.G.A.Z.S.S.F.H.H.H.A.A.S.A.h.A.A.A.h.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.h.h.h.h.z.g.g.g.g.g.k.a.a.k.a.a.a.a.a.i.i.i.a.i.i.i.i.i.i.i.i.i.i.s.s.u.u.i.i.a.a.a.a.a.D.a.a.a.a.a.a.a.i.a.u.z.a.a.a.a.a.a.a.k.a.f.a.f.a.a.a.i.i.i.a.i.a.a.a.a.a.d.a.k.d.k.f.f.f.g.k.k.k.h.h.S.h.A.l.A.A.A.S.G.G.H.L.L.L.L.L.L.L.L.I.U.T.L.U.U.U.U.U.Y.L.T.T.T.~.T.T.T.T.T.T.T.T.Y.T.T.T.T.T.~.T.~.(././.~./././././.^./.^.(.(.|.{._._._._.(._.|._.|._. X}.}.}.{._._.|.(.|.`.(.(.(.(.(.(.(.(.(.(.(.(.].!.(.(.(.!.(.(.(.(.`.^.(.(.(.^.`.^.(.{.(.|.^.`.(.(.(.`.^./.(.^./.(.(.~./.~./.~./.!.E.~.~.(.~./.(.(.(.{.(.(.`.(._._._.}.}.|.|._.|.'.|. X X X X.X.X.XzX.X.XdXdXxX.XxXzXzXzXzXzXdXcXcXzXcXdXcXxXnXcXcXvXcXzXxXcXcXcXcXcXcXcXxXxXcXxXcXdXdXcXnXdXzXzXzXzXcX.XdXcXnXcXxXcXzXzXzX.X.X.X.X|._._.{.(.(.^.~./.T.T.].JXgXgXaXM.{ Q u t e ; ; % , o o K ~.~.~.~.~.~.~.T.T.~.T.~.T.~.T.T.~.T.T.T.T.T.T.T.P.T.T.T.P.P.P.T.U.P.U.U.L.L.L.L.L.L.L.L.P.L.L.L.Y.U.U.U.L.L.L.L.L.U.L.' ' ' Q u ; r r r 0 r * ; r ; : : e y * ; * * 0 r ; ; ; & e * r ; r r ; % r r r r r r r r r r r r r r r r y r * ; * y * 0 r r : : r r : y : : e 0 y : * e e ; y y * t r r : > e ; e t * y y r r r r * r r r r r r r r r r ; e e e : 0 : : 0 r e 0 > % > = r r r r r r : : r r r r r r r r r r r r r r r r y : r r : y : * $ $ & cXdXmXcXzXxXdXxXzXzXcXdXzX.X.XzXdXdXdXzX'.@XdXdXzXzXdXzXxX.X.X.XzXxXzXdXzX@XdXdXdXzXxXzXcXdXcXmXcXdXcXmXdXvXdXcXcXdXnXm.' ' / u r > e r y : u y u t u m.MXmXcXMXMXmXmXmXmXMXMXmXnXnXcXcXzXzXzXzX.XzXzX@X.XdX.X.X.XdX.XzXdXdXxXcXzXcXxXcXcXcXdXfXmXcXcXdXzXzXzXcXzXzXxXdXdXzXdXdXzX.XzXzXzX.XfX XdX.X X.XzX.X.X.XdX X.X X|.|.`.|.|.|._.|._._._._._.(.(._.(./.)./.(.(.(.(.(.(.^.{.(.[.^.~.~.T.T.T.T.[.T.T.T.U.T.U.U.U.I.R.L.U.L.P.P.P.P.P.U.L.L.K.U.L.L.L.L.L.L.L.L.U.L.L.L.L.L.L.L.L.L.L.L.L.S.P.L.S.L.L.L.L.L.H.D.H.L.L.H.L.L.L.H.H.H.L.K.H.K.H.S.U.H.H.H.K.H.H.K.H.H.L.H.K.U.S.L.S.L.L.I.L.U.U.U.T.T.T.I.~.~.~.!.~././././.!././.(.(././.(.(.(.(./.(./.(.(./.(.!.(.(.(.(.(._._._._.|.|.|. X.X.X.X.XzX|..XzXzX.XdXnXdXxXxXcXxXxXxXxXcXcXxXcXxXxXnXnXdXnXcXxXcXdXcXdXzXzXzX.XzXzX.XzXzX.X.X.X.X.X X|._.}.(.{._._.`.(.`._.{.{.|.(.(.(.(.(.", "Z H D Z Z Z Z Z Z H Z Z Z Z H Z Z Z D D D D Z Z G D D D Z Z Z Z Z Z Z Z Z Z Z Z D D D D D D D Z D D D D D D D D Z L D D D D D Z D Z Z D H Z Z Z Z H Z Z H H Z H H H H H J Z L J Z L L J H H J J P L P Z U U Z S J J J _ M.pXfXgXgXgXgXgXgXaXaXaXpXpXpXpXpXpXpX{ pX{ M.{ { { { { } { { { { { } { { { { { } { { { { M.m.{ M.{ M.M.pXM.pXM.pXpXpXpXpXpXm.m.Q.F.D.Y.G.S.A.G.H.A.D.A.S.A.D.D.S.G.H.H.H.H.H.A.A.A.H.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.h.A.h.h.g.z.g.g.g.g.k.z.a.k.a.a.a.a.a.a.i.a.i.i.i.i.i.a.i.i.u.a.i.i.i.i.s.i.i.i.i.a.a.d.E z.D.E a.a.i.a.a.a.a.u.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.i.a.a.a.i.d.a.a.a.z.k.k.k.k.d.f.f.k.k.k.h.h.g.g.z.A.h.A.A.A.S.S.H.H.L.S.L.L.L.L.L.L.Y.U.T.L.U.Y.U.U.U.Y.U.U.T.T.T.T.T.~.~.T.~.T.T.T.T.T.T.T.T.~.T.~.~./././.!./.!.[./././.(.(.(.(.^.|.|._.|._. X|._.|.|.|.}.}.|.}.|.|.(._.|.(.(.(.^.`.(.`.^.(.(.`.].(.(.`.(.(.`.!.(.(.[.^.(.(.`.(.(.(.(.^.`.(.(.|.^.|.`.^.(.(.(.(.(.^.(./././.(./.^.~.(.~.~./.~.(.~.^././.^.^.^.`.`.(._._.|._.|._.|.|.|.|.|. X'..X.X.XdX@X.XzX.XxXdXdX.XxXzXzXzXzXzXzXdXcXzXdXcXcXxXxXcXcXmXcXdXcXnXdXcXcXcXcXcXcXxXxXcXxXcXcXcXcXdXdXzXzXcXzXzXnXcXdXzXcXdXcXzXzXzX.X.X|.|.|.|.|._.{.`.(./.[.T./.hXgXgXaXpX{ Q u e r ; ; r % % & K ~.~.~.~.~.~.T.~.~.~.~.T.T.T.~.T.T.~.~.T.T.T.P.T.T.P.P.T.P.P.P.P.U.U.U.U.U.U.L.L.L.L.L.L.L.L.U.Y.U.U.L.U.L.U.L.L.U.L.L.' ' ' Q t r r r = r ; e { LXLXLXLXLXLXLXLXgXc e r { LXLXLX' r ; y ; ; y e r r r r r r r r r r r r r 0 r r ; r y ; e 0 r LXLXLXLXLXLXLXLXLXLXLXLX- - LXLXLXpXe * r r r e = e HXLXLXBX> > ; 0 r : r r : r r r r r r r r r r IXLXLXLXLXgX; ; % gXLXLXLXPXIX- ; r ; e r r ; ; r r r r r r r r r r r : r r r r = r r r 0 : ; : % % o dXdXdXmXcXxX@XdXzXzXdXdX.XzXzX.XdX.XdX'.dXzXdX'..X'.zX.X.XzXxXxXzX'.@XdXzXzXdXdXxXzXxXzXmXdXdXdXdXcXcXdXcXdXxXcXdXcXcXQ.' ' ' u e e : r > y y u u u y y m.dXMXnXNXMXmXMXMXmXMXmXnXnXcXdXzXcX.XzXxX'.'.zXdXdXdXdXdX@XzXzXdXxXdXdXdXxXxXzXcXcXmXcXdXdXcXdXzXzXdXcXzXzXzXzXzXzXzXzXzXzXzXdX.XzXdX%XdXvXvXdX.XzX.XzX@X.X|..X|..X`.|.|.|.{._._._._._._.(.(.^.(.(.(./.(.(.(.(.(.(.(.(.(.E.~.~.T.[.~.~.T.T.T.T.T.T.T.U.T.U.U.L.U.P.U.L.L.P.P.P.L.U.L.L.Y.L.L.L.L.L.L.L.L.H.L.L.L.L.L.U.Y.U.L.L.L.L.L.L.P.L.L.L.L.L.L.L.L.L.G.G.L.H.L.D.L.H.L.S.L.H.L.H.L.S.H.H.H.H.H.H.H.L.L.H.L.L.L.U.L.L.L.L.L.I.U.U.T.T.T.T.~.~.~.~.!./././.(././.(./.(././.(.(./.(.(.(.^.(.(.(.(.(.(.[.^.{.(.(._._._.|.|.|.|..X.X.X.X.X.X.XzX.XzXxXdXxXdXnXzXcXdXxXvXzXxXdX.XcXxXxXdXnXdXxXxXxXvXxXcXxXzXdXzXzXdXxXzXzXzX.X.X.X.X|.'.|.}.}._._._._.^.`.^._.|.`.^.(.(.`.(.|.", "Z Z Z Z Z Z D Z Z Z D D H H Z Z Z D D D D D D Z Z Z Z Z Z Z Z Z Z Z Z Z H Z Z D Z D Z Z D D D D D D D D D D D D A D D Z D D D Z Z D Z D Z Z H H Z Z Z S Z Z H Z H H H D H D Z H J L H H J S P P Z P I H ( J I Z [ pXhXgXgXgXaXaXaXaXpXaXpXpXM.M.{ M.{ { { ' ' ' / / n Q ^ u u u u S u S u u u u u S u S c S ^ ^ Q ' n ' ' ' { { { { { { M.M.M.M.pXM.pXm.pXm.m.m.F.n.F.H.D.D.A.S.G.z.G.H.H.S.H.H.H.S.H.H.S.A.A.A.A.A.h.A.A.A.A.A.A.A.A.A.A.j.h.A.h.z.g.g.h.z.g.g.k.f.f.i.a.a.a.a.i.i.i.a.i.i.i.i.a.a.i.i.s.u.s.u.t.i.u.s.i.i.a.i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.z.a.a.a.a.a.u.a.d.a.a.a.z.a.a.d.k.a.k.k.k.k.k.g.h.h.g.h.A.A.A.A.h.A.S.H.H.L.L.L.L.L.L.U.U.I.T.U.U.T.U.U.Y.U.U.Y.U.T.T.T.T.T.T.T.~.T.T.T.T.Y.T.T.T.T.T.~.~.~./././././.~.^./.~././.^.(.(.^.|.[.|._.`.}. X|.|.|.|. X|.|.|._.|._._._._.`.(.(._.(.(.(.`.(.(._.(.(.(.(.(.(.(.(.!.(.^.(.(.^.(.(.(.(.(.(.|.^.`._.(.(.(.(.(._.(./.(././././.(.(.T.{./.!./.(././.!./.(.(.(.(.(.|._.^.|._.}.}.}.|.|.|.|.|.'.'. X.X@XdX.XdXdXdXzX@XdXdXzXzXzXzXzXcXdXzXzXcXdXcXxXxXxXxXdXnXcXcXcXcXcXcXxXcXcXcXnXcXJXxXcXcXxXxXxXxXdXcXxXzXzXxXdXdXdXxXdXcXzXcXzX@XdX'.|..X|._.|._._.(.^.(./.~.].hXhXgXaX{ { ^ u y 0 r ; y r * & $ o Z ~.~.(.~.~./.~.~.~.T.~.~.~.T.~.T.~.T.~.T.T.T.T.T.P.P.P.T.T.U.P.T.P.P.Y.L.L.L.L.L.L.L.L.L.L.L.L.U.L.L.P.U.P.P.P.L.L.L.K.' { ' n y * r r y : e * { LXLXLXLXLXLXLXLXLXPXu > { LXLXLX{ ; ; ; ; ; ; e : r r r e : e r r r r r r r r r y 0 = > e 0 : LXLXLXLXLXLXLXLXLXLXLXLX; * LXLXLXpX; ; ; * ; : r e IXPXLXIX- > ; * ; r r r r r r r r r r r r : t gXLXLXLXLXIX> ; e IXLXLXLXLXHX- % r : r ; e > e r r r r r r r r ; ; e : r r r e : : r : : : y : % $ o nXdXzXcXxXzXzXzXzXcXdXdX.XzX.XzX'.zX.X.XdXdX.XdX.XzX.XzX.XzX.X'.zXzXzX.XdXdXdXdXdXdXxXdXdXdXdXcXnXdXcXnXfXdXdXdXdXdXdXm.' c / u y : ; : ; ; e y > u Q y y n.fXMXcXmXmXmXmXmXmXmXnXcXvXdXzXzX.X.X.XzXdX.XdX.XzX.XzX.XdXzXdXdXzXzXzXzXzXcXdXmXcXcXdXdXmXcXdXzXdXdXzXcXxXdXvXdXdXdXzXzX.XzXzXzXzX@XdXcX.X.XxX.XdXdX.X X.X|.|.`.`.`._._.[.|._._._._.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(././././././.T.~.T.~.T.T.T.T.T.T.Y.U.L.T.U.P.P.L.L.Y.P.P.P.T.L.U.U.U.U.U.L.I.L.L.L.L.L.L.L.U.L.L.U.U.L.L.P.P.P.P.L.P.L.P.L.L.P.L.L.L.L.L.L.L.L.L.L.G.G.L.L.L.S.L.H.U.K.H.U.H.H.H.H.H.L.K.D.U.L.S.L.L.L.P.L.U.T.U.T.T.~.~.~.~.T././.(././.!.(././.(././.(.(./.{.^./.^.(.(.(.(.`.T.(.~.(._.(.`._._._.|.|.`. X.X.X.X.XdXdX.X.XzXzXzXzXcXdXnXxXxXcXxXxXzXxXxX.XxXxXcXnXcXnXdXcXxXxXxXcXdXxXdXzXzXzXdX.XzX.XzX.X.X|..X|.}.}._.|._._.`.`.`.`.(.|.^.|.{.(.(._._.", "G Z Z Z Z Z D D D Z Z D Z Z Z S D D Z D D D D D H Z H Z D Z Z Z Z Z D D D D Z Z D Z D Z D D Z D D D D D D D D D D D D Z D D H Z D H D Z Z Z Z Z Z H H H H Z Z L H Z H Z L H H L L J H J P P J K P L H I / pXgXgXgXgXgXgXaXaXaXaXpXpXM.{ { { ' ' _ Q Q u u t u r e y e e r y u > : : : r > ; > > ; 0 e e = e e y t y y y t S u S S ^ ' ' ' { { { { M.{ M.M.m.M.M.M.m.m.F.Z.A.D.D.A.G.S.D.G.G.H.Z.H.H.H.A.H.S.H.A.A.W.A.H.A.S.H.A.A.A.A.A.A.A.h.h.g.g.z.g.h.a.a.g.k.k.k.k.a.a.k.a.a.a.i.i.i.a.a.a.i.a.i.i.i.i.i.s.a.u.s.u.i.a.i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.u.a.a.a.a.a.a.k.a.a.a.a.a.a.f.a.a.a.a.a.a.a.a.a.a.a.d.k.k.d.f.f.k.k.h.z.h.h.A.h.A.A.A.A.H.D.H.S.H.L.L.L.L.Y.U.U.U.T.U.Y.U.Y.Y.U.T.U.U.U.T.T.Y.T.~.T.T.~.T.T.T.T.~.T.T.T.T.~.~.T.~.T./././././.~./.^.~.(.{./.(.^.^.(.|._.`.}.}.|.|.|.|.|.}.}.|.|.|.|._._._._.(.(.^.(.(.(.(.(.(.(.(.`.(.(.(.(.(.(.(.(.(.(.^.`.^.`.(.(.^.`.(.(.(.^.(.(.|.^.^.`.(.(.(./././././.~.(.^.~././././././.(./.(./.(.(.(.{._.|.}.}.}.}._.}.|.'.|.|..X X.XdX'..X.XdXdXdX.XzXdXdXzXzXxXzXdXcXzXcXzXzXcXcXxXxXxXxXnXcXnXcXcXcXcXmXcXcXmXcXmXcXnXnXnXcXxXxXxXxXcXdXxXzXzXzXcXcXnXxXcXcXdXdXzXzX.X'..X X_._._._._.(.(./.(./.hXgXaXaXpX{ / u e e r = ; y ; % % o K !.~.(.~.~./././.~.~.~.T.~.T.T.~.T.T.T.~.[.T.P.T.T.T.T.P.U.U.P.P.Y.L.L.L.L.L.L.L.L.S.L.L.L.L.U.U.Y.Y.Y.L.A.L.P.L.L.K.Y.' ' c ~ t r ; r r : : ; ' LXLXLXLXLXLXLXLXLXLXM.% ' LXLXLX' * % ; ; > ; 0 r r r r e ; : : r r r e r r r r ; r r y : : ; LXLXLXLXLXLXLXLXLXLXLXLX% % LXLXLXpX; * * 0 * * ; ; M.pXpXM.% % * 0 0 r > r r r r r r r r r : : ; UXLXLXLXLXLXu % u LXLXLXLXLXHX- % * ; $ r ; ; ; r r r ; r r r r : > : e r r r = r y = ; : * ; * % $ o dXzXzXzXzXzXzXzXdXdX.X.XzX.X.XzX@X.X.X.XdX'.dXdX'.zX.X.XzX.XzXzX'..X.X.XdXdXdXdXxXdXzXzXdXdXcXdXdXdXdXdXvXnXdXdXxXdXcXQ.' ' ' n t * t r y y ; e u > y e : y b.MXmXmXmXMXMXmXmXcXcXcXdXcXzXzXzX.X.X.X.X XdX.X.XdX'.zXdXdXzXcXzXzXdXzXcXzXcXdXdXcXvXmXcXdXnXzXnXxXzXdXdXxXdXzXzXzXzXdXzXzXdXzXdXdXdXdXdXcX.XzXdXdXdX X.X'..X`.`.`.|.|.}.}.|._._._.(.`._.(.(.(._.(.(.(.(._.(.(.(.(./.(.[./.[.T./.~.~.~.~.~.T.T.T.T.U.T.U.U.U.P.P.P.U.U.P.P.T.U.Y.Y.T.U.Y.U.T.L.T.L.L.U.L.Y.U.U.T.U.L.U.U.I.P.L.P.L.P.P.P.P.L.L.L.L.L.L.L.L.H.L.L.L.L.L.L.L.H.L.L.F.H.H.G.S.H.H.H.H.H.L.H.H.L.L.L.L.L.L.P.P.T.U.U.T.T.T.T.~.~.~.!.)./.!././.(.!.(././.(./.(./.(.(./.(./.(.[.(.(.^.(.(.(.(.^.^.(._._.(._.`.|..X|..X.X.X.XdXzXzXxXzXzXxXdXxXdXzXxXdXxXxXvXxXvXcXxXxXzXnXcXcXcXxXxXcXxXcXnXdXdXzXzXzXdXzX.XzX'..X.X'.|.|.}.}._./.|.(.(.^.^.(.(.^.|.(.{.|._._.^.", "Z Z Z Z Z Z Z Z D Z Z D D D H D D D D D D D D D Z D D D D Z D Z Z D D D Z D Z G Z D D D D Z Z D D D D D D D D D D D D Z D D Z Z H Z Z H Z Z Z Z Z Z Z H D H H H D H H H H J L H Z L J H U H J I H _ M.hXgXgXgXgXgXaXaXpXM.M.{ { ' ' ! c S y u y y e ; ; e r r e r r y ; : : = : : : : r : : ; y ; r r r = ; 0 : ; ; e e e e r e r y u u u u S Q ' ' ' { { { { M.} m.M.M.M.m.F.Z.Z.H.H.H.H.H.D.S.H.H.H.H.H.S.S.S.A.A.H.A.S.S.A.H.G.j.A.A.A.A.A.Z.h.h.h.z.z.z.g.g.a.g.i.a.a.z.a.a.a.a.a.i.i.i.a.a.i.i.i.i.i.u.i.u.i.u.u.i.u.s.i.a.a.a.a.a.a.a.u.a.t.a.a.a.a.a.a.a.a.a.a.a.a.k.k.a.a.a.a.f.k.a.a.a.i.d.i.i.a.a.a.z.k.k.k.k.f.k.k.k.h.g.h.h.A.A.A.A.A.G.S.H.H.H.L.L.L.L.L.U.U.T.T.U.U.T.Y.T.U.T.U.T.T.U.T.T.T.T.~.T.T.~.T.T.~.T.T.T.~.T.~.T.~.~.[.!././.[./././././././.^.(.(.(.(.(.`.{.}.`._.|._.|.}.|. X}.|._.|.|.`._._.(._.(.(.(.(.(.^.(._.(.(.(.(.(.`.(.(.(.(.(.(.(.(.(.(.(.(._.(.(.(.(.(.(.(.`.(.(.(.(.(.(.(.(./.(.(.(./.[.[.[./.(././.(.(.(.(.(.(.(.(.^.|.|._.}. X}.}.'.|. X|.|.|. X'..X.XzXdXzXzXzXzXzXzXzXzXzXzXzXzXzXxXxXxXxXdXxXxXxXxXcXnXnXnXnXnXcXnXnXmXmXnXnXnXnXnXnXnXnXnXxXxXxXxXxXdXxXzXxXzXdXdXzXdXdXxXdXcXzXdX.X.X'.|.|.`._.(.(.(.^.!.T.].pXpXpXM.{ Q u t y : : y 0 q 0 % & o J /.(.~.!././.(.~.~.~.~.~.~.~.~.T.~.~.~.T.T.T.T.T.T.T.T.P.U.T.Y.L.L.U.L.L.L.L.U.U.L.L.L.L.L.L.U.L.T.L.L.U.L.L.L.L.P.F.K.' ' ' Q u r r : r : = e { LXLXLXIX$ e aXLXLXLXBX- c LXLXLXc : ; % e M.pXpXpXM.u y ; t { ' ' c ; 0 0 _ { { _ ; ; : : e : ; : : % LXLXLXLX$ % $ & % % LXLXLXpX> M.sXpXx % * ; ' { { c > * % y { pXpXaX{ u 0 r ; r ; y = e ; IXLXLXPXLXLXsX% M.LXLXLXLXLXIX% % % % ' pXpXaXpX{ ; r q * ^ { ' u u sXpXM.u : q r r : q r r : * $ $ o nXdXnXdXzXzXzXzXzXzXzX.X.XzXdX'.dX X.X.X'..XdX.X.X.XzX@X.XzXzX.X.XzX.XdXdX.X.XdX.XzXzXzXdXvXdXcXcXdXcXdXdXdXdXbXdXdXcXm.' ' ' u y r y r : : ; e e : > e % % % [ mXmXmXMXmXmXmXfXMXdXcXdXzX.X.XzXzX.X.X@X.X.XzX.X@XdXdXdXdXzXzXzXcXzXvXzXdXcXcXcXcXdXdXnXdXcXcXdXcXdXxXdXzXzXdXcXzXzXzXzXzXzXdXfXdXdXdXcXzX@XdX.X.X.X X.X.X`.`.`.|.|.|.|._._._._.^.(.(.(.]._.(.(.(.'._.(.`.^.(.(.(././.(./.~.T./.~.~.T./.~.T.T.U.T.T.U.Y.Y.T.U.P.P.Y.P.T.T.U.T.U.U.T.U.T.T.I.L.Y.U.U.Y.Y.T.Y.L.T.Y.P.Y.I.P.P.P.Y.P.P.L.U.P.U.P.L.L.L.P.L.L.L.L.L.L.L.L.P.L.L.S.L.S.L.H.U.H.H.L.F.L.S.A.L.L.L.L.P.L.L.L.P.T.T.Y.T.T.~.T.~.~.~.~.~./././.(././././.(.(./.(.(././.(.(.(.^.^.(.(.^.(.^.[._.^.^.|._._.|._.|.|.|..X.X.X.X.X.XdX.XdXzXzXdXxXzXdXvXxXxXxXvXxXxXzXcXvXfXcXnXnXnXxXxXcXcXcXxXdXnXcXzXzXxX.X.XdX'..X.X.X.X'.|.}.}._.|.^._.(.(.(.(.`.(.(.(./.|./.|._.", "Z Z Z H Z Z Z Z Z Z Z Z D Z H Z Z D D D D Z Z B G Z D Z D D Z D Z D Z D D Z D Z D D D D D F D D D D Z D D D A D D D D D D L A Z Z Z Z Z Z Z H Z H Z H Z D H Z H H L H H H Z H J J P H J I J P [ pXgXgXgXgXaXpXaXpXpXM.{ { ' ' Q u u y y > y y : > : : ; r 0 r q r : : > : : : y : : : : y ; ; : e r r r r r y r : : : e r r r r e r : : > > y u t i c Q ' ' { } M.{ M.{ M.M.{ M.F.F.A.H.H.L.S.U.H.H.H.H.G.S.S.S.H.H.A.H.A.S.H.A.A.S.H.A.A.A.A.j.h.h.g.l.g.g.g.g.g.z.a.g.a.f.a.a.a.a.a.i.a.a.a.a.a.i.a.i.u.s.i.u.u.u.i.u.i.i.i.i.a.d.a.a.a.a.a.a.a.a.a.a.u.a.a.u.a.a.a.a.a.a.a.a.a.f.a.a.a.a.z.a.k.i.z.k.z.i.a.d.a.d.a.k.f.k.k.k.h.g.g.Z.A.z.A.A.A.l.D.H.H.H.H.L.L.L.U.L.L.T.I.T.U.U.T.U.T.U.T.T.T.T.T.Y.T.T.T.~.~.T.T.~.~.T.~.T.~.~.T.~.T.!.~./././.{././.(.T.(././.{.(.(.(.(.^.`.}.{.|.|.|._.|. X_. X}. X_._.`.`._._._.(._.(._.(.`.!.(.(.^.(.(.(.(.(.`._.(.(.^.^.(.(.(._.(._.(.(.(.(.(._.(.(.(.(.(._.(.(.(.(.(./.(./.(.(.(./././.(.(.(./.(.(.(.(.(.^.(.|.{._._._.|.|.|. X'..X|.|.|..X@X.XzXzXzXzXzXzXzXxXzXzXzXzXzXxXzXzXxXzXxXxXxXxXcXcXdXnXnXnXnXnXnXnXmXcXcXMXcXMXcXnXcXnXcXnXxXxXxXxXxXxX@XzXxXzXzXdX@XzXcXdXxXzXzXdXdXdX.X'.|.`.|.{.|.{.^.^.{.F.{ ' { ' ' ! y e > e e : : r > 0 % % $ o S /./././././.(.(.~.(.~.~.~.T.~.T.T.~.T.~.T.T.T.T.T.T.P.T.U.T.U.T.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.U.L.U.L.L.L.L.L.L.P.L.K.' ' ' c u 0 r r r r y e ' LXLXLXgX- $ n LXLXLXIXo ' LXPXLXc & % M.PXLXLXLXLXLXLXaX; ; PXPXLXIX: * * PXLXLXpXe * y * * e e : % % LXLXLXLX$ $ $ $ $ % LXLXLXgXIXLXLXLXPX{ = % gXLXLXgX% % sXPXLXLXLXLXLXPXpX; ; y ; ; e > : gXLXLXgXLXLXaX$ aXLXLXgXLXLXgXo % ; IXLXLXLXLXLXLXIXc ; * IXLXLXgXIXPXLXLXPXc : * : : q r r r * ; $ o $ dXdXdXdXzXzXzXxX.XxX.XzX.XdXdX.X.X.X.X.X.X.X.X.X.X.X.XdX.X.X.X.X.X.XdX X.XdX'.dX@XzX'.zXdXdXdXdXdXcXdXdXdXcXdXdXdXdX@Xm.{ ' / u y : * : : ; e e : ; : & $ $ $ % m.mXcXMXdXmXmXMXdXmXdX%XzXzX X.X.X.X.X.X.X.X.X.XdX.X.X.XzX.XzXzXcXdXzXzXcXcXdXcXcXdXcXdXcXdXzXcXzXcXnXdXcXmXdXdXdXdXzX.XzXzXzX.XvXdXdXdX.XxX.X.X.X.X X X`.`.`.`._._.|._._._._._.`.`.(.(.(.(.(.(.(./.(._.|.^.(.(.(.(././././.~./.~.T./.T.T.T.T.T.T.U.U.T.U.U.P.P.U.L.Y.T.U.T.U.T.T.U.T.T.T.T.T.T.T.T.T.T.P.T.T.T.T.T.T.P.P.Y.P.P.U.L.K.U.L.L.L.U.P.P.P.P.L.L.L.D.L.L.L.G.L.L.H.L.L.K.H.H.D.L.S.L.L.L.L.L.L.L.L.P.L.P.L.U.U.T.Y.T.T.~.~.~.~.(.~.(././.(.(./.(.(.(./.(.(./.(.(.(./.(.[.(.^.{.(.(.(.`.(.(.(.(.(.(.^.|._._.|. X|..X.XdX.XdXdX@X'.zXdXzXzXxXxXcXxXxXvXxXxXxXxXxXcXdXxXxXdXxXxXcXcXcXdXcXcXdXzXzXzXdXxXdXxX.X#X.X.X|._.|.}.}._.{.(.(.^.`.^.(.^.(.(._.|./.|._.|.", "Z Z Z Z Z C Z Z Z Z Z D D D D D D D Z Z Z Z Z H D Z D D D D D D Z Z Z H Z L Z L Z L Z Z Z G D Z D D D D D D Z D D Z D Z G Z Z Z L Z G H Z Z Z Z L Z L Z D D D D G D Z Z H J Z P Z U H J _ m.gXgXgXgXgXaXpXpXm.} { ' Q u u y y y r r r r r r r : r r r r r r r r r r r r r r r r 0 r r r r r r r e r r r r r r r r r r r r r r r r r r * r r r r y y y y u u u ^ ' ' { { { { m.M.{ [ b.n.F.A.D.H.L.L.G.H.H.L.S.S.G.S.S.S.A.H.H.h.S.A.S.S.A.A.j.Z.l.h.h.h.h.g.k.k.a.g.a.g.f.s.g.a.i.a.a.a.z.i.i.i.a.a.i.i.i.u.i.u.i.i.i.u.a.i.a.a.a.a.d.d.a.a.i.a.i.u.a.a.i.a.i.a.a.a.a.a.d.a.a.a.z.i.i.i.a.z.a.a.i.z.k.f.i.k.i.f.i.i.f.f.k.h.k.h.h.h.h.l.l.A.A.H.G.h.G.H.H.L.L.H.L.P.P.P.P.P.P.P.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.T.T.T.[.T.T.(.T.~.T.T.(././.(.(././.(./.(.(././.(./.(.(.`.(.(._._.|._.|._.}.|.}.|.|.}._.`.`._._._._.(.(.(.(.(.(.(.(.(.`.].(.`.(.`.^.`.^.(._._.(.|.`.^.^.^.{.(.(.^.(.^.(.(.^.|.(.(.(.{.(.(.(././.^./.(.(.(.(././.(.(.(.(.(.(.(.(.(.|.(.^.`._.|.|.|.|.|.@X|..X|.'.'..X'.dX@X.XdXzXzXdXdXcXxXdXxXxXcXdXzXcXzXcXcXxXxXcXxXxXnXnXnXnXcXnXcXcXmXmXmXmXmXmXmXnXnXxXnXxXcXxXcXcXxXxXxXxX@XdXdXxX.XzXzXzXcXzXzXzX.X.X.X X|._._.{._.(.(.(./.].[ y * r r ; r : r 0 r r r = > ; % $ o K /./.~.[.^././././././.~.~.T.~.T./.T.~.T.T.T.T.T.T.T.U.T.U.U.U.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.A.U.U.L.' ' ' c e 0 r ; r r r e { LXLXLXIXf n IXLXLXLXaXo c LXLXLX' $ - LXLXLXLXLXLXLXLXLXx % pXLXLXLX; > { LXLXPXx % ; * ; ; ; % * % % LXLXLXLX$ o o $ $ $ LXLXLXLXLXPXPXLXLXIX% % UXLXLXIX$ f LXLXLXUXpXIXLXLXPXe > ; e ; ; r r IXLXLXsXPXLXIXo IXLXIXsXLXLXgXo & sXLXLXLXLXLXLXLXLXgX- > IXLXLXLXPXLXLXLXLXIX- ; % ; e ; : r ; % $ o dXdXzXdXzXzXzXzXdX.XzX.XzX.X.XzX.X.X.X.X.X'..X.X.X'..X.X.X.X.X.X.X.X.X@XzX.X.X.XdX.X.XzX.XzX.XxX.XzX.XxXdXdXxXdXdXdXdXm.' ' / u y e e : y : e : ; % % , i hXnXMXmXmXcXcXcXcXcXdXdX.XdX.X#X.X.X.X.X.X.X.X.X XzX.XzX'.xXzXzX.XzXzXvXzXvXdXzXcXvXdXfXvXdXdXnXcXdXcXcXvXdXdXfXdXcXdXdXdXdXzXzXdXdXvXdXzXzX.X.X.X X|.|.|.|. X}._. X|. X_._.}.}.^.(.(.[.(.(.(.^.(.`._._._.(._.(.(.^././.~./.~.~.~.~.T./.T.T.T.T.T.P.T.T.U.U.T.T.T.U.T.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.U.P.U.P.Y.L.L.U.U.P.U.U.L.U.L.U.L.L.P.L.U.L.L.L.L.S.L.L.L.H.L.L.S.L.L.L.S.L.L.L.L.L.U.P.U.U.U.T.T.T.T.T.~.~.~.~.(.~.(./.(./.(.(.(./.(./.(.(.(.(./.{.(./.^.(.{.(.(.(.!._.(.(.(._.[._._._._. X|. X X X.X'.@XdX.XdX@XcX XdXcXdXdXdXvXcXcXdXcXcXcXzXxXzXvXcXcXcXnXcXcXcXcXdXvXmXdXdXcXdXdXdXdX.X.X'.'..X|.}.}._._.(.(.(.(.(.(.(.(.(.`.(._._._._._.", "Z Z Z Z Z Z Z Z Z Z Z D G Z Z Z Z G Z G Z L G Z Z D C H D D D D Z H Z Z H Z Z S H Z H G D D D G D D D D D D D Z Z D Z D Z Z H H Z G Z L Z Z Z Z H Z Z Z D D D D Z P P L Z Z U G P S ( pXgXgXgXgXgXaXpXpX{ { ' ' u u y u e > r r r r r r r r r r r : r r r r r r r r r r r r r r e r r r r r r r r r r r r r r r r r r r 0 e r r r r r r r r : r ; ; e : > t t y u u Q ~ ' ' { { m.{ M.{ m.b.F.U.G.G.G.L.S.A.G.S.S.G.S.G.H.H.H.H.S.H.A.h.A.A.h.j.l.l.h.h.h.k.h.h.g.z.f.f.f.a.a.a.f.i.k.i.f.i.k.i.a.a.a.i.i.i.i.a.i.u.u.i.i.i.i.a.a.d.d.k.i.a.d.i.i.i.a.a.i.a.a.a.a.a.d.d.a.a.a.a.a.i.a.g.z.i.z.a.d.i.i.i.i.i.k.i.k.f.f.g.k.k.k.k.h.l.l.l.h.h.A.h.A.S.A.H.H.L.L.L.L.L.P.P.P.P.P.U.T.T.T.T.T.~.T.T.T.~.T.T.T.~.T.T.T.T.~.~.T.T.T.T.~.T.R.(.!.!./././.(./././././.(./.!.(./.(.(.(.(._._._.|.|._.}.|.|.|.}.}.|.|.`.|._._._.(.(._.(.(.(.(.(.(.^.(.(.(.^.^.`.^.(.|.(._.(.^.^.^.(.|.^.(.`.`.(.^.(.(.{.(.(.(.|.(.(.(.(.(./.(.(.(./.^.(.(.(.(.(.(.(.(.(.].(.(.^.`.|.[.|.|.'.|. X X`.'.|.'..XdX.XdX.XzXzXvXzXcX@XxXcXxXdXxXdXdXcXzXzXcXdXcXxXxXxXcXcXcXxXnXnXnXnXnXmXnXcXmXMXmXnXmXnXnXnXfXcXcXxXcXcXxXvXxXxXxXdXnXdXxXzXzXzXzXzXzXzX.X@X'.|.|.|.|.|.(.^.|.(.`.~.~.H % % % % * ; r r * r : 0 ; ; ; % $ o K /.(.^.(././.[.^./.^././././.T./.T./.T.~.~.T.T.T.I.Y.U.T.U.T.Y.L.L.L.L.L.L.U.L.L.L.P.L.L.L.L.L.L.L.U.U.U.L.L.L.L.U.S.L.{ ' ' Q t r r ; r 0 r y ' LXLXLXLXLXLXLXLXLXLXf $ c LXLXLXn $ { UXPXLXM.% c LXLXLXpX* u PXLXLXM.- aXLXLXHX% ; ; % ; ; ; ; : % % LXLXLXLXo o o $ $ LXLXLXPX{ { IXLXLXLX* ; IXLXLXJX& c LXLXLXpX- > { u - % ; % e e = * r gXLXLXsXgXLXLXl LXLXgXM.LXLXIX o gXIXLXIX> - gXLXLXLX% - gXLXLXLX6X& gXLXLXLXf ; % ; ; : : r * % $ o xXdXzXcXzXzXzXdXdXdX.XzXzX.X.X.X.X.X'..X.X|.|..X'.@X.X.X.X.X.X.X.X.X.X.X.X.X.XdX.X.X.X.X.X'.zX.XzX.XzX'..XxX@XdXdX'.dXQ.{ ' ' u y r y e r r * ; ; & o u dXMXMXcXcXmXcXcXcXxXxXvX.XdX.X.X.X.X.X.X.X.X.X X.X.X.X.X.XxX.X.X.XxXzXzXzXcXcXzXcXcXdXvXdXdXvXdXnXdXcXdXcXxXcX%XdXdXdXzXdXdXmXzXzXcXdXdXdX.X.X.X X.X.X'. X`._.}.}.}._._._._.|.}.}.|.(.(.(.(.(.(.`.(.(.`.^._._._.(.(.^././././.~.^.~.~.~.T.~.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.[.T.(.T.T.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.P.P.U.Y.L.L.U.U.U.U.U.U.U.U.U.L.L.L.U.U.L.H.L.L.L.H.L.L.U.S.L.L.F.L.U.D.L.L.P.U.P.P.P.P.T.T.T.~.T.~.~.(.~.~.~.~././.(.(././.(.(.(.(./.(./.(.^./.^.).{.(.(././.(.(.(.(.(.[._._._._.|.|._. X'..X.XzX'.dXzXcX XvXdXcXdXcXcXcXcXdXdXmXdXdXcXzXzXvXzXdXdXcXdXdXcXvXdXcXcXcXdXzXzXxXdXdXdXdX'..X'.|.'._.|._._.`.(.|.(.(.(.(.(.(.(.(._.(._._._.", "Z Z Z G Z Z Z Z Z Z Z D Z Z D G Z Z H D G Z C Z D Z D Z D D D D Z S H Z Z H Z Z Z Z H Z D D D D D D D D D D D Z Z Z D Z Z Z Z Z Z Z L Z G Z Z L D Z L Z D D D D H S H H L L I Y ' pXgXgXgXgXgXpXM.{ { ' / u u t y : : r e e e : r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r r r r r r r r r r r r r r r r r > ; r t e : r e : e y u u n ~ ' { { { { { [ b.m.A.H.D.D.H.L.S.L.H.H.H.H.H.H.H.H.S.S.h.S.A.A.A.A.l.l.l.h.k.h.g.k.g.a.g.f.j.f.g.i.i.z.f.i.i.i.f.z.a.a.a.a.i.i.i.i.u.i.i.i.k.a.u.a.a.E z.z.a.a.a.a.a.i.a.i.a.a.u.a.a.u.a.a.d.d.a.a.a.g.i.z.a.f.a.g.z.i.z.i.z.i.d.f.g.i.f.f.z.g.k.l.g.g.A.l.A.A.A.A.H.A.G.H.L.H.L.H.L.P.P.P.U.P.U.Y.T.T.T.T.T.T.T.T.T.T.T.~.~.T.T.T.~.T.~.~.~.T.~.~.~.T.~.T.~././.).(.^./.!.(./././.(./.(.(.(.(.(.`.[.{.|._._.|.}.}.|.}.}.}.|._.(.`._._.`.(.{.(.(.(.^.(.(.(.(.(.(.`.(.`._.(.`.^.|.(.(.|.(.`.`.`.(._.(._.(.`.(.(.(.(.^.(.(.[.(.(.(.(.(./.(.^.(./.(./.(.(.(.(.(.(.`.`.(.(.`._._.|._.|.|.'.|.|.'.'..X|..X.XdX@X.XdX.XcXxXxXxXxXxXzXzXcXdXcXxXxXdXcXcXcXcXcXcXcXxXnXnXnXnXnXnXnXnXmXmXmXnXMXmXcXnXnXcXnXJXxXcXcXcXxXxXxXnXdXdXxXdXzXdXdXzXzXzXzX.XzXzX'.'.|.|.|.|.`.^.(.^./.(.(.].K $ $ % % % : : * y r 0 : * % $ $ P (.~.(.~.[.E.^.(.(.)./.(.~.~.T.T.~.~.T.T.T.T.T.T.T.U.U.T.U.U.L.L.L.L.L.Y.U.L.L.P.U.L.L.U.L.L.L.L.L.L.L.L.L.L.L.L.L.U.L.' { / Q u 0 ; ; r r q ; ' LXLXLXLXLXLXLXLXLXaXo o f LXLXLXc $ , & - t { pXIXLXLXLXM.& - gXLXLXaX- IXLXLX{ - % % * ; : : * * % % LXLXLXLXo o o $ $ % LXLXLXsXo $ sXLXLXLX& o IXLXLXgX$ - PXLXLXLXLXPXgXpX- % % % * * e : ; UXLXLXsXM.LXLXgXLXLX{ sXLXLXIX , o - - ' pXgXLXLXLXLX% $ UXLXLXIX- % > LXLXLXM.% ; % : ; r 0 ; % $ o nXdXdXdXzXzXzXzXdX.XdXdX.X.X.X.X.X.X.X X.X.X|..X X.X.X.X.X.X.X'..X.X.X.X.X.X.X.X.X.X.X.XxX.X.XcX.X.X.XzXzX.X.X@XdX@XdXm.' ' Q u e : r : r : * % $ o c hXxXnXdXnXvXmXcXcXcXxXdXdXdXdX.X.X.X.X.X.X.X.X X'..X.X.XdX.X`.zXxXzXzXzXzXzXdXcXzXvXdXcXdXvX%XdXmXdXcXdXcXcXvXdXcXdXdXdXdXdXdXcXdXcXdXdXdXdXzX.XdXdX.X.X|.|.`._.}._._.}. X_._.|._._.|._.(.(.(.^.(.(.`.`.`._._._._.(.(.(.(./.(.~.~./.~.~.~.[.T.~.T.T.T.T.T.~.T.T.T.T.T.T.T.T.T.~.T.~.~.T.T.~.~.T.~.T.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.U.T.P.L.U.U.L.Y.U.U.Y.U.T.U.U.U.U.L.U.L.L.L.L.L.H.L.L.L.H.S.P.L.L.H.L.L.L.U.P.P.P.P.U.T.T.T.T.T.~.~.~.~.T.~.~.~.(./.(.(./.(./.~.^.(.(./.(.(././.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.`._._. X|.|..X.X.X.XzXzX.X XdXcXcX XcXdXmXdXmXdXcXdXzXcXmXcXzXzXzXnXcXdXvXcXvXdXcXcXmXzXcXzXzXdXdXzX.XzXdX.X.X X|._.|._._.(._.(.(.^.(.(.(.(.(.(.(.(._._._.", "Z D D C D Z Z Z Z Z G C Z D Z Z Z Z D Z Z L Z Z Z Z D D D D D D H L H H S Z J Z G Z Z Z G L D D D D D D D D Z D Z H D D Z G Z Z Z Z Z Z Z L G Z D H Z Z D D H D Z Z L D U Z / m.HXgXgXgXaXpXm.{ ' ' ^ u u e : ; r r r : > ; : : r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r : : r r : : r r y t ; e y u u u u / ' { { { ' { { n.D.D.G.G.H.S.H.S.H.H.H.H.A.H.S.S.J.A.A.A.A.A.h.z.h.h.h.k.g.z.g.a.g.f.f.a.f.f.k.i.d.f.z.i.i.i.a.a.a.i.a.i.a.i.i.i.i.i.i.i.a.a.a.a.x.E a.a.a.u.u.a.i.a.i.a.a.a.a.a.a.a.d.d.x.E a.a.i.a.a.a.g.i.a.a.i.k.i.k.f.f.f.k.d.g.f.g.h.k.h.A.H.l.h.A.A.h.A.G.G.H.H.L.L.L.L.P.P.P.P.P.U.P.U.T.T.P.T.T.~.T.T.~.T.~.T.~.~.T.~.~.T.~.~.~.T.~.~.~.~.^./.^.^.(./.(.(.(./.(.(./.(./.(.(.(.(.(.(.}._.|.|.|.}.}.}.}.}.}.}._.`.^._._.(.`.(._.^.(.(.(.^.^.(.(.^.(.`.(.(.(.(.(.`._._.(.`.`.^._._._.[._._.(.`.(.(.(.(.(.(.(._.(.(.(.^.(.(.~.(./.(.(.(.(.(.(.(.(.(.(.(._._.(.`.|.|.|.|.|..X'.|.'.|.|..XdX@X.XdXdXdXdXvXxXzXxXxXJXzXxXcXcXxXxXxXnXcXcXcXcXcXcXcXnXnXnXnXnXnXmXnXcXmXmXmXmXnXmXmXxXnXnXnXxXxXcXcXcXxXxXvXcXcXdXxXxXdXcXcXzXzXzXzXdX.X.X'.|.'._._.(.`.(.(.(.{.(.(./.].S $ $ % % : : y : = r y * ; % o o P ~.(.E.(.{.{.(.(./././././.T.~.~.T.~.~.T.~.~.T.T.U.Y.T.L.U.U.U.L.L.R.L.U.L.L.U.L.L.P.U.S.L.L.L.L.S.L.L.L.L.L.L.L.L.S.S.' ' ' c u r r r r r ; ; { LXLXLXPXgXIXgXaXc + o o c LXLXLXf $ o sXIXLXLXLXIXLXLXLXpX- o { LXLXLXn LXLXPX, $ % % * % * : ; : : % LXLXLXLXo , o $ $ % LXLXLXsXo sXLXLXLX$ , gXLXLXIX% & f IXLXLXLXLXLXLXIX- $ % ; * * e ; gXLXLXM.z LXLXLXLXLXl 6XLXLXgXo o n sXLXPXLXLXIXLXLXLX$ - gXLXLXgX$ $ $ LXLXLXpX$ % % % ; r r * $ $ & dXzXdXxX@XzXzX'.dXdXdX XzX.XzX.X.X.X.X.X|..X X.X.X'. X.X X.X.X'..X|..X.X.X.X.X.X.X.X.X.X.X.X.X.X.X X@X.X.XzX'..XdX.X'.m.{ ' ' c y * r y = * % % o # t xXdXdXMXJXmXvXcXcXcXcXdX@XdXfXdXdX.X.X X.X.X|. X.X.X.X.X'. X@X.X.X.XzX.XzXzXzXcXzXzXzXdXdXcXdXdXdXmXdXdXmXdX%XdXmX.XxXdXcXdXmXvXdXcXdXvXvX.XdXzX.X X@X.X.X.X'.`.|.}. X_.}._._._._._._.^.(._.(.{.(.(._.`.(.(.`.{.}._.^.^.(./.(./././.~.~.~.~.R.T.~.T.~.T.~.T.T.T.~.T.T.~./.T./.~.~.T.~.~.T./.T.~.T.~.T.~.~.T.T.T.~.T.~.T.T.T.T.T.T.T.T.T.P.P.Y.U.Y.U.U.U.U.U.T.L.U.U.L.L.U.U.L.L.L.L.L.L.L.L.U.L.L.L.L.U.L.L.L.L.P.P.L.P.T.T.T.T.T.~.T.~.T.~.~./.~.!.!././././.(.(.(.(.(.~.(././.(.(././.(././.(.(./.(.(.(.(.(.(.(.^.`._._._. X.X|..X.X.X.X.XdX XvX XcXdXcXcXdXdXcXmXdXzXcXdXdXdXzXdXcXdXcXnXnXdXcXnXcXvXdXdXdXzXdXxXxX.XzX@X X.X X|.|._._._.{.(.(.^.(.^.^.).(.(.(.(.(.(.(._._.", "Z Z B G Z Z Z Z Z Z Z D Z Z Z Z Z Z Z G Z H Z Z Z D D D Z Z L Z H H H Z Z Z Z Z H Z Z L Z D Z Z Z D Z D G Z D Z Z Z G Z L H Z Z Z Z Z Z G D D D Z L D D D D L D H D U Z ) m.gXgXgXgXaXpXM.{ ' c u u y y ; : e : r r r ; r r r r r r r r r r r r r r r r r r 0 e r r r r r r r r r r r r r r r r r r r r r r r r r e 0 r r r r r r t r r r r r r r r r r ; r 0 ; : ; = : r r r y u u c Q ' ' { ' { ' [ n.H.H.H.J.H.S.H.H.H.H.H.A.S.H.h.S.h.A.A.A.A.A.l.l.h.g.g.h.g.g.g.f.f.a.z.a.i.k.f.f.i.i.i.i.i.i.i.i.a.u.a.a.i.i.i.d.i.i.i.i.i.i.a.a.u.a.u.a.i.u.a.a.d.d.E x.D.E z.E a.E D.d.a.a.k.i.i.k.i.k.z.a.a.z.f.f.f.f.f.f.f.g.k.h.h.l.h.G.A.h.A.A.A.A.A.S.H.H.H.H.L.H.L.L.L.P.P.Y.P.T.U.T.Y.T.^.T.T.~.~.~.T.~.~.T.T.~.T.U.XXXXT.~.~.~.~.~.^.~./.(.(.(.(.(.(.(.(./.(.(.(./.(.(.(.^.`.`.|._._._._._._._._._.|.(._.|.(.^.(.(.`.`.(.(.(.(.(.(._.(.(.(.(.(.(.(._._._._._.|.(.`.(.|.|._.|.}._.(.`.`.|.^.`.(.|.^.(.(.(.(.(.(.(.(.(.!.(.(.(.(.{.(.(.(.`.(.|.{.|._.}.}.}.|.|.|. X X.X|.|. X.X.XdX.XdXdX.XcXzXzXzXxXdXxXdXdXxXxXxXxXxXxXxXxXcXcXcXxXmXcXnXnXnXnXnXnXmXmXmXmXmXmXmXmXnXMXmXcXcXcXxXcXcXcXcXxXxXxXxXzXxXzXzXxXcXdXzXzXdXxXzX@XdX.X X'.|._.|._.(.{.(.{.^./././.].u % $ % % * * * ; * : r % $ $ K ~.(./.(.^.(.(.(.(././.(././.~.~.~.~.T.T.T.T.T.T.T.U.U.Y.Y.L.U.L.L.Y.K.J.U.L.L.L.L.L.S.L.L.S.L.S.S.L.L.S.L.L.S.U.L.S.Y.' ' ' Q t r ; r 0 r r r { LXLXLXIX# o o o o c LXLXLXc o sXLXLXPX6X- - LXLXLXsX$ $ $ IXLXLXgXLXLXsX, $ & & % % y * * ; r ; LXLXLXLXo $ $ $ % LXLXLX6X& o M.LXLXLXo o gXLXLXgX, $ , - - { 6XUXLXLXLXpX& $ ; * ; ; ; IXLXLXsX PXLXLXLXPXo sXLXLXIX - PXLXLXgXf $ m.LXLXLX$ $ gXLXLXPX$ , - LXLXLXsX$ $ % : % ; r * % $ $ XdXdXdXdXdXdXdXdXdXbXdXdXdXdX.X.XdX'..X|.|..X|.|..X.X X X.X|. X|..X X X.X X.X.X.X X.X.X.X.X.X.X.X.X.XdX.X.X.X.X.X%X|.m.c ' ~ c y * ; * : % $ o o u dXnXcXcXcXMXdXcXcXcXcXcXdXxX.XdX X X.X.X X.X X.X.X|..X.X.X.X.X.X.X.XcXxXzXzXzXzXdXzXzXzXzXzXzXzXdXdXdXzX%XfXdXnXzXzXzX.XzXzXzXzXdXdXcXdXdXdXvX.X'.zX'.'..X.X|. X`.`._._.|._._._._.`._.|._.|.^.^.(.(._._._._._._._.(.(.|.`.(.(./.~.~.[./.~.T.T.~.~.~.~.T.T.~.T.~./.~.T./.~.~.T.~.~.[.~.~.~.~.~.!.~.~.~.~.T.~.T.T.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.U.Y.Y.U.U.L.Y.U.U.L.U.U.P.L.L.L.H.L.L.L.L.L.L.U.L.L.L.U.L.P.L.L.L.P.P.P.P.P.U.T.T.T.~.~.~.~.~.~.~.~.~.~.~./././././.^.(././.~.(./.(././.(.(./.(./.(./.(./.(.(./.(.(.(.`.(._._._.|. X.X.X.X.X.X.XzX.X.XvXdXcXdXdXmXcXdXdXcXdXnXcXdXzXzXcXdXnXvXnXdXdXcXdXdXdXdXdXdXzXdXdXdXdXdX.X.X|.|.|.|.|.[.|.(._.(.(.(.(.(./.(.(.(.(.(.(.(.(._.", "Z Z Z Z Z Z B G Z Z F Z G Z Z Z Z Z Z Z H Z Z Z H Z D D L G Z Z H Z H H H Z L Z Z Z Z Z H Z G Z D Z Z G Z Z Z D Z Z H Z Z Z G Z Z Z U Z Z D D D Z Z D D D D Z D G Z Z { gXgXgXgXaXpX} } ) n S : > r : r e ; r = = ; r r r r r : r e r r t : r r r r r r r r r r r r r r r r r r r r e q r r r r r r r r r r r r r r r r r e r 0 r r r r r r r r r r r r r r r r : = : r r r r : > y : u u Q c ' { ' { ' [ n.L.G.H.L.H.Z.H.H.H.H.S.S.H.A.G.A.A.A.A.h.l.l.h.h.h.h.g.g.g.f.f.f.f.g.f.f.i.k.k.g.k.f.k.f.k.z.a.a.i.a.i.i.i.i.i.i.i.i.i.i.i.a.a.u.a.u.i.i.i.i.a.d.z.E z.a.k.z.a.a.a.a.i.i.a.a.i.f.i.a.a.a.i.k.f.f.f.f.f.z.g.g.k.h.h.h.A.g.A.g.A.A.A.A.S.A.G.H.H.H.L.L.L.L.L.U.P.P.P.P.T.U.T.T.Y.T.T.~.T.~.~.T.~.~.~.T.~.XXT.E.~.~.~.~.^.~.!.^./././.(.(.(.(.(.(.(./.(.^.(.(.(.(.`.`.(.^._._.|.|.|._._.|._.`.`.^.(.(.`.^.`.(.(.(.^.(.(.(.(.(.(.(.(.(.(.[._._._._._._._.`.`._._._.{.|._.`.`._.(.^._.(._._.(.(.(.`.(.(.(.].(.(.(.(.(.^.`.(.(.(.|._._.^._.|._.}.|.}.|.|..X.X|.|..X.X'..X.X X XdXdXzX.XzXcXxXxXcXxXxXxX@XxXxXxXxXxXxXJXcXcXcXmXcXcXnXnXmXnXnXmXnXmXmXmXmXmXmXmXmXmXmXmXmXcXcXcXnXcXcXxXxXxXzXxXzXxXxXzXdXxXcXzXzXdXzX'..X.X'. X_..X_._.|._.`./.(.(.~.{.(.~.u $ o % % * * : t : * * % o o S (.~.(.^.~.(.(.[.(./.(./.~./.T.~.T.~.~.T.T.T.T.T.U.T.U.L.I.L.L.L.L.K.U.L.L.U.U.L.L.L.D.L.L.H.F.L.L.S.S.K.L.H.L.L.S.K.L.' ' n Q u 0 r ; r r ; r ' LXLXLXgXo o o o $ c LXLXLXc o HXLXLXIX{ c IXLXLXLX{ $ $ $ pXLXLXLXLXLXf $ $ $ & % % : ; y r ; * LXLXLXLXo o $ $ ; * LXLXLXpX M.LXLXLXo IXLXLXIX sXgXLXPX@ - LXLXLXM.$ - % % ; * ; IXPXLXM. gXLXLXLXgX# sXLXLXgX# c LXLXLXaXn sXPXLXLXPXo IXLXLXLXsXn UXLXLXPXc $ o % % 0 r r * % $ $ dXdXxXdXxX.XdXdXzX'.dX'..XdXdXdX@X X X X|.|.|..X|..X|. X|.|.|.|.|.|.|.|..X|.|. X|..X.X.X.X.X.X.XzX'.'..X.X.X|..XdX|..XQ.{ ' ~ S : ; ; * % % $ w hXcXdXdXcXxXdXnXdXcXcXcXdXdXdX.XzX.X.X.X.X.X X X.X|.'. X|.|..X.X.X.X.X.X.X.XxXzXzXzXzXzXzXdXzXdXvXdX%XcXcXdXdXdXdXzXzXzXdX.XzXzXzXdXcXdXdXcX.X.XdX.XzXzX.X.X.X.X|. X`._.|.}.}._._.`.|.^.(._.(._.|._.^._._._.|._._.{._.|.(.(.^.(.(.(.~.~.^.~.~.[.T.T.^.~.~.~.T.~.T.~.~.~./././././.~.^.~./.(.^./.~.[.~.~.T.~.T.T.~.~.T.~.T.~.T.~.T.T.T.T.T.T.U.T.U.T.L.U.U.I.I.I.I.U.U.U.L.U.L.L.L.L.L.L.L.L.L.L.U.L.Y.L.L.L.L.K.L.P.P.P.P.T.T.T.T.~.T.T.~.T.~.T.^.~.~.~./.~.~.~.[./././././.^.^.(.{.(.(././.(.(././.(./.(.(./.(./.(.(.^.`.|.|.|.|.|..X.X.X X@XzX.XdXcX%XdXvXdXdXmXcXcXdXcXdXdXdXdXcXzXdXzXcXdXdXcXcXcXmXdXvXcXcXdXzXdXxX'.dX@X.X.X.X|.|._.|._.(.|.(.(.(././.(.^.(.(.(./.(.(.(.(.(.", "D Z Z Z Z D D Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z H Z H Z Z Z L Z L H H Z H Z L L Z Z Z L Z Z H D D D D Z Z Z L Z Z Z G Z L D Z Z Z Z Z Z H H Z Z H D D D D D G Z L Z ' aXgXgXgXhXpXM.{ ' ! u y r r e : : : r r r r r r r r r r ; r r r r 0 r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r e q r r r r * y r r r r r r r r r r r r r r r r 0 r r r = y y : : r r r r : > ; 0 y u y c / ' ! ' ' { ' ` Q.F.H.L.L.H.G.S.A.A.S.A.S.A.A.A.A.A.l.z.h.h.h.h.h.h.h.f.g.g.f.f.f.f.k.f.f.f.f.f.d.f.f.i.i.a.a.a.i.i.i.i.i.a.i.f.i.i.a.a.u.u.i.u.i.u.i.i.i.a.a.a.x.a.a.E D.a.a.a.a.a.k.a.a.a.k.a.a.a.a.k.k.f.f.f.f.f.f.g.g.z.k.l.l.h.h.h.A.A.A.A.A.A.S.H.H.A.L.H.L.L.L.L.Y.P.P.P.P.U.U.T.U.T.T.T.T.~.T.~.~.~.T.~.~.T.~./.T.~.T.R./.~./.E.{.(.(.(.(.(.(.(.(.(.(.(.(.(.(.^.^.`.`.`.(.^.|.|._.(._.(.(.^.`.`.(.(.(.(.(.`.^.(.(.(.(.(.(.(.(.(.(.(.(.(.`.(._._._._._._._.|._.|.|.|.|.|.|._._.|.|.`._._._.(.(._.(.(.(.(.(.(.(.(.(.(.(.(._._.^.^._._._._._.|.|._.}.|. X X|.|..X.X X.X.X.X.XdX'.'.dXzXzXzXzXzXzXdXnXxXxXdXnXxXxXcXcXcXxXcXcXmXnXcXmXnXMXmXnXmXmXmXmXmXmXmXmXnXmXmXmXMXcXnXnXnXxXxXxXxXxXzXxXxXzXxXzXzXxXxXxXdXzXxXdXdXdXdX.X@X X'.`.|._._._.^.(.(.(.[./././.(.Z $ $ % % * w 0 > y % % $ K /.(././.^.(.(.(./.^././././.~.T.~.T.~.T.T.T.T.T.P.T.U.U.L.L.L.U.U.L.L.L.L.L.L.L.H.L.U.L.H.L.U.D.S.S.U.U.L.L.F.U.Y.K.P.' ' ' Q t r r r r r r : { LXLXLXgXo o o o $ , $ c LXLXLXf o aXLXLXLXLXLXPXPXLXLXsX $ $ - LXLXLXLXIX $ $ $ $ % % ; : 0 ; y % LXLXLXLXo $ $ $ ; - LXPXLXsX o sXLXLXLXo , gXLXLXUXo n LXLXLXIXIXPXLXLXPX- & & % * : * ; gXLXLX7Xo M.LXLXLXsXo { LXLXIXo - LXLXLXLXLXLXPXLXLXLX$ o gXLXLXLXLXLXLXLXLXgX o $ % % % e r * % $ o dXdXdXdXdXzX@XdXzXdX.XdXdXdX.XdX@X.X.X.X.X.X X'.|.|.|.}.|.|.|. X|.|.|. X|. X X.X.X.X.X X.X.X.X.X.X.X.X.X.X.X|.|. X X.Xm.' / ' f y ; ; % $ o u dXzXdXdXzXcXxXcXnXcXcXxXzXnXdXdX.X.X.X.X.X X X X X|.|..X|..X.X.X.X.X.X.X.X.XzX.X.XzXzXdXvXzXdXdXcXdXdXdXdXdXdXcXcXdX.XxXdXzXdXzXzXzXdXzXdXdX.XdXdX.XdX'..X'..X.X X'.|.|. X_.}.}._._.^.`.`.(.(._.^.{._._._._.^._.(._._._.^.(.(././.(.(.~.^.~.~.~.~.~.~.~.~.T.T.~.^.~././.(./././././.^././.~.~./.~.(.[.~./.~.T.~.~.T.~.T.T.~.~.T.~.T.T.T.T.T.T.T.U.T.Y.U.U.Y.Y.T.T.U.T.P.U.L.L.L.L.L.L.L.L.L.L.P.U.L.L.L.L.U.L.U.Y.L.L.L.P.P.T.T.T.T.~.T.T.(.~.T.T.~.~.~.~.~.~.~.~././././.(.[.(.E.(.(./.(.(.(.(./.(./.(./.(./.(./.(.^.^.{._._.|._. X.X.X.X.XdX.X.XdXdXdXdXdXmXdXdXvXdXvXcXdXxXcXxXdXzXzXzXdXdXnXdXdXdXcXdXcXvXdXdXcXxXdXdXdX.XdX.X.X|.|. X|._._._.(.(.(.(.(.(.(.(.(./.(./.(.(.(.(.(.", "Z Z Z Z Z C D Z Z Z D Z Z D Z Z G Z Z Z Z Z G Z H Z Z H G Z Z Z H Z L Z L Z Z H Z Z C G Z Z D D D D D Z Z Z Z D Z Z Z G Z D D Z Z H Z Z G Z H Z D D D D D D Z Z m.fXgXgXsXpXpX{ ' c u t y r r ; y : r r r r : : r r r ; : e ; y r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r : r r r r r r r r r r r r r r r r r r r r r : r : : t r r r r 0 r e = 0 > r u > S c c ' ' ' ' ' Z.S.L.H.A.H.H.H.S.A.S.S.A.A.A.G.A.A.A.h.h.h.h.h.l.h.h.g.g.g.k.f.k.k.z.k.f.f.k.d.z.k.k.a.a.a.a.a.i.i.d.i.f.i.i.i.a.i.u.u.i.i.u.u.u.u.i.a.a.a.a.a.a.a.a.a.a.d.a.a.a.a.a.i.f.i.i.k.a.a.i.a.f.f.f.f.g.f.g.g.l.l.l.l.A.A.D.A.g.H.A.A.A.S.A.H.H.H.L.H.L.L.L.L.P.P.P.P.P.Y.P.T.T.T.T.~.~.~.~.T.~.(.T.T.[.~.T./.~.~./.~././.(.(.(.(.^.`.(.(.(.(.`.(.(.(.(.(.`.^.^.^._._.{.|.(._._.(.`.`.(.^.(.(.(.(.(.(.|.].`.(.(.(.(.(.(.(.(.(.].^.^.`._._.(.|._._.{.|.|._.|._.|. X_.|.'.|._._.|.{._.|._._._._.|.^.|.(.(.(.(.(.(.(.(._.`.^.`.|.{.|.|.|._._.|.'.'.|. X.X X.X X.X.X.X.X.X.X.XdXdXzXzXzXzXxXxXxXxXxXxXfXnXcXcXxXxXcXcXcXcXnXmXmXnXMXMXnXnXmXmXMXmXmXmXmXmXMXmXMXnXnXmXnXmXcXxXxXnXxXxXxXxXxXxXxXxXxXxX@XdXcXzXdXxXdXdX.XdX'..X X`.|.`._._.(.(.(.(.(./.(.[._.].u $ $ % % * * : : % % $ o S (.~././.^.^.(.[.{././././././.T.~.T.T.T.T.T.T.U.Y.P.U.I.I.I.L.L.L.L.L.U.L.L.L.L.L.L.L.H.H.K.H.H.L.L.S.H.S.L.L.S.L.D.n.{ ' ' / i r y r ; = r y ' LXLXLXIXo , o $ $ $ $ c LXLXLX' - gXLXLXLXIXn sXLXLXgXo $ $ aXLXLXPXsX$ o o $ % % * = ; y ; * 0 LXLXLXLXo o $ $ % % LXLXLXM.$ o M.LXLXLXo o IXLXLXgX$ o { IXLXLXLXLXLXgXd $ $ $ % % % ; ; gXLXLXsX$ c LXPXLXw sXLXLXgXo o { PXLXLXLXsXn LXLXLXc IXLXLXUXHXLXLXLXHX- o $ $ $ % * ; r * % $ o dXdXdXcXzXzXdXdX@X.XdXdXzXdX.X.XdX.X.X X X.X|.|.|.|.|.|.|.|.|._.|.|._._.|.|.|.'..X|.|..X.X|..X|.'. X.X X.X|.|. X X X.Xm.' ' c u t * % % o ; hX'.zXdXxXzXdXxXvXcXcXcXnXdXdXdXcXzX.X.X.X X.X X.X|.|.|.|.'.|.`..X.X.X.X.XzX.X.XzXxX.XdXzXdXzXcX.X.XzXdXdXdX.XcXdXdXdX'.zXzXzXzXzXzX.XzXzXdX#X.XdXdXdXzX@X.X.X.X X|.|.|.|.'.|.}.}._._._.(.`.{._.|.(.(._._._._._._.`.`.^._.`.(.(.(.(.(.^.[./.~.~.~.~.[.~.~.~.~.~.~.T.E././././.(./././././.~.(./.~.[.~./.~.~.~.~.T.~.~.~.~.T.T.T.~.T.T.~.T.T.T.T.T.U.Y.U.U.Y.U.U.P.U.U.T.P.U.U.U.L.L.L.L.L.L.L.P.P.P.P.L.U.U.Y.L.L.L.L.L.L.P.U.U.T.T.T.T.~.T.T.T.~.~.~.R.~.~.~.~.~.(.~.~././.!.~.^.{.(.(.(./.{./.^././././.(./.(././.(.^.(.(.(.{.|.|.|.|..X.X.X.X.X.XdXdXdXdXdX XdXcXdXcXcX.XcXdXcXdXdXzXzXvXcXdXnXdXcXdXcXmXdXdXcXdXdXdXzX.XdXdX.XdX.X.X|.|.|.|.{.(.(.(.(.(.(.~.(./.(.(./.^./.(.(.!.(.", "Z Z Z G Z Z Z Z Z Z B D Z Z Z Z Z Z Z Z Z Z G L Z Z Z Z H Z H L Z H L Z Z Z Z Z D D D D Z Z Z D G Z D D H Z D Z H Z Z Z Z G Z Z Z S H U D D Z L D Z L Z Z A ' gXgXgXgXaXpX{ ' / u y : r r y r r = r : y e * r = r 0 r r ; ; r ; r r r : e r r r r r r r r r r r r r r r r r r r r r e 0 r r r r r r r r r r r r r r r r r r r r * t r r = r r r 0 y = ; e ; r r r r r r r r r r : 0 r r r y r r y u u / ' Q ' ' ' ` F.L.H.S.D.D.G.G.A.S.G.z.A.A.A.j.A.A.j.j.h.h.z.k.h.h.k.k.h.f.k.h.k.k.g.g.g.k.i.k.f.i.a.a.a.a.s.a.i.a.a.f.i.i.a.i.u.u.u.u.i.i.u.u.a.u.i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.z.a.k.k.i.z.i.k.d.k.a.f.k.k.k.h.k.h.h.h.h.A.h.A.A.A.A.h.A.S.S.H.H.S.H.H.L.L.L.L.P.L.P.P.P.R.Y.T.R.T.T.T.~.~.~.R.~.~.~.~.~./././.R./.~.~.~.~.(.(.(.(.(.(.(.`.`.^.|.|.(.|.(._.(._._.|._.(.{._.^.(.(.(.{.(.(.(.(.{.(.(.{.(.{.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.|.`._._.|._.|.|.'.|.|.|.|.`.`.'. X|.}.}.{.}._.^.{.^.|.(.(.(.^.`.`.(.(.(.|.^._._._._.|.|._.|.|.[.|._.|.|.|..X|..X.X.X|..X.X.X.X.X.X.X.X.XzXzXzXvXxXxXcXxXxXdXnXnXxXxXxXxXcXnXnXcXmXmXMXmXmXmXmXmXmXMXMXMXMXMXmXMXmXmXmXJXcXMXvXvXnXnXdXcXcXxXcXzXdXcXzXcXcXzXzXxXzXzXzXzXzXzX'.zX.X.X.X.X`.|.|._._.(._.(.(.[.(.(.{.^.(.u & & % % ; ; * % % o o K (.^././.(.(.(.(.(.(././.^.~.T./.T.T.T.T.T.U.T.T.U.T.U.Y.Y.L.L.L.L.U.L.Y.L.L.L.L.F.H.H.H.L.H.U.Z.H.L.H.L.S.U.Z.L.L.L.L.' ' ' c e r r 0 * = t % e % - $ o o o o $ $ % % % % % - $ o $ $ o w ' z o + $ o o , gXLXLXLX- o $ $ % % * r r r ; r = e - - $ o $ o $ * * % % $ $ $ $ $ $ o $ $ $ o o o $ o $ $ $ > n c n - o o $ o % % ; ; * * - - $ $ $ o o o o o o o o $ $ $ $ ~ c - $ o o , IXLXLXgX+ - n - o $ o $ & % * ; r * , $ o o dX@XzXzXdXdX@XxXdXdXdX.XdXdX X.X.X.X.X X X X|.|.}.}.}.|.}.}.}.}._._._._.|._._.{.|.|.|.'.|.|.|.|.|.|.|..X|.'.|.@X X`..Xn.' ' / u * * % o t dXdXdXdXxXdXcXdXdXxXcXxXdXdXxXdXxXdXzX.X.X'.'.|.|.|. X X|. X.X|.|..X|..X.X.XdXdX X.X.XzXzXzXxXdXzXzXzXzXdXdX XdXdXdXdXdXzX.XzX'.xXxX.XzXzX.XzX'..X.XdX X.XdX.X|.'..X|..X|.`.|._.|._.}._.|._.|.^._.(.|.[. X`.`._.(.`.^.(.|.(.(.(.(.(.(.^./.(././.(.~.(.T.~.~.T.~./.~./.~.(././././././.(.(./.(././././.^./././.~.T.~.T./.~.~.T.T.~.~.~.T.T.T.^.T.T.P.Y.P.Y.I.U.T.U.T.T.U.U.U.U.I.I.U.U.L.L.U.L.L.L.Y.U.U.L.U.U.L.U.L.U.L.U.L.U.U.T.T.Y.~.T.~.T.~.~.~.~.~.[.T.~.T.~.~.~.~.~./.!./././.(.(.(.(.^.{.^.`.(./.(./.!.(.(.(./././.(.(.^._._.`.'.|. X.X.XdX.XdX XdXdXdXdXdXdXdXcXzXzXcXzXzXcXzXcXzXzXvXdXdXdXxXdXdXcXdXcXdXdXvXdXzX'..XxXzX|..X.X X|.|.|.|.^.`.^.(.(.(././.(.(./.[.(.(.~.(./.(.(.", "Z Z Z V Z G Z Z Z Z Z Z B Z Z Z Z D Z Z Z Z Z Z Z L Z J Z L Z S Z Z Z Z Z L Z L D D D Z D D D Z Z D Z Z Z Z Z Z Z H H L Z L L Z Z Z H Z Z D Z Z H H Z Z H [ gXgXgXaXpXM.' / u t r e r : r r r r r e e : r r 0 r e r ; e e r r r r r r r q r r r r r r r r r r r r r : r r r r r r r r r r r r r r r r r r r r r r r r r r r r r y 0 r r r r 0 r r * y e ; y 0 y r r r r r r r r r : r r r r r r e e y u ~ c Q / c ^ _ Z.L.A.D.D.A.A.H.A.A.G.A.A.A.G.g.G.G.j.g.j.z.h.h.k.z.f.k.g.k.k.k.k.k.g.d.k.z.i.f.k.a.a.a.a.a.i.i.a.a.a.a.i.i.u.a.u.i.u.u.u.u.u.u.a.i.a.a.a.a.a.a.z.d.a.a.a.a.a.k.u.d.i.f.i.i.z.f.f.f.k.k.f.h.k.h.h.h.h.h.h.A.A.A.g.A.A.S.G.A.S.A.S.S.H.H.H.D.L.L.A.L.U.P.P.L.T.T.L.T.T.T.~.~.~.(.T.~.~.~.~./.!./.~././././.^.~.(.^.(.^.{.`.|.^._.(.|.^./.|._._.(.(.(._.(.{.{._._.(.(.(.(.(.(.(.(.(.(.{./.(.(.(.(.(.(.(.(.`.(.(.(.`.(.^.(.(.`.`._._._.|._.'.|.|.|.|.@X|.'.|.|. X}.}.}.}.|._.`.`.{.(.(.`.(.(.^.|.^.|.(.|.(.|.|._._.{.|._._.{._.|.|..X X|..X X|..X.X.X.X.X'.@X.X.XfX.XzXzXcXcXxXxXzXcXcXcXxXxXxXxXxXxXnXcXnXnXmXmXmXmXmXmXmXmXmXmXMXMXMXMXMXMXMXmXxXmXnXnXMXnXnXdXnXfXxXxXcXzXdXzXzXzXzXxXxXcXcXzXzXzXzXzXzXdXzX.X.X.X.X'.|.|.`._._.^.(.(.(.(.!.(.{.(.t & $ % % * % ; % o o K (././.(././.(.(././.^./.~.~.^.R.T.~.T.T.T.U.U.U.U.U.L.K.L.U.U.L.L.L.L.L.L.L.L.L.L.L.L.H.S.L.H.A.L.H.H.S.L.D.L.L.U.S.L.{ ' ' Q t e r : y : r r : ; ; $ $ $ $ $ $ & & % * 0 % % % $ , $ $ $ $ & o $ o o o o $ gXIXIXLXLXLXaX o o $ o % : ; r r r r 0 * ; % $ $ $ o , $ * * % % % $ - $ $ $ - $ $ o - , $ $ $ $ $ $ - $ $ $ $ o o o $ & % % ; ; ; * % % % $ $ $ $ , o o o o $ $ $ $ $ $ o & $ o $ o o $ o gXLXLXIX $ $ $ o $ $ $ % % % ; r ; % $ & dXzXzXdXdXdXdX.X.XdXdXdX.XdXdX@X.X.X X'.|.|.|.|.}.}.}.}._._._._._._.|._.}.|.|.|.|.|.|.|.|.|.|.|.`.`.`.`._..X`.`. X|. Xm.{ ' ^ > % & o u '..X.X X@XdX XdXdXxXdXxXxXxXdXdXdX@XdX.X X.X.X.X|.|..X|.|.|.|.|.|.'..X.X.X.X.X.X@XdXdX.XdXdXdXzXzX@XdXdX.XdXdXvXdX#XdX.XdXdXdX'..X.X.XzXxX.XzX.XzX.X.X.X@X.X.X.X.X.X|.|.|.`.|.|._._.|._.}._.^.(.|.{._._.|.`.(._._.`.(.|.`.|.^.(.(.(.(./.{.(./.(.!.T.(.T.(.(.~.~./.~.~./././././.(./././.(./.(././.(.(././.~.(.~././.T.~.T.T.~.~.~.T.~.~.T.T.T.P.T.T.T.T.T.Y.U.U.Y.T.L.T.Y.U.U.U.U.U.I.K.Y.L.L.L.Y.L.L.U.U.Y.U.P.Y.Y.L.U.L.L.P.L.Y.T.T.T.T.~.T.T.T.T.~.T.~.~.~.~.~.~.~.~.~.~././././././.(.].(.(.(.^.~.(.^./.(././././.(.(.^.(.(.`._._.|. X.X|..X.X X.X.X@X.X XdXdX#XdXdXdXzXzXdXzXdXdXzXzXzXzXdXzXdXdXcXdXdXdXcXdXvXdXdXdX.XdX.X.X.XzX.X.X.X'.|._.(.(.`.(.(.(./.(./././.[.(./.(././././.(.", "F Z Z Z Z Z G Z Z Z B Z Z Z Z G D D G Z Z H Z Z Z Z L Z Z L P Z L H H S Z H Z S D A H A D D Z Z Z Z Z D Z Z Z Z Z Z Z Z Z Z G Z Z H Z Z D Z G G Z H Z P m.gXgXgXaXpX{ / n t u > r 0 ; r r r r r y r = e 0 e ; 0 ; ; e r r = * y r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r e r r e 0 r r r r r r r r r r * e r r r r ; r e e ; ; * r r r r r r r r r r r r r r r r r r r e r : y y c S Q J K / ~ [ H.D.l.K.A.A.A.F.A.S.A.A.j.A.j.A.g.h.g.h.h.h.z.l.z.h.k.k.k.k.k.k.k.k.g.f.k.f.i.a.a.a.a.i.a.a.i.a.i.s.s.i.u.u.u.i.u.i.u.u.u.u.a.i.a.a.a.d.d.a.a.k.a.a.a.i.k.a.a.i.k.f.f.z.f.f.f.k.k.k.k.k.h.l.h.h.z.A.A.A.A.A.G.S.A.H.A.G.S.H.H.D.H.L.G.L.L.L.U.L.L.U.P.R.Y.T.T.T.~.~.~.(.~.~.~.~.~.~.(./.(././././././.(.^.(.(.|.|._.|._.`.|.{.|._.{._._._.`.`.(.(.(.(.(.(.^.(.(.(.(.(.(.{.^.(.(.(.{.(.(.(.(.(.]._.(.(.(.(.^.(.|.^.^.|.(._._._.|.|..X|. X|.|.|.|..X|.|.|.|._.{.}.{.}.^.^.|.(.(.`.(.^.{.`._.{._.(.(.|.|._.|.|.|._.|._.|._. X|.|..X.X.X|. X.X.X.XdX.XdX.XdX.X.XzX.XzXzXzXxXxXxXxXzXcXvXcXxXnXcXcXcXnXnXmXMXmXmXmXmXmXmXmXmXmXmXMXmXmXmXmXmXmXnXmXmXcXxXnXnXJXcXcXxXxX.XzXcXzXvXzXzXxXzXzXzXzXzXzXzXxXdXdX.XzX.X.X.X|.|.|.|.`._.{.(.(._.(. X/.^.{.(.u , $ $ ; ; - $ $ o K (.(./.(.(.(.(././.(./.T./.~.~.~.T.T.T.T.T.T.T.U.T.U.L.U.U.L.Y.L.L.L.L.Y.U.H.H.L.L.S.L.H.F.H.S.Y.H.H.L.F.L.L.S.L.L.U.S.' ' ' Q u = : r q 0 r e : ; ; % $ $ $ $ % * * * : * % % % & $ $ & & $ $ $ $ o , , $ o aXLXLXLXLXPX- o o o $ $ % : r r r r e r r * % % $ $ $ & % % * ; % % $ $ & & , % $ $ $ $ $ % $ $ $ $ $ % o $ $ $ $ o $ $ $ % ; ; ; ; * % % $ $ $ $ $ $ $ o $ $ $ $ $ - $ % $ - $ o $ $ $ o $ o IXLXLXgXo o $ o o $ $ $ & % % ; r e % % % o dXdXzXzX.X.X.X.XdXdXdX.X.X.XzX.X.X.X|. X}. X}.}.}.[.|._._._._._._._._.|.|.}._.|._.|.|.|.`.|.|._.|.|.|.`.|.|.|._. X X'.m.' ' ! : % o w '..X X@XzX'.@XdXdXdXzXzXdXdXdXcXdXdXfX.XzXzX.X'.|..X'.|.|.|.|. X|.'.|. X'..X.XdX.X.X.XdXdXdXxXdXzX.XdXdXdXdX.XdXdXdXdX#XdXdXdXdXdXdX.XxX.X.XdX'..X.XdX.X.X.X.X.X'..X.X'.`.|.|.|.|.|. X}.}._._.{.(.|._.|._._._._._._.(.|.(.(.(.`.(.(.(.(./.(.(./././.~./././.(.~./.~.~.~./././.(././.(.(.(./.(././.(.(./.(./.~.~./.~.~.~.~.~.~.~.T.~.~.T.~.~.~.T.T.T.Y.T.T.P.U.U.T.U.U.Y.U.U.U.I.I.Y.U.U.U.L.L.Y.L.L.P.U.P.U.P.T.P.Y.P.U.L.L.L.P.Y.U.Y.T.~.T.T.T.~.T.~.T.~.T.~.T./.~.~.~.~.~./.~./.(./.!.(.(.[.{.(.(.(.~.!.(.(././././.(./.(.(.(.^.`._._.`._..X|..X.X'..X.X.X.XdXdXdXdX.XdXdXzXzXzXzXzXzXzXzXzXzXzXzXcXnXzXzXcXcXdXcXdXcXcX.XdXzX.X.X.X.X.X.X X|._.|.`.`._.^.(.(.(.[.(./.!.(.(.(./.(.(.(././.", "Z Z Z Z D C B Z Z Z Z Z Z Z Z Z Z D Z G Z Z Z L J Z Z L L Z L Z H Z Z L H Z L L D D D Z D Z F Z Z H Z H Z D H Z Z Z G Z L Z Z Z Z Z Z H L Z Z Z H D S hXgXgXaXpXM.' c u y t : : r r r r r r ; 0 ; r * r r 0 r 0 y y ; r * 0 y * r r 0 e r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r * r r 0 r r r r 0 r r r e * r r r r r 0 e r r r r r r r r r r r = : y r e y u u S c c ^ u T F.A.g.L.A.S.S.S.A.h.A.A.A.G.j.A.h.G.h.h.z.f.h.h.k.k.g.g.g.h.g.g.k.d.z.k.z.k.a.a.a.a.a.a.i.a.i.i.i.p.i.i.u.u.u.i.u.u.u.u.u.i.i.i.a.a.k.z.E x.a.d.k.a.a.i.d.x.f.f.f.k.k.k.k.k.z.k.k.f.k.h.z.l.h.D.h.A.A.A.A.G.A.A.A.S.G.G.H.H.H.H.H.H.P.A.L.L.U.P.U.P.I.T.T.T.T.T.T.~.T.(.(.~.~.~.~.)./././././.(.(.(.(.(.^.`.^.{.{._.^.`.|.(.^._.|.{._.(.`.^.|.(.(.(.(.(.(.(././.^.(.(./.(.(./.(./.(.(.(.(.(.(.(.(.(.{.(.^.`.(.(._.[._._.|.|.|.|. X X X.X.X.X|.|.|.|.'._.|.}.}.}.}.}.(.(.|.(./.|.|.(.|._.(._.`.|._.`.|.|.|.|.|.|.|.|.|.|.|..X X|..X|.|. X|..X.X.X.X.X@X.XzXzXzXzXzXvXxXxXxXxXcXcXzXzXxXdXcXcXcXnXnXnXmXmXmXmXmXmXmXnXmXmXmXmXmXmXmXMXmXmXmXmXmXmXmXnXcXcXcXcXxXxXzXzXzXzXzXzXzXzXzXzXzXxXzXzXzX.XzX.X.XdX.X.X.X.X.X_.}.}._._._.[.(.(.`.^./.|.`.hXu $ $ % % & $ $ ~ /.(././././.(.(.(.(.^./.~./.T.T.~.T.T.U.U.T.L.U.U.T.L.L.L.Y.U.L.Y.L.L.L.L.L.L.H.L.H.S.L.H.L.L.H.H.H.H.L.S.L.L.U.Y.S.L.' ' ' / w : r : : r r r : ; % % $ % $ % % % > * * ; : * % % % % % & % - , $ $ $ & $ $ c gXIXgXsX> $ o o o $ % % : r = r r > ; ; ; = ; % & & % % > ; : - : % $ % % % % % - & % $ % & % & % % % % $ $ $ $ , $ & % ; ; ; ; ; > * * % % , % $ , % $ $ % % $ $ $ & % % $ $ $ $ $ $ $ o o { pXsX6X , $ $ $ $ % % % * ; r ; ; % $ o cXdXzXdX.XzXzX.X.X.X@X'..X.X|.'.|.'.|.|.}.}.}.}.}.}._._._.}._._._.|.`.`.}.}.|.|._._._._.`.(.(.`.(.^.|._.|..X{.|. X_.'.n.' c u % o # t hX.X X.X'.`.dX'.dX'.dX.XzXdXxXdXdXdX@X.X.X.X.X.X.X.X X|..X.X|.'.|..X|..X|..X.X.X XdX.XdX.XdXdXdX.X.X.XdXdXdX.XdXdXdX.XdXdXdX.XdX.X.X.X.X.X.X.X@XzX.XzX.X.X.X.X.X'..X X|.|.|.`.|.|.{.|.}.}._._.|.|.(.`.(.(.|.`._._._._.(.|.(.|.(.(.(.(.(./.^./.^./.(./././.~.~.~.~.~./.~././.(./.(.(.{.(.(.(.(.).(.(.(.(.(.^.(./.(././.(.~.~.~.~.T.[.T.~.~.~.T.~.T.T.P.T.P.Y.P.Y.U.U.U.U.U.P.U.I.I.I.I.U.U.U.U.U.U.L.Y.P.P.U.U.T.P.Y.P.P.U.Y.U.P.U.L.!.T.T.T.~.~.^.~.T.T.~.T.~.T.[.T./.~.~.~.[./.~.!./.(./.(.(._.[.(.^.^.`.(././.(.(.(.(.(.(.(.(.(.(.^._._.`.|.|..X X.X'..X.X.XdX.X XdXdXcXvXdXzXzXzXzXzXzXzXzXzXzXvXfXdXdXcXzXcXdXcXdXdXdXdXdXdXdX.X.X.X.X.X.X|.|.|._._.`.|.(.(.(.(.(.^.(.(././.^.(.(.(.(././.", "Z D Z G B Z C D Z Z C D Z G D Z D D Z Z G H Z Z Z Z H Z L Z S Z L Z Z S Z Z Z S D D D D D D D Z Z D D D D Z Z Z Z H Z Z Z Z L Z H Z Z L Z H H H Z P hXgXgXaXpX{ ' u y y = r r r r ; r r r r r r * e e : ; e * > = r r = r y r ; r r r r r r r r r r r r r r e 0 r r r r r r 0 r r r r r r r r r r r y r r r r r r r r r r r r r * r r r r r r e * r = 0 ; 0 e ; r r r r r r r r r r r r r 0 r r y : y r r r y y y c S u S S Z Z.G.A.h.S.A.A.A.A.h.A.A.j.g.A.A.h.h.h.h.h.f.l.f.h.g.f.g.k.k.g.z.h.f.f.a.g.f.a.a.a.a.a.a.a.i.a.i.s.u.u.u.u.i.u.u.i.a.u.u.i.i.a.a.a.d.a.k.a.k.k.a.k.k.a.k.a.k.k.d.k.k.k.k.k.k.k.h.h.h.h.h.h.h.A.A.h.A.A.A.A.A.S.S.S.A.L.G.S.H.H.H.H.S.L.U.L.I.L.U.T.I.T.T.T.T.~.~.~./././.(.(.!.(./.(.(./.(.(.(.^.|.(.`.(.|.(.|.|._.|._.(.|._._.(.|.|.`.{.^.^.(.(.(.(.(.(.(.(.^.[.(./.(.{.~.{.(./.(.(.(._.(.(.(.(.(.(.{.(.`.`.(.}.}.|._.|.|.'.|.|..X.X.X.X.X.X|.|.|.|.|._._.`.{.|.(.|.|./._.^.|.(._.|._.(.|.`.(.|._.|.`.|.`.{.`.`.`.|.|.|. X X.X|.'..X X|.'. X.X.X.XdXdXdX.XzXzXdXcXdXcXxXxXxXxXdXcXxXxXxXcXcXcXmXcXmXmXmXmXmXmXnXnXmXmXMXmXmXMXMXnXnXmXmXmXmXnXnXnXcXcXcXcXvXxXzXzXzXzXzXzXzXzXzXzXzXzXzXdX.XzXzX.XdX.X.X.X.X.X.X|.|.}.`._._.(.(.(.(.`.|.^.(.`.'.u $ $ - % $ $ S (././.(./.(./.(.!././.~./.~.T.~.T.T.T.T.U.U.U.L.L.L.L.Y.L.U.Y.U.Y.L.U.L.L.L.L.H.L.H.L.H.S.F.H.H.K.H.U.H.L.L.S.S.L.P.P.{ ' n / u : r r r 0 r : : ; ; % % % % % e ; ; e ; * : % : % % % % % % & % & $ % $ % % % & & o - , o $ $ $ % % ; ; ; ; r r 0 r r ; % % % - % % : % % : > % % % * % % * % % % % % % % % % % % ; % % & % % % % % % % * * r e % : % % w & % % % % % % % % % % % % % % % % % & & , % & % % $ & o $ $ $ $ $ $ % % % ; ; : t : * % $ o dXdXdXdXzXzX.X.X.X.X|..X.X|.'.|.|.|.|.|._.|._.}.`.`.`.(._._._.|.(._._.`.}.|.}.^.`.`.(._.^._.(._.`.(.|._._.'.|.|. X`. Xn.~ u : & e '.'..X`..X.X.X X.XzX.XdXzXzXdXzX.X.X.XzX.XdX.XdX.X.X|..X.X|.|.|.|.'.`..X|..X.X.X.X.XzXdXdX'.zX'.xXzX@X'.dX.XdX.X.X.XdXdXdXdX.X@XdX.X.X.XzX.X.XdX.XdX.X.X.X.X.X.X|..X.X.X|.|..X|.|._.|.|._._.|.^._.|.^.{.`.(.|._._._.`.^.`.(.|.^.(.(.(.(./.(.(.(.^.(././.!./././././.(./.^./.(./.(.(./.(./.(.(./.{.{.^.(.(.(.(.(.^.[././././.~.~.T.~.T.~.T.T.T.~.T.T.T.T.Y.T.U.P.Y.Y.Y.P.P.P.P.P.I.I.I.I.T.U.U.U.L.Y.Y.L.U.L.T.T.T.P.T.P.P.P.P.P.P.Y.P.T.T.~.~.T.T.~.~.T.T.~.~.T.T./.T.~.~.~./././.~.!././.^.(.(.(._.(._.^.(.(.(.(.(.(.^./.(./.(.^.(.`.`._.|._.|.|.|. X.X.X X.X.XdX X.XdXzXzX.XzXxXdXxXdXdXdXzXdXzXzXzXzXxXzXcXdXcXzXzXxXcXcX XdX.XzX|..X.X.X.X'..X`.`._._.`.(.(.(.(._.(.(.(./.(.^.^.[.).(.(.(.!.", "G C Z Z Z Z D Z Z Z D Z Z B Z Z Z Z Z H Z Z Z G Z S Z H Z L L Z L Z L Z H Z H H D Z D D D D D D D Z D D D D D D Z Z Z H L Z Z Z Z L Z L H L Z S _ gXgXgXgX{ { ! u u y y r r : y r 0 0 r r r r r y r : > t { { { u e : - 0 * r r r r r r r r r r r r r r r r r r r r r r q e e r r : r r r r r r r r * : r r r r r r r q r r r r : r r r 0 r ; * ; ; e 0 r r e r r r r r r r r r ; 0 ; r r r r r : * * r r e e r y S u u n y S S Z.H.h.l.G.l.D.A.A.A.A.A.G.A.A.h.h.h.h.h.h.f.l.k.g.g.z.g.g.z.g.z.z.a.f.f.f.a.a.a.a.a.i.i.i.i.p.u.u.u.u.u.i.u.u.u.a.u.u.i.u.i.i.a.a.d.a.d.a.a.k.a.a.k.k.a.f.k.g.g.z.h.h.z.z.h.h.h.h.h.h.h.l.h.h.A.A.A.A.h.A.Z.S.S.A.S.G.G.H.H.H.H.L.H.L.L.L.I.U.U.T.I.T.T.T.~.T.~.T././.~.(.(.(.).(.(.(.(.(.^.(.^.^.|.(./.|.(.(.|.|._._.{.|.|.|._._.(.|.(.(.^.^.`.(.(.(.(.^.(.(.(./.(.)./.^.^.{.(.!.(._.].(.(.(.(.(.(.(.(._._._.|.|.|._.|. X X.X X.X.X.X.X.X|.|.|._.|.|.|.`.|.|.|.`.`.`.(.`.(.`.`.(.|._._._.|.|.|.`.|.`.|.`.`.`.|.|._.|. X.X|.|. X|.|..X.X'..XdX.X.X.XdXzX.XzXzXzXzXdXnXxXzXzXnXnXxXxXxXcXcXnXnXnXcXmXmXmXmXmXJXmXmXmXmXmXmXmXnXnXnXmXmXmXnXnXnXnXcXcXcXcXxXnXdXzXzXzXzXzXzXzXzXzXzXzXzX.XxX.X@XzXdX.X'.dX.X.X X|. X`.|._._._._._.|.^.^.'.|.|.|.^.u % $ $ $ o o ( /././.(./././././.(././.~.~.~.R.T.T.T.T.T.U.U.U.U.Y.U.U.Y.L.L.L.U.L.L.L.L.S.S.S.H.L.H.L.L.L.H.K.h.H.K.U.L.L.U.L.L.F.P.' ' ' c u y : r r r r r = ; ; ; ; ; % ; % * r r r ; ; : * * % ; % % % ; * % % % % % ; % ; ; % % $ $ o $ $ % % ; ; = ; ; r q * y ; r r % ; : % : : ; : 0 0 % * * r % * r % ; * * % * % ; % ; - % % % % % % % % ; ; ; r r * ; t * 0 % ; 0 * e % ; * = % * * * ; ; % ; % * % % > * ; * % % % $ $ $ $ o $ $ > ; % ; ; * r : * % o o dX@XdXzX.X.X.X.X.X|.`.`.`.|.|.`.|._._.|.|._.}.{.(.(.`.`.[._.`.^._._._._.[.`.|.(.(.`.(._.|._.|.`.|._._.|._._.^._. X|._.m.c t % e '.'.'.`.`.'..X.X|..X.X'..X.X.X.X.XxXzXxX.XdXdX.X X.X.X.X|.|.'.|.'..X`..X`..X.X.X.X.X.X.X@X.XdX@XzX'.dXdXdXdXdX'.@XdXdX.X.X.X.X XdX@X.X.XzX.X.X.X'..X.X.X.X.X.X.X|..X|..X|.|.|.|.|.|.|.|._._.`.`._.|.^.|.`.(.(.{.(.`.^.`.(.(.^.(.(.(.(.(././././.(.(.(.(././.~.~./././.!./././.^././.(.(.(.{.{.(.(.^.^.(./.(.(.(.(.^.E.(.(././.~.~.~.~.~.T.~.[.T.T.T.T.T.T.Y.P.P.P.U.P.P.P.P.Y.P.P.R.Y.I.I.U.U.U.U.U.Y.U.U.P.Y.U.U.T.Y.Y.P.Y.Y.P.U.U.Y.T.T.T.T.~.T.^.T.~.T.~.T.T.~.T.T.~.~.~.T.~././././././.~.[.[.(.[.(.(.(.(.(.^.(.(.~.!.).(.(.(.(.`.(.(.^.{._.|.|.|.|.|.|..X.X.X XdX@X.X X.XdX@XdXdXdXdXdXcXdXdXzXzXzXcXcXdXzXcXzXzXcX.XdXdXdX%XzXzXzX.X.X.X|.|.|.|.|._.|.(._.(.(.(.(.(./.(.(.(.(.^.(.^./.(.{./.", "B Z D Z Z Z Z Z Z G B Z Z Z Z Z D Z Z Z Z H Z Z L L Z Z H Z H H Z L L H L Z Z H D D D D D Z D D H D D Z D Z Z H Z L Z L L Z H D Z H G Z L Z c _ gXgXaXpXM.{ u ^ > ; ; ; y r r r r r r r 0 r : r ; y aXPXLXLXLXLXLXIXM.; t : ; r r r r r r r r r r e 0 r r r r r r r r r r r r r r r r r e r r r r r r r e r r r r r : r r r r r r r r r r r r r * } gX; r ; r r r r r r r r r r 0 r r r r r r r y : : : r r r r y > > n u u u u Z F.S.Z.G.D.l.h.A.A.j.A.A.g.h.A.h.G.g.h.h.h.l.l.k.h.l.z.h.g.g.g.j.a.j.f.f.a.f.f.a.a.a.i.i.t.s.u.a.u.u.u.u.i.u.u.u.i.i.i.a.u.a.a.a.a.a.a.a.a.k.a.k.a.k.z.z.g.g.k.h.h.l.l.h.h.h.h.h.h.g.A.l.A.h.A.A.g.A.H.A.S.S.S.H.H.H.H.H.H.H.H.H.L.H.L.L.I.I.Y.I.T.T.T.T.T.T.~./.~././.(.(.(.(.^.(.(.{._.(._._.|.^.|.{.^.(.|._._.|._.|._.|._.|.|._._.|.(.^.(.(.(.(.(.(./.^.(./.(./.^.(.^.(.(.(.(.(.(.(.(.(.(.(.(.`.(.^._._.|.|.|._.|.|.'..X X.X.X.X.X.X|.|.|.|.|.{._._.`._.|.{._.`._._.(.|._.`.{._.|._._.|.|.|.|.|.`.|.`.`.|.|.|.|.|. X|..X.X|.|.'..X|.'..X.XzXdX.X'.zXzXzXzXzXzXcXxXdXxXxXdXzXcXxXxXcXnXnXnXnXmXmXmXmXmXMXmXmXmXMXmXmXmXnXnXMXmXnXcXmXnXnXnXnXcXcXcXcXxXxXvXdXdXvXdXxXzXzXdXzXzXdXzXzXdXdXdXdXdX.X.X@X.X.X.X|.|.`.`.`._._.`.(.^.`._._.(.`._.|.^.u $ o $ o o i /./.^./.(./.(.(././././.~./.R.~.T.T.T.T.T.U.U.U.L.U.U.L.U.L.L.U.L.K.U.L.S.L.L.L.G.H.L.H.H.H.U.S.K.H.S.H.A.U.L.P.D.D.D.' ' ' ! t r r r r : : e : ; ; ; ; e * ; ; ; ; ; r ; r : ; ; ; ; e ; e ; ; : ; ; ; ; ; ; % % % $ $ $ $ & % % % ; ; e : ; r ; e ; ; r ; ; 0 : * : r : r : : ; ; r ; e e ; ; : : ; ; ; ; ; ; ; ; ; * ; ; ; ; ; ; ; r r e e ; e ; ; ; ; * ; ; ; ; ; ; ; ; = 0 ; ; ; ; ; ; ; ; ; ; % ; % ; % % % $ $ $ & % % ; * 0 = y : t > * & $ $ .XxXzXdX.X.X.X.X_.`.|.|._.`._._._.{._.|.|._._.(.{.`.^.(.`.(.^.^._._._._.^.`.^.^.(.(.(.(.(.`.`.(./.|.^.(.(._._. X`._.'.n.r > o e `.|.|.|..X`.|.|..X X.X.X.XdXdX.XzX X.X.X.XxXdX'.dX X.X.X.X|.|.|.|.|.|.`..X.X.X.X|..X.XdX.X.XdXdXdX.XzXdXdXdX.XdX%X X.X.XdXdXdXdXdX.XzX.X.X.X.X.X.X.X.X.X'..X.X|..X.X|.'.|.|.|.|.|.|.|.|.|._._._.{.|.^.).{.(.`.(.(._._.(.`.`.(.(.(.(.(.(.!.(.(./.[./././.(./././.~./.).!././.(./.^././.(.(./.(./.(././.(./.^.(.(./.(././.(./././.~.~.~.T.T.T.T.T.T.T.T.T.T.T.Y.P.P.P.P.P.P.Y.U.U.P.P.U.U.T.I.U.T.U.T.T.T.U.U.P.Y.U.T.T.T.T.T.T.T.T.T.Y.T.T.T.~.~.T.T.T.T.~.~.T.T.~.T./.T.~.T.~.~.~./././././.^.^.(.(.(._.[._.(.`.(.(.(.(.`.(.(.(.(.`.(.^._.(.`.(.^._.|.|._.|.|. X.X.X.XdX.XzX XdXdXdXzXdXdXzXxXdXdXxXzXzXzXzXxXxXxXxXzXzXzXcXdXdXdX XzX.X.X X.X.X.X|.'.|.|.|.|.|._._.(.(.(.(./.^.(.(.(.(./.(./.(.(./.", "D Z Z Z Z D Z Z Z F D Z Z Z Z G Z G Z Z Z Z Z H Z L H H H H H H H H Z L Z H H Z D D D Z D Z D D D S D H S P Z D Z Z L Z Z L D D Z Z G L Z S ' hXgXgXaXM.' c u y e ; : y : r r : r r r ; r r ; : t IXLXLXLXLXLXLXLXLXLX{ : : = e r r r r r r r r r r r r r r r r r r r r r r r r r r r r * r r r r 0 r r r r r r r r * y r e r r r r r : r : t ` UXLXIXe ; = r 0 r r r r r r r r r r r r r r 0 r r r : : r e r r r ; ; > A n y y y A Z.S.A.H.A.A.A.A.G.A.A.A.A.h.l.l.h.h.l.h.h.h.h.h.l.l.g.z.g.g.k.k.f.f.a.f.a.a.a.a.a.i.i.i.u.u.u.u.u.u.u.u.u.i.a.u.u.a.a.a.a.a.d.k.d.k.k.k.k.k.k.k.k.z.g.k.k.z.h.h.l.h.h.h.h.h.g.j.G.A.A.l.A.A.A.G.S.A.S.S.G.H.G.G.S.H.H.H.H.H.L.H.L.L.L.I.Y.U.I.T.I.T.T.T.~.~.~.~.(.~.(.(.(.(.^.^.|._._.|.{._.`._._.|.|.|.|._._.|._.|.|._.|._._.|.(.(.(.`.(.(.(.(./.~.~.(./.^./.(.(./.(.(.{./.(.(.(.(.(.(.(._.`.^.`.`._.|._._._._.|.|.|..X.X.X`..X.X.X.X|.|.|.|._.|.|._._._._.|.{._.|.`.|.^.|.^.|.|._.|.`.|.`..X|.|.`.|.|.|.|.|._.|..X'. X|. X|..X.X|..X.X.X.X@X.XzX.XzX.XzXzXcXzXdXnXdXxXdXnXxXxXcXxXcXnXmXnXnXnXmXvXmXvXxXmXcXMXnXmXnXmXMXcXmXnXmXmXnXnXnXnXcXcXcXdXxXxXnXdX.XdXdXdX'.zXdXzXzXdXzX.X.XdX.XdXdXdX.X.X.X.X.X'.'.|.|.`._._.`.`.`.(._._.|.|.(.`.'.^.u $ o K /././.(././././.(./././.~.!.~.R.T.T.T.T.U.U.U.U.U.U.L.U.U.L.L.U.L.L.L.L.L.L.L.S.L.H.H.H.L.H.H.S.S.S.U.H.L.L.D.S.S.P.V.' ' ' Q t * : : r : y r : * * ; * 0 ; 0 ; r 0 r 0 r r ; 0 ; 0 ; r = ; r ; ; ; ; ; ; ; ; * > % % $ $ & % % : ; ; ; : : r y r r ; 0 0 ; 0 ; * r r * * : : 0 r r * : 0 : : 0 : * ; * : * * * ; ; ; ; * ; ; ; r * r * r ; r r * r r r ; 0 0 ; * * ; 0 ; 0 ; % 0 ; * ; * * = y 0 * ; * ; ; * * % % % % ; ; ; ; 0 ; r ; : : * ; % $ , .XdXdXzX.X.X.X.X`.|._.(.(.^._.(._._.^._.(._.{.`.^._.`.^.^.(.(.(.(.(._.(.{.^.`.{.^.`.(.(.(.^.(.(.|.^.|.|.`.|.^._._._. Xb.: $ u '..X|.|.|.|..X.X X|.|..X.X.X.X.X.X.X@XzX.X.X.X.X.XdX'.@X.X.X.X.X`..X`.|.'.|..X|..X'..X.X.XdX.XdXdXzX'.dXdXdX'.dXdX.XvX.XdX XdX.X.X.X.X.X.X.X.X.X.X.X.X'..X.X.X.X X|. X|.|.|.|.|.|.|.|.'.|._._.|._.|._.|.^.^.(.(.(.`.^.^.`.^.^.|.^.|.^.(.(.^././.(./.(.(.!././.~././.~././.!./././././././.(.(./.(./.(././.(././.(.(./.(.(.(././.R.(.~.T.T.[.T.T.[.T.T.T.T.T.U.P.P.P.P.Y.P.P.Y.U.Y.U.Y.T.U.I.U.T.U.T.T.T.U.U.T.T.T.T.U.T.P.T.T.T.T.T.U.T.T.T.T.T.T.!.Y.T.~.T.T.~.T.T.~.~.T.~.T.~.~.~.~./././.!.(.(.(.(.[.(.(.(.(.(.(.(.(.(.!.^.(.(.(.(.`.(._._._.(._.|.{._._.|.'. X X.X.X.X.XdX X XdXdX.XzX.XzXzXzXdXxXzXzXdXvXcXdXdXzXzXzXzX.X.XdXdXdX.XdX.X@X.X.X X'.|.`.`._._._._._.(._.(.(.(./.(.(.{./.(./.(.(./.(.", "B Z C Z Z Z Z G Z Z C G Z Z D D Z Z D Z Z H Z Z Z L Z Z Z L H Z L Z L Z Z L Z Z Z H Z Z H Z H Z J L Z H Z S Z Z Z H L Z S L Z L H Z D D D ) gXgXaXaX{ ' u y y t : r r r r r r r : r r e : r = 0 IXLXLXLXLXIXUXLXLXLXLXIX- % e = : = : e e e = > r = 0 e * > 0 e : ; r y * : = ; : = r r % r > * : y 0 * ; ; > % = = : ; ; > : > r t e ; e e 0 IXLXLXIX> ; = ; ; e * r 0 % > ; ; e ; r 0 r y * ; r r r r r r r r r r r y y u u u y e u Z.h.D.S.h.A.A.A.A.A.A.h.h.z.A.h.l.l.l.l.l.l.l.l.h.h.h.g.z.f.j.g.k.k.f.d.f.z.a.i.i.u.u.i.u.u.i.i.u.u.i.u.i.i.i.i.a.i.f.i.i.i.i.i.i.k.k.k.d.a.g.g.z.h.h.g.z.l.h.h.h.l.A.A.h.A.A.h.A.h.A.A.G.G.A.S.S.S.S.D.S.H.H.H.H.H.H.H.H.S.P.L.S.P.P.P.P.T.T.T.T.T.T.^.T.^././.(.(.(.^.(._.(._.|._._.|.(._._.}.}.}.}._.}._. X_. X_.}._. X_._._._._.(.(.(.^./.~.(././.[.(.(.(././.(./.(.(.(.(.(.(.(.^.^.^.{._.{._.|._.`.|._.|._. X X.X.X.X@XdX.X X X|.|.|._.|.|.|.{._.}. X}.}. X}.}.}.}.}.}.}.}.}. X}.|. X X'.|.|. X|.|.|.|._.|._.|.|..X X|.|.|..X.X.X.X@X'.dX.XdX.XxXzXzXdXvXdXcXdXdXdXdXxXxXxXxXxXxXnXnXnXnXnXnXcXnXMXnXmXnXmXmXnXMXnXnXmXmXnXnXnXnXxXnXvXxXdXcXzXxXdXzX#XxX.XzX@XdXdXdX.X.XzXxXdXdX'..X.X.XdX.X.X.X'.|.|.|.|.`._._.(._.{._._._._. X_._.|.|.].S o K /.(.(.(.(./././././././.~.~.~.T.T.~.T.T.T.U.Y.L.L.L.L.L.U.L.L.L.S.L.S.L.L.L.S.L.H.L.H.H.H.H.S.L.K.H.L.K.L.L.H.L.S.L.L.K ' ^ u u ; y ; : r r ; ; ; y : r ; ; * : r r > = : r r 0 : : * r r r : r : y r : * : : * ; ; % % % % % ; * ; ; ; r y r > y : 0 : y : : : r e 0 r ; ; > r r r : : : r r : : ; : : y = ; r r r r r r r r e r e e r ; ; ; : y : ; ; 0 r r r : : : : : 0 * y * : : y : > * t : r : : ; : * * ; % ; * ; ; ; ; ; ; : : * ; * % $ $ '.cX.XdX.X.X'.}.}.{.|.(.(.(.(./.^.(.(.`.^.(.|.^.(.|./.(.(./.(.(.(._.(.(.(.`.|.(.(.(.(.(._.^.`.`.(.`.(.`.(.(.(.`.|._.{.` $ o # u ].`.`.`.}.}.}.|. X X'..X.X.X.X.X.X.X'.'.zX@X.X'..X'.zX'..X.X.X|..X_.`.`..X'.|..X|..X.X.X.X.X.X.X.X@XdXdXdXdXdXdXdX.X'.zX.X X.X.X XdX.XdX.X.X.X X.X.X.X|..X.X'..X|. X|..X}. X|.|.|.|.|.|.|.|.}.|.|._._._._._.`.(.(.(.(.[.(.(._.[.(.(.(.(./.(.(./.(././.(./.(.^./.~./.~.(.(.!././././././././.(.E.{.^././.(./.(./.^.(.(.(.(.(.^./.~.~.~.~.~.T.T.T.T.T.T.T.~.T.T.T.I.U.T.U.I.Y.I.U.U.U.U.U.T.T.T.T.I.T.T.T.P.T.T.T.P.P.P.P.T.T.T.T.T.T.T.T.U.Y.~.Y.I.Y.T.I.I.~.I.Y.~.T.Y.Y.T.T.T./.~.~.!.(././.^./.^./.(.^.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.^.(.(.(.`.(.|.(.(.|.(.`._.|.`.'. X.X.X.X.XzX.XdX'.dX'.zXzXxXdXdXdXzXzXdXcXdXdXdXfXzXzXzXzXzX.XxX.X'..X@XdXdX.X.X X X|.|.|.|.{.|._.^.`.^.^.(.(.(.^.(.(./.(.(.(././.", "F Z Z Z G D Z B C Z Z Z D Z Z D D D D D D H Z Z L Z L L L Z L Z ( S Z L L Z L Z H Z H Z Z Z H S H Z Z H Z L P L L Z Z H L Z L L Z U D D J aXgXgXpX} ( n u y y : r r r r : r r r y 0 * e * q % ' LXLXLXPXf % , c PXIXUXpXu * * = % ' aXpXpX{ ; > y = x ' { ' ; c pXaX{ e t : ; > : ' aXpXpXM.0 > e : u { { n t pXpXn : % y [ pXpXpXpX^ % r 0 ^ IXLXLXUXc Q ; ; e ; ' pXpXpXM.; ; ; * 0 e r ; = y r r r r r r r r r r r r e y y y y e y A Z.S.G.Z.A.h.A.A.A.g.A.h.z.A.l.l.l.l.h.l.l.l.l.h.h.g.z.g.g.f.g.f.f.f.k.f.i.i.a.i.i.a.u.u.u.u.u.u.u.u.u.u.a.i.i.i.i.i.i.k.k.k.k.f.f.d.k.g.z.z.g.l.h.h.h.k.A.h.z.l.l.l.A.A.A.A.A.A.A.A.A.h.H.S.S.A.S.H.S.H.H.H.H.H.H.H.H.L.L.L.S.L.P.P.P.Y.T.P.T.T.T.~.T.~.~.~././././.^.).(._._._._._.^.}._.}.}. X}. X}._._._._._._.}._._.|._._._._._.(.(.(.{.(.(.(.(././.(././././.(.(.(.(.(.(.(.(.^.`.`.|.(._.|.{._.|._.|.|.|._.|..X X X.X X.X.X|.|.|.|.|._._.|._.|.}.}.}.}.}.}.}.}.}.}.}.}.}. X}.|.|.|.|.|..X|.'.|. X|.|.|.|. X|.|. X|..X|. X.X X.X.X X'.dXdX.X.XdXzXzXvXdXnXdXcXcXnXcXdXxXxXxXnXvXnXnXnXnXnXnXnXnXnXnXnXnXmXmXmXmXnXnXcXcXvXxXnXxXnXxXxXxXcXcXzXdXzXzX.XxXdXzX.X.XdXdX.XzX.XzXdXdXzXdX.XzXzX.X.X.X|..X|.|.`.|.|._._.(.]._._._._._. X_.^. X`.`.u i ^.(.(.(.(.(./.(./././.(.~.~.~.~.T.T.T.T.T.T.U.U.Y.L.U.U.L.L.S.L.L.L.L.U.S.L.S.S.H.H.S.H.H.H.L.H.S.H.H.H.D.F.L.H.L.S.G.S t y e ; % > % * % * ; : * % * % * ; % : * % % * % ; ; % r = * % : % % = : % : % r % : % % % % - % % % 0 % ; * : % * % : % : % ; % * ; % % : : % ; ; ; % * ; * : * * % : * : % : ; * % * ; % * ; * : * * * % : * ; ; ; * ; % = ; ; % * * % > * * : % % * * * * % % = * % * % : * % * % % % ; % % % % % ; ; * * * ; ; % % $ dX'..X.X.X|.|.|.^.{.(.^././.~.(.^.(.(./.(.(.(.(.(.(.(.(.(././.).(.(.(.`.(.^.(.(./.(.`.(.`.(.^.^.`.^.(._.`.[.(.`.|._. X[ $ t '.dX'.|.{.}.}.}.}.|.|.|. X|..X.X.X.XdXdXdX XdX.XdX.X.X.X.X.X.X.X.X`.|.`..X|.|.|.|..X|. X|.|..X.X.X.X.X'.'.dXdXdX.X'..XdX'.@XdX.X.XdXdX.X.X.X.X.X X.X.X|.|..X.X X X.X|. X|.}.}.|.|.|.|. X|.|.|.|.}.|._.|.(._._._.{.(.(.(.{.[.(._.(.(.(.(.(.(.(./././.!.(./.(.(././.[./.^.^././././.(.(.(./././.(.(.^.^.(./.(././.(./.(.(./.(./.(./.!.~.~.T.T.R.T.T.T.T.T.U.T.T.T.T.I.T.I.U.I.I.I.I.T.U.Y.T.T.T.I.T.I.T.T.I.T.T.P.T.T.T.T.T.P.P.T.T.T.T.T.P.T.~.I.~.T.~.~.!.T.I.~.~.~.T.Y.~.T./.T.T.T.~.(.~.(.~.^.~./.(./.(.(.(.(.(.(.(.(.(.`.(.(.(.^.(.(.`.(.(.(.(._.(.(._.^.|.(.|.|.|.|..X.X.X.X.XzX.X.XdXdXdX.XzX.XnXnXdXdXcXdXcXmXdXvXcXzXdXzX.X.XzXdX'.dX.X.X'..X.X.X.X|..X|.|.|.|.^.|.`.(.`.(.(.(.`.(.(.(./.(./.(.(.(.", "D Z B D C Z Z F Z D D D D Z D Z D D D D D D G H Z L L Z Z L L L G Z Z Z H H H Z Z H H Z J P Z Z Z H H Z Z Z Z L Z S H Z Z L Z L L Z J S m.gXgXpXM.' u u r r r r r r r r r r r r > 0 r r r = e pXLXLXLXaX% , % & o o $ & & - f IXLXLXLXLXLXPX{ * : aXLXLXBXaXLXLXLXLXgXt 0 % n IXLXLXLXLXLXPX{ ; t pXLXLXBXIXLXLXpX> ' PXLXLXLXLXLXLXIXt ; LXLXLXLXLXLXIX% % f IXLXLXLXLXLXLX{ ; ; ; * r y ; r r r r e 0 r r r r r r r r r y y u u > ; U H.A.H.A.A.A.A.A.A.h.h.S.z.l.l.h.l.l.l.l.l.h.h.h.g.g.k.k.g.g.g.z.k.k.f.a.a.a.i.i.i.i.i.i.u.u.i.i.u.i.i.i.i.a.a.a.a.d.k.f.f.f.f.f.g.k.g.g.g.g.h.l.g.h.S.l.h.A.A.A.h.A.A.h.A.A.S.A.A.A.S.A.S.S.S.D.H.H.A.L.L.S.L.L.U.L.S.S.L.A.L.P.P.Y.P.T.T.T.T.T.~.T.~.~.~./././.(.^.(._.(._._._.{._.}._._.}.}. X}. X|._. X_._. X_._.}._._._._.(.(.(.(././.~.(./.(.(./.(.!.(./.(./.(.(.(.(.(.(.(.`._.^.^._.(._._.|._.|.|.|.|.@X.X.X X.X'.'..X.X.X`.|.`.|._.|.|. X}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.{.|.|.|.|.'.|..X|. X|.|.|.|.|.|.|.|.|.|..X X|.|. X.X.X.X'.@X'.dXdX.XfXzXdXdXdXvXdXnXcXzXdXnXxXxXxXnXnXnXnXnXnXnXnXcXnXnXcXnXmXcXnXnXnXxXxXnXnXnXcXnXcXcXJXxXxXdXzXzXzXzXxX.X.XzXdXdXdXdX.XzXzX.XdX.XdX@XzX.X.X.X.X.X|.|.|.|.`.`.|.(.(.(.(.[.^.`._._._._._._.(._.(.u $ i (.(.(.(.(.(.(././././.~.~.~.^.R.~.T.T.T.T.T.I.U.P.P.L.L.S.L.S.L.S.L.D.H.S.L.U.S.U.S.S.L.H.S.H.H.L.H.H.L.S.L.L.H.H.L.D.: ; % % & $ $ $ , & $ $ $ % $ $ & $ $ $ , & $ $ $ $ $ $ & $ $ $ $ $ $ $ $ $ $ $ $ $ & , o , $ $ $ $ $ $ $ $ $ $ $ & $ , $ & $ , $ & & , & % $ & & $ $ % $ & & & $ % & & % $ & % & $ % & % $ $ & & - , $ & & & & $ $ $ % $ & & $ $ $ $ $ & $ $ $ $ $ $ $ $ $ $ & $ $ $ $ % & $ $ $ , $ & $ $ $ $ $ & $ $ $ $ $ $ $ % $ $ o dX@X.X.X'.|.|._.|.^././././.~.^.(.^.[.(.(.(.[.(./././././././.(.(.(.(.(.`.(.(.(.^.(.(.(.`.(._.{.^.`.^.(._.^.`.`.{.{.|.` $ u `.|.^.|.|.(.}.}.}.}.|.|.|.'.|.'.|..X.X.XdX@XdXdX.X.X.X.X.X.X.X.X.X.X.X`.`.`.|.'. X|.|. X X|..X.X|..X.X.XdX.X.XdXdX@XzXdX.XdX.XdX.X.X@X X.X.X.X.X X.X X.X X@X X|.@X X.X|.'.|.}.|.}.|. X|. X{.|.|.}.}._.|.`.{._._.(.(.(.(.(.(._.(.(.(.(.(.(.(./.(./.(./.(./.(./././.(././.^.T./.]./.(.(././.(./.(.(.(./.(.(.(././.^.(.!.(./.(.^././././.~.~.T.T.(.T.T.T.~.T.T.T.T.T.U.U.U.T.U.I.T.I.U.U.I.T.I.T.T.T.~.(.T.T.T.T.T.T.T.T.Y.P.T.T.T.T.P.T.T.T.[.T.~.~.I.T.~.R.T.~.~.I.~.I.~.T.~.T.~.~.T.~.~.~./.~././.(./.(./.(.`.^.^.`.(.(.].(.(.(.(.(.^.(.(.(.(.(.(.`._.(.(.|.|.(.(.|.|.|.'..X.X.X X@X.X@XdX.X XdXzX@XdX.XxXdXdXdXmXnXcXdXdXdXdXxXzXdXzX@XdXdXdX.X.X.X.X.X.X.X.X.X|.|.|.|._.|.`.^.|.(.(.(.(.^.(.(.{.^.(.(./.(.", "Z C Z Z Z Z Z Z D Z D Z D D D Z Z D D D D D Z Z Z L Z S L Z L Z Z ( G L Z Z H L L Z H L H Z Z Z Z Z H H L H Z Z L Z H L H L Z H L Z Z _ gXaXpXM.' ^ : > r r r : r r r r r r r r e 0 y = * y e IXPXLXLX] & & n 6XsX6XM.pXc % % IXLXLXLXLXLXLXLXLX^ : sXLXLXLXPXLXLXLXLXLX{ % t IXLXLXLXLXLXLXLXLXQ ; pXLXLXLXLXLXPXc - IXLXLXLXLXLXLXLXLXpX- LXLXLXLXLXLXgX- ; IXLXLXLXLXLXLXLXLX' % ; e e ; y r r r r r r r r r r r r r r e e r > y ; ; r T H.A.H.A.A.A.A.A.A.A.z.g.l.l.h.l.h.z.l.h.h.h.h.g.g.z.g.g.g.g.g.k.k.g.i.z.a.a.a.a.i.i.a.u.i.u.i.i.k.i.a.i.a.a.a.a.i.f.k.f.f.f.k.g.k.g.g.h.z.l.l.h.h.h.l.l.l.A.A.A.A.A.A.A.A.A.H.A.H.A.S.S.S.S.H.D.H.L.S.L.S.L.S.S.H.L.L.L.L.L.L.L.U.P.T.T.T.T.T.T.~.T.~.!.~.(./.^.(.(.(.(.(._.|._.|._._._.}.}.|.|._._._._._. X_._._. X_._._._._.(.(.(.(./.(.(.~.(./.(./.(./.(.~.(.^./.(.(.(.(.(.(.|.(.^.|.|._.|.|.|.`. X X|.|.|..X.X.X X.X.X X|.|.|.|.{. X|. X}.}.}.}.|.}.}. X X}.}.}.}. X}.}. X|.|.|..X X|. X'.|. X'.|..X X X|..X.X X|..X.X.X.X.X.X.XzX'.dXdX@XdXdXzXdXnXnXdXnXdXcXdXxXxXcXvXnXxXnXnXnXnXnXcXnXnXnXnXnXnXnXmXnXnXnXnXnXxXnXnXcXcXcXcXdXcXxXdXzXzXdXdXzX'.zX.XdXdXdXdXzX.XxX.XdXdXdXzXxX.XxX.X.X.X'.|._.{.(.{._.(.(.(.^.`.(.(._.[._._. X_._.[.|.].e ( (.(.(.(.(././.(././.(.~.~.~.T.~.~.T.T.T.U.L.I.L.L.L.L.L.L.S.H.H.S.S.H.H.L.S.L.H.H.H.H.U.U.L.L.H.K.L.H.L.L.H.L.L.H.U.U.* % $ $ o o o o $ o o o o $ o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o $ o o o o $ o o o o o o o o $ o o o o $ o o $ o o $ o o $ o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o $ o o o o $ o o o o o o o o o o # u dX.X.X.X|._._.|.^././.~.~.~./.~.T.~.~.~.~.~.!.~.~./.~././././.^./.(./.(.^.(.`.^.(.(.`.{.^.`.^.(.^.(.(.(.^.(.(.`.|.|._.) y X_._.^.|.|.'.}.}.}.|.|.|._.|..X.X.X.X.X.X XzXdX'..X.X.X.X.X.X'..X|..X.X|..X`.|.|.|.|.|.|.|.|.|. X.X.X'..X.X.X.X X'..X'.@X.X.X.X'.'.dX'..X.X.X X|. X.X'. X X|. X X X X|. X|..X X}.}.|.{.|.|. X}.|. X}.|._._.|._._._.(._.].(.(.(.(.{.(.(.(.(.(./.(.^./.!./././.(././.[.^./.(.E./.)./.(.(.(.(.(.(.(./.^.^././././././.(.).(.(./././././.!.!./.T.T.~.T.T.T.~.T.T.T.T.T.T.T.T.U.U.T.U.U.T.T.T.U.T.T.T.T.T.I.R.T.T.T.T.T.T.T.T.T.T.T.P.T.T.T.T.T.Y.U.~.I.~.I.~.~.L.Y.Y.~.I.~.I.T.U.T.T.~.T.R.~.~.~././.(./.(.(.(.(.].^.^.(.(.(.(.(.(.(.`.!.`.].(.(.(.(.^.(.^.(.(.(.(.|.`.(._.|..X|..X X.X.X.X.X.X.XdXdX XdXdXxXdXnXdXmXdXdXvXcXdXcXzXzXzXzX'.zX.X'..X.X.X.X.X.X.X.X.X.X X|.|.|._._.}._._.[.(.`.(.(.(.(.(./.(.(.(.(.", "Z Z Z Z F Z Z Z Z Z D Z Z Z Z Z D D Z Z Z L Z L S Z G L ( G Z L L L L L H H H Z Z H Z Z Z H J Z Z H Z J Z S Z H H H Z L H Z H H Z P _ hXaXaXM.{ Q y y r r r : ; r r r r r r r r : * t q : : > UXLXLXLXn $ o IXLXPXLXLXLXsX$ M.LXLXLX' - e IXLXLXgX* pXLXLXLXgX{ aXLXLXLXpX% pXLXLXLX' @ w IXLXLXgX- pXLXLXLXIX' { % u HXIXLXgX$ > IXPXLXIX, ' IXLXLXIXf n o pXLXLXLX' - c IXLXLXgX% * % ; ; ; r r r r r r r r r r r r : : 0 r r y e y % : 0 Z.A.G.A.A.A.H.z.A.l.G.g.h.h.l.l.l.H.l.l.l.z.l.h.z.l.g.g.g.g.k.k.k.k.k.i.f.k.i.i.i.i.u.u.u.a.i.i.f.i.a.a.a.z.i.f.k.f.g.a.g.k.k.k.k.z.g.z.g.h.h.S.g.g.A.A.h.h.A.A.D.A.h.A.H.A.S.D.S.S.S.S.A.S.H.H.L.G.L.S.S.L.S.D.L.L.S.P.L.L.U.Y.P.P.T.U.T.T.~.T.~.T.~.~.~././.(./.(.(.(.^.(._._.|._._._._. X_._. X X X_. X_._. X_._.|. X_._.(.(.(.(.(.(./.(././.(.(././././.(./.(.(.(.!.(.`._.{._.^.|.`.|._.|.|.|.|.|.|.|. X.X|..X.X X@X.X|.|.|..X|.|.|.|.[.}.}.}.}.}.}. X}.}.}.}. X{.|.}.}.}.}.|. X X'.|.|..X|..X.X.X'.|..X X.X|..X X|..X X X.X.X.X@XdX.XdXdXxXxXdXdXdXcXdXvXdXcXdXxXcXxXxXxXxXnXcXxXnXxXnXcXcXcXnXnXcXmXcXnXnXnXnXxXxXdXdXnXnXxXcXxXcXcXzXzXzXzX'.'.zX.XzXzX.X.XzXzX@XdXdX'.cXdX|..X.X.X.X.X.X|.`.|.{.(.(.(.^./.^.(.(.^.|._.(.(._.{.(._.{.{._.].n._.(.(.(.(.(./.(./.).(.!.~.T.^.~.~.[.T.U.U.L.L.L.L.U.L.S.H.H.H.H.H.H.S.H.A.H.H.H.S.H.H.S.L.L.L.L.S.U.L.L.L.H.L.H.H.L.S.[ ; o o # # # # # o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o i '.dXdX.X X|.}.}.(.(./.~.~.~.~.~.~.~.~.~.~.T.T.T.T.T.~.~.~.!.~./././.(.(.^.~.^.(.^.(.(.(.{.(.[._.(.(.(.(.^.`.^.(.(._._.'.n.].`.[.}..X`._.`.|.|._._.|.|.|.|.|.'.|..X'.@XzX.XdX@X.X.X.X.X.X.X X.X.X|.@X|.|.|.|.|._.|._.|.}. X|.|.|.'..X.X.X'..X.X.X.X.X.X.X.X.XzX.X.X.X.X.X.X X.X.X X|..X.X|..X'.|..X X'.|. X|.|.}.}.|. X|._.}.|.|._.|._._._._._._.^.(.(.(.(.(.^.^.[.(.(.(.(.(.(./././././.(.E.~.(.^.XX[.~./././././.(.(.(.!./.(././.(./.(.(./.(././.(././.(./././.(./.~.T.~.T.T.~.~.~.U.~.T.T.~.~.I.T.T.T.U.T.T.T.T.T.T.T.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.P.T.P.T.T.T.T.U.~.I.~.I.T.~.Y.~.T.~.Y.I.U.T.T.Y.T.T.T.T./.~././././.(.[./.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.`._.(.(.(.(.(.(.(.{.|.(.|._.|.|. X.X.X.X.X.XdX.XdXdX.X'.zXzXzXdXdXcXcXcXdXdXcXdXmXzXzXzXdXdXdX@X'.'..X.X X.X.XdX.X.X.X.X.X X|.|.|.|.}.}.}.`.(.(.(.(.(.(.(.(.(.(.^.", "Z C Z Z Z Z Z Z Z Z D D Z L H D D D H Z Z Z L Z Z ( Z Z Z Z L Z Z Z Z Z H Z Z S L Z L H S Z Z H H Z H Z H L H Z Z Z L Z H H H H L S pXgXaXpX{ Q u e r r r r = r r r r r r r r r r r 0 > : ; > BXLXLXLXn o $ gXLXLXLXLXLXsXo gXLXLXIXpXpXsXIXLXLXLX$ pXLXLXLXf , % LXLXLXpX$ gXLXLXIXpXpX6XIXLXLXPX- M.LXLXLX{ % $ % $ - - > c sXgXLXLXLXUX, $ IXLXLXgX+ o o gXLXLXIXpXpXpXIXLXLXLX$ : * % e r r r r r r q r r r 0 r r r r r r r r 0 e ; : % Z S.S.S.H.A.A.H.A.A.g.A.G.z.l.l.l.l.G.l.l.h.h.l.g.l.g.g.k.A.h.z.k.g.k.d.z.i.k.a.a.i.i.i.a.a.i.i.i.i.a.d.i.i.d.k.d.k.z.g.k.k.g.z.k.g.g.g.h.h.h.j.h.A.A.A.S.A.A.l.H.A.H.H.H.H.H.H.S.H.S.S.H.H.H.L.L.S.H.L.L.L.U.U.L.L.L.L.P.L.U.P.P.P.U.T.T.T.T.~.T.~.T.T.~././././.!.(.(.(.(.^.{.^.(._. X_._. X_._._._._._._.}._._.}._._._._.(.|.(.(.(././.(.(./././././.(./././././.(.(.(.`.|.(.}.}.`.^.|._.|.|.|.|. X|..X|.'.'.|. X X|.|.|.|.|.|.|.|.|.|. X}.}.}.|.}. X}.}.}.}.}.}. X|. X}.}.}.}.|.|.|. X'.|.|. X|.|..X.X|..X|..X|..X.X|. X'..X.X.X'.dX.XdXdXdXdXdXvXdXdXcXzXzXdXcXxXdXdXxXxXxXxXxXxXnXxXxXcXcXcXcXcXnXcXcXnXnXnXxXxXxXJXxXcXcXxXxXxXcXdXzXzXdXzXzXzXzXzX'.zX.XzX.XdXdXdXdXxXdXzXzX.XxXzX.X.X.X|.|.^.).(.(.(.[.(./.(././.[.(._.(._.].`.'._.{._.`.{.(._._.(.(./././././.~.~.~.~.T.~.T.T.T.U.L.S.L.L.L.S.H.H.H.S.G.S.H.A.H.H.D.H.H.H.H.H.H.H.L.S.L.S.L.S.L.L.L.L.H.L.U.L.H.L._ $ # # # # # # # # o $ o o o o $ o o $ o o o o o o o $ o o o o o o o o o o o o $ o o o o o o o o o o o $ o o o o o o o o $ ' dX.X X X'..X|.}.^.(.^././.~.(.~.~.~.~.T.T.T.T.T.T.T.T.T.T.~.~.T.~.~./././.(.[.{.E.(.(.(.(.(.(.(.(.(.(.(.(.`.(.`.(. X_.(.^.'.|.|._.}.{..X_.(.|.[.|.|.|.|._._.|.|..X.X XdX.XdX.X'..X.X.X|. X|.|.|.|.|.|..X|.|.|.|._.|.|.|.}.}.|.|.|.|. X|..X|.|.|..X.X.X.X.X.X.X.XdX.XdX.XzX'..X.X.X|..X|.|.|.|.|. X X.X|.|..X}.}. X}._._._.|.|.}._._.|.[.`.`._._.`.^.(.(.(.(.(.^./.`.(./././.(./.(./././.!./.[.^././.(.(.^./././.(.(./.(./.(.(.(.(.{.(.(.!././././.(.(./.(././././././.~.~.T.~.T.T.T.T.~.T.T.T.T.T.T.~.T.T.T.T.~.T.T.T.T.T.T.T.T.T.T.(.T.T.T.T.T.T.T.T.T.T.~.T.T.T.T.T.T.T.[.Y.~.~.Y.~.T.T.T.T.~.Y.~.T.Y.~.~.T.T./.T.T.~.~./././.(.(.(.(.^.(.(.(.(.(.(.(._.(.(.(.(.(.(.(.(.(.(.(.(.(.|.(.^.`.^.(.|._.|._.|. X X.X.X.XdXdX.X@X.X'.zX.XzXzX@XxXdXcXdXcXcXdXdXdXzXzXzXzX.X.XxXzX.X.X.X.X.X.X'.'..X.X.X.X|.'.|.|.|.|.}.}._.`.`.(.(.(.(.(.(.(.`.].", "Z Z C Z Z Z Z Z Z Z Z D Z Z L Z D D Z H Z L Z L L L L L Z S H H L Z Z L Z L ( Z Z L L H H L H Z Z Z J H Z L Z H H H L L Z H H H J ' gXaXpX{ ' u e : r : r r : r r r r r r r r r r r ; y : y e pXLXLXLXpX$ o { m.sXLXLXLXsX, IXLXLXLXLXLXLXLXLXLXLX$ sXPXLXLX& $ $ LXLXLX{ % UXLXLXLXLXLXLXLXLXLXPX$ sXLXLXLX$ % $ $ & { IXLXLXLXLXLXLXLXIXo o IXLXLXgXo $ o gXLXLXLXLXLXLXLXLXLXLX& % * % ; y ; r r r r r r r r r r r r : : * r e y 0 e % ; % e.G.S.H.A.A.A.S.l.g.G.g.h.l.l.h.h.h.A.l.l.l.l.h.h.h.h.z.h.k.h.k.k.k.k.f.i.i.i.d.i.i.i.u.a.i.i.i.i.i.k.d.z.i.z.k.k.z.h.z.g.l.l.g.z.h.z.z.h.h.A.h.h.Z.j.A.A.A.S.A.H.H.A.H.D.H.H.H.H.S.K.A.H.H.H.L.L.L.L.L.L.L.L.L.P.L.P.U.L.U.P.P.P.T.U.T.T.T.T.~.~.~.~.R./././././.(.^.(.(.(.(.^.`. X_._._._._._._._. X X_.}.}._.|._._.|.{.^.^.(.(.{.(.(.(.(.(.(././.!./././.(./.(.(.(.(.(.{._.|.|.(._.|.{.|.|.|.|..X|. X|.`.|.|.{.|.|.|.|.|.|. X X|. X|.}. X}.|._.}.}.}.}. X}.}.}. X|.|.}.}.}.}.|.|.'.|.'. X|.|..X.X.X|..X X.X|..X.X|. X.X X'..X.X'.'.@X'.'.dXdXxXvXdXdXdXzXzXxXdXnXdXcXxXxXxXxXxXxXxXnXxXcXcXcXcXmXcXcXcXxXxXxXxXxXxXxX@XdXnXnXcXxXxXzXzXzXzX.X.X.X.X'..X.X.XdXzXdXdXnXcXdXdXdXzXxX.X.XxX.X.X|.|.`.(.(./.(.^.(.E./.(./.(.^.^.(._.|.^.|.|._.^._.^.`.(.(.(.^.(././.(.~.(.!.~.!.!.~.T.Y.U.U.L.L.H.L.L.H.H.D.S.H.G.G.S.A.G.S.S.D.H.H.H.S.S.U.S.L.L.L.L.S.L.S.L.L.F.S.H.L.L.L.L.U.L.U.P.P.Y.L.L.Y.L.P.S.L.P.P.S.P.H.L.Z.L.S.P.P.P.U.Z.T.Y.T.T.H.T.T.~.T.Y.Y.!./.T./././.!.!.~.(.!.(.^.(.].Y.^.(.(.{.[._._.[._._. X`.(.|._._._. X}. X}. X X}. X}. X X X.X|.|..X X.X.X.XdX.XdXdXdX.X.X.X X.X.X.X X.X.X.X XdX X.X.X.X X X.X@X.X.X X'..XdX X XdX X X.X.X X.X.X'.@X.X X X X X X X X X X X X X X X X X'..X.X X X.X.X.X.X.X.X|.}.|.(.^.!.~.~.T.~.T.T.T.T.P.P.T.U.T.T.T.T.T.~.~.!.~.!./././.^.(.(.(.~.~.(./.(.(.(.[.{.{.(.(.(.(._.(.(.{.^.`.`._.|._.|.|._.|._.}.}.}.}.|. X|.|.|.|. X.XdX.X.X.X.X X.X|.|..X|. X`.'.`.|._. X|.|.|.|.|._.|.}.}. X|.|.|._._.|.|.|.|.|.|. X.X.X.X.X.X.X.X X'..X.X.X X.X.X.X.X|..X|.|. X'.|. X|.|. X X|.'.}.}.}.|._.|.}.{.|.`.`.|.`.`.(.`.^.^.(.(.(./.(.^./.(.(.(./.^././././.(././.^.^.^./.(.(./.^./././.(./.(.(./.(./.(.(././.(./././././././.!././././././.R.~.T.~.T.T.T.T.~.~.T.~.T.~.T.T.T.T.T.T.~.T.T.T.T.~.T.T.T.~.T.K.R.T.T.T.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.I.Y.~.T.U.U.Y.U.Y.I.~.~.Y.T.T.~.~.T.T.~.~.~.~./.[.(.^.(.(.`.(.(.(.(.(.^.`.(.(.(.(.^.(.!.(.(.(.(.(.(.(.(.^.(.(._._.|._.|.|..X|..X.X.X.X.X.X.X.XdX.XdXxXzXzXzXcXcXdXcXcXdXcXcX%XzXzXxX.X.X'..X.X.X.X.X.X.XdX'.dX.X.X.X.X.X X|.|.|._.|._._._.^.(.(.(.(.(.(.(.(.(.", "Z C Z Z Z Z Z Z Z Z F D Z L Z Z D Z Z Z Z H Z Z Z Z Z Z H H Z Z Z L Z L L L Z G H H D H H H L F P H Z Z H Z H Z Z H Z H H H H H Z pXaXpXM.' S e ; ; : : r r 0 : r r r r r r r r r : = : e r * c LXLXLXPXc & o & f LXLXLXM. gXLXLXIXn c c c f c c $ sXLXLXLX$ o o LXLXLX6Xo gXLXLXIXc c c c c n c o sXLXLXLXo o $ $ c LXLXLXpXw o UXLXLXgX o gXLXLXHX o o gXLXLXIXc f f c c c c $ $ % % % ; r r r r r r r r r r r r 0 r 0 r r e ; r r > : % y G.A.H.H.A.A.A.h.z.h.G.z.l.h.h.h.A.A.A.A.h.h.h.h.l.h.h.h.h.h.z.k.k.k.d.k.k.d.k.i.a.k.i.z.z.a.a.i.z.d.i.z.d.k.k.z.z.k.g.l.g.l.g.h.h.h.z.h.h.h.A.A.A.h.A.S.G.S.D.A.H.A.H.H.G.H.H.S.S.S.L.H.H.L.H.L.S.L.L.L.L.L.L.L.L.P.L.Y.P.P.P.P.U.T.T.T.T.~.~.T.T.~./.!.!.!./.!.[.E.(.(.^.|.`.(.{.^. X_. X_._._._._.}._._.}.}._._._.|.[.`.`.(.{.(.(.(.(./.(././.(./././.!./.(.(.(.(.^.`._.^.{._.|._.`.`.|.|.|.|. X X X|.|.`.`.|.|._.|.|._.|.|. X|. X}. X}.}. X_.}.}.}.}.}.}. X}. X|. X}.}.}.}.}.|. X|.|..X X X.X.X|. X.X|..X.X X X.X.X'..X.X.X.X.X'.dXzX.XzXdXdXcXdXdXcXzXzXcXdXcXdXxXxXxXxXxXcXxXnXxXcXcXcXcXcXcXcXcXcXxXxXxXxXxXxXxXxXnXdXcXcXvXxXzXzXzXzX'.zXzX.XzXzXzXzX@XzXdXdXdXdX@XdXfXzXzXzXzX.X'..X|.|.|.(.^.(.^.~.^.[././././.(.(.^.{.(.|.^._.{.|.(.{.(._.(.(.^././././.~.(.~.~.~.~.~.T.Y.L.L.L.L.H.H.H.H.G.S.A.H.A.A.A.H.S.S.S.G.H.A.S.H.H.S.U.A.L.S.L.L.L.H.S.L.L.L.H.L.L.L.L.L.U.U.Y.L.Y.L.Y.L.U.Y.L.U.P.L.P.P.L.L.Z.P.L.L.P.P.P.Y.U.I.T.T.T.T.~.T.~.!.[.~./././././././.!././././.(.[.(.^.(.(.{.].(.(._._._._._.`._.|._._.{.|._.}._. X}.}.}.}.{.|.|.|.|. X X.X.X.X.X.X.X.XfX X.X.XdX XdX.X XdX.X.X X.X.X.X.X.X X X.X'..X.X.X.XdX X X X XzX XdX.XdX.X.X.X.X.X X X X X X}.}.}. X}._._._._. X X|..X.X XdX.X X.X.X.X X}.}.}.(.{.E.~.~.T.~.T.T.P.T.P.P.U.U.U.T.T.T.T.T.~.T.~.~.~././.^.[.~.~.(.[.~././.(.(.!.(.(.(.(.(.(.(.(._.`._.^.(._.^._._._.{.|.|.|. X}.|.|.|.|.|.|.'.|..X'. X.X X'.'.|.|.|.|.|.|.|.`.|.|.|.|.|. X X|..X|.}.}.}.}.|.|._.|.|.|.|.|.|.|.|..X|. X X.X.X.X@XdX.XdX.X.X.X.X.X.X|. X X|.'.|.|.|..X'.|..X X X|.}.}.}._._.{.}.|._.^.`.^.^._.`.`.(.`.!.(.^.(./.(.(./.(././././././.!.(./.!./././.[.~.(.(.~./././.(././.(.{.(./.(./.(.^./././.(.!.)./.(./.!.(././././.(.T.~.T.T.~.~.T.T.T.T.~.T.T.~.~.T.~.T.~.T.~.T.~.~.T.~.~.T.T.~.K.T.T.T.T.T.T.T.T.T.T.~.P.T.T.T.T.T.U.T.I.Y.Y.Y.Y.K.~.~.T.~.I.Y.T.Y.~.T.T.T.T./.T.(.~././.(.(.(.[.(.^.{.^.`.(.(.^.(._.(.`.^.].(.(.(.`.(.(.(.].(.(.`.(.|._.|._.|.|.|.|.'..X'..X XdX.X.X.XzXdX.XdXzXzXdXnXcXnXdXcXcXcXfXdXzXzXdXzX.XzX.X.X.X.X.X.X.X@XdX.X.X.X.X.X.X.X|..X_.|._._._._.`.^.(.`.(.(.`.^.(.(.", "Z Z G D Z Z Z Z D Z L G D H Z L L D D H D S H H Z H H Z Z ( L L L S ( Z H Z L L H H H H H H H H H H Z H D D D D H Z Z L J Z L Z { aXpXM.{ Q y y r r r r r r r r r r r r : r r r r r * t r r 0 0 IXPXLXLXLXIXIXUXLXLXLXLXsX$ { LXLXLXsXc sXPXLXgXM.o sXLXLXLXo $ $ LXLXLXsX$ ' LXLXLXsXf sXPXLXgXM.o sXLXLXLXo $ $ o sXLXLXLX{ n sXLXLXLXIX o GXLXLXIXn u o { LXLXLXsXc { LXLXgXsXo $ $ % ; ; ; r r r r r r r r r r r r r r r r ; r r r 0 % % % b.G.S.H.A.D.l.A.G.G.A.j.h.A.A.h.A.h.A.h.A.h.h.h.A.h.h.h.h.h.h.k.h.f.f.f.f.i.i.d.a.a.a.a.a.a.a.k.d.f.f.f.g.k.k.h.k.z.h.h.h.h.h.l.h.h.A.h.h.A.h.A.A.A.G.G.A.G.H.H.H.H.H.H.D.S.U.F.S.L.L.D.S.S.S.L.U.P.L.P.L.P.P.P.U.P.U.Y.P.Y.U.U.T.E.U.T.T.~.~.T.~.~.~.~.~.~.(.~.(././.(.(.`.^.`.(._._.(._.|._._._._.}.}.}.^._._._._.{._.^._.(.|.(.(.(.(.(.)./.(./.(.(././.(.(.(.(.(.(.`.(.(.|.|.|.`._.|.|.|.|..X'.|.|.`.`._.|.|.}.}.}.`.|.|..X.X|.|.|.|.}.}.|.|. X}.}.}.}.|. X}.|.{.}.}.}.}.}.}.}.}.}.|.|.'.|..X.X.X.X.X|. X|..X|.|..X'.'.'..X.X.X.X.X@X.X@XdX.XdXdXdXdXdXdXdXcXxX@XdXnXxXxXxXdXxXxXcXcXcXcXdXnXxXcXxXdXxXxXxXxXdX@XxXcXzXvXzXcXvXdXzXzXzX'.zX@X XdXdXdXdXdXzX.XzXzXzXzXfXdXzXzXdXdXdXdX.X.X|.|.`.^.(.(././././.(.~.~././.(.(.(.(.`.(.`.|.(.^.`.(.(.(.(.(.(././.(.~./.~.~.~.T.T.Y.L.L.S.L.H.S.H.A.S.H.G.A.A.A.A.A.H.l.A.G.A.A.G.A.J.H.H.H.H.H.H.G.L.S.L.A.L.L.L.L.L.L.L.L.U.U.U.U.P.P.P.P.T.P.P.L.U.U.P.L.L.L.L.P.L.D.P.L.L.Y.L.T.Y.U.T.T.T.~.~.~.T.~.~.[.~.~./././.~.~./././.~.^./.^.^.(.(.(.(.(.(.(.`.(.(.(.`.`.`.{.|.`.|.`.|._.|.`.`._.|._._.|._._.|. X.X X X.X.X.X.X.X.X.X'..X.X.X.X|..X.X.X.X X.X.X|. X.X.X.X.X.X.X.X.X.X@X@X.X.X.X.X.X@X.X.X.X'. X|..X|.|._.|._.|.|._._.`.`.`.|._.`._.|.`.'.|.|..X|..X|.|.|._._.(.(./.~.T.T.T.Y.P.U.Y.P.P.U.P.U.U.U.T.T.T.T.T.~.~.~.~.~.~.(.^.~.^././.!.!././.^./.^.(.(.(.!.(.(.(.(.(.(.^._._._._._._.|.|.`._.|.|.|.|.|.|.|.|. X'.'. X X_.|.|.|._.|.|._.|._.|.|.|. X|.|. X X_.}.}._. X X_.{._.}. X}._.}.}.|._.|.|. X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X|. X'.|.|.|. X|. X X|..X X.X|.|._.|.|._._.|._._.(.`.(.(.^.^.(.(.`.(.(.`.(.!.`.(.(././.(./.(././././././././.(./././.^.[./.(.!././.(.(.(.(.{.(.~.[.^.(././././././././././././.~./.~.~.~.T.~.T.~.T.~.T.~.T.(.U.E.~.~.~./.T.T.~.~.T.~.T.~.~.~.T.T.~.T.T.T.^.T.T.T.T.T.T.T.T.T.T.^.P.T.T.T.I.Y.T.T.T.I.T.T.T.U.T.U.T.T.!.T.T.T.~.~.~.!././././.(.(.(.(._.(._._._._.(.(.(.(.(.(.(._.(.(.^.(.^.(.^.`.^.|._._._.|.|.}. X'.|.|.|..X.XdX'..X.XzX XdXdXdXdXdXdXcXdXdXnXdXxXxX@XdXxXdX@XdXxX.X.X.X.X.X'..X.X.X.X.X.X@X.X.X.X.X|. X|.|._.|._.|.|.[.(._.(.^.|.(.^.|.", "Z Z B Z Z Z Z Z Z Z Z Z D D Z L Z H H H H H H H H L Z S Z G Z P L Z Z G H H Z L Z H H H F H H F D Z H Z D Z U D H H Z H L Z Z P m.aXm.M.' t y y r r r r r r r r r r r r r r r r r r * y r r ; * > UXLXLXLXLXLXLXLXLXLXgX- $ o gXLXLXLXLXPXLXLXIX- o 6XPXLXLXo $ o LXLXLXsX # IXLXLXLXLXLXLXLXIX- o { LXLXLXo o $ $ { LXLXLXLXLXLXPXLXLXgXo sXLXLXLXLXaXo + IXLXLXLXLXLXLXLXPX% $ $ % > ; ; 0 r r r r r r r r r r r r r r r ; r r r ; ; % % y H.H.S.H.D.G.l.A.A.A.A.A.A.A.A.j.j.h.A.h.A.A.A.h.h.A.h.h.h.h.h.k.z.h.f.f.z.f.f.a.z.k.a.k.k.k.k.f.f.k.g.f.g.h.g.h.g.h.h.l.l.l.l.h.h.h.A.Z.g.j.A.A.A.S.S.H.H.G.H.H.H.S.H.S.L.S.L.L.L.L.L.U.L.P.L.L.L.L.P.U.P.L.L.P.P.P.P.Y.P.T.U.T.U.U.T.T.T.T.~.~.~.~.~.~.~.~.^././.~.).(.(.(.(._.^.(._._._.{._._._.}.}.|.`._.|._._._._.|.^.^.{.(.(.(.(.(.(.(./.(./././.(./.(.(.(.^.|.(.`.`._.|.`.`.|.|.|.|.|.|.|.`.|.`._.|._.|.}.}.}.}.|.|.|.|.|.|.|.|.|.|.|.[.}.}.}.|.}.'.}.|.|. X X}.}.}.}.{.}._.}.}.|.|..X.X.X X.X.X.X.X.X|..X.X.X|.'.@X.X|..X.X.XdXxX'.dXdXdXzXzXdXcXdXcXdXxXnXcXdXxXxXxXxXxXzXxXcXcXcXJXxXcXcXxXxXxXxXcXzXxXcXdXdXzXzXvXdXzXcXzXzXdXzX.XdXdXdX XzXzX.XzXzXzX.XzXzXvXdX%XzXdXdXdXdX.X'.|.|.`.^.(.^.{.(././.~./.(.~./.~.(.(.(.(.(.(.^.`.{.^.(.(.(.(.^.(.(.~.~.^.~.~.~.~.T.Y.U.L.L.L.L.H.H.H.S.S.A.A.A.A.A.S.A.A.H.A.A.G.G.A.A.G.H.G.H.H.H.H.L.S.L.L.L.L.L.L.L.L.L.U.L.U.U.U.U.T.T.T.T.P.U.U.U.L.L.L.U.L.L.L.P.P.P.P.L.L.U.L.Y.I.T.T.T.T.~.T.~.T.~.~.~.~.~.~.~././././.~./.~./././.!.(./.(.^.(.(.(.`.`.`.`.`.^.^.`.(.^.(.(.(.[.|.^.|._._._.|._._.|. X|.|.|.|.|.'..X.X|..X'.|.|.|.|. X.X.X X'..X X|..X.X|.|..X'..X.X|..X'.'..X X.X.X.X.X X.X.X.X.X.X'.|.'.|.|.|._.(._.[.|.^.|.{.(.^.|._.`.`.`.|.`.|.}.|. X|.|._.`.^.(./.~.~.T.T.T.P.P.L.L.P.P.U.U.U.P.U.T.T.Y.T.T.T.~.(.~.(.~.(.!.!.(./././.!.[./././././.^./.(.(.(.^.(.(._.`.|.(._._.|._._.|.|.|.|.|.|.|.|._.|.|.|.|.|. X`. X|.|._.|.|.|._.|.|.|._.|.}.}.}. X_. X}. X_._._._._.|._.}._.}._.}._.|.|._.|. X|..X.X X.X X.X.X X.X|..X.X|. X X|.|._.|. X_. X X|. X|.|._.|.}.}.`.{._.(._.(._.|.(.(.`.^.(.(.^.(.(.^.(.(.!.(.(./.(./.(././.!././.(./././.!.!././.^.[.(././././.(.~.(.[.(.(.[.^././.(./././././././.!./././.~.~.~.~.~.~.T.~.T.~.T.~.T.T.T.XXXX~.~.T.T.~.~.~.~.~.T.~.T.T.T.T.~.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.T.I.I.T.R.I.T.T.U.I.T.U.T.T.I.T.T.~.~.~.~.~./.[././.(.(.(.(._.(._.(._.(.(.(.(.(.(.(.(.(._.(._.(.(._.(.(.(.^.{._._._._._.{._. X'.'.'..X.X@X.X XdX.XdXdXcXdXzXmXdXcXcX%XfXmXxXcXdXzXdXxXdX.X.X.X.X.X.X.X'.dX.XxX.X.XdXdXfX@X.X.X X X.X|.|.|.|._.|._._._._._._.(._.(.", "B D D Z B G Z Z Z D Z D D D H Z H Z H D Z L Z L L Z Z Z L L Z Z L Z L L H H Z L H H H Z D H Z H L Z L Z H H H H H Z H H Z L H _ aXpXM.{ n > y : r r r r r r r r r : r : r r r r r r r 0 r r r * > - M.PXLXLXLXLXPXgXn o $ o $ $ aXLXLXLXLXLXUX- o M.LXLXLX o o LXLXLXM.o $ + sXLXLXLXLXLXHX- o sXPXLXLXo o $ $ $ aXLXLXLXLXsX{ LXLXPX$ o - IXLXLXLXgXo $ - gXLXLXLXLXLXgX- o $ $ % ; ; ; r r r e * r e r r e r r r r r r r ; y ; ; * % % % b.L.A.H.D.A.A.G.A.A.A.h.A.A.A.A.Z.A.A.A.h.h.A.A.A.h.h.h.h.h.h.z.z.k.j.f.f.f.k.z.k.k.k.k.a.a.k.k.k.k.k.g.k.h.h.h.h.l.h.l.h.l.h.z.A.h.A.h.A.A.A.S.A.S.S.Z.H.H.H.H.H.U.L.L.S.L.L.L.H.L.L.L.P.L.P.P.P.P.P.U.U.P.P.P.T.U.U.P.T.P.T.P.T.T.T.T.~.T.~.~.~.T.[.~.~.~.(./.(.~.(.(.(.(.(._.(._._.^.|._.^._._._._.`.|._._._._.[._.{.|._.^._.(.(.(.!.(.(.^.(.(./././.^.(.(.(.|._.^.(._._.|.`.|.|.|.'.|.|.@X|.|.|.|._._._._._.}.}.}.|._.|.|. X|.|.|._.|.|.|.}.}.}.}.|. X|.|.|.|.}.|.}.}.|.{._.|.|._.|.'. X'..X.X X X.X X.X X.X|..X|..X.X|..X.X.X.X.X.XzX.X.X.XvXdXvXcXdXcXdXxXdXxXxXxXxXxXnXxXxXxXcXdXnXdXnXxXxXxXxXxXdXnXcXxXxXxXxXcXvXdXcXzXcXzXzX.XzXzX'. XdX.XdX.XzX.XzX.X%XdXvXdXdXzXzXdXxXdX.X.X.X|._.`.`.^.(.{././././.~.~.~.~./.(.(.(.(.^.`.`.^.{.`.|.(.(.(.(.(.(.~.~.~.~.T.U.Y.U.L.L.L.L.S.H.H.S.H.A.A.A.A.g.S.A.A.A.G.A.A.G.A.W.h.A.H.h.H.H.H.H.H.L.G.L.S.D.U.S.L.S.L.U.L.L.L.L.U.Y.P.U.T.T.T.U.P.L.L.L.P.L.L.L.L.P.P.L.L.L.U.L.U.I.U.T.T.T.~.~.T.T.~.~.~.~././.~./.~.~.^.~./.~.~./././.~./.(./.(.(.(./.`.(.`.(.(.(.(.(.`.`.^.|.(.(.(.(.^.(.(.(.|._.|.`.|.|.|.|.|.|. X X|.|.|.`.|.|.|.|.|.|.|.|.|.|.|. X X'.|.|..X.X.X.X X.X.X|..X'. X X.X.X'..X|.|.|.|.|.`.|.`.`.{.|.(.|.).{.{.(.(.|.^.(.^._.(.`._.|._.}.|.|.}.}.|.(.^.^.~.T.T.U.P.U.L.L.L.U.L.P.P.L.P.L.U.T.T.T.T.T.~.~.~.~.~.~./.~.^././.~./.~.XXE./././././.^.(.(.(.(.(.{.^.(.^._._.|.}.}.|.|._.|.|.|.|.|._.|.|.|.|.|.|._._._.}.}.|.}.|._.`.|._.|.|.|.}. X}.}. X_._._. X[._._._._.}.}. X_._. X|._.|.|.|.|..X.X X X|..X X.X.X.X.X|. X.X.X|.|.|. X X|.|. X X|..X|.|.|._.}.}.}.[.{.`.`.`.|.^._.(.^.(.(.^.(.(.(.(.!.(.(.(.(.(./././././.(.(.~./././././././.(.(.E././././.~.(.(.(.{.(.(.~././.~.(./././././.!./././.!.~./.~./.~.T.~.~.~.~.T.T.~.~.~.~.~.~.~.~.T.^.~.~.K.T.~.T.~.T.T.T.T.~.T.~.(.T.T.T.T.~.T.T.T.T.T.Y.T.T.P.T.U.P.I.I.I.L.R.T.U.U.T.I.T.U.T.T.T.T.T.~.T.~.~.~././././.(.(.(.(._._.(._._._._.(.(.(.(.(.(./.!.(.(.(.(.(.(.(.(.`.|.^._._.|.|.|.'.|.|..X.X.X.XdX.X.XzXdXzXzXzXvXzXvXzXcXcXcXcXcXzXzXcXxXdXdXdXzX.XzX.X.X.X'.@X.X.X.X.X.X.XdXdX.X.X.X.X.X X|.|.|.|.|.|._._.{.|.(._.^.^.", "D C Z Z Z F Z C Z Z D D D D Z L H H Z H H D L Z L Z L L Z Z L Z Z Z Z L L Z L L Z H H H H H H Z H H Z H H D D H H H H H Z L P c.pXm.{ _ u > * : r r r r 0 e r r r 0 t r r r r r r r r r r r r ; % % $ $ w c l f o $ o o o o $ $ o n f f + o o o $ o $ o $ $ $ $ o $ o o $ $ $ $ o c n c + o o $ $ $ o $ $ $ $ - & - c ' o o o o o $ o , n c f o $ , $ $ $ c n n o o $ $ $ $ % * % r r r r r r r r r r q r r r r r r r ; q r > ; % % $ H K.A.A.L.S.H.A.A.G.A.W.h.A.A.A.A.A.A.A.h.A.h.A.h.h.h.h.h.h.h.h.h.h.h.k.g.k.k.k.k.k.i.k.k.k.k.g.h.k.z.g.g.h.h.h.h.l.A.l.h.A.h.A.A.A.h.A.A.A.A.S.A.H.H.H.H.H.D.L.L.L.S.L.S.L.L.L.L.L.L.L.L.L.L.P.P.P.P.P.Y.Y.Y.T.P.T.T.T.T.T.T.U.U.U.XXT.T.T.~.~.~.~.T.~.~.~.~.~.~.!.(.~.[.(.(.(.(.[._.^.^._.|._.{._._._.(._._. X_._.|.(.|.(.|._.(.(.(.(.(.^.^.(./.(.(.(.(.(.(.^.^.|.|.|.`.|.'.'.|.|.'. X'.'._.`.|.`._.|._.|.(._._._.}.|._.|.|.|. X_.|. X|.{._.}.}.|. X|.'..X|.|.|.|.|.|.|.|.|._._._._.}.|.|. X X.X X X@X|.|..X'..X'..X'..X.X.X.XdX.X.X.XzX.XdXdXdX.XdXdX.XdXcXdXcXdXxXxXxXxXdXxXxXcXxXnXxXxXxXxXxXxXxXxXxXcXdXdXxXcXcXdXdXxXxXzXzXzXzXdXzX.XdX@XdXdXdXzX.XzX.XdXdXdXzXzXzXvXdXdXdXdX@X.X.X|._.`.^.(.(././././.~.~.~.~.~./.(.[.(.(.`.^.`.{.(.`.(.(.^.|.(.(.(.!.~.T.T.T.U.U.L.L.L.L.H.H.S.H.A.h.A.A.A.A.h.A.A.A.A.A.A.A.A.A.A.A.S.A.H.A.A.H.H.H.P.A.L.U.S.L.L.L.U.L.L.L.U.Y.L.U.U.U.T.T.P.T.U.U.Y.U.P.L.L.L.L.L.P.P.Z.P.L.L.T.U.T.T.T.T.T.~.T.~.(.~.~.~./.~././.(.~.~.~./.~.~./.~.!.[.[././.(.(.(.(.^.(.(.^.(.^.(.(.^.(.|.(.(.^.(.(.{.{.(._.(.(.^.^.`.(._.|._.|.|.|._._.|.|._.`.|.`.|.|.|.|._._.|.|.|.|.|.|.|.|.|.|.|.'.|.|.|.|..X X'.|.|.|.'.`.|.|._._.^.`.^.`.(.(._.[.(.^.(.^././.^.(.(.(.(.(.^._.}.}.|.(.(.^.^./.~.T.R.T.U.U.L.P.L.L.L.L.L.P.L.L.L.U.U.U.U.T.~.~.T.T.~.T.~.^.~./.~././././.[.^.(.(././.~././.!.(.(./.(.(.`.(.`.(.(._.}.|.|.|.|.|.|.|.|.|.|.|.|.`.|._.^.|._._.}.}.}.}.(.`.(.`.|._.{.|.}.}.}.}._. X X_._. X_. X_._._.}._._._._._._._.|.|.|.|.|. X.X.X|. X X'..X|. X|..X'.|. X X|.|.|. X|.|. X_.'.{.|.|.}.}.}.}.`.(.(.|.{.(.(.(.(.(.(.`.(.(.(.(./.(.(././././.(././.(./.^./.(././././././.~.~.(.)./.(./.(.(./.(./.(.[.(././.^.~./././.~.~./././././.~./.~.~.~.!././.T.T.~.~.~.T.~.~.~.T.~.~.T.~.~.~.T.~.T.~.T./.~.~.T.T.T.~.I.T.T.~.T.T.T.T.T.T.T.P.T.P.T.U.U.U.Y.I.U.U.I.L.U.T.U.U.I.T.T.U.T.T.T.~.~./.!.[.(././.(./.(.(.(.(._._._._._._.(._.(.].(.(.(.(.(.(.(.|.(.(.(.^.`.(.(._._.|._.|.|. X X X XxX.X.XzXzX.XzXdXdXzXzXzXzXzXvXdXcXdXcXzXzXzXdXdXdXdX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XdX@XzX.X.X.X.X.X.X'.|.|.|.|.|._._.|.{.{.|.", "Z Z Z Z Z D Z Z Z Z D Z Z Z L L H Z Z H D D Z H Z S Z Z L Z L Z L Z Z P L H Z L H H H H H H H H H D H H H H Z H H L L Z P Z J m.M.M.{ n y r 0 r r r : r r r r r r r r r r r r r r 0 : : r 0 0 r ; ; % $ , $ o $ o o $ o , o $ $ $ $ , o $ o o o $ & $ $ & , $ $ $ $ $ $ , $ $ $ $ $ $ o $ o $ $ $ $ $ $ $ $ $ $ % ; % % % $ $ $ o o o o $ o $ $ $ $ $ $ $ $ & $ $ $ o o o o o o $ $ % % ; ; 0 r r r r e r : r r r r r r : r r ; r ; r r r % % & 0 D.H.D.L.S.A.G.A.A.A.A.A.A.l.A.A.A.A.A.A.A.h.h.A.A.A.h.l.l.l.h.h.h.h.g.j.h.k.h.k.g.k.d.k.k.k.h.k.h.h.g.h.h.g.h.h.h.A.A.l.A.h.A.A.A.A.A.A.S.S.H.S.A.S.H.H.H.H.H.L.L.L.U.L.P.L.L.L.U.L.P.P.L.U.P.T.U.T.P.T.T.T.T.T.U.T.T.T.T.T.T.T.T.T.T.~.T.T.T.~.~.~.~.~.~.~.~./././././././.(.(.(.(.|.(.`.^.`._._._.}.}.}.}._.|.`.|.|._.(._.(.(.(.!./.(.(.(.(.[.(.(.(.(.(.{.(.|.[._._.|.|.|.|. X X.X X.X|. X|._.|._.`.|.`._._.`.|.^.|._.|.}._.|.|.|.|._.|.|.}.|.}. X|. X X'.|.|. X}.}.}.}.}._._.{._.}.}. X|. X X|.@X|..X.X.X.X.X@X'.'.'.'..X.X.X.X'..X.X'.dXvXdXdXdXvXvXdXdXdXzXcXnXxXcXcXdXxXxXnXcXnXcXcXcXdXcXcXxXcXcXcXcXxXxXdXnXxXdXxXdXzXdXzXzXzXdX'.zXdXdXdX.XdX.XdXdXdXdXmXdXzXvXdX.XxXdX@X XdX X'.|.|.(.{.(././././.~.~.~.~.~.~./.(.(.(.(.|._.(.(.{.(.(.(.(./.(.(.T.T.T.L.L.U.L.L.L.L.L.H.H.H.S.A.A.A.A.h.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.S.G.H.A.A.H.L.H.D.L.L.L.L.L.L.L.Y.L.L.T.L.T.U.U.Y.U.I.Y.T.Y.U.Y.U.L.P.P.P.L.P.P.L.K.P.P.L.T.U.T.T.T.T.T.~.T.~.~.~.~././.~./.~.~.~.~.~.~.~.~./.~.~./.(./.(.(.(././.(.(.(.(.(.(.(.(.(.^./.(./././././.(.^.(.^.^.^.(.^.(.|.(.|._.|._.{.(.`.|.|.(.|.(.`.|.|._.|._.`._.|._._.|._.`.`.`._.`.`.`.`.`._.{.|.'.(.`.(.(._.(.(.(.(.(.(.XX(.~.(.(.~.~./././././././.(.(.(.(.(.^.~.^.~.T.P.T.T.Y.P.P.P.P.L.Y.L.L.L.L.L.L.P.L.U.L.U.Y.T.T.T.T.~.T.~.~.~.~.~.~.~.!.~./.^./.~.~.~././.~.~./.(././.[./.(.(.(.^.|._.`.}._.|.'.|.|.|.|.|.|.|.|._._.|.^.(.`.`._.}.}.|.(.|._.^._.}.[._.|._._._.}.}.}.}. X}._. X[._._._. X_._._._.[.|._._.}. X_.|.}.|.|.|.|.|.|.|..X|. X.X X|.|.|.|.}.}.}.|.|.|.|._._._.|.{.{.|.(._.^.|._.(.(.(._.(.(.(.(.(.|.(.^.(.).^.(./.(.~.(./././.(.(./././././././.~.~.~./.!.~./.(././.(.~./.(.(./.T.[.^.^././.~.!.~.~.~.!.!.~.~.~.~.~.~.~.~.~.T.~.~.~.~.T.~.~.~.~.T.~.~.T.U.~.T.~.T.~.T.T.T.T.T.~.T.~.~.T.~.T.~.T.[.T.T.T.T.T.U.P.L.U.U.U.L.U.U.U.I.U.U.U.P.U.Y.T.T.T.T.T.T.T.~.~.~././.[././.(.(.(.(.`.(._._._._._._.(._._.(.(.(.(.(.(.(.(./.(.(.|._.^._.[._._.|.|.'. X|. X X@X.X.X.X.XzX.XvX.XzXdXdXnXcXdXcXcXcXcXzXcXdXdX.X.XzX.X.X.X.X'.dX.X.X.X.X.X'..X.X.X.XdX.XzX X.X.X.X.X.X|..X|.|.|.|._._.|.|.(.", "Z C Z C D Z Z Z Z Z Z D L Z Z Z H H H H D H H H H H Z L Z Z H L H L Z L L Z L L Z H F H F H H Z H H H H H H H H H L H L J L ) pXM.{ ' ^ y r r y r r r r r r r r r r r r 0 e r r r r 0 : r r r r % % ; $ $ & $ o $ o $ $ o - $ $ & $ $ - $ $ $ $ o $ $ $ & $ & $ & $ % % $ $ $ $ & $ $ % $ $ $ o $ & $ $ , % $ $ $ % % ; % % % $ o , $ $ o $ $ $ & $ $ $ , $ $ & $ & $ $ $ $ $ $ $ $ % % * ; * r r r r r 0 r r r r r r r r r r r r r = y r ; * % $ $ n.H.L.G.S.S.S.G.S.A.A.G.G.G.A.A.A.A.A.A.h.h.A.A.z.h.h.h.h.l.l.h.h.l.h.z.z.z.h.z.k.g.k.k.k.k.k.k.z.h.h.l.h.Z.A.A.A.z.h.H.l.A.h.h.A.H.S.S.S.G.S.H.H.H.H.H.H.L.L.L.L.L.L.L.P.L.K.L.U.U.U.U.T.P.T.Y.T.T.Y.T.T.T.T.T.T.T.T.T.P.T.T.U.T.T.T.T.T.~.XX~.~.T.~.~.~.~.~.~./.~././.!.(.~.(.(.(.^.(.(.(.^._._._.}.}.}.}._._._._.|._.{._._.(.(.(././.(.(.{.(.(.(.(.(.(.(._.|._.|.|.|. X.X X.X|..X.X|.'.|.|._._._.(.^.|.|.}.}._.|.`.|._.|.|.|. X|.|.}.{.|.}.}.}.|.|.|.|..X|. X|.|.}.}.}.}.|.(.^.|.}.|.|. X|..X X X X.X|..X|..X.X.X.X.X.X|.dX.X.XdX.XxXdXdX X.XdX.X.XdXdXdXcXzXzXdXdXdXxXxXxXnXcXcXdXfXcXcXcXcXxXxXcXdXcXcXxXxXxXxXnXdXcXdXzXzXzXzXzXzXzXzXdXdXcX.XdXdXvXdXdXdXdXdXzXzXfXvXdX.XdXdX'.'.|.|.`.(.^.E./././.T.~.T.T.T.T./.T.^./.(.(.^.(.(.(.(.(.(.~.~.T.T.T.T.T.U.L.U.U.U.L.L.L.H.H.H.Z.A.l.A.A.h.A.h.A.g.A.h.A.A.A.A.A.A.G.A.G.A.A.A.G.S.G.H.S.L.L.L.L.L.G.L.L.L.P.L.U.U.L.L.U.Y.T.T.T.U.U.U.L.P.P.P.P.P.P.P.L.L.P.P.L.U.T.U.T.U.T.T.T.~.~.~.T.~.~.~.~./.~./.~.^./.~.~.~.~.~.~./.~.~.~.(./.~./.^././.^.^.~.~.^.(.~./././.!./././.~.~.[.T././.^.{.(.(.(.^.(.^.{.^.(.^.^.^.(.(.(.(.(.^.^.(.(._._.|.^.|.|.{.|._.(.`.`.`.(.`.(.(.^._.(.^.)./.^.^.(.(./.(./.(././.~.(.(.(.~.(.^.~./.~./././.^././.~.~.~.~.T.T.T.T.U.U.U.U.P.L.L.L.L.L.L.U.L.L.L.L.L.L.L.L.L.U.T.P.T.T.T.T.T.T.~.~.~.~.~.~.~.~.~./.~.^././././././.!.^././.^./././.(.(.(.^.}._.|.|.|._.|.|.|.|.`.(.{.^.|.(.^.`.(.`.}.}.^._.|.^.`.|._.{._._._._._._._.}._._.}._._. X_._._._._._.}.}.{.}.^. X}.}.|.}.|.|.|.|.|.|.|.|.|.|.|._.|. X|.|.|.|. X X|.|. X{.`.|._._.`.|._.|._._.{._.(.|.{.^.!.(.(.(.(.^.(.(.(.(.(.(.(.(.(./.(./.^././.(./.^./.[././.~.~.~.~.~./.!./././.(.~.(.~.[./.{.~.{.~.~.~.~.~.~.~.R.!./.T.!.~.~.!.~././.~./.~.~.~.~.~.T.~.~.~.~.E.T.[.~.~.~.T.T.T.T.~.T.~.~.T.T.T.T.T.T.~.T.P.U.Y.T.T.U.Y.T.P.Y.U.L.L.U.U.L.L.U.U.Y.U.T.U.T.U.T.T.T.T.~.~.~.[././././.(.(.(.^.(.`._._.'._._._._._._.(.(.(.(._.(.`.`.(.(.(.(.(.^.{.|._.|.|.|. X|.|..X X.X.X X X.X.XzX.XzXdXzXzXdXdXdXcXdXcXdXcXcXzXzXzXzXzX.XfX.XzXxX.X.X.X.X.X'..X.X.X.XxX.X.X.XdX.X.XdX.XzX.X.X.X.X X'. X|.|._.{._._.", "B D Z Z C Z Z Z Z Z L Z Z L L S H H H Z H H Z Z H Z L Z H H L Z Z H Z Z H L S Z H H H H H H K H H Z H H H H H H Z H L L L L ' M.M.{ ~ y y e 0 * r r r r 0 r r r r r r r r r r r r r r r r : r r ; ; : % % * o $ $ $ $ & $ % % % % % % $ $ $ $ $ $ & % % % % % & - % % $ % % % & $ % % $ $ $ $ $ $ $ - % $ % - $ % ; % ; % % % $ $ $ $ $ , $ $ % - % % $ - $ & $ % $ % $ $ $ $ $ $ $ % % ; * * r r r r r r r r r r r r r r r r r r r r r r ; * % & $ Y H.G.G.H.L.S.S.H.S.G.G.A.G.A.A.h.A.A.A.g.A.h.A.l.A.h.D.l.l.A.h.h.z.h.h.h.l.k.h.h.k.g.k.k.k.h.h.k.k.A.h.A.h.A.g.S.A.z.A.S.A.A.H.A.H.S.Z.H.G.H.H.H.L.K.H.L.H.L.L.L.L.L.U.L.U.Y.L.U.Y.U.T.U.T.T.T.T.T.T.T.T.T.~.P.T.P.T.T.T.T.U.T.T.T.T.T.T.~.U.T.~.~.~.~.~.~.~.~.~.(././.~./.(.(.^.(.(.(.(.(._._.{.}.}.}.}.}. X X[._._._.|.`.(.(.(.(.(.(.(.(.^.(.(.(._.^.`.`._.|.{. X_. X X|.|..X|..X.X|.|.|.|.|.(.{._.|.(.(.}.`.^.(.(.`._._._.|.|._.}. X|.|.}.}.|.|.|.'.}. X.X|.|.}.|._.[.(.|._.|._.}.}.|._..X'. X X.X.X.X.X.X`..X.X.X|..X.X.X.XdX.X.X'.dX.XdXdXdXvXdXdXvXdXzXzXzXzXxXxXcXxXdXnXxXdXnXdXcXxXcXcXxXcXcXzXzXdXxXcXdXcXxXdXdXdXzX@XzXzXxX'.zXdXcX.XdXcXdXvXdXdXdXdXdXvXxXdXdXdXzXzXdX.X'. X|.|.}.^.(.(.~.~.T.T.~.~.T.T.T.T.T.~.~././.(.).(.(.~.^.~.T.T.T.U.U.U.U.U.U.L.L.L.U.L.H.H.S.A.A.A.A.h.h.A.A.A.g.A.A.A.g.g.A.A.A.j.A.A.A.S.S.A.A.S.S.H.D.A.L.L.U.L.L.L.L.P.P.L.T.P.T.P.L.P.U.U.U.T.Y.U.P.T.T.P.P.Y.Y.U.P.P.P.U.Y.Y.P.Y.T.T.T.T.~./.T.T.~.~.~.~.~.~.~.[.~.!.~.~.~.~.~.~.~.~.~.~.[.~./.~.~./.~.~.~.~.~.~.~./.~.~.~.~.~./.~.T.~.~.~.~.T.~.~.~.~.~.T.E.~./././././.^./.(.^./.(./.(.(.(.(.(.^.^.^.(.(.(.[.(.(.(.(.(.(.(.(./.(.(.^././.(././.^./././././././.~.~.~.~.~.~.~.~.~.~.R.~.~.^.~.~.~.~.^.P.Y.P.U.T.U.L.U.L.L.P.U.P.L.L.L.L.S.P.S.L.L.L.L.P.L.U.Y.T.T.T.~.[.~.T.~.T.~.R.~.~./.~.~.~.~./.~.~.~.~././././.(.!./././.[.(.(.(.|.(.|._.|.|._.`.`.`._.|._.(.(.(.(.^.`.`.(.[.|.^.`.(.(.(.(.(._._._.(._._.|._. X_._._.}.|._._. X_._.}._._.}.}.}.}._.}.}.{.}.}.}.|.|.|.|._. X|.|.|.|. X[.|.}.|.|.}.}.|._._.|.(._.^._._.|._.^.`.(.^.|.(.(.(.(.(.(.(.(.(.].(.(.^.(.(.(.^.(.(.(.(./.(.(.(./.(./.~.~.{.~.~.~.~.~.~.~.!.~./././.(.T.(.~.(.~./.~.E.~.~.~.!.!.R.T.~.T./.~.~.!./.~.^./.~.{.T.~.~.~.~.~.T.T.~.XXT.T.XXU.Y.T.T.T.T.T.T.T.T.T.T.T.~.T.~.T.T.Y.T.P.Y.T.U.Y.U.L.U.U.U.L.U.U.U.L.I.U.U.I.I.U.T.U.T.T.T.T.T.T.~.~././././.(./.(.(.(.(._._._._._._._._._.(._.(.(.(.(.(.(.(.(.|.(.(.|._._._.|._.|._.|.|..X|..X.X.X.X.XzX.X.XzXzXdXzXzXdXxXxXdXcX%XdXcXzXzXzX.X.X.XzX.XzX.X.X.X.X X.X.X.X.X.X.X.X.XcX@X.X'.'.xX.XdX.X.X.X.X.X.X.X.X X|. X|._._.", "C Z Z Z Z D G B Z Z Z Z Z Z Z Z L Z H Z H Z Z L H Z H H H Z S Z Z L Z P H Z L Z H H Z H H H H H L L D Y H H H H L H Z D H U { { M.{ ^ u r e t e r r r r e r r r r r r r r r r r r r r r r 0 r r * * * * % $ > $ % % & , % % % % : : % % % % $ $ ; % % % % % % % % > % ; % ; % % : % % % $ % , % % % % % ; > % % % % ; : % : % % $ % % $ % $ ; % % % % % % % % * ; ; % % % % $ - % % ; % ; r r r r r r r r r r r r r r r r r r r r 0 0 r r r ; % $ $ u H.D.H.G.S.H.G.A.A.G.Z.G.G.Z.A.A.A.A.A.Z.A.j.A.l.l.l.l.l.l.h.h.h.h.h.h.h.h.h.h.g.h.k.g.g.l.h.h.z.D.h.A.h.h.A.A.h.h.S.A.A.S.A.A.G.A.H.G.H.H.H.H.K.G.H.L.L.L.L.L.L.L.L.U.U.U.T.Y.U.T.U.U.Y.P.^.T.T.T.Y.T.T.Y.T.T.T.T.T.L.U.T.T.U.T.T.T.~.T.~.XXE.T.~.~.~.~.~.(.~.~.~././.(./.(.~./.(./.(.(.(.`.[.}._.}.}.}.}.|._.|._.|.|.(.(._.(.(.(./.(.(.(.(.(.(._.(._._.(.{.|.|.|. X|.|..X.X|..X.X.X.X'. X_._.`.`.|.^.|.(.^.|._.(.`._._.|.|.|._.|.}.}.[.|.}.}.}.|.|.'. X'.@X|.|.}._._.|.(.(.^._.|.[.}.|.|.|..X X X|..X.X.X.X.X.X'..X.X.X.X.X.X.X.X.X@XdXdXdX X.XdXdXdXdXdXzXzXzXzXzXdXdXnXnXdXxXxXxXxXxXxXcXdX@XcX.XcXmXdXxXdXcXcXnXcXdXdXdXdXzXzXzXzXzXzXdXdXdXdXdXdXdXvX.XdXdXdXdXnXdXdX@XzX'.zX@X.X`._.|.(.(./.~./.T.(.T.T.T.~.T.T.~.T.R.~././.~.(./.(.~.~.T.T.T.T.U.U.L.I.L.U.L.L.L.U.H.H.J.G.A.A.h.Z.A.h.h.h.A.h.h.A.A.A.A.h.A.A.A.A.A.A.A.G.S.S.S.G.H.L.S.H.D.L.L.U.P.L.U.L.P.P.P.T.U.U.T.T.U.I.T.U.T.P.P.P.P.P.P.T.P.P.L.Y.P.Y.T.T.I.T.T.T.T.T.T.~.T.[.~.T.!.T.!.~.T.T.!.T.T.~.R.~.~.~.~.~.~.~.~.~.~.~.~.~.~.T.~.T.R.R.~.R.~.T.T.T.~.T.~.T.T.T.T.T.T.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.[.~.~.^././.~.(.[.(.(.~./././././.(./././././././././././.~././././.(.T.(.T.~.~.T.~.T.~.R.~.R.~.~.T.~.~.T.T.T.P.U.U.U.U.U.U.U.U.U.L.L.U.L.L.L.L.L.L.L.U.S.L.S.L.L.Y.T.P.T.T.T.T.T.~.T.~.~.!.~.!.~.~.~.!.~.~.~./././.[././.[././.(././.(././.(.(.(.^.^.[.).|.(.(.(.^.(.(.(.(.^.{.(.(.`.`.{.^.^.(.(.`.{.(.(._.|.^._.|.{._._._._._.}.}.}.|. X].}._.}.}.}._.}.}.}.}.}.}.}.}.|.}.|.|. X}.|.|.|.|.|.|. X}.|.|.|.|.}.|.|.|. X{.`.`.(.`.|.^.|.(.^.(.^.^.(.(.(.(.(.!.(.|.(.(.(.(.(.(.(.^.{.(.(.(.(.(.(.(./.(.(././././.~.~.~.~./.~.~.~.~./.~.~./.[.(.(.~.[.^.~.^.~.~.~.~.!.(.T.~.~.T.~.~.~./.T./.~.~.~.T.(.T.T.~.~.~.~.T.U.XXT.~.~.~.~.T.T.T.T.T.T.T.~.T.T.T.T.T.T.Y.^.P.T.T.U.T.Y.Y.Y.U.L.Y.L.Y.L.L.K.R.L.U.U.U.U.U.T.U.T.T.T.~.~.T././.~./.(.~.(.(.(.(.(.(._._._._._._._.(._.`.(._.(.(.(.(.(.^.{.(.^.|.[.}.|.|._._.|.|.|.|..X.X.X.XzX.X.X.XdXdXdXdXdXzXdXcXdXvXcXcXcXdXcXzXzXzXzXzX@XdX.X.XzX.X.XdX@X'..X.XxX.X.X.X'.'..XxX.X.XdXdXdX.XdX@X.X.X|. X|. X|._.|.|.", "Z B D Z Z Z F B D D Z D D D D D J L Z H Z L H Z Z Z S H H Z H H Z H F D H D H H F H H H J G H H H H H P L L K J P Z L H D H { M.{ ' n r > r r y : r r r r r r r y e = y 0 0 r ; 0 0 r r : : e q ; ; ; * 0 % % % % % % % % ; % ; * : * % % % % = * % * * ; % * % % ; % * * % * * : % % ; % % % % * ; % % ; % ; ; % * * e : * % * % % % % % % ; * ; % ; % * % % ; ; ; * % % % % % * ; % ; ; ; r 0 r = r 0 e * r r r r r r r 0 r r r r r r : : * % $ $ : L.H.L.S.H.S.H.H.h.A.G.S.H.A.A.A.A.A.A.A.h.G.A.g.A.h.A.A.g.h.h.h.h.h.h.h.h.h.h.h.z.h.h.h.h.h.l.h.A.h.A.g.A.A.A.h.A.A.A.A.A.G.J.G.G.G.H.H.S.L.L.L.S.L.L.L.L.Y.L.L.U.L.U.U.T.U.U.T.T.T.T.T.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.P.T.T.~.U.~.T.T.~.T.~.T.E.U.~.~.T./././.^.~.~.^.~.~.(.[.(.(.(.(._._.}.}.}.}.}.}._. X_._._._._._._._.^.{.(.(.`.(.(.`.(.(._._.(.|._._.|.|. X'. X X.X|..X|.|.|.|._._.|.}.}._.(.|.(.|.^.(.(._.^._._._._._.|._._.|.|.|.`.`.`.|.|.|.|.|.|.}.}.}._.[.`._._.^._._.|.|.|.|. X X|.'.|..X.X.XdX'..X.X.X|..X X.X@X'.dX.X.X X#X.XvX.X.XdXdXdXdXdXdXzXzXzXzXcXcXdXcXcXxXxXxXzXxXzXzXzXzXcXdXdXzXxXxXzXzXzXzXzXdXcXdXdXdXdXzXzXzXzXzXzXdXzX.XdXzX'.zX.XxX.X@XdXdXdXzX'.'..X|.|.(.(.(./.~.~.~.T.T.T.T.T.T.T.T.T.T.~.~.~.~.~.~.T.T.T.T.T.U.T.U.U.L.L.L.L.L.L.L.L.H.H.S.S.A.h.A.h.h.A.g.h.A.h.A.h.l.h.S.g.A.A.A.A.g.A.A.H.Z.S.S.S.H.H.H.L.L.L.L.P.P.U.P.L.U.P.P.P.U.I.T.Y.U.U.U.U.U.L.L.U.U.U.U.L.P.P.Y.P.P.U.U.T.T.P.T.P.T.T.T.T.~.~.~.~.T.Y.~.~.T.T.T.Y.T.T.T.T.T.T.T.~.T.T.T.T.~.T.T.T.T.T.U.T.T.T.T.T.P.T.T.T.T.T.T.T.T.T.P.T.T.T.T.T.T.T.T.T.T.T.~.T.T.T.T.~.~.~.~.~.~.~.~.~.[.^.~./././.~.~./.~.~.~.~.^.~.~.~.~.T.T.!./.~.~.~.~.~.~.~.~.~.~.~.~.T.~.T.~.T.T.T.T.~.T.T.T.T.T.Y.U.U.P.U.U.U.T.U.U.L.U.L.L.L.K.U.U.L.L.L.L.S.L.D.L.L.L.L.U.P.Y.T.T.T.T.T.Y.T.T.~.T.~.T./.T.~.~.R.~.~.~./.~.(.~./././.[.~.~././.~.(./././.^./.(./.[.^.(.(.(.(./.^.(.(.(.(.(.(.(./.(.(.^.^.(.(.(.(.(.{.|.{.|.(.^._._._._._._.}.}._._._.(._._._._._._.(._._.|._._.|._._._.|.|. X_.|._.'.|.|.|._.|._.|.|.|._.^.|.(.(.|.`.(.`.(.`.`.|.{./.(.(.(.!.(.(.(.(.(._.(.(.(._.(.(.(.(.(.(.(.(.(.(.(./.(././././.T./.T.~.~.T.~.T.T.T.T.~.~.[./.~.~./.^.E.~.(.~.T.~.T.T.~.~.T.T.T.~.~.T.~.~.~./.~.~.~.R.~.T.~.T.T.~.~.~.T.~.~.~.T.~.Y.T.T.T.T.T.T.T.T.~.T.T.T.T.!.P.Y.T.U.T.P.U.U.L.U.L.U.L.U.L.P.Y.U.L.P.L.L.T.T.P.Y.T.~.T.T./.T./././././.(./.(.(.(.{.(.|.(.`.`.|.^.|.^.|.(.(.|.`.|._.^.`.^.(.(.(.|.`._._.{.|.`.|.`.'..X.X.X.X.X.X.X.X.XzX.XzXzXdXzXzXzXcXcXxXdXxXxXxXzXzXzXvX.XdXdX.X.XdX|..XdX.X.XzX.X.X.X@XdX.XzX.XzX.XzX'..XzX.XxX`..X'..X.X.X X|.|.|.|.", "Z Z C Z Z Z Z Z D D Z G D D Z L H Z H Z H Z Z Z J Z H H H Z H Z Z Z L Z Z H F H H H H H J D H H H H H H H H G D H H H L L H { { { ' u > r r r r r r r r r : r r ; e ; > e 0 > : e : r r : ; ; ; y ; : * * % e ; ; ; % ; r e ; * 0 * * * : t % % * * e : r r ; ; ; > : : = > * : : : * 0 * e ; % * ; ; ; 0 r ; e * r % * : : e * ; ; ; ; ; * ; e ; ; ; 0 ; ; * ; ; % ; ; ; ; ; ; ; % e ; y ; e ; ; y e e r r y * r r r r r r r r r r r r : : * % & o $ D.L.L.L.S.K.A.H.H.G.H.G.H.S.H.H.A.A.A.h.A.g.A.A.h.A.h.h.A.h.h.h.l.h.z.h.h.h.l.h.h.h.h.h.h.A.l.h.A.A.h.h.h.h.A.A.A.A.A.A.G.H.h.H.A.G.H.H.H.S.S.L.U.L.U.L.L.L.U.L.P.U.U.U.U.T.T.T.T.T.T.T.~.~.~.T.T.T.T.T.~.[.T.T.T.T.T.T.T.T.T.T.T.~.T.~.T.T.~.T.~.T.XX~.~./.~.~.~./.~.~.~.~.(.~.(.[.(.(.(._._._._._.}.}.}.}._._._._._._.}._._.`.^.(.^.^.(.(.`._.`.^.}.|._._.|.}.|.|. X.X|..X.X.X|.|..X|.|.|._.[.}.|.^./.|.{.^.|._.|.|._._._._. X{._.`.|.|.|.|.|.`.|.|.|.'.|..X}.}.{.|.}.}.|.(._._._._.|.|.'.|. X'..X|..X.X'.'.@X.X.X.X.X|..X XdX.X X.X.X@X XdX.X.XdX@XdXdXzX.X.XzXzXzXzXxXcXdXzXcXcXdXcXnXzXzXzXxXzXzXdXmXxXzXzXxXzXzXzXzXdXdXdXcXcXdXzXzXzXzXzXzXzXdXzXxX.XzXxX.XxX.XzXzX.XdX.XzXzX.X|.|.`.(.(././.R.T.~.T.T.U.T.L.T.U.T.T.~.T.~.~.T.T.T.Y.T.T.I.U.U.L.U.L.L.U.L.L.L.S.S.H.H.S.S.A.h.h.h.A.h.g.D.h.z.h.A.G.h.j.A.g.h.A.h.A.A.A.A.H.S.H.H.H.H.H.L.G.L.L.D.U.U.P.P.U.P.Y.T.I.Y.I.T.U.U.U.U.L.U.L.L.U.L.U.L.U.L.P.P.P.U.U.U.T.T.T.U.T.T.T.T.Y.T.T.Y.^.T.Y.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.U.U.T.T.U.T.T.T.T.Y.T.T.U.U.P.U.U.U.P.P.Y.Y.T.Y.T.T.T.T.T.T.T.T.T.P.T.R.T.T.T.~.~.T.~.~.T.~./.T.~.~.~.~.T.~.T.~.R.~.~.T.(.!./.T.~.~.T.~.~.~.T.~.T.~.T.T.T.T.T.T.T.T.T.T.Y.T.I.T.U.U.I.I.L.U.U.L.L.U.Y.L.L.I.R.L.L.L.L.L.L.L.L.L.L.D.H.L.L.L.L.L.T.U.P.T.T.T.T.Y.~.T.T.~.T.~.T.~.T.T.~.~.~.~.~.~.~.~././././.^.~.~././././.(./././.!././.^.(./.!.(.(./.(.(.(.(.(.(.`.(.|.(.|.|.(.`.(.|.`.^.(././.|.`._._._._._._.}._._._.|.`.`.|._._._._._._._._._._._.|.|.|.}.}._. X|.|.|._.|._.`.`.|._.[._._._.(.^.(.^.(.`.`.^._.(.`.(.(.^.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(./.(.(./././././.!.~.~.~.T.~.T.~.T.~.~.~.~.T.~./.~./.^.(.~.~./.[.~./.~.T.T.(.~.(.T.~.[.T.~.~.(.~.~.~.~.~.~.~.T.~.~.T.T.~.~.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.Y.T.T.T.U.U.U.Y.U.U.U.L.Y.L.L.U.P.U.U.P.Y.P.Y.U.P.T.T.T.T.T.T.~.R.(.~././././.(.(.(.(.(.(.(.(.`.(.(.^._.(.|.(.`._.^.(.(._._.`.^.(.|.{.`.|.`.|.|._.`.|.|.'..X.X.X.X.X.XzX'.zXzX'..XzXzXzXzXcXdXzXxXzXzXzXzXzXdXzX.XdXzX.XdXzX.XzX.X.X.X.X.X.XxX.X.X X.X.X.XzX.X.XzXzX.XzX@X.X.X.X.X.X X.X|.|.|.|.", "Z D Z Z C Z D B Z D Z D Z Z L Z Z H H H Z D L Z Z H H Z H H H Z S H D H H S H H H H F H H H H H J J U G Y H L H L H G J Z H [ { ' ' u e r r r r r r r r r r r r q 0 e ; 0 y ; r : ; r 0 q r : ; r r 0 r r r 0 r ; % r r e = r r : : y : * 0 : y * * e * r * r r e > ; % e : t > : r * e r ; e ; ; ; y : r r ; % 0 r r y r : y : r r 0 * ; ; r * r e ; ; ; * r r e : ; ; * = * ; = e r y = * e ; ; r ; r e ; ; ; r r r r r r r r y : : r r r ; % $ $ o D.L.S.L.D.L.H.K.A.H.H.A.K.G.S.S.H.G.A.A.A.A.j.A.h.A.G.j.h.l.h.l.l.h.l.l.l.l.h.h.h.h.l.l.h.h.A.z.h.A.g.D.h.A.A.A.A.A.h.H.A.S.S.S.H.G.G.G.L.L.L.L.L.L.L.U.Y.L.P.P.P.P.P.U.T.T.T.T.T.T.T.T.T.~.T.~.~.~.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.~.T.~.T.~.T.XXT.~.~.T.~.T.!.~.!.~.~././.^.^.(.(.{.(.(._._.|.}.}.}.}. X_. X_. X_._._._._._._.`.^.|.[._._._._.}.}.|._.|.}.'.|..X X|..X'. X|.|.|.|.|.|._.|.|._.`.|.`.`.^.`.|.^._.{._._._. X_.|.|._.|.{.}.}.}.}.}.}.|.|.|.|.|._._.^.^.|.^._._._._._.|.|.|.|.|.|. X.X|..XdX.X.X.X.X.X.X.X.X.X.X.X.XdX.X.X.X.X.XdXdX.X.XdX.XzXzX.XdXzXzXzXdXnXdXzXzXcXdX.XxXzXzXzXdXnXdXxXzXzXxXzXzXzXzXzXdXcXdXdXdXzXzXzXdXhX@XdXzXzXdXdXzX.X.XzX.X.XzXxXzXdX'..X.X.X|.|.`.^././.~.~.T.T.P.U.Y.Y.U.T.U.T.T.T.T.T.~.T.T.~.T.T.I.U.P.T.L.L.L.L.L.L.S.U.U.S.G.A.A.G.A.A.h.A.A.A.h.h.l.l.l.l.g.h.h.A.A.A.A.A.A.A.A.A.A.H.A.H.H.H.H.L.L.L.L.U.U.H.U.U.I.Y.T.P.U.U.U.T.T.U.U.U.L.L.Y.K.L.L.L.L.L.U.U.P.L.A.U.U.P.P.U.T.T.T.Y.T.Y.Y.T.T.T.T.P.T.U.T.L.U.U.U.U.U.T.U.U.P.Y.U.U.U.L.L.L.U.U.L.U.U.L.U.U.U.U.U.I.L.U.U.U.L.U.P.P.L.P.P.Y.U.L.U.P.P.U.U.U.U.L.P.U.P.U.T.U.T.T.T.P.T.T.T.T.T.T.T.T.T.T.T.T.~.T.~.T.T.Y.~.~.~.T.T.~.T.~.T.~.T.T.T.T.T.T.T.T.L.U.L.U.Y.I.I.I.I.U.L.L.U.U.P.P.L.Y.L.U.U.L.L.U.L.K.U.L.U.L.L.U.U.L.L.L.L.L.D.L.G.L.L.U.U.P.T.T.T.Y.T.Y.T.~.T.T.T.T.~.T.~.~.T.~.~.~./.~.^.!./././.(.~.~.~.~.~.~.^./.!./.!./././././.(./././.(.(./.(.(.(.(.|./.(.(.(.(.`.(./.{.`.(.`.(.|.{._._._._._._._._._.(.(.`.(._._._.(._.(._.{._._.(._._.|._.}._.|._._._.|._._._.(.`._._.{._.{.|.(.|.(.(.`.(.(._.(._.|.(.(.(./.(.(.(.(.(.(.(.(.(.(.(.(.(.(._.{.).^.(.(.(././././././.~.~.~.~.~.T.T.~.~.T.~.T.T.~.~.[.~.~././.~./.(.~.~.~./.T.~.~.~.~.~.~.~.T.~.Y.T.~.~.~.~.~.~.~.~.T.~.~.T.~.T.~.T.[.~.T.T.Y.T.T.T.T.T.T.P.Y.T.T.U.T.T.T.T.T.T.T.U.T.U.P.U.Y.U.L.L.U.P.P.P.P.P.U.P.T.T.T.T.T.T.T.T.~.~.~./././.(./.(.(./.(.^.^.(.(.^._.^.{.(.(.`.|._.(.|._.|._.{.|.^.|._.^._._.|.|._.|.|.|. X|..X.X|..X.X.X.X.X.X.X.X.XzXzXdXzXzXzXzXdXxXzXzXzXzXzX.XdX.XdX.XdX.X.XzXdX'.dX.X.X.X.X.X.X.XdXdXzXzXzX.X.XzXzXzX'..XzX.X.X|..X|.|.|.|. X", "Z B Z Z Z D F Z D Z D Z Z Z L Z H J Z H H Z Z H H Z H H Z H Z H Z H H D H D F H H F H H H H H H F H H H F H H H L H H Z H H { ' ' Q u : = ; r r r r r r r r r r y % e e ; = = * : y r y > = ; ; 0 r r r 0 e ; r r ; r r ; ; 0 r ; y * * e r : * r r : : r r r r = r e : : 0 e : e e ; ; ; = r r r r ; : r r 0 e r y r * r r = : * 0 r r r r 0 r 0 0 ; e r r r * : ; ; ; y ; * y e % e r y y r r 0 ; y ; ; y r r r r r r r r r r ; 0 : = y r * % & o L.U.H.U.P.H.H.H.H.H.H.H.A.H.S.S.Z.A.A.A.A.A.G.g.A.A.j.A.A.A.A.l.h.h.h.h.l.l.A.l.l.l.l.l.h.l.A.A.A.h.A.A.A.h.A.A.A.A.W.A.H.S.A.H.H.H.H.L.G.L.L.L.L.L.U.U.Y.P.P.T.P.P.T.U.T.T.T.T.T.~.T.~.T.T.^.T.~.~.~.T.~.T.~.T.~.T.T.~.T.T.T.T.~.~.T.T.T.T.~.T.T.~.T.~.T.~./.[.T.~.~.~.~.~./././.(.[.^._._._._._.}.}.}.}._._._._._._._._._.(.`.^.^.|.^.|._.|._._.}.}._.|.|.|.|.'.|.|.'.|.|.`.|.|._.|.|._.|.^.|.(.(.|.^.{.).(.(.(.`.|._.|._._._._._.|.`.|.|.|.}.|.}.}.}.}.|.|._.|.`.|.(._.|._._._._._.|._.|.|.|. X|..X X.X.X.X.X.X|..X.X.X'.'..X.X.X X.X.X.X.X.X.X.X.X'..X.XzX.XzXzXzXzXzXdX@XcX.XzXzX.XcXzXzXzXzXdXcXnXdXzXxXzXzXzXzXzXzXdXdXdXdXcX XdXzX.XzXvX.X'.zX'.zXzX.XzXdX.XzX.X.XzXdXzX.X.X.X'.|.`.(.(./.~.R.T.T.T.Y.U.U.U.U.U.T.I.T.~.~.~.T.T.T.T.U.T.U.P.P.L.L.L.L.L.S.U.H.S.L.H.H.A.A.A.A.A.A.k.h.h.h.l.l.h.l.g.h.h.h.h.h.h.A.A.A.A.A.A.S.H.H.H.L.S.L.L.L.L.L.U.U.U.U.I.U.Y.T.T.T.U.U.U.U.L.I.U.L.U.J.U.U.L.L.D.L.S.S.L.P.H.L.S.U.L.U.L.L.U.L.U.U.U.T.T.U.U.L.L.L.U.U.U.U.L.Y.L.U.L.L.U.L.L.L.L.U.L.S.L.L.H.L.H.L.L.L.U.U.U.L.U.L.L.L.P.P.L.L.S.P.P.U.L.U.U.U.L.L.L.L.L.U.P.P.U.L.U.U.P.P.T.T.T.T.T.P.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.Y.T.T.T.T.Y.T.T.Y.I.I.R.Y.L.L.I.L.L.L.L.K.L.U.U.P.P.P.P.L.L.L.U.L.L.L.L.L.U.L.L.L.L.L.U.U.A.L.U.L.L.L.L.L.L.Y.U.T.P.T.Y.T.T.T.T.T.T./.T.T.T.[.~.~.~.~.~.~.~.^./.~.~.[.~.~.~.~.~.T.~.^./.!./././././././././.(.(././.(.(.(.(.(.`.(.`.^.{.`.{.(.(.`.{.(.`.{.(.(._._.[._.}.}.}._._._._.(.(._._.(.(._.(._.^._.(.(.{._.^.|.}.{._.|.|.|.{._._._._._.`.|.(.`.^.^.(.(.(.(.^.(.`._.(._.{.(.(.(.(.(.(.(.(.(.(._.(._.(.(.(._.(.(.(.(.(.[././././././././.~.~.R.!.~.T.~.T.T.~.T.~.T.~.~.~.!.~.~./.~.~.~.~.~.~././.~.~.!.~.~.~.T.[.~.[.E.(.(.~.~.~.~.~.~.~.~.~.T.~.~.~.T.E.Y.~.~.T.~.T.T.T.T.P.U.T.Y.U.T.T.T.P.~.P.U.T.U.P.U.P.U.U.L.L.K.Y.P.P.P.P.Y.Y.T.Y.T.T.T.T.~.T.~.T.~./.~././.^./.^./.(.(.(.(.(.(.`.(.|.`.`.(.|._.{._.|._.^._._._.|.(.`.|.|._.|._.|.|.|.|.'..X.X|..X'..X@X'.dX@X'.xXzX.X.XfXzXzXzXzXzXdXzXzXzX.XzXzX XdXdX.XdXdXzX.X.X.XdX.X'.dX.X.XdX.XdX.X.X'.dXzXzX.XzX.XdX.X.X.X.X.X.X.X.X|.|.|.", "C Z D Z Z Z Z F D Z Z Z H D D H H Z H S Z D Z H D H H H Z H H H L H Z H D H H H D H G H H H H H H H J H H H H F H Z G S Z U ' ' ' c u ; : e r r r r r r r r r r { LXLXLXIX- * ; : pXLXLXLXn e ; : * r e * : r r y y * : r r r r : : y * r = : ; y ; r r r r r r r : LXLXLXLXLXLXLXLXLXLXLXLX% e ; ; ; ; r : : : r * e : y ; y ; r 0 * r r 0 r r r * r r e ; r ; ; y r r r ; e { LXLXLX{ ; ; ; ; 0 r r q y : ; ; r r r r r r r r ; ; : y ; y ; % $ $ L.L.S.U.S.H.L.S.L.L.H.H.H.S.S.A.H.A.A.A.A.A.A.A.A.A.A.A.A.l.A.A.h.h.h.l.l.l.l.h.h.h.h.A.h.A.S.g.Z.A.g.A.A.A.A.A.A.H.S.S.A.S.H.H.H.H.H.L.L.L.L.L.L.P.P.P.P.Y.Y.T.T.T.U.T.T.T.T.T.T.~.T.~.~.T./.~.~.T.~.~.T.T.~.T.T.~.T.T.Y.T.!.T.~.T.T.T.~.~.T.~.T.~.T.~.~.~.~.~.T.^.[.~.[./.~./.(.^.(.(.{.^.|.|.^.}.}.}.}.}._.}._.}.}.}.}._._._._._.|.|._._.|.|.}.|.}.|. X|..X|..X'..X|.|.|.`.`.|._.|.|._.`.^.^.|._.(.^.(._.(.`._._._._._._.|._._._._._.(.}.}._.|._.|.}.|._.|._._._.^._._._.|.(.{.(.`.(.|.|.|. X|.|.|.|..X X.X.X.X.X|..X|..X.X X.X|..X.X.X X X.X.X.X.XdX'.zX.XzX.XdXzXzXzXdXdXdXfXzX.XzXdXzXzXdXdXdXdXdXdXzXzXzXcXzXzXzXzX.XdXxX@X#XzXzXzX#XzX'.zXzX@XdX X.XdX.XzXzXzXdX.XdXdXdX.X.X.X X'.(.(.^.(./.T.^.T.T.Y.U.U.U.Y.Y.Y.T.T.T.T.T.T.T.T.T.U.T.U.U.U.Y.U.S.U.S.H.A.D.H.S.G.A.A.A.A.A.z.S.h.h.l.h.l.h.l.l.h.l.l.h.h.l.h.z.A.Z.j.A.S.S.H.H.H.L.S.L.L.L.U.D.L.U.P.P.U.I.T.T.U.T.U.Y.U.U.L.Y.L.L.L.P.L.L.H.L.S.S.U.S.H.H.H.H.S.L.L.D.L.H.L.L.P.L.U.U.L.L.L.L.L.L.L.L.L.L.L.L.L.L.H.L.H.K.W.L.S.L.S.L.L.H.L.D.L.L.G.L.L.L.L.H.L.L.L.L.L.L.L.H.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.S.L.L.L.P.U.U.P.U.U.U.U.Y.T.Y.T.T.U.T.P.T.I.R.T.Y.Y.T.Y.T.U.T.T.Y.T.T.U.T.L.Y.U.L.L.L.L.L.L.L.H.L.L.L.L.U.L.L.Y.P.L.P.L.U.L.L.L.L.L.U.Y.P.L.U.L.I.L.L.U.L.L.L.D.L.L.G.L.L.L.U.L.P.P.Y.U.U.T.T.T.T.T.T.T.T.[.T.T.T.~.T.~.^.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~./.~./.~.^.~.!./.~././.~./.^././.(.(.(.(.(.`.(.(.(.{.`.{.{.`.(.{.`.^./.|.(.`.(.}.|._._._._.(.`.`.(._._.^.`.(.(.|.(.|.^.(.(.|.(._.`._._.^.|.`.`._.`.(.(.{.(.(.(.{.(.{.(.(.(.(.(.^.(.(.`.|.(.(.^.(.(.(.^.(.(.^.^.`.^.(._.^.(.(.(.^.(.(.{.(.(.~.(./.~.~.~.~.~.~.T.T.~.T.~.~.~.T.~.~.~.~.~.~.~.~.~.{.E.T.~.~.[.~.~.~.~.~./.~.~.~.~.~.XX(.XX~.~.~.~.~.~.~.~.~.~./.~.~.~.XXE.~.~.~.T.T.T.T.T.P.P.P.Y.U.T.I.I.T.Y.T.P.T.P.U.T.T.L.U.U.U.U.U.U.U.P.P.P.T.Y.P.T.T.T.~.T.T.~.~.~.~.~.~.~.E.~.~.(./.(.(./.(.(.(.(.^.^.(._.|._._.{.}.[.|._.}.}.}.}.^.|._._.|.`.`.`.|.@X|.'..X|.|..X.X.X.X.X.X'..X.XdXdX.XdX.XzXzXxXzXzX.XzXdXdXdX.XvX XvX.X.X.X@X.XdX.XzX'..X#X.XzX.X.XzXzX'.dXdXdX.X.XzXzXdX'..X.X.X.X.X.X.X.X|..X", "Z Z B Z B Z D Z H Z Z Z D D Z D D Z Z Z D D D D Z H S Z Z Z S Z Z H J Z H D D H H H H H H H H H Z H F H H H H H H L H L Z L ' ' ' ~ y > = r 0 r r r r r r r r r { LXLXLXLXpX* ; r pXLXLXPX{ : ; * : r : : y = > * r y y r e ; ; ; ; y * e * r ; y ; ; r = r = r * e LXLXLXLXLXLXLXLXLXLXLXLX; 0 ; ; = y : y t = r r : y ; ; y e * e r e r r r r ; e r r = t r y r = r r r * : { LXLXLX{ ; ; * ; 0 r * > : : ; ; r : r r r r r r q ; r = y ; % % $ o H.S.L.L.A.L.H.L.S.S.H.H.H.S.A.H.A.H.A.G.A.A.A.A.h.A.A.A.A.h.A.h.A.h.h.l.l.h.A.A.h.A.h.A.h.j.A.h.A.A.A.h.A.A.A.A.G.A.S.S.H.H.H.H.H.H.L.H.L.L.L.K.U.P.P.Y.P.P.Y.P.T.U.T.U.U.T.T.Y.T.T.~.T.~.~.~.T.T.^.T.T.~.T././.T.~.T.~.~.T.T.T.T.T.~.~.T.T.~.T.~.T.~.T.~.T.~.T.~.T.~.~.~.~./.!.(./.(.(.{.^.(._.}.}.}.}.}.}.}. X_.}.}.}.}._._._.|._._.|.|. X_.|.|.|.|.|.|. X|.'.|.|.|.|.|.`.|.`._.`.[._._.^.`.`.|.(.{.`.(.{.(.^._._._._._._._._._.|.(.{.|.}.}.|._.|._.}.}.|._._._._._.|._.(._.|.(._._.`.`.|.|. X{.|. X.X.X'..X.X'..X|..X X X.X X X X.X|..X X@X|..X.X.X@X X.X.X'.zX'.zX'.zX@XzXdXdXzXzXzXfXzXzX@XxXnXdXcXcXzXxXzX.XzXdXzXdXxXdX.XdXdX.X.XzXdX.XzX.X'.zXdXdXdXdX.X.X.X.X.XdXdX.XdX.X@X.X'._.`.`.(.(././.T.T.T.P.P.L.L.U.I.I.T.T.U.Y.T.T.T.T.U.T.L.Y.L.L.L.L.L.U.S.H.S.S.S.S.H.A.A.A.A.A.h.A.h.h.l.h.h.h.h.h.l.h.l.l.h.A.G.l.A.A.A.A.S.G.H.H.H.G.L.H.S.H.L.U.L.L.Y.U.T.U.T.U.T.U.U.U.T.U.U.L.L.U.P.L.L.L.L.H.U.S.H.H.D.S.H.H.L.S.H.H.H.H.H.H.H.D.H.H.U.D.L.S.H.L.H.H.S.H.H.H.H.H.H.H.S.L.H.S.H.S.H.H.H.D.H.H.H.G.L.L.S.L.L.L.D.L.L.L.G.L.L.L.H.L.L.L.L.L.S.L.H.L.H.L.L.L.H.H.P.L.L.L.U.L.P.L.U.U.U.L.U.L.U.P.L.U.Y.U.U.Y.U.T.Y.L.Y.U.U.T.P.P.I.I.U.Y.L.I.L.L.L.L.L.L.L.L.L.K.L.L.L.L.L.L.L.U.L.P.L.L.L.L.L.U.L.U.L.L.L.L.U.U.Y.L.L.L.L.L.L.U.L.L.D.L.D.L.P.L.P.P.P.T.T.T.T.T.T.T.T.~.T.~.T.T.T.~.T.~.T.~.~.~.~.[.[.~.~.T.~.T.T.~.~.~./.~./.~.~.~./.~./.~.[./././././.(.~./.(.(.{.(.(.|.^.(.{.`.(.|.(.^.|.(.|.^.|.^.{.[.(.{.^.(._.(.(.(.(.(.(.(.(.(.(.^.^.(.^.(.(.^._.^.`.(.`._.(.`.`.{.^.^.`.(.(.(.(.(.(.(.(.(.(.(.(.(.`.^.`.^._.|.`.|.|.(.`.(.`.`.(.`.(.(.(.`.(.^.(.[.(.~.!.(.~.~.~.~.~.~.~.~.~.~.T.T.T.T.T.T.T.T.T.T.T.~.T./.~.~.T.E.(.XXT.~././.~.~././.~.~.~.T.~.T.~.T.E.~.~.T.~.~.~.~.~.~.T.T./.~.~.XXU.~.T.~.T.T.T.T.T.T.T.T.T.I.T.U.T.T.P.T.T.T.T.Y.U.L.L.U.U.U.U.I.U.U.U.P.T.T.T.T.T.T.T.T.T.T.~.T.~.~.!.~.~.~.^./.^.^./.(.^./.(.(.(.^.`.(.^.`._.|._.}.}._.|.}.|.{.}.|.{.|._.|.|.|._.|.|.`. X'..X.X'..X.X.X.X.XzX.X.X@XdX.XdXzXzXdX.XzXzXdXzXdXdX.X.X X.X.X.XxX.XdX.X.XdX.X.X.XdX.XzX.X.X.X.XzX#X.XdXdXdXzX.XdX#X.X.X.X.X.X'..X|..X.X", "C Z Z F D Z Z F D D D D D D H Z Z H H Z D Z D S Z Z Z Z H Z J Z Z H D H H H H H H H J F Y D H H H H G J H H H H Z L H Z J P ' ' ' u u r : * r r 0 r r r r r r r { PXLXLXLXLXc : % pXLXLXLX' * ; * * t : : y r ; y ; * * : : ; t ; ; e * r : ; ; ; ; e ; ; e r * t : LXLXLXLXLXLXLXLXLXLXLXLX- % ; ; 0 ; ; y % > r r ; e ; e % t e ; ; e : y : : : : ; y > * ; : e e e ; r r r S pXpXM.^ % : : % > : e y ; : ; ; r r r r r r r r r r r r = y : $ $ $ H.L.H.L.G.L.H.S.L.L.S.L.H.H.H.H.H.J.h.A.G.A.H.A.A.l.A.A.A.A.g.h.h.S.g.g.l.A.h.A.A.A.A.g.A.H.A.A.A.A.A.A.A.A.A.A.A.Z.H.G.A.H.H.H.L.H.H.L.L.K.L.L.Y.P.P.P.T.Y.T.T.T.T.U.U.T.U.T.Y.~.~.~.~.~./.~.~.~.~.T.~.~./.T.~.T.~.T.~.T.T.T.~.~.T.T.~.~.T.~.~.T.~.T.~.T.T.T.~.~.T.~.T.~./.~././.(.(.^.(.`._.}.}.}.}.}.}.}.}.}.}.}.}.}.}._._._._.|.|.|.|.|.|.|.|. X|. X.X.X'. X X|. X|.|.|.`._.|._.|._._.`._.^._._.`.^.(.(.(.(.`.(.(.(._.}.}.|._.|.|.|.^.}._._.|.}.}.}.}._._.`._.(.`.`._._.|._.(._._.|.`._.|._.|.|.|..X|..X'..X X.X.X|.|.|..X.X`.|..X X X X X X.X.X.X.X.X.XzXdX.X.XdXzX@XzXzXzXzX.XzXdXdX@XdXdXdXdXdXdXdXzXzXdXxXdXdX'.zXdX.XdX.X.XdXzX.XxX.X.XzX.X.XdXdX XdX@X.X.X.X.X.X.X.XdX X.X.X X_.{.(.^././.~.T.T.T.P.U.Y.T.Y.I.T.Y.T.T.T.T.T.T.T.U.T.L.L.L.L.S.L.S.H.H.S.S.S.S.S.A.A.H.h.A.g.l.l.l.l.l.h.h.h.h.h.l.z.l.h.h.h.h.h.A.A.A.G.S.S.H.H.L.L.L.L.L.L.L.L.L.I.U.U.U.U.U.T.U.T.Y.T.L.L.Y.L.L.L.L.L.D.H.H.L.H.H.H.S.S.G.H.H.H.D.H.H.H.H.H.A.H.H.D.H.H.H.G.H.H.H.H.S.H.G.H.H.H.H.S.H.H.S.A.G.S.S.F.H.H.H.H.H.S.H.H.L.L.H.D.U.L.L.L.G.L.D.H.L.S.L.L.H.L.S.L.L.L.D.D.L.H.H.H.L.L.A.S.L.L.S.L.S.L.L.L.L.L.L.S.L.L.L.U.L.U.U.I.U.I.U.Y.U.U.Y.U.P.I.Y.U.L.L.L.L.I.L.L.L.L.L.L.L.L.L.H.U.L.L.U.L.L.P.L.L.L.L.L.L.L.L.L.L.U.P.P.L.U.U.L.Y.L.L.H.L.S.L.L.H.D.L.L.U.L.P.Y.P.P.T.P.P.T.T.T.T.T.T.T.T.T.(.T.~.T.~.~.P.[.~.~.~.~.~.T.~.[.~.~.(.T.~.(.(.~.~.[./.~.~././././.[./.~.^.(.(.(.(.(.^.(.(.(.(.(.{.`./.|.`.(.{._.|.(.(.|._.^.|.^.(.(.^.(.(.(.(.(.(.(.(.(.^.(.(.`.{._.(._.(.|.|.^.(.`.(.(.`.(.^.^.(.(././.~.(.(.~.(.(.(.(._.(.^.`._._._.^._.(.`.^.`.(.`.(.^.(._.(.(.(.`.(.(./.^.^./././.~.~.~.~.~.~.~.R.~.T.T.T.~.T.~.~.T.T.~.T.T.T.~.~.T.~.T.T././.~.~./.~.~.~./.~.~.~.T.T.~.T.~.~.~.~.T.~.~./.T.~.).T.T.T.~.~.XX[.T.~.T.T.~.T.T.T.P.P.P.U.Y.U.T.P.Y.T.P.U.U.U.U.Y.L.U.L.U.U.U.U.T.T.P.T.T.T.T.T.T.T.T.T.T.T.~.~.~.~.~.~./.!.!././.(./.(.(./.(.(.`.^._.|._._.|.{._.}.}.}.}.}.}.}._.|._.|.|.|.|.|.|..X|. X|..X.X|..X X.X.X.X.X.X.X.XdXdX@X.XzX.XzXdXdXdXdXdXdXdX X%X.X.X.XzX.X.XxXzX.XzXzXdX.XdX.XxX@XdX'..XxXzXdXdXdXdXdX@XdXzX'..X.X.X.X.X|..X|.", "Z Z C Z Z Z D C D D D D D Z S Z Z L Z H D S D Z Z L Z J Z Z L Z Z H Z H Z F H H H H L H H H H D H H H H H H H H H H G P D S / c ^ ^ y r : y : : r r r r r r r r { LXLXLXLXLXIX- ; pXLXLXLX' % % % % ' pXpXpXM.; = : u { ' ' u ; ; c [ { _ : ; ; ' ' { ) e r r y : : ; ; % % LXLXLXLX& & $ % & * % c pXm.pXM.; > e ; u [ { ) t pXpX^ ; ' { ' ! ^ pXM.u * e t M.pXpXpXm.! r r * u ' { { e : u ' { ' % ' m.aX{ ; > r r r r r r r r : y * r ; : * $ $ o H.T.D.U.L.L.L.L.L.L.L.L.L.H.H.H.S.H.A.G.A.A.h.J.g.Z.A.A.h.l.H.A.A.z.D.h.l.h.A.A.g.A.A.h.A.A.A.j.S.A.A.A.h.A.A.A.A.A.G.A.G.H.H.A.L.H.L.S.L.L.L.L.U.T.P.P.P.T.T.T.P.T.T.U.U.Y.T.T.T.T.~.T.~././.~.(.~.(.~.~.T.(.~.~.~.~.~.~.~.T.T.T.~.T.T.~.~.~.T.~.T.~.T.~.T.~.T.T.~.T.~.~.~.(./.(./.(.(.)._.^.}.}.}._._._.}.}.}.}.}.}._.|. X_.'.|.'.|.|.'. X|..X.X X.X.X.X.X|.|.|.|._.|.|._._.|.`._.^._.|._._.`.(.(.{.(.(.(.(.^._.`.^.|.|.[.}.}.(.^._.`.|._._.^.`.}._._._._._.(.`.|.|._.^._.|._._._._.(.`.|.|.|.|.|.|..X.X.X.X.X.X|..X|.|.'. X X'.|.}. X}. X X X.X.X.X.X.X.X'.dX.XdX.XzXdX`.zX.X.XzX.XdX.X'.dXxX'.nXdXcXdXzXzXxXdXdX@XzXzX.XxX.XdX.XcX.XzX.XdXzX.XzXzXdXdXdX.XdXzX.XdX.XdX.X X@X.X.X X X'.|.(.^./././.^.T.T.T.P.U.U.U.U.I.T.T.T.T.T.T.T.U.U.L.L.L.L.L.H.S.H.H.H.S.H.S.S.S.A.H.g.A.A.A.l.A.l.l.l.h.h.h.h.h.l.h.l.l.h.h.h.j.A.A.S.A.S.S.H.H.D.D.L.G.L.L.S.L.L.L.I.I.T.Y.U.U.T.T.U.T.L.U.L.L.L.L.L.S.H.H.L.H.H.H.H.S.H.D.H.A.H.A.H.H.H.A.H.H.A.H.S.S.S.S.A.S.H.G.S.A.A.H.H.A.S.S.S.S.S.S.G.G.S.S.S.A.H.H.S.F.H.L.G.L.H.H.G.L.G.L.G.L.L.H.H.H.H.L.L.H.H.U.S.H.D.L.H.L.G.L.H.H.S.P.L.S.S.L.S.L.L.H.L.H.L.H.L.L.L.L.L.U.L.L.I.I.I.R.L.L.L.U.P.L.I.L.L.L.I.L.L.L.H.L.L.L.L.L.L.S.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.P.U.L.L.L.L.P.U.U.U.L.K.H.L.L.L.H.L.H.L.U.L.P.P.U.P.P.P.P.P.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.T.T.~.T.~.R.~.T.T.~.~.T.T.~.~.~.~.~./.^.[.[./.!.~.~./././././././././.(.(.(.`.(.(.`.(.`.(.(.^.{.{.(.(.^.(._.(.{.^.|.(._._._.(.`.(.(.(._.(.(.(.(.(.{.(.|.(.(.(.(.^.^._.(.^.`.^.`.(.(.(.(./././.(.~.(.(./.^.(./.(.(.^.(.^.(._._.`.`.`.`.(.(._.`.(._._._.(.(.(.(.(./././././.T.~.~.~.~.T.[.R.~.~.R.T.~.~.T.T.T.T.T.T.T.T.T./.T.~.~.T.~.~.Y./.~.~.!.~.~.~.^.XX{.~.~.~.~.~.~.~.~.~.~.T.~.T./.T.XX[.T.~.~.~.XX~.~.~.T.T.T.T.T.P.T.T.P.T.I.I.P.P.P.P.T.U.U.U.U.L.U.U.U.U.U.U.U.T.P.T.T.T.T.T.T.T.~.T.(.~.~.~.~.~.!.~./././././././././.(.(./.(.(.(.^.{._._.{._._.}.}.}.}.}.}.}._._.|.`.|.|.|.'.|.|.|.|.'.|.|.'..X|.'..X.X.X.X.X'.'. X.XzX.X.XdX.XzXzX.XdX XdXdXdX.X.X.X.X.X.X.X.XzXzX.XdXdXdX.X.XdXzX.XzX.XzX.XdX'.dXdX.X.X.X.X.X.X.X.X.X.X.X.X", "C D B D B D Z Z C D D Z D Z Z D Z Z D Z Z D D D Z Z Z H Z H H Z H Z D H Z H H H D H H H D H H H F H H H H H H J H D H H Z H ^ c / n > = : : r r r r r r r r r r ' LXLXLXLXLXLXsX- pXLXLXLXc % % w IXLXLXLXLXLXPXM.: 0 PXLXLXM.- ; IXLXLXLXw ; ; PXLXLXpX: ; : ; : * ; % % % LXLXLXLX$ $ o % $ u gXLXLXLXLXLXPX{ ; > pXLXPXIXIXLXLXm.> IXLXLXsXLXLXLX{ = M.PXLXLXLXLXLXLXaX; > ' LXLXLXc % pXLXLXUXaXLXLXLXLXgX> * e : 0 r r r r 0 r r 0 r r * & $ o G.P.L.U.D.L.L.L.S.P.D.U.S.H.H.S.H.G.G.S.S.A.A.A.A.A.h.A.A.h.h.h.A.A.A.h.h.g.A.A.j.A.A.A.A.A.A.h.A.A.A.A.A.A.A.A.A.Z.G.H.G.H.H.H.H.H.L.L.L.U.U.P.P.Y.Y.T.Y.T.U.T.T.T.U.T.T.Y.T.T.~.~.~.~.~././.~.~././.~.!./.~.~.~.~.~.~.~.T.~.~.T.T.~.T.T.T.~.~.~.~.T.T.T.T.Y.~.~.T.~.~.T.(.~.^.T.(./.(.{.^.|.{.`.(.`._._._._._._. X|._._.|.|.|.|.|. X|.`..X.X'..X'. X@X'..X.X.X X|.|.|.|.}.}._._._.|._._.^.`.(.`.`.(.|.(.(.`.(.(.|.{.^.`.).|.(.|.(.{.{.`.^.|.(._.(.`.(.`._._._._._.[._.|._.{.|.(.`.^.{.{.}.}._.|.|.|.|..X|.|.`. X|.|.|.|. X}.}.|.}.|.|.|. X.X|.|..X.X.X.X.XzX.X.X@X.X.X.XdX.X.X.XdXdXdX.X.X.X.X.XzX.XzXxX'..XxX.XdX.XdXdXdXdXdX.XdXdXdX.XxXdXzX'.'.zX.X.XzX'.zX@X.XdX X.X.X.X.X.X.X.X|.|.{.|.[.(././.R.T.T.T.T.T.U.U.Y.U.Y.U.T.Y.U.T.U.U.P.U.U.L.S.H.H.H.S.H.S.S.S.S.H.h.A.j.S.h.A.A.A.h.l.h.z.h.h.h.k.k.z.l.h.z.h.h.l.l.Z.h.h.A.G.G.S.G.H.H.H.S.L.L.L.L.L.U.L.Y.Y.U.T.U.U.P.P.P.P.U.L.L.L.L.L.L.H.A.H.G.S.S.S.A.S.S.S.S.S.S.H.H.H.A.G.G.A.H.A.H.A.H.A.G.G.S.H.S.A.A.H.A.S.A.S.A.H.A.A.A.A.H.A.H.G.Z.H.H.H.H.H.H.A.D.U.S.L.H.L.H.H.L.H.H.A.H.H.H.H.L.L.L.H.H.H.H.H.H.H.H.S.S.S.G.H.A.H.H.A.S.K.H.S.S.K.H.H.L.H.L.U.L.L.L.L.U.U.U.L.P.L.P.L.L.L.U.L.L.U.L.L.K.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.H.L.L.L.L.L.L.L.L.U.L.L.L.P.P.P.P.L.L.L.L.L.L.L.L.L.L.L.U.L.U.Y.T.T.U.T.T.T.T.T.T.T.T.P.T.T.T.T.T.T.~.[.T.T.~.~./.T.~.T.~.^.T.~.~././.~.~.^.T.^.~.~.!.~./.~.^.[.E.~.^.(.[.(.(.(.(.(.|.(.(.^.`._.^.`._.`.`.|.|.^.|.(._._._._._.(.(.(.(.(.(.(.(.{.(.(./.(.(./.(.).{.(.(.^.{.^.`.^._.{.^.(.^./.[./.E.~.(.~.[.(./.(.(.(.(.(.(.|.`.`.(.(.|._._.|.(./.|.{.^._.(.(.(.(.!.^./.!./.~.!.~.T.^.T.(.T.~.T.T.~.T.T.~.T.~.T.T.T.T.T.T.T.T.~.T.~.T.~.T.(.~.~.~.~.~.~.(.~.{.U.~.T.~.T.~.~.~.T.T.XXU.XX/.T.~.T.~.^.~.T.~.~.T.[.T.~.T.T.T.T.T.T.T.L.T.L.L.L.P.P.Y.P.P.U.P.P.U.U.Y.P.P.P.Y.Y.T.T.T.U.P.T.T.!.~.T.T.T.T.E.XX~.T./.~./././././.~.~./././.(.(.(.(.(.(.^.`.`._._.`._._.|.}.|.}.}.|._.'.'.|. X X|.'..X|. X|.'..X X.X.X|..X.X|..X.X.X.X|..X.X.X@XdXzXzXzX.X@X.X.X.XdX.X.X.XzXdX.X.X'.zXzXzXdXdX.XdX.X.X'.zX.XzX.XxXzX.XzXdXdX'..X.XdX@X.X.X X X.X.X", "G Z Z Z G Z Z Z Z Z Z Z Z G D D S Z Z F Z D D Z H Z H Z Z Z Z H Z H L S H H H D H H H H H H H F H H Z H H H H Z Z H H H Z H S u u u u > : r 0 r r r r r r r r r ' LXLXLXPXLXLXLXf { LXLXLXc $ - IXLXLXLXLXLXLXLXLXc * gXLXLXgX: u LXLXLXLXM.; c LXLXLXc % ; : r : ; ; ; % % LXLXLXLXo $ $ - IXLXLXLXLXLXLXLXLXn $ pXLXLXLXLXLXLXc , IXLXLXLXLXLXIX% c LXLXLXLXLXLXLXLXLX' % ' LXLXLX' % pXLXLXLXLXLXLXLXLXLX{ % * * * r r r r 0 : r : = r % & $ % L.H.U.U.L.S.L.L.L.P.U.S.P.K.H.H.H.H.H.S.S.S.A.H.A.S.A.A.h.D.A.A.A.z.S.l.h.G.A.h.A.A.h.A.A.A.h.A.A.A.A.A.A.A.A.A.G.A.G.Z.G.H.H.H.L.L.H.L.H.U.L.P.Y.Y.T.T.T.U.T.T.T.U.T.U.T.T.T.T.T.~.~./././.~./.~.~.~.~.~.^.~.~././.~.~.~.~.~.T.~.~.T.~.~.~.~.T.~.T.U.~.~.Y.T.Y.T.T.~.~.~.~.^.~.^./.(.(./.^.|.|.(.`._._.|.|.|.|.|.|.|.|.|.|.|.|. X|..X.X.X'..X.X.X'..XdX X.X.X|. X|.|.|.|.}.|._._.{._._._.(.|.(.(.(.(.(.(.^.^.(._.^.|.).(./.`._.{.^.|.(.`.(.(._.(.(.`.`.`._._._._._.|.}.}._.`.^.|.(.|.^._.}.|._.|.|.|..X|.|.|.@X|.|.|.|._.}._.|. X|.|. X}.|.|.|..X|..X|..X.X'..X.X'..X.X.X@X'..X.X.X.X@X.XxX.XxX.X.XzX.X.XxXzXxXzX@XzXdXdXdXdXzX.X@XdXfX.XdXdX.XzXzXzXzX.X.XzX'.dX@X.X X.X'..X.X.X X'.|.|.|._.(.(./././.E.T.T.T.T.T.T.U.T.T.T.T.T.T.U.U.U.P.L.L.L.U.H.H.H.H.H.S.S.S.z.S.A.A.A.A.g.A.h.l.A.l.l.l.h.h.h.h.z.l.j.h.h.h.l.g.G.A.A.A.A.A.S.S.H.H.H.L.U.L.L.L.L.L.L.L.Y.U.U.U.U.P.P.P.P.P.U.P.P.L.H.L.H.H.H.G.W.S.S.S.S.S.A.S.S.H.A.A.S.H.A.A.G.A.G.A.A.A.G.A.G.S.S.A.H.A.A.A.A.S.A.A.A.A.A.A.A.A.A.A.A.H.S.S.H.H.H.H.H.L.L.S.U.H.L.L.H.H.H.H.H.H.D.H.H.S.L.G.G.L.D.H.H.H.H.S.H.H.S.G.G.H.H.S.S.Z.J.S.G.H.H.S.L.H.H.H.H.H.L.L.L.L.L.L.U.U.L.L.L.U.L.L.L.U.L.L.L.L.L.L.L.L.L.L.L.L.L.U.L.L.L.L.L.D.L.L.L.L.L.L.H.L.L.L.L.L.U.P.U.P.P.P.P.L.L.L.L.S.L.L.L.L.L.L.L.L.U.U.U.T.Y.T.T.T.T.T.T.P.T.Y.T.T.T.U.T.T.T.T.T.~.T.T.T.T.~.T.T.T.~.~.(./.~./.^.[.!.~.^.~./.[./.[.^.(.(.(.[.(.(.(.(.^.^.(.(.(.`._._._.`._.`.|._._._.|./._._.(._.(.(._.{.(.(._.(.(.(.(./.(././.(.(./.^.^.(.(./.).^.(.(.(.(.(.(.~.(.T.~.^.~.(.~.(././.(./.(.(.(.(.`.(._._.`._.|.^.(._.|./._.|.(.(.`.(.(.(.(./././.~.~.~.~./.T.T.~.T.T.!.T.T.T.T.T.T.T.U.T.U.T.T.T.T.~.T.T.T.T.~.~.~.~.~.~.~.~.!.~.T.).E.(.^.T.~.T.T.~.~.XXXXU.T./.~./.T.T.T.^.~.~.~.T.~.T.T.T.T.T.T.U.L.T.U.Y.K.Y.U.P.P.P.P.U.Y.P.L.U.L.U.P.Y.Y.P.T.P.T.T.T.T.Y.T.T.T.~.~.XXT.U.T.~.T./.T.T././././.~./././.(./.(.(.(.(.`.(.`.`.^._.|._.|.}.}.}.}.|.|.|. X.X|.|..X|. X.X|..X|.|.|.|. X|..X.X.X.X.X.X.X.X.X.X.X XdX.X.X.XzXdX.X.X.X.X.X.XdX.X.X'.zXzXzX.XzXdX.XzX.X.XzXzXzXzX.XdX@X'.dX'.@XzX.XzX'. X.X.X.X@X.X.X|.", "C Z C Z B Z D Z Z C G H Z D D D Z L Z Z D D D D Z Z Z H H Z S H Z Z L Z H H H D H H H H H H H J H H H H H Z H Z Z H H H H Z S u c u y > : r r r r r r r r : r r { LXLXLXsXPXLXLXIXsXLXLXLXc $ sXLXLXLX' & f IXLXLXgX- f LXLXLX* pXLXLXLXLXgX% pXLXLXgX- * * ; % : * ; * ; % LXLXLXLXo o o o pXLXLXLX' $ c IXLXLXgX; pXPXLXLXIX{ { % * UXLXLXLXaXc { % { gXPXLX{ - f LXLXLXpX% { LXLXLXc $ pXLXLXLXgXn aXLXLXLXpX% * : 0 * r r : : r r : * ; % $ o u P.L.L.L.H.L.L.L.L.L.L.U.S.H.H.H.H.H.H.H.S.A.S.S.S.S.A.G.A.S.A.A.g.A.h.h.A.g.A.g.G.g.G.H.g.h.A.G.G.A.A.G.A.A.H.A.S.S.H.H.H.H.H.H.L.L.H.L.L.L.L.L.P.U.T.T.T.T.T.T.T.T.T.T.T.T.~.T.~.T.~.~.~./.!.~.~././.~.~.~.~.~.~./.^.~.~.~.XX~.T.~.T.~.~.~.T.~.U.T.T.U.T.T.T.T.Y.T.T.~.T.[.~.{.^.~.(.(.|._.(.|.|.|._.|._.|.`.|.|.|.|.|.|.'. X.X.X@X X X.X.X.X.X.XdX.X'.dX.X.X.X.X|.|._.|.|._.}.}._._._._._.|.`.^./.{.|.^.`.^.(.(.{.[.|.(.|.{.|.(.^.(.(.(.(.(.`.`.|._.`.(._._._._.|._.{.{.(.|.^.(.|.(.(.`.[.|._._.`.|.'.|.|.|.|. X|.|._._.}. X}.}.|.|.}.|.|.|.|. X.X X.X|.|..X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XxX.XzX.XdXdXzX.X@XdXzX.XzX.XzX.X.XzX.XxXzXzXzXzXzXzXzX.X.XzX.X.XdX'..X.X.X.X'. X X|.|.|.|._._.{.(.(.^./.~.~.T.~.T.T.T.Y.T.T.T.T.Y.Y.U.U.U.L.P.S.L.S.S.S.H.A.H.H.A.S.H.A.A.h.G.A.G.g.h.A.g.A.l.l.h.h.h.h.h.l.k.h.g.h.l.l.h.G.A.h.A.A.A.S.W.S.H.H.S.H.S.U.L.L.L.L.L.U.L.P.L.U.U.U.L.L.L.U.P.U.L.L.L.H.H.G.G.S.S.h.A.h.S.S.S.S.A.S.H.H.A.Z.G.A.A.H.A.G.A.G.A.A.S.A.A.l.A.A.A.A.A.A.J.A.A.A.A.A.A.A.A.S.H.A.H.H.H.H.H.L.L.S.L.L.S.H.H.H.L.S.G.L.H.H.H.U.L.A.U.S.L.H.H.H.H.H.H.H.S.G.G.G.H.A.H.A.H.A.A.H.H.H.G.H.H.H.H.H.H.L.H.L.L.L.L.L.L.L.P.L.L.L.I.U.U.L.U.U.L.U.L.L.L.L.L.U.L.L.L.L.L.L.U.L.U.U.L.L.L.H.L.L.S.L.L.L.L.U.L.U.P.P.P.P.P.L.L.L.L.L.D.U.U.L.U.U.L.T.U.T.P.T.T.T.T.T.T.T.T.T.T.T.T.T.T.Y.T.Y.T.T.T.T.T.T.~.T.~.T./.~.~.T.~./.~./.XX~.~.(././.~./.~./.~.(.[.^.(.[.(./.).(.(.(.`.(.[.|.}.}._.^._.^.`.`.{.(._.(.(._.`.{.(._.(.(.(.(.{.(.(././.(./.(.^././././.(./.(.(.(.(.(.(.~.(.~.~./.^.~.~.~.T.(./././.(.(.(.(.(.^.|.|.`.`.^.(.`.|.^.^.|.|.^.(._.^.(.(.(.(.(./.(.!.~.~.!.T.~.T.~.T.~.T.T.T.T.T.T.U.U.U.I.U.U.T.T.T.T.T.T.T.T.~.~.~.~.T./.~.~.(.~./.~.~.T.(.T.~.~.~.~.[.T.E.T.~.T.T.~.T.^.~.~.T.~.T.~.T.T.T.T.P.T.Y.Y.U.U.U.Y.L.U.U.U.L.Y.P.Y.P.P.Y.Y.U.L.Y.U.Y.T.P.Y.T.T.T.T.Y.T.T.T.~.T.T.T.~.~.T.~.T./././.~./././././.(././.(.(.(.^.(.(.`.`._.}.}.|.|. X|.}.}.|.|.'.|.|..X|..X X|.|.'.|. X'.|..X|..X X.X X|..X.X|..X|..X.X.X.X'..X.X.X.XdX.X.X.X.X.X.X.XdX.XzX@XdXzX.X.X.XdXzXzXdXdXzXdXzX.X.X.X#XzX'..XzX.X@XdX.X.X.X X X.X.X", "Z B Z Z Z Z Z Z Z Z Z Z G Z D Z Z Z D D Z D D D H S H H S Z Z H Z P Z L Z Z L H H F H H J F H H H H H Z S H D L H H F Z H H ~ u u u u e : r y r r r r r r r r r { LXLXLX6Xc LXLXLXPXLXLXLXc $ gXLXLXIXpXpXM.IXLXLXPX% > IXLXPXc IXLXLXPXLXLX> IXLXLXM.% % % % > : = * ; ; % LXLXLXLXo o gXLXLXIXsXpXpXgXLXLXPX% pXLXLXLX{ o - % $ BXLXLXLX- % $ % % > - u { sXIXLXLXLXM.% c LXLXLXc $ sXLXLXPXn & % LXLXLXpX% % % * * r : r 0 * y : ; ; % $ # Y D.L.L.L.L.U.L.L.U.D.D.H.S.L.H.S.L.H.H.H.H.H.H.S.A.A.S.G.A.A.A.A.A.A.A.A.h.h.A.G.g.A.A.h.G.A.A.A.A.A.A.S.G.S.A.A.S.H.H.G.H.H.H.H.S.L.L.L.L.P.L.L.P.U.T.T.Y.T.~.T.T.T.T.T.T.T.T.T.~.~.~.~./.T.).(././.!.(.~.~.~.(.[.~.~.~.~.U.XX~.T.~.~.T.~.~.T.T.~.~.T.T.T.T.T.T.P.T.~.~.~.(.~.~.E./.^.(.^._.|.|./.}.|.|.'.|.|. X|. X.X'..X X.X X.X X X.X.X.X.X.X.XdX.X.X.X|..X|.|. X|.}.}._. X}.}.|._._._.|._.`.(.(.`.(.(.^.`.|._.|._.|.|.(.(.^.|.^.`.(.(.^.(.^.^.^._.^.`._.|._._._._.^._.`.^.|.`.(.|.|.|.^.`.|._._.`.|.|.|.|.|.|._._.|.|.}.}.}.}.|.}.}.|.|.|.|..X|.|. X X'.|.|..X'..X.X.X|..X|..X.X'..X.X@X.X.X'..XzXdXdXzX.XdXdXzXzX.XzX'.zX.XzXdXdXdXzXzXzXzXzXzX.XzX'.zX.XdXdX.X X.X|.|.|.|.|._._._.^.|.(.(.(./././.~.~.T.T.T.T.U.T.T.T.T.T.T.U.I.L.L.L.P.L.S.L.S.H.S.D.S.H.S.A.A.A.h.g.j.Z.A.A.A.h.h.l.l.h.k.h.h.l.k.z.g.h.l.h.l.g.g.A.A.A.A.A.S.A.A.H.Z.H.H.H.S.S.L.L.L.L.L.P.P.P.L.U.L.L.L.L.D.D.L.G.L.H.H.H.S.G.A.S.S.S.S.A.A.h.S.J.A.h.A.A.A.l.A.h.A.G.A.A.A.A.A.A.A.A.A.A.h.A.A.A.A.h.A.A.A.S.A.A.H.A.H.H.G.H.H.H.L.H.H.S.L.G.U.L.L.L.H.G.L.L.G.L.S.U.S.G.U.S.H.H.H.H.H.H.G.H.S.S.S.H.D.A.H.A.H.H.H.A.H.S.S.S.H.A.D.H.H.S.H.H.H.L.L.L.L.L.L.L.P.U.L.I.L.U.U.U.U.L.L.Y.L.L.L.L.L.U.S.S.L.L.L.S.L.L.S.L.S.L.L.L.S.L.L.H.L.L.L.L.L.L.L.A.L.L.P.L.L.L.L.L.U.L.L.U.U.Y.P.U.U.U.P.L.L.L.U.L.P.U.U.T.T.U.T.U.U.U.P.T.T.T.~.~.T.~.T.T.~.T.T.~.~.~.~.~./.E.(.~./.~./././././.(.(.^.^.(.~.(.(.(.(.(.^.`.`.}.}.}.}.`._.|.`.(.(.^.|._._._._.(.^.|.(.(.(.(.(./.(./.(.(.^.^./.(././.(././.(.(.(.(.(.(.(.(.~.^./.^.~.~.~.T.(.~.~.~./.(.(.^.`.(._._._.(.|._.|.(.|.|.|._.|.{._.(.`.(.(.(.(.(./.!.~.~.~.~.~.T.T.T.Y.U.T.T.U.T.L.T.U.U.U.I.T.U.U.T.I.T.T.~.T.~.T.T.T.~.].T./.(.~.~.T./.{.T.T.T.(.~.~.~.T.(.T.~.T.~.~.T.[.~.T.~.[.T.~.T.T.T.T.T.P.T.L.Y.U.Y.U.L.U.L.Y.L.U.P.P.P.U.U.U.L.U.U.U.U.U.U.U.T.U.U.T.T.T.T.~.T.T.T.~.T.T.~.~.~.T.~.T.~.~./././././././.(.(.(.(.(.(.(.(.(._.}._. X|.}.|. X X_. X|. X.X X.X|..X.X|..X.X X|..X X.X.X|.|..X X.X|..X'. X.X|. X.X.X.X.X.X.X.X.X.X.XdX.X.X.XzXzX.XdX.X.X.XzXzXdXdX.XzXzXzXzX.XzXdXzX'.@XzX.X'.'.zXdX.X.X.X'. X.X.X", "D C Z Z Z Z Z Z Z Z Z Z C D G Z Z D D D Z L Z L H Z L Z Z Z L Z Z H H H Z L Z L H H F H H H H H D D H H Z L Z Z D H H D H Z J e u r u : r r r y r r r r r r r r ' LXLXLXM.o sXLXLXLXLXLXLXn IXLXLXLXLXLXLXLXLXLXLX, $ pXLXLXgXLXLXIXsXLXLXsXLXLXLX$ % % % % % : y * * ; % LXLXLXPXo o o o IXLXLXLXLXLXLXLXLXLXLX$ pXLXLXLX$ $ $ $ , UXLXLXIXo , , & $ sXIXLXLXPXIXLXLXLXM. { LXLXLXc $ sXPXLXLX$ , $ LXLXLXpX& & % % : * * r r * : ; ; * $ $ n.L.S.P.S.P.L.U.L.L.L.S.L.L.L.L.L.H.H.S.L.S.H.H.H.A.S.A.S.S.A.S.A.A.A.A.h.A.h.g.A.A.A.A.A.A.A.A.G.A.G.S.A.D.S.S.A.S.S.H.H.H.L.H.L.L.L.L.D.H.U.L.L.L.U.T.T.T.~.T.~.T.T.T.T.T.~.~.T.~.~.~.~.^.~./.~./.~./.~.~.(.T.(.(.~.(.~.~.XX~.~.T.(.T.~.~.~.~.~.T.T.T.T.T.T.T.T.U.T.T.T.[.~.~.(././.(.(.|.|.{.}.}.}.}.}.|.|. X.X.X X.X.X|..X.X.X|..X.X.X.X.XdX X.X.XdX.X.X.X|..X.X|.|.|.|._.|.|.|.|._.|.^._._.|.(.`.(.(.^.|.(.(.|.|._.|._.(.(.`.(.`.^.(.(.(.(.(.(./.(.|.(.|.^._._.^.{._.(.|.^.{.|.`.|.[.|._.(.`.|._.}.}.|.}.}.}.}.|.|._._.}.}.}.}. X|._.|.|.`.|.|. X|. X|.'. X|.'..X|. X.X|..X.X'..X|..X.XdX.X.X.XzX.X.XzXzX.X.XzX.XzX.XzXxX.XdXzXdXzXzXzXzXzXzXzXzXzXdXzX.XzX.X.X.X.X|. X|.|.{._.|._._.|.[.(.(.(.XX[.~.~.~.T.~.Y.T.T.U.T.T.I.U.U.U.L.L.L.L.S.D.H.H.G.S.S.H.A.A.A.A.A.A.A.l.G.l.j.h.l.l.l.l.l.l.h.h.h.k.h.z.l.h.h.h.l.l.l.A.A.A.A.A.S.S.A.H.A.H.H.H.H.U.L.P.P.P.P.P.P.P.P.L.L.L.L.L.L.H.H.L.U.S.H.S.S.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.G.g.l.G.A.A.A.A.j.A.h.A.A.h.A.A.h.S.A.S.G.A.H.H.H.H.H.S.S.H.H.A.U.L.L.S.H.L.L.G.L.L.L.L.H.L.L.G.L.H.S.H.H.H.H.H.H.S.S.G.S.S.G.H.A.A.H.A.A.h.S.H.A.S.H.S.H.H.S.H.G.H.H.H.S.L.L.U.L.L.L.L.L.L.L.I.L.U.U.U.U.U.U.U.L.L.L.L.U.L.L.L.L.L.S.L.L.L.P.H.S.S.L.L.L.H.L.L.D.L.L.L.L.L.P.L.L.L.L.L.L.U.Y.L.U.P.P.P.T.I.I.I.U.U.L.L.P.P.L.Y.U.U.P.U.T.U.T.T.Y.T.I.T.T.T.T.T.T.T.T.~.T.~.T.~.~.(.~././.~././././.~.[./.[././.~.(.(.(.~.(.^.(.(.`.(._._._.|._.}.}._.|.|.`._.|.^.|.(._.`.^.`.^.`.^.^./.^./.(.^.^././././././.!./././.(.(.(.^.(././.~.~.~./.~.~.~.~.~.~./.~./.(.(.(.^.(.`.`._.|._.|.`.`.(.{._.(._._._._.(.(.`.(.^.(.E.{.~./.~.T.~.T.T.T.T.U.T.T.P.P.P.T.P.L.P.P.L.U.T.U.I.T.T.T.T.~.T.~.T.~.~.~.~.{.~.~.R.(.(.R.~.T.(.T.~.~.~.T./.T.~.T.T.~.T./.~.~.T.~.~.T.T.T.Y.T.T.P.U.L.Y.L.L.U.P.P.L.P.L.L.P.U.L.L.U.Y.U.L.P.P.P.P.U.T.U.T.I.T.T.~.T.T.~.T.T.T.~.T.T.~.~.T.~./.T././././.(././.(./.(.(.(.(._.(.(._.|.}.}. X}.|.|.|. X X|. X X.X.X.X.X|..X X.X|. X|..X|..X|..X|..X|.|..X|.|.|.|.'.|.|..X.X X.X.X.X.X.X.X.X.X.XdXdXdXdXzX.X'..XzXzX#XdX@XzXzXzXzXdX'.zX.X'.'.zXzXzX.X'..X.XdX X.X'.'.", "C Z C Z C Z Z Z C Z Z H Z D Z Z D D D D H Z Z Z Z S Z Z H Z Z Z H Z H S L Z L Z D H H H F H H H H H H Z Z H L Z D H F H Z H Z y r e y y r r r * r r r r r r r r { LXLXLX{ o $ UXLXLXLXLXLXf o gXLXLXIXf S c c f x c $ $ w LXLXLXLXLXsX, LXLXPXLXLXsX% $ $ % % % : 0 r : ; ; LXLXLXLXo $ , o gXPXLXIXc c c f x c x $ sXLXLXLX$ $ $ $ o IXLXLXgX, o $ $ sXLXLXLX{ * - LXLXLXsXo c LXLXLXc $ pXLXLXLX$ $ o LXLXLX' $ $ % % * : y r r : e ; * % $ $ H.P.U.U.L.P.L.L.L.L.U.H.H.U.L.S.L.L.S.L.U.S.H.H.S.H.H.S.S.S.A.A.S.A.h.z.A.A.H.A.A.A.A.A.A.A.A.A.A.A.h.S.S.S.S.S.G.G.A.H.H.H.H.L.L.H.L.L.Y.K.U.L.Y.U.T.T.T.T.T.T.T.T.T.T.~.T.T.T.T.~.~.~.~.~./.~./././.~./.~.T.T.(.T.(.~.~.~.E.T.~.~.T.~.~.T.T.T.T.T.T.U.T.T.U.T.T.T.T.T.~.T.~.~.~./.!.(.(.(.^.[.}.}.}.}.|.}. X|..X|..X.X|..X|..X.X.X X'. X.X'.@X.X.X.X.X.X.X.X.X X|.'.|.|.}. X_.|._._._.|._._.|._.|.(.|.|._.`.|.(.`.`.^.|.(.(.{.(.(.^.`.(.(.(.|._.(.|././.|.|._.|.|._.(.^.|.{.(.`.^.(.^._.|.|._.^.`._._.}.}.}.}.}.}.|.{.|._.}.}.|.}.|._.|._.|.|.`..X.X|.|..X|.|..X|.|..X|..X X.X|..X.X.X.X.X X X.XdX.X.XzX.X'.zXzX.XzX.XzXdXdX#XdXzXzXzXzXzXzXzXzXzXzXzXdX.XzX.X.XxX.X.X.X X|.|.|.|.|.|._._.^.|.(.(./.~././.~.~.T.~.T.T.T.T.T.U.U.T.L.L.S.K.S.L.H.S.G.G.S.H.A.H.A.A.A.z.A.A.l.l.g.G.l.l.h.l.l.l.h.h.l.h.l.h.h.l.h.g.l.l.h.A.g.A.A.A.A.A.Z.S.A.H.G.H.S.U.S.L.L.S.P.P.L.P.P.S.L.L.G.L.L.H.H.H.A.D.H.A.S.G.A.S.A.A.A.A.A.A.A.A.A.A.A.A.A.A.h.h.h.h.h.h.A.h.G.g.A.h.h.A.h.h.A.h.j.A.l.A.S.S.A.A.A.H.H.H.H.S.H.U.H.L.H.L.S.L.U.S.L.L.L.L.L.G.H.G.L.H.L.G.G.H.H.H.G.G.H.S.H.S.S.S.S.S.H.A.H.A.G.A.S.S.A.A.S.S.A.G.H.H.S.S.A.H.H.H.H.D.L.S.L.L.U.L.L.L.L.I.U.U.U.U.U.L.L.L.U.L.L.L.L.L.L.L.L.L.L.L.L.D.H.F.L.L.L.S.H.H.L.H.D.L.L.L.D.P.P.L.L.L.U.L.L.L.L.L.U.P.P.P.I.I.I.U.L.R.L.U.U.L.L.L.U.U.U.U.U.T.K.U.I.I.U.U.U.T.T.T.T.T.T.T.~.T.~.~.T.~.~.~.~.!.~./.~.~././././.^./.(.(.[.~.(.(.^.[.(.`.|._.|._.|.|.}.}._._.|.^._._._._.^.`.(.`.{.^.^.^.(.(./.(.^.[.^././././././.~.(./././.[.(./.!././.~.~.~.~.~.~.T.~.~.~./././.(.(.(.`.^.(._.{._.{._.{.`.|.|.|.{._.(._._.(.(.^.(.(.(.^.^.(.~.~.~.~.T.T.T.T.T.Y.U.P.P.Y.L.L.P.P.P.L.U.U.U.I.I.I.T.T.T.T.T.~.T.~.T.T.~.~.~././.R.(.T.(.(.T.~.~.T.~.T.~.T.T.~.T.T.T.T.~.T.~.T.T.T.P.T.P.T.P.U.R.U.L.L.Y.P.P.P.L.L.U.U.L.U.U.U.L.U.U.P.P.P.P.L.T.P.P.T.T.I.T.T.T.T.T.~.T.T.~.~.T.~.T.T././././././././.^./.(.(././.`.(.(._.(.}.}.}.}.}.}.}.|.|. X.X|.|.|.'. X|. X|..X|..X.X|.|..X|.'. X X|..X|.|.|.|.|.@X_. X X|.|..X.X.X.X.XzX.X@XdX.X.XdXdXzX.XxX.XzX.X'.zX.XxX'.zXdXdXxX.X.XzXzXzXzX'..X.XdXdX.X.XdX@X'. X", "C Z Z Z Z Z Z Z Z D Z Z Z H Z Z Z D D D Z D Z Z L L Z Z H H Z Z Z Z Z Z Z H L Z D H D H H D L Z H Z Z H Z H H D D H A D H Z L y r r r y r r r e r r r r : r ; : ' LXLXPXM.$ z LXLXLXLXLXc } LXLXLXsXn sXPXLXgXsXo $ o UXLXLXLXLX* o IXLXLXLXLXn o $ $ % % % : r r 0 ; ; LXLXLXLXo $ $ 6XLXLXLXsXc sXPXLXgXM.$ sXPXLXLX o o $ , gXLXLXgXo o o $ UXLXLXIX{ n gXLXLXPXM.o c LXLXLXc o sXLXLXLXo $ o LXLXLXsX$ $ $ % % : r r q ; ; ; : % o C L.L.L.P.P.L.L.U.L.L.L.L.L.L.L.L.L.S.D.L.L.L.H.H.H.H.H.S.S.G.G.S.S.S.S.G.Z.S.G.A.A.A.h.A.A.A.h.A.A.S.S.S.S.G.G.S.H.H.H.H.H.L.L.H.L.L.L.L.L.L.L.L.U.U.U.T.T.T.T.~.T.T.~.T.T.T.T.~.T.~.~.~./.~.~././.[./.~.~./.~.(.(.~.~.~.~.~.T.~.~.~.~.~./.T.T.T.T.T.T.T.U.U.T.U.T.T.T.T.T.~.~.~./.~.~.(.^.^.`._.}.}.}.}.}.}.|..X|..X.X|..X|..X`..X.X X'.|..X.X.X.X.X.X.X.X X.X.X.X|.|.|. X X|. X'.`.|.|.|.`._.|.|.(.|.^.|.{.^.|.^.|.`.^.^.`.|.^.(.(.(._.^.(.{.(.(.{.(.|.^.|.{.^.|.(.(.{.^.`.{.(.^.|.|._.|._.|._._.|.}._._._.}.}._.}.}._._._._.|.{.|._.|. X|.|.|.|..X X|. X X.X|.|..X.X.X X|..X|..X|. X.X.X.X.X.X.X'.dX.X.X.X.XxX.XzXzX#XdXdXxXdXdXzXzXxXdXzXzXzXzXzXzXdXdXxXzXzX.X'..X.X.X.X|._.|._.[._.(.(.^.(.(.(./././.~.~.T.T.T.T.T.U.T.T.U.T.L.U.L.S.U.H.H.H.H.H.A.h.S.A.A.A.A.A.A.g.A.l.l.l.l.l.l.l.l.l.l.h.h.h.h.l.l.z.l.h.l.l.h.l.l.A.A.A.A.S.A.A.S.S.S.G.H.H.H.S.L.L.L.L.S.P.P.P.L.L.L.L.L.H.G.H.S.H.H.G.G.S.A.h.A.A.A.A.h.A.A.A.A.A.A.A.S.h.h.l.A.A.l.h.A.A.h.A.h.h.h.l.l.h.h.h.l.g.A.A.A.S.A.S.S.S.S.H.S.H.H.H.H.L.L.H.H.L.U.L.L.H.L.H.H.L.A.L.L.H.H.L.L.L.G.L.G.S.S.L.D.G.S.S.S.A.S.A.A.A.A.A.A.A.Z.H.H.S.H.A.A.D.G.G.S.S.A.H.H.A.H.H.H.S.U.L.L.L.L.L.L.I.U.L.L.Y.U.K.L.L.L.L.L.L.U.S.L.S.L.S.L.L.S.L.L.L.S.L.S.L.H.D.L.P.L.L.L.L.L.L.P.L.P.U.Y.U.U.P.U.U.U.T.T.T.T.T.L.L.L.U.L.L.Y.L.U.L.U.U.U.U.U.U.L.L.U.U.T.L.T.T.T.T.T.T.T.T.T.T.~.T.~.~./.~./.^.~././././.(.[././.^.T.^./.(.(.(.(.(.(.`._.`.`.|.|.'.|.`.`._.{.`._.|._._.`.(._.(.|.`.(.(.(.{.(.(.E./././././.!./.~././.~./.~./.~.~.~.~.~.[.~.(.T.~.~.T.~.[././././.(.(.{.`.|.|.`.|.|._.|.|._._._._.`.^.`.(.(.(.(.(.(././.^.^./.~.T.T.T.T.T.P.Y.U.U.P.Y.U.P.P.P.P.L.L.P.L.L.I.I.I.T.T.T.T.~.T.~.T.~.XXE.~.T.).U.~.T.T.(.E.~.~.T.T./.~.T.T./.T.~.~.T.~.T.~.T.T.T.T.T.Y.Y.U.U.U.L.U.L.L.L.P.S.P.P.L.L.L.L.L.L.L.U.Y.L.U.U.L.L.K.L.Y.U.I.I.T.Y.T.T.T.~.T.T.T.~.T.~.T.T.~.T.(././.(./././.(.(././.(.(.(._.(._._.}.}.}. X}.}.|.|. X.X|.'.'.|.|.|.'. X X|. X.X|..X X.X|.|.|.'.|.'.|.|.|._.{. X_.|.|.|.|.|..X.X'..XdX.X.XdX.X.XdX'..XzX.XzXzXzX.X.XdX.X.XzX.XzX.XzXzX.XzX'..XzXdX.XdXdXzX.X.X'..X'.", "G C Z C Z C Z Z C Z Z H Z G Z H D D D D D Z H Z Z L S Z S Z H Z L Z L Z Z H Z H H F D D Z H Z Z H L J Z D D H D D H Z D Z Z P A * r r r r r r r r r r r ; y ; ; ' LXLXPXsX , o sXLXLXLXPXx o UXLXLXPXLXLXLXLXIX- $ , o { LXLXLXIXo # 6XLXLXLXIX $ $ $ & % ; : 0 : r ; ; LXLXLXLX$ $ o $ , UXLXLXLXLXLXLXLXIXo $ 6XLXLXLX$ $ o $ o UXLXLXIXo $ o $ aXLXLXLXLXLXLXPXLXLX6X$ c LXLXPXf $ sXLXLXLX$ o o LXLXLXsXo $ & % * : r r 0 : ; : % $ n.U.Y.L.L.P.U.P.L.U.L.L.L.L.S.L.L.L.L.L.L.L.L.L.L.H.H.L.S.H.H.H.S.G.H.S.S.S.S.S.A.A.A.A.A.A.A.A.A.A.A.S.S.A.H.G.G.H.H.H.H.H.H.H.L.S.L.L.L.L.L.P.U.U.U.U.T.T.T.T.T.(.~.T.T.~.T.T.T.T.~.~.~.~.~.~././././.(./.~.(.(.T.T.(.~.~.~.~.~.~.~.~./.T.~.T.~.T.T.T.I.T.Y.T.U.T.T.T.~.~.~.~.~./.(.(.(.(.^.`.^.}.}.}.}.|. X X|..X.X.X.X.X.X'..X.X.XdX@X'..X.X.X'..X X.X.X X@X X.X X|.|. X}.'._._.|.|.|.{.}.|._.{.|.(.(.`.|.(.`._.`.`.`.`.^.(.(.|.(.(.(.(.(.(.{.(.^.(.(.(.(.|.{.^.|.(.|.(.^.(._.`.^.{._._.|.{._.`.{._._._._.}._._._._.}._.}.|. X_.|.|.|._. X|.|.|.|..X|.|..X|.|.|.|.|.|.|.|..X|. X.X.X|..X.X.X.X.X.X.XdX.XdX.X'..XxX'.zXzXdXdXxXxXdXdXcXzXzXcXzXzXzXzXzXxXdX.X.X'.zX.X.X.X X_.|.{.|._.^.(.(.`.^.(.(.^.^.~.T.T.T.T.T.T.T.T.T.U.U.U.L.L.L.D.H.H.S.S.S.H.h.J.A.S.A.A.A.A.A.h.h.h.l.l.l.l.l.h.z.h.h.h.h.l.l.k.l.l.l.l.l.h.z.l.A.S.h.A.S.A.A.A.A.S.S.S.H.H.D.L.L.P.S.L.L.L.S.L.L.L.L.H.H.H.H.H.H.H.H.S.S.A.S.A.A.A.A.A.j.Z.j.A.A.A.A.z.h.A.h.h.h.l.l.l.h.h.h.h.h.A.h.h.h.l.l.h.A.A.A.A.A.S.H.H.S.H.H.H.H.H.H.L.H.H.H.H.L.L.S.S.U.L.H.H.L.G.L.G.L.L.H.H.G.H.H.G.L.S.S.L.S.S.S.S.A.A.z.A.A.g.H.A.G.A.A.A.A.A.A.A.H.D.G.G.h.A.H.A.G.H.H.H.H.H.S.L.S.L.L.L.L.L.L.U.L.L.L.U.L.U.L.L.L.L.S.U.S.L.L.L.L.L.L.L.A.L.S.F.L.G.H.H.L.D.L.L.A.L.L.L.L.P.L.P.L.U.L.U.P.U.P.T.P.I.T.Y.I.Y.L.L.U.L.L.L.P.Y.L.U.P.U.L.U.L.U.U.U.U.U.U.L.T.T.U.T.T.T.~.~.T.~.T./.T.~./.~././.~.~.!././././.^.{.E.(.^.^.(.(._._._._.`.`.`.|.|.}.`._.|.|._.|._._.|.{._.(._.(.^.(.(.(.{./.~.(././././././././.~.!./.~./.~.~.~.~.~.~.T.~.T.~.T.~.~.~.~.~././.^./.(.(.(._.(._._._.|.{._.|._._.|.`.(.`.(.(.(.!.(.(.(.(.^.^.~.~.~.~.T.T.T.T.Y.L.U.L.L.L.P.P.P.L.L.L.L.U.L.I.Y.I.I.I.T.T.T.T.T.T.~.E.(.T.(.Y.~./.R.!.T.~.T.~.T./.T./.T.T./.T.T.~.T.T.Y.Y.T.T.P.P.T.L.U.L.T.Y.L.L.L.L.L.P.S.P.P.P.L.L.L.Y.U.L.U.U.L.L.L.L.U.U.I.I.U.I.T.U.U.T.T.~.U.~.T.T.T.T.~.~.~.~./././././././.(.~./.(./.(.~.(.(.(.(.(.}._.}._.}. X}. X|. X X|.|. X'.|.|.|.|.'.|..X X.X X|..X X.X|. X|.|.|. X|.`._._._.|.{.|.`..X.X'.'..XzX.X.X.XzX#X'.zX.X'.zXzX.XzXdXdXdX.XxX.X.XzX.X.XzX'..XzX.XdXdXdXdX'.@X.X.X'..X", "C C Z Z Z Z Z Z Z Z Z Z Z G G Z L Z Z Z H Z H L Z Z Z H Z Z Z H H Z Z Z Z Z Z Z J Z L Z D H L L Z H H H Z D D D Z Z G Z Z G L G > = % r : y = e r r r r r r 0 ; n LXLXLXsXo o IXLXLXLXc o - aXLXLXLXLXLXIX- o $ o $ - LXLXLXsX - PXLXLXM. o o $ $ % ; ; * q = ; r LXLXLXLXo o $ $ % 0 sXLXLXLXLXLXgXd o o sXPXLXLXo o o $ - BXLXLXIX o $ o - HXLXLXLXIXb aXLXLXBX n LXLXLXc sXLXLXLXo o o LXLXLXsXo $ $ % * ; 0 r 0 0 > % % o 0 K.U.U.U.T.T.D.U.L.L.L.Y.K.L.L.L.L.L.L.L.L.L.L.L.L.L.S.U.U.S.U.L.S.S.H.S.S.S.S.S.A.S.A.S.H.g.h.A.A.S.A.A.H.H.h.H.H.H.H.H.H.L.L.L.L.L.U.L.L.L.U.L.L.U.Y.Y.T.Y.T.~.T.~.T.T.~.T.~.T.~.T.~.~.~.~.~.^././././././././././.!.~./.~.~.T.~.~.[.T.T.~.T.~./.T.T.T.T.T.T.T.T.T.T.T.XXXXE.!.~./.(.T./.(.(.(.(.`.`._.|.|.|.|.'. X.X.X|..X.X.X.X.X.X.X.X X.X.X'..X.X X'..X.X.X.X.X.X.X.X|.|.|.|._._.}.}.}. X|._._._.|.|.}.}.}.{.|.|.^._.|.(.{.`.(.(.(.|./.(.(.(.(.(.(.(.(.(.(.|._.|._.[._.[._.(.(.|._.{._.|.}.}.[.(.|._._.|.^.`.^.|.^.|.`.`.|.(.|. X|.|.'. X|.'.|.|.|..X'._.|. X|.|. X|..X.X|..X|..X.X'..X.X.X.X.X.X.X.X@XdX@X.X.XzX.XxXzX.XzXzXzXzXxXxXzXzXdXdXxXdXzXzXzXdXdXdX.X.X.X.X|. X|._._._.(.^.(.(.{.(././././.T.T.~.T.T.T.T.T.Y.U.Y.K.L.L.H.L.L.H.H.H.S.S.H.H.A.A.A.G.A.j.A.A.h.A.x.h.z.h.h.z.z.h.h.G.k.j.h.h.h.h.A.h.h.l.A.g.G.h.A.A.A.A.A.A.A.W.h.J.S.A.H.H.H.H.H.K.L.U.L.G.L.S.G.L.H.H.H.G.S.S.S.z.S.S.h.A.h.A.G.A.A.A.g.A.h.h.h.A.x.G.z.j.z.h.h.h.G.j.l.l.k.k.z.h.h.l.D.g.D.z.z.A.D.H.H.H.S.H.H.S.H.H.H.H.L.H.S.U.Z.L.H.H.H.L.L.H.H.L.H.H.H.H.H.H.H.H.H.H.H.H.K.S.h.H.H.A.H.A.A.A.A.A.A.A.g.A.A.H.A.H.A.S.A.S.A.A.A.S.A.G.S.H.S.S.H.H.H.H.H.L.L.L.L.L.U.L.U.U.L.U.P.L.L.L.S.L.S.L.L.L.S.L.H.I.H.L.L.H.S.U.S.S.H.H.H.S.L.L.L.G.S.L.L.L.U.P.U.U.L.P.P.P.P.T.T.T.U.P.P.Y.P.P.Y.L.P.L.P.L.P.P.U.L.L.L.L.L.P.L.P.U.U.L.L.U.L.Y.Y.T.T.T.T.T.T.T.T.~.~.!.~./.~.!.~.~././././././.(.(.(.(.(.(.(.|._.|.|.{._.|.|.`.`.`._._.}.}.|._._._.`.^.|.(.(.(.(.(.^./.~././.(.(.T.(.T.~.~.~.~././.~./.T.~.~.T.~.T.~.T.~.~.~.(.~.~.!.(./././.(.(.(.(.`._.`.`.`.`.`._.{.|._.`.^.(.`.(.(.(.(.(.(././././.T./.T.T.T.U.U.L.Y.L.P.L.U.L.L.L.A.P.P.L.L.P.P.P.P.P.P.T.T.T.T.Y.~.T.T./.T.~.T.~.~.~.T.T.~.~.T.~.T.~.T.T.~.T.T.~.T.T.T.T.T.T.U.U.Y.P.U.U.L.P.U.L.L.U.L.L.L.L.L.L.H.L.L.S.U.P.L.L.L.P.L.L.L.L.L.L.L.L.R.Y.T.U.T.U.T.T.T.~.T.T.T.~.T./.~.~././././././.(./././.^.(.(.(.(.(.(._.^.|._._.|.}.|. X X|.'.|.|.|.|._.|.`.`.`.|.|.|.|.'.|.|._.|.|.|.|.|.|._.|.(.|.[.|.|.|.|._.|.'..X.X@X X@XdX.XdXdX'.dXdXdX.X.XxX.XzX@X.XdX.XzXzX'.'.zXzXdXdXdX.X.XzXdXdX'..X.X.X.X X", "Z Z B Z C Z C Z Z Z Z Z Z Z D D Z L L Z H L H Z Z Z L Z H H H H H H Z L Z J Z H L S H H H D Z Z D D Z Z D D D D Z Z Z H Z Z Z Z u * ; ; * r : : r ; r r r r e ; e e % $ $ $ $ $ , $ o o o o o $ $ o c x f $ o o $ , % $ $ + $ o $ o o o o o & o , * % ; e : y y ; ; - - - $ o o $ $ % % - % c n n $ o $ o $ o $ $ $ o $ $ , % - o - $ $ , $ % & - t c f $ & o o o o $ o o $ $ $ $ o o $ $ $ $ o $ o $ $ $ % % ; : : e ; = % $ [ !.P.P.U.L.U.Y.Y.L.L.L.L.L.P.P.Y.L.K.L.L.L.L.L.L.L.L.L.S.H.S.L.S.H.L.S.H.S.S.S.G.G.S.S.A.S.A.H.A.A.Z.G.S.S.S.H.H.H.H.H.H.H.L.H.L.L.L.U.U.P.U.L.U.L.U.U.I.T.~.T.T.~.~.T.~.T.~.T.T.~./.T.~.~.~.~.[.~././.!./.^./.(./././.~.~.~.~.(.~.~.~.~.^.~.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.T./.~./././.(.^.(.(.`.(.{._._.|.|. X|..X.X.X.X.X.X.X|..X.X'.'.'.'..X.X.X.X.X|..X.X.X.X'..X.X|..X_.|.|.|.|.|.[. X|.{.|.[.|._.(.[.}.}._.^.`.{.^._.(.{.(.(.(.(.(.(.(.(.(.^.`.(.`.(.(._._.|.|._._._.^.|.[.|.|._.}._.}.}.|._.^.`.^._.|.`.`.`._.|.^.|.|.|._._.|.'. X|.|.`.|.|.|.|.@X|.'.|.|. X|..X.X|.|.'.'..X.X.X.X.X.XdX.XdX.XdX.XzXdXzXdXdX.XzX.XzXzXzXzXzXzXzXcXdXxXxXdXdXzXdXdX.XdX.XdX.X X.X X.X|.|.|._.|.|.(.(./././.~.T.T./.T.T.T.T.Y.U.U.U.Y.I.L.L.L.U.L.H.H.H.H.S.S.h.G.A.A.A.A.A.A.A.h.h.A.h.h.G.j.h.h.G.h.l.h.h.h.h.h.h.h.h.x.h.h.l.A.A.h.A.A.h.A.h.G.A.A.A.A.H.H.H.A.H.H.G.H.H.U.L.L.L.L.L.L.H.H.S.H.G.S.S.S.A.A.G.A.J.g.A.A.A.j.h.A.G.h.G.h.h.h.h.h.z.A.h.h.h.h.l.h.l.l.l.h.z.h.g.A.h.l.G.S.A.H.H.H.D.H.L.H.H.H.S.L.H.L.H.H.H.H.L.L.H.H.H.H.H.H.H.L.H.H.H.H.H.H.H.H.H.G.A.S.H.W.A.S.h.A.A.A.A.h.A.A.A.A.A.A.z.S.A.A.A.A.A.H.A.S.A.Z.A.S.S.S.A.S.H.H.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.H.H.L.L.L.Z.L.T.D.L.H.L.H.H.K.K.L.U.H.H.H.H.H.G.L.L.U.P.P.L.P.Y.L.P.P.P.Y.P.U.T.U.P.T.Y.P.P.P.U.L.P.P.L.P.U.S.Y.U.L.L.L.K.P.P.U.L.L.U.U.U.L.U.T.U.U.T.T.T.~.T.T.~.T./.(.T.~.~.~.~./.~.~.~./././.(.(.(.(.(.(._.(.|._.|.}.}.`.`.`.`. X{.}.}._._.|._.`.(.`.`.`.(.(.(.^./.[././.T././.~.(.~./.~./.T.T.T.T.T.T.T.~.T.~.T.~.T.R.~.T.~.~././././.(././.(.(.^._.(._.(.`.(._.|.|.|.`.{.(.(.(.(./.(.(./.(.!././.~.T.~.T.T.T.U.U.U.L.L.L.L.L.L.L.L.P.P.L.P.L.P.L.U.P.T.Y.T.T.T.~.T.~.^.T./.T.T.T.T.~.~.~.~.T.~.T.~.T.T.~.T.T.T.T.~.T.T.T.T.T.U.T.P.U.L.P.U.Y.U.U.U.S.L.L.L.L.L.L.L.H.L.L.L.U.P.L.L.L.L.L.L.L.L.U.L.Y.K.T.U.T.T.T.T.T.T.T.T.~.~.T.~.T.~./.~././.!.(./.(././.^.^.(.(.(.(.(._.(.`.(._.|.}.|._.|.|.|.|.|.`._.|.|._.`.`.`.`.|.|.|.|.`. X|.|.|.|..X|.{.|.|.|._._.|.|.{.|.|.|.|.|..X'.dX.X.X.XdXdXdX.X.XzX'..X.XzXzXdX.XdX.X.XzX.XzXzX.X.XdXdX.XzX.XdXdX.X'..X.X X'.", "Z Z C Z B Z D Z C G Z Z D D G D L S Z Z Z Z H H L S L Z Z H Z Z Z Z L Z Z J Z Z H Z Z L H H S L H L Z Z D D D D Z H Z Z L Z L G L * % ; % : : : 0 r r r 0 r r r 0 * % & $ o $ $ $ $ $ $ o o o $ $ $ $ $ $ o $ o o $ o $ $ % % % $ $ o o $ $ $ $ $ o $ % % % ; e r : y = 0 * % , $ $ $ $ - % % % % $ $ o $ $ o o $ $ , , $ $ $ $ % % * % % $ $ $ $ % * % % % $ $ $ o o $ o $ $ $ $ $ $ $ $ $ $ $ % $ $ $ % $ $ $ $ % % ; ; ; : % e 0 $ o % L.T.P.L.T.Y.S.T.U.L.L.Y.U.U.P.P.U.Y.L.U.L.U.P.P.L.L.L.S.S.L.L.L.L.L.D.S.S.L.S.H.G.G.H.A.G.A.G.A.A.S.S.S.S.S.H.S.H.H.H.U.G.U.L.L.L.L.L.L.L.L.U.L.L.T.P.Y.T.T.T.T.T.~.T.~.~.T.~.T.T.~.T.~.~.~.~.~././././././.(././././././.~./.~.~.~.~.~.~.~.~.T.~.~.~.T.T.T.T.U.T.T.T.T.T.T.~.T.T.~././.(./.).!.(.(.^.`._._.{.|.|.|. X.X.X.X.X.X.X.X.X'..X.X.X@X.X.X.X.X.X'..X.X.XdX.X.X.X|.|.`.|.|.|.|.|.}._.|._._.|.}.|.|.|._.}.}.}.}.`.`.^.^.|.(.|.^.(.(.|.(.`.(.(.^.(.^.^.(._._._.(._.|._.}._.|._._._._.}._._.}.}._._.^._._.|.^.^.`._._._._._.(.|.|.|. X.X|.`. X|.|.|.`.|.|.|.|.|..X|. X X|.'..X.X.X'.'..X.X.X.X.XdX.X.XdX.X.X X.XdXzXzX'.zXzXdXzXzXzXzXdXxXdXzXdXdXzX.XdXdXdXdXdX X.X.X'..X'.|._._.(.(.|.^.(././.~.~.T.T.T.T.T.Y.U.U.U.U.U.U.L.L.L.S.U.H.H.H.S.H.S.A.A.A.A.A.A.A.Z.A.A.A.h.z.A.h.h.h.l.h.h.A.h.A.z.h.h.h.A.h.h.A.G.g.G.h.A.A.A.A.A.G.A.A.A.S.A.h.H.H.I.H.H.H.S.L.H.S.L.H.S.H.H.H.H.G.H.G.S.A.G.A.A.A.A.G.h.A.A.j.G.A.h.g.h.z.z.h.h.h.h.h.j.j.x.h.h.j.g.h.z.z.h.h.h.h.h.A.D.S.S.D.H.H.H.H.H.H.H.H.H.H.H.H.H.S.L.U.H.S.H.H.H.H.S.H.H.S.H.H.H.H.H.H.A.H.H.h.H.H.H.S.A.A.A.A.A.A.A.h.A.A.A.g.G.h.A.S.h.Z.A.A.h.A.A.S.A.H.A.A.A.A.S.A.G.H.H.L.H.L.L.L.L.L.L.L.L.L.U.U.U.L.L.D.S.L.H.S.H.D.H.H.L.L.H.H.H.H.H.S.U.S.H.H.U.G.G.L.G.L.S.L.L.P.U.L.U.P.P.P.Y.P.T.T.U.U.P.P.U.L.U.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.U.U.U.T.T.T.T.Y.T.T.T.(.T.Y.~.~.~.~.T.~.~./.^./././.(.^.(.(.(.(.|.|._.}.}.}.}.|.|.}.}._._.}.}.|.|._._.(.`.`.^.^.(.(.(././././././.(././.~.~.~.~.~.T.~.~.T.T.~.T.T.~.T.~.T.~.~.~.Y.~.~.~.!././././.(.(.(._.`.`._._.`.`.}.}.{._.|.(.`.(.(.`.(.(.(././././.!.~.T.T.T.T.T.Y.U.L.L.L.L.L.L.L.L.P.L.D.L.L.L.P.L.U.P.P.P.T.T.T.T.T.~.~.T.[.T.T.T.T.T.T.~.T.~.T.~.T.~.T.T.T.T.T.I.U.Y.T.U.U.T.U.U.L.P.U.Y.L.L.L.L.L.L.L.H.L.L.L.L.H.L.L.S.L.L.P.L.L.L.L.L.L.L.L.L.L.U.Y.Y.U.U.T.T.T.T.~.T.T.~.T.~.Y./.~.~.~./.!././.(./././.(.^.^.(.[.(._.^.).(._._.(.}.}._.|.|.|.|._._._.|.{.`.`.`.`.`.|._.|.|.|.|.@X.X|.|.|._.|._._.|._._.(._.{.|.|.|.'..X.XdX.XdX'..X'.dX.XzXzXdXdXxX.XzX.X.XzXzXdX'..XdXxX.XzX'.zX.X.X.XxXdXdX@XdX.X.X.X X", "C C Z C Z D B Z Z Z Z Z D D Z Z Z Z Z L H Z H L Z Z H H P Z H Z L Z S Z Z S L Z Z J Z H H H H Z Z Z H Z D D D D H L Z G Z Z Z Z Z A * % e * y = ; r r 0 ; r r r * % 0 & - $ $ $ $ % $ & , $ o $ $ $ - $ $ $ o $ o $ $ $ % % % % $ $ $ $ $ $ $ $ $ $ $ $ & % ; ; % r * : r * 0 0 % % $ $ , % % % % % $ $ o $ o $ $ $ $ $ & $ $ $ & $ * * % % % & - % $ % % ; & % $ o $ o o $ o $ $ $ $ - $ $ o $ $ $ $ $ % , $ $ $ & & % % ; ; ; > = $ & n.U.U.P.U.Y.L.U.U.L.U.U.L.U.Y.P.Y.Y.P.P.L.U.L.L.L.L.L.L.L.U.L.L.L.S.H.U.K.U.S.H.H.S.Z.J.H.G.S.S.G.S.A.S.H.H.H.H.H.H.H.S.L.L.L.L.L.L.L.L.T.U.U.U.U.T.P.P.T.T.T.T.T.~.T.~.T.T.~.T.~.T.~.~.~.T.T.~./.~././.[./././.(.(.!./.!.~././.~.~.~.~.T.^.T./.T.T.T.~.~.T.T.~.~.T.T.T.T.T.T.~.T.~.T.T.~././.(.(.(.(.^.^.`.`._._.|.|.|..X|..X|..X.X.X.X'..X.X.X.X.X.X.X.XdX.XdX@X'.dX.X.X.X|.|.`.|._.|.|. X}.|._.|. X}.}._._.|.|.}.}.}.|.{.`.`._.(.(.`.(.^.`.^.(.`.(.`.`.`.`.(.`._.(._.[.(._._.|.|._._.|.}._._._.}.}._._.`.|.|.`.`.`.{.|.{.|.|._._.|._.|.|.|.|.'.`.@X|.|.|.|.|.|.|.|.|.|.'.|..X X.X|.|..X.X@X.X.X.X.X.X.X.X.X'..XdXdX#XzX.X'.dXzXdXzXzXzXzXzXdXdXzXzXdXdX@XzXzXzXdXdX@XdX.X.X.X.X X|.|._._.`.(.(.~.~././.T.T.T.T.T.U.P.P.P.U.L.U.U.L.U.S.U.S.H.H.S.H.S.S.H.A.A.A.A.A.A.g.A.h.h.h.A.h.h.h.G.g.h.z.A.h.h.G.A.h.h.h.A.h.z.h.A.g.A.A.j.A.A.A.A.G.A.G.A.A.A.A.S.H.h.H.H.H.H.L.L.U.S.L.H.H.H.G.G.H.S.S.G.S.A.A.A.A.A.A.j.G.A.g.g.A.h.A.G.h.h.h.h.h.h.G.h.h.h.h.g.x.h.l.g.k.z.h.h.h.A.l.D.H.H.G.H.H.L.H.H.H.H.H.H.H.H.H.H.S.D.H.H.H.S.H.H.H.G.H.L.H.H.H.H.H.H.H.H.G.H.H.H.A.G.A.A.S.A.A.A.Z.A.A.G.j.A.A.A.A.h.h.z.A.A.A.A.h.A.l.A.A.H.A.A.S.H.G.H.H.H.L.L.L.S.H.H.L.L.L.L.S.L.S.S.H.H.U.L.S.S.S.H.H.H.U.H.H.L.S.H.H.H.H.H.H.S.H.L.L.G.L.H.S.L.L.L.P.P.L.Y.P.P.T.T.U.U.Y.P.P.U.P.Y.L.L.U.P.P.L.L.L.L.S.L.L.L.L.L.P.L.P.L.U.L.U.L.L.U.U.T.U.U.U.T.T.T.T.~.R.T.T.~.T.~.T.[.~.~.~.~././.!./.(./.(.^.(._.{.(.}.}.}.}._.|.|.}._.|.}.}.|._._. X(.`.(.(.(.(.(.(././.^.^.E.T.~.~.~.~.~.T.[.T.(.T.T.T.T.T.~.T.T.~.XX(.~.R.~.~.~.~.~././././././.(.(.(.(.^.^._.(.`.}.}._.{.^.|.^.^.(.(.^.(././././././.T.~.T.T.T.T.U.U.L.L.L.L.L.L.L.P.L.L.U.P.L.P.P.L.Y.U.T.T.T.~.T.~.T.T.T.T.T.T.T.~.T./.T.T.~.T.~.T.~.T.~.T.T.T.Y.I.T.I.U.T.T.U.Y.U.U.Y.L.L.L.U.L.U.S.U.S.L.K.H.L.L.L.H.L.S.H.L.L.L.S.U.H.L.L.S.L.L.U.L.L.P.T.T.U.T.T.T.T.T.T.T.T.~.~.~.~.~././.(./././.(./././.(./.(.(.(.(.|.(.(.(.^.|.[.}._._.|.|.|.|._.|.|._.`.`.`.`.`.`.|._.|.|.|.|.|.|.|.|._.|.|._.(._.|.|.|.|._._.`.|.|. X X.X.XdXzXdXdXdX'.'.zXdX.XzXzXzX.X.XdXdXzXdX.X.X'.zX#X.XxX.X.XzXdX XdX.X@X.X.X X", "Z C A Z D C Z Z Z D Z Z Z C H Z Z Z Z Z L Z Z S Z H H S Z S H H S L Z Z Z Z Z L H Z Z L H Z J Z D D D D D D D D Z Z Z Z D D D Z Z H 0 % % % : ; 0 e r r 0 r r r ; ; ; % % & $ % % % % % $ $ $ $ % % & % $ & $ $ $ $ $ % % * % * % $ % - $ - % , & % & % % * % e = y : : r e ; % % % % & % % : : * * % $ & $ $ $ $ & % & % & % & - % ; % * % & % $ % % ; % % % & $ $ $ $ $ $ % & % % $ & - & % $ % $ & $ % % % % % % % % ; * > * ; % o K Y.U.U.T.U.T.Y.T.L.L.U.U.U.U.U.U.T.Y.U.P.P.P.U.L.L.L.U.L.L.L.L.L.L.L.L.L.S.U.S.L.S.H.H.H.H.H.S.S.S.A.H.S.h.S.H.H.H.H.U.U.L.L.L.K.L.P.P.P.P.L.U.U.U.P.P.P.Y.T.T.~.T.T.~.~.T.T.~.T.T.T.~.~.~.~.~.~.(.~./././.E.(.(.(.(./.(./././.~./.[.~.~.(.~.~.~./.~.~.~.T.~.T.U.T.T.~.~.T.~.~.T.~.T.~.~.~.!./.^.(.(.^.(.(.(.`.|.|.|._. X|.'..X.X.X.X.X.X@X.X.X.X.X.X.X.XdX X.XzX.X@X'..X.X.X.X|.|. X X|.|.|.|.|.|.|._._.|.}.}.}. X}.}.}.}.^.}.}.}.(.`.(._._._.{.|._.|._.(.(.(.(._.}.}.}.}._.|.|._.}.}.}.}._.}.}._.}.}._._.}.}.{.|._._.|.|.|._.|._.{.|.|.|.|.'.|..X|.|.|.|.`.|.|.`.|._.|.|.|. X.X|.|..X.X.X.X.X.X.X.X.X.X.XdX.X.XzX.X.XdXdXdXdXdX.XdXzXdXxXxXdXdXdXzXzXdX'.zX@X.XzX.X'.xX.X.X.X.X.X X|.|.|.(.(.(.(.^./.~.R.T.T.U.T.U.P.P.L.L.L.L.U.L.L.L.L.L.G.G.G.H.S.S.S.A.A.A.A.A.g.A.A.h.A.h.A.l.h.G.A.h.h.h.A.h.A.A.A.A.A.A.h.A.h.j.A.g.A.A.A.j.A.A.G.h.A.G.A.H.A.A.G.A.H.H.A.G.H.H.H.L.H.H.L.S.H.H.H.H.G.G.G.G.A.G.A.l.A.A.A.z.A.h.A.h.h.h.h.G.h.z.h.h.z.h.z.G.j.A.h.x.j.h.f.g.k.l.l.h.A.A.A.D.S.L.L.L.H.L.S.H.H.H.S.L.H.H.H.H.H.H.H.H.H.H.G.H.H.A.H.H.H.H.H.H.H.D.S.A.H.H.H.A.H.S.h.A.S.h.H.A.A.A.A.A.l.l.l.g.A.h.A.A.A.h.z.h.A.A.A.A.A.A.A.A.h.H.G.H.H.H.H.S.L.G.H.S.L.L.H.L.S.L.U.L.H.S.H.G.G.H.G.H.H.H.H.L.H.H.L.h.H.H.H.H.H.H.H.H.H.H.H.L.Z.P.U.L.K.P.P.P.P.U.Y.U.U.U.L.P.P.P.P.L.L.L.U.L.L.L.L.L.H.H.L.L.F.L.L.U.P.L.L.L.L.L.L.L.L.Y.U.P.P.P.Y.U.T.T.T.T.~.T.~.T.T.(.T.~.~.~.~./././././.(.(.`.^.(.(.`.}.}._.|._.}.}.}._._._. X_. X_._.[._.(.^.(.(.(././.(./.~.~.~./.~.T.~.T.~.T.~.T.T.T.T.I.~.T.T.T.T.E.[.T.T.~.~.~.~.~.~.!./././.^.(.(.(.{.^.(.(.`.(.^.|.|._.^.{.(.`._.(.(.(.(./././.^.~.Y.T.T.T.T.U.L.T.L.L.L.L.L.L.P.L.L.L.L.L.L.L.L.L.P.U.T.T.T.T.~.T.T.T.T.~.T.T.T.T.T.T.T.T.~.T.T.T.~.T.T.U.Y.U.T.I.Y.Y.T.U.U.T.T.U.P.P.U.P.P.L.H.L.K.H.S.H.J.K.G.L.G.G.H.H.H.H.L.U.H.H.L.L.H.L.L.P.U.U.P.P.U.T.T.U.T.T.T.T.~.T.~.~.T.~.~.~.~./././././.~.(.~.[./.(.(./.^.(.(.|.|.(.{.|.(.`.`.`.|.|.{._.|.|.|.|.|.|._.|._.|._.{._._.|.|.|.'. X|. X|.}.}.|.`._._._.^.|.{._.|.|..X.X.X.XdX.XzX.XzX'.zXzX@XzXzXzXxXzXdX.XdXdX.X@XzX.XdXdX@X.X@XdX.X@XdX XdX.X.X.X|.", "C C Z C C Z C Z C Z Z Z Z G Z Z L Z Z L Z Z Z H L Z H Z H Z H Z Z Z Z H S J Z Z Z J Z H Z H Z Z Z D D D D Z D D H Z H Z Z D D D Z L A = % % % ; ; ; r r r r r r ; ; % * % * * * ; ; % % = % % $ % % % % % % % % % % % % : % e % % * $ % % % ; % % % % % : 0 : r r r r : ; e ; ; % % % % - % * % % * * % % % & % ; % % * % % % ; % ; * * * 0 = % % * ; % ; ; ; % % % % % , % % % % % % % % % % * % ; - % % * % % % % % ; * : * * * $ o # $ L.L.U.U.U.T.T.P.P.P.Y.L.U.U.P.T.U.T.T.Y.T.T.Y.L.U.P.L.L.Y.L.P.P.P.L.L.L.L.L.L.L.L.H.H.L.H.H.H.H.S.H.A.H.H.H.D.H.H.H.U.S.S.L.L.L.L.L.P.P.T.P.U.U.P.P.P.P.P.T.Y.T.T.~.~.Y.T.T.T.T.~.T.~.~.T.~.T.~.T.~././.~./.[.(.~.(./.(././././.~./.~.~.^.~.~.~.~.~.~.~./.T.~.T.~.U.T.T.T.T.T.T.~.T.~.~.T././././.~./.(.(.(.^.`.(.|.|.|.|.|.|.|..X|.'.|..X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X'.|..X|.|. X|.|.|.|.|. X{._.|.'._.}.}.}.}.}.}.}.}.|.}.}.{.`.(._.(._._._.|._.{.|.|.`.`._._.}.}.}.}.|.|._._. X}.}.|.}.}.^.}.}.}.}.}.}.}.}.}._.|._.|.|._._._._.|._.|.|.|.'.|..X|.|.|..X`.|.|._.|.|.|.|.'.|.|..X.X|..X.X.X.X.XdX@X.X.X.X.X.X.X.XdX.X.X'.@X.XzX.X.XdXdX@X.XdXdXdXdXzXzX'.zXzX.X.XzX.XzXdX.X.X.X.X X|.|.|.^.(.(.^./.~.T.Y.Y.I.I.P.P.L.L.L.U.L.L.L.L.S.L.L.G.L.G.U.S.S.S.H.A.A.A.A.A.A.l.A.h.h.h.z.h.g.z.G.h.h.h.h.A.h.A.A.j.A.h.h.h.A.h.G.A.A.A.A.A.A.A.J.A.A.A.A.A.A.A.A.A.A.H.G.H.H.H.H.H.H.H.H.H.L.L.H.H.H.G.G.A.A.A.A.A.A.A.h.S.h.h.h.h.h.h.h.h.h.h.h.J.h.G.h.A.z.h.j.h.j.f.k.g.k.l.D.h.A.A.H.H.G.L.H.L.H.H.H.L.H.S.H.H.H.H.H.H.H.H.H.H.S.H.H.H.H.G.H.H.H.H.H.H.H.H.H.H.H.A.H.A.H.A.A.h.A.S.j.A.h.h.h.A.l.l.A.h.A.g.h.A.h.D.A.A.h.A.A.A.A.H.S.S.S.S.H.H.H.H.H.L.L.L.H.L.L.S.L.H.G.H.H.H.H.H.S.S.S.G.A.H.H.H.G.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.L.L.D.U.P.P.P.P.P.P.U.U.P.P.L.U.P.P.P.L.U.L.L.L.U.L.L.L.L.L.L.H.A.L.L.L.L.L.L.L.L.L.L.U.L.L.L.L.L.L.Y.L.U.U.T.T.T.T.T.~.T.~.T.~.T.~.!.~.~./././.^.^./.(.(.`.`.`._.}._.|.}.}.}.}. X}.}._._. X_._._.(._.(.(.(./.(./.(.!.~.~.~.~.~.~.~./.T.~.T.T.T.T.T.T.T.T.T.T.~.U.T.T./.T.~.~.~.~.~.~./.!./././.(.(.^.^.(.(.^.(.(.^.(._.|.(.(.(.(.(.(.(.(./././.~.~.~.T.T.T.T.T.T.L.U.L.L.L.L.L.L.L.L.L.L.L.L.P.P.P.P.Y.T.T.Y.T.~.T.T.T.T.T.T.T.T.T.T.T.~.T.T.~.T.T.T.T.T.Y.U.U.I.I.U.U.U.T.T.U.U.T.Y.Y.L.P.P.S.L.L.S.H.H.Y.S.H.G.H.L.H.H.S.H.H.A.H.H.L.H.S.L.L.P.L.L.Y.Y.L.U.Y.T.T.T.T.T.T.T.~.T.~.~.~.~.~.~./././././././././././.(.(.^.(.^.(.^._.|.^.^.`.(.`._.|._.|.|.(.|.|.|._.|._.|._.|.|.|._.|.|._._.|.|.|.|.|.}.{._._.(.|._.|._.|._.|..X.X.X.X.XdX.XzX.XzXzXzXzXzXzXzX.XzXdXzXdX.X.X.X.XdX.X.X.XzX.XdX.XzX'.'.'..X.X|.'.", "A Z B D A Z Z Z Z Z Z Z H Z Z Z D L H Z S Z H Z Z L Z J H Z Z H L Z H Z H H Z H H H Z D L J Z Z D D D Z D D D D G Z Z G G Z Z D D Z H y % $ % % * 0 : r r r ; r e ; * * * * % ; ; ; ; * ; % ; ; ; * % ; % ; % % : % : ; : ; r % : * : % % ; ; % % r ; % % * y 0 0 * y e r * ; ; : % e * * * r e ; * * & % % % % % ; e % % ; ; % * * ; ; * ; * * * : : ; ; * : % ; % % % % % > % e % * ; % * e % ; * ; ; * * ; * % ; % * r r * % & o b.I.~.T.T.T.U.T.P.P.Y.U.U.U.U.Y.T.T.T.T.U.T.U.U.U.P.P.P.Y.U.L.L.L.S.P.L.L.L.L.U.L.L.L.L.L.H.H.H.H.H.H.A.H.H.H.H.H.H.L.S.S.L.L.L.K.U.U.P.P.T.P.P.P.P.P.U.P.T.T.T.~.T.T.T.~.T.~.!.~.T.~.T.T.T.~.T.~.~.~./.~.!./.^.~./.(.(.(././././././.^.E./.~.^.~.~.~.~.~.~.~.~.~.~.~.~.T.T.T.~.U.T.T.~.~.T./.~././././.(.{.(.(._._._.|._._.|.|.|.|. X.X.X.X.X|..X.X|..X'..X.XdX@X.XxX.X.X.X.X.X.X.X|._.|._.|.[.|.|.|.|.|.`.|._.`.|._.}.}.}.}._.|.|.}.`.(.`.^._.`._._.|._._._.(.`._._.}.}.|._.|.|.|.|. X|.}.}.}.|.|._.}.}.|.}.}.}.}.}.|.`.|.|.|.`.`.`.|._.|.|.|. X|..X|.|.`.`.`.`.|.`.|.|.|..X X|..X X.X.X.X.X.X.X.XdXzX.X.X.X.X.X.XdX.X.XzX.X'.zXzXzX.XzXdX.XxX.XxXzXdXdX@XdX.XxXxX.X.XzXzX'.dXdXxX@X.X.X.X|.|.`.(.(././.~.Y.T.L.Y.L.L.P.P.D.L.S.L.L.L.L.U.L.L.G.G.S.D.D.H.A.h.A.A.A.h.A.l.l.A.h.h.h.h.l.z.G.g.A.j.h.h.l.h.A.h.A.A.A.A.A.A.A.A.A.A.A.A.A.S.A.h.S.G.A.G.A.A.H.h.H.A.H.A.H.H.H.H.H.H.H.H.L.H.H.H.G.S.G.G.G.A.A.A.A.j.A.A.A.A.h.l.l.h.l.z.z.h.h.h.h.h.h.A.h.h.h.h.g.j.j.k.A.g.g.h.h.l.A.H.H.L.L.L.L.H.H.S.H.H.H.H.H.H.H.H.H.H.H.S.H.H.G.S.H.H.H.K.A.A.K.H.H.S.U.H.H.A.H.G.S.A.S.A.J.A.A.G.A.A.A.A.l.h.h.h.h.g.g.h.h.h.h.h.h.h.A.h.A.A.A.G.h.G.S.H.H.H.H.H.H.H.H.H.H.H.H.H.S.H.A.H.H.A.H.S.S.S.S.S.G.S.S.H.S.S.S.H.S.H.H.H.H.H.H.H.G.H.H.L.A.L.L.L.L.P.P.T.T.L.U.L.Y.U.P.L.P.L.P.P.P.L.L.U.L.L.L.L.H.L.L.L.L.L.L.L.L.L.L.L.L.L.D.L.L.L.L.L.L.U.Y.U.L.L.T.T.T.T.T.T.T.T.T.~.T.T.~.~.~.!./.(.(.(.(.(.(.`.(._.}.}._.}.|.|.|. X}.}. X_._._._._.(.(.(.(././.(././.~.~.(.~.~.~.~./.T./.(.T.T.T.T.T.T.T.T.T.T.~.T.~.~.~.T.~.~.~.~.~.~././.~./././././.^.^.(.(.(.(.(.(.{.^.(.{.(.(.(.(.(./././.(.~.~.T.~.T.T.U.T.U.U.U.Y.L.L.U.L.P.P.P.L.L.L.P.P.U.U.P.T.T.T.T.~.T.~.T.[.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.T.Y.U.U.R.I.T.U.R.T.T.P.U.P.P.P.L.L.L.H.H.H.H.H.H.Y.A.H.H.H.G.H.H.H.H.H.S.H.H.L.H.H.L.L.P.P.L.L.U.Y.U.T.T.U.T.T.T.~.T.T./.T.~.~.~././././././.(./.~.~./.(./.(.(.(.{.)._.`.^.(.(.`.(.`.(._.}.}.|.|.|.|.|.|.|._.`._.^._._.|._.|.|. X_.|. X}.}.}.(.|._._._._.|.|._.'. X X.XdX.XdX.X#XzX.XzXzXzXzXzXzXzXzXzXzXzX.XzX.X.X.X.X.XzX.X.X.XzX X'.dX.X.X.X.X X|.", "Z C Z Z C D B Z C Z Z H Z Z Z Z Z S H Z L H Z Z Z Z Z L Z H Z Z Z Z Z H Z H L Z H D H H Z Z Z L D D D H D D D D D H Z D Z Z G Z Z D L S r % & % * * * r e = r r ; t > * ; % ; ; ; ; e 0 % : % ; ; ; e ; ; % ; % % : ; ; ; ; t * * * : * : 0 : % * * : : r * r r : y = r q * t r : : * * * * 0 e ; > * : : ; % ; ; % ; ; ; ; ; ; 0 r * ; ; ; * w r : * ; * r % 0 ; % : % ; ; ; ; ; ; % = * * % ; * ; % ; ; * ; ; ; r r ; ; ; % $ o I ~.Y.Y.Y.U.T.Y.U.T.T.!.T.U.T.T.U.T.T.T.T.T.T.Y.Y.T.P.T.T.L.L.U.U.Y.L.U.L.L.L.P.P.U.U.L.S.L.L.L.H.S.H.H.H.H.H.H.L.H.H.L.U.L.L.L.L.Y.U.U.P.P.Y.Y.P.P.P.P.U.Y.T.T.T.T.T.T.~.T.~.T.~.T.~.T.(.T.~.T.~.~.T.~.~.~.~./.^.(./.(.^./.(.^./././.!.~./.~./.~./.~.~.~./.~.T.~.~.U.~.~.T.~.T.T.{.T.~.~.T./.T.~.~.~.!./.(./.^.(.^._._.}.|.|.|.|.|.|..X.X'.|..X.X|..X'..X.X.X.X.X.X.X.X.X.X.X.X.X.X|. X|. X|.|. X|.|. X|.|.|.|.|.|._.|.}.}.}._.|._.}.}.^.`.`.`._.|.|._._.|.|._.|.|._._.}._.|.|.|.|.|..X X|.|.}.}._._.|.}.}.}. X}.|. X}.`.|.`.|.|.|.|.`.}.|.|.|.|. X|..X'.|.'.@X|.|.`.|. X X|.|..X.X.X.X.X.X.X'..X'.'..X.X.X.X.X.X.XdX.X.X.XzX.XzXzX'.zX'..XdXzXzX.X.X.XdXxX.X.X.XxX.X.XzXzXzXzX.XdX.X.X.X.X'.|.|.(.(./.~.T.T.T.T.L.L.S.D.U.A.L.L.L.G.L.L.L.U.S.L.L.G.H.S.A.S.A.A.h.l.A.h.A.A.l.l.h.z.h.h.h.l.z.A.h.W.h.A.h.A.h.h.A.A.h.h.A.A.h.W.A.h.A.A.A.A.h.S.h.A.A.A.G.A.h.J.h.H.A.H.A.A.H.H.H.S.H.H.H.H.H.H.H.S.S.A.A.A.A.A.A.A.h.S.h.h.A.z.l.l.l.h.h.h.h.h.h.h.h.h.h.h.j.z.h.j.z.k.k.z.g.g.g.A.D.A.G.G.G.L.H.H.H.H.H.H.G.G.A.S.H.H.A.S.H.H.H.G.H.Z.A.H.A.S.S.S.G.Z.H.S.S.A.H.H.H.A.A.H.h.A.A.A.A.h.A.A.h.l.l.l.h.h.h.h.h.h.h.h.k.h.h.Z.g.A.A.h.h.S.S.S.S.A.H.H.H.H.H.S.H.H.H.H.H.H.H.H.H.H.H.H.h.A.S.S.S.S.S.S.S.H.H.S.S.S.H.H.H.H.S.S.H.H.G.H.H.D.F.A.L.L.L.Y.P.P.P.Y.Y.L.L.P.L.L.L.P.L.P.P.L.P.L.L.L.H.L.L.H.H.S.L.S.L.L.L.L.L.L.L.L.L.L.S.K.L.L.L.L.L.P.P.Y.L.T.T.I.T.T.T.T.T.~.T.~.T.!.~.~.(.!.(.(.(.(.(.^.(._._.[.|.|.}.}.|.}.}.}.}._._._._.(._.(.(.(./.(.(././.~./.T.~.~.~.~.T./.T.T.T.T.T.T.T.T.U.T.T.T.T.T.T.T.~.~.~.T.~./.~./.~././././.(.(./././.^.(.(.(.(.(.(.^.^.(.{._.(.).(././.!.!.~.!.~.T.T.T.T.T.L.Y.L.L.L.L.L.U.D.P.P.A.L.L.P.P.T.P.P.P.T.P.T.T.~.T.T.T.T.T.P.T.U.U.T.T.T.T.T.T.Y.T.T.T.U.Y.U.L.U.L.I.L.U.L.K.U.U.L.P.P.L.L.L.S.L.H.H.L.H.H.H.H.G.L.H.S.H.H.H.A.H.S.H.H.H.L.H.L.L.L.P.L.U.L.L.L.T.U.T.U.T.T.T.~.~.T.~.~.~./.~./.T./././.~.~.(.(.~./././.^.(.^.(.^.{.(.(.`.].(.(._.(.[.}.|._._.{.{.|._.|.{.|.|.|.(.|._._._.|._.|._.|._.}.|.^.|.`.|._._.|._. X|..X'..X.X.XdX.X'.zX.XzXzXzXzXzXzXzXdXzXzXdXzX'..X.X.X.X.X.X.X.X.XdXdX.X.X.X.X.X.X|.", "Z Z C Z D Z Z Z Z Z Z Z Z G Z H D Z D D D D D D H Z H Z L H Z D D D D Z Z D G D Z J Z L Z J Z L Z Z S H Z L Z Z L H H Z Z D D D Z Z Z D A e $ % % * % : > ; : 0 r r r r r y : : ; ; r r r r r r * r 0 r * r 0 ; r r r r r r r r r r r r r r r r r r r r r r r r e r r r r r r r r r r r r r r r 0 r * r r 0 e r ; ; r 0 ; r = r r r r * y r r r r r r r 0 e r r ; ; = : * r 0 0 r r r 0 0 r ; r ; > * * : * : : > : : 0 * * % o u U.[.T.U.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.U.U.T.U.U.P.P.U.P.T.U.Y.L.U.Y.U.U.I.I.L.L.U.L.L.L.S.H.U.S.H.H.U.A.L.L.L.L.U.U.L.U.L.L.U.Y.T.T.P.P.P.P.T.I.U.T.T.T.T.T.T./.T.T./.T././.U.T./.~.R.T.T./.~./.~.~./././././.(./.(./.(./.!././././.~.(./.T.~.~.(.~.~.~.~.(.~.T.~.~.~.T.T.~.~.~.~.~.T.T.~.~./.~./.(./.(.(.(._.}.|._.|._.|.|.|.'.|..X X.X X|..X.X.X.X.XdX.X.X.X'..X.X@X@X X'. X|.|.|.|.|.|.|.|.'.|.|.|.|.|.|.|.}.}.}.}.}.}.}.}.`.`.`.`.`.|.|.|.|.@X|.`.`.`.`.`.(._.|.|.|.|.|.|.}.|.}.}.}.}.|.}.|.}.}.|.|.|. X|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.`.'.|..X X'..X.X.X.X.X.X.X'.@X.X.X.X.X.X X.X.X.X.XzX.X.X.XzXzX'..XzX.XzX.X.XxX.XxXdXxXdXdXzXdX.XxXzX.XzXdX.XzX.X.X@X X.X|.|.{.^.~.T.T.T.T.U.U.H.L.L.L.H.U.S.U.S.U.L.S.L.A.P.L.D.H.W.S.S.A.A.A.A.j.h.h.l.l.l.l.l.l.A.Z.h.h.A.A.h.h.h.A.h.A.A.S.A.H.A.A.A.A.A.H.A.Z.S.A.A.G.A.A.A.A.S.S.S.S.A.A.H.A.A.H.A.H.S.S.H.S.H.H.D.H.D.D.S.S.S.A.S.A.A.A.A.A.z.h.h.l.h.h.h.z.h.h.h.h.G.z.h.h.h.h.h.h.g.g.g.g.g.g.d.z.Z.h.A.D.S.G.H.H.H.H.H.H.H.H.S.S.H.H.H.G.H.A.L.A.H.S.H.S.H.A.H.H.H.H.H.S.S.H.K.A.A.H.H.A.H.A.A.S.A.A.A.A.h.h.h.l.A.h.h.h.h.h.h.h.h.h.h.h.g.l.h.h.l.l.G.z.S.A.H.S.S.S.G.G.H.H.H.H.H.H.A.S.S.S.H.S.G.S.S.S.G.A.G.A.S.S.S.S.A.H.S.S.H.H.H.H.U.H.H.H.H.H.H.H.H.H.L.L.L.U.P.L.U.U.L.L.K.Y.L.L.P.S.U.L.L.L.Y.K.L.Y.S.L.L.L.L.H.L.H.H.L.L.S.L.H.U.L.L.H.S.H.L.H.L.S.U.P.L.Y.L.U.U.T.T.U.Y.T.P.L.Y.T.T.T.T.^././././.(.(.^.(.^.`.^.|._.|.(._._.|.}._.}.}. X}._._.(.(.^.(.(.(./././.)././.~./.~.R.!.~.~.T.T.T.T.T.I.I.T.Y.T.T.T.T.T.~.T.~.T./.~.~.~.~.~.~.!././.(.^.(.~.(.(.~.~.(.(.(.(.(.{.{.(.{.(.(.(./.!././.!.~.~.T.T.T.T.U.T.P.Y.U.U.L.P.P.P.P.P.H.P.L.L.Y.U.Y.Y.Y.T.T.T.T.T.T.T.T.T.T.U.Y.U.U.I.U.T.T.T.T.T.T.T.U.T.P.P.U.U.L.U.U.L.U.U.L.L.U.P.L.L.L.L.H.H.H.H.h.H.H.H.H.A.H.H.H.S.S.A.A.H.S.H.S.S.H.G.S.I.S.Y.L.U.L.L.U.U.T.U.T.T.Y.T.T.~.T./.(.U./.~./.~.(.T.~.~.~.~.~.~.~.^././.(.(.(.!.(.(.(.(.(.(.(.(.(.(.`.`.(._._._.`.(.`._._.|._._.|.{.}.}.}.`.|.}.|.(.`._._._.(.`._.^.|._.|.|. X|..X.X.X.X'..XdXdXzXzXzXxXzXzXzXzXzXzXzXdX'..X.X.X.X.X.X.X@XdX X'.'..X.X.X.X|. X.X", "B D C Z B Z Z Z Z Z Z Z D Z Z Z Z D D D D Z D D Z Z Z Z Z Z D D D D D D D D D D Z Z Z Z Z Z Z Z H Z D D Z Z Z L Z S H Z Z Z D D Z Z D Z Z u % $ $ % % : ; ; r r r r r r r * : r : ; r r r r r y r r ; r 0 r ; r r r r r r r r r r r r r r r r r : r r r r r r : r r r r r r r r r r r r 0 r r r : r r r r r 0 r : ; r 0 r r r r r r : e r r r r r r r r r r r r ; ; r : r r ; r ; r r ; r ; r 0 ; ; : y : r r r 0 0 ; ; % $ $ # w (.~.T.T.~.T.T.T.T.T.~.T.T.T.T.T.T.T.T.~.T.T.T.T.T.T.T.U.T.U.P.T.U.P.P.P.P.P.P.P.U.U.U.U.U.I.U.U.L.L.L.U.S.H.H.S.L.L.L.L.L.L.L.L.L.L.L.U.U.P.T.P.P.T.P.P.P.I.U.T.T.T.T.T.~.T.T.T.T.T.T.T.XXT.T.~.~./.T.T.~.T./.~./.(././.~././.~.(././././././././.~.~./.~.~.~.~.~.~.~.T.T.T.~.T.~.~.~.T.~.(.T.~.T.T./.~./././.~.(.(.|.(.^.[._._.|._.|.|.|.|.'.|..X|..X.X|.'.'..X.X'..X.X'.'.zX.X X'.|..X'..X X|..X.X|..X'. X X|.|.|.|.|.|.}._. X}.}.}.|.}.`.`.`.`.|.|.|.|.|.|. X_.|.`.`.`.|.|.|.|.|.|.|.|.|.|.|. X|.}.}.|.|.}.}.|.|.|.|.|.|.'..X|. X X'.|. X|.|. X'..X.X.X.X.X.X.X.X.X|..X.X.X|.|..X.X.X.X@X'..X.X.X.XdX'..X.X.X.X.X.X.X.X.XdXzX.XdX.X.X#X.X'.zX'.xX.X.XxXdXdXzXzXzXzXdXzXzXzXzXzX.XzXzXzXdX.X.X|.|.|.(./.~.T.T.T.U.L.L.U.L.A.S.U.H.H.L.L.L.L.L.L.L.L.P.A.A.S.A.A.A.A.A.A.h.h.h.h.A.l.l.G.h.A.h.h.A.h.Z.h.A.h.A.h.A.h.g.h.A.A.A.A.A.h.S.A.A.S.G.A.G.A.G.A.Z.S.A.A.S.S.S.S.S.A.S.S.A.G.S.G.S.S.S.G.S.S.S.A.h.A.h.A.g.A.h.A.h.h.l.l.h.A.h.h.z.A.h.h.h.h.h.h.h.h.h.k.k.g.g.g.g.g.g.g.g.h.z.A.A.H.H.H.H.H.H.H.H.H.H.H.A.H.h.G.S.H.H.H.A.S.Z.G.A.H.H.A.S.A.S.A.A.H.S.S.H.H.H.H.S.S.A.A.A.g.A.h.A.A.S.l.l.z.h.h.h.g.g.h.g.g.h.h.h.h.h.h.l.G.G.D.H.j.A.A.S.S.A.H.A.H.H.H.A.W.S.S.S.H.S.H.S.S.S.S.S.A.A.G.S.S.S.S.S.A.S.S.G.S.H.H.S.H.L.H.D.A.H.H.H.L.D.L.L.L.P.P.L.R.L.L.L.L.L.L.Y.P.L.L.L.L.L.L.U.U.L.L.U.S.L.H.H.L.H.H.H.L.L.L.L.L.L.L.L.H.H.H.H.L.A.P.L.U.Y.U.U.U.U.U.U.T.T.T.U.Y.T.T.T.~./././.(./.(.(./.(.(.^.(.(._.|._.|._.}.}.}.}._._.'._.`.`.(.(.(.(.(.!.~.T.~./././.R./.T.~.T.^.T.~.T.T.T.I.U.U.T.T.T.T.T.~./.T.~.~.~.T.~.~./.~./.~.T.~.~./.(.!.(.(.{././.(.^.(.(.).(./.(.!./././././.!.~.T.~.T.T.T.T.U.P.P.L.Y.L.P.P.L.P.P.L.L.L.L.L.U.U.T.L.T.T.T.T.~.(.T.T.T.T.T.U.T.U.U.U.U.U.U.T.U.P.P.U.U.P.P.P.U.P.L.L.L.U.L.L.L.L.L.L.L.L.H.H.H.H.H.H.H.H.H.H.G.H.H.Z.H.H.A.H.H.A.S.S.S.K.H.L.L.L.L.L.L.L.L.L.K.U.U.T.P.T.~.T.T.~.T.T.~.~./.~.~.~.~.{.~.~.~.!.^.~./.^.^.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.`._._.`.|.`.^.^.|.`.(.[.}.`.`._.|.}.`.`.`.`.`._._.`.|.|.{.|.|.|.'.|..X.X.X.X.X@X.X'.dX.XzXzX.XzXzXzXzXdXzXdXdX@X.X.X.X X.X.X.X.X.X.X.X.X.X.X.X.X.X X|.", "C D Z Z Z Z Z D Z Z Z Z Z D D D D D F D D D D D H Z H Z D D Z H D Z L Z D Z H D S H L Z S L Z Z D D H Z L L S L L Z Z Z G Z Z D Z D D D F L u * $ $ % % % * ; ; r : e r = e r r : r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r r r r r r r r r r r r r r r r r r r r r : r r r r r r r r r r r r r r r r r r r r r r r r r r r e 0 r r r ; r 0 r r 0 r : : : * r r r ; 0 * ; % & o $ F./.T.~.T.T.T.T.T.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.T.U.U.T.U.Y.P.P.P.T.U.T.P.T.U.U.U.T.U.U.U.L.U.L.L.S.L.L.S.L.L.L.L.L.L.L.U.L.L.Y.P.U.T.T.P.T.T.P.T.P.U.T.T.T.T.T.T.T.~.T./.T./.~.XXT.XX~.~.~.T./.~.T.~./.~././.^././.~.^.(./.~./.~./.!./.~.~.~.~.~.~.~.~.~.~.T.~.T.~./.T.~.~.~.~.[.T.T.~.~.~.~.~./.~.~./.(././.(.(.`._._.(.|._.|.|.|.|.|.|. X X.X|.'. X.X'..X.X.X.X.X'.zXdX.X.X.X.X X.X|. X|.|.|..X|.|.|.|.|. X_._.|._.|._.|.}.}.}. X`._.`.|.|.|. X.X|.|.|.|.|.|.`.`. X|._.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|. X.X.X.X|..X.X|.|..X'.|.|.|.|..X|..X.X|..X.X|.|..X|.|..X.X.X.X.X.X.XdX.XdX.X.X.X.X.XdX.XdX.X.X.X.X.X.X.XdX.XdXdXdX.XzXdXdXdX.X.XxX.XzXzXzXzXzXzXzXcXzXzXzXzXzXzXzX.XdXdX.X.X|.(././.T.T.Y.L.L.S.S.D.D.S.L.H.S.L.S.L.G.L.L.D.D.P.D.H.H.S.G.G.G.A.A.A.l.g.h.g.h.h.l.l.h.A.A.h.h.h.A.A.A.A.z.A.h.h.g.A.A.A.A.G.A.W.H.A.H.A.A.A.A.G.H.h.S.A.A.S.A.F.S.A.h.A.H.S.S.S.S.S.S.S.S.S.S.S.S.G.A.A.A.A.A.j.z.A.h.l.l.l.l.h.l.z.h.h.z.A.h.h.h.A.h.h.h.h.h.k.k.k.g.g.d.k.k.h.g.A.A.A.H.S.H.H.S.H.S.S.H.S.H.A.S.Z.S.S.S.G.H.A.G.K.A.H.H.A.S.S.S.G.A.S.A.S.h.H.A.H.H.A.A.A.A.A.h.j.h.A.h.h.h.h.h.j.k.z.g.g.h.h.f.k.h.l.l.l.h.A.z.S.A.G.A.H.S.H.S.S.H.A.H.S.H.G.S.S.S.S.S.A.S.S.S.S.G.A.A.H.A.S.A.A.S.Z.H.S.S.S.G.H.G.H.H.L.G.L.L.L.L.S.L.L.L.L.L.L.Y.L.U.L.U.L.L.L.L.L.Y.U.L.L.K.L.L.L.L.U.S.U.S.H.H.H.H.L.L.H.H.L.L.L.L.H.S.L.L.S.L.S.P.L.L.U.U.U.T.U.U.T.T.Y.T.T.U.T.T.T.T.T.!.(././.(./.E.^.(.(.^.(._.{.{._._.|._.}. X}. X_._._.^.(.^.|.(.(.(./.(.!./././.~./.~.^.~.!.T.T.T.T.T.U.U.T.T.U.T.T.T.T.T.T.~.T.~.~.~.~.~./.~.~./.~././.~././.~./.(././././.^.^.~.(././././././././.~./.~.^.T.~.T.U.T.Y.P.L.P.L.L.L.P.L.U.L.L.L.U.L.U.T.U.T.T.Y.T.T.T.T.T.T.T.U.U.U.I.U.U.U.U.U.L.L.U.P.P.U.L.P.L.L.L.P.L.U.L.L.L.L.L.L.L.L.S.H.H.H.S.G.H.H.S.H.H.H.H.H.H.H.S.A.S.A.H.A.S.S.H.S.H.H.S.L.L.L.S.L.L.L.L.U.U.Y.T.T.T.T.~.~.~.T.~.T.~.~.~.T./.T.[.~.~.~.T.~.~././.!.(.(.(.(.(.(.(.(.(.!.(.(.(.(.(.(.(._._._._.(.`.`.`.|.`.|._.}.`.}.|.}.`.`.`.|.|._._._._.^.`._.|.|.|. X|..X.X.X.X.X.XzX@XzX'..XzXzXxXzXzXzX@XdX.XdX X.X.X X.X.X.X.X.X.X.X.X.X.X.X|.|.'.|.", "D B Z Z Z Z Z Z Z Z Z F D D D Z D D Z Z F D D D Z H Z Z D D D Z Z Z Z Z Z D D D H H Z Z Z L S Z Z G Z H Z L Z Z Z Z Z H G Z D Z Z D D D Z Z C A & $ $ % % * % ; ; 0 = r r r r 0 r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r e r r r r r : r r r r r r r r r * r r r : r r r r : r r r r r r r r r r q r r r r r r r r r r r r r r r r r ; 0 r r r r r r r r r ; ; y 0 0 ; 0 ; e % % $ o & Z.(.U.~.~.T.[.^.T.T.~.~.Y.~.~.T.~.~.T.T.~.~.T.T.T.T.T.T.T.U.T.T.L.T.Y.T.P.T.T.T.P.T.T.T.T.Y.U.U.R.Y.L.U.Y.L.L.L.L.L.Y.K.Y.L.L.K.L.L.L.L.U.P.P.P.P.P.T.T.T.T.T.T.U.T.U.T.T.T.T.T.(.T.(.T.~.~.~.).R.~.~.~.T.~.~.~.!.[.~.~././.[.~./.~.!./.~././.(.~././.~.~.T.T.R.~.~.T.~.~.~.~.T./.~.T.T.~.T.~.~.~.T.T.~.~.~./.(.~././.[.(.(.^.{._.^.{.`.{.|._.`.|.|.|.|.|.|.|.|.|..X.X.X XdX XzX.X.X.X.X.X.X.X|..X|..X.X'..X|.'..X X X|.|.|.|.|.|.|.|. X}.}.}.|.|..X|..X.X.X'..X.X X'..X|..X.X|.|.'. X.X|..X.X.X.X X X X|..X|..X X'. X X|.|..X'.|..X|..X.X.X.X X X X.X X|..X|.|..X.X.X.X.X.X.X.X.X.X.X.XcX XdX.X.XdX.X.XzX.X.X.X.X.X.X.X.X.X.X.XdX.XzX.XdXdXdXzX'..XdX.XxX.XxXzXzXzXzXxXcXzX.XzXzXzXzXzX.X.XzX.X.X X'.|.{./.T.T.Y.U.L.L.L.L.L.H.H.S.H.L.S.G.L.L.L.H.L.H.H.H.H.H.H.G.A.G.A.A.A.G.A.A.A.A.A.h.l.A.h.A.A.A.A.h.A.A.A.A.S.h.S.A.A.A.G.A.A.A.S.A.H.H.G.A.G.H.A.A.Z.S.A.S.A.S.z.A.S.H.S.S.S.S.S.S.S.S.S.S.S.G.z.A.A.A.S.A.h.A.A.l.A.l.l.A.l.l.l.h.z.z.h.h.z.h.j.x.h.h.h.h.h.h.h.h.k.g.g.g.g.k.k.h.A.A.A.S.G.H.G.H.H.S.G.S.S.S.S.S.S.A.S.S.A.A.H.A.A.H.H.H.H.S.S.Z.G.S.S.S.S.H.H.H.A.A.A.A.A.A.h.A.A.h.h.h.h.j.h.k.k.g.g.g.g.k.h.h.h.l.h.l.l.h.h.z.A.A.A.A.A.A.A.S.S.A.H.S.A.A.H.S.A.A.S.S.H.S.S.S.S.S.H.A.z.S.S.S.S.S.G.S.S.S.H.S.L.L.L.H.H.G.L.G.D.L.L.L.L.L.L.L.U.R.L.U.L.L.U.U.U.U.L.L.L.U.U.L.L.S.L.L.S.S.H.H.H.H.H.G.L.H.L.L.U.S.L.L.S.L.L.S.S.L.L.S.L.L.L.L.Y.U.L.T.L.T.U.U.T.T.T.T.T.~.~.~./.~././.^.{.^.^.^.^.|.^._.|.(._._.}.}._.}._. X_._.|.(.^.(.(.(././././.!./.~.~./.T.T.~.T.T.T.T.I.T.T.I.I.U.T.T.T.T.~.T.T.~.T.~.T././.~.~././.~./.~.~.[./././.~.~.~./././.~./.^././././././././.~.~.T.~.T.~.T.U.T.U.Y.P.U.U.L.L.P.L.L.L.U.L.U.U.U.T.T.T.T.T.~.T.Y.Y.T.T.T.T.U.T.Y.U.U.U.U.U.U.U.U.L.P.L.U.L.L.L.P.L.L.L.L.L.L.D.L.H.G.H.H.H.S.S.S.H.G.Z.G.G.A.H.H.H.H.H.G.A.G.Z.A.A.S.S.S.S.H.S.U.S.L.S.L.L.L.L.L.U.U.U.T.T.T.T.T.T.T.~.~.~./.~.~.~./.T./.U.~.~.T.~.~././././.(.^.(.(.(.(.(./.(./.(.^.^.(.(.(.(.^.^._._.(.(.(.(.^.`.`.`.}.}.|.|.'.}.|.`.(.(.^._._.^.`.(.|._._.|. X X X X|..X.X.X XdXzX.XzX.XzX.X.XzXdXdXdX'..X'..X|..X|..X X|..X.X.X.X.X.X X.X X.X X", "Z C B Z D D F Z Z Z C G Z D Z G D D D D D Z D D Z Z D Z Z D Z Z Z Z G Z Z Z Z Z Z Z Z Z H Z H H J Z Z L Z H Z H Z H L Z Z Z D Z D Z Z D D Z D D u * $ $ $ % * * ; ; : * r r 0 r r : r r r r r r 0 r r r r ; r 0 r r r r r r r r r r : : r r * y r r r r r r r r r r r r r r r r r r r r r r r : r r r r r r r r r r r r r r : r r r r r r r r r e r r r r r r r 0 r r ; 0 r ; r r r r r r r r r r ; ; ; r r : : % - $ o # t K.[.E.~.T.T.[.U.T.~.~.T.Y.T.~.T.T.~.~.~.~.Y.T.~.T.T.T.T.T.T.T.T.T.T.T.P.T.T.T.T.T.T.T.T.T.T.T.Y.T.T.Y.T.Y.U.U.U.U.L.L.L.L.Y.L.L.U.L.Y.K.U.L.U.P.P.P.P.P.P.T.P.P.U.T.T.T.T.T.T.T.T.~.~.~.Y.R.(.~.T.XXT.^.~.~.~.[.~./.~.^.~.~.~./.(.~.!.~.!.~.~.~.~.~.~.~.!.~.~.[.R.E.~.~.T.~.~.T.~.T.~.T.~.T.~.T.~.~.T.~.~./.~.~.~.[.^./.(.(.(.(._._.(.|.`._._._._.|._.|.|._.|.|. X|.'..X|..X.X@X'.zX.XzX.X.X.X.X.X|..X.X.X.X.X.X.X|.'.|.|.|.|.|.|.|.|.|.|.|.|.|..X'..X.X.X.X'. X|.'.|..X|..X.X|. X|. X|. X.X.X|.|..X X|..X|.|. X|. X|..X|.|..X X.X|..X|.'. X.X.X.X.X.X|..X'..X|.|..X.X|..X.X.X'.|..X.X.X@X XdX'.'..X.X@X.X.X'.zX.X.X'..X.X.X.X.X.X'..XzX.X'.zX.XdXdXdXdXdXzXzXzXdXJXzXxX.XzXcXzXcXzXzXzXdXdX.XdX@X.X.X|._.^.(.T.T.P.U.L.L.H.L.H.H.H.L.G.A.H.H.L.L.L.L.P.L.L.L.H.H.H.A.H.S.A.h.A.A.A.h.Z.g.A.g.A.h.A.h.h.h.A.A.A.z.A.h.A.A.A.A.A.h.A.A.A.A.G.H.A.A.G.H.H.h.H.S.S.S.A.S.A.S.A.S.S.S.S.S.S.S.A.S.S.A.A.A.l.A.A.A.A.A.A.j.A.A.h.A.l.l.l.l.l.l.A.l.A.A.A.h.h.h.h.h.h.h.l.h.h.h.h.k.k.k.k.k.k.k.h.h.h.A.h.G.A.S.S.H.G.S.S.S.S.A.S.S.S.G.Z.S.S.H.A.G.G.H.H.A.h.A.H.G.A.A.H.H.S.A.H.H.A.G.A.A.A.A.A.h.l.h.h.g.l.k.g.k.g.g.f.f.g.h.h.h.k.h.h.z.S.S.A.h.A.A.A.A.A.A.A.A.S.H.S.S.S.S.A.S.S.S.A.S.A.S.A.S.A.S.A.S.S.S.A.S.S.S.S.S.S.S.H.H.H.G.L.H.H.H.L.G.U.S.U.L.D.U.L.L.L.K.L.U.L.K.L.P.L.L.L.L.K.L.L.L.U.U.L.S.S.H.H.H.H.H.H.K.H.H.H.U.H.L.H.H.H.L.L.H.L.S.L.P.L.U.P.P.L.L.L.T.L.U.T.T.T.T.T.T.T.T.T.~.~.~.~.(.^./././.(.(.^.(.(.`.`.(._._. X X_._._._._._.^.(.(.).(.!.(.(.~.(.~.~.~.~.T.T.T.T.T.T.Y.T.U.Y.P.U.Y.T.T.T.~.T.T.~.T.~.T.~.T.~.~.~.~.~.~.~.~.~./.!.~./.!.~.~.~.~.~.~.~.~.~.~.(.~.^.~.~.~.~.~.T.~.T.T.T.P.T.T.P.Y.U.U.P.P.U.U.U.U.P.P.T.P.P.T.U.T.T.T.T.T.T.T.T.T.T.T.T.U.L.I.Y.U.Y.K.L.L.U.L.U.U.L.L.L.U.L.U.L.L.H.L.L.H.L.H.H.G.S.H.S.S.S.A.S.S.H.A.H.H.H.S.h.H.A.S.H.A.A.H.S.S.S.S.H.H.H.H.L.L.L.L.L.L.L.U.U.U.Y.T.T.T.T.T.T.~.~./.T.~.T.~.~.~.~.E.[.T.~.~.!.~././.(.(./.(.(.(.(.(.(./.^./.!././.(.(.(.(.(.(.(.^.(.(.(.(.`.^.}.}.}.|.|.|.}.|._.(._._._.`.(.(.`.|._.|.|.|.|..X|..X.X.X.X.XdXzX.XxXzXdXdXxXdXdX.XdX'..X.X.X.X|.|..X|. X.X.X.X.X'..X.X|..X|.|.", "C D Z F C Z F C D B D Z Z D D D D Z D D D D D Z D D Z Z Z Z Z Z Z Z C Z Z H L Z Z H Z H Z H H Z Z L H L Z H H Z D Z Z Z Z Z Z Z Z Z Z Z D D D Z Z u ; o o $ $ ; * * : y : : : : r r r r r r r r ; r ; 0 0 r 0 e r r r r r 0 r r r r y 0 r r r r r r r r y * r r r r r r r r r r e r r r r r r r r r r r r r r r r r r r r r r r r r r r r r e r r : r r r r r r r : r r r r r r r r r : e r r r ; r r r r r : % $ $ y ].(./.~.~.[.T.T.{.~.~.T.~.~.~.~.~.~.~.~.T.T.~.~.T.T.~.T.T.T.T.T.T.P.U.T.Y.T.T.T.T.T.T.T.T.T.~.T.T.Y.Y.T.T.T.Y.T.U.U.Y.Y.L.L.U.L.U.L.L.L.L.U.U.P.P.T.P.P.U.P.T.T.P.T.U.T.T.T.T.T.T.T.~.T.~.(.T./.E.T.E.~.^.~.~.[.~.~.~./.~./.~././.~.~.~.~.~.~.!.~./.~./.^.[.~.T.[.(.R.~.T.~.~.T.~.T.~.T.~.T.~.~.T.Y.~.~.~.~.~././.~.~.E.(.(.(.(.(.(.^.^._.|.^.`.|.|._._.|._.|.|.|.|.'..X X.X.X.X.X.X.X.X.X.X.X.X'..X.X.X.X|..X.X|..X X.X|.|. X|.|.'.|.|.|.'. X'.'..X.X.X.X.X.X.X X|..X.X|..X'.|..X X|.|..X.X|.'.|..X|..X|..X'..X.X|..X|. X.X X X X.X.X.X.X.X'..X.X.X.X.X.X|..X.X.X.X.X.X.X.X.X.X.X.X.XdX@XxX'.dXdX.X.XxX'..XdX.XzXdX.XzX.X.X.XdX.X.XzX.XzXzX.X.XzX X@XdXdXdXzXzXzXdXxXzXzXcXzXzXzXzXzXzXzXdXdXdX@XdX.X.X|._.{./.~.T.T.U.P.L.L.H.H.H.S.D.L.D.U.H.L.G.L.D.H.H.L.H.G.H.H.H.A.G.A.H.A.j.G.h.j.h.G.G.j.h.A.A.A.A.A.j.j.A.A.A.A.A.A.H.A.A.A.A.A.A.G.A.H.G.G.S.S.S.H.S.G.S.A.S.S.A.S.S.S.S.S.S.S.S.S.S.A.G.A.A.A.A.H.g.A.A.A.A.g.l.l.l.l.l.l.l.h.z.l.z.A.h.g.h.z.h.A.z.z.h.h.l.h.k.h.k.h.k.k.z.k.k.h.z.l.h.A.H.S.A.H.A.H.S.S.A.A.Z.H.A.S.S.S.S.S.H.A.H.G.A.H.H.H.H.H.A.G.G.A.A.A.H.A.H.S.A.A.A.j.l.l.l.l.h.h.h.g.k.j.a.j.g.g.g.g.k.k.k.h.z.h.h.h.z.h.h.A.h.A.A.A.A.H.A.S.A.A.A.S.S.A.S.A.A.G.A.A.A.A.A.A.A.S.S.S.S.S.S.S.S.G.A.H.G.H.H.H.H.H.S.H.L.G.L.G.L.L.L.L.L.L.L.U.L.L.U.U.Y.L.U.L.U.U.U.Y.L.U.L.U.I.S.U.L.H.H.H.H.H.S.H.H.H.H.S.H.A.L.H.H.S.H.L.S.S.L.A.L.S.L.L.P.L.T.U.L.L.U.U.Y.T.T.T.~.T.~.~.T.~.~.E.~././.(.(.(.|.(.(.(.(.(.`._._._._._._._._.|.(.(.(.(.(./.!.~.~.~.~.~.T.T.~.~.T.T.P.U.U.U.T.P.P.P.T.T.T.T.T.T.~.T.~.T.~.T.(.~.~.~.~.~.~.~.~.~./.[.~.[.~.~.~.~./.~.~.~.~.~.T.~.~.T.[.(.T./.T.~.~.T.T.T.T.P.P.Y.P.Y.P.P.P.U.Y.U.L.P.P.T.T.P.U.T.T.T.T.T.T.T.T.T.T.T.T.U.T.Y.I.U.U.U.L.Y.L.L.L.S.L.L.L.L.S.L.S.D.U.L.G.H.H.H.H.S.G.S.S.S.S.S.S.S.A.H.A.A.H.G.A.H.S.A.S.H.A.A.A.S.S.S.S.S.H.H.H.S.L.S.L.S.L.L.L.L.L.U.Y.T.T.T.T.T.T.T.T./.~.~.T.T.~.~.XXT.[.T.~.~.(.~.[./.(.(.(.(.(.(././.(.!.^.^.(././.(.^.(.(.(.(.(.(.(.(.(.(.`.}.}.}.}.|.|.'._.|.|.(.(.(.(.(.(.(.(.|.{._.|. X X.X|..X.X.X.X.X.XzXzX.XdXdXdX.XdXdX.X.X.X.X|..X@X|.|.|.|.|..X.X.X.X.X.X.X|.'.|.", "Z Z Z Z D F Z Z D Z Z D D D D D D D D D D D D D Z D Z Z Z Z Z Z Z Z Z C Z Z Z Z Z Z S H L Z H D S H Z Z H Z H Z Z D Z Z D Z D Z B Z Z Z B Z Z D B L C * $ $ $ $ % % % ; * r r r r r r r r r r r 0 r r r r ; e q r r r r r e : r r r r t r r r r r r r r r r r r r r r r r r r r 0 r r r r r r r r r r e e 0 r r r r r r r r r r r r r r r r r r r 0 r r r r r r r r r r r r r r r r r r 0 r r r r r r r ; % % $ o _ [.[.T.^.(.!.T.(./.I.T.^.~.T.T.~.~.T.T.^.T.~.~.~.T.~.(.T.~.T.T.T.T.T.T.Y.Y.T.T.T.T.T.T.T.T.~.T.T.T.T.T.Y.Y.T.T.T.T.T.T.T.U.U.T.U.U.L.U.Y.U.L.P.P.P.P.P.T.T.U.T.T.P.[.T.T.T.T.T.T.T.T.~.~.T.T.T.~.~.~.[.~.~.~.~.T.~.~./.~.~.~.~./.~.~./.~.~.~.~.~.!./.~.~.~.~.~.~.~.T.~.T.~.T.~.T.T.~.~.T.~.T.T.~.T.T.~.T.T.~.~.~./.~.~./.[.(.(.(.(.^.`.(.{.|._.`.(.`.`._._._.|.}.}.}.|._.|.|..X.X.X.X.X.X@X.X.X.X.X.X|..X.X.X.X.X.X.X.X.X|..X|. X|.'..X|..X X.X|. X.X X@X.X.X.X.X.X.X.X.X.X.X.X.X.X|. X|. X|..X|..X.X X.X X.X|.|..X|..X|..X.X.X.X.X X'. X.X.X'..X.X.X.X.X.X|..X.X.X|..X'.|..X.X.X.X.X.X.X.X.XdXdX@XdX'..XzXzXdX'.zX'.zXzX.X.X#XdX.X.X.X.X.X.X'.zXzXzX.XdX'.xXdXdXzXzXzXzXxXzXxXzXxXzXcXzXdXdXcXdXzXzXdX X.X|.`.(./.~.T.P.L.L.L.H.S.L.L.H.S.H.H.S.L.L.L.L.L.L.L.A.L.S.H.H.H.A.G.A.A.A.A.A.j.A.A.A.A.A.A.h.A.A.A.A.A.A.A.A.A.A.A.h.H.z.G.A.W.G.A.A.G.H.H.A.H.G.H.G.G.G.A.S.F.l.S.S.S.S.S.H.A.S.S.A.A.Z.A.A.h.A.A.g.h.A.h.h.h.A.l.h.h.h.l.l.l.l.h.l.l.l.z.z.A.h.z.h.h.h.h.h.h.h.h.k.g.g.k.f.k.d.k.k.g.d.g.h.A.S.A.H.H.A.H.H.H.g.A.A.S.S.H.H.H.S.H.S.G.S.H.H.H.H.H.A.Z.H.A.A.A.G.A.H.A.A.A.A.A.z.h.h.l.k.k.h.z.g.a.j.z.g.g.g.g.g.k.h.k.h.h.h.h.h.D.z.A.h.A.A.A.A.A.G.A.S.S.A.S.S.S.S.S.A.A.A.G.A.G.A.A.A.z.H.S.S.S.S.S.S.G.S.G.H.H.H.S.D.G.H.H.L.G.H.G.L.L.L.L.L.L.S.L.S.L.U.K.U.L.Y.L.R.L.L.L.L.L.L.L.U.L.L.S.U.S.H.H.H.K.S.H.H.H.S.H.H.H.H.H.H.L.L.H.L.L.U.P.L.L.S.U.L.L.L.L.L.U.U.U.T.T.T.T.T.T.T.T.~.~.~.~././.(./.(.(.^.|./.|.^.(.`.]. X_. X_._._._.^.(.(.(.(.(.(.).~.).(./.~.~.~.~.~.T.T.Y.T.U.Y.U.T.P.P.Y.U.T.T.T.T.T.T.~.~.T.T.^.~.T.~.~.~.[.~.~.~./.~./.~.~.~.~././.R.~.~.T.~.~.T.~.~.T.~.~.~.T.~.T.T.T.T.T.T.T.P.T.T.P.P.Y.L.L.U.U.P.P.T.T.U.T.T.U.T.T.T.T.Y.T.T.T.T.L.T.U.T.L.L.U.L.L.L.L.L.L.L.L.G.L.S.L.U.G.H.H.S.H.H.S.S.H.S.S.S.S.A.H.A.G.S.G.Z.A.H.H.H.G.G.A.A.A.H.A.A.A.S.S.S.A.H.A.S.S.L.S.S.L.L.L.L.L.L.L.L.U.T.T.T.T.T.T.~.T./.T.T.~.~.~.~.T.~.T.~.T.~.~.~.(./.(./.(././././././.^.~.^././.(./.(.(.(.(.(.(.(.(.(.{.(.^.`.}.}.}.|.|.}.|._._.^.(.(.(.(.(.`.{.`.|._. X|.|.|. X.X.X.X.X.X'.@X'.dX'..XdXdX.XdXzX'..X.X.X X X X`. X X.X X.X X X.X|.|..X|._.", "B D Z Z Z Z Z Z C G D D D D G Z D D D Z D D Z Z D Z Z Z Z Z Z Z Z C Z L Z Z Z Z Z H Z H Z H Z H H H Z L Z J H H D Z D D Z Z Z Z D D Z Z F D Z Z Z Z Z Z e $ o o $ & % * * : : y r r 0 e r r r r r r r r r r r r r : r r r r r r r r e * r r r r r r e 0 r r r r r r r r r r r r r r r r r r r r r r : 0 r r r r r r r r r r r r r r r r r r r r r r r r r r r r r ; 0 r r ; r 0 r r r r r r r r r r = * % % $ o ` T.[.T.(.T.~.(././.!.(.~.~.~.T.~.~.T.^.~.~.~.~.~.T.~.P.~.T.T.~.T.T.T.T.T.~.T.~.~.~.~.~.~.~.~.T.~.T.~.~.T.~.T.T.T.T.T.T.Y.T.T.T.U.U.U.U.U.L.U.L.P.P.T.P.P.P.T.P.P.P.P.P.T.T.T.T.T.T.T.T.T.T.~.T.T.~.T.~.T.~.T.~.~.[.~.~.~.~.~.!.~.~.~.!.~./.~.~.~.~.~.~.~./.~.~.!.T.T.~.XX~.T.~.T.T.~.T.~.T.T.~.T.~.T.T.T.~.T.~.~././.~././.^.^.(.(.(.^.^._.|._.{.|.`.(.(._._._.{._._._.|.|.|.'.|..X.X.X'.zX|.dX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X'. X|. X|. X|.|..X.X.X X.X.X.X.X.X.X'..X.X.X.X.X.X|.'..X.X.X.X.X.X.X.X.X.X|..X|..X.X X.X.X.X.X.X.X.X@X X.XdX'.@X@X.X.X.X.X.X.X.X'..X.X.X.X.X.X.X.X.XdX.X.X.X.XdX'. XdX.XxX.X.X.X.X.X.XzX.X.XdX.XdX.XdXdX.XxXxX'..X.XzXzXxXdXdXdXdXcXzXxXzXxXxXzXxXzXzXzXdXdXcXdXdXdXdX.XdXdX.X'.|.(.^.~.T.P.P.U.U.S.H.L.H.L.D.L.L.L.A.L.L.G.L.L.L.P.L.G.S.H.H.G.A.G.A.A.G.j.A.G.g.h.A.j.A.A.h.A.h.A.A.A.A.A.A.A.J.z.G.A.A.A.G.h.G.A.Z.H.H.H.S.S.S.S.Z.G.S.A.S.H.S.S.S.S.S.S.H.S.S.S.A.A.D.S.h.A.h.A.A.h.A.Z.h.h.l.h.h.h.l.l.l.l.l.h.A.l.G.z.h.A.h.h.A.h.h.h.h.k.g.k.g.g.k.k.k.k.k.k.k.z.h.g.A.g.A.A.H.A.h.A.A.A.A.A.S.H.S.H.H.H.H.H.H.H.A.H.H.h.H.H.S.S.A.G.H.A.Z.A.A.A.A.A.h.A.h.h.h.h.h.a.a.z.z.k.k.k.f.g.g.z.k.k.k.z.h.h.g.k.g.A.S.h.g.l.A.A.A.A.G.A.A.H.A.A.A.G.A.A.A.G.A.A.A.A.A.A.S.A.S.S.S.G.H.S.S.G.A.H.H.H.H.L.L.H.G.G.L.D.L.L.S.U.L.A.L.L.L.L.L.L.L.U.U.U.U.L.U.R.L.U.L.L.L.L.L.L.U.S.U.H.H.H.A.H.A.A.S.D.A.H.H.H.H.S.S.H.H.H.S.S.D.L.L.L.L.S.L.L.Y.L.U.L.U.T.T.T.T.T.~.T.T.T.R.~.R.~././.{./.(.{.|.(.(.^.`.(.|.[._._._._._._.|.(.(.{.(.(.(.(.~.~.~.~.T.~.~.T.T.T.T.Y.T.U.T.P.P.P.U.T.T.T.T.T.T.T.~.T.T./.T.~.T.[.T.~.T.~.~.~.~.!././.~.~.[.T.T.T./.T.T.~.T.T.T.T.T.~.T.T.~.~.T.~.T.T.T.T.T.T.T.T.T.T.P.P.U.U.L.U.P.P.T.U.T.U.U.T.T.Y.Y.Y.Y.T.T.T.T.T.U.T.Y.T.L.L.L.U.S.K.L.S.H.S.L.L.H.H.S.H.G.G.A.H.S.H.A.S.S.S.S.A.A.A.A.A.A.A.G.G.A.G.A.G.H.S.H.H.h.A.H.S.S.A.S.S.A.S.A.H.S.S.L.L.L.S.S.L.L.L.L.U.U.T.Y.T.T.T.T.T.T.T.T.T.T.T.~.~.~.~.~.~.T.~.!././././././././././.!.(.~.!././.(././.!.(.^.^.(.{.(.(.(.(.^._.}.}.}.}.|.|._._.|.|.(.|.(.(.(.(.^.|.|.{.|._.|.|..X.X.X.X.X'..X.X.X.XcX.X XdXdX@XzX.X.X|..X|.|. X_.|..X|..X|..X.X'..X|.|.@X|.", "Z G Z Z Z Z Z Z Z F Z D D D D D D D D D D D F Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z G Z Z L H D D D D D Z D D D D D C Z Z C Z Z D Z Z Z Z Z Z A G Z Z Z q % o o o $ % = * % ; : e : ; e : r 0 r ; 0 r r r r y ; r r r r r r r r r r r r r r r r r r e 0 r r r r * r r : r r r r r y * r r r y r r r r e * t : r r r r r t 0 y r r 0 r r r r r r r r r e q r r r r ; r e r ; : r r r r ; : * * * > % $ o o # u F.^.~.~.`.(./././.(.~.~.~.~.~.~.~.~.~.~.T.~.T.~.T.~.~.~.[.T.~.T.~.T.~.T.T.~.U.T.~.(.~.~.~.~.~.T.~.~.T.~.T.T.~.T.~./.T.[.T.T.T.T.T.T.Y.T.T.U.U.U.L.U.U.U.P.T.T.U.U.T.U.T.T.T.~.K.T.T.T.T.T.~.~.T.~.T.~.T.~.~.~.~.(.E.(.~.T.~.[.~.~.~.(.~.T.T.~.~./.~.~.~.T././.(./.!.[.~.[.XXT.[.T.T.~.T.T.T.P.T.T.T.T.T.T.T.T.~.T.[.[.~.~.[.(./.[.[.{.[.{.XX|._.|._._._._.|.`.[.|._.{._.|.`.`.|.|. X.X.X.X.X.X.X.X.XdX.X.X.XdX X.X.X.XzX.X.X.X.X.X X.X.X X.X.X.X.X X X XdX'..X.X.X'.@XdX'. XdX.X X.X.X.X.X.X.X.X.X.X.X X X|.|. X X X'.|..X.X.X.X.XdX.XdXdX.X.X.X@X.X.X.X.X.X.XdXdX.X.XdX X.X.X.X.X.X.X.X.X.X'. X.X.XdX.XdXdXdX@X.X.XdXdXhX.X%X.XdX.XdXdXdX.XdXzX'.'.zXzXzXzXzXzXzXzXcXxXxXzXcXdXcXzXzXcXzXzXzXzXzXzXzXzXzX'..X.X.X|._.(.~.~.T.U.L.L.L.H.L.H.L.G.A.L.L.L.L.L.H.L.L.L.G.L.L.K.H.H.H.A.A.A.A.h.g.A.l.A.A.g.A.A.A.h.h.A.A.A.A.h.A.A.z.S.S.A.G.A.A.A.D.G.D.A.H.H.G.A.H.A.H.H.A.S.S.S.A.S.S.S.S.A.S.G.z.G.A.z.A.S.A.h.A.A.z.A.z.h.h.h.h.h.h.h.A.h.h.h.h.z.h.h.h.h.h.h.h.h.h.h.h.h.h.h.z.h.k.z.g.z.z.f.a.f.f.f.z.g.h.l.D.A.A.A.A.S.A.A.A.A.A.D.S.H.H.H.G.H.H.H.H.H.S.H.S.S.S.H.h.A.A.A.A.A.A.A.A.A.A.k.h.h.g.h.k.g.z.f.f.k.d.k.k.i.z.g.z.g.g.j.z.k.z.z.D.D.k.A.h.A.h.A.A.h.A.H.h.A.H.G.h.S.A.A.A.S.A.G.A.A.A.A.A.A.A.A.A.G.G.G.G.H.S.L.A.S.H.H.L.H.L.H.H.H.L.G.L.U.S.U.D.L.L.U.A.L.K.L.L.U.U.U.U.U.L.U.L.U.L.L.K.L.G.L.H.H.H.H.S.G.G.G.G.D.S.S.H.H.G.H.G.H.H.H.H.G.G.G.H.J.H.H.H.S.U.L.L.L.P.L.P.U.T.T.T.T.T.T.T.T.(.T.~.(./././.(.(.[.(.`.(.{.`._._._. X`.`.(.`.`.`.`.(.{.(.^.|.[.~.^.T.~.T.~.~.T.T.T.T.T.P.P.P.P.Y.T.T.U.T.U.Y.T.T.T.T.T.^.T.~.T./.~.~.~.~.~.~.~.~.~.~.!.!.T.~.~.T.T.T.T.T.T.I.T.I.T.Y.I.T.I.T.~.T.T.T.T.I.T.T.T.L.T.P.P.T.P.U.L.U.U.U.U.U.I.T.Y.T.T.U.U.U.U.U.P.U.T.P.T.U.Y.P.U.L.L.D.U.U.S.H.G.G.H.G.H.G.G.H.H.H.A.S.A.S.S.l.A.A.A.h.A.A.A.A.A.A.G.S.S.S.S.H.S.S.S.S.A.S.h.h.A.A.G.S.S.S.S.A.H.H.H.H.L.H.L.H.L.L.L.U.P.P.P.T.T.T.T.U.I.T.T.Y.Y.!.T.T.T.T.!.~.T.~.~.~.!.(./.~.~.~.~.~.^.T.^.~./.E.!.[.~.~.~.^./.(./.^.(.(./.(.`.`.(.`._._.}.}.}.}.[.|.|.^.(.(.(.{._.{.(._._._.|. X.X.X.X.X.X.X'..X'..X'.'.zX.X.X.X.X.X.X.X.X|.|.|.}.|.|.|.|. X|. X'.|.'.|. X'.", "C B Z Z Z Z Z Z Z Z Z Z D D D D D C D F D D Z Z Z Z Z Z C Z Z F Z C Z C Z Z Z Z G Z Z Z G D H Z D D H Z D D D Z Z D D D Z Z Z Z Z B Z Z Z Z Z Z F D C Z Z Z u r o $ o $ $ $ % * 0 * e 0 ; ; r r r = ; r r r r ; r r r r r r r r r r r r r r r r r r r : r r r r r r r r r r r r r r r r r r r r r r r r r r 0 y r r r r e * : : r r r r r r r r r r r r r r r r 0 0 r 0 ; ; e r r r 0 r y * * > * % $ $ o u ]./.T.~./.!././.~./.~.(.~.(.~.~./.~.~.~.~.~.(.~.~.~.~.~.~.~.T.~.~.T.~.R.~.~.~.~.[.~.T.Y.~.~.~.~.~.T.T.~.~.T.T.T.~.T.T.T.T.T.~.T.T.~.~.T.U.T.Y.U.Y.U.T.U.P.P.U.T.T.U.U.T.T.U.T.T.T.T.~.K.T.T.~.T.~.T.~.~.~.T.T.~.T.T.~.~.T.{.~.R.~.~.~.T.~.~.~.~.T.T.~.T.~.!.T.~.T.T.T.T.!.~.T./.~.T.~.~.~.~.T.T.~.T.~.T.T.~.T.~.T.~.~.!.~.!.(.!.(./.^.(.(.`.(.(.(.(.(.`.^.^./.(.^.(.{.^.|.(.^.(.`.`.`..X'.'..X.X.X.X.X.XdX.X.X@X.X.X.X.X.X.X@X.X.X X.X|..X|..X.X|.@X.X'.@X.XdX.XdXdX'.dX XdX.X.X.X@X|..X|..X|.|..X.X.X.X.X'..X`..X'.|.|.@X.X.X.X.X.X.X.X.X.X.XzXdXdXdXdXdXdX.X.X.X.X.X.X.X.X|..X.X|..X@X.X.XdX.XzXzXdXdXzX.XdXdXdXdXdXdX.XdX.XdX.X.XdXdX.XdXzX.XdXzXdXdX.XzX@XzXdXcXdXcXxXxXcXcXcX.XcXzXzXzXzXzXdXdXzXdXzX.XdXdX.X X|._.(.(.~.T.T.T.U.U.L.L.L.L.U.L.D.L.D.U.U.D.L.L.U.U.L.L.S.S.H.G.S.A.A.Z.H.z.A.A.A.A.H.l.A.A.Z.D.S.S.D.S.S.H.S.S.A.S.D.G.D.A.G.A.A.G.H.H.S.H.G.G.S.S.G.H.S.S.D.A.S.A.S.D.G.A.D.G.A.A.D.D.h.G.l.A.A.A.S.h.A.h.h.h.h.A.h.l.h.h.A.A.h.D.h.A.H.z.S.h.A.h.A.h.l.h.h.k.h.z.g.g.a.g.f.f.a.f.f.k.k.k.l.h.h.l.H.z.A.A.A.A.A.A.D.S.H.S.H.S.U.H.S.H.H.H.H.H.S.S.A.S.A.A.A.A.A.A.A.A.h.h.h.h.g.z.a.g.k.f.f.f.k.z.k.z.z.z.d.g.g.a.g.g.k.g.g.h.A.g.l.h.h.A.z.A.S.S.G.D.S.S.S.S.S.S.A.S.D.z.A.A.S.l.A.H.l.F.D.A.D.A.S.D.S.S.S.L.D.L.H.S.H.H.S.U.L.S.L.U.L.L.U.U.L.U.U.U.L.L.U.U.U.U.T.U.L.L.U.U.L.U.U.L.U.L.L.L.U.A.L.L.H.H.A.L.U.H.A.D.S.L.H.S.H.S.L.L.L.L.L.L.L.H.K.H.S.L.U.U.L.Y.P.!.!.T.T.~.~.T.~.I.T.L.~.(.(.(./.(.(.~.(.(./.(.(.(._.^._.{.(.(.(.(./.(.(.(.(././.~.(.[.T.^.^.T.T.T.T.T.T.T.T.Y.P.Y.Y.U.U.T.T.Y.U.T.U.T.T.T.T.T.T.~./.T.T.~.T.~.~.~.~.T.T.~.[.T.T.~.[.~.T.U.T.T.T.~.T.T.~.T.Y.~.T.^.T.~.~./.T.T.T.~.(.T.T.T.T.~.T.T.T.T.T.T.T.T.T.T.Y.T.T.T.T.!.T.T.T.T.T.T.Y.L.U.P.Y.U.U.U.U.S.L.U.L.H.L.H.S.L.H.G.D.H.D.A.A.A.D.S.S.D.A.S.A.A.A.A.S.S.l.D.S.A.S.G.A.S.S.S.D.S.D.S.A.H.H.S.A.S.S.G.S.H.H.L.H.L.L.L.H.L.U.U.U.Y.T.P.T.T.T.~.T.~.~.T.T.T.[.T.~.~.T.K.~.T.!.~.~.~././.T./.~.~.T.^.P.T.R.(.[.^.~.~.[.^.~.~././././.(.(.(.(.(.`.|._.}.}.}.}.|.^.(.(.~.(.(.(.|.^._.|._.|.'.|.|..X.X|..X.X.X.X.X.XdX.X@X.X.XdX.X.X'..X.X'.|.}.|.|. X`.}._.|.|.|.|.|.|.|.|.", "D Z D D Z C Z C Z Z Z D Z D Z D H Z Z Z F Z Z Z Z Z Z Z Z D B D Z Z C G Z Z Z Z Z D Z Z D D D L D D H D D D D F D Z Z D Z B B D Z Z Z C Z Z Z C D D Z Z Z Z G C y $ o $ $ $ % % * * = y ; r : r y r ; = r r r r r r r r r r r r r r r r r r r r r 0 : r r r r r r r r r r r r r r r r r r r r r r r r r r r r : y * r * y : 0 r r r r r r r r r r r r r r r r ; r r r r r r r * y ; r = 0 % * $ $ % F._.{.~.[.{.^.(.^.E././.~.~././.(././.~.~.!.~.~.~.~.~.~.~.~.~.~.~.T.~.~.!./.~.~.~.~.~./.[./././.~.~.~.~.~.~.T.T.~.T.T.T.T.~.T.~.T.T.T.T.T.T.T.T.U.T.T.T.U.U.U.T.T.T.U.U.T.U.U.T.K.T.T.I.T.K.T.T.K.~.T.~.~.~.~.T.~.~.~.T.T.~.~.T.~.T.T.~.~.R.~.~.~.T.T.^.(.T.~.~././.~.~.^.!.~.~.T.(.(.T.(.T.~.~.T.T.[.~.T.T.T.~.T.T.T.T.~.[.[.[.(.(.!./.(.(.(.(.{._.{.|.|._.`.`._.(.{._.^.|.`._.|._.|. X X X.XdXdX.X.X.X.XdXdX.X'.dXdXdX'.zX.XzX.X.X.XdXdX@X.X.X'.'..XdX.X@XdXdXdXzXdXdXdXdXdX XzX.X.X'.@XdX'.zX.X.X X.X.X.X.X.X|..X.X X.X X X X.X.X.X.XdX.X.XdXdXdXdXdXdX.XdXdXdX@XdX.X.XdX.XdXzX.X'..X.X.XdX@XdX@X.XdXfXdXdXdXdXdX.XdXcXdX'.@XdXzXdXdXvX.XdX.XzX.XdXzXdXdX@XzXdXdXdXfXdXxXdXcXcXdXcXcXzXzXzXzXzXzXzXzXfX.X.XdXdX@X.X.X'.|.`.(.[.~.~.T.U.U.L.U.U.L.L.U.P.L.L.U.L.G.L.H.L.G.L.L.H.H.G.G.H.h.H.z.h.H.A.h.h.A.A.G.h.G.h.h.G.G.h.A.G.h.A.z.H.G.g.G.S.A.G.G.D.D.S.S.G.S.G.G.A.G.H.A.D.G.z.A.A.A.H.S.G.z.H.G.h.H.h.z.h.h.h.A.h.h.h.h.h.h.h.h.h.h.g.g.h.h.z.h.h.h.g.h.l.z.k.h.z.h.h.h.l.l.z.z.g.g.g.g.a.g.g.a.a.g.f.f.a.g.g.h.g.h.g.A.A.h.h.S.A.A.S.D.G.S.H.H.H.H.D.A.H.H.S.S.S.A.S.h.A.A.A.A.A.h.A.h.h.g.k.k.g.j.f.k.a.k.a.f.k.i.k.a.d.j.g.g.a.z.g.k.d.g.z.D.g.k.z.z.h.h.h.h.h.A.g.A.h.h.A.A.A.z.h.H.h.H.A.A.z.A.g.h.A.l.G.G.G.D.G.S.H.G.H.S.S.H.H.L.L.A.L.G.D.L.L.H.L.L.U.L.D.U.L.L.L.L.L.L.U.U.L.U.Y.U.U.H.H.U.L.L.L.L.G.L.U.H.L.G.H.H.S.D.H.H.A.H.H.H.L.G.L.L.L.A.G.G.G.G.D.S.S.U.L.L.L.L.P.P.P.P.T.T.T.T.T.T.U.~.~.T./.[./.(.!.(.(.`.`.`._.`.|.(._._._._._.|.(.`.(.`.(.(.(._.(.!.(.[.~.~.~.~.T.~.T.T.T.I.Y.P.L.U.U.U.U.Y.T.U.U.Y.U.T.T.T.T.T.T.~.T.^.[.T.~.T.[.~.T.~.(.~.~.~.T.L.L.U.U.T.T.Y.I.U.T.T.U.T.T.T.U.T.T.T.T.T.T.T.T.I.T.U.T.U.P.U.U.P.U.U.T.U.U.U.U.I.I.U.T.U.U.U.I.U.U.T.H.L.U.U.L.U.L.L.L.L.L.U.L.A.H.L.H.S.H.H.L.G.S.S.D.z.A.G.A.S.h.A.h.h.z.A.A.A.l.G.A.A.h.H.h.H.S.S.S.H.G.S.S.A.h.A.A.A.H.z.H.G.H.G.S.G.G.G.G.L.L.L.U.P.P.U.U.T.U.T.T.U.T.U.I.T.Y.U.T.T.T.T.T.~.T.(.~.~.T./.~.~./.T.~.T.[.T.T.T.~.!.!.~.~.Y.~.~.~././././.(.(.(.(.(.(._._._.|.}.|.(._.^.(.).(.(.^.(.).(.^.`.|.[.|.|.|. X.X.X.X.X.X.X.X'.'.dXdX X@X X.X|..X X X|._.`.|.|.|._.|.|._.|.|.|.|.|._._.", "Z Z B F Z Z Z Z B Z Z Z D Z Z Z Z Z Z G Z Z Z Z Z Z B D Z B Z Z Z Z Z C Z B D Z Z G Z Z Z Z G Z H D H Z Z F Z Z Z D Z Z Z D Z F C C Z D F V Z Z Z D Z Z Z F C D Z C % $ o o o $ & % % * * = : y r ; r 0 e r 0 r r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 e r r r r r r r r r * r r r r r r r r y * r r r : : y r r r r r r r r 0 e r r : r r r r r ; r r 0 r : r ; 0 % ; % % $ # % c.!.[.~.~.[././.T.(.^.(././.E././.!././.~./.~.~.~.^.~.~.~.~.~.~.~.T.~.T.(.[./.~.~./././././././././.E.(.~.~.~.~./.T.T.~./.T./.T.~.T.T.~.~.T.T.~.~.T.T.T.T.T.T.T.T.T.T.U.U.T.U.T.U.T.T.~.T.~.T.~.~.T.~.T.T.~.~.~.K.~.~.T.~.~.~.~.~.~.T.~.~.~.~.~.~.T.~.T.T.~.~.~.~.~.~./.!.!.!.F.[ _ ~ S ) S S / S S / ~ ~ S ~ ~ ~ ~ P ~ ! ! S / S ~ ~ / ~ ~ ~ ~ ~ / ! ! ~ / / S ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ ~ / ~ / ~ ~ / ~ / ~ ~ / ! ~ / ~ ~ ~ ! / ~ ~ ~ ~ ~ ~ / ! ~ ~ ~ / ! / ~ ~ ~ ! ~ ~ ! ! / ~ / ~ / ! ~ / ~ / / ~ ) / ~ ~ ~ ~ ~ ) / ~ ~ / ~ ! ~ ~ / / ~ ~ / Q Q S ~ ~ ~ S ! / Q / ~ ~ ~ / ~ ~ / ! / ~ ~ / / ~ / ~ / [ Q.dXdXdXzXzX.XdXdXdXdXzX.XvXdXdXdXvX'.zXzX.XdXdXdXdXdXdXcXdXzXcXdX@XzXzXzXzXzXzXzXzXzXzXzXzXdX.X].Q.[ / ) ~ ~ ~ ~ S ~ S ~ ~ ~ ~ ~ ! / J S ! ! P ! ~ ~ / ) / ~ ! ! / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ J S ~ ~ ) ~ ~ ~ ~ ! / ~ ~ ~ ~ ~ / ~ ~ ~ / ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ / ~ ~ ~ ~ ! ~ ~ ~ / ~ ~ ! ~ ~ ~ ~ ~ ~ / ~ ! ~ ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ ~ ~ ~ ~ _ ~ / ! ~ ~ / ~ ! / ~ ~ / ! ~ ~ ~ ! ! ! ~ / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / ~ / ~ ~ / ) _ b.Z.U.L.J.K.D.H.H.U.S.H.H.D.S.S.A.A.h.h.h.h.f.h.f.h.k.g.g.g.a.i.f.k.f.a.f.a.i.k.a.k.a.g.g.a.z.z.a.[ [ P S S / / ! ! S ^ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ! ! ! ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ! ~ ! ~ ! ! ! ~ ~ ~ / ~ ~ ! / ! ! ! S ~ ~ / u ~ ~ ~ ~ ! ! ~ ~ ! ~ ! ~ ~ ~ ~ ~ ! ! ~ ~ ~ ! ! S ~ ~ / ~ ~ ~ ~ ~ ~ ~ ~ ! ~ ~ ~ S ~ ~ ~ ~ / ~ ! ! ~ ~ ! ~ S ~ ! ! ! ! ~ ~ ~ ! ! ~ ~ / ~ ~ ~ ~ S ~ ~ ~ ~ ! ! ~ ~ ~ / ~ / ~ ! ! ~ ~ ! ! ~ ~ / ~ ~ ~ / [ [ !.].~.T.~.T.T.U.T.U.U.P.Y.P.U.L.U.L.P.U.U.L.U.T.U.T.T.T.T.T.T.T.T.T.T.T.~.T.~.I.~.T.U.T.[.T.].F.[ ) / / / / ~ ^ ~ ~ ! ~ ~ ~ ^ ~ ~ ~ ~ ~ ^ ~ ~ Q ~ ~ Q ~ ! ~ ! ! ! Q ~ ~ ~ ~ ! Q ~ Q ! ~ ~ ~ ! ~ ~ ~ ~ ^ ~ ~ ! ! ~ ! ! S ~ ! ! / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ! ~ ~ ~ ! ! ~ ! ! ~ ~ ! ~ S ~ ~ ~ ! ~ ~ ~ ~ ~ ~ ~ ~ ! ~ ~ ~ ! ! ~ ~ ~ ! Q ~ ~ ~ / ! S ~ S ! ! / ! ! ~ ~ ~ ~ ~ Q ~ ~ ~ S ' ~ ~ ) ~ ~ S S ~ ~ ! ^ S ~ ~ S ^ ) S S ! ! S [ b.F.Y.T.~.~.T.!./.~./././././.(.(.(._._.|.}.}.`.|.{.|.(./.(.(.(.(.{.(.`.(.`.|.|.|.|.'.|..X.X.X.X.X.X@X.X.X.X.X.X.X.X X.X.X'.|.`.`.|.|.}.}. X_._.|.|.|._.|._.|.", "Z D Z C Z C Z D Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z B C Z C D C Z Z B Z Z C Z Z Z Z C Z Z Z G Z Z Z G D D D D Z D Z D Z Z Z Z C Z Z Z Z B D C C A Z Z B D Z Z A Z A D G C Z u % o o $ $ $ % % ; ; ; e : : : r r 0 y r r r r r r r r r r r r e 0 r r r r r r r r r r r r r e r r r r r r r r y : : y r r r * r r r r r r r r r r r r r r r r r r r r r r r r r r r r r : 0 : ; y ; = * * % * & o u ].!.(.[.!.(./.(.(.(.(.^./.^.^.(././.!././././.~.~.!.~.~.~./.~.~.~.~.~.~.~./././././././.[.~./././././.~.~.~.(./.R./.~.~.T.~.~.T.~.~.T.~.~.~.T.[.R.~.T.T.T.T.T.T.T.T.T.T.T.T.I.T.Y.T.T.T.~.T.T.T.T.T.~.~.T.T.~.T.~.~.T.T.~.T.~.~.T.~.T.~.~.~.T.~.~.T.~.T.T.~.~.~.T.~.~.T.(.F._ S / ~ ! ~ ! ! ! Q Q ! ! Q Q Q Q ! Q Q Q / ! ! / Q Q ! ^ S ~ ! Q ! ! / ! S ! ! ! ! ! Q Q ~ ! ! ! ! ! ! Q ~ ! ! ~ ! ! ! Q ~ ! ! ! ! ! ! ! / ~ ! / ! ! ! ! Q ! ! ! ! ! ! ! / ! ! Q ! ! ! ! ~ ~ ! ! S ! ! ! ~ ~ Q ~ Q ! ! Q ~ ~ ! Q ~ ! ! Q ~ ~ ! ! ! ! ! ! ! ~ ! ! ! ! ! ! Q S ! ! ! S ! ! Q ! ! ! ! Q ! ! ! ! ! ! Q ! ! ! S ~ ! S ~ / / S ' ].dX.X@XdX'.dXzX.XzXzX.XdXdXdX.XxXzX@XdXdXdXzXzXzXzXcXcXcXzXzXcXzXzXzXzXzXzXzXzXdXdXdX].m.[ ' ! ! ! Q Q Q ! Q Q Q Q Q ~ ! Q Q Q Q ! ! ! S Q ^ / ~ ! ! ! ! ! ! ! Q Q ~ ~ ~ ~ ~ Q Q Q ! ~ Q ~ ^ ! Q ! Q ~ ! ! ! ! ! ! ! ! Q ! ~ ~ ! ! ! ! ! ! ! ~ ! ! Q ~ ~ Q Q ~ ! ! ! ! / ! ! ! ! ! ! ~ ~ ^ ~ ! Q Q ! ! Q ~ ~ ~ ! ! Q Q Q Q Q ! ! ! ! ! ! ! ! ~ ~ ! ! ~ ! ! ! Q ! ! ! ! ! ! ~ ! ! ! Q ! ! ! ~ ! ! Q ! ~ ~ ~ / ! S ! ~ ~ / _ [ [ Z.S.P.Z.D.H.H.H.S.S.S.S.S.h.h.z.k.z.k.k.k.k.k.g.d.f.f.i.a.i.d.a.a.a.a.a.a.a.a.z.a.z.D.T U / S S / ! Q Q Q ~ ~ ~ ! Q Q Q ! Q Q ! ! ~ ! ~ ! Q Q ~ ! ! ! ! ~ ~ ! ! Q ! ! ! ! ! ! S Q ! Q Q ~ ~ ~ ~ ! ! S ! ! ! ! ~ ! ! ! ~ ! ~ ! ~ ~ ! ~ ~ ! ! ~ ! ! ! ~ ~ ! S ! ~ ! ! ! ~ ~ S ~ ~ ~ ! ! S Q ! ! ! ! ! ! ! ~ ! ~ ~ ! ! S Q ! ! ~ ! ! S ! ! ~ ! Q ! S ! ! ^ ~ ^ ~ / ! ! ! ~ ! ! ! ! ~ ! ! ! ! ~ ~ ! ! ! ! ! ! ! ! ! Q Q ! S ! S / / Q _ F.[.T.Y.Y.U.U.U.L.U.L.L.Y.P.L.U.U.Y.L.U.L.U.U.P.T.T.T.T.T.T.T.T.[.~.T.T.T.~.~.T.T.T.F.[ S ! / / S ~ ! ^ Q ! ! ! Q Q Q S ! Q Q Q Q Q Q Q Q ! ! S ! ! Q S ~ ! ! Q S ^ ! Q ! ~ ! ! ! ~ ! ~ ! ~ ~ ! S Q ! ! ^ S ! ! ! / S / S ! ! ! ! ! ! S ! ~ ~ ! ! ~ ! ~ ! ! ! ! ! / ~ ~ ! S ! ! ! ~ ~ ! ! Q Q ! S S ! ! ! ! Q Q ! Q Q ~ S / ! ! ! ~ ! ! ~ ~ ~ ~ ! ! Q ^ ( ^ ~ Q S Q Q ! Q ! ! Q / ! ! ! Q Q Q Q Q Q Q ! ! Q Q Q Q Q Q ! / / / / _ F.~.P.~.T.~.~././././.(./.(._._._.^._.`.`.`.`.(.(.(.(.~.(.(.(.(.(.`._._.`.`.`.'..X.X'..X.X.X.X.X.X.X.X'.|..X.X.X|. X|.|.`.`.`.`._.|._._.|.|.|._.`._._._.", "Z C Z D Z Z F B F Z C Z Z Z Z Z Z Z Z Z C Z Z F C Z Z B Z C Z D Z C C Z C Z Z G Z Z F Z Z C D Z D D Z F D Z D Z Z Z F Z Z Z Z C C Z Z Z Z C Z C D C Z Z Z C C S C G G Z Z q $ o o $ $ % % % % * r e ; r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r r r y * 0 t y * r r r r r r r r r r r r r r r r r r r r r r r r 0 : r r r r r r : * r r e ; ; ; % % & o o # y F./.T.(.T.(.(./.(.(././.(.^././.(././././.(.(././.(.~.~.~.~.~.!.~.~.~././.(.(././././././.(././././.(././.(.~.~.~.~././.T.~.~.T.~.~.~.T./.~.T.T./.~.~.~.T.P.^.~.T.T.T.T.T.T.T.T.Y.U.U.T.T.T.T.T.T.~.T.T.T.T.~.~.T.~.T.T.~.~.T.T.~.~.T.~.~.~.T.XXXXT.~.~.T.T.~.T.T.~.!.~.~.(.F.` Q ~ / ! ! ~ ~ ! ! ! ! ! ~ ! ! ! ! ~ ~ ~ ~ ! ^ ! S ~ / ! S ~ ~ ~ S ! ~ ! u ! ! ! ! Q S ! ~ ! ! ! ! ! S ! ! ~ ~ ! ! ! S ! S ~ ~ Q Q ! ! ! S ^ ~ S ! ! Q ! ! ! ! ! S Q ^ Q ! S ~ Q ~ Q Q ! ! Q ! Q Q Q Q Q Q ~ ~ ^ Q ^ ! ! Q ~ ~ ~ ~ ~ ~ ! ! ~ ~ ! ~ ! ! ! S ~ ! Q ^ ! ~ Q ^ Q Q ! ! Q Q Q Q ! ! ! ! ! ~ ^ ! S ! ! ! ! Q ! ! Q Q ! ! ! S S S / [ ].dXdXfXcXdXdXzX@XzXvXdXcXdX.XxXzXzXdXdXzXdXzXzXzXdXdXzXzXzXdXdXzXzXcXzXzXcXzXzXdX].[ / / / Q / ! ~ ! ~ ! ! / ~ ! S ~ ~ ~ ! ~ ^ / ! / ! ~ ( / S ! S S ~ ! S ~ ! ~ S ~ ~ ! ~ ! Q ! ! ! Q Q S ! ~ ! S ~ S ! ~ ~ S ! Q Q ! Q S ~ ! ~ ^ ! ! ! Q ! ! ^ Q ^ Q Q Q ~ ! Q S ! ^ ~ S ^ Q ! ! ^ ! Q Q ! S ! Q Q ~ ~ S Q ~ ~ ~ ! ~ ! ~ ~ ~ ~ ~ Q Q Q S ! ~ ^ ~ Q S ! Q Q Q Q ! ! Q Q Q ! S ! ! ^ Q ! / Q Q ! ! ~ ~ ^ ^ ! ! ! Q ~ S / / ) ) Z.F.L.L.H.S.H.H.H.S.A.z.h.h.k.f.f.z.f.f.k.z.k.d.d.d.i.a.f.a.a.s.a.i.a.a.a.k.a.z.z.T [ S / / / S ! / Q ! ! ~ ~ ~ S Q ~ ! ! ! ! ^ S ! ~ S ~ ~ S ~ ~ ! ! ! ~ ! ! ! ! ! S ~ ! ! / S ! ~ ! ~ S ~ / ~ / ! ! ! ! ! ~ / ! ~ ! ~ ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ~ ! ! ! ! ! ! ! ! ! ~ ! ! Q Q ! ! Q Q ~ ! ! ! ! ~ ! ! / ~ / ! ! Q ~ ! ! ! ! ! ~ ! ! ~ ! ! ~ ! ~ ~ ~ ~ ! S ! S ~ ~ S ~ ~ ! S ~ ! ! ! S ! ! ! ! S ! ! Q ! S ! ! ~ ~ ! S / / / _ F.~.T.Y.U.T.U.U.P.Y.L.U.Y.L.L.L.L.U.P.L.U.T.T.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.Y.U.T.F._ / / ! S Q c ^ K ~ Q Q ~ ! ! ! ! Q ~ ! ! ! ^ ~ ~ ~ ~ ! ~ ! / ! ! ! ~ ! ! Q Q ! ! ! ! ~ ~ ~ ~ / S / ! ! ! ! ! Q Q ! ~ ! ! ! ~ S / / / ! ! ~ ! ! / ! ~ ! ~ ! ~ ! ~ ~ ~ ! ~ ~ ! S ! ~ ! ~ ~ ! ! ~ S ! ! ~ ~ ~ ! ! ! ~ ~ ! ~ ! ! ! ! ~ ~ ! S ~ ~ ~ ~ ~ ! ! ^ Q ! ! ~ ~ ^ ! ! ! Q ! ! / S ! ! ! S ~ ! S ~ ! S ! S Q S ! ! ~ ~ ~ S ^ Q S c ! S ^ / | n.!.[.~.~.T.~.~./././.(.(.(._.|.|._.`.|.(.{.|.^.(.(.(.(.(.(.(.`.`.|._.`.`._.|.|.|..X.X.X.X.X.X.X.X.X'..X X|..X.X{.|.|.|.|.`.`._.|.|._.(._._.(.`.(._.|.", "Z Z C Z Z C Z Z D B C Z Z C Z Z Z Z Z Z Z C Z C Z C Z Z C Z C Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z D D D D D Z Z G Z Z Z Z Z Z Z Z D B A B A C Z Z C F Z C Z Z C D D C C Z Z C C D A e $ $ o $ & & % % * ; ; ; = 0 r r r r r r r r q e r r r r r r r r r r r r r r r r r r r r r r r r r r r * r r r r r r r r r r r r r r r r e 0 r r r r r r r y r r r r r r r r r r : : ; % % $ $ o o % c.T.[././.~./.^.(.(./.`./.(.(.(.(./././././././.(././.!.(.~.~.~.~.~.~./.~././.~./././.(.^.(./.^.^.(./.!.(././././.^.^./.~.~.R.~.T.[.T.~.T.T.~.~.~.[./.~.~./.~.[.~.T.T.T.T.~.T.T.~.T.!.T.T.T.~.~.T.T.T.T.T.T.T.T.~.~.T.T.~.T.T.T.T.~.T.~.~.T.~.T./.E.T.~.T.T.~.T.T.~.T.~.~.~.[.F._ / / / { pXMXDXDXZXZXZXZXZXZXZXHXCXCXZXZXZXHXZXZXZXZXZXZXZXVXFXZXHXZXZXZXHXZXCXZXAXZXZXZXZXZXCXFXVXCXZXAXCXCXCXZXZXCXZXZXCXCXZXSXZXCXZXSXFXSXZXZXCXSXZXZXCXSXZXZXZXFXZXZXCXSXCXCXCXSXZXCXSXZXZXZXZXZXZXZXCXZXZXZXZXSXSXZXZXZXCXZXCXCXCXCXCXAXCXFXCXCXCXCXCXCXSXCXZXSXVXSXAXSXDXZXZXZXZXZXZXZXZXZXZXSXCXSXZXZXHXZXZXZXZXCXZXSXDXHXCXAXBXhX` / Q Q [ hXdXdXdXdXzXzXdXdXcXdXdXcXxXdXzX'.dXdXdXzXcXzXdXcXcXdXzXzXdXdXzXdXzX@XdXnXzXhX].[ } / { ].fXZXZXFXZXZXZXZXZXHXCXZXCXVXCXHXCXZXZXZXZXZXVXAXZXZXCXZXZXZXHXZXZXZXZXZXAXCXCXVXZXCXVXZXDXFXVXVXZXCXCXFXCXCXCXCXZXCXZXHXCXSXSXFXZXSXZXZXSXZXZXSXCXZXZXCXVXSXAXAXZXZXZXCXZXZXZXCXCXZXCXZXZXFXZXZXZXZXZXZXZXSXAXAXZXZXCXCXCXCXCXCXCXCXZXCXCXZXCXZXZXSXZXZXCXZXZXSXCXBXCXZXZXZXZXZXZXZXZXSXZXZXAXSXZXCXSXZXHXZXZXZXCXZXZXAXSXBXhX` ) / [ Z.Y.D.S.D.A.H.S.S.A.A.h.g.z.f.f.f.f.f.z.i.i.i.i.f.a.a.i.i.i.i.a.a.a.a.k.k.s.k.e.I ~ ~ ~ { aXfXZXZXCXCXSXZXFXCXCXFXZXZXCXHXVXCXZXHXCXFXCXCXZXCXCXZXCXCXCXCXHXCXZXCXCXVXZXCXZXZXCXCXCXCXFXCXAXCXZXZXCXVXCXVXVXZXZXCXVXCXVXVXCXVXCXFXZXZXZXVXCXZXVXCXVXFXHXZXZXZXFXHXZXCXFXCXCXVXCXVXZXZXCXCXCXAXZXCXCXCXCXVXCXAXAXCXVXCXCXFXZXHXVXZXCXZXZXZXCXZXCXZXZXZXFXHXZXZXZXHXZXZXDXZXZXCXCXZXCXCXFXAXCXCXZXCXZXCXHXZXDXFXZXCXCXCXBXhX[ / ! ! _ Z.P.Y.U.P.P.P.P.L.L.P.U.L.Y.U.L.U.L.K.U.P.T.U.U.T.T.T.P.T.Y.U.T.T.T.U.T.T.T.F.[ S ! / } ].fXZXZXZXZXCXVXCXAXHXZXCXZXZXZXZXCXHXZXVXVXFXZXCXZXCXZXHXVXVXCXVXVXZXVXZXCXZXCXCXZXZXZXCXCXVXZXCXCXFXZXCXCXHXZXHXZXCXCXZXZXCXCXCXCXVXZXCXAXZXCXCXVXCXCXCXCXCXCXCXCXCXCXCXAXCXCXCXCXCXFXCXCXCXCXCXZXCXCXVXCXVXFXCXZXZXZXCXAXAXCXCXCXCXCXAXZXCXVXCXCXHXCXCXSXVXCXVXCXVXZXHXCXFXZXHXVXVXHXCXZXZXZXZXZXZXZXHXZXZXZXZXZXCXZXZXZXCXhXm./ / / _ F.~.~.T.~.~.~./././.^.(.^.`._._._.|.`.|.(.(._.(.(./.(.(.(.(.^.`.{.|.`.@X`.`.|..X|..X.X.X.X.X X|.'..X|..X X|.|.|.|.|.|.`.|.`.|._.{.|.|._.|._.`.`.`.`.", "B Z Z Z Z Z C A C Z Z C A Z C F C Z Z C C Z C Z Z C F B Z C Z C C Z C C C Z C Z Z Z Z Z Z G D Z D D D Z F Z Z Z Z Z Z F C Z Z Z F Z C Z C Z Z A C Z Z V G D B G Z C A Z Z Z Z D Z 0 $ o $ $ $ % % * % * = r r r r 0 r r r r r : r r r r r r r r r r r r r r r r r r r r r r r r r r r r * r r r r r r r r y : r r r r r r r r r r r r r r r r r r r r r r 0 0 * % % $ $ $ % c.~.^.^.~.(.^.~.`.^.[.).(.(./.(.!.{./.(././.(.(.(./././././.Y.(.(.~.!./.~.~.^./.~./././.(.(.(.(.(.(.[.)./.(.)./.(.T.(././.~./.~.~.T.~.~.~.~.~.!.~.~.~.~.~./.~./.~.^.~.~.~.~.~.~.~.~.T.T.T.T.T.T.T.T.T.~.~.T.T.T.~.~.K.T.~.~.T.T.~.T.T.(.T.T.~.T.T.~.T.T.T.T.T.~.T.~.~.T.[.~.~.Y.T._ ! ~ / n.fXSXZXAXAXFXVXZXVXCXHXZXZXSXZXZXZXZXZXVXVXFXCXHXZXVXAXZXDXZXZXDXDXZXZXDXDXZXDXFXFXHXZXFXDXZXZXDXZXZXGXFXHXZXZXZXZXZXZXZXFXZXVXAXAXFXAXAXDXAXAXZXAXZXFXVXZXDXHXHXDXDXDXDXDXFXHXAXZXHXFXFXVXZXVXZXZXZXZXZXDXZXZXFXZXFXZXZXDXZXZXAXFXVXFXFXZXZXFXDXDXDXDXDXHXDXZXDXFXFXFXHXDXZXZXZXHXZXZXVXZXAXZXZXZXVXZXZXZXSXGXZXZXZXGXZXDXVXAXAXFXHXpX/ / u | '.dXdX@XzXzXzXzXdXcXdXdX.XxXzXzXdXxXzXzXzXzXdXcXcXzXzXzXdXxXdXxXdXdXzX.X'.].b.] _ m.mXZXZXVXHXFXHXFXZXCXZXZXVXZXZXZXZXZXZXZXCXVXVXFXVXSXAXZXDXZXDXDXDXDXZXZXHXZXFXDXDXZXDXZXZXDXDXZXFXVXFXHXDXDXDXDXDXZXZXZXZXDXDXZXFXVXZXVXAXZXZXZXZXAXFXZXAXFXVXAXAXFXAXZXAXFXVXFXVXHXZXZXZXZXCXHXVXFXFXZXZXZXFXZXFXFXZXDXVXZXDXDXDXDXDXDXDXDXZXZXZXZXZXVXZXZXZXDXZXFXZXZXVXZXZXVXVXVXVXZXZXZXVXZXAXAXAXZXAXZXZXDXDXDXDXZXZXSXFXFXZXBXm./ ) / [ Y.Y.A.H.A.A.A.A.g.g.f.f.f.i.f.i.i.a.d.i.d.d.i.a.a.i.i.a.a.i.a.a.a.a.a.z.T P ~ / / n.fXCXVXCXFXZXDXFXFXZXFXFXDXZXFXZXZXZXZXDXZXZXDXDXZXDXDXDXDXDXZXGXDXDXZXDXDXZXFXZXZXFXZXAXZXGXZXGXAXZXZXZXZXVXFXZXZXZXZXZXZXAXAXGXFXZXFXZXZXFXZXZXZXZXZXZXZXZXZXZXDXDXZXZXZXZXZXZXFXFXFXFXFXZXDXZXDXZXAXDXZXZXZXZXAXZXAXDXDXZXFXVXFXDXCXFXZXZXZXZXFXVXVXZXVXHXZXVXFXZXHXFXHXZXZXFXHXFXZXVXVXFXZXFXSXDXDXZXZXDXDXDXDXDXZXZXFXZXAXFXAXBXm./ / ! _ K.T.U.U.P.P.P.K.P.P.L.L.L.L.L.I.L.Y.P.P.U.U.T.U.T.U.T.P.T.T.T.U.T.T.I.U.F.[ S / ! { hXHXVXCXFXDXZXZXVXVXZXFXFXZXAXAXZXZXSXZXZXZXZXZXZXZXZXGXZXZXFXVXZXFXZXZXAXAXAXAXZXVXZXZXAXAXAXFXZXZXAXAXZXFXFXFXDXZXFXFXZXFXZXZXZXVXZXZXZXFXDXAXAXZXZXFXVXZXFXFXZXGXZXDXGXZXDXZXAXDXDXDXDXDXDXDXZXZXZXZXZXZXZXZXDXZXZXZXZXZXGXFXAXAXZXDXZXDXZXZXFXVXFXFXFXVXFXFXAXAXFXFXZXZXAXZXDXZXZXZXZXZXZXVXVXFXZXZXZXDXAXVXVXVXZXAXVXZXZXZXBXBXQ./ ~ ) ` Z.U.~.~.T.~.~./././.`.(.^.|.(._.`._.^.|.^.(.(.(././.^.(.(.(.^.|._.`.`.`.`.|..X.X'..X|.|..X.X.X.X.X.X X|.|.|. X|.|.|.|.`.`._._.`._.^.{.(.(.(.(.(.(.", "D D B D Z C Z B C Z A C Z C Z C Z Z C Z C Z C Z B Z C Z Z Z C C Z Z C Z Z Z Z Z Z Z Z Z Z Z Z Z D Z F Z B C F Z Z Z Z C Z Z F Z C Z F C C D C D Z C D D C G Z C D B Z Z Z Z Z Z Z Z Z y $ o $ $ $ % % % % ; ; ; e y y : e e r r r = : : r r r ; 0 e r ; r r r * r r r r r = r r r = r : r r = r : r r : r r r 0 r t * 0 0 0 ; r y ; r r 0 : r : r ; * % % % $ $ o o # y n.^.T.[.~././././.(.(.(.(.(.(.(.(.(.(.^.(.(.(.(.(.(.(.(.(./.(././././.~./././././.(.[.^.^.(.(.(.(.(.^.(.(.(.(.(.(.(.(./././.~././.~.R.^.T.~.!.~.~./.~.~.~.~.~.~.(./.~././.!.~.~.~.~.~.T.T.~.T.~.T.T.~.T.T.T.~.T.T.T.T.T.T.T.~.XXXXT.T.~.T.T.T.(.T.T./.~.T.~.T.~.T.~.T.~.~.T.~.~.T.(.Y ! ! ~ m.fXVXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXHXDXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXDXFXGXFXFXFXFXFXFXFXFXFXFXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXAXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXZXCXm.' Q Q _ hXzX'.dXdXfXdXdXvXmXcXzXzXxX.XxX.XzX.XzXzXdXdXdXdXxX.XzXzXzXxXxX.XzXzX'.` _ _ m.BXZXFXZXFXFXFXFXFXFXFXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXGXDXDXFXZXVXHXFXFXFXFXFXFXVXGXVXGXDXDXFXZXFXFXFXFXFXFXFXFXFXFXFXFXZXZXFXFXFXFXFXFXGXVXAXFXFXFXFXFXFXFXFXFXAXAXGXVXZXZXFXFXFXFXFXFXVXGXVXFXFXFXFXFXFXFXFXFXVXVXVXVXDXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXZXDXm./ I _ b.U.A.h.A.A.A.j.z.g.d.a.a.a.i.f.i.i.a.a.i.a.a.a.t.i.a.a.i.i.i.a.a.a.i.z.| S ~ Q m.fXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXZXFXFXFXFXFXFXFXFXFXAXZXFXFXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXZXAXFXFXFXFXFXFXVXVXVXGXAXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXZXDXZXZXDXAXFXFXFXFXFXFXFXZXFXFXZXFXFXFXZXFXFXFXZXDXZXDXAXGXZXDXFXFXFXFXDXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXAXCXQ./ / / | n.Y.L.T.U.Y.H.Y.L.Y.L.U.L.L.U.L.U.P.P.P.U.P.P.P.Y.P.P.T.T.T.U.U.T.L.].) ! ~ ~ m.JXZXGXZXZXFXFXFXFXFXFXFXFXFXFXFXFXZXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXGXAXAXAXDXAXFXFXFXFXFXFXAXFXVXVXZXZXFXFXFXFXFXFXDXAXAXAXDXDXFXFXFXFXFXSXGXVXVXVXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXZXFXFXFXFXAXFXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXGXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXHX]._ / / [ P.T.T.T.~.~.~.~.(.(.(.(._._.|. X|._.(.^.`.(.(./././.(.(.(.`.(._._. X_. X|.|..X.X|.@X`._.|.|.'.|. X|. X.X X{. X X_.|.|.|.}.}.}.[.`.(.^.(.(.(.(.`.", "Z F Z Z Z Z D C C Z C Z Z A C A C C Z C A C Z A Z C A C C C C Z Z C Z C C Z Z B F Z C Z Z Z Z Z D D D D Z G Z Z C Z Z Z Z C C F Z C C D C C C C Z C C C C C C B Z Z C Z Z Z Z Z Z Z Z Z H u % o o o o o , $ % % % * = = * y r r r r q : : e r r 0 ; 0 ; ; r r r r r r 0 : r r : r r r : r : r r e r r : y : r r r ; ; ; : = ; e ; r ; ; ; ; > : : * * * $ % $ $ o # o u F.T.(.(.~./.^././././.(.(.^.`.(.^./.(.(.(.^.(.(.(.(.(.(.(.(.(.(./././././.~./.~./././././.(.(.(.(.(.(.(.(.(.^.(.(.(.(.^.^./.(./././.~.~.~.~.~.~.~./.~./.[.~./././.~.~.~.~././.^.~.~.~.~.~.~.~.T.~.T.~.~.T.T.T.~.T.~.T.T.T.T.~.T.T.U.XXT.~.T.~.~.T.T.T.~.T.T.~.T.~.T.~.~.T.~.~.T.~.T.~.Y.) ! ~ m.fXFXZXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXZXFXFXFXFXFXAXFXFXZXFXVXFXFXFXFXFXFXFXFXFXFXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXZXZXHXm./ Q ~ [ hXzXdXcXcXcXdXdXdXdXzXzXzX.X.XzX.XxXzXzXdX@XxXdXxXdX.XxX'.vX.XxXdX|.} _ / } fXDXDXVXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXVXDXDXFXDXVXVXFXFXFXFXFXFXVXVXVXVXDXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXFXFXFXFXFXFXVXVXAXFXFXFXFXFXFXFXFXFXAXGXVXVXFXZXFXFXFXFXFXFXVXVXFXFXFXFXFXFXFXFXFXFXGXVXGXVXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXGXVXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXZXZXAXFXFXFXFXDXCXQ./ / ) [ S.A.A.A.j.g.a.d.d.a.a.i.i.i.a.i.a.i.a.i.u.a.i.i.a.a.i.i.i.a.a.a.k.i.H / / M.fXZXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXZXFXFXDXFXFXFXFXFXFXFXAXFXFXFXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXAXZXFXFXFXFXFXFXSXGXVXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXDXFXDXDXDXZXAXZXFXFXFXFXFXFXZXFXDXFXFXFXFXFXDXDXFXFXZXZXAXAXDXAXZXAXFXFXFXFXDXDXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXFXFXFXFXFXZXAXAXBXm.' ~ S ` G.L.L.L.Y.L.L.U.K.L.L.L.L.L.L.U.U.P.P.P.Y.U.P.P.Y.Y.T.Y.Y.U.T.Y.L.Z./ ! ~ } hXFXDXDXZXFXZXZXFXFXFXFXFXFXFXFXFXFXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXSXAXDXAXGXFXFXFXFXFXFXAXVXVXVXZXZXFXFXFXFXFXFXDXDXDXAXDXAXFXFXFXFXFXGXGXVXVXVXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXFXFXFXFXAXFXFXFXFXFXFXFXFXFXAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXDXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXCXQ._ / _ F.Y.T.~.~.~.~.^.(.(.(._._._.{._.^.|.|.`.^.(./.(./.(.(.(.(.`._._.|._.|.|.|..X.X|.|..X|.'.|.|.|.|..X|. X|. X|. X|._.|.}.|.}.}._.{.(.`.(.(.(.(.(.(.", "Z Z C Z Z Z Z C A C Z C C C Z Z C A C Z Z Z Z C C C Z Z B Z A Z C Z B Z C Z C Z Z B Z Z Z Z B D D Z Z Z F Z F Z Z Z Z C B Z C C C Z C C C D C D C C C Z C C C C C Z C C B F Z Z Z Z Z Z Z Z C C * $ o $ $ $ $ $ & % % % * * 0 r 0 : ; ; r 0 0 ; r r 0 r r r : : r * : r r : y : r r : ; r 0 r r r y ; ; r r r r 0 r y y e ; * 0 r ; r * * * % $ $ $ o o > Y ~.(.K.{.{.T.~././././.(.(.(.(.(.(.(.(.(.(.(.(.(.(.].{.(.(.(.(.(.(.(./././.!.(./.(./.!.(./.(.(.(.(.(.(._.(.[._.(.(.`.(.(.(./.^.^.^././././././././.~./././././.~.~./.(.^./././././.~.^.!.~.~.~.~.!.~.T.~.T.T.~.T.~.T.~.T.T.~.T.~.T.T.T.U.XXT.T.~.~.T.T.~.~.T.~.~.T.T.~.~.T.T.~.~.~.~.[.[.(.F.~ / { hXFXZXZXAXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHXFXAXDXFXFXFXFXFXFXFXFXFXSXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXFXFXFXFXFXFXFXGXAXFXFXFXFXFXFXFXFXFXGXVXGXFXFXFXFXFXFXFXFXFXFXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXFXFXFXFXFXFXFXFXFXFXSXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXZXFXFXFXFXHXfX[ / ~ ^ zXdXdXdXnXdXcXcXdXdXzXzX.XxXzX.X.XzXzXdXzXzX@XzXdX.XzX.X.XxXxX.XzX].` _ [ hXFXAXZXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXFXFXFXFXFXFXFXFXFXFXVXVXFXFXFXFXVXGXVXVXFXFXFXFXGXVXVXVXFXFXFXFXFXFXAXAXFXFXFXFXFXFXVXGXFXFXFXFXFXFXFXFXGXVXVXGXFXFXFXFXFXFXFXFXFXFXVXVXFXFXFXFXFXFXFXFXVXVXVXVXFXFXFXFXFXFXFXFXVXVXVXVXFXFXFXFXZXFXFXFXDXHXGXGXFXFXFXFXFXFXFXFXVXVXVXVXGXFXFXFXSXDXDXDXFXFXFXFXFXFXFXFXFXZXFXAXFXFXFXFXDXDXfX{ / H L Z.Z.Z.j.f.a.g.d.i.a.a.a.a.a.i.a.a.a.i.i.a.u.i.i.i.i.i.i.a.a.a.d.a.T / S [ hXZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXZXFXFXFXFXFXZXFXVXFXAXDXAXFXAXDXZXFXFXFXFXFXFXAXAXAXFXFXFXFXFXFXFXSXGXGXSXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXFXFXZXFXHXZXFXFXFXFXFXFXFXDXDXFXDXZXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXDXDXZXCXFXFXAXFXFXFXDXDXFXZXAXAXFXFXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXFXFXFXFXZXVXZXFXfX} ~ ~ S K.K.U.L.L.L.U.L.L.U.L.Y.U.K.K.L.L.L.U.Y.L.U.U.Y.U.L.L.U.U.U.U.U.L.) ~ ! _ hXDXFXFXFXZXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXFXFXFXFXFXVXGXFXFXFXFXFXFXFXFXFXFXSXSXAXFXFXFXFXFXFXFXAXFXZXVXFXFXFXFXFXFXFXFXDXDXDXGXDXFXFXFXFXFXVXVXVXVXSXSXFXFXFXFXFXFXFXFXFXFXDXHXFXFXFXFXFXFXFXFXSXGXSXGXFXFXFXFXFXFXFXGXFXFXAXDXAXFXFXZXFXFXFXFXVXGXSXGXFXFXFXFXFXFXDXDXAXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXHXDXAXAXBX} / | b.Y.T.T.~.~.~.(.(.].(.(._.|.`.`.|.{.`.(.(.(./././.(.(.(.(.(._._._.|.|.'.|..X|..X|.|. X|._. X|.|. X X|.|. X X X X|. X_.|._._.(.(.(.(.(.(.(.(.(.(.", "Z D D C Z Z Z C Z C C C C Z B C C C C C C C C Z C C C C Z Z C C D C Z D Z Z Z Z Z D D B Z Z Z Z Z Z C D Z Z Z Z C Z Z Z D C Z C C C C C C C C C C Z C C C D C D Z A Z Z C D C Z A Z H Z Z C C Z C V u % o $ o $ $ $ % % % % : : 0 ; ; 0 ; > r ; r r e : r r y = : q : r : * r y * y r r r r r ; : e r 0 r 0 ; r r = ; * * = * % % & $ $ o o # # o K Z.U.T.(.R.T.T.T.{.[././.(.(.(.).(.(.(._.(.^.(.(.(.(.(.(.(.(.(.(.^.(.(.(.^.(.{.(././.(././.(./.(.(.(.(.`._.(._._._._.`.(.).{.(.(.(.(.(./.(./././././././././././.[././.~./.(.~././.[./././.~.(.(.~.~.(.T.~.~.~.~.~.T.T.~.T.T.~.T.T.~.T.~.[.T.E.U.~.T.T.T.~.~.~.T.~.~.T.T.~.T.T.~.~.T.T.T.~.T.~.[.` ! ^ Q.BXVXHXAXAXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXFXFXFXFXFXFXFXFXFXFXVXVXAXDXFXFXFXFXFXFXFXFXFXSXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXGXFXFXFXFXFXFXFXFXFXFXHXSXAXFXFXFXFXFXFXFXVXVXVXHXFXFXFXFXFXFXFXFXFXFXGXSXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXGXFXFXFXFXFXFXFXFXFXFXSXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHXZXhX/ Q u zX'.dXdXcXdXcXvXdXcXzXzXzXzXxXzX.XzX.XzXdXzX.XzX.XzX.XzXzX.X.XxX.Xn./ ~ m.BXVXZXAXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXVXVXIXFXFXFXFXFXFXFXFXFXFXVXGXFXFXFXFXVXVXGXGXFXFXFXFXVXVXVXGXFXFXFXFXFXFXFXSXFXFXFXFXFXFXFXVXFXFXFXFXFXFXFXFXVXVXVXGXFXFXFXFXFXFXFXFXFXFXVXGXFXFXFXFXFXFXFXFXGXSXGXIXFXFXFXFXFXFXVXGXVXHXGXGXFXFXFXFXFXFXFXFXDXDXDXGXFXFXFXFXFXFXFXFXGXVXHXGXVXFXFXFXDXDXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXCXCXhX/ / S Z.j.j.d.j.g.i.f.i.a.a.a.a.a.a.a.i.i.i.i.i.i.a.a.i.i.i.i.i.i.a.i.i.T / / Q.BXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXZXFXFXFXFXFXAXZXHXFXZXAXGXFXFXDXFXFXFXFXFXFXAXAXGXFXFXFXFXFXFXFXFXGXSXSXSXFXFXFXFXFXFXDXFXFXFXDXFXFXFXFXFXFXFXFXFXDXZXFXZXFXFXFXFXFXFXFXFXFXFXDXGXFXFXFXFXFXFXFXFXFXVXFXVXFXFXFXFXFXFXFXFXDXDXZXCXFXFXFXFXFXFXFXSXFXZXGXZXSXGXSXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXZXFXDXDXVXAXAXZXhXS ~ ~ n.S.S.U.H.L.L.L.L.L.L.L.L.J.Y.L.L.U.U.L.Y.U.U.L.K.L.U.U.U.U.U.U.L.S ^ ^ m.fXHXZXZXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXVXVXSXVXVXFXFXFXFXFXFXFXVXVXGXGXFXFXFXFXFXFXFXFXFXAXBXSXFXFXFXFXFXFXFXFXDXDXDXGXSXDXFXFXFXFXVXGXVXVXGXGXFXFXFXFXFXFXFXFXDXZXZXHXFXFXFXFXFXFXFXFXVXSXVXGXFXFXFXFXFXFXFXSXFXFXFXAXVXZXFXZXZXFXFXFXVXSXSXGXFXFXFXFXFXFXZXZXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXZXAXDXSXfX_ / [ H.Y.T.~.~.~.~.!.(.(.(.(.(.(.`.`.|.(.^.`.(./.(./././.(.(./._._.|._.|.|.|.|.|._.|.|.|..X@X|.|.|.|.|.|. X|.|.|. X|._.|._._.(.{.(.(.(.(.(.(.`.(.!.", "Z Z Z Z Z Z Z V C B C Z Z C C C C C C C C C C C Z C C C C C Z C C Z C C Z C Z D Z Z C Z Z Z Z Z Z C D F C Z Z Z Z C Z A Z C C C C C C C C C Z C C G C C D C C B C C B D C Z C Z Z Z C C Z C D C D Z Z Z A u % o o o o o $ $ $ % % % % % % : : : : : ; * * ; r : r r : r r : e e = > r ; ; 0 = ; * ; ; % * * % * % % % % $ , $ $ o o o # $ u n.Y.T.T.T.(.!.R./._.T./.!./.(./.(.(.(.(.(._.^._.(.`.`.|.(.(.^.`.(.(.(.(.(.(.(.(.(.^.(.^.(.(.(.(.(.(.(.(.^.(.(.`.`.}.}._.}._._._._.(.(.^.(.(.(./.(.(.^././././.(./.^.(././.!././.]././././././././.(./././.~./.~.~.~.~.T.~.~.T.T.~.T.~.~.T.~.~.T.~.~.T.~.~.~.~.~.~.~.~.~.XXT.T.~.~.T.~.T.~.T.T./.T.[.~._ ! S fXHXHXFXZXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXKXKXKXKXKXKXKXKXaXeXaXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXsXKXKXKXKXKX7XhXoX7XhXO.oXsXKXKXKXKXKXKXKXKXKXaXKXKXKXKXKXKXKXKXKXKXKXKXaXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXsXKXKXKXKXKXKXKXKXKXKXKXKXKXKXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXZXVXVXfX} Q Q Q.dXdXdXzXcXxXdXzXzXcXzXzXdXzX.XzX.X.XzX.XzXdXdXdXdX.XzXzXzXdXdXdX[ ! ^ fXHXVXFXFXZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXVXo.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.O.o.o.o.o.o.o.o.o.o.o.O.o.O.O.o.o...o.O.o.o.o.o.o.o.o.o.o.o.O.o.o.o.o.o.O.o.o.o.o.O.o.o.o.o.o.o.o.O.O.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.+.o.o.o.o.o.o.o.o.o.o.O.o.o.o.X.o.o.o.o.o.o.o.o.o.o.O.hXZXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXDXZXAXBX' / ! b.j.j.i.j.i.i.i.a.a.a.a.a.a.a.a.a.i.i.i.a.i.i.a.i.i.i.i.i.f.i.i.i.I Q S fXFXHXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXeXeX8.eXqXeXeXeXqXkXeXqXeXeXeXeXKXKXKXpX7XhXoXX.O.' b v :XKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXeX;XKXKXKXKXKXKXKXKXKXKXKXKXsXc v n sXl v b b eXgXyXuXXtXyXXuX2X.,.,.,.>.,.,.>.-.>.>.,.,.,.;.5.2XyX} W | | W W v iXyX-XtXqX5.9X9X5.qX>X1X>X,X,XtX,X1X1X2X1XyX1X;Xb 1X1X1X1X1X1X2X2X2X>X2X4X:Xz p kXn a iXuX*XeXsX0X5XeXsX0X5X;XsX0XtX9X;Xv :.,.>.,.,.>.>.GXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXZXFXHXFXBX' Q ! e.Z.S.K.S.U.S.Y.L.L.L.U.L.U.L.L.L.L.U.P.L.U.P.P.K.R.L.U.L.L.L.U.Z./ Q ' fXFXFXZXGXFXVXZXFXFXZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXyXX2X.:.>X1X0X,.,.,.>.-.,.:.8XO.O.X.X.o.o.0X,.,.-.,.,.,.;.,.:.yXwX,.tX3XyX.6X....O. .X.O.O...eX;.,.,.wX4XtX:.,.,.0X2X:.,.0XyX:.>.0X4X1X2X3XqX-.,.,.,.,.>.,.9XuX,X1X1X0XwX5X0X;.,.SXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXZXZXVXDXDXS / I F.F.Y.T.~.~.~.(.!./.(.(.(.`.(.|.`.{.|.(././././././.(.(.^.^.`.|.|.|._.|.|._.|.|.|.|.|.|.|.|.|.|._.}.}.|.|.|.|.}.|._._._.(.(.(.(.{.(.(.(.(.(.^.", "Z Z Z F Z V C Z Z C C C C C C A C C B C Z B B C C C C C C Z C Z Z C C C C Z D Z C V Z Z C Z C Z Z Z Z Z Z Z Z Z Z Z Z Z C C C C C C C F C C D C B D C C C Z C C C C A C B Z C C C Z C Z Z D Z Z D C Z D L Z Z D Z H Z A > % o # o o o o $ $ $ $ % $ $ $ & $ $ % $ $ $ $ $ $ $ $ & $ $ $ & $ o o o o # o q b.T.U.XXT.XXY.~.~.T.T.!.~.~./.T.T./././././.(.(.^.^.(.|.(._.(.|.|._._.|._.(.(._.`.`.(.(.^.(.(.(.(.^.(.(.^.(.^.`.(.`._._._._._._._._.}.|._.|._._.`.`.(.(.^.^.|.(.).{.(.(.(.(.(././.(././.!./.(./.(./.).^.(.(./.(./././././././.T.~.~.~.T.(.R.XXXXT.~.~.~.~.~.~.T.T.~.~.T.~.~.~.~.~.~.XXT.~.~.~.~.~.~.T.~.T.T.~.T.~.T.! S ~ DXFXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX3X.,.>.5.1XyX,X2XwX:.wX3X,X0XqX0X0X0X0X0X0X3X1X5.>.5.,X,XyX,X,X:XyX,X,X,X,XyX.>.>.,.4.4X4.-.0X2X2XwX5.5.9X<.>.>.>.>.>.<.4X5.-.:.,.-.-.-.-.,.>.-.-.-.-.,.,.,..-.>.>.>.wX2X,X,X,X2X,XqX5.5.6.qXqX;X;XqX5.qXqX5.5.9X>X1XuXqX9X-Xz p -X:Xp *X2X*X0XsX;X5X0XsX-X5X0XsX;X>X:.2.v <.>.-.,.,.-.-.SXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXHXZXDXDX[ Q Q T Z.F.L.U.U.U.L.L.L.L.U.L.L.U.L.Y.U.P.P.P.P.P.K.L.L.L.U.L.L.L.U.F.! ~ ' MXFXHXFXZXZXFXFXFXFXZXVXFXFXFXFXFXFXFXFXFXFXFXFXAXyX3X,XyXwXuXtXyXwX:.,.<.v :XyXtXtXwXtX1X4.>.-.,.:.1X5.>.-.,.0X4X4X1X4.,.>.-.-.-.0X8X..X.X.X.X.8XqX;.-.<.wXsXsX6X6X8X6XqX9.0X1X1XwX:.yX0X,.:Xo.....X.X.o.X.O.eX,.;.-.4.qXyX2X0X,.0XuXtXtXyX5.,.,.9.9XqX,X,X,.-.,.;.:.;.;.>.<.>X1XwX5.,.5.1X:.-.>.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXFXFXZXDX~ / / n.Z.K.T.T.T.~././.(.(.(.(.{.`.(.(.^.`.(./././././.(./.(.(.(.(.{._.|._._.|._.|.|.|.|.|.|..X|.|.}.}._. X|.|._.|.|.}.|._._._._.(.(./.(.(.(.(.^.~.", "Z Z Z Z Z Z Z C C C Z C Z C C C C C C C C C C C C C C C C C C C C B Z G C C C C C G D B G C D D B Z Z Z C Z C Z D Z C B Z Z Z Z C Z C G C D C C C C D C D C Z C F Z C F Z C Z C Z C C Z Z C B Z Z Z Z Z Z Z D S D Z Z A Z Z Z D : : $ o o o o o o o $ o o # o t Z [ ].~.T.T.T.R.U.U.U.~.~.P.!.T.[./.(.Y./.(.~.(.!././.(.(.(.|.(.^._._.(._._.|.{.`.`._._._.(.`.|.(.(._.(.(.(.`.{.(.(.`.^.(.(.(._._._._._._.|._.}._._._._.`.(.(.`.`.|.(.^.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(./.(.^.(.(./.(.(./././././.~.(././.~./.~.~.~.I./.T.~.T.~.E.(.T.R.R.(.~.~.T.T.(.~.~.~.~.~./.T.~.~.T.~.~.T.Y.~./.T.~.T.T.~./ / S FXFXDXDXZXZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX,XwX<.,.<.tX3X1XuX8X,X,XtX.-.,.,.;.5.4.,.,X1XyX0X4.;.yX0X:.wXwXwXwXtX5.>.wX2X,X,X.>.>.>.5.5.>.>.>.wX,XX>XyX8XO.O.o.X.7XyX:XyXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXAXFXFXFXFXBX' ! Q m.]. XdXdXnXdXnXcXxXzXzXvXzX.XdXzXzX.XzXdXdX.X.XdX.XzX.X.XzX.XzXdX~ Q ~ ZXFXFXDXZXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXGXO.+.o.X.X.X.o.o.o.X.X.X.X.X.X.X.X.+.o.o.o.o.X.X.X.o.o.o.o.X.X.X.o.6XyXtX1X1XtX,X2XtXuX8X..o.o.O.o.o.+.} +.7X} 7X} +.yX:Xx g l x b 6X} +.+..;.:.-.<.4XwX<.,.<.4X4X4.>.;.>.-.-.;.-.-.-.;.5.<.;.,.,.-.-.-.-.-.>.-.-.-.-.-.>.;.;Xp c f W o. .c O s O -X0X>.-.-.-.-.>.wX2X,X,X,X1XwX,.-.;.,.,.,.b b ,.>.>.>.>.>.>.0X6XXj k + p =X*Xg v 5X*Xp v 5X*Xk v 1X:.4.-X1.>.-.,.,.-.-.GXSXGXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXAXFXHXDXDXHXZX| ! c e.n.F.U.Y.A.P.K.R.L.L.L.Y.L.L.L.K.L.K.P.P.P.P.L.L.U.L.L.L.Y.L.L.Z./ / ' MXGXFXZXFXZXZXFXFXFXGXZXFXFXFXFXFXFXFXFXFXFXFXFXAXyX2X2X1X1X2X,X4X5.,.:.4.v :XqXwX1X.-.-.,.5.qX0X9.,.,.;.;.-.:.0X6X . .X.X. .6X9X:.wX6X .X.O... .O.8X9X,.5.0X.4.5.;.-.,.9.tX,XwX;.>.qX4X:.,.,.5.1X:.,.4.FXFXFXFXFXFXVXGXAXFXFXFXFXFXFXFXFXFXFXDXFXFXVXDXDXS I I b.F.U.Y.~.~.~.!.(./.(.(.(.(.`.^.|.(.^.(.(./././././.(./.(.`.^.[.(.`._.}.}.|.|._._.|.|.|.|.|.|.}. X|.|.[. X_.|. X}._._._._.`.(.{.^.(./.(.(.^.{.", "Z Z B D Z C C C C C B C C C C B C C C C C C C u N C C C C C C C B C Z C B C D D C C C Z Z C D Z Z Z Z Z Z Z C Z Z Z Z C C Z C C D C D B C D C D C B C C G F C C Z C C C C Z Z C Z C Z C C C Z B D C Z Z Z Z Z Z Z Z G Z Z D D D D D D D Z u 0 * o o # # # - * A Y b.Y.Y.L.I.Y.U.I.T.T.T.T.~.T.~.~.~.~.T./.~.~.~.~./././.!./././.(.(._.(.|._.|._.|._.|.|.|._._.|.|._.|.[._._.(.^.^.^.|.^.^.^.(.(.(.(.|._._.`._.|._.|.|.|.|. X_.|._.|.{.^.`.`.^.^.(.`.(.(.`.^.(.(.(.(.(.(./.(.!./.(.(.(.(.(.(./.(.(./.(././.(././././.~.~.~.~.T.T.T.[.T.~.T.T.~.~.!./.~.~.~.~.~.~.!.~.~.~.~.~.~.R.!.~.~.~.T.~.~.~.T.~.T.~.~ ~ ~ ZXVXZXFXFXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX1X4.,.>.4.4X6X+.8X ..>.:.wX5.,.0X5.5.wX4.,.;.wXtX,XtX2X2X2X2X4X0X>.tX1X1X.;.;.-.-.,.5.wXtX.,.0X1X.-.-.-.-.-.-.-.-.-.-.-.-.,.<.v l n v < +...[ z 2.-X:X:X>.-.-.-.,.:.wX4X2X,X2X2X4.-.;.;.-.-.>.2.b >.;.:.;.-.-.-.0X+.6X:Xj :Xl -XtX,.2.sXl k k *X=X5X9X9X9X9X9X9X9X5.-.4.v :.-.-.-.-.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXAXAXBX' Q ! _ b.Z.K.L.I.L.L.K.L.U.U.L.L.L.U.L.L.U.U.L.U.U.U.L.L.P.L.L.L.L.L.F.Q ! ' BXZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDX,XwXwX2XwXwX2X,X,XwXtX.>.>.wX.-.5.4X1X0X,.eX .o.o.X.X.X. ...6X;X8X6X8X6X8X6X8X3X6X6X8X8X6X8X6X;X8XwX;.,.,.;.,.:.0X1XwX5.;.>.<.qX;.-.>.5.4X<.:.qXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXAXFXFXVXZX~ ~ _ e.n.D.Y.T.~.(.~.(./.(.(.(.(.(.|.^.(.(.(.E./.!./.(./.(.(.(.(.(.(.(.(.{.(.`.`._.|.}.}.}. X}.}. X|.|.}.|._._.|._.}.|.|.|.[._.(._.(.(.(.(.^./.[./.", "F Z Z Z Z C C Z Z C Z C C C C C N u C C C C C C C C C C C Z C Z D C Z C Z C C C D C C B C Z Z C C Z B Z Z C Z Z B D Z C C Z C Z C C C C C C C C G C C D C C C Z C B G C C Z C C C Z Z Z Z Z Z Z Z Z Z Z Z F Z Z D D Z D D D D Z D D D D H D Z S D L Z A u y 0 * & $ o o # # # # o $ - : C S H ` b.Y.L.Y.Y.].U.J.Y.T.Y.T.Y.U.T.T.U.T.T.Y.T.T.~.T.~.~.T././.~./.~././.(./.(.(.(.(.(.(._.(.|.|.{._._._.|.|.|.|.|.{.|.(._.{.(.|.{.`.(.(.^.`.|.{.(.`.{._._._.|._._.|._.|.|.|.|.|.|.|.|._.(.`.`.(.`.^.(.(.^.^.(.(.(.(.(.(.(.(.(.(.].(.(.(.(.(.(.(./.(.(.^./././././.T.~.~.~.~.(.T.~.T.~.(.~.[.~.~.~.~.~.~.~.!.~.~.~.~.~.~.~./.!.~.~.~.~.~.~.~.~.T.T.~.~.~.~ ~ ^ ZXFXDXZXVXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX1X<.,.<.,X>X7X.. . .+.3X,X2XtX2X2X4X4.>.wX1X4.1.2X2X4.>.;.qXwX2X2X6X . . .X.X.3X9X-.;.wX,X1X2XtX1X4X5.,.,.:.wX1X.wX4X2X,X,X,X1XqX,.,.4.wXtXX>XwX<.>.>.wX2X;Xl d z v l g z z h v g k a 4 2 s O g n o 6XpXw @ k s g k k p v g k + 2 2 2 2 g O z -X>X2X6X..X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.O.X.X.X.X.X.X.X. ...O.FXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXDXDXZXBX[ / ! b.e.d.i.i.a.i.a.a.a.a.a.a.a.a.a.i.i.u.i.s.a.a.s.i.a.a.a.z.a.a.a.a.~ / ~ CXAXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAX1X9.;.qXqX<.;.>.-.:.5.<.,.>.;.5.0X<.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.;.:.1.wX4X-Xw x d < =.| ..} j k -X0X>.-.-.-.,.0X4X>X>X2X4XwX;.,.2.2.;.-.>.b b ,.0X7XeX-.-.-.9.8X6X0X4.:Xx l b 1.j n a @ 5 n j -X:.,.,.>.>.>.>.-.>.2.v <.>.-.-.-.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXAXFXMX} ! ! T b.F.K.L.L.I.L.U.L.L.L.U.L.L.U.K.U.U.U.U.L.L.L.L.L.P.U.L.L.L.L.Z.! ! _ BXZXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFX3X9.<.4X4.9.2X,X.;.,.-.-.;.0X1X1X2X2X1X.;.;.>.-.-.-.>.5.1X,XwX,XZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXAXFXAXAXZX~ ~ / b.n.F.Y.T.~.!.~.!.!.(.(.(.(.`.(.(.(.(.^.[././././././.(.(.(.(.|.^.|.|.|.`.(.`.|.|.}.}.}.}.}.}.|.|.}.}.|.|._.|.}.}._._._._.(._.(.(.[.(.(.(.(./.", "Z Z B D Z Z C C C C Z C A C B C C C C C B C C C C C C C C C C Z C F C C D C C C B D C D C C B D Z Z Z Z Z Z A Z Z C Z C Z C C Z D C G C D C C Z C C Z C C F C Z C Z B Z C Z Z C C Z C Z Z F Z C Z Z B D Z Z Z Z D Z D Z D D Z G D D D Z Z L L K G D Z L L J H Z H Z C ) L L L L S H L L L L / H L _ b.Y.R.R.T.T.I.I.U.T.K.Y.[.P.XXT.P.P.T.T.P.P.U.U.T.T.T.T.T.T.T./.T.T.~.~./.~.~./.~./.!./.!./.^.(.(.(._.(.{._.(.|.|.|._._.`.|.|._.|._._._.|.|._._.`.(.}.^.{.}._.{.|.`._.|.|.|._.|.|.|.|.|.|.|.|.|.|.|._._._.|.(.`.(.`.^._.(.^.(.(.(.(.(._.(.(.(.(.(.(.(.(.(.(.(.(.(.^.(./.(./././././.~.^.~.~.~.~.~.~.~.~.~.~.~.~.^./.^.~.~.~./././.!./.~./.~.T./.~.~.~.T.~.R.T.~.~.T.T.[.~ ~ S ZXVXZXZXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX3X4.<.,X2XtX6X..X. ...7X>X,X,XwXwX1X5.,.:.wX2XtX,X2X2XwX4.>.:.,X>X7X .X.X.X. .+.>XtX4.0X2X2X,XyX.wX1X,X1X5.>.>.wX1X2X2X2X1X4XqX>.5.2X,X,X,X1XqX5.0X-.>.,.wX2XtXwX0X:.5.5X8X .6X3X,X2X,X,X2X2X2XtX,XyXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXBX[ ! c [ m.].hXzXcXxXxXdXdXcXxXxXxXdXnXdXdX@XdXzX.XdX.X.XdX.X.X.X'..X'.`.~ ~ ^ ZXVXFXZXVXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .6X2X4X,X<.>.-.-.wX1X;X@ j k O x l o l s s 9.5.p z sX-Xs =X7Xo > @.- p 4.5.s 2.5.p v k 5.4 =.=.1 pX-Xk ;Xv tX3X1X7X..X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .X.X.X.X.X.X.X.X.X.X.X.X.o.hXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXZXAXAXAXBX} ! S T w.f.a.i.a.a.a.a.a.a.a.a.i.i.i.i.i.i.i.i.i.a.i.i.a.i.a.a.a.a.a.a.! ! S ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAX1X9.>.>.-.-.-.-.-.-.>.-.;.;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.>.;.wX:Xv b -Xn w 5 @ 5 7 x ! v v v b 0X;.-.-.-.,.;Xn x b b v 8.-.;.=.j ,.-.-.8.b >.4.8.5.-.-.-.>.4.5.-.,.9.b z -XuX*XO s z v eXh 9.;.,.-.-.-.-.-.;.4.-X1.;.-.-.-.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXAXAXHX[ ! S ) b.Z.H.U.L.I.L.L.L.U.L.L.K.L.U.U.U.U.L.U.U.L.U.L.K.L.L.S.L.L.L.Z.! / _ BXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXZXyX9.,.wX2X,X,X,X2X,X,X2Xv .>.<.2X,X1X2X>X2X1X5.5.6X..o.X.X.X. .+.3Xb 7 7 2.4 8.O.O.O.8X9X>.-.5.4.>.wXO. .X.X.X.X.X.X.X... .X.X.X.X.X.X. . .X.X. . .X.X.O. . . ... . .+.8X.5..<.1X2X,X,X2X1X1X4.<.,XuX8X .X.X.X.X.o.KX4X5.,..5.wX0X5.>.>.>.5.wX,X.wX2X,X2XqX>.5.qX-.>.5.1X,X,X1X1XwX4X6X..6XtX>X,XwXyXX2X,XyXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXBX} / ^ [ m.].zXxXcXxXcXnXJXxXxXxXzXxXdXdXnXzXzXzX.X.X.X.X.X.X.X.X.X X_.`./ ! Q ZXVXFXZXFXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .X.X.X.X.X.X.X.X.O.7X.-.-.>.tX1Xb h 9.0Xd sX6X- +.v g k *Xa 4 q.8.# =X6X 2 2 < d j k k g k p v k k h 2 2 2 8.8.3 :Xl n > f > W .. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.O.oXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZX[ ! ^ e.e.i.a.i.a.d.a.a.a.a.i.a.i.i.i.i.i.u.i.i.a.i.a.i.i.i.i.i.a.a.a.a.! ! ^ ZXFXFXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXyX9.>.-.-.-.;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.:.wXk g p - 7 2 j j w 7 S } +.w 2 5 :X9X>.-.-.:.b @ 1 + k b b -.-.<.9.-.-.;.2.b ,.,.,.-.-.-.-.;.,.>.2.j ,.2.l a b l z g h g @ 5 @ b b tX<.;.;.>.:.:.8.v :.>.>.-.-.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXAXAXBX' ! ! ) b.F.K.U.L.L.I.U.L.L.L.L.U.L.Y.U.U.U.U.K.U.L.L.L.R.L.L.L.L.L.L.F.! ! } fXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXGX3X4.>.4.1X2X,X2X2XtXwX:Xl :XuX2X,X,X,X,X,X,X,X,X,X,X,X,XtX0X0X9.>.:.wX1XtXqXwX1X1X2X1X5.0X8XO.X.X.O.7XyXwXj 5 7 7 7 j n O...O.0X,.-.-.-.-.5.8XX.o.X.X.X.X.X.o.o.o.X.X.X.X.X.X.X. .X.X. . .o.o. .O.X.X.X.X.o...+.2X<.,.5.4X2X1X<.,.4.X6X..X.o.X.X.X. .+.3XtXtX1X4X5.>.<.1X1X,X,X,X,X2XtXtX2X,X2X6X . .X.X.X.+.1XqX:.2XyX7X . .X.X.X.X... .6X.:.tX,X1X5.,.,.,.>.0XtX5.>.>.wX2X,X,X,X1XqX,.0X1X1X5.>.;.>.>.-.>.wX2X,X,X,X>XtX8XX.6X>X,X,XtX>.qX1X:.4.2X,X,X,XFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXHXBX' / Q c.].dXdXxXxXdXxXxXxXnXdXvXcXcXdXnXzXzXzXdXzXdX@X.X.X.X.X'.|.|.|.(.~ ! ^ ZXVXFXZXDXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXGXO.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...+.2X4X5.,.;.-.>.:.4.tX2Xb d j *Xo @.@. @.> 4 2 j ;X4 2 2 2 < a z w z x z d v l v v l x l v x z z z a g :X:X:Xf & sXz f 7X .X.X.X.X.X.X.X.X.X.X.X.X.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.7XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXBX' / S T e.i.i.i.f.i.i.i.a.a.a.i.i.a.i.i.i.i.a.u.a.i.i.a.u.i.a.a.a.a.a.a.~ ~ S CXDXZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXeX:.-.:.-.<.1X9.>.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.<.2Xk 9.wXd 2 =.j 7 7 2 ' O.O.w 2 7 :XwX:.:.wXuX-X7 8.p -X;Xb 1.>.-.-.-.-.,.b b ,.=.2.;.>.;.qX8X6X0X<.4.:.8.d v 0Xk g k g h z g *X+ x k ,X<.,.2.k k k v 9.;.,.-.-.-.-.FXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXAXFXBX[ ! Q I e.F.F.U.U.L.L.L.L.L.L.L.L.L.U.L.U.U.I.L.L.U.L.L.L.L.U.L.L.G.L.Z.! Q ' BXGXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXyX1XyX1X1X2X2XwXwX4X5.9.b >XyX2X1X1X1X2X1X,X2X,X2X,X,X4X5.,.,.wX4.:.,X.;.0XwX2X,X,X,XX,X,X,X,XwXwX,X,X2XwX;.0XwXtX2X1XwX>.;.wX2X2X,X,X1XwX:.wX1XwX;.qXwXwX0X-.5.1X1X2X,XtX5X6X .6XuX.4.,X,XyXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXBX[ Q n c.m.].hXxXxXxXxXxXxXzXvXcXdXcXdXzXzXdXxXdX'.'..X.X.X X.X|.|.|.|.^./ Q ^ ZXVXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXGXVXo.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...6X3XwX5.9.;.,.:.4.tX2X2X;Xx d - d @ + a d k v z h p z l + w s p z h p p s =X=X>Xk h a a g a a p p - z a w { wX{ > n n l > v 6X .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...hXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXZXZXHX' / S b.w.e.u.i.i.i.a.i.a.i.a.i.i.i.i.i.u.u.i.u.u.a.u.i.i.i.i.i.a.a.a.a.! ! ^ HXZXVXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX9.,.<.1X<.:.9X4.,X9.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.;.-.-.;.<.wX2X1Xk 5.k d z 7 v 7 l 2 7 [ O.q.=.4 v ;Xb b b b v 5 kX8.*X:Xv b 8.<.:.-.-.,.2.b >.4.4.;.:.0X6X....8X;.-.5.:Xd v ,.j iXuXk 5 sXl p n 8.4 :X:XwX*X2.5.k @ k k k :.-.-.-.FXFXFXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXAXZXFXFXVXBX{ ! ! ) b.n.F.U.L.L.U.I.L.Y.I.L.U.U.U.U.U.U.L.U.Y.L.L.U.U.L.U.L.L.L.L.Z.! ! _ BXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXyX0X0X0X0XwX4X9.<.1X.:.1X5.:.4X9X>.-.-.>.:.,X1X0X,.,.-.,.,.,.>.;.,.b -X2.*Xd 2 x O.X.O.:XtX1X2X2X5.,.>.5.8Xo. .X.o.X.X.o.o.X.X. . . .X.X.X.X.X.X. .X.X.X.o.X.X.X.X.X.X.X...+.1X,X,X<.qX4X2X,X,X,XwXqX,.<.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXAXFXFXAXZX~ ~ / ` b.Z.U.T.T.~.!.~.(./.(.(.`.(.(./././.~.^.~.~././././.^././.(.^.|.(.E.(.(._._.|._._.^.|.(.}.{.`.`.|._._.|.|.{.|.(.`./.^.^.(.`.`.^.(.(.(.(.(.(.", "C C C C B C C C C B C C C C u B A C C A C C C C Z Z B C C A B C C C B B V V u B C C C C C D C Z Z A C Z A C Z Z C Z Z Z C C C Z V Z C C C C C C Z C C D C C Z C Z C Z C C Z C Z Z D Z Z C Z B Z Z Z Z D Z Z Z D Z C Z Z Z Z G Z D D Z Z D D L L F H J P J H H Z L P L L P L L P H H P H U L L L L P e.~.T.[.~.T.U.U.U.L.U.P.P.P.U.U.Y.T.U.T.U.T.T.T.T.T.T.T.T.T.T.T.T.~.~.~.~./.~.~.[.E.^.(././.(.(.(._.`._.{._._._._.|.|._.|.|.`.|.`.|.|.|.|.`._._.|._.}.|.}.}._._.|._.|.|.'.|..X X.X X|. X|..X.X|..X|. X|.|.{. X`._._.}.}.|._.|.|.{.|.|.|./.`.`.(.^.`.|.(.`.^.(.`.(.`.^.(.!.(././.!.(./././.T.(.~.~.~.~.~././.!././././.(.(.(./././.(././././.).(.~././././.~.~.[././.^.~.~ ^ ^ ZXVXFXFXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXwXtX1X3X2X2XtX7X .o. .X.X.X.X.X.7X1X5.>.-.-.>.>.<.2X,X,X,X,X2X,X,X,X,X6X.. .X.X.X. . .8XX,X,X,X2X2X,X,X,X,XtX3X2XwX,X,X3XwXwX2X,X,X,X,X,X,XwX,X,X2X.tX0X4.;Xv z b b l + v z O v z p l z l z 5 j 3 p f | -X+ z @ v o O =X5X:Xs @ v - O z h g k p z h t | iX' > W n f @.v .>.;.qX<.-.-.;.:.;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.:.>X5.:.wX3X>X1X;Xz a v l l a g v z 7 =.S O.w =.7 - - s O d o g + O # O g - + v b 8.:.:.:.b x ,.-.>.4.b 4X+. . .7XwX;.0XX>X2X:Xj qXk d 2.5.-X<.-.-.-.FXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXFXBX' / ! Y b.Z.U.U.L.Y.U.I.I.L.U.L.Y.U.L.L.L.T.U.L.L.I.L.L.L.H.D.L.L.L.L.F.! / _ BXZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAX9.,.>.>.,.1.0X:.<.1X2X2Xx :X1X1X5.,.>.>.>.:.0X<.;.0X<.,.-.-.<.4X5.:.0X1X4.>.-.,.1.>XyX,X>XsX;X6XsX.<.wX9.:.,X,X,X2XtXwX2X,X,X2X8X ...X.X.X. . . . . .X.X.X.X.X. .X.X. .X.X.X. . ..>.wX2XX,X1X,X,X,X2X,X,XtX;.>.qX1X3XVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXHXDX] Q ^ c.].'.JXxXxXdXJXxXxXdXcXcXnXdXnXdXcXxXdXdXdXdX.X.X.X.X|.`.(.{.(.].S Q ^ AXAXFXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXo.X.X.X.X.X.X.X.X.X.X.X.o.X.X.X.X.X.X.X.X.X.X.o.o.6X2X4X5.>.;.tX4X4Xb @ z k k v v 8.8.p -Xx d p v $ @ < 8.=.@ - @.> p k a :X} d s =X=X=X@ :X} a k z 4.5.k z p u @.@.@.x v - d d d k z f f o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.....fXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXHXHX[ ~ Q T T w.i.i.d.d.i.k.a.i.i.i.i.i.i.i.i.i.s.u.u.a.t.i.u.i.i.i.i.a.a.i.~ ~ ! ZXZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX1X<.-.:..-.-.<.:XwX>X4.-.-.-.-.-.-.-.-.-.-.-.-.-.-.;.9X9.:X1X-Xv v z + + + v x g 9.*Xz 7 =.G O.7 =.4 f | -Xs 8X@.- w l :X+ n :Xp + - v b b :X-Xb :.:.-.1.5.0X8X+. . .8X,.9X:Xz k :.=.s v @ z a p p + O z -Xb b v a a w a j 0Xk :.-.-.-.FXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXSXGXDXFXFXAXBX[ / ! Y b.n.L.T.L.Y.U.L.Y.L.U.L.I.L.T.Y.K.L.U.U.I.U.U.P.U.L.L.L.L.G.L.F.! ! ' BXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAX9.>.-.-.-.-.,.,.4.2X1X2Xv :X1XwX<.>.-.-.-.-.>.-.-.>.-.-.>.:..qX4X<.DXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXDXZXVXZX~ / / T b.G.H.T.T.~.!.!./.!././.(././.!.~.~.~.~.~./.T.~./.~./.!./.^.(.{.(.(.(.(.(.^.{.|.(._.|._._._.|.|. X|.|._._._._.(.`.|.^.`.(.(.^.`.(._.(.{.(.(.", "Z C C C C C C C C C Z C C C C B N C C m A C C C C C C C C C C C B N C C C B C C C C C Z C C Z C C Z Z Z C Z Z Z B Z C Z C C F C C C C C C C C F D C Z Z B C C Z C C Z Z C Z Z Z Z C Z Z Z Z Z Z Z Z B Z C Z F Z Z Z Z Z B Z C Z Z Z Z Z Z Z D Z D Z H Z H H D H J Z L Z J Z H L P H L L L L H L H P [ Y.P.T.T.T.T.U.U.T.P.T.P.P.T.T.U.U.U.T.T.P.P.T.T.T.T.T.~.T.T.T.~.~.~.^.~.~./.(.(./.(.(.^.(.(.{.|.(.^.{.}.}._.|.}.}.}.}.}.}.|.|.|.|.|.@X|.|.|._.|.|.|._.|.|.|.|.|.|. X X'..X X.X X X X.X.X.X.X.X X.X`..X@X'. X|.|.|.}.}.}.|.`.^._.|._._._.[._._._._._.'._._._._._.^.^.^.^.(.(.(.(./.^./.^.[./.(./././././././.^./././.(./.(.(.~.(.(.(.(.^.^./.(.(.~.~././.(././.(./.^.!.~ ~ Q ZXVXZXZXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXyX<.,.<.wX2X2XtXwX5X6XX. .X.o. .+.uX,X,XwX.>.5.wX0XwX5.-.>.5.1XtX8X..6XtX>XwX2X2X,X,X,X2XtX:.5.,X1XwXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXBX} ^ ~ c.m.'.hXxXxXxXxXxXxXdXcXcXcXvXcXdXdXdXdXcX.X.X.X X.X|.|.|._.(.(.~.~ ^ ^ ZXVXZXDXZXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.X.X.X.o.X.X.X.X.o.o.+.o.X.X.X.X.X.X.X.X.O.o...6X.9.2XwX9Xb x sX@ z :Xk 7 q.O b p + z :X! a 4 7 j 4 z h d - g w n -Xp a g g h z b -Xk k z k *Xp z k 5 4 x < z p z g =Xd @.> > @.c X.X.X.X.X.X.X.X.X.X.X.X.X.X. .X.X.X.X.X.X.X.X.X.X.X.7XGXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXBX[ ^ ^ T T t.p.i.i.i.i.i.i.i.i.i.i.i.i.i.s.u.i.u.u.i.u.u.i.i.u.i.i.i.a.i.! ! ^ CXAXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX3X9.>.:.:X4X,X>X<.;.-.:.wX4X4X5.,.-.-.-.-.-.-.-.-.-.;.;.-.-.-.,.-.0X2X=X-X/ p z l n -X-Xp 5.*Xd 7 2 / O.u =.l & | / p :X;X@ 5 7 h O l g z / O h a - b v b b b b :.,.,.4.0X.<.wX2X.-.-.-.-.-.-.-.-.<.wXwX.-.-.0X4X4.,.8X...... . . .X.X.X.X.X...6X;X6X6Xn 6X} | / | } g a p w z ' n n s =X=Xa l p p @ @ O + @ 4 < 5 + b ,.,.wXyX:.,.qX1XtX:.,.,.4.:XO.O.o.o...6X;.9X1XwX4.qX;.,.5.2X0X;.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXVXFXAXAXDX! P ! e.b.F.U.T.T.~.~.!././.~./././././././.T././.T.~.~.~.~.~./.~./.~.[./.(.{.(.[.^.^.|.(.|.`._.|._._.|.}.}.}.}.|.^.|.{.(.^.{.`.(._._.`.(.(.(.(.(.(.", "C C C Z C C F C Z C C C C C C A A C A C C C C B C A C C C C Z C Z C N C C A C V C C C C C C F B Z C C C Z Z Z C F C C C C C C C C C C D Z Z C C C D C Z D C C C Z C B D C Z C Z Z F Z C C D B D C Z D Z Z Z C Z Z C Z C D Z Z Z Z Z G B Z Z G Z D Z H H H H H H J L J H L L L L H P H L L L H L J H e.!.T.T.T.T.U.Y.U.U.T.T.P.P.P.T.Y.T.T.T.T.^.T.T.T.T.T.T.~.T.~.~.~.T.~.~./.~./.~./././.(.(.(.(.).^.(._.|.^.}.}._.}.|.}.}.}.|.|.|.|.|.`.`._.|.|.|.|.|.|.|.|.|.|.|.'. X X.X.X'..X.XdX'.'..X.X.X.X.X.X'..X`.'..X.X X X|. X X}.}.|.|._.`.}.|._.|._._._._._._._._._._._._.(.(.(.(.~.(./.!./.^.^.E././.[././.~././././././././.(./.(.(.(.(.~.(.^.~.~.(.~.(./.[././././.!./.[.(.~ Q Q ZXVXFXZXFXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXSXyXXwX2X4X4.;.wX2X,X2X2X4.qXwX2X,X,X,X2X6X .X.X.X.X.X.X.X.X.X.X.3XyXwXwX>X6XX.X.X. . .3X1XwX0XwX2X,X,X2XwX:.wX2X.>.>.5.qX>.>.>.-.;.-.>.wX1X.<.X9X,.b h z p @ l z @ a d @ z z l n -X+ a p s @ a z b z z z 5 d @ a g l l z z a - a j z h l z @ h 8.8.4 z p sXx g f , eXl , f X.X.X.X. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.oXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXBX} / ! [ T u.i.s.i.i.i.i.a.a.a.i.i.a.t.i.a.u.i.u.u.i.u.u.i.i.i.u.i.a.i.i.! ! ^ ZXZXAXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX1X9.>.-.:.0X0X0X<.-.-.-.:.qX0X<.>.-.-.-.-.-.-.-.-.-.,.,.;.;.;.:.;.<.yXs :X} - @ j 4 n n Q f } c u [ +.O.0 7 z 4 , P | | c h @ O + O - v -X+ 6X6X+ h p @ b b x b b 8.:.,.9Xj 2.<.,.8.a k 1.j :XeXz w b n g 8.n 4 d 4.5.k v yXtX;Xa k -X<.-.-.-.ZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXAXZXBX] ! ! Y b.n.K.U.U.T.U.U.U.U.U.U.U.L.Y.Y.U.L.L.U.L.P.U.L.U.L.L.A.L.P.L.Z./ / ' BXZXVXZXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyXwXtX9.:.tX,X1X2X2X5.<.v :XwX<.;.>.,.;.;.,.-.-.:.wX4X4X2X<.,.>.-.>.>.:.1X9X<.6X..X.X. ...o.o.o.o.o.o.o...O.O.+. .X.O.O.O.X.KX*X4.*Xh ^ eXiX@.=XiX*Xs b 2.0Xk w z n - @ kXkX b ,.>.4.yXwX:.0X1X1XtXwX;.,.qX+.o.o.o. .6X>.9.tX1XwX:.>.5.1X1X1.>.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXAXDXAXAXFX~ ) ~ T n.D.U.P.T.T.~.~.!.~.~././././././././.~.T./.~.~.T./.~.(.(.~././././.(.(.(.(.^.^.^._._.(._.|.|.|.}.}.}.}.(._.{.(.(.(.{._._.(.(.`._.`.`.^.(.(.", "C C C C C Z C F C C Z C C V C C A N C C C C C A C A Z C A N C C A B N C C A C A C C C C C C C C C A C C C C Z Z C C C Z D C D C Z C C C C C Z C Z D C C B Z Z C Z C C C Z B D Z C Z Z Z Z Z Z B Z Z Z C Z Z C Z Z Z Z Z C Z B D D Z Z Z Z F G Z D D D H G K H H L L H L H J L L H H H L L L P L P J [ !.T.T.T.T.T.U.T.U.U.T.P.P.P.T.P.Y.T.T.T.T.[.T.T.T.T.T.T.T.~.~.~.~.~./.~./.~.(./.(.(.(.(.(.(.^.^.{.|._.{.}.}.}.}.}.|._.|.|.|.|..X|.'.|.|.|.|.|.|.|.|.|.|.|.|..X|.'..X|..X.X.X.X.X@X.X.X.X.X.X.X'.'..X.X`..X|. X|.|.}.|._.}.^._._.{._._._._._._._.|._. X_. X_._.`.^.`.(.(.(.`.^.(.(.(././.(./.(./././.[./.(./././././.(.(.(.XX(.(./.[.(.(.(.(./.(.~.(.~.(./././././././.~ Q S HXZXZXFXFXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXyX2X.<.wX2X3X+.....7XtXwX<.<.1X4X5.,.<.1X2XtXwX4X9.:.wX1X2XtXwXyX6X..X.X.X.X.X.o.X.O.+.4X0X,.:.tX8X .X.X.X. .3X5.>.>.,.wX1X,X,X,XwX2X,X,X,X,X,X,X,X,X,X,X,X2XwX:.>.>.>.5.qX,.>.-.>.>.>.5.1X>X.0X1X,X,X,X,X,X2X,X1X0X,.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXHX' Q Q { Q.'.zXxXxXzXxXxXxXcXcXcXzXcXdXcXzX.XzX X.X.X.X.X|.|.|.`._.`.^.K.! Q Q ZXCXFXZXVXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXVXo.X.X.o. .o.o. .o.+.o. .+. .o.o.o.o.+.X.o.+.6X,X,X f 6X+.X. . .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.o.O.O.DXSXGXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXFXHX' / S [ T i.i.i.i.f.a.i.a.i.i.a.a.s.i.i.a.i.u.u.u.u.u.i.i.u.u.i.i.i.i.i.! ! ^ CXFXAXGXZXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFX3X9.>.-.-.-.-.-.>.-.-.-.>.>.,.-.-.-.-.-.-.-.-.-.-.:.:Xb x b b b b b ;X@ a h z p + u ..c +.W ../ | O.O.O.q.6 x IXn S O.O.O.H 4 v *X2.p l l d + W W O 4.0Xz d v b v -Xv b b x % l b b b z -XtXv h h h d b eXO z 8.4 a j 9Xp v 2X,X*X2.5.-X<.-.-.-.DXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXVXVXBX[ Q ! I b.F.K.T.U.T.U.U.T.T.U.T.U.L.L.L.U.U.L.L.U.P.P.U.U.L.U.P.P.L.L.F.! / [ BXZXAXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHXyX3X1XyX9.0XwX2X,X,XtX.<.wX5.,.0X1X>X6X..X.X.o.:Xv f v 6X .O. .o. .O... .O.O.O.+.:XuX-Xj k p A W W m =X=X=Xs d j 9Xs z 7 l + d 6X8.< b ;.,.>.0X4X>X2XtXwX0X9X-.>.0Xo.o.X.X.o.8X:.>.5.1X2XX6XO.+.2X5.,.;.wX1XyX,XwXwX1X2X4.:.0X9.>.:.0XwX4.:.yX>X7X .X.X.X.X.o. .O.3X2X4.,.0X5X7X .X.X. .O.0X,.-.-.-.tX2X,X,X,X,X2X2X,X,X,X2X,X,X,X,X,X,X,X,XwXwXqX;.-.5.wXwXwXwXwXwX2X,XtX6X .:XyX.5.1X,X,X,X,X,X,X,X2X0X5.tXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXBX[ Q S c.m.'.hXxXxXvXxXxXxXcXcXzXvXdXnX.XzXzXdXdX.X.X.X X.X X{.|._.`.(.].~ Q S ZXZXFXZXAXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXVXo.X.X. .o.+.+.+.+.+.+.+.+.+.+.+.7X+.+.+.7X,X2X,X-Xv v x v v x :XeXeX>X;Xn h @ g ;Xn p z +.-Xa a a p a z @ c s p z @ z 7 < X.;Xp @ | 6X3 =.7 p z eXl z x n z p l 5 @ @ l h z z a , / n f @.p v v - +.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.O.O.hXDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXZXBX[ ^ ! [ T w.i.i.i.a.i.a.i.a.a.a.i.a.i.i.s.i.i.u.u.s.u.u.u.u.i.u.a.i.a.i./ ! ^ ZXSXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXwX<.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.<.>Xv @ g a + - s d 4 7 z < < ] O.L w f f s z u q.[ O.e.t l sXn | O...O.i 4 -Xj k k a h h + @.n - 2.0Xs p kXl g v w 5 l 5 w h - @ x k v g g g h a p p O O O p @ p p p g -X-X*Xj 9X*X:.-.-.-.AXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXBX} ! Q ) b.Z.L.T.U.T.T.U.T.U.T.U.P.P.U.U.U.L.L.U.T.P.T.U.U.L.L.L.P.L.L.F.! / ' BXFXAXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX,X3X4X4.,.4.1X,X2X1X1Xv 4.,.<.3X+. ... .O.+.5.:.4X9X,.,.wX1XwXwX1X1X4.:.1X>X8X..X.X.+.z z s h k f ~ | W f f | W f f > c ;X-X-Xv v k w w w l g g g h v v k z 5 4 O g a @ @ b ,.-.,.4.0XwXtX,X:.,.,.-.qX8XX.X.X.o...6X:.,.5.1X,X2XwX0X;.>.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXFXAXZX~ ~ / T n.F.U.Y.Y.T.~.!.~.~.T.~././.T././.T.~.~.~.~.T.~.T.~.~.~.~.~./.T./.~.(.(.(.(.(.`.(.`.`.{._.|.|._.^._.}.[.(.|.^.(.(.^.^._.`.(.(.`.`.^.(.(.(.(.", "C C C C C C C C C B A C C C C C C C C C C C C C C C N Z C B C B Z B Z N C C C C C C C Z C C Z C Z C C C Z C B Z Z C Z C D C C C F C C C B F C Z C B C C D Z C C F C C Z C C C Z C Z Z Z Z Z Z Z Z F Z Z B D Z D C Z C A C D Z C Z Z C Z Z Z D D Z D D H D H H H J H L L L L L P P H H L L H H J H J T P.U.T.T.T.T.T.U.U.T.P.T.T.Y.L.U.T.Y.Y.T.T.T.T.T.~.T.T.~.~.E.XX~.~././.~.[.(.(./.(.{.(.`.^.|.(._.|.|.|._.|.|. X'. X'. X|..X'. X.X X.X X.X.X.X.X.X|..X X X.X'.|..X.X.X'..X.X@X.XdX.X.X.X.X.X.X.X.X.X.X|..X.X|.|.|.|. X|._.|._.{.|.`.{._._._._._. X_. X_. X_.|.`.(.|.^._.(.(.[.^.(././.^./.!././.(.[.(././.[.(././.(.(./.^./.(.(.XX(.(.~.[./././././././././.(././.(.(.E.~ ! S ZXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXZXFXDXFXFXFXFXFXFXyX3XwXwXwXwX2X1XtXwXtX2X,X,X:X3XyX<.>.<.1X,X,X,X1X,XwX9.>.>.:.wX9.-.>.>.,.<.,X,X,X6X.. . .X...+.:X4X4.,.:.>X6X.. . . .X.+.0X>.-.-.0X2X2X,X2X1X1XwX1X,X,X,X,X,X2X,X,X,X2X,XX1X0X>.4.wX2X,X,X,X,X,X2X,X,.9.wXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXBX} Q S [ '.].'.JXxXxXxXzXxXcXcXnXvXdXcXnXdX.XdX.X.X.X.X'.|.|.{.`.{.^._.].~ ~ ^ ZXAXFXDXDXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXo.o.o.+.6XtX5X1Xb v l v v v v v b b v v v v l v x < 4 O b wX>X:XM.eX:X-Xl z a a k -Xg - @.> d z n :X5 z d | -Xa z z 5 =.< @.f d + @.~ O =.3 p sXkX@ 5 4 4 + k -Xw - b + 7 4 k g h f - d d p n n a +.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.7XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXBX' ~ ! c.E w.i.a.a.i.a.i.a.i.a.a.a.a.i.i.i.i.s.u.u.i.u.u.u.u.i.i.i.i.i.d.! / S ZXFXAXZXFXFXFXFXFXFXFXFXFXFXFXZXDXFXFXFXFXFXFXFXFX9.>.;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.>.:. } *X@ z IX8.2 w X.Y =.< > } -Xa 4 O & | O.Q 5 @ z c } .` 2 7 x v v l 4 8.=.; sXiXu 2 4 d d 3X;X- n x O 8.b 4 w n x + g 7 / n } | / x | / } | } } z | } | | | } 7XW } =X<.-.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXZXFXAXHX| Q ^ I b.n.K.T.T.T.T.T.T.U.U.Y.U.U.U.L.U.P.P.Y.U.U.P.P.L.U.L.L.U.U.L.Z.! ! ' BXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXyX3X1X3X.9XwX6X . . .+.c } =Xa g 9.qXv f } k g f } k p aXaXa + < p 4 h z s + p - s p a d s p l c ;Xc 4 4 a @ b ,.;.5.0X>.,.0X1XwXwXwXwX:XO.X. . ...6XtX:.>.qX1X2X,X:.>.>.;.-.-.ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXAXAXDXAXZX~ ~ ' Y n.K.P.Y.Y.~.T.!.~.T.~.~./.~.~./.~.T./.T.T.T.T.~.~.~.~.~.~./.~.~.(.~./.(.(.(./.|._.(.(.`.(.`._._._.|.`.{.(.(.|.(.(.(.(.|.^.`._._.`.^.^.^.(.(.", "C C C C C C C B C C C C C A C C C C Z A C A C C m C C B N C B C A B Z C C C A C C B C C C C Z C Z A C Z C Z D C A Z C Z C C C C C C C Z C D C C F Z C Z C C Z C B Z C C Z D C C Z C Z Z Z D Z Z Z C Z Z Z Z Z B Z Z Z Z Z B Z Z D B Z Z D D D Z D D H D D H H H L L L L H L L L H L L J H L H L P H [ Z.Y.T.T.U.T.U.U.T.T.P.P.T.U.T.T.P.Y.U.T.T.T.T.~.T.~.!.T.~.(.~.^.^./././.XX^./.(.`.(.(.(.|.`._._.|.|.|.|._.|. X.X.X.X.X@X'..X.X.X.X.X.X.X.X.X.X.X.X X@X.X.X.X.X|..X.X X.XdXdX.X.X.XdX'.'.'..X.X.X.X.X.X.X'..X X'.|._.|.|._.|._.`.(.|.|._.|._._._._._.|._.|._._._._.|._._.(.`.^.(.(./.^./././././.(.[./.(././.(.(./.(.(./.(.~.(.(./.^.{.T./.[.(.XX/././././././.(./.(./.~ ! ^ ZXAXFXDXFXVXAXFXFXFXFXFXFXFXFXDXFXZXFXFXFXFXFXFXFXyX1X4.,.,.<..>.:.0XtX4X5.>.-.;.0XtX2X,X,X>X6X.. .+.8X3XyX4.-.0XtXuX3X..X.X.X. .8X0X,.>.>.0X2XX,X.>.,.0X2X,X,X,X2X2X1XwX>.,.GXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXBX[ ! n c.m.].JXzXxXzXxXxXxXvX.XdXcXdXdXdXdXdX.X.X.X.X X|.|. X|.`.`.|.(.!.~ ^ ^ VXVXFXZXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXo.o.o.7X>Xb v v x :XX=X:XeX:X:X>X;X-Xv -X-X*Xv v :X:Xv @ @ g 5 z + @.@.@ g g z w 7 - - d d a - 5 z z d 8.z + l 5 5 z g z @ 8.8.7 l *Xg z l + a d @ p x l p +. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.oXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHXCX[ ! S { T e.s.a.a.a.i.a.a.a.a.a.a.i.a.i.u.i.i.u.i.u.u.i.i.u.i.u.i.i.i.i.S / ^ ZXFXVXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFX9.1..-.,.:.6X . . .o.f W / a p 5.;Xp > W / a - | ! - KXl + 7 8.s @ - } -Xp - } -Xp > | k p Q sXiX/ @ kXkXO b >.5.4XtX,.-.4.,X2X1X1X8XX...O. . .6XuX,XtXwX,X,X1X,X;.4.wX:.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXAXZXZXAXDX~ ~ / e.n.F.P.P.Y.T.T.!.~.~.T.~.~.~.T.~.~.~.~.~.[.T.~.T.T.T.R.R.~.T.T.~.~././././.(.(.(.(.`.|.{.|._.(.`._._.`.(.(.(.(.(.(.(.|.(._.|._._.|.(.(.(.(.(.", "B B B u C B B C C C C C A C C F A C C C C C C C C B B C C N N C A m A N B C C C C C C C C C C C Z C Z C Z Z Z Z C Z Z C C C D C Z C C C C C C Z C D C C C C A C C B C C B C C D C Z C Z F Z Z Z Z C Z Z Z Z Z D Z C C Z D B C Z Z Z Z Z Z Z Z Z D D Z H H H H H J Z H L H L H P L H L L L J H H P J T Z.K.T.Y.U.U.I.L.T.T.T.T.T.U.U.Y.U.T.T.T.T.~.T.T.~.~.~.~.~.(.~.~.(./.(.(.(.(.(.(.(.|.^.^.}._.|._.|.|.|.|.|..X.X.X.X.X.XdX.XzX.X X.X.X.X.X'..X.X.X.X.X.X.X.X X@X.X.X@XdX'.dX X.XdX'..X.X.X@X.X.X.X.X'.@X.X.X.X.X X|._. X|.|._.|.`.(._._._._. X_._.|.|._. X_._._._._.(.`.`.(.^.`.(./.(.[./.^./././.(.^.{.^.)./.^.(.(./.(.(./.(.(././.^./././.(.(.(.(.(./.^.[././.(././.^.~ Q ~ ZXFXFXZXAXVXAXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXyX1X4.>.-.>.<.wX2X,X,X,X,X,XtXwX<.>.:.tXyX,X,X1X5.>.-.>.:.wX1X,X2X4.>.:.wX1X,X,X,X,XyX3X8XX1X0X,.wX1X2X>X6X .X.X...+.1X0X,.0X5.:.tX1XwX>.>.,.>.wX2X,X,X1XwX:.qX4X1X2X1XwXwXwX5.:.0X1XtX2X,X>X,XyX8X..6XyX,X,X2XwXqX;.,.qX1X,X,X,XwXwXwX3XwXwXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXBX' Q Q { Q.].hXxXxXxXxXzXxXzXxXcXzXnXdXdXdXvXzX@X.X|. X_.|.|.`.(.(._.{.].~ Q ^ ZXVXFXFXAXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo. .pX>XXj k *X5X>X2X:Xa *Xk a ;XyX4X;Xp @ @ g g @ d - z z z 7 3 7 { eXc d z z z @ z 5 O p o O z =X5Xk a a z 8.4 g < p n n + x b @ d , @.> @...X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.X.O.7XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXBX} Q Q [ T w.i.s.a.i.i.a.a.a.a.a.a.a.i.i.s.i.u.i.i.u.u.u.u.u.i.i.i.i.i.i.! ! ^ CXZXVXZXFXFXFXFXFXFXFXFXFXZXFXZXFXFXFXFXFXFXFXAXFX9.:.wX<.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.;.0Xv d a @ @ - - z z + O c ] v ;Xf x - - % d w W @.v 7XO.' g sXv W O.' sXsXO 9.0Xd z O 2 < $ o 3 j -Xa 6X8Xp @ - @ + + @ z -X-Xk ' ..i a < @ O p O g s p g p a j v k g p p g ;XM.7X8X9.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXDXAXAXBX[ ! ! _ b.F.L.T.T.T.T.T.T.T.T.T.U.T.T.T.P.T.P.L.Y.Y.P.P.L.U.L.Y.P.P.U.F.! ! ' BXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAX9.:.wXwX1.,.,.;.,.,.1.:Xx +. .X.o.X...o.O.o.X.O.+.yX5.qX0X0XwXwX<.-.>.>.-.-.<.8X .X. .+.v - - g h d 5 h @ d , g a % + a 5 5 z 7 kXx 5 - W S p - W / p - | ~ a K W | @.p 6X8.6 b ,.wX4XqX-.-.>.wX1XuX6X .X. . ...6X4X1X1X4XwXtX2XwXqX,.4.1XwX:.>.AXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXAXGXAXAXAX~ ~ _ ` e.P.U.Y.T.T.T.T.~.T.~.T.~.~.~./.T.~.T./.T.~.T.~.T.~.T.~.T.T.~.~.~./././.(.(.(.^.|.^.`.(.(.|.(.`.`.^.(.^.`.^.(./.(.^.(.`.{.`._._.^.{.`.(.(.(.", "B F B V B u C C C C C C C C C C C C C C C C C C B C C N C N C N A Z N C C C A C C C C C Z C C F C Z C C C Z C Z Z C Z Z Z C B C C C C Z C D C C C C Z C C D B C C C C C F C C C Z Z C Z B Z Z Z Z Z Z Z Z Z C B F Z Z C Z Z C Z Z C Z C Z Z Z Z H Z H Z D H H D J L L L L L L H L L L H H H L H S P T F.J.T.T.U.T.T.I.R.P.T.P.T.T.T.U.T.T.T.T.T.Y.~.~.T.~.~.~.~.(.~.(.(.(.(.(.(.|.(.(.(.^.^.|.}.|._.|.|.|.|..X.X|..X.X.X.XdX.X.X.X.X.X@X'..X.X.X.X.X.X.X.X.XzX.X.X.X.X.X'.dXdX'..XdX'..XdX.X'.dX.X.X.X'.dX X.X|..X|..X|. X|.|.|.|.|.^.|._._._._._._._.{.|. X|._._._._.(.(.`.(.`.(.[.(.(.(.(.(.(./.[././.^.(.[.(.(./././.(./.(./.~.(.(././././.(.~.[.~.(./.^.^.~././.(./.^./.~ Q ^ ZXFXZXZXAXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX3XtX<.-.-.-.9.1X,X,X,X,X1X5.,.-.>.>.9.1X,X.5.wXwX,X,X,X,X1X0X>.-.5.wXwX5.>.>.,.>.>.wX1X2X2X,X>XyX8Xo.6X>X,X,X,X,X,X1XwXwX1X1X2X,X,X:.,.,.qX4X3XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXDXBX[ Q ! c.V.].dXzXxXxXvXzXxXcXdXdXzXzXdXxX.X X.X X.X X X|.|.|.(.`.`.(.`.!.! Q Q ZXAXFXFXAXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXO.+.uX>X>Xx k 5.k :X>Xk j s :Xk j k z g -Xk k d :X:X:X-X2X5.>.>X>X5X5XwX>X;Xz k 2.*Xz l 6XeX} 4 z 7 @ g + z s p d z 7 =.w 6XiX/ d z n l p z 7 3 :X} o =X5XwXs h @ p O 5 5 g k x l p l l k - , :Xx > O.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.O.O.oXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHX[ ^ ! ` T R i.i.a.s.a.a.a.a.a.a.i.a.i.i.a.i.a.t.i.u.i.u.i.u.i.i.i.i.i.i.S ! ^ HXZXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZX9.>.>.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.>.<.x @ z a + p p < 7 ] +.4 b ;X2.b j j j 7 z - o j 6XO.X.l sX8./ O./ sXb O 5.;Xw 7 3 =.3 ;Xl p sXg k a :X:Xp l 7 3 j b v 0XuX3X} z 7 2 h q.*X@ =Xp g 9Xs g 9Xk v v >Xg 9Xp v :.,.5.7X:X<.,.FXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXDXFXAXAXFXAXAXCX' ! ~ Y b.F.Y.T.T.T.T.T.~.T.T.T.T.U.T.T.P.T.T.Y.P.U.P.Y.Y.U.U.P.P.P.P.F.! ! _ BXZXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXAX9.,.,.>.>.1.wX;XeX:X:X+.n +. ...+.3X.,.,.>.>.-.:.wX4.;.wX7X .X.X.+.k 5 + g k =X*Xg x n ;Xl 5 z v v ;X:Xn Q / A - c @.f n n f f -Xa $ - d w % w e - + + - ;XtX2XqX;.-.>.5.3X:X8XX.X.X.X. .6XtX0X0X0X0X;.qX4X;.4.wX>.5.4X,XwXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXZXZXAXAXZX~ ~ ! e.b.D.U.T.T.T.T.!.T.~.T.~.T.~.T.~.[.T./.T./.T.~.T.T.~.T.T.T.~.R.~.~./././.(.(.(.(.^.`.`.(.`.^.`.`.(.`.(.(.(.^.(.(.(.|.|.{.`.^._.|._.(.(.(.(.(.", "C C Z C B C B Z C C C A C C B C C C C C C C B Z C B C Z N C N C B B S N Z C C C C C C C C C C C C Z C A C Z Z C D C C C F C C C C C C C C C C C C C D C C C C C C Z C A C Z C C C D C Z Z Z Z Z Z F Z Z Z Z Z Z Z Z Z B C C C Z Z C Z Z C Z Z Z D D H D H H H H Z J J L H L H J K J H J H H H H H Z T Z.P.Y.U.U.P.T.P.P.P.T.T.P.T.T.T.T.T.T.T.T.T.[.T.~.~.~.(.~./././.(.{.(.(.(.(.(.{._.(.|.}._.|._.|. X.X.X.X.X.X.X@X.XdX.X.XdXdXdX.X.XzXzX.X.X.X.X.X.X.X.XxX.XdXdX.X.X'.dX.X'.'.zX'.@XdX X.X.XdX.X.X.X.X.X.X.X.X X|. X|.|.|.|._.|._.|.|._.|.{.|.}.}.[.|._._.|.{.}.}.[.|._.(.(._.[._.(.(.(.[.!.(./.(./.(.(./.(./.(./.~.(.(./.(././././././././.(.(./.^.(.~.~.(.(./.(.!.(.(.~ ~ ! ZXVXZXDXZXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXyXyX1X9.>.-.>.<.1X,X,X,X,X2XtXwXwX0XwXwX2XX1X1X4.:.,X2X,X,X1XqX,.:.,X,X,X2X1X,X,X>X8X..X.X. .o.tX2XwX1X2X2X2X,X,X2X5.qX4X2X,X,X,X,X2XwX>.-.>.>.>.>.>.-.5.wXwXX3X6X .6X>X1X,X,X,X,X,X,X1XwXwXwX,X,X,XwX0X;.qX1XyXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXBX[ Q ^ { ].'.hXJXzXzXvXxXxXcXzXzXzXxXdX#X'..X.X.X'..X|.`. X'.|.|.|.|.|.].! S ! ZXVXZXDXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXo.6X>X,X>Xk k k k v b h l k v z d b g p x v z - :XuX2X2X1X0X<.2X1XyXyX,XuXb z l k k h / sXiX> < c 8.@ v d +.-Xa h z 7 =.w @.@.@.z z l l a z 4 2 n ;Xh k =X=Xs p z k - O l z x @ @ d @ @ + > f n v > +. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.O.hXDXDXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXCX' ~ / c.T w.i.i.a.a.a.a.a.a.i.a.i.a.i.a.a.u.i.u.i.u.i.u.u.i.u.i.i.i.i.s.L / S ZXFXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX4.,.;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.>.<.v z 3X:X# p k 2 i X./ h k 5.,.:.h g s 2 < x 2 =.7 n / | X.| | | O.u < p + d a @ l 7 =.2 -Xb + n p + z a a z 7 2 5 3 p ;X<.eX+.+.7 =.4 w 8.8.x M.j k 4 k k j s z g -Xk j s k <.,.<.yX6X7XeXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXAXfX} Q / _ b.n.T.~.T.~.T.~.T.~.T.T.~.T.T.T.T.T.T.U.U.P.P.U.U.P.P.P.P.T.P.Z./ / ' BXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX9.>.-.-.<.,X7X.. .O.o. .c +. .+.2X>X2X1X,X3X6X..X.O.+.3X4.;.;.:.wX4.,.wX2XtX8X.. .X. .+.7 8.z a =XiX*Xk / eXiX> z kXaX-X6Xo.O.O.O.O./ W +.+.o.O.O.o.6X;X-X;X8.2.b ;X:X;Xb 8.j 0X1XwX;.>.>.5.8XX... .X.X.X. . .8X;.,.>.,.>.,.4.qX5.1X1X;.5.4X1X1XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXSXVXGXZXAXZXS / / [ n.Z.U.T.T.Y.T.!.T.~.T.~.T.T.T.~.~.~.~.~.~.~.T.T.~.T.T.~.T.T.~.~.~././././.(.'.^.(.(.(.`.(.`.(.(.(.(.(.(.^.`.(.(.^.`._._._._._._._.(.(.(.(.(.", "B C B B B Z N C C C C C C C Z B C C C Z C A A B N Z B C C N C N N Z N m N Z Z C A C Z C Z C C Z C C C Z Z C Z Z C C D B C C D C C C C Z C D C D C D C C C F B C C C C C C C C C Z C Z C D B Z Z C D Z Z B D Z Z Z A Z Z C Z A Z A Z A Z Z Z Z Z D D D D H H H H Z L J Z J H H J J H H H P H H U H H ` K.P.L.L.U.P.P.P.T.T.P.P.T.T.T.T.T.Y.T.T.T.T.T.~.~.~.~.~./././.(.(.(.(.^.`.[.}.|._.}._.}.|. X'..X.X|..X'..X.X'.xXdX.XdXzX.X.XdXzX.X.XzXdX@XdX.XzX.X.X.X.X.X.X'..X'.zX.X.XzXzX.X.X.X.X.X X@X.X.X.X.X.X.X X.X|..X.X|.|.|.|.|.|._.|.|._.|._.|._.|.}.}._.|.}.|.|._.}.}._.^.^.`.(.|.(.(.^.[.^.(./.(./.^./.(.{.(./.(./.(.(.!./././.(././././.(./././.{.~.(.(.^.{./.(.(.(.(.(.~ ~ ^ ZXVXZXZXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXyX,X1X4.>.-.-.9.4X1X,X,X,X,X.wX,X,X1X2XwX2X,XtX7X .X.X.X.8X1X0X,.0X1X,X,X,X,X1X0X>.0X1X,X,X,X,X,X1X5.>.-.-.-.-.5.wX1X1X1X2XyX3X:X8XX. .6X>XwXwXwX2X1X,X,X,XtX:.>.,.0X1X,X1X4XwX,X2XyXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXBX} Q Q v.m.].hX'.vX`.zXzXvXzXzXzXdXdXxXdXzXdXdXdX X.X.X|. X|.|.|._.|._.!./ S ~ ZXZXZXDXVXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX+.2X2X2X2Xx :X>X:Xx ;X:X*X:Xx 3 4 O a g 7 - v z v b > +.X. .X.X. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.O.oXDXZXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXAXBX[ ~ ^ { T e.p.i.a.a.a.a.a.k.a.a.a.i.i.i.i.a.u.i.i.u.i.i.i.i.s.i.i.i.i.a.~ / Q ZXAXFXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX1.>.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.:.wX,Xv z 8X-Xp j k e ..| g 5.*X2.;.:.n } -X< 2 7 < 2 7 IXb @.O. .o.O.O.[ w z l a z s p w 7 5 + + s k @ @ z z d w 4 O ;Xx @ x ;Xc / l g 7 7 z 7 5 5 g 4 b p 2.5.k z - 2.5.-X:X-Xg :X<.:.9.0X6X6XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXZXAXAXBX' Q S Y b.F.Y.~.~.~.~.T.~.T.~.~.T.~.T.T.T.T.T.T.T.Y.U.P.P.P.P.P.T.P.P.F./ / ' BXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDX9.>.-.<.3X7X..X.X.X.X.+.f :XeXwXtX1XX7X..X...+.8X4.>.:.4X5.,.:.1X2X6X.. .X.X.7X7 =.v p =X=X=Xk @.| W @.g sXl v O.o.X.o.+.O./ } | | .X.X. .O.O.6X2X:.>.,.wXuXyX,.>.>.-.wX,X;.>.9X8XX.o.o.X.X.X.X...6X0X;.4.tX0X:.>.,.4.4XwX0X,.5.1XwXtXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXZXFXVXZX~ ~ ) T b.I.U.T.T.~.T.].T.T.T.T.~.~.~.T.~.~.~.~.T.[.~.T.T.T.~.T.~.~.~.T.~.~.~././.(.(.(.(.(.(.(.`.(.(.(.(.(.(.!.(.(.(.(.(.^._._._._._._.(.(.(.(.(./.", "C B B C A Z C C A N N C C C A C C C A C C C Z C C B C B C N Z N C N N A Z N N Z Z C C C C C C C C C C Z Z C C Z C F Z C D D C C C C C C C C C C C C Z C C C C C C C Z C A C Z C C Z C Z C Z Z Z D Z Z Z Z Z B D Z C B Z Z C Z Z Z Z C C Z Z Z Z D D D H Z H Z H J H H L J H H L J H L H H H P H H U Y F.L.Y.Y.Y.P.P.P.T.P.P.T.T.T.T.T.T.T.T.U.P.T.T.T./.~.~.^.~.^.^.(.(.(.(.`.^.|.}.|.|.}.}. X|..X.X|..X.X.X@XdX.XzXzXzXdXdXdXzX.X.XzX.XzX.X XdXdX.XdX%X.X.X.X.XdX'.dXdXzX'.'.zX.X.X.X.X.X.XdXxXdX'.dX.X.X.X.XdX|. X'. X.X|.|.|.|.|.|.|.`.|.`.`.|._._._._.|.|.|.}.}._._.`.^.^.|.[.[.(.[.(._.(.(.(./.^.^.(././.^.(././.(././.(.(.(.(././.^.^./.(././././.(.E.^.~.(.(./.(.(.(.~ ! ! FXVXAXZXFXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX3X.>.:.wXwXwX2X2X,X,X,X,X,X,X,X,XtXwX2X,X,X,X,X,X,X1XqX,.<.1X1X2X,X3XtXwXwX4.>.wX1X2XwX4.:.>X,X6XX.X.X.O.+.2X4X5.>.;..>.0X1X,X,X,X,X1XwX>.,.;.5.wX1X3X2X>X3X3X8X . ... .6X>XtX:.,.,.5.wX,XyX,XwX;.-.,.qX1X,XwXwXwXwX2X3XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXCX' Q Q [ m.].xXzXzXvXzXzXzXzXzXdXzX.XzXzX.X.X.X XdX.X.X'. X|.(.|.|..X|.!.~ Q ^ ZXVXFXZXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXo.n v v b v k *Xk h k -Xk :Xl q.eXs z z 2 7 k v 5 :X2X2X,X2Xv h z z w z d v g d g a h h w @ @ @ @ d l z - @ a z h g z d z z h l l l z h z v w 7 g 4 a :X} @ k z b ;Xg - 8.-Xk *Xd sXl g k :X-Xd v f . .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.7XDXDXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXBX} ~ ^ ` T w.u.i.i.a.a.a.a.a.a.a.a.i.i.a.a.a.u.u.i.i.i.i.u.s.i.i.i.a.a.i.! ! S HXZXVXZXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX4X9.>.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.:.wX;Xz @ d a @ k / ..) l g 2.k j ,.:.l W ! < j l j 2.x KXn W O.O.X.X.X.O./ gXsXo } -X+ 7 4 7 x sXg v z n l + z n x O ;X:X+ f | } *X-Xa c eXn - a + l l z d 2.0Xk l -Xj qX-X2XyX:Xk :X:.-.>.4.3XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXFXAXCX[ ! ! _ b.F.Y.(.T.~.T.~.T.~.~.T.T.[.T.T.T.T.T.T.T.U.U.Y.T.P.T.P.T.T.P.S./ / _ BXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDX5.,.<.X6Xo.o.o.X.3X4.:.1XqX,.;.0XwX6X .X.X. .+.d + + p j g g j w w 0 g h % h } o.X.X.o.o.O./ S | +. .X.X.X.X.X.X.8X9X;.,.wX1X1X0X,.-.>.5.qX>.9X8XX. . .o.X.X.o.o.6XwX,.4.1X1X1XtXwXwX4XwX,.,.>.5.1X:.5.AXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXAXZXZXVXZX~ _ ~ U n.A.I.R.T.T.T.T.T.~.~.T.T.~.~.T.~.T.T.~.T.T.~.T./.T.T.~.~.~.T.~.~.~././././.(.~.(.).(.(.^.(.(.(.(.(.(.(.(.(.(.(.(.`._._.(.(._._.(.(.(.(.(./.", "C C C C N C N Z C C C Z A N C C C C C C C C C C B C B C C N C C Z A C Z N A Z N C C C A C C A B C Z C C C C C C D C C Z C C C C C Z C C C C B D Z C C C C C C C C C C C C C C C B D C Z Z C B D B D B D Z C Z Z C Z Z A A Z B Z C Z Z Z Z Z Z Z F D D A D H H H H H H J H J H J J H P H H H H H H H T F.L.U.U.Y.T.P.P.P.T.P.T.T.U.T.T.T.T.T.T.T.T.T./.T.~.~.~.^./.(./.{.(.(.`.(.{._.|.|.}.'. X.X.X.X.X.XdX.X'..X'.zX.XzXdXxXxXdXcX.X.XxXzXdX.XdX.X.X.X.X.XzX.X.X.XdXdXdXzXzX.X.XzX.XdX@XzX.X.X'.dXdXdXdXxX.X.X.X.X.X.X|..X|.|.|.|.|.|.|.|.`.|.|.'._.|.|.|._.|._.}.}._.}.(.`.^.^.].(.(._.(.(.(.~./.{.(././.(.(./.(./.(.(.(.(.(.(./.(.^.^./.(.[.E./././.(.(.(.{.^.(.).(.(.(.^.~ ~ S ZXVXZXZXFXVXFXFXFXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyXyX.4.1X,X,X,X,X,X,X,X,X,X,X2X,X,X,X,X,X,X2X>XtXeXeX:XX1XqX,.,.>.>.;.wX5.,.qXwX2X6X .X.X. . .8X1X0X>.>.;.wX2X,X,X,X,X,X5.>.-.wX2X,X,X,X,X,XwXwXwX2X1X3X3X:X8XX. . . .X. . .6XuXtXwXwX5.,.,.wX4X1X.,.4.1X,X<.,.>.>.qXyXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXBX[ ! Q c.Q.].'.zXzX.XxXzXzXzXzXzXzXzX.X.X.XdXzX@X.X.X.X.X.X.X|. X|.'.`.!.~ ! Q ZXVXFXZXAXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHXo.w p a z g 4.;X- j 9.*X:Xv 7 sX7 a z < g v 8X> @ :XyX2X,X>X-Xl *XeXsX=Xb v d a v -Xh p 4 @ O g - + d s O z s p z 7 3 7 z + l ' eX! z O 5 7 O c 8.4 l b ;Xp h @ p s a O 4.sX7 :Xd x z + h 4X>X>XiX-X} X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.7XZXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXBX' ~ ~ c.G w.u.i.i.i.i.a.a.a.a.a.a.i.i.a.i.i.a.a.i.i.i.i.i.a.s.i.a.i.i.s.S ! ^ CXZXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX1X4.>.>.-.>.;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.,.<.v + d p z l *X} ' w l h v v b b ;Xf d - k *Xg k -X5 5 + 7 ! | O.X.X.+.' sXx W ! < =.2 7 z n @ @ l n x a z x x - S ~ % ' O.8.,.2.! { iX/ n n + z h p a p d @ v v a a g 2X:.5.-Xv <.-.-.-.<.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXHXFXHX' ! Q ` b.F.Y.~.^.~.^.~.~.T.T.~.~.T.~.~.~.T.~.T.~.P.T.T.T.T.P.T.T.T.P.F.Q ! ' BXVXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXpXeX:X7X..o.o.o.o.O.7X.>.<.4X5.;.wX7X..X.o.+.3XtX2XyX4.;.>.<.8X .X.X. .+.v - p p w 7 7 g h w + h b :X6Xo.X.X.X.o.X.O.( | W | O.X.X.X.X.o.o.O.6X:XeX:X1XyXqX>.-.-.-.>.5.6Xo.o.X.X.o.X. ...6XwX:.>.qX1X1X1X1XtXwX9X4.wX:.,.5.1X:.5.AXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXDXFXVXZX~ / ' d.n.G.Y.T.T.T.T.~.T.~.T.~.~.T.~.~.~.~.~.T.T.~.T.~.T.T.T.~.T.~.~.~.~.~././././.(.~.(.(.(.(.(.].(.(.(.(.(./.(.(.(.(.(.(.(._.`.`._.(.(.(.(.(.(.(.", "B N A Z B B Z A Z B N N B C B C B C C C C C C N B B C B C B B N C C C A A Z C A C C C C N A C C C C C C Z Z C C Z C C C C F C C C C C D Z Z C F C C F C C C C C C C A C C C F C Z C C C C Z C D Z C C D C D Z Z C Z C C C D Z C Z Z Z D Z Z Z Z D Z D D D H H H H L L L P H J J J J F Z J L L H L P T F.U.U.L.Y.P.P.T.P.U.U.T.U.T.T.T.T.T.T.T.T.T.T.[.T.~.~././.^.^.(.(._._._._.|._.|.|. X X XdX.X.X@X'.dX'.dX.XdXdX.X.XzXzXzXzXzXzXxX'..XzX'.'..X.X.X.X.X.X.X.X.X.X'.zX.X.X'.zX.XzX.XzX.XzXdXdX.XxXzX.X@X.X.X.X.XdX X.X.X X.X.X|.|.|.|.|.|.|.|.|.`.`.`.|.|.|._._.|._._.|.(.(.(.`.^.^.(.(.(._.(.(./.^.(.(./.(./.(.~.(.(.(.(.(.(.(.(.(.(.(./.^.(./.^././.(.[./.^.(.~.(.(.(.{.! ! ^ ZXAXZXZXFXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXX>X3X6XO.X.O. .+.8X:XyXwX0X0XwX9.,.>.:.,X1X6X..X.X.X.X.8XtXtX4.,.qXwX2X,X,X,X,X,X2XwX>.>.wX1X,X,X,X,X,X1X2X>X3X6XX. .X.X. .o.X. .O. .o.o.6X3X2X1X,X;.>.4.wXwX5.4.wX0X,.0X1XwXqX;.>.qX1XAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXHXBX[ ! Q { Q.'.hXdXxXzXzX.XzXzXdXdX.X.XzXzXzX.XzX'..X X XdX.X.X|.|.|. X|.^.~ ! ! ZXVXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.z -X6X> z k *Xk - g qX-X:Xk O p + d z 2 4 x ;Xv 5 :X2Xk k k s l ;XsXeXwX*Xl n z k ;Xg 3 4.x 3 9.b & +.;X+ } -Xs g b j kXkX< ! { iX/ l g ' 8.< 7 k 4 z - @ a a z n eX/ z -X:Xk z h + p p d :X:X*X>Xk +. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.o.O.O.DXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXBX} ~ ~ { T w.T a.i.i.i.a.a.a.i.a.i.i.i.t.i.i.i.i.i.i.i.i.i.i.i.i.a.a.a.a./ / ^ HXCXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyXyXwXwXwXwXwX9.1.wX4.,.-.>.>.-.-.-.-.-.-.-.-.-.<.wXv g 9.;Xa ' } ;Xj 5.j z @ w @ d 7 3 < < 3 3 7 3 < < l - kXeX> O.X.X.X.| ! / @.W W 7 2 =.1 z @ h p g + + g 4 4 Z X.+.x v n 8X<.,.2.n W | @.;X:X4 d 2.0Xk v 8.8.b h v ;X:X1X:.2..-.-.-.FXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXGXAXAXCX' ! Q ` b.F.!.~.T.~.(.~.~.~.~.~.~.~.~.~.[.~.T.~.T.T.T.T.T.U.T.T.T.T.T.F.! / ' JXZXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXO.O.o.....7X8X.>.<.1X5.,.:.wX6X .X. .X.3X>X1X5.>.-.:.6X . .X.X.+.n } =X- 3 2 =.7 l 8.z - :X8XO.o.o.X.o.8XtX6Xn 6X6X-XeXeX8X.. .o.o.X. . .X.o.6XyX;.-.;.>.-.5.8XX.o.X.X. . .O.O.6XwX;.-.>.qX4XwXwX0X;.>.,.4.4XwX:.5.1XwXX,X2X2X1X1X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,XtX6X.. . .X.O.o. . .o.+.8X3X2X4X9X:.9XwX3X6Xo.X.X.X.O.+..-..wX2X,X,X,X>X,XuX3X8X.. .X. .X.X. . .o.X...o. ..... .6XtX2X0X-.-.-.>.5.1X1X1XwXtX,X,X4XwX>.5.yXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXHXBX} ! ! c.m.].'.dX'.'..XzX.X.XzXcX.XzX.XzX.X.XzX.X.X@X.X X.X.X|.|. X|.|.].~ ! S CXAXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXo.l x ;Xz z :X:X;Xl -X:X*X5Xz s 8X/ d z 2 l h w a l X-X-X} +. .X.X.X.X.X.X.X.X.X.X. .X.X.X.X.X.o.O.O.hXDXDXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXCX' Q ^ [ R R u.a.i.i.i.d.i.a.a.a.i.a.i.i.a.i.i.a.i.i.i.i.i.i.a.a.s.a.a.s.! ! Q CXZXCXFXZXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX8.;XtX-X>X>X>XtX.-.9.v 4.-.:.wX9.-.>.<.1X5.>.-.:.wX7X .X. .O.:X1XqX>.,.<.6X . .X. .o.f | / h 2 =.2 7 x gX8.p 6Xo.X.o.o. .8X:X;X:Xv v *X0X>.,.9X6Xo. .X.X.X.X.X.X. .6X;XeX:XeXeX8Xo. .X.o...6X3X8X:X>X:.-.-.>.4.0X:.>.>.-.-.-.-.4.2XtXyX1X1X2XAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXVXZXFXAXFX~ ~ ^ e.n.F.U.R.T.T.T.!.T.T.~.T.T.~.~.~.~.~.T.~.~.T.T.~.T.T.T.T.~.T.~.~.~./.T././.T.~./././././.(./.(.(./.(./.(.(./.(.^.(.(.^.`.(.(._.(._.(.(.(.(.^.", "Z A Z N A Z Z N C N C B B C B C B C C C C C C C B C C B C B B B C C C C C C C A C C C C C C C C C C C C C C C Z F C Z C B C C Z C Z C C C C C D B C Z C C C C C B C C C C C C C C C C C C Z C Z Z C Z C Z C Z Z Z B C Z Z C Z C Z B Z Z Z F F Z A H D Z D H F H H H H L H K J H H J J H H H H H H H U Z.U.Y.L.K.P.Y.U.Y.U.T.T.T.T.T.T.T.P.~.~.P.[.T.T.~.~./././.(.(.(._.(.(.(.|.|.|.'. X.X.X.X.XdXdXcXdX'.zXzXdXdXdXzXzXzXzXxXzX.XxXzXzXzX.X.X.X.XzXzX.X.X.X.XdXzX.XzXdX#X'.zX.X.XzX.XzX.XzXdXdXxX.XzXzXzX.XdXdX.X.X.X.X|..X.X X.X|. X|. X|..X.X|.|.|.|.|.|.|.|.}.}.`._.`.(.`.^.(.(.[.(.(.(.(.(.!.(./.[.(.(.(.(._.(.(.(.(.`.(.(.(.{.(.(.(./.(.(./.(.(.(.(.(.(.(.(.^.(.(.[.(.~ ~ ^ ZXFXFXZXFXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX7X .+.3X.5.1X,X,X.-.-.-.-.-.:.:X2X,Xv v -Xf x t v k p s p z s -X6Xw j l gXsX6 2 2 < 7 2 7 @ O # @.O.X.X.X.X.X. . .| | O.O...| | +.u t u q.i x t i 3 o M.iX/ d n z k :X@ 8.n O n n 4 l a p @ b ;.-.,.8.v <.>.>.>.4.:Xk <.-.-.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXFXAXHX} ! ! ) b.F.].~.~.(.T./.~.~.~.~.~.~.~.~.~.~.~.T.T.~.T.T.T.T.T.T.T.T.T.Z./ / ' BXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXHXO.O.O.7X4X4.9.4X4.,.;.9.n 4.>.>.>.-.-.<.tX,X<.>.-.>.<.8X . .X.o.+.8X:XeXeXeX6X .X.X.X.+.v % - g g 4 7 g a x v } o.o.X. . .6X5Xb - @ - @ k 0X;.;.>.9X6X ... .X.X.X.X.X.O.o.O.X. .X. ...X.X.O.6X,X>X>X,X1XwX-.-.-.-.>.-.-.-.-.-.-.-.>.4.3X4XtX0XwXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXZXAXFX~ ~ ~ e.b.Y.U.T.T.T.Y.!.~.T.T.~.~.~.[.T.T.T.~.T.T.T.~.T.T.T.~.T./.~.~.~.~.T.~.~.T.~.!./.~./././.(./.!.^.^.(.(./.^././.(./.(.(.(.^.`.(.(.(.(.(.(.(.(.", "N C N C N C N A N C N B C B C A C N N C N N C N B B B C B C C C C C C C C C C C C C C C C C C Z C C C C C C C C C C C C Z C C B C C C C C D C B Z C C C C F C C A C A C C C C C B Z C C D C Z C Z C C Z C Z C C Z C A A C Z C Z Z D Z B Z Z Z Z D D D D D H H H H H H H J H H J J J H J L L L H Z H L b.K.U.Y.L.L.U.T.U.T.U.T.T.Y.T.Y.~.P.Y.P.~.T.T.~.~.~.~.^.[.(.(.(.^.{.|._.|.|. X X X'.@XzX.XdXdXdXdX@XzX.XzXdX@XzXzXxXzXzXzXxX.XzXzXxXzX.XzX.XzXzX.XzX.XdX.XzX.X'.dXdXzX.XzXzXxX.XzX'..XdX#X.XxX.XzXzX.X XdX X@X.X.X.X.X|..X|..X.X|..X.X.X|.'.`.@X|.|.`.|.|.}.|.|.(.`.`.(.(.[.(._.(._.~.(.!.(.(.(.(.(.{.(.(._.!.(.(.!.(.(.(.(.^.(.(.(.^./.(.(.(.(.(./.(./.!./.(.(.(.(.(.~ ~ ~ ZXAXFXZXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX.tXwX:.0X2X,X,X,X,X,X,XwX,X,X,XwX8Xo.o.....6X3X8X:XuXyXuX,XyXyX2XtX,XyXyX:X8X ...6X2X1XwX0X2X,X,X,X,X,X,X2X,X:.9.wXyX3XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXVXHX[ Q Q c.Q.].'.dXzX.X.X'.dX.XzX.X.XzX.XzX.X.XzXdX@XdX.X.X'..X|..X_.|.|.!.~ S ^ ZXAXFXFXAXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXHX+.x :X*X:Xv 2 2 + l @ z b b l p a d d v z a z z z z z g @ + p k v g k k =X;Xw z *X:X:Xv z 5 l n @ z s p a z n z p z 4 h n z 7 2 3 7 2 2 < g 4 + a Xp ;X8X-XX8Xo.n 2 8.- @ l x p O + O h 7 l aXv 6 j h 6XaXg j z +./ / o.X.X.X.X.o... .| 6X{ i q.w n =.=.7 7 4 7 7 7 < 2 & W | @.z ;Xx k :Xh 8.q.O q.q.4 v ;X;X;X:X<.,.5.:Xv wX:.-.-.,.2.k <.>.-.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXFXAXAXBX] ! S ` b.F.~.~.~.~.(.~.(.~.(.~.~.~.~.~.~.~.[.[.T.T.T.T.P.^.Y.T.T.T.P.F./ / ' BXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXAXFX} n n ;X;Xb b :X;Xb 8.b k b x 2.b 9.:.wX4X5.-.>.>.;.wX2X7X .X.o.X. .o.X.X.X.X.X.X.X. .+.v h s h 5 - p a b -X6XX.X.X.X.X.8X>X1X;Xz n z + ;X9X5.wX5.,.9X8X.. .X.X.X.X.X.X.O.X.X.X.X.X. .X...6X>X2X,X,X1X1X0X-.>.>.-.-.>.4.0X:.-.-.-.-.>.4.wX:.>.>.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXDXVXVXFX~ ~ ~ c.n.F.U.T.T.T.T.].T.~.~.T.~.T.~.[.T.~.T.T.~.T.T.T.T.~.T.~.T./.T.T.~.~.T.T.T.~.Y.~.~./././.(./.(.(.(./.(./.!./././.(./.(.(.^.(.(.(.^.{.(.^.!./.", "C N C Z N A N N N N C N C N C N N C N C B N C C N C C N N C C C C C C A C C C C C C C C C B C C B C C B Z C C C C Z C C Z B Z Z D D V C C C C C Z C C Z C C C B C C C A C C C B F C C C C C Z Z B B C Z C C Z C D C Z Z Z C Z Z Z Z Z Z Z Z F Z Z Z G D H H H H H H H L H L L L L H P H Z L H H L L U Z.Z.Y.P.U.T.T.T.U.U.T.U.T.T.T.T.T.~.Y.T.T.~.T.T.[.(.E.[.(.(.`.(.(.^._.|.|.'. X X XdXdXdXdXdXdXxXdXzXzXdXnXdXdXxXdXzXxXzXxXxXzXxXdXzXzXzXdXzXxX'.zX'.dX.XdX'.zX'.zX'..XxXdXdXzXdX.XzX.X.X'..XxXzX.X.XzX.XzX.XdX.XdX.X.X'..X X|..X.X X X X.X|..X|..X X|.|.|.|.}.}.}.^.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.!.(.(.(./.^.(.(.(.(.(.!.(.(.(./.(.(././.(./.^.^.~ ! ~ ZXAXZXZXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyXtX2X8X:X+...7XuX1X5.:.tX2X,X,X,X,X,X,X,X,X,X,X,X,X,X7X .X.o.X.X. .o.X.X.O.o.o.X.X.X...X.X. .X.X.X. .X.8X:X7X....+.4X0X,.2X0X,.:.tX2X,X,X,X,X,X2X,XyXyX8X .....6XKX2X>X1XwXwX2X2X,X,X,X,X,X2X,X,X2X>X8X.. .:XtX1X1X2X2X2X2X,X,X,X1XwX>.4.1X2XXb z n z k b x sXh ;XuX-Xd l gXaX+ } -X@ z kXsX+ k v - sXgX@ 4 =.2 2 7 x < 8.=.+ w n ;Xh z a - z v :X:X-Xg z p s v :X-X>XX:X:X>X:X>X*X2X1X5.,.-.-.-.-.-.-.>.<.2X2Xb } O.7Xv 4 7 v + x 7 - 7 8.s p 4 5 a w v v p l l 4 z > X.@.$ ` O...X.X.X.O.O...n =.2 7 g 6 7 @ a p 5 4 @ - a l 7 w % w g a @ h v w 5 j k k g @ b 2X;Xb ;Xv j -X>Xv wX;.-.-.>.4.-X<.>.-.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXVXFXZXVXHX[ ~ Q ` b.F.~.~./.~.~.~./.~.~././.~.(./.~.~.~.~.~.~.T.~.T.T.T.T.T.T.~.F.~ ~ [ BXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX;X2.b b l z ;Xb b 8.b b g ;X-X;Xl ;XwX1X,XtXwXwXwX4.wX4X1X7X..X.X.o.o.X.X.X.X.X.X. .X.:Xf } k p > } =X@ :X8Xo.o.o.X.X.8X>X1XuX:Xw n v p b ,.5.4XwX>.>.tX8Xo..... ...o.X.X.+.o.o.o.o.X...7XtX>X2XyX,XwXqX5.wXwX0X;.-.>.5.4XwX,.>.>.-.-.-.>.-.-.-.DXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXVXFXFXVXZX~ ) / [ n.F.I.T.T.T.T.!.T.~.T.~.~.T.~.T.T.T.T.~.~.T.~.T.T.~.T././.T./.~.T.~.T.~.T.~.T.~.~./.T./.~.~.~./././.^.(./././.!.(./.(.(.(.(.(.(.^./.(./././.", "Z A N N Z B C Z A C C C N C N C C N C N V N V N C V C C C C C A N Z N Z Z Z C C C C C C B B B B C B C C B C C A C C C Z C C C C C C C D C C Z C C C C C C C u B C C C V B A u B B C F C C C B C F Z Z C D C C C C Z D B C C Z C C Z B Z Z Z Z Z H F D D Z H D H H H J Z L D L L L D H H J L J H L L U [ U.Y.T.U.P.P.Y.U.T.U.T.U.T.Y.T.T.P.~.P.!.T.~.~.~.~.(.^.~.(.(.^.|.[.|._._.|.'..X.X.XdXdXdXdXdXzXzXzXzXdXdXdXxXcXcXxXzXxXzXzXzXcXzXzXzX.XxX.XdXzX.XdXdXzX.XxX.XdX@XxX'.@XdXzX.XzXzX.XzXzX.X.X.XzX.X.X.X.X.X.X@X.X.X.X X.X|..X.X.X.X@X X X X X.X.X|..X|..X X|.|.}.}.|.|.(.(.(.(.(.(.^.(.(.(.!.(.(.(.(.^.`.^.(.(.(.(.(.(.(.(.[.(./.(.(.!.(.(.(.(.(.(.(././././.(.`.(.(.^.~ ~ S DXVXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX9.<.,X>XyX3X6X+.+.,XwX<.<.tX1X,X,X,X,X,X,XtX2X,XtX2X6X.. .X.X. .O.+.6X8X:X7XO. . .X.X.X.X.X.o.X.X.X.O.:X,X>XuX6X..O.6XyXwXuX,X0XwX,X,X,X,X,X,X>X,XuX3X6X.. .6X3X>X>X2X1X0X,.,.wX2X,X,X,XtX,X,X,XtX2XyX>X8X..7XtX>XtXwXwXwX,X,X,X1XwX:.-.>.0X1XyXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXZXFXHX' Q ^ [ m.].'.dXdX.X.X.X'.'.zXzXzX'.zXzX.XzXzX.X.X.XxX'.dXdX|..X X.X.X].~ S Q ZXVXZXDXVXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXSX+.x k 2.k h 7 j 7 8.4 z k k 0Xk *Xv k -Xk k :X*X2.k h a v ;Xb v v - c z g l l l p v uX-Xz h sXx W Q @ d sXx + g 7 a sXx + 4 2 7 O aXgXo 7 2.4 l g h z z z b -Xg k p -X:X} - @ a d @ v b l a x l g +.O.O.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.O.oXDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXBX[ / ^ [ T T t.t.a.s.i.a.a.a.i.a.i.a.a.a.i.a.a.a.a.a.a.d.k.a.a.a.i.a.a.a.~ ! ^ ZXFXAXZXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDX0X0Xb ;X>X5X1X1XuXuXuX*X>X1X4.,.-.-.-.-.-.-.-.:.2X,Xv +.| -Xs O + O O O O a x kX2.a x 7 7 3 7 4 - d w 4 7 4 o + < Y O.o.X.X. .` J / w 2 7 d 6 4 d p iXuX4 2 4.x + b ;X;X;Xz j l z h d a b :.qX.-.-.-.4.v <.-.-.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXBX' Q Q Y n.F.Q.~.^./.~./.~./././.~.!.~./.~.^.~.!.!.~.~.T.T.~.T.~.T.T.T.F.! ~ _ BXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSX9.,.,.<.b l :X9.,.;.,.4.v ;X-X3Xb l -X2X | / @ 6X..o.o.o.O.o.:X;X;X;Xv 5 a + w ;XqX,.tX4XwXwX.5.0X4.wX0X:.-.-.-.-.>.>.ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXVXAXZXFXFXFX~ ~ ) e.b.F.I.T.T.T.T.!.~.T.T.~.~.~.~.~.~.T.T.T.T.T.P.~.T.T.T.T.T./.~.T.~.T.~.T.~.T.T.~.T.(.T./.~.(.^./././.^.~./././././././.(.~.(.(.^./.^.(./././.", "C N C Z B C B Z N N Z N C N C N M C N V N A M A C V N C C C A C C C Z C C N C C C C C C B C C N C C B C C C C C Z C C C Z Z Z C C Z C F C Z C Z C C C C C C C C C C C C C C C C C C C C C Z F C Z C C D F B D C Z Z C Z Z Z D B D B D Z Z Z Z D D A D D S D H F H Z Z H H H H H H P H H J L H H L L U Z.L.L.Y.U.Y.L.P.T.T.U.T.U.T.T.T.P.~.P.T.T.T.~.~.[./.(./.(.(.(.(.|._.|.|.|. X X.X@X.XdXzXzXzXdXzXzXzXcXdXcXcXdXdXnXxXxXxXxXxXxXzXcXxXzXzXzXzXzXzXzXxX.X.XdX.X.XdXdXzX.XdXzXzX.X.XzXzX.XzXzX'.zX.XzX.XzX.X.X.X.X.X.X.X.X X X|. X|..X X.X X.X.X|. X.X.X X|. X X|.'.|._._.|.(.(.(.(.(./.(.(.(.(.^.^.(.(.(.(.(.(.^.!.(.(.!.(.(.(.(.(./.^.(.(.(._.(.`.^.(.(.[.(.)./.(.(.(.`.~ ! S ZXVXZXZXFXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXSX9.,.9.X8X..X.X.X. .O.8X3X1X5XyXyX6X:X7XX... .X.X. . . .X.8X,X,X,X>X8X.. .o.:X>XtX2X2XyX,X2X,X>X>X>X3X3X6X....o.6X>X>X1X:XwX0X>.5.wX,X2X,X,XtX:.wX1X,X,X,X,X>XyXX.o.6XtX:.>.,.,.0X1X2XwX;.>.>.4.2X,XyXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXHX' Q ^ c.m.].'.zX'..XzXzX'..XdX.X.XzX.X'.zX.XzXzX.X@XdX'.'. X|. X.X|.|.!.~ Q ^ ZXVXFXZXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.l k k s z 7 7 5 @ @ z h -Xg k -Xb g 2.j p :X*Xj k z k g p p a u n n - g ;Xk *X;X:XuX-Xz z 5 5 - - - d z a w 5 @ j g a @ h z kXBXO 8.n O a a z l z l w h 4 g *X:X/ a *Xn -Xk g z z a a z d a s p / .o. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.7XDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXVXCX[ ~ Q { T w.i.i.i.a.i.a.a.i.a.a.i.k.a.a.a.a.i.a.a.k.a.k.a.a.k.i.a.a.a.a.~ ~ ! ZXFXAXZXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDX3X2XyX1X;X;X;Xn ;Xv v k >X1X5.,.>.-.-.-.-.-.,.<.2X,Xv :Xv > } s h l sXn h x O o O z =.=.=.=.4 7 7 7 7 z 7 7 KXaXw +. .o.X.O.w 3 IX;XO j w aXsXO z iX5X6 2 3 j @ x ;X:Xb z + + + 6X:Xp v :.2.z ;Xh a g *XsXg k n 5 + v 1.-.-.-.-.2.v <.-.-.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXFXZXZXHX' Q Q ` b.Y.~.~.~.(.~./././././.E.[.(././.~.~.T.~.~.T.[.~.T.T.T.P.~.T.F./ ! ' BXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGX9.:.wX<.<.;Xl ;X:.,.0XwXx b x 4.9.:Xf ;X3XuXqX,.,.,.,.,.,.<.wX6X..O.o.X.X.X.X. .X.:X-Xv + % & h @ , $ p x / } / } } n v @ w 5 h h w k -X;X4XwX2X2X1X1XwXwXwXqX;.-.5.wX8Xo...O.O.....8X0X;.,.0X1X,X2X0X,.qX4XwXwX0X;.-.>.>.,.qX4X1XwX;.>.-.,.4.wXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXVXZXAXFXFX~ ~ ~ b.n.D.I.Y.T.T.T.~.Y.~.~.T.T.~.~.T.T.T.T.T.T.T.T.~.~.T.~.T.~.T.~.~.T.~.T.~.T.T.T.T.~.T.T.~.T./././.(.~././././././.!./.~.(.~././.~././././././.", "C C C N C B C B A N A N C N N N C N N A C V B C N C N C C C N C Z C C C A C C C C C C C C B C C B N C C C C C C C Z C Z C C C C D C C C C C C C C B Z C C A C B C B N u C C C C C C C C C C C C C C Z B C C C C C C C C Z C Z D C Z Z Z Z F D Z D Z Z D D H H H H H H H H H H H H H J H Z H H H L Z G [ K.U.U.Y.L.U.U.U.U.U.U.T.Y.P.T.T.P.~.T.T.~.~.~.~././.(.(.(.(.^.`.|.|.|.|.'. X.XdX.XdX@XzXzXcXzXzXdXxXcXcXdX@XxXcXxXvXzXxXxXxXzXzXzXzXxXzXzXzXzXzXdXdXdXdXzXzX.XdXzX'..XzXzXzXzX'.zXzX.X.X#XzX.X.X.XzX.X'..X.X.X.X.X.X.X X.X.X.X.X.X.X|..X X.X|..X.X.X.X.X X'.|.|.|.|.(.|.`.(.(./.(.(.(.(.(.(.(.(.(.(.(.(.(./.(.`.(.~.(././././.(.(.(.(.(.[.(.(.(.^./.{./.(./.(.(.[.(.~ ~ ! ZXAXAXFXAXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXSXyX1.>.<.,X1XtXyX3X7X2XyX:X<.,.<.wXtX1X5.,.<.2X,XuX+. .X.X.X.X.:XuXX8X6X .X.X. . .8X3XyX,X,X2XX6XX.X.X.6X:X8X2X2X1X0X,.>.>.5.4X2X,X,X2X1XqX,.0X1X,X,X,X,XtXXqX,.4.wX.,.,.qX1X,XyXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXHXBX[ ^ Q c.Q.'.]..XzXzX.X.XzX@XdX.X.X.XdX@X'.zX.X.X.XdX X.XdX.X|..X|.|.|.(.~ ! Q ZXVXFXZXVXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.l >X>Xv x :X-X:X:X:Xl w v v v v v v j k p v b v v z g -X2.*Xa / eXiX} k g *X=Xk :X5X-Xp h h z g g @ a z z g h -X-Xx p k @ z b v 3 - @ a l l a 5 c z 5 2.=.g :Xn ;Xv v z a a v z @ d h @ @ h g z +.o.X.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.oXDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXZXVXBX{ ~ ^ ` T w.i.i.a.a.a.i.a.a.a.f.i.i.a.a.i.a.a.a.a.a.i.a.f.z.i.a.z.a.a.a.~ ! S ZXFXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZX,X,X2X.>.,.,.<.wX1XyXv j v > | c @ > } @.g k *Xw n 6 @ 7 3 < < 4 4 =.2 2 7 < 7 aXv 2 i .. .o.O.{ j gXn g j d sX8.4 4 3 6 2 3 k k -Xb % 6 + 4 z n + ;X6Xs x ;Xb -X:Xw sXl k n g a v *Xg b :.>.>.,.4.:Xk <.,.>.,.9.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXZXZXnX} Q ~ ` b.F.].~./.(.~./.!./././.(.^.^.^././.!.~.~.~.~.T.T.~.T.~.~.[.T.F.S ! } fXHXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXyXyX3X<.>.4.-Xv 4.4.4X1Xv ,Xv b b -Xx l b -Xb 2.x 8.j 9.,.,.<.4X7XO.O.X.X.o.O.o.8Xb 4 g z n c l k =X*Xg v } / / / / ;Xx d n z + z sXg k ;XwXtXwXwXwX9X-.>.-.-.-.-.>.,.5.8X:X6X8X;XeX0X;.-.>.5.2X,X2X,X>.qX1X:.>.>.>.4.0X;.,.5.1X.4.4X4.9.5X6X+.3X2XtX<.>.>.9.1XwX0XwX2X>X6X.. .X.X.X.3XuX=X2.,.,.,.,.<.yX,X>X,X8X8X6X6X:X>X2X2X,XyXtX,X>X2X.wX1X,X,X1XtX0X-.>.0X2X,X,X,X,X2X3X . .6XyX1XwX,X1X,XX;Xl XyX:Xz k -X5.b l v v v g w ;X:Xb x h k g k p ^ @.@.7X:Xn a v sX@ :X>X:X:X:X:X:Xv v 2.b :X:X*X-X:Xz 4.qXv a @ + w x l z d - O sXgXp 4 7 j 4 b @ a d a - p O v -Xa n x @ d n x - +.o. .X. .X. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.O...hXDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXDXBX' / Q ' T w.u.i.i.z.a.a.a.a.a.d.i.a.a.a.a.a.a.a.a.k.i.k.k.a.i.a.i.k.i.d.~ ! S DXZXAXZXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX3X2XyX>Xz b *X5Xk z KX5 :X>Xk ;Xv >XwXj j h :X-X-Xk z 2 7 a - - l - - - l v g + n 7 h x 3 lXv @ 4 3 O 2 7 g 4 a 5 < ] O.o.o...o.x + g 4 w z @ + @ l 7 7 7 j ;X-X:Xb h q.=X z x + -Xk @ g - c eX6X@ b z + + @ z -X;Xb b <.4.wXwXyX6X6X7X{ M.{ 7XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXVXFXCX_ / ! _ n.F.L.~./.~././.!./././.(.(.^././././.^.~.~.T.~.T.~.T.~.T.~.~.K.~ ! [ BXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXyX1X4.-.-.9.1Xx b b ;X-Xl .>.,.,.>.,.,.>.>.,.,.,.-.5.4X2X3X;.-.-.-.-.-.,.0X2X,X1XqX4.0X;.-.>.4.1X4XwX,.5.4X1X4XwX4.wX,X2X,XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXVXFXFXVXFXS ~ ) b.b.F.U.Y.T.T.Y.!.T.~.~.~.T.^.~.~.T.~.T.T.T.T.~.T.~.~.~.T.~.T.T.~.~.~.~.T.T.T.T.T.T.T.T.T.T.~.~.~.~.!././.~.~.~.~.~.~.~.~.~.~.~.~.~./.~.!.~.~.", "A N N C C N B B N C C N C N C N M M V M N N N C N C N C N C A C A C A Z N C N C C A C C C N C B B B C B B C C C C C Z C Z C C C C C Z G C F C Z C C C C V A C B C C B A C B C C C C C C C C C C C C C B C Z C Z C C Z C Z C Z Z Z A Z Z Z Z Z D D Z D D H H H D Z S Z H J Z L Z H Z H H H H L U H L U T L.T.L.L.Y.U.U.U.U.U.T.P.Y.P.P.T.T.~.~.T.T.~.~.~././.(.(.(.(.|._.|.|.|..X'..X.XdX.X.XdX.XdXcXdXcXcXnXcXcXxXxXxXxXxXxXxXxXxXxXdXxXxXxXxXzXzXzXzXzXzXxX.X@XxXdXdXdXcX.X.XdXzX'..XxXdXdXzX.XdXdX.XdXdX.X.X.X.XdX X.X|..X.X.X@X X X.X.X|..X|.|..X|..X.X.X.X.X.X.X.X|.|._.|.|._._.`.(.(.(.(.(.^./.(././.(.(./.(./.(.(./.(.)././././.(.(.(.(.(.[.(.{.(.[././.(.(.!.(.(.(.(.~ ! Q ZXAXAXZXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX1XtX:.:.1XtXwXtX3X+.+.,X2XtX0X0XwX,X1X1X,X3X6X..X.X... .3XtX-X# j qXqX0X0XwX1X>XyXtX,X2X>X>XuX,XwXtX4XqX:.wX,X,X>X,X6X.... .X.X.X. . . . .X.6X:X>XtX.5.2X,X,X1X0X:.>.-.,.wX1X,X,X,X2X>XtX+.....X1X2X,X2XXv 2.,.:.:X-X;XXx n @ *X:X*X6X, *Xj 4.< - 2 3 7 l g a a p z a -X:X*X*X*Xl g 4 sXn + f 8.l 2 7 z - l @ w > | o.o.X.X.6Xl 7 4 6 @ + h x g w a @ a a p - l 4 kX8.< + + g :X;Xj g c M.iX/ z g k -X:X-X;Xz + + z wX>X2X6X+. .{ 6X6Xm.{ M.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXFXZXVXBX} ~ ! ` b.F.].~././././.!././.!./././././././.~.~.~.~.~.~.T.~.T.~.~.T.F.! ! ' MXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDX3X1X9.>.:.wX2X;X;X;Xx b l 4.<.v 5.;.1.4X5.<.4X1XqX:.2.b b b b l b k a p h w h 5 a d 3 4 ! | | > =X=X=Xk { X.X.o.O./ z z h + @ g h + h p b 8.2.2.8.2.v 2.b v 8.b 2.2.b 8.4.9X4X1XqX-.>.>.>.>.4.1X,X,X2X.qX1XwX1X0X4.wXwX0X;.4.tXwXtX,XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXVXFXFXVXGX~ ~ ~ [ n.F.Y.T.T.T.T.].~.T.T.T.T.T.T.~.~.T.~.T.~.T.T.~.T.Y.T.~.T.~.T.T.T.~.T.~.T.T.~.T.T.T.T.~.T.~.T.~.T.~.T.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.", "m C C N N C B B C C m A N C N C N N N A A B C N C B C C C C C C C C C C Z C C A C C C C N C C C B B B C B C C C C C C Z C C Z Z D C Z C C C C C C C C C C B A A C C C B C B B C C C C C C C C C C C C D C C C C Z C Z Z Z C Z B F Z Z D Z Z D D D D A D D H H D H J H H J D H J H H H H Z D L Z L L D [ Y.U.U.Y.U.T.U.U.U.Y.P.P.P.T.P.P.T.T.T.Y.~.!.~.~./.(.(.(._._.|.|.|. X X.X@X.X.XdXzXxXzXzXxXdXcXcXvXcXcXcXxXxXxXxXcXnXcXxXJXxXdXxXzXxXzXxXcXzXzXzXzXzXzXzXdXdXxXdX.X.XcXdX.XxX.XdX.XdXdX.X.XzX.X.X.X.XdX.X.X.X'..X.X.X|..X X X.X.X.X X|..X X'..X.X.X@X X X|..X X|.|.|.|.|.`.`.(.(.(.!.(./.(.(./././././././././././././.(././.^./.^.(.(.(.(.|.(.(._.(.^./.(.)._.(.(.(.! ! Q ZXZXHXZXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX3XtX1X4.,.<.wXwX,X2X2X+.+.3X2X1XuX2X2X>X>X7X....X.X.X. .+.>X2X# # -XuX1X1XtXtXwX1X1X2X2X,X,X,X1X0X>.:.wX4.,.:.,X,X,X,X1X8X:X6Xo.o.X. .O.6X3X8X,XyX,XyX,X2XwX>.-.-.>.>.wX2X,X2X0X-.>.-.-.>.0X1X,X,X,XyX>X8X .6X6X6XyX,X2X2XwX:.5.1X2X2X1X2XX2X2X2XtX,X,X-X-Xb k -X-X-X-Xg v -Xv -Xz z -X-Xp p z b -X;Xd @ @ @ @ d z :Xb v ;X;Xx z x 0X:Xj 9Xp v v k z z v g l 7 7 sXgX+ W W o h 5 @ l z + x a | ;Xs - @./ - v :Xp + O *Xz - @ d v v v / +...X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.7XFXFXDXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXHX' ~ Q ` T p.i.i.i.f.i.a.a.i.i.a.k.i.a.a.a.a.a.a.i.i.i.k.i.f.i.i.k.i.i.i.! ! ^ ZXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX:Xb x @ @ n v @ h yX:XyX2X,Xl 8.x *X:X:X;Xb *X7 2.7 - 7 7 7 l k 4.k p j j :XuXyXuXuX;X2 2 6 4 w x lX8.h x w gXKXO sXg / O.o.o. . .;X=.< kXsXO sXaXz - :X@.p k 9Xk b 4 g w 4 g k l z z h k } Z / @.:X1.qX;X;X;X;Xw @ x v yX2X7X..6X6Xk 5X9.,.:.,.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXFXFXBX' ~ ^ ) b.F.!./././././.(./.(.(./.^./.^.[././.^.!.~.T.T.~.~.T.~.T.~.T.L.! / ' BXDXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX1X9.>.9.4X1X4XyX4.,.4.v <.1.v b 2.4.wX9.:.wX1XtX0X9.,.,.,.<.b ;X*Xj k k j *Xk j k 2 7 u 0 * x g @ s f } .X.X.| c k k 7 n { h s *X-Xd p - @ d d p k v @ 3 @ - z z d a b ;.5.1X.0X4X2X2X,X1X0X;.-.-.>.qX4X:.0X1X:.>.-.;.-.-.,.,.qX1XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXVXZXZXVXFX~ ~ / U b.G.K.T.T.T.T.T.T.T.~.T.~.T.~.T.~.T.~.T.T.~.T.~.~.T.~.T.~.T.T.~.T./.T./.~.T.T.T.T.T.T.~.~.T.T.~.T./.T.T.T.~.T.(.T.~.~.~.~.T.T.~.R.~.~.~.~.Y.", "C N N C A N N C N N C N N N N N V A N C M N N C V B C N V Z C C C C C C Z C C C C C A C C N C N B C C B C C C C C C C C C C C C B C C C C G C C C C C C C A B C N C C A C u C C C C C C A C Z C Z C C C C F Z C Z C C C B C Z Z C C Z B Z D Z D D D D H H D F H H Z Z H Z H H Z H D H D L H H H Z L L T L.Y.U.Y.U.U.U.U.U.L.U.L.P.P.P.!.T.~.~.[.~.~.(.[.(.^.(.(._._._._.|.|. X.XdX.XdXdX.XzX.XxXdXcXdXcXdXcXcXcXcXcXnXnXvXnXxXnXdXxXcXxXxXxXvXxXdXcXxXxXxXzXzXxXxXdXdXdXxX.XdXxXzX'.#X'.dXdX.XdXdX.X@XdX.X.X.X.X.X.X'..X.X.X|.|. X X.X.X.X X.X|.|. X|..X X X X X.X.X|..X|.|.|.|.`.|.`.(.(.(.(.(././.(./.!./.(.!.(.!././.!././.!./.{./.(.(.(.(.!.(.(.(.(.(././.(././.(.(.[.(.~ ~ S ZXCXFXFXFXAXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX3X2X2XtX:.-.;.>.4.4XyXyX7XO.+.3X.>.5.wXtX,X2XwX;.5.5.>.>.>.0X2X,X,X,X,XX2X .6XtX1XtX:.,.>.5.tXwXwX2X1X2X2XFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXCXCX' ! ! [ m.].'.zX'..XzX.X'..X.X.XxX'..X.X.X.X.X.X.X.X.X.X.X'..X X|.'.`.]./ Q S ZXAXFXFXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXo.} v k k s ,X1X1X1X1X1X:X0X2.2.2.2.-X-X:X-X:X-X;Xj 2.9XwX:X2.b d b -X-X:X:X:X:X:Xk d a a p a p d p @ -X>Xg j p z g z w b k h d g g sXn + -Xf p z z g b 5 sXIX+ @.| ; z -X-X-Xb :Xp sXx k l *X-Xb d x v - +.O.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.oXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXBX[ ~ ^ { E T i.f.i.i.a.i.z.k.i.z.a.a.a.a.a.a.i.i.k.a.a.a.k.i.k.f.k.f.f.i.! ! S ZXDXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX>Xn n g w a + @ g ;Xv ;X;X;X4 4 4 ;X;Xz z p b 5 a w d x l 7 7 j 5.*Xk j k -X2XyX:X;Xl 4 < 2 2 l 5 ;Xj 7 j z sXx + gX8./ o.X. .O.O.O.j 1 sXq.< gXn + l :X;Xk g j *X;Xz *Xg l g b v w @ @ v b w ; z :X0Xb e z h h h z x @ 6X} .8X,X:Xv wX;.-.-.;.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXCX' ^ ^ ` b.F.!.~././././.(./././.(.(.^.~.E.(.~.[.~.~.~.~.~.T.~.~.~.~.[.F.! / ' BXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXyX,XtX0X4.wXwXwX<.:.0X.-.<.wX.0X2XwX,X2X0X>.5.wXwXwX,X,XtX:.>.;.,.4.0X4.2XwX;.>.-.-.-.<.wX0X,X2XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXDXFXVXFX^ ~ ' d.n.U.Y.~.T.T.T.T.T.T.T.T.T.~.T.~.T.~.~.T.~.T.~.~.T.~.T.~.T.~.T.T.T.T./.T.~.~.T.~.T.~.T.T.T.~.T.T.T.T.~.T.~.T.~.T.~.~.T.T.T.~.~.~.T.~.Y.~.~.~.", "C V A N V C V B B N C N C m F M N B N B V B C B C N C N N C C V C Z A C C A C A C C C C C C Z N N Z N C B C C C C C C C C Z C C Z C C C Z C C C C C C C C C C C N C C N C C C N C C C C C C C C C C C C C C C Z C C D C C D Z C C D Z Z Z D Z D Z H H H Z H H Z Z L J Z H H J D Z H F H H D Z H H H H [ L.U.T.U.U.Y.Y.T.Y.L.Y.L.T.U.T.T.T.T.T.~.~./.(.^.(.(.(.^.`.`.|.|..X.X.X.X.X'.dXdXzXzXzXzXdXxXzXxXxXcXcXxXcXxXcXcXxXxXcXcXxXcXxXxXxXxXxXcXcXcXcXdXmXdXcXdXdXdXdXzXdXdXxXdX.XzX.XzXzX'.zX'..X'..XzXdX.XdX@X.X.X.X.X|..X.X.X.X.X.X.X.X.X|.|.@X'.'.`..X.X.X.X.X.X X.X X X X@X_._._._.^.(.^.^.(.(./.!./.~.~.~.(./.^.[./.(././.(././.(.).(.^.(.(.(.(.(./.(.^.^.^.(.(.(.(.(.~ ! ~ ZXAXFXZXFXVXAXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXyX,X,X1X4.,.>.>.<.wX2X>X2X+. .X.+.X. . . . .X.o.X.X.o.o.+.2X>XyX1X>X2X5.-.qX4.>.>.-.;.<.wX4.9X1XuX0X0XwX4XuX2X5X2X2X0X>.>.:.tX5XtX>X>X>X>XiX6XeX0X5XX8X6X>XtX>X6X..6X.>.>.,.>.:.qX0X0X0X0X9.>.,.,.:.-Xk k a :X0X0X0X0X0XqXwX*Xj 0Xk k 0Xk k 0Xa x ;Xv v d z v z h z v v 2.-Xs p p p -Xp h a + z g a 6X8.O - - p g :XuX;Xg v p n g + x >X>X>Xz l x z +. . .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.7XGXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXBX[ / ! [ T w.i.s.i.d.i.a.k.k.i.z.x.a.a.a.a.a.a.a.a.a.f.a.a.a.a.g.i.a.a.i.~ / S AXZXFXFXFXFXFXFXFXFXFXFXFXZXDXFXFXFXFXFXFXFXFXFXFX;X@ @ @ l ;X;X:Xz z v v z z v g z w z - z k z z l z x z z 4 < + p k k -X:X>X1X2Xv v b b b 7 7 z 2 2.2 2 7 d - 5 @ x l / O. .X.X.X.O.n x v p + g - 5 g z h g v v -Xb h z k v w z s ;Xl p ;X;Xh p g h d p p k ;Xp g k t Z O.6X6X5X3X:Xk <.;.-.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXAXAXBX{ S S _ b.Q.!.~.(.(.!.(./.(.(./.(././././.(./.~./.~./.~./.~.~.~.~.~.T.F.~ ~ [ BXHXZXDXDXZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX9.<.wXtX<.,.>.,.>.1.4X,Xv 9.>.>.<.b x ;X<.;.>.<.1X4X5.>.>.>.-.<.b v v v v v v v v -Xv j *Xk j k :XKX+.o.X.X.o.+.u b a 5 / | | @.=X=X=Xs w W @., x { p @ z sX8.< d l b d b <.-.0X4XuX,X:.>.,.-.,.,.;.wX1X4XwXqX;.;.>.9.1XwX:.4.0X;.-.>.5.4X1XwXwXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXZXFXFXZX! ! / T n.K.Y.T.T.T.I.T.I.T.T.T.T.T.T.~.T.~.T.~.T.^.T.T.~.~.T.T.T.T.T.T.~.T.~.~.T.T.[.T.T.P.~.T.T.~.T.Y.T.T.T.T.T.T.T.T.^.T.T.T.T.T.T.~.T.~.T.T.T.~.", "N N M B M N C B N V N V M N m B B N B N B B B B N C N C C C C A C C C C C C C C C A C C N C N C B N C N B N B C A C C C C C C Z C C C Z C C Z A C C A C N N C N B B C C C C C C C C C C C C C Z C Z C C C Z C C B D B C C C C Z Z B Z C Z D D G Z Z Z Z H L Z L H Z L H H H Z H H Z J Z H H H H H D H Y F.L.T.T.T.T.P.P.U.L.U.U.U.T.T.T.~.~.~.~./././.(.(.(._.`.`.|.|..X X X.X.X@X.XdXdXzXzXcXzXdXzXxXcXcXxXcXcXfXnXcXcXcXcXxXcXcXxXxXxXxXxXxXzXcXdXcXvXdXdXdXdXxXzXzXdX.X@XdX.XzXzX.XzX@XzX.XzXdXdX@X.X.X.X X.X.X|..X.X.X.X.X.X.X|..X.X|. X.X.X'.|..X.X.X|..X.X'.|..X|..X X X|. X|._._.(.(.^.(././././././.~.(.~./.!.(.~./././././.(./.[.(.(./.(.(.(./.(.^.(.^.^.^.~.(.(.(./ ! S ZXAXAXFXAXVXZXFXDXFXFXFXFXFXFXAXFXFXFXFXFXFXFXZXSXyXyX2X,XwX0X0X<.>.,.4.1XtX3X8X+. . . ...+.8X8X+. .X.X.O.+.yX2X2X,X4X5.,.;.tX4.>.-.>.-.-.,.:.-X-X*X:X:X-X-Xv -X:X:X2XyXwX4.>.0X5.:.tX>X>X>X>X8.eX:X5X1XwX,.,.wX4X1X,X,X2X,X2XtX2X2X2X.-.>.>.>.>.-.-.-.-.-.-.-.>.>.,.,.>.-.-.-.-.,.2.0X0Xv 2.,.>.>.,.,.,.,.;Xp k s g k s g k s d a d b ;Xd z -X-X:X;Xb :.0X:X:X;X:X-Xa +.| - z g a + + a d z d a z v g l -Xk p + p h k -Xk z 5 -Xf X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.O.oXDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXSX' / Q ' T w.s.d.f.i.k.a.i.a.a.a.f.a.a.a.a.a.a.a.a.f.z.a.g.i.a.a.a.a.a.s.L / Q ZXVXVXFXFXFXFXFXFXFXFXFXFXZXZXDXFXFXFXFXFXFXFXFXFXz z - -Xx :XuXuX;Xz *Xv + h p 5 *X;Xl c n - k *Xs g + < 3 p @ *X;X-X-Xv :X2X,X>Xn 2.,.:.2.b 8.b z 7 7 2 7 5 5 v 5 @ + / O.X.X.X.X.X.O.O.o.6Xg 5 + 4 h h l z z c n n k b :X-Xb x :Xn k yX>Xk 0Xp a 2.9Xk g j s } 7XO.6X6X>X1XwX,.2.v 1.-.-.;.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXFXAXAXBX[ ! ! _ b.F.R.~.(.)././.(./.(.{././.(././.).!./././.~./.~.~.!.~.~.(.T.K.~ ~ ' BXDXCXGXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSX4.,.,.,.,.,.,.,.,.9.4X2Xv 4.,.,.,.4.:Xv 4.>.,.1.1X4X5.,.,.,.,.<.b 4 7 7 7 7 7 7 7 z -Xj k k j k -X+. .X.X...7Xb w - p g w r > 5 g k s k 5 > % a a + a a g + + 4 a + - z b 8.8.:X;X;X;X;X2.2.8.8.2.2.-X;X:X1X3X0X;.>.5.wX:.>.4.wX:.-.>.4.wX<.>.>.ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXVXAXZXFXFXZXS ~ ' [ n.F.Y.T.T.I.T.U.U.T.T.T.T.T.T.~.~.T.T.T.~.T.^.~.~.T.[.T.T.~.T.~.T.T.T.T.T.~.T.T.T.~.~.P.P.!.T.Y.T.Y.T.T.!.T.~.T.T.T.T.T.T.T.T.T.T.Y.T.T.T.~.", "V N V N V N V B C V V V V V V V N B B B N B B B C N N C C N C C C C C C Z C C C C C C C C C Z N B C C C B C B N C C C A C C C C C C Z C C C C B A N C C C C C C B C C B B C B C C C C C C C C C C C D C C F Z C C H C C C C C C Z C D Z Z D Z Z Z H Z H Z H Z J H Z H H Z Z D D H H H H H Z H H H D H U L.L.U.U.I.U.Y.T.Y.U.U.U.U.U.T.T.T.~.~././././.(.`.`._.|.`.|..X|..X.X.X.XdX'.dXdX@XdXzXzXzXnX@XdXvXxXnXxXvXcXdXnXcXxXxXxXxXxXxXxXdXcXcXzXdXcXcXcXmXdXzXzXdXxXxXdXdXdXdXdX'..X.XzXdX.XzX.XdX.XzX.X.XdX.X.X|..X.X|..X.X.X X.X X.X|..X|..X'.'._..X.X'..X X.X.X.X.X.X.X.X.X|.|.|._._.`.^.(.(.(./././.[.!./.^.(.~.(.T.(./././.(./.(.(.^.^./.(.(.[.(./.(./.[.{.^.(._.[.(.(.~ ~ ^ FXFXAXZXDXVXAXFXFXFXFXFXFXFXFXGXSXFXFXFXFXFXFXAXDXyX.-.-.-.:.v 8.w -Xv 8.w + sXsX-X>X;X*X-X4.,.9XwX>X:X>X:X>Xb z -X5XXtX6X6XtX2X5.;.qX1X3X6X6X3X>X4X0X>.>.>.-.-.>.,.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXBX' Q Q c.n.].'.dXdX.X.XdX'..XzX.X.X.X.X.X.X.X.X'..X.X.X.X.X.X|. X'.`. X(.~ Q Q ZXVXFXZXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXO.+.v .-.-.-.-.-.-.-.>.>.:.b 2.,.;.-.-.-.>.,.5.0X2.0X9X9X9X0X0X:Xk 9Xa ;X1X3X:XwX1X4X:Xb <.9X-Xb v -Xb @ W W $ ;X:Xz a p - p a a @ p *Xz x -Xk g g p d j 9.*Xw @ -X5XX,X1Xv :X5X2X1X-X2.;.-.,.,.;.:.2.;Xv 7 4 w aXaX+ eXg / O.X.X.X.X.X.X. .O.+.b 8.z @ a sXsX5 n { iXQ z b b g 6X:X- -X-X-X2X>Xg j s p j j k 6X} | O.6X6X4XuXtX0X4.wX.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXAXAXAXFXBX} ! ^ ` b.I.!.(.(.(.(./.(.(.[././.^.(././.~.!./.~.~.~.~.~.~.~.~.~.~.T.K.~ ~ _ BXZXZXZXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXn 2.n 2.2.2.b x 2.;X;X;Xl b n j 8.b ;Xx b b 2.b -X;X;X2.b 2.8.b b 7 < < < 7 2 < < z v v v v v *X} .. .X.O.+.3X;Xw w k k a h *Xj 5 h 5 a a h k *X5 5 k *X9 n { n p z - h h 4 5 - a a @ - d a a d d d @ @ b 2X1X1X0X;.-.-.-.-.>.,.-.>.-.-.>.-.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXAXZXDXFXFX~ ' / [ n.L.Y.T.I.Y.I.T.Y.I.T.Y.~.T.T.T.T.T.~.T.~.~.T.~.~.T.~.T.T.~.T.T.T.Y.T.~.T.T.T.T.T.T.Y.Y.Y.P.~.Y.!.T.T.T.!.T.T.T.T.T.T.T.T.T.T.Y.T.T.Y.Y.T.T.", "N V N V M B V B N V B V M M N V N B B B m B B B V C C N C C C C C C C C C C C C C C C C N C N C Z N B B B B C B C C C C C A C C C C C C A C C A C C C C C C N C C B C N C B C B N A C C C C C C C A C C B C C C C B C C C D C F Z Z B Z D B Z Z Z Z Z H H Z Z H H L J Z Z P Z Z F H H Z H J H H Z H H I S.U.T.T.U.Y.U.Y.L.U.U.U.U.T.T.T.T.~.!.~.(.(.(.^.`.(.|.|.`.|.|..X.X.XxX.X'.dXdXdXdXdXzXzXdXdXxXxXxXxXcXcXxXxXJXcXcXcXxXxXcXdXxXxXxXcXcXdXcXdXdXdXcXdXzXzXdXdXdXdXdXdXdXdXxX.X.XdXdXzX.XzXdXdX'.dX.X.X.X.X.X.X.X.X.X.XdX.X.X|..X|. X.X.X X X'..X|..X.X.X.X.X.X.X.X|..X.X|. X X`.(.`.(.(.(.(.(.^./.~.~././.~.(.T.(././.(./././././.(.^.(./.(.(.(.^.(.(.^.{.(.(.(.(.(.(./ ! Q ZXFXFXDXFXVXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXAXDXyX2X5.<.tXwXwX,X4X9.:.tX2X,XtX>X>XuXtXtXyX,XuX7XX.X.X.X.o.+.>X,X2XO -X4X5.qX1XtX0X4.,.,.:.0X:XsX8.-X:XsX8.l gXx g -Xz 8.5 p *X-X:X>X*X*X:X5X:X*X>X5X,X,X1X5.;.wX2X1XwX;.qXqX,.0X4XqX,.0X1X,X,X,XuX6X6X,X,X2X.9X2X,X8XO.7X8X1XwX0X5.;.,.4.eXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXZX' Q ^ c.m.].'..XdX.X@X XdX.X.X.XzX.X.X.X.X|..X.X.X'..X.X.X.X X X|..X`.].~ ~ ! ZXVXFXZXAXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.8Xv 4.>.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.:.b 2.,.;.-.-.-.-.;.>.>.;.-.-.-.-.-.,.*Xg k a ;X1XuX>X9X-Xb b x b b d - p p h @ - @ a x b f @ =X6X- g d sXl k k *Xv - 2.5.-X- j 9Xk + sXx k 5X6X . .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.oXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXSXAXCX[ ! ^ { T w.i.i.i.g.f.f.a.k.i.k.z.a.a.a.a.a.a.a.a.a.a.f.i.a.a.a.a.a.i.a./ ! ^ CXZXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXn x k :Xv :Xk v v z *X>X8.8.x h >XuX| / W f eXl + KXg g j b b @ :X1X5Xv :XyXyXuXv 8.,.>.:.=.2.4.;.:.8.b v x KXx + gX8./ .X.X.X.X.X.X.X.O.O.} sXeXa z sXn @ ~ ! ' W *X;Xv g v =X*XuX>X5X>X,Xn } / } { } } o.7X6X6X1XtXwXwX:.,.5.uX-Xg -X;Xj j 0XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXAXAXBX' ! ^ ) b.F.!.~././.(.{.(.(.(.(.(.^.(.^././.~.~./.~.^././././.~.~.~.[.F./ ! } BXHXZXZXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHX:X;Xb b b x b b b ;Xb b ;Xb -Xn *X;X;Xb b b l k *Xk z l n f f a h h z z a 5 z w d l @ @ d @ f 6XO...o.o.O.Xb l :Xk k x 8.d -Xz b z @ z sXd k z sXg b S eXiX/ 5 2.2 + 5 8.sXO d } / + p | | + p } / o b 2X.-.-.4.0X0XqX;.-.-.>.>.-.ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXFXDXFXFXS / ] T n.Y.L.T.T.U.U.U.U.T.T.~.T.Y.Y.T.T.T.T.T.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.P.~.P.~.Y.T.T.P.P.Y.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.T.T.", "B N N N N N N N V N N V V N V N N B N B N N B B C C M C C C C C C C C C C C C C A C C C C C N N B B C N B C B C C C C C C C C C C C Z C C C C C C C C C C C N N B C B C N C C C C A N C C C C C B C C C C C Z C C C C C C C H C G B B Z Z Z Z Z Z U Z Z Z H Z H D H D Z H D H H H Z H H H H H H H F I U F.U.Y.T.U.U.Y.U.I.U.T.T.T.T.T.T.T.~././.^./.`.^.(.|._.|.|..X|..X.X.XxX.XdX@XdXdXzXvXzXzXnXxXxXxXxXxXxXcXnXxXxXnXxXcXxXzXxXnXcXcXcXcXcXnX@XdXnXdXzXzXzXzXzXdXdX.X@XdXdXdX.X.XzX.XdX.X'..XdXdX'.xXzX.X.X.X.X@XdX'.'.'..X.X.X.X.X|.'..X'..X.X.X.X.X.X@X X'..X.X.X.X.X.X X|.|.|.|._.(._.[.(.^.(././././.[.!.(.(.(.~././././././.(././.(.(.(./.^./.(.[.(.(.).(.(.(.(.{.(./ ! ^ ZXZXZXDXFXFXAXFXFXFXFXFXFXFXFXDXDXAXDXFXFXFXFXDXAXyX3XwX:.>.>.,.4.1XtX:.4.2X,X,X,X,X,X,X,X,X,X>X6X . .X.X.o.+.3XuX>Xk -Xj :.,X2X:X:X;X2.2.0X-Xl n l v z v h O a g v l x kX8.h 5.b k :X1XwX:.0X>XuX1X>X,X,X,X2XwX,X2X,X,X0X5.,.,.qX0X;.,.0X1X,X,X,X:X7X2X2X,X,X2X9X>.,.0X1X2X:X6X6X..7X8X1XwX0XtX1XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXCX' ! ~ ` m.hXdX'.@X XdX.XdX@X.X.X.X.XdX.X'. X.X.X|.'..X.XdX.X.X.X X X|.^.~ Q Q ZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXGXGXo.6Xb .-.-.-.-.-.-.-.-.-.-.-.;.,.b v v x v b b -Xv w - O @ l :Xv | -Xp l p p d p p d d a =X6Xf a g n g p k >X:Xh j qXk w a d @ @ n z a >X1XXl @ k -X@ 4 + z ;X;Xw r : @ z @ + a - < < @ @ a v :X;Xh -X-X;X;Xv b b 4.,.2.2.b 9.-.,.<.;X- + 4 + x c | .X.X.X.X.X.X.X.X.O.| } | u u / S z u W @.} 7X8X;Xn 7X6X7X6X7X6X6X7XX.6X7X6X7X6X6X6X5XtXwXwX:.>.-.-.>.5.:Xv -Xb -X;X-Xv DXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXFXAXAXCX' ! Q ` b.F.!./.(.~./.(.(./.^.(./.(.(./././././.!./.~./.~.~.~.~.~.T.[.K.~ ! ' BXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX1X1X5.,.;.>.,.9.4X1X2X4X5.1.wX>XtX4.;.,.4.v =XiX=Xh I eX0X@.g 4.*Xz 2 q.h @ l kXsX+ x 8.z | . .....O.6X>X>X-Xl ;Xw @ x 6Xa @ z n x a x 8.p @ l { a @ n Z | @.4 2.2.@ z sX8.3 f X.W + - +.| - - W +.- -X2X2XtX.5.4X1X4XwX>.<.wX0X:.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXAXFXFXVXGX~ / ~ [ n.F.U.U.U.U.U.U.T.U.Y.T.T.T.T.T.T.T.T.T.T.T.~.T.T.T.[.U.T.T.T.T.T.T.U.T.T.T.T.T.T.T.T.Y.T.T.Y.T.T.~.Y.Y.T.T.U.[.T.T.T.T.T.T.T.T.T.T.T.T.U.T.", "N V N N M M N V N B N N N N N N B N B B B B B C C N N C B C C C C C C C C N A C C C C C N C C C N C B C C B C B N C C N N C C N C C C C C C C C C A C C C N C C C B C B C C C B A C A C C C C C C C C C C C C C F C C C C C B C B Z Z D Z Z Z Z Z Z Z Z L Z H H D L H H H H H H H S H H H H H H P Z L U L.U.P.P.U.T.P.U.I.I.U.U.U.T.T./.~././.[.~.^.(.(.`._.|.|.'..X.X.X.X.X.X.X.XzXdXdXdXzXzXzXdXfXzXxXxXxXxXcXxXvXvXxXcXxXxXxXxXdXxXxXnXdXdXdXdXcXdXdXzXzXzXzXzXdX.XzXzXzX.X.XzXzX.XzXdXdXzXzXdX.XdX.X.X'..X.X.X'..X.XxX@X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X X'..X|..X|..X.X|.|.|._.|.|.|._._.(.(./.(././././.[.(.~.~.(.!./.[././././././.(.(.(./.(./.(.(.^.(.(.(.(.`.(.(.(.S ! Q CXVXZXFXFXAXVXFXFXFXFXFXFXFXFXDXAXDXAXFXFXFXFXAXDXyX,X1XwX0XqXqX9.wXX.>.5.2X2X,X2X8X6XtX,X,X,X2X2X1X0XqXyX2X,XyXtXuX3X6X7X6X6X8X,XtXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXBX` Q ^ [ m.].].dX XdX.XdX.XdX.X.X.X.X.X.X.X.X'..X.X.X.X.X@X'.|..X|..X|.]./ ^ S ZXVXFXZXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXGXo.} v 2X4.>.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.,.:.1.b g j h 4.>.-.-.-.-.-.-.-.-.-.-.-.-.4.j 8.2.b -X;X;Xb 5 c.c o -X>Xv W / h v k j | -Xs 2.k d O s O z w h - 5 a b b g a z 5 x :X-X;Xg h a g b .5.-X:XuX4XtXyX>X:XDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXAXAXBX[ ! Q ` b.F.].~.(.^.^.(.(.(.(.(.^./././.(././././.~./././.~.~.T.~.T.~.F.! S [ fXVXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXyXtX.;.,.,.,.-.:.<.v =X:X=Xz | { | t j 5.b d 2 2.b @ x gXz + b sX8.| .. . .+.| :X6X:Xv @ + a h h + a h h @ @ h h - p h h a a a - e $ w 4 4 g a h - @ 4 g % & h h - , p a = - - b 2X.qX4X,XtX0X4.yX1XwX:.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXFXZXVXFX^ ~ ~ e.b.K.T.T.T.U.T.Y.U.T.T.T.T.T.U.T.Y.T.T.T.T.T.T.T.T.T.T.T.~.T.T.T.T.U.T.T.T.T.T.T.T.T.T.P.[.T.T.T.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.T.P.T.P.T.", "V N M M N M M M N N N N M N N N N N B N V N N B V C C V B C C C N A A C C A A C N A C A Z N Z m C B C B B C B C B C C N Z C B B N C C C C C A C C C C C C C C N C B C B C N C N N A C C C C C C C C C C C C C C C B C D H B B C B Z Z C Z C Z Z D Z Z Z Z H L L H D H Z H H H H H H H H H H H H L H L I F.U.P.Y.P.P.P.P.U.T.U.T.T.T.T.~.~.!.!.^.E.{.`.(.{.`.|.|.'..X.X.X'.'.zX'..XzXdXdXzXzXzXdXzXzXzXcXxXxXxXxXxXvXzXxXxXxXdXcXzXcXxXdXdXxXdXdXcXcXdXcXdXcXdXdXzX.XzXzXzX'.zX.XdXdXzX'..XdX.XzXdX.X'.@X.XdX.X X.XzX.XdX.X.XzX'..X.X'.@XdX.X@X'.|..X|..X|..X.X|.'..X.X.X.X|. X|.|._._.|.(._._._.(.(.(./.!.(././.[.^.(.~./././.(.(./.).(./.(.(././.(.(.(.(._.(._.^.(.`.^.{.(.~ Q S ZXVXZXDXFXVXZXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXDXDXyX3X,X,X1X1X1X.<.wXtXwXtX,X,X,X,X,X,X2X>X6XX.X.X.X.X.+.,X>X2Xk 2.2.3XuXv g sXsXa - } s + aXsX*Xv l gXx 2.,.b 5 sXsX p p *X4XuXyXwX4.,.wX2X,X,X,X,X,X,X,X2X,XX2XyXyX6X6X2X2X,X,X2XyXwXtX4X1X1X2X,X2X,X,XtX>XtX6X6X7X6X8XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXHX' ~ ^ [ n.].'.'..XdX X.X.X.X X.X.X.X.X.X.X.X.X.X X.X.X.X.X@X'. X|. X|.!.~ ! ^ ZXVXFXFXFXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXVXo.} v X-Xv k v v k 4 @.| g k k d | :Xs g -X:X;X;Xg ;X;Xg + p *Xv >X1X3X@.Q > @.-X7X..X.X.X.X.X.X.X. .X.X.X.X.X.X.X.o.hXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXZXHX' ~ Q { w.w.i.a.a.a.a.a.a.a.a.i.a.a.a.a.a.a.z.a.a.f.f.a.a.a.a.a.a.i.s.i./ / S DXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXv @ *X*X@ k -Xv h 4 2.s - l sXx @ k 6X, + l x w ,X5X-X-X,Xk 0Xp z b k >X-Xz k b k -Xz z v -X4.,.-.-.;.x v b >X>X>X5X6XO.X.X.X.X.X.X.X.X.X.O.6X-X:Xb z *X:Xv k *X-Xk :X:Xv ;XuX2XwX,X4X>X1X5X1X1XtXwXwXwXwX:.>.-.-.-.-.-.-.>.4..;.;.;.2.2.8.2.8.8.2.8.k s s k g w e 0 h g k k g + O @ g a z 4 g a n z +. . . .@.f c , @.g h h w h h a v k 5 h h g h a w h g z h h p *X=Xk h a - h g w a h g d z h g n n z g p a a b 4X1XwX,X1X<.>.-.>.4.wX<.,.9.2X1X1.>.-.FXDXHXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXAXZXFXSXZX~ ~ ~ b.n.Y.T.T.T.T.T.U.T.T.T.T.T.T.T.T.U.T.T.T.T.T.T.T.T.(.T.T.T.T.U.T.T.T.T.T.T.U.P.P.T.T.T.P.T.P.T.T.T.~.T.Y.Y.Y.T.U.T.U.T.U.T.T.T.U.T.T.T.Y.U.T.", "N N M m M M M M N M M m M N N M N N N B V B B N C C N B B C A C C C C C C C C C C C C N N Z N C C C B C C B C B C C N C B B C C C C C C C C C C C C C C C N C C B B C C C C C C C C C C C C C C C C B u C C C C Z C C C C C C D C C Z Z Z C Z Z Z D Z H L Z Z L H H H J F H D Z H J H H H P H H L H H U Z.Y.P.Y.P.P.U.T.U.U.T.T.T.T.T.~.~.~.~.^.^.(.^.`.`.|.|.|..X.X|..X.X.X.XzX.X.X.X.XdXzXzXdXcXzXvXxXxXxXxXxXxXxXxXxXxXnXnXdXcXzXzXzXdXcXMXdXdXdXdXdXdXcXdXdXzXzXcX.XzXdXzX'..XdX#XzXzXdX.XzXdX.X'.dX.X.XdXdX@X'.dX.X.X.X'.'..X.X.X.X.X.X'..X.X.X.X'..X.X.X.X.X.X|..X|. X'.'.|._.{.|.|._._.(.(.(.(.(.[./././.^.T.[.(././.(.(.(.(./.(././././././././.(.[.(.{.(.(.(.(.(.^.~ ! ! ZXVXFXZXVXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXyXtX,X,X,X,X,X,X<.,.-.-.;.;.:.4.1X2X,X2X,X,XtXtX6X..X.X.X.X.O.+.,X,X1X1Xv :X:Xl z b n h > +.b z gXx k v @ @ 4 v 2.v l gXb + 6XsX;X>X-X-X*X-Xj :XyX,X2X,X,X2X,X,XtX,X2X2XwX:.,.qX1X1X,X,XyX8XO.:X1XtX.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.,.wXyX,X1X;X5 4 - - v ;X;X;X;Xn l v z - - a v v - @.| w v uXyXyX:Xv 4X,Xz sXl k v ,X5X3X, n x > 8X+. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.oXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXBX[ ! ! c.T T i.a.a.a.a.a.i.a.z.i.a.z.a.z.s.z.a.a.f.a.f.a.a.a.a.a.a.a.a.i./ S ! CXZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXh x z -Xz l n + @ j 5.k @ f } @.a n ;Xv 5 x w h .>.:.b ;X=.4 *X-X:X8Xo.X.X.X.X.X.X.X.X.o.+.u v ;Xn a sXsXa @ } Q o sXsXa l :XuX:.>.5.wX:XwXwXwX:.-.,.;.>.-.-.-.-.-.>.>.9.0X2X:Xk 5X<.>.-.>.5.1XDXZXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXBX' ! ! ` b.n.!././.(./.(./.(.(.(././././.(././.~./.~./.~./.~.~.[.~.T.~.F.! ! ' BXHXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXFX4X9.,.<.1X4X4X5.,.>.,.>.>.9.v @ 4 z 4 7 4 4 g g s @ g 4 5 5 g h h 5 g h z 5 @ a @ p g @ @ f +.O.X...W z eX- > l l n z @ l 8.k k z n z + z n l + z x l @ =X5XwXk a -X> + h n l @ d ;X;X+ n M.iX/ - ! | + b ,XwXtXwX0X;.-.-.-.>.,.-.>.4.4X1X:.-.>.FXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXFXDXFXAXDX~ ~ ~ c.b.Y.U.T.T.T.T.Y.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.~.T.T.[.U.T.T.T.T.T.U.T.T.T.Y.[.P.T.T.T.T.P.T.Y.T.Y.T.T.~.T.T.T.T.T.U.T.T.U.T.U.U.U.T.P.T.U.Y.", "M M M m m M m m m M M M M m m M V N N N B A V N N C N N C C C C C C C C C C C C Z N C A N Z N A B Z C C N C N Z C B Z C N C B B C N C B C C C C N Z C C C C C C Z N C C C C C C C C Z C C C B C C C B C C C C A C C C C C Z C C Z C C Z B C Z A Z Z Z Z D D H Z H H H H H H D J D J H J H L H J H L J U b.L.I.I.I.U.U.Y.I.T.T.T.T.T.T.~.~.~.~.(.(.{.^.(.|.`.|..X|..X.X.X.X.X.XzXzX.X.XzX.XvXdXxXzXzXnXxXxXxXxXxXxXxXxXxXvXxXxXxXzXzXcXdXzXdXzXzXdXvXdXdXzXzXdXnXzXzXzX.XzX.XzX.X.XxX.XzX'..XdX'.dXdX'..XzXzXzX'.zXdX.XdX.X.X.XzX.XdX.XdX.XdX.X.X.X.X.X.X.X.X.X.X@X_.|.|.@X|.|.|.|.|.|.{._._._._.(.(.(.(.(./.(./.(./././.!./././.(.(./.(././.!./././.{.^.(.(._.(.(.(._.(.(.).~ ! Q ZXCXZXZXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyXyXyX,X,X1X4.,.:.qX<.-.-.,.,.;.tX4.9.1X4X5.<.1X3X+.o.o.X.X.o...7XtX2XuXv 5 @ z O O 4 o & + O + 5 -X:Xz x -X-Xb g - 5 @ + b x :X:Xs j O g l -X2X2XtX2X1XtX1XwX:.wX,X2XwX,.,.,.:.wX1XtX:X7X8X1XwX,.wX1X:.-.-.-.-.;.;.:.0X1X,X,X2X.>.-.,.,.,.-.-.-.-.-.-.-.-.5.1X2X,XyX-X4 b @ a x z @ d p O h h z z k k z @ @ + o + s =X,X2X:Xk ,X:Xz n z @ l ,X2X:X> n b y ..o.o.o.X.X.X.X.X.X.O.X.X.X.X.X.X.X.O.7XDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXBX} ! S [ T r.s.i.a.a.a.a.a.k.a.a.a.a.a.a.k.a.f.a.a.f.a.f.a.a.i.i.a.i.i.a.! ! S ZXFXVXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXDXDXa v sXx @ v yX- @ j 5.;Xa f f v z l z a + + 4 g ;X;Xn n @ O h @ + + a v :Xv 2.;.,.>.1.0X-Xv x b 8.0XwX;X2 2 4 8X-X-X8X..X.X.X.X.X.X. . .+.n g k :Xv l sXM.@ z +.W , aX6X@ b l :XwX9X,.,.-.-.>.>.-.-.-.-.-.-.;.-.>.9.0X0X:X-X:Xk v 1X<.>.,.,.4.4XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXZXVXFXZX' ! ! I b.F.].!.(.(.(./.(./.(./.(./.(././././././.~.~.~.~.~.~.[.T.~.~.F.~ ~ _ BXHXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX3X9.>.>.9.wXtX<.-.:.qX0X0XwXx 2 2 7 2 =.=.=.l k k k z =.j s w O p k a z 6Xn h > } s p v 8.- @.O.X.o.+.n n > > z l b v @ l n z @ l n v @ z b v a l n x + =X=X=Xs l ;X:Xa z n x g a k -Xg c | ' @.- W +.- b <.;.-.,.>.-.-.-.-.4.qX;.>.>.5.wX:.-.<.GXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXAXZXZXFXFX~ ~ S [ n.F.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.T.T.T.T.T.T.T.T.T.P.^.T.T.T.T.T.U.T.T.U.T.Y.T.P.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.T.U.T.T.U.U.T.L.L.U.", "m M M m q m m N M M M m M M M M B N B N B N M C C N C C N C C C y C C C C C C B Z N N Z S N C C C B A Z Z C C A C B C N C N B N N C C N C C C N A C C C C A C C C C C C C C C C C N N C N N C C C B V C C C C Z V C F C C C Z C Z C Z Z Z Z Z Z Z Z D D D D P Z H H H H H H Z J Z H H H H L H J L L H U Z.Y.U.I.T.U.I.I.U.U.T.T.T.T.T.~.~.~.~.~.(.(.(.|._.`.|..X`..X'..X.XzXzX'..XzXzXzXzXzXxXdXcXdXdXxXxXxXxXxXxXcXxXxXcXdXxXdXcXzXzXzXzXzXzXzXzXzXzXdXzXzXdX%XzXzXzXzX.XzXdXzX'.zXzX.X'.zX#X.XdXdXzXzX.X.X.X'. XdXdX.X.XzXzX.XdXdXdX.X.X.X.X.X.X.X.X'..X X.X|.'..X X.X X X'. X|.|.|.|._.|._._._.(.^.{.(././.(.!.(././././.(./.(.!.(././././.!./.(./././.(.^.|.(.(.^.(.(.(.~ ! ^ FXVXDXZXAXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX,X.:.wX,X<.:.2XyX>X+.o.X.X.o.X.+.,X2X2Xb w sXsX3 j s w g sXsX+ sXsXj <.b v :X:X,X:Xv v v @ o 5 -X:Xj j z n z -XyXwX:.0X0X:.0X0X,.wX2X,X,X0X0X4.,.0X4X:X6X,XtXwX,.4.>XwX>.,.>.-.-.-.,.>.qX1X,X2X,X<.>.:.5.tXyXyXAXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXBX} / ! c.n.].'.dXdXdX.X.X.X.X.X'.'.'..X XdX.X.X'..X|..X.X X.X|.|.|.|..X].~ ! ^ ZXVXZXZXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXO.+.v b @ @ 4 v l -X-X=X;X4.>.-.-.:.wX-Xp h h p p a -Xz b d @ 4 z z a a 5 b b b b b j j ;X2.>.-.-.-.-.-.>.wX1X,X,X1X;XsXgX+ sXgXa - W -Xs p @ + d + + + z -X:Xv | -Xs .>.-.-.-.-.>.,.,.4.,X4XX1X:.<.0X:.4.1XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXDXZXVXVXBX' ! ! _ b.F.!./.E././.(.(.(././././././././././.^.[.~./.~.~.T.T.[.T.[.F.~ / ' BXDXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXyXtX:.>.-.;.-.-.:.wX1X,X1X2Xv 2 2 w b 3X1XeX7 *Xj k a 8.sXj - a k k 5 t } @.@ > } c a x kXeX| O.X.X.| f f / c z d - d h z @ g d z - @ h w - @ z h @ @ p k k k k d c z h @ w 5 a z p g p u % = ; d > - + x ,.>.4.0X5.-.-.-.>.4.4XwXqX-.,.,.>.,.5.FXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXVXDXFXFXFX~ ~ ) b.F.T.T.~.~.T.T.T.T.T.~.T.T.T.U.T.T.T.T.T.T.T.T.T.T.T.Y.T.T.T.T.U.U.T.I.T.T.U.T.Y.T.T.P.[.T.T.T.T.T.T.T.T.T.T.XXU.T.U.U.T.U.T.T.U.U.T.U.U.Y.L.", "M m m M N m m m M m m m N M M M m V N N N A V C B C N C C C C C B N D B C C C B A N N C N C C C B C C N Z C N Z N C C C N C N Z C N C C B C B C C C C C C A N C C C C C C C C C C C C Z C N C N C C B C C C C C C C C C C C C C C Z B Z Z Z C Z Z Z Z D Z D D Z H H H H H H Z H H H H H H L H H L H L U n.Y.T.I.T.U.U.I.T.T.T.T.T.T.~.~.~.~.(.(.(.^.^.`.|.`.|. X.X.X.X.XzX.XzX.XzX.XzXzX.XzX.XdXcXzX@XnXcX.XxX@XdXcXcXcXcXvXcX@XzXzXzXzXzXdXzXdXfXvXxX.X.XzXzXzXzXmX.XzX#X'.'.'.'..XzXzXzX.X'.'..X.XzX.X.XzXxX.XdXdX@XdXzX.XzXzX.X@XdXdX.XcX.XdX.X.X.XzX.X.X.X.X X.X.X.X.X.X X X|.|.|.|.|.|._._.(.^.(.(.(.[.(./././.^./.(.!./.!././././.^.)././.^.(.^.^.[.(.(.[.(.(.(.(.(.(./ S Q ZXVXFXZXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXyX3XtX,X,X1X9.;.wX2X2X1X1XtX,X4X4.>.-.;.:.5.wX,X,X>XuX+.X.X.X.X...+.tX,Xv x gXl 4 kXj @ x gXl w gXx *X5.b g n aXk :X*X>X-Xb ;Xx ;X;Xv v O O v yX,X4.,.;.>.>.,.>.wX2X,X,X2X1X1X0XtX8X7X3XtX:.,.4.1X2X2X0XqX5.>.,.>.9.0XtX1X,X } s *XyX4.-.-.-.1.-Xj j k *Xj p :Xb - d s -Xv - 6Xn g x @ 5 x z w sXaXj ,.-.-.;.-.-.;.wX1X2X2XuX-XsXn O aXn 4 d @.| O :X( $ z f v h v 1XuX:X@.W x 5X1X>Xz uXtX:X;Xv l :X:X-X-Xf > > > +.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.fXFXFXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXZXBX[ / K { T w.s.i.a.a.a.a.a.a.a.k.k.a.a.a.a.a.a.f.k.a.a.a.a.a.a.a.i.a.a.a.S / ~ ZXFXVXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXDXDXz z h @ a n b *Xz s eXl @ @.} s a f } s 4 n 7 5 :Xb x b >X2Xb x d :XuXuXb 8.;.;.2.<.,.>.:.0X-Xk v z 7 w < < # k b ;X . .X.X. ...X. .o.{ v :X>Xg j k - } -Xp w sXsX+ | -Xk ,X:Xv l :XuX;.>.-.-.4.qX-.-.-.-.9.0X0X2X2X:Xv k 2XuX1X>XwX;.4.tX,.4.1XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXZXFXBX[ ! ! ` b.F.U.~./././.^.!././././././././././././.~.(.^.~.~.!.~.T.~.~.F.Q / [ MXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXyXyXyX<.>.-.-.-.9.4X5.4.1X - p h n g | O.X. .+.8X4X4X;X4 7 7 7 7 < 4 5 4 7 7 w b b ;Xz 7 4 a v h h d w 5 h d @ 5 g 7 j x 7 v b b b ;X-Xb b b -Xv ;X>.9.,X1X4X0X-.-.-.>.0X4X1XwX0XqXqX0XtXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXAXFXZXVXZX~ ~ ! [ n.Y.~.~.T.~.~.Y.P.T.T.T.Y.T.T.T.U.T.U.T.T.T.Y.T.T.T.T.Y.T.Y.U.U.U.U.U.T.U.U.Y.T.T.T.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.U.T.T.I.I.U.U.T.U.U.L.L.K.Y.", "m M m M m m M M m M M M M m m M N N N N N N N m B B C B C N C B Z C V C B B C C C N Z Z C C A C Z C C C C C C N C C N N C N C N N C N C C B C B C A C A C C C C C C C C C C C C N C C B C C C C B C C C C C A C C V Z C C D F C C Z C Z A C Z Z Z Z Z Z D D D Z Z H H H G H H H H H H H J H J J L H J P b.Y.T.U.I.I.T.I.T.T.I.T.T.~.T.~.T.~.)./.(.(.(.{._.{.|.'..X'..X@X'..X.XzX.XzX.X.XzXzX%XdXdXzXdXdXzXfXdXdXzXzXvXzXxXdXcXxXcXzXzXzXzXvXdXdXdXdX#XmXzXdXzXzXzX.XzXzXdXxX.XxXzX.X.X.X.XzXxXzXdX.X.XzXzXzX.XzXdXdXdX X.XzXzX'.zX.X.X.X@X'..X.XdX XdX@X.X.X|..X.X X.X.X.X.X|..X|. X_.|._.|.|.[._._.(.(.^.(.(.(.(.(./././././.(./././.!.(.!././.^././.^.(.!.(.(.|.^.`.(.(.^./ ~ S ZXVXZXDXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXyX4.,.4.1X2XwXwX1X,X,X1X5.,.4.4X5.,.-.,.<.4X1XX>X6Xo.X.X.X.o.+.2X>Xv - w 4 O l 4 5 - z + + z 5 v :Xv h n b a { sXb l v :Xg @ 5 v b 7 8.8.k uX2X4X4.-.5.0XqX0XtX,X2X,X,X2X2X1X>X6X6XuXtXqXqX,X3X.5.FXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXCX[ / n b.Q.].'..X'.dX.X.X.X.X.X.X.X.X.X.XdX.X.X.X.X.X.X|.|.|.`.|._._.`.^.~ ! S ZXZXFXZXFXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXGXSXO.6Xb :X7 k 4 >Xv @.} f :XyXyX<.>.>.<.-Xj k k j k z :Xv f } k v v - | W -X-Xw KXaX@ l aXx j ,.,.-.,.-.,.,.qX:X;X;X-Xv w @ + @ a - v v -Xk :X;Xd a p l - b 5X-Xv - , d ;X;X-Xk -Xv ;X-Xz g *Xk @ - p p -X:X3X+. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.7XFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXHXCX[ S n [ T e.i.a.a.a.a.a.a.a.i.a.a.a.a.a.a.z.a.a.i.a.s.a.i.a.i.i.i.i.i.i./ / S AXAXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXg l n + @ n n w d k k -Xp > } x @ > | n 7 8.x p :X-X:Xx -X2Xv n l s -X*Xv 2.>.-.;.2.<.,.-.:.1X1Xk j z 4 4 8.- -X4X8X..O. . . .+.X. .+.b v :X-X*X-X-X- | } h h sXeX W } -X2XuX,Xv z :XwX5.;.>.qX4X:.>.;.,.qX4X:X;X:X*X-Xv k -X>X9.>.>.>.1.0XtX2XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXVXBX} Q Q Y b.F.]././././././.(.(./.(.!./././././././.(.~.~.^.~.~.T.~.T.~.F./ / ' BXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDX4.4.4XtXqX<.-.-.<.4X9.:.1X,Xx 2 =.l x eX3Xb 7 z d h g a + @ g a z a g h h h g z p z g 4 @ l Q X.X.X.X.O.7X3X;X7 2 2 3 2 o < O O 2 2 4 ;X:X.4.,XwX,XtX1X1X1X3XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXAXFXZXAXAX~ ~ ~ b.n.L.T.!.^.~.T.T.~.Y.T.Y.T.Y.U.U.T.U.T.U.T.T.T.T.U.T.T.U.Y.U.U.U.U.I.U.U.I.T.Y.T.T.P.T.T.T.T.T.T.T.T.T.T.T.T.U.U.T.U.U.I.T.T.U.U.T.L.U.L.L.L.", "m m m m m M N m m M m M m m m V M M N N N V N N B B B C C B B C C B C B C B C B N N N C A C C C C C C C C C C C N C N C m C C N B C N C B B C B A C N Z C C C C C B C C C C C C C N B C C B B C C C C C C C C C C C C C C C D C B D C Z C Z C Z Z Z D D Z D H H H H F J K H H Z H H J H H H H J P J S U [ P.T.P.R.U.U.T.T.R.U.~.T.~.T.~.(././.(.^.(.(.|.|._.|..X.X'..X.X.X.XdXdXzXzXzXzXdXdX@XzXdXxXdXcXzXxXzXcXcXzXcXcXvXcXcXzXcXzXcXzXzXdXzXdXcXzX.X.XdXzXzXzXzXzX.XzX@X.X.XdXzXdX.XzX'.zX'..X.XzX'.zXzX.XxXzXdXzXdXdXdXdXdXdX.XzXzX.XdXdX'.dX.X.X.X.X.X.X.X.X.X.X%X.X|..X.X X|.|.|.|.}.}._.|.|.(.(.(.(.(.(.(.(.(.(./././.~./.~././.~.!./././.(.(.~.[.!.^.(.(.(.(.`.(./.(.~ ^ S FXFXFXFXAXAXAXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXSX5.;.qXwXXyXwX,.0X1X4X1X2X2XyX,X,X,X,X,X2X3X .8X2X8X+.+.X.+.o.X.+.8X.-.:.0X-Xv v -Xv z v l > | / p l v f v :Xb l aXx @ d @ @ z b 2.b x 8.b 2.b b v z 5 z z z z g l z v :X*Xv z p a p p a a v b w w 5 5 ;X;X;Xz v w z z - 5 w v a n b - z ;X;X:X6X..X.X.X.X.X.X.X.X.X.X. .X.X.X.X...hXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXAXBX[ / ^ ` T w.e.a.a.a.a.a.a.i.k.i.a.a.a.k.a.a.a.a.i.a.i.i.a.i.a.a.i.i.u.i.S / S ZXFXAXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX@ v KXa @ @ + @ h a g a z - - - 5 - - - + 4 @ w n n n f :X1X-Xk k s :X-Xd 2.,.-.;.2.:X0X0X0X2X1X>X-Xv x x sXeXk :X .+.W +.| +.+.+.+.Q 5 4 d - b :X;X- , , p z a 5 + - , p :X:X-Xn e l 3X4X0X,.qX1XwX5.;.9.;X-Xv v -XuX,XyX:Xv v wX0XqX>.4.1X1X2XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXAXAXBX[ ! S ` b.F.!.[.~./././.(.!././.!././././././././.~.^././.!.~.~.~.T.~.Y.! / ' fXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSX9.:.tXwX4X:X<.,.<.1XwXwX1X:Xb 2 2 z 7 b 7 7 z g 5.*X5 w z l 5 k -Xl @ a 6Xx z v j *Xa z aXsX@ } o.X.X.O.O.+.b c } n v n b -Xb n ;X6Xk z l w z z p k *Xg < 8.2.5 4 2.2.5 7 ;XkX9Xx b ,.-.>.0X1X5.-.>.q.b 1X1X2X,X<.5.wX:.-.-.-.>.;.;.,.>.9XyXyXuXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXAXGXZXVXFX! ~ S [ n.U.~.^.~.!.~.~.P.Y.T.U.Y.U.U.L.U.Y.Y.U.U.U.U.Y.U.U.P.U.U.L.L.U.U.U.U.U.U.T.Y.T.T.T.T.Y.T.T.U.T.T.T.T.T.P.T.U.T.U.T.U.U.I.I.U.U.U.L.L.U.L.L.", "m m m m m M N m M m M M N m N N N M M M V N N V B B B B B B C A B C B C B C B C A C Z A C C C C C N A C C A A C C C N C C C N C C N C N B C B B Z Z C N C C C C C A C C C C A C Z B C B B B C B C N A N N A C C V C C F Z Z B C C A C Z Z Z Z Z Z Z D Z D D D Z H H H H H H H H H H H J J J J J H H L U e.U.T.T.T.R.Y.Y.~.L.~.U.T.T.~.~.!./././.(.(.|.(._.|.|. X.X.X.X.X.X#XdXdX.XvX.XzXdXdXdXdXdXdXdXzXcX.XzXdXdXvXzXzXzXcXdXcXdXzXzXzXzXzXzXdX.XcX.XzXzXzX.XzXdXzX.XzXdXdXdXdXzX'..XzX#X.XxXxXzX.XxXzXzXzXxX.XdXdX#XdX.XdXdXdXzX'.zX.X.XdX.XdXzX.XzX.X.XdX.X.X.X X X.X.X.X.X|.|.|.|.|.}.}.|.{.{.|.|.(.`.^.(.(.(.(.[.^.(./././././.~./.!.~././.(./.(.E.^.^.~.(.(./.(.^.(.(.~ ~ ^ ZXZXZXDXAXAXAXFXFXFXFXFXFXDXSXFXFXFXFXFXFXFXFXZXGX1.1.4X2X,X,X,X2X,X,X2X2X1XtX<.,.;.5.wX1X2X1X9.:.2X>X6X .X.X.X.X.X.6X,X,X2X2XyX9X;.1.:X1X1X=XiX*Xz -X:X;Xv c c l @ O a h ;Xb n z h sX@ @ z k g -X,XXuX4XuX;Xw p h z z z v 2.b b b b j b v a a g v -X;X;Xk + O + z z h h z d z z a z z z z l 5 i 8.j 2X1X1X;X-X;X;Xl l g :XX-XKXKXz 2.-.;.-.<.,X1X1X1X>X;X-X;Xk g w x j k > | | | | | W W S f n 5 kX2.O z d + 4 7 7 7 7 7 w z z w g b ;Xb b -Xv x :X4XwXtXuX4X4XwX*Xv -X:X>X>XwX,X2X2X>X-Xv 1X1X<.,.5.1XtXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXFXAXAXBX} Q Q ` b.F.I.~.~././././././.~./././.(.~.!.[././.(.~./.~.~.~.~.~.~.T.F.~ / ' BXGXCXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDX9.>.,.,.4.4XwXqXwX1X1XtX4.4.v 2 =.7 4 7 7 7 z j 9.;X@ z x l @ v ;Xz @ u } / h -Xj j + x gXl + :X7X.. .o.o.O./ | .X.+.+.X.o.+.+.O.7X-Xj w z n sX+ g k d 5 O + @ 5 4 5 5 a eXsX=X7 b ,.>.-.5.4X,X;.>.2.-X3XyX:XwX;.-.>.-.-.-.<.qX-.-.-.>.5.yXeXsXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXAXZXZXVXGXQ ~ ~ b.n.Y.E./.(.~.~.~.^.T.Y.U.L.U.P.Y.Y.U.U.U.Y.P.P.P.P.P.U.L.Y.U.U.I.I.U.U.U.Y.L.Y.Y.T.T.P.T.T.T.U.P.U.U.P.T.T.T.T.U.U.T.U.T.U.I.T.L.U.L.L.L.H.L.", "m m m m m m m m m M m N N N m N N m M m N N C N B N B B M C C M N C N C B B B C C N N A C C C A C C A C C C C C C N C N A m C N C m N C C m B C B m A C C C N A C A C A C N C C N C N Z B B B C C m C A A m C C C C C C C C C Z C Z Z C F B Z Z D D Z D D D H H F H F H H H H H H H H J J J H J L J P U b.F.T.T.T.T.Y.~.I.~.T.T.~.T.~.~././.(./.{.(.^.(.|.`.|.|.'..X@XdX.XzXdXdXzX.X.XzXdXdXdXzXzXzXzXdXdXdXzXzXvXdXxXcXdXcXvXzXzXzXzXzXzXzXzXdX.X.X.XdX.XzXzXzXxXzXdXdXdXxXdXdXdX.XdXdXdX@XzX'.zX.XzXzXdXzX.XxXdXzX@XzXvXdX%X.XzX.X.XzXxX.X.XzX.XzX.X.XdX.X.X.X.X.X.X.X X.X.X.X|..X X}.}._.{._.`.(._.(.(.(.`.^.(.(.(./.~././.~./.~.^.~.~.~.~.(.(.(./././.(.(.[.(.(.`.(.(.(.~ ~ ^ AXAXDXDXAXAXAXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXDXDXwXwX,X,X,X,X,X,X,X,X,X,X2X1XwX:.1.1X2XX=X*X=Xp z eXsXe eXiX@.v b ;Xx ;Xv a @ + + a @ ;X2X1XwX:.:.wXqX4.4.>.wX2X2XwX,.5.1X,X,X,X,X2X>X6X..o.X.o.X.X.X.o.o.o. .o. .O.O.7XtX,X,XtX,X,X2X,X;.,.,.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXBX` ~ ~ [ m.].dX.X.X.X.X'.@X@X'..X.X.X'.'..X.X.X.X|.|.|.|._..X{._._.|._.!.~ Q ! ZXVXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXO.} b -Xk -X:X-Xl - 8.4 :X2X,X4X5.;.-.-.>.<.wX/ } s a > } =X@ ;X>X4X:X-Xk g w 7 4 p p a b ,.,.>.,.;.,.,.;Xk *Xa ;X,XyXuX;Xw n z @ + l z a a - - v p p h g z @ 7 v 7 1X:Xk *Xj 1X;Xx ;X:XuX2Xa + @ a f , n l , ....X.X.X.X.X.X.X.X.X.X.X.X.X.X.O.hXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXCX} ~ ~ [ T w.s.a.a.a.a.a.a.a.i.k.a.k.k.a.a.a.i.a.a.i.i.i.a.i.i.a.i.u.u.i.! / ! ZXZXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXa ;XsXw l ! iXeX; v 8X-X@ l z 2 b s < 5.-X:X,Xb W _ W 6XuXuXyXyX2X-X*X*Xl 8.;.,.-.;. p 2 2 3 3 2 2 a :X@.d uX:X:X8X3X:Xv b >X:X;X-X:X1X:X:XuX1X<.-.,.:.5.tX,X>XyX-Xv 2XwX0XwX2X,XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXBX' ^ ^ Y b.F.!./.~./././././.^.(.^.!./.[././././././.[./.~.~.[.[.T.T.[.K.~ ~ [ BXZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXGXDXDXwXqXqX:.<.1X1X1X1X1X4.,.>.<.v 3 3 2 2 2 < 2 g a k a h + 4 4 h @ z p g - , , h v v v g 5 z 4 g -X.>.,.qX4X:.-.-.>.5.wXaXsXGXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXAXZXAXVXAX) ~ / T n.F.T.^.(.(.~.~.~.T.P.U.U.U.U.T.P.T.Y.T.L.L.P.L.P.P.L.Y.L.L.L.I.I.U.L.I.I.I.Y.P.Y.P.T.T.T.P.P.T.P.Y.P.P.T.T.U.U.T.U.U.U.U.T.L.L.L.L.S.L.L.L.", "m m m m m N m m M N m m N m N m V m N N N V N B B B B B B N N C C N C V C C B B N A C C C C C C C C C C C A C C C C C C C N N C C C C N C C M C A B N N N C C C C B C C C A C C C C A B B B C B C C C C C C C A C C C C C Z C C A Z A C Z Z Z Z D D D D D D D H H H J G L H H H J D L H H J J J L H L U [ Z.[.T.T.T.T.L.Y.~.T.~.T.~.T.~.~./././.(.(.|.`.^.`.|. X'..XdX'..X'..XdXzXxX.XdXzXdXzXzXzX.XzXzXdXcXzXzXxXdX.XdXcXdXzXzXcXzXzXzXzXzXzX.XzX.XzXdXdX.X.XzXdXdXdXdXdX'.dXdXdX'.dXdX.XdX.XzXzXzXzXzXzXzX.XzXdXdXdXzX XdXdXcXzXzXzX.XzX.XzX.X.XvXzXzX.X.X.X.X.X.X X.X X.X.X.X X|.|.}.}.}.|.|._.|.|.|.(.(._.(._.(.(.(.(././.~./.~.~.~.~.~.~./././.(.(./.!.(./.(.(.^.(.(.(./ ~ ~ DXSXDXDXAXAXAXFXFXAXDXAXDXDXAXFXFXFXFXFXFXFXFXFXFXyX1X,X,X,X,X,X,X,XtX1X5.<.:X4XwXwX2X,X2X1X5.:.1X>X6X.. .X.X.o.+.,X4X4.>.<.2X:XqX0X4XwX0X>X*X*X=Xb w n n @.{ ' @.:X2X:Xk - a h w v z z d + v 5X0X>.>.,.,.tXwX,.wX,X,XyX0X4.:.wX2X,X,X2X2X3XX.X.X.o.X.X.X.X.X. .o.o.X.X...8X>X1XwX<.0X1X,X2X0X5.qXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXCX' ! ~ c.Q.].'.zXdX.XdX.X'.dX X.X.X.X.XdX.X.X.X X X|.|.|._.|.|.|.{._.(.].~ ! Q ZXVXFXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.+.l j 5.-X:Xk 4 O # g :X2X,X2X2X<.-.-.-.;.<.f | n h > | ' a v -Xk g - b b @ j g 4.0Xp 8.;.,.-.-.>.-.>.0Xj j p -XuX1X1X-Xl x + h sXgXz @ } } + j 9Xk k 8.s 5 4 s z :Xj t 8.l n b > ....X.X.X.X.X.X.X.X.X.X.X.X.X.X.O.oXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXBX_ / ! ` T w.f.i.a.a.a.a.a.i.k.i.a.a.a.a.a.a.a.a.i.i.i.a.t.s.i.u.i.a.i.i.! ! ^ ZXAXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX@ -XKXl z W _ W f v 8X-Xh n w 2.sXh j 5.k k 5Xb & $ $ ;X-X-X*X;X-X-Xk -Xl -X2.4.<.;.wX1X2X1X>X;XgXx k -Xv x f 6X} ..o.O.X.o.X.c z 2 7 d O O + @ 1.q.-X5.3 z v O 7 l ;X:X-X4X:X{ iX{ uX;Xz -Xv -Xv wXwX<.,.5.4X0X;.-.-.>.,.9X1X1X:Xk .-.-.<.x @ h d x z d d g @ @ @ g 4 @ @ g 5 5 5 g h d g g p a p g p n c d g @ k 6XO.O.O.c | o.X.X.O.X.X.X.O.O.o.o.+.:X5 + 5 w =X5X>Xz M.iXS z x l + w - k v a k s b ,.4.,X4XwX,.2.v <.;.,.-.-.>.9.qXqXqXtX1X0X-.-.>.9X:X:XsXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXZXAXAXFX~ / ( b.n.U.~./.|.(.^.~.~.U.T.L.U.L.L.L.P.U.P.L.U.U.P.P.P.P.L.L.U.U.L.U.L.U.U.I.U.U.P.P.T.Y.^.P.T.P.P.P.P.P.U.U.T.U.U.T.U.T.U.U.U.U.L.L.L.L.L.H.H.H.", "m m m m m m m N m N m m m m N N m B N m N m m m N N C N B N C M B B N B u N N B C C C V B C B C C C C C C C C C N C N C C N C C N N C N N C N C N C N C C A V C B B Z C B Z B B B C B C B C B C C C C C N B C B B Z C C C C C Z D C Z Z Z C Z Z G Z D D Z H Z H D D H H H H H H H H H H P H Y L D P H L [ F.T.T.T.[.T.T.~.T.~.T.~./.).!./.).~./.^.(.(.`.`.`. X'..X X.X'.zX'..XzXzXzX.XxX#XdXdXdXzXzXzX.X.XxX.XzX.XxXdXdXdXdXxXdX.XzXdX'.zXzXxX.X.X.X.XzXxXdXdX.XdX'.zX@XdXdX'.zX.X.XdX'.zX.XdXzXdXcXdXdXdX X X%XdXdXdXdX.XcXdXdXzXzXzXzXxXdXdXdXdX.XzX@XdX.X.X.X'..X.X.XdX.X.X.X|.|..X|.|._.|._.|._._._.`.^.(.(.(.(._.(.(.(./.!./.~.~.~.~.~./././.~./././.(./.(.(./.{.(.[.(.~ ^ S ZXVXAXZXFXVXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXyX3X2X2X2X,X,X,X,X,X2X4.5.<.<.1X1X,X,X2X1X9.0X>X8X..X.X.X.X. .+.1X9X>.-.qX1X2X1X2X,X2X2X,X2XX:Xo.X.X.X.X.X.X.X.X.X.X.X.X. .7XtXtX,X:.<.tX2X,X,X1X1X1XAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXCX' / Q [ M.'.'.@XzX.X.X.X'..X.X.X.X.X|..X|. X X'.}.'._._.|.|.{.|.^._._.].~ ~ ~ ZXVXZXZXDXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXo.+.c h j k :Xd q.-Xs :X1X,X,XyX1X5.,.-.-.-.;.j f $ z O o - k ;X, @ - x k p g g 5.9Xa v k j 2.,.-.-.,.;Xs s p -X>X:XwXj 6 3 5 z sXn a z W +.@ j j k k j p l d a a z g 7 v 7 -Xz v @ a *Xz p d z @ n / b x > 8X+.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.fXZXDXDXDXZXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXBX' ~ S { T i.i.i.i.f.i.z.a.z.i.a.k.i.a.a.a.a.a.i.i.u.a.u.i.s.i.i.s.u.u.u.~ ~ ~ SXFXSXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXz k -Xk l c f n l @ g a O 6 o 3 x 3 + p v c k k k 3Xl + 7 c 7 @ z :X, @ x wXb 7 4.,.>X.-.,.,.<.g > } s @ f } s a 4 h x - h x k d 1 j s - g 4.*Xz * ' s s A eXiXu k k k -X6XO.O.Q } .. .X.X.X.X.X.X.X.X. .O.:Xg l h w =X=X=Xf | { @.g n x a z n g *Xn g *Xb wX,XyXwX:.,.2.b ;.,.-.>.>.9.,X1X1X1X2X3X4X0X;.>.5.5X:X=XFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXAXFXFXVXZX! ~ / ` n.T.T.(.(.(.^.~.~.T.U.L.U.L.Y.U.L.U.L.L.L.L.L.L.L.U.K.L.L.L.L.L.L.T.L.Y.T.U.T.U.T.U.T.T.P.U.R.R.U.I.I.Y.T.Y.T.T.T.P.U.U.U.U.L.R.L.U.H.S.H.H.", "m m m m m m m m m m m N N m m m m m B m N B m m N C N N N N M C N B B B N V B B C B N C F B Z B C C C C A C A C C C B B C N C N A N N C C N C N N C C N N C N A B C B B B B C C C B C B C B C B C m B N Z B B C Z B Z Z C Z C C C Z C Z Z Z Z Z Z D Z D L Z H Z H H K H H H H J H H H P H H L J U H H P ` U.T.T.T.T.T.T.T.~.T.~./.T.~.~././.^./.(.(.^.`.(.'._. X'..X.XdX'.zXzX.XzX.XzX.X'.dXzXzX.XzX.XzXzX.XzX.XdX.XdXdXxXdXdXxXzX@XdXzXzX.X.XzXxX.X.XzXdXdX.XzXdXzXdXdXdXdX.XzX.XzXdXdX.XzXzXzX.XzXdXcXzXcXvX XdXdXfXdXzXdXzXdXzXdXzXzXdXdXdXzXzX.X'.zXdX.X.X.XdX.X.X.X.X.X.X.X.X.X|.|. X_.|.|._._._._.|.^.{.`.^.`.^.(.(.(././././.~.~.~.~./././.(././.!./././././.(./.(.(.~ ~ Q ZXAXZXZXFXVXFXFXFXFXFXGXFXAXDXFXFXFXFXFXFXFXFXFXFX3X9.4.1X,X2X,X,X,X1X5.:.1X9.,.4.1X,X2X2X5.0X1XtX7X..X.X.X.X.o.8X1X5.,.:.1XqX<..wXtX<.wX2X,X3XO.X.X.X.X.X.X.X.X.X.X. .o. .8X>X,X,X0XX,X,XtX4X5.,.-.-.-.-.<.b d d 2 q.z p x :X6X- - + + d 7 5 a p @ v *Xb j ,.-.-.,.0X-X9Xp *X>X2.:XKXeX2.a z @ p + z & % d v k v v v v a | -Xs l :Xk *XO l ;X:XsXz k z p b x + h @.@.> @.-X6X..X.X.X.X.X.X.X.X.X.X.X.X.X.X.7XDXZXZXDXZXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXBX} ~ ~ ` T T i.f.i.i.z.i.a.a.a.a.a.a.a.a.a.a.a.i.i.u.a.u.i.i.i.u.i.i.i.u.~ ~ S AXFXVXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXv ,X2X,Xv -X:X*Xz @ a a x v -Xd @ p v z n ;Xd - k k -Xd 7 n j @ v :Xn d 0X,.:.2.=.,.:X:Xb h d a a p @ z - z / | | } | | | n 4 @ } u @ 4 8.2.- z h + z v - o O O p -X> | s p f n - -X;X-XwX<.;.,.>.-.-.-.-.-.;.-.-.-.-.>.4..>.;.qXwXz > } v 5 > | n @ z n z a z n b @ 8.kXx @ k 9.*X@ > +.n p | { | @.*Xj j a ;X6X6X/ | O.X.X.X.X.X.X.X.X.X.X. .n h n sXh k g *Xz q * u h - p z l sX5 @ sXz @ b 1X>XwX:.>.;.2.n ;.,.9.qXqX.5.>XsXaXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXAXFXAXAXZXS ) ~ b.n.Y./.^.(.(.(.~.~.Y.Y.L.L.L.L.L.T.Y.T.Y.Y.L.Y.L.L.Y.L.L.L.L.L.U.U.L.L.Y.Y.Y.T.T.U.T.U.U.U.L.L.R.L.Y.Y.U.Y.Y.U.T.P.P.U.U.U.L.L.L.S.H.H.U.H.H.", "m m m m m m m m m N m N m @.m m N B m m m m m m N N N N B B M B B N B B C N V V B B B C B C B C Z C C C C N B C C C C B Z C B B C N C N B C N N A C N C N A C C C C B B G B C N B B B C B C B N N C C B B C B C B B B B B C Z C C Z C Z Z Z Z Z D D D D F J H D F H D D H H J H J P H U L L L J H H P L Y F.Y.T.T.^.~.T.~.T.~.T.~.~.!.!./././.(.(.(.(.(._.|.|.'. X.X.X.X@X.XzXzX.X.X'.xX.XzXzX.XzX.XzX.XxX.X.X'.xX@XdXdX.X.XdXdXxXzX'.dX.X'.zX.XzXdXzX'.dXdXdX.XzX.XdXdXdX.XdXdXzX'.zXdXdXdX.XzXdXzXcX.XzX XzXdXdXdXzXzXdXdXzXdXzXdXzXzXzXzXdX.X.XzX.XzX.XdXdX.X'..X.X.X.X.X.X.X.X|.|.|.|.|._.|._.|.|._.|._.{._.|.(.(.(./././././././.!././.~.~./.~./.~.~./././././.(./.(./.~ Q Q ZXZXZXFXFXVXAXFXFXFXFXSXDXAXDXFXFXFXFXFXFXFXFXFXFX5.,.<.1X,X2X,X2X,X2XwX:.,.-.-.<.1X,X,X5.0X1X>X6X . .X.X.X.o.+.,X,XwX5.wX1X5.,.<.wX1X,XX2Xb x z p v z p z k :X-Xz k p g k j ,.;.tX2X,X,X,X,X,X,X2XwX;.4.2XwX,.qX4X>X3X ...X.X.X. .X.O......... .7X,X,X,X2X1X2X,X,XtX2X,XtXyXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXBX_ ! S [ m.].'.zX.X.X.X|..X.X|..X|..X|.|.'.|.|.|.|.|.}._.`.|.^.`.{.`._.~.! ! ^ ZXVXFXFXFXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXo.+.z -X;Xv ;Xl 4 4 O k >X,X,XyX4X5.-.-.-.-.-.:.v k k =.2.v h l l p w ;X;Xk d O s z @ @ v j j j ,.-.-.>.;Xg j p -XwX0Xn kX4.j g 8.s j b d z d @ @ x h p @ - h W | d v yX2X;Xl -XuX*X;Xz @ z a x n p v z z k l g 7X..X.X.X.X.X.X.X.X.X.X.X.o.X...hXDXDXDXDXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXBX[ ~ ^ c.T E i.i.z.i.i.k.k.a.k.a.a.a.a.a.a.a.i.i.a.u.a.a.u.s.u.i.u.u.u.s.! / ^ DXFXAXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXv Xl n s -Xv O O O - @ a a d 6 p O d l l k a b 2.2.4.,.:.b @ h k k j p | f + v g n { n { { 6Xn b j 4 W W - h 4 5 @ w ' - k >X;Xd | k O :X;X- W } v >X-X*X:XuX<.;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.>.qX4XtXtXyX1XyXyXyXFXDXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXAXFXZXFXBX' ! ^ Y b.F.Y.~.~./.~.~.~.[.~.~.~.~.~.~.~.~./.~.~././.(.~.~.~.~.~.~.T.Y.! ! ' BXHXVXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXyXyX3X - g - > - g 4 4 O h @ + + p 3 x 4 p g k v g + > , g w q = d v v k f 2.<.yXb | o.O.X.X. .X.X.X.X. . .O.;Xh n n l h 4 + 4 4 < h g a z z 5 @ a + + a @ ;X2X:.;.-.-.,.2.v wXqX,X1X1X2X,X,X,X,X2X0XwX,X:.>.5.eXKXkXHXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXAXZXZXAXFX~ ~ / Y F.L.~./.{.(.(.~.~.Y.U.Y.L.L.U.U.U.U.L.U.U.U.U.L.L.L.H.L.L.L.L.Y.P.U.L.Y.U.L.U.Y.U.U.P.U.U.L.U.L.U.L.U.U.L.L.U.U.P.P.L.U.L.D.L.L.U.S.H.H.H.H.", "m m m m m m m m N m m m m m N N m m N m m N m R N N m N M N B V B B N N N B B N B C C B C B C B C N C Z C A C C N C Z B B B C B N C B C C N C A N N C N B C C C C C C C B B B Z B B Z B B N C C N C Z B C B C C C C B Z C C Z C Z Z C Z B D Z Z Z D D D H Z Z Z H H H Z H H H H H H H H L L L P P P H P T F.Y.!.T.T.T.~.T.T.~.~.~.~.~./.!.(././.(.(.(.`._._.|.'.'. X@X.X X.X.X.X.X.X@X'.zX.X.X.X.XzX.XzX.X'.zXzX.XzX.XdXzXdXdXdX.XzXzXzXzXzX.XzX.X#XzXzXdXdXdXdX.XzX.X.XdXdXdXdX.XzXzX@XdX@XzXzXcX.XdXmXzXzX XvXdX@XzXzXcXdXdXdXzXxX'.zXzXdXxXdXzXzXzX.XdXdX.XdX.XdX.X X'..X.X X.X.X'.|.|.|.'._.|. X|._.^._.|.^.^.(.(.(.(././././././././.~./././.~.~./././.~.^././.^./.(.^.~ Q Q CXVXZXZXAXVXZXFXFXFXFXDXDXDXAXFXFXFXFXFXFXFXFXFXSX9.,.9.1X1X4.4.1X,X,X4X4.,.>.:.0X1X5.:.:.,X,X>X6X .X.X.X.X. .+.2X2X2X1X1X4XqX>.>.-.<.2X1XqX<.2XtX5.qX1X3X2XyX2Xb b k n 7X+. .+.+.:X>X2XuX1XyX1X9X4.9.0X2X2X,X,X,X,X,X,XtX0X,X2XwX,.>.0X2X,X8X6X ... .......} 8X6X6X6X>X,X,X,X,X<.0X,X<.>.qX,X1X3XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXBX} / c [ m.'.].zX.X.X.X.X.X.X.X.X|..X|.|.|.|.|.|.|.|.}.|.^.`.(._.`._._.]./ Q ^ ZXZXFXZXVXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSX ...l >X,Xk k @ @ v 8X-X:XyX2X-X-Xv <.>.-.-.-.<.v s j O O + h 5 5 4 v .-.-.-.5.-X:Xv b :.2.8.sXb j p j s j j d @ 2.=.+ l - n 8Xh p - - - v 2X;Xz ;X>XKX:X*Xv k ;Xp + + + k p 5 s *X-XX2X,Xl v 6X-Xp j 9.;Xd :X:X> | n *Xv k iX*Xk ;Xv b b v x b a d - d v b n v ;X9.,.b @ sXaX7 *X> ..W @ b p { pXpXhXpXpXn -XyXv > , d z a p h 4 1.Y v 1X4X-X| } w -X-Xp f - p v v :X1XwX,.;.-.-.-.-.-.-.-.>.-.-.-.-.-.-.-.-.<.tX1X9.,.9X1X2X2X,XVXHXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXAXAXDX] ! S _ b.F.L.T.~.T./.[.~.~.~.~.~.~.~.~.~.~.~.~.~.~.T.[.~.~.~.~.T.T.~.F./ ! _ BXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyXtX1X5.,.4.tX,XwXqXwX2X2X,Xl h p z g @ p + g a a a g h a 5 g h a a g a a z g @ 4 a g h h 5 g g *Xk z ;X0X:Xv b } 6X{ } 6X{ 6X+.O.O.O.O.} 4 O 4 g h M.eX# 8.6X+ z ;X;X+ z d d a z - h v :X8.8.-.-.-.8.-X1X,X1X,X,X,X,X,X,X,X,X1X2X1X0X>.9X.<.1X,X,X1X4.5.qXwX4X5.>.-.>.9.1X>X6X.. .o.X.o.X.8XtX,X1XqX<.,X4.,.>.5.0X,X2XwX0X2XyX1X1X>X2XX8XJ f f | ......o.O. .X.+..wX9X,.:.tX.0X1XuX2X6X6X8X6X6X8XX>X,X,X1X,X2XtX,.5.wX<.5.;.:.9X1XDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXBX` ! S b.n.].dX.X.X.X.X.X.X|..X|. X X}.|. X|.|._.|.}.}.[.|.`.(._.(.|.|.].S Q ~ ZXVXFXDXDXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.+.z X:X:XHXd =.:.;.-.-.:.f | =Xk l n ;X7 n 7 -XuXuXf | ' s :X6X- :X5XwX,.,.>.>.-.-.,.,.b b 5.b j z 7 x v v k k s s 4 2.2.7 l - ! } - z a h a b :Xz v 5X:XM.eXuX2XuX3Xd -X-X;X-Xv eXx *XX:Xl a z a a @ k p g ;X:X- , , ;Xz *XiX:X-XyX2X2X2X1X1X>Xv 6X-Xd 8.:.<.;Xl ;X0Xx x kXx 7 *XO & d n / c c / n / d 5 a d @ a a d d / =Xp + s s v yXyXv , s 1X1XuX>Xk -X:XyX2X2X.>.,.4.4X2X,X,X,X,Xz x sX;X@ @ l l @ f { s a = f =X@ > / s p j 5.-Xd 5 kXx 5 , f =X- =XiX:Xz w a z g g @ z h p @ h g ! | } } | f 7 j j 7 d aX8.3 aXM.< a -X-Xg z x l O n l + n { iX' ;.>.,.2.b 1.:.0X1X,X<.0X1X,X,X,X2XtXtX1X0X>X=X0X=XUXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXAXFXZXAXZX~ / ) b.n.U.~.(.(._.`.(.~.~.P.P.U.L.U.U.L.Y.U.U.T.T.Y.Y.U.L.L.L.L.I.L.Y.U.Y.U.U.U.U.L.T.Y.U.L.Y.L.L.L.L.L.L.L.L.L.L.L.L.P.P.L.L.L.L.L.L.H.H.H.H.H.H.", "m m m m m m m m m m m m m m M m m N m m m m N N N m m N N M N N N N B N B B M B N Z N C B B B B B C C B C B C C B C B N C B C C N C C N C B C M A N C C B C C C C B B C C C B C Z B B B B B C N C N Z N C B C B C C C C C C C Z Z Z C Z Z Z Z Z Z D D Z D D Z H D H H F H H H H L Z L L L L L L J H J P U F.T.T.T.T.~.T.T.~.~.~.~.~./.!./././.(.^.(.|._.|._.}.|. X.X|..X.X.X.X.X.X.X.X'..X.XzX.XzX.XdX@XzXzX.XzXzXzX.XzX@XdXdX.X.XzX.XzX.X.X'.zX.X.X.XdXzXzXdX.XzX.X.XxXzXzX.XdXzXdXdXzXzXdXdXzXdXdXdX XcX.XdXdXdXdXzXzXcX.X.XcXzXzXzXzXmX.XzXzXxXzXdXdX.XzX.XzXdX.X.X@X.X.X.X X.X.X.X|.|.|.`. X X}.|. X|.|.^.{.(.(.(.(.(.(.(././.(./././././.!.~./.~.~.~.~.[.~./.~././.(.(.~ Q S ZXAXFXZXFXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyXwX:.;.>.,.<.1X,X1X5.:.1X1X1X5.>.-.:.5.0X,X3X6X..o.o. .o.+.2XyX,X2XwX<.-.;.5.0X1X1X,X2X,X1X,XyX,X2X8Xo.+.+. ....... .7X8X6X6X8X7X..O.+.3XyX4.,.>.5.9.,.wX1X,X,X,X,X,X,X,X,X,X,X1X1X4.,.0X1X4X>X>X>XtX<.wX2X2X1XwX:.,.0X1X2X,X,.,.9.1X,X>.>.>.0XDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXHX' ! c c.m.].].'..X.X.X|.|.|.'.|.|._.|.}.}._._._.|.}.}.|._.`.^.|.[._._.!./ Q S CXAXFXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXo. .x Xz x 4 @ @ z a v b k sXsXn 2.,.,.-.-.:.c | n - ;X2XyXj x x j -X:Xh , , p s g @ k *Xk 7 j j =.>.-.-.>.j -X;X+ h 5 5 z z p + | -Xs $ O s O d z , , - z n 6Xw z k z :X>X0XsX;X>X,X3X | } $ =XiXwX=XyXyX-XW =X*X2X2X:Xv k 2X2X,XtXtXwX;.-.-.-.-.-.-.>.5.,X:.-.<.9X;.-.-.-.-.;.;.;.-.-.;.5.1X,XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXZXFXAXHX[ ! ! P b.F.K.T.T./.T.~.T.~.T.~.T.~.T.T.~.~.~.T.~././.~.~.~.Y.T.~.T.T.F.S / [ BXDXCXZXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXFXFXFXFXyX3X1X9.-.qXqXwX2X2X3X2X2X>Xz n gXx w l n l @ @.| v d s -Xz 5 > } n - g 9.*X@ x gX2.4 s -Xf a =X5X=Xs w sXsX@ 9 sXsX@ @ sXsX@ v n ! c c v h 5 @ d h < < 3 O 3 4 5 < g 5 l n x g n x p c | { | ;.4.qX;Xv ,.<.1X2X,X0XwX,X,X,X,X,X<.:.5.2X5XuXeXaXGXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXZXFXVXZX~ ) S [ n.Y.~.~.|.^.^.(./.Y.Y.U.L.Y.U.L.U.U.U.U.U.U.U.L.U.U.Y.I.U.U.U.U.L.U.L.U.U.U.L.L.L.Y.U.L.L.L.L.L.L.L.L.L.L.L.P.L.L.L.L.L.G.L.S.L.L.H.H.H.h.H.", "m m m m m m m m m m m m m m m m N m m m m m m m m m m m N N N N N N B N N B N N N C N N Z B C B C B N C C N C C B B B C B N C N C C N N N C N C M B C B C A C C C C C B N C B C B B B N B N C C N C N C N N C C B C C C C Z C Z Z C Z C Z B G Z Z Z D Z D D Z G H H H H H H H H Z H L L L L L L J H H P J F.T.T.T.~.T.T.~.~.T.T.~.~././././.(.(.^.(.|._.|.|._.|.'..X X.X.X.X.X.X.X.X.X.X.X.XdX.X.XzX.XzX'.'..X.X.X.X.X.XdX.X.XdX.X.XzX.X.XzXdX.XdXdXdXdXzX#XdXdX.X.XzX'.@XdXdX@XzXzXzXzXzXdXzXzXdXcXdXzXdXdXdXdXdXdXdXzXzX.XdXdX.XzX.XzX.XzXdXdX.XzX'.#XzX.XzX.XdX.X.XdX.X.X.X.X|..X|.|.|.|.@X`.|. X|.[._._.^.|.(.(.(.(.(.(.(./.(./.(./.^././.~./.~.!.~.~.~.~.~././.~././.(.~ Q ! ZXVXFXFXAXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX4X9.>.;.qXwX1X,X1X4.,.4.1X5.>.-.-.<.1X1X,X2X:X+.O.X.X.X. .6XyX,XtX1XtX<.;.,X1XtX,X,X8X+.+.+.+.+.+. . .X. ...7X3X6X6X5XtX>XX8X+...+.3XtXqXqX2X>X0X.-.,.,.j :X;XsXaX+ sXgXk *Xh W } d z 7 qXk j j *Xg l + / | - g x ;XuXuX-Xg v >X6X .O.+.x / / / / u > f X. .o.X.X.o.X.X.X.X.X.X.X. .X.X...hXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXZXBX' / S ` T e.i.s.i.g.a.a.a.k.a.a.a.i.a.i.a.i.a.i.u.a.u.u.u.u.i.u.u.u.t.i.S / S ZXZXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXZXZXv :X,Xl g 5.*X:Xb -X*X-Xb 5.,.:.:.:.4.b l X1X1X2X,X2X,Xk v *Xl 2.>.-.:.b < 2 5 a d z v v z kX8.n 7X .+.o.O.+.} u 9 -Xj w +.W @ + , , a =X=X=X=X1X1Xv W } v 5X;Xv v v -X:X - g s + + a - > - g h k k g @ @ 4 @ p + O g s s k g x kXn + x IXb + x gXn O n O. . ...:X- z p p 7 =.< < 2 2 l 7 2 < 7 z 5 5 + a @ @ z S u x ,.0X4X:Xb 0X>XtX:.0X1X2X,X,X,X2XtX:.,.,.,.qXwXsXsXGXVXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXFXVXVXZXS ~ ! c.n.L.~.(.(._.(.(.!.~.Y.U.Y.L.U.L.L.T.U.T.P.T.T.U.Y.U.Y.U.U.L.P.P.Y.L.U.L.Y.U.L.L.L.L.L.P.L.L.L.L.U.A.H.L.H.L.U.S.S.P.H.L.H.L.H.K.H.H.G.H.S.G.", "m m m q m m m m m m m m m m m m m m N m N N m N m m N N M M N N N B N V N N N C N N A N N B m B B C C B C C C N C B C B B C N C C m C A C N C B N C B C V M C C C C B B B B B B B B Z N C C C N N C C N C C C C C C C C C C C C D B Z Z Z D Z Z Z D Z D D Z D Z F D H H H S H H H H L L S L L L L J L S Z Z.T.T.~.T.~.~.~.T.~.[.!././././.(.(./.(.(.(._._._.|._..X X'..X.X.X.X.X.X.X.XzXdX.XdX.X.X.X.X.XzX.X.X.X@X.X.X.X.X.X.XdX.X.X.X.X.X.XdXdXdXdXdXdX'..X.XxXzXzX.XzXdX.XxXdXzXzXzXdXzXzXzXdXdXcXdXdXcX.XdX%XdXdXfXzX.XcXzXzXxXzXxXdX.XzXxXzXvX.X.XzX.XzX.X.X.X.X.X@X.X.X'.'..X|.'.|.|..X`.`. X X}.|.|.[.^.(.(.(.(.(.(.(.(.(.(.(.(././././././.~.(.T.(.[.!.(./././././.(.~ ! ^ ZXFXFXFXFXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX1X9.,.<.4X2X,X,X1X9.,.0X1XwX:.,.;.0X2X,X,X2XuX6XO.X.X.X.X...+.X>XtX>XyX>XXj 5.*Xz b ;Xx b 9.>.-.-.<.f / =Xp - d 5 h a z h l / eXiX:X>Xb sXsXh > +.W d gXsXj ,.,.,.,.j -X;XsXM.O sX8.p g 7 > - @ k k j k 7 j 2.p b s w , - z h k *X>X>X*X*X:X.. .O.+.u 6X6X+.| +.} f . .o.o.X.o.X.X.X.X.X.X.X.X.X.X. .oXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXAXCX[ ~ S ` T e.f.k.k.k.k.a.k.a.a.a.a.a.a.i.a.a.a.a.u.u.i.u.u.u.u.u.u.u.s.i.~ / ! SXDXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXHXv .-.-.-.-.9.v ;X:XXuX-X- , k -Xk >X1X.5.2X:.>.,.5.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXBX[ / Q [ m.]._.'. X X_._.|._._.{.|.`.`.|.(.}. X}.}.}.}._._._.{.|.|.'.(.(.~ Q ^ ZXCXZXDXZXFXZXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXVXVXGXo.o.l 5 d @ z Xj 5.b 5 .:.wXf | n a 4 8.x + l b z @ / | | } >Xk sXn h - , - + l x g 8.2.2.8.v v v d @ + z 5 g v z z @ @ l -Xv v -Xv -Xz v k j x ;Xv @ x z ,X2X2X7XO...7X6Xn g :X;Xz 5 5 *X*XyX8X:X+.o.o.X.X.X.X.X.X.X.X.X.X.X.hXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXBX' / ! ' T s.s.i.k.j.g.g.x.a.a.a.a.a.a.a.i.i.a.i.u.u.u.u.s.u.u.u.s.u.p.p./ ! S HXFXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXk :X2Xl p k -X:Xz j 9.-Xf 4.,.;.-.>.,.:.g 7 5 a a z b -X-X-Xv *Xz v b 2.-.-.:.b z j g s 2.7 k p z -Xd { 7 =.[ ..4 7 4 ;X-X| S O } f + l gXn O n M.iX} 1X1X-Xk -Xk g .,.,.;.-.;.2.2.2.2.v 1 *X7 j 3 2 3 l 2 2 2 g 7 j < h < < 2 w - } s p f } s s a sXsX+ g sXsX- g sXsX@ z n 5 @ z 8.w a 6Xo.o.X.o.:X+ a - z w 8.8.< 7 h 8.6X1 4 2.2 7 < n k -Xb ,.<.1X4XwX1.8.v 2X:.5.4X2X,X,X,X,XyX2X>X1X1X2X,X5X=XwX=XHXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXAXFXAXVXZX~ ~ ( e.n.K.~.(.^.^.^.(.^.!.T.T.T.T.I.U.T.U.U.U.U.P.L.Y.T.Y.T.T.T.Y.P.T.P.P.L.L.L.L.L.L.L.L.L.L.S.H.L.L.H.H.H.H.G.H.L.S.G.H.H.H.H.H.H.H.H.H.H.A.Z.S.", "m m m m m m m m m m m m m m m m m m m m m m m N N m m m m m N m m V m V N N N N C m B B B B B B N C m C N C C N N N A B B B C B B N C N N C N C C B C B B C B C C B C B C B B B B B N M M N C A B N C N C C C C C C C C C F Z A C Z B D C Z Z Z F Z Z Z D D D D D D D D Z H H H H H J Z H H H H H J J J G n.T.~.~.T.~.~.~.~.~.(./.(././././.(.(.(.(.(._.|.{.|. X X.X|. X|..X'..X.X.X.X.X.XdX.X@X'.@X.X.X.X.X|..X X.X.X.X|..X.X.X.X.X.X.XzX.X.X.X.XdX XdX.XzXzXzX.XdXdX@XzXzXdXdXzXzXdXxXzXzXzXzXcX.XcXdXcXvXdX.XdX.XdXvX%XdXdX.XdXdXdXdXzXzX.XdX.XdX.X.X.X'..XxXdX.X.X.X.X.X.X.X X|.|.|..X|..X|.|. X X}.|._._.{.(.`.(._.(._.(.(.^.(.(./.(.E././././.T.~.~./.R.~.~./././.~.^.~ ! Q ZXFXZXDXFXVXZXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXSXyXX4XwX;.;.:.:.,.<.tX,X>X3X8X6X6XO.X.o.+.X... .7X6X6X6X6X8X,X2X1X6X6X..O.:XyX1X5.:.:.>.,.qX1X,X,X1X1X,XtX>.,.5.yX<.-.>.>.<.5.5.tXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXCX' / ! [ m.]._..X|.|. X_._._.|.|.^.(.|._.|.}.}.}.}.}.}._._._.|._._..X.X]./ Q ^ ZXVXDXDXVXVXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXAXGXGXo.X.l j 5.v d -X:X-Xp p v z 2.,.,.-.-.:.2.8.:X- > - h l 8.q.+ x n z a w = * x :Xk @ 5 h b v -Xb v b b v v b b d d x p z l z @ h z 4 =.x @ x a d a d h z z l v g b uX:Xl x h >X3X+.O.+.6Xv p + h 4 z + n l k *XuXuXyXyX+.o.X.X.X.X.X.X.X.X.X.X.O.O.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXBX[ / ^ [ T e.i.k.i.a.a.g.d.k.a.a.a.i.a.a.i.a.a.u.i.u.u.u.u.u.u.u.u.u.u.u.! ! Q ZXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXv yXyX;Xx *XuX,Xz p k s d 4.>.-.>.;.4.0X7 2 4 5.*X5 p 6X-Xp 8X-Xa 2.:.,.-.-.;.b < 2.z n x j j -X8X{ u c | +.7 j z z g f +.W , .W @ z b v p } } { } uX:Xv 2XuX-Xv <.,.-.;.qX,X:Xk *X:X,X.-.-.-.-.-.-.-.-.-.-.-.-.-.-.>.-.-.-.-.4.1X<.,.-.FXFXFXFXFXFXZXAXFXFXFXFXFXFXFXFXFXFXFXAXZXAXAXZXMX' ! Q Y b.n.T.T.U.T.T.T.T.T.T.T.T.T.T.T.~.T.(.T.T.~.T.T.T.T.T.Y.T.T.Y.F.S / ' BXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXyXwX5.qX5.qX5.<.,.<.v x ~ n g g - 5 g d d z h z z a g l c c g k k -Xl > } n 4 > | b + x JXn + x UXx + x gXn + x kX8.- v sX8.5 n O.X.X.o.n w + + z l sXeX4 j h lXsX< 4 8.2.a b v sXh @ ;XqX,X,X1.;.,.2.-X>X0X2X2X,X,X,X,X2X2XyX,X<.:.:.:.qXuXeXKXGXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXFXFXZX~ ~ ~ [ n.!.~.(._.`._.^.(.~.~.T.T.T.T.Y.I.I.L.T.U.T.T.U.U.T.Y.T.T.T.T.P.P.P.U.L.P.P.L.L.L.S.L.L.H.L.H.L.H.H.H.H.H.G.H.H.S.G.H.H.S.H.S.S.S.S.H.A.S.A.", "m m m m m m m m m m m m m m m m m m m m m N m m m m m N m N N N M M m V N N N M B N C N N C B B C N m B N C N C C N B B B B C V B C B C C C Z C B C B B C B C B B C C B B C B B B M N C C C C N V C C C C A C C Z C C C C C C Z Z C C Z Z Z Z Z Z Z D Z D D D D D D D H H H F H H H H H H P P H J H J J G b.P.P.T.~.~.R.~.~././.(./.(.(.(.(./.(.(.(.(.(.|.|.|._.|.|.|.|.'..X X.X X.X'..X.X.X.X.XdX'..X.X.X|..X|..X'. X'..X.X.X.XdX.X'.dX.X.X.XdXdX.XdX.X.X%XzX'.dX.X.XcXzXdXzXzXzXzXJXdXzXzXzXzXdXcXcX.XdXcXdX.XdX.XfXdXdXdX.XcXdXcXdXcXzXdXdXzX.XzXzXzX.X.X.X.XdXdX@X.X.X.X.X X'.|.|..X|.|.|. X X|._.}._._._._.`.^.`._.(.`.(.(.{.(.(.(.(././././.~.~.~.~.~.~.~.~.~.~.~././.~ ~ S ZXZXZXZXFXVXVXFXFXFXFXFXFXFXFXFXDXFXFXDXAXFXFXFXFXyX,X2X5.:.5.1X1X5.,.:.:.4.2X,X,X,X,X,X,X2X,X,X,X.4.9XXyXtX6X6X6X6X6X6X8X,X,XtX5X>XwX:.:.wX4XtX6X6XX.:X2X1X4.>.<.5.-.0X1X.,.<.v z g p a 7 z + 4 4 w z @ @ d ;Xb b b x b b b b wX>X0X:.;.;.;.,.:.;.:.j :X*XsXKXh v k *Xg 4 =.b g z j *Xk ;Xp z a a a z v :X-Xo 4 k uX7Xo...6X:X=X/ $ a z n 4 b n + p k -XyXuXyXo... .X.X.X.X.X.X.X.O.o.7XAXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXCX' ~ ^ ' T w.d.f.z.z.g.z.a.a.a.a.a.a.a.i.i.i.a.i.i.u.u.u.u.u.u.u.u.u.u.u.~ S ^ ZXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXg -X-X*Xx k -X-Xz g j s g 4.,.,.,.<.b :X7 2 7 9.;Xh f KX-Xs KX:Xd 5.,.,.-.-.qX-X2 q.j , l U f -X+.+.7X7Xf b x z h g l z a - , O > , + b :X:X:Xv & = x :Xv v :.,.b -X5.,.-.-.-.:.0X1X-Xg -XyX0X5.;.-.-.-.-.-.-.-.-.-.-.-.;.<.5.:.-.-.-.;.;.-.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXZXZXBX' ! Q I b.n.G.T.T.T.U.P.T.Y.P.P.Y.T.T.~.T.T.T.~.T.T.~.~.T.~.T.T.Y.T.!.Y.! Q } BXGXHXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXyX2X1X1X2X,X4XwX:.<.v S iXeX> g b g 5 - :Xx @ g 5.-Xz Q iXwXf =XiX=Xd , ; - h - * , z z z 5 5 a x @ z w d 5 5 p n v @ z n x 5 ;XX.X.X.o.:Xp 8.8.O w @ + < 7 z @ + 4 5 4 g g ,Xv @ p + ;X1X,X:.>.-.,.2.-X2X2X,X,X,X2X2X,XyX:XyX2X,.,.-.,.5.3XsXaXGXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXAXDXZXAXAX~ ~ ~ c.n.U.~.(.`.(._.(.(.~.~.T.T.T.T.Y.T.I.Y.L.U.U.T.T.Y.T.T.P.T.T.T.P.P.P.L.L.P.L.L.S.L.S.L.H.L.H.U.A.H.H.H.S.G.G.S.S.S.S.H.S.H.H.H.S.G.H.A.S.A.A.", "m m m m m m m m m m m m m m m m m m m m m m m m m N m m N m N m m m V B N B C B B m B m N C m B N N C B C N B B N C B C B C B B C B C B C N B B C B B C B B C B B C B C B B B N M B C N C M N C C N N C C V C C C C Z C D Z A C C Z Z Z Z Z Z Z Z Z Z D Z D D D D D H D Z H H H H H H H Z H H H H J H J L e.Y.^.T.~.~.~.~.~././.(.^.(.(.(./.(./.(.^._._._.{. X_.|.|.|.|..X|..X|..X`. X.X X.X X.X@X.X.X'..X.X.X'..X X X.X'.'..X.X.X.X.X@X.XzX.X@X XdXdXdXdXdXzX.X.XzXzX.XzXdXcXdXzXzX.XdXcXzXzXzXdXcX.XcXdXdXdXcXcXvXdXdXdXdXdXcXdXdXzXzXzXdXzXzXcX.XzX.XxX.XvX.XdX.XdX.X.X.X.X.X|..X.X|.'.|.|.|.|.|.|._.|._._._.(.`.(._.`.^.`.{.|.^.|.(.^.^./.(.~.(.~.~.~.~.~.~.~.~.~./.~./.~ ! Q ZXVXZXZXVXVXZXFXFXFXFXFXFXFXFXFXFXAXDXAXDXFXFXFXFXyX,X5.,.;.0X1X2XwX5.:.>.,.4.1X,X,X,X,X1X5.9.,X2XyXX4X2X9.>.tX1X,X,X,X,X,XX2X>X,XwX1.,.,.;.;.wX2XyX2X7X...wX2X5.>X2X2X1X4X4X5.,.qX4X4X1X,X2XyXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXZXBX} ! Q ' n.].'.'.|.}.}._.}._._.|.`._._.|._.}.}. X}.}.}.}. X_.|._.|.|._.~.! ! ^ ZXVXFXZXFXVXZXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXAXAXFXO. .z p g @ 3 2 < 7 7 j v 2.>.,.>.,.2.;Xb v j k 6 2 + g v v @ @ @ l b 2.,.,.;.,.,.,.:.,.:.:X0X;.;.-.-.-.-.;.;.2.-X;XaXM.O v g j p w O O z d 2.2.j 2.p @ 2.9Xk w + @ d b l k -X2X+.X.7X:X;X:Xz a x 8.7 s g p x n @ -X;X:X;X7X..X.X.X.X.X.X.X.O.O.oXDXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXBX} ~ Q [ T e.d.k.s.a.a.i.a.a.a.z.a.a.u.a.a.i.i.u.u.u.u.u.u.u.u.u.u.u.u.s./ / ~ ZXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXp j 5X*X@ g 2.*Xl k 2.k z 8.2.2.2.0X:X:X7 2 a *Xp d a z p + f p - 8.2.2.2.8.3Xv O h @ 5 2 S +. .:X:X-Xh +.6Xg g 4 < v s s s p s p k g -Xk v v k k k v -X>XqX9.2.-X,X-.-.-.-.-.-.0X4X:Xk :X1X4X5.>.-.-.-.-.-.-.-.-.-.-.>.4.1X:.-.-.<.5.;.-.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXDXDXHX[ ! S I b.n.G.U.U.T.U.T.T.P.P.T.T.T.T.T.T.T.T./.T.T.~.T.T.T.T.T.T.T.Y.F.! S ' fXHXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXyX1X5.,.,.,.5.4XwX0Xb | { | > l n v 5 u 6X/ w j 9.*Xw | { Q f =X>X=Xk l g l g 7 l l g l 4 7 z 4 4 5 7 v b v k n x v b v l v b 6XX.X.o.+.n l gXsX4 z a - z z - - z z z @ - z c c l l v b 2X2X5.>.,.,.2.n 2X,X.5.:XwXsXVXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXFXAXFX~ ~ ~ b.n.K.(.^.^.`.(.(.E.[.~.~.~.T.T.Y.T.T.T.T.T.T.T.T.T.Y.Y.T.Y.T.T.T.P.Y.P.L.L.U.L.L.L.L.H.H.H.G.S.H.H.G.H.S.S.A.S.S.A.S.S.G.S.S.S.H.A.A.A.A.A.A.", "= m m m m m m m m m m m m m m m m m m m m m m m m N m m m m N m m M M N N B N N N N C N C N C N N B B B B B N C C C B C B C B C B C B C C N C C C B C N B C B C C B B B B B B B C V V B V C m V C C V C C C C C C D C B C C Z C Z C Z C C Z C Z Z Z H Z Z Z H D D D D D H H H H H H H H H H H U H H L H G b.!.T.~.~.[.T./././././.(.(.(.(./.(.(.{.(.(.^._.|.|._.|._. X X.X X|.'..X|.|..X|. X.X.XdX X'.'. X'.|.|.|..X|..X XdX X.X.X.X.X.X.X.X.XzXdXdXdXdX.X.XzXdXzX.XzX.XdXdXcXdXcXdXnXdXzXxXdXzXcXdXdX.X.XcXdXcXdXdXcXdXcXdXvXcXcXxXdXxXzXzXzXzX.XdXxX.XxX.XzX.XdX.X.X.X.X X'. X.X|..X|.|.|.|.|.|.|.|.|.|._.|.|.|.^._.|._.^.`.^.(.(.(.(.(./.(.~./.~.~.~.~.~.~.~.~.~.~./.(.~.~ ! ^ ZXAXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXyX4X9.>.0X1X,X2X1X4X9.>.5.0X2X,X,X,X2XqX>.-.4.2X2X,X>X,X+.O.X.o.X.X.X.X.X.X.X.X.X.X.X.X.X.6X6X6X6X8X+.o.X.X.X.X.o.+.,XyX4X0X,.wX,X,X,X,X,X,X,X,X,X,X,X1X,XwX<.wXtX1.;.>.4.4.-.>.0X1XX6X..8X>X,X,X,X2XqXwX,X1X2X2X2X.;.>.-.5.4.-.,.2.*X-X4.,.-.-.-.-.-.>.j -X-Xp 7 + 5 | -Xs v k j h v v z v k z z j qXk a 2.5.*X:X- ;Xz *X+...7X:Xn -Xk d 4 b g uXtX*Xb n a g b l h -X6X+.o.+.O.X.X.X.X.O.oXGXDXGXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXHXBX[ ~ ~ ' T i.i.i.a.a.a.k.k.a.a.k.k.i.i.a.a.i.i.i.i.u.u.u.u.u.u.u.u.u.u.u.~ / S ZXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXz *XiX:X@ j 5.;Xg ;Xv k d x z z z z l l g v w z w v b b v b v b v v v n v -Xl z p a @ a h v c d d @ n ! z +.6X-X! S + f } s O } s -X;X:XwX<.wXwX1.:.:.:.wX4X1XwX,.wX.<.qX:.>.-.>.4.1X:.-.-.-.ZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXAXAXBX} S ! U e.F.F.U.U.U.U.Y.U.U.P.U.T.T.T.T.T.T.T.T.~.T.T.~.T.~.T.T.Y.T.~.F.~ ~ [ BXDXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX:X:X0X2.4.2.0X:XX>.>.,.2.-X1X>X>X>X<.,.-.>.>.-.5.4X1X1X:.,.9X=X:X*XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXVXZXZXSXDX~ ~ ~ b.n.!.E.(.|.^.(.(.(./.~.~.~.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.P.P.P.P.P.P.D.L.S.U.S.H.S.L.G.L.S.H.H.S.S.H.l.A.S.G.S.S.S.S.G.S.S.A.Z.A.h.A.h.", "m m m m m m q m m m m m m m m m m m m m m m m m m m m m m m m m M M M N N N N N N N N N N N B N B B B N B B B C N C N B C B C B C B C B C N C N B C N C Z N C B B C C B B N u B M u B B C B C C N C V C C B A C C C C Z C Z A Z C Z Z Z D Z H D Z Z Z H H Z Z Z D D D D D F D D Z H F H H H H H Z L H J H [ L.~.~.T.~.~.T././.(./.(.(.(.!.(.(.(.^.(.(._.|._.{.|.|._.|.|.|.|..X X|..X|.|.|..X.X.X'. X.X X X`.|.|..X.X X.X'.@X.X.X.X.XxX.X.XdX.X.X.X%X XdXzX.X.X.X.XzXzXxXdXdXdXdXdXxXdXdXzXcXzXzXdXcXcXcXcXcXdX.XdXdXcXdXdXdX.XdXdXdXdXdXzXzXzXzXxXzXzXzX.X.X.XzXdXdX.X.X.XdX@X.X X.X X|.'._.|.|.|.|.|.|._._._._._._.|.[._._.(.`.`.(.(.(.).(./.~.[.~.~.T.~.T.T.T.[.T.~.T.~.~.~ ~ S ZXAXFXDXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXyX3X9.0X4X>X7X6X>X2XwX0X4X,X,X,X2X,X2X4.>.-.>.9.2X,XyX>X3X+. .o.X.X.X.X.X.X.X.X.X. . .7X6X,X>X,XuX>XuX+. .X.X.X.o.o.+.,X1XqX,.wX2X,X.,.wXwX>.-.;.wX1X,X,X2X7XX.:X>X,X,X,X1X1X2X2XtX1.wX2X5.;.0XtX:.:.,.,.,.5.1XFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXHXCX' ! ! ` F.Q.]._._._._._.{.^._.(.(._._._.|.|._._.|._._._._. X|.|._.'._.].S ! ^ ZXVXFXFXAXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo. .6X>XpX0X5X>Xz g 2.-X:XtXwX-Xk k @ g 4.*X3 j s + n v *X;Xw x x @ :X0XqXqXqX0X1X1X0X5.;Xk k j ;.-.-.-.-.-.,.j ;X>Xj j g - | } @ v k 2.s z g - z ;Xb b z v k z 2.9X*X;Xz sXl h 6X8X+.X.8X>X1Xb x :X;X:X:X-X- a a *X-Xh n f *X+. .o.o.X.X.X.X.O.7XDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXCXHX' ~ ~ [ T e.i.i.k.k.a.a.a.a.i.d.a.a.a.i.a.i.i.u.u.u.u.u.i.p.u.u.u.u.t.p.S / ~ DXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXg p k p 5 p k p h -Xg 4 @ p p p @ p a h g 4 @ v k v 0X,.,.,.,.:.:.:.:.:.,.4.b v k k @ 6XsX*X7X/ eXsX/ 7Xn u 6Xx +.W @ - | { , | } b -Xb ;.,.,.,.-.>.>.>.qXwX:.;.<.>XwX,.-.-.-.-.-.>.-.0XyX4Xk -X,X1X9X,.-.-.-.-.-.-.-.,.5.,X9.5.;.-.-.:.-.-.-.-.DXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXAXHX] / S ) b.n.P.U.U.Y.U.P.P.U.U.U.U.U.T.T.T.T.~.T.T.~.T.T.T.T.T.T.T.Y.Y.Z.Q ~ ' BXZXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXx w l d d d l w @ 5 g h h 5 g 4 h 5 g 4 7 z g h d z g h 5 4 h w w 4 j l l 2 7 l g g z d h z a x 3 =.;Xo.o.O./ } O.o.X...o.O. ...+.X. ...;Xh - 5 l < 2.2.p 4 2.2.- 7 2.2.h Q / M.@.;X;Xv ,X>X>X9X5.5.-Xv XtX>X5.2.5.5.5.5.5X>XXiXeXyXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXVXAXFXAXAXDX~ ~ ~ b.n.U./.(.^.|.(.^.{././.~.~.~.~.~.~.T.Y.T.T.T.T.U.T.T.Y.U.T.T.T.T.T.P.P.P.L.L.U.L.H.H.H.L.H.H.H.H.H.H.S.S.A.A.A.A.h.S.S.A.S.S.H.S.A.A.H.S.A.A.", "m m m m m m m m m m m m m m m m m m m m m N m m m m m N m N m B N M m B N B N N N N N N N m N C B N B B B B N N N C B D B C B C B C B C N C N C B C Z C B B B C C B C B B B B B B B B B B B B C C B C C C C F C C C C C D C Z C C Z Z Z C G Z Z D D Z D Z H D Z Z D D D D H H H H D H H H Z H H L U J P J T F.~.~.~.~.~.!././.(.(.(.(./.(.(.(.(.|.^.(.|.[.}._.|._.|.|.|.`.|. X'.@X|.|.|.|. X.X|.'.|.|. X|.@X|.|.|.'..X.X.XdXdX.X.XzX.XzXzX.XdX.X.X.XfX X.XzX.X'.'.zX.X.XdXdXdXdXdXdXzXcXdXdXzXzXdXdXcX.X.XmXdXcXcXcXdXdXdXcXcXcXdXnXdXnXzXzXcXxXzXzXzXzXdX.XzX.XdXdXzX.X.X.X.X.X.X X'.|.'.|.}.|.}.}.}.|.|.|.'.|.|.|.|._._._.`._.^.(.(.(.~.(.~./.~.~.~.~.T.~.~.T.T.T.~.T.T.!.~ ! ! ZXAXFXFXFXAXAXFXFXFXFXAXFXFXFXFXFXFXFXDXAXDXDXGXSX5.:.9.4X>X7XX.+.tX2X2X1X.-.-.>.:.2X,X,X,X>X3X+.....X. .X. . . . ...7X8X5X>X5X,X>X,X,XtX2X+. .X.X.o.X.o.XX.4.5.,XwX>.>.4.,X,X,X,X,XyX6XO.3X>X2X.5.1XwX,.>.:.>.<.5.5.4.;.0XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXCXDXHX[ ~ ~ { n.].].'._.`._.`.(.(.(.`.`.^._.|._.|._.`.`.|.}.{.|.}.|._.|.|._.!./ ! ! ZXVXFXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXo. .7X:XsX;XtX>Xz j 9.;X:XyXyX-Xj k z j 5.;X7 kXj o + O v l + + O @ ;X1X1X1X1X2X,XyX4XuX:Xj j j ,.,.;.>.,.;.,.j -X;Xv v k 5 , , @ b k -Xk 5 =.x 4 -X-X@ a g -X- a k a ;Xl @ @ a :X:X} | } :X;X-Xz @ 5 @ l b b ;Xl l l z n v p :X+.X.X.X.X.X.X.X.oXDXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXDXBX' ~ ^ ` T t.a.a.a.d.k.a.k.a.z.i.a.a.a.a.a.i.i.i.u.i.u.u.u.u.u.u.p.u.u.u.S / ~ DXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX:Xl v k h g g h 5 j =.=.2 O p k d 3 x @ 2 =.4 .:.;.1.8.b p 2.j d UXx v 7X/ n b | n k v g z f f d d f f p f f =X-X;X0X5.5.4.,.,.>.-.;.4.4.,.j -XX*Xv :X:X:X:X:X:X>X:X:X:X:X:X:X:X:X:X:XwXKXaXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXAXGXFXAXZX~ ~ ) c.n.!./.^.(.(.`.^.(./.(.~.~.[.~.~.~.~.T.T.Y.T.T.T.T.T.T.P.T.T.P.T.P.P.L.Y.L.U.P.L.S.H.H.U.H.L.H.H.H.D.S.A.A.A.z.H.l.A.l.A.h.S.S.A.h.G.A.S.A.A.", "m m m m q m m m = m m m = m m m m m m m m m @.m N m N m m N m m m M M M N B N N N N N m C C N m N N N B N B C N C C m B C B C B C B C B C C C Z B B B B C C B B B C B C B B B B B B B B C B C C M C N C C C C C C A Z C C B Z Z C Z C Z Z B D D Z H Z H Z D D L D Z D D H Z H F H D F H H H H H Z H L I L ` F.~.T.T.~.~././././.!.(.(.(././.(.(.(.^.(.^._.|._.|._.|.|.|.|.|. X'.`.|.|..X.X|. X.X.X.X.X|..X|.|.|. X|. X'..X'..X.X.X.XzXzX.XzX.XdX.X.XdX.X.XzXdXzX.XzX.XzXdXxXdXxXdXxXzXdXxXxXdXcXdXdXvXcXcXdXcXdX.XcXdXcXdXvXdXdXdXnXdXdXcXdXdXdXvXzX.XmX.XcX.XzX.XdX.X'.dX.X.X X|..X X|._.|.|.|.}.}.|.|.|. X_.|._._._.|._._._._.{.|.|.(.(.{.(.{.~.~.[.T.~.~.T.~.T.T.~.T.T.~./ Q ^ ZXVXFXZXAXVXAXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXAXGXSX9.,.<.5X6X....6X2X,X,X,X,X,X,X1XwX5.5.5.:.>.-.0X2X,X,X,X,X2X3X6X+... ... . .6X6X8XyX1X0X:.<.>X,X2X,X,XuX8X..X.X.X.X.O.:X,X1X0X,.-.,.wX1X2XwX:.,.wX1X1X,X2X2XwX:.;.>.wX4X2XwX>.>.0X1X,X,X,X,X,X>X7X..3X2X2X4.-.,.-.-.-.>.:.4.5.4.>.,.0X4X4X3X,.5.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXBX' ! ^ ` n.].!.'._.`.(.`.(.(.`.^.^._.|.{.|.'.`.|.|.|.|.|.|. X|.}.}.`.`.].~ ! ^ ZXAXFXFXAXAXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXo. .6XwXl v >X>Xl @ k a -XX*Xn b v l 2 2 3 2 p g k d =.q.j 3 2 l :X:X-Xk p z z z v ;X<.;.:.j :X-X- v < + c e +.7Xd p z } / -XuX;Xb :X:Xv -X:X:X:X:X:X3Xb v ,X:X:X2XqXqX4.>.>.0XwX>.2.-X1X5.-.-.-.-.-.-.-.-.;.,.0X1Xv -X:X:X9X-.-.-.-.-.5.1X:.-.-.;.-.-.-.-.-.-.-.-.DXZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXFXZXAXAXHX' ! ! Y b.Z.L.U.L.U.U.U.U.P.U.U.U.U.T.T.T.T.T.T.~.T.~.T.T.T.T.~.T.Y.T.F.! ~ ' BXZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXDXx 2 w j 9.-X- l 8.z - j 9.:X- 8.sXz 5 2 2 2 l j 9.j a z :Xb @ 7 5.7 - 7 l 2 7 l z > } :X, | n - :XO.X.O.o.O./ | O. ...O.O.O. . .....6Xj < x n v @ ;Xj 2.-X;X0X2. + =X5X:Xs ;X;Xb 9.,.,.;.:.<.b b 9.:.:.<.:.:.:.;.:.,.:.,.0X5X>XtX>XeX6XaXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXZXFXAXZX/ S / b.n.!.!.(.(.|.(.(.(.^./.^.(.^./.!.~.~.~.T.~.T.T.T.T.T.T.T.T.T.T.P.P.T.P.L.L.S.S.P.H.H.L.D.H.G.H.H.H.A.S.A.A.A.A.h.S.l.S.S.A.h.A.A.A.A.S.A.S.A.", "m m m m m = m m m m m m m m m m m m m m m m m m = m m m m N m N N N m m B N m B m m B m m N m N m V N V V V B B B B B C B C B C C B C B C B Z B N N C N C C N C B C B C B B B C B B B B Z N N Z C C N B C C C C C C Z C Z C C C C C C Z D Z Z Z Z Z Z D D Z u Z K ` _ { m.[ pXaXpXaXgXgXaXgXaXgXaXgXgXaXgXaXaXgXaXaXaXgXpXhXaX].hXhXQ.].'.^.[.[.^.^.^.}. X[.|.{. X}.'. X|. X.X X}.'. X`.|.|..X.X|.|..X.X|. X|.'.'..X.X.X.X.XdX.XdXdXdXdXzX.X.XzX.X@X.X.XzX@XdX.X.XzX.XdX.XzX.XzXzXzXzXzXzXzXcXzXxXzXzXxXxXxXzXxXdXcXdX%XdXfXdXcXcXdXcXzXzXcXdXdXzXzXzXdXxXdXdX.XdX.XdX.XdX.X.X'..X|.|.|.|.|.|.|.|.'._.|.|.|. X|.}.}. X}._._._.|.[._.{.^.(.(.!.^././.T./.T.~.T.T.T.T.T.T.T.T.! ~ Q ZXHXZXZXAXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX9.>.-.5.7XO.X.7X>X,X>X2XtX,X,X,X1X1X1X4XwX5.0X1X2X,X,X2X2X2X>X>X3X6X6X8X7X8X>X2X>X2X2XwX1.,.:.<.<.2X1X1X,X7XX.+.X.X. .+.2X1XqX,.-.-.:.tX1X0X,.>.wX1X,X2XwX:.>.9.4.,.0X1X1XwX,.,.:.wX1X,X,X,X2X>X3X..8XyX3X1XqX4.>.>.<.4.>.qX4X1X9X5.tX,X,X2X5.;.FXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXBX' / ^ ` n.].~.`.`.`.^.`.`.{.`.(.|.(.`._.`.'._. X_.}.}._.}._.|.|._.|.|.~.! ! ^ ZXVXAXZXFXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXVXFXo.O.6X>X*Xs =X*Xx b v b b b v b b ;Xz h 5.-Xd v b b >XyXyX1Xb v *X*Xv b :X:X-X-X:Xx l b b v b b v l b b b b b v g v k *X5 ;XtXX7XX.o.+.+.X.X. .X.X.X.X...hXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXCX' / / ` T e.a.k.g.a.k.a.i.i.i.i.a.a.k.i.i.i.a.i.i.i.i.u.i.t.i.u.u.u.u.u.S S Q CXDXZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXeXsX;X5X>XpX;X5Xv d a - z w f d w O O O z z @ @ 4 d @ a p d @ + z 2.,.,.,.4.b - M.j @ | +.7X:X;X:X*X6X{ :X:Xn a a - g g @ a z v l z a v v b l v .>.;.-.8.-X5X2X,.;.-.-.-.-.-.-.-.>.5.4X,X-Xk z -X0X5.-.>.-.-.:.-.-.-.-.-.-.-.-.-.-.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXFXAXCX' ! ! P b.Z.F.U.U.U.U.L.L.U.L.L.L.Y.U.T.T.U.T.T.T.T.~.T.~.T.~.T.!.~.[.F.~ ! ' BXFXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXSXx 2 g h k g h + < O h h k h p 3 x < g 3 =.2 g a v v g @ + + h 4 h 4 h < 7 7 l < 7 - > - o > - a n +.| } +.X.l ' } 6X6X} 6X} 6X6X} 6Xj 2 l w 5 a @ v :X.4.5.4.-.,.2.b ;.-.-.-.-.-.<.5.5.5.5.5.wX1X1X2X>X:X*X=XCXGXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXZXZXAXAX~ / ~ b.n.T.[.(.(.(.{.^.(.(.(.).(._.{.(.^.T.~.T.T.T.T.Y.Y.T.T.Y.T.Y.P.P.U.T.U.L.U.S.U.S.U.S.H.A.H.S.H.H.H.H.J.A.A.h.h.l.h.A.A.A.A.A.A.A.A.A.A.A.W.G.", "m m m m m m m m m m m m m m m m m q m m m = m m m m m m m N m m N N N m N m m m N m m N M N m V N N N V N B u N B B C B C B C B C B B C B C B B C Z C C N C C C C B Z B C N B B B C B B N Z C N C B C C C C C A A B Z Z Z C Z C Z C C B Z Z Z Z Z Q ) [ M.pXaXgXgXgXaXgXgXgXaXgXaXhXaXaXaXpXaXaXaXpXaXaXaXaXaXaXaXpXpXaXaXpXaXpXaXaXpXaXaXaXaXaX].hX].].|. X X}. X X X`.`._.`.`.'.`.|.|..X|.|.|..X|.'.|..X|..X.X.X.X.X.X.X.X.X XdX.XdXdXzX.XzX'. XdX.X.X.X.X.X.XdX.XdX.X.X.XzXzXzXzXzXzXzXzXzXzXzXzXzXxXzXxXzXxXcXdXnXdXcXdXcXdXzXzXzXzXzXzXdXdXzXdXdXdXzXdXdXdX.X.XdX.X.X'.'. X.X|.|.'.|.|._.`. X_.'.|.|.|.|. X}.}.}.}. X_._.]._._.(.(.(.(.(.(./.~./.T.~.~.T.T.~.T.T.T.~.T.~ ~ ^ DXVXZXFXAXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXeX;.;.0X7XO.o.7X>X,X2X>X,X,X,X,X,X2X,X,X1X1X1X,X,X,X1XqX9.tX2X1X>XyXtXtX>X.;.tX0X<.tX6XO.o.X.X.X.X.3XuX.-.4.2XXtX,X2X1XqXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXBX} / ~ [ n.].].(.(.`.^.(.`.(.(.`.(.(.(._._.|._.}._._.}._. X{.|.|._.}._.T./ ! Q ZXZXZXGXFXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXVXFXo. .7X>X>Xb l 5 g >X>X>XtX1X2X1XuX,Xx g 9.;Xd XwXM.eX>Xg z 7 b - @ 2 j s 2 a :X, O 2.< @ g ;X2.4.2.2.v + j g + +.8X:X:X;Xk *X7X+.m.iXu 5 - z p v k k *XuX:Xk k v ,XuXX:X8.5.4.-.-.-.-.-.-.-.;.0X1XyX1X,X-X-X1X0X5.-.-.-.-.-.-.-.-.-.-.,.>.>.>.>.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXAXBX[ ~ ! I b.n.L.U.U.U.L.U.U.Y.L.U.Y.L.Y.U.T.U.T.T.T.T.T.T.~.~.T.T.T.T.T.F.~ / [ BXHXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXx l g 5 @ 5 g g w 7 g h w w g h - w g z p z g 5 @ 5 g h @ h g h a @ g @ z h h h h a @ @ z a a z v n u n f c z a z a z w l f x 5 a h l z z z 5 p c c f d -Xk z l l z l z + s s s p b ;Xx -.0X4X2X,.,.2.n ,.>.-.-.-.-.5.4X1X1X1X1X,X9.5.1X1X9.:.:.IXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXSXDXZXFXZXS _ / c.n.~.^./.(.(.(.(.(.(.(.|._.(.(.(.(.(./.~.~.T.T.T.T.T.T.~.T.T.T.U.T.P.U.U.L.L.A.U.S.L.H.L.U.L.K.H.H.H.A.h.A.A.A.l.A.g.A.g.A.A.h.A.A.A.G.A.A.h.", "m m m m 0 m m m m m m m m m m m m m m m m m m m m m m m m N N m m m m m m m m N m N m N N m N N N N N N B N V V B B B C B C B C B B B B B C C B B B B C C B Z N C N C N B C C B B B B C N C N C N C B Z Z A A C Z Z B B N C Z Z N Z Z Z S ' [ m.aXgXgXaXgXgXhXaXaXaXaXaXaXaXpXpXpXpXpXpXpXpXm.pXM.M.pX6XpXm.pXpXpXpXpXM.m.pXm.pXpXpXpXpXm.pXpXpXpXpXaXpXpX].].hX{. X X.X X|.|.|.'. X XdX.X|.`.`.|.|..X.X.X|..X.X.X.X.X.X.X.XxX'..X.XdX.X'.xXzX.X.X.XdXdX.XdX.XdX.XdX.XdXzX.XxX.XzXzXzXzXzXzXcXzXzXxXzXzXzXxXxXxXdXcXdXvXdXdXdXmXcXzXzXzXdXzXcXzXzXvXzXdXzXdX.X@X.XdXdX.X XdX|..X|.|.@X_.|.|.|.|.'.|.'.`._.|.|.}.}.}.}.}._._._. X_._.{.^.(.(.(.^././.^.T.T.~.T.T.T.Y.~.T.T.T.~ ~ Q ZXVXFXZXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFX4X1.<.1X:Xo.o. .6X2X1XyX2X2X,X,X,X1X,X2X5.<.4.yX,X,X1X4.,.:.4.tX,X,X,X2X,X,X2XqX:.<.:.:.5.4X5.,.>.;.;.,.tX6X..X.X.X.X.o.:X>X1X0X,.-.tX2X2X2X1X1X,X,X,X,X2X1X4X1X1X.;.wX1XwX<.wX,X,X>X7XO.:X1XX1X9X4.,.qX4X,X,X>X,X7X+.o.+.8X1XVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXCX' S S ` n.].!.(.(.(.{./.(.(.(.(.(.^.`._._._._._._.}.}.}.}.|._._.|.}.}.].S Q S ZXVXAXFXAXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXGXo...7XuX>Xn x g z tXk ;Xk X,X:Xg @ k g 4 -XXyXb l n v @ :X>X1X1X,X2X4X2X,X1X0X>.>.2.b j 2.2.5.9X*X-X:Xs k g % f g O | k s :Xv ;X1.5.b b b b b b d k v k h k d S +.8XX6X .X.X.X.X.X.X.X.X.X.X.o.hXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXFXBX' / ~ ` T e.g.a.g.a.d.i.a.a.k.a.a.a.a.k.a.a.a.a.i.i.i.i.u.i.u.u.u.u.s.t.~ / S ZXVXVXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDX:Xv *X=X*Xb b >Xk v KX-Xd | { / - b 8.8.+ 8.lXx 2 l :Xc 3 8.=.-Xg @ a d p p @ + s p p pXn + s g k :X+.+.{ { @.h n x @ v j j *X:X-Xg 2.a x -X-X:X1X>Xk - d l z z - z x l -X4X>X;.-.;.>.-.-.-.-.-.:.:.qX1X,Xv -X:X1XqX>.,.-.-.-.-.-.-.,.<.5.5.5.;.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXZXVXFXHX} S ! L b.Z.L.U.U.I.I.U.L.U.L.U.L.L.U.U.T.U.T.T.T.T.~.Y.~.~.T.~.~.T.T.F.S / _ BXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXSXx 2 @ z l g h =.=.2 a 2 j s d 2 j s h b 2.k @ 5 5 g h w l k - 4 2.O d 3 2.5 , n s O - z 5 - } s f O.+.+.+.X./ z n sXw u eXiXu p ;Xn + l x z + c M.iXA =X=X>Xs x b b v v v b x b v -X:Xb 5.:X:X:X2.2.b b 2.4.>.-.-.;.;.<.:.:.:.:.:.-.-.0X1X;.,.,.FXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXDXFXFX~ / ) b.n.].^.(.(.|.(.(.(.(.(.|.{._.|.(.(.(././.~.~.~.T.T.~.T.T.Y.T.T.P.P.P.U.L.L.L.U.L.U.S.H.U.S.U.G.H.H.Z.H.A.A.A.l.A.z.A.A.h.A.A.A.A.A.A.A.A.A.A.", "m m q m m m m m m m m m m m m m m m m m m m m m m m m m m m N m m m m m B m N B N N m m N m m N N N N V N V N B B B B N C B C B Z B B C C B B C C B C N B C N C C C C N C C N C C B C B Z N C C Z B B C N C C C C C C C G C H H A _ [ aXgXgXgXgXaXgXgXaXaXpXpXpXpXm.pXM.{ m.m.{ { M.{ { } { { { { { { } ' { { { { { } { pX{ { { { M.M.{ { pXpXM.pXpXpXm.pXpXsXpXpX].hX].`.|.|. X.X X_.`.|..X.X.X.X|.|..X|.'..X.X.XdX.XdXdX.X@XdXzXdXzX.XzX.X.X.XdX.X.X.X.X.XzX.XdX.XdX.X.XzX.XzX.XzXzXzXzXzXzXzXxXzXzXzXxXzXzXxXvXvXcXdXcXcXcXdXzXzXzXzXdXzXzXdXdXvXdXcXzXdXdXxX.X.XdXdX@X.X.X.X.X|. X X|.'.'.|._. X|.`._.|._.}.}.}.}.}. X_._._._._._.[.(.^.^.!./././.~.T./.~.T.~.T.Y.T.T.~.~ ~ S ZXVXFXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXGX3X9.>.5.5X7X..o.O.+.+.X.6X3X,X,X1X5.:.:.>.>.<.2X,X1XqX-.-.-.,.4.2X,X,X2X2X0X<.-.>.-.4.9X1X1XwX5.5.5.4.qX>X,X7X .X.X.X.o.+.2X,XtX5.5.XuXyX2XqXwX2X2XX:X;Xl v b b k x v x g ;X:X:Xv @ @ @ @ :XyX.b v k k *X:X:X*X*Xj M.KXl a v x + W { -X1XyX:.,.,.:.:.;.,.1.2.d k *X-X2X>X7X..6X5X>X-X:X;X>X>Xx z k -X.<.4.-.>.-.-.-.;.,.;.:.9X4X-Xg -X2X0X5.-.-.>.-.-.<.5.wX4X1X1X<.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXBX' / S Y b.Z.F.L.K.U.L.L.U.U.U.L.U.Y.L.P.Y.T.T.T.P.T.T.T.~.Y.~.T.T.~.~.F.! S } BXZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXSXx =.@ l :Xv 5 2 2 =.w 8.sXk @ 8.aXz @ j 9.k 5 l n x @ l :Xb a 7 8.=.a 2 q.b % +.n g n x a > | -X> | W W W / f d ;X8.h / } { @.g -X-Xg l n v p / } 8.@.=X5X:Xs b 3XX:X:X.>.<.wX1X0X5.5.FXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXDXFXFXZXS ~ / b.F.!.(.(.(.(.|.(.^.|.(._._.|._._._.{.^.~.~.~.T.~.!.T.T.T.T.Y.T.P.P.U.U.L.L.L.S.H.S.U.S.S.H.U.L.H.S.S.A.A.A.A.A.A.Z.g.A.A.A.A.G.A.A.A.A.j.h.A.", "m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m N m m m N N M N m B N B B B B B V C B B B C C C N Z N Z N C N C N C B C C N C N B C B C C B C N Z N N C C N B C C C B B C Z C G H D Z S { pXgXgXgXgXgXgXaXaXaXpXpXpXpXM.{ M.{ { { ' ' ' / ` ^ ^ c u u u u u u u u u S u u u Q u u u Q Q Q ' ' ' ' ' { { { { { M.M.M.{ m.M.pXpXpXpXpXm.].].'.hX.X.X X|.'. X X X|..X.X.X'.@XdX@X.X.X'..X.XdX.X'.@X.XzX.XzX.XzX.XdX.X.X.X.X.X.XdX.X.XdX.XdXdXdXcXzXzXzXzXzXzXzXzXzXzXzXzXzXxXxXcXdXdXcXzXzXzXzXdXdXfXdXdXzXzXdXcX.XxX.XdX'.zXzXzX.X.X.X.X.X.X.X.X.X.X|..X|.|.'..X|.|.|. X_._.|.}.}._._. X_._._.`.`.(.`.^.(././.(.~.~.~./.T.~.T.~.T.~.T.~.T.~ ! ! HXZXFXZXAXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX5.>.-.>.4.3XX.X.O.o. . ...6X>X,X1X0X4.5.5.,.:.2X,X2XwX:.,.>.-.;.,X,X2X0X:.;.>.>.>.5.1X4X0X9.1X1X1X4X4X1X2XuX8X .X.X.X.o.X.3X2X2X1X1X,X,X,X,X,X,X,X,X,X,X,X,X,X<.:.wX1XtX1XtX5.,X4XwX,.9.5.,X2X,X,X,XuX>X6X..O.+.8XtXyX4X2XXl - h w l :XeXaXl g b h z - l >X,XtXn :X1X2X;Xb v b g b v b l :X1X,X,X,X,X,X,X,X,X4.-.>.b v j j -XuXyX-X;X;XsXsX@ z k z d f f k 1X2X5.>.>.;.-.-.-.,.2.n 9.5.1X,X,X8X .3XyX:Xl x a >X:Xz x v @ :Xh n z *Xh n l *X8X6X8X8X6X+. .X.X.X.X.X.7XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXCX' / ^ _ T e.i.f.g.z.i.i.a.a.k.a.a.a.a.a.a.u.i.a.i.i.i.i.i.i.u.u.i.u.u.u.! ! S HXZXAXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.O.W X. c aXb + ;XuX1X;X- | } k *X;Xl k ;Xz 3X6Xk :Xj kX:X@ 7 lX;X5 b uX;Xb 5X>X3X9XtX1XqX4.>.>.>.-.-.-.-.,.qX4X,Xv -X>X2X0X5.5.-.>.4.4X2X,X,X2X0XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXZXDXZXBX' ! Q I b.Z.Y.H.L.U.Y.U.L.L.U.L.U.U.U.P.T.P.T.T.T.T.Y.~.T.~.T.T.T.T.~.Y.! / ' BXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXx < z + + + h < 2 2 g 3 n 3 h < n 3 g p v -Xz + < O h @ + + d O g < 5 4 O p > - O + O 5 - > , ;XO.O. .O.o./ a + 5 h > = N w p g k p g 5 @ g - M B t s s s k l z z z n z @ h p w h z f { iX) s 5X5Xs b :Xv b -Xz v 8.4.>.-.>.>.<.5.wX1X,X1X1X1XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXAXZXZXFXGX~ ) _ c.n.].!.(.(._.(.{.(.(.(.(.{.{._.^.{.^.{.^.~.~.~.~.Y.Y.Y.T.T.Y.T.T.P.T.U.L.U.L.U.S.U.S.S.L.L.D.H.H.H.G.H.A.A.j.h.A.h.h.j.h.A.A.A.h.S.A.A.A.h.h.", "m m m q m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m N m m m N N m M N B N B B N B B B N B C B B C N C N B C C C N Z B C C B Z N C B C C N C B B C C C C N C C C C C C N B G B D Z C C ' b.hXgXgXgXgXgXaXaXpXpXpXM.M.{ { { ' ' ! ^ u u u u f > e e y y 0 q > r : r r > r r : t r r y : y r ; ; e e y u u u S u ! ^ _ / ' { { { { { M.} M.m.pXM.pXpXQ.].'.'..XdX X X.X|..X.X.X.X.X X'.dX.XdXdXdX.XdXdX.X.X.X@X.X.X.XzXdX.XdXdX.XdX.X@X.X.XdXdXdXdXdXzXdXzXzXzXzXzXcXzXzXzXzXzXzXxXzXcXcXdXmXzXzXzXcXdXdXvXdXcXzXcXdXdXzXdXcXvXvXzX.XzX.X.XxX.X.X'..X|.|..X'..X.X|..X X|.|.|.|.{.}.|.}._._._._._._._.(.(.(.!.(././././.^./.~././.T.~.~.T.~.T.T.~.~ ! S DXZXFXZXAXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX9.,.-.>.,.5.3XX. .o.......X..4.5.qX1X,X,XwX5.yX2X1X0X<.,X2XyX6X .X.X.X.X.X..;.<.<.wX2X1X2X,X,X5.tX1X2X,X,X2X,X1X,X2X6X+... .+.+.+.+. ...+.2X>X>X2X,X>XyX3XFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXBX' / S _ n.].!.(.(.(.(.(.(.(.(.(.(.(.^._.|.^.{.[.|.}.}.}.}.|._.|._.{.(.].~ Q ^ ZXHXAXZXAXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXO.o.Xz x x @ @ -X< l 4 k -Xl x 5 @ -X:X*Xv :XyX>X,X2X2X1Xb *X*X>X;X;XyX,X,X,X,X,X,X,X4X0X,.,.2.-X-X*X:X1XyX-X-X:Xv g k >X1X1X>X>X>X2X,X2X1X0X5.-.-.-.-.;.2.v :.,.qX1X1X1X6XyX2X:Xb n p *X:Xd n n g *Xz sXx @ @ M.x @ *X:X-X>XuX3X+. .X.X.X...hXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXBX' / Q ` T e.i.g.i.a.f.g.a.a.a.a.a.a.a.a.a.a.a.a.a.i.a.u.i.a.i.i.i.u.u.u./ / Q ZXFXAXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.X./ o.>Xb z *Xz x z *Xv x O z v -Xv 4 2. @ l ;Xp s j $ / 7 -Xv @ z + @ z d + g 4 a } c d + + z 4 ^ { IXn @ -X:X>Xb - > - -Xk z a k ;X- l g k ,Xk 7 7 5 O 7 g O -XuX;Xv 5XeXsX>X5X,X1X1XqX5.4.-.-.-.-.-.-.qX1X>X-X-X>X1X1X1X:.>.>.1.qX1X2X,X1XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXZXZXBX_ ! ! ) e.n.S.U.I.U.L.L.Y.U.K.U.L.L.U.P.T.Y.T.T.T.T.T.T.T.T.~.~.~.~.[.F.! / ' BXDXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXx 7 g z w 5 g d d z g 5 @ @ h g a 5 g h a h l g w l l h z z z c f l 4 5 a a g h z z a d a g 5 h } O.o. . .X.:X5 @ a g g k k g g 4 w h g - z k h h @ h j z v j z x 5 k :X@ -X> -X> O c | eX@.=X=X=Xs v :X1X1X5X:Xv n b 2.,.<.5.wX1X2X2XtX4.:.0XVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXVXZXZXAXZX~ ~ / b.Z.!./.(.(.(.(.(.(.(.(.^._._._.|.}.{.^.^./.~.~.T.T.~.T.T.Y.~.T.T.T.P.T.U.L.L.L.L.L.L.L.S.L.Z.H.H.H.S.A.A.A.A.A.h.A.A.A.A.A.A.A.J.A.A.A.A.A.h.", "m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m N N m N N m m N M M N N N B N m V B N C N C B B C N B B B C N C B C B C B C C C C N C C B B Z B C N N Z Z N C N B B B B B C D S [ gXfXgXgXgXsXaXaXsXm.M.{ { { ' ' u u u u e e y > > r r r r y > : : : : t : r r r * t : > : : r e : r r : : e > : y > e ; > t u y u n u S ' ' ' { { { { { M.{ M.pXM.m.pX].'. X'..X.X.X'..X.X.XdXxX.X.X.X'.xX XdXdXdX.X.XdX.XdXzX.X@X.X.XdX@X.X.X.XzX XdXdXdXdXdXzXzXzXzXzXzXzX.X'.@XzXzXzXxXzXxXcXdXcXdXzXzXdXdXcXdXdXdXdXdXdXdXxXdXzXzXzX.X.XzX.XzX'.zX@X X'..X'..X|..X.X'..X.X.X X.X}._._._._.}._._._._.}._._.`.`.(.(.(.(.(./.(.T./.~.~.T.~.T.~.~.~.T.~.~./ ~ ^ DXFXFXDXFXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXwX;.:.5.:.<.>X:X7X6X6X6X6X6X7XyX,X1X5.4.2X1X1X2X,X,X,X2X1X1X1X1X,X,X,X1XwXqX1X1X1X,X,X,X2X1X,X,X2XwX5.,X2XyX8X..X.X.X. .X.3XwX<.tX,X2X2X1X1XwX1.<.tX2X,X,X2XwX<.-.>.>.9.,X2X,X,X,X,X4X1X2X2X2X1XwX<.:.wX1X>X>X8X6X6X6X7X6X6X7X,XyX2X4XyX2X2X2X2XFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXBX[ ! ! _ F.F.].(.(.(././.^.(.(.(.(.^.(.(.(.`._.|._.}.}.}.}._.[._.(._.(.T.! ! S HXZXAXZXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXO.6XX>XyX;Xv yX2X2X2X1X>X,X,XX3X+. . .....7XAXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXBX[ / ! ` E e.i.k.i.d.k.i.a.k.a.a.a.a.a.a.a.a.a.a.i.a.i.i.a.i.i.s.u.i.u.u.S / Q FXAXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXX.X./ X.-XsXx @ + :Xn + p KX5 z 3Xx @ =.5.7 z v KX+ O 4., n F w f c x f l d d c f c a l f c f v v z z 5 4 v a v l v v b v v v b v x v g g b v b v v v v b z j k p -X1X;Xb uXeXeX;X5X2X,X,X1X1X4X5.;.-.-.-.-.-.qXyX2X-Xv :XtXyX0X5.4.,.4.4X1X,X,XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXHXDXDXDXHX[ ! ! ) b.n.L.U.L.L.I.U.L.Y.U.U.U.L.Y.P.P.T.P.P.T.T.~.T.~.T.~.~.T.~.T.K.! ! [ BXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXl 2 a , v s a f n s z h @ z d 2 j s 4 f f s 2 =.=.z k k k @ u eXeX< 7 - c s 1 =.7 5 2.< a f S s -XO.O.X. .+.n 4 8.b & =X5X,Xs z x z + z n k *Xz x z + ;XuX*X;Xz n l -X:Xw :X;Xa :X6Xa c r @.u k *X=Xk b :X1X9.;.0X4X 0 0 : e : r r : e e : y r : : y r e r : * y y : : : r : r r t : : ; r : 0 0 0 0 r 0 t e = > : y u u u S ' ' { { { { M.M.} M.{ M.Q.'..X|..XdXdX.XdX'.'.dXdXdX'..XdXdX.X.XdX.XdX.X.X.XdX.XdX.X X.X.XzXzX.X.XdX.XzX.X@XzXzXzXxXzXzXdXdXdXdXzXzXzXzXxXzXdXcXcXzXzXzX.XcXcXdXdX.X@XvXdXcXdXzXzXzXvXzXzXzXdX.X.X'.xX X.X'..X|..X|..X|..X.X X'. X}. X}._._.}._._._._._._._.(.(.(.(.(.(././././.~././.~.~.~.[.T.~.[.T.~.~ ! S ZXVXFXFXFXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGX3X<.<.4X0X0X1X2XuX>X,X>XyX>X2X2X,X1X0XqX4XqX<.4.2X,X,X,X,X,X,XtX,X,X,X,X2X1X,X,X,X,X,X,X,X,X,X,X,X2X4X2X2X:X ...X.X.X.O.6X1X0X,.wX1XwX<.1.,X0X,.4.tX.9.9.>.wX1X,X,X1X,X2XwX9.wX,X9.:.9.4.>.;.wX1XX,X>XuXuX>X>XtX2XtX>X9.:.0X1X9.0XFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXBX{ ~ ! ` c.K.]././.(./././.(.(.(.(.(.(.).(.`.^.^.}.}.{.}.}.|.(._._.{.(.]./ Q Q CXDXFXZXFXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXFX .7X,Xz z + s f X.....7X1X2Xv @ @ @ a l n g 5 X,X1XyXtX-X-XyX2X,X,X2X2X,X,X2X>X,X,X,X,X2X1X5.>.>.-.,.2.f v v l v b k x l ;Xl k n b k b b v b b b g l v v b b l v 8.sXz 5 :X1X4X6X..X.....fXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXCX' / ! _ T e.g.i.z.k.z.i.a.a.k.a.a.k.a.i.a.a.i.i.i.i.i.i.i.i.i.u.s.u.u.u.S / S ZXAXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXX.X.@. . .c d d u f d d d n d - n - f % x w -Xl v f v v , 4 7 | O.O. .O.| / { X.o...n } ..X.O.6X3Xn c f x x c 6Xb ;X3X:X8XwX:.:.:.;.<.b b <.,.:.:.:.:.,.:.:Xg 2.p -X>X;Xb 5Xn x b 5X>X,X,X,X,X2X1X5.-.-.-.-.-.-.<.0X,X-Xg -XyX4X1X4XqX>.:.5.1X,XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXDXBX' ! S I b.F.G.U.U.L.I.L.U.L.U.L.U.L.T.T.P.P.T.T.T.T.~.~.T.~.T.~.~.~.T.F.~ ! ' fXGXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXx 2 d f -Xv 5 @.} v @ x n v - 8.sXg @ @.| v 2 =.2 5 -X2.j z | eX{ w 7 f +.n 2 =.w < 8.=.@ f .:Xf O.O.X.o.O.b z HX8.4 =X5X-Xp v n z p l sXa - x n l @ ;X<.<.;X- a @ v ;Xl x f + l g a v wX:X;Xv wX:X;Xk ;XwX2.4.:X:X:X-Xb 4X3X,X2X2X9.>.-.>.,.5.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXVXZXFXVXZX~ ~ / c.n.]./.(.(.`.(.(.(.(.(.(./.|._._.{._.`.^././.~.T.T.^.T.~.T.~.T.T.T.T.T.U.U.L.U.L.L.L.L.L.L.L.U.S.S.G.H.A.A.A.A.h.h.A.h.A.A.A.A.A.A.A.A.h.A.j.", "m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m N m m m N N m N M N M N N V N A M N A V B B B N C N A C C B B B B C C N B Z C C A C N C Z C B N N B N Z C Z Z C Z A P M.gXgXgXgXgXaXaXm.m.{ { ' ' / u u y y y y ; : r r r r r r e r r r r r r r r r r r r r r r r r r r r r r r r r t r : r r r y r r r r r r r r r r r r 0 r r ; y u u i / ' ' ' { [ { { M.{ { m.].dX'.`..X#XfXdXdX.XdX'.'.dX X.XzX'.dX'.dX XdX.XdXzX'..X.X.XzXzX.XdX.XzXzXxXdXzXzXzXzXdXdXzXxXdXzXzXdXzXcXdXxXcXnXdXnXdX%XdXfX X.XdXvXdXdXcXzXzXzXcXzXzX.XzXzX.XdX.X.XzX'..X.X'.@X.X.X'..X.X.X.X|..X|. X|._.|._._.`.`.(.`.`.(.(.^.(././.^./././.(.~.~.!.!.~.~.~.~.~.~./.~.~ ! S ZXZXZXZXFXFXAXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXDXyX0X;.5.4X4X,X,X,X,X,X,X1X5.4.1X2X2X2X1X1X4.,.:.2X2X,X,X,X,X,X1X2X2X2X2X,X,X,X2X,X,X,X,X,X,XtX2X2X2XyXyX:XX. . . .X. . ..wXwX:.-.-.:.-.>.wX1X2X,X1XwX:.>.wXwX,.0X1X2XwX9.wX,X:.<.2XwX,.<.2XtX>.-.:.wX2X2X,X2X2X2X,X,X,X,X,X.<.wX2X5.wXZXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXVXBX[ ! ! ` n.F.~.^.~.^././././.^.(.(.(.(.^.`._.^.`._.^._.(._.(./.(.(.{.(.Q.J ! ~ ZXVXFXFXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.6XtXz n l *X+...X.X.o.o.6Xb c f v c f z g a :XyXv -Xx - v x w h k k l ;XuX.4.1X,X,X,X,XyX-X-XyX>X,X,X,X,X,X,X,X,X,X,X,X,X,X,X1X0X5.>.,.2.v 9.:.:.:.qX4X:Xb v *X:XsXwX5X>X+.tX2X*X-Xz l :Xk :X*Xl -X3 b 6 z *XX1X,X,X>X2X>X1X5.>.>.-.-.-.>.5.4X2X1X-X-X:X,X>X4X0X4.>.qX1XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXAXAXBX' ! ! T b.n.L.U.U.L.U.L.U.U.L.L.U.U.U.T.P.P.P.T.T.~.T.T.~.~.~.T.~.T.T.K.! S } BXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXl 3 w s + O d , > - a O 3 O - < c < h & = - < < 2 l v v k z * m @.2 g , > - 4 3 7 + g 4 h - > , v +.| | +.+.f p - 4 4 s s =Xs z w p p h 5 p a h z a a 2.,.>.2.d - k v l g 5 5 g l d @ d z b v g g z k p z v v v w x x + v 2X,X.-.-.-.,.5.AXAXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXVXAXFXZXHXDX~ / ) b.n.^.T.^.(.(.^.(.(./.(.(.|._.|._._.^.(.^.{.E.(.~.T.~.T.T.T.~.~.T.T.T.T.T.Y.Y.L.L.Y.P.L.L.L.L.L.S.L.L.D.S.H.A.A.A.A.h.A.A.S.S.A.S.A.A.A.A.A.A.", "m m m m q m m m m m m m m M m m m m m m m m m m m m m m m m m m m m m m m m m m m N N N m m m m N M M N N N N V N N N N B B N F C N B N B B C B B B C N C B N C N C C N N Z C C N Z Z Z N C N N u M.fXgXgXgXaXaXpXpX{ { ' Q u u y y : > : : e ; ; y r r r r r r : : r r : r r r r r r r r e 0 r r r r r 0 r r r r r r r r r r r * r r r r r 0 e r r r r r e r r : : : > t y u u n / ' { { { M.{ { { m.Q.hXfX.X@X X.XdX@XdXdX@XdX.X.X.X.X.XdXdXdX.XdXdX.X.XzX.X.X.X.X.X.X'.zXdXxXzXzXzXzXxXzXzX.XdXdXzXzXzXzXnXdXdXdXvXdXcX.XdXdXdXcXdXdXcXdXdXdXzXzXzXzXxX.X.XzXdXzX.X.XzX'..X.X'.zX.X.X'..X.X.X.X.X|.|.|.|.{.|.|._.(.(.(.(.(.(.`.^.(.(.(.(./.(.(.~././././.~.~.~.~.~.~.T.~.~ ! ~ ZXVXFXFXFXFXAXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXZXFXyX4X9.,.4.1X2X2X,X,X,X,X1X4.,.4.2X2X,X,X2XwX:.,.4.2X,X,X,X1X1XqX<.<.4.,X,X,X2X2X2X,X,X,X,X,X,X,X2XyX>X8XO. .X. . . . .6X,XwX:.-.:.-.>.>.-.-.9.9.:.<.tX,X2XtX5.<.;.;.>.wX1X,XwX,.wXwX,.0X1X,X5..>.-.;.<.wX,X9.:.wX2X2X,X1X,X2X5.wX1X,X3XyXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXVXBX' ! ^ ` b.].].(.~./.(.~.^./././.(.(.[.(.(.^.`.`.(._.(.(.(.(.(.(.(.(.(.U./ ! S ZXVXFXFXAXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXO.+.yXl b x @ +.X.X.X.X. ...X.X. .o.o...6X2Xb :X4Xv 4 b 7 -X-Xl *X>X2Xb -XwX;.,.:.-.-.-.-.-.>.4.1X2X,X,X,X,X,X;X-X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X1X2X;.;.4.n :.,.:.,.5.4X,XX2XtXyX2XyX1XqX4.-.-.-.>.-.qX2X2X,X-Xg -X:X>XyX1XqX0X1XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXAXHX[ ! ! ) T F.F.U.L.Y.U.L.L.U.L.P.T.P.T.T.T.T.T.T.~.T.~.~.~.~.T.T.~.T.~.F.! / ' BXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXn v b x v v x l v x v x x v v v v v g l x c z k s k l a z z z a k v g g d - d @ g h @ h g g x x f f c c c c z 4 4 @ g p 4 h < g - w g h 5 w g g w @ z b ;.;.8.d n g >X;X4 x x g :X4 x x g tX:X@ n g *Xn g *Xb j h n l @ b 2X,X2X4.>.-.-.>.:.5.wXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXVXAXFXZXFXDX^ ~ ~ [ F.Q.~.{.^.|.|.(.(.(.(.(./.|.^.^.|._.`.`.^.(.~.~.~.~.~.~.T.T.T.~.~.T.T.Y.Y.Y.U.U.L.U.U.L.L.L.L.L.A.S.H.S.A.A.A.h.A.A.A.A.g.H.G.h.A.A.A.A.A.A.", "m m m m m m m m m m m m m m m m m m m m m m m m m m m m m = m m m m m m = m m m m m N m m N m m m F M N N N M V V B V N N B N F C N N N B B N C C N N Z C B N C C B C A N N C Z Z N Z N Z Z ( Q.gXgXgXgXaXaXpXM.{ _ Q n u t r ; e e : : r r : : r r r r r r r r r r r r r r 0 r r r r r r r r r e r r r r r r r r r r r r r r r 0 r r r r r r r r r r r r r r r : = : e r r > e e u u Q Q ' ' { { { { { [ ].hXdX.XdX.XdXdXdXxXdX@XdX.X.XdXdXzX@XdXdXdXdXdX X.XzX.X.X.XxX.XxXdX.XdXzXdXzXdXxXdX.X.XdXzXzXcXzXcXnXcXdXdXxX.XcX XdXdXdXdXcXcXdXvXdXzXzXzXzX.XzXzX.X.X.XdXdX.X.X.X.X.XzX.X.X.X'..X.X|..X.X|.|.|.|.|.`._.`.^.`.^.(.(.^.(.(.(.(.(./././././././././.~.~.~.~.!.~./.~ Q S ZXVXFXZXFXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXyX2X0X5.4.<.5.1X,X,X,X,X1X4.,.,.:.4.1X,X2X4X5.9.qX,X,X,X1XqX<.-.>.>.:.,X,X1X0X9.,X2X,X,X,X,X,X2XuX:X+.+. .X.X.X.X. .6X>X4XqX,.-.<.5.5.<.-.>.wXwX,.,.wX2X,XyX1X,X5.4.5.tX2X1X0X,.0X2X5..>.>.qXtX>.<..-.-.-.,.4.1X1X,X,X,X,X>XyX-X-XyX>X,X,X,X,X2X,X,X,X,X,X,X,X,X,X,X,X2XqX5.:Xv :.;.-.>.4.4XyX>X>X>X;Xx b >X7X .X.6Xv n a d z 8.sXz @ x l @ z z k tX6X+.X.o.o.O.O.DXDXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXHXBX' / ~ _ T e.h.g.z.a.f.z.z.a.k.a.a.a.a.a.a.a.a.a.a.a.a.i.i.a.i.i.i.u.u.i.S / S CXZXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.o.W X.X.X.X. .X.X.X.X.X.X.X.X.X.X.X.X. .o.o. . .X.X.X. . .X.O... .O.O.W +.+. .X.X. .o.X.X.X.X.X.X. . .X.X.X.X. . .o.X.X.X.X.X.o.o.O./ / o.X.X.o.o.X.X.o.o...O.hX7XO./ u +.| O.o. . .X.+.+.+.8X>X2X,X1X1X5.>.>.-.-.-.<.<.<.qX,X-Xz -X:X =XiX=Xz g 2.k a =X>X=Xg 2 z , f s @ 3 j h - u eXwX} . .X.X.o.-X5 8.n + 5 2.2 @ a -X, @ p :Xn a @ j 3 + 8.,.,.b l sXa k -Xw 8.8.j ;Xw 8.8.g :X;Xw sXz + sXz - 7 7 n w g a b 2X2X r r : : : : r : 0 r r r r r r r r r r r r r r r r r r r r r r r : r r r r r r r r r r r r r r r r r e r r r r r r r r r r r : r r r : e 0 > r r r y > e e u u S c ' ' ' { { { { b.m.dXdXdX.X'.@X X.X.XdX.XzX.X.X'.dXdXdX.XdX XdX@X.X.XdX.X@X#X'..XdXzX XxXdXdX'.dXdXzXzX.XzXdXdXxXdXzXcXdXvXcXdXcXcXcXcXdXdXdXdXdXdX.XdXcX.X.XxX.X.X.XzX@X.X.X.XzX.X.X.X.X.X.X`..X.X.X.X.X|.|._._.{._._.`.(.`.(.(.(.(.(.(.(.(.(./.(./.^./.(././././.~./.^.~./././ ~ ! ZXVXFXZXAXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXyX3X3X1X4X1.,.4.1X2X,X,X1X4.9.5.4.9X,X,X1X5.:.1X1X,X1X0X1.-.,.>.>.>.:.,X2X4X5.,.:.9.2X,X,X,XyX8X+.X.O.o.X.X.X. . .6XyX2XwX:.-.-.yX4X4X0X>.-.:.:.9.5..5.4X,X,X1X5.wX2XX7X .X.X.X.X. ...o.o.o.X. . ...X.f } >Xb o 7 < k :Xv h b w @ :XKXeX=XiX>.-.-.-.4.1X2X>X,X,X,X,X>XtX-Xb yX,X2X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X1X4X:Xv 8.-.-.-.-.5.>X>X>XwX>X*X;X5X:XX.X.+.c g g z w 3 b < z x n @ @ x l *X5X6X .o.O.O.hXGXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXHX[ / S ` w.e.j.s.f.f.g.a.a.a.i.k.k.a.a.k.a.a.a.a.a.a.i.a.a.a.a.a.i.i.i.u./ / ! CXDXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.o.@.X.X.X.X. .o. . .o.o.O.X.X.X.o.o.o.O.O.o.O.o.X.X.X.X. . .+...+.+.| @./ ! X.O.O. .+.X.O.X.X.X. . ...X.X. . .X.+.+.X.X.X.X.X.o.o.O.) / O.X.o.o.o.X.X. .o.o...7XhXO.} / .| O.X.X.X. .o.o.o.o.8X>X,X,X,X1XqX4.-.-.-.>.>.>.-.<.<.qX*Xv -X,X,X1XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXGXAXAXHX` / ! U b.Z.F.L.L.Y.L.L.T.Y.L.T.U.U.T.T.T.T.T.~.~.~.~.~.~.~.~.~.~.~.~.K.! / _ BXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSX0X,.,.,.,.<.1X1X5.:.5.>X2X1X9.,.,.<.v | eX' f =X>X=Xz j 9.*Xp =XiX=Xg 2 7 d -X-X@ =.q.b a / { M.} O.O.X.X.+.b p IX8.4 4 2.2.@ l X-Xz g k p z p - f { iX} >X:Xv 1X>X9.:.5.5.wX4X1X.wX1XwX:.-.-.-.>.wX4X2X,X,X1XwX1.:.<.wX1X0X,.0X4X,X,X,X,X,X,X,X,X,X,X,X,X1XtX>.>.,.<.4.wX,X9.0X4X2XX,X5X7X..X.X.X.X.6X6X+...o.X.o.6X6X+.n .+.v z v - -X1Xv z n z @ ;XsXeX.>.>.>.tX1X,X,X,X,X,X,X,XyX*Xv uX n > > b p + { | | X.| f | | X.o.X.+.7X+.O.+.+.+.+.f X. .X.X.X.X. .o.O.| { O.X.X. . .X. .X.X.o.X.hXhXO.| / +.W O.o.o.X.X.X.X.X. . .XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXAXAXAXZX' ! ~ I b.n.A.U.U.L.U.I.L.T.U.U.T.U.U.T.T.T.T.~.~.T.~.~.~.~.~.~././.~.].! / ' MXDXHXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGX3XwX4.5.4.0X2X1X0X4.qX1X2X1X4.,.>.<.v ; m m w s s s k p -Xk g k s =Xg < h s + + d + < p h e @.@./ o.X.X.X.o.b a @ 4 5 o 7 h + z x k h a k k p 4 4 g + 8.>.,.b z 5 z l v g 5 @ z j h - a z v z v :X:X>X.5.4X1X,X,X,X,X,XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXVXAXZXFXVXZXS ~ S v.n.].!.(.`.(.(.(.^.(.(.(.|.(.^.`.^.`.`.(.(.^././.!.~.~.~.T.~.~.T.~.T.~.T.~.T.T.U.Y.U.U.U.L.U.U.S.L.S.H.H.S.A.A.A.S.H.z.S.A.G.A.S.G.A.A.G.A.H.", "m m m m m m m m m m m m m m M m m m m m m m m m m m = m m m m m m m m m m m m m m m m m m m m m M M M M M M M M N N N N N N N N C N N N B B C N N A B N C A C N B Z Z C C C C C C _ gXgXgXgXaXpXM.{ ' Q u e e e ; ; : : y : r r : r r r r r r r r r r r r r r r y e r r r r r r e r r r r r r r r r r r r r r r r r r e r r r r r e r r r r r r r r r r r r r r r r r r ; r r r : ; r r ; y e r e u S n ' c { ' ' ' c.aXxX XdX XdXdX.XdX'.dX XdX@XxX.X.XdX.X.X.X.X.X.X.XzXdXzXzX@X'.dXdX@XzXdXdXdXdXzXzXzXzXdXdXdXdXdXcXdXcXdX.XzXzXzXdXzXzXzXzXdX.XdX XdX@XdXdXzX.X.X.X'.dX.X.XdX.X.X.X.X'.|..X X X X|.|.|.|.|._.|.`.(.`.(.(.(.(.(.!.(./.(.(./.(.(.(./.(./././.(.(.!.(./././ ~ Q ZXVXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX5.1.5.4X9.<.4X9.,.5.1X1X0XqX2XyX,X,X,X,X,X1XwX5.2X1XqX,.;.5.4X1X1X4XwX5.1X5.,.2X4X1X,X2XyX8XO.O.X.X.X.X. ...6X2X5XwX;.>.-.-.9.5.2X1X0X>.-.-.-.4.,X,X2X1X1XwX4.4.4.5.tX1X,X9.:.tX1X,X,X,X,X,X,X,X,X,X,X,X,X,X5.4.4.,XtX:.;.<.tX2X,X1XwX;.>.>.:.wXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXHXFX' / ~ ` n.F.!.~.].(.~.~.~././.E.[././.^.(./.(./././.^././.^./././.[.~.]./ Q Q ZXVXZXGXFXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo...6X>X2X5X6X..X.X. .+.5XuX.-.-.-.>.4.4X,X5X:XpX;X5XuX:X6X ...6XtX2X>X:X*X- l >X,Xb x p g >X6X .X.X.X.oXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXVXBX[ / ~ _ T e.j.f.f.a.k.f.a.z.k.a.a.k.a.k.k.a.a.k.a.a.a.a.a.a.a.a.a.i.i.i.! ! ^ ZXFXSXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXo.o.W o.X. .o.+.n j *Xv l w | .X.X.l -Xp O z l + > | / W W @.b ;X, > KXz @ z x a f n z x @ W O.sX<.9.6X..;XuXuXv | o.o.X. .+.+.+.| +.n / O.X.o. ... . .X.O.o.o.fX7XO.| n +.W .X.X.X.X.X.X.X.X...6XtX,X,X,X,X,X1X:.-.;.-.-.-.-.-.-.-.;.9X-Xk -XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXAXBX' ! ~ Y b.n.P.U.L.U.U.U.T.U.T.T.T.T.T.T.T.~.~.T.~.~.~./.~.~.^./.~./.[.F.S / [ BXHXCXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXyX1X1X1X1X1X1X1X1X4X1X5.:.<.-.-.-.1.v @ a g g h g 4 g p - l g h a 4 g v v f l v x v x l v x j j 6XO.X.X.X.+.n w f n p h d d g h p - g g - - g g @ g v v 8.4.;Xa l z k ;Xa -X; p :X@ -X> a tX:X@ z z d z d d l N @.f 4X:Xv :.,.<.wX1X2X2X,X1X2X2XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXFXAXVXAXFXZXVXGX! ~ ! T F.]./.(.`.(.|.(.(.(./.(.^.(.|.(.^.|.(.^.(.(.(./.~.!.~.T.~.~.T.T.T.~.T.T.~.T.T.T.T.T.T.U.L.L.U.L.L.S.S.A.H.A.W.A.Z.S.A.A.A.H.S.S.S.S.A.A.A.S.", "m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m V M M N V M M M V N N N V N N N m N N N B B B N C C N C N B C C Z C C m N N A ) aXgXgXaXaXaXM.{ / Q u : : t e r r : r r * ; e : r = e r 0 r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r r r r r r r r r r r r r q r r r r r r r r r r r r 0 e r ; r ; r ; = r y ; y = r r r r > e e u u c ! ' ' ' ' ' m.dXdX@X.X.XdX.XdXdXxXdXdX.XzX'.zX.X'..X.XxXzX@XzX.XzX.X.XzXdXdXzX'..XzXdX.XzXzXzXzXzXdXdXcXvXdXmXcXdXcXcXdXdXcXzXvXdXzX@XdXdXdX X.XdX.XxX.X.XxXdX.XdXdX'.zX.X.X.X.X.X.X X|. X|.|.}.|._.|._.|._.`.(.(.(.!.(.!.(.(.(./.(./.(.(.(.(./.(./././.(././.~.~ Q ^ ZXZXFXZXFXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDX0X4.0X4X<.<.4X0X9.qX2X.4.qX1X,X,X,X,X>X1X,XwX:.<.1X2X,X>X:Xo. .X.X.X.X.X.+.8X,X,X1XwX<.-.-.,.tX4X2XwX:.>.>.,.4.2X2X,X1XwX1.:.wX4X1X4XyX,X2X,X5.wX2X.,.5.4XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXVXBX[ ~ S _ b.K.K.!.~./.~.~.~.~.~.!.[././.^.~.(.E./.^././././.(.~.^.~.~./.F.! Q S ZXVXAXFXAXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXHXo...6X>X,X>X7X..X.X.X.X.7X2X,XX0X4.1X1X1X,X,X,X,X,X,X,X,X2XyX-X-XyX2X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X2X:Xv 2X0X4.;.-.-.-.;.qX5X>X;Xc v >X5XtXyX7X.. .6X5X>Xh @ w g tX1X,X,X,X>X6X . ...X.O.7XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXVXBX' / S ` T i.f.g.k.k.f.a.i.a.a.a.z.a.a.a.a.a.a.k.a.a.a.a.a.a.a.a.i.f.i.f.S / ! VXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXGXDX+.| > o.+.+.+.+.v eXx l n z +.....+.v KX+ p v KXz +.O.O.+. .| n n - f -Xk d z KXx *Xv d 8Xl / ..8.;.,.7X../ v k k | o.o. .+.8X>X-Xv k *X} .+...+.+.| +.+.+.| W ..7X7X' ! W W .. .o. .X.X.X.X.X.X.+.6XuX,X,X,X,X,X:.,.,.>.>.,.,.>.-.-.-.-.1.0X-XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXAXZXAXBX[ ~ ~ ) b.A.U.U.U.I.Y.T.U.T.T.T.Y.T.Y.T.T.T.T.~.~.~.~.~././././.~.~.[.].! / / BXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHXyXyXyX2X1X1X5.<.<.<.<.:.4.:.,.>.,.<.v g b s z g 2.*Xa 2 j s @ 2 7 s @ 8.<.:.:.<.:.<.;.;.9.5XwX>X6X .X.X.X.o.:Xt eX:Xc 4 2.< @ 5 2.< @ p -Xn a z n k *Xu sXiX! z n l k ;Xz u u S ' ' ' ' _ ' m.vXzXzXzX.X.XxXdXdXzX.XzXzX.XzX.XzX.X.X'.'.zX.X'..XzXzX.XdXzX.XzX'..XzX.XzXzXdXdXxXcXdXdXcXcXdXdXmXcXcXcXdXcXdXzXzXdXdXdXdX.XdXdXdXzX.X.X.X.XdXdXdX@X.XdX@X.X.X.X|. X'.|.|.|.|.|.|._.|.{._.|.(.(.(.(.(.(.(./.(.(.(.(.(./.(.(.(./.(././.~./.~./.~ ~ Q CXCXZXZXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXyX1X4X5.,.<.1X1X1XyX2X1X5.5.1X,X,X,X,X,X,X,X,X,X2X0X5.4X1X,X,X,X,X,X,X,X,X1XwX5.2X2X,X>X6XO.X.X.X.X.X.o.2X>X,X,X,X1XqX,.>.-.<.,X2XtX4.4.4.5.,X2X,X,X1X0X,.>.:.tXtX<.wX1X,X2X2X2X2X2X1X1XwX9.wX2X2X1X2XtX4.wX1X2X2X2X9.5.4X4X2X2X1X4.>.<.9.,.qX1XFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXBX' ~ Q ` b.F.].~.^.~./.~.~.~.!.~.~./././.^.(.[./.(.(././.!./.~.!.~./.~.].~ Q Q ZXVXAXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXVXFXO.o.X.tXyX>X6X .X.X.o.X...6X>X>Xk k k s 2.j @ 3X6Xn ;X*X:XXuX5X,X2X,X,X,X,X,X,X,X,X,X,X,XtX2X;X-XyX2X,X,X,X2X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X:Xb 1X1X4X5.>.>.-.>.>.9XuX:X*X*X5X>XX:XO. .O.7X>Xl n l z :X,X,X,X ! > = ;Xv + @ :X*Xp -X:X-X> > } > W 6X7Xo.X.X.o.X.X.X. .7X8X>X2X,X>XqX4.4.5.4.4.5.4.4.-.-.-.>.4..>.-.>.<.4XwX4.4.4.qXz j 4.k a j 9.;Xh 8.aXg @ 8.aXk g b 9.4.<.9.4.=.4.4.2.wX*X-X:X+.X.O.o.o.v u sXsX@.< 8.=.d < 8.=.5 g -X;Xp x sX@ @ / { eX@.z v p -X-Xz n v *X:Xa b -Xk 9.0Xz n v + n x + n g *Xb :X;Xx :.-.:.<.<.<.0X2X:.>.,.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXAXFXZXZXAXAX^ ~ ! b.n.]./.^.|.(.(.(.(.(./.(.(.^.`.(.(.`.|.(.(.^.(.(./.(.~.~.~.~.~.~.~.~.T.~.~.~.~.T.T.T.T.U.T.Y.I.I.S.S.H.H.A.H.W.G.J.A.A.H.S.S.S.S.S.S.H.A.H.A.", "m m m m m m m m m m m N @.m m m m m m m m m m m m m m m m m m = m m m m m m m m m = m m m m m m N m m N m B N m N N B N N N N N B B V B N A C N C B Z C A C C B C m T m ) aXgXgXhXaXpX{ ' Q u t r r : r : r r r r r r r * y r r r 0 r r r r r r r r r r e r r r r r * : r r r r * : r r 0 e r r r e r r r : r r r r r r e * y r r r r r r r r r r r r r r r r * r r r r r r r 0 r r r r r r r r r r r r r y y u u ~ ! _ ' c ) { '.xXdXdXzX'.xXzXzX@X'.zXzX'.'.dXdXdX'.zX.X.XzX.X'.dXdX.XdX.XzXdXdXdXcXdXdXmX%X.XzXzXxXxXcXdXcXdXzXxXcXzXcXdXxXdXzX.X'.zXzXdX@XzX.X.XzX.XdX'.dX.X.X.XdX'..X.X.X X|. X|.`.|._.}.|. X X}.}.|.^.(.(.(.!.(.(.(.(.(.(.(.(.(.(.(.(.)./././././.~./.~ ! ^ ZXAXFXZXFXVXAXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX3X1XqX9.0X1XyX,X,X1X5.;.5.1X,X,X,X,XyX1X1X2XXyX6X..X.X.X.X.o.6X2XyX1X1X,X2XwX5.4.<.,.wX1X,X1X1X1X1X2X,X,X2X2XtX4.4.5.tX.5.4XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXHX[ Q ~ [ n.F.]././.~.~.~.~.~.~.~.~.~.^.^./.^.^.~.~./.!.~.~.~.~./.T././.K.~ Q Q CXCXZXDXFXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXo. .6XyXyX>X6X..X.X.X.X.X...7XyX-X2.j s k k z -X,Xb - a z x b l :XyX2X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X2X2X,XuX;Xv 1X,X,X,X,X,X,X,X,X2X,X,X,X,X,X,X,X,X,X,XyX:Xv 2X,X,X1XqX4.;.>.,.9.1X1XuXyX,X,X,XyX2X:X ... .6Xg 4 + v tX,X,X,XyX6X..O.o.o.X.o.7XGXDXSXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXZXBX_ ^ ! _ T i.a.a.g.f.f.f.a.a.z.s.a.z.a.a.s.a.z.a.a.a.a.a.k.i.a.a.a.a.z.i.S / ! CXFXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX-XKX:X+. . . . .X.+.z s v ;Xz +. .+. .+.v -Xp k } .X.X.X.X...6X3X2Xv ;XsXw l l l z h k :XtX6X..8.>.,.m.o.f z p + | o.O.o. .+.4X-Xz g d ;X} d ;Xd > :Xn O g iXyXp v z sXz f :X>X6X . .o. .X.X.X. .X.7X+.+.8X5X4X4X4X1X1XuX4X4X9X-.-.-.;.5.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXAXAXCX[ / Q ) b.n.Y.K.U.Y.Y.T.T.T.T.T.T.Y.T.T.T.T.T./././././.^././.!.(././.F.! S ' BXDXDXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX5.1.:.:.,.>.-.-.-.-.>.<.1X2X1X1X1X4Xx p v k z h k g z < 8.< - < n 3 w x v v v -Xf v n b l g ;XeX0X8.O.O.X.7X-X> u @.e O 4 4 @ 4 4 g h a s k d a - p @ t = @.= b :X:X.,.,.,.5.2X:.:.4.ZXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXVXDXFXFXFX~ ~ ~ [ n.].^.(.`.`.^._.^.(.(.(.(.(.(.(.|.|.`.^.|./.(.(././././.~.~.~.~.~.~.~.~.~.~./.T./.~.T.T.Y.Y.U.L.H.L.H.H.H.G.H.S.S.A.Z.S.H.A.S.S.S.S.S.S.S.S.", "m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m N N m N m B N N N N N N B B N N N V N V M C B B B B C C B C N Z B { gXgXgXgXpX{ { Q u u e > r r * r 0 r 0 : r r r r : r r r r e r r r r r r r r r r 0 r r r r r y r r r r r y r r r r r r r r r r r r r r r q r r r r r r r r r r r r r r r r r e q r r r r e r r r r r r e r r r r r r r r r r r 0 r r : r u u ! n ) ! ' c _ ].dXnXxXcX.XzXzXdXzXzXzX@XdXdXdX'.zX.XzXzX.XzX#XdX'.zXdXdXdXxXdXdXdXdXdXdXdXzXzXdXxXcXcXcXcXxXxXxXzXcXdXzXzXzXdXzX.X.XdXdX.X.X.XzX.XzXdXdXdXdX'.zXdX'..X.X.X X'.|.|.|.|.|.|. X}.}._.|.`.{.`.(.(.(.(./.(./././.(.(.(.(.(./.(./././.^././.^.~ ! ~ ZXAXFXZXAXVXZXFXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXDXyX3X1X1X4X1X2X2X,X1XqX>.<.4X1X,X,X,X,X1XqX<.1.5.2X,X1X2X1X2X,X,X,X,X,X2X0X9.2X0X1.<.4.8Xo.O.X.X.X.X.o.2XwX<.<.4.,X,X1X1X4XwX4.9.9.tX.>.,.wX4X>X<.,.:.<.-.:.<.<.wX1XwX<.<.,.5.4XX,XX,X,X,X,X1XyX8X} +. .6X5X6X+.6X>X2X2X>X:X+... .X.X.o.O.DXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXBX[ / ^ ` T e.a.z.f.a.f.f.a.f.k.a.k.a.z.f.z.a.i.a.z.a.f.a.a.a.a.a.a.a.a.a.! ! ! CXZXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXz b z +.O.X.X.X. .X.6Xs >XaXl X. .+. .+.f x @ + +.X.X. .X.o... .6X2Xb IXx + :XtXb p ;Xb s yX7X..M.;.;.} ..c -X + } O.X.X.X.O.+.X1Xb ;X6Xn n d > v v @ h *X*Xp z x v Q n n v > b g 5X6X..o.X.X.X.X.X.X. . . .+.+.+.+.+.7X7X+.8X5X5X;.-.-.-.4.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXAXBX' Q Q ) e.A.L.L.Y.U.T.U.T.T.Y.U.Y.T.T.T.T.T.~.~./././.(./.(././././.(.].! ! ' BXDXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXeX9.4.4.;.>.>.-.-.-.-.<.1X1X,X2X2X.>.<.>.5.4XDXDXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXAXDXFXVXFX~ ~ ) ` F.T.(.(.^.`.{.^.`.(.(.(.(.(.(.|.(.(.`.(.(.(.T.(.~././././.~./.~./.~.~.!.!.~.~.~.T.T.T.T.T.Y.L.U.L.H.S.L.H.H.H.H.S.S.G.A.S.A.S.S.S.S.S.S.G.G.", "m m m m m m m m N m m m m m m m m m m m m m m m m m m m m m m m = m m m m m m m m m m m m @.= m m T N m m B m m N V N m N N N N N B N N V B N B B C B C N B A C B Z m.gXgXgXaXM.{ ' u u e e > e r r r r : r r r r r r r e 0 r r r r r r e q r : r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r : r r r r r r r r r r r r r r r * t r r r r r r r r r r r r r r : 0 r r r r r r ; e y u f K Q c / c m.#XdXcXhXzXdXxXdXdX.XdXdXdXdXdX@XzX'..X.XzXzX.X.XzXxXdX.XdXdXcXcXdXdXdXdXcXdXdXdXcXxXxXxXdXxXzXzXzXzXzXzXdX'.zX.XzX.XdX.XzXdXdXzX'..X#XzXzXzX.X'..X.X.X.X|.|. X|.|.}.|.}.}._.|._.}.{.^.^.`.(.(./././././.(.~.(./.(./././././.(././.~./.~ ~ S ZXFXAXZXDXVXAXAXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXZXZX3X5.<.5.1X1X,X.5.1X0X<.<.4.1X1X,X,X,X,X2XwX4.4.-.9.:.;.6XO.O.X.X.X. .o.yXqX,.>.>.tX,X,X,X,X2X4X0X,.wX1X,X,X,X.>.wX1X,XXtX4.4.4.4.<.:.<.;.<.9.,.>.-.-.<.<.qX,X<.qX,X>.;.wX,X,.5.4X2X4X4X,XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXBX[ Q Q ` b.F.!.(.Y.T.T.T.~.~.~.T.^.~.~.~./.[.~.~.~.~.!.Y.Y.~./.~.T.~.~.Y./ Q S ZXVXDXZXFXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.....6X1XyX7X..o.X.X.X.X.X.X. .6XuXuX:Xv k :X*Xz :Xb 8.q.*XuX,XtX,X,X,X,X,X,X,X,X>X,X2XuX,X,X>X,X,X,XyXtX,X,X-X-XyX>X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X2X2XXuX} X.X.+.X. .+.>X2X,X,X5X7X .X.X.X.X.hXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXCX' ! ^ ) w.e.s.z.f.a.a.a.a.f.a.a.i.z.i.a.f.f.a.f.i.s.a.a.k.a.k.z.a.i.a.k.! ~ Q CXZXFXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXx d f +...+. . .O.X.X.a p k p @.| u W @.n n h p +. .X.X.X.X.X.X...+.f i l 0 eXeX@.k -Xv k ,X6XO.8.,.4.6X..} :X} a } O.X.X.X.X.o.+.X:X;X5 l z *Xv 4X;X> @.@.> = sXw k uX6X . .X.X.X.X.X.X.X.X.X.o.O.o. . . . . .+.6X<.-.-.-.4.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXAXAXHX' ! Q ) b.n.D.U.U.U.T.Y.T.T.Y.T.T.U.Y.T.T.T.T.~./.(./.!././././././.(.].! / ' BXDXGXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAX1X1X1X4X0X4.9.;.-.-.>.-.:.5.2X2X1X2Xl :X1X>X2X2X2X,Xv :X,X1X1X0X4.2Xv .5.4XDXDXDXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXAXSXVXFXZXAXFX~ ~ ~ b.n.].~.`.`.(.(.^.(.(.(.(.(.(.(._.^.`.(.(.(.(././.^.(.(././././.~./.~./.~.~.~.~./.~.~.~.T.T.I.T.L.L.L.S.S.H.H.H.A.S.A.A.S.S.A.S.S.S.S.S.G.H.A.", "m m m m m m m m N m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m N m N N N m m N N N N N B N N V N V C N C N C N C M G B V A Z aXgXgXgXpXM._ / S e y y t : : 0 r r ; e 0 r r r r r r r r r r r r r r r r r r r r 0 r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r y 0 r r * r r r r r r r r r r r r r r r r r r ; t > y t u u Q Q ^ / S c.zX.X@XcXnXdXdXxXcXzXdXdX.XdXdX'..XxXzX.X.XdXzXzXdX.XzXdXvXdXdXdXcXdXdXdXdXcXzXdXxXxXxXxXxXxXcXzXzXvXzXzXxXzXzXzX.XdXzX.XdX'.#X.X'.zX.X.XzXzX@XdX.X X.X|.'.|.'.|.|.}.}.}.}.}.}.}.|.^.`.^.(.(./.(./.(.(./.!.(.(./.(./.(.!./././.^.!./.~ ! ^ ZXFXFXFXFXVXAXFXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXZXGXyX9.,.-.1.5.1X1X1XqX,.-.-.9.qX2X,X2X,X1X4.,.5.1X,XwX;.>.>.<.4.2X1X1X,X2X4X4X5.4.4X5.4.3X+...X.X.o.o.+.3XwX4.9.5.,X,X,X,X,X,X2XwX5.,X,X1X,X1XwX9.:.-.;.wXwX9.wX1XwX4.<.0X1X,X1X2X1X1X1X4XwX,.<.4..<.9.>.0XX,XyX6X .X.X.X.X.oXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHXBX[ ! ^ ` T e.f.f.f.a.f.a.k.a.z.s.i.a.z.a.a.f.a.a.a.z.k.k.k.a.a.a.k.a.k.i.S ! Q ZXDXFXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX:Xf @.n t @... .X.X.X.z d l @ +. . .O.X.c g g p +.o.X.X.X.X.X. ..... .+.+.+.eX6X> O s s k 7X..:X>.,.} .../ v k @ | O.X.O.O.o.X.X.X.+.;Xl x w w l l a d h z :X;Xa -XuX:Xz f v f d a a k .-.4.4.9.;.:.<.5.v z .-.:.tX1X:X2Xb 7 b b j b +.X.X.X.O.X.X.X. .....O.O.o.o. .X...7X-Xl ;X<.,.>.,.,.,.wX1XwX>.>.>.>.>.<.4.b x ,.>.>.;.,.>.qX4X.>.:.5.4X4.-.9.qX4X2X,X,X,X1X4X4.5.4X2X2X4X5.>.-.>.-.<.<.4.2X0X<.<.:.1X0X:.tX>X8X..X.X.X.X. .+..wXwX,.wX,X:.wXwX:.tX,X9.tX.>.;.:.:.9.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXCXBX' ! ^ ` n.].K./.Y.T.~.T.~.~.T.~.~.~.~.~.~.~.~.!.!.Y.K.].K.Y.T.~.Y.T.T.L./ ! ^ ZXVXAXFXAXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.X. .6X3X,X>X:Xo.X.X.X.X.X.X.X.X. . .-Xz l n x @ :XuX,XX1XuXtXXXb z | O.+.W .+.X.X.X.X.X. .f =Xv k k n z @ @ z v O b .9.4X4X4X0X9.;.<.v :X0X,.,.:.2X2X>Xx >X5.,.,.>.5.2Xb :XwX4.<.;.yXb a w h z z u x x :X..X... .X.X. .X.O.X.X.X.o.o.o.X.o. .+.:Xx b >.<.4.9.4.:X:X:X5.9.4.4.4.b v l ;X5.4.4.9.5.5.wX>X>X5.9.4.4.<.<.<.0X:X:.>.,.5.4X4.0X,X;.-.-.>.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXAXAXAXDXFXAXFX~ ~ _ b.n.].(.(.(.|.(.(.(.(.^./.(.(.(.(.`.`._.^.{.^.(./.(./.(./.^.(././.(./././././.~.~./.~.~.~./.T.T.U.L.L.L.L.S.H.H.S.S.Z.A.S.S.A.S.A.A.S.S.S.S.S.", "m m m m m m m m m N N m m m m m m m m m m m m m = m m m m m m m @.m m m m m m m m m m m m m m m m m m m m m m N M N m A N N N B N C N B N C B V C C B C C S ) hXgXgXaXpX{ _ u e q r r y ; ; r r r r r r r r e r r r r r r r r r r r r r r r r r r r r r r r r r r e r r r r r r 0 r r r r r r r r r r r r r r r 0 : r r r r r r r r e 0 r r r r r r r r r r r r r r r r r r r r r r r r r r r r : r r r r r r 0 : r r : r ; > u u S S S y ! fXdXzXcXzX.XcX.XzXzXdXzXzXdXdXzXxXzX'.zXzXcXzXzXzXzXdXdXdXdXxXcXzXdXdXzXzXzXzXzXdXxXxXxXxXdXvXzXvXzXzXzXzXzXzXzXzX.X'.dXdX.XdX.X.XzXdXdXdX.X.X'..X|.'. X|.|.|. X_. X|.^.`.`.`.(.^._.(.(.!.(.(./././.(./././././.~./.~././.~.~.!./ ~ ^ ZXVXVXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFX5.:.>.>.-.4.4.4.<.-.<.4X1X1X,X,X1X1XqX<.<.1X1X1X,X1X4.>.-.-.;.-.>.9.9.;.<.9.5.2XwX5.,X,X:X+. .X.X.X.o.o.6X>X>X,X,X,X,X2X,X,X,X,X,X2XwX<.wX.tX0X,.wXwX>.<.<.,.0XwX,.0X,X,X,X,X,X1X.-.,.0X1X<.qX,X:.wX1X>X1X4.>.:.9.wX4XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXHXHX[ ! ^ _ b.F.K.~.!.~.~.~.T.~.~.T.~.~.~./.~.~.~.!.T.Y.Y.Y.Y.Y.P.T.T.T.T.Z.S ! ^ ZXVXFXAXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXo.X...+.,X,X,XyX6X .X.X.X.X.X.X.X.X.o.W n O + < 5 :XtX>X:XX>XX:X:X:X>X;Xl h k v z z z l z v yX,X2X,X,X,X,X,X,X,X,X,X,X,X2X,X,X,X,X,X,X,X,X,X,X,X,X2X,X,X,X,X,X,X,X,X,X,X,X2X2X,X,X,X,X,XtX8X6X+. .X.X.X.O.+. ...X.X.X. ...O.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXDXBX} ~ S ` w.e.s.f.f.f.k.a.a.z.i.k.a.a.z.a.a.a.a.k.f.a.a.z.i.k.i.f.k.f.i.f.! ! Q ZXZXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX>Xf Q n b > ..X.X.X.o.d a z p z +.X.X. .f x - p +.O.X.X.X.X.+.+.+.X.X.X...b :X-Xz k iXuX| ...:.;Xz v k s :Xx b +.o.X.X.X.X...+.2X4.0X8X6X ... .X.X...7X<.-.-.4.ZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXAXFXZXZXDXBX` / S ) e.n.D.U.I.R.Y.Y.Y.P.T.T.T.P.T.T.T.~.~.~./.~./.(.!./././.(.(.(.Q.! ! _ BXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXqXqX4X5.5.1X4X9.>.<.1X2X,X1X4X4.:.x ,X0X4.4.qX2X2X2Xv :XwX9.4.5.1X,Xx :X1X4X5.,.2Xb + @ h 5 u eXeX= ;X7X........ ..... ..... ...o.o.X.o.X.O.+.v n 5.;Xv v v v x v v v v v x l :X7X+.7X7X7X7X7X7X6X+.7X+.6X7X3X4.-.-.5.:X:.-.>.5.1X>.>.9.9.-.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXDXAXVXFXDXDXAXFX~ ~ ~ [ F.K.(.(._.(.|.|.(.(./.(.!.(.^.(.^.(.^.`.^.`.(.(.(.(.(.(.^.[.(.^././././.!.(././.~.~.~.~.T.T.T.T.Y.P.U.S.L.U.S.H.H.H.S.S.A.A.A.S.S.S.S.S.A.S.", "m m m m m m m m m N m m m m m m m m m m m m m q m m m m m m m m m m m = m m m m @.m m m m m m m m m m m N m M M N B N N C N N N B B B B N V B B N B C C A / gXgXaXaXm.' Q u t * ; ; y = 0 r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r e r r r r r r r r r r r r r e r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r r r q e r r r r e 0 : r r r : 0 0 ; r r r ; ; 0 r e e y : u u n S u ! dXdXdXcXcXvXcXxXzXdXzXzXzXfX.XzXzX.X.XxX.XzXzXzXzXdX%XcXvXnXdXdXvXdXdXzXdXzXcXzXcXxXxXdXcXzXvXxXxXzXzXzXzXdXzXzXdX.X'.zXdXdX'..X'..XdXdX X.X|.|..X X|. X|._._._._.{.`.(.(.(.^.`.`.(.(._.(.(./.(.~.~.(././././.~.(.T././.!.~.~.~ ! ^ ZXVXZXZXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFX9.>.9.4.qX4X1X1X0X;.;.<.<.5.1X9X<.9.-.-.-.<.<.4.2X4XwX;.-.-.-.-.5.4X5.,.1X4X4X,X2X1X,X,X,X8X..o.X.X.X.X.X.7X,X,X,X,X2X1X2X,X,X,X,X,X4X0X<.1X0X>.-.>.>.wXyX5.tXwX,.>.,.1.4.<.,.0X2X2X,X,X,X.>.<.wX,X5.wXtX,.5.1X2X1X1X5.wX4X,X3XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXBX[ ! ^ ) n.F.Y.~.~.T.T.T.T.T.T.~.T.~.~.~.~.~.T.~.^.K.F.K.Y.Y.T.T.T.T.P.Y./ ! ! ZXVXFXFXFXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXo.X...6XtX,X,X,X7X .X.X.X.X.X.X.X.X.o.W u x z z g z z d z d z w z z w z l b l v l z w z l c l h x k *X- x h k -X-X2X,X,X,X,X2X2X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X>XuXuX7X..X.X.X.X. .X.X.X.X.X.X.o.hXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXDXBX' ~ Q _ T a.a.f.f.a.f.a.z.x.a.a.a.s.i.i.a.a.z.a.a.z.f.a.z.f.d.f.f.k.k.k.~ ~ ! ZXZXFXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX > @. . .X.O.o.-Xv :X:Xv +. .X.+.n n z p +.O.o.X.X. .w -Xp | O.o.O.w + g h p k s W O.;XsX:X:X:XW @.b :Xk > | | f 8X8X-X>X6X..O.X.O./ -X-X-X-Xz k p b :X:X;Xk :X:X;Xb ;.>.qX-XeX;Xp 1X:Xx +.O.o.X.X.X.X.8X4.-.:.<.0X8X7X .X.X. .6X9X;.>.4.ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXAXAXDXAXZXDXHX' ! ! P b.F.L.U.U.L.R.Y.P.T.T.T.T.~.T.~.~.~.~.~.(./.!./././.(.[.(.(.).!.S / ' BXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFX3X4X4X<.;.<.<.-.-.<.1X,X,X2X1X0X5.b :X1X1X1X2XyXyX,Xv :X4X1X1X1X2Xb l :X3X7X6X6X6X7X6X6X7X6X6X7X6X+...o.X.X.o.X.;Xl -X;Xb 9.wX2X1X:X9.<.:X;Xg ;X+.o.X.X. . . . ... . . . . . .X.3X5.;.5.:X:.-.>.5.4X5.4.wX1X:.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXVXAXZXDXVXGXS ~ ! [ F.].E.(.(._.^.(.^././.(.[.(.^.(.(._.|.(.(.(.(.(.(.(.(.[.(.).(.(./.(.(././././.~.~.T.T.~.T.T.T.T.U.P.Y.L.S.Z.H.H.G.H.A.S.S.S.S.S.A.S.A.H.H.S.", "m m m m @.m m m m m m m m m m m m m m m @.m m m m m m m m = @.m m m m m m m m m m m m m m m m m @.N m m N M M V N N N N N N B C B B B B C N C C C B C C [ fXgXaXsXM.' ! t > > > r ; : ; : r r r 0 r r 0 r r r r r r r r r r r r e r r r r r r r r r r r r 0 e r 0 r r r r r r r r r r r r r 0 r e 0 r r r r r r r r r r r r r r r r r r r r q * r r r r r r r e r r r r r r r r r : r r r r r r r r r : r r r r e ; r r 0 0 y r r y u y u y y S dXcXnXdXzXcXdXzXzXzXzXzXxX.XzXzXxXxX.XcXcXzXzXxXdXdXdXcXdXdXzXzXzXdXcXnXzXdXcXzXxXxXnXdXzXxXzXxXdXzXxX.XdX.X$XdXdXxX@XdXdX.XzX.X'.dX@X.X.X.X.X X'.|.'._. X|._._.(.[.(.(.(.{.`.^.(.(.(.(.(./.].(.~.~./././.!.~.~.(./.!.~.T.~.! ! S ZXAXZXZXAXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXqXqX1X1X1X,XtX2X4X9.>.-.9.5.4X4.,.,.-.-.>.;.;.9.<.4.4X5.>.;.9.5.1X1XwX:.:.1.4..:.:.;.<.4.4.yX,X1X2XtX4.9.4.,XwX>.<..>.<.4.tX1XyX5.9.X6X..X.X.X.X.X.X.X.X.O./ +.8Xx z z h p 2.k *X*XwXk O b z k ,X,X>Xv l z % sX:X! x sXw h x n l h *X:X2X,X,X,X,XyXtX,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X8XX. .X.X.X.X.X.X.X.X.X.X.O.oXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXGXDXHX[ / S ` T e.a.k.a.z.z.a.i.i.z.a.a.z.i.z.a.a.a.a.a.a.f.a.f.f.f.f.f.k.i.k.~ S Q ZXFXAXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX:Xz a c w f +.X.X.X.O.O.d l l l +. .o. .x d p h | O.X.X.X. .x KXa / O.O...n n b + s 0X*X/ O.6Xn n ;X6XO...8X;Xx | .. .f v k p g 6X .+.o.o. .6X:X1X,X<.<.;Xu M.iXQ O x x + b ;.>.0X-Xl v + >X-Xv +.O.o.o.X. .7X4.,.-.-.,.;.9.:X7X .X.X.X.8X:.>.4.ZXZXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXDXDXBX_ ! ! L b.Z.F.L.U.R.Y.Y.T.Y.P.T.T.T.T.T.T.~.~.T.~.~././.!.^.^.(.(.(.[.].! ! ] BXHXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXqX<.<.;.;.9.-.-.-.<.1X,X,X,XX:X>X:X>X:Xv ;X2X,X2X2X2Xv :X2X2X1XwX5.2Xx + < O @ = @.@.- :XXXX:X>X>X>X>X:X>X:X+.o.X.X.X.o.+.:Xl x b ,.0X1X1XwX,.<.;Xz ;X7Xo.X.X.X. .X. . . .X. .+.X.X.X. .X.3X5.wX:X,.,.,.5.1X1X1X1X,X:.>.>.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXAXVXAXFXVXSXAX~ / S b.n.].(.(._._.`.(.(.(.(./.(./.{.(.(.(.(.(.^.{.(.(.(.(.(.(.(.^.(./.(.(././.(./.^.~.~./.T.~./.T.T.T.T.U.U.L.U.L.H.H.G.A.H.S.S.A.A.S.A.S.A.H.z.S.", "m m m m m m m m m m m m m m = m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m B B N C m C N N B B N V N N C V V A C Z N C S gXgXgXpXM.' c y t y e 0 r r r r r r r r r r : r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r e : r e * y r r r r r r r r r r r r r r r r r r r r r r r r r r : r r e r r r r r r r r r r r r r r r r e 0 r r r r r r r r r r r e r r y r r r r > y y u u y t e S hX.XcXcXzXcXzXdXzXzXdXdXdXzXzXdXdXcXcXdXcXcXdXfXdXcXdXdXdXdXcXdXzXzXzXzXzXdXvXxXxXzXcXdXdXcXxXdXdXzXcXdXzXdXdX.XdX.XzX.XzX.XzXzX.X.X.X.X.X'..X.X|.|.|.|._.{.{.(._._.(._.(._.(.(.(.(.(.(.(.!./.!./.~.(.~.~.E.~.E.T.~.T.~.T.~ ~ S HXZXZXZXFXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXyX4X3XyX,X,X,XqX<.;.;.<.4X1X4X4.,.>.>.;.4.;.:.4X0X9.9.:.>.:.1X1X,X,X1XwX9.<.5.2X0X4.4X5.,.9.3Xo. .X.X.X.X.X.X.+.3XXXuX>X6X7XX.X.X.X.X.X.X. .O.| W .v k s d g 9.0X:X*XiX>Xh 8.8.k uX2X2X;Xn v > { eX@.+ + s h z z z p -X,XtX,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X2X,X,X,XyX2X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X2X,X,X,X,XtX:XO... .X.X. .X.X.X.X.X.O.O.GXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXFXBX' ~ ~ ` T e.f.g.f.a.a.f.a.a.a.f.i.a.f.a.z.z.k.i.d.g.k.a.f.f.f.k.g.f.d.z.! ! ! CXDXDXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXZXAXx k p @ v ;Xz +...X.X.X.z l +.X.X.X.o.O.v p k +.O.X.o.o.X. .f v @ k *X} } - 4 O @ g iX5X| ..:X*Xk :X>X2X1X.,.2./ _ eX@.g 8.8.4 b ,.,.2.b ,X-Xn z - v +.X.X.X.X. .6X;.-.-.-.-.-.>.4.8X..o.X. .+.5.;.4.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXZXDXAXAXBX_ ! ! P e.n.U.U.U.L.L.P.T.P.T.T.T.[.~.T.T.T.[.~.~././././././.^.^.(.^.].S ! _ BXDXZXZXFXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX9.,.>.-.<.4X9.>.>.<.2X,X,X,X,X,Xv x x l v x v l v x v v z :X:X3X:Xv :X1X0X4.1X4X2X;Xl z x g a h g g g h z z z z z d a v v l x v l ;X7Xo.o.o.X.X.7X:Xl b 9.:.9.X9X9.9.wX,X2X3X,X>X9X9.4.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXZXZXAXZX~ / ' c.n.T./._._._.(.(.(.(././.^./.(.(.(.(.`.^.(.).^.{.(.^.(.].(.(.(.(.!.(.(.(./.!.~.~.~.~.^.T.T.~.Y.T.T.U.P.P.L.L.H.H.H.H.A.S.H.A.D.A.A.A.A.S.S.S.", "m m m m m m m m m m m m m m m m m m m m m m m m m m m @.m m m m m m m = m m m m m m m = m m m m m m N m m B m N N N N N C N N B B B C N V B M C N A A hXaXaXaX{ ' u > y ; ; r r r r r r r r r r r r r r r r r 0 r r r r r q e r 0 r r r : r r r r r r r r r r r r r r r r r r r r r q r r r r r r r r r r r r r r r r r r r r r r r r r e r r r r r r r r r r r r e r * r r r r r r r r r r r r r r r r r r r r r r r : r r r r e e e y y i y y e H cXcXcXcXxXxXxXxXcX@XcXnXzXxXcX@XcXcXcXcXdXdXdXmXdXdXdXmXdXdXcXvXzXcXJXzXdXdXnXdXzXcXnXdXdXcXcXdXzXzXzXzXvXdXdX@XzXzXzX.XzX.X.X.X.X'..X.X'. X X|.|.|.|.|.|.|._._._._._.(.(.(.(.(.(.(./././././.!.~.~.~.~.!.(.[.T.(.T.~.T./ ^ ! DXVXZXZXFXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZX5.5.1X1X2X2X1X9.,.-.;.5.2X2XqX;.9.4.9.5.4X4.>.5.1X4X4.>.-.-.4.2X,X,X,X2X1X4X1X1XwX;.<.:.<.5.yX2X+. ...X.X.X.X.X.6XuX1X,X4.;.:.<.<.:.<.<.:.>X0X>.<.tX2X1X2X1X.<.5.wX2X.qX1X,X,X,XyXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXMX} Q Q ) n.F.Y.T.E.T.~.T.T.T.T.T.T.T.~.T.~.Y.Y.Y.K.K.L.L.L.P.U.P.U.U.L.L.! ! ^ ZXVXZXZXFXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXo.X.X. .+.>X2X>XtXyXX,X,X,X,X,X,X,X,X,X,X,X,X,X,X,XyX2X,X,X,X,X2X,X,X,X,X,X,X,XtX,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X2X2X,X8X6X+.X.X.X.X.X.X.X.X.O.O.GXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXFXBX} / ~ ` T w.i.g.a.k.f.a.a.z.a.a.f.a.a.f.a.a.f.k.g.g.k.k.f.f.k.f.k.f.k.f.S / ! CXFXHXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXFXAXb KX + wXaXz X.X.X.X.X.z z X.X.X.X...6Xv :X.,.2.> @.m > @ 7 4 @ b :.,.8.v 1X-Xn x p -X7X..X.X.X...+.:.-.-.-.-.-.-.:.0X7X..X.X. .6X:.4.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXDXAXAXBX} ! ! P b.Z.F.U.U.R.R.P.T.T.T.T.T.P.T.~.~.T.^.T.~.~./././.!.(.(.(.(.`.].! / ' BXZXZXZXDXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSX9.-.9.4.qX4X0X9.9.9.2X1X1X1X,X:Xv :X,X,X2X1X,X.:.4.1X,X,XX>X>X>XtX=X*X>X6X .X. .X. .o.} u 7X7X6X6X+.7X6X7X+.7X6X7XAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXVXVXGXFXVXZX~ ~ ~ b.F.!.(.(.(.(._.(./.(.^.(.(.(.(.(._.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(./././.(.~.~.~.[.T.~.T.T.T.T.Y.P.P.S.L.K.H.H.H.H.S.G.G.S.A.A.A.S.A.z.H.", "m m m m m m m m m m m m m m m m m m m m m m m = m m m m m m m m m = m m m m m m m m m m m m m m m m m m N m B B C N N m N B B B B C C V B C V N H A m.gXgXpXM.' u e ; y ; : r r r r r r r r r r r r r r r r r r r r r e r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r r r r r r r r r r r r e q r r * r e r r r r r r r r r r r r r r r r r r 0 r r 0 y r r r r r r r r r r r r r r r r r r r e r r r r r r r r > e ; : > u t 0 * 0 [ cXzXvXcXxXxXxXxXxXdXxXxXxXcXxXnXcXcXcXcXcXcXnXdXmXdXdXmXdXzXzXvXzX.XzXzXdXxXnXdXzXnXdXdXdXdXcXzXzXzXdXzXdXdXdXzX.X.XzXzX.XzX.X.XzX.X.X.X.X|..X'.|.|.|._._._._._.(._.(.(._.(.(.(.(.!./.(.!.~.(.~.~.~.~.~.~.^.T.T.T.T.~.) Q ! FXVXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXqX9.5.1X1X1X1X0X4.-.<.4X,X4X<.:.4X4X1X1X1X0X9.5.2X1X5.,.-.>.5.2X,X,X,X,X2X,X,X,X4X5.,.;.1X1X,X>X.>.wX1XwX>.>.:.:.>.<.wX2X<.0X4X2X,X1X1XtX>.:.4.9.wX2X2X,X4.>.>.>.:.wX1X,X,X,XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXBX[ Q ^ ) b.F.].~.T.T.T.T.T.T.T.T.T.T.T.~.P.].Y.K.F.L.F.L.L.Z.L.P.L.L.U.U./ Q S ZXVXFXGXAXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXGXo.X.X.O.+.2X,X2X5X,X>X8XX. .X.X.X.X.o.! +.6X-Xk k z z @ 5 l z - a a + @ a z z z h z z v g h g b sXw @ g x z + ;X9.wX4X1X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X2X2X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,XtX4X7X..X.X.X.X.X.X.X.X.hXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXBX[ / S ` T e.d.f.k.a.i.g.z.a.f.a.a.k.k.i.k.a.f.f.d.a.a.g.f.f.k.f.k.f.d.g.S ! S DXDXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXFXAXv ;X@ a p v k +. .X.X.X.d z +. .X.X.X.3Xk :X7Xo.X.X.o.o.X.X. .8.5.b k 2.k z ;X0X9.<.<.4.} ..8X:X9.<.<.<.4.>Xb | O.X.X.X.o.8X;Xv s s f O.o. .o.+.,X5.<.,.b z a g @ z v g -XwX;.>.2.l x a d d p n O. .X.X.X.o.+.:.-.-.-.-.-.-.,.4.7X....X...6X:.4.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXFXAXHX[ ! S Y b.F.Y.U.U.T.P.T.T.T.T.T.T.T.~.~.T.T.~.~./.~././.(./.(.~.(.{.(.Q.! / _ BXZXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXqXqX4X1X1X1X1X1X4X4.<.4.<.5.Xv ;X,XwX9.9.<.wX,X,X2X2X;Xz 2.j p -Xj 2.a -X2.j z =XiX=Xs 2.,.wX-Xl ;X+...o.X.X...+.-Xl ;X4.4.b l :X+.o.o.X.X.+.2XyX>X5Xk z g w z >X3X7X.. .X.X. .+.W ..O. . . ... . . .O... .DXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXAXFXZXZXVXZX~ / ! b.n.]./._.`.^.(.(.(./.~.(.(.(.(.(.(.{.|.^.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(././.~.~.~.~.~.T.~./.^.P.Y.U.P.P.L.S.G.H.H.G.H.A.A.A.A.S.S.A.h.h.S.S.", "m m m m m m m m m m m m m m m m m m m m m = m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m N N N N m B B B N B B B N B N B C C B B C [ gXaXpXM.' f u y ; y y 0 r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 e r r r r r r 0 r r r r r r r r r r r r r r r r r r r r r r : r r r r r r r r r r r r r r r r r r r 0 r r r r r r r r 0 : y > > t u y r r * m.nXnXzXxXxXxXxXdXnXxXxXxXxXxXdXcXnXdXcXdXcXdXcXdXmXdXmXcXcXcXdXdXcXdXvXJXzXdXzXcXdXcXdXnXdXzXvXxXzXdXdXdXdXdXdXdX#X'..X.X.XzX.X.X.X.X.X.X X'.|.|._._.|.|.`.`._._._.(.(._.(.`.(.(./.(././.~.~.~.~.~.~.~.I.T.T.^.T.~.T./ Q S ZXVXFXDXFXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXVXFXyX1X0X9.1.1.5.4X4X0X;.5.2X1X0X:.5.1X,X2X2X1X1X1X2X1X0X:.>.5.1X,X,X,X,X,X2X1X.0X4XwX:.9.tX2X9.1.<.-.,.qX4X,X,X2X4.>.>.:.9.9.wX2X,X,XyXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXCX' Q J ` b.F.Y.~.~.~.T.[.T.T.T.T.T.T.Y.Y.T.L.Y.P.L.P.P.Z.S.L.L.L.L.L.L.L./ Q Q ZXVXFXZXAXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXGXo.X.X.O.6X2XtX2X2X,XXz z d *X7X .X.X.X.z z +.+.X. .X.:Xk +.o.X.X.X.o.o.X.X. .8.,.b v s k d 0X:.>.-.-.;.+...eX:.,.;.-.-.,.b l } o.X.X.X...6X;Xa 2.:Xp } O.X.o...+.6X3X5.;X4 l x O -X1X.5.7X.. .O.o.7X5.0XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXBX' ! ^ I e.n.Z.U.T.U.T.T.T.T.T.T.T.T.T.T.~.~.T.~.~.~.^././././.^.[.^.|.].! / [ BXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX3X1XyX2XqX5.1X2X1X9.,.>.,.<.v z :X0X9.9.9.9.5.Xl :XXb l x :X4X4X5.9.2X,X2X2Xb v k k z v k k @ v k -Xz s s =Xs 8.,.<.3X:Xl ;X+.O.X.X.X. .o.;Xz c x l n 6Xo.o.o.O.+.>XuX:X:X>X:XpX:Xb v 5X>X5X6X .X.X. . ./ O.X.X.X.X.X... .X.X.o.X.AXZXGXFXFXFXFXFXFXFXFXFXFXFXFXDXFXZXFXVXZXDXZXVXGXS ~ I b.F.Q.(.^.(.(._.(.(./.^.~.(.(.(.(.(.`.(.(.(.(.^.(.^.(.(.(.(.(.(.(.(.(.(./.(.(.(.~.^./.~.^.T.T.~.T.Y.P.P.P.L.L.U.S.H.H.H.G.A.H.S.A.S.S.S.S.A.A.", "m m m m m m m m m m m m m m m = m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m N m m N m m N C B B B B B B B B B C m C B C C B / hXaXsXM.' u u > : : : y 0 r r r r r : r r r r r r r r r r r r : r r r r : 0 r r r r r r r r e r r r r r r r r r r r r r : * r r r r r r r r r r r r e r r r r r r r r r r r r r r r r r r r y r r r r y r r e r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r e r : r r r y y r * * r hXxXxXxXcXcXcXxXnXdXxXxXcXxXxXxXdXcXcXvXcXcXcXdXmXcXcXcXxXcXxXxXxXxXcXdXnXdXmXdXcXnXdXcXzXzXzXzXzXzXzX.XdX'.zXdXzX.XzXxXzX.XdX XxX.X.X|. X|..X|.}.}.}.|.`._.{._._._.(.(.(.(./.(.(./././.~.~.~.~.T.~.~.T.~.T.~.~.T.T.~ ~ ! ZXHXZXDXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX,X4X<.;.<.:.1.5.4X<.:.4X,X1X4.:.1X,X,X,X,X,X1X0X5.4X0X5.3X,X,X,X,X,X2X0X5.1X1X2X2X4X5.,.<.<.4.1X1X1X3X6X+. .X.X.X.X... ...+.6X,XtX4.:.>.<.4.9.4.,X2X4X0X,.wXwX,.wX4XwX9.tXwX,.wXwX,.,.0X4XwX:.<.:.<.:.<.-.-.>.qX1X,XX2X3X:X,XX>X:XO...+.+.+.@.;X:Xv :X2X>Xk 9.0Xs 9.0Xg n n k iX>X@ 8.8.- ;X>X-XsX- k 1.9.b a z h p -X9.-.>.0X1X1X2X1X1X1X1X1X2X1X1X1X1X2X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X>X>X8X .X.X.X.X.X.X.O.hXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXBX' / S ` w.e.j.a.a.a.i.g.a.a.a.k.a.f.a.a.a.f.i.f.f.k.g.a.f.k.k.k.k.f.d.k.! ! ^ CXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXv z *Xg sXn + +.O. ... .x z +. .X.+.+..-.-.;.:.7XO.8.,.-.-.-.-.,.b | .X.X.X.X. .6X-Xa 9.2.p / X.o. .X.o...+.4X:X@ M.8.4 -X>X9.>.-.-.-.;.qX:Xa x % O b 7X....X.o.O.O.6X:.-.-.-.-.-.-.5.7XO.O.O.o.6X1X>XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXAXFXBX[ ! Q I b.b.D.U.U.U.T.T.T.T.T.T.T.T.T.~.T.T.~.~.~.^.~././.(./.(.(.(.).Q./ ! ' BXDXZXDXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXyX,X,X1X<.<.1X,X2X0X9.;.,.1.v :X4X4.;.1X1X1XyXv l x :X1XwX9.9.5.,X,X>Xv :X,X2XwX<.tX,X,XyX;Xl v b v x v v l v v v n l z z z 8.>.>.<.tX;Xl ;X+...o.X.X...X.+. .o.+. . .X.O.X.+.2XuXk x l s eX:XsXb k 5X,X,X>X6Xo. .....W O. .......O... . . .....CXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXVXAXDXDXAXAXS ~ ~ b.n.[.(.(.`.(.(.(.(././.(.[.(.(.`.^.^.`.(.(.(.(./.(.(.(.(.(.(.`.(.(.(./.(.(././././.(.~.~.~.~.T.T.T.Y.P.P.L.L.L.U.H.H.Z.G.S.Z.A.S.S.A.J.A.A.A.", "m m m m m m m m m m m m m m m m m m m m m m m m m = m m @.= m m m m m m m m m m m m m m m m m m m N m N B B N N B m B B B B B B B C C C B C A C m.gXaXpX{ Q u e ; ; q : r r r r r r r r r r r r e r r r r r r r 0 r r r r r r r r r r r r r r 0 r r r r r r r r e r r r r r r r r r r r r r r r r r r 0 r r r r r r r r r r r r r q r r r r r * r r r 0 * r r r r r r r r r r r 0 e r r r r r r r r r r r r r r r r r r r r r r : : r 0 r r e r r r r % ` xXxXvXcXcXcXcXxXxXxXfXcXcXxXxXcXvXcXcXcXcXcXmXcXdXvXcXxXxXxXxXdXcXdXcXdXcXdXdXdXcXnXdXzXzXxXzXzXzXzXzXdXdX.XdXzX.X'..X.X.XdXdX.X.X.X.X X|.|.|. X X}._._._._._._.(._.(.(.(.).(././.)./.~.~.(.T.~.~.T.~.~.I.~.T.T.~.~ Q S ZXFXAXDXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX3XqX-.qX4X4.,.<.4X0X5.2X1X4X9.<.2X,X,X,X,X,X4X4.,.5.4X4X2X,X,X,X,X,X4X5.>.<.5.,X,X1XwX:.>.<.:.<.9.4.2X5X3X+... .o.X.X.X.X. . .+.7X1XtX<.,.,.wX4X1X1X1X:X5..:.X>X1XXk j k O b k O g < O *Xg O 7 4 - -X>Xv a a g 4.9.b z a p z v ;X>.-.:.9.<.4.9.<.9.<.<.4.9.<.9.<.wX2X,X,X,X,X,X,X,X,X,X,X,X,X,X2X,X,X,X,X,X,X2X,X,X,X,X,X,X,X,X,X,X,X,X,X>X.-.>.:.} o.c.,.;.;.-.>.;.j | o.o.o. .o. .6X;X@ *X;Xg } O.X.O.o.X.X...7X;Xa 6 j + -X<.-.-.-.-.-.>.0X:X@ :XeX+ n +. .X. . .O.O.6X:.,.>.>.-.;.>.5.7X....O...7X1X>XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXBX{ ! ! _ e.n.K.T.U.T.T.T.T.Y.T.T.~.~.P.T.~.~.~.T.~.~.~.!././././.(.^.`.!.J / ' BXDXAXDXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAX3X,XX1X0X:.X:X2X:X,XX1X0X>.-.<.tX2X;Xl ;X+.O.X.O.o.O.X.X...O. .X.o.o.+.X2X-X8.8.j ;XeXsXb k 5X,X,XyX3X6X6X6X} | 6X7X6X7X6X7X6X7X6X6X7X7XZXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXVXAXFXZXAXDX' ~ / c.n.!.(._.(.(.(.(./.~.~.(.(.(.`.^.`.`._.^.(.(././././.!.(.`.(.(.(.(./.(./.(././././.~.~.~.~.~.~.T.T.T.L.U.P.L.L.A.H.H.H.G.G.H.S.S.A.A.h.A.A.h.", "m m m m m m m m m m m m m = m m m m m m = m m m m m m m m = m m m m = m m m m m m m m m m m m m m m m m N N N N B B B B B B B B N B B C A A A ` aXaXpXM.' u r r : : ; : ; ; r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r e r r r : r r r r : r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r ; q r r : r r : r : % : - ].dXMXnXnXcXnXnXdXcXcXcXcXnXxXcXcXcXcXcXcXdXcXcXcXdXcXxXxXvXdXcXzXdXxXnXdXdXcXcXdXdXdXcXxXzXzXzXzXzX.X.XzXzX.XzX.X.X.X.XzX.XdX@X.X.X X X|. X|.}.|._.|._.{.|.^._.(.`.(._.(./.(././././.~.~.~.~.T.~.T.T.T.T.~.T.T.~./ ~ S DXAXAXDXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX1X5.5.1X4X4.-.qX1X2X1X1X0X<.;.<.2X,X,X,X,X,X1X4.,.;.<.5.1X,X,X,X,X2XwX;.-.-.,.,X,X2X1XwX4.4XqX,.;.>.<.4.1X3X6X7XO...o.X.X.X.X.X.X.+.yXtX4.4.,XtX9.4.wX2X4XwX<.<.4.4.wX4X,X,X1X,X2X1X1XyX9.9.tX,X5.wX2X<.>.,.qX1XX+ :XyX1Xv l z z a f z l g f a f v f v f v v l z v f -Xv v l w x l + j ,.-.-.>.>.-.-.>.>.>.-.>.>.>.>.,.5.1X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X2XtX,X,X,X,X2X2X>X6X..X.X.X.X.X.X.hXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXBX' ~ S ` T s.j.d.f.f.a.a.a.f.a.a.a.i.f.f.f.k.k.k.k.f.z.g.k.g.k.k.k.z.k.k.S S ~ CXDXHXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXl g p z z h z l x f l u d l x l l x .qXX:XFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXFXAXBX' / Q ) b.n.L.T.U.~.~.T.T.T.T.~.~.Y.!.~.~.~.T.~.T.~.~./././.(.(.(.(.(.].! ~ [ BXDXDXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXyX2X4XqX;.-.<.1XX0X5.4X,X,X,Xb x :XyX1X0X;.4.1X,X,X,X,Xb l :X2XyXwX4.4.4.,X2X2XyX2X2X2X1X1X5.,.>.>.<.,X.wX4X,X,X;Xz ;X7X ...X.X. . .O...O...o.+.X>X,XyX>X>XtX2X>XuX,XAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXAXFXFXAXDX~ ~ ) b.n.!./._.(.(.(./././.~./.(.(.^.^.`.(.(._.(.(.(./.(.(.(.(.(.(.(.(./.(.(.(././.(./.~.~.~.~.~.~.~.T.T.T.T.U.L.L.L.L.H.S.H.H.H.A.G.A.G.S.A.S.A.A.", "m m m m m m m m m m m m m m m m m m m m @.m m m m m m m m m m m m m m m m m m m m = m m m m m m m m m N m N N N B B B B B B B B C B B B C A S Q.aXpXM._ c > y > r y r : ; r e r r r r r r r r r r q r r r r r r r r r e r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r q e r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r = ; y ; r r r e e * r % % u cXvXcXnXnXnXnXMXnXcXcXcXcXxXzXcXcXcXcXcXcXmXdXmXdXcXdXJXvXxXxXcXxXdXdXcXmXdXdXcXdXcXdXzXzXzX.XdX.XxX'.'.dXzXzX.XzXzXxX.X.X.XdX.X.X'.'.|. X|. X}.|._._._.|._._.(.(.(.(.(.(.(.(.!.(./.~.~.~.~.T.~.~.T.~.T.!.T.T.~.~ ~ ~ AXAXDXDXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX3X,X4X4XqX<.>.<.4X,X,X1XqX>.>.>.>.5.1X,X,X,X,X2X0X9.9.-.,.3X,X,X,X1X0X-.>.>.>.4.2X2X,X.>.>.<.:.<.2X3XuX:X6X+. .X.X.X.X.o.o.+.6X3X1X,X0X,.<.tX2XyXwX4.tX1X1X,X,XX>Xb n h z :X>XtX>X>X4 < O p b k g :X,X1X.-.>.>.>.-.-.>.>.>.-.>.>.,.9X1X,X,X,X,X,X2X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X2X,X,X,X,X,X2X3X:XX.X.X.X.X.X.o.oXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXBX} / S ` T g.a.g.s.i.i.a.a.a.a.a.z.f.f.f.k.f.f.f.k.k.i.z.k.f.f.k.f.k.k.k.~ / ~ ZXDXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX:X>X:X>XX>X6X .+.X.d :X.-.>.-.>.>.>.:.wX1X-Xp d k 6XfXfX7XfXhXhX7Xk k v k k v z { 7XhX7XhXfX7Xh k AXAXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXFXAXFXBX[ / ! P b.A.Y.T.T.T.T.T.T.T.[.P.~.~.P.T.T.T.~.~.~.^.~./././././.(.(.`.Q.~ ~ _ fXGXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXyX4X5.>.>.>.<.1X2X0X<.5.v :XXv :X,X,X>X1X5.,.tX2X,X,X2X,X.>.tX,X,X,XXXuXtX,XuXtX,X1X>X2X,XX,X r 0 % % * Q.cXMXcXdXMXnXnXcXcXcXcXnXxXxXxXnXxXcXcXcXcXcXcXcXcXJXcXcXdXxXdXzXdXdXfXdXdXdXcXdXvXdXdXdXcX XvX X.X'.zX#XdXzX.X'.zX'.dX'.zX.XdX X'.'. X`.`._._.|.|.`.(._.|.^.(.(.|.^.(.(.|.(.(././.!.!.~.T.~.~.~.T.T.T.T.T.T.T./ ~ ~ fXVXVXFXVXZXSXZXZXVXFXZXZXZXZXDXHXFXFXZXZXFXZXFXFXyXyXyX3XqX9.9.qX3XyXyXyXqX9.9.9.9.5.KX1X2XyXyXyXyX3X1X0X5.yXyXyXyXyXwX9.9.9.5.yXyXyXyXyXyX3XwX9.9.9.5.KXwX4.yXyXyXyXyXyX+.O.o.o.o.o.o.O.X.o.o.3XtX5.yXyX3XyXyXyXyXyXyX3XyXyXyXyXyXyXyXyXyXyXyX3XyXyXyXyX1XyX1XyXyXyXyX5.9.9.eX1XyX3XyXyXyXyX5.9.SXAXAXAXAXFXVXFXVXFXZXHXFXZXVXVXFXFXZXZXDXFXZXZXBX' Q ! ) b.F.U.Y.Y.T.U.T.T.Y.U.Y.T.Y.U.U.U.I.H.H.H.H.H.H.A.S.S.S.S.H.G.D.) / S fXZXAXHXZXAXAXDXFXHXAXHXDXZXHXDXZXFXZXZXHXFXAXVXVXo.o.O.8XyXyX r r r r r r : r r r r r r r r r r r r r r r r 0 r r r r r r r r r r r : r r r r r r r r r r r r ; r r % ; $ $ _ mXcXmXcXnXcXnXnXcXcXcXcXcXnXdXxXcXcXcXcXcXcXcXnXcXcXxXxXcXnXdXdXdXdXdXvXcXdXdXcX.XdXvXdX.XdXzX.XzX'.zXzX.X'.dX.X'..XdX X.X.X.X.X X|.|.|.|.|._.|.|._.`.|.`.^.(.(.(.(.(.(./.(././././.(.~.~.~./.T.[.T.T.T.T.~.F.! ! ! hXCXZXZXDXZXVXZXVXFXDXZXFXHXZXZXFXDXZXHXAXFXFXFXZXFXFXDXZXZXAXZXAXZXFXAXAXDXFXHXDXFXAXZXAXDXFXAXAXAXFXZXFXZXSXFXFXFXFXDXZXZXFXFXFXAXAXFXAXAXDXAXFXZXZXFXZXZXVXVXFXFXZXFXVXZXVXVXVXAXVXFXFXVXHXAXDXZXVXSXVXFXFXFXFXDXFXDXZXFXAXAXAXZXZXFXFXFXDXDXDXAXAXAXAXDXFXFXFXFXVXZXFXZXAXAXFXFXFXVXFXFXZXDXZXFXAXAXAXAXDXHXFXFXZXVXFXZXZXFXAXAXFXFXAXAXHXhX[ ! Q S ` b.Z.L.Y.L.U.T.U.T.I.T.U.T.U.U.L.L.L.H.K.G.S.G.G.G.A.A.A.z.S.z.A.H._ / _ aXCXSXZXDXFXZXAXZXZXZXAXFXZXDXHXAXDXFXZXZXFXHXFXAXAXAXFXFXVXFXFXVXFXFXDXAXFXFXDXZXZXVXZXFXDXZXZXZXAXFXFXFXHXAXFXDXAXAXFXAXAXAXFXFXZXDXFXZXSXDXAXZXFXFXVXVXFXAXZXDXZXDXFXFXFXFXFXFXVXZXFXZXZXFXFXAXDXFXZXZXZXFXZXZXFXVXAXAXAXZXFXFXHXFXDXFXAXAXAXAXAXAXAXAXHXAXFXZXAXFXAXZXAXVXFXFXVXZXZXFXVXVXVXFXZXZXAXZXAXAXAXAXAXVXAXZXFXZXFXVXDXDXDXZXHXZXhX' Q Q Q T b.Z.g.k.g.g.z.h.j.f.f.f.f.z.f.j.f.f.g.g.z.g.j.k.g.g.g.g.h.g.h.g.D.Z / / hXFXDXDXVXFXAXAXAXAXAXAXAXHXZXZXFXHXVXZXDXDXFXHXAXFXFXFXZXFXZXZXZXZXZXDXZXAXFXDXFXHXFXZXZXZXZXZXDXZXAXZXZXDXFXVXZXZXAXAXSXZXZXZXAXZXDXFXDXFXFXFXDXZXZXZXFXAXZXZXZXZXZXDXDXDXZXDXZXDXAXAXFXHXZXZXZXZXAXZXZXZXZXZXAXZXDXZXFXSXDXFXZXZXDXZXAXZXFXHXAXZXAXZXDXZXDXFXHXAXDXAXAXAXAXAXFXFXDXDXFXHXFXZXVXDXHXGXHXDXZXFXHXDXAXZXZXAXAXFXZXFXVXFXZXDXDXhX' ~ ~ S ` b.F.I.T.T.~.T.T.T.~.U.~.~.T.T.T.~.~.~.~.~.~.~.~./.(./.(.`.(.(.'.| Q / ' Q.HXFXAXVXFXAXVXGXZXDXHXFXDXDXAXFXAXDXFXFXZXAXFXFXAXDXAXAXAXFXZXVXZXZXFXFXFXFXZXAXFXDXFXHXFXDXVXVXFXZXFXFXFXFXFXZXZXZXDXFXZXVXFXZXVXFXZXZXHXZXAXAXFXAXHXDXDXDXHXFXZXZXAXDXAXDXAXAXAXAXZXZXZXZXAXDXDXZXDXSXZXAXZXFXHXZXFXAXAXDXZXDXSXDXZXZXFXFXSXDXZXAXFXFXAXDXFXZXFXZXFXDXAXAXVXAXZXZXZXFXFXDXZXZXFXVXFXZXAXZXFXHXFXZXZXFXDXFXHXFXFXZXAXVXAXFXhX[ ! ! _ [ n.].(.(._././.~./.~.~./.(.|.(.|.^.{.`.|.(.(./.~.(.(.(./.(.(./.!.(./.^.(.(.(.(.(.(.~.(.~./.^.~.T.^.T.T.T.U.U.L.L.L.L.L.S.H.H.S.S.S.S.S.A.h.A.", "m m m m m m N m m m m m m m m m m m m m m m m m m m m m m m m m m = m m m m m m m m m m m m m m m m m B m B B N N V B B N B C B C C C N S m.m.{ { Q t > e e r r r r r r r r r r r r r r r r r r r r r r r r r r r r q e r r r r r r r r r r r r r r : y 0 = * = y : r e * ; q 0 : r r r r r r 0 r 0 ; e y r * 0 ; y r r 0 ; > : r ; r = r e r ; r r r r r r r r r r r r r r 0 r r r r r r r r r r r r r : r r r e 0 r r r r * y r r r r r r r r y ; : ; % % % > cXcXdXcXnXcXnXnXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXnXvXxXxXxXcXcXdXcXvXcXvX.XdXdXdXdXdXdXvX.XzXzXzX'..X'..XdXdX.XzX.XdX X.X.X.X X X|.|.|.|.|.}.}.^.|.`./.`.(.(.(.(.(.(.(.(.(.(././././.~.~.T.~.T.T.T.T.T.T.T.T.I ! ! ' hXDXDXZXZXFXFXZXZXAXAXAXAXAXAXAXAXAXAXZXDXAXAXAXAXZXFXVXZXFXFXDXAXDXFXFXFXVXAXFXFXFXFXAXAXFXFXFXFXVXFXFXFXZXFXFXFXFXFXAXFXFXAXAXFXDXDXFXFXVXFXFXFXFXAXFXZXZXFXFXFXFXFXFXZXFXFXFXVXGXFXFXFXZXFXFXAXAXAXDXZXFXFXFXZXFXFXVXZXVXFXDXFXFXZXDXFXAXAXFXFXDXDXDXZXFXFXFXFXFXFXFXFXFXFXZXVXFXFXFXFXZXVXZXFXFXFXZXFXFXAXFXZXFXFXFXFXGXVXAXFXAXFXAXZXfXc.S / S u [ b.Z.F.L.U.P.T.U.T.T.U.U.U.U.K.L.L.L.H.H.H.G.A.G.A.A.A.h.A.A.A.h.S.b.| ~ ' hXZXCXZXCXFXFXFXAXAXFXZXAXFXAXAXFXZXFXFXAXGXAXFXZXFXFXFXZXFXFXFXFXDXZXDXFXFXFXFXFXFXFXFXFXFXZXVXFXFXFXFXAXAXAXFXFXFXDXZXFXFXAXDXDXAXAXAXFXFXVXFXAXFXFXDXDXZXAXAXAXAXAXFXVXFXFXFXFXFXFXFXFXZXFXAXAXAXAXFXZXFXFXFXFXFXZXZXZXFXDXZXAXDXAXAXFXZXFXFXAXFXFXFXAXAXAXFXFXFXFXDXFXFXFXFXFXFXVXZXFXFXZXVXFXFXFXZXZXAXAXAXAXAXAXZXVXZXZXZXVXVXHXZXDXfXc./ / Q S ` j.S.h.h.h.h.h.l.h.l.l.g.f.f.f.k.k.h.k.g.h.h.h.j.g.h.z.h.h.h.h.z.g.T / / { hXFXDXFXZXZXVXZXVXCXFXDXAXFXFXZXDXZXZXAXAXAXAXDXDXAXDXVXFXFXFXFXFXDXZXFXAXZXZXFXFXAXFXFXFXFXVXAXDXAXDXVXFXFXFXFXFXHXVXDXDXAXFXFXFXFXFXFXFXFXAXZXAXAXDXAXAXZXFXDXFXDXDXFXFXDXDXDXDXAXDXZXFXFXFXFXFXDXDXAXAXVXFXVXZXFXFXAXAXAXAXDXDXDXDXAXAXAXFXFXFXFXVXAXAXZXZXAXDXZXFXFXDXZXZXFXFXFXVXZXAXZXAXFXFXDXDXDXFXFXFXFXFXFXFXDXZXFXAXZXZXDXFXFXFXfX{ S Q S S T e.K.T.T.T.T.T.T.~.T.T.T.T.XX/.~.~.~.~././.~.~././.(.(.(.(.(.(.{.]._ ! ! ' hXFXFXAXAXVXVXFXFXZXFXFXZXVXFXFXAXFXDXAXZXFXFXZXZXFXDXAXFXFXFXFXFXAXFXFXFXVXDXDXDXAXAXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXFXFXVXFXFXVXVXFXZXZXDXZXDXFXAXAXFXFXFXFXAXAXZXAXDXDXAXDXVXZXFXVXFXFXFXFXAXAXAXAXFXFXAXFXAXFXZXDXDXZXZXZXVXFXFXZXZXFXZXZXFXFXZXZXFXFXFXFXFXZXFXDXDXAXFXVXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXAXZXZXVXFXMXm.! / Q _ n.n._./.(.(./././.~./.~./.^.).|._._.|.{.(.(.(.(.~.(.(.(.^././.(./.(.(.(.(.(./.(.E.[./.~./.[.T.~.~.~.~.T.T.T.U.U.L.L.L.L.S.D.H.H.H.H.S.S.S.S.S.", "m m m N m m m m m m m m m m m m m m m m m m m m m = = = m m m m m m m m m m m @.m m m m m B m m m m N B N N B B V C B B C C V C C C C C J M.pXM.' c e ; : * r : r r r r r r r r r r r r r r r r r r 0 e r r r r r r r r : r r r r r r r r r r r r e ; = e r e 0 ! { ( c e ; > * r r * r r ; ; r 0 r ; y = 0 % t > ; ; t 0 r e t e * y r e 0 0 > r r r r r r r r r r r r r r e r r r r r r r r r r r r r y r r r r r r r r r : r r r r r r r r r = ; * : ; % $ $ '.nXJXnXmXcXnXnXcXnXcXnXnXcXnXcXcXcXcXcXcXnXcXcXcXcXxXxX@XxXdXdXcXdXfXdXcXdXdXcXdXdXdX#XdXzXzX.XzX.XzX.XdXdX'.@X.X.X@X.X'..X.X X X'.'.|.|.}.}.}.`.|./.|.(./.|.`.`.(.(.(.(.(././././.(.^.~.^.~.~.^.T.T.T.[.T.T.n./ ! / [ hXDXZXGXFXZXZXFXDXZXDXDXZXZXZXDXDXAXZXZXDXZXZXZXZXFXZXVXDXAXAXZXFXFXFXFXZXZXZXZXZXDXZXZXZXAXZXFXZXZXZXFXZXZXZXFXVXZXZXZXZXDXZXHXAXAXAXAXZXZXZXZXDXZXDXZXFXFXFXZXFXZXZXZXZXFXZXFXVXZXAXAXZXVXZXAXDXZXZXZXZXFXVXZXZXFXZXFXZXAXDXZXZXFXZXAXAXZXAXZXAXAXZXZXZXFXZXZXFXZXZXZXFXZXFXZXVXAXFXZXVXZXFXZXZXFXZXZXZXZXVXZXFXZXVXZXZXFXFXZXAXFXZXfX{ Q / ~ u i e.d.F.K.L.U.U.U.Y.P.U.T.T.U.U.L.L.L.L.H.H.S.G.Z.Z.G.A.A.A.h.A.A.h.H.Z.T ) ~ } fXCXSXFXFXZXFXZXZXZXAXDXAXDXDXZXZXFXFXAXAXVXZXVXZXZXFXZXFXZXZXHXZXZXZXZXZXVXZXZXZXVXZXZXFXZXZXFXAXAXFXZXZXZXDXFXZXZXZXDXAXAXAXAXDXZXAXFXZXZXFXAXFXAXAXAXFXDXZXDXDXDXZXFXFXFXZXFXZXZXZXZXAXZXZXDXZXAXDXVXZXZXFXZXZXZXZXZXFXAXDXAXZXVXZXZXAXZXHXAXFXZXAXZXZXZXDXFXZXZXZXFXAXZXAXZXFXFXZXZXAXZXZXFXZXFXDXZXZXDXDXDXZXDXDXZXDXAXVXFXVXGXFXfX{ ~ S Q u I e.Z.h.S.h.A.A.h.h.h.l.l.h.h.h.j.k.h.k.g.g.h.h.h.h.h.g.h.h.h.A.A.h.g.[ / ~ ^ [ hXBXGXZXFXZXFXVXFXFXZXAXFXZXDXDXZXZXDXDXDXZXAXZXAXAXZXZXZXFXZXFXZXVXDXDXFXVXVXZXVXZXZXFXZXZXAXAXDXAXZXZXZXZXFXFXDXDXAXDXZXZXFXZXZXZXZXFXZXAXDXDXAXDXZXZXDXFXDXZXZXDXZXVXDXDXAXAXAXAXZXZXZXZXZXDXHXZXDXDXZXZXFXZXZXZXDXDXDXAXZXZXAXAXZXZXZXDXFXZXZXZXDXDXZXVXAXZXVXZXFXZXZXVXZXDXDXZXZXVXZXFXZXZXZXDXAXAXZXZXZXZXZXZXFXZXZXZXDXGXZXDXSXfX[ / ~ ~ u ^ [ n.F.Y.T.U.~.T.T.T.T.~.E.XXT.T.~.~.~.~.~././.~./.(.(.(.^.`.`.(.(.`.Q._ ~ ~ } ].ZXGXFXFXFXDXZXFXFXFXZXZXZXZXZXFXFXHXZXFXZXFXHXFXDXAXZXZXZXFXAXZXZXFXZXZXAXAXAXAXZXZXZXZXZXDXZXZXSXFXZXZXZXDXZXZXFXZXZXFXZXZXZXZXZXZXZXDXDXZXZXZXAXDXZXZXZXFXAXZXAXZXDXZXAXAXZXAXZXZXFXFXZXVXZXZXDXDXZXZXAXDXAXZXDXFXZXSXZXZXDXDXZXZXZXFXZXFXFXVXDXSXFXDXZXZXZXZXFXAXAXAXFXHXFXFXFXZXZXFXFXZXFXZXFXZXVXZXZXZXVXZXZXZXVXFXZXZXFXFXAXVXMX} / ! ! L ` b.].]./.|.^.(./.~././.~./.(.(.(.|._.{.(.`.`.^.(.(.(.(.(./././././.(.(.(./.(.^.[.{.(.[.(./.^.(.~.^.~.T.T.T.T.T.Y.L.L.L.L.L.U.S.H.S.H.H.G.G.S.G.", "m m m m N m m m m m m m m m m m m m m = m m m m m m m m m m m m m m m m m m m m m m m m m m m m m B N m N N B B V C B C B C C C N C B H _ M.M.{ / u e e y r r y r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r e r r e * y y : f pXPXLXLXLXLXLXpXt > 0 ; r r r r e 0 y ; e ; r e { LXLXLX{ % y * e { gXe ; ; r r * r r r r r r r r r r r r r r r r r r r r r r r r r r r r r * r e 0 r r r r r e 0 r r r r r r r r : ; y e e % % $ $ M.fXxXxXvXvXcXcXcXcXcXcXnXcXcXcXcXcXcXcXcXcXnXxXnXnXxXxXdXxXdXcXdXdXcXdX.XdXdXdXdXdXdXdX%X.XzX.X.XzXzX.X.X'..X'..XdX.X.X X.X.X X|. X|.|.}.|.}.}.`.(._.^.|./.(.(.(.(.^.(.(.(.^./././.~.~.~.~.~.~.T.T.T.T.U.U.T.Y.[ U / / / hXfXHXFXFXFXHXFXAXAXAXVXZXAXZXAXDXZXDXFXZXFXVXFXAXFXZXAXAXZXZXZXAXFXFXAXAXFXHXFXAXVXAXFXAXFXDXFXVXZXZXZXDXFXFXFXZXAXVXFXFXDXAXAXAXDXFXZXVXAXZXAXFXZXZXFXZXZXFXFXFXZXVXFXFXVXVXAXHXFXDXAXZXAXZXAXAXZXZXFXFXFXZXFXVXZXZXFXFXVXAXFXFXFXDXAXZXAXAXAXDXZXZXFXZXZXZXFXAXZXVXFXFXZXVXVXZXFXFXZXVXZXVXFXFXFXZXFXVXFXZXFXZXVXZXZXGXHXZXZXHXhX} Q Q Q S u Y e.n.Z.L.L.U.P.P.U.T.Y.U.U.U.U.L.L.L.L.H.S.S.S.A.A.A.A.A.A.h.z.h.A.D.Z.Z.[ / / ' aXBXCXVXFXFXVXZXVXZXAXZXAXAXFXZXZXDXZXVXZXFXVXZXZXVXZXVXFXFXHXFXZXAXFXVXFXZXFXZXVXZXFXFXZXVXVXZXFXFXVXZXVXZXFXFXDXDXFXAXDXAXAXAXDXAXFXFXAXVXAXAXDXDXHXHXVXAXAXDXZXFXFXZXZXZXFXVXZXVXFXFXVXZXZXVXZXFXZXVXZXVXFXFXDXDXDXFXGXHXFXZXAXZXFXFXDXAXAXAXDXFXZXVXVXZXAXFXZXZXFXVXZXZXAXVXZXZXFXFXVXZXVXZXFXFXAXAXAXZXAXAXZXDXFXZXFXFXAXVXBXhX{ ! ~ Q u u Y e.Z.W.S.S.h.A.S.A.A.A.l.l.l.h.h.k.j.h.l.h.h.h.h.h.l.h.h.h.A.h.A.h.l.h.T / S ^ } hXfXZXZXZXVXZXAXZXZXVXFXFXDXHXDXDXAXAXAXDXAXAXDXDXZXVXVXZXFXFXFXFXAXZXAXAXFXZXFXZXFXFXVXFXAXDXAXFXAXAXFXHXAXAXFXDXZXAXZXVXFXVXZXVXFXFXCXVXAXAXAXDXVXZXVXAXAXAXZXHXFXFXDXAXAXAXAXDXVXVXZXVXFXFXZXZXAXAXZXAXFXVXZXVXAXAXAXAXDXDXAXFXVXZXAXZXFXAXFXZXAXAXDXAXFXZXVXZXZXFXVXVXFXVXFXFXAXFXZXVXFXFXDXDXAXAXFXFXZXVXVXVXZXVXFXZXZXZXDXHXhXc./ Q ' u t K b.Z.K.K.T.T.U.T.I.T.T.T.T.XXY.~./.Y.~.~.~./././.(./.(./.^.(._._.^.|. XQ./ / / ' Q.fXZXFXVXVXAXZXAXFXAXZXZXVXFXFXFXFXZXVXZXFXZXHXAXFXFXAXFXAXAXDXFXFXFXVXDXAXDXDXAXVXZXDXFXAXZXFXZXZXZXZXFXVXZXVXFXFXHXFXZXVXFXFXVXZXVXZXFXFXHXZXAXAXFXAXAXVXZXZXDXAXZXZXDXAXDXAXZXVXFXZXFXFXFXZXAXZXAXZXZXAXAXZXAXDXAXZXAXZXZXAXVXZXZXVXFXFXFXFXDXAXAXDXFXVXZXVXFXFXDXAXZXFXZXVXZXVXFXFXHXZXZXZXZXVXZXFXZXVXZXVXZXVXZXFXFXZXDXHXHXhXM.~ S ! u K b.n.].^.|./.^./././.~.T.~././.|.(.|.{.(.|.{./.|.(.(.(.(.(./.(./././.(.(./.(.^./.^.^.~.~.~.^.E.T.~.~.T.~.T.T.U.T.Y.K.U.L.L.L.L.L.S.H.H.H.H.H.S.G.", "m m N m m m m m m m m m m m m m m m m m m @.m m m m m m m m m m m m m m m m m m m m m m m m m m m N N B N B B B B B B B C B C B A Z Z y [ M.{ { K u ; > : : r : r r r r r r r r r r r r r r r r r r r r : r r r r r r r r r r r r r r r r 0 r : * r 0 : u IXLXLXLXLXLXLXLXLXIXe 0 * ; 0 r r r r r ; ; ; 0 r { LXLXLX] 0 * { JXLXHX% y r 0 e r ; r r r r r r r r r r r r r r r r r r 0 e r r r r r r r r r r r r r r r r r r r r e r r r r r y * e * ; : ; % $ o F dXnXxXcXcXcXcXcXnXnXcXcXcXnXcXcXcXcXnXcXcXxXxXnXxXcXcXxXxXdXdXcXzX%XdXdX%XdXfXdXdXdXdXdXzXzXzXzX.XzXzX.XzXxX'.'.@X'.'..X X.X.X|. X X|. X}. X}.|.(.`.|.`.(._.^.(.(.(.(.(.E././.[.^.~.~.~.~.~.~.[.T.[.T.U.T.!.U.T.b.S / / { m.hXBXBXMXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXMXBXBXBXBXBXBXBXfXBXBXBXMXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXMXBXBXBXBXBXBXBXBXBXBXBXMXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXMXBXBXBXBXBXBXBXBXBXMXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXMXJXBXfXQ.[ ~ Q Q S u J Y e.n.Z.L.L.L.P.U.L.P.U.Y.L.L.L.L.L.L.L.H.S.S.S.A.G.A.A.H.h.A.A.A.A.D.D.Z.Z.U / / ' m.hXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXMXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXMXBXBXBXBXBXBXBXMXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXMXBXBXMXBXMXBXBXBXBXBXBXBXBXBXMXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXfXm.[ / ! ! ^ u K e.n.Z.S.A.S.S.S.A.h.A.A.h.G.l.h.h.l.f.h.l.h.h.h.h.h.z.l.h.A.h.A.g.h.D.z.z.[ S ~ S _ m.fXBXBXBXBXBXMXBXBXBXBXBXMXBXBXBXBXBXBXBXBXMXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXMXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXMXBXBXmXBXBXBXBXBXBXBXBXBXBXBXMXBXBXBXBXBXBXBXBXBXBXBXBXBXBXMXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXhXQ.{ ^ / / u u K e.b.n.K.T.T.T.T.T.~.T.T.T.~.R.R./.T./.(.T./././././././.(.^.^._.`. X{.|.dXn.! / ~ ' m.fXfXBXBXBXBXBXBXBXBXBXBXBXBXMXBXBXBXBXBXMXBXBXBXMXBXBXBXBXBXBXBXBXBXBXMXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXMXBXBXBXBXBXBXBXBXBXBXBXMXBXBXBXBXBXBXBXBXBXBXBXBXCXMXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXMXBXBXBXBXBXMXBXBXMXBXBXBXBXBXBXBXBXBXBXMXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXfX].[ ~ / / n u _ c.n.].~.(.|.(.|././.T././././.^.|.^.|.`.^.|.(.(.(.(.).(././.(././.(.~./.^.{.^.^.^.^.^.(.(.~.{.^./.[.~.~.~.T.T.T.T.Y.U.L.L.L.L.L.L.L.H.L.H.H.S.Z.", "m m m m m m m m m m = m m m m m m m m m m m m m m m m m m m m m m m m m m m m m N m N m m m m m M V N B M M C N B C B C N B C C C Z C C { M.{ ' u y > r r r 0 r r y r r r r r r r r r r r r r r r r r r r r r r e 0 * y r r r r r r r r r r r r : : y - IXLXLXLXLXIXIXLXLXLXLXIX- * > e ; ; ; e * w = q : y f pXaXm.u ; > gXLXLXUX> = ; * e ; ; : r r r 0 : r 0 y * r r r r r e r r r r r r r r r e * y : r r r r r r r r r r r q r r r r r r r r r r r : % $ $ w vXxXxXxXxXnXcXcXcXxXnXnXnXcXxXxXnXxXcXcXnXdXnXcXcXcXcXcXdXdXdX@XzX.XzXdXdXdXdXvXdXdXdXcXdXzX.XdXdXdXdX.XdX.X.X X X.X X.X|. X.X X|.'.|.|.|._.|._.(.|.^._._.^.`.(.(.(.^.(.(.(././././.~.~.~.~.~.T.T.~.T.Y.T.U.L.U.U.[ ! / Q ! ! S ! ! Q Q ! ! ! ! ! ! ! ! ! ! ! Q ! ! ! ! ! S ~ ^ ^ ! ! ! ! ! S ~ ^ S ! ! ! Q Q S ! ! ! Q ! ^ S ! S ! ! S ! ~ S S ~ / ! ! S ! Q ~ ! / ! ! ! S ! ! ! ! ~ ! ! ^ ^ S ~ ! ! S ~ ! S ! ! ! ! Q ! ! ! ! ! S ! ~ ! ~ ~ S ~ Q S ! ! Q Q ~ S ~ ! ! ! ! ! ! ! ! ! ! ! ! S S ~ ! ! ~ ! ! ~ Q ! ! S ~ ^ S ! ! ! ! ! ! ! ^ ~ S ~ / / Q ! ! S ^ u y i Y e.n.S.F.L.L.L.U.L.L.P.L.L.U.L.L.Y.L.L.L.H.A.A.A.S.A.G.A.z.A.h.h.A.A.A.G.S.I.b.) / / / S / ~ ! ! ! ! ! ! S Q Q ~ ! Q Q S ! ! ~ ! ! ~ ~ ~ ~ ! ! ! ! ~ ~ ! S Q Q Q ! ~ S S ! ! ! ! ! ! Q ^ ! ! ~ ^ S ! S ! S ! ^ ! ! ! ! S ~ ! / ! ! S ! ! ! ! ! ~ ! S ^ ! ! ! ! ! ! S ! ~ S ! ! ! ! ! ! ^ ! ! ! ! S ! ! ! ! S ! Q ~ ~ ~ S ! ~ ! ! ! S ! ~ ! ! ! ~ ! ! ! ! ! ! ! ! Q S S S ! ! ! ! ! S ! ! ! ! ! ! ~ ! ~ ! ! ! ! ! ! ! ! S / u u S T n.H.S.S.S.G.S.S.A.A.A.A.A.A.A.g.h.l.z.h.h.h.h.A.h.h.A.A.A.A.h.A.h.h.A.h.l.Z.U S / / ! Q ! ! ! S S ! ! Q Q Q Q ^ ! ! ^ S ! ! ! ! ~ ! S ! ! ! ~ ~ ! ! ! ! ^ ~ ! ! ! S S ! ~ Q ~ Q ~ ! ! ! S ! ! ! / Q ! ! S ! ! ! S ! ~ ~ S ~ ~ ! Q Q Q ! ! Q Q Q Q Q S ! S Q S Q ! ! ! ! ! ! Q S Q ! Q ! ! ! ! ~ ~ S ^ S S ! ! ! ! ! ! ! ~ S Q ! / ^ S ! ! / ! ! S Q S ! ! ! ! ! ! ! ! ! ! ! ! S ! ! S ~ ~ Q Q ! S ! / ~ ~ ! ~ ~ Q / / / S u u K _ b.n.H.Y.U.Y.Y.T.T.T.T.T.T.~.T.~.~.~.~.T.~.[.~.~.(.(./.(.(.(.(.(._._. X`..X]._ / ~ ! ! ~ ~ ! ! ! Q S ! S ! ! Q S Q ! S ! / ~ ~ ! ! ! ! ! ^ ! ! ! S S ! Q S ! ! ! ! ! ! ~ ! ! ~ ! Q Q K ~ Q ~ ~ ~ ^ Q S ! S ! ! S Q ! Q ! ! ! Q ! ! ! Q ^ Q ^ ! ~ ^ ~ ! ! ! Q Q ! Q ^ ! S Q Q / Q Q Q Q ! ! ! / / S ! ! ^ ! S ! ! ! ! ! ! Q ~ ! ! ! ! ! ! ! ! ! ! ! ~ ~ ~ ~ ! ! ! ! ^ ! S ! ! ! ! ! S ! / ~ Q ~ S Q Q ! S ! ! S ^ ~ Q Q ~ ~ u c ~ v.n.!.].^.^.(.(.(./././.~.~./.(.{.^.|._./.|./.`.^.(.(.(.^./.(././.^./.(././.(.(.E.(./././././.!.T.~.~.~.~.T.~.T.T.T.T.U.U.U.U.L.L.L.L.L.G.H.H.G.D.", "m m m m m m m m m = m m m m m m m @.m m m m m m m m m m m m m m m m = m m m m m m m m m N m m B N N N B C C V C C N V C C C C C Z C C C { [ { ' S y 0 r r r ; r r * r r r r r r r r t * 0 e r r r r r r : r r r r r r r r r e r r r r r r r r r ; e = ' LXLXLXPXu $ $ c PXLXLXLX' % u ' ' { * e = { ' { ! ; u { { n > % { IXLXLXIXn c % ; ; ; e : r r r r r r : r : r r r r r r r r r r 0 r r r r r t 0 r r r r r r r r r r r r r r r r r r r r e 0 0 r 0 % $ $ & zXxXnXxXxXxXcXcXnXnXnXnXxXxXcXnXnXJXdXxXcXJXnXvXmXdXdXcXcXcXdXdXzXzXzXdX.XdXdXdXdXdXdX XdX@XzXdX.XdXdXzX.X X.X X@X X.X.X.X.X|.|..X.X|.|._.(.|.(._.(.|._.{.|.^.`.(.(.(.(.(./.(././.~.~.~.~.~.T.~.~.T.Y.T.T.U.Y.U.U.[ ` ! S ! / Q Q Q Q Q ! ! ! ! Q / ! ! S ! ! Q Q ! ^ ! ^ ~ ~ ! ! ! S ! ! ! ! Q S Q Q Q ! ~ ~ / ! ! ! ! ! ~ / ! ! ! ~ ! ~ ! ( ! ! S ! ! / ! ! Q S ! ! ! S ! ^ ! ! ! ~ ! ~ ~ ^ Q ! Q Q ~ S ! ! ! ! Q ! Q ! Q Q Q / ! ! ! ~ ~ S / ! ! ^ ! ! Q ! ~ S Q Q Q ! ! ! ! ! ! ! ! ! ! ^ Q Q Q Q ~ S ! Q ! ! / ! ! ! ! / ! ! ! ! ! ~ ~ ~ Q Q Q / ! Q Q Q S u Z ) e.b.Z.A.H.L.L.U.L.L.U.P.P.Y.U.L.L.L.L.L.L.H.H.S.A.A.A.A.A.A.A.h.A.h.A.A.A.J.H.Z.[ ) P Z / ~ ! ! ! / Q Q ~ ~ ! ! ! ! ~ ~ ! ! ! ~ ! ! ! ! / ~ ! ! ! ! ~ ~ ! Q ! ~ ! ! ! P Q ~ ! S ! ! ! ! ! S ! ! ! ! ~ ~ ! ! ! ~ ! ! ! S ~ Q ! ! ! ! ! ! ! ! ! ! ! ~ / ! ! ! Q Q ! ~ ! Z ! ! Q ! Q Q Q ! ! ! ! Q Q / ! ! Q ! ! ! Q Q ~ ( ~ Q Q Q ! ! ! Q Q Q ! ! ! S ! Q ! Q ! ^ Q Q / ~ ! ! S ! ! ! ! / ~ S ! ! ! ! ! ! ! ! ! / ! Q Q c ^ S u F Y b.F.G.S.H.Z.H.G.A.A.A.h.Z.A.A.j.A.G.l.h.A.h.A.A.h.h.Z.h.A.h.A.A.h.A.A.h.h.l.Z.T U S S ! ~ / / ! ! Q Q ^ ~ ! ! ! ! ! S ! ! ! ! ! ! ! ~ ! / ! ! ~ ~ ! ! ! ! ! ! ! ! ~ / Q Q ~ ~ / Q ! ! ! ! ! ! Q Q Q Q ! ! ! ! ! ! ! / ! ! ! ~ ~ ~ Q ! ! Q ! ! ~ ^ Q Q ~ ! ! ~ Q Q ! ! S ! S ! Q Q ! ! ! ! ! ! Q ~ ~ ~ ! ! ! ! / ! Q ! ! ! ! ! ! ! Q Q ! ! ! / ! Q / ! Q ! Q ! / ! ! ! ! / ! ! ! ! ! ! ! ! ~ ~ / ~ ! / Q Q Q Q ! ! S ! ^ S S i H U b.b.F.Y.I.U.T.T.T.U.T.T.T.T.T.T.T.~.T.~.[.~.~.~./././.(.(.(.(._._.`._. X`._.dX].] / S ! ! S ! / ! / ! ! ^ ! ! Q ! Q ! ~ ! ! ! ! / Q ! ! ! ^ ! ! ! S ~ ~ ~ Q ! S ! ! ! ! ! S ^ Q S ! / / ~ / ~ ~ ~ S Q Q ! ! ! ! ! ! Q ! ! Q Q ! ! ! ! S ! ! ! ^ ~ ! ! ! ! ! ! ! ! ! ! ! ! ! Q Q ! ! ! ~ Q S ! S / S ! ! ! ^ ! ! Q ! Q ~ ! ! Q S ~ / ! ! ! ! ! ! ! ~ ! ! ! / ! ! ! Q Q ! Q ! Q ! ! ! ! ! / / ~ Q ~ Q ~ ^ ! Q Q Q Q Q Q Q / u u Q c.b.n.].!.].(.`.(.(././.~.~.~./.(.(./.|.(.|.(._.(.|.(.(.(.(.(./.(./.(.(.(././.(./.(././.(.(.(./.!.(.~.~.~./.~.T.~.T.T.T.T.U.U.U.U.L.L.L.L.L.H.H.S.G.", "m m m m m m m m m m m m m m = m m m m m m = m m m m m m m m m m m m m m m N N m N m m m m m N N N N M V M C C N N C N N B B C C C C C Z { { ' ! u t ; r ; r r r r r r r * r r r e r 0 y r r r r r r r r r r r r r r r r r r 0 r r r r r r r r r y ; e pXLXPXLXaX, $ % $ pXPXLXLXaX$ pXPXLXLXe > : LXLXLXpXw c LXLXLXn % LXLXLXLXLXLXHX- % ; e = r : r r 0 r r r e r r r 0 r r r r r e r r r r r r r r q r r r r r e * y r r r r r r r r r r r r 0 r r r = % $ $ o dXxXxXxXxXxXcXcXcXcXnXcXdXnXxXcXcXxXnXxXnXnXxXcXcXcXcXdXdXdXcX.XdX.XzXdXdX@XdXcXcX%XdXdXdXdX X.X.X.XzX.X.XdX.X X.X.X.X.X.X.X.X.X|.|.|._._.|.^.(.|.(.|._._.(.`.^.(.(.!././.(./.(././.~.~.~.T.T.~.T.T.P.Y.U.U.L.P.P.I.K.n.b.T K ~ S S Q J ^ S D ! S S u S S Z c ^ Q ~ S S Q S S S S S S S Z S ! Z S K u S S S H S S Z ! S S K S S ! H S ^ S i K S Z S S S D S S F Z u u Q S S S S Q H S S S F K S S S S H K A u S S S S K S u F S S Z S S u i L S S S Z S S S S L S F i S S u S S u Z S S ^ K S S S S Q Z S H i S K ^ S A S Z K S ! K S S Q Z u ^ u c u u u > u u F Y T b.n.A.G.D.U.L.L.L.U.P.U.U.U.U.Y.L.L.S.L.G.H.H.A.A.A.A.h.A.A.A.A.h.l.h.A.W.h.A.A.H.Z.n.[ U P S S S S ^ ^ S ^ S D ! S S Q ! S ^ u S S ! S H u S F S S S S S S D S S S u K S Z ! S ! D S S Z Z Z i S Z Q S S S H S S S F S S A S S B H u K S H ! S H S S K S Q Z S S S u Z S S S S S S S S B K F M S Z u S S S Z S S S F u S Z Q S Z S Z i S S S Q B Z u u S c Z S ^ S Z C ^ Z S S S Z S S S S u F ^ Z S S S ! Z u u u u u y F J e.b.Z.G.H.H.H.G.G.G.H.S.H.G.A.A.A.A.A.g.A.h.A.j.Z.h.A.g.h.A.A.A.A.A.h.h.A.z.h.h.l.S.Z.b.[ I I I S ! ! Q u D S S c Q S S S ^ ^ ! S ! S u H S ^ ^ ! ~ S S S ^ S S ! ! S S S Q ^ ^ ~ Q ~ Q ^ H S S K Q Q S Q S c S ^ ~ S S ! ^ S ^ ^ S ~ u ! / S ^ ^ S ^ S ^ S ^ ^ ^ S S c Q ^ Q ! Q ^ ^ ^ Z Q S S ! Q ^ S S ! S S ~ S ~ Q S S S S S ^ ^ ^ ~ ! Q S S Q S H S ^ ^ ^ S S S S S ^ S S Q S ^ ~ S ! ~ S ~ ^ ^ Q Q ^ ^ ^ u ^ ^ S S u u u K Y e.b.G.Z.Y.I.I.T.T.T.T.I.I.T.T.I.~.~.~.T.~.~.T.~.(.~./././.(./.(._._._. X X.X{. XzX].].Q.[ _ ~ f P c S ! S S ! Q u Q ^ u / P i ^ u Q S ^ ^ S S S ! ^ c S S Q ^ c S J c ^ S ! ^ u / S K ^ ^ u ^ ^ ^ ^ S ^ S S S ^ S Q Q ^ S ! J ^ S Q S Q ^ ^ ^ ^ ^ ! ^ ~ ~ ^ u u ! ^ ^ S c Q ^ u u S n ^ ^ S ^ S Q ! c ^ ! ! S S S S ^ ~ ~ S C ^ ! S Q Q S ! ~ ! S S S ! ~ Q Q Q S ! Q ^ ^ S S Q S ! S ! S ~ u S / Q Q ~ ^ ~ S Q ! ~ u u u u i i ` c.F.].~.(.(.(.^.(.(./././.~././.(.(.^.|._._.|.^.(.(.(.(.(.^.(.(.(./.(./././././././././.~./././.~.(.~.~./.T.~.T.~.T.T.T.T.U.P.T.U.L.L.L.L.L.L.H.H.A.", "m m m m m m m m m m m m m m m m m m m m @.m m m m m m m m m m N m m m m m m N m m N m N N N m N N V N M A M N C C V C C C A C C C C Z C ' { ' ' u : e = y r r r r : r r r r r r r * y : r r r r r r r r r r r r r r r r : r r r r r r r r r r r : : > gXLXLXLXn $ o o n LXLXLXIX sXLXLXLX% * * LXLXLXpX* ' LXLXLX' $ LXLXLXLXLXLXgX% % % ; ; r : 0 r e r r r r r r r r r r r r r r r r r r r r r r e r r r r r 0 r r r r r r r 0 e r r r r r : r r r = $ $ o o nXxXxXxXxXcXcXmXcXcXcXcXJXnXxXxXxXcXdXnXxXxXnXcXcXcXcXcXcXdXcXdXdXdXdXdXxXdXdXdXdXdXdXzXdXdXdXdX@X.X.X.X.X.X.X.X.X|..X.X|.|..X|.|.|.|.`.`.`.`.^.^.`.{.(.|.(.(.(.(.(.(./.(././././.~./.~.T.~.(.T.~.T.T.T.T.T.U.Y.U.L.L.D.F.b.b.` Y J S K u u u u u u S S u u u u u A u u u u i u u u u y u u u u u u u u u u q u r u u u y q u q u q u u u q u u u u u u u u r u u u u u u q A u u u q u u q u u C u y q u u u y N t u M u u q u > A q u u q u u y u u u q u r q q u u u u u q u u q u u t u q u q u u u q u u u q u u u u u u u y q u u u u u u u A A Z q u A Y Y T b.e.G.A.H.U.S.L.L.L.L.U.U.U.L.L.L.L.L.L.L.K.H.H.A.A.A.A.Z.g.h.h.h.S.h.h.A.A.A.A.W.G.A.A.Z.b.` Y I K S u u Z u u u u u A u u u u S S u u u u u u u u u u q u y u q u u u u u u u u y u u r u u u u u u u q u y u q u u u u y u u u u u u u u u q u q u u u u q q u u u u A u u q N t N u y u q u u u u y u u y u y u u q A u q u u q u u u q u u y u u u u y m q u u u u A u u u u u u u y M u u u u u r u u y u u u ! F G Y Y b.b.H.L.U.H.H.H.H.H.H.S.S.A.A.S.G.H.G.A.A.A.A.h.g.A.A.A.A.A.A.A.h.A.A.j.A.Z.A.A.l.k.z.A.g.d.e.T U U Z Z u u u q u u u u u u u C u u u A K i u A u u u u u i u u u u S u i i u F u u u i F u i Z i u u K u u u S u K S c i H S K c S K c ! ) u c J i K K c I c K S c c K S S c K S c K S c H K u K i K u u u S u u i u u u u u u u i u u u A u u u K u u i u u H u u i S K i S u S u u K K K S i S u i u S u u D u K u u u i u K ` ` b.n.Z.F.K.I.Y.T.I.T.T.U.T.T.T.T.T.I.~.I.~.T.~.~.~.~./././.(.(./.(._._.`..X`. X.X_.|.dX|.].Q.Q.m.c.` ~ 8.' c ' c ' ' c ' c ' ' c ) ' ' c c ' c ' ' Q ' c ^ c ' ^ _ c _ i ' K c ' ' i ' c c ' K c ' ^ c c ' c c S ^ c ^ K S c J c K c S c S c K S K c i S c i ' ^ ) K c ~ S i ' ^ ] ^ J ' S c S c Q S i ' i K c S n c K u u S i K S i K u K u i S K u u K K u i J K J i u Z K i D i S i S i K u S i u K i J i K u S i K S c ^ ) ] c.b.n.].!./.(.(.|._.|.^.(././././././.[.(.(._.(./.`.(.(.(.(.(.(./.^./.(.(./.(./.~./.~./././././././.(.~.~.~.T./.~.T.~.T.T.T.T.T.P.P.U.U.U.L.H.L.L.D.H.S.", "m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m N N m N N N m N N N N V B V V A N N C B B C B B C C B C A C ' ' ' ! y ; ; ; ; y = r r r q e r r r r r r r r r e r r e r r r r r r r r r r r r r r r r r r r r r r r y y : IXLXLXLXQ & $ o $ c LXLXLXgX$ pXLXLXLX% ; * LXLXLXpX: ' LXLXLX{ $ c UXLXLXIXc f & $ % ; ; 0 : r r r r r r r r r r q r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 * r : = ; % $ o nXdXmXvXxXcXcXnXxXxXnXnXcXxXxXnXxXxXJXnXcXcXnXcXcXcXcXdXdXdXdXdXdXdXzXzX@XdXdXzXzXzX.XdXzX.X@X.X.X.X.X.X.X.X.X.X|..X|..X|..X X|.|._.|._.}.`.^._.(.(.(./.|.(.(.`.(.(./.^./././.^.^.~.~.~.T.T.~.T.T.T.T.T.T.P.P.U.P.Y.P.L.F.Z.F.b.e.e.v.Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y G Y Y Y Y Y F Y Y G Y G Y F G F Y F Y K U Y Y Y Y Y G Y G G Y F F Y F K F F Y G G G G Y F G Y F F F G Y G G Y G Y G G G G G Y G G G G G G G G G G G G G G F G G G G G i G u G G G G G G G G G u F F G G G G G G G G Y i G G G G G Y G G G G i Y U G F F G F Y Y Y Y Y i G U U Y Y Y Y Y T e.e.Z.S.S.S.H.S.S.S.Y.L.L.U.U.L.L.L.U.K.L.L.L.L.H.H.A.A.g.A.A.l.l.A.l.A.h.A.A.A.A.A.A.A.A.A.A.h.A.A.Z.Z.Z.e.b.e.Y Y T v.Y Y Y Y Y Y Y Y Y Y Y Y D Y Y G Y G Y U G Y G G G Y G Y G Y D U Y Y G Y G e.Z D Y G G G G Y Y F H Y F G G G Y G Y Y G G G Y H Y G G F G G Y G Y G G G G Z G G G G G G G G G G F G G G G G G G G U G G G G G G G G G F G G G G G G G Y D G G G G Y F Y G G Y G G Y G Y Y G Y G Y Y e.b.b.b.b.b.b.b.b.b.n.F.K.L.Y.U.Y.I.H.H.H.H.H.h.H.A.S.A.A.H.A.h.A.h.A.h.A.A.A.z.S.A.A.h.S.A.h.A.h.A.h.h.A.h.l.z.l.e.j.e.e.T Y Y Y Y Y Y Y K F Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y ` Y Y ` e.Y Y Y Y c.Y Y c.c.I Y e.Y c.Y ` [ c.c.c.c.` [ c.Y c.b.` v.` c.` [ v.` c.c.` c._ [ c.` c.` ` _ ` ` c.c.c.b.v.[ _ ` c.[ c.c.c.` c.[ c.[ Y ` b.c.T Y Y Y Y e.Y Y Y Y Y c.Y Y Y Y Y Y c.Y Y c.Y Y Y Y e.Y ` Y ` Y [ Y c.Y c.Y ` e.c.` ` Y U Y ` Y Y ` e.Y c.Y e.` T b.b.n.Z.L.K.I.I.T.L.I.T.T.L.R.T.L.T.T.T.T.~.T.T./.~.~./.(.~.^.(.(.(._._._._._._.|.'.'.'.|.'.'.].'.m.m.n.[ c.M.c.M.c.c.M.c.M.c.M.c.M.c.c.M.{ c.b.c.c.c.c.c.c.c.c.c.c.M.c.c.M.c.c.c.c.M.c.c.m.c.c.c.m.[ c.c.c.c.c.c.` c.c.c.c.c.c.c.[ ` [ v.b.` c.c.c.[ c.{ b._ c.[ ` c.c.c.c.[ c.` c.c.c.b.[ c.c.c.c.b.c.c.c.c.v.c.` [ [ [ c.c.` c.c.c.` Y c.` [ ` c.[ Y v.b.c.c.` ` ` _ c.Y [ ` c.c.c.` Y ` ` Y v._ [ T c.Y [ U c.Y ` Y ` [ [ b.b.b.F.K.].].~.^.(.`.|.`.|.(.^././.(./.{.^.^.`.(.`._.^.`.(.(.(.(.^././.(./.(./.(./././.~.~./.!.~./.~.(.~.~.T.~.~.~.T.T.~.T.T.T.T.T.T.T.U.U.T.U.D.H.U.L.H.S.S.", "m m m m m m m m m m m m m m m m m m m m m m m = m m m m m m N m m m m m N m m m m m N N B N B N N N N B M C B C B B C B C C C C C C Z C ' ' ' S u > e > r r r r r r r r r r r r r r r r t * * y q r * r r r r r r r r r r r r r r 0 r r r r r r = r > gXLXLXLXc $ $ - o f LXLXLXgX sXLXLXLX& % % LXLXLXpX% c LXLXLXc $ o IXLXLXIX $ $ $ % % ; 0 r ; r r r r r r r r r e r r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r r r r e r r : r y r ; % $ o dXdXnXxXzXvXcXxXxXnXxXxXnXJXxXxXcXnXnXcXnXcXnXnXcXzXcXmXdXcXdXdXdX.X.XdXdXdX.X@X.XzXzX.X'. XdX.X.X.X.X.X.X.X.X.X X X.X X.X|. X|.|.{.|.|.[.^.`._.(.(.(.(./.^.(.(.(./.(.^./.(.!./.~.~.~.~.T.T.~.T.T.T.T.T.P.P.T.U.U.H.P.Y.L.Z.S.S.n.b.b.b.e.b.e.e.b.b.b.b.e.e.b.e.b.e.e.b.e.e.e.e.e.e.e.T e.e.e.e.T e.e.e.T e.T e.T e.T e.T e.e.e.e.e.e.e.e.e.e.e.e.e.e.T e.e.e.e.e.e.e.e.e.e.T T e.e.e.T T e.e.e.T T T e.e.e.e.T e.T T w.e.e.T T e.e.w.T T e.w.w.e.e.T e.T e.e.T e.e.e.w.e.e.T T T e.e.T T w.e.e.T e.T e.w.e.T e.e.e.T e.e.e.e.e.T e.e.T e.e.e.e.e.e.T e.e.e.e.j.b.Z.Z.F.S.H.L.H.K.A.L.L.L.L.L.U.U.L.L.L.L.L.L.H.H.H.A.A.A.A.h.A.l.h.A.z.A.h.h.A.h.A.A.A.A.h.A.A.Z.H.G.Z.Z.Z.Z.Z.b.n.b.e.e.b.b.b.e.b.b.b.b.b.e.b.b.b.e.b.b.b.b.b.b.b.b.b.b.e.b.e.b.e.b.b.e.b.b.b.e.c.e.e.b.e.b.b.e.b.e.e.b.e.b.e.b.e.b.b.e.e.b.b.b.b.b.e.b.n.b.b.b.b.n.b.n.n.n.n.F.n.n.n.F.F.n.n.n.F.n.n.F.n.n.n.n.n.F.n.n.F.n.n.n.n.n.F.n.F.n.b.n.n.b.b.n.b.n.b.n.b.F.b.n.n.b.n.n.b.n.n.b.F.b.b.n.n.F.F.n.n.F.L.K.Y.Y.I.Y.R.Y.U.Y.!.T.R.R.L.L.H.K.L.H.H.H.H.H.H.S.H.S.G.G.A.H.A.A.A.S.S.A.G.A.S.H.A.A.A.A.A.h.h.h.A.A.G.A.G.A.A.W.e.e.e.e.e.e.e.e.e.e.e.b.e.T e.e.e.e.e.b.e.b.b.b.e.b.b.b.b.b.b.b.b.b.b.b.e.b.e.b.b.b.b.b.b.b.b.n.b.b.e.n.b.n.n.n.F.n.n.n.n.n.n.n.n.n.F.n.n.n.F.n.n.n.F.n.n.n.n.n.n.n.n.F.n.n.n.n.n.n.F.n.n.n.n.n.b.n.n.n.n.b.b.n.b.e.b.b.b.b.b.b.b.b.e.b.n.b.n.b.e.b.b.b.b.e.b.b.b.b.b.b.b.n.b.b.b.n.n.b.b.n.b.b.n.n.n.F.F.n.n.b.n.b.b.b.b.b.b.Z.b.F.S.U.K.Y.T.T.T.T.T.I.Y.T.T.T.T.U.T.T.K.~.~.T.~.~.~.~.~././.(.(.(.(._.|.|.|..X|.`..X@X.XdXdX'..X].].'.Q.'.Q.Q.Q.m.m.Q.Q.].'.Q.m.m.Q.Q.Q.Q.n.m.Q.Q.].n.Q.Q.Q.Q.Q.n.].m.n.Q.].m.Q.m.m.].Q.m.Q.n.m.n.].n.Q.Q.Q.Q.F.n.n.n.F.n.n.n.F.n.F.n.n.n.n.n.F.n.F.n.n.F.n.F.n.n.n.F.n.F.n.n.m.n.n.].n.n.n.Q.n.n.n.n.F.n.b.F.n.n.b.n.n.n.n.n.b.n.n.b.n.n.n.n.n.b.n.n.n.b.b.F.n.n.n.F.n.n.n.n.b.n.b.F.n.n.n.n.b.b.n.n.n.n.n.n.n.F.n.F.n.n.n.n.n.Q.!.T.T././.(.(.(._.{.`.(.`.(.(./.(./.(.(.(.^.`.^.`.{.(.(.(.~.^./.(./.(./././././.!.~.~.!.~.~./.~.~.~.~.).~.~.~.~.~.T.~.T.[.P.T.T.T.U.T.P.U.P.P.D.H.H.H.S.", "m m m N m m m m m m = m m m m m m m m m m m m m m m m m N m N B m m m m N m N m B m B N N B N B B B N B C V N C B C B C B C C A C Z Z C c ' ) c u : e : 0 ; r r r r r r r r r r r r : r 0 : y : r 0 y r r r r r r e r r r r r r r r r r r r r r r r : pXLXLXLXsXo sXPXsXpXLXLXLXsX$ M.LXLXLX% $ $ LXLXPXpX& c LXLXLXc $ $ gXLXLXgXo o $ % % ; ; r r r : r r r r r r r r r r r r r r r r r r r r r r r r r r r : r r r r e r : r r r r r : * r r : : r % % $ o o fXcXdXxXxXvXzXxXxXxXfXxXxXdXcXcXvXnXnXJXzXmXnXdXcXcXcXdXmXdXcXzXxXzXxXzXdXdX.XdX.X.XzX.XdX.X.X.X.X.X.X.X.X.X.X.X.X.X|..X|.'.|.|._.|.|._.(.(.(.(.(.^.(.(./.(.(.(.(.(./././././././.~.~.~.~.~.T.T.T.T.U.P.T.P.T.P.P.P.P.Y.L.L.S.Y.Z.Z.Z.Z.n.Z.n.Z.Z.Z.Z.Z.j.n.Z.n.A.n.b.n.f.h.b.b.e.e.Z.Z.e.e.e.j.e.j.e.e.j.j.d.Z.j.g.b.j.b.j.j.b.j.e.b.e.Z.j.e.e.e.e.j.e.j.e.e.j.e.j.e.e.e.e.j.e.f.e.e.j.b.j.a.e.j.e.e.e.e.e.e.e.e.f.i.e.e.s.e.a.e.e.e.e.i.e.e.e.e.e.j.s.e.y.e.p.e.e.e.e.e.e.j.s.e.e.w.e.d.d.e.e.e.f.e.e.s.e.j.e.e.j.i.e.e.e.j.Z.e.e.e.e.j.j.e.b.e.e.Z.e.j.j.Z.j.Z.A.A.A.D.H.H.S.H.U.L.L.L.L.U.L.L.L.L.K.H.L.H.H.H.G.G.A.A.h.A.z.h.l.A.h.A.A.A.Z.h.A.A.A.A.A.A.A.A.G.A.H.S.Z.Z.Z.F.Z.Z.F.Z.Z.F.F.n.Z.F.Z.Z.h.F.Z.F.F.Z.H.K.F.F.F.F.G.G.Z.F.Z.h.F.n.Z.F.Z.Z.z.F.Z.n.n.Z.S.Z.n.z.n.Z.n.k.Z.Z.Z.Z.Z.Z.n.Z.n.S.F.F.Z.F.F.S.L.K.F.K.F.F.U.I.].F.F.].I.I.].K.F.].L.K.].].K.].I.I.Q.K.K.].XXQ.].].].].L.].].K.Y.K.].F.J.].F.].U.K.].F.Q.K.L.F.L.F.P.n.P.A.K.F.F.K.A.L.].Q.F.].K.~.].!.!.].(.^.!././.(.(./.~.~.~.T.U.I.L.L.L.L.H.H.S.Z.A.H.S.S.S.S.S.S.S.A.S.A.A.S.S.S.G.h.A.h.h.A.A.h.A.A.A.A.l.G.A.h.Z.A.Z.Z.Z.Z.e.A.Z.e.b.Z.n.h.Z.Z.b.Z.n.n.F.Z.n.Z.S.Z.Z.F.Z.Z.F.Z.F.Z.F.Z.Z.Z.Z.n.Z.F.Z.Z.F.F.Z.F.F.F.Y.F.F.S.F.K.F.].Y.F.F.K.].R.!.F.].].].].K.].^.].!.!.!.~.].].[.].].].~.].].].[.].K.].].].Q.].K.].P.Y.K.F.K.F.Z.F.Z.n.F.Z.Z.n.Z.F.Z.Z.A.F.Z.F.F.F.D.F.F.Z.F.F.K.F.F.F.F.K.F.F.K.F.F.F.G.F.F.F.S.F.F.F.F.K.Z.F.F.F.K.Z.Z.F.F.F.H.L.L.L.U.I.T.T.T.U.U.T.U.U.U.U.R.Y.T.T.T.T.~.~.T././.T.!.~./././.^.(.^.(.`.{.|._.|.|.dX'. X X XdXdXdX'.'.].'.'.).].].'.'.].'.].].].].(.'.].].].].].].'.^.].].].].].'.].].].'.].].].].].].].'.].'.].|.].].].].'.].].].].].].].].].K.].].].].].Q.K.].].~.].Q.Q.].].].K.].^.].].].^.].].].~.].T.].!.]._.!.Q.].K.].K.].Q.].].K.L.U.L.].].K.U.L.K.Q.].L.P.].F.].].F.H.Y.].F.Q.F.K.].K.F.F.].L.L.F.].L.P.K.].Y.Q.P.F.].F.F.].P.Y.K.Q.K.K.Y.].!.!.~.(.(.(.^.(.(._.|./.(.^.(.(.(./.(.(.(.`.(.^.^.(.(.(.(.~.(././.~./././././.!.~.~.~.~.~.~.~.~.!./.~.~.~.~.~.~.~.T.~.T.T.T.T.T.U.T.P.P.P.L.L.L.H.H.S.S.", "@.m N m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m N N N N N B N N N N B N V B N B N N C N B C C B C C C C C C C C c ' ! n y : r r r r r r r r r r r r r r r r y * y : * r r e r r r y * r r 0 r r r r r r r r r r r r r : e 0 e { LXLXLXPXf { IXLXLXLXLXLXc o sXLXLXLX% $ n LXLXLXsX- c LXLXLXf $ IXLXLXIX o , o & % ; 0 ; 0 r r r r r q r r r r r r r r r r r r r r r * r r r r r r r r r r r r r r r r r r r r r y r : y r : ; & o o dXdXnXxXcXzXJXxXxXxXxXnXnXxXnXxXcXnXcXnXnXcXnXcXcXcXdXcXdX.X.X.XzX.X.XdXdXdXzXdXdXzXdXdXdX.X.X X.X X.X X.X X.X.X|..X.X X|.'.|.|._.|._.}.^.(.(.(.|.(.|.(.|.(.(./.(.^./././././././.~.!.~.~.T.~.T.T.T.T.P.U.P.P.P.P.P.P.L.L.L.L.H.L.H.K.G.G.A.A.S.D.F.Z.G.Z.G.G.D.G.A.l.A.h.A.G.A.A.j.Z.j.g.j.Z.h.j.h.h.j.j.j.Z.a.z.l.l.G.e.Z.Z.h.h.h.l.h.j.Z.h.h.G.j.g.g.z.k.e.j.j.j.j.h.A.h.h.j.j.j.f.j.j.Z.g.f.j.g.j.s.j.f.f.k.a.s.j.e.j.j.d.j.a.s.e.s.f.s.j.j.s.s.j.a.j.j.e.f.f.s.j.j.j.a.j.a.j.j.f.d.f.d.d.s.a.a.a.e.e.z.j.a.g.A.j.a.l.G.A.h.h.g.A.h.Z.h.h.h.A.A.h.Z.Z.g.j.A.A.A.S.h.S.G.H.L.S.F.L.H.L.L.L.K.U.L.L.L.L.K.H.L.H.A.A.A.A.A.A.A.h.h.h.A.A.h.A.A.A.A.A.A.A.A.A.A.A.A.Z.H.h.J.h.K.H.K.H.L.L.L.L.H.G.U.F.K.H.K.Y.K.F.U.K.K.K.K.L.K.I.K.L.K.H.R.F.G.G.H.Z.K.L.L.D.H.K.G.A.K.K.G.G.G.Z.H.l.S.H.Z.D.L.G.G.Z.A.G.S.Z.H.L.L.F.U.T.K.U.!.T.~.U.!.!.T.~.T.].Q./.!.!.!.!.!.!.].!.!.(.!.(.].(.~.{.^.!.~.].~.~.!.!.Y.^.Q.T.T.Y.T.L.T.L.K.(.U.~.Y.T.U.].].(.L.Y.Y.!.].Y.!.K.K.Y.T.Y.!.U.!././.(.(./.^./.{.(././././.~.T.T.T.Y.U.L.U.H.H.H.H.H.H.G.S.G.G.H.A.A.A.A.A.A.A.A.A.A.S.H.g.G.A.A.A.A.A.A.A.l.l.A.A.A.h.A.Z.h.A.j.Z.A.A.z.A.A.S.S.F.H.D.S.A.l.H.A.H.S.L.F.H.H.K.K.K.K.K.K.K.K.K.L.K.H.K.K.K.L.K.Y.~.K.K.K.L.!.K.!.L.!.!.!.Y.!.!.!.!.(.~.~.(.~.~.'.].(.].(.]._.].].^.^.(.Y.!.^.^.~.!.(.~._.]./.~.~.!.].!.~.].].Y.!.K.K.T.K.K.K.Y.L.G.H.K.F.K.Y.D.U.F.L.K.L.U.K.L.L.I.Y.K.U.K.K.I.K.K.R.K.K.Y.U.U.Y.K.Y.Y.K.K.K.Y.P.P.K.K.K.K.K.L.K.H.F.L.K.U.Y.Y.T.U.U.U.T.U.T.U.U.U.I.Y.U.T.T.T.U.~.T./.T.~.~././././.(.(.(.(.`._.|. X|.|..X'..XdX@X'..X'.zX'.'.JX'.'.'.'.'.fX'.JXxX'.zXxXJX'.'.'.dX_.'.'.'.].'..X|.'.'.hX'.'.'.'.'.'.'.dXdX.X'.'.dX'.'. X.X'.'.'.].'.'.'.|.]._._.^.(.!./.].~.~.!.!.].^.!.!.~.(.~.(.(.{.(.(.].|.~.].]..X{.(..X_.]..X'._.]. X_.]._.!.~.E.(.!.T.].(.~.!.!.Q.~.K.].!.Y.!.].!.P.!.!.!.!.K.].!.P.^.!.^.P.!.Y.!.K.!.!.!.^.Y.!.].Y.!.Y.!.[.~.Y.~.P.].!.!.!.]./.~.E.R.!.].(./.(.(.(.(.(.|.(._.(.(./.(.^.(.(.(.^.`.`.`.(.(./.~.(.~.(./././.~.!././.~.~.~.~.~.!.!.~.~.(.L.~.T.~.~.~.T.~.T.~.T.T.T.T.T.T.U.T.P.A.L.L.L.S.H.S.S.", "m m m N m N m m m m m m m m m m m m m m m m m m m m m m m m N m M M M N M M M M N N N N B B B B N V B B B B C B B C B C C C C Z C C G C S ] / S > ; ; : r ; r r r r r r r q r r r r r r r r r r r r r r r e r 0 r r : 0 y : r r r r r r r r r r ; y ; ; HXLXLXLXLXgXIXLXLXLXLXHXo $ pXLXLXLXIXsXIXPXLXLXsX$ n LXLXLXc % $ IXLXLXPXf n o $ % % % * r r r r * r r e r r r r r r r r r r r e r r r r r r r r r r r r r : r r r r r r r r 0 r r r r r r y : * $ $ $ .XcXdXfXxXxXdXxXxXxXcXxXxXxXxXxXnXnXxXnXnXxXnXvXcXdXdXzXzXzXzXzX.XdXdXdXdXdXdX.XzX'..X.X.X.X'.'. X X.X|..X|..X.X.X|.|.|.|._._._.`.`.`.`.`.(.(.(.(.(.(.(.(.(.(.(.(./.(.(./.[./././.~.~.~.[.U.T.T.U.T.T.U.U.L.U.U.L.U.L.L.L.A.U.L.S.L.S.S.L.S.L.L.L.H.S.U.H.L.D.G.H.H.H.G.H.G.D.A.A.A.A.A.j.h.h.h.l.h.l.S.h.h.S.A.A.A.A.A.A.h.A.G.z.G.l.g.A.A.g.Z.h.h.h.l.g.l.l.l.h.h.h.g.h.k.h.h.h.h.h.h.l.l.h.g.z.g.g.z.k.k.k.k.f.k.f.k.f.k.k.f.f.f.f.z.k.d.k.k.i.k.a.k.k.g.a.k.f.f.z.f.g.g.g.g.g.f.d.k.k.k.k.f.f.h.f.k.f.k.h.z.h.h.h.h.h.A.h.l.G.A.h.Z.A.h.A.h.A.A.Z.h.A.h.h.A.A.A.W.A.G.W.H.H.H.H.H.L.L.H.L.H.L.L.L.L.S.L.S.L.Z.H.A.h.A.A.A.A.h.h.h.h.H.A.A.A.A.h.A.A.A.A.A.A.A.A.G.H.A.S.L.L.L.L.Y.U.T.Y.P.^.L.P.T.P.P.T.P.P.P.P.Y.U.I.T.T.T.T.U.L.U.P.U.U.L.L.L.L.L.L.L.U.L.L.L.L.L.L.L.L.L.L.H.L.H.L.L.L.U.D.L.S.L.L.L.L.U.U.U.T.U.~.~.T.~.T././././.(.(././.(.(./.(.(.(.(.`.(.(.(.(.(.(.`.`._._.`.(.(.(.(.).(./././././././.!./.~./././.(.~./.(.~.~.~.~./.~.~.~.~.~./.~.~.~.~.~.!./././.(.(.(.{.^.`.`.^.(.(.^./.~.~.~.T.T.T.L.L.H.H.H.H.H.H.H.D.S.H.G.S.G.S.S.A.S.G.S.S.G.G.A.A.A.H.G.A.A.A.A.h.J.S.A.S.S.S.S.S.S.S.D.A.H.H.H.H.S.L.S.H.H.S.H.S.S.Y.S.L.L.L.L.L.Y.U.U.T.L.U.U.U.P.P.Y.U.U.P.L.U.Y.Y.Y.T.T.T.T.~.T.~.~.~./././././././.(.(.(.(.(.^.|.|.(.(.(._.|._._.(.(.(.(.^.(.`.(.^.`.(.(.(.(.(.(./.(.~././.~./.T./.~.T.T.T.U.U.U.U.U.P.P.T.P.P.P.T.T.U.Y.U.P.T.U.T.T.T.I.I.I.L.~.T.~.T.~.~.T.T.~.U.~.Y.T.T.T.T.~.T.T.(.T.T.T.T.T.T.U.U.U.T.U.T.U.T.T.U.T.T.U.I.Y.I.I.T.T.T.T.T.~.T.~.T.~.~.~./.^./././.{.(.(.`.|.|._.|.`.|.'..X.X.X'..XzXdXdXdX.XdXdXzXzXzXzXcXzXnXcXdXzXnXdXdXdXdX X.X.X.X.X|..X'..X.X'. X@XdX'.'.dX.X.X'.@XzX.X.X.X@X.X.X.X'. X.X X|. X.X_.|.|._._.{.^.(.^.(.(.(.(.(.(.(.^._.(._._._.^.^.`.^.{.{._.(.|._.|.{. X X_.(.|.`._.(.}.^.|.^.^.^.(.(.(.(.(./.{.(./././././.{.^.^.~.(././.(.(./././././.~./././.~.^.^./.(.(././././.[.~.T.^.(.^.~.(././.[.^./././././.~././././.^.(.`.|.^.`.`.^.(.^.(.(.(.(.^.(.(.`.(._.(.(././.~.[.(.~.~.~.[.~.~.~.T.~.T.~.R.Y./.I.T.~.T.T.~.~.T.~.~.~.~.Y.T.T.T.T.T.U.U.U.U.L.S.S.H.H.S.S.", "m m m m m m N m m m m m m m m m m m m m m m m m m m m m m N m m M M M N V A M M B B N B N B B B B B N B B B B B B A V u C C C C Z C V C u u c ! y 0 : : r 0 r r r r r 0 r e r r r r r 0 r r r r r r r r r r r r r r * t y * r r r r r 0 r r r r y r * ; w IXLXLXLXLXLXLXLXLXLXgX- o z LXLXLXLXLXLXLXLXLX{ c LXLXLXf o o pXLXLXLXPXsXo $ % : * r r r r r 0 : r r r r r e r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r : : * * & o % JXdXdXdXxXcXnXxXxXvXxXcXxXxXnXnXnXxXnXcXcXxXxXcXcXcXdXzXvXzXzXxX.X.X.XdXdX.XzX.X.XzX@XzX.X.X X X.X.X|..X.X.X.X.X.X.X|.|.|.|.|._.`.(.(.^.(.(.(.(./.(.(.(.(././././.(.~./././././.T.~.T.T.T.T.T.T.T.U.U.U.U.U.U.U.U.L.S.L.L.U.L.G.L.L.L.L.L.L.L.L.L.U.U.D.U.H.L.H.H.G.G.G.H.G.G.H.A.A.A.A.h.h.h.h.S.h.z.z.S.A.A.A.A.A.A.W.A.A.A.J.h.g.A.G.j.j.G.h.h.h.h.l.h.l.l.h.h.h.g.h.g.z.z.h.h.h.h.l.h.h.l.g.A.h.g.g.k.k.k.k.f.f.z.i.k.a.z.a.f.a.f.i.k.k.d.f.k.k.k.i.z.k.z.k.k.f.k.g.d.k.k.g.f.g.f.f.f.d.k.f.z.f.f.k.j.l.g.g.h.h.l.h.Z.h.A.h.Z.A.A.h.A.A.A.h.A.h.A.h.A.Z.A.A.A.A.h.W.A.H.h.S.H.H.H.L.S.L.L.L.L.L.H.U.L.S.L.H.D.H.A.S.A.h.g.g.A.A.h.h.h.A.A.A.A.h.Z.A.A.A.A.A.A.G.A.H.H.H.H.L.L.U.L.L.L.T.P.P.Y.P.P.P.T.P.P.P.P.P.P.I.Y.T.U.T.U.T.I.U.L.L.L.L.L.L.U.L.Y.I.L.L.I.U.L.L.L.S.L.L.H.H.P.L.L.H.L.L.L.L.L.L.L.L.U.T.U.T.T.T.~.T.~.~.(.!././.~.!./.(././.(.(.(.(.(.(.(.(.(.(.(.`.(.(.(.`.^.^.`.(.(.(.`.!./././././.[./././././.{./.~.(.~.(./././.~.T././.!.~./.~.~./.~.!.~./.~././.(.(._._.^.`.^.^.(.(.(.(.(.~.^.~.~.I.T.U.L.L.L.L.H.L.H.L.H.H.H.H.S.S.S.S.S.S.S.G.H.A.A.G.A.A.A.A.S.A.A.A.h.A.H.S.S.S.S.S.G.S.H.H.H.H.H.H.S.S.L.D.H.U.S.L.S.L.S.L.S.K.Y.L.U.P.P.P.L.I.L.T.L.U.T.U.U.P.U.P.P.Y.T.T.T.T.T.~.~.~.~./.~./././.(./.(./.(.(.(.(.).^.{.(.|.|.^._._.(._.(._.(._.`.(.(.(.(._.(.(.(.(.(.(.(.^./.^.~././.T.T.T.T.U.T.T.U.T.U.P.P.P.U.U.U.P.T.T.U.U.T.U.U.U.T.U.T.T.I.~.R.~.T.~.T.T.~.T.T.T.U.Y.~.T.~.T.~.~.T.T.T.T.T.T.T.T.U.U.T.U.T.U.T.U.T.T.T.T.U.T.I.I.T.T.I.T.T.T.T.T.T.T.~.T.~.~././././.(.(.(./.`.|.|.|.@X.X.X.X.XdX.X'.@XdX.X.XdXdXdXdXdXzXzXzXzXdXzXzXzXdXdXdXdX.X.X.X.X.X|..X'.|..X.X.X.X'..X.X.X.XdXzXdXzX.XxX.XxXfX'..X|. X@X|.'.|.|.`.|.|.|._.|.|.(.(.`.(.(.(.(.(.(.(.(.(.(._._._._.`.(.(._.`.{.(._._._.|.|.{.'. X|._.`.}.|.^.{.`.(.(.(.(.(.(.(.^./.(./././.(./.E./.^.[.(.^.(.(.(.(./././.^././././.[.(./././.(.(.(././.~.(.~.(.~.^.(.~./././.~.T./.~.~./.~./././.(.(.(.(.(.[.(.(.`.(.(.{.E./.^.(.(.(.^.(.(.[.(./././.(.T.~.~.~.~.~.T.T.~.~.~.T./.~.~.~.~.~.~.T.T.~.~.~.T.~.R.Y.T.T.T.T.T.T.Y.L.L.L.U.H.H.G.G.S.", "m m N m m m m m N N m N m m m m m m = m m m m m m m m m m N m m M M M N N N C M N B B N B N B B C N B C B B B B B A C C B Z C F C C C A u u u u u r : : r r r r r r r e r r r r r r r e r r 0 : r r r r r r r r r r r r r r r r r r r e r r r r ; r e ; $ - pXLXLXLXLXLXLXPXLXLXLXo o sXLXLXLXPXb gXLXLXsX$ n LXLXLXc $ o w IXLXLXLXBXo $ % % > * r r r : 0 r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r r r r r e * > * % $ o u JX@XdXfXdXdXdXcXcXvXcXdXcXnXxXnXxXxXxXcXxXnXxXcXcXcXdXcXdXdXdXzXzX.XdXzX.XzX.XzXzXzX.X.X.X.X.X.X X`. X|..X|..X.X.X'.|.|.|._._.(.|.`.^.(.(.(.(./.(.(././././././././././././.!.~.~.~.~.T.T.T.T.U.U.T.L.T.U.U.L.U.P.P.L.S.L.S.L.L.D.L.S.L.S.S.L.A.P.S.U.U.H.L.S.L.L.H.L.H.H.H.S.A.A.A.A.A.G.A.A.l.h.l.A.A.A.z.A.h.A.A.A.h.A.A.A.z.G.g.A.h.Z.A.A.A.A.h.l.G.h.h.l.h.h.z.z.k.h.g.g.h.g.h.h.h.h.h.h.D.k.g.k.g.z.k.k.f.a.f.i.f.i.a.a.k.a.a.k.i.z.i.z.i.a.k.i.f.g.g.a.f.f.f.k.f.f.f.f.g.g.g.d.i.k.k.k.f.a.f.j.h.j.g.h.h.h.l.g.S.g.A.A.h.A.A.A.A.A.A.A.G.A.h.Z.A.A.h.h.h.A.A.A.A.A.A.H.H.S.G.G.H.H.S.L.L.H.L.H.S.S.S.S.H.D.S.A.A.A.A.h.G.g.A.A.A.A.A.A.A.A.A.A.A.h.A.A.A.A.A.S.H.H.H.H.L.I.U.U.U.T.T.P.T.P.T.U.P.T.P.P.P.Y.Y.P.Y.U.U.T.U.U.T.U.U.L.U.U.U.L.U.L.L.L.L.K.I.I.U.L.L.L.K.Y.L.L.H.H.H.L.H.L.L.L.L.L.L.L.L.I.U.I.U.T.~.T.T.~.~.~./././.(././././.^.(.{.(.(.(.(.(.(.(.(.(.].(.(.^.^.^.(.(.{.(.(.(.(.(./.(.(./././././././.(./.(.(.~./.(./.~./././.!./.~.~.~.~.~.~.~.~.!./.(./.(._.(.(.(.`.`.`.(.{.).(.(.^.(./.~.T.T.T.L.L.L.L.L.S.U.D.L.L.S.H.S.S.S.S.S.H.G.S.H.Z.H.A.H.A.A.A.A.A.H.A.H.z.A.G.H.G.A.H.G.H.S.H.H.H.H.H.L.D.S.L.H.U.L.L.U.L.S.L.U.U.L.U.P.P.P.T.U.U.T.U.T.U.T.U.U.U.L.Y.P.T.P.T.T.T.T.T.T.~.~././././././.(./.(.(.[.^.^.{.[.{.{.(.(.(.|._.|.|.(.(.(.^.^.`.(.`.(.]._.(.(.(.(.(.(././././.[.T.~.~.[.T.T.T.U.T.U.U.P.P.P.P.P.Y.T.P.T.P.U.P.U.T.U.T.T.U.T.T.Y.R.Y.T.T.~.~.T.T.T.~.T.~.T.~.T.~.T.T.~.~.~.T.T.T.T.T.U.T.T.U.T.T.T.T.T.U.XXT.U.T.I.T.I.T.T.T.T.T.~.T.T.T.T.~.~.~./././.(.(.^.|.`.`._.|.|..X X.X.X'..X.XdX'.xX XzX.XzXzXzXzXdXxXzXcXdXzXzXzXzXdX.XzXzX.X.X.X.X'.|. X.X|..X'..X.X.X.X XdX'.dX.X.X'.xXzX.XdX'..X.X X|.|.|..X|.`.`.`.|.{._.^.(.(.(._.(./.(.(.(.`.^._._._._.(.(.^. X`..X`.{.|.(._.dX|.|.|.|.`.(..X(.`.(.`._.(.(.(.(.(.`.^.(.(.^.(./.(./.!.(./.(.(.(.^.(.(.(.(./././.^.~.E.(././.!./././././.[.!././.(./././.[.^././.(./.~.~.~./.~.~.~./././././.(.[.^.`.`.`.(.(.(.(.~.~.(.^.(.(.(.(.|.^.^./.~./.[.T.~.~.~.~.~.~.~.~.~.T.T.^.T.~.Y.~.~.T.~.T.T.~.~.T.T.~.~.T.~.T.T.T.T.U.U.T.L.L.L.K.H.G.S.S.", "m m m m m N m m N m m m m m m m m m m m m m m m N m N m m N B N N N M N V N m N N B N B N B B B B V C N C B C C C B C C C C C C C F C Z S t c u u e r r ; r r r r r r r r r r r r r r r r r r r r r r r r r r : r r r r r r r r r r r r r r r r r ; 0 * : % $ $ w n f c # sXLXaX o o - f c o $ o o $ $ $ o $ o $ $ $ o - f c c o $ % % % : 0 r r r r r 0 r r r r r r r r r r r r 0 r r r r r 0 e r r r r r r r r r r r r e r r r r : r r r : r : * % o c.zXdXdXdXdX@XvXzXcXzXcXcXcXxXnXxXnXnXxXxXnXxXxXcXdXcXcXdXcXcXdXzX.XzX@XzXzX.XzX.XzX'.zXzX'..X.X.X`..X'. X|. X|.|.|.|.`._.|._.|._.(.|.(.(.(.(.!./.(.(././.(./.~.^./././././.~./.~.T.T.T.T.T.T.T.Y.U.R.T.U.U.U.K.U.P.L.L.L.L.L.L.S.L.S.L.S.L.L.D.D.L.Y.D.U.U.L.L.L.H.H.L.G.H.H.H.H.S.A.A.A.g.g.h.l.A.A.l.g.A.h.A.A.A.A.G.A.A.A.G.G.h.G.h.G.g.A.h.g.G.l.A.h.h.h.l.h.h.h.z.h.k.h.j.g.g.g.g.l.l.k.l.g.k.h.k.k.i.f.f.a.a.a.a.a.k.a.a.a.k.a.a.z.d.i.a.z.a.a.k.a.a.a.g.f.k.k.i.f.f.f.f.g.f.g.f.f.f.f.i.z.a.z.j.k.f.z.z.h.h.h.h.h.A.h.A.A.A.h.A.h.A.A.h.h.h.h.h.h.A.A.A.A.A.A.A.A.A.A.A.S.S.G.S.H.H.H.H.H.L.H.L.L.L.L.H.H.A.A.H.A.A.A.A.g.A.g.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.W.G.H.H.L.L.L.U.U.U.U.T.T.T.U.T.T.Y.P.P.T.Y.P.P.Y.U.T.U.Y.T.T.I.U.T.Y.P.L.L.L.U.U.R.Y.R.I.U.L.U.L.L.I.L.L.L.L.T.L.T.H.U.L.L.L.L.L.L.L.I.I.I.T.T.T.T.T.~.T.~./././././././.(.(.(.{.^.{.(.(.(.(.(.(.`.^.(.(.(.`.(.(.(.(.(.(.{.].(./././.(./.^./././././././.!.).(./././.~.(./././.!./././.!.~.!./././././.(.(.(._.(.`.^.^.(.|.{.(.(.{.(.)././.~.T.T.T.Y.U.U.U.L.K.L.H.H.H.H.H.H.S.H.S.H.S.G.G.G.S.G.A.G.G.A.S.h.A.H.H.H.G.G.H.S.H.H.H.H.H.H.H.L.S.H.U.L.L.L.S.K.S.L.L.S.L.L.L.L.L.U.U.P.P.P.Y.T.U.T.U.T.U.U.P.P.U.L.P.P.P.P.T.T.T.T.T.~.T.[././././././.(./.[.(.(.(.^._.{.(.{.(.|./.|.(.^.|._._.`.`.(.(.(.(.(.(.(.(.).!.(./././.[.~./.~.T.T.T.T.T.T.T.U.T.T.P.T.P.P.P.P.T.T.T.T.T.P.T.U.T.I.U.T.I.T.Y.!.~.Y.~.T.T.~.T.~.T.T.T.T.~.~.T.~.~.T.~.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.XXT.T.T.T.T.T.Y.T.I.T.T.I.T.T.T.T.~.~.~.!./././.(.(.(.(.(.|._.|.|.|.|..X.X.X.X.X'..X@XdX'.zX.X.XdXdXzXxXzXzXzXzXzXzX@XdXzXzXzX'..X.X.X.X.X|.|..X X.X.X.X.XzX@X.X.X.XzX.X.X.X.X'.zX.X.XdX.X.X.X`.`.`.`.{.`.{.(.|.`.^.`.(.).(.(.(.(.(.(.(.(.(._.(._._.`.`.^._.`.{.|.'. X_._. X X|.`.`.`.`.`.|.^._.(.`.(.(.(.`.^./.[.(.(./.(./././.^.(.(.(.(.(.(.(.(.(.(./.(.^.[.~././././././.(.[.[./././.(./.~.(.!.~.[.(./././.~./.(.~.~./.~.~././.(./.^.(.^.`.(.^.`.(.(.{.^.^.(.(.(.(.(.(.(./././.~.~.~.T.~.~.~.E.XX~.~.~.~.~.~.~.R.~.R.T.~.T.~.~.T.T.~.~.~.T.~.T.T.~.T.U.T.U.U.L.Y.S.A.H.H.S.S.", "m m @.m m m m m m m m m m m m m N m m m m m m m M m M N N N N N N m N V N V N N B V B B B B B B B B C N C C C B F B C C C D C C Z C C Z A y y u y : r r r r r 0 r r r r r r r r r r r r r r r r r r r r r r r r r e r r : y r r r r q r : r r r r r * 0 * % % $ o $ $ o o o o - - o $ $ $ $ $ o o $ o o $ $ o $ $ $ $ $ $ & & $ , $ o & % % : : : r r 0 r : r r r r r r r r r r r r r r 0 * y r r r r r r r r r r e r r r y r r r r r r r r r * r r * % o !.cXzXzXdXdXzXcXcXzXcXzXxXxXcXcXcXcXxXxXxXxXcXcXdXcXcXdXdXmXdXdXzXvX.XdXzX.XxX.X'.zX.X.X.X.XdX'. X'.|. X|.'.|.|.|.|.|.|._.|.|._.|._.(.(._.(.(.(.(.(.(.E.^./././.!.(./.~./.~.~.T.T./.T.T.T.T.T.T.L.T.Y.T.P.Y.L.U.P.P.L.L.L.S.H.S.G.H.H.H.L.L.S.P.L.L.L.L.L.L.L.L.L.H.H.H.H.H.H.H.S.A.S.A.H.A.h.h.l.h.j.A.A.A.A.A.A.A.A.h.A.A.l.A.A.A.A.h.A.j.G.A.A.Z.j.h.A.A.l.l.l.h.h.h.h.h.k.z.g.g.f.a.k.g.k.k.k.k.k.k.f.f.a.k.a.a.a.a.i.a.a.a.a.a.a.a.a.a.a.d.a.a.a.f.f.g.g.a.k.k.k.f.a.k.f.k.f.f.k.f.f.f.z.k.f.f.k.f.g.g.h.h.g.l.l.l.g.A.h.g.A.h.h.A.Z.A.A.A.j.h.h.A.h.A.h.A.h.A.j.A.A.A.A.A.A.S.G.H.H.H.J.G.H.H.H.S.L.H.H.G.S.H.A.A.G.A.A.A.h.A.h.A.A.A.A.A.A.A.h.A.G.A.A.A.A.H.G.H.H.H.L.L.P.P.P.P.Y.U.T.T.T.T.T.T.Y.U.P.U.T.T.U.U.T.U.U.U.T.Y.P.T.U.T.U.Y.L.U.U.U.U.U.U.I.L.Y.U.J.I.I.L.L.L.P.L.P.P.P.P.T.L.L.L.L.I.U.U.U.T.Y.T.T.T.T.T.~.~.~.~./.~.(././.^.^.(.(.(.(.(.(.(.(.(.`.(.(.`.(.(.(.(.(.(.(.^.(.(.(.(.(.(./././.(.(./.).(./.(.(.[.(.(.(.(.(.!.(././././.T.(././.~.~.~.~./././.^.^.^.`.`._._.`.(._._.^.{.(.(.(././.!.~.~.T.T.T.T.U.U.L.L.L.L.L.L.G.H.D.G.H.H.H.H.K.G.H.H.A.H.A.H.S.S.S.S.A.G.H.H.A.L.D.H.L.A.S.L.L.L.S.L.L.L.L.S.H.H.L.L.L.L.S.S.L.U.L.L.P.P.P.P.U.T.U.T.U.T.T.U.Y.P.P.P.P.P.P.T.T.U.T.T.I.~.~.~.~././././.{./.(.^.(.(./.(.(.{.|.{.|.`.^.|.`._.^.(.|.(.|.(.(.(.(.(.(._.(./.).(.(.(.(.~./.~.~.~.T.T.T.T.T.T.T.T.U.T.U.T.T.U.U.U.T.T.U.T.U.T.U.U.T.T.T.U.T.U.~.Y.~.T.~.T.~.T.~.T.~.~.T.~.T.~.~.~.~.~.~.~.T.T.T.T.T.T.T.T.T.T.T.T.T.U.T.T.T.T.~.T.U.T.I.T.T.T.T.T.T.T.~.R.~./.~./././.^.(.(.`.`._.`.|.|..X.X'..X'.dX.X.X.X.XzXdXdXdXdXdXdXdXzXzXzXzXzXzXzXzXzX'.zX.XdX.X.X.X.X|.|..X.X X.X.X.X.X.X.XdX@XdX.X.X'..XzX@X'.dX|..X X.X|.|.|.|.{._._.|._.|.^.^.(.(.(.(.(.(.(.(.(.{.(._.(.(.`._._.(.^.(.`.|._.|.|. X|._.|.|.|.{.|._._._.|._._._.^.`.(.(.(.(.(.(.(.(.(.E.(.^.(.(.(.^.|.`.(.(.(.^.(.(.E.(.(.!.[.[././.~.^././././././././.(.^.^./././.[./.(./.~.!./.~.~.~./././.^.(.`.[.`.`.`.^.(./.(./././.(.(.(.(.(.(./././.~.~.~.[.T.~.~.XX~.~.~.~.T.~.T.T.~.~.T.~.T.~.T.T.~.T.T.T.R.~.T.T.~.T.T.T.T.T.P.I.L.U.H.H.H.A.A.", "m m m m m m m m m m m N m m M m m m m N m m m m M m M M N N V N m V N N N N B B N V B N B B B B B C N C C N B B B C C A C C C Z Z C Z C D y : e y y r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r : 0 : r r r r r * y r r r r r r * = % % $ o $ $ $ o o o o o $ $ $ $ $ $ $ o $ $ $ $ $ $ $ % o $ & $ % & - $ $ $ & % % * 0 : r r r r : r r r r r r r r r r r r r : e r r r r r r r : r r r r r r r r * r r r r r r r r r : : * % $ $ dXcX.XzXvXdXcXdXzXzXzXcXxXcXcXzXcXdX@XxXxXxXxXxXvXcXdXcXcXdXcXcX.XdXzXdXzX'.xX.X.XdX.XzX.X.X X'.|.|.|.|.|.|.|.|.`.|.`.|.|._.(.`.}.[.^.|.^.`.(.(./.(.^.(././.(././.!.~.!.~.~.~.T.T.T.T.T.T.T.T.T.T.U.U.T.T.P.P.U.L.L.L.U.L.H.L.H.H.D.L.G.S.L.L.Z.L.L.U.S.L.L.L.A.L.L.L.L.H.S.H.H.S.S.S.A.z.S.A.h.A.g.A.G.Z.h.h.A.A.A.A.A.A.A.A.A.g.A.A.G.j.A.A.j.h.A.h.G.h.A.l.A.l.h.h.h.h.z.g.g.g.g.z.j.g.k.k.g.k.g.f.f.f.f.a.a.f.a.a.a.a.a.a.a.a.a.a.a.i.a.a.a.a.f.a.a.a.a.a.g.k.f.g.k.f.f.k.k.k.f.g.f.f.d.i.z.z.k.h.f.a.x.g.l.h.h.l.l.S.j.A.A.Z.A.A.A.h.h.A.h.W.h.G.j.h.h.A.A.A.A.A.A.A.A.A.A.A.G.S.G.H.H.G.G.H.H.H.S.H.H.S.G.S.A.H.A.A.A.A.A.A.A.S.A.l.A.A.A.W.A.A.A.A.A.A.A.A.H.H.H.G.L.L.L.P.P.T.P.U.T.T.T.Y.Y.T.T.T.T.Y.T.P.T.T.U.T.U.T.U.Y.T.Y.T.Y.U.P.U.U.I.T.U.T.I.Y.R.L.U.U.K.L.L.L.I.P.L.P.L.L.L.L.H.L.U.U.U.U.Y.U.T.T.T.T.Y.T.~.~.T.!.~.~.!.!.E./.^.^.^.[.(.(._.(.(.(.(.(.(.(.(.^.(.(._.(.(.(.(.{.[.(.(.(.(./.(.(.(.(./.^.^./.^./.(./.(.(.(.(.(.(.(.(./././.(././.!.^.^.~./.~././.(.).(.^.(._._._.`.|.{._.^.`.(.(.(.).^.~./.~.T.~.T.T.T.P.U.L.L.S.S.D.H.H.G.H.H.H.H.H.H.S.H.h.H.H.H.S.H.S.G.H.H.H.H.H.S.H.U.S.L.U.A.L.S.L.L.S.L.U.S.L.L.H.L.U.S.U.L.L.L.L.L.U.U.P.P.U.T.T.T.T.U.U.U.T.P.P.P.T.P.P.P.U.T.T.T.T.I.~.~.~./././.^./.(.(.^./.(.(.(.^.(.(.(.(./.|.^._.^.|.(.(._.(.(.(.(.(.(.(.(.(.(.(.(./././.(.~.~.~.T.~.~.T.T.T.T.T.T.T.T.T.U.P.T.T.U.T.U.T.U.T.U.T.Y.U.T.U.T.T.Y.~.L.~.~.T.~.T.~.T.~.T.~.~.~.T.^.T.~.~.T.T.~.~.T.[.~.T.T.T.~.T.~.T.~.~.E.T.T.T.U.T.~.U.T.T.T.T.T.T.T.~.T.T.~.~.~./././././.(.(.^.(.|.`.|.|.|.'..X.X X.X.X.X.XdX@XdX'..XdXdX.X.XzXzXzXzXzXzXzXdX.XzXdX@X.X.X.X'..X.X X|.'..X.X|..X.X.X.X.X.X.X.X.X.X'.zXdX X|..X@X`.`. X X X_.|.|._._._.`.(.(.(.(.(.(.(.(.(.(.(.(.(._._.|.^.^.{.{._.`.`.{.|.{.{._.{.|.|.{. X|.|.|.|.|._.`.(.^.`.(.(.(.(.(.(.].(.(.(.(.^.(.(.[.(.(.(./.(.(.`.(.(.^.{.^.~.^././././.[././././.[.(./././.[.(./.(./.^.~.!.~.(.~.~.~.~./.~./././.[.(.^.(.(.^.(.(./.(.!././.(.^.(./.(.(././.~.~.~.~.T.T.~.~.~.T.T.(.T.~.~.T.T.T.T.T.T.T.T.T.T.T.T.~./.T.~.U.~.T.~.T.T.T.P.T.P.L.L.H.U.H.H.H.S.", "m m m m m N m m m N m M M m m m m m m m m m m m m M M N M N N V V M M N N V N N B m N B N B B B V B N B C C N C B C C C C C C C Z C Z C Z u 0 ; e e r r r r 0 r r r r r r r r r r r r r r r r r r r r r r y r r r r r r r r r r r r r r r r r r ; r y * ; * : - , $ $ $ o $ , o $ $ $ $ - % $ & $ , $ $ $ $ , $ $ - $ $ % % % % $ % & $ & % % ; 0 r r r e 0 r r r r r r : 0 r r r r r r r r r r r r r r e 0 r r r r r r r r r r r r * y y r r r : : * & o ' @XdXdXzXcXzXzXzXvXvXdXcXdXcXdXcXxXxXxXxXxXcXdX.XcXvXdXdXdXcXcXdXzXzXdXxXxX@X.XzXdX.X@X.X.X.X.X.X|.|.|.|.{.|.|.|.|.|.|.|.|.{.(.`.`.(.`.^.(.(.!.(.(./.^./.~.~.^.~.~.~.~.~.~.R.~.~.T.T.T.T.T.T.T.U.Y.U.U.U.P.U.P.Y.L.U.D.S.L.L.H.H.H.H.H.H.L.D.L.F.S.L.P.P.L.L.L.L.L.S.S.L.H.H.H.H.A.S.A.A.A.A.A.A.A.A.g.h.A.A.A.A.A.A.A.A.A.A.A.A.G.j.G.j.A.j.h.A.j.A.A.z.A.h.l.l.l.h.h.h.h.a.a.g.f.f.g.a.a.g.k.k.i.z.i.f.a.a.a.a.a.i.i.i.u.a.a.a.a.a.s.i.i.a.a.a.a.a.f.a.f.a.g.f.z.a.k.k.f.f.f.k.k.f.f.i.k.f.f.i.f.f.k.f.h.j.l.z.h.z.l.l.h.G.A.h.h.h.A.A.h.Z.A.A.Z.h.A.h.h.h.h.A.A.h.j.S.A.A.A.A.A.H.G.A.A.H.G.G.H.S.S.S.H.S.H.D.S.S.H.A.A.A.A.A.h.A.A.A.A.A.A.A.h.A.A.A.A.h.H.A.A.H.H.H.H.L.L.U.Y.Y.T.T.T.T.T.T.T.~.T.T.T.T.U.T.T.P.T.U.U.U.T.U.T.U.P.T.P.T.T.P.I.T.I.T.U.Y.Y.L.U.L.L.U.K.R.U.L.P.P.P.U.U.L.L.P.U.U.U.U.U.T.T.T.T.T.T.~.T.~.T.T.~.!.~.~.[.~.~./.(.(.(.(.(.^.(.[.(.(.(.(.(.(.(.(.(.(.`.(.(.(.(.(.(.(.!.(./.(.{.(.{.(.^.(.^.^.(.(.{.^.(.(.(.(.(.(.(.(.(././.!././././.T.~./.!./.(./.(.^.`.^.`.(.`.^.^._.`.(.(.(.(.{.(.(./././.~.T.T.Y.T.Y.U.L.L.L.L.H.L.H.S.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.A.S.U.U.S.U.D.L.L.L.L.L.L.U.L.U.L.L.H.L.L.L.L.L.P.P.L.L.U.U.U.U.T.T.T.T.T.T.T.T.T.P.T.P.P.P.P.T.P.Y.U.T.Y.T.T./.T.~././././.(.^.(.(./.(.(.(.(.(.`.(.`.(.|._.^.`.^.{.|.(.(.(.(.!.(.(.(.(.(.(.(.^.(.(./././.~.~.R.T.~.T.T.T.[.T.T.T.T.T.T.P.T.U.T.U.T.T.U.U.T.T.T.U.U.T.U.T.~.U.T.T.~.T.~.T.T.~.~.~.T.~.T.~.~.~.~.~.~.~.~.T.T.T.T.T.T.~.T.~.T.~.T.T.T.~.Y.T.~.T.~.T.T.T.T.T.T.~.~.T.~.~.~.~.~.~.~./.(.(.(.^.`._._.`.`.|.|.|.|..X.X XzX.X.XdX.XdXdXdXdXdX.XzX.XzXdXzXdXzXdXdXdXzXdX.X.X.X.X.X.X.X.X|.|. X|..X'..X.X X.X.X.X.X.X.X X@X X.X.X_.`..X'.|.|.|.|._.|.|._._._.^.(.(.(.(.(.{.(.(.(.(._.(._._.{.|.(.(. X{.[.n.n.].|._. X{.n.F.Q.{. X|._.|._._.`.(.`.(.(.(.(.(.(.{.(.(.(.(.(.(.(.(.(.(.|.(.|.^.(.(.(.(.~.(.[.^.^.(././.^.~././.!.(././.[.[.(././.(./././././.~.~./.!./.~./.~.~./././.(.(.^.(.|.(.(.(./././././.!./.(.(././././.~.~.~.~.~.~.~.~.~.~.T.~.~.T.~.T.T.T.T.~.~.T.~.~.~.T.T.T.T.T.~.~.T.T.T.T.T.T.P.T.I.L.H.H.H.G.h.A.", "m m m m m m m N m M N m m M m m m N m m m m m m M m M M M N N N V N N N N C N N B B B V B B B B C V C C N C C C B C C C C B Z C C C Z A Z M * 0 e r r r r r : r r r 0 e r : r r r r r r r r r 0 r r r r r * r r r r r r r 0 r r r r r r r r r r r ; e ; ; r * % % % % % $ % $ $ $ $ % % % % % % % $ $ % % % $ 0 % = % % % * ; % > % % % % * : % : r r r r r 0 y r r r r * y r r r r r r r r r r r r r r r r r r r r r q r r r r r r r r * r r r : * * $ o m.'.dXzXzXdXzXzXzXzXzXzXzXcXzXvXnXxXdXzXxXzXzXcXcXdXcXcXcXcXdXdXdXzXzXdX.XdX.XxX.XdX'.dX.XxX.X.X.X|..X X_.|.|.|._.|._.`.(.`.(.`.(.(.^.`.^.(.^.`.(./.(./.~./.~.~.~.~.~.~.Y.Y.~.T.T.T.T.T.T.T.T.T.U.U.U.Y.U.Y.P.L.L.L.L.U.L.L.H.H.H.H.G.G.H.L.A.L.L.P.L.L.L.L.F.L.L.L.L.L.L.H.H.H.A.H.S.A.S.A.A.A.A.A.h.j.Z.A.A.A.A.A.h.A.A.A.z.A.A.h.A.h.j.Z.G.g.A.A.A.A.A.h.A.l.l.h.h.g.h.z.g.g.g.f.f.f.g.a.g.i.k.k.i.f.d.a.a.a.a.t.i.i.i.a.a.u.s.s.a.i.i.i.a.a.a.a.f.a.a.a.a.f.a.z.i.k.f.f.f.f.f.f.f.f.f.i.k.i.k.f.f.k.g.l.z.h.l.h.l.h.z.g.Z.h.A.A.A.A.h.A.A.A.A.h.A.h.h.h.Z.h.Z.h.A.A.A.A.h.A.A.A.A.A.G.A.S.G.A.G.S.H.S.H.D.H.G.S.H.A.H.H.H.g.J.A.A.S.S.G.G.H.G.H.H.H.A.J.A.H.H.H.H.H.K.U.L.I.U.T.T.T.T.T.T.T.T.T.Y.~.T.T.T.Y.Y.P.T.T.T.U.T.U.T.Y.Y.T.Y.P.U.T.T.I.T.U.U.U.I.U.U.L.U.U.L.U.L.L.U.L.P.P.L.U.U.P.P.U.U.U.U.U.T.T.T.~.T.T.~.T.~.~.~.~.~.~.~.^.^.^./././.(.(.[._.{.{.`.(.(.`.(.(.(.(.(.(.^.(.(.(.(.(.(.!.(.(./.(.(./.^.(.{.(.(.(.(.(.~.(.(.(.(.(.(.(.(.(.(.(././.(.!./.~.(.!././././.(.^.^.^._._.`.`.|.`.{.`.(.|.^.(.^.(.(.^./.^.^.~.~.~.Y.P.U.U.L.L.L.L.G.L.S.H.H.H.H.H.H.H.H.H.H.H.H.H.H.G.L.L.L.U.U.S.L.L.L.U.L.L.U.L.L.L.U.L.L.L.L.L.L.L.L.U.S.S.P.U.Y.L.U.U.U.T.T.T.T.T.T.T.T.T.T.P.U.U.T.P.P.P.I.I.I.I.~.~.T.T.~././././././.(.(.(.^.(.(.(._.^.(.(.(.(.`.`.(.'.(.^.(.(.(.^.`.(.(.(.].(./.^.(.(.(./.!.~.~.~.T.~.~.T.T.T.T.T.T.T.T.T.P.T.T.T.T.U.U.U.U.U.Y.U.U.T.T.U.T.T.U.Y.~.~.T.~.~.~.~.~.~.~.~.~.^.~./.~./.T.~.~.~.T.~.~.~.T.~.T.~.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.~.T.T.T.~.T.T.T.~.~.~.~./.^.(./.|.^.`.|.|._.`.`..X.X.X.X'.@X.X.X.XdXdXdX.XdXdX@XzXdXzXzXxXdXdXzXzXdX.X.XdX.X X@X.X.X.X|..X|.|..X|..X X.X.X X'.'..X.X.XdX X|.'. XdXy * ; > 0 : r r * y * r _.{._.(.(.^.(.(.(.(.(.(.(.(.(.(._.(.(.(.`.].[ = 0 y q [ XQ.u y r r y m.* q q m._.`.(.`.`.`.(.(.^.(.(.(.(.(.(.(.(._.(.(.(.{.(.(.(.(.(.(.^.(.~.~.(././.!.[./.~.(./.[./././.(.!././.^././.[././.~.(.!.R./.T./.~././././.[.(.(.|.(.(.(.^./.(././././.(./.(././.(./.~.~.[.~.T.T.~.T.T.~.T.(.T.T.~.T.~.T.~.T.T.T.T.T.T.T.~.T.~.T.T.R.Y.T.T.T.T.T.U.T.P.I.L.L.H.K.G.G.H.", "m m m m m m m m M M m m m M M M N m N m M M m M m M M M m N N N V V B B N B V B B N N B B B C B M C C V N C A C C C C C Z C C Z C C Z Z Z A 0 = * r ; e r 0 r ; r : r r r r r r r r r r r r r e r r r r r r r r r * t 0 r r r e e r r r r r r r r r r r r r 0 : : ; % % % % % % % % % * % % % % % 0 * % % % * % * % * * ; * % * ; ; % * % * : : r e 0 r r r r * r r r r r r r r r r r r q r r r r r r r r r r r r r r r r r r r r r : r : r : r : ; $ $ u xXdXdXdXcXdXdXcXzXzXzXcXzXcXzXzXdXxXxXxXdXcXzXzXdXdXxXdXcX%XdXdXfXzXzXzXzXcX.XzX.XzX.X.X.X.XdX.X.X.X|..X X|.|.|.|.|.}.}.}.`.(.^.(.(.(.(.(.`.(.(.(.(./.~.~.[.~.[.^.~.T.~.~.~.T.T.P.T.T.T.T.U.T.T.U.U.Y.L.L.L.L.L.P.L.L.H.L.H.S.H.H.H.H.H.S.L.H.L.L.L.L.L.L.L.L.L.L.L.S.L.L.H.H.H.S.S.A.S.A.A.A.A.h.A e ; ; y q : : q A b.D.H.D.z.A.A.g.h.h.h.H.A.g.h.h.A.Z.z.z.G.g.h.l.z.G.Z.g.g.k.i.d.z.d.k.i.k.k.i.d.a.a.T 0 % y T s.u.a.r.u.s.u.i.i.s.u.a.p.a.s.s.a.a.a.k.a.a.a.g.a.z.z.a.s.d.z.a.f.i.z.i.f.d.f.f.f.g.g.g.h.k.h.h.h.S.h.A.h.h.A.A.A.A.A.A.A.A.A.A.A.A.h.A.h.A.h.A.h.h.h.A.h.A.A.A.A.A.W.A.G.A.G.G.A.G.G.H.H.H.G.H.A.A.H.A.A.H.A.S.A.G.A.D.G.G.H.H.H.H.H.H.L.H.H.L.L.L.U.U.U.T.I.P.T.T.T.T.~.T.[.T.T.T.T.T.T.!.Y.T.Y.Y.T.L.T.T.Y.U.~.T.XXT.T.L.U.T.Y.U.Y.T.T.T.U.T.Y.Y.Y.U.P.U.Y.T.~.P.P.U.U.U.T.XXU.T.~.T.T.T.(.~.T.~.U.~.~.T.~.T.T.(.T.~.[.(.~.(./.(.(.(.`.(.(._.(.|.(.(.`.{.(.`.(.(.(.`.].(.(.`.^.^.(.`.^.(.(.(.^.|.~.|.~.~.(.(.(.(.(.(.(.`.(.(.(.^.(././././././././.^././.^./.(.(.(.^.(.`.(.(.`.`.(._.(.(.`.|.^.(.(.(.(.!.^.~.T.U.U.T.U.U.K.P.S.L.P.L.L.L.L.S.Y.D.L.L.L.S.L.S.S.S.L.P.S.L.L.L.D.H.L.S.U.L.U.P.P.P.P.U.U.U.U.L.L.L.L.K.L.L.L.L.P.U.P.P.T.U.T.T.T.!.U.Z r r 0 y ; e > 0 Z b.T.U.T.U.~.T.T.~.(.].~.(.!.(.(.(.~./.{.(.].{.[.(.(._.(.~. X(.|.(.).y : : [ _.(.(.^.(.).(._.Z 0 > Z (./.!.~.[.T.T.Y.T.T.T.T.~.[.T.T.U.T.~.T.T.Y.P.U.U.U.U.T.I.Y.U.T.T.U.T.U.T.T.T.~.~.T.~.~.~.~.~.[.~.~.~.~.~.~.~.~.~.T.~.~.~.T.(.~.~.T.(.T.~.~.~.T.~.T.T.T.T.T.T.~.~.T.~.T.~.T.(.~.~.~.~.~.~.~.(.^.(.(.(.^.`.|._._.|.|.|..X X@X.X.X.X.XcX.XdXzX.XdXzXzX.XdXdXdXdXdXzXzXzX'.zX.XzXzX.XzX.X.X.X|..X.X.X.X.X X.X.X|.|.'..X|..X|..X.X.X|..X.X* y ; 0 : y * y * y : : |.^.|.^._.T.|.~.(.`.(.(.{.~.(.(.{./.{._.(.n.r > ; > N n. XS ; = t y U n.> q y n.|.'.|.}.[.{._.(.(.(.^.(.{.{.(.|.(.(._._.(.|.^.(.(.(.(.(.~.(.(./.~./././.[.~.[.~.~.~.[.~././././.^./././././.T.~.~.[.~.~.~./.~.T.(./././.!.^.[.`.`.(./././.^./.^.(./.(.(././././.~.~.~.~.~.T.T.~.T.T.T.~.!.T.T.T.T.T.T.T.T.T.[.T.T.T.T.Y.U.T.~.~.Y.T.T.T.T.T.U.T.P.I.L.U.L.H.H.H.l.", "m m m m m m M m m m M M m m M M m N m N M M M M M M m M V m M N N N N N B N B N N B N B B B B B A B A A C C B C C C C C C C C B Z C C Z Z Z u = * ; ; ; e r r ; r r r r r r r r r r r r r r r r r r r r r r r r r r : y r r r r r r r r r r r r r r r r 0 r : 0 : ; * ; : % * % 0 : ; % * * r : = % * * ; * ; ; r ; ; r r ; r ; % ; ; = ; : ; ; r r r r r r r r r r r r r r r r r r r r e r 0 r r r r r r 0 r r r : 0 r r r r r r 0 : 0 * r r r : % $ o # m.'.dXdXxXdXcXdXzXzXzXcXcXzXzXzXzXzXxXdXdXvXzXzXdXcXzXvXdXcXmXdXmXdXzXzXzXzXdXdXdX.XzX'..X.X.X.X.X.X.X X|.|.|.|.|.}.}.}.[.}.`.^.`.(.(.(.(.(.^./.(.(././.(.~.~.~.~.~.~.~.Y.T.T.T.T.U.T.T.T.T.I.U.T.U.U.U.Y.U.P.L.L.L.H.L.L.L.L.L.H.L.H.H.H.H.H.L.L.H.G.L.A.U.L.H.L.U.L.L.L.L.H.H.H.H.S.S.A.A.A.A.A.A.S 0 ; y % e 0 : ; r q e.h.l.D.l.h.A.j.G.A.h.G.A.S.z.A.A.z.z.Z.h.j.h.g.j.i.k.g.i.d.z.z.i.i.f.a.k.g.a.s.i.E t r : T a.a.u.a.u.u.r.a.u.u.i.i.i.a.f.f.a.a.a.a.a.a.g.g.a.a.a.f.a.g.a.i.a.f.i.i.d.k.f.a.f.a.g.g.h.g.h.h.g.g.h.h.A.A.A.A.A.A.A.A.A.A.h.h.A.h.A.A.h.h.A.h.Z.h.A.A.A.A.A.A.A.A.h.A.A.A.G.G.H.A.H.G.Z.G.G.H.H.H.H.H.A.S.H.H.G.H.H.D.G.H.H.H.L.S.D.L.S.L.L.L.L.U.U.U.U.T.T.T.~.~.T.~.T.T.T.T.~.T.T.T.T.Y.Z.= y ; r y y r r : = [ J.U.U.U.L.P.T.I.T.T.U.U.T.Y.T.U.L.Y.L.U.P.P.U.K.Y.b.Y U.T.T.D * r D T.T.R.~.T.T.~.~.~.T.~.(.~.~.~.{.~.~.^.~.(.(.^.(.(.(.`._.^./.^.`.(.(.`.`.`.(.(.^.(.(.~.[.` q : > ^.(.`.^.{.{._.!._.`.(.(.(.|.(./.|.^.(.(.`.(.(.^.[.(./././.!./.~.^././.(.^.(.(.`.^.(.`._.^.`.`.(._._.(.^.^.(.^.(.[.^.E.~.T.T.T.T.U.U.I.P.P.P.S.S.L.S.L.U.S.U.S.S.P.L.S.S.U.U.D.L.L.L.L.L.L.U.L.L.L.L.U.P.P.P.P.T.U.U.U.Y.L.L.L.S.U.R.L.U.P.U.P.U.T.T.T.Y.U.T.T.S r 0 > > y * r e r q b.U.H.T.T.U.~.T.T.T.[.~.(.(.!.(._././.^.`.{.^.`.~._.(.(.(.`.~.`.(.* t * b.(.(.(.|.(.{.(.!.Z 0 y Z !.!.!.T.T.~.~.~.T.T.~.U.T.~.U.(.~.~.U.T.Y.T.P.T.T.T.U.L.T.U.U.T.T.T.T.T.T.T.T.T.T.~.T.~.T.T.~.~.(.~.~.~.~.~.~.~.[.~.~.T.T.~.T.~.~.~.~.~.~.T.~.T.T.T.~.T.~.T.~.T.~.~.T.~.T.T.T.T.T.~.~.!.~.~./.(.(.(.(.|.`.{.`.|.|.|.|.'. X'..X.X.X.X.X.X'.@XdXdX'..X'.xXdXdX'.xXdXdXzXzX.XzXdX'..X.X.X.X.X.X.X X.X|.|..X|. X|..X|..X.X X|..X.X X|.'._.q = 0 q > y 0 * q r q 0 ^.{.'.`._.^.{._.`.^.{.(.{.|.[.|.~.(.(._._.[ y : 0 b.n.^.^.y ; > Z n.Q.'.b.b.b.!. X_._.{.|.(.(.|.~.(.`.(.(.(.|.^.(.`.(._._.(.{.(.(.(.(.(.(.~./.(.{.(././././.!./.!.(./.!././././.(././././././.~.~.T.T.~.~.~././././././././.(.^.^.(.(./././././././.(././.~./.~./.~.~.~.T.~.~.~.~.~.T.T.T.T.~.T.~.T.T.T.T.T.T.T.~.T.~.~.~.~.Y.R.I.(.T.T.L.T.T.P.P.I.L.L.S.D.H.H.H.", "m m m m m @.m N M M m M V M m m m N m m N m N m M M M M m N N V V N N N B B N B B B N N B B B B C C C C C C C A u B B C C C D C C Z C C Z A A 0 % % : ; : r e ; r r r r r r r r r r r r r r r r r r r r r e r r e r r r r r r r r r r r r r r r r r r r r r r r : : : : : r r : * : ; ; : * e = ; ; * ; ; r r ; ; e r ; ; ; r ; ; ; ; ; : r : : r r r r r r r r r r r r r e r r r r r r r r : r r r r r r r r r e r r r r r r r r r 0 r r r r * * $ > hX'.dXdX@XdXdXdXdXzXzXzXzXzXvXdXcXzXzXzXxXdXcXzXzXzXzXzXdXnXdXcXdXcXvXdXzXdXvX.XzX.X.XxXzX.XdX.X'..X.X|..X|.|.|.|._._._.^.|.`.(.(.(.(.(.(.(./.(././.^.(./.~.~.~.T.T.T.T.T.P.T.T.T.T.U.U.T.T.U.U.I.I.U.L.I.L.P.L.L.L.H.L.K.H.H.H.G.G.H.S.H.H.H.H.H.S.L.L.L.G.L.L.L.S.L.L.S.S.H.H.H.D.S.G.H.A.A.A.H.S.A y y ; : 0 t = ; > ; Z l.h.D.l.A.h.J.g.z.A.h.h.H.z.Z.h.l.z.k.g.l.a.a.z.i.k.z.f.k.d.d.k.i.i.i.s.i.i.s.u.T = e e E a.u.u.r.i.z.y.r.a.i.u.i.a.a.a.s.a.i.s.a.a.a.z.a.g.i.a.f.z.a.s.k.g.f.a.k.g.i.f.a.a.z.g.z.g.g.z.l.z.h.l.A.l.z.h.A.A.A.A.A.A.W.A.h.h.A.A.h.h.A.h.A.A.A.A.A.A.A.A.A.A.A.A.A.l.W.A.A.h.H.A.A.H.H.G.S.S.A.h.H.S.A.H.D.S.H.H.L.H.L.H.L.L.L.U.U.U.U.I.L.U.T.T.T.T.T.T.T.T.T.T.T.~.~.T.~.T.~.Y.T.T.T.b.e r r 0 0 0 r 0 r > Y T.T.U.U.U.U.T.U.I.U.U.T.T.U.Y.T.U.U.U.T.U.Y.U.b.Z > D U.U.P.u : > H U.T.T.!.T.^.~./.T.~.T.T.~.~.~.T.^.~.(.(.{.^.(.{.{.(.`.^.|._._.(.(.|.(.^.`.~.{.(._.^._.(.b.* e y ].(.(.].{.{.[._.^.|.~.{.[.[.(.|.(.(.(.(.(.(.(.(.(./.^./.(.^./.E.[./././.(.(.(.(.`.(.(._.^.(.(._.(.(.(.`.(.(.(.^.^.~.(.~.~.T.T.T.U.U.I.P.Y.P.P.L.L.S.L.D.U.L.L.P.L.L.L.U.L.A.L.L.L.L.L.L.L.L.P.L.L.U.U.P.P.Y.U.U.U.U.U.K.L.L.L.L.U.L.R.U.P.L.L.U.T.U.T.T.U.!.U.F r r : : * 0 t ; : q L U.U.~.T.U.(.U.T.[.[.[.~.~.(.].(././.(.(.!./.[./.{.^._.{.`.{._.`.y q 0 [ (.(.(.[.(.R.[.(.b.[ [ b.~.T.~.T.[.~.T.~.T.[.~.T.L.^.T.Y.~.T.T.U.T.U.T.P.I.U.L.T.T.I.U.U.U.T.T.T.T.T.T.~.~.T.T.~.(.(.E.T.~.!.~.~.~.!.~.~.T.~.T.~.~.~.~.~./.~.~.~.~.~.T.~./.~.T.~.T.T.~.~.T.~.T.T.(.T.~.~.~.~.~.~./.^.(.(./.^.(.`.`.(.|._._.|.|. X X'..X.X.XdX.X.X.X'.zX.X.X.XzX.X.XdX.XdXdXdX'.zXzX.X.XzX@X.X.X'..X.X.X.X.X|.|.|.'.|.|..X X|.|. X.X.X|..X|.|..X'.'.'.|.; r 0 r ].'..X^./.F.n.n.(.b.[ F.^.`._.F.[ [ [ b.n.(.|.).Q.I 0 r q n.Q.|.n.* t > Y m.}.!.n.n.n.{.{.|. X|.n.b.[ b.n.].]. X(._.^.|.^.(.`.(.`.^.(.^.^.(.(.[.(.(.(.(.T./.[.{././.[./././.^.!.[.~./.[./.(././.~./.T.~./.[.T.~.~././.^.(.E.^././.^.(.(.(.(.(.(.~.~.(././.(./././././.~.~.~.~.~.~.T.T.XXU.~.~.~.T.T.T.T.T.[.T.T.T.T.T.T.T.T.T.~.I.I.~.T.T.T.T.T.T.T.P.P.T.L.L.L.L.L.S.H.H.", "m m m m N m m m m m M M m m V V m N m N N m N M M M M m V m m M N N N V N N N N m N u B B B F B V u A C C C C C B F C D C C D C C Z Z Z C Z Z u % % * : * 0 0 ; r r r r r r r r : r r r r r r r r q e r r r r r r r r r r r r r r r r r r r r r r r r r r r r r : r r : r * r r * r : 0 r r : : r 0 e ; r ; r r ; ; r r y ; y r ; ; ; : 0 : : 0 r r r q r r r r r r r r r 0 r r r r r r r r r r r r r r r r e r r r r r r r r r r r r r r r 0 % $ $ ].`.@XdXdXdXdXxXdXcXzXzXzXvXzXzXzXzXzXzXzXcXzXzXzXzXzXzXvXdXzXcXmXdXdXdXzXvXdXdX.XzX.X.X.X.X.X@X.X.X.X.X X.X.X|.|.|.|.|._.|.^.^.(.(.(.(.^./././.(./././.~.~./.~.~.~.T.T.Y.T.T.T.T.T.U.T.Y.U.L.U.L.U.U.L.L.U.L.S.L.S.L.H.H.H.H.H.S.H.H.G.H.H.S.H.H.H.L.G.L.L.L.L.H.H.U.U.S.L.L.H.H.G.G.G.G.Z.A.A.H.z.h.A ; ; 0 e.A.A.T : ; ; A Z.z.A.A.j.T U T e.e.H.g.z.J.T e.T Z.e.T T z.z.z.Z.T T T T e.d.i.f.a.f.i.T T T T T y r : T a.t.s.u.T T G T E u.u.u.i.E T T i.i.T T T T a.a.T U T T z.s.x.g.i.a.f.i.a.k.z.z.f.f.g.a.z.h.g.l.h.h.h.g.S.A.A.h.A.A.Z.A.A.h.A.h.Z.A.h.A.h.A.A.h.h.A.h.A.A.j.h.A.G.A.A.A.A.A.h.A.H.A.A.H.A.Z.G.S.H.H.H.G.S.H.H.H.L.H.L.L.L.L.L.U.U.U.U.U.Y.T.T.T.T.T.T.T.T.T.T.~.~.~.~.~.T.~.~.T.T.~.Y.U.T.Y.Z.r = > ; y ; y r r = [ L.U.Y.U.U.U.T.~.T.U.T.U.T.T.U.T.U.T.U.T.~.T.!.Z q > G U.U.L.Z : r S /.~.T./.T.T.~.~.T.T.~.^.T.U.{.P.(.[.~.[.T.`.].^.(.(.(.`._._.{.(.`./.{.(.^._._.(.[.(.`.{.[ r * 0 (.|.{.(._._.|.|.{.~.{.|.^.`.(.(.(.(.(.(.(.(.(.(.(.(.~.(./.(./.(.(.(./.(.(.(.(.(.(.^.(.|.|.|.^._._.(.(.(.(.(././.[.~.~.T.~.T.T.U.T.U.Y.P.P.L.L.P.P.L.L.U.H.L.L.L.L.L.S.K.L.U.U.L.P.P.A.L.L.P.L.Y.U.L.U.P.T.U.T.U.T.U.U.U.U.L.U.L.L.U.K.L.T.P.U.T.T.T.T.T.T.~.I.A r r r b.L.U.T = > : Z U.T.T.T.Y.` [ T [ ].^.~.(.~.F.F.n.~.!.b.b.b.!.!.'.b.[ b.Q..X{.(.: * q [ ].[ [ Z./.~.~./.n.n.F.F.(.~.Z.n.b.!.T.[ [ T F.[.P.U.!.!.[ T b.F.Y.n.n.b.T.T.T.I.Y.Y.~.I.T.T.T.T.~.T.T.T.T.T.~.~.T.T.~.~.~.~.!.~.~.~.~./.~.~.~.~.~.T.~.~.T.~./.T.~.~.~.~.~.T.~.T.~./.T.~.T.~.~.T.T.(.~.~.~./.~.~.~.^.T.(.(./.(.(.^.(._._.|.|.|.'..X.X X.X'.@X'..X.XzX.X'.dXzX'.zX.XdXdXdX'.@XzX'.zXzX'.@XzXxX.X.X.X.X X X|..X X X.X|.|..X.X|..X X|. X X X`.@X_. X X X(.y : : y (.(.{.{.n.r : r [ y : J `.].Z r r : y r = S n._.Z 0 r : 0 y J F.0 ; : : : = L.n.y = r Q.[._.Q.S = : : = * u b.^.`.|.(.`._.`.`.(.(.`.^.|.|.(.(.(.(.(.(.(.(./././.^././././././.!./.^.[.!.(.(./././.~.~.T.~.T.~.~.~.~.~.~.~.~.^.!././.(.(.(.^././.~.~.~././.(./.^././././.~.~.~.~.~.(.T.E.XXT.~.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.U.I.~.~.U.~.~.T.T.T.T.T.U.P.P.U.I.L.L.S.L.G.G.", "m m m m m m N m m m m M M M M m N m M m M M m M m M m M M m V M B N B N N m B B V B B N B B B C B C C B C C C C Z C C C C C Z C D C Z Z C F C Z e % % * ; 0 r e r r r r r r r r r r r r r r r r r r r * e 0 r r r r r r r : r r r r * y r r r r r r r r r r r r 0 r : = y ; r r y : r r : r ; ; r ; = e r ; ; 0 r ; ; ; = y ; r : = y y : r : : r r r e r r r r r r r r r r r r r r r r r r r r r r r r q r r r r r r r r r r r e r r r r 0 % % $ ' .XdX.XdXdX.XzXzXzXzXzXzXzXzXzXvXzXzXzXzXzXzXzXzXzXzXzXzXzXdXvXzXdXdXcXvXdXcX.XzXzX.XdXxX.X.X.X'.zX.X.X.X|. X.X.X|.|.|._._.|.(.(.(.(././././.(./././.[.^.~.~./.~.T.T.T.T.T.P.T.T.P.T.T.U.U.U.U.L.R.K.U.L.S.L.U.L.S.L.H.H.H.H.H.H.H.H.H.A.H.H.H.D.H.H.L.L.G.L.L.H.L.L.L.L.L.L.L.A.D.A.G.S.S.S.A.S.A.A.S.Z 0 ; r e.S.Z.T 0 r q T z.h.D.T y = q e ; t G D.h.S.= y q J y * q f.h.T t y = : > = C T f.u.d.F = > q > N : : y T a.a.T q y ; r * e G E a.u.C q q D u = t > q T H q : r N G a.a.a.g.i.z.a.k.k.i.a.a.g.z.z.g.h.z.h.z.h.g.l.l.l.A.A.A.A.A.A.h.A.A.G.A.h.A.A.h.A.h.A.A.A.h.A.Z.h.W.A.A.A.A.A.A.A.A.A.A.A.H.h.H.S.S.H.H.H.H.A.H.K.H.H.L.L.L.L.L.P.U.P.T.Y.T.T.T.T.T.T.T.T.(.~.T.~.~.~.~.T.~.T.~.~.T.T.Y.T.T.P.P.L.A.; ; r Z ].Y.K.I.T.~.U.T.U.T.L.b.[ T ` b.F.~.T.U.F.Z.b.F.F.[ T F.T.n.A : > u n.n.T.Z : : D ~.b.[ b.n.~.~.[.T.Y.!.T b.b.!.F.n.F.].[.!.n.F.n.{.{.(.F.n.F.^.^.|.`.^.n.b.[ [ b.].(.^.(.[ : ; y './.~.n.F.n.F.{.~.(.].[ [ [ b.]..X(.`.(.(.(.(.(._.`.`./.(./.(./.^./.(.[.(.(.!.(.(.(.`.^.(.{.`.(.(.(.(.(.(.^./.(./.~.~.~.T.T.U.T.T.T.U.P.P.P.U.L.P.L.L.U.L.L.P.P.P.L.L.L.L.P.D.L.L.L.P.L.U.L.L.P.P.P.P.T.T.T.P.U.T.U.U.U.U.U.L.U.R.K.L.P.P.P.T.T.T.T.T.~.U.T.U.Z e e 0 b.T.T.[ y : 0 [ T.U.T.T u y = y = y [ (./.!.0 ; y [ y * * ; y Q.A * y t r n.`.`.y : : u = 0 r y S ].~.!.Z : 0 L T./.q r q [ t 0 r r q n.T.~.n.A y : t y _ y r q K.U.T.T.I.Y.Y.T.T.T.T.T.T.T.~.T.~.T.T.~.T.~.~.~.~.~.~.~.~.~.K.T.T.~.(.T.~.~.~.~.~.^././.~.~.~.~.~.~.~.~./.T././.~.~.~.~.~.~./.~././././././.(./.(.(./.(.`.^.[.|._.|.|.|..X.X@X'. X.X.X.X.X@X.XzX'.@X.XzX.X@X.X@X.XzX.X.X@XxX'..X.X.XzX'..X.X.X X X.X|.|.|..X|..X X|. X|.|.'.|. X`.|.|.|.`.|._.; r * 0 (._.(.(.F.; > r 0 y > b.(.Y ; ; y : 0 r e : U (.H y : r : > U n.q ; q : y = Q.Q.y : > Q.|._.u * : * : y y : = Q.{.(.|.{.`.`.(.(.(.(._.(.(.[._.(.(.(.{.^././.(.(./.!././././././././././././.~./.~.~.~.T.T.~.~.~.~.~.~.~.~.~.~./.~./.(.(.(././.~.~.~.~././.(./.(././././.~.~.T.U.(.T.(.T.~.T.T.T.T.[.T.T.T.T.T.T.T.T.T.T.T.~.~.~.T.I.~.Y.R.T.T.T.T.U.Y.U.Y.L.L.U.L.L.D.H.D.", "m m m m m m m N M M M m m M M M M N M m M m M M m M M M V N m m m B m B B B B N N B B B B B C B C C C C C C C C C B C C F C D B C B Z Z C D C D u 0 % % % e ; ; r r r r r r r r r r r r r r r r r r r r r r r r r r r r y 0 r r 0 e : r r r r r r r r * r r r r : r q r * : r * : 0 r r = r q ; r r r r 0 r r r r r y r r r = r r ; : r : r = y r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r : r r : r : % & $ hXdX%XdXdXdXzXzXzXzXzXzXzXzXzXcXzXzXzXcXzXzXzXzXzXzXdXvXzXzXnXdXdXnXdXvXnXdXdXzXdXzXzXzXzX.X.XdX.X'..X.X.X.X X X|.|._.|._.^._.(.[.(.(./.(././.~.T.^.~.~.~.!.~.T.~.T.Y.T.T.T.P.T.P.P.U.U.L.U.U.U.L.L.L.L.L.L.L.S.L.H.H.H.H.S.S.S.A.H.G.l.H.H.H.G.D.H.H.H.S.L.H.L.L.L.H.H.L.S.H.S.H.H.H.S.S.S.S.h.S.S.A.A.u 0 y ; y ; y > : e G h.k.D.T * t 0 t t 0 0 y T z.Z.> ; e r = y U j.T m r ; 0 = 0 : r C e.i.T = y ; q : q e e = E a.T M ; > r q 0 ; y Z u.i.B > * = q q 0 0 0 = = = : ; ; y g.a.a.a.a.a.a.k.a.k.g.g.a.a.g.k.k.g.h.h.g.z.l.h.A.A.A.A.A.A.A.A.A.A.A.A.A.h.h.A.A.h.A.h.h.A.Z.h.Z.A.A.A.A.A.A.A.A.G.A.G.l.A.A.H.S.H.H.H.A.H.K.A.H.H.S.L.L.L.U.U.Y.T.Y.P.T.T.~.T.T.~.(.T.~.~.~.~./.~.~.~.~.~.[.T.T.[.~.T.~.T.T.U.T.b.e r y u [ T T [ T T Y.P.~.[ y : e : 0 q : U ~.U.T * 0 D u = q [ U.> : : e * = Z T.S r e u Z = * = r T [.T.T.[ = t r r A u 0 r T T.[ : q q (.|._.r r = [ .X'.[ y 0 * r : ; y Y X{.b.; e * |.Q.q y = = b.`.].[ q e 0 ; 0 y ` (.|.`.`._.(.(.(.(.^.!.(.(.(.(./././.(./.^.(.(.(.(.(.(.(.(.(.^.(.(././.(.^./.~././.!.~.~.~.T.T.T.T.T.T.T.Y.P.P.K.L.L.L.Y.L.P.P.P.P.U.L.Y.P.P.L.L.L.U.L.L.P.P.P.U.T.T.T.T.T.T.T.T.T.U.U.T.U.I.L.L.U.U.U.U.T.T.T.T.T.T.Y.T.T.L.Z ; * r y y = r : 0 Y U.T.T.b.t = ; 0 = y * q [ /.(.= e > r q y : e ; * q q = : r A `.`.: e r r 0 r r > ; ) Y.(.A * y S T./.: e 0 q = q : e : A ~.~.L 0 * * r > = ; ; 0 Y.T.T.U.I.T.T.I.T.T.T.T.T.~.T.~.T.~.~.T.~.~.~.~.~.~.].~.~.~.(./.).~.T.T.~.~.~.~.~.~.~./.~.~.~.~.~.~.~.~.T.~.T./.~.~.~.~.~.~.~.~.~./.!././././.(./.(.(.(.^._._.|.|.|.|.|.|.|.|. X X.X.X.XdX X.X.XdXdXdX.X XdXzX.XzX.X.XxX.X.XdXdX.X.X.X.X.X.X.X.X.X.X.X.X X|.|.|.|.|.|.|.|.|.|.|.'._._._. X_. X; r r r (.|./.|.n.r r 0 q n.b._.(.Y Z q u (._.J r : q (.Q.) 0 r r n.Q.|.Q.e : r ) n.^.n.* 0 0 n.|.[ * : : [ '.n.y q q [ (.|.(.|._._._.`.^._.(.(.(._.(._.[.(.(.(.(.(././.(.(././.(././././././././.!.~./.~.~.T.~.~.~.T.~.~.~.~.~.~.~.[.~.~././.(./././.(.~.~././././././.(././.~./.~.(.~.T.~.T.~.T.[.T.T.[.T.P.U.T.T.T.T.T.T.T.T.T.K.T.I.I.T.~.R.~.T.T.T.T.Y.Y.L.L.U.L.U.S.G.L.H.H.", "m m m m N N m m M M m M M M N N M N N M M M M m M M N m m m m M B m M B B B B B N B N V B C C C A C C C C C C Z C C C F C D C C Z Z B Z G Z Z Z G q * $ % % % : r : e q r r r r r r r r r r r r r r r r r r r r r r r r : r r r r r r r r r r r r r : 0 r r r r : r r r : r r = * r : = r r r r 0 r r r r : r r r r r r r r 0 r : * r r ; y e * r r r r r r r r r r r r e 0 r r r r r r r r r r : r r r r r r r r r r r r r r r : r : = : % $ $ o m.'.dX.XxXdXzX.XzXzXzXzXzXzXzXzXzXcXzXzXzXzXzXzXzXzXzXzXdXzXzXdXdXvXcXdXmXdXdXmXzXdXzX.XdX.XzX'.@X.XxX.X.X.X.X X X.X|.|.|.|.(.(.(.|.^././.~./.(./.(.~.~.~.~.T.T.~.T.T.T.T.T.P.P.P.P.U.U.L.P.L.L.L.L.L.L.U.L.H.L.S.H.S.H.H.S.S.h.S.A.H.A.G.H.H.G.H.H.H.H.L.H.H.G.L.L.H.L.L.S.L.S.L.D.S.G.S.S.S.S.S.A.S.S.S.C q y r r 0 q q t * Z l.h.Z.y ; * A Z.e.C y = y h.j.r 0 e * G T i.j.Z ; e q e.z.T ; * r T s.N = : q w.i.N % e > E y.G y 0 q E e.V r r q T u.u r t q T G y ; 0 0 G T B 0 ; ; e.s.i.a.a.a.k.a.a.k.f.f.a.z.g.g.k.g.k.k.h.k.l.l.h.l.A.A.A.A.A.h.W.h.h.A.A.A.A.z.h.A.A.h.h.h.A.h.A.A.h.A.A.A.h.A.W.h.G.A.A.H.A.H.A.H.S.A.H.H.H.H.H.H.S.P.L.P.P.U.T.T.~.T.T.T.T.~.~.~.~.~.~.[.~.~.^.~.~.[.~.T.~.T.~.~.T.T.T.T.T.~.~.n.; ; * > : 0 q r t q Y.J.F.q r r 0 * 0 = = 0 F.~.` y ; * 0 r y F.T.q r * e > y F Y.J 0 0 : = r e r : q Y.T.F.y y : r q = e e q [ ^.[ : > * _.(.(.: y : [ .X].q ; y e 0 y e ; y F.{.[ y : y ].y > ; : b.'.`.P : y : ; = r r y [ (.(._._.(._._.{.^.(.(.(.(.(.(./.(.~.~.(.(.(.(.(.(.[.(.(.(.(.(./././././.~././.~.~.~.T.T.T.T.T.T.T.U.T.T.T.L.P.P.P.P.P.P.P.U.P.Y.P.I.U.Y.P.P.P.U.U.L.T.T.P.P.T.U.T.T.T.T.T.T.T.T.T.T.T.I.T.U.U.U.T.U.E.T.T.T.T.T.~.~.T.].U.Z e r : q : = r r ; ~ Y.I.!.A > * u T.].u e 0 q ^.~.r r 0 q [ b.0 r r r [ n.u 0 e y (.`.* : r y F.].Z e 0 q ].~.K r * H U.T.r * e q b.b.u * > y T.F.= : q G Q.F.u * r y T.U.~.T.I.T.T.T.I.T.T.T.~.T.T.T.~.T.~.T.~.T.~.~.~.~.T.(.R.~./.!.T.T.~.(.(.~.T.(.~.^.E.(.{.~.~.(.~.~.~.~.~.~.~.~.[.T.~.~.~.~.!././.~./././.(./.^.(.(.^.(.`.^.(.|.|._.|.|.|.|.|..X.X.X.X.X'..X.X.X'..X.X.X.X.X.XdX'..X.X.X.XdX.X'..X.X.X.X.X.X.X.X.X X.X|.|..X|.|. X|.|.|.|.|.}. X|.|. X|.|.|.(.y r : > [.|._.[.n.0 y > [ [.|.{.|.{. XdXn.b.I u ; y = |.(.[ r 0 q |._.{.'.; y 0 [ X[.n.: 0 y F.|.L = ; A _.|.{.Q.].(..X X_.|.^.|._._._._.(.{._.^.}.(.(.(.[.(./.(./.(././.(././.(.[././.!./././.~.~.(.!.~.~.~.~.T.~.T.~.T.~.~.~.~.~.~.~.~.~././.(./.~.~.~.~.~.~./././././././.~.^.~.T.T.~.T.T.T.T.T.T.T.T.T.T.T.U.[.T.T.T.~.T.T.I.T.I.~.Y.~.U.~.T.~.T.Y.Y.U.Y.L.L.Y.L.U.L.L.G.H.D.", "m m m m m m m N M M M M M m B m M N m M m M M M m M M M m V V m B B B m B N N B V V A M C N B B B C C C C C C C C C C C C C C Z C C D Z Z C H B G Z > $ $ % r 0 r r r r r y * r r r r r r r r r : r r r r r r r r r r r q : r r r r r r r r e 0 r r e 0 r r 0 r r r r r y r y : r r r r r r r r r r * r r r ; 0 r r r r r ; r ; r r : ; ; : r : r r r r r r r r r r r r r r r r r r r * e r r r 0 r e r r r r r r r r r r r r y ; r : * * $ o ` '..XzXdX.XdXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXdXdXdXzXdXdXzXzXcXdXdXdXcXdXcX.XzX.XcX.XvX.XzX.XzX.X.X.X.X.X.X X@X X.X|.|. X_.|.(._.^.^.(./.~./.~.~.~.~.~.~.~.T.~.~.T.T.T.T.T.P.P.P.P.U.L.U.L.L.L.L.L.L.L.S.L.L.H.H.H.L.H.H.S.S.S.A.A.A.G.G.H.H.G.G.G.H.H.H.G.H.H.H.H.L.H.L.U.S.S.S.H.D.S.S.S.Z.A.S.S.S.S.S.S 0 ; = J U U Z = y ; u A.d.q ; > T j.l.T : e : d.j.r r ; A A.f.z.d.q e : Z G T G Z 0 : C e.q 0 > G i.i.T e * q G p.q % q G u.u.p.q > ; G t.V = > m p.a.G y ; 0 w.i.T = e ; T s.a.a.a.a.a.a.k.f.f.f.g.a.d.a.g.z.k.h.k.k.l.h.h.A.h.A.Z.h.A.A.h.G.A.A.h.A.n.z.A.h.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.G.A.A.A.A.H.A.H.H.H.H.H.H.H.H.H.L.L.L.L.U.U.Y.T.T.~.T.~.~.~.~.~.~./.~.~.~./.^.~.~.~.~.!.~.~.~.~.~.!.^.~.~.T.T.T.n.q r 0 r : : t > > t ].L.b.Z y r b.!.n.q y > [ T.[ ; ; y C n.b.T.T.b.C y r C b.F.T.S y * y [ n.Z t : * n.~.[ t * r ` `.U = 0 q [ ~.[ e r * (._.|.: : 0 b.T.n.H y > b.`.F.q = * c.(.b.0 : t A y ; e b.`.(.F.q : : b.^.`.J : ; u {._.(._._.(.(.`.^.`.^.(.(.(./.(.(.(.(.(.^./.(.(.(.`.^.(.(.(.(./././././././.[.T./.~./././.T./.T.^.T.T.T.U.U.Y.P.P.P.P.P.P.U.T.T.Y.U.Y.P.P.P.P.U.P.P.P.U.P.T.T.T.T.T.T.T.T.T.T.T.T.T.U.T.U.T.T.U.T.XXT.T.T.T.T.T.~.T.T.!.I.Z : r * ) T ` J q r : C L.F.; : * b.T.XXb.0 * y F.T.y r : ` !.^.I ; : Z {.[.[ r > 0 |.|.> r = [ '.[.n.0 > = F.~.Z e y S ~.~.* : : U !.T.[ 0 : = ^.n.e * = n.U.~.T q r ; Y.T.T.T.I.T.T.I.T.T.T.~.I.Y.~.T.T.~.T.~.~.T.~.~.!.~.).~./.(.R.T.Y.(.(.T.T.~.~.E.~.~.[./.(.~.~.~.~.~.~.~.~.~.~.~.~.(.T.(.~.~./.~.~././././././.(./.(.(.(.`.(._.(._.|.|.|.|._.|.|. X.X|..X.XdXdX X.X.X.XdX.XdX'.dX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X X@X.X.X.X.X|..X X}._.|.|._.|.}.|. X_.|.(._._.r e ; ; |.(.(. XF.0 0 > n.(.|.{.(.Q.L > > * > t ; ; y {.{.b.> e 0 '.|.{._.; ; y b.}.}.Q.> y * n.|.L y e P '.{.{._..X{.|.`.`.|.`._._._.|._.(.(.(.}.[.(.(.(.(.^.(./.(.(.(./.(.^./././././././././.~.~.~.~.~.[.T.~.[.T.~.~.~.~.~.~.~.~.~.R.!.[./././././.~.~.~.~././.(.!./.(././.^.~.~.~.~.(.T.T.T.(.T.[.T.T.P.T.T.T.U.T.T.T.T.T.T.Y.~.T.I.~.T.~.~.T.T.T.T.Y.Y.U.U.U.L.L.U.S.L.H.H.D.", "m M m m V m m V M M m M m M B m N N V M C M M M V m m V M M M N m m m B N B N N B B B B B C C B C C C A C C C C C C Z C C C Z Z Z Z C Z Z B C Z A D A 0 $ % % 0 % : ; ; > : 0 y 0 r 0 ; r r r r r r r r : r r r r r r r r r r r r r r r r r r r r r y 0 r r * r r r y * r r r r r y q : r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r * y r r r e r r r r r r r r r r r r r r r r r r r r r r r r e : r r e r ; 0 e ; - % , u hX.X.XzX.X@X.XdXzXzXzXzXdXdXdXcXzXcXvXzXzXzXvXdXdXdXdXcXdXdXzXcXzXzXzXzXzXzXcXdX.X XzXzXzXzXdXdX'.zX X X.X.X.X.X X.X X|.|.|._._.(.`.(.(.(./.^.(.~./.~.~.~.~.T.T.T.[.P.T.P.T.T.P.P.T.P.P.P.L.L.S.L.L.S.L.S.L.L.L.A.S.S.S.S.S.Z.H.A.A.A.S.G.S.S.G.H.H.H.H.H.K.H.H.H.H.H.H.L.G.H.H.H.H.S.S.S.S.A.H.G.G.A.A.h.G.A 0 r 0 b.h.S.g.A q ; q e.e.: 0 y T g.h.T q * * T f.e 0 = G z.f.k.g.= e 0 q y y : r = q C w.r : * G s.r.T * * q T u.M ; 0 G u.u.i.% = 0 G u.B * y m u.u.G y 0 0 r.i.T : e : T x.a.a.a.u.a.a.k.k.a.k.f.f.a.a.z.f.a.k.k.g.k.h.h.h.A.h.z.A.A.A.A.A.A.A.A.A.S.h.A.A.A.A.A.A.S.h.G.z.h.A.A.A.A.A.A.H.G.A.A.G.A.H.A.H.H.H.H.H.H.L.H.L.L.L.U.U.U.T.T.T.~.~.T.~.~.^./.~./.[./././././././././.~.~.~.T.~.T.~.R.T.T.T.~.b.0 r ; u [ T [ T [ T P.T.U.U.T.F.b.[ A * ; 0 T ~.[ ; ; ; b.~.I.~.~.T.Z : e S ~.~.~.S e 0 u ~.~.b.y > 0 F.~.Z ; 0 S T.~.Y.; ; e [ [.T ; r 0 `.^.|.r r y [ |.{.|.`.].n.[ u : r 0 b.^.[ y ; ; ; r 0 0 Q._.(.[ y : e [ [ b.I : ; y Q.(.|.(.|.(.^.(.`._.(.(.(.(.(.(./.(.(.(.(.(.(.(.(.^.(.[.(.(./././.E.{.~.~.^.(././././.~./.~./.~.~.~.R.T.T.T.U.L.Y.U.U.U.T.T.U.T.T.T.T.T.T.T.T.T.T.U.T.T.T.T.T.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.I.[.U.T.!.S : : r b.U.T.Y.A r e q n.n.= y 0 n.T.[.b.r : y n.{.: : = [ (.(.D e t S {.|.[ q : : |.{.y ; e [ {.(.F.t : : n.T.D : y S T.T.y ; 0 [ /.!.` : t : T.n.0 e 0 b.U.T.[ = ; y Y.U.Y.~.Y.Y.U.T.T.T.T.T.T.T.T.[.T.T.[.T.T.~.~.~.~.~.~.~.~.~.(.I.~.!.~./.~./.~./.~.~./././././.!././././.~./.~.!.~./.~././././././././././.^.(./.(./.(.(.(.^.|._._.}.|.}.|.|.'..X.X X.X.X.X.X.X.XdX.X.X X.X.X.XdXdX X.X.X.X.X.X.X.X.XzX.X.XdXdX.X X.X.X.X.X.X.X.X'.|.|. X|.|._.|.|.|._.|._.|._.r r : : `.^.`.^.F.0 e e n.{.|. X].q > r U F.'.Y q : : .X`.b.* r > (.'..X.X0 e * [ X{.Q.t ; : F.}.I > * u _. X_.n.[ n.n.'.}.}.|._._.|.|._.`.`.(.(.[.^.(.(._.(.(.(.[.(.^./.^.^./.(././././.~.~./.~.~.~.T./.T.~.~.~.~.~.T.T.~.T.T.{.U.T./.XX~.~.(././././.~.~.~././././././././.(.~.~.~.~.~.~.T.~.~.T.~.T.T.T.T.I.I.T.T.T.T.T.T.T.T.T.P.P.^.T.T.T.T.T.T.I.T.T.P.P.P.P.U.L.L.L.L.S.L.", "m m m m m m m m M M M M M M m M N N M V M M N M m V N N N N N B M C B N B B B B B B B B B B C N C C C C C A A C C Z C C Z B Z B C Z Z Z Z D Z Z D Z D A % $ $ % % : ; ; 0 ; ; : r r r r r r r r r r r r r y * r r r r r r r r r r r r r r r r r r r : t r r r r r r r : r r r r r * e r r r r r r r r r r r r r r r r : r r r r r r r r r r r r r r r r r 0 r r r r r r r r r r r r r r r r * r r r r r r r r r r r r r r ; ; ; = * % $ $ # t hX'..X.XzX.XxXdX@XzXdXzXzXzXfXxXdXdXdXdXzXzXzX#XdXdXzXdXdXdXdXzXzXzXzXzXzXzXcX.XcXzXJXzXzXzX.XdX@XzX.XdX@X.X.X.X.X.X.X X'.|.}._.`.(.(._.(././.^.~.~.~.~.~.T.~.[.T.T.T.T.T.T.P.P.P.P.P.P.P.L.L.L.L.L.P.P.L.S.L.L.S.U.S.H.H.S.A.H.l.A.H.A.H.S.S.A.H.A.K.A.H.H.A.A.K.H.H.H.H.G.L.H.H.H.S.S.S.S.S.A.S.S.A.S.G.H.G.Z * 0 y T A.g.e.y 0 ; > e.j.> t y T l.z.T t t 0 d.j.y r y T i.k.i.j.y 0 * Z T T T e.T T u.u.q y q B t.i.T q : r T w.m : q C u.t.E u e e T t.m q * A u.a.G = = y i.u.E y y : T u.u.a.a.s.a.a.a.a.i.a.f.f.a.k.f.a.k.k.z.g.h.h.h.h.h.h.A.S.g.A.A.A.A.A.A.A.h.A.z.A.A.h.h.h.z.h.z.D.A.A.j.A.A.A.A.g.h.H.G.A.A.H.A.H.H.H.H.H.L.A.L.L.L.L.U.U.T.T.T.T.~.~.~.~.~.~./././././.!./././././.~./.~.~.~.~.T.T.~.~.~.T.T.~.Z.r : r Z T.T.I.U.T.U./.U.U.[ u r = = u * e 0 b.~.e.0 r q L.T.~.I.~.~.S : 0 H U.T.L.Z 0 r S U.T.Z.0 r 0 b.(.A 0 0 A ~.T.~.y ; ; [ {.b.; e q (.`.`.: ; = b..X^.[ A > y q q : 0 r [ ^.b.* e 0 ; r e e H _.{.b.y ; 0 y y : > y y q n.|.|.(.^.(.|.(.^.(.(._.(.`.(.(.(.(.).(.(.(.(.(.(.(.(.(.(.(./././.(.T.^.~.^.T.~./.!././.~./.~.~.~.T.~.~.T.T.T.T.U.T.U.T.U.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.T.~.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.~.T.~.T.~.T.T.T.~.T.T.Y.Z q r : b.T.Y.b.q : r > e.!.; r = b.E.T.b.r : = F.T.r r q [ /./.H 0 * L ^.(.[ 0 e : {.|.0 * e P {.{.b.* : * F.!.D * r Z U.T.y 0 * e.T.!.e.: 0 y ~.!.0 : 0 U L.].A * r ; Y.~.~.K.!.U.U.T.T.T.T.T.T.T.T.T.T.T./.T.~.~.~.~.Y.~.~.~.~.T.~./.~.~././.~./.!./.(.~././././.~.^././.~././.~././.~.~./.T././.!./.~./././.(././.(.(.(.(.(.(.|.(.(._.}.}.|.|.'.|..X X.X.X'..X.X.X.X.X.X.XxX.X.X'.dX.X.XdX.X.X.X.X.X.X.X.X.X.X.X.X.X.XdX.X.X.X.X X.X|.|.|.|._._.|.|._.|.|._.|.(.(.r r r 0 ^._.^.~.Q.= t : Q.{.[. Xn.q y y ` Q.[ y : > r '.^.[ r r r `.(.`.{.y r * b.|.[.n.q ; * F.}.b.q r 0 U m.b.y y q U '.|._.|._.|._._.|.(.(.(.(.(.^.(.(.(.(.{.(.).(.^.(.).(.(./.(./././././.~./.~.~.~.~./.~.T.~.~.~.~.~.~.~.XXT./.U.T.T.~././././.T.~.~.~./.~.(./.(./.(.[.(.^.~.~.~.~.T.T.T.T.T.Y.Y.T.T.T.T.T.I.T.U.T.T.T.T.T.T.T.T.P.Y.T.~.T.!.T.T.T.I.T.Y.P.P.L.P.L.L.D.U.S.L.", "N m N m m m V m m M m m M m m B N V M M N V V M V M N B B B N N B B B M B M B B B B B B B B B C C C C C C C C A C C Z Z A Z Z C B D C Z Z Z Z Z G Z G C u % $ $ & % ; ; r ; ; r 0 e r r r r r r r r r r r r r r r r r r r e r r r r r r r r r r r r e * r r r r r r r r r r r r r r r r r r r r r r r r e r r r r r r r * y r r r r r r e : r r r r r r r r r r : r r r r r r r r r r : r r r r r r r r r 0 : r r ; r 0 r r * * e % $ & & ].dX X@X.XzX.X.XdXdXdXdX@XdXdXdXzXzXzXdXdXzXzXzXdXdXdXzXdXcXzXzXzXzXzXzXcXzXzXzXcXdXzXzXzXzXzX.XdXdXdX.X XdX.X.X X.X.X|..X|.|.}._._.`.(.(./.(.~./.!./.(.~.~.~.T.[.P.T.T.T.T.T.P.P.T.T.P.P.P.L.L.L.L.S.S.L.L.L.L.S.L.H.H.H.S.Z.S.A.Z.A.A.h.Z.G.Z.Z.G.G.A.G.S.H.G.G.S.H.A.H.S.H.H.S.H.H.H.S.S.G.S.S.A.A.S.A.G.A.A.S ; e ; > q r e * r > q j.j.A > > y T T Z > 0 u z.g.y : > Y i.z.s.a.G q r q T T T = y N T i.Z ; t y G T q ; y : T r.G y ; * T G q 0 > y T s.V * : V p.i.G r 0 e i.i.T q : 0 T i.u.i.a.i.a.i.a.a.a.a.a.k.z.a.a.z.f.f.k.k.k.h.h.h.h.h.A.h.A.A.A.A.g.A.A.A.A.A.h.A.A.A.A.A.A.A.l.S.h.h.A.A.A.A.S.G.A.A.A.A.A.S.A.G.H.S.H.H.H.L.L.L.L.U.U.P.T.T.T.T.~.~.~.T.~.~.~./././.~./.[./.[././././.~.~.~.~.~.(.R.~.~.T.T.Y.n.> q = H ].T.T.T.U.I.T.~.[ q * e b.T.K.q ; ; [ T.[ r ; ; ].~./.~.T.T.Z * : Z (.T.~.S e e S /.~.b.r r > b.~.H r e u (.~.].* 0 q b.~.[ q ; = ].^.Q.e : e ` ].[ > : y b.~._.q e 0 [ `.` r : r q ` > ; : b.`.b.% : 0 n.L.n.Q.Q.n.n.T.|.{.(.|.`._._.^._.(.(._.(.(.^.^.(.(.(.(.(.(.(.(.(.(.(.(.(./.(././.(.~./.(././././.(././.~./.~.~.~.T.T.T.T.T.T.T.U.T.T.T.T.T.T.T.T.T.T.T.~.T.T.T.T.T.~.T.~.T.T.!.~.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.~.T.~.~.T.~.T.T.Y.Z 0 0 ; > q = r : : * : !.U.A ; y y b.b.y : * C /./.r ; y [ (.(.Z t * S (.(.b.0 ; ; `._.y e ; 0 ` n.y ; * C ~.~.F r r S T.T.> e e T !.Y.[ ; e ; T.T.U : = > y ; : r 0 0 Y.T.T.~.~.U.T.T.T.T.T.T.T.T.T.T.T.T.T.[.T.~.~.~.~.~.~.~.R.(.~.~./.~.(.!.!./.!.(./././././././.~.~./.~.~.~.~.~./././.~.{.T.~.~.~.~.~././.^.(.~.(./.{.{.(.(.(.^.|._.|._.|.|. X X.X.X.X.X.X.X.X'..X.X.X'.@X.X.X.X.X.XdX.XzXzX.X.X.X.X.X.X.XdX.X.XdX.X.X.X.X.X.X.X X|..X|.|.|.|.|.|.|. X|._.|._.[.> * y y _./._./.Q.q > > n.|.{.|.Q.q 0 : 0 0 y y r r q (.|.[ ; ; y |.`.|.(.r > e [ {.|.n.y > : Q.{.|.Z * y : : : y : q Q.dX'.|. X|.|.[.^._.(.(.(.`.(.(.^.(.^.(.^.(.(.^.(.{.^.(.).^./././././.~./.~.!.!.~.T.[.T.~.~.T.~.T.T.T.T.~.~.~.T.T.E.~.~././././.~.~.~././.)./.(.^.^.(./.~./.~.~.~.~.T.~.T.T.~.I.T.T.T.I.T.I.U.T.T.T.T.T.T.T.T.T.T.~.T.T.T.Y.T.T.I.U.Y.U.Y.P.P.P.P.L.S.L.L.L.", "m N M m m m m m M M B m M M N m N N C N N N N B N N N N B N N N M M B B N B B B B B B B B C Z C A C C C C C C C C C C C C Z C Z Z Z Z Z C Z B D D Z A F Z A % $ $ % % % * ; r r ; ; r r 0 r r r r r r r r r r r r r r r : 0 r r : r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r * e r r r r * 0 r r r r r r r r r r r r y r r r r r r r r r r r r r r r r r r r r r r r r r q e r r r r r r r r r r ; r = y * : % & # & ].@X(..X X.X.XzX'.'.dXdX XdXdX@X#XzXzXzXdXzXzXzXzX.XcXzXzXcXdXzXzX.XcXdXcXzXzXzXzXdXcXzXzXzXzXzXzXdX.XdXdX.X.X.X X X.X.X|. X|.}.}._._.(.(.(.(.(./././././.T.~.~.T.T.T.T.T.T.T.T.[.T.P.T.P.P.L.L.L.S.P.L.L.L.L.L.H.H.H.H.H.S.S.S.A.A.A.A.H.A.G.A.G.G.G.Z.H.S.S.H.A.H.A.H.I.H.H.H.H.H.H.G.G.H.G.S.S.S.S.S.A.A.G.H.S.Z 0 ; t = q = r y ; q G j.Z.T N t 0 0 : * * M e.j.g.= * : T z.u.i.z.e.q * r y = r % * D i.u.w.0 : = y * q ; : e E t.T M 0 ; = 0 0 * q T r.u.V e e N w.p.T y 0 0 t.t.T 0 r 0 T a.i.u.i.i.i.i.a.a.a.a.a.a.a.i.z.i.f.f.k.z.g.g.g.h.l.h.h.h.A.g.A.h.A.h.h.A.h.A.A.A.A.A.h.A.h.h.l.l.h.h.h.A.A.h.A.A.J.h.H.A.A.A.H.G.A.H.H.A.H.L.L.L.U.P.P.P.T.T.T.~.~.T.~.~.~./.~./././././.~.!.~./.!././././.~.~.T.~.I.~.R.T.T.T.b.e : e * 0 0 0 0 e r Z U.H > e u [ b.H > y ; ` ~.Y r e y ~.~.~.~.(.T.H * > u b.F.T.H : ; L T.T.n.r y = n.Y.[ 0 > * U n.F 0 0 = [ [.[ y : > G [ u 0 e r e.`.P r y y n.n.J ; > q [ (.b.t r 0 Q.`.u e e y !.Q.q 0 0 I n.b.C * S [ X(.`.|.`.^.`._.^.(.`._._._._.`.^.(._.`.(.(.(.^.^.(.(.(.(.(.(./.(./.^.(./.~.(./.^.(.^././././.~.~.~.~.~.T.T.T.T.T.T.T.T.T.T.T.~.T.~.T.T.~.T.T.~.T.~.T.~.~.~./.~./.~.~./.~.~.~.[.~.~.~.T.T.T.~.~.T.~.~.~.T./.~.T.~.Y.~.~.!.S = e e y = ; y y : = b.U.T.F.q * : q r : = B Q.!./.y ; 0 [ !.(.Z ; : S (.^.[ 0 ; > '.'.= r y y = q > ; : [ ~.[.S > y Z T.T.0 r e [ T.^.T e * > [.U.L.A 0 y = y H y r > Y.U.~.U.T.U.T.T.T.T.T.T.T.T.[.T.[.T.T.T.~.T.~.T.~.~.R.~.~.T.~.~.~.~./.~./././.~./.^././././.~.~.~.T.~.~.T.~./.~.~./.~.~./.~./.~.!.~./.~.~.~.(.(.(./.^.(.^.(.(.(._.|.|._.}. X|. X'..X.X.X'..XdX X.X.X.X.X.X.X.X.X.X.X.XdX@X.X.XdX.X.X.XdX.XdXdX@XdX X.X.X.X|..X.X X.X.X|.|. X|.|.}._.{.|._.|._.; * t q (._.{.{.n.q 0 * F.|.|.(.{.b.q > y * P ].: : r Q.`.[ y * y '._. X|.q = r b. X|.Q.q * y Q.}. X_.[ q r : 0 r L Q..X_.|.|._.|.|._._.`.`.(.^.`.(.!.(.(.(.`.!.(./.(././.(.^.^.^.(.(.!././.~./.~.~.~.T.~.T.~.~.T.^.[.E.XX~.~.T.~.~.P.^.[.~.~.~./.T./.~.~./././.^.(.(.(.{.(.(.(./.{.~.T.T.~.~.T.~.~.Y.~.Y.T.T.T.T.T.T.U.U.T.T.T.T.T.T.T.Y.T.T.T.Y.T.T.T.T.P.Y.P.U.L.P.P.L.U.L.L.S.", "m m m m m m m V m m M M M M M B N M N V M N N M N N N N m C m N M B B N B B B B N N Z B C B C C C C C C C Z C C C D C Z Z Z C Z B D Z D Z D Z Z G Z H C Z Z u % $ o $ % % % 0 = ; ; ; r = r r r r r r r r r r r r r r r r r r r r r r r r e q r r : y * r r r r r r r r r r r 0 r r r r r r r r t : : y r r r r r r r r r r r r 0 r r r r r r r r r r r q r r r r r r r r r r r r r e r r r r r r r r r r r r r r ; 0 * y ; % % $ o # t '.'.|..X.X X.X.X X@XdX@XdX X.XzX.XxXzXzXdXzXzXzXzXzXcXvXdXcXvXzXcXcXxXdXvXzXdXcXxXzXxXxXzXzXzXzXzXzX.XzXzX.X@XdX X'..X|..X|.|.|.}._._._.^.(.(./.(./.~.(./.~.~.~.T.T.[.P.T.T.T.T.T.[.T.U.P.P.P.P.L.L.L.L.S.L.G.L.L.G.H.H.H.H.H.H.H.A.H.g.S.h.H.A.G.A.A.h.S.A.S.S.S.S.H.A.H.H.H.H.H.H.H.H.H.H.H.A.H.S.S.S.A.A.G.A.A.A.A r ; r 0 y 0 ; q Z T d.f.i.z.T A y 0 e = Z T k.a.z.y = = Y f.a.i.f.i.T Z q * = e = T T u.u.u.T y = * y U m ; = E t.t.T V = q q = u T u.r.r.N e > B w.p.G * = y u.u.T q y q E u.u.i.u.i.i.u.u.s.i.a.a.a.a.a.z.i.f.f.f.a.f.k.k.h.l.l.l.l.h.A.h.A.h.A.A.g.h.A.A.D.g.A.A.h.h.h.l.h.h.l.l.A.A.A.A.G.A.A.A.A.A.A.S.H.H.H.H.H.H.H.H.L.Y.U.U.T.T.T.~.T.~.~.~.~.~.~./.~.~././.~././././././././.~././././.T.T.[.T.T.T.Z.0 0 r r * 0 * > : e A !.T r = q y r 0 r % y e.!.b.* y = ).Y.R.^.~.T.Y y > y * ` ~.S * e Z ~.(.F.* e y F.[.].y * > 0 r * = q 0 [ (.F.* * : r 0 q : > : b. XY ; * t > y = y * 0 b.|.` r ; q X`.b.0 : > [ ].[ y : > 0 r * > q Q._.|.`.`._._._._._.`.`._._.^._.|.|._._.(.(.(.(.(.^.(.(.(.(.(.(.(.(.(.(.(./.(.(./.(././.(./././.!.!.~.~.T.~.T.T.T.T.T.T.T.T.T.~.T.~.~.T.T.~.~.T.~.~./.Y.~./././././.E.^./.~.~.~.~.~.~.T.~.~.~.T.~.!.~.~.~.~./.~.T.~.!.~.Y.Y.H = r r r r e ; t H ` T.L.T.(.F.F ; * y ; H F.~.^.].y r q [ ~.^.H : ; P `.(.[ q 0 q (.`.y * y [ S : > q ` ~.(.T.H q q A T.T.q ; q [ (.!.b.0 0 = L.T.~.].b.[ b.F.T 0 0 * T.T.T.I.T.U.T.T.U.T.XXT.T.T.T.T.T.T.~.~.T.~.T.~.~.~.T.~.R.R./.~././././.(./././././././././.~.~.~.~.~.~./.~.~./.~.~.~.~.~.~.~.~.~.~.~.^.~.(.(.(.(./.(.(.(.(.(.`._.|.|._.|.`.|..X|.'.'..X.X.X.X@X.X.X.X.X.X.X.X.X.X.X.XzX.X.XdX.X@X.XdX.X.XdX.X.X.X.X.X.X.X.X.X.X.X X.X|.|.|.|.|. X}.|.{. X|.|.|.(.`.|.^._._.(._.!..X]. X_.{.|.|.|.`.n.n.'. X(.|. X`.@X{.|.|.|. X{.|.(._.`.`.`.|.|.{.|.|.'.}.}. X_. X|. X].Q.F.]. X'. X|.}.}. X X|.|.|.(._.(.(.^.(.(.(.(.(.`./.^.(./.(.(.^.{.(.(./././././.!./.~.~.~./.T.~.T.~.~.~.T.XXT.T.~.~.~.T.~.~.~.T.~.~.(./.~.~.~./.~.(.{.|.^._.|.|.(.(.(.~.~.R.~.R.T.T.T.T.T.T.T.T.T.T.I.U.T.U.T.T.T.T.T.T.~.Y.T.T.T.!.Y.T.T.T.U.T.U.Y.L.P.P.P.L.L.U.U.S.", "m m m m m m m m B m M m m M M N V N N N N N V N N N V B C m C N N B B B B B B B B B B B B C B B C C C C C C C C C B C C Z C C Z Z D Z B Z B Z Z Z C Z Z N D D A % $ $ $ % % 0 * : : r r r r r r r r 0 e r r r r r r 0 e r r r r 0 r r r r r r r r r r r r r r r r r r r r r r e r r e r r r r r 0 y y * r r r r e q r r r r r r r r r r r r r r r r r r e r r r 0 e r r r r r r r r 0 r r r r r r r r r r r r r r r : : * % $ $ u '.`.'.dX X XdX XdX.X.X.X.X'.dX.XzXzX'..XzXdXdX'.zXzX.XdXdXvXdXzXdXzXzXvXvXcXzXcXzXdXdXdX.XdXzXzXzX.XzX.XzX.X'..X.X X X X X|. X_.`.}._._.(.(.(.(.(.(./.(.~./.~.~.T.T.T.T.T.T.T.P.T.T.T.U.~.^.P.P.P.L.L.L.L.L.L.L.S.G.L.H.H.S.S.A.A.A.A.g.H.A.A.A.A.A.G.A.H.S.A.S.S.A.S.H.H.A.S.H.A.H.H.S.H.A.H.S.S.S.S.A.A.A.A.A.G.A.h.h.l.A.A.h.z.z.A.Z.g.j.f.z.z.a.k.f.e.w.T e.j.z.f.z.g.s.j.u.z.z.i.f.i.x.i.u.a.T T T i.t.a.i.p.u.s.i.T E t.u.E i.u.t.t.t.p.w.t.T T w.E t.t.r.r.r.i.t.t.u.u.y.u.p.u.t.t.u.t.s.w.i.u.i.u.i.u.u.i.i.u.u.u.i.a.a.a.i.x.f.f.f.f.z.k.h.h.l.h.l.l.h.h.h.h.h.h.A.h.A.A.A.h.A.g.A.h.h.h.h.l.h.h.l.l.A.h.A.A.S.A.A.J.A.H.A.A.A.H.H.H.H.S.L.L.L.U.L.T.U.T.T.T.~.~.T.~.~.~.~./.^.~.~./.~.~./.[.^./././.~./.T././.~.~.T.T.T.T.h.y > 0 r r r r > r q F ~.F.L e > > C b.U r : K !.[ q r y T.(.~.T.~.~.Q.C : = q D ~.J q 0 L T.].F.y 0 = n.T.{.F.u 0 q r [ : e 0 ` (.^.[ y q ; y n.J ; y [ X].H 0 r q u b.) y r S _.b.0 e q _.~._.A y : q Y.dX[ y = r : : A n..X_.`.(.|._.|.[._.|.(.(._.(.`.|._.(._.`._.`.`.^.(.|.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(./.(./././.~./.~.~.~.~.T.~.~.T.~.T.T./.T.~.T.^.~.~.~.~.!.~.~.~.~././.!./././././.(./.^././.!.~././.^.~.~.~.!.~.~.~.!.~.~.~.~.~.T.~.~.T.~.!.^.~.T.U.T.T.T.T.T./.~.T.~.T.T.~.].n.n.].!././.{.R.(.(.(.(.~.^./.`.^.(.(.(.`.!.dX`.`.^.|.`.`.^.`.F.F.].(.~.T.~.T.].!.T.U.U.P.~.Y.Y.H.T.T.K.].].T.T.y y H [ !.T.L e > q Y.T.!.T.T.U.T.T.T.T.U.T.~.T.~.~.T.(.T.~.~.T.~.~.Y.T.~.~.~.(.R.(./.(././././.(././.^././././.[.~.T.~.~.T.~.~.~.~.~.~.~.~.T.~.T.~.~.~.~.~.~.(.~.~.(.(.(.(._.(.(._._._.{.|.|.`..X|.@X'..X|..X.X.X'..XdX'.dX.X.X.XdXzX.X.X.XdX.X.X.XdX X'.dXdX.XzX.X.XzX.X'.|..X.X|..X|.|..X.X|.|.|.|.|._.|. X_._.{.(.^.|._._._._.(.{.|..X|._._.|._._.`.@X(.|.{.{.[.`.'.^._.|.|.|.|.|.|.$X_.`._.(._.{.(.`.`.|.|.|._. X`..X X X.XdX.X.X@X|..X X X.X X|._.|._._._.(.|.(.(.(._.(.!.(././.(.(./././.(.(./.(././././.!.~.~.~.~.T.~.~.~.~.~.~.).T.~.~.T.T.T.~.~.~.~.~.~./.~.~.~.~././.(.^.(._.(.(.[.(.(.(.(.~.(.R.T.(.~.T.T.T.Y.T.T.T.T.I.P.T.T.U.T.T.T.T.T.Y.~.T.~.T.T.Y.T.Y.U.T.U.U.U.Y.U.P.L.U.L.D.U.S.", "m m m m m m m m M M M M M M N M N N N N M M V C N V B B N C A N B B B B B B B B B B N N C B C C B Z A C C C C C C C Z C Z C Z Z B D Z C Z C Z Z Z D Z Z D A D D u * $ $ $ & % % * ; y : r r : : r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r r r r * r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r * r r r r r r r r r r r r r r r r r r r ; ; ; * - $ o ` '. X X|._. X.X'.dX XzX.X.X.X'.dX.XzX.XzXzX.X.XzX.XzXzX.XdXcXdXdXxXcXnXdXdXnXdXvXcXzXzXzXzXnXxX.XfXzXdXdX'.zXzX.X.X.X.X|.|.|.|.|._._.`.`.^.`.^.(.(././././.~.~.~.~.T.~.T.T.T.T.T.T.T.T.T.T.U.P.T.Y.Y.L.P.L.L.L.S.L.H.H.L.H.H.H.G.H.A.A.A.J.A.h.A.A.A.G.A.S.A.A.H.A.S.A.H.G.S.A.H.G.H.H.A.G.H.S.S.S.S.G.A.S.S.G.A.A.l.G.l.z.A.A.h.z.h.f.f.z.s.f.i.a.z.f.f.k.g.k.a.a.g.z.g.g.i.j.g.z.f.i.s.i.i.u.x.a.t.u.u.u.u.s.i.u.s.u.t.r.s.t.u.t.t.t.r.t.t.t.u.t.t.t.r.E t.t.r.t.t.t.t.E i.r.w.t.t.t.p.i.u.i.E i.p.u.u.u.u.u.u.u.i.u.i.u.u.a.i.a.a.a.a.f.f.f.f.g.g.k.h.j.z.h.h.h.h.h.h.h.A.h.h.D.g.A.z.h.A.h.h.h.h.h.h.h.h.l.h.h.A.A.G.S.H.l.h.Z.A.S.S.H.H.S.H.H.L.L.L.L.U.U.Y.T.T.T.~.~.T./.~./.~.~.T.!.~.~.~./.~././.~./././.~./.~./.T.T.~.T.~.T.~.Y.T.T.T.U.R.T.U.T.Y.!.T.T.T.!.F.n.F.T.(.T.(.!.~.[.!.!./.!.T.(.T.~.T.T.~.~.n.b.F.].(.!.(.(.!.[.T.~.~.^.].^.E.|./.(.Q.n.XX].y : * b.`.^.{.].n.Q._._.^.`._.(.[.{.(.].n.!.^._.{.(._. X{.`.'.'._._.|.{.(._.'.^.`.{.`.`.!.n.Q.].{._._. X_._._._.}.}.|._._._._._._.(.^.}._.|._.^.(.(.(.^._._.(._.(.(.{._.^.(.(.(.(.(.^.(.(./.(.(.(.!././.~.~.~.~./.T.~.~.T.~.T.~.~.~.^.~.[.~.~.~.~.~.~.~.~././.(.(.^./.(.(.^.(.(.(././.(././.~.~./.~./.~.~./././.~.~./.~.[.!.T.T.T.T.T.T.T.T.T.T.R.T.T.T.(.T.~.~.(.!.~.~./.^.(.(./.[.(.(.[.(._._.(.(.(.{.`.(.(.`.(.{.{.`._._.!.|.^.`.(.(.~.(.^.T.T.T.T.K.(.T.Y.Y.Y.T.T.P.~.T.T.~.T.~.N e = 0 A S > y ; U L.U.Y.T.T.T.T.T.U.T.T.T.T.T.T.~.T./.T.~.~.T.[.T.~.~.~.~.~.T./.(.(.~.(.~.).(.(./.(.(././.~.T.~.~.~.T.~.~.(.T.T.~.~.~.T.~.~.~.T.~.T.~.~.~.~.(.(.(./.(.(.(.(.(.(._._._.|._._.'.|.|.|..X|..X.X'..X.X.X X.XzX XdX.XdXdX.X@XdX.XdX.X.XdX@XdXdX.XdX@X'..X.X X.X.X.X.X.X.X.X.X|.|. X X|.[. X_._.|.|.[._.`.`._.|.{.'._.(.{.{._._.|.`._.{.^.|.^.`.|.}.}._.`.|.|.'..X|.`.|.|..X'.'. X`.|.|.'.^..X`..X.X.X|. X_. X@X.X.X'. XdX X'.cX XdX|..X|.|.|._.^._.(.[._.(.(.(.(.(.(./.(./.(./.(./.(.~./././././.~.~./.~.~.T.XX~.~.T.~.~.~.T.~.T.~.T./.^.~.T.~.~.~.(.(./.~.~.~./.(.(.`._.(.|.(._._._.(.(.(.R.!.R.~.T.T.T.T.T.T.T.T.U.U.T.U.T.U.U.T.T.T.Y.Y.T.Y.Y.T.T.T.T.T.U.U.U.L.Y.L.P.L.Y.L.L.L.L.A.", "m m m m m m B V m m M M M m N M m m u N A M M N N N N A A N N N B B B B B B B B B B B C B C B C C C C C Z A C C Z C C C Z C Z Z F Z Z Z Z D Z B C C Z Z Z F D Z Z S e $ $ o o & % % * : r r ; : r r r r r r r r r r r r r r r * r r r r r r r r r r r r r r r r e r r r r r r r r r r r r r r r r r r r e r r r r r r r 0 r r r r r r r r r r r r r : r r r r r r r r r y r e 0 r r r r r r r r r r r r r r r ; ; * * $ $ # # $ n.`.(.|.|. X@X'.|..X.X X.X'..XdXdX.X.X.XzXzX.XzXzX.XzXzXzXzXdXdXdXcXdXcXdXcXvXcXdXvXzXzXzXzXdXdXzX.XdXdX@XxX#X.XzX.X.X.X.X'.|.|.|.{._.`.(.(.`.(.`.(.(.(.(.(.(./.~.~.~.~.T.T.T.T.T.T.T.T.T.T.[.Y.T.P.P.P.P.P.L.L.L.L.S.L.H.G.A.H.G.A.H.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.S.A.S.S.A.H.A.H.G.A.H.l.G.Z.S.S.S.H.A.A.G.G.A.A.l.l.l.l.h.g.k.k.h.j.j.h.z.a.j.j.d.i.z.i.f.a.a.a.a.i.k.i.i.f.f.s.a.a.a.s.f.i.u.t.i.i.i.i.a.t.u.s.u.u.u.s.u.u.i.t.u.t.t.t.r.t.t.t.t.t.t.t.e.t.u.t.t.y.t.t.t.r.t.r.t.u.t.u.u.t.u.u.u.p.u.u.r.u.u.u.u.u.u.u.u.u.u.u.a.a.i.k.f.k.f.f.g.g.k.k.j.k.h.h.z.h.h.h.h.h.h.h.h.A.h.D.A.g.S.h.h.h.k.h.h.h.h.A.j.A.A.h.H.z.H.G.l.Z.S.A.h.H.S.H.H.L.L.L.Y.U.U.P.U.T.T.T.~.~.T./.T.~.~./.~.~././.~./.~./.^.!./.~.~.~.T.T.~.~.T.~.T.I.T.!.T.T.U.T.U.T.T.T.T.T.~.T.T./.T././.R.(.~.!./.~.[././.~./.~.!.^.~.[.T.T.!.[.E.{.(.~.`.T.(.~.~.[.[.[.{.^.[.^.~.^.{.{.(.[.(.q > y [ {.).[.{.[.(.(.{.(.(._._.|.{.(.'.|.{.`._.{.{.^.`._._.(.(. X_._.{.|.`.|.'. X|.|.|.|._.{.|.|._.|._._.|._._.}.}._._.|._.|._.|._.|.}.}._._.`.`.(._.{._._.(.`.`.`.(.^.`.(.(.(.(./.^.^.(.^.(./././././.^.~.~.~.(.~.~.~././.~.T.~./.!.~.~.~.~.[.^.~.^././././.(.(.(.(.(.(.`.(.(.^.(.^.^./.^.^././././.~./.~.~.~.(./.~.~.(.T.[.T.(.~.T.T.~.T.T.~.T.~.~.~.T.~.~.~.~.[.~./.(.~.!.(.(.{.(.(._./._._._.(.(.^.`._..X(.(. X`.(.|.`.(.{.(.(.!./.T./.!.(.~.T.[.T.T.T.!.~.T.U.!.T.T.T.T.(.P.U.b.* t 0 r 0 ; 0 u Q.U.T.T.~.U.T.T.T.T.[.T.T.T.T.T.~.T.T./.T.T.~.T.~.Y.).~.~.~.(.T.).~.(.(.(.(.(.(./.!.(.(.!./.(.~.T.~.~.T.~.T.~.~.T.T.~.~.~.T.T.T.~.~.~.~.~.(.T.~.(././.(.(.(._.(.(.(._._.|.|.|.'.`.@X|.|.'.'..X.XdX.XdX@X.XdX@X.X.X X.X.X.XdX.X.X.X.X.XzX.X.X.XdXdX.XzX@X.X.X|..X.X.X|.'..X.X|.|.|. X X|.|.|.|.|. X{.|.|._.|.|.(. X(.|.(. X|._.|.|._.'.`.`.}.|.}. X_._.`.|.|.|..X{.|.(.|._. X_. X|.`.@X`.|.|.|.|.'.'.dX.X X.X.XdXdX'..X.X X@X|.|.`.|.|.|.|._.|._._._.(.(.(.(.).!.(./.(.(.(.^././.(././././././././.~.{.).XX~.~.~.~.~.~.~.~.T.~.~.~.~.~.~.~.~.~.~.~.(.~.~././.(.`.(._.^._._.|._.(.(././.(.R.~.T.T.~.T.~.Y.T.T.T.U.T.U.U.U.U.T.U.U.T.T.T.~.T.T.T.T.T.Y.T.U.T.U.U.L.U.L.P.D.L.L.L.L.P.", "m m m m m N m m M m M B M N C M N N N B N B B N N C N C N C C N B B B B N N Z N C N C N N C C C C C A C C C B C C C Z C F C D Z B D Z Z Z Z Z Z Z Z Z Z Z Z D Z Z Z H u $ o $ o $ $ % * ; ; ; ; r r r r r y : * y r r r r r : y r r r r r r r r r r r r r r r r q r r r r r r r : y * r e 0 r r r r r r r r r q y r r r r r r r r r r r r r r r r r r r r r * r r : r r r r r * * q r r r r r r r : q r r ; : * ; $ $ $ # r ].'.`.{._. X X|..X|..X X.X.X.X.X@X|. X.XdXzX`.'.dXdX.XzX.XdX.X.XvX.XcXdXcXcXdXcXzXcXnXdXxXzXzXxX.XzX.XdXzX.XzX'.zX.X X.X.X'.|.|.}.}._.}.}._.^.(.(.(.(.(.(././././.T./.~.T.T.T.T.T.T.T.T.T.T.P.T.T.U.T.T.Y.L.U.L.L.L.H.L.Z.H.H.S.H.S.S.S.S.H.A.A.A.h.A.A.A.A.A.H.h.A.A.A.G.A.G.J.H.H.A.H.A.H.H.G.A.G.S.A.A.A.A.h.H.z.g.h.h.l.z.Z.g.g.k.g.h.g.f.k.i.z.k.d.g.f.i.a.a.z.i.a.i.a.a.a.z.d.a.a.a.i.z.i.a.i.i.i.i.u.u.r.u.u.t.i.u.s.u.r.u.t.t.t.t.p.t.r.y.y.t.t.t.t.r.r.y.y.y.y.t.t.y.r.r.t.r.t.t.t.t.t.u.a.u.t.u.t.u.t.i.u.t.s.r.s.u.u.r.a.s.t.s.a.a.z.f.k.k.k.k.k.k.z.k.k.g.k.h.h.h.k.h.h.h.h.S.h.A.h.h.l.l.l.l.l.h.h.h.h.l.h.l.A.h.A.A.A.A.A.S.S.S.H.H.G.H.L.K.H.L.U.L.I.T.T.T.T.T.T.T.~.T.~.~.~.~.~.~.~.~.~.~.~.~.T.(.T./.~.!.^.~.~.^.R.T.T.~.T.T.T.T.T.~.T.U.(.U.!.Y.T.T.T.[.T.^./.T./.(./././.(.!.(.{.~.(.~.!././.!./.~.(./.(.(.[./.^./.!.^.^./.(.(.(.(.(.(.(.(.{.].(.`.q r 0 [ (.|./.(.`.].(.`.`.^.`.(.`.^.(._.(.|.|.(.(.`.`.(.|.|.[.|.`._.(._.{._. XdX|. X|. X|.|.|._. X_..X_._.|._.`.`._._._._.^.^.|._._.|.|.|.{._._.(._._._._._._._._.[.|._._._.^.`.^.(.(.^.(.(.(.(.(.(.(./././.!.^./.~.(.~./.~././.~.~.~.~.~./././././.~.{.(.(.(.(.(.(._.(.|.^._.(.(.(.(.^.(.(./.^./.(.(.^././././.!./././.!.!.(.(.T.T.[.~.T.[.!.~.Y.T.!.~./.Y.!.T.(.T.^.^.{./.(.(.(.`.{.(.(./.{._.^.(._._.|.(.(.`._._._.`.(.`.(.^.|.(.(.[./.~./.!././.~.~.T.T.T.~.U.T.P.U.I.T.T.T.Y.T.T.F.T H S H _ T L.T.T.T.!.U.Y.T.T.T.T.T.~.T.T.~.T.T.~.T.T.~.~.~.Y.E.!.~.~.~./.].(.^./.(.(.(.^.^.{.(.(.~././.~.~.~.T.T.~.T.~.T.~.T.~.T.~.T.T.T.~.~.~.T.~.T.~.~./././././.(.(.(.(.(.(.(.|._.|.|.`.|.`.`.`.|..X.X.X.X.XdX.X.X.X.XdXdX.XdX.X.XzX.XzX.X.X'..XxX'..XzX.X.X.X.X.X.X.XdX.X X'..X.X.X|. X.X|. X X|.{.|..X`.`.`.`.`.`.|..X{.`. X}.}. X}._.^.`.`.|.`. X X'._.|.(._. X'.@X^.'._.|.`.'.@X X_.|.(.`. X.X.X.X X X'. X.X'.dX XdX'.@X|.dXxXdX X|.'..X|.|.|.|._.|._.|._._._._.(.(.(.(.(.(.(.(./.~.~.~././.^./.~././.~.~.~.~./.~./.~.~.T./.T./.T./.~.~.[.XX~.~.~.~.~././.!./././.(.).^._._._.|.{.{._.(.(.~.~.~.~.T.~.T.T.T.T.T.T.Y.T.U.T.P.P.T.T.P.U.T.T.P.T.T.T.T.T.T.T.U.U.T.P.P.L.L.L.L.L.L.L.L.H.L.", "m m m m m m m N M M M M B M M M N N B N B B N B N C C m C N N C C B B B C N m A N C N C C C A C C C C C C Z C C C C C C C D Z Z Z Z Z C C Z Z D C Z C Z Z Z D D H Z Z D u : $ o $ % % % ; * * r 0 r r r 0 : : * : 0 r r r y * r r r 0 r r r r : r r r r r r 0 r r r r r r r r r r r r r r r r r r r r r r r r * : r r r r r r r r r r r r r r r r y * r r y r r 0 r * r r r y r e 0 e r 0 r ; e e ; ; * ; * & $ $ # $ I ].dX^.^._.|. X|.|.|.|.|..X|.|..XdX'.fX@X.X.XdXdXdX@X.XzX.XxXdXdXdXdXcXdXvXdXcXdXcXzXdXdXdXdXcXdXzXdXzX.XdXzXhX@XdXdX@XdX.X.X.X X}.}.}._._._.|.(._.(.!.(./.(././.T./.~.~.~.T.~.T.T.[.T.T.P.T.P.T.T.T.T.T.U.Y.L.L.L.L.L.L.H.L.D.P.H.H.S.S.S.A.A.h.A.A.S.g.A.g.A.D.A.A.A.A.A.G.A.A.g.A.A.A.A.H.A.A.A.S.h.G.S.D.D.L.A.Z.A.G.Z.A.h.j.z.a.d.j.a.j.f.a.d.i.i.i.i.i.i.i.d.a.i.i.a.z.d.a.a.a.a.a.a.a.i.i.i.i.i.a.u.u.t.u.u.i.t.t.u.u.t.u.i.t.t.u.t.t.r.t.t.p.u.t.r.t.u.t.r.y.s.y.t.w.y.r.r.t.y.r.y.u.u.t.w.i.r.t.u.u.t.t.s.t.r.t.t.r.u.r.u.u.u.u.s.i.a.a.a.g.k.a.f.k.k.k.a.z.k.k.h.k.k.k.h.k.h.h.z.D.h.A.h.l.l.l.h.l.l.h.h.h.l.l.l.l.A.A.A.A.A.A.A.A.A.S.H.Z.H.H.H.H.H.U.L.L.L.Y.U.U.T.T.T.~.T.~.T.~.~.~.~.~.~.~.~.~.~.~.(.~.T.~.~.T.T.(.U.T.~.~.T.Y.T.T.T.T.T.T.T.T.L.T.T.T.P.T.T.T.T.~.I.(.(.R.(.E.~.[././.!./.~./.(.~./.(.~.T.(./._./.~._././.~.[.(./.!.^.{.~.^.~.|.^.(.`.`.|.b.[ [ Q.(.^.(.(.^.(.`.(.{.(.(.(./.(.{.(.(.(.^.{.^.^.`.`._._._._.|._.(.(._.{.^._.|.|.|.|._._.`.|._.{._. X`. X_.|.|._._._.`.|.|.|.|._.|.|.|.|.|.(.|._._._._._._._._._._._._._.`.(.{._.(.|.(.(.(.E././.(.(././.^.~.(.~././././.[.!.~.~.^.~././././.(.^.^.(.(.(.(.(.(.[._.^._.|._.|._.^.`.^.(.(.(./.(./.(.(./.(./.(.(./././.(.~././.Y.(.U./.U.T.(.T./.~.T.T.~.{././.~.(.(.{./.(.{.|././.^.`.(.`.(.`.|.(._.`.^._._.`._._._.(.|.{.`.^.~.T.(.(.(.~./.!.T.T.R.~.U.~.L.!.H.(.T.U.I.L.T.L.T.U.U.Y.T.I.!.R.T.U.T.U.T.T.E.I.Y.P.~.T.T.T.T.T.T.T.~.T.T.T.~.T.T.T.~.T.~.~.~.~././.E.(.(.(.(.(.{.(.(.(.).{.{./.(.~.~.~.~.T.~.T.T.T.T.~.~.T.~.T.T.T.T.~.~.~.~./.~./.~././.(././.(.(.(.(.(.{.{.}._.`.`.|. X`. X.X.X.X X@X.X.X.XdX.X.X.X.X.X.X.X.X.XzX'.zX'.zX.XzX'.zXxX.X.XdX.X.X.X.X.X.X'..X.X.X.X.X|.|.|. X].b.[ [ [ b.b.'.^..X`.(.|. X}.|.|.}.|.^.|. X|.{.|. XdX`.|._.@X_. X_.|.|.'. XQ.P Z |. X X].` P S [ .X'.@X Xn.H ) [ '.@X'.Q.b.[ b.[ ` @XdX|.|..X|.|.|.|._.{.|._._._.(.(.(.(.(.^.(.(./.(./.^.~.~./././.(./.~.(./.(./././.~./.T.R.~./.T.~.~.~.~.~.U.XX~.~.~.~./././././.(.(.{.(.(.(._.`._._.|.(.(.(.~.~.~.~.Y.Y.~.T.T.T.T.U.U.Y.P.T.T.P.U.T.T.T.T.T.T.T.T.T.T.T.U.T.P.P.P.L.L.L.L.P.S.L.L.D.D.L.", "m m m m N m m N M M N N M B M N F N N B B B B B C N N N A N C N C B C B A N B B N B C C C N C A C C C C C C C F C C F B Z C B F C Z C F Z C Z B F D B Z Z Z Z D Z Z Z D Z Z A $ o $ o $ % % * 0 * * : : r r q : : y r r r r = r e r r e r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r e r r r r r r r r r r r r r r r r r r r r r r : r r : : r r e ; r * % = * % $ $ o * n..X`.(.`._.{._._.|._.@X X|..X.X|..X X'..X.X.X.X.X.X'.cX.X.XzX.XxXdXdXdXdXvXmXdXdXcXzXvXzXzXnXxXdXdX.XzXzXzX.XxX.XxX.X.XcX.X.X.X'. X|.}.}._._.`._.^.|.^.^.(./././.~.(.T.~.~.T.~.T.T.T.T.T.T.T.T.T.T.T.T.U.Y.T.T.U.L.L.L.L.H.S.L.U.H.H.S.S.S.S.S.A.A.S.S.A.A.z.A.A.h.A.A.A.A.A.A.A.A.H.A.H.g.A.A.A.A.A.A.h.H.Z.S.z.A.A.H.G.l.h.h.h.j.z.g.d.d.f.z.a.a.i.z.i.i.i.d.f.i.i.s.a.i.i.a.i.a.s.i.s.s.i.a.i.i.i.i.i.i.t.t.s.u.t.p.u.u.t.r.t.i.t.r.t.u.t.t.r.t.t.t.t.u.t.t.t.u.r.u.w.G w.t.r.r.t.E E G E w.t.r.w.t.t.w.T T r.t.t.t.r.r.t.T E G p.u.u.u.i.u.i.a.a.k.k.a.f.k.k.k.g.z.g.k.g.g.g.g.z.z.l.l.g.A.h.z.l.z.h.l.l.l.l.h.h.h.h.g.A.A.l.A.A.A.A.h.A.S.A.H.H.H.H.H.K.H.L.L.U.L.L.Y.T.U.T.T.T.T.~.T.~.~.T.~.T.^.~.T.~.~.T.~.~.U.~.~.~.T.T.P.R.Y.T.U.~.~.T.T./.U.U.U.U.T.U.U.T.T.(.~.(.T.^.~.~.(.(.~.(.(.(.{.(.{.!.[././././.!.(.^.^.^./.(.(.(.~.^.E.(.^.{._.(.(.{.^.^.`.`.^.{.(.`.|.[.(.{.{.~.^._.^.`.^.`.^.(.(.(.~.`.(.(.(.|.{.(.{.(.`.|.`.}._.|. X X{.|._.`..X|.|. X'._._.|.|.(._.@X X{._.`.|._.`._.|.|.{.(._._._.|._.{.|.|._.|._._.|._.{._. X_. X}.}.}.}.}._._._.|.(.(.^.{.^.(.|.(.(.(.(.(.(.(.(.(./.(.~././.[.^.~././.E././././.(./.(.(.(.{.^.(.}.}.}.|.|._._.|.|.[.|.^.(.(./.(.(.(.(.!.(./././.(.^./.b.[ e.[.[.n.[ T U.T.~.~.~.[.T.^.[.[.T.~.[.[.[.~.[./.`.~.(.).b.[ F.(._.`.^.`.)._.{._.|.|._.(._. X'.(._.`._.{.{.[.{.(.T.~.~./.T.~.R./.n.Z H T.U.T.P.` A Z [ T.U.L.Y.T.K.T Z Z Y.[.L.U.T.U H Z Y.~.~.~.T.~.T.T.~.T.T.T.~.~.T.~.T.Y./.~.~.(.K././././.(.~.(./.(.(.).(.^./././././.~.T.T.~.T.~.T.~.T.~.~.~.~.T.[.~.T.T.~.~.~.~.~././.(./.(.(.(.(.(.(.(.{._._.^._.|.`.|.|.|..X|.'..X'..X.X.X.X.X.X@XdX'.dX.X.X.X'..XzXzX.XzXzX.XzX'.#X.X.XxX.X.X.X.X.X'. XdX'..X.X.X.X.X|. Xm.y e 0 q r y Z `.{.|..X`._.|. X_._. X X_.'.|.(. X(.}.`.@X|. X|. X X_.|.dXQ.S * y _. X'.y > u y y [ .X.X) = u u : Z '..XI > y : t y .X.XdX.X|..X X|._.|.|.|.`._._._.(.(.(.(.(.(././.~./.~.~./.~././.^././.^./././.(./././././.~.~.~.~.~.~.~.E.~.~.~.~.~./././.(./.(.(.^.(.(._.^.^._.(.|.^._.{.(./.~.Y.~.T.~.T.T.T.T.Y.U.T.T.Y.U.T.U.T.T.U.P.P.T.T.T.P.T.T.T.T.P.P.P.L.L.L.L.A.L.L.L.L.L.P.L.", "m m m m m m m N M M M N B M N B N N B B B B B B N N C A N C N C N B C B N Z B N C C N C C N C C C C C C C A C C A C C Z C Z C Z Z Z Z Z Z Z F D B Z Z Z Z D Z D U C Z L D Z D A * $ o o $ $ * % : % y : = y : y r r r r r r t r r r r r r r r y * r r r r r r r r r r r 0 e r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r e r 0 : r r r r r r r r r r ; r r ; : * r % & $ o & _ ].^.^.^.[.|._.(.|.|.|._.|.|.|.|.|. X'. X X X'..X.XdX.X.X'.zXdX.XxXzX@XcX.XvXdXdXdXdXcXzXzXzXzXdXdXdXdXzX.X.XzXvX.X.X.XdX@X.X.X.X.X'. X X}.}._._.`.|.^.(.(.(.(././././.~./.Y.~.~.~.~.T.T.T.T.T.T.T.T.T.T.T.T.Y.U.U.L.U.L.L.L.L.L.U.S.L.H.S.S.S.A.A.A.A.S.h.A.A.A.h.l.A.h.A.j.A.g.A.A.H.A.A.h.H.A.A.A.A.Z.A.H.Z.0 0 0 = = > A T A.j.h.z.a.h.z.z.z.a.g.a.Z : : d.f.0 : A i.i.i.z.i.a.i.i.a.a.i.i.i.z.i.i.i.i.T = > G E T > q u.p.y 0 B w.p.p.p.t.u.w.t.r.r.t.y.t.u.t.t.u.t.T q = T r.y.E T q 0 e e A E t.u.E G q q = = G u.r.u.T m q q * C E u.u.i.i.a.a.a.a.a.z.f.f.f.k.a.g.k.k.k.k.g.g.l.l.l.h.h.h.h.S.l.S.h.l.l.l.l.l.h.h.h.A.l.l.A.A.h.A.A.A.A.A.A.S.H.H.H.H.H.L.H.L.K.R.L.U.U.T.U.T.~.T.T.T.T.T.~.T.~.T.~.~.T.~.~.T.T.U.T.~.!.I.T.P.` S H J Y Y.T.U.J.T.XXT.T.T.U.~.~.T.XXP././.T./.~.~.T./.` [ [ [ [ [ F.(./././.(.~.(.(.^.(./././.(.^._.{._.^.[.E.[.(./.|.^. X!._.|.[ [ F.{.(.{.{.{.|.`.^.^.(./.`.`.(.{.|.(.(.`.(.(.(.|.(.^._.(.'.}.~._.[ P b._._.'.[ I J ` Q.dX|.|.Q._ ) S n..X{.`.~.` S ) n._.|.`.`.(.|.|.|._._.|.|._.|.|._.|._._._._._.}.}.}.|.}.|.|.|._._.|._.|.(.(.(.(.(.(.(.(.(.(.(.{.(.(.(.^.(.(.E./.^./.^./.^.(.(.(.(.(.(.^.{.|.|.}.}.}.}._.{.{._.|._._._._.|.|.{.(.(.(.(./.(.(.(./.(.^.H r q [.T.b.= e n.~.(.(.T.~.T.!.[.(.T.(.^./.!.(.[.(.!.{.^._.= * [ (.`.`.(.(.`. X|.^._.|.{.{.|.`.`.{.{.`.^.^.~.|.].).~.~.(.~.~.~.T.F.S : = T.[.Z.> > u u = U ~.L.P.I.[ r * > !.U.T.I.T y e > T.U.T.T.~.T.T.~.T.~.T.T.T.T.~.T.~.!.~.~.~.~.(././././.(.(.(.(.^.(.[.(./.{./././.T.~.~.~.T.~.T.T.T.T.T.T.T.T.~.T.T.~.~.T.T.~.T.T.~././././././.(.(.(.(.(.^._.|.|.|.`.`.`.'. X.X'..X.X.X X@X.X.X X'. X X.X.XzX.XzXzX.X.XzXzX.XzX'..XdX.X.X.X.XzX XdX@XdX.X@X.X.X.X.X.X.X.X.Xn.0 0 J [ y e > '.{._.Q.[ [ F.].`._.Q.n.~.[ n._.F.Q.].b.[ ]..X|.'.|.|..X) : y * : '.|.b.0 u '.'.y = !.Q.: y dX].` b.].fXS y [ c.b.[ '..X X.X.X.X X'.|.|.|._.`._._._._.|.(.(.(.^.(./.(.~.~.~.~././././.!.~././././.E./.~./.~./.R././.~././.~.~.~.~.~.~.~.~././.(.(.(.(.(.|.{.(.|.(.(._.^.|.|.^.(.~.T.!.T.T.Y.T.T.T.T.P.T.T.U.U.T.T.T.T.U.T.P.T.U.U.U.T.P.T.T.U.T.U.P.L.P.L.P.U.P.L.L.D.L.D.L.", "m m m m m m m N N N N N N N B V V V B B B N B B C m C N N C C N C V B C B B N C C B B B C C C C C B B C C C C Z C C C B C C Z C D Z Z Z Z Z Z Z D B D Z Z Z D D C L D Z G Z Z G Z C % o o $ $ $ % % * : r r ; : : ; r : = r r r r r r r r r r r r r r r r * : r r r r r y r r r r r r r r r r r r r r r r r e r r r r r r r r r r r r r r r r e q r r r r r r r 0 : r : y * r : q : 0 r r * * % % $ , o A ].^.(.).(.^.(.(.(.|.|._.|.|.|.|.|.|.'. X X|..X.X.X.X.X.X.X'.zX@XzXdXdXzX%XdXcXdXvX.XdX X%XxXdXzXzXzXzX.XdX.XzXzXzX.XzX.XzX.X.X'.zX.X.X.X|.'.}.}.}._.|.(.}.{.(././././.~.~.~.~.(.T.T.~.T.~.T.T.T.T.T.T.T.P.T.T.T.T.P.P.P.L.L.L.U.L.L.L.D.U.S.S.S.S.A.A.A.A.h.A.h.h.A.l.A.l.h.h.h.A.h.A.z.A.A.A.h.H.z.h.A.A.z.H.A.A.e : r r e * * q G Z.z.j.k.i.k.k.a.a.a.a.C ; 0 i.u.0 > N k.a.k.r.i.t.a.t.f.i.i.a.s.s.u.u.a.a.w.q 0 T R B : = t.i.: * B u.t.t.y.r.r.t.r.r.r.t.r.t.p.r.t.t.T q 0 0 G r.E E : 0 = m e * m E y.C * 0 y u ; t T t.w.q 0 r A * > N p.u.u.a.i.a.a.a.f.a.a.k.a.a.a.z.f.k.g.z.g.g.h.h.l.l.l.A.h.A.A.h.h.h.l.z.h.l.l.l.g.A.h.h.h.A.A.A.A.A.G.A.S.S.h.H.G.H.L.L.K.L.U.U.L.U.Y.Y.T.T.T.T.T.T.T.~.T.~.~.T.~.~.T.T.T.~.~.U.T.~.Y./.Y.Z q r = 0 > Z ].H.U.U.Y.Y.~.T.T.~.U.T.!.).~.{.T.T./.(.~.!.q : q y q q [ (.(.^./.^.(.(.(.%X(.^.(.(.[.(._.^.^./.^.(.(.^.{.).{.(.^._._.q y [ (._.'.|.`././.{.(.(.(.(.(.`.R..X(.(./.(.(.|.`.(.|.|.^.{._.`.[ r q [ ^. X[ y : / 0 u Q. Xn.0 = J r y F.`.Q.y q P * > n.~._._._._.{.|._._.|._.|._._.|._.|. X_.}.|._.}.|.}.}.}.}.}.|.}.{.}._.^.|.^.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(./.(.(.(.(.(.(.(.(.(.(.`.|.|.}.}.|.}.}.}.}.}.}.}.}.}.}.|.|.^.{.^.(.(.(.(.^.(.(.(.(.(.H 0 0 [.~.[ y > n.T./.b.b.[ [ U.{./.n.F.].b.[ n.(.T b.K..X_.: e _ b.[ Q.|.(.F.Q.].|.F.n._.{.Q.F.Q.[ n.(.].[ [ !.n.n.!.!.T.T.~.T.J q 0 0 y L.].T e B P.F.y y b.XXK.b.: > : r U.I.I.b.> : * e T.T.~.~.~.T.~.~.T.~.T.~.~.T.~.~.~.~.~.~.~././././././.~.^./.(.(.(.(./././././.~.~.~.T.~.T.~.T.T.T.T.(.T.~.T.T.T.~.T.~.~.~.T.~.~.~.~.~.!./././.(.(./.(.(.^.^.|.(.|._.|.|.|.|..X X.X.X|..X.X.X.X X@X.X.X.XdX.X.X'.@XdXdXdX.X.X.X.X.XzX.X@XdX'.zX.X.X.XdXdX.XdX.X.X.X.X.X X.XQ.* y K [ u : _ X.X` = * q * [ {.F.: = J y [ n.y : S q r q X.X|._. X.X= Z J : ; |..X[ : P dX.XS y b.b.> K [ ) _ ]. XbX: e [ b.n.].cX.X.X.X.X.X.X'..X|. X|.`.`.|._.|.}.(.(.(.(././././.~.~.!.~.~.~././././././././.~.~.~.~.T./.(.!././.~.~.~.[.T.~./.~./././.].(.|.(._.^.(.^.{.(.{.|.^.).{.(.(.~.~.Y.T.~.~.T.T.T.T.T.Y.T.T.T.T.T.T.T.T.T.Y.P.T.P.P.P.T.T.L.U.T.P.P.U.U.P.L.L.L.S.L.H.L.S.U.", "m m m m m N m N m M M N N B B B N B N B B B B B N N N C C C N C B V B B Z B C A B C C B B B A C C u C C C D C C C C D Z Z Z C Z B Z C Z Z D B D Z Z B Z Z Z D Z Z C D D L Z Z Z Z Z Z u $ o $ $ $ $ % % % ; : * : r r r r 0 r r r r r r r r r r r r r : y y r r r r : * r r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r r r r e r r r r r : 0 : y 0 r r y r r > ; * % * $ $ o # e M.(.~./.[.{.(.{.|.`.`.`.(. X|._.`._.|.|.|.|.|. X X|..X.X.X.X.XzX.XdX X#XdXdXdXdXdXdXdXcXdXvXdX.XdX.XzXzX.XzXdXzX.XzX.XzX.XzX.X.X.X.X.X.X.X'.|. X}.}.|.|._._.[.(.(./././.~.~.~.~.~.T.(.~.T.~.T.T.T.T.T.T.T.P.T.T.T.U.T.Y.U.P.Y.L.L.U.S.L.Z.L.H.H.G.S.S.A.A.z.A.A.A.h.A.h.A.h.l.A.h.h.A.h.h.A.A.h.z.h.G.S.l.A.l.z.h.Z.A.0 > y T T U q r q j.f.e.T d.k.i.T T i.a.C r 0 i.i.0 0 A s.w.w.T T G T p.s.E T T f.t.s.T T w.y.G T t.t.V r r t.w.: 0 V E u.w.G T G R E y.t.t.t.u.t.t.T B q q * e G t.y.T 0 q G r.T q 0 G w.q : A E r.= : C E G 0 = T T T : q T i.a.a.i.i.i.a.a.a.a.a.z.a.g.i.f.f.z.a.g.z.k.h.l.l.l.h.h.h.h.h.A.A.h.H.G.l.l.l.G.g.h.Z.A.h.A.A.A.A.h.W.S.S.H.H.H.H.S.L.L.L.U.L.R.L.U.Y.U.U.U.T.T.T.I.I.T.K.T.T.T.T.~.~.T.T.~.T.T.T.~.I.n.q * L n.V = N F.U.P.[ b.T b.K.Y.Y.n.b.].T e.n.(.(.!.^.^.{.= q u [ [ [ n.Q.n.!.b.` ~.!.` [ [ b.!.(.].F.b.].T [ Q.(.!.`.n.T b.n.}.^.(.n.Q.T._.].[ [ ` ].(.(.(.!.b.` [ ].].).(.^.b.[ b.].`.|.(.^.|.(.n.A * e y [ |.|.y 0 b. Xb.0 ) '.J 0 [ dX[ 0 P `.) 0 [ .X[ [ b.`._._._._._._._._.|.|.|.|.|.|.|.|. X|.|._.|.}.|.|.'.|.|.|.}.}.}.}.|._.|._.`.^.|.^.|._._.^.(.(.(.{.(.(.(.^./.^.{.(.(.(.^.(.^.{.`.`._.`.|.|.|.}.}.}.|.}.|.}.}.}.}.}.{._.|.(.`.(.(.(.(.`.(.(.(.(.(.S r y [ [ F r y n.(.Y q q q * r Q.(.0 0 C 0 y : L q > = F.{.; q > q : y ].].q q b.|.y r [ _.r : S y Z ].q ; y A = q b./.~././.T.0 u H r y L.T.` ; A U.P.u 0 [ J.A.q m P q > U.R.n.m u I e e T.~.T.~.T.~.T.T.~.T.T.T.~.~.T.~.~.~.~.!.).~./././.!.(././.(.(./.(.(./././././.(.~.T.~.T.~.T.T.T.T.T.T.T.~.T.T.T.T.T.T.T.T.~.T.~.~.~.~.(./././.(.(.(./.|.(.|.`._.|.|.|.|.|..X.X.X.X.X.X.X|..X|. X|. X X.X.X.X.X.XxX.X.XdXdXzX'.zX'.zXzX.X.X.X.XzX.X'.dXdXdX.XdXzX.X.X.X.X.Xn.y * y y * y F..Xn.; r n.m.0 q Q.n.* = S n. XQ.: y ` [ > q Q.`..X X'..Xn.'.b.: : @X@XQ.* = n.[ y : v.b.e > A y > y '.].y > t r r S _..X.X.XdX.X.X.X.X.X.X|. X X_._.|.[.`.(.(.(.(.(.~./.~.~.~.(.~./.~./././././.^./.~././.(./.R.!././.!.~.~.~.~.~.~./.T.~.[.(.(.(.(.(.(.(.(.(.(.(.|.(.(.(.(.(.~.!.T.~.~.T.T.T.T.T.T.T.Y.P.T.U.T.T.T.T.T.T.Y.P.P.P.P.P.P.T.T.U.U.H.P.P.U.L.L.L.L.L.L.S.L.P.D.", "m m m N M N m N m V N N N V N N N B N B B V N B m C N C N Z Z N B B V V B A N N C B C B Z C C C C C C C B C C C C Z Z C C Z Z C Z Z Z D C Z Z B Z Z D Z Z D Z Z D Z Z Z Z Z D D L H Z G L y $ $ o $ $ $ % % * % : e r r r r r r r r r r r r 0 r r r r r y * r r e 0 r r r r r r r r r r r r e 0 r r : r r r r r r r r r 0 r r r r r r r r r r r r r r 0 r r r r r r * t * r = r * % % $ $ $ # e v.(./.^.!.(.(./. X^.^.`.(.`.`.|._._.|.|.|.|.|._.|.|..X.X.X X.XzX.X X.XdX XdXdXcXdXdXdXdXdXvXdXdX.XdXdXzX.X.XzXdXzX.XzX.XzX.XvX.X.XdX.X.X X.X.X X.X X|.|._.|._.(.{.(.^.(././.!.~.~.~.T.T.T.T.~.T.T.T.T.T.T.T.T.P.P.T.T.Y.T.Y.U.U.L.L.L.L.L.L.L.S.L.A.G.H.A.h.A.A.A.A.A.A.A.A.h.D.l.h.h.h.h.h.h.l.l.A.A.h.S.l.l.l.l.g.z.A.h.= y q S.z.h.Z > = T e.y q T f.T q q G i.Z ; = i.d.: ; C p.T e * * = > G r.C > q T s.G y = T T q q G p.A r e t.t.t > Z p.t.G = % = e q T t.t.w.p.t.u.G = = C q q R E y.G y : T y.E e = A E * = G u.u.m ; y w.B q q p.r.T : = G r.a.a.u.i.i.i.a.i.a.k.a.f.a.g.f.k.k.g.g.g.h.h.h.l.l.h.h.A.A.h.h.g.A.h.z.h.h.h.h.A.A.h.A.A.A.A.A.A.A.H.A.H.S.H.H.L.L.L.L.L.L.U.U.L.U.U.L.Y.T.U.I.U.T.U.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.F.q r u Y b.].U.T.U.C > = y * A !.b.0 q S q = y ~.(./.~.~.^.> 0 u ` [ b.(.F > J y q U.S r : y ; C [.n.= y C q ; y ^.`.P y 0 : y Z [.{.q = b.F.y = u > u ].~.].y > * y = b.(.Q.y r q = u Q. X(.|./.`.[ q [ : r [ {.{.r r n..Xn.y y .Xy : m. Xn.= y '.y * b.P P b.`.`._._._._._.|.|. X|.|.|.|.|.|.|.|._.|.|.|.|.|.|.|.|.|. X|.}.}.}.}._._._._.|.`.|.(.`.{.^.|.^.[.(.(.(.(.(.^.(.(.^.^.(.(.(.`.(.|.`._._._.|.|.|.|.|.}.}.}.|.|.}.}.|.}.|._._.|.(.|._.^.`.^.`.^.`.(.`.S t % q * : e ; Z.~.[ I ` n.u r [ (.y * Z n.: r A n.r * [ {.q r P ].y y I dX: * [ .X: q [ '.; q q b.!.b.q * F.[ y q n./.~.~.~.T.b.].) r > T.Y.Z.; y T T > : T F.A y n.T 0 y T.T.y > n.[ 0 e !.~.~.T.^.~.~.~.T.^.T.T.~.~.~.~.~.~./.~././.!./././././.(.(.(.(.(./././././.[.~.T.~.T.~.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.~.T.T.~.~.T.~.(.E.^.~.^.(.(.(.(.{.{.(.^.|.{._.|.|.|.|.'..X|.`..X X.X.X|. X'..X X.X.X.X.X.X.X.X.XdX'.'.#X'..X.X.XdXdX.XzX'.dX.XdXdXdX'..X.X.X.X.X.X.XQ.y r S b.I y 0 n.[ y : U H y q [ n.: y F. X|.n.q 0 F.Q.0 = n.@X'. X.X|..X'.b.; > '..X'.[ = q y y y b.b.; y hXdXu > b.].b.[ X].u q b..X.X'.'..X.X.X.X|..X|.'.|.|.|._.|._._.(.(.(././.~./.~.~.~.~.~.~././././././././././.~.~.(./././.~.~.~.~.~.~.~././././.(.].`.{.(.^.(.(.(.^.(.(.(.(.`.^././.(.~.Y.T.T.T.T.T.T.T.T.T.T.P.T.T.T.T.T.T.Y.Y.P.P.P.P.P.P.U.U.U.U.T.L.P.A.L.L.S.L.S.L.H.P.P.L.", "m m M M m m M M m N N N N B N B m N B V B B B V C m C N N N N C B D B Z B Z B Z N C B C C N N A C B C C C A C C C C C Z C C Z C Z C Z B Z Z Z D B Z Z Z C G B Z G Z H Z Z Z D Z S Z Z Z H L D u o $ $ $ & % * % % 0 r 0 e r r r r 0 r r r y r r r r r : : r r r r r r r r r 0 e r r r r r r r r r r r r r r r r r r r y r r r : r r r r r : r r r r r r r r r r r * y : * : % % - $ o 0 [ ].(./.^.!.`.^.!.`.(.|.`._.(._.^.(._._.|.|._.|._.|.|.|..X X X'..X.X.XdXdX.XdX XdXdX.XdXcXdXdX.XdXdXdX#X'..XzX.X.X.X.X@X.XzX.X.X.X.X.X X'.dX@X.X.X X|. X|._._._.|.(.(.(.(././.~.~.~.~.T.(.T.~.T.T.T.T.T.T.P.T.P.T.T.T.T.T.P.U.Y.L.L.U.L.Y.L.L.L.S.L.S.H.H.Z.A.A.A.A.h.A.h.A.h.h.h.k.h.h.h.h.h.h.S.l.A.h.h.A.h.l.l.h.h.G.l.A.g.e : 0 j.z.z.Y t y G T > : G i.T q = Y a.C e 0 i.u.; ; A a.V = q e.T N G r.T = q T u.N e * s.T = = T r.u r r r.t.0 r A w.T q * C G q 0 0 E u.r.t.u.r.y.G T T * 0 G r.t.T r = q C u * 0 m T * = T E w.C : > w.m q = t.t.T e ; T t.i.u.a.i.a.i.i.a.a.a.a.k.f.f.g.a.g.g.g.g.h.h.h.l.h.A.j.S.g.A.h.Z.h.A.h.A.W.h.A.h.A.A.A.h.j.A.A.A.A.H.G.A.H.H.H.U.H.L.L.L.U.L.Y.U.U.U.U.U.U.U.I.Y.U.I.Y.T.P.T.T.T.T.T.T.T.T.T.T.T.U.I.P.[ y t t > = [ Y.F.T S b.` r 0 b.Z.; 0 ) ` r q n./././.|.~.y e 0 0 * q ].L = y [ n.].[ L b.b.q > n.F.= ; ` ` y y F.F.: > b.n.y H n._.* y ` b.0 0 Q.b.b.].^.J r F !.U y _ |.U = P ].S * J !.|./.|.(.F.Q.hX= r b._. XP 0 ) n.H = q X: * n.@XQ.e 0 |.: r * S r q [ (._.[._.}.}._.|._.|.|.|.|.|.|.|.|.'.|.|.|.|._.'.|. X'..X|. X|.}.}._._._.|.^.`.`._._.`._._._.|.(.(.(._.(.|.(.(.`.^.`.`.`.(._._._.`._.|.|.|.|.|.|.|.|.|. X X X X}.|.|.|.|._.`._._.|.|.(.(.`.^.^.`.S 0 q [ [ S * ; Z.~.L.[ Z y * q e.(.* t [ ].0 0 b.].> * b.'.> ; [ |.J ; K '.r : b.|.r y [ `.r q [ |.[.[ > * {.Z.y = b./.~.~.~.~.!.I.e.0 ; T.Y.T.Y y : t u r T H ; S Y u t r T L y u T Z e = T ^.T.~.T.T.T.T.~.T.~.T.~.T.~.~.~.~./.(.R././.~./././././.(./.(.T.(.!././.~.~.~.T.~.~.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.R.~.^.~.~.~.(./.^.(.(.^.^.(.|.{.`.`.|.|.|..X|..X.X'..X.X.X.X.X.X X.X.X.X X.X.XdXdX.XdXdX.XdX'..XzX.X.XdX.X'.zXzX@XzXdXdXdX'.dXzXzX.XzX'. XQ.y 0 [ Xn.r > ` b.r = [ b.[ [ F.Q.q = n.{.|.F.> ; Q.n.y y Q..XdX'..X.X.XdXc.y y XdX'.@Xm.Q.'.y 0 m.m.; S @X X) ; b.xX].Q.dXdXS : b.dX.XcXdX@X.X.X.X.X.X.X X|._._.}.^._.^.(.{.(.(././.~.~.~.~.~.~.[././.(././.(././././.^./.~.(././.~.~.~.[.[.~.~.T.(.~./.(.(.(.(.(.|.(.(.(.(./.{.|./.(.(././.~.~.~.~.T.T.[.T.T.T.T.T.T.T.T.T.T.T.T.T.P.U.P.P.P.P.P.P.P.P.L.L.L.L.P.L.L.L.S.L.L.L.D.P.P.A.", "m m m M M m M M m V m V N N B N C m N C N m B B B N N C C N C N N C C N C N N Z N Z C B C B C B C C V A N Z A C C C C C C C Z C Z C Z B D Z Z Z Z Z C Z Z Z D D Z Z Z D F D D D D D D D H H H H I y & $ $ $ $ $ * = % * ; ; : ; : y y = * : y : : : y * r r r r r : r r : 0 0 : : r r r y 0 : r ; r : q : r y = : * y r r ; ; ; r r r ; y ; > ; r r ; * r 0 0 0 * * % % % $ o # t n.(.~._.(.~.^.^./.(.(.(.(._._._._._._._._.}.}.|.}.|.|. X X|.|..X|..X.X.X.X.X.X.X.X.X.XdXzXdXdXzXzX@X'.dX.XzX.XdX'.dXdXdXdXzX.X.X'..X.X'..X.X.X.X.X X.X|..X|.'.|.|.|._.`.(.^././.!./.~.~.~.~.~.T.T.T.[.T.T.T.T.Y.U.P.T.T.P.T.Y.P.P.U.U.L.P.U.L.U.L.S.U.S.H.H.A.S.A.A.A.h.A.h.j.h.h.h.h.h.h.h.h.g.h.l.l.h.h.l.l.l.h.h.h.h.h.j.h.G.g.0 e * g.j.j.T : : T T y q T i.T q = R p.V ; e u.u.; y V u.T q * u B T w.u.p.q e Z t.= 0 T u.T 0 0 T r.u 0 ; u.u.0 = A E C 0 q Z T V 0 0 G p.t.r.t.t.p.t.t.T 0 e G E E y.B q = 0 q 0 0 q T * q G r.y.C * = w.Z r 0 u.t.T = > T u.u.u.u.i.u.u.a.u.a.a.i.k.f.g.z.g.g.g.g.k.h.h.z.g.l.l.S.z.h.H.z.A.A.h.A.Z.j.h.A.A.A.h.A.h.A.h.A.A.D.D.A.S.H.H.H.L.G.L.L.L.L.L.U.Y.U.U.P.P.L.P.U.P.U.U.U.U.I.U.T.T.T.U.T.U.U.T.T.L.T.P.Y.].].T T A : q [ T.b.` C * : q b.A.0 y n.F.= r n.[.^.[.(.(.: y u [ [ b.(.S y A _._._.n.[ S 0 : q F.F.0 ; n.F.r ; F.b.r > `.`.^.|.{.{.y > [ F.: > 0 : S !.(.e : b.(./.{.~. X* : [ {.b.: = {.{.`.`.(.`.(.(.y * [ |.|.Q.u > y S ; y .X> ; Q._.n.y r '.: : [ |.F.= y X|.(.(.`._.`.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|..X|.'.|.|.|.|. X|.'._.|._.|.}.}.}.}.}.[._._._._.[.|.^._._._.|._._.}.}.}.|.|.`.`._.|.|.|..X X|.|.|.|..X_.|.|.|._._.|.|.{._.|.}.[.}._._._._.(._.S ; = '.~.b.0 : Z.!.= > Y n.; = [ ].r r [ /.0 : [ (.; e b.^.r ; b.].S r Z X; y [ '.e : b.].r ; [ X(.b.= q ].n.> q b.(.T.~.~.^.T.T.[ r 0 Y.I.I.U.b.f.F.y y b.C ; = t : : y 0 S 0 = q ; : e 0 !.~.~.T.T.~.T.~.Y.~.~.~.~.~./.~.~./.~./././.~./.~.^././.^.{././.~././.~./.T.~.T.~.U.XXU.P.T.T.T.T.T.T.T.U.T.T.T.T.T.T.P.~.T.~.T.~.T./.T.~./.(././.(.(.(.`.{.(.(.^._.|.|.|.|.'. X.X|..X.X.X|..X|..X|.|.'..X.X.X.X.X.X.XdX.XdX.XdXdXdX'.dXzX.XdXdXdXdXdXdX.XdXdXdXdX.X.X.XQ.* > t : r : r Q.].; > [ b.S [ '.n.> y n.|.[.F.> ; Q.n.y : Q..X X@X.X.X@X'.b.= : dX.X].0 > c.[ : y dX'.: t b.m.e = m.].= 0 b.m.* y ].dXdX.X XzX'..XdX.X'..X X|.}.|._.|.^.}.(.(.(.(./././.~.~.~.~.~.(.~.~.~.^././././././.(./././.!./.!.~.~.~.~.!./.~.~.~.(.(.(._.(.{.(.(.(.(./.(.(.(.`.(.(.~.(.~.T.T.T.T.T.T.T.T.T.XXU.T.T.E.P.T.T.T.U.P.P.U.U.P.P.L.L.L.P.L.L.H.I.H.H.L.H.L.L.D.L.L.L.L.L.", "N m m M M N M m m N N V N V N V N N C N B B B B B B C N N C N C C N C C C C C C C B B C B C B B C C C B C C A C C C C C Z C Z C C Z Z Z C Z Z Z Z Z Z Z D F C Z Z Z D Z Z D Z D D Z H H H H H H L L J S % o o $ $ $ % % % % ; e ; * : : t 0 : ; * y : y r r r r r r r r r r r r * r r r : r * y r : * : : r : : y : : r r r r 0 r r r ; ; r 0 ; 0 0 r 0 % e ; % % $ $ o $ J Q.(.!.{.[.E.(.{.^.(.(.(.(.(.(._.{._._._.|._.|.}.}.}.}.|.|._. X.X.X.X X X X.X.XzX.X.X.XxX@XdXdXzX.X'.zXdXdXdX@XdX.X.XdX.XdX XdX.XzX.X.X.X XdX'..XdX.X.X.X.X|..X X|.|._.}.}.`.(.(././././.~.~.~.~.T.~.!.^.T.T.T.T.T.T.U.T.T.T.P.T.T.P.T.U.L.L.L.L.L.S.L.H.H.L.S.G.G.H.h.A.A.A.A.g.G.h.g.h.g.z.z.h.h.h.h.g.h.l.g.h.h.h.g.h.h.h.h.g.z.j.j.q r q z.z.j.Z ; ; T T > 0 G d.e.* t G u.A * ; i.i.* 0 A u.T N 0 0 0 0 q E t.G = = G 0 t p.u.T q = G r.C = 0 p.E y y V r.C r % e * = 0 q T w.t.r.p.t.t.t.t.E q y R y.E y.w.T G T R 0 q m E 0 0 C r.E V > y w.Z ; t t.t.E 0 = G u.k.i.u.i.a.a.u.a.a.a.i.f.f.a.z.a.g.g.g.g.l.h.h.z.l.h.A.g.l.l.l.l.A.A.h.A.h.A.A.h.A.A.A.A.A.A.A.S.S.S.S.L.S.K.L.H.L.L.L.L.L.L.L.L.P.U.P.L.L.U.L.U.U.U.U.Y.I.T.T.U.U.T.U.T.T.U.T.~.P.P.b.= q [ ].b.* q [ b.q = [ b.* q n.b.r = S.n.y r F.T._.^.(.(.: * H {..X^.`.S ; H `.|.n.= 0 [ b.r = n.n.; ; F.n.r r F.[ = : `.~.F.~.{. X* * b._.!.[ L 0 y P !.= y ` (.].Q.{._.q : [ (.c.y : X/.`._.`.|.(.'.= : b._.|.dX].b.!.b.r A .XZ y n.|.n.q Z {.S y n.(.n.0 q '.^._.`.|._.`.|.|.'.'..X.X X|..X.X.X|..X.X.X.X.X.X.X.X X|.'.|.'.|. X X_.|.|.|.}.}.}.}.}.}._.(._._.|._.`._.|.^._.|._.|.|._.|.|.`.|.'.|. X.X.X X X'..X|.|.|.|.|.|.|.|.|.|.|. X|._. X}.}.}.[._._.`.J ; : `.(.[ * : n.n.y y ` [ : = [ /.r r [ {.q y T _.; 0 [ {.r e A m.y * b.'.y = S I = r b.'.= y [ _.`.].q * y q * q n.XXT.[.~.T.~.U.[ ; > !.L.Z.r > Y T ; A F.e.[ T [ S 0 ; [ e.Y [ [ Z ; 0 [ T.T.T.~.~.T.~.T.~.T.T./.~.~./.~.~./././.~.~./.(.^.~.^.[.^.[./.[./.~./.~.~.~.~.~.~.XXXXT.T.~.T.T.T.T.U.T.T.T.T.T.T.T.[.U.~.T.~.T.~.~.(./.^.(./.(.(.(.(.^.^.(.(.`.|.|.|.|.|.|.`..X|.|.|..X.X.X.X.X'..X.X.X.X.XdX@XdX X.XdX.XdX.X.XdX.XzXzX.XzXdXdX.X.XdXdXdX.X'.dX.X X@X Xn.q * = q q u b.(.{.b.y 0 = y b.`.n.> y Q._.@Xn.: q F.n.y q Q..X|.'.dXdX XdXc.y y XdXdXn.; y q u ].dXdX].y q > q [ cX.X[ 0 r r r b.fX'.zX.XzX.XzX.X'. X'..X|.|.}._._.^.|._.(.(.(././.[.~.~.~.~.~.~.!.~.~.[./././.(.(.(.(./././././././.~./.~.~.~.~./.~.~./.(.^.(.(.^.(.(.(./.(.(.(.(.(.(.(.^./.(./.~.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.P.P.L.U.L.P.L.U.L.P.L.L.I.L.L.L.L.L.G.L.L.S.S.L.L.L.", "m M N M M M m m N V m N N V B u m C C N B B B B C N C B N C C C C N N C C N C N C C B B C B B C C V C V A C C C C C C Z C Z C Z Z C Z Z Z Z C F G Z F D Z Z G Z Z Z Z D Z D D D D H Z H Z H Z L H L H G H K r o o o o o $ $ $ $ % % % * * t r 0 : 0 : : : e 0 0 r * r * * : r : r r : r r > 0 * : : : : : : r r : : * > ; r r ; r r r ; ; r r ; ; ; ; = % % $ o o o # e [ ].~.~.(./.~.(.{.(./.(./.(.(.(.(.(.^._._._._._._._.}.}.}. X}. X|.|.|..X|..X X X.X X.X.X.X.XzXzXdX.XdXzXdX@XdXdX'.'.xX.XdXzX.X@X.X'..X.X.X.X@XdX.X.X'..X.X.X.X.X.X.X|.|.|.{.}.|.^.(.(./.(././.~.~.Y.T.~.T.[.P.T.T.T.U.T.T.[.P.T.P.P.T.Y.T.P.U.U.L.L.L.U.S.L.H.H.S.H.G.G.G.G.A.A.j.A.l.h.h.h.g.g.k.g.g.h.g.z.l.z.g.g.l.z.l.z.k.g.g.g.f.h.h.z.r > y T T T q ; q e.e.= r Z e.G y * G s.V e ; u.u.0 * m i.w.E T T C * = G r.t.q e y 0 A i.u.T > = G u.N r 0 r.y.r r V y.C = y E E E T E E y.t.r.t.t.t.w.r.T * * G y.E y.G N R y.G 0 q T E q * C r.y.q 0 C y.G q * G w.T > q T u.u.u.u.i.i.u.i.i.a.a.z.i.g.a.d.g.a.g.a.g.k.h.h.l.h.h.g.g.l.l.l.l.z.A.h.h.j.A.A.g.A.h.A.A.A.A.h.A.S.S.S.S.H.H.L.L.S.U.L.U.L.L.L.Y.P.L.L.P.Y.U.U.U.U.U.L.U.Y.U.P.Y.U.U.T.U.T.T.U.T.P.~.Q.> * r S y = 0 n.T = : b.P : = n.n.; > b.n.* r n./.(.[.^.`.* * S (.|.(._.S ; H .X'.b.y * b.Y : : n.L.; ; F.F.: * F.F.e * [ ` q 0 b.|.q e [ n.U ) ].u = P `.P : u n.S = A (.Y ; u n.u = _ |.(.`.`.^.|.^.'.: y [ _.|.U y C n.u * [ '.b.= S m.S 0 [ `.b.* S m.H * S _.^.`._.|.|.|.|.'.|..X.X|.|..X X'..X|..X|..X.X.X.X.X|.|..X X X.X.X|..X'.|.|.|.|.|.}.}.}.}._.|.|._._.|._.|._._._._.|.|.|.|.|.|. X|. X X|..X.X|. X X|.|.|.|.@X_.|.|.|.|.|. X_._.|.|.|._._._._._._.K : > ^.(.[ > : F.|.C : q L A y [ (.e y [ |.> : b.`.; y [ '.* * ) q y A '.'.[ q 0 Z S y b.'.: q b._._.!.Q.P T [ : 0 n.T.~.T.T.T.P.T.T q q K.~.U.e.* y y y Z.H.Y.L.I.H.T y q ].I.R.T.T.T q q ].U.T.T.~.T.~.T.~.T.~./.T.T./.T.~.~.~./.~.~././.~.{.^.^./.E.^.^./.{./././.~./.T.[.~.T.E.T.T.T.T.T.T.T.T.U.T.T.T.T.T.T.Y.~.T.~.T.~.T.~.T.~.!.(./.(./.(.(.(.(.(.(.(.|.(._._.|._.`.|. X|..X X.X.X.X.X.X.X.X.X.X.X X'.zX@XdX.X@XdX@XxX.X.X.XzXzX.X'.zXdXdXdX.XdXdXdX'.@XdX.X.XvX|..X X'.'.`. X X_.'.].F.F.!.|.[.(.|._.(.{.^. X X_._.'.'. X|.'.'.dXfX X.X'.dXdX'.dX'.'.dX'.].Q.zX.XxXdX XdXQ.Q.`.dX.X'.dX'.Q.Q.].dX.X.X@X.XxX.X.X'.'.dX.X|.|.|.|.|.|._._.{.(.(./././.^.~.~.~.!.~.~.~./././././././.~.[././.(.!./././.~.~.!.~.~.~.!./.!.~./.~.(.(._.[.^.(.(.[.(.(.(.(.(.^.(./././.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.P.U.U.P.H.U.L.L.L.L.L.L.L.L.U.H.U.S.U.H.L.H.P.L.D.L.U.L.S.", "M M m M M M N M M m V N N N V m B B N N B m B B B C B B N C N N C Z C N C C N C C N C B B C C B C A A C C C C C C C C C C C Z B D C B C Z Z Z Z B Z D C Z Z B Z D D Z D Z D D D H H H H H H H J P H L L L L P P u % o o $ $ $ $ & % - % % % * : : : ; 0 r r r : r r ; r r r r r r r r r r y : r y : y * r r r y : % ; r r r r r ; : 0 * % % ; % $ $ $ $ $ o $ u F.P.Y.XX[.E.T.(./.~.~.(.{.(.(.(.^.^.`.(._._._.|._._._._.}.}.}.}.|. X X|.|.|..X X@X X X.X.X.X.XzX.X.XzX.X.XdXzXzXdX'.zX.X.X.X.X'.zX.X.X.X.X.XxX.X.X.X.X.X.X.X.X X X|.|._.|.'._._.}.[.(.(.(.(.(././.~.~.~.~.T.T.T.T.T.T.[.T.T.T.T.T.T.T.P.Y.P.T.P.U.U.L.L.L.S.H.H.H.H.H.H.G.G.A.A.A.A.h.h.h.h.h.h.h.g.g.k.a.z.k.k.h.h.g.g.z.g.g.g.z.h.g.g.k.j.j.j.e ; e q y e 0 y T z.e.= 0 * q q e * G u.A r 0 p.u.0 r A p.N : = T B q q T r.t.G e > q T s.w.y.> * G y.C e 0 r.t.r r V y.T y * q u t q q r.y.r.t.t.t.t.w.E T : t T t.w.r.q = * q q % q w.t.B 0 = y A * * T r.E q * y q * = A u.i.u.u.u.u.u.i.i.a.a.a.i.f.d.d.a.z.g.k.g.g.k.k.k.h.l.h.h.h.l.l.l.l.h.A.A.A.Z.A.j.G.A.A.h.h.A.A.S.A.S.A.S.S.H.H.H.H.S.L.L.L.U.L.L.K.L.L.P.L.U.L.U.U.Y.U.U.U.T.P.T.P.U.Y.I.U.U.Y.U.U.L.P.U.e.q y = r y b.T.F.y y = ) y q [ F.; = F.n.y y n.^.!.|.(./.q q H |.^.{.'.P 0 Z `.(.Q.y y y ) > y b.Q.; > F.n.: > n.{.b.y e r y [ |._.r r [ Q.y y q q u Q.(.].Z y = ; u Q.`.!.K ; q y S ^.[.`.(.`.`.{.|.^.q : b.|._.`.S : 0 q [ '.'.].P y = = P ].|.`.P r = > u Q.(.`.^._.^._._.|.|..X|..X.X.X X.X X.X.X.X.X.X|..X.X.X.X.X.X.X.X.X.X X|..X X|.|.|.|.}.}.}.}.|.|._.|.|.|._._.|.|.|.|.|.|.|.|.|..X X|. X.X.X.X.X.X@X|.@X|.|.|. X|.{.|._.|.|.|. X|. X|.|.|._.|._._._.(. X|.@X!.{.{.'.(.{.|.n.F.}. X^.(.(.!.(.`.{.(.(.|.^.'._.|.%X`.'..X].Q.dX|.{..XQ.Q.|. X_.{.'..X|.|.^.|.Q.Z [ n.b.; 0 F./.~.[.T.~.T.T.T.^.Y.I.S.K.Y.F.Z.b.S.Z.S.L.U.G.I.Y.K.L./.Y.Y.T.T.T.].U.(.T.T.~.T.T.T.T.T.~.T.T.T./.~.~.~.(.~././.~.(.~./.~.[.[./.(.(.(./.~.~.~.~./.~.~.~.~.~.T.~.T.T.T.T.T.Y.T.U.U.T.T.T.T.T.T.T.T.T.~.T.~.~.^.~././.!./.(.^.[.(.(.(.^._.(.`.|.|._.|.}.|.|.'.|..X.X|..X.X.X.X.X.XdX'..XdX'.zXdX.X.X X.X.X.XzXzX'.'.dXzX.XdXdX.X.XdX@X.XzXzX'..X'. X X|._.|.'.{.^.`.`.(.(._._.{.(.{.|.|.{.|.|.|._.|.|.|. X X|. X'. XdX|.|..X'. XdX@X.XdXxX'.dXdXdXzX.XdXxXcXdX'.cX.X|.dX@X`.'.dXdXdX X X|..XdXzXzX.XzX@X.X.X|.|.|.|._.|._.|._.^.`.(.(.(.^././.~.~.~.~.~./././.^./././.(.[./././././.~.~.~.~.~.~.~.~./.~./.~./.{.].(.(._.(.(././.(.(./.^._.{.(./.!.T.~.[.T.T.T.T.T.T.T.T.T.T.T.T.P.P.P.L.U.L.P.H.L.L.P.L.L.L.L.L.L.L.H.L.H.H.L.D.L.L.H.L.S.L.L.", "m m m M M M M M m B N N V N B N m N C B C N B B B B B B C N C C C N C N C C N N C N C Z N B B C C C B A B C C C C Z C C C C Z C D Z C Z Z Z Z Z D Z Z Z Z G Z Z Z D B D D Z D D Z H H H H H H L Z S J J J P H L L J ) u % o o $ $ o $ $ $ % $ % % ; % : * * * * ; ; * : * : r r r r 0 : 0 : : ; * ; r r ; : y ; ; ; ; ; % ; % % , % % $ $ $ o o # o $ u b.T.[.T./.T./.Y.^.(.(.(.(.(.~.(.^.(.(.(.{.`.(._.(.`.`.[._.|.^.}.}. X}.|.|. X|.|.|. X.X.X|..X.X.X.X.X.XzXzX.XzXzX.X.X'..X.X X@X.X.XdX.XdX.X.X.X.X.X'.'..X.X.X.X.X.X|.|.|.|. X_._.|._.|._._.(.(.!.(././.!./.~.~.~.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.P.P.P.U.U.L.L.L.L.H.A.H.H.S.H.G.G.A.A.A.A.l.l.z.g.h.g.k.k.k.k.h.k.g.k.g.g.g.g.g.g.g.A.g.g.g.g.f.z.l.j.y 0 e > 0 = C T a.z.a.G > > M G q = T u.m ; r w.i.r ; N t.T q e * y q G E r.a.E q q Z t.t.u.T = q T t.B > q r.w.y ; V r.r.T q = w 0 q T y.y.t.t.t.t.t.r.r.E q 0 T y.r.r.E m = q 0 m G y.y.r.B q q q q F E E t.T N q y q N T t.t.i.t.i.t.u.i.i.i.i.i.i.a.a.g.f.f.f.k.a.z.g.g.g.g.z.h.z.g.h.h.h.h.h.l.h.l.h.h.A.h.A.A.h.G.A.A.A.H.H.S.S.L.D.H.H.H.L.H.L.U.L.L.U.P.L.L.L.U.U.L.K.R.U.U.U.L.P.Y.L.U.L.L.U.U.L.T.Y.T.T.U.U.U.I.b.Z.n.K.Y.I.~.Y.n.F.T.Y.~.~./.[.XX^.R.(.).^.{.{.~.^.|.`.`.(.`.|._._.'.'.'._.|.|.[.F.].|.~.^.{.[._.(.^.^.(.`.|.|.|.(.n.n.]. X|.{.(.'._._.|.n.Q.Q._._.}.`.`.Q.Q.F._.(.{. X(.^.n.].{.(.(.`.|.|.(.`.^.@X`.'.`.|.|..X`.].n.]..X.X`.(.'.Q.].F.'.|.|.{. XQ.F.F.(.|.{.|.`.^.`._.|.|.|..X X.X|..X.X.X.X.X.X.X.X.X.X.X'..X.X.X.X'..X'.'..X.X|.'.|.|.|.|.|._.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.'..X|..X.X.X|.|..X.X.X.X.X|.|.|.'.|.|.|.|.|.|.|.|.|.|.|.|.{.|._._._._.}.|.|..X|.|.^._.|.`._.~._.'.`._._.(._.{.(.^._./.(.(.`.{.|.`.|.{.|.|.|.|..X`.|.@X`.'. X|.|. X|. X(.|.`.^._.!.u * r q = Z !./.T.~.T.Y.Y.T.T.L.U.U.U.U.U.T.U.L.P.F.Y.U.L.U.L.T.P.T.L.~.T.T.T.T.T.U.U.T.T.T.T.T.T.T.T.T.~.T.~.T.~.~.~.~.~.~././.~.~.~.~.~././.[././././././././.!.~.~.~.T.~.~.T.T.U.U.U.Y.U.T.U.U.T.T.T.T.T.~.T.~.T.~.T.~.~.~.~./.^.[.^././.(.(.(./.^.(.(._._._.}.|.}.|.|..X X.X.X.X.X.X.X.X.X.XdX.XzX.XzXdX.X.X.X.XdX.X.X@X.X.XdX@XdX.X.X.X.XdX.X@XdX X'..X|.|.|.|. X_.|.{.|.`.(.`./.|.`._._._. X(.`._.(..X_._.{.|.|.|.|._.|.|.'.xX.X XdXdX'..XdXdXdXdX@X'.cX'.vX.XdX'.vXzXdX.X.X.XzX'..X@X'.'..XdXdX.X.X'..X.X'.zX.X.X|.|.|.}.|.|.|.{.{.(.(.(.(.^.~.^.!.^.~./.~./.!.~./.^.^././.^./.(.~././.~./.~.~.~.~.~.~.~.~.!./.~.(.(.]._.(.(.(.(.(././.(.(./.(.(.(.[.[.~.~.T.T.T.T.T.T.T.T.T.P.T.T.U.T.T.L.L.L.L.L.L.L.L.H.L.L.L.L.L.L.L.H.K.H.L.H.L.D.P.L.H.L.L.L.", "m M M M M M M m m m m B N N B m C N N B N N Z B B B B N N C N C N Z C C N C C C N C N N C C C B C m A C A B C C B C C C C A Z C C B Z Z Z B Z F Z Z Z Z Z B Z Z D Z D D H Z D D H H Z H H L L H H I H H J J J J L P P S / ~ u * o o o $ o $ o , $ & , % % % % % % % * : * % % * * % % ; % % * * * * % % % % % % % & $ $ $ $ $ o o # ; J n.Y.T.[.!.Y.Y.~.T.(.(.~./.(.E.(.{.|.(.(.(.(.^.`.^._._._.(.`.}.}._.|.}.}.}. X X|. X X.X.X.X|..X.X X.X.X.X.XdX.X.X@X.XzX'.zX.X.X.X.X.XdX@X.X.X.X.X.X.X.X'.`.@X.X|.|..X|.|.|.|._.|.|._.|._.|._._.(._._.(.(.(./././.~.~.T.~.T.~.T.T.T.T.[.T.T.T.T.T.T.P.P.P.P.U.Y.L.L.L.H.H.H.H.A.H.H.S.G.A.A.A.h.l.l.l.g.h.g.k.g.g.k.k.z.g.g.g.g.g.f.g.g.g.k.f.g.g.g.g.f.z.s.z.j.a.j.a.a.Z.j.a.a.a.a.d.p.T p.a.i.i.u.i.p.i.t.u.r.p.u.t.t.t.u.E T T w.t.u.r.p.i.E w.w.p.t.t.t.t.w.t.r.r.u.E t.t.y.y.y.t.E y.y.G E E r.r.t.r.t.t.r.r.r.t.y.t.r.y.r.y.y.E w.E T R E w.E y.y.y.y.w.G T w.y.y.r.r.t.y.T T E T t.x.t.u.u.i.u.i.u.i.i.i.k.i.a.f.i.f.f.k.f.z.a.g.k.k.g.g.g.g.g.h.g.h.h.h.A.l.A.h.A.h.h.h.A.A.A.A.A.A.h.A.H.S.S.H.H.H.L.H.L.L.S.H.L.L.S.A.P.L.P.U.I.L.L.L.U.T.L.U.U.L.L.U.U.U.U.U.L.Y.Y.T.T.T.T.!.T.U.L.T.T.~.T.!.T.[.[.(.!./.(.T.^.^.(.|.(.(.(.(.~.`.{._.(.^. X_. X_._.|.{.{.|._.(.|._.}.|.|._.^._.|._.`.^.(.`._.{.{. X_.|.|.|.|.'.'._.|.(.`.(.}.}.[.{.{.{.^.`.|.).[.(.(.|.(.(.^.`.(.(.`._.|.`.|.|.(.(.|.|.'.`. X`.}.|._.|.(.|.|.|.`.`.|.`.(.'._.|.|._.).{.{.{.{._.|._.|.|.|. X.X|..X.X|..X'..X.X.X.X.X.X.X.X.X.X.X.X.XdX.X.X.X.X|..X|.|..X|._.|.|.|.|._.|.'.|.|.|..X.X.X|.'.|.|.'.|..X X.X.X.X.X.X.X|..X|.|.|.'._.|.|.|.|.|.|.{.|.|.|.|._. X_._._._._.}.}.|.}._.|.|.|.{.(.(.^.{.|.{.`._.|.{._./.|.(._.(.{./.|.{._.|._.(.[.@X|..X|.|. X`.`. X|.|._.|.(.|.`.(.(.|./.^.].b.[ [ b.]./.T.~.I.~.~.Y.U.T.Y.T.L.L.L.L.U.L.P.D.P.K.L.U.Y.U.T.P.U.U.U.L.T.T.L.~.T.U.T.T.T.[.T.T.T.~.T.T.T.T.~.T.T.T.~.~.~.~.^.~.(.~.^.E.!././././.[./././.~.~.~.[.~.~.~.T.T.T.T.T.T.Y.P.U.T.T.T.T.T.~.T.Y.T.~.T.T.~.^.!.~././.~.^.~.~.~./.(.(./.(.(.(.|.{._.}.}.}.|.}.|. X X.X.X.X.X X@XdX@XdX'..X.XzX.XdX.XdX@X.X.X XdXdX.XdX'..XzX.X.XdXzXdX.X.X.X X`.|. X'.|.|.|._.|.^.(. X`.{.{.^.^._.|.|.(.(.|._.|._._.|.'.|..X X|.|..X.X.X'..X@XdX'.vXzXdX'.dXdXdXdX.XdXdXcXdXdXdXdXzX.X@X.XzX@X.X.X.XdX X XdX.XdX.X@XzX.X.X.X.X_.|.|.}.}._.|._._.`.(.(.(.(.(.[./././.~.(.~.(./.~././././././.(.~.~.~./.~.~.~.~.~.~.!.R.~.~.~./.(.(.(.(.(.(.(.(./.(.!.(./.^.(.(.(.~.~.~.~.T.T.P.T.T.T.U.T.T.T.T.T.L.U.L.L.L.L.A.L.L.L.F.H.H.H.L.H.H.H.L.L.S.L.H.L.L.D.L.L.L.L.H.L.", "M M M m M M M m M M m B N N M M C m m C N N B B B B B C N C N C N C C N N C N C C m C B m C B C C B Z C B C C C Z C C Z C Z C C C Z B Z F D Z Z D Z Z Z D Z Z Z Z Z Z G H Z D Z H H L H H H U H Y Z L U P L J I P P U P P I I I P S u % $ o o o o o o $ $ $ $ $ $ $ $ $ % $ , $ $ $ & $ $ $ $ $ $ & $ o $ o o o # $ u b.Y.I.T.~.!.].T.T.[.T.~.~.~.~.~.~.~.{.{./.^.(.(.(._.(.^.`._._._.`._.}.}.|._.|.|.}. X|. X|. X|.|.'..X|..X.X.X.X.X.X.X.X.XdX.X'.zX.X.X.X.X.X.X X.X.X.X.X'..X'..X.X.X.X|. X|.'.|.|.|.|.|.|.|.|._._.(.|.(.`.(.(.(.(././././.T.~.~.~.~.T.T.T.[.T.T.T.T.P.T.P.T.P.T.T.T.U.L.U.L.L.L.S.H.H.G.Z.A.S.G.h.A.A.A.h.h.h.h.k.h.k.g.g.g.k.j.g.g.g.g.f.g.g.g.g.k.z.g.g.g.g.f.k.j.z.g.z.i.z.a.z.k.i.a.g.a.a.i.k.i.i.i.p.s.i.t.u.u.t.t.w.t.r.t.y.a.u.y.r.t.t.u.t.t.y.t.y.t.u.t.s.u.t.y.t.r.t.t.r.w.y.t.r.r.r.y.y.r.r.r.r.r.u.r.r.r.r.t.r.r.E w.y.y.y.t.t.E y.w.y.y.y.y.y.y.y.y.y.y.y.y.y.y.r.t.r.t.t.r.t.u.u.a.t.r.t.u.i.u.t.u.u.u.a.i.i.a.a.a.f.a.f.f.k.a.z.g.d.z.d.g.g.g.g.k.h.z.h.h.h.l.l.A.h.A.Z.A.h.h.A.A.A.A.A.S.S.G.A.H.H.H.H.L.H.H.L.S.L.S.L.P.L.L.L.L.L.L.L.L.U.L.U.U.L.U.U.L.U.U.U.T.L.T.T.Y.~.T.U.T./.T.T.~.~.~.I.~.~.(.~.).!././.[.(.(.(.^.^.(.|.|.{.(._.(.|.`.(.|._. X_.@X[.|.|.'. X_.|.^.|.|. X X|._.|.`._.|.`.|..X_. X.X X_._.{. X'.|.{.|.[.{.{.{. X_.|.^._._._.(.(.`.(.^.|.`.(.^.`.^.{.(.|.|._.'.`.`._.|.|.|. X X|.|.(..X^.|.'.`.`..X/._. X`.|. X|._._._.|.{.)._.`.{._.|.|.'..X.X.X.X.X X.X.X.X X.X.X.X.X.X.X.X.X@X X.X.X.X.X.X.X.X.X.X|.'..X|.|.|..X_._.|.|..X.X.X.X.X|.|. X X|. X.X.X.X.X.X.X.X X.X X.X.X|.|.|.|.|.|.|.|.|. X X|.|.|. X|.|.`.`.`.`.|.|.|.}.|.|.|.(.|.|.|._. X_.[.}._. X_._.(.|.^.|.`.(.(..X_.{._._..X.X}.}.'. X|._.|.|.'. X{..X.X_.|.`._.`.^.[.(.(.(.~.{.(.[.T.T./.Y.T.T.I.Y.Y.T.U.U.L.U.L.L.L.D.U.H.U.Y.L.L.Y.P.P.U.T.U.L.U.T.T.U.L.(.P.T.T.T.T.T.T.T.T.T.T.T.T.T.~.~.T./.~.!.[.~.~./.~.~.~././././.~././.~./.~.~.T./.~.T.T.~.T.T.P.Y.T.U.U.U.T.T.T.T.T.T.T.T.~.~.[.T.~.~./.~.~.~.~.[.~.!./././.^.(.(.|.(._.}._.}.}.}.|.|.|. X X.X.X.X.X.XzX.XzX.XzX.XzX.X.X.XzX.XdX.X.X.X@X.X.X.X.X.X.X.XzX.X.X.X.X.X.X|..X.X'.|.{.{.|.|.(.|.`.(.|./._.|._._.|._.|.`._.|.|.|.'.|.|.|.|.{._. X X.X.X.X'.@X'..XdXdXdXdXdXdX X.XxXdX@X.XdX.XdXdX'.'.dXdXdX.XzX X'.dX.X X@XdX.X.X.X.X'..X.X|.}.}.}.|._._._._.`.(.(.(.E.[.(././././.^.~.!././././.!.^././.^./.~.(.~.~.~.~.T.~.~.~.~.~.~.~./.~._.].|.(._.(.(.(././.(././.(.(.(./.~.~.T.~.T.T.T.U.T.T.U.T.U.T.P.Y.Y.U.U.L.L.P.L.L.S.A.K.L.H.L.L.H.H.G.H.G.L.L.H.G.L.L.H.L.H.L.L.", "M M M m M m M M M m m N N B m u N C N N N C N C N B B N C N C N C m C C Z N C C m C C m C C C B C B C N C C A C Z C C C C C C F Z C D B Z Z Z Z Z Z C D Z Z Z Z Z Z Z Z Z D D L Z H H H H H H H J H J J J P I L P P P P I I P I P P J P P ! u * $ o o o o o o $ o o o o # $ u H b.].[.Y.!.Y.Y.T.T.I.T.T.T.~.~.~.~./.!.(.^.^.[.^.{.(.(.(.(.(.`.`.(.`.|._._._.}.|._.|._.[.|.|.|.|..X|.|..X|..X.X.X X.X.X.X.X.X.X.X.X.XzX'.zXzX.X.X.X.X X.X.X X X X.X X`.`.`.`.|.|.|.|.|.|.|._.|. X[._.`.(.`./.|.(.(.`.(.(.(././././.~.T.~.T.~.T.[.P.T.T.T.T.T.T.T.T.T.T.P.P.P.U.L.S.U.L.S.H.H.H.S.S.A.G.l.A.A.l.l.z.j.z.h.z.g.h.z.z.g.g.g.a.g.g.f.g.g.g.g.g.k.g.g.a.z.k.k.j.f.a.z.f.f.a.d.g.i.g.a.a.a.i.i.u.i.i.t.u.t.i.t.t.t.t.t.t.u.r.t.y.t.E r.u.r.r.p.E i.E u.t.t.r.t.E t.r.t.y.t.r.t.y.y.r.E y.r.r.y.t.y.w.r.r.y.r.t.r.r.t.t.E t.w.y.t.r.E r.r.r.y.E r.y.r.y.y.E y.y.y.y.y.y.y.r.r.E t.w.u.r.t.p.t.t.s.u.t.i.a.u.i.i.u.a.i.i.i.a.z.i.a.g.f.f.z.f.k.k.a.z.g.g.g.g.h.g.h.h.l.l.l.h.h.A.h.A.A.A.A.A.A.A.A.H.S.H.A.H.H.G.H.L.H.H.H.H.L.L.L.L.L.U.P.P.L.U.U.L.L.L.Y.L.L.U.L.L.P.U.U.P.U.Y.T.U.T.T.T.T.T.T.U.T.T.~.T.^.T.~.~.[./.(./.(.{.^.(.^.`.^.`.].`.^._._.`.(. X`._. X X X X.X|.|.|.`.`._..X_.'.`.|._._.'.`._._.`.`.{.{.|.^._.|.|._._.{._._.|.`.(.`.^.E.`./.|.`.(.`._.'._.(.|.(.{.(. X(..X`.`._.^.|.`.`.`.'. X|.|.|.|. X{..X^.'. X|.{.{.^.`.`.|.^.|.{.{._._.|.(.{.^.|.^.|._.|.|. X|..X.X.X.X@X.X.X.XdXdX@XdX.XdX.XdX.X.XdX.X.X.X.X.X'.|..X X.X|. X`.@X|. X'.@X|..X|..X.X.X.X.X.X X X X X.X.X.X.X.X.X|..X|..X'.|.|.`.`.|._. X{.|. X|. X}.|.}.|._.|.|.`.`.|.`.|.|.|.`.|.|.|.|.|._.{._._.|._.|.(.|.[.|.(._._.`./.|.`.|._._..X`.{..X X X|.|.|.|.{._._.|.|._.|._.|.`.(.{.|.(.(.~.~.~.[.T.T./.Y./.Y.T.T.T.U.L.H.Y.L.L.L.U.U.T.L.U.P.L.P.L.P.U.U.Y.U.T.P.U.U.U.T.T.U.!.T.T.T.T.T.[.T.T.[./.T.T./.T.~.~.~.~.~.~.~./.~.~.~./.~./././././././.~./.~./.T.~.T.~.T.T.Y.T.Y.^.U.T.U.T.T.T.T.T.~.~.T.~.~.T.[.~.~.~.~.~.~.~.~.~.E././././.(.(.{.(.{.}.}._.}.}.|.|.|. X'..X.X.X.X.X.X.X.XxX.XzX.X.XdX X.X.X.X.X.XdXdX.X.XzX.X.XzX.X.X.X.X.X.X.X.X|..X X|.{.|.{.|._.`.^.(./.{./.|._._._._.^.|.(.`.`._.|.|. X.X|.|. X X X@X|.'.dXdX.XzXdXdXdX@X'.dX.XxXdX.XdXdX.X.XdXdX'..XdXdXdXdX.X XzX.X'.@X'.'..XdX.X.X.X.X.X.X_.|.}.}.}.|._._.`.^.`.(.(.(.(.(.!././.!./.~.^././././.[.[././././.(.~.~.~.~.T.~.~.~.~.~.!.~.~.~.(.[._.(.(.(.(.(.(./././.(.(.(./././.~.~.~.T.T.~.T.T.T.U.T.U.T.P.Y.U.L.U.L.S.U.D.L.L.S.H.H.H.L.H.H.H.L.L.G.L.G.L.L.L.L.L.L.L.L.L.U.", "B m m M M m m m m B m V B B m B B B B N N B C N C N B C N C N C N C C N C C C N m C A B B B C N C N C C A C C A C C Z C C C C Z C Z A Z Z Z Z Z Z Z Z Z Z Z Z Z G Z H Z D D D D J L Z H H L L L L H Z J P J P J P P P P P I P ) I I I P P P / I I I S u e w $ $ # - e K Y n.~.!.~.T.T.~.T.T.~.T.T.~.T.T.T.T.T.~.~.~.^./.^./.(.(.(./.(.(.(.(.(.^.^.|.(.(.^.`._._._._.`.`.|.|.|.'. X X X.X|.|.|.'. X.X.X X.X.X'..X.X.X'.@XdXdX X X.X.X.X.X.X.X'. X|.`.|.`._.|._._.|._._.{.|.|.|._.|.[._.(.(.(._.(.(.|.(.(.(.(./.(.~.(.~.!.[.~.T.~.T.T.T.[.T.[.P.T.T.T.T.P.T.U.U.U.L.L.U.H.S.S.G.S.S.S.A.h.A.A.h.G.j.h.g.h.h.k.h.h.g.g.g.g.g.g.g.g.a.k.f.k.z.g.f.f.f.k.k.k.z.f.g.a.a.z.a.a.a.a.a.a.a.a.a.a.i.i.u.i.u.u.u.u.u.u.u.t.t.t.r.r.r.t.t.r.r.t.t.t.t.r.r.t.r.r.r.r.r.r.r.r.r.t.r.y.r.r.r.r.y.y.y.y.y.y.t.y.r.y.r.r.y.w.y.y.r.y.r.y.r.E r.t.r.y.w.r.y.t.y.r.y.w.y.y.y.y.y.E r.y.y.r.r.r.r.t.t.t.r.u.u.a.u.u.u.u.u.t.u.i.u.i.a.a.a.a.z.a.z.a.f.f.a.f.a.g.g.g.g.g.g.a.z.k.z.h.h.h.h.h.A.h.A.A.h.A.A.A.A.A.J.H.h.G.S.S.A.H.H.A.G.H.H.L.S.L.S.L.S.L.L.L.L.L.L.L.L.L.L.K.L.L.L.U.U.L.P.U.Y.Y.U.T.U.T.T.T.T.T.T.[.T.~.~.~.~.(.(.(.~.(.(._.(.`.(.^.(.(.|.|.`.`.{._._.}.}.}.|._.|. X X|. X|.|.|.|.|. X|..X|.'.|.'.|.'. X|. X|.|._.`._.|._.(.|.(.|./._./.|.(._.^.^._.(.|.{.^.|.|._._.|.^.(.(.|.{.{.[.|._. X{._.|._.|. X|._. X'.|.|.|._.|.`.(._._._._.^._.`.`.{.^._._.(._._.(.(._._._._.|.|.'. X X.X.X.XdX.X.XdXdX.X'.zX.XxX.XdX XdX.X.X.X.X'..X|..X|.|..X.X'.'. X.X X.X.X.X.X.X'.@X'..X'..X.X.X X.X.X.X.X'..X.X|.|. X|.|.|.|.{. X X|.|.|.{.|.|. X|.|.}.|.{.}. X}.}.|.|.|.|.|.|.|.|.|.|._. X|._.}.}.}.}.}.}.}.|._.|._.|.`.(.`.(._._.|. X}.'.}.|.|._.|._._._.|.`._.|._.{.|.(.|.(.(.(.(.[.^.~.~.T.T.T.~.T.T.U.T.T.U.L.P.L.L.L.P.P.P.L.L.J.U.L.L.P.P.P.P.Y.U.U.Y.U.Y.I.U.T.P.T.T.T.U.T.T.T.T.T.~.T.~.T.T.~.~.~./.^./.~./.~.(.~.~.^.~./.^././././.~.(.!.(.~.!.T.T.T.Y.T.T.Y.T.Y.Y.I.T.T.T.T.T.T.T.T.~.T.(.~.T.(.~./.~./.~./.~.!.~.~./././.(.(.(.(.^.|._.|.|._.|.|.|.|. X.X.X.X.X@X.XzXzX.XzX.XdXdX.X.X.X.X.X.X.X.X X.XdX.X.X.X@XdX.X.X.X.X.X|..X.X'.|._.|.|.(.(._.(.|.^.(.`.^.^.(.(.|.(.`.`.(.|.(.|._.|.|.'.|.`.|._. X.X.X.X.XzX.XdXdXzX.X'.xX'..X.XdX.XdX.X.X.X'.dXzXzX'.xX.XzXdXdX.X.X.X.X.X.X.X.X.X|..X|..X}.|.}.}.|.|.}.}.[.|.(.(.(.^.(.(./.(.(.(.^./.[.E.~./.(.~./././.(.XX(.~.(.~.~.~.T.~.T.~.T.~.~.~./././.{.(.`.(.{.|.^.T.(././.^.(./.(.(././.~.~.T.~.~.Y.I.T.T.U.T.P.P.P.L.P.P.L.L.L.L.P.S.H.H.H.H.H.H.H.S.H.H.H.L.H.L.H.L.L.L.L.L.L.L.S.", "m M M M M m B m m B m m m B M B B B B B B B N N N N C N C N C N C N N C C N N A A N N N B B C Z C C C C V C C C C C C C C F C C Z C Z C Z Z Z Z Z F Z Z Z Z Z Z D Z Z Z D D D D D L L Z H H H H L P L J L S L P P P P P P P I P I I P P ) P P P I I ) ) I I Q ) Q ^ u u = ; % $ o o # # o $ $ - w y ` b._.].(.(.~.^.(.(.^.T./.~.T.~.~.T.T.T.T.~.T.T.T.T.~.~.~.~././././.(.(.(.^.{.^.(.`.`.(.^.|.`.`.(.`.^._._._._._._.|._.'.|.|..X.X.X.X|..X|..X.X.X.X.X.X.X.X XdX'.@X'.dX.X.X.X.X.X X'.`.|.|.`.(.|.|._.`._.^.|.`.|.|.|._.}.}._.|._.(.(._.^.^.(.(.(./.(./.(.~.~.~.~.~.~.~.~.T.T.P.T.Y.Y.T.T.T.T.T.U.Y.U.L.L.L.L.S.G.S.S.S.S.S.A.S.A.h.h.h.h.h.h.h.k.h.k.g.g.g.f.g.g.g.g.g.z.f.k.f.a.z.z.f.k.k.k.k.a.f.f.z.a.i.z.a.a.f.a.a.a.a.i.a.a.a.u.i.i.u.u.u.t.u.t.t.t.r.r.r.r.r.r.r.t.r.t.t.t.r.r.t.r.r.r.r.r.r.r.t.r.r.r.r.r.r.y.y.y.w.y.y.y.y.y.t.w.r.y.r.r.r.y.r.y.r.y.r.y.r.y.y.y.y.r.y.t.y.y.y.y.y.y.y.E w.y.y.y.r.r.r.r.r.r.r.t.p.t.u.u.u.u.u.u.u.s.u.i.u.i.i.a.a.a.a.i.i.i.i.d.d.z.f.a.g.a.g.f.g.g.h.g.g.g.g.h.h.h.A.h.A.h.h.A.A.A.A.A.S.g.S.H.S.S.H.H.H.S.L.H.H.H.H.H.S.L.S.U.L.L.L.L.L.K.L.L.L.U.L.P.L.L.U.U.U.P.P.U.U.U.U.T.T.T.T.[.T.T.~.T.~.~.~.T.(.~.(.(.(.(.(.(.(.(.}.|.[._._.`._.|.|.|._.|.|._.|.|.'..X.X|..X|..X X.X'.|..X X|. X|.|.|.|. X_..X|.|.|._._.|._.`.`.{.`.|.`.`.`.`._.^.|.|.^.|.(.^.|._.{.`.|.`.^.(._.|.|.}.|.|.|._.|.|._.|. X|.|.|.`._._.|._._.^.|._._._.`.`.(.|._._._._._._._._.`.`.|._._.|.|.|.|..X.XzX.X.XdX.X.X'.zX.XzX'..X#X X@X.XdX.X.X X X.X.X.X.X'..X X.X X'.|..X|..X.X.X.X.XzXdX.X.X.X.X.X X.X.X.X.X.X.X.X.X.X X|.|.|.|.|.|.{. X X|. X|. X{.|.|.}.|.|.}.}.}.|.|.}.|.'. X.X|.|.|._. X|.|.|.|.}.|.}.}.}.}.`.{.|._.^.|.(.|.`._._._.}.}.|.|.|.|._._.|.(._._.(.`.|._._.`.`.^.(.(.(.[.E.(.~.~.T.~.T.T.T.T.T.U.U.T.P.L.L.Y.L.P.P.L.U.L.K.Y.U.U.P.P.P.P.U.U.Y.U.Y.U.I.T.T.P.P.T.T.T.T.T.T.T.T.T.~.T.T.~.!.~.~.!.~././.~.~.!.~.~.~.~.T./.~.~././.~./.T.~.~.~.~.~.~.T.Y.~.T.T.T.Y.Y.T.T.T.T.T.T.T.T.T.~.T.~.[.T./.~.!.~.~.~.~./.~.~.~./.(./.(.(.(.^.[._._._.|.|.{.|.|.|..X.X.X XdXzX.X.XzX'.zXdX.XzXdX.X.X.X.X.XzXdX.X.X.XzX'..X X.X.X'..X.X.X|.|.|.|.|._.(.`.|.|.{.(.{.|.).|.(.|.(.|.|.^._.`.|.(._.{.|. X|.`.`._.|.'..X.X.X@X.XdXdXdX.XzX.XzXdXdX.XdXdXdX.XxX.XzX.XdXzX'..X@X.X.XdX.X.XdXzX.X.X.X.X.X.X.X.X|.}.|.}.}.}.}.}.}._._._.|.(.|.(.(.(.(././.(.(.^.(./.~.~.(.!./.(.~.(.~.~.~.T.~.~.~.T.~.T.~.T.~.~.T.~./.(.!.^.(.(.(.(.(././.(./.(././././.~.~.Y.Y.~.Y.~.T.I.T.U.Y.P.P.P.U.U.L.L.L.S.S.P.L.D.H.H.H.Z.H.G.H.H.H.L.L.H.L.L.H.L.L.L.U.L.L.L.", "m M M m M M m N m m m B M M B V N N B B B B N N N A N N N Z N C N N C N N C N C B B A N B A C N A N C C C C C C C A C C C Z F C C Z C F B Z Z Z Z G Z Z Z Z G D D D Z D D Z L Z H Z H Z H H P H L L L J L P P P I P U P P I I I I P I I P ) P P I I P P ) I I ) J I P ) I ! _ P ) U I U L ) ! L J I I I P I I I J Q ) ) H I ) P ) Q.^.(.(.!.{.[.[.^.~./.T./.~.~.~.T.T.~.~.~.~.~.~.T.~.~./././.{.^.(.(.(.(.(.(.(.(.(.^.(.(.`._.`._.`.(._.^._.|.(.|.|.|.'. X|..X|..X X X.X|..X.X.X.X.X.XdX.X.X.X.X.X.X.X.X.X'..X.X|..X X`.`.|.`.`._.{.`.^.(.|.|.|._.|.|.{.|._.^.^.(.(.(.(.(.`.^.(.(./.(./.~.~.~.~.T.T.~.T.[.T.T.T.[.P.T.T.T.T.Y.Y.U.U.U.L.L.L.S.U.S.H.S.S.h.G.G.h.A.A.A.l.h.g.h.h.h.k.g.g.g.g.g.g.g.g.g.g.f.f.f.a.a.g.g.g.a.f.f.f.k.f.z.a.a.a.a.a.a.i.i.a.i.i.i.i.i.u.u.t.u.u.u.u.u.t.t.t.t.r.r.r.r.r.r.t.r.r.t.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.y.r.y.t.r.y.y.y.y.w.r.y.y.y.r.y.y.y.y.r.y.r.t.r.y.r.t.y.y.y.y.t.y.r.y.t.y.y.w.y.r.y.y.y.r.y.y.y.r.r.r.r.r.t.p.t.t.t.r.u.u.u.u.u.a.u.u.i.i.i.i.i.a.a.i.a.a.z.a.z.a.f.g.g.z.g.f.g.f.g.k.h.z.h.h.l.l.A.h.A.G.h.A.A.A.A.A.A.G.A.S.S.S.G.H.H.F.H.H.H.H.S.H.H.S.U.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.P.P.L.L.L.U.T.U.T.T.T.T.T.T.T.T.~.~.~./././.(.(.^.(.(.(.|.[.|._._._.|.`._._._.|._.|.|._.|.|. X|..X|.|.'. X.X|..X.X.X.X'. X X|.|.'.'.|.|.|. X`.|.|.|._.^.`.^.|.`.`.^.|._.(._.^._.(.^.(._._._.`._.^.|.`._.|.}.}. X}.|.|.|.|.|.|.}._.{._.|.|.|.|.|.{.}.`.^.`._._.(._.`.].{._.(._.(.`._.(.|.(._._.`. X_.|..X.X.X'..XdX@XdX.XzXzX'.dXdXdXdXzX.XdX.XdX.XdXdX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X@X'.xX'.zX.X.X.X.X.X.X.X'..X@X.X.X.X.X|.|.|.|.`.|.|.|.{. X{.|.|.|. X|. X{.}.|.|.}.}.|.|.|.|.'..X|..X|.|.|._.|._.|.|.|.|.|.|.}.}.}.|._._.|.^._.`.|.|.|.|._.}.}.}.}. X}.|._._.`.|.(._._._._.`.`.`.(.(.(.(./.(.~.!.~.T.T.T.T.T.U.T.T.L.U.L.L.L.L.L.L.P.Y.L.L.L.L.U.L.P.P.P.P.U.T.U.U.T.U.U.T.T.P.L.T.T.U.U.T.T.Y.T.T.T.T.~.~.~.~.~./.~.~./.~.~.~.~.~.~.[.~.~.~.~.~.T.R.~.~.T.T.~.T.T.T.T.~.T.T.T.T.Y.P.T.T.T.~.T.T.T.T.~.T.~.~.^./.~.^.~.~./.~.~.~./.~././././.(.(.(.`.^._._._.|.|.|.|.|..X.X'..X.XdXzX.X.XzX.XdXdX.X.X.X.X.X.X.X.X.X.X.XdXdX.XzXdX.X.X.X.X|.|.|.|.|.|.|._._.|._.`.^.`.`.(./.(.(.^.(.(.(.`.^.(._.^.`.|.|._.|._._.`.`.|..X.X.X X@XdXdX#XdX.XzXzXzX.XdXzX.XzX@XxX.XzX.XzXzX'.zX'.zX.XzXdX.X.X.X.X.X.X.X.X|..X.X X|.|.|. X}.}.}.}.}.|.|.|.^.^.|.(.(.(.(./.^.~.^.~.(./.~.~.~.[.^././.~.~.(.E.~.T.T.T.~.T.~.T.T.~.~.~./.~.^._.(.(.(.(.^.^./././.(.(.(././.!.~.~.~.~.T.T.Y.T.T.T.T.Y.P.U.L.L.U.L.L.L.L.L.P.S.U.H.H.G.L.G.H.D.H.H.H.L.L.H.L.L.H.L.L.U.L.L.U.", "M m M M m m N m m B B m M B m B B B B B B B C N N N C N C N N C C C N C C N C N B B B C Z N C N C C C V A C C V C C C Z C C C C Z A Z D D Z Z Z D B Z Z D B B D D D D D D Z H H Z H H H H H H H P H J J L P H P P P P P P I P I P I I I I P P I I I ) U I I U I I P ) ) J ) ) ) I ) ) I I P P P ) I I ) ! I ) I ) P ) ) I ) ) ) ) F. X[.(.{.~.(.E.(.(././.(.Y./.T.[.~.~.T.~.~.~.~.~.~.[././././.(.[.(.[.(.(.(.(.(.(.`.(.(.(.^.`._.^.`.`.|._._.|._.|.|.|.|..X X.X.X.X.X|..X.X.X.X'.'..X.XdX.X.X.X.X.X.X.X.X.X X'.|.|.`._.`.`.`.(.|.(.`.(.(._.(.|.|._._.|.{._.|.(.(.`.].(.^.(.(.(.(././.^.[.~.~.~.~.~.~.T.~.T.T.T.T.T.T.Y.T.T.T.T.Y.U.L.L.U.S.H.H.S.S.S.S.H.S.S.A.A.A.A.h.h.l.h.h.h.k.g.g.f.g.g.g.a.g.g.f.f.f.f.f.z.i.a.a.a.k.a.a.f.a.i.z.a.a.a.i.a.s.i.i.i.i.i.i.u.u.u.i.i.u.u.u.u.t.t.t.r.r.r.r.r.r.r.r.r.t.r.r.r.t.t.r.r.r.r.r.r.r.r.r.r.r.r.r.y.y.y.y.y.y.y.w.t.y.y.y.y.y.y.y.r.w.r.y.y.y.t.E w.y.y.y.y.w.y.r.y.y.y.y.y.y.y.w.r.y.y.y.y.r.y.t.r.r.r.r.t.u.s.t.u.u.u.u.u.i.u.i.u.a.t.u.i.i.i.i.a.a.a.a.i.i.k.k.z.a.a.g.g.g.g.g.g.h.h.h.h.l.l.l.h.h.h.h.Z.h.h.A.A.A.A.A.S.S.S.S.H.H.D.H.H.H.H.H.L.D.L.S.U.S.L.L.L.L.L.L.L.L.U.U.P.U.L.L.L.L.L.P.L.U.U.T.U.U.U.T.T.T.T.T.~.T.~.^././.(.{.[.{.(.(.(._.}._.|._._.|._.|.|.|.|.|.{._.|.|.|.|..X X.X.X.X.X|..X.X.X.X X.X|.|..X.X|. X X|.'.`.`.|._.{._.`._.`.|._.^.|.(.|._.{.}.(.|.(.(.(._.(.(.|.{.`._._.|.}.}.}.|.|.|._. X|. X}.|. X|.|._.|._.{._.^.|._.^.(.(.(.(.(.^.(._.(.(.(.^.`.^.^.|._._._._.|. X'.|..X.X.X.X.XzXzX.XzXzX'..XdX'..XdX.XdX.X.X.X@X@X.X.X.X.X.X.X'..X.X.X.X.X.X'.dX.X.XxX'.zX.X.X.X X.X'. XdX'..X.X.X|.'..X|.|.|.|. X|. X|. X|.|. X|.|.}.|. X{.|.}.|.|.}.|..X|. X.X.X.X.X.X X|. X|.|.|.|.|.|.}.}.}._.|._._._.`._.(._._.|._.}.}.}.}.}._.|.|.|.|.(.|.|.(.|._.(.|.(.`._.(.(.(.(.~./.~.(.~.T.Y.T.T.U.U.P.L.L.L.L.L.L.L.L.L.L.U.L.L.U.U.P.P.P.Y.U.U.T.T.I.I.T.L.L.T.P.T.U.U.U.T.T.Y.T.T.T.T.~.~.~.~.~.~./.~.~.!.~.~.~.~.~.T.~.E.T./.T./.R./.~.~.~.T.~.T.T.T.Y.T.T.T.T.T.P.~.T.T.T.T.~.T.T.T.!.~.!.^././.~.~./.~.!./.~.~.~.~././.^.^.(.{.(.^._._._._.|._.|.|..X.X.X.X.X.X.XzX.X.X#XdXdX.X.X.X.X.X.XzXdX.XdX.X.X.X.X.X.X.X.X.X.X.X|.|.|.|.|._.|.(.`.(.`.{.(.{./.|.|.(.`.(.^.(.(.{.|.|.|.(.|._.|._._.|._.`.|. X.X.XdXxX'.dX'.dXzX.XzX.XzX@XzX.X'.zX.XxX.XzXdX.XzX.XzX.X.X'.dX.X.X X.X.X.X.X X@X.X|.'..X|.|.|.}.}.}.[.|.(._.|.(._.^.`.^.(.(.(./.^.^.(.~././.~.~.~.~.T.(.T.(.~.~.~.~.~.~.T.~.~.~.~.~.~.T.~.~.(.!.(.(.(./.^./.!./././.!./././.~.~.~.~.T.~.Y.T.T.T.T.Y.P.Y.L.U.L.U.D.L.L.L.S.S.U.H.H.H.G.G.H.H.H.H.H.H.S.L.L.L.L.L.L.L.L.U.L.L.", "M M m m m N B B m B m m B B B B N B B B B B B N C N C N B B Z C C C C C C N C N m C N B C B C C C A B C A C C A C C C C C Z C C C C Z B Z C D B Z Z Z Z Z C D D Z D Z D D D Z D D L H H H H K H L H U H L P P P P P P P ) I I I P P / I P P I P I I I I ) P I I ) I I ) _ ) ) / I P ) I ) ) ) I K ) P I ) P P ) ) ) I ) I I ) ) S F.|.[.{.(.(.(.(././.R.~.!.~.~.~.~.[.~.~.~.~.[.~.~.~./.[./././.[.(.(._.(.(._.(.(.(.(.(.(.`.`.|.`.|.|.(.|.(.|._.`.|.|. X X|..X X.X.X.X.X'.'..X.XdX@X.X.X.X.X'..X.X.X.X.X.X|.|.'.|._._.|._._.(.(.^.(.(.(.(.(.|.{.(.`.(.`.(.(.|.^.(.(.(.(.(.(.(.^.(.(./.!.~.~.~.~.[.T.T.~.T.T.T.T.T.T.T.T.T.T.T.Y.U.P.P.P.U.A.L.H.G.S.A.A.S.A.A.A.A.h.A.h.z.h.h.z.k.j.f.k.g.a.g.f.g.g.k.g.f.f.i.a.k.i.z.a.z.a.a.i.i.a.a.a.a.a.a.a.i.i.i.i.u.i.u.u.u.u.u.u.u.u.u.u.u.u.t.r.r.r.r.r.r.r.r.r.t.r.r.t.t.r.r.t.r.t.r.r.r.r.t.r.y.r.E y.y.y.E w.y.y.y.y.y.w.y.y.y.y.E y.y.y.y.y.w.r.r.r.w.r.r.E y.r.r.r.y.w.y.r.y.y.w.E y.y.y.y.y.y.E r.r.r.r.t.t.u.u.u.r.u.u.u.u.u.i.u.i.i.u.i.i.i.i.i.i.a.a.a.a.g.a.a.a.g.k.g.g.g.g.g.k.h.h.h.h.h.l.A.h.A.h.A.h.A.A.A.A.A.A.S.S.S.G.S.S.H.H.H.H.H.S.H.K.H.L.H.L.L.F.A.L.L.L.L.L.L.L.L.U.U.S.L.L.L.L.U.L.L.Y.U.Y.T.U.U.T.T.~.T.T.~.(./.~./.(.(.(.(._.{.(._.|._.|._.|._.`.`.|.`.|.|._.|.|._.|. X X.X.X.X.X.X.X.X XdX'. X.X.X'.|.|. X.X|.@X|.`.`.|.|.`._.(.|.{.`.`._.`.`.|._.|.(.{.(.(.(.^.(.|.`.}.}.}.}.}.}.}.}.|._.|.|. X X X|.|. X}.}.`._._.|._._._.`.^._.(.(.(.(.(.`.(.(.(.(.(.(.(.(._.|.^.^._.|.{.|..X'..X.X'..XdXzX.XzXdX.XzX'.zX.X.XdX@X X.XdX.X.X'..XdX.X.X.X.XzX.XzX.X'.dX.XdXdXdXdXdX.X XdXzX'..X.X.X.X.X.X X.X.X.X'..X|.|.`..X X X[.|. X_.@X|. X{.}.}.}.|.|.}.|.|.'..X|..X.X.X.X|..X|.|.|.|.|.|.|.|.|.|.|.|.}.|.|.}.}.}.}._.(.[._.|._._.|.}._.}.|.}.}.}.[.`.(.[.|.|.^.).|.`.^.(.{.(./././.~.~.T.T.T.Y.Y.Y.I.U.T.L.L.L.L.L.U.L.L.L.U.L.L.L.L.U.P.P.K.Y.P.Y.T.T.T.U.U.I.U.L.L.L.U.U.P.T.Y.T.T.I.T.~.~.T.~.~.~././.~.~.~.~.~.~.~.~.T.XXXX~.T.T.~./.~.~.~.~.T.T.~.T.T.T.T.T.T.T.T.T.T.~.T.~.T.T.T.~.T.~./.~.~./././././.^././.~.~.~./.~././.(.(.^.`.|.(.`.|.{.|.|.|.|..X.X.X.X.X.X.X.X.XzXzX.XdX.X.X.X.XdX.X.XdX.XdX.XdX@X.X.XzX.X.X.X|. X_.`.|._.|.|.{.^.|.(._.(.^.|.`.^.^.(.(.(.(.|.(.|.|._.(.`.}._._.{.|._.|.`.|. X.X.X.XdXdXdX.XzXzXzXzX.XdXdXzXzXzX'..XxXzXxX.XdXdX@X.XzX.X.X'.dX.XdX.X.X.X.X X'. X.X.X|.|.|.|.|.}._._._._._.`.(.`._.`.(.(.(.(.(././.^.^./.!.~.~.~.~.(.~.~.~.~.~.~.T.T.E.XXXXT.~.T.[.~.~.~./.!.(.(.(./.(./././././././././././.~.~.T.T./.T.T.T.T.T.T.U.U.P.U.P.L.L.L.S.S.L.P.L.G.H.H.H.G.H.H.H.H.H.H.L.L.L.L.L.L.L.L.U.L.L.P.", "m M m M m B m m m B B B B m B m B B B B B N B C N C N C B C N C B N N C N C C C C C C C B C N C C N B C C C C C C C Z C C C Z Z Z D C Z Z Z Z Z C Z C G Z Z D C D Z H Z D D Z L H H Z L H H H H H P H J L P L P J P P P S P I P I ( I P ) ) P ) I J P ) ) J ) ! I I I I P P P ) ) ) ) I I ) I P ) ) ) ! ) ) ) ) P I I I I I I Y ) n.~.(.(.(.].^././././.(././.~.^.~.~.~.~.E.~.~.~.~./.(.(./.(.(.(.(.(.(.(.(.(.^.(.(.(.{.(.(.(._.`.^.`._.(.`._.|.{.|.|._.'..X X X.X.X.X.X.X.X.X.X X'..X.X.X.XdX'.'..X.X.X X.X'.|.|._._.|._._.(.(.(.(.(.^.(.(.^.(._.`.(.(._.(.(.^.(.(.(.(.(.(.(.(.^.(.(./.^.[.~.~.~.T.~.T.T.T.~.P.Y.P.P.T.Y.T.T.U.T.U.L.L.S.U.D.H.H.S.H.S.A.A.l.A.A.A.h.A.h.l.h.j.h.k.k.l.g.g.g.g.k.z.a.a.f.f.z.a.i.i.i.i.i.a.a.i.a.a.a.a.a.a.i.i.i.u.i.u.i.u.u.u.u.u.u.u.u.u.t.t.t.t.r.t.r.r.r.r.r.r.r.r.r.r.t.r.r.r.t.r.E t.r.r.r.r.r.r.r.r.r.t.t.y.y.r.y.y.y.y.y.y.y.y.r.w.y.y.y.y.w.y.y.y.y.y.r.y.r.y.y.w.y.y.y.y.y.y.y.y.w.y.y.y.y.t.y.r.t.r.r.r.t.t.t.t.t.u.u.u.u.u.u.i.u.i.i.u.i.i.i.u.i.u.i.i.i.a.a.a.f.k.z.g.k.g.g.g.g.g.h.h.h.h.l.z.l.h.A.h.h.A.A.A.A.h.h.A.A.S.S.S.G.S.H.S.H.S.H.H.H.H.S.H.S.L.L.L.D.U.L.S.L.U.L.L.L.L.L.L.U.L.L.L.L.L.U.L.U.L.L.T.U.T.T.T.T.T.~.T.~.!./././.^.`.(.^.^._.`._.|.|.|.|.|.|.`.|.|.|.|.|._._.`.|.|.|. X.X.X.X.X X@X@X.XdX'.|.|..X.X X|.|..X|.|._.`.|.|._.|.|._._.`.^.`.(.|.{.`.^.`.`.(.`.^.`.^.|.^.}.}.}.}. X}.|. X X|.|.|.|.[.|. X}.}.}.|.|._.|._._._._.(.(.(._.(.(.(.(.(.(.(.(.(.(.(.^.`.^.|._.|.|._.|.|.|..X|..X.XdX.X'.zX.XdXdX.XzXzX.XdX.X XdXzX.XdXdX.X.XdX.X.X.X.X.X.X.XzX@XdXdXdX.XdX'.dX.X'.@X.X.X.X.X.X.X|..X.X.X|.|..X`.|.`.|.|. X|..X X|._. X X X X|.|.}.|.|.}.|.|.|..X.X X|..X.X.X.X.X.X|.|.|. X}.|.|.'.|.|.|._.{.}.|.}.}.`.`.^.|._._.|._._._.}.}.}._._.|.{.|._.^.^.|.^.^.^.`.(.^./.(.(./.~.~.!.T.T.T.Y.I.T.U.L.Y.L.L.L.L.S.L.L.P.L.P.L.U.U.L.U.L.P.P.P.P.P.T.U.U.U.I.L.U.U.U.P.P.L.P.T.U.T.T.T.T.~.~.R.^././.~././.~.^.!.~.(.~.~.).T.~.~.~.~.T.~.T.~.~.T.~.T.T.!.T.T.(.T.T.~.T.~.T.~.T.T.~.~.~.~.~.~.(././././.~.(.~.~./././.~././.!./././.(.^.(.(.^.|.(.|.|.|.|.|..X.XdX.XdXdXdX.X.X.X.X.X.X.X.X.X.X.XdX.XdXdX.X.X.X.X.X.X.X X.X.X|.|.|._._._.|._._.(.|.|.^.{.(.(.`.(.(.(.(.(.(.{.(.^._.(.`.}.[.(._.(._._.|.|.'. X.X.X'.zX'..XdXzX.XdXzX.XxXzX.XxX.X.XzX.X'..XdXzXzX@X'.'.dX.X.XdX@X.X.X.X.X.X'..X.X|..X|..X'.|.|.|.|._.|._.{._.`._.(.`.(.(.(./.(.(.~.[./.!.(.~.(.~.(.XX~.~.~.~.~.~.~.[.U.~.~.~.~.T.T.[.T././.^.~.^.~./.~.~././././.(././././.~.~.~.T.T.~.T.T.T.T.U.U.U.P.P.L.L.L.U.U.U.S.Y.L.H.H.H.H.G.A.H.H.H.H.H.H.L.H.L.L.L.L.L.U.L.P.P.", "m M M M N m m m B m m B B B B m B N B B B B C N C N C N N C C C C B C N C N N C B Z B C C B C N B B Z C C C C C C C C C C C C C Z B C Z B D Z Z C Z C Z Z D H Z Z Z Z D Z Z D H H H Z H H P H L H P H H L P P J P P P J J I P P P P I I P I ) P ) P P I I ) L ) I ) ) I P P P P P ) I P I I ) I ) P P ) J ) I ) ) ) ) ) ' I ) _ I b./.{./.^./.^./.(./.^.~.~.(././.~.~.~.~.^.~././././.(./.(.^.(.(.(.{.[.(.(.`.(.^.(.(.(.(.`.^.|./.|.|.`.^.`._.|.|.|.|.|..X.X.X.XdX X.X.XdX.X.X.X.X'..X.X.X.X.X.X|..X.X.X.X|.|._._.|.|.(.(.(.^./.(.(.(.(.(.(.|.(.(.(.(.(.(.(.{.(.(.(.(.(.(.(.(.!.(./././.~.~.~.T.Y.~.~.T.P.~.P.T.Y.T.P.Y.T.U.T.Y.P.P.L.L.L.S.L.H.G.S.S.S.S.A.A.A.h.h.G.l.l.l.h.h.k.h.h.k.g.g.g.j.a.z.g.d.g.a.d.i.i.a.i.i.f.i.i.a.i.i.a.i.i.i.i.u.i.u.u.i.u.u.u.u.u.t.u.t.t.t.t.u.t.t.t.r.r.r.r.r.r.r.r.r.r.t.r.r.r.t.t.r.r.r.r.r.r.r.y.r.y.y.w.y.r.y.y.y.y.y.y.y.y.y.E w.y.y.y.y.y.E r.y.y.y.y.r.r.y.y.r.r.y.w.y.y.y.y.y.y.r.y.y.y.r.r.r.r.r.r.r.r.r.r.t.t.u.u.u.u.u.u.u.u.u.i.i.u.i.i.s.i.i.a.i.i.i.i.a.a.a.a.a.g.a.h.k.h.k.g.h.z.z.h.h.l.l.h.A.h.h.A.A.h.A.h.A.A.h.A.S.S.S.S.S.S.H.H.S.G.H.H.H.H.L.L.L.S.S.L.L.H.L.L.S.L.L.L.L.L.L.L.L.L.L.L.L.Y.L.L.L.U.L.T.U.T.T.T.T.!.R.~.~./.(.(.(.^.^._._.}.}.|.|.|.'..X|.|.|.|.|.|.`.|.`.|. X|.|..X X'. X.XdX.X.X.X.X.X.X.X X|. X|.'.'.|.|.|._.|.|.|.`.{.{.|._.|.^.|.`.`._._.(.{.{.{.(.(.^.^.}.}.|.}.|.|.'.}. X|.|.{.|.|.|._.}.}.|.|.|.|._.|.}._.|.(.`.`.^.`.(.{.(.(.(.(.`.^.(.(.^.`.(.(.{.^.{.|._.|.|.|.|..X.X.X.X@X.X'..XdXdXdX.XzX.XzXdX.X.XdX.X@X.XdX@X.X.X.X@XdX'..XzX.X'.zXzX.XzX.X@XdXdXdXdXdXdX.X.X.X.X'..X.X.X|..X`.|..X|.|.|.|.|.|. X|.|. X|. X X|.|.|.}.|.{.}.|.|..X|.|. X.X.X.X|..X|..X|.|.|. X|.|.|.|.'.|.|. X|._.}.}.[.|.^._._._._._._._._.[.|._.|.|.|.|.^.(.(.|.`.(.(.(.(.(.(.(././././.~.~.T.T.T.Y.I.I.I.P.L.U.L.L.S.U.L.L.L.P.L.L.L.Y.U.U.U.L.P.P.Y.P.P.U.T.U.Y.Y.U.U.L.L.P.P.U.Y.U.T.T.~.T./.~./.~././.[.~.~./.~./.~.~.~.T.~.~.~.T.~.T.~.~.T.~.T.~.~.Y.T.~.T.~.T.T.~.~.T.T.T.T.~.T.T.~.~.~.~././.!.~./././.~.~./.~./.~./././././.(./.{.(.{.|.{.|.|.`.|.|..X X.X.X'..X'.dX.X XdX.X.X.X.XdX.X@X.X.X@X.XdX.XdX.X.X.X.X.X.X|..X X'.|._.|.{._._._._._.^.(.{.(.`.^.^.(.(.`.(.(.^.|.^.^.(.^.(._.^.|._.|.|._.|.|..X.X.X.X.X'.zX.XdXdXdXzX.X#XzXzX.X.XzX.XxX.X'.dXdXzX'.zX'.dX.X.XdX.X.X@XdX.X.X.X.X.X.X.X.X|. X X|.|._.}.|._.|._._.|.^.(.`.(.(.(.(./.{.~.(.~.~.~.~.~.(.~./.~.~.~.~.T.~.~.~.~.~.~.~.~.~.T.~.~.~.~.!./.~./.~.~.~.~.R.~./././.~.~.~.T./.T.T.T.T.T.T.T.T.T.U.U.U.L.P.L.L.D.S.L.S.S.G.L.A.D.H.H.H.H.L.H.H.H.L.L.L.L.L.L.L.L.P.L.U.P.", "m m M M m m B N m B B B m m B B N N B B B B B C N N A C C N C N Z B C C N C C Z B C B B C B C N Z C N C C C C C C C Z C B C C F Z C Z C Z C Z Z Z Z Z D Z D Z D Z Z Z Z H Z H H Z H H H Z H U H H L H P D J P P P J P I J I J ) P P I I I I P ) P ) P I P ) P U I I I I ) ) ) ) P _ _ I ) I ) I P ) ) P ) ) I ) P I I ) I I I I ) ` Q.|.(.|.(.{./.(.!.^.(.(.^.~./.~.^.~./.~./.~.~./././.^.(.(.(.^.(.(.{.(.(.^.`.(.^.`.(.(.^.`.(.{.`.(.`.`.|.{._.|. X|..X.X|..X.X'.@X.X.X.X.X.X.X.X.X.X.X'..X.X.X.X.X|..X|. X|._.|._.{.|.`.(.(.(.(.^.{.(.(.(.^.(.(.(.(.(.`.(.{.(.(.`.(.(.(.].(.^.(.(.(./.~.~.~.!.~.T.T.T.!.P.~.P.P.P.^.U.T.T.Y.Y.Y.L.Y.L.H.L.H.H.H.H.S.S.A.A.A.A.G.h.h.l.h.h.z.k.h.z.h.j.g.a.j.g.z.a.a.a.f.a.i.i.k.i.i.i.i.i.i.i.i.i.i.a.i.u.i.i.u.i.i.u.u.u.u.u.u.u.t.u.t.u.p.t.t.t.r.r.r.y.r.r.r.r.r.r.r.r.t.t.t.r.r.r.r.r.r.r.r.r.r.t.y.t.r.y.r.y.y.y.y.y.y.y.y.y.y.y.y.y.y.w.y.w.y.y.y.y.y.y.r.r.r.y.y.y.E y.w.r.y.y.y.y.y.y.r.r.r.r.r.t.r.r.r.t.t.t.u.t.t.t.u.u.u.u.u.u.i.u.u.u.i.u.i.u.i.i.i.i.i.a.a.a.g.k.k.g.k.k.k.h.h.k.l.l.h.h.l.l.A.l.H.h.G.h.A.A.A.A.A.A.A.A.S.H.A.H.H.S.S.H.H.H.S.D.L.H.L.S.L.L.S.S.L.L.U.H.S.U.S.L.L.L.L.L.L.L.U.L.K.L.L.L.L.U.U.T.T.T.T.R.~.Y.~.~.!./.(.^.^.`._.}.}._.|.|.|..X|..X|..X.X|.`.|.`.|.|.|.|.|..X.X.X.X.X.X.XdX.X.X.X.X.X|..X|. X|..X X|._.|.|.|.|.`._.`.|.|.^.|._.(.{._._.`.`.(.(.|.(.|.{.[.}.}.}.}.|. X|.'.|.|.|._.|._.|.}.}.|.|.|.|.|.}.}.|.|._.(.`.(.{.(.^.(.(.(.^.(.(.(.(.(.(.(.^._.(.(.(._.|.|.|.'.'.|..X'..X.XdX'.dX@X'.zXzX'.dX.X.XdX X.XdX.X.XdXzX'.dX'.zX.X'.zX.XzX'.zXzXzXzXzXzXzXzXdXdXdX.X.X.X.X.X.X|..X.X.X'..X|.|.|.|.|.|. X{._.|.|.|..X{. X|.{.}.}.|. X X X X.X.X X X.X.X.X.X.X|..X|..X X}. X.X X X X|.|.|.}.|.}.}.^.|.|.^.{.`._._._._.|._.|.(.(._.[.^.(.(.^.^.|.^.(.(.^.(.(.(././././.~.T.T.T.Y.Y.I.L.U.L.L.L.L.L.L.L.L.L.L.L.U.L.U.K.L.U.Y.L.Y.P.T.T.U.U.U.U.U.L.L.L.L.L.U.Y.U.T.T.T.T.~.T./.~./.~.(.^.~.~././.~.~.~.~.~.T.~.~.~.T.T.T.T.T.T.~.T.T.(.T.T.T.~.~.~.T.~./.T.~.~.T./.~.~.T.~.~./.^.^.~././././.~./.(.!./.!.~./././.(.(.(.(.{.^.`._.{._.|. X|..X.X.X.X.XdX.X.X.X@X.X.X.XdX.X.X.X.X.XzXdX.XzX.XzXdX.X.X.X.X.X X'.|._.`.|._._.|._.(.`.`.(.`.(.(.`.(.(.^.{.).{./.|.`.(.(.^.|.(.|.^.}.(.|._.|.|. X.X'.dX@X'. X.XzXdXdX@XzX'.zX.XzXzX.X.XxX.XzXdXdX.XzX.X.X'..X.X.XdXdX X X.X.X|..X.X|.|..X.X.X|..X X|.|._.|.|.|._.`.`.`._.(.(.(.(.(./.(./.^.(.~.(.~./././.^.~.~.~.~.~.~.~.~.T.~.~.[.T.~.R.~.~.~.!.~.~.~.~.~.~.~.(.~./.~././.(./.~.T././.T.T.T.T.T.T.I.T.U.U.U.L.L.L.L.L.L.L.L.L.G.S.H.H.G.H.H.H.H.L.H.L.H.H.L.L.L.L.L.L.U.L.P.", "M m B m N B m m M M M V V N N V N N B N B B B B B C B C B C B C Z A C N A C N C C C C C A C C C A N A B C C A C C C C C C B C C Z Z C Z Z C Z C Z C Z Z Z Z D D D D Z D Z Z Z J L J H H H H H H H J J L L P P P P P P P P P P ) P P P ) P ) P I I ) I U _ P P I I I ) I ) P P I ) ) P ) ) J ) ) J ) ) H ) ) J ) ) ) I K _ I ) P ) ` F.`.`.(.`.(.^.^.(.(.(./.(./.(././././././././.(./.(.!.(.(.(.(.(.(.(.(.^.(.(.(._.(.(.(.`.`._._.|._._._._.|.`.|.'..X|..X.X.X.X'.'.xX.X@XdX.X.X X.X X.X|..X.X|..X.X|.|.|.|._.|.|._.{.^.(.(.(.|.(.(.(.(.).^.^.(.(.(.(.(.(.(.(.(.(.(.(.(.(.!.(.^.(./.^./.~.~.~.~.T.T.Y.T.~.T.U.T.T.T.U.T.Y.T.P.P.P.P.U.L.S.S.L.S.G.H.Z.A.A.h.A.A.A.A.h.A.h.h.l.h.h.z.l.k.j.k.x.f.a.z.f.a.a.a.a.i.i.i.i.a.i.i.i.i.i.i.i.i.i.i.u.u.a.u.i.u.u.u.u.u.t.u.t.t.t.t.t.u.r.r.t.r.r.r.r.r.t.r.r.t.y.t.r.r.r.r.t.r.t.r.r.r.r.y.y.t.w.E E r.E y.y.y.y.y.E E y.E y.y.y.E y.y.E y.w.y.w.y.w.y.r.r.r.y.y.y.y.y.y.y.y.y.y.r.r.y.r.r.t.r.r.t.r.r.t.t.t.t.t.t.t.t.u.u.u.u.u.u.i.i.u.i.i.u.u.u.i.u.i.i.i.i.k.i.i.z.f.f.k.f.g.k.g.h.g.h.h.A.h.A.A.A.G.A.j.A.A.A.A.A.A.A.A.A.A.A.H.G.G.G.G.H.H.H.H.K.L.L.G.L.S.H.L.L.H.U.S.L.L.L.L.L.L.L.L.L.P.L.L.L.U.L.L.L.U.L.T.U.T.T.T.^.~.~.~.~.^.^.(.(.(.(._._.|.|.|.|.`. X|..X.X.X|..X X|.'.|.|.|. X.X.X.X.X.X.X'.zX.X.X.X'..X.X.X'..X|.'.|.|.|.|.'.|.|.|._.|._.|._._._.|.|.`.^._.(.|.(._._._.(._.|.{.|._.'. X|.|.|.|.|.[.|.|.|._._. X_.|.}.|. X X}.}.}.}.^.|.~.(.(.(.`.^.(.(.(.(.(.(.(.(.(.|./.^.`.`.|._.|.|.|.|..X.X@X.X.X.XzXdX.X.XzXzX.X'.xX'.'.'.@X'..XzX.XzX XdX'.'.'.zX'.zX@XdXdXdXzXzXzXzXdXzXdXdXdX'.'.xX.X.X.X X.X X X.X.X|.'.|.|.|.'.|. X|.|.|.|.|.|.|.|.`.|.`.|.|.|.|.|.|. X.X.X.X.X.X|..X X.X|..X X.X|..X'.|.|.|.|.|._.|.`.`.{.`.{./.^.`.(.(.{.|._.(.(.`.`.^.`.(.(._.(._.(.(.(.(.(.(./.(./././.~.T.~.T.T.T.U.L.U.L.P.L.L.L.L.L.L.D.L.L.L.L.L.L.P.L.T.U.U.Y.L.U.Y.U.U.L.K.U.L.L.L.L.L.L.U.T.U.T.T.T.~.T.~.~.~.T.[././.(.~./.~.~./.~.~.~.~.T.T.T.T.T.T.T.~.~.I.~.~.T.~.!.~.~.T.~.~.~.T.~.~.T.[.~./.~././.~./././././.~.^.~./.~./././././.~.(.(.(.(.(.{.`.(.|._.^._.|.|..X|..X.X.X.X.X.XdX.X.X.X.X.X.X'.dXdXzX.XzX'.zX.X.X.XdX.X.X.X'..X|.|._._.|.{._._._._._.|._._.|.(.(.(.(.(.`.(.(.(.(._.^.`.(._._._._._._.|.}.|.|.|..X.X.X.X.XdXzX.X.X.XzXzXdXzXzXdXzXzXdXzXdXzX.XdX.X@X.XdX.XdX'..X.X.X.X.X.X.X.X.X.X.X.X.X X|.@X|.|.`.|.|.|._.}.}.}.|._.^._.(._.(.(.(.^./.(./.(././././.~./.~./.~././.~.!.(.~.~.~.~.~.T.^.~.~.~.T.~.~.~.~.T.~./.Y./././.T.~.~.~.~.T.!.T.T.T.T.Y.T.Y.Y.Y.P.P.P.L.L.L.L.L.S.S.L.J.H.H.A.H.S.H.H.A.Y.S.U.S.L.L.H.S.P.L.L.L.P.P.Y.", "M M m m m m N B V M C m N N V B V V N B N N B N B B B B C B C B N C N Z N Z A C C A A C N C A N A C C C C C C C C C C Z C C Z C A Z Z C C Z Z Z Z Z Z C Z Z Z B D D D D D D Z L Z Z H H H H H J J J H J L P L J P P P P P P P P J ) P P J ) P / ) U I I P ) P ) I ) P I ) I ) ) I ) ) I ) ) ) ) I ) I ) ) ) ) ) ) I ) ) I ) ) ) ) ` n._.{.(.^.(.(.(.(.(.(.(.(.(././././.^.E.~./.^./.(./.(.(.(.(.(.(.(.(.(.`.(./.(./.(.(.(.(.(.`._._._.|._._.`.`.|. X'.|..X.X X@XdX.X.X.X.X X.X.X X'..X.X.X.X.X X.X|.|.|.|.|.|._._._._.{._.(.(.^.(.(./.(.[.(.(.^.(._.(.(.].(.(.`.(.(.(.].(.(.!.`.(.(.(.~./.~.~.T.~.T.T.T.T.T.T.T.T.U.U.U.P.Y.P.P.P.P.L.L.U.L.L.L.H.H.H.G.G.A.A.h.h.h.h.h.h.h.l.z.z.k.k.f.f.j.a.f.z.i.a.a.a.a.i.i.i.i.i.i.i.i.d.u.i.i.i.u.u.u.i.u.u.u.u.u.u.u.t.u.t.t.t.p.t.r.t.t.t.r.r.r.r.r.r.r.w.t.t.y.r.r.r.r.r.r.r.t.r.r.r.r.r.t.r.t.y.y.r.t.y.y.y.y.y.y.y.y.y.y.y.E y.w.E y.y.y.y.y.y.y.y.y.r.r.r.r.r.y.r.y.y.y.y.w.y.y.r.r.r.r.r.r.t.r.t.t.t.t.t.t.t.u.u.u.u.u.u.u.u.i.u.i.u.i.u.i.i.i.i.i.i.i.i.a.a.a.i.z.f.f.k.z.g.g.h.g.g.h.g.A.A.h.A.h.j.A.A.A.A.A.A.h.A.A.A.A.G.A.A.Z.S.A.A.A.H.H.H.S.H.H.L.G.S.L.S.L.U.S.L.L.L.P.L.L.L.L.L.P.L.P.L.L.L.L.Y.U.L.U.U.U.T.T.T.T.T.~.~.[./.^.(.(.(.`.`.|._.|.|.|..X X.X X.X.X|. X.X|.|. X|.|.|..X.X|..X.X.X.X.X.X.XzX.X.X.X.X.X.X X X.X.X X'.|.|. X|._.|.`.|._.|.{.|.^.|.`.`.|.^._._.(._._.(.}._._._.'.|.|. X|. X|. X|.|.|.|.|.|.|.|.|.|.|.}.}.}._._.|.(.(.(.(.(.^.^.(.`._.^.(.`.^.|.{./.(.|.|._._.|.|.|.|..X.X.X X.X.X.X.XzXzX.XzX'.xX'.@XdX.XxXxX.X.X'..X'.@XzXdXdXdX@XzX.XdXdXzXzXzXzXzXxXzXzXzXzXdX'..X.X.XdX'. X.X.X X'. X.X.X X.X|.|.'.|.|.|.|.|.|..X|.`.`.`.|.`.|..X|.|.|..X.X.X.X.X.X.X.X.X|..X X.X|. X|.|. X'.|.|._.|._.^.|.(.(.`.|.(.(.(._.^._.(.`.`.`.`.`.(.(.(.(.(.(.(.(.(.(././.(.^././.!.T.^.T.T.T.U.U.L.L.L.L.L.L.P.L.L.L.U.K.L.L.L.L.L.P.L.K.U.Y.U.U.U.Y.U.L.U.L.L.L.U.L.L.L.Y.U.U.T.T.T.T.T.~.~.~.~.^.^././././.(.~./.~.~.~.~.~.~.~.T.T.T.T.T.T.R.~.Y.T.~.T.L.~.Y.T.T.T.~.~.T.~.~.T.~././.~./././.~.[./././.~.~./././././././.(././.[.{.(.(._.(._.^.`._.|._.|.|..X.X'..X'.dX X.X.X.X.X.X.X@X'.dX.X.X.XxXzX.XzX.X.X.X.X X.X|.|.|._.|._._._._._._.|.{.|.(.|._.(.(.(.(.(.{.(._.(.(.(._._._._._._._.|._.}._._.@X|..X.X.X@X.X.X.XxXzX.XzXdXzXdXxXdXzXzXdXzX.XzX.X.X.XdX.X.X.XdX.X.X.X@X.X.X.X.X.X X'..X|.|.|. X X|.|.`.|.|._.|.}.}.[.`.`._._._.(.(.^.(.~./.^././././././././.^.~.~.~.~.~.!.~.~.~.~.!.T.~.T.~.T.~.T.~.T.~.~.T.Y.(.!./.~./.~.~.~.~.~.[.T.[.T.T.T.T.Y.Y.P.Y.P.P.L.L.L.L.L.L.L.L.S.K.H.K.H.H.H.S.U.D.S.H.U.S.L.L.P.L.L.P.P.P.P.U.", "m M M m m N m m M M N N N N A N V B B V B B B B B B Z B B C B C B Z N Z C C Z C A C N C C A A m B C A C C C C A C C C C C Z C Z Z C A Z Z A Z C Z C Z Z Z Z D Z Z D Z D D D D Z Z H H H H L H H J J H P P P P J P P P I P P J ) P P ) J P P ) P ) I I I I I I I I I I ) P ) ) P ) ) J ) ) P ) ) I ) ) ) ) P J ) _ P ) ) ) ) I I ) I n.}.(.(.(.(.(.(.(.(.(./.(././.(.^./.^./.(./.(./.(./.(.(.(.(.(.`.^.(.(.(.(.(.(.(.(.(.(.(.(.^.^.|.}.}._.|.`._.|.'.|..X'..X X.XdX X.XzXdX.X.X X.X X.X.X.X.X.X X.X|.|.|._.|._.|.`._.`.(.(.(.(.^.(.[.(.(.(././.(.^.(.].(.(.(.(.~.(.(.(.(.^.(.!.(.(.(.!.!././.~.T.T.T.T.T.T.T.T.L.Y.P.T.U.Y.P.P.P.P.L.L.L.Y.S.S.H.G.G.H.A.A.A.A.A.A.h.h.h.h.h.h.z.h.g.h.f.g.f.j.a.a.g.k.a.a.s.i.i.i.i.i.i.u.i.i.i.i.i.p.u.u.u.u.u.u.u.u.u.u.u.t.u.t.r.t.t.t.t.t.r.r.r.r.r.r.r.r.r.t.r.y.r.r.r.r.r.r.r.r.r.r.r.r.r.y.y.r.y.y.r.y.r.E w.y.y.y.y.E y.y.y.y.E E E y.y.y.w.y.y.y.y.y.r.r.r.r.r.y.r.y.w.y.w.y.y.r.r.y.r.r.r.t.t.r.r.w.t.t.t.t.t.u.u.t.u.u.u.u.u.u.u.i.i.i.u.i.u.i.u.i.i.i.i.i.a.a.i.f.i.k.a.f.k.g.g.g.g.g.h.h.H.G.h.A.A.A.A.A.h.A.A.A.A.A.A.A.A.A.G.h.W.S.H.G.K.H.G.G.G.H.H.H.L.L.S.L.U.P.U.L.L.A.P.L.L.L.L.L.P.L.P.L.P.U.L.L.U.U.U.T.T.T.T.T.~.~.~.~.[././.(.(.^.`.(.`.|.|.|. X|.|..X.X.X X.X|.|. X|.|..X|.'.|..X.X.X.X@X.X.XxXxXdX XdX.X X.X.X.X.X.X X|.|..X X'.|.|.|._.|.|.|.|.|._._.(._./.|._._._._.^._._._._.|.`.`.|.|.|.|.|.|.|.|._.|.|.|.|.|.|.|. X}.}._._._.{.}.|.(._.(.`._._._.|.^._._.|.|.`.`.{.|.{.{._._.|.|..X.X.X.X.XzXdX.X.XzXzX.X.XzX'..X'.xX.X.X.X.XzX.XzX'.xX'.dX.X'.dXdXdXzXzXzXxXxXzXxXxXcXcXzXzXdXzXzXzX.X@X.X.X.X|. X.X|..X.X|..X X|.|. X.X|.|.|.|.|.@X|.|.|.|.|..X|.|.'..X.X.X.X.X.X.X.X.X.X|..X|.|.|.|.'..X|.|.|.|.|.|.{.|.`.`.^.(.(.(.(.|.^.|.^._._.(.(.^.(.(.(.(._._._.(.(.).(.(./././././.^.~.T.T.T.T.T.U.L.L.P.L.U.L.L.L.L.L.K.L.L.L.L.L.P.P.Y.L.U.L.L.L.Y.L.U.L.Y.K.L.U.L.L.U.L.U.U.U.U.U.T.T.T.T.~.~.~.~.{./.^././.~./.~.[.~.~.~./.T.T.~.T.~.T.T.T.~.L.~.~.T.T.~.~.T.~.~.~.~.T.~.T.R.T.[.~./.~.T.^././.!././.~.[././././././././././.(./.(.(._._._.`._.`.`. X|.`..X|..X.X.X@X X.X.XdX.X.X.X.XdX'.dXdX.XdXdX.XzX.X.X.X.X.X X|..X|.|.|.|._.|.(.`._.(.(._._.`.|.^.^.(.(.(.(.{.(.(.(._.(.(._._._._._._.|._.|.`._. X.X.X.X.XdX.X.XzX.X.XxXzXzXzXzXzXzXzXzX.XxX.X.XzX.XzX.X.XdXdXdX.X.X.X.X.X.X.X.X.X'..X.X.X.X|.|.|.|.|.|.|.|._.}.}.|.|.(._._._._._.(.(.(.~.(./.(././././.~.(.~.^.~.~.~./.!.~.~.~.~.Y.T.T.T.T.T.T.~.T.~.T.~.T.T.T.T.!.T.~.~.~.~.T.~.T.T.^.P.T.T.T.T.Y.U.P.P.U.P.Y.L.L.S.L.S.S.U.P.L.S.G.H.S.S.H.D.A.H.H.S.L.L.L.L.P.L.L.L.K.Y.U.", "m m m V N m B m M M N M N N M N B N B N V B B B B B B B B B C B B A B B C C A C C C C C C C C C C C C C A C C N C Z C C Z C Z C C Z Z C C D A Z B Z Z Z B Z C D Z Z Z Z D D Z L Z H Z H H D J J J H P P J J I J P P I I P ) P P ) P U / ) P P J P ) I ) P ) I I ) P ) I ) ) P ) ) J ) ) ) ) S P ) I K ) ) ) I ) ) I ) I ) P I J ) I b.}.^.|._.(.`.(.(.(.(.(.(.^./.(././.^././.(./.(.(.(.(.^.`.(.`.(.(.(.(.(.(.(.(.(.(.(.(.(.(.`.|.(.^.}.|.|.|.`.|.|. X.X X.X.X.X@X.X.X.X.X.X.X.X X.X X X|..X|..X X X.X|.}.|._._.`.(.`.(.(.(.(.`.(.(.(.^./.(.^.(.(.(._.(.(.(.(./.(.(.(.(.(.^.`.(.(./././.~./.T.~.~.T.T.T.T.T.T.T.Y.U.U.T.P.P.P.P.U.Y.L.L.L.H.H.H.G.H.A.A.A.A.g.A.l.l.l.h.h.z.z.h.f.z.j.j.f.f.f.g.g.z.i.i.a.a.i.i.i.i.i.i.i.i.i.i.i.p.u.i.u.u.u.u.t.u.u.u.r.u.t.t.t.t.t.r.t.r.t.t.r.t.t.r.r.r.r.r.y.r.r.r.y.r.y.r.r.r.r.r.r.r.y.r.r.r.r.y.r.y.w.E y.y.w.y.y.y.y.y.y.E y.y.y.E y.y.E y.y.y.r.r.r.r.t.y.r.y.r.y.y.r.y.y.r.y.y.y.r.r.r.t.t.r.t.t.t.t.t.t.u.u.u.u.u.t.u.t.u.u.u.u.i.i.u.i.u.i.u.i.i.u.i.i.a.i.i.k.i.z.k.f.f.f.j.g.g.g.h.h.l.h.A.g.A.A.A.A.A.A.G.A.G.A.G.A.A.A.G.A.A.A.A.A.A.G.A.S.G.G.G.H.H.D.S.L.H.H.S.S.U.D.L.L.L.L.L.L.L.H.L.P.P.P.L.U.U.U.U.Y.T.T.T.T.~.T.~.~.~.~.^./.(.(.^.(.`.`.|._.|.|..X.X.X.X X.X.X.X.X.X|. X|..X.X.X.X.X X@X.X.X.X'..X@XdX'..XdX@X'..X.X.X'..X X|.'.|.|._.|.|.|._.|._._.|.^.|.(.|.(._._.(.(.`._.^.|._.|.`.`. X|. X|.|. X X{.|.|.|.|.'. X|.|.|.}.}.|.|._._._.[.`._._.(._._._.{._.{.|.`.^.^.|.`._.`.`.|.|.|.|.|..X|..X.X.X.XdX'.zX.X'.'.zX.XzXxX'..X.XxX'..X.X'.#X.XzX.XdXdXdXdXzXzXzXcXxXxXxXvXxXxXzXxXzXxX.XzX.X.X'.'..X X.X X'.dX@X.X.X.X|..X.X.X.X.X.X|.|..X'..X|.|..X|..X|..X.X|..X.X.X.X.X.X.X|..X.X.X|. X'..X X|. X|.|._._._.`.`.^.|.(.(.(.(.^.{.|.(._.(.(.`.(.(.^.(.(.(.(.(.(.(.(./././.(././././.~.~.~.T.T.T.P.L.L.L.L.P.L.L.U.L.L.L.J.K.L.Y.L.L.L.P.U.L.L.L.U.L.L.L.U.L.L.L.L.L.U.L.R.L.U.U.U.T.T.T.T.~.~.!.~.~.E.^./.^./././.^.~.~.~.~.~.T.~.T.T.T.Y.Y.T.T.U.~.U.~.~.T.T.~.T.T.~.T.~.T.~./.~.~.~./.~.~.~./.~.~././././././.[.[././.!.(./././.(.(.(.{.(.(.(.`.(.(._._.|.|. X.X.X.X.X|..X.X.X'.'. X'..X.X.XdXdXdX.XdXzX.X.X.X.X.X.X X.X.X|.|.|._.|._.|.|._._.|._._.|.[._.|.^.(.(.(.^.(.(.(.(.(.(._._._._._._._._.|.|.'.'..X X.X.X.X.XzX.XxX.XzXdXzXzXzXzXzXdXzXzXdXdXzXzX.XzXdXdX@X.XdX.XdX.XdXdXzXdX.X.X'..X|..X|.|.|.|. X|.|.|._.|.}.}._._.|._.`._._._._._.`.(./.^././.^././.~.~.~.~.~.T.~.~.~.~./.~.~.~.T.T.T.T.T.T.~.T.T.T.T.T.T.T.T.~.T.~.T.~.~.T.~.T.~.~.T.T.T.U.T.U.Y.P.P.Y.L.L.L.L.L.L.L.L.U.L.S.Y.H.D.H.H.H.S.D.S.H.S.S.L.Y.L.S.L.L.L.P.Y.P.", "m m m m m m m N m N m C N N B m N N N B B B B B N C N C B B B C N C A Z C C C B C C N C C C C C C C C Z C C C C C C C C C C C Z Z C Z B D Z Z C Z C Z Z D Z C Z Z D D D Z Z H H H H Z H H J Z J J H H J P I I P I P P ! P P P J I P P ) P P P ) ) P ) ) ) ) P ) ) I ) I I ) Y I ) J I ) ) P ) ) ) P ) I ) ) ) P ) I ) ) ) ) S I ) P [ }.{. X_._._._._.(.(.(.(.(.~.(.(.^.(./.(.(.(.(.(.(.(.(.`.^.(.^.(.(.(.(.(.(.(.(.(.(.(.(.(.(.^.`.[. X|.|.|.|.|.|..X X X.X.X.XdX.X'..X.X.XdX X.X|. X.X|..X X|. X|. X_.}.}.}.{./.{.(.^.^.(.(.^.(.(.(.(.(.).(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.!././././.~./.T.T.XXU.T.T.T.T.T.U.U.T.T.U.U.P.P.P.L.U.L.L.S.L.H.H.G.G.Z.H.A.A.A.A.A.h.l.l.h.h.h.k.k.g.j.z.f.g.f.a.k.i.f.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.u.u.u.u.u.p.t.t.t.u.t.t.t.t.t.t.r.t.r.r.r.t.r.t.y.r.r.r.r.r.y.r.y.t.y.r.r.r.y.y.r.r.y.y.t.r.y.r.y.y.y.r.y.y.w.y.y.E E y.E y.E E y.E E E w.y.y.y.y.y.y.r.r.r.r.y.r.r.r.t.y.y.y.y.t.y.r.r.r.r.t.t.t.t.t.t.t.i.u.t.t.t.u.u.u.t.u.u.u.u.u.u.u.z.E i.u.i.a.u.a.i.i.a.a.k.i.i.f.f.f.f.f.a.k.g.k.l.h.l.h.j.G.A.A.A.A.h.A.A.A.A.A.A.G.A.A.A.A.G.Z.A.G.A.G.Z.H.H.h.S.S.L.D.H.H.H.H.L.L.A.P.P.L.L.L.P.L.L.L.L.U.P.P.U.U.U.U.T.T.T.T.~.T.~.~.~.~.~.(.^.(.(.(.`.`._._.|.|.|.'.|..X.X.X@X X.X X|..X.X X X|..X.X.X.XdXdX'.zX.XzX.XdXdX'.dX'.'..X.XdX.X.X.X.X|.|. X|.|.|.|.|._.|._.}._._._._._._._.(._._.^.`._._.|.|.|.|.{.|.|.|.{. X|.|.|. X'..X.X X'.|.|.|._.|._.|.|.|.`.`.^.|.`.|._.|.`.`.|._._.|._.|.`._.|.|._.|.|..X@X'..X.X.XdX.XdX'.dXdXdX.XzX.XdX.X.XzXzXzXzXzXxXdXdXdXdX.XzXzXzXzXzXzXzXdXxXxXxXxXxXcXcXxXxXdXdXzXzXzX.X@X X.X.X.X.X'.'.@X X.X.X.X.X.X.X.X X X.X`.'. X X.X|..X|..X'..X.X.XdX.X.X'.dX X.X.X|..X X|.'.|..X X'.|.|.|._.{._.{.(.`.^.`.{.(.`.(.`.(.`._.(.(._.(.^.(.(.(.(.(.(./.(.(.(././.^./.~.~.~.~./.T.T.T.Y.L.L.L.P.D.L.P.L.P.L.U.U.L.L.U.U.U.L.L.L.L.L.L.L.L.L.L.L.L.L.K.L.Y.U.Y.K.U.L.Y.U.T.U.T.T.T.T.~.~.~.~.~.(.~./.[./.~./.!./.~.T.~.T.~.~.T.Y.T.~.Y.I.T.~.T.T.~.~.I.~.T.~.I./.T./.T.T.T.~.~./.~.~.~.~./.~./././././.^./.(././././.^./.(.(./.(.(.^.`.`.(._._.}.}.}.|.|.|..X X.X'..X.X.X|.|..X'.@X@XdXdX.X'.dX.XdX.X.X'..X.X.X X|.|.|.|._.|._.`.`.[.|._._._.^.`.`.|.(.(.(.(.(.(.(.`.(.^.|._._._._._.|.`.|.|.|. X.X.X.X.X.XdX.X.XzX.XxXdXzXzXzXzXzXzXdXcXdXdX.X'.zXdXdX.XdX.XdX.XdX.X XdX.X.X.X@X X.X'..X|..X|.|.|.|.|.|.|.|.|.|.|._.|._.|.|._.|._._._.(.(.(.(.{./.(././././.(./.~.~.~.~./.~.~.~.!.T.T.T.T.T.U.T.T.T.T.T.T.~.T.!.T.T.(.T.~.~.T.~.~.T.~.~.T.U.T.T.T.U.U.L.P.L.L.U.L.L.L.L.L.S.S.L.H.H.H.H.H.H.S.S.A.L.D.H.S.S.S.L.U.L.L.L.U.U.P.", "m N m m m N m N N N N N N B N B B N B N B N B B N B N N C B B B C V B B C C A C C C A C C C C A C C C C C A C Z C C C G C Z Z B Z Z C Z C A F B C D B C Z Z Z Z Z Z Z Z L Z Z Z H H J Z Z L H L H U P J L K J Y ) P P P U P ) ) P I P P P ) P ) ) ) P J ) I ) I I ) ) ) ) ) _ ) ) ( ) U ) ) ) J ) ) I ) I ) ) ) ) ) I ) P ) ) I ) I [ }.|.[._._._._._.(.(.^.(.(.(.(.{././.(.(.(.(.(.(.(.(.(.(.(.`.`.(.(.(.^.(././.(././.(.(.(.(.`.(.|._.|.|.|.|.|. X X.X.X.X@X'.'..X.XdX.X.X.X.X|..X.X|..X|.|..X|.'.'.`.}.}.}._.|.|.|.^.(.(.(.{._.(.(.(.(.(.(.(.(.(.(.(.(.(.(.^.(.(.(.(.`.(.(.(.(./././.~.T.~.T.T.T.T.T.U.T.U.T.Y.Y.T.U.P.P.U.P.L.S.L.U.L.S.H.H.G.H.H.h.A.A.A.A.l.l.h.l.h.h.h.z.k.z.a.a.f.a.j.f.i.k.a.f.i.i.a.a.i.i.i.i.i.i.i.i.i.i.i.u.u.u.u.E t.p.u.t.t.t.t.t.r.r.r.r.r.t.t.r.r.r.t.t.r.r.r.y.r.y.y.t.y.r.y.y.r.r.r.t.t.y.r.y.y.r.y.r.y.t.r.E y.y.y.y.w.y.y.y.E y.y.y.y.y.E y.y.y.r.r.r.r.r.r.r.r.t.r.r.y.r.y.y.y.y.y.t.y.y.w.r.r.r.r.t.t.t.t.E t.u.u.u.u.u.t.u.u.u.u.u.u.u.u.a.i.u.a.i.u.E x.i.i.i.a.i.i.k.i.i.f.f.k.f.k.g.z.h.h.h.g.A.g.A.A.A.A.W.A.A.A.S.G.G.Z.H.A.A.H.A.A.A.A.A.A.G.A.S.S.S.G.S.L.H.H.H.L.P.S.L.L.D.L.L.F.S.L.P.K.L.Y.P.P.U.U.Y.T.T.T.~.T.~.~.T.~.~.~.~.~.~.(.(.(.`.(._._._.|.|. X|..X|. X X X.X|..X|..X|..X.X.X.X.X.XdX.XzX.XzX'..XdXdXdXdXdXdX'..X.X.X.X|.|..X X X|.|.|.|.|.|._.{.}.}._.|._._._._.|.|._.`.|._._.|._.|._. X|. X X X|. X_.|.'.|..X|.|..X|.|._.|.|..X_._.|.`.|.|._.|._.|._.|._.|.{.|._.|._.|.|.|.|.'.|.|..X X.X.X.X.X@X.XdXdXdX.XdXdX.XdX.XcX.X.X.X.X'.'.zXzXdXdXdXzX.XzXdXzXzXzXxXcXxXnXvXxXnXcXcXxXxXxXxXzXzXzX.XdXdX.XdX.X'.dX'.dXdX.X.X'..X.X X.X.X.X|.'.|.|..X.X.X'..X.X.X.X.X.X.X.X.X@X'..X.X.X.X X|..X|. X|.|.|. X|.`.|.|.|./.|.(.|.|.^.{.(._.(.(.(.(.^.(.(.^.^.(.(.(.(.(.(.^.(.(.(.(./.~./.!.~.~.T.T.T.T.T.U.L.Y.U.P.L.L.L.P.L.P.L.L.U.Y.L.P.P.U.L.U.U.U.U.L.L.L.L.L.L.L.L.L.U.L.P.T.L.U.U.U.T.T.T.T.~.T.~.~././.(.~.(.(./.~./.~.(.!.T.~.T.T.T.T.T.Y.~.I.~.~.~.T.T.T.T.~.~.T.~.~.~.T.T.T.~.~.(.~.(.~.~.~.~.~././././.(./.(./.(./.(.^.{.^.(.(.(./.(.(.(.(.(.^.`._._.}.}.}.|.|.'.'.|.|..X|..X.X.X.X.X XdX.X.X.X.XdX@X.X@X.X.X.X.X.X.X.X|.|.|.|.|._.|._._.|._.(._._._.(.(.(.(.(.(.(.(.(.(.).(.^.{._._.`.`._.|.`.|.|.'..X'..X.XdXdXdXdXxX.X.XxXzXzXzXzXzXzXdXdXdXdXzXdXzX.XdXdXdXdXdX.XdX.X@XdX.X.XdXdXdX X'.'..X.X.X|. X|.|.|.|.|.|._.|.|.|.|.|._.|.|.`.|.|._._.[.(.(.^.(./././.^./././.~.!.(.~.~.~.~.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.T.T.~.T.T.~.T.T.T.T.T.U.U.Y.L.P.L.P.P.L.L.L.L.S.H.L.L.H.Y.H.S.H.H.H.H.L.D.D.S.H.H.U.S.L.S.L.L.L.Y.U.P.", "m N m B m N m N m N m N N m N N N N C N N B B B C N N C C N B C N C C C C N C C C C A C C C C C C C C C C C C C C Z Z C Z Z Z Z B Z Z Z Z Z C Z Z C D Z Z F Z Z Z Z Z Z H D H H H H L P J L J L L L J I P J J J P P I P ) I P P P P P ) P P ) P P ) ) ) ) ) I ) I ) ) I ) ) ) ) ) ) I ) ) ) P ) ) ) I ) ) ) ) ) ) ) P ) ) I I ) ) I [ Q.|._._._._._.`.(.{.(.(.(.(.(./.(.(.(.(.(.{.{.(.(.(.^.(.(.^.(.^.(.(././.(.(.(.(.(.(._.(.(.`._.`._.|.|.|.|.|..X X.X.X.X X.XdX.X@X.X.X.X.X.X.X.X|..X X.X X|.'.|.}.|.}._.}.}.|.{.`.(.`.^.^.|.(.`.(.(.(.(.(._.(.(.`.^.(.(.(.^.(.(.(.(.^.(.(.(.(././././.T.T.T.T.T.T.T.T.T.T.U.T.T.T.U.Y.Y.U.L.L.L.L.S.H.H.H.H.H.Z.H.G.A.A.h.A.A.A.l.h.h.z.h.h.h.k.a.g.f.f.a.a.k.i.a.a.i.i.i.a.i.i.i.i.i.i.i.i.i.d.u.u.u.u.u.u.t.t.t.t.t.r.r.r.r.r.t.t.r.t.r.t.r.r.y.t.r.r.y.r.y.r.y.y.E r.r.r.y.r.y.y.w.r.y.r.y.t.r.y.t.y.y.t.y.y.E y.y.y.E y.y.y.y.y.y.y.y.y.y.y.y.y.y.r.r.r.r.r.r.y.y.r.y.y.y.r.y.y.w.y.y.y.r.r.t.t.t.t.w.p.t.u.i.E t.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.a.a.a.i.i.u.a.i.k.i.z.z.k.k.k.f.f.f.k.h.h.h.S.h.A.A.A.A.A.A.A.A.S.Z.G.H.A.A.A.A.A.A.A.A.A.A.A.A.A.A.S.H.S.H.H.H.H.H.H.L.L.L.L.U.P.U.L.P.P.L.L.U.Y.U.P.T.U.T.T.T.~.~.~.~.T.~.~.!.~.(.(.(.(.^._._._._._.|._.|.'. X X|..X X.X|..X.X.X|..X.X.X.X.X.X X.XdX.XzXzXxX.XzXdXdXzXzX@XdX@XdX.X'..X.X.X X|.|..X X|.|.|._.|._.}._.|.(.`.`._.|._.{._._._._.|._.|._.|. X X{.|._.|.|.|. X.X X.X.X|..X|.|.|.|.|.|. X_._.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.`.`.|.|.|.'..X.X.XzX.XzX'.'.dX.X.X#XzX.XdXzXzXzXzXdX.X XzX.XzXdXzXzX@XdXzXzXzX@XzXzXxXxXvXxXcXnXcXnXnXcXxXcXcXxXzXzXzXzX.X.XdXdXdXdXdX X'..XdX.X@X.X.X'..X|..X|..X.X.X.X.X.X.X.XdX'.@XdX.X.XdX.X.X.X.X.X.X|..X|. X|. X|.|.'.|.|._._.^.|.(.`.{.^.|.(.`.(._.(.(.(.`.^.(.(.`.^.(.(.(.(.(.^.(.(.^.(./././.~.~.~.~.T.T.T.T.I.U.U.U.L.P.L.P.P.U.P.K.Y.L.Y.U.L.P.P.P.P.U.L.L.P.L.L.L.L.L.L.L.L.L.L.P.P.T.U.P.P.T.T.T.T.T.T.^.T.~.~././.[.(././.~.(.~.~.(.!.~.~.~.T.T.T.I.~.~.T.Y.T.~.U.~.~.~.T.I.~.T.~.T./.~.~.T.~.~.~././.~.{./.~.[././.(./.(./.(.(./.(.E./.(.(.(.(./.(.(.(.`.^.^.`._.}.}.|._.|.|.|.|.|. X|. X|.|.'..X X'..X.X.X'.dX.X.X.X.X.X.X|.|..X.X|.|.|.|.|.|.|._.|._._.|.`._.`._.(.(.(.(.(.(.(.(.(.(.(.{.`.(.|._.|._.|.|.|..X|..X.X.X.XdXdX.XdX.X.XzX.XdXzXzXzXzXzXzXcXvXcXzXzXzXzXdXdXzX'.dX.X.XdX.X.XzX.X.X.X.X.X.X.X|.|..X|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|. X|._._._.(._.(.(.(.(.(.(./././././.~././.~.~.~.~.~.T.T.T.T.T.T.U.T.T.U.T.T.T.T.T.T.T.T.Y.T.~.T.~.T.T.T.T.T.T.T.P.P.U.U.L.P.P.P.L.L.L.Z.L.L.L.H.H.L.H.H.H.H.H.H.H.H.H.H.H.H.H.H.L.L.L.L.P.Y.P.T.", "m m m N m m m m N N m B N N m N N N V N B N N C B V N C m C B B A N A N C A C C C C C C C A C C C C C C Z C Z C Z C C C Z C Z C D C A C Z C Z A Z Z C Z Z B Z Z D H Z Z D H L Z H H Z H J L J J J L J J P P P J P ) P P P P P P P P P P ) P P I ) J P ) ) P ) ) _ I ) ) _ ) ) ) ) ) ) ) P ) ) I ) P ) ) P I ) ) _ ) ) ) ) ) ) I ) P T n.{.[._.`._._.`.(.^.(.(.(.~.(.(.(.(.~.(.(.(.^.{.(.[.{.(.(.(.^.{.(.(.(./.(.(.!.(.).(.!.(.(.(.`._.|.|.|.|.|.|..X.X X'..X.X.X.X.XdX.X.X'..X.X.X.X.X.X.X|. X|.'.|. X}. X}.}. X_._._._.`.(.{._._.(._.(.(.`.(.(.`.(.(.`.(.(.(.(.(.(.].`.(.(.`.^.(.(././.!.~.T.~.T.T.T.T.T.T.U.T.Y.T.T.T.T.U.U.P.L.L.L.U.H.S.H.H.G.G.A.A.A.A.A.h.h.l.l.z.h.h.z.j.a.k.z.f.f.d.f.g.i.k.a.i.i.f.a.a.i.i.k.u.i.i.i.i.d.i.u.u.u.u.p.p.t.p.t.t.t.r.r.r.t.r.r.r.t.r.t.r.r.y.r.r.r.r.r.y.t.y.y.r.y.y.y.y.t.y.t.y.y.y.r.y.E r.y.r.w.y.E w.y.y.y.y.w.E y.y.E y.E E E y.y.E y.y.y.y.y.r.r.r.r.r.r.r.t.y.t.y.r.y.r.r.r.r.r.r.r.r.t.t.t.t.t.i.u.t.i.u.t.u.u.u.u.u.u.u.u.u.u.u.E u.u.a.a.a.u.a.i.i.a.a.i.i.i.z.i.i.i.k.f.k.k.f.k.h.h.j.A.h.h.A.A.A.A.A.Z.A.A.S.A.H.A.A.G.A.h.A.A.h.G.A.S.A.A.S.S.G.G.G.H.H.H.H.L.S.L.L.P.D.L.L.S.P.L.L.P.L.U.P.U.U.T.T.T.~.T.~.T.[.~.~.~.~.T.(.(.(.{._._._._.|.|.|._.|.|.|..X|. X X.X.X X|..X.X.X.X.X.XzXdX.X.XzX.X.X.XzX.X@X.X.X'.dX.XdX X.X X|. X.X|..X|.|.|.|.|.|.|._.|._._.^.|.(.`._.|.|.|.|.|.|._.{._.|.`. X|. X_.|.|.{. X|.'.|.|..X|..X|.'.|.|.|.|._.|. X|.|.|.|.|..X|.|.|.|.`.|.`.|.|.|.|.|..X'..X.X.X.X.X.X.X.XzX.XdXdX'.zX.X.XzX.X.X.XzX@XdXdX.XzX.XzXzXzXzXzXzXzXdXdXzXzXzXxXcXxXnXnXnXnXnXnXcXcXcXxXxXcXxXzXxXdXdXdXdXdXdXdX.XdXdXdXdX X.X.X.X.X X.X`.|.'..X.X.X.X.X.X.XdX.XzX.X.X.X.X.X'.'. X.X|.'.|..X'.|.`.|.|.|.|.|.).^.(.(.`.|./.{./.|.(.(._.(.^.^.[.|.[.(.(.`.(.(.(.(.^././.~./././.!.~.!.T.T.T.T.T.U.U.L.U.U.P.P.P.P.U.U.H.L.L.L.L.L.P.P.P.P.L.U.L.L.L.L.S.K.L.L.L.L.L.L.L.P.U.P.P.T.T.T.T.T.T.T.~./.~./././.(.(.(.~./.~.~.(./.T.~.T.T.T.T.T.T.T.Y.I.I.T.~.~.~.I.T.~.~.T.~.T.T.[.T.T.~.~./.~.~.~./.~./././././././.(.(./.(.(.(.(.(.(.(.(.(.(.(.(.(.(.`.(.(.(.^.}._.|.|.'.|. X'.|..X X|.'.|. X X'..X.X.XdX.XzX.X.X.X.X.X.X.X.X X|.|.|.|.|.|.|.|._._._.^._._.^.`.|.^.`.(.(./.(.(.(.(.(.^.|.`._.|._.|.|.|.|.'..X.X.X.X.XdX.XdX.X.XxX'.dXzXzXzXzXdXzXzXzXzXdXzXzXzXzXdX@XzXzXdX.X XdXdXdX@X.XdXdX.X.X.X.X.X.X X|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|..X'._.|.|._._.(.(.^.(.[.(./.^./././././././.~.~.~.~.T.T.T.T.T.T.Y.U.U.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.T.P.^.T.T.Y.P.P.P.L.L.P.L.L.L.L.L.H.L.L.L.L.L.H.L.H.H.H.H.G.H.H.H.H.H.H.D.L.S.P.L.L.P.P.P.", "B m m N m m m m m N m m N m m N N V M C B N N B B N B B B B B B V N C C N C V A C C C C C A C C A Z C C C C C C Z C Z C C Z Z Z B u Z Z Z C C Z B D C Z Z Z C Z Z Z Z D D D H Z H H H H P H H J J I J J P P P P I Y H J P P I P S I I L I I I I ) P ) I ) P ) ) ) ) ) I ) ) ) ) ) ) ) I ) ) ) I P ) ) ) ) ) ) ) ) ) Y ) I ) ) ) I ) ) n.(._.}.}._.|._.|.(.^.(.(.(.(./.^.(./.!.).{.(._.`.(.(._.[.(.(.(.(.(./.(.(./.(./.(.(.(._._.^.}.}.}.|.|.|.|..X.X.X.X.X.X.X'.dX.X.X.X.X X.X.X.X.X|..X.X.X.X|. X X_._.|._._.}.}.|.}._.^.`._.^._.(._.(.^.{.^.(.{.`.(.(.(.(.(.(.(.(._.(.(.{.(.(.(.(.^././.~.T.T.T.T.T.T.T.T.T.T.T.T.T.P.Y.P.P.P.L.L.L.H.H.S.L.H.H.S.S.S.G.z.A.A.A.A.h.A.h.h.h.g.z.g.g.g.i.g.a.a.a.a.a.a.a.a.a.a.a.a.a.i.i.i.f.i.i.u.i.u.u.u.t.u.t.u.t.t.r.r.r.r.r.r.t.r.t.t.t.r.r.r.r.r.r.t.r.E y.r.y.y.r.y.r.y.y.y.r.y.t.y.t.y.w.y.r.r.r.y.r.t.y.y.E y.y.y.y.y.E y.y.E y.y.y.E w.y.y.y.y.y.r.r.r.t.r.r.r.r.t.r.r.r.t.t.r.r.y.r.r.r.r.t.t.p.t.u.t.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.a.a.u.a.a.a.u.a.i.i.i.a.a.a.a.i.d.i.i.k.f.g.f.g.k.h.h.h.h.A.A.h.A.h.G.A.A.G.S.S.D.A.A.F.S.A.h.Z.G.A.G.A.A.J.A.G.S.S.S.G.S.G.H.H.L.U.L.L.S.L.L.L.L.L.U.L.U.Y.T.U.Y.~.T.T.T.~.~.T./.(./.(./.(././.(.(.(.(.`.(.|..X|.|.|.|.|.|.|.'..X.X X.X.X.X'..X.X.X@XdX.X.XdX.XdXdXdXdXzXzXdXzXdXdXdXdXdX@X.X'..X.X.X`.'. X'. X X X|.|._.|.}.}.|._.|._._.|._.|.'.|.|._.|._.|.'.{. X|.|.'.|.'.|.|.@X X X'. X.X.X.X.X|.|.|..X X'..X.X.X.X.X.X'. X'.'. X|..X|..X|.'..X'.'..X.X XdXdXdX.X.X.XdXdXdX.XzX.X.X.X.XdXdXzXzX.XdXdX.X.XdXzXzXzXzXzXzXzXzXxXxXxXxXcXnXvXmXmXcXmXnXdXJXcXcXcXxXzXxXxXzXdXzXcX@XdX XdXdXdXdXdX'..X'.|..X.X.X.X.X'..XdX.XdXdX'.dXdXzX'.zXzX.XdX.X.X.X'. X.X X|.|.|.|.|.|..X|._._.`.^.(.`.^.`.{.{.(.`.(.(.(.(.(.`.`.{.(.|.(.(.(.(.(.(././.[.^.~.~.^.T./.~.T.I.Y.T.U.U.U.L.L.L.L.L.U.L.L.L.L.L.L.U.U.U.U.U.T.P.P.L.L.L.S.H.L.L.L.L.H.L.L.L.P.P.Y.U.T.T.Y.T.T.T.T.~.~.T.(.~./.{.~.~.(./.^./././.~.~.~.T.~.T.~.T.I.T.~.~.T.T.~.T.T.~.T.~.~.I.~.T.T.~.~.~.~.(./.~././././.^.~.E.(.(.(.(./.(.(.(./.(.!.(.(.(.(.(.(.(.^.^.`.`.(.`.`.{.|.|._.|.|.|.'. X X'.|. X_.|.'..X.X.X.X.X.XdX X.XdX.X.X'. X.X X.X.X.X X|. X'.|._.|.|._._._._.^.(._.(.(.(.^.(.(.(.(.(.(.`.`.|.|.|.|. X'..X.X.XdX.X.X.X.X.X X.X XdX.XdXdX.XzXzXzXdX.XzXzXdXdXxXdXzXzXdXdXdX'.dXdX@XdXzXzX'.zX'..X.XdX.X.X.X|..X X.X|..X`.`.'. X.X|..X.X.X.X.X.X.X|.|.|.|._.(._._.`.(.`._.^.(.!.(.^././.(./.~.~.~.~.T.~.T.T.T.T.U.T.U.U.P.T.T.T.T.T.T.T.T.T.Y.T.T.T.T.T.[.T.T.T.T.T.U.P.P.P.L.P.Y.L.L.L.L.L.L.L.L.L.H.H.L.H.H.H.H.H.H.S.H.H.G.H.H.H.L.L.L.L.U.P.P.", "N m m m m m m N m m m m m N m m N M N N N B N N N C B B N N B B C V N C C N C C C C C C C C C C C C C C C C C F C C Z C C Z Z C Z Z C Z Z C Z Z Z Z C D Z Z Z Z Z Z D D D G H H H H P H H H J J H H J P H P P P J I J I P P I P I I P _ I I ) I ) ) P ) ) ) ) ) ) ) _ I Y ) ) ) P ) ) ) ) Y ) I ) S ) ) ) ) ) ) ) ) ) ) ) Y ) ) ) ) ) b.]._._._._._._._._.{.(.(.^.^.(.).(./.(.(.(.^.^.[.(.(.(.(.(.(.(.(.(.(././.(./.(.(.!.(.(.(._.}.}.}.|.|.|.|..X|.'. X.XdX'.dX.XdXdX.X.X.X.X.X X.X.X.X.X.X|.|.|.|. X|.|.|.|.|.}.}.}._._._._._.(._.(.(.|.(.(.|.|.^.`.{.(.(._.(._.(.(.(.(.(.{.(.(.(.^.^.(./.~./.~.T.~.T.~.T.U.XXT.T.T.T.P.Y.P.P.U.H.K.H.H.H.G.G.G.S.S.S.S.S.S.h.A.A.A.l.h.h.h.g.z.d.a.a.a.g.g.a.a.a.a.a.a.a.a.d.a.a.a.i.i.d.i.i.i.i.i.u.u.t.t.t.t.t.t.r.r.r.t.r.r.r.y.r.r.E r.y.y.y.y.r.y.y.y.r.r.y.y.r.r.y.E r.r.y.y.E y.y.y.y.y.t.y.y.y.y.R y.y.y.y.y.y.y.y.y.y.y.y.y.E y.y.y.y.y.y.y.y.y.y.r.r.r.r.y.r.y.E r.r.r.r.t.r.r.r.t.r.r.t.t.t.r.u.t.u.E u.u.u.u.u.u.u.u.u.u.i.u.u.i.E a.u.u.u.a.a.a.i.i.a.d.a.d.i.f.k.d.z.d.d.g.j.g.h.h.h.h.h.A.A.A.A.A.A.H.A.S.A.S.A.S.A.A.A.S.S.S.A.A.A.A.A.h.A.A.S.S.S.S.H.H.l.H.S.S.L.U.U.L.L.L.P.P.P.P.U.U.U.T.T.T.T.~.T.~.~.~.~.T./.R.~./././.^.{.^.^.`.^._._.|.[._.|.`.|.|._.|.|.|.|..X|..X.X.X.X.X'..X.X@X XdXdX@X.X'.'.'.zX.X@X.X.X.X.X.X|.|.|.|.|.|.|.`.|.|.|.{.|.{.|.}.}.`.|._.|.|.|._.|.|._._.}._.|.|._.|.{.|.[.|.{.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|. X|..X@X|..X.X|.@X_.|.|.|.|.|.|.|.|. X.X X X.X X@X.X.X.X.XdX.X'..X.XzX.XcX.XxX.XdXzXzXzXzXdXvXdXnXzXzXzXzXzXzXxXzXxXxXxXxXmXvXMXnXmXmXmXcXmXmXcXnXcXcXxXxXxXzXxXzXdXdXdXdXzXdXdXdXdX@X.X X.X.X X X.X`..X'.@X X.X.XdX@XdX'.dX@X'..X.X.X.X X X|.|.|.|.|.|.|.`.`._.{.|.(.(.{.{.(.^.(.|.(.(.(.(.{.).(./.[./.(.(.(.(.(.(./.(././.(.E.(.~./.~.~.~.T.T.~.T.T.T.Y.L.R.P.L.L.L.U.U.L.L.P.L.U.T.U.L.Y.P.P.P.P.U.P.P.U.L.L.L.L.L.U.L.L.L.U.T.U.Y.U.T.T.T.T.T.T.T.~.~.~.~.~.~.[.(././.~.(./.T.T.T.T.~.T.T.T.T.~.T.T.I.T.T.~.~.~.T.~.T.~.].~.~.~.~.~.T.T./.~././.^./.[./.^.^././././.(.].(.(.(.(.(./.(.(.(.(.(.(.`.^.(.(.^.^.^.(.(.(._.`.`._.|.|.|.|.|.|.|.|.|. X X.X.X.X X X@X.X.X.X'. X@X'..X|.|.|.|.|.|.|.|.|._._.}.|._.|._.(.{._.^.|.^.(.(.(.(.(.(.(.(.{._.`.`.|.|.|.|..X.X|..X X@X.XdX@XxX X.XdX.X.XxX.X.XxXdX@XzXdX@XdXdXzX@XdX@X'.dX@X'..X'.'.'.'.@X@XdX.X@X.X.X.X.X X'.|.|.`.`. X'.|.|.|.|.|.|.|.'.|.|.|.|.|.|.|.|.|.{.(.(.(.{.[.^.^./.^.~./.~./././.~.~.~.T.T.T.P.P.T.U.U.T.P.U.T.T.T.U.T.T.T.Y.T.T.T.T.T.T.T.T.T.T.U.U.T.P.P.P.P.P.P.L.L.P.L.L.L.U.H.L.H.H.H.H.H.H.D.H.H.L.H.H.L.H.L.L.S.L.L.U.L.P.P.", "m N N m m m m m m m m m m N N m M N V N B V N B N B B B B M N B N C V C C C C C C A Z C C Z C Z C Z Z C C F C D C C C Z C Z C Z F D Z C C Z C Z C Z Z B C F C Z Z Z Z D Z D H D H U H J P H H J H H J P J J P P P P J I Y J P I P P ( L P I ) P P ) P I ) ) ) ) ) ) ) I _ ) ) ) ) ) ) ) ) ) ) ) I ) ) ) I ) ) ) ) ) I ) ) ) ) ) ) P ) [ _._.}._.|._._.|.`.`.(.^.^.(.(.(.(.(./.(.(.(.(.(.(.[.(.(.(.(.(.(.(./.(./.!././.(.(.(.(.(._._.}.}._.|.|..X|..X.X@XdX@X.X.X%XdXdX.X.XdX.X.X.X X|..X|..X.X|.|.|.|.|.|.|.|.|. X}.}._.(.|.^.}.^.`.`.(.^._.(.(._.`.(.|._.|.^._._.(.^.(.(.(.^.(.(.(.(.[.~./.~.T.T.T.~.T.T.T.T.T.T.T.T.P.Y.P.P.P.L.L.J.S.H.H.H.H.G.S.S.S.S.A.S.A.A.A.l.l.h.h.h.k.g.g.j.j.a.f.a.a.a.a.s.a.s.a.a.s.a.a.i.i.i.a.i.s.i.i.u.u.u.u.u.t.u.t.t.t.r.t.r.r.y.y.r.y.y.y.y.r.t.t.y.r.r.t.r.r.r.r.r.y.y.y.y.w.r.r.r.r.t.R r.r.y.w.y.r.y.y.r.y.y.y.y.E y.y.E y.E y.y.y.y.y.y.E y.w.y.y.y.t.r.r.E t.t.r.t.r.r.r.r.r.E p.r.t.t.t.t.t.t.t.p.p.t.p.t.r.t.u.u.u.u.u.t.s.s.t.r.r.u.t.a.u.u.E u.u.u.u.i.i.i.i.a.i.f.i.i.i.i.z.f.f.z.g.h.h.h.h.h.A.h.A.A.A.A.H.S.A.S.S.D.S.A.S.S.S.S.S.G.A.A.A.A.A.A.G.S.S.S.S.A.H.H.H.H.H.S.S.L.S.D.U.P.P.U.U.I.I.T.T.T.T.T.~.T.~.~.^.~.R.T.(./.(.(.(.(.`.^.`.^.`.{.`.}.}._.|.|.|.|. X X'. X X.X.X.XdXzX.X.XdXdXdXdX.XdX'.'.dXdXdXdXdX.XdX.X.X X X X X.X.X|. X|. X|. X X_. X|.|.|._.|._._.|._.|.'.|.|.|.|.|.|.|.|. X|. X|.|.}.|._.|.|.|.|.|.'. X.X X'..X X.X X.X.X.X.X X.X'..X.X.X.X.X.X X.X X X.X.X.X.X.X@XdX'.zXdXdXdXzX.XdXdXdXdXdXzX.XzX.XzXxX.X@XzXdXzXzXnXdXdXdXzXzXxXxXzXxXxXxXxXnXJXxXcXmXmXmXmXmXmXmXnXcXcXcXxXcXxXxXcXdXzXdXdXdXdXdXdXdXdXdXdXdXdXdX'.dX.X.X'.dX X.XdXxXdXdXzXzXdXdXdXdXdX.XdX@XdX.X.X X.X|. X X|.|.|.|.|.|._._.|._.`.(.`.(./.(.(.(.(./.(./.^.(._.].).(./.(./.(.(././.(./.~.(.(.T.!./.T.^.T.T.T.U.U.Y.K.J.U.L.L.P.U.P.D.L.P.L.U.I.I.P.P.P.T.U.U.L.U.L.L.L.U.L.L.U.L.U.L.U.U.U.T.T.T.T.T.T.T.T.~.~.~.~./././.^.[.[./.^.~.~./.~.~.~.~.~.~.~.~.T.~.~.T.T.T.T.T.~.~.~.~.~.T.~.~.T.~./.!.(.~././././.^./.[././.(.(./.(.(.(.(.(./.(.(.(./.(.(.(.`.(.(.(.(.(.`.(.|.|._._.|.|. X|.|._. X|. X X X'. X.X|..X X.X.X.X.X.X.X.X X|. X X.X.X.X.X.X.X.X.X.X'. X}.}.(._.`.`.|.^.{.{.(.^.(.`.(._._._.`.`.`. X|.|.|. X.X X X.XdXdX'.dX.XdXdXdX.XdXdX.X.XzX.XdXdXdXdXzXnXdXcXxXdXdXdXxXdXdXdX'.dXdXdXdXdXdX.XdXdXdXdX.X.XdX X.X|..X.X.X X.X X.X.X.X.X.X.X X.X.X.X X X'.|. X_._.`._._._.(._.(.^.(.).(././././.~.T.T.~.P.T.P.T.U.U.Y.T.P.T.U.U.T.T.T.T.Y.T.T.T.T.T.T.T.~.T.T.T.U.P.P.P.P.P.P.P.P.L.L.L.P.L.L.L.L.H.L.H.L.H.H.H.H.H.H.H.G.L.S.L.L.L.L.L.P.L.L.L.L.", "m m m m m m m @.N m m m m N N N N N V V N N B N B B B B N N C V C N C V N C C A C C C C C B C C C C C C C C B C Z D C C C C Z Z D B Z Z C Z Z Z Z C C Z Z B Z Z Z D D D D D H H Z H H H P H J J J U K H J J U P P J I J P P J P P P P P I I P I ! I ) ) P ) P ) I ) ) ) ) ) I ) ) I I I ) ) K _ ) ) ) I ) ) ) U ) I ) ) ) I ) P _ ) ) ' ]._._._._._._.{.^.(.(._.{._.].!.].(.(.!.[.(.{.(.(._.(.(.!.(.(./.(././.(.(./.(.(.(.(._.(._._._.|.|.|.|.|..X.X|.'. X.X.XzX.X.X.X.X.X.X.X.X.X X.X X.X|..X|.|.|.|.|.'.|.|.|.}.}.}._._.^.|.{._.^._.|.|._.|.|.^.{.`.`._.|._.[.^._._._.{._.`.(.(.(.(.E.~././.~.^.T.T.T.T.T.T.T.T.T.T.T.Y.P.Y.P.L.L.U.D.H.H.H.H.S.S.S.S.S.G.A.A.A.l.A.l.l.h.g.g.k.k.g.i.g.f.k.a.a.k.a.z.f.f.i.g.a.a.f.i.d.d.f.i.i.u.i.u.u.u.t.u.r.t.r.r.r.t.y.r.y.r.t.E y.t.r.r.y.t.r.r.r.E r.r.r.y.y.r.r.r.t.E y.y.y.y.r.r.y.r.E r.r.r.t.y.y.E E E y.y.y.E E E y.E E y.E y.y.y.E y.y.y.t.y.y.r.y.r.r.r.r.r.r.t.E t.t.t.t.t.t.r.u.t.t.u.p.t.p.u.u.u.u.u.u.u.u.u.u.u.a.u.u.s.u.u.a.a.a.x.a.a.a.a.a.a.f.f.z.i.f.f.g.k.f.f.k.g.k.z.h.h.h.h.h.A.A.A.G.h.A.A.A.S.S.S.A.S.S.S.A.A.S.A.A.A.A.A.A.A.h.A.S.S.S.S.H.H.H.H.H.S.H.S.L.U.L.L.P.P.P.Y.!.Y.T.~.!.Y.!.~.!.~.~.~.~./././././././.!.(.`.^.^.`.^._.}.}.|.|._._.|.|.|.|.|.|..X.X.X.X.XdX.X.XdX XdX X.XdX XdX.X.X X@X'. X.X'..X.X'._.|.|.|.|.|.|.|.|.|.|._._.{._.|.|._.|._.|.|.|.|.|.|.|.|.|._.|._.|.|.|.|.|.|._.|.|.|. X|.|.|.|.|..X|..X'..X|..X.X'.'..X.X`..X'..X.X.X.X.X.X.X'..X.X.X.X.X.X.X.X.X.X.X.X.X@X.XdX@XcXzXdX.XzX.X.XxXzXzXdXzX.XzXzXcXdXzXxXzXzXxXxXxXxXnXcXnXcXmXmXmXmXmXmXmXmXMXnXnXnXnXcXcXcXcXxXxXxXzXdXvXdXcX@XdXdXdX'.dX@X.X.X'..X@X.X.X.XdX'.dXdX'..XdXdX'.zXdX.X.X.X X.X.X.X X|.|._._.|._._.|.|.|.|._.{.(.|.{.(.|.(.(.(.(./.(././././.(.(./././.(./././././.~.!.T.~.~.~.T./.T.T.T.T.T.U.I.I.U.L.L.L.D.G.P.P.P.L.L.U.U.L.P.P.P.D.L.L.L.S.L.L.H.L.L.L.L.L.L.U.U.T.T.Y.Y.!.!.Y.~.~.T.~.~.~./././.~./.T././.~.~.~.~.~.~.T.~.T.~.T.~.~.T.T.~.T.~.~.T.I.~.Y.T.T.~.~.~.~.~.~.~.~.!.~./././.^.^.E.^././.(.(./.(.(.(.(.(.(._.).!.(.!.(.(.(.(.).^.(.(.`.^._._.|._._._.|.|.|.|.|.|.|.|.|.|..X|. X.X X.X.X.X.X.X.X X.X.X|.|.|.|..X|..X|.|.|.|.|.|._.|.|.(.^._.{.(.|.(.|.(.^.(.(.(.^.`.(.|.`.|.|.|.|..X.X'. X.X.X.X.X.X.X.X.X.X.XdX.X.X.X.XdXdX'..XdXfXdXdXxXxXdXdXdXzXdXdXdX'.dX'.dXdXdXzX'.dX'..X.X.X.X|. X.X.X.X.X.X.X.X X.X.X|..X.X.X.XdX.X.X.X X X|._.|.`.(._.[.(.(._.|.`.(.(./././.!./.~.!.T.T.T.T.U.T.U.Y.Y.T.U.U.T.T.Y.Y.T.U.P.U.T.T.T.T.T.T.T.T.U.T.T.P.T.U.P.Y.P.P.L.P.P.L.P.U.G.L.L.L.H.H.H.H.H.H.H.H.G.L.S.H.L.H.U.D.L.L.U.L.L.U.", "N m m m m N m m m m m m m m m m N m N N N V N V N B N B C B B B C B C C B C C C C C C C C C C C C C C C C Z C C C C Z B Z C Z Z B Z B Z D C Z D Z C C B C Z Z Z H Z D Z H Z H Z H H H P P H J J H P J L P P P P P P J I J P I P ) I I I I L _ ) P ) ) P ) I ) ) I ) ) ) ) I ) ) ) ) P ) ) I ) I ) ) P ) ) ) ) ) ) P ) ) ) I ) ) ) ) ) _ ].~._._.|.^.(.(.(.^.(.`.(.(.(.(.!.(.^.~.(._.(.(.^.(.(.{._.(.(.(./.(./././.(.(.(.(.(.(._._.|._.|._.|.|.|.'.'.'.dX.X.XdX'..X.X.X.X.X.X.X.X.X X X X|. X.X|.'.|.|. X|..X'..X}.}. X}.}.}.|._.(.|.`._._.^.`.).(.|.|.|.{._.}.}.|.(.|.`.^.^.^.(.(.(.(./.{.~./.T.T.~.T.~.T.T.T.T.T.T.T.T.T.P.P.P.U.L.H.L.H.H.H.H.S.G.S.S.H.S.S.S.A.A.A.A.h.h.k.h.k.k.k.k.a.k.f.f.g.a.a.s.a.a.a.a.a.a.a.a.i.i.a.a.u.u.d.u.u.u.t.t.r.r.r.r.E y.r.r.r.r.y.y.r.y.t.y.y.y.r.y.y.y.y.y.y.y.r.y.y.y.y.y.y.y.y.y.y.y.t.r.r.r.r.y.t.y.y.y.y.y.y.y.E y.y.E y.E w.y.y.y.y.y.E y.y.y.y.r.y.y.y.r.r.r.r.t.t.t.t.t.r.r.r.r.r.t.t.t.t.t.t.t.t.t.t.u.u.u.u.u.u.u.s.i.u.u.u.u.i.u.u.u.u.i.u.u.a.a.i.a.a.i.f.s.a.a.f.i.a.k.f.k.f.h.h.l.l.l.l.l.A.A.A.A.S.S.S.S.S.S.S.S.S.S.S.A.A.A.G.A.A.A.A.A.A.G.z.S.S.S.S.S.S.S.H.L.S.L.D.H.P.S.L.L.U.U.U.P.Y.T.T.T.T.~.T.T.T.~././././.(.[.{.{.(.(.(.^.`.(.(._.|.|._.|.|.'. X X|..X.X.X.X.X.X'..XdX.X.XdXdXdXdX.X.X@XdXdX X'..X'..X.X.X.X.X|.'.|..X.X.X X|.|.|..X'._.|.'.|.|.|.|. X_. X|. X X|. X|.|. X X_.'.|.|. X_. X X|.|.|.|.|. X X|..X.X.X.X'..X.XdX X.X.XdX.X'..X.XdX.X.X.X.X.X.X'..X.X.XdXdX X.X'.dX.XdX.X.XfXdXdX.XdXdXzX XzX.XzXdXdXdXzXzXzXzXvXzXcXvXzXzXdXcXcXxXxXcXnXnXmXmXmXmXmXmXmXmXmXmXcXmXcXcXcXcXJXcXxXxXxXxXdXdXcXnXxXcXcXdXdXvX.X.X.X@XdXdX.XdX'.dXdXdXdXdXdXdXdXdXdXdXdXdXdXdXdX.X.X'..X.X|.|.'.|.|._.|.|._.`.`.^.(.(.`.^.(.(.(.{././.{./.(././.{./.!.(.E.~.[.[.[.~.[.(.~.~.(.~.~./.~.~.T.T.T.T.T.U.U.P.L.U.U.L.L.L.P.L.U.L.U.L.L.K.L.L.U.L.L.L.L.L.P.P.H.L.L.L.Y.I.L.I.T.T.T.I.Y.Y.T.T.~.T.T.T.T.T.~.^.T.~.~.[.T.T.T.T.~.~.T.~.~.T.~./.T.T.T.~.Y.I.T.~.T.R.~.R.~.~.~.~.~./.~.~.~.~.[././././.(././.^.[.(./.(.(.(.^.(.`.(.(.].(.!.(.(.(.(.(.^./.^.(.(.|.|._.|._.|.|._.'.|.|.|.'. X.X|..X|.|..X.X.X.X.X.X.X.X.X.X.X X X'.'..X.X@X XdX'..X|..X.X|. X|.`.`.`._.(._.{._.(.`.(.`.(.`.|.|._._. X|. X X.X.X.X.XdX.X.X.X.X.X.XdXdXdXdX.X.X.XdX.XdX XdXdXdXdXdXxXdX.XdXdXdX'.dXdX'.@XdX'.dXzXxX.XzX'..X@X X.X.X.XdX'.@XzX.X.X.XdXdX.X.X'.zX'.zX.X.X.X.X.X X'. X'.|.|._._._.(.(.`.^.(.^.(.(.(.(././.~.~.T.T.T.T.U.P.T.I.T.U.U.T.T.U.T.T.T.U.T.T.Y.T.T.T.T.T.T.T.T.T.P.T.P.T.T.T.P.T.U.U.U.L.P.S.U.D.L.S.L.H.H.D.G.H.H.H.S.L.L.L.L.S.P.L.L.L.L.L.L.U.", "N m N m m m m m m m m m m N N N F m N N V N V N B N B N M V B u M C C V C B C A F C C Z C Z C Z Z C Z C C C D C D C C C C Z C D Z D B D Z C Z B Z Z D Z Z Z Z C L Z D D D Z H H H J H H H P H J U K J J K P J P I J P P K L P P P P P P I I P I ) ) P ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) P ) ) ) I ) I ) ) I ) ) ) ) ) ) ) ) ) Q._. X_.`.`.`.|.`.^.^.`.^.(._.(.(.(.(.(._.!.{.[.`.(.(.(.(.(.(././.!.(././.(./.(.(.(.(._._._.|._.|.|.|.|..X X X@X.XdX.XzX.XdXzX.X.X.X.X.X.X.X`.@X.X|.|.|.|. X.X|.|..X|..X}. X}.}.}.}.^._._._.^._._._.^.|.|._._.|._.|.|.}.(.`.`.(._.`.`.^.(.)././././././.~.~.~.T.T.T.T.T.T.T.T.U.P.Y.P.P.U.L.L.L.L.H.H.H.H.G.S.H.H.S.S.S.D.A.A.A.A.h.h.k.k.k.k.k.g.a.a.a.a.a.a.a.s.a.a.a.a.a.a.a.i.i.i.i.i.i.u.u.u.u.u.u.t.t.t.r.r.r.E r.y.y.y.y.y.y.y.y.r.y.r.y.y.r.y.t.t.y.r.r.r.E r.r.r.w.t.E r.r.r.r.r.r.y.r.t.y.y.y.y.y.E E y.y.y.E E y.y.E y.E E y.y.w.r.r.y.r.y.t.r.t.r.r.t.t.r.t.u.t.t.r.i.t.r.t.p.t.t.u.p.u.t.u.p.u.u.u.u.u.i.i.u.s.p.i.i.u.i.u.u.u.u.u.a.a.a.a.i.d.a.g.f.f.g.j.k.k.k.g.z.z.h.z.l.l.l.l.h.A.g.H.A.S.S.A.S.S.S.S.S.S.S.S.S.S.S.S.A.A.A.A.A.A.A.A.G.A.H.A.S.S.S.S.S.L.L.S.D.P.L.Y.P.P.U.U.T.T.T.~.~.~.T.(.T.[.~.~.~.R.~././././.(.[.(.(.|._._.{._.^._.^.)._.`.|._.|.|.|.|.'. X.X.X.X.X.X@X.X.X@X.X.X.X.X'.'.'..X X.X.X|.|.`.|.|.@X.X`.|.|.|._._.|.`.|.|._._._._.`.|.`.`.|.|.|.`.`.|.|.|.|. X_.|.|.`.|.|._.|._._.|.|.|.|.|.|..X|.|..X.X.X.X.X.X.X.X.X.X.X.X.X.X'..X.X'..X.X.X.X.XzX@X'.'..XzX@X'.'..XdX.XdXfXdXzX.XxXdXzXdXzXzXzXdXzXzXdXvXzXzXzXdXxXxXcXcXzXxXxXMXnXnXmXmXmXmXmXMXmXmXmXmXMXnXnXnXcXxXzXcXxXxXcXdXcXnXnXdXdXxXdXcXnXdXdXdXzX'..X.X.XdX'.@X X.X'.@X'.@X'.xX'.dX'.@XdX@X.X.X.X|.|.|.|.|.|._.`.|._._.{.{.|.|.|.(.(.(.(.(.(.(.[.{././././.{././.(.^.{./.!././.[.~.T.~.[.T.~.~.~.T.T.~.~.T.U.T.U.L.P.L.U.D.P.P.L.U.P.L.U.U.U.L.L.L.L.T.D.U.U.L.D.P.U.U.U.U.L.U.Y.T.U.T.T.T.T.T.T.T.T.T./.T.~.~.T.(.T.~.[.~.~.~.T./.~.T.T.T.~.~.~.T.T.T.~.T.T.T.T.~.T.T.~.R.~.~.~.~.~.~.~.~./.~.~.!.[././././././.^./.(.(./.(.(.(.(.(.(.(.(.(.(.(.(.(.(.`..X_.(.(.(.(.).^.^.|._.|.|.|.|.`.|.`._.|.|.|.|.|..X|.|.|.|.|..X.X X X_.|.|.|.|.`.|.|..X'.'..X|.|.|.|.|.(.`._.(.(.`.(.).(.(.(.(.(.^.^.(._.|.|.|.|.|.|.|..X|.|.@X.X.X.X.X.X.X.X.X.X.X.X'..X X|..X@X'.'.dXdXdXdX'.zXdXdXdX.X'.'.@X'.zXdXdX@X'.zX.XxXdXdXdXxX'.@X.X.XdX'.zXdX@X@X'.@X.X@X'.'..X'..X.X.X.X.X'. X|.|.|.|.{.{.`.`.`.(.(.(.(.(.(.(.)./.^.~.~.T.T.T.U.U.U.T.U.T.T.U.U.T.U.U.I.T.T.I.Y.T.T.T.T.T.T.T.T.T.T.T.T.U.U.U.T.T.P.U.U.U.L.P.L.L.L.S.H.H.H.L.G.D.H.H.L.L.S.U.L.L.P.P.L.L.L.L.L.L.", "m m m m m N m N m m m m N m B m V V N N N V N N N N N B B B B B B B C B B C B C C C C C C C C C C A C C F Z C C C D C C Z Z C B Z C Z C Z A F C C Z Z Z D B D Z Z Z D D D D H H H U H P L Z L J H P H J Y J J J J P P L P H I L I I ( I I I I I P ) ) ) P ) ) ) ) ) Y ) ) ) Y _ I ) ) ) ) P ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) P ) I ) ) ) [ n.|.|.(.{.(.|.^.|.^.|./.(._._.(.(.(.(.[.(.(._.^.(.(.(.^.!.(.!.(.(.(./.(.(.(./.(.(.(._.(._._._._._.|.|.|. X X.X.X.XdX@XdXdX.X.X.XdXzX.XdX.X.X X X.X.X X.X X|..X X X|.|.|.}.|.}.}.}.}.{.{.^.(.`._.|.^.|._.|._.|._.|.|.|.}._._.`.(.(.(.`.(.(.(./.(./././.~.T.~.~.T.~.T.T.Y.T.T.U.U.P.P.P.P.K.L.L.S.H.H.H.H.H.H.H.S.H.H.A.S.H.A.h.A.A.z.h.k.z.g.g.k.z.z.j.a.k.i.a.i.a.g.z.i.a.a.a.a.f.i.i.i.u.u.u.u.u.u.t.t.r.t.r.r.r.r.r.r.r.y.y.y.y.y.y.y.y.y.r.y.y.y.t.w.r.y.r.y.r.y.E t.r.t.t.y.r.r.r.r.y.y.y.y.y.r.y.y.E E y.E y.E y.E y.y.y.E y.y.E y.y.y.t.r.y.y.t.y.t.r.t.r.r.r.t.t.t.t.t.t.p.t.t.t.t.t.u.r.t.t.t.t.u.u.u.u.i.i.i.i.i.i.i.i.i.i.i.u.i.i.i.i.i.i.u.a.k.d.f.f.f.f.a.g.i.g.j.a.z.k.z.z.k.l.l.l.A.h.A.z.A.G.G.A.S.S.G.S.S.S.S.S.H.A.S.A.A.A.h.H.h.A.A.G.A.G.H.h.S.S.S.S.L.A.S.S.Z.P.L.S.P.Y.U.T.Y.T.T.~.T.~.~.~.~.~.~.(.!.(./.(.(.(./.^.(.{.^.(.^.|.{._.{.|._.|.|._.`.`..X.X.X.X'.@X'..X X.X.X.X.X@X.X.X.X@X'.'. X.X.X.X@X'..X.X.X.X.X.X.X`..X|.|.|.|.|.'.|.|..X|.|.|.|.'. X`.'.'. X'..X|..X|..X@X`..X|.`.'.|. X'. X'.|.|.|.|..X.X.X_.'..X.X.X.X.X@X.X'..XdX'.zX.X.X.XzX.X.X.X.X.X@X X'..XdXdX@X.X'.@X'.dXdX.XdXdXdXzXzXzX.XzXzXzXzXvXdXzXcXxXcXcXzXvXvXxXxXdXcXcXcXnXnXnXnXnXmXmXmXmXmXMXmXmXmXmXnXmXnXmXcXcXcXfXJXxXxXdXdXcXcXcXdXcXdXzXdXxXdX.XzXdX.X.XxXzX'..XzXdXdXdXdXdXdXdX@XdXdX.XdX.X.X.X.X.X`.|.`.|.|.`.'.`.(.`.`.|.{.(.`.(.(.|.^.{.(./.(.{./././.^.^.~./.!././.(.(.(.~.~.!.!.T.T.!.!.~.~.~.T.T.T.U.U.U.U.U.P.L.L.P.L.L.P.L.L.L.L.L.U.L.L.U.S.U.U.L.L.L.D.U.P.L.L.L.T.I.I.U.T.T.T.T.T.!.Y.T.T./.T.T./.T.T.!.T.T.T.~.~.T.~.T./.[./.T.~.~.~.~.~./.(.~.T.~.~.T.T.T.~.T./.~.(.~.(.!././././././.(./.[././././.(.(.(./.(.(.(.(.(.(.(.(.(.(._._.(.(.{.|._.'.|.(.{.|.|.`.|.|._.'._.|.|.`.|.`.|.|..X.X.X.X.X.X'..X'. X.X|..X@X'.@X|._..X.X.X.X.X.X.X.X.X.X|.|.`.'.`.{.|._.|.^.^.|.`.(.{.|.|._._.|.`..X|..X.X.X'.zX.X'..X'.@X.X.X@X'..X.X@X X.X.X.X.X.X.X.XdX'.zX@XzXzXzX.XxX@X'.zXdXzXzXdX.XzX'.dXzXdXdXdXdXdX.XzXdX.X.XdXdX.X'.dXdX.X XdX'..X'.@X.XdX.X X.X.X@X.X.X.X|.`.`.|.|._.(.|.'..X(.(./.(.(.!.(.~.T.T.T.T.U.T.T.Y.T.U.T.U.T.I.T.L.Y.Y.I.T.T.T.T.T.T.T.T.T.U.T.T.Y.T.T.T.T.T.Y.P.U.U.U.H.D.L.L.S.L.G.H.L.H.D.L.L.H.S.L.S.L.L.L.L.S.L.L.L.L.K.J.", "m N m N m N m m N m m m m m m N N V V N V N V N N N B N B B B B B C B C B C C C C Z C C C C Z Z C C Z C C C C Z C C C D C D C Z B Z Z Z C Z C B Z Z C Z Z Z Z Z Z D D D L D Z H H H H H P H H J H L J L J J P J P P L L P P P I I I I I I L ( I I ) P ) ) ) ) P ) I ) ) ) ) I _ ) ) ) ) ) ) P ) ) I ) I ) P ) ) I ) P ) U ' ) ) ) ) I ) b.!._.`.`.`./.|._.|.(._.(._.(.(._.(.(.(._._.(.^.(.(.(.(.(.(.).(././.(././.(.(.(.!._.(._._._._._.|.|.|.|.|..X.XdX'..XdX X.X.XzXzX.X.XdXdX.X.X.X X.X.X.X X.X.X.X.X.X.X X X X|.}.}.}.}.}._.`.`._._._.|._.|._.|.|.|.|.|.|._._._._.`.`.`.^.(.(.(.^.^././.[./.[.~.~.~.~.T.T.Y.U.T.T.U.Y.P.U.P.U.L.L.L.L.H.H.S.H.H.H.S.A.H.G.G.H.H.A.A.A.A.h.h.k.k.z.f.f.T ` U ~ ~ ~ ~ ~ ~ S ~ ~ ~ ~ ~ ! ! ~ ! / S / I ! ! S ~ ! ! ~ ~ S ~ ! S ~ ^ / S S ~ ~ ~ ~ ~ ~ ~ ! ! ! ! ~ ~ ~ ~ ~ S S / S / S S ~ ! ~ ! ! ! ~ ~ ^ S S ~ A Z S ~ Z S S S S S S q ~ S ~ ~ ~ ~ ~ ~ S ^ ~ ^ S ! / S P ~ ~ ~ ~ ~ ! ~ ! ! S ! ~ ! ! ! ! ~ ~ ~ S / / P S / ! S S ~ ~ ~ ! S / ~ ! / / / S / H / S S ~ ~ ~ ~ ~ ~ ~ / ~ ~ L [ T b.h.l.l.l.l.A.A.A.A.A.G.A.S.S.A.A.S.A.S.H.H.h.J.G.A.G.S.h.J.A.A.A.H.S.S.S.S.S.S.S.A.G.H.G.P.Z.F.[ / I ! ! ~ ~ ~ ~ ~ ~ S ~ S ~ S ~ ~ ~ ~ ~ ~ ~ ~ / ~ ~ ~ / ~ ~ / ~ / ~ ! ~ ~ ~ _ / ~ ~ ~ ~ / / ~ ! ~ ~ / / / / / ~ / / / / / Q / ! ! ~ ~ ~ ~ ~ S ~ ~ ~ ~ ~ ~ / ~ ~ ) / ~ ~ / ~ / / ~ ~ ~ ~ ~ ! / ! ~ / ~ ~ / ~ ~ ~ / ! ) / / ~ ~ ~ ~ ~ ~ ~ ~ ~ ' / ~ ! / / ~ / / / ! / ~ / ~ ~ ~ / ~ / ~ / ~ / / / ~ / Q Q ~ / ! ~ ~ ~ ~ ~ / _ [ m. X.XzXzXzXdXdXnXdXzXdXdXzXzXzXdXxXxXcXcXcXnXnXnXnXMXmXmXmXmXmXmXmXmXmXMXnXmXmXnXnXcXcXcXcXnXdX].m._ ~ ~ ~ ! Q ~ / ~ ~ / ~ ~ ~ / ~ ! / ~ ^ / ! ! / ! Q / Q Q / ~ ! ! ) / / ~ ~ ~ / ~ ~ ~ ~ ! ! / ~ ! ~ ~ / ~ ~ ~ ~ / ~ ~ ~ ~ / ~ ~ ~ / / ~ ~ ~ ! ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ! ) S ~ / ~ ~ / ~ ! / / / S S / P ~ ~ ! ~ ~ ! ~ ~ ~ ~ ~ / ! / / S / P / ~ ! ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ) ~ ~ ~ ~ ~ ~ ~ ! ~ ~ / ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ P ~ ~ [ b.K.~.~.T.T.T.~.~.T.T./.R.K.(.K./.~.!.!././.!./././.(././.(.^.~./.(.(.(.(./._.(._.(._._.(.(._.(.Q.` ) / ~ ~ ~ ~ ~ ~ / ~ ~ ~ / ~ ~ / ~ ) / ~ ~ ~ ~ / ~ ~ / / ! ! / ! / ~ / ~ ~ / ~ ~ ~ ~ / ~ ~ ~ ~ ~ ~ ~ ) / ~ / ~ ! ~ / ~ / ~ ~ / ~ ~ ~ / ! _ ~ ~ / / ~ ~ / ~ / / / ! / / / ! / / / / ~ ~ / ~ ~ ! _ / / / ~ Q ~ ~ ^ / ~ ~ / ~ ! ~ ~ ~ / ! / / ~ ~ ~ ! ! ~ / / ! ~ ! ~ ~ Q ! ~ ~ / Q ! / / ~ ^ ! ! ) ! / ~ ~ ~ ~ ~ ~ / / ~ / S / | n.].(._.(.(./.T.~.T.~.T.T.T.U.Y.T.T.T.T.T.T.U.U.T.T.I.U.T.T.T.T.T.T.U.XXT.T.T.T.T.Y.P.T.P.P.Y.T.P.U.T.L.L.L.L.H.H.L.H.H.H.L.L.H.L.L.L.L.L.L.L.U.L.L.L.L.L.S.J.", "N N m m m m m m m m N m N m m N N M C m N N V N B M N B B B B B B B C B Z B C B C C C C C Z C C C B Z C C Z C C Z C C C C C C Z Z A C A Z C Z C Z Z C Z Z Z Z D D D D D D H D H H H H L L L J J K L J J H J H Y P P L P P J P P I P I P I I I ) I ) ) ) J ) ) ) ) ) ) ) ) ) ) ) I ) ) ) ) ) K ) Y ) ) ) I ` ) ) ) P ) P P ) ) ) ) ) ) ) [ Y. X}._._.}._._._.'.^.`._.(.(.`.^.(.`.(.(.(.(.!.(./.(./.(.(./.^././.(.^.(.(.].(.(.^.`.|._.}.}._._. X X X'..X.X@X.X.XdX.X.XdX.X.XdX.X.X.X.X.X.X.X.X.X.X.X.X|..X X.X`..X|.|.}.}._.|._.|.[.}.}.}.}.}.|.}.|.|.|.|. X`._.`._._._.^._.(.(.(.(.(.(.(./././././.~.T.~.T.T.T.T.T.T.T.T.L.U.U.P.U.U.L.L.L.L.A.L.L.L.H.H.H.H.S.S.A.H.G.A.A.Z.h.l.z.k.[ | ~ ~ ! ! Q ! ! ! / ! ! ! ! ! ! Q ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ~ ~ / ~ ! ! Q / ! ! / ! / ! ! ! ! ! ! / ! ! / ! / ! ! ! ! ! ! ! ! Q / ! ! ! ! Q ! ! ! ! / Q ! ! ! ! S S ! / ! ! Q / ! / ! ! ! / ! ! ! / ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! / ! / ! ! ! ! ! ! ~ / ! ! ! ! ! ! ! ! ! ! / ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ~ / ! ! / Z.k.A.A.A.Z.h.A.S.A.H.A.A.S.A.S.S.S.S.S.G.z.H.S.A.S.A.S.S.A.A.H.S.S.S.A.H.S.F.Z.D.D.Z._ ! Q ! ! Q / ! ! ~ / ! ! ! / ! ! ! ! ~ ~ ~ ~ ~ ! ! ! Q ! ! ! / ! ! ! / ! / ! ! ! ! ! ! / ! ! ! ! ! ! ! / Q ! ! ! ! / ! / ! ! ! ! ! ! / / ! Q ! / ! / ! ! ! ! ! ! ! ! ! ! / / ! ! ! ! ! ! Q / ! ! ! ! ! ~ / ! ! ! Q ! ! ~ / ! ! / ! ! ! ! / ! / ! Q ! / ! ! ! Q ! ! ! ! / Q ! ! ! ! / ! ! ! ! / ! ~ ! ~ ! ! ! / ! / ! ! Q ! ! Q ! ~ ! ! Q / hXdX.XcXmXdXxXdXdXnXcXcXcXxXcXcXcXnXnXnXnXnXmXmXmXmXmXMXMXMXMXMXMXMXMXmXmXmXnXvXnXfXxX_ ~ ! / ! / ! / ! ! ! ! ! ! ! ! ! ! ! / ! ~ ~ ! ! ! Q ! ! ! ! / ! ! / ! ! ! Q ! ! ! / ! ! / ! ! ! / ! / ! ~ ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! / ! ! ! ! ! ! Q ~ ~ ! ! ! / ! ! / ! / ! ! ~ ! ! ! / ! ! / ! ! ! ! Q ! ! ! ! ! ! / S / / ! ! ! ! ! ! ! ! / ! ! / ! ! ! ! ! ! ! ! / ! ! ! ! / ! Q ! ! / ! ! ! ! ! / / / / / ^ ~ / ~ ! _ Q.!.T.T.[.~.~.T.~.!.~././.~.^./.(././././././././.(.(.~.(.(.(.(.^.(.(.^.`.^.|._._.^.!._ / / ~ ! ! S ! / ! ! ! ! ! ! ! ! ! / ! ! ! ! ! ! ! ! ! ! Q ! ! Q / / Q ! ! ! ! / Q ! ! ! ! ! ! ! ! ~ ! ! ! ! ! ! ! ! ! ! ! / ! ! / ! ! / ! ! / ! ! ! Q ! ! ! ! ! Q / ! ! ! ! ! ! ~ / ! ! ! ! ! ! ! ! ! ! / ! ! ! ! ! ! ! ! ! ! ! ! / ! ! ! ! ! ! / ! ! ! ! ! ! ! Q / Q / / / ! / / ! ! / ! ! ! ! ! ! ! ! ! ! ! ! Q ! ! ! / ! ! ! Q ! / S / Q.[.~.[.~.^.L.T.T.T.T.T.T.T.T.T.T.T.T.Y.U.U.U.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.T.T.U.U.T.U.U.U.L.L.L.S.L.L.L.L.H.L.L.S.L.L.L.L.S.P.P.P.H.P.L.L.L.L.L.L.", "m m m m m N m N m m m m m m N m m M M V V N N N B N B N B C B B C B B C C C B Z C C Z C C A C C D C C C Z C Z Z C C Z C Z C Z Z C Z Z C C Z Z Z D B Z Z Z D D Z D D D D Z H G H H H H Z L L J J U H J J J J H H L K L P J P P P L ) P I I I P P ) J P P ) ) ) ) ) ) S ) ) ) I ) ) ) ) ) ) ) ) ) ) ) ) ) Y ) ) ) ) ) ) ) ) ) ) ) [ ) ) ) ` Q.}.{._._.}.}.}.}._._.^._.`.^.^.^.(.^.(.(.(.(.(.(.(./.(.(././././.{./.(.(.(.(.(.(.(.(._.|.}.}.|.}._._.|. X|..X X.XdX.XdXdXdXdXdX.X.XdXzX.X.X.X'. X.X.X|..X.X.X|.|.`.`.|.'.}.}.|._.{._.|.}.}.}. X}.}.}._.|.|.'.`.`.|.|._._.|._._.(.(.(.(.(././././././././././.T./.T.T.T.T.T.T.T.U.Y.U.U.Y.L.L.L.L.L.L.L.S.L.S.H.H.H.D.S.F.G.A.H.h.l.l.k.[ T Z ~ S Q ! Q ! ^ ^ ^ ^ ^ Q ! S ! Q ^ ! ^ ^ Q S Q Q ! Q ! S ^ ^ ! ^ ! ^ ^ ~ S ~ ^ ~ ^ ^ ~ ^ S Q S Q Q Q S Q ^ ^ ^ ^ S ! / u ! Q ^ ! ! S ! Q ^ ^ ^ ^ ! ! ! S Q ^ ^ ^ ! ! Q S ^ ^ ^ ^ ! S ^ Q S ~ Q ^ ^ S ! S Q Q ^ ^ Q ^ ^ ! ! S ! ! ^ ! ^ ^ Q S Q Q ! ^ Q S ^ S Q Q Q ^ ^ ~ ~ ^ ^ ^ ! S ! ! ^ Q ^ ^ ! S ^ Q ! S ! ! ^ ! ^ ^ ^ S u ~ ^ ~ ! ! / ) T D.g.h.D.h.A.A.A.A.S.S.S.S.S.S.S.S.S.S.A.S.D.A.A.A.g.A.A.h.A.A.S.z.A.H.G.l.A.Z.H.) ! / / S Q ^ S Q Q ^ Q S Q ^ S Q ! ! ! S ~ ^ ^ ! ! S ! Q ^ ! ^ ^ ^ ^ S ! S ^ Q ^ ^ Q S Q ^ Q ^ Q ^ ^ ! ^ ^ S Q Q ! ^ Q S ^ S Q Q Q S ! ^ ^ Q ^ ^ ^ ^ S Q ~ S ! Q ^ ! S ! ^ Q / u ! Q ^ Q S ! Q ^ ^ Q S Q ~ S ~ S Q ~ ^ ! ^ ^ ! S ^ Q S Q ^ Q S ! Q Q S ^ ! S ! Q Q ! ^ ^ ^ S Q Q ^ Q ! S Q S ! ^ ! ^ ! ^ ~ ^ ^ ^ ^ ^ ! S S Q / u ! Q ^ Q / ! / ].mXdXdXdXdXvXdXcXdXxXxXxXcXcXcXnXnXnXnXnXmXmXmXmXMXMXMXMXMXmXMXMXMXmXnXcXcXcXNX].[ / ! S ! S S ! S Q ^ Q ! S ! Q ^ ! ^ ^ ~ ^ ^ ^ ! S ! Q ^ ! ^ ^ ^ ^ ^ S ! S ! Q ^ ! ^ ^ ^ ^ Q S ^ ! ^ ^ ~ ^ ^ ^ ! S ! ! Q Q ^ ^ ! ^ ^ ! ! S ! ^ ^ ! ^ Q S ^ Q Q ! S ! Q S ^ ^ ^ ^ ^ ! S ^ ^ / u ! Q ^ Q ^ ~ S Q S Q ! S ! ! ^ ! Q S ! Q S ~ ^ ~ ! S ! ! ^ ! ^ ^ ^ ^ ^ ^ ! S ! Q ^ ! ^ ^ ^ ^ ^ ! ^ ^ Q S Q ^ S Q ! Q S ^ S ! S S Q S S S S ~ S _ F.[.[.T.!.~.~.~.(./.~./.^.~././.~.(.(.~./././.(.(.~.{.(.(.(.(.(.(.(.^.|.`.^.^.(.Q._ ! / ! ! / S ! S Q ! ! S Q ! ^ ! S ^ ^ Q ! S ! Q Q ! ! S ! Q Q ! S ! ^ S Q Q ! ^ Q S Q S Q Q ! Q ! S ~ ^ ~ Q ! S ! Q ^ ! ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ S ! S Q ! ^ ! ! S ! Q ^ ^ ^ ^ ! Q ! S ^ ^ ^ ^ ! ! Q S ^ ~ S Q Q ^ ^ ^ ! S ! Q ^ Q ^ ^ ^ ! S Q Q Q ^ ^ ! S ! Q Q ! S Q S ^ ^ S ^ ^ ^ S Q ^ S Q Q ^ ^ ^ ~ ^ ^ ! ! S ! Q ^ ! ^ ^ Q S ^ ^ / S S / | Q._.[.^.^.^.T.T.T.T.U.T.T.T.T.T.Y.U.Y.P.Y.P.U.U.U.T.Y.U.T.T.T.T.T.T.P.T.T.U.T.U.U.U.T.U.T.U.U.L.P.L.L.L.H.L.H.D.L.G.L.L.L.S.L.P.L.D.P.P.P.P.U.L.L.L.L.", "m N m N m N m m m m m N m N N N M M m N M M m B N M N N N N B B C B C B B B C C C C C C C C C C C C C Z B A A Z Z Z C Z Z Z Z C Z Z A D C Z A C Z Z Z Z Z Z D D D D D Z J Z Z J H H H H L L L H H H J L H L K P J L P J K P J P P I I P I I I ( P I P ) ) P ) S ) ) ) P ) ) ) ) ) ) ) ) ) I _ Y ) ) ) ) _ ) I ) ) ) _ ) ) ) ) I P _ ) ) _ Q.}.}. X_._._.}.}._._.`._._._.(.`.`.^.`.(.(.(.(./.(.(./././.(./.(.(.(./.(.(.(.(.(.^.`.|.[.}.}.}.}.}.}.'. X.X.X.X.X.XdX@X X.XdXdX XdXdXdX@X.X.X'.@X.X.X.X|.|..X.X|.|.`.|.|.|._._._._._.^._.}.}.}.|.|.}.|.|._.|._._._._._._._._._.(._.(.|.(.^.(./.{./././.~.T.[.~.~.T.T.T.T.T.T.T.U.Y.U.U.L.L.L.L.U.L.D.S.L.H.L.H.H.S.L.H.H.H.A.A.G.l.A.F.P ! / / [ hXfXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXFXZXZXZXZXZXZXZXZXZXFXFXZXZXFXZXZXZXZXZXZXFXZXZXZXZXHXZXZXZXZXZXZXZXZXHXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXHXZXZXZXZXZXZXDXDXAXZXZXZXZXHXZXZXZXZXHXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXHXZXZXZXZXZXAXAXZXZXZXZXZXZXZXZXFXZXZXZXHXZXZXZXZXZXZXZXZXZXZXZXDXDXGXDXBXhXm.) S / U Z.h.h.D.z.A.G.A.G.h.H.S.S.S.S.G.S.S.S.S.S.S.A.S.A.S.A.A.A.A.A.H.S.S.G.D.G.L.Z._ ~ ! / { ].fXHXZXZXZXZXZXZXZXHXZXZXZXZXAXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXHXZXZXAXDXZXZXZXZXZXZXZXHXZXZXZXZXZXHXZXZXZXZXZXZXHXCXZXZXZXZXFXZXHXDXZXZXZXZXZXZXZXZXZXZXZXZXZXZXHXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXDXDXHXZXZXZXZXZXZXZXZXZXZXZXZXZXHXZXZXZXZXDXHXCXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXHXZXZXZXZXAXZXZXZXZXZXZXZXZXZXHXDXZXHXFXCXhXm.' / ! _ ].xXfXzXdXcXnXzXxXxXcXcXcXcXcXnXnXnXnXmXmXmXmXmXmXMXMXMXMXMXNXmXmXmXmXMXfXMXdX' ! ! ! { aXfXZXDXDXZXHXCXZXZXZXZXFXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXHXZXZXZXZXZXFXZXZXZXZXDXZXHXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXHXZXZXZXZXZXZXZXZXHXZXZXZXZXZXZXDXDXZXZXZXZXZXZXHXZXZXZXZXZXAXAXAXDXHXZXZXZXZXZXDXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXHXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXHXZXZXZXZXZXZXHXZXHXDXHXHXFXhXm./ ! ! I F.T.[.[.~.~.~./.~.~./.(.[./.(.(./.(.(./././.(.(.(.(.(.(.(.(.(.(.|.^.(.(.`.(.].| ! S ! [ pXmXDXZXZXZXZXZXZXZXZXZXZXZXZXZXZXHXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXHXZXAXZXDXDXHXZXZXZXZXZXDXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXFXFXZXZXZXZXZXZXZXZXZXZXFXZXZXZXZXZXZXZXZXZXZXHXZXZXZXZXZXZXZXZXZXHXZXZXZXHXZXZXZXHXZXZXZXZXFXZXZXZXZXZXZXZXZXZXZXZXZXZXZXDXZXHXhXm.' / S ) Q._.^.^.T.~.T.T.T.T.T.T.T.T.T.T.Y.Y.P.Y.I.U.T.I.T.T.U.T.T.T.T.T.T.T.U.T.U.U.U.U.U.T.Y.L.U.U.U.P.L.L.L.L.L.L.L.L.L.U.L.L.L.U.U.P.L.L.P.P.U.L.U.S.L.L.", "m m m m m m m m m m N m m m m N N N M N M V B N N B C B F C B B B C B Z C C C B C C C C C C C C C C Z C C D Z C B A D B Z Z D B D C Z B Z Z C Z Z Z C Z Z D F Z Z D D F Z H Z H H H H H H L Z P K L J L L L L H J P L H P P L P P P P I P I I P I ) ) ) ) ) ) ) P ) ) ) P ) ) ) ) ) ) I ) ) ) ) ) ) I ) ) ) ) ) ) I Y ) ) ) _ Y ) ) _ I ) n.}.}._._._. X_.}._._._._._._.{.`.(.(.(.(.(.(.(.(.(./.(.(.(./././././.(.(.(.(.(.(.`.`._.}.}._.}.}.|._. X|..X.X.X.X.X X.X.X.X.X.XdX.X.X'..XzX.X.X.X|..X.X.X.X.X.X|.@X|. X|.|.|.|._.|._.^.|.}.}.}.}.}.'._.|. X|._.|._.|._._.(.|.|.(.(.(.[.^.^.(.^.(.^././././.~.~.T.T.T.T.T.T.T.T.T.U.U.U.U.L.L.L.L.L.L.L.L.L.H.L.D.P.P.H.H.G.G.A.G.l.b.J ! / / M.fXHXDXZXDXZXZXZXZXZXZXZXZXZXFXDXZXZXZXZXZXFXZXFXZXAXFXZXZXDXZXZXFXAXVXZXZXVXZXZXZXZXVXZXHXZXZXZXZXZXZXZXZXFXAXZXFXZXZXZXZXZXZXZXZXZXFXZXZXZXZXZXDXFXFXZXSXZXZXZXZXFXFXDXFXZXZXZXZXZXCXFXHXDXAXZXZXZXZXZXZXZXZXZXZXZXDXZXZXZXAXFXZXZXZXZXZXZXZXZXZXFXFXZXZXZXZXZXZXAXAXZXZXZXZXZXZXZXFXZXZXZXZXZXZXZXDXZXZXZXFXZXZXZXZXDXDXDXDXZXZXfXm./ / S Y b.Z.h.D.A.j.A.A.A.S.S.S.S.S.S.A.S.S.S.S.A.S.A.S.A.A.A.A.A.h.G.A.D.G.h.G.F.U / / / { fXCXAXZXFXZXZXZXFXVXZXCXFXZXZXDXFXAXZXZXZXZXZXZXZXFXDXZXZXZXZXZXZXZXFXFXDXAXZXZXZXZXZXZXZXZXDXZXZXFXCXDXZXZXZXZXAXFXZXZXZXZXZXZXAXFXCXZXZXZXZXZXDXZXZXZXZXFXZXFXZXFXZXZXZXZXZXZXZXZXZXDXFXAXZXZXZXZXFXAXZXZXZXZXDXDXFXHXDXAXZXFXZXZXCXDXZXZXZXCXDXDXAXZXZXFXZXZXZXZXZXZXZXZXZXZXAXFXZXZXZXZXFXZXFXFXZXDXZXDXZXFXZXAXZXZXZXZXFXAXHXfXQ.' / / ] ].dXcXcXzXzXcXxXxXxXdXdXnXcXnXnXnXnXmXmXmXmXmXMXmXMXMXMXMXMXmXmXmXmXmXnXhX_ Q / ! m.fXCXZXSXZXZXZXZXDXZXZXZXAXZXZXZXZXZXZXZXZXZXZXZXFXDXZXZXZXZXZXZXZXZXZXZXAXZXZXZXZXZXDXCXDXAXZXZXFXZXZXZXZXFXZXZXFXZXZXZXZXZXZXZXFXFXFXZXAXDXDXZXFXZXZXDXCXAXZXZXFXZXFXFXZXZXZXZXFXDXZXZXZXZXZXZXZXDXHXDXAXCXZXZXZXZXZXDXZXZXZXZXFXZXZXZXZXZXZXZXFXDXZXZXZXZXZXZXZXZXZXZXAXDXZXZXZXZXZXZXZXZXZXDXAXZXZXZXDXDXZXAXFXZXZXZXZXZXZXHXFXMXm./ ! / / Q.(.!.T.^.~.T.(.~./.E.(./.!.~.(.(.(.(.(.(.(.(.(.^.`.(.(.(.^.`.(._._.^.`.].[ ! ! S M.fXHXDXDXZXZXZXZXZXZXZXAXDXDXZXFXZXZXZXZXZXZXZXZXAXZXZXFXZXVXZXZXZXZXZXZXZXZXVXFXZXZXFXZXFXDXFXFXZXFXFXZXZXZXZXFXDXZXZXZXZXZXZXZXAXFXAXAXZXZXZXZXZXZXZXDXFXZXZXAXZXZXZXZXDXZXFXFXZXZXZXZXZXDXAXFXZXHXZXZXZXZXZXZXFXZXZXFXZXZXZXZXZXZXZXZXZXZXZXZXFXZXZXFXZXVXZXZXZXDXZXCXDXCXAXFXZXDXZXZXDXZXAXAXZXZXZXZXAXZXZXFXZXFXZXZXZXCXDXDXZXHXpX' ! ! / F.^.T.T.~.T.(.T.T.~.~.~.T.Y.U.U.L.Y.P.L.T.L.T.Y.T.T.T.T.T.T.T.P.P.T.U.U.T.T.T.U.U.U.U.L.L.Y.L.L.L.L.L.S.L.G.L.L.S.L.U.L.L.U.S.P.L.H.P.L.L.P.L.L.S.", "m m m m m N m m m m m m m m m N M N u m N B m B B V B B m C N C B C B B B C C B C C C C C C C C Z Z C Z C A Z Z F Z Z Z Z Z C Z C Z Z C B Z C D Z Z C Z D Z D Z D D Z Z H Z H H H Z L H L H J H P H H J J H H H J J J J L P L P P L P P P P P ) ) P ) I I ) P ) ) ) P ) P ) ) ) K _ _ I I ) ) ) ) ) ) ) Y _ ) ) ) P ) ) ) ) _ ) ) ) ) ) I n. X{._._._._.}._._._._._._._._._._._.(.(.(.(.(.(.^.{./.(././.^./.(.(.(.(.(.(.(.(._.(.|._.|.^.`.(.|.|.|.|.|. X.X.X.X.X.X.X.X.X.X.XvX.XdX.X.X.X.X'..X|. X|..X.X.X|.|..X|.|.|.|._.|.`._._.^.|.`.}.}.}.}.|.|.}.}.|.}.}.}.|._.|._._.(.(.(.{.(.(.(.(./.(./.~.~.~.~.~.~.T.T.T.T.T.~.T.T.Y.T.L.L.L.L.L.L.L.L.L.L.S.U.L.S.L.A.H.L.H.D.D.z.l.Y ! S / m.BXSXAXAXVXFXZXVXZXZXZXZXVXZXVXAXAXAXAXAXZXFXZXVXFXVXZXAXZXZXZXZXFXVXFXFXZXZXAXAXAXAXAXZXFXVXVXVXZXZXZXZXFXAXVXZXFXHXVXVXZXFXVXZXVXVXVXVXZXFXZXVXVXFXZXVXDXDXDXZXFXVXZXVXVXAXZXVXZXZXFXZXFXVXAXFXVXFXFXFXZXVXZXVXZXZXZXCXVXZXAXVXZXVXVXZXZXFXVXZXVXZXFXVXZXZXZXVXFXFXSXAXZXZXVXZXVXZXVXAXZXVXVXFXZXZXZXZXAXVXZXVXAXAXAXVXDXZXCXFXAXFXGXBXm._ ! / I Z.j.A.A.A.A.A.A.S.S.S.S.S.S.S.S.S.S.S.h.S.A.A.A.A.A.A.A.h.A.A.H.A.G.H._ / / / c.fXFXDXVXVXZXVXFXAXFXFXZXFXFXZXAXAXAXFXZXVXVXZXVXZXVXAXVXVXZXFXZXZXZXVXAXAXAXAXAXAXSXAXZXSXVXZXFXZXZXFXDXCXZXFXVXZXVXAXZXZXFXFXVXAXVXVXVXFXZXAXZXZXFXVXAXAXAXAXAXAXAXAXZXVXVXFXZXZXFXZXAXAXAXFXVXFXZXVXVXFXFXVXZXAXVXZXAXVXAXAXFXZXDXHXVXFXVXAXZXZXZXZXAXAXAXFXSXZXZXDXZXFXZXVXFXVXFXVXZXZXFXVXAXAXAXHXFXZXAXAXZXFXVXZXVXFXVXZXZXZXZXZXFXQ.' / Q _ dXnXvXzXxXxXxXxXxXJXmXmXnXfXnXnXnXnXmXmXmXMXmXMXNXMXMXmXmXSXmXMXmXnXnX[ S Q / m.BXFXFXZXZXFXZXZXDXZXVXZXAXVXAXAXAXAXZXZXVXVXFXVXVXAXVXFXZXVXDXZXZXZXFXAXHXAXFXZXZXFXZXZXVXZXAXVXFXVXZXZXAXZXAXZXFXVXFXFXVXVXZXFXZXVXAXAXAXAXVXVXVXVXZXZXVXFXVXVXAXZXZXZXFXVXVXFXFXVXAXFXVXFXZXZXZXFXAXAXAXAXAXAXAXAXFXZXVXVXZXVXFXVXZXZXVXZXVXZXFXVXVXAXAXVXZXZXZXZXAXAXVXAXAXAXAXAXZXZXAXAXAXAXFXAXZXZXFXZXVXZXAXFXZXCXZXZXAXVXAXZXDXZXQ./ ! Q _ F.).~./././.(./.(././.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.`.^._._._.`. X[ / / ^ m.fXGXZXCXVXZXVXVXVXVXAXZXVXZXVXAXFXZXVXZXVXVXZXFXZXAXAXAXFXZXAXZXZXZXFXZXVXFXFXVXFXZXFXZXVXFXFXVXVXFXZXAXVXZXFXVXVXVXAXAXFXZXZXZXZXAXAXAXAXAXAXAXAXZXZXVXFXVXZXAXZXZXFXZXVXVXFXZXVXZXFXZXZXAXAXAXAXAXZXZXAXZXZXZXZXVXZXVXFXVXZXZXFXZXAXFXVXSXZXZXZXFXVXAXAXVXVXHXFXZXZXZXZXAXZXVXVXZXZXVXZXFXFXVXFXZXFXVXZXVXZXAXZXVXAXZXVXZXZXZXSXZXAXZXQ./ ! / [ !.~.~.~.T.T.T.T.Y.T.T.U.L.Y.Y.U.U.P.P.P.T.P.T.P.T.T.T.T.U.T.P.P.P.P.U.T.U.U.U.P.P.U.L.Y.P.L.U.L.L.L.L.L.L.P.L.L.P.L.L.U.L.L.P.L.L.L.L.L.L.P.P.P.", "m N N m m m m m m m N m m N N N N N N V B m B N N N B B N B V C B C C B C C N C C C C A A C C Z C C B C D B Z C D C Z C D B Z Z D Z Z A Z Z Z Z F B Z Z D D Z D Z D D Z Z L L Z L L H H H H H J H Y J H J H K U J H J H P H L P L P P P P P P ) P ) P I I ) I I P ) ) I ) ) I ) ) P Y ) I ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) I ) ) ) I ) ) b.!.}._._. X_.}. X_._._._._._._._._._.^.^.(.(.(.^.{.E.(././.(./././.(.{.^.(.^.(.^._.(.|._._._._.`._.|.|.|.|.'. X.X.X.X.X.X.X.X.X.X.X.X.X.X.XdXdX@X X|.|..X|. X|.|.|.|.|.|.|._.|.(._._.|.`.^.`.}.}.}.}.}.}.}.}._._._._.(._.(._.|.(._.(.^.(.(././.(.^./.{./.~.~.~.~.T.T.T.~.T.T.T.T.T.Y.Y.Y.L.Y.L.L.L.L.L.L.L.L.L.L.S.L.A.L.H.H.A.D.S.I / c m.fXFXAXAXFXZXFXFXFXZXZXZXZXFXFXFXFXFXFXZXFXDXDXZXZXFXFXFXFXZXZXFXZXVXSXVXFXDXZXFXZXFXZXFXFXFXFXZXFXZXZXFXZXZXFXFXFXVXVXVXVXZXFXFXFXFXZXFXFXZXDXZXFXFXFXFXFXZXDXZXZXZXVXFXFXFXFXFXFXZXZXFXVXFXFXZXFXFXFXDXDXFXFXFXFXZXDXDXZXFXFXFXFXFXFXFXVXZXDXZXFXFXFXFXFXZXZXFXZXFXFXGXAXDXZXFXFXFXFXFXFXFXFXZXFXZXZXFXFXFXFXFXFXFXFXZXFXZXZXFXFXAXVXAXAXZXm./ ! ~ I Z.h.h.A.A.H.S.S.S.S.S.S.G.S.S.G.S.A.A.S.S.A.A.A.A.A.D.z.D.F.S.G.Z.A./ Q Q ` fXFXFXDXZXZXFXZXFXFXVXZXZXZXFXFXFXFXAXFXFXZXFXFXFXFXFXFXZXFXFXFXZXZXFXFXAXDXDXAXDXAXFXAXDXZXVXFXVXFXAXFXDXZXFXFXFXFXFXFXZXZXFXZXFXDXFXFXAXFXFXFXZXDXZXZXFXFXAXFXAXDXAXDXFXFXFXFXZXDXZXVXZXAXZXFXZXZXVXFXFXFXZXFXZXDXZXZXFXFXZXFXFXZXDXDXZXFXFXFXZXZXFXZXDXDXAXAXDXZXZXDXDXZXDXZXFXFXFXFXZXZXFXZXFXZXFXZXFXZXFXAXFXFXFXFXZXFXFXFXZXVXZXFXFXVXpX/ / ^ hXdXcXzXxXxXxXxXxXxXmXdXdXNXnXnXnXmXmXmXmXmXMXmXmXMXMXMXmXmXMXMXMXMXfXS / / } BXZXZXDXZXFXFXZXZXFXZXFXFXFXFXFXAXFXFXZXZXFXFXFXZXFXFXFXFXFXFXZXZXFXFXFXAXAXFXVXAXAXDXZXZXFXFXFXFXFXFXDXZXFXFXFXFXFXFXFXFXZXFXZXZXZXFXAXFXFXFXVXVXVXVXZXZXFXFXFXZXFXFXZXZXFXFXFXZXAXAXZXFXZXAXZXDXFXZXFXFXFXAXAXFXFXFXZXZXFXFXFXZXFXFXAXZXFXFXFXFXFXFXFXFXZXFXZXZXVXZXFXFXFXFXAXFXFXFXDXZXZXFXFXZXFXFXZXZXFXFXFXFXFXFXZXZXZXZXFXFXFXZXCXZXBXm.' Q ! _ ]./.!.(.(.T././././.(.(.(.(././.(.(.(.(.(.(.(.(.(.|.(.`.|._._._._.Q.S / u } fXHXFXVXVXVXCXVXVXVXFXFXFXFXFXFXFXFXFXFXFXFXZXDXFXZXFXFXZXFXAXAXZXFXDXZXZXFXFXFXFXFXDXDXZXZXDXDXVXZXZXZXFXFXFXFXFXFXZXFXZXFXZXZXFXZXDXAXAXFXDXAXDXFXZXZXFXFXFXFXFXFXZXDXFXZXFXFXFXFXDXZXZXFXFXFXAXFXFXFXFXAXZXZXZXDXFXFXZXFXZXVXZXZXFXFXZXFXDXDXZXDXFXFXZXFXZXFXFXDXZXZXFXZXFXFXFXFXZXZXFXFXDXZXAXZXZXFXFXFXFXFXFXFXZXFXFXFXZXZXVXZXAXZXZXCXaX_ S P Q.~.T.~.~.T.T.T.U.!.Y.P.U.U.L.L.L.P.P.Y.P.P.Y.T.T.T.T.U.T.U.U.P.U.U.P.U.U.U.P.P.P.Y.L.L.L.P.L.L.D.L.L.L.P.P.P.L.P.P.L.U.P.L.P.A.L.L.A.L.L.A.D.L.", "m N m m m m m m N m m m N N m B V V N N B N B B V B B B B V C m B B B C N C C B C C C C C C A C C Z F C Z Z Z Z Z D Z Z Z Z Z Z Z Z Z Z F B C Z Z Z Z Z Z D D Z J Z Z H H Z Z H H Z H H H J L H L H H J J J K H H J J J H P H J J P P P P I P P P ) I P I ) I I ) ) I ) I ) ) P ) ) ) _ ) P ) ) ) ) ) ) ) I [ ) I I ) ) ) ) ) ) _ ) ) ) U [ Q. X_. X_. X_. X_.}. X_._._._._.^.^.|.^.|.(.(.(.(.(.(.(.(././.(.[.(.(.(._.(.(.(.(.`.^._._._._._._._.|.|.|.|..X|. X.X.X.X.X.X.X.X.X.X.X'..X.X X'..X.X|. X.X X X|.|.|.|.|.|.|.|.`.(.`.(.`.|._._.}._.}.}.}.}.}._._._._._.(._._.(.(.(.(.(.(.(./.(.(.[././.~.~.~.~.T.~.T.~.Y.T.Y.T.T.I.T.U.T.T.L.P.P.P.L.L.L.L.L.L.L.L.L.H.L.H.S.A.D.b.! / ` hXVXVXAXGXFXFXFXFXFXFXFXZXVXFXFXFXFXFXFXZXFXVXFXZXDXFXFXFXFXFXFXFXFXGXGXSXGXZXFXVXFXFXAXAXAXFXFXFXFXFXFXFXFXZXFXFXFXFXFXVXGXZXFXFXZXFXFXFXFXFXZXZXZXZXFXFXFXFXZXFXFXVXFXHXHXFXFXFXFXFXFXFXFXAXZXZXAXAXFXDXDXFXFXFXFXFXFXFXZXFXFXFXFXFXFXZXVXFXVXDXZXFXFXFXZXFXFXFXFXSXVXGXSXAXZXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXZXZXHXAXFXVXCXfX{ ! / ~ Z.h.A.A.A.A.A.A.A.S.A.S.S.S.S.S.S.S.S.S.z.G.A.S.A.A.A.A.D.A.D.D.P._ ~ ~ / hXGXVXAXZXFXAXZXZXFXZXFXZXFXFXFXFXAXFXFXFXZXZXFXFXFXFXFXFXFXFXZXFXFXFXFXFXDXAXAXFXAXDXAXAXDXZXDXZXFXZXFXZXFXAXFXFXFXFXFXZXFXZXFXFXDXDXDXDXZXFXAXFXAXFXDXZXFXFXDXAXAXDXAXAXFXFXZXFXFXFXFXFXAXAXFXZXFXFXFXZXFXFXFXFXFXZXDXAXZXFXFXZXZXFXDXDXFXFXZXFXFXZXFXFXZXDXZXZXDXDXZXDXFXZXZXDXZXFXFXZXFXZXFXFXFXFXFXFXZXFXZXFXVXFXFXFXFXVXFXZXFXAXAXZXVXVXMX} ! ! m.dXzXcXxXxXxXcXxXxXcXcXdXmXnXnXnXcXmXmXmXmXMXMXSXMXMXMXMXMXmXmXmXnXhX~ ~ [ hXVXFXFXDXFXFXFXZXVXVXFXFXFXFXFXFXFXFXFXDXVXZXDXFXFXFXFXFXFXFXFXFXZXFXFXFXAXFXZXZXFXZXFXZXZXFXFXFXFXFXZXAXZXAXFXFXZXFXZXFXFXFXFXZXVXZXDXFXFXFXVXVXVXVXGXZXFXFXZXFXZXFXFXFXZXFXZXFXFXFXFXFXFXFXAXZXAXVXZXAXAXAXAXFXFXFXFXDXZXFXFXFXFXFXZXZXZXAXFXFXFXFXZXZXFXFXFXFXVXZXFXFXFXFXFXFXFXFXFXZXFXZXVXAXAXZXAXFXFXFXFXFXFXFXFXFXAXZXDXFXFXFXFXDXZXGXfX[ ^ ^ ! ].E././.(./.{./.(.(./.(.(.(.(.(.(.(.(.(._.(.(._.[._.`.`.{._._._. X_ / ! _ hXFXFXFXFXFXVXDXZXZXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXZXFXZXFXFXZXFXFXZXZXFXZXZXDXZXFXFXFXVXDXZXDXFXDXHXHXZXFXFXVXFXFXFXFXFXFXFXFXFXZXFXFXDXDXAXDXAXFXDXFXZXZXFXZXFXZXFXFXFXZXZXZXZXFXFXFXFXVXFXZXAXFXSXAXZXFXFXAXFXZXFXFXFXFXFXFXHXFXZXDXFXAXFXZXFXZXZXZXZXFXFXZXFXFXDXDXFXZXFXFXFXFXFXZXFXZXFXFXFXAXFXZXZXVXZXFXFXZXFXFXFXFXFXFXFXZXZXFXHXZXGXFXdX[ ~ / b.Y.~.~.~.~.T.~.Y.Y.P.P.L.L.L.L.L.L.P.P.T.T.P.T.T.T.U.T.U.P.U.P.L.L.P.U.U.U.T.L.L.L.L.U.U.L.L.L.L.L.U.U.P.P.P.P.L.L.P.L.P.L.L.L.D.L.L.F.D.P.L.L.", "m m m m m m m m m m N N m m m m N N N V m B B m N B B V N C V C C B C B V C B C N C C C C C C C C C C Z C Z C C A B Z C Z C Z Z D B C Z Z Z Z Z Z Z Z D Z Z Z Z H Z H Z Z Z H D H Z H H H H H H J H J H J H G H J H J H J H P J U L P P P P P P P P I I I I I I P ) ) P ) I ) ) ) I ) K ) ) ) ) ` P P _ ) ) P ) ) I _ ) ) ) ) P ) ) ) _ I _ Q.}._._._._._._.`.}._._.|._._.(.`.(.(.(.(.^.}.(.(.(.(./.(.(.(./.(.(.(.(.(.(.(.^.`.(.^.|.{.{._._._.|.|._.|.|.|. X X|. X.X.X X.X X.X X'.zX.X.X.X'..X X.X.X.X|. X|.|.|.|.|.|.|.|.^.|.`.|.`.|.^._.}.}.}.}.}.}.}._._._._._._._._._.(._.(.(.(.(.(././.(././.~.~.~.~.~.~.T.T.~.~.Y.T.T.T.Y.T.Y.P.U.P.P.P.U.L.L.U.L.L.S.L.D.L.H.U.H.D.D.T / / m.MXAXAXFXZXZXAXFXZXVXVXZXVXZXAXZXVXAXZXVXVXAXZXVXZXFXVXZXVXZXVXVXZXVXVXVXVXFXFXZXZXVXAXFXZXFXZXVXZXFXVXZXVXFXAXVXFXVXAXAXVXGXZXZXFXVXFXVXFXZXVXVXZXFXVXZXVXAXVXVXZXVXFXVXFXCXZXAXAXZXVXAXZXAXAXFXVXAXAXFXDXHXVXVXVXZXFXZXVXFXAXZXVXZXVXAXVXVXVXZXVXFXVXZXFXVXVXZXVXFXGXSXSXSXZXVXVXFXAXVXFXAXZXVXZXVXVXZXVXVXZXVXFXVXZXVXFXFXZXZXGXZXAXZXZXAXZXZXhX! Q ~ e.h.j.A.A.A.A.A.S.A.h.S.A.S.S.S.S.G.S.G.H.H.S.A.A.A.A.A.A.L.S.D.P.S ~ ~ m.MXFXFXFXAXVXFXAXFXAXAXFXVXFXZXVXVXAXAXAXFXZXVXZXVXAXVXAXZXVXFXVXZXVXVXZXFXAXAXAXAXAXAXGXFXZXZXFXZXVXFXVXFXAXFXZXVXVXFXFXVXFXVXVXFXDXDXDXDXAXFXVXZXAXZXFXZXAXAXAXAXAXAXAXSXVXFXVXZXVXZXFXVXFXFXVXVXFXZXGXFXZXAXZXVXFXVXVXZXAXAXFXVXFXFXHXGXAXFXAXVXFXVXVXFXDXSXZXZXZXDXZXBXVXVXFXZXVXVXFXVXFXVXZXVXAXAXAXFXVXZXVXZXAXZXZXVXVXFXAXAXAXAXAXAXHXVXSXhXQ Q [ '.zXzXxXxXcXcXxXnXcXmXdXmXnXnXnXmXmXmXmXMXmXmXmXMXSXMXMXMXmXmXmXmXm.^ / m.HXVXVXZXFXFXVXFXZXVXZXVXZXVXAXAXVXAXAXFXZXFXVXZXFXAXAXZXZXVXVXZXFXVXZXVXZXAXFXAXAXAXSXGXZXVXFXAXAXZXVXAXZXAXAXVXVXVXAXAXVXVXZXVXFXZXVXFXAXAXVXVXSXGXHXVXFXZXFXVXAXAXFXVXZXVXFXVXAXAXAXZXFXAXZXFXFXAXAXAXAXAXAXAXAXAXSXSXZXFXVXZXFXVXFXVXVXVXFXAXAXVXFXVXAXFXZXFXVXFXZXFXVXAXAXVXAXAXAXAXZXFXVXZXZXFXAXAXVXZXVXFXAXAXVXVXFXFXFXFXFXFXVXSXZXDXZXCXhX/ Q ! F.~.(./././.^././.(.(.(.(.(.^.(.).~.(.(.(.(.(._._._._.(.|.|._._. XS ! ! m.BXFXFXFXVXFXDXDXDXZXVXAXZXVXAXZXVXVXAXZXVXVXZXFXVXZXVXVXAXAXAXAXAXSXZXVXVXZXFXVXZXVXVXZXVXZXVXHXDXDXGXZXFXVXZXVXZXVXZXAXFXVXZXVXZXVXVXAXAXAXAXAXAXAXDXZXVXZXVXVXFXFXVXVXVXZXFXFXZXVXZXVXZXVXFXAXAXFXGXAXAXAXAXAXVXVXZXVXZXVXFXFXVXVXFXFXZXVXVXFXVXZXFXAXVXFXVXFXFXZXZXFXVXVXFXAXVXFXAXAXVXAXAXVXAXFXAXFXZXVXFXVXFXFXVXAXFXAXVXFXAXAXZXGXZXFXZXDXfX~ / [ K.~.!.T.T.T.T.T.Y.T.P.L.L.L.L.L.P.L.L.P.T.P.T.U.T.T.U.T.U.P.P.L.L.L.U.U.U.U.L.U.U.L.L.P.L.U.L.U.U.L.U.P.L.P.L.P.P.U.L.P.L.L.L.D.L.S.L.L.H.A.L.", "N @.m m m m m m @.m m m m m B N N C B B N B N N N B C m C B Z N B V C N C A C N C B C C C B C A C Z Z C C C Z Z Z B D B C Z B D Z Z B D Z Z Z Z Z Z Z D Z Z Z Z Z Z Z L Z H Z Z H Z H H H Z J P H H H J H J J J H J H J H J Z P L L H P P P P P P P P ) P P ) ) I I I J ) ) ) ) I ) ) ) P ) P ) I I ) ) ) ) ) ) ) ) ) ) I ' ) _ ) I ) ) ) ) n.}.}.}. X|.}. X`.`. X X_._.|._.^.^.|.^.`.^.(.(.(.|.(.(.(./._.]._.(.(.(.(.(.`.^.`.(.^.|.(._._.|.|._.|._._.|.|.|.|.'.|..X|.|..X.X X.X.X.X'..X.X.X.X.X.X|..X|. X.X|.|.|.|.`.|.^.|.|.{.(.|._._._._. X_.}.|.}.[._._._.|.(.`.^.`.(.(.(.(.^.(.(./.(././.!.T./.(.R./.R.~.~.~.T.T.T.T.T.T.T.U.T.U.P.Y.U.T.L.L.P.L.L.P.L.L.L.L.H.G.L.S.L./ ~ ~ fXCXAXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXuXuXuXuX:X5XyXeXeXqXkX5.eX8.eXKX,XuXaXKXiX>XtXaXsXuXwXwXiXsXsX>XwXeXiXsXsXtXuXKXaXuXeXqXeXKXKXKXKX8.eXKXKX2XKXKXyXKXKXKXKXKXKXKXKXyXKXKXKXKXyXKXKXKXKXKXKXKXKXeXqXeXeXeXKXKXyXKXKXKXKXKXyXKXeXqXeX8.kXKX2XKXKXKXKXyXeX8.eXqX5.eX8.eX8.eX5.eXeXqXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXCXMX' / / e.Z.j.A.j.A.h.h.A.S.A.S.S.S.S.S.H.H.S.S.A.S.S.S.A.A.A.A.S.H.H.H.H.! ! / hXCXFXZXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXKXKX2X,Xv l wXn c b n n n x n c n c b n n c b n c b n n eXn x x n z n x ;Xb c :XuXb c n c x :XKXKXKXyXKXKXyXKXyXKXKXyXKX;Xc x - b v ;XeX5.8.eXkX2X2X8XyXKXKXyXKXpXO.o.oXo.7XO.hXO.o.+.hXO.o.o.hXO.o.oXo.hXO.7XO.hXO.7XO.hXo.oXo.hXO.7XO.hXo.oXo.ZXDXZXFXFXFXFXFXFXFXFXFXFXVXZXFXFXFXFXFXFXVXVXFXCX! ! ~ ].hXJXcXnXxXxXcXcXcXcXmXcXmXmXcXcXnXmXmXmXmXmXMXMXmXMXMXMXMXMXMXmX} / / dXZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXKXKX{ KXKXKXKXKXKXKXKXaXKXKXKXKXKXaXhXO.7XoX7XoX7XoX7XoXhXoX7XoXO.hXKXKXKXKXKXeXkXeXkX0XeXkXeXeXkX0XaXeXkXeXeXsXeXeXkXeXeXaXKXKXKX7XhXoXoXKXKXKXeXkXKXKXKXKXsX{ n { { b 8.{ { n n { { n n sXKXKXKXKXKXKXKXKXKXKXaXeXeXkXeXsXKXKXKXKXKXKXKXKXKXKXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXfX_ / S n.].(.(.(.(.(.(.(.(.(.(.`.(.(.(.^.`.(.{.(._.^.{.|._._._._.|._._.`.! ! / hXCXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXKXKXyXKXKXyXn KXKXKX,XKXKXKXyXKXKXyXKXKXyXKXKXeXeXKXKXKXn yXKX4XKXKXKXKXyXKXKXyXKXyXKXeXeXKXyXKXKXyXKX;XeX2X8.8.KXyXKXKXyXKXyX8.eXKXeXKXKXKX3XKXyXKXyXKXyXKXKXeX5.qX8.kXeXKXKXKXKXyXKXKXeXeXyXKXKX,XeX6.sXuXKXKXyXKXKXKXKXKXKXeX5.qX8.eXKXKXKX3XZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXVXFXZXAXZX~ ~ _ n.Y.^.^.T.Y.T.P.Y.L.L.L.L.L.L.L.L.L.L.L.L.Y.Y.T.T.T.U.P.P.U.L.U.P.L.U.L.U.U.P.Y.U.L.L.L.Y.K.J.L.L.L.L.U.L.I.L.P.P.L.U.P.L.L.L.L.S.H.L.H.H.H.L.", "m m N m N m m m N N m m N m N N B N B B B B N N B B V B C m N C N C N C N V C B B C B B C Z C C C C C Z Z Z C A C Z D Z Z D Z Z Z Z Z Z Z Z Z Z Z Z Z D Z Z Z L H Z S Z H H H Z Z H H H H H L Z H J H J H H H H L U H J H H L U L H J P P P P P P P P I P ) P P ) I I ) I ) L ) ) P ) S ) ) ) ) ) ) P ) I ) ) ) ) ) ) ) ) P ) ) ) ) ) ) ) I b.{.}.}.}.}.}.}.`.`._._. X_.{.{.|._.(.`.`.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(._.(.^.^.(.(.^.(.(.{.(._._.|._.|.|._.|._.|.|.|..X.X.X X.X.X.X.X.XdX.X.X.X.X.X.X.X|..X'.|.|.|.|.`._._._._._.|.{.|.|.(._._._._.}.}.}.}.^.|._._.`.`.(.^.`.|.(.(.(.(.!.(./.(.(./././.~.~.R./.~.T.T.~.T.T.T.T.T.T.T.T.T.T.T.L.T.L.U.U.Y.U.P.L.L.L.G.L.G.D.L.S./ S ~ CXFXAXFXAXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX*Xl b x @ *XwX:.,.>.>.;.>.>.,.5.0X:XsX2.>X5XwXsXeX>X9X<.:XsXeX>X9X9.:XsX0X>X5XpX8..wXyXyX,X,XyXyX,X>X2X2X,X,XX,XyXyX;Xv v v v ;XwX>.,.,.:.wXyXyXyXyXtXtX,X,X3X,X1.,.>.>.0X5X,X1X1X0XwX1X9.,.>.>.,.,.,.,.,.,.,.-.,.,.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXBX' S / T j.Z.W.A.A.S.A.A.S.A.S.S.H.G.S.H.S.S.H.G.S.S.A.S.S.A.A.H.H.H.H.F.! ! _ fXAXVXZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXv x g :XsXn d @ z h *Xk l z a z z d *Xk k p -Xv d l - z :Xv x n z - n z *X;XsX@ :X;Xa j k @ x l v :X1X2X2XyXX1XX.X.X.o.X.O.O.X.O.X.X.O...o.o.o.O.X.X.o.o.X.X.....X.X.O.O.X.X.X.X.o.o.....X.X.O.IXZXZXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXSXGXAXAX! ! P aX'.dXcXxXnXnXcXcXcXcXdXmXmXcXcXmXmXnXmXmXmXmXMXMXMXMXMXMXMXMXMXmX_ Z / BXFXFXZXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXZX,XX,X,XtXyX1X6X..X.O.O.O.X.O.O.O.X...O.O.X.X.6X,X,X2X3X4.>.,.>.>.-.,.>.,.>.>.>.>.>.,.,.,.,.>.,.-.>.,.;.wX2X3X . .X.6X1X2X5.>.,.wXwXyX1X;Xb :X;Xk p a h g g g + g k - n ;X;Xb :XyX3X2XyX2X1X:.,.,.,.,.wXuXyXyXyXwX0XyXyXyX,XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXVXFXHXZXBX' / ! n.!.~.^.(.(.(.(.(.(.(.(.`.^.|.^.^.[.(.(.|.[.`._.|._._._._.|.|. X].^ ! _ fXFXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX,X,X2XwX0X4Xx v wX5.5.5.5.0X2X,X2XwX5.0X1X1X1X5.,.4.0X2Xx 3XwX5.5.5.0X3XtX5.qX2X2X,X1XqX,.tXyXtXqX2XyXb eX0X,.<.tXyX,XX,X,X5.>.>.,.,.;.9XuXqXwX2X2X1X5.,.5.4XqX:X;X9.:.qX1XyX1X0X5.5.5.5.wX4X4.:.,.,.5.1X>X0XwXDXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXAXZXFXZXZX! I / F.].T.T.T.T.T.P.Y.P.U.P.L.L.D.L.L.L.L.U.U.P.T.U.U.U.T.T.U.U.L.L.P.P.L.U.L.P.P.L.U.L.L.L.K.U.L.L.U.U.U.I.U.L.U.L.P.U.L.P.P.L.S.L.H.H.S.G.L.H.H.", "N m m m m m m N m m m m N B N B B N B B B B Z m B B B B N N C N C N N C C B B B C B C C C C C C Z C Z C C Z Z B C Z Z C B Z Z Z Z Z Z B Z Z Z D Z F D Z F L Z H H Z H Z Z H Z H S Z H H H H H L H H H L H H H P H H H H P H P H L L L P L P L P P P P P P P P ) S ) I I ) ) ) ) ) I ) ) I ) ) ) I ) ) ) ) ) ) P ) ) ) ) ) ) ) ) P ) ) ) _ I [ ].}.}.}.}.}.}._. X X_._._._._._.|.(.|._.(.`.^.`.^.(.!.(.(.(.(.~.`.`.(.(.(.`.(.(.(.(.`.(.|.|.(.(.(.|._.{._._.{.|.|.|..X.X X.X.X.X.X'.dX.X.XdX.X.X.X.X.X|.|. X|.|.|.|.|.|.|.|.|._.{.|.|.`.`._._._. X|.}._.|.|._._._.`.(.(.`.^.(.(.(.(.(.(./.(././././.Y.~.~././.~.~.T.~.~.T.T.T.T.T.U.T.T.Y.T.L.L.U.T.P.P.P.P.P.A.L.G.L.A.P.S.S./ ! ! ZXFXVXDXFXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX:Xb n b l >X9X,.-.-.,.>.-.-.:.,.<.wXM.;X5X5X:XsX;X:X5XuXwXsX;X:X>X:XwXM.;X:X=XeX;X:XiX:.<.tX1X9X,.-.>.wXyXyX,X,X,X,X,X.SXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXCX} / ~ T b.e.A.A.A.S.A.S.S.A.S.S.S.S.G.H.H.H.S.S.G.S.S.H.S.H.A.S.H.H.H.Z.! / [ BXFXZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXDXn x z :Xz z p @ sXn g 5 n n d + eXn h v eX- *Xl x n z 5 v v z l g a x z *Xb z p -Xb d 9.0XO @ @ @ ;X3X>X4X2X,XtX,X,X,XyX-Xx z O >X:Xj ,.-.;.2.z | n -X-X=.s k 6XO.X.X.X.X.X.X.o.X.X.X.X.X.X.X.o.X.X.X.X.X.X.X...X.X.X.X.X.X.X.X.X.X.X...o.X.X.o.FXZXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXZXSX! ! ! Q.'.hXdXnXnXxXcXcXcXmXfXcXnXcXmXcXmXfXmXmXmXmXmXMXMXMXSXfXMXMXMXmX! ! / DXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXyXyX;Xl :XyX2X,X,X,X>X2X,X,X,X,X>X1X7Xo.O.O.X.X.O.O.X.X...X.o.o.+.5X,X2XyX9.>.-.-.>.,.,.wX5.>.-.>.,.>.>.qXwXwXwXwX5.>.-.,.,.tXuX7X . .o.3X2XwX>.;.0X4X2X1X:Xv ;XyXuX-X4.0Xd a 4.0Xs 4.0Xv @ a p w v -X;Xb b v :XwX:.,.>.5.1X2X,XyXyX:.,.4.3X2XyXFXFXFXFXFXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXZXZXBX[ / S [ ].~.~.(.(.`.(._._.(._.(._.^.^.`.^.^.(.^.(._._.^.|._._._.}.|.|.!.! S } BXHXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX3X,X0X;.;.5.8.v 2.:.:.;.-.<.2X2X4X5.>.-.5.0X4X5.,.,.:.2Xv :XqX,.,.>.>.,XqX,.>.tX2X,X2X0X<.,X2X<.>.5.1X:X;X9.wXuX,XXyXwX,.>.<.wX2X.<.0X1X,X,.5.4X1X2X:.,.5.4X<.2.b 4X1X1X0X5.5.-.,.,.;.,.4.4X4XyX2XyX2X,X1X<.5.VXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXZXZXVXZX~ ~ / F.].Y.T.T.T.T.Y.P.P.L.L.S.L.S.U.L.L.L.U.P.P.Y.U.T.T.U.P.P.L.L.P.L.L.L.L.P.P.P.I.U.L.I.U.L.U.L.U.L.L.U.L.U.L.I.U.P.H.U.L.L.L.L.H.H.H.H.H.L.H.H.", "m m m m m m N m N m N m N N N N C N B B B B B B B N C B N A N C C V C N N C B C B C B C C C C C C Z C C Z C Z D Z C Z Z Z D Z Z Z Z Z D Z Z D Z Z Z D D D D Z D Z Z Z H Z H H Z L H H H H H L L J H H H H U H H P H H P H H H L J J P S P P P P P ) ) P / ) P P I I I ) L ) J ) I ) ) ) P ) P ) ) ) I ) ) P ) ) I ) ) P ) ) P ) ) ) ) ! _ _ [ !.}.}.}.}. X}.}._._._._._._.{._._.`.(.|.^.(.(.^.^.(.(.(.(.(.(.(.(.(.(.(.(.^.(.(.(.(.^._.(._.{.|.`.{.(._.|.|.|.|.|.|.|..X|.|..X.X.X.X.X XdX@XdX.XdX.X.X.X'..X.X.X'.|.|.`.`.|._.|._._.`.(.`. X_._._._.|.|._.|.`.`._.`.(.`.|.(.`.^.`.`.^.(.(.(.^.(././.(.~.~.~.T.T.~.T.~.T.~.~.T.~.T.T.Y.T.U.T.U.T.Y.P.Y.P.P.P.L.U.P.L.H.D.L.S.S.~ S S FXVXVXZXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXtXsXsX;Xg >X1X4.-.-.,.>.-.-.-.>.<.>Xz g :XuX:Xg g :X>X:X>Xg k *X5X>X>Xk g :X5Xj g *XuXtX,X,X2XwX:.:.<.tXyXtX,X,X,X,X1X0X>.4.qX2X.1.yX1X1X:.,.,.5.1X2XyXqX;.,.5.yXyXyXyX1X0X,.:.DXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXBX' ~ ~ T e.j.A.Z.A.A.A.S.A.A.A.S.S.H.G.H.H.H.H.S.S.S.G.A.G.S.H.H.H.D.D.F.S ! ' BXVXZXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXl z g v & @ a z l g @ @ x x h - x l p + :Xa -Xv z x g h g l - @ 5 a - d l z @ d z l a 2.*Xa n n @ v p -X- -XyX,XX5XyX:X;Xk O p @ k :.>.,.b - @.Q h x 8.-Xv O...X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.X.X.X.FXZXDXFXFXFXFXFXFXFXFXFXFXZXFXGXZXFXFXFXFXFXDXZXAX! Q S m.].dXxXxXnXxXcXcXmXdXcXcXcXcXmXmXmXmXmXmXmXNXMXMXMXmXmXNXMXMXMXMX~ / ! DXZXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXSXyXyX1Xx >XyX,X,X,X,X,X2X,X,X,X,X>XtX6X..o.o.X.o.o.o.X.X.X.X.O.+.2XtX,X,X4.>.-.-.;.0XtX4.qX4.-.-.:.wX5.:.tXyXyXyX4X9.>.-.:.wX3X6X .o...+.3X1X4.>.0X1X,X1X:Xl b :XyXyXk 5.0Xp a 2.0Xg 2.0Xp h 4.0Xp z $ + b :Xb x ;Xb 0XwX1X2X,XyXyX,X0X:.>.4..-.5.:.:.1X5.5.b :X0X:.-.-.<.1XqX,.;.:X2X,X,X,X2X.5.n x >.4.,X,X1XtXqXtX,X,XyXyX4XyXtX<.0X4X4X1X1X2X2XtX5.;.-.;.0X2X1X1XtX:.0X4X0X4.;.,.0X1X1X.,.>.>.>.4.>X<.:.5.wXyXyXyX,X1XqX9.2XFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXFXDXFXAXAX~ ~ I b.F.Y.T.T.T.P.P.Y.P.P.S.L.L.L.G.L.L.L.U.P.P.P.U.U.T.U.T.T.P.P.P.L.L.L.L.P.P.P.L.I.L.L.L.L.U.L.R.L.U.U.I.L.U.L.L.L.P.L.P.L.P.L.L.H.L.H.H.G.G.L.", "m N m N N m m N N N N N N N N m N B B B B B B B C N m A C N A N V B V C C N C B C B C C C C C D D B C C C C Z Z Z B Z Z B Z Z Z Z Z D D A Z D D F D Z D H H Z H H Z H Z H D H L Z L Z L L H H J H J H H H H H H P H H H L H H H J D P J L P S P P P I I U P ) P I I I I ) I ) P ) K ) ) ) ) ) ) ) ) ) ) I ) I ) ) ) ) ) ) I ) ) ) ) ) ) ) I [ Y._.}._.}.}. X X_._._._._._._.^.|.`.(.(.(.(.(.(.`.(.^.(.(.(.(.(.(.(.^.`.].(.(.(.(.(.`.^.(.(.|.`.(.^.^._.^._.}.}.}.|..X.X.X X.X.X X.X.X.X@X@X.XdX.X.X.X.X.X.X.X.X|.|.|.|.|._.{._._.`.|._._._._._. X_.|.|.|._.|._.`.`.`.(.|._.^.(.(.^.(.(.(.(././././.~.~.Y.~.~.T.~.~.~.T.~.T.T.T.T.T.T.T.T.T.U.U.T.Y.T.T.P.L.L.L.L.G.L.G.L.L.D.~ ~ ~ ZXAXAXDXAXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXHX:Xn sXsXz >X5X1X9.-.-.-.-.-.-.>.<.*Xg =X*X:XuX*X*X>XwX9X5X5X*Xv b b v k k b k -Xk v :XuX,X,X>X,XtXuX,X2X,X,X,X,X,X,X,XwX>.>.>.5.2X2X,XyX1XyXyX2X;X4 7 s 4 ;XuX2X4X.9.tX2X0X5.qXwX2X2X9.;.<.5.5.;.:.:.qX1X2X2X4.,.5.3XyXyX,X,X1X<.>.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXCX' / ~ Y e.j.Z.A.h.A.h.A.A.A.S.A.H.S.H.H.H.S.G.H.S.Z.G.G.H.H.H.S.H.L.H.F.Q / ' BXZXZXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFX-Xg h z 4 x 5 w @ a + z @ a a g 5 @ z @ @ h x x + a *Xk z + b h j 0X;Xk v x z ;X.2.a + a + h 8.x w O.o.X.X.O.o.X.X.o.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXFX! ! S m.].xXJXxXcXcXcXxXnXcXcXmXnXnXnXnXmXmXmXmXmXMXmXMXSXmXMXMXMXMXMXmX~ ~ ! CXDXZXDXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXyX3XXyX>X9.-.-.;.,.1.2X4XqX,.>.-.;.wX4X,XtXyX1X,X1XqX>.-.:.0XuX8X..X.X.X.8X2XwX:.0X4X>X2X:Xl x 3X>X,X2X:X-X-Xv @ a @ @ a d z h 2.0Xp :X> + v -Xk a z :Xl ;X;X;X3X1X,X,X2XwX:.,.0X1XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXVXCX[ ! Q [ n.Q.(.(.(._._.|.^._.|.}.|.}.}._._._.|._._._._._.}.}.}.}._. X_.!.Q / ' BXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX3X1X4.-.-.-.<.v k 2.*X4.,.4.4X4.>.0X4X4.,.-.,.-.;.5.<.:.v :X1X1X9X<.,X2X<.>.;.tX2X1X1X4X4X0X<.tXqX,.,.b b :.1.tXtX9X9.:.>X2X,X2XtX5.qX,X1X2X5.5.5.5.wX2XwX>.-.>.5.1X,X1X0X9.5.4X9X>.>.,.5.:Xk -Xs v <.,.>.;.-.:.:.:.5.4X<.-.,.<.wX4X1X1X0X;.4.1XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXVXFXFXAXDX~ / ! b.F.U.T.T.T.T.U.P.L.L.L.L.L.L.U.L.L.L.P.T.P.T.U.U.T.U.U.P.P.P.L.L.L.D.L.L.L.U.U.K.H.L.U.L.I.L.U.Y.L.I.L.U.Y.U.L.L.L.P.P.L.L.S.L.L.H.H.G.L.G.G.", "N m N m m m m N m N N C N N C C N B B B B B B B N C N N N C C N C N C N N C V B B C C B C B C C C C Z Z A Z D B Z C Z D D Z Z Z Z Z D Z D D D F D Z D D Z H L Z Z L D Z H H Z H L Z Z H H H H H H H H H H J H H L Z Z H H H H H J J H J P P I P P L I I ) P I I I I I ) S I ) ) I ) ) ) ) P J ) P ) I P ) I P ) I ) I ) ) ) P ) ) ) P ) ) ) [ n.[._. X}._.}._._._._._._._._.|.|.`.(.`.`.(.(.(.(.(.`.(.(.(.(.(.(.(.(.(.(.).(.(.(.(.(.(.`.(.^./.(.|.|.(.|._.|.}.|.|.|..X|..X.X.X X'.zXdXdX'.zXdX'.dX.X.X.X.X|..X.X X|.|.|.|.|.|.|. X]._._._._._._._.|.|. X|._.|.|._.|._._.`.(.(.(.(.(.(.(./.(.(././.~./.~.T.T.~.~.~.T.T.~.~.T.~.T.T.T.T.~.T.T.T.U.T.T.U.P.P.P.L.S.L.L.L.H.H.H.~ ! ! ZXAXZXZXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHXHXwX9XwX:Xk 5X>X1X4.-.-.-.-.-.-.,.<.:Xn z b :XuX:Xv :X5.>.9X1X:X:X:X:X:X.>.>.-.,.0X1X,.>.>.0X2X,XXyX,X,X2XtX0X0XwX2X,X2X.:.wXwXtX2X.-.;.0XwX1X2XyX>X,X2X0X,.:.0X4X>X7X .X.X.X.X2XwX2X2X:X;Xz v >XwXwX1X2X>XyX4X:X-X;X;X:X;X;X;X-X*X-Xz :X:Xv b @ 6X6Xs k a z v l :XyX,X,X,X1XwXwX3XyXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXFXFXFXBX} / / ` n.].!.).'._._._._.|.|.}.}.}.|._.|.|._.}._._._._._.}.}.}.}._. X].Q S ' BXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX1X9.-.-.>.<.v k j -X2.:.2X4X5.:.9.4X5.>.-.:.:.:.>.-.9.v x :X1X1X1XtX<.>.-.:.tXtX5.5.5.qX4X2X1X0X>.:.x -XuXtX1XwX,.,.0X1X,X2X2XwX>.>.wX1XtX;.;.,.:.wX1XtX>.-.:.wX1X,X5.,.>.qX,X;.-.-.,.qX-X6X3Xk v uX9.:.:.5.2X2XwX9.5.;.-.-.,.:.5.wX4X<.,.9.1XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXAXFXFXAXAX~ _ / b.n.L.T.T.T.P.U.L.L.L.L.L.S.L.A.U.H.L.U.P.P.P.U.T.U.U.U.U.P.P.P.U.U.P.L.L.P.L.L.L.U.L.L.L.U.U.L.L.L.U.L.L.K.L.U.P.L.L.P.L.L.L.L.H.H.H.G.D.D.A.", "m N m m m m m N N m N C N C Z m C N B B B B N B B B N C N C N A A M C N C V B C C B C B A Z Z C C C Z C C Z C Z G C C Z Z Z Z G Z F D A D A D D Z Z D Z H Z D Z F S H H Z H D H Z Z J L H H H H H H U G H H H H H H L F H Z H P J J K U L P P P P U I I I I I I ) I I I ) ) ) I ) ) P ) I ) ) P ) P I ) ) I ) I ) I ) I I ) ) ) ) I I ) ) ) ) b._._._.|._.}._._._._._._._.|.(.(.`._._.(.(.(.(.(.(.`.`.(.(.(.(.(.`.(.(.(._.(.(.(.(.(.(.^.(.|.^.`.^.`.[._.}.}.}. X|..X|..X X.X.X.X.XdX'..XdX'.dXdX.X.X.X.X.X.X.X|.|. X'.|.|.|._.|._._._._.^._. X_.(.`.`.|.|.|.|.|. X[.|._.`.^.^.`.(.(.(.(.(.(././.~.(.~.~.~.~.~.T.].~.~.T.~.T.T.~.T.~.T.T.T.T.T.T.Y.T.P.Y.P.P.L.L.L.L.L.H.H.S.~ ! ! ZXHXZXZXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHXDX*X>X=X5X5X5X2X4X4.>.-.-.-.;.:.4.XqXqX9XwXn 2.,.;.tX1XuX5X2.7 7 2.< =.=.< ;XuX,X,X,X,X,XwX:.:.-.-.4.,X,XyX;X@ z o p @ z z @ a z o + -XtX;.;.-.-.-.9.5.;.;.qX1X,X,X2X5.5.2X2X1X2X,X,X,X,X,X2X2X,X,XyX,X,X4X1.,.-.:.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXBX[ ! ! G e.j.Z.h.J.G.A.A.A.H.S.S.H.S.G.H.H.H.H.H.H.H.H.H.H.S.G.L.S.L.L.F.^ / ' fXDXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXZXZXZXsXn g z 4 2.w a l l p @ eXb z d 8.n a l n p -Xv x z a :Xb 4 q.z =.:.c +./ a g | eXwXe 4 O 5 a v + - z a p v x eXlX2.-XuXuX:Xl z @ k :X1X3XuX:X- S @., a sXkXd 7X+.+.+.+.+.+.+.7X+.X.o.X.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXZXVXQ Q Q M.m.'.dXMXcXcXnXxXxXnXmXdXvXcXnXmXmXMXMXnXmXmXMXMXMXMXMXSXSXMXMXSX~ ! S ZXHXZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXZXFXyX.9.1X,X2X,X2X7X .X.X.X.X.X.X.o.X.+.,X,X2X,XtXwXwXtX2X2X2X,X2X1XqX>.-.-.>.;.0X4X,X,X2X,X,XwXwX2X>X6XX.+.X. .X.3XtX2X2X1X:Xl x ;X:XwX>.>.5.4X2X,X2X1XuX1X3X8X3XyX5XtX>XuX:Xk p p v a :X3Xs -Xn v .-.>.4.v v O h k 0X4X4X2XX,Xx g *Xk :X0X:.:.:.<.2XqX,.,.>.>.5.1X1XqX,.,.b -XyXyXtX9.;.<.;Xb x v b ;X<.wX4X1X4XwX,.qX1X>X2XwX;.>.5.4X2XtX<.;.,.qX,X:.,.-.,.qX:X-X8Xa l :X:X.-.-.-.-.,.,.<.5.:.>.5.1XZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXAXZXAXAXAXS ~ ) c.F.].!.P.Y.Y.U.P.L.L.L.D.L.L.L.S.L.L.L.P.P.T.U.U.T.U.U.U.L.L.P.P.P.P.P.U.P.P.L.Y.L.U.L.L.I.L.I.K.U.U.U.Y.U.L.L.L.Y.L.L.S.P.S.H.H.H.H.S.S.D.S.", "m m N m m m C m m C m m N N N B N N B B B B B B B B N N A N N V C N N C V B B C B V C C C C C C C Z C C Z C Z A C C Z Z F Z Z Z Z D Z D D D D H D D D D Z D H L J Z L L H H L Z L L Z L H H H Z H Z H H H Z H H H H L L H L D G H J L H P L L P P ( I I I I I ( I I I ) P ) ) ) K P ) I ) P ) ) ) ) ) P ) ) I ) ) I I ) I P P ) _ P ) I ) ) P b.].|._._._.}. X_._._._._.^.(.(.(.^.(.(.(._.(.(.(.^.(.(.].(.(.`.(.(.(.(.(.(.(.(.(.(.(.(.`.^.`.(.(.(.(.}.}.}.}.}.|.|. X|.|. X.X'.'.dX'..XdXdXdX'.dXdX.X.XdX@X.X.X.X.X.X|.'.|.|._._._._._._._. X_._.`.`.`.`.`.|.`.|._._.|._.|.(.(.].(.(.~./././.(./.~.(.~.~.~.T.~.T.U.~.~.~.T.T.~.T.~.T.~.T.~.~.T.T.T.Y.Y.L.U.P.L.P.L.D.G.L.S.L.~ ~ ! ZXZXZXFXFXAXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXZXx g k :X>Xk v k 9.-.-.-.9.z v v :Xa O *Xs b n g d 4.>.-.-.-.5.9.,.,.,.,.b 2.,.;.,X2.6 2.2 2 2 =.=.2 =.=.;XyX,X,X,X,X,X2XtX2X0X:.:.tX2X1X;Xh :X/ - a 8.8.5 a :X/ $ :XwX,.-.-.-.-.-.>.>.5.4XX2X>X2XyX2X2X>XyX2X,X,X,X2X,X5.>.-.>.>.;.0X2X,X,X,X,X1X1X>X>X6X . .X.X.X.3X2X,X>X:Xv v .-.4.2X:Xn k 5.k ;X5.5.0X1X2X1X4.>.<.2X2X,X2X,X1X4Xv g 4.j -X,XyX,X.;.-.-.-.wX1XwX,.1.b ;X5XyX>Xb k k z @ s h @ ;XyXtXqX5.5.4.;.wX1X>X2XwX;.>.0X4X-Xv b g 1.0X,X;.-.-.>.<.2.-X-X-Xv *Xg ;Xk .5.1X,XZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXFXFXAXVXZX~ ! / b.n.L.Y.T.Y.L.L.Y.L.L.H.L.F.L.L.U.D.L.L.P.P.T.T.T.U.U.U.L.L.L.P.P.U.U.D.S.P.P.L.Y.L.L.L.U.L.U.L.Y.L.L.U.L.L.L.L.L.U.L.L.L.S.H.L.G.h.S.S.A.G.A.", "N N m N m m N N B N B B B B m N B B B B B B N N C C C N C C N N A N A N N A N N C C C C C C C Z C C D Z C Z C C Z Z C Z Z Z D Z D Z Z L Z D D D Z Z Z Z Z L D D P Z Z L H H Z H H H Z H Z L H L H H L Z L Z L J H H H H H H H H H H H J J J J P P P P U I I I ) ) P P I I ) L _ ) ) ) ) J ) ) ) P I ) I I I I ) ) ) J I J ) ) P P ) ) ) ) I I _ ~.|.[.|.`.|._.`.{.(.|.`._.(.(.^.^.(.^.`.(.(.(.(.`.(.(.(.(.(.`.(.^.(.(.(.|.(.|.{.|.(.(.(.(.|.(.^.|.`._._.|.}.}.}.|.|._.|.|.|..X.X.X@X.X.X.XzX.XzXdX.XdXdX'.'..X.X.X.X`.|.|.|._.}._._._._._._.|.|._.|._.|.|._.|._.`.(._.(.(.(.(.(.(.^././././././././.~.!.~.~.~.~.~.I.~.T.~.T.~.T.Y.~.~.~.T.T.T.T.T.T.T.T.Y.P.L.L.L.L.L.L.L.L.~ ~ ^ VXFXFXZXAXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXz sXc h :Xv yX;X4.,.:.9.:Xb n d *XsX{ g p x x @ p 2.;.;.-.>.;.:X5.>.-.:.b 8.;.<.1X7 2 2 =.=.2 2 2 2 =.2 =.;X1XyX,X,X2X>X1X2X2XtXtXyX2X>X;Xw n ;X@ 5 x 2.a z n ;Xa b tX;.-.-.-.-.-.-.-.9. { iX} 1X+.+.X.o.+.X.X. .X.X.X.X.X.o.o.X.X.X.X.X.X.X.X.X.X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXZXVX/ ! / M.Q.hXmXvXnXxXcXcXxXcXcXnXnXmXnXnXmXmXmXMXMXmXMXMXmXNXMXMXmXmXMXmX/ ! ! ZXFXHXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX3XtX,X;Xl >X1X1XtXwX9.,.,.<.2X,X,X,XtX8X..X.X.X.X.X.X.6X6X3X8X3X:X:X6X8XX>X1XyXyXwXwXwX5.,.:.XtX6XO.X.X.X. .X.X-X^ 6X3X6X.>.wX1X:X6Xo...o.X.X. . .X. . .6X;X;X;Xz - sXgXg j -X:X>XwX2XuX2X,X,X,XyX>X1X,XCXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXBX[ ! Q _ b.!.].^.`.|.`.|.`.|.'.|. X|.|.|.|.|. X{.|.|._.|.|.{. X|.|.}. X[.Q ! ' fXHXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHXeX5.1.,.<.1XyX1Xv k 9X-X2.,.,.4.4X1X1XqX:.9.4XyXyX1X>X2X1Xb k b k :X5X>X2X2X,X2X0X:.:.:.:.<.,X1X1X1X1X;X;XuXyX>X-XeXv o k 1XKXz ;X1XX2X,X<.:.wX2X*X8.n j 1X1X2X<.:.;.:.:.;.0X4X:Xx g n 8.g 2X,X2X2X9.:.5.X1X4X<.<.1X2X,XAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXDXFXAXAXZXAXAXZX~ ) ~ [ n.L.T.XXP.U.P.P.L.L.L.F.H.U.S.U.D.U.P.P.P.P.T.U.Y.U.U.Y.P.L.P.P.S.L.P.L.L.L.L.S.Y.L.U.H.L.L.L.L.L.U.L.U.L.L.L.L.L.L.L.S.H.S.H.H.S.A.A.A.A.h.", "m m m N N N N N N N B B B B B B B B B B B B m Z C N C N C N N C C N N C C N C C C B C C C C C C C C C C Z C C Z Z Z Z Z Z C D F Z Z Z Z D D D Z S H Z H H D G D Z L Z Z Z Z H H Z H H Z H D L L L H L Z Z L Z L H H H H H H H H H I H J J J H P P J P P I J I I ) P ) ) I I ) I ) L _ L ) ) S ) P ) I I I ) ) I ) J ) ) J ) ) ) ) P ) ) P I I [ ].(._.(._._._.(.(._.^.{.(._.(.`.(.(.(.(.`.(.(.^.^.(.(.(.(.(.(.(.(.(.(.(.(.(.(.^.(.(.(.`.(.^.(.(.`.(.^.|._.|.}.}.|.|.|._.|.'..X.XdX X.X.X.X.X.X.XdXdXdX'.dX@X.X.X|.|.|.|.|._.}._._.|._._._._.^._._._.|._.^._._.|.`.(._._.(._.^.(.(.^.^./././././././.~.!.~.T.Y.~.T.~.~.T.T.~.~.~.T.!.T.~.~.T.T.T.T.T.T.P.P.U.L.K.L.U.A.H.L.S.~ ! ^ ZXAXFXDXAXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXDXz l d a *X-XKXk z 2XtXyX2Xv x p v b d p p -X-X*Xp :X5.,.-.,.9.4X5.,.-.:.x X>X2.2 =.2 2 2 =.=.2 2 2 2 2.,XXyX4X3XuXwXwXX>X>X2X>X8X..X.X.X.X.X. .8X3X8X8Xb | ..o. .o.X.6X3X9X,.wX3Xo.O.o.X.X.X.X.X.X.X.o.o. . .f k c d aXb g 1.wX,XtX;.0X1X,X,X,X,X2X2XuXyXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXFXVXFXBX{ ! Q _ n.F.]._.{._.|.|.|.|.|..X|.'.|. X|.|.|.|.|.|._._.|.{. X}._.}.}.!.! / [ BXZXGXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZX9.<.4X<.<.1X2XX2X2X2X,X;Xz b b b b v v b g v v b b a -Xl + d :XXp s *Xl @ ;Xv :X@ + O a - n n a v -Xk p :X<.>.:.;X-X-X2.;.>.:.b j 0X:X0X2 2 2 2 =.2 2 2 2 2 =.2 < -X;Xk k k k b z j z p 4 < 2 2 3 7 j v g 3 w 5 p p z a b ,.-.>.5..5.4X,X,X,X1X0X-.,.5.4XwXqX5.:.>.4.1X,X,XFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXMX} S S L e.e.j.A.G.A.A.G.A.A.G.H.S.A.H.A.H.H.H.L.L.L.L.L.S.L.L.L.D.Z.L.Z.Q ! _ BXZXAXFXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXx l g z l x p z z z p - x z p - l l p @ x d :Xb a @ - z :Xb 9.0Xa l 7 sX7 @ k k 5.0X7 eXk 5 g :Xb -Xv c eXu z n v + l n x + n l + d ;X4Xb l x z z d a v v v p @ @ a @ @ @ a z 5 w 4 @ 4.5.-X6X+.+. .X.O. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVX! S / c.M.'.zXJXnXxXnXnXnXJXcXcXcXmXmXmXMXnXmXmXmXMXMXmXMXMXMXMXmXmXmXmX~ ~ Q ZXFXVXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX,X,X,X2X;Xx XtXtX5X7X .X.X.X.X.X.X.X.X.O.X.X.X.X.X.X.X. . . .o.+.8X:X:X6X:X3X8X8X3X8X:XXuX6X..X.X.X.X.X.X.X.X.X.X.X.X...} } } v v v ;XtX2X1X>X5.4.uX,X,X>X>XyXtX3X8XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXAXAXBX' / Q ' b.].]._.}.}.|.|.|.|.|.|. X'. X X|.|.|._. X|._.|. X_.|.}.}.|. X].! ! _ BXZXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFX9.;.5.:.;.wX>X,X:X:X:X:X:X;X:X;X:Xx p g p @ 4 h + w 4 O @ h z p d - @ p :X>X>X2X4Xk a a z + 5 w l h + z a w k -X+ a x @ p s O + w z a + z 7 2 2 2 2 2 < z z a k ;X@ O p O - g s a z - p w a a a z p - O p O v ,X,X,X2X2X,X.>.9.-Xj k v 4.>.:.v 7 eXkX8.2 2 =.2 2 2 =.2 =.2 2 2 7 gXsX+ @ n b p 3 4.x p 7 2 2 =.2 =.2 j l q.=X- p -X} - b <.;.:.0X1XX,X2X2X<.>.;.<.tX2X,X1X0X;.-.,.5.4X<.,.>.-.-.4.4X,X,XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXCX' / ! U T j.n.G.Z.h.G.A.G.A.A.A.S.S.A.H.S.H.H.S.S.H.L.L.L.S.L.P.L.S.L.Z.! / ' BXVXFXAXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXVX- + # z @ @ g g 5 @ 5 g a h h g h h h w @ @ v l l x -Xv 3Xk 9X*Xg l k Xq.k s s 2.k :X,X,X1X4.:.wX6XO. .X.X.X.X.X.X.X. .o.X.X.X.X.X.X.X.o.X.X.O.o.O...O. .o.O.X...O.X... .X.X.o.X.X.X.X.X. . .O.+.O./ ! O.o.X.X.X.X.o.X.6X6X .o.X.X.X.X.X.X.X.X.X.X.X.X.X.+.| | / O.O.o.7XX,X3X8X:X6X .X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXGXAXVXBX[ / Q ` n.].`.}.{.}.}.|.|.|.|.|.|.|.|. X|.|.|.|.|._.|._.|.|.|. X}.}. X]./ / ' BXZXZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSX5.;.,.;.:.4.1X,X3X2X2XtX2XuX,X1X>Xv b 9.;X@ =.8.x @ l x b - k f +.! a # O :X1XXyX.qX1X2X0X;.-.-.>.<.qX:.;.;.:.,.5.1X,X2XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXCX{ ~ S K Y e.G.h.G.A.A.A.A.A.A.A.S.S.S.H.H.H.S.U.L.H.L.L.S.L.L.L.H.L.L.F.Q / ' fXDXVXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXHXn eX@ w g g o g :X:X:Xg z z *X*X;Xz k p l ;Xz z @ h :Xb l z a w a l v b ;Xx - v z h a @ @ w d z p v / @.@.@.b *X*Xb @ + + p p + p x v :X:X;X@ p @ O s k a a h k p W @.a # # O -XuXk # + a :Xv @ l l g p z z x a @ a :X;Xa a :XKXz a wXeXs h *X-Xv v z z *Xz z l a @ a 2.0Xp v k g k g a =X6Xd @ v v + a j 9Xp v 1X>X2XX1X<.,.5.4X<.>.>.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXAXAXZXFXAXZX~ ~ S b.F.F.Y.T.Y.U.P.P.P.L.H.S.U.S.U.L.L.L.U.U.T.U.T.P.T.P.P.L.L.P.L.S.I.S.D.L.F.L.S.L.U.L.S.L.L.Y.A.L.L.U.L.L.L.L.L.H.H.H.H.S.H.A.A.A.A.A.g.h.h.k.", "m N m N N N N N B N B N B B B B B B B B B N C N C N C N N A C N B B C N C C B C N C C C C A C Z C C C D C B Z Z Z D B Z Z Z D D Z Z Z Z Z Z Z Z Z Z D D D D Z D Z Z D D D Z Z D Z H Z Z D D D D Z L Z L H J Z L F H H H F D H S H Z H H H H H P L P J P I J P I P ) ) P P P ) P P ) ) ) ) J ) ) ) ) U P P ) P ) I ) I I ) I ) I ) I ) I I I I I [ !.(.(.^.`.(.(.(.(.`.^.(.`.(.`.^.(.(.(.(.(.(._.(.(.`.(.(.|.(.(._.(._.(.|._._.|.`.(.^.|.^.`.|._.(.`.}.{.`._._._.|._.|. X|.|.|.'..X|.|..X.X X|..X.X X.X.X|.|.|.|.'.`.'._._.|.{.|.}.}._._._._._.`.(.^.{.(.^.|.(.|.(.(.(.(.(.(.(./.(.(./././.~.R.!.T.T.T.~.~.T./.T.~.~.~.T.T.~.I.~.T.T.T.T.T.T.P.T.T.P.P.T.T.P.P.P.L.P.U.D.L.H.~ Q Q ZXZXZXFXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX;X@ s p 4 + s + z + O + v a p p h 5 e - a p s p z -Xb b ;Xv v v g b b b x 7 eXeXj 2 2 =.2 2 2 =.7 g < 4 < 7 z 2.4 h @ + p h - h k 7 2 =.2 2 2 =.3 a @ @ h g p d w ;X1X4X:X2.j 2.2.7 =.7 j 2.7 2.j 2.1X<.5.2X,X2X:.-.>.4.X;X;XyXuX;Xz :X/ + 4.qXk a 4.qXs n ;Xp l 5 5 w 3 w z 7 7 4 n a @ b l * 8.g @. . .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXFXS ~ ~ M.'.hXJXmXnXnXnXnXnXcXmXmXnXmXmXcXnXnXnXnXmXmXMXmXmXMXmXmXMXnXnXJX~ ~ Q SXVXZXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX3XtX2X>X-X-Xp 5 4 l 4 k v b ;X;X;X-X-Xj :XX>X2X2Xv @ a l g 5 @ 5 g 5 @ 4 g 5 a - @ g g @ + l n a a g a a 5 h a @ @ + g a + z g h @ @ h g @ @ a g - d @ w *X;X:Xn v v =Xg l @ h g h d a - g v v l h g a d z z a d g g g a 5 k b -X-X,X,X,X,X,X,X<.<.4XwX:.-.-.-.AXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXSXAXZXZXFXFX~ _ / b.n.].~.Y.Y.U.L.F.L.L.U.Y.S.L.L.L.L.L.L.U.T.T.T.T.T.P.L.L.P.L.L.U.L.L.L.L.H.L.S.L.S.U.H.L.H.L.U.L.L.L.S.L.L.G.G.L.H.H.H.A.A.A.A.g.j.G.h.h.h.h.", "B m N N B N N B B Z B B N B B N C B N N B B m N C N C Z C N N A B A N C N Z C B C N N N C C C C C D Z Z Z Z Z F Z D Z Z Z D C C Z Z Z D D Z Z Z Z Z Z Z Z D Z D D D Z D Z Z Z Z Z Z H Z D D D D L Z Z Z Z Z H D D H H H H H H F H H H H H H H H P P P P P P ) P P P I I ) P P ) ) ) ) ) ) ) J S P ) ) P P ) P ) ) P I I P ) I ) ) I I I I _ I I Y Q.`.~.(.[.(.(.(.(.(.{.{.(.^.(.(.(.^.`.(._._.(.`.`.^.(.(.`.^.|.|.^._._._._.}.{./.|.|.^._.|._.^.(._._._._._._.`._.|.'._.|.|.|. X|.@X|.|. X|.|.'.|..X'.|.|.|. X|._.|.|.`._.|.|.|.}.}.}._._._._. X(.^.(.(.(.(.(.^.(.(.(.(.(.(.(.(./.(././.~.~.!.!.T.T.T.T.T.~.~.T.T.~.T.~.T.~.~.~.T.T.T.T.T.T.T.U.T.T.P.P.P.P.P.P.L.L.L.L.L.L.~ ! S ZXFXVXZXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXv @ g @ p k p :X:Xg k p @ + k + @ @ v x z 4 v a z v p p - a g g p 5 z a z < O O < 4 4 O 4 < < 7 a @ z k 7 eXkX9Xg p h z @ a p g p 7 2 2 2 =.2 =.3 p z z g 5 < @ + b *Xk < 2 2 2 =.2 2 =.2 2 =.=.2 =.1XyX2X2X,X2X<.:.,.9X4X<.5.4X1X1XwXtX4XwX:.5.DXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXCX} ~ ~ L e.e.Z.W.A.A.A.A.A.A.S.S.S.G.S.H.H.Z.L.L.L.L.L.L.L.L.L.L.S.U.L.Z.! / ' BXDXFXAXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX@ + =Xh 3 8.< z :X;Xv z x z p w v z :X@ @ :Xv x g a :Xv x n z *Xv h 9.0Xp v b v z h h :X*X:X> + :X;Xx v h l w h z w z x v + v b -Xk k n b v l :X;XO j 0Xh z j 0Xp z h d g @ + O z O @ z + z @ a z l 7 u ;Xk @...X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXZX/ / Q M.M.hXJXvXMXnXMXnXmXmXmXcXMXnXmXJXcXMXcXmXmXmXmXmXMXmXmXmXnXnXmXcX~ ! Q ZXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXyX,X,XyX>Xj 5.k b l ;Xa h @ @ s a a j 9.-X:X>Xj 5.k | ..X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.O./ / O.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.O. . .} } } / X.X.X.X.X.o. .X.X.X.X.X.X.X...7X:XKXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXCXDXZXZXBX[ Q Q ` F.Q.{.(.(. X`.|._._.{.|.|.|.|.|.}.}.|.|. X X|. X{. X[.|. X}. X!.! S [ BXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXwXqXwX4X4.4.,X,X,X,X,X,X,X,X2X>X1Xz k *X=Xg 5 g g g z p g h h p v @ a + g 4 @ a d + a a z h a x { M.c g p s g h h k k h h z k *Xd g k + z *XeXsXsXv -X:Xz w g z 5 a g z a h h k @ a a # O @ -X# O + g g k a h # O :X4XyX>X } -Xp z gXsXp k BXsX4 sXkX2.j k -Xn z + p k g 7 =.2 2 2 2 =.< s ;Xb z 5 8.=Xa v k 9X4 =.2 =.2 2 2 2 =.2 2 2 2 3 1X2XtX,X,X,X,XtXwX,X1X,X,X1XwXqX-.<.5.5.wX2XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXmX' ! ~ K T Z.A.h.A.A.A.A.A.A.A.S.S.G.G.H.D.P.L.S.L.L.L.L.L.L.L.U.L.U.S.F./ / ' MXZXFXZXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXsXn z h + O *Xv :Xl @ @ *XO h 5 a w @ @ l v h - a z :Xb z x g :Xb h 5.*Xz ;Xg + z z :X;Xn ;X- :X:X:Xk v >X;XeX*X*X+ + s *X+ z l @ v p p @ z - - @ a p 5 g d a d - 4 2.5.k - 8.8.3 n 8.4 w w l @ w 3 / c n @.+. .X.X.X.X.X.X.o.X.X.X.X.X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXS ! ~ c.].hXJXmXnXnXnXnXcXmXMXnXcXnXnXdXmXmXmXmXmXmXmXmXMXmXnXcXmXcXcXcX~ ! ! ZXVXGXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXyXtX2XXb -Xj 5.-X4 9.*X- g 5.k k v j 5.k } O.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .n } O.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.O.6X:X:X:X;X' o.X.X.X. .o.X.X.X.X.X.X. . .6XuXyX2XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXZXSXBX} ! Q ` n.].].`.(.`.(._.|.|._._._._._.}.|. X{.|._.|.|.|.|. X X X|. X X]./ ! ' BXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVX9.,.:.wX,X,X1X1X,X,X,X,X,X>X>X1X>X-X=XiX-Xz j 9.:Xd k 5.;Xz k v 8X:Xd 7 M.8.@ k 8X> @ a eX3X@ / eXiX> g p 4XKXz @ iXuXh l sXh v d eXv O h -X6X;XsXb v =Xz d ;X2Xz a 4.qXk p 4.qXk z 5 # # + :X# # # d 4.5.k w # # k :X*X-Xv >X2X<.<.9X;.-.-.,.4.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXAXZXZXAXZX~ ~ ! b.F.].Y.T.P.P.L.Y.L.L.L.L.S.L.D.U.L.L.U.U.T.U.T.T.T.P.P.P.P.P.U.S.H.H.L.L.L.S.Z.D.H.U.H.L.L.S.S.U.L.L.S.S.L.L.H.H.G.A.G.A.A.A.A.h.h.h.g.h.g.g.", "N B N B B B B B B B B B N B B B B B B B B N N C N C N B B B C B B C B C B C C B C C N C C C C C C C Z C Z Z Z Z Z D N G Z Z Z B Z Z Z D D Z Z Z C Z Z C D F C D Z Z Z Z Z Z Z Z Z Z D Z G Z D D P H Z H Z Z D D D D D D D D H H H Z H H H H H J J L P P P P P K P P I I I I P ) ) U ) ) ) ) ) P _ P ) L P ) P P P P ) P I I I I ) I I I ) I L I P F.~.(.(.(./.(.(.(.(.(.(.|.{.^.(.(.(.(.(.(.(.(.(.|.(.(.^.`.^.`._.(.(.|._.(._._._._._._._._._._.(._.^._._._._._.}.|._.|.|.|.|.|.`.|. X_.|. X X X}.}.}.}.}. X}.}.|.|.|._.'._.}.}._.|._._._.^.`.^.{.{.(.(./.(.(.(.~.(.(./././.~.(.~.(.~.~.~.~.~.T.T.T.T.T.T.T.T./.T.~.~.~.U.~.Y.L.T.T.T.P.T.T.Y.U.Y.P.P.P.P.P.P.Y.U.L.G.U.S.G./ S ^ ZXVXZXDXZXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXz x x a v KX-Xs W c @ z sXl + v sXl < ;XeXb 7 s ;Xa @ h v k p 7 2 2 =.2 =.2 3 p ;Xg + 4 M.8.4 v k j 4 2 =.2 2 2 =.2 2 =.2 =.2 =.1X>X2X,X2X,X2X1X4X4XwXwX1X0X:.>.-.>.9.4X4X , > d 5X+...o.X.X.X.X.X.X.X.X.X.X.X.X.X.ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXFX~ S ! M.V.hXfXnXMXmXMXnXMXnXmXcXmXnXmXnXmXmXmXmXmXmXmXmXmXmXmXcXcXcXnXxX~ ! Q ZXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX3X1X4.9.,X-Xs g @ - j 5.*X7 qX-Xa + p k s - p s k -X} ..X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.Q | o.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.O.6X3X2XuX>X>X;X;XyX:X3X3X6X ...X.X.X.......7XuX,X,XwXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXFXFXFXBX[ ! ! _ b.m.(.`.(.`.`._._._._._._._._.}.}. X}.|.|. X|. X X}. X X X X X~.! S } BXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX9.>.>.4.4XtXqXwXtX,X,X,X,X,X,X,X,Xv =X=X=Xp 4 5.-X@ h 5.*Xz g s 6X-Xa 3 k g + v ;X;Xw g KX:Xa ! @.W > g a XyX<.>.,.;.;.4.2X1XDXGXDXFXFXFXFXFXFXFXFXFXFXFXFXDXAXDXZXAXAXZXZXZXVX~ / ~ b.n.P.T.T.U.Y.P.L.L.L.Z.D.U.L.L.L.L.U.P.P.T.T.T.T.T.U.U.U.U.L.U.L.L.L.L.S.S.L.H.H.G.L.H.H.H.H.L.S.H.H.H.H.L.H.H.H.S.S.A.A.Z.j.h.h.g.g.g.g.g.a.", "N N N N B m B B B B N B B N N B B B B B N C C Z C N C N B A B C C B C B C C N C C N A C A C C C Z C C Z Z Z C Z Z Z B Z Z Z Z G D Z Z Z C G Z Z G Z Z D C Z Z F Z Z Z C Z Z D Z Z Z D D Z Z D Z Z Z D Z D D Z D D H D D H D F H H H H H H H J H J J L L L P P P I P ( I I P ) I U / P P ) P ) ) P ) U / ) P P ) ) P G / I I I ) P I I I I I P ) I b.~.^.(.(.^./.^.(.(.(.{.(.(.{.(.(.].(.(.(.(.(.{.(.(.(.(.(.(.(._._._.|.(.|.{.|.}._._.}._._.|.(.`.(.`._.|._._._.}.}.}.|._.|._._._.|.|._._.|.|.|.}.}.}.}.}.}.}.}.`._.`. X|._.|._.|.|.{.|._.`.^.{.(.^./.^.(./.[.(.(./././.(././.~.(.~.(.~.T.~.T.~.T.T.T.Y.T.T.T.T.~.T.U.~.~.U.R.~.T.T.T.T.T.U.P.P.P.P.P.P.Y.Y.P.P.U.L.U.L.U.G.! / ! ZXVXZXZXVXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXd + + O p O -X;Xa @ a h @ @ 4 g h p h g o @ 4 a v v v g @ d h g @ , - g 4 @ + g 5 - @ g 5 d h p 3 < 2 2 2 2 2 4 5 z p h h @ + z 7 =.2 =.2 2 =.< g - h h h w 4 5 g v v g 7 7 w 7 7 7 4 j j < 7 g h -X-X-X-X:X2X1XwX0X5.,.5.4X:.-.-.-.>.<.0X0XyXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXCX{ ! Q i e.j.Z.H.S.A.S.S.S.S.S.H.A.H.H.H.S.H.H.L.L.H.L.L.L.S.L.L.L.L.L.F.Q / ' BXDXFXZXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXZX*Xn ;X*Xb z p z tXv x x a 4 8.7 h x n a z n a p =XiX-Xh ;X:Xz z w w 4 l w @ 5 l 5 @ @ v b v ;Xv z s d d v >XsXsX-X*Xl n p + s k *Xa v k k a :XXl l l h a *Xs O p k b z g 9.k v l g 9.*X} O.X.X.X.X.X.X.X. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.O.f { +.o.X.X.X.X. .X.X.X.X.X.X.X.X.X.X.X.X...6X5XtX2X:Xk v v b :X;X;X;X;X:X6XX.o. .+.8X.1.1XwX<.,.<.2X>X2X,X,X,X,X,X,Xz 5 p s h p p p a a s p @ h p p p @ + p p 5 a g p @ + a + a 5 - 5 p z p + p @ + s p @ a + p a @ a p a a p *Xk *X*X*Xk z @ p h @ d p p a @ p s p h a O O p v O p @ a p s @ 5 O O p -X*XuXk 2X1X4.;.4..;.5.4X9.>.-.-.-.-.>.,.<.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXAXCX' ! ! Z T j.Z.S.S.S.G.S.S.S.S.G.A.H.H.H.L.L.H.L.S.L.H.L.H.U.U.L.U.S.L.F.S / _ BXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXZXwXpXeX5X*X+ + p v l o O =XO 4 O @ l x a g x z z =X=X=Xz :Xk 4 8.v + l 8.x + w 4 + z z w { 8.c z v 2.j p -XuXk g ;X*X@ + p s z h z a x v v g j v z a p 5 < k @ + d s - - } iXu 2 d < + O b z + 5 z z x l p n a p X>X>X.9.4X9.>.-.9.1X,X2X2X2X,X,X2X,Xl z z z p g z z g g l l g h z z l g h z z g g z g g l z l p g z z z a g l l g g h x g g l l g g g z z a g z w g z d 5 g g z v g p l l g g h l z 5 g a z z z l l a g l v z g x z z a g g a b ;XtXwX2X1XwXqX:.,.FXZXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXZXAXVXGXZXVXFX~ ~ ) b.n.].Y.T.U.U.U.U.L.L.P.L.L.L.L.L.L.L.P.P.P.T.T.U.T.U.Y.P.U.Y.U.L.P.L.L.D.Z.L.H.H.L.G.H.H.H.H.P.L.D.S.H.H.G.D.S.A.H.A.A.g.g.h.z.g.g.g.g.f.f.z.", "B N B B B B B B N B N B B m B B N B N C B B B B A C Z B B B C N B B C B C B B C N C A C C C C C C Z C D D Z Z Z Z Z D F Z Z Z Z D B Z F D Z Z Z Z Z Z B Z Z Z Z Z Z Z Z Z Z Z Z D D Z Z Z G D G Z D Z H H Z H D D D D D H H D H H H H H H H H J J J K U P P J P P P ) P P I P I I ( P P ) P ) P I I I ( P P ) ) I ) P I I I I I I I P ( I J ) J I ` F.(.[.(.(.^.(.(./.(./.(.[.(.(.(./.(.(.(.(.(.(.(.(.(.(.(.(.^._.(.|.^._._._.|.}._.|._.[.|.^.`._.`._._._._._._.|.^.[.}.|._._._.`.(.(._._.}.}.|.|.{._._._._.}._.|._._. X_._.}.}.|._._.{.|._._.(.(.(.(./.(./.(.~././.~./.~.~././.~.~.T.~.~.T.L.T.T.T.I.I.~.Y.T.T.~.Y.T.T.~.~.I.~.Y.T.T.T.U.T.P.P.P.P.P.T.T.P.P.P.L.S.L.L.U.D.~ / S ZXVXAXDXZXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXHXd v 8Xp k 8X-X2 7 l sX7 @ v KX-X@ x 8.l s =XiX-Xd g 8.7 + j 9.;Xd | wXiX@.g 9.:X@ z v n + s :X/ @ b 2.< 2 2.9.2.4 7 < 4 v 4 8.=.+ w c.t p g gXsX+ p | -Xp d 4.qXk Q { iX/ d | -Xs w sXgXa p W -Xs 7 2 q.-Xp k yX2X,.4.tXtXyX2X,XwXwX:.-.-.-.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXBX} S ! J e.b.Z.S.S.S.S.S.H.S.H.H.K.L.H.H.H.S.L.S.L.L.L.L.L.L.S.L.S.L.L.F.! / ' BXZXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXSX:XsX:X>X=Xn n @ k k eXn h l sX7 @ + =X+ + O z g 4 j l ..X.X.X.X.X.X.X.X.X.X.X.X.ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXVX! S ! m.Q.JXJXmXmXmXmXMXmXnXnXcXnXnXnXnXnXnXxXnXnXnXnXnXnXnXnXcXcXvXzXfX! ! Q CXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX4X4.>.-.-.>.4.k k g >X;Xz g 5.*X:X>Xv p -Xv ;Xl g *X=X>X7XO.X.O.X.X.X.X.X.X.X.X.X.X.o.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .o.O. ... .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.o.o.| p a - ;X-Xc v a a 2.9Xs 4.0Xp b :Xj ;Xk 1X2X2XtX:.;.,.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXVXFXFXVXBX} Q Q ` F.Q.!.(.^.^.`.(._._._._._._._.}.}.}.}.}.}.}.}.|.|._._.}.}.}.}.].Q ~ ] BXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSX5.,.4.1X4.>.-.<.1X.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXVXAXFXVXFXFX~ ) ~ c.F.!.Y.P.U.P.L.L.L.L.P.P.L.L.L.L.L.L.U.T.Y.U.U.U.T.U.L.U.U.L.L.U.P.L.L.L.U.L.H.L.H.L.L.H.L.G.D.A.D.D.D.S.S.A.H.H.h.J.A.A.h.h.f.g.a.f.f.f.a.z.", "N B B B m B B B B B N B B B B B C N N N B B C N N N Z N N C N C B C C B C C C B C B C C C C C Z Z C Z Z C Z B Z D Z Z Z D C Z Z F Z Z Z Z Z Z Z Z Z Z Z D B D B B Z Z Z Z Z Z Z Z Z Z D Z H Z Z D Z Z H Z Z F Z D D D H H H H H H H H H H Y H H P H J J L J J J P I P P P P ) P I I P I P ) P P I I I P I I P P I I I I I P P I I I P ) I I J ( I ` n.(././.(././././.^./.(././.~.(.(.(.(./.(./.(.(.(.(.(.`.^.`.|.^.}._._.{.}.}.|._.}._.|.[._.|.^.`._._._._._.|._.^._.|.{.|.`.`.(.`.(.|._._.}.^._._._._._._._._.`._._. X_.|. X X_.{.}._._.{._.(.^.(.(./.~.(././.~.~.~.~.~.~.~.T.~.T./.T.T.T.T.T.U.U.T.U.T.T.T.T.T.T.T.T.Y.I.T.~.P.T.T.Y.P.P.Y.P.P.Y.P.Y.Y.P.P.Y.L.L.G.L.S.S./ ! ! ZXHXZXFXAXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXz 3 2 3 3 3 2 2 a l q.j + k 6X-Xp l 8.7 - =X=X=Xh l 8.4 z g 5.-Xz A @.W > g 5.*Xw w x 4 @ s :X6X@ ;X1.2.=.2 2.=.2 =.2 < z 4 2.j 5 4 <.q.+ p sXn O - W / z a 2.0Xp c W W @.w S | h - sXn O p W | d 7 2 8.sX< v 2XtX1.5.1X1X2X,X2X1X4X<.-.-.-.>.9.ZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXVXHX' ~ ~ i e.s.Z.Z.Z.H.H.H.H.G.H.H.H.H.L.H.L.G.H.H.L.H.L.L.L.L.L.Y.S.S.A.F.! / _ fXZXFXZXFXVXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXDXAXGX:Xg k >X5Xv l z :X>Xn z + 4 8.4 @ :Xn g v n z d z p h z k p O O p v + O s k 7 n x 4 k r W W > z z v v a z ;Xn b :X:Xv 4 4 d k 7 4.n 5 ;X*Xp g h v k j 4 2 ;X;Xd l :X;Xd 2 2 2 2 l n ;Xg @ -X;XO < l + 4 2 3 z w 2.=.3 +.O.X.X.X.X.X.X.X.X.X.X.X.DXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXVXQ / S M.].JX.XJXmXvXmXnXMXnXnXnXnXnXnXxXcXcXcXcXcXcXnXnXxXxXcXxXcXzXcXdX/ ~ Q ZXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyXtX<.>.-.-.:.yXuX:XtX>Xv a -Xk k -Xk + a a v v 5.9.*X*Xv .O.O.O.O.o.o.O.O.O.o.O.o.o.O.X.X.X.X.X.X.X.X.X.X.X.o.X.X.X.o.X.X...o. .X... . .X.X.X.O.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.O.f =XKXd ;X*XO p k a 5.9Xs 2.9Xp ;X-X2.j k 5X2X2XtX>.4.wXGXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXVXZXFXFXHX[ Q ! ` n.Q.!.`.(.(.^._._._.(._._._._._._.}.}.}.}.}.}.|.{.`._._._._._.].Q ! ] BXZXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXyXtXyX1X9.>.>.<.1X:X=X6Xu :X2X>X,Xz j 9.:Xz k 9.:Xd g 9.;Xz k h n ;X@ k 9.0X5 s X.4.ZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXBX[ ^ S L T j.Z.A.S.S.A.G.S.H.H.L.H.L.H.H.K.L.H.L.S.L.H.L.H.H.H.L.L.U.U.F.! / ' BXDXFXAXAXFXFXFXFXFXDXZXFXFXFXFXFXFXFXFXFXFXAXDXFXtX:X9X9X9Xj j j qXwX-X=X-X-X-X-Xl c l p - n z w -X:X:X:X-X-X:X:Xk z n sXz z z 8.q.5 w v b b x ;X:X:X:Xv v ;X;X0X0XuX-X+ kXkXk k 2 j p ;Xj 8.=.+ x v v k w w - d d % a z 7 g 7 z w z d z @ k -Xp 8.8.4 3 7 3 z + 7 0Xg >X+...X.X.X.X.X.X.X.X.X.X.DXDXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXFX! S Q ` m.hXvXmXmXnXMXnXnXnXnXnXnXnXnXnXnXcXnXcXcXcXcXcXnXnXxXcXcXzXzXzX! S Q ZXZXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX3XtX<.,.>.,.4.5X:X*XwX;Xl ;X:Xj 9.k g 5.-X:Xb g g g 4.*Xa v f n v ;Xc @./ f +.O.O.O.O.O.O.X.X.X.X.X.X.X.X.X.o.X.X.X. .O.o.O...X.X.....X.X. ...} +.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.../ 4XKXl b v sXz -X@ a a @ p g d b v v :X>XyX>X>X,XwX.-.9.4X>Xs yXf v ,X1X>Xb g 2.j d g 2.*Xh g 2.*X- g h z g z g 9Xk @ s =X6X- =X=X=Xs z eX;Xa l g yX;X@ l x x a a iX:Xa p iX>Xp k z x l d @ iXtXh 5 :X:Xl - ;X;X@ @ wXuXp k @ j 0Xp 5 2.9Xg 5 5.sX< v k 9Xs g h j qXs -XKXv *X;XiX-X>XtXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXSXAXZXFXVXFX~ ~ / b.n.].T.T.Y.L.L.D.L.U.U.L.L.L.L.L.L.L.P.P.U.T.U.U.U.U.U.U.U.L.U.U.L.L.L.U.L.L.S.L.H.L.H.H.S.G.H.H.A.A.S.l.S.z.A.A.A.j.l.h.g.g.z.d.i.d.a.a.a.a.", "B N B B B B B B B N N B N B N N N B B B B B N C m B C N m C C N Z N Z N B C B C B C C C C C Z Z D C Z Z Z Z B D C Z Z D Z Z Z Z Z Z Z Z Z Z Z F B D D B Z C C Z Z Z Z G Z Z Z Z Z D D Z Z Z Z Z Z H Z Z Z H Z D D D D D H H H H H H U H H P H P J F J J J I I J P P P P L P ) P P L L _ P P P I I ) P P ( P P I P I P I P ) P ) P P P I P P L ) J J [ (.(.(.(.~.(./.{././././.(./.(.(.).!./././.(.(.(.(.(.`.^.|.(._._._._._._._._.|._.`._._._._._._._._.(.`.(.`._.|._.^._._.`.`.(.`.^.`.^.`._.^._._._._._._._.(._._._._._._._._.}._.}._.|.`.`.`.{./.(.(.(./.~.~.(.~.~.~.~.T.T.~.T.~.T.T.T.T.U.U.I.T.I.Y.U.T.T.T.T.T.T.I.T.I.I.U.T.Y.Y.P.P.P.T.P.Y.P.P.P.P.P.U.L.U.L.L.H.H.H.~ ~ S ZXFXFXDXFXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXz 7 < < 7 g p p g z M.c l 5 h a 3 7 3 7 3 h g g a a g p h 5 l w a @ z h p v d p g h g z h a d h p < 2 2 =.7 2.2 2 2.1.*Xh 5 z - a a + + a a d s p a p s + a d s p @ + a @ g =X=Xk z @ h a + d z a g < + z @ s *X-Xk ;Xn KX6X2X2X<.,.-.-.-.-.>.4.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXCX} S ! F e.e.Z.G.Z.H.H.H.H.H.A.L.L.L.L.S.L.H.L.H.L.L.L.S.L.S.L.L.D.S.L.Z.! ! ' BXAXAXAXDXAXFXFXFXFXDXFXDXFXFXFXFXFXFXFXFXFXDXDXVXwX<.,.>.>.,.,.,.>.:.0X0X0X0X0XqX5.j j 2.j -X-X:X>XyXyXyXyX1X,XuXv p l x p a 5 @ + z k v *X-Xz v -X-X*Xk :X1X5.,.,.wXv d 6X4 7 d + a - -Xj 7 2.4 b k h 4 O g v k -Xp @ a g O p z @ l 7 z a z + x q.4 c 8.4 h p O + O 2X1X+.X.X.X.X.X.X.X.X.X.X.DXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXZXZX/ ! S m.V.hXJXdXnXnXnXnXmXmXnXnXnXnXxXxXcXcXcXxXcXcXcXcXnXxXcXcXzXdXzXdX~ ~ ! ZXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX3X2XX*X,X;Xg -Xj 9Xk g 5.:X:Xv # # g 9.-X2 8.g h O p s , 6X=Xf v v f > @.> +.X.X.o.X. . ... .X. . .| > > | O. .o.......X. .O.} u o.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .O.| z p l a l n z @ b v a a @ d g a z k -X-X*X-X-X3X1X j 9.*X2 =.=.2 =.j 9.k d j 9.;Xd 7 8.x @ v 8X:Xa v 9Xj a g 4.0Xa d 6X{ a < 2 2 2 2.9.2.2 =.2.g l z } / + d c v s d | -Xp @ O k p f | -Xp 4 1.n o =X5XwXs w x ;Xg p { sXz 7 < *X7X- p 2.5.k c ' iXn ,X2X<.>.-.-.-.;.>.4.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXVXBX' ! ! K e.Z.Z.J.Z.H.H.H.H.S.L.H.L.L.H.L.L.L.H.L.L.H.L.L.H.L.L.L.L.S.H.Z.! / ' BXVXAXFXZXAXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXGXDXDX9.>.-.-.-.,.>.,.-.,.,.,.:.>.,.,.,.>.>.>.:.wX1X>X>X2X2X2X,X1XuX2Xv z w a a z z z @ *X;X@ g @ @ a -X-X-X:X0X5.9XtX>X:Xp @ @ + 5 b 8.:X;Xv x 5 *Xz -X*X8.=.O 4.5.k *XX1X,X:X | @.p < =.=.=.7 2.=.2 =.=.< v - +.W + d g x a a W / a a v k g - W ! d 5 2 x h k =X=X=X@ z v p p ! W - w 2 =X6Xf p j 9Xk c @.| W ,X,X.4.DXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXBX' ~ ~ U T T G.G.H.D.H.S.L.L.L.L.U.P.P.L.S.L.D.L.L.L.P.P.L.H.S.U.H.L.H.S.! ! ' BXDXAXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXDXDX9.>.-.9.wXwXtX,X<.;.-.-.-.<.wXtX2X4.>.-.-.<.,X,X,XtX,X,X,X,X,X2X-Xk x z z *Xv x sXg g x n z @ z :XyXwX9.,.qX1XwX1X1X-Xz :X:X:XwX<.*Xv s + z -Xn v h 7 2.O j k *X;Xn ;XO 7 2.O @.W - @ 8.*XO =.2 < 7 k @ a k k l n ;Xk n / f ! W X.X.X.X.X.X.X.o.FXFXFXFXFXFXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXVX/ ! ! M.m.hXzXJXnXnXnXxXmXcXmXmXcXnXcXcXxXcXxXxXxXnXnXdXcXdXcXcX.XzX.X.X~ ~ S ZXDXZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXZXyX,X,XwXtX2X,X,X>X>X>X:XXz z 5 z z h l w v v + w ;X:X- O @ z h @ @ + % - @ > | n k b p v :X;X;X;X;X;X;X;X-X;X;XO s > c n - @.l n - | +.} x | .. . . .X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.o.-XKX;Xa z + k v ;X-X5.0Xs 5.0Xk @ 2.0Xs 5.9X-XyX,Xb n FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXFXFXAXBX[ Q Q ` b.].]./.).(.(.^.(.(.(.|.(.(.(.^._._.|.{.(.`._._.^.(.(.(.(.{.^.!.S ! ' BXDXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX9.>.-.:.wX4X4.9.v a =.8.4 z 2 =.2 z =.8.z p s 8Xf @ k ;Xx d k j 9.*Xz k 2.*Xd g 9.0Xa l eXz + k iX>Xs g z eXv o @ iX5Xh l n b v d eXv O k ; ;X3X- + iXuXp h :Xn + 4 =.2 2 =.2 =.4 l z 2.9Xk - 2.5.v 5 2 2 2 =.=.2 2 g v k 9Xg z v *X-X9.9.uX>X2XCXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXVXFXDXDXFXZX~ / _ b.n.~.P.Y.P.L.L.L.L.U.U.L.L.S.L.S.L.U.L.Y.Y.Y.U.U.T.U.L.Y.U.U.U.L.L.L.L.L.L.L.L.H.L.H.H.H.A.S.h.H.A.A.A.A.A.h.l.l.z.z.k.k.a.a.a.a.a.a.s.i.u.u.", "B B B B N C C N Z N N C N N N B B C B B B B N C B B B B B B N C N N C C C C C C B C C C C Z Z Z Z D C Z Z Z Z D Z Z Z D D G G Z B Z Z D Z Z Z Z Z Z Z Z Z D C D Z Z Z Z Z D Z Z Z F Z Z Z Z D Z Z D Z Z Z Z H Z Z Z Z H H Z H H H H H U L H H H L L L L L P P P J P ) P P ) L / P P ) P J I J I I I I P P I P P I P ! P I P P I I I L ( P I P P I U [ F.^.^.^.^./././././.(.(././.(.!./././.(././.^.(.(.(.(.(.(.(.(.`.(.(.(.^.`.|._.|._._._._.|._.(._._._._.`.^.|.{.`.(.(.|.(.(.(.(.(.(.`.(.(.(.(.(.(.(.(.(.(.(.^.`.(.`._._.(._.}.}._._.|._.|.|.`.(.(.(.(./.~.~.R.!.T.~.~.T.~.T.T.T.T.T.U.T.T.U.T.I.T.U.T.T.U.T.T.T.T.P.T.P.T.P.P.P.P.P.Y.P.P.P.P.P.U.P.U.U.U.U.L.U.U.H.L.L.~ ! ^ ZXVXZXZXFXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXl 2 2 2 =.k v k d w w w h p p p 4 6 4 h < p *Xk h @ p p g + + + g h p p @ v *Xk d p s p a @ , + p 5 3 3 < 4 < < < 4 < @ z 5 , p a + p p a a - - 4 g @ @ g @ - - p g + @ g g g s g h @ @ @ @ - - 5 j 4 p h @ z h g h g % w w ;X,X1XwX:.-.-.-.>.<.GXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXBX[ / ! ) T Z.Z.G.J.H.H.H.S.L.L.U.L.P.S.L.P.U.Y.L.L.L.A.L.D.H.L.L.S.S.L.Z.! ! ' MXZXFXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFX9.>.<..-.-.;.wX1X2X1X1X,X,X1X1XtX,Xv g n n g g l x a @ z x z h p -X5.>.;.,.,XwX>.5.0X0X-X-X:X-Xk ;Xb | :Xp @ + + a z @ h @ z v b v z a z 4 h @ - - a @ 8.sXO =X*X3 3 h + v a v g z 5 g > , 6Xz @. .X.X.X.X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXVXFXFX/ S ! m.].'.xXzXnXnXnXnXnXmXcXcXmXcXcXcXxXxXdXxXxXdXxXxXxXdXdXdXzX.X.X'.~ ~ Q ZXHXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXyX4X4.,.4.1X,X2XtX>X>X:X2X.;.-.:.wX,X:Xv a 2 4 k d 2 2 2 h 2 =.k d s :X{ - k ;X@ d g g qXj z -Xj j d h 5.*Xd h :Xz + k iX:Xp v a :Xl + g iX5Xh h :Xn + @ 3Xb O v a tXyXp a iXtXg w ;X;X@ 7 2 =.2 2 2 2 2 z g g 0Xg h 2.9Xk 7 2 =.2 2 2 2 2 a v k j p d v :Xv :X1XwX0X0XDXDXZXFXFXFXFXFXFXFXFXFXFXFXFXDXFXAXDXVXAXDXFXSXZX~ ~ ~ b.F.].^.T.L.U.L.L.L.L.L.U.L.L.L.L.L.L.L.L.T.P.U.U.U.U.U.P.U.U.U.U.U.L.L.S.L.L.L.H.H.H.H.S.S.S.H.A.A.A.A.A.h.A.f.l.k.j.j.a.a.a.a.a.i.i.u.i.u.u.", "B B C B N C C N N N C m C C N N B B B B C N N N A N B B Z N C C B C B C C C C C C Z C F C Z B C Z D Z Z Z Z Z D D D Z Z Z Z H D Z Z Z D Z Z G C Z Z Z C Z Z Z Z B D C Z Z Z Z Z Z Z Z G Z Z Z Z Z Z Z H Z H L H S H H Z H H H H H H H H L L L D L P L J H P P J P P I P P P P P P ) P P P I ! J I I ) P I ) P P P P ) P P P P P ) L ) I P P P P P P [ F.(./.(.(./.(././././././.(././././.!.!.(.(./.(.(./.(.(.(.`.`.|.^.`._.`._._._.|.{._._._._._._._._._.^._._.^.`.(.(.(.^.(.{./.(.[.(.^.(.(.^._.(.(.(.(.(.(.(.(.`.(._.(._._._.}.}.}.|._.`.[.{.(.(.(.(.(./.~.~.~.T.~.T.T.~.T.T.T.T.T.T.T.U.T.U.I.T.I.U.T.Y.T.T.T.T.T.P.P.T.T.P.P.P.P.P.P.P.Y.T.P.T.U.U.P.U.U.U.T.S.S.L.S.S.! S Q ZXCXZXZXAXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXl 2 =.2 3 s p O g p O + O + g p p + + + z @ k h @ p k p h p k p p s p @ d 4 4 p @ @ d p p - 4 p + p p s p + 4 p p z a z h + < 9 + @ 4 h p z f eXc a z 4 + k s z h 5 5 4 4 h @ g h h k d a + p + @ g 7 p p z h + + @ g d a a l 2X1X<.-.-.-.-.-.-.DXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXBX} ! ^ P e.e.Z.S.U.U.H.L.L.D.L.U.P.L.P.L.P.L.L.L.S.L.D.L.A.H.H.U.H.U.H.F.! / ' BXDXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFX9.>.9.4X4X.-.-.-.-.>.:.0X0X0XwX1X.-.-.-.5.5.>.>.,.>.5.-Xk k j -Xv W / a z x n - a a z @ a g p + a 5 + z % + p w h h + w s 5XiXs :XQ - v z 3 g 5 b w > f n x @. .X.X.X.X.X.X.o.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXVXFXVX! S / c.].].xXJXnXnXnXnXnXnXnXcXcXcXnXcXcXxXxXxXxXxXzXzXzXdXxX.XzX.X.X X/ ~ ~ ZXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXAXyX3XwX0XwX2X,XtX>X>X>X*X2X>Xk :Xx ;XtXj 4.*X:X>X-X-X-X-X>XuX5XO # a *Xs *X;Xz g 7 7 < g 4.0X# p k d v 5.*X< 8.s k ;Xv W n c > @.( n > -X-Xz wXl l 8X6X8X+. .X.X.X.X.X.X.X.X.X.X.X.X.X.O.-X=XeXp z 6X@ a w g *Xk w a a a g O @ a z ;Xb w @ X4X4.;.>.GXDXZXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXAXVXVXFXFXFXZX~ _ I c.n.~.T.!.U.D.L.L.L.L.L.L.Y.L.S.P.L.L.L.P.T.T.U.Y.U.Y.U.L.U.U.U.U.L.L.L.L.L.L.L.L.L.H.H.G.A.S.A.A.A.A.A.A.h.h.k.h.f.f.f.g.a.s.s.i.i.i.i.u.u.u.", "Z N N C N m C C C N C C N N N C B B B B N N N C B B C B N C C N C B C B C C C C C C C C Z C F Z Z B Z Z D F D B Z Z Z H Z Z Z D Z Z G C Z Z Z Z Z C Z Z C D B Z Z Z Z Z Z Z Z Z Z Z D Z Z D D Z Z H Z D Z Z S Z H H Z J Z Z Z H H H Z H H H H L L L H L H J P P P I P I P J P P P P P P I I I ) ) I P P P J P P P P P P P P P I J ) P L I P P I ) P U [ !.(.(.(./.(.(.(.(.(.(.(./././.(././.(.^.[.(.(./.(.^.^.`.(.`.(._.`._._._._.|._.|._._._._._._.(._._._._._.^.^.(.(.(.^.^.^.(.^.~.(./.[.(.`.(.(.(.(.`.(.(.^.{.(.(._.(._.(._._._.^._.^.(.^._.(.(.^.(./././.~.R.~.T.~.~.T.T.T.T.T.T.T.U.T.U.U.I.I.U.T.Y.T.T.U.T.T.T.T.P.Y.P.T.P.P.Y.T.T.T.P.T.T.T.U.Y.Y.L.L.L.L.L.G.D.S.S.! ! ^ ZXZXZXZXFXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXg 2 2 2 g 5.s g 9.-Xg b x # p k p z l x @ 7 n l 5 g 2.j z g 9.*XO s :X/ @ 7 8.s w , / =X- 7 qXs p f } k p h lXeXO z sXsXz @ kXsX+ z kXsX+ c sXiX! + 8.=.+ v 2.9Xd 4 c 8.5 @ O k g @ 2.0Xk @ d n d 4 7 k 0Xg z w n z 5 ;X8Xv x 2X1X<.-.-.-.-.-.-.FXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXCX' ^ ^ K e.Z.Z.F.S.H.L.L.L.U.P.L.P.L.P.L.S.L.L.L.L.L.L.L.L.S.L.L.H.L.L.F.S / ' fXZXZXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZX9.>.1.0X0X<.>.-.-.-.-.-.-.-.-.-.-.-.-.:.wX4.>.>.>.>.;.qX4.>.,.0X4Xv z 5 a a z b z d z z h z z k b >.-.-.;.-.>.-.-.-.>.,.b k k j k g - - d a l 7 a s -X} - a 4.9Xp 2.=.O , @.@., , > 6Xl d :Xv @.o. ... .X.X.X.X.X.X.X.X.X.X.X.X.X.X.O.-XKXKXx @ O l @ z x v k n v # 2.0Xs 2.9X-X>X:X@ *XyXuXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXFXFXVXHX' ! Q [ b.Q.K./.).(.(.(.(.^./.~.(.[.(.^.`.(.(.(._./.(.(.(.(.(././.(.^.Q.! ! ' BXDXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZX4.1.7 j g 7 v j z d @ h s g z p a h + + @ g v p a g h 5 @ h a 5 5 + 4 + g a g 5 5 @ g h g a h a d z @ h h v n a p p d g h h k *X5 g p @ h @ z k *Xg z n h 5 z k *Xg a g d d a z a g @ < 4 O h + + a h 3 h + l p p a a g h g @ z O s + k -Xg :.>.DXCXDXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXAXVXAXZXZXAXZX! ~ ~ b.F.Q.Y.T.U.L.L.L.L.Y.U.L.L.L.L.L.P.L.P.P.P.P.U.Y.Y.L.P.Y.U.L.P.U.L.L.L.L.L.U.H.H.H.S.H.G.A.A.A.A.g.g.f.h.h.f.h.j.f.f.s.a.a.a.i.i.i.i.u.u.u.p.", "N C C N Z N C N N C N m Z N m Z B B B C B B B B B B C B B C B C B C C B C C B C D C C C B Z C C D B Z Z C C D D Z Z Z Z Z Z D H Z Z Z Z L Z Z Z Z C D B Z B D Z C Z Z D Z Z Z Z Z D Z H Z Z Z Z Z Z D D Z Z Z Z Z L Z H H H H H H D H H H H D L H P H J J L P J P P P I P P P J P P S / L I I I P P ) J ) P P P P P P P P P J J L ( P P ! I I P I P I [ ].^.{.(.(./.(.(.(./.(.(.(.!.!./.(././.).^.(./.^.!.(.(.(.(.`.`.`._.|._._.|._.|._._.|.`.(.`.(.`._._._.(.(.`.(.(.(.(./././.(.[.(.~.~.(.(.(.(.(.(.(.!.`.^.(.`.^.(.(.(.(.^.`._.`.^.(.`.(.(.(.(.(.(.^.(././.~.~.T.T.~.T.T.T.T.T.T.U.T.U.T.U.I.U.T.T.U.T.T.Y.T.P.T.T.P.P.T.T.P.Y.P.P.T.P.T.T.T.T.U.T.U.P.L.S.U.L.L.G.L.D.S.~ ~ ^ AXAXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXb 4 4 j *Xj k s 2.s O x + O k g + z x 4 a l 8.x a -Xj s z z 2.:X@ s >X} d 7 sXj 4 s s z a 7 kXx 4 - | / p g sXq.4 d l x w z 6X8.< z 6X8.< ! @.| @.< 7 2.4 p j 2.s 4 g k 4 a k k g z j j p p 7 x d 7 7 k j s h l x + - -X8Xk l ,X2XtX<.;.-.-.-.>.ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXCX' ^ ! J e.e.Z.H.S.G.L.L.U.L.L.L.L.L.L.L.L.L.L.P.S.Z.U.S.U.L.L.L.H.P.L.Z.! / ' fXDXDXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZX9.;.;.>.>.-.-.-.-.-.-.-.;.>.-.-.-.-.-.9.4X5.>.-.-.-.-.>.-.-.-.;.0X-Xa h z z d k -X:X;Xj :X;X-X:X4.;.,.>.>.-.-.>.-.-.-.,.;Xk v k k z a p a @ O O + p =X6X- a 2.0XO 7 2.4 n :X+ l z a l 4 k 4 7 3 s + O k g 7 l 4 q.8.4 - , > > } w i X. . .X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXVXS ! S M.'.hXzXJXzXnXcXMXcXcXnXnXnXcXcXcXxXnXzXzXzXzXxXdXdXzXzX.X.X.X.X|.! ! Q ZXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX2X1.1.wX,X1X9.<.>X>X:XsXeX>Xk :XuX-Xl @ d g x x g b n k s b b k k a z eXx h n z p g 9.:XO p p + @ + d v p g O z 4 g :Xv a 4.:Xa g :Xe k v z % a g f | 7X7X6XX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.n -X-Xz a KXv z z ;XeX+ n x p 5.9Xs 2.qX-X:Xg *XyXsXsXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXFXFXFXFXFXDXBX' Q ! ` n.!.^./.(.(././.(.^./.(.(.(.(.{.(.(.(.^.`.`.(.(.(.^.{.(./.(.(.]./ ! ' BXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZX>X:Xq.v s , } w - p ^ } s d b 4.;Xz z z x z v j j z 2 8.4 - k 3 5.l 5 v ;Xx d 6 q.x h g 9.;Xa p :X:Xp l g lXz z s .FXZXDXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXAXVXFXZXAXVXZX~ / ! b.n.].T.Y.U.U.L.L.P.Y.U.P.P.L.L.L.L.L.P.Y.P.Y.U.L.U.Y.U.P.U.U.P.L.L.L.L.H.L.S.L.H.H.H.S.A.H.h.A.A.A.h.h.h.z.h.a.z.a.f.a.a.a.a.i.i.i.u.u.u.p.u.", "C C N C N C N C Z N C Z N N A N B B B B C B B B C B B B C B C B C B C C C C C C C B C D D C Z Z Z Z Z Z D D D C Z Z Z Z Z Z G Z G D Z G Z Z L Z Z Z Z Z Z Z D Z Z Z Z B Z Z Z Z Z D B G Z Z Z Z Z Z D Z Z Z Z L Z J Z H H Z D H D H H D H H L D H H L J H P P P ! P P I ) P J J P J P P I I P I P I P P J P J P P P P P I P P I P I P ) I P I I I U I [ ].|.(.(.(._.(.(.(.(.(.(./.(././.!././././.(.^.(.(.(.(._.^.`.`.(.|.(.|._._.|._.|.|.^._.(.^.`.^.(.(._.(.|.(.^.(./.^././.(.~.(.~.(.(././.(.(.(./.(.(.(.(.(.^.`.(.(.`.(.(.^.^.`.(.(.^.^.(.^.(.(.(.(././.~.~.T.~.~.T.~.Y.T.~.~.T.T.T.T.U.T.T.U.U.U.T.U.P.T.T.[.T.T.T.T.T.P.P.P.P.Y.P.T.T.T.U.T.T.U.U.L.L.P.S.L.S.G.G.G.D.~ ! ^ DXAXFXZXFXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXv s p k -Xj j 7 j 7 3 2 < < k + k @ 4 + z @ 9 @ z c -Xv g v d h p @ p z g 4 4 5 g p + a g 4 @ 4 g a - - @ @ O @ h a @ 5 g a + . h a + O 5 @ w & z p 4 p @ v k g v h 4 p 5 g z @ 5 k v v v @ 4 + 4 g j b v v 5 + 3 4 l a a - v 2X2X2XwX:.>.4.wXwXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXCXHX_ S Q ) T Z.Z.U.S.L.L.L.L.P.P.U.U.L.L.L.P.L.L.L.L.L.D.L.L.L.S.L.H.L.P.Z.! / ' BXDXDXZXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZX9.>.>.-.-.-.-.-.-.>.<.wXwX4.-.-.-.-.:.:X4X<.>.-.-.-.-.-.-.>.-.;.:.>X:X-X;X-X;X:XyX4X0X1.tX4XuX5.,.0XwXwXtX5.,.0XqX>.-.0X:X+ + 4 p a 6X6X- w 6X6Xa p + s p z a z @ @ z + z z a + @ + v j 5.p x j *XQ + g j @ l O # 4 O + 8.8.g j =.=. .X. .X.X.X.FXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXVXDXFX/ ! Q m.M.].JXxXnXnXcXxXnXnXnXcXnXcXnXcXvXdXcXzXzXzX.XzXdXdX.X.X.X.X.X|.Q ! Q ZXFXZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX4.:.0X<.4.1XwXwX>X5XwXsX;X:X*X:X>X:Xb k v z n n + v n a g n n z :Xv @ z a + + @ z g 5.;Xs p 7 h 5 p w b n n 7 7 7 g :X:Xa 5.0Xa - yXb 5 d @ k b > @.y f :X6Xo.o.X.X.X.X.X.X.X.X.X.X.X.X. . .tX4X;X@ KXeXz @ h z + - a + a g + g k d b z *XeXKXgXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXAXSXFXFXFXDXCX| S ! ` b.F.!././.(.(.(.(./.^.(.(.(.(.(.(.(.(.(.(.^.(.^.(.(.(.[.^././.F.! ! ) BXDXSXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAX>X>X8.sX3 , 2.e z k > | x a g 5.*Xa 5 x 5 a -Xj k d < =.v d k 3 =.v a d ;Xa a 3 =.j a g 5.0Xp p KXeXp z g yX;Xd d yXKXl l n a @ a :Xl O k l n h @ a yXeXp z n h + a 2.0Xk - ! W - k w 8.eX5 h 7 x + @ 8.sX< @ j qXk k 5 >XiXv - *XiXs -XKX-X<.<.FXFXAXFXFXFXFXFXFXFXDXFXFXFXFXAXAXDXAXAXFXDXAXVXZX~ / ! b.n.[.~.T.U.L.L.P.P.P.Y.L.L.L.L.L.P.P.P.P.Y.U.U.U.Y.L.L.U.P.P.L.P.L.L.L.L.L.H.L.H.H.H.H.A.h.g.l.h.g.h.z.a.h.a.f.f.g.a.a.a.i.a.i.i.u.i.u.u.u.p.", "C N C N C N C C C C C N C N N C C B B B B B C B B B V C B C B C C C B C Z C Z C C C C Z Z A Z Z Z Z Z Z B G Z Z D Z Z G H Z Z Z Z H Z Z Z Z Z Z Z Z Z Z Z Z B Z D Z Z C Z Z Z Z Z Z C Z Z Z H Z D Z D D Z H H Z H Z H H S H Z H D G H H D H L L H H H L J J L P P P J ) P P J J P P P P P P P P I I P ) / I P P P P P P P P P P P P P P I P I P P I I U Q.(.(.(.(.(._.(.(.(.(.(.(.(.(.(././././.(./.(.(.(.(.(.(.(.|.`.{.^.|.(.{._.}._._.`.`._._.(.(._.(.(.(.(.(.(.(.(.(.(./././././.~.~.~.(./.(./.(./.(.(.(./.(.(.[.^.`.(.`.(.`.(.(.(.(./.(.(.(.^.!.(./.~./.(.~.~.~.~.T.~.T.T.~.T.T.T.T.T.T.I.U.P.P.P.T.T.T.T.T.T.P.T.T.T.T.P.T.Y.Y.P.Y.P.T.T.U.Y.Y.P.P.U.L.S.L.S.H.H.H.S.S./ ~ ^ ZXAXAXZXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXk 5.k p j =.2 =.=.2 2 =.=.2 g a k g 4 < g d p < < 2 7 1 g @ a @ @ a z s a a l d g a d d a a d + a @ 5 4 @ a d a 5 4 4 4 h -X{ | | | | } | } } | } | | } | | | { b @ g z a a a a a a g p p @ a z d g 4 - p p ;Xb d p a a p k :XwX:X4XwX:.9.,X1X2XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXCXDXBX} S ^ I e.Z.Z.L.G.L.L.L.L.P.P.L.P.L.L.L.P.L.L.L.L.L.U.S.L.L.L.L.L.P.L.F.! / [ fXDXZXAXDXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX9.>.-.-.-.-.-.-.<.wX2X4X4X1X9.>.-.-.<.4X5.-.-.-.-.-.-.:.wXtX4.>.;.0X4X1XyX1XyX>X2X,X.2XwX,.qX4X;X& W n @ - / W d - ! W - - | -XO h - + z h O 4 @ 5 c eXn ;Xv k 9Xk l 7 ;X-Xv g 4 x 8.+ x { 7 p x 8.3 2 =.2 .o.X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZX! S Q c.'.dXJXxXnXnXnXJXcXmXnXcXcXcXcXcXdXcXdXdXxX.XzXzX.X.X.X.X.X.X.X|.! ~ S ZXAXFXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFX9.1.4XwXwX,X1X2XwX>X:Xx z >X*X*X:X:X5X>X>Xv @ @ a @ a a @ @ + + -Xp O + v :X;Xx l 5 g a ;Xb 2 w } =Xy eXiX@.3 =.2 7 ;Xb a h p z v z @ @ z sXk k > z n - | +.o.o.X.X.X.X.o.X.X.X.X.X.X.X.O.+.-X-Xv z s z @ z - a @ + h z z z z @ h b l -X5X0X;XsXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXAXAXFXFXZXZXHX' ! ! ` n.F.!./.)./././.(.(.[.(.(.(.[.(.(.(.(.(.(.(.(.(.(.(.(.(./.(./.].S ~ ' BXDXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXSXAXyXyXk g 4 @ @ < g g - - - g v z a g + 4 + g v v v g 5 @ @ g h - + 5 g a h @ h 5 @ z g h p a g h w @ @ g h a z z g a a h h - a h 4 a a @ g g @ a h g a d a g + @ h h a d g g - - @ a g 5 w 4 g 5 + h g 4 w 4 g h d p h g 5 a h h @ s d - z j -.4.FXAXGXFXFXFXFXFXZXFXDXFXFXFXFXDXAXDXAXVXAXFXAXVXFX~ ~ ) b.n.Y.~.Y.U.K.P.L.P.P.P.P.P.L.L.U.L.L.Y.U.Y.U.U.U.L.U.L.U.L.L.L.L.L.L.S.L.H.L.H.H.H.H.A.A.A.Z.h.h.z.f.g.j.g.a.a.f.a.a.a.a.i.u.u.u.i.u.u.u.u.t.", "C C N C N C C N N N Z C C C C C B B B B C B B B B B B N C N C B C B C C A C C C C D C C C Z C D B Z Z Z D Z Z Z D Z Z Z Z Z D Z L Z Z Z L H Z Z Z Z Z C D B D Z B Z Z Z C G Z Z Z Z D Z Z Z Z D Z Z H Z Z H Z Z Z H H Z Z H H H D H H H H H L D H L H J L L P P L P P P I P P P P P P P P P P I I I P J P P P ) J P P P P P P P P P P P P I P I P I I _ F.(.^.|._.(.(.(._.(.(.^.(.(.(././././././.(.(.~.(.(.(._.`.`.^.|.(.`.|.|.}._._.|._._._.(.^.{.(.(._.(.(.(.(.(./.(././.^.~.~.~./.(././././././.^.(.!./.(.(.(.(.(.(.(.^.^.{.{.|.(.(.(.(.(.(.^.~.(./././.!.~.~.T.T.~.T.~.T.T.T.T.T.U.U.T.T.I.T.P.T.T.T.T.~.T.[.T.T.T.P.T.T.P.P.T.T.Y.T.P.U.T.U.Y.Y.L.L.L.L.L.H.S.G.H.H.S.~ ~ ^ ZXFXFXZXAXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXk j k g < 7 < < 3 6 3 < < 4 g k 9Xk 2 =.k 2.k j 2.j =.2 4 c 6Xn p f } s a z 8X:X@ z 8X:Xa k 5 , | n p d } / + a lXsXO } 7XsXsX{ M.M.M.{ M.M.M.{ M.M.M.M.6X7X{ z -X:X+ p -X} - z j 9Xs p O g s 7 2 | -Xs 9.2.2.0Xk j 5.k wX:.4.wX:.<.1X1X2X1XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXZX' ! S K b.j.Z.S.L.L.L.L.L.P.L.P.L.L.P.P.P.L.L.Y.S.L.S.L.L.L.L.L.L.P.U.F.! ! _ BXDXZXZXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX9.-.-.-.-.-.-.>.9.4X,X0X0XwX<.-.-.>.:.0X<.-.-.>.>.-.:.wX4X4X5.>.-.;.qXwX1X1X2X1X1X2X1X1X1X1X4.>.-..-.-.5.5.>.>XyX;X, @ q.+ p , O @ 4 + d W / + 9.x O 2.=.O <.n - { iX} :Xg s s + l - z v s -X:X8.8.4 x 8.4 d + O # 3 2 c X.o.X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXZXZXS / / c.].aXJXzXnXnXnXxXcXcXcXcXcXcXcXcXnXcXdXzXzXzXzX.XdX.XzX.X.X.X.X.X~ ~ ! ZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX9.<.4X2X1X,X>X2X>X5X5X*X*X5Xk *X:X*X:X*X:Xg h z z z z z a @ k *Xp g s # s *Xv z k k z h z l < % | n @._ | f 3 j j 4 w g @ + + z b b v v x n @ h @.x sX- } o.o.o.X.X.X.X.X.X.X.X.X.X.X.X.o.W x l + l w - a z n x # # n l + z n l p ;Xb 5X>X>X*X;XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXSXFXZXDXBX' ! ! ` b.].!./.^./.(././.(.(.[.(.(.(.(.(.].(._.(.(.(.(.(.(.(./.(./.(.].! ! ' BXHXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXyX1XyX;X:X8.j b j 5 a g 5 k g d h g g a g g @ h h h g v p h a a h @ h h d @ h z d O a w z + h k =X=Xk g h z a a @ 7 5 @ k a v h v a z @ g h a p h h p a a h a p h h p g @ v p p @ 5 k a g a g g z d k -X=Xk h c n c a h s a h g :X;X-X-X:X9.9.6XVXFXHXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXVXVXGXFXVXFX~ ~ / b.n.].~.T.U.U.P.P.P.Y.P.P.P.L.U.P.P.P.P.T.P.U.U.L.U.L.L.L.L.L.L.L.L.L.L.L.K.L.H.H.H.h.S.A.j.A.l.l.h.g.f.j.a.g.a.a.a.a.a.i.i.a.i.u.u.u.u.u.u.r.", "N A N A C C A C C C A N Z m A A C C B N N M C M A B B C C B C C C C C C C Z C B A C C Z Z Z C B D Z Z Z Z Z G D D Z Z Z D Z G D Z H Z Z G Z Z Z Z Z G B Z Z Z Z Z Z Z D Z Z Z Z Z Z Z Z D D Z Z D Z D Z D D Z H H Z Z Z H Z C J S Z H Z Z H F H H H L L L H P K P S P J P P P P P J J P P P I I P ) P P P P ) P J J P P P P J P P P I P P I P P ) J I ) b.]._.|._._.^.^._._.`.^.(.(.(.)./.(./././.(.(.(.`.(.`.(.(.(.|.{._.|._._.}.}.|.}._._.|.|.^.(.(.(.(.(.(.^.[./.(.E.~.^.~.~.~.~./.[././././.(./.(././.(.(.(.^.^.(.^.(.(.(._.^.(.(.(./.(./.(./.(././././././././.T./.T.~.T.T.~.T.T.T.T.U.T.I.T.U.T.T.T.T.T.P.T.T.T.T.T.T.T.T.T.T.P.T.U.T.U.U.U.U.P.P.U.L.S.S.G.H.H.G.S.S.~ ~ S ZXVXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXeX:X:Xp + + p p z @ g z @ p s *Xj j 2 =.k j k 6XO.o.;X2 7 > } @.s > W x @ g 8X:Xp g 8X:Xa l ;X;Xh , g q.O d X.W + z sX8.3 | M.-.>.,.,.,.,.,.,.,.,.,.,.,.,.,.,.M.| a k -Xg p =XsX- v k j s p v k g - < @.| v tX:Xj 2.s j 7 *X<.-.>.>.>.<.wXwXwX0XGXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXBX[ ~ ^ I b.b.Z.U.L.L.L.L.L.Y.L.P.L.L.L.L.Y.P.L.L.L.L.P.L.L.P.L.P.P.P.L.F.! / ' BXZXFXZXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGX9.>.-.-.-.-.-.-.:.0X<.,.;.>.-.-.-.-.-.-.-.-.:.wXtX4.,.wX1X4X5.>.-.-.>.;.qXwX0X0X0XwX0X0XwX4.-.;.-.5.5.-.-.-.-.>.,.qX1X,X;X+ O p O g } -Xs 4 q.=Xp z - n O =.b O 7 j < =.x l W | W :Xz j 9Xd z 7 7 v k -Xs # O O # O - @ z -X} , n O.X.X.X.X.X.X.DXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXFXS / / M.Q.].cXcXcXcXcXcXcXcXnXcXcXxXxXxXzXzXxXzXzXdXdX'.zX.X.X.X.X|..X|./ ~ Q DXDXDXDXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXwXtX2XyXwX2X1X - o $ % =XiX=Xk aXsX$ f p h b ;X:X;Xz k k g / x b - W X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.O./ b v a d n x + h 6X;XO + b l @ + ;X:X& x -XyX>X*XuXyXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXFXBX} ! S _ b.F.~.~.(././././.(.(.(.(.(.^.(.(.(.(.(.(.!.(.`./.(.(././.{./.].Q / _ BXDXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX:X1X4X4.,.,.9.v p f 8Xx z v *Xj a k 5.*Xz g 9.*Xp h 9Xk g g f .f + c } ! + w ` w @ w M.w + =XiX:Xs z a 6XXeX>X5X:Xo.GXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXVXFXAXVXFX~ ~ ' b.Q.Y.~.T.Y.L.P.Y.Y.U.L.T.U.L.L.L.Y.U.Y.U.U.U.T.U.L.Y.L.L.L.D.L.S.L.L.L.H.U.L.S.S.S.D.A.D.g.A.k.l.g.g.f.f.a.a.a.a.i.a.s.i.u.u.s.u.u.s.t.u.t.u.", "C C C C A N N C C C C C C Z N N B B C B V B B C B B B B B C C B C B C C C C A Z C Z C A C Z Z Z Z Z C G Z Z B Z D D D D Z D Z Z Z Z G Z H Z Z L Z Z Z Z Z C F C Z Z D D Z Z Z Z Z C G G D D Z Z Z D D D Z D H Z Z H Z L L J Z L H D L Z H H H H H H L L P J H P P P P P P P L P H P J P P I I L P J P P P P P P P P L L P J L L U P P P P L P P ) J U ) [ ~.{.{.|.(._.|._.(.`.^.(.(.(.(.^./.(././.(.(.(.(.{.^.`.`.(.^.`.^._.|._.}.}.}._.|.{.^.(./.(.(.(.(.(.(.(.^.[.{.~.T.^.~.~.~./.~.~./.[./././././.(.(.(.^.).(.(.(.`.(.(._.(.(.(.(.(.(.(.(.(./././././.~.~././.T./.T.~.T.~.T.T.T.T.T.U.T.Y.Y.T.T.T.T.T.P.T.^.T.T.T.T.T.T.T.P.T.P.T.P.T.U.U.T.T.U.P.L.H.L.S.U.H.H.H.S.S.S./ ~ ! ZXZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX7X..7Xg v d b gXn l IXb > } =X< 7 :Xx n -X-X;X} . .7Xj l - , - @ @ , @ g p - a g h - d h z z ; h h a 7 @ - - - @ a + O h | M.-.4.2.=.2.2.=.=.2.2.=.2.=.2.2.;.M.} g a p z z s z h k v v v a a @ h j 4 & $ a :X:X*X:X-X-X>X;X:.-.-.-.-.>.;.>.>.>.ZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXMX} ~ ^ Y T h.S.L.H.L.L.L.U.U.L.U.U.U.U.L.L.L.P.L.L.L.L.P.P.P.P.P.P.P.G.H.! / ' MXZXAXZXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVX9.-.-.-.>.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.:.0XwX4.>.;.0XwX4.-.-.-.-.-.>.>.>.-.,.,.,.>.>.-.-.-.-.-.-.-.-.-.-.-.;.wX1X2X;Xa 4.9Xs - | / d l M.8.4 z 7 z o + h h + 5 + + @ - w * x b v k j s 7 =.j k 5 :X/ *X} x 8.4 d n ;Xd c n 7XX.X.X.O.X.DXDXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXDXFX~ / S M.].hXxXcXnXcXmXcXcXnXcXcXcXxXcXdXxXzXzXzXzX.XdXdX.X.X.X'..X.X|.{.! ~ S HXCXZXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX3X1X4.,.<.,X2X,X,XtX:X,X>X9.9.4X1Xx w n c v :Xb n + d a a eXn p eXx s iX-Xx n + O k k w -Xp - d h f } =Xa =X=X=Xv sXx O v f - -X-X>X;X;X-X:Xv W W W W +.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.O.| > v k - :X;X@ h -Xg a b k k v z -Xv + b uXyX>X9X.-.<.v a > | @.z k j g z g 5.k - j 9Xb z g 2.k z k * +.@.p > +.@.a < 9.i - < <.u 5 =X=X=Xs z - 8X:X5 l 6Xx 4 h 5.*Xp d 5.0Xs g a 5.0Xd h 2.0Xp a 2.0Xa h 2.0Xv h j 9Xk a v j j p v j 9Xp k =X=X=Xc W | @.k h ;XKXn g :X>X:XeXeX5X+...FXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXAXAXVXZXAXAXFX~ ~ ~ [ n.].~.T.U.U.P.U.P.Y.U.U.P.P.P.P.U.Y.U.U.U.Y.U.L.L.L.L.L.K.U.L.H.H.L.L.H.S.H.H.S.S.A.A.A.h.g.z.k.g.a.f.f.f.a.a.i.i.i.i.u.i.u.t.u.t.u.u.u.t.t.", "N A A N A C C C C C N C B B B N Z N N C N B B B N A C B C B C C B C C C C C C C Z C Z C C C Z C Z Z C Z D D Z Z Z Z Z G D Z D D G Z Z Z Z H G Z Z Z Z Z D C D Z Z Z Z Z Z Z G D Z Z F Z Z Z Z Z C G Z Z Z D Z D S L Z Z Z Z J J H H H D H H H H H H H H H J Y H J L P P P L P P P P P J P P P P P P P P P P P P K P P P P K P P J L P P P P P P P P P I ` ].`.^.^._._.[.|._.{._.'.^.(.(./.(./.^./.(.(.^.(.(.{.`.(.|.(.|.(.|.`.{._.|._._.(.(.(.(.(./.(.(.(./.^.~.~.(.~.~.(.!.~.~.~.~.~.~./.~.~././././.^.(./.(.^.(.(.(.).(.(.(.^.(.(.(.(.(.(.(./././.(.!././././.~.~.~.T.T.~.T.~.~.T.T.U.T.T.T.U.T.~.T.T.T.[.P.[.T.P.!.U.T.P.P.T.T.U.T.T.T.T.Y.P.P.P.P.L.Y.U.Y.H.H.Z.H.H.L.H.~ ~ Q ZXZXZXZXVXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.X.} g x + n aX+ z sX+ , | a g x } O.o.X.o.O. .X. .+.x @ g + b v - n { l w g 4 a h g @ p s =X*Xa a d + @ p g a h @ d z h } M.;.2.2 2 =.2 2 2 2 2 2 2 2 2 =.,.8.| h z + @ d - p p a 4 @ + p - a p g 4 4 l l g -X*X=XyXuXwX:.-.>.-.-.-.>.>.>.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXBX[ ~ ^ K e.Z.Z.K.H.L.L.Y.U.L.Y.L.Y.L.U.L.U.P.L.P.L.P.L.P.P.P.P.P.P.P.P.Z.! / _ BXZXAXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAX4.>.<.wXwX<.-.-.-.-.;.>.-.-.-.-.-.-.-.-.-.-.-.>.>.,.;.-.>.,.>.-.-.-.-.-.-.-.-.-.wX5.>.-.-.-.-.-.-.-.-.-.-.-.>.;.0X1X3X1X;Xa 2.k s p - + p 4 g k k + + 4 + 4 5 p d p + d s p h d @ z v v v v h 4 k j 2 n ;Xp :X;Xa x q.7 d v h + 8.gXv +.o.O.O.X.DXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXVX! S / M.m.hXxXxXnXcXcXcXcXnXcXnXnXdXdXcXcXzXdXdX.XxX@X.X.X.X.X.X|.|.|._./ ~ ! CXZXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX2XyX1XwX<.,.<.yX1X,X2X*X2X5.>.:.tX>Xz | iXeX> *Xv sXz w z k -Xz d -Xf k -X-Xd v k p v d v x s -Xc @ > | c z k s s O < O O s 4 n b g v > > > f } O.O.X... .X.X.X.X.X.X.X.X.X.X.X.X.X.X. .O.O.8X:X@ z g @ b -Xa a -X:X;X;Xx :X;Xl :X1X5X5X5X>X5XZXDXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXVXFXFXVXBX[ Q ^ ` b.Q.!./././././././././.^.(.).(.(.!.(.(./.(./.^./.(./.(.[././.].! Q ' BXZXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAX9.,.1.wX1.-.-.<.v a - , - g b v v j v g v g @ g v g v v v g h + @ - g $ - d g 4 4 z g 5 4 w g k h g g g g h g g h + @ 4 g a v k h p p @ g h p p a h a p a g a g g h a p h k v z @ a k v v v k z v v g k g g g w 0 w h h a k a v :X>X;XsX-XwX+.o.AXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXAXAXAXDXDXVXAX~ ~ I c.F.].~.T.Y.U.P.Y.Y.U.Y.U.P.L.Y.L.P.P.T.Y.I.L.U.U.L.U.U.L.S.S.H.L.L.H.H.H.H.H.S.S.A.A.g.A.A.g.g.k.k.g.f.a.i.a.s.i.i.i.u.u.u.u.s.t.t.t.t.u.t.t.", "C C C C C C C C C C C C C A Z N B B Z N A N C B B B B C B C B C B C N C C Z C C C C Z C D C C D Z C Z C B Z Z Z Z D Z Z Z D D D L Z Z G Z Z D D Z Z Z F Z D Z Z Z Z Z Z Z Z Z Z Z L Z Z Z Z Z Z D Z Z Z Z Z D D Z Z L H Z H Z Z H Z H H D D H H H H L L H J J H L L L P J P P P J J P P P P P P P P P P J P P P P J J L P P P P L P P P P P P P P P P I P F.^.|.{.|._.|._.(._._.(.^.(.(.(.(.(.^.(.(.(.(.(.`.(.(.{.^._.`.`.`.{.|._._.[._.|.(.(.^.(.(.(./.^././.~.^.^.~.~.!.~.~.~.~.~.^.~.~.~.~.~./././.[.(./.(.(.(.(.~.(.^.(.`.(.{.(.(.^.(.)./.(.(.(./././.~.~./.~.~.~.~.~.T.~.T.T.T.T.T.T.T.U.T.T.T.T.T.T.T.T.T.T.^.T.T.T.T.T.T.T.U.T.U.T.T.T.U.T.P.P.P.D.U.H.D.H.H.L.S.S.S.~ ~ S HXZXZXZXFXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.O.+.z l d f v v v v v O l v } O.X.o.o.X.X. .O.X.X.o.:X7 2.2 -X*Xc eXiX> 7 n q.a 4 8.2 + =XiX:Xp w c.w p p 8X:X@ z { sXh | M.,.=.2 =.2 2 =.2 =.2 =.=.2 2 2.,.M.+.@ ` n O p | -Xp 5 <.x 4 p | -Xs 7 2 eXgXz - W v s 2X1X1.,.9.wX:.-.<.wXwXwX<.>.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXBX{ ^ ^ I e.n.Z.L.L.L.U.I.U.U.U.U.Y.L.U.U.U.P.L.L.P.L.L.P.L.P.P.T.P.T.P.Z./ / ' BXAXFXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXyX:.<.1X4X4.>.-.-.-.:.wX4.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.;.wX4.>.;.0X5.>.-.-.-.-.-.-.-.>.>.-.-.qXwX1X:X;X;Xv @ z v v g z z d z h :X / X.DXZXHXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXZXZXVXS / ~ c.m.JXdXcXcXcXcXxXcXcXJXdXcXcXzXdXzXzXdXdXzX'.dX X.X.X.X|.|.|.|.|.~ ~ ! ZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyXyXyX1XtX0X:.1.tX2XyX:X2XwX0X<.<.>Xv A [ W u :X*X-X*Xz g 6XO.O.O.O.o.o. .O.o.O.:X+.O.X.O.n s .-.-.9.v p s w h g g a a g p 5 + a p g 5 g 5 h @ h a a d @ a p p a a a d + h @ @ + h a d O @ g a + + 4 h d - h h 4 a 5 g @ z @ h h 4 d a h a a a g z a a p @ w h h + + @ z k a p p v a p @ g g p h g l g a p j g a a z 5XuX:Xl g >X+.o.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXDXAXAXFXDXFXAXAX~ / ~ b.n.T.~.T.T.U.P.P.P.P.P.L.U.U.U.T.U.T.U.I.T.U.L.L.U.L.L.U.L.L.L.L.H.U.H.H.H.H.S.S.A.A.A.h.g.g.k.k.g.a.f.a.a.a.i.i.p.i.u.u.u.u.u.t.s.t.t.t.t.r.", "C C A C C C C C Z C C N Z C Z Z B B B C N N B B B C N A C B C V C B B C C C C C C C C Z B C D C Z G C Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z H Z Z Z H Z Z Z D C Z Z Z Z Z Z Z Z Z Z D Z Z Z Z Z Z Z Z Z Z Z Z Z D Z D D H Z Z Z H H Z L H Z L H Z H H H H H J H H L J J S I P P P P P P J P P J P P J L J J S P P P L P P P J P P L P P P P J P P P P P P P P ) P n.|.|._.|._.|.|.^._.`.`.(.`.^.^.(.(.^.(.(.(.(.(.|.^.`.^.(.^.|._.(.`.^._._.(.^.|.(.(.(.(./.(.(.~.~.[.~.T.~.~.~.~.~.~.~.!.~.T./.~.~././././.^.[././.^./.(.(./.(.(.(.^.(.^.(.(.(.(.(.!.(.(././.(./././.~.[.T.T.[.T.T.~.T.~.T.~.T.T.T.T.T.T.T.[.T.T.T.T.T.T.~.~.U.^.L.T.T.T.T.T.T.T.T.T.T.P.P.L.L.L.S.L.S.H.H.H.H.F.D.~ ~ ^ ZXAXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXGXVXo.o.o.O.O.o.O.o.O.o.O.7X8.} O.O.o.X.X.X.X.X.X.X.X.X...7X7 8.7 -X*X@.| W > < v g g 3 2.2.@ =X=X=Xv < 1.i p g 6X.-.-.-.-.;.wX4X0X,.-.>.-.-.-.-.;.-.-.-.-.qX5.>.0X1X2XuX;Xh 5 w p @ p a a a - v b z *XeXsXwX*Xp b 8.o | } @ W } + / W , g 5 < < j l v k d d l :X;Xn :X;X;Xd j 9.k w a w d + -X{ $ z X.ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXFX~ ~ ^ M.].].JXnXcXcXcXcXcXxXcXdXcXzXcXdXzXzXzX@X.XdX.X.X.X.X|. X_._._.(.! ! Q ZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX;X;X;X:X2X4X9.,.9.4XuX:X2X2X4XtX:.9.b c n t l ,X*X*X-Xd g -X} | | | | | } } | | n } | } | x p s k a z g z d -X2.k 2 =.a 8X3Xd c Q > v f v 6X@ .O.X.X.X.X.X.X.X.o.X.X.X.X.X.X.X.X. .X.X.X.X.O.f -X:X+ 8.g *Xz p p p 2.9XO 2.0Xs b 5Xk v l l l >XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXAXBX[ ! Q ` b.U.]./.T.~././././.(./.(.(./.(./.(.(./.(./.(.(./.(././.^.[./.K.Q / ' BXDXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXSX9.<.4X4.,.-.>.<.l a s 6Xc z *Xj k z =.8.z a n 8Xn + n sXn @ k f } f @ d 6X:Xa w c.w @ f z k a w [ w O z - v k a d } B + 4 4.x 5 s -X} a v 4 q.x - - ;X6Xw a 2.*Xh p -X} w z h n g g b k 2.p z 2.0Xp v k 9Xg v k 2.s k v k 0Xp v wXwX9X>X:X6X .X.HXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXAXGXZXAXZX~ ~ ~ b.n.!.T.P.T.U.T.T.U.U.T.L.L.Y.U.T.T.L.T.U.U.Y.L.L.L.P.L.L.L.S.U.S.H.H.H.H.S.S.S.S.z.A.h.S.k.g.k.f.g.k.i.a.f.i.a.i.u.u.u.u.t.u.t.t.t.u.t.t.t.t.", "C A C C A C C A C N A Z Z N B B N Z B C N C B C C N B V B C N C B C C B C C C C C Z A C C F C C C V Z C C Z Z Z Z Z Z Z Z Z Z Z Z H Z Z C G D Z H Z G Z G B Z Z Z D D D D G Z H Z Z Z Z D Z Z Z Z Z Z D Z D Z D Z H H Z Z Z H J Z H L Z H H D H H H H H H H J J H P P L L L L H H J J J L P J P P I P P P P J P J J J J J J J J J P P L P P P P I U P ) U n.[.{.^._.|._._._._.(.(.`.`.(.`.^.(.|.(.(.^.|.|.^.|.).{.|.|.(./.|.|.^.|.^.`.(.(.(.(.(.(.(.[.(.(.~.~.~.~.~.~.~.~.~.~.~.~.~./.T.~.T.~.T.E./.~.^././././.(.~.(.(./.(.(.(.(.(.(.(.(.(.(.(.(.(./././././.~.~.~.~.~.~.~.T.~.T.~.~.T.~.T.T.T.T.T.T.T.T.T.T.T.T.Y.T.T.P.T.T.T.T.T.T.T.T.T.T.T.P.P.U.U.P.L.L.S.H.Z.H.D.L.L.~ ~ ^ ZXAXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXVXGXo.o.o.o.O.O.X.X.X.X.X.X.O.O.O.O.X.X.X.X.X.X.X.X.X.X.O.+.s O O k v w % 0 z 4 s O h @ p + @ h s s p + < a a p g p h @ + @ h | M.;.=.2 2 2 3 k *X< 2 2 2 2 2 7 ,.8.} @ 4 w a p , - a w + + h @ - $ 4 g 4 @ 5 h g - - z <.qXuX1.,.<.wXwXtX.;.wX4.>.-.-.;.0XwX4.-.-.-.-.-.-.-.-.-.-.-.;.,XwX,.wX1X1XyX;Xw gXsX, } -Xp p -X} v :Xh *XsXsX:X*Xv d + O @ , O , @ + a , p h z v -Xk p v k 9Xs n +.O...7XuX>Xd j qXk z h 7 7 z ;X-Xz z X.HXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXDXZX~ ~ ^ v.m.JXJXcXcXnXnXcXxXcXcXcXzXzXdX.XzXxX'.zX.X@X.X.X.X X|.|.|.`._.(.~ S Q ZXGXDXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX:Xn b x -X:X:X2.;X;X:X;X:X-X:X:Xb b z :X:X*Xx ;X+ # p ;Xl z g k *X-X-Xp + *Xs g p p g g h + @ p a @ g x @ z k *XO 2 O - p a | o...8X} l n w W .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.O./ ,XKXp 6Xz & + # # p 5.qXs 5.qXd b 5XeXsX6Xb v uXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXAXFXBX{ ! Q ` b.F.Q./.~.~./.~././././.(./.(./.(./.(.(./.(.(.(./.(.~.(.E.~.(.].Q / / BXGXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXZX9.9.4XtXwX<.,.9.v a s 3X! a k qX*Xd 2 7 j @ r | @.a > } @.@ g > +.@.- v 8X:Xa < 1.u - k z f - < 1.c p v h z f p > +.W - < =.x z p =X6X+ k < =.x k - | | - p 5.9Xv p =XKXw 5 x x O z v k 0Xz z j j p v *Xj p z k qX-Xp v k j s v <.,.9.5X+...X.X.VXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXAXZXDXAXZX~ ! ' c.F.].T.^.T.T.T.P.Y.T.T.L.U.L.T.U.T.L.T.U.Y.R.U.L.L.P.L.L.H.L.H.H.H.H.H.H.H.S.A.S.A.A.A.h.k.z.k.f.d.i.a.a.f.i.i.i.s.u.u.u.u.t.t.u.t.t.t.r.t.t.", "C C C C N A N N Z N C N A S N B C C B B C N N B N C N C B C V C C C B C B B C C C C C C C C C Z C Z B Z Z C Z Z D C Z D Z Z Z Z Z Z Z Z Z Z Z Z Z D Z G G Z G C D D Z D D D Z Z Z D Z H Z Z Z Z Z F Z D D Z F Z S H Z H D H H Z L L Z L H H H H U H K H H F J J L L L P J J P J L L J H L P L P J J P P L P P P J H L L J J J J J P J L P P P P J P I ! P b.].{._._._.{._.|.^.`.`.`.`.(.^.|._._.(.(.`.(.(.`.(.(.(.{.`.(.|.|./.`.^.^.^.`.`.(.(./.(.(.T.T.~.~.~.T.T.T.~.T.T.~.~.~.~.[.T.^.T.T././.~.~.~.^.~.(././.(./.(.(.(./.(.(.(.(.(.(.|.(.(.(./.(./././.~././.~.~.~.T.T.T.~.T.~.T.~.~.~.T.T.T.U.T.T.T.T.T.T.T.~.U.!.T.~.P.T.T.T.T.T.T.T.T.T.T.P.U.L.L.P.P.P.L.H.H.U.H.U.S.Q Q S ZXAXFXFXVXVXVXGXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFX+.o.X.X.o.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...+.v } > k -Xp h O @ a k v h a g a @ @ k *Xk @ p s p w h z g v { | ~ +.eX,.2.2 2 =.j k j 3 2 2 2.2.2.4.,.M.| @ - p p @ h z z h - s p @ d p p g 4 5 l z a a @ g b k -Xk 2.4.1X1X.-.-.-.-.-.-.-.:.wX<.-.-.-.-.-.-.-.-.-.-.>.:.wX4.0X4.-.-.-.-.;.>.-.-.-.-.-.-.-.-.>.-.-.-.>.qX4X5.5.wXwXwX;Xz KXn W { - p =X6Xv -X@ *Xv g b *Xb :X- s g p p s s d s O p k - b :Xg k :Xk j s / O.....O.7X2Xh a g a g @ < 7 g z z @ x X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXVX~ ~ ^ M.Q.hX|.vXcXdXcXvXxXxXnXdXzXzXxXdXxX.XdXdX.X.X.X.X.X.X|.|.|.^._.(.! ! Q ZXDXDXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZX2X1X } s p h aXsX@ { 7X6XM.6X5.,.2.2 =.2 < v -X7 2 2.:.,.,.,.9X6X} @ | -Xs g sXgXh p | -Xs p | -Xs w 2 n gXl a x b h h l b h x :.5.1X2X2X2XtXwXwXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXMX[ ! ! ) e.Z.H.L.L.L.I.T.U.P.T.T.P.P.Y.P.P.P.Y.P.P.T.U.U.Y.T.P.T.U.U.P.Z./ / _ BXDXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX9.,.-.-.-.-.-.-.-.-.-.-.:.tX2X4.-.-.-.-.-.-.-.;.wX4.,.wX4.,.;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.0X5.-.-.-.;..>.>.b 4 4 O f - a p p l h h 5 ;X*X*X*X*Xk v @ 2.=.# W -XO W -Xs n sXh v *Xg k -X*Xv v O.7XhX7X} hXpXz z z g h z l l g w @ h @ .FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXVXS ! ^ M.Q.].fXvXcXxXxXcXdXxXcXdXzXzXzXzX.X.XdXdXdX.X.X.X.X|.|.|.|._._.(.~ / ~ ZXDXZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXSX2X2X>Xj 9Xk k j k z =.7 KXKX8.l k ;X-Xz =.b s 5 g 5.-Xa g :Xp 5 5 z 5 w b n + z n z @ v n @ + KXz @ z KXb a b k < 4 KX:Xh 7 2 ! O.X.X.+.O.....X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .X.:Xb x ;X;Xv ;X:XO 2.0X+ p :X;Xv :XeX6XaX;Xk uXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXFXVXFXBX[ / Q ` b.F.].~./.~./.~.[.[./.[.(././././././.(./.(./.(./.(./.!.[.^.^.]./ Q _ MXDXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXAXZXSX9.>.,.>.<.X3X+.+.X.X.X.X.VXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXVXDXDXVXZX~ ~ ~ b.F.].!.P.T.T.T.Y.T.L.T.L.T.U.T.U.T.Y.U.T.L.R.U.Y.L.P.U.L.L.S.H.H.H.H.H.H.S.A.S.A.A.A.A.h.z.g.k.f.i.k.i.i.i.f.i.s.s.u.t.u.s.t.p.t.t.r.t.t.r.r.", "C C B C B B C B C B C B C V N C B C C B B C N B B B B B B B B B N C N C B C C B C C C C C C C C Z C C Z F B Z Z Z Z Z Z Z Z Z F Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z L Z Z Z Z Z L Z Z Z Z Z Z Z Z Z Z Z G Z D D C Z Z D Z Z Z Z P D P H H H H H H H H H J H D P L Z L L Z I J J U L L U P S P P J L U H P P P L K S I L L L J I G H U J ( Q ) P I L ) P P [ F.].dX}.}.^.^.}.dX^.dX X X^._.(._.}._.'.}. X_.[.[.^.[.'._.[._._._._.`.(.^.(.(.(.(.^./.^.~.~.!.T.!.T.T.T.~.T.T./.T.~.~.[.T.[.T./.T.~.~.~.~.~.~.~././.!./.(.(.(.^.(.(.(.(.(.^.^.|.(.(.(.(.(./.^.~./.~.~.~.~.~.~.~.~.~.~.~.T./.~.~.T.~.Y.T.T.T.~.T.T.I.T.~.T.T.T.T.T.Y.T.T.T.T.T.T.U.T.U.L.I.L.U.L.L.L.L.L.H.L.L.H./ S / ZXVXAXZXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.o.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.o.+.o.o.X.O.X.3X>Xv l v :X1Xk eXz @ z KX;X- g -X-X@ z :Xn @ - | / s z aXb + +.M.>.-.,.,.:.2.2 2 =.3 l v 7 2 2.,.4.eX{ 6X6Xv - | } p g sX8.+ p W } h p W } z 7 2 sXsX+ a l v g - z b g v <.5.4X,X,X4X<.>.>.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXBX_ ! ^ _ T Z.Z.L.L.U.U.U.U.T.T.T.T.U.T.U.U.U.T.U.U.P.P.U.U.Y.U.T.T.T.T.Z.! ! ' fXZXDXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDX9.>.-.-.>.;.-.-.-.-.-.-.-.<.wX1XwX9.,.>.-.-.-.:.wX4.>.-.;.0X4.-.-.-.-.-.-.-.-.-.-.-.-.-.;.,XwX,.-.-.>.qX4X4X5.,.;.b w 8.x p *Xa h h l a a p d s k z w s :Xb 4 2.2. W ' - W } + / | > z z h z p s p l 7XhXhX/ 4 } hXv + s =X*X5XqX=X*X*Xj 4.o X.VXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZX~ ! ! c.m.JXfXvXvXxXxXxXzXzXzXzXzXzXzXzXdX'..X.X.XdX.X X.X|.|._.|.(.(.(.~ ~ ~ VXFXFXSXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyXyX.-.-.>.9.1X,X;Xa b -X;Xv h a h g 5 d % g z g a g v a p g a p O + v p - O h 5 4 @ h h z h g p a a + p z d + a z d p g a 4 x h h w p + g g h p p g + 4 4 g 5 @ 5 g + - @ g h a @ a g < 7 7 7 7 3 7 h 2 7 7 7 7 7 3 7 j 2 3 7 v 3X+. .X.X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXAXZXGXDXFXZXQ ~ Q b.n.Y.~.~.T.T.T.T.Y.T.T.T.Y.U.U.T.T.Y.T.U.Y.U.U.L.L.L.S.L.L.L.S.S.D.S.S.H.H.S.H.z.A.A.h.h.z.g.j.z.f.a.a.a.a.a.s.i.i.u.u.p.t.p.t.t.u.t.r.r.r.r.", "B C C C C C B C B C B C N C C N C B B V B N B B u B B B B B B B C N Z B B B B B C B C C C C F Z C Z C Z C Z Z Z B Z Z Z Z Z Z B Z Z Z Z Z Z Z Z Z Z H Z G Z Z L Z Z Z P Z Z Z Z Z Z Z Z Z Z Z H Z Z Z Z Z D D D G Z Z Z H H L Z Z Z Z H Z H H H H H H H Z H H H L L L L Z P J H H P J Z Z L U P P L K H H P L H U J U P I J S S K _ ` { { M.m.aXpXpXpXgXgXaXaXhXaXgXaXgXgXaXaXgXaXaXaXaXhXaXaXaXhXhX].].].'. XdX^._._. X_._.^.[.].(.(.(.(.(.(.[.~.~.T.~.T.T.T.T.T.T.T.T.T.T.~.~.~.T.[.~.~.T./.~.~.~.~.!.~.~.[././.(././.(.^.`.(._.(.(.{.(.(.`.(.(.(./.(././././.~.~.~.T.Y.~.~.~.~.T././.~.~.~.T.~.T.~.T.T.T.T.T.T.T.T.T.T.T.T.K.T.T.T.T.U.U.T.U.U.T.L.L.L.I.S.L.L.L.H.U.L.H./ S ! ZXVXAXZXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.o.o.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.o.o.o.X.X.O.+.6XqX,.<.uXyX2X-X-X-Xz a g p h a a z @ a z 5 h 5 > - p h z 5 h } M.,.4.=.=.2.< 2 2 =.< b -X7 2 =.,.eX+.| } b v v , $ @ p p a @ a o - p a , - @ l 9 @ w + g + + @ g + + + k 8.;X-X,X1XwX:.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXBX} ! ^ Y b.n.F.L.L.U.P.U.T.U.T.T.T.T.U.T.U.U.U.U.T.P.T.T.U.U.T.T.U.T.T.U.! / ' BXCXZXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZX9.;.>.1.wXwX<.-.-.-.-.-.-.-.<.wXwX4.0XwX9.-.-.-.>.-.-.-.:.4XqX>.>.>.-.-.-.-.-.>.>.-.-.-.;.>X1X4.>.-.-.;.qX:X5.-.,.b l kX6Xp ;X:Xa a ;X3Xp a sXz k n l s =X>X@ + a o - - + - - + $ , - l @ z k k 0Xp v 7X7X} b lXw ..| 6Xz *X=X*X;X*Xg =X=.2.< +.ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXZXVX! ! / M.].].'.nXxXxXxXxXxXzXxXzXdXzXdXdX'.zXdX.X.X.X.X X.X|.|._.(.|.`.(./ ~ ~ CXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX1X4.9.:X-X*Xk -X;Xg =.2.KXsX8.4 8.aXl h < p < 5 O p + h @ z 5 a x 8.q.@ d - @ @ a a z @ z p 7 [ O.o.X.o.+.O.u d v n l x n -X6X .X. .X.X.X.X.X.X.X.X.o.[ ) ) +. . . .X.X.O.O.O...O.X.+. .X.X.X.X.6Xb v 6Xc.iX@.;X:Xd -Xs + @ # # O l b KX0XqX>X0XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXCX' ! S ` b.F.L./.~././.~././.(.).(././.(.(./././.(./.^././././.(.[.[.~.L.S / ' BXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXFXZX9.>.>.>.>.9.1X,X,Xv >XyX.1.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXBX[ / ^ Y b.D.D.L.K.U.U.Y.U.T.U.T.T.T.T.T.U.T.T.T.U.T.Y.U.U.T.I.~.Y.T.T.Z.! / ' fXDXAXAXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX9.>.1.tX.-.-.-.-.-.-.-.-.>.:.wXtX4.>.-.-.-.-.-.-.;.wX4.,.0XwX4.-.-.-.-.0X4.>.-.-.-.0X4X0X>.-.-.-.-.-.-.-.,.2.@ h v O =X;X- p 6X3Xa z 8.h + n v s 5XwXk -Xa d g v v z z z z k z d v z k k j s v ;X:Xv 6XeX7 o.W 8.d p *Xv v l l *X# k c .CXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXZXVX! ~ ~ c.m.JXzXvXxXxXxXxXzXzXzXzXzXdX.XzXzX@XdX.X.X.X X X|.|.|._._._.(.(.! ~ Q ZXZXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyXwXwXyXyXyX1X1X2Xx 2 7 b 7 7 l 3 4 # w g 9Xk @ s ;Xc h @ + @ l O O O @ d 8X-Xs 8X-X- l 7 z | } } X.X.X.X.o.O.} } O.c } ..| +. .X.X.X.X.O...o.o.+.} 6Xx < < x 6X6Xn } | | } | } | Q } X.O.} { } b x v f / { @.b v v :Xg + h 2.9Xp 7 n IX4.9XXyX,Xl g 5.*X- s 3X} - k 2.k a v 9Xj - k # # # -XO # # @ x sXq.4 -Xj j a > +.W p v 3 1.i @ v j k a l sXn + f W } a k - W } g - d q.w 4 =.b g 4 =.x g + / | - h 5 a @ z z z z @ z a z a @ f @./ > > p d - c X.X.X.X.X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXVXVXDXFXAXAX~ ~ / c.n.!.~.~.T.Y.T.Y.Y.U.Y.T.T.T.T.T.Y.Y.U.T.T.L.P.P.L.L.L.L.H.Y.L.H.S.H.S.S.S.S.l.A.l.l.h.g.g.k.g.g.g.s.a.a.i.i.i.u.u.u.r.p.t.u.t.t.t.t.t.r.r.r.", "B C B C C B B C B C C N F N N C B B B B B B B N B B B B B B B B A N C C N C C B N C C C C C C C C C C C Z C Z Z C Z Z Z C G Z Z Z Z D Z G Z L Z Z H Z Z Z Z G Z Z L Z Z U Z Z L Z Z Z G Z Z Z Z Z Z Z Z H Z G Z D H Z D D D Z Z L Z Z H H H Z H H H H H H Z J L L L L L Z I J H J H L H L H P P G U H H Z P _ M.m.hXgXgXgXgXgXaXgXaXaXaXaXaXpXaXpXpXpXpXpXpXpXpXM.pXpXM.pXpXpXpX{ pXpX} pXpXM.pXpXpXpXpXpXpXpXpXpXpXaXm.aXpXaXQ.^.(.(.(.(.[.^.!.!.~.~.T.T.T.T.Y.T.T.T.T.T.T.T.T.L.~.T.~.~.~.[.~.!.~.~.~././.!./.!././.^.`.(.(.(.(.(.(.^.|.(.(.^.(.{.(.(./././.(./.~.~./.~./.~.~././.XXE.XXU.T.~.~.~.~.~.T.T.T.I.T.T.T.T.~.~.T.~.T.T.T.T.T.T.T.T.Y.U.I.L.Y.U.L.L.L.L.G.L.G.L./ / ! DXZXZXZXFXVXZXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXo.o.X.X.X.X. .X.X.X.X.X.X.X.X.X.X.X.o.+.6X:X8X:X6X6X3XyXyX6X . .O. .X.o.+.1X3X6Xf n n :X1Xv n z + l 8.k k z n d 2 Y sX-.>.,.,.,.,.,.,.,.b b k ;X;.,.,.M.| g sXsXh p | -Xs + | -Xp @ =.x @ p | -Xs 4 < | -Xs 4 q.k p x j 9Xv - / -Xs .4.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXCX' ! ~ P e.Z.F.U.L.U.U.U.U.T.T.T.T.T.Y.U.T.U.T.U.U.T.U.T.T.T.T.Y.Y.T.T.F.! ! _ HXDXAXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX9.>.9.4X4.>.-.-.-.>.-.-.-.-.-.-.-.-.>.>.>.-.-.-.-.-.-.-.-.>.;.:.wX4XqX>.-.-.:.1X0X>.-.-.-.:.1X0X>.-.-.-.-.-.-.;.,.b w sXgXp =Xs d a p a @ + O s s + p =X=X=X=X>Xk 0Xp z v p p s d p p p k z + p p k k O O O + n O.+./ f *X,XsXsXb l >Xf 6XO. .CXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXFX~ S ! m.m.].zXzXzXxXxXxXxXzXzXzXdXzXzX.XzX.X'. X.X'..X.X.X|.|.|.(._.(.(./ S Q CXFXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX2X1X,X2X,XtXwXX:XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXZXFXZXDXCX' Q Q ` b.F.!./.~./.!.~./././.].~././.(././.(.(./.(././.(.~.(.[.(.T.[.F.! ! ' BXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDX9.:.wXwXwXwXwX>X > n n , =X2Xk d X.O.X.X.X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXVXZXAXFXFX~ ! ~ b.n.].~.~.E.T.T.Y.T.Y.T.U.T.T.T.T.Y.T.Y.U.U.U.L.Y.L.S.S.L.L.S.S.S.H.S.S.S.A.A.H.A.l.l.h.h.g.j.f.a.g.a.a.a.i.i.i.i.u.u.u.u.u.t.u.t.t.t.r.r.r.y.", "Z N C B C B C B C B B C C N C C C B B B B N V m N B B B C V V u C C N C A C N C C B Z C C C A Z Z C Z C Z Z C C Z Z Z D D Z Z Z D Z Z Z L Z Z G Z Z Z L Z Z Z Z Z G Z Z H Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z D D Z D Z H Z Z Z L H Z H H H H H H H H H H H H H H Z Z H H L L Z J H G Y L ) ) Z P _ M.aXhXgXgXgXsXgXaXaXgXsXpXM.pXpXM.M.pXM.{ { M.{ { { { { { { { { { { { { { { { { { { { M.{ { M.{ pXM.M.pXM.M.m.pXpXpXpXpXpXpXpXm.hX].'._.^.~.~./.T.!.P.P.T.T.U.T.T.T.T.T.T.T.T.~.~.~.~.[.~.~.~.~./././././.(./.(.(.(.(.(.(.(.(.(.(.(.{.`.|.(.|.(./././././././.Y./.~.~.(./.~.~.~.~.T.[.T.T.T.~.~.U.T.T.I.~.~.I.T.~.T.~.T.T.T.~.T.T.T.T.T.T.T.T.P.P.L.L.L.L.L.L.G.L.L.L./ S ^ ZXAXFXZXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXo.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .+.yXuX9.<.1X6X .o.X.o. . . ... . .X.XwX:.-.-.-.DXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXVXBX' ~ ^ I b.Z.F.U.P.U.T.U.T.T.T.T.T.T.Y.P.T.T.T.T.T.T.T.T.T.T.T.T.Y.Y.T.K.~ / ' BXZXAXZXZXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXFXFXFXFXZX9.>.9.4X4.-.-.-.:.wX<.>.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.:.wX4.>.-.>.;.2XqX>.-.-.-.-.0X5.>.-.-.-.-.-.-.-.,.b z sXc -XXk j s g k k 9Xp z w O k p a z c @ *Xn 5 w n z v +. .o.O.O.6X:X;XsX6Xv >XX... .o.DXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXZXFX/ ! ! c.m.'.JXvXdXxXvXdXzXzXxXzX.X.X.XxX.XdX.X.X X|. X.X'.|._._.(.`.(.(.! ~ Q CXZXZXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX3X,X,X1X5.,.;.;.4.4Xl g 5.-Xh z x z z p v v z O s a @ z 8.z + j 9.;Xh @ z p + z h z j 6X+. .O.| z ' X.O.O.O.7XhX..W | o.| +. . .o.O.O.O.6Xv g g 4 eX8.+ a 6X:X- Q -X6X........o.o.O.O.o. .| 5 v :Xv z eXg -Xv ;XO b n 4 @ O p O x 2.;Xv b >X*XGXIXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXAXBX} S / ` n.F.{./.~.(././.~./././././././.(.(.(.(./.(././././.(.(.~.(.[.K.Q / ' BXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXtX<.>.>.-.>.>.9.2Xv :X2X>Xv h d d h h g p h g h h h @ z a g h - z + d @ d d p h d - g @ + + a p p a a g a @ + a @ O + a 7 7 7 7 7 7 7 4 g g g g h h - @ 5 g z w a g @ z g 7 < 7 < O :XeXO b v p p -XeX# :XKXk f > n x , -XKX:X/ o.X.X.X.X.X.X.X.AXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXAXZXZXVXZX~ S Q b.n.].(./.R.T.T.T.U.T.T.T.T.T.T.T.T.U.Y.U.P.Y.U.L.L.L.S.L.H.H.H.G.H.S.S.S.S.A.A.h.l.h.g.g.g.f.f.f.k.f.a.a.i.i.i.i.u.u.s.i.t.u.t.t.u.r.r.r.r.r.", "B C C C C B B C B B B V B N N N B B C B B B B u B B u B V B B B N N C N N Z C B N C A C C C C C C C Z C B Z A D C C B Z B Z Z Z Z G Z L Z D H Z Z H G Z L G G L Z Z L L G Z Z Z Z L L Z Z Z H C Z Z Z Z Z Z G Z D D D D H Z G Z H H Z H Z H H H H F H H H H H H H H L L H H H H L U H U L Z ' [ pXgXgXgXgXgXgXaXaXaXpXpXpX{ m.M.M.} { { ' ' ' ' ' Q _ S / S S S u S S u u u S u ! / ~ u u J ~ ! ' Q ' ' ' ' { { { { { { M.m.M.pXM.pXpXm.m.m.m.].T.~.~.T.T.Y.P.P.T.U.U.U.U.U.T.T.T.T.T.T.T.~.T.~.~./.~.^./././././././.(.(.(.(.(.(.|.`.(._.(.^.^.{.(.(.(.(.(./././.~././.^.~.~.~./.~.~.~.~.~.~.~.~.~.~.~.~.T.~.T.T.~.T.~.T.(.~.~.~.T.~.T.T.T.T.T.T.T.T.T.U.U.U.L.L.D.L.L.L.L./ S ^ ZXAXFXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.o.+.5.>.-.X-Xv -Xz @ O a g p g O 4 b } | } | +.} } | } | n l n n } | A c j d w 5 5 @ , - a a , , p a O O a + % - @ h 4 $ % @ 4 4 l < k v k v z d f v 1X9.;.-.-.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXVXHX[ ! ^ I b.n.D.U.T.U.T.U.T.Y.~.Y.T.T.^.T.T.T.T.T.T.T.T.T.T.T.T.~.T.T.T.F.! / _ BXZXFXAXFXAXFXFXFXFXFXFXFXFXFXFXDXAXAXDXFXFXFXFXZX9.>.<.wX<.-.-.-.<.wX4.0X9.>.>.-.-.-.-.-.-.:.0X9.-.-.-.-.-.-.-.,.;.>.;.-.-.-.:.2X0X>.-.-.-.>.>.-.-.-.-.>.>.>.>.,.>.b w z a z s -X} @ b :.j g n a + 8.h + g a b ;Xv v z z -Xg j s d a k k g 5 z x O ;Xv O z x + v 7X..O.O...7X:XeXsXeXp 5X+.o. . .GXDXCXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXFX! ! ! M.m.hXdXdXzXcXzXdXzXzX.XzXzXzX'.'.dX.XdX.X`..X|.|.|.|.|.|.`.`.(.(./ ! Q ZXZXZXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX,X,X.<.1Xz j 9.*Xw < 3 3 7 z p w @ k -Xv - O O # w @ k g z b 5 5 z v l 7 { O. .X.X. .} z ! O.O.O.fX7XO./ } .} +. .O.+.} | } v h 2 < x gX8.4 d 8X3X, f { , W .. . .o.o..... .O.} h x z + z sXz + ;X:Xa 8.8.@ w a l @ ;X1XtX5XtX:XwXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXFXAXAXBX' / / ` b.n.!./.~.R././.(././././.(.!./.(.(././.^././.[.(.[./././././.K.Q / ' BXFXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXyX<.>.-.-.-.>.<. f @.f / ^ ^ f v v v / ' n v @.@.f | ..o.X.X.X.X.X.X.X.ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXVXAXFXFXAXDX^ ~ Q c.n.].R.(.R.R.T.T.T.T.U.Y.U.T.T.T.T.T.T.T.U.L.L.L.L.L.L.S.H.H.H.H.S.G.S.S.S.h.A.h.h.l.g.g.g.f.f.f.f.a.a.a.i.i.i.i.u.u.u.u.t.p.u.t.t.t.r.r.y.y.", "B B N B C C B N B B B B N C B N B B B B V B N V B B m m C M B V B B N Z B B C B A N B C C C C F C D C Z C C Z C C C Z D Z Z Z D Z Z Z Z D Z G Z Z Z Z Z Z Z Z Z Z G Z Z Z L Z L Z Z G Z Z Z Z L Z Z Z Z Z Z Z Z D D Z Z Z H Z L Z H H H Z Z Z H H H H H H Z H H H L H H L L L H Z S S _ M.aXfXgXgXgXgXaXaXpXpX6XpXM.{ { { / ~ ) S u u u u y y e y e e e e ; > ; 0 r e : r y 0 r ; : ; : y t y y y t y u S u c u Q ~ ' { ' { { { M.{ { pXm.pXM.pXm.m.].].P.P.Y.Y.U.T.U.U.T.T.T.T.T.T.~.~.~.~.~.[.~.~.~.(././.!././.(./.(.(.(.(.(.^.`.^.(._.(.(.(.[.^.(.(.(./.^././././././.~.~.~.^.~.~.~.~.T.~.~.T.Y.~.~.T.~.T.~.~.T.~.T.~.T.T.~.~.T.T.T.~.T.T.T.T.Y.U.U.U.L.L.I.L.L.L.L.L.L./ ~ S ZXAXFXZXFXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXGXo.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .7X5.,.,.<.2X+.X.X. .+.uXtXtX3X7X.. .6XW x n - 6X>X2X2XyX-X@ w d v p p *X*Xp w p z 5 + a a h @ 4 4 h + + h 7 =.q.u g @ d a 9 h l l z g 5 4 h c 8.c p h h @ h 5 a p p g @ + 5 h a p - v 1X4XuXwX:.-.-.-.>.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXBX[ ~ ~ I e.n.Z.L.Y.T.U.T.Y.T.T.Y.T.~.T.T.~.T.T.T.T.T.T.T.T.Y.T.T.Y.T.T.K.! ! _ BXZXAXZXFXAXFXFXFXFXFXFXFXFXFXGXSXDXFXFXFXFXFXFXVX9.>.-.>.-.-.-.-.-.,.<.2X2XwX0X<.-.-.-.-.-.<.4X5.>.>.>.-.-.>.,.>.,.>.>.>.-.-.;.wX4.,.-.-.-.qX5.-.-.-.-.5.wX0X0Xj b b 5 h - @ s =X6X- j ,.9Xp + s s k v *Xj h h a a d l z k *Xk g z z a @ h l 4 + + a z + + 3 + k _ / } | | n *X-X*X*X*X:X+. .X.X.DXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXZXFX/ S ! c.].'.dXzXcXcXJXdXzXzXzXxX.XzX'.zX'.zX.X X.X|.|.|.'._.|._.(.`.(.(.~ / ~ CXDXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyXyXXv pXeX:X3 7 ` O.X.X.X. .X.| z / o...7X7X..Q :XsX:X:Xn { b a @ - - 4 2 7 - O # 5 + a a , x :X@ +...X.X.o.o.O.O.o. .| d n b p z + @ @ b ;X+ < O O z x c + ;XwX<.9X1X.-.-.-.>.<.1Xv +.W p z a v x @ v p # + 7 =.=.=.=.2 2 < z z -Xz d 4 =.b h 4 =.b g 5 sXeX- ..O. ...+.| O.O.O.O...O.o. .X.X.X.X.+.W W W W O...O.X.X.X.X.X.X.X.X.o.ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXFXDXFXVXFX^ ~ S b.F.Q.Y.~.~.T.T.Y.T.P.P.T.U.T.T.T.T.T.T.Y.U.Y.L.P.L.L.S.U.A.H.H.H.H.G.G.H.A.A.A.h.h.h.g.g.g.g.f.f.a.a.s.a.i.i.i.i.t.u.p.u.u.u.u.t.t.t.t.r.t.y.", "B B B C B B V G B B N V N C N V N B N B N V m N B B B B V B B C B N C N B B B C B Z B C C C C C C B Z C D C C Z C B Z C C Z Z B Z Z Z Z Z D Z Z L Z Z L Z H G Z L Z Z Z Z Z Z Z Z G Z Z Z Z Z Z Z Z Z Z Z Z Z H Z Z D Z H Z Z H H Z Z H L H H H F F H F H H H H Z G L H L D L D ) M.hXgXgXgXgXsXaXaXpXpXM.m.{ { ' ! ^ S u c u e : : t > ; ; > e e ; : : : : ; > : y r : : : r r ; : y : e : e ; e : > : t : : e u y u S u c _ ' ' ' { { { M.} M.{ M.M.M.m.Q.Y.L.T.U.T.U.U.T.T.T.~.T.T.T.T.~.~.~.~.~.(.~././././././.(./.(.^.].(.(.(.(.(.(.(._._._.^.{.(.(./.(./.~./.T./.~./.~.~.~.~.~.T.~.~.~.~.~.].~.~.~.~.~.I.~.~.T.~.T.~.~.I.T.~.T.~.T.T.T.T.T.T.U.T.I.U.Y.L.U.L.L.L.L.L.S / ! ZXFXFXZXAXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXo.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .+.X7X .X.+.9X,.:.tX6X.. .O.+.W W W } XwX<.>.-.-.-.<.0XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXBX} ~ ! I b.Z.Y.Y.U.U.T.U.T.T.Y.T.T.T.T.T.Y.T.T.T.T.T.T.T.T.Y.T.~.Y.T.T.F.! / ' BXVXFXAXFXAXFXFXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXVX4.,.>.>.-.-.-.-.-.-.-.<.wXtXtX4.-.-.-.>.>.:.wXuXeX0X9XiX5.0X0X9X0X0XwX9.-.-.-.>.-.qX4.>.;.wX5.>.-.-.qX4X>X4X.>.0X>X:XVXAXGXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXAXAXHX_ ! c ` b.K.!./.~././././././.^.^.)./.^./.(./.^.(.{.(.(.[./././.(.~.[.n./ S } BXFXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXeX<.,.>.,.>.,.4.:Xp ;X:X;Xk v k v k v h v g k v v g a z @ h p 4 7 w h @ > d p - - - a p p - p - & - a g a a - h @ O O d 7 7 < < 7 7 < 4 g h z a a h + 4 a 5 O 4 @ z / > ! ... . .+.W O.X. .X.X. .X.X. .X.X.X.o.O.O.O.O.O.X. .X.X.X.X.X.X.X.X.o.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXZXZXAXZX^ ~ ! ` n.!.(.~.T.~.T.Y.P.T.T.P.P.T.T.T.Y.T.Y.U.L.P.L.S.L.S.D.S.D.H.H.A.G.G.A.A.A.A.A.h.h.h.g.j.z.a.f.a.a.a.a.a.a.a.i.i.i.i.s.u.u.u.r.u.i.t.t.r.r.r.", "B B B C N N B N N N N F m m F N N N V N V N V N V B B N V V V M A B A N N B B Z B B C C C C C C Z C Z C C C A F G C C Z B D Z Z Z Z Z Z D D Z Z Z L L H Z G Z H Z Z G Z Z Z D G D D Z G Z Z C G C Z Z Z D Z C Z Z Z Z Z H Z Z S H Z H S Z H Z H H J S H H D Z I Z H J J J S { aXgXgXgXgXgXaXaXm.M.M.{ ' / ~ u u u t y e r r r r r e r r y 0 r r ; ; r r r r r r r r r : * y r r r r r r r r r r e e r r r r r r 0 r r e r e y u u ^ ~ ' ' { { { M.{ M.m.{ M.M.m.K.Y.L.Y.T.U.U.I.U.Y.T.~.T.T././.(.~./.~./.(.(.~.].(.(.(.(.(.).(.(.(.(.(.`.(.(.(.(.`.^.{.{.^././.(./.)./.!./.~.~.T.~.~.[.T.~.T.~.~.~.(.R./.!./.T.~.K.~.T.~.~.~.~.^.T.~.T.T.T.T.T.T.T.T.I.T.Y.L.L.L.U.L.L.L.U./ S ^ ZXVXVXZXFXVXVXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXVXFXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .X.7X3X3X.<.6X....o.X.o.O.O.o.X.o.8XtX;Xl n x a x 8.d p p 8X:Xd 4 sX8.@ l M.j @ 4 sX6X4 l | / @.z sXM.O k sX8.+ 4 z v 4 c | } @.p x b p 4 2 W } l 5 z x @ a 2.qXk v <.,.,.;.-.-.>.4.4XGXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXBX[ Q ^ ) b.Z.K.K.Y.T.T.T.T.T.Y.T.~.T.T.~.T.T.Y.T.T.T.T.T.T.T.T.Y.T.Y.~.F.! / _ BXDXDXAXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX0X0XwX<.,.,.>.>.;.-.-.>.>.>.-.-.,.:.0XwX<.<.>XsX;X5X5XsXeX5X5XsXeX5X9X,.-.-.-.;.1X4X4.-.-.-.-.-.0X4X2X>X-X:Xv v k j kXM.@ a v -X-X;X,.,.,.;X@ k eXM.:X:X@ v k j a v k 2.-X1X-Xk h x b + x =.# 8.gXd 8.gXv 7X . .X.o. .O.O.X.8XuX .X.X.X.o.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXFXQ Q ! m.m.].JX@XzXzXzX.XzXdXzXdXdX.X@X.X.X.X.X.X.X.X.X.X|._.|._._._.(.(.~ ! ! ZXAXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX3XtX,X,X1X1X1X1X>Xh w z :Xv g 5.*XO 9X*Xa s -Xb @.+.oXhX7XhXO.7X7XhXX.f O # s k z w p z a s 8XKXk w d a d v ,.>.<.tX:X:XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXFXAXBX[ / Q ` n.n.!.^./././././.(.[.^.(.(.(./.^././.(./.(.).(.{.(./././././.K.! ! } mXCXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyXtXj j j j j k z a a p h g < @ 4 h k =Xk g g g g g @ + + g a p d @ g @ a - h h g + g 4 4 a a g a p @ g p + O h h @ @ h h 5 l z z =X=Xa h g a h g g h a h x ;X;Xv c o.O.O.o.X. . .+.} O. . .X.X.X.o.o.X.X.X.X.X.X.X.X...o.X.X.X.o.X.X.X.X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXVXDXZXAXFX~ ~ ! c.n.F.T.{.T.T.T.T.Y.P.T.U.U.T.T.T.U.P.Y.I.L.L.H.L.S.H.H.H.H.H.A.H.A.H.A.A.H.g.A.h.h.z.g.g.j.a.i.z.a.a.i.f.i.i.i.i.i.i.u.u.u.u.u.u.r.u.E u.t.r.", "B B B m A N Z N C N C N V M N N V V N V m V N N N B N B B B B N B B C N B B N C u C C C C Z C C C C C C C C C C C C C Z C Z Z Z Z Z Z Z Z D D Z Z Z Z Z Z Z G Z Z Z Z Z Z L Z H D Z D C Z G Z B Z Z C Z Z Z D Z Z Z Z Z Z Z H Z Z H H H H Z J H Z Z Z H F J P F J J Z ) m.gXgXgXgXgXaXaXpXM.M.{ ' / u f u u y y e > : : r r r r r q r r : : r r r r r r r r r r r r r r r r r r r r r r r r r r e > r r r r r r r r * : r r 0 t ; e t y u u / Q ' ' { { M.} M.{ { m.Q.L.I.U.T.T.[.T.T.T.~.^.~.~.~.(.[./.(./.~.(./.(.(.(.!.(.(.(.(.(.(.(._.(.(._.(.(.(.).{.(.^.^././././.!./.~.~.~.~.~.T.~.T.~.~.~.~.R./.!././.!.~.~.~.~.~.T.~.T.T.T.T.T.T.T.T.T.T.T.U.T.T.I.U.L.U.U.L.U.L.L.~ ! Q ZXFXZXZXFXVXAXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXVXGXo.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.X.X.X.X.X.o...X.X.X.o.X.X...7X5.;.,.;.tX6X .X.X.X.X. . .X.8XwX1.b w + 5 h h d p p p g s d d g h + a h a @ a g g g x * = w 5 z g h a d d 5 h < s 4 l * * w @ @ + a 4 < , % @ h + < 5 g a g a b wXwX0X;.-.>.<.tX2XZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXBX} Q ~ Y b.Z.F.U.Y.U.T.T.Y.~.Y.T.T.Y.~.T.T.T.~.T.T.T.T.T.T.~.T.~.T.Y.~.K.! S } BXZXZXZXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXyX1X1X1XwX0X0X0X0X0X<.,.>.>.>.>.>.,.;.wX1X4.:.wXsXeX>X=XsX;X:X=XsX;X>X9X>.-.-.-.;.0X>X5.,.-.-.-.-.0XwXwX:Xk k p v j 4 z 2.j a b sXKX:Xj j qX;X@ *X:Xg b -Xh v k k g v k j -X:Xv :Xw l ;XO q.5.O sXsX. 6XsXp +. .X.X.X.o.o.X.o...6X6Xo. .X.X.X.o.DXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXZXVXFX~ Q ! c.Q.'.dX.XvX'.zXzX.XzX.XdX.X XdX.X@X'..X.X.X.X'.|.'.`.|._.|._.`.(./ ! Q CXVXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX,X,X,X,X,X2XuX r r y : t u u u n / ' { ' { M.M.{ { m.F.~.T.T.T.T.P.^.~.T.~.(.~.~.(./.^./.(.~.(.(./.(.(.(.(.(._.(.(.`.(.(._.(.`.^.(.^.(.(.(.(./././././.~.~.~.~.(.~.~.~.~.T.~.~.~.(.(./.~./.~.~.~.~.T.T.T.~.~.~.T.T.T.T.T.T.T.T.U.T.T.U.Y.U.I.U.P.U.U.U.U.~ ! S HXZXZXFXFXAXAXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXVXGXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.X.X.o.X.:X0X0XwXuX6X .X.X.X.X.X.o.o.:Xj 2.x z Y c w 3 7 z ;Xd a a @ a g p @ 4 O h @ + < 4 g g 5 x g g + 4 @ + a - a g @ z z h h h @ h h p h 5 7 =X*Xk 4 4 5 @ g h h a x -X-X:X<.-.>.5.4X,XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXBX[ Q ^ P b.Z.F.Y.I.U.U.T.T.T.T.T.T.T.T.T.T.~.T.T.T.T.T.T.T.~.T.T.T.[.~.L./ ! ' fXDXFXZXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXSXyXtX,X,X>X1X4X4X4X1X>X0X0X0XwX0X0XwX9.,.,.,.:.;Xx j :X>Xl l :X5Xz z :X9X>.>.-.-.-.,.;.qX4.-.-.;.;.,.,.:.-X7 j z g k k s 2.k p u 6XiX/ k *X*X:X5 k *Xb 3X-Xz k k *Xp v k j k v v -Xz + + + O g + h @ + @ @ z +.O.X.X.X. .o.X.X.X.....X.X.X.X.X.o.VXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFX~ Q Q [ m.].dXdXvXzXzXzXzX.XzX.X'.dX.X.X.X'. X.X.X|.|.|.`.`.`.`._.`.^.(.~ / ! VXVXAXHXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX,X,X,X,X,X,X;X-X# O O k z p v p + k g z z a a 5 h a g p - 4 h f } s x aX8.3 2 } O.X.X.X.X.X.X.X.X.X.X./ ;X=.=.2 7 g sXsXw ;Xh z z g g 8.8.+ d h @ z z a z a v g 7 =.Y O...O...X.X.X. .O.O...! s O iX:X=X5X5Xs x b - a z a 9.qXz v 4X5XeXsX:X5XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXZXFXFXHX' ! Q _ n.].]./.(././.(./.(.[.(.(.(.(.{.(.^./.(.(./.(././.(./.~.~.[.~.].S ! } BXZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXyX3Xj 2.s g 5.k h k -Xj k @ 8.kXg p =X=X=Xv v 5.k w a x z @ k f +.@.+ > X.@.a 7 1.i @ z sX8.4 > +.W + v O # # + h v f - l gXb O =X=X=X=Xz a ;Xz @ k =Xn h } O.O. .o.o.o.X...7XtX*X:XwX3X8X . .X.o. ...X.X.X.X.X.X.X.X.o.o. .X.X.X.X.X.X.X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXVXZXZXFXDX! S ! ` n.Q.!.T.T.U.T.Y.L.P.U.L.U.U.U.U.T.Y.U.L.S.S.L.H.H.H.H.G.S.S.A.Z.h.A.A.A.A.A.A.l.h.h.g.g.f.f.i.z.i.i.i.i.a.a.i.i.i.u.u.i.u.u.u.u.u.t.u.t.t.t.", "B C B C N N N C B C B B N N N N m V N V M N N N B N B B C V N Z B B B B Z C C C C C C C C C C C C C B C C C C C C Z C Z C Z C Z Z Z Z Z Z Z Z Z G Z Z Z Z Z Z Z Z Z Z Z G H Z Z D Z D Z Z Z Z Z Z C Z D D B G Z C Z F Z Z H Z Z Z J L Z L Z Z H H H Z Z Z Z P _ aXgXgXgXgXaXpXpX{ } ! ! n t y y > r y t : y : 0 r : e : r r r r r r r r r r r r r r r r 0 e r r r r r r r r e 0 r r r r r r r r r r r r r r r r : : r * r r r r t : r : ; : > e t y u u Q ' ' ' ' { { { { { n.F.U.~.~.Y.T.(.^./.(.[./.(.(.{.(.(.).(.!.(.).(.(.(.(._.(.(._._._._.(.(.(.`.{.^.(.[.(././././././.~.^.~.~.~.~.~.~.~.~.~.~.~.~.~././.~.(.K.~.~.~.T.T.T.T.T.(.~.T.~.T.T.T.T.T.T.T.T.T.P.P.U.U.P.L./ ^ Q ZXZXZXZXAXVXZXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXVXVXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.X.7X3X1X6X.. .X.X.X.X.X. .+.=.2 3 4 u eXiXe =.=.< z z n d + z n z 4 kXeX+ w eXM.O g sXsXz @ 8.kXO p :X3Xp w sXsXz + 2.=.O p -X6Xs 4 < 5XtXs w 2.k p - j 5.k d j 2.s <.-.-.<.1XX9X9X9X9X9X9X0X>X:X0X9X9X9Xj j 2.v aXKXw - sXKXp v v g S ! / / j j -X:Xg b l M.iXS a k k 2.p v k j s p k g @ d @ @ @ + a z g b v c } . .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXZXSXQ Q Q m.Q.].dX'.'.zX.X.XdXdX'.dX.X.X.X.XdX'..X.X.X.X X X|.|._._.{.^.^.(.! ! ~ VXAXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX,X,X,X,X,XX>XeXsX;XuXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXVXFXAXHX' ! Q ` b.F.T./.(.(._.(.(.(.(.(.(.(.(./.(.(.{.(././.(./.(.!./.~.[.!./.K.! ! / BXZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXyX:Xv v z v g v g h b v v p < l 4 p j s s g v k v g + 3 4 a p & = @ g @ > - p 4 3 w h @ 4 O @ d > & a g + O O h a g - h h h h g k j s a g 5 z p @ a p f W . .X.X.o.X.o...6X,XtX:X<.;.0X5X:X8XX. .6X6XX.X.X.X.X.X.X.X.o.o.X.X.X.X.X.X.X.X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXSXAXGXZXVXDX! ! / Y F.Q.Y.^.T.T.U.U.L.U.U.T.L.T.T.U.U.L.L.L.L.L.L.H.H.H.G.H.S.S.A.A.A.A.A.A.A.A.l.h.h.g.g.g.f.g.k.k.g.k.i.k.a.a.i.i.i.i.i.u.i.u.u.u.t.u.t.u.t.t.", "B B B B B N C N B B B B M M M M M B B M V N N M B N B B N C N C B C C B N C C N C C C B C C C C C C Z C D C C C C D C C Z B Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z G Z Z Z Z L D D Z D Z D D Z Z Z Z Z C Z Z Z B D D Z D G Z D D Z H Z Z Z L Z H Z Z F Z Z P L Z U M.gXgXgXaXgXpXpXM.' ' Q t y : r y t y ; r r r r y : r r 0 * : y r r r r r r r r r r r r : : y r r r r r r r r r r r q * y r r r r r r r r r r r r r r r 0 : 0 : r 0 0 r r r : r r r r y r r e u u ^ / ' ' { { ' { { n.D.[.T.R./.!./././././.(./.(./.(.(.(.(._.(.(._.^.`._.`._.`.|.(._._.^.^.(.(.(.(.(./.^.!.~./.~.~.~.^.~.~.~./.~.!./././././.~./.~.~.~.~.T.I.~.I.!.~.L.~.T.T.~.Y.T.~.T.T.T.T.T.T.T.T.Y.T.P.U.Y.! ^ ~ ZXAXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHXGXo.o.o.X.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .X.X.X.X.X.X.X.X.X.X.X.8X7 j k *X> } | % =.2 =.7 d sXv @ d eXn p z sX8.3 z sX8.4 p sX8.@ d sXM.6 s 8X8Xg z sXsX+ 4 2.2.4 s 6XKXk 4 g =X5X=Xw eXsX7 a 2.qXv d 2.5.k <.>.-.-.5.1XVXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXFXHXZXBX[ Q S ) b.Z.F.K.L.P.T.T.P.T.T.T.T.T.T.~.T.~.T.T.T.T./.~.T.~.~.~.^././.].! / ' BXAXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDX1XX>X*X:X:X:X:X:X:X:X:X-Xk *Xa l sXn @ l sXn h z l g w 0 0 x b v -X-Xh b v | { @.l g v k d v -Xp | -Xs 4 =.n O 8.x O 8.gXv >X;Xo.o.X.X.X.X.o.X.X.X.X.X.X.X.X.X.X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXZXFX~ ~ ! c.Q.hX'.zX@XhXzX.X'.'..X.X.X.X.X.X.X.X.X|. X.X|.|.|.|.{.|.(.`.(./.~ / ~ ZXVXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX2XXj 9.*X8.KXg l k 0Xs s 6Xw @ j 5.;Xk ;Xd a 7 n j a & & o 4 n + < 6X .X.X.X.X.X.X.X.X.X.o...x h - d h l w z 5 5 5 sXsX@ k p a + 4 x :Xn z g 6X8Xh z 4 2 3 2 - +.o.X.X.o.X.X...o.o.X.O.| v *Xs k s p d a 5.qXp d k k p b :X:Xn x ;X5XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXAXDXAXZXZXBX} S Q ` F.Q.^.~.(.(.(.(.(.(.(.(.|.(.XX(.(.(.(./.(.(./././.!./.!.~.~./.].Q ! [ BXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAX2Xx b -Xb ;Xb b k 5 w 7 7 j z a a g w n ' h g d d g a d @ g a p g @ g h @ + g z p p g k a z g a a @ @ g h z z h h h z g g d @ a h & w + h g p 4 g ;X:X7XO.o.o. . .+.| X.7X2X3X;X;X8.2.:X:XtXuX3X6XtXtX+.o.X.X.X.X.X.X...o...O.o.o.o.X.X.X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXDXZXVXZX~ ! ! c.n.!.Y.T.T.T.Y.U.L.L.L.U.U.P.U.U.L.U.L.L.U.L.G.G.H.G.S.H.A.S.A.A.A.A.h.h.A.h.h.h.h.k.k.k.g.z.g.a.g.i.d.a.i.i.g.a.a.i.i.i.i.u.u.u.u.u.u.u.u.t.", "B A V N B N M N B B N m N M M M M M M B N N N B N B B B V V B V B B B C C C Z C C C B F C C B C u C C C B C C D C Z C Z C D C C Z B Z C Z Z C Z Z Z Z L Z L Z Z L Z Z Z Z Z G Z G B Z Z Z G Z Z Z Z D Z Z Z Z Z Z Z Z Z D D Z Z Z L J Z Z H Z H P G Z I m.gXgXgXgXaXaX{ { ' u c : e t > r r r : r : r r ; 0 0 : y * : ; r 0 r r r r r r r r e r r r r y : : r r r 0 r r r r r r r : r r r r r 0 r r r r r r r r r r r : : r r r e r r t : r 0 r r : * r y y e u u S c ' ' { { ` { { n.^./.R.R./././.(.(.(.(.(.(.^.(.(.(.(.(.(.(.(.^._.^._._.(.|._._.`.^.(.^.`.(.(.(.^././.~.(.~.T.[.~.!.~.~.~./.~./.~.~.~.~.~.~.~.T.~.~.~.~.~.L.R.Y.~.U.T.T.~.T.T.T.T.T.T.T.T.T.T.T.U.T.U.U./ ! S ZXAXFXDXFXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXo.o.X.X.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .o.3X2.j j j < w 0 2 =.2 2 7 d z p z g p p @ z p O a z p O a p z 5 @ d + + p p a z a @ h 5 + 5 O g + a s p p h 3 s s s @ 4 7 4 h h k p a a v -XwX5.;.>.4.1XZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXAXDXFXFXVXBX} ! Q P b.Z.P.U.U.P.T.P.Y.T.T.T.T.T.T.T.T.T.~.^.T./.T.T.~.~.[.~.T././.].S / _ BXZXAXAXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGX:Xk + + *Xp n x *Xs n x *X:Xa n n k v k 5 k k l x h *XsXeX=XiXsXeX>X9X,.<.1X0X,.-.,.:.uXwX,.1.>X:Xj j d a j 7 + g 4 j + z a a k g g a h h p - h k l 0 q t z z ;X*X;Xx z p W } z @ =.x k sXsX7 6XsXg X2X2X,X:X:Xg k p 6 x < - j 9.*Xs :X} @ + g p p g + z 4 s O w 7 =.2 n KX8.{ o.X.X.X.X.X.X.X.X.X.X.o.6X2 1 sXv 2 7 g @ h h x gXn + z 4 z a - + + s + + a v p z d z z z 4 [ .X.X.X.X.X...O.O.X...X.+.:X5Xj l n 5 @ p k p v j 2.p b 5XuX=X*X*XtXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXAXAXZXDXZXDXBX[ ! ! _ n.].Q.(.(.(.`.(.(.^.(.(.(.(.(.(.(.(.(.(././.(./././.~.[.~.!./.F.Q ! ] BXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAX-Xg k 2X>X2X4X d g p v k *Xz v k k g - d p p l d W c @ p :Xn + s -X} @ 4 4.x p z s :X-X*X8X+.o.o.o.o. .+.u 6X8X,X,Xb g 7 g h 4 b +.7X3X:X3XtX+.o.X.X.X.o. . .o...7X:X6X+.o.X.X.X.X.X.o.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXAXFXDXFXVXFX^ ! S ` n.F.Y.T.T.T.U.P.L.L.L.P.P.U.U.U.L.L.L.L.H.H.L.G.H.S.S.H.S.A.h.A.A.h.h.A.h.h.h.h.h.g.a.g.a.a.a.g.i.g.k.i.a.g.g.i.a.a.a.i.u.u.u.u.u.u.t.u.t.u.", "B B C N N N C N N N N N M N M M M M M M M N B V B B B V B N M C B B C B C B B B C C u C C A C C N B C C C C C C C C C Z Z Z C Z C Z C Z Z Z Z Z Z Z G C Z L L Z Z Z D H Z Z Z D Z G Z Z Z Z Z Z Z Z Z Z G Z Z Z D D Z G D D D L S Z L Z S D Z Z S Z } gXgXgXgXaXpXM.{ ' S u y y r : e e r r r r r r r r r r 0 ; r t y : r : * r * : r r r r r r r r : 0 r r r r r r r r r r r r r r r r r r r r r r r r r r : r r : 0 : * y r r : * * : r r r r ; ; r = > e r r > : u u c ' ' ' { ' { b.F.~.T./.(././.(.(.(./.(.].(.(.^.{.^._.(.`.`.(.|._.`.|.(.`._.`.(.`.(.(.(./.(././.~././././.~./.~.!.(./.~./.~./././.~.~.~.~.~.~.~.T.~.~.~.T.T.~.~.Y.~.Y.T.T.T.T.T.T.~.T.T.T.T.T.T.U.U.~ Q ^ ZXVXFXFXAXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.X.o. .+.c g -X:X7 =.=.2 2 2 2 7 w p @ g p k k k 5 v v c @ a p a d p + @ a p a a @ p + @ a p p a 5 a a a z @ + @ g l d 4 4 g a z h g 5 z @ g @ d z 2X4X<.<.tX2XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXFXDXDXAXBX[ Q S Y b.Z.F.Y.Y.P.T.P.Y.T.U.T.Y.~.T.~.~.~.~.~.^.~./.~.~.~.~.(.~.[./.L.! / _ BXZXFXZXFXAXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXv -X:X) -Xs n b p p n b a :Xk b b @ @ n n k k z n k *Xb v *X>Xc l :X>X9X9X>X-X0X9X5.9X5X9X-.5.1X;Xv k z v g j v v g j k k b p v k b s k *Xk v h g l g k g z v :X:X-Xz z v , - d z 4 + + w x @ v v v +. .X. .o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXZXAXQ ~ Q c.Q.].dXzXzX.XzX.X.X.X.X.X.X.X.X.X.X|.|. X|.|.|.|._.|._.|.(.(.^././ ! Q ZXAXFXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX1XX*X8.8.w a x x 4 v k v g b >X2X2X2XuXyXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXAXZXDXZXDXBX' ! Q ` n.Q.(.(.(.(.(.|.^.^.{.(.(.(.(.(.(.(./.(./.!./././././.~.[.[.[.L./ / ' BXHXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXGXVXAXe b 7 :XyX2X2X>Xl z 2 2 =.w g 5.k a W ` W u g 5.k z p v k a k 3 8.=.@ g v f z v 2.0X@ k j j z z z c s k > +.W + g -X-Xz s -X6X- < =.b g g g =X;Xf 7Xo.X.o.X.X.O.| v ;X:X-Xb v 7 k KXeXj x +.o.O.+.8XtX+.X.X.X. .+.:X8X6X8XwX<.4.3XX.X.X.X.X.X.X.ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXVXDXZXVXZX^ ! ^ ` n.].!.T.Y.Y.L.L.L.L.L.L.L.U.L.L.L.L.L.L.H.H.G.H.S.S.S.h.A.A.A.h.h.A.A.h.h.h.h.g.g.g.z.g.z.g.a.g.k.g.z.g.z.a.a.i.i.a.i.i.u.i.u.i.u.u.u.u.u.t.", "B B B N B N N B M B M N N N N V M M M N B N N M B B B B N V B N C C N C B Z B B C B B C C C C C C C C C C C C D Z C C C Z C D Z Z C D B Z Z Z Z Z Z Z Z Z Z Z Z Z Z G Z Z Z D D D Z D Z Z Z Z Z Z Z G Z Z Z D Z D Z D Z D D H Z Z Z J Z Z Z Z S ` hXgXgXgXaXaXM.{ ' Q u > > : y r : t : r r e r r ; = r r ; ; t r * * y : 0 : r y r r r 0 r r r r r r r r r r r r r r e r r r r r r r r r r e r r r r r r r r r r y * : r r : r r : r : r r : r : y r : e : 0 r > e y y > Z n ' ' ' ' c ' n.]./.(././.(.(.(.(.(.`.^.(.`.(.(.(.(._.(.`.`.(.`.(.|.(.(.`.`.(.(.(.(.(././.~.(.~././.~././.~.~.~.~.~.~./.~./.~.~.~.!.~.~.~.T.~.~.T.~.T.~.T.T.U.~.T.T.~.~.T.T.U.T.T.T.T.P.U.U.U.U./ Q Q ZXFXFXZXFXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.o.o.O.W +.+.b 7 =.=.2 =.=.< z :Xv O z b v k / M.iXQ z { - + 5 2.=.+ 5 2.2 + 4 x 8.4 d -X> o h :X:Xp 4 x 8.4 k - -Xf O @ *XsX@ 4 l n 4 @ *XeXa ,XX+.X. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXQ Q Q c.Q.].'.'..X.X'..X.X.X'..X.X.X.X|..X.X.X'.|.|.|._.|.|.(._.(.(.(.!.~ ! Q ZXFXFXHXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXXj 5.k h =.x 5 5 k ;Xv + g 2.-Xs b s h p j k :Xv g 5.k p 5.*Xw 4 kX7 < { O.O.X.X.X.X.X.X.X.X.o.O.6Xj =.4 z + 3 7 k HXn @ h a @ z z < =.4 v v p 8X3Xs z p p g k v :Xp c +...X.X.X.X.X.X.X.X. .6X:X:X:X0Xk < 4 4 d 8.8.w v v b b -X2X,X>XuX2XyXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXAXHXDXBX' ! Q ` n.].!.(.`.(.(.(.(.(.(.(.(.(.(.(.(./.(.(./.^./././././.~.!.~.~.].~ / _ BXZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXSXSXGX7 n 7 >X2X & a h p d a a s z p h + 5 p h g s f W O.o.X.X.X.X...6Xb b x b b b z 8.IX9.x b 8Xo.7XyXuX+.o.X.X.X. .7XyXyXX2X2X,X,XVXHXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXHXFXBX[ / / Y b.n.F.T.T.T.U.P.T.U.T.U.T.T.~.~.T.T.(.(./.~.~.~.(.~.~.^./.[._.].! ! _ BXDXDXZXDXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXv :Xp @ @ w 5 z w + v w z @ g *Xl ;Xl @ @ a a z z z g v -X*Xg -X*X-Xv -Xv -X-Xv b k b *Xk -X;X3Xb ! eXiXf 7 j s a a - v k v z v v -X-X-X-X:X:Xa n g k n c O j =.O ;X:X@ | -XO =.2 2 2 2 sXsXp 6X..X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVX~ ~ / c.m.]. X.X@X'..X|..X.X.X.X.X.X.X.X|..X|.|.'.|.|.|.`._._.|.(.(./.(.! ~ ! CXVXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX3Xj 4.s a =.8.g - -Xb z - j 9.:Xg 4.k z z v k *Xk g 9.:Xp 9.*X@ b HX2.n .........O.O.O.O.O...O.6Xj @ a @ @ @ - z + a O 4 z } > + g z l + p - + k z p x a -Xn # d s @ 4 L O.X.X.X.X.X.X.X.X.o.| > > / @.c f b b - 4 4 @ b 5X3X+.+.8XtX,X,X,XyXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXFXBX' ! Q _ n.Q._.(.{.`.(.(.(._._.^.(.`.(.(.(./././.(.~.^./././././.(.!.(.].~ ~ _ BXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXl =Xg >X1X2X9.4.l h z d a g 5 a 5 g a h @ g 5 a - g @ a w g h p a w g h a a g z d - g p d - a h w 5 h k g h 5 a h a - d 7 7 7 g a z w 5 h j 6XX.X.X.X.X. . ...6XwX<.>.;.:.,.8.g 8.KX0X7 n 1XXtXtX1XyXtXyX2X0X,.,.,.1.wX>X-Xz @ @ S | } } k | =Xs -Xp @ p p a 4 4 s :XuXuX>X-Xz sXz + n v O q.2.4 -X:X- W } 6 2 2 =.2 2 k v x O...X.X.X.X.X.X.X.X.X.X.o.X.X.X.X.X.X.X.X.X.o.X.X.ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXDXVX! ~ / c.].]. X.XdX.X.X.X'..X'.'.|..X.X'..X|.'.|.|.|.|._.|.|.{.^.(.(.^.).~ ~ Q ZXAXFXVXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFX f p h 4 n x O u +.W @ b g @ a a k g @ p v v g v -Xs :X-Xp J [ +.X.X.X.X.X.X.X.o.o.W > } - W ..O.7X:X> > f c ;X1X+.o.O.6X5X,X<.:.wXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXHX[ ! Q ` n.Q.^.(.(._.(.(._.(.`.(.(.(.(.(.(.^./.(.E.^.^./././.!././.!.(.Q.S ! ' BXDXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX,X2X2X:X4.,.<.x d k *Xg a g 5.*X@ g 5.*X@ g 5.*X@ k ;Xv a g 4 5.< + l ;X-X@ g ;X, a @ } f @ w { o p *Xv } Q + @ ;X3Xp 4 3 2 4 d 8.l + l ;X+. .X.X.X.o.+.6X7XwX<.-.-.-.-.,.2.z z x 7 4 v >X1X3X+.o.X..... . ...o. . .X. ...O.+.X.o.o.X.X.X.X.X.DXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXZXVXFXFX~ Q ^ [ n.F.T.~.U.T.U.Z.H.H.H.H.H.L.L.L.L.H.H.H.H.G.S.S.S.Z.A.A.A.h.g.A.h.h.h.g.h.h.g.g.h.f.f.k.f.k.f.g.f.f.g.z.k.g.g.g.a.g.i.i.i.i.u.i.u.i.u.u.i.u.", "M N V M M M m N M M m N M N M m m m m m m m N B m B B B V u B V N C N N N C N C N B B B N C C C C A A C u C C C D C C C Z Z C C Z Z C Z Z C C Z Z Z Z Z Z Z D D D Z D G Z G Z D Z Z Z Z Z Z Z Z Z Z D Z Z Z Z Z F D Z Z D D Z G Z D Z G { gXgXgXgXaXM.' Q u y y * r : r r 0 r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r y r r r r r r e 0 r r r r 0 r r r r r r r r r r r r r r r r r r r r r r : r r 0 r r y u y u c n ' ^ ' ) K Q.{.[.(./.(.|.(.(._.(._._._._._._._._._._._._._._._._._.(.(.(.(./.(.[././././././././.~.!.~.~./.~.~./././.~./.~.~.R.~.T./.T.T.~.~.T.T.~.T.T.~.T.T.~.T.T.T.T.T.T.T.T.T.Y.~ ~ ^ ZXFXZXZXFXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXo.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .+.1X5XwX6X3X7X .X. .W +. . .O. .u 0X0Xo 7 k z d v z @ z j g h h g g g *Xj h w z *Xg w h h h z w h g @ z h h a @ h g d - a h l 2 3 7 l 2 < 7 z < 7 3 5 =.=.7 <.4.1X2X,X,XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXBX[ Q Q _ b.Z.F.T.T.T.P.T.T.T.U.T.T.T.~.~.~.[.~././.^.~././././.~.^.[.(.Q./ / ' BXDXAXAXZXZXZXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXDXDXHXd 7 n 7 z :X8.8.4 l 8.7 5 n n a z :Xv x d ;X*X4 2.3 @ :X2X2X5.,.<.wXyX2X2X>XtXqXqX4.,.*XtXb v k *X- = = b f W / j j + | =Xp @ eXsXO v :X;X-Xv l a p + @ @ O 3 h + v ;Xw - , X 6 2 2 6 2 7 7XX.o.o.X.X.X.X.X.X.X.X.X.X.o.X.X.X.X.X.X.X.X.X.X.X.X.ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXZXFX! ! ! c.m.].'..X X'..X|.|..X.X.X.X.X.X.X.X.X X.X|._.|.|.`.(._._.[.(.[././ S Q CXVXFXHXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXn v v v b v a @ h g v h a - w - - 4 g z h 4 7 v z a g a a w l v b v l n c f n f c n c f f n c n v z 7 > X.W + v v @ l 8.8.@ + , , @ 7 =.7 z @ h z w 7 4 x p k k O 6X3Xp 7 7 ) O.X.X.X.X. .X.X.O.+.z :Xa @...+.7X6X; } - f 4X3XX.X. .8XyX2X5.,.5.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXBX[ Q ^ _ n.].].(.`._.(.(.(.(.(.|.(.`.^.(./.(.(./././.(./.(./.(./././.(.F.! / _ BXHXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXyXtXtX4.:.5.:.<.x p j 9.*Xd j 9.;X- j 9.:X5 j 9.:X@ v ;Xh z k < 8.=.+ v 8X:Xd b :Xn p > +.W @ < 1.c.p k f +.W @ z 8X8Xh v k *Xh l aX8.s ;XX.X.X.X.X.X...6X5X,X:.-.-.-.-.-.,.2.b b -Xb b :X:X+.X. .o...+. > e y y u u c c ~ / n././._.(.^.(.(._.|._._._._.'._._._. X_._._._._._._._.(.(.(./.(./.(./.(./.(./././.^.~.~.~.~.~.~./.!./.~./.~./.~.~.T./.T./.~.~.T.~.~.T.~.~.T.T.~.T.{.T.T.~.T.T.T.T.T.T.~ ! ^ ZXVXZXFXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.X.X. .X.X.X.X.X.X.X.X.X.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .+.uX0X:.-.<..,.<.,X2XtX2X1X1XtX0X:X>X;Xk j j p l l l d > - a -Xd | } 5 d gX8.3 p z a z ;Xz x z v v a 5 - z p @ + @ z + n gX5 n KX7 3 +. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXFXQ ! ! m.Q.hX'..X'. X.X|..X|..X X.X|..X.X.X|.|.|.|.|._._._._.(.^.^.(.(././ ! ! CXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX1X5.:.:.:.5.-X2.k z :Xv ;X-X2 3 n 7 < < n 7 7 l v j -Xk *Xk :XuX2X:Xv W O.O. .o. .o.O.o.O.X.X.o.v 3 2 > , O s - w a 7 4 - d z k a 7 2 4 g @ sX6X2 =.2 < z a d a f f - | ..X.X.X.X.X.X.X.X.X.X. .x n z @.| W ;Xv - ;Xw / 4X+...X.X.6X,X3XyX;.;.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXFXFXBX} ^ ^ [ n.].!.(.^._.`.|.(./.|.(.(.(.(.(.(.(./.(.^.(./.(./.(.(././.(.).]./ / ' BXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX5.;.>.:.wX4X4.<.v a a v b z a k g z a k g h p k g h h z a a a O a a z d d d z l l p z - > - z 4 < w < 4 + > , z a a z + -Xj j a l ;X;Xb O. .X.X.X. .X.6X1X1X:X-.-.-.-.-.;.>.9X4X2XXtX9.5. : e : r r r 0 r r r r r r r r r r r r r r r r r r r r e r r r r r 0 r : r r r r r r r r r r r r * y : r r r r r e 0 r r r e r r r r r r r r r r r r r r r r r r r e 0 r r r r r r r r r r 0 r r r r r r r r r 0 ; 0 ; = r r : y u u n S ! f u [ !.[.`.^.^._._._.|.|._._._._._. X_._. X_._._.(._.(.(._.(.(.(.(.(././.(./././././.~.~.~.~.~.~.~././.~./././.^.T./.~.~.T.~.~.T.T.~.T.~.T.[.T.~.T.~.T.T.T.T.~.T.T.U.T.~ ~ ! ZXFXFXZXAXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .X.X.X.X.X.X.X.X.X.X.o.X.X.X.X.o. . .4X5.,.>.>.yXyX6X6Xu | Q } O. .} ;X:X:Xv w ' - + l sXa + z eXn @ d ;X6Xw l sXz a h eX;X z n x a a k -Xg a 6XKXk z :X;Xz p z b ;XO x v o v :Xx g *Xp *XiX=XX1X:X>Xb l k v l 5 d @ 5 h g h ;Xv $ - a z @ O + z z + @ p a z z ;X-XS ~ + d n :X+ z x p sXsXO aXsX3 =.+.O.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.X.X.X.X.X.X.X.X.X.X.ZXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXSXZXFXQ ! ~ c.Q.]..X.X X|..X|.'.|. X X.X|..X|.|..X|.|.|.|.}.}.`.^.(.(.(.(.!.(.! / ! CXVXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXyX9.,.-.,.<.j 4.g l ;X-XKX-X2 7 n 5.2 3 n 7 j l j 9.;Xg 9.b -X:Xv x c +.O.X.X.X.X.X.X.X.O. .O.6Xv a 6X-Xa v d p d - @ @ h x z n ;Xh v p + a x IXn O < < O -X, d x @.> ' > W O...X. .X.X.o.X.X.X.@.W W @.W .o.7X6Xx n z f +.+.+.+.6X.9.3X+.X.X... .o.o.X.X.o.6X3X>X2XtX;.>.;.,.9X3X8X8X6X6X8X............o.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXAXZXDXFXZX^ ~ S Y b.F.I.U.K.L.K.Z.S.H.S.H.H.S.S.H.S.S.S.S.A.A.A.H.A.A.h.A.z.h.h.l.g.h.z.l.a.l.g.g.g.k.k.k.f.f.f.f.f.f.f.f.f.f.f.f.a.f.a.a.a.a.i.i.i.i.i.i.a.i.", "m M m m N m N N m m m m N m m m m m m m m m m m m m m N m N N N N N N C N N B B C N C C C C Z C C B A C C A C C C C C C C C Z Z Z Z C C Z D Z Z Z C Z Z Z Z Z F Z L Z L H Z Z Z D H Z D Z Z H Z Z G Z Z Z Z D D D D Z F Z H S Z S gXgXgXaXpX{ ' S u e r : : y y * r r r 0 r r r r r r r r r r r r r e r r r r e q r r r r r r r * r r r r r r r r r r r r y * : r r r r r r r r r r q r r r r r r r r r r : r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r : y y y y S n S u u ) !.{.(.|._._.{.`._._._._._. X_._._._.|._._._._._._._.(.(.^.(.(.(.(././.(./.(./.~.~.~.Y.~.~.~.~././././././.~./.T.~.~.~.~.~.~.~.~.T.T.~.~.~.T.~.~.~.~.~.T.T.T.T.T.~ ^ ^ DXVXZXZXFXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXo.o.X.X.X.X.X.X.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.O.+.0X,.>.5.j -X*Xv p @ @ / o.X.o.} Q x v v 3 9.q.@ d + a @ + s *Xg @ a v + 5 O O + - p z + z 5 @ p h a k d a s z a h l n a h z ;X:X# ;XsX@ v *Xb sXl @ wXiX-X9.,.4.uX2X,XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXHXBX[ ! c Y b.Z.K.Y.Y.T.P.Y.~.T.~.T./.~.~.~.~././././.!.(.(./././././.(.~.].! / _ BXZXAXFXZXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXd j 5.k z 5.9.v 5 z l d 5.9.b v b f > > ! v h @ v b ;Xv b d d d z n -X:X3X2X,X,X,XtX1X:X:X:Xv z z l v n - O sXaXp w x ;Xz z v g z v b 4 4.s O sXsXw ;X-X+.+.+ - } +.& l :XO p @ O 4 + O 7 +.O.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.GXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXZXVXQ ! ~ c.m.].|.|..X'..X|..X.X|.'.|..X X'.|..X|. X|._._.{.(.`.^.`.`.(.(.(./ S ! CXVXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXyXwX;.,.:.0X-X-X-Xv l k v O 2 2 s O 2 2 s O 2 g k *Xv s -Xk h b x +.X.X.o. .X.X.X.X.X.X.o. .7X=.7 z KX z ;X- W ..O.X.X.X.X.X.X.X.X......... .X...o.+.W W @.W W N | ! :X*X:X>X>X,X:.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXBX' ! ~ [ m.].{.(.`.`.{.(.|.|.(.(.{.(.(.(.(.(.|.(.(.(.(.{.(.(.!.(.(.(.^.].! / [ BXDXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXwX5.wX1X,X1X9.<.b k k *Xp + p *Xg h a a + @ p p @ @ @ p p a p p p a + p + @ @ a p p @ p - @ a p p p a z k :X-Xa h 0XwXg b v ;X7XX... .O.O.X.X.X.X.6XX4.>.5.3X8X6X8X6X8X+.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXFXZXFXDX^ ~ ~ c.b.Z.K.L.J.H.H.H.S.A.S.A.S.H.H.H.S.S.S.A.A.H.A.A.z.A.A.h.h.h.h.h.g.k.h.g.l.f.g.g.g.k.f.k.f.f.g.a.f.f.f.f.f.f.j.f.f.a.i.a.a.a.f.i.i.i.a.i.a.a.", "N m N m m m m m m m m m m m m m m m m m m m m m N m N N M M V N C N N C N N C B N C C N C N N A C A A C C C C C C C C B C C C B B C C Z Z C C C Z Z Z Z Z Z Z A L Z Z Z Z Z Z Z Z Z D D Z L Z Z Z Z Z Z H D Z Z Z H Z Z D L ! ' gXgXgXaXM.{ _ S : y ; r r : ; ; r r r * r r r 0 r r r r r r r r r r 0 r r r r r r r r r r r r r y r r r r 0 r r r r r r r r 0 y r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r e r r r r r r r r r r r r e r r r r y y > ; y y u S c u u n S !.(._._._.^.`._._._._. X_. X X_. X_._.`.`._.(._.(.(.(.(.(.(.(.(./.(./././././.~.~.~.R./.~.~.~.(.~./.~.~.^.~.E.~.~.T.~.(.~.~.T.~.(.~.~.~.~.T.~.~.T.T.T.T.T.T.Y.~ ~ Q ZXFXFXFXFXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .+.X;XW O.X.X.O...+.3X;Xw w u > c z b v z x b -Xp pXl l - -X> + v v b b z z j k g - h k h - a 5 g w z - d h + v O p p O v -Xa g + h g k p 2.5.tXyXtX>XBXVXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXBX} ! S _ b.n.K.Y.Y.T.~.T.T.~.T./.T.~.~.~././.!./.!.(.~.~./.(.~././.[.(.].~ / _ BXZXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHXDXDXz j 9.-Xz j j @ z n w d ;Xb x :X4X@.u c > 8X:Xv k >XqX<.1Xj 2.< - z v l b tX2XyX2XtX>XtX*XtX-Xk *Xa x lX8.z gXn g j -X:Xp g -X-Xw - z @ kXb + aXeX+ v s o , a d , , o + + O j =.+ h n sXv 7X..o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.ZXAXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFX~ Q _ c.m.].`..X.X|.|. X|..X|.|.|.|.'.|.|.|.|.|.|._._.^.(.(.(.(.(.(.(.~./ / ! VXZXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXyX1XwX5.0X4X2X1X5.4.v ;X2 2 2 2 2 k < 2 2 2 z v .>.-.,.9.3X+.o.X.X.o. .X.X.o.o.7X.-.-.>.5.1XX>X>X2XyX8XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXVXZXFXSXFX~ ~ ~ Y b.n.K.U.L.S.H.A.S.A.h.H.A.H.S.H.S.A.A.A.A.A.A.A.A.A.h.A.h.h.g.g.h.f.f.a.f.h.g.f.f.g.z.a.k.f.k.a.f.i.f.f.a.f.f.f.f.k.a.a.a.a.a.a.i.a.a.a.a.a.", "N m m m m m m m m m m m m m m m m m m m m m m m m N m m M M V N N C N N C N N B N N N C N C C C C C C C C C C C C C C C C C C C Z C C Z Z Z C Z C D B D B Z Z Z Z Z G Z H Z Z G G Z D D Z Z H Z Z D Z G Z Z Z H Z D H G D S _ BXgXaXpXM.' n : > : ; ; e e ; ; y r * r r r r 0 e r r r r r r r r r r r r r r r r r r r r r r r e r r r r r e r r r r r r r r t * y : r r r r r r r r r r r r r r r r e q r r r r r r r r r r r r r r r r r r r r r r r r r r r r * r r r r 0 ; r r r : : : ; y : : > A y ! : y S (.(._._.|.`.(.|. X_._._._._._._.|._.{.|._._._._.(.(.(.(.(.(.(.(./.(././.~.~.~.~.~.~.~./.~././.~././.^.~.(.(.~.~.(.~.T.~.(.[.~.~.~.~.T.~.~.T.T.T.T.~.~.T.T.~.~ Q S ZXVXFXFXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHXGXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.7X3X2X-XKXKXz z KXKX} +.o.X.X.O.X.o.n | O.o.O.} { +.KX*X:Xn @ a KX:Xd l ;X:X% :X1X1XuX-Xx v *X5 eXg *Xg n l + h -X:Xs z @ eXn - n l + b x z c x g @ w -Xv v wXm.wX5XVXHXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXZXCX] Q Q I b.H.K.Y.Y.~.T.[.~.[.~.~./.~.~./././././.^.(.!.[./././././.[./.F.S / ' BXVXFXZXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXHXz @ k h z =.k s @ < O z v b b XuXuX*X>X;Xj j a z ;X:X@ z h 7 j -X-Xg :XuX;X5 eXsXO 8.x % l i t z h l @ z @ z v b b b 4 q.2.4 - gXKXg +.O.o.o.X.X.X.X.X.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.AXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXZXFX! ! / c.n.].].@X.X|..X|.|.|.|.|.|.|.|.|._.|. X_._.|._._.(.(.(.(.(.(.)./.~ ~ ! CXVXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXyX.<.l l 2 2 3 6 2 d :Xk 2 =.z >X:X:Xv l v 6X+.+.o.X.X.X.X.X.X.X.X.X.X.X.X.X.7X8 7 5 @ @ z -Xd , , O p - z k h 5 h a v z a - O 2 7 a > , < 2 5 -X:X, W @.@.} 6X..X.X.X.X.X.X.X.X.X.X.X. .X.X.X. . .+.X.X.X. .X. ...6XtX>X:XyX3XqXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXFXZXCX_ S ! [ n.].].`.{.`.(.^.).{.`.^.{.^.|._.|.(.(.{.|.(.(.(.(.(.^.(.^._.[.].! ! ] BXHXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXGXyX5.9.1XX@ v 6X +.W + z l p v -Xz 6X+.+.+.o...O.X.X.X.X.X.X.X.X...8X2XtX1X.>.5.1X,X2X,X1X2XyX,X,XtXtX2X2X u S ].^.|.(._.|.|.}.}.}.}._._._._.|.{._.{._._._.(./.^.(.(.(.(.(.(.(.(.(.(././.~.!./.~.~.~.~./.~.~./././././.(././.~.~.(.T.(.~.(.T.~.~.~.~.~.Y.T.!.~.T.~.T.T.T.~ ~ ~ ZXVXZXZXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.+.o.o.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .X.X.7Xv -X-Xz @ k k b 6X+.X.X.X.X.O./ / O.X.X.X.O. .o.v b v k k -X-Xk v -Xv W o.+.6XyX-X;X:Xe z sXz + a ;X:Xt a 6XKXk k - XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXCX[ / ~ U b.F.K.T.~.T.Y.~.~.~.~.~./.T.~././././././.^././././.!.~.(.^.~.K./ / _ BXZXZXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXHXz d @ @ d 8.sXz ;Xx v b 6Xo.+.6X3X/ n n > 6X>X1X2X:Xv ,X1XO O O - :X2XyX;Xz b X:X:XtXtXuXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXZXFXFXAXCX' ! ! ` m.].].`.(.`.{.(.`.^.|.{.|.(._.(.|._.|./.).(.(.{.^.`.`.^.^._._.].~ S } BXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDX3X1.<.1X,X2XwXwXz @ l a h @ a a g a 5 @ p h a k g h h k g @ p z h p z l @ g h z g a z l p h - f f d f z z 6X+.+.X.X. .O.o.X.X.X.X.X.X. .X.X.X. .X.+.X.+.o.+.+.+.o.+.+.O.o.o.o.o.X... ...7X6XwX<.0X4X<.-.-.-.<.qX>.5.1X,XyX2X2X,X2X1X4.,.;.5.tX9.ZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXZXGXDXZXZXS ! ~ Y b.n.G.T.P.G.H.G.A.A.A.A.S.H.G.A.A.A.A.A.A.A.A.l.l.A.l.h.j.j.f.j.z.f.z.a.z.a.f.f.k.k.f.a.k.f.a.a.a.f.k.j.a.s.f.f.f.f.f.a.i.j.a.a.a.a.a.a.g.a.", "m m m m m m m m m m m m m m m m m m m m m m m m m m N N M N V V N N N V B N V B B N C N N C B C B C B Z C N C C N N C C C C Z C C D Z C C Z B D Z Z D B B Z Z C Z Z Z Z D D D D Z Z Z H Z Z H Z D D D D G Z Z G Z H Z Z J gXgXhXpX{ ' Q y r r r = y r r r r r r r r q e r r r r r r r r e r r r 0 r r r r r r r 0 r r r r r r r r r r r q y r r r r r r r r r r r r r r r r r r r r e r r : y r r e r r r r r r r : r r r r r r r r r r r r r r r r r : r r r r r : r r r r r r r r r r r r r r : r y u > u n y y A ].(.{._.{._._.}.}.}._._._._._._._._.^.|._._.|.(.(.|./.(.(.(.(.(./.(.(./.~.~.~.~././.~.~././././././././././.(.T././.~.(.~.~.~.~.~.~.~.~.~.~.T.T.~.T.T.T./ ~ ^ ZXVXVXFXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.o.o.o.X.X. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .X.X.X.X.X.X.X.X.X.X.X.X.X.X. .X.+.+.;Xl @ @ v k W o.X.X.O.../ } X.X.X.X...O.O.O.+.:X1X2XXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXBX' Q Q P b.F.L.~.T.(.~.~.!./././.~././.~./././././././././././.(.~.[.~.].S / ' mXDXDXDXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHXd j 5.*X- < x 3 w b 8XX.X.o.O.X.X.W W f W :X2X>X2X1Xk :X1Xj 2.< @ :XyX2X2X;Xl :X1XX>X:X>Xv d z g g h a 4 sXsXh sXsXs z b ;X- + @ a | O.X.X.o.o. .| 4 h h z lXsX# -X> o z a a a 4 n aXb 8XX. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.X.X.X.X.X.X.ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXFXVX~ ! ~ c.n.Q.|.|..X'.|. X{.|.|.|. X X}.|. X|.}.}._._._.[.(.(.(.(.(.(.(././ ! ! VXAXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXDXSXAXDXFXFXFXFX1X4.:.:.>.4.2.2 2 2 2 5 z d f v j h v g 2 2 d n v 6Xo.X.X.o.X.X.X.X.X.X.X.X.X.X.X.X.o. .O.[ 7 2 2 x 8.j @ v KX:X+ z z z 7 4 2 2 7 2 2 7 a -X-X d p 5 p -X, # h g 5 c ;X3X6X . .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...8X5X>X>X5X5XuXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXAXAXAXBX[ ! ! ` n.].'._.(._._.(.^.`._.`._.|.{._.(.|.^.|.^.(.(._.(._.^.(.`._._.!./ / ' BXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyXwXwX1XyX,X1X2Xx @ @ h g p p @ g h - z h g 5 @ z g @ k k g 4 z 5 g w @ w g g a 5 g v v b b v :X+.} O./ / .X.o. .X.X.o.o.X.X.X.X.X.X. . .X.X.X.X. . .o.o.o.O... .o.O.o.o.o. .o.+.8X6X6X>X<.:.,.5.4X:.-.-.>.5.2X<.wX2X9.:.5.1X,XtX1X0X;.,.-.<.5.SXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXZXZXFXFX^ Q ~ Y e.Z.l.G.H.H.A.H.A.A.Z.A.h.J.A.A.A.A.A.A.h.l.g.h.A.h.l.h.z.k.k.g.f.f.a.k.g.g.f.f.a.f.k.f.f.f.f.f.a.a.a.a.f.f.f.f.f.f.f.f.g.i.a.g.g.a.g.a.a.a.", "m m m m m m m m m m m m m m m m m m m m m m m m m m m m M B N N N N N N B N N N B B N C B C C B Z B C C C C B B C N C C Z C Z C Z C C Z Z C Z Z B Z Z Z Z Z D B Z Z Z Z Z L Z D D H Z J Z H L Z D D D D Z Z L Z U Z Z S aXgXgXpX{ ' c y e : * ; r r r r r r r r r r r r r r r r r r r r 0 r r r r r r : r q r r r r r r r r r r r r r r : * r r r r r r r r r r q e r r r r r 0 r r 0 * r r r r r r r r r r r r r r r r r r r r r * : r r r r r r r r r r r r r r r r r r e q r r r r r r r r r : r ; y u y u y 0 e S _.(._._.|.}.}.|.|.}.}.}._._.{._.|._._.|.^.`.(.(.`.(.(.(._.(.(.^.(.(./././.~.!.!.~./.~.~.^././././.~./.~./.(./.T./.~.~.~.~.~.~.T.~.~.].~.T.~.T.T.T.T.T.~ ! S ZXVXZXZXFXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. . ...7Xb z b k k | ..o.o.O.O./ } O.O.O.O.+.+.X.X. .X.+.+.+.+.+.+.X.X.X. .X.X.o.o.+.8X:Xu M.iX/ z @ - a g w @ a h x b :X:X:X:X:X:X;Xq = = h O O s :Xb =X*X-X5XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXHXBX[ Q ^ ) b.Z.L.~.T.T.~.(.~.~.[./.~./.~./.~././.[././././././.!.!.(.^.(.].Q / ' fXDXFXZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXFXd j 9.-Xg z p z v ,X7X .X.X.X.X. .O.O.+.+.+.o.6X2X,Xk -X4X7 8.=.z :XyX2XtX1Xb ;X:X>XuXyX:X:X*X2.*Xa v *Xk a gXn + kXn O z z l k 8.h f O.o.X.X.X.X.X. .8X1X:X@ + < + ;X6Xa - / =XO 2 aXsXa Xv w g z x w @ z ;Xp @ x x *Xv 4 n l + 7 n =.w s :X, @ :X,X>X8X+.O. .hX7X} { X.X.X.X.X.X.X.X.X.o. ...X....... ... ..... . ..... ........... .7X8X8XwX<.0X1X,X:.;.>.5.1X:.-.-.-.-.,.5.4X2X:.,.4.4X4.:.5..4.4XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXFXDXZXVXFX^ ! ~ Y b.n.H.D.H.H.h.Z.A.A.j.A.A.A.A.A.A.A.h.A.h.A.l.h.h.g.h.k.f.z.k.f.a.z.k.k.k.k.k.f.f.f.f.f.f.f.j.s.a.s.a.f.k.z.f.a.k.f.f.j.a.a.a.a.a.a.f.a.a.a.", "m m m m m m m m m m m m q m m m m m m m m m m m m m M M M M M V N N N N B B N C N C B N N B B C N C B B B C C C B C C C C C C C C C D B A D B Z F Z Z C C Z Z Z Z Z Z Z Z Z Z D H D S D Z L Z Z D D D D H Z L Z H Z J m.gXaXpXM.( n y y r : ; e r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r * r r r r r r r r r r e r r r y r r r r r r * r r r r r r r r r r r r r r r r r r r r r e r r r r r r r r r r r r 0 e r r r r r r r r r r e : : > y t u e > * ` _.|.|._.}.}.}.}.}.}.}.|._._.}.^._.|.(._.{.|.(.(.(.`.(.(.(.(.(.(.(./.(././.~.~.~./.~.~.~././.~.~./.~./.~.~.(.[./.T.(.~.~.~.~.~.~.T.T.T.~.~.T.T.T.T.T.~ ! ! ZXVXFXZXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.O.v x sX@ @ | +.+.| n } x ] | | W | u +.X.X.X.X.O.X.O.o. .o.X.X.X.X.X.X.X.O. .+.6XS / { @.- x l + z x l p -Xh h k v d : g w z 5 5 @ O *X>X-X:Xb wXKXwX5XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXBX} Q Q ` b.F.].~.~.~.[.~.[./.~././././.~./././.~./.(.(././.~./.^.T.(.(.!./ / _ BXDXAXZXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXz g k p l k k z >X7X+.X.X.X.X.X.X.X.o.O.O.......o.+.{ } O.O p O @ @ z x z < < 7 -X>X7X .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .X.X.X...6X5Xv l k g g *XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXAXFXHX] ! S ` m.].!.'.`._._.(.`.{._.|._.|.(.(.|._.(._.`.{.[._.[._._.`.(._._.].! ~ _ BXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGX5.:.:.:.:.:.4.yXl *XiX*X@ -XKXKXz k b n z @ k KX5 + l eXn @ v 8.8.@ 7 b n 5 n :Xn @ b 5X6X . .o.O.hX7XX.o.O.X.X.X.O.o.X.X.o. .O.....6X8X6X6X8X8X6X6X6X6X6X8X6X8X6X6X8X6X6X.>.<.qXwX2X2XwX5.wX2X<.,.-.:.-.-.:.wX1XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXVXZXZXVXZX^ ! ! Y b.Z.H.H.H.G.A.Z.A.A.A.A.j.A.h.A.A.A.A.h.A.l.A.h.h.h.h.h.h.h.k.k.f.f.k.a.g.k.f.f.a.f.a.i.k.i.f.f.f.k.f.f.s.s.f.f.f.a.i.i.f.g.f.f.g.g.k.f.z.z.", "m m m m m m m m m m m q m m m m m m m = m m q m N m m N M M N N N N N N B B N N B B M M V C N C C N C C C B C C C B C C Z C Z Z Z C C Z C Z Z C Z C Z Z C Z Z Z Z Z G C Z D D D Z D L Z S H Z H H H Z L L D L H Z H [ gXaXaXM.' S y y ; r r 0 r r r r r r r r r r * y r r r r r r 0 r r r r r r r r r r r r e r r r r r r r r r r r r r r r r r r e r r r r r r r r r r r r r r r r e r 0 r r r r r r r 0 r r r r r r r r r r r r r r r r r r r q y r r r r r r r r e 0 r r r r r r r r r r r r r r r r y e y e y r : 0 b._.{._.}.}.}.}.|._._._._._._._.{.}._._.{.|.(.^.(.(.^.{.(.(.(.(./.(././.~././.~.!.~././././.~.~.~.^.~./././.T./.(.~.~.T.T.~.~.T.~.~.T.T.T.T.T.T.T.T.~ ! ! ZXVXFXZXFXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.v a - p a ! | W z ;X-Xa 4 2 eX8.O ;X7X .o.X.X.o.X.o.o.X.X.X.X.X. .X.X.X.X.X.X.O.+.N @.c 5 :XeX@ @ :X;Xz :X@ x k *X@ v n 4 w x z @ @ wXiX-X-Xk eXsX;X>XHXJXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXBX' Q ! Y b.F.F.!.T.~./.(.!.(././././.!././././././././././././././.(.[.!.S / ' BXVXAXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHXv x - d g k 2.s } ..X.X.X.X.X.X.X.X.X.X.X.o.X.X.X.O.7Xo. .S f =X+ -X-X-X>X,X O.o.X.X.X.X.X. ...8X:Xw KXaX3 @ w z + , - 3 =.7 6Xo. .X.X.X.X.X.o.X.X.X.X.X.X.X.X. .X.X.X.X.X.X.X.X.o.o.X.AXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVX! ! ! c.m.].}.}.}. X}. X X|. X{.|.}. X X|._._._._.^.^.(.(.(.^.(.(././././ / ~ ZXAXAXFXFXFXFXFXFXGXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFX2 7 sXh k -XKX-X4 + p - < l v c +.+.+.+.X. .X.X.X.X.X.X.X.X. .X.X.X.X.X.....O.+.+.+.2 =.7 7 +...j b b v z k z c v 2 2 =.=.2 2 2 2 =.2 7 7 2 5 x z h j 5 + - z @ - -X8Xo.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.7X.>.,.,.-.>.4.x p k g h p v a h h @ @ a h h v @ h 5 x a a + 4 4 a 4 s p 4 z z 5 - *X6X+. .X.O.O.fX7Xo.O.X.X.X. . .o.X.7X8X6X6X6X6XwX<.wX>XtX<.:.:.:.;.:.wXuX>X>X<.,.;.;.;.>.>.>.5.1X2X2XqX-.>.5.tX9.5.qX5.tX4X,X1X.>.-.-.>.4.4X5.ZXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXAXFXZXVXZX~ ! ! Y e.n.S.H.H.A.A.A.A.h.l.A.h.A.A.A.A.h.A.h.h.A.A.h.h.z.g.g.f.f.f.f.a.k.a.g.z.i.f.f.k.a.f.a.f.f.f.a.k.f.a.f.f.f.g.a.g.d.g.a.f.g.a.a.g.a.a.f.a.g.", "m m m m m m m m m m m m m m m m m m m m m m m m m m m m M M V N M V N N N V B N N B V C C N N V C N N C N C B N B C C C C C C C Z C Z Z Z A D Z Z D Z Z Z Z Z C Z Z C Z D D D D Z H Z H H H L Z Z Z L J L D H D H _ gXaXaXM.' n y e e e r r r r r r r r r r 0 r r r r r r r r r r e r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r r r r r r r r r r r r r r r r r r r r r r r e r r r r r r r r r q e 0 e r r r r r r r * r r r r r r r r r r r r r r r r r r r r r r y = r r e e > y y e : % y ].(.|.}.}._.}._.|._.{._.[._._._.(.{._.(._.(.(.(.^.`._.(.(.(.(.(.(.(./././.~./.~.!.~.^.~.~./.~.~.~.~.~.).XX/.T./.~.T.~.~.T.(.T.T.~.T.~.~.T.~.T.Y.~./ ! Q ZXVXFXZXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXGXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .o.:Xv z c l } O.O.S KXXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXBX[ Q K ` b.F.K.!.~.~.~.~.(./././././././././.~././././.(.[.(.~.(./.[.(.K.Q / _ BXZXAXAXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXZXz z 4 n 7 -X-Xn +.X.X.X.X.X.X.X.X.X.X.X.X.o.O.X.X.O.hXoXO.A +.c a k -Xv j 4.v @ @ a h :X>Xv h d w g h d l z @ M.sX-X:Xv v ;X-X4 b 5 u O.o.X.X.X.X.X. . .o.;X@ O # 8.sX@ n sXg =.3 x .. . .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.DXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXZXVXQ ! / c.n.!._.}.}.}.|.{.|.|.|. X}.|.|.}._.|._.|.^.|.(.(.(.(./.(.(././.!.~ ~ ~ CXAXFXAXFXFXFXFXFXSXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFX2 6XIX=.2 4 v p z v v v x l 6X .X.X.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.....+.2 =.2 2 7 T O.O.{ ,X-Xl v g j +...i =.2 2 2 2 2 =.2 2 2 7 z l l k < 2 4 5 8.sX+ ' o v +.o.X.X.X.X.O.X.X.X.X.X.X.X.X. .X.X.X.X.X.X.X.X.X.X.X.X...6XuX>X0X;XsXn -XiXVXHXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXAXDXCX' ! S [ m.!.]._.(._._._.|._.|.|._.|.^.|.|.`.^.(.(.(.^._._._._._._._.`.Q.! / [ BXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSX9.;.5.5.5.:.>.<.v d - 5 g 5 a @ g h @ z x g 5 @ w g g w 7 g h g w g g @ @ g k v v b ;X} .X.X.O...7XhX .+.X.O.+.Q f 6X8XwX;.:.<.:.:.;.-.;.tXwX,.-.,.-.-.4.,X,X,X,XqX4.-.,.<.9X4.-.;.:.9X1X,X:.-.-.:.5.4X,X4X2X9.,.5.1X,X,X,X1X<.:.5.:.-.:.tX1X:.ZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXAXDXFXAXDX^ ! ! Y e.g.S.D.H.A.l.Z.h.A.A.l.A.A.A.g.A.A.A.h.l.l.h.h.h.g.h.a.j.j.f.f.k.k.a.f.i.z.f.a.s.f.a.f.a.f.f.a.s.f.a.s.a.k.z.g.a.a.a.g.f.f.g.a.g.f.z.f.g.z.", "m = m m m m m m m m m m m m m m m m m m m m m m m m m N m N V N N N N N N V B B V N M M C M C M N C N C Z C B C C B C C A C C Z A B D C B Z Z C C Z C C B Z C Z Z Z Z G Z Z D D H H Z D Z Z L H L Z Z Z L Z H H S m.aXhXpX{ ~ u y r ; ; r r r 0 r r r r r r r r r r r r r r : r r r r r r : r r r r r r r r r r r r r y r r r r r r r r r r r r r r r r r r e r r r r r r r r r r r r r r r r r r r r r r r r r r r e 0 r r r r r r r r r r 0 r r r r r r r r r * r r r r r r r r r r r r r r r q * : r ; e ; y y e r * * S `.(._.|.{.[.}.^._._._._.{._.|.^._._.`./.|.^.(.(.(.(.(.^.(.(.(.(.(.(././././././././.~.~.!.~.~.(.~.~.~.~.~.R.~.~.~.T.~.T.T.T.T.~.T.~.T.T.~.T.T.~.~ ~ Q ZXZXDXFXFXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXo.o.X.X.X.X.X.X.X.X.X.X.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.+.+.o.../ | O.O.u g g 4 b j @ < < ;XyX2X8X6X8X7X} ....O. . ...7X5XyX6X.. .o...X.X.X.o.6Xv v l v x z j v l @ h v + a 4 7 + h h h a v 2X>XuX:Xb =X*X*X5XCXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXBX' Q c ) b.F.Y./.(.(.(././././.(./.(.!./.~.~.[.~.(.(.[./.(.(./.(./.(.(.F.! / ' BXZXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXz - 8.8.n | o.O.X.X.X.X.X.X.X.X.X.X.X.X.X.o.+.O.O.O.fXO.| o , , p v -Xz 2.,.b 3 2.5 + ;X:Xb p 2.*Xa h 2.*Xp x gXb k -Xz l :X;Xz aXeX/ O.X.X.X.X.X.X.X.X.O.6Xh 8.z aXsXO sXsXg 7X+.+.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.X.X.X.X.X.X.ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXZXVXQ Q ~ [ m.!.}.}.}.|.|.|.|.|.|. X}. X}.}.|.{._.{.^.|.(.(.(.(.(.(./.!.~.!.~ / ! VXAXFXFXFXFXFXFXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFX7 5 @ < 3 2 w g c +.+.+.+.f +.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. . .o.O...T 2 2 =.T X.O...+.{ p -Xb v k 3 =.u ....7 =.2 2 =.2 2 =.2 2 7 4 2 2 < / f + l IX6X< 9.c @.O.O.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .7XX>X;X;XaX;Xv 5XFXVXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXZXDXDXBX_ ! ! ` m.].]._._._._.|._._.|.(.|.{.|.`.^.|.`.(.(.(.(.(.(._.(._._.`.(.].! / ' BXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXeXwX4X4X4XwX:.<.v z x @ @ z n + z g v sXz l l x + a 2 2 2 g 7 n =.% k ;X, a 8.<.uX8X| +. .X. .O...7X+.| - / 6Xp iX:X*XwX,.,.>.-.>.>.-.-.-.wX4X4.;.-.-.,.wXtX<.:.0X1X1X0X5.2X1X4X5.;.-.-.0X1XqX>.-.>.5.4X,X.4.4X4.>.FXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXVXAXDXDXVXZX~ ! ! Y b.n.A.H.A.A.A.Z.h.A.h.A.g.A.A.A.h.A.S.z.h.z.l.l.h.g.g.g.a.g.f.s.f.a.i.g.i.a.a.a.a.a.f.a.a.a.a.j.f.s.k.f.f.a.a.z.g.g.i.f.f.f.g.k.z.a.f.f.a.a.", "m m m m m m m m m m m m m m m m m m m m m m m m m m m m N N N N M N V N N N N V V N A M M M C N C N C B C N C N C C C C C C C C C Z A Z F C Z Z Z Z Z Z D Z Z Z Z Z D Z Z Z Z G Z Z Z H H H Z J H H D L Z L H D ' gXaXpX{ Q u : : y : ; r r r r r r r r r r r r r r r r r r r r r r r r 0 e r r r r r r r r r r r r r e r r r r r r r r r r r r r r r r r r 0 r r r r r r r r r r r r r r r r r r r r r r r r r r : r r r r r r r r r r r r e r r r r r r r r r y r r r r r r r r r r e r r : r : r : r : ; ; : y : e % * % n.|.^.(._._.{._._._._.|._.|._._._._.(.{.(.|.(.|._.(._.{.(.(.^.(././.(.(.^./.!././.!.~.~.~.~.~.~.~.~.R.~.~.~.~.R.~.T.T.(.T.T.~./.T.T.~.T.~.T.~.T.~ ~ S ZXCXZXDXFXVXAXFXFXFXFXFXFXFXFXFXFXFXFXVXZXFXFXVXVXo.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.o.O.+...n } o.O.u 3 2 7 3 j j 2 7 ;X3X:X:X:X2X:X:X:X6X6X} } ;X,X-X;X>X8X| | | O.X.X.X.X.+.:Xn uX-Xx v *Xv p w @ 5 g @ g k g w z @ v -X:X:X O.X.X.X.X.X.X.X.X.X.+.n KX8.g v l w c n u O.o.O.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.AXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXGXZXQ Q Q c.n.]._.{.|.|. X{.|.{. X|.}.}.}._._.}._._.`.(.(.(.^.(././.~./.~.~.~ ~ ! VXAXFXFXFXFXFXFXFXFXAXDXDXFXFXFXFXFXFXFXFXFXFXFXFXc l z v v v c +. .X.o.o.o.x +. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.o. .o.O.+.| =.=.4 +.....o.7X{ 7 2 7 v p j 2 2 =.=.Y O.w =.2 2 2 =.=.2 2 2 7 a -X-X, ..| @ @ a O O =.l | O.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .8X,X>X5XX-X,XqX4.>.>.4.4.>.-.,.qX4XwX,.-.-.,.0XtX>.>.-.<.0X1X1X2X2X2XtX:.-.>.5.4X1XqX-.>.4.4X,X9.>.5.1X;.4.1X2X,XtX2X,X4.,.,.4.4X0X;.FXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXFXFXFXVXFXQ Q ! Y e.b.S.H.H.A.A.S.h.h.h.l.h.A.h.A.h.h.l.l.h.l.z.h.h.h.z.g.g.a.f.f.a.a.i.a.a.a.a.a.f.a.a.a.z.s.a.s.a.z.f.f.f.f.g.f.z.a.k.f.f.k.g.g.a.z.f.f.k.a.", "m m m m m m m m m m m m @.m m m m m m m m m = m m m m m m m @.m B m B B m B m F m M B M m B B B m B B B C m C C C C C C A C C C C Z C Z C Z C Z Z C Z C C Z Z Z F B Z Z Z Z D A H Z H D H Z H D Z H H Z J L L H pXhXpXM.' u y e r r r r r r r r r r r r r r r r r r r r r : r r r 0 r r r r r r r r r r r r r r ; r r 0 0 q r ; ; e > > : 0 r ; r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r ; r r r r r r r r r r r r r e r r r r r r r r r r r r r r r r r r r r r r r r r r r e 0 y ; * % u {.{.(.].`.(.`.`.^.}.[.{.`.|.^.|.^.`.(.`.^.`.(._.{.(.|.{.^.(.(.(.{./.^././././.(.T.(.(.~.~.~./.~.~.~.Y.T.~.~.T./.T.~.T.~.T.~.T.~.T.(.T.~.T.^.T./ ^ ^ ZXAXFXZXAXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXGXo.o.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.O.f } O.O.J p d x v - g w g v l h w z ;X-Xn g >X-Xb z p -Xb l v j 7 j t O. .X.X.X...} v 8X-X;X:Xv :Xp x l @ a n z *Xh l n 4 p - n j :Xk eXsX;XtXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXBX} ~ ! ` b.F.!.(././././.(.(./.(././././.(.(.~././././.(./.[.~.(./.(.(.!.Q / ) fXDXAXAXAXFXFXFXDXAXFXFXFXFXFXFXFXFXFXFXFXFXZXFXDXz z g 2.-X+. .X.X.X.X.X.X.X.X.X.X.X.X.X. .o. .o.o.O.fXO.` lXs 5 g 2.j @ } s d O # O -Xv k v + k k @ p k k + ;X-Xk h v l :X5X;X@ n 7 > O.O.o.X.X.X.X.X.X.X.O.| { { f 7X+.O.X. .o.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.DXDXDXDXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXVX! Q ~ [ n.].`.`.(.`.`.(._.|. X|. X{.}._._._._._.(.(.(.(.(.(.(./.~.(.T.[.~ ~ ! ZXAXZXZXZXFXFXFXGXSXDXFXFXFXFXFXFXFXAXDXFXFXFXFXAX+.+.;X+.+.+.o...X.X.X.X.+.u +.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .[ +.=.2 < [ O.O.} { 6X1 4 z @ a + z < 2 7 2 2 2 i ..i =.2 =.2 2 2 2 2 7 d 8X8X+ > > @ w x + v 7XX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.+.+.:XuXtXuX>XyXyX.0X1X:.-.;.:.,.4.4X4.:.:.<.:.-.-.>.9.1X4X<.ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXAXZXZXFXFX^ S Q Y b.Z.Z.H.G.A.A.Z.l.l.A.h.G.g.Z.j.h.G.g.h.l.l.l.h.h.g.f.k.f.a.i.f.a.a.a.i.a.a.a.a.a.a.a.a.a.a.i.z.i.k.d.k.f.k.a.g.a.g.f.g.g.g.z.a.f.j.z.f.f.f.", "m m m m m m m m m m m m = m m m m m m m m m m m m m m m m m m m B V m B m B B B M M N N B V B B B B C B m G N C A C C C A C Z C C C Z C C Z C Z D Z C Z Z Z Z C Z Z Z Z D D D D F Z Z D H H Z D L Z Z H H Z Z [ aXaXpX{ n > r r r r r r r r r r r r r r e 0 r r r r r r r r r y r e r r r r r r r r r r r r r r r e ; r y e ; r 0 0 q y 0 r * e r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r e ; r : r r r r r r r r r r r r r r r r q r r r r r r r r r r r r r r r r r r r r r r r r r r r e r 0 : ; % % b.{.(.(.(..X^.^._.}.}.|._.|._.(.|.^.`.(.|.^.`.(.{.{.^.[.(.(.(.(.(.{.(.(./.(./.(.T.(.T.T.(.~./.~.~.T./.~.~.T.~.T.~.T.~.T.~.T.~.T.T.T.T.T.~.T.T.~ ! S ZXAXFXZXAXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXo.o.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.o./ | ..o.v 2.3 -X-X3 x 7 + ;X-Xv z + :X-XsX@ p - eXn @ l n v a 4 b n u O.O.X.X.X. .} c O.;Xv n k :Xp n x p @ sXl a w 8.8.7 a 8.8.x ;Xk -Xc b >XAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXBX[ ! S _ b.F.Q.).(./././.(./.(.(./././.[.~.(.(././.(.^.(.[.(.(.(./.(.(.].! ! ' BXDXFXZXAXAXAXZXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXx a j 9.;X+. .X.X.X.X.X.X.X.X.X.X.X.X.X.+.| | | | | 7X+.+ z 4 5 g 9.wX, X.-X@ % :Xv k p g g h a a h h a a 5 @ v v x v :XtX<.b d sXeX/ O.o.o.o.X.X.X.X.X.X.O.O.+.o.X. .o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.X.X.X.X.X.X.X.X.DXDXDXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXVXQ Q ~ c.n.].(._.`.`.`.`._.|._.|.}._._._._._._._.(.(.(.(.^.~./.~.~.~.~.T.~ ~ ! ZXFXZXVXZXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXAXVXo.X.W O.o.X.X.X.X.X.X.X.X.l +. .X.X.X.X.X.X.X.X.X.X.X.X.X.X. .+.=.2 =.+.O.O. .{ j 2 2 O g a c s a z z 5 w l 2 =.=.S o.K 2 2 2 =.2 =.2 7 a v k d v b l x sX8./ O.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .X.X.X.X.X.X.X.X.X.X.o.o.o.X.+.+.8X>XyX2XyXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXAXFXBX} ! ! _ n.].(.(.'.|.(.|.(.(.|.`.|.^.|.(.(.|.(.|.^.(.(.(.(.(.(.(.(.(.(.].! ~ ' BXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXyX0X5.5.:.>.5.1Xl @ - 5 g a a 5 g h w 5 5 g h 5 k k a 5 5 g h w - g j v v X,X4X1X,X2XwX>.-.-.;.wXtX>.<.,X1XwX>.-.-.-.-.-.-.;.-.-.-.-.-.-.-.-.:.;.-.>.,.5.4X:.-.-.-.,.5.4X:.>.>.,.>.,.>.-.-.5.2X<.ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXAXDXFXAXDX! ! ! U e.b.A.H.G.g.j.Z.l.h.l.l.z.A.A.h.h.h.h.h.l.l.l.h.g.g.f.k.f.f.k.k.a.a.i.a.a.a.a.a.a.a.z.a.f.i.a.a.a.k.k.d.f.k.g.a.z.f.z.a.j.g.j.z.j.f.f.f.f.j.", "m m = m m m m m m m m m m m m m m m m m m m m m m m m m m m m m V M B m B B m m M M N N B B B B B B B B C C B B C C C C C Z C C Z C C Z C Z C Z Z B Z C C Z C G D C Z Z D Z D Z Z Z H Z Z D D D Z H H H D J S m.pXpX{ ] u r : 0 r r r r r r r r r r r r r r r r r r r q r r r * r r r r r r * 0 r r r r r r r r q r e e ; ; r r 0 0 r * r y y ; r r r r r r r r r r r r r r r r r r r r r r : r r r r r r r r r r = r r r r * r r r r r r r r r r r r r r r r r r r r r r r r r r y r r 0 r r r * r r r r r r r : y r * % % % u ^.(.(./.'.(.|.|._.|._.|.^.|.^.^.`.`.(.|.(.(.(.(.(.{.(.(.^.`.(.(.(././.(././././.^.~.~.[./.~./.~.E.T.^.T.~.~.~.~.T.T.T.~.T.~.T.~.T.T.T.T.T.T.~ ! ~ ZXFXAXFXFXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.X.X.X.X.X.X.o...X...+.c } 7X8Xj 8.=.;X-X5 c 8.4 ;X;Xn v @ x z a p @ h z k h h 5 @ h 4 g s w O.O.O.O.X.O.| c .o.6X>X>X:Xp a @ a z + p a a 4 4 + a 4 7 g % a > 6X| O j b k g z z g k b b b v v x :X1X:X:X5.-Xv n b - +.o.X.X.X.X.X.X.X.X.X.X... .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.ZXDXZXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXFX~ Q Q [ m.].(.(._.|._._._._.'.`.}._._._._.|.^.(.^.(.(.(.(.^.!.(.~.[.T.[.~ ! ! ZXAXAXAXZXFXFXFXFXAXDXAXAXFXFXFXFXFXFXFXFXFXFXGXVXo.O.@.X.o.o.X.X.X.X.X.X.X.v +. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.7 =.+.....X.} 2 =.7 z a p l f +.n p z a 6X-Xa 7 2 =.2 u +.7 =.=.2 2 =.3 n x z d b :XuX;Xz sXn / O.X.O.X.X.X.X.X.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.o.X.+.3XuXtXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXBX' ! Q ' F.Q.{.(.^._._.^.|.`.|.(._._.(.(.|.^.(.`.(.`.(.(.(.(.(.(.(.(.(.Q.~ ! | BXDXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXyX1X1X4X9.,.<.2Xz k iXk - k iXk g p z ;Xp a x x *Xk s >Xk a 4 b z @ :X2X5X7X.. . .O.| ;X:XyX>X.>.,.wX2XqX.>.-.>.>.-.-.-.-.-.;.-.-.-.-.-.-.-.<.5.wX2XqX-.-.>.<.wX1X:.>.<.5.5.5.5.-.-.>.<.5.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXVXZXZXAXFX~ ~ ~ Y e.n.Z.G.G.A.A.Z.h.h.l.l.l.A.j.A.A.h.h.h.l.l.l.z.g.f.z.a.k.k.f.i.a.a.a.i.i.i.a.a.a.a.a.a.a.k.a.k.i.k.k.k.k.f.f.f.k.z.a.j.f.g.h.f.z.g.j.k.j.f.", "m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m q B N B B m B B M B N B B V N B B B B B N B B C C N A C C C C C C C C Z C B Z C C Z C Z C Z Z Z Z Z Z Z Z Z Z F H Z D D Z D Z H Z H Z G D P / aXpXM.{ S > y > r r r r r r r r r r r r r r r r r r r r e r r r r r r r r r r y e r r r r r r r r > = ; 0 * ; y = r r ; ; y * ; ; r r r r r r r r r r r r r r r r r r r r r r 0 r r r r r r r r r 0 y ; r * r r r r r r r r r r r r r r r r 0 e r r r r r r r r r r * : r e r r r r r r r r r r r : r * * ; % % $ ]./.(.`._.(.(.(._.|.(.^._.(._.|.(.^.|.(.`.(.(.(.(.(.(.(.(.^.[.(.(.^.(./././././.(./.^.~././.!./.^.~.!.~.T.~.T.~.^.T.~.T.~.T.~.T.T.T.T.~.T.T.~ Q ^ ZXFXFXDXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXVXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .o.....6XuX-X;X,X:X5 4 5 v ;X4 O s + ;Xk w a a x ;Xv v v z 5 w h g w h h g - 4 v 6X| W +.O.O.} / o.X.X.8X>XXyXuXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXBX[ / ^ ` b.F.].!./.(.(.(./.[.(.(./.[./././.~.(.(.^./.(./.(.(.(.!.(.(.(.].S / ' BXZXAXDXAXAXFXAXZXGXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXd z @ z h *Xg 6X+.O.X.X.X.X.X.X.X.X...7X*X2.k k 2.j s j 9.wXz g z g z l v v v f > > p -X-Xb v k k p ;X:X:X O.X.X.X.X.X.X.X.X.X.X.X. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.DXDXZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXVXZXSXQ Q ^ c.n.!.|.^._.(._.|._.`.(.`.}.}._.}.{._._.(.`.(.[.(.(.^././.~.T.[.T.~ ~ ~ ZXAXAXFXFXFXFXFXFXDXAXDXDXFXFXFXFXFXFXFXFXFXFXVXIXO.+./ X.X.X.X.X.X.X.X.O. .c +.O.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.o.....o.| eX7 2 w v z c s p , , f p d v 8X:Xa 7 =.2 2 =.=.=.2 2 2 2 2 7 -XyX;X;XyXeXsXb k :X+.X.X. .O...O.O.o.X.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.X.X.X.o.+.8XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXAXFXHX' ! ! ` n.].].`.|.|.(._.|._.(._.(._.(.(.(.(.(.(.^.^.(.(.(.(.!.(.(.(.(.].Q Q [ BXDXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXyX.4.1Xz *XiX:X@ *XiX:X@ k v KX@ + n n w h v KXaX5 x 8.8.5 :XyX8XX. . . .+.v j =XsXeX>X5X*X- a :X-Xj 1.>.,.;.;.-.>.<.5.4.5.4.>.9.5.5.tX.>.>.>.-.<.4.-.-.-.>.>.<.tX1X2X.4.4X1X0X>.4.4X1X1X1X0X;.,.4.4XZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXFXZXVXFXS ~ ! I e.Z.H.H.A.A.A.Z.h.h.h.l.l.h.A.G.g.j.h.A.l.l.z.g.g.g.g.g.f.k.i.z.a.a.a.a.i.i.i.a.a.a.a.a.a.f.a.a.k.d.z.i.k.d.f.f.f.a.g.g.f.f.f.j.f.h.j.f.f.h.", "m m m m m m m = m m m m m m m m m m m m m m m m m m m m m m m N B m M B M B M B M B B M B B B m B B B B C N B C C C N C C C C A Z C Z C C C Z Z D Z D B C Z Z Z C Z Z Z Z Z Z C Z S Z Z Z G H Z D L H G D H M.M.M.{ ' n r ; r ; r r r r r r r r r r r * r r r r r r r r r y r r r r r r r r : r r r r r r r r r : > e 0 r ; ; : e e e ; e ; r 0 r r r r r r r r r r r r 0 r : r r r r r r r r r r r r r r r r r y 0 = ; : r r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r r r r r r r r r e t ; 0 t ; % - $ P _.T.|.(._.(.`._.(._.}._._._.|._.|.{.|.^.(.(.`.(.(.(.(.(.(.^.!.(.(.^.(.(./././.~.(./././././././.~./.~.~.T.~.T.T.^.T.~.T.T.T.~.T.T.U.~.T.Y.~ Q Q ZXCXZXZXFXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXo.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.6X8X1X:Xz 5 w l z + a z g h z v k x l @ 5 5 v :X-X:XyX-X*Xn a a -X> + @ x 2.4 l x z - O...| ] .X.X. .6X5X.>.4.b h z 4 w z l sX8.b o. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXAX~ ~ ^ c.n.].(.(._._._.(.`.(.`.(._._._._.^.(.(.(.(.(.(.^./.(././.~.~.~.T.S ! ! ZXVXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo. .S o.X.X.X.X.X.X.X.X.+.l +...X.X.X.X.X.X.X.X.X.X.X.X.o.O.O.O...} ;X=.2 l b x X*X*XsXsX:X5X-Xz z 8X:X*X5.5.5.<.-.-.>.wX4X1X4X2XqX,X1X1X,X.:.qX4X0XwX1XX.,.;Xk h O 2.w + @ :Xx v 6Xo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXFXAX~ ~ Q [ n.Q.(.`.(._.|._.`.(.(.`.(._.(._._.(.(.(.(.(.(./.(./././.~.~.~.T.! ! ! ZXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXO...W o.X.X.X.X.X.X.X.X. .f +. .X.X.X.X.X.X.X.X.X.X.X.O.O.O.....6X=.2 2 - z -Xk l , , , a g 2.*Xp l O p g a d / - @ 2 2 2 2 7 d w -Xz u s p *XsXaXyX*Xn +.+.+.7Xj < 2 2 2 j 8X+.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXGXZXFXAXFXBX{ ! ! ` n.Q.~.`.(.`.(.^.(.(.(.(.(.(.(.(.(.(.(.(.(.(.^.(.(././.(.^.(.(.Y.! ! ' BXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXyX5.4.2X1XwX0X1Xx l w l g h w l g h z w z g g z z g l w d g v v l v :X . . ...X.6X*XiX>X*Xn n -X>X*Xz - -X-X-X4X1X4XwX,.>.>.wX2X,X2X2X1X,X,X2X2XtX<.wX2X1X1X,X,X,X,X,X,X1X1X1X1XqXwX1X5.-.>.5.4X1X2X.4.1X1X2X,X2XX>XyX:X:XKXv a ;XKXk z *X8.8.x >X2XX2X2Xv a v k h + p p a h a p k g @ s k p a p v d :X,X,X6XX. . ...O.6X*Xk *Xk k k k *X>Xv z -X1X,XwX:.<.wX.;.:.0X1X,X2XqX4.>.<.wX1X:.4.4X4.:.:.<.<.:.5.4X1X4.5.AXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXAXZXAXVXZX^ ! ~ Y b.n.D.H.H.A.A.Z.h.l.h.h.A.A.A.h.h.l.h.h.h.g.g.g.a.j.a.a.k.k.i.i.z.i.a.a.a.a.a.a.a.a.a.k.a.i.f.f.i.z.f.f.f.f.k.k.z.z.f.j.g.f.g.a.z.h.g.g.g.g.", "@.m m m m m m m m m m m m m m m m m m m m m m m m m m m m m N N M M M C m B m B B M B B N B B M B N B m C B C B C C Z C C C C C C D C C C Z Z Z C Z Z C Z Z Z Z C Z D B Z Z Z Z Z Z Z Z D Z G Z Z Z Z Z S [ m.{ { / t * y r r e r r r r r e r r r r 0 t * r r r r r r r r r r r r r e 0 r r r r r 0 r r q y * : : PXLXLXLXLXgX- e ; e ; LXLXLXpXe r r r r r r : r r r r r r r r r r r r r r r r r r r r r r r r ; e u hX{ ; r : r r r r r r r : r r r r r r r r r r r : r r r r r r r r r r r r r r r r r r r r ; ; e > ; % % & $ c.(.(.`.!.{.`.`.^.|._._.^.(.`.(._.(.(.(.(.(.(.(.(.(.(./.(.[.(.(.(.^.(.(././.(.(.(./././.^.(.!.(./.(.~.~.~.~.~.~.~.T.Y.(.T.T.T.T.T.T.T.T.T./ Q ~ ZXVXVXZXAXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXVXo.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.X.X.X.X.X.X.X.X.X.o. .6X +.c ..X.X.X.O.o.:X>X5X:Xv -Xs d d n p v ;X4 4 5 X5X:X7 8.7 z -Xv k *X;X| X.X.X.X.X.X.X.X.o.o.6X>XuXv :Xk 9.*Xa 8.9. > @ n x s *Xk d , d :X*XwX*Xv o.X. .f =Xv + b k *X@.> / , W O.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.o.o.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXFXVXZXFXVXFXBX[ / ! [ b.].!.(.(.(.(.(.(.(.(.^.`.(.(.{.(.{./.(.E.(.^.(./././.(././.(.].~ / _ BXHXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXDX2X0X;.1.1X1X5.4.z l v *Xk z ;Xp z p l l *Xk l x *Xv z sXg z :X>X8XX.X.X.X.+.;Xk wX*X+ g b *Xb k b g w :X1X1X,X9.,.:.yX4X0X9.yX1X:X:.-.>.>.9.tX,X,X1X,X,X2X2X,X,X,X,X,X,X2X,X2X2X2X2X,X.5.1X.4.4XqX;.-.>.>.,.9.4X5.>.-.AXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXDXAXFXFX^ ! ~ U e.Z.l.G.S.A.A.j.h.h.h.A.h.h.h.l.G.h.h.h.h.g.g.a.g.g.k.k.k.k.z.x.z.a.a.a.a.a.a.a.a.a.i.k.z.k.i.k.i.k.k.f.f.f.k.g.i.g.k.g.f.g.g.g.f.a.h.g.g.z.", "m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m N M M m M M M B M N N V M N V N V B B B B A N V N C N C C Z C C C C C C C D F C C B D Z Z Z Z Z C Z Z Z Z B Z C Z Z Z B Z G Z Z Z Z Z D L Z { M.m.' c y = ; ; r ; r r r r r r r r r : r r r r r r r r r r r r r r r r r r r r r r r 0 r e ; e ; y { LXLXLXLXLXPX* ; ; r ; LXLXLXpX% e * ; * y : e 0 e > 0 0 0 ; : y * e * e = e r e r r e = r : e u pXLXLX' e > * : r r r r * r : r r r r r r r r r r r r r r r r r r r r r r 0 e r 0 r r r r r r r : r 0 r * % $ $ u (.(._.(.(.(.(.`.(.`.`.(.(.^.(.`.(.(.(.(.(././.(.(.(.(.(.(.^._.(.!.(.!.(.^.(.(.(./.(./.(.(./.)./././.[.~.^.~.~.^.T.~.T./.T.T.T.T.T.T.T.T.P ~ ^ ZXZXZXZXFXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXGXo.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.6X>X,X,X,X,XyXk + p a @ p p g h 5 g v d z p k k k 5 p p g O 4 =.=.7 7 2 2 =.2 g k ;X-X;X/ O.o.X.X.X...8X>XX:Xg v z v g b v g -X,X,X,X,X1XqXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXBX' ~ ! ` n.F.!._.^.(./.[././././././././.^.(.(.(.(.[.(.(.(.`.^.(.(.(.(.K.Q / ' BXZXAXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX,X2X:X7 n j h h z a 2 g s | O.X.X.X.X.X.X.X.o. .+.6Xv :X:Xk k g b 5.b z d z p :X, + p v v p p -Xn @ v j *Xa z n 6Xg g v j j s j 2.-Xz aX8.-X6Xo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .O. . .o. ...X.X.X.X.X.X.X.X. .o.X. .X.X.X. .X.X.X.DXDXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXZXVXQ Q ^ [ n.].(.(._._.(.!.(.(.(.(.(.(.(.(.(./.(./.(././././././.~.[.~.~.[.~ Q ! ZXZXZXZXAXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFXFXFXFXFXFX=.3 *X=.2 ;X6X{ { 7XO...X.l +.O.O.o.O.O.O.+.+.[ } 6X< =.l w h 5 l v k k g + k O a , = , k a @ p k l 5 h @ z p a z g ;Xb s >Xv a ;Xv h z @ @ -X-XiX5X/ X.X.X.-XKXKXx sXw h > z eX& W O. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.GXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXZXDXHXDXHX' Q ^ ` b.].K.(.(.).!.(./.(.{.^.^.(.(.(.(.^.{.[././././.~.^./././.[.(.]./ ! _ MXFXDXFXFXFXFXFXFXFXFXFXFXFXFXVXFXFXFXFXDXDXFXFXFXyX4X9.,.4.4X0XqXl l ;Xx @ v KX+ @ k ;Xn @ @ n n g a b aXv d tX8XX.o. .X. .8Xp p iXuX5 :X0X<.yXwX1.*Xd 8.9.wX4XyX5.5.2XwX:.wX1X1XyX9.,.9.9.0X1X,X.;.0X1X9.5.4X5.5.,X:.-.:.qX1X<.>.-.-.:.wX4X<.>.;.FXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXVXFXFXAXZX^ ! c Y e.z.A.H.K.A.A.Z.j.h.h.l.l.g.A.G.j.A.h.h.z.g.g.g.g.d.z.g.g.g.a.f.f.a.f.i.a.k.a.a.i.k.a.a.f.a.f.f.f.f.k.k.f.z.a.g.g.j.g.f.g.f.g.g.g.f.g.a.g.f.", "m m m m m m m m m m m m m m m m m m m m m m m m m m m m m N N m m m M M M M M B N M N N V V m m B B B C N C C C C C Z B C C C C C C C C C C C D Z C Z Z V G Z Z Z Z Z Z D Z Z Z Z Z G Z Z Z Z F D Z G Z F { { { ' S y r r 0 ; r r r r r r r r r * y r r r r r r r r r r r r r r r r r r r r r r r r t : ; r r r aXLXLXLXLXLXLX{ ; % ; % LXLXLXpX* % e % r r : > q y * = ; ; y 0 : y * q ; y e : r 0 = e ; * q : ' LXLXLX{ % ; ; : : r * = : e : r r r r r r r r r r r r r r r r r r r r r r r r r e r r r r r r y 0 0 r r * % $ $ t (.(.(.^.(.(.(.(.(.^.(.(.`.`.`.(.`.(.(.(.(./.(.(./.(./.(.(.(.[.(.[._.(.(.(.|.(.(./.(.(.(./.(.~.^./.{.~.~.T.~.~.!.^.T.T.T.T.T.T.T.T.T.T.T.~ ^ Q DXVXZXZXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXVXVXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.X.X.X.X.X.X.X.o.X.,XtX,X,X,X,X>Xb -Xk @ + x x k ;Xt 6XiXA ;X-Xx k *X5 x h k tX1X;X:Xn p 4 2 2 3 7 2 2 2 3 h s k s -Xb o. .X.X.X. .6XuX>XX>XO s O w k n 8.eXg :Xo. .X.X.X.X.o.X.X.X. .+.v 2.4.:Xv 5 d d l p ;Xl - 3Xn p k ;Xx - g -X-Xg l 9.2.d @ + @ 5 z v k k v -Xh ;X-XM.n k 1XX.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o. . .[ +.+.| | +.X.X.X.X.X.X.X.X.X. . ...O.o.X. .X.X.o.ZXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXCXZXFXQ Q ~ v.m.Q.).(.(._.`.(.(.(.(.(.(.(.(.(.(.(./././././././.~./.~.~.~.T.T.~ ! ! ZXHXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXx z z z z 2 =.2 2 :X:X{ } l { { } } { } } =.=.=.=.@ l z g 4 x 7 @ j 5.j d g j k a p k k a O n z 5 + p s - c s p z e =.7 s =Xd v >X:X-X # # *X*X*X-X| o.X.O.v k k p h a @ / n n d W O.O.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.VXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXDXDXBX_ ! Q [ n.Q./.!.(./.(./.(.(.[.(./.(.(.^.~.(.E././././.[.~././.!./.^.^.K.! / ' BXHXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX4X0X5.>.4.4X1Xx a b @ z @ v @ a a h 5 h z l a p h a *Xz z ;X . .o. ...6X>X,X*X*Xk @ *X9X,.tXwX5.v z 2.,.;.<.tX1X4XwX:.>.wXwX<.wX2X5.1XwX:.:X1XwX>.>.<.9.;.wX2X,X,X,X2X5.9.5.,X>.;.0X1X,X.5.4X5.>.0X4X0X:.-.-.;.-.:.-.,.,.:.wX1X4.-.:.wXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXVXFXFXFXZX! ~ S I e.n.S.H.A.A.A.Z.h.h.l.h.l.G.A.g.A.h.h.f.f.g.k.f.g.z.a.z.d.g.f.k.f.f.a.a.a.i.a.a.i.k.k.i.k.a.d.k.d.f.f.k.f.a.g.a.g.g.g.f.g.g.g.g.g.g.g.g.f.z.", "m m m m m m m m m m = m @.m m m m m m m = m m m m m m N m m m m M M m m m B M M N M N N N V M F N B C N C N N C C N N A N C A C C C C B C C C C C D C Z F Z Z Z B C D C Z D C Z Z Z C Z C B Z Z Z Z D Z A { { { ' u t : r r r r r r r r r r r r r r r r r r r r r r r r e r r r r r r r r r e 0 r 0 * y ; r t > IXLXLXIXLXLXLXsX% % * * LXLXLXsXf M.pX{ % : : : y * e pXpXpXM.u e ; > * { { ] S : = u { { { = S pXLXLXLXpX{ 0 ; ; ; r r r e e : r r r r r r r r r r e r r r r r r r r r r r r r r r r r r r r r r r r r r ; % $ $ $ (.(.(.(.(.(.(.^.(.(.(.`.^.|.`.(.(.(.(.(./.(.~.(.[././.(.(.(.^.(.[.^.[.(.(.[.(.(.(.(.(.(.(./.(.(././.~.(.~.~.~.~.T./.~.T.T.T.T.T.T.T.Y.Y.) c ! ZXVXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXVXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.7X,XyX,X2X,X1X-XeXl o z 8.8.k ;X@.{ eX@.:X;X:X:X- l n x -X,XXX+ @ 5 @ b 6Xf 3 8.< k :XO.O.X.X. .o.X.X.X. .+.v ;X5.:Xk g 2.*X@ k -X-X- l k a p g s h a g k h a k *Xz l v v k *Xl x c f z a - z @ 5 v :X} +.X.o.o.X.X.X.X.X.X.X.X.X.X.X.X.X. . .X.| 6Xc 2 < x k k k X.X.X.X.X.X.X.X.X.X.+.} +.| | +.o.O...ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXFX! Q ! [ F.!.~.(.(.(.(.(.^.(.(.(.(.(.!.(././././.~./.~.[.[./.~.~.T.~.T.T.~ ! Q ZXAXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX:Xk b s z z d z v 2 =.2 2 z 2 2 2 2 2 2 2 2 2 2 2 z k k s < { 2.a v k k h j 9.wXp =XiX=Xp l 8.8.5 a g *X- +.v d c eXeXQ z w h g a d l O # # k :X:X+. .X...6X-Xz k *Xz v x : Q f > .O.X.X. . .......X.X.X.X. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.o.VXVXHXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXDXDXDXBX[ ! Q ` b.].T././.(.~.(.~./.~././.(./.^.!.^.(.~.~.^.~.~.~.~.~././.[.(.K.! / _ BXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSX5.5.3X4X0XqX,X>Xv d @ h g 5 - z h h 5 @ 5 g h a w g v x v 6XX. .X.....+.3X1XwX0Xx z x k *X2.>X1X5X*Xz -X2.2.:.wX.-.;.0XtX,.4.1X4X5.-.>.-.;.-.:.5.4.wX4X4.>.,.9.4XZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXVXDXZXFXFX~ ! S U e.n.S.K.G.S.h.Z.h.h.h.h.h.A.A.h.h.g.h.h.g.g.g.k.g.a.f.a.k.k.f.f.k.i.z.i.f.f.a.k.a.a.a.a.i.a.z.i.k.k.f.f.f.k.f.g.g.g.g.j.g.g.g.g.j.f.g.k.k.k.", "m m m m m m m m m m m m m m m m m m m m m m m m m m m m N N m m m m m m M M M B M N N N N N V M N N N C N B C M Z Z B B A C C C C C u B B C C D C C D Z Z Z B Z F Z Z Z Z B Z Z Z Z Z D Z Z Z D Z Z D Z K [ { ' Q u : t r r r r r r r r r r r r r r r r r r r r r r r r 0 : r r r r r r r r r r : * y : r r e ~ LXLXLXsXgXLXLXLX- % % % LXLXLXIXLXLXLXLXIXt : y ; pXLXLXLXLXLXPXpX- = ; LXLXLXpX: : aXLXLXLX* pXLXLXLXLXLXLXc % % * : r r r r : r r r r r r r r r r 0 r r r e 0 r r r r r r r r r r r r r r r e r r 0 r > ; % $ o o (.(.~.(.(.(.(.(.(.|.(.|.`.(.`.^._.(.`.(.(.(.(.(.~.^./.[.(./.`.^.`.!.(.(.(.(.(.(.(.(.(./.!.(.~.{.~./.~.~.(././././.T.~.T.T.T.T.U.T.T.Y.L./ ! S ZXVXFXDXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.+.tXuXtX1X2Xp k g a a j 7 ;X;X* m @.0 ;Xv z l @ z h 5 k X>X,X,X,X,XVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXBX} ! c ` m.K.].(.(.(.(./.(./.(.(././.(.[.(.(.^.`.^._.|.(.(.`.(._.(._.(.!.S / ' BXVXFXZXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXFXO.7X>Xx n x 5 l g p 3 4 s *Xp -X+.X.O.O.o.X.X.X.X.7Xv d d w l g 9.0Xd p s k a z v g a @ k v z 5 5 g g - h z ;XyX=X5X=Xf M.iX! a 2.*XO j *XO n sXQ .X.X.o.X.X.X.X.X.X.X.X.X.X.X.X. ...6Xk k s w z v g 2.k +. .X.X.X.X. . .O.[ 7 k s h b k | +. .CXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXFXFXQ Q Q c.n.Q.!.(.(.`.(./.(./.(.(./.(.(./././.(.(././././.!.~.~.~.~.T.~.T.~ Q ! ZXAXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX>X2.9.k g g b k h h h z z z z l v l v b v h w w w x k 2.j O s O w z d z l + k s p =XwX=Xg O 4 4 w a z p , > > p | { eX@.3 x 7 O -X, - + # O b k :XX.X.X...3X-XsX@ w b / , W .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.o.o.VXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXBX' ! ! ` b.F.].~.~.~./.~.(./.(././.(.!././.^.~./.~.~.~.~.~.(.!.~.~.~.~.Q.! S } BXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGX9.,.4.1X1X1X1X,Xz a ;Xg 5 k wXk z a h ;Xp 5 h ;Xg @ :X1X:XX. .X.X...8X0X4.>X,Xv v :X,X*XwX-Xk :X:X*Xg a -X-X-XyX.wX4X2X,XwX<.;.,.0X1X1X2X5.wX1X4X.-.-.-.>.5.4X2XqX9.-.>.-.9.5.4.<.0X4XqX4.-.>.,.4.4X1X,X,XqX4.5.0X1XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXDXFXAXFX~ S / U e.n.A.A.S.A.A.A.A.h.h.g.A.h.A.A.j.S.g.g.g.g.k.f.a.g.k.g.k.k.f.f.f.f.s.f.a.a.a.a.a.a.f.a.f.a.d.i.k.i.f.f.k.k.j.g.g.a.g.g.f.g.f.g.g.f.z.g.a.k.", "m m = m m m m m m m m m m m m m m m m m m m m m m m m m m m m N u m m m M B M M N M M M C M m N N B N Z N N A B A N N Z N A C C C C B D H C C C C Z C C Z D Z C C Z A Z C Z Z B Z Z D Z Z D Z D Z Z D Z D ' { c ' u ; = r r r r r r r r r r r r r r e r r r r r r r r r r r r r r r r r r r r r r r ; ; 0 q r hXLXLXLXc { LXLXLX{ $ % ; LXLXLXLXPXLXLXPXLXgX% = { LXPXLXLXLXLXLXLXM.; % LXLXLXM.; * pXLXLXLX% pXLXLXLXLXLXLXn ; % ; : : : r r r r r r r : q r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r 0 r r % % $ $ (.^.^.^.(.(.(.(.(.^.(.|.|.(.(.`.^.(.`.(.(.{./.(.(.^./.(./.(.^.(.(.{.(.[.(.(.(.(.(.(./.(././././.~./.~.(././.~./.R.R.!./.T.T.T.I.T.T.T.T.! ! ^ ZXCXZXAXFXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXo.o.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.yXtXyX>XyXb x k *Xb -X:XuXb z 5 h g b z @ - l v @ g k b v 5 w 2.4 + 2.l 4 7 j k k k 7 7 -Xk v 7 2 =.j 6Xo.o.o.o.O.} k b @ a g v a x ;X4 7 5 ,X,X,X,X1X1XFXFXFXFXFXFXZXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXSXZXBX' / ~ ` n.Q.^.(.(.(.!.(.(./.[././.~.(.(.(.(.(.(._.(.(._.(.{.^.`.(.`.^.K.! / ' fXDXFXVXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.X.+.@ 1 # z 5 z 2 =.5 *XyXf d 3X+.+.| X.X.X. ...+.k p 2.k a p k k k z g g a a v v z @ @ w g -Xv a + p k p :X4X=XiX=X-X} :X@.- 9.qXs 9.qXp gXsXf O.O.O.O. .O.O...O...O.X.....X.X.o.O.6Xk =.7 x + h h a k 6X .X.X.O.X. .+.+.;Xs 2.k k 2.k k p +.SXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXVX! Q ^ [ n.].(.(.(.(.(.(.(.(.(./.(.(./././././.(.~./././.~./.~.~.~.T.T.T.! ! ! ZXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFX:Xp k s d j 9.k - k -Xa 4 n 4 k *Xl *X*X:X5 b 6 w *X*Xk g s c f @ p 5.*Xz p :Xz - =Xs =Xk O # @ f a a a a p z z % = @.> 4 { x g 8Xn w :X5X:XsXp | O.o. . .2X-X5 @ @ z z d z k tX8X..o...o.W l eXd W o... . .X.X.o.o.X.X.X.X.X.X.X.X.X.X.X.X.X.o.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXFXZXBX} S ! ` b.F.].~.~.~.~.~././.~.~./././././.~./.~.^.~.~.~.~.~.~.~.~.(.[.Y./ ! _ BXDXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXeX4.4.<.<.:.:.5.z -XKX:X+ *XiX:Xg k k KX5 @ k KX,X- :X8XX. .X.....6X0X;.,.>X1Xb ;X:X-X*XiX1X*X<.9.-Xz d 8X6X-X2X,X,XtX<.:.>.wX2X2X4XwX,.-.,.0X4XyX,X1X2X,X1XwX>.-.;.<.wX.5.1XtX1X4X5.;.>.5.4X1X;.4.4X4X1XqX4.5.wX,X2XyX,X1X1X1X4X5.VXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXVXFXZXAXDX^ ! ~ Y e.Z.A.H.S.S.A.Z.A.h.h.h.A.A.h.A.j.A.g.g.z.g.f.g.g.k.g.f.g.f.k.f.f.i.z.i.a.a.a.a.i.z.a.i.a.a.a.z.i.k.a.f.f.f.j.j.g.j.g.h.g.f.g.g.z.g.f.f.a.g.", "m = m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m M m m M M M M M M m N m N F m B B N B N C N C Z C N A C A C C C C C C B C B H C C C F C B Z Z Z C Z D Z Z Z D C Z Z B B Z B Z A Z Z G D ' { ' c u y r r r r r r r r r r r e 0 r r 0 r r r r r r r e 0 e r q r r r : r r r r r e = y e r ; - IXLXLXLX$ - LXLXLXgXo $ $ LXLXLXLXc & IXLXLXLXe 0 IXLXLXIX> t IXLXLXPX- ; LXLXLX6X* % pXLXLXLX= n sXLXLXLXsXc - , % % % * r r r r r r r r * e r r r r r r r r r r r r r r r r r r r r r r r r r r * : r r : : % $ $ {.~.^.(.^./.(.(.(.(.(.(._.(.`.^.(.(.(.(.(.(.{.^.^.).(.(./.(.^.^.(.(.(.(.(._.(.(.(.(.(././.(./.{.(./.(.~./.[.~.~././.~.R.~.T.T.T.I.T.T.U.~ / Q ZXZXVXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXVXo.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.+.+.6X2XyX;XsXa a z b s 5X;Xp =Xb -X1Xb x g k -Xn k >X,X,Xj n n g k + p a a g k k a @ p p k -Xz h 4 w b 7XO. .o.X.X.+.8X:Xv v z l v x a p v ,X,X,X1X4.5.FXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXDXFXFXFXFXFXZXFXCX' / S ' F.Q.!.`.(.(.(.(.(.(./.(.(.(.(.(.(.(.(.(.(._.(._.(.|.^.(.(._.`.].! / _ BXDXAXFXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXo.X...7X*X4 sXn @ < 2 w s =X> z :X-Xk g | O.X. .O.8Xv g 9.0Xa -Xa + g v z a z w l z p k k a z ;Xl 5 p g k z ;X1X*Xs s d @.m t a k k + k k @ l @ z } 6X} 7X6X} 7X} } 6X} 7X7X6XX.X.o.+.:Xk @ :.8.g w x n 4 < KXX.X.o. .| k *Xk k v *Xk g x 5.*X+.CXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXVXFXQ Q S [ n.Q.(.{.`.(.(.(./.(.^.(.(.(.~././././.!.(././.~.~.~./.T.T.~.T.T.! ! ! CXHXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFX O.X.+.} 3Xb l w z z b k + v :X6X+.| +. .X.x n d W O... ...X.X.X.o.X.X.X.X.X.o.X.X.X.X.X.X.X.o.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXAXFXHX[ ! ! ` n.F.Y.~.~.~.T./.T.T./././././.~.~.~.~.T.[.~.T.~.T.T.~.~.~.~.[.F.! ! _ BXDXCXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX3X4X4X0X4.4.4.5.v a v z 5 g *Xk z a a v + - g b z v ;Xo.o.X. ...8XwX>.>.-.Xv p >X-XO *Xk b 9.4.v z p -X-X-X1X>X1X0X>.-.>.wX.,.0X1X2XtX9.wX2X1XwX>.>.-.,.5.4X5.>.-.-.-.>.qX1X,X4.0X4X:.>.;.qX4X5.;.<.qX1X1X4X1X2X1X4.qX2X2XyX1X5.>.ZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXAXZXFXAXZX^ ~ ~ Y e.b.A.G.S.A.A.h.h.h.h.h.h.h.h.A.G.j.h.h.g.k.k.k.f.d.a.g.f.f.f.f.f.k.i.i.z.a.a.s.z.i.a.f.a.k.a.a.a.z.d.f.f.f.j.f.a.j.z.f.g.g.g.f.k.f.a.f.g.a.", "m m m m m m m m m m m m m m m m N m m m m m @.m m N m m m m N N m M M m M M M M M M M M B B N B B B N N N N N C N B Z Z N A N N C C C C C C C C C Z C C Z C C Z Z B F B Z C Z C Z Z Z Z G C C Z Z Z Z D F ' ' ' Q u r ; r r 0 r r q : r r r r r r r r r r r r r r r r r r r r r r r y * r r r * r 0 y ; ; r ' LXLXLXIXsXM.IXLXLXLX- o % LXLXLXpX$ o { LXLXLXn c LXLXLX{ 0 % { LXLXLXc & LXLXLXpX% % pXLXLXLX% % ( LXLXLXS o & $ & % : : 0 r r r r r r r r r r r e q r r r r r r r r r r r r r r r r r r r r r r * y 0 0 r : % $ |.[.(././.(.(.(./.(.(.(.(._.(.^.(.(.(.(.(.(./.(.(././.(.(./.~.`.^.`.~._.~.(.~.(.~.(./.(.(././.(.[./.~.~.(.~.(./.~./.~.~.T.T.T.T.T.U.T.T.~ ~ ! FXVXFXFXAXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXo.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. . ...X2X,X,X1XqX>.FXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXCX} ~ ! ` n.].~.`._.(.(.(.(.[.(.(./.(.(.^.{._.[.(.(.(.(.{._._.^.`.(._.^.].! / ' BXDXFXAXFXZXFXFXFXFXFXFXFXFXFXFXFXZXFXFXFXFXFXFXHXX.X.X. .6X;XIXl @ a z l S qXeX> z p 2.*X} ..O...+. +.n @ v 6X:Xa z - a w - 5 z z z h w z l z f c c l w z :Xk # O 2Xn O z l - + x - k } @.f > W O. .......+... .X.X.X.X.X.o.X.X.X.X.X.X.o.o.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXAXAXBX' ~ ~ ` b.F.!.~.T.T.~.T./.T.~.~.~.!.~./.T.~.~.[.T.T.T.T.T.~.~.~.T.(.~.].Q ! } BXZXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXyXyX2X1X1X1X1X1Xl s s g g 5 @ z j @ z w z z z z x 6XX. .o.X...6X1XwX4.4.5.2XuXb g iXuXa w @ d v v g z ;X<.:.<.:.9..-.>.wX,X5.wX2X,X5.4.:X1X1XwX,.qX4XtX<.<.9.-.-.:.wX2X;.-.-.>.:.wX1X4.>.5.4XqX9.,.,.0X4X:.-.-.qX1X2X2X4.:.,.9.1X2X,X1X<.>.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXAXAXZX! ! S Y b.Z.H.H.H.H.A.Z.h.h.l.l.h.A.h.G.g.A.h.z.g.k.k.k.k.g.f.k.d.g.k.f.z.a.f.i.a.z.k.a.i.i.z.a.a.a.z.i.i.z.k.i.f.f.f.x.a.j.g.g.g.a.f.f.f.f.f.f.i.a.", "m m m m m m m m m m m m m m m m m m m m m m m N m m N m N N m m M m m M M M M M M M M N M M m B N B N Z A N C N A B B B C Z C A C C C C C C F C C C Z Z Z Z Z C A D C Z C Z Z Z B Z Z Z H Z D B Z Z D Z C ' ' Q Q > ; ; r r r r r e r r r r r r r : r r r r q e r r r r r r r r r r r r r r r y : r * e * y aXLXLXLXLXLXLXLXLXLXLXn $ $ LXLXPXsXo o x LXLXLXn Q LXLXLXc $ $ b LXLXLX' o LXLXLXsX& % M.LXLXLX& & c LXLXLXc o $ $ % % e r 0 r r r r r r r r r r r r r r r r r r r r r r r r r r r r e r r r r r t * y * r * & $ o T.[./././././.(.(./.(.^.(.(.(.`.(.`.(.(.(.{.^.(./.(.(./.^.(.(.^.^.!.[.^.(.[.(.(.(.(.(./././.{./././.[./.~.(./.~./.Y.~.R.~.T.T.T.P.T.T.R.~ ~ S ZXVXAXGXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXGXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. . .3X>X>X>XX>X>X;X- kX-X3 3 z 2.2.p h 9.qXs 4 2 4.qXv 4 =.;X} } o.o. ...6X2X2X,X2XyX-XsXw g >X,X,X,X1XqXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXBX' / S ` n.].^.(._.(.(.(.(.(.(./.(.(.^.^._.(.(._.(._._._._.`.^._.(.`.[.~./ / _ BXZXAXZXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXX.X.X. .+.c v 4 - f s z | eX} f < j @ s -X} } } :Xg p p - p p a v n z p x n z @ z k *Xk s a d 2 =.< j < + p @ -X*Xv c + ;X:X W o.X.X.X.X.X.X.X.X.X.X.X.o.o.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXAXFXZX_ S ~ ) b.n.R.T.T.T.T.~.T.~.~.T.~.~.~.!.~.~.T.T.T.~.T.~.T.~.T.~.~.T.T.K.! ! ] BXHXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXSXGXyX9X<.5.1X1X1XX:Xb p *Xk - a -X-Xj 9.k b :.-.<.4.<.>.wXwX>.-.-.<.tX1X2X2X,X1X4XtX9.wXwX;.:.wX.qX4X4.>.-.<.tX1X,X;.-.;.0X4X1XqX4.wX1X:.-.-.-.qX1X2XqX9.4.wX2X,X,X2X<.-.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXFXDXAXFXZX! ! S Y e.b.Z.A.H.A.A.Z.h.h.l.l.l.G.A.h.A.A.h.l.g.g.z.g.k.f.g.d.g.d.k.a.s.a.z.a.k.a.a.z.z.a.a.a.a.f.a.a.i.a.i.z.d.f.f.j.f.f.f.a.j.j.f.f.f.f.f.a.g.f.", "m m m m m m m m m m m m m N m m m N m N M m u m m m m m N m m N m m m m m M M M m M M M N B m m B V C V B B B B N C V C N A A C C C C C A C C C C C Z C C C Z C Z Z B Z C Z C Z Z Z Z Z D C D D G C F C F Q ' ! ^ y ; ; r r r r r r r r r r r r r r r r r r r r r r r * y r r r r r r r * t 0 : : r r : t - IXLXLXLXLXLXLXLXLXLXLXIXo $ LXPXLXsXo o { LXLXLXl w LXLXLX{ o - { LXLXLXf LXLXLXpX- o gXLXLXLX$ $ x LXLXLXn o o o $ % * * : r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r : r 0 r r r r r y * $ $ o /././.~.(.~./.(.(.(.(.(.(._.(.(.(.(.^.).|.(.{.(.(.(.(.(.(.(.(.(.(.(.(.(./.(.(./.(.!./.(./.(./.(././.[.(.~.~././.R.(.~.T.~.T.T.T.I.T.T.T.~ ~ ^ ZXVXFXZXVXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.+.yXyXtX1Xb l z v v l ;X>X:X,XyX,X>X>X,X,X>XX,X,X3X:Xh p k ,X2X,X,X,X2XAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXBX} ~ ! ` F.Q.(.`._.|.^.`.(.(./.(.(.(.(.(.|.(.`.(.^.`.`.(.|._.^.{.^.|._.!.! / _ fXDXGXZXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXo.o.X.X.X.+.+.;X! } c h y m @.z =.q.j @ :Xk p z g O 2.k s ;Xo s g 5 a h + @ g g =X5X=Xs :Xn a < =.2 8.=.@ n 8.@ :X=X-X6X- d z z z kX-X@ 9.2.-Xv 7 2.s j 2.p kXsX@ v j 2.p aXKX5 l j l 7 2 =.2 > f d :Xd 2.5.k k 2.k k 2.p l v z x z z b k 2.k 6XZXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXZXAX! ! ~ c.F.Q.]._._.(.(.(./.(./.!.(.~././.~.^././.~.T.~.~.T.~.T.T.T.U.U.P.! ! ~ ZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXXz p 6Xk < 2 2 l 3 =.w 7 x 7 d p :X-X b 4 5 p 6Xk d 4 x 7 z -Xp k X;X......W z sXh W . . .X.X.X.X.X.X.X.X.X.X.X.FXFXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXAXFXHX| S ! _ b.F.K.!.T.T.T.T.T.~.~.T.~.T.[.~.~.T.T.T.T.T.[.T.T.T.T.~.P.~.[.Y./ S } BXZXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX7X9.,.-.1.5.1X1Xv =X>X=Xd 8.n a g d :X:Xp -Xd *X6X .X.X.X.+..v 2.>.-.wX4XXuX1X>X<.;.,.wXwX,.>.9X1X1X5X2XtX,.,.,.wX4X5.>.9X1X4X>X:.,.>.>.wX1X4X4X4X9.-.>.>.-.-.0X4X4X4X4X4X4X>X>X4X<.,.FXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXAXFXAXVXAX^ ! ! Y e.b.H.G.G.h.A.A.l.h.l.l.h.h.z.l.l.l.h.h.h.h.k.g.k.k.f.f.f.f.i.z.j.i.i.g.i.k.i.a.a.a.a.a.d.k.a.a.k.a.i.z.f.f.f.f.j.g.g.g.a.g.f.g.g.a.a.k.d.a.", "m m m m m m m m m m N m m m N N m m m N m M m m m m m m m N m m m m m M M m M M m N M M N N B B N N N N B B B B C N C N C N N C C C C C C C C F C Z C C F B C Z C Z D A C Z Z Z Z Z B Z Z D Z Z Z Z C H S I ^ n S u r y ; r r r r r r r r r * y r r r r r r r r r r r : r r r r r r r e e r y : : r 0 : > ' LXLXLXLXgXIXgXIXPXLXLXLX- o LXLXLXLXsXn PXLXLXIXo $ IXLXLXPX{ n PXPXLXUX$ o LXLXLXPXpXaXLXLXLXLXo $ c LXLXLXsX' & % % : % : r = r r r r r r r r r r r r r r r r r r r e r r r r e r r r y r r r r = r r r : % , $ o /.~.(.!./.[.(./././.(.(.(.(.(.`.^.`.(.(.(.(._.(.^.^.(.(.(.^.(.(.(.(.^.[.(.(./.(.(././.(.(././.~././././.^.(././.!.T.~.~.T.T.T.T.I.T.T.T.~ ~ ^ ZXFXZXZXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXVXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.X.+.+.3X1Xb -X*X;X>X>X>XyX1X,X,X2X>XX>X>X2XtX,X,X,X2XAXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXBX' ! K { n.].].`.|.|.|.(.^.(.(.(.(.(.(.^.{.^.^.(.`.^.(._._.|.)._.(._.^.].! / ' BXDXZXZXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXo.o.o.X.X. .o.+.= > d p w 4 w l O 6 p f 7X/ - n ;Xj 9.-Xz 8Xu @ l w x n z z k k =XiX=Xs v -Xa 3 2 < O 4 # O + z s s l O -X, + w q.4 O k g p p O n aXv k g l - + z k p z z g + 5 2 2 2 =.2 3 +.+.f :Xz s s p x k -Xv k k l ;X@./ n j 4.k -Xv +.CXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXVXAX! S Q [ n.].{.(._._.(.^./.{.(./././././.~.(./.~.~.~.~.T.T.T.T.T.U.U.P.P.! S ! ZXVXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXb z g z z z w :X,X:X@ b KX:X@ z l l l 5 h 7 { q.d v KX-Xz 8.8.+ v 8X:Xa 7 { 2.5 h # + :X-X;Xz w -X2.9X+ -X-Xd z sXyXa f x k O -Xv d a v g ! .+.+.+.6Xj 2 =.4 a v v + n k *Xz h - z @ a z -X>X:X:Xv W G W W b n g W o. .....X.X.X.X.X.X.X.X.X.X.FXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXAXHX' Q Q _ b.F.K.R.T.T.Y.T.!.T.~.T.~.T.~.T.~.~.Y.(.T.T.T.T.T.~.T.T.^.T.[.L./ S ' BXAXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXO.9.,.-.-.-.<.5.v s =Xs z h @ s 6Xf } 6X:Xk s :XX. .X.X.X.6X1X,X1X5.,.tX2Xv :X4X0X<.4.b a -X-X2.>.j -X4.4.:X,X:XX:X4.4.4.2.:X>X:X:X:X:X4.4.4.:X:X2.4.:XX:X2.wX:X:X:X2.4.4.9.;X:X:XX2.4.2.4.4.4.0XX9X4.HXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXAXFXAXFXZX^ Q ! Y b.j.Z.G.H.A.A.A.l.l.A.h.A.A.G.G.l.l.l.k.l.k.g.g.g.k.f.f.f.a.f.i.f.k.a.k.a.i.z.a.z.i.a.k.a.a.a.a.a.k.i.d.f.f.f.f.f.f.f.a.g.z.f.a.s.a.a.a.a.a.", "m m m m m N m m m m m B m N m N N m N m m m M m m m m m m m m m m m m M M M m M m M M M N B N B B N N N B B B B M C N C B C C C C A B C C C C C C C Z C C F C D C Z Z D Z F D Z C Z D Z B Z G C Z Z C F S K u Q u u ; r r y r r r r * y r : 0 e r r e r r r r r r r r r r r r r r r r r r r r r : r ; e ; aXLXLXLXsX o o sXLXLXLXpXo LXLXLXPXLXLXLXLXLX6Xo $ c PXLXLXLXLXLXLXPXt $ o gXLXLXLXLXLXPXLXLXLXo $ - LXLXLXLXPX- o % % % : r r r r r r r r r r r : * y r r r r r r r r q r r r r r e r r * r r r r r y 0 r * % $ o % ~.T.!./.~.^././.(.(./.(.(.(.(.^.`.^.^.|.|.{.(.{.^.^.(.(.(.(.(.(.(.(.(.(.(././.(././.(././.(.(./././././.(.~.!./.~.~.T.~.T.T.T.T.T.T.T.T.~ Q ^ ZXZXZXZXFXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .X>X,X,X,X,X,X,X,X>X-X@ -X-Xp - + a O -X> O 7 g l g d 7 2 2 2 2 =.7XX.X.o.o.+.+.+.6X+.7X} 8XuXtX>X5X>X,XVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXBX[ ! ~ [ m.].`.`.|.{._.{.|.{.`.(.^.`.^.(.(.^.`.`.^.|.|.`.|._.{._.|.{.|.].S / _ BXFXFXFXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.X.X.X.X.X.X. .+.6X=X1 j O z - - z 5 , @., + @ O p b k z v k 5 l u eX0X} eX- g s s s s s *Xg h -X, # -X-XO v v a + 7 + w eX{ a d @ @ l x v k k p KXsX+ z 5.4.z 4 =.s p h k , h g 2 a ;X2 2 = > a *Xa j 0Xk z l l l b v c X.O. .+.-Xv k :XO.X.FXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXZXFX~ ! ~ c.n.'.^.{.(.(.(.(.^.(././././.~./.(.~.~.~.~.~.~.~.T.T.T.T.P.L.L.P.! ! ! HXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX:Xg j k 2 2 z z d z l p -X@ z 2 2 ;X=.2 h < s O w p v k O 2.4 d p -Xk d < s O h -Xd v >Xk v p @ k -Xk s s @ d a v k a a @ g x z z k v g z f c z x x 7 < :Xl z a 2XKXz sXw a w k k O n x @ z l d O :Xo.+.o.W @.@.@.W ....... .......X.X.X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXAXAXBX[ ! ! U b.Z.K.T.T./.Y.P.~.~.~.~.T.~.~.~.T.Y.T.T.T.T.T.T.T.T.~.T.~.T.(.F.~ / _ BXZXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXGX+.eX4.;.-.-.>.<.x w w z g v v 6X .x +.O.O.6X*X7X..X.X.o.+.,X,X,X1XwX5.,XyXv 8.1.;.-.;.b ;X>XyXwX5.:Xv k -Xv v k v k v v k k -Xv v v v k v v k v v v -X-Xk k v k v k v k v k z k v z k k v k v k k z k k v v k v -X-Xv z k v k k v k v v v k v v FXDXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXVXZXZXVXZX~ ! S Y e.e.A.G.H.A.h.A.h.h.h.h.A.A.A.l.l.l.h.h.k.h.g.g.g.k.f.f.f.f.z.f.i.d.i.k.f.a.i.a.i.i.a.k.a.a.a.a.a.k.z.f.i.f.f.i.f.f.f.f.f.f.f.f.k.a.a.a.a.a.", "N N N m N m m N m m m m m N B M N m N m M m M M m m N V N N N B m u M M m m M m m N M M N B N B V B B B B B B B A M C V C B A C C C C C C C Z C C C C C C C C C C C C B Z B Z C Z Z Z C F Z Z Z Z H Z Z S A u S ^ t y r r = r r r r r r r r r r r r 0 r r r r r r r r r r q r r r r r r r r r r r r t : e IXLXLXLX{ o $ o { LXLXLXIX+ LXLXLXM.IXLXLXLXaX o $ f IXLXLXLXLXIXn o $ o - IXLXLXLXgXn LXLXLXo o o pXLXLXLXLXc $ & % * r * r r r r r r r e r y * r r r : r r r r r r r r r r r r r r r r r r r r r r r e : % % o u ~./.I./.~.[./.~././.(.(.(.(.(.`.(.`._.|.^.{._._.`.`.`.(.`.`.(.(.(.(.(.(.(.(.(.(./.(./.(.(./.(.(././././.~.(./.~.~.~.T.T.T.I.T.T.T.T.T.T.~ Q ^ ZXVXZXZXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXGXo.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.yX2X1X;Xz KXx v uX2XyXtXX1X2X,X,X,X2X1X:X- 8XKXk w b 8.+ :X{ h b 5 k k d 7 7 k k O =.6X . .o.o.o.+. . .o.......+.+.6X+.8XyXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXHX' ~ ~ [ m.].'.|.|.|.|.|.|.`.`._._.|.|.(.(.^._._._.|.(.^.`.|._.}.^.{.|.Q./ / ' BXZXFXZXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.X.X.X.X.X.X. .X. .6X8.sXk d 4 n 4 5 z 4 7 l a w g z 4 h z @ l l | pX;X= + p a w z a O v s k l d d 5 w 5 g v z d d z @ h z x -Xv l d d d a @ w 4 x 7 -X2X2X:X:X+.n | .+.X.+.} 2 < IXc z d ;X;Xp g g a d KXb O n l a h sXn p :X2X:Xl l x v ! .X.X...W = ( > W . .X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXAXFXBX' ! Q _ b.F.R.T.I./.Y.~.P.~.T.T.~.T.T.Y.T.T.T.T.P.T.T.T.T.T.T.T.T.T.T.F./ ~ ] BXHXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDX8Xo.8X0X;.-.>.<.v l v @ d ;X8X .6Xk :X} 6XX.+. . .X.X.o.+.,X2X,X,X1X4X1X1Xb ;X9.:.>.:.b ;X2XyX,X4X1XXX-Xv >X>X>X<.<.<.<.9.:X = r r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r r y * r y ; e % - - $ $ o o o o , $ $ , o o z c $ o o $ $ $ o d c c w o $ & $ o o c c w o o o $ o o $ , $ w f c d $ $ & % ; * ; ; r e r r e r r r r r 0 r r r r r r r r r r r r r r r r r r r r r r r r 0 r : * & o ` T.T.T.T./.~././.(./.(.(.^.(.`.(.^._.|._._._._._._.|.`.`.(.`.(.(.(.(.(._.(.(./.(.(.(.(.(.(.(./././.~.~.(.~.~.~.~.~.T./.T.T.T.Y.T.T.T.T.T.~ ~ S ZXAXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.,X2X,X;X+ v g v ,X3XXwX:X>X:X:X>X:XwX>X,X2X2XyX:Xp v v a 5 4 3 O x v 4 < g 2.5.v x *Xj 2.g 2 7 6X} .o.X.X.X.X.o.o.X.o. . . . .X.7XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXBX[ ~ ~ ` n.K.].dX'..X`..X|.|.|.|._.^.`.(.`.}.}.}._.}.}.}.|.}.{.}.}._._.].! / _ fXDXFXZXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXVXGXo.X.X.X.X.X.X.X.X.X. .% 8.< @ 8.M.x @ 2 =.2 2 2 l 2 =.2 2 2 2 =.w = = @. -Xl + l n g l sX- d l b k s l -X+ > @.p < O h + f s p z -Xx p k -Xk v f } +.} z z h z 4 2.x < z b -Xg w 4 j < 2 2 2 7 _ iX{ 5 g b g g =.=.=.p + X. .X.X.X.X.o.X.X.X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXVXZXAX! Q ! [ F.K.].^.(./.^.{.(.(.(./.~.~.~./.(.~.T.~.~.~.T.T.T.Y.P.P.P.L.L.L.~ ! Q ZXFXAXAXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFX,Xk *Xk :XtXh j 9.;Xp 2.k 5 2 =.2 2 2 2 2 w z -Xk d k -Xk O 2.k - p ;Xn + 6Xk d :Xk v v p j -X-Xv h h -XX8X..X.o. .+.$ eXg W +.o.O.o. .X.VXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXBX[ ! Q Y b.F.K.T.T.T.T.T.~.T.~.T.~.T.Y.T.T.P.T.T.T.T.P.T.T.T.T.T.~.T.~.K.~ ~ ' BXHXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXHXqX5.X.6X0X;.,.<.z v n h h >X6X+.-Xk k v -X:Xo. .o. .X.O.+.4X1XyX1XwX<.9.4.b -X4XwX<.,.x -XyX4XwX<.9.1X0X>.wX2X2X.-.-.>.-.-.,.0X1X>X1X;X-X4X1XyX4.<.-.>.>.0X1X,X,XtX,.-.;.;.qX4X1X4.,.-.,.5.4X1X4X1X2.>.>.-.>.4.4X1X1X:.4.>XO # O # O O O O DXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXZXFXFXDX! ! Q G b.e.H.G.A.A.A.A.h.h.z.h.h.S.z.h.l.l.h.g.h.k.A.k.k.k.g.d.f.f.a.z.z.a.i.a.a.a.a.a.a.k.a.a.a.a.a.a.k.a.a.z.f.i.j.g.a.g.z.g.a.g.a.a.g.a.f.i.a.a.", "m m m N m N m N N m m m m N V M m m m N M N m M m m N m m N N N M m m m m m N m N m m N N N N B B N N N B N N N V C M C N C N C B A B A B A C B C C C D C C C C C Z C F Z B Z Z C Z Z Z Z Z Z Z Z Z Z Z F S y u > u : : r ; r r r r r r r r r r r r r y r r r r e r r r r r r r r r r r r r r r e r r = = y ; % $ $ , o o $ $ $ o $ o $ $ o $ o $ $ o o o $ $ $ $ $ $ $ $ o $ o $ o o $ , $ $ $ o o $ $ o o o , o $ & % $ $ o $ $ % % ; ; r = r r r 0 r r r r r e r r r r r r r r r * : r r r r r r r r r r r r r r : ; * $ o F.~.T.~.!.~./.!././.(.(.(.(.(.`.`._.|.|._._.{.|._._._.(.`._._.(.^.(.(.(.(.(.(.(.(.!.(.(.(.(.!./.(./.^.^.~.~.~.~.~.~.~.T.~.T.T.T.T.T.T.T.T.~ ^ ! VXAXFXFXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.+.,XuX;Xw - h l v v l l v 4 2 2 2 2 2 2 7 7 2 2 j yX,X:X>X;Xw - @ h g 5 5 z z w 4 l v k k s w 4 -Xk k :Xs k k +.O.X.X.X.X.X.X.X. .X.X.X. .X...FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXBX{ Q ~ { n.].'..X.X.X.X|.|.'.|.{.|.`.(.(.`.}.}.[.|.{.}.}._.}.}.}.}. X_.].! / ' BXZXFXFXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXVXo.X.X.X.X.X.X.X.X.X.X. .+.6Xv O 7 4 z 2 2 2 2 =.w 3 2 2 2 =.2 2 7 p -Xv O -Xv z z z g @ h s *X>X>X>X>X>X>X>X>X>X-Xh v s o +.{ a a s k O 9.2.f .o. . . .X.8X:Xz z - @ z w v :X;Xv >Xk 2 =.2 =.:X| eXD < z l b x X:X:X:Xl p *Xp j 9.-Xz 2 2 2 =.2 =.=.h f KX:X- n KX-Xz 9.*X@ v KX-Xs KX:X- :X-XKX8Xg 9.wXk k k p 5.k d f KX:Xa < s s b +.O.| +.O.! { 7Xo.o.n e w h a a z d z z v z a g h h g w - h z @ x d z h z z z ;Xn -X6Xo.+.o.+.+.f :Xg / 3XX7X+.k ;Xk :Xa g 6X .X.X.X.o.o.0X4.2X1X5.,.;.4.b :X1X1XwX5.b b 9.4X0X,.>.tX0X,.wX1X2X1XtX4.4.4.<.-.-.>.wX,X>X2X-Xb 4.wX1X1X.5.4X:X,.>.-.-.:.<.<.0X4X4X5.-.>.-.;.1.<.:.>.4.4X-X:X*X:X=X:X=X:XGXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXVXVXDXFXVXDXQ Q ^ U e.e.A.G.A.A.h.Z.h.h.h.l.l.l.A.h.l.l.h.h.f.h.g.g.k.f.k.g.f.f.a.a.i.a.f.a.a.a.a.a.a.i.a.a.a.a.a.k.a.a.a.a.f.k.a.a.g.a.a.a.g.a.a.z.s.f.a.a.a.a.", "m N m m N m N N m m N N N m m N N m N N M M m M N N N N m N N m M M m N m m m m m N m N N V B N V B N N B V C N M C N C C N B C C A C C C u B C V C C C C D D C C C F C C Z Z C F B D Z Z Z D D H Z Z H D Z y : e y y ; r r r r r r r 0 r r r r r r : * r r r r r r r r r r e r r r r r r e r r : e r e : * % % % $ o $ $ $ & $ $ o $ $ $ o $ $ $ $ $ $ $ $ o , & & % $ $ $ $ $ $ o $ & $ % $ $ $ $ o $ $ o o $ $ % % $ % $ $ $ % % * : : * ; r r r r r r r r r r r r r r r e 0 r r r r r e 0 r r r 0 r r r r r r r r * % $ & T.T.T.~.~.~./.!././.(.(./.(._.(.(._.|._._.(.|._._._._._._._._.(.|.(.(._.(.^.^.(.(.(.(.(.`.(.(././.!././.~.~.~.(.~.T.T.T.T.T.Y.T.T.T.T.T.T.~ Q ^ ZXAXFXZXFXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X. .X.X.X.X.X.X.X.X.o.X.+.6XyXs # # k 1X>XX:X,X>X:X7X7X7X7X7X} } 7X7X7X7X;Xj *X+ , > a a k v O *Xk f . .X.X. .X.+.:Xg 2.s p b p w h z a z l 7 7 :X=.< m @.q l 7 < *Xl x w 7 x < +. . .X.X.X.X.X.X.X.o.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXZXFXQ Q ^ [ n.Q.!.(.^./.^.(././././././.!.~.~.T.~.~.T.T.T.T.T.U.P.L.L.L.L.L.~ ! ! ZXAXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyXyX f uX,X1X>X6X+.FXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXBX' / ! ) b.F.K.T.~.T.T.T.T.~.T.T.Y.Y.P.T.T.T.P.T.T.P.T.T.P.T.T.T.T.T.T.F./ / [ BXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXqXqX1X6X .+.7X7Xx } / } c } o.7Xv k g g s :X..o.X.X.X.X.6X5.,.2X1X5.-.:.>Xv :X4X2X1X1X-X2.,.tX0X>.-.wX,X<.<.9.9..-.>.wX1X2X1X,XwX,.:.wX>X1XwX;.-.:.wX4X2X1X4.,.:.9.;.wXtX<.4.>.>.;.-.-.;.<.0X4X9X9.-.-.-.9.9.4.0X:XO # # O # O O O DXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXVXFXZXVXZX! S ~ G e.e.A.G.A.h.h.g.h.h.h.l.l.l.l.l.h.h.h.g.g.h.g.g.g.k.f.k.f.i.k.a.a.a.a.a.a.a.a.i.i.a.a.a.a.a.a.k.a.a.a.k.k.a.k.f.f.f.f.a.f.f.f.s.f.a.a.a.a.i.", "m N N N m N N m m N N m m V m m N m M m M M M M T N N N m N N N M M m m m N B m m B m V N N N B B N B B M A m V V N V N B B C C C C C C C C C C C C C C C C C C D C C B Z C Z C Z Z Z Z F Z Z D Z D Z Z D Z u > e e y ; r y r r r r r e r r r r r r r r r r r r r r 0 r r r r r r r r r r r * r r = y : ; ; * ; - & $ $ $ % % % , % $ & $ - $ - $ $ & $ $ $ & $ , % % % $ - $ $ $ $ , $ % % % % $ $ $ $ $ $ $ % $ $ 0 % & $ $ % % % % : y q : r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r % $ $ K XX~.T.~.Y.(.T./.!.(./.(.(.(.(.`.`._._.|.|._.|._. X_._._._._._.|.(.`._._._.`.`.(.(.^.(.(.!.!./.(././.!.~.~.~.~.T.~.T.~.T.T.T.Y.T.U.T.T.T.T.) ! ^ ZXFXFXZXVXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXGXo.o.X.X.X.X.X.X.X.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.,X:Xs # -X1X,X2XyX;Xh 9.0X4 j j 2.s g 4.j -XuX-X8.8.w + 8.8.5 4 =.2 =.2 =.2 < k k p 7 =.< k k p x *X*Xk =.8 7X6X7X6X6X7X6X7X6X7X7X .X.X.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXBX[ ! ! ` n.hX'.'.@X.X'.@X'.|..X X|.'.|.|.|.}.}._._._.|._.|.|.}. X|.}._.].! / _ BXVXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXo.X.X.X.X.X.X.X.X.X.X.X.X. ...6X7 2 g l g l 2 2 z s n - 4 x z @ p k *X-X>X>X3X7X7X7X+.6X+... . . .o...O. . .o.o.} k v k s p g z -Xv v :Xs -Xf O.X.X.X.X...} k *X*Xh 2.p + - + f s s l z z z 7 l w l w 2 =.;X2 2 l @ s f , +.o.X.X.X.X.X.X.X.o.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXVXZXVX! Q ^ c.n.]././.(./.(././././.^./.~./.~.~.~.T.T.~.T.T.T.P.U.P.L.L.L.S.L.~ S ! ZXVXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyXyX:Xj 9.k a 2.9.;X@ a - @ c 2 2 2 2 2 2 w x z x d z - w d - v z z - - d @ a d z z - a z l l v k s p k -Xd l l l x v :X+.....7Xv x a + :X8X..6X-Xl n b @ ;Xb n v k v sXx + l ;X:Xp eXb # KXb d w eXn a l z l l v x x x v l c f n n .>.>.<.tX2X2XwX<.-.-.-.:.4.<.4.;Xj ,.,.0X4X1X:X-.-.-.:.9.wX4X:X1.wX1X4.,.<.5.4X5.9.-.-.-.-.>.:.0X4X4X5.>.5.4X5X4XuX1X5X5X5X4X>X>X4XyXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXFXZXZXVXZX! ! Q Y e.b.Z.g.h.A.h.Z.h.g.l.l.l.l.l.l.h.h.h.h.k.h.g.k.g.g.k.d.f.d.k.a.a.a.i.a.a.a.a.i.i.a.a.a.a.a.a.a.a.k.k.a.k.d.i.g.i.k.z.f.a.f.f.f.a.f.d.a.a.i.", "m B N m N m N m m m M m m M M N M N N N N N M M m m N N B N N N m M N V m N m m m m M N N N N N N N N B N B B B B N B V C B C B C C B G C C C C Z C C C Z C C Z C C C C Z C C Z Z Z Z Z Z D D D Z L Z G H Z S * * ; ; e r * ; r r r r r r r r r r r r r r r r e r e r r 0 r r r r 0 r r r r r r r r : r r r * * % % % * % % % % % % % % % % % % % % % & % $ % % % * * % % % % % % % % % % % * % % % % % % % % % % % ; % ; % % % % % % : y * : ; r r r r r r r : r r : * t y r r r r r r r r r r r r r r r r r 0 ; ; ; * $ A.Q.T.~.T.~.~.~.~.[.~./.^.(.(._.}.}.}.}. X_._.}._._._.}._._.}.}.`.`.{.{.`.^.{.{.(./.(.(.(.(.^.!././.~.~./.~.~.R.~.T.T.I.~.I.~.Y.T.T.T.T.T.U./ S ^ ZXZXAXZXFXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXo.o.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.yXp k 2X,X,X,X,XyX;X@ j k k -Xk -Xa v k k k :Xk 7 7 5 4 4 s + 7 2 2 2 2 2 2 7 k 2.p w =.7 j 5.s z b >XtXwX>X>X>X>X>X>X>XuX>X>X>XuX6X . .DXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXfX[ / f ` m.].hXzX'.dXdX.X.X.X.X.X.X.X`..X X|.|.|.|.|._._. X|.}.|.}. X_.~.Q Q ' ZXDXAXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXO.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.7X=.g 2.j g 2 2 h b :Xc - x 8.8.p >XXp k k z p b k + g 2.k p z 5 l z z z v :X,XX>X6X.. .6X,X-XsXx @ :X+.+.2X;X5 l p @ ;Xv z a -X-Xv k h g -Xv v l O -X-Xd @ v v + b ,X:X+.+.+.X.+. .+. .X.+. .X.o.+.o.+.o.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXDXCX' ! ! ) b.F.K.~.Y.~.~.T.T.~.~.T.T.T.T.P.T.P.T.T.T.T.P.T.T.T.T.T.P.T.T.Y.! Q ' BXZXZXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX5.5.1X,X,X>X9X5.v v eXz z >X7X+.;Xk g k b 6X .X.X.X.X.7X5.,.;.4.4X5.,.4.4Xb ;X9.:.<.9.b 2.,.2XwX4.9.9.1X0X,.;.-.>.<.tX2X:X<.;.;.-.-.>.>.,.j b ,.>.:.9.wX1X4.9.<.>.-.:.9.<.9X1X>X1X4.>.:.wX2X1X5.,.-.-.-.-.;.9.0X1X:.5.5XuXeXeX,XuXsX,XwXuXeXeXeXIXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXZXGXZXCXFXS Q ^ Y e.b.z.A.A.h.h.A.h.h.h.h.h.h.h.h.h.h.h.h.z.g.g.g.a.g.z.a.k.a.a.a.a.a.a.a.a.i.i.i.i.i.d.a.d.a.a.f.f.a.k.a.a.a.f.i.i.z.i.f.i.i.f.i.i.k.i.i.a.a.", "m N B N N N m N m m M m m M M M M N N V N M N M m m N N N N N N N N M M m m m N M M M N N N N B V B B N B m B m N B N B B B B C C C C B C C C C C C C C C C C C C Z C Z C Z Z D Z C Z Z Z D D Z Z Z Z H Z Z Z q * ; ; ; * 0 r ; r r r r r r r r r r r r r r r 0 r r r r * : r r r e r r r r r r r r : r r 0 : * ; * * % * ; ; * ; : : % ; % ; % % % % % % * % * % ; ; * % ; * % % % ; % ; ; ; * : % * % % * * % ; * ; % % % * % : * r : r e = 0 r r r r r r y * r r r r * : r r r r r r r r r r r r r r r r : r : ; * % o r U.E.~.T.~.T.I.~.~.~.^././.`.(._.}.}.}.}._._.}._._._._._. X_. X_.|.(.^.|.`.|.(.`.(.(.(.(./././././.!.~.~.~.Y./.R.T.I.~.~.Y.~.U.Y.T.T.T.T.T.T./ ! S DXZXCXVXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXo.X.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.X.X.X.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.3X5XX1X2X2X,X,X,XyX6X7XZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXHX' / Q [ Q.].'.dXdXzX'..X.XzX.X.X.X.X.X'.|.|.'._.|._.|.|.|.|._.|.|.|._.!.! ! ' fXDXHXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXo.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.+.2.k k s g z @ z z l k d + 7 4 - :XuXuX:X.... .O.X.X.X.X.o.o.X.X.X.X.X.X.X.X.X.X.X.X.O.6Xk *Xz z p a l l l z z v 6X+. . .O. .o.O.o.o.X.| 4 4 @.@.5 2.2.h 5.s k k s p b + 2 g O l z n v s 6X+.X.X.X.X.X.X.X.o.VXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXZXSX~ ~ Q ` n.!.(.{.~.~./.~././.~.[.~.[.~.~.~.Y.Y.~.T.U.U.T.U.P.P.P.L.D.H.D./ ~ S ZXZXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyX>X>Xp j k z d z z z j 9.;Xp j s 4 j *Xz :X,X2XXeXeXx a 5 w @ @ - z h 5 a x l z z z b :X:X6Xo. . . .X.X.X. .o.o.o.o.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXDXDXSXDXBX' S ! Y b.F.T.R.~.~.Y.~.T.T.T.T.T.T.T.T.T.T.T.P.T.T.Y.T.P.T.T.P.T.P.P.Z.! Q ' BXDXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSX9.1.1X,X2X4X9.:.d :XaXz l X8XX.X.X.X. .X.+.5.,.,.,.tXwX5.1X2Xv ;X4XqX,.,.b 2.,.wX1X1X4X>X1X0X-.,.<.9.9.tXyX1XtX<.>.>.>.>.>.,.b j ,.>.,.,.:.wX4X1X2X5.<.,.,.,.9X5X2X2X,X,.,.5.1X2X2X,.,.;.>.>.;.,.,.<.,.4.5XeXsXaXtXwXsXaX5XwXsXsXXyXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXCXHX[ ^ ^ [ m.].dXdX'..X'.xX.XdXdX@XdX.X.X'.'. X|.|.|._.|.|._.|.|.|.|.'.|.]./ S } BXDXVXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXo.X.X.o.o.X.X.X.X.o.X.o.o.X.X.+.o.+.6X2.0Xz p ;Xl + z @ @ d l + *XyX+.7X+. .X.X.X.X.X.o.o.X.X.X.X.X.X.o.o.X.X.X.X.X.X.o.o.o.7X;Xa c s -X=Xp n O v k c ..X.X.X.o.o.X. .o.o.+.+.+.+.+.} k v v v v k 2.-Xk 5.p aX:Xa z l z z s *X- X.X.X.o.o.X.X.o.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXFX~ ~ S ` n.].R./././.(.~.~.~.~.~.~.~.~.~.~.T.T.Y.T.T.U.U.P.U.L.S.L.A.L.D.! ! ~ ZXFXFXFXFXFXFXFXFXAXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXyXtX:X2.9.k g ,X>X>X;Xk ;Xs 2.9.;X4 9.*Xz :X2X,X>Xg x 4 s *Xk s *Xk z p *Xk O 4 O h h b p p 9.b d 3 7 s ;Xb :XqX,.,.6X . .6X>X-X*X*XO b s + b g + :Xb x z - ;X-X*X-X@ -X5XeXsXsX:X@ j *XO j ;XO v -Xs *Xs *X*Xg g *X:Xk ,X8XX.o.+.X. ... . .o.o.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXDXHX` ! ! ` b.F.L.T.~.Y.Y.T.~.!.T.T.T.T.T.T.T.T.T.T.T.P.Y.T.T.T.T.P.Y.T.P.F./ ! ' BXZXSXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGX9.1.4X,X1XqX-.<.z p -Xz d *X6X .6Xz 6X7Xo. .O.X.X.X. .7XwX9.9.5.2XyX1X>X>Xb :XuXtX9.5.b ;X5.tXX>XtX2XwX9.4.,X1X1X2X2X>XyXtX4.9.4.9.9.9.-Xv 4.9.9.9.4.wXuX>X2X1X>X4.9.9.wXuX5X>X,X5.9.tXyX:X2X5.9.9.9.9.9.9.9.<.9.0X5X:XKXaXtXwXKXpX>XwXsXgXtXVXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXVXVXZXGXVXZX~ ~ ^ G e.e.g.A.l.l.h.Z.g.g.h.g.h.h.h.g.h.g.h.h.k.a.g.a.k.a.a.g.k.a.a.a.a.a.a.i.i.i.i.i.i.a.a.d.a.a.a.a.a.f.a.f.a.a.i.i.f.i.k.a.a.a.i.k.a.a.i.a.a.i.", "B m N N m m M M M M m m M M M M M N N V N N m N m m m N N N N N N N N m N N B m M m N N B N B N N B N B B N B N B B B C N C B C C A C C C B C B C C C C C Z C C C C C Z C Z Z Z Z C H Z B G D D Z Z Z D D D D Z ; % : 0 ; 0 ; r r y r r r r r r r r r e r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r r ; r r r 0 r r ; e : : : ; ; y ; ; ; ; ; ; ; ; r 0 r r ; ; ; ; ; r r r r ; ; 0 : % ; ; ; ; ; ; ; 0 r = r ; r ; r : r : 0 r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r 0 * r r r ; % $ % Q.U.T.T.T.~.~.~.~././.[.(.(.(.^.|._.}.}.[._.}.}.}._._._._._._. X[._.|.(.{.{.^.(.(.(.(.(./././././.(.~.!.~.~.~.T.T.~.~.T.Y.~.Y.Y.I.T.T.T.P.~.T.S / ! DXDXZXFXZXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXo.o.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.o.o.X.X.X.X.X.X.X.X.X.X.o.o.X.X.X.X.X.X.X.X.X.X.o.o.X.X.X.o.7XtX,X,X,X,XyX3X,X,X,X,X,X1X8.2 j j 9X3 < j 9XO =.g j 5.O =.< j 9X4 2 =.2 =.2 =.2 2 =.2 =.2 =.2 2 =.2 2 =.7 2X3X,X2X,X:.,.,.4.1X,X,X3XyX>X,XFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXCX' ~ K { Q.].dXdXdXzXzX.XxXdXdXdX X.X.X.X.X.X.X'.`.|.|.|.|.|.|.|. X_.(.~.! ! [ BXDXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXVXo.o.o.o.o.X.X.X.X.o.o.o.o.X.X.X.X. . .} 6Xv k ;Xx x b z @ b n l -Xo... .O.o.X.X.X.X.X.o.o.X.X.o.o.X.X.X.o.X.X.X.X.X.X.X.o.o...} - | { k s -X7Xd j 2.-X7XO.X.X.X.o.X.X.o.o...X.o. .o.o.o.o.+.+.+.*Xk b k b g 7 8.3 v k # x s 2.v X.o.X.X.o.X.X.o.FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXGXFX! ~ ! c.b.].!.{././.~./.T.!.~.~.~.T.T.~.~.~.T.T.P.P.P.U.P.U.S.P.L.S.S.A.~ ^ ! ZXFXVXHXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXHX=.2 :Xk *X*Xl 5.5.1X2X:X:X:Xk *Xk p 9Xk z :X2X>X>X:X:XXx ;X>X:Xk k k d 8.sXv ;X-X;X;.,.,.} ..X.X-XiXuXa KXl O KXx ;Xb n l + :X-XiXuXa ;XyXsXyXkX;Xa 9.qXs 9.0Xa 8XKXp # O iXuXv a iXuX*X2X,X3X3XtXX*Xk *X5XwXk ;X5X:X*X*X>XVXVXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXZXFXZXFXVXFX~ ~ ^ Y T b.g.A.A.h.h.j.j.g.f.z.h.f.g.h.g.g.k.k.f.z.k.g.g.k.i.i.a.f.i.a.a.a.i.a.i.i.i.i.i.a.a.a.d.a.z.a.a.a.a.a.z.a.i.k.a.f.i.i.i.k.i.f.i.i.i.i.i.i.", "V B B N N m V m m M m M M m M M M M N M N V M V V N N N C N N N N N N N N N M N M M M M N N N N N N N B N B N B B B B B B B C B C A V C C u B C C B C C C C C F Z C C C Z C C Z Z B H Z D D Z D Z D Z Z D D D D u * % = % ; r : r r r r r e r r r r r r r r r r r r r r r r r r r r r r r r r r r r : r r r r r ; r ; ; r r ; r ; r 0 r r r r * : = q : ; : : : y r r 0 r 0 r r r r ; r ; 0 ; r r 0 ; r ; = ; r q > 0 ; 0 r r r e r r : 0 r r r r r r r r r r r r r r q r r r r r * r r r r r r * r r r r : : r % % $ n.~.T.T.T.T.T.T.T.(.~././.(.(.(.(.(._._.[._._._._. X_._. X_._. X_._._.|.(._._.`.(.^.(.(./././.~././././.T.~.T.T.~.T.Y.U.~.~.~.T.T.T.T.T.T.T.^.T./ / Q MXVXCXVXZXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXSXo.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.O.o.o.o.o.O.o.o.o.o.o.o.o.o.o.O.o. .O.O.7XyXyXyXyXyXyXyXyXyXyXyX3XyXyX2.=.j ;Xv 7 j -Xb g =.j v -Xj =.7 -Xv g =.=.=.=.=.2 =.2 =.2 2 =.2 =.=.=.2 =.=.7 yXyXyXyXyX5.9.9.eXyXyXyXyXyXyXyXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXDXBX' ~ ! { Q.'.dXxXdXzX.XzX'.dX.X.X'..X.X.X.X.X|..X|.'.|.|.|.|.|.|.|.}.|.!./ / _ fXZXHXDXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXo.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.O.O.+.k v k @ l z z z l z ;XO.O.O.o.X.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.O.} w > > ;X-X=Xn z -Xv -X1X7XO.o.o.o.o.o.o.o. .X.o.o.o.O.o.o.o.O.o.o.+.o.o.+.o.+.XyXyXyXyXyXyXyXyXyXyXyXuX>XtX2XyXyX;X;XyXyXyXyX5XyXyXyXyXyXyXyXyXyXyXyXtXtXyXyXyXyXyXyXyXyXyXyX1X,XyXyXyXyXyXyXyXyXyXyX5XtXtXuXyXyXuXyX2XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXGXVXVXFXZXDXDXS ~ ^ Y e.e.g.l.h.h.h.j.g.g.h.h.h.a.h.h.k.g.g.g.g.g.k.a.g.d.k.a.a.a.a.a.a.a.a.a.i.a.i.i.i.i.a.a.a.a.i.a.a.a.a.a.a.a.a.a.a.a.i.i.i.a.i.a.a.i.i.i.i.s.", "M N B m N V M m M M m M m M M M M N N N N N N N N N N N m N N N V V V N N V V N M M M N N C N N N N N N B B N B B B B C C C B C C C C C C C B C C C C C C A Z C C C F C C Z Z Z Z Z Z Z D Z Z D D D D L D D D Z H 0 % % % ; r r r r r r r r r r r r r r r r r r r r r r r r r r r r : r r 0 r r r * 0 r r r r r r r q ; r = y ; r ; r ; y = r : r : * r : r r r r r r ; r ; r r 0 r r r r r r r r r r r : y ; 0 : * 0 y r r r r r r r r r r r r r r r r r r r r r r r r r r r r : y r r r r r r t r r * r e : * % $ o F ~.Y.T.T.T.~.~.~.R.~.(./././.(.^.(.(._._._._._._.}.[._._._._._._. X_.|.^.|._.(.(._.(.(.`./././.(./.~.~./.~.~.~.T.T.T.~.U.Y.Y.U.T.T.T.T.T.P.T.T.T.[ P ~ hXCXGXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXGXGXFXVXGXVXGXFXFXGXGXGXVXGXFXVXVXVXGXFXFXGXVXGXVXGXFXAXAXVXGXFXFXGXGXGXVXGXFXVXVXVXGXFXFXGXVXFXAXAXAXAXAXDXSXFXFXSXFXSXFXFXFXVXVXZXZXFXFXZXZXSXZXZXFXSXHXFXVXFXFXGXFXFXZXCXFXBXCXZXSXDXFXSXSXSXZXFXFXMXBXCXSXFXFXGXSXFXZXGXFXZXVXAXZXFXFXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXfX' ~ ^ c.m.].].hX$XzXzXzXzX.XdXzX.X'.zX.X.X.X.X|..X|..X|.|.|.|.|.|.}.}.`.S ! ! m.HXZXZXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXGXFXFXVXVXAXVXGXVXFXFXVXGXFXFXVXGXFXFXZXDXFXFXDXDXFXFXZXSXFXFXDXGXAXAXVXVXFXFXVXGXFXFXFXHXFXFXVXGXFXFXGXGXFXFXGXGXFXFXDXDXFXHXDXDXFXFXDXDXDXDXDXGXDXDXFXVXFXFXGXGXFXAXVXVXFXFXVXGXFXFXGXGXFXFXGXIXFXFXHXHXZXAXDXGXFXFXHXHXFXZXDXGXFXFXVXGXFXFXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXGXMX/ S S c.n.!.Y.[.Y.(.!.T.~.T.~.T.T.T.T.T.T.T.T.U.U.L.L.L.H.D.L.S.H.D.G.G.Y / ~ hXZXAXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXDXZXHXGXZXDXFXGXSXDXAXGXFXAXSXAXFXGXZXFXGXAXDXGXAXFXFXSXFXHXHXAXAXFXFXSXGXGXZXSXFXHXHXFXDXFXFXGXDXZXGXSXFXSXDXVXGXFXFXDXZXHXGXHXZXSXZXDXDXDXAXGXDXAXSXSXFXIXCXAXSXDXAXHXFXHXVXGXFXZXZXHXVXFXFXDXZXVXHXGXFXHXZXCXHXDXAXSXGXFXZXSXFXVXGXVXCXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXAXDXZXZXfX_ / ! ` b.F.K.T.~.T.T.[.T.T.T.T.P.oXT.P.T.T.T.T.T.T.T.T.Y.T.Y.T.Y.Y.T.U.S ! / Q.ZXSXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXSXGXGXFXVXVXDXSXFXFXGXGXSXFXAXFXHXFXHXFXFXFXGXGXVXZXVXFXZXZXVXSXFXFXSXDXFXFXFXFXIXHXVXVXFXFXGXSXSXVXVXFXHXHXVXVXFXFXSXFXSXFXVXFXHXHXFXFXFXFXDXDXGXDXSXFXHXHXVXVXFXFXSXFXSXDXSXFXHXHXVXSXFXFXSXFXSXDXSXFXGXCXFXAXFXFXFXFXFXDXVXFXBXUXAXDXFXFXDXAXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXDXSXFXVXZXZXZXBX! ~ S G e.e.j.A.h.h.g.Z.g.g.f.h.h.z.h.k.g.g.g.g.a.z.a.g.f.f.a.a.a.a.f.a.a.i.a.i.a.i.i.i.i.a.a.i.i.a.i.a.a.a.a.a.a.k.k.a.k.a.i.f.i.a.a.i.i.i.i.i.i.s.", "C m N B V V V m M m M m M M M M M M M M M M N N N N B N N N N C N V N V N N N N N N N M N N N N N B N B N B B N B B B B B C C B C C C u B C C C C C C Z C C C B C Z Z Z Z C Z B Z B Z Z Z Z L Z Z Z Z D H H Z Z Z u * % % * 0 r r r r r r r r r r r * y r r r r r r r r r r r r r r r r r r r r r r r r r : r r r r y r r r r r y ; r r r r r : y : r r r r r 0 ; r e ; r r r r r r r r ; 0 r r r r r r r r r r r t r r r r * y : ; r 0 r r r r r r r r r r r q r r r r r r r r r r r r r r r * * y r : ; ; : % & # $ K.U.T.~.T.T.T.~.~.~.(././.^.(.^.[.(._._._._._._._._._._._._._._._._._._.|.`.(.|.(.(.(.(.(.(./.~.~././.~.~.~.T./.T.T.T.~.Y.I.Y.Y.~.T.T.T.T.T.T.(.T.n.Q Q [ hXVXFXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXFXFXVXVXVXVXSXFXVXGXVXGXFXFXFXFXVXGXFXFXFXFXVXVXFXFXFXFXVXGXFXFXVXVXVXVXFXFXVXVXGXVXFXFXFXFXFXFXGXAXSXDXAXDXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXSXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXZXZXDXFXGXFXDXDXFXFXDXZXSXDXFXFXFXFXFXFXFXFXFXFXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXZXFXDXBXm.' Q Q c.Q.].JXzXzXzX.XxXzXdXdXzXzX@X'.'..X.X.X.X.X|.|.|. X|.|.|.|.}.{.^./ / ! [ BXDXVXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXGXAXFXVXGXVXGXVXVXFXFXVXFXFXFXGXGXVXGXFXFXFXFXZXZXFXFXDXAXDXDXAXZXZXDXVXVXDXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXVXFXVXGXVXFXDXDXDXDXDXDXFXDXDXDXDXDXDXDXDXDXFXFXFXFXVXVXVXGXCXFXFXFXVXFXFXFXFXFXZXFXGXAXFXFXZXZXVXVXDXDXDXFXCXZXDXFXDXFXFXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXCXpX/ ! S ` b.Q.!.T./.!.~.~.T.T.~.T.~.T.T.T.T.T.U.U.U.L.L.H.Y.L.S.L.H.H.G.D.b.! ~ } fXVXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXFXFXFXFXFXFXDXDXSXFXFXFXDXDXDXDXDXAXGXFXAXDXAXFXFXFXFXFXSXGXVXGXFXFXFXAXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXAXAXFXFXFXFXVXVXFXFXFXFXGXFXZXZXDXDXDXDXDXDXDXAXAXZXFXFXFXFXAXAXAXDXFXFXHXVXFXFXFXDXHXVXFXFXFXFXFXVXFXFXFXFXZXDXAXDXFXFXDXSXFXFXZXZXAXSXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXAXZXFXDXBXm./ ! ~ ` b.F.Y.T.T.T.!.T.T.T.T.T.T.T.T.T.T.T.T.T.T.P.T.T.T.T.P.P.P.Y.P.U.! S / { fXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXFXFXFXFXFXDXGXFXFXFXFXSXFXAXFXGXAXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXFXFXFXGXDXDXFXFXFXFXVXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXGXSXDXFXFXZXFXVXVXFXFXFXFXDXDXFXFXFXFXFXVXFXFXFXFXDXDXFXFXFXFXDXFXFXFXFXFXFXFXFXFXDXAXAXAXFXFXFXFXDXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXZXDXFXBXaX/ ! K Y e.b.j.A.h.h.h.g.g.a.g.z.g.h.k.g.f.g.g.g.g.f.f.a.a.a.a.k.f.a.f.a.a.a.a.i.a.i.i.i.i.i.i.a.a.a.i.a.i.a.a.a.a.a.i.i.a.a.a.i.i.i.a.i.i.i.i.i.a.s.", "V B B N M m V m m m M M M M N m M M M N A N M N V N N N N N N A N N N B N V V V m N M V N N N N m N N m Z B N B B B B B C B B B C C B B A C C A C C C C C C D C C Z C C Z C Z Z Z Z Z Z Z Z Z Z F Z H Z Z D D D C J u % & % % e r r r r r r r r r r : 0 r e r r r r r r r 0 r r r r r r r r r r : r r r 0 : r 0 r r = ; r r r 0 r r = r r r r 0 r : r r 0 r : : r ; ; e ; r r 0 ; ; r r e ; r ; 0 ; 0 r r r r r ; ; e ; r ; : r r 0 r r 0 r r r 0 e r r r e r r r r r r r r r r r r r r r r r y 0 : : 0 ; * * % o n.T.I.~.T.T.T.T.R.R./.T.!././.(.!.^.(.(.!._._._._._._._._._._._._._._. X_.`._.`.{.(.(.(./.(./././.~.~.T.[.T.~.~.T.T.~.T.U.Y.~.~.I.~.T.T.~.~.T.T.T.T.F.Q / ' hXCXVXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXGXVXGXVXGXVXVXVXVXVXFXFXFXVXVXVXFXFXFXFXSXGXFXFXFXFXVXVXFXFXFXGXVXVXAXGXVXVXGXVXFXFXFXFXFXFXDXDXDXAXDXAXFXFXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXZXFXDXZXSXDXFXDXDXZXZXZXZXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXZXZXFXFXhX' Q / Q c.].].zXzXvXzXzX.XxXzXdX.X'.zXzX.X.X.X.X.X|. X.X'.|.|.{.}.|.}.}. X' / ! Q m.CXAXZXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXVXVXFXFXVXGXVXVXVXGXFXFXVXFXFXFXHXVXVXVXDXDXFXFXZXZXFXFXDXDXDXAXZXGXZXDXVXGXGXVXFXFXFXFXFXFXFXFXFXFXFXFXVXVXGXVXVXVXFXFXDXDXDXDXDXGXDXFXDXDXDXDXDXDXDXDXFXFXFXFXGXVXVXVXAXAXFXFXFXFXFXFXFXHXZXDXAXAXFXFXZXZXZXFXDXAXSXDXDXAXZXDXFXFXFXFXVXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXhX` ~ ! S c.n.L.T.^.T.!.~.T.T.T.T.T.T.T.T.~.T.T.T.U.L.L.H.L.L.A.S.S.H.D.S.z.Z./ ! _ ].HXVXZXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXZXFXDXFXAXDXAXDXAXAXDXAXFXAXAXAXFXFXFXVXVXSXFXFXFXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXAXZXGXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXDXDXDXDXDXDXAXDXAXDXAXAXFXFXFXFXFXFXDXFXFXHXVXVXFXFXFXFXDXVXFXFXFXFXVXFXFXFXFXDXDXZXDXAXDXGXDXDXFXFXFXFXAXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXAXVXAXAXhX' S ~ S ` n.F.T.T.~.!.T.!.T.T.T.T.T.T.T.T.T.T.Y.T.P.T.T.T.T.T.Y.Y.P.[.T.U.[ / ~ / pXCXFXFXFXFXFXFXFXFXFXFXFXFXFXFXAXFXFXDXZXAXFXFXFXFXFXFXGXDXDXFXFXFXFXFXFXAXDXAXDXAXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXVXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXZXFXDXSXDXDXFXFXFXFXFXHXFXFXFXFXFXGXFXFXFXZXFXZXFXFXFXFXGXDXFXFXFXFXFXFXFXFXFXFXFXFXFXAXDXDXDXAXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXZXZXDXFXhX[ ~ S u F e.e.g.h.A.f.g.Z.g.k.k.a.z.f.g.g.g.g.f.f.a.g.a.d.z.z.k.a.a.a.f.a.a.i.a.a.i.a.a.i.i.i.i.i.i.i.a.i.a.i.a.a.a.a.z.a.i.a.a.i.i.a.i.i.i.i.i.a.a.s.", "C N V N N N M M M M M M M M M M M m B M M B B m B B m B B m B B B C B M C M C B N B N V N N N V m m N V N V N N V B C N B C C N C C A C C A C C C C C C C C C B F C Z C D C Z Z C Z Z Z Z Z Z G Z Z Z Z D D D D D J F e % % & % : ; ; ; > 0 * : r r = r 0 r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r r r r r r r r r r r r e q r r r r r r r r r r r e 0 r r r r r r r r r r r e 0 r r r r r r r r r e r r r r r r r r r r r r r r r r r r r r r 0 r r r r r r r r * : y : 0 y y ; ; ; r e * % % $ # Y R.T.~.U.T.T.~.T.~.T.~.~.~././././.(.(.(.(.(.(.`.(.{.`.^.|.(.|._.|.^.|._.|._.(.|.(.(.(.(.(.(.(./.!./.E.T.~.T.~.~.T.T.T.T.T.T.U.T.T.~.T.T.T.!.!.T.P.T.Y.U / S [ fXDXDXDXHXDXZXZXFXZXDXDXFXVXAXFXAXDXVXFXAXVXFXHXFXVXZXVXFXFXFXFXFXFXFXFXFXZXZXFXZXFXZXDXDXFXZXZXZXZXZXZXZXZXFXVXVXDXAXDXDXAXDXZXDXDXFXVXZXFXZXFXVXFXZXVXFXAXAXAXAXVXFXVXZXAXAXFXFXSXDXFXSXZXZXZXSXZXSXZXZXSXZXZXZXZXDXDXZXZXZXFXSXDXZXZXAXAXAXAXAXAXAXFXAXVXAXVXVXZXZXFXVXZXVXAXZXAXFXVXVXZXFXZXVXZXVXZXFXZXZXDXDXZXZXZXDXDXDXFXZXDXFXFXFXfX} / / ^ ' c.].'.zXJXdXzXzXdX'.xX.X.X.X.XdX.XdX.X X.X.X|.|._.|.}.}.}.}.}.|.].^._ ~ / / ].VXHXHXFXFXZXFXZXFXZXZXFXAXDXDXDXDXDXDXDXZXDXZXDXGXDXDXZXFXDXZXGXZXDXZXFXZXZXZXFXFXFXFXZXAXZXZXZXVXZXDXFXFXZXZXDXDXZXZXFXDXZXZXDXZXDXDXZXZXFXDXVXZXZXDXZXAXZXZXZXAXZXZXFXZXFXDXFXFXFXFXAXZXAXZXFXZXFXFXDXZXDXDXZXHXDXZXAXFXAXFXAXAXAXFXVXZXHXAXHXVXVXVXAXAXAXFXAXAXHXVXAXDXZXZXAXAXAXAXAXAXAXFXAXAXFXZXVXZXFXZXFXVXFXZXAXAXAXFXVXFXFXFXGXfX[ ~ / u i c.n.F.T./.T.~.~.T.T.T.T.T.T.T.T.T.T.P.U.U.L.L.L.H.H.H.H.H.H.A.S.H.Z.P / / ' hXFXZXFXAXZXAXFXFXDXZXAXFXFXSXAXFXZXZXSXZXSXDXFXAXAXAXAXAXSXDXFXAXAXAXFXFXFXZXAXZXFXFXVXZXZXZXAXAXAXAXAXSXAXAXSXAXAXFXFXAXAXAXSXFXAXZXAXFXFXFXZXDXDXAXAXDXZXDXDXAXFXDXFXFXZXFXZXDXFXFXFXFXFXZXDXDXZXFXVXFXFXZXZXFXVXZXVXZXHXFXZXFXVXFXFXVXFXZXZXZXFXZXVXFXFXFXFXAXZXFXAXFXFXAXAXAXFXFXFXGXFXFXDXZXDXAXDXAXFXAXAXAXAXDXDXDXCXZXZXZXDXFXHXDXfX[ ~ Q Q i ` n.F.!.T.^.Y.Y.T.~.T.T.~.T.T.T.T.T.T.~.T.T.T.T.T.T.^.P.Y.Y.Y.L.P.F._ ! ! _ hXBXDXDXDXZXVXVXFXZXFXVXZXDXSXZXZXFXZXDXSXZXFXFXZXZXSXZXSXDXZXZXSXZXAXAXDXAXDXFXSXDXZXFXVXFXVXVXVXZXDXZXHXDXZXDXDXFXZXVXZXAXAXZXFXAXZXAXDXAXDXAXAXDXDXDXDXDXZXDXGXZXZXZXDXDXGXZXFXAXZXZXZXZXVXVXFXAXVXAXSXAXZXFXVXZXVXAXFXZXFXFXFXAXDXDXDXHXFXFXFXZXZXZXZXDXDXFXFXFXAXAXVXFXVXFXVXFXZXFXFXVXZXZXAXFXFXFXFXFXFXAXGXAXVXFXFXVXFXVXAXFXZXZXFXfX[ ^ ~ ^ A G e.e.h.h.h.h.k.A.f.f.f.z.z.g.h.f.f.z.f.f.f.f.f.i.k.a.k.i.i.a.a.a.a.i.a.i.i.s.i.i.a.i.i.i.a.i.a.a.i.a.a.a.a.a.a.a.i.i.i.i.i.i.i.i.u.i.i.i.i.a.", "m u B B N M M M M M M m M m M M M m m m m m M B B m m B B m B m B M C B m B m B N B V N N N C m N N V B C N N C A M N C C V C C C C B C C B B A C A C C C Z C Z Z C C Z C G Z Z Z Z Z D Z G D Z Z Z G Z D Z D Z H D F A r $ - % % * ; * 0 y e ; r : r r r r r r r r r r r r r r r r r r r r r r r r r r r r : r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r r r r r r r r r r r r r : r r r r e r r r r r r 0 e t r : 0 : ; ; y : = % ; 0 & o e !.T.U.T.T.T.T.T.~.T.~.T.~.~.~./././.(.(.(.(.`.(._.|.(.(.{.(.{.{.`._.|.{._.(.|.(.(._.^.(.(.(.(.(./././.~.^.~.T.T.T.T.T.T.T.T.T.T.T.~.T.Y.~.T.T.P.T.T.P.^.F./ / / ' hXZXZXDXZXZXAXAXAXDXAXAXVXVXAXAXAXVXVXVXVXFXVXVXVXVXFXFXVXVXVXVXVXVXVXHXVXFXZXZXAXAXAXFXVXHXZXZXZXZXFXZXVXZXHXFXHXZXAXAXVXAXVXFXFXVXVXFXVXFXVXVXVXVXVXFXVXVXAXAXFXDXFXVXAXAXZXZXZXDXFXDXDXDXZXZXDXDXDXDXDXDXZXZXDXDXZXZXAXFXZXZXZXZXAXAXFXZXFXFXFXAXZXZXFXFXFXZXDXDXVXFXFXZXFXFXAXZXFXZXFXFXFXFXFXFXFXFXFXVXFXDXZXDXFXZXFXFXFXZXHXDXFXfX[ Q S ~ c ` M.].hXxXdXdXzXzXzXzX.X.XxX'..X.XdX.X.X@X.X.X X|. X|._.}.}.}.}.|..X_.Q._ ~ ~ ' hXHXGXFXFXFXFXZXFXFXZXFXFXFXDXFXZXZXHXFXFXFXFXZXAXZXDXFXFXFXFXZXVXFXZXFXFXZXSXZXVXZXZXAXAXAXAXVXFXFXZXFXDXZXAXFXFXDXZXFXZXZXAXFXFXFXZXVXVXZXZXFXZXFXZXAXAXAXAXAXAXFXFXAXAXVXZXAXAXFXFXAXAXAXAXAXAXAXZXFXFXFXZXZXZXDXZXFXZXZXFXAXFXAXDXZXVXFXDXFXFXZXZXAXZXVXFXAXAXFXFXFXAXFXZXFXDXAXDXFXFXZXZXAXFXFXZXVXZXSXZXVXZXZXZXAXFXFXZXHXFXFXFXfXm.' Q / S I c.n.].T.T.~.T.T.~.[.T.T.T.T.T.T.T.T.P.L.L.L.L.L.L.H.S.H.H.S.S.S.A.D.Z.I / / [ hXFXZXZXZXAXAXAXFXDXFXZXZXAXAXDXFXZXDXDXDXDXDXFXZXGXZXZXDXZXDXZXZXFXHXZXZXVXVXVXFXDXVXVXVXVXDXHXAXZXDXZXZXAXZXFXFXFXZXAXAXFXZXZXZXAXAXAXZXSXAXAXAXAXSXAXAXAXAXVXAXAXVXFXVXVXFXFXVXFXFXFXFXFXAXHXAXAXVXAXVXVXVXVXVXVXVXFXVXVXVXVXVXVXFXVXVXVXVXZXVXVXVXVXVXVXVXVXVXVXFXHXAXAXAXAXVXHXFXVXAXAXFXZXAXAXHXAXHXDXAXHXAXAXCXDXZXZXFXFXHXHXVXfXm.Q ~ ~ u _ [ F.L.T.T.T.Y.T.T.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.Y.P.~.^.Y.T.T.P.~.F./ / ! ' hXDXDXZXZXGXDXHXZXFXFXZXZXDXDXZXZXDXDXDXZXFXZXZXDXDXDXZXZXDXZXDXZXDXAXAXDXAXAXFXDXZXZXVXZXVXFXFXFXFXFXFXFXFXFXDXFXVXFXFXZXAXAXZXVXAXZXAXAXSXAXZXDXAXAXAXAXZXZXZXZXFXZXFXFXZXAXFXFXFXFXAXAXFXZXDXZXFXAXVXVXZXDXZXVXAXAXFXDXFXAXAXAXFXHXVXVXVXVXFXFXVXVXVXFXVXVXFXHXVXVXVXFXVXFXVXVXVXAXVXVXVXFXHXVXVXVXAXAXVXFXAXVXAXAXVXFXFXVXVXFXZXFXfXm.' Q S ^ S T e.j.A.h.h.k.j.j.f.g.g.i.a.g.f.h.a.z.f.f.k.a.a.f.s.f.i.k.k.i.a.a.a.a.a.i.i.i.i.i.u.a.t.i.u.a.i.s.i.i.i.a.a.a.a.a.i.i.a.i.u.i.i.i.i.i.i.i.a.i.", "B N N B N N M M M M M M M M m M M M m M M M m M B B B B m B m B m m B m B B B B B N N V V V N N V N V N N M N N V N C V C B N C C A C C C A C C C C u B C C C C Z C Z B Z C Z Z C Z Z Z Z D D D Z Z D D D H D D Z Z Z H u * $ $ % % * * 0 ; ; e r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r q r r r r r r r r r r r r r r r y r r : r r r r r r r r r r r r r r r r r y r r r r r r r r r e 0 r r * r r r r r r r r r r r r r r r r r r r r r ; r r r : : y 0 r e = % $ o q ~.T.Y.T.~.T.T.[.~.T.T.T.~.~././.~././.(.(.(.(.(._.(.).^.(.|.{.(.|.{.|.{.|.|.`.{.|.`.(.(.{.(.(.(.(./.^.~.~.T.T.~.~.T.~.T.T.T.T.T.U.T.T.T.T.T.U.T.T.T.T.P.P.!.[ U S ! ' hXfXCXHXDXVXZXDXDXZXZXZXDXDXHXFXDXHXDXVXZXZXZXFXZXDXHXHXVXFXDXFXDXHXFXZXGXFXDXFXFXZXZXZXDXDXZXZXGXDXDXZXZXFXFXDXDXDXDXFXFXDXDXDXDXHXDXDXDXZXFXFXDXDXDXZXZXFXAXDXDXZXGXZXZXDXZXDXDXZXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXZXZXZXDXDXDXDXDXDXDXZXZXDXZXZXZXZXZXDXDXZXZXDXDXDXZXZXZXDXFXFXDXFXZXFXFXDXZXZXFXZXFXFXFXFXAXZXHXVXAXVXVXVXZXDXVXhX` S / Q ^ ^ c.m.].hXdXJXdXvXzXzXdXzXzX.XzX.XzXdXdX.X.X.X.X|. X|.|.|.`.}.}.}.}. X_. XQ./ / / ' ].fXFXGXZXFXFXAXZXAXFXAXFXHXZXAXZXZXFXFXDXFXAXAXZXZXDXFXZXDXFXVXZXZXVXVXZXFXVXVXZXDXAXAXZXAXVXAXDXFXFXFXFXZXVXVXZXZXFXFXAXZXFXFXDXZXVXVXZXZXVXVXDXZXAXAXAXAXAXAXZXZXAXAXSXZXAXAXZXFXAXSXZXAXAXAXZXZXVXFXZXHXZXVXZXDXFXFXZXDXZXFXHXDXZXDXDXDXFXDXDXDXFXDXGXZXFXZXZXDXZXZXZXDXZXGXDXZXZXZXZXZXZXZXZXZXZXDXZXGXZXZXZXDXFXAXZXFXGXFXBXhX} ) / Q c S Y b.F.!.!.~.T.~.~.~.U.T.T.T.T.T.T.U.P.U.L.U.L.L.H.H.H.H.H.A.S.A.G.A.S.h.T / Q Q ' hXMXDXAXZXZXAXZXDXAXAXFXZXVXVXZXVXZXZXZXZXFXAXHXZXAXAXZXZXDXDXFXAXFXVXFXHXVXZXZXHXHXFXHXZXDXZXFXFXAXVXZXAXAXAXAXAXAXAXAXAXFXFXFXGXDXFXZXZXZXAXGXZXDXDXDXAXFXDXAXAXDXDXDXHXFXFXZXZXDXDXFXZXDXDXHXCXZXFXHXFXHXVXFXFXFXZXZXHXFXZXHXDXFXFXVXHXHXFXHXZXVXHXDXFXFXHXFXFXFXFXHXVXVXHXDXDXFXFXFXFXDXDXDXDXDXDXDXDXDXDXDXHXCXDXHXDXGXZXHXBXhX[ ~ Q ~ u u ` b.n.P.T.~.T.T.~.~.T.~.Y.T.~.Y.Y.T.T.U.T.Y.Y.~.P.Y.~.Y.T.Y.T.T.U.T.T.].F.! ! ! ' hXfXZXZXVXVXVXDXZXZXDXDXDXDXFXFXDXDXDXDXZXFXZXZXDXDXDXDXAXDXZXZXZXDXDXDXDXDXGXAXDXDXDXDXZXDXDXDXVXFXFXAXZXDXFXZXFXVXVXZXAXAXAXAXZXZXZXZXAXZXAXDXFXAXZXAXDXHXDXDXFXFXFXHXZXZXVXZXFXFXZXGXZXZXFXDXDXDXZXDXDXDXZXZXFXZXZXZXZXZXFXZXDXDXDXDXFXZXDXHXDXDXHXFXFXFXHXFXAXFXHXDXAXFXFXHXFXVXHXZXFXHXFXFXFXAXAXVXFXHXFXFXAXHXAXDXFXVXHXAXMXhXm.! / / S u F c.e.j.h.h.h.h.g.j.g.d.g.f.g.g.h.f.j.f.f.f.f.f.f.f.f.f.k.i.a.i.a.a.f.i.i.i.i.i.i.i.i.i.i.a.u.i.i.a.i.i.i.a.a.i.a.i.i.i.u.i.s.i.i.i.u.i.i.i.a.a.", "B N V V N N N M M M M M M M m M m M M M m M M M m M m m B B M B B B B m m m B m B N N V N N N V N N B V C V C C N C N C V B C V C C C C C C C C C C C B C C Z C C F C Z Z Z Z C Z Z Z G Z H D Z D D D D D D D Z L L Z S Z C % $ & & % * ; ; ; e r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r e r r r r r r r r r r r r : r r r * r r r r r r r r r r r r r r r r r r r r * : r e r r r r r r r r r r y r r r r r r r r r r r r r r r r r r r r r ; r r r r q = : ; ; % % $ m.L.T.~./.T.T.T.T.T.T.~.~.T.~.~.T././././.(.(.(._.(._.|.`.{.(.^._.|._.(.|.`./.^.|.^._.(.{.(.^.(.(././.~.^.~.~.~.~.T.T.T.T.T.T.U.U.T.T.T.T.Y.P.U.Y.T.U.P.P.P.P.P.[ / ! / ' m.fXBXBXBXMXMXMXCXfXMXBXBXMXBXMXBXMXBXMXBXBXBXMXBXMXBXBXMXBXBXMXBXBXBXMXMXBXBXBXMXBXBXMXBXmXBXMXMXBXBXBXMXBXMXBXBXMXBXMXBXMXBXMXBXMXMXBXMXBXBXMXBXMXBXBXMXBXMXBXBXMXBXBXBXZXBXBXBXBXHXBXBXBXBXBXBXBXBXBXBXBXBXBXfXZXBXBXBXCXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXCXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXfXpX' ^ / S c c ' M.].'.dXdXdXdXzXzXzXzX.X.X.XzXzXzXdX XdXdX.X.X|..X|.|._.`.}. X}._._._.(.`.n.S / / } [ hXnXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXMXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXMXMXBXMXBXBXMXBXBXBXMXBXBXmXBXBXBXBXMXBXBXBXBXBXBXBXBXBXBXBXBXBXBXMXBXBXBXBXBXCXBXBXBXBXfXQ.{ / Q / u u K b.n.F.U.~.T.~.T.T.T.T.T.T.T.U.U.Y.L.L.L.L.L.L.H.L.H.H.H.H.H.S.A.A.A.D.A.A.[ / / ! ' m.hXMXBXBXBXBXBXBXBXBXBXBXBXBXBXMXBXBXBXBXBXBXCXBXBXBXCXBXBXBXBXBXBXBXBXBXBXBXMXBXBXMXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXMXBXBXMXBXBXBXmXBXBXBXMXCXBXBXBXMXMXBXMXMXMXBXZXMXBXMXBXBXMXBXMXfXMXBXMXBXMXBXMXBXBXMXBXMXBXMXMXBXBXBXBXMXBXMXBXMXMXBXMXBXBXBXMXBXBXMXBXBXMXMXBXMXMXBXBXMXBXMXBXMXBXMXBXMXBXMXBXMXCXBXBXMXMXMXfXQ.} ~ / Q u u K Y b.F.T.T.~.~.I.~.T.T.T.T.T.Y.T.T.T.T.T.Y.P.~.P.~.T.T.T.T.T.Y.Y.T.T.U.T.T.n.S / S / m.hXmXBXBXBXBXBXBXBXZXBXBXBXBXBXBXBXBXBXBXBXHXBXBXBXBXCXBXBXBXBXBXBXBXBXBXBXMXBXBXMXBXBXMXBXBXBXBXBXBXBXBXBXBXCXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXMXBXBXBXBXBXBXBXMXBXBXBXBXBXMXZXBXMXBXBXMXMXBXMXBXBXMXBXMXBXMXBXBXBXMXBXMXBXBXBXMXBXBXmXBXMXBXBXMXBXBXMXBXBXMXBXBXBXMXBXMXMXBXBXMXaX[ ! Q ! u > A Y e.e.j.l.l.h.f.a.j.g.g.a.z.a.g.f.j.k.f.k.f.f.f.f.a.f.a.a.a.d.i.a.a.i.i.i.i.i.i.i.i.i.a.i.s.a.i.i.i.i.i.i.i.i.i.i.i.i.i.s.i.i.s.u.u.a.i.i.a.i.a.", "B B B N V N N N M M M M M M M M m M m N M M M m M M M M M V M B M B M N B B B m N N N B B B N V N N V B B B C N B B V A C N C C N C C A C C C B F C C C C C C A C C G Z C Z Z Z Z C Z Z G Z L Z D D D D D L Z H Z L Z Z Z F A % $ $ & % % : = : r r e 0 r 0 : * r r r r r r r r r r y r r r r r r r r r r r r r r : r r r r r r r r r r r r e r r r r r r r r r r r r r r * y r r r e r r r 0 e r r r r r r r q r r r r r r r r 0 r r r r r r r r r r r r r r r r r r r r r r r r r r r r r ; * % % $ o & ].T.~.T.R.Y.T.~.T.T.T.~.T.T.~.~.T.~./././././.(.`.^.(.(.(._.(.(.`.{.`._.|._._.{.`.(.`.`.(.(.(.`.(.(.^././.[.!.R.~.T.T.T.T.T.T.T.T.T.T.U.T.U.Y.P.P.P.T.P.P.T.P.P.U.L.) / / / ~ / ~ Q Q Q Q ! / / / Q Q ~ ^ Q Q Q ^ ! ! Q Q ! ! ! ~ ~ ^ Q Q Q ~ ^ Q Q Q Q ~ ! ! Q Q Q Q Q Q ! ^ Q / ~ ! ! ! / ! ! ! Q Q Q ~ ! ! ! ! Q Q ! Q ! ! ~ ~ S ! ! ! S Q ~ ! ! ! S / ! S ! S ! ! S S ~ ~ ~ S / Q Q ^ Q ! S ! ! ! Q / ! ! ~ ! ! S ^ ^ ^ S ^ S ~ S ^ ^ S S S ^ ^ ^ S S S S ~ ~ S ^ ^ ^ ^ S ^ ~ ^ ~ ~ ~ S S ^ ! S ~ ~ / Q ! / / Q c ' c.m.]..XzXzXzXzXxXzXzXdXzXzX.XzX.XdXzX@XdX.X'..X.X.X|.|.`.}.}.}.|._._._.`._.!.` / / / Q ~ ! ! ^ ! S ^ ! ! ~ Q ^ ~ ~ ^ S ^ ! ^ ^ / ! ! S ^ ! ~ ^ ~ S Q Q S S ! ! Q ! S S S S ! S ~ S ~ S ~ ~ S ! Q ! ^ S ~ ~ S ! ~ S ^ S S S ! S ^ K Q S S S S Q ~ ^ ^ S S S ! S ^ ! ~ ~ S ! ^ ^ ~ ~ ^ S ^ S ! ! S S ! S S S ^ S ^ S ^ ^ ^ Q ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ~ S ^ S ^ ! S S ! S ~ S ^ S ^ ^ ^ ! Q Q c Q Q ^ Q S S S ! ^ ~ ~ ^ Q ^ u u K Y b.n.~.!.T.T.T.~.T.T.T.T.T.U.U.L.I.K.L.L.L.L.L.L.G.H.S.H.A.H.A.S.A.A.A.A.h.Z.[ S ~ ! / ^ S ^ ~ ~ ! Q ~ ! ! / ! ! ! ! Q Q ! Q Q Q ! Q c Q Q Q ~ ! ! Q ! Q Q Q Q ^ ^ ~ ~ ! ! ! ! Q ! Q Q Q Q Q ~ ! ! ! ~ ^ ! Q Q ! ! ! ~ ~ ^ ! Q ^ ! ~ ! ! Q Q S / ~ ~ ~ ^ ! Q Q Q Q ^ ~ ! ^ Q Q Q ! Q Q ! ! / ^ Q Q Q ~ Q Q Q Q Q Q ! ~ ^ S Q Q Q ! Q Q ! ! ! ~ ! Q ^ Q Q Q Q Q ^ ! ! Q Q ~ ^ Q Q ! ! ! ~ ! ~ ~ ~ ! Q Q ! Q Q Q Q Q / S ^ n S u J Y b.n.K.Y.~.T.T.T.T.T.~.T.~.T.T.T.T.T.T.P.T.T.T.T.T.Y.~.~.T.^.Y.T.T.T.[.U.P.P.I / ! ! / ! ~ ^ Q Q ~ ! S S / S ~ ! ~ ! S ! ! S ! / S / S S ! ! ! ~ ~ ! S Q / / ! ! S ~ S ~ Q ^ ! S ! ~ Q ~ ~ S ^ S Q ! S ~ ! S S ! Q S S ~ ~ Q S ^ ^ S ! S Q Q Q S ! S ! ^ ~ ! ! ^ ^ ^ ^ S ^ ^ ^ S ^ ~ ! ! ! ^ ! Q Q ! Q Q Q / / ~ ! ! ! Q ! ~ ! ! S Q Q ^ Q Q Q ^ Q ^ Q Q ~ ~ Q Q Q ! ! Q Q ~ Q ~ / ~ ~ ~ Q Q Q Q Q Q Q Q Q ^ Q Q Q S ~ ~ ! u q u F T e.e.A.A.h.h.h.a.Z.g.a.g.z.g.a.f.f.f.f.f.z.k.a.f.a.f.a.a.a.s.i.i.i.s.a.i.a.a.i.i.i.i.i.i.i.i.s.i.i.a.i.i.i.i.i.i.s.t.i.i.i.i.a.i.a.u.a.i.a.a.a.", "N B N B B N V N M M M m M M M M M m M M m M M M M M M m M M M V N M B N B m M C N N N N B N B V B V B N N C N C C B B C N C C B A C A N C Z B Z Z B Z C Z B C C C C V Z Z C Z Z Z Z Z D Z Z Z Z D D Z D Z Z L Z F Z Z D B G Z u $ $ $ & % % * * : r : e : r : r r r r r r r r r r r 0 r r r r r r r r r r r r r r r r 0 r r r r r r r r r r 0 r e r r r r r r r r r r r r r r r r r 0 r r r r r r r r r r r r r r r r r r r r r e r r r r r r r r r r r r r r r r r r : r r r r r r r 0 r ; ; % % $ y Q.T.~.T.T.Y.~.I.T.T.T.T.T.T.T.T.R.T./.~.~././.(.(.(.(._.(.(.(.^.|.{.(.(.|._.|._._.(._.(.{.(._.(.|.(.(.^./.~.~././.~.T.~.T.T.T.T.T.T.T.T.U.T.U.P.P.T.L.L.U.P.P.P.P.L.T.Z._ L S ~ S ! ! ~ ~ ! ! S S Q Q Q ~ ~ Q Q Q ! ! Q ! Q ! ! ~ Q ~ / ^ Q ~ ~ ~ Q Q S / ~ ~ ! ! ! ! Q ! Q ! Q ! ! ~ ! S ! ! / / ! ~ / ~ ~ Q ! Q ! ! ! ! S Q Q / / / ! / ! Q Q ~ ! ! S ! ! ! ! ! Q ! Q Q Q ! ! Q ~ / / Q Q Q S Q ! ! S ^ S / ! ! ! ! ! / ~ Q Q ~ ~ / ! / ! ! ~ ~ ! ! ! ! / / ~ ~ ~ ~ ! ! ! / ! ~ / ~ ~ ~ / ! ! ! / / S / ~ ~ c ^ u i _ c.m.].'.'.zXzXnXzXxXzXzXdX.XzXzX.XdXdX.X.X.XdX.X.X.X|.|.'.'.|.}.}. X_._._._.}.~.].) S / / / ^ Q Q Q Q Q ! ! ! ~ ~ / / ~ / ! / / ~ S ! ! ! ! ! / ! ! ! ! / / / ! / S / / / / / / / / S / / S / ~ / ! Q ! ~ S / ~ / ~ / ~ ~ / / / / / ~ / / / / / / / ! / ! / / / / / / S / / / / ! ~ ! ! ! / ! / ! / / / / / / ! ! Q ~ Q ~ ! ~ ~ ! ! ! ! ! ~ ~ ! ! / ! ! ~ ! / ! ~ / ! ! ! / ! ! Q / ! ~ ! ~ ! S / ~ ! ! ! / ! ~ / Q Q Q Q ^ ^ u i c.c.n.!.!.Y.~.~.~.T.T.T.T.T.U.T.U.L.L.L.L.L.S.L.H.H.H.H.H.H.H.S.S.A.S.l.h.A.Z.A.b.) Z / / / Q Q ~ ~ ! ~ S / ~ ~ S ~ ! ! ~ ~ ~ S ~ ! S ~ Q ^ ^ S ~ ~ ~ ~ ! S ~ ~ ~ ~ ~ S ~ ! ~ ! ~ ! ~ S ~ ~ ! S S / ~ / ~ ~ ~ ~ ~ ~ ~ S ! ~ ! ^ ! ! ~ ~ ! S ! ! / S ~ ~ ~ ~ ! ! ~ ! S ^ ~ ~ ~ S S ! ! S Q ! ! / Q ! Q ! ~ S Q ! Q Q ! ~ ! ! ! ! Q Q ! S Q ! ! ~ ~ ! ! ! / ! ~ / Q ! ! ! ! ! ~ ~ Q Q ! ! ! ! ! ! ~ ~ ! ! Q ! ! Q ! ~ Q / ^ ^ u u S I b.n.F.Y.Y.~.T.(.Y./.T.~.T.T.Y.T.T.U.Y.U.T.T.T.T.T.T.T.T.T.T.P.T.Y.~.T.T.U.Y.L.F._ ! ! ! ~ / Q ! ~ ~ ! ! / / / / ~ ! ! S ~ ! ! ! ! S ! ! Q ! Q ! / J ! ! ! S ~ ! ! ~ S ~ ~ ! ! ! / / ! ~ / ~ / ~ / S ! / ~ ! / / ! ! / / / S ~ / / Q / ! Q S ! / ! ! ! ! ~ / ~ ~ ! ! ! ! ~ ! ! ! ! ! ! ! / / ! ! ! ! ! ! ! / S / ! ! ! ! ! ! ! ! ! ! Q ~ ~ ~ Q Q ~ / Q ! ! ~ ~ ~ ! Q ! ! ! ! Q Q Q ~ Q Q ~ ~ Q Q ~ ~ Q ! Q ! ~ Q Q Q S S ^ S u u F T e.e.j.h.l.l.f.h.j.j.z.f.g.f.g.z.j.z.f.f.f.j.k.z.k.a.k.a.f.a.s.a.i.i.u.i.i.i.a.i.a.i.a.i.i.i.i.u.i.i.i.a.i.i.s.u.i.u.a.i.i.i.i.i.i.a.a.a.a.i.i.i.", "M V N N N N N N B N B N N N N B m B M M M M M M M M M M M M m m B N N V M V M M N B N B N N V N B B N m C N C N N C C N C B B C N C C C C A Z B C Z C C C C C C Z C C Z C Z C Z Z C Z L Z Z Z Z Z D D D D J Z Z Z Z H D H Z Z L S * $ $ $ % % % * * * 0 r : r r r r r r r 0 r r r r r r r r r r r r r r r r r r r r r e r r r r r r r r r r r r 0 r r r r r r 0 r r r r r r r r r r r r r r r r r r r r r r r r r r * y r r r r r r r r : r e 0 * r r r r e 0 r r r r r r r r r r r r ; ; ; % $ o e (.~.L./.L.T.T.U.T.T.U.T.T.T.T.T.Y.~.~.~.~./././.^./.(.(.(.`.(.(.^.^.{.(.[.|.(.|.|._.(.{.`.^.{.|.^.(./.(.(././.~.T.~.T.~.T.T.T.T.T.T.T.T.T.T.U.U.U.P.P.P.L.T.P.L.P.P.L.L.Y.L.F.[ U _ ~ S S S ^ ^ ^ c Q ^ S S S ~ Q S H ^ S S S ^ u ~ ^ ^ S ~ ^ ~ ^ ~ Q ^ u / ^ ^ ^ u ~ ~ S / Q ^ A ^ ^ S ~ S ! S ! S ^ u S ^ S / c S S / ! / Q ^ S u S ~ u ! ^ u Q ^ S u ~ n ^ / ^ ^ ^ S ^ ~ ^ c u ~ S ^ c u ^ n Z c ^ u S ^ Q ~ ^ ^ ! S ^ ^ ^ ^ Q ^ S S ~ S ! S S S Q S Q Q ^ ^ Q ^ S ^ Q ^ ^ ^ ! ! S S ^ ! ^ S S S ^ ^ ~ u u u S u i c.c.M.].'.'.zXzXzXzXzXzXzXzXzXvX#XdX'.dXdX.X.X'.zX.X.X X.X.X X.X X|.}. X_. X_._.(._.^._.].Q._ _ ~ S ! c S ^ Q S S Q S ! u S c S S S ^ S S S n S S ^ S u ~ c ^ S S S Q S S ~ u S u ^ S K S ^ K n u Q ^ S Q c K Q u ^ ^ i / ~ i S u ^ ^ u ^ / u S u S ^ S K K K Q S ^ Q J u ! u S u S ! S ^ ! K ~ u S ^ S S S S Q ^ ! Q ~ ^ S S Q ! Q ^ ^ ^ c Q / S ! ! S S ^ ^ ^ Q ! ^ S S S S / S Q ^ ^ ^ S J ! S Q Q Q Q ^ Q Q ^ ^ ^ Q ^ u u S i _ _ b.n.F.!.!.T.T.T.^.T.T.U.T.U.U.P.K.U.L.U.U.D.L.L.H.H.H.H.S.H.A.A.A.S.S.A.l.h.S.Z.j.F.h.[ ) P S S F J S S S S ! S K S H i ! S ^ S ^ u S S S Q Z S S S S Q Z S u S ^ S u G S S S u S S S u ^ ^ Z S S S S ! u ^ S Z Q ^ i S S Z S S S S S u S ! Z Z S K ! S S S S Z ^ S u F ^ S S Z ! Z Q S u Q S u c u ^ S u S ^ ( S ^ u S ^ S S S ^ S ^ S S ^ S P c S ^ S Z u S S ^ Q Z S Q ^ ^ ~ ^ c Q ! ^ ^ ! ~ Q S Q ^ ! S Q S ^ ^ u u u u u ) ` b.n.Z.Y.Y.T.T.~.T.R.R.T.T.~.T.Y.T.T.T.T.T.~.T.T.[.P.T.T.~.~.T.T.T.T.T.T.Y.~.P.~.Y.].F.b._ J S ! u Q ^ ! ^ c S ! ~ S c ~ c ^ ~ ! ^ S c ! c S ^ ^ c S f Q f Q c c / ^ ! S / c ~ ^ ! S S Q S S S S S ~ S ~ ^ S ! S S S ! S S u S ^ ^ J ~ ^ u ^ S S S S / Q ^ S S Q u ^ ! S ^ ^ Q ^ ^ S ! ! ~ ^ S Q ! c ! ^ u Q u ^ Q ^ ^ S ^ ^ S ! ^ S S ^ ^ S ~ ^ ~ S S ^ ^ S S S S S ^ Z S ~ S ^ ^ S u ^ S S S ^ S S S ^ ^ Z S ~ u Q S u u q u F G e.e.e.e.h.z.l.h.z.h.a.j.g.z.g.k.g.g.f.f.j.k.f.f.s.k.f.f.f.a.a.a.s.s.a.i.i.u.i.i.a.a.a.a.i.i.a.i.a.i.a.i.a.i.i.s.i.u.u.i.i.s.i.a.i.i.a.i.i.a.a.a.f.i.", "A M B V N N N N M B N M B N N M N M M m M M M M m M M M m M M M M M M V M M M M N N B V B B N V V B B G N C V C C N N C N C N B A C C C C C B C C C C C C C Z C Z C Z C Z C Z C Z Z C Z Z L G Z H Z D D D C Z F D Z Z Z Z Z Z Z D C % o $ o $ $ % 0 * r r 0 r r r r r r r e r r r r r r r r r r r r : r e 0 r r r r r r r r r r r r r r r r r r r r r r r r r e q e r r r r r r r r r r r r r r r r r r r r r r r r : r r r r r r r r r r r r r t q r r r r r r r r r r r r r r r r * ; % % $ o # I ~.~.Y.[.U.(.U.U.~.Y.T.T.T.T.~.T.T.Y.(.~.~.T./.T./.^.(.(.(.(.(.(.`.(.(.^._.^.(.|._.(._.|.^.(.|.(.|.(.|.(.(.(./.~././.T.~.T.T.T.T.T.T.T.T.T.U.U.P.Y.U.P.P.P.L.P.L.P.P.L.U.L.F.L.D.F.n.b.` Y ) K u u i u u u u u u u u u u u u u u u u i u u u u u u u u u u u u u S u u D i u i u u u i u i u c u i u i i u u S i i y S A i u i i u K i i K S i i J u ^ i ! J i u i K u c K u u K S K K u Q F K i J S S c K c ) u u J i i S c K K c Q ) ^ c K c ^ c Q c K c K K c S c K c Q u K K c i _ c ^ c i c ^ c ' ) c c ' ` n ' ' c.M.m.].].hXhXdXzXzXzXzXzXzXzXzX.XzXzXzXdXdX.XdX@X'.xX.X.X.X.X.X|. X|.|._._._._.|. X_.(._.!.].Q.m.c.` ` ) ^ K S c c K c u c ' ' c c ) c c c P ) c c ) c c ' K ' c c ) c c ' c ' c ' c ' c ' c n _ ' c ' c ' ' c ' ' c ' ' c ' ' ' ' c ' ' c ' ' c ' c ' ' c c c ' c ) c c c ' ' c ' ^ c c ) c n ' ) c ^ c Q c K c K K c u ' ! c K c J i Q K S K u c K i c ! i S c K K c c i ) c ~ i c ^ K c ! c u c K S J i c K u K c K J K i K ) ` c.b.n.F.Y.!.~.~.(.T.T.~.I.T.U.P.U.L.Y.L.L.D.K.Z.U.S.H.H.G.G.G.S.S.S.H.A.l.z.D.A.h.g.h.s.Z.e.e.T T H u q u q u q u y q u q q q q u q q u q q q = u q q u q q u q u q q u q q q u q u q u q u u q u q u q u q q u q u q u q q u u y u r u u q u r u u u q u u q u u u y u u u u u y u u u u u u y u y N u u u u u u q u u u u u u u u u u u u u u q u y u u u u u u u u u u i u u u u u F A i i u u i u K i u K i u K i u K i i J Y ` b.n.F.Y.L.Y.T.T.~.~.T.E.~.T.Y.T.T.Y.T.T.T.T.T.T.T.T.T.~.T.T.T.T.~.~.T.~.~.Y.Y.Y.!.!.T.U.F.F.n.[ ` ` K Q S i u P i i u S / i u i J u i H S i S J i K S S K G S K K u K i c u S ! i u c ) c S c Q ^ c ' c ^ c i c ' c c ' n c ' c ) c ' c c ) ' c ' c c i K c c i ' ^ c K K c ^ S c K c S i ~ c i i K S S i Q ) i u K i u S i u K i u i u u u u u u u u u u u u u u u u u u i u u u u u u u u u u u u u u u u u u u u u y M u i F Y T e.T j.j.h.G.A.h.j.f.d.Z.z.a.a.k.k.k.f.f.z.k.z.a.z.f.f.f.f.a.f.a.a.s.i.i.s.u.i.a.a.a.a.k.i.a.i.a.i.i.s.i.u.a.i.u.u.i.u.s.i.a.i.i.i.i.i.f.a.a.a.a.i.i.", "B N B N N N N C N B N N V B N V M V B M M M M M V m m M m M M M N N M B m m m m B B V B B N B V B B N C B Z C N B B C V B N C N B C B B C C Z C D C C C Z C C B C C Z Z Z Z Z D Z Z Z Z Z Z D D D Z D D Z Z D Z D D D Z D Z Z Z D Z D y $ o $ $ $ % ; ; ; r 0 * r y r r : y ; t y : : q y r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r y * r r : r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r y r r r r y = ; ; : y ; y q y * y y * : ; 0 e ; - % o # $ b.T.~.T.!.T.T.T.T.T.T.U.T.U.T.T.T.U.U.T.T.T.~.~.T.(.(.[.~.(.(.(.{.(.(.(.(.(.(.|.(._.(._.(.|.(.(._.(.(.(.`.(.(.^.^././.R./.T.T.T.T.U.T.T.T.P.T.T.P.P.P.L.Y.P.P.P.P.P.P.L.L.P.Y.L.L.L.F.F.Z.b.b.e.e.e.Y Y Y Y Y Y Y Y Y Y T Y Y Y Y Y Y Y I Y Y Y Y Y T Y Y Y T Y T U Y Y e.` c.Y Y Y c.Y e.` e.` Y c.Y T ` ` ` ` U ` e.Y [ c.Y c.c.c.Y c.` ` [ ` ` ` [ ` ` ` [ [ c.` ` ` ` c.b.T c.` ` c.` e.b.` ` c.[ ` ` ` [ [ ` ` c.` c.b.v.[ b.c.c.c.c.c.c.c.c.c.c.[ c.[ c.c.c.[ ` c.b.c.c.c.b.` c.b.c.b.c.c.c.[ b.c.c.c.c.c.c.c.c.M.n.m.Q.].].'.zXdXdXzXzXzXzXzXcX.XzXzXdXzX.X.XzX'..X.X.X.X.X.X.X.X.X'. X|.|.|.|.|.|. X_._. X_.{.!.!.].n.n.n.c.b.b.c.[ c.c.[ c.c.c.b.b.c.b.[ m.c.c.M.b.c.c.m.c.b.b.c.c.c.c.c.` c.m.{ M.n.c.M.c.c.M.c.b.M.M.c.M.M.` M.M.M.c.M.c.M.M.M.c.M.{ M.c.M.c.c.M.c.M.c.M.c.M.c.c.M.` M.c.c.M.c.c.m.c.c.n.c.c.c.c.c.c.c.c.b.v.c.[ c.` c.c.c.c.[ ` c.b.b.` c.[ [ [ b.` b.c.v.[ b.[ c.[ b.v.b.c.c.c.[ c.[ c.c.[ ` [ c.[ ` c.c.` c.[ b.v.b.v.[ ` ` b.b.n.n.P.].T.~.~.~.~.T.~.T.T.Y.U.P.L.L.P.L.S.L.H.S.K.H.H.H.L.Z.S.S.S.S.h.A.A.A.j.A.h.h.h.h.h.j.j.e.T T T T H G T G G G G Z F G G B G G G G G G G T G G C F F G G G G T C G G G G F B G G B T G G G B G T G G F G u G G G T F Z G G G G G G G G G G H Y G G Y G Y G G G Y G F Y G F G Y G G Y Y Y Y U Y Y H Y K Y Y Y Y J Y Y G Y H Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y e.` Y Y Y [ Y _ T ` c.Y c.Y e.` U ` e.Y b.b.b.F.F.L.Y.~.T.T.~.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.~.~.~.T.~.~.T.~.T.~.T.~.T.T.~.T.~.T.~.T.Y.K.F.n.b.b.b.[ [ c.[ _ ` ` c.e.` ` c.Y c.b.[ ` _ b.` ` ` ` [ ` ` [ c.c.` [ c.` c.b._ c.[ c.c.c.c.[ c.c.c.b.c.b.c.m.c.M.c.M.c.b.c.c.n.M.c.c.c.c.c.b.m.c.c.c.b.c.c.b.c.m.b.v.c.b.b.c.b.v.c.b.c.c.c.` ` v.c.[ b.` c.[ Y [ c.T c.e.` T c.Y ` e.c.Y T Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y P Y Y Y Y Y Y Y Y Y Y Y G Y G Y G U Y T T e.e.e.j.f.f.h.h.l.h.z.j.j.j.g.a.f.f.a.f.f.f.f.f.a.k.k.f.a.k.k.k.a.a.i.i.u.u.i.i.i.i.i.a.a.a.a.a.a.i.a.i.s.i.i.s.i.i.i.u.i.s.i.i.a.i.i.i.i.a.a.f.a.z.i.f.", "N B N B B N N B B m B V B N N N m B m C M M M M m M M V M m M M N m m m B m V B m B B B B B N C B N Z B B N C C B C C N B C N C C B C C B Z C C C C Z Z C C C G C Z D B C Z Z B Z Z G Z D Z D D D G D Z Z G Z D Z Z Z D Z Z Z Z Z A D H u $ o o o $ $ % % ; ; e r r r : ; : : * : ; = : = r ; r r r r q r r r r r r r r r r r r r r r r r r r r r r r : r r r r r r r r 0 e r r r : r r r r r r * r r r r r r 0 r r q e r r r r r r r * r r r r ; ; y : : : : 0 e : * r : y 0 : % % % $ o e Q.(.~.[.~.T.~.T.~.T.T.T.T.T.T.U.T.T.T.T.T.T.T.T.~.(.T.T.(.[.(.(.(.(.(.(.(.^.(.(.|./.(._._.|.(.^.{.`.(.`.(.(.(.|.^.^././.~.~.~.T.~.T.T.T.U.T.T.T.P.Y.P.P.U.U.P.P.P.P.L.P.L.L.P.D.L.U.L.K.Z.Z.F.n.n.b.b.b.b.b.b.n.b.b.b.e.b.b.b.e.e.b.e.b.e.b.b.b.e.b.b.b.b.b.n.b.b.n.b.b.b.b.b.b.b.b.n.b.b.b.b.b.n.b.b.b.n.b.b.n.b.b.n.b.b.b.n.b.e.b.n.b.b.n.F.n.n.n.F.n.n.n.n.F.b.n.n.n.F.n.n.b.F.n.n.n.F.n.n.n.n.n.n.n.n.n.n.n.n.n.n.F.n.n.n.n.n.n.Q.Q.m.n.Q.Q.m.n.n.n.m.n.n.n.F.n.n.n.m.n.Q.n.n.m.m.n.F.m.m.Q.m.n.m.m.].n.Q.m.Q.Q.].m.Q.].].].'.'.dX'..XzXzX.XzX.X.X.XzXzXdXdXzX.X.X.X@XzX.X.XdX.X.X.X.X.X|..X.X|.|.|.|.|._._._._._._.^._.~.~.Q.F.F.m.m.n.n.N.m.!.n.Q.m.n.n.m.m.n.N.Q.Q.m.m.Q.Q.m.Q.m.m.Q.m.Q.].m.'.m.m.Q.m.Q.Q.].m.].].m.m.Q.m.].Q.'.m.m.].m.Q.].].m.m.m.m.Q.'.Q.m.].Q.Q.'.m.m.Q.Q.Q.].m.Q.Q.'.Q.m.m.Q.Q.n.m.].m.Q.m.Q.m.Q.m.Q.m.m.n.Q.n.n.m.n.F.n.n.n.n.n.n.n.n.m.n.F.n.n.n.n.n.n.n.n.n.n.n.n.n.n.m.n.Q.n.n.n.F.m.n.n.n.n.n.F.n.n.F.n.n.n.n.n.n.n.n.F.n.n.n.Q.K.Y.T.~.~.^.!.T.~.T.T.Y.Y.P.P.L.L.L.L.L.S.H.H.H.S.H.H.G.S.S.S.A.A.A.A.A.A.A.A.A.Z.j.A.h.A.Z.g.j.T e.e.e.T T T w.G w.w.e.w.w.Y w.T w.T T T T R T T w.w.Y w.T T T T w.w.T T T T w.e.y.T T T T T w.w.T T w.T w.w.T w.T T w.e.w.T e.e.e.T e.e.T e.e.e.e.T e.e.e.T T e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.T e.e.e.e.e.e.e.` e.e.e.e.b.e.e.b.e.e.b.b.T e.b.e.e.b.e.b.e.e.e.b.e.e.b.b.b.n.b.b.b.b.b.b.b.b.n.b.n.b.b.n.b.b.b.b.b.b.b.n.b.b.n.Z.F.K.L.K.T.T.T.T.~.T.~.~.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.~.~.T.~.T.~.T.~.T.~.~.~.~.~.T.T.~.T.Y.~.F.K.F.n.n.F.n.n.n.F.n.n.n.F.n.n.F.n.b.n.n.n.n.n.n.n.F.n.n.n.n.n.F.n.n.n.F.n.n.n.n.n.n.m.n.m.n.Q.n.n.m.Q.m.n.n.Q.m.].Q.Q.Q.m.m.Q.m.Q.!.Q.m.Q.m.n.n.Q.Q.m.n.n.m.m.n.n.Q.m.m.m.n.m.n.m.n.n.F.n.F.n.n.n.n.n.n.n.n.n.n.n.b.b.n.b.n.b.b.b.b.b.b.b.b.b.b.b.b.e.b.b.e.e.b.e.b.b.e.b.e.b.b.e.b.b.e.b.e.b.e.T e.e.b.e.e.[ e.e.e.e.e.T e.e.e.e.h.j.j.j.h.h.k.z.h.f.j.g.g.d.g.f.f.f.k.f.f.f.f.a.f.k.f.k.k.a.a.a.a.i.i.i.i.s.u.i.i.i.i.a.a.a.a.a.i.a.i.i.i.i.u.i.s.u.i.i.u.i.i.i.i.i.i.a.i.f.i.a.a.a.i.", "N B B N N N N N m N B N N N N N m V M B M M F M m V m m M m m M m M m M m B m B B B m B B B V C B C C B B B N N C C C C B B C C B C B C C C C C C C C C Z C Z B Z C Z G B D C D Z Z Z Z Z Z Z D D D G Z D D Z D D Z Z Z Z Z Z D A Z D Z G C * o o o $ $ % ; = = : ; r r r r = : r r y y r r r r r r r e r r * r r r r 0 r r r r r r r r r r r q r r r r r r r r r r r r r r r r r r r r r r e r r r r r r r r e r r r r r r r r r r r r r r r r ; ; 0 q * y : : > r r 0 t 0 * * = $ o G (.T./.^.~.~.~.~.~.T.T.T.U.U.T.T.T.T.U.T.T.P.T.~.~.~.~.~.(.(.(./.(.^.(.(.{.(.(.(.(./.|.(.`.^._.(.(.^.(.`.(.`.(.^.{.(.{././.~.T.T.~.T.T.T.T.U.T.T.U.U.L.U.L.P.L.L.P.P.D.L.P.L.L.L.L.L.L.U.U.L.L.H.D.F.Z.F.Z.F.Z.A.S.n.Z.Z.S.Z.n.Z.n.n.Z.A.n.S.Z.Z.Z.n.Z.A.Z.F.Z.Z.D.H.n.F.Z.F.F.F.F.R.Z.F.F.Z.Y.F.F.F.F.Z.F.F.F.D.F.F.F.F.F.L.F.F.F.F.F.A.F.].L.H.R.].F.L.].Q.K.].F.T.].K.].K.Q.F.].F.F.Q.K.F.].!.Q.K.].P.Y.].K.Y.F.].].].].[.!.m.!.].].].].!.^.].~.].!.[.!.Q.~.].].].].].].K.].].].}.!.~.].Q.]._.].K.].'.].].].].].].].'.]. X'.'.dX'..XdX'.zXdX.XzX.XxX.XzX.XzX.X.XzXzX.X.X X.XzX.X.X.X.X.X.X.X.X|..X|.|.|.}.|._._._. X}._._.].(.(.].].].]._.].K.].].~.].].].].].].'.].].].'.^.].'.'.].].].'.].'.]._.].`.].'.].].].'.].dX].].].'.].].'.'.].dX].].'.]. X'.'.].].'.].'.].].'.hX].].].].].hX].'.].].].dX].].].'.(.].].].]..X].'.].].].^.].].].!.].].K.].].'.].K.].!.].].Q.].].].].].Q.].].[.Q.~.].!.].Q.].Q.].!.!.].K.].].^.].].].!.].Q.].K.].!.].Q.I.K.].Y.].].].!.Q.XX!.~.^.~.~.~.T.~.T.T.T.T.T.P.P.L.L.U.S.L.A.H.H.H.H.H.H.H.S.S.S.A.G.A.h.A.g.A.h.h.A.A.h.Z.h.g.g.g.j.s.j.w.e.e.e.t.e.w.w.e.e.w.e.w.e.w.w.e.w.e.p.w.e.w.e.w.e.e.p.e.e.e.w.e.e.w.e.e.e.w.e.e.e.e.e.e.e.e.e.w.e.s.e.e.e.e.e.a.e.e.e.e.s.e.e.j.e.e.e.g.e.e.e.e.e.e.j.h.e.e.e.j.e.e.b.e.j.e.b.e.Z.b.j.n.k.e.Z.b.Z.j.n.e.A.b.j.Z.Z.n.f.n.j.A.Z.Z.Z.Z.Z.Z.n.n.Z.e.Z.n.Z.Z.Z.Z.Z.Z.Z.S.Z.F.Z.F.F.F.F.F.F.F.F.F.F.F.F.F.F.K.F.F.F.F.F.L.F.F.Y.L.K.I.Y.Y.T.T.T.T.T.T.T.T.~.T.T.T.T.T.T.T.[.~.~.~.~.~.~.~.~.~.T.Y.~.~.~.T.~.T.~.~.~.T.[.~.!.!.].].K.].].].K.K.].Q.F.L.].K.m.F.].F.!.F.].T.U.Y.].].L.].K.K.].F.!.].K.F.].K.].!.!.].K.].].].^.].].'.].].].'.^.].].].].].'.].'.].].].].'.].].hX].'.].].].'.].].^.].].~.Q.].].].~.].Q.].].].!.].].].!.T.K.Q.Y.F.Q.F.Y.F.F.F.F.F.F.F.F.F.Z.F.F.Z.Z.Z.Z.Z.Z.Z.n.Z.Z.Z.n.h.Z.Z.n.Z.h.Z.Z.Z.Z.Z.Z.j.A.b.Z.Z.Z.e.b.e.j.j.h.e.e.e.a.e.j.i.j.j.j.j.h.h.h.h.k.h.g.f.j.a.d.g.k.f.f.f.a.f.a.k.f.k.f.f.a.k.k.a.a.a.i.a.u.i.i.i.u.a.i.a.a.i.a.i.a.a.i.a.i.i.i.i.u.s.s.u.u.i.i.i.i.i.a.a.a.a.i.d.a.a.a.g.", "N N N N N N N N M m m N N N V N C m B M B m m M m m V m M M m M M M m M m B M m m B B B V B B V N C B B C B C N C N B N B C B B C B C C Z C C C C D Z Z C C Z V C C C C Z Z D D Z Z Z D Z Z D Z D D Z Z D Z H Z Z Z Z Z Z D D Z D F Z D C H S u $ o o o $ $ $ * * * : r r r r ; * * : ; r r r r * e r r r r r r r r r e r r r r r r r r r r * t r r r r r r r r e r r r r r r r r * r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r : y : : y : y y r : r * * % % $ $ o r Q.(././.(.T.{.[.!.~.T.T.T.T.T.T.T.U.U.T.T.T.T.T.T.~.T.T.(.T.T.T.(./././.(.(.{.(.(.(.{.).^.{.(.|.`.^.|.{.|.^.|.(.(.(.).(.~.^./.~./.~.~.T.T.T.T.T.U.U.T.T.L.Y.L.J.K.U.P.P.P.L.L.L.L.L.L.L.L.L.L.L.L.L.T.H.K.I.L.Z.L.S.H.H.D.L.G.G.G.S.H.S.h.Z.D.A.D.H.L.S.S.Y.L.D.F.K.P.L.P.L.L.L.L.K.I.K.I.K.I.Y.I.K.R.L.L.T.U.Y.K.P.P.L.P.I.I.Y.K.Y.Y.T.Y.~.U.T.Y.Y.!.T.!.T.T.~.!.!.(.T.T./.!.!.!.!.T./.(.~.T./.~.T.!.!.!.!.~./.(.^.(.~.^.!.~.(.^.(./.(.(.(.`.(.]._.^.].`.^._.(.(.[.].^.}.'.].^.^.(.(.(.^._.{.{.}.(._.`.`..X'.'.'.dX'.dX'.dX'.'.'.'.'.zXdX'.zX'.@XzX.X.XzXzX.X.XdX.XzXzX.XxX.X.X.X.X.X.X.X.XdX.X.X.X.X.X|.|.|.}.}. X_._._._.}._._.(.(._.(.(.(.`.~.`.(.'._..X_.|.`. X|._.`..X`.'.'.'.'.'..XdX'.hX'.'.'.'.'.'.'.'..XdX'..X@XdXdXfXzX.X'.BX'.JXzXxXxXdXzXdXdXhXdXxXdXzXdXJX].dX'.'.#XzXzXxX'..X'.'.xX'.'.'.'.'.'.'.'..X'. X|. X'.'.'.'.|.(.'.(.`.(.(.(.^.~.(.^.^.^.^.}.[.!.~.!.~.~.~./.~.R.^.~.(././.^.~.[.~.(.^.!.~.!.!.~.].~./.~.~.{.!.(.(.!.~.^.T.!.!.!.!.T.T.U.U.[.~.T.[.(.~.~.~.~.~.T.~.~.T.T.U.P.P.L.L.P.L.L.D.S.S.H.S.H.G.H.A.A.A.A.A.h.h.Z.A.h.A.A.h.A.h.j.h.g.g.h.g.d.j.j.s.d.i.f.i.e.e.s.i.s.s.i.i.s.e.d.i.s.e.i.d.a.d.s.j.i.a.i.f.e.t.s.i.s.u.s.s.d.w.d.i.a.s.j.w.i.f.a.a.s.e.s.s.j.d.d.a.s.j.j.j.j.j.j.j.h.h.z.j.G.j.h.h.h.j.W.e.e.A.A.h.h.h.h.A.g.h.Z.g.z.A.Z.z.A.A.g.A.l.A.A.S.A.h.Z.Z.A.S.A.A.Z.h.S.H.h.Z.Z.h.z.G.Z.H.Z.D.Z.F.K.F.Z.H.K.K.S.K.L.Y.U.U.L.P.P.T.K.L.U.U.L.L.U.Y.Y.U.U.I.I.I.U.T.T.Y.T.I.Y.T.T.T.~.T.T.~.T.~.T.~.T.T.T.T.T.T.T.~.T.~.~.~.~.~.~.~.~.~.!.~.~.~.~.~.~.~.!.~./.!.(.Y.!.^.~.~.~.!.!.!.(.!.!.^.!.T.!.].T.~.^.T.~.^.!.T.!.!.!.~.~./.~.~.!.~./.!.!.~.^.[.!././.(.{.{.`.(.`.|.(.|.}.'.'.dX#XhXhXdXzX'..XdX'.'.'.'.'..X'..X'.dX X'.'.'.|.|.'.'.{._.(.(.`.^.(././.(.(.~./.!.!.~.!./.XXT.P.^.Y.P.T.T.U.K.U.K.T.L.K.L.Y.H.L.S.S.Z.F.Z.A.H.Z.Z.Z.A.Z.Z.z.A.Z.Z.Z.Z.Z.S.G.Z.A.h.A.b.A.Z.f.A.Z.j.h.j.j.j.j.d.Z.f.j.h.h.h.h.g.k.k.h.f.f.f.a.Z.f.i.f.f.f.f.f.f.f.f.z.a.f.f.a.k.a.a.a.a.i.i.i.i.u.i.a.u.i.i.i.a.i.a.a.i.a.i.i.i.s.u.i.i.u.i.i.i.i.i.a.a.a.a.a.a.a.a.i.g.a.a.", "N N N N B N N m m B B m N N N N B M B B B V M M V V M m M m M M B m m M M M B B B B B B B B V C B N C C B C B C C B B B C B B Z C B C C C C C Z C Z C Z F Z Z Z Z Z Z C Z Z Z Z G Z D D D D D D Z Z Z H G Z Z Z Z Z Z Z Z Z Z Z C Z Z Z Z Z Z G S = $ $ o $ $ % % : : : : ; ; t 0 r r r r r r t : r r r r r r r r r : r r r r r r r r r r r r r 0 r r r r r r r r r r r r r r r r r q r r r r r r r r r r r r r r r r r r r e r r r r r r r r 0 0 : 0 ; ; : : r 0 * * % % , # $ ` ^.!./././.R.^.!.[.~.~.T.~.T.T.T.T.T.U.T.T.T.T.T.T.T.T.T.(.T.T.~.~.~./.~./.(.(.{.(.(.[.(.`.^.(.{.(.|.(.{.(.|.`.(.(.`.(.(.(.^./.~.~.~.~.T.T.T.T.T.T.Y.U.Y.U.U.L.L.K.U.P.P.P.P.P.D.U.U.L.L.L.L.L.L.U.U.U.I.U.U.Y.P.P.L.K.P.L.L.S.K.L.L.L.L.L.K.L.L.L.L.K.L.L.L.U.U.P.P.L.K.Y.T.T.T.T.T.T.I.T.T.T.T.T.~.T.T.T.T.T.T.T.T.I.T.T.T.I.~.T.T.~.T.~.~.~./././.(.!.!.(.(./.(.(.^./.(.(.(.(.(./.^.(.(./.(./.(./.(.(./.(.(.(.(.(.^.{.(.^.(.(.`.(.^.`.`.`.|.|.|.|.'. X`.`.|.|.{._._._.}.}._.}._. X'._.}.}.}.}.|. X'.'.'. X.X.X.X@X'..X.X.X#X.X'..X X.X.X.X.X.X.X.X'..X.X@X.XdX.X.X.XdX.X.X.X.XzX.X'..X'.zX.XdX.XdX.X.X|..X.X}.`.`.|._._._._._._._._._._.|.`._._. X|.|.|.'.|.'..X'. X@X'..X@X'.xX'..XzXzXdXdXdXdX.XdXdXzX.X'.zX.XzXdXdXzX'.dXxXxXdXzXzXzXzX'.vXvXzXzXzXzXdXdXxXdXdXzXzXzXzXJX'.@X'.xXdXzXdXzXzXzXzXxX'.zXzXzX'.zX.X.X.XdXdX XdX.X.X.X.X'..X'.`.`.(.`.(._._._._._._.[._._.(.~.(._._.(.(.|.(.`.(.(.(.(.(.|.(.(.{.(.].(.(.(.`.(.^.(._._._.(.(.^.^.(.(./.(.(.(./././.^./.~.~.~.T.(.Y.!.~.T.~.T.T.T.T.U.Y.L.U.S.D.L.S.S.S.S.S.H.H.G.H.A.S.A.G.A.A.A.A.g.h.A.h.h.A.h.h.h.f.Z.h.g.j.z.z.j.f.i.k.a.k.a.i.z.a.a.a.a.a.a.d.a.a.f.f.f.f.d.f.f.a.f.z.a.a.f.f.a.f.i.a.j.a.a.a.k.a.a.f.a.f.a.a.f.a.k.f.f.l.f.g.g.j.h.h.h.h.h.l.h.h.h.l.z.h.G.g.h.A.h.A.h.A.G.j.A.A.A.A.A.A.A.A.A.G.G.G.A.G.H.H.H.J.A.G.H.S.H.G.H.H.H.A.H.H.H.L.L.H.H.H.H.G.H.H.L.L.L.L.L.L.L.L.L.S.L.Y.Y.P.P.Y.Y.P.P.T.T.T.T.T.T.T.T.T.T.!.T.T.U.U.T.T.T.T.T.U.I.U.T.T.T.R.T.T.~.T.T.~.T.T.T.T.T.T.T.T.~.~.~.~./.~.~./.~.!.~./.~.~.~.T.!.~.~.(.~.~.~.~././.^.(.(.(.(./.(.(.(.(.(.(./.(.~./.(.(.(.^./.(.(.(./.(.(.^.(.`.(.^.(.(.(.^.^.^.(.(.(.|.{.}.`.`.`.|.|.@X X.X X.X.X'.'.zX.X.X.X.XzXzXdX.X.XdX.XdX.X X.X.X.X|._. X X X X_.|.`.`.`.`.`.`._._.|.`.(.(.(.(././././.~.~.Y.T.~.T.T.T.T.T.T.Y.P.U.L.L.L.L.L.L.L.L.G.L.U.H.H.H.H.H.G.J.H.H.H.H.H.H.W.G.h.H.A.S.A.A.h.G.j.G.h.h.h.h.h.h.h.h.h.g.h.g.g.g.g.f.z.f.f.x.f.Z.a.f.a.f.z.f.f.a.a.f.f.f.f.a.k.k.a.a.a.i.i.i.i.i.i.i.i.a.i.i.i.i.a.a.a.i.i.i.i.i.i.i.i.s.s.u.u.i.i.i.i.i.a.a.a.k.a.f.a.f.a.a.", "N N N N m B m m N N m N B N M C M B M M m M B B m m M M M m m M M m m M m M m V B B B B B B B V N C C C B C B Z B B C C N C C B B C C Z C Z C C Z C Z C B Z Z Z Z Z Z D G Z Z Z Z Z G Z D D D H G Z Z Z Z D D Z Z Z D Z Z Z D Z G Z Z Z Z Z Z Z C G A % o o o $ & $ % % % ; ; : y r r r r r r 0 y r r r r r r r r r r r r e r r r r : r y * r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r r r r r r r y : : : ; ; : * 0 % % & $ u ].}.T.{.!./././.~.(.~.T.T.(.T.T.T.T.T.T.P.T.T.T.T.T.T.T.T.(.T.T.~.T.~.~.!.~.~././.(.(.^.(.(.(.(.(.(.(.(.(.`.(./.(.(.(.(.(.(././.~.~.~.~.T.T.~.T.T.T.U.U.U.Y.U.L.U.L.L.L.D.P.S.U.U.Y.S.L.S.L.L.L.P.L.P.P.U.L.I.Y.P.P.Y.Y.P.P.P.P.Y.U.L.L.L.L.L.L.L.L.L.L.I.J.Y.Y.U.U.P.P.U.Y.U.T.Y.T.Y.T.T.T.T.~.~.T.T.T.T.T.T.T.T.I.T.I.Y.Y.T.I.I.Y.T.T.T.~.!.T.~.~.~./.T.(././././.(.!./.^.(.(.(././.(.(.(.(.!././.(./.(.(.]._.`.^.`.(.`._._._.`.^.^.`.`.`.`.`.`.'.`.|.'.`.}.'.|.|._._._._.}._._._. X_._. X'.}. X'.|.|.'. X.X'.'..X'..XdX.XdX.X'.dX.X'.@X|..X X.X.X.X.X.X.X XzX.X.X.X.XdX.X'..X.X.X.X.XzX.X.X.X.XdX.X.X.X.X.X.X|..X|.}. X{._._._._._._.{.`.^._.(.`._._.|._.|._.`.`.|..X'.'..X.XdXdXzXzX.X.X.XdXdXdXdXdXdX#XzX'.xX.X.XzXdXzXzXzXdXdXdXdXdXzXcXzXcXdXzXzXzXzXdXcXfXdXdXnXzXzXzXzX#XfXzXxX'.dXzXzXdX.XdXdXxX'.zX'.vX'.zX'. X.X.X.XdX.X.X X.X.X|. X'.`.`.'._._._._.(.`.^.(._._.(._.(./.(.(.(.^.(.(.(.(.`.(._.`.^.(./.(.(.(.`.(.(.(.(.`.`.^.(._.(.(.^._.(.^././.!./././.~./././.~.~.(.T./.R.T.~.T.T.T.T.U.Y.L.L.L.L.L.A.S.L.S.S.H.H.G.G.A.H.A.A.A.A.A.l.g.G.A.A.A.Z.A.j.A.A.A.h.h.g.e.h.j.f.k.a.k.i.i.i.k.i.a.a.a.a.a.a.a.a.a.s.d.s.f.f.d.f.f.a.a.f.f.a.a.a.s.i.s.s.i.a.a.d.a.a.a.s.f.a.a.a.f.a.f.f.g.f.g.z.f.j.f.h.h.h.h.h.h.h.h.h.l.l.A.h.h.h.A.A.A.h.G.A.A.A.A.h.A.A.A.G.H.h.A.G.H.H.G.H.A.K.G.G.S.H.H.H.H.H.H.H.H.H.H.S.L.L.H.L.H.L.L.L.S.L.L.L.L.L.L.L.L.L.U.L.U.P.Y.Y.U.L.L.Y.Y.U.T.Y.Y.Y.T.L.T.T.T.I.T.Y.U.T.U.I.I.T.U.T.T.T.Y.T.T.~.~.T.T.T.~.T.~.T.T.~.~.~./.~./././.^././.~./.~./.~./.^.[.^.^././.^.(././././././.~.(./.(././.(.(.(.(.(.(.(.!.(.(.(./.^.).(.!./.(.(.^.!.(.(./.(.!./.(.(.`.(.`.(.^._.`.}.'.|.|. X X X'.`. X@XdX.X.X XdX.XdXdX.X.X.X'.dXdX'.dX'..X X X@X X|.|.'.|.|.`.`.`.`.`.(.`.|._.(.(.(.(.(./.!.!.~.~.(.(.Y.(.T.Y.Y.T.Y.T.U.Y.U.I.L.I.L.L.L.L.L.L.H.Z.L.H.L.L.H.H.G.H.H.D.H.H.H.G.W.A.A.G.A.A.A.A.g.A.g.h.j.j.j.f.h.k.h.g.j.j.k.g.g.h.f.z.z.f.f.a.i.f.a.i.z.a.f.a.a.f.f.a.i.f.f.a.a.a.a.a.i.s.a.i.i.i.a.i.t.i.u.i.i.i.i.i.i.i.a.i.i.i.i.i.u.u.i.t.i.i.i.i.i.a.a.a.i.a.g.f.a.z.a.", "N N N N N m N N m B V N N N M V B M B m M V B M m m m V m m m m m m M M M M M M B B B B B N B C Z B B B B B B C B Z C B C B B C B C C Z C C Z C C Z B Z Z Z Z Z B Z Z B B Z Z D Z Z Z D D Z G Z G Z Z Z D Z Z D Z Z Z Z Z Z D D Z Z Z Z Z Z A H F C C Z y & o o $ $ $ % % % : ; * * r r r r : r r r r r r r r r r r r r r 0 r r r r r r r r r r r r r r r r r r * y r r r r r r r r r r r r r r r r r r r r r e 0 r r : r r r r r r : r r r r * : y ; ; ; ; * % $ $ # u n.(.~./.~.~.(.(.T./././.[.~.(.~.T.~.~.T.T.T.T.T.T.T.T.T.T.T.T.~.(.T.~.~.T.~./.~.~././.(./.(.[.(.{.^.(.(.(.`.(.(.(.`.(.(.(.(./././.!./.~.~.~.~.T.T.T.T.T.T.U.I.U.U.L.U.L.L.K.U.L.P.U.L.L.L.L.L.L.L.L.L.L.P.P.R.I.I.U.Y.P.U.U.P.P.P.P.P.P.U.K.L.U.L.U.L.L.L.L.L.L.L.L.P.Y.U.U.Y.U.U.P.T.T.T.T.Y.T.T.T.T.~.T.T.T.~.~.K.T.T.I.T.Y.T.T.T.T.T.T.T.~.T.T.~.R././.R./././././.(.^.^./.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.|._.^._._._.{._.`.`.`.}.}.}.`.|.`.|.|. X'. X|.|._._.|._._. X_._.}.}.}.'.|._.|.|.|.|.|..X.X.X'. X.X.X.X.X.X.X.X.X.X.X.X|. X X X.X|. X.X X'. X X.X.X.X.X.X.X.X.X.X.X'..X.X.X.X.XdXdX XdX.X@X.X.X.X'.`.'.|.|._._. X_.|.{._.|.`.^._._._._.|._.|.|.'. X X.X.XdX.XdXdXdX@XdX.XzXzX.XdX.XdXdX.XzXzXdX.XzXzX'.zXzXzXcXdXdXzXzXdXxXzXzXzXzXzXzXzXzXzXzX.XvXdXdXzXzXzXzXzX.X.XxXzXzXzX.XdX.X.XzX.X.XzX.X.XzX.X.X.X.X@X.X X.X X.X|.'.|.|.'.|.`.`._. X_._._._._.(.(.(.(.(.(.(.(._.(.|.(.(.(.(.(.(.(.(.(.(.(.(._.(./.(.(.(.(.`.^.`.^.`.^.(.(.(.(.(.^./././././.~./.~././.~.~.~.~.T.T.T.T.T.T.T.T.L.L.L.L.L.U.S.S.H.S.S.S.A.A.H.A.A.A.A.A.j.G.g.A.h.h.h.A.A.h.A.h.A.h.g.k.z.a.f.s.k.a.k.a.z.k.i.k.i.s.a.a.a.a.a.a.a.f.s.a.f.a.g.a.g.f.f.f.a.a.g.f.a.a.a.i.a.a.a.a.a.a.a.g.f.f.a.f.f.a.f.f.f.f.z.k.k.f.h.h.h.h.h.h.g.z.l.l.l.l.A.A.h.h.h.h.A.A.A.G.A.A.A.A.A.A.A.A.G.S.S.S.S.H.H.H.L.L.G.L.L.H.H.H.L.H.H.H.H.H.H.H.H.H.L.H.H.L.H.H.L.U.L.L.L.L.L.L.L.L.L.L.U.P.P.P.U.P.I.I.U.U.U.T.U.L.T.T.T.T.T.T.T.T.T.T.T.T.U.Y.T.T.U.T.T.T.~.T.~.T.~.T.!.~.T.~.T.T.~.~.~.~./././.[./.^././././././././.E././././././.(./././.^.(.(.(.{.(.(.(.(.(.(.(.(.(.(.(.(.!.~.(.(.(.(.(.(.(.(.(.(.!.^.!.(./.(.(.(.(.(.`.^.|.}.}.|.|.|.|.|.|..X X.X@XdX].Q.Q.].'..X.X.X.X|..X.X.X.X'..X.X'.dX'..X|.@X_.|.|.{.`.`.|.{.`._.|.|.'._.|.`.(.(././.~.~.~.T.T.~.T.Y.T.T.Y.Y.T.Y.T.U.U.L.L.I.Y.L.S.L.H.D.L.L.L.H.H.H.H.H.H.H.H.H.S.H.A.H.S.S.A.A.A.h.A.g.G.g.h.g.g.g.h.k.k.h.g.g.h.k.g.g.g.f.f.a.a.z.f.a.g.f.a.a.z.z.z.f.x.a.z.a.a.a.f.a.a.a.i.a.i.i.i.i.i.i.i.u.u.i.i.s.i.i.a.s.u.a.s.s.s.i.i.i.u.s.a.s.i.i.i.i.f.i.a.a.i.a.i.z.a.a.", "m N m m m N N N m m m N V N N V M B M B m B m V V V m m m m m m m M M m M m M M B m B B G M B B N B B C C B C B B B B C B C B C C B C C B D C C Z Z C D D B Z Z D Z Z Z Z Z H Z Z L Z Z Z D Z Z Z Z Z H Z Z D D Z Z Z Z Z Z Z Z Z Z Z F Z D Z A A H Z C G B q $ $ $ $ % % * * * = r r r 0 r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r 0 r r e r r r r r r r r r r r r r r r r r r r r r y * r r r r r r r r r r r y : * ; ; % $ % o o - b.!.].E.[.^.[.~./.R././.~./.~.~./.~.~.T.~.T.T.T.T.T.T.T.T.T.T.T.[.T.T.(.T.~.~.~.~.~.~./././.~./.^.^.(.^.(.`.(.(.(.^.(.(.(.(.(.(./././.~./.~.~.~.T.~.T.T.T.T.U.T.U.Y.U.U.L.L.L.Y.U.U.D.Y.L.S.L.L.L.L.Z.L.L.L.L.L.L.R.L.U.P.P.P.Y.P.P.P.P.P.L.U.U.U.U.L.L.L.U.U.Y.P.U.U.Y.U.P.U.U.U.U.U.Y.T.T.T.T.T.T.T.T.T.T.T.~.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.R.~.~.T././././.(.(.^.(.^.(.(.(.(.(.(./.(.(././.(.(.(.(.(.(.(._.(.(._.^.|.(._.|._._._.|.(.{.}.}.}.|.}. X|.|.}.|.}.|._.|._._._._._._._._.}._._.|.|.|.|.|.|. X X X@X.X.X.X.X.X.X.X.X'. X.X X X|.|.|.|.|.|. X|.'. X X|. X.X.X@X.X.X.X'..XdX@X.XzX.X.XdX.XdX.X.X'..X.X|.|..X|._._. X X_._._.|.(._.|.^._._.`._.|.|.|. X|.|. X X.X X.X.X'.dX'.dXzX.XxXzX.XdXdX@X.XdX.XzX.X.XzXvX.XzXzXdXdXcXzXzXzXdXzXzXzXzXdXcXzXzXdXzXzXdXdXdXzX.XzX.XzXzXzX.XzXzXzXzXzXdX.X@XxX'..XzX@X.X.X.X X X X.X|. X|.|.|.|. X|.|.|.`.`._._._._.`.^.(.(.(._.(.(.(.(.(._.`.(.(.(.(.(.(.(.(.(.^.{.(.(.(././.(.(.^.(.^.{.{.^.`.`.[.(.(.(.(././.!./././.(./.~./.(./.T.~.T.~.T.T.T.T.T.U.U.Y.Y.L.L.U.S.U.H.H.S.S.S.S.S.A.G.A.A.A.A.A.A.A.A.A.j.Z.h.h.A.h.A.l.l.k.z.l.g.f.g.i.z.a.k.a.a.a.a.a.g.a.a.a.a.a.a.a.a.a.g.a.f.a.g.a.f.f.f.f.f.a.a.f.a.a.a.a.i.i.i.i.a.s.a.a.s.a.a.a.f.f.k.f.a.l.k.k.f.h.z.s.h.l.l.x.h.l.h.h.z.z.h.h.A.h.A.h.A.A.A.A.A.G.A.A.G.A.A.G.S.G.S.S.H.A.G.H.G.L.H.G.H.H.H.H.H.H.H.H.H.S.H.L.L.H.L.H.L.L.L.L.S.L.L.L.L.L.L.L.U.U.L.U.U.P.P.U.T.U.U.L.U.Y.U.T.R.T.T.U.T.T.T.T.T.T.T.T.I.T.U.I.U.T.T.I.T.T.T.T.~.T.T.T.T.~.T.~.~.T.~.~./././.(./.^.^.(.(././.!./././.(././././.[./.(.(./.^.`.(.(.(.{.(.(.(.(.(.(.(.(.(./.(.(.(.(.(.(.(.(.(./.(.(.^.(.(./.(.(././.^.(.^.`.^.`._.{.}.}.}.|.|.|.|..X.X.Xm.J r e e : y Z ].dX.X.X.X.X.X.X.X.X.X.XP : * P ]..X'.|.|.`.`.`.|._.|._._._._.^.^./././.~./.~.~.~.T.T.~.T.U.T.T.T.T.U.U.U.U.T.L.L.S.L.L.S.L.L.S.L.H.H.S.H.S.H.H.S.S.H.H.H.G.H.A.A.A.A.A.A.A.h.f.h.h.g.g.g.k.h.k.k.f.f.f.g.g.a.g.z.f.f.k.f.f.a.f.a.a.a.a.a.f.a.a.a.f.a.a.a.a.a.a.a.a.a.i.a.i.i.a.i.s.i.i.u.i.u.i.i.a.u.i.i.i.a.t.i.i.u.s.a.u.u.i.s.a.i.i.i.a.a.k.a.a.a.a.k.", "N m m M M M m M V M m m M M m V B m B m B B B m M m M M M m m m M m M M N N M V B N C m B B C B B C N C C C A C C C C B C C C C C C B C F C C Z C Z C Z C G C Z Z D Z Z Z Z Z Z Z Z G Z Z G Z Z Z Z Z C D Z Z Z Z Z D Z Z C Z Z Z Z Z Z F Z D G Z D Z Z Z Z Z Z t $ o $ $ $ $ * * % ; y * : : r 0 = : : r r e r ; r r ; e r r r r r r r r r r r r : r r r = r r 0 0 r 0 r r r r r y : : y r * 0 r r r = r r ; y ; ; y r ; r r : e ; ; ; ; % ; % * $ $ o # w b.^./.[.(.(.(././.(.E.(.R././.~./././.~.~.~.T.~.T.T.T.U.T.T.T.~.~.~.~.T.~.~.T./.~.~.~.!.~./.^././././.^.(.(.(.(.).(.(.(.(.(.(.(.(./././././.~.~.~.~.T.T.T.T.T.T.T.T.Y.I.I.L.I.L.L.L.L.U.L.L.L.H.H.U.L.U.S.L.P.U.L.L.R.T.T.Y.I.T.U.U.I.T.T.I.U.T.L.L.U.L.T.U.L.L.T.L.T.U.T.U.U.U.U.L.U.T.U.T.T.U.~.U.T.~.~.I.T./.T.~.~.Y.T.~.U.T.T.T.T.T.T.I.~.T.T.U.(.T.~.T.T.(.!.(.R.|.!./.(.(.^.(.(.(.(.(.|.(.^.(.(./.{.(.(.(./.(.`.(.`.(._._.^.(.{.{._.|.|.|.|._.|.{._. X.X.X{. X'._.|.|.|.|.|.'.|._.|.|._.|.|._.`.`.|._..X|. X X.X X.X X X X.X.X.X'..X|..X|.|..X|.|.|.|.|.|.|.|.|.|.|. X X X|..X.X X'. X'..X.XdX.X.X.XzX.X.XzX.X XdX'. X X.X.X|.|.|.|.{.|.|.|.|.|.^.|._.`.`.|.^._._.|.'. X X.X@X.X.X.XdXdX.XdX.XdXxX'.cXdXdXzX.X.XzX'.@XzX@XdXdXzXdXzX.XcX.XcX.XdXdX@XdX.XdXzXzXzXvXdXdX@XdXxXcX.XzXvX.X.XcX@XdXdXhX'.dXzXxXdXdX X@X XdX XdX X X X.X XdX@X(._..X`.|.{..X_.|.|.|.`.`.{.|.(.^.`.^.^.(.(.^.|.(.(.(.(.(.(.(.{./.(.(./.`.~.^.(.`.(.(.!.(.(.(.(.(.{.`.(._.(././.(.{.!././.{./.[.{.^.T.(.!./.~.T.~.~.T.T.T.P.T.T.P.P.U.P.L.P.L.A.D.L.D.S.S.S.A.A.A.G.A.A.h.h.h.h.l.D.Z.z.h.G.h.h.Z.z.k.z.k.j.s.j.z.a.f.i.k.j.d.x.i.i.a.f.i.i.f.a.a.s.a.a.a.z.f.f.k.z.a.k.f.i.i.g.d.i.a.f.i.i.i.i.f.a.a.s.s.a.i.i.z.s.i.g.j.a.z.z.g.z.x.z.h.h.h.j.z.A.S.z.a.z.Z.g.j.g.h.z.D.z.z.A.Z.A.S.Z.A.l.D.G.h.A.A.S.H.S.G.G.L.L.L.T.G.D.H.L.L.L.L.G.H.T.H.G.H.G.H.U.L.L.U.U.L.G.T.H.U.L.D.H.U.U.S.U.P.U.U.U.L.L.U.Y.P.T.D.U.P.T.U.P.P.T.T.U.T.!.U.T.T.T.T.P.U.T.Y.P.^.T.T.T.T.[.T.T.~.T.~.T.~.~.~.~.~.~.~././.(.(.(.(.(.(.(././././././.(.^.!.(.(./.(.(.(.(.(.(.(.(._._._.(._._.(.(.(.^.(.(.(.(.(.^.(.(.(.[._.(.^.{.).(.(.(.(.(.^.(.(.|.{.|.(.(.`.^._._._._.|.|.|.|.'.[ y : y 0 : : ; * y Q.'.`..X|..X@X_..XdX XS ; ; S '..X{.@X|.|._.`.|.{. X_..X_..X{.(.[.[.(././.T.~.~.~.~./.Y.T.~.U.T.L.T.U.U.P.P.P.L.S.L.L.L.S.L.H.H.H.H.H.H.H.H.A.S.S.S.S.G.H.A.A.A.A.A.A.z.h.l.h.f.k.g.f.f.f.f.z.a.l.z.k.g.g.k.g.f.f.f.a.f.f.k.k.a.i.k.a.k.k.a.a.a.a.a.a.a.a.a.a.a.a.a.i.i.a.u.a.i.i.s.i.t.s.a.s.i.i.i.i.i.a.i.i.i.u.i.t.s.i.i.i.i.s.a.a.a.a.a.i.g.g.d.j.f.", "M m M M N M m M m M M M V m M m B B B m B m m B M N M m M M m u m M M M M N M C N N N C B B B B N C C C C C N C C N C C C B C B C C C C C Z Z C Z Z Z Z Z Z Z D Z Z Z Z Z Z G Z H Z Z D Z D H Z Z Z Z Z C Z G C D B Z Z Z D Z D Z Z Z Z D Z B B Z Z Z Z C D D D C Z u $ o $ $ $ $ % * % % r r : : : > t r 0 ; r ; r r r r 0 r ; 0 r ; ; r r ; r ; ; ; r r r r r r r r r r r r 0 y * ; : ; 0 t : y r r r r ; r ; 0 r r r r 0 0 0 * ; ; * * % & $ o # u Z./.!.^.^.(.[././././.^.~.^.!././.~.~./.~./.~.~.~.T.T.~.T.T.T.T.T.T.T.~.T.~.~.T.T.(.~.~.~.~.~./.!./.!././.[.^.^.{.(.(.(.(.(.(.(.(.(./././././././././.T.T.~.T.T.T.T.U.T.Y.L.U.L.I.L.L.L.U.U.L.L.L.L.L.H.S.S.L.L.L.L.L.L.G.K.L.L.H.U.I.I.Y.T.H.I.U.Y.Y.U.K.T.T.U.Y.L.T.T.Y.Y.Y.U.T.T.Y.U.U.U.Y.Y.T.T.T.T.T.T.T./.T.T./.I.T.T.T.T.~.T.T.I.~.I.Y.Y.Y.T.T.~.T.T.T.~./.T.R.R.[.!.(./.(./._.{.(.(.(.^.(.^.(.^.(.{.(.(.(.`.`.'.`.`.`.`._.`._.|.|._. X|._.'._.{.`.`.'..X|.|.|.|.|.|.|._.|.|.|.|.|..X^.|.|._. X X|.|.|.|.`.|.|.dX.XdX X.XdX X.X.X X'..X|._.|.|.|.|.|.|._._. X|.{.|. X|._.'..X.X.XdX X.X'..X.X.X.X.XdX.X.X.XzX.XzX@X.X X'..X'.|.|.|._.|.|._._._._._.|.|._.!.n.n._. X'.|._..X|.'.'. X XdXdX XdXdX.XdX.XxX.XdXdX.XcX.XxXxXdXfXdXdXdXzXzXzXcXcXdXzXcXxXdXdXfXdXcXzXzXvXdX XvX'.dXdXdX.XzXzX'.cXzXdXdX'.mX@X.X'.dXdXdXdX'.dXdX.X'.@X|. X.X X`.|.'.'.'.|.`..X X|.|.{._._.`.(.~.|.|.`./.(.(.(.`.(.^.(.(.`.`.(.`.~.(././.).(.].(./././.(.].(.(.(./.(.(.(.(.^.(.`.`./.!.^./.(.!.).~.~.!.^.~.~.~.~.T.~.T.T.T.T.P.T.U.P.L.L.U.U.L.L.L.L.H.H.H.S.S.A.A.A.A.A.A.A.S.h.A.h.h.A.e.> 0 = Z Z.h.h.A.U > q m T g.d.d.i.j.i.s.s.a.i.i.g.d.s.a.s.s.d.a.a.a.f.k.f.a.C y = Z j.d.f.j.g.i.d.f.i.i.i.i.d.a.g.i.i.a.g.k.z.a.j.g.f.a.d.g.z.z.h.h.h.l.z.z.g.h.j.j.Z = > y 0 H D.A.D.G q : 0 q Z H.D.g.A.G.H.Z.S.H.F.A.H.H.H.Z q * H A.H.S.U.F.G e.T.H.P.P.H.S.L.S.S.T ; y q L.L.P.P.T.H.Y.U.P.P.P.L.L.Y.L.U.Y.P.P.T.Y.P.U.P.P.T.T.T.[.U.T.~.T.T.Y.U.Y.^.U.P.Y.L.P.T.T.T.~.T.T.~.[.T.T.[.~.~.~.~./.^.^.(.(.(.(.(.(.(./.(.(./././.(.(.(.(.(.)././.(.(._.(._.(._.^.(._.(._._.(.`.(.^.|.^.(.(.(.`.!.(.(.(.[.(.(.(.(././././.(.(.(.(.^.(.^._.(.^._._._.|._.|.|.|.'.Q.0 : ; 0 y J S : y ; y '..X|. X.X'. X X.X|.b.[ b.b.'._.'.(..X_._.`.`. X{._.{._.!.{.(.{./.~.~.T.~./.T.T.U.Y.~.I.I.U.~.T.I.I.T.P.U.U.L.L.L.L.L.U.S.H.H.H.G.S.H.H.H.H.G.S.S.S.G.H.A.A.A.h.A.h.h.l.l.h.k.g.g.f.z.f.g.a.g.f.k.z.a.f.g.f.f.a.k.f.a.f.k.i.i.a.i.k.a.a.k.k.k.a.k.a.a.a.a.a.a.a.i.a.a.i.i.i.i.i.i.s.i.i.a.u.i.u.s.s.a.a.i.a.a.u.i.i.i.i.i.i.a.s.a.a.a.a.f.a.i.a.d.a.a.", "M M m M m M M M m M M M m m V B B B B B m M B B M M M m m m M M M M M M M N N N B N m C B C B C B C B C C C C A A B C C C C C C C Z C Z C Z C Z Z D Z Z Z Z Z Z Z G Z Z Z Z Z Z Z H D Z D D G Z Z Z Z Z Z Z Z Z Z G Z Z Z Z Z Z Z Z G Z Z Z D Z B Z Z Z D Z Z B Z C Z Z Z % o $ $ $ % % % : ; * * = = ; r r r r r r r r r r : ; r r r r r r ; : y : : e e r ; ; e r ; ; r ; ; : : y ; : : ; : r : r e = r ; 0 r r r 0 ; ; ; * % % $ $ o o S F.!./.~.~.{./.(./.(.(././.^.!.(././././.!././.~.(.~.[.T.~.T.T.T.T.T.T.T.T.T.T.~.~.T.[.T.T.T.~.!.~.~.~.~.~.^././.(.{.(.(.(.(.(.(.(.(.(./.(.!.~././.(.~.~.Y./.~.~.T.T.T.T.T.U.Y.U.U.U.I.U.L.L.U.L.L.L.L.H.H.L.L.L.L.L.P.L.L.P.L.Y.Y.H 0 r * > Y T.T.Y.P q : 0 0 H P.P.U.Y.T.U.T.U.U.T.T.L.Y.T.Y.P.T.U.~.T.T.T.~.U.U.I.T./.Y./.I.I.R.T.~.Y.~.T.T.].T b.T.~.T.T.T.T.(.T.P.^./.(.[./.(.~./.).{.{.|.{.(.|.(.(.|.^.(.(.|.!.t 0 q * y Y X`.^.'. X_.'.].` F.|.`. X|.'.].[ n.|.|.|.|.|.|.|..X'. X_.'._._..X X|.|._.|. X_.|.|. X XQ.q ; q Q. X X_..X X@X'..X|..X|.|.'.|._.|. X}.|.|._._.|.|.|.|.|..X.X.X X|..X.X.X.X.X.X.XdX.X'.zX.X.X.X.X.X.X.X X|.|.`.`.|._.|.`._._.'.].c.q = y 0 q y b.'.|.|.dX_.dX@X X'.dXzXdX XdXdXdXzX@XdXdXdXdXnXdXdXdXdXdXxXdX.XzX@XzX@XzXxXxXdXdXdXQ.[ .XdXdXdXdXcXzXnXdXdXdX'.xXxXzXQ.r 0 0 ].'..XxXzXzXdX.Xm.q ; : y : ; : : : J '.|.0 r * [ X_._.|.{.{.|._._.{.|.|.(.(.(.{.~.~.`._./././.|.~./.(./.{./.(.].Z e 0 S (.(.q = q [ (.(.(.(.(.(.{.(.(./.(.(./.^.~.~.~.(.T.(.T././.~.R.T.T.T.T.U.U.U.P.L.U.Y.L.U.H.L.L.S.S.L.S.H.A.S.z.A.A.A.A.A.A.g.A.D.g.A.l.e.: * w * T h.k.z.T 0 0 > f.d.z.a.a.d.d.a.a.a.u.i.i.i.d.a.a.i.d.a.f.z.a.k.g.g.u ; r C j.s.z.i.f.d.k.i.i.i.a.d.d.a.g.a.z.a.i.f.f.g.z.g.j.z.l.z.z.f.A.h.h.l.f.l.l.j.h.h.A 0 * t e u a.g.l.m * e 0 : C D.D.H.L.D.G.H.D.H.S.L.A.I.H.S : : S F.P.L.T y = n.G.H.U.H.T.L.L.U.U.[ r * : L.L.L.P.L.U.U.L.L.L.U.P.U.T.P.L.U.Y.T.P.U.U.T.U.T.T.T.P.P.T.~.T.T.Y.T.T.U.Y.T.U.Y.P.~.T.P.[.~.T.T.~.~.T.T.~.~.^.!.E.^.(.[.(.(.(.{.(.(.(.(.(.(./.(.(.(.(.(.(.(.^.(.(.|.(._.(.(._.^._.^.{._._._._.`.(._.(.(.(.(.(.^.[.[.(.(.(.(.|.(.{.(./.(.(.(.(.(.{.(.`.^.|._._._.|._.|.|.|.|.'.`.J y e : _ '..X'.` ; = q Q. XQ.n.Q.`.Q.b.n.`.Q.Q.Q.Q.@X_.Q.Q.n.].|.n.b.b.]. X].b.b.[ F.(./.{.^.{.].e.[ b.[ F.R.~.I.T.U.I.Y.U.U.U.L.L.L.L.U.S.S.S.S.H.H.S.S.G.H.S.S.G.S.S.S.A.A.H.h.A.A.A.A.A.h.l.k.k.g.f.j.f.f.g.a.g.a.f.f.f.k.f.f.a.f.f.a.a.a.i.k.a.k.a.k.k.a.a.k.a.a.a.k.a.a.a.a.a.a.a.a.i.a.a.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.a.i.i.i.a.i.i.i.i.i.a.i.a.a.a.a.f.a.f.f.g.a.a.g.", "m N M m m m M m M M m m m V B m B m m B B B m B M m M M M m M m m M M V N N N N N B C B C B C B B N C B C C C C C C C C A C C C C C C D Z C Z C Z B Z Z Z Z Z Z D B Z Z Z Z Z Z D Z Z Z D D Z Z H C Z D Z C Z Z Z D C Z G B Z Z Z Z B Z Z C G Z Z Z Z Z Z Z G B Z Z C Z C Z C * o o o $ $ $ % % % * = * ; ; 0 0 r r * r ; r r r r r r ; ; r r r r r r r ; r r r ; r r 0 ; = y y : * y y y : * r y * : y r r * ; * % ; % % $ $ $ o o # % ) T.I.Y.~./.~.`.~././.(./.(./././.(././././.(./.^.~.(.~.~.~.~.~.~.~.T.~.~.T.~.~.T.XX~.T.~.T.T./.T.T.~.!.~.~.~.~.(././.E.^.^.^./.(.(././.(./.(./././././.R./.~.!./.T.T.T.T.T.T.T.T.Y.U.U.L.L.U.U.L.L.L.H.L.L.L.L.S.S.L.L.P.P.L.P.P.L.U.Y.A q y * y u H.U.L.A ; ; 0 > A !.U.U.!.U.T.U.T.U.U.T.T.T.Y.T.T.T.T.L.T.T.!.I.~.I./.T.I.Y.Y.(.~.T.T./.~.T.K.Y y = F.T.T.T.T.~.T.T.~.^.^.E./.^.~.(.[.^./.{.[.(.E.(.(.`.(.(.~.`.(.^.Q.= t e > ; y `.(. X_._.!.[ u = F.`.|. X(.[ m = ].|.{..X|. X'. X X'. X X.X X|.|. X'.|..X'._.|.|.|. X_.Q.* : r Q.|.|. X@X.X.X'..X|.|.|..X|._. X_.|._.}.}.|._.|.|. X.X.X X|.|..X|..X.XdX.X.XdX.X.XzX#X.XzX.X.X.X X X.X.X.X|.|.|.|.|.|.{.|.|.].A = y y ; ; ; : 0 ) '.|. X.X.X.X.XxXdX'.@XdXdXdXdXdX.XzXdXcXdXdXdXdXdXdX.XdXdXzXzX'..XdXvX'.zXxXQ.) r J nXxX.XxXcXzXzXdXdXdXdXzX.X.XzXQ.= e r ]..X.X'.'.'..X.XQ.0 y : e : : y : > J '.|.q y 0 [ |.{.|._.|.{.|._.|.(._./.`.(.(.~.(._.[./.(.(.(.(.(./././.{.~.{.(.S : y ~ ^.!.q y e [ {.^.(.(.(.(.{.~.(./.(.!.(././.^.T.~.~.~.T.T.Y./.R.~.~.T.T.U.T.U.P.Y.U.U.L.L.H.L.L.L.S.D.S.S.S.A.S.A.A.A.A.A.A.A.A.l.g.S.h.e.q * 0 0 y e.z.g.Y = w ; T a.g.a.i.u.k.u.a.a.x.s.i.d.s.i.i.i.z.a.a.a.a.z.k.i.u y t A i.z.a.z.a.i.d.d.f.z.a.a.d.a.s.a.i.a.j.i.z.a.g.z.h.f.l.D.z.h.h.a.h.l.l.l.z.g.h.h.C r e * e q e.A.j.> * 0 e > L z.A.D.l.H.G.A.A.A.A.H.L.G.L.Z * * Z L.P.b.0 r q b.G.U.G.U.D.U.U.U.U.T r e e L.U.L.Z.L.I.S.U.U.T.U.P.T.T.P.U.P.U.U.Y.U.Y.L.T.T.U.T.T.~.T.U.T.[.U.[.T.~.~.T.~.Y.Y.T.~.~.~.T.T.~.T.~.T.~.~.~.~.[.(./.(.(._.(.^.(.(.(.^.(.(./.(.(.^.(.^.(.`.(.(._.^.^.(.(.(.(.(._._.|._._._._._.(.(._.(._.(.(./.`.!.(./.(.!.[.(.(.(.(.(.^.{.(.(.|.(.(.(.^._._._._._._._._.|.|.`.].y * r = '. X@X|.'.b.].'.`. Xr : : [ * = u ].J 0 q H |. X> = * [ u = 0 r y n.S r > 0 u n.(./.^.T y > y 0 0 0 G F.T.T.U.Y.T.U.U.L.L.L.L.S.S.L.S.S.S.S.H.S.S.H.H.S.S.S.S.S.A.W.S.A.A.A.A.h.A.h.h.k.h.h.k.f.f.a.f.a.g.i.k.z.f.k.f.f.f.f.a.f.a.f.f.a.a.i.i.k.i.a.k.a.a.k.a.a.a.k.a.f.a.a.a.a.a.i.a.a.a.i.i.i.i.i.a.i.i.i.i.i.i.i.i.i.i.a.i.i.a.a.i.i.a.a.a.a.a.a.a.a.f.a.g.a.g.g.a.", "N M m M M m N M m M M M M m M B B M N B M m M B M m M M M m M M m M m N M B N B B B B N B C C C C B N C C C C C Z C Z C C C C C Z C C C Z C C Z C Z Z Z Z Z G D Z Z D Z Z Z D G Z G C Z Z G Z Z Z Z Z Z C Z D Z Z Z Z Z Z Z Z Z G Z Z Z Z Z Z Z Z Z Z G Z Z Z C Z C Z D B Z H Z H C % o o $ $ $ $ % % % % * ; ; * ; r r 0 r 0 r : 0 q ; t = : y : r r r r y e r r r r r = r ; ; ; : q > ; : r * : * = * % % % % $ $ o o o o $ i F.T.T.T.R.~.~./.~.~.[.(././.(././.(.(.(.(.(././.!././.~./.!./.~.~.~.~.~.T.~.T.T.T.T.~.).T.~.T.XX{.XXE.(.T./.~.~.~.~.~.~.~././.(./././.(.(././.(.(.~./.~.^.~./.~.~.~.~.~.T.T.T.T.T.U.U.I.U.U.U.U.U.L.L.L.S.U.L.L.S.L.L.L.L.L.P.L.U.L.L.L.U.U.Z : : 0 * : L.T.Z.; ; > r y Z ~.L.U.I.R.U.T.^.~.[.H.U.U.Y.P.P.U.U.T.T.U.~.I.T.~.T.Y.T.~.K.T.T.T.T.U.T.(.b.e : 0 b.T.(.Y.Y.T.T.L.(.T.T.^.~./.!.~.(.{.(.(.|._.|.|.(._._.^.|.`.|._.` r r r e ; * n.|.|.{.|.Q.q > ; Q.`.|.'.Q.* y y Q.`.dX X.X@X|..X.X|..X`.`.'..X|.|. X.X'. XdX_.|. X_..XQ.: r y Q..X.X_.'.'.zXdX X X|.|..X X|.|.|.|.|.|.|.|.|.|. X_. X X X.X.X|.|..X.X.XdX.X XdX@XxX.X.XdX X@X X X.X.X.X.X|.|.|.|._.|.(.|.`.S = > * : S J 0 r 0 > [ '.@X X|.'.zX'.dXdX.XzX|.dX.XdXcXdXdXcXdXdXdXdX XxX@XdXdXdXdXdXdX.XdXfXdXdX) e ; ) dXcXzX.XdXdXdXdXdXdXdX.XxXdXdXn.y : * Q.dXdX'.@XdXdX.XQ.: : r : y : ; * y H .X.X> > r b.|.(.{.{.`._._.|.}. X{.(.(.(.(.`.^.~.~.^.{.XX(.(.^.(.T.(.~._./.^.J 0 0 H ).T.[ ` [ F.~.(.(.].[.`.~.(.T.^.~._.T.~.~./.E.~.!.[.^.T.T.!.T.T.T.T.T.P.Y.Y.L.L.U.L.L.L.H.L.H.H.S.S.G.S.S.S.A.A.h.A.A.A.A.h.Z.h.h.g.h.e.> : * > > u z.z.T > 0 y T z.e.T i.T a.a.i.T T T T i.u.a.a.T T T G T s.f.a.s.Z > ; A f.z.a.h.e.T G T T w.s.z.i.s.a.k.e.T G T G T g.D.a.f.T e.T Z.e.T T A.h.l.l.g.A.g.Z e ; y > = T l.T : r y y : A G.G.z.H.A.T T Y T F.Z.I.G.H.D > : Z L.Z.T : e y T b.U.L.L.L.b.T T n.T y ; = L.L.U.T.Z.e.T ` [ Z.T.T.U.e.b.b.Z.P.P.P.b.b.F.U.T.U.F.b.b.n.T.F.n.n./.F.[ [ [ U.{.T.T.T.~.~.T.~.~.~.~.!.~.~././.^.^.(.(.(.(.(._._.(.(.(.(.(.(.^.(.(.(.(.(.(.|.^._.(._.(.(.(.(.`._.|._.|._.|.|._._.`.|.^.(.^.(.(.(.^.^.^.(.(.(.(.(.(.^.(.(.(.`.{.^.|.^.(.^.`.(._._._.}.}.}.|.|.|.n.* r e S '. X X.X.X.X.X X.X'.t r : r r y ` @XS e ; L .X.X> r e y * = : ; ; y = ; * y y S [.^.b.q ; y 0 * y 0 * J ~.Y.U.T.L.I.U.U.U.L.L.S.H.H.H.S.H.Z.H.S.H.A.A.S.S.S.S.A.A.A.A.A.A.A.h.h.A.h.g.g.g.z.l.f.f.f.f.a.k.k.a.k.a.k.a.f.a.a.a.a.g.a.a.a.a.a.a.a.a.k.a.a.a.a.a.a.a.k.a.i.z.a.a.a.a.a.i.i.a.i.i.a.a.i.a.i.a.i.i.i.i.a.i.i.i.i.i.a.a.i.a.a.a.i.a.f.a.a.k.k.f.f.z.g.g.g.g.", "M M M M M M m M M M B m M m N M N N N N B B M M M m M m M M M M M M N N N V N B B B N C B B N C Z B C N C C C C C C C C Z C C Z C Z Z B C Z D Z Z Z Z Z B F B Z Z Z Z Z C Z D Z D Z D Z Z Z Z Z D B D B Z Z Z Z Z Z Z D C D C Z C Z Z Z Z Z Z Z Z Z D Z G Z Z Z C Z Z Z D Z B H D Z Z Z y % o o o $ $ $ $ & % % % % = * * : 0 * 0 r ; ; ; y 0 : > r 0 r = ; ; ; r r r r r ; : ; * * ; * : % : % % $ % % $ $ o o # # % u b.L.XXT.T.T././.~.~.!.!.~.(.(.(.(.(.(.[.(.(.(./.(.(.(.(././.^././.~.~.~.T.~.~.T.T.~.~.~.~.T.[.T.~.~.E.XXU.XXT.~.T./.~.~.~.~.~.^.(.~./.^./.(./.(././././././.~.~.~.^.~.~.~.~.T.~.T.T.T.T.U.T.Y.I.U.U.L.L.K.L.L.L.K.S.L.L.L.L.P.L.L.L.U.U.U.L.S.L.U.S : : y * > [ L.[ ; ; y 0 = S !.L.U.Y.I.[ [ T ` K.T.[.T.U.F.b.b.Y.~.T T T F.~.T.T.T.].b.b.b.T c.F.T.T.S.[ > 0 0 [ n.F.R.(.~.P.b.[ [ b.].~./.(.(.n.n.n.~.n.[ b._.{.`.(.`.(.(.(._.A r r S = : : Y |.[. X~.[ : ; ; b.n. X].b.* ; 0 [ n.`.'.|.'.Q.b.[ b.b.Q.'..X|.|.@X.X].b.b.[ b.]..X.X Xn.y : * Q..X_.Q.Q.F.n.].|..X.X X_..X'.|..X|. X X}.|.|. X@X X X@X X.X X.X.X.X.X.X X.XdX X X.X.X.X.X.X.X.X.X'..X|..X|..X'.|._.|._.|.F.* t * u Q.|.'.Q.q > 0 P '.|..X'.].b.[ b.Q.zX'..XdXdX.X'.n.n.[ n.n.'.dXxXdXdXdX].b.n.[ b.].dXnXdXQ.A ; ; u Q.].zXdXvX#Xn.b.b.b.n.].zX@X'.].y : e Q.dXdX@X.X.X.X XQ.y y = J '. X.X X.X|.|.(.y 0 r ` (.(.|.'.].b.[ [ n.].(._.!.).(.!.Y.[ [ [ b.^.{.~.~.(.(.].b.` b.].Z y 0 Z (.~.F.n.n.Y.{./.F.K.n.~.].[ b.b.].~.T.(.^.Q.T [ [ ~.F.F.n.F.~.~.T.T.T.T.U.U.U.U.L.U.L.L.L.L.S.H.L.H.G.S.S.G.A.A.S.A.A.A.A.A.A.h.A.S.g.e.: y 0 0 t = T j.G q * q T i.T y = y i.d.f.> r m T i.i.T B q * r > = q T k.f.B * ; C f.s.k.G q q 0 e ; t G u.i.z.e.C q e ; ; : y N T z.j.q e q D 0 = q e.z.z.g.h.j.j.Z 0 0 C e * G l.Y e 0 Z : : C A.S.F.Y t r e y * q G F.L.L.S ; ; Z U.Y * e r 0 > y b.L.L.S ; > 0 q u t = y G.T.I.T u r = : * u T T.T.G * y ) P.T.I q 0 = b.K.T.G y 0 U n.= = q [ u 0 = r C F.~.[.~.T.Y.T.T.T.~.~.~.^.^.E././.^.^.(.{.(._.(.(._.(._.(.(.(.(.(.(.(.(.(.(.^._._._._._.`.(.(.`._._._._.|.{._.(.{.(.`.`.(.{.(.^.(.(.(.(.(.(.(.(.(.^.(.(.(.(.(._.(.(.(._._._.`._.|.(.}.}.|._.|._.!.y : r ) @X.X X.X.X X`.|.|..X0 : y 0 b.n.].'.S e ; J |.'.; 0 * y n.b.: e r 0 b.n.u = * > ).(.r q : L Q.^.Y y > y n.T.T.U.U.L.L.L.L.A.L.L.H.H.S.L.D.A.H.A.G.A.H.S.h.h.S.A.A.W.h.A.A.A.A.G.e.h.g.g.g.f.a.f.f.f.f.k.i.i.k.k.z.i.a.i.j.f.g.a.a.a.a.k.i.a.k.a.a.a.a.k.a.a.z.a.a.a.a.a.a.i.a.i.a.a.a.a.i.i.a.i.t.a.a.a.i.i.a.i.i.i.a.i.i.a.a.i.i.a.i.a.a.a.a.a.a.z.a.a.z.g.a.z.a.g.f.", "N N m M M m M M M m m M m M M N N m N N M M m M M V m M m M M M M N M V B B N C B V B N N C B C C C N A C C Z C C F Z C B C Z C Z C Z C Z Z Z D Z Z Z D D D D Z Z Z Z G Z G Z L Z L D Z Z Z Z Z Z B Z D Z Z Z Z D C Z Z G Z Z Z Z Z Z Z B G Z Z Z Z Z Z Z Z Z Z Z Z Z Z D Z A D Z D Z C C B u u % $ $ o & o $ $ , $ $ % & $ % * % % % % ; % % % ; % ; ; ; % ; * % % % % % % $ & $ $ $ $ $ $ o o % ) n.T.T.U.U.XXJ.~.(.~.R.!./.~.(.(.!.~.(.(.(.^.^.(.(.(.(.(.(.)./.(././././././.~.!./.~.~.T.~.~.~.~.~.T.~.~.~.T./.~.XX~.~./.~.~.~.~.~.~./.~./././././././././././.~.~.~.~.~.~.~.T.T.~.~.T.T.T.T.T.T.U.L.Y.U.Y.Y.U.L.L.L.L.L.L.U.L.L.P.L.L.L.U.U.L.L.U.T.T.U.A : y H = 0 U T.U q r J q : Z E.XXT.[ u = = y * q [ ^.Y.T.: = r [ u q r : y b.T.~.T y = y * q : u [ ~.T : * y 0 = q Z.~.T.` q y * r r 0 U ~.!./.q : q ` : * A ].^.^.`.|.(._._.Q.0 ; r [ ) 0 : y ]..X|.b.0 0 * : ; q F.b.> y ; : : : Q..X'.S y * y ; * r A Q. X'.'.[ q * y q 0 * S ~..XQ.r : 0 Q.].H * y * T '.@X'..X.X|.'.|. X|. X'.|.|.|.|. X|..X.X X.X.X.X|..X.X.X.X.X@X X.X.XdX.X.X.X.X.X.X.X.X|..X'.|._.|.|.|.|.'.'.[ y r 0 [ |.@X(.|.n.Q.'.'.'.dX].I r 0 0 0 y P ].fX.XdXb.u > ; r 0 ; : b..XdXdXK 0 y y y ; * I '.cX0 q : : ; : I dXcXb.u = y : y ; y ` zXzXm.* : r ].'..X.X.X.X.X.XQ.0 r * A Q.n.!.n.n.|.|.'.= e : b.|.{.{.[ q 0 : q = Z n.`.`.(._.` q 0 r : q A n.[.~.Y.n.u = = 0 y u * > S /.(.e 0 q [ ~.n.y > * b.y 0 e 0 A ]./.(.b.u q q * u U 0 q G Y.T.T.T.U.U.U.U.L.L.L.U.L.S.L.L.H.H.S.D.S.S.S.S.A.A.S.A.A.A.A.j.h.h.A.h.h.e.> 0 0 t = 0 ; e.T y t r T i.G e e r i.i.f.r ; > G k.u.N w ; 0 r q > % 0 T z.V 0 : Z d.d.T q t y = r y * 0 A f.a.G r r ; ; q ; * q P A.g.r : : y 0 t Z A.z.j.z.h.A.g.A ; * U u ; u g.A ; r T e y C A.H.T r ; ; : = y : ; Z D.L.C ; * Z P.[ y * r r = = b.T.U = > e : q : : : y L.U.b.= : = y y ; ; y e.T.b.: : A U.XXA ; e y U T.U.C > 0 b.n.e : * = ; 0 * y r [ !.T.T.~.~.T.~.~.~.~.~.~././././.(.(.(.`.(.`._._._._.(.(.(.(.`.(.(.(.(._._._.(._._._.(._._._._._._._._._.|._.|._._.(.(.(.`.(.(.{.^.(.(.(.(.(.(.).(.(.`./.(.`.{.(.|.|.(._._._._.`.|._.}._._.|.|.n.; 0 r S .X X X X'.~. X@X X[.0 : : Z '. X X_.P ; ; J X`.; = y ) XdXS r r S ^.).[ q t : (.F.> : y U b.` [ q : = T T.T.L.T.L.L.S.L.S.L.L.H.H.H.H.G.A.A.A.A.H.A.A.A.S.h.A.A.A.A.A.A.A.h.z.h.h.g.g.f.z.a.f.f.a.f.z.k.f.i.i.a.z.a.a.a.a.a.a.a.a.a.a.a.a.i.z.i.a.a.a.a.a.a.a.k.a.a.a.a.a.a.a.a.a.a.a.i.a.u.i.a.a.i.i.a.i.i.i.a.a.i.a.a.a.a.a.a.a.a.a.a.a.a.a.f.f.g.k.g.z.g.z.g.z.f.", "N N M M N M M m m M M m B M M M M C N N V M M F m M M M M M N m M N V M V m A N B C B C C N C B C C C C C C A C C C C C D Z C C C D B Z C Z D Z Z Z Z Z D C Z Z Z Z Z B Z Z Z Z Z Z Z G Z Z Z Z D Z Z B D B D Z Z Z Z Z Z Z Z Z Z Z Z Z D Z Z Z Z G Z Z Z Z Z Z Z Z Z C C D D C Z H Z Z G C G C Z Z u 0 & o o o o o o $ $ $ $ $ $ $ & $ $ % $ & & $ $ $ $ & $ & $ $ $ $ o $ $ $ o o o % D [ U.T.U.U.T.T.XXXXU.XXT.T.[.R.~.~././././.^.(.(.(.`.(.(.(.(.(.`.(.^.^./././././.[.~./.~./.~.~.~.~.~.[.~./.T./.(.T.XXT.~.~.T.T.~.~.^.~.~.~.~./.~.(././././.~./.T.(./.~./.~.~.~.~.~.~.~.~.~./.T.T.T.T.T.U.T.Y.Y.L.U.L.L.U.L.L.U.S.L.U.P.P.L.U.P.L.L.L.L.U.L.S.U.L.Z r r ) u : N L.u 0 r [ ; : Z T.T.b.q ; 0 e ; r r q T ~.U.t ; ; = : : e ; ; C U.F.y : t u ` y > * M F.b.r e 0 0 : > b.~.e.* y r e e = r ; U ^.~.q > > 0 0 r J |.^.|.(.`.|.|.`.[ : : q m.b.: : y n. X X[ : e q : 0 0 n.b.> : 0 0 y = Q..XU r r r ; ; e ; 0 I '. Xb.r ; y ; ; ; r y Y _.Q.: ; q n.I = y : ` '. X X.X|.|..X|..X.X|..X.X X X X|.|.|.|..X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X|..X.X|.|. X X|.|.|.`.'.Z e : y n.|.|.|. X X X X}.@X'.Z ; ; : y r r 0 A dXdX].y : y r e ; > : * ].dX_ : : y [ _ e q : b.dX> : r : e : ^ dX'.0 * * > y : > r t ].zX].* y = Q.dX.X'..X.X'.'.n.q : e e : ; y y y |. X|.0 e : [ |.(.[ = * ; e r > * r Q.{._.T y > e ; r ; r r F.!.!.A * > e 0 r r * t S (.(.0 : y [ /.F.= r * 0 r e > ; = ` ^.].q 0 = > r t q : r Z !.T.U.T.T.U.L.L.L.U.L.U.S.L.L.S.L.G.L.H.G.G.S.S.A.H.A.G.h.A.A.A.A.h.h.h.h.e.0 > t H u : ; B G > > y E i.T * e * i.i.i.0 y = T t.T * * = T z.T q r 0 T s.u r ; A g.Z.M 0 0 C a.j.G y * > t.d.Z y q m Z.j.Z e > = Z.j.y : e q Y T h.h.h.A.z.z.S.k.A ; q U Z ; * e.* y S T q > S Z.Z.u 0 r H F.U.T ; ; : Z.L.S : t Z U.L.T : ; q [ b.L.F.q r = Z L.b.u : : : L.U.u e > u Z.F.C t : q F.T.y r = n.Z.> ; 0 e q Y.n.= > = ].A.r q q Z b.[ q 0 ; A !.T.~.~.~.T.~.~.~./.~.!.~./.(.(.{.(.(.`.^.`.(._._._._.(.(.(.(.(.(.^.|.(.(._._.{._._._._.(._._._.{.|.|._._.{.|.|._.|.^.`.^.`.(.).^.(.^.{.(.^.(.(.(.^.^.|.(.(.^.|.(.(.`._._._._._._.}.}.|.|.`.|.{.y : 0 q '..X X XQ.r S [ ].|.: > : [ `.{.|. XL ; y S X@Xr r : b.}.}.P r = S `.{.[ * > y ).n.* : : : r = q * > q [ Y.L.L.L.U.U.L.L.L.S.H.H.D.G.A.H.A.S.A.A.A.A.A.A.A.A.A.A.h.A.A.A.j.A.h.h.f.g.j.f.a.f.f.f.f.f.i.k.i.i.x.a.i.k.a.a.a.a.a.a.a.a.a.i.i.k.a.a.k.a.a.a.a.a.d.a.a.k.z.a.a.i.a.i.a.t.i.i.i.a.i.a.i.a.i.a.a.i.a.a.i.a.i.a.a.a.a.a.a.i.a.a.i.k.f.a.f.a.h.a.g.z.k.k.i.k.", "N N N N B N N M M m m N M M M M M M M M M B N m M N M N N N N V N N B N B B B B C B N V B C B C C V C C C C C Z Z C Z Z C C C Z Z C Z D Z C G C Z L Z L Z Z Z Z Z Z Z Z Z G Z Z Z Z Z Z Z Z Z Z Z C Z Z Z Z D Z Z Z Z Z Z H Z Z Z Z Z Z C Z D Z H Z G D Z L Z Z D Z Z Z Z C Z Z Z Z Z Z Z Z C Z Z C Z Z Z Z C m % $ o o o o o o o o o $ e K c.L.L.U.P.U.T.T.U.T.T.~.T.T.~.T.~.T.~.[././././.^.(.(.(.(.(.(.|.(._.(.(.(.(.).(./.^./././././.(.!.(././././.!././.!.~.~.~.~.T.T./.~.~.~.~.T.~.~.~.~.(.~.~.~.~.~.~.!.~././.~.~.~.~.~.~.~.~.~.~.T.T.T.T.T.T.T.T.T.T.U.T.U.P.U.L.L.L.L.L.L.L.U.U.U.L.P.P.P.P.L.L.L.L.U.Y.U.Z : e ` I ; ; b.y r P T y r A T.~.u * 0 A K.Y.A r = t !.T.: : ; u [ b.m * ; : U.b.: > r T T.L.n.H.T.Y.Y.T : e : [ b.L.R.y r = U Y.~.e.: 0 0 F.(.* r e 0 [ n.U._._._._.'._.|.`.u 0 0 : _.^.r : e P .X X].b.e r q [ Q.|.^.b.: > 0 [ Q.{.|./ C : S .X'.L : : y '..Xq 0 : Z ~./.` r > u `.n.y ; y S ; ; * ` `.|.|.|.|. X X.X.X|..X X.X.X'..X.X X X.X.X.X.X.X.X.X.X'.zXzX.X.X'..X.X.X.X.X.X.X.X'. X.X.X.X X.X|.`. X X X|.'.'.P : y : n..X|. X'..X X|. X|.b.r t 0 b.dXb.r t 0 b.dXn.P y > n.dX].e : e [ dXP r : u hXdX].n.mX@XdXm.P r ; A Q.].dXn.) y : n.dX].q ; r [ dXQ.r y r n.dX.X.X.X'..X'.Q.* 0 r : 0 * : e * '.`.(.r r r ` (.].y ; > ` ^.Q.y % : U (.P.: y = U /.F.y r e P ~.b.y r : ` (.b.0 r * ~ (.{.* r > T T.F.y y ; A b.[ q ; 0 Z /.[ r : ; [ ~.b.* r r H Y.^.T.T.P.U.L.Y.L.U.L.L.S.L.H.H.S.H.H.G.S.A.S.H.A.H.G.A.A.A.A.A.h.l.h.k.A.T * 0 q U e.= 0 0 y r r y T f.T ; ; 0 a.w.d.r 0 * T u.N e * u i.i.p.e.a.g.a.a.A ; y A j.e.q q : Z Y T Z y > q T g.a.g.j.e.G Y q q > ; g.j.0 > r V Z.A.l.h.h.z.h.k.z.h.A e : G T r > C w = T U = * S Z.j.r e r J U T Y y > q T U.S * r Z T.U.e.t e 0 b.I.U.n.= y * b.U.(.U t * : U.Z.r r q e.P.T.e.q * : F.L.L y ; ) Y * r q y q b.[ : : U ~.Z.: r 0 b.~.!.S r r Z (.Y.Y./.~.~.~.~.~.!.~.~././.(.(._.(.(.|.[._._._._.|._._.(.`.^.[.(._._._.^._._.`._._._.`._.^._.`._._.|.|._.|._._._._._.`.`.^.{.(.(.(.(.(.(.(.(.(.'.(.(._.(.|.(.^.|._._._.|._.`.}.}.}.|.}.|.}.}. XZ y > r [ '.'.{.A e * q n. X0 * r b.`._._. XP 0 ; Z .X'.0 e ; [ @X XS ; e S `.^.[ 0 : y (.F.* > * [ L.n.n.b.b.b.F.U.U.U.Y.L.L.L.H.L.H.H.H.H.G.H.H.A.S.A.A.A.A.A.A.A.h.A.A.h.A.A.A.h.l.h.g.j.g.k.f.f.z.a.d.g.i.a.a.k.a.a.a.a.a.a.u.a.a.a.a.a.i.a.a.a.a.a.a.a.a.a.i.a.a.a.a.a.a.i.a.a.a.a.i.i.i.i.a.i.a.a.a.a.a.a.a.a.a.a.a.a.i.f.i.i.f.z.i.i.i.a.a.a.a.g.z.a.z.z.f.k.f.k.f.f.k.", "V V V V N N N m M M N m M m M M M M M C m N M B m N M M N M N V M N N N B B B B N C A N C N C B C C C C C F C C C Z C C A Z A C Z C Z B Z Z C Z Z Z Z Z D Z Z Z D Z Z Z Z Z G Z C G Z Z Z Z Z Z Z Z Z D Z Z D Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z G B Z Z G D L Z Z Z C D Z Z Z G Z Z Z Z Z Z Z B Z Z Z Z C C C Z C C Z A Z A q * $ $ # # $ % u G e.n.K.S.H.L.L.L.P.P.Y.T.U.T.T.U.T.T.T.(.~.~.~.~.~.~././.^.(.(.!.(.(.(.(.(.(.(.(.(.(.(.(./.^./././.(././././././.(././././././.~.(.~.~././.T.~.~.~.~.~.~.~.!.T.~.~.~.~.~.T.~.~.!.~.~.~.!.~.~.T.~.~.T.T.~.T.~.T.T.T.T.T.T.P.P.T.U.P.P.Y.L.U.L.U.L.L.U.U.L.L.U.P.P.U.P.P.L.L.L.L.S.U.Z : e T T 0 : A y r Y [ : ; L T.F.: * r [ Y.P.b.= r * Z.T.: y ; Y P.P.T * : e U.L.q q 0 r q q H Y L.T.I.n.r r q b.~.Y.Z.r y : _ [ [ [ : t r [ {.q 0 r A `./.{._.(.(._.|._.|.F.* e * S b.[ u : : y [. XdXQ.e r y m. X.X`.Q.0 e q ].'.`.@X.X'.dXn.b._ u y * = '.Q.t e : b. X|.].Q. X'.^.Q.; 0 r ; 0 ; y [ |..X|.@X|. X.X'.|..X|..X|..X.X'..X.X|.|..X'..X.X.X.XzX'..X.X.X.X@X X.X'..X.X.X'.@X@X.X'..X'.'. X|.|. X X'.`. X'.U e * y Q.'. X|. X^..XdXdX XP 0 e S dX'.dXS > > ) .XdXdXdX].m.b.A r > y b.dXb.r ; > = e S ` Q.dXfXdXK e y ) cXdXdXdXdXdX].m.b.Z > y > b..XQ.* y r Q.dX'. X.X.X.X.XQ.; : e y J I S S P |.(.'.* r ; [ ^.b.= e : !.T.~.` y : y {.T : 0 q ].T.T.` * r y T.[ * e = !.(.(.A = q P (.[.* r * b.[.n.* ; y b.].~.H 0 : D (.T : : q U.[.~.D r : A P.T.P.P.T.L.U.L.L.L.L.U.S.H.H.H.H.H.H.H.S.G.H.A.H.A.A.A.A.g.A.A.A.h.h.z.z.e.t r > T j.L : 0 0 ; r q T t.T ; q q d.i.i.y 0 = G i.B : r C i.i.z.i.i.g.a.a.C y r Z e.T > e * : 0 = q q y 0 T h.T Z y = 0 y y q : q Z.S.e r t U G.z.z.A.z.z.Z.g.A.h.A ; * T e.r ; q e q e.T * : A A.d.; ; e : y r = * e 0 ` H.D 0 0 Z U.U.b.; ; r b.I.T.b.: 0 = b.G.U.[ r 0 y L.e.r e = n.T.P.n.= r = b.Y.b.= : A u > y [ = q P Z r q F.T.b.0 r 0 b.(.~.H 0 r F ^.~./././.T.~.~.~./.(./.[.(.(.|.(.(.(._.|._._._._._._.^.`.(.`.|.(.(.|.`._.|.(._._._._.|.(._.`._._.|._.|._._.|.{._._._.(.`.(.(.(.(.{.(.(.(.(.(.^.^.^.^.|._._.|.}._._.|._.`.`.`.|.}.}.}.}.}.}.|.|.m.* > r 0 u I y * e > y dX|.0 ; ; [ `.|.|. XS r y J |..X0 ; e [ |._.Z r : I {.(.b.0 e : {.~.u * t A b.b.F q Z G D.T.U.U.H.L.H.H.L.H.H.H.H.H.G.S.S.H.A.A.A.Z.h.A.A.h.A.Z.A.G.h.A.g.G.l.h.g.g.g.h.a.f.f.z.f.z.a.k.a.a.z.a.a.a.a.a.x.a.a.a.i.i.i.i.a.i.a.a.i.i.a.i.k.a.i.a.a.a.a.i.a.a.i.i.i.i.s.a.i.a.i.i.a.a.i.a.a.a.a.a.a.z.i.i.z.z.i.i.i.a.a.a.a.a.g.a.g.k.d.a.k.f.k.k.k.k.k.", "B V V V V N N m M M M M m M M M M V M M m m m B N M M M N N C M B V V V B B B B C N B B B N C C V C C D Z C Z C Z C Z Z Z C Z Z Z Z Z Z Z B D Z Z Z Z Z D Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z H Z Z Z D Z Z Z Z Z Z Z F D Z Z Z Z D D Z Z G Z Z Z Z G Z Z Z Z G C Z D Z Z C C Z C C A C C A C Z Z Z C G C C C B B G C A q = * % % , o $ o # o $ $ $ $ q B G T n.z.D.A.A.A.z.G.Y.U.L.L.L.P.U.P.Y.U.T.U.T.T.~.T.T.T.E.T.~.!./././././.(.(.(.(.(.(.].(.(.(.(.(._.(.(.(.(.(.(././.(.(./././.(./././././.(./.).~.~.~.~.T./.~.~.~.~.^.~.~.~.~.~./.T.~.~.~.~.T.~.T.~.~.Y.T.~.~.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.P.P.P.P.U.P.U.L.I.L.L.L.U.U.Y.P.P.P.L.P.L.L.L.Y.L.L.S r ; T Z.0 y e * : Z.T e y S T.b.y * y Z.Y.U.b.r > y b.U.= e > [ T.U.[ > r : U.T.Z.B > y > ; ; y Z F.Y.Z.r y y Z.[.T.n.* 0 : ; q = = > * q [ ^.> 0 > [ /.{.(.(.(.`.`.`.(.{.[ e ; : r q r q ; : * b..X'.n.: r q Q..X`. XQ.: y y n..X X@XQ.) * : * q C r e r .XQ.q > y m.{.|.`.`.|.@X(.Q.: r r ; y y : y ]._. X_. X.X X.X.X.X.X|..X'..X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X'..X.X.X'..XdX'.dX.X.X'..X'.|..X|.|.|. X|.|..X X[ : y = b. X|. X@XS u I n.dXJ 0 e ~ X@X.XI : : P .XdX[ u : = : S r > ; b.dXdX` = > ; r r y y n.dX.XH y ; K dXdXdXdXb.S * * q u > y * v.dX].* ; : Q.dX.X@X.X'. X.X!.: 0 q ! X'.|.|._.{..X`.> ; e b.^.[ : ; q {.[.[.b.* : y ~.b.0 > 0 {.[.T.[ q : y Y.[ = * y ~.T.(.S : r S !.(.e 0 : [ [.F.* : 0 F.^.~.S : e S T.b.e : y [.T.T.S r r S P.P.Y.P.P.U.Y.U.L.L.L.S.L.H.H.H.H.H.G.H.H.S.S.A.H.A.A.A.A.G.A.A.z.l.l.l.z.e.= ; ; T z.d.u q > y 0 t T a.T r = 0 u.g.T e > = G i.D e > y i.i.i.T T T T i.Z r ; C g.d.> : * Y e.e.T T T e.f.j.V : > A f.h.) 0 0 y l.A.0 : * T z.z.l.h.h.g.A.h.g.z.Z > : T j.y 0 > e = A.T t 0 A A.b.; e ; T b.z.Z.b.b.e.S.L.S * ; A L.Y.b.: 0 = Z.T.T.A.* > * b.T.T.Y > 0 ; P.F.y : ; [ T.U.[ = > y F.L.!.m r e ; ; Z !.u = y : * u !.~.F.> ; y n.T.(.Z > : J (.!.(.!.{.(.T./././.^./.^.(.(.^.^.^._._._._._._.|.{._.`.^.`._._.(.{.|._.^._._.|._.`._._.`.|._._.|._.|.|._.|._._.|.{.|.(.`.(.`.`.(.^.(.(.(.(.(.`.(.`.`.{._.|._.}.}.}.}._.`.`.`.|.}.}.}.|.}._._._. Xb.: r y * * > y * y Q.|.|.t r r [ .X^.|. XP 0 = P '.`.0 e r [ X`.J r r J ^.{.[ 0 ; > (.{.n.y ; : ; 0 r : y [ T.T.U.L.L.L.H.L.L.L.H.H.L.H.H.H.A.S.A.A.A.j.h.h.A.Z.A.h.h.A.A.A.g.h.l.h.g.a.g.k.f.f.f.a.g.i.z.a.a.a.k.a.a.a.a.a.a.a.a.a.a.i.a.a.a.u.i.a.a.i.i.a.u.u.a.a.a.i.a.a.a.a.i.i.a.i.i.a.i.a.i.a.a.a.a.a.i.k.a.i.a.a.z.k.k.i.i.a.a.a.f.a.i.a.k.f.i.k.k.f.f.k.f.f.a.k.f.", "B V N V N N V V M M M N B M M M M N M M B N B N N M M M V M M N V B N C B B C B V C N B C C B C B C C C B C C C C A Z C V Z Z C D B Z C Z Z Z D Z Z Z G Z D Z Z Z Z G Z Z Z H Z D Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z D Z G Z Z Z Z Z G Z D C Z Z Z Z Z D Z H Z Z Z Z Z C Z Z Z Z Z Z Z Z Z C Z C C Z C Z Z Z Z C C C A C Z C Z Z C B B C B Z D A u Z C m G C C m Z D u C Z Z C C Z Z Z B V C V Z m D T b.Z.z.A.A.z.A.A.A.H.G.S.S.L.U.L.P.U.P.U.U.P.Y.U.U.T.T.~.T.XXT.~.~./././.(./.(.!.(.(.(.(.`.(.(._.(.(.(.(.(.{.].(.(.^.(.(.(.(./.(.^.(.(./././.T.~.~././.(.~.~.~.~./.~.~.!.~.~.~.~.~.~.~.T.~.~.R.T.T.~.T.~.T.~.~.T.T.~.T.T.Y.T.T.(.T.T.T.T.T.P.P.P.Y.P.P.P.P.P.P.L.L.U.U.U.U.I.I.P.P.P.U.L.L.L.L.U.S.L.Z r ; T L.y : : : y /.T > : Z U.L.0 : q [ U.R.b.* e r Z.T.r : : T U.T.T 0 = q Y.Y.F.I.F.[ [ Z * ; = [ !.b.: > = b.T.T.F.= q y U n.n.F.F.n.b.!.!.= r * b./.^.(.`._.(.(.`.|.|.u ; > : * e > q > e r A zX XQ.: r = n.`..X`.Q.0 > y n.dX.X].y : y I ].`.[ * > r '.F.y : y [ @X'.!.b.b.F.].Q.= r y = [ y : r ` .X X|.|.'. X X.X|.|.'..X'..X.X.X@X'..X.X.XzX.X.XzX.X.X.X.X.X|..X.X X|..X.X.X.X.X.X.X.X.X.X.X X.X@X|. X'.(.@X.XQ.= r 0 y ].dX'.b.r r = A dX_ ; y u '.`.`.u : : ` Xb.y > t n.].`.: : e b.'.dXdX@XQ.b.Y y > r y dX'.Y 0 ; K xX'.@Xb.t > y n. X Xq > ; b.`.].0 ; t Q..X.X X@X.X.X|.n.e 0 * L '.|.|.|._.{.^.`.y e ; [ _.b.0 0 0 ].[.(.Y ; : S ].b.: : y F.T./.U = e u ~.[ q r q F.(.].u : 0 K (.(.r r e [ ~.F.* : y Z.~.~.D y > S ~.b.* y ; [ ~.n.; r r Z T.~.P.T.P.L.L.L.L.S.L.L.S.H.H.H.H.G.H.G.S.A.S.h.G.H.A.S.A.A.j.A.l.l.l.k.k.e.0 e 0 G z.z.T q * r 0 y T s.T e > ; G Z B 0 0 0 G u.T 0 0 q C T T y y 0 B a.A * e B g.f.Z ; 0 A T T D q q u l.T e ; ; ) T T y ; : 0 Z.D.* * r T e.z.D.Z.h.g.z.j.z.h.A 0 * T z.C e 0 0 Z l.Y > q u A.G.q y 0 C T [ A r q L F.L.S e e Z U.U.Z.> 0 y ` b.U.T.u : q q b.T = r r ; T.Y.q r y q [ b.q y : S Y.P.U.[ * ; y ; b.R.Y e r r q [ [.U.b.: r ; F.I.(.Z e ; Z !.~./.~./.~./.^././.^.^.^.(.(.(.^.`.^._._._.|._._.|._.`._._._.|._.|.[._.|.|._._._._._._.(.`.{._._.}.}._.|.^._.{._.^._.^.`.|.^.^.(.(.(.(.^.|.^.(.(.`.^._._.|._.}.}.|.}.|. X|.`.'.}.}.}.}.}._.(.|.[.'.n.C q = y r 0 K ]. X X{.* q q b.|.|.|._.~ r r S .XdXr = ; [ dX`.J = r S ^.|.[ q r : (.(./.b.A = ; y = y [ T.T.U.U.L.Y.K.L.A.S.H.H.H.H.H.S.H.S.S.A.A.A.A.h.A.h.j.h.h.A.A.h.j.G.h.h.h.g.j.f.f.f.f.a.g.a.d.g.k.k.a.a.k.a.k.i.a.a.a.a.i.a.i.i.i.u.a.i.u.a.u.i.t.s.a.a.a.i.a.i.a.a.i.i.i.i.i.i.a.a.i.a.a.a.a.a.a.k.a.a.k.i.k.d.i.k.i.z.k.s.k.i.a.k.a.a.k.k.k.d.f.f.k.f.f.f.f.f.", "B B N B N N N m N M M M B M m M M N M N V N m B m m N N N N N V B B B B B B C B C B B C B C B C C C C C C Z C C Z C C Z F Z Z C Z C Z Z Z D Z D Z Z Z G D Z G H D D G Z G Z Z Z H Z Z Z Z Z Z Z Z D D Z Z D G Z Z D G Z Z H Z Z B Z B Z Z D G Z D Z Z Z H Z Z H Z B C D Z Z Z Z Z Z B Z C C C Z Z Z C C Z C C Z Z Z C C C C Z C Z C Z Z C C A C C Z A Z A Z Z Z Z Z Z Z Z Z Z Z Z C Z Z C Z C C T u.H.z.z.z.z.D.A.A.A.H.G.U.S.U.Y.L.P.L.P.P.T.U.U.T.T.T.~.~.~.XX~.!.E.(././.(.(.(.(.(.(.(.(.{.].].(.(.(.(.(.(.(.(.(.(.^.(.(.(.(.(.^.(.^.(./././.~.(.~.~././.T.~.!.~.~.~.~.^.~.~.T.~.~.~.T.~.T.T.~.T.T.~.T.T.T.T.T.T.T.T.T.I.T.I.U.T.U.T.T.U.T.U.P.P.P.P.Y.P.P.P.U.L.U.L.U.U.U.U.U.P.P.L.L.L.L.L.L.L.S.A : e T U.S ; 0 0 P T.T y * L T.].A : e u b.b.y e * C T.U.e ; 0 [ U.U.T e : y L.T S : q J.T.F.0 y y [ T.b.; e q [ b.T.U.A : = S b.b.S = u Z E.(.: * * [ _._.|.^.`.`._._._.F.: r e y G P P L y : e > ].dXQ.0 : r b.n.@XdXn.t y 0 b.n.dXQ.0 r r [ m.[ y > e : '..XA : e y b.Q.P : * y Q.Q.= r r [ .XY = = 0 Q. X X_. XdX X_..X X.X.X.X.X.XdX.XdX.XzX.X.X.X.X.X.X.X.X.X.X|..X|..X.X|.'..X'..X.X.X.X.X.X.X.X.X|. X.X.X X X'..X) r r r 0 L u y : : y b.'.n.; > * ` Q.` ; ; y n.dXL = r u n.F.H r 0 0 b.].K u e b.'.cX[ * : u .XcXL : ; S n.].xX/ r 0 u n.m.P : 0 r b.dXn.y y : ].dX.X XdX.X.X.Xn.y : r P '.|.|.|. X|.^.(.q r ; [ {.Y.q = : S n.` e * 0 U ~.F.r t * A n.b.q = * Y ~.].= ; r Z n.I q 0 t i ~.(.0 e e b.T.b.0 y y D.!.Y.H r e S T.(.S * > * = q t r : F Y.T.T.P.P.L.L.L.L.L.L.U.S.K.G.H.H.S.S.G.G.S.A.A.A.G.A.A.h.A.A.h.A.h.l.h.l.e.= 0 r T a.i.z.G q 0 0 = e.a.e.r y - y > = * e r T i.u.B q : : r y = y q e.i.A r r C g.g.T e q 0 q ; y > r U z.e.0 e r ; 0 e q q ; 0 Z.A.* e = Y A.h.h.D.z.h.D.h.f.Z.Z ; 0 U z.T r ; > U Z.T > * C Z.H.b.q * > r : * > y T ].U.S 0 ; Z L.U.L.0 : : > y L.T.[ * : > > 0 u : * ; T.U.n.q > 0 0 y 0 0 y b.~.T.U.K.0 * e = Y.U.Z.> * r q n.Y.~.F.0 ; > n.T.!.K ; ; S `././.!.~.[./././.^.(.(.(.(.(.(.^.(._.|._._._.|._.|._.`.|._._.}.}.}.|.}.}.|._.|._.(.|._.(.`._._._.|._._.(.|._._._._._._._.|.[.^.^.(.(.(.(.^.|._.[.(.(.(.|._._.}.}.}.|.|.|.|.}.|.|.|.}.{._.|. X(.`.(.|.'.'.Q.n.n..X'.`. X|.|.'..X'.`.`._.|.|._._.'.@X{.(.|.`.`._.{.{.(._._._.(.^.`.(.`.(.^.~.~.{.!.].n.n.Z.~.P.U.U.T.T.L.U.U.L.U.L.L.H.L.H.H.H.H.G.H.H.A.A.A.h.A.h.A.A.g.A.g.A.g.g.h.h.k.g.g.g.z.g.g.a.a.a.g.i.k.a.a.a.x.a.a.a.a.a.a.a.z.u.u.i.i.i.u.i.i.i.i.i.u.x.t.a.u.u.i.a.i.i.a.i.s.i.i.i.i.a.i.a.a.a.a.a.a.k.a.k.k.a.k.a.i.z.f.f.f.i.k.i.i.z.z.d.i.i.z.z.a.a.k.k.k.k.f.f.", "B B B N V N V N N N N N B N B m M M N N V N B N N N N V B B m B B B B B B B B B B B C B C B C B C B C C A Z C Z B Z C Z Z Z Z Z Z Z D Z Z Z C D Z Z Z Z Z D Z Z Z D Z Z Z H Z H G Z Z Z L G Z Z Z D D D D Z Z D D D Z D Z Z H G Z Z G Z D D C Z Z D G Z H Z Z H Z Z G Z Z Z Z Z Z Z F C Z D C C C Z C C C Z C Z C C Z Z C C C C C C C C C N G G C Z Z C Z Z Z A Z Z Z C A C Z C Z C C C C C Z B Z T h.h.G.A.A.z.Z.H.S.H.H.H.H.L.L.L.L.P.P.P.L.T.U.T.T.~.T.T.~.~.~.~.~.(.(././.(.!.(.!.`.(.(.(.(._.(.(.(.(.(.(.(.(.(.(.^.(.(.(.(.(.(.(.(.~./././.(.~.~.(.~././.T.~.~.~.~.~.~.~./.[.~.~.T.~.T.~.~.~.T.T.T.T.T.T.T.T.T.T.T.T.T.U.T.T.U.T.U.T.U.U.T.T.P.T.P.T.P.P.P.U.U.U.T.U.U.U.T.U.U.P.P.L.L.L.L.S.P.L.S ; > [ I.` : t * [ U.[ : r S T.~.Q.y * > = y > : q F.H.T.; y : T L.H.[ e e * U.b.q r 0 u C u ; y = F.P.P.0 ; : : y L.XXn.e e : 0 0 0 y q [ ^.(.* r r b.^./.(.(.(._._.`.^.[ ; e 0 Y .X(..X`.L y : y [ X`.r r > r y ].dXhXr > y : : .X].y r ; q y q y y : : '.|.n.q : ; e 0 y : > ` .Xn.* ; r Q.`.].t ; y Z '.@X|.'.^.@X|..X|.|..X.X.X.X.X.X X.X'..XxX.XzX'.zX.X.X.X.X.X.X X.X|..X X.X.X.X.X.X.X.X.X|..X.X X X|..X.X.X.X.X].u 0 r r t : : e = ` .X'. X` q y * * y : : ` dXdX_ > : : y ; > q e e [ dXF > > : S u r r : [ dXfX[ y ; y t [ .X_ y y 0 : : y y ; r b.dXQ.r ; ; Q.dX.X.X.X X.X'.Q.: r r S `._._.(.|.~.|.(.0 0 y [ [.{.[ ; ; t : : ; 0 C ].T.~.b.* : e : * > e u K.U.~.L e ; ; e = y > y S T.(.0 e % e.[.b.y r * n.(.!.S ; r S ^.T.F.u r = r A u 0 : F T.T.U.P.P.L.L.L.S.L.S.L.L.H.H.G.A.S.A.S.A.A.A.A.A.A.A.A.A.A.h.A.h.h.h.k.Z.T q 0 y T i.i.z.e.A > 0 > T a.i.G q 0 > C T A = m G u.z.T J y = > = q C T f.d.A y ; C j.z.g.T q = * r * y U h.g.H.T y > > q Z [ 0 e q e.A.= t q T G.G.A.A.l.h.A.h.A.d.D q t U z.e.y 0 q e.Z.T r q Z H.l.H.[ m : * : t y Y P.U.Y.H 0 = P L.T.U.[ q 0 : = b.K.E.Y y y e A _ q q 0 T.U.K.F.L 0 0 > q Z Z.~.L.I.T.I.C q y Z T.T.U.u y q H ].(./.b.0 q y b.{.!.H * q G ~./.(./.~./././.(.(.).(.^.`.^.`.`._._._.(.|._.|.|.|.|._._._.|.}.}.}. X}.}.}.|._.}._.`.`.|.`.(._._.`._.`.|.(._._._._._._._._.^.^.`.(._.(.`.|.(.(.(.|._._.{.(.|.}.{.}.|.|.|.|.}.|.|. X}.|.|._._.|._.|.(..X|.{.|.|.[.(.|.|.|.|.(.^.|.`.(.'.|._.|.|.'._._.|. X`.`.'._.|.(._.(.(.(.{./.{.~././.(./.T.[.Y.~.T.XXT.T.Y.U.T.I.Y.H.H.H.L.L.S.H.L.H.H.H.H.G.A.A.A.A.A.A.h.A.A.h.G.j.G.l.G.j.h.h.g.g.k.g.a.f.f.g.g.g.f.a.a.k.a.k.i.a.a.a.a.a.a.a.a.i.s.u.u.u.u.i.u.i.a.t.a.u.u.u.a.a.u.a.i.i.a.u.u.i.a.a.a.i.a.a.a.a.a.a.a.a.a.k.a.k.k.k.k.a.f.f.f.k.k.a.a.i.i.i.k.i.f.i.z.a.a.a.f.a.i.z.", "B B N B B N B N B B M M N M N N M m N V N m N B V N B N M M B m B B m B B B B B B C B C B C B C C V C A Z C Z C F Z B D Z F Z Z Z C Z Z D F Z C Z H Z G Z D D Z D Z Z Z D Z D D Z L Z Z Z Z Z H Z G Z Z Z G C D D Z D Z Z Z H Z G Z Z Z C Z D Z G Z D D Z Z Z G Z G F Z Z Z Z Z Z C Z D C C Z C C Z Z C C N C C C Z C C C Z Z C Z C C Z Z Z Z C Z C A Z Z Z Z Z Z G C G Z C Z Z A Z D B D Z D Z Z e.z.A.z.l.H.G.S.G.A.G.G.H.L.L.L.L.L.L.Y.T.L.U.U.T.T.T.~.~.~.~.~.~./././.(.(.(.(.(.(.(.(.].(.(./.(.!.(.(.(.(.^.`.(.^.`.(.`.(.`.^.(.(.(.(.(.(./.(.~.~./.^.~.~.~.~.~.~.~.!.~.~./.~.T./.T.T.T.T.T.T.T.T.T.T.T.U.Y.T.U.T.Y.T.T.I.I.U.U.U.T.U.U.T.P.Y.Y.P.Y.P.P.Y.P.T.Y.Y.I.Y.L.U.L.U.U.L.L.L.L.L.L.U.U.F.L = 0 T U.Z.y 0 q n.(.T : q Z T.T.T.n.Z y q q 0 Z n.T.I.T.q = q [ T.U.T = ; y L.T.b.y % r ; : y Z F.T.T.~.Y y q y = n.[.!.b.u > = r : y [ (.T./.q 0 > [ (.^.|.`.^.^._.(.|.Z ; * > b.dX.X X.Xb.: * y H dX Xb.r y y r !..X.X[ y 0 t y Q.'.b.y e > r ` Q.q * y n.|. Xn.A e > 0 y q [ X|.Q.* r 0 F.`.|.[ ; 0 0 b.`. X X.X|. X.X X.X.X|..X@XdXdXdX.X.X.X.X.X.X.X.X'..X|..X.X'.|.@X.X.X X.X.X.X.X|..X.X.X|..X|.|..X|..X.X X X@XdX].` y r * = e y b. XdX|..X X[ y * r q y b.dXdX'.].P 0 * y Z n.` ; y J X X) q ; : : * u b.dXdXdX].u y : : J dXhXP y > : S n._ : y S dXQ.* : y ].|.dXvXdX.X.X.XF.y 0 0 P X|. X(.`.(.`./.y 0 e b.~./.`.n.B * = * q Y !./.[.T.^.b.C = q r = U K.T.~.~.].F : > 0 I _ y * H ^./.q * = [ ~.F.* = y F.]./.A 0 q Z [.T.T.].[ [ b.~.L : r K Y.T.U.L.L.U.L.S.U.L.U.S.S.G.H.G.S.S.A.S.A.A.A.A.A.A.A.A.A.A.h.h.h.h.f.h.k.G.j.z.g.i.k.f.a.z.s.s.s.j.s.k.i.i.s.w.T u.a.i.z.i.i.u.i.i.z.t.u.T e.e.s.s.z.k.g.s.j.j.z.g.a.g.j.Z.T T j.g.h.z.z.h.h.z.e.e.l.H.h.h.G.Z.A.G.Z.G.F.Z.A.A.A.h.l.h.A.z.j.h.h.g.h.z.z.z.j.g.j.z.l.S.Z.Z.D.l.A.G.G.S.Z.Z.b.Z.F.P.L.L.U.L.I.Y.Y.Y.I.U.I.F.n.F.F.U.~.XXU.L.b.Z.K.I.T.Y.].U.U.J./.P.F.b.n.F.T.T.T.T.T.Y.~.L.!.!.].T.T.~.!.T.!.~.T.T.[.~.~.~.R./.~.T.~.(.!.~.`.~.~.(.(.^.(.(.(.(.(.(._.`.(.`.(._._.|.`.(.|.|._.|._.|.|.|._.}.|.}.}. X}.|._.}.}.}.|.`.|._.`.|._._._.^.`.`._._._._._._._._._.(.(.`.^.(.`.^._.{.(.(.(._.(._.|.}.}.|.}.}.|.|.|.|.}.|.}.|._._.|.|._.|.|.|.|.|._.|.}.|.{.|.|._._.|._._._.`.(.|.'.^.`.'.|._..X`.`._._.`.^.{._._.(._.^.(./.(./.!.(.T.|.[.[.T.P.T.P.~.T.U.T.L.H.L.L.S.S.H.S.G.G.H.H.H.H.H.h.A.A.A.A.h.A.h.A.A.j.h.A.l.h.h.h.g.g.g.g.g.k.g.a.g.g.k.d.a.a.i.z.a.a.a.a.a.a.a.a.a.i.a.u.r.a.u.u.i.i.u.u.u.u.u.i.a.u.i.u.u.i.u.i.i.s.i.s.i.i.a.a.a.a.a.a.a.a.k.a.k.i.k.k.k.f.f.z.k.k.f.k.z.i.i.z.f.z.k.i.a.f.a.k.i.z.a.a.", "B B B N B B N N B N B B N B N B M M N N V u B m N N N B B B N F B B G B B B B B B B C B C B C B C C C C C C C C Z C Z Z Z Z Z D D C Z Z Z Z Z H Z Z Z Z Z Z D G Z D D D Z Z G Z Z Z G Z L Z Z G D Z Z Z Z Z Z D G Z Z D Z Z Z Z Z Z G Z Z Z C D Z Z D Z Z Z Z Z Z Z Z G Z Z Z Z Z A C C Z B C Z C Z Z C C Z Z C C C Z C C C C C C C C C C B C Z C Z Z Z Z C Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z C C C A T g.Z.D.Z.A.A.G.S.G.H.L.L.H.H.L.L.L.L.L.U.U.U.T.U.T.T.T.~.T.~.~.~././././.(.!./.(.(.(.(.`.(.(.).!.(.(.(.^.`.(.^.`.`.`.(.`.(.(.`.(.(.(.(.(./././.[./.~.~.~.!.~.~.~.!.~.~.~.~.~.~.~.~./.~.T.T.T.T.Y.T.T.T.T.T.Y.T.U.U.U.U.U.U.T.U.T.T.U.U.T.L.P.P.~.P.P.P.Y.T.T.T.U.T.I.I.U.I.R.U.L.L.L.L.L.L.L.U.L.G.H.L.Y.P.U.L.P.U.U.T.Y.T.~.T.T.T.T.T.U.T.F.b.b.F.I.I.L.T.Y.Y.L.Y.S.L.T.U.U.P.T.G.T.L.U.F.Z.n.e.F.T.P.H.P.~.~.F.b.n.L.~.T.(.~.(.U.n.n.F./.~.(./.(._.).{.{.^./.(.^.`.^._._._.|.{.|._..X_..X.X.X.X'.dXdX X.XdX@X].Q.m.]..X.X.X@X].m.Q.]..XzXdX.XQ.Q.`.'.dX.X|. X@X|..X X'.].F.Q.n.|.|.|.{.[.|.`.`.|.{.|.'. X`.dX}.'.'.'.`..X'.|..X|..X.X.X'..X.X.X.X.X@X'..X.X.X.X.X.X.X.X.X X X X.X|..X.X.X.X.X.X.X.X.X.X.X.X.X.X|..X X X.X X X.XdXzXQ.Q.Q.].'.dXdX X X_.@X'.dXQ.Q.Q.'.|..X X.X@X'.!.Q.Q.dX'. X.XdX.X.XdX.X'.].Q.n._..X.X.XxX XdX@XQ.Q.Q.zX.X.XdX].F.]..X@X'..X'..X`. XdXdX X'..X.X.X.X.X.X.X|.dX'.'.|.{.|.|.).(.`._.(.^.(.(.].~.(.[.XX{.n.K.n.!.T.XX~.~.~.~.T.[.n.n.b.!.XXXXT.T.~.U.T.Q.Z.L.T.T.T.(.T.[.T.!.[.~.(.T.[.].~.T.T.T.T.!.(.L./.T.F.= u C b.~.].N r r H U.(.P.P.Y.L.U.L.L.L.H.S.L.H.H.S.S.S.S.A.S.A.H.A.A.A.A.h.A.A.A.z.D.l.l.l.k.h.h.i.l.z.i.k.k.k.a.k.k.z.s.i.i.a.i.i.d.u.i.i.E i.u.i.i.i.a.z.u.i.f.i.z.a.a.a.a.a.g.a.d.d.g.z.g.a.a.H.l.g.z.l.J.A.D.A.H.G.G.z.G.A.z.H.A.z.H.z.h.h.j.A.A.H.h.S.A.g.A.k.D.a.z.z.z.k.A.f.J.l.z.A.h.h.H.H.H.G.G.D.U.H.D.L.U.P.L.L.U.~.U.I.T.T./.T.K.~.T.L.~.T.T.U.T.Y.T.Y.Y.T.U.T.T.XXU.U.U.T.T.[.L.T.T.T.T.T.~.T.T.T.Y.T.T.L.T.~.T.T.~.~.T.[.T.R.~.~.{.XX~.[.(.(.~.[.[.(.(.(.(./.^.(.(._.(._._.^._.`.|._._.(.`.`.|._.|.|.|.|.|.'.|.}. X}.|.}.}. X[.}.}.}.[._.(.{.|.[._.(.`.`.^.^._.(._._.[.{.|._.^.`.(.`.(.`.(.`._.^.|.|.{.(.|._.(.|._.}.|.}.|.|.|.|.|. X}.|._._.{._._. X_.(._._. X X|._.|.|._.|._._._._.'.{.(.|.|.(.`. X X_.'.(.{.`.'.(.`.(.^.(.(.T./.[.(./.!././.(.T.~.U.T.^.T.~.I.T.Y.L.U.L.L.L.U.F.L.H.L.H.L.H.H.H.W.A.A.A.A.A.A.A.A.h.g.Z.A.l.l.h.h.g.g.g.g.g.k.a.a.g.a.a.g.i.a.k.a.a.a.a.a.a.a.u.a.a.a.a.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.u.u.a.u.u.i.u.u.i.t.s.a.a.i.a.a.a.a.a.k.a.k.k.k.k.k.a.f.f.f.f.f.k.f.a.z.i.i.z.i.i.k.i.a.a.z.a.a.a.a.z.", "N N B N B N V N N B B N B M N N N N V N V B N B B N N B B B C N B B B B C C B B B B B B C B B Z C C N C C Z Z Z C Z Z Z Z Z Z Z Z L Z H Z Z Z Z G Z Z L Z D Z Z Z H D Z G Z D D Z G Z Z D Z D Z C D Z D D D Z D H Z Z H D Z D Z H Z Z H H Z Z Z Z L Z Z Z Z D H G Z Z Z D Z C B D Z Z C C C C Z D C C C Z C C C C Z C C D C C C C C C Z D C Z Z Z C Z Z Z Z Z Z D Z Z Z Z Z D Z Z Z Z C C Z Z A C T Z.S.A.Z.G.A.S.S.A.H.D.H.S.L.D.L.L.L.L.L.L.U.T.T.T.T.T.T.[.T.!.~././.^./.(.(.(.(.(.(.(.^.(.(./.(.(.!.^.(.[.`.^.(.^.(.|.`.(.`.(.(.{.^.(.(.(.(.E.^.~.^./.~./.~.~.~.!./.~.~.~.~.T.~.T.T./.T.T.T.U.T.T.U.P.U.U.U.U.P.P.U.U.U.P.P.Y.L.U.Y.P.P.P.P.Y.Y.U.Y.U.Y.T.P.T.U.T.U.U.Y.I.I.U.L.L.I.L.I.L.L.L.U.L.L.L.L.L.U.L.U.Y.T.T.T.T.T.T.T.~.T.T.T.T.T.U.T.Y.U.T.L.U.U.U.U.U.U.U.L.U.L.T.U.U.L.T.U.U.U.P.T.U.T.U.U.T.T.~.T.(.~./.~.~./.(.[.(./././././.(.~.(./.(.(.|.[.(._./.|.{.^.`.|._.|.|._.|.|. X X.X.X.X.X.X.X.XdX.XdX.XdXdXdXdX'.dXdXdXdXdXdX.X.X@X.XdX'..X|..X.X|..X|.|.|._._.'.|.|.|._.|.}.}.|.|.|.[.|.}.}.}.|.|.|.|..X|..X.X.X.X X X@X'..X.XdX.XzX.XzX.XdX'..X.X.X.X.X|..X.X|..X.X.X.X.X|. X|..X.X|..X'..X.X.X.X.X.X.X.X'.'..X.X.X.X.X.X.X.X.X.X.X.X.X.X.X X.X X X|.|. X.X.X.X'..X|.@X|.|. X'.|.|. X.X'..X.XdXdXdX'.dX.XdXzXdXzXdXdXdXzXzXdX.X.XdXdX.X.X.X.XdXdX.X'..X.X.X.X.X@XdX'.dX.XdXdX.X X.X'.|.'.|..X|.|.|._.(.|.^.(._.{.(.(.(./.~.(.T./.~.R.~.~.T.R.(./.~.R./.I.T.~.~.~.~./.T./.!.~.T.[.T.T.{.T.~./.~.~.~.^./.~.~.~.~.(.T.~.T.~.~.~.~.F.q : * q u u r > 0 b.T.U.T.T.Y.U.L.A.L.L.L.S.H.H.G.S.S.S.S.Z.A.A.A.A.A.A.A.A.A.h.A.h.h.h.z.h.h.k.h.g.k.a.g.a.k.f.a.z.i.i.g.i.a.i.a.i.a.u.u.u.i.i.i.i.i.i.a.a.a.i.i.i.k.a.k.d.k.a.g.a.f.f.f.f.j.h.a.z.j.z.A.A.H.h.H.h.H.h.A.Z.A.A.Z.G.A.G.G.S.h.h.A.G.A.l.z.H.z.h.h.h.h.h.h.S.A.h.h.h.h.l.h.z.G.G.G.A.K.D.L.A.L.L.U.H.P.P.T.~.U.U.U.Y.T.Y.T.Y.(.T.~.~.T.T.[.T.Y.T.~.T.T.T.T.L.T.Y.T.T.T.T.T.P.T.T.T.T.~.T.T.T.T.I.T.T.T.Y.Y.T.T.~.T.T.~.~.~.T.~.~.~.(.~.~.(././././.(.^.^.(.(.^.(.^.^.(.(.|._.|.^.|.|.|._._.|.|.|.'. X'. X|. X|.|.|.|._.}.}.}.}._.|.|.|.}.{.|._._.^.(.`.^.|.|._._.|.(.`.(.|.|._._._.(._.^.(.(.`.`.`.`.(.`.`.(.(._._._._.|. X X X X{.{..X X^. X{._.|.(.`.`.{.'._.@X^.`._.|._. X|.`._.|._._._.{._.|.`.|. X[. X X|.(.{.|._.^.{.(.(././.(.!.~.[.~.T.~./.~.(.[.T.T.P.U.T.T.T.H.H.L.S.L.S.G.G.L.S.H.G.G.A.S.S.A.A.A.h.A.h.h.A.h.h.h.h.h.h.k.k.g.g.j.g.f.f.f.k.z.k.i.k.i.i.a.a.a.i.i.i.i.i.u.a.a.i.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.i.i.a.i.i.a.i.a.s.z.d.k.f.f.f.f.z.f.a.k.k.a.z.a.g.z.f.z.a.k.a.i.k.a.a.a.k.a.a.a.a.k.", "B B C V B B V C B B V B V N N V N N N N B B B N N B V B B B B C B B B B B B B B N C C B B C B B C B C Z C C C Z Z Z C Z Z Z F A Z Z Z Z G Z Z H C Z G Z D Z D D D D Z Z D D D D H Z Z G Z Z Z D L Z D D D D D Z Z Z H G D G D D Z Z G Z G Z Z Z Z Z Z H Z Z G Z C Z Z Z Z Z Z Z G C Z C Z Z Z C B Z Z C Z C D C C C C C C C Z C C Z Z C C B Z C C Z A C C Z Z C B Z Z C Z Z B Z C Z Z Z Z B C Z C Y e.g.j.A.S.G.G.S.H.H.H.H.H.U.U.L.P.L.L.U.U.L.U.T.T.T.^.T.T.~.~.~.~././.(.(.(.(.(.(.(.(.[.!.(.(.(.(.(.{.[.`.^.^.`.`.(.{.(.^.`.(._.(.|.|.(.(./.[.^.(./.~./././.~././.T.~.~.~.!.^.~.^.T.T.T.T.T.T.T.U.Y.P.U.U.U.T.L.U.L.U.U.P.P.P.U.U.L.P.U.U.U.T.T.Y.U.Y.Y.T.T.T.U.Y.P.I.I.U.T.K.U.L.I.L.L.L.U.L.L.L.L.L.U.Y.L.U.P.T.U.P.T.T.T.T.T.T.T.T.U.T.T.T.U.U.T.U.U.U.L.I.I.L.U.K.U.L.U.L.U.Y.Y.T.S.U.U.P.P.P.T.~.T.T.T.T.T.T.~.~./.~.~.~.(.E./././././.~./.`./.(.~.^.(.(.(.|.(.{.{.^.{.(.|.|.`.|. X|. XdX.XdX.X|.dX@XdX.XdXdXdXdXdXdXxXdX'.dX X.XdX.XzX'.dX.X.X.X.X.X|.'.|.|.|.|.`.|.|.|.|.|.|.}.|.}.}._._.|.}.}. X}.}.|.|.|.|..X X|. X X.X X.XdX.X.X XzX.X.X.XdX.X@X.X.X.X.X.X.X.X.X.X.X.X X|. X.X.X.X.X|..X.X.X.X.X.X.X.XdX.X.X.X.XdX.X.X.X.X.XxX.X.X.X.X.XzX.X|.|..X X|. XdX.X.X.X.X.X.X.X|.|.'. X X X.X X X XdX'.dX X@XdXdX'.dX.XzX.X@X'.'.zX.X.XzXzX.X.X.XdX.XzX.X'. X.X.X.X.XdXdX XdX@X'..XdX X.X.X.X|._.|.|._.|.'.|.^.|./.(.(./.^.(.(./.(.~.[.(./.~./.R.T.[.~.I.I.R.~.T.^.T.T.!.~.~.T././.T.I.~.T.(.~.T.T.(.R.~.~.U.(.Y.T.~.~.T.T.T.~./.~.T.T.~.~.U y > 0 y : > 0 U U.T.U.L.T.I.L.L.P.L.L.S.S.D.H.G.G.S.S.S.S.h.A.A.A.A.A.h.A.A.A.A.h.A.A.f.k.k.k.k.g.f.g.a.g.i.g.a.i.g.a.a.a.a.a.i.i.t.u.i.u.i.i.u.i.i.i.i.i.a.a.k.d.a.k.d.k.d.g.a.f.f.f.a.f.k.z.z.z.k.h.A.z.z.S.z.A.A.S.S.z.A.G.A.z.G.A.h.S.S.H.G.A.D.G.z.A.A.H.h.g.g.A.h.Z.z.l.A.A.h.D.D.z.Z.A.A.G.A.U.D.P.D.L.L.P.U.D.T.U.Y.T.T.P.T.~.Y.T.Y.T.T.T.~.T.L.T.T.T.U.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.!.Y.T.T.T.T.T.T.Y.Y.T./.T.~.~.T.~.~.~.~.~.~.~./.(./././.(./.(.(.(.(.`.(.(.`.^.`._._._.|.(._._._._.|.{.|.|.|. X|.|..X|.|.|. X_.|.|.}.|.|.|._.|.^.}._._.|.|.|._.|._._.^.^.^.(.`.^.|.(.(.^._._._._._.`.`.`.^.|.(.(.(.`.^.|._._._.'.[.n.c.[ [ b.b.'.|..X`._. X^.^.`.|./._.|.].F.`._.(.|.[.(.(.`.^.|._.|._.{._.b.[ b.{.{.~.!.!.[.(.|.^.^.(.(.(.b.Z [ ~.~.(.F.) A L b.T.[.T [ [ T [ T T n.L.A.U Z A U Z.L.S.H.H.G.S.S.A.A.g.A.j.A.A.h.h.h.A.h.h.h.h.k.g.g.g.a.a.g.g.i.i.k.f.i.i.f.a.a.i.a.i.i.i.i.a.i.u.a.u.u.u.u.t.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.i.i.a.a.i.i.a.a.u.i.i.i.z.f.f.d.i.a.a.k.k.g.g.a.a.i.i.k.a.k.a.a.a.a.k.a.a.a.k.i.z.", "B V N N N N N N B B B N V N N N N N N V B N V C B C N N B N B V B Z B N C B B B C N C N C N B A C C C C Z C Z C C Z C Z Z Z Z Z Z Z Z Z Z Z Z L Z H Z Z Z Z H Z D D D D D D D D Z D Z Z D Z Z D D D D D D D D Z Z Z Z Z D D D D Z Z Z G Z Z Z L Z G Z Z Z H Z Z Z Z Z Z Z Z Z Z C Z C D C Z C Z C C Z C D C C C Z C C F C C C C C C B C C Z C Z F C Z Z C Z Z Z Z Z D Z B Z C Z Z C B D A Z Z C F G e.A.A.G.A.A.A.S.H.H.H.H.U.S.L.L.P.L.Y.U.Y.T.U.U.T.T.T.T.~.T.~.~.!././././.^.(.(.(.(.(./.{.^.(.!.(.(.(.].(.(.(.`.^.`.|._.(._._.{._.^.^.(.(.(.(./.!././././././.(././.~.~.~.~.~.T.T.[.~.T.T.T.U.P.U.P.P.P.U.L.P.L.U.U.U.L.P.P.U.L.U.U.Y.P.U.U.U.T.U.T.T.T.P.T.T.T.U.T.U.T.T.U.L.U.L.L.L.U.L.L.U.U.L.L.L.L.L.U.U.U.Y.U.P.T.T.T.T.T.T.[.T.T.T.T.U.T.U.L.U.U.L.U.L.Y.U.U.T.U.U.U.U.U.T.U.~.T.T.U.U.L.T.U.T.T.T.Y.T.P.~.T.~.[.~.~.^.^.!.(././.~./.(.~.!.(.^._.(._.(.`./.(.|.(.`.(. X{.|.|.|.|.|.@X X@X.XdX.X.X'.@XdX.X.XdXnX.X.XxX'.vXdXdXdXzX.X.X.XdX'.dX.X.X.X X.X.X|..X|.|.|.|.|.|.|.|.}.}.}.}.|. X}.}.}.}.}.}.|.|.|..X|. X|.|..X.X.X.X.X.X@XdX'..X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X X'. X.X|..X.X.X.X.X.X'..X.X.X.X X.X.X.X.X.X.X.XzX.X.X.X.X@X.X.X'..X.X.X.X.X|..X X|. X X X.X.X|..X X X.X.X.X(..X X.X@X.X.X X'..X.X XdXdXdX.X'.@X.XdXcX.XdXdX.XzX.X.XdX.XdX.X.X@X.X'.%XdX.X'..X.X'.dXdXdX.X.X.X|.(..X.X_.|.|._.(.{.^.|.).(.`.`.(.].(././.(.~.!.~.~.(.R.~.~.R./.~.E.T.~.~.~.~.~.T.~./.T.U.[.{.T.~.T.~.T.T.~.T.T.~././.Y.^.~.~.[.T.~.T.T.T.~.T.~.T.~.b.` Y C H _ b.K.~.I.T.Y.T.L.L.U.L.L.L.L.A.L.H.D.S.S.A.S.Z.A.A.A.A.h.h.A.g.G.A.g.A.h.h.h.h.h.z.f.k.f.k.a.k.f.f.a.a.a.a.a.a.s.a.i.a.u.i.u.i.u.u.u.i.u.i.i.i.i.a.a.z.i.i.k.a.k.i.g.s.k.f.f.k.z.g.k.g.S.A.A.z.z.A.G.z.G.Z.L.H.D.z.A.D.A.A.G.A.A.D.A.l.A.h.h.A.h.h.h.D.A.h.h.z.h.h.A.h.G.g.l.A.G.h.S.H.A.P.P.F.P.L.L.L.L.T.Y.P.Y.T.T.(.T.~.!.].~./.T.~.L.[.Y.T.T./.U.T.T.T.T.T.T.T.T.T.T.U.T.T.T.T.I.Y.T.U.T.T.T.T.T.T.Y.T.~.T.T.T.Y.T.~.~.~.~.~.~.~.~./.~.~.~./.(./.(.(.^.(.(._.(.`.|.`.^.|._._.|._.|.|. X_.|.`.|.'.'.|. X.X|.|. X{.|.|.}. X|.}._.|.}.{.}.}.^._._._._.^.{.|.(.|.|.(.|.|.(.|./.|._.(._._._.(.`.(.`.|.^.`._._._.|._._._._.{.D q r 0 = r K ].|.`.|.|.|.(.(._.|.(.) y [ X|.`.|.|._.{.}._./..X^.|.|._.P = L X!.H q n. X(.(.`.(.(.].b.u > Z ~.~.n.= ; u q * b.Y.L q * r 0 * y b.n.q > u u = A F.H.S.H.A.A.A.A.A.h.h.h.h.h.h.l.h.l.h.h.h.k.i.g.i.g.g.f.g.a.a.i.d.i.i.a.a.a.a.a.i.a.u.i.u.a.i.i.i.u.u.u.u.u.t.u.u.u.u.u.u.E u.u.u.t.u.u.u.u.u.u.i.i.a.a.i.a.a.a.a.a.z.d.a.a.a.i.i.i.k.a.k.a.k.i.g.k.i.z.z.k.a.a.a.a.k.a.a.a.i.a.k.i.a.", "B B C V C C C N B B B B V N C N N N N B B B V B B N C V N C N C B B B Z B B B C N C N C B D Z B C C C C C C A C Z Z Z Z Z Z Z Z Z G Z Z Z G Z Z Z Z Z Z H Z Z H D D D Z D D D D Z D D G D D H D D D D D D Z Z D Z H Z Z G Z D D Z Z Z L Z Z Z Z Z Z G Z D Z Z H Z G D Z Z Z C B Z C Z B A C C C Z C C C B Z Z C C C C C C C F D C C C D Z C C C C Z Z C Z Z F B Z C Z C F Z Z D Z Z Z A Z C Z C Z C T W.h.A.S.A.S.S.Z.H.H.H.S.L.S.L.L.U.L.U.L.P.U.T.T.T.T.T.T.T.~.T.T.^./././././.[.(.(./.(././.^.^.`.[.(.(.[.{.(.(.(.(.^._._._.|.(._.^.^.(.(.|.(.(././././.{./.(.R.!./.~.~.!.~.~.~.T.T.T.T.T.T.P.T.Y.U.U.Y.L.Y.U.L.L.L.U.L.L.P.Y.L.L.L.L.U.P.U.U.T.T.U.T.T.T.T.U.I.U.I.I.T.U.U.U.U.I.L.L.L.U.U.L.U.U.U.L.P.Y.U.T.T.U.Y.T.T.T.T.T.T.T.T.T.T.T.T.U.U.L.T.L.Y.L.L.L.L.L.U.L.L.U.L.Y.U.T.U.H.T.L.T.!.P.T.U.T.T.T.~.~.~.T.~.~.~.~.(.!.^.(.!.(./.(.~.~.{.^.~.~.|.(.|.(.`.`.(.(.(.(.'. X|..X|..X.X.XdX'..X.XdX X XfX'.dX.XdX.X XdXdX.XdXdX'. X'.dX.X.X'..X.X.X.X.X.X.X|..X'.|.'. X|.|.|.|.|.|.|.}.}.}._.|. X}.|.}.}. X|. X|.|.|.'..X|. X'..X.XdXdX.X.X.X#X.X.XdX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X'.@XdX.X.X@X.X XxX.X.XzXzXzX.XdX.X.XzX.X.X.X.X.X.X@X_. X X X X X@X|..X X X.X|.|.@X|.|.|..X X X.X.X.XdX.XdX XdXdXdXfXdX.X.X.X XfXdX.X.XzX@X.X@X.X.XdX].dXzX.X.X@X'..X'..XfX X.X.X.X@X X X X|..X|._.|.{.^._.{.(.^.(.(.).(.(.!.~.(.^./././.T.(./.~.(.~.T.(.~.~.T.[.T.T.~./.T.~.Y.^.!.T.T.(.T.~.T.U.(.T./.R./.!.T.~.~.T.Y.~.T.~.~.T.U.XXT.T.~.T.^.Y.T.Y.T.I.I.T.I.I.L.U.A.L.L.D.L.P.S.H.H.G.S.G.A.S.A.A.A.A.A.A.A.A.A.A.A.h.A.h.g.k.k.g.k.f.k.k.z.i.i.a.i.a.a.a.a.i.a.a.a.u.a.u.i.u.a.u.i.i.u.i.i.i.i.a.a.a.a.i.i.k.d.g.a.f.f.f.f.z.s.f.T Y U G T Y Z.G.g.A.G.h.z.l.D.S.A.S.G.H.G.G.G.A.A.A.Z.e.G.D.h.H.A.A.z.h.A.z.D.h.A.A.A.g.Z.G.S.H.H.S.H.T B i U b.L.U.L.[ J S T L.U.T.T.Y.F.Z Z T.~.Y.Y.[ Z Z [ F.~.T.T.~.T.T.T.Y.T.T.U.T.U.T.P.I.T.Y.T.T.T.T.T.Y.I.!.T.Y.Y.~.T.~.~.T.~.~.~.~.~.~.~./././.(.).]./.(./.(._.(.(.(.|.^.|.^._._._._.|.{._._.|.|.|._.|.|..X X|.'. X|._.|.|._.}.}.|.}._.|.}.}.}.}._.|.|.{._.^.`.`._.^./.|.(.(.`.^.{.|.(._._.(.(._.(.|.^.(.(.(.^.{.(.^._._._.{. XS ; : [ ) ; ; Y (.'._.b.[ [ Y./.^.F.y : _ F.{.n.n.!.[ F.`.~.b.[ b.T.|.(.Q.n.Q.!.[ : ; [ ].].(.[.~.].A q = e S /.[.I 0 P !.F.0 0 !.[ T [ ` u > Z F.T : y G.F.y : e.S.G.S.H.A.S.A.z.S.h.h.h.h.h.z.h.z.z.z.k.k.x.a.j.a.a.a.a.a.a.z.i.a.i.a.a.a.i.a.u.u.a.u.u.u.a.i.i.u.t.t.p.t.p.t.u.t.u.t.u.u.u.t.t.u.u.u.t.u.u.u.u.i.a.i.a.a.a.i.a.a.a.k.a.a.a.k.d.i.a.a.a.g.a.a.d.a.k.i.a.i.k.k.a.a.a.a.a.k.i.a.a.a.a.", "C N C C C V N C B B N N M N V N V M M M C N N N N B V C C N C V Z N Z B C B B B C N C N C C C C C C Z C C Z C Z V Z Z Z Z Z Z A Z Z Z H D Z D D H Z D D D D L Z Z D D D D D D D Z Z Z H D Z D D D D D A D D D D Z L Z Z D D D Z H G Z H Z Z Z Z Z Z Z Z Z G Z Z Z Z D C Z D G B C Z Z C Z Z C Z C Z C D C Z D B C C C Z C C C C C Z C C D C C Z C Z Z Z A Z D Z Z Z B Z D Z D Z Z B F C Z A Z A Z Z T Z.S.A.A.A.S.S.S.H.H.H.J.L.L.L.L.Y.U.U.L.P.U.U.T.T.Y.T.T.~.~.~.~.~.~.^.(./.(./.(.^.~.[.(.[.(.[.(.[.{.(.^.(.(.(./.|.|._.|.^._._._.`._.^.(.(.(.(.(././././././././.~.~.~.~.~.~.T.T.T.T.T.T.T.P.T.L.U.P.U.L.U.U.L.L.L.L.L.U.P.L.L.L.U.P.P.P.P.P.T.P.T.P.T.P.Y.U.I.I.I.T.U.T.T.Y.P.L.K.L.K.L.L.Y.U.K.L.L.U.P.P.U.T.T.P.T.T.T.T.T.T.T.T.T.T.P.T.Y.U.P.P.Y.L.L.U.L.U.K.I.R.L.U.U.[ T T [ T T T [ Z.Y.T.T.Y.Y.T.T.Z.[ T ~.T.T.~.~.!./.~./.[.(.(.{.(./.{.(._.^.{.[.^.{.^._.^..X^.J H Q.{..X'.[ S Z [ hXdXdXdXm._ L ] '.cX].b.b.[ b.b.[ n.dXzX.X.X.X.X.XdX.X'.'.|..X.X.X.X.X.X.X|.|..X|.|.|.|._._.|.|.}.|.}.}.}.}.}._.|.|.|. X X|.'..X.X.X.X.X.XdX.X.XdX X.X.X.X.X.X.XdX.X.X.X.X.X@X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XzX.X.XzXdX.XdX.X.X.XzX.X.X.X.X.X.X.X.X.X.X.X.X|.].b.[ [ b.[ b.].'.].[ n.!.`..X`.|.|.|.|..X.X X.XdXdX'..X'.].b.b.].dXdXdXdXdX@XdXdXdXdX@XdX.X.X.X'.n.b.[ '.@X.X.X.X@X'.|..X.X.X.X.X XdX.X|. X_.'.|.|.`.(.{.F.[ b.{.~.^./.(.^.(./.[.{.~./.T.T.{./.(.T.~.!.b.F Z ~ b.T.T.T.b.G F I F.~.T.T.P.~.b.G D F.L.[ [ T T [ ` b.~.T.~.U.XXU.T.T.[.T.Y.[.T.T.~.P.T.~.U.L.L.S.L.G.L.L.L.H.L.H.H.H.S.G.S.S.A.A.A.A.A.A.A.A.A.A.A.h.A.h.l.k.k.k.f.g.k.k.i.k.k.i.a.a.a.i.a.i.a.a.i.i.u.u.u.i.u.i.i.u.u.i.i.i.u.i.a.a.a.a.k.a.k.d.f.i.g.a.a.g.f.j.g.t = 0 q r r q Z.H.Z.g.H.z.G.Z.D.D.G.H.l.G.z.A.z.Z.G q T l.A.A.G.l.h.z.h.H.z.h.D.D.A.z.z.D.A.A.G.S.L.Z = y u 0 = F.R.S q u u = L ~.U.!.F.A ; r T.~.T.A = A u q U ~.T.T.T.T.T.T.T.T.T.T.T.U.Y.T.U.U.T.T.T.T.T.U.T.Y.Y.~.Y.I.T.T.U.T.~.R.T.~.~.~.E.^.~././.!./.(.(.(.(.(.(._._.(./.{.|.(._.|.(.`.|._.|.|.|.|._.'..X|.|.|.'. X'.|.|._.}.}.|.}.|. X|.}.}.}._.|.[._._.`.{.`.}.}.}.}._._.{._.|./.|.{.|.|.^.(.(.(.(.(.^.`.^.`.`.|.{.|._._._.{.`.H ; r '.'.u * A X~.u : t 0 q b.'.* ; e 0 H F.: ; Z > [ Q.u = = * t Q.{.P * ) n.= : > q T |._.[.^.n.q Z A 0 F ~.^.H 0 b.XXP.0 ; F.T.Y.U.b.* q A.U.S.h.Z.h.e.: y Z.h.z.A.z.S.h.S.h.h.h.g.g.g.k.k.h.h.k.k.k.k.k.f.f.k.a.a.a.i.i.i.i.i.i.i.i.i.i.u.i.i.u.u.u.u.u.u.t.i.t.u.t.t.t.u.t.u.u.u.t.r.i.r.u.u.t.t.u.t.u.u.u.i.u.i.a.a.i.a.a.a.a.i.a.a.a.a.a.a.a.i.i.a.a.a.a.a.a.a.k.k.a.a.a.a.a.a.k.d.k.a.d.a.a.", "N C B V C N C N C B C C A N B V B Z B V V N C N C V N C N C N C N C N N B C B B N B C C C C C C Z A C C D B B A F Z C Z Z Z Z Z G Z Z L Z Z D D Z H D D Z D Z D Z D Z D D D Z D H Z Z Z D Z Z D D D D D D D D D G Z Z G Z Z D D Z Z Z Z Z Z Z U L Z Z H D Z Z Z G Z Z Z Z Z Z Z F Z Z D Z C Z C Z Z Z B C C C Z B Z C C B Z B D C C Z C F C F C C C A C Z C Z C Z Z F Z Z Z B Z Z D B Z D C C Z C C U j.j.A.A.A.S.S.S.S.A.H.S.P.L.U.L.L.L.U.L.Y.T.U.U.T.~.T.~.T.~.T.~.~.~.~././.(././././.(.(.(.^.`.(.(.(.(.(.(.(.^.(.^.|._._.|.^._.{.`.(.^.`.^.(./.(.(.(.(./././.(././.~.!.Y.~.T.T.T.~.T.T.T.U.T.T.U.U.P.U.P.P.P.P.P.L.H.L.P.L.U.P.L.P.L.P.P.L.P.P.P.T.T.Y.P.P.U.U.Y.I.U.Y.I.U.P.P.P.P.L.Y.U.L.U.L.T.L.Y.U.T.U.U.T.P.U.P.T.T.T.~.T.T.T.T.T.Y.P.P.T.P.L.U.L.L.L.L.L.H.U.I.U.U.U.S : : * e t r > T Y.U.U.R.~.U.T.[ = = !.[.~.(./././.~.~.(.{./.~.^././.(.!.{.).{.|._.|.`.`.].P : * Q.|.|.S ; u S > A '.dXb.q y A = y ].Q.q r * : y r ) dXzX.X.X X'..X.X.XdX.X.X.X.X.X'.|..X X.X X X|. X'.|.|.|._.|.}.|.}. X}.}.|._.|.|.|.|.|..X.X.X.X X@XdX X.XxX.X@XdX.X.XzXzX.X.X.X.X.X.X.X'..X.XzX@XdX.XdX.X.X.X.X.X.XdX.X X@X.X.X@X'..XdXdXdX'.zXzX'.zXzXzXzX.X.XdXdX.X.X.X.Xn.y y t 0 * : u ].Q.y = m..X.X'.'.{.@X X|.|..X.XdXdX X XxXQ.; * Q. XdXdX X@X'. X'..X.X.X.X.X.XdXdXJ : = dX.XdX'.'. X.X X|.@X XdX'..X.XdX@X(. X_. X].`. X`.[ q : {.~.(./.|.~./.{.(./.~.(.{.~.~.T.^.(.^.` = q A : = b.!.` 0 y A 0 0 ].T.~.U.b.y = : n.n.y : y y 0 = U Y.P.XXU.T.T.~.T.P.T.~.[.T.T.T.T.T.P.U.T.L.T.L.L.L.S.L.L.H.H.H.H.S.G.S.S.S.A.A.A.A.A.A.A.A.A.A.A.h.A.h.l.h.k.k.f.g.i.f.f.a.d.a.a.a.a.a.a.a.a.i.i.a.u.a.u.i.u.u.i.u.u.i.i.i.i.a.i.a.a.a.a.a.k.a.g.a.g.g.a.f.j.Z.> * u L y r r e.z.Z.Z.T T [ A.z.A.Z.T Y T b.H.Z.b.= y Z b.A.H.e.T T b.h.D.A.e.T F.T T Z.A.D.H.A.H.b.q q n.L.u t T b.y * F.].0 = n.(.H ; q r r ~./.n.y * ].].> 0 n.~.T.T.~.T.T.T.T.T.U.U.Y.U.P.U.T.U.U.T.T.T.T.T.T.~.T.T.T.~.T.~.~.T.~.~.~.R.(././.^.^./.^./././.(.).`.(.(.(._./.|.(.`.^.`.|._._.|.|.|.|. X|..X'.|. X.X|. X|.|.|. X|.}.}.}.}.}.}.}.}._.|.(._.(.^.|._.|.}.|.}.}.|._.|.^._.(./.(.^.^.(.(.(.(.(.(.(.(.(.(.(.^.(.(.`.(.{._.`.I ; * _.`.P : > (.b.q y ].[ q q (.b.r ; S b.n.; y A b.'.S : P .XI ; D ^.Z y Z !.P q e I K.[.!.~.{.L.n.].S e K T.~.[ y u [ I r y [ U.U.L.N q b.XXS.L.XXZ.Y w * U h.S.D.A.h.h.A.l.h.h.h.g.g.g.k.k.k.k.k.k.f.f.i.a.f.a.a.a.i.i.i.i.i.i.u.u.i.i.a.i.u.u.u.u.u.u.u.t.i.u.t.t.p.u.t.t.u.t.r.u.t.i.E t.t.u.E t.u.u.u.u.u.u.i.i.i.i.i.a.a.u.a.i.a.a.i.i.i.a.i.i.i.a.a.a.a.k.a.k.a.a.i.a.a.a.a.a.k.i.a.a.a.a.a.", "N C B C N C V C N C B B N C V C C V V C N C A B C N B V C V C N C N N C C Z B Z N C C C C C C Z C C C Z A C Z Z C D Z C Z Z Z Z Z Z H Z G Z D D D H Z D H Z L Z Z Z D D D D D D Z Z D D D D D D D D D D Z D Z L L Z Z L H Z Z L G Z Z H Z Z Z Z Z Z G Z Z D D Z Z L Z Z Z Z Z F Z Z Z B Z C Z Z Z C C D Z C Z C C C D F C C C C V C C C C Z C C Z A Z Z C Z Z Z Z C Z D C Z Z C C Z A Z Z C C C Z Z T e.A.A.A.A.A.S.S.H.K.H.L.H.S.L.L.L.L.U.P.U.U.T.T.T.T.T.T.T.Y.T.T.T.Y.~.~.~.~.(././.^./.~.(.(.(.(._.~.^.!.^.(._.(.`.^.`.(.|.`.`.|.(.|.`.{._.(.(.(.^.(.(./.(./.(.(././.~.~.R.[.T.T.Y.T.T.U.T.Y.Y.U.L.P.U.U.L.L.U.P.P.P.L.P.P.L.U.P.P.P.L.P.P.P.U.P.P.L.U.L.U.T.I.I.R.T.U.Y.T.Y.P.Y.P.U.U.L.R.U.U.T.L.U.T.U.T.T.U.T.T.T.T.T.T.Y.~.Y.T.T.T.P.Y.U.U.L.P.L.U.L.U.L.U.L.U.U.U.U.U.b.T ` 0 e u Y T Z.F.b.[ T F.~.Y.[ 0 r (.F.n.b.].n.F.K.(.T.n.F.!.~.].b.` n.{.^.^.(.(.(.|.b.y r 0 * Q. X].* r '.dXJ q b.dXu : n.fX[ [ Q.].b.[ m._ ; r b.dX.X.X.X.X@X.X.X.X.X.X.X.X.X'..X.X.X X|. X|..X.X|. X|.|.|.}.}.}. X}.}.}.}. X_.|.'.|.|..X|.'..XdX.X.XdXdX@X.X.XdX.X.X.X.X.XdX.X.X.X.X.X.XdX'..X'..XdX.XdX.X.X@X.XdX.X'..X.X.XzX.X.XcX'.dXdX.X.XzXdX.XdX'..X.X#X'..X.X X.X Xm.y y K [ _ : : b..XQ.Q.^..X|.!.[ b.Q. X@X.X.X.X.X@X'.b.b.m.* e Q.dXdXQ.[ b.n.dXdXdX'.zX.XdX.X.X'.P r = dX'.].n.[ [ Q.|.'.].Q.].].b.b.].`. X.Xb.b.b.F.{._.].n.F.[.Y.F.Q.n.[ T.E.Q.[ T n.~.^./.(././.!.M q ` {.` : G ~.* : b.!.A > T ^.Y.F.q > * * b.G.T [ [ U : q [ !.T.T.[.T.T.P.T.T.T.U.U.T.T.T.T.Y.U.U.L.S.T.L.L.L.H.H.L.L.G.S.H.l.S.S.S.A.A.A.h.A.A.h.A.A.A.A.h.A.l.l.l.g.k.g.k.f.f.i.k.i.i.a.i.a.i.i.a.i.i.i.i.i.i.u.u.u.i.i.u.i.u.u.u.i.u.i.i.i.a.k.a.a.i.d.g.f.g.a.g.i.z.x.> = u Y A * Z z.D.Y q q q 0 C S.F.C > u q > T Z.q * r q Z l.G > 0 0 y I S.b.* = Z q y q F.D.S.A.H.L.Z.e.D.Z.y e [ T y A L.J.J > b.].y A J q 0 ~.~.[ * A ~.T.S * b.~.T.T.(.U.T.T.P.P.T.P.P.L.T.P.P.L.Y.T.T.T.T.~.T.~.T.T.U.~.T.T.~.~.~.R.~././././././.(./.(.(.(.(./.(._._._._.|.`.^.(.|.|.|.`.|.|.|.|..X'. X X|. X X'. X|. X_.|.|.}.}.}. X}.}.}.}._.}.|._._._._.`.`._.}.}.}.}._.{.|._.^.|.^.|.(.(.(.`.(._.(.^.(.(.^.(.(.(.(.(.|.(._.|.`.S r ; _. XH : y '.Z > y S H > y n.].y ; [ !.F.= r F.`.(.q ; [ (.Y r > ^.S : L {.Q.0 * n.[./.{.~.~././.~.Z e S !.T.!.Z 0 q Z * y Z.Y.L.[ > B U.P.U.D.A.I * * T S.S.A.A.h.h.A.h.l.l.z.g.g.g.f.h.f.g.h.k.k.f.k.i.a.f.a.a.a.i.i.i.i.u.i.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.t.r.t.t.t.t.u.t.p.t.E i.u.t.t.u.u.t.u.t.u.u.a.u.u.a.u.i.a.a.u.a.u.i.i.i.i.i.i.i.i.a.i.i.i.a.i.a.a.a.a.z.d.a.a.a.a.a.a.a.a.k.i.a.a.", "C N C N C N C N C B B B B N C N V M C N C V M N C C N C N C N C N A C C N B N N C C C C Z B Z C Z C D C C Z C Z C Z Z Z Z D F A Z Z Z H Z G Z D Z Z S H Z H Z H Z Z D D Z D D D G D Z H Z H D D D D D D Z L Z Z Z Z G Z Z H Z Z Z Z Z Z G H Z Z H Z H G D Z D G Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z C D B Z C Z C C Z D C C C Z C C C F V C C C C B D Z B C Z C Z D B Z C Z B Z Z Z A Z C Z C Z C Z A Z Z G T A.g.A.A.Z.A.S.S.G.H.H.L.L.L.L.L.L.P.P.U.Y.T.T.Y.Y.T.T.~.T.T.~.E.R.~.~.~.(.~./././.(.(.{.(.[.(.!.`.[.^.`.(.(.(.(.^.`.{./.|._.^.`.|.(.(._.`.^.`.(.(./.{.(./.^./././.~./.R.T.T.T.[.U.T.T.Y.T.L.U.U.P.U.L.L.L.L.L.L.L.P.P.P.L.L.L.L.L.L.P.U.Y.P.P.P.U.Y.L.L.U.Y.L.T.I.U.U.I.P.P.P.L.L.Y.L.U.L.U.L.T.U.U.T.T.T.T.T.T.T.T.T.[.T.T.Y.T.T.P.P.P.U.U.U.U.P.L.L.L.L.L.U.K.U.U.U.U.G.T.].y e H T.L.F.C = > 0 q [ ^.T r 0 [ q * A Y.L t S (.F.= > Q.b.0 0 0 ; S !.`.(.|.{.|.Z y _ ; : Q..XQ.r : dX%X[ e I ].> r F.P ) Q.zX.XdX.XdXC y [ dX X@X.X.X.XdX.X.X.X.X.X.X.X.X.X.X.X.X.X|..X'..X|..X X.X|.|. X}.}.}. X}. X|.|.|.|.|. X X.X.X.X'. XdXdX.X.X.XdXdX.XdX.X.XzXzX'.zX@X'.zX'.dX.XzX.X.XzX.X.X@X.X.X'.dX'..XdX'.zX'..XzX.XzX.X.XdXzXzX'.zX.X.X.X.X.X.X.X.X.X.X.X.XQ.y e U Q.[ : = [ n.0 0 Q.dX[ * y : t _ '..X X.X.X].A 0 ; > e : ]..X` ; y > : [ dX.XdX'..X.X.X.X XP : * fX].y y y ; * b.'.[ q y y > 0 I zX].S y > ; : b. X` q : (.[ = Z y > n.b.: : y * H ].^.~./.~.(.!.n.T.F.Z e U n.r = /.U.[ ; P Y.P.D y ) 0 r n.P.T.~.].B 0 ` T.Y.P.U.E.T.U.T.T.T.T.T.T.T.T.U.T.L.U.L.L.U.U.L.L.L.L.H.L.S.H.H.H.G.H.S.S.S.A.A.A.A.A.A.A.A.A.A.A.z.A.l.l.g.g.f.f.f.k.k.i.i.z.a.i.a.i.i.i.a.i.i.i.i.u.u.a.i.u.u.u.i.u.i.u.u.u.u.i.i.i.a.a.a.k.i.i.i.j.g.g.a.g.s.> 0 0 q > ; U h.z.q 0 T b.y 0 T T q 0 Y T [ Z.A.U y * A [ i.t e e.e.r r e.e.0 q H ) r 0 e.D.H.H.S.L.H.U.n.q r Z Y.T * S Y.XXS y T ~.e.!.` > r T.|.T q L ~.[.u q [ T.T.T.T.~.T.T.T.P.P.U.L.T.U.T.P.P.P.U.T.T.T.Y.T.Y.T.~.~.U.T.T.T.~.~.~.~./././././././.(./.(.(.(.(.(.(._._.(.(.`.|.`.`.(._.`.|.|.|.|.|.|.|..X.X|..X|. X|.|.|._. X}.}.}.}.}.}._.}._._._._.|._._._.`.{.}.}.|._.|.|.|.^.`.(.(.(.(.(.[.^.^.|.[.(.(.(.{.(.{.(._.(.^.|.^.(. XZ : : {.Q.* e A '.S 0 u b.[ [ [ I.(.0 r [ ^.F.y r n._.`.= r [ (.b.; 0 ].A : S (.n.: q n././.[./.^.(.~.(.Z * H Y.~.!.^.b.b.F.0 ; U.U.T.Z : T T.S.L.D.Y r y e.l.D.S.j.A.h.A.A.h.l.l.h.k.h.g.h.f.f.k.k.k.f.f.k.z.a.a.a.a.a.i.i.u.i.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.t.t.t.r.u.t.t.t.t.t.t.t.u.t.t.u.t.t.u.u.t.t.u.u.u.u.u.u.u.u.t.u.a.u.a.i.i.i.i.i.u.i.i.i.i.i.i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.", "B B B C N C C B C V C B C B C B V B C N C C N V B C N B C N C B B C B C C N C C C C C C C C Z C Z C A Z Z C Z Z Z Z Z Z C Z Z F D Z D Z D D D D Z H H Z H H H Z L H Z Z Z Z Z Z J H Z Z D D D D H Z Z Z J Z S H Z Z H Z Z D Z Z Z Z Z Z L Z G Z D Z Z D Z D Z Z Z Z Z G F Z Z Z Z Z Z Z V C Z D Z Z C B D A C C C Z C Z C C C C C C Z C Z C C C C C C Z C Z C C Z B D Z Z Z C Z Z Z B Z C Z A C C Z C T h.h.G.h.A.G.A.G.H.H.L.G.L.L.L.L.P.U.U.Y.Y.T.T.T.T.U.T.T.T.T.T.~.~.~.T.T.~.~.~.(.(./.(.(.(.(.(.(.(././.(.(.(.(.(.(.(.(.|._._.|._._._._._.|._._.^.`.(.(.(.(.(././././.~.~.T.T.T.~.T.T.U.P.U.L.U.L.U.L.L.L.P.P.D.P.P.P.P.P.L.P.P.P.L.L.P.P.L.L.Y.U.U.L.U.L.U.U.Y.L.P.P.Y.Y.P.Y.Y.U.U.U.L.P.P.P.P.P.P.P.T.P.T.T.T.T.T.T.T.T.T.T.T.T.T.U.Y.U.L.Y.U.Y.L.U.L.L.U.K.L.U.U.L.U.T.U.U.U.> e S T.U.[ : r L.[ * y K.[ t ; y e A !.~.F.= e ].b.= u /.q e [ !.y e b./.^.(.`./.n.^.Q.* 0 Q. X|.y y [ n.t ; H ].; ; y S r q Q.dX.XzXn.> I dXdX'..X.XdX X.X.X.X.X.X.XdX.X.X.X.X.X.X.X.X.X'..X.X.X X`._.|.}.}.|.|.|. X|.|._.|. X_.'. X.X X.X.X@XdX.XdXdXdXxX@XzXzX.X.X'..XdXdX.X.XzX'.zXdX.X.X.XzX.X.X.X.X.X.XdX.XdXdXdX@XzX.X.X.XzX.XzXzXzXdX.XzX'.zX'.dX@X.X.X.X.X.X'..XQ.: > e 0 : e y _.Q.0 : Q.Q.; e Q.Q.> : Q.'.dXdXdXb.> : Q.b.e e Q.Q.0 q Q.Q.y : ]..X'.dX X|..X|.@XS : y dXn.[ J ].` * : '.b.r r b.I r : dX[ > u ].b.= y {.[ : 0 `.` r r Y n..X: y [ ^.y : [ (./././.(./.R.K.Z > y Z.n.: 0 U.Y.[ > G P.i q T n.= y b.T.T.U.[ : Z T.T.T.T.T.U.T.T.U.U.T.T.P.P.T.T.U.P.Y.P.U.L.L.L.L.H.L.H.H.H.L.G.H.H.G.G.H.S.A.A.W.A.A.A.Z.A.A.A.A.A.h.D.z.k.h.z.k.k.f.a.f.a.z.f.g.k.i.i.i.i.u.i.i.i.i.u.i.u.u.u.u.u.i.u.i.u.t.i.i.u.i.i.a.a.d.z.k.g.i.a.k.k.g.k.j.0 e u T C > q U b.= q e.Z.Z : Z Z.q * q r y e.A.S.= y T Z.T ; * H.z.r e T n.* 0 b.e.; = b.Z.H.U.H.L.U.` 0 ; G Y.U.T > Z U.T.S = [ [.XX~.b.= ; T.(.[ q S ~.T.S q T T.~.U.~.T.T.T.T.T.P.P.P.P.P.U.Y.U.U.T.T.U.T.~.T.T.T.T.T.T.~.T.~.T.~.~.~.(./././././././.{.^.(.(.(.(.(.(._._.|.|.[.}.}.}.}.|.|.|. X|.|.|.|. X X|. X X|. X X|.|._.}._._.}.}.}.|._._. X_._._._.}.{.}.}.}.}.|.|._._.^.`.(.(.(.|.(.|.[.(.(.[.(.(.(.`.(.{.{.(.(.^.(.(.(.^.'.S ; e : y ; y n.'.b.= = m.[ Z b.~.(.q : ) Q.F.; = F.{.{.` 0 t m.t = Y ].H > J !.n.0 t [ Q.(.[.{.~.~.T.^.S = H (.R.b.; q b.) y L L.U.L.y : b.D.U.J.[ r r : e e q T h.A.S.h.g.l.h.h.h.g.j.j.j.z.a.z.z.f.k.a.a.a.a.a.a.i.i.u.u.u.i.u.u.u.u.u.u.u.u.u.u.t.u.u.u.t.t.t.t.t.r.r.t.t.t.r.r.t.t.r.t.t.t.t.t.r.E u.u.t.u.u.u.u.u.u.f.u.u.a.u.a.i.i.u.i.u.i.u.i.u.i.u.u.u.i.i.i.a.a.a.a.a.a.a.a.a.a.a.a.a.i.i.i.", "C B C C C N B B B B B C B C B C N C N C C N N C B B C C C C B C C B B B N C C N C N C C C Z C Z B Z C Z Z D B C Z Z F B Z D Z Z Z Z Z D D D D D H Z H L Z Z H L D H Z Z H Z H Z Z Z H Z D A D A Z H H Z Z Z Z L Z L H Z H D D Z Z L Z Z Z Z L Z Z Z G Z Z G Z Z Z Z D Z D Z Z Z Z Z Z Z F D D C Z Z Z F Z C C A C C Z C C Z C D C C C C C C C Z Z Z Z C Z C C D Z C C Z Z C Z C C A F C Z C Z Z C Z C T A.h.A.A.A.A.G.A.A.H.G.I.L.L.L.P.L.L.U.U.P.T.T.T.U.T.Y.T.T.T.T.T.T.~.~.~.~.~.~.~././.(./.(.(.!././.(./.).(.(.(.(.(.`./.{.^.|._.{.^.|._._.^.^.|.|.`.(.(.(.(.(.)./././.~.~.~.T.T.T.T.T.T.U.P.Y.T.L.U.L.L.U.P.P.P.P.L.P.P.D.P.L.L.L.L.L.P.L.L.U.L.U.L.L.L.U.L.U.U.U.Y.P.U.P.P.P.P.P.L.Y.L.Y.P.P.P.Y.T.Y.P.T.T.U.T.T.T.T.T.T.T.U.T.U.U.T.U.U.U.U.L.U.L.Y.L.U.L.I.U.L.L.I.U.T.T.U.L.r 0 Z I.U.Z ; H U.Z.0 * n.T 0 r 0 y A ~.~.E.u 0 b.L q [ Z.= > F.`.F 0 S `.|.(.|. X^.|.n.y 0 Q._.|.n.y = t S ; K Q.> * ].'.` * ) .XdX Xu 0 n.xX X'..X.X'. X.X.X.X.X.XdX.X.X.X.X'.@X.X.X.X.X.X.X.X.X@X|.'.|.}. X|.|.}.|.|.|.|.|.|. X|.'..X.X.X.X.X.X.X.XdXdX'.zX'..XzX'.dX@XdX'.zXzX.XzX@XdXdXdX.X.XxX'.zX'.zXdX.X.X.X.X.XzXzXzXzXzXzXzXdXzXzXdXzX.XzX.XdXdX'..X.X'..X.X.X XF.0 * u y : u Q._.n.y r ].[ = r @X'.y = [ dXdXdXdXb.y y .XQ.e r m.b.y > P ! : y [ dX.X'.zX XdXQ.'.I : 0 '.dXb.` u 0 y : '.b.> : .Xb.t * `.J ; y S S e r n.b.r : ^.b.0 0 ]._.F.= * n.[.L * K /.[./.~./.(.Q.y * A F.T.Z.: : !.(.T : D [ r y [ Y t : U S.U.U.u q b.T.T.T.T.T.T.U.U.L.T.L.U.U.U.U.U.L.U.U.L.I.L.L.L.H.L.L.L.L.H.L.G.H.G.H.A.H.H.A.A.A.A.A.A.h.h.h.A.z.S.A.h.g.g.k.h.k.z.f.k.a.a.s.a.i.a.a.i.s.i.s.i.i.u.u.i.i.u.i.u.i.u.u.u.t.i.u.i.u.i.i.i.a.a.a.a.a.i.f.g.g.a.k.k.j.> * Z z.e.q ; G T y = e.J.A 0 Z Z.Z.T G y y y S.L.r : I H.T > r H.A.y : T e.: 0 b.Z.; > d.L.U.H.L.U.[ y 0 _ Y.].P.Z.: u ^.~.u r b.T.XXT.[ 0 0 (.T.b.: u ~.^.u 0 b./.~.T.U.U.T.T.U.P.P.P.P.T.Y.T.Y.U.T.T.U.T.T.T.T.T.T.T.T.U.~.T.T.~.T.~.~././././././.^.^.(.(.(._.(.(.|._.(._.[._.|.}.}.|.}.}.|.|.|.|.|.|.|..X|. X'.|..X|.'.|._. X_. X X}._.}.}.|._._._._._._.}.}.}.}.}. X}.|.|.|.|.{.(.(.(.^.(.(.!.(.^.`.(.(.(.(.{.(./.(.{.(.).(.|.(.(.G q 0 y : A b.].|._._ 0 = q u F._.`._ y t q n.; y n.(.{.Q.H q q q H ]._.G q Z (.!.D 0 0 G ~.~.T./.~.[.Y.Z y Z K./.[.U q > = D F.T.L.Z.= y F.U.D.G.G q q 0 0 : N [ A.h.l.h.h.g.h.k.h.g.k.f.k.k.g.a.g.a.a.a.k.a.a.a.a.i.i.i.u.u.u.u.u.t.t.u.t.u.u.u.u.u.u.t.t.t.t.t.t.E t.r.r.r.r.r.r.r.y.t.r.t.t.t.r.r.t.u.t.t.t.u.t.u.u.u.u.u.u.u.i.u.i.i.u.u.i.u.u.u.i.u.u.i.u.u.i.a.a.a.a.a.i.a.a.a.a.a.i.a.a.a.i.a.", "N N C N C B C C B C V C C B C V C N C N N C C C B C C B B B C B C N C B C C C C C C C C C C Z C D A D C C Z Z Z C Z C Z Z Z Z F Z D Z D D D D D Z J L Z L H L G H H S H Z H Z Z Z Z Z Z D Z D D Z H D Z Z L Z L Z H D D Z Z D Z Z Z Z Z Z L Z Z Z G C D D Z Z L Z G Z Z Z Z Z Z Z Z Z Z Z D D Z Z B Z C Z Z C D C Z D C Z C C B A C C C C C C C C C C Z D C C C C Z C Z Z A Z Z C Z Z Z Z B Z C Z C Z G Z.h.H.A.A.H.S.G.H.H.H.H.S.L.L.P.L.U.L.U.Y.P.U.T.T.P.P.T.P.T.T.T.T.~.~.T.~.~.~.(././.^.[.(.(./.(.(./././.(.(.(.(.(.(.(.(.{._._._.|.^._._.`.(._.{.(.(.`.(.(.(.(.^.(.~./.(.~.T.T.T.T.U.T.U.P.U.L.Y.U.L.L.L.P.P.U.L.L.L.L.L.P.P.L.L.S.P.P.P.K.L.L.L.L.U.U.U.U.L.U.Y.P.P.Y.P.P.P.P.P.Y.U.L.L.L.L.P.P.P.P.Y.P.T.T.T.T.T.T.T.T.T.T.U.T.T.U.U.T.U.U.L.Y.U.U.L.U.Y.I.L.J.L.U.U.U.T.U.L.y 0 S L.T.Z e S ].b.r r Z.[ e > u > y b.!.~.[ = / = * Q.n.; y n.(.K ; Z '.`.|._.{.`.|.Q.= * F. XdX XQ.n._.P y [ .X: * '.dXc.r I zX Xm.q r .X.X.X.X.X.X'.dX'.dX.X.XdX.X.X.X.X.X.XdX.X.XdX.X.X|..X|.|.|.|.|.|.|.|.|.|.|.|.|.|.|..X|. X|..X.X.XdX.X.X.XdXdX.X.X'.dXdXzX'.'.'.'.zX.XzX'.cX.XzX'.zXzXzXzX.X.XzX.X.X.XdXdX.XdX.XzXzX.X'.@XzXzXzXzXzXxX'.'.'..X'.dX'..X.X.X.X.X XQ.q r b.].y * u (.Q.* y Q.b.; ; .XdX= e [ dX'.@XdXb.: : dXQ.r : Q.b.r r b.b.[ b.Q.`.@X_.dXJ r ; ].S ; y dX[ * y n.[ r 0 '.b.= e dX[ * y .XH > u b.b.[ b.].b.= r /.b.: r _.(.F.* r n.(.H : L !.~.^./.(.F.q = I ].^.Y.~.0 : F.U.U y _ T > ; y = r : r F.Z.n.q y ~.T.T.T.U.T.T.U.U.L.U.P.P.P.P.P.U.U.Y.U.L.L.L.K.U.L.L.H.L.L.H.H.H.H.H.H.H.A.H.H.G.A.G.A.G.A.A.W.j.A.g.g.A.h.h.h.k.k.k.f.i.z.a.k.a.f.a.a.i.s.u.i.u.u.i.i.u.i.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.i.a.a.a.f.z.k.d.f.g.k.k.d.* e t e q : : T Z.B ; H T q 0 T e.U Z b.G 0 y S.Z.q : Z b.Z.q r Y T : = Z.b.y r e.e.: = e.K.T.G.XXF.y 0 : 0 0 y [ n.u r [ T * q Q.E.T./.v.e r !.(.F.t > T [ = q ].T.T.T.T.T.T.U.U.P.P.Y.P.P.P.T.L.U.U.U.U.T.T.~.T.T.T.T.T.T.T.~.T.~.~.T.~.~.~.~././././.(.(.^.(.^.`.^.^.^._._._.|.}.}. X}. X|.|.|. X|.`.|.|.|.'.|.|.|.|.|.|._.}._._._._._. X}.}.}._. X{._. X_.}.}.}.}.}.|.|.|.`.|.|.|.|.(.(.^.(.^.(.(.(.(.[.(.(././.(./.(.(.(.(.(.^.{.{.].].(.(.^.'..X X{.`.`.].F.n.(.{.(.~./.F.n.F.^.}.(.^.^.(.{./.].F.Q.~._.!.!.^.^.~./.~.n.n.F.{.~.T./.Y.Y.(.U.!.]./.U.R.~.F.n.F.K.P.T.P.L.P.F.L.L.H.H.S.S.A.Z.S.S.g.z.z.h.k.g.h.g.k.k.h.k.g.j.g.k.g.a.a.a.z.a.z.a.a.a.a.i.i.u.u.u.u.t.t.u.t.t.E u.t.t.t.t.t.t.t.t.t.r.t.y.r.r.r.r.t.r.r.r.r.r.r.t.r.r.r.r.t.t.t.t.t.t.t.u.u.t.u.u.u.u.a.a.u.u.u.u.u.u.u.u.p.i.i.p.i.u.u.i.u.a.u.a.i.i.a.i.a.a.i.i.a.a.a.i.", "C C V B B B C C C C C V B C B C A N C C C C N C C B C N C C C B C Z C B N C C N C Z C C C Z C C Z Z B Z Z Z C Z Z Z Z Z Z Z Z Z D Z D D D D Z D Z H Z L H Z S L Z Z H H H H S J Z Z H H D D Z D S D Z H Z D J Z Z L D D Z D Z D Z L G Z Z Z Z Z D D D G D Z Z Z Z Z Z B G Z B G Z Z Z Z Z C Z Z Z Z F Z C Z Z B C B B Z C C C C Z C C Z C C C C C C C C C C C D A Z Z Z B F C Z Z Z C Z D A A D C Z C Z e.h.h.A.A.A.S.G.H.H.H.H.L.L.L.S.L.L.L.L.L.L.U.Y.U.P.P.T.T.T.P.T.T.T.T.~.~.~.~.~.~././.(.(.(.(./././././.(./.(.(.(.(./.|._._._._._.`.`.`.`.`._._.|.(.(.(.^.(.^.^././.~.~.~.~.~.T.T.T.U.U.U.U.U.L.L.U.K.Y.U.U.D.U.L.L.L.L.P.L.L.L.U.L.P.L.R.L.L.L.R.K.L.L.U.L.L.U.P.P.P.P.Y.P.Y.P.U.L.Y.L.Y.L.L.L.P.P.T.T.T.T.T.T.T.T.T.T.T.U.T.U.T.U.U.T.Y.U.U.U.L.Y.L.K.D.U.U.K.K.I.T.U.T.T.!.; 0 H (.T.[ q = b.P > y Y.T : * Y.T 0 y `.~.].A : t U ~.{.Z > Y b.y ; b.'.(.(.{._._._.Q.; r m.dXdXu ; [ n.y : m.zXZ y ` F.u > [ dX.Xn.0 ~ .X.X.XdX.X@XdX X.X.X.X.XdX.X.X.XdX.X.X.XzX.X.X.X.X.X.X.X.X.X|.|.|.|.|.|.|.|.|.|.|.'.|. X.X.X.X.X.X.X.XzX.X XdX.X.XdX'.dX.XzXxX.XzX.XzX.X.XcX.X.X.XzXzX.X.XzXzX'.zXzXdXdX.X.X'.dX.XzXzXzXdXzXzXxXzXzXzXdX'.xX@XxXdX.X.X.X.X.X.X.Xn.r > [ '.b.q > [ Q.> : Q.].; * b.[ y ; ].dX@X.XdX].r > b.) : : n.'.: y c.[ J [ '.|.'.dX'.[ * y S e e K dXJ * u m.Z 0 0 dX[ y 0 Xb.t = .Xb.q ; n.[ ) [ '.[ y r (.[ > y _.(. Xu > ) b.0 * b.^.).T./.].u > y e 0 e S !.D : ) b.* = b.n.T [ T I r e U S.T.Y : Z U.T.T.T.U.P.Y.L.U.Y.Y.L.P.P.P.P.L.L.L.L.L.L.I.S.Y.S.H.L.H.H.H.H.H.H.H.H.A.H.A.Z.G.A.A.A.A.A.A.j.A.S.z.A.G.h.h.k.k.k.k.k.k.a.a.a.a.a.a.i.i.i.i.i.i.u.u.i.u.i.u.u.u.u.u.i.u.i.u.u.u.u.i.i.d.i.i.d.a.i.i.i.k.f.a.k.d.A.q y 0 q 0 u F g.F.e.A > = q Y Z.Z.A : y y e e.G.L.G q = N H.T t : > y [ U.b.= = Z.b.0 r Z.K.Z.U.J.T q > y = : y T T.[ y r : q [ (.T.T.T.[ q 0 !.~.).b.y q = u [ (.T.T.T.~.U.U.U.T.P.T.T.P.T.P.P.P.U.U.U.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.~.~.~.~././.~.!./.(./.(.(.(.(.(.(.(.(.(.(._.|.}.}.}.|.|.|.|.|.|. X@X|.|.|.|.}.|.|.|.|._. X_._._._. X_.}._._._._._._. X_.}.}.|.}.}.'.|.|._._._.(.`.^.`.(.^.(.(.(.!.(.(._.(.{.(.(.).(.(.(.(.(.(.(.^.|..X{._.`._.~.{.|.^.^./.(.[.(.(.^./././.!.(.~.[.[.|.^.{.~.{.!.~.~.(.~.E.[././././.^.T.{.~.T.[./.T.!.!.T.T./.~.U.Y.T.~.T.K.L.U.L.S.P.U.T.U.S.S.H.D.S.h.A.l.A.D.A.Z.z.h.h.h.g.g.k.h.k.h.k.k.a.g.f.f.g.a.a.a.u.a.a.a.a.a.i.u.i.u.u.t.u.t.u.t.t.t.t.t.t.t.t.t.t.t.t.y.t.t.r.r.w.r.r.y.r.r.r.r.t.r.r.r.r.r.t.r.r.t.t.u.t.u.t.u.t.t.r.u.r.u.u.u.u.u.u.u.u.u.u.u.t.u.u.u.u.u.u.u.i.u.i.i.u.i.u.u.i.i.i.i.a.i.", "C C C C B C C C C C C C C C C C C C C C C C C C A C C Z C A C C C C C C C C C C C C C C C C C Z Z Z Z C Z D Z Z Z Z Z Z Z Z F Z Z L Z D Z H Z Z H L Z J H H Z Z H Z D H D Z Z Z Z H D D D D D D H H Z H H Z Z J L Z Z D Z H Z Z L Z Z Z G L Z Z Z F D Z C Z D Z Z Z Z Z Z Z Z F Z D G B G Z Z Z Z Z Z Z C D C Z D C Z C C C C C B C C F C C C C C C Z C C C C C Z C Z C C Z A D C Z Z Z C Z C B C Z Z Z e.Z.A.A.A.A.H.A.H.H.S.H.L.L.L.L.L.S.L.U.K.U.U.L.P.P.P.P.Y.U.T.T.T.T.~.T.(.T.~.~.~.(.~.^././.(././.).!./.(.(./.(.^.(.(.(._._._._._._._._.(._._._.|.^.(.(.(.(./.(.[./.^.~.T.~.T.T.T.T.U.U.L.L.L.U.U.L.L.U.P.P.D.H.L.P.G.L.P.U.P.P.L.L.L.P.L.U.L.L.L.U.U.L.L.L.L.Y.P.U.L.T.U.U.T.L.L.U.L.L.P.Y.P.Y.P.P.P.T.T.T.T.T.T.T.T.T.U.U.T.U.Y.U.U.U.U.Y.U.I.U.U.L.L.L.L.L.Y.K.R.T.U.T.~.!.q 0 F Y.T.T.Y q q q u b.[.e.; e L.K.y t T ~.T.U 0 * n.{.[.n.u = > = ` '.(.|.`._.{.|.|.Q.q * Q.|.|.!.u * * u n.dX X'.S = q 0 / dXdX@XP r [ X X.XdX.X.X.X.X.X'.@X.X.X@XdX.X.X.XzX.X@XdX.X.X.X.X.X'. X.X.X X|.|.|.|.|.|.|.}.|.|..X.X|..X.X.X.X.XdX.X.X.XzX.X'.zX@XxX.XzX.XzXzX@XdX@XdXdXdXdXzX.XzXzXdXzXzXzXzXzX.XzXdX'.dXdX.XzXdXdXdXdXxXdXzXzXzXzX.XdX.XdX.XdX.X.X.X.X.X.XQ.y = b.'.'.y = u n.y 0 n.dXb.u : : y n.dXdX XdX.XhX[ = r _ y 0 Q.hXb.> t = * n.dX.X|.|.zXdXS 0 y = S ]. Xn.y : = ) y y ].[ > : |.b.* q |.'._ r r y y Q.'.[ * q `.[ q q (.|._.Q.u 0 y q U (.`.^././.n.q r ; = : * Z Y.F.u * = e Y Y.U.T.P.P.b.q : b.U.P.L > [ U.U.T.T.U.U.U.U.U.P.U.L.P.P.L.L.L.L.L.L.L.S.U.L.S.U.S.D.U.H.H.H.H.S.S.H.h.S.S.A.A.A.G.h.W.A.G.A.h.A.h.S.g.g.z.k.k.k.k.k.a.a.a.k.z.a.a.a.i.i.i.i.u.i.t.u.i.u.u.u.u.u.u.u.u.u.u.u.u.i.u.i.i.i.i.a.a.a.a.i.i.i.f.k.i.h.e.z.j.z.z.h.j.g.d.g.A.e.e.b.z.A.H.A.e.b.Z.S.Z.D.A.F.b.b.e.G.G.Z.b.e.G.z.G.P.H.H.G.G.L.L.S.U.L.L.U.P.U.Y.Y.~.Y.~.T.T.T.Y.F.n.U.[.T.P.[.~.^./.!.(.~./.T.].n.b.Y.^.!.T.T.T.T.T.P.P.T.P.P.P.T.P.T.U.U.U.T.P.T.T.P.U.T.T.T.T.T.T.T.T.T.T.~.T.T.XXT././.~./.!.^.(.(.(.(.(.(.(.(.`.`.}.}.}.}.|.}.|.}._. X|. X`.'.|.|.|.|.}. X|.|.|._.}.}.}._._.|._._.}._.'._._.}._.}.|.|._.}.|.|.`.|.`.`.|._.(.`.^.|.(.{.^.^.(./.(.(./.{.[.(.(.^.(.(.[.(.(.).(.[.^.)._.^.^._.^.(.(.`.`.`..X!.`.(.(.!.~.(.(.`./.(.(./.(./.~.(.{.(././.{.~.~.~.^.T.~.(.~.T.[./.~.T.~.~.L.T.T.(.~.T.U.U.U.U.U.L.U.L.L.U.U.G.H.L.G.G.H.z.A.h.h.l.h.g.h.h.h.g.g.g.k.k.g.k.k.f.a.g.f.g.a.i.a.a.a.a.a.i.i.i.a.i.u.u.t.u.t.t.t.t.t.r.r.t.r.t.r.r.t.r.y.r.r.y.r.r.y.r.r.y.r.r.r.r.r.y.y.w.y.r.y.r.r.t.t.t.t.r.t.t.t.t.t.u.u.u.u.u.t.u.u.i.t.u.u.t.u.u.p.t.t.s.u.u.u.u.i.i.i.u.u.i.u.a.i.a.i.i.", "C N A C C C C C C C C C A C C C C C C C A C C C C C C C C C C C C C C C C A C C C C Z Z C Z Z Z C Z Z Z F B C Z C D B Z B F D D Z D D D H Z Z H H H H Z H Z Z H H L D L H H Z H Z L D D D D D D Z D H Z Z H Z L Z H H Z H Z L Z Z Z G H Z Z Z G Z Z Z Z D Z Z Z Z Z Z Z Z Z Z Z Z F Z D C Z Z Z Z Z C Z Z Z Z F Z C Z C D C C Z C C C C C Z B F C C C C C F C Z A D Z C Z C Z C Z C Z C Z A Z Z C C Z Z T Z.A.A.A.G.A.G.H.A.H.L.L.L.H.S.S.U.P.L.L.L.L.U.P.P.P.P.U.I.U.U.T.T.T.T.T.~.~.~.~.~.T.^././.!././.!././././.(.(.(.`.(.(._.`.^.`._._._._._._.|._.|.).^.(.(.(.(.(././.~.~.[.T.T.[.T.T.T.U.U.U.U.L.U.K.L.I.P.P.P.P.G.P.P.P.P.U.S.P.U.P.P.P.L.U.U.L.L.L.L.L.L.L.L.K.P.Y.P.P.L.R.L.L.L.L.L.U.P.P.P.L.P.P.P.T.T.T.T.T.Y.T.P.Y.T.U.T.U.U.I.T.I.U.L.T.L.L.U.L.U.L.L.L.L.U.L.U.T.I.L.U.].(.Y.~.T.T.T.P.b.n.~.T.P.Y.!.].~.T.(.~.~.T./.[ 0 y ~.[.).(.^.Q.F.].(.(.^.`.(.{.|.'.|..X X@X.X|.|..X X].Q. X|. X_.dX'.].m.!.dX'..X|.dXdX@X X@X'..X.X'..X.X.X.X.X.X.X.X.XdX.X.X.X.X.X.XdX.X.X.X.X X|..X|..X.X.X|.'.|.|.|.|.|.|..X|..X.X.X.X.X.X.X.X.X.XzX.XzX'.'..XxXzX.X.XdXdXxXdXdXdXzXdXzXdXzXzXzXzXzXzXzX.XzX.XdXdXdXdXzX.X.XdXdXdXxXdXzXzXzXzXzXdXdXdX.X'..XdX.X.X.X.X X`.dX'. X.X'.dX X|.'.'.@X.X|..XQ.n..X.X X.XdXdX'.@XdX].].dXdX.X@X.X.X.XQ.Q..X`. X X@X|.|.@XdX].Q.Q.dX X XdX!.n.|. X'.{.{.@X|.|.`.|.'.'.|.|._.].n.Q.'.'.[.|.'._._.|.'.`.`.(._._./.!.n.^._.(./.^./.^.T.E.~.].T.T.~.~.P.T.U.Z.b.F.U.U.L.U.P.P.P.P.L.L.XXD.L.U.L.U.U.U.U.U.U.U.U.L.U.L.L.L.L.L.L.L.L.L.L.U.U.S.H.L.H.H.H.H.H.H.H.G.H.S.H.H.A.H.S.A.G.A.A.A.A.A.A.A.h.A.g.k.h.g.g.k.f.f.k.a.f.z.a.a.a.a.i.i.a.t.a.u.a.u.a.u.u.u.u.u.u.a.u.u.u.u.u.i.u.u.i.u.i.i.i.a.z.a.a.z.i.z.k.h.f.g.z.z.A.A.h.l.z.D.D.g.A.A.S.H.D.D.z.H.A.A.Z.G.S.A.H.H.G.G.G.H.l.L.U.G.L.D.P.H.H.L.U.L.L.U.U.U.L.U.U.L.P.T.T.T.T.T.T.[.T.T.~.T.T.~.^.[.~.~.~./.[.^.T.(.T.~.(.(.T.P.T.T.T.T.T.P.T.P.Y.P.T.P.P.T.T.T.T.U.P.P.T.T.U.T.T.T.T.T.T.T.T.T.~.T.XX).U.(.~.~././././././.(.(.^.{.^.^.(.`.}.}.}.}._.|.}.}.|.|._.|.`.`.|.|. X|. X|.}.|._.|.}._._._._._.|.{._._._._._.}._. X|._.|.|.|.`.|.(.{._.|._.(.(.^.{.(.^.(.[.(.(.(././.(.).(.^.^.(.(.^.^.(.^.~.|.(.{.~.{.|.^.{._.`.~.^.^./.(.{.(.(.(.~.~.(.~.(./.(.(./.[.[.~.~.~.~.~.^.~._.!././.~.T.T.[.^.P.T.~.T.~.T.T.T.T.T.T.T.T.T.H.U.U.H.U.H.G.L.G.G.A.G.G.A.S.H.g.H.z.H.h.j.h.k.h.g.k.h.k.k.k.k.z.g.a.f.a.a.a.a.i.a.a.a.a.i.i.i.u.u.u.u.t.t.r.t.E r.r.r.r.r.r.r.r.r.y.t.y.r.r.y.r.y.y.y.r.y.r.y.r.r.r.y.y.y.y.y.r.r.r.r.r.t.r.t.t.t.t.t.t.t.u.t.u.t.t.E u.t.u.u.s.u.t.r.s.t.p.u.u.u.u.u.u.u.i.u.u.u.i.u.i.i.u.", "C C C A A C C C C Z C C C C C C A C C A C C A C C C C C C C C C Z C C A C C Z Z Z C Z C C Z Z C B Z Z C Z Z Z C Z Z Z C Z Z F Z D D Z Z D D Z L H H Z H Z H Z L Z H H Z Z Z Z Z Z Z L Z H D D D H D H H Z L L L Z L H Z Z Z Z Z Z Z Z Z C Z H Z G B Z Z Z Z Z Z F Z Z Z Z Z B Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z B C Z Z B C C C C C C C C C C Z C Z C C C C F C C Z B A C B D Z Z Z Z Z C B D Z C Z C A Z U d.A.A.A.A.S.Z.H.S.H.H.H.L.L.L.L.S.L.L.L.L.Y.L.K.L.P.P.I.Y.I.I.T.T.T.T.~.T.~.T.T.~.~.~.!.!./././.(././.(./.(.(.(.(.`.^._.^.{._._._.|._.|.(.^._.`.^.{.|.(.(.[.(.(.[./.(.~.~.T.T.T.T.U.U.Y.K.U.U.L.T.U.L.P.L.P.L.U.U.U.U.P.P.P.P.U.S.P.P.I.U.I.L.Y.L.L.K.L.U.Y.U.P.P.U.Y.Y.Y.L.R.L.L.L.L.P.T.Z.P.P.T.P.T.T.T.T.T.Y.Y.T.T.T.U.U.U.I.T.I.Y.U.Y.U.Y.L.Y.L.L.L.L.U.L.L.T.U.T.U.[.[.U.I.I.T.~.T.(.U.~.T.U.P.[.T.~.T.T.~.~.T.R.` y r 0 [ {.^.^./.`.(./.(.).`.`._._.|._. X|.|. X{.dX XfX'.'..X.X.X.X X@X.XdX.X.XdX'.dX@X.XdX X|..X.X X.X.X'..X.X.X.XdX.X.X.X.X'..XzX.XzX.XzX.X.X.X|.dX'. X|..X.X.X|..X|..X|.|. X|..X|..X'..X.XzXdX.XdX X.XxX.XzX.XzXzXzXzXzX.XzXdXdXdXxXfXzXzXzXzXzXzXzXzXzXzXzXzXzX.XzX@XdXzX'.zXzXdXcXdXxXdXxXzXzXdX.XzX.XdX'..X.X.X.X@X'.|..X.X@X_.'.`.@X'.`. X.X.X|. X|.@X X@X.X@X X XzXdXdX#X X@X.X'..X.X.X@X X.X'..X'.dX'..X X X.X|.|.'..X X.X}.@X|.dX.X@X X.X'.'.|.|.|.|._._.|..X^.|..X`.|.|.@X_.{._.|.|.(.`.^.|.`.`.(._./._.(.^.(.(.(.!.[.[.[.[.T.[.~.~.~.~.(.U.U.U.T.U.U.L.T.Y.P.P.S.U.L.U.G.P.U.L.T.P.U.U.U.U.L.U.L.L.L.L.L.L.L.U.L.L.L.L.S.H.S.H.L.H.H.H.H.H.H.H.A.G.S.H.A.H.G.A.A.A.A.A.A.A.G.A.A.h.A.h.A.h.h.g.g.k.z.a.f.i.k.i.k.a.a.a.a.i.a.i.u.u.i.i.r.u.u.u.u.u.u.u.s.u.i.u.u.s.i.i.u.u.i.i.i.i.i.i.a.a.g.i.k.k.f.g.j.h.k.j.h.h.d.D.A.D.j.G.G.g.A.A.l.Z.U.S.G.G.G.G.H.H.H.H.H.H.G.U.L.D.H.T.G.L.H.L.G.K.L.L.U.U.T.U.U.U.P.Y.[.P.T.U.T.T.T.T.!.T.T.[.~.E./.Y./.{.R.(.(./.[.~./.(.T.~.^.Y.T.T.U.T.P.T.P.P.P.U.U.T.T.T.P.T.T.T.P.T.T.I.I.I.T.U.T.T.T.T.~.~.~.T././.^./././././.(./.(.(.(.`.(.`._._.|.}.}.}.|.|.}.}.|._.|.|._.|.|.|.}.|.}.}.}.}.|._.}.}.}._._._.'._._._._._.}.}.}.}.|.|._.|.|.`.`.`.`.|.|._.|.^.(.(.`.^.{.~.(.(.~.(.(.(./.(./.(.{.(.(.(./.(.(.^.^.(._.(.(.(.(.).^.(.!.(.^./.[.).~./.~.(.~.(./.(.(.(.~.~.[.~.^.~.!.[.^.!.(.~.T./.~./.~.T.T.~./.T.T.T.T.T.T.T.U.T.U.U.L.Y.L.L.L.S.L.K.H.A.H.K.A.A.H.A.A.A.h.z.j.g.j.h.g.k.g.k.k.k.f.f.a.z.a.k.g.a.z.i.z.s.a.i.i.i.i.i.u.u.u.u.t.u.t.r.r.r.r.r.r.r.r.t.r.r.r.y.r.y.r.y.y.r.y.y.r.y.t.r.y.r.y.y.y.y.y.w.r.E y.r.r.t.r.r.r.r.t.r.t.t.u.t.t.t.t.t.t.u.t.u.t.t.u.t.t.s.t.s.u.u.u.u.u.u.u.u.u.u.u.u.i.i.u.i.", "C A C C C C C C C Z C Z C F C C B F C C Z C Z C Z C Z Z C Z C C C C C A C C C Z C Z C C Z C C Z D Z Z F C Z C D B Z Z D B Z F Z Z H H Z D D Z H Z Z H H H Z H Z L Z Z L H H J Z H Z Z H D D D D Z H Z H L Z H S L D Z Z L Z H Z Z H Z Z G Z L Z Z Z Z Z Z Z Z B Z Z Z Z Z Z D Z Z Z Z Z Z Z G Z Z Z Z Z C Z Z C Z D C C C B Z C C C Z C C C C C C C Z C C C B D C Z Z C Z A B D C C A Z Z Z C Z Z A Z Z G e.A.A.A.A.S.S.A.H.S.H.G.G.L.S.L.U.D.L.L.L.L.L.P.L.P.L.I.U.U.T.T.T.T.T.T.~.T.~.~.~.~.~./.(./././././././.(.(.(.(.(.(.(.(._._._._._.(.`.`._.`.`.`.(.^.(.(.(.(./././.~.~.T.~.T.T.T.T.U.T.U.L.U.L.U.L.I.L.P.L.P.P.P.P.z.XXP.P.P.U.U.P.P.P.L.U.L.K.U.U.K.L.L.L.L.L.P.P.Y.L.U.U.Y.L.L.L.L.U.P.P.P.P.P.P.Y.U.T.T.T.T.T.P.U.U.L.U.T.U.I.T.I.U.Y.U.U.R.L.L.L.L.L.U.L.U.L.U.U.T.Y.T.T.U.[.~.T.T.T.T.[.T.~.T.T.T.T.~.~.T.T.T.[.R.Y.[ [ b.~.~.(./.(./.(./.^.|._.(._._._._.'.|.|.@XdX'. X X X'..X|..X'. X|..X XdX.XdX.XdX.XdX.X.X'. X.X.X X.XdX.X.XdXdXzX.X.XzX.X'..X.X.X'..X.X.XdX'.@X'. X.X.X|. X|..X|..X X X|..X|..X'.|..X|..X.X.X.X.XdX%X.X.XzXdXzXdX.XdX@XdXzXdXxXdXdXdXzXzXzXzXzXzXzXzXzXzXzX@XzX.XzXzX'.zXzXdXdXdXcXdXdXcXdXzXzXzXzX.XzX@XzX'..XzX.X.X|..X.X|..X XdX.X X X.X X XzX X X X XdXhX.X.XdXdXdX XdX XdX X.X.X.XdX.X'. X X#X X X X@X'.'..X.X.X.X.X'..X X X|. XdX.X|. X|..X.X_. X|.|.|. X|.`..X|.{..X|.|.{._. X X_.{.|.{.|.`.|.(.`.|.(.`.`._.[.(.[.~.~.~.~.T.[.T.T.!.T.P.Y.P.U.T.T.U.U.I.L.S.Y.D.L.P.L.U.S.H.L.G.L.U.L.L.L.L.L.L.S.U.L.L.L.L.S.U.L.L.S.L.U.S.H.H.H.H.H.H.H.H.H.S.H.G.Z.H.G.A.Z.G.G.G.A.A.A.G.A.A.A.h.h.A.h.h.g.z.g.g.g.k.k.a.i.a.a.a.a.a.a.i.u.a.i.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.i.i.i.k.i.i.k.a.d.i.z.i.k.k.h.g.k.z.z.k.k.h.D.z.g.A.A.g.S.G.D.A.D.A.D.S.G.G.L.G.G.L.L.H.U.L.H.L.L.L.L.P.H.L.L.L.Y.U.U.U.T.U.T.T.Y.Y.P.P.T.T.T.~.T.T.(.[.!.~.[.T.(.~.(././.^.).^.!.~.[.~.~.^.T.P.[.P.[.T.T.P.P.T.P.P.P.T.U.P.T.T.T.T.P.T.T.I.I.T.I.T.T.T.T.T.T.T.~.T.~./.T.~.^.E.!./.!./././.(.(.^.^.^._.`._.{.}.}._.[.|.|.|.|. X|. X|._.|.|.}.|.}.}.}._.|.^.}.}._._._._._._._._._.}._._. X_.'.|._._.`.`.`.`.`.(.(._.(.(.|.^._.[.(.(.~.(.(./.^.(./.(././.(.(./.(.`.^._.].(.^.(.(.(.(.(.(./.{.(.^.{.!.^.[./.(././.(././.~.~.^.~.~.(.~.!.T.~.T.~.T.~./.T.~.T.T.~.~.T.T.T.T.U.T.T.T.U.U.U.L.U.L.Y.S.H.S.L.S.H.H.H.H.A.A.H.z.G.H.A.h.H.h.h.A.h.g.h.h.k.k.k.z.z.g.a.z.f.f.a.g.i.a.a.a.a.a.i.i.i.u.u.u.t.u.t.r.r.r.r.r.r.r.r.y.y.r.E r.r.y.r.r.y.y.y.r.y.r.y.y.r.y.y.y.y.y.w.E E y.r.r.r.E y.r.r.r.r.E r.r.t.E t.t.t.t.u.t.u.u.t.s.t.u.u.t.t.t.t.E u.u.u.u.u.E u.u.u.u.i.u.i.i.u.", "N C A C C A C C Z B C Z C Z Z C B C C A C C C C Z Z C Z C C C C C C C C C A Z C C Z Z C Z C Z Z Z D D Z A Z C Z A Z B D Z Z D Z L Z L Z Z Z Z Z Z Z L Z H H S L Z J H D D Z H D D D H Z D Z Z Z H H Z H Z H Z H Z H Z Z Z L Z G S H Z Z D Z Z S F Z Z Z Z Z Z Z Z Z Z G B Z Z Z Z Z Z L Z Z Z L Z Z Z C Z C Z Z C Z B D C C C C C Z C Z C Z C C C C Z C C Z C Z C C C Z C Z C D Z Z B Z C Z Z C Z V Z A Z e.h.D.A.A.S.S.S.H.G.G.L.L.D.L.D.H.L.S.L.L.L.H.P.P.D.U.P.U.U.U.U.T.T.T.~.T.T.~.^.T.T.^./././././.(.(.(.(.(.(.(.(.(.(.(.(.(._.`.(.`.^.`.(.^._.`.|.(._.`.(.(./.(././.~.~.[.T.~.T.T.T.T.U.U.L.U.L.L.I.L.I.I.L.L.U.L.L.Y.K.Y.P.P.U.U.L.L.Y.L.U.U.L.L.L.L.L.U.L.L.Y.U.U.L.L.U.U.U.U.L.L.L.L.L.U.L.I.U.U.P.P.Y.Y.Y.T.T.U.T.Y.R.I.U.U.Y.T.I.T.U.U.U.L.L.U.L.U.L.L.Y.P.P.P.T.T.~.~.U.~.T.T.T.T.T.~.T.T.T.~.T.T.T.~.T.^.T.~.T.~.T.~./.~./././.(././.(.(.(.(.(.(.^.}.|.}.'.|..X|..X.X.X.X.X|.'..X'. X.X.X.X.X.X.XdX'..X'.dX.X.X.X.X|..X'..X.XdX.XdX.XzX.XdX'.dXdXdXdX.XzXdX.X.X.X.X.X.X.X.X.X X.X.X.X.X|..X X'.|..X X'..X.X.X.X.XdX.X.X.XzX.X%XdXdXdXdXdXzXzXzXzXzXzXzXzXzXzXdXvX.XvXdXdXdX X.XcXdXdXdXdXdXdXdXdXdXdX.XcXdXdXcXdX.XcX.XzX.XzX.X'.zX'..XzX.X.X.X.X|..X|. X X X|. X X X.X.X.X.X.X'..X.XdX@X'..XdX.X'.dX.X@X.X.X.X|.dX'..X'..X.X.X@X_. X.X'.|.|..X.X.X|.|..X.X`.'.|..X.X'.|..X|.|.|.|.}.|.|.|.}.|. X|.|.|.|.|._._.`._._._.|._._._._.^.`.`.(.(.(./.R.~.~.~.T.T.T.T.T.T.T.T.T.U.U.U.U.L.L.L.L.L.H.L.L.L.L.H.L.L.L.L.L.L.L.L.L.L.H.G.L.L.L.L.L.L.L.L.L.L.L.S.H.H.H.H.H.S.G.G.H.G.S.S.S.G.S.G.S.A.H.S.A.S.A.h.A.A.A.A.A.A.h.h.h.g.g.k.g.f.d.f.d.i.z.f.a.a.a.i.i.i.i.a.u.u.u.u.i.u.u.u.u.u.u.u.u.a.u.u.u.u.u.u.a.i.i.i.i.a.i.a.a.z.k.a.g.g.h.f.h.h.h.h.h.h.h.h.A.h.A.H.h.z.S.A.S.S.S.S.G.G.H.H.H.L.D.L.P.P.P.L.P.L.L.L.L.L.U.K.U.U.U.U.T.U.P.T.P.T.T.T.T.Y.~.T.~.Y.~.~.~.~./././././././.^./.(.~.~.^.~.(.~.~.~.T.T.T.T.T.P.T.P.Y.P.T.T.T.T.P.T.T.T.P.T.P.T.T.U.T.U.T.U.T.T./.T.~.~.~.~.~.^.~././.(./././.^.^.^.(.`.(.^._.^.(._.|.}.}.|._.}.}.}. X}.}. X}.}._.}._.}.}.}._._._._._._.(._.(._._._._._._._._._. X_.|._._.|._.(.`.^.^.^._.(.(.(.(.(.).(.(.(.(./././.(.(.^.(.~./.(.{.(.(.(.(././.(./.(./.(.(.^./.~././././././.^.~.~./.~.~.~.~.~.!.~.~.~.~.[.T.~.T.~.~.T.~.T.^.~.T.T.T.T.T.T.T.T.T.T.U.U.L.U.L.L.H.H.H.H.H.H.H.J.S.A.S.A.A.A.A.h.A.j.h.l.h.z.h.h.g.g.g.k.g.g.a.f.k.f.z.a.a.a.k.a.a.a.s.i.i.u.u.u.t.t.t.t.t.r.r.E y.t.E r.y.r.y.y.t.r.r.y.y.r.y.y.y.E y.w.y.y.r.w.y.y.y.y.y.y.y.y.r.E r.r.y.r.r.r.r.r.y.r.r.r.r.t.t.t.t.t.t.t.t.t.t.t.s.t.t.t.s.u.t.t.t.u.t.t.u.u.u.u.u.u.u.u.i.", "C C C C C C Z C C Z D C C C B Z D A Z Z D Z C Z Z C C C C C Z Z C A Z C C Z C Z Z Z C Z C Z C C Z B D B D C Z C Z Z Z Z Z Z Z Z Z Z G Z Z G L L L G Z Z Z H D Z H Z Z D D H D D D Z H Z D L D H Z H Z H L Z L H L Z S L L Z Z H Z Z D D D Z Z Z Z Z Z F Z Z F Z D C Z Z D Z D Z Z Z L Z Z Z Z Z H G H Z Z Z Z C Z C C C C C C C C C C C C C C F C C C Z C C C G Z Z Z Z Z C Z C Z Z Z C Z C C Z Z V Z Z Z T A.H.h.A.A.Z.S.S.H.H.A.L.L.F.L.L.L.L.L.L.S.U.P.P.Y.U.P.U.U.T.T.T.T.T.T.T.T.~.T.~.T.~./././././.(./.^.(.(.(.^.(.(.(.(.(._.|.^._._.`.`.`.`._.|._.(.{.^.(.(.(./././.~.~.~.~.T.~.T.T.T.T.T.L.U.L.L.I.L.I.L.I.L.U.L.K.L.L.L.U.Y.U.Y.L.L.U.Y.U.U.Y.L.U.L.K.L.L.I.L.I.L.U.I.K.U.K.L.I.L.U.L.L.L.L.L.U.U.P.T.U.Y.U.U.T.I.Y.Y.U.U.U.U.I.I.I.I.U.U.U.L.Y.L.L.L.L.P.L.U.T.T.T.T.U.~.~.T.~.T.~.T.~.T.~.~.T./.~.T.T.~.^.T./.~.~.~./.T.T./././.(./././.(.(.(.(.(._._.}.}.|.|. X|..X|..X|.|. X.X|.|. X X'.|..X.X.XdX'..XdX.X.X.X.X.X.X.X.X.X.X.X'.dX'.zX'.zX.XdXdXdX XdXdX.X XzX.XdX.X.X.X.X.X.X.X.X.X.X.X.X'. X.X.X|..X.X|.|..X.X.X.X.XzX.XzX.X.XvXdXdXdXdX.XzXzX@XzXzXzXzXzXzXdX XcXzXfX%XdXcXcXdXdXdXxXdXdXdXdXdXdXdXdXvX.X%XdXdXxX.XxX.XzX.XzX.X'.@X.X.X.X.X|..X.X X.X.X X X@X.XdX@X.X.X.X.X.X'.dX.X X.XdXdX.X.X.X.X.X.X.X.X.X.X X X X.X.X|..X X X X|..X.X.X'.|.|.|.|..X.X.X.X|..X|..X.X|.|. X|.|.}.|.|.}.}.}.|.`.|._._._._.|.{._._.|._._._._._.(.(.^.^./././.(.~.~.~.~.[.T.~.T.T.T.U.T.T.U.U.U.L.L.L.L.L.J.S.U.H.L.L.H.H.L.L.G.L.L.L.S.H.G.L.H.G.H.H.H.A.H.H.H.S.U.S.H.H.H.H.H.S.S.G.A.H.H.S.S.G.S.S.S.H.A.S.S.A.A.A.A.A.A.A.A.h.h.h.h.g.g.k.k.f.f.f.f.k.i.a.a.a.a.a.i.i.a.i.i.u.i.u.u.u.u.u.u.a.u.u.a.u.u.i.i.u.i.u.i.u.i.i.i.a.a.z.i.i.k.g.g.a.g.f.h.k.h.h.l.h.h.h.g.A.h.z.G.S.A.S.A.S.H.S.S.G.G.H.H.P.U.A.P.D.P.L.L.L.P.L.L.U.U.U.L.U.I.U.T.U.P.Y.T.T.T.T.T.T.T.T.T.~.~.~.~.~.(.T.!./.!./././.(.[.(./.~.~.~.!.T.~.T.T.T.T.U.P.T.P.P.P.P.P.T.T.T.P.T.T.P.T.T.U.T.T.T.T.U.T.T.T.T.T.~.~.~.~.~.~.[.[././././.^.(.(.(.(.(.(.`.(._.|._._.}.}.(._.}.}.}.}.}.}.}.}.}.|.}._.}._.}.}._. X X_._._._.(._._._._._._._._._._._._._.|.|.|.`.{.`.`.(.(.(.(.(.(.(.(.(./.~.(.(.(.(././.^.(./.(.(.^.(./.[.(.(./.(.E.(.(./././.(.(./.!././././.~./.(.~.~.~.!.~.~.~.~.~.~.~.!.T.~.~.~.~.^.~.T.T.T.T.T.T.T.T.T.T.T.T.T.H.L.L.L.L.L.L.H.H.H.H.H.H.S.G.A.A.A.A.A.A.A.A.h.A.h.h.h.z.h.g.g.g.g.g.g.a.k.f.a.a.f.a.k.a.a.a.a.a.i.u.i.u.u.u.u.t.t.t.r.r.r.y.y.t.y.y.y.y.y.r.y.r.r.t.y.y.y.r.y.y.y.E y.y.y.E w.y.y.w.w.y.r.E y.y.y.y.r.y.r.y.r.r.r.r.r.r.t.r.y.t.t.t.t.t.t.t.t.t.s.t.t.t.r.t.t.u.t.t.u.u.u.u.u.u.u.u.s.u.", "C A C C C D Z C D C Z B Z C C D Z Z Z Z Z D Z Z Z C Z Z Z Z A C Z A D A Z Z Z C Z C Z C Z C C Z Z Z Z Z F Z Z C B Z C Z G C Z H Z Z Z G Z Z G Z D D L Z Z H H D L D H H H H H H H H Z L H Z Z H Z H L H H Z H H H Z L Z Z L H Z Z H D Z D Z D Z Z D Z D Z Z Z Z Z Z Z D Z B C D Z Z Z Z Z Z G G Z G Z H Z Z Z Z A Z C D C C C V C A C C C B C Z C Z Z C D Z C C B Z C Z Z C B Z C Z B Z C C Z C C Z Z Z C T j.A.A.A.A.A.A.H.H.G.F.L.L.L.D.L.S.L.S.L.U.H.L.L.P.L.P.L.L.U.T.U.T.T.T.T.T.T.T.T.~.~.R.~././.!././.(.).(.(.^.^.(.`.`.[.(._._.|.|.^.`.^.|._.{.).|.|.(.(.(.(./.(././.~.T.~.T.T.~.T.T.U.U.U.U.L.L.L.K.Y.L.L.L.L.I.L.L.I.L.Y.U.U.U.L.Y.U.U.Y.L.U.L.L.K.R.U.U.L.K.U.L.L.I.L.U.L.L.L.L.L.L.U.K.L.Y.U.U.P.P.U.U.U.U.I.U.U.U.Y.U.U.U.I.T.T.T.U.U.U.U.U.L.Y.Y.P.U.Y.L.T.T.T.T.~.T.~.~.~.T.~.~.[.T.T.~.Y.R./.R.~.T.T.T.T.[.~.~.!./.~.~./././.^././.(./.(.(.(.`._._.}.|.|.|. X.X.X X.X.X|..X'. X|..X|..X.X.X X@XzX@XdX.X.X.X.X'.|..X.X.X.X.X@X'..X.X.X.X.X@X.XzXdX.XzX.XdXdX.X.X.XdX.X.X.X.X'.'..X.X.X|..X.X.X'..X.X.X.XzX.X.X.X.XdXzXzX.X.XzX.XzXzX.XzX.X.X@XzXzX@XzXzXzXzXzXzXdXdXdXcXvXdX.XcXdXdXdXdXdXcXdX@XvXvX X.XdXdXdXcX.XxX'.zX.X.X.X.X.XzX.X.X.X.X.X|..X|.|..X X'. X X.X.X.X.X.XdX@XdX.X.X.X.X.X.X X.X.X.X.X.X.X.X'..X.X.X.X.X.X.X.X.X X.X.X.X.X.X|..X|.|.|.|.|.`.'..X|..X|..X.X|. X|.|.}.}.}.}. X{._.|.`.|._.|.{.(.|._._.|._.`.`._._.(.(.(.^.(./.~./.~.~.~.T.~.T.T.T.[.T.U.U.Y.P.L.Y.L.L.L.L.S.S.U.H.S.S.H.H.H.H.H.L.S.L.H.H.H.H.H.U.L.D.G.H.S.H.G.H.H.H.S.S.S.S.S.S.S.D.G.D.S.S.S.S.S.S.S.S.S.H.A.H.A.A.H.A.A.h.A.A.A.h.h.h.h.h.k.k.k.f.f.f.f.i.z.i.a.a.a.a.i.i.i.u.a.u.u.u.i.u.u.i.u.u.u.x.u.i.u.i.u.i.u.u.u.i.u.a.i.a.i.k.k.d.k.a.f.k.l.z.h.h.h.h.h.h.A.A.A.A.z.S.S.h.S.S.S.S.S.H.H.H.H.H.L.A.P.P.U.U.P.P.P.L.P.P.U.U.U.U.U.I.T.U.T.I.T.T.T.T.T.T.T.~.T.~.~.T.~.~.~././././.!./.{././././././.~.~./.~.T.T.T.P.T.T.P.P.P.P.Y.P.T.T.T.P.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T./.T.[.~.~.~.(./.(.(.(././.(.(.(.(.(.`.`.`.`.|.{.}._._.}.|.|._.|._._.}.}.}.}.}._._._._._._.}._._.`.`._._.(.(.(.(._._._._._.(._._._._.[.}._.|.^.|.(.^.`.(.|.(.(.(.(.(./.(.(././.(./.(.(./.^.{./.(.{.^.(.{.(./././.^.^././.~.(././.~./.~./.].~.~.~.~.~.~.~.~.~.~.~.~.~.~.T.~.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.P.P.T.P.P.H.L.L.L.H.H.D.H.H.A.H.H.H.S.A.A.A.A.A.A.A.A.S.h.G.h.h.g.h.g.g.k.z.g.g.g.d.k.f.a.k.a.a.a.a.a.s.a.u.u.u.u.u.u.t.t.t.r.r.r.t.y.r.y.y.r.y.y.r.r.y.r.r.E y.r.y.y.r.E y.y.r.y.y.w.y.y.y.y.y.y.y.y.E y.r.y.w.E w.y.y.r.y.r.r.r.y.r.y.r.r.r.r.r.r.t.t.t.t.t.t.r.t.t.r.t.t.t.t.u.t.u.u.u.u.u.i.u.i.", "C C C C C Z B C C Z C Z C Z Z Z F V Z Z Z B Z C C F Z C Z C F Z B Z B Z C Z Z C Z Z C Z Z Z Z Z C D B Z B Z Z Z D Z Z Z D D D C Z Z Z Z Z L Z Z D Z L Z D H H D H S Z D H H H D L H H H H H H Z H H Z H H H H H H H Z L L Z Z Z D H D H D Z Z F Z Z Z D Z Z Z Z G B D C Z G Z Z G Z Z Z Z Z Z L Z Z Z Z Z Z C Z Z Z Z B F C C Z C C C F C Z C C C Z C C C C Z Z D C Z C Z Z Z D Z Z D Z Z Z Z Z Z Z C Z A U j.D.A.H.A.H.H.A.G.H.S.L.S.S.L.L.L.S.H.L.L.U.L.L.L.L.L.T.T.L.T.T.T.T.T.T.T.T.T.~.T.~.~.~.T./././.(.(.{.(.|.^._.(._.(._._._._.^._.|.`.|._.^.|.`.(.^.(.(.(.(./.^./.~./.~.T.~.T.T.T.T.U.U.U.L.L.L.L.L.L.U.L.U.L.L.L.L.I.U.U.T.P.U.L.L.L.L.L.L.L.L.U.L.L.L.L.L.Y.U.U.U.U.U.U.K.L.L.I.L.U.K.L.L.L.U.Y.U.Y.U.U.U.L.L.U.L.U.I.I.U.T.T.T.T.U.T.T.U.U.U.L.U.L.P.P.U.T.T.T.T.~.~.T.~.T.~.~.~.T.T.~.T.(././.T.~.T.(.E.XX[.~.~.~.~.~.~.~././././.(./.(.^./.(.(.(.|._.}.|.|.|.|.'.|.|.|.|.|.|.|.|.'.|. X|..X X.X.X.X.X X.X.X.X.X.X.X.X.X|..X.X.X.X.XzX'.zXzX'.zX'.dX%X.X.X.X.XzX.XzX.X.X.X.X.X X X.X.X.X.X.X.XdX X.X.X.X.X.X.X.X.X#X.X'..X.XzX.XzXzX.XzX.XfX.XdXdXdXdXzXzXzXzXzXzX.XcXdXcX.XcXcX.XdXxXdXxXdXdXcXfXdX XdXdXdXdXdXdXxXxX.XzXxXzXzX.X.X.X.X.X.X.X.X|..X.X.X|..X.X.X.X.X.X.XdX.X.X'.zXdX.X.X.X.XzXdX@X.XdX'..X.X.X.X.X.X.X.X X'.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|..X|..X.X|..X X|.|._._.|.}.}.|.}.}.|. X`.`.|._._.|.`.|._._._._._._._._.(.(.(.^.)./.~./.~.~.~.~.~.T.T.U.U.U.U.T.P.U.L.L.L.L.L.L.P.L.L.S.L.L.L.S.H.H.H.G.H.H.H.H.H.H.H.G.G.D.H.S.D.H.H.S.D.G.G.S.S.S.H.G.S.G.S.S.S.S.S.S.h.S.S.S.S.S.A.A.A.A.A.A.A.A.A.j.g.A.h.g.k.k.k.k.f.f.f.f.k.k.i.d.a.a.a.i.a.a.a.i.a.u.u.i.u.i.u.i.a.a.t.u.i.i.i.i.a.u.u.u.u.u.i.i.a.i.f.a.i.k.k.k.z.k.k.l.h.l.h.l.h.A.A.h.A.A.A.G.S.H.S.S.S.G.S.G.H.H.G.L.L.L.D.L.L.L.L.U.U.P.P.U.U.U.U.T.T.U.T.I.U.T.U.T.T.T.~.T.T.T.T.~.T.[.~.~.~.~./.(./.(./././.^.(.~./.~./.~.~.T.~.T.T.U.T.U.P.P.P.P.P.T.P.T.T.Y.T.P.U.T.T.P.T.T.T.T.T.T.T.T./.T.T.~.~.~.~././././.(./.^.`.!.(.(._.[.`.(.(.`._._.|._.}.}.}._.|._._._.}.}._.}.}.{._._._._.}._.|._.(.(.(.(.(.(.(.(.^._.(._._.`.(._.(.(._.}.}.(.`.(.|.|.(.^._.(.`.`.(.(.(.(.(.[./.(.(.(.{.(.(.(./.(./.(././././././././.!.^./.(./././.~./.~.~.(.~.~.~./.~.~.~.~.T.T.~.T.T.~.T.T.T.T.T.T.T.T.T.Y.P.T.T.T.U.T.U.U.L.U.S.U.H.L.H.H.H.H.H.H.A.H.G.A.G.A.A.A.A.A.A.A.A.h.h.h.h.h.g.g.g.g.g.f.g.g.a.g.f.a.f.a.a.a.a.a.a.a.a.u.u.u.u.u.u.t.t.t.r.r.y.y.r.r.y.y.y.y.y.r.y.r.y.E r.y.w.y.y.w.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.r.y.y.y.y.y.y.y.y.y.w.y.y.r.r.y.y.r.y.r.r.r.r.t.t.t.t.r.r.t.t.t.r.r.r.t.u.t.t.u.t.u.u.u.u.u.i.", "Z C C C Z C C D F B D B Z Z Z Z Z Z Z Z Z Z A Z Z Z Z Z C Z Z B D Z C Z Z C Z Z Z Z Z B D Z Z Z Z Z Z Z C Z B D Z Z Z Z Z Z Z Z Z Z L L Z Z Z Z D D D D H H H H H H Z H G H H H Z L H Z H H Z H H H H H H H H H H H H H L L Z H Z Z Z Z Z F H Z Z D D Z Z Z Z Z Z C Z Z Z Z Z Z Z Z G L L Z Z G G Z Z Z Z Z Z C Z C Z C C C C Z C C Z C C C C F C C Z Z C Z Z Z D C G F Z Z Z Z B D Z D Z Z Z Z C Z B Z Z G e.J.A.A.A.S.A.A.H.H.L.L.A.L.S.L.U.A.U.D.P.H.P.P.L.L.P.U.T.U.T.U.T.T.T.T.(.T.T.T.~.~.T.~.~.~.(.(.(.(.(.`.^.^._._._.|.}._.}.}._._._._.^.|.|.^.(.|.(.(.(.(././.~./.~.~.~.~.T.T.T.T.T.U.Y.L.Y.K.J.L.L.L.L.I.I.L.L.L.I.I.L.P.P.P.U.Y.L.L.L.L.L.L.L.L.L.L.L.I.L.I.L.L.Y.L.U.U.L.L.U.L.L.L.L.L.L.L.L.U.L.U.L.L.P.Y.P.L.U.L.U.U.U.U.U.T.U.T.I.T.U.I.I.I.I.Y.U.U.Y.T.T.~.T.~.T./.~.~./.~.~.T.~.~.~.[.~.~.~.~.~././.!.T.^./././.T./././.!.(.!./.(.(.(.(./._.(._._._.|.}.}.}.|.|.|.|.|.|.|.|.|. X|..X|..X.X.X.X.X.X@X.X.X.X.X X.X|.'..X.XxX.XzX'.xXzX.XzX.X.XzXdX|..X.XdX.X.X.X.X.X.X.X.X.X.XdX.X.XdX X.X.X.X@X.X.X.X.X.X.X.XdX.X.XzX.XdXzXzXzX.XdX.XzXzX.XdXxXdXdXdXfXdXdXdXzXdXdXcXdX.XdXcXcXdXfXdX%XdXdXdXdX.XzX XvX.X XvXdXdXzXdX.X.X.XzX.XzX.X@X|.dX.X.X.X X|..X.X.X.X.X.X'..X.X.X.X.X.X.X.X'.dX.X.X.XzX.X.X.X.X.X X.X X.X.X X|..X|..X'.|.}.|._.|.|.|._._.|.|.|.|.|.|.|..X X.X.X X|.|. X_.}.|.{. X|._. X_.|.`._._.{._.|._._._.}.}.(._.(.(.(.(./.(././.~./.!.~.!./.T.T.T.T.T.P.P.Y.P.U.P.P.L.L.L.H.L.H.H.L.H.H.H.H.H.H.H.H.Z.H.S.S.H.H.A.H.A.H.S.S.S.S.S.S.S.S.S.S.G.H.A.H.S.S.S.A.A.D.A.S.S.S.S.S.A.S.A.G.A.A.A.A.A.A.h.A.A.g.h.h.g.g.k.k.k.k.k.k.f.f.z.i.k.i.i.a.a.i.a.a.i.i.s.u.u.i.i.i.a.a.a.a.a.u.i.i.i.i.i.u.a.i.i.i.i.i.a.a.a.g.s.j.j.h.l.z.h.h.l.l.h.l.A.A.l.A.A.S.S.A.S.S.S.S.H.H.H.L.G.L.L.L.L.L.U.L.L.U.P.L.U.U.U.U.T.T.T.T.T.I.T.U.Y.T.T.~.T.T.~.~.~.T.~.T.[.~././.(.E./.(./.(././.(.(.~.~.^.^.~.~.T.T.~.T.T.T.T.P.T.P.P.P.P.T.T.Y.P.Y.U.T.T.^.T.T.Y.~.T.T.T.T.T.~.~.!.~.~.~.(././.(.[.(.(.(.(._.(._._._._._._.|._._.|._.}.}.}._._._._.|._._._.[._.(._._._._._.(.`.`.`.(.^.(.(.(.(.^.`._._.^.(.{._.(.(.^.|.^.|.(.`.^./.{.^.{._._.^.^.^.(.(.(.(.(.{./.(.(.(.[.^.(.{.^.^./.^.[./././././.~./.~.~.E.(.(.~./.~./.T.~.T./.T.~.~.~.~.T.T.Y.T.~.T.^.P.T.T.T.T.T.T.T.T.T.U.U.T.U.U.U.L.L.L.L.H.H.H.H.H.H.H.G.G.H.S.S.A.A.A.A.A.A.A.g.G.j.h.h.l.l.l.k.k.g.a.g.g.f.f.f.a.f.a.a.a.a.a.i.a.i.i.i.i.u.u.u.u.t.t.t.t.r.r.y.y.y.y.y.y.y.y.y.r.y.r.r.r.y.t.y.y.y.y.y.y.y.y.y.y.y.E w.y.y.y.E y.y.y.y.y.y.y.y.y.y.y.y.y.r.r.r.y.y.y.y.y.w.y.y.w.r.t.t.r.r.r.r.r.r.r.t.r.t.t.u.u.t.u.t.u.u.u.u.u.", "B Z Z C C Z Z B Z Z Z Z Z Z D Z Z Z Z Z Z D Z Z Z Z Z C Z Z D B Z Z Z Z Z Z Z F C Z Z D B Z Z C B Z Z C Z Z Z Z Z Z Z Z D Z G Z Z Z Z Z G H Z G D D H G H H H D H H H H H H K D L Z H H Z H H H H H H Z H H H J H H H H Z L L Z H Z H Z D H Z D D D D D Z Z Z H Z Z G D Z Z Z G Z Z Z Z Z L Z Z Z D D Z Z Z Z G D B Z C Z Z C C C C C C C Z C C Z Z C Z D Z Z B Z B V Z B D Z Z Z Z Z B C Z C Z B Z Z D Z D T Z.G.A.H.S.H.H.H.H.S.L.L.D.L.D.P.U.U.U.P.H.P.H.L.U.U.L.T.U.U.T.T.T.T.T.T.T.T.~.T.T.T.~.~././.(.(.(./.(.(.`._._._._.}._.}.}. X_.|._._.^.(.(.(./.(.^.^././.(.(.(././.~.T.~.T.T.T.T.U.U.L.L.L.L.L.L.Y.L.L.L.L.I.L.L.U.Y.U.T.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.H.U.L.U.L.L.L.L.U.L.L.U.L.L.K.Y.K.L.U.L.L.L.L.L.S.L.L.L.U.U.U.U.I.U.U.U.U.T.I.U.T.U.U.Y.U.T.T.T.T.~.T.!.~.~.T.~.~.T.T.~.~.~.~.~.~.~./.!./././././.~.^./././././.~./.~./.~./././.(.(.(.(.(._._.|._.}._.}.}.|.|.|.|.|.|.|.|.|.|.|.|.|..X.X.X.X X X.X.X|..X|.|..X.X.X.X.X.X.X.X.X'.zX.XzX.XzXdXfX.XzX'.dX.XzX.XzX.XzXxX.X.X@XdX@X@X.X.XdX.XzX.X.XzXzXdXzX.XdXzX.X.XzX.X.X.XzXzX.XxX.X.XzXdX#XdXdXdX.XvX XcXdXcXdXdXdXcXcXdXdXzXvXzXzXmXdXdXmX%X.XcX.XdXvXdX XdXdX.XzX.XdX.X.X.X'.'..X'..X.X.X|..X.X|..X.X.X|..X X.X.XdX.XzX.X.XdX.X.X.X.X.X.X.X X.X.X.X X.X.X'..X.X.X'.|.|.|.}.|._.|.|.{._.|._.|._.|.|.|.|.|..X|.|..X.X|.|.|.}. X|. X|.|.|.|.`.`._.|._.`._._._._.|.[._.(.(./.(.^./.!./.{.[./.(.~.T.(.T.~.T.T.P.T.P.L.Y.U.P.L.L.L.L.H.H.H.H.H.H.H.H.S.S.G.H.G.H.S.S.S.H.A.A.h.D.z.z.S.A.A.A.A.S.S.z.G.A.G.A.A.S.S.S.A.S.h.A.S.S.S.H.S.A.H.S.H.A.A.g.A.A.h.h.h.A.h.h.g.g.g.k.k.k.f.d.k.i.f.k.i.a.k.a.a.a.a.i.a.a.i.i.u.i.i.i.i.a.u.u.a.a.a.a.a.i.i.i.i.i.i.i.i.i.i.k.i.a.g.a.f.j.f.k.l.l.l.l.l.l.l.A.A.A.A.A.S.A.G.S.S.S.G.S.S.H.G.L.L.L.L.P.L.L.L.U.U.P.U.U.U.T.U.U.T.T.T.T.T.T.T.T.Y.T.T.~.T.~.T.T.~.~.~.!.~././.(.^./.(.(./.(.(.~.(.(.(.!.~.~.T.[.T.T.T.T.T.P.P.P.T.T.Y.P.Y.Y.T.oXD.T.T.T.T.~.T.T.T.T.T.T.T.~.T.T.~.~././.~./.(./.(.(.(.(._.(._._._._._.|._._.|.|.|.|._.}. X|._. X_.`._._.`._._._._._._._.^.`.(.^.^.(.`.(.(.^.(.`.^.`.^.`.(.^.(.(.(.^.(.(.(.^.`.(.|._.|._._.(.`.`.(.(.(.(.(.^.(.{.(.(.(.(.(./.).^.^./.~././.^.~.~./.~./.~.~.~.~.R.~.T.~.T.~.~.~.T./.T.T.T.T.~.T.T.~.T.T.T.T.T.T.T.T.T.T.T.U.T.T.U.U.P.P.P.U.L.L.L.H.L.H.S.H.A.A.H.G.A.A.h.A.A.A.A.A.A.h.A.A.A.h.h.h.l.l.h.k.g.g.g.z.f.f.f.k.f.a.f.a.i.i.a.a.i.i.u.u.u.u.u.t.t.t.r.r.r.r.r.r.t.r.y.w.y.r.r.y.r.w.y.r.y.E y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.E y.E y.w.y.y.y.y.y.y.w.r.y.y.y.y.y.y.y.y.w.y.y.y.y.y.r.y.r.y.y.r.r.r.r.r.r.t.t.t.t.t.u.u.u.u.t.u.u.", "A C C Z Z C Z Z C Z Z Z Z D D D Z D Z Z Z Z D D V Z F Z C Z D Z C Z Z B Z C Z Z B Z Z Z D Z Z Z F Z C D Z Z Z Z Z B G D Z Z Z Z Z Z Z Z Z Z L H D D D D Z H D H H H H H Z H H H H H H Z L H H H H H H L J H L H H H H H H H L H Z J D D D Z D D D Z Z D G Z Z Z D D D D G Z Z G Z L Z G Z Z Z Z Z Z Z G Z Z Z Z Z Z Z C B C Z C D B C C C B D C C Z Z C Z Z Z Z Z B Z Z Z Z Z Z Z Z Z Z Z Z Z C Z D Z F Z Z T A.A.G.h.S.A.A.G.H.D.L.L.D.S.L.S.U.D.P.H.P.P.P.P.U.U.U.P.T.T.U.T.T.T.U.T.T.T.Y.P.~.~.~.~././.(.^.(.(.(.^._.[.|.|._. X}.|._._._._.[.(./.(.(.(./.(.(.(.(././.~.~.~.~.T.~.~.T.T.T.U.T.Y.L.L.L.L.L.L.L.I.L.L.I.Y.L.U.U.U.U.Y.L.L.L.L.L.L.L.L.L.K.L.L.R.I.L.U.K.U.L.K.L.Y.K.L.L.L.U.L.L.L.U.L.L.L.U.L.L.L.L.L.L.L.P.L.U.L.U.R.I.I.I.U.U.Y.T.T.I.T.I.U.T.T.T.T.~.T.~.T.~.T./.~.~././.~.~.~.T.[.~./././.(.(././././././.~./././.~./.~.~.(.(././.(.(.(.).(.^.|._.}.|.{.{.|.|.|._.|.|.|.|._.|.|.|.|. X.X|..X.X.X.X.X.X.X|.|.'..X'.'..X.X.X.XzX.XzX.XzXzX.X'.%XdX.XdX.XdX.X.X.XzX.XzX.X'..XzX X.XdX.X.X'.dX.X.XzX'..X.X.XzX.XxX.XvXzXzX.XzX.XzX'..X.XzXzXzX.XdX%X@XdXdXzXzXzXdXcXcXdXcX.XdXcXdXzXzXzXdXnXdXdXdXdXcXdX.XdX.XvXdXdXdX@X.X.XdXdXzX.X.X.X.X.X'..X.X.X.X X X.XdX X.X.X.XzXdX.X.XdX.X.XzX.X.X.X.X.X.X.X'. X.X.X|..X.X|..X X|.'.|.|.}.}._._.[.|.|._.`.(._.`._.|.|.|.|. X.X|.|.|.|._.|. X|. X|. X'.|.|._.|._._.`._._.`.^.^.(.(.).(./././././.~.~.~.[.~.(.T.T.T.T.T.R.P.P.U.L.L.P.L.P.L.H.H.L.H.S.H.H.H.H.D.A.S.S.A.l.A.A.h.S.A.A.A.A.A.A.A.A.A.A.A.A.A.A.S.G.G.A.A.G.A.S.A.z.A.A.A.A.A.S.h.S.A.G.z.A.A.A.h.A.G.h.h.A.z.h.h.h.g.g.k.g.k.f.f.i.f.k.a.i.a.i.a.a.a.a.a.i.i.a.a.i.i.a.a.a.u.u.a.a.a.a.a.i.a.a.a.i.u.a.i.i.i.k.i.g.f.g.j.g.f.k.l.l.h.l.l.h.h.h.A.A.A.A.A.H.A.G.A.S.S.S.H.H.H.G.H.L.S.U.L.L.P.P.T.U.P.P.U.U.U.T.T.T.T.T.T.T.T.T.Y.T.~.T.~.T.T.~.~.~.~.~.E./././.~.^./.^.^.^.(.(.(./.~.(.(.~.~.~.T.T.T.T.T.T.T.T.T.T.P.P.P.Y.P.Y.Y.D.T.T.T.T.T.T.T.T.T.T.T.~.~.~.~.~./.(.(.(.(.(.(._._.(._._.|._._._._._.|.|.|.|.|.|.'.|.|.}. X_.'.`.(.`.`.(._._._._._._._.(.(.`.(.(.(.(.(./.(.(.{.`.[.[.^.(.(.(.{.^.(.(.(.(.(.(.(.^.^.|._._.(._._.^.(.(.(.(.(.(.(.(.(.^.(.{.(./././././././.~.~./.~.~.~.~.~.~.~.T.~.~.~.~.T.(.Y.T.T.T.~.T.T.T.T.Y.T.T.T.U.T.T.U.U.U.Y.U.U.Y.T.L.U.L.L.L.L.L.L.L.H.H.H.H.A.A.S.S.S.A.S.H.A.A.h.A.A.g.h.A.A.h.h.S.z.h.l.l.k.a.g.g.a.z.z.g.a.a.a.a.a.a.a.a.i.i.i.u.u.u.u.t.t.t.t.r.r.r.r.y.r.y.y.y.y.y.y.y.y.r.r.y.t.y.t.y.y.y.E w.y.E y.y.y.y.w.y.y.y.y.y.E w.y.y.y.y.E y.y.y.y.y.E y.y.y.r.y.E y.y.y.y.y.E w.y.y.y.y.y.y.y.y.t.t.r.r.r.t.t.t.u.t.t.u.u.u.u.t.", "Z Z Z C Z Z Z D D Z Z Z Z Z D D D D D Z Z Z D A Z Z Z Z Z Z A Z Z Z Z F F C Z Z D Z Z C B Z Z Z Z Z Z Z B D C Z Z F B Z Z Z D Z Z Z L Z L Z Z L D D D L H H H H H H D H H H H H H H H H Z H H H H J H L L H H H H H H H H H H Z G D D D D D D D D D Z D Z Z H Z G Z D Z Z Z Z C L Z Z Z Z Z Z Z H Z Z Z Z Z Z Z Z C Z Z C D C C Z C C Z C C D C C D B Z Z C Z C Z D Z Z Z Z Z Z Z Z Z C Z Z Z Z Z A Z B Z Z T h.A.A.A.A.H.G.H.H.L.L.S.L.Z.S.L.S.P.H.P.H.H.P.S.P.U.U.P.T.U.U.T.T.T.T.T.T.Y.T.P.T.T.!././.(./.(.(.^.`.|.^._.|._.|._.|.|.|._._._._.`.|.{._.{.|.(.(.(.(.(./.(.~.~.~.~.~.T.T.T.T.T.U.U.U.L.L.L.L.L.L.L.I.L.L.K.U.U.U.Y.Y.L.U.U.L.L.L.L.L.K.L.U.L.L.L.L.L.L.U.U.L.L.L.L.L.L.L.L.L.U.U.U.L.L.L.L.L.Y.L.L.L.L.L.L.L.L.L.U.U.L.U.U.Y.U.U.U.U.I.I.T.U.T.T.U.T.T.T.^.~.~.!.~.~./././././.~.~.~.[.~./.(.(././.(./././.(././././././././.~.)./././././.(.(._.(.[.}.}._.|._._.|.|._.|._.|. X X|.|. X|.|..X.X X.X.X.X.X|.|.|.|.|. X.X XdX@X.X.X'.zXzX.X'.zX.XzXdXdX.X.X.XdXzXzX.XdX.X.XzX.XzXzX.XdX'.dX.XdXdXdX.X.XzXzXzXxX.XzX.XxX.X'.dXzX.X.X.XzX.XxXzX.X$X.XdXdXdXdXcX XzX.XdXdXdXdX.XcXdXdXvXzX.XzXdXdXdXdXcXdXdX.XdXvXdX.X.X XdX.X.XxX.X.X'.zX.X.X.X.X'..X.X|..X|..X|..X.X.X X@X.X.XdX.X@XdX.XdX@X.X.X.X.X|. X.X.X X@X|.|..X.X'..X X|.|.`._.}.|.(._._.(.|.|.(._.|.`.|.|._. X|.|.'.'.|.|.|.}.{.|.|. X_.|._._.|.}.|.|.(._._.^.^.|.(.(./.(./././.!./.~././.~.~.T.T.T.~.T.T.T.U.Y.U.L.P.P.P.S.L.L.L.H.L.H.G.H.H.H.S.S.S.A.A.A.A.A.A.A.A.A.h.h.A.A.h.A.A.A.A.D.A.A.A.h.A.A.A.A.A.S.h.S.A.A.A.A.h.S.h.A.A.A.h.A.A.A.A.A.h.A.h.h.Z.h.h.k.g.f.k.g.f.f.f.f.i.i.z.f.f.d.k.a.a.a.a.a.a.i.a.a.a.i.a.a.a.a.a.a.a.a.a.a.a.u.a.a.a.a.a.u.i.f.i.i.k.i.a.g.f.k.h.k.l.z.l.l.l.h.A.A.A.A.A.A.A.A.S.S.S.S.G.H.H.L.L.L.L.U.L.P.P.P.P.P.T.P.P.U.T.U.T.T.T.T.T.T.T.T.T.~.T.~.T.~.~.T.~.~.!.T.^./././.^.^.(.(.(.^.(.(.(./.^./.E.[.~.~.[.T.T.T.T.T.T.T.P.P.P.T.P.P.Y.T.Y.hXP.T.T.T.T.T.T.T.~.T.T.~.~.~.~.!./.^.(.(.(.(.(.(.(.(._._._.|._.|._.|.|._.|.|.|.|.|.|.|.|._.`.(.^._._.`.{._._._._._._._._.(.(.(._.(.^.(.(.[._.^.(.].^.(.(.(.(.).(.(.(./.^.(.(.(.`.[.(._._.`._._.^.|.^.(.(.(.(.(.(.(.(.(.).(./.(.(././././.^./.~././.!.~.~.~.T.~.~.T.~.T.T.T.T.T.T.T.Y.T.T.T.Y.T.T.T.T.T.U.U.U.U.U.P.L.L.L.L.L.U.L.L.U.U.L.H.H.H.H.H.G.A.H.A.A.A.S.A.A.A.A.A.A.A.A.A.h.l.l.h.h.A.h.z.k.z.g.g.g.g.z.a.f.z.a.a.a.a.a.a.i.i.i.i.u.u.u.u.u.t.t.t.r.y.r.t.y.E r.w.r.r.r.y.r.y.y.y.w.E y.r.y.y.y.y.y.y.y.w.y.y.y.E y.y.w.E y.y.y.y.E y.y.y.y.y.y.y.y.y.y.y.r.y.y.y.y.y.y.y.y.E y.y.y.r.E r.y.r.y.r.E r.r.r.t.t.t.t.t.u.t.u.u.u.t.", "D B Z D D D Z Z Z Z Z Z F D Z D D D D H D D D Z Z D Z Z Z Z Z Z Z D Z Z Z B Z D C D C Z Z C Z B Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z D D D D Z Z Z D D D D Z J Z H H H H H H H H H F H H J H H H H J J L J J Z L J P H H H H H H H H Z L L H Z D L D D D D D D D Z Z H Z Z L Z L Z Z Z Z L Z Z L Z Z D Z D Z Z Z Z Z Z Z C C Z C D C C C C V Z Z C C Z Z C Z B D Z Z Z Z Z Z Z F D Z D B Z Z C Z Z Z Z A Z Z Z H Z.l.A.A.G.S.S.S.S.H.H.H.H.H.H.H.H.S.L.L.L.P.L.L.L.L.Y.P.Y.Y.T.T.U.T.T.T.T.T.T.T.T.T./.~././.(.(.{.`.(.`.(.`._._._. X_. X_. X_._._._._._.(.(.(._.(.(./.(././.~.~.~.~.T.T.T.T.T.U.U.U.U.U.L.U.L.L.U.L.I.P.U.Y.T.Y.U.T.P.P.U.U.U.L.L.L.L.L.L.L.P.P.P.Y.U.U.L.U.L.L.L.L.L.L.L.U.L.P.L.L.L.L.U.L.U.K.L.L.L.L.L.L.L.P.P.L.L.U.U.L.U.U.Y.L.I.I.T.T.T.Y.Y.T.~.T.~.T./.~./.~././.[././.~.~.!./././.(.~.(.(.^.(.(.(./.(./.(.(.(./.!./././././././.^./.(.(.{.`.^.`.`.(.`.(.`._._._.'._._._.|. X|.|.|. X.X|. X.X.X.X`.'.|.'..X'..X.X.X.X@XdXdXzX'..XzXzXzX.X.XfX X.XzX.X.X.XzX.XzX.XzXzX'.dX'..XzXzX.X'.zX.XzXzXzX.XzX.X.XzXzXzXzXzXzX'.vXzX.XdXdXdXdXzX.XzXzXdXdX XdXcXdXdXdXdXcX XdXdXcXcX.XcXdXzXdXzXzX.XdXdXdX%XdXdXdXdXdXxX.X.X.X.X.XdX X@X.X.X.X.X.X.X.X.X.X'..X'..X.X.X.X.XdX.XdX.XzX.XdX.X.X.X.X.X|..X'..X.X|..X X|..X'.|..X|.|.|._.|.^.|._.(.(._.{.{.`.^.|._._.|.|._.|.|.|.|.|.|.'.|.|.|.}.|.}.|.|.|._._.|.|._.|.`.`.(.(.^.(.(.~././././.T././.T.~.~.~.~.T.T.Y.U.U.U.Y.L.L.L.L.L.D.U.L.L.L.L.H.H.H.S.G.Z.H.h.A.A.A.A.A.g.A.g.G.h.h.h.l.l.D.A.A.z.A.g.A.A.A.h.A.A.A.A.A.A.A.A.h.A.h.A.A.A.A.A.A.A.A.A.A.j.A.h.G.l.l.l.h.h.h.h.k.z.k.k.k.k.a.g.a.f.f.a.a.k.a.f.a.a.a.a.i.d.a.i.a.i.a.a.a.a.a.a.a.a.a.i.a.a.a.a.a.a.d.i.a.a.f.a.a.f.z.a.k.g.h.h.g.g.h.h.A.A.A.A.A.A.A.G.S.S.S.G.S.H.H.H.H.S.D.L.A.L.L.L.P.P.P.P.T.T.U.T.T.T.I.T.I.T.T.T.T.T.T.~.T.~.~.T.T.~.~.T.~.~.~.~.~.^.~./.(.(.^._.{.).(.(.(./.(./.!.~.~.~.T.T.T.T.T.T.T.P.T.P.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T./.T./.T.~.(.(.(.(.(.(.(.|.^._._._.`._.|.|.|.|.|.|.|.|.|.|.|.`.`._._._._._._.(.|.^.|._._._.(.`.(.`.(.(.(.(.(.(.(./.(.(././.(.^.(.(./.(.(.(./.^.(.(.(.^.(.(.`.(.(._.[.(.(.^._._._.(.(.(.(.(.(.(.(.(.^.(./././.~.~./.~.~.~.T./.~.T.T.T.T.~.T.^.~.T.T.T.Y.T.T.Y.Y.T.T.T.T.T.T.P.T.P.P.T.T.U.U.P.P.P.P.P.L.L.L.L.L.D.L.G.H.L.S.H.G.S.H.A.A.S.A.A.A.A.A.j.G.l.l.z.G.g.l.l.A.l.l.l.h.h.g.f.a.z.g.a.f.f.a.f.a.a.a.a.a.i.i.i.u.u.u.u.u.t.r.r.r.r.r.y.r.y.r.r.r.r.y.y.y.r.w.r.y.r.y.y.y.r.E w.y.y.y.y.y.y.y.E w.y.y.y.y.y.y.y.w.E y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.w.y.y.y.y.y.y.y.y.y.w.y.E w.y.r.E r.r.t.t.t.r.t.t.t.t.u.t.u.u.", "Z Z Z B Z Z Z Z Z D D Z Z Z D D D D D Z D D Z Z D Z D D Z Z Z Z Z Z Z D Z Z D C Z Z Z Z Z Z Z Z Z Z Z L Z L Z Z Z D Z Z Z Z G Z Z D D D Z Z L Z D D H D H H H H H H H H H D H H H H H H H H H L L Z L Z L L L J H D H H H H L C L D Z Z Z H Z H D D D A A D D A Z Z Z D Z Z Z Z Z G Z Z Z G Z L D Z Z Z Z Z Z Z D C Z Z Z A A B C D C F Z C G V C Z Z Z Z Z Z Z Z Z Z C Z V D C Z Z D Z Z Z G C Z Z Z Z Z C T g.Z.G.A.H.S.A.J.S.H.H.H.H.H.H.H.H.L.L.L.S.S.L.P.U.L.U.P.Y.P.Y.Y.Y.T.T.T.T.T.~.T.~.T.T.~./././.(./.(._.`.(._._._.|._._._._._._._._._.(._.(.(.(.(.^.(.(./.(././.~.T.~.T.T.~.T.T.T.U.U.P.U.L.L.L.L.U.L.U.L.U.Y.U.U.Y.Y.U.P.P.L.P.L.L.L.L.L.L.P.P.Y.P.U.U.L.L.L.U.L.L.L.L.U.L.L.P.L.P.L.L.H.K.L.U.L.L.L.L.L.L.L.L.L.P.L.U.U.L.L.L.U.U.R.Y.U.T.T.T.T.T.~.T.~.~.(.~./.~././././././././././././.(.(.^.(.(./.(.(.(./././.)./.(.!.)./.(./././.^.^.^.(.(.{.^.`.(.(.(.`._._._._._._._._. X_.|.|.|..X|.|..X.X'..X.X|..X.X.X|. X.X.X.X XdX.XdX'.'.zX.X'..XzXzX.X|..XzX.XzXzX.XzXxXzX.X.XzX@XzXzXzX.X.XzX.XzX.XzX.XzX.XzXzX.XzXzXzXzXzXxX.XzXzXzXzXzXdX@XxX.X.XdXdXzXdX@XdXcXdX XcXdXcXdXdXdX.XdX.XzXdXzXdXcXcXfXdXzXzX.XdXdXdX.X.X.XxX.X.X@X.XdXdX.X.X.X'..X.X.X.X.X.X.X.X.X.X.XdX.X.XzX.X.X.XdX.XzX.X.X.X.X.X|..X|..X|..X.X|..X'.|.'.|._.|.|.(.(.(.(.^.|.^.{.(.(.(.`.|._.|._.|.|.{.|.|.|.|.|.}.|.|.|.|.}.}.}._.|._.|.{.|.(.`.(.^.{./.~.(.~.~.T.^.~.T.~.~.~.T.T.~.T.T.T.U.Y.L.U.L.L.L.L.L.U.H.L.L.S.H.H.H.H.S.G.G.A.A.A.A.A.h.A.A.h.A.j.h.h.h.h.h.d.l.h.A.A.A.A.A.A.A.A.A.G.g.h.A.A.g.h.A.A.A.A.G.j.A.A.A.z.A.h.h.l.A.l.l.h.h.h.h.h.z.g.g.k.k.k.k.g.k.x.f.f.f.f.f.f.a.a.k.a.k.k.i.a.k.k.a.a.a.a.k.a.a.a.k.a.a.a.a.a.a.a.a.a.a.a.a.a.f.f.z.f.f.g.g.l.g.h.k.S.A.A.A.A.A.A.G.A.A.S.G.S.G.H.H.H.H.H.L.L.L.U.L.L.P.P.P.T.T.T.T.T.T.T.T.T.T.U.T.I.T.T.T.T.T.~.T.T.~.~.T.~.T.~.~.~./.^.[.(.(.~.(.{.(.(.(.(.(./.(././.^.~.~.~.T.~.~.T.T.T.T.T.T.T.P.Y.U.Y.Y.Y.Y.T.T.T.T.T.T.~.~.T.T./.~./.~./.(.(.(.(.{.(.`.(._.^.|.`.^.|._.|.|.|.|.|.|.|..X|.`.'.|.|. X|.|._._.|.^.^._.(._.{.^.`.^.^.(.(.~.(././.(././.(./.^././.(.(.(.(.(./.(./././.^.(.(.^.(.(.(._.(.^.`._._._.(.(.(.(.(.(.[.(.(.(./.^.~./.~./.~./.~.~./.^.~.~.~.[.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.Y.Y.P.P.T.L.U.U.U.U.P.P.L.P.L.L.L.H.U.H.L.H.G.H.L.H.G.H.A.H.A.A.A.A.A.A.A.h.l.l.l.l.h.g.l.A.h.h.l.h.h.k.h.g.g.g.f.g.f.f.a.f.a.a.a.a.a.i.u.i.u.u.u.t.t.t.r.t.t.r.r.r.y.r.y.r.y.y.w.r.E r.y.y.t.y.w.t.t.y.y.y.y.w.y.E y.w.y.E y.y.w.E w.E E w.y.y.E y.y.y.y.y.y.y.y.E E w.y.y.E y.y.y.E y.y.y.y.y.E E y.y.y.y.y.E y.r.r.r.r.t.t.t.r.t.t.u.u.u.", "Z C Z Z Z Z D D D Z Z D D D D D D D D D D D D D Z F Z Z D Z D D Z D Z D Z Z D Z D C Z Z Z Z G Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z B Z D Z D Z Z H Z Z D D D D D L H H H H H H H H H H Z H H H P H L H Z J L L H J L Z H H H H J Z H H H Z H Z H Z Z Z D D D D D D D H L Z G Z G Z Z Z Z G Z Z Z Z Z Z Z Z G Z Z Z Z Z Z Z C Z C Z Z C Z C C Z C Z V Z C Z Z Z D C Z Z Z Z Z Z Z G Z Z Z Z C D Z Z Z Z Z Z Z Z Z Z G T A.A.A.G.S.h.S.S.S.H.S.H.H.G.H.S.S.L.L.L.L.P.L.L.U.P.Y.P.T.P.Y.T.T.T.T.T.T.T.~.T./.~.~.~././.(.(.(.`.`.`._._._.|._. X_. X_._._._._._.(.(._.(.`.(.(.^.(./././.~.~.^.T.T.T.T.T.T.U.T.P.U.U.U.U.P.P.U.L.U.T.Y.U.T.U.L.L.U.L.L.L.L.L.L.P.L.P.P.P.P.P.L.L.Y.K.L.L.L.L.L.L.L.L.U.L.L.L.L.L.L.U.K.J.L.L.L.L.L.L.P.P.A.P.L.L.L.U.U.U.U.U.T.Y.T.T.T.T.T.T.~.T.T.~.~./.~.~././././././.~.^././.^.(.(.(.(.(.(.).(.(.(./.(./././././.~.!.!./.(.(.).{./.(./.(.^.`.(.(.(.(.^.^._.(._._._._.|.`. X`.|.|.|..X X.X X.X.X.X.X`.'.|.'..X.X X.XdXdX.XvX.XzX'..XzX.X.X.X.X.X.X.X.X.XzXzX.X.XdXzXzX.XzXzX.XzXzX.XvX.XzXzX.XzXzXvX.XzXzXzX.XcXdXzXzXzXdXzXdXdXdXdX.XxXzXdXdXdXdXcXdXdXdXcX.X.XcXdXdXcXcXcXdXcXdX.XdXdXdXdXzX.XzXdXdXdXdX.XzX.X.X.X'.xXzX X'..X.X.X.X.X.X|..X.X.X.X'..X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X|..X X|.|. X.X.X|..X|..X|.|.`._.|.^.|.^.(.(.(.(.(.(.(.{.(.(.(.|._.{.`._.|.|._.`.|.`.|.}.|.|.|.|.}.}._._._._._.|.^.`.(.(.(./././.~.[.~.T.T.~.T.~.T.(.T.T.T.U.U.U.U.L.L.L.L.P.L.L.L.S.A.L.A.H.S.H.H.S.G.h.h.A.A.h.A.A.A.h.A.h.h.h.g.h.g.z.h.h.k.A.g.h.g.l.A.h.h.A.g.H.g.A.A.g.A.A.A.A.A.A.A.A.g.Z.S.A.h.A.h.l.l.h.h.S.h.h.h.z.z.k.k.k.k.g.z.k.f.f.f.f.f.z.k.f.k.a.k.a.f.i.f.i.i.i.f.i.a.k.a.k.a.k.a.k.a.a.k.a.a.a.a.a.a.a.a.f.f.z.z.a.k.g.z.h.l.G.A.A.g.A.h.A.A.G.G.A.Z.G.S.H.H.H.L.H.L.L.S.L.L.L.L.P.P.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.~.T.T.T.T.T.T.T.T.^.T.~.T./.~./.(.E././.{.(.(.(.^.^.(.(.(././.(.^./.~.~.~.T.T.~.T.T.T.P.P.T.T.T.T.Y.Y.~.T.T.T.~.T.~.~.~.T./.~.~.~./././.(.(.(.(.(./.^.|.`.(._._._.|.|._.|._.|.|.`.|.|.|.@X`.`._.}.}._._.^.(.(.(.(._.^.(.^.^.(.^.(.(.(.(.(.^.~.^././././././././.^.(.(./.!.(./.(.^.(.(.(.(._.(.(.`.^.^.`._.(.(._._.^.^.(.(.(.E.[.~.~./.!.~.~.T.~.T.~.~.T.T.~.T.T.T.T.T.T.T.T.T.T.T.U.T.T.T.T.U.T.P.P.P.P.P.P.S.U.U.P.L.L.P.L.L.L.L.H.H.L.D.L.D.H.H.G.S.G.S.S.H.h.A.A.h.A.A.A.h.h.h.l.l.l.l.l.l.l.l.h.h.h.h.k.k.k.g.z.z.a.f.f.g.a.a.a.a.a.i.i.i.u.u.u.t.t.t.t.r.E t.r.E t.y.y.r.y.y.r.y.y.r.y.r.r.y.r.r.E r.y.y.y.y.w.y.y.y.y.y.y.y.y.y.y.y.E y.y.y.y.w.y.E E y.y.y.y.y.w.w.E y.E E E E y.y.y.E y.y.E y.y.y.y.y.y.y.E y.y.r.r.r.r.t.t.t.t.t.t.u.u.", "Z D Z Z D D D Z D D D D D D D D D D D Z D D D D D D D D Z D D Z Z Z Z D Z D Z Z Z Z Z Z Z Z B G Z Z Z Z Z Z Z G G Z D Z G Z Z Z Z D Z D H Z Z Z D D D Z H D H Z G H K D H H H H H H H H H H H L L J J L Z L L H P H H P Z J H H H D H H H Z L Z D D D D D D Z D G Z Z Z Z Z Z L Z Z Z L Z Z H Z H Z L Z G C D Z C Z Z C D B Z Z C C Z C C Z Z Z Z Z Z C Z F B Z Z Z C Z Z Z Z Z Z Z G Z Z H Z D Z Z Z Z Z Z G T Z.A.H.A.S.S.S.H.S.H.S.H.S.G.H.S.D.F.L.S.L.L.L.U.P.P.P.P.P.P.T.T.T.T.T.T.T.~.T.~.T.~.~.~.{././.(.(.(.(.`._._._.|._. X_. X X_. X_._._._._._.(.(.(.(.(.(./././.~.~.T.~.~.T.T.T.T.T.U.T.Y.U.U.U.P.P.U.U.Y.U.U.T.U.T.Y.U.Y.U.L.U.L.L.L.P.P.P.P.P.P.P.P.T.L.L.Y.L.L.U.U.L.L.U.L.U.L.L.L.I.L.L.Y.L.L.L.L.L.L.L.P.P.P.P.Y.L.U.L.U.U.T.T.U.Y.T.T.T.T.~.T.T.~.~.~.~.~././././././.^./.^.[.(.(.^.~.^.(.^._.(.(.(.(.(.(.(./.!.(./.!.(.(./././././.(./.(.(./.^.(.(.(.(.^.^.`.(.(.(._._._.`.(._.|.|.|. X.X.X|..X.X.X.X.X.X.X.X.X.X.XdX.X.XdXdX'.zX.XzXzX.XzXzXzX.XzX.XzX.XzX.X.XzX.X@XzX.XzXzXzXzX.XzX.XzXvX.XzXzXzXzXzXzXzXzXcXdXzXdXdXzXzXzXzXzXdXdXdXdX.XxXdXdXdXdXdXdXdXcXdXdXcXdXvXdXdXdXcXdXdXdXmXdXdXzXvXdXcXdXdXdX#XdX.XzX.X.X.X.X.X.X.X.X.X.X'.'.'..X X.X.X.X.XdX@X.X X.X.X X.X.X.X.X XdX.X.X.X.X|.'. X|. X'.|. X.X X|..X'.|._.|._.`.{.}.(.(.(.(.(.(.^./.|.(.(.(.(.|.|.^.^.`.|.|.|._.}.}.}. X|.}.}.}.|._._._._.[.^.^.(.(.^.(.~.!.~.~.~.~.T.T.T.T.T.T.T.T.T.U.U.L.U.L.L.L.Z.S.A.L.L.U.K.U.S.H.Z.H.A.S.H.A.A.h.Z.A.h.A.g.g.g.h.h.h.h.g.k.h.g.h.h.h.h.h.g.h.A.h.h.h.h.g.D.h.z.D.h.A.h.h.A.j.j.G.h.g.l.l.l.l.l.l.l.h.h.z.h.h.h.g.z.k.h.k.g.g.f.g.g.z.h.k.f.f.k.f.k.a.f.k.k.d.k.k.k.k.k.d.a.a.a.k.a.a.a.a.a.a.a.a.d.a.a.a.a.a.f.a.i.g.k.k.z.g.g.k.h.g.h.A.G.A.A.A.A.A.A.A.Z.S.H.H.H.H.L.L.H.L.L.L.L.Y.Y.P.P.P.P.T.T.T.T.T.T.T.T.T.~.T.T.T.T.T.T.~.T.~.~.T.^.T.~./.~.~.~.~././.(.(.(.(.(.(.^.(./.(.(.(./.(.^./.~.~.~.~.~.T.T.T.~.T.T.T.T.T.T.~.T.T.T.~.T.T.T.T.T.~./.!.~.~.!./.(./.(.(.^.(.^.|.(.(.|.(._.|._._._.|.}.|.|.|.|.|.|.|.|.|.|.|.|.}.}.|.`.}._._.(.(.(.(.`.(.(._.(.(.^.(.^./.^.~././.~./././././.~.^.!./././././.[.E.{.(.^.(.(.(.(.^.{._.(._.(.`.{.|.(.(.(.(.^.^./.~./.~.~.T.~.T.T.T.~.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.P.P.L.Y.T.U.P.T.P.P.P.P.L.U.U.P.L.U.L.Z.L.L.L.L.L.G.L.L.H.H.S.S.S.S.S.A.h.S.A.A.A.h.h.g.G.h.A.l.l.l.l.l.h.l.h.h.h.h.h.h.h.k.g.a.z.g.a.f.a.f.a.a.a.a.i.u.i.u.u.u.t.t.t.t.t.t.r.r.r.r.r.r.y.r.y.y.r.y.y.r.E y.y.y.r.r.y.t.y.y.E y.E w.y.y.y.y.y.E y.y.y.w.E y.y.y.E y.y.y.y.y.E y.y.E y.y.w.E E y.y.y.y.E E y.E y.y.y.y.E y.y.r.y.y.t.y.y.r.r.y.t.r.t.t.t.t.u.", "Z Z F Z D Z D D Z Z Z Z D D D D Z L Z Z H Z Z Z D D D D Z H D Z D Z F Z D Z D Z Z Z G Z Z D D D Z Z Z Z Z Z Z Z Z D D Z Z D Z D Z D Z Z D D H Z D D D D H H Z L H H H H H H H H H H H H L H H L L J L L H H H H S L L L P Z J Z H H H L H D D H D D D D D Z D D Z Z L Z Z Z Z Z Z L Z Z Z Z Z G Z Z Z Z Z C Z Z Z Z Z C Z B D C Z Z Z C C Z C Z Z Z Z Z Z Z Z Z B D Z Z G B Z Z Z G D Z G Z D D H Z H F Z H Z G Z.S.Z.H.S.A.H.G.S.S.G.S.Z.H.H.H.S.L.L.S.L.L.U.Y.U.Y.U.P.T.Y.T.T.T.T.T.T.T.T.T.~.~.~.~.~././././.(.`.^.|.|._.^. X_._. X_._.(.(.`._._._._._._.^.^.`.(.(.(./././.~.~.T.~.T.T.P.T.T.T.U.T.U.U.U.U.P.P.P.L.U.T.T.Y.T.Y.I.I.U.L.L.P.U.P.P.P.P.P.P.P.Y.T.Y.I.U.U.L.L.L.L.U.U.I.L.L.L.U.I.L.L.Y.K.K.L.U.L.L.L.L.P.L.L.L.L.P.U.L.L.P.U.U.T.T.T.T.T.~.T.^.~.T.~.!.^.^./././.(.(./.(.(.(.(.(.(.(.(.(.(.(.{.(.(.(.{.(././.(.(./././././././././.(././.(.(.(.!.(./.(.(.(.(.(.(.(.(.(.`.`.{.|._.|.|.|..X.X|..X.X.X.X.X.X'..X.X.X.X.X@X.XdX XdXxX.XxX XzXzX.X.X.XdX#X.X.X.XzXzXzX'.zXzXzX.XcX.X.XzX@XJX.X.XcXvXzXzXzXzXzXzXzXzXcXdXdXcXxXzXzXdXzXdXzXzXzXdXzX.XdXdXdXcXdXdXvXdXdXcXdXvXdXdXcXdXdX.XzXzXdXcX.XzXzXzXzXzXcXvX XdX.XdX.X.X.XdX.X XdX.X.X.X.X'..X.X.X'.dX'..X.X.X.X.X.X.X@X.X'..X.X|..X.X X'.'.|.`.|. X X`.|..X.X.X'.|.|.|.|.(.`.(._._._.(.(.(.^.^.).^.^.(._.(.(._.^.(.|.{._.|._.|.|._._._.{.}.}.}.`.(.`._.^.`.(.(.{./././.~.~.T.~.T.T.T.T.T.T.T.Y.T.U.L.U.P.L.L.L.L.S.S.L.L.L.H.L.H.H.H.H.S.S.H.A.g.A.h.A.h.A.z.g.h.h.h.k.g.z.j.g.k.k.k.k.g.g.g.g.h.f.h.h.h.h.h.h.h.h.A.h.l.l.l.l.j.G.g.h.h.h.h.h.l.h.l.h.l.h.l.h.l.g.l.z.g.z.k.h.g.a.g.g.h.f.h.f.k.k.k.k.k.k.a.z.f.f.f.f.d.f.f.f.z.a.k.a.a.a.k.a.a.k.a.d.a.a.a.a.g.a.a.g.a.k.k.g.g.a.h.l.h.A.A.h.A.A.A.A.h.Z.G.A.S.H.H.H.U.D.L.L.S.L.L.U.P.P.T.U.U.U.T.T.T.T.T.T.I.T.T.I.T.T.T.T.T.T.~.T.~.T.~.~.T./.~.R.T.~.~./././.^.(.(.(.(.(.(.(.`.(.(.(.(.(.!.(./.~.~.T.~.~.~.~.Y.~.~.T.T.Y.~.T.~.T.T.T.~.~.~.~.T.~.~.~.~.~././.(.~.{.(.(._.|.(./.(.|.`._._._._._._.|.|.|.|.`.|.|.|.|..X`.|.}.}.}.}._._.(.(.^.(.(.(.(.(.(.!._.^././././.(.~.T./.~.~.~.!./.~.~./.~././././././././.^.(.(.(.(.(.`.^.(.(.(.`.`.`.(.`.(.(.^././.~.~.~.T.~.T.~.T.T.T.T.T.T.T.T.T.T.T.U.T.U.T.T.U.Y.P.P.P.P.P.Y.P.P.P.P.P.D.Y.U.L.L.L.L.L.L.L.L.L.L.L.H.L.H.H.G.S.S.S.S.S.S.A.A.A.A.A.A.A.h.A.g.h.l.l.l.l.l.l.h.h.l.h.h.l.h.k.l.h.g.z.g.f.d.a.a.a.a.a.s.a.i.u.u.u.u.t.t.u.t.t.t.r.r.r.r.t.y.r.r.y.t.r.r.y.y.t.E y.r.y.y.t.y.y.r.y.y.y.y.y.y.y.y.y.y.y.y.y.E y.E w.w.y.y.y.y.y.E w.y.w.y.y.y.E E w.E y.y.y.y.E E E y.E w.y.y.E y.y.y.E y.y.y.r.r.y.r.y.r.r.t.t.t.t.", "D Z D Z D H D D J L S L D H D H H Z H H Z Z P H D H D D Z Z D H D F Z D D D Z D D D Z Z D C D Z D D Z Z Z G Z H Z D Z H Z F G Z D Z D D D D Z Z D D D D Z H H Z H F H Z F J H H H H Z J H L L L Z J H Z L H H L J J Z J J L J J J Z H H H H D D D D D D H Z Z D L Z Z Z Z G L Z Z Z H G Z Z Z Z G Z H Z Z Z Z Z C Z C C Z D Z B D B Z C Z C Z Z Z Z F Z Z Z Z Z Z Z Z F Z D F Z Z Z Z D D D Z G Z Z D Z Z Z Z G Z.S.G.A.A.S.H.A.S.G.S.G.H.H.H.H.L.S.L.L.L.L.S.L.U.P.U.P.P.T.P.T.T.T.T.T.~.~.T.~.~.~.T.~././.^.(.(.(.(.^.{._._._. X_._._.|..X`._._._._.(._._.`.^.^.(.(.(.^.(.~./.~.~.T.~.T.^.T.Y.T.T.T.T.T.T.P.P.P.U.T.T.T.U.U.U.T.Y.U.U.U.P.U.P.P.P.P.P.P.P.P.P.T.U.U.I.U.U.L.U.L.U.L.Y.U.U.K.Y.I.L.L.L.L.L.L.Y.L.L.L.L.L.P.L.L.U.L.U.L.Y.T.T.T.T.T.T.T.~.T.~.T.~./.~.~.~././.!.(././././.(.(.(.(.(.(.(.(.(.^.].^.(.(.^.(.(.(.~././.(././.(.(./.(.(.(.(.(.(.(.(.(./.(.(.(./.(./.(.(.(.(.^.^.^.(.|._.|. X|. X.X.X.X.X'..X'.@X.X.X.X.X.X'.dX@XxXdX#XdX@XzX.X.X.XzXdXdX.X.X.XzX.XzXzXzXzXzXzXzXzXcXzXzX@X_.xX.XzXzXzXzXzXzXzXzXzXzXdXzXvXdXzXcXzXxXzXzXzXdXdXzXdX'.dXdXdXdXcXdXdXdXvXdXdXdXnXdXdXdX.XcXdX.XcXdXcXdXzXzXzXzXdXdXdX@XzX.XzXdXdX.X.XdX.X.XdX'..X.XdX.X.X.X.X.X.X.X.X.X.X.X X X|..X|. X.X.X X'.|.@X.X|.%X|.|.|.|.|.|.|..X|.|.|._.`.^.|.(._.(.(.(.(.^.^.^.(.(.{.(.(.(.(.(.(.(.{._.|.^.|._._.|.|.}.}.}.}._._.`.(.`.(.(.!././././.~.~.T.~.T.T.Y.T.U.U.L.U.U.U.L.L.U.L.L.L.L.L.L.L.L.S.L.G.H.S.H.S.A.A.A.A.A.h.h.h.z.l.z.g.k.l.h.h.k.g.g.z.k.k.k.h.g.g.g.g.h.z.h.h.S.z.h.h.g.z.g.h.l.l.l.l.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.z.g.z.g.h.f.h.g.g.g.z.h.k.h.f.h.g.k.h.k.z.k.h.f.k.f.f.f.f.f.f.f.a.k.a.k.k.d.a.k.a.a.a.d.z.a.a.z.a.g.g.a.g.k.k.h.h.h.h.z.g.A.h.A.A.A.A.H.J.h.A.G.S.H.H.H.L.L.L.L.U.U.L.L.P.P.U.U.U.U.T.T.T.T.T.T.T.T.T.T.T.T.T./.T.~.T.~.T.~.~.~.~.R././.(./.~.~./././.^.(.(.(.(.(.(.(.(.(.(.(.(./.~.)././.~.~.~.~.~.~.T.T.T.~.~.T.~.~.~.~.~.~.T.~.~.~.~.~././.~.(./.(.(.(.(._.(.`.(.|./.|.(._._.{.|.{.|.|._.|.|.`..X|.|.|.|.|.|.}.}.}._._._._.(.^.`.[.(.(.(.(.(.(.^.(.(./.(.~.[./.~./.~.~.~.~.~.~./.~.~.T././.!./././././.(./.(.(.(.(.(.^.`.`.(.`.`.(.(.(.^./.T.~.[.T.~.T.T.T.U.T.T.T.T.T.T.T.T.U.U.T.Y.U.U.T.U.P.U.P.P.P.P.P.P.P.P.P.P.L.L.L.L.S.L.L.P.L.D.L.S.L.L.H.H.H.H.H.G.S.A.S.S.z.A.A.A.h.A.h.l.A.A.h.h.h.l.h.l.h.h.h.h.h.h.h.l.h.h.k.k.g.g.z.a.g.a.f.a.a.a.a.a.i.i.u.u.u.t.t.t.t.t.t.t.r.r.r.t.y.r.E r.r.E y.y.r.E w.w.w.y.y.y.w.t.y.r.y.E w.y.y.y.y.y.E y.w.E E y.y.y.y.y.y.E y.w.E E y.E E E E y.y.E y.y.y.E y.y.w.y.y.E y.y.E y.y.E y.y.y.y.y.r.y.r.r.r.r.t.t.t.t.u.", "Z D D D Z Z Z L Z Z J Z D H H Z Z L J Z S H H D H Z D H J Z Z H D D D D Z D D D D D Z G C D Z Z Z Z Z Z D Z D D Z Z G Z D Z Z D D D D D D D D H D D D D H Z D H S F H H H H H H H P H L H H H L P S L L L H L L L H L Z Z L L Z L H H H H Z D H D D D D F D D D G L Z Z Z Z Z Z Z Z Z Z G H Z Z Z Z H Z Z D G Z Z C Z Z C Z Z Z C Z C Z B Z Z Z C Z Z F Z Z Z F Z Z Z Z Z Z Z Z Z G Z Z Z D Z Z Z Z D Z L Z D H e.Z.H.A.A.A.A.S.z.H.S.H.H.A.D.H.S.D.L.L.D.U.L.P.P.Y.P.T.P.T.T.T.T.T.T.~.T.T.~.T.T.~./.~./././.(.(._.(.|.^.|._._._._._._._._._._._._._._._._.`.(.(.(.(.(.(./././.~.T.~.~.^.P.T.T.T.P.T.T.T.T.T.T.P.Y.P.T.Y.T.P.Y.P.T.U.U.L.P.P.P.P.P.P.P.P.T.T.T.I.I.U.Y.T.L.L.U.P.P.P.P.U.L.L.L.U.L.L.L.J.L.L.L.P.L.L.L.L.L.P.L.L.L.L.Y.L.T.U.U.T.~.T.~.~.~.T.~.~.!./.~././././.(./.(.(.(.(.(.{.`.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(./././././././.(./.{.(.{.(.(.(.(.(.(./././.(.(./.(.(.(.(.^.`.(.|._.|.|.|.|..X.X.X.X.X.X'..X.X.X.X.X.X'..XdX.XdXdXdXdXdXdX.XzX.X.XdXdX.XzXzX.XzXdXzXzXzXzXzXzXdX.XdXdXdXdX'.xXzXzXzXzXzXzXzXzXzXzXzXcXzXzXvXzXdXcXxXzXzXzXzXzXzXdXvX.XdXdXcXdXcXcXcXdXdXcXnXdXnXdXdXdX%XdXdXdXdXdXzXzXzXzXdXdXdXdX.XzXdXdXdX.X.X@X.X.X.X.X XdX.X.X.X.X.X.X.X'..X.X.X.X.X.X.X X|..X.X|. X'.|.|.|.|. X|._.|.|.|.|.|.|.|.|.|._.{._.(._.(.^.(.^.{./.(./.(./.(.(.(./.(.(.(.(.`.|.(.`.|.{.|.`.(.^.|.{.|._._._._.^.(.(.(.~./.~.~.~.~.~.T.T.U.T.U.U.L.L.L.L.L.U.L.U.L.S.S.L.S.L.S.G.L.G.L.S.J.S.A.A.A.A.A.A.g.S.z.h.l.h.k.k.h.h.f.f.h.a.z.k.k.k.k.z.k.g.h.g.g.h.h.h.z.z.k.k.h.k.h.l.z.h.h.h.h.h.h.h.h.g.h.z.h.k.h.k.z.h.h.h.h.h.k.l.z.z.g.g.l.h.h.z.z.h.g.g.g.k.h.k.h.f.g.z.f.g.f.k.k.g.f.k.f.k.k.d.k.a.k.k.a.a.x.k.a.a.x.a.a.k.f.g.z.a.z.g.z.g.l.h.h.h.h.A.A.A.A.A.H.H.A.S.H.S.L.S.U.L.L.P.U.Y.L.P.P.P.P.P.P.T.T.T.T.T.T.T.~.T.T.~.T.T.T.~./.~.~.T.~.T.~.T././.!.~.~.~./.^./.(.(.(.(.(.(.(.(.`.(.(.(.(.(.(.(.(./././.~.~.~.~.~.~.~.~.~.~.[.~.~.~.~.~.~.~.~.~.~.~.~./././././.(.^.(.(._._.|.^.|.|._.|._.`._._.|.|.|.}.'.|.|.'._.|.|.|.|.`.|.}.}.}._._.(.(.^.(._.(.(.^.(.(./.(././././././././.~.~.~.~.~.~./.~.~.~./.~./././././././.(././.(.(.(.`.(.(.`.(.^.(.(.(.(./.(.!./.T.T.T.T.T.T.T.T.T.T.T.T.U.T.U.U.T.U.U.U.U.U.U.P.Y.P.L.U.P.L.P.L.L.L.L.L.L.S.U.L.D.L.S.L.L.S.P.L.H.H.H.H.G.S.S.G.H.A.A.A.A.S.A.A.h.A.h.h.A.h.h.k.l.l.k.k.z.l.l.g.h.z.f.g.k.g.g.g.g.a.z.g.f.d.f.a.a.a.a.u.i.u.u.u.u.t.t.t.t.E t.r.r.r.y.r.r.r.y.y.r.w.y.w.y.r.t.E t.y.w.E r.E r.y.y.y.y.y.y.y.y.w.y.y.y.y.E y.y.w.E y.y.y.E E y.y.E w.y.y.y.E E w.y.y.y.y.y.y.E E E E y.y.y.y.y.y.y.y.y.y.y.y.y.E t.r.r.t.t.t.t.", "D D Z F Z Z H Z Z L Z L Z D L H L L D H H H D H Z H Z D Z H H G D D D D D D D D D Z Z Z D Z Z Z Z Z Z D Z D Z D Z G Z D Z Z Z D D Z D D D D H H D D D H H H H D H Z H H H H H H H H H H H L L H H L P Z L H H H L L L J L L J J H H H H H H H H D Z D D D D D Z Z Z L Z Z L G Z Z G Z L Z Z H Z Z G Z Z Z Z C Z C Z Z Z Z D B D Z C Z Z D Z C Z Z Z Z C Z Z A D Z Z Z Z Z Z Z Z Z Z Z D Z Z G D H Z D D J Z H J T h.H.H.G.A.G.S.S.S.S.S.G.G.A.U.U.D.Z.L.L.L.P.P.P.P.P.P.T.T.T.T.~.T.~.T.T.~.T.T.~.~.~.(././.(./.(.(.^.|.^.(._.{.'._._. X_._._._._._._._.`.(.`.`.(.`.(.(.^./././.~.~.T.T.~.T.T.Y.T.T.T.T.T.P.T.Y.P.U.T.T.T.T.Y.T.Y.L.Y.Y.Y.P.P.P.P.P.P.P.P.T.P.P.U.T.T.U.T.U.P.Y.L.P.P.L.U.U.L.L.L.U.U.U.L.U.U.U.L.P.L.L.L.L.L.L.L.U.L.Y.Y.U.T.T.~.T.T.~.T.~.T.~.~./.~.[./././.(./.(.(./.(.(.)._.(.^.`.(.(.(.(.(.(.).(.(.(.(.(.~.(./././.(.(.(./.(.(.(.(.(.(./.(./.(.(./.(.(././.(./.(.(.(.^.{._.|._.|.|..X.X.X.X.X'.'..X.XdX.X.XzX'.dX.XdXdXdXdXxX.XdXdXzX.XzXdX.XdX.X.XzXzXnXdXzXzX'.zXzXzXzXzXdXdXxXdXzXzXzX.XzXzXzXzXzXzXzXzXzXcXzXcXcXzXxXzXxXzXzXzXzXdXzXzXdXdXdXdXdXvXdXdXmXdXdXcXdXdXdXdXdXdXmXdXdXmXdXvXzXzXcXfXdXdXdXdXdXdXdXdXxX.X.XdX.X.X.XdXdX@X.X.X.XdX.X.X.X.X.X.X.X|..X.X.X|..X|..X'.`. X@X|..X|.|.|. X|.|. X|..X|.|._.|.|.|._._._.(.(.(.(.(./.(.(./.(./.(.!././.|.^.(.(.(.(.^.(.`.(.`.^.`._._.^._._.(.^.(.(./.(.(.~./.~.T.~.T.T.T.T.U.U.U.L.L.L.L.L.L.L.S.U.L.L.L.L.L.G.L.G.S.D.G.S.S.A.A.h.A.h.A.A.h.h.h.h.k.k.h.f.f.h.k.k.z.f.k.d.g.k.g.k.k.g.k.g.g.g.k.h.k.k.z.k.k.z.z.h.h.h.k.h.h.h.g.g.h.z.k.j.h.k.h.j.z.k.k.k.l.h.k.h.g.z.h.l.a.h.h.k.h.g.g.g.k.h.h.k.k.g.f.k.g.g.g.z.g.g.k.a.k.k.d.d.d.d.a.k.d.z.d.z.d.d.g.i.a.g.g.a.z.g.g.l.g.z.A.A.l.h.A.h.A.A.A.A.H.G.S.S.K.S.L.L.L.P.U.T.L.U.P.P.T.T.P.T.T.T.~.T.T.T.T.T.T.~.T.~.T./.Y.T.(.T.~.~.~.~.~./.!.R.(.~.~.(.!.!.(.(.(.(.(.`.`.`.(.(.(.(.(.(.(./.(.~.~./.~./.~.~.~.~.T.~.~.~.~.~.~.~.~.Y.~.T.~.~.!.^.^./.^.(.^.(.).{.`._._._.^.`.(.`.|.^.|.(._.|._._.}.|.|.|.@X`.|.'.|.|.`.`.}.}.}.}._.[.(._.(.(.(.(.{.{.(.(.(./.(./././././.~./.~.~.Y.!.~.~.~./.~.~.~.~.~.~.~.~./././.!.(./.(.(.(.^.^.`.^.`.`.(.(.(.(.(./.T.~.T./.T.T.T.U.T.U.U.U.U.P.T.U.U.U.U.U.T.U.L.L.L.P.P.L.P.L.L.L.L.L.L.L.L.U.U.H.H.Y.H.L.S.L.S.P.S.H.H.H.H.H.G.S.S.A.S.A.h.G.g.g.h.A.A.l.A.h.h.h.h.l.l.k.l.l.f.h.h.k.z.l.a.g.g.f.g.a.g.g.g.f.f.a.a.a.a.a.a.i.i.u.t.u.t.t.t.t.t.t.t.r.r.r.E r.r.r.r.t.y.R y.E y.y.y.y.y.E t.r.y.r.r.w.y.y.y.y.y.y.y.y.y.y.y.y.E y.y.y.y.y.y.y.y.E E y.y.E E y.y.w.E E E E y.y.E y.y.y.E y.y.y.y.E y.E y.y.E E y.y.r.r.E r.r.t.t.t.t.", "Z Z Z H D Z L Z D H D D H H L D H H H D H H H D D H H H H F H H H Z J H Z H Z L H H L Z Z Z L Z Z H Z Z Z Z G Z D D D D D D D D D D D D D D D D H Z K H H D F S H Z H H H H H J J F H H J H L L J J L J J L L Z D L Z P L L L Z J L P D H H H D H H F D D D D D Z D Z F D D Z Z Z Z F Z Z Z Z Z D D Z Z Z Z Z Z Z Z Z Z Z C Z Z C Z C Z Z Z Z Z Z Z Z Z Z Z H Z Z Z Z D D D Z D D Z H Z Z H Z Z Z D D D D D D D T n.S.S.S.H.H.A.H.A.S.A.A.H.H.H.H.H.L.L.L.L.U.L.U.Y.T.U.U.T.T.T.T.T.T.~.T.~.~.T.[.T.(.(./.(.{./.(.(.(.(._._._._.(.|.^.|._.|._.|.`.`.(._.`._._._.|.(.(.(.(./././.~.~.Y.~.T.T.T.T.T.T.T.T.T.P.T.T.Y.T.P.[.P.T.T.T.T.P.T.T.P.P.T.P.P.T.T.Y.Y.T.Y.Y.U.Y.Y.P.^.P.Y.Y.P.U.L.L.L.I.H.K.P.K.L.L.U.L.L.P.U.L.L.L.L.L.L.L.P.P.U.U.U.T.~.T.T.~./.T.T.T.~.~.!./././.(./.(./.(.(.(.(.].(.^.`.(.`._._._._.(._.(.(.(.(.(.(./.(./.(.(.(.^.(.(.(.(.(.^.(.(.(.(.!.(.(./.(.(./././.(.(.(.(.(.(.`.(.`. X_. X'.|. X.X.X.X.X|..X.X.XdXzX.X.X.XxX.XxXdXvX.XdXzX.X.X.X.XzX#XdXdXzX@XdXdXdXnXdXcX.XcXzX.XzXzX@XdXdXdXzXzXzXzXzXzXcXdXcXxXxXdXdXdXcXdXcXxXxXxXxXzXzXzXzXzXdXdXdXcXxXzXzXzXzXzXvXzXzXzXzX.XzXzXzXzXzXzXzXzXdXdXdXnXzXzXzXdXdXdXdXdXdXzX'.@X'.xX.X.X.X.X.X.X.X.X.X.X.X.X.X'..X|..X.X|..X|. X X%X X_. X|.[. X X|. X|.|.}.|.}.|.|._.|._.`.`.^.(.(.(.(.(.(.(././././././././.(.(.(.(.(.(.(.(.(.(.(.(._.^._.(.`._.`.^.(.(./././././.R./.T.T.T.T.T.XXU.P.P.L.L.L.L.L.S.L.L.S.S.L.H.L.H.H.H.S.H.S.A.A.A.A.g.Z.g.l.h.h.z.h.k.g.f.j.f.f.k.k.k.f.i.f.f.f.k.f.k.k.k.k.k.k.k.k.k.k.k.k.k.k.z.g.g.g.g.g.k.h.k.g.k.g.k.k.z.a.g.g.g.a.g.a.g.g.g.g.a.h.h.l.z.g.h.h.g.g.g.j.l.k.g.g.z.g.z.A.d.g.g.g.k.g.g.g.z.k.k.f.f.f.f.f.a.g.a.g.z.a.f.f.g.g.g.a.j.z.h.h.h.h.g.h.A.g.A.g.A.A.A.A.A.H.H.H.H.H.L.L.L.L.L.U.U.U.U.P.P.T.T.Y.T.T.T.T.T.T.T.~.T.T.T.~.~.~.~././.~.~.~.~.~.~.{.^.T.^.~././././././.(.(.^.(.`.(.|.(.(.(.(.(.(.(.(./.(.(.(.~.[.~./.~././.~././.~./.~.~.~.~.!.~.!.~.~./.!./././.(.(.^.(.(.^._.`.`.[.}.}.}.|._._.|.|._. X|._. X|.|.|.|.'.`.`.|.|.`.'.}._._.|.(._.[.(.(.(.(.(.|.(.(.(.(././.^.^.[.^.~.~.~.R.XXE.T././.T.T./.~.~.XXXX!.~.~.~././.^.^.(.(.(.(.^.(._.(.(.^.^.(.(./.(.~./.T.T.T.T.T.T.U.U.I.T.L.T.L.Y.I.U.T.L.L.U.Y.P.L.L.H.H.L.L.L.L.L.S.L.S.U.L.H.S.H.H.H.H.H.S.H.H.H.H.H.H.A.S.S.S.S.A.A.h.A.A.l.l.l.A.z.l.h.l.h.h.h.g.h.g.g.g.g.k.f.g.g.k.g.g.g.f.g.j.g.g.k.a.f.f.f.i.k.a.i.i.s.u.p.u.t.u.t.t.t.r.t.t.t.y.r.r.y.y.r.t.y.y.y.y.y.y.y.y.r.y.E E y.y.r.y.w.y.y.y.y.y.y.E y.E y.w.E y.y.y.E E y.y.E y.E y.y.E E y.y.E y.y.y.y.y.y.y.y.E w.y.y.y.E y.y.y.E E y.y.E w.y.y.y.w.y.w.r.t.t.t.", "D D H Z H H H H D D D D H H D L D H H H H H D H D K F H H H D H H Z Z H J Z H Z Z Z G Z Z L Z G H Z L Z Z D L Z D H D D D D D D D D H Z D H D D H H Z Z H F H D H H H D G H H H H H H H L H H J Z L L C H H J J P L L J J P L L S Z H H H H H H H D H H D Z D D G Z Z D D D Z D F G Z Z Z Z Z Z Z Z Z D Z A Z Z B Z C A A Z C A Z Z Z Z C Z Z C Z Z H L Z Z Z Z Z Z G Z D D D D A D D D H Z Z H D D Z D D D D D G b.S.D.S.A.H.A.A.S.S.S.S.S.H.H.H.H.L.H.L.L.U.L.L.L.U.T.Y.T.T.T.U.T.T.T.~.T.~.U.T.(.T.(./.(.^.(.(.(.(.(.(.(.(._._.^._.(._.^._._.(.`._._.|._.|.^._.(.(.(.(.^././.~.~.~.T.~.T.~.T.~.T.T.T.T.T.T.P.P.T.T.T.P.T.T.T.T.T.T.P.T.T.P.T.T.P.T.U.Y.U.P.T.Y.Y.Y.~.U.T.P.P.Y.L.T.L.U.U.L.U.L.P.Y.U.L.L.L.P.L.L.L.P.L.L.L.L.L.U.L.L.U.T.T.T.~.T.~.T.~.^.!.~.~./././.(.(./.(./.(.(.(.`.(.^.(.(.`._._._.(._.(.(.(.(.!.!.(.(.(.(./.(./.{.(._.(.(.(.^.`.^.(.(.(./.(.(./.(.(.(./.(././.(.(.(.^.`.(.`._.'. X'.|..X.X.X.X.X.X.X.X.X.XzXxX'..X@XzXdX.XxX.X.X.XzXzX.XzX'.dXdXzXzXdXdXdXdXdXdXdXdXzXzXfXdXdXdXdXdXzXzXzXzXzXzXzXzXcXcXcXcXxXxXcXxXdXxXxXxXzXzXdXzXzXzXdXcXdXcXzXzXxXxXzXxXzXzXvXzXzXxXzXzXzXzXzXzXzXzXnXdXxXnXcXdXdXdXzXzXxX.X.X.X XdX'..X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X|..X.X|.|.'. X X X|.|. X X|. X|.|.|.|. X X|.|.|.|._._.^.(.`.(.(.(.(.(.!.(.^././././.!.^./.^.(./.(.^.(.(.(.(.(.(.(.{._.(._._._.^.(.(.(.^.(.!./.R.~.R.~.T.T.T.U.U.U.L.P.L.P.G.L.L.L.S.L.S.H.L.H.L.H.H.H.H.S.H.A.H.A.A.A.h.l.h.h.g.g.k.g.a.f.f.f.f.a.k.k.k.z.d.f.f.i.k.k.k.z.f.k.k.k.k.k.k.k.k.d.k.f.g.g.f.g.f.h.k.g.g.g.g.k.k.g.z.z.g.g.z.k.g.g.g.g.g.h.z.z.h.h.h.g.h.h.h.g.h.k.l.g.g.k.A.d.A.k.k.g.g.k.k.g.k.f.k.k.f.f.f.f.f.f.g.g.a.g.h.z.a.g.g.g.g.a.z.h.h.h.h.z.h.h.S.g.G.A.A.A.H.S.H.H.G.L.L.H.L.L.L.L.Y.Y.L.U.U.T.P.Y.T.T.T.~.T.T.~.T.T.T.~.~.~.~.!./.~./././././.~.~.E.T.^.^.[././.(././.(.(.(.(.(.`.`.^.(.|./.`.^.(.(.`.(.(.E.~.(././.{.~.~././.~.~.[./.~.!.~.~.~.!.T./.~././.(.!././.(.(.{._.(._.(.^.(.}.}.}.|.|.|.{.|.|.|.|. X.X|.|.|.|.|.|.|.`.|.|. X X|._.{._.^.|.`.(.(.(./.^.(.(.(.(.(./.!.~.~.!.~.~.T.[.XXXXXXT.~./.~.~.~.T.XXE./.~.~./.~./.T.(.(.(.(.(.|.[.(.{.(.(.{.(././.[.T.~.T.T.T.T.T.T.U.U.U.U.U.L.L.I.L.U.L.U.L.U.L.L.L.L.L.U.L.L.D.L.L.L.L.S.L.H.H.H.H.H.H.S.H.H.S.H.A.W.S.A.H.G.S.H.A.S.A.A.h.h.A.l.l.h.h.l.l.l.A.h.l.h.g.g.g.g.g.g.g.g.g.g.g.f.g.g.f.f.f.g.f.k.f.f.f.i.a.a.i.i.t.p.u.u.u.t.t.t.t.r.r.t.t.t.r.r.r.r.r.r.t.y.y.y.y.y.y.w.y.y.r.E t.y.y.t.y.y.y.y.y.y.y.w.y.w.w.y.y.y.y.y.y.y.y.y.E y.y.y.y.y.E E y.E y.E E E y.w.E y.y.E E y.E E w.E E y.y.y.E E y.y.y.y.y.y.y.r.r.t.t.", "Z S H H H H Z L D D H F Z H D L D H D H F H D H H D H H H Z H D Z H H Z Z Z H H H H Z Z L Z Z S Z Z Z Z D H Z Z Z Z D D H D D H Z D H Z H L H H H D H H H H H H H H H F H H H Z H H U H H L H H H J L H J J J Z J Z L L L Z L J J H H H H H H H H H H D D D D Z Z Z D D D Z D Z Z Z Z Z Z Z D Z Z Z Z Z Z Z Z C F Z C Z Z B B D Z Z C Z Z Z Z Z Z Z Z Z G Z Z Z Z Z D D Z D D D D D D Z D D H Z D D Z D D D D D G A.D.S.S.A.H.A.A.S.A.S.S.S.H.H.h.Y.H.L.L.L.L.U.L.U.L.P.U.T.U.T.T.T.T.T.T.~.T.E.[.E./././.(./.(.(.^.(._.(._._._.^.|.}.{.|.|._._.|._._.|.|.^._._.{._.(.(.(./././.~.~.~.T.T.~.T.T.T.T.T.T.T.T.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.T.P.T.P.T.T.Y.T.T.Y.T.Y.Y.T.~.P.T.P.T.T.U.U.L.T.L.L.L.U.U.L.L.L.L.L.L.L.U.L.L.L.L.L.L.L.P.L.L.U.U.T.T.T.T.~.~.~.~.~.~.(.(.~./.(./.(.(.(.(.(.(.(.^.^.(.(.`._._._._._._._.|.^.(.(.(.(.(././.(./.(.(.(._.[.(.[.(.^.(._.(.(.(././././.(./.(.(.(.^.(.(.(.(.(.`.(.`.|.|. X.X'.'..X.X'..XdXdXdXzXzXzXzX@XzXzXzXzX.XzX.XzXxXzX.X.XzXdXzXzXzXdXzXcXxXdXdXdXdXzXzXdXcXdXdXdXdXzXzXcXcXzXcX.XcXdXxXzX@XdXxXxXxXnXxXcXcXcXdXxXzXzXdXdXvXdXcXzXxXxXzXvXzXxXzXzXxXzXzXzXzXzXxXzXxXdXzXdXxXdXdXvXdXcXdXzXdXdXdXzX'.dX'..X.X XdX.XdX.X.X.X.X.X'..X X.X.X.X.X X X|..X.X|. X[.|.|.|.|.|.|.|.|.|.|.|.}.|._.}.}.}.|.`.(.(.`.(.(./.(./././.~.~./.~.!./.~././././././.(.(././.(.(.)./.(.(.(.(.^.(.(.(././.^.~.~.~.~.T.T.T.T.T.U.T.U.L.L.T.L.L.L.S.H.D.D.H.H.H.H.G.H.D.H.S.S.H.G.A.h.A.h.h.h.h.g.g.z.f.f.f.f.f.k.a.f.f.k.k.d.k.f.f.f.z.f.k.f.f.f.f.k.k.i.f.f.k.f.f.f.g.f.g.f.g.k.k.h.g.z.a.k.g.z.a.g.a.g.a.z.g.j.g.j.f.f.g.g.g.g.h.h.g.g.g.g.g.g.l.g.z.k.k.g.z.g.k.g.g.k.z.z.l.k.k.k.f.f.f.f.f.g.a.g.g.g.h.f.k.a.f.h.h.g.h.h.l.h.h.l.A.A.j.A.A.A.A.A.S.S.Z.G.L.A.H.L.U.L.U.L.L.Y.U.T.T.T.T.T.T.T.T.T.Y.~.T.~.T./.~./.~.^.~.(.~./././././.~././.~./.(.~.(./.(.^.{.(.(.(.(.(.^.(.|.(.(.(.(.(.(.`.(.(.(.[.(.~././.~.~./././.~./././.~.~./.~.~.!.~.~.~././././.^.(.(.(.(.(.(._._._._.|.}.}._.|.|.|.|.|.|.|.|.|.|.|.|..X|.`.`.`.`.`.|.|._._.`.`.(.|.|.(.^.(.(.{.|.(.(.(.(./.(./.~.~.~.~.[.T.~.~.~.~.~.XXE.~.~.~.XXE./.~./.~./././.~.^.(.(.(.(.(.(.(.(.(./.(./.~.[.!.T.~.T.T.T.U.T.T.U.Y.U.U.R.R.L.L.L.L.L.L.U.L.L.D.L.L.S.L.L.D.U.S.H.H.H.H.H.H.H.H.H.S.S.S.H.h.A.H.G.A.A.G.H.H.A.A.A.A.A.A.l.l.l.l.l.l.l.l.h.h.h.h.g.h.g.g.g.g.g.g.g.f.g.f.g.j.a.f.f.g.g.g.k.k.k.f.k.f.a.i.i.i.u.u.u.u.u.t.t.E t.r.t.y.r.r.y.r.r.r.y.r.r.y.r.y.E r.y.y.y.r.t.r.t.w.y.y.y.y.y.y.y.y.y.y.y.E y.y.E y.y.y.y.y.y.y.E y.y.y.y.y.y.y.y.y.y.E w.y.y.E w.E w.E y.y.y.w.w.y.E w.w.E w.E w.y.y.y.y.y.r.r.t.t.", "Z D H H D Z J Z D H D H H H H H H H H H H H H H H H H H H H H H H H Z H H H Z H Z Z H Z Z Z Z Z Z H Z Z D Z H Z Z D D H D D D D H H D H Z Z H H H H H H H H F H F H H H H H H H H H H H H L L H L H H L L Z L L L L J L L L H L P P P H P H D H H H D H D D D D L Z D D D Z Z D G Z Z Z Z Z Z Z Z B Z D B Z Z Z C Z Z Z C D Z C C Z Z Z Z Z Z Z C G Z Z Z H Z Z Z Z Z Z G Z Z Z D D Z D Z D G Z D D D Z Z Z D D C e.S.S.S.G.A.G.A.S.S.S.S.S.A.H.H.A.L.L.L.L.L.L.Y.U.Y.Y.U.U.U.T.T.U.~.~.T.~.XX[.^././././.(.^.(.(.(.(.(.(.(.(._.}.}.}._._.(._.|.[._._._._.|._._.^.(.(.^./.(.~.!.~.~.~.~.T.T.T.T.T.T.T.T.P.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.P.T.T.T.T.Y.Y.T.T.T.Y.P.U.L.^.Y.T.Y.P.P.U.I.I.L.U.U.Y.L.U.L.L.U.L.L.U.L.L.L.L.P.L.L.L.L.U.U.U.T.T.~.~.T.^.T.~.!.~.~.(.(./.(.(.(.(.(.(./.(.(.(.(.(.(.`.(._._._._._.(.(.(.(.(.(.(./.(.(./.(.(.(.(.(.(.(.(.(.(.(.].(.(.(.(.^.(.(.(.(.(./.(././.(.(.(.`.^.`._. X|.|..X|..X.XdX.X@X.X.XdX.X'..XzXdXzXzX'..XxX.XzX.X.X.XzXzX.X.XzXzXdXcXzXdXdXxXdXdXzXdXzXdXdX@XxXdXcXzXzXdXdXnXdXxXxXcXxXxXxXxXxXxXxXxXxXzXcXcXxXxXxXzXnXcXcXdXcXxXzXxXxXzXxXxXxXxXcXcXdXzXzXzXzXdXxXzXzXxXdXdXxXcXdXdXdX%XzXdXdXzXzX'.dX'..X.X X'.@X'. X X.X X@X.X.X.X X|.|.|..X'. X|. X X|.|.|.|.|.|.|.|.|.|.|.}.|.|.|.|.}.}.[.(.`.(.^.(.(.(./././.~.!.!.~.~./.~.~././.~./.!./././.(./.(.(.(.^.(.(.(.`.(.(.(.~./././.~./.T./.T.~.T.T.T.U.U.U.L.D.H.D.L.L.H.L.D.S.H.H.H.H.G.D.S.S.S.A.A.A.A.A.h.l.h.h.l.g.g.a.f.f.f.s.f.f.k.a.f.f.i.k.f.i.f.i.i.d.i.k.i.f.f.k.k.k.k.f.f.d.f.f.f.j.g.g.g.k.g.g.g.g.g.a.g.f.g.a.g.a.g.a.g.f.f.g.f.g.g.g.g.f.h.z.k.g.g.g.h.g.g.g.g.k.l.A.k.g.k.k.Z.l.l.k.h.k.z.z.k.k.k.f.f.a.g.a.a.g.f.k.k.h.h.z.h.l.l.l.l.h.h.l.l.g.G.j.A.A.A.S.A.H.H.H.H.U.L.L.L.L.U.P.U.Y.Y.T.T.T.T.T.T.T.T.T.~.T.~.~./.~.~.~././.~./.(./.(./././.(.^./.^.(.(.^.(.(.(.(./.^.`.^._._.(.(.(.^.`.(.(.(.(.(.{.(.^.^././././.~././.~./././.~././.~.~.~.~./.(.~././././.!././.(.(.(.(.(._._._.{._.}.}.}.}.|.|.|. X|..X|.|.'.|.|.|.`.|.|.`.`.`.|._.|._.|.(._.|.|.{.{.|.^.{.(.^.(.(.(./.~.~.~.~.~.~.T.~.~.T.~.~.XXXXXXT.~.~.~.~.~./.~./././.(.(././.^.(.(.^./.(./.(./././.~.~.~.~.~.T.T.T.U.U.U.Y.U.L.U.L.L.R.R.Y.L.U.L.S.L.U.S.S.L.L.H.D.A.S.H.H.H.D.H.H.G.A.G.G.S.S.S.A.H.A.A.A.A.G.A.g.A.A.A.A.A.A.h.A.l.l.l.l.l.l.h.g.z.h.z.h.g.g.g.j.f.j.f.g.g.g.g.f.g.g.j.j.f.z.k.k.f.a.f.k.i.i.i.i.i.i.u.t.u.u.t.t.u.r.t.r.r.r.r.t.r.r.r.r.y.r.y.y.r.y.y.y.y.y.y.y.r.y.r.y.r.w.y.y.y.y.y.y.y.y.w.E E y.y.y.y.E y.E E y.y.y.y.E E y.E E y.y.y.y.y.y.y.y.y.y.y.y.y.y.E E E E E y.E y.E y.y.y.y.y.y.r.r.t.t.", "Z Z H Z H Z H H F H H Z H H H H H H H Z H H H H H H H H K H D H Z H Z H Z H Z L H H Z L Z H Z L D Z Z Z D G D D H Z H Z H H H H H D H D L H H L H H H H H H H Z H H H H H H H H H H D P K H P H L L L L J H L L J L P J J L L L H L U H H H H G H H H D D D D D Z H Z Z H D D Z C Z Z Z Z Z Z G D D C D D Z B C Z C C Z Z Z C Z Z Z Z Z C G Z Z Z Z G H G Z Z Z H Z D D H D H H Z Z Z Z Z Z Z L D D D D D D Z D H T H.H.S.F.G.l.z.H.A.S.H.G.H.H.H.H.H.L.L.L.L.L.L.L.U.L.U.Y.Y.U.T.T.~.T.T.T.~.~.[.T././.(.(.(.(.(.(.(.(._._.|.(.(.|._._.}._.}._. X`.|._._.|._.(.(.(.(.(././././.~.~.~.T.~.Y.T.U.T.U.P.Y.T.T.T.T.T.T.P.~.T.T.T.[.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.T.T.T.T.P.T.P.T.T.P.P.P.U.L.L.Y.L.L.L.L.L.L.L.U.U.L.L.P.L.U.L.L.L.L.L.L.L.Y.I.T.T.~.~.~.~.^.T.(.^.~.(.(.(.(.(.(.!.(.(.^.(.(.(.(.^.[._._.{._._._.[.(._.(.(.^.(.(.(.(.(.(.(.(.(.(.(.`.(.(.(.{.(.(.(.(.(.^.^.(.^.(.(.(.(.(.(.(.(.(.^._._.|.|.|.|..X|..X'..X.X.X.X.X.XzX.XzXzXdXzX'.zXzXcX.X.XdXdXdXdX.XzXzXdXxXzXzXzXzXzXcXdXcXdXzXzXzXzXdXdXzXzXzXcXcXdXcXzXcXcXxXcXcXcXnXdXxXxXxXxXxXxXxXzXxXzXzX.XcXdXzXcXzXcXzXxXxXzXxXxXxXxXzXxXxXxXzXzXxXxXcXcXdXdXdXdXdXzXdXcXcX.X.XdX.X@XdX'.'..X.X@X.X.X.X|..X.X.X.X.X|..X|. X|.|.|.|.|.|.'.}.|.}.|.|._. X_.|.|.}.|.}.|._._.`.(.`.(.^.(.`.^.^.(.(.^.~.[.~.~.~.~.~.T./.!.~.~.~.~./././.(./.(.~./.^.(.(.(.(.(.(.(.^.(./.~.~.~.~.T.T.T./.T.T.U.P.P.P.P.U.L.L.D.L.G.L.L.S.L.S.S.H.H.S.S.S.A.H.A.A.G.l.l.h.l.j.g.k.f.f.f.i.a.a.a.a.f.g.a.a.a.i.z.a.a.a.z.f.i.k.a.z.a.z.k.a.k.k.k.f.f.f.f.k.k.k.z.g.g.g.k.k.a.g.a.g.a.g.g.f.f.f.k.f.f.a.g.g.g.g.g.g.f.g.f.g.g.g.g.g.g.h.h.h.h.k.h.l.g.g.h.h.h.h.h.h.z.h.h.z.z.k.f.g.g.g.g.g.z.h.k.g.h.z.k.l.h.h.h.G.g.G.g.Z.h.S.g.A.S.S.A.H.H.L.S.L.L.L.L.U.L.U.T.T.T.T.T.~.T.~.Y.Y.T.~.T.~.~.~.E.!././././.^.(./.(.(.(././.^.(.(.(.(.(.(.(.(.^.(.(._.`.^.(._.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(././.~.!./.~.~.~./.~./.~.~.~.~.~./.~././././././.(.(.(.!.(.`.(._._._.|.|._.|.|.|._.|.|..X|..X.X.X|..X|.`.`.`.|.|.`.`.}.|.|._._._.|._.|.`.|.^.^.(.(.(.(./././.~.~.~.~.T.~.E.T.XXT.~.T.~.(.E.XXXXXXE.U./.~./././././././.(./.(./.(././.~./.~.~.[.~.~.~.T.T.T.T.T.T.Y.Y.I.I.L.Y.U.L.L.L.L.L.L.U.L.S.L.S.S.S.K.H.H.H.H.H.H.H.H.H.A.S.G.H.S.G.S.A.A.A.A.H.A.A.A.G.A.A.A.A.A.A.A.h.h.h.l.l.g.z.h.k.h.z.h.h.h.h.g.g.g.g.g.g.f.f.f.f.j.f.g.f.f.f.g.i.k.f.f.f.i.a.a.a.a.i.i.i.u.u.u.t.t.t.t.t.t.t.y.t.E r.r.r.r.r.y.r.y.r.y.r.y.y.r.y.w.y.y.r.r.w.y.r.E y.y.y.y.y.y.E E w.y.E E y.y.y.y.E y.y.E y.E y.y.y.y.y.y.y.y.y.E w.y.y.y.w.y.y.E w.y.E E E E y.E y.y.y.y.y.y.r.r.r.r.t.", "H H H L H H H H H H H H H H H H H H H P H H H H H H H H D D H H H H L Z H Z H F L Z L Z H Z L Z D H Z H D D D D D L H H H D H Z H H H H Z L H Z H H H H H H H Z H H H H F H H H H H H H H H H H L J H H L L L L Z L Z L L L H L H H L L H H H H H D D H D D D D Z S D H Z Z Z D C D Z Z Z Z Z B C Z Z Z C Z Z D D Z Z C B Z D Z Z C C Z Z Z Z Z Z H Z Z Z H Z Z Z Z Z G Z H G Z Z Z D L L Z L Z D Z D D D D D D H U Z.G.H.H.H.G.G.S.G.S.A.H.S.H.U.H.L.L.H.L.L.L.U.Y.L.U.U.Y.U.T.U.U.U.T.~.~.T.~.~.^./.(./.(.(.(.(.^.`.^.(.(.|.(._._._.|.}.}.}.|._._._._._._._.(.(.(.(./././.~.~.~.~.T.~.T.~.T.T.T.T.T.Y.Y.T.Y.T.T.Y.~.P.T.T.P.P.T.T.E.T.T.T.T.T.T.T.T.T.T.P.T.T.Y.T.Y.T.T.U.Y.P.Y.P.Y.U.L.U.K.U.U.P.P.P.L.L.L.L.P.L.L.U.L.P.L.L.L.L.L.L.L.U.U.T.T.~.T.~.T.^.[.(.(.(.(.^.(.(.(.(.(./.(.(.(.(.(.`._._._.|._._._._._.(.(.(.(.(.(.(.(.(.(.(.{.[.(.(.^.(.(.(.(.(.(.(.(._.`.`.`._._.^.(.(.(.(.(._.`.{.(.(.(.|.|.|.|..X.X.X.XdXzXzXzXdX.XzX.X.XdXzX.XzX.X.X.XcXdXdXdX%X.XzXzX.XzXzXzXzXzXzXzXdXzXzXzXzXzXxXcXxXzXzXzXdXzXcXdXxXxXxXcXcXdXcXcXcXxXxXxXxXcXxXxXxXxXcXcXxXdXcXcXcX@XcXcXcXzXxXxXcXxXzXxXxXxXvXxXxXxXzXzXdXdXnXcXxXzXzXdXdXzXzX.XdXzX.XdXdX.X.XcX'..X.X.X.X.X.X.X X X.X|..X|.|.|.|.|.|.|.|. X}. X|.|.|. X|.|.|.}.}.|.}.|.(.`.`.^.(.(.(.(.(.(.(.~.(.~.~.T.T.~.T.T.~.T./.~.~.~.~.~.~.!./.T./.(./././.(.(.~.(.(.(././.~.[.~.[.~./.~.T.T.T.U.T.P.P.L.L.G.P.P.P.L.G.G.G.S.S.H.H.G.G.S.S.G.A.A.h.g.l.l.l.l.l.j.z.g.a.a.g.a.a.a.a.a.a.i.f.i.a.i.z.a.z.a.a.f.i.k.a.a.a.a.a.k.a.a.a.f.k.f.f.k.k.k.f.j.g.k.k.k.g.f.g.a.g.a.a.f.f.f.a.f.g.g.k.g.f.a.g.f.j.f.g.g.a.f.g.z.g.z.g.k.k.h.k.d.D.h.g.h.h.h.l.l.h.h.k.k.k.k.k.k.k.g.g.h.g.g.z.f.h.h.h.l.h.h.g.g.j.A.A.A.A.A.H.S.S.H.H.H.L.S.H.L.L.L.K.U.K.U.T.T.T.T.T.T.T.T.~.~.~.~.~.~.^.^./././.(././.^././.(.(.(.(.{.^.(.(.(.(.^.(.(.`.{._.(.^.`.|._.(.{._.^.`.|.(._.(.(.(.(.^.(.(.(.(.(./.^.[././././.^.~./.~././.~./.~././.~./././././.(./.(.(.(.(.(.(.|._.|.|.|.|._.|.'. X|.|. X|..X X|.@X`.`. X|.|.|.`._.|.`.|. X_._.|.|.(.|.`.`.^.(.(./.(.(./.~.~.~.~.~.T.U.XXT.~.~.~.T.T.~.U.U.XXT.[./.~./.~./././.!./.!.(././././.!./.^.~.~.!.~.~.!./.T.T.~.T.U.Y.U.Y.I.U.L.U.L.L.L.L.U.S.H.S.L.L.S.S.S.H.S.A.H.h.H.H.S.S.S.S.A.S.H.A.A.A.A.A.A.A.h.A.A.A.A.A.A.A.h.g.A.A.h.l.l.l.l.l.l.g.h.h.h.f.h.j.h.g.g.j.f.g.z.f.j.f.j.f.g.f.f.h.f.g.z.f.k.k.k.k.a.i.g.a.i.i.i.u.u.u.s.t.t.u.t.t.t.t.r.r.t.t.r.r.y.r.y.y.y.w.E t.y.y.y.t.y.t.y.r.r.r.y.y.y.y.y.y.y.w.E E y.y.y.E y.E y.y.E y.y.E y.E y.y.y.y.y.w.E y.y.y.y.w.E y.E E y.y.E E y.y.w.w.y.y.E y.y.y.y.y.r.r.r.r.t.", "Z Z L Z L D Z Z Z H Z H H H H L H H H H H H H H H H H F H H D H H Z L Z D L D H H H H L L Z L Z L H Z L H H L H H Z Z L Z L H H H D H H H H H H H L H H H H H J H H H H H H H K Y Z H L H P H L L L L J L L J L D L L L L L J L P H L H H H H H H H H H D D Z D Z Z D D D Z Z G D Z Z Z Z Z C Z C G Z B Z C Z Z A Z Z C Z C C Z C Z Z Z Z Z Z H H H Z Z Z Z Z Z L Z Z H D Z D D Z D Z Z Z Z L Z D D D A A D D D Z L e.H.H.H.D.G.S.S.G.H.G.H.H.H.H.H.L.S.L.L.L.L.L.Y.L.U.L.Y.U.U.U.U.T.T.T.~.~.~.~.~.^.^.(./.{.(.(.^.(.`._.(.(.(._._._.}.^.|.{._._._._._.(.(.(.(.(.(.(././.^.~.~.~.~.~.T.T.Y.T.Y.T.T.U.P.T.T.T.Y.Y.T.~.Y.~.T.[.P.T.(.~.T.[.T.T.T.T.T.T.T.T.^.P.T.Y.P.T.T.T.T.Y.Y.Y.P.U.L.U.L.L.U.P.L.P.L.L.L.P.L.L.P.P.L.P.L.L.L.L.L.P.U.U.U.U.T.T.T.~.[.~.{./././.(.(./.(.(./.(./.(.(.(.(.(.(.(._.(._._._.{.|._._._.(._.(.(.(.(.(.(.(.(.{.(.(.(.(.].(.(.^.^.`.(.(.(.|.{.`.(._.^.|.(.|.(.(.(.(.(._.|._.{.|.`.|.|..X'.'.zX.XzXdXdXzX.X.XvXzX.XzXzX.XzXzX.XdXdXvXdXzXzXzXzXzXzXcXzXzXzXdXdXzXzXzXzXzXzXzXxXxXzXzXvXcXcXdXcXxXxXcXxXmXnXdXnXcXxXxXxXxXxXxXxXxXxXxXcXcXcXcXvXxX.XcXcXvXxXcXcXxXcXvXxXxXcXxXxXxXxXxXxXdXdXxXdXzXzXdXcXzXzXdXdXdX@X.XdX.XdX.X.X.X|..X.X.X X X.X|. X X'.|.|. X X|.|.|.|. X|.|.|.|.|.|._.|.|.|.}.[._.{._.(.^.(.(.(.(.(.(.^.(.[.~.~.T.T.T.T.T.~.~.~.~.~.~.R.(.R./.~.~.~.~.~./.~./.~.(.(.(.(.~.(./.~.~.~.T.T.T.T.~.T.T.U.U.U.L.P.L.L.L.H.D.L.H.H.S.S.L.S.G.S.S.S.A.h.A.A.A.A.h.l.h.h.k.a.f.g.a.z.a.a.a.a.i.a.a.a.a.a.a.a.a.a.z.a.a.a.k.i.g.a.k.a.k.a.k.a.k.k.k.f.f.d.k.k.k.a.a.g.g.z.g.z.i.a.a.f.a.f.f.f.f.f.k.g.k.a.z.g.a.i.g.f.g.g.g.g.g.g.z.z.g.g.f.l.k.g.A.g.h.g.h.h.h.l.h.h.h.h.h.k.g.z.g.z.g.g.h.h.g.l.l.h.l.l.l.A.G.A.A.A.A.h.A.A.A.S.H.S.H.H.H.H.L.L.L.L.I.Y.U.T.I.T.T.T.T.T.~.~.T.~.~.~.~.~./.!./.(./.(./.(.(.(.(.^.(.`.(.(.(.(.(.(.^.(.(.|.|._._.`.|.|.^._._.`.^.^.(.`.(.(.(.(.(.(.`.^.(.^.(.[./.^.(.!./././.!./.~./././.~.~./.~.~./././././.(.(.(.(.(.(.(.|._.|.}.|.{._.|.|..X|..X|..X.X.X|.|..X|.|.'.|.|.|.`.|.`.`.|.|.|.|.|. X{.|._.^.`.^.(.(./.(./.!.~.~.T.^.T.~.T.~.(.~.~.~.XX~.XXXX~.~.(.~.~./.^.~.~.~./.(././.[./.(././.[.~.[.~.~.~.~.!.~./.T.T.T.T.T.T.U.T.T.L.U.U.L.L.L.L.S.L.S.L.L.S.S.S.S.S.H.H.A.A.H.A.S.A.S.A.A.A.A.A.A.A.A.A.A.A.A.A.h.A.A.A.A.A.A.A.A.A.A.l.h.h.l.l.k.z.h.k.h.h.k.g.h.g.g.g.d.a.g.g.f.g.g.f.g.f.j.g.g.g.a.f.k.f.f.a.k.z.i.a.a.i.i.u.u.u.t.t.u.u.t.t.t.t.r.t.r.r.r.r.r.r.y.y.r.y.r.y.r.r.y.y.r.r.y.r.r.y.y.w.y.y.y.y.w.y.E w.y.y.E w.y.y.y.E y.y.E E y.y.y.y.y.y.y.y.y.y.y.y.E E y.E w.y.E y.y.E w.E E y.y.y.y.E y.y.r.r.r.r.r.r.t.", "Z H Z H Z L D P H H L H H H H L H P H H J H H H D F H H D D D K H H H H H L D H L Z L Z Z L L L H D Z L Z H Z H L J Z L Z H H H H H Z H H H H H L H H J H H H H H H D H H H H G H H H H H H H H L H L H P Z L H J J Z J Z J L L L H L H H H H H H H D D D L H D D H D D D Z Z Z Z Z B G Z H Z C C Z Z F Z C B C C Z C Z Z C Z Z Z Z C Z Z Z Z Z Z Z Z G H G Z L Z Z G Z D D D D D D D D L Z Z Z D D D H D D D Z Z G e.Z.H.S.H.A.S.H.A.H.H.H.H.H.L.H.H.L.H.L.L.L.L.U.U.U.Y.L.U.U.U.U.T.U.T.~.~.T.~.[./././.(.(.(.(.(.(.^.{.(.(.`.(._.[.(.|._._.|.|.|.|._._.(._.[.(.(.^././.~.[.~.!.~.~.~.T.Y.T.Y.T.T.P.T.T.P.T.T.Y.Y.P.Y.~.T.T.~.~.~.T.[.T.T.T.T.T.T.T.T.T.P.P.Y.T.[.T.T.T.Y.Y.Y.U.P.Y.L.U.U.L.L.L.P.P.L.L.L.L.L.P.L.L.U.L.P.L.U.L.L.U.P.U.U.T.T.T.~.~.T.E././.(./.(.(.(.(.(.(.(.(./.^.(.(.(.(.(.(._._._._._.|._._._._._.^.|.(.(.(.(.{.(.{.^.{.{.(.`.^.^.`.`.(.`.|._._._._.|.[.|._.(.(.(.(._._.(.{._._.`.`.`.|.|..X|.@X'.zXzXdXdXzXzXzX.XzXzXzX.X.XzXzXdXzXdX.XdXzXzXzXdXzXzXzXzXcXzXcXzXcXzXzXzXxXzXzXzXzXxXxXzXdXnXnXcXcXxXcXcXcXcXJXcXcXxXxXnXcXxXxXxXxXxXxXxXcXvXcXcXxXxXcX.XxXxXdXcXvXvXcXvXxXxXxXxXxXxXxXxXdXnXcXdXzXzXdXdXdX@XdX.XdXzX'.zX.XdX@X.X.X.X.X|. X X.X'.|.|.|.|.|.|.|._._.|._.|.|. X}.}.|._.|.|.|._._.|.|._.|.^.(.(.(.(.(.^./.(.^.^.~.T.^.T.T.T.T.T.Y.T.T.T.T.T.T.T.~.~.!.~.~.!.!.~.~./.~./.~.^.(./././.~.~.~.T.T.T.T.T.T.T.U.U.P.P.L.U.L.L.P.P.G.H.L.D.L.A.S.G.S.S.A.h.h.l.A.A.l.l.h.h.k.k.z.f.g.a.i.a.a.a.a.i.i.a.a.i.a.a.a.a.a.a.k.i.a.f.i.i.a.a.a.a.a.i.k.k.f.d.f.f.f.f.f.d.f.g.a.g.a.a.z.i.z.a.f.k.k.a.f.f.f.f.a.k.a.g.f.f.f.j.j.g.f.f.g.g.g.z.g.g.g.z.f.h.g.g.Z.d.h.h.h.A.l.l.A.h.h.g.k.g.h.h.g.g.z.l.h.g.h.l.l.l.h.l.z.h.G.j.h.A.A.A.A.A.S.A.H.H.H.H.L.L.S.U.L.Y.U.T.U.Y.T.T.T.T.~.T.T.(.^.~.~./././././.(.(./.(.(.(.(.`.`.(.^.(.^.(.(.^.(.`.|.|.|._._.|.|.|._.|.{.|.(._.`.(.(.(.(.(.(.^.(.(.(.(.(.(.(.(./.(.(././.!././././.~.~.~.~.~././.T.(./.!.(./.(.!.(.^.(.^.^.|._.}._.|.|.|. X|. X.X.X.X.X.X X.X X|.|..X|.|.|.'.|.`.`.`.|.|. X X|.|.|.|.|.`.(.(.(.(.(.(.!.~.~.T.T.~.~.~.~./.T.~.~.[.~.~.~.~.~.~.T.~.~././.~./././././.(.(././.~.!.T.R.~.T.~.Y.~.Y.T./.T.T.T.U.T.U.U.L.U.L.L.L.L.L.L.L.U.H.S.S.S.L.S.S.S.S.S.S.H.A.S.S.S.A.A.h.A.A.A.A.G.g.Z.g.j.S.h.h.h.A.G.j.G.h.h.A.j.h.h.h.l.z.k.g.h.k.h.h.z.h.h.g.g.g.a.g.g.k.g.g.g.f.h.g.g.f.f.g.g.g.f.k.z.f.g.z.i.g.a.a.a.i.a.u.u.t.u.u.t.i.E t.t.t.r.t.r.t.r.r.t.y.t.y.r.y.r.y.y.y.r.E r.r.y.r.y.r.E w.y.y.y.y.w.E E E E y.E y.E E E y.y.y.y.y.y.y.y.y.y.y.y.y.E w.y.y.y.y.y.y.y.E E w.E E E y.E y.E y.w.y.y.y.y.r.r.r.r.t.", "H Z Z J Z H H H H H H H H H J H U H H H H H Z H H H H H H H H D D D D H F H D D J J H F H H D H L U H D Z H H H Z D H H H H H H H U H H H H H H H H H H H H U H L H H H H H H H H H Z U H H H H P L Z L Z L L H H L H L Z L H U H H L H H H H H H Z H H D D D D H Z Z Z H Z Z G Z G C Z Z Z C G C Z Z C G C C Z Z C Z C C F C Z Z Z C Z G D C D H H Z G Z Z G Z Z Z D D D D D Z G Z Z G Z J G Z Z Z D Z Z Z D Z D Z T F.A.S.H.S.G.G.H.H.H.H.H.H.S.K.H.H.L.H.L.L.U.U.U.U.P.P.Y.Y.T.T.T.T.T.~.~.(././././.(./.(.(.(.(.(.(._._._.(.`.(.`.(.|._.|._.|._.|._.`.(.`.^.(.(.^.(././.E.(.~./.T.T.T.T.T.T.T.P.P.T.T.T.T.T.T.T.Y.~.T.^.T.T.~.~.~.~.~.Y.T.T.T.~.~.T.T.T.~.Y.Y.!.T.T.T.T.T.Y.P.P.P.U.T.P.L.L.L.L.L.L.L.L.P.S.L.L.U.U.L.L.Y.L.L.U.P.P.T.P.P.Y.T.~.~.[.~.^.(./.(.(.(.{.[.(.(.(.(.!.).(.(.(.(.`.(.(.^.`._._._.|.^.^._.(.^.{.(.^.|./.(.(.^.^.^.^.(.(.[._._._._._._._.|.|.{.|.|._.`.`.`.(.(._.^._.|.`._.(.|._.|..X.X.X@XdX'.zXzXdXzXzXzXzXcXzXzXdXzXdXzXzXdXdXxXdXzXzXzXzXzXzXxX.XzXcXxX@XdXdXdXdXxXzXzXzXxXxXxXxXxXxXxXxXxXvXnXxXnXnXnXnXnXnXnXnXxXnXxXJXxXxXJXnXnXcXcXcXxXcXxXxXxXxXxXnXnXxXnXnXxXxXcXxXxXxXxXdXdXxXdXzXnXdXdXcXdXdXxX'.@X'.dXzX.XdX.X.X.X.X.X.X X|.|.|. X}.}.}._.|.}.}.{.}.}.|.|.{._._.|.|._._._.|.|.|.^.`.(.(.`.(.(.(.(.(.T.(.~.[.T.~.T.T.T.U.T.Y.T.T.T.T.T.T.T.T.T.T.~.T.~.T.~.T.~.~.~.~.~.(.~.~.~.~.~.~.~.T.~.T.T.Y.Y.Y.Y.Y.L.L.P.P.P.U.L.D.L.G.H.H.H.H.H.S.A.A.A.A.g.G.l.l.l.h.l.h.k.f.f.f.f.a.a.a.i.i.a.a.a.a.a.a.a.a.a.a.s.a.a.a.f.f.a.a.a.a.a.a.a.a.k.a.d.k.i.k.k.k.d.z.a.h.g.a.a.g.g.f.i.f.f.f.s.f.f.j.g.a.a.g.a.g.k.i.d.f.f.f.z.g.a.g.j.f.x.h.g.g.h.h.l.z.z.l.h.h.G.l.l.l.l.l.h.h.h.h.z.h.h.h.h.h.h.A.h.h.h.h.h.A.g.Z.A.A.A.A.A.A.S.S.H.H.H.L.L.H.L.S.L.L.U.U.T.T.T.T.[.T.~.T.~.!.~.~.^././././.^.(.(.(.(.(.(.|.^.|.(.|.^.`.(.|.[._._.`.`._.|.|.|._.'.|.|.|.`._.{.|.`.(._.|.(.^.|./.{./.|.(.`.(.(.(.(.(.~.(.(./././././.~./.~./.!./././././.(.!././.(.(.(.(.^.^.`.|.^.|._.}.|.'. X X|..X.X|. X.X.X|..X.X.X.X|. X|.|.|.'.|. X.X|.'..X|.|.`.|.|._.[._.{.(.^././././.{.^.~.~.~.~.T.[.~.~.~.~.(.~.~.~.~.~.T.(.[.~.~././.~.~./././.(.~.~.T.~.~.T.T.~.T.~.T.~.~.Y.T.T.L.I.L.P.Y.L.U.L.L.L.A.L.L.L.S.S.H.H.S.A.H.A.G.A.A.h.A.g.H.H.g.A.A.h.A.h.A.A.A.h.h.h.l.l.l.l.A.h.G.h.l.h.h.A.l.h.l.h.h.A.l.k.l.k.l.k.l.k.h.h.h.k.f.k.k.k.k.k.g.g.z.k.g.g.g.g.f.a.z.f.a.z.a.g.z.a.g.a.i.i.i.i.u.u.u.p.t.u.t.t.t.t.r.r.r.r.r.r.r.y.t.y.y.y.r.r.E r.r.y.t.t.r.y.r.y.y.y.y.y.E y.y.E y.w.y.E y.E y.E y.y.y.y.y.y.y.y.y.y.r.y.y.y.y.y.y.E y.y.y.E w.y.y.E E w.y.y.y.E w.y.y.y.y.r.r.r.r.t.t.", "Z L Z L H H H H H H Z H H H H H H H H H H H H H H H H H F H F D D D H H H H K H F G H H H H H H H Z H H H H H H L H Z H H H H H H H H H H H U L H H H P H H H H L H H P H H H H H H H H H H H L H H L L L L H J Z H H H J H L H L H J H H H H H H Z Z Z H D D D Z G H D Z Z Z D Z Z F Z Z Z Z C C Z Z Z V C C C C Z C B C Z Z C Z Z B B Z D C D Z Z Z Z Z Z Z Z Z L D D Z D Z Z H Z Z Z L Z Z L H G Z Z D D Z Z Z Z T Z.D.S.G.H.A.H.H.S.H.H.L.H.L.H.L.L.H.L.L.L.L.L.U.L.P.Y.P.P.P.T.T.T.T.~.~.~.~.!./.(./.(.(.^.(.(._.(._.(.(._.(.(.`.(._.|.[.}._.`.(._.^.^.(.(.(.^./.(./.(.~.~.T.~.T.T.T.T.Y.T.T.T.T.T.T.T.T.T.P.~.T.T.~.T.T.~.~.!.~.~.~.~.(.T.[.T.T.T.T.T.T.T.T.P.T.T.T.T.T.T.U.T.P.P.L.P.L.Y.L.L.L.L.L.L.U.U.L.L.L.L.L.U.U.P.L.P.U.U.P.T.P.T.~.R.T.~.[.~./././.(.(.(.^.(.(.(.(.`.(.(.(._.].(.^.`.`.^._._._._.{._.{.|.^.|.(.`./.|.(.(.^.`.`.|.`.`.|.(._._._.|.|._._.|.|.|.|._.(.|.(.`.`.^.|.{.^._.`.|._.|.|.|.'..X.X XzX.X@XdX.XzXzXzXdXcXzXzXzX.XzXzXdXdXdXxXzXzXzXzXzXzXzXxXdXcXxXxXxXxXcXxXxXxXzXvXzXxXxXxXxXxXxXxXxXnXxXnXcXnXnXcXnXcXxXxXxXxXnXzXxXvXxXcXcXcXcXcXcXcXxXxXxXxXxXxXxXnXnXxXxXxXnXfXcXcXxXxXcXcXnXdXdXcXdXdXdXdXdXdXzXzXdX.XzX.X.X.X.X.X.X.X X X'.|.|.|.|. X|.|.}.}.}.}.{._.|._.|.|.}._.|._.(.`.^.(.(.(.(./.^.(.^./.(.(.~.(.~.(.~.T.T.T.T.T.T.P.T.P.T.T.T.T.T.~.T.T.T.T.T.T.T.~.T.~.~.~.~.T.~.~.~.~.T.~.T.~.T.T.T.T.P.Y.P.U.L.L.P.U.H.H.L.L.H.H.H.H.G.A.A.H.A.G.h.A.A.l.l.l.h.g.g.j.l.f.f.a.k.f.a.a.a.i.u.a.i.i.i.i.i.i.i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.d.i.i.z.z.d.d.k.i.a.a.a.a.z.i.s.a.a.g.a.f.f.f.f.f.f.z.g.a.g.k.i.g.f.f.f.g.g.g.g.g.f.j.j.a.j.l.k.z.h.h.h.l.h.h.g.l.l.h.h.D.h.h.h.h.g.h.h.h.h.h.A.h.h.A.A.A.A.g.A.A.A.A.A.h.S.H.A.S.H.S.H.H.L.H.L.H.L.L.U.U.U.T.T.T.T.~.T.~.~.~.~.~././.^././.(.(././.(.`.(.(.(.^.|.(.|._.|.|._.{.|.`.`.|.|.|.|.'._.|.|.|.`.|.`.|./.|.|.[._.^.^.`.|.(.(.(.(._.(.(.(.(.(./.(.(.(././.(././.~././././././.^.~././.(./.(.(.(.`.(.`._._._.|.|.}.|.'..X X X|..X|..X|..X|.|..X.X|.|.'.|.'.|.|. X|..X|. X|._.|.|._.|.|._.`.(.(./.^././.E.!.~.~.~.~.~.~.~.~.~.~.T.~.~.~.T.~.~.~.T.~.~.~./.~.(././.(.~.T.~.~.T.T.T.~.T.~.T.~.T.T.T.T.T.T.T.U.Y.L.L.U.I.L.L.L.L.S.U.H.H.S.S.S.H.A.S.A.A.S.A.A.A.H.g.A.A.A.A.A.h.A.A.h.h.l.l.l.l.l.l.h.h.A.A.A.D.D.h.A.l.l.h.h.l.l.g.A.l.l.l.l.h.h.k.k.k.k.z.f.k.k.k.g.k.k.k.g.h.a.g.f.z.f.g.f.g.a.a.a.f.a.a.a.i.u.u.u.u.u.u.p.t.t.t.t.t.r.r.r.w.r.t.y.r.y.t.y.y.w.w.r.y.r.r.r.r.y.r.r.r.E y.w.y.y.y.y.E y.E E w.y.E y.y.y.E y.y.y.w.E y.y.y.y.y.y.y.E y.y.y.y.E y.E y.y.E E y.E E y.y.y.y.y.y.t.r.r.r.t.t.t.t.", "Z J Z H Z L H H H H H H H J J H H H H H H H H H H H H H H H H H F H H H H H H H H H H H H H H H L L H H H H D H H H L L H H H H H H J P H P H H H P H U H P J H L J L L L H J G H G K H L H H H P H H H L H H L J H H H H H L H H H H H H H H H Z H P H D D D D Z H Z Z D Z H D Z Z Z Z B Z Z B Z C C Z C C Z C Z C B C C C D Z Z Z Z G Z C D Z Z Z Z D L H Z L H D D D D D H Z Z Z G Z Z Z G Z Z Z H Z D D Z G Z Z U Z.S.H.S.H.H.S.H.H.H.H.H.H.S.S.H.L.L.L.L.L.L.L.L.L.P.P.P.P.P.T.T.T.T.T.~.~.~././././.(.(.(.(.(.(.(.(._._._.|.{._.|._.(._._._.^._.(.(.(.(.(./.(./.!./.T.~.~./.T.~.T.T.T.T.T.T.T.P.T.T.T.T.T.~.Y.T.T.T.~.~.~.~.~.~./.~.T.~.~.T.T.T.T.T.T.T.T.!.T.~.T.[.T.T.T.T.U.U.T.U.U.L.U.L.L.L.P.L.S.P.P.U.U.U.L.L.U.L.L.U.U.Y.T.T.T.T.T.R.~.~.~./.[.(././.(.(.(.(.(.(.(.(.!.(.(.(.(.`._.(.^.^.^._.(._._.{.(.^.`.(.(.`.(.(.^.^.|.`.`.[.(.(._._.|._.|._._._.|.|.|.|.{.|.|.`.|.{.`.(.|._.{.`.^.^.`.`._.`.|..X.X.XdXzXdXdXdXzXzXzXzXdXdXdXxXzXzXzXzXdXxXdXdXzXcXzXcXdXcXxXxXcXcXxXxXdXxXdXdXzXzXzXxXvXvXxXxXxXxXnXxXnXxXcXmXnXnXnXnXnXnXnXnXnXxXxXnXnXnXnXnXmXcXcXcXcXcXnXxXcXxXnXvXnXnXnXxXnXJXxXnXcXJXxXxXxXdXcXxXdXxXnXdXdXdXxXdXzX'.xX.X.XdXxX.X.X.X.X.X.X|. X|.|.}.}.}.{._.}.}.|.|.|._.|.|._._.}.}.}._.|.|.|.(.(.(.(.(.(.(././.(.~.(.~././.T.T.T.T.U.U.P.P.P.P.T.U.T.U.T.T.T.T.T.T.T.T.T.T.T.T.T.~.~.^.~.~.~.~.~.T.~.Y.T.T.P.T.P.P.U.L.P.P.P.L.L.S.S.L.H.H.G.H.G.A.H.S.A.A.A.h.h.h.h.h.h.h.l.k.f.f.g.a.k.a.a.a.i.i.i.i.i.i.i.s.u.i.i.s.a.i.a.i.a.a.a.a.i.i.i.i.a.a.d.a.f.i.z.i.k.i.z.a.g.s.f.g.a.a.k.i.a.a.a.g.f.f.f.f.z.a.g.g.a.g.g.i.f.f.f.f.g.g.g.j.z.k.f.h.f.f.k.h.h.z.l.l.h.l.l.l.l.h.l.l.h.h.h.h.l.l.h.l.g.A.h.A.A.h.h.A.A.A.A.A.A.A.S.S.Z.H.G.S.L.L.L.S.L.L.L.L.L.U.U.U.T.T.T.~.~.T.~.~.~.~.~.~./.(./.(.(.[.|.^.^.|.(.`._.(._._.{.{.|.(._.|.|.|.`.`.|.|.|..X@X`.'.|..X|.|.`.|.|._._.[.|.|.(.(.(.(.^.(._.(.(.(.(.(.(.(././././././././.~.!././././././././.(./.(.(.(._.(.(._._._.|.|._.'.|.|.|..X|..X|. X X.X|..X.X.X|..X'.|. X|.'. X|..X.X X|.|.|._._.|._.|._.^.(.(.(.^././././.^.!.~.~.~.~.~.~.(.~.T.~.XXU.~.T.T.~.~./.~.~././.~.~.~.~.T.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.U.U.U.T.P.U.U.U.L.L.L.L.L.L.L.H.H.H.K.Z.A.H.H.A.A.A.A.A.h.h.A.A.Z.j.A.A.A.A.h.h.h.h.h.g.h.h.l.l.G.g.h.l.h.A.A.l.l.l.z.h.k.g.g.g.l.l.d.l.h.k.h.k.g.k.k.h.g.k.k.k.k.k.g.z.g.g.g.g.z.a.g.f.a.g.i.g.a.g.a.a.i.i.i.i.u.u.p.t.t.t.t.t.r.r.t.r.r.r.r.r.r.r.y.w.r.E y.t.y.r.r.y.y.r.y.y.y.y.E y.y.y.y.y.E y.y.y.E w.E y.y.E y.y.y.y.y.y.y.y.y.y.y.y.w.y.y.y.y.y.E y.y.y.E y.y.E E y.y.y.y.y.y.w.r.r.r.t.t.t.t.u.", "Z Z H Z H H Z L Z H H H H H H H H H F J H H H F H H H F F F H H Z K H G H H H H H H H H H H H Z L Z H H H H H H H H H D L D U H H P H H H P U J H H H P H P H H J H L H H L H H Z H H H H H L H H H H H H H H Z H H H H H H H H H H H H H H H H L H H Z D D D D Z Z H Z Z D D D Z Z Z D D Z Z G G C C C Z C Z C C C D Z Z Z C Z Z C Z Z Z G Z Z Z G Z D Z Z G Z Z D D D Z D D D H Z Z H Z Z Z Z Z Z Z Z Z G D Z H Z G e.Z.H.z.H.S.H.S.H.S.H.S.H.L.L.L.L.L.L.L.L.L.L.L.L.P.P.P.P.T.T.T.T.T.~.T.~.~.~././././././.(.(.(.(._.(._._./.|.(.^.|._.|.|.(.|._.(._.(.(.(.(./.(./.(.~./.~.T.~.~.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.~.~.Y.~.~./.~./.~.~.~.~.T.~.T.T.~.T.~.T.T.T.T.T.T.P.T.T.T.T.T.U.U.L.L.L.L.L.L.L.P.U.P.P.P.U.L.L.L.Y.L.Y.U.Y.U.U.T.T.T.T.T.~.~.~.~.~.(.^.(.(.(.(.(.[.(.(.(.(.(.(.(.(.(.(.^.`.`.(.^.(.(._._.`._.|.(._.^.|.(.{.).^.`.`.(.}.|.|._.|._.|.|._.|.|.|.|.|.|.|.|._.|._.|._.^.`.{._.`.`.`.^.`.`.|.|. X.X.X.X.XdXdXdX'.zXzXzXdXxXdXdXzXzXzXzXcXdXnXcXzXdXdXxXcXcXxXxXcXcXxXxXdXdXdXMXxXzXxXxXxXxXxXxXnXcXnXxXnXnXnXnXnXnXmXnXnXnXcXnXnXnXnXnXnXnXnXnXnXnXnXnXnXnXxXxXnXxXnXnXnXmXzXJXcXnXcXnXcXcXxXxXxXcXcXzXcXdXdXnXdXdXdXxXzXzX'.zX.XdXdXdX.X.X X.X.X X X|.}.|.}.}._.|.}.}.^.{._.{._._.|.`.}.}.[._.|.^.^.`.(.(.(.(././././.~.~.~.~.T.T.T.T.T.T.U.U.P.P.P.U.T.U.T.U.T.U.U.Y.T.T.U.T.T.T.T.T.T.T.T.T.~.~.~.T.~.~.~.T.T.T.T.T.T.P.Y.L.P.P.P.D.S.L.H.H.G.H.H.S.H.H.A.h.S.A.A.A.h.l.h.h.h.l.k.k.f.f.a.f.a.a.i.s.a.i.i.i.s.t.i.u.i.u.u.i.i.i.i.a.a.a.a.a.i.i.k.k.a.a.a.a.z.i.a.a.i.z.d.f.a.a.a.a.g.i.f.a.a.f.f.s.f.f.f.f.a.z.a.g.f.a.a.f.f.a.a.g.a.g.g.a.j.a.f.j.k.j.j.k.h.l.l.z.h.G.g.A.A.A.l.l.A.h.A.h.l.h.A.A.A.A.A.A.A.G.A.A.A.A.S.A.A.S.S.S.J.H.S.J.S.S.L.L.L.L.L.U.U.U.U.T.T.T.T.T.T.T.~.~.~.~.~././././.(.(.(.(.(.(.(._._._._.|._.|.`.|.|._._.|.|.'.|.|..X|..X|..X.X.X.X.X.X|.|.|.|._.|._.|.^.|./.`.(._.(._.(.(.|.(.(.(.^.(./.(././.(.^.~./././.(./.(./.(./././.(.^.{.(.(.(.`._._._._.|.}.|.|.|.|..X X X X|..X.X X|.|.|.|.|.|.|.|.|.|. X|.|..X X.X|.|. X|.|._.|._.(.{.(.{.^./././.~./././.T./.~.~.~.(.(.T.XXXX~.~.~.~.T.~.~.~.~./.~.~.(.T.~.T.T.T.Y.T.T.T.T.T.T.T.T.T.T.T.Y.Y.T.U.U.U.I.I.L.L.L.H.S.L.S.S.H.H.H.A.S.A.h.h.A.A.A.A.A.A.A.j.G.h.g.A.A.h.h.h.h.h.g.h.z.h.z.l.l.l.l.l.h.A.l.h.l.l.l.l.l.l.l.l.l.l.l.l.k.h.h.k.k.h.h.k.g.g.g.k.k.k.g.g.g.g.f.g.f.z.g.a.g.i.z.a.f.a.a.a.i.a.i.i.i.u.u.u.u.u.t.t.t.t.r.r.t.r.r.r.r.r.r.y.y.t.y.r.r.y.y.r.E t.y.r.r.w.y.y.y.y.y.y.w.y.E y.w.E E y.E y.y.y.E y.w.y.y.y.w.r.y.w.y.y.y.w.y.w.E w.y.E E y.y.E y.E y.E y.y.y.w.r.r.t.r.u.t.t.u.", "S J L Z H H H Z H H J H H Z H H J H H H H H Z H H H H H L H Z D H H H H H H H H U H H H H H H H D H H H H J H H H H H H H P H L Y L U H J H H H U L P H P H P U J J J H H H H H H H H H H F H H H H H H H H H H H J H H L L H H H H Z Z J H H H H H H H Z Z D D L Z Z Z D Z Z Z Z Z Z B D C D C C C C B C B C C C Z C C B Z C Z D Z C G Z Z Z Z D D D Z Z D D D D D D D D D D D G Z Z Z Z Z Z Z Z L D G Z D D D Z D Z T H.S.A.S.H.S.H.S.S.H.H.S.L.S.L.L.L.L.L.L.L.L.L.U.U.U.P.T.P.T.T.T.T.T.~.~.~.~.~./.!././.^.^.(.(.(.(.(._.(.{.(.|.{.`.`.`.`.(.|.(.(.(.(.(./.(./.!.~./.~.~.~.~.T.~.T.T.T.T.T.T.T.T.T.T.~.T.T.T.T.~.T.~.~.~.~././.~./.~.~.~.~.~.T.T.T.~.~.R.~.^.~.~.T.T.T.P.T.U.T.T.U.U.L.L.L.S.P.P.P.U.P.P.D.L.U.U.L.U.I.U.U.Y.T.T.T.T.T.~.T.~.~.~.[./.(./.(.[.^.^.`._.[.|.^.(.(.(.(.(.(.(.(.^.(.(.(.(.`._._.(.|.|.|._.(.`.(.(.^.^.|.|.{.|._._._.|.|.|.|.|.'.`.`.`.|.`.`.|._.^._.|.`._.(._._.(.`.|.^.|.|.|.|..X.X.X.X.XdXdXdXzXvXzXvXzXzXdXxXzXzXcXzXdXcXnXdXcX@XxXxXxXxXxXcXxXvXxXzXcXzXvXzXzXxXxXxXxXxXxXvXxXcXvXnXcXmXnXcXnXnXnXnXnXnXmXcXnXnXnXnXnXnXnXnXnXnXnXnXcXnXnXnXxXnXcXcXxXxXvXmXcXnXcXcXnXxXxXxXxXcXdXcXxXdXdXdXcXdXzXzXzXzXzX.X.XzX.X.X.X.X.X`.|. X|.|.|.|._.|._.`.|.(.`.(.`.(.`.(.|.(.(.{.(.`.^.(.(.(.{.(.(.^././.~.^.~./.(.T.T.T.T.U.T.U.U.U.P.P.P.P.U.U.T.L.U.U.I.I.U.U.U.U.U.T.U.T.T.T.T.T.Y.T.T.~.T.T.T.T.T.T.P.T.U.U.U.U.L.T.L.H.U.H.H.H.H.A.H.S.A.G.A.A.A.A.A.g.h.h.h.h.j.f.k.k.f.f.k.a.a.a.i.i.i.s.a.i.a.i.u.u.u.i.u.i.i.i.i.a.i.a.a.i.a.i.a.i.a.a.i.d.i.i.a.a.a.a.a.a.a.a.d.s.a.a.a.f.a.g.f.z.a.a.f.f.g.f.f.a.i.g.a.a.d.z.a.f.z.a.z.g.a.j.j.j.j.z.k.f.k.z.l.h.h.A.h.A.l.A.h.A.h.A.h.A.S.h.A.h.A.A.h.A.A.A.G.A.A.A.G.H.H.H.H.D.H.H.L.D.S.L.L.L.L.U.P.P.T.T.T.T.T./.T.T.[.T.~./.~./.^.(.(././.(.(.`._.(.|._.|.[.|._.|._.|.`.`.'.|.|.|. X|..X X.X.X.X.X|..X.X|..X.X.X|.|.|. X|.|._._.(.`._.|.`.^.^.(.(.(.(.(.).(.(.(.^./.(.!././.(./././././.(.(.(.(.(.(.).{.(.(.(.(.`.(.|._._.|.|.|.|.|.|.@X X X|.|. X X X X|.}.|.|._.|. X X|..X.X|..X X_.|.|.|.|.|.|._._._.(.(.(.(.(././.!././.~.~././.(.T.~.T.E.T.T.T.T.(.T.T.~.~.~.~.T.~.~.T.T.T.T.T.T.T.T.T.T.T.T.Y.T.T.T.U.U.T.U.Y.Y.U.L.Y.L.L.L.L.L.L.H.H.H.G.G.Z.J.h.A.A.A.A.j.Z.A.h.A.j.A.g.A.g.j.h.l.l.h.h.h.z.l.l.h.k.h.h.h.l.A.A.l.A.l.l.l.l.l.l.h.h.l.l.h.l.h.h.h.h.z.h.g.z.g.g.g.k.k.g.g.z.g.k.g.f.g.z.a.g.i.a.z.k.i.k.k.a.a.i.i.i.u.i.u.u.t.u.u.t.t.t.t.t.t.r.r.r.r.r.y.r.E r.y.E y.w.t.y.y.y.y.y.w.y.y.y.y.y.y.y.y.y.y.y.y.E E y.y.E y.y.y.y.y.w.y.y.r.y.y.y.y.r.y.y.E y.y.y.E y.w.E E w.E y.y.y.y.y.r.r.t.r.t.t.t.t.u.t.", "H H Z H H H L Z H H F H H H H H H H H F H H H H H H Z F H H H H Z H H H H H J H H H H H H H H H H U H H H H H H H H H U U H P H J H H J H J P H P H H P H P H J J H K J J H H L G L H H H H H H H H Z H Z Z H H Z Z H Z Z L Z H H H H L H H H Z H H Z H Z H D D D Z Z H Z G D D Z Z Z Z Z D C C D C Z Z C D C D D C Z C C C Z C Z Z Z Z Z Z G Z Z Z D D H D Z Z A D D D D D Z D Z Z Z Z G Z Z Z Z Z Z Z D D D D Z Z Z T A.S.H.H.h.H.H.S.S.H.S.S.L.L.L.U.L.L.L.S.L.L.L.L.U.U.P.P.T.T.T.T.T.T.T.~.!.~./.!./././././././.(.(._._.(.|.(.^.`.^.(.^.(.(.(.(.{.(.(./.(././././.~.~.T.~.~./.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.~.T.~.~.~.~.~.(.T./.~./.~.~.~.~.~.!./.~.~./.~.T.[.T.~.[.!.T.[.[.T.T.U.U.U.U.U.L.P.P.P.U.P.U.L.I.L.U.Y.I.T.U.T.T.T.T.T.T.~.T.~.~.~.~.!././.(.(.`.(.(.[.^.(.(.(.(.(.(.(.(.`.(.(.(.(.(.(.^.`.(._.(.`.(._.|.|.|.(.|._.(.`.{.|.|.|. X|.|.|. X_. X_.|.`.|.`.|.|._.|.|.|._._._.|.|.(.(.`.|.(.`.|.|.|. X.X X.X'.dXdX.X'.zXzXzXvXzXdX.XzXzXzX.XcXcXdXdXzXxXxXzXxXxXzXcXxXxXxXcXzXzXJXzXzXxXzXxXxXnXnXnXnXxXmXnXmXnXnXmXMXnXnXnXmXnXnXnXnXnXmXnXmXnXnXnXcXnXnXnXmXcXnXnXnXnXnXzXnXnXnXnXnXxXcXnXfXxXnXnXvXcXcXcXxXxXdXnXcXdXzXzXzXzX.X.X.XzXzX.XzX.X.X.X.X|.'.|. X_.|._._.(.`.`.^.^.|.(.^.{.^.`.(.|.^.^.(.(.(.(.(.^.(./././.~.~.~.~.~.T.T.T.T.T.Y.U.P.P.P.P.U.Y.L.U.L.L.L.L.L.L.L.L.L.U.U.Y.U.T.U.U.T.T.T.T.T.T.T.^.~.Y.T.T.T.P.I.U.U.L.H.L.L.L.L.H.H.G.A.G.A.A.A.A.A.A.A.g.A.l.l.l.h.k.h.z.f.j.f.f.a.a.a.a.a.i.i.i.u.s.i.i.i.i.i.s.i.u.u.i.u.i.i.i.a.i.i.a.a.i.i.a.i.i.i.i.i.k.a.a.z.a.a.a.a.a.f.i.f.i.a.a.a.f.a.z.a.f.f.f.d.z.f.g.g.f.i.a.z.f.a.g.k.j.x.j.j.a.f.f.j.j.h.h.h.h.A.h.l.l.A.z.A.g.A.h.A.j.h.G.h.z.h.A.A.A.A.A.G.A.S.S.A.G.H.H.H.S.L.H.K.U.L.L.U.L.L.P.T.T.T.T.T.T.T.T.~./.~.~.~.~.~./.~./.(./.(.^.(.^.{./._.|.|._.|.|.|.|.`.|.|.`..X'..X|.'..X.X.X.X.X.X.X.X.X.X.X.X|.|..X|.'.|.|._.`.`.|.(.(.(.|.`.(.(.(.(.(.(.(.(.(./.^././.(././.(.(.(.).(./.(.(.).(.(.(.(.(.^._.(.`./.^.(.|.{.|.|.|.|.|.|.}. X|.|.|. X|.}.|.}._.|. X|.|.'.'..X'..X|.|. X}.|.|.|.|.}.|._.`._.(.(.(./.(.^././././.~./.~.(.(.~.(.U./.[.T.T.~.~.~.T.~.~.~.~.T.~.T.T.T.T.U.T.I.T.T.T.U.I.I.U.T.U.T.T.L.U.U.P.U.U.L.L.L.L.L.K.H.H.K.H.H.H.H.A.A.A.A.A.S.g.G.g.A.A.A.h.A.h.D.h.h.l.l.h.h.h.g.g.k.h.k.h.h.l.l.h.h.h.A.G.l.l.l.l.h.h.z.h.l.l.l.h.k.h.k.k.k.h.g.g.g.g.g.g.k.g.h.g.g.g.g.a.f.f.f.a.g.i.f.z.a.i.a.a.a.a.i.i.i.i.u.u.t.t.u.t.t.t.u.r.r.r.r.r.r.r.r.r.r.t.y.E r.y.y.y.w.y.t.y.y.w.y.y.y.y.y.y.y.y.y.y.w.y.y.y.w.w.y.E y.y.y.w.y.y.y.y.r.y.y.w.y.y.y.y.E y.w.y.y.y.y.E y.y.y.y.y.r.r.r.t.t.u.u.t.t.u.", "H Z L L Z Z H H H Z J H Z H H H H H G H H F H H H H H H H H H H H H H H H H G K H H H H H H H J P H H H H H J J L H L L J H P P H H J H J H L K J H H H P U J H J J H H J J G K P H H H H F H F L Z H H J H Z S Z L Z L Z L P L Z Z Z J H Z H H Z H H H D H D D G C Z Z Z D D D Z Z B Z B D C D C C C C D C C C Z B Z C D C C Z B D Z Z Z Z B D G Z D D D Z D D D D H D Z G D Z Z L H G Z Z Z G H Z H Z D D Z Z Z D Z U Z.Z.H.S.H.S.S.L.S.S.S.L.L.L.S.L.L.L.L.L.Y.L.P.U.U.P.P.P.T.T.T.T.T.T.!.T.~.!.~.~.^.~.!././.(.(.(.(.(.(.(.|._.{.|.^.(.`.^.(.(.(.(.(.(.~.{.(./././.~./.~.~.T.~.T.~.T.T.T.T.T.T.T.T.T.T.T.T.T.~.!.T.~./.[.^.^./.~./.~././.~./.~././.~./.!.!.~.~.~.T.T.~.T.[.T.T.[.P.U.U.P.P.U.U.U.U.P.P.U.U.U.U.I.T.T.U.I.T.T.T.T.T.~.T.~.~.~.~.~.!./.(.(.(.[.^.(.(.(.^.(.[./.(.(.(.(.(.(.(.(.(.(.(.(.(._._._.^.|.|.[._.(.(._.|.`._.{._.|.|. X X|.|. X|.'. X|.|.|.|.|.`.|.|.|.|._.|._.{._.{.|.`._._.{.|.|.|. X|..XdXdX'.zXdXzXzXzXzXzXzXzXJXzXzXcXcXvXzXcXcXxXxXxXxXxXxXxXdXxXzX.XcXvXzXdXdXzXcXxXxXxXxXnXxXvXxXnXnXnXnXnXnXnXnXmXmXmXmXmXvXMXmXmXmXmXmXmXmXmXcXmXmXcXmXnXnXvXnXxXJXvXcXnXvXxXJXnXxXnXxXxXnXcXxXcXcXxXxXxXxXzXcXzXzXzXzX.XzXzXdX.XzX'..X.X.X.X'.|.|.|._.|.(.{.`.(.^.(.(.^.(.(.(.(.(.(.(.(.|.(.(.(.(.(.(.[.E.E.^.~.[.~.~.T.T.T.T.U.U.U.U.L.U.P.P.L.U.L.L.L.L.L.L.L.L.L.L.L.L.R.U.U.U.U.Y.U.Y.Y.Y.T.T.Y.T.Y.P.P.P.U.T.L.L.L.L.L.H.L.H.H.H.H.A.H.A.G.A.A.A.A.A.A.A.l.l.l.h.l.k.k.k.k.k.f.a.k.a.a.a.a.i.a.i.s.i.u.i.i.r.i.t.i.u.i.u.u.a.i.i.a.i.a.a.i.i.i.i.d.i.i.i.i.a.a.i.a.a.d.a.a.a.i.i.k.z.a.z.a.a.a.a.f.z.f.g.g.a.f.a.a.k.z.a.f.f.g.a.a.g.j.z.h.f.j.f.z.h.z.l.h.h.h.l.h.h.h.S.A.A.A.A.A.A.A.A.A.A.S.S.A.A.A.h.G.A.A.H.H.L.H.U.L.L.L.L.J.L.U.L.U.P.U.Y.T.T.T.T.T.T./.~./.T.~.~.~.(./././.!.(.(.(.(.`.(._.|._.|.|.|.`.`.|.|.|.|.@X_..X.X|.'..X.X.X.X.X'..X.X.X.X.X.X.X.X.X.X.X|. X|. X|.{._._.|.`.`.`.^.^.`.(.(.(.(.(.(.^.^.(.(./.(.^.(./.(.(._.^.(.'.(.(.(._.^.`.(.|.^.|.`.|._.|._._.|.|.|.|. X|.}.|.}.}.}.|.[.}. X|.|._.|.|.|..X X|..X X X'.|.|.|.|.|.}.}.`.(.|.(.`.^.^././.(./././.~./.~.~.~.~.~.T.(.T.T.T.T.~.T.~.T./.T.~.T.T.T.T.U.U.Y.L.Y.Y.U.U.T.U.Y.U.Y.I.U.U.U.U.U.L.U.L.L.L.L.L.H.S.H.K.G.H.H.G.A.A.A.A.A.A.A.A.g.g.A.h.A.D.g.l.l.h.h.l.h.l.z.k.a.z.z.g.h.h.h.h.h.h.h.l.D.h.l.l.h.l.l.l.l.h.l.l.l.h.h.h.k.h.k.g.g.g.g.g.g.h.h.h.z.g.g.g.g.g.a.d.f.a.z.k.a.a.a.k.a.a.a.a.a.i.i.u.u.u.u.u.u.t.t.u.E t.r.t.r.t.t.r.r.r.y.y.r.t.r.y.r.r.w.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.E y.y.y.y.y.w.y.y.w.y.y.w.y.r.r.r.y.w.y.w.y.y.E y.E y.E y.E y.y.y.E t.y.r.E t.t.E i.t.u.u.t.", "H H H Z L L H H H Z H H H H H H F H H F H H H H H F H K H H H H H H H H H P H J H J H G H H H J H H H L J H H H L J L K H J J J P P J J J J L P J J J J J H J J J L J L L L L H H H D H H H H H Z J Z Z H Z J Z C J Z Z L Z Z Z Z H L Z H H H H H H Z S D D D D H Z Z Z G Z D Z Z Z D Z Z C C D C C Z C C C G C C C C Z C Z Z C C D Z Z Z Z Z Z Z D Z D D Z D D D D Z H A Z Z D Z Z Z Z Z L Z L Z Z Z Z D Z H H Z H Z G b.A.H.S.S.H.S.S.S.U.S.L.S.L.L.S.L.L.L.L.U.P.P.P.U.P.P.P.U.T.T.T.T.T.~.~.~.~.~.~.^.E./././././.[.(.(._.(.(._.^.(.^.`.{.(.(.(.(.^./.(.^.~./././.~.~.~.~.T.T.~.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.~.~.~.~.~./././.(.^.^./.~.~./.~././.!././././.~.~.T.~.~.~.T.T.T.T.T.T.P.U.U.U.P.P.U.D.P.P.U.P.U.U.U.U.U.T.T.T.T.T.T.~.T.~.T.~.~.~.~./././.!.(._.!.(./.(.{.{.].(.(.].^.`.(.(.`.(.(.(.(.`.`.(._._.|._._._._.|.|.|._.`._.|.|._._. X_. X|..X|..X'.|..X|.|.|.|. X|.}.|._.|.|._.|.|.^.|._.|.|.|.|.|. X.X.X@X.XdXzX@XzXzXzXzXzXzXzXzXcXzXdXcXdXcXzXcXxXxXxXxXxXxXxXJXxXvXcXcXcXnXdXdXzXdXxXxXxXcXnXnXmXnXnXnXnXnXnXcXnXmXnXMXnXmXmXfXnXmXmXmXmXmXmXmXcXmXmXmXmXmXmXnXnXnXnXnXnXnXnXnXnXnXxXxXnXxXxXnXnXxXcXcXxXxXxXxXcXzXzXzXzXdXzX.X.X.X.X.X.X.X.X.X|.|..X|.|._.`.`.|.^.`.(.(.(.(.(.{.(.(.(.^.|.(.(.(.(.(.(.^.(.^.(.^.~.~.~.~.T.T.!.T.T.U.U.L.U.L.L.P.Y.L.L.L.H.L.L.L.L.L.H.L.L.L.L.L.L.L.L.U.L.L.U.U.U.T.T.T.Y.Y.!.T.P.U.U.U.U.L.L.H.L.H.S.H.S.S.H.A.H.j.A.A.A.h.A.l.h.A.l.k.l.l.h.l.j.k.k.f.s.a.a.a.a.a.s.i.i.t.a.i.i.i.a.u.i.u.i.u.u.a.t.i.i.i.a.i.i.i.i.i.i.u.i.u.i.i.i.a.i.a.a.a.a.a.a.i.f.i.i.a.a.a.f.a.k.f.a.f.f.f.g.f.f.g.k.a.z.g.a.g.a.f.f.a.f.f.j.f.f.f.j.z.k.h.h.h.h.h.A.h.l.A.z.A.g.h.A.A.A.A.A.S.S.A.S.H.J.A.G.A.H.S.D.Z.L.L.L.L.L.L.L.Y.P.P.U.T.T.T.~.T.~.T.T.T.~.~.~.~.^.^./././././.!.(.(.(.^._._._.|._.{._.|.|.`.'.`.`.'.'.|..X.X.X'..X.X.X.X.X.X.X.X'..X.X.X|..X.X.X X.X'.|._.|.|.^.|.(.^.(.`.^.^.(.(.(.(.{.^.(.(.(.(.(./.(.(.{.{._.(.(.(.^.(.(.(.|.(.(.{.^.|.(./.|.|.|._.|.|.|.|.}.|. X}. X}.|._.|.|.|._. X X_.|.'.|.|.|. X|.'.|.|. X X}.|.|.}.}.(.|./.(.{.(.|.(.(./././././././.~.~.~.T.~.T.T.(.~.T.~.~.T.~.~.T.T.T.T.T.T.T.U.L.L.L.I.U.U.U.U.Y.Y.U.I.U.U.L.L.U.Y.L.U.U.L.L.L.L.L.H.H.H.H.H.H.A.A.A.G.A.A.g.h.A.h.h.h.h.z.S.l.l.h.h.h.h.z.h.g.z.g.g.g.h.z.h.h.l.A.h.A.z.D.l.l.l.l.A.A.l.A.l.l.A.A.h.h.h.h.h.g.g.z.g.g.g.k.h.h.h.g.f.g.k.f.f.f.f.a.a.a.k.a.a.a.i.k.a.i.i.i.i.i.u.u.u.t.t.u.t.u.E t.r.r.r.t.r.y.r.r.y.t.y.r.y.y.y.w.y.r.w.y.y.y.y.y.w.y.y.y.y.y.y.y.y.w.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.r.r.y.y.y.y.y.w.y.w.E E y.y.y.y.y.E r.r.r.t.t.t.u.t.u.t.t.t.", "H H H J J G F H H H F K H H H H H H H F H H H Z H H Z H H F J H H H L L Z J H H J H J L L Z J Z J F D H P P H P P H J J H P P P J P L P J L J J L J J L L P K H P J J P L L L L L L H H H Z H H H H D D D D D D H D D D Z Z G L D D D D D D D D D D D D D D D Z Z D Z D Z D Z Z Z Z C Z Z C Z C C C Z D C C D C F C D C Z C Z Z Z Z Z Z Z Z G Z Z F Z Z Z Z F D H Z Z H Z Z Z G Z Z Z Z Z L Z Z G Z C Z Z Z Z L Z A H H e.Z.S.H.S.S.S.H.H.H.H.L.S.H.L.L.L.L.L.L.P.P.P.P.P.P.T.P.T.T.T.Y.T.T.T.~.~.~.~.~.~.^.(.^.~.(././.(.(.(.(.`.(.(.(.(.(._.(.(.(././.(.~.(.(.(.~.~.~.~.~.~.T.T.T.T.~.~.T.T.T.!.T.U.Y.!.T.~.T.~.~.~.(.^.(./././.(.(.(././././././././././././.!./.~.~.~.~.~.~.T.T.T.T.T.T.T.U.U.P.L.L.L.U.P.U.Y.U.T.T.T.T.T.~.T.U.T.T.~.~.~.~.~.~.~././././.(./.{./.(.(.(.^./.^.(.{.(.(.(.(.(.(.{.(.(.|.(.|._.}.}.(._._.(._.|._.}.}.}.}.|.}.}. X X.X|..X|..X X'.|..X`.'..X.X`.|.`.|.`._.|._._.|._._.|.`.|.|.`..X|. XxX.X.XdXdXzXzXdXzXzXzXzXcXzXzXcXdXnXdXxXxXxXcXxXxXdXnXnXcXcXcXcXcXxXxXxXxXxXxXxXxXxXcXnXnXvXnXnXnXcXmXcXmXmXdXmXmXSXfXmXmXmXmXmXMXmXmXmXmXmXmXmXmXmXmXmXnXnXnXnXnXnXnXnXnXnXcXcXcXcXcXcXmXcXcXcXcXnXnXcXdXdXzXzXzXzX.XzX'.dX'..XxXdXdX.X.X.X|.'.|.|.`.(.`.(.(.(.(.|.(.(.(.(.(.(.(.(.(.(./.(.(./.^.^././.~.~.~.[.T.T.T.T.Y.Y.P.L.U.U.U.U.P.L.L.L.S.L.L.L.S.H.L.L.S.U.L.U.L.L.S.L.L.U.Y.L.L.P.P.P.P.Y.P.Y.L.P.P.P.P.P.L.L.L.H.L.H.S.H.H.H.l.A.A.A.h.A.A.g.G.A.l.l.l.h.h.h.f.k.k.k.f.f.f.a.a.a.a.a.a.i.u.s.u.u.i.u.i.i.r.a.i.i.u.u.s.i.s.i.s.u.i.i.a.u.u.i.u.u.i.u.i.u.i.i.u.i.a.i.a.a.a.a.a.i.z.i.k.a.k.k.a.a.a.f.f.f.k.f.f.g.f.a.z.a.z.g.a.z.g.g.a.j.f.g.h.g.h.h.h.h.l.h.h.A.S.h.A.A.A.A.A.A.A.A.A.A.S.S.H.S.H.H.A.H.S.H.H.L.H.L.L.L.L.U.U.U.T.T.T.T.T.T.~.T.~.~.~.T././.~.!././././.(./.(.(.(.(.(._._._.(.|._.|.|.|.|.|. X X.X|..X.X.X.X.X@X.X.X.X.X.X.X.X.X.X.X.X.XdX.X.X.X.X'..X X'.|.|.|.|._.|.|.{.^.^.(._.(.(.(.(.(.(.(.(.`.(.(.(.(.|._.(._._.^.|.^.^.`._._._._._._._._.{.|.|.|._.|.|._.|._.|.[. X|. X X|.|.|.|.{. X|.|._.|.|. X|.|. X'.|.|.`._._._._.(._.(.|.(.|.^.(.(.(.(./.(.(././.~.~.!.~.~.~.~.~.T.~.T.~.T.~.T.T.T.U.Y.T.U.U.U.U.P.P.L.U.L.U.U.Y.Y.P.Y.P.U.P.P.P.U.Y.L.L.S.P.L.Y.U.L.S.H.H.H.S.Z.A.A.A.A.A.A.g.A.j.h.h.h.l.l.l.l.g.h.h.h.g.g.k.z.k.h.k.h.h.h.h.z.h.h.h.h.h.D.z.g.h.h.A.A.h.Z.h.G.g.g.h.h.h.g.h.g.g.g.g.h.g.g.g.a.g.k.f.f.d.f.f.a.i.g.f.a.f.s.k.a.z.f.a.i.i.i.i.u.u.u.u.u.t.t.t.t.r.r.t.r.r.r.r.r.r.y.y.y.r.y.y.r.y.r.y.y.r.y.y.y.y.y.r.y.y.r.y.y.y.y.y.y.y.y.E r.y.y.E w.y.t.y.r.r.r.r.r.y.y.r.y.y.y.y.y.y.y.y.y.y.y.r.y.r.r.t.r.t.t.u.t.u.u.t.p.", "H H H H J H H H D H H H H F H H H H H H H Z H H H H J F H H H H H H H L H L H L L Z Z L H J L L J H P J H H P H J J J P P P P I K P L P P J J J J J J J P H I J H P P H L J L L L Z P H H H L Z Z D D Z D D D D Z Z Z F Z G Z Z D D D D D D D D D D D D D D Z F Z Z H Z D Z F Z Z Z Z Z Z Z C C Z C C C C F C C C C C Z A C Z Z D Z G C Z Z Z Z Z Z Z G Z G D D Z G H Z Z Z L Z Z Z G Z G Z Z Z Z Z G Z L Z G Z H Z Z H Y Z.G.H.D.A.S.H.H.H.L.S.U.H.L.H.L.H.L.L.P.P.P.P.P.P.P.T.T.T.T.Y.~.Y.~.T.R.~.~.~.~.~.~.~.(.~.!.^.(.(.(.(.(.(.`.^.(.(.(.(./.(./.(.^.^.~.~.~.(.~.~.~.~.~.~.~.~.~.T.T.T.~.T.T.T.!.Y.T.T.T.~.T.~.T.~.~././././.(.(./././.(././.^.(././.(.!./.T.^./.~.~.(.~.T.~.T.T.~.T.T.T.U.P.P.Y.U.U.U.U.T.U.T.U.T.T.T.~.T.(.^.T.(.~.~.~.~.^.~.~.(.[.^./.[.(.[.^.(.(.(.[.(.(.{.(.(.(.(.`.(.(._.(.(.^._.^._.}.|._.|.|.|._._._.|.}.}.}.|.}.}.|. X|.'. X.X.X|..X|..X|..X.X'.`.|.|.`..X|.|.|._.|.|.|._.`.`.|.`.|..X.X.X.XdX.XdX.X.XdXzXzXzXzXdXzXcXdXxXxXxXxXxXxXxXxXxXxXxXfXcXcXzXcXcXcXxXxXxXxXxXvXxXcXcXcXMXnXnXnXmXmXmXmXnXmXcXmXmXcXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXnXmXmXmXnXnXcXcXnXnXnXcXnXnXcXcXcXcXnXnXcXcXnXxXcXxXcXzXzXzXdXxX.X.X XdX@X.X.X.X.X.X.X.X|.|.|._.|.(.(.|.`.(.^.(.(.(.(.(.(.(.(.(.(.(.(.(././././.(.(.~.~.~.T.T.T.U.P.P.L.U.U.L.P.L.L.L.L.L.U.S.S.U.H.H.K.H.L.U.S.S.U.L.U.L.L.L.L.Y.L.P.L.P.Y.Y.P.U.P.U.U.P.P.L.L.U.D.L.H.H.S.H.A.H.A.A.A.A.h.A.A.A.j.l.h.h.h.l.l.h.z.k.x.k.f.a.k.a.a.a.a.i.i.s.i.i.i.i.u.i.u.u.u.i.t.u.u.u.i.i.u.i.i.a.a.u.i.u.i.u.i.i.u.a.u.i.i.i.a.i.i.i.a.a.a.a.a.i.i.a.a.a.a.k.k.d.g.g.a.f.f.a.f.a.g.a.z.a.f.a.z.f.f.g.g.g.g.g.g.g.h.l.l.l.l.h.h.j.g.A.h.A.A.A.A.A.A.A.S.S.A.H.D.G.H.H.H.H.H.H.L.H.L.L.L.L.I.L.U.U.U.T.T.T.T.T.~./.T.~.~.~./.~./././././././././.(.(.(.^._._._._.|.|.|.|.|.|. X|..X|..X X'.'..X.X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X'. X'. X.X|..X|.|._.(._.(._.`._.[._.[.(.{._.{.(.(.`.^.^.|.^.(.{._._._._.{.}._.`._._._._._._._._._._._._.|._.`.`.|.|._.|.}.}._.|._._.|._.|. X|.|.|.|. X|.{. X X|.|.|.`.`._.|._.|.|.|.|.(.(.{.(.(./.(.(././././././.~.~.~.~.~.T.~.~.T.~.T.T.T.T.T.T.T.T.L.T.U.Y.L.P.U.L.L.U.U.U.L.Y.Y.P.L.U.L.L.U.U.L.U.S.L.L.D.H.P.A.H.H.H.S.S.S.A.A.A.A.A.j.A.G.h.h.h.h.l.h.l.l.h.h.k.h.h.z.k.k.k.k.h.h.k.h.h.l.h.l.z.A.A.h.l.l.A.l.h.h.h.h.l.l.h.h.h.k.h.k.g.g.g.g.g.a.g.g.k.g.g.k.k.k.f.f.f.f.g.i.f.f.f.a.s.f.i.z.a.a.a.t.i.u.u.u.u.r.u.t.t.t.t.r.r.t.r.r.r.r.y.r.r.y.r.y.y.r.y.y.y.y.y.y.y.y.y.y.y.y.r.w.y.r.t.r.r.y.r.w.y.y.r.y.y.r.r.y.r.r.r.r.r.r.r.r.y.y.y.y.y.y.y.y.y.y.y.y.y.r.r.r.r.t.t.u.u.t.t.u.p.u.", "F G H H F H H H H H H G H H H H H H H H H K H H H H H H H H H H S I D J L J H H H J J J D J J Z J H J J K L L H J P P J J P ( S P P J P P K H J J J J J L J J J I H P H S L L L L H Z H Z Z H Z Z D Z D D Z F Z Z D H Z H Z Z D D D D D D D D D D D Z D Z D Z Z Z Z C Z B F Z Z B Z Z Z C C Z C Z C C F C Z C C Z C D C Z Z B Z Z Z Z Z Z Z Z Z Z Z Z Z Z D Z Z Z Z Z L G Z Z Z Z Z Z Z Z Z Z G Z Z L L Z Z Z L H Z Z Z G g.H.A.H.H.G.G.H.H.H.H.H.H.H.L.L.L.L.L.P.P.U.P.P.Y.T.P.T.T.T.~.Y.~.T.~.T.~.R.~././.~./.!.(.^./.(.(.(.(.(.(.(.^.(.(.(.(.(./.(./.E.[.~.(.~.~.~.~.(.T.~.T.~.T.T.~.T.~.T.T.T.T.T.U.T.~.~.~.~.T.T.^./././././.~.^././.(./.(.(.(.~.(.(./././.~.[./.[./.~.~.~.T.T.~.T.T.T.T.U.U.P.U.U.L.Y.L.U.U.T.T.T.T.~./.T.~.~.(.R.~.^././.~.~.(./.(.(.(././.(.(./.(.(.(.(.(.^.(.(.(.(.(.(.(.(.(.`._.`.(.`.[.|._._._._.|.|.|.|.}.|.|.|.|.}..X'..X|.|..X.X.X.X.X.X.X'..X.X.X_.`.|.|.|._.|.|.|._. X|.|.`.@X'..X X.X.X.X.X@XdXzXzXzXzXdXdXxXdXcXdXdXcXxXxXcXxXxXxXcXcXcXcXxXxXcXzXcXdXcXcXxXxXxXxXxXxXcXnXnXnXnXcXnXnXcXcXxXmXmXmXmXmXmXmXmXmXmXMXmXmXMXmXmXmXmXmXmXmXMXnXnXMXmXmXmXmXmXnXnXnXcXcXmXcXcXmXmXcXnXnXcXcXxXxXxXxXcXvXzXzXzX.XdXdX.XdXdX.X.X.X.X.X|..X.X|.|._.|.^.`.(.(.(.(.(./.(.(./././././.(./.(.^./././././.~.T.T.^.P.T.T.U.L.U.L.L.L.P.P.P.L.S.L.L.D.H.H.S.H.L.H.H.H.Z.S.H.H.S.L.H.L.S.L.L.L.L.L.L.L.P.L.L.P.L.P.L.L.L.L.S.L.H.H.S.S.H.S.A.A.A.A.A.Z.A.A.g.h.l.z.h.h.k.k.l.k.z.k.f.i.z.a.a.a.a.a.i.i.i.i.i.u.u.i.u.u.u.i.u.u.u.u.i.u.i.i.s.i.a.i.i.i.u.u.i.u.u.u.u.u.i.i.u.i.i.s.i.i.i.i.s.a.i.a.a.a.a.k.k.a.g.a.g.g.f.g.f.a.f.f.f.f.k.f.z.g.z.f.g.g.g.g.h.h.h.h.h.h.l.h.h.A.A.A.A.A.A.A.z.S.S.S.S.H.S.S.S.L.H.H.H.H.H.L.H.L.L.K.L.L.I.I.R.I.T.T.T.T.T.T.T.T.T.[.[.~.~.~././././.(.(.(.(./.(.(.(.^.`._._.`.`.}. X|.|.|.|.|..X.X|..X.X.X.X X'..XdX.XdX.X.X.X.X.XdX'. X.X.X.X.X@X X.X.X.X X|.|.}.}.|._._._._._._._._.(._._._.^.(.(.^.^.^.{.^.).`._._._.}.}.}.}._._._._.|._.|.|.|._.}._._._.|.|.|.|.|._.|.}.}.}.|.|. X}. X{.{. X_. X|.[.|. X X{.|.`.`.|._._._._.|.{.[._.(.(._.(.(.(.^.(./././.!./././.~.!.~.T.~.~.~.T.~.T.T.T.T.T.T.P.Y.L.U.L.L.L.L.P.L.L.Y.U.U.U.U.P.U.P.U.L.L.Y.P.P.P.L.L.L.L.P.L.S.H.H.H.S.z.A.A.A.A.A.G.j.h.l.l.h.h.h.h.k.h.k.h.g.g.k.k.k.k.k.g.h.k.k.l.k.z.k.h.h.l.l.l.l.l.h.h.h.h.h.l.l.l.g.l.k.h.g.g.g.g.g.g.g.g.f.f.g.h.g.k.k.f.a.g.i.g.a.g.f.s.k.f.f.f.a.a.i.s.a.t.a.u.u.u.u.u.u.t.t.t.t.r.t.r.r.r.r.r.y.r.y.r.r.y.y.y.y.y.y.y.y.y.y.y.y.y.r.y.y.r.r.r.y.r.E r.y.r.w.y.y.y.r.y.w.r.r.y.r.r.r.r.w.y.y.y.r.y.y.y.y.r.w.y.y.r.r.r.r.t.t.t.t.t.t.u.t.u.u.u.", "H H H Z H H H H H H H H H H H H D Z H H H L F H H H H H H H K G Z H H J Z J H L H D L L L L J L H J L H H L K H J J P P P P P P P I ) L J I P J P J J J J J J J H P H U L L L L L H L H L L J Z F D D D D Z Z Z D D D Z Z Z D Z D D D D D D D Z Z D Z F Z Z Z Z C Z Z D Z Z Z Z D B C C C Z C Z C C C C C C C D C B C Z C Z F Z Z Z Z Z D B G G Z Z Z Z D Z Z G L H G Z Z Z L Z G L Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z G b.I.G.L.G.H.H.H.H.S.H.H.S.L.L.L.H.L.L.P.P.U.Y.P.P.P.P.T.T.T.T.T.T.T.T.~.~.~.~.~.~././.(.~.(./.(./.(./.(.(./.(.(./.(.(.(.(./.(.(./.~.~.).!./.(.~.~.~.~.T.~.~.~.~.T.T.~.!.T.T.[.~.T.~.T.~.T.~.~.~././././.(././.(././.(.(.(.^.(.(./.(.!.^.!.[.~.~.~.~.~.~.T.T.T.T.T.T.T.T.T.Y.U.Y.Y.Y.T.T.T.T.T.T.~.T.~.~././.].E./././.~.(./././.^.[.^.(.(./.(.(.(.~.(.[.(.(.(.(.^.`.(.(.(.(.^.|.^.`.^.`.^._.{.|.|.|.|.|.|.'.|.'. X X X.X|.|..X.X.X.X|..X.X.X'..X|..X`.'.'.@X|.|.|.|._.{.|._._.`.|.|.|.|..X.X.X'.zXzX'..X.XzXdXcXdXdXvXdXxXxXxXxXcXcXcXnXnXcXcXcXnXxXcXzXcXvXcXnXcXcXcXxXnXnXnXnXnXcXnXmXmXmXmXmXmXmXmXmXmXmXmXmXmXMXmXmXmXMXmXmXmXmXnXMXmXmXMXmXMXnXnXmXmXmXmXmXnXmXnXmXmXcXmXnXcXcXmXdXJXnXnXxXxXnXxXcXzXzXzXzXzXdXdXdXdX'.dX.X.X.X.X.X.X.X|.|.|._.|.(.(.|.^.(.(./.(.(./././././././.^.(.!.E././.~.~.T.~.T.T.T.T.U.U.L.L.L.L.L.L.U.S.L.S.A.D.H.H.H.H.H.H.H.H.S.L.H.H.L.H.L.S.P.L.L.U.L.L.L.L.L.L.L.L.L.L.L.L.L.H.L.H.G.G.H.S.A.A.A.A.A.A.A.j.h.h.A.h.h.h.h.h.l.l.z.f.k.k.z.z.a.a.a.a.a.i.i.s.u.u.a.r.u.u.u.u.u.i.u.i.u.i.u.i.u.i.i.i.u.i.u.u.i.u.u.u.i.i.u.u.u.i.u.u.i.i.i.u.i.i.i.i.i.i.i.a.i.a.a.a.a.g.f.a.f.g.a.g.x.k.a.f.a.z.f.a.g.g.z.g.g.h.g.h.h.h.h.g.A.A.G.h.A.A.A.A.A.G.S.S.S.H.H.S.U.S.S.S.L.H.H.L.H.L.L.L.L.L.R.K.L.Y.I.T.U.U.T.T.T.T.T.~.~.T.~.~./././.^././.(.(.(././.(.(.(.^.|._.|.`.`.}.|.|.|.|..X.X.X.X.X.X.X.X'.dX X.X.X'..XzX.X.XdX.X.X@XdX'.dX.XdX'.|..X|.|..X.X|.|._.|.|._._._._._._._._._.(.^.[.(.|.`.(.`.`._._._.`._._.}.}.}.}._.|._.|._.}.|._.{._.}.}._. X|.`. X X|.|.}.}. X}.|.|.|.}.|. X|.|.|.|. X X X|. X%X_.`.`.|.|.|.|._.|._._.^.|.(.(.^.(.(.(./.(.(././././././.~.~.~.~.~.T.~.T.T.(.T.T.T.T.U.U.L.L.L.L.L.L.L.L.L.L.U.L.P.P.U.P.L.L.L.U.L.S.P.L.U.S.L.L.D.S.L.Z.S.S.S.S.H.A.z.A.A.j.A.g.h.h.h.h.h.h.h.h.k.k.g.g.g.g.k.k.k.k.k.k.k.k.k.z.l.k.k.h.h.h.z.l.h.h.h.h.h.l.h.l.l.l.k.h.g.g.a.g.g.f.g.f.g.g.g.g.g.k.k.k.z.a.g.d.a.a.a.g.f.f.s.f.a.a.a.a.a.a.u.i.u.u.u.u.u.u.t.t.t.t.r.r.r.r.y.y.r.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.w.y.y.y.r.w.r.y.E w.r.y.r.y.r.E E t.r.y.y.E y.r.r.r.r.r.t.r.y.y.y.E y.r.y.r.y.r.r.r.r.r.r.t.t.t.u.u.t.p.p.u.u.u.", "H H H H H H H H H H Z H H H H H H F F H H D H F H H H H Z H H H J J Z Z H H H H L L Z J L L H H J H J H J J J J H L P P P P P J P P P P P P P P J J H J L J J P I J L J L L L L H H H H H Z D D D D D D D D D D D D Z Z G Z H D Z D Z D D D Z G D D Z Z Z Z Z Z D C C Z Z Z Z C Z Z D C Z Z C C C C C C C C C F C C C Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z D Z D G Z Z Z Z Z Z Z G Z Z Z Z Z Z L Z Z L G Z Z G Z G Z Z Z H C H Z b.Y.H.H.H.H.H.H.H.L.H.U.S.L.H.L.L.L.L.L.L.P.P.P.P.P.T.U.T.T.T.T.~.T.^.T.~.~.~.~.~./.[././.(././.(././.(./.(.(.(././.(./.(./.(./.!.~.~.!.(./.~.T.~.~.T.T.~.~.~.T.T.~.T.Y.~.P.~.T.T.T.~.~.Y./.E.R.(././././././././.(.(.(.(.(.(.(.(.(.(.~.(./././.~.~.!.T.~.T.T.T.T.T.T.T.T.T.Y.T.T.T.T.Y.Y.T.T.^.~.~.~.~./././././././.[././././././.(.~.(.(.^.(.~.~.(./.(.(.(.(.(.(.(._._._._.}.[.|.|._._._._.|.|.|.|.'..X.X X.X|.@X}..X'.'..X.X.X.X.X.X.X.X'..X|..X'. X.X.X|.|.|.|.|._._._.|.`.|.`.|..X.X.X.XxX.X.XzXzX.X.XzXzXzXzXzXcXzXcXcXvXxXxXcXxXxXMXcXcXcXcXcXxXxXxXnXcXnXnXnXcXcXnXcXnXnXnXnXmXmXmXmXmXmXmXmXnXmXcXmXmXmXmXmXmXmXmXNXmXmXmXmXMXmXMXmXmXmXmXmXmXmXmXmXmXmXmXfXmXmXmXmXnXmXdXmXnXnXcXcXcXxXxXxXzXdXxXdX.XdXdXdXdXdXdX'..X.X.X.X.X.X.X'.|.|.{._._.`.(.(.(.(.(./.(././././.~././.^.~./.!././.T.~.~.T.T.T.T.U.U.L.U.L.L.L.L.S.U.U.H.H.H.H.H.h.H.H.H.H.H.H.H.H.H.H.S.K.G.L.L.L.S.P.S.P.L.L.L.S.L.U.L.U.L.S.H.H.K.L.S.S.S.S.A.A.G.l.A.h.l.A.h.h.h.h.h.g.h.h.h.g.z.f.k.d.k.i.a.a.a.a.a.s.i.i.i.u.u.i.u.u.t.i.i.t.u.u.i.u.u.i.i.i.u.i.u.i.u.u.u.u.u.u.u.u.i.u.i.u.u.u.u.i.u.u.a.s.a.i.i.i.i.i.a.a.a.a.a.j.f.f.f.z.a.g.f.f.f.f.k.k.j.j.f.z.h.z.h.h.h.h.h.h.l.A.A.g.A.A.A.A.A.A.S.S.S.G.H.H.S.L.S.P.S.L.H.L.S.U.L.S.K.L.L.L.L.L.R.U.U.Y.U.T.T.T.T.T.~.T.T.~.~.(././.^.[.(.(.(.(.(.(.^.^._.(._.|.|._.|.|.}.|.|. X.X|.'.|..X.X.X.X'..X.X@X.X.XdXdX.X.X.X.XdX.XdX@X.X.X@XdX.X.X.X.X X X X@X|.|.`.(.|.`._.|._._._._.|.(.|.}.`.|.(.`.|.(.|.`._._._._._. X}.}._.|._.|.|.}.}.}._.|.}.}.|.|._.}. X|.|.|.|.}.}.|.|.|.|._.|. X|. X X|.|.|._.|.|.|.`.|._._.|.(.(.`.^.|.(.|.^.(.(.(.(.(.(.(.(./././.(./.!././.~./.~.T.T.~.T.T.T.T.T.T.U.L.L.L.L.H.L.L.L.L.L.L.P.L.P.P.U.P.L.P.P.L.L.L.L.L.L.P.D.L.S.H.H.H.H.S.A.A.A.A.h.h.A.l.h.l.l.l.l.h.h.h.l.g.h.g.g.g.g.f.f.z.k.d.f.f.f.k.k.k.k.g.g.k.f.k.z.f.f.z.h.h.h.g.h.h.g.h.k.h.k.f.j.f.g.g.g.g.g.g.g.g.z.g.f.g.a.z.g.a.z.s.a.s.j.a.a.f.a.a.a.a.a.i.i.i.u.u.a.u.u.u.r.t.t.t.t.r.r.r.r.y.y.r.y.y.y.y.w.y.y.y.y.y.y.w.y.y.y.y.y.y.y.w.p.y.y.r.y.y.t.y.r.y.r.r.y.y.r.w.E y.t.y.r.r.r.y.y.y.y.y.y.r.y.r.r.r.r.t.t.r.t.t.t.t.t.u.p.t.u.u.u.u.u.", "H K H H H H H H H H H H H H F H H H H H H H Z H F H H H H H H H Z H J L H H H P J Z L L L L H L J J L K J J P P L P P P P P J I Y H P P J J J P J J P K J J J J P L P L L L L L H H H H Z H H D D D D D D D D D D D Z Z D Z Z G Z Z Z Z C Z F Z Z Z D Z Z Z Z Z C D Z D Z C Z C C C C B Z C Z C C C C Z Z D C C C F C Z Z C C Z C Z Z C Z Z Z Z Z Z Z Z Z Z Z Z H Z G Z Z Z H Z Z Z Z Z Z Z Z Z Z Z H Z L Z Z H Z Z Z H G T Z.H.L.L.L.H.H.H.H.H.H.H.H.L.S.L.L.L.L.P.L.P.U.U.P.L.Y.T.T.Y.Y.~.~.T.T.[.~./.~.~.~./././.~././././././.(.(././.(./.^.(././././././.~.!.~.~.~.[.(.~.~.~.~.~.T.~.T.T.T.T.Y.~.Y.T.^.~.T.~./.T.T./.R./././././.(./.(./.(.(.(.(.(.(.!.(.!.(.^././.~././.~.~.T.~.T.T.T.~.T.T.T.T.T.T.T.T.T.Y.T.T.T.T.~.~.~.~././.(.(./././.~./././.[.(.(./.(./.T.^.(.(.(.(./.(.(.(.(.(.(.(._.(.|.(.}.}.^.|._.|._.|.|.|.|.'..X|.|..X.X.X X X.X.X.X.X.X.X.X.X.X'..X.X.X.X.X.X.X X.X X|.|.|.|.|.|.|.|.|.|.|.|. X|..X.X.X'.zX.X.XzXxX.XzXdXzXzXzXcXcXzXxXxXxXxXnXxXdXnXnXcXMXdXxXxXxXvXnXnXxXnXnXnXnXMXmXnXMXnXmXnXmXnXJXmXmXmXmXnXmXmXmXmXMXmXMXmXmXmXmXmXmXmXmXmXmXMXMXMXmXMXMXMXmXMXmXmXmXmXmXmXmXmXmXmXmXmXnXnXnXnXcXxXxXxXcXdXcXxXdX@XdXdXdX'.zX.XdX.X.XdX.X.X X|.|._.|._._.(.(.`.(.`.(.(./.(././.!.(./.~.!.~././.~.~.~./.T.T.T.T.U.U.L.U.L.L.U.S.L.H.S.H.S.H.S.S.H.H.H.H.H.L.H.H.H.H.H.H.H.H.L.U.S.U.L.L.L.L.L.L.S.L.L.A.S.S.U.H.H.H.S.D.S.S.S.A.A.A.g.D.l.A.l.l.h.h.h.h.g.g.k.g.z.z.a.f.d.f.z.i.a.a.a.a.a.i.i.u.s.u.u.u.u.u.i.t.t.i.u.u.u.s.u.u.u.u.u.u.u.u.u.i.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.i.t.i.t.a.i.i.i.a.a.a.a.a.f.a.f.f.f.a.g.a.k.f.f.f.k.f.f.g.h.l.l.l.h.h.h.h.h.h.A.A.A.A.A.A.A.A.G.A.D.G.S.G.H.S.L.L.L.L.L.L.H.L.L.L.L.U.L.L.L.L.Y.L.I.I.L.I.U.U.T.T.T.T.T.T.T.~.R.~./././.^.(.(.(.(.(.(.(.(.(._.(.|._.|.|.|.|.|.'. X|. X.X.X.X|.|..X.X.X.X.X.XcX'..X.XzXdX.X.X.X.X'.'.zX'..X.X.X.X|. X X X|.|.|.`.`._._.|._.|._._._._.|._.|.`.^.`.`.^.`.(.|.`._._.}._._. X}.|.|.|.|.}.}.}.|.|.|.|.|.|.|.'. X|. X X{.}.}.}.|._.|.|._.}.|. X X{. X|. X X|.|.|.|._._._.^.`.|.`.(.(.`.`.|.(.(.(.{.(.~.(.(.(.(.(././.(./././.~.~.[.~.~.~.T.T.U.T.T.U.U.L.L.L.L.L.S.L.L.H.L.L.P.P.P.P.P.Y.P.L.L.U.L.L.U.Y.U.L.L.L.H.H.S.S.A.S.A.A.H.h.h.S.l.G.l.l.h.h.h.h.h.h.g.g.g.g.g.g.k.f.a.k.k.k.z.f.k.k.k.k.g.z.k.f.f.k.g.k.g.g.k.k.k.g.z.z.k.h.f.f.g.g.f.g.a.g.f.g.g.g.a.k.f.g.z.a.f.f.a.a.z.f.a.a.f.f.f.a.z.a.a.a.a.i.i.i.u.u.u.u.u.u.u.u.E t.t.y.r.r.r.r.y.t.y.y.y.r.E y.y.y.y.y.y.y.y.y.y.y.y.y.r.y.r.y.t.r.y.r.t.y.t.y.w.y.E r.t.y.y.y.r.y.y.r.y.t.t.y.t.y.r.y.r.r.t.t.t.t.t.r.u.t.u.t.u.t.p.u.t.i.i.u.", "H H H H H H H J J G H H H Z H H H F H H Z H H H H H H H G H H H J D H H H H H H L J J L S L L U P P J H J L J P J J L J P P I J J ) I I J I P J P P P P P H P J L L L L L L L L Z H D H D D D D Z Z D D C D F D Z D C Z D Z B B Z Z Z Z Z Z Z Z D B Z Z D Z C C Z C Z C C Z Z Z Z C C D C Z C C G C C B C C Z B C Z C B C D B D Z Z Z G Z Z Z Z Z Z Z Z Z H D D G H Z L L Z L Z L Z Z L Z L Z Z Z Z Z L G Z Z Z Z L Z Z Z T Z.D.H.L.H.L.H.G.H.S.H.H.S.U.L.L.L.L.L.L.P.L.P.L.P.P.U.T.Y.T.T.T.T.~.T.~.T.~.~.~././.~./.~./.~.(./././.(.(./.!./././.!./././././.(.~.(.(.~.~.(.E.T./.E.XX~.T.T.~.T./.[.!.~.~.T.~.T.~./.T./.Y././.~.(.!./././././.(.(.(.^.(.(.(.(.^.(.^././././././.~.~.T.T.[.~.T.T.T.T.T.T.T.T.T.T.T.T.T.~.~.^.~././.(././././././.(././././././././././.[./.~.(.(.(./.^.^.(.(.|.^.`.(.|._._.}.}.{.}.|.|._.|.|.'.|.'. X.X.X.X.X.X.X X.X.X'.dX@X'..X.XdX X.X'..X.X.X|..X.X X|..X`.|._.|.[._.|._.|.|.|.|..X|..X.X.XdX.X.X.X.XzXdXdXcXdXdXvXdXnXvXxXdXxXdXxXxXnXcXcXcXxXxXcXxXnXnXnXnXcXdXMXmXnXmXmXnXMXnXmXnXmXnXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXMXMXMXMXMXMXmXMXMXMXMXMXMXmXmXmXmXmXmXmXmXmXmXmXMXnXnXnXnXcXcXxXxXzXdXdXdXdXzXzX.XdX.X@XdX.X.X@X.X.X.X.X@X X|.|.|._.(.`.(.(.(.(./.[.~././././.~.~./.~.~.T.~.~.T.T.T.T.U.U.U.L.L.L.L.L.S.U.H.H.H.H.H.S.G.S.S.G.G.G.H.H.H.H.H.H.G.H.G.G.H.H.H.H.S.U.L.L.U.S.L.L.L.L.L.A.H.H.H.S.A.D.S.S.S.h.A.A.g.g.h.l.h.h.l.h.h.g.f.g.j.g.j.f.f.f.f.i.i.f.a.z.z.i.i.s.u.u.s.u.u.u.u.r.u.i.i.t.i.u.u.u.u.i.s.u.u.u.u.u.u.u.i.u.u.u.u.u.i.u.u.u.u.u.t.u.u.u.u.s.u.u.i.a.i.i.a.a.a.a.a.i.s.k.z.a.f.f.a.f.f.k.j.k.z.g.l.l.h.l.h.h.h.G.h.A.A.A.A.A.A.A.S.A.G.S.S.H.H.S.A.L.L.L.S.P.U.L.U.U.L.L.L.K.U.L.Y.U.P.T.U.U.T.I.U.U.T.T.T.~.T.T.T.~.T.~./././.).(.(.(.!.(.(.(.(.|.{.`._._.|.|.'.|. X X|.|..X.X.X.X X.X|..X.X'..X.X@XdXdX@XdX.X.XdXdXdXdXdX.X'.dX.X.X.X.X.X'.|.|.|.|.@X|. X(.|.|.|._. X_.|._.|.|.|._._.{.`.^.`.|._._.}._.}.}.}.}.|.|.'.|.|.|.|.|.|.|.|.|.|.'.|. X|. X|.|.|.|.}.}.|.|. X|.}.}. X[. X X[. X X|.|.{.|.{.`.`.|.`.|.{.`.`.^.(.^.{.(.(.{.(.(./.(.(.[.(./.^.^./././.~./.~.~.~.T.~.T.T.T.T.L.L.L.L.L.L.H.L.L.L.D.L.L.P.Y.U.L.L.U.L.P.L.L.L.L.L.A.L.L.L.L.H.H.S.A.G.A.A.h.A.g.g.G.G.g.z.f.l.h.h.h.h.h.z.g.g.g.j.a.f.f.z.i.i.k.f.f.d.d.d.k.f.f.f.f.f.f.k.j.g.a.g.g.k.h.g.g.h.f.f.j.h.f.g.f.a.z.g.a.a.g.f.k.f.f.a.g.d.f.d.g.a.s.a.j.f.a.a.f.f.a.a.i.i.i.a.u.i.u.u.u.u.t.u.u.t.t.t.y.r.t.y.y.t.y.y.y.r.y.y.y.y.y.y.y.y.y.y.y.y.y.y.r.r.r.r.y.r.r.r.r.y.r.r.y.r.y.r.w.r.R y.r.y.r.y.r.y.y.t.y.r.r.r.r.r.t.t.t.t.t.t.u.t.u.r.i.u.u.u.u.i.i.u.i.", "J H H J H H H H J L H H H H H Z H H H H K D H H G H H J H H H H D H D H H H H L Z I H H U L J L J H P P J J P P L P P P P P I I P P I J I J P P P H P L P J L L P L S L H L Z J H H H H D D D D Z Z F D D D Z Z Z Z G Z D Z H D Z F Z Z Z Z Z Z Z Z Z F B Z Z F C D C Z Z C C C C C C Z C C C Z C C C Z C C C C C F Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z D Z Z Z Z D Z Z G Z Z G Z G Z Z G Z G Z Z Z H Z Z Z Z Z Z L Z Z H Z J I A.G.H.L.L.L.H.L.H.H.H.S.U.S.L.L.L.L.L.L.P.L.P.P.P.Y.Y.Y.T.Y.Y.T.~.~.~.~.~.~.~././.~.~./.!./.(.).!./././.!./.(./././././././.T./.~./.~.K.!.~.~.~./.U.XXXXXX~.~.~.~.T.~.T.T.T.~.T.~.T.T.T.T.~./.T.~.~.~./././.(./.(.(.(.^.`.(.(.(.^.^.(.(.(.!.!.~.~.~.~.~.~.T.~.T.~.~.T.~.~.T.~.~.T.T.T.[.~.~./././././././.(./.(././.[./.[./././././.(././.(.~.(.[./.).^.(.(.(.(.(.(._.^._._.}.}.}.|. X X|.'.|.|..X|..X|..X|..X|..X.X.X.X.X.X X.X.X.X'.@X.X.X.X.X.X.X.X|..X|.|.|._.|._.|.|.|.|.|.|.|..X X.X.X.X.X.X.XxX.XxX.XxXdXdXdXcXdXcXnXcXxXcXxXcXnXnXxXcXcXcXxXxXcXnXnXnXnXnXnXmXmXmXmXmXmXMXcXmXnXMXmXnXmXmXmXmXmXmXmXmXmXmXMXmXmXmXmXmXmXMXmXmXmXMXMXmXMXMXmXMXMXMXmXmXNXmXdXmXmXmXmXmXMXnXnXnXmXcXcXcXcXxXxXcXcXxXdXxXdXzX.XdXdXdX.X.X.XdX.X.X|.|.|.|.|._._.`.(.(.(.(.(.(.(.(.~.~./././././.~.T.~.T.T.~./.T.T.T.T.U.Y.L.L.L.L.U.H.S.S.H.H.H.H.S.S.S.S.A.G.G.S.S.S.H.A.G.H.S.H.G.H.H.H.H.D.S.S.L.U.U.L.S.A.K.D.U.H.H.S.S.S.A.Z.A.A.A.A.g.A.A.h.k.g.z.h.g.z.f.g.g.f.z.z.a.a.a.k.k.i.i.a.i.s.i.i.i.u.i.u.u.u.t.u.u.t.u.t.i.u.u.u.u.u.u.u.u.u.u.i.u.u.u.t.u.u.u.u.r.t.u.t.u.u.u.t.u.u.u.u.u.i.i.u.t.i.a.i.i.a.a.f.s.i.a.s.f.f.f.f.k.k.f.k.h.z.h.h.l.h.A.l.h.h.A.A.A.h.A.A.A.A.A.S.S.S.S.D.H.H.L.U.L.L.L.P.P.U.U.L.U.L.L.L.R.U.U.L.U.Y.L.U.U.I.T.T.T.T.T.T.T.T.~.T.~.~.(./././.(.(.(.(.(.^.{._.(._._._._.|._.|.|..X|..X.X.X'..X.X|.|..X.X|..X.X.X.X.X X.XdX.X XdX.XdX.XzX'.zX'.dX.X.X.X|..X|..X X X|._.|.|.`._._._. X|._.|.|.|.|.|.|._.`.`.|.^.(._.|.}. X X}. X}.|.|._.|.|.|.|._.|.|.|.|. X|. X@X|._.|.|.|.|.|.|. X[._.|.}.}.|.|.%X X X X|.|.|._.|._.^.`.{._.`.(.(.`.(.(.(.(.`.^.(.(.(.~.(.(.[.(./.(././././././.T.~.[.T.T.T.T.T.L.Y.L.L.L.L.H.L.L.L.L.U.L.L.L.L.L.L.U.L.P.L.P.U.L.L.L.L.A.L.S.L.H.H.H.S.A.S.A.H.G.g.A.l.l.g.h.h.l.h.h.h.h.h.z.z.g.g.g.a.f.f.f.z.f.f.i.f.k.d.k.x.f.f.f.f.f.f.f.z.g.g.k.k.k.k.f.g.k.h.k.f.f.j.j.g.z.f.f.g.i.f.k.f.f.z.g.a.a.g.a.g.a.g.a.f.a.a.s.j.a.a.i.a.i.u.u.t.u.i.u.u.t.u.t.t.t.t.t.t.r.r.r.r.E r.y.r.y.y.y.y.y.y.y.y.y.y.y.y.w.y.y.y.r.y.r.r.r.r.y.r.r.r.r.r.E y.w.y.r.y.y.y.y.y.w.y.t.y.y.t.r.r.r.r.t.t.t.p.u.u.t.t.t.u.u.u.i.u.u.i.i.u.i.s.", "H H H U L L H L H L H H H H H H H H H H J H H H L H H H L L L D L L Z D L L H H H K H H J J J P J K P J P P P J Y P L P I I I I P ) I I P P P P P P P J J L J U H P L H L L H H H J H D D D D D D D D F Z Z F Z Z Z Z Z Z Z Z Z C D B D Z Z Z C C C Z Z C C C D C C B Z D C C A C B C Z B Z C C C C Z C C C C C C C C C Z D Z Z D B Z D Z Z B G Z Z D Z Z Z G Z D Z G D D D Z Z Z D D Z D D D D Z Z Z Z Z Z D D Z Z L H D L T P.U.L.S.U.H.H.G.H.H.H.L.L.L.L.L.L.L.L.U.L.P.L.U.L.T.L.T.T.T.T.T.T.~.~.T.~.~.~.~.[.~./.~././.~.[.!.~.!.^././.(./.~.~./.~.~.~./././.R.).~.~.~./.~.~./.T./.T.~.~.[.T.T.T.~.T.T.T.~.~.T.~.~.~.~.~./.~./././.(././.(.(.^.^.(.(.(.(.`.`.(.(.(./.~.!./.~.~.T.~.T.~.T.~.T.T.~.T.T./.T./.~.E./.!.!./././././././././.(.(./.(././.~./.!./././././.(./././.(.(.(.(.^.^.`._._.(._._._.|.'.|.|..X|.|._. X'.|..X.X.X.X.X.X.X.X X.X.X.X.XdX.XdX.XdX X.X'..X X.X.X'.'.|.|.`.|.`.|.|.|.|.|.|.|. X.X X.X'..X.X.X.XdX.X.XzX.XzXzXzX@XxXvXdXcXdXcXxXxXxXxXcXcXnXcXcXcXcXcXnXxXnXcXnXnXmXmXMXmXMXNXmXmXnXMXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXfXNXMXMXmXMXMXMXMXmXMXMXMXMXMXMXMXSXmXMXMXmXmXnXnXnXnXmXnXcXcXcXcXxXdXnXzXzXdXdXdX.XzXdX.X'..X.X#X.X.X.X.X'. X}._.{.`.(.(.(.(.(.(.(.~.(./.(./.T.~.T.T.~.T.T.T.T.T.T.T.U.Y.U.P.U.U.L.L.L.L.L.G.G.H.A.S.S.D.h.A.H.G.G.H.A.G.G.S.S.G.H.H.H.H.H.H.G.G.H.H.H.K.H.H.H.H.H.L.G.S.S.A.A.A.A.A.A.A.S.A.g.k.g.h.h.k.h.g.h.g.j.z.z.a.g.f.f.f.k.i.i.a.a.a.a.a.a.i.i.i.a.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.t.u.p.u.i.t.t.s.t.s.t.s.u.t.t.u.u.u.u.u.u.u.s.a.i.u.i.a.i.a.a.a.i.i.a.a.f.a.k.a.z.f.f.f.f.g.h.g.l.l.l.l.j.Z.h.A.A.A.A.A.A.Z.A.A.A.G.H.H.H.S.P.L.S.P.P.L.L.U.P.Y.L.L.P.Y.U.U.Y.L.U.T.U.Y.U.U.Y.I.U.T.T.T.T.~.T.T.T.T.~.~.~.(.(.(.(.(.(.(.(.(.`.(.(.`.`._.|.`._.|.|.|.|. X X.X|..X|..X.X X'..X|..X'..XdX@X.X.XdX.X.X'..X.X.X.X.X.X.X.X'..X'..X X.X|.|.|.|.|.|.|.|. X X|.|.|.|.|.|.|.|.|._._.|.|._.|.|.|.|.|.|.|. X X'..X|.|.|.|..X'.|..X|..X|.|.|.|.`.|. X`.`.`.`._._._._.|._.|._._.|.|.|.}.}.|.}.|._.|._.|.{.(.^.|.(.^.(.|.(.(.{.(.(.(.(.(.(.~.^././.(.(.[.[./.~.~.~.T.~.T.T.T.Y.U.P.P.L.L.L.H.L.G.L.L.S.U.L.L.L.L.L.L.L.U.L.G.U.L.L.L.L.L.H.H.H.H.h.A.A.A.A.A.A.A.A.l.l.l.l.h.h.h.z.z.z.h.h.g.k.a.g.a.g.f.g.f.f.a.a.z.a.a.z.a.a.f.i.f.d.f.a.f.k.f.f.f.k.g.z.g.g.k.f.z.g.g.k.k.k.k.a.g.a.j.s.k.f.f.f.a.g.a.a.f.f.a.g.f.a.a.a.k.a.a.f.a.t.i.a.i.i.i.u.u.t.u.t.u.u.p.r.t.r.r.r.r.r.r.r.y.y.y.y.y.r.y.w.y.y.y.y.y.w.y.y.r.y.r.y.y.r.y.r.y.r.r.r.r.y.y.t.y.E y.y.y.y.y.y.r.y.y.y.r.t.r.r.r.t.t.u.t.u.u.u.u.u.u.u.u.u.i.i.u.i.i.i.i.i.", "H H H H H H H H L H H H H H H H L H H H Z H Z H H H H H L Z D L L L L D H D H L H H L H J J P J H U P J J J L P P I J P P J I I P P P S I P P P P L H I P L P L H L L H Z H H H D F D H Z D D D Z G Z Z Z Z Z Z Z Z Z D Z Z Z Z B Z Z Z Z C B Z Z Z C C Z C C C F D C C C F C B C D C C D C Z C C C C C C Z Z C Z Z Z Z C B Z Z Z G Z Z Z Z Z D Z Z Z Z Z Z D B Z D Z Z G Z L Z D Z D H Z D D D H Z H Z Z Z D Z H Z Z D Z H [ U.S.U.L.L.H.K.H.H.H.H.H.K.L.S.S.U.L.L.L.P.P.U.U.U.L.Y.U.Y.P.T.T.~.T.T.[.~.~.~.~.~.~.~./.~.~./.~.~.~.~.~.^.~.~.^.^.~.~././././.~.~.~.!.~./.~.!.~.~.E.XX~.~.~.T.U.E.T.[.~.~.~.T.T.~.~.T.T.~././.~.~./.~.^.E.(.^.(.(.(.(.(.(.(.[.!.[.(.(././.(.~././.~.~.~.T.~.~.~.~./.T./.~.~./.T.~.~././././././.(.(.^.(.(.(.(./.(.(.^./././././.^./.^./././.(./.(.^.(.(.(.^.{._.^._._._._._.|.|.|.|.|.@X|.'. X.X.X.X.X.X.X.X.X.X.XdX.X.X.X.X.X.XdX@X.X.X.X.X'. X.X|.`.@X|.|.|.`._.|.|.|. X'.'.|..X X'..X.X.X.X.XdX.X.X.XzX.XxXdXdXcXdXxXcXxXxXcXcXxXxXxXcXnXxXxXnXcXnXxXnXnXJXcXmXmXmXmXmXMXMXmXmXnXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXMXMXMXMXMXMXMXNXmXMXMXMXMXMXMXSXfXMXmXMXmXmXmXmXnXnXcXnXcXxXxXxXxXvXdXdXdXzXdXvXdX.XdXzXzX.XxX.XzX.X.X|.|.|._.|.|.`.`.`.^.(.(.(.~.(./.~.~./.~.~.~.[.~.T.T.T.U.T.T.U.T.P.P.P.D.L.L.H.L.H.G.H.S.G.A.S.S.A.S.A.A.G.A.A.H.H.H.S.S.G.A.H.A.H.h.H.S.G.G.H.H.H.H.H.H.S.S.G.S.S.S.A.A.A.A.h.A.A.A.S.h.g.g.k.k.h.k.h.g.k.a.a.g.f.f.f.f.a.a.i.i.a.a.a.a.a.a.i.i.i.r.i.r.u.u.t.u.u.u.u.u.u.u.u.u.u.u.u.r.u.u.p.u.u.u.t.t.u.t.t.u.p.t.t.s.t.u.u.u.u.u.u.u.i.u.i.i.i.u.i.i.i.a.i.f.a.a.a.a.f.k.f.k.z.f.j.g.h.h.l.l.l.l.A.A.h.A.A.H.A.A.S.S.H.H.S.S.H.H.H.J.S.L.P.P.P.U.L.Y.P.P.T.Y.U.U.P.Y.U.U.L.U.U.U.Y.Y.T.T.T.T.T.T.T.T.T.T.~.~.T.~.~.[.~.(.(.(.(.(.(.(.`.`.`.^.(.|.|._.|.|.|.|.|.|.|. X|..X.X|.|.|.|.|..X.X.X'..X.X'.dX.XdX.X.X.XxXxXzX.X.X.X.X.X'. X X.X X@X.X.X'..X X|..X|.'.|. X.X.X.X.X|..X|.@X'._.|.|.|.|.|.|.|.|. X'.|..X|.|.|.|.|.|.|..X.X X.X|. X|.`.|._.}.`.|._.`..X_._. X_.|._.|. X_. X_.}.|.}.}._.|.|._.^.|.`.(.(.(._.(./.(.{.(._.^.(._.(.(.`./.^./.(././.(./.~.~.~.~.T.T.T.T.U.P.P.L.L.L.H.L.G.L.S.L.L.L.U.L.L.L.L.L.U.P.U.U.U.L.L.H.L.L.L.H.H.H.S.H.A.A.A.A.g.l.A.l.l.l.l.h.h.z.l.h.h.h.g.g.g.g.g.f.z.f.a.i.k.a.k.a.a.a.a.k.a.f.f.f.i.a.f.a.k.f.f.f.f.a.z.a.g.h.f.g.f.z.a.k.k.d.k.g.a.f.f.a.f.f.g.a.a.f.a.a.a.f.a.a.a.f.a.f.a.a.a.a.a.i.a.i.u.u.i.u.u.u.u.t.t.t.t.t.r.r.r.r.r.t.y.w.r.y.y.y.y.y.y.E y.y.y.y.y.y.y.r.r.r.r.r.r.r.r.r.r.r.r.r.t.y.r.y.r.w.r.y.y.r.y.w.y.t.r.y.y.r.r.t.t.u.t.u.u.u.u.u.u.u.i.i.i.u.u.a.i.i.i.i.i.", "H H H H H L J H L H H H H H H H Z H H H J Z H H U H H H H H L D L Z H H H H H H H I H L H L P J H P P P P P L P I L P I P P ) I P P P ) I P P P P L P P J L L L H J L L H H H H H D H H H D F Z D Z D Z Z Z Z Z Z Z B D Z Z B D Z Z B D Z Z D C C C C D Z C Z D C C C C C C C C C C C Z B Z C C C F C C C C Z C C Z Z C Z Z D Z Z Z D C Z Z Z Z Z C Z Z Z Z Z Z D D D D Z Z Z Z Z D D Z D D D Z D D Z H Z H Z Z Z H Z H H H T Z.F.S.S.U.H.H.H.H.H.H.H.H.L.L.L.L.L.L.L.L.U.L.L.L.L.U.U.U.T.T.T.T.T.^.T.~.~.~.~.~.!.~.!.~.~.^.~.~.~.~.~.!.~.~.~.~./.!./.~.~.~.~./.~.).T./.~.~.~.!.U.XX~.~.~.~.XXXX~.T.T.~.T.~.T.~.Y.~.~.~./.~.T.(.~./.~./.(./.(.(.(.(.(.(.[.{.(.(.(.(.(./.~./.~./.~.~.~.~.~.~.~.~.~.~.~.~./.~./.~.~.(./.(./.(.(.(./.(.(././.(.(.(.(.(.[.(./.(././././././././.(.(.(.(.(._._.|._.|._._.|.|.|.|.|.|.|.|.|.'..X'..X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XdX.X.X.X'..X.X X.X X|..X|..X`.|.|.|.|.|.|.|. X|..X|..X.X.X.X.X.X.X.XxXxX.XxX'.zXdX.XzXzXzXvXxXzXcXcXxXxXxXcXxXxXJXdXnXxXnXnXcXmXmXmXmXmXmXMXMXmXmXmXMXnXnXmXmXmXnXnXmXmXmXmXmXmXMXfXmXmXmXmXmXMXMXMXNXMXMXMXMXMXMXMXMXmXMXSXMXMXMXMXMXMXMXmXmXmXmXnXnXnXnXcXxXxXcXcXdX%XdXcXdXzXdXzXdXdXdXdX.X.X.X.X.X.X.X X|.|._.|.(._.^.`.(.^.(.(./.~.~./.T.~.~.~.T.T.T.T.T.T.T.U.P.P.P.P.L.L.L.L.H.L.H.H.H.S.S.S.S.S.S.S.A.G.A.G.A.H.A.A.S.S.S.A.A.H.S.S.A.H.A.H.A.H.H.H.G.G.A.H.S.A.A.A.A.A.A.A.A.A.j.g.h.g.g.g.f.f.a.z.z.z.g.a.f.f.f.f.a.a.a.a.f.i.k.i.a.a.i.i.i.u.i.i.u.u.u.u.u.t.t.u.u.u.u.t.u.u.u.u.u.u.u.u.r.u.t.u.u.t.u.s.s.t.t.u.u.t.t.t.t.u.u.t.u.u.u.i.u.i.u.u.i.a.u.i.i.a.a.z.z.a.f.f.f.k.f.f.f.h.l.l.h.g.l.l.A.A.A.A.A.A.H.H.S.S.G.H.Z.H.H.G.L.L.P.U.U.P.P.U.P.T.P.P.U.U.U.U.Y.U.U.U.P.Y.U.U.U.T.T.T.T.T.T.T.T.T.T.T.T.~.~.~.~./.[.(.!.(.(.(.(.(.^.(.`.`.{.|._._.|.|.|.|.|.|.'.|..X|..X.X.X|. X.X|..X.X.X.X.X'.zXdX.XzXzX.X.X.XzX.X.X.X.X@X'..X.X.X.X X X.X|.|.|.|. X X|..X|.|..X.X|.|.|..X X|.|.|.|.'. X|..X'.'. X X.X X|. X X'.|.|. X|..X.X|. X|.|.'._.|._._._.|.|._._.|.{._.|.|._.{.|. X|.|.|.}.}._.|.(._.|.`.`.^.{.(.(.(.(.(.{.(.^.`.{.^.(._.^./.(././.(././././.~.~.T.^.T.T.T.I.P.L.L.L.H.L.G.L.S.L.L.L.L.L.L.L.S.L.L.L.D.U.S.L.H.L.L.H.G.G.G.H.S.S.A.A.A.A.A.A.l.l.h.h.l.z.l.l.z.g.h.h.g.g.g.g.f.h.g.f.g.a.g.z.a.z.a.a.a.a.a.a.g.a.f.i.a.f.f.a.f.f.f.f.k.a.k.k.j.f.j.f.f.f.k.d.f.g.a.g.f.f.f.k.f.a.g.a.i.g.a.f.a.a.a.a.a.a.a.a.a.a.a.a.a.i.i.u.i.u.u.u.u.u.u.t.p.t.t.r.r.r.r.r.w.r.y.E y.y.w.y.y.y.y.y.y.y.y.y.r.y.r.y.y.r.r.r.r.r.r.r.t.r.r.y.r.y.y.r.y.y.y.t.y.r.y.y.y.t.r.r.r.t.t.t.u.u.u.u.u.u.a.u.i.i.i.s.i.i.i.i.i.i.i.a.", "P H H J L H L L L H H H H H G J H H H J S I H H H H H H H H H L L H H H L H L H H H U H P K P L J J J P L J P L P P P P ( I L ) I ) P P Y P P P P J H P J L L P H L L L H H H H D H D D Z Z D Z D D D Z Z Z Z Z Z B Z Z D B Z Z C D Z C C C Z C C Z C C C C B Z Z C C Z C C C C C C C C C C C C B B u C C C C C Z C C D B Z Z Z Z Z Z Z Z Z Z D G C Z Z Z D C D D Z D Z Z H Z H A D D D D D D D D D D Z Z H L Z D H H Z L L U Z.S.L.U.S.H.L.G.S.H.H.H.L.L.S.L.U.L.L.L.L.L.L.L.U.U.U.U.T.Y.T.T.~.T.T.~.~.T.[.T.[.~.[.~.~.~.~.~.~.~.T.~.~.~.~.~.~./.~.~.!.~./.!.~.(.T.].!.~.~.~./.XXXX~.~.~.~.U.XXT.~.~.T.~.T.~.~.~.~./.(.!.~.!.T././.~./.~./././.(.(.^.{.(.(.(.(.(.(./././././.~./.~.^./.~.~.!.~.~.~.~././.~./.~.^.~././.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.!.(.^./.(.^.(.(./.(.(.(.(.(.(.`._._._._.`.|.|.|.|.|.|.|..X|.|..X.X|..X.X.X.X.X.XcX.X.XxX@X.X@XdX.XdXdX.X.X X X.X X.X|.|.|.|.|.`.|.|._.|.|. X.X.X X.X X XdX.X@XdXdXdX.X.X.X.XzX.XzXzXdXzXzXnXdXvXdXcXnXxXxXxXnXxXnXxXnXnXnXnXmXmXmXmXmXmXmXmXMXnXmXmXMXnXmXmXmXmXJXnXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXMXmXMXMXMXMXMXMXMXMXmXNXfXMXMXMXMXmXMXmXmXmXmXcXmXcXmXdXnXxXxXxXzXcXzXfXdXvX.XzXdXdX.XdXdX.XxX.X.X.X.X.X X|.|.|._.`._.^.(.(.|.[.~./.~./.~./.T.T.T.T.T.T.T.T.U.U.U.U.L.L.L.L.L.H.F.S.H.H.H.A.S.S.S.S.S.S.A.G.A.A.A.A.A.A.A.S.A.A.G.A.S.A.A.H.A.G.G.H.H.l.G.H.A.H.A.A.S.A.z.A.A.z.A.h.h.A.g.g.g.g.a.f.f.g.a.a.f.f.g.f.f.a.f.a.a.a.a.i.i.i.i.a.i.i.i.i.i.i.u.u.u.t.u.i.r.u.u.u.t.u.u.u.u.u.u.t.u.t.u.i.t.p.p.t.t.t.t.t.t.u.t.u.t.u.t.t.u.u.t.u.u.i.t.u.i.u.a.t.a.a.a.s.a.a.a.a.a.k.f.f.f.k.k.k.k.l.l.h.G.l.l.S.h.h.A.G.H.G.A.G.G.S.H.W.H.I.K.L.L.L.U.Y.U.P.P.P.P.T.T.T.T.T.U.U.Y.U.U.Y.T.T.U.T.T.Y.T.T.T.~.T.~.T.[.T.T.~.~.~.~.~.^.^.(./.(.(.`.^.`.(._.^.`._._.|.|._.|._. X|.|.|..X X|.|.|..X|.|.|.|. X.X.X.X'..X'.dX.X.X.X.X.X.X.XzX.X XdX.X.X.X.X.X'. X X|..X.X.X|. X.X.X.X.X.X.X.X.X.X.X'. X.X.X X X.X.X.X|..X.X.X.X.X.X.X X X|.@X'.|.|.|.|.|.|._._.|._.|. X_._._._.|.|._.|._.(.|.|._.{.|.|.[.}.}.(._.|._._.{.(.|.(.|.|.(.(.^.^.|.`.^.^.`.(.[.(.(.(.(./.(././././.~.T.T.T.T.T.T.I.P.U.U.S.H.L.L.L.L.S.L.S.S.L.U.A.L.L.L.L.U.U.L.L.L.H.L.H.H.G.A.H.S.A.A.A.A.h.A.g.h.h.h.h.l.z.j.z.l.h.z.l.a.z.g.g.g.a.a.g.a.a.d.a.a.z.a.a.a.a.a.k.a.g.a.a.a.f.a.f.a.k.a.a.a.z.i.k.f.f.a.f.z.g.a.k.a.a.g.a.s.f.a.a.g.a.a.a.a.g.a.k.f.a.z.s.a.a.a.a.a.a.i.a.a.i.u.i.u.u.u.u.u.u.u.t.t.t.r.r.r.r.y.r.r.y.y.r.y.y.y.E y.y.y.y.w.y.y.y.r.t.y.r.r.r.r.r.r.r.r.r.r.r.r.r.y.r.r.y.r.y.y.y.y.y.r.y.y.y.r.r.r.t.p.p.u.u.u.u.i.u.a.t.i.s.i.a.i.a.i.a.a.i.i.k.", "S J J Z H J L D H H J H H H H H H J Z H L L L H Z L L L H H H L H H H H H H H H U H P H H L P P J J J J P P J I P P P P P P P P I ) ) P J P P P P J P P J L U H J P H H H H D D D D D D H Z Z D Z Z Z Z Z Z B Z Z C C Z Z C Z Z Z C Z C Z D C Z C C D C C A C C C C C B C C C C C C C B B C C B C C A C B Z C C C D Z C Z Z C Z Z Z G Z C Z Z C Z Z D Z G Z Z Z Z Z Z D D Z D Z H D D D D D D D D D L L H H Z H D H Z L Z Z U b.H.L.L.H.L.H.K.H.H.S.H.H.L.S.L.A.U.S.L.L.L.P.L.L.U.L.P.Y.T.T.T.T.~./.T.~.~.~.~.~.~.T.~.~.~.~.~.T.~.T.T.~.T.T.T.~.~.~.~.!.~.~.^.~.~.~.~.~.~.~.~./.T./.T.~.~.~.T.~.~.~.~.~.T.~.~.T.(./.~.~.(./.R.).~./.~././././.(.(.(.(.(.^.(.(.(.(./.(././././.!././.!./.(.~./.~.^.^.~./.(.~.T.(./././.(.(.(.(.(.(.].(.(.(.(.(.(.`.(.(.(.(.(.(.^.(.(.(.{.(.^.(.^.`.(.`.`.^.|._._._._._._.|.|.|.|.|..X|..X.X.X.X.X.X.X.X.X.X.XzX.X.XzXzX.XdX.XdX.X.X.X@X X.X.X|.|.|.|.|.|.|.|.|.|. X|.|.|.|.|. X.X.X.X.X X.XdX.XzXdXdX.X.XzX.X.XzXzX.XcXdXzXvXxXxXxXvXxXxXxXxXnXxXnXnXcXmXvXmXmXmXmXmXmXmXmXMXmXmXnXnXnXnXnXMXnXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXMXMXMXMXMXMXSXfXmXMXMXMXmXMXMXMXMXMXMXMXmXMXmXnXnXnXnXcXxXxXxXxXzXzXcXdXdXdXdX.XzXzXzXzX.XdXdXdXdX X'.dX X X.X|.|.|.|.(.(.(.^.{././.~.~.~.~.~.T.^.T.T.T.U.U.U.L.L.L.L.L.L.L.L.U.L.G.G.H.H.H.S.S.S.S.S.S.A.A.A.l.A.A.A.A.A.S.H.g.A.A.A.G.A.G.A.G.G.A.A.A.G.A.h.J.A.A.A.A.A.h.A.h.S.h.h.h.h.z.g.g.a.g.j.s.f.a.z.g.z.i.f.f.k.a.a.a.a.i.i.a.i.a.i.i.i.i.i.i.u.u.i.u.s.t.r.u.t.u.t.u.u.u.u.u.u.u.u.u.u.u.t.u.t.t.t.t.t.t.u.t.t.p.u.t.u.u.t.t.u.r.u.t.u.i.u.u.u.u.u.i.a.i.i.i.a.a.a.a.g.f.f.f.g.g.g.h.l.l.h.A.A.A.Z.h.A.H.H.H.S.S.H.H.H.H.H.S.L.L.L.L.U.U.P.P.P.T.P.Y.T.T.T.T.T.T.Y.Y.Y.T.U.U.T.T.T.T.T.~.~.T.T.T.~.T.~.T.~.T.~.~.~.~.~.~././.(.(.^.(.(.^.|.(.|._.`. X(.`.}.}.|._._.|.|.'.|.|.|.|.|._.|.|. X.X|.'.|..X'.@XzX.X.X.X.XzX'..X.X.X.X'.dX@X.X.X X X.X X|..X.X.X X X@X X.X.X|..X@XdX X X.X.X X X.X.X.X.X.X.X.X.X.X.X.X.X X.X X.X'. X|.|.|.|.|._.|._.|._._.(.|._._._.|._.|._.|.(.`.|.`.|._._.[.|.{.`.(.|._.|._._.`.^.(.(.^.(.(.(.(.(.(.`.^.(.(./.(.(.^.^./././.~.T.~.T.T.~.Y.T.Y.P.P.L.L.L.D.H.H.H.U.D.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.H.H.H.H.h.H.h.A.A.A.h.h.h.h.h.h.h.k.h.g.g.g.z.h.h.k.k.g.g.k.k.k.f.f.g.d.a.g.a.a.z.a.a.a.a.a.a.f.a.a.a.g.a.f.f.a.a.k.f.f.f.f.f.f.k.f.f.f.k.a.f.a.a.f.a.a.a.z.a.a.a.f.a.a.f.a.a.a.a.a.a.a.a.a.a.a.i.a.a.u.s.u.u.u.u.u.u.u.u.u.p.t.r.r.r.r.r.r.r.y.r.y.r.y.y.r.y.y.y.y.y.y.y.r.y.r.y.t.t.t.t.r.t.r.t.r.r.r.t.r.t.w.y.r.y.r.y.r.r.t.y.r.r.r.r.r.t.t.t.u.u.u.u.i.i.a.i.a.i.a.a.i.a.i.a.a.d.i.f.i.", "P Z L L L D J H H H H H H H H H Z J J Z S L L L P H Z P H H H H H J H P J H J H J H H P H J P P P P J Y P P P J P P P P ) P ) ) I P P P P P P P P P H P J L L H H H L H H H H H D D D D D Z D Z Z Z F Z C Z D Z F Z Z C C Z D C B Z C Z C B C Z B D C C C D C C C C C C C C C A B B C C C B B C C C C C C C C D Z B C Z Z Z Z Z B Z C Z G Z F D Z Z Z B B Z C Z Z Z Z Z Z D Z Z D D D D D Z D D D Z Z Z H Z H H D Z L D Z Z P T Z.L.L.A.L.H.G.H.H.H.L.H.L.L.L.L.L.L.L.L.P.L.P.P.L.L.P.T.T.T.~.T.T.T.T.T.T.T.T.~.~.(.T.T.~.T.T.~.~.T.~.T.T.~.~.~.~./.~.(.!.~.~.~.~.!.!.~.~.~.~.!./.T./.~.~.T.(.~.~.T.T.~.~.~.~.~./.T./.~././.(./.~./.[./././.(./.(.(.!.(.(.!.!.(.(.(.(.(.(././.(.(./././.(.~././.~.)./././.^.{.(.^.(.(.(.(.^.`.(.(.{.(.(.(.(.(.(.(.(.(.(.(.(.!.(.(.(.(.(.(.|.(.^.(.(._.(.}.}.|.^.|._.|.|.|.|.|.|..X X.X.X.X.X.X.X.XdXdX.X X.X.X.X@X.X.XzX XdX.X.X.X.X X X|.|.|.|.|.|.`.|.@X|.|.`.|.|.|..X.X.X.X|..X.X@XdXdXdX.XzXdXdXdXdX.XzXzX.XzX.XzXzXzXzXdXvXxXxXxXnXxXnXnXnXnXnXcXmXMXmXmXmXmXmXmXmXmXmXmXMXnXMXmXmXnXMXmXnXnXmXmXmXmXmXMXmXmXmXmXmXmXMXMXMXMXMXMXMXMXNXMXMXMXmXMXMXMXMXMXMXmXmXmXmXmXnXnXnXcXcXxXxXdXdXcXzXdXcXdXvXzXzX%X.XxX'.zX@XdXdX.X.X@X X X X'._._._.^.(.(.(.(././././.^.~.T.T.T.P.T.T.T.P.U.L.L.L.L.L.S.H.L.D.H.H.S.H.H.H.A.S.S.S.S.S.A.A.H.A.A.G.z.A.A.S.h.H.l.A.A.A.l.A.G.A.A.A.A.G.A.A.G.A.h.A.A.A.h.A.A.j.S.h.h.h.h.z.g.g.a.g.z.z.i.a.k.g.a.a.g.f.a.a.a.a.a.a.a.i.a.i.a.i.i.i.i.i.a.u.u.u.u.t.u.u.t.u.t.t.u.t.t.t.u.t.u.u.u.t.u.u.t.t.t.t.t.t.t.t.t.t.t.t.u.t.t.u.u.u.u.u.t.t.u.u.i.i.u.i.i.u.u.i.i.i.a.a.a.a.a.f.f.f.g.h.h.l.l.A.h.h.A.h.A.A.S.S.A.S.H.H.H.L.S.L.L.L.U.L.L.P.P.P.P.T.P.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T./.T.T.~.T.~.~.~.~.!.~.~.~.~./.(././.(.(.`.(.^.|.(.|.(.`.`.`._.|._.{.|.|.|.|.|.|.|.|.|.|.|.|. X|._..X.X X.X.X.X.X.X.X.X.X.X.X'..XdX.X X.X.X.X.X.X.X.X.X.X X|..X X X.X X|. X.X'..X X'..X.X.X.X.X.XdX@X.X.X.X.X X X.X.X.X|..X|._.|.|.|.}._._._._.|.}.|.|._._._.|.{.|._._.|.^.|.(.^.{.|.|.|.^.^.(.`.`.(.|.|.{.|.`.`.`.`.`.(.(.|.`.(.^.`.(.(.(.(./././.^./././.~.Y.~.~.T.T.T.U.T.P.U.L.L.S.L.L.H.L.H.H.L.L.S.L.L.L.U.L.L.L.L.L.S.A.S.H.G.J.S.S.A.H.A.A.G.Z.h.h.h.h.h.h.h.h.g.g.f.f.z.h.k.g.g.g.g.g.k.f.f.g.a.f.a.a.a.i.a.a.a.a.a.a.a.f.a.a.a.a.a.a.a.a.f.f.f.f.f.f.f.a.f.f.f.z.i.a.f.f.a.a.f.a.f.a.f.a.a.a.a.a.a.a.a.a.a.a.a.a.a.i.a.a.a.a.i.u.u.i.u.u.u.u.u.u.u.u.u.p.t.r.r.r.y.r.r.y.r.y.y.y.y.r.y.y.y.t.y.r.y.r.r.r.r.t.t.t.t.t.t.r.r.t.r.t.r.t.y.t.r.r.y.r.y.r.y.t.y.r.t.r.r.t.t.u.u.u.u.i.i.i.a.a.a.a.a.a.i.a.a.a.a.i.i.f.i.", "H L J H J H L L H P J H H H H H H S J Z L Z L J J L L Z L L L L H H H J H H H P U H P H J J J U P P P K J P P P P P J I J P ) S I I I P ) P P I P P J P J P H J H H H H H Z H D D D D D Z Z Z Z Z Z Z Z Z Z C Z Z C C Z C B C C Z C C C C C C C C B C C C C C N C C C C C C A C C B B C B C C B A B C C C C C C Z Z Z C C Z Z D B D Z D Z Z Z Z Z Z Z G Z D Z Z Z Z Z Z D Z Z Z D D D D P H H Z L Z H Z H H Z Z Z Z J Z Z D D T Z.L.H.L.H.H.S.G.L.L.H.L.S.L.L.L.L.L.L.L.P.L.L.P.U.T.T.I.T.P.T.T.T.T.~.T.T.~.~.~.T.~.T.~.~.~.~.T.T.~.T.T.~.T.~.T.~.~.~.~.~.~.~.~.~./.~.~.~.~.!.~.U./.XX~.~.~.[.T.~.~.T.~.T.~.~.~.~./././.~./.~.~././././.!././.(./.[.!.[.(.[.!.[.(./.^./.(./././.E.^././.(.^./././././.(.(.(.(.(.(.(.(.(.(.(.(.(.(.^.(.(.(._.(.^.(.^.(.(._.(.`.^.(.(.(.^.(.|._.`.|.(._._.}.}.{.}._._.(.'._.@X|.|..X.X'..X.X@X.XxX.X.X.XzXdX.XdXdXdX.X.X.XdX.X.X.X.X.X|..X|.|.|.|.|._.|.|.|.|.|.|.|.|.|..X.X|..X.X.X'..X'..X.XdX'.dX.XdXdXzXzX.XzXzXzXzXzXzXzXxXzXxXxXxXxXxXxXvXnXnXnXmXmXmXmXmXnXJXnXmXmXmXmXmXnXmXnXnXmXnXmXmXmXmXmXmXcXmXmXmXcXmXmXmXmXmXMXMXMXMXMXMXMXMXMXmXMXMXMXMXMXmXMXmXmXmXmXmXmXmXmXcXnXcXcXdXcXdXdXnXzXdXcXdXdXcXdXdXdX.XzXdXzX.XdX@X X.X'.'. X`._.|.(.(.(.(.^.(.~.~.~.^.T.~.T.T.T.T.T.T.Y.P.U.L.L.L.H.H.H.H.H.S.H.H.H.A.H.S.S.S.S.G.G.S.S.G.S.A.A.A.A.h.A.A.A.A.A.l.A.A.A.h.A.j.A.A.G.A.A.A.g.A.A.A.h.A.A.h.A.A.h.h.h.l.k.g.a.a.g.a.a.i.i.k.i.i.z.i.i.a.a.a.a.a.a.a.i.i.i.s.i.i.i.i.i.a.u.p.u.u.u.u.t.t.u.t.u.t.t.t.u.u.t.u.t.u.t.u.t.u.t.t.t.t.t.t.r.t.r.t.t.t.t.t.t.u.u.u.u.u.t.u.u.u.u.u.i.u.i.u.u.i.s.i.a.a.g.a.f.f.f.z.g.h.h.l.l.A.A.A.A.A.A.H.G.S.S.S.H.H.K.J.L.L.L.L.Y.L.L.P.P.T.T.Y.T.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.~.T.~.T.T.~.T.~.~.~.~.T.~.~.[.~.~.(.(.T./.{./.^./.(.^.(.(.(.^.`.`._.(.^._.}.|.|.|.|.|.|.|. X{.|.|.|.|.|.|.|.|.|.|..X.X.X.X.X.X.X.X.X.X.XdX'.'.'..X.X.X.X.X.X|..X.X|..X X.X X.X X X.X|..X.X.X'..X.X.XdX X.XdX.X.X X.X.X.X.X.X.X X|..X|. X|.|.}.}.}.|.|._._.[.}.}.^.|.}.}.|.[.}.}._.^.`.`.^.`.^.(.`.(.^.(.(.(.^.|.[._.|._.^.|.(.`.`./.{.^.`.(.(.^.(.(.(.(.(././.(./././.~.~.T.T.T.T.T.U.U.U.U.L.L.L.S.D.H.L.G.S.S.S.L.S.L.L.S.L.L.L.S.L.L.H.H.G.H.H.A.G.A.A.A.j.g.A.l.l.h.k.z.h.k.f.h.f.g.g.g.k.k.g.g.h.k.a.z.f.k.f.f.a.f.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.f.a.f.f.f.f.f.f.f.k.k.i.k.f.a.a.a.a.a.a.a.f.a.a.a.a.i.a.s.a.a.a.i.i.a.a.a.a.a.i.a.a.a.i.s.i.u.u.u.u.u.u.t.u.u.t.t.r.r.r.r.y.y.y.y.w.r.y.y.E r.y.y.r.y.r.r.y.r.r.t.t.t.t.t.t.t.t.r.t.r.t.t.t.t.t.t.y.y.r.r.r.y.r.r.E t.t.t.u.u.u.u.u.i.i.i.i.i.a.a.a.a.s.k.a.a.a.a.d.f.f.k.", "H H J D L D L L H H H H H H H H H I Z J L L H J J Z L L L L Z L J H H H H H J H P H H P H J J P P J P J I P P P ( P I I P P P P P I P P P I I P P P J P P L H I J H H H H H H H D D D D H F Z Z Z Z Z D D B Z C C D C B D C Z Z C C C Z C C C C C C C C N C C N A C C C C C C C B C C B C B C B B C C C C C C Z C C C Z Z C B Z Z Z Z B Z Z Z Z Z Z D Z B Z C Z Z Z Z D D D D Z D D D D Z Z Z Z H H H H H Z L H F L P Z L L D U Z.L.H.H.H.K.S.K.H.H.L.H.L.L.S.L.L.L.L.P.L.L.U.L.L.U.U.T.T.T.T.T.~.~.T.~.~.T.T.T.T.T.~.T.Y.T.T.T.T.T.T.T.[.T.T.T.!.~.!.~.~.~.~.~.~.!.~.~.~.~.~.~.XXE.XX~.~.~.T.U.~.~.~.~.!.^.^././.R./.~./.~./././././././.^.(./.(.(.`.^.(.(.`.^.(.(.(.(././.^.^.^.(.(./.!.)././././.^.[.(.(.(.^.|.(.(.(.^.`.`.(.|.|.^.|.(._.^.`.`.(.(.(.(.^.(.`.`.(.`.`.`.(.^.|._.`.|._.}.}.}.}._._.`.|.|.|.|.'..X.X'..X XdX'.zX.XzX.X.XdX.X.XdX.X.X X XdX.X.X.X|. X.X.X|.|.|.|.`.`.`.|.|.|.|.|. X|.|. X|. X.X|..X.X.XzX'.zXdX.XdX%X%X.XzX'.zX.XdXdXdXzXzXzXzXxXxXxXxXcXnXxXcXnXmXmXcXmXmXnXnXJXnXnXmXmXmXmXnXMXnXmXmXnXmXmXmXmXnXmXfXmXmXmXmXmXmXNXmXMXMXmXMXMXmXMXMXMXMXMXMXmXMXmXMXmXMXMXMXMXmXmXmXmXmXcXcXcXcXcXnXcXcXdXdXcXdXvXdXzXdXcXdXdXzXzX.X.X.XdX.X.X.X.X.X|..X{.|.|.(.(.(./.(.^.~.~.T.~.T.~.P.T.T.T.U.P.P.L.L.L.L.L.L.H.H.H.H.G.G.D.S.S.S.S.G.A.A.H.G.h.h.A.A.A.A.A.A.h.h.S.g.A.A.l.Z.z.A.h.G.j.A.g.A.g.A.Z.h.A.g.Z.A.h.h.h.h.h.h.h.l.k.z.g.f.i.a.a.f.i.i.f.i.a.g.i.a.a.a.a.a.a.a.i.s.a.u.a.i.i.i.i.u.s.i.u.u.u.u.t.s.u.t.t.t.u.t.t.u.t.t.u.t.u.t.u.t.t.t.t.r.t.r.r.r.t.t.t.t.t.t.t.t.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.i.i.i.a.a.a.a.k.f.k.g.k.h.h.h.l.A.z.A.A.A.H.A.H.H.S.H.H.S.S.L.L.U.U.L.L.T.Y.U.U.T.T.T.Y.~.T.T.T.~.T.~.T.T.T.T.T.T.T.~.T.T.T.T.~.T.~.T.T.~.T.~.~.[.~.~.~.~.~.~.(.(./.(./.(.[.(.{.(.^._.^._._.(.`._._.{._.|.|.|.|._.|.|.|.|.|._.|._.|.|.|.|. X|. X'. X.X.X.X.X.X.X@X'.dX.X.X.X.X.X X.X.X.X X.X X X.X X.X X.X.X.X.X.X.X.X.X.X.X@X.XdX'.dX'.dX@XzX.X.X X X.X.X'.|..X X}.}.|._._._.(._.}.}.}.}.}.}.}._.}.}._.|.(.(.`.{.^.`.(.^.(.(.(.(.^.^.(.(.(.(._._.(.`.`.|.^.|._.^.(.`.^.(.(.(././.(.~.~././.~.~.!.Y.T.T.T.Y.I.U.U.U.L.L.L.L.H.L.H.H.F.S.L.L.S.L.L.U.S.L.L.L.S.L.H.H.H.S.A.G.A.A.A.A.A.G.g.l.h.h.z.l.l.h.h.f.g.g.f.g.a.h.g.h.k.k.g.g.k.g.f.g.i.j.a.a.a.a.i.a.a.a.a.a.a.a.a.a.s.a.a.a.a.a.a.f.a.k.k.f.f.f.k.f.z.a.f.f.a.a.a.f.a.k.a.a.a.a.s.i.a.a.s.a.a.i.a.a.a.a.a.a.a.i.i.i.i.u.u.u.u.u.u.u.u.s.u.u.t.t.t.r.r.p.y.r.y.y.r.E r.y.y.y.r.y.w.t.r.r.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.y.y.r.r.r.y.r.r.r.r.t.t.t.t.u.u.u.u.u.i.i.i.s.a.f.a.k.a.k.a.a.a.a.a.i.k.d.i.", "H H H H J J L J Z J H H I H H D H H H H H J P H H H H L L H H L H H H J F L L J I J K I H P L P P P L P P P I P P P ) P P ) P P ) P P ) P ) L ( U P P L H L L H H H H H H D L D Z D D Z Z G B D D D Z C Z B D Z C C C C Z C C C C C Z C C C C A C C C C C C A C B C B C C B C C B C N C N C C N C N C C C C Z C C C C Z Z Z Z A Z Z Z D Z Z Z Z Z Z B D Z Z C Z Z B C Z F Z G Z H H Z L Z H Z H H H H H J J L L D H D D H Z G Z Z.H.L.H.H.G.L.S.S.U.U.S.S.L.L.S.L.L.U.P.P.L.L.P.U.U.L.Y.U.Y.T.T.T.T.T.T.T.~.T.T.T.~.T.[.T.T.T.T.P.T.T.T.T.T.T.~.~.~.~.~.T.^././.~././.~.~.~.~./.~.~.~.XXU.[.XXE.~.~.~./.!./././.(.~.~.(./.~.~./././.!.(.(././.(.).!.(.(.).(.(.(.(.(.(.(./.(.(.(./.(.(.(./.(.(./.(.(.(.(.~.(.(.(._._.^.`.(.^.(.(.|.^.|._.|.^.`._.^.(.(.`.`.^.^.{.(.`.^.`.`.^.|.|.|.}.}.}. X}.}.}.|._.|.|. X.X|..X|..X'..XdXdX.X.X.XdXdXdXdXdX.X.X.X.X.X.X.X.X.X.X|.|..X|.|.|.|.|.|.|.|.'. X X.X|.|. X X.X.X|..X.X.X|..X.X.X.XdXdXdXdXdXdXzX.XzXzX.X'..XzXzXzXzXcXdXnXcXdXnXcXnXnXmXmXmXmXmXmXmXJXzXmXmXmXmXvXMXvXMXmXmXmXmXmXmXmXnXmXmXmXmXnXmXmXmXmXmXmXmXMXmXNXMXmXmXfXmXmXMXMXmXmXmXmXMXmXmXmXmXmXmXmXnXnXnXxXxXxXxXcXdXcXzXzXdXdXdXfXcXdXcX XzXzX.X.X#X.X.X.X.X X|.|.|._.}.|.^.^.(./././.~.!.~.T.T.T.T.P.P.P.P.P.P.P.L.L.S.L.S.H.H.A.H.G.A.H.A.S.S.S.S.A.H.z.A.A.A.A.g.A.A.g.h.Z.h.A.g.A.g.A.l.l.l.l.l.l.l.z.l.l.l.l.h.h.h.h.h.h.h.h.h.h.l.z.z.z.k.d.k.a.a.a.a.a.a.a.a.a.a.a.a.a.k.i.a.i.a.u.i.i.i.i.i.i.i.i.i.i.u.u.u.i.p.u.p.u.t.u.t.t.s.t.t.t.t.u.t.p.r.t.t.t.t.t.t.y.r.r.r.r.r.t.t.u.t.u.u.u.u.u.u.u.t.u.u.u.u.u.u.i.u.i.u.i.i.i.i.a.a.i.f.f.g.f.k.h.h.h.A.A.j.A.A.H.H.H.H.H.S.D.H.L.L.U.L.L.U.U.T.U.P.T.T.T.T.[.T.T.~.T.~.R.R.~.T.T.T.T.~.T.~.Y.T.~.T.~.~.~.~.T.Y././.~./.~.~.T./././././.^.(.[.(./.(.(.(.(.`.(.^.`.`.`.[._._.|._.|.`.|.`.`.|.|.|.|.|.{._.|.}.}.}. X|.|..X.X|..X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X|..X|..X|..X.X.X.X.X.X.X.X.X.X.X.XdX.XzX.X.XdXdX.XdX.XdXdX X'.dX}. X|.`.`.`._._._.|.`.`.^.`.(.|.`.`._._._.`.^.(.(.`.(.(.|.(.(.(.{.^.(.^.(.^.(.(.|.(.|.(._.|._.(._.(.`.^.`.(.(.(.(.(.(.[././././.~.~.~.~.~.T.T.T.Y.Y.U.L.P.P.L.L.L.L.L.L.L.S.H.H.H.L.G.L.L.D.L.H.D.L.S.L.L.G.D.D.G.A.A.A.A.h.l.l.l.l.l.l.D.d.g.z.k.k.k.k.k.k.f.k.k.h.h.z.g.z.k.z.f.f.i.f.a.a.a.a.i.d.a.a.a.a.a.d.i.a.a.i.i.a.a.a.k.i.i.i.s.f.a.f.g.a.s.a.k.a.k.a.i.i.a.a.a.a.a.a.a.i.a.i.a.u.a.a.a.u.a.i.a.a.i.i.i.u.u.u.i.u.u.u.u.u.u.u.u.u.u.r.t.t.i.r.r.E E r.y.r.r.r.r.r.r.r.r.r.r.r.r.t.t.p.t.t.u.t.t.t.p.t.t.t.t.t.t.t.r.r.r.r.r.r.t.t.r.t.r.t.p.t.p.u.u.p.i.i.i.a.a.a.a.g.f.a.a.a.a.a.a.f.a.a.a.a.", "H L H L Z H L Z D L H H D H H H Z H H H H H H H L U L L L H P H H L J H J H L L J J P P I J P P P J P P P P P P P P P P P P I P P I P P P L P P P P P L L L L L H H H H D L D D H D Z D D D Z Z Z B Z Z C C C C Z C C C C C V C C C C C C C C C C C C C C C C C C B C B B C C B C B Z N C N C m C C C N Z C C Z A Z Z C Z C Z C C Z Z B Z Z Z Z Z F Z Z Z Z F Z Z D Z Z Z Z G Z S Z H Z Z H H Z H H Z L Z Z Z Z H H D D D H Z H b.S.H.H.H.S.L.H.H.S.L.D.U.L.L.L.L.G.L.L.P.L.L.P.L.Y.Y.Y.U.T.P.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.Y.T.T.~.~.T.^.~./././.~.~.~.~./.~.!.~.~.~.XXE.XXU.XX/.!.~.~.~.~.~.~.~.~.[./././././././././././.(./.).(./.!.(.!./.(.(.[.(.(.(.(.(.(.(.[.(./.(.^.(.(.(.{.(.~.^.|.(.(._._.|.^.`.`.`.|.[.|._.`._.|.|.(.^.(.(.^.^.^.|.(.`.`.{.`.|._.`.{._.|.}.}.}.}.}.|._._.|.|.|..X.X X.X.XdX X.X.XdX'..X.X.XdXdXdXdXdX.XzX.X.X.X.X.X.X.X|..X|. X|.'.|.'.|.|. X|..X.X.X|..X.X|. X.X|..X.X.X.X.X.X.X'.dXdXdX.XdX.X'.zX.XzXxXzX.XzXzXzXdXvXcXvXcXcXcXnXnXmXmXMXcXMXvXvXMXmXmXvXmXmXmXnXmXMXvXmXmXmXmXmXmXmXmXmXmXmXmXfXMXmXmXmXmXmXmXmXmXMXnXNXSXMXmXMXMXmXMXmXmXmXMXmXmXmXmXmXcXmXnXnXnXnXcXdXcXzXzXzXzXdXcXdXdX.XdX@XzXzX.XzX'..XxX.X.X X X|.|._._.^.(.(.(././.~.~.~.~.~.T.T.T.T.T.T.P.P.P.U.U.S.L.L.S.H.H.S.S.S.A.A.A.S.H.S.A.S.A.S.S.A.A.A.A.A.G.g.G.S.g.A.h.G.j.G.l.l.l.l.l.l.l.l.h.l.l.h.h.h.h.h.h.h.h.h.h.h.h.h.k.k.k.k.k.a.a.a.a.a.i.i.a.a.a.a.a.a.a.u.i.i.a.u.a.i.i.i.i.i.u.i.i.s.a.u.u.u.u.t.u.t.t.t.t.t.t.t.t.u.t.t.t.t.t.t.i.t.t.t.t.t.r.r.r.r.r.r.r.t.t.u.t.t.u.u.u.u.u.u.u.t.p.u.u.u.u.i.u.i.i.a.a.a.i.k.f.f.f.g.z.l.h.h.h.h.j.S.A.A.A.A.A.D.D.D.L.S.S.L.L.L.U.U.U.U.U.P.P.T.T.T.T.T.~.T.~.R.~.~.T.T.~.~.T.T.~.T.~.~.T.T.~.T.~.~.~.~.!.~.~.~././././././././.(./.(./.(.(.^.(.(.(.(.^.`.(.^._._._._.|._.`.`.|.`.|.|._.{.|._._._.}.}.}.}.|.|.|.'.'.|.|..X|..X.X.X.X.X.X.X|..X|..X.X|..X X.X|. X.X.X.X.X.X.X X.X.XdX.X XdXdX.XdXdX.XdX.XdXdX.X@X.X'. X.X X.X|.`.`.}.}.^.|.|.^.`.(.(.`.(.|.|._.|.^.|./.(.^.^.`./.(.^.(.(.(.^.^.(.(.(.(.^.(.{.(._.|._.|.|.|.`._.(.{.(.(.(.^.(.(.(./.(./.(.~.~.Y.T.~.T.T.T.Y.P.U.L.P.L.L.L.L.S.L.L.U.H.H.H.H.L.G.L.L.L.L.D.L.L.D.A.L.H.H.H.A.A.h.A.A.l.h.l.l.h.h.k.g.g.g.g.k.k.d.g.f.f.k.k.h.k.h.k.k.k.f.f.d.d.d.a.a.a.a.d.a.i.d.a.i.a.i.i.i.i.a.a.a.a.a.i.i.z.k.z.f.f.f.a.s.j.g.i.a.a.a.f.k.a.a.a.a.i.i.i.i.a.a.a.a.a.u.a.a.a.a.a.a.a.i.i.u.u.a.i.u.i.u.u.u.u.i.i.u.u.u.t.u.E u.r.r.r.r.r.r.y.r.r.r.r.r.r.r.u.E r.t.t.t.t.p.u.t.t.t.u.t.u.t.u.t.t.r.t.r.r.y.y.r.t.t.t.t.t.t.t.u.s.u.s.s.i.i.a.a.g.i.z.i.a.a.z.a.a.k.a.g.z.a.a.a.", "H L L L Z P Z L J J S H H H H D H F H H J H J J L P H L H L L L H K J H H U J J J J J L J J L J L P P P P I P I I ) P ) ) P ) P P P ) P P ) P L H P P L L H L L U H H H L L D D Z G D Z Z H Z D Z Z Z Z Z Z C B C B C C C C C C C F C C Z C C B C C C C C C Z N B C B C C B B C N C m C N N N Z B C C C C C Z C C Z C Z Z C Z C Z Z C Z Z B D Z Z Z Z Z Z Z B Z Z Z Z Z Z D Z Z L Z Z Z H H H H Z H Z J L L L L H Z D D D D D H T Z.S.H.H.S.G.L.H.H.H.L.L.L.S.Y.L.L.L.L.L.L.U.L.L.L.U.L.T.Y.U.T.T.T.T.T.T.Y.T.T.T.T.T.T.T.Y.U.Y.P.T.T.T.T.T.T.~.T.^.T.~.~.~.~./.~./.~.~.~.~.~.~.~.~.E.{.~.~.~.XX~.~.~.~.~.~.~./.~.(.~./././.~.~./././././././.^.(.(.`.(.(./.!.(./.(.(./.(.(.~.(.^.(.(.(.(.(.(.(.(.(.(.(.(.(.}._._._._._.|._._._.{._.|.|.{.`._.{.|.^._.|._._.}.}.`._.`.|._.|._.|.|._.|._. X|.}.}.|.|.|.`.|.'. X|.|.|..X@XdX@X.X.X.XdXdX@X.X.X.X.XvX.X.X.X.X.X.X.X.X|..X|..X|.|. X|.|.|. X.X|.|. X X|.|..X.X|..X|..X.X.X.X.X.XdX.X.XzXdXdXzXzXdX'.'..XdXdXzXzXzXcXcXxXxXcXcXnXnXnXmXmXmXmXmXmXmXvXmXMXMXmXmXmXJXmXmXJXnXcXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXMXMXmXfXMXMXMXMXMXmXMXmXMXMXMXmXmXvXnXmXnXnXnXxXxXxXxXdXzXzXzXzXdXdXdXmX.XcXdXdXzX.XzX.X.X.X.X.X|.|.|.|.|._._._.(.(.~.^.~.~.Y.~.~.T.T.T.P.P.P.P.L.L.L.S.L.L.S.H.H.H.A.H.H.A.A.A.h.A.A.G.l.H.A.h.j.A.h.A.g.S.l.h.g.h.h.h.a.h.l.h.z.h.l.h.h.l.h.h.l.h.g.g.h.l.z.h.f.h.h.z.k.h.k.k.k.k.k.a.a.a.a.u.a.a.a.i.a.a.a.a.a.i.a.i.i.i.t.a.u.u.i.i.u.i.i.i.u.u.u.u.u.u.r.u.u.u.p.t.t.t.t.t.t.t.t.r.t.t.t.t.r.t.t.r.r.r.r.r.r.t.t.r.t.t.t.u.u.u.u.u.t.u.r.u.u.u.u.u.u.u.i.i.u.s.i.a.i.a.f.f.f.f.k.k.k.h.h.A.A.h.A.A.A.A.H.H.S.H.S.L.L.L.L.L.L.L.U.P.U.T.T.T.T.T.T.~.T.~.~.~.~.R.~.~.~.~.T.~.~.~.~.~.T.~.~.T.~.T.~.~.~.~./.(./././././././.(./.(./.(.(.(.(.`.(.(.`.^._.^.{._._._._.|.|.|.`.|._.`.|._.}.{._.}._._._. X}.}. X|..X|.|. X|..X.X.X.X.X.X.X'. X.X.X.X.X|..X.X.X X.X|..X.X.X.X.X.X.X.X.X'.dX.XdX.XdX.X@XdX.XdX.X.X.X.X.X'. X.X X X|.`.|.}.}.|._.|.^.`.(.`./.|.|.(.|.`._.`.^.(.`.^.(.(.(.(.(.(.E.^.~./.(./.(.(.(.(./.|./.(.|.{._._.|.(.(.(.(.(.|.(.(.(./././.~.~.~.~.[.T.T.Y.U.P.U.Y.L.L.L.L.L.L.L.S.S.U.S.H.L.H.G.H.L.G.L.H.H.G.L.P.H.D.H.A.G.A.A.A.h.H.z.h.l.l.h.l.k.g.g.l.g.d.k.g.k.f.f.k.k.k.k.k.k.k.g.k.f.k.f.i.d.a.a.a.i.i.d.a.a.a.i.i.i.i.a.i.i.a.a.a.i.z.i.k.s.a.g.f.g.a.a.a.a.a.a.d.d.a.a.a.s.a.s.s.s.i.i.i.a.u.u.a.a.i.i.u.i.i.i.i.i.i.i.i.u.u.i.u.i.u.u.i.a.u.u.u.u.t.t.E r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.t.t.t.p.t.u.u.t.u.u.t.t.t.u.t.t.r.t.r.r.r.t.r.r.r.t.t.t.t.p.t.u.i.s.s.a.a.i.i.g.a.i.z.f.a.f.f.a.f.a.a.a.a.z.a.", "H H H H L L J L H Z H H D H H H H H H H H H H H H H L L L L L L H H J J K L H J J L J J J P J J L J P P L Y P P P P P K P I P P ) ) P I L ) P I I P P L L L S L H H D L Z D D D S Z D D H D Z D Z Z D B C Z D Z C Z C D G C C C C C A C B C C A C B V u N A A A C B C B B C B V C C C C A C N C B B N C C C C C Z C Z A Z Z Z Z C Z Z Z Z D G D Z Z C G Z Z D Z C Z Z Z Z Z H Z Z Z D H H Z Z H C H Z L L Z Z Z Z H Z D D D D H T b.H.K.H.Z.G.H.H.L.F.L.U.S.L.L.L.G.L.D.U.L.U.L.U.U.L.Y.U.U.U.P.P.T.T.T.Y.U.T.T.T.T.T.U.P.Y.P.U.T.P.P.T.T.T.T.T.T.T.~.T.T.~.~././.~.~.~.~.~.~.!.T.T.XXXX~.~.~.~.!.~.!.~.~./.^.~./.~./.~././.(././././././.(./.(.(.(.!.(.(.(.(.(././.(.(.(.(.(.(.`.(.(.(.(.(.(.(.{.(.{.(.{.[.}.|.|.|._.|.|.|.|._.|.|._._.|.|._.|.`.`.(.|.|.[.}.}.^.`.^.|.|.|._.|._.|.'._.|.|.}. X|.|..X X.X|..X.X.X.X.X.X.X'..X.X.X.X X.X.X.XdX.X.X.XzX.X.X.X.X.X.X.X.X.X|.'. X|.'..X'.|.|.'.|..X.X.X.X|.|..X X.X X.X|..X.X XdX.X@X.XdX.X.XdXdXdX#XxXdXxXzXzXzXzXdXxXxXcXcXnXnXnXvXmXmXmXmXmXmXmXmXvXmXmXMXmXzXmXvXnXnXmXmXmXmXmXmXMXmXmXMXmXmXmXmXmXmXmXmXmXmXmXfXMXNXfXMXmXMXMXmXMXmXMXMXmXmXmXmXMXcXJXnXnXnXnXnXxXcXcXnXdXdXxXdX%XdXdXdXdXdX XzXzX.XzXdX.X.X.X|.|.|.{._._.(.(.(.(.(.~.!.~.~.R.T.P.U.T.P.P.P.T.L.L.U.L.S.U.S.S.H.A.S.A.A.S.A.A.G.S.h.H.h.A.z.S.h.A.A.A.z.k.h.h.g.z.h.g.h.h.h.h.l.h.l.l.k.z.h.k.l.f.z.g.k.k.f.h.k.f.k.h.k.k.k.k.k.d.k.a.a.a.a.a.a.i.a.i.i.i.i.a.i.a.a.i.i.u.a.a.u.i.u.i.i.i.u.i.u.i.u.u.u.u.u.u.t.t.u.t.t.r.t.r.t.t.t.r.t.t.t.t.t.t.r.r.r.r.r.t.t.r.t.r.t.u.t.u.u.t.t.t.t.u.t.u.u.u.u.u.u.i.u.s.i.i.i.a.a.a.i.i.f.f.k.k.h.k.h.h.h.A.h.A.A.A.z.H.A.G.S.H.S.L.L.L.Y.P.U.Y.T.T.T.T.T.T.T.~.~.T.~.T.~.~.~.~.~.~.~.~.~.^.~.T.~.~.T.~.~.~.~.T.~.~./.!./././././.(./././.(.(./.(.(.~.^.(.(.(.`._._._._._.}._.|.`.|.`.`.|.`.|.|.}.}.}.}._._._._.|.|.|..X|.|.|.|.|.|.|.|.|.|..X|.'.'.@X.X.X.X.X.X.X.X|..X.X.X|..X@X X.X.X.X.X.X'.dX.X.X@X.XdX X.X.X.XdX.X.X.X.X.X.X|.|.|.'.|.|.}._.^.`._.^.|.|.|.|.{._._.`.(.(.`.(.(.(.(.(.(.(.(.(././.(.(././.(.(.`.(.(.`.(.(._.{.(.{.^.`.(.(.^.(.(.(.[.(././.R.(.~.~.~.~.T.T.T.Y.P.L.L.P.L.L.L.L.L.L.L.U.S.K.H.G.H.H.H.H.H.H.S.G.L.G.G.H.G.G.D.A.A.A.A.A.h.h.h.l.h.l.h.D.z.g.d.g.g.k.g.f.k.d.k.k.g.k.k.k.k.d.k.f.k.i.d.a.a.a.a.k.i.i.u.i.i.i.a.i.i.i.i.i.a.i.a.a.i.i.z.f.k.a.f.g.a.g.s.f.i.a.d.a.a.a.a.a.a.s.a.i.u.i.u.a.u.a.u.i.u.i.u.i.i.i.u.u.i.u.u.i.u.u.a.i.i.i.i.u.u.u.u.u.u.t.r.r.t.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.t.p.t.r.p.u.t.i.u.t.u.u.t.t.t.u.t.t.t.r.r.t.r.t.t.t.t.u.p.u.s.u.i.i.i.a.a.a.z.a.a.g.a.f.f.f.f.k.a.a.a.a.z.a.a.", "L L L L H H H J H H H H H H H H H D H H Z H H H L H H P H L H L P P J J L K P J P P P P J P J J P P P J P J P U P J P I I I P ) P ) I I P P L I P P J J L L L Z H H Z D H H D D Z Z Z Z Z L H Z Z Z C D Z C C Z C B C C B C C C C C C C A C B A C C C A V C C C C C B C C B B C C C C N C N Z B B B C C C C C C A F C Z Z Z Z B B Z Z D Z Z Z Z G Z Z Z B D C Z C Z Z Z D Z Z Z H Z S Z Z H L Z L H H H H D H P H H Z Z Z Z H D Z b.A.P.L.H.H.H.K.H.H.L.L.L.L.L.L.L.L.S.L.L.P.L.L.L.L.U.L.Y.L.Y.P.P.T.L.T.T.T.U.T.T.P.T.P.Y.P.P.P.P.T.Y.T.T.T.T.T.T.T.~.~.T.~.~./.[./.~.~.~.~.~.~.~.~.~.T.[.(.T.~.~.~.!.~.~.~.[./.~./.~.~.~.^.~.(.E.[.^.(.^.(.(.(.(.(.(.(.(.(.(.(.(.(./.(.(.(.(.`.^.^.^.(.(.^.^._.(.`.^.`._.{._._.|.|. X|.|.|.|.|.|.|.|.|._.|.|._.|.|.{._.{.}.}._._._._._.|.|.|.|._.|.`.|.`.|.|..X'.|..X|..X.X.X.X.X.X.X.X.X.X.XdX.X.X.XdX.X.X.X.X.X.XzX'..X.X.X.X|. X|..X X|.|.'.|.|. X X|..X|.|..X.X.X|..X X X.X|.|..X.X.X@X.X'.dXzX.XzXzXdXdXdX.XdXdXzXzXzXzXzXcXcXcXnXnXnXmXMXmXmXmXmXmXmXmXvXMXmXmXmXNXMXnXmXzXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXdXMXmXmXmXMXmXMXMXfXmXmXMXMXMXmXMXmXMXmXNXmXmXJXzXnXnXnXxXvXxXxXxXdXcXdXdXvXdXdXdXdXdXdXdX.X.XdX.X@X.X X'.|.|._._.|.(.{.^.(.(./.~.~.T./.T.T.T.T.T.P.U.L.U.L.L.L.S.L.S.H.S.J.A.A.G.A.A.A.h.A.h.A.A.A.A.l.l.A.A.h.h.l.l.l.l.h.h.g.h.g.h.g.g.z.z.z.h.h.k.h.h.f.k.g.g.f.z.j.f.k.k.k.f.z.k.k.k.d.k.a.a.a.a.a.a.a.a.i.i.i.i.i.i.a.a.i.i.u.a.u.u.i.i.u.i.i.u.u.i.p.i.t.u.u.t.i.t.u.t.u.t.t.t.t.r.t.r.r.r.r.r.t.t.t.t.r.r.y.y.y.t.r.t.t.t.t.t.t.t.u.t.u.t.u.u.u.t.t.u.u.u.u.i.i.u.i.s.i.a.a.a.z.f.d.i.g.k.g.g.g.h.h.A.A.h.A.A.A.H.D.H.G.L.H.L.L.L.P.P.U.Y.U.T.T.T.T.T.T.~.T.~.T.~.!.~.~.~.~.~.E./.~.~./.~.T.~.~.T.T.~.~.~.~.~./././.(././.(.(./.(.^.(.(.(.(.!.(.(.(.`._._._._._._.}.}.|.|.|.|.`.`.`.`.}.}.}.}.^.|._._._._. X_.`. X|.|.|.}.|.|.|.|.'.|.'.'.'..X.X'. X X.X.X X X X X.X.X|..X.X.X.X.X.X.X.XdX.XdX.X.X@X.X.XzX'..X.X.X'. X.X'..X X.X|.|.|.}.}.}.}._._.`.^.|.|.{.{.`.(.(.(.(.(.(.(./.(.~.(././././.~./././././.(.(.(.(.^.`.(.(.`.(.(.(.`.(.(.(.|.^.(.(.(.!./././.~.~.~.T.T.T.T.Y.P.P.U.L.L.L.L.L.L.L.L.S.U.H.H.H.H.H.G.L.S.S.L.H.H.H.G.G.H.S.S.A.A.A.A.z.D.l.h.h.h.z.k.l.z.g.g.g.k.k.k.k.g.f.k.f.g.k.k.k.z.a.g.i.i.f.i.i.i.k.i.a.i.i.i.i.i.a.i.i.a.i.a.a.a.i.a.a.a.a.i.s.f.k.a.a.i.s.g.a.i.a.a.a.a.a.a.a.a.i.a.i.s.u.u.a.a.a.u.i.u.u.u.u.i.i.i.u.u.u.u.u.i.u.i.u.u.i.i.i.u.i.i.u.u.r.i.t.t.t.r.r.t.t.r.r.t.r.t.r.r.u.r.t.t.t.u.u.u.u.u.u.u.u.u.u.u.u.u.u.t.t.t.t.t.t.t.t.r.t.t.u.u.u.u.i.i.i.a.a.a.i.a.g.f.f.z.a.z.a.g.a.f.f.z.k.f.f.a.", "P H L L L L D H K H H H H F H H H H H H J H J H L L L L L P U H H H L L H P L L H H H H H L P H J J H P P P P P ) P P I I I I P P P I I P I I I J J J J H L L P H H H H D H D D Z H F H Z Z Z Z Z Z D C Z Z Z C Z D C F C C B F C C Z C B C C B C B C C C C N Z B N C B B C B B m A C N N C N B B A C N A C Z A C B Z Z C Z Z Z G C Z Z Z Z Z G D Z Z Z Z Z Z D G C Z Z Z G H Z Z Z H H H Z L H H Z H Z L Z Z Z H D Z H F D D D Z e.G.H.H.G.H.K.H.H.L.H.L.S.S.L.L.S.L.L.L.L.P.L.L.Y.U.L.U.U.U.U.P.P.T.Y.U.U.T.Y.P.P.P.P.P.P.P.P.P.P.P.P.T.T.T.T.Y.T.T.~.T.^./.~.~.~.T./.~.~.~.~.T.~.~.T.~.~.T.~.~.~.~.~.~./.~.^.~./.T.[.^.[././././.^.~.!.(.(.(.(.(.(.(.(.(.(.!.(.(.(.(.^.(._.(.^.|.^.`.`.^.`.^.(._.^.[.^.`.|.|.|.|.|.|.|.|.|.|._.|.|.|.|.|.|.|._._._.|.|._.}.}._._._._.|._.|.|.'.`.`.|.|..X|..X|..X.X.X.X.X.X.X.X|..X.X.X'..X.X.X.X.XzX.X.XdX.X.X.X.X.XvX.X.X.X.X.X.X.X.X|. X X.X.X.X|..X.X X.X.X.X X|. X|. X X|..X.X X|..X.X.X'.dX.X@X'..XdX'.dXdXcXdXzXzXzXzXdXcXcXcXvXnXnXnXvXmXmXmXMXvXMXcXmXnXmXmXcXnXvXmXmXJXmXvXmXmXxXmXmXmXcXmXmXmXmXmXmXmXmXmXmXmXmXmXMXMXmXMXNXmXmXMXmXmXmXmXMXmXmXmXmXmXmXmXnXnXnXcXxXxXJXdXcXcXxXdXdXdXdX#X.X.XvX.XdXdX.X.X X.X X|.|.|.|._.|.{.{.).(.(././.~.~.T.T.T.T.T.U.P.U.P.U.L.L.L.S.P.S.S.S.h.G.A.A.A.G.A.A.A.A.h.h.h.h.l.h.g.h.h.h.h.h.k.k.f.g.h.a.z.g.h.z.l.h.h.f.f.h.f.f.z.f.f.f.f.f.a.g.z.k.k.f.k.k.a.a.k.i.a.a.a.a.a.a.i.a.u.i.i.i.i.i.i.i.i.i.u.u.u.a.u.u.i.u.u.u.u.u.u.u.u.u.u.u.t.u.u.t.t.t.t.t.r.r.r.r.t.t.r.t.r.r.r.r.r.r.r.t.t.t.t.r.y.t.t.t.t.t.t.u.t.t.t.t.t.s.u.u.u.u.u.u.u.i.u.a.i.a.a.i.i.k.f.k.k.f.g.g.f.h.h.h.h.A.A.A.A.A.H.S.H.G.L.L.U.U.U.P.T.U.Y.U.T.T.T.T.T.T.~.T.T.[.~./.!.~.~.^.^././.(.!.~.~.~.T./.T.~.~.~.~./././././.(.(.(.(.(.(.^.(.(.(.{.(.(.(.^.`._._._._._.`.}. X|.|.|.|.|.|._.`.|.}.}.}.{._._.|._._.|.|.`._.|.|.|.|.|._.|.|.`..X X`.|..X.X`. X@X X.X X@X.X X.X.X.X.X.XdX.XdX.X.X XdX.X.XzX.XdX.X.X.X.X.X.X.X@X.X.X X|..X|.|.|.|.}.}.}._.`.|.(.`.{.(.^.(.`.(.(.`.(.^.(.(.(./.{.~./././.!.~.(././.!.(.(.(.(./.(.(.^._.^.`.(.`.(.(.(.(.(.(.(.(.(.(.E.(./.~.T.T.~.T.T.P.U.Y.P.Y.L.L.L.L.L.L.L.S.L.H.S.H.H.S.H.H.S.S.S.H.H.H.H.D.H.H.H.G.H.A.A.A.A.l.A.l.h.h.h.h.g.l.g.g.g.k.k.h.k.f.k.k.f.k.k.f.a.g.i.k.i.k.k.a.k.i.u.i.a.i.i.i.i.i.i.i.a.a.i.i.i.a.a.a.a.i.k.i.f.f.s.f.g.z.g.a.k.i.a.a.a.i.a.d.i.a.i.i.u.i.i.i.E x.u.a.u.i.i.i.u.u.u.u.u.i.u.u.i.i.i.u.i.i.u.i.u.i.u.u.u.u.u.u.t.t.t.t.t.t.t.t.p.r.t.r.r.r.r.r.t.p.t.u.t.t.u.u.i.u.u.u.u.u.u.u.p.u.u.t.t.t.t.t.t.t.u.u.u.u.u.u.i.i.a.a.i.i.f.f.i.z.a.k.g.a.g.g.k.k.a.a.a.k.a.f.", "H H L L L L H P L L H H H H H F H D H H H H H J H P H L L P L P P L L P Y H J L U P U P J H L Y J J H J P P P P S I P P S P I ) ) ) P I P P P L J J L H H H H L H H L Z H Z D D Z Z H D Z H Z D Z Z Z Z Z Z C D C G C C D C C B C C C B C C C A V C C N N B B B C B B Z N C B C N C C A Z N B B B B Z C C C C C Z Z C Z C Z Z Z Z Z Z Z G Z Z D D G Z Z Z Z Z B Z Z D Z D D Z G H Z H Z H Z H H H Z Z H D H Z H D H Z H Z D D D Z [ D.L.L.H.H.H.L.H.L.H.L.L.S.L.L.L.L.L.L.L.L.L.U.L.L.L.L.L.L.U.Y.P.P.U.U.Y.L.U.P.P.P.P.P.P.P.P.P.P.U.U.U.T.T.T.T.~.T.T.~.T./.T.~.~.T./.T.~.~.~.~.T.T.~.~.~.~.~.~.~././.~.~.~.~./.~.~.^.(.E.~././.!./.!.(.^.(.(.(.(.(.(.(.(.^.(.(.(.(.(.(._.(.|.^.).^.`.^.(.[.|._._._.|._.|._._._.|..X|..X|. X X|..X.X|.|.'. X|.|._.|.|._._.|.}.|._.`.`._.|.|.|.|.|.'.|.'.|.|. X.X X.X|..X.X.X.X|.|..X.X.X X.X.X.X.X.X.X.XdX.X.X.X.X.X.X.X@X X X.X|..X.X|..X|..X|..X X.X|..X.X|.|..X|. X|.'.@X}.|.|..X.X'..X.X.X.X'..X'.zX'.zXdXdXdXdXdXzXdXdXcXcXzXvXnXxXnXnXnXMXMXmXMXmXNXxXmXmXMXmXMXmXmXmXmXmXmXmXmXmXmXJXnXmXcXcXfXmXfXmXmXmXmXmXmXmXmXmXmXMXMXmXmXmXmXmXcXfXNXMXmXMXMXMXmXmXmXmXmXnXnXnXnXxXxXdXcXzXdXdXxXdXdXdXdXdX.X X@XdX.XdX.X X X'.|.|.|._._.^.^.(.^.^./././.~.~.T.T.T.T.P.U.U.P.L.L.L.L.L.L.S.H.S.S.A.A.A.A.A.A.A.h.l.h.l.h.z.g.g.l.g.g.z.g.h.k.h.k.k.k.g.l.g.g.g.g.f.x.f.f.k.k.k.f.k.a.f.f.f.f.a.a.i.z.f.f.k.a.k.a.a.k.a.a.a.a.a.a.a.a.i.i.i.i.i.i.i.i.i.i.a.a.a.u.i.u.i.i.a.u.u.u.u.u.u.t.t.u.p.r.t.t.t.t.t.t.r.r.r.t.r.r.r.r.r.r.t.t.r.r.r.r.r.t.r.r.t.t.t.t.u.t.t.u.t.u.u.t.u.u.u.u.u.u.u.u.u.u.i.i.i.a.a.k.i.f.f.k.f.k.g.f.g.g.h.f.h.A.A.A.A.G.G.G.H.L.H.L.L.U.P.Y.U.T.P.Y.T.Y.T.T.T.T.~.T.~.[./.(./.^./././.(././.(.(./.~.~.!.~.T./.T././././.(./.(.^.(.(.(.(.{.(.(.^.(.(._.(.^.(.`._._.|.`. X}.|.|.|.|.|.|.|.|.|.}.}.`._.|.`._._._._._._.`.`.}.}.|.|.|.|.|. X'..X`.'..X.X.X.X X.X.X.X X.X.X.X|..X.X.X'.'.@X X.X.X.X@X.X'.dX.X.X X.X.X.X.X.XcX.X.X.X|..X|.'.|.|.`.}.}._.^.|.(.|.{.^.(.(.(.^.(.(.(.(.(.(././.(.~././.(././.~.~./././././././.(.(.(.(.(.(.(.(.(.`.(.(.(.(.(.(.(.^./.^.^./.~.~.~.~.T.T.Y.U.L.K.P.L.L.L.L.L.L.L.L.H.L.H.H.H.H.H.H.S.L.L.S.H.S.D.L.H.Z.G.G.A.A.A.h.h.A.h.h.h.z.z.h.g.g.z.h.g.k.k.k.k.k.g.k.k.f.i.f.a.g.k.a.a.a.i.a.f.i.a.i.i.i.i.i.i.i.i.i.i.i.a.i.a.a.a.a.a.a.a.a.f.s.k.f.a.a.i.i.k.a.a.a.i.d.i.i.i.i.i.u.i.i.u.u.a.u.i.u.i.u.i.i.u.u.u.u.u.u.i.i.u.a.i.i.i.i.a.i.i.u.u.a.u.u.u.E u.t.t.t.t.t.u.t.t.t.t.t.t.t.u.r.t.t.t.p.u.u.u.u.u.u.u.u.u.u.i.u.t.u.t.u.p.t.p.t.t.u.r.u.u.i.u.a.i.i.a.a.z.a.g.f.a.f.z.z.f.g.f.a.f.a.a.a.a.f.k.k.", "L P L H L H L H L H H H F H H H H D H I S H D J H H L L L H P L H H P H H J H L P H H P H P H J J J J J P P P P P I I I I ) I P P P I I P P ( P J J J H J P H H H H H L H H D D H Z Z H Z Z Z H Z Z Z Z C Z Z C C C D C C C C C C C C B u C C C C C C C C A B Z C C B C B B C N C N m N m A B B B B N C C C C C C C Z Z Z Z Z C Z Z Z Z D Z Z Z D D Z Z Z Z Z G Z Z C D D Z Z Z Z D D H D H S Z Z H Z H H Z H D H D D Z Z D D Z Z T Z.D.H.H.S.L.H.H.H.K.S.L.L.L.H.H.L.H.L.L.L.L.S.L.L.L.L.U.L.P.P.P.P.Y.U.U.L.U.P.P.P.T.P.P.P.P.P.P.U.U.T.U.T.T.T.T.T.~.T./.T./.~.~.(.T.~.~.~.T.T.T.~.~.T.~.~./.~.~.(./.(./.!.~./././.^.~./././././././.~.^.(.(.(.].'.(.(.(.(.(.(.(.(./.|.(.|.^.`.(.`.(.(.|._._._._.|._._._.|.|.|.|.|. X.X.X X'. X.X|. X.X X|.'.|.|.|._.|.|.}.|.`.|.|.|.|.|.|.|. X|..X|. X.X.X.X|..X.X.X.X.X'..X X@X.X X.X.X.X.X.X.XdX.X.X.X.XdXzX.X.X.X.X.X X.X.X.X.X X.X X X.X|. X|..X.X|..X X.X X'.|.|..X X X.X|.|.|.|.|.|.'..X.X'.xX.X.XzX@X.XxX@XzXzXcXdXcXdXxXxXxXnXxXnXnXJXzXmXvXmXmXmXmXmXvXJXzXmXmXvXmXmXmXmXmXmXcXnXnXmXmXcXcXNXfXmXmXmXmXvXmXcXMXmXmXfXMXmXMXmXfXSXfXNXmXmXMXMXMXmXmXmXmXmXvXnXxXnXnXnXcXcXdXzXzXzXdXdX.XdXdXdX XdXdX.X.X.X'..X'.|.|.|.{.|.^.{._.|.(.(.{././.T.~.T.T.T.T.P.U.U.U.U.L.S.L.S.L.L.D.S.S.A.G.G.A.A.A.h.A.l.h.l.h.g.z.g.k.g.g.g.z.g.g.k.k.k.z.f.z.k.k.g.a.f.f.f.f.f.f.f.f.f.f.f.f.a.f.f.a.i.a.i.i.a.a.a.a.a.a.a.a.a.a.a.a.a.i.a.i.i.i.i.i.s.i.i.i.u.u.u.x.u.i.i.u.u.u.u.u.u.u.u.u.u.t.t.u.t.t.t.t.r.r.r.t.r.r.t.r.t.t.r.r.r.r.r.r.t.y.y.r.r.t.r.t.t.t.t.u.t.t.t.u.t.t.u.t.u.t.u.u.u.u.i.u.u.a.i.i.a.a.d.f.i.k.k.k.g.f.g.g.h.h.h.h.z.A.A.A.H.G.H.H.L.L.L.U.Y.U.T.P.Y.Y.P.T.T.T.T.~.T.~.T.~./.!.(././././.^././.[.~././.~./.~./././././.(./.(.(.(.(.(.(.(.(.(.(.(.^.`.(.(._.^.`.`.(._._.(.|.'.|.|..X|.|.|.|.|.`._.|._.|.`.{._._._.|._.|.`.|.}.|.}.|.|.|.|.|.|..X'.@X|.|.|..X.X X|..X|. X.X.X.X|..X.X.X.X'..XdX.X.X'..X.X.X.X.X X X.X X.X.X.X.X.X.X.X.X X|.|.`.`.}._._.`._.`.`.^.`.(.(.(.(.`.(.`.(.(.(.(.(./.^.!./.~./.~./.~./.(././././././.(.(.(.(.(.(.(.(.^.(.(.(.(.(.(.(./.(././././.T.~.T.T.T.Y.Y.P.P.L.P.K.L.L.L.L.S.L.K.H.L.H.H.S.S.H.S.D.A.S.S.H.H.D.H.S.H.H.G.A.A.A.A.h.A.l.h.l.k.l.g.k.h.k.h.k.k.k.k.k.g.d.f.k.k.i.g.a.k.a.z.a.a.a.i.i.i.i.i.i.i.i.a.i.i.i.i.i.a.a.a.a.a.a.a.a.k.i.a.f.a.f.g.i.z.i.k.a.a.i.i.i.i.i.i.i.i.i.u.u.u.i.u.a.u.i.u.i.k.E u.u.a.u.i.u.u.i.i.i.i.a.i.i.a.i.i.u.i.u.u.a.i.u.u.u.u.u.u.t.t.u.p.u.t.t.t.p.u.r.t.t.t.t.u.u.u.u.u.u.u.u.u.u.u.i.u.p.p.u.t.u.t.t.t.u.u.i.u.u.i.i.a.a.k.a.i.g.a.g.g.f.f.f.f.a.f.a.k.k.a.f.f.k.a.k.", "L H H L H P H P Z H H H H H H H H H H H H H H H H H H J H J J J P P P J P K J U H J L L J J J J L L L L J P P P P P P P P P J ) I I P I P P P P J H U H H H H H H H H D H D D D Z H Z L D Z Z Z D Z D Z Z Z B Z D D C Z B C C C F C C C C C N C N C C C A C A C C C C C N C C N V A N N A N N N B C N u C C C A Z A C Z Z Z Z Z Z Z Z Z Z Z G Z Z Z Z Z D C B Z Z Z G C Z G Z Z Z D D D Z L H L H H L L Z Z Z L D D D D Z D D D C L b.S.D.G.U.L.U.L.S.S.L.L.Z.S.L.L.L.L.L.L.L.H.L.L.H.L.S.U.L.P.L.U.P.U.L.U.U.L.P.T.U.U.U.U.P.P.L.R.Y.I.T.T.Y.T.T.T.T.~.~.T.~.~.~.T.T.~.~.T./.T.~.~.~.~.~.~././.^.(./.~.!./.~./.~.(.~.~.~.~.^./././.!.).~./.(.).(.(._.(.(._.(.`.(._._.(.`.(.(._._.(._._._._._._.}.}.|.|._._.|.|.'. X.X.X.X.X'..X.X.X.X.X.X.X.X.X|.|.|.|.|.|.|..X|.|.|.|.|.|.|.|.'..X|..X X.X.X|..X.X.X.X.X.X'..X X X.X|..X.X|..X.X.X.XdX.X.X.X@X X X@X.X@X.X.X.X|.'.|..X|..X.X X.X.X.X.X X|..X.X X|..X.X|.|.|. X|.}.}. X}. X X|.'..X'.@X'.zX.XdXdX@XzXdXzXzXcXzXxXxXxXcXcXcXxXmXMXnXnXnXMXnXcXMXMXcXcXMXnXnXmXmXmXmXmXmXmXmXmXmXfXmXNXmXmXmXmXmXmXmXmXmXfXmXNXfXSXdXMXMXMXMXMXMXmXmXfXfXmXmXMXmXmXmXnXmXnXnXnXnXxXxXxXxXdXnXxXdXdXdX.XdX.X.XdX'..X.X.X.X.X|.|.|.`.^.|.^.(.(.^.^././.~.^.T.~.T.T.T.P.P.L.U.P.L.L.L.H.L.H.G.S.A.S.S.S.A.A.h.A.h.h.h.h.h.g.k.g.g.g.g.g.g.a.z.z.a.z.k.k.k.k.f.a.a.g.f.f.f.f.f.g.f.j.g.f.a.f.a.f.a.a.f.i.k.i.i.a.a.a.a.i.d.a.a.a.a.a.a.i.a.i.a.i.i.u.i.u.i.a.u.u.u.u.i.u.u.u.u.u.u.u.u.t.u.u.t.u.t.t.t.t.r.r.r.r.t.r.r.t.r.t.r.r.r.r.r.r.r.r.r.r.t.t.r.r.r.t.t.t.t.t.t.t.u.t.t.u.u.t.t.u.t.s.u.i.u.u.s.i.a.a.a.z.a.a.k.f.f.f.k.g.g.g.g.h.h.A.A.A.l.S.S.G.H.L.L.L.L.U.U.U.T.P.T.U.U.T.T.T.T.~.T.^.T.~./././.(.(.E././.[.(.(.(.(./././.~.~.E./.(./.(./.(.(.^.(.(.^.(.(.{.^.(.(.(._._.(.`.^._.^.}._._.|. X|..X X.X|.|. X`.|.|.|._.}.}.}.(.|._.[.|._.}.}.|._._.|.|.|.|.|.|..X X|.|..X|..X.X X X.X|.|.|.|.'. X|.|..X.X.X|..X.X.X.X.X.X.X X'..X.X.X.X.X|..X.X.X.X.X X|.|.|._._._._.(.`.(.`./.(.(.(.(.(._.(.(.(.(.(.(.(././.^.~.~././././.T.T././././.~.(.[.(.~.(.[.(./.(./.(.(.(.(.(.(.(.(.(./.(.^./.T.~.T.T.~.T.P.P.P.P.P.U.U.L.L.L.L.L.S.H.H.H.H.H.H.A.A.A.H.H.A.G.S.H.G.G.H.S.S.A.A.A.A.A.h.l.l.h.h.h.k.k.h.k.h.k.h.l.k.f.k.k.f.k.k.k.z.a.i.g.a.a.a.i.a.i.a.i.i.a.i.i.i.i.i.i.i.a.a.i.a.a.a.a.a.a.f.a.k.f.f.f.a.a.a.a.f.a.a.i.i.i.a.i.i.i.i.u.i.u.a.i.u.i.u.i.i.i.u.i.i.u.u.i.u.u.a.u.a.i.i.i.i.i.i.i.i.u.a.u.x.u.a.d.u.u.u.u.u.u.t.t.u.u.t.t.t.t.t.u.u.t.u.u.u.t.u.u.u.u.a.a.u.u.u.i.a.u.p.u.p.t.u.t.u.t.u.i.i.i.i.a.f.g.a.a.a.i.f.f.g.f.k.k.f.g.a.f.f.a.f.g.i.z.g.a.f.", "L P H L H H H H P H Z L H F H H H F H H H H H H H H P P J J J I J J P P P P H K P H H J L J H H J L J P L P P P P P P P P P ) P I I ) P P P P P J J P H J H J H H H H H D H D D D Z L Z D H H Z Z D Z Z Z D F Z Z C Z C D C C Z C C C C C C C A C C C C V C V C C C C C C B N C C N M C N N A C C B B N C C C C Z C Z Z Z C Z Z Z Z Z Z G Z D D Z Z Z Z Z D D Z Z Z Z Z Z G Z Z D D D D Z Z Z Z Z H Z L Z L L Z D D D Z D Z D Z Z L T D.L.H.G.L.A.L.L.L.S.L.L.L.D.H.L.H.H.L.H.Y.H.L.L.L.L.L.P.L.L.L.P.P.L.L.L.U.U.U.U.P.L.P.P.P.U.Y.I.Y.T.T.~.T.T.T.T.T.~.~.T.T.T.[.~.T.T.T.T.~.~.~.~.~.~.~.~.!.~.~.~./.[.~./.~./.^.(.~.T.(.~.~././.(./.^.!.(.(.(.(.(._.(.^.^.`._.(._._.(.|._._._._._._.[._._._._.}._._.|.|.|.|.|.|.|..X.X.X.X.X.X.X.X'..X.X.X'..X.X|. X'.'.|.`.|.'.'.|. X.X.X|..X|.|.'..X.X.X.X.X'..X X.X.XdX'..X.X.X.X.X.X.X.X.XdX.X.X.X.X.X.X.X XdX.XdX.X.X.X.X.X.X|. X|..X.X.X.X.X.X X|..X|..X.X X|..X|.|.|. X X}.}.|.}.|.|. X X X.XzX'..XdX.XdXdXdXzXzXzXcXdXxXdXcXcXnXxXnXcXbXfXnXnXcXMXnXnXmXmXcXMXmXmXdXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXMXMXMXmXMXNXfXMXSXMXMXMXmXmXmXMXvXnXnXnXnXcXcXxXdXcXzXdXcXdXdXdXdXdX.X.X.X.X'..X.X.X|._.|._.|.(.`.^.(.(.(././.^.T.T.T.T.U.P.P.P.L.L.P.L.L.L.L.H.H.H.S.H.A.A.A.A.A.A.A.A.h.h.h.h.g.g.g.g.g.g.g.g.z.g.f.g.g.k.f.f.f.k.f.g.z.f.i.g.a.f.a.a.a.a.k.a.a.a.a.a.a.i.i.i.i.i.a.a.a.i.a.d.a.d.a.a.a.a.a.a.a.a.i.i.i.u.u.i.u.a.u.u.u.u.u.u.u.u.u.u.t.t.u.t.u.u.t.u.t.t.t.t.t.t.t.r.r.r.r.r.r.r.t.r.r.r.r.r.r.r.r.y.t.r.r.r.t.t.t.t.u.t.t.u.t.t.u.t.u.s.t.u.t.u.u.u.i.u.u.a.a.a.a.k.a.i.f.z.f.k.g.g.g.k.l.k.A.g.A.A.A.S.G.G.S.H.L.L.U.U.U.T.P.U.T.T.T.T.T.T.~.~.~.^.[././.^.(.^.{.(./.(.(.(.(./.(.(./.(.^.^./././.(.|.^.(.(.^.(.`.{.).(.^.(.(.(.(.(.(._.`.(.|.}.|.|.|..X'.|.|.|.'. X'.|.`._._.|.}._._.{._.}.}._.|.}.}.|._..X_.|.|.|.|. X|..X'. X|..X.X.X|..X|..X|.@X|. X'. X.X.X.X.X.X|..X|. X|. X|. X X X.X X.X.X.X.X|..X X X X|.|.|._._._._._.`.^.`.`.(.(.(.(.(.(.(.^.^.(.(.(.(././.(.(.~.~.T./././.(.!./.~.~./.~./.(.(.(.(././././.^.(.(.(.(.(.(.(.(.(././.~./.~.T.T.T.P.U.P.P.T.P.L.L.L.L.U.S.L.L.H.H.H.H.H.H.H.H.H.A.S.H.G.S.A.G.G.S.S.S.A.Z.h.A.h.A.l.h.l.h.l.l.h.k.h.k.k.k.k.k.f.f.f.k.f.z.i.i.a.f.a.a.k.a.a.i.i.i.i.a.i.i.i.i.i.i.i.i.a.a.a.i.a.a.a.a.a.i.a.k.a.a.s.a.a.k.a.a.a.a.i.k.a.i.a.a.t.i.u.u.u.u.u.i.u.i.i.u.z.E u.u.i.i.u.u.u.u.u.u.i.i.i.a.a.i.i.i.k.E u.E u.u.k.E u.i.u.u.u.u.u.u.u.u.u.u.t.t.t.u.u.u.p.t.u.i.u.i.i.u.u.u.i.i.u.u.u.u.u.u.u.u.t.u.u.u.u.s.i.i.i.a.a.i.g.a.g.f.f.a.k.f.k.f.k.k.f.f.f.f.a.f.z.a.k.g.", "L H H L U H H H H H H J K G H H Z L H H H H H H P H H J J J J J J P J J P P L P H P H H J L J L L L J J J L P P P P P ) ) J P ) P I P U P P Y L P H P P H H H H H H H H H H D Z D D Z Z Z L Z Z Z D Z Z Z C C Z C D C Z Z C C C A C C C C C C V C C B C C C C C C C C C N C C B A N V C B Z B A B C B C C C C C C C Z C Z Z Z C G D Z Z Z G B D Z Z Z Z C G D Z Z Z Z Z Z Z Z G Z D D D Z H D D H S Z L H Z Z Z Z D D D Z Z Z Z Z D T H.S.H.A.P.H.H.H.H.L.L.L.S.L.H.H.L.L.L.L.L.L.S.L.H.L.U.L.L.L.L.Y.L.L.L.L.L.L.U.U.U.P.P.P.P.U.U.T.U.L.T.T.T.T.T.T.~.T.~.T.~.T.~.T.~.T./.~.T.~.~.~.~././././.~.~.~.~.!././.~.~./.~.~.~.~.^.(././././.`.!.(.(.(._._.{.`.^.^.^._.(.(._./.{._._._._._._._._.}._.}.}._.|.|.|.|.|.'..X|..XdX.X.X@X.X.XdX.X.X.X X.X.X.X.X.X.X|..X X|..X.X.X X.X'..X|..X.X.X.X.X.X'..X.XdX'..X.X.X.X.X X.X.X.X.X.X.X.X.X.X.X@X X'..X'..X.X.X X'..X.X.X.X.X.X.X.X X X.X|..X|. X X X|..X|..X|..X|. X X}.|.}.}.}. X|.|. X.X.X.X.X.XdXdXdXdXdXzXzXzXzXzXxXxXxXcXcXnXnXxXnXnXnXnXnXnXMXnXcXcXcXmXnXMXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXMXmXmXmXmXmXmXmXmXmXmXmXmXmXMXMXMXMXMXmXMXMXMXMXMXMXmXmXMXmXmXnXnXnXxXdXnXcXzXdXdXnXdXdX.XdXdXdXdX.X.X.X.X.X.X|.|.`.`.(.(.(.(.(.(.^.~./.~.~.~.T.T.U.U.U.U.L.L.L.L.L.L.L.H.H.H.H.A.A.H.A.A.A.A.A.h.l.l.h.h.h.g.g.g.g.g.g.g.g.g.g.z.a.a.g.f.a.f.i.f.i.i.s.a.a.a.a.a.a.f.a.a.a.i.a.a.a.a.i.i.i.i.i.i.a.a.a.a.i.k.a.a.a.i.a.a.a.i.a.i.i.i.u.i.u.u.u.u.u.a.u.u.u.u.u.u.t.u.u.u.t.t.t.u.u.t.t.t.r.t.t.r.r.t.r.r.r.r.r.r.r.r.r.r.r.r.E y.t.r.r.r.r.t.r.r.u.t.t.t.t.t.u.t.t.u.u.t.t.u.u.u.u.i.s.u.a.i.a.a.a.z.f.f.f.f.g.g.g.f.g.z.g.h.A.h.A.A.S.S.G.G.L.L.L.L.L.U.P.P.U.T.T.T.T.T.~.T.~.~.~./././././.^.(.^.(.(.^.(.(.(.^.(./.~.(.(.(.(.(.(.(.{.(.^.`.^.^.^.{.(.`.(.{.(.(.|._.^.`._.(.}.}._.|.|.|.|.'.|. X X|.`.`.|.|._._._.|._.|.}.}.}._.}._.|._.|.`._.|.|.|.|. X|. X X|.'. X X.X|..X|.'._. X|.|.'.|.|..X.X|.|.'.'.|..X|.|.|..X.X|..X.X|..X X X X|.@X'.|.|._._._._._._._.{.(.(.^.(.(.(.(.(._.(.(./.(.(./././././.~.~./.~./.T.~.~.~.~.~.~.~.~.[./.T.(.(.~./.^.(.(./.(./.^.(.[.{././././.~.T.~.T.T.P.T.P.U.U.U.L.L.L.L.L.L.S.L.H.S.H.H.H.H.H.A.S.A.h.H.S.S.l.S.S.S.S.h.A.A.h.A.D.A.h.h.l.l.l.k.k.h.h.k.h.k.k.h.k.k.k.f.f.f.f.i.a.a.g.a.a.a.i.a.a.i.i.i.i.i.a.a.i.a.a.a.i.i.i.i.a.a.a.a.a.a.a.a.a.f.a.a.a.a.f.a.a.a.a.a.a.i.i.a.i.i.i.u.u.i.u.a.i.i.u.i.u.i.a.a.u.u.u.u.u.u.u.a.u.u.a.i.i.i.i.u.a.a.u.i.i.E x.d.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.a.a.a.i.t.u.u.u.t.i.u.u.u.u.u.u.u.u.i.i.i.a.a.a.a.i.g.a.g.f.f.z.a.g.f.k.k.f.z.k.a.f.f.a.g.a.a.", "H P L H L H H J H H U Z H H H H H H H H H H H J P Z H P J P J J P P J Y I H P P P H U H H H U K J L U J J P P P S P P P I P P P P P P P P P P S H J H H U P H H H H D Z H D D D L D D D D Z Z Z D Z D Z Z Z Z Z Z B Z C B C Z C C C C Z C C A C A C B B u C C C C C A C C C N B V C N N B B B N C B V V A C C A C Z C Z B C Z Z B Z Z Z Z Z Z D Z Z Z Z D D C D Z Z Z Z Z Z Z Z Z Z Z Z D D D Z H Z L Z Z H Z H D D D D F Z Z D Z Z T Z.S.S.S.L.H.L.L.L.L.S.L.L.H.H.H.H.S.L.H.L.L.L.L.L.S.L.L.L.L.L.L.L.L.L.L.L.P.L.L.L.P.P.P.P.T.U.U.U.T.U.T.T.T.~.T.~.T.T.~.T.T.T.~.T./.T.~.~.T.~.~.T.T.T.~./.~.~.~.^.[.~././.~.(.~.(.~.~.~.~.(././.(.~.(.(.(.(._.^._.^.`.`.^._._._._._._._._._._._.(.}.}.[.}.}.}._.|.|.|.|..X.X X.X.X X.X.X.X.X.XdX.X@X.XdX'.@X.X.X|..X.X X'..X.X.X|..X.X X.X.X.X.X.X.X.X.X.X.X'.@X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XdXdX X'..X'..X.X.X.X'..X.X.X.X.X.X.X|. X X|..X.X X|..X.X.X.X.X|. X|.|.|.|.}.}.}.|.}.}.}. X|.|. X.X.X.XdX'.dXdXdXdXzXzXcXdXxXxXxXxXxXcXnXnXnXxXnXnXnXcXcXnXcXmXmXcXnXcXmXmXmXmXmXmXMXmXmXMXMXmXmXMXmXmXMXMXmXmXmXmXmXmXNXmXmXmXmXmXMXMXNXMXNXfXMXMXMXmXmXmXmXmXmXmXmXnXnXnXcXcXcXcXcXdXdXdXdXdXdX%X@X'..X.X|..X'.|.|._._.(.^.(.(.(./.(.~.~.E.T.T.T.T.T.U.U.L.U.L.L.L.L.S.L.L.H.H.H.S.A.G.G.G.G.j.Z.A.h.A.l.h.h.h.g.k.g.g.g.g.a.g.f.g.a.g.g.a.f.f.f.z.a.k.d.a.f.a.f.a.a.a.a.a.a.a.i.a.u.a.i.i.i.i.i.i.i.i.i.a.a.a.a.z.i.a.z.a.i.a.i.i.i.i.u.a.u.a.a.u.u.u.u.u.i.u.u.u.t.u.u.t.t.u.u.u.t.t.t.p.t.t.t.t.t.r.t.r.r.r.r.y.r.r.t.r.r.r.r.t.t.t.y.r.r.t.r.r.t.E t.t.t.u.t.t.u.t.t.t.u.u.u.u.u.u.i.i.i.i.a.i.a.a.a.i.f.f.f.f.g.f.g.g.g.S.g.h.A.l.A.A.S.G.S.D.H.L.L.L.Y.P.U.T.T.T.U.T.T.T.~.!.~.~.~././.(.(./.^.(.(.(.(.(.(.(.(.(.(.^.(.(.(.^.(.{.^.`.`.`.(.(.^.|.(.(.(.{.(._.^.^.(.`.(.|.[.}.}.|.|.|.|.|.|.|.|.|.|.`.|._.|.|._._._.|._.[.}.}.}.}.}.|.|._.|.|.|.|.|.|..X'.|.|..X|.'.|.|. X|.|.`.|.`.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.'. X X_.}.}._.`._._.(._.(.(.(.(.(.|.(.{.(.(.(.(.(.).(././.(./././.T.~.~./.T./.T.~.~.~.~.~.T.[.(.T.(.~.~././././.^.(./.(.(.{.(.(.(./././.~.~.T.T.T.T.T.U.P.L.U.L.U.S.L.L.S.L.L.S.U.L.H.H.H.H.H.H.S.S.S.S.S.S.S.S.S.S.Z.A.A.A.l.A.z.h.D.g.l.l.l.l.h.h.k.h.k.k.k.k.f.f.f.f.f.k.k.i.a.f.a.a.a.a.a.a.i.a.i.a.i.a.a.a.a.a.a.a.a.i.i.i.i.i.i.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.i.a.a.i.a.t.i.u.i.u.u.i.u.t.E u.u.u.u.i.i.E u.i.u.u.u.a.u.a.u.u.u.a.u.u.i.i.a.E x.u.u.i.E d.i.i.u.i.u.u.u.u.u.i.u.u.u.t.u.u.u.u.u.i.u.u.u.i.u.u.u.u.a.u.a.u.u.u.u.i.u.u.i.i.i.u.s.a.i.a.a.a.a.z.f.f.f.f.f.f.f.g.g.g.g.k.a.h.k.g.f.z.k.z.a.g.", "L L H H H H J H H H H H H H H H Z H H H L H H H H L U J H J J P P J I J J I J P K J L G P H L K J L L J L P P P ) P P I P ) J P P P P P P P H P J H P H H H H H H H Z H H D D D Z D D D Z Z H Z Z Z F Z Z Z Z Z C Z Z C C C Z C Z C C C C C C C C C A B C C C C A N C C C C C B B C B B B Z C C B C C B C C A C D C B Z D Z Z C Z Z B Z Z Z Z G F B Z Z Z Z Z Z Z D Z Z Z Z F Z D Z D Z D D D Z Z L H Z L S L Z D D D D Z Z L Z Z Z T b.S.S.U.S.G.H.L.L.H.H.H.H.H.H.S.H.L.L.L.H.L.H.L.A.U.L.L.S.L.L.L.L.L.L.L.L.L.P.P.L.U.L.P.Y.U.T.U.T.T.U.T.T.T.~.T.T.T.T.T.~.T.~.T.~.~.T.~.~.~.T.T.~.~.~./.T./.~.[./.~././.~.~./.~.~.~.~.~././././.(.(.(._.(.(.(.(.(.{._._.(._._._.(._._.(._._._._._._.|._.}.}.}.}.|.|.|. X|.'.'..X.X.X.X.XzXdXdX.X.XdX.XdX@X X.X.X.X'..X.X.X.X.X.X'..X.X.X.X.X.X.X.X.X.X.X.X.X.X.XdXdX.X.X.X.X.X'..X.X.X.X@X.X.X.X.X.X.X.X.X'..X.X.X.X.X X.X.X.X.X.X.X X X_.|..X X|.@X X X.X|..X.X.X.X|.}. X}.}.}.}.}.}.|.}.|.|.'. X.X.X.X@X.XzX.XcXzXzXzXdXcXxXxXxXdXJXnXxXxXxXnXxXnXnXnXcXmXnXnXnXmXmXmXmXMXMXmXNXmXmXmXMXmXMXMXMXmXmXNXmXmXSXmXmXMXmXmXmXmXmXMXmXMXMXMXMXmXMXMXMXmXMXMXMXmXmXnXnXmXnXnXnXcXcXdXzXdXzXdX.XdXdX X@XdX X.X.X X|.|.|.{.`.`.`.(.(.(.(.(.~.~.~.~.Y.~.P.U.T.L.L.U.L.L.S.L.L.U.S.H.L.G.G.S.S.A.Z.A.A.A.j.G.g.l.l.h.h.h.z.g.k.g.g.g.g.g.g.a.g.d.a.a.a.f.f.a.f.a.a.a.a.a.a.a.a.d.a.a.a.i.i.i.u.u.i.i.i.i.i.i.i.i.a.u.a.a.i.a.z.k.a.a.a.a.i.i.i.i.i.u.u.u.u.i.u.u.u.u.u.u.u.u.t.u.t.u.t.t.t.u.t.t.p.t.p.t.t.t.t.r.r.t.y.t.y.r.r.r.t.t.t.t.r.r.r.r.r.r.r.r.r.t.r.t.t.t.t.t.t.t.t.t.u.u.u.u.u.u.u.i.u.a.t.i.i.a.a.a.f.k.f.f.z.k.k.z.g.h.h.k.A.A.A.A.A.A.H.S.S.H.H.L.L.L.U.Y.U.T.T.T.[.T.~.T.~.T.T.~.!./.~.[.(.(./.(.(.(.(.(.(.(.(.(.(.^.(.(.(.^.|.|.|.(.{.|.{.|.(.(.(.(.(.(.(.(.(.^.`.^.|._._.|._._._.|.|.|.|.|. X|.|._.|._._.{._._.^._.|._.}._.|.|._.`.|.|.|.|.|.|.|.|.|.'.|. X|.|. X X X|.|.|.|._.|.|.|.|.|.|.|.|._._.|.|.|.}.|.|.|.|.|.|.|.|.|.|.'.|. X|.|.|.|.|._._._._.(.(.(.(./.(.(.(.^.(.(.(.(.(./.(.^.(././././.!.~.~.~.T.~.~.~.~.T.~.~.T.~.~.^.T.~.[./.~./././././././.(./.(.(./././.T.^.T.T.Y.U.P.P.P.L.L.P.L.L.L.S.H.Z.K.H.H.H.H.H.H.S.H.h.A.S.S.A.S.S.S.S.A.S.A.A.A.z.A.h.D.h.A.h.g.h.k.l.h.h.f.k.k.k.k.f.k.k.f.f.z.i.k.k.f.a.a.a.f.s.a.a.a.i.a.i.a.a.a.a.a.a.a.i.a.a.i.i.i.a.a.i.i.a.i.i.a.a.i.a.a.a.s.a.a.a.a.i.a.i.a.u.u.i.a.u.u.u.i.u.z.t.u.i.u.u.u.u.u.u.i.u.u.u.a.u.i.u.u.u.i.i.u.a.u.i.i.i.i.u.a.u.u.i.u.u.i.u.a.i.i.u.i.u.u.i.i.u.u.u.i.u.i.u.i.u.a.u.a.u.i.u.u.u.i.u.u.i.i.i.i.f.a.a.a.a.a.a.a.a.g.a.g.f.f.a.h.j.g.j.f.g.f.h.f.f.g.g.z.a.k.k.a.g.", "L L H P U H H H H H J H H Z H H H H H H H H L L L L P P Y K P J P P J I P P L P I L L K J J H U L L L L J P L P P P P P I J P K P P P P P P P P P P H H P H P H H H H H L H L D D D L D H H Z Z F Z D Z Z C B D Z Z C Z F C F C C C C C A C C C C C C C C C Z C C C C C C C B C N B B C B B B B C B C B A B V C C C C C C C A Z Z C D D Z Z Z C Z G Z Z D D Z Z Z Z Z D Z Z Z Z Z F Z D Z F D D H Z H S Z Z L Z D D D Z Z Z Z Z Z Z H T S.L.L.H.L.H.G.H.H.H.H.Y.H.H.H.H.H.H.H.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.P.P.P.U.U.U.P.P.T.U.T.U.U.T.T.T.Y.T.T.T.T.T.T.T.T.T.T.~.T.~.T.~.T.~.T.[.~.T.T./.~.~.~.!./.~././.~.~.~.~.~.!.~./.!./.(./.(.(.(.(.(.(.(.(.^.(.(.(._._._._._._._._.[.|._._.|._._._._.}.}.|..X|..X.X.XdX.X.X.XdXzX.XdX#XdXdXdX.X.X'. XdX.X.X XdX.X.X.X.X.X.X.X.X.X.X'..X.X.X.XdX'. X.X.XdX'..X.X'..X.X.XdX'..X.X.X'..X.X.X.X X.X|.|..X X.X X.X.X.X.X.X.X X@X.X.X X@X.X X.X|. X X.X.X.X X|..X|.}.}.}.}.}. X}.}.}.}.}.|.|.|..X.X.X.X.X.X.XzX.XzXzXcXcXvXcXxXxXcXnXxXcXvXnXxXnXcXnXnXnXnXnXnXnXcXmXmXmXMXMXMXmXMXmXMXmXMXmXMXMXmXSXfXmXmXmXmXmXMXMXMXmXmXmXmXmXMXMXMXMXNXfXMXMXmXMXMXMXmXmXmXJXnXnXnXnXcXvXnXzXcXvXzXzX#XdXvX.XdX X.X.X|.|.|.|._._.^.|.(.(./.(.^.~.~.~.T.~.P.Y.T.L.U.L.L.L.L.L.S.L.L.H.H.H.H.G.A.S.h.A.A.A.A.A.j.h.l.l.h.h.z.l.z.h.g.g.a.g.g.z.z.a.j.f.i.g.a.a.a.a.a.a.a.a.a.a.i.i.i.i.i.i.i.i.i.i.u.u.i.u.u.i.i.i.a.u.a.a.a.k.a.a.i.a.a.a.a.i.i.i.i.u.i.u.i.u.i.u.i.u.u.u.u.u.t.u.t.u.t.u.u.t.t.u.t.u.t.t.t.t.t.t.t.r.t.r.t.r.r.r.r.t.t.r.t.t.r.r.r.r.r.r.r.t.r.r.t.t.t.t.t.u.t.u.t.s.u.t.u.u.s.u.u.u.i.i.a.i.a.a.a.a.i.f.f.f.k.k.k.z.l.h.h.g.h.A.h.A.A.A.S.S.S.G.L.L.L.U.U.Y.T.T.T.T.T.T.T.T.~.!.~.~././././.(.[.(.(.(.(.^.{.(.^.(.(.(.(.`.(._.^.^.`.|._._._.`.^.(.(.(.(.(.(.(._.(.^.`.(.|._._.`.|._.|._.|._.|._.|._.|._. X`._._._._._._.(.}.|._._.|._.'. X'.|..X X.X'.|.|. X|.'. X|.|. X}.}.|._.|._._._._.|.|.|._.|.|._._.|.|._.}.|.|._._.|.|.`.|.|.|.|.|.|._.|._._._.^.(.(.^.(.(.(.(.(.(.(.(.(.(./.(.(./././././.~./.~.~.T.~.~.T.~.T.~.~.T.T.(.~.~.T./.~.~././././.(././././.(././././.^.R.T.T.Y.T.L.Y.P.P.K.P.P.L.L.L.L.L.U.L.S.H.S.H.H.H.H.H.H.S.F.S.S.S.S.l.S.S.S.A.A.A.A.A.h.A.g.A.h.g.l.l.h.l.h.f.h.f.k.k.f.k.f.f.f.k.i.k.i.k.f.a.a.a.a.i.a.a.i.i.i.a.d.a.f.i.d.a.a.d.a.i.i.i.a.i.i.i.i.i.i.i.a.i.i.i.s.a.s.a.i.a.i.i.i.a.u.i.i.u.u.u.u.i.u.u.E a.u.s.u.i.i.u.i.u.u.i.u.a.u.a.u.a.u.a.u.i.i.u.i.i.u.i.i.i.i.i.i.u.i.i.u.i.u.i.i.i.s.u.i.u.u.s.i.i.i.p.i.i.i.i.u.a.u.a.i.i.u.a.i.i.a.a.i.i.a.a.a.a.a.a.a.a.f.f.a.g.a.z.g.f.f.g.f.g.g.g.g.l.h.k.g.g.g.z.k.a.a.a.", "H J L L I H F J L L H H H H H H H H H H H H H L L L H P P L P P P P Y J P P J I H J H H J G H P L J L J J P J P ! P P P I I J I P J P P P H P H P H H P P U H H Z L Z L Z D Z D D L D D L Z L Z Z D Z D Z Z B Z C Z C C C Z C C B C C C C C C B C C C C D V C C C C C C C C B B C C N B B B B N C C B C C C C C C C C C C Z Z B Z Z Z Z Z Z D D Z Z Z G Z Z Z Z Z Z Z B Z Z G Z Z Z Z D Z D D D H Z Z H Z H Z Z F D D D H D Z D Z Z J T Z.G.G.H.L.G.H.H.H.H.H.A.H.H.H.H.H.L.L.L.L.L.L.L.S.L.L.L.L.L.L.S.S.U.D.L.L.P.P.P.P.P.Y.P.U.T.T.T.T.T.T.U.U.T.T.Y.T.U.T.T.T.T.~.T.~.T.~.T.~.T.~.T.~.~.~.T.!.~.~./.~./.~.~./.~.~.~.!.~./.~.!././.(.(.(.(.(._._.(.(.(.(.(.{.(._.(._._._._._.`.`.(._._.|._. X}.}.|.'..X X.X.X.X.XdX.X@X.X.XzXzX'.zXzXdXdX.XzX.XdX.X.X'.@X.X.X.X X.XdXzX@XdX.X@X.XdX.X.XzX.XdX.X.X.X.X.X.XdX@X.X.XdX XzX'.dX X.X X X.X.X.X X.X.X X X.X.X.X X.X.X.X X'.|..X|. X.X|..X.X X.X X.X.X.X.X X.X|.}.}.}.}.}.}.}.|.}.|.|.|.|..X X.X.XzX.XzX.XzXzXzXdXnXxXxXxXnXcXnXxXxXnXnXJXzXxXmXnXnXnXnXnXnXcXmXmXmXMXMXMXMXmXNXMXMXMXSXMXMXmXMXSXfXMXmXmXmXMXMXMXMXmXmXMXMXMXMXSXfXMXSXMXMXMXmXmXMXmXmXnXnXnXnXnXxXcXcXcXdXzXzXzX.XdXdX.X.X X'..X X|.|.|.(.{.{.(.(.(./././.~.~.T.~.Y.Y.U.U.U.L.U.L.L.H.H.L.L.H.S.H.H.H.H.S.S.A.A.A.A.A.h.h.h.l.h.h.h.h.l.l.g.h.k.g.g.g.g.a.k.a.i.g.d.a.f.a.a.a.a.a.a.a.i.i.i.i.i.i.i.u.u.i.u.u.u.u.t.a.u.s.i.i.s.u.s.a.a.a.a.a.a.a.a.a.i.a.i.i.i.u.u.i.i.u.u.u.u.u.u.u.u.t.u.u.t.t.u.u.t.u.t.u.t.t.s.t.t.t.t.t.t.r.r.t.r.r.r.r.t.t.E a.r.t.t.r.r.r.r.r.t.r.t.t.t.t.t.t.u.t.u.t.t.t.t.u.u.u.u.u.s.i.s.i.i.a.a.a.k.a.k.k.k.k.g.h.h.h.z.h.h.G.j.G.A.Z.h.S.D.H.H.L.L.L.U.U.U.T.T.T.T.T.T.T.Y.~.T.~.~.!.!./.(././.(.(.^.^.`.(.(.^.(.`.(.(.(.^.|._.|.|.^._.^._._.`.^.(.`.(.(.(.(.(.(.(.`.^.|._.(.`.(.`.(._.|.{._.|._._.|.|.`._.|._._._._._._._.|.|.{.|.|.|.|. X|. X|. X|.'.|.'. X|.|.|.'.}.|.}.}._.|._.|.^.`.|.[.|._._._.|.|._.|._.|._.|.|.|.|.}.|._.|.|.|.|.|.|.|._.[._.(.(.(.{.(./.(.(.[.(.(.(./.(././.(./././././././.T./.~.T.~.T.~.T.~.~.T.~.T.T.~.T.~.~.~.~.~.~././.~.~.(./.(././.).~.^.~.~.T.T.Y.P.U.P.P.L.L.P.L.P.L.L.L.U.P.S.H.H.H.H.G.H.S.S.S.S.l.S.S.S.S.S.S.D.G.S.S.z.A.h.A.l.h.h.D.k.l.l.l.z.g.g.z.f.a.f.f.k.f.k.f.d.f.i.z.a.a.f.a.a.a.i.a.a.i.d.a.i.a.d.a.i.a.z.i.i.i.i.i.k.a.a.a.i.i.i.i.i.i.i.a.s.s.u.s.i.a.i.i.i.u.i.u.u.i.u.u.u.u.u.i.i.z.u.a.a.u.i.a.u.u.i.i.u.u.u.a.u.a.u.u.u.a.u.u.i.i.u.u.i.u.u.u.u.a.u.i.i.u.i.d.i.i.u.i.i.u.i.i.u.i.i.i.i.i.i.i.i.u.a.u.a.i.i.a.i.i.i.a.a.a.a.a.a.a.a.a.f.f.a.a.f.a.g.z.f.f.g.g.h.k.k.g.k.l.a.f.h.g.g.f.g.g.f.g.z.", "L U H L H J H H J G H F H G H H H H H H H L H P H U H P P P P P P J P P P P L J P H J J J J J J L J U J L P P ) P P J P I J I P P J P P H U P P P H P H H H D H H H L D L H Z D D D Z D Z L Z Z D Z D D Z Z D Z Z C D C C C C Z C D C C F C C C C B u C C C C D C C Z C C B C C C C C A Z A Z C B B C B C C C C A C Z C C C C D D B Z Z C Z C D D G Z Z Z F Z D Z Z Z G Z Z C C Z Z D D Z D D D Z L Z Z H L S Z D D D Z D Z H Z F Z G G Z.S.H.L.H.L.S.H.H.H.H.H.H.H.H.H.H.H.H.H.H.S.S.L.L.L.L.S.L.L.L.L.L.L.U.L.P.L.P.P.P.P.Y.Y.T.U.T.T.T.T.T.Y.T.I.T.Y.T.T.T.T.T.T.T.T.T.~.T.~.T.~.T.~.T.T.T.^.~.~.~./.~.~.!.~.~.!.~./.~.!.~././.(.(.^.(.(.(._.].(.(.(.(.(.(.(._._._._._._._._.(.|._. X_.|.[._._.|.}.|..X X.X.X.X.X.XdX'.dX.XdX.XzX.X.XdX.X.XzXzX.XdX.XzX'.zX.X@XdXdX'..X.X'..X'.dX.X'.dX'.'.@X.XxX.X.X.X'. X.X'.dX@X.X.X'..X'..X X.X.X X.X.X|..X.X.X X.X X X.X.X.X.X X.X.X.X.X.X.X|..X|.|..X.X.X.X|.|.|.|.}.|.}.}.}.}.}.}.|.|.|.|.|. X.X.X.X.X.X.X XzXzXzXcXcXxXxXxXxXxXxXxXcXnXnXxXnXxXnXnXnXnXnXnXnXNXmXMXmXMXMXMXMXMXMXMXMXMXMXMXmXmXSXMXMXMXSXMXMXMXMXmXmXmXMXMXMXMXMXmXNXMXMXMXMXmXmXMXmXmXnXMXnXnXnXnXxXvXnXdXzXvXdXxX.X.X.X.X.X X X X X|.|.|.`._.(.(.(././././.~.T.~.Y.T.T.Y.T.L.L.L.L.L.L.H.H.H.L.H.H.H.H.S.S.G.A.G.A.A.j.h.h.h.h.h.h.f.h.k.h.k.k.k.g.a.g.a.g.k.g.j.i.a.a.a.a.a.a.a.a.i.i.i.i.i.i.p.i.u.u.i.i.u.i.s.u.u.u.u.u.i.s.u.i.a.a.a.a.a.a.a.k.a.a.a.a.a.a.i.u.i.u.u.i.u.u.u.u.u.u.r.u.u.t.t.u.u.t.u.t.u.t.u.t.t.t.t.t.y.t.r.t.r.r.r.t.r.t.t.t.t.u.t.t.t.r.r.r.r.r.t.r.t.t.u.u.t.t.t.u.t.s.u.u.u.u.t.u.u.u.u.u.s.t.i.a.i.a.a.f.i.d.g.k.k.k.g.z.z.l.g.g.S.h.h.h.A.z.G.S.A.L.H.L.L.L.U.T.T.T.T.T.~.T.~.~.T.~.~.~./.~././././.(.(.(.(.(.(.|.^.^.(.`.^.`.(.(.`.`._.`.|.`.|.{.|.|.^.(.(.(.(._.(.(.(.^.^._.|.`.{._.|._._.}.|._.|.|.|.|.`._._._._.`.(.(._.(._.|._.|.|..X.X X.X.X|.'.|.|.|..X|.'. X|.}.}.}.}._.|.[.}._.|.^._.{.|.|.^._.[.(._.|.{.|.|.|._._.}.|.|._.|._.|._.|._.}.{._._.(.(.^./.(.(./.(./././.(./.(././././.~././.~./.~./.~.~.~.~.T.T.T.T.T.~.T.T.T.T.~.~.T.~.~.T.~.T./.~.~.~.(.~.^.^.[.~.^.~.T.~.T.Y.Y.P.P.Y.L.P.P.P.L.L.L.L.S.L.U.K.H.H.H.H.H.S.S.S.A.S.S.A.D.S.A.S.A.A.S.S.A.A.A.h.h.h.A.h.h.g.l.k.g.g.z.k.f.f.f.f.f.f.a.f.f.i.f.f.a.a.a.a.a.i.a.a.a.i.i.a.a.a.a.a.k.a.i.k.i.k.k.i.i.i.a.i.i.i.i.i.i.s.i.u.i.i.i.i.s.i.i.i.i.i.u.i.u.i.u.a.u.i.u.u.u.s.u.E a.i.E i.i.i.a.u.u.u.a.u.a.u.a.a.u.u.i.u.u.u.u.i.a.u.u.a.u.u.i.i.i.a.a.a.i.i.i.s.i.i.s.i.i.i.i.i.i.i.i.i.i.a.a.u.a.a.i.i.i.i.a.a.a.a.a.a.k.k.a.z.a.z.f.g.a.z.a.k.g.f.f.g.a.h.h.k.h.l.h.h.g.g.g.a.k.k.z.f.a.", "L H H P H H P H J J L L Z J Z L L H Z L H L L L J J P P J P P P P J P P L P L J Y J H H J J K Y J L P J P L P P L P P L P K H P P J P J P H P H J P H H J H H H Z Z H Z H J Z H H H Z L H Z L Z Z F Z Z Z Z Z Z Z C B Z C Z C Z B C C Z B C C A F C Z F C C B C C C C C C A C C B C C Z B C C N B B B C B Z B B C C C B C B C D A Z Z Z Z Z Z Z Z A Z D Z D C D D F B G Z Z Z Z Z Z F Z Z G Z Z Z Z G Z D D Z D L Z D Z D Z Z D D Z Z G b.D.S.H.H.H.H.G.A.H.S.H.H.G.H.H.H.L.L.H.S.U.L.S.H.L.L.U.L.L.L.L.L.L.L.L.L.U.L.U.P.P.U.P.T.T.P.Y.T.Y.P.T.T.U.T.U.U.T.U.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.[.T.!.~.~.T.~.~.T.~.~.~.T.~.(.~.~.(./././.~.(.(.(.(.(.(.(.(._.(.(.(.(.|.|.^.(._._._._._. X_.}.}.}.}.|._.|._. X.X.X.X.X@X.X.XzXxX.X.XdXdXzXzXzXzXzX@XdXzXdX.XdXdXdXdX.X.X.XzX.XzX.X XdX@X'..X.XdX.X.X.X.XdX.X.X.XdX.X.X'.dX X.X.X.X.X.X.X.X.X.X.X.X.X.X.X X.X.X.X.XdX.X'..X.X.X.X|..X.X'.|..X X.X.X|..X.X.X|.|.|.|._.}.}.[.}.}.}.|.`.|. X|.|..X.X.X.XzX'.zX.XdXdXcXcXxXxXxXcXcXcXcXcXcXcXcXcXcXnXnXnXcXcXnXmXnXmXMXMXMXNXMXMXMXMXMXMXMXMXMXDXMXSXmXmXMXMXMXMXSXfXMXmXmXMXMXMXmXmXMXMXMXMXMXMXMXMXmXmXmXmXmXnXxXmXxXxXxXcXxXdXzX.XzXzX@X.X|..X|.`.|.|._.`.^.`.(.(.(.(././.~.R.T.~.I.T.T.Y.L.L.L.Y.L.L.H.L.L.L.H.H.S.H.G.S.S.S.S.A.A.A.h.A.h.h.f.z.h.g.g.g.g.l.k.k.k.k.g.h.g.f.f.k.i.z.i.f.a.a.a.a.a.i.i.i.i.u.i.i.u.i.u.i.u.u.u.u.u.u.u.u.u.s.i.p.s.s.i.i.i.a.a.a.a.a.i.i.f.i.i.i.i.i.i.u.i.u.u.u.u.u.u.s.t.u.u.r.p.t.u.t.t.p.t.u.t.u.t.t.u.t.r.r.t.r.r.t.t.t.t.t.t.t.E i.t.E i.t.E i.t.E t.t.u.r.t.t.t.u.t.u.u.u.u.u.u.u.u.u.u.u.u.i.a.a.i.i.a.a.a.i.a.z.d.z.z.k.k.z.h.h.h.g.h.h.h.A.A.A.G.G.G.G.L.L.L.L.U.T.U.T.Y.T.T.!.T.T.~.~.~.~.~.~./././.^.{.(.(.(.(.(.`._._.(.(._._._.|.|._.|.|.|._.{._.|.^.(.(.(.(.^.(.^.|.(._.`._.`._.(.(.`._._._._._.|.|.|.`.`.`.`.`.(.^.(.(.|.(.`.|.|.|.|.|..X|..X|.|.|.|. X|. X X X|.|.}.|._._._.{.^.(.|.^.(.(.^._.(.(.(.(.(.|.^.`.(._._.}._.}._.}.{._._.'._._._._._.).(.(.^./.(.(./.^.(././././././.!./././././.~.~./.~.~.~.T.T.~.T.~.~.T.~.T.T.~.T.T.T.T.T.T.~.~.T.~.[.~.~./.~.~./.~.~.~.T.~.T.T.T.T.U.L.R.K.L.L.U.L.L.K.L.L.L.L.H.G.H.H.H.S.H.H.H.H.A.S.H.G.Z.S.A.S.S.G.A.A.S.A.h.Z.j.h.A.l.A.z.h.h.h.z.d.z.h.g.k.k.f.f.f.f.i.d.a.a.a.a.a.a.a.a.a.i.a.x.E a.a.i.z.a.a.a.i.i.f.a.k.i.a.i.i.i.s.u.i.i.u.i.p.i.i.i.u.i.i.i.u.i.u.i.i.u.i.i.u.i.u.u.i.i.i.i.u.u.u.u.u.u.u.i.u.i.u.u.u.i.u.i.u.i.u.u.i.u.u.u.u.i.i.i.u.a.a.u.i.i.d.u.u.d.a.a.a.a.a.i.a.a.a.i.a.a.a.i.i.i.i.a.a.a.a.a.i.i.a.a.z.i.i.a.k.i.k.a.g.g.g.k.g.a.z.g.f.j.g.g.f.g.z.h.h.z.g.z.z.g.h.g.g.f.k.k.g.f.f.", "J H J H H H H H Z J L H J Z P S L Z H L P H L U J J J J K P P P P P P J L P L J H I J H L H J H J P P K J P P P P P J P P P P P J P P J P J H J J J J H H H H H H J H H H Z D D Z L H Z S Z Z Z Z Z D C Z Z F V Z C D C C C D C C C C C C C C C C A C C C Z C C Z C Z C C C C C C C B N Z B C C C B C B C B B Z C B C C C D C Z Z Z C Z Z Z Z Z F Z Z Z Z Z F Z Z Z Z Z Z D B Z Z G Z Z Z Z Z Z S Z Z L D D D D D D D D Z D D Z Z Z H G b.Z.G.L.L.L.H.G.H.H.S.S.G.H.H.S.H.H.H.H.H.S.U.L.S.L.L.S.L.L.L.L.L.L.S.L.L.L.L.U.P.P.U.U.P.T.T.T.T.T.T.T.P.T.U.Y.T.U.T.U.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.T.~.~.~.~.T.[.T.~.~.~.~.(.~./.(.(.(.(.(.(.(.(.(.[.(.{.^.(.(.^.^.|.^._._._._._._.}.}.}.}.|._.|.|..X.X.X.X XdXzX.X.X.X.XxXzXdXdX.X.X.XzXzXdXdXdXdXdX'.dX'.dX.XzX.XzX.XzX.X.X'.zXzXdX.XdX X@X.X.X'..X.X.X.X.X.X.XdX.X.X.XdX.X.X.X.X.X.X.X|.'..X.X.X.X.X.X.X.X.X'.|..X|.|..X|..X.X|.|.|..X|..X|.|.|.|._.|._.}.}.|.}.|.}.|.`. X_.|.|.|..X.X|.'..X@XdXxXdXdXcXxXxXcXxXxXxXxXcXcXcXcXcXcXcXxXxXnXcXnXnXnXMXMXMXmXMXMXMXMXMXMXSXMXMXMXMXMXMXMXMXSXMXMXMXmXNXmXdXMXMXMXMXSXMXMXMXMXMXMXMXMXmXmXmXnXMXxXnXmXxXnXnXxXxXzXzXxX.X.X.XdX.X.X.X|.|.|._._.`.`.(.(.(././././.~.~.T.T.T.T.T.U.U.U.L.L.L.L.L.H.Z.H.L.H.G.G.S.S.S.S.Z.A.A.A.D.A.l.k.h.h.h.k.g.g.g.z.k.k.k.k.g.a.f.f.k.z.i.i.d.i.a.a.a.a.a.a.i.i.i.i.r.i.i.u.u.u.u.u.u.u.u.u.u.u.p.i.p.u.i.i.s.u.i.a.a.a.a.a.a.a.i.a.i.i.i.i.i.p.i.u.u.u.u.u.t.t.u.u.u.s.t.t.t.u.t.t.u.t.u.t.u.t.t.t.t.r.r.t.r.t.t.t.t.t.t.u.u.t.t.u.t.t.t.t.t.t.t.t.E u.t.t.t.t.u.u.t.u.t.u.u.u.u.u.u.u.u.u.i.u.i.a.i.i.a.z.i.k.k.k.k.k.k.l.h.h.l.G.h.A.A.z.A.A.A.G.L.H.L.H.K.Y.U.U.T.U.T.Y.T.~.T.~.~.T.~././.~./././.^.(.(.(.(.(._.(._.^._._._.|._._._._.{.|._.|.|.|._._.|._.(.(.(.(.(.{.^.(._.(.(.(._./.|._._._._.|._._.|.|._.|.(._._._.^.^.(.|.^.`._. X|..X'. X|.|.|.|.|.}.|. X}.|.|.}.}._._._._.`.(.(.(.(.(.(.(.(._._.(.(.^.(.`.`.`.|._.}.}._.}._.}.|.|.`._._._._.(._.(.(.^.(./.(./././././.^.^./././././.^.~.~.~.~.T.~.(.T.T.~.T.~.T.T.T.T.T.~.T.T.~.T.~.~.~.T.~.~.~.T.!./.~././.~.~.~.~.~.T.~.T.T.U.Y.R.L.L.U.L.L.L.L.L.L.L.L.L.H.L.A.S.G.S.S.G.A.H.A.S.A.A.S.S.S.S.A.h.S.A.G.A.A.j.G.A.h.A.h.h.h.l.h.l.g.z.k.k.d.f.f.k.k.k.i.i.z.z.i.a.a.a.i.i.i.a.a.u.x.a.a.i.a.a.a.a.z.z.i.a.a.a.i.i.u.u.s.i.u.i.s.i.i.p.i.u.u.i.i.u.i.i.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.i.i.u.u.i.u.u.i.i.u.i.u.i.i.u.i.u.i.i.u.u.i.u.i.i.u.u.a.k.E u.a.i.a.a.a.i.a.a.a.a.a.a.a.a.f.a.a.a.a.a.a.a.a.a.a.a.a.s.i.a.a.d.i.i.z.i.k.k.k.k.z.a.z.k.a.z.f.g.g.g.f.g.g.g.g.h.k.g.z.g.g.g.g.k.g.g.f.k.f.f.f.", "H J H H P H H P L Z H J Z Z J Z L H L H H I H H J L L I P P H H P P J H P P J J H K U K L L J J J J J P P P L P L P I J P P P P P J J P P J P H P P H H P H H H H H F H H D D H H Z Z L L L Z Z Z Z D D Z Z D Z Z C D B Z F B C C C C C C C C Z C C C C C C Z C C C C C C C C C C N C C C N B Z B C B C B C Z B C C C C C B Z Z Z C C Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z G G Z Z Z G Z C L Z Z H Z Z D D D D Z D D Z D D D D D T Z.S.S.S.H.H.H.H.H.S.S.S.H.H.L.H.H.H.H.U.S.L.S.L.L.L.L.L.L.H.L.H.L.L.L.L.L.D.L.P.U.U.T.P.T.T.T.P.T.T.P.T.U.T.U.Y.T.T.T.U.P.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.~.T.~.~.~.P.T.~.T.~.^.T.[.~.(.~.~.(.(.(.(.(.(.(.(.XX(.(.[.(.(.(.(.|.^._.{._._. X}.{.}._.'.|.|._._._. X'..X.X.X'.dX.X.XxXxXzXzXdXdXxXzXzXzXdXzXdX.XdX@XdXzXzXxXdX.XzX.XzX@XfXdXdXdX.X'.xX@XdXdX.X.X'.dX'.@XdX'..X.X.X@XdX.X.X.X.X'..X.X.X.X.X.X.X X X.X X X.X.X.X.X.X.X.X.X|.|..X X'. X.X.X.X|. X|.|._.|.|._.}.}.}.}.}.}.|.|.|.|.|.|.|.|..X.XdX.XdXdXdXdXdXcXdXxXxXzXxXxXxXcXcXcXcXxXnXnXnXnXnXnXnXnXnXmXcXMXmXmXMXMXSXmXmXMXMXSXMXMXMXMXMXSXMXMXMXMXmXMXMXSXMXMXNXmXMXMXMXmXMXMXMXMXmXmXmXmXvXnXnXnXnXJXzXnXxXxXzXzXzX.XcX.X X.X.X|.|.|.|.|._.{.`.(.(.(././.E.(.~.T.^.T.T.T.T.T.U.L.L.P.S.L.H.L.L.H.G.H.D.S.S.G.S.z.A.A.A.A.z.h.l.h.h.h.g.g.g.g.z.a.k.k.k.d.i.f.f.f.i.a.a.a.a.a.i.i.a.i.i.i.i.i.u.i.a.u.i.u.u.u.u.u.t.s.t.u.u.u.u.u.u.i.i.i.i.i.u.u.i.a.s.i.a.a.a.a.a.i.i.p.u.u.u.u.u.u.u.u.u.t.s.u.t.u.r.t.p.t.t.u.t.u.t.u.t.u.t.t.t.r.t.r.r.r.t.t.t.i.t.t.u.u.t.t.u.u.t.u.t.t.t.t.E u.t.t.u.t.u.t.u.u.u.u.u.u.u.u.i.u.u.i.u.i.i.a.i.k.f.i.k.k.d.k.k.h.l.h.j.h.A.A.A.A.A.A.A.A.G.J.H.H.S.L.L.L.U.U.Y.U.T.T.T.T.T.T.T.~.~.~.~./.~./.(./.(.(.(.(._.(._._._._.|.|._._.|._.|.|._.|._._.}.}.}._._._.(.(.^.|.(.(.(.^.(.|.(.(.(.(._._._._.|._.{.|.|._.`.`.{._.^.^.|.{.^.|._.|.|.|..X|.|.'.|.|.|._.}.}.}.}.}.}.}.}._.^.`.(.^.(.(.^._.(.(./.(.(.(.(.(.`.^.`.(._.|._._.}._.}.}.}.|._.(.`._._.(.(././.(././././././././././.^././././.^.!.~.~.~.T.~.~.T./.T./.~.T.T.T.T.T.T.T.T.~.~.~.T.~.~.~.T.~.~.~.~.~.~.~.^.~.{.U.T.T.~.T.T.Y.U.U.L.L.L.U.U.L.L.L.L.L.L.A.H.H.H.H.H.H.G.S.S.S.S.A.A.S.A.S.S.S.H.S.A.G.A.A.A.A.A.A.h.h.h.h.l.l.h.l.h.g.h.k.g.f.f.g.f.f.f.d.i.i.k.i.a.a.a.a.a.a.a.i.a.d.i.a.a.a.a.z.i.z.i.i.a.a.a.a.a.s.i.i.i.u.i.u.i.u.u.i.u.i.t.i.u.i.u.u.u.i.u.u.u.i.u.u.i.u.i.u.u.u.u.p.u.u.u.u.u.u.u.u.u.i.u.u.i.u.i.u.i.u.i.u.u.u.E i.i.E u.i.i.i.a.a.a.a.i.d.a.a.z.i.z.a.i.i.a.a.i.a.a.k.d.a.a.a.a.a.k.i.d.a.f.i.f.f.k.k.a.z.k.z.a.g.z.a.f.g.g.f.g.g.g.g.g.k.h.g.l.l.l.g.g.l.g.g.g.f.f.k.f.f.", "J H J J H H H H H J H Z J J L L L L H L J H J H P L P K J P P P P P J I L P J J H H H I L H J J L J J L L P K P H I J P J L P L H J P P L L L L Z L Y P H H H H Z H H H H H D D Z H H Z Z Z Z L Z F Z D Z D B Z Z Z C Z C Z Z B D A C Z Z C C C C C Z C C C C Z C C Z C C C A C C C C C N C N C C B C B B B B C B C C C C Z C C D B Z Z B D B D Z Z Z Z Z F Z Z C D Z Z Z Z Z Z Z Z Z Z Z Z Z Z G Z L Z Z Z Z D H D D Z D Z D Z H Z Z D G Z.A.D.L.D.H.G.H.A.L.H.H.H.H.H.H.H.H.H.S.U.U.S.L.L.H.L.G.L.L.L.L.L.S.H.L.L.L.U.L.P.P.P.P.T.P.Y.T.P.P.T.Y.U.T.U.U.U.I.U.T.P.T.U.T.T.T.T.T.T.T.T.T.T.T.T.~.~.T.T.T.T.T.^.~.T.~.~.T.~.~.T.~.~.(.~.~.(.(.(.[.(._.{._.(.(.(.(.^.(.(.(._._._._._.}.}.}.|.}.}._.|.|.'.'..X.X.X.XdXdX.X.X.X.X.XzXzXzXdXzXzXzXzXzXzXzXzXzXzXzXzXzXdX.XvX.X.XdXdXdXdXzX.XzX X.XdXdX.X.XdX.XdX'. X.XdX@XcXdX.X.X.X.X.XdX.X@X.X.X.X'.'..XdX.X@X.X.X.X.X.X.X.X|..X'.|.|.|.|.|.|.|.|.|.|.|._.}.|._.}.}.}.}.}.|.}.|.|.|.|.|. X|. X X.X.X.X'.dXdXxXxXdXcXzXvXzXzXxXxXcXcXcXcXcXdXnXnXnXnXnXnXnXnXnXmXMXmXmXDXMXfXNXmXMXMXMXMXMXMXMXMXMXMXMXMXSXmXMXSXfXMXMXMXmXMXMXMXNXMXMXmXmXmXmXmXmXnXnXnXnXxXxXcXcXxXxXzXzXcX.X.XzX.X'..X X|.|.|._.`.`.(.(.(.(././.~./.T.~.T.T.T.T.U.U.U.U.L.L.L.P.L.H.H.H.H.G.G.S.A.G.A.A.A.A.g.A.h.h.l.l.g.g.g.f.f.k.a.a.k.k.k.a.z.f.f.f.g.a.a.a.a.a.a.a.i.a.i.i.s.u.u.i.u.u.u.u.u.u.u.r.u.u.u.u.u.t.p.u.u.i.u.i.i.i.s.i.i.i.i.i.a.i.a.i.a.i.i.i.i.u.u.u.i.t.u.u.u.t.t.t.t.t.u.r.u.t.t.u.t.t.u.t.u.t.t.u.t.r.r.r.t.r.t.t.t.t.r.p.u.E u.t.E u.E u.t.t.t.t.E x.t.t.t.u.u.i.E u.u.u.u.u.u.u.u.i.i.a.s.i.i.i.i.i.k.i.a.d.k.k.k.k.h.z.S.h.g.A.A.A.A.A.S.A.A.S.H.H.H.H.L.H.L.I.U.U.U.T.T.Y.T.~.~.T.T.~.T./././.(.(./.(.(.(./.(.(._.`._.|._._.|.|.|.|._.|.|.|.|.}.}.}.[._.(.|._.|.(.|.[.(.(.(.(.|.(.`.(.^._.^._.[.(.{.|._._.^.(.`._.|.`.(.|.`.`.|._.|.|.|.|.|.|.|.|.|.|.}.}.}.}.}.}.}.}.`.`.(.(.(.(.(.(.(.(.(.(./.(.(.(.(.(.(.`._._.`.^._._.}._.}.}._._._._.(._.(.^././././././.~././././.!./.E./././.!.~.[.~.~.T.~.T.~.T.T.T.T.T.T.T.T.T.T.~.T.T.T.T.~.T.~.T.[.T.[.~.[.T.T.~.(.E.XXT.XX~.~.T.T.U.Y.T.U.U.U.L.L.L.U.K.L.U.L.L.L.L.H.H.H.Z.H.S.S.S.S.A.G.A.S.S.A.S.S.A.S.A.A.A.G.G.A.A.A.A.A.A.h.l.h.l.l.h.h.h.k.g.g.f.f.f.f.k.i.z.i.i.a.a.a.a.a.i.a.a.i.a.a.a.a.a.a.a.a.d.a.a.a.a.a.i.i.a.u.i.u.u.i.i.s.s.u.i.u.i.u.u.u.u.u.u.u.i.u.u.u.u.u.i.u.u.u.u.u.u.u.u.u.u.p.t.u.u.u.u.u.u.u.u.u.u.i.u.i.u.i.u.i.a.a.a.i.u.x.a.x.i.i.a.i.a.a.d.x.a.a.a.i.k.a.k.i.a.a.f.i.k.i.i.f.a.z.a.a.z.i.k.z.i.f.f.f.f.z.k.h.k.g.z.g.g.g.k.k.g.g.g.g.g.g.g.g.l.l.z.g.l.g.z.k.f.g.g.g.k.f.d.k.", "J J J L H H H H H J Z H Z H H L H K L L H H P J L J J H H I P P P J P J K P L P L P J H J J J L Y K J J L P J J J P J K L J P P P L K L P J H J L L H H L Z H H L Z H D H Z Z H S Z L L H Z Z H F D Z D Z Z Z Z Z Z Z C C C C Z C C C C C C C C A C B C B C C F C C Z C C C C C C C C N N C N B B C C B C B C B C B C C D Z C D D C Z A C Z C D A F Z Z Z Z Z Z D Z Z Z Z C H Z Z Z Z G Z Z Z D Z Z Z Z G Z D D D D D Z D Z Z H Z H D D D Z.L.H.H.H.H.H.S.H.H.H.H.H.H.H.H.H.H.D.H.G.L.L.L.Z.L.L.U.L.L.L.L.G.L.L.S.L.S.L.L.P.U.U.Y.P.P.P.P.T.T.U.U.Y.I.I.T.I.T.I.P.T.P.T.T.T.T.T.T.P.T.P.T.U.T.T.Y.Y.T.T.Y.T.T.T.T.T.T.T././.~.T.~.~.^.(./.(.(.(.}.(.(.(.(.(.(.(.(.(.(.(.^.|._._._._._. X_.|. X}.|.|.|.|. X.X'.dX.X.XzX.XzXzXxXzXdXxXcXcXzXzXzXdXzXzXzXzXzXzXzXzXzXzXdXxXxXdXdXzXdXzXdXdXdXdXdX.X'.dXdXdXdX.XdXdX.X'.zX.X X@X.X.X.XdX.XdX XdX X.X'..X.X@X.X.X.XdX@X.X.X.X|..X_.'.|.|.|.|.|. X|. X|.'._._.}.}._.}.|.}.}.}.}.}.|.|. X|.|.|. X|..X.X X.XdXdX@XxXcXdXmXdXxXxXxXxXxXxXcXxXcXxXxXcXcXcXnXnXnXnXnXMXnXmXMXmXNXMXmXmXMXMXMXMXDXMXDXMXMXDXSXMXMXMXMXMXmXmXMXMXMXMXMXMXSXfXmXmXmXcXmXmXmXfXnXnXnXcXmXcXdXcXxXzXdXdXxXdX.X.XdX.X'. X|.`._._.^.^.(.(././.)./.~.~.T.~.T.T.T.T.P.T.P.P.L.L.S.L.H.H.H.H.S.G.S.A.A.A.A.A.h.A.A.j.h.l.k.h.k.z.g.g.k.f.f.f.k.k.a.k.i.i.z.i.i.a.i.a.i.a.i.i.i.a.i.i.i.u.u.u.i.u.t.i.u.u.u.u.t.t.u.t.p.u.t.u.u.i.u.u.i.i.i.u.i.i.i.i.i.a.a.a.s.s.u.i.u.u.u.u.u.u.u.t.t.u.t.t.u.t.t.u.t.u.t.t.u.t.t.t.t.t.r.t.t.t.r.t.r.r.t.t.p.u.t.u.t.u.t.t.t.p.t.u.t.t.t.t.E i.t.t.u.u.u.t.u.u.p.t.u.p.u.u.i.u.i.u.a.i.a.a.a.a.a.z.i.f.f.f.k.k.h.h.A.A.A.A.A.A.A.A.A.H.H.S.H.H.H.L.L.L.U.L.L.Y.U.P.T.Y.T.T.T.T.~.~.~.!./././.(.(.(.(.(.(.(.{.|.|.|.`.|.`.|.|.|.|.|.|.|.|.|.|._._.|.(.(.|.(.{.{.(./.(.(.(.(.(.(.(.(.^.`.^.`.(.|.^._.(.(.|.|._._._.|.|.[.|.|._._.|.|.|.|.|.|._._.|._._.`.{.|.}.}._.}.`.`.^.(.^.).(.(.(.{.(./.~./.(./.(.(.(.(.^.`.(.`.^._._.|.`.`.(.`.^.(.(.(././.(./.~./.~.~.(.~.~./.~.~.~.~.~.~.~.~.~.~.T.~.T.[.T.T.T.T.T.T.T.~.T.T.T.T.~.T.T.T.T.~.~.~.T.~.~.T.~.T.^.~.T.T.~.~.~.~.T.~.T.T.T.T.L.L.L.Y.K.L.U.L.U.L.L.L.L.L.H.L.H.H.G.H.h.H.S.S.A.A.Z.A.G.S.S.S.S.S.G.H.A.A.A.H.A.A.h.A.h.S.S.A.h.h.h.h.h.h.g.g.d.g.f.f.f.i.i.f.a.i.a.a.i.a.a.a.i.a.a.a.a.a.a.a.a.a.k.k.a.a.a.a.i.i.s.i.u.i.s.u.s.i.i.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.i.u.u.u.i.u.u.u.u.t.p.p.u.u.u.u.u.u.u.u.u.i.a.a.a.u.i.u.i.u.i.u.i.a.a.u.u.i.i.i.a.a.a.a.a.z.z.i.z.f.a.f.i.a.k.a.f.i.f.f.f.k.a.k.d.i.k.a.z.f.f.f.f.f.f.k.g.z.k.g.k.a.a.z.z.g.g.g.g.h.h.h.k.D.k.k.D.z.g.g.g.f.f.z.f.a.k.k.f.", "H H H L H P H H H J H J P H L J J L L L J J J P J J J J I H L P P K P P J P P L L L H J J J L L Z L H H L J J J J P P P L I K L L L P J J J H J H H H H H J H H L H H H L Z D Z L Z Z L Z Z H Z Z D D Z Z Z Z Z D B C Z Z Z C C B Z C C C C C C C C Z C C C Z C A C C C C C C C N C N Z Z B B A B B B C B C B C C C C C C C C C B Z C Z Z C Z C B Z C Z Z Z Z C Z Z Z Z Z Z G Z D Z Z Z D C F C Z Z Z Z Z Z Z H D D D D D Z D D Z D D Z Z T Z.A.H.H.H.H.S.H.H.H.H.H.H.H.G.G.H.H.H.L.L.H.U.S.L.L.L.L.L.L.L.L.H.L.U.L.U.L.L.L.L.L.P.Y.P.Y.P.P.P.Y.I.I.Y.Y.U.U.U.I.T.P.P.P.P.P.U.T.T.U.T.P.T.T.U.T.T.T.U.T.T.T.T.T.T.~.T.~.T.T.~.~.~.!.~.(.(./.(./.(.(.(.(.(./.^./.(.(.(.(.{._.|._. X_._._.|._.}.}._.|.|.|..X.XdX X@X.X.X.X.X.X.XzXzXzXdXdXcXzXzXdXdXzXcXzXzXzXxXzXzXzXdXdXdXdXxXdXzXzXxXdXdXdXdXzXdX.XdX.XdXdXzX'..XzX.X.XdX XdX.X.X.X.XdX.X.X.X.X'..X.X.X.XdX.X X X.X.X.X.X.X.X|.|.|.|._.`.|.|.}.|._.|.|.}.}.}.}.|.}.}.}.}.|._.}.|.|.|.'.|..X X.XdX@X.XdX'.dXdXdXdXdXdXcXxXzXzXxXcXxXxXcXnXcXmXcXfXnXnXmXnXnXnXmXmXMXmXMXMXSXMXmXMXMXmXMXmXMXMXmXMXMXMXMXMXMXmXSXMXMXMXMXMXMXMXMXMXmXmXmXmXmXcXfXnXcXnXnXcXcXnXzXxXzXxXdXdXdXzX.X.X.X.X.X|.|.|._.|._.^.(.(./.^.!.~.~.~.~.T.T.T.T.P.P.L.L.L.L.U.D.H.H.H.G.S.A.H.S.A.A.A.g.A.h.h.h.k.h.l.k.k.g.k.g.f.d.f.f.a.a.a.a.a.i.a.a.a.a.a.i.i.i.i.i.i.i.i.u.u.i.u.u.u.u.i.r.u.u.s.t.u.u.u.t.u.t.u.u.u.t.u.u.u.u.i.i.i.i.i.i.i.i.i.i.i.s.p.u.i.u.u.u.t.u.u.t.u.t.t.u.t.p.p.u.u.t.t.u.t.t.u.t.t.p.p.t.t.t.r.t.t.t.t.t.t.t.t.t.u.t.t.t.t.t.t.t.t.t.t.u.t.t.t.a.t.t.t.u.t.u.u.u.u.u.u.u.u.u.i.i.a.i.a.a.a.a.i.a.k.f.h.f.h.h.g.A.A.A.A.g.S.A.A.S.A.G.H.S.H.H.H.H.S.L.L.U.L.Y.T.U.T.T.T.~.~.~.T.T.~.~.~././.(.(.(.(.^.`.`._.|._.|.`.`.|.`.|.|._.|.|.|.|.|._.|._._.`.|.^._.(.(.(.(.(.(.(._.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(._.^._.{._.}._._.|.|.|.|.|._.`._.|._.`._.`.^.`.^.}._.|.^.(.`.^.^.(.(.!.).(.~.~./.~./././.(.(.(.(.(.^.`.`.(._.{.^.(.`.(.(.^.^.(.(.(.^./.~./.~.~.!.~.~./.~.~.~.~.~.T./.~.T.T.~.~.T.T.T.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.T.~.T.T.~.~.~.~.~.~.~.~.~.(.~.~.T.T.~.~.T.T.T.T.U.U.U.L.L.L.L.L.L.L.L.L.L.S.L.H.H.G.G.H.H.S.H.S.S.H.A.G.Z.S.A.S.A.S.S.A.H.H.H.H.h.G.A.A.A.l.h.z.A.l.h.A.h.h.k.g.g.z.g.k.f.k.i.k.f.a.i.a.i.i.a.i.a.a.i.a.d.a.a.a.a.a.a.i.i.a.a.a.a.a.u.i.i.s.i.i.i.u.i.a.i.u.i.u.u.t.u.u.u.t.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.t.p.u.r.u.u.u.u.a.u.u.u.u.u.u.u.E i.u.i.i.i.u.u.i.u.E x.a.i.a.a.a.a.a.a.a.i.i.z.i.a.g.i.k.k.i.k.i.f.f.i.k.d.k.k.k.z.a.k.a.f.f.k.k.k.g.g.k.g.g.k.g.g.g.g.g.g.g.g.f.f.k.h.h.k.g.k.k.g.g.k.g.g.g.f.g.z.f.f.k.", "J J H L L L L H H H H H L H L L H H L L J J P J J J J J J J H K L L J L L J P P H L U K H L L L K L J J L U H Z P H J L P L J J J P P J L L J D Z P P H H H H H Z Z L H H H L D Z H H H H Z Z L Z D D D D D Z Z Z Z Z C Z B Z C F B Z C C C C u C C C C C C C C Z C C C Z C C C C B N C N B C N B B B B C B C B B C C C C C C D Z C C C B C C Z A B C Z B Z B Z Z Z Z G Z Z G D Z Z Z Z D D Z Z Z Z Z C H Z Z Z D D D D Z D Z Z S Z Z Z D T Z.S.H.H.G.S.S.H.F.G.H.H.S.H.H.H.G.G.P.A.L.L.L.L.L.H.S.L.L.H.L.D.L.L.L.S.D.U.L.L.L.U.P.P.P.Y.P.Y.P.P.I.T.U.U.Y.I.U.U.P.P.P.P.U.U.T.P.P.T.P.T.T.P.T.P.U.Y.T.T.T.U.T.U.T.T.T.T.T.~.T.T.~.~.^.~.(.(./.^.[.^.^.(./.(./.(.(.(.(.(._._._._._. X_. X|.{.|.|. X|. X|.|..X.X@XdXdX.XzX.XzXzXzXdXdXdXdXcXzXxXcXcXdXcXdXcXzXxXzXzXzXzXzXzXxXcXdXzXzXdXxXxXdXdXxXdXdXdXdXzX.XdXdX'..X XdXdXdXdX.XdX.X@X.XzX'..XzX@XdX.X.X.X.X.XdXdX.X.X.X.X|.|. X|.|.|.|._.|.}.}.|._.`.(.^._.}.}.}.}._.|.}.}.|.|.|. X|.|.|. X|..X.X.XdX'.dXdXdXdXdXxXxXdXzXxXxXxXcXcXcXxXxXxXcXcXcXmXnXdXnXmXMXnXMXMXMXMXMXMXMXZXMXDXmXMXNXfXMXSXMXMXMXMXSXmXMXMXMXmXmXMXMXfXNXMXmXmXNXmXmXcXcXcXcXnXcXcXcXcXcXzXzXzXzXdXzXdXdX.X.X.X.X.X'.|.|.(._._.(.(.(./.~.~.~.~.T.T.T.T.T.T.P.P.L.L.S.U.L.S.H.H.H.H.G.z.A.h.z.A.h.j.g.h.h.h.h.h.l.k.d.z.k.k.d.f.d.i.a.k.a.d.a.a.a.a.i.a.i.i.i.i.i.i.i.i.u.i.u.s.s.u.u.u.u.u.u.u.u.u.t.t.u.t.t.u.u.u.u.u.u.s.u.u.u.i.i.i.i.i.i.i.i.u.a.i.u.i.u.u.u.u.u.u.t.u.s.t.u.t.u.t.t.p.t.u.u.t.u.t.u.t.p.t.t.t.t.t.r.r.t.r.t.t.t.t.u.t.E i.E t.t.u.u.t.u.t.t.u.t.u.t.E t.t.t.u.t.u.u.u.i.u.i.p.i.i.i.i.i.a.a.a.a.k.k.k.k.k.f.z.k.h.h.h.h.A.z.H.S.A.S.S.H.S.L.S.H.S.L.H.U.L.L.L.L.L.U.T.T.Y.T.~.T.T.~.T.~.Y.~././.^./.(.(.(.(.[.|._.|.'.|.`.|..X|.|.|.|.|. X'.|.|.|.|.|.|.|.|._.|.(.`.(.(.(.(.(.(.(.(.(.(.(.(./.^.^.(.(.{.(.|.(.(.|.(._._._.|._.|.[.{._.|.|.|.{.|._._._.(.|.|.`.`.`.^.`.(.(.(./.!.(.~.~.~.~.^.~.~.~./.^.(.(.(.(.(.(.(.(.^.|.^.`.^.(.(.^.(.(.(.(.E.^.~.~.!.T.~.~.~.~.~.~.~.~.~.~.T.T.~.T.T.T.~.T.T.T.T.T.T.T.~.T.T.T.T.T.T.T.~.T.T.^.T.~.~.T.T.~.~.T.T.~.~.~.T.~.~.T.T.~.T.T.T.U.Y.U.U.U.L.L.L.K.L.L.L.L.S.S.U.L.H.H.A.H.A.H.G.S.S.S.S.S.S.A.S.A.S.S.A.H.H.S.H.A.A.A.A.A.A.A.z.h.A.h.S.z.z.h.h.h.k.g.g.d.f.f.f.f.f.z.i.i.k.E a.i.a.i.a.a.a.u.u.a.i.a.i.a.i.a.i.i.a.i.i.i.i.u.i.i.s.i.s.s.u.i.i.u.u.u.u.p.u.u.u.u.u.u.t.u.t.u.t.i.u.u.u.u.u.u.u.u.t.u.u.u.r.u.u.E u.u.u.u.i.u.u.i.u.u.E a.a.u.i.a.a.u.u.a.i.i.i.d.i.a.d.a.i.k.i.i.i.a.a.i.g.a.a.k.f.d.f.f.k.k.d.k.z.a.k.k.f.k.k.k.k.g.h.k.g.k.k.k.k.k.k.k.g.g.g.z.h.h.h.g.g.g.g.z.g.g.g.g.g.f.k.k.f.f.k.f.", "H H L L Z H L L H J H J H H H H P U H H J P P H P J J H J J L H P P J J J J J J J F J H J J H J H P J J J K L P J J J J J P J J J J P J L K H P L L H H H G F U L J D Z H H G D H Z H H S Z H Z D D D D D Z Z Z D C Z Z D C C C C Z C C C B N F C C C C C D D A C C C A C C C C B C N C A C N N C B B B B C B C B C C C Z Z C C A Z C Z C D Z B C D D C D Z D Z Z Z D B D Z Z D Z G Z Z C Z Z D C Z Z Z Z Z Z Z D D Z Z G D D G Z Z Z H H I Z.G.H.H.H.H.H.H.H.D.H.H.H.H.S.D.L.L.S.L.U.A.H.L.L.L.U.L.L.D.L.L.S.L.L.U.L.L.S.L.L.L.P.P.P.P.P.P.Y.U.I.I.U.T.U.T.T.T.T.P.P.Y.U.T.P.P.T.P.P.P.P.P.P.P.U.U.U.Y.T.T.U.T.T.T.T.~.T.T.T.~.~.~.~.^.[.E././.^.~./././.(./.(.(.(.(.(.^._._._._._._._.|._.|.|.|.|.|.|..X.X.X.X.X.XzX.XzX.XzX.XxXdXxXcXcXdXdXdXcXxXcXxXxXxXxXxXxXxXcXcXxXzXxXcXcXdXcXdXdXxXdXdXdXzX@XzXzXzXzX.X.XzX.XdXdXdXdX X.X.X'.xX.X.X.X.X'.zX.XcX'..XdXdX.XdX.X.X.X.X'.|. X_.|._.|._.}.}._.|.`.^.|.|.[.}.}._.|._._. X|.|.|._.|. X|..X|..X.X.X.XdX XdX'.dXdXdXdXdXxXzXxXxXcXxXxXcXcXcXnXnXcXnXnXnXnXnXnXmXmXMXMXMXMXSXMXMXMXnXDXmXmXDXMXMXMXMXSXMXMXMXMXMXMXSXMXMXMXSXmXMXMXmXmXmXmXmXcXmXcXnXcXcXcXcXcXnXxXzXzXzXdXzXzX.X@X.X.X.X|.|.`.|._.(._.(./.~.!.(.T.~.T.T.T.T.P.Y.P.P.L.U.L.L.S.L.H.H.A.z.H.A.A.A.S.h.h.S.g.g.h.g.k.h.k.k.k.k.k.f.f.f.f.k.k.a.d.a.a.a.a.i.a.i.i.i.i.i.i.u.u.u.i.u.i.u.i.i.u.u.u.u.u.t.t.u.t.u.t.s.u.t.u.u.u.u.u.u.u.a.a.u.a.i.i.s.i.a.a.i.s.u.i.s.u.u.u.u.u.u.u.t.t.u.t.u.t.u.t.t.u.t.u.t.i.E t.t.t.t.t.t.r.r.t.t.t.t.t.t.p.p.t.t.u.u.u.u.t.t.t.t.t.t.u.E E i.t.u.t.u.t.u.u.t.u.u.u.i.i.i.u.s.a.i.i.a.a.a.f.a.a.k.f.k.k.k.h.h.h.H.h.G.H.S.S.S.H.A.S.S.S.H.H.H.H.L.S.S.L.L.I.Y.U.U.T.T.T.T.T.~.T.T.R./././././.(.(.(.(._.{.|.|.|.|.|..X|.|.|..X|.|. X X|. X|.|.|.'.`._.|.(.|.|._.(.^.{.(.|.(.(.(.(.(.(./.(.{.^.(.(./.(.^.|.^.^._._._.|._.|.|.|.|.|._.|._.|.|._._._.|.^.(.(.^.^.^.^.(.(.(.(./.(.(.~.~.[.~.!.~.!.E.[./.(.^.(.(.(.(.(.(.(.^.^.`.(.!.^.^.^.[.E.(.~.T.~.Y.~.~.T.~.~.~.~.T.].T.~.!.(.T.T.^.T.T.T.T.T.[.T.T.T.T.T.T.T.T.[.T.T.T.T.T.T.T.T.T.T.~.T.~.T.~.~.T.~.~.T.T.~.~.T.T.T.T.T.Y.Y.Y.L.U.U.L.L.L.L.F.L.L.L.D.L.H.H.S.S.H.H.S.S.H.A.A.A.A.Z.A.S.A.A.H.H.H.h.A.H.H.A.A.A.A.A.A.A.A.D.h.A.A.A.h.h.g.g.g.g.k.f.f.i.i.i.i.d.d.x.E x.a.i.a.a.a.a.a.i.a.i.a.a.i.i.i.i.i.i.u.i.i.i.s.i.i.a.i.i.i.i.u.i.u.u.u.t.t.u.u.u.u.u.u.u.u.u.u.t.u.u.t.u.u.t.u.t.u.t.t.t.t.t.t.u.u.u.u.u.a.E i.a.u.u.a.u.u.u.u.a.E a.i.i.i.i.i.i.a.a.a.d.z.i.k.f.f.k.z.g.a.g.i.g.f.f.f.d.k.k.k.k.k.k.k.k.h.g.k.k.g.g.k.h.k.k.g.k.g.k.k.g.j.g.g.k.h.h.k.h.g.g.l.g.d.l.z.g.g.g.f.k.f.f.f.k.", "J H J H L J H H H H H H L L H P H J J J J J J L J J P P P H J H L J J J H P J J J J H H H P H Z H P H H P H J H J P H I P L P P J J J L L L D D L J H H H H H H Z H Z H H Z L H H Z H H J Z Z L D D D D Z D Z Z B Z Z Z C Z A Z C C C C C C C C C B C C C C C C C C C C C C C A B Z B B B B A C N C N C B B C C C C C C Z C C B C C Z F C C F C C B C Z C Z B Z Z B D C D F D C Z Z F D D C B F Z Z D G Z D D D D D H Z G Z H F H D Z D D H T T.A.H.H.A.H.H.H.H.H.L.H.H.H.H.H.D.L.S.U.S.L.L.L.L.L.L.L.S.S.L.L.L.L.G.L.H.K.H.L.L.L.L.P.U.U.L.Y.U.P.T.Y.U.P.U.P.P.P.P.P.L.P.P.P.P.U.P.U.U.U.L.Y.T.Y.P.P.Y.P.Y.Y.U.T.T.U.T.T.T.T.T.T.T.~.!.~.^././.~./././.!./.(././.{.(.(.(.(.(.|.|.`.`._.|.|.|.|.|.'.|..X|..X.X'..XzX.XzX.XdXzXzXzXzXzXzXxXzXxXxXcXdXxXxXxXxXxXxXxXxXcXcXcXxXxXxXcXxX@XxXdXdXcXdXzXzXzXzXzXzXdXdXdXdXdX#XdXdXdXdXzX.X.XzXdXdXdX'.zX.X'.xX.XdX@X.X.X.X.X.X.X|.|..X|.|. X|._.}.}.}.(._.{.(.`.`.(.(.`.`._.`._.|.|.}.|.|.|.|.|.'..X|..X.X.X.XdX.X'.@XdXdXzXzXzXcXcXvXcXvXxXcXmXnXnXnXcXnXxXnXmXmXmXmXmXMXMXMXSXMXMXMXMXMXSXMXmXMXMXMXMXmXMXMXSXMXmXMXMXMXSXMXMXMXMXMXmXSXmXmXmXmXmXdXcXcXcXxXxXxXdXdXzXdXdXxX.XdXdX.XdX X.X X X}.}.}._.^.(./././.~.~.~.~.T.Y.U.T.P.U.P.P.U.L.S.S.H.U.H.D.G.A.A.A.A.h.A.h.h.g.k.h.z.k.z.g.k.f.f.f.k.d.k.a.a.k.a.a.a.a.a.a.a.a.i.a.u.i.i.u.i.u.u.u.i.u.a.u.a.a.u.u.i.u.u.u.u.u.u.t.u.t.t.u.t.t.u.u.u.i.u.a.i.i.i.i.i.a.i.i.s.a.i.i.i.u.i.u.u.u.p.u.t.u.t.u.u.t.u.t.u.u.t.u.u.t.u.t.u.t.E t.E t.a.E t.t.r.t.t.u.t.t.t.u.t.u.t.t.t.u.t.u.u.t.s.t.t.t.t.t.t.u.u.t.u.u.u.u.u.i.a.u.i.i.a.a.a.a.a.a.d.a.k.k.f.z.g.g.A.g.S.h.S.S.S.G.S.H.H.H.H.S.Y.H.L.L.S.Z.U.S.U.L.L.Y.P.U.T.T.T.T.T.T.^./.R./.E.[././.^.(.(.(.|._._._.|.|.|..X|.'.|..X|. X|.|.|..X|.@X`.|.|.|.`.|.`.`.(.^.^.(.(.(.(.^./.^.(.(./.(.(.(.(.(.(./.(.(.(.`.|.`._._._.|._._._. X_._._._._._._._.^.(.(.(.(.(.(.(._.(./.(.(././.~.~.~.T.~.~.~.~.(.[.(.[.(.^./.(.(.(.(.(.(.(.^././././././.T.~.~.T.T.[.T.~.T.~.~.~.T.T.~.T.~.T.T.T.T.U.T.T.T.T.T.T.T.T.T.T.T.T.T.~.T.~.T.T.T.T.~.T.~.T.~.T.~.T.~.~.~.~.~.T.~.~.T.T.T.T.T.U.P.P.Y.P.U.L.U.L.L.L.L.L.H.H.H.H.H.G.G.H.S.S.S.S.S.S.A.S.A.A.G.H.A.G.A.H.H.H.J.S.A.G.A.S.D.h.A.A.A.A.g.S.A.l.l.l.k.l.g.g.k.k.d.z.z.a.a.a.d.k.a.a.a.d.a.i.a.a.a.i.a.a.i.a.i.i.i.i.i.i.i.i.i.s.i.i.i.i.i.i.i.u.i.u.u.u.u.u.t.u.p.p.u.t.t.u.t.u.u.t.a.t.u.t.u.t.u.t.u.t.t.u.u.u.u.i.u.t.u.u.u.a.u.a.E u.a.a.u.u.i.i.u.u.a.a.i.i.i.i.a.a.i.f.i.d.i.z.i.i.k.i.f.f.f.f.f.k.g.f.k.k.k.d.k.k.g.g.g.g.k.g.k.h.k.k.k.g.g.k.k.g.g.g.d.g.h.h.z.z.z.h.Z.g.l.D.g.g.g.g.k.f.k.f.k.k.d.f.", "H H P H H L H H L P P H L L L Z H H I J H J J J J J P L H J K U J J H H J J J G J J H J H H J U H H L H H H J J J J J J P P P J J L J L L L H J H H H H H H H H H H H H H Z Z H Z H Z H Z H S Z D Z G D D Z Z Z G C Z C C C C C Z C C C B A A C C A C C C B C C C C C C C C C C B C B B N Z m B N B C N Z B C C C C C C C Z C Z D C C B C D C C Z D C C Z C D Z G C B D D D D G G Z H Z C D D D Z Z Z C Z D D D D D Z Z H Z Z Z Z Z D F F H T Z.H.H.S.K.A.H.H.H.H.H.H.H.H.H.H.H.S.U.L.L.H.L.L.L.L.L.L.L.U.U.S.U.G.L.L.S.L.L.L.L.P.L.L.P.U.Y.P.L.P.P.U.T.P.P.P.P.P.P.Y.P.U.P.T.U.K.U.U.L.Y.P.P.P.T.Y.P.P.P.P.U.L.U.U.T.U.T.T.T.~.T.~.~.(.~.(././././././././././.(.^.(.(.^.(.^.|.(._.^.|._.|.|.|.|.|. X'.|..X.X.X.XdX.XzXzXzXzX.XzXzXzXzXxXxXzXxXcXxXcXxXcXcXxXxXcXxXcXcXcXxXxXxXcXdXdXdXdXxXzXzXdXzXzXzXzXzXzXdXdXdXdXdXdXdXdXdXzX.X.XzX.XdX.X.X.XzXxX.X.XxXdX.XdX.X.X.X.X.X|.|.|.|.{.|.}.}.{._.|.[.^.|.(.(.(.(.`.(._._.|.|.|.}.|.|.|.|.|..X|..X.X.X.X.X.X.XdX.X.XdXzXdXcXcXcXzXxXzXcXxXdXnXcXcXnXnXnXnXmXmXvXMXmXMXmXSXMXMXMXMXMXMXMXMXZXMXZXmXMXZXSXMXMXMXMXmXMXMXmXMXSXMXMXmXmXmXMXmXmXmXmXmXnXvXJXxXdXvXcXzXzXxXdXdXdXdXdXdX.X.X'.|.|.}._.}.`.(././././.~.~.T.~.T.T.T.Y.U.U.P.P.L.U.L.L.H.S.H.G.G.A.A.A.A.h.h.h.h.h.z.k.k.k.k.k.f.f.k.d.f.i.a.a.a.a.a.a.a.a.a.a.i.i.i.i.i.i.u.i.u.i.i.i.u.i.u.a.u.u.u.u.u.u.t.t.u.t.u.u.t.u.u.u.u.i.u.u.u.u.u.u.u.i.i.a.i.i.i.i.i.t.u.i.i.s.u.u.u.u.t.u.u.p.t.u.t.u.u.u.u.t.u.r.u.u.t.u.t.t.i.u.i.t.r.t.t.t.t.t.t.t.t.u.u.t.t.p.t.u.u.t.t.u.p.u.t.u.t.p.t.p.u.t.t.p.u.u.p.i.a.i.a.a.a.a.a.a.f.a.g.a.g.g.g.k.g.g.g.h.h.A.A.A.H.A.S.S.H.H.G.H.K.H.S.H.S.S.U.L.L.L.L.L.L.U.T.T.U.T.T.T.T.~.T.T./.T.^.T.~./.(.(.(.(.(._.|.|.|.|..X`..X|.'. X X|.|.|.|.|.|.|._. X|.|.|.|.{.`.(.|.^.(.`.(.(.(.(./.(.(././././.(.!.(.(.(.(.(.(.(.|.|._._.{.`.|.|._._._. X_.(.`._.(.(.(.(.(.(.).(.(.(.(.(.!.~.~.T.~.~.~.~.T.T.[.~.^.(.T.~.[.~./.(.(.(.(.(./.(./.(././.^./././.T.~.T.T.T.T.T.~.~.T.~.~.T.T.T.T.T.T.T.T.T.T.U.T.T.P.T.T.T.T.T.T.T.T.T.T.T.T.T.K.~.T.T.T.T.T.T.T.~.T.T.T.T.T.T.T.T.T.T.T.P.T.U.P.P.P.P.L.L.L.L.U.S.L.L.L.H.H.H.S.S.S.H.S.S.l.G.A.S.A.Z.A.A.H.A.S.A.H.S.Z.H.h.A.H.A.G.h.H.A.A.A.A.g.j.Z.h.A.l.l.h.z.g.g.d.k.k.d.a.z.a.a.a.a.a.d.a.a.i.i.i.i.i.a.a.i.i.i.i.i.i.i.i.u.i.a.i.i.i.i.i.i.i.i.i.i.u.u.u.u.u.u.u.t.t.u.u.u.u.u.u.t.t.u.t.u.t.u.t.u.t.u.u.t.u.t.u.E u.E t.t.u.u.i.u.a.a.a.u.u.u.a.u.u.u.u.i.E i.p.u.i.i.a.f.i.i.a.a.i.k.i.k.i.z.f.f.f.k.g.f.f.g.k.k.z.k.g.k.z.g.g.g.z.h.h.z.k.h.g.g.k.g.k.g.g.k.z.g.g.g.l.l.z.h.k.g.z.d.g.g.g.g.f.k.f.k.f.k.k.f.", "H H H H H H H H H H H H L J L L J J J J J P L J P L K I J J J H H P J H H L I H H G H H J H H F L H Z L H J K J J J J J I L P P J J K P L L H P D H H Z H D H H H H Z L H Z L S Z H H Z Z Z Z H H Z Z Z H Z Z Z B D Z Z C Z C Z C C C C C B C C C F C C C C C C C C C C C N C C B B B C B B B B C C N C N C C C C C A Z Z F C C D B B D C Z C D C C B Z Z C Z Z Z D Z Z Z Z F Z G B Z D D D D C Z Z Z D Z Z Z D D Z Z Z H D Z Z Z Z G Z Z A T Z.H.H.G.G.H.H.G.K.H.H.H.G.S.H.H.H.H.S.L.L.L.H.L.H.U.L.L.L.L.S.U.D.L.D.U.U.L.L.L.L.L.P.U.L.L.U.L.U.P.P.P.U.P.Y.P.P.Y.U.P.L.U.L.L.L.L.Y.U.Y.P.P.Y.T.U.Y.L.P.U.P.L.U.U.U.U.T.U.T.T.T.T.~.T.~.~.!./.~.~./././.(././.^.(./.(.(.(.(.(.(.`.(.^.|.|.|.|.|.|.|.|.|..X|..X.X.XzX'..XzX.XzXzXzXzXxXxXzXxXxX@XcXcXxXcXxXxXcXcXcXcXJXcXcXcXxXxXxXxXcXdXcXzXzXzXzXzXzXzXzXzXdXcXdXdXdX@XdXdXdXdX'.zXzX.XdXdXdX.XzX.X.X.X.X'.zX.XzX.X.X.X.X X_.@X_.|.|.|._.}._._.`.(.^.(.(.(.`.(._._.|._.|._._.|.{.|.|.|.|.`..X|..X|.'..X.X.X.X.XzX'..XzXdXfX@XcXxXxXcXcXcXnXcXcXxXnXnXnXvXMXmXmXMXMXMXMXmXMXMXMXSXMXMXDXMXMXMXMXMXSXfXSXmXMXmXMXMXMXMXMXfXNXSXmXmXmXmXmXmXmXmXmXnXxXcXcXxXcXzXcXzXzX@XdXxXdX.XdX.X.X'. X|._.}.^.(.(.(.(.~./.~.T.T.T.T.T.U.T.L.U.S.Y.L.A.L.L.L.H.H.S.H.h.A.h.A.h.k.g.g.g.k.k.k.f.k.k.d.k.i.f.i.a.a.a.a.a.a.a.a.a.a.i.a.i.i.a.u.i.i.u.i.u.u.u.i.i.u.u.u.i.u.u.u.u.u.u.u.u.u.t.u.t.t.u.u.t.u.u.u.u.u.i.i.u.a.i.i.a.i.i.i.i.s.u.s.u.i.u.u.p.u.u.u.r.u.t.u.t.u.u.u.t.u.u.u.u.u.r.t.u.u.t.t.t.i.r.t.u.t.t.u.u.u.t.t.t.t.t.t.t.t.t.u.t.p.t.t.t.p.t.t.t.t.t.u.t.p.u.u.i.i.i.a.a.a.a.a.a.d.f.a.g.a.z.z.g.g.g.g.A.A.h.S.A.G.A.H.L.S.H.H.H.A.K.H.H.L.L.L.S.D.L.L.L.L.Y.U.U.T.U.T.T.T.T.~.T.T./.T.^././.(.(.(.(.|._._.|.`.|.|.|.|..X.X|..X X_.|.@X`.|.|.|.|.'.|.`._.|.`.|.(.(.^.^.(.^./.(./././././.!./././.(.(.(.(.(.(.|.|.}._._._._._._._._._._._.`.(.(.(./.(.^.(.(./././.(././.~.~.~./.T.~.T.~.T.[.~.~.~./.~.~././././././.(./.(.(./././.~.~.^.T././.T.T.T.T.T.T.T.T.~.T.T.T.T.~.T.T.T.T.T.U.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.K.~.T.~.T.T.T.T.P.T.T.T.T.T.T.T.T.T.T.U.Y.T.T.U.Y.P.Y.U.U.U.Y.U.U.L.L.S.L.L.S.H.H.H.A.S.S.G.G.A.S.A.Z.h.S.H.S.A.S.A.S.S.S.H.H.H.H.S.H.S.A.A.A.A.A.A.A.A.A.h.h.l.l.h.h.g.g.k.g.k.k.d.k.a.a.a.a.a.E D.u.a.i.i.i.i.i.d.u.i.i.a.i.a.a.i.i.u.i.u.u.u.i.i.i.i.i.i.s.i.u.u.u.u.r.u.u.u.t.u.t.i.t.u.t.t.t.u.t.i.t.u.t.u.t.E t.t.t.t.t.t.u.t.u.u.u.u.t.E u.a.E E u.u.i.i.t.u.u.u.z.s.u.i.i.i.i.a.a.i.i.a.z.i.i.i.k.z.k.f.f.f.f.g.f.g.k.k.k.k.k.l.k.k.g.k.k.g.h.z.f.h.k.z.h.k.g.g.g.k.k.h.h.h.l.l.l.l.h.g.g.g.g.g.g.g.z.k.f.k.f.k.f.f.f.", "H H H Z H H H H H H H H L L L L J J I J P P P P J P L J J J J G P F H J U K H J I K H J H H J J H L H L H H H H P J J H L J K P J J J U U H H H H H H L H H H Z H H H Z H Z H Z Z Z H Z Z H Z Z D G Z D Z G B Z Z Z Z C C Z C B F C C C C C C C C C C A C F C C C C C C A C C C C B C B B B B A N N C N C B B C C C C C C C C C C C C C C C C C C Z F B Z Z C Z C Z Z Z C Z Z Z Z Z Z C D C C D Z Z B D D D D Z D D Z Z A Z D H Z H J Z L Z I Z.H.G.A.H.H.H.H.H.H.S.H.H.S.H.L.H.H.S.L.L.L.L.L.L.L.L.U.S.L.U.H.Z.A.L.D.H.H.L.L.L.P.L.L.L.L.U.L.Y.P.T.L.U.Y.U.P.U.U.L.L.P.L.T.L.Y.L.U.L.L.P.Y.P.Y.P.P.U.U.Y.U.Y.U.U.T.U.U.U.T.U.T.T.T.~.~.Y.~.~.~.!.~././././.(.^./.(.(.(.(.(.(.(.`.(.`.`._._._.|.|..X.X|..X'..X.XzX'.zXzXzXzXzXzXzXzXzXzXxXxXxXxXxXxXcXcXcXcXcXcXmXcXdXnXnXcXcXnXxXxXcXcXdXzXzXzXzXzXzXzXzXzXmXdXcXfXdXdX%X XdXdXxXzX'.zXdXdXdX.XzXzXzXxX.XxX.X.X.X.X'..X'.'. X|.|.|._._._.{._._.^.(.(.(.(.(.(.`._.^._._._._._._.|.|.|.|.`.|.`.|.|..X|..X.XdX'. X.XdX.XzXdXdXdXcXxXxXcXcXcXcXmXnXmXnXnXnXmXmXmXmXMXMXMXMXZXMXMXMXmXMXMXmXMXSXMXZXMXMXMXmXmXmXNXmXMXMXMXMXMXmXMXMXmXMXmXmXmXmXmXdXnXfXcXcXcXcXzXzXzXzXzXzXzX'.dX X.X.X'.|.|._._.`.(.(././.(.!.T.~.T.T.Y.Y.U.P.T.K.P.U.L.L.H.L.H.G.H.S.S.A.h.A.A.g.h.h.g.f.g.f.k.k.d.d.a.d.i.k.a.i.i.a.a.i.a.a.a.a.a.a.a.i.i.i.a.u.u.i.u.i.a.a.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.t.t.u.u.r.u.u.i.u.i.u.i.i.i.i.i.i.i.i.i.s.i.i.i.i.u.u.u.u.u.t.u.t.t.s.u.u.u.u.t.s.u.u.u.u.a.u.u.t.u.t.u.t.t.u.t.u.t.t.t.t.t.t.u.u.u.u.u.u.u.p.u.u.u.u.t.i.t.p.p.t.t.u.t.u.t.t.u.i.i.i.a.a.a.a.k.a.a.f.g.k.g.g.h.z.h.h.h.A.A.A.S.S.G.H.H.h.H.S.K.A.H.G.S.S.L.F.L.L.U.L.L.L.L.L.Y.U.U.T.T.T.T.Y.T.T.T.T.Y.(./.~./.(.(.(._.|._.|.|.|. X.X|.'.|..X|.|. X X_.'.'.|..X.X'.|.|.|._.^._.`.|.`.(.(.{.(./.(.(./././.)./././.E.(.(.(.(.(.^.^.}._._._._._.(.(._._._._.(.(.(.(.(.(.(.(.(.(.(.(./.(./.~.~.~.T.T.T.T.~.~.~.~.~.~.~./.!./././././././././././././.~.~.~.~.T.T.T.T.T.U.T.T.T.T.U.T.T.T.T.T.T.T.I.I.U.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.Y.T.T.T.T.T.T.T.T.P.T.T.T.T.Y.T.P.T.U.U.T.U.P.U.L.L.P.U.L.L.L.H.L.S.S.L.H.H.H.S.S.S.A.A.S.S.S.S.S.S.S.S.G.S.S.S.S.H.H.H.G.G.A.H.S.G.G.A.A.A.A.h.h.l.l.A.A.l.h.h.k.k.g.g.k.d.x.a.a.a.a.a.a.a.d.a.i.i.i.i.i.i.a.i.i.i.d.a.i.i.i.i.i.u.u.u.i.u.u.i.s.u.i.i.u.i.u.u.u.u.u.t.t.u.u.t.u.t.r.p.t.u.t.u.r.u.t.u.t.u.u.u.t.u.u.t.t.t.t.u.t.u.u.u.a.u.u.u.a.u.i.u.i.u.u.a.i.E u.i.u.i.i.i.i.i.i.i.a.a.i.z.z.i.i.f.f.f.g.f.g.g.g.g.h.h.h.h.k.l.l.k.l.l.g.A.l.l.h.h.g.g.g.g.g.g.g.l.h.h.g.l.l.l.l.h.l.g.k.D.g.g.g.d.d.k.f.k.f.k.f.f.", "H H H H H H Z H J H H P H H H Y J J P P J P P J L J P J J J J K J J J H J H H H J L L H H H G J H H H J L Z J H H J J L K P J L J J L J H H H L H H H H H Z H H Z J Z L H H Z Z J Z Z Z S L L H Z Z D Z Z Z Z Z Z D Z Z C C C C C C C C C A C Z C C C C C C C C Z m N C N C N C Z B B C N C C B C N C C C B C C C C C C C C N F C C F C C C Z C C C C D B C D Z C Z B Z D Z Z Z Z Z B Z Z F Z Z Z Z Z Z Z Z D D H A Z D D D D D H Z L H H Z Y T Z.H.H.H.H.H.G.A.H.H.H.H.H.H.H.S.L.L.L.S.L.L.L.L.L.L.L.L.L.L.H.L.H.L.L.S.L.L.L.L.L.L.U.U.L.L.L.P.L.L.U.L.P.U.L.L.Y.L.L.U.U.L.U.L.U.U.L.U.U.U.U.U.T.Y.U.L.L.U.L.L.P.P.P.P.T.U.Y.T.T.T.T.~.T.~.~.~.~.(.T.~.^././././.(.(.(.^.(.(.(.(.(.|.(.(._.|._.|.|.`..X|..X.X.X@X.X.XdXzX.X#XxXzXzXxXxXxXxXxXxXxXcXxXcXcXmXcXcXcXmXnXnXnXcXnXcXcXdXnXdXdXxXcXdXzXzXnXcXdXdXdXdXdXzXcXdXcXdXdXdX.X.XzX'.zXzX@XdXzX.XzXzX@XdX.X'..XzXdX.X X.X|.|.|.{.}.{._._.(._.^.(.(.(.(.(.(.(.^._.(._._._._.|._.|.|.|._.|.|.|.|.'.|. X.X.X@XdX@XdXdXdXzXzXcXdXxXxXxXcXcXcXcXnXnXJXnXzXmXmXmXmXMXMXMXMXSXMXmXMXMXMXZXmXMXMXMXMXMXZXMXMXMXMXmXMXMXMXMXMXmXmXNXMXmXmXmXmXmXmXmXfXcXmXcXcXxXzXcXzXzXcX@XdXdX.XxXdX.X.X'.|._._._._.^.(././.^.~.T.~.T.T.Y.I.L.U.U.U.L.L.L.L.L.L.H.G.G.H.S.A.A.A.l.h.g.g.g.g.k.a.a.i.z.a.a.a.a.a.a.a.i.i.i.a.a.i.a.a.a.i.i.i.a.u.i.i.E x.i.u.u.a.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.t.t.u.u.t.u.u.u.u.u.u.i.t.i.i.i.i.a.i.i.i.i.i.u.i.s.u.u.u.i.u.t.u.u.u.t.u.p.u.u.u.u.i.u.u.u.u.u.u.t.t.t.u.t.t.u.t.t.t.u.u.u.u.t.u.t.u.t.u.u.u.t.u.u.t.r.u.u.u.t.u.t.u.t.t.t.p.u.u.u.a.a.a.a.a.a.k.a.f.a.l.g.a.h.h.l.h.g.g.A.A.A.H.G.H.H.H.L.H.H.H.L.H.H.H.H.L.L.S.S.L.L.L.L.P.U.U.T.T.U.T.T.T.T.T.T.T.~.T././.(./.^.(.(.(.|._.|.`.`.|.'.|..X X.X|.'.'.'.'..X.X|..X|.|.|.{._.|._.{.^.^.(.(.(.(.^./././.(././././.!./.^.^.^.(.(.(.|._.^._._.^.|.^.`.`.(._.^.`.^.^.(.(.(.(.^.(./.(.(./././.~.~.~.~.~.T.~.~.T.~.~.~.~.~.~.~./.T./././././././.(././.[.~.T.[.T.~.T.T.T.T.T.T.T.U.Y.L.P.Y.T.T.T.Y.T.I.I.I.P.Y.U.T.U.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.U.U.T.T.T.Y.T.T.U.U.T.U.P.U.U.U.L.L.T.T.U.I.Y.L.L.L.L.L.L.H.L.L.L.H.H.H.H.G.G.A.S.A.H.A.S.A.A.S.S.S.S.S.S.S.S.H.H.A.G.H.S.G.H.H.A.A.S.A.A.z.A.A.A.l.A.h.D.k.g.h.z.k.k.k.k.k.a.d.z.i.a.a.a.a.a.i.i.u.a.i.i.i.i.i.i.i.a.i.i.a.u.a.u.u.u.u.u.u.a.u.u.i.u.i.u.u.u.u.u.u.t.u.u.t.p.t.t.p.t.t.t.t.t.t.t.t.t.u.u.u.t.t.u.u.t.u.t.u.t.u.u.u.u.u.E i.i.u.a.u.i.u.u.u.a.u.u.a.u.a.u.i.i.u.i.i.i.i.a.a.i.k.i.d.z.f.f.z.g.g.k.k.k.h.h.l.k.l.l.l.g.l.h.h.h.h.h.h.g.h.h.z.g.l.g.z.g.l.A.g.l.l.l.A.h.D.h.A.l.z.g.k.g.k.f.f.f.f.f.d.k.f.", "D H H Z H H H H H H H H H U H P H J J P H J P L J J J J J J H H H H H J H K U K I J J H L H H L H H H Z J J H H H J J P L L J L J J J H H P H H H H H H F J H H L Z Z H H Z L Z S Z L Z Z H S Z D D Z D Z Z Z C C C C Z C Z C Z C C C C C C C C C Z Z C B C C C A A Z N C C N A B B C B B N C B N Z C N B C C C B B C B V C B B C C C C Z C C C C Z C B C Z Z Z Z Z D Z C D D C Z Z D Z B Z C Z Z Z Z Z Z Z Z Z D D Z D D D D D Z Z Z Z H Z Z T Z.H.H.H.G.H.G.L.H.S.H.H.S.H.H.L.S.L.L.L.L.L.S.L.S.U.L.S.H.L.L.H.H.H.L.L.S.L.L.L.L.L.L.L.L.L.L.L.P.P.P.P.U.U.L.U.L.L.U.U.U.U.U.L.Y.L.L.Y.L.U.T.Y.T.U.T.U.U.L.K.L.P.P.U.P.U.Y.U.T.T.Y.T.~.~.~.T.~.~.~.~.~.~.~././.!.(.(.(.(.(._.(.|.^.(.`._.|._.|.|.|.|.|. X|..X.XdXzX.XdX'.xXdXdXzXzXxXxXxXxXcXxXcXxXcXcXcXnXmXmXnXMXnXnXnXnXnXnXcXcXxXxXnXdXcXdXzXzXdXdXdXxXdXnXcXzXdXdXdXdX%XmX.XxXdXzXzXzXzXzXzXxXdXzXdXdXdXdX.X.X.X.X X'.|.|.|._.}._._._._._.^.`.(.(._.(.(.(.(.(._._._._._.(._.{.[.|._.|.|.|.'.|.|..X.X.X.X.XdX.XdXdXzXzXzXcX@XxXxXxXdXJXcXcXzXnXJXmXmXmXMXMXmXNXmXmXMXMXZXMXMXMXMXMXmXZXMXmXMXmXMXSXDXMXMXMXMXMXMXmXfXSXmXMXmXmXmXmXmXmXcXcXcXMXcXcXxXcXzXzXzX X.XdXdXdX'.@X.X X|.|.|._._.(.|.(././.~.~.~.T.T.T.I.Y.T.U.L.U.L.L.L.L.H.H.H.G.A.H.S.A.A.S.l.l.g.g.j.j.z.i.k.i.i.a.a.a.a.i.i.i.i.a.i.i.i.a.i.i.u.k.a.a.i.i.i.u.a.u.i.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.t.u.u.u.u.u.u.i.u.u.a.i.i.i.i.i.i.i.i.i.u.i.u.u.u.u.u.u.u.u.u.t.u.u.p.u.u.u.i.u.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.t.u.u.u.u.u.u.u.u.u.u.p.u.u.u.p.p.u.u.u.t.p.t.t.u.u.p.u.u.i.t.a.a.a.a.i.f.f.g.g.g.g.h.h.l.l.A.A.A.S.A.H.S.H.H.H.G.S.H.H.H.H.H.H.H.H.S.L.L.L.L.L.L.P.U.L.U.T.U.T.T.T.T.T.T.T.~.T.R.(./.!.(.(.^.|.|./._._.`.|.|. X|..X.X|..X|.'.|.`..X.X.X.X|..X|.|.|.|.(.`.(.`.(.(._.(.(.(./.(././.].(./.(././.^.^.^./.(.(.{._.{.`.^.`.(.(.(.(.(.(.`.(.(.(.(./.(.(././././.(./././.~.~.T.~.T.^.T.[.T.~.~.T.[.T.~.~.~.~./.!./././.!.~././.~.~.[.T.T.T.T.T.T.T.U.Y.U.T.U.U.P.T.U.U.U.U.I.I.U.Y.P.P.P.P.P.U.T.T.T.T.T.T.T.T.T.U.R.L.U.T.~.U.T.T.T.Y.T.T.T.U.Y.U.U.U.P.L.U.U.L.L.L.L.K.L.L.L.U.D.L.H.L.G.D.H.H.H.A.G.S.S.A.A.A.G.H.A.S.S.A.S.G.S.S.S.S.A.G.A.K.H.G.Z.A.G.S.J.G.A.A.A.A.A.l.A.h.l.h.h.k.k.k.a.k.k.k.d.a.k.d.d.a.a.a.i.a.i.i.u.a.u.i.i.i.i.i.i.a.a.a.a.a.i.k.u.a.u.u.a.u.a.i.u.x.u.u.u.u.u.u.t.u.t.t.u.u.t.u.t.t.u.t.p.t.r.t.t.t.t.t.t.t.t.E u.E t.u.t.t.u.u.u.u.u.a.u.u.u.i.i.u.i.a.u.u.u.u.u.u.u.i.i.i.i.u.i.i.i.a.a.a.a.k.i.i.f.f.f.g.g.h.l.l.h.l.l.l.l.g.z.z.l.l.h.h.A.l.h.l.l.h.h.h.z.h.g.z.l.l.h.l.h.l.l.z.l.g.A.h.l.l.k.g.g.k.f.f.f.f.k.f.k.", "H H H H H H H H P H P P L L P L J J J J P P J P J J J J H H J J H J J H G J J L J J J H H J H L L H L J H J H J P H H L L P K L J P J J H H D P H G J H L H H H Z H Z D Z L Z Z H S Z Z Z L Z L D D D Z Z Z C Z Z C Z C Z C C C Z C C C C C C C C C A C C C C C N C Z A C N B B B C C B C B B C C B C V C B C B C B B C C B C C N B B C V C C C Z C C Z C Z Z Z Z Z Z Z Z C Z B Z Z Z C D Z Z B Z C Z Z Z Z Z D D D H Z D D D D Z H H D F S D H Z.H.D.H.H.H.H.G.H.S.G.S.H.H.L.H.L.S.L.S.L.S.L.L.L.L.L.L.L.H.L.L.H.H.S.L.G.L.L.L.L.L.U.L.L.L.L.L.L.L.P.P.P.L.L.U.L.L.L.T.I.L.L.Y.U.L.L.L.T.U.T.U.T.Y.L.U.L.Y.L.L.P.L.P.P.P.P.T.U.T.T.T.T.T.T.~.T.T.~.~.~./.E././.(.(.(.(.(.(.(.(.(.(.^.`.{.|._._.|.|.'. X'..X'..X'..XdXzXdXxXxXdXzXxXxXvXxXvXnXxXxXxXxXcXnXnXnXmXMXmXnXnXnXnXnXnXcXcXnXdXdXdXxXdXdXxXdXcXnXcXdXdXzXzXcXvXcXvXzXdXzX.XcXzXzX.XxXzXzXzXzXzXdXdXdXdX@X.X.X.X.X.X|.|._.}.}.|._._._.^.(.(.(.(.(.(.(.(.(.(.|._._.(.`.|.|.|.|.|.|.|.|.|.|._.|..X.X.X.X.X.X.XdXdXdXdXxXzXdXxXxXxXnXnXnXmXmXnXmXmXmXmXMXMXZXSXmXSXMXZXmXMXMXMXMXMXMXMXSXZXSXZXfXMXnXMXmXmXMXMXmXMXMXMXmXmXmXmXmXmXmXmXmXmXcXcXnXdXxXxXzXzX.XdXdXdXdX X@X.X.X.X'._._._._.(.(.(./.~.~.~.~.T.T.T.T.I.U.L.U.L.L.L.L.L.L.S.H.H.G.H.H.A.A.A.h.h.z.g.a.g.z.d.a.a.a.a.i.a.a.i.i.i.u.k.i.i.i.a.a.a.a.a.i.a.k.i.u.a.a.a.i.u.u.i.u.u.a.u.a.u.i.u.u.u.u.u.u.u.u.u.t.t.u.t.u.u.u.i.s.u.i.i.i.i.i.i.i.i.i.i.s.p.p.s.u.i.u.u.i.u.t.u.u.u.u.u.u.u.u.u.i.u.u.i.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.E u.u.r.u.u.u.u.u.p.t.u.p.u.t.u.t.p.t.t.u.t.u.u.u.u.i.u.a.f.a.f.f.k.k.j.k.g.h.h.h.A.A.S.j.h.A.A.G.S.H.H.H.H.H.H.H.H.L.S.H.K.G.L.L.L.H.L.L.L.L.U.U.Y.U.T.U.T.T.T.T.T.T.T.T.~.~././.(.(.^.|.|.`.|.|.`.`. X|.'..X X.X|..X.X.X.X|..X.X.X.X.X|.|.|._.(._.{.(.(.(.(.(./.(././././.)././././././.(.[.(.^.(.(.{.|.^.`.^.(.(.(.(.(.(.!./.(.^./.(.(././././.!./.~.~.(.~.~./.~.~.T.~.~.~.T.~.~.~.~.~.~././.~./.[./.(.~.~.~.~.~.~.[.T.T.T.T.T.U.T.T.Y.U.P.U.U.L.L.L.U.U.U.Y.L.U.U.L.P.P.T.P.Y.U.Y.T.T.T.T.T.T.T.Y.R.Y.T.I.R.T.T.L.Y.P.T.U.L.U.L.L.P.L.P.P.U.L.U.L.L.L.L.L.L.L.L.S.L.L.L.H.H.Z.H.S.S.S.S.S.A.H.G.A.A.A.A.A.S.S.h.S.S.S.G.S.G.G.G.Z.G.G.A.A.Z.h.A.A.A.g.h.l.l.A.h.h.h.k.g.g.k.d.k.k.k.k.k.d.z.k.a.a.a.i.a.i.u.i.u.a.i.i.i.a.a.i.a.i.a.a.i.i.a.u.u.t.u.u.u.u.a.u.r.u.u.u.u.u.t.u.t.u.u.t.t.u.u.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.u.u.t.u.a.i.u.u.a.i.u.i.u.i.i.i.u.a.u.i.a.i.i.u.i.u.u.i.u.i.i.i.i.a.a.a.i.z.f.f.f.d.k.k.l.k.h.h.z.l.l.l.l.g.h.h.k.k.h.h.l.l.l.l.h.h.h.k.h.h.l.l.l.h.l.h.l.l.l.l.l.l.l.l.l.k.k.d.d.f.f.f.f.f.k.f.", "D H H F F J H H H H H U L H H P J J J H J J H L P J J L P J H H J F H H J J J H J J H H L L H H H H H L H H J H H P L L J H U H D L J H H P H H H H J F H Z F H H D H H L Z H Z H Z L Z Z Z Z Z Z D Z Z Z Z Z Z C Z B D Z C C C C C C Z F C C Z C C C C C C u B Z N C N Z C A Z B C B C B C B C B V C B B C B C C B u B C C C B u N C C V C C C C C C C C Z C D F B C Z Z Z Z D Z Z Z Z Z C Z Z F C C G Z Z D Z D D Z Z F D D D D H H D F Z H L e.Z.H.H.A.S.H.Z.H.H.H.H.H.H.H.H.S.S.L.L.L.L.S.L.L.L.L.L.L.L.S.L.L.H.H.L.H.L.L.H.L.L.L.P.S.L.L.L.L.L.L.P.L.U.L.L.K.R.U.U.I.U.U.U.U.L.Y.U.U.U.T.P.T.P.P.P.U.Y.L.L.L.Y.P.P.Y.P.P.P.Y.Y.T.T.T.T.~.T.~.~.~.[./././././.(.(.(.(.(.(.(.`.(.(.(.^.|.|._.`.|..X|. X'..X.XdXdXdXzXzXdXdXxXzXzXxXxXxXxXxXxXxXcXnXcXnXnXnXmXmXMXMXnXMXnXcXnXcXcXnXxXnXdXdXdXdXnXdXdXdXxXdXnXcXcXdXcXcXdXvX.XzXzXdXxXzXcXzXzXzXzXzXzXdXdX'.dXdXdX.X.X.X'.|.|.|.}.}.}._._._._.`.^.|./.(.(.(.(.(.^.^.(.(.|.(._.|._.{._.|._.|.|.|.|.'.|.|..X|..X.X.X.XdXzXzXdXdXxXxXxXxXdXnXMXcXmXmXnXmXmXmXmXMXmXmXMXMXMXMXMXMXSXMXSXMXMXZXMXMXMXMXNXmXmXMXMXmXmXMXfXmXMXmXfXmXmXNXmXmXmXmXmXcXnXxXnXcXzXvXdXdXzXdXdX'..X.X X.X|. X_.|._._._._.(.^././.~.~.T.T.T.T.T.I.U.U.K.I.L.L.L.S.H.L.H.H.G.H.A.A.A.z.h.h.h.h.z.a.i.z.a.a.a.a.a.i.a.a.i.i.u.u.i.i.i.a.i.a.a.a.a.a.u.a.a.a.u.u.u.i.i.u.i.a.t.a.r.s.u.u.u.u.t.u.u.u.u.t.i.i.t.u.u.u.u.u.i.u.i.u.i.i.a.i.i.i.i.i.s.u.i.i.i.s.i.u.u.u.u.u.u.t.u.p.u.u.u.i.u.i.i.i.u.i.u.i.u.u.t.t.u.u.u.u.u.u.t.t.u.u.u.u.u.u.p.u.p.u.u.u.u.u.p.u.p.u.i.t.p.p.t.u.u.t.i.u.u.u.a.a.a.a.a.f.f.z.h.h.h.h.h.h.A.h.h.A.S.A.S.Z.H.H.H.H.H.H.S.H.H.G.K.U.H.H.S.L.H.L.L.L.L.U.L.U.U.T.T.T.T.T.T.T.T.T.T.~.~././.(.(.(.(.(.(.|.{.|.`.|.|..X|. X.X|..X X|..X.X.X.X|.|.'.|.|.|.|._.|.{._.(.(.(.(.(.(./.(././././.(.!././././.(.E./.(.(.(._.^.^.(.(.(.(.(.(.(.(.[.(././.(.(././././.(.!.!.~./.!.~.~.T.~.T.~.~.~.~.[.T.~.T./.T.~.[.~./.~.~.~./.~.~.~.~.~.~.T.T.T.T.T.T.T.U.T.P.P.P.K.Y.L.L.U.L.L.L.K.L.L.L.P.P.P.P.P.U.Y.U.U.T.T.T.T.T.T.T.I.I.I.I.Y.R.T.T.T.L.U.L.U.L.L.L.L.P.L.P.L.U.L.L.U.I.L.S.L.U.S.H.H.H.H.H.H.H.S.S.A.S.S.A.h.G.z.A.G.A.A.S.h.h.z.H.S.S.S.H.A.H.G.G.Z.Z.A.H.A.A.A.A.A.G.A.l.l.l.l.h.h.g.g.z.k.k.k.a.k.k.d.k.E x.a.i.a.a.a.u.a.i.u.i.i.i.a.u.a.i.i.a.a.a.a.a.u.u.a.a.u.u.u.u.u.u.u.u.u.u.u.u.u.t.t.u.t.u.t.t.t.u.t.u.t.t.t.t.t.t.t.t.t.t.t.t.t.t.r.t.u.E u.t.E t.u.u.u.u.i.u.u.u.i.u.i.u.i.u.a.u.u.i.u.i.u.u.i.u.u.i.i.i.i.f.i.i.i.f.g.g.k.h.k.h.g.l.h.h.l.l.l.l.h.h.h.h.h.h.l.l.l.l.h.h.h.h.A.g.h.l.D.g.l.A.A.h.l.A.h.h.k.l.l.l.k.k.k.k.f.f.f.f.k.k.", "H H Z H H H H H P H L H H J K H J J J P H J P P L H J L H Z H H L J H H L H L P H H J H J H H L J L L H L K H H H P H P P H J J J J L H H L H H Z H H H H H H D H D Z H Z H H H D Z D D D D D Z Z Z Z Z Z Z Z F Z C F C Z C Z C C C C C C C C A C C A C C C C C C N Z C C N C C C N C Z C B B Z B B C B N C C C C C C C m C A N C C C C C C N C C C C C C C Z C Z Z Z Z C Z C C C Z Z Z Z Z Z C Z Z C Z Z Z Z Z Z Z D D D D D D Z L Z Z Z S H H T Z.S.D.U.S.H.G.S.D.H.S.G.H.H.H.D.U.L.H.S.U.S.L.L.S.U.S.Z.L.S.U.L.L.S.L.L.L.S.L.L.L.S.L.L.S.L.S.U.L.L.Y.P.P.P.P.P.P.L.U.U.L.Y.U.U.U.L.U.U.U.U.U.T.Y.Y.L.Y.L.L.U.L.L.L.I.I.U.P.P.U.T.U.T.T.T.T.~.T.~.T.~.~.~.(.[.(.(.(.(.(.(._.(._.(.(._.(._.|.}.}.}.}. X X.X.X.XdXdXzX@XdXdXmXnXdXdXcXxXxXxXxXxXcXcXcXmXnXnXmXmXmXmXNXMXcXcXmXcXcXcXcXxXxXzXdXcXzXzXzXzXxXxXxXzXxXxXvXxXcXzXzXcXzXzXzXzXzXzXzXxXxXzXzXzXzX.X.XdXdX@X.X.X.X'.|.|._.|._._.^._.{.`./.|.^.|.(.(.(.^.^.^.(.(.(._._._.(._._.|._.|.|.|.|.|.|.|..X X X X.XdX.XdX.XcXdXcXdXcXvXcXcXcXnXnXfXNXmXmXMXMXMXMXMXmXmXNXNXfXMXMXMXMXMXMXAXMXBXBXSXfXBXmXmXmXmXmXmXmXmXmXmXmXmXmXMXmXmXMXmXmXcXcXcXcXcXcXdXcXdXdX XdXdX.XdX.X.X X|.|.|.|.|.(.(.(.(.[.~.~.~.~.T.T.T.T.Y.P.P.P.P.P.U.L.L.L.D.H.H.H.H.H.A.S.A.h.l.h.l.k.f.f.f.f.i.i.k.i.a.a.i.i.i.i.i.i.i.i.i.i.a.a.a.a.z.i.i.i.i.i.i.i.i.p.i.i.i.p.i.u.i.i.u.i.u.u.u.u.t.u.u.u.u.t.u.u.u.u.u.u.u.i.i.i.s.t.i.i.i.i.i.i.i.i.i.i.i.s.u.u.i.u.u.u.u.u.i.i.u.u.u.i.i.i.i.i.i.u.i.i.u.u.t.u.u.u.u.u.u.u.u.u.u.u.u.r.u.p.t.u.p.i.r.u.u.u.u.s.t.u.u.u.u.u.u.u.u.u.u.u.a.t.i.i.a.a.f.a.g.f.h.h.l.l.z.A.A.A.A.A.A.G.G.H.H.H.H.S.L.H.H.H.H.H.L.H.L.H.L.S.H.L.L.L.U.T.T.T.T.T.~.T.T.T.T.~.T.T.Y.~.~./.^.(.(.(.(._.(.`.`._.(.|.|.|.|.|.|. X.X.X X X.X X.X.X.X.X|..X|.|.|._.|.|.`.(.(.(.(.(.(.(.^.~.E.(././././././././.(.(.^.(.^.`.(.(.(.(.(.(./.(././.(././.(.!.(.)./.~.(.~.~.U.(.~.~.T.~.~.T.~.~.~.~.T.^.T.~.T.[.~.~.~.^.~.~.~.!.R.~.~.[.T.T.T.T.U.T.T.U.T.I.U.U.U.L.L.Y.P.L.L.L.L.U.L.P.L.P.P.L.L.L.P.P.U.T.T.T.T.T.T.U.U.P.U.L.Y.Y.Y.Y.Y.U.U.L.L.U.L.S.S.L.L.L.L.L.L.L.L.L.L.L.L.L.S.L.H.L.H.H.H.H.H.H.S.S.A.A.H.A.A.A.A.A.A.A.A.h.A.A.A.A.A.A.W.J.A.H.J.h.H.h.H.A.H.A.A.A.h.h.h.h.l.h.l.l.h.j.f.z.j.f.x.f.f.j.a.j.a.f.a.a.a.a.i.i.u.i.i.u.i.i.i.i.a.a.i.a.i.a.a.i.i.i.u.u.u.u.u.u.u.s.u.i.s.u.t.u.u.t.t.u.t.t.t.t.u.t.t.E a.r.t.t.t.t.t.r.t.r.r.r.t.r.t.t.t.t.t.u.u.t.u.u.u.u.u.a.a.a.u.u.i.i.u.u.i.u.u.a.u.u.u.u.a.a.u.a.a.u.a.i.a.a.a.z.k.k.k.k.z.k.h.h.h.z.h.h.h.h.h.z.h.h.h.h.h.h.A.z.h.l.l.l.h.h.z.z.l.l.l.l.h.A.l.h.D.h.h.h.g.g.g.g.g.g.f.g.a.g.k.g.", "Z Z L H H F J H L L L H H H U P J J H L P H L H U P L L J P H H H H L H L H L L J J H H L H L H H H H H L H J H H U H H H H J L H J L H L L H H H H H J H H H H Z H H Z H Z H H F Z D D D D Z D Z Z Z Z Z Z C C C Z C C C C C C C Z C C C C C C C C C C C Z B C N Z N C N C N C C N B B B C C N B C B C C C C N C C Z C A C A C C C A N A C A C C A C Z C C Z Z C Z Z C Z A Z C Z Z C Z C A C Z Z Z Z Z Z Z Z F Z D D D D D D D Z H Z L H H Z H U Z.D.S.Z.S.A.G.G.S.G.D.G.H.L.S.U.D.S.K.L.S.L.U.L.L.L.U.L.H.U.S.U.S.L.L.L.L.L.L.L.L.S.L.U.U.L.L.U.L.L.L.S.P.P.P.Y.L.U.L.U.L.U.L.U.K.U.L.U.U.U.U.U.L.T.L.L.L.R.K.L.U.L.L.U.U.P.P.U.U.T.U.T.T.~.T.~.~.(.~.~././.(.(.(.(.(.(.(.(.(.(.(.(.(.(._._._.}.}.|. X.X.X.X.X.XdX XzXdXdXdXcXcXxXcXcXdXxXxXcXnXnXnXcXMXmXMXmXmXmXmXmXMXmXMXcXcXcXxXcXxXxX@XzXxXzXzXxXxXxXxXzXxXvXxXxXzXcXcXdXcXzXzXzXxXzXzXzXzXzXzXzX.XzX.XdXdX'..X.X|..X|.|.|.|._.`.`.`.`.`.(./.|.(.(.(.(.(.(.`.(._.(.(._._.|.{.|.|.|._.`.|.|.|.|.'.|. X X X.X.X.XdX.XdX XdXcXdXdXfXdXcXcXnXcXcXfXmXMXMXMXMXMXDXMXfXmXZXMXSXMXZXMXZXMXSXMXSXSXSXMXSXMXmXmXMXmXmXfXmXcXmXmXNXmXmXmXmXmXmXmXmXcXcXcXcXdXcXdXcXdX.X.X.X.X.X X.X|.|.|._._.(.^.^.(.E.~.!.T.~.T.T.T.T.P.P.U.L.P.P.L.S.S.P.U.H.H.H.D.S.H.A.A.A.l.l.k.l.j.f.f.f.k.a.a.a.i.a.i.i.i.i.i.i.i.i.a.i.a.a.a.i.i.a.a.a.a.a.i.i.i.i.i.i.i.i.i.i.u.i.u.u.u.u.u.u.u.u.t.u.u.u.u.u.u.u.u.i.i.u.i.u.a.i.i.i.i.i.i.i.s.i.t.s.i.s.i.u.u.i.i.u.u.i.u.u.u.i.u.f.i.i.i.i.i.i.u.u.u.u.u.u.u.u.u.u.u.u.u.i.u.u.u.u.u.u.p.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.s.t.i.a.i.a.f.a.k.k.f.f.h.h.l.l.l.A.A.A.A.A.A.A.h.G.G.G.S.L.S.H.H.H.H.L.H.L.L.H.L.H.L.L.H.U.L.L.U.Y.T.T.T.Y.T.~.~.~.T.~.~./.~.~.~.~.(.(.(.(.(.(.|.(.|.|.|.|.|.|..X.X.X|..X X@X X.X.X.X|.|.'..X|.|._.|.(.^.^.(.(.(.^.(./.(.(.[.{.^./.T./././.!.(.(./.(.(.`.(.(.`.(.(.(.(.(.(./././././.(.(./.(.^./.~.~.~.(.(.~.~.~.~.~.~.~.T.~.T.T.~.T.~.T.T.~.T.~.~.T.^.~.~.~.~.~.T.T.T.T.T.T.U.U.Y.U.I.T.T.U.L.U.L.L.L.L.L.L.L.L.L.L.P.L.L.L.L.L.Y.P.U.T.U.Y.T.Y.U.T.P.P.U.Y.L.U.P.P.P.U.U.Y.L.Y.P.P.L.L.L.L.S.L.L.L.L.H.L.L.L.H.L.H.H.H.H.H.H.A.H.A.S.S.S.A.A.g.A.A.A.g.h.A.A.h.A.A.j.A.Z.A.h.A.A.A.A.A.A.S.S.A.A.A.A.g.h.h.h.h.l.h.h.k.h.z.f.z.f.f.f.f.f.s.f.i.a.f.a.a.a.a.i.i.a.i.i.i.u.i.i.i.a.i.a.a.a.i.i.i.i.u.u.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.t.t.u.t.u.u.E t.u.t.u.t.t.E u.t.r.r.r.t.r.r.t.t.t.t.t.t.u.t.u.u.u.u.a.u.u.u.u.a.u.u.u.i.i.u.i.u.x.u.i.u.u.a.E u.u.u.a.i.a.a.a.a.a.k.k.k.k.g.g.h.h.J.z.h.h.A.h.h.h.h.h.l.h.h.A.z.h.A.l.l.h.h.h.h.z.l.h.l.l.l.l.h.h.f.h.z.z.g.g.a.g.i.k.k.a.g.k.k.z.", "G H Z H Z H J F H H J H H H L L H L L L H J L P J L L L J L J H H H H L L H H L J J J H H L J L H H J H L H H H J H P H U H L L J Z J H L J J H H H H Z H D H H H H H H Z J Z S Z Z Z D D D D D Z Z Z Z C Z C Z Z C C Z Z C C C C A Z C C C C C C C C C C B C C N N Z N Z C C C C C C C C N C C Z B B C N C C N Z C C C A C N C C A C N C C A C C C C C A Z C Z Z C Z Z Z C Z C Z C C Z Z Z C Z F B Z C D Z Z Z D Z D D D Z H D L H D Z H Z L H J e.H.H.H.G.S.D.S.S.S.H.G.H.H.L.H.U.L.H.L.L.L.S.H.U.S.L.H.L.L.H.L.U.S.L.L.L.L.L.L.L.L.P.L.L.L.L.L.P.S.P.P.P.P.P.L.L.Y.U.L.U.L.L.L.U.U.I.U.Y.U.U.U.U.L.U.U.L.Y.L.U.L.L.K.P.P.Y.P.T.Y.P.P.T.T.T.~.T.~.T.~.~.~.~.(.~.(.(.^.(.{.{.(.[._.(.(.(._._._.}.|.|..X.X.X XdXdXdXzXzXdXcXcXdXvXdXcXcXcXnXcXcXfXnXnXnXmXmXnXMXmXMXMXMXnXMXcXmXnXnXvXnXxXxXxXxXxXxXxXzXzXxXcXcX@XdXxXxXcXcXvXzXzXvXzXxXzXvXzXzXzXzXzXzXxXzXdX'.'.dX.X.X.X|.|.|.|._.|.{.|._.{.{.{.(.`.(.`.(.(.`.^.(.^.(.(._._._._._._.|._.|.|._.|._.|.|..X|. X X.X.X%XdXdX XdXcXcXdXdXcXnXnXmXnXmXNXNXmXMXMXmXMXMXZXMXZXmXZXMXMXSXMXSXMXMXZXBXMXfXSXMXMXMXMXmXcXmXmXmXmXmXcXmXmXmXmXmXmXmXmXcXcXcXcXcXcXnXdXzXdX@XdX.X.X.X X'.|._._.{.|.(.(.(./.^./.^.~.T.T.T.T.T.U.U.P.L.L.L.L.L.L.L.L.S.H.S.A.S.S.A.A.A.h.h.h.l.l.g.f.k.i.a.k.a.a.i.k.a.i.i.i.i.i.i.i.a.a.a.a.k.z.i.a.a.i.i.i.i.i.i.i.i.i.i.i.u.i.p.i.u.i.u.u.u.u.t.u.u.u.u.t.t.u.u.u.u.p.u.i.s.i.i.s.i.i.i.i.i.i.t.i.i.s.t.a.u.u.u.i.i.u.u.u.u.u.i.u.i.u.i.i.i.d.u.i.u.i.t.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.i.p.u.i.u.i.s.u.i.u.u.i.u.u.i.a.i.i.a.a.z.k.f.k.l.l.l.l.z.A.A.j.G.A.A.A.S.W.S.H.H.H.S.H.H.H.H.H.H.S.L.H.H.L.L.L.L.L.U.L.L.U.U.T.T.T.~.T.T.T.T.~.~.T.T./././.^./.^.(.(._._._._._.|.|.|.|.|.|.|. X.X X X X.X.X|..X.X.X.X|.|.|._.|.`._.`.^.(.(.(.(.(.~.[.^./.~.(.(./././.(././.(.(.(.(.(.`.(.(.(.!.(./.!././././.(.(.(./.(././.~.~.^.T.R.R.~.~.~.~.~.T.~.T.~.~.T.^.~.~.~.T.T.~.[.~.~.~.~.~.~.R.T.T.T.T.T.T.U.T.U.T.U.Y.L.U.U.L.L.L.L.L.L.L.L.L.P.P.L.L.L.P.L.U.P.U.Y.U.U.T.U.Y.T.L.L.T.U.U.P.U.L.P.P.P.L.L.L.P.L.L.L.L.L.L.L.L.H.L.L.L.H.L.L.L.H.H.H.H.H.H.Y.A.G.H.A.S.A.A.A.A.A.A.h.A.A.A.h.h.A.A.A.A.A.A.A.h.A.A.A.h.A.A.h.h.S.z.A.h.A.h.h.h.h.h.z.f.z.j.z.j.f.z.f.f.a.f.f.a.f.a.a.a.a.a.s.i.i.u.u.u.i.i.i.i.i.i.a.i.i.a.a.i.i.i.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.t.u.u.t.u.t.u.x.E u.t.t.u.t.t.r.t.r.r.r.t.t.t.t.t.t.t.t.u.u.u.u.u.t.u.u.u.u.u.a.u.u.s.u.i.i.i.x.u.u.u.u.i.u.i.u.i.u.i.i.a.a.a.a.k.x.i.d.k.k.k.z.h.h.h.h.h.h.G.z.z.h.h.h.z.g.h.z.A.A.z.h.h.z.l.A.h.l.A.l.l.D.h.l.l.h.h.h.h.z.g.g.g.g.g.z.k.g.g.g.g.z.a.", "D H H H Z H H H H G L L L L K P P L L H P H L H P L L L L L L H H L H L H P P H J H H H H H Z L H H H H H H H H U H J H H J L H L H J H H H H J G H H H H H Z H H D Z L Z H J D Z L D D Z Z D F A Z Z Z F C Z C D C C Z C C C C C C C C A Z C Z C C Z C C C C A Z N Z N N N C N N C N C B C N C N C B B C C C Z N C C C C N C A N A C A C C C C C C C C C Z C Z C Z Z C C C Z Z C A Z Z C Z Z Z A Z Z Z Z Z Z Z Z D D D D H D Z H Z H H H Z Z L Z b.G.U.S.G.G.S.S.S.H.S.S.H.H.G.Z.L.S.L.L.Z.S.U.L.D.L.F.L.L.H.L.L.S.L.L.L.L.L.S.L.D.L.P.S.L.S.L.P.P.P.P.P.P.P.S.L.L.U.U.L.U.L.Y.U.U.U.Y.L.L.L.U.L.U.L.L.U.L.L.L.L.U.Y.U.P.Y.P.P.P.Y.T.Y.T.Y.T.T.~.T.~.~.~./.(./.(.(.{.^._.(.{.(.(.(._.(.}.{.|._.|.}.|..X.X.X.X@XdXdXdXzXdXnXdXdXvXdXxXnXdXnXcXcXvXcXnXmXmXmXMXnXmXMXmXmXMXmXcXmXcXnXnXnXcXxXxXxXdX$XzXxXzXxXdXxXxXcXzXxXxXcXcXdXcXzXzXzXzXzXzXzXzXzXzXzX'..XdX.X.X.X.X.X.X X|.`.|.|._.|.^.|.|.`.^.|.^.(.`.^.(.^.(.`.{.(.(._.(._.(._._._._._._.|.|.|.|.|. X X X X@X.X XdXdXdXdXdX.XvXdXcXcXnXcXcXmXcXfXmXmXNXSXMXMXMXMXSXMXMXMXZXMXMXMXMXZXMXSXMXCXMXmXCXmXmXmXmXmXmXmXfXmXcXmXmXcXmXmXmXfXcXcXcXcXdXcXdXdXdX%XdXdX X X.X X X_._.|._._.(.|.(.[.^.(.^.~.~.~.~.P.T.U.U.U.P.L.L.L.L.L.L.S.S.S.H.S.H.S.S.A.z.A.h.h.h.k.k.k.z.a.k.k.i.i.f.i.i.a.a.i.i.s.a.i.a.a.a.a.a.i.a.i.a.a.i.i.i.i.i.i.i.i.i.a.i.s.i.i.i.i.u.u.u.u.u.u.t.u.E u.u.u.p.u.i.u.u.u.i.u.i.u.i.i.i.i.i.i.i.s.i.i.u.i.u.u.i.u.u.u.i.u.i.u.u.t.i.u.i.i.f.i.i.i.u.i.u.u.u.u.u.u.t.u.u.u.u.u.u.u.u.a.u.u.u.u.u.u.u.u.t.s.s.u.u.u.u.u.u.u.u.i.u.u.s.i.i.i.i.a.a.a.k.f.f.f.z.l.l.h.A.A.A.h.A.A.A.H.A.S.A.K.H.L.H.H.H.H.H.H.L.L.H.L.U.L.L.L.L.P.U.U.T.T.T.T.T.~.~.~.T./.T.T./.T.!./.!./.(.{.(.(.(._._._._.|.|._.|.|..X X|.|.|..X.X|..X.X.X.X.X`..X|.|._._.`.|.(.(.(.(.(.(.^././.^.{.~.(.~./././.!.(.(.(.!.(.^.`.(.`.(.(.(./.(./././././.(.^.(.)./.(./.(.~.~.~.~.E.~.~.~.~.~.~.T.(.~.T.~.T.T.~.T.~.~.T.~.~.~.~.~.~.R.~.T.T.T.T.T.Y.T.Y.I.I.U.U.U.U.L.L.L.L.L.L.L.L.L.L.L.A.L.P.P.L.P.L.P.L.U.Y.L.Y.P.U.U.U.U.L.L.Y.L.L.L.U.L.L.U.L.L.L.L.S.S.L.H.D.F.S.H.H.S.H.H.H.H.H.D.H.H.H.A.H.A.H.H.H.A.h.A.A.A.A.A.A.A.j.h.A.Z.h.h.h.A.h.A.A.h.h.j.A.j.Z.j.S.h.A.h.h.h.h.h.A.h.h.l.h.k.k.s.s.j.z.f.a.f.f.f.a.f.f.a.f.a.a.a.a.i.a.i.i.u.i.i.i.i.a.a.a.i.a.a.a.i.i.i.a.u.t.u.u.u.u.u.u.u.u.u.u.u.u.t.u.t.t.t.t.t.t.u.t.t.u.u.t.t.t.t.r.r.t.t.t.t.t.t.t.t.t.u.u.u.u.u.u.u.t.u.u.u.u.u.u.u.a.i.i.u.a.t.u.u.u.u.u.u.u.u.u.i.i.i.u.a.i.a.a.a.d.k.k.k.k.g.l.h.h.l.h.z.h.g.J.l.G.h.l.z.G.l.z.z.h.h.A.z.A.l.A.l.l.l.l.l.l.l.l.h.h.h.h.l.g.h.g.g.k.g.k.k.k.k.k.z.z." }; micropolis-activity/images/tiles-64.xpm0000664000076400007640000001112110724145723020371 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "64 64 13 1", " c black", ". c #3F3F3F3F3F3F", "X c #00007F7F0000", "o c gray50", "O c #00000000E6E6", "+ c #0000E6E60000", "@ c #99997E7E4C4C", "# c red", "$ c #FFFF7B7B0000", "% c #CCCC7E7E6666", "& c yellow", "* c gray75", "= c gray100", /* pixels */ " &&&&&&&&&&&&&&&&&&&&&&&&&&===#===&&&&&&&&&&&&&&&&===#===&&&&&&&", " & ==ooooooo== ==ooooooo== &", " &%%%%%%%%%@%%%%%%%%%%%%=o. . . . .o=%%%%%%%%%%=o. . . . .o=%% &", " &%@%%%%%%%%%%%%%%%%%%%=o. . . . . .o=%%%%%%%%=o. . . . . .o=% &", " &%%%%%*&.............=o. . . . . . .o=......=o. . . . . . .o= &", " &%%%%**..............=. . . . . . . .=......=. . . . . . . .= &", " &%%%***.o ..........=o . . . . . . . o=....=o . . . . . . . o=&", " &%%****.o ..........= . . . . . . . .o=....= . . . . . . . .o=&", " &%*****............*=. . . . . . . . o=...*=. . . . . . . . o=&", " &%*o***..........==*# . . . . . . . .o#.==*# . . . . . . . .o#&", " &%*****........====*=. . . . . . . . o=*==*=. . . . . . . . o=&", " &%*****.......=====*= . . . . . . . .o=*==*= . . . . . . . .o=&", " &%*o***......======*=o . . . . . . . o=*==*=o . . . . . . . o=&", " &%*****.....=*=====**=. . . . . . . .=**==**=. . . . . . . .= &", " &%*****.....======***=o. . . . . . .o=*==***=o. . . . . . .o= &", " &%*o***....=======****=o. . . . . ..=*===****=o. . . . . ..=% &", " &%*****....======******=o. . . . .o=*===******=o. . . . .o=%% &", " &%*****....=====********==o . . o==*===********==o . . o==%%% &", " &%*o***....=*==*********oo===#===.**==*********oo===#===..%%% &", " &%*****....==**********ooooooooo..*=**********ooooooooo...%%% &", " &%*****....=*********oooooooooo...=*********oooooooooo....@%% &", " &%*o***....*********oooooooooo....*********oooooooooo.....@%% &", " &%*****.....**o****oooooooooo......**o****oooooooooo......@%% &", " &%*****.....******ooooooooooo......******ooooooooooo......@%% &", " &%*o***......*****ooooooo.oo........*****ooooooo.oo.......@%% &", " &%*****.......***oo.ooooooo..........***oo.ooooooo........@%% &", " &%*****........*oooooooooo............*oooooooooo.........@%% &", " &%*o***.o .......ooooooo................ooooooo...........@%% &", " &%*****.o .............................................o .@%% &", " &%*****............ . . ...............................o .@%% &", " &%*o***.......*******************.........................@%% &", " &%*****&......*ooooooooooooooooo*........................&@%@ &", " &%****oooooooo*ooooooooooooooooo*oo.o.o.oooooooooooooooooo@%% &", " &%*o*ooooooooo*ooooooooooooooooo*oooooooooooooooooooooooo@@%% &", " &%**oooooooooo*ooo...ooooo...ooo*....................ooo@@@%% &", " &%*oooooooooo**oo.ooo..o..ooo.oo*....................oo@@@@%% &", " &%oooooooooo*o*oo.ooooo.ooooo.oo*.........&..........o@@@@@%% &", " &%%@@@@@@@@*o**oo&oooo&o.oooo.oo*........&...........@@@@@@%% &", " &%%%@@@@@@@o*o*ooo.oo.ooo.oo.ooo*.......&............@@@@@@%% &", " &%%%%@@@@@@*o**ooo.o.oo#oo.o.ooo*......&.............@@@@@@%% &", " &%%%%%@@@@@o***oooo.oo##$oo.oooo*.....&..............@@@@@@%% &", " &%%%%%%@@@@****ooo.o.oo$oo.o.ooo*....&&&&&...........@@@@@@%% &", " &%%%%%%%%%%*o**ooo.oo.ooo.oo.ooo*...&&&&&............@%%%%%%% &", " &%%%%%%%%%%****oo.oooo.o&oooo&oo*......&.............@%%%%%%% &", " &%%%%%%%%%%*o**oo.ooooo.ooooo.oo*.....&.....ooooooo.@@%%%%%@% &", " &%%%%%@%%%%****oo.ooo..o..ooo.oo*....&......oooooo.@@@%%%%%%% &", " &%%%%%%%%%%*o**ooo...ooooo...ooo*...&.............oooo**$$*****", " &%%%+X%%%%%****ooooooooooooooooo*..&........oooooooooo**$$*****", " &%%%XX%%%%%*o**ooooooooooooooooo*...........oooooooooo*********", " &%%@%%%%%%%****o.o.o.o.o.o.o.o.o............oooooooooo*********", " &%@%%%%%%%%*o*o.o.o.o.o.o.o.o.o.............oooooooooo*********", " &%%%%%%%+X%***..............................o******************", " &%%%%%%%XX%*o*..............................o***************% &", " &%%%%%%@%%%**oooooooooooooooooooooooooooooo.o***************% &", " &%%%%%@%%%%*ooo.o.o.o.oooooooooooo.o.oo.oo.oo***************% &", " &%%%%%+X%%%oooooooooooooooooooooooooooooo.ooo***************% &", " &%%%%%XX%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@oooX+*OO***********% &", " &%%%%@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@oooX+*OO***********% &", " &%%%@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@oooo***************% &", " &%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%% &", " &%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*=*=%%% &", " &%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%==*=@%%% &", " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&", " " }; micropolis-activity/images/tiles-13.xpm0000664000076400007640000000263210724145723020372 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "32 32 9 1", " c black", ". c #00003F3F0000", "X c #3F3F3F3F0000", "o c #3F3F3F3F3F3F", "O c #7F7F3D3D0000", "+ c #3C3C0000FFFF", "@ c #FFFF3C3C0000", "# c #BFBFBFBF0000", "$ c yellow", /* pixels */ " ", " ############################ ", " # ########################## $ ", " ## ######################## $$ ", " ### $$$ ", " ### ++++++++++++++OXXXXX++ $$$ ", " ### ++++++++++++XXXXOXOX+X $$$ ", " ### ++++++++++++OXOX+X XX+ $$$ ", " ### ++++++++++XOXXXOXXX+X+ $$$ ", " ### +++++++++XXXOX+XXX+X++ $$$ ", " ### +++++++++XXX XXXXX++++ $$$ ", " ### +++++++OOXX+XXOX+++X++ $$$ ", " ### ++++++XXX++OXX++++++X+ $$$ ", " ### ++++++XX++XX+++++++O++ $$$ ", " ### ++++OX+ XXX+++X+++XX+X $$$ ", " ### ++++XX+OXX++++++++OXOX $$$ ", " ### +++X++X++++++++++OXX++ $$$ ", " ### ++X++X++++++++++OOXXX+ $$$ ", " ### ++ + +++++++++++X+X+++ $$$ ", " ### ++ + ++++++++++X+X++++ $$$ ", " ### ++ + +++++++++o+o+++++ $$$ ", " ### ++ + +++++++++o+o+++++ $$$ ", " ### + +++ooooo+++++ $$$ ", " ### . o o ...o o o..... $$$ ", " ### . .......@..... $$$ ", " ### .........@...@........ $$$ ", " ### ...................... $$$ ", " ### $$$ ", " ## $$$$$$$$$$$$$$$$$$$$$$$$ $$ ", " # $$$$$$$$$$$$$$$$$$$$$$$$$$ $ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " " }; micropolis-activity/images/scdet.xpm0000664000076400007640000001026010724145723020127 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "67 57 7 1", /* colors */ "` c #000000", "a c #00BF00", "b c #3F3F3F", "c c #3F3FFF", "d c #BF7F3F", "e c #585858", "f c #DFDFDF", /* pixels */ "```````````````````````````````````````````````````````````````````", "``fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff``", "`f`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`e`", "`ff`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`ee`", "`fff```````````````````````````````````````````````````````````eee`", "`fff`dddddddddddd````````````ddddddddddddddddddddddddddddddddd`eee`", "`fff`dddddddddddd``ddddddddd`dddadddddddddddd`dddddddddddaaddd`eee`", "`fff`d`dd````ddd``d`d`````dd`dd`addddddd````````dddaaaddddaadd`eee`", "`fff`dddd`ddddddddddd`dd`ddd`dddaddadddd````b`ddddaadaaaaadadd`eee`", "`fff`d`dd`ddddddd`dd`dd`dddd`dddadadd`d`````b`dddddaaaadddaddd`eee`", "`fff`d``dddddaad`d``dddddd```dddaaad`d``````b`ddddddddbddddddd`eee`", "`fff`d```ddddaddddddd`d`dd```dddbaabbbbbbbbb`bddddddd`bddddddd`eee`", "`fff```dddddaddddd`d`ddd`dd```bb`````d`bbbbb`bbbbbbb`ddbddaddd`eee`", "`fff``ddddd`aaaad`b`ddd```````bbbbb````b``````bb```b```bbddddd`eee`", "`fff`dddddaaadadd````````bb```bbbbb````b``bb````bbbbbbbbb`bddc`eee`", "`fff`dddddddddddd```````bbbbb`bbbbb````bbbb```bbbbbbbbbbbbbddc`eee`", "`fff`ddddd`ddddddd``bbbbbbbbb`bbb``````b`bbb`bbbb`bbb`bbbbbdcc`eee`", "`fff`ddddddddddddd`bbbbbbb``````````````````````````b`bbb`ddcc`eee`", "`fff`dd``````````````````````````````b`b``bb`bb```b````bbbddcc`eee`", "`fff`dddd`dddddddd`bbbbbbbbbb```bb```b`b``bb`bb```bbbbbbbbdccc`eee`", "`fff`dddd`ddaadddd`bb``bbb````bbbbbbbb````bb`bb```bb```bbbbccc`eee`", "`fff`ddad`ddaadddd`bb`````bbb`bbbb``bb`bbbb``bb```bb````bbcccc`eee`", "`fff`ddad`ddd``d`d`bb````bbbb`bbbbbbbb`bbbbbb`b```bb````b`cbcc`eee`", "`fff`dddd`ddd`dd```bb```bbbbb`bbbbbbbb`bbbb`b`b```b`b```b`cccc`eee`", "`fff``````b````````bb```b```````````````bbb```b```b`b`````bccc`eee`", "`fff`dddd`bb```b`b`bb```bbbbb`bbbbbbbb`bbb````b``bbbb`````bbcc`eee`", "`fff`dddd`b````b`bbbb```bbb```bbbbbbbb`bbb```````bbbb````bbbcc`eee`", "`fff`dddd`b`bbbb``bbb````bbb`bb``````````b````b``bbbb``bbbb`cc`eee`", "`fff`dddd``bbbbb`````````bb``bbbbbbbbb`bbb````bb``bb``bb``bccc`eee`", "`fff`d````````````````````````````````````````b``bbb``b```bccc`eee`", "`fff`dddd``b`b`````````````````````bbb``````b````bbb``b```bccc`eee`", "`fff`addd``b`b`````````````b```b`bb``b``````b`bbbb`b``bb``bccc`eee`", "`fff`dadd``b`b``b````````````b```bb```````````bbbbb```bb``bccc`eee`", "`fff`dadd``b`b``bb`bb``bb````b````b```````````````````````bccc`eee`", "`fff`dadd``b`b``bb`bb``bba```b```bb```b```bbb`bb``````b``bbccc`eee`", "`fff````````````````b`````````````b```b```b```bb``````b`bbcccc`eee`", "`fff`dddd`bb`b``bb`bb``bb`b```````b```bbb`b````bb`````abbbcccc`eee`", "`fff`dddd`bb`b`b`b`b``bbb`bb``````bbb```bbb````b```bbbb`bbcccc`eee`", "`fff`dddd`bb`b`b`b`b``bbb`bb``a````a```````````bababbbb`cccccc`eee`", "`fff`dddd`bb```````````````````a```````````````````b``cccccccc`eee`", "`fff`dddd`bb``bb````````````````a`babbb`bbbbbbbb`bbbcccc`dddcc`eee`", "`fff`dddd`````b```bbb````````bbb`bbbbbbbb`````bbcbbcccd`daadcc`eee`", "`fff`dddd`bb``b`````b````````bbb``````b``cccccbcccccdd``daddcc`eee`", "`fff`dddd`b```b``b`bb`bb```b`bbb``bbbbbcccccccccccccddaa`ddccc`eee`", "`fff`dddd`b``````````````````bbbbb`ccbcccccccccccccc`da``ccccd`eee`", "`fff````````````bb`bbb````bbbbbbbcccccccccccccccccccccccccccdd`eee`", "`fff`dd````````````b````bbbbbbcccccccccccccc`ccccccccc`ddd`ddd`eee`", "`fff`dddd`ddddd``````bbbbbbcccccccc`dddddddddddd``dddddd``dddd`eee`", "`fff`dadd`ddddd``d```bbbbbbcccccdddddddddd``dd`d``d```ddd`dddd`eee`", "`fff`ddaa`ddddd``d``bbbbbccccdddddddddad`ddad``ddddd```dd`dddd`eee`", "`fff`ddddadddddd`d`bbbbcccccdddd`aaada````dddaaaadddddd```dddd`eee`", "`fff`ddddddddddddd`bbcccccdddddddddddddddd````dddaddaadddddddd`eee`", "`fff```````````````````````````````````````````````````````````eee`", "`ff`eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`ee`", "`f`eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`e`", "``eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee``", "```````````````````````````````````````````````````````````````````" }; micropolis-activity/images/tiles-31.xpm0000664000076400007640000000263210724145723020372 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "34 34 2 1", " c black", ". c #7E7E7E7E7E7E", /* pixels */ "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "............. . . . . . . ... ....", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "......... . . . . . . . . . . ....", "..................................", "..................................", "..................................", "..................................", ".................................." }; micropolis-activity/images/icpol.xpm0000664000076400007640000000305210724145723020134 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "34 34 11 1", /* colors */ "# c #000000", "a c #7F7F7F", "b c #00FF00", "c c #5D5D5D", "d c #007F00", "e c #FF0000", "f c #4F4FFF", " c #FFFFFF", "h c #FFFF00", "i c #BFBFBF", "j c #0000FF", /* pixels */ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii", "ijjbbbbjjjjbbbbjjjjbbbbjjjjbbbbjjc", "ijjbbbbjjjjbbbbjjjjbbbbjjjjbbbbjjc", "ijjccccccccccccccccccccccccccccjjc", "ijjc##########################ijjc", "ibbc# # # # # # # # # # # # ##ibbc", "ibbc## # # # # fcffcfffffff# #ibbc", "ibbc# # # # # j###########j ##ibbc", "ibbc## # # # jfaaaaaaaaaa#j# #ibbc", "ijjc# # jacccffahhhaahhaa#jca#ijjc", "ijjc## jfacccfjchcchchcha#jca#ijjc", "ijjc# jffaca#jfchhhcchcha#jca#ijjc", "ijjc##ffjacccffchccachcha#jca#ijjc", "ibbc# fjfacccfjchaaachcha#jca#ibbc", "ibbc##jffaca#jfchaaachhca#jca#ibbc", "ibbc# ffjacccffcaaaacccaa#jca#ibbc", "ibbc##fjfacccfjjjjjjjjjjjjcca#ibbc", "ijjc# jffaaaaj#j#j#j#j#j#aaaa#ijjc", "ijjc##ffjjjjjjj j###j jjjjjj #ijjc", "ijjc# fjj#j#j#aj#ccja#j#j#j ##ijjc", "ijjc##jjjjjjjaj#ccjajjjjjj # #ijjc", "ibbc# # # # #acaccaca # # # ##ibbc", "ibbc## # # #ccccccccccc# # # #ibbc", "ibbc# # # #aaacccccccccc# # ##ibbc", "ibbc## # #aa #aa # #a# aa# # #ibbc", "ijjc# # # aaaaaja##aajaaa # ##ijjc", "ijjc## # #aa a##a ea## aa# # #ijjc", "ijjc# # # aa#a ea##a e#aa # ##ijjc", "ijjc## # #aa a##aaaa## aa# # #ijjc", "ibbc##########################ibbc", "ibbciiiiiiiiiiiiiiiiiiiiiiiiiiibbc", "ibbjjjjbbbbjjjjbbbbjjjjbbbbjjjjbbc", "ibbjjjjbbbbjjjjbbbbjjjjbbbbjjjjbbc", "iccccccccccccccccccccccccccccccccc" }; micropolis-activity/images/tiles-138.xpm0000664000076400007640000001021510724145723020456 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "67 57 5 1", " c black", ". c #585858585858", "X c cyan", "o c yellow", "O c #DFDFDFDFDFDF", /* pixels */ " ", " ............................................................... ", " . ............................................................. O ", " .. ........................................................... OO ", " ... OOO ", " ... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXoooXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoooXXXXXXXXX OOO ", " ... XXXXXXXXXooo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo XXXXXXXX OOO ", " ... XXXXXXXXXooo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo XXXXXXXX OOO ", " ... XXXXXXXXXooo XXXXXXXoooooXXXXooooooXXXXXXoooXooo XXXXXXXX OOO ", " ... XXXXXXXXXooo XXXXXXoooooooXXXoooooooXXXXoooooooo XXXXXXXX OOO ", " ... XXXXXXXXXooo XXXXXoooo ooooXXo ooo XXoooo ooo XXXXXXXX OOO ", " ... XXXXXXXXXooo XXXXXooo Xooo XXoooooo XXooo Xooo XXXXXXXX OOO ", " ... XXXXXXXXXooo XXXXXooo XXooo oooooooo XXooo XXooo XXXXXXXX OOO ", " ... XXXXXXXXXooo XXXXXooo XXooo ooo ooo XXooo XXooo XXXXXXXX OOO ", " ... XXXXXXXXXooo XXXXXooooXoooo ooo Xooo XXooo Xoooo XXXXXXXX OOO ", " ... XXXXXXXXXooooooooXXooooooo oooooooooXXXoooooooo XXXXXXXX OOO ", " ... XXXXXXXXXoooooooo XXooooo XXooo ooo XXXooo ooo XXXXXXXX OOO ", " ... XXXXXXXXXX XXX XXXX XX XXXX X XXXXXXXX OOO ", " ... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXXoooooooXoooXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXoooooooo ooo XXXXooXXXXXXXXXXXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXoooo o X XXXooo XXXXXXXXXXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXoooo XXXX oooXXXoooooooooXXXXXooXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXooo XXXXXXooo XXoooooo oooXXXoo XXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXooo XXXXXXXooo XXXooo ooo XXoo XXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXooo XXXXXXXooo XXXooo XXooooXoo XXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXooo XXXXXXXooo XXXooo XXXooo oo XXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXooooXXXXXXXooo XXXooo XXXooooo XXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXooooXXXXoXooo XXXooo XXXXoooo XXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXoooooooo ooo XXXoooooXXXooo XXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXXoooooo ooo XXXXoooo XXooo XXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXXX XX XXXXX XXoo XXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo XXXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo XXXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX OOO ", " ... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX OOO ", " ... OOO ", " .. OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OO ", " . OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO O ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " " }; micropolis-activity/images/tiles-3.xpm0000664000076400007640000000423210724145723020307 0ustar simcitysimcity/* XPM */ static char *tiles__[] = { /* columns rows colors chars-per-pixel */ "39 47 5 1", " c black", ". c #00007F7F0000", "X c red", "o c gray81", "O c gray100", /* pixels */ " ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOO.OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOO.OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " O.....OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOO.OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOO.OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOO OO ", " OO oooooooooooooooooooooooooooooo OO ", " OO oooo ooooooo ooooooo ooooo OO ", " OO oooo oo ooooo ooo oooooo ooooo OO ", " OO oooo oo ooooo oooooooooo ooooo OO ", " OO oooo oooooo oooooooooo ooooo OO ", " OO oooo oo ooooo ooo oooooo ooooo OO ", " OO oooo oo oooooo ooooooo ooooo OO ", " OO oooooooooooooooooooooooooooooo OO ", " OO OO ", " OO OOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OXXXXXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ", " " }; micropolis-activity/images/obj4-6.xpm0000664000076400007640000000530110724145723020026 0ustar simcitysimcity/* XPM */ static char * obj4_6_xpm[] = { "48 48 10 1", " c None", ". c #00000000E6E6", "X c #000000000000", "o c #7F7F7F7F7F7F", "O c #3F3F3F3F3F3F", "+ c #BFBFBFBFBFBF", "@ c #FFFFFFFFFFFF", "# c #FFFF7F7F0000", "$ c #CCCC7F7F6666", "% c #FFFF00000000", " ", " ", " ", " ", " . ", " ", " ", " . . ", " . ", " . . ", " . ", " . ", " . . ", " . ", " . . . ", " ", " . . ", " . XXXX XXXX .", " oooooXXOOXXooXXOOXXo+XXXX . ", " XXXXO+o@ooX#XXXXXoX#XXXXXo++$$$OX . ", " XXO$$$$++oooXXX###XoXXX###Xoo++$$$$$X ", " XO$$$O$$$++ooXXXXXXXoXXXXXXXooo++$$$$$X ", " X$$O$$$$$$++oooXXXXXoooXXXXXoooo++$$$$$X ", " X$$$$$$$$$++o@ooXXOoooooXXOooooo++$$$$$X ", " XO$$$O$$$++oooooooooooooooooooo++$$$$$X ", " XXXO$$$$+OXXXXXXXXXXXXXXXXXXXX++$$$OX ", " %XXXXXXXXoXXoXXoXXoXXoXXoXXXXXXXXXXX . ", " %XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX% . ", " %%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", " . ", " . ", " . . . ", " ", " . . . . ", " . ", " . . ", " . . ", " . ", " . . ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; micropolis-activity/images/tiles-107.xpm0000664000076400007640000000520310724145723020453 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "48 48 6 1", " c black", ". c red", "X c #FFFF7F7F0000", "o c yellow", "O c gray100", "+ c None", /* pixels */ "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "+++++++++OOXXXX+++++++++++++++++++++++++++++++++", "++++++++XXXX...X++++++++++++++++++++++++++++++++", "+++++++XOXX.++...+++++++++++++++++++++++++++++++", "+++++++XXXX.++++++++++++++++++++++++++++++++++++", "+++++++XOXX.++++++++++++++++++++++++++++++++++++", "+++++++XXXXX.+++++++++++++++++++++++++++++++++++", "+++++++XXXXXX.++++++++++++++++++++++++++++++++++", "++++++++XXXXXX.++++++...++++++++++++++++++++++++", "++++++++XXOXXXX.++++.X...+++++++++++++++++++++++", "+++++++++XXXXXXX.++.X.X..+++++++++++++++++++++++", "++++++++++XXXXXXX.++.X.X.+++++++++++++++++++++++", "+++++++++++XOXXXXX.+X.X..+++++++++++++++++++++++", "+++++++++++XXXXXXXX. X.X...+++++++++++++++++++++", "++++++++++++XXOXXXXX..X.X...++++++++++++++++++++", "+++++++++++++XXXXXXXX........+++++++++++++++++++", "++++++++++++++XXOXXXXX.......+++++++++++++++++++", "+++++++++OOXX++XXXXXXXX......+++++++++++++++++++", "++++++++XXXXOXXXXOXXXXXX.....+++++++++++++++++++", "++++++++XXXXXXXXXXXXXXXXX.....++.X.+++++++++++++", "++++++++XXXXXXXX.XXOXXXXX.X.....X.X.++++++++++++", "+++++++++XXXXX...XXXXXXXXX.X...XXX..++++++++++++", "+++++++++XXXX.....XXOXXXXXX.X.X.X....+++++++++++", "++++++++++XXX++....XXXXXXXXX.X.X.X...+++++++++++", "++++++++++++++++....XXOXXXXXX.X.X.X..+++++++++++", "++++++++++++++++++...XXOXXXXXX.X.X....++++++++++", "+++++++++++++++++++++XXXOXXXXXX.X...++++++++++++", "++++++++++++++++++++++XXXXXXXXXX...+++++++++++++", "+++++++++++++++++++++OXXXXOXXXXXX...++++++++++++", "++++++++++++++++++++OXXXX.XXXXXXXX...+++++++++++", "++++++++++++++++++++OXXXX..XXXXXXXX...++++++++++", "++++++++++++++++++++XXXXX...XXXXXXXX..++++++++++", "++++++++++++++++++++XXXXX....XXXXXXXX..+++++++++", "+++++++++++++++++++++XXXX.++++XXXXXXXX..++++++++", "+++++++++++++++++++++++XXX+++++XX..XX....+++++++", "++++++++++++++++++++++++++++++++X.o.X..o.+++++++", "+++++++++++++++++++++++++++++++++X.ooXoo.+++++++", "++++++++++++++++++++++++++++++++++X.X.X.X+++++++", "++++++++++++++++++++++++++++++++++++.X.X.+++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++" }; micropolis-activity/images/tiles-147.xpm0000664000076400007640000001033410724145723020460 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "67 57 8 1", " c black", ". c #3F3F3F3F3F3F", "X c #585858585858", "o c #3C3C0000BFBF", "O c #3F3F3F3FFFFF", "+ c #0000BFBF0000", "@ c #BFBF7F7F3F3F", "# c #DFDFDFDFDFDF", /* pixels */ " ", " ############################################################### ", " # ############################################################# X ", " ## ########################################################### XX ", " ### XXX ", " ### @@@@ @@@@@@@ @@+@@@@@@@+@@@@@@ @@@@@+@@@@@@@+++@@@@ @@@@@ XXX ", " ### @@@@@ @@@@@@ @@@@@@ @@+@+@@@@@ @@@@@@@@@+@@@@@++@@@ @@@@@ XXX ", " ### @@@@@ +@+@@@ @@@ . @@@@+@@+ @+@ @ @@@+@@++@@@ @@@@@ XXX ", " ### @+@@@ @@@@@@ @@ ..... @@@@@@ @ @ @+@@@@@@@ @@@@@ XXX ", " ### @@@@@ @@@@@@ @@ .. @@@@ @@ @@@@.. @@@@ @@@@@ @@@@@@@ XXX ", " ### @@@@@ @@@@@@ @ .. +++@@ @@@ @@@@ . @@@@@ +@ @@@@++@@ XXX ", " ### @@@ @..@ @+++++@@@ @@@ .. @@@@ @@ @@@@@+@+@ XXX ", " ### @ @@@ @@@ @@ @@@ +++++@@ . @@ ...@.. .@ @@@@@@@@@@ XXX ", " ### @@ @@ @@ @@@ .. @++++++@@@ ....... .. .@ ++@@@@@@@@ XXX ", " ### @@@ @ @@ . .... +@++ . .......... .. . @@@@@ XXX ", " ### @@@@ .... . .....++++@.. ... ..... . @@....@@@@ XXX ", " ### @@@ .. ... ...... ... .... ....... . ....@@@@ XXX ", " ### ..... ... ... .... ........ .. .. ......@@@@ XXX ", " ### . .. .... ... ... .... ... ... ... .. ......@@@@ XXX ", " ### . .. ...... .... ... ... .... ... XXX ", " ### ... ....... ... ... ... .. ..... ..@@ XXX ", " ### ..... ...... .... ... ... ... ... ... ... .. ..... ..@@ XXX ", " ### ...... .... .... ... .. . ... .. ..... ..@@ XXX ", " ### O..O... .... ... .. . OOOO ..@@ XXX ", " ### OO.O........ .... ... . ..OOOO++OOO . ...... ... . . @@ XXX ", " ### OOO. .... ... ... .O+++++++O.. ...... ... . . @@ XXX ", " ### OOOO.... ... .... ... . . .O+++++++O. .... . @@ XXX ", " ### OOOO.... ... .O++++++OO. .... .. ... . . @@ XXX ", " ### OOOO. .. .. . ..OOOO+++O.. .. ... . . @@ XXX ", " ### OOOOO... ...... .. .. ... .OOOOO. ... ... ... . @@ XXX ", " ### OOOOO... ...... ..... .. ..... ......... ... ... ....@@ XXX ", " ### OOOOO.OOOO.O .. .. . . ...... ... ... ....@ XXX ", " ### OOOOO.OOO OOOOO .... .. . .. . ..... ... . XXX ", " ### OOOOOOOOOOOOOOOOOOO . .. .. . . XXX ", " ### OOOOOOOOOOOOOOOOOOOO.OO.. ..... ................. ... . XXX ", " ### OOOOOOOOOOOOOOOOOOOO.O... .... ..... . .. . XXX ", " ### OOOOOOOOOOOOOOOOOOOOOOOOO... .OOOOOO OOO ... .... . ... XXX ", " ### OOOOOOOOOOOOOOOoOOOOOOOOO..O OOOO...OOOOOO .. ... ..... XXX ", " ### OOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOO.OO O.. .... XXX ", " ### OOOOOOOOOOOOOOOOOOOOOOOOOOOO OO O O OOOOOOO.. . . XXX ", " ### OOOoOOOOOOOOOOOOOOOOOOOOO ...OOO... .. .. XXX ", " ### OOOOOOOOOOOOOOOOOOOOOOOOOO ... ...... .OOOOO.. ... .. XXX ", " ### OOOOOOOOOOOOOoOOOOOOOOOOOO ... OOOOOO. ..... XXX ", " ### OOOOOOOOOOOOOOOOOOOOOOOOO .... +... @ ....OO OOOO.... XXX ", " ### OOOOOOOOOOOOOOOOOOOOOOOOO ..... .... @ .....OO OOO.O.. XXX ", " ### OOOOOOOOOOOOOOOOOOOOOOOOO...... .... @ @ @ OO.OO. XXX ", " ### OOOOOOOOoOOOOOOOOOOOOOOOO @@ @@@@@ @ OOO XXX ", " ### OOOOOOOOOOOOOOOOOoOOOOOOOOO . ...... @@@@@ @@@@@ @@ @ XXX ", " ### OOOOOOOOOOOOOOOOOOOOOOOOOOO.. . ..... +++@ . @@@@@ @@@@@ XXX ", " ### OOOOOOOOOOOOOOOOOOOOOoOOOOO .. + @@@@ XXX ", " ### OOOOooOOOOOOOOOOOOOOOOOOOOO . .. @@@@@@@@@@ @@@@@@@@@@@ XXX ", " ### OOOOOOOOOOOOOOOOOOOOOOOOOOO.. .. @@@@@@@@@@@@@@@@@@@@@@@@ XXX ", " ### XXX ", " ## XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX ", " # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " " }; micropolis-activity/images/tiles-1.xpm0000664000076400007640000001114510724145723020306 0ustar simcitysimcity/* XPM */ static char *tiles__[] = { /* columns rows colors chars-per-pixel */ "64 64 14 1", " c black", ". c #3F3F3F3F3F3F", "X c #00007F7F0000", "o c gray50", "O c #00000000E6E6", "+ c #66666666E6E6", "@ c #0000E6E60000", "# c #99997E7E4C4C", "$ c red", "% c #FFFF7B7B0000", "& c #CCCC7E7E6666", "* c yellow", "= c gray75", "- c gray100", /* pixels */ "&&&&&&&&&&&&&&&&&===============&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&", "&&&&&&&&&&&&&&&&==$oooooooooooo$.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&", "&&&&&&&===========ooooooooooooooo.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&", "******==%ooooo====oooooooooooooooo.*****************************", "*&&&&===ooooo=====oooooooooooooo.oo.&&&&&&&&&&&&&&&&&&&&&&&&&&&*", "*&&&====ooooo=====ooooooooooooo. oo.&&&&&&&&&&&&&&&&&&&&&&&&&&*", "*&&=====ooooo=====oooooooooooo. oooo.&&&&&&&&&&&&&&&&&&&&&&&&&*", "*&&=====ooooo=====ooooooooooo. ooooo.&&&&&&&&&&&&&&&&&&&&&&&&&*", "*&&=====o-.oo=====oooooooooo+ oooooo.&&&&&&&&&&&&&&&&&&&&&&&&&*", "*&&=o===o-.oo===-=ooooooooo++Oooooooo.&&&&&&&&&&&&&&&&&&&&&&&&&*", "*&&oo===ooooo==-o=oooooooo.+Ooooooooo.&&&&&&&&&&&&&&&&&&&&&&&&&*", "*&&o====ooooo=-o==ooooo.o. ooooooooo.&&&&&&&&&&&&&&&&&&&&&&&&&*", "*&&=====ooooo=o===oooooo. ooooo.oooo.&&&&&&&&&&&.&&.&&.&&.&&.&*", "*&&=====ooooo=====oooooo ooooo. ooo.&&&&&&&&&&.&&.&&.&&.&&.&&*", "*&&=o===ooooo=====ooooo.oo.ooo. oooo.&&&&&&&&&&&#&&#&&#&&#&&#&*", "*&&=====ooooo=====ooooooooooo. ooooo.#&&&&&&&&&&&&&&&&&&&&&&&&*", "*&&=o===ooooo=====oooooooooo+ oooooo.##&&&&&&&&&.&&&&&&&&&&&.&*", "*&&=====ooooo=====ooooooooo++Oooooooo.##&&&&&&&&.&&&&&&&&&&&.&&*", "*&&=o===ooooo=====oooooooo.+Ooooooooo.##&&&&&&&&&#&&&&&&&&&&&#&*", "*&&=====ooooo=====ooooo.o. ooooooooo.##&&&&&&&&&&&&&&&&&&&&&&&*", "*&&=o===ooooo===-=oooooo. ooooo.oooo.##&&&&&&&&&.&&&&&&&&&&&.&*", "*&&=====ooooo==-o=oooooo ooooo. ooo.##&&&&&&&&.&&&&&&&&&&&.&&*", "*&&====-.oooo=-o==ooooo.oo.ooo. oooo.##&&&&&&&&&#&&&&&&&&&&&#&*", "*&&===-oooooo=o===ooooooooooo. ooooo.##&&&&&&&&&&&&&&&&&&&&&&&*", "*&&==-o=ooooo=====o oooooooo+ oooooo.##&&&.&&.&&.&&&&&&&&&&&.&*", "*&&=-o==ooooo=====ooooooooo++Oooooooo.##&&.&&.&&.&&&&&&&&&&&.&&*", "*&&-o===ooooo=====oooooooo.+Ooooooooo.##&&&#&&#&&#&&&&&&&&&&&#&*", "*&&o===-.oooo=====ooooo.o. ooooooooo.##&&&&&&&&&&&&&&&&&&&&&&&*", "*&&===-oooooo=====o oooo. ooooo.oooo.##&&&.&&&&&&&&&&&&&&&&&.&*", "*&&==-o=ooooo=====oooooo ooooo. ooo.##&&.&&&&&&&&&&&&&&&&&.&&*", "*&&=-o==ooooo=====ooooo.oo.ooo. oooo.##&&&#&&&&&&&&&&&&&&&&&#&*", "*&&-o===ooooo===-=ooooooooooo. ooooo.##&&&&&&&&&&&&&&&&&&&&&&&*", "*&&o====ooooo==-o=o oooooooo+ oooooo.##&&&.&&&&&&&&&&&&&&&&&.&*", "*&&=====ooooo=-o==ooooooooo++Oooooooo.##&&.&&&&&&&&&&&&&&&&&.&&*", "*&&=====ooooo=o===oooooooo.+Ooooooooo.##&&&#&&&&&&&&&&&&&&&&&#&*", "*&&===o=ooooo=====ooooo.o. ooooooooo.##&&&&&&&&&&&&&&&&&&&&&&&*", "*&&==oo=o-.-.=====o oooo. oooooooooo.##&&&.&&&&&&&&&&&&&&&&&.&*", "*&&=o=o=o-.-.=====oooooo oooooooooo.###&&.&&&&&&&&&&&&&&&&&.&&*", "*&&o==o=ooooo=====ooooo.oo.oooooooo.####&&&#&&&&&&&&&&&&&&&&&#&*", "*&&==oo=o-.-.=====oooooooooooooooo..####&&&&&&&&&&&&&&&&&&&&&&&*", "*&&=o=o=ooooo===o=ooooooooooooooo.o.####&&&.&&.&&.&&.&&.&&.&&.&*", "*&&o==o=o-.-.=====$oooooooooooo$.oo.####&&.&&.&&.&&.&&.&&.&&.&&*", "*&&==oo=ooooo=o==o..............ooo.####&&&#&&#&&#&&#&&#&&#&&#&*", "*&&=o=o=o-.-.===o..............oooo.####&&&&&&&&&&&&&&&&&&&&&&&*", "*&&o==o=o-.-.==o..............ooooo.#...oooXXooooooooooooooo&&&*", "*&&==o==ooooo=o..............ooo oo.#...oooXXooooooooooooooo&&&*", "*&&=o===oooooo..............ooooooo.#...oooXXooooooooooooooooooo", "*&&o====oooooooooooooooooooooooo oo.#..ooooooooooooooooooooooooo", "*&&=====ooooooooooooo*ooooooooooooo.#.oooooooooooooooooooooooooo", "*&&=====oo.ooooooo*o*oooo.oooooo oo..ooooooooooooooooooooooooooo", "*&&=====ooooooooo***ooooooooooooooo.#ooooooooooooooooooooooo&&&*", "*&&=====oo.ooooo***oooooo.oooooo oo.#ooooooooooooooooOOooooo&@&*", "*&&=====ooooooo*o*ooooooooooooooooo.#ooooooooooooooooOOooooo@&&*", "*&&=====oo.ooo*oooooooooo.oooooo oo.#ooooooooooooooooOOooooo&&&*", "*&&=====%ooooooooooooooooooooooooo%.#ooooooooooooooooooooooo&&&*", "*&&=====............................#ooooooooooooooooooooooo&@&*", "*&&====............................##ooooooooooooooooooooooo&&&*", "*&&===............................###oo##ooooooooooooooooooo&@&*", "*&&==.... .. ............ ... ...####oo##oooOOoXXooooooooooo&&&*", "*&&=............................#####oo##oooOOoXXooooooooooo@@&*", "*&&&#################################oooooooOOoXXooooooooooo&&&*", "*&&&&##########################X##X##@&&@&&@&&@&&@&oooo&&&&&&&&*", "*&&&&&###############################&&&&&&&&&&&&&&oooo&&@&@&&&*", "***************************************************oooo*********" }; micropolis-activity/images/tiles-122.xpm0000664000076400007640000000252110724145723020450 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "32 32 7 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c red", "O c gray75", "+ c gray100", "@ c None", /* pixels */ "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@OOOO@@@@@@@@@@@@@", "@@@@@@@@@@@@@@O+ . @@@@@@@@@@@", "@@@@@@@@@@@@@O++ ++++O@@@@@@@@@@", "@@@@@@@@@@@@@OOOO++o+O@@@@@@@@@@", "@@@@@@@@@@@@@OOO.++++O@@@@@@@@@@", "@@@@@@@@@@@@@XO..++++O@@@@@@@@@@", "@@@@@@@@@@@@@XO.O++++O@@@@@@@@@@", "@@@@@@@@@@@@@XOOO++++O@@@@@@@@@@", "@@@@@@@@@@@@@XOO.++++O@@@@@@@@@@", "@@@@@@@@@@@@@OO..++++O@@@@@@@@@@", "@@@@@@@@@@@@@OO.O++++O@@@@@@@@@@", "@@@@@@@@@@@@@OOOO++++O@@@@@@@@@@", "@@@@@@@@@@@@@OOO.++++O@@@@@@@@@@", "@@@@@@@@@@@@@OO..++++O@@@@@@@@@@", "@@@@@@@@@@@@@OO.O++++O@@@@@@@@@@", "@@@@@@@@@@@@@OOOO++++O@@@@@@@@@@", "@@@@@@@@@@@@@XOO.++++O@@@@@@@@@@", "@@@@@@@@@@@@@XO..++++O@@@@@@@@@@", "@@@@@@@@@@@@@XO.O++++O@@@@@@@@@@", "@@@@@@@@@@@@@XOOO++o+O@@@@@@@@@@", "@@@@@@@@@@@@@OOO ++++O@@@@@@@@@@", "@@@@@@@@@@@@@OO X @@@@@@@@@@@", "@@@@@@@@@@@@@OXX X @@@@@@@@@@@", "@@@@@@@@@@@@@@XXXXXX@@@@@@@@@@@@", "@@@@@@@@@@@@@@XXXXX@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" }; micropolis-activity/images/tiles-115.xpm0000664000076400007640000000516710724145723020463 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "48 48 5 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c gray75", "O c None", /* pixels */ "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOO.OOOOOO.OOOOOOOOOO.OOO.OO.O.OOOOOOOOOOOO", "OOOOOOOOOOX..O..OO...XO...O..OO.O.OOOOOOOOOOOOOO", "OOOOO.OOO...o..XXX.oO.o..............OOOOOOOOOOO", "OOOOOOoO.oXo...o.X..o.............. OOOOOOOOOOOO", "OOOOOOOOooX.o.....X..X...X....XX.. .OOOOOOOOOOO", "OOOOOOoOO..Ooo.X..X..X...X....... ....OOOOOOOOOO", "OOOOOOO....oo..o..o..XX........ .OO.OOOOOOOOOOOO", "OOOOOOOOOOO.oo....o.oo.XX.... ..OOOOOOOOOOOOO", "OOOOOOOO..OOo.o.o.X.oXX....... OOOOOOOOOOOOOO", "OOOOOOOOOOOOooOoooooXXXXX.... OOOOOOOOOOOOOOO", "OOOOOOOOOOOOOooooooXXXXX.X... OOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOoooXoooX...... OOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOooooXXXXX... . OOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOooooXX...XX.. . OOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOoooooXXXX.. . OOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOoooooXXXXX... OOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOooooXX.XX... OOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOoooooXXXXX. OOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOooooXXXX.... OOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOoooooXXXX.X OOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOooooXXX..... OOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOooooXXXX.. OOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOoooXXXX... OOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOoooXXXX... OOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOoooXXXXX.. OOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOoooXX.. . OOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOooXoX.... OOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOoooo.... OOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOoooXXX. OOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOooXXX. OOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOooXX... OOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOooXX.. OOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOoooXX... OOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOooX.. OOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOooXXX OOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOoXXX. OOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOoXX...OOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOoooXX. OOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOoXXX. OOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOX.. OOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOooXX OOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOoX OOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOoX.OOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOoX.OOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOooX.OOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOOOOOOOOOOOOOOOO" }; micropolis-activity/images/tiles-108.xpm0000664000076400007640000000520310724145723020454 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "48 48 6 1", " c black", ". c red", "X c #FFFF7F7F0000", "o c yellow", "O c gray100", "+ c None", /* pixels */ "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++X+++++++++++++++++++++++++++++++++++++", "++++++++OX.+++++++++++++++++++++++++++++++++++++", "+++++++OX.++++++++++++++++++++++++++++++++++++++", "+++++XXX.+++++++++++++++++++++++++++++++++++++++", "++++XXX.++++++++++++++++++++++++++++++++++++++++", "++++XXXX+++XXXX+++++++++++++++++++++++++++++++++", "++++.XXXXXXXXXXXXX++++++++++++++++++++++++++++++", "++++....XXXXXOXXXXXX++++++++++++++++++++++++++++", "++++++......XXXOXXXXX+++++++++++++++++++++++++++", "++++++++++++XXXXXXXXXX.+++++++++++++++++++++++++", "++++++++++++++XXOXXXX.X.++++++++++++++++++++++++", "++++++++++XOX++XXXXXXX.X.X++.X.+++++++++++++++++", "+++++++++XOXXXXXXOXXXXX.X.X.X.X.X+++++++++++++++", "+++++++++XXXXXXXXXOXXXXX.X.X.X.X.X++++++++++++++", "+++++++++XXXXXX.XXXXXXXXX.X.X.X.X.X+++++++++++++", "+++++++++XXXXXX..XXXXXXXXX...X.X.X.+++++++++++++", "++++++++++XXX..X.XXXOXXXXXX........+++++++++++++", "++++++++++XX......XXXXXXXXXX......++++++++++++++", "+++++++++++X.+.....XXOXXXXXXX.....++++++++++++++", "++++++++++++++++..XXXXXXXXXXXX....++++++++++++++", "++++++++++++++++++XXXXXOXXXXXXX..+++++++++++++++", "++++++++++++++++++++XXXXXXXXXXXX..++.X.+++++++++", "+++++++++++++++++++++XXXXOXXXXXXX.X.X.X.++++++++", "+++++++++++++++++XXXX XXXXOXXXXXXX.X.X.X.X++++++", "+++++++++++++++++XXOXOXXXXXXXXXXXXX.X.X.X.X+++++", "+++++++++++++++++XXXXXXXXXXXXOXXXXXX.X...X.X++++", "++++++++++++++++++XXXXXXXX.XXXXXXXXXX.......++++", "+++++++++++++++++++XXXXXXX..XXXXXXXXXX+++....+++", "+++++++++++++++++++++.......XXXXXXXXXXX+++.+++++", "+++++++++++++++++++++++++....XXXXXXXXXXX++++++++", "++++++++++++++++++++++++++++..XXXXXXXXXXX+++++++", "++++++++++++++++++++++++++++++XXXXXXXXXXX+++++++", "+++++++++++++++++++++++++++++++.XXXXXXXXXX++++++", "++++++++++++++++++++++++++++++++.XXX.XXXX.++++++", "+++++++++++++++++++++++++++++++++.X.o.XX.o.+++++", "++++++++++++++++++++++++++++++++++.X.ooX.o.+++++", "+++++++++++++++++++++++++++++++++++.X.....X+++++", "++++++++++++++++++++++++++++++++++++.X.X.X.+++++", "++++++++++++++++++++++++++++++++++++++..X.++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++" }; micropolis-activity/images/icpark.xpm0000664000076400007640000000305210724145723020277 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "34 34 11 1", /* colors */ "# c #000000", "a c #7F7F7F", "b c #00FF00", "c c #5D5D5D", "d c #007F00", "e c #BF7900", "f c #FF0000", " c #FFFFFF", "h c #7F7F00", "i c #FF7700", "j c #BFBFBF", /* pixels */ "jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj", "jeebbbbeeeebbbbeeeebbbbeeeebbbbeec", "jeebbbbeeeebbbbeeeebbbbeeeebbbbeec", "jeecccccccccccccccccccccccccccceec", "jeec##########################jeec", "jbbc# # # # #dbdbbbdbb# # # ##jbbc", "jbbc## # #bbbbbbbdbbdbbdbd # #jbbc", "jbbc# # #bdbbbdbbbbdbbdbbdb ##jbbc", "jbbc## bbbbbbbbbdbbbbdbdbbdd #jbbc", "jeec# #bdbbbbbdbbdbdbdbdbdbd##jeec", "jeec##bbbbbdbbbbdbdbdbdbdddbd#jeec", "jeec# dbbbbbdbdbbdbdbbdddbbdd#jeec", "jeec#bbbdbdbbbbdbdbbddbdbddbd#jeec", "jbbc#bbbbdbbdbbbdbdddbdbdbdd##jbbc", "jbbc#dbdbdbdbdbdbdbdbddddda# #jbbc", "jbbc#bbdbbdbdbdbdbdbddd # a ##jbbc", "jbbc##dbbdbdbdbdddddda # #a# #jbbc", "jeec# #dddddddddd # #a# # a ##jeec", "jeec## # # hhhccc# # a # #a# #jeec", "jeec# # # #hhhccc # #a# # a ##jeec", "jeec## # # hhhccc# # a ii#a# #jeec", "jbbc# # # #hhhccc # #a#ff#a ##jbbc", "jbbc## # # hhhccc# # a####a# #jbbc", "jbbc# # # hhhcccc # #a ff a ##jbbc", "jbbc## #hhhhcccccc # cffffc# #jbbc", "jeec# hhhhhcccccccc # # ### ##jeec", "jeec#hhhhhccccccceeeee#ee#eee#jeec", "jeec#eeehhecceeccceeeeececeee#jeec", "jeec#eehheeceeeecceeeececeeee#jeec", "jbbc##########################jbbc", "jbbcjjjjjjjjjjjjjjjjjjjjjjjjjjjbbc", "jbbeeeebbbbeeeebbbbeeeebbbbeeeebbc", "jbbeeeebbbbeeeebbbbeeeebbbbeeeebbc", "jccccccccccccccccccccccccccccccccc" }; micropolis-activity/images/obj7-5.xpm0000664000076400007640000000512710724145723020036 0ustar simcitysimcity/* XPM */ static char * obj7_5_xpm[] = { "48 48 5 1", " c None", ". c #FFFF00000000", "X c #FFFF7F7F0000", "o c #99997F7F4C4C", "O c #FFFFFFFF0000", " ", " ", " ", " . X X X ", " . X ", " . X . ", " . .X ", " o . ", " X o . ", " o . ", " o X ", " ", " . ", " X . ", " X X ", " X ", " X X ", " X O ", " X X ", " . o o ", " ", " o XXX ", " X o . o . ", " ", " X o O ", " . o ", " X . ", " X o o ", " O ", " O X ", " O ", " . X X ", " o X ", " o X ", " X X ", " X . ", " . ", " X ", " . ", " ", " X X O ", " oo . ", " ", " . . . ", " . . ", " . ", " . ", " "}; micropolis-activity/images/tiles-146.xpm0000664000076400007640000001031510724145723020456 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "67 57 8 1", " c black", ". c #585858585858", "X c gray50", "o c #7B7B0000FFFF", "O c #7F7F7F7FFFFF", "+ c green", "@ c #FFFFBFBF7F7F", "# c #DFDFDFDFDFDF", /* pixels */ " ", " ............................................................... ", " . ............................................................. # ", " .. ........................................................... ## ", " ... ### ", " ... @@@@ @@@@@@@ @@+@@@@@@@+@@@@@@ @@@@@+@@@@@@@+++@@@@ @@@@@ ### ", " ... @@@@@ @@@@@@ @@@@@@ @@+@+@@@@@ @@@@@@@@@+@@@@@++@@@ @@@@@ ### ", " ... @@@@@ +@+@@@ @@@ X @@@@+@@+ @+@ @ @@@+@@++@@@ @@@@@ ### ", " ... @+@@@ @@@@@@ @@ XXXXX @@@@@@ @ @ @+@@@@@@@ @@@@@ ### ", " ... @@@@@ @@@@@@ @@ XX @@@@ @@ @@@@XX @@@@ @@@@@ @@@@@@@ ### ", " ... @@@@@ @@@@@@ @ XX +++@@ @@@ @@@@ X @@@@@ +@ @@@@++@@ ### ", " ... @@@ @XX@ @+++++@@@ @@@ XX @@@@ @@ @@@@@+@+@ ### ", " ... @ @@@ @@@ @@ @@@ +++++@@ X @@ XXX@XX X@ @@@@@@@@@@ ### ", " ... @@ @@ @@ @@@ XX @++++++@@@ XXXXXXX XX X@ ++@@@@@@@@ ### ", " ... @@@ @ @@ X XXXX +@++ X XXXXXXXXXX XX X @@@@@ ### ", " ... @@@@ XXXX X XXXXX++++@XX XXX XXXXX X @@XXXX@@@@ ### ", " ... @@@ XX XXX XXXXXX XXX XXXX XXXXXXX X XXXX@@@@ ### ", " ... XXXXX XXX XXX XXXX XXXXXXXX XX XX XXXXXX@@@@ ### ", " ... X XX XXXX XXX XXX XXXX XXX XXX XXX XX XXXXXX@@@@ ### ", " ... X XX XXXXXX XXXX XXX XXX XXXX XXX ### ", " ... XXX XXXXXXX XXX XXX XXX XX XXXXX XX@@ ### ", " ... XXXXX XXXXXX XXXX XXX XXX XXX XXX XXX XXX XX XXXXX XX@@ ### ", " ... XXXXXX XXXX XXXX XXX XX X XXX XX XXXXX XX@@ ### ", " ... OXXOXXX XXXX XXX XX X OOOO XX@@ ### ", " ... OOXOXXXXXXXX XXXX XXX X XXOOOO++OOO X XXXXXX XXX X X @@ ### ", " ... OOOX XXXX XXX XXX XO+++++++OXX XXXXXX XXX X X @@ ### ", " ... OOOOXXXX XXX XXXX XXX X X XO+++++++OX XXXX X @@ ### ", " ... OOOOXXXX XXX XO++++++OOX XXXX XX XXX X X @@ ### ", " ... OOOOX XX XX X XXOOOO+++OXX XX XXX X X @@ ### ", " ... OOOOOXXX XXXXXX XX XX XXX XOOOOOX XXX XXX XXX X @@ ### ", " ... OOOOOXXX XXXXXX XXXXX XX XXXXX XXXXXXXXX XXX XXX XXXX@@ ### ", " ... OOOOOXOOOOXO XX XX X X XXXXXX XXX XXX XXXX@ ### ", " ... OOOOOXOOO OOOOO XXXX XX X XX X XXXXX XXX X ### ", " ... OOOOOOOOOOOOOOOOOOO X XX XX X X ### ", " ... OOOOOOOOOOOOOOOOOOOOXOOXX XXXXX XXXXXXXXXXXXXXXXX XXX X ### ", " ... OOOOOOOOOOOOOOOOOOOOXOXXX XXXX XXXXX X XX X ### ", " ... OOOOOOOOOOOOOOOOOOOOOOOOOXXX XOOOOOO OOO XXX XXXX X XXX ### ", " ... OOOOOOOOOOOOOOOoOOOOOOOOOXXO OOOOXXXOOOOOO XX XXX XXXXX ### ", " ... OOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOXOO OXX XXXX ### ", " ... OOOOOOOOOOOOOOOOOOOOOOOOOOOO OO O O OOOOOOOXX X X ### ", " ... OOOoOOOOOOOOOOOOOOOOOOOOO XXXOOOXXX XX XX ### ", " ... OOOOOOOOOOOOOOOOOOOOOOOOOO XXX XXXXXX XOOOOOXX XXX XX ### ", " ... OOOOOOOOOOOOOoOOOOOOOOOOOO XXX OOOOOOX XXXXX ### ", " ... OOOOOOOOOOOOOOOOOOOOOOOOO XXXX +XXX @ XXXXOO OOOOXXXX ### ", " ... OOOOOOOOOOOOOOOOOOOOOOOOO XXXXX XXXX @ XXXXXOO OOOXOXX ### ", " ... OOOOOOOOOOOOOOOOOOOOOOOOOXXXXXX XXXX @ @ @ OOXOOX ### ", " ... OOOOOOOOoOOOOOOOOOOOOOOOO @@ @@@@@ @ OOO ### ", " ... OOOOOOOOOOOOOOOOOoOOOOOOOOO X XXXXXX @@@@@ @@@@@ @@ @ ### ", " ... OOOOOOOOOOOOOOOOOOOOOOOOOOOXX X XXXXX +++@ X @@@@@ @@@@@ ### ", " ... OOOOOOOOOOOOOOOOOOOOOoOOOOO XX + @@@@ ### ", " ... OOOOooOOOOOOOOOOOOOOOOOOOOO X XX @@@@@@@@@@ @@@@@@@@@@@ ### ", " ... OOOOOOOOOOOOOOOOOOOOOOOOOOOXX XX @@@@@@@@@@@@@@@@@@@@@@@@ ### ", " ... ### ", " .. ########################################################### ## ", " . ############################################################# # ", " ############################################################### ", " " }; micropolis-activity/images/tiles-68.xpm0000664000076400007640000000252010724145723020400 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "32 32 7 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c red", "O c gray75", "+ c gray100", "@ c None", /* pixels */ "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@OO @@@@@@@@@", "@@@@@@@@@@@@@@@@@@@O+++ @@@@@@@", "@@@@@@@@@@@@@@@@@@O+o++ X@@@@@@", "@@@@@@@@@@@@@@@@@O+++++ X@@@@@@", "@@@@@@@@@@@@@@@@O+++++X XX@@@@@@", "@@@@@@@@@@@@@@@O+++++XXXXX@@@@@@", "@@@@@@@@@@@@@@O+++++X.XX.@@@@@@@", "@@@@@@@@@@@@@O+++++XX.X.@@@@@@@@", "@@@@@@@@@@@@O+++++X.XX.@@@@@@@@@", "@@@@@@@@@@@O+++++XX.X.@@@@@@@@@@", "@@@@@@@@@@O+++++X.XXX@@@@@@@@@@@", "@@@@@@@@@O+++++XX.XX@@@@@@@@@@@@", "@@@@@@@@O+++++X.XXX@@@@@@@@@@@@@", "@@@@@@@ +o+++XX.XX@@@@@@@@@@@@@@", "@@@@@@ ++++X.XX.@@@@@@@@@@@@@@@", "@@@@@OO X++XX.X.@@@@@@@@@@@@@@@@", "@@@@@OOX XXX.@@@@@@@@@@@@@@@@@", "@@@@@OOO XXX.@@@@@@@@@@@@@@@@@@", "@@@@@@OOOOXXX@@@@@@@@@@@@@@@@@@@", "@@@@@@@OOOX@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" }; micropolis-activity/images/tiles-27.xpm0000664000076400007640000000423210724145723020375 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "34 50 11 1", " c black", ". c #00007F7F0000", "X c #7F7F7F7F0000", "o c #5D5D5D5D5D5D", "O c #00000000AFAF", "+ c blue", "@ c #4F4F4F4FFFFF", "# c green", "$ c #BFBF79790000", "% c gray75", "& c gray100", /* pixels */ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@o", "%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@o", "%@@oooooooooooooooooooooooooooo@@o", "%@@o&&&&&&&&&&&&&&&&&&&&&&&&&&%@@o", "%@@o&&&&&&XXXXXXXXXXXXX&&&&&&&%@@o", "%@@o&&&&&&XXXXXXXXXXXXXX&&&&&&%@@o", "%@@o&&&&&&XXooooooooooooo&&&&&%@@o", "%@@o&&&&&&XXo o o&&&&&%@@o", "%@@o&&&&&&XXo oOOOOOOO&&&&%@@o", "%@@o&&&&&&XXoooooooO+++++++&&&%@@o", "%@@o&&&&&&XXo oO+OO+OO+&&&%@@o", "%@@o&&&&&&XXo oO+OO+OO+&&&%@@o", "%@@o&&&&&&XXoooooooO+++++++&&&%@@o", "%@@o&&&&&&XXo oO+OO+OO+&&&%@@o", "%@@o&&&.......... oO+OO+OO+&&&%@@o", "%@@o&&&.##########oO+++++++&&&%@@o", "%@@o&&&.#oo#oo#oo#oO+OO+OO+&&&%@@o", "%@@o&&&.#oo#oo#oo#oO+OO+OO+&&&%@@o", "%@@o&&&.##########oO+++++++&&&%@@o", "%@@o&&&.#oo#oo#oo#oO+OO+OO+&&&%@@o", "%@@o& @.#oo#oo#oo#oO+OO+OO+@@&%@@o", "%@@o& @.##########oO+++++++ @&%@@o", "%@@o& @.#oo#oo#oo#oO+OO+OO+ @&%@@o", "%@@o& @.#oo#oo#oo#$O+OO+OO+ @&%@@o", "%@@o& @$##########$$+++++++ @&%@@o", "%@@o& @$$$$$$$$$$$$$$$$$$$$ @&%@@o", "%@@o& @$$$$$$$ @@@@@$$$$$$$ @&%@@o", "%@@o& @$$$$$$ @@ @@$$$$$$ @&%@@o", "%@@o& @$$$$$ @@ $$$ @@$$$$$ @&%@@o", "%@@o& @$$$$$ @@$$$$$ $$$$$ @&%@@o", "%@@o& @$$$$$ @@$$$$$$$$$$$$ @&%@@o", "%@@o& @$$$$$ @@$$$$$$$$$$$$ @&%@@o", "%@@o& @$$$$$ @@$$$$$$$$$$$$ @&%@@o", "%@@o& @$$$$$ @@$$$$$$$$$$$$ @&%@@o", "%@@o& @$$$$$ @@$$$$$@@$$$$$ @&%@@o", "%@@o& @$$$$$ @@$$$@@ $$$$$ @&%@@o", "%@@o& @$$$$$$ @@@@@ $$$$$$ @&%@@o", "%@@o& @$$$$$$$ $$$$$$$ @&%@@o", "%@@o& @$$$$$$$$$$$$$$$$$$$$ @&%@@o", "%@@o& @$$$$$$$$$$$$$$$$$$$$ @&%@@o", "%@@o& @$$$$$$$$$$$$$$$$$$$$ @&%@@o", "%@@o& @$$$$$$$$$$$$$$$$$$$$ @&%@@o", "%@@o& @@@@@@@@@@@@@@@@@@@@@@@&%@@o", "%@@o& &%@@o", "%@@o&&&&&&&&&&&&&&&&&&&&&&&&&&%@@o", "%@@o%%%%%%%%%%%%%%%%%%%%%%%%%%%@@o", "%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@o", "%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@o", "%ooooooooooooooooooooooooooooooooo" }; micropolis-activity/images/scenario1hilite.xpm0000664000076400007640000024313710724145723022123 0ustar simcitysimcity/* XPM */ static char *scenario_hilite[] = { /* columns rows colors chars-per-pixel */ "209 188 256 2", " c #313632", ". c #172013", "X c #1C3D68", "o c #1A3D72", "O c #233D65", "+ c #233D6B", "@ c #293C68", "# c #243D72", "$ c #353C6D", "% c #253556", "& c #334337", "* c #215C25", "= c #1C426B", "- c #1C4266", "; c #1C4674", ": c #18537B", "> c #364448", ", c #224165", "< c #22426B", "1 c #28426A", "2 c #234271", "3 c #264776", "4 c #235579", "5 c #29587A", "6 c #3A5A72", "7 c #39587A", "8 c #38486D", "9 c #244862", "0 c #553831", "q c #6F4A38", "w c #585E32", "e c #4E4D49", "r c #41746A", "t c #576469", "y c #6D574D", "u c #746453", "i c #5F6668", "p c #433C48", "a c #1C5586", "s c #1B6797", "d c #1B74AD", "f c #255687", "g c #3C5684", "h c #3B5988", "j c #25538C", "k c #276A95", "l c #2C7091", "z c #336E91", "x c #266BA3", "c c #2978A9", "v c #2779B5", "b c #327AAA", "n c #3379B0", "m c #285FA0", "M c #197DC7", "N c #44568A", "B c #435886", "V c #44598C", "C c #465687", "Z c #445990", "A c #50558E", "S c #54799B", "D c #4D6E98", "F c #4F72A5", "G c #645EAC", "H c #5D63ED", "J c #5F69E2", "K c #5A63F1", "L c #5662F7", "P c #6B67DB", "I c #7A6AC9", "U c #7268D3", "Y c #7467D9", "T c #696FCA", "R c #6365E6", "E c #6164E9", "W c #6865E1", "Q c #6D61E8", "! c #5E6BDC", "~ c #353885", "^ c #36B22F", "/ c #01DC00", "( c #0BDB05", ") c #0DD706", "_ c #17D70B", "` c #00E300", "' c #00EA00", "] c #0AE204", "[ c #00F100", "{ c #13E308", "} c #25CB09", "| c #23CF03", " . c #2ACC14", ".. c #24D404", "X. c #25DA04", "o. c #20D60F", "O. c #27D312", "+. c #37C91A", "@. c #32D117", "#. c #2ADC0D", "$. c #4BBD24", "%. c #58B92A", "&. c #6BAD33", "*. c #61B42E", "=. c #68B232", "-. c #77A939", ";. c #76B535", ":. c #679533", ">. c #578F5A", ",. c #41C51E", "<. c #48C222", "1. c #53C127", "2. c #73C735", "3. c #3EA147", "4. c #1986BC", "5. c #0E85B9", "6. c #2585BB", "7. c #3480AC", "8. c #3586BA", "9. c #2C89B2", "0. c #1583C4", "q. c #1A85C5", "w. c #1C89C4", "e. c #1B89C9", "r. c #1886C8", "t. c #198CCB", "y. c #228AC4", "u. c #238BCA", "i. c #2A8DCB", "p. c #2687C6", "a. c #278AD1", "s. c #2D91CC", "d. c #2793C8", "f. c #2A93D2", "g. c #378CC5", "h. c #3394CD", "j. c #3896CD", "k. c #3C99CE", "l. c #3495C7", "z. c #3494D0", "x. c #3A96D0", "c. c #3C99D0", "v. c #3499D5", "b. c #328DD1", "n. c #39A1D0", "m. c #4D8BB1", "M. c #679AB7", "N. c #6E94A8", "B. c #69919D", "V. c #4597CA", "C. c #429CD1", "Z. c #489ED3", "A. c #4497D5", "S. c #579BC6", "D. c #4BA1D4", "F. c #45A0D3", "G. c #51A4D6", "H. c #5CAAD9", "J. c #57A7D6", "K. c #52A2CD", "L. c #62ADDB", "P. c #66ACD6", "I. c #66B0DC", "U. c #6AB2DD", "Y. c #6BB3D7", "T. c #73ABCD", "R. c #71B5DE", "E. c #78B7DA", "W. c #6EAACD", "Q. c #73B6E0", "!. c #75B9E1", "~. c #7BBBE2", "^. c #7AB6E2", "/. c #69B2E0", "(. c #6198CB", "). c #7DC3E5", "_. c #945A35", "`. c #8F5649", "'. c #8F6654", "]. c #AE6D52", "[. c #BA787B", "{. c #B47566", "}. c #9E665D", "|. c #D37E5C", " X c #D97C5B", ".X c #CF7A50", "XX c #CD7D62", "oX c #C77B6B", "OX c #C27973", "+X c #D27A64", "@X c #DB7669", "#X c #DA7964", "$X c #D87868", "%X c #D77768", "&X c #D17572", "*X c #E2726C", "=X c #E27866", "-X c #EA6E70", ";X c #E17A59", ":X c #C3432D", ">X c #9D729D", ",X c #896DB7", ".V C B D T.VXVXE.JX= = 1 # GXE.BXAXAX).VXBXZX).ZX", "H.H.L.H.H.H.H.H.HXPX, 3 X 1 PXDXP.K.D h N Z >. .X.X...X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...X.X.X...X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...X.X.X...X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...X.X. .3.7 V g D T.AXY.GX= ; < @ HXY.AXSXZXZXZXZX~.~.ZX", "H.H.H.L.L.H.H.P.HXLX@ + = , IXFXI.D A V h >.} X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...3.A N A D T.E.HX- < @ O HXE.VXZXZXZXZXZXZXZX~.", "H.H.H.H.H.L.H.H.HXPX+ 2 = , IXHXJ.Z V N >. .X.X.X...X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...3.Z N h S E.GX- 2 < , HXR.ZXVXZXZXZX~.ZXBXZX", "L.L.H.L.H.L.H.H.HXLX1 + o 1 LXDXM.h V D ^ { _ X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.+.r N B h T.HX- 2 < X FXQ.SXSXZXZXZXZXBXZX~.", "L.L.H.H.L.H.H.L.FXLX+ 1 = + JXDXF N N 3...X.X.X.X...X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.) X._ X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.3.A C B T.DX< , < < DXY.ZXSXZXZXZXZXBX~.BX", "L.L.L.H.H.L.H.H.FXJX2 @ < + JXCXF N g +.X.X.X.X.X...X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.0X9XqXqXqXwXqXwX8X*.;.iX9XqX9XtXqXqXqXqXtXtXqX9XqXqXqX9XwXwXtX9XB.m.m.B.m.B.m.-.9XqXqXqXwX9XtXwXqXqXqX9X9XqXqXqXwXqX9XwXwXqX;.wXuXwXqXqXqXqX9XtXwXqXqXqXqXqXqXqXqXqXqX9XqXqXqXwX9X9XqXqXqXqXqX9XqXqXqXqXqX9XqXtXqX;.qXwXqXqX9XqXwXqXtX9X9X9X9X9XX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.@.A C B W.NX- - < , CXU.ZXZXZXZXZX).ZXBXZX", "L.L.H.H.H.L.L.L.DXKX, 9 - # FXMXh Z 6 _ ....X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.xX+XXX+X@XkXsX@X=.[ $.#XXXXXXXXX+XXXXXxXXXXXvX+XxXXXXX+XdXyXvXzX,XH R R E E W oXXXXX+XkXyX@XXXpX+XXX+X+X+X+XXXcXpX+XxXwXwX%.` -.9XwX@XXX+XxX+XkXiXxXXXXX#X%X%X%X%X@X@X#XXXXX+XaX%X+XXXXX+XXXXXXX+X+XXXXX+XXXXX+XkX_ $.wXxX+XXXXXzX+XzX[.2X2X4X2XX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...D C B m.T.- = - < T.G.ZXSXAXZXAXBXBXZX~.", "H.L.L.L.L.H.L.H.AXDXFXHXKXFXDXE.Z N 6 X.X.X.X.X.X...X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.kXXX+XkXqX_ <.@XzXgXlX+XXXXXXXXXxX+XXX+X+XXX+X%X%XxX+X-X&._ +X|.3XH E R R E W 4X|.XXXX$./ rX$.{ +XXXpX+XxX+X*XqX' xXtX' ' ` / ` ' ' 0X+XxX+X%XyX_ dX+XxXwXqXqXwXqXwXqXwX%X@X-.` =.+XXXXXXXXXXXXXXXXXXXXXXXXXXX#X*XyX( ' wX+XXX+X[.4X3XR K R E J X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...D N V m.S.U.E.~.Y.J.C.SXSXZXAXZXZXZXBXZX", "I.H.I.H.L.L.H.L.I.ZXAXDXCXDXE.L.Z N 6 X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.kXXXfX .' _ kXoXOX X4XXXXXXXXXXXXXXX+XdXyX+XdXqXsX%XkXwX@._ +XxX+XXoXOXOXXXxX+XlXX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.} r V B S T.NXMXAXAXSXAXZXAXSXAXZXZXZX).ZX", "L.L.H.I.L.L./.H.L.H.L.H.H.H.L.L.V B 6 _ X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.kX@X,.` +.XX X,XK H E U [.XXXXXX+X+X@X%.] yX@X$.@.+X+X%.] ( 0XgX+X X>XH E R E W 4XqX` ) yXkX@X+XkX@X#X&.' ` _ yX@XXX+X+XXX+XXXxX@XwX' &.wXaX%XpXo.dX@XwXuX+X%XdXgXsXdX0X/ ` yX@X+XXXXXXX@XrX` ` *.uXXXkX_ ' ' / ` wX;X2XH H XOXzX#XXX+X+X+XXXXXXXlXX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...r N C S M.E.E.AXSXSXAXAXAXAXSXZXSXZXZXSX", "I.L.I.I.L.L.L.L.L.L.I.L.H.H.I.I.Z N 6 ..X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.lXvXkXxX+XXXoXU H R R H U 2XoX#X*.+.#X+X+.' .%X+XXXxX+X+X%X%.O.+X|.3XH R R R E R 4X=X-.] xX+XXX[.,XH H E H R 2X.X+X+X+XXXXXXX+X*.` dX*XrX` &.uXuX=.' ` ` &.yXXXXXXXXX+XfX/ ` pX%XXX*X8X` =.8X/ ` &.@XXX+X+X+XXX X2XH >XzX+X+XsXcXXXyXXX+XxXxXxXX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...} r C B S M.T.MXAXAXSXAXAXAXAXAXAXAXZXAXZX", "I.I.I.I.L.L.L.L.L.L.H.L.L.I.H.I.Z N 6 X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.lXxX+X+XXX|.,XH R R R R H H U OXlXXX+X-X&.' .@X%XXXXXXXXXXXXXkX+XxXXX,XH R R R E U #XrX_ xXzX,XH H R E R Q E R 5X{.|.XXXXXX%XaX' ) dX+X@X-.' ` ' ] 0XXX-.' ` yX%XxXXXXX%X0X' wX@X+X-.` ` ` ` / ` pX%XXXXXXXXX|.2XH >X|.xX%XkX' rX%X_ $.$X+XvXkXX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.| r N B B.M.NXMXAXSXAXSXAXAXAXAXZXSXSXZXSX", "Y.L.I.L.L.L.L.L.L.H.I.L.P.I.I.I.V B 6 X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.kX+XxXxXXX X1XK R R R R R R H U OX+XkXwX+.` ) wXfX+XXXXXXXXXXX+XxX+X X3XH E R R E R 4XzXlXzX,XH R R R R R R R E H R 2X.XXXXXXXXXsXfXXXXX%XaX( qXdXdX%X@XsX] / sX+XXXXXXX+XfX{ yX$XfX( -.fXgXqX` -.*X@X@XXXXX|.2XE XK E R R R E W 2X[.1XH R R R R E R E R R E E E 2X|.XXXXXX%X+XXXXXXXXXdX@XXXsXxXXXXXgXgX+X+XXXXXXXXXXXdXXXXXXXkX*X%X%X@XqX=.pXwXwXXXXXoXR XH R R R E 2XXXXX+X%X+XXXXXXXXXxXyXxXdXXXXXXXXXXXXXXXXXXXXXXX+X%XpXaX-.` ` &.aXuXaXrX/ / &.$X+X2XK 2XzXXXsXxXXXXXXXXXXXcX_ *.+X+XyXX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.} r C C S M.T.MXVXVXSXDXDXDXAXAXAXSXSXAXZX", "Y.I.I.I.I.I.I./.L./.L.U.L.I.U.I.V C 6 X.X.X.X.X._ X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.kXXX+.' $.@XkX ._ kX@X,XK R R H I +X$XXXfX+X@X%.] yX+XXX+X+X%.rXfX+XXXXXzX#X1XH E R R R R R R R E R 4X.XuXhX XX X|.XX_ ` ` ' qX%XXXXXXX+X%X@XaX( ' X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.| G B C S M.E.MXAXZXSXSXAXAXAXSXZXAXSX).AX", "L.U./.I.I./.I.I.I.U.L.U.I.U.U.U.V B 6 X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.kX@X$.` / / O.dX+X+XXXXXXX+XcXyX+.` _ fX+XXXXX@X=.` / ` ( gX%XXXXX%.` ) gX@XXXXXXXXX+XOX[.OX|.#XqX] uX@X+X|.2XH R R E P &XwX( qX-.( kX@XwX` ' ' / fX+XXXXX%XpX] rX@X%X%X%XsXuXyX-.( aX%XXXXXXXXXXXzX2XE XzXsXhXyX+X+X+XXX+XXX_ ` ' qX%XXX%X@XdX+X+XxXX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...S N B S M.T.MXZXZXZXZXZXSXVXZXBXAXZXZXZX", "U.L.U.U.I.U.I.U.I.U.U.I.U.I.U./.Z 7 6 _ X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.kXXXXXkX+.` ` o.pXpXdX+XXXxX+XxXXXXXXXXXXXkXgX+XXXXXXXXXXX+X@X-.' @. X+X+XXXXXXXyXsX$.] yX@X+XsX%.o.XX|.X XlX_ ' ' &.fXXXXX+XdX( / ` rX@X+XgXpXsXpX+XxXX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.| G C N S M.T.MXZXZXZXZXZXZXBXAXZXBXBX).).", "U.L.I.I.I.U.U.U.U.U.U.I.U.U./.U.V V 6 ..X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.kX+XXXXXcXuX+.` ' ' 1.@XXXXXXXXXXXXXXXXXXX+X+XXXXXXXXXXXXXXX XlXeX{.4X[.oX|.$X9X[ ' ` ` ( wX=.] rXsX XX X|.yXsX-.` ' uX@X+XcX] ` ` %.+XXXo.' ' ' 0X+XX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.} S A C S M.T.VXBXBXZXBXZXZXZXBXZXBX).BXBX", "U.U.L.U.U.U.U.U.U.U.U.U.U.U./.U.V V 6 X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.kXzXXXXX+X@XxXwXwXuXfX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX[.1XQ H E H U 4X[.{.iXiXiXhX$.' ` _ vX#XXOX+X@XcX( / *.gXsXrX%.yX0X] wX@XgX0X) ' -.+XX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.} S N C S M.T.E.VXBX).BX~.ZXBXZXZXBXBXBXBX", "U.U.U.I.U.I.U.U.U.I.I.Y.U.U.R.U.V g 6 X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.kX[.cXzXXXxX+X+X+X+X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX|.3XH H R E E E H R R P 4XOX&X=X8X( 0XgXxX1XH E R R R P %XwX` ` ( kX%X+XXXXXXXXXXXXX%X=.' yX+XXXXXXX+XzX|.oX3XW H R H R R H H H H H H H H H E 3XzX%XqX/ / ` ' *.@X@X%XsXXXcXXX*XpX' -.@XX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.} S N B G M.T.E.BXBXBXBXBXZX~.ZXBXE.ZXBXBX", "U.U.U.I.U.U.U.I.U.U.U.L.Y.U./.U.V V 6 X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X[.4X[.[.4X[.[.[.[.3XE K H >XzX@XqX] ` *.@XXXXXXX+XXXXXXXXXwX` -.+XX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.} D N B B.M.E.E.BXBXBXBXBX~.ZXBX~.ZXZX~.~.", "U.U.U.U.U.U.U.I.U.U.I.U.U.U./.U.V B 6 X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.oX4XU K K I [.XX|.+XkXkX+XXXXXXX+XXXXXXXXXXXXXXXXXXXXX|.,XH R E R E R R R R R R R R H H Q Q R H R R R E E H H E W 4X=X%.' kXwX_ wX%XxXXXXXXXXXXXyXXXXXXXzX2XR R H E >X[.[.[.#XXX|.|.+X|.XX|.|.|.|.[.3XE K >X|.%XyXuX+XXXXXXXXXXXXXXXXX_ <.yXcXxXX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.r N B S M.T.E.BXBX~.BXBXBXBXBX~.ZXZX~.).", "U.U.U.U.U.U.U.U.L.U.U.U.U.U./.U.V B 6 X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.gX.XoX4X4XI K I oX#X*.O.XXoXXXXXxXXXXXXX+XXXXXXXXX+X|.,XH E R R R E H E H H R R R R R R R R E R R R H R 3XOX1XH H P @XqX] kXwX' ( kX+X+XXXXXXXXX+XXX|.|.3XH H R X[.[.+X+X@X0X( ` ` =.*X%XXXXX+X*X0X' wX@XXXXXXX+XlXOXR L 2X X0X` %.uXcX+XXX_ ' ` ' tX@XvXxXX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...| r V B S M.W.E.BXBXBXBXBX~.BX~.).~.ZX~.BX", "U.R.U.R.U.U.U./.U.U.U.U.U.U./.U.Z N 6 X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.xXkX .' %.*X%.<.;X,XU oX+XkX+.' ' <.@XdXwXsXXX|.1XH R R H W [.bX`.:.' ' ' ' @.XXXX|.XX4X4X4X4XOX|.#X+X+XxXkX$XXXXX[.1XK E Q R P 4XOX[.OXoX3XH H H 3X|.|.zXXX@XqX] / / ` sX@XxXXX%XkX0X) ` wX+XXXXXXXXXXXOXW H >XzX%XyXXX%XXXXX+XpXwXwXwXcX+XxXlXX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.| r N C S M.T.E.E.BXBX).BXBX~.~.~.~.~.~.~.", "U.U./.R.U.U.U.U.U.U.U.U.R.U./.U.Z N 6 _ X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.kX%XkX_ o.XXdXgXXXoXU U xX#X{.qXqXsXXX+X#X+XoX1XK H R R W [.zX`.. w rXtXqXwXyXXXXX+XXX|.zXzXzXXXXXgXkX*XwX_ aX+X+XzXzX1XH H H E R R R R E K H >X[.|.XXXXXX%X0X/ / / ` &.%XxXXX@XwX( ` / ` wX+XXXXXXXXX|.oXP H K 4X|.+XXXXX%XcX+X%X%X%X%XXXXXxXkXX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.| r N C S M.T.E.BXBXBX).BXBXBX~.ZX~.~.~.~.", "U.U./.U.U./.U.U.U.U.U.L.U.U./.R.Z 7 6 X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.kXXX*X1.` +.dXdXXX|.XXU U OX+X;X#X#XxXzXzX1XR H R R R H I +X+X. . }.bX@X%XXXdXXX+X+X+X+XXXxXkX@XtX` _ pX%.' _ xX+XXXXX+X4X4X1XE H H H R 3X2X[. XXXXXXXXX+XyX/ / / / ' sX%XxX%XwX` ` / / ` wX@XXXXXXXXX|.4XH 1X>XX]..X+XsX( ' fX@X+XXXXX+XxXXXcX%XXXXXxX@X@XXXXXXXXXXX[.,X|.kX_ -.;X3XH >X|.+X@XqX/ / / / / / ] / X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.| r N B S M.W.E.E.ZX).ZXBX~.BXBXBXBX~.BX~.", "L.U.U.U.U.U.U.U.U.U.R.U.U.U.U.U.Z C 6 X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.#.X.X.X.X.X.kXvXkXxX%X@X@XcXqX_ @.@XxX+XzXoX2X2X2X2XOXzXzX. _.u >.& mXmX_.|.'.`.`.^ { ;.uXvX].lX].].t e '.;XoX+X=.' 0X%XXXXXcXXX@XfX_ pX@XdX_ aX+XXXXXXXXX.X1X.].{.UX>.e UXi 0 '.w >.e 0 _.`.].].].].]..X:X_..X.X.XXX@X*.) fX+X+XgX_ tX0X' wX-XqX' wX%XXXXXXX|.4X.oXy i e y e i > w y e i UX>. :._._.].vXpX{ wXlXbXvXXXXXXXXX+XwXXXXXXXxXwX=.` ' 0XuX) ` uX%XXXXXzX[. mXmX. 0 q `.+XvXvXiX2.[ hX+XXXXXXXXXXXXXXX+XXXXXXX+X%X0X%.wXqX+X+XXXzX4X mXmX* :.0 0 p mX3X mX3Xw #.u u ]._.|.}.y y e p ].].w w 0 >.r q bXyXo.uXwXo.uX0X' aX+XXXXXqXqX*.' wX X4XXK R R R H P +X|.y > > . r * > e & p & y {.y p i i >XmXy u y ].q y y & UX>.q vX+X@X%.` *.0XrXqXXXXXXXXXXX+X+X%XzX3X,X XXXqX0XoXoXoXoX&X&X=XqXrXrXzX@XOXY 2XzXXX@XXX( / / ` %.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.....r N B S M.T.E.BX~.BX~.).~.~.ZX~.~.~.~.~.", "I.I.I.U.U.L.I.I.I.R.R.U.U./.U.U.V N 6 X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.%.) -.yXXXXX+X+XXXXXXX+XsXo._ cX<.' ) 8XyX@X;.+.+X+X|.,XH R R R H U XX+X'.u u u u y '.u u q q q e y `.`.i & i i & y e t > i q _.e GX>.w @XXX%XpX' wX@X@X%XXXXXXX+XxXxXXXxXXXOXW 2X+X7XY P P P W P P 3X@X&X%X[.U R L 2X+XXXXX%X0X/ / / ` X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.| r N B S M.T.E.BXBXZX~.E.).~.E.~.E.~.~.~.", "U.U.U./.U.I.U.U.U.U.U.U.R./.U.U.Z N 6 ..X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.@.+.-X+XXXXXXXXXXXXXXXXX%XdXo./ ) -.sX@X%X@X%.( +XzX3XE E R R R R 4X|.XX#X+X@X-.{ X.sXXX+X:XnX:Xe `.{.}.y t i e e '.'.i y e mX p q q 0 '.vXkX@XpX' ` o.fX+X+XsXo.gX%XxX+X+XXXXX >.mX3 mXnX~ y u u e '.y 0 u XXvXsX_ o.yXrX%.%.` aX%X%XpX' -.+X%XxXXXXXXX|. {.bXu i e i p `.`.t e i q 9X' *.rXrXXXxXwXxXxX+X+X*XsX' uX$XXXXXXXzX[.W R R R R R R R R E E R E H ,XXXXXXX_ +.cXXXXXXX+X@X%XX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.} r N C S M.T.E.BX~.~.~.~.E.E.~.~.~.~.~.~.", "I.I.L.U.U.L.I.L.I./.U.I.U.U.U.U.V B 6 X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.dX$.%.@XXX+XXXXXXX%X*.o.@X<.` $.%XXX+X+X=.wX@XzX,XH R R R E R 2X=X=.' _ @X0X@.cX%XXXXXXXxX+X'.y u u u u y u '.e y `.y i e i e _.'.t e p eX w [ yX*X%XXXXX@XXXXXXXxX@XwX' uXkXO.sX+X+X[.R R R R R R R R R R E R E K 2X|.XXXXqXcX%XXXXXXXxXXXxXX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...D N B S M.T.E.BX).~.~.~.~.!.~.~.~.~.R.~.", "I.L.U.L.L.U.L.L.I.I.I.U.L.U.U.L.V C 6 X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.%.' +.@XXX+XXXXXXX%XyXo.( / ` O.%X+XcX-.wX@X|.3XH R R E R E U zX+XfX8XuX*X&.' .dX+XXXXX+XxX#XtX] .+X+XlXxXzXu i e q q 0 y e ].`.e q 0 q q w [ ( kX+XXXXXXXXXXXxX+XdX] %.@XpX' 0X@XzXOXH H R R R E R R H K H H K ,XoXXXXX+X%XXXXXXXXX+X+XXXxXX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.} r N C S M.T.E.BX~.~.~.~.~.~.~.).R.~.~.R.", "I.L.I.L.P.L.L.I.I.L.I.I././.I./.V N 6 X...X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.,.[ ,.bX@X%.%.+XXXXX*X%.' ' ) uX@X&.{ o.XX+X|.1XH R R R R H U XXXX+X@X%X*X-.` / ' +.XX%X0X .+XdX-.0XXX+XXXXX Xu i e u Y Y Y P I [.+X+X|.&X+X+XrX%.%.0X+X+XXXXXXXXXXXXXkX0X+X%XyX' ` uX@XXX2X1XH K H K H K ,X3X3X3X3X+XvXXXXXcX@.wX%X@.' rXXX@XxXX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...| r N N S M.P.E.BX~.~.~.!.~.^.!.^.~.!.!.!.", "I.I.I.L.I.L.L.I.L././.P.P.I.I.U.V C 6 X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.iX{ .vX%.` +.%XXXXX%X%.;.-.yX*X=.` / ` <.+X|.X>X5XXXzX#X3X,XL E [.|.#X&.{ _ ] ] 8X@XXXXX@X+X+XdX] ' =.XX .` ` ' +.-.-.dXX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...| r N N S M.W.Y.E.~.Q.!.R.R.R.R.Q.R.Q.Q.R.", "I.I./.L.L.P.L.L.L.L.I.I.I.L.I.I.V B 6 _ X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.dXXX%X*._ *.%X%X;.] _ _ %.XXXXXX+XXXXX+X+X+XXXXXXX XXX>X>X3XzX X X X XhXO.o.aX;X|.3X,XE 4X|.@X*.` +.%.( wX%XXXO.uX%XXXrX-.*.( ` +.-.-.kX*X@XxXX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.} r N B D M.W.P.!.!.Q.Q.Q.!.R.Q.U.R.R.Q.!.", "/.L./.L.L.L.L.H.L.L.L./.H.L./.L.Z N 6 X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.kX@X=.` ( wX+X#XaX&._ / ' %.%XXXXXXXXX%X&.<.+X+XXXXXOXU H E R E R R R R R R R R E R R R E E K K H H H E R R R H U oX X@XXX+.` cX@X+XXXXXXXXXXXXX|.|.|.zXzX|. X+XxX+XpXO./ ` / ) dX+XzXzX1XH [.|.+X0XXX@X*.` yXXX8XfX+XXX@X@X*X&.' tX-X@X+X+X+XxXX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.} S A N D M.W.Y.R.!.!.R.R.R.R.R.R.R.R.R.R.", "I.L.L.L.I.H.L.L.L.L.L./.L.L.L.L.Z N 6 ..X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.kX@X+.] uX@X+XlX%X-X<.] &.wX+XXXXXXX@XrX` ` $.XX+XXXzXoXU H R R R R R R R E R R R R E H E 1X3X>X>X>XI E R R R R H U oX|.@XwX` dX%XXXXXXXXXXXXXXXXX+X+X+X+XgX .dXdX@.( / $.$./ ' qX@XXXXX X1XH [.|.+X+XXX+X0XfXXX@X%X+X+XXX .0X-X&.&.@XkX+._ wX+XX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.#.X.X.X.X.X.X.X.} S N N D M.(.Y.R.!./.Q.R.Q.R.R.R.R.R.!.!.", "I.L.L./.H.L.H.L.L.H.H.H.L.L.L.L.Z N 6 X...X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.xX+X<.wX=X X1X1XzX+XpXwX@X%XXXXX+XXX@X<./ / ` $.+XXXXX|.oXU H E R R R R R E R R R H E 1X2XzX+XzXzXzXXXI H R R R H K I oX#X0X' yX+XXX+XXXXXXX%X+X%XyX@.dX+XXX-.XXpX` ` ' gXfX` / ( gX%XXXXX.X1XH [.|.XXXXXX@X+XXX+XdX+.uX@X&.` wXcX_ _ ` ' [ =.@XX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.} S N N S M.W.P.!.R.!.Q.R.Q.R.R.R.R.R.R./.", "I.I.L.L.L.L.L.L.H.H.H.H.H.H.L.H.V B 6 X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.=._ <.@X#XXK H 6X+XXXXXXXXXXXXX%XaX=.=.;._ ` / 0X+XXXXXXXXX|.OX>XU H K K K R X2X|.#XqX_ ,.kX+X+X+XXXzX2XK R R R J R [.|.@XwX` / ` yX+X+XsX) ' yX%X@XXX+X%XyX_ ` ` sX*X@XpX` ` wX@X+XxXXXxX+XzX1XR [.XX%X%.` ] / / ` / O.<.-.%.' ' 0X*X*X+X' *.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.S N C D M.W.W.R.R.R.R.R.R.R.R./.U.R.R.!.", "U.I.I.I.L.L.H.L.H.H.H.H.H.H.H.H.V C 6 X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.,.' ` =.,XH H 6XzXXXXXXXXXXXXXXX+X@X@X*XsX;.wX@XXXXXXX+X+XXX+XzXOXXXXXH R R R E E .} X...X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.} 3.V C h B.GX< + + = HXE.H.J.H.H.J.H.J.J.J.", "I.I.I.I.I.I.H.H.SXJX+ @ - < JXAXJ.g A A 3.X.X...X.X.X.X.X...X.X...X.X.X.X...X.X...X.X...X.X.X.X...X.X.....X.X.X...X.X.X...X.X.....X.X...X.X.X.X...X.X.....X.X...X.X.X...X.X.X.....X.X.X...X.X.X...X.X.X.X...X.X.X...X.X.X.X...X.X.X...X.X.X.X...X.X.X...X.X...X.X.X...X.X.X.X.X...X.X.X._ X...X.X...X.X.X...X.X.X...X.X.X...X.X.X...X.X.X...X.X...X.X...X.X.X...X.X.X.X.X.X.X.X.X._ ) ^ D C N h NXGX9 , O , HXE.J.J.H.H.H.G.H.H.G.", "I.Y.I.I./.H.I.L.AXLX1 1 - < JXAXJ.Z N N r ^ X...X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.^ >.B C B h N.GX, , + 1 JXE.J.H.J.J.J.G.G.G.G.", "I.I.I.I.I.I.I.H.AXJX, 2 < < JXCXH.S.D A N r ^ O.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.+.>.h N V 7 h N.GX+ < < < JXCXJ.J.J.J.J.H.J.G.G.", "U.I.I.I.I.I.I.L.AXJX< 1 < @ JXAXH.H.m.m h N r $. .X.X.X.X.X.X...X.X.X.X.X.X.X.X.X.X.X.| X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...X.X.X.X.X.X.X.X.X.X.X...X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X...X.X.X.X.X.X.X.X.X.X.X.| ^ r h N V 7 5 l NXGX< = 2 O JXE.J.H.J.J.H.G.J.J.G.", "I.I.U./.I.L.H.L.AXJX= + - < JXAX(.H.L.F N A C D 3.^ } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } O.} } } } } ^ 3.S V V V g 5 h z NXGX, ; = , JXE.J.H.H.G.H.G.G.J.G.", "U.U.I.I.I.L.L.L.DXJX+ 1 2 , JXCXJ.J.G.G.F 7 A A N g V V B N C C N Z N N N N N g N N N N N N N N h V B N B N N N V V N N V N g N N N N N B g N N B B h N N N g N h V N N V N N g N N h N h V N N N Z N g N N N N N N N B V V N N B V N g g N V B g N V N N N N B V g N B g N N N N g N N C B N N N N N N g N N N g N N N N N N N N N N N B N N g N N N N N N B N N B Z Z N N Z N N V C 7 5 7 l m.NXGX, < , X JXCXG.G.G.J.J.G.H.G.G.", "U.I.I.U.L.L.L.L.AXJX1 X o 3 JXDXJ.J.J.H.m.z Z V h h Z V C C C C N N N N N N N N N N N N N N N N N N C N C N N N N N N N N N N N N N N N N N C N V N N Z N N Z Z N N N N N N N N N N C C C C B N N N N N N N N N N N C C N g N N B N N N V N V C N N C N N B N C N N N C N N N C N N C C C C N C C C C C N N C C N N N C N C C C N N N N N N N N N N N N C N N N N N N C N C C N C 7 7 7 6 7.7.m.CXJX, = < < JXCXJ.J.G.G.G.G.G.G.G.", "I.U.I.I.I.L.L.L.AXJX, 1 2 @ IXGXJ.J.G.J.J.J.m.m.F h h h g g B g g g g g N g g g g g C g N g g r g B g g g g g g g g h g g g h g h g g N g g N g g g g g g g g g h g g g g g h h h g g g g g h h g g g g h h g h g g g g g g g g g g g g g g g g g h g g g g g g g g g g g g g g g g g 7 g g g g 7 g g g g g g 7 g g g g g g g g g g h g g g g h g h g g g g g 7 g g g 7 g g 7 8 3 8 5 5 l 7.8.m.DXPX, 2 + @ JXMXG.H.G.H.H.G.J.G.G.", "Y.I.I.I.L.L.L.H.AXJX< X < , PXPXGXDXAXCXZXCXCXMXNXT.M.B.z z h f 5 h 5 5 5 5 7 z 5 7 5 5 7 5 5 5 7 5 5 5 5 5 5 5 4 4 5 5 4 4 4 4 4 5 4 5 5 4 5 4 5 5 5 5 4 4 5 5 4 4 4 4 5 5 4 4 4 4 4 4 5 4 4 4 4 4 4 5 4 4 5 5 4 4 4 4 4 4 4 4 : 4 4 4 : 4 : 4 4 : 4 4 4 : 4 4 4 4 4 4 4 4 4 4 4 4 : 4 4 4 4 4 4 4 4 : : 5 : 4 : 4 4 : : 4 5 : 4 4 5 4 5 5 4 4 4 4 4 5 5 5 5 4 4 4 5 5 i S B.B.N.mXmXNXNXNXNXGXLXIX9 , 1 # JXAXG.G.J.J.G.G.G.G.G.", "L.I.I.I.L.L.L.I.ZXJX< < - , PXPXPXJXJXLXJXJXJXGXGXCXT.M.B.b z l z z z z z z z z z z z 7.z z 7.z l l z z l z l l l l l l l l l l l l l l l l l z l l l l l l l l l l l z l l l l l l l l l l l l l l l l l l l l l l k l k k k k l k k k l k k k l k k l l l k k l k k l l k k l k k k l l k k l l k k l l l l k l l l l l k l k k k l l l l l l l l l l l l z z z l z B.M.NXmXGXGXGXGXGXGXGXJXPXPXIXO , < + JXMXJ.J.G.G.J.J.G.G.G.", "L.U.L.I.L.L.L.H.ZXJX= < < + 9 1 , < < O , 1 1 1 O , - NXW.m.m.m.7.m.m.m.m.m.7.m.8.m.m.m.7.8.m.7.8.m.b 7.7.7.b b 7.7.7.7.7.7.7.7.7.7.7.7.7.n 7.n 7.7.7.7.7.7.b 7.7.7.b 7.7.7.7.7.7.7.7.7.7.7.7.b 7.7.7.7.7.7.7.7.b b 7.7.7.7.7.c c 7.b b c b v 7.c c c v c c b c l c c 7.c 7.c c c 7.c 7.7.c 7.l 7.7.7.c c 7.c 7.7.c c 7.7.c c 7.c 7.7.7.7.7.7.7.7.7.7.7.b b 7.7.7.7.8.T.NX, + < , = < 2 2 < 1 9 @ 9 < < X 3 HXAXG.J.G.H.G.G.G.G.G.", "U.L.U.U.L.L.L.H.ZXGX< + < 1 1 @ 2 - = = , - - X - O O CXT.V.S.V.m.V.V.C.V.V.V.V.K.m.V.8.V.m.V.V.8.V.V.k.g.m.V.8.g.8.g.8.8.g.g.8.V.8.V.8.V.g.V.V.V.g.g.g.m.8.V.8.V.8.g.g.8.g.g.8.g.g.8.8.g.8.8.g.g.8.g.8.g.g.g.8.g.g.8.g.8.g.8.8.g.g.8.8.8.8.8.8.8.8.8.8.8.8.8.6.g.6.8.p.8.9.g.8.8.8.8.g.8.8.8.d.8.p.8.8.8.8.9.g.8.8.g.8.8.8.8.8.8.g.8.g.8.g.g.8.g.l.m.8.V.8.V.8.m.8.8.NXDX< 3 + , - = # + X O O < O = < , + HXCXG.G.G.G.G.H.G.G.G.", "L.L.U.L.L.I.L.L.~.GX2 < - - , 2 = < 2 + 2 X 2 X @ @ = AXE.D.K.A.D.D.D.K.Z.K.Z.K.K.F.D.Z.K.C.F.V.D.V.C.C.k.k.k.k.k.k.k.k.k.k.k.l.k.k.l.V.k.k.V.V.k.V.k.k.k.k.V.k.k.g.k.l.k.k.k.l.l.l.j.l.j.j.l.j.l.j.l.k.k.l.k.k.k.k.j.l.l.l.l.l.h.l.s.h.g.l.s.g.l.d.l.g.g.s.h.g.s.h.l.h.l.s.l.g.l.h.l.s.s.s.l.l.l.g.s.h.h.h.s.l.s.s.l.h.h.h.l.h.h.j.l.l.k.l.k.k.j.j.k.k.k.k.k.k.k.k.n.MXDX= 2 X , , O O 1 , - < < 2 2 = , < HXE.G.G.H.G.G.G.G.G.G.", "U.U.L.L.H.I.L.H.U.VX; = < , 1 @ < < @ 1 @ 1 1 = O , < MXQ.G.G.G.D.D.G.G.D.D.G.G.D.K.G.D.K.Z.F.D.D.F.F.C.C.C.V.k.k.c.k.c.k.n.C.C.C.C.C.C.C.F.F.C.C.C.k.C.c.C.k.C.C.C.k.C.V.k.c.k.k.j.k.k.j.j.x.x.k.k.c.k.c.c.k.k.k.k.c.x.j.j.h.j.x.x.x.h.h.z.z.h.h.h.z.z.z.z.z.z.h.l.h.s.h.h.z.z.h.h.j.j.k.h.j.h.j.h.j.j.h.l.j.h.h.k.j.h.h.h.h.j.v.j.k.z.k.k.C.k.C.C.C.C.C.V.C.C.F.c.C.MXDX- < 1 1 , 1 @ - < < - - , < + < = AXU.G.G.G.G.G.G.G.G.G.", "U.L.L.I.I.H.I.H.I.E.CXDXHXJXJXJXJXJXJXJXJXJXJXJXHXFXDXBXU.G.D.G.J.D.J.D.G.G.G.D.G.D.D.D.D.D.D.D.D.F.F.V.C.C.C.k.C.k.c.c.k.C.k.C.k.C.C.C.C.F.F.C.C.C.C.C.C.C.C.C.k.C.k.k.k.k.k.c.c.c.k.k.k.j.k.x.j.v.j.k.j.c.k.k.k.k.x.c.x.x.j.j.z.l.h.j.s.h.h.h.h.z.s.z.h.z.h.z.z.h.s.h.h.h.h.h.h.h.h.j.h.j.h.h.x.x.j.j.h.l.h.h.h.h.h.z.h.j.j.j.k.x.k.k.k.n.C.k.k.c.C.C.k.C.C.C.C.C.k.E.CXDXHXHXLXJXLXJXLXJXJXJXLXJXJXHXHXCX!.U.G.G.G.G.G.G.G.G.F.", "L.L.L.L.H.H.H.H.H.P.!.E.ZXAXCXAXCXAXAXDXAXAXDXCXMXMXBXP.D.D.G.D.G.D.G.G.G.D.G.G.G.G.G.D.D.D.D.D.F.D.F.F.C.C.C.C.C.C.c.c.c.k.k.C.C.C.C.C.C.C.C.F.C.C.C.C.C.k.C.k.C.k.V.C.k.C.c.c.c.c.k.k.j.j.c.c.k.k.j.j.j.c.c.x.c.k.x.x.x.j.v.h.z.z.v.s.v.s.s.z.s.s.s.z.b.s.s.h.s.h.s.h.s.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.z.h.h.h.h.h.h.j.h.j.j.j.k.k.z.k.c.k.C.C.C.C.C.C.C.C.V.C.C.C.F.E.CXMXDXDXDXDXDXDXDXDXDXDXCXCXCXE.E./.G.D.F.G.G.D.G.D.D.D.", "L.L.H.L.H.H.H.H.H.H.G.H.H.G.G.H.G.G.G.G.G.G.G.F.D.D.D.D.J.G.D.G.G.D.G.D.G.G.G.G.G.G.D.G.G.G.G.D.D.F.F.K.C.C.C.C.C.k.c.c.A.C.c.C.V.C.F.C.C.C.C.F.C.F.C.C.C.c.C.C.C.k.C.k.c.C.c.c.c.c.k.c.c.l.j.c.x.j.x.h.v.v.j.k.c.j.j.x.j.j.h.j.z.s.s.h.s.s.s.h.h.s.h.z.s.s.h.s.s.s.z.s.z.z.z.s.h.h.h.z.h.h.h.h.z.h.h.j.h.h.h.h.h.i.z.h.j.h.h.v.x.x.c.c.k.c.c.C.k.C.k.C.C.C.C.c.k.k.k.C.C.k.k.C.k.C.C.C.C.C.C.C.Z.C.F.Z.D.D.D.D.D.G.D.G.D.G.G.G.D.", "L.L.L.H.H.H.H.H.H.H.H.G.G.H.H.H.G.H.H.G.G.G.G.G.D.D.D.D.D.D.G.G.Z.D.G.G.G.G.G.G.G.G.G.D.D.D.G.D.D.D.F.C.Z.C.Z.C.c.C.C.c.k.k.k.A.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.k.k.C.k.C.C.c.C.C.F.c.k.k.c.c.x.j.v.j.j.j.l.j.j.j.v.j.v.j.j.v.h.z.z.s.s.h.s.s.i.i.s.s.s.s.h.s.s.s.s.z.s.s.s.s.s.h.h.h.x.h.h.z.h.z.x.h.x.h.h.h.h.h.z.z.h.h.z.l.j.j.v.x.x.k.c.c.C.k.C.k.C.k.C.C.C.C.C.V.k.C.k.C.k.C.k.C.k.C.C.C.C.C.C.C.Z.Z.D.F.D.D.D.D.F.D.D.G.D.D.D.", "L.L.H.H.H.H.H.H.H.G.G.H.H.G.H.G.H.H.F.H.H.F.G.G.G.F.F.D.D.D.G.D.Z.G.G.G.G.J.G.G.G.G.G.G.G.G.D.D.K.Z.C.D.Z.C.C.C.C.C.c.C.C.k.C.C.C.C.C.C.C.C.C.C.F.C.k.C.C.C.C.C.C.k.A.k.C.c.C.c.k.c.c.j.c.c.x.x.j.j.j.h.h.h.j.j.l.j.h.h.z.h.z.z.i.h.i.s.s.s.s.s.s.s.s.s.i.s.s.s.s.s.s.z.z.s.h.s.h.h.h.z.j.h.h.h.h.h.v.j.h.h.h.s.z.s.h.h.x.l.x.j.j.k.k.k.c.c.C.C.V.C.C.C.C.C.C.C.C.C.C.C.k.V.C.k.C.C.C.C.C.C.C.C.C.C.F.A.Z.F.D.D.D.D.D.D.D.D.D.D.D.", "H.H.H.H.H.H.H.H.H.G.H.H.G.H.G.H.G.G.H.F.G.G.G.G.K.D.D.D.D.D.G.D.G.G.G.G.J.G.G.G.G.G.G.G.G.D.G.D.D.D.Z.C.Z.Z.C.k.C.c.C.c.k.C.C.k.C.C.C.F.C.F.C.C.C.C.k.C.k.C.k.k.k.C.C.C.k.C.c.C.c.c.c.c.j.c.x.x.j.l.z.h.h.h.h.h.v.h.h.h.s.s.s.s.i.s.i.i.i.i.i.i.i.i.s.i.i.i.i.i.s.s.s.s.s.s.s.h.s.h.z.h.z.h.h.h.h.z.h.h.h.h.h.z.s.z.h.h.z.x.x.c.k.v.k.v.k.c.c.C.k.C.C.C.k.C.C.C.C.C.C.k.k.k.k.C.k.C.k.C.C.C.C.C.C.C.C.F.C.F.D.F.Z.Z.D.D.D.A.D.D.Z.", "H.H.H.J.H.H.J.H.G.H.G.G.H.G.G.G.H.G.G.G.F.G.G.G.D.D.D.D.D.D.D.K.G.G.J.G.G.G.G.G.D.G.G.G.G.D.D.D.D.F.D.Z.C.C.C.C.C.C.c.c.C.k.C.C.C.C.C.C.C.C.Z.C.C.k.k.C.k.C.c.C.C.k.C.C.V.C.C.c.c.C.c.c.k.j.x.z.j.j.h.h.h.h.h.h.z.h.s.s.s.s.s.i.i.i.i.i.i.i.i.i.i.d.i.i.i.i.i.l.i.s.s.f.s.s.h.s.h.h.h.h.z.z.h.h.h.z.h.h.h.h.h.f.h.z.h.h.j.v.x.c.k.v.k.k.c.c.c.k.C.C.C.C.C.F.c.C.C.C.C.k.V.k.k.k.C.k.C.C.C.C.C.C.C.C.F.F.Z.F.C.Z.Z.Z.D.F.D.Z.D.D.D.", "H.H.H.H.H.H.H.J.H.H.H.G.G.G.H.H.G.G.G.G.G.G.G.F.D.G.D.G.D.D.D.D.Z.G.Z.G.G.G.G.G.G.G.G.G.G.D.D.D.D.D.Z.Z.Z.C.F.Z.C.F.f < @ O 2 2 = @ = f 8.A.F.A.c.V.c.j.k.k.k.Z.A.C.k.k.C.k.k.v.V.k.c.v.v.V.V.x.v.z.d.i.z.l.l.d.b.z.f.g.s.s.b = X 2 v i.u.d.y.u.p.d.i.i.d.y.f.y.f.d.d.g.s.s.j.a.s.l.s.j.v.z.f.d.l.z.s.h.s.s.h.l.l.b.h.h.l.l.x.x.x.x.k.k.c.c.V.k.k.C.C.C.Z.C.C.C.C.C.C.C.F.k.k.V.k.C.k.k.k.C.C.C.C.C.C.F.C.C.C.Z.A.F.F.F.F.F.A.D.D.", "H.H.H.H.H.J.J.J.H.H.G.H.G.H.G.G.G.G.G.G.G.G.G.F.D.D.D.D.D.D.D.K.D.D.G.G.G.G.G.G.G.G.G.G.D.G.D.D.D.D.C.C.C.C.C.C.C.C.h = < < X , < < X X ; 8.C.c.Z.C.c.A.k.C.C.c.c.C.Z.k.A.C.v.c.k.c.g.c.l.j.l.j.v.d.b.A.b.i.s.s.h.b.z.s.f.b.c o 1 - c i.a.i.d.i.b.u.a.u.y.s.i.i.b.g.b.f.i.l.i.b.x.z.x.b.s.z.s.s.c.b.s.s.l.s.s.h.h.h.h.h.j.j.j.v.c.j.k.k.k.C.k.C.k.C.C.C.C.C.C.C.C.C.C.C.k.k.C.k.k.C.k.k.C.C.C.C.C.C.C.C.C.F.C.C.F.F.F.F.F.Z.D.F.D.", "J.H.J.J.J.J.J.J.G.H.G.G.G.G.G.G.G.D.G.F.G.G.F.G.D.D.D.D.D.D.D.D.G.G.G.G.G.G.Z.G.G.G.G.G.G.D.D.D.D.D.Z.Z.D.C.F.C.C.C.f = 2 @ - = 2 + < + @ h C.j.C.v.A.c.F.k.k.C.C.k.F.k.Z.k.c.v.C.l.n.s.v.z.v.b.x.l.l.s.h.v.s.s.d.d.i.g.y.i.v o , , v u.i.u.e.u.a.y.u.f.f.e.u.d.i.d.d.f.i.i.i.h.a.b.s.s.l.i.z.v.i.l.h.h.s.h.s.h.s.s.h.h.v.h.j.j.j.j.k.v.k.k.C.k.C.C.C.C.C.C.F.C.C.C.C.k.C.C.k.C.C.k.V.C.k.k.C.C.F.C.C.F.C.C.C.Z.F.A.F.F.Z.Z.Z.Z.D.", "J.J.J.H.H.G.G.G.H.H.G.G.G.G.G.G.D.G.D.D.D.D.D.D.D.F.D.D.D.D.D.D.D.G.G.G.D.G.G.G.G.G.D.G.G.Z.D.D.D.D.Z.Z.C.C.C.C.C.D.f < 1 = 7.D.V.b + < @ f Z.k.C.c.8.b z b b 8.C.k.c.n.m.n n V.n l n c.v.x.g.n x x k 8.l.d.g.z.s.i.c k x 9.b 3 < , v y.e.s.y.b s k s 6.i.a.a.i.v v v 6.9.c k x 8.z.l.c l x n l.d.v.s.z.s.s.h.z.z.z.s.h.j.h.j.j.c.x.k.k.k.k.c.c.c.A.C.C.C.C.C.C.C.C.k.C.C.k.k.k.k.C.C.k.C.C.C.C.C.C.C.F.C.C.C.C.C.C.F.F.Z.C.Z.Z.C.", "J.H.G.G.G.H.H.G.G.G.G.G.G.G.G.D.G.D.F.F.D.D.D.Z.F.D.D.D.F.D.D.D.G.A.D.G.D.G.G.D.G.G.G.Z.G.G.G.A.D.Z.Z.Z.D.F.Z.C.F.C.f < 1 - 7.F.V.b = O = c k.C.A.b 3 ; 2 < 1 ; l F.k.V.o j ; h ; < ; l.x.n : 1 @ @ + # f c s.i.g.k ; 2 2 # ; + O 2 v t.i.c : # + + @ ; k v i.y.j ; # k f o 2 2 o x k = @ 2 ; x h.i.s.s.z.s.s.z.s.z.h.h.h.v.v.j.j.x.j.v.c.x.c.c.C.C.C.C.C.C.C.C.C.C.C.C.V.C.C.C.C.k.C.k.k.V.C.k.C.C.C.C.C.C.C.C.C.F.C.C.F.Z.Z.Z.D.", "G.H.H.G.G.G.G.G.G.G.G.G.G.D.G.D.D.D.D.D.Z.D.Z.D.D.D.F.D.D.D.D.D.D.D.D.G.G.G.G.G.D.G.G.D.D.G.D.D.Z.Z.Z.Z.C.Z.Z.Z.F.C.5 = 3 < 1 < 2 # < < k k.k.A.n = 1 = 2 + < < ; b c.V.+ @ X < < 1 k l.n : @ , - ; ; @ < f 9.d.x ; @ + ; o ; , + o v d.v ; @ @ ; - 1 O ; s p.i.f @ O X 3 # - X < = + # < < O ; 8.s.h.s.s.z.s.h.z.s.h.s.h.h.h.j.j.k.x.x.v.k.c.c.C.k.C.C.Z.C.C.C.C.C.C.C.C.C.C.k.C.k.C.C.C.k.k.C.C.C.C.C.C.F.C.C.C.F.F.F.C.C.C.Z.Z.", "G.G.G.G.H.G.G.G.G.G.G.G.G.D.D.G.D.D.F.D.Z.Z.Z.Z.F.F.F.D.D.F.D.D.D.G.D.D.D.A.G.G.G.G.D.D.D.Z.D.D.Z.Z.Z.Z.Z.C.Z.Z.Z.Z.f < 2 < = = = = # @ h k.n.k.: 1 , 5 V.8.f < = ; c.c.2 X - - x b g.h.m + @ ; 9.8.c + X ; k d.j < < ; 6.8.4 X < + v w.k , X : c y.a O = = n u.a < @ ; k x : + < = a c a = , O 7.f.s.s.i.h.s.h.z.z.z.h.h.h.h.h.z.z.h.k.c.k.k.c.k.C.k.C.C.C.C.C.C.C.C.C.C.k.k.C.k.C.C.C.C.C.k.C.C.C.C.Z.C.C.C.C.C.C.F.V.C.Z.Z.Z.Z.", "H.G.G.G.G.G.G.G.G.G.G.G.D.D.D.D.D.D.D.F.F.Z.C.Z.F.F.F.D.F.D.D.D.D.G.D.D.D.D.G.G.D.G.G.G.D.Z.Z.Z.Z.Z.C.Z.Z.C.Z.Z.Z.C.h 2 O X z b z k + 2 O a k.m.< @ @ b l.v.n 2 @ O g.l.= < , f A.s.h.l.3 , < j c x x 3 - 2 j g.# , + k e.b.x - , < v p.; O = s e.a.p.# @ O x q.f X @ a 6.s.x # 1 + 6.s.n o , , b f.h.i.s.h.s.z.h.b.z.z.h.h.j.z.j.v.j.j.j.c.v.k.c.c.C.C.C.C.C.C.C.C.Z.C.C.C.k.k.C.k.C.C.C.C.C.C.C.C.C.C.C.C.C.C.Z.C.Z.F.C.Z.Z.Z.Z.", "G.G.G.G.G.G.D.G.G.D.F.G.D.D.D.D.F.F.A.F.A.A.C.C.Z.F.K.Z.D.D.D.K.F.D.D.D.D.D.D.D.G.G.D.D.D.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.C.Z.Z.f = , = F A.A.j.f + @ 2 8.8.; - ; F j.c.n 3 @ # n l.+ - O l x.j.f.k.= 1 < = ; < < , # ; a l.< < + k f.r.b o 1 - d u.; , = k a.e.i.- < - k p.f O 1 a u.d.k # , ; y.i.c 1 , O v a.i.s.s.i.s.s.s.s.s.h.h.h.h.s.h.s.h.h.l.x.x.k.j.c.k.c.c.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.k.V.k.C.c.C.c.C.C.Z.C.C.Z.F.C.F.F.C.Z.D.", "G.G.G.G.G.G.G.G.F.G.G.G.D.D.D.D.D.D.A.A.F.Z.Z.Z.Z.Z.Z.Z.F.D.D.Z.D.D.D.D.D.D.D.D.D.D.D.D.D.Z.Z.Z.Z.D.Z.Z.Z.Z.Z.C.C.Z.j = = ; n A.k.8.3 - + + 8.8.# @ = c C.c.k ; 1 , g.h.2 < + x f.c.f.8.: O < h c n v 7.b c v e.; 2 < s p.d.x ; + < v 6.; + < j e.w.v ; 1 + x e.a = - f a.i.k + - = i.i.v # ; < v i.i.i.s.s.s.s.s.h.s.s.h.h.s.h.s.v.z.h.j.c.x.k.c.c.k.C.C.C.c.F.C.C.C.C.C.k.C.C.C.C.C.C.C.k.C.C.C.C.C.C.C.C.C.C.C.Z.F.C.C.C.F.D.F.", "G.G.G.G.G.G.G.G.G.G.F.G.D.D.F.F.A.D.F.F.Z.Z.C.Z.C.Z.Z.Z.D.F.F.Z.D.D.D.A.D.D.D.D.G.D.D.D.D.D.Z.Z.Z.Z.Z.C.C.Z.Z.F.F.C.7 , 1 , 2 2 < X - < + ; 8.V.j # @ : x b j @ - 4 x.j.# O + b s.z.d.g.m + , ; c n s - 3 j v b.j @ < 3 k x ; ; < O c y.m 1 @ o x d a O @ 3 6.f.: + , a t.d.k + = 1 e.p.v o # = c i.u.d.i.i.s.i.s.s.s.l.i.h.h.s.h.s.z.z.j.l.j.x.x.c.c.k.C.k.C.C.C.c.C.C.C.k.C.C.C.C.C.k.C.C.k.C.C.c.k.C.k.C.C.C.C.F.C.F.F.C.C.C.D.", "G.G.G.G.G.D.G.G.G.G.D.D.D.Z.Z.Z.Z.C.F.V.C.F.F.C.F.C.C.D.Z.Z.Z.Z.D.A.F.F.F.D.D.F.D.D.D.F.D.D.D.F.D.D.C.Z.C.Z.Z.C.Z.C.h = < , = X o < 2 @ ; x V.v.n : @ = = , , < : 8.h.j.= + + z x.d.z.s.8.; - - 2 # , O - s d.d.6.# + X < X 3 + @ - d e.v : - O 1 < - - ; k w.e.4 , 1 a 4.y.k # - - e.6.c , O - c i.u.i.i.d.s.i.i.i.s.s.s.z.s.z.s.v.h.h.z.l.j.j.k.j.k.k.c.c.c.c.c.C.k.C.c.C.C.C.C.C.C.c.C.C.c.C.c.c.k.c.c.C.c.Z.C.C.F.F.D.C.C.C.D.", "G.G.G.G.D.D.G.G.D.G.D.D.D.Z.Z.Z.F.F.F.C.C.C.F.F.F.D.C.F.C.Z.Z.Z.A.D.D.F.D.D.D.D.D.D.D.D.D.D.D.D.F.C.Z.Z.Z.C.F.C.C.C.f 2 X < ; 2 < # : f b k.v.s.c.n f = = < + f n x.j.x.; ; # x b.l.i.z.f.v f = + < @ + k 8.y.y.u.x 2 ; = ; k ; X = v e.u.v s X = 2 2 3 d u.t.M a # @ j y.y.k o < < f.y.c ; # ; c d.u.u.i.u.u.u.i.d.i.s.i.s.s.s.z.s.h.h.h.z.j.j.j.j.k.F.c.c.k.F.C.c.C.k.C.C.c.C.C.Z.C.c.c.c.k.c.k.k.k.c.c.c.C.C.C.F.F.C.C.C.C.D.C.", "J.G.G.G.G.G.D.G.D.D.D.D.D.Z.Z.Z.C.C.F.C.F.C.F.C.C.F.F.C.F.Z.Z.Z.D.A.D.D.F.D.D.D.D.D.D.D.F.D.Z.Z.Z.Z.C.F.C.F.C.C.C.c.n.c.k.A.k.c.x.x.V.k.g.s.v.j.h.j.l.8.v 8.8.l.j.h.j.v.6.l.d.z.v.a.l.p.f.f.p.g.c c c i.q.i.f.w.d.p.u.v v t.u.q.t.a.M w.e.u.4.8.c d v q.e.e.e.u.w.6.e.q.r.t.u.a.u.p.q.w.t.y.p.6.d.u.u.d.u.u.i.i.i.u.i.i.i.s.s.s.s.s.z.h.z.z.h.j.x.j.c.j.n.k.c.k.k.k.k.c.C.c.F.A.c.C.c.c.k.c.k.c.k.c.k.k.c.k.c.C.C.F.F.A.C.F.F.C.Z.", "J.G.G.D.G.G.G.D.G.D.D.D.D.F.Z.C.F.V.C.Z.C.C.C.C.C.C.C.C.D.C.C.Z.F.D.D.D.D.D.F.F.D.C.F.Z.Z.Z.F.Z.F.F.D.C.F.C.C.C.F.c.C.k.A.c.j.j.j.j.x.d.l.s.s.j.h.f.f.h.s.f.s.s.s.h.h.b.k.k.b.l.a.d.b.d.d.f.a.e.e.d.i.a.d.p.w.d.d.w.w.y.p.u.q.y.w.w.p.e.q.u.e.e.e.r.M u.e.0.q.u.e.r.0.p.e.e.w.6.y.p.a.e.a.p.b.p.u.e.u.u.u.u.d.u.u.u.i.e.i.i.i.l.s.z.z.z.h.z.l.v.x.x.j.x.x.v.k.k.k.k.k.k.c.c.c.c.C.c.A.F.k.c.c.c.c.j.v.k.c.F.c.C.C.C.F.C.F.C.C.C.Z.", "G.J.G.G.D.G.G.K.D.D.D.D.D.F.Z.C.F.F.V.C.C.V.k.F.F.C.C.Z.C.F.C.C.Z.Z.D.F.F.Z.D.Z.D.Z.D.Z.Z.Z.Z.D.F.C.F.F.C.C.C.c.c.C.k.j.c.x.k.l.j.j.f.f.g.l.l.g.s.d.j.s.l.d.h.h.z.i.d.b.d.s.h.i.f.d.i.s.d.i.i.u.i.u.a.e.d.y.i.i.a.u.w.p.a.e.w.w.q.q.q.4.e.u.q.r.y.q.w.w.y.M w.5.e.t.r.u.r.0.u.u.t.e.p.u.e.i.e.u.e.u.u.u.u.y.u.y.u.u.u.u.i.p.i.i.s.s.h.s.h.h.j.j.j.v.l.j.j.j.j.j.k.v.c.c.c.c.C.C.A.c.c.F.C.c.c.c.j.c.k.j.k.c.A.C.C.C.C.C.Z.C.F.C.Z.", "J.G.G.G.G.G.D.G.G.D.D.D.D.Z.Z.Z.F.C.C.F.C.C.F.k.C.C.F.C.C.F.C.D.C.Z.Z.F.Z.Z.Z.Z.Z.C.C.F.Z.C.F.C.F.C.n.C.C.k.c.V.x.v.c.x.x.z.j.j.j.z.l.v.s.l.s.h.f.h.d.a.z.d.z.a.z.l.f.z.l.s.f.s.i.h.b.d.y.i.e.b.u.u.u.i.w.w.i.w.y.p.y.u.q.r.4.u.p.y.t.r.r.q.q.p.e.r.r.y.q.w.t.r.q.0.q.q.r.r.w.q.w.t.e.u.p.u.e.e.u.u.e.d.p.w.i.w.y.y.w.w.s.i.d.d.s.f.z.b.z.z.z.j.j.j.v.z.j.x.x.j.j.c.j.x.c.c.c.c.F.c.c.c.k.c.x.c.j.v.k.c.c.k.j.c.c.C.C.C.C.C.C.Z.C.", "J.J.G.G.G.G.D.G.D.D.D.D.D.Z.Z.C.F.C.C.C.C.C.C.C.k.C.C.C.C.C.C.C.C.Z.Z.C.F.F.A.F.D.C.C.Z.V.Z.Z.Z.Z.G.A.A.C.F.k.C.A.l.v.l.v.s.l.l.s.s.h.s.d.h.i.d.f.l.g.b.b.i.p.z.b.i.z.i.s.d.h.s.s.d.b.i.d.s.i.p.e.u.u.u.t.w.u.d.w.e.u.u.p.a.e.e.q.e.q.p.u.q.4.e.p.q.u.M w.w.0.r.0.p.q.r.M t.q.t.e.y.6.e.e.r.e.p.a.t.e.e.e.t.a.e.u.e.s.e.e.u.d.d.b.i.h.h.z.h.z.z.z.h.z.j.j.v.v.z.j.x.x.x.c.k.k.c.k.c.c.c.c.k.c.j.x.k.c.k.c.k.c.C.C.C.C.Z.C.C.C.C.Z.", "J.G.J.G.G.G.G.G.D.G.D.Z.F.Z.Z.C.F.C.F.F.C.C.C.k.C.C.C.C.C.C.C.F.C.C.C.C.c.F.A.F.C.C.C.Z.n.F.k.D.n.V.Z.A.V.k.n.j.C.l.v.l.l.j.l.v.h.h.s.j.i.f.f.g.h.i.i.d.s.l.i.s.s.d.d.d.d.d.i.s.s.s.d.i.a.u.a.i.d.u.t.v u.e.y.t.w.u.e.w.q.a.e.q.q.q.e.4.q.u.r.q.u.p.e.e.d d 4.q.q.r.r.d d v v 4.w.w.w.u.w.M v c 6.0.u.u.e.4.q.v d v 6.i.a.e.f.i.i.l.z.i.z.z.h.h.j.h.z.z.z.j.j.j.c.l.j.x.c.k.c.c.c.c.c.F.c.k.k.c.c.k.c.k.k.k.c.C.C.c.C.C.C.C.F.Z.Z.", "G.G.G.G.J.G.D.G.G.Z.Z.G.Z.Z.Z.C.C.C.C.C.C.C.C.k.F.c.c.F.c.F.k.C.C.C.C.C.C.F.C.C.C.c.C.Z.D.V.- = = 2 + 2 f b C.j.v.j.h.l.x.j.z.i.s.z.j X = g.g.; + f d.d.p.z.u.d.i.i.i.z.i.g.i.h.p.b.u.i.v < < x 4.j < 3 u.v 3 X f p.p.y.w.w.u.q.y.M r.w.0.w.u.e.e.t.e.c ; = s M t.0.k a o O + ; d u.a.M s o ; X ; k y.t.y.k a o 3 X a d d.a.a.p.i.d.l.h.s.z.z.h.h.h.h.h.z.h.x.j.z.x.x.j.c.c.c.k.c.C.c.c.c.c.c.C.c.c.c.c.c.k.C.c.k.C.C.C.C.C.C.C.Z.", "J.J.G.J.G.G.G.G.G.D.Z.Z.Z.Z.Z.C.C.C.C.C.C.k.C.k.c.F.k.c.c.k.C.C.C.C.C.C.C.C.C.C.C.F.n.A.C.F., 1 X 2 - X + 3 k A.x.V.h.s.z.s.s.h.s.i.f + ; u.a.= < f f.f.f.i.d.u.b.i.i.i.i.b.i.i.i.d.d.f.d - , k w.j < o r.a.2 X a e.p.w.e.e.e.y.u.r.q.t.w.e.u.e.w.4.c ; @ + k e.r.v < = + 4 3 + 3 q.t.a 1 < 3 a X + c t.v = + 3 3 , + a y.e.i.h.s.s.i.i.s.h.s.z.h.h.h.h.h.h.j.j.j.x.x.c.c.c.c.C.c.c.c.k.c.c.F.c.c.k.c.c.k.c.k.k.C.c.F.C.C.Z.C.Z.Z.", "G.G.J.G.G.G.G.D.D.G.D.F.Z.A.F.C.C.C.C.C.c.C.C.k.c.c.c.c.c.c.c.c.A.c.c.A.A.c.C.C.C.C.C.A.k.c.+ # ; n b z o O ; g.l.7.b g.v.g.n n i.f.f - - i.i.= - f d.6.6.k s k b 6.d.d n c s.t.y.c c v w.c d v d.a - , w.4.< , a 4.t.4.c s s s d t.t.r.q.a.r.u.v j < ; + = s r.0.d X 2 d t.d = = s 0.; O f v v o - j 5.k = < x 6.s @ = c d.i.a.u.s.s.i.s.s.s.h.s.z.h.h.h.z.v.j.j.x.c.c.c.c.c.c.C.c.k.C.k.C.c.c.C.C.C.k.C.c.C.A.k.C.C.C.C.C.C.Z.Z.", "J.G.G.G.G.G.G.G.G.D.D.D.Z.A.C.C.k.C.k.C.C.C.c.c.c.c.c.k.c.k.c.C.c.c.c.F.C.c.c.c.c.c.c.v.C.k.2 # 2 V.C.V.f @ O b n ; = x s.v ; o k s.j X + b.b.+ < j y.c = # ; # O s y.m # ; v u.k + # v c ; = x 6.f # 1 e.e.2 # j e.y.k < X ; X 3 m e.r.0.p.r.p.v o = j o ; k r.r.s X # x r.d 2 , f d + O k r.r.a @ 3 4.j X < a.u.d @ o x w.i.i.d.s.s.i.s.i.s.s.z.s.h.h.h.h.z.j.v.h.c.c.c.c.c.j.c.C.C.k.C.k.C.c.k.C.c.C.C.c.C.c.C.C.c.C.C.Z.C.Z.Z.", "J.J.J.G.G.D.G.G.D.G.Z.D.Z.C.C.C.C.C.k.C.C.k.c.c.c.k.k.k.c.c.n.c.c.C.c.k.k.k.k.k.c.c.k.v.C.k.- @ = l.c.v.x O 1 c n 1 1 x l.b = O k s.j 1 < d.d.O 1 f a.j @ < 8.m j k r.c O = x y.a 1 2 6.6.O X x y.a < O t.q.= @ f 4.s ; o j k 4 O # M q.0.q.u.q.d k 6.x - - s M t.d - X ; s : O 1 a d # X s t.5.f ; , 4.j ; X q.e.v X ; x u.i.i.i.i.i.i.i.d.s.s.s.z.h.h.h.z.h.j.j.j.x.v.c.c.c.c.k.c.k.C.k.C.k.k.k.C.C.k.C.C.C.k.k.C.k.C.C.C.C.Z.Z.", "G.G.G.G.G.G.D.D.D.D.D.A.Z.C.C.C.k.C.k.k.c.c.c.c.k.v.k.k.j.k.c.k.c.c.c.c.c.k.j.j.c.c.k.c.C.k., 1 = k.l.k.c @ 1 x 8.= 2 x b.v ; + s i.f @ , t.t.1 @ a a.s - - 4 j x d u.a.; , g y.# - m i.d < X x w.4 - @ r.a.= = f w.j = o m m a - = m 6.w.w.e.q.u.e.e.c 1 O s M 0.0.a o X ; 2 X 2 f d o ; s e.0.f < # 4.j ; X w.r.c X < x u.e.u.i.b.i.i.s.i.s.h.s.s.h.h.l.z.j.j.j.k.j.k.c.c.c.c.C.C.c.c.C.k.k.C.C.k.k.C.k.k.C.C.C.C.C.C.C.C.Z.Z.Z.", "G.J.G.G.D.G.D.G.D.D.Z.F.Z.C.C.C.C.k.c.c.c.c.c.c.x.x.j.j.k.k.k.k.k.c.c.c.k.c.c.c.j.j.k.v.l.l.= < o A.v.l.j 1 < c b 2 - k d.b X 1 k u.f - , i.i.X X a u.6.f 3 , , , = 6.u.k , ; s 2 = 6.d.c 2 < k y.f = 1 q.q.2 2 a w.j - % < ; @ < = d 4.e.r.u.q.u.0.q.d = ; d M 0.0.M d x d v ; ; a d @ O m r.r.a @ 3 4.j X < p.e.c O X k u.i.i.e.i.i.i.i.i.s.i.z.z.z.h.z.h.l.j.h.x.k.c.c.x.c.c.c.A.k.c.C.k.C.k.C.C.C.k.C.k.C.C.C.C.C.k.C.C.Z.Z.Z.", "J.J.G.G.G.G.D.D.D.D.D.F.Z.Z.C.C.C.k.c.j.c.c.x.j.x.j.c.x.x.c.j.k.c.v.c.c.v.c.c.j.x.x.l.v.k.k.< + 2 n n b ; O ; 8.n + < f g.k # + k f.a , + u.u., , a u.y.d d c f X 1 s e.w.: O 1 + j i.e.v + + x u.a < < r.4.2 2 a 0.j = 2 4.q.M d r.v u.q.q.q.p.e.q.p.c X + x p.M 0.s s s d s O - s 5.: - 3 4.d ; X a 0.x = - x 6.s @ ; v p.u.i.d.u.u.i.d.i.f.s.s.s.s.h.z.z.z.x.j.j.x.x.x.c.j.j.c.c.k.k.C.C.k.C.V.C.k.C.k.C.k.C.C.C.C.C.C.C.Z.D.Z.", "G.G.G.G.G.D.D.D.D.D.F.F.F.C.C.C.c.C.c.c.l.v.x.j.j.j.h.x.v.j.k.v.j.k.v.x.x.x.x.j.x.x.v.x.j.l.< @ O 2 2 , , 2 k x.8.; = + X = < = k y.f , - u.y.= X f 6.a @ # c s ; + d a.y.s 1 @ 1 d u.w.c # < s 4.j @ X r.q.< O 4 0.d ; X 2 4 , X 2 4.w.r.e.y.q.w.0.t.d = O s 0.0.0.; ; X 4 = % 3 5.r.s o X 3 f X , s t.v ; O 1 f + + a p.u.i.u.d.w.u.u.i.i.i.s.h.i.h.i.h.h.z.j.h.h.k.z.j.j.x.k.k.k.v.k.n.c.C.c.A.k.k.k.C.k.C.C.C.C.C.C.F.Z.F.F.n.", "G.G.G.D.Z.D.Z.D.D.Z.F.F.F.Z.C.c.c.n.c.j.x.x.j.x.j.j.z.x.h.k.j.h.j.j.j.x.x.x.j.j.x.x.z.x.V.l.2 # < + = ; f x j.f.i.k + # ; l ; # x y.a < < y.p.< + a 0.c ; 2 X + # s v e.u.d ; ; j w.p.u.v o ; x 4.j # ; 0.p.2 X a 0.t.s < = @ < a d q.0.q.e.e.q.q.w.0.d ; ; s q.4.q.d a ; = o a d M M 5.s o o X o s q.r.p.v : o 2 o a d d.u.i.e.i.y.i.i.d.s.i.s.i.h.s.h.h.h.z.h.h.x.k.z.j.k.v.j.j.k.k.k.j.c.c.C.C.c.k.C.k.C.c.C.c.C.C.C.C.F.F.D.C.", "G.G.D.D.D.D.D.D.Z.Z.C.F.C.C.C.c.k.k.j.k.x.x.x.l.x.z.x.h.k.h.j.h.h.j.x.j.j.x.j.v.h.j.h.j.s.v.g.l.l.l.x.V.g.l.j.a.h.l.g.v d.s.y.i.u.a.p.a.p.t.t.y.u.q.t.e.p.d d d 4.w.e.r.M p.p.4.y.p.t.r.e.4.6.q.t.4.e.M t.r.0.r.0.t.r.0.0.d d d 0.e.e.e.e.q.q.q.q.e.0.w.q.v r.0.0.0.M M d d d 0.M M 0.0.r.d x d v r.0.e.0.e.4.c c M v i.t.e.d.p.p.a.i.u.i.i.i.s.s.h.s.z.s.h.j.z.h.z.h.h.h.v.k.h.j.j.x.k.k.k.k.c.C.C.k.k.C.C.C.C.C.C.C.F.C.C.Z.D.F.", "G.G.G.D.D.D.F.D.Z.Z.C.Z.C.C.C.c.k.k.x.j.c.l.j.v.z.x.h.j.h.k.h.k.h.j.h.j.z.x.j.j.x.h.h.j.l.v.x.v.s.b.f.b.v.s.s.h.s.i.p.g.d.y.i.y.u.g.w.y.6.w.e.w.q.q.y.0.a.a.e.y.q.r.q.e.t.q.q.u.q.e.a.p.p.u.u.M r.y.q.6.5.0.0.0.q.0.0.0.0.t.r.t.M p.0.q.0.w.e.q.0.q.4.r.r.0.M q.0.M 4.0.0.0.0.0.0.M M 0.0.M 0.M M r.e.0.u.r.r.e.p.e.p.u.e.u.d.i.i.e.u.u.i.i.i.s.s.s.s.z.s.z.h.h.z.h.k.h.h.k.h.k.x.j.x.x.k.k.k.c.k.k.C.k.V.C.k.C.C.C.C.C.Z.C.Z.F.D.", "G.D.D.D.F.F.F.F.Z.Z.C.C.C.C.c.c.k.k.k.v.v.h.k.v.v.j.k.h.h.k.j.h.k.h.k.z.j.x.j.j.l.j.h.x.l.z.z.f.s.j.d.g.l.f.j.h.d.s.f.i.i.i.a.u.t.w.d.a.p.q.q.u.r.u.r.e.4.e.0.0.p.q.q.y.r.e.M M e.q.w.4.0.e.q.a.0.0.r.q.4.r.p.0.q.M 6.M q.0.4.4.e.0.e.e.q.0.r.0.0.q.4.r.r.r.M 4.0.r.4.0.0.M 0.0.0.0.0.M r.0.M 0.0.e.0.0.y.q.i.0.y.p.e.e.p.p.4.d.i.e.i.i.d.i.i.s.s.h.s.z.z.s.h.z.h.z.v.j.j.h.k.h.x.k.k.j.x.j.k.k.c.c.A.C.C.k.C.c.C.C.C.C.Z.C.Z.Z.D.", "G.D.D.D.D.D.D.A.C.C.C.C.c.c.c.k.z.k.z.k.k.k.j.z.j.j.z.k.k.h.z.x.z.h.v.z.z.z.j.j.v.z.h.z.j.h.z.h.s.s.h.s.s.s.s.s.i.s.s.i.u.i.i.u.u.u.u.u.y.y.q.e.q.e.q.e.q.q.e.e.q.u.q.q.q.e.e.r.0.q.q.q.e.q.q.q.r.r.r.q.0.0.0.0.q.0.0.M r.0.0.0.0.q.0.0.0.0.0.0.0.q.0.q.0.0.0.0.0.0.q.0.0.0.0.0.0.0.0.0.0.0.0.0.0.q.q.0.q.e.q.y.e.y.u.u.u.u.u.y.p.i.i.u.i.i.i.i.i.z.z.i.s.z.z.h.h.h.h.h.h.h.z.h.h.h.z.x.v.k.k.k.c.c.k.k.c.C.C.C.F.C.C.Z.C.Z.D.F.F.", "G.G.D.D.A.F.D.F.C.C.C.C.C.k.c.c.k.z.k.v.j.k.z.k.j.z.z.h.h.l.x.z.j.h.h.h.h.h.h.j.z.h.h.h.h.h.h.s.h.s.h.s.s.s.s.s.s.i.d.i.i.u.u.u.u.y.e.u.e.w.u.0.q.e.q.q.q.q.q.e.e.e.q.q.q.q.q.q.q.q.q.q.q.e.r.q.q.0.r.q.0.0.q.0.0.0.0.0.M q.0.0.0.q.q.0.0.q.0.0.q.M 0.0.r.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.q.0.q.q.q.0.y.e.u.u.u.u.u.y.u.u.p.i.u.u.i.i.i.h.b.s.s.s.s.s.i.h.h.h.h.z.j.k.h.k.j.h.x.j.v.k.k.k.c.c.k.C.C.C.C.C.C.C.F.C.C.Z.Z.Z.D.", "D.D.D.A.F.D.A.F.Z.C.C.C.c.k.c.c.k.k.j.h.k.h.z.k.z.k.l.k.h.v.h.h.h.h.h.h.h.l.b.s.h.h.h.h.h.h.s.s.s.s.s.s.s.s.i.i.i.i.i.i.u.i.u.u.u.u.u.u.y.q.q.e.q.0.q.q.q.q.e.q.q.q.q.e.e.q.q.q.q.q.q.q.e.q.q.q.0.w.q.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.q.0.0.0.0.q.0.0.M 0.0.0.0.r.r.0.0.0.0.0.0.M 0.0.0.0.0.0.0.e.0.q.q.q.q.u.q.y.u.y.u.u.u.i.u.u.u.i.u.i.i.i.i.i.s.s.h.i.z.h.h.h.h.h.z.z.z.l.h.k.j.j.k.k.c.k.c.c.C.c.c.C.k.C.c.C.C.C.Z.Z.C.Z.A.", "D.D.F.Z.Z.C.Z.Z.C.C.C.c.F.C.k.k.k.h.k.z.k.z.l.k.j.j.h.j.z.z.h.h.h.h.h.s.h.h.s.h.s.h.s.s.h.s.s.h.s.i.s.i.i.d.i.i.u.i.u.i.u.u.u.u.u.u.u.e.y.q.q.0.q.q.q.q.0.e.e.q.q.q.q.q.q.q.q.q.0.q.q.q.q.r.r.q.0.0.0.0.0.0.d 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.M q.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.q.q.q.q.e.y.e.u.w.u.y.u.u.u.i.u.d.u.i.u.u.i.i.i.i.i.s.h.i.s.z.s.h.h.h.z.j.h.x.k.h.x.c.k.v.k.k.c.C.c.c.C.C.C.C.C.C.F.Z.C.Z.D.A.D.", "D.D.D.D.Z.Z.Z.C.C.C.C.C.c.c.k.k.k.k.h.k.k.z.z.h.h.h.j.j.j.z.h.h.h.s.s.h.s.s.s.s.s.h.s.h.z.s.s.s.s.s.i.s.i.i.u.i.u.u.y.u.u.u.u.u.e.u.w.u.q.e.e.q.q.q.0.q.q.q.q.q.q.e.u.q.e.q.q.q.r.r.q.q.q.q.0.q.r.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.M 0.0.q.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.q.w.q.q.e.q.u.u.y.u.u.y.u.u.u.u.i.u.i.i.i.y.i.i.d.i.s.i.s.s.z.f.z.h.j.x.h.j.j.j.v.k.j.k.k.k.c.c.k.c.C.c.C.c.C.C.c.C.C.C.Z.Z.D.D.", "D.D.D.F.Z.Z.C.C.C.C.C.C.c.k.c.k.k.j.j.x.z.l.k.k.j.j.z.h.z.h.h.h.s.s.s.s.s.s.s.s.h.i.s.s.s.s.s.s.i.i.s.u.i.i.d.u.u.u.y.u.y.u.u.u.q.u.u.e.e.q.e.e.q.q.q.q.q.q.e.q.q.q.q.q.e.q.q.q.0.r.0.r.r.0.q.q.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.M 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.q.0.e.q.q.e.y.q.e.y.u.y.u.u.u.u.i.i.u.i.i.i.d.i.i.i.d.s.i.i.s.s.h.h.j.h.z.z.x.j.j.x.x.j.n.c.c.c.c.C.C.c.C.C.C.C.C.C.C.C.C.Z.D.F.F.", "G.D.F.Z.Z.Z.Z.Z.C.C.C.c.c.F.c.c.v.j.x.x.k.z.h.z.h.h.h.h.h.h.z.s.s.s.s.s.i.s.f.s.i.s.i.i.i.i.i.u.d.u.i.i.u.u.u.u.u.u.u.y.e.u.e.y.u.u.e.e.q.q.q.q.q.0.q.q.q.q.q.e.q.e.e.q.q.q.q.q.r.r.r.r.0.r.0.0.0.r.0.0.0.0.0.0.0.M 0.0.M 0.M 0.0.0.0.0.0.0.5.0.0.q.0.q.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.r.r.0.0.q.q.q.q.e.e.e.u.e.u.u.u.y.u.u.u.u.i.u.d.i.d.y.i.u.d.i.s.i.h.l.i.s.z.v.h.h.k.j.c.j.k.v.j.k.c.c.c.k.C.k.c.c.C.C.c.C.C.c.C.C.Z.A.F.D." }; micropolis-activity/images/tiles-80.xpm0000664000076400007640000000526310724145723020401 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "48 48 9 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c #66666666E6E6", "O c red", "+ c yellow", "@ c gray75", "# c gray100", "$ c None", /* pixels */ "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$...$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X.#..$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X## #.$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X##@.X$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X##@.@X$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X##@@@X$$$$$$", "$$$$$$$$$$$$$$$O#$$$$$$$$$$$$$$$$$X##@@oX$$$$$$$", "$$$$$$$$$$$$$$#####@$$$$$$$$$$$$$X##@@ X$$$$$$$$", "$$$$$$$$$$$$$#######@X.$$$$$$$$$X##@@oX$$$$$$$$$", "$$$$$$$$$$$$$$X#######@X..$$$$$X##@@ X$$$$$$$$$$", "$$$$$$$$$$$$$$$@#########@X..$X##@@oX$$$$$$$$$$$", "$$$$$$$$$$$$$$$$@###########XX##@@ X$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$X##########X##@@oX$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$#########X##@@ X$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$X######X##@@oX$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$@####X##@@ X@.$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$@##X##@@oX@@.$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$XX##@@ X@@#X$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$X##@@oX@@##@.$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$X##@@ X@@####.$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$X##@@oX@@#####X$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$#$X##@@ XX@######@.$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$O#X##@@oX$$@#######X$$$$$$$$$$$$", "$$$$$$$$$$$$$$$##X##@@oX$$$$@######@$$$$$$$$$$$$", "$$$$$$$$$$$$$$##X##@@oX$$$$$$X######@$$$$$$$$$$$", "$$$$$$$$$$$$$$#X##@@##$$$$$$$$#######$$$$$$$$$$$", "$$$$$@@@$$$$$$X##@@#OX$$$$$$$$$X#####$$$$$$$$$$$", "$$$$@###@@$$$XX#@@##X$$$$$$$$$$$@#####$$$$$$$$$$", "$$$$$@####@@@@#..$#X$$$$$$$$$$$$$@###O$$$$$$$$$$", "$$$$$$.#####@@..$$$$$$$$$$$$$$$$$$X##$$$$$$$$$$$", "$$$$$$$.###X#@.$$$$$$$$$$$$$$$$$$$$#$$$$$$$$$$$$", "$$$$$$$$.#X##@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$+####@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$.###@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$.###@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$.##@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$@#@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" }; micropolis-activity/images/tiles-112.xpm0000664000076400007640000000520310724145723020447 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "48 48 6 1", " c black", ". c red", "X c #FFFF7F7F0000", "o c yellow", "O c gray100", "+ c None", /* pixels */ "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++XXXX++++++++++++++++++++++++++++++++++++++", "+++++XXXX.X.++++++++++++++++++++++++++++++++++++", "+++++XXX.oo..+++++++++++++++++++++++++++++++++++", "+++++Xo.X.o...++++++++++++++++++++++++++++++++++", "+++++Xo.XX.X.X.+++++++++++++++++++++++++++++++++", "++++++.XXXXXX.X.++++++++++++++++++++++++++++++++", "++++++.XXXXXXX.X.+++++++++++++++++++++++++++++++", "+++++++XXXOXXXX.X.++++++++++++++++++++++++++++++", "+++++++.XXXXXXXX.X..++++++++++++++++++++++++++++", "++++++++.XXXXXXXX.XXX..+++++++++++++++++++++++++", "+++++O+++.XXOXXXXX.XXXXXXX.+++++++++++++++++++++", "++++OXX+++.XXXXXXXXXXX.XXXXX.+++++++++++++++++++", "++++XXXXXOXXXXOXXXXXXXX.XXX.X.++++++++++++++++++", "++++XXXXXXXX.XXOXXXXXXX..X.X.X.+++++++++++++++++", "+++++.X.XXX.X.XXXXXXXXXX....X.X+++++++++++++++++", "++++++.X.X.X.X.XOXXXXXXX.. ....+++++++++++++++++", "++++++++X.X.....XXXXXXXXX..+++++++++++++++++++++", "+++++++++...++..XXOXXXXXXX..++++++++++++++++++++", "+++++++++++++++X.XXXXXXXXX...X++++++++++++++++++", "++++++++++++++XXX.XXOXXXXXX.XXXX++++++++++++++++", "++++++++++++++XXXXXXXXXXXXXX.XXXXX+X.+++++++++++", "++++++++++++++XOXXXXXXOXXXXXXXXXXXXXX.++++++++++", "+++++++++++++OXXXXX.XXXXXXXXXXXXXXXX.X++++++++++", "+++++++++++++XX.X.X..XXXXXXXXX..XXX.X.X+++++++++", "+++++++++++++X.X.X.X..XXXXXXXXX..X.X.X.+++++++++", "++++++++++++++X.X.X....X.XXXXXX...X.X.X+++++++++", "+++++++++++++++.........X.XXXXXX.......+++++++++", "+++++++++++++++++...++...X.XXXXXX++...++++++++++", "++++++++++++++++++++++++..X.XXXXXX++++++++++++++", "+++++++++++++++++++++++++..X.XXXXXXX++++++++++++", "+++++++++++++++++++++++++++..X.X.XXXXXXXXX++++++", "++++++++++++++++++++++++++++....X.XXXXXXXXX+++++", "++++++++++++++++++++++++++++++..........XX.X++++", "+++++++++++++++++++++++++++++++++....+++X.X.++++", "++++++++++++++++++++++++++++++++++++++++.X.X++++", "+++++++++++++++++++++++++++++++++++++++.X.X+++++", "++++++++++++++++++++++++++++++++++++++.X.+++++++", "+++++++++++++++++++++++++++++++++++++.X.++++++++", "+++++++++++++++++++++++++++++++++++++X++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++" }; micropolis-activity/images/grres.xpm0000664000076400007640000000263610724145723020157 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "32 32 11 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #3F3F3F", "c c #3F3F00", "d c #00DF00", "e c #3C00BF", "f c #727272", "g c #FFFFFF", "h c #DFDFDF", "i c #3C00FF", "j c #BFBFBF", /* pixels */ "````````````````````````````````", "``hhhhhhhhhhhhhhhhhhhhhhhhhhhh``", "`h`hhhhhhhhhhhhhhhhhhhhhhhhhh`f`", "`hh`hhhhhhhhhhhhhhhhhhhhhhhh`ff`", "`hhh````````````````````````fff`", "`hhh`eeeeeeeeeeeeeeeeeeeeee`fff`", "`hhh`eieieieieieieieieieiei`fff`", "`hhh`ieieieieieieieieieieie`fff`", "`hhh`iiei`iebiieiiieiiieiii`fff`", "`hhh`iiii`ib``iiiiiiiiiiiii`fff`", "`hhh`eiii`b````bbbbbbiiiiei`fff`", "`hhh`iiiib``````b`````iiiii`fff`", "`hhh`iiib````````b`````iiii`fff`", "`hhh`iib``````````b`````iii`fff`", "`hhh`iiigggggggggjjjjjjiiii`fff`", "`hhh`iiigaaggaaggjajajjiiii`fff`", "`hhh`dddgabggabggjjjjjjdddd`fff`", "`hhh`dddgggggggggjjjjjjdddd`fff`", "`hhh`dddggaagaaggjajajjdddd`fff`", "`hhh`dddggabgabggjjjajjdddd`fff`", "`hhh`dddggabgggggdddddddddd`fff`", "`hhh`dddddccddddddddddddddd`fff`", "`hhh`dddddcccdddddddddddddd`fff`", "`hhh`dddddccccddddddddddddd`fff`", "`hhh`ddddddccccccdddddddddd`fff`", "`hhh`dddddddccccccccddddddd`fff`", "`hhh`dddddddddcccccccccdddd`fff`", "`hhh````````````````````````fff`", "`hh`ffffffffffffffffffffffff`ff`", "`h`ffffffffffffffffffffffffff`f`", "``ffffffffffffffffffffffffffff``", "````````````````````````````````" }; micropolis-activity/images/tiles-43.xpm0000664000076400007640000000263210724145723020375 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "34 34 2 1", " c black", ". c #7E7E7E7E7E7E", /* pixels */ "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "................. ......... ....", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", "..................................", ".................................." }; micropolis-activity/images/obj5-2.xpm0000664000076400007640000000515410724145723020031 0ustar simcitysimcity/* XPM */ static char * obj5_2_xpm[] = { "48 48 6 1", " c None", ". c #FFFF7F7F0000", "X c #FFFFFFFF0000", "o c #FFFF00000000", "O c #FFFFFFFFFFFF", "+ c #000000000000", " ", " ", " ", " ", " ", " ", " ", " .... ", " ....... ", " .X...... ", " .XX..XXo. ", " ......Xo.o ", " .O.....o.o ", " ..........o ", " .O........o ", " ..O........oo ", " .............oo ", " .......O........o. . ", " O....O...........o. .ooo ", " ....O............o.o.o.o.o ", " O...o...O........o.o.o.o.oo ", " .o.o.o..........ooo.o.oooo ", " oooo+.O........ooooo.oooo ", " .O........ooooooooo ", " ..........oooo ooo ", " ...........o.oo ", " ............o.o.oo ", " O. ....O........o.o.o.o ", " ................o.o.o.o. ", " O...OO.........o.o.o.o.oo ", " .O.O...........o.ooo.o.ooo ", " O.............o.ooooo.oooo ", " ...o.o.......o.oooooooooo ", " o.o.ooo.....o.oooooooooo ", " ooo .....o.oooo ooo ", " .....o.ooo ", " ......o.ooo ", " ...........o.oo ", " ...........o.oo ", " .....ooooooooo ", " .... oooo ", " o... ", " oo.. ", " o.. ", " oo. ", " o ", " ", " "}; micropolis-activity/images/tiles-48.xpm0000664000076400007640000000410510724145723020377 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "34 50 7 1", " c black", ". c #5D5D5D5D5D5D", "X c #00000000AFAF", "o c blue", "O c green", "+ c gray75", "@ c gray100", /* pixels */ "++++++++++++++++++++++++++++++++++", "+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.", "+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.", "+OO............................OO.", "+OO. +OO.", "+OO. @ @ @ @ @ @ @ @ @ @ @ +OO.", "+OO. @ @ @ @ .. @ @ @ @ @ @ +OO.", "+OO. @ @ @ @ ..... @ @ @ @ +OO.", "+OO. @ @ @ ..... ... @ @ +OO.", "+OO. @ @ @ ..... oo ...@ @ +OO.", "+OO. @ @ ..... oooo .. @ @ +OO.", "+OO. @ @ ..... oooooo .@ @ +OO.", "+OO. @ ..... oooXXooo @ @ +OO.", "+OO. @ .... oooooooooo @ +OO.", "+OO. @ .. oooooooooooo @ +OO.", "+OO. @ XX oXooXoXXoXooXo +OO.", "+OO. @XXX oooooooooooooooo @ +OO.", "+OO. @ XXXXoooooooooooooooo@ +OO.", "+OO. @XXXXoooooooooooooooo @ +OO.", "+OO. @ XXXXooo oo.. ..oo@ +OO.", "+OO. @XXXXooo oo.. ..oo @ +OO.", "+OO. OXXXXooo oo ooOO +OO.", "+OO. O XXXooo. oo.. ..oo O +OO.", "+OO. O@ XXooo oo.. ..oo O +OO.", "+OO. O @ Xooo ooooooooo O +OO.", "+OO. O@ @ ooo ooooooooo O +OO.", "+OO. O @ @ @ @ @ @ @ @ @ @ O +OO.", "+OO. O@ @ @ OOOOOOO @ @ @ O +OO.", "+OO. O @ @ OO OO @ @ @ O +OO.", "+OO. O@ @ @ OO @ OO @ @ O +OO.", "+OO. O @ @ @ OO@ @ OO@ @ @ O +OO.", "+OO. O@ @ @ OO @ OO @ @ O +OO.", "+OO. O @ @ @ OO@ @OO @ @ @ O +OO.", "+OO. O@ @ @ OOOOOO @ @ @ O +OO.", "+OO. O @ @ @ OO@ OO@ @ @ @ O +OO.", "+OO. O@ @ @ OO OO@ @ @ O +OO.", "+OO. O @ @ @ OO@ OO@ @ @ O +OO.", "+OO. O@ @ @ OOOO@ OOOO@ @ O +OO.", "+OO. O @ @ @ @ @ @ O +OO.", "+OO. O@ @ @ @ @ @ @ @ @ @ O +OO.", "+OO. O @ @ @ @ @ @ @ @ @ @ O +OO.", "+OO. O@ @ @ @ @ @ @ @ @ @ O +OO.", "+OO. O @ @ @ @ @ @ @ @ @ @ O +OO.", "+OO. OOOOOOOOOOOOOOOOOOOOOOO +OO.", "+OO. +OO.", "+OO. +OO.", "+OO.+++++++++++++++++++++++++++OO.", "+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.", "+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.", "+................................." }; micropolis-activity/images/scdullhi.xpm0000664000076400007640000001027710724145723020644 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "67 57 8 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #FFBF7F", "c c #00FF00", "d c #007F00", "e c #585858", "f c #7F7FFF", "g c #DFDFDF", /* pixels */ "```````````````````````````````````````````````````````````````````", "``eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee``", "`e`eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`g`", "`ee`eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`gg`", "`eee```````````````````````````````````````````````````````````ggg`", "`eee`bbbbbbbbbbbbbbbbbbdbfffbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`ggg`", "`eee`bbbbbbbbbbbbdbbbbbbbfffbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`ggg`", "`eee`bbdbbbbbbbbbbbbbbbbbfffbbbbbdbbbbbbbdbbbbbbbbbbdbbbbbbbbb`ggg`", "`eee`bbbbbccccbbbbccbbbbbfffbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`ggg`", "`eee`bbbbbccbdbbbcccbbbbbfffbbbbbbcccbbbbbbbbbbbbbbbbbbbbbbbbb`ggg`", "`eee`bbbbbbbbbbbccbcbbbb`ffffbbbbbcccbbbbbbbbbbbbbbbbdbbbbbbbb`ggg`", "`eee`bbbbbcbbbbbbbbbbbbbbffffbbbbbbbbbbbbbbbbbbbdbbbbbbbbbbbbb`ggg`", "`eee`bbbbbbbbbbbbbbbbbbbbbffff`bbbbbbbbbbbbbbbbbbbbbbbbbdbbbbb`ggg`", "`eee`bbdbbbbbbbbbbbbbbbbbbb`ffffbbbbbbbbbbbbcbbbbbbbbbbbbbbbbb`ggg`", "`eee`bbbbbccbbbbbbbbdbcbbbbbfffffbbbbbbbbccccbbbbbbbbbbbbbbbbb`ggg`", "`eee`bbbbbbccccccbbbbcbbbbbbbffffbbbbbbbcccccbbbbbbbbbbbbbbbfb`ggg`", "`eee`bbbbbbdbcbbbcbbbdbcccbbbbffffbbbbbbbbcccbbbbbbbbbbbbbfffb`ggg`", "`eee`bbbbbbbbbbbccbbbbbccccbbbffffbbbbbbbbbbbbbbbbbbbbbbfffbbb`ggg`", "`eee`bbbbbbbbbbbbbbbbbbbbbcbbbfffffbbbbbbbbbbbbbbffffffffbbbbb`ggg`", "`eee`bbcbbbbbbcbbbbbbbbbbbbfffffffffbbbbbbbfffffffbbbfffbbbbbb`ggg`", "`eee`bbbbbbccccbbbbbbfffbbfffffffffffb`bbbffbbbbbbcbbbbffbbbbb`ggg`", "`eee`bbdcccfffffffffffffffffffffbbbbfffffffbbbbbbbccbbbbfbbbbb`ggg`", "`eee`bbbbbffbbffffffffffffffff`bbbbbbbbbbbbbbbbbbbbcccbbbfbbbb`ggg`", "`eee`bbbfffbbbf`fffffffffbbbbbbbbb``bbbbbbbbbbbbbdbbbcbbbffbbb`ggg`", "`eee`bbffbbbbfffffbbbbbbbbbbbbbb`aa`b`aaaccbbcccbbbbbbbbbbfbbb`ggg`", "`eee`bffbbbbbffffbbbbbbbbbb`bbbb`aa`b`aaabbbbccccbbbbbbbbbfbbb`ggg`", "`eee`ffbbbbbfffffbbbbbbbb````````aa`abbaabbbbbbbbbbbbbbbcbbbbb`ggg`", "`eee`fbbbbbbffffbbbbbbbbb`a`aaaa`aa`a`aa`bbbbbbbbbdbbbbbcbbdbb`ggg`", "`eee`bbbbbbbffffbbbbcbbbb`a`aaa```````a````bbbcbbbbbbbccbbbbbb`ggg`", "`eee`bcbbbbbfffbbccccbbb``a`aaaaa`aaaaab`aabbbbbcbbccbbcbcbbbb`ggg`", "`eee`bccbbbffffbbcbccbbb````````a`a````b`aabbbbbccbbbbbcbcbbbb`ggg`", "`eee`cccccbffffbbcccccbbbb`aa`aa`````a````````bbbcbdbbbcdbcbbb`ggg`", "`eee`bbbccbffffbbbbbcbbbbb`aa`aa`aa`aa`b`baabbbbbbbbbbbbcbbbbb`ggg`", "`eee`bbbbbbfffffbbbbbbbbbb``a`aa`aa`aa`bbbaabbbcbbcbbbbbbccbbb`ggg`", "`eee`bbbbbbbffffbbbbbbbbbbb``````aa`aa`bbbbbbbbcccbbbbbbbccbbb`ggg`", "`eee`bbbbbbbfffffbbbbbbbbbbbbbbbbbbbbbbbbfffbbbbbccbbbbbbcccbb`ggg`", "`eee`bbbbbbbbfffffbbbbbbbbbbbb`b`fffffffffdffbbbbbbbbbbbbbbbbb`ggg`", "`eee`bbbbdbbbbfffffff`bbb`fffffffffffffbbbbbfffbbbbbb`bbbbdbbb`ggg`", "`eee`bbbbbbbbbbffffffffbfffffffffffffffffbbbbbffbbbbfffbdbbbbb`ggg`", "`eee`bbbbbbbbbbbffffffffffffffbdbdbdffffffbbbbbffbffffffbbbbbb`ggg`", "`eee`bbbbbbbbbbbbfffffffff`bbbbbbbbbdbfffffbbbbbffffffffdbbbbb`ggg`", "`eee`bbbbbbbbbbbbbfff`bbbbbbbbbbbbbbbbbfffffbbbbbdbdfffdbbbbbb`ggg`", "`eee`bbbbcbbbbbbbbbbffff`bbbbbbbbbccbbbbfffffbbbbbbbdbdbbdbbbb`ggg`", "`eee`bbbbcbbbbbbbbbbbbbfffbbbbbbcbbbbbbbbffffbbbbbbbbbbbbbbbbb`ggg`", "`eee`bbcbbbbbbbbbbbbbbbbbffbbbbbcdbbccbbbbfffbbbbbbbbbbbbbbbcb`ggg`", "`eee`bbcccdbbbbbbcbbbbbbbbfbbbbbbbbbbbbbbbbfffbdbbbbcbbcccbbcb`ggg`", "`eee`bbbbbbcccdbbcbbbbbbbbfbbbbbbbbbbbdbbbdffffbbbbbbbbbbbbbbb`ggg`", "`eee`bbbbbbbbcbcbbbbbdbbbbffbbbccbbbbcbbbbbfffffbbbbbbbcdbbbbb`ggg`", "`eee`bbbbbbbbbbbccccbbbbbbbfbbbbbbcbcbbcbbbbfffffbbccbbbbbbbbb`ggg`", "`eee`bbbbdbcbbbbbbbbbbbbbbbfbbbbdbcbbdbbcbbbbffffdbbbcbbdbbbbb`ggg`", "`eee`bbbbbbbbbbbbbbcbbbbbbffbbbbbbbbbbbbbbbbbbfffffbbbbbbbbbbb`ggg`", "`eee`bbbbbbbbbbbbbbbbbbbbbfdbbbbbbbbbbbbbbbbbdfffffdbbbbbbbbbb`ggg`", "`eee```````````````````````````````````````````````````````````ggg`", "`ee`ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg`gg`", "`e`ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg`g`", "``ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg``", "```````````````````````````````````````````````````````````````````" }; micropolis-activity/images/obj3-1.xpm0000664000076400007640000000525310724145723020026 0ustar simcitysimcity/* XPM */ static char * obj3_1_xpm[] = { "48 48 9 1", " c None", ". c #3F3F3F3F3F3F", "X c #7F7F7F7F7F7F", "o c #FFFFFFFFFFFF", "O c #000000000000", "+ c #BFBFBFBFBFBF", "@ c #FFFF00000000", "# c #66666666E6E6", "$ c #FFFFFFFF0000", " ", " ", " ", " ", " ... ", " X.o.. ", " XooOo. ", " Xoo+.X ", " Xoo+.+X ", " Xoo+++X ", " @o Xoo++#X ", " ooooo+ Xoo++OX ", " ooooooo+X. Xoo++#X ", " Xooooooo+X.. Xoo++OX ", " +ooooooooo+X.. Xoo++#X ", " +oooooooooooXXoo++OX ", " XooooooooooXoo++#X ", " oooooooooXoo++OX ", " XooooooXoo++#X ", " +ooooXoo++OX+. ", " +ooXoo++#X++. ", " XXoo++OX++oX ", " Xoo++#X++oo+. ", " Xoo++OX++oooo. ", " Xoo++#X++oooooX ", " o Xoo++OXX+oooooo+. ", " @oXoo++#X +oooooooX ", " ooXoo++#X +oooooo+ ", " ooXoo++#X Xoooooo+ ", " oXoo++oo ooooooo ", " +++ Xoo++o@X Xooooo ", " +ooo++ XXo++ooX +ooooo ", " +oooo++++o.. oX +ooo@ ", " .ooooo++.. Xoo ", " .oooXo+. o ", " .oXoo+ ", " $oooo+ ", " .ooo+ ", " .ooo+ ", " .oo+ ", " +o+ ", " + ", " ", " ", " ", " ", " ", " "}; micropolis-activity/images/tiles-153.xpm0000664000076400007640000000062410724145723020456 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "126 2 2 1", " c #3F3F3F3F3F3F", ". c gray75", /* pixels */ " .", " ............................................................................................................................." }; micropolis-activity/images/tiles-123.xpm0000664000076400007640000000252110724145723020451 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "32 32 7 1", " c black", ". c #3F3F3F3F3F3F", "X c gray50", "o c red", "O c gray75", "+ c gray100", "@ c None", /* pixels */ "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@OOOOOOOOOOOOOOOOOOO@@@@@", "@@@@@@ +++++++++++++++++++ @@@@", "@@@@@O X+o+++++++++++++++o+ .@@@", "@@@@OOX +++++++++++++++++++..@@@", "@@@@OO +++++++++++++++++++ .@@@", "@@@@OO OO..OO..OO..OO..O .@@@", "@@@@OOO XX..XX..XX..XX..XXXX.@@@", "@@@@OOXXXXXXXXXXXXXXXXXXXXX.@@@@", "@@@@@@XX....XXXXXXXX....XX.@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" }; micropolis-activity/images/scenario5hilite.xpm0000664000076400007640000024313710724145723022127 0ustar simcitysimcity/* XPM */ static char *scenario_hilite[] = { /* columns rows colors chars-per-pixel */ "209 188 256 2", " c #302E1B", ". c #2A3728", "X c #37362A", "o c #3B3C3B", "O c #373836", "+ c #2F2D2D", "@ c #171E18", "# c #1C3D69", "$ c #193D74", "% c #31324C", "& c #233D6B", "* c #263D67", "= c #2B376E", "- c #212458", "; c #0D550B", ": c #007C00", "> c #047907", ", c #0C6F0E", "< c #2F5217", "1 c #36462A", "2 c #394538", "3 c #2E522D", "4 c #307417", "5 c #2F672E", "6 c #1A5F25", "7 c #1C426B", "8 c #1A4267", "9 c #1C4571", "0 c #1B5177", "q c #3B4443", "w c #314C4E", "e c #22426B", "r c #254268", "t c #244573", "y c #3C5C75", "u c #3A5A79", "i c #2D5678", "p c #35637C", "a c #215851", "s c #48362A", "d c #463A37", "f c #553A36", "g c #502F29", "h c #6A3830", "j c #59261A", "k c #463C43", "l c #4F3C4C", "z c #533B60", "x c #48492C", "c c #474437", "v c #57463A", "b c #51522F", "n c #4E6F2B", "m c #674637", "M c #764939", "N c #6D5334", "B c #706D33", "V c #4C5A19", "C c #464746", "Z c #465747", "A c #564745", "S c #575755", "D c #52514F", "F c #505371", "G c #4C6B4B", "H c #4A6F71", "J c #675648", "K c #665955", "L c #71524A", "P c #716653", "I c #6E6D6C", "U c #6F5166", "Y c #3036A2", "T c #3A5886", "R c #2E5887", "E c #376487", "W c #386993", "Q c #387398", "! c #3A78A5", "~ c #3745A9", "^ c #0F7EC3", "/ c #3B42D7", "( c #425684", ") c #45558A", "_ c #425886", "` c #42588A", "' c #4A568A", "] c #445991", "[ c #514F8D", "{ c #5454AE", "} c #46789A", "| c #576D9B", " . c #466B8C", ".. c #467AA6", "X. c #5174A7", "o. c #6459B4", "O. c #716990", "+. c #7063A4", "@. c #5E6CD8", "#. c #5A61DB", "$. c #5C6ACA", "%. c #5D63ED", "&. c #5C63F2", "*. c #7368D4", "=. c #6365E6", "-. c #6164E9", ";. c #6967E8", ":. c #6466F3", ">. c #7668E2", ",. c #5958D0", "<. c #453A9C", "1. c #008200", "2. c #078207", "3. c #13850F", "4. c #359D24", "5. c #00DC00", "6. c #0BDB05", "7. c #15D90A", "8. c #00E300", "9. c #07E801", "0. c #0DE804", "q. c #27CD0B", "w. c #24D304", "e. c #25DA04", "r. c #27D10A", "t. c #30CC16", "y. c #2AD517", "u. c #4F8C2A", "i. c #55B529", "p. c #6C9033", "a. c #6EAF33", "s. c #408C1D", "d. c #519050", "f. c #6F8D71", "g. c #629B5E", "h. c #4DCB23", "j. c #49C722", "k. c #36995B", "l. c #3A86B2", "z. c #0E80C4", "x. c #1483C4", "c. c #1985C5", "v. c #1A87C7", "b. c #238BC9", "n. c #2A8ECA", "m. c #228BC6", "M. c #2C91CB", "N. c #2690C8", "B. c #3393CD", "V. c #3997CC", "C. c #3A99D0", "Z. c #308ECC", "A. c #39A2D1", "S. c #52839B", "D. c #4884AB", "F. c #498AB4", "G. c #5383A7", "H. c #5893B8", "J. c #528CB6", "K. c #738B90", "L. c #6397BA", "P. c #6C92A8", "I. c #76A7AC", "U. c #4997C6", "Y. c #449DD2", "T. c #489ED3", "R. c #569BC6", "E. c #5596CA", "W. c #4BA1D4", "Q. c #4BA4D8", "!. c #59A2CC", "~. c #53A5D6", "^. c #55A6D8", "/. c #56A8D6", "(. c #55A8D8", "). c #59A5D4", "_. c #5BAAD5", "`. c #5BAAD9", "'. c #5BA5D9", "]. c #58ADD7", "[. c #649AC2", "{. c #67A5CC", "}. c #62ADDB", "|. c #67AAD6", " X c #66B0DB", ".X c #6AB2DC", "XX c #69B4D9", "oX c #72B5DD", "OX c #77B7DC", "+X c #74ABD0", "@X c #6BB5E0", "#X c #73B6E0", "$X c #75B9E1", "%X c #7BBBE2", "&X c #79B7E1", "*X c #67ACE0", "=X c #5CACE0", "-X c #7AC1E4", ";X c #78C0DD", ":X c #97302E", ">X c #895137", ",X c #8D6639", "Xm 7XXm I I c K i.8.5.5.5.a.j.9.8.8.7.P d.9.6.wXp.4 s.2.: : : : : : : gXwX0X0X0X0X0XwXxX0XkX7.7.lXwXeX2Xk 5X[ % 2 f.I 3 c 5X[ % 6XlX6.5.5.5.5.5.8.5.a.tX0X0X0X0Xt.jXeXwX0X0X0X0X0X0X0XeXqXwX0X0X0XeXgX6.0.a.vXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.w.H ` ' E l.l.l.Y.Y.Y.Y.Y.W.W.W.Y.Y.W.W.~.", "`.`.`.`.'.(.(.(.~.~.~.W.~.T.~.W.` ` F e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.2 MXI A 4XJ bX3Xu.0.6.j.4XU I q : : : : : : : : : 3.2XeX0X0X0X0X0X0XwXwXxXbXeXvXtX2XZ I 2Xd q d.d.O D I 2Xd P xX6.5.5.5.5.5.5.5.j.qXeX0X0X0XbXwXeX0X0X0X0X0X0X0XeXkXlXwXqX0X0XeXy.j.bX0XwXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.H ) _ Q x.l.A.W.Y.Y.Y.W.Y.A.W.W.W.W.W.T.", "`.`.`.`.'.(.^.(.~.~.~.~.Q.~.W.W.` ` y e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.c S C d 1X1XbX1XJ lX0XeX9XS S v v K D d s 1X6X>Xf qXi.8.5.6.j.tXa.8.5.7.P 5XxXqXtXs.: 1.: : 1.: : : : : 2.gX8X9XvXvXvX0XvXvXwX8X0X1XL 1XL c f f J q O 2 2 b q k q 2XjX8.5.5.6.6.7.7.6.0.gXeX0X0XqXeXeXkXlX0X0X0X0XwXeXgX8.a.eXeXeXtXkX8.i.tXbXbXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.p ` ` E l.l.Y.Y.Y.Y.Y.Y.Q.A.W.T.Q.C.Q.W.", "}.`.`.`.(.(.^.^.~.~.~.~.~.W.~.W.) ) u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.Z + XJ x 2XA 4Xd O @ 2 r I H l N L A f 4Xj.8.7.2Xh 1Xp.9.5.7.K n 2XgXgX, : : > > > : : : 2.> 2.< L 3XJ M v m J v N J f 3 , , , 6 5 b 1Xb 6 v 1 s d C o P 8.5.8.a.vXxXlXqXxXxX0X0X0X0XwXgXa.8.jXeX0X0X0XeXgX6.8.a.tXkXjXa.7.5.i.eXnXnXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.H ` ` W l.l.Y.Y.Y.Y.W.Y.Y.W.W.T.Y.T.T.T.", "`.}.`.`.'.(.^.^.~.~.~.~.Q.~.~.T.' ` u e.e.e.e.e.7.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.2 MXS J XI I q C { mXMX- S I q d u.9.9.t.1Xp.B L i.5.e.K 5 MXUXg.3.2.: : > 1.: : 1.2.> : 6 ZXNX d I 2Xd 6 4.H O 5 3.> 1.> 2.3.b b g.1Xc g 6XiX% P y.0.7.kXeXwXeXwX0X0X0X0X0X0X0Xt.9.8.t.9XwXwXeXgX6.5.8.a.tXy.9.5.8.8.i.eXeXqXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.p _ _ E l.l.A.W.Y.A.Y.Y.Y.Y.T.Y.Y.T.T.T.", "`.`.`.`.`.`.(.^.~.~.^.~.~.Q.~.T.` ` u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.Z I D O < v hXC 2 a g.n : : : : > 1.: : 2.3 MXS + d Z v + 6 , P f 6 , > : > : 1.6 2 g.f.3 j :XuX% P cXxXxXvXvXeXeXvXeXvXvXeXeXeXeXeXlX6.8.jXeXwXgX6.5.5.8.t.jX7.6.6.0.0.a.tXeXeXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.H ` ` R l.l.U.Y.Y.Y.Y.Y.Y.Y.Y.T.T.Y.T.T.", "`.`.`.`.^.'.(.^.~.~.Q.~.~.W.~.T.` ` y e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.P X g s 3 X g C X s L d j s c 2 2 2 v s s X A 2XP P 2XL L K b P P P S 5 lXhXJ 1.: 1.> : : : n V 3 < 4 5 n G 1 d O O x x O X f 5 2.> : : : 1.< d 2 2 2 x s C % 2XvXeXlXn u.n s.n s.n n s.n s.s.B vXt.a.eXwX0X7.5.5.i.qX8.t.qXxXlXbXxXqXeXkXlXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.H ) ` E l.c.A.Y.Y.Y.Y.Y.Y.Y.Y.Y.T.T.T.T.", "`.`.`.^.^.^.^.^.~.~.~.~.~.~.~.W.` ` u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.b c v X s f d 2X4Xf h h k . J 1 c d K S k . J x A J f g w O v f c O c O c . < . 3 < 3 3 6 5 G v X C U b MXUXzXn O A A c 2 d v f n 2.2.: : : 1.4 d A A c 1 6 o 2 L >X1X< : : : : : : : 1.: : : : 4 vXbXwXqXwXwXt.0.8.jXtXt.jXeXeXtXlX4XtXkX7.a.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.H ) ` Q l.l.l.W.Y.Y.Y.Y.C.Y.T.T.T.T.T.W.", ").(.(.).'.^.'.(.^.^.^.~.~.~.~.T.` ` u w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.x I K + f LX1X 4X 2.> : 6 f 1XI C 2 g.1Xc K N jX1 1.: : : : : : : : : : : 4 wXwX0X0X0X0X0XlXxXwXeXwXqXeXlXjX6.t.jXa.lXeXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.H ) T W ! V.U.Y.W.Y.W.Y.Y.Y.Y.T.T.T.Q.W.", "(.'.(.^.~.~./.~.^.'.~.~.Q.Q.W.W.) _ u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.x K S d M LX1Xm 9X,XmX1X% Z d.G % M LXL O q d.G C L V m k b jX,Xd % [ Y o 2 G 3 O = <.[ O D NXZ J NXD 6 hXzXP V f 3Xx O d L N c 5 > , > > > : 5 g 2Xv O 2 g.f.3 L b N < 2.: : > 1.: > : : : : 2.s.vXbXwXwX0X0XwXeXeXeXlXlXeXkX6.8.5.8.j.eXeX0Xe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.H ) ` E l.l.V.Y.W.C.C.Y.Q.T.Y.T.T.W.T.W.", "(.(.'./.(.~.'.(.'.(.^.~.~.Q.~.T.` ) u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.d + + @ @ g L U c d % b 1 . 2 b c o k b 1 . O b K L L b d d 2 b o - % b 2 . . b 2 % % x 2 O O d < ; , , > : : 3 d C C x x o O A 5 : : 1.1.: : 4 d k C c x 2 2 3 N L L b 5 5 w 5 5 3 6 n n 3 3 3 b 1X1XL 1XqXwX0XkXgXjX0.a.eXy.8.5.5.5.t.gXjXqXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.w.H T ` W l.l.U.Y.Y.Y.W.T.T.Y.T.W.W.W.W.W.", "(.).~./.'.(.(.).^.(.^.~.Q.W.~.T.' ) u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.x P K.+ U LX6X; Z X S 2 x d A d c 1 Z 1 3 :XXb . D 2 c c v x v Z O.f.D d v v c O . + c g k k f 6 1.1.1.s.u.4 V A A J P 2 v 1 % 2 3 ; < 6 6 G 2 s C g s b c A c c .3X[ C k g f C C U D f l j g Z 6 , X L wX0Xr.8.8.9.p.tXt.6.6.5.5.5.8.8.t.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.H ) T R ! V.U.W.Y.T.W.T.T.T.W.W.W.W.W.W.", "(.^.~.'.~.(.(.(.~.~.~.~.Q.~.T.T.` ` u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.x J 5XO m pX1X, 2 G K.5 O U LX6XO G f.G + yXmX1Xk Z f.G O b h.4Xk { kXzXY V h.gXd D S I % j 5X{ X P p.s.: p.h.u.4 4 , x A 3 a.3.O w S.y m NXZXs % o.6Xd d i.jXv ( O.mX[ % { 6Xg q NXZXd s { 6Xf w : g.>Xg m 0XvX9.j.lXxXqX0X9XlXlX7.5.5.5.5.5.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.H ) ` W l.l.V.T.T.Y.T.T.W.W.W.W.W.W.Q.T.", "'.(.~./.'.(.(.'.'.~.~.~.Q.Q.~.T.` ` u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.c ; ; ; ; ; ; : 2 G g.G O A pX1X2 Z g.G k yX > s.u.B C q X c x x 3 w k d s O d d + + O d g d d q 3 w 2 o + + o D o c 2 o % - c b w 2 2 2 L vXeXbXvXvX0XxX0XwXlXjX7.5.5.5.8.i.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.7.w.H ) ` p l.l.Y.Y.W.T.W.W.W.W.W.W.~.Q.Q.W.", "^.(.~.(.'.(.^.^.~.'.^.'.Q.T.~.T.` ` u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.v 5 4 5 5 m l d x H I O.A d A d 6 6 5 5 6 o v A c d A c c O D 2 x x A v b v f f c d A k c d C c f 6 : 2.: s.p.4 : p.h.P D k k % o c O + d d k j g k g v O o o j g o 1 + d f :X : : 2.N jXm C [ mXhX= n a.,X: 1.> 1.: n h.,Xk b h.2Xc n f.G 2 A pX5Xd L B B d b h.4Xd % MXuXd 6 : > : u.h.u.: 4 u.b C z o.{ O C z L g d o.1Xd O N f % o.6Xs 3 4.H 3 :X7XzXM 2 I I b s I NXD 5 ; :XiX% g u.a.h F | mXO.qXwXj.8.5.5.5.5.5.i.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.H T ` E l.l.T.W.T.W.W.W.W.^.W.^.^.^.W.^.", ").(././.).(.(.^.^.'.^.~.~.W.~.T.) ) u w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.b > : : > N n h D Y ~ Y = b jX,X> 1.: : : V p.m k b jX,XC w g.G 2 A pX6Xc L B N l x a.2Xc * { Y s 6 1.1.: s.u.3.1.1.1.6 A % / Y % d v F s O ~ [ q d L N v % ~ [ k 3 3.G c :XyXyX:Xw C J g s <.<.- 5 ; :XNXC j p.jXM r Y { Y wXwX5XlX7.5.5.5.9.i.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.H T ) E l.l.V.W.W.W.W.W.W.W.~.W.^.^.W.^.", "'.'./.(.(.).'./.^.~.~.!.Q.~.T.~.` T u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.b > : : 2.N L M C 2 w w c s f s < 5 < V < s >XM C d g d c X X c d g s o J >X>XC s g s d + + % g x < 3 < 5 < < 5 < < x A O O d d O g s d v - % x c q d x c % - c x X O c b b b b x o O O o % - c b 3 g l d C d A x c a a w 2XwXeXlX7.5.5.5.5.t.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.H ` _ E l.l.A.W.W.W.W.T.^.~.^.^.^.W.~.~.", "(.(.(.).(.(.(.~.~.~.Q.~.Q.T.T.T.) ) u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.b > : > < f g X x f + f s f + + + A . v X o d f g c d f f d g d o 2 . x 2 O k g % . < g O d k j g s 3 d d c A A o O < X O O < x d P H uXF x v 3 O N v v c c c 3 1 c o c c x A f s d O O 2 b 5 A f c C . + o c d v s K 8XwXy.5.5.5.5.5.8.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.H ` ` E l.l.A.W.W.Q.Q.~.T.~.^.^.^.^.^.W.", "`.(.`.`.(.`.(./.~.~.~.Q.T.~.T.W.` ` u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.c : > : b jXm V a.1Xc K S @ s N s Z S S o G f.G 2 v p.,XC V h.4Xd j 5X<.o 5 g.h l - [ :Xd 5 g.:X l o.>Xg c UXMX. C K.NXC C UXNX. 2 UXNX. ( hXmX) 3 d.3.. J p.B v 3 H g.2 o m v c p.gXM d Z I C 3 4 N gXf C C I C o 3XdXM S wXeXt.8.5.5.5.5.5.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.H ` _ E l.l.U.R.W.Q.~.Q.~.~.Q.^.~.~.~.~.", "(.`.`.'.'.).~.~.~.~.Q.R.Q.T.W.T.` ` u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.N < 5 B >XV M x u.h q G O g J N X Z G 2 o w g.G c L n m A b p.2XX j 4XaXO G UXG w j :XC o G UXd.s % { ' X C MXd.3 k D S C C MXd.6 D MXd.< [ Y ~ Y < n p.1 m n jXf 2 n L 3 d J N s D V B g d w G O Z 4 N n h c Z G . o 6XpXm S 0XvX4Xy.5.5.5.8.5.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.H ` ` W l.U.U.W.W.Q.Q.~.^.~.~.~.^.~.Q.~.", "`.`.'.(.(.(.~.~.~.W.~.W.T.T.T.T.] ) y e.e.e.7.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.N l g M ,Xb n n n 4 ; ; ; ; v + m O 1 . Z 2 3 O D P 1XL v P f c o s f l x 1 w 3 c s + O b 1 2 3 d k % % d 2 2 . x c + k c x . . 2 c + . X Z a w w s . 1 O J v v v 1 O g 1 c q o c N L L J O . 1 1 5 n L P J C . . 2 D d c c J wXeXeXlX7.5.i.lXlXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.H T ` W l.l.T.T.W.~.~.Q.^.^.^.^.^.~.^.^.", "`.(.(.(.(.(.~.~.Q.~.T.T.Q.Q.Q.T.] _ u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.V jXN x u.2.1.1.1.1.1.1.1.1.b s >Xl 5 5 v f d 3 6 , 6 6 b o C o d % k j x d v f x c A k c d C + c 2 q 3 O d C % c 1 5 2 1 L O.{ o.{ o.{ { { { o.{ o.o.{ o.{ { O.2Xd C D c x d q c 2 l f o O c A d b 3 % g f P P v l f d A A 6XlXqXtXlX6.j.wXwXwXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.H ` ` W ! U.U.~.~.Q.~.~.~.~.Q.^.~.~.~.~.", "(.(.(.'.'.~.~.~.W.W.Q.T.Q.T.T.T.] ) y e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.N n m m 3 < 5 < < 5 < < 5 < J v p.B , 1.b gXN b G p.> : 3 D pXI = +.:Xo A pX4Xk l pX5Xo m pX= O - { H x l o.[ O C UXMX< +.sXO.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.sXO.2 2XhXO g 1Xo.% A B p.h s m h 5 ; { 6Xh y.u.p.fXh u.a.>XlX7.i.gXr.j.eXeXeXwXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.H ` ) W l.l.T.W.W./.~.~.~.~.~.^.~.~.~.^.", ").`.`.).^.~.~.Q.W.~.W.T.T.T.~.T.) ` u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.4X3X4Xf + X A A . C A X g h >XV m , : h V N uX:.sXP > 2 = o.Y s % { F d A pX5Xd l pX4XO S 3X2Xd - c k.s l / ~ % C MXd.< { K.9.0.0.0.0.0.0.0.0.0.0.0.0.9.9.9.K.o.c h 1Xv g :XLX= L b B h g J N v a , <.{ J cX2Xn B j u.n >Xt.5.5.5.8.t.lXkXkXkXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.H ` ` E l.F.W.~.W.~.~.~.~.(.~.~.~.~.~.~.", "`.'.(.(.~.~.~.~.~.W.W.W.Q.T.~.T.) ) u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.*.:.+.D S Z S ZXI Z ZXI = +.:X< n 2XI G 2X5X3XiX:.:.>.n Z % - % 2 O - % x c k d x x k d x C Z d c d X < X o % % c c O . 2 o.K.9.i.s.s.s.s.s.s.s.u.4.s.s.u.u.9.K.o.c x v C C g l x N L L v 2 2 o o b 3 - - d 5X9X6X9X1X1X4X2X6.5.5.5.5.5.8.8.9.8.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.| ` _ W l.V.W.!.Q.~.Q.~.~.~./.~./.~.~.~.", "`.(.(.(.~.~.Q.~.W.W.W.R.T.T.W.W.) ) u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.;.:.+.b G . P NX. S NX1 - { D n G iX;.;.;.=.:.-.-.:.*.K o b O P A w I O.D 1 2 3 x d v O x M :X>Xb C C + O s v c c c Z Z C { K.9.s., > > > > : > > : : : : s.0.K.o.C l + o c % g s x 2 q O o C s s b 5 3 D C A L >X>XvXeXlXy.8.8.5.5.5.5.8.8.9.0.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.| ' _ W l.F.U.W.Q.~.~.~.(./.^.(.~././.^.", "`.`.(.'./.~.~.Q.~.T.T.R.Q.Q.W.T.` ` u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.'.;.*.A D D U K D U U m @ D U sX;.%.=.=.%.=.=.=.=.-.;.6Xb i.; X~ ~ ~ = 6 K b o 6 p.s.q yXyXyXm 6 t.Q g h pX5Xc C S P d o.K.0.s.: : 1.; < < , 1.1.: : : 4.9.f.o.1 q.k.k s ~ +.k 2 2.G m s <.{ C 5 ; MXMX1 % <.{ L 4XqXlX0.i.kX7.8.a.tXwXeXlXy.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.| ` _ W D.l.!./.W.(.W./.(.'.(.'.(.(.(.'.", "`.'.).(./.~.^.~.W.T.T.W.Q.T.~.T.` ` F e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.;.;.-.;.-.=.=.=.=.=.-.:.%.=.=.=.=.=.=.=.=.=.=.=.=.=.*.X @ A m w 8 a q 1 j j c X X s O b c x c 1 < o d d l d x O . 2 s { K.0.s.: : 1.< B ,X< 1.: : > : s.0.K.o.2 6 q d d - % % C + O o O % - o b 3 q 2 1 b - % A t.jXtXt.9.t.lXkXqXwX0X0XeXlXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.| ` ) W D.F.W.~.~.(.(.(.'.).(.(.(.(.(.^.", "`.(.(./.~.~.~.~.~.~.~.W.Q.Q.T.~.` ` u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.;.-.=.;.-.=.=.=.=.=.=.%.=.=.=.=.=.=.=.=.=.=.=.=.=.:.*.U o.F h 2Xf f + O O N P d d f d d X N >Xm O d j s d 2 S c B O.{ | ,.MX0.s.> : : n b B < 1.4 u.s.s.u.8.K.,.d k g s c 2 D D C C g s o c s X b 5 O D Z x d O A B N 1XN d.i.wXwX0X0XwXqXeXeXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.| ` _ E l.U.W.!.~.~.].(.(.(.(.).`.`.(.~.", "`.).^.~.(.~.~.~.Q.~.Q.R.Q.T.~.T.] ` u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.-.;.5XF / Y 1XtXP I q O K NXC Z f 5XI . S I J L * +.:Xs C NXNXO O.sXMXP.MXa.8.u.> : : 5 L L 5 : u.e.0.0.0.fXiXO.q { 1Xj x MXZXs g { 1Xj s { 6Xg q > hXZXZ 2 S 3Xb O S I x L 7.a.eX0X0X0X4XlXlXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.| ` _ W l.U.~.~.~.~.^.(.`.(.(.(.`.`.'.(.", "`.(.'.'.~.~.~.~.~.Q.~.~.~.~.~.~.] ` u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.-.=.qX8XD U L 4X8XM MXD + L LX2Xc l >X1Xo c zXI 2 % { [ s A NXI . { K.6.0.0.0.e.u.: : : 5 J L 5 1.s.9.i.hXK.iXaXP q ~ +.s f NXK. f ~ [ l g <.{ C 5 ; MXMX. % D P c % D K c K y.a.tX0X0XeXj.9.9.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.| ) _ W D.U.W.~.~.^.(.(.(.`.`.`.`.`.`.`.", "`.(.^.(.^.~.~.^.Q.^.~.~.Q.~.~.~.) ` y e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.-.*.pXjX9.t.nXcX8X1X>X>XA o f k c x d s q o l o x % - % x c C 2 o o.P.9.4.s.s.s.4 : : : 6 2X2X5 1.s.9.hX*.{ +.P J l - % d d d O 1 d - % d d - % o Z 6 % q 2 b O + O c O . + B 2X2X4X0XwXxX7.8.5.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.| ) ` W D.U.R.~.~./.(.`.(.(.`.`.`.`.`.(.", "`.(.(.^.^.^.~.~.~.Q.~.~.T.~.T.~.] ) y e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.-.%.-.-.-.;.iXxXgXlXrXrXrXdXrXeX3XP 2X2XN P 2XP 2XA C O x c c N N O C d 3 | K.9.s.s.s.4.s.s.s.s.G 1XL G u.4.9.K.o.1 X C A g s j g k + j s o s s d c C s f D 3 O d s x 3 q 1 N d A c x % O f 0X0Xt.5.8.t.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.| ) T W D.U.R.~.~.(.)./.`.`.`.`.`.`.`.'.", "`.`.`.(.^.~.~.~.~.W.~.~.~.Q.~.~.) ` u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.-.=.pX5X5XMXrXiX5XrXeXiX%.=.=.=.=.=.sXwXvX6X[ [ [ 6XvXP I l + S MXv M C I D ; E K.9.9.0.0.9.0.9.0.e.P ,X1XP e.9.9.K.o.1 MXZXd s { 1Xj s { 1Xf 3 4.G X g { 1Xj 2 6 { 6Xg 5 k.>Xs A B a.>Xq ) 6Xh qXeXt.5.8.j.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.| ) _ Q D.U.W.~.).(.(.(.(.`.`.`.`.`.`.`.", "`.(.`.`./.'./.~.~.~.~.~.Q.~.~.W.) ) u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.-.*.wXwXi.t.tXaX&.=.=.%.=.%.=.%.%.-.;.5XvX<.z O.- 6XtXL zXS O F I o C I J ; p sXK.K.K.K.K.K.K.K.K.I S K I K.K.MXsX+.C NXI v ~ +.v s { | C 5 3.P m s ~ +.C x , <.o.w 3 zXMX3 c n jXh % Y { S 9XxX7.5.5.5.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.| ) ` .D.U.!.).~.^.(.`.`.`.`.`.`.`.`.`.", "`.`.`.(.'.~.'.~.~.~.W.~.Q.~.~.Q.) ` u w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.%.sXa.9.7.xXpX&.=.=.-.;.pX5XpXiX&.%.*.8XF K 3X% uXcX1X1X>Xv o O d v s s X 3 2XO.o.{ o.o.{ o.{ o.,.F D F ' $.] W p B q C 2 X O - - o % % - % x . . s O % - O c 5 - - O 1 3 Z < J J A L A l z M eXt.6.5.5.5.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.| ] _ W D.U.R.~.(.(.(._.'.`._.'._.}.`.`.", "`.`.`.'.~.'.~.~.~.~.~.~.Q.~.~.~.] ) u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.%.sXa.9.8.t.wXsX&.=.-.*.cXxXxXwXiX:.;.aX{ I K % aXcXcX0XvX2XO q q L f s >X,Xc s c c C O 1 b 2 . 3 x v O + c 5 5 4.a C 2 D C o 2 A D D c 3 1 b H I F X 2 o d 2 3 C g g c O + o x d k o P eXtXeXlX7.5.5.5.8.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.| ' _ Q D.U.W.).`.(.`.`.`._.`._.`._.`.`.", "`.`.`.`.).(././.).~.(.~.~.~.~.~.] ) u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.-.>.5XgXgXkXwX0XiX%.-.>.gX8.y.lXpX&.%.%./ ~ / ~ o.bXuX*.vXP C I C O S K.m N g pX5Xd 2 MXI + Z I 5 2 3 MXI @ F MXmX[ 2 MXUXf s MXUXC 3 H d.3 F O.mXF g S 2Xx 3 ; { 1Xj q q K C d s.a.m K 9XlXt.8.5.5.8.y.kXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.r.| ) _ .D.U.R.).).`.`.`.`._.`.`.`._.`.`.", "`.`.`.'.`.`.(.(.~.~.~.~.~.~.~.Q.] ) u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.-.sXrXrXrXqXiX%.-.sXa.8.5.r.aX&.%.=.;.-.;.:.%.&.%.pXcXU Z I J O S I o s m pX5Xf 3 NXK.1 S MXn 2 6 NXMXO [ { | Y C NXK. f NXhX+ 3 G K < [ { | <.x F P f < ; ~ o.C q S H . k p.jXM K t.9.8.5.5.5.8.a.tXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.| ) _ Q D.U.!.(.(.`.`.`.`.`.`.`.`._.}.`.", "`.}._.`.(.`.).(.'.~.^.~.~.~.~.~.] ` u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.-.=.;.*.=.=.%.=.*.a.9.9.7.0XiX&.=.=.=.=.=.=.:.pXkXy.2Xo + X l C d d f g f f o d x V O o c 1 X d f x x S 8 # w c C q O d C q 1 c 1 j X A 8 9 r s O + X x < - - o c 1 . 1 c f A O K lXkXfX7.5.5.t.bXvXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.| ) _ W D.U.R.(.`.(.`.`.`.`.`.`.`.`.}.}.", "`.}.'.`.`.`.`.`.(.^.^.'.(.^.^.~.] ) u w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.%.=.=.=.=.=.=.=.=.=.=.=.=.=.-.-.-.-.=.=.=.%.>.5XjXgXkXcXaX%.=.=.=.=.=.=.;.4XB i.P w F O.Z 5 5 Z P f d X o O x s O O < 1 d o < s d A 2 A b x 3 o O o d k c x o C Z x c x d 2 c c o 2 V Xv x 3 C 1 b d f k J 1X6X6Xy.8.8.a.vXvXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.| ) _ Q D.R.W.).(.(.`.`.`.'.`.}.`.}.`.}.", "_.}._._.`.`.`.`.`.`.(.'.(.(.^.~.] ` u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.-.=.=.=.=.=.=.=.=.=.=.=.=.=.-.-.sXrXeXaX%.=.=.=.=.=.=.%.;.s., ; 1 ( zXmX0 1.2.6 w D I l + D 3XC O q NXMX. 2 I.zX x MXUXk 2 g.UX g 3X5Xf q f.ZXk . p.3. g 3X5Xh 3 < 7XmXh 2 4.M g % u.a.M O n a.h q.6.8.j.wX0Xe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.| ` T W D.U.R.(./.^.(.`._.`.`.`._._.}.`.", "`.`.'.}.`.`.`.`.`.`.`.`.(.(.^./.] T F w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.%.=.;.&.=.=.=.=.=.=.=.;.pXs.b >XB = { o.a 1.> 2.5 C zXI O o zXP O D NXf.6 l ZXg.< m NXK.. D NXK.4 g aXdXm q NXMX+ 3 d.p.3 g uXdXM 6 < yX 5 l A f A f d g O k X d + . X d c d O 2 X + X s h f d o c 2 2 O < b X d h f g c 4 b h N x 3 G 3 v d m d x d L 1XkXjX7.8.i.eXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.| ) T .D.U.!.(.).).(.`._.`.`.`.`.`.`.`.", "_.}.}.`.`.`.`.'.`.`.`.`.(.`.(./.' _ u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.;.=.*.H S 6X6X4 : 2.> > 2.3.5 C o q J s m N v 2 K I F d d d d g X d o s s d v X X X o s s X % g g d c s X X A A c k O x d d c x 2 C 2 b c d A eXeXy.t.lXwXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.| ' _ Q D.R.~.).).(.(.(.).`.`.`._._.}.}.", "`.`. X`.}._._.`.`.`.`.`.`.(.(./.] ) u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.[.;.;.%.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.-.:.{ ,.>.I n 3.: 1.> : 5 D 2XJ A I K N F MXmX) O | w + 1 d.2.+ 1 d.3.+ 3 H d.3 d 6X<.+ d 6X5Xl 3 y d.3 m c 6X<.+ k >XMXd O G I 3 % >XhXd 0XwXkX5XwX0Xe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.| ' _ Q D.U.W.(.).(.`.(._./.(.`._.`.}.}.", "`.`. X`.=X`.`.`.`.}.`.`._.`.`.).` ) F e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.>.;.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.&.&.&.=.=.=.=.=.:.{ ,.-.=.sXI 4 ; ; 4 b A zXK b 3X3X2 ( { | Y < 4.k.% 3 d.p.2 3 d.u.1 3 G P 3 D 3X3XC 2 aXLXm 2 G P 3 m C 3X3XA % >X1XA O f.g.Z d M 1X1X9XwXwXwX0X0Xe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.| ) T .F.R.!.'.(.'.(.).(.`./.(.'.`.}.}.", "}.`.`.`.`.`.`.`.`.`.`._._.(.`._.W _ u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.-.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.aXpXiX&.&.&.=.=.:.~ ,.=.-.%.>.J s.G x P O c d g s A q O Z 7 $ w 1 6 a o 1 1 c . c 1 c 1 x 1 j 1 C S v d c f A d 2 < j 1 c q 5 < 1 c < V . q ; 6 ; q < x V 9X0XwXwX0X0Xe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.w.| ` _ .D.U.!.'.'.`.`.`.(.`./.`.`.`.}.}.", "}.}.`.}. X`.}.`.`.`.}.`.`.`./._.] T F e.7.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.*.0XcXxXuXpXiX&.#.%.{ ,.-.;.=.&.F jXgX; 5 D v A J J o m B c C d x x J P N x o A B c o d c c C C c x o C x b 2 o x b k k o C Z , , 5 G , , 6 Z , 6 6 Z 1.1.4 j.i.wXwX0X0Xe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.| ` _ Q F.U.R.(.`.`.`.`.(.`.`.(._._.}.}.", "`.}.`.`.}.`.}.`.`.}.}.`.`.`.`._.` ` u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.-.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.%.=.eXkX0.0.t.cXiX&.:.{ ,.;.@.-.:.<.3X6XL N c % . k D I m ,Xq I A + D I v ,XC I J 1Xq 2XL + C S S O k 1XhXO k 6X5Xv o 4X<.@ v D d c d d k k K K A 2X1Xc ; ; 5 gX6.a.eX0X0Xe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.| ) _ .F.R.R._.`.`.`.`.`.`.`.`.`. X}.}.", "}.}.}.}.}.}.].`.}.`.}.`.}.`.`._.] ' u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.%.*.wXa.8.8.0.bXwXuXuX[ { ' { :.-.$.2X4X4XP w O.w + S MXq o C hXI + C 3X3Xq D MXk 2 c zX3X@ D I I d c M 1Xv o aXdXm C 3X3Xk v 2 2X2X@ I S @ K 4XS J B C ,XnX:X9X7.i.eX0X0Xe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.| ) _ W F.U.~._.`.`.`.`.`.`._.`.`.}.`.}.", "`.}.}.=X}.`.}.}.}.}.`.}.`.`.`._.] _ y e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.>.gX8.5.a.B 1X4XL d o o [ ;.=.:.o.F S P K 3 t.H O q + s x + h N m O X S + % + C d C O C O O 2 c f h d c f J d c D A d c C 3X3X@ 3XhXO J 1XP hXD 2 lXmX6Xt.9.i.tX8X0Xe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.| ) _ .D.U.!._.`.`.`.`.}.}.=X}.`.}.}.}.", "}. X}.}.=X}.}.}.=X}.`.}.`.`.`._.] _ u e.e.e.e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.-.=.=.=.=.=.=.=.=.=.%.;.5XjXkXtX:X.rX2Xa a t u S S K P D J J ,X% LXZ Z d 6X= + J P L P S c L N x q v B x q 2 2 b 2 d o c % X K @ X f K 2Xf A x b N v P a.lXbXcX8Xe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.w.| ) _ Q F.R.R.'.`.`.}.`. X}.}.}. X`. X}.", "}.}.}.}.}.}.}.`._.`.`.}.`.`.}._.] ` u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.-.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.%.=.sXrX8X>XLXLXw A LXLXO.;.:.=.=.=.%.;.[ { :.=.:.{ O.*.bX2X3XhXo c LXI C D 3X3X% 3XwX8XvX2XK N ,X% I v ,XC I D + d 6X5Xm v d hXI o K S + P J S F I x c c 2XL L 4XMXlX7Xe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.| ` _ .F.U.!.'.`.}.`.}.`.}.=X}.}.}.}.}.", " X X X X}.}.}.}.}. X}.`.`.`.`._.` ) u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.%.*.*.L 1X1Xb 2 N J 1XO.#.-.=.=.%.:.' O.:.=.;.:.:.%.>.U L L v J >X1XA L P L [ :.*.pXvX1X2XMXq D MXA o c 3X3XO % uXdXN m o LXMXX I hXd 8X5X| mXO.% I C .U L L c 2 % D q C C J O d v J s d 2 h 1Xh M 1XM vXpX{ K.Y q MXS d 2XJ 2XI K 9Xe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.| _ _ .F.R.!.`.`.`.*X.X`..X X X X}. X}.", " X}.}.}. X_.`.}.}._.}._.}.}.`.`.` ' y e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.-.=.%.%.%.sXP D I N >X{ %.=.-.:.:.O.o.:.:.;.:.,.,.-.-.-.=.*.*.*.*.*.*.;.%.%.-.-.-.=.;.*.pX.P O X s d ) { ~ l 5X6Xd 6 , g.f.@ 3XsX%.;.-.-.-.=.=.=.=.=.=.=.=.%.%.=.;.=.=.=.%.,.Y Y i c 3X3X+ 2 3X3XA 9XO K J ,XO Z I 3 C S S O O lXmX1X4XP hXMXhX7Xe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.| ' _ .D.!.!.}.}.}..X.X.X.X.X.X}.}..X X", "`. X}.`. X`. X`.}.`. X`.}.`.`.}.] ` H e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.-.=.=.=.=.=.=.=.=.=.=.-.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.-.=.3XJ F F S o.:.:.[ pXrXf 5 G ZXf.6 4XcXiX&.:.&.%.:.=.=.-.=.-.-.%.iXiX=.=.=.=.=.=.=.-.*.3XO v v O q A v v 2Xd 2XhXC o f.f.5 C I K c C M X2Xq K L B 3X1XP M + C S D m vX1X>X2Xc C 5XuX% < H I 5 k 3X3XD :.:.o.F :.=.=.%.=.pX8XwXvX2XJ 2X% o L 5Xh K 2X5 I 1 9X0X0X0X0X0Xe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.p ) ) } H.R.|. X X.XXX.X.X*X.X}.*X.X}.*X", "}. X}.}.}.}.`.`.`.`.`.`.`.`.`._.] ) u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.;.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.-.&.aX0X0X8X8XI I S O A mXcX>XP Z 3XI O 4X6XzXP @ D I S h 4Xm g M s Z K m d 2 V j 1 k A A g O.#.o.F -.=.=.=.%.aX8X8XeXX1X- + 5 : : 4 5 > 2.2., C >X2X1X3XF -.=.=.=.=.&.pXcXqXwX0X0X4XD K J S b K J A P 0XwX0X0XwXjXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.H ) _ } P.{.|..X.X.X*XXX XXX*X.X}.}..X X", "}.}.}.}.`.}.}.`.`.`.`.`.`.`.`._.] ) u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.-.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.;.;.bXvX0X0X0X0XvXK P v + 3 P G N 2Xt MXmXR 2X1XS B ,Xq K Z m vXvX2X3XuXd < , , 3 5 > > , 6 d x h m 1XK >.%.=.=.=.%.aXcX8X9X4X4X2XJ 4X0X4XK 9X4X,X4X0X0X0X0X0XwXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.| _ _ } G.!.{..X.X.X*X.X.X*X.X X X.X}..X", " X X X}. X X`.`.`.`.`.`.`.`.}._.] _ p e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.*.bX8X0X0X0X0X1XbXS @ G K.d.N L [ | O.Y 4X2X3X3X% D I S 1XvX0X1XS J g . 3.h + 5 4 h N d 5 4 h N x P uX:.=.=.=.%.@.*.pX2XJ 1X+ q 2XI q P ,Xw I 2 9X0XwX0X0X0Xe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.| ` ( } H.{.|..X.X.X.X X}..X X.X X.X.X.X", " X X}.}. X`.`.`.}.`.`.}.].`.`.].] _ y e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.-.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.%.*.0X0X0X0XvXh f m d C n b 1X2Xr R Y 8 2XL J A O C C o L 9X2XC o w C 2 UX2XC 6 4 B p.f 5 4 N p.f w 4 uX+.:.-.-.-.%.>.3X3XhX@ d LXMXA S ,Xf.f.G 9X0X0X0X0X0Xe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.| ) T } P.{.{.XXXX.X X.X.X.X X X.X.X.X.X", " X X X}.}. X X`.`.}.`.`.`.`.`._.] _ F w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.;.@.qX8XwX0XwXL G M P 1X,XX>XA w n M >XL 5 > , s.iX&.;.=.=.:.[ M L O q m L d K 1X3 5 1 0X0X0XwXwXeXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.| ) _ } H.{.XXoX X.X.X.X X.X*X.X}. X.X X", " X}. X X}._. X`.`.`.`.`._.`.`._.] ` u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.-.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.*.*.iXwX8X3XK.o 2 D I N 8X2Xj :XP >XvXL S Z L 1XI m 9X0XeXB H I b A g g o c v h N d o x f v P Z C c C P uX:.=.=.;.;.*.5X4XK D A D K J o 2 L 0X0X0XwXa.a.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.q.| ) _ } H.{.|.XX.X@X.X.X X X}..X.X.X X.X", " X X X X X}._. X}.`.`.`._.`.`._.] T u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.%.&.-.qXcXL v f s S MX% N 1Xc LXLX3XvX2XI D >X3XK.2 L cX8XB V h c 1 3.h . S o B M d c n ,Xg < ; n ,Xf 5 4 >.&.&.=.=.-.=.pX8X8XwX0XwX4XK C 7XvX0XwXwXa.6.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.| ) ` } P.{.{.oX.X#X.X.X.X@X@X.X X X@X@X", "}..X}. X}. X}.}.}.`.`.`.`.`.`._.] _ u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.%.@.qXcXqX9X0X2Xo 2 s L 2Xs 1X2X1XvX1XC v 1X2Xc f >XwX0X0X9X0X2Xq UX2X; , A s.p.f C i.jXM 5 ; i.jXL 5 s.uX+.+.=.=.=.&.aXcX0XcX0XvX4XMXD c 9X0X0X0XeXjXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.| ` _ } H.{.+XoX@X@X.X.X.X.X.X.X.X.X.X.X", ".X X X}. X}.}.`.`.`.`.`.].`.`._.] _ u w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.-.sX0XrXqXwXP D D A K S 2XqX4X0XvX0X9X9X0X9X9XqX0X0X0X0XwXwX3X3 d.G ; a K M M A c N L s 3 ; N N c 5 , : 1.s.>.%.=.=.;.pX8XxX0XbX4Xv f m 0X0X0X0X0XeXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.| ) _ | H.{.XXOX#X#X#X.X@X.X.X.X.X.X@X@X", "}..X}..X`. X`.}.`.`.`.`._.`.`._.] ` F e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.-.%.*.iXrXcXP 1X2X4X9XqX0XvXwX0X0X0XwXqX0XvX0X0X0X0X0X0X0XwX6XS A C C 2 Z S A C 2 % 2 b Z 5 4 N 6 5 : : : 4 uX%.=.=.%.=.pXcX8X8XcX9X9X9X0X0X0XwX0X0Xe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.| ' _ } P.{.+X#X#X#X@XoX.X.X.X.X.X.X.X.X", ".X}. X}. X`.}. X}.`.`.`._.`.`._.] T u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.%.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.-.;.5X0XvX2XC K o M vX0XbX0X0X0X0X0X0X0XvX0X0X0X0X0X0X0X0X8X8X2Xo L 6Xf 2 . 2 + 1X= @ 4 D C A D 5 : , : : s.>.%.=.=.=.*.*.iX*.*.sX*.pX8X8X0X8X9X0Xe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.| ) ` } H.{.XX&X$X#X#XoX&XoX#X#XXX.X@X@X", "}.*X}.}.*X`.}.`._._.`.`._.`.`._.] _ u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.[.;.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.-.=.qX0XwXU q MXK >XvXbXvXvXbX0XwXvXvXwXeXwXwXcXwXwX0X0X0X0XvX2Xc pXdXm C S f.O 5XO.v B o B M l 5 n h >X< 4 uX-.&.=.=.%.%.&.%.%.%.&.=.*.sXsX*.pX8Xe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.| ] _ | L.+XXXOX#X$X$X#X#X#XoXoXXX#XoX.X", "}..X}. X}.}.`.`.`.`.`.`.`.}.].`.] _ u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.;.=.=.=.=.=.=.=.=.=.=.=.=.-.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.-.;.qX8XcX2XO P m M qX5X9X5X9XqXlX4X4X4XlXlX5XxX4XlX9X0X0XvXvX5X% L U f d . 6 + S L < 5 l u.a.m J ,XN p.x 2.4 aXo.-.;.=.=.%.=.=.=.=.=.=.=.%.=.*.*.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.| ` _ } P.+X+X%X$X$X$X#XoX#X#X#XoX#X.X@X", " X}.*X`.`.}.}.`.`.(.`.`.`.`._._.] ` F e.7.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.:.;.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.%.*.cXcX2Xq % c D K S K K K 6 , , : > , , 5 5 , , n vXqX4X4XP C O o c b Z C Z c c Z Z L M M f 5 4 M M N ,Xh N M ;.&.=.=.=.=.=.=.=.=.=.%.=.=.=.%.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.| ` ` } L.{.OX%X%X$X$X%X$X$X$XoX#X#XoX#X", "}. X}.}. X`.`.`.`.`.`.`._.`.`._.] _ u e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.;.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.%.=.=.=.=.=.=.=.=.=.%.=.=.=.=.=.=.=.=.=.=.=.%.*.iXwXj @ @ M wXqX9X0X2XX n ,X; 4 h N s d B m M nX1XG K 2 3 Z n 2 5 : : : : : : , D D D S Z D S D D L N a.M uX+.%.&.%.%.%.%.&.%.%.&.-.%.=.=.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.| ) ` | L.{.OX%X%X%X%X%X$X%X%X%X$XoX#X#X", "}.}.}.}.`.}.`.`.`.`.`.(._.`.`.}.] _ u e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.;.=.=.=.=.=.=.=.=.&.-.rX9Xg @ >XvX0XvXwX2Xc h.jX< n B p.d c i.p.>XvX,Xf.f.2 3 H f.2 5 : : : : : 1.4 M M g 5 2.4 h M g J M 1XN , 4 pXiXiXiXiXiXiXiXiXiXiX-.=.@.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.| ' _ S.P.+XOX;XOXSX%X%X%X%X%X&X&X&X$X#X", "}.`.`.`.}.`.`.`.`._.`.}.`.`.=X].' _ y e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.@.rXf M 0X9XqX0X0XwX3XO N M N ,Xm M A L m M N 4Xm 5 5 2 3 V j 1 Z 2.: : : : : 4 N a.l Z , 4 N a.f Z P 0XlX9XxXcXvX8X8XwX8XwX0X8XcXvXaX-.%.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.H ' T S.L.+X+XBX;X%X%XVXOX%X%X%X%X%XOX$X", "}.`.}. X`.'.`.`._.'.(._.`._.`._.' ` y e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.:.%.rX9X0X0X0X0X0X0X0X2XD D Z Z S D S D D J D D S Z C % c Z C q C 3 1.: : : : : 4 M M v Z Z J N N V > : > 4 eX0X0X0XbXeXeXeX0X0X0X0XbXcXpX*.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.p ' _ } P.+XOXSXOXSX%X%XVXVX%X%X%X%X%X%X", "`.`.`.`.`._.}.}._.oXOXVXSXOXoX`.] ' u e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.=.@.%.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.&.iXvX0X0X0X0X0X0X0X0X9XqXwXB 1.n h m < ; M h < 2.; L M < 2.; N M < 1.: : : : 1.1.3.3.> : > > > 3.2.1.: : s.wX0X0X0X0Xa.j.t.gXeX0X0X0XbXcXnXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.H ) _ S.H.[.XXXX}._.SXSXVXVX%X-X%X%XOX$X", "`.`.`.`.}.`._.`.XXSXAXFXFXDX;X+X` ' F e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.@.;.;.%.=.=.=.=.=.=.=.=.=.=.=.=.=.;.=.=.=.=.=.=.-.=.=.=.=.=.=.=.=.=.=.=.;.-.=.=.=.=.=.=.=.=.=.=.-.&.iXbXbX0X0X0X0X0X0X0XcXbX0XeXG 3.n B p.< 4 n p.< 2.5 B p.< 1.4 b p.< 1.: : 1.: : : 1.: : : : : : : : : : : 4 vX0X0X0XvX6.8.9.i.eX0X0X0X0X0X0Xe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.p ' _ S.P.+XOXCXOXXX).SXSX-XVX%XVX%X%X%X", " X`._._._._._.}.OXAX7 e 8 r AX+XW ] T y.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.$.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.;.+.xXxXxXxXxXxXxXxXxXxXxXxXxXvXp.1.n N >X< n >XN n 3.n N >X4 3.n 1XM V 2.1.2.1.1.2.1.2.1.2.1.1.1.1.2.2.1.1.1.s.xXxXxXxXbXa.j.j.gXbXxXxXxXxXxXxXe.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.q.H ] ` S.BXt & r 7 BX|.SXDXSXVXSXVX-X%X%X", "`.`.}._.`._._.'.SXGXr & 8 e GXSX..[ ` 4.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.j.] T F P.AXt r & e FXoXSXOXVXVXVXOXOXSX%X", "`.`.`.`._.`._.`.DXGXe r r e GXCXE.] ] k.t.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.k.] ] F I.AXr r & 8 GXOXSXVXSXVXVXSX-X%X%X", "`.`.`.`.`.`.`.`.FXHX& r r e HXDXE.) ) ] i.7.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.4.} ` ] ' I.KX# & & r GX;XSXBXSXVXVX%X%XOX-X", "`.}.'.`.`.`.`.}.DXHX& * 8 & HXAX'.W [ T .4.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.e.w.e.e.e.e.e.e.e.e.7.w.e.e.e.e.w.e.e.e.e.e.w.e.e.e.e.e.w.e.e.e.e.e.e.e.e.e.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.t.H ] ] F .I.KX& e e r GXBXDX-XSXVXVXVXSXVXVX", "`.`.`.`.`.`.`.`.DXHXe t r e HXFX|.E.] ) .H j.e.e.e.e.e.w.e.e.e.e.w.e.w.e.e.e.w.w.e.w.w.e.e.e.w.e.e.e.e.e.e.w.w.e.e.e.w.e.e.e.e.e.e.w.w.e.e.e.e.w.e.e.e.e.e.w.e.e.e.e.e.e.w.e.e.e.e.w.w.e.e.w.e.e.w.e.e.e.e.e.w.w.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.w.e.e.e.e.y.k.] T ] E | I.ZX& 7 e r GXSXSXSXSX%XVX%XVXVXVX", "`.`.`.`.`.`.`.`.DXHXe r 7 & HXDX'.'.J.W T ) p k.q.e.e.e.e.e.e.w.e.e.e.e.e.e.e.e.e.e.e.q.e.e.e.e.e.e.e.e.e.e.e.q.e.e.e.e.e.e.e.e.e.e.e.q.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.r.4.H ] ] ` F H S.BXKXe 9 & & HXBXSXSXVXVXVXVX%X%X%X", "`.`.`.`.`.`.'.`.DXHXe & 7 7 HXDX(.^.{.F.T ) ' | d.t.q.q.q.q.q.q.q.q.q.q.q.q.q.t.q.q.t.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.r.q.q.q.q.t.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.t.q.t.q.q.t.q.q.q.q.q.q.t.q.t.q.r.r.r.r.r.r.q.r.r.r.r.r.r.r.r.r.r.r.r.r.q.r.r.r.q.q.q.r.q.q.q.q.q.q.r.r.q.q.q.q.q.r.q.r.r.r.r.r.q.r.q.q.q.q.r.q.q.q.w.r.r.r.q.q.q.q.q.q.q.q.r.r.q.q.r.t.t.d.| _ ] T _ F } P.NXKX7 9 7 r HX;XSXSXVXVXVXVX%XSXSX", "`.`.`.`.'.`.'.(.DXHXe & e r HXAXQ.(.(.R.X.) ' ) ] T _ ) ( ) ( ) ) ) [ ( ' _ ) ) ( ) ( ( ) ' _ _ ' _ ) ) ' ) ) ) ) ) ) ( _ _ ) ) ( ) ( ) ' ) ) ( ' _ ) ' ' ) ) ) ) ' ) ) ) ) ) ' ) ) _ ) _ ) ) _ ' ' ) ) ` ) T ) ` ) T ` _ ` ` _ T ` ` ` ` T ` ` _ T _ ) ` _ ] T ) T _ ) ' _ ) ) _ ) ( ) T T T F T ` T T T _ T _ T T T T F T _ T T T T ` T _ T T _ ` _ _ _ _ ` ` _ T ` ` ` ` ) _ ' ] ` F T .S.I.BXHX8 7 r 8 HXAXSX-XVXSXVXVXVXVX%X", "`.`.`.}.`.(.(.(.DXHX& r & t HXFX(.(.Q.^.U.] ] T ] ) ) ) ' ' ) ) ) ( [ ( ) ) ) ) ) ) ) ( ) ) ` ` ) ( ) ) ) ) ) ) ) ) ( ) ) ) ) ) ) ) ( ) ( ) _ ) ) ) ) ) ) ) ) ) ) ) _ ) _ ) ) ) ( ) ) ( ) ) _ _ ) ) ) ) ` _ ) T ` ` T ) ) ) ) _ ` ` ) ) ) ) ` ) ) ) ) _ ) ) ) T ) ) _ _ ) T ) ` ` _ ) ) ) ) ` ] ) ) ) ) ' ) ' ) ' ' ' ) ] ' ) ) ' ' ) ) ) ' ' ' ) ) ) ) ) ) ] ] ) ) ) ) ) ) ' ' ' F E _ .S.P.+XAXKXt # r e KXDXSXSXVXVXSXSXVXVXSX", "`.`.`.`.'.(.(.(.DXHX& & t & PXKX~.~.^.~.'.E.R.D.! W ) T T T ( ( T u T T T T T F ) u ( ( T ( u p ( T ( ( ( T F T ( ( ( ( ( u ( ( u ( ( ( ( ( T u F T T T ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( T u _ _ u ( ( ( T F F T F T T T F ( T F T T T F T F F T T T u ( ( F T ( ( ( F T _ _ ( ( T ( ( ( _ T ( ( ( _ ( _ T ` ( ( ( _ T _ ` _ ( ( ( ( ( T _ _ ( ( T ( T T T F _ T ( _ _ T u u u E H | S.L.I.+XFXPXr r & & HXAXSXSXSXSXSX%XSX%X%X", "`.`.`.`.'.'.(.(.DXHXe & 8 8 PXIXKXAXDXAXDXDXAXBXBXI.P.S.E p E p i i i i i i i p i p i p p i i i i p i p i p p i i u i p i p p p p p p p p i p p p 0 p p p p p p p p y p i p p i p i p p p p p p p p p p p p p E E p E p p E p p p p E p E p p E E p p p E p E p p E p E p p .p p u .p p H _ . .H E H T .H _ .p y . .p .u p .H T p .H .y p H .H .H p .H H . .| K.K.I.MXNXI.BXBXZXFXIXPXr r e e HXCXSXSXSXSXSXSXSXVX-X", "`.`.`.`.(.(.(.(.DXHXe e r r PXPXPXHXHXHXHXHXKXHXKXFX+XI.H.l.Q Q Q } Q Q Q Q Q Q Q Q Q Q Q Q l.E Q Q Q Q Q Q Q Q Q ! ! Q Q Q Q Q } Q Q Q Q ! Q S.S.S.Q S.Q } Q } } ! Q Q S.} Q S.l.Q Q S.Q S.S.Q Q S.} } S.} S.} } } S.} } } } S.} S.S.} } S.S.} } S.} S.} S.} S.} S.S.} } S.} } S.G.} S.S.G.S.} S.S.G.S.S.} } S.} G.S.S.} S.S.S.S.S...S.S.G.} G.G.S.S.X.S.G.G.G.S.G.G.K.I.NXBXKXKXKXKXKXKXKXHXIXPXPXr r & & HXBXVXVXSXSXVXSX%XVXVX", "`.(.`./.(.(.~.).SXHX7 & e & w r r r r & r r r r * # 8 BXI.F.F.F.F.F.F.F.F.F.F.F.D.F.l.l.F.l.F.l.l.l.l.D.l.F.D.F.F.F.F.F.F.F.F.F.F.F.F.F.F.D.F.F.l.F.D.F.F.J.F.F.F.F.F.J.F.F.J.F.F.F.D.D.D.H.J.F.H.J.H.H.J.J.J.H.H.H.H.H.J.H.H.H.H.H.J.J.H.H.H.H.H.H.H.H.H.H.H.H.H.H.J.H.H.H.H.H.H.H.H.H.L.H.L.L.L.L.L.L.L.L.L.H.L.L.H.H.L.L.L.L.H.L.L.L.L.L.L.L.L.H.L.L.L.L.L.L.L.L.L.+XBXw & & 8 e e t t 7 r * r r e e # t HXDXVXSXSXVXSX%XVX%X%X", "(.`.`.'.(.).~./.SXKXt # e t t t t 8 8 e r 8 r # r * 8 AXOXW.U.U.H.R.U.U.U.U.U.U.U.U.U.V.Y.F.U.F.U.U.U.Y.H.U.U.U.U.U.R.U.R.U.U.R.U.R.R.R.!.!.!.U.U.R.R.!.U.!.R.R.!.R.H.!.R.R.R.R.!.R.R.!.!.R.R.!.!.!.!.!.!.!.{.R.!.!.R.{.!.{.!.{.R.{.!.{.R.!.{.R.!.{.{.!.!.!.{.R.{.!.{.!.{.{.{.{.{.{.|.{.{.{.{.|.|.{.{.{.{.|.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.|.{.+X{.{.+X{.+X+X+X+X+XAX# t e r 8 e & # # # r r * 9 e r e GXSXVXVXSX%XVXVX-X%X%X", "`.`.(.(./.~./.~.BXFXt e r # r e 7 & & e e 7 t & & * r AXOX~.~.~.W.W.~.W.T.~.W.R.W.W.W.W.W.U.U.~.W.W.U.~.~.R.W.~.R.~.~.~.~.~.!.~.).).).)./._.).).]._._./._.~.).).~.~.~.~.).).).'.].!._._._.)._.|._._.`.|.|.`.}.|.}.|.}.|.}.}.|. X|.|.}.}.`.|.}.|.`.}.}.|.|.|.|. X}. X|. X}.|. X.X.X X.X.X.XXXoXXX.XoXoXoXoX.XoX.XXXXX.X|..X.X.X.XoXXXXX.XoX.X.XoXoXXXoXoXoXoXOXoXOXOXOXBXFX# e e 8 r r r & r 8 8 e r 9 7 e & KXOX%XSXVX%XVXVX%XSX%X", "`.(.`./././.~.~.XXCX9 8 e & r & e e & & & r & 7 & 8 r CX&X(.~.'.~.~.~.~.~.!.~.~.~.~./.W.~.~.W.~.~.~.~.~.~.~.^.^.^.~.~.(./.).'.(.`.`.`.`.`.`.`.`.]._._._.}._.'.`._./.`.`._.(.`.`.].].}.`.`.}.}. X}. X X.X}..X.X.X.X.X X.X.X.X.XXX.X}. X.X.X.X X.X.X.X.XXX.X X.X.X.X.X.XoX@X.XOX.XoXoXoXoXOX$XOX&X$XOXOX$XOXoXOXoXoXoXoXoX@XoXoXOX#XOX#X#X&XOX$X#X$XOXOX$X%XOX%XVX%X%XOX%XFX8 e & r e e r r e r r r r e & e 7 DXoX%X%XVX%X%X-X%X%X%X", "(.`.(././.~.~.~. XSXBXGXGXHXHXHXHXHXHXHXHXHXHXHXGXJXAXVX.X).(././.~./.~.^.~.~.~.~.!.W.~.~.~.~.~.~.~.~.~././.).~.^.~.).)._.(.'._.'._.}.}.`.`.`.}._.}._._._.`.`._._._.).)._.`._._.]._.}._.}.}.}.}.}.|. X}.|..X.X.X XXX.X|..X.X.X X|.oX}..X.X.X.X}..X X.XXX.XoX.XoX.XoXoXoXoXoXoXoXoX.XXX$XXX$XoXOXOX$XoXOXOX#XoXoXoXoXoXoXoXoXoXXXoXoXOX#XoXOX&X$X&XOX%XOXOXOXOXOXOXVX%X-XAXFXGXGXHXPXIXHXHXHXHXHXHXHXGXGXGXCXVX.XVX%X%X%X%X%X%X%X%X", "`./.`.(./.~.~.~.~.|.$XOXSXDXAXDXDXFXDXDXDXFXAXDXDXOXSX|.(.)./.^.(././.^.~.^.~.).~.~.~./.~.~.~.~.~./.!.~.'.~.(.^.(.^.(.).(.`.`.`._._._.`.`.`.`.}.`.`.}.`.`.`.`.`.`.`._.`.).'.`.`._._.`. X_.}.}. X}.}. X X.X}..X}..X.XXX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XoX.X.XoX.XoXoX.XoX.XoXoXoXoXoX#X#X$XOX$X$XOX$X$X&X&X#X#X&XoX#XoXoX#XoX#XoXoXoX#XOXoX$X#X$X$X$X$X%X%X%X-X%X%XOXVXOXOXSXAXFXAXFXFXFXFXFXFXFXAXAXAXAXAXOX}.%XOX%X%X%X%X%X%X%X%X", "`.(.(.(././.~.~.~.~.~.(.~.~.~.~.W.~.W.~.~.~.~.~.~.~.~./././.(.(.(.^.(.(.(.^.^.^.(.(.(.^.~.~.(./.(.~.(.(.(.(.(.(.(.(.(.(.(.(.(.`.(.`.=X(.=X`.=X`.=X}.=X`.=X}.(.(.`.`.(.(.`.`.`.`.=X`.}.`.}.}.}.=X}.}. X X.X.X.X.X.X.X@X.X.X.X.X.X@X.X.X.X.X.X.X.X.X.X.X.XXX#X.X#XXX#X@X@X#X@X#X#X#X#X@X$XoX$X$X$X$X$X#X$X$X#X#X#X#X#X#X#X@X#X#X#X#X#X#X$X#X#X$X$X$X$X&X%X%X%X%X-X%XOX%X%X%X%X-X$X$X$X&X#X$X$X$X&X&X$X&X$X&X%X&X%X%X%X%X%X%X%X&X%X%X", "(.`.`././.~.~.~.~.~.~./.~.Q.W.~.~.W.~.~.T.~.~.~.~.~.~._.'.).(.'.=X`.(.=X=X^.(.^.(.Q.(.^.=X~.(.~./.(.(.(.(.`.'.(.(.(.(.(.(.}.`.'.}._.`.}.`._.}.}.`.}.`._.'.'.=X_.'.}.'.}.(./.=X'.`.(. X`.`.`.`.XX}..X}.@X`..X@X.X|..X@X.X.X@X.X.X}.#X.X X.X.X.X@X XoX#X.X.X#X#X.XXX@X@X#X#X#X$XOXoX#X$X@X#X$X%X#X#X%X$X&X&X&X%X$XOX$X@X$X$X$XoX#X$X$X$XXX#X#X%X#X%X$X%X&X%X%X$X$X%XVX%X%X$XOX$X$X$X%X$X$X$X#X$X#X#X$X&X#X$X$X$X%X$X%X%X%X%X$X&X%X%X", "`.(./._./.~.~.~.~.~.~.~.~.W.~.~.~.W.~.T.Q.~.~.~.~./.W.Q.(.R.W./.~./.).`.T.(.).)._.!.!.'.^.^.'.).'.`./.`.`./.`.`.(.^.(.(.`.(.`.`.`.`.`.`.`. X`.`.}.]._.`.`.'.`.`.(.`.}.)._._.`.}.}.=X].].}.=X X`.`.}.XX`..X.X X X@X.X.X.X.X.X.X.X.XoXoX@X}.#XoXoX.XOXoXoX&X#X#X#X$X#X@XoX%X#X@X%X&X.XoX&X$XVX&X#X$X$X#X#X$X#X#X$X#X#X$X$XoXOX$X#X%X$X&X#X$X$X#X$X#XCX&XVX&X%X-X-XOXVX&X&X-X%XoX$X$X$X$X$X$X#X#X#X$X#X$X$X$X&X$X&X$X%X$X%X%X&X%X%X%X", "`.`.(././.(.~.(.~.~.~.~.~.~.~.Q.W.~.W.~.~.~.~.~.~.~.].'.).W 9 7 9 = W '.`.`.W 9 7 8 9 R ).`._.`.`.Q.`.~.(.`.(.~.`.`.`.'.`.'.}.`./.`.}./.]._._.}.].}.].`.*X}.}.'.`.=X/.{.Q F.'.}._.(.`.`.XX}.`.}. X XXX}..X}. X@X.X#X@X.X#X@X.X.X#X}.oX*X#X|.0 # 9 & $ Q $XoX.XoX$X#XOX+X! H.-X.X&X$XOX|.! H.$X$X$X@X$X%X$X%X$X$X$X$X&X#X%X$X#X$X@X$X%X#X$X$X$X$X[.9 & $ {.%XOXOX%X$X%X%X$X$X%X$X$X%X$X$X#X$X#X$X#X#X#X#X&X$X&X$X%X%X$X%X$X%X$X%X%X", "(.`.^./.(.~.(.~.~.~.~.~.W.~.~.~.^.T.T.~.~.~.~.~.^.~.W.^.(.R 8 r 7 * 0 _.(.W.i # e e e R ).^.~.`.). X).}.(.(.'.`.'.'.`.=X`.=X~.`.`.`._.}.`.].}._.`.].`.}.}.).*X}.`.~.Q 0 9 J.'.`.}._. X`.`.}. XXX|..X.X}.@X*X@X*X.X@X.X X.XoX.X#X@X.X#XXX.X[.# # & r * i oX@X#X&XOX|.X.i $ R.#XOX&X.X..i 8 [.$XOX$X$X%X%X$X%X%X&XOX&X%X$X#X$X$XOX&X$X#X$X%X#X$X#X[.# e 7 L.%X$X%X%X-XOX%X%X%X$X$X$X#X#X#X$X#X#X#X#X#X#X#X$X$X%X$X$X%X%X%X&X$X%X%X%X", "`.`.)./.(./.~./.~.~.W.~.~.~.W.Q.~.~.~.Q.~.~.~.~.^.~./.~.(.E e & e & e E.=XR.t & * r e E '.=X(.`.`.'.'.}.`.`.~.^.`.`.^.`.^.(.`.'.`.)._.`.=X`./._.}.}.'.`._.`./.`. XF.t r # J.(.=X`.`.`.}.}.}.`.}.*X.X}.`.}..X.X X XoXoXOX#X}.#XoX X@X@XoXOX} # t & * r & H.#X@X#XoXR.7 & & L.oX#X%X[.e e 9 L.oX%X$X$X$X$X$X%X$X$X%X$X&X%X#X$X&X&X$XOX%X&X&X%X#X-X[.e & 7 [.OX$X$X%X%XVXOXOX$X#X$X%X&X$X&X#X&X$X#X$X#X#X$X$X$X%X%X$X%X$X&X$X%X%X%X%X", "(.`././.^.(.(.~.~.~.~.~.W.~.~.~.~.~.~.~.~.^.^.~.~.~.~.Q.(.R e # t # & ..^...e e t e & R }.^.(.`.!.l...! F.E.}.'.(.(.F.J.F.E.).! ! ! E.}.}.'.|.!.D.....! D.{.`.`.R...* r 7 ..J.W.`.}.}.{.........{.}..XXX*XH.H.R.|.H.D.D..XoX@XoXoX#X#X.XoXR e # p 7 & t Q %X@X-X+X..& & e G.H.OX+XX.# & # G.[.oX%X$XVX[.G...D.G.L.OX%X$XOX-XOX+XJ.D...D.[.OX$X#X[.7 * t [.OXoX[.R.H.R.oXOX%X%X%XOX%X%X$X$X$X$X$X%X$X$X$X%X%X%X%X%X$X%X%X%X%X$X%X%X", "(.`././.'./.~.(.~.~.Q.~.W.~.~.~.~.~.^.Q.^.'.Q.~.~.~.'.'.~.R e t E 9 e Q (.W 8 7 E 9 9 R `.=X}...i # # 9 # 0 ..|.`.`.t $ t ..i 9 # t 9 J.`.}.! 0 7 7 9 9 & t l.|...t * r 7 7 9 H.`.'...t t # e r & W |.}. X9 & 7 } e # R |.@X@X&X$XXX.XOX[.e & 7 X.W r # 7 +X$XoXD.e e r t e 9 H.D.t r # & t 9 H.OXoXT t # t e # e R [.OX%X$XG.t # t t 7 7 W +X%X[.t # 8 [.+XR # t 7 ..oX%X$X$X%X&X%X&X$X&X%X&X$X$X%X$X$X$X$X$X%X%X%X%X$X%X%X%X%X%X", "`.(.`./.~.^./.(.~.~.~.Q.~.~.~.~.~.~.^.^.^.^.^.~.~.~.~.Q.Q.T 7 e ! t r i ).R # r X.# * R }._.F.t # 8 r r & e 9 ..`._.& r & 8 e r & * * R /.R.9 & r T } t = & 0 !...& e 8 7 r * E.|.l.& 7 r r r 8 & t W }.|.t * e 7 * t W $X X#X.XoX#X$XOX..& * t L.D.& & t J.&X&XX.& e 7 # = 7 [.D.* & e e & 7 [.OX} # & & & = t # e W OX%XD.e & = & & r e 7 } oXL.& & t L.E # t & } &X%XoX%X&X%X%X#X$X%X%X$X%X%X%X$X$X$X$X%X%X%X%X%X%XOX%X-X%XOX%X", "`.`.(.(.^./.~.~.~.~.~.~.~.~.~.(.^.^.^.~.^.Q.Q.~.~.^.Q.~.'.R 7 r } W & $ F.& * W ..$ r R `._.t r 7 i !.!.R 7 9 t }.'.# & r t ..D.i e & e (.F.7 = e ! `._.F.).}.(.!...* * r ..F.!.}.t & 9 W !. X..7 & 8 R.|.# r = 7 D.H.R..X#XoXoX$X#X$XXXi e e 7 &X.Xe * & W OX%X+XD.& e t G.R.OX+XD.* & r ..[.&X&X .R $ T OXOX .& & r OXOX7 7 e R +XoXQ & * i oXH.e e t T # & e } #X#X$X#X%X$X%X%X$X%X$X$X%X&X&X&X&X&X%X%X$X$X%X%X%XOXVXVXOXSXVX-X", "`.(.(.(.'./.).~.~.~.~./.~./.^./.(.^.^.^.^.^.~.~.~.^.Q.~.~.R e 7 Q ! # 9 R r # Q ! & # W `.R.7 r 7 F.'.'.D.# t # H.(.9 t 7 W _./.! * 7 7 ~.{.9 $ 8 r t 9 E Q !.]./.U.7 # # J.`.`.U.t e * W ....X.e t e X..Xt 8 & R oX.XoXoX.X.X#X#X#X$X{.& & & i D.X.i & # e +X$X%X[.r r 7 L.%X$X&X[.7 e e {.&X#X@XOXOXSXH.G.} t t # & OX[.t & & J.$X$X+X{.OXoX#X[.& 7 e & t # r X.&X%X#X-X#X$X%XOX$X%X%X%X%X&X%X%X&X%X%X%X$X%X%X%X%X%XOX%X%X%X-X%X", "'.'.'.(.(.(.(.~.~.~.~.~.~.~.(.(.(.^.^.(.^.~.^.~.^.~.^.~.~.R e e ! U.# # r e 7 U...& = R `.J.e 8 t J.=X`.J.e = & F.(.7 e e ! ].Q.! = e * W._.U.R & r = & r 7 R R.).J.& t t U.}.`.J.& 7 & t 9 & $ & # 9 D..X& & e X. X.X.X.X.XoXoX#X#X@X..e * e 7 7 e e & & 7 H.$X%XH.& e 9 [.OXOX&X[.t * t H.%XoX-X{. .7 t 9 7 i e * t VX[.9 = t L.XX&X@XOXoX$X@X[.e e e $ & & & t +X$X%X$X$X%X%X%X$X$X%X$XOX$X%X%X%X%X%X%X%X%X%X-X%XVX%X%X%X%X%X%X", "_.'.(.(.(.(.(.(./.~.~.~./.(.).(.(.^.'./.~.(.^.~.Q.Q.~.~.~.R 7 & ! ~.t & # r t `.! & t R _.R.& & 9 ..(.`.D.# e 9 U.`.r * & ! ^.(.! & # 9 (.!.!.~.R.G.! R & & $ ..|.F.* & # U.|.`.H.& 9 7 } J.J.R.H.U.F._.}.& r 8 D..X X.XoXoX#X.XoX#X-Xi e * & # r * & e * e R $XOX[.t e 7 L.OX-X&XR.t * e H.CXCX+Xi e e .{.VXX.# e e OX{.9 & t D.$X&XoXD.D.H.|.[.& & e 7 X.e & 7 ..&X&X$X$X$X%X%X$X$X%X%X%X&X%X%X%X%X%X%X%X%X%XVX%XVX%X%X%X%X%X%X", "(._.(.).(.'.(.(.(./.~.(./.(.(.(.(.(.(.~.(.~.^.Q.~.~.Q.Q.Y.R e r ! Q.W e 8 r W =XD.e # E `.'.R # e t F.D.t r 7 i ).^.r * 7 ..(.(.! # & t W.l.R & 0 R.}.E.7 t t ! /.F.r r 7 ..F.}.~.R 7 # R D.J.T = i E |.XXe 8 e ..oX.XoX.XoX.XoX#X.XH.7 e * 9 W W E W t * t # +XVX[.# & t G.H.%XSXL.# t 7 G.H.VX[.# 7 r X.L.G.t = & e OXOX0 r & i G.L.W & * 9 L.[.# e e D.%XQ t # 7 [.&X$X#X%X%X%XoX%X&X$X%XOX%X%X%X%X%X%XVX%XVX%X%X-X%X%X%X%X%XOX", "`.(.).(.'.`.(.).^.(.'.(.^.(.(.(.^.(.~.^.~.~.~.~.~.T.W.~.!.R * = ! ^.! & r & ..).! r & R `. X[.t * * e t & e 7 R.~.`.& t # ..'.~...* r 8 ).F.# t 8 t R i * & t R.~.!.8 & & = t !.`.H.& * & e 7 7 t 9 D. X.X& r e ..oX.X.X.X.X#X&X#X.X} & e # Q %X&X%XoXW r * & G.%XXXt & & & t +XCXBX& & e e 7 OX+X9 e r e r 9 t e 7 e %XOXH.t # * * e e = & } OXL.t * e [.oX{.r & t R oX%XOX$XOX%X$X$X%X$X%X%X%XVX%X%X%X-XVX-X%X%XVXVX%X%XOXOX%X%X", "(./.(.'.)./.(.(./.(./.).(.(.).(.).(.).(.~.~.~.~.~.~.'.~.R.W # 9 ! ~.J.t 9 7 J.}.! e 7 E =X].).R.R t & 9 # R R._.(.(.$ $ 9 ! '.'.! 8 8 t ~.).F.i 8 7 # e t R H.`.`.}.! t 9 t $ J..X|.J.i r 8 e & # X.|.].|.$ 7 t ..#X.X@X#X@X.X.X.X$XR = e t G.CXCX&X%XJ.9 8 t R SX-XG.9 t # 8 {.VXVXX.t e # t [.%XJ.t t = t } [.9 e t H.$XOXH.E t & 7 t 9 X.&XoXR.8 & # E.oX&XX.7 7 9 D.OX$X&X%X$X$X%X$X%X%X%X%X-XVX%XVX%X%XVX%X%X%X%X%X%X%X%X%X%X", "(.).`.).).(./.`.(./.`.(.).(./././.(.~.~.~.~.~.~.~.~.(.Q.Q.W.~.!.~.Q.(.'.(.!.`.(.}.|.`.|.`.}.`.=X}.R.J.F.!././.~.`.)._.~.!.~.~.(.~.~.~.|.Q.'./.(.R.U.F.F.E.`.=XQ.].`.(.[.F.H.R.].}. X`..X!.H.H.R..X}. X X*X&X+X.X@X X X.X.X.X@XoXoXoX@X@X$X.X%X@X%X$X%X%XOXSX%X%X%XVXSX+X[.L.+X%X-X%X-X+X[.[.+XVXSXBX;XL.L.OX%XVXOXOX&X$X@X$X$XXX+XR.[.H.OXOX#X$X@X&XOXOX@X@XoXOX%XXXCXOXOX%XoX$X%X$X$X%X$X%X%X%X%XSX%X%X%XOX%X%XOXOX%X%X%X%X%X%X%X", "(.(.`.`.(._.(.).`.`.`.`.`.`./.(./.).(.~.~.~.~.~.~./.Q.~.(.Q.!.~.~.'.~.^.(.'.`.(.`.`.`.`.`.`.`.`.`.(.`.(.`.)./././././.(././.(.(.(.~.(.(.(.(.`.).(.(.Q.=X~.`.(.`.=X(._.=X*X}.XX=X X X.X.X@X*X}..X.X}. X*X*X}.@X.XXX XoXoX.XoX@X}.@X@X#X#X$X#X#X$X%XCX&XVXVX%X-X%X%XVXSXSXSXSXVXVX-X%XBXDXCXSXOXVX%X-X-XVX%X-XOX%X%X%X$X&X$X#XOX#X&X&X$X$X$X$X#X#X$X@X#X#X#X$X#X#X#X#X$X%X$X%X%X$X%X%X%XOX%X%X%X%X%XSX-XVXSXSXVX-XSX%X%X%X%X%X$X%X$X", "(.(.'.`.'._.(.'.`.`.`.(.(.(._./.(.(./.^.~.~.~.~.~.~.(.~.(.(.~.~.^.^.^.^.`.(.(.`.`.`.`.`.`.}.`.}.`.`.(.`.(.(.(.^./.(.(.(.~.~.(.~.^./.~.(.`./.).~.(.~.(.(.(.`.}.`.(.`.}.`.}.}.=XXX X}. X X}. X}. X.X X XXX@X*X.X X@X.XoX X#X@X#X#X.X$X.X&XOX$X$X-X#X$X-X$XVXOXoXSXVX%XOXSXSXVXVXCXSXSXSXOXSXSX%XVX%XSX%X-X%X%X%XOX%X%X$X$X%X$X$XOX#X&X#X$X$X#X#X$X#X#X#X#X#X#X#X#X#X&X$X$X$X&X%X$X$X%X%X%X%X%X%X-X%X%X%XSX%XSX%X%X%X%X%X%XOX%X%XOX%X", "(.(.(.(.`.`.`.`.`./.`.`.(.`.(.(.`.).(./.~.~.~.~.~.~.~.~.(.W.~.~.^.^.^.'.(.`.(.`.`.`.}.`.`.`.`.`.`.`.(.(././.'.~./.~.~.~.(.(.~.(./.(.(./.'.'.`.`.`.~.~.^.}.'.'.`.(.`.`./.=X}.}.*X.X]. X X}..XXX X X XXX X`.oX X.XoX.XoX@X.X.X@X.X$X.X%X.X&X$XOX&X$X$X%X%X%XDX%X%X&X-XSX%X%XSXDXVXVX-X-X;XSX;XSXVX%X%X%X%XSX%X%X%X%X$X%X&X$X%X$X$X$X$X#X#X$X$X#X#X#X#X#X$X#X#X#X#X#X#X$X$X$XOX$X%X&X$X%X$X%X%XVX%X-XSX%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X", "~.(.(.(.'.`.`.`./.`._.(.(.`.).`.`.`.(.(.~.~.~.~.~.~.~.~./.^.~.^.(.(.`.(.`.(.`.`.`.}.`.}.`.`.`.'.`.(./.).(.(.~.(.~.~.~.~.~.^./.~.~.(.(.(.`.(.~.^.(.(.'.).'.).`.`.}.'.'.}.`.=X}. X X.X}..X.X}.}..X X}. X.X.X.X}.#X.X#X.X$X@X@X@X@XoXoXOX&X%X#X%XOX-X&XCX%XOXBX%XCXCXCX%XVXSXVXVXCXSXVXCXVXOXVXVXVX%X%X%X%X-XVX%X%X%X%X$X%X%X$X&X&X$X$X&X&X$X$X$X#X#X#X#X#X#X#X$X#X#X#X#X$X$X$X$X&X&X$X%X%X%X%X%X-X%X%XSX%X%XSX%X%X%X%X%X%XVXOX%X%X%X", "/.~.).'.(.(.(.(.(.(.`.(./.`.(.`.`.(.(./.~.(.(.~.~.~.~./.~.(.~./.(.(.`.`.(.`.(.`.`.`.`.`.`.`.`.(./.(./.(.(././.~.~.~.~./.~./.~.(.^.(...! ! ! ! ! ! ! U.'.'.=X`.(.'.'.J.....}.=X].`.*X X}.}.*X.X X X.X.X.X.X.XoX.X@X@X#X@X.X#XoX&X+XW E [.#X%XoXG.W W X.OXVXVX%X[. .W } +XDX+XD.G.G.G.G.X.J.VXVX%X%XVXOX%XOX-X%X%XOX%X%X%X&X$X%X$X&X$X$X$X$X$X$X#X#X#X#X#X$X#X#X#X#X#X$X#X&X&X&X$X$X$X%X%X%X%X%XVX%X-X%X%X%X%X%X%X%X%X%X%XVX-X%X%X%X", "^.(.(.(.(.(.(.(.(.(././.(.(.(.`.).(.(.(.).(.'.~.~.~./.~.(.).(._.(.(.`.`.`.`.`.`.}.`.`.`.`.`.(.`.(._.(././.~.(.~.^.^.~.~.~./.~.(.(.(.T t e 8 7 e & & ! '.).).).).'.'...t 7 |. XXX|.}.`.}. X XXX X}.}. XXX.XoX}..X@X@X#X#X.X.X&X+XW 9 7 R.$X$XW & i R t R OXCXJ.7 t T # t +X[.9 7 # # t # W VX-X%X%X%XOXSX%X%X%X%X%X$XOX%X%X&X%X$X&X&X$X&X$X%X$X$X#X#X#X&X#X#X$X$X#X$X#X#X#X$XOX&X%X&X$X%X%XSX%XSX%XSX%X%X%X%X%XSX%X%X%X%X%X%X%X%X%X", "~.^.(.).'.(.'.^.).~./././._.(.(.(./.'.(.~.~.~.^.~.(./.(.(.(./.).).'.'.(.`.'.`.`.`.`.}.`.}.`.`._.(./.(.(.~.(.~.^.~.~.~.~.~.~.(.(.(.~.D.Q } e # i } ! U.!.F.! ! R.`.(...8 7 |.R.J.F.|.R.H.{. X|.R.E.{..X!...D.J.oX@X.X.X.X.X#XD.0 # e e L.&X{.# * +XCXE & G.CXi e L.CXX.X.[.+XD.X.J.| # i G.SX%XOX%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X$X%X%X$X%X$X%X$X$X#X#X#X#X$X$X$X#X#X$X$X#X$X$X&X$X%X%X%X%X%X%X%XSX-X%XSX%XSX%X%X%X%X-X%X%X%XVX%X%X", "~.~.^.^.^.^.^.'.~.~.~.).(.(.(.).`./.(.).^.~.).(.~.).^.(.~.(.(.'.`.(.`.`.'.`.`.`.`.'.`.}.`.`.`.`./.).(.(.^./.^.^.~.~.~.~.~.~./.(.(.(.(.'.{.9 9 R (.(.R.R # = e 9 ..`...r 8 ..9 e R ).E t T XX!.9 & [.G.9 # t # R +X&X.XoX#XOXR t .* 8 [.VX[.* r BX-X..& W +X& e H.E Q L.SX-X%XSXBXR e X.SX-X%X%X%XVX%X%XVX%X%X%X%X%X%X%X%X%X%X%X%X&X%X$X$X%X$X%X$X$X#X#X#X$X#X$X$X#X#X#X#X#X%X$X%X%X%X%X%X%X-XVX%X%XSXSX%X-X-XSX-X%X%XVX-X-XCX-X%X", "^.^.~.^.^.(./.~.(.~.(.(.(.(./.'.(./.~.'.~.^.(.^.(.(.(.(.(.(.(.(.(.`.(.`.}.`.`.'.`.}.`.`.`.`.(.`.(.(././.^.(.~.^.~.(.(.~.~.(././.(.(.(.`.'.& t R './...e 0 ~...e t _...e & t e R _.}.U.r r |.F.e i .X0 & X.}.t * D..X.X.X#X.XR.}.[.& 7 [.%XoXt & X.H.i * E [.& = t R 7 7 [.CXVXVXJ.7 E %XSXOXSX%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%XOX%X%X%X%X%X$X$X#XOX#X$X#X$X$X$X$X$X#X#X$X&X&X&X$X%X%X%X%X%X%XVXVXVX%X%X%XSXSXOXVX%XVX%XVXCX-XVXSX", "^.~.~.~.~./.~./.^./.~.(.).(.(.^.(./.^.~.~.^.~././.(./.(.(.'.(.(._.(.'.`.`.`.`.}.`.`.`.`.`.(.`.(.(.(.).(.(.(.~./.(.~.(.~.~.~./.(.(.(.`.`.~.t 8 R /.(.E & R `.F.7 # U...8 7 7 e R _.*X|.i 8 D.W # X.R.# * R.XXE 8 R @X#X.X#X&X*X#XH.t # [.OXOXJ.t & t R t W L.= & [.SX} e W %X%XSXi t H.VXVX%X%XOX%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%XOX%XOX%X%X$X$X$X$X$X$X$X$X#X#X$X$X$X&X&X$X&X$X&X%X%X%X%XVX%X-XVXVXVX%XVX%XSX%X%X%X%X%XVX%XVXVXVX%X", "^.Q.~.~.~.~.~.~./.~././.(./.~.(.^.'./.^.~.~.(.~.~.(.~./.).(.'.(.(.`.`.`.`.`.'.`.`.(.=X`.`.`.(._.).`.(.).(.~.^./.~.~.Q.~.~.~.~.^.`.`.`.`.~.7 8 E ).`.R t i }.F.# & J...& # R = e J.|.*X..$ .# 7 [.R.* * H.XXE & E &XoX$X.X#X$X%X[.& 9 H.OX-XSX{.L.+XW # } OXt & OX-XS.& W SX%XL.r t OXSXOXSX%X-X&X%X%X%X%X%X%XSXVX-X%XVX%X%X%X%X%X%X%X%X%X%X%X$X$X$X$X$XOX$X$X$X$X$X$XOX$X&X$X%X%X%X%X%X%X%XVX%X%XVXVXVXSX%XSXVXVXVXVX%XVXVXVXVXSX", "~.~.~.~.~.~.~.~.~.~.~.~.~.~.(.)./.'.^./.(.~./.~.~.~.~.~.~.).^.^.(.`.`.`.`.`.`.'.`.`.`.`.`.`.(.(.`./././.~.(./.~./.~.~.~.~.~.~.)./.`.(.`.}.# t E X].F.# 7 D.W & i '.! r & !.! # i }..X|.t & * W |..Xi & .J.= t J.XXoX.X@X#X#X&XL.t e L.VXVXi # } L.t = [.VXT t X.H.i t X.OXVXG.& T %X%X%XVX&XVXVX%X%X%X%X%XVX%X%X%X%X%X%X%XCX%X%X%X%X%X%X&X$X%X$X$X$X%XOX$XOX$X$X$X$X$X$X%X&X$X%X%X%X%X-X%X%XVXVXVX%XOX%XSXVXSXVX%XVXVXVXVXVXVXSX", "~.(.~.~.~.~.~.~.~./.~.~.~.~.~.~.^.(.(.'.'./.~.~.~.~.~.~.~.~.~.(.).`.`.`.`.`.`.`.`.`.`.`.`.(.`.).(.`.(.).(.(.~.(.~.~.Q.~.~.~.~.(.(.`._.`.).9 7 R '.}.).! 0 9 t i J.*X! & t }.!.t # ..].`.Q 7 # E. X|.R.i 9 9 $ ..OXXXOX.X#X.X#X$X[.9 7 [.%XOX[.i & & t L.VX;XoXR # 7 8 ] BXVXSX .t D.%X%X%XVXOXOXOXOX%XOX-XVX%X%X%XVX%X%X-X%X-X-X%X%XOX%X%X%X&X%X%X%X$X$X$X$X$X#X$X#XOX&X%X$X%X%X%X%X%X%XVX%X%X%XOXVXVXVXSX%XVX%XVXSXVXSXSXSXSXVXSX", "~.~.~./.~.~.~.~.~.~.~.~.~.(.(.^.^.'./.^.^.~.~.~./.~.~.~.~.~.~.'.(.(.`.`.`.`.`.`.'.'.(.(./.(._.`.(.`./.(././.~./.~.~.~.~.~.~.~.'./.`.`.(.}.{.XX{.`.`._._.!.J.H.|._.(.(.XX{.=X}. X}.}.|.|.} & t |.*X.X.X.X[.R.{..X XXX$XXXoX$X&X#X%X&X%X$X$X-X%XOX{.L.OXOXSXXXSXOX{.[.oXBX%X-X#XVXVX%X%X%X%X%X%X&XVXOX%X%X%XVXSX%X%X%X%XVXCX-XSX%X-X%X%X%XOX%X$X$X$X$X%X$X$X$X&XOXOX$X#X$X$X%X%X%X%X%X%X%X-X%XVX-XVX%XSXOXVXVXSXSXVXVXSXSXSXSXSXCXSX", "^.(.(.~.(././.~.~.~.~.~./.~.~./.^./.'.(.~./.~.~.~.~.~.~.~.~.~./.`.`.`.`.`.`.}.`.`.(.(.(.(.(.(.(./.(./._./././.~.~.~.~./.~.(.~.~./.`./.*X`.(._.`.`.}.`.}._.`.].`.(.}.`.`.).`.`. X}._...9 $ # ..#X XXX.XoX X.X.X.XoX#X@XoX@X#X%X$X&X%X$XCX&XCXOX%X;X%X%XSXOX-X%XSXVX%XSXOX-X-X%X%X$X$X%X%X&X%XVX%X%X-XVX%X%X-X%X%X%X%X%X-X%X%X%X-XSX-X%X%X%X%X&X%X%X%X$X%X%X$X$X%X$X%X$X&X%X$X%X%X%X%X%X%XVXVX%XVXVXVXSX-XSXSXSXSXSXSXSXSXSXSXDXDXSX", "^.^.~.(./.~.(.~.~.~.~.~././.(.'.(.(.(.^.~.~.~.~.~.~.).~.~.~.~.'./.`.'.'.`.`.`.`.`.(.).(._.(.`.(.`.(./.(.^.(.~./.~.~.~.~.(.~.^.(.(.`.].`.`.`.=X`.`.`. X`.}.`.}.`.}.}.`.`. X].}.`. X_.!.D.X.J.}..X.XXX*X X.X.X.X@X#X.X#X@X#XOXoX$XoX-X%X$X-X$X&X&X%X$X%X&XOX&X%XOXCX%XSX%X-XVXCXCX%X%X$X%X%X%X%X%X-X%XSX%X%X-XSX%X%X%X%X%X-X%X%X%X%XCX%X%X%X%X$X%X%X$X&X$X%X$X$X%X&X&X$X%X$XOX%XOX%X%X%X%X%X%XSX%XSXSX%XSX%XSXSXSXSX-XSXDXSXDXSXSXSX", "^.(.^.~.~./.~.~.~.~.~.~.~.(./.~.~.~.~.).).^.~.~.~.~.~.~.~./.(./.(.(.`._.`.`.`.'.).(.(./.(././.`./._.(.(.^./.~.~.~.~.~.^.~.(.(.(.`.}.`.}.`.}.}.`.`. X'.}.`.=X`.=X`.`. X}.}.}.}.}.`.}._. X X}.}.}.*X.X X.X.X.X.X.X.XoXoX.X#X$X&X&X%X%X%X%X$X%X%X$X%X$X&X&X%X%X%X%X&X%X-X%X%XSX-X%X%X%X%X%X%X&X%X%XOX-XOXSXVXVXOXVXVXSXVXSX%XCXCX%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X$X%X$X%X$XOX%X%X$X%X%XVX%X%XSXSX%X%XSXSXSXSXSXSXSXSXSXDXSXSXSXSXSXSX", "~.(.(.~.~./.~.~.~.~.~.~.~.~./.~.~.(.~.(.(.(.~.~.~.~.~.~.~./././.(.(.(.(./.(.(.(.`./.(.(./.(.(.).(.`.(./.(.~./.~.~.~.^.^.(.).(.'.`.}.`.`.}.`.}.`.`.`.`.`.}.}.}.}.'.`. X`.}.=X}.}. X}. X`.}.}.}..X X.X.X X.X.X.X.X.XoXoX#X#X$X$X$X%X$X%X%X%X%X$X$X$X%X&X&X$XOX%X%X%X%XVX%X%X%X%X%X$X$X%X&X%X%X%X%X%XSXOXVXVXVXVXVX%XVX%XVX-X%XCX%X%X%X%X%X%X%X%X&X%X$X%X$X%X$X%X%X%XOX$X%X%X%X%X%X-X%XVX%X%XVX%X%X%XSXVXSXSXSXSXSXSXSXSXSXSXSXSXVXSX", "(.~.~.(././.~.~.~.~.~.~.~.(.~.(./.~.(.~.~.~.~.~.~.~.~./.~.~.~./.).(.(.(.(.).^.(.(.(./.`.(.(.(.`.`.`.`.(.(.(.~././.~.~./.(.(.`.`.`.`. X X}.}.}.}. X X`. X`.=X}.=X}.}.`.`.}.=X`..X}.}.`. X}.}..X}..X X X.X.X.XXX.X.X.XoX#X$X#X#XOX$X%X$X$X%X$X%X&X&X$X&X$X&X$X%X%X%XVX%X%X%X%X%X%X%X%X%X$X&X%X%X%X%XVXVX%XOXVXVXOXVX%XVXVX%XCX%X%XVX%X%X%X%X%X%X%X%X%X%X&X%X%X%X%X%X$X%X%X%XOX%XSXOX-XVX%XVXVX-XSXVXVX%XSX%XSXSX%XSXSXSXSXVXDXSXDXSX", "~.~.~.~.~.~.~.~.~.~.~.~.~.~./.~.~.(.~./.~.~.~.~.~.~.~.~.~.~.~.(.(.'.~.~.)./.~.)./.^.(.(.(.(.(.`.(.`.`.(.`.(.(./.~.~././.(.(.'._._.`. X`.*X`. X`.`. X}.}.}.}.}.}.}.}.`.}.}.}.}.}.}. X}.}.}.}..X.X X.X.X X.X.X.X.X.XoX#XoX#X#X$X$X$X$X$X$X$X$X$X$X$XOX$X$X&X$X$X%X%X-X%X-XVX%X%X$X%X$X%XOX%X$X%X%X%X%XVXVXVXVXVX%XVX%XVX%XVX%XVX%XVXVX%X%X%X%X%XVX%XOX%X%X%X%X%X%X%X%X%X%X%X%X%XOX%X%XVX%X%X%XVXVXVX%XSX%XVXSXVXSX-XSXSXSXSXSXSXSXDX", "~.~.~.~.~.~.~.~.~.~./.~.~./.~.^.(.~.(.~.~.~.(.~./.~.~.~.~.(.~././.~.~.~.~.~.~.~./.~.(.(.(.(.`.`./.(.(.`.(.(././.(./.'.`._.'.`.`.}._.`. X}.`. X}.}.`.}.=X}.}.}.}.}.}. X*X}.}.}. X X X}. X}..X}.}. X X X X X.X.X.X.X.X.XoX#X#X#X#X$XOX$X$X$X$X$X#X$X$X$X$X%X&X%X%X%X%X%X%X%X%X%X%X%X%X$X&XOX%X%X-XSXOXOXSX%X%XVXVXVXVXVXVXVXVXVX%X%XVX%XVX%X%X-X%X%X%X%X%X%X%XSX%X%X%X%X%XVX-XSXOXVXVX%XVXSXVXVX%XVXSXVXVXVX%XVXVXSXSXSXSXSXVXSXSXSX", "~.Q.W.~.~.!.~.~.~.~.~.~.~.~./.~.~.~.~.~.~.~.~.~.~.~.~.~.W./.W.~.~.~.~.~.W.~.~.~.~./.).(.(.'.(.(.`.(.`.`._.`.).(.(.)._.`.`.`. X`.}.}.}.`.}.}.}.`. X`. X}.=X}. X}.}..X X X X}. X X X}. X X}.}..X}. X X X X X.X.X.X.XXX#X@X#X.X#X#X#X#XoX$XOX$X#X&XOX$X$X$X$XOX%X$X%X%X%X%X%X%X%X%X$X$XOX%XOX%X%X%X%XVXOXVXVXVX%XSX%XVXVXVX%X%XVXVXCX%XVX%X%XSX%X%X%X%X-X%X%X%X%X%X-X%XSX%X%X%XVXVXSXVX%XVX%XSXVXVXVX%XVXVX%XSXSXSX%XSX%XSXVXSXSXSXSX", "~.~.~.~.~.~.~.~.~.~.~.~./.~.(.~.~.~.~.~.~.~.~.~.~.~.~.~.(./././.~.~.~.~.~.~.~.~.~.~.~.(.~.'.(.^./.(.).(.(.(.(.`.`.`.'.`.}.`.`. X`. X}.}. X X.X}.}.}.}.}. X X XXX.X}..X.X X X X X X X X*X.X}.}. X X X X X.X X X.X@X#X#X.X#X#X#XoX#X#X$X#X$X#X#X&X#X$X$X$X$X$X$X%X&X%X%X%X%X%X$X&X$X$X&X%X%X%X-X%XVX-XSXSXOXVXVXVXVX%XVX%XVXVXVX%X%XVX%XVXSX%XSXSX%XSX%XSXSX%X%XSXVX%X%X%XVXVXVXVXSXVXSXSXSXVXSXVXVXSX%XSX%XSX%XSXSXSXSXSXVXSXSXSXSX", "~.~.Q.~.~.Q.~.~.~.~.~.~.(./.~.~.~.~.~.~.~.~.~.~.~.~.Q.~.~.~.~.~.~.~.~.~.W.~.~.~.Q.(.^.(.~.^.^.^.(.(.(.(./././.(.`.(.).`.`.`. X}.}.}..X}.}..X}.}. X}.`. X}..X}..X X.X X.X X.X}..X X.X X X X X X}. X X.X X XXX.X X.X.XoX#X@X@XoX#X#X#X#X#X#X#X#X#X$X$X$X$X$X$X$X&X%X$X%X%X%X%X%X$X%X$X$X&X%X%X%X%XVX%XVXVX%XVX%XSXVX%X-XCXCXVX%X-XCX-X%XVXVX%XVXVXVX-XVXVX-XSX%X%X-X%XVX%X%XVXVXVXVXSXVXSXSXSXVXVXSXVXVXVXVXSXSXVXSXSXSX%XSXSXSXSXSX", "~.~.~.~.~.~.(.~.~.~./.~.~.~.~.^.~.~.~.Q.~.~.^.^.~./.~.~.~.~.~.~./.W.~.~.~.~.~.~.^.^.~.~.(.^.~.~./.(._.).(.`.`.`._.`.}.`.}.}.}.}.}.}.}..X@X}.@X}. X X X|.}. X X X.X X.X.X.X.X X.X.X X X.X X X X}. X X X.X X*X.X.X@X@X.XoXoXoX.XoX.X#X#X#X.XoX#X#X$X$X$X$X$X&X&X&X%X%XOX%X%X$XOX%XOX%X%X$XOX%XSX-X-X%XVX%XVXVXVXSXVXVX-X%X%X-X%X%X-XCXVXVXVXVXVXVXSXSXVXVXSX%XVX%XVXVXVXVXVXVXSXVXSXSXSXSXSXSXSXSXSXSXSXVXVXVXSX%X-XVXSXSXSXSX%XSXSX", "Q.~.~.Q.~.~.~.~.~.~./.^.(.^.~.~.~.Q.~.~.~.^.^.~.~.(.~.~.~.~.~.~.~.~.~.~.~.~.~.Q.~.~.~.^.^.~.~.(.(.(./.(.'.`.`.`.`.`.}.}.}.}. X}..X}..X}.}..X}..X.X}.}..X X.X.X.X.X.X.X.X.X.X.X.X X X X X XXX}.XX X X X X.X.X.X.X.X@X.XoXoXoX#X.X#X#X#X#X#X#XoX#X$X#X$X$X$X%X$X$X$X%X%X$X%X$X%XOX$X%X%X%X%X%X%X%XVXCX%XVX%XVXVX%X%XVXCX-X%X-XVXCX%X-XCXVX-XSXVXVXVXSXVXSXVXSXVXSXVXVX%XSXSXVXVXSXVXSXSXSXSXVXSXSXSXSXSXVXSX%XSXSXVXSXSXVX%XSXSXSXSX", "~.~.~.~.~.(.~.(././.(.~.~.~.~.~.~.~.~.Q.~.^.^.Q.(.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.^.~.~.~.(.(.~.^.(.`._.'.`.`._.`.`.`.}.=X}.}. X}.}. X.X.X}..X}.}. X.X X X.X.X.X.X.X.X.X.X.X.X X X XXX X X X X X X X X X.X.X.X.X.X.X.X.X.X.X.X.X@X.X.X.X#X.XoXoX#X#X$X$X$X$X&X&X$X%XOX%X%X%X$X%X%XOX$X%X%X%XSX%X%XVXVXVXVXVXVXVX%XVX-X%XSX%X%XVXCX-X-XSXVXVXVXSXVXVXVXVXSX%XSX%XSXSXSXSXSXSXSXSXSXSXVXSXSXDXSXSXCXSXVXSXVXSXSXVXVXVXSX%XSXSXSXSXSX" }; micropolis-activity/images/tiles-111.xpm0000664000076400007640000000520310724145723020446 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "48 48 6 1", " c black", ". c red", "X c #FFFF7F7F0000", "o c yellow", "O c gray100", "+ c None", /* pixels */ "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++XXOXX+++++++++", "+++++++++++++++++++++++++++++++XXXOXXXXX++++++++", "++++++++++++++++++++++++++++++XXOXXXXXXXX+++++++", "++++++++++++++++++OXX...+++++XXXXXX.X.X.XX++++++", "+++++++++++++++++OXXXX.X.+++XXOXXXX....X.XX+++++", "+++++++++++++++++XXXX.X.+++XXXXXXX..+++.X.X+++++", "+++++++++++++++++++XXX.+++XXOXXXX..+++++.X..++++", "++++++++++++++++++XXX..++XXOXXXX..+++++++...++++", "++++++++++++++++++OX.X.+XXXXXXX..+++++++++...+++", "+++++++++++++++++XXXX.XXXOXXXX...+++++++++...+++", "+++++++++++++++++OXXXXXXOXXXX...+++++++++++..+++", "+++++++++++++++++XXXXXXXXXXX...+++++++++++++.+++", "+++++++++++++++++XXXXXOXXXX....+++++++++++++.+++", "++++++++++++++++XXXXXXXXXXXX...+++++++++++++++++", "+++++++++++X.+++XXXXOXXXXXXXX..+++++++++++++++++", "++++++++++XX.+++XXXXXXXXXXXX.X..++++++++++++++++", "+++++++++OXX.+++XXOXXXXXXXX.X.X..+++++++++++++++", "++++++++OXXX.++.XOXXXXXXXX.X.X...+++++++++++++++", "++++++++XXXX..XXXXXXXXXXX.X.X.X..+++++++++++++++", "++++++++++XXX..XXXXXXXXX.X...X..++++++++++++++++", "++++++++++OXXXXOXXXXXXX.X...X...++++++++++++++++", "++++++++++XXXXXXXXXXXX.X...X...+++++++++++++++++", "++++++++++OXXXXXXXXXX.X..+....++++++++++++++++++", "++++++++++XXXXXXXXXX.X..+++..+++++++++++++++++++", "+++++++++++XXXXXXXX.X..+++++++++++++++++++++++++", "+++++++++++XXXXXXX.X..++++++++++++++++++++++++++", "+++++++++++XXXXXX.X......+++++++++++++++++++++++", "+++++++++++XXXXX.X.X.X.X.+++++++++++++++++++++++", "++++++++++XXXXXXX.X.X.X..+++++++++++++++++++++++", "++++++++++XXXXXX.X...X...+++++++++++++++++++++++", "+++++++++XXXXXX.X...X...++++++++++++++++++++++++", "++++++++XXXXXX.X.. X...+++++++++++++++++++++++++", "+++++++X..XXX.X..+X....+++++++++++++++++++++++++", "+++++++Xo.XX.o..++....++++++++++++++++++++++++++", "+++++++XoXX.o..++.....++++++++++++++++++++++++++", "+++++++XXX.X..++++...+++++++++++++++++++++++++++", "++++++++....++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++" }; micropolis-activity/images/icfirehi.xpm0000664000076400007640000000311010724145723020603 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "34 34 13 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #00FF00", "c c #5D5D5D", "d c #007F00", "e c #BF7900", "f c #FF0000", "g c #FFFFFF", "h c #FFFF00", "i c #7F7F00", "j c #FF7700", "k c #BFBFBF", "l c #0000FF", /* pixels */ "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", "kffbbbbffffbbbbffffbbbbffffbbbbffc", "kffbbbbffffbbbbffffbbbbffffbbbbffc", "kffccccccccccccccccccccccccccccffc", "kffcggggggggggggggggggggggggggkffc", "kbbcgbbdbbbbbdbbbbbbbbdbbbbbdgkbbc", "kbbcgbdbbdbbbbbbbdbbabbbbbbbbgkbbc", "kbbcgbbdbbffffaffffaffaaaaabbgkbbc", "kbbcgbbdbf```a````a``fjjallbbgkbbc", "kffcgdbbffccaccccacccfcaaaabbgkffc", "kffcgbbfefcacccccccccfc`aeebbgkffc", "kffcgbbfffccffffffffffffaaabbgkffc", "kffcgbbffecfcccccccccccfa`aaagkffc", "kbbcgbbefffeaaaaaaaaaacfaaaaagkbbc", "kbbcgbbfefffahhhhahhaacfcaabbgkbbc", "kbbcgbbfffefchccachchacfcaabbgkbbc", "kbbcgdbeffffchhhachchacfiiiiigkbbc", "kffcgbbfffefchcaachchacf````igkffc", "kffcgbbfeffechaaachchacfa`caigkffc", "kffcgbbffeffchaaachhaacfcca`igkffc", "kffcgbbeffffccaaacccaacfcac`igkffc", "kbbcgbbffeffaaaaaaaaaacfccc`fgkbbc", "kbbcgdbfffeffffffffffff`a`a`fgkbbc", "kbbcgbbfefff````f````fccccc`fgkbbc", "kbbcgbbffff`cccf`cccfffffffffgkbbc", "kffcgdbeff`cccf`cccf`f`f`f`fbgkffc", "kffcgbbff`eeef`eeefffff`fffdbgkffc", "kffcgbbbddcccddcccddddddddddbgkffc", "kffcgbbdbdcccddcccdddddbbbdbbgkffc", "kbbcggggggggggggggggggggggggggkbbc", "kbbckkkkkkkkkkkkkkkkkkkkkkkkkkkbbc", "kbbffffbbbbffffbbbbffffbbbbffffbbc", "kbbffffbbbbffffbbbbffffbbbbffffbbc", "kccccccccccccccccccccccccccccccccc" }; micropolis-activity/images/tiles-52.xpm0000664000076400007640000000421110724145723020370 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "42 42 9 1", " c black", ". c #7F7F7F7F0000", "X c #5D5D5D5D5D5D", "o c gray50", "O c blue", "+ c #FFFF77770000", "@ c yellow", "# c gray75", "$ c gray100", /* pixels */ "##########################################", "#ooOOOOooooOOOOooooOOOOooooOOOOooooOOOOooX", "#ooOOOOooooOOOOooooOOOOooooOOOOooooOOOOooX", "#ooXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooX", "#ooX #ooX", "#OOX $ $ $ $ $ $ $ $ $ $ ooo $ $ $ $ #OOX", "#OOX $ $ $ $ $ $ $ $ $ $o#o$ $ $ $ $ #OOX", "#OOX $ $oooooooooooooo ooooo $ $ $ $ #OOX", "#OOX $ o#o#o@ #o#o#o X o###oooX$ $ $ #OOX", "#ooX oooooooo###ooo### o#ooX#ooo $ $ #ooX", "#ooX #o#o#o #ooXoo#ooX@##ooXXo#o$ $ $ #ooX", "#ooX oooooo##ooXX##ooXX##ooXXooX $ $ #ooX", "#ooX $ $ $#X################o#o$ $ $ #ooX", "#OOX $ $ $ ###oooooooooooooo#ooo $ $ #OOX", "#OOX $ $###X#oooooo#Ooooooo#o#o$ $ $ #OOX", "#OOX $ $#XXX#Xo#Xoo#O#Ooo#Xo#Xoo $ $ #OOX", "#OOX $##XXo##oooooo#Ooooooo#X#o$ $ $ #OOX", "#ooX $ ##XXoX#oooooo#Ooooooo#Xoo $ $ #ooX", "#ooX $##XXo##oooooo#Ooooooo#X#o$ $ $ #ooX", "#ooX $ #oooo##o#Xo#O#O#Oo#Xo#Xoo $ $ #ooX", "#ooX $oo ooX#ooooo#OOOooooo#X#oooooo #ooX", "#OOX $ $ $o##################Xooo#oo# #OOX", "#OOX $ $ #X#oooooooooooooooXX#oooooo #OOX", "#OOX $ $ $###XXXXXXXXXXXXXXoXooo $ $ #OOX", "#OOX $ $ #X#XXXXXXXXXXXXXXoXo#o$ $ $ #OOX", "#ooX $ $ $X#oooooooooooooooXXooo $ $ #ooX", "#ooX $ $ #ooXXooXXooXXooo.XXo#o$ $ $ #ooX", "#ooX $ $ $ooXXoXXXooXXooo..XXooo $ $ #ooX", "#ooX $ $ $XXXXXXXXXXXXXXXXXXo#o$ $ $ #ooX", "#OOX $ $ $ $ $ oo#X#Xooooo#+oooo $ $ #OOX", "#OOX $ $ $ $ $ooo#o#o#o#o#X#o#o$ $ $ #OOX", "#OOX $ $ $ $ $ ooooooooooo#+oooo $ $ #OOX", "#OOX $ $ $ $ $ $o#oo $ $ $ $ $ $ $ $ #OOX", "#ooX $ $ $ oooooooooo$ $ $ $ $ $ $ $ #ooX", "#ooX $ $ $o#o#o#o#oo $ $ $ $ $ $ $ $ #ooX", "#ooX $ $ $ oooooooooo$ $ $ $ $ $ $ $ #ooX", "#ooX $ $ $X#o$ $ $ $ $ $ $ $ $ $ $ $ #ooX", "#OOX #OOX", "#OOX###################################OOX", "#OOooooOOOOooooOOOOooooOOOOooooOOOOooooOOX", "#OOooooOOOOooooOOOOooooOOOOooooOOOOooooOOX", "#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }; micropolis-activity/images/obj3-7.xpm0000664000076400007640000000525310724145723020034 0ustar simcitysimcity/* XPM */ static char * obj3_7_xpm[] = { "48 48 9 1", " c None", ". c #3F3F3F3F3F3F", "X c #FFFFFFFFFFFF", "o c #7F7F7F7F7F7F", "O c #000000000000", "+ c #BFBFBFBFBFBF", "@ c #66666666E6E6", "# c #FFFF00000000", "$ c #FFFFFFFF0000", " ", " ", " ", " ... ", " ..X.o ", " .XOXXo ", " o.XXXo ", " o+.XXXo ", " o++XXXo ", " o@+XXXo X# ", " oO+XXXo +XXXXX ", " o@+XXXo .o+XXXXXXX ", " oO+XXXo ..o+XXXXXXXo ", " o@+XXXo ..o+XXXXXXXXX+ ", " oO+XXXooXXXXXXXXXXX+ ", " o@+XXXoXXXXXXXXXXo ", " oO+XXXoXXXXXXXXX ", " o@+XXXoXXXXXXo ", " .+oO+XXXoXXXX+ ", " .X+o@+XXXoXX+ ", " oXX+oO+XXXoo ", " .+XXX+o@+XXXo ", " .XXXXX+oO+XXXo ", " oXXXXXX+o@+XXXo ", " .+XXXXXXXooO+XXXo X ", " oXXXXXXX+ o@+XXXoX# ", " +XXXXXX+ o@+XXXoXX ", " +XXXXXXo o@+XXXoXX ", " XXXXXXX XX+XXXoX ", " XXXXXo o#X+XXXo +++ ", " XXXXX+ oXX+XXoo ++XXX+ ", " #XXX+ oX .XX++++XXXX+ ", " XXo ..++XXXXX. ", " X .+XoXXX. ", " +XXoX. ", " +XXXX$ ", " +XXX. ", " +XXX. ", " +XX. ", " +X+ ", " + ", " ", " ", " ", " ", " ", " ", " "}; micropolis-activity/images/tiles-105.xpm0000664000076400007640000000520310724145723020451 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "48 48 6 1", " c black", ". c red", "X c #FFFF7F7F0000", "o c yellow", "O c gray100", "+ c None", /* pixels */ "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "+++++++++++++++++++++++++++++++++++++XXXX+++++++", "+++++++++++++++++++++++++++++++++++XXXXXXX++++++", "++++++++++++++++++++++++++++++++++XoXXXXXX++++++", "+++++++++++++++++++++++++++++++++XooXXoo.X++++++", "++++++++++++++++++++++++++++++++XXXXXXo.X.++++++", "+++++++++++++++++++++++++++++++XOXXXXX.X.+++++++", "++++++++++++++++++++++++++++++XXXXXXXXXX.+++++++", "+++++++++++++++++++++++++++++XOXXXXXXXX.++++++++", "+++++++++++++++++++++++++++XXOXXXXXXXX..++++++++", "++++++++++++++++++++++++XXXXXXXXXXXXX..+++++++++", "++++++++++++++++++++XXXXXXXOXXXXXXXX.X+++X++++++", "++++++++++++++++++OXXXXOXXXXXXXXXXX.X+++X...++++", "+++++++++++++++++XXXXOXXXXXXXXXXXX.X.X.X.X.+++++", "++++++++++++++++OXXX.XXXOXXXXXXXX.X.X.X.X..+++++", "++++++++++++++++X.X.X.XXXXXXXXXX...X.X....++++++", "++++++++++++++++.... XOXXXXXXXX.....X....+++++++", "++++++++++++++++++++XOXXXXXXXX.........+++++++++", "+++++++++++++++++++XXXXXXXXXX....++...++++++++++", "+++++++++++++++++XXXXXXXXXXX.X..++++++++++++++++", "+++++++++++++++XXXXXXXXXXXX.X.X..+++++++++++++++", "++++++++++OX+XXXXOXXXXXXXX.X.X.X.+++++++++++++++", "+++++++++XXXXXXXXXXXXXXXX.X.X.X.X+++++++++++++++", "+++++++++OXXXOOXXXXXXXXX.X.X.X.X..++++++++++++++", "++++++++XOXOXXXXXXXXXXX.X...X.X...++++++++++++++", "++++++++OXXXXXXXXXXXXX.X.....X....++++++++++++++", "++++++++XXX.X.XXXXXXX.X..........+++++++++++++++", "++++++++.X.X...XXXXX.X..........++++++++++++++++", "+++++++++...++XXXXX.X....++...++++++++++++++++++", "+++++++++++++XXXXX.X...+++++++++++++++++++++++++", "+++++++++++XXXXXX.X...++++++++++++++++++++++++++", "+++++XXXXXXXXXXX.X..++++++++++++++++++++++++++++", "++++XXXXXXXXXXX.X..+++++++++++++++++++++++++++++", "+++XXXXX.........+++++++++++++++++++++++++++++++", "+++XXXX+++....++++++++++++++++++++++++++++++++++", "+++.XXX+++++++++++++++++++++++++++++++++++++++++", "++++..XX++++++++++++++++++++++++++++++++++++++++", "++++++.XX+++++++++++++++++++++++++++++++++++++++", "+++++++..X++++++++++++++++++++++++++++++++++++++", "+++++++++.++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++" }; micropolis-activity/images/checkbox3checked.xpm0000664000076400007640000007456710724145723022231 0ustar simcitysimcity/* XPM */ static char *checkbox_checked[] = { /* columns rows colors chars-per-pixel */ "190 70 256 2", " c #0C111B", ". c #0D1522", "X c #0C1C2B", "o c #0D1826", "O c #0F1C33", "+ c #131924", "@ c #121B2B", "# c #161B29", "$ c #101D34", "% c #16212B", "& c #172639", "* c #092336", "= c #222C3A", "- c #25323C", "; c #0D2944", ": c #142B43", "> c #142A49", ", c #182A43", "< c #192E4C", "1 c #142542", "2 c #1A2E52", "3 c #172F51", "4 c #1D304D", "5 c #17314C", "6 c #1A3253", "7 c #1C355B", "8 c #1C395C", "9 c #163656", "0 c #1D3C63", "q c #1D3D6B", "w c #153F6F", "e c #1E3F74", "r c #223546", "t c #203456", "y c #213A5D", "u c #233A57", "i c #313D4E", "p c #223D64", "a c #243D6B", "s c #293E6C", "d c #263A63", "f c #283F71", "g c #253D70", "h c #1C405B", "j c #1D4265", "k c #1C436B", "l c #16436B", "z c #1C4473", "x c #1C4975", "c c #3C4952", "v c #364657", "b c #324855", "n c #224165", "m c #23426B", "M c #23496B", "N c #2B4463", "B c #2A426B", "V c #2D4B6D", "C c #2B4865", "Z c #234271", "A c #2A4071", "S c #2C4A71", "D c #284778", "F c #265278", "G c #334B6A", "H c #334C74", "J c #39557B", "K c #3D597C", "L c #355277", "P c #2F5067", "I c #434B56", "U c #44535E", "Y c #47414F", "T c #4A5C66", "R c #425A7C", "E c #4C616C", "W c #4A6477", "Q c #50606E", "! c #516271", "~ c #556976", "^ c #5A6B79", "/ c #254E82", "( c #255788", ") c #255989", "_ c #2B5585", "` c #2B5A85", "' c #2B5A8A", "] c #265886", "[ c #315A86", "{ c #325B8B", "} c #3E5B82", "| c #36558B", " . c #2F5792", ".. c #28638F", "X. c #2B6C99", "o. c #2D6694", "O. c #346998", "+. c #32709C", "@. c #376E8E", "#. c #3473A2", "$. c #3C74A2", "%. c #377BA9", "&. c #3A7DB1", "*. c #2A74A6", "=. c #435D83", "-. c #4A6485", ";. c #4D6A8B", ":. c #476787", ">. c #526A8B", ",. c #526D91", "<. c #5C7182", "1. c #5A7594", "2. c #466D91", "3. c #437CAA", "4. c #647686", "5. c #627886", "6. c #63798B", "7. c #627B9B", "8. c #647995", "9. c #727F9F", "0. c #3981AD", "q. c #3A82B3", "w. c #3C8AB5", "e. c #3787B9", "r. c #2F87BC", "t. c #2B8ECA", "y. c #2A8FC7", "u. c #2D91CC", "i. c #3494CD", "p. c #359ACC", "a. c #3896CE", "s. c #3B99CE", "d. c #3C94C5", "f. c #3695D0", "g. c #3A96D0", "h. c #3C99D0", "j. c #389AD4", "k. c #3DA3D5", "l. c #4284AB", "z. c #4A8ABB", "x. c #4487B6", "c. c #508BB5", "v. c #538BAE", "b. c #678397", "n. c #70869A", "m. c #6E8896", "M. c #6A85A3", "N. c #6D91AA", "B. c #7285A2", "V. c #768CA8", "C. c #7592A2", "Z. c #7993A4", "A. c #7791AC", "S. c #7797B3", "D. c #7FA4BB", "F. c #439BCC", "G. c #4B9CCC", "H. c #4697C6", "J. c #439CD2", "K. c #439BD9", "L. c #489ED3", "P. c #489BD9", "I. c #539AC8", "U. c #529FD7", "Y. c #44A1CD", "T. c #4BA1CC", "R. c #46A0C3", "E. c #45A0D3", "W. c #4BA1D4", "Q. c #4CA3D8", "!. c #47A8D9", "~. c #54A2CC", "^. c #5BA3CD", "/. c #52A4D6", "(. c #54A6D8", "). c #56A8D6", "_. c #55A8D8", "`. c #59A4D4", "'. c #5BA4DA", "]. c #5AA9D6", "[. c #5BAAD9", "{. c #53B0D2", "}. c #54A6E0", "|. c #609ACC", " X c #6CA6CF", ".X c #62ADDB", "XX c #67AAD7", "oX c #66B0DC", "OX c #6BB2DD", "+X c #77AAD1", "@X c #70B5DE", "#X c #74B8DE", "$X c #6DB4E0", "%X c #72B6E0", "&X c #75B9E1", "*X c #78B9E1", "=X c #8393AB", "-X c #889AAC", ";X c #8899B2", ":X c #919DB3", ">X c #949CAE", ",X c #89A4B8", "X1.j 6 F a.h.a.a.a.i.f.a.i.i.i.i.i.i.i.i.u.i.i.u.i.i.i.i.i.i.i.i.f.f.f.a.a.i.a.a.a.s.f.a.s.s.h.h.h.J.h.J.h.J.J.J.J.J.J.h.J.J.h.J.J.J.L.L.L.E.P.W.E.E.T.W.W.W.W./.W./.W./././.).).).[._.[.[.[.[.oX[.[.$X[..X.X.X.X.X.X[..X[..X.X.X[.[..X.X.X[.[.].]..X[.{..X[..X.XoXoX.X.XoXoXoX", "/././././././././././.W././.U.W.Q.L.L.Q.Q.W.W.W././.Q././.`.(.(.).[._.`._._.(./././././.W./.W.W.W.W./.4X8XX=X1.p 2 < F d.h.a.a.i.i.g.i.i.i.i.i.i.t.f.i.u.u.u.i.u.i.i.i.u.i.i.i.i.i.f.a.a.a.a.i.a.f.s.j.g.h.p.h.J.J.h.K.J.g.J.g.J.h.J.J.h.F.J.J.J.J.L.J.W.W.W.E.W.L.W.W.W.W.W.W././././.(.(._.`.)._.[.[.[.[.[.[..X.X[.OX.XoX.XoX.X.X[.oX.XoX.X.X[.[.].[.[.[.].]..X[..X.X.X.X.X.X.XoX.XoXoXoXoX", "/./.`./.`./././././././.Q./.(.W.W./.W./././.T././././.(.)._._._.].[.[.]._.'._.(.(.(./././././.W.L. X9X1XA.7.=.7 4 : M d.s.s.a.i.i.i.u.i.i.i.i.i.f.i.i.u.i.u.f.u.u.i.i.i.u.u.i.i.a.i.f.f.a.i.i.a.a.g.a.h.h.h.h.J.J.J.h.J.F.J.F.a.J.J.J.J.J.J.J.J.J.E.E.P.E.L.P.W.W.P.W.W.W.W././././.(.(.(./.).)._.)._.]..X[..X.X.X.X.X.X.XoXoX.X.X.X.XoX.X[.[..X.X.X].[..X].[..X[.[.[.$X[..X.XoXoX.XoXoXoXoX", "/././.`./././.T./././././././.W./.W.W.W./.W./././.Q.(.`.).[.[.[.[.[.[.]..X]._.]._././.(./.(./.Q.^.9X1X;XM.;.S 7 4 : j d.s.a.a.a.i.i.i.i.i.i.t.i.f.i.i.i.i.i.i.i.i.i.i.i.i.i.i.f.f.a.a.f.a.a.a.a.a.g.a.h.h.a.h.h.h.h.J.J.a.J.J.J.J.F.J.h.J.J.J.j.J.E.J.E.P.W.E.W.E.W.W.W.W./.W./././././.(.(.(.(._.).[.].].[.[.[..X.X.XOXoX.XoXoXoXoXoX.X.XoX.X.X.X[..X].].[.]..X[.oX[.[..X.X.X.X.X.XoXoXoXoX", "/././././.(./././././.(././././.W.T.Q./.Q././././.(.(.(.).[.[.[.[.[.[.[.[.[._.[.(.(.(.`.(.(.W.T.5X1X:XB.>.K a 8 5 : h w.s.p.i.i.i.u.f.i.i.i.u.i.i.i.i.i.i.u.i.i.i.i.i.i.i.i.i.f.f.a.f.f.f.a.f.i.a.h.g.g.h.h.h.J.J.h.F.J.g.J.J.J.h.J.J.J.J.J.J.J.J.E.E.L.W.P.W.W.Q.L.W.W.W.W./.W.W./././.(.).(.(.[.).].].[..X.X.XOX.XXX.XOX.XoX.X.X.X.XoX.X.X[.[.[..X{..X.X[.[..X[.[.[.[.[..X.XOXOXOX.XOXOXoX", "(.(.(.(.(./././././.(././././././.U./.W./.Q.W././.(.).(._.[.]..X.X[..X.X[.[.[.[._._.(.(././.W. X4X:XA.8.R H 0 0 9 : 5 r.F.p.f.i.u.i.i.u.d.u.i.i.f.i.i.i.i.i.i.i.i.i.u.i.i.i.i.i.i.a.f.a.f.a.a.a.a.a.g.g.a.h.h.h.J.h.s.J.J.J.J.F.J.J.J.h.J.J.J.J.J.K.L.E.W.E.W.E.L.L.L.W.W.W.L././.W././././.).(.]._.[.].[.[.[..X.XXX.X.X.X.XoXoXoX.XOX.XoX[..X.X.X.X.X[..X.X.X.XoX.X$X[..X.X.X[..X.X.X.XoXoX", "(.(.(.(./.(.W./././.Q././././.L.(.!.W./././.W.(././.(.(.).[.[.[..X[..X.X[..X[.[.].).(.(.(./.I.5X1X-X8.=.L m m 0 6 , : X.s.a.f.i.i.i.i.t.i.u.i.i.i.i.i.i.i.i.u.i.u.i.i.i.i.i.i.i.a.i.f.f.f.a.a.a.f.a.g.g.s.a.h.h.h.h.J.h.F.J.a.J.J.J.J.J.J.J.J.J.J.E.E.L.L.L.L.L.L.W.L.T.W.W.W.W.T.W.T./././.).(._.[.[.].[.[..X[..X.X.X.XXXoX[.oX.XOX.X.X.X.X[..X.X.X.X.X.X.X[..X.X.X.X.XOX.X.XOX.XOXOX.XoXXX", "(./.(.Q.(.W./.Q././.Q././.W./.G..XSXIXIXLXLXLXLXJXJXLXJXLXJXJXJXJXJXJXLXLXLXKXKXKXKXJXJXKXIXpXeX>Xn.,.R B B 0 7 < & & ..s.a.f.i.i.t.i.i.u.t.i.i.i.i.i.i.i.i.i.u.i.u.i.i.t.i.i.i.i.i.f.a.a.a.a.a.g.g.g.g.s.h.h.J.h.J.J.J.J.J.J.J.J.J.h.J.J.J.J.J.J.E.J.L.E.L.L.L.W.P.Q.W.W.W.W.W.Q.Q.T.Q././.).(.[._.[.[..X[..X.X.X.X.X.X.X.XoX.X.X.X.X.X.X[.oX.X.X[.oX]..X]..X.X.X.X.X.XOX.X.XOX.X.X.XOXoXoX", "/./././.U./.Q.W.W./././././.Q.#XbXIXIXIXJXJXKXKXKXJXJXJXJXGXJXJXJXJXGXGXHXKXLXGXGXGXGXLXJXCXeX e.i.i.i.t.i.f.u.i.i.i.i.i.i.i.f.i.i.i.u.i.i.t.i.i.i.i.i.i.i.a.a.g.a.a.a.h.g.h.h.h.h.h.h.h.j.J.J.J.J.h.J.J.J.Y.h.J.J.J.J.J.J.J.L.L.L.L.W.W.Q.W.P.W.W.W.W.W.W.W.Q.W./.).).{.}.[.[.[.[..X.X.X.X.X.X.X.X.X}.[..X.X.X.X[.oX[..X{..X.X[.[.[..XoXoXoX.XoX.XoXoXoXoXoX.XoXOX", "/./.Q./././.Q.W.L.T./.L.W.Q./.FXDXJXGXCXZXZXAXAXZXZXZXAXAXZXAXAXnXVXAXAXVXAXAXAXAXnXAXZXcXeX>XV.1.K A a 8 6 & + o * k r.i.u.i.i.f.u.f.u.f.u.f.f.f.u.i.i.i.i.i.i.t.d.i.i.i.i.i.i.a.a.a.a.a.g.a.h.h.s.h.h.J.h.J.J.J.h.Y.h.J.Y.J.J.J.J.J.L.J.J.J.E.J.J.E.K.E.L.L.W.W.!.W.P.W.P.W.W.W.W.Q.W.(.(.).[.[..X.X.X.X{..X.X.X.X{.}..X.X.X.X.X.X.X.X.X[.oX}..X.X.X.X.X.X.X.X.XoXoXoXoXoXoXoXoXOX.XoXoX", "(././././.W.Q.W.U.W./.L./././.HXSXSXSXZXnXnXnXnXnXnXnXxXnXxXnXzXnXnXnXbXbXMXzXxXBXBXBXzX0X8X;X7.2.A y 7 7 1 + X ; @.d.p.i.i.i.i.u.f.u.f.u.i.i.f.f.f.i.i.i.i.i.i.i.i.i.i.i.i.i.i.f.a.a.a.g.a.h.j.s.F.s.J.s.h.F.h.J.J.J.J.J.J.J.J.J.E.J.E.J.E.J.E.L.J.E.J.J.L.L.J.W.L.W.W.W.Q.E.W.W.W.W./.).(.(.[.[.[.[..X[..X.X.X.X.X.X.X.X.X.X.X[..X.X.X[.oX[..X.X.X.X.X.X.X.X.XoXoXoXoXoXoXoXoXOX.XOXOXOX", "/./././.W./.W.W.W.L.T.W./.W.U.VXAXAXNXnXjXkXbXkXkXkXkXkXfXkXkXkXkXkXjXjXvXvXvXbXfXkXvXpX8X-XV.>.L p 0 4 1 o + # h 0.s.p.i.u.i.u.u.i.u.i.i.u.f.f.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.a.f.a.a.a.h.s.a.J.J.h.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.K.J.J.J.L.J.L.E.E.W.W.W.J.W.W.L.L.W.L.W.W.W.Q././.(.(.[.[.[.[..X[..X[..X.X.X.X.X.X.X.X.X.X.X[.[..X}.oX.X.X.X}.oX}..XoX[.$XoXoXoX$X$XoXoXoXoX[.OX$X", "/.Q././././.W.W.W.W.L.L.W.T.T.VXMXBXnXzXlXjXjXjXfXjXkXbXjXjXjXjXbXvXjXjXjXkXbXkXkXjXjX9X.H n 7 > + # & i ~ w.i.i.i.u.u.u.u.t.t.u.i.i.u.u.i.i.i.i.i.i.u.i.i.i.f.i.f.f.f.d.i.a.a.h.a.h.h.h.h.h.h.J.J.h.Y.J.J.J.J.J.J.J.J.J.L.L.L.J.L.W.J.J.L.L.L.E.L.W.W.E.W.L.W.T.W.W.W.T.Q.W.Q././.Q./.`._._.[.[.[.[.[..X}..X.X.X.X.X}.}..X[..X[..X.X.X.X[..X.X.X.X.X.X.X.X$X.XoXoXoXoXoXoXoXOXOXoXOXOX", "Q./././.W./.W.W.W.L.L.W.W.L.L.nXZXZXnXbXzXjXkXjXkXbXbXbXjXfX0X7XbXbXkXbXjXbXbXbXkXfX9X $ @ & b 4.! i.i.i.u.u.t.t.u.u.u.u.t.i.i.u.i.i.u.i.i.i.i.i.i.f.f.H.i.f.f.f.f.a.a.s.s.h.h.h.J.J.F.J.h.J.J.J.J.J.J.J.J.J.J.J.J.L.L.E.L.J.L.L.L.J.L.W.P.E.P.E.W.W.L.W.L.Q.W.W.Q.W.Q././.(.`.(.(._._.[.[..X{..X.X.X.X.X.X.XoXoX.X.X.X.X.X[.[..X.X}..X.X.X.X.X.XoX.XoX.XoXoXoXoX$XOX$XoX$XoX$X", "/././.L././.L.W.W.W.T.E.W.P.L.ZXZXnXnXnXzXkXbXkXbXbXjXvXfXrX;XM.dXkXkXkXkXkXbXbXbXrX1X;Xn.;.A 0 < & . & v C.6.! u.u.u.u.u.u.u.t.u.u.f.t.u.i.u.f.t.u.f.i.i.i.i.i.f.g.g.g.s.f.f.s.f.s.s.s.s.h.J.h.J.h.J.J.J.J.J.J.L.J.J.J.J.E.L.L.L.L.E.W.L.L.L.L.L.E.L.Q.L.W.W.W.W.W.E.W.W.Q.W.Q././././././.)./._._.[.[.[.[.[.oX.X.X.X.X.X.X.X.X.X.X[..X.X[..X[..X.X.X.X.X.X.X}..X.XoXoXoXoXoXoX$X$XOXOX$XXX", "/././././.L./.L.W.W.W.E.W.W.E.ZXZXAXnXbXjXkXkXkXbXbXjXfXpX8XA.;.S.kXkXkXkXkXbXbXjX8X:X=X7.J j 3 & % b -XZ.6.Q u.t.u.u.t.u.u.u.u.u.u.u.u.i.f.u.i.u.i.i.i.i.i.i.f.f.g.i.f.s.s.s.s.s.h.j.J.h.s.F.J.J.J.Y.J.E.!.J.J.E.E.E.J.L.J.W.W.L.W.W.E.L.L.L.L.W.W.W.L.E.P.W.W.W.W.W.Q.Q.T./.!././.(.).).(.(._._.).[.[.[.[.[..X.X.X.X.X.X.X.X.X.X[..X.X[..X.X.X.X.X.X.X.X.X.X.XoX.X.X.XoXoX$XoXoXOXOX$XXX", "/./.Q.W./.W.W.L.P./.W.W.W.Q.L.ZXZXZXnXbXzXjXbXjXkXvXmXpXeX:X1.H ,.fXkXkXbXbXbXbXrX5X;X9.-.B 9 & X % - S.9XZ.5.Q y.t.t.t.t.u.u.u.u.f.f.f.t.i.u.i.i.f.i.i.i.i.i.( a q s &.f.f.j.q.k a k ' s.F.h.E.d.Z a m j a o.E.P.F.J.L.{ Z k n l n j a f ( q.W.L.P.| m j j k m m C [ l.T.L.(./.`.!./.(.(.(.(./.(.(._.[.[.[.[..X.X.X.X.X.X.X.X.X.X.X.X.X.X.X[..X.X.X.X.X.X.X.X.X.X.X.X.XoXoXoXoXOXOXOXOXOXOX", "/.T.Q./.Q.W.W.W.W.Q.L.E.J.W.L.ZXZXZXZXbXzXjXjXjXvXmXpXeX:XB.R B K qXbXkXbXbXbXbX9X:X=X8.L y > O . & b.sX7XZ.5.Q y.t.t.t.u.u.u.u.u.u.u.u.i.i.i.i.i.i.i.i.i.i.i.( a a q %.i.g.j.&.m 0 m ' s.J.h.J.e.m B 0 M B x L.Q.F.J.J._ a q B A d m n a A k 0.Q.Y.' q k s Z g a B a x X.).(./.(.(./.(.(.(.(./._.(._._.[.[.[.[.}..X.X.X.X.X.X.X.X.X[..X[..X.X.X.X.X.X.X.X.X.X.X.X.X.X.XoXoXoXoXOXOXOX$X$XOX", "/./.W./././.W.W.Q.W./.W.L.T.L.AXZXZXnXzXjXjXlXsXiXrXwX:XM.,.S d C M.kXkXbXvXvXaX8X;XB.-.N 5 & . - W hXsX6XZ.5.Q y.t.t.t.u.u.u.f.f.u.u.i.i.i.f.i.i.i.f.i.i.i.i.( m m m &.p.g.j.&.M j n ' s.J.s.h.+.q B q m p m &.L.T.J.L.' m a d D z e l a a k ] T./.' m C a z z D m B q k x./.Q././.(.(.(.(.(./.(._.).[.[.[.[.[.[..X.X.X.X.X.X.X.X.X.X.X.X.X.XoX.X.X.X.X.X.X.X.X.X.X.XoXoXoXoX$XOXOX$XOXOX$X", "/./././.W.L.W.W.W.W.L.W.L.L.P.AXZXVXNXbXzXfXrX9X2X 2 7 p m A } >.N.B.7.-.C > X % v hXjXkXjXkXgXsX6XZ.5.T i.f.f.f.i.i.f.i.f.f.f.a.a.a.a.g.a.a.i.a.h.g.p.( M j k r.s.J.j.&.l l m .P.J./ k m A k q k a p B g _ /.L.| Z j M x./.$.q a D x I.(.}.) x Z x 3..XI.X.m B p ` ^.W.W.(./.W./././././.).).].[.).].[.[.[..X.X[..X.X.X.X.X.X.X.XoXoX.X.XoXoX.X$XoXoXoX$XOXoXOXOXoXOXOXOX@X+X@X@XOX", "`.`././././.W./.U././.Q.T.W.W.AXZXZXnXbXzXkXkXkXzXkXbXN.N 4 t 2 0 C J =.>.,.:.B < $ + r 6XjXjXkXkXkXkXaX4XZ.5.! a.i.i.a.a.a.f.a.i.a.s.j.g.a.a.i.a.a.f.p.s.j.F.( s s a &.J.J.j.x.Z a l _ d.w.k j k k ` ' ) _ S B a q H.W.' g q q H.U.T.F g a B $._.(.{ k d p Z k k n A q Z 3./._._.W./././.W././.(.).[._._.[._.[.[.[..X[..X[..X.X[.oXoX.XXX.XoXoXoX.XoXoXoXOXoXoX.XOXOXOXOXOXOXOXOX@X@XOX@XOX", "`./.).(.)./././.W././.Q.T.W.L.ZXZXZXnXzXjXkXkXkXjXkXkXjXS.G r t 8 m S J R J C 8 > + = >.jXjXkXkXkXkXkXaX6XZ.4.Q s.i.a.i.a.a.a.f.s.a.a.a.g.a.a.g.a.a.h.a.p.J.F.( s g q x.F.s.J.&.l C x { Y.X.M a B o.T.E.W.G.X.l k C #./.` q M C x././.l.Z s y l z._.{ Z s B m Z m B m x X.`.'.W.W.Q.W././.)./.(.)._._._.[._.[.[.[.[..X.X.X.X.X.XoX.X.X.X.XoX.XoXoXoXoXoXoXoXoXOX.XOXOX.XOXOXOXOXOX@X+X@X@XOX", "_.(.(.(./.(././././.L.W.T.L.Q.nXZXZXnXnXzXjXbXkXkXjXjXzXzXN.N u 6 y j M Z m 7 : X @ v aXbXkXkXkXkXkXkXaX4XC.4.E s.g.h.h.a.a.a.a.g.g.a.a.g.a.a.a.g.i.a.p.s.h.d...Z z D &.s.Y.Y.0.Z g Z _ G.] s a Z 3.L.U.U.U.%.x q a ) I.` x k k z.(.`.]._ B k l O. X[ M j n j l k S o.x.`._.W.[.(.(./.(././.).(._._.`._.].[.[.[.[.[..X[.[..X[.$X.X[..X.X.X.XoXoXoXoXoXoXoXOXoXoXOXOXOXOXOXOXOXOXOX@X$XOXOX@X", "_._.(.(./.`./.Q./.W./.Q././.Q.VXAXZXnXbXzXjXkXkXbXzXkXbXjXlXM.N 7 y d 0 C 7 6 X X r =XbXkXbXbXkXkXkXgXaX2XC.5.E s.g.i.s.h.s.h.s.h.a.g.h.g.g.g.g.g.f.J.h.s.f.k.d.H.R.F.h.E.L.j.E.F.P.h.U.k.F./.Y.L.J./.U.P.Q./.L././.Y.!.T./.(.~.U.!.!._.).~.].{.(._.[.`.].[.(._.[.[.^.(.[.Q./.)./.(.(.(.(.).`.(.].[.[.[.[.[.[..X.X[..X.X.X.X[.oX.X.X[..X.X.XoXoXOXoXOXoXoXOXOXOX.X.XOXOXOXOX@XOXOX@XOXOXOXOX", ").).(.)./.(./././././.W.L.Q.W.ZXZXZXnXbXzXzXkXkXbXbXbXbXkXbXjX1.N 6 y 0 7 2 , # r W lXbXbXbXbXkXbXbXjXaX4XC.4.E s.j.s.s.s.h.h.h.h.s.s.s.s.s.s.f.s.a.h.p.s.h.f.s.F.s.J.j.E.L.J.J.E.W.E.J.Q.W.L.W.L.Q.T.W.Q.W.W.W./.}.U.(.).'./.~.'.(.].'.[.(.'.'._.'.{.[.[.[._.).`.(.[.(.[._././._.'._._.(.]._._._._.[.[.[.[..X[..X.X.X.X.X.X[.[.[.[..X[.[.$XoXoXoXOXOXOXOXOXOXoXOXOXOX$X$XOXOXOXOX@XXXOXOX@X", ").(.).)./.(././.U././.Q.W.T.W.ZXZXZXnXzXzXjXbXkXbXbXbXbXbXkXkXsX:.u 2 7 6 , @ # b 9XzXbXbXbXbXbXbXkXzXsX4XC.4.E h.j.s.s.k.h.h.h.h.s.s.h.s.s.s.s.h.p.K.p.d.P.J.J.L.K.h.E.K.G.L.Y.s.P.W.W.J.Q.L.L./.L.!.W.(.T././.T.(.(.Q.(._.W.{.'.`.(.(.(._.]._.[.[.[.[.}._.).]..X.X(.'.}.'.).)._.'._._.].].[.)._.[.[.[.[.[.[..X[..X.X.X[.oX.XoX[..X[..X$X[..X.XoXOXOXoXOXOXOXOXOXOXOX$XOXOX@XOXOXOX@XOX$XOX", ").).(././././.(././.Q.W./.T.L.ZXSXnXnXzXzXjXjXjXbXbXbXbXbXbXkXkXuXG t 2 , & X , 1.zXjXkXkXbXbXbXkXkXgXaX4XC.4.E h.J.h.h.s.s.h.h.s.h.h.h.j.h.h.h.h.h.s.s.J.F.h.J.J.J.J.E.J.L.L.J.L.L.L.L.T.W.Q././.T./././.W./././.U.(.Q.(.(.(.(.(.(._.[._._._.[.[.[.[.[.[._._.]._._.[._.[.].'._.[._._._.].'.).[.[.[.[.[.[..X.X[.[..X[..X.X[..X.X.X.X'.[..X.X.XOXoXOXOXoXOXOXOX%X$XOX%XOX@XOX@XOXOX@XOXXXOXOX", "(.]./.)./.)./.(./.T./.P././.L.ZXZXnXnXzXzXjXjXjXbXbXbXbXbXkXkXbXjX7XC < & @ % b 0XjXjXkXbXbXbXkXkXjXgXaX4XZ.4.Q s.h.h.h.h.h.h.h.j.h.h.h.J.h.J.h.F.s.J.J.J.J.J.J.J.J.J.J.J.J.L.E.L.L.L.W.Q.W./.W././.T./.Q././.(./.(.(.(.(.(.(.`.(.(._._._.[.[.[._.[.[.}._.).[._._.`.[.`.].].].'.'.[._.[._.[.[.[.[.[.'..X[.]..X.X.X[.[..X.X.X[..X.X[.[.$X.X[.OX.XoXoXOXOXOXOX@XOXOX%X@X@X@X@X%X@X@X@X@XOXOXOX", "].(.(.(.(.(.(.(./././.W.U./.L.nXZXZXnXzXzXkXkXkXbXbXbXbXbXbXbXkXjXbXN.u & + = b.bXbXbXbXbXvXbXbXkXbXzXsX8XC.6.E h.J.h.h.h.h.h.h.h.h.h.h.h.h.J.J.h.J.J.h.J.J.J.J.J.E.J.J.J.L.L.L.L.L.W.W.W.Q./.W.W.Q.Q././././.Q././.(.(./.(.).).].].].'.[.[.[.[.[.[.[.'.[.[._.[.[.[.'.[.[.[.[.[.[.[.[.[.[.[.[..X[.[.[..X]..X]..X.X.X.X.X.X.X.X.X.X[..X.X.X.XOX.XOXOXOXOXOXOXOX@X%X@XOX@X@X%XOX%X@XOX@X@XXX$X", "(.].].(.(.(.(.(.(.Q./.Q.T./.Q.ZXZXnXnXzXvXkXkXkXfXbXbXkXbXbXbXkXkXbXzX-.& @ v dXbXvXkXjXbXkXbXkXkXkXgXaX4XC.4.E J.F.s.J.J.s.F.h.F.s.h.s.J.J.J.h.J.J.J.J.J.J.J.J.E.E.J.J.E.W.L.E.W.L.W.W.W.W./././.(././././.(./.(././.`.(.(.(.(.(.(.]._.[.[..X[.[.[.[.[.[.[.[._.[.'.].[.[._.'.[.[.[.[.[.[.[.[.[.[..X[.[..X[..X.X.X.X.X.X.X.X.X.X.XXX.X.XOX.XoXXXoXoXOXOXOXOXOX@X@XOX&X$X%X%X$X%X@X@X@XOX%X$X", "_.(.(.`.(.`._._.(././.Q./.W.Q.ZXVXVXnXzXjXkXkXkXkXfXkXkXkXkXkXbXkXjXjXuXb r b.bXkXkXkXkXkXkXkXkXjXbXjXsX4XC.6.E h.F.J.s.s.J.h.F.h.F.h.J.s.J.J.J.J.J.J.J.J.J.J.L.L.L.L.L.L.W.E.W.W.W.L.W.Q./././.Q.Q././.(.(./.(./.(.(._.(.(.).(._._.[.'.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.'.[.'.[.[.[.[.[.[..X[..X.X[..X'.].]..X]..X.X.X.XXX.X.X.XoXoXoX.XoXXXoXoXoXoXOXOXOXOXOX@X@XOX$X%X%X&X&X$X@X@X@XOX$X$X", "].(._./._.(.(._.Q./.`.Q././.Q.nXVXAXZXzXzXkXkXkXkXjXkXbXjXjXkXjXjXjXjXlX,XR uXvXjXjXbXjXjXbXvXjXjXjXjXdX4XC.4.E J.J.J.J.J.s.J.h.J.h.F.J.J.J.J.J.L.L.E.E.J.E.J.L.L.L.L.L.L.P.E.W.L.L./.T.U./.W./.].(.`.`./._.(._.(.(.(.(.(.(.].].[.[._.[.`.[..X[.[.[.[.].]..X].[.[.[.[.[.).[.[.[.[.[.[.[.[.[.[.[.[..X[..X.X.X.X.X.XXXOX.X.XOX.XoX.XoXoXXXoXoXoXoXoXoXoXoXOXOXOXOX@X%X&X$X%X$X&X%X@X@X@X@X@X%X", "(.(.(.(.(.(.).(./.Q./.Q./.U.Q.MXZXZXnXzXzXkXjXjXkXkXkXjXkXkXjXbXzXkXkXkXjX7XzXjXkXkXzXkXgXjXgXjXjXjXkXdX6XC.<.~ h.J.J.J.J.h.J.J.J.J.J.J.J.E.L.L.E.L.E.E.E.W.E.L.E.L.L.E.P.W.W.W.W.W.T.W.Q./././././.(.(.(.(.(.(.(.(._._._._._.[.[.].].[.]..X].].[.].[.[.[.[.[.].[.].[.[._.[.[.[.[.[.[..X[..X.X.X[..X[.[.[..X.XXX.XOXoXoXoXoXoX.XoXoXoXoXoXoXOXoXoXoXoXoXOXOXOX@X@X%X%X%X%X%X%X%X@X@X@X@X@X@X", "(.].(.(.(.(./.(.(././.L./.G.J.MXZXnXnXzXbXbXbXbXbXkXkXkXkXjXkXkXjXkXkXkXbXjXjXjXkXkXkXkXkXkXkXkXkXkXgXaX,XC.^ E J.j.J.h.J.Y.j.J.J.h.J.J.J.E.L.L.L.E.E.E.E.P.L.L.L.L.W.L.E.W.E.W.W.W./.Q./.Q././././.(.(.).).).(.(.(.'._._.[._.[.'.[.[.].[.].].[.]..X[.[..X]..X[.[.[.[.[.[.[.'.[.[.[.[.[.[..X[..X.X.XoX[..XoXoXoX.X.X.XoX.X.XoXoXoXoXoXOXoXOXoXOXOXoXoXoXoXOXOX@X@X@X%X%X%X%X%X%X@X%X%X@X@X$X", "(./._.(./.).)./././.Q.W./.T.G.MXnXnXnXkXfXfXkXjXkXkXkXkXkXkXbXkXkXkXkXkXkXkXkXkXkXkXgXgXjXgXjXkXkXgXhXuX-Xb.! T L.F.J.J.J.J.Y.J.J.J.J.J.L.L.L.W.W.W.W.W.P.E.L.L.E.L.L.L.W.W.W.W.W.W././././././.).).).(.(.).(.].(.]._.[.[.[.[.[.[.[.]..X].[.[.[.[.].[..X[..X[.[.[.[.[.[.[.[.[.[.[.[.[..X[..X.X.XoXoXoXoXoXoXXXOXOXoXoXoXoXoXoXoXOXoXOXOXoXoXoX$XoXoXoX$XoXOXOX@X@X@X@X@X%X$X@X%X@X@X@X%X%X%X", "(.`./.`.(.)./.).Q.Q.(./.G.L.Q.bXxXnXjXdXuXuXuXuXtXtXtXtXuXtXtXtXuXtXtXtXtXtXtXuXtXtXtXuXtXtXtXtXtXtX9X,Xb.! c b j.L.J.J.J.J.J.J.J.J.E.J.L.E.L.E.E.W.P.Q.W.L.W.E.W.P.E.W.W.W.W.W.W.L././././.`./.)./._.).).(._.)._._._.[.[.[.[.[.[.[.[.].[.[..X[.]..X.X[.[.[.[..X[.[.[..X[.[..X[..X'..X.X.XXX.X.XoX.XoXoXoXoXoXoXoXoXOX.X$XOX$X$XOXoXOXOXoX$X$XOXOXOXOXOXOXOXOX@X@X@X@X@X%X%X%X%X%X@X%X%X%X%X", "(././././.Q././././.L.L.Q.Q.!.hXtXyX2X-XZ.Z.Z.Z.C.A.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.C.Z.Z.C.C.m.^ U c c c J.T.J.E.J.J.J.J.W.J.J.W.L.W.L.W.W.W.W.W.W.W.J.W.W.L.W.W.W.L.W.W.Q.W././.Q._./._./.(.).).(.).[.).[.[.[.[._.[.[.[.[.[.[..X].[.[.[.[.[.[.[..X[.[..X[.[.[.[..X[.[..X.X.X[.$X[..XoX.XoXoXoXoXoXOXOXOXOXOXOXOXOXOXOXOXoXOX@XOXOX$XOXOXOXOXoXOXOXOXOXOX@X@X@X@X%X%X%X%X%X%X%X%X%X%X", ").).).).).{./.W./.W.Q.U.T.E.E.tX,XS.m.5.^ ~ ~ ~ ~ ~ ~ ~ ^ ~ ~ ~ ^ ~ ~ ~ ^ ~ ~ ^ ~ ~ ~ ~ ~ ~ ~ ~ ~ ! Q c c c c E J.s.W.J.L.L.L.L.L.J.L.E.W.L.W.W.W.W./.W.Q.W.W.W.T.W.W.W.W.W.W.L././././._.(.(.(.).].[._.].[._.[.[.].[.].[.[.[.[.[.[.[.[.]..X.X[..X[..X.X[..X.X.X.X[.oX.X.X.X.X[..X.X.X[.[.$XOXoXoXoXoXOXoXOXOXOXOXOX@X@XOXOX@XOXOXOXOXOXOXOX@XOXOXOXOXOXOXOXOXOXOX@X@X@X%X%X%X%X%X%X%X%X%X*X", "/.).)././././.W.T./.Q./.T.W.W.^.N.b.Q U c c c c c c c c c c c c c c c c v c v c c c Y c c c c c c c c Y Y U @.H.L.T.L.L.L.J.J.L.L.J.W.W.L.W.W.W.W.W.W.W.W.W.L.W.W.W.W.L.W.W.W././.Q.(._.(.(.]._._.[._.[.].[.]..X[.[.[.[.[..X[.[..X`.[.]..X.X[.[.[.[..X[.[.[.[..X.XoX.XoX.X{.[.oX.X.X[.oX.X.XOX.XoXOXoXOXXXOXOX@X@X@X@X@X@X@X@XOX@XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOX$X@X@X%X%X%X%X%X%X%X*X%X", "/./././.(././.W./.L.W.P./.W.L.~.v.@.c c c c c c c c c c c c c c c c c c I c c c c c c c c I c c c c I c P @.R.k.!.k.W.L.L.L.J.W.L.L.W.E.E.W.W.L.W.W.W.W.W.W.L.W.W.W.W.W.W./.L./././.`./._.].(.'._._.[.[.[.[.[.[..X[..X[.[..X[.[.[..X[..X[.[.[..X.X[..X[..X.X[..X[..XoX.X.X.XoXoX[.$X$XoXOXOXOXOXOXOXOXOX@X@X@X@X@X@X@X@X&X$X@X@X@XOX@XOX@XOX@XOX@XOX@X@XOXOX@XOXOXOX$X@X%X%X%X*X%X*X%X*X%X*X", ").).(.(./.Q./.W.W.W.W.W.P./././.T.T.T.W.W.Y.T.Y.J.L.Y.Y.J.F.Y.J.Y.J.W.W.T.Q.T.W./.W.`.Q.W.T./.T.T.W.).~.U.T.T.T.T.G.W.L.W.W.W.L.E.W.W.W.Q.T.W.T.W.W.W.W.W.W./.W.W.W.Q.Q./.Q.T././.(.(.(._._._.[.[._.[.[.[..X[..X.X.X.X.X[..X.X.X.X[.[.[.[..X.X[.[.{..X.X[..X.X.X.XoXoX.XoX.XoX[..XoXoXoXoXOXOXOXOXOX@X@X@X$X&X&X&X&X#X%X#X%X@X@X@XOX$XOXOXOXOXOX@XOX&X$X$XOXOXOXOXOX@X@X@X@X@X%X%X&X$X&X&X&X", "/./.(./.W././././.Q././.Q.W.L.W.!.E.W.W.J.W.W.W.L.L.L.L.L.L.L.L.E.L.W.L.W.W.Q././.T./././.W././.~.(.W./.(.P.Q.Q.W.W.W.W.W.T.W.E.!.W.W.W.W.Q.W.L.W.W.W.W.W.W.W.Q.Q././.Q.Q.W./.T./.(.(.(._._._._._.[.[.[..X[..X.X{..X.X.X.X.X{..X[..X[.[.[.[.[.[.[..X]..X]..X.X.X.XoXoXoXoXoX.XoXoXoXoXOXOXOXOXOXOX@X@X@X@X@X%X&X&X*X#X#X%X%X@X@X@X@X&X@X$X@X@X@X@X@XOX$X$XOXOX$XOXOX@XOX@X@X*X@X%X&X&X&X&X&X", "(././.W././././.U./.L./.W.Q.Q.W.W.W.!.W.W.W.W.W.L.L.L.W.L.L.L.L.L.W.W.W.W.W.L././.Q././././.(././.Q.(./.Q././.T.Q.L.W.W./.L.L././.T./.Q.Q.Q.W.Q.W.W.W.Q.W.W.W././.Q./.W.)./././.(.(.(.(.(._._.[.[._.[.[.[.[..X[..X.X.X}..X.X.X.X.X[..X[..X[.[.[.[.[..X[..X.X.XXXoXoXoX.XoX.XoXoXoXoXOXoXOX$XOX%X#X@X@X@X&X&X&X&X&X*X*X&X&X@X@X@X%X@X@X@X&X@X@X$X@X%XOX$X%XOXOXOX@XOX@X@X@X*X@X%X&X&X*X*X*X*X", "(.(./././.W./.T.T./.L././.Q./.Q./.W.W.W.E.W.W.J.W.L.W.L.E.L.L.L.W.W.W.Q.W.Q.T.W./././.`.(././.(.(./.(././././././.Q.W.W.L./././././.W.Q.W././.Q.!.W.T.W.T.W.W./.T././././././.).(.(.(._.'._._._.[.[.[.[.oX.X[..X.X.X.X.X.X}..X.X.X[.[..X[..X.X[.[..X[..X.X.X.XoX.XoXoXoXoXoXoXoX$XoXoXOXoX$XOX@X#X@X&X&X&X&X&X&X*X&X*X&X&X&X&X&X%X%X@X@X@X@X@XOXOX@X$X$XOXOXOX@X@X@X@X@X@X@X*X%X&X&X*X*X*X*X", "/././.Q././././././././.W././.W.W.W.W.W.W.W.W.T.E.W.J.W.W.E.W.W.L.Q./.W.W./.W./.Q./.(./.).(.(.(.(./.(.(.(.(./.Q./.T.Q./.L./.L././.W././.Q./.W.T.W./.W.W.Q././.W.Q./././.(././././.).).).[._.[.[.[.[..X[.[.[.oX[..X.X.X.X.X.X.X.X.X.X.X.X.X[..X.X[..X[..X.X].XXoXoXoXoXoXoXoXoXoXoXoXOXoXOXOX@X@X%XOX&X%X&X&X&X*X*X*X&X&X&X&X&X&X#X#XOX&X@X@X@X@X@X@X@XOX@X@X%X@X@X@X@X@X%X%X%X&X&X&X*X*X*X*X", "/./././././././././.W./.W./.(.Q.!.W.W.W.W.W.W.L.L.T.T.W.W.W.W.T.W.W.Q.Q.W././././.(.(.(.(.).(.(./.(.(.(.(.(.(.Q././.W./.U././././././././././././././.Q./.W./././././.).(.(._.(.(.)._._._._.[.[.[.[.[.[.[..X[..X.X.X.X.X.X.X.X.X.X[.[..X[..X.X[..X[..X.X.X.X.XoXoXoXoXoXoXoXoXOXoXOXoX$XOXOXOX%X%X%X&X&X&X&X*X*X*X*X&X&X&X&X&X&X&X#X%X%X@X@X@X@X@X$XOX@X%XOX@X@X%X%X@X%X%X%X&X*X%X*X&X&X&X&X", "!.(./././././././././.Q./././.L.Q.W.Q.W.W.W.L.Q.L.L.W.W.W.W.W.T././././././.Q././.(.(.(.).(.)._.(.(.(.).)././.(.Q./.W.W.W.W././././././.Q././././././././././././././.).(.(.].`.).)._.[._.[.[..X[..X.X[.[..X.X[.{..X.X.X.X.X.X.X.X[..X.X[..X.X.X.X.X.X.X.XXXoX.XoXoXoXoXoXoXoXoXoXOXOXOXOXOX@X@X%X@X&X&X&X*X&X*X*X*X&X&X&X#X&X&X&X#X%X&X@X@X@X@X@X$X@X@X%XOX%X%X%X%X%X%X%X*X%X*X*X*X&X&X&X&X", "(./././././././././.`./.Q././././.T.W.W.W.W.L.L.Q.W.T.Q.W.W././.T./.Q././.(.(.`.(.(.].].).].[.).).).).).).`.(.(.`./././././././././.(./.(.(.(.(.(./.(./././././.(.(.).).(.(.).).[.).[._.[.[.[.[.[.[..X[..X.X[..X.X.X.X.X.X}..X[..X.X.X.X.X.X[..X{..X.X.X.X.X.XoXoXoXoXoXoXoXoXOXOXOXOXOXOXOX@X@X@X@X&X&X&X&X&X*X*X*X*X*X&X&X&X&X&X&X&X&X&X&X@X@X@X@X@X@X%X#X%X%X%X%X*X%X%X&X*X%X*X*X&X&X*X%X", "/./././.(.`./.`./.(.(.(./././.W.L./.W.L.W.W.T.W.W././.W./././.W.Q./.(./.(.(.(._.(.(._._._.[.[.[.[._.[.).]._._._.(.(.(././././.).`.(./.(././._._./.(.(.(.(.(.(.(.].(.(._.(.(._._.[.[.[.[.[.[.[.[.[.[..X[..X.X[..X.X.X[.[..X.X[..X.X[..X[..X.X.X.X.X.X.X.X.X.X.XoX.X.XOXoXoXoXOXoXOXOXOX@XOX@X@X@X@X#X@X&X#X#X&X&X*X*X*X*X*X*X*X*X*X*X*X*X&X&X$X$X$X@X@X$X&X%X%X$X*X*X&X&X&X*X*X*X*X*X%X&X*X%X", "`./.).).(._./.(.).(.(.(././././././.W./.W.W.W.W./.W.!././.W././././././._.(._.(.].]._.(.[.[.[.[.[._.[._._._._._.(.`._.(././.).(./.(./.(./.`.(./.(./././././.(.)._.(.[.(.[._.[._._.[.[.[.[.'.[.[.[.[.[.[.[.[..X.X[..X.X.X[..X.X[..X.X.X.XoXoX.X.X.X.X.X.X{.$X.X.XOX.XoXOXOXoXOXOXOXOX@XOXOX@X@X@XOX@X@X&X&X&X&X&X*X*X&X*X*X*X*X*X*X*X*X*X&X&X&X$X%X@X%X%X%X%X&X*X*X*X*X*X&X*X*X*X%X*X&X&X%X%X", "_.(.(.).(.(.(.(.(.(.`././././.Q./.L.L.L.W.W.W./.Q.(./././.(././.`./.(.(.(._._._.(.[.[.[._.[.[.[.[.[.[.[.[.[._._.(.(.).).(.(._.(.(.(.(.(.(.(.(.`.(.(./.(.(.(.(.).'._._.[.[.[._._._.[._.[.'.[.[.[.[.[..X[.[..X.X[..X.X.X[..X.X[..X.X[..X.X.X{..X.X.X.X.X.X[.oXoXoX.XoXoXoXoXOXOXOXOX@XOX#X@X@X#X@X#X@X@X@X%X%X&X&X*X&X&X*X*X*X*X*X&XqX*X*X&X&X$X&X@X%X&X%X&X&X&X*X*X*X*X*X*X*X*X&X&X%X&X&X%X%X", "_._.(.(.(.(.(.(.).(._._././././././././.(.Q.Q././.Q.(.(.(./.(.(.(.`.(.]._._.[._.[.[._.[.[.[.[.[.[.[.'.[.[.[._.[.(.(.(.(._.).).(.(./.).).]._._._.(.`.(.(.(._.).).].[.[._.[._._._.[.[.[.[.[.[.[.[.[.[..X[.[.[..X.X[..X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XoX.XoX.XoXoXOXOXOXOXoXOX@XOXOX#X@X@X@X@X#X#X#X@X%X%X&X&X&X*X&X*X*X*X*X*X&X*X*X*X&X&X&X&X&X$X%X%X&X&X$X&X*X*X*X*X*X&X*X*X&X&X&X&X%X%X", "_.].].(._.[._.].]._.(.).(._.(.Q././././.W.(./.W.(.Q.(.(.(.(.(.).(._._.[.[.[.[.[.[.[.[.[.[..X'..X[.[.[..X[.[.[._.]._.)._.)._.(._.).(.(.(.).)._.`.(.(.(.(.).).[._.[.[._.[.[._.(.].[.[.[.].[.[.[.[.[.[.[.[.[.$X[.[.$X.X.X.X$X[.$X[.[..X.XoX.X.X.X.X.X.X.XoXoX.XoX.XOXOXoX.XOXOXOX$XOX#X@X@X#X@X@X&X#X#X#X#X&X&X&X*X*X*X&X*X*X*X*X*X*X*X*X*X*X&X&X&X%X%X&X%X$X%X*X*X*X*X*X*X*X*X*X&X%X%X*X%X%X%X", "_._.'.[._.[.[.[.[._._._.(.`.`././.(./.Q./.(./.(./././.(.(.(.(.)._._.[.[.[.[.[.[.[.[.[.[..X[.[.[.[..X[.[.[.[.[.[.].).).[._.).)._.(.(.(.]._._.[.).(.].(.]._._.].[._.[._._._._._.].'.[.[.[.[.[.[.'.[.[.[.[.[.[.$X[.[.[..X[.[.[.[.[.[..X.X.XoXoXoX.XoXoXoX.XoXoXoXoX.XOXOXOXOXOXOX$X@X@X@X#X@X&X#X&X&X#X&X#X&X&X*X*X*X*X&X*X*X*X*X*X*X*X*X*X*X*X&X&X&X&X&X&X*X&X%X*X*X*X*X*X*X*X*X&X&X&X&X%X%X%X" }; micropolis-activity/images/obj5-11.xpm0000664000076400007640000000515510724145723020112 0ustar simcitysimcity/* XPM */ static char * obj5_11_xpm[] = { "48 48 6 1", " c None", ". c #FFFF7F7F0000", "X c #FFFF00000000", "o c #FFFFFFFFFFFF", "O c #FFFFFFFF0000", "+ c #000000000000", " ", " ", " ", " ", " .... ", " .....XX o.o ", " ...XXOXX ...X. ", " ..OXX.O.. ...X ", " X.OXX..... ..X.X ", " X.X.......+..X. ", " X........X.X.X. ", " ..o......X.X.X. ", " X......X.XX.X.X ", " X.o....X.XXXXX ", " ........X.XXXX ", " ...o.....X. ", " o.........X. ", " ......o.....X. .. ", " o...X..o.....X. .... ", " ...XX.........X...... ", " ..XXX...o...........X. ", " .X.XXX...............X ", " ..X.XXXX....o.....X.X.X.X ", " .X.XX X.X.........X.X.XX ", " .X.X X.X...o....XXXXXX ", " XXX XX.X.......XXXXX ", " XX XXX.........XXX ", " XX.X.........XX ", " XX.X.......X.X X ", " X.X.X.X.....X. . ", " XX.XXX.X.....X. o. ", " X.X.XXX.X.....X. X.X ", " X.X.X X.X...X.X oXX ", " .X.XX X.X...X.X .XX ", " .X.X X.X...X.X .X.X ", " X.X.XXX X.X...X.X .X.X ", " .X.X.XXX X.X...X..X.X.XX ", " XXXXXX XX.X.X.X.X.X. ", " XX.X.X.X.X. ", " XXXX.X.X. ", " XXXXX ", " ", " ", " ", " ", " ", " ", " "}; micropolis-activity/images/com.xpm0000664000076400007640000000517110724145723017610 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "48 48 3 1", /* colors */ "` c #000000", "a c #6666E6 m #000000", "b c #CC7E66 m #ffffff", /* pixels */ "`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "`a`````````````````````````````````````````````a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbb`aaaaabbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbb`aa```aabbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbb`aa`bbb`aabbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbb`aabbbbb``bbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbb`aabbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbb`aabbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbb`aabbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbb`aabbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbb`aabbbbbaabbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbb``aabbbaa`bbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbb``aaaaa`bbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbb``````bbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`a", "`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "````````````````````````````````````````````````" }; micropolis-activity/images/tiles-25.xpm0000664000076400007640000000434110724145723020374 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "42 42 14 1", " c black", ". c #00007F7F0000", "X c #7F7F7F7F0000", "o c #5D5D5D5D5D5D", "O c gray50", "+ c blue", "@ c #4F4F4F4FFFFF", "# c green", "$ c #BFBF79790000", "% c red", "& c #FFFF77770000", "* c yellow", "= c gray75", "- c gray100", /* pixels */ "==========================================", "=OO****OOOO****OOOO****OOOO****OOOO****OOo", "=OO****OOOO****OOOO****OOOO****OOOO****OOo", "=OOooooooooooooooooooooooooooooooooooooOOo", "=OOo----------------------------------=OOo", "=**o-$$$$$$$$========$$XO$o$$$o$o$$$$-=**o", "=**o-$$$======%OOOOO%OXOOXo$XOOo$$$o$-=**o", "=**o-$$==&OO==OOOOOOo oo$$$XO$$O$$o$$-=**o", "=**o-$===OOO==OOOOO@ OOo$OoO$$XXo$X$$-=**o", "=OOo-$=O=-oO=-OOOOo@OOOXXoX$$$o$$$oo$-=OOo", "=OOo-$O==OOO-OOOOo OOoX$$$$$$O$$ooo$$-=OOo", "=OOo-$===OOOO=OOO OOo Oo$O$$OoXXo$$X$-=OOo", "=OOo-$=O=OOO==OOOOO@ OOoXoO$oX$$$$$$$-=OOo", "=**o-$===OOO==OOOOo@OOOXXooO$o$$$$$o$-=**o", "=**o-$=O=OOO=-OOOo OOOooX$$$$$oOXOXo$-=**o", "=**o-$===oOO-OOOO OOo OoX$$$ooOo$$$o$-=**o", "=**o-$==-OOOO=OOOOO@ OOoX$oOOXoo$$$$$-=**o", "=OOo-$=-=OOO==OOOOo@OOOXoOoXXo$$$$$o$-=OOo", "=OOo-$-==oOO==OOOo OOoXoXo$$$$$$$$$$$-=OOo", "=OOo-$==OOOO==OOO OOo OoX$o$$$$$$$$o$-=OOo", "=OOo-$=O=OOO=-OOOOO@ OOoX$$$$$$$$$$$$-=OOo", "=**o-$O==OOO-OOOOOo@OOOoX$o$$$$$$$$o$-=**o", "=**o-$===o-oO=OOOo OOOOoX$$$$$$$$$$$$-=**o", "=**o-$=O=o-o==OOO OOOOOoX$o$$$$$$$$o$-=**o", "=**o-$OO=OOO==OOOOOOOOoXX$$$$$$$$$$$$-=**o", "=OOo-$=O=o-o==%OOOOO%ooXX$o$$o$$o$$o$-=OOo", "=OOo-$OO=o-o=OoooooooOoXX$$$$$$$$$$$$-=OOo", "=OOo-$=O=OOOOooooooo OoXoOO.OOOOOOO$$-=OOo", "=OOo-$O==OoOOOOOO*OOOOoXoOO.OOOOOOOOO-=OOo", "=**o-$===OOOOO***OoO OooOOOOOOOOOOOOO-=**o", "=**o-$===OoOO***OOOOOOoXOOOOOOOO+OO$#-=**o", "=**o-$===&OO*OOOOOoO &oXOOOOOOOO+OO#$-=**o", "=**o-$===ooooooooooooooXOOOOOOOOOOO$#-=**o", "=OOo-$==oooooooooooooooXOoO+O.OOOOO$$-=OOo", "=OOo-$=ooooooooooooooooXOXO+O.OOOOO#$-=OOo", "=OOo-$$XXXXXXXXXXXXX.X.X#$#$#$#OO$$$$-=OOo", "=OOo-$$$XXXXXXXXXXXXXXXX$$$$$$$OO$#$#-=OOo", "=**o----------------------------------=**o", "=**o===================================**o", "=**OOOO****OOOO****OOOO****OOOO****OOOO**o", "=**OOOO****OOOO****OOOO****OOOO****OOOO**o", "=ooooooooooooooooooooooooooooooooooooooooo" }; micropolis-activity/images/checkbox1hilite.xpm0000664000076400007640000007326610724145723022112 0ustar simcitysimcity/* XPM */ static char *checkbox_hilite[] = { /* columns rows colors chars-per-pixel */ "190 70 212 2", " c #1E3E65", ". c #1D3E6A", "X c #1D3C72", "o c #233C64", "O c #233D6C", "+ c #2A3B65", "@ c #2A3C6B", "# c #233E72", "$ c #293E72", "% c #0C4702", "& c #0D4A02", "* c #0E5302", "= c #124B0B", "- c #164E12", "; c #174E1B", ": c #1B4A1E", "> c #115F02", ", c #116302", "< c #126B02", "1 c #147402", "2 c #157A02", "3 c #1F7813", "4 c #1F663D", "5 c #206B1F", "6 c #216530", "7 c #174368", "8 c #1C4265", "9 c #1C426B", "0 c #1C4966", "q c #1D486A", "w c #174670", "e c #144973", "r c #134979", "t c #1B4372", "y c #194876", "u c #1B4B7A", "i c #224265", "p c #22416B", "a c #284265", "s c #29416C", "d c #234371", "f c #25457A", "g c #244873", "h c #234C7B", "j c #2B4776", "k c #24517B", "l c #31587F", "z c #2C7251", "x c #1C5985", "c c #214E80", "v c #294D81", "b c #225381", "n c #255A82", "m c #255C8A", "M c #295383", "N c #2C578E", "B c #295B8A", "V c #275F92", "C c #2C5D92", "Z c #325B8D", "A c #345D95", "S c #2B608C", "D c #246396", "F c #2E6293", "G c #2F669C", "H c #2C6D95", "J c #2D729E", "K c #32608B", "L c #326593", "P c #31659B", "I c #326E96", "U c #316A99", "Y c #3C6F9A", "T c #33739F", "R c #3D779F", "E c #2D74A0", "W c #336CA1", "Q c #386DA1", "! c #3573A2", "~ c #3775A8", "^ c #3378A2", "/ c #3C73A4", "( c #3876A9", ") c #3B7BAA", "_ c #4275A4", "` c #407AA9", "' c #168402", "] c #178902", "[ c #188A03", "{ c #199303", "} c #1A9803", "| c #1E980A", " . c #1CA203", ".. c #1DAB03", "X. c #1EB103", "o. c #209E0D", "O. c #31933F", "+. c #2BAE1B", "@. c #22B708", "#. c #20BB03", "$. c #33AE33", "%. c #3ABF35", "&. c #328E66", "*. c #338C7A", "=. c #3C9E69", "-. c #3F9F70", ";. c #21C403", ":. c #22CD03", ">. c #27CD09", ",. c #23D303", "<. c #25DA04", "1. c #2CDB0E", "2. c #2DD711", "3. c #32CE20", "4. c #39C534", "5. c #27E304", "6. c #28E604", "7. c #28E904", "8. c #2CEB0A", "9. c #29F304", "0. c #2CF907", "q. c #30EF0E", "w. c #30EB11", "e. c #31F30F", "r. c #31F90E", "t. c #33F910", "y. c #3AE423", "u. c #3DF420", "i. c #439F6D", "p. c #54B479", "a. c #67BA76", "s. c #42F824", "d. c #46F92A", "f. c #46C850", "g. c #5CEE52", "h. c #5DF153", "j. c #69F15B", "k. c #33928C", "l. c #3881AF", "z. c #3587B7", "x. c #3D85B3", "c. c #3C8AB9", "v. c #3D99A0", "b. c #3395B6", "n. c #369CCD", "m. c #3B96CE", "M. c #3D9ACE", "N. c #379CD0", "B. c #3A97D0", "V. c #3D9AD0", "C. c #3C9DD9", "Z. c #3DA1CD", "A. c #3CA0D3", "S. c #39A1D9", "D. c #419B9E", "F. c #4080AE", "G. c #4383B2", "H. c #4187B8", "J. c #438AB2", "K. c #428BBB", "L. c #4982B3", "P. c #4A8AB4", "I. c #4A8CB8", "U. c #4D90BD", "Y. c #5390BC", "T. c #478DC0", "R. c #498FC0", "E. c #4793C7", "W. c #4395CC", "Q. c #429BCD", "!. c #4B95C2", "~. c #4B94CA", "^. c #4A9BC5", "/. c #4A9CCC", "(. c #4396D2", "). c #439CD2", "_. c #459DD8", "`. c #4897D2", "'. c #489ED3", "]. c #4A9ED8", "[. c #5094C3", "{. c #5695C8", "}. c #5299C5", "|. c #519CCB", " X c #5B9ECB", ".X c #519DD3", "XX c #529EDA", "oX c #599FD1", "OX c #46A0C3", "+X c #44A1CD", "@X c #4EA2C7", "#X c #4BA1CD", "$X c #45A1D3", "%X c #44A2D8", "&X c #47A8DB", "*X c #4BA1D4", "=X c #4CA3D9", "-X c #4CA9D4", ";X c #4BA9D9", ":X c #52A2CD", ">X c #52A4D6", ",X c #54A5D8", "X=X>X=X>X>XX>X>X>X*X#X*X'.>X'.>X*X>X>X>X*X>X>X*X>X#X*X>X.X>X>X>X.X>X>X>X>X*X>X*X>X*X>X*X>X=X=X*X=X*X*X:X*X*X>X>X*X>X*X>X*X>X>X>X*X>X>X*X,XXX>X'.*X>XX>X>X>X=X=X*X*X*X/.*X=X*X=X*X*X*X*X*X*X*X*X*X*X>X*X'.>X*X'.*X>X*X>X*X#X*X.X*X*X*X'.>X>X*X>X'.*X>X>X*X,X*X>X/.'.>X>X>X>X>X*X>X>X>X*X,XXXXX*X>X'.>X=X>X=X>X>X=X>X>X>X*X$X'.*X'.*X*X*X*X>X=X*X*X*X*X'.*X*X*X*X>X'.*X>X=X*X*X>X-X*X>X*X*X*X*X*X*X=X*X'.>X*X>X>X>X>X*X*X:X>X>X*X>X>X>X>X>X>X>X>X>X>X>XX>XX>X>X=X'.*X*X=X$X'.'.*X*X*X*X*X'.*X#X*X*X*X*X*X*X*X*X'.=X'.:X*X#X*X*X=X*X*X'.*X*X=X>X*X#X*X>X#X>X'.>X|.>X*X.X>X>X>X*X>X>X*X/.>X.X>X>X>X>X>XX'.=X*X*X*X>X*X*X*X*X*X*X*X*X*X=X>X>X>X>X>X=X=X'.>X'.'.=X$X*X'.*X*X$X*X*X*X#X$X*X#X*X*X*X*X*X*X*X*X*X*X*X>X*X*X=X'.'.*X*X*X-X*X*X>X#X>X#X>X#X>X*X>X*X>X#X*X>X#X*X>X>X*X*X>X>X>X>X,XX'.*X*X>X*X*X*X>X*X*X=X*X*X>X>X>X>X=X'.>X*X=X*X*X'.*X*X*X*X'./.*X*X*X$X$X/.*X$X$X'.'.$X$X*X=X*X=X#X>X*X-X>X*X*X>X'.'.*X*X*X>X*X>X>X*X>X*X>X>X'.>X*X*X*X*X*X*X*X*X*X*X>X*X*X>X>X>X>X,X,X3X5X1X1X5X5X5X5X5X5X5X7X7X5X7X7X7X7X8X9X7X7X9X8X8X8X8X8X8X9X8X9X8X9X8X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X", ").).V.).).V.).V.W.V.M.m.M.M.M.Q.V.).V.M.).W.).).V.).).).).).$X$X$X$X%X+X*X*X*X*X*X*X*X#X>X*X*X*X>X*X*X*X*X#XX*X>X>X>X>X=X=X'.'.'.=X=X*X*X*X*X'.$X'.'.'.).'.'.).'.'.'.*X$X].*X*X*X*X*X*X*X*X*X*X$X*X*X$X*X*X*X*X*X=X*X*X'.=X*X>X>X'.=X*X*X*X*X*X*X=X,X*X>X>X>X>X>X>XX*X>X>X>X>X>X#X>X*X*X*X>X>X>X>X>X>X=X>X>X'.*X*X'.=X'.'.'.$X'.$X$X'.$X$X).).$X$X$XQ.'.'.'.'.'.'.*X*X*X*X*X*X*X*X'.*X$X*X*X*X*X*X*X*X*X=X'.>X*X*X*X'.>X=X*X*X*X-X*X*X'..X>X>X*X>X>X>X>X,XX*X=X=X=X;X>X;X>X>X*X>X'.'.>X>X>X>X>X>X>X>X>X*X=X*X*X*X>X'.=X'.*X*X=X'.'.'.'.).Q.).).$X).).).%X$X'.'.'.'.$X*X*X$X=X'.=X'.'.'.'.'.'.>X*X*X*X>X=X*X*X>X=X*X*X*X*X*X*X$X*X*X*X*X*X*X*X>X>X>X>X>X>XX>X>X>X,X>X>X>X>X>X>X>X,X>X>X>X>X>XX>X*X*X>X*X*X'.*X'.=X'.>X*X$X=X'.$X).$X).).).).Q.).).).).).'.).$X'.*X*X*X*X'.$X*X$X*X'.'.'.'.'.=X*X*X*X*X=X*X*X*X*X*X*X*X$X*X*X*X>X*X'.>X>X*X>X*X>X,X*X,XXX5X3X5X5X5X5X5X5X7X5X5X7X7X5X7X7X7X7X9X8X8X8X8X8X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X8X9X9X9X9X", ").).).).).).V.V.M.).).V.M.).).M.).M.).Q.).M.M.).Q.).).V.).).).$X$X*X=X>X>X>X>XX>XX>X>X>X>XX,X,X,X,XX>X>X*X*X*X*X=X'.'.'.*X*X'.'.$X$XQ.).).M.).).V.).).).).).$X'.*X'.*X$X*X/.'.'.$X'.$X'.'.$X$X*X*X*X=X*X*X>X*X=X'.>X#X*X*X*X*X*X'.'.*X*X*X*X'.*X*X,X>X>X*XX>X>XX>XX>X>XX>X>X*X*X'.*X*X=X'.*X*X*X*X=X.X'.'.'.).).).V.).).V.).).$X).).'.'.'.*X$X*X'.].$X'.'.).'.'.$X*X=X*X*X*X>X=X*X*X=X*X*X*X$X*X*X*X/.'.$X*X*X*X*X*X>X*X,X*X>X,X,XX>X>X,X4X1X1X1X1X1X1X3X1X,X,X,X>X1X1X1X3X1X,X,X>XX*X=X*X*X*X*X*X'.).).).).).V.).).).).).).).).).'.'.*X*X'.].$X'.).).).$X'.'.'.=X=X*X*X=X*X*X>X'.*X*X*X*X*X*X$X*X$X*X'.'.*X*X*X>X*X*X,X>X>X>X,X,X1X3X1X5X5X5X5X3X5X5X5X5X5X7X7X7X7X7X8X8X8X9X8X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X8X8X9X9X8X", "$X$X'.'.).).).).).).).M.M.).).Q.).).).).).).).M.M.M.).).).).'.*X'.>X>X,X1X1X5X1X1X1X1X1X,X,X,X,X1X1X1X1X1XX=X=X*X*X*X'.=X*X*X*X*X*X*X).).).V.V.M.m.V.V.A.).).).$X).$X'.'.*X*X$X'.'.'.$X).).).).'.'.'.*X=X*X*X*X*X'.>X'.=X*X*X*X$X*X*X*X'.'.'.>X'.=X'.*X>X>X>X>X>X>X,X1X1X1X1X1X5X5X5X5X5X3X5X5X7X7X7X8X7X8X8X9X9X9X8X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X8X8X", "$X'.$X$X$X).$X).M.M./.C.M.W.M.).`.^.Q.).).M.V.).Q.).M.M.Q.Q./.$X*X>XX-X>X>X>X*X*X'.*X>X>X*X*X*X'.'.).).).M.).V.M.V.).).).).).).).$X$X$X].'.$X$X'.'.).Q.$X).'.'.'.*X+X=X=X>X'.=X*X*X*X*X#X'.*X*X/.*X*X'.*X'.*X'.>X>X*X>X>X>X>X3X,X>X1X1X1XX>X=X>X*X*X*X*X=X#X>X*X>X'.*X$X).).).V.V.).).M.V.).V.V.).).).).'.$X'.$X'.'.'.'.).'.).).).$X'.$X*X*X=X=X'.=X'.=X>X'.$X*X*X*X*X$X*X*X*X$X*X*X'.>X*X*X>X'.>X>X*X>X,X>X1X1X3X3X5X3X1X5X5X5X5X7X7X7X7X8X8X8X8X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X8X9X8X9X8X8X9X8X8X7X7X9X", "'.$X).).).).).).).).Q.'.W.6XC.a.j.d.t.9.0.9.9.9.9.0.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.0.9.9.9.9.9.9.8.y.f.-.>XX>X>X*X>X>X'.>X'.*X'./.).).).).M.V.).m.M.).).).).).).).).).$X$X'.'.'.'.'.'.).).).'.'.'.*X*X=X'.'.=X'.=X=X>X'.*X*X*X*X*X*X*X*X/.=X*X*X*X=X*X*X>X>X*X>X*XX>XX>X>X*X*X=X*X>X*X>X>X>X'.).).Q.).M.A.V.).).M.M.).).V.).).).).$X).'.'.).'.'.'.).$X).'.).).'.'.$X'.'.'.'.=X'.=X].'.=X*X*X*X>X*X*X*X*X*X*X*X*X*X*X*X*X*X*X>X>X>X>X>X>X>X>XXX>X>X>X>X*X>X>X*X'.*X'.'.'.).).V.V.).V.).V.M.M.M.).).).).).).).V.'./.).'.).'.'.).).$X).$X'.$X$X$X'.'.'.'.=X'.'.=X>X'.*X*X=X'.=X-X*X*X=X*X=X*X*X*X*X*X*X'.>X>X*X>X>X,X>X,X,X>X1X1XX>X>X>X>X=X*X#X>X$X'.).).).).Q.V.V.M.V.V.M.).).).).).).).V.).).`.).'.).'.'.'.).).$X$X'.'.'.$X/.'.'.'.=X'.=X=X'.=X>X*X>X*X#X*X*X>X>X*X>X*X*X*X*X*X+X*X*X=X*X*X*X>X>X>X>XX>X=X>X>X=X'.$X'.).).).V.V.V.V.V.m.V.V.M.M.V.V.).).).).).).).).).).'.$X'.'.'.).).$X'.'.'.$X'.'.).'.].'.'.*X>X*X>X*X>X*X>X.X>X*X*X>X*X>X*X'.'.*X*X*X*X=X>X#X>X>X>X>X>X,XX=X=X'.).'.).V.V.V.V.V.V.V.V.V.).M.Q.).).Q.).).).V.).'.).).).'.'._.'.).).'.$X'.$X'./.$X'.'.'.'.'.=X=X=X.X*X.X>X>X=X>X>X>X*X#X=X*X*X'.'.*X*X*X=X'.'.*X*X>X*X*X>X>XX,X>X>X*X'.`.V.V.W.).V.V.V.M.V.M.M.).V.n.V.).M.+X$XM.+X`.'.).`.).).A.).*X+X).+X).+X).Q.'.'.Q./.'.'.=X'.'./.>X'.>X-X*X*X=X>X=X2X>X;X*X;X-X#X#XQ.*X+X'.=X.X>X=X>X,X>X>X>XX*X$X).).V.V.V.V.V.M.M.(.W.M.)._.W.).].C.).'.V.).S.V._.A.(./.'.`.`.'.'.'.).'.`..X'.).+X$X$X'.].].$X'.>X=X=X'.*X,X2X>X].*X1X|.X>X>XX>X*X'.Q.).m.M.N.B.V.B.M.M.V.V.V.V.V._.(.M.).'.).).A.M.%XZ.+X$X).).=X'.).%X).].)._.'.'.).).$X&X'.'.,X'.=X=X'.>X>X>X>X'.,X>X'.>X*X-X=X'.=X&X'..X'.=X].*X>X*X=X>X>X>X>XX>X,X,X,X>X*X*X'.).V.m.B.B.B.B.M.B.m.V.V.m.A.).Q.Q.'.).`.`._.).).+X).'.).V.=XQ./.$X/./.'.=XA.).'.'.&X+X/.!.H.x.c./.#X-X*X*X*X*XX;X&X>X:X2X.X.X*X*X,X'.'.*X>X*X*X/.>X>X>X,X1X,X4X1X1X4X5X5X5X7X7X8X7X9X8X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X8X8X9X9X8X7X7X7X9X2X", "=X=X$X*X*X*X*X*X$X#X$X).$X).'.6.6.6.5.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.5.<.<.<.<.<.<.<.,...{ 2 , XX>X*X$X`.V.V.m.B.B.B.B.M.M.N.V.V.).E.B t d 9 9 d p O p p . ).).%X$X!.u d d O f B >X+X)..X'.|.L.n d $ $ O 9 Z I.:X>XP X 9 9 S >X>X3X>XB d 7 t P ^.#X*X=X'.'.*X*X'.*X>X>X,X,XXX>X*X#X'.).V.M.M.B.B.B.B.B.V.V.(.).M./.m . i i o 8 d 9 O s p /._._.+XJ.q p a o h ^.%X$X].].x.e 9 p . 9 p a o u ^.X-X-X/.=X'.*X*X'.>X'.>X>XX>X=X'.).V.V.M.N.B.B.B.B.M.V.V.V.V.n.W.m p 8 + @ 9 9 d O O 9 ).%X_.+XH p p p q 8 t l.+X*X$X=Xk p s 9 ) ` b p s 9 T >X/.F.w @ p h /./.h q O x.1X;X'.*X>X*X=X*X*X*X*X>X>X>X,X>X1X1XX>X*X*X'.).).V.M.M.M.B.B.B.V.B.V.M.(.).V.W.N @ o r l./.M.M.).).+XM.'.]..Xb @ O M 8 s $ P >X=X/.-Xp s + y !.;XH.Z l R ) =X>XX=X=X>X,X'.*X+X*X*X*X*X>X>X>X,X>X1X1X4X4X5X1X5X7X7X7X7X8X8X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X X8X7X8X7X7X7X", "'.*X*X*X*X$X*X*X*X$X$X_.'.$X).6.7.6.5.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.,...{ 2 , >X*X>X*X$X$X).).V.V.M.m.M.M.V.N.V.V.V.m.M._.M.B p p # F Y / ! E ! G.$X+X%XI.8 d p ! S s @ d !.=X*X*Xk p @ O v P ( !.$X>X*X=X1X#X~.j $ 8 9 p i 9 u |.>X>X*X*X>X*X*X*X*X*X'.*X>X,X>X*XX*X*X$X$X/.).M.V.M.M.m.V.B.V.V.N.N.V.V.m.V.M.B p p i q i q 9 I `.%X).U d p . K.) . i 9 ) '.*X=X! w p + s 9 . p m ` 2X*X>X*X1XG.d i O s i X L.2X*X,X*X>X*X=X*X*X*X*X>X*X>X*X>X,X>XX=X3X~ w p p i s a 9 d ) 4X*X1X=X=XL i 9 O o F 4X>X>X>X>X>X,X*X*X*X=X*X'.>X>X>X>X>X>XX*X=X'.'.'.*X$X%X'.).'.).).).6.6.6.5.5.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.5.<.<.<.<.,...{ 2 , $X$X'.'.).).V.).V.V.W.V.V.).V.V.V.(.V.V.m.V.m.B p p d L ! J ! / W z.'.%XI.t o s j ! ! h p 8 j ^.,X=X'.*X>X) L h d @ p o y :XX3X*X}.p j O a ~.X>X*X*X>X*X*X=X>X*X1X>X*X>X>X,X*X,X,X,XXX>X>X*X>X>X>X>X>X>X>X>X>XX2X2X3XXXp 9 p 9 >X-X>X,X,X>X>X>X>X=X,X*X>X>X>X>X>X>XX5X>X1Xp d a . >X>X*X>X*X,X'.>X>X=X=X,X>X>X,X>XX,X1X1X3X5X1X5X5X5X5X5X5X5X5X7X7X7X8X9X8X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X8X9X9X9X9X9X8X9X8X9X", "*X$X$X'.$X).$X$X).).$X).'.).).6.6.6.5.5.<.<.<.<.<.<.<.<.5.<.<.<.<.<.5.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.,.X.{ 2 , ).'.$X).'.).).$X).).).).).).).V.).V.V.).V._.V.B O p 9 9 p 9 q o p d x.! o s 9 L .X>X$X>XS a 8 O _ *X/ X s p i . d p 7 d P.X3X3Xi 7 s 9 2X.X>X>X>X>X>X>X=X>X=X*X>X>X>X>X,X,XX>X>X>X>X>X>X>X>X>X,XXX=X=X,X>X}.P.J.Y. XoX7X4XX>X1X3X4X2X:X2X@XX>X>X=X>X>X=X,XX>XX>X,X4X1X1X1X4X1X1X5X5X5X5X5X5X5X7X7X7X7X7X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X8X9X9X9X8X8X9X8X8X8X", "'.'.$X'.$X).$X).$X'./.).).).'.6.5.6.5.5.<.<.<.,.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.:...} 2 , $X$X'.'.'.).'.'.'.).).).'.).).).).).Q.).$X).).V.=X).$X'./.).$X'.'.'.].*X*X'.].=X'.XX,X].=X=X'.,X,XXX=X>X=X>X:X-X>X>X5XX>X;X+X=X3X,X>X>X>X>X>X,X,X>XX1X>X,X,X $X*X'.'.$X'.).).'.'.$X).$X).).$X).Q.+X).'.'.]./.`.'.$X$X'.).).$X$X$X=X$X>X'..X*X*X#X$X*X>X.X>X*X=X'..X,XX>XX,X1X,X1X>X3X3X1X1X1X:X,X,X>X,X>X>X,X*XX1X,X '.$X$X'.'.'.'.'.'.$X).$X'.$X'.).).$X).$X).).).).$X-X)._.'.).).'.'.'.-X*X'.*X.X'.-X+X:X*X'.=X=X'.-X'.*X>X>X-XXX,X,X1X=X,X3X1X3X,X>XX>X,X,X,X,X,X,XX].$X$X:X>X>X3X,X'.,X2X*X>X>X=X>X*X,X5X>X,X>X,X,X>X'.>XX1X=X1X>X-X:X>X>X,X,X>XX=X,X>X>X*X3X3X3X,X>X>X,X,X>X,X>X>XX1X1XX $X*X'.'.'.'.$X'.'.$X*X$X'.'.'.'.'.'.*X*X=X$X$X*X'.'.$X'.'.$X'.$X$X$X$X$X+X*X/./.1X=X>X*X>X-X#X#X*X,X>X,XX#X>X=X-X>X3X,X,X>X>X,X:X*XX>XX*X*X*X>X>X>X1X,X,X>X>X*X,X>X>X>X>X*X>X,X>X>X,X>X>X>X>X,XX'./.'.*X=X'.'.'.$X'.'.$X'.$X*X'.>X=X*X>X>X>X>X>X*X*X>X>X>X>X*X>X>X2X>XX,X>X>XXX'.*X*X*X*X*X*X*X$X'.'.'.'.'.'.$X*X*X*X*X*X:X*X*X>X>X>X.X>X,X*X>X>X'.1X*X,X>X>X>X.X>X>XXX,X5X1X1X1X1X1X1X5X1X1X1X5X5X5X5X;X1X1X5X1X1X1X7X;X5X5X5X5X5X7X5X5X5X5X7X7X5X7X7X7X;X8X7X7X7X7X7X7X7X7X7X7X8X7X8X5X8X5X8X5X7X5X", "'.$X$X'.$X'.'.'.'.'.'.*X*X$X].7.6.6.6.<.<.<.<.<.<.,.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.,.<.<.<.,.5.;...] 1 , '.'.).$X$X'.*X*X*X$X*X*X'.=X*X$X*X$X*X*X*X*X=X>X=X=X*X*X*X*X*X*X'.'.'.'.*X'.*X*X*X*X*X*X'.>X>X>X>X>X*X>X>X/.>X'.>X*X>X>X>X>X>X>X>X,XX'.*X*X*X*X*X*X*X*X>X>X*X>X*X*X*X=X*X*X*X'.'.'.$X*X*X$X>X*X*X>X>X>X*X>X*X>X>X>X>X>X>X>X>X*X>X>X>X>X>X>X,X>X,X,XX*X'.>X*X*X*X*X:X*X*X>X>X'.>X>X>X*XX'..X>X>X>X'.>X>X*X*X>X*X.X>X>X>X>X>X,X>X,X,X,X3X.@.X. .} } } } } } } } } } } } { } { } } { } { } { } } } } } } } { ' 1 , & % - $X$X'.'.'.*X$X*X*X*X>X'.=X'.*X=X>X'.>X/.,X,X>X>X>X>X*X>X>X*X*X*X*X$X*X'.$X'.*X*X*X*X*X*X.X*X>X*X#X'.>X>X>X>X>X>X>X>X>X>X>X>X>X>X,X1X,X1XX1X*X>X=X>X*X'.'.>X>X,X*X,X>X>X=X>X>X>X*X*X*X*X$X'.$X'.'.*X*X*X*X#X>X>X>X>X>X>X>X'.>X>X>X*X>X>X>X>X*X>X>X,X>X>X1XX*X=X*X,X*X=X,X*X>X>X>X>X*X>X>X>X>X*X>X=X*X=X*X*X*X>X=X*X*X*X=X>X'.>X]..X>X*X,X*X>X>X*X.X>X*X>X>X>X>X>X>X>X>X,X,XX'.>X>X,X>X*X>X>X>X>X>X*X>X>X,X>X>X>X>X>X*X>X'.*X*X*X*X'.'.*X*X*X*X>X>X>X*X*X>X>X*X,X>X>X*X>X>X>X>X>X2X>X2XX*X>X'.*X*X>X*X>X'.>X'.*X*X*X*X>X*X>X>X*X>X*X*X#X/.+X).%X'.*X*X$X=X*X>X*X.X,X>X>X>X>X>X>X>X*X>X>X*X>X*X>X>X>X>X*X>X>X'.>X*X*X*X*X*X*X*X*X=X*X>X>X*X'.>X>X>X>X>X>X>X=X>XX>X>XX>X*X>X>X>X,X*X>X>X>X*X>X>X>X>X>X>X>X>X>X>X*X>X'.*X*X*X'.*X*X*X*X*X>X#X>X>X>X>X>X>X*X>X>X,X,X,XX*X*X>X'.$X*X*X].*X>X.X>X>X>X.X*XX'.$X,X].'.].$X'.'.*X*X*X=X*X>X*X>X>X>X>X*X>X.X>X*X.X>X>X'.*X>X>X>X*X>X.X>X*X*X>X,X*X.X*X>X=X>X*X>X>X>X*X>X>X,X>X,X>X,XX2X,X,X,XX'.*X=X>X'.=X=X>X].=X&X$X$X%X'.%X*X'.*X'.>X*X>X>X>X>X>X>X>X>X>X>X>X*X>X>X>X*X>X>X>X>X>X>X>X>X>X,X>X*X.X>X*X>X>X>X>X>X>X>X>X,X,X>X>X>X,XX#X*X#X>X>X*X>X=X:X#X#X>X>X@X>X#X'.'.=X=X>X=X>X,X,X,X>X>X*X>X*X>X>X>X>X>X*X>X>X>X>X>X>X>X>X*X>X>X>X].*X>X*X>X>X*X>X>X>X>X>X>X>X>X,X,X,X,X1X4X4X3X5X1X5X4X1X5X4X4X1X5X5X5X5X5X7X7X5X7X7X7X7X7X7X7X7X9X7X8X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X5X7X5X7X7X7X7X5X7XX*X>X=X*X>X,X*X=X>X,X*X*X+X'.'.'.'.*X>X'.>XXX=X>X>XXX,X>X>X>X>X>X>X>X>X>X*X>X>X,X*X>X>X=X*X,X>X>X>X>X>X>X:X>X>X>X>X>XX,XX*X*X*X*X>X>X>X>X>X=X>X=X'.=X=X$X=X*X*X'.>X>X*X,X,X,X,X>X,X>X,X,X>X>X>X>X>X>X>X*X>X*X>X>X>X>XX>X1X*X>X>X>XX>X2XXX>X>X>X>X*X,X=X=X=X'.>X=X*X*X*X>X>X>X>X>X1X>X>X>X,X>X>X>X,X>X>X,X*X>X*X>X>X>X>X>X.X>X>X>XX1X2XX>X>X,X>X*X,X,X].,X,X*X>X*X*X*X>X>X*X>X,X,X>X,X>X1X,X>X,X*X,X*X>X>X>X>X>X*X>X>X>X*X>X,X>XX,X,X,X1X1X,X1X1X1X1X1X=X,XX*X>X,X*X*X>X,X*X*X>X>X>X*X.X*X,X*X>X>X>X>X*X>X>X>X>X,X,X,X,X,X,X>X>X*X>X*X>X>X>X>X>X,X,X,X,XX*X*X*X*X*X>X>X>X>X>X>X*X>X>X>X,X>X>X>X*X*X>X*X>X>X>X>X>X>X>X>X,X1X>X>X,X>X>X>X>X>X>X>X>X>X>X,X>X,X3XX'.>X,X*X>X>X>X>X>X*X>X>X>X>X>X>X>X>X>X>X>X.X>X>X,X>X>X,X>X>X>X*X>X*X>X>X*X>X>X>X>X,X,X>XX*X>X>X*X.X>X>X>X*X>X>X>X>X>X>X>X>X>X*X,X>X>X>X>X,X>X,X>X>X>X>X*X,X,X*X,X,X*X>X>X>X>X>X>XX*X>X>X>X.X*X>X>X>X*X>X*X>X*X,X>X>X1X>X,X:X>X>X,X>X>X>X>X>X,X,X*X>X,X3X*X>X>X>X>X,X>X>X,X c #04791B", ", c #13770A", "< c #117F01", "1 c #028402", "2 c #03830A", "3 c #028B04", "4 c #008F08", "5 c #0A8201", "6 c #0B820C", "7 c #0C8B01", "8 c #038411", "9 c #048119", "0 c #019503", "q c #019509", "w c #009903", "e c #009C0A", "r c #089401", "t c #009D12", "y c #049216", "u c #108F00", "i c #1B872F", "p c #01A402", "a c #00A50A", "s c #01AA03", "d c #00AA0A", "f c #0BA000", "g c #0BAC01", "h c #02B301", "j c #00B40C", "k c #00BA02", "l c #00BB0B", "z c #08B200", "x c #07B414", "c c #16A82F", "v c #1CA92F", "b c #1BBA2A", "n c #1DBB36", "m c #229F27", "M c #249A28", "N c #23A42B", "B c #24A92E", "V c #28A52C", "C c #29AE2C", "Z c #24B929", "A c #29B027", "S c #2BB528", "D c #28BA2A", "F c #20B031", "G c #35B927", "H c #30B829", "J c #25AC40", "K c #01C101", "L c #00C10B", "P c #00CB01", "I c #0BC300", "U c #00C713", "Y c #05CA1F", "T c #00D103", "R c #00D40C", "E c #00DE02", "W c #00D612", "Q c #12DA00", "! c #01EA00", "~ c #00EE0C", "^ c #0DE900", "/ c #00ED10", "( c #00F30F", ") c #01FB03", "_ c #06FD0A", "` c #01FF12", "' c #00F81D", "] c #0FF711", "[ c #10EA00", "{ c #16ED18", "} c #10FF0F", "| c #13FF11", " . c #16FF1A", ".. c #18FF10", "X. c #19FF1F", "o. c #15FF20", "O. c #26CB2F", "+. c #28C12B", "@. c #2ECF33", "#. c #21FF0D", "$. c #20FD14", "%. c #25E338", "&. c #2CFF3D", "*. c #3AFF31", "=. c #25CA42", "-. c #31CF45", ";. c #37FE4B", ":. c #3EFF48", ">. c #4CFF3F", ",. c #55FF3F", "<. c #46C76B", "1. c #5CCF7F", "2. c #5FD37F", "3. c #40E24B", "4. c #46FF41", "5. c #43FF4E", "6. c #4CFF45", "7. c #4AFC49", "8. c #45FF50", "9. c #4CFF55", "0. c #48FF5D", "q. c #54F952", "w. c #5EEE6C", "e. c #55FE70", "r. c #57FD7D", "t. c #69DB78", "y. c #61FE5F", "u. c #6BFE5D", "i. c #71FE5D", "p. c #6DEC64", "a. c #63FE62", "s. c #61FE6C", "d. c #61FB70", "f. c #6AFE75", "g. c #7DF070", "h. c #55B58C", "j. c #56BF99", "k. c #4FB3BF", "l. c #54BFA7", "z. c #59BFA6", "x. c #53BCAC", "c. c #52B3BC", "v. c #6BBFBE", "b. c #4FA7CC", "n. c #4EA9CA", "m. c #4CA2D4", "M. c #4EAAD1", "N. c #51AFC6", "B. c #54ABCB", "V. c #58AECD", "C. c #52A5D5", "Z. c #54A5D8", "A. c #55A9D5", "S. c #56A9D9", "D. c #58A5D5", "F. c #59A5D9", "G. c #5AAAD5", "H. c #5BAAD9", "J. c #53B3C1", "K. c #58B5C1", "L. c #5AB2CC", "P. c #5DB9C2", "I. c #5CB8C9", "U. c #5DB1D1", "Y. c #61ACD6", "T. c #63AEDA", "R. c #69ADDA", "E. c #61B3CE", "W. c #64BCCA", "Q. c #6ABDC7", "!. c #6ABBCA", "~. c #64B4D3", "^. c #66B0DC", "/. c #66B8D8", "(. c #68B5D3", "). c #6AB2DD", "_. c #6BB8D4", "`. c #6CB8DB", "'. c #70AFD8", "]. c #74BECC", "[. c #78BECC", "{. c #70B3D6", "}. c #71B5DE", "|. c #77B9D3", " X c #73B8DD", ".X c #79B0DC", "XX c #66BAE1", "oX c #6CB4E0", "OX c #6EB9E0", "+X c #72B6E0", "@X c #75B8E0", "#X c #7BBBE2", "$X c #5EC59C", "%X c #5DC99B", "&X c #56C2A4", "*X c #5DC6A0", "=X c #5CC3A9", "-X c #63C79A", ";X c #65C99C", ":X c #72DC8B", ">X c #72D895", ",X c #63C5AE", " b 4XU.G.S.H.S.S.F.S.H.H.H.S.H.", "UXIXIXIXIX#X#X#X#XOX@XoXoX+XoXoXT.R.Y.G.G.c..#.~ W k k j g s q 5 # D 5XE.^.H.H.T.H.T.H.T.H.T.Y.H.", "UXIX#X#X#X@X@X#X+X+X+XR.}.(.(.W.7X8XVXGXSXs.5.o.( R K z s l g s 0 1 o Z ,XE.Y.T.T.T.T.T.T.T.H.H.H.H.", "UXIXIX#X@X#X@X+X+X+X+X`.).(.!.3XpXsXCXhXa.4. .~ W K s z j k g p 0 1 $ Z ,X~.^.T.T.T.T.T.T.T.^.H.T.H.", "IXIX#X#X@X@X@X+X+X+XoXR.`.!.5X:Xg.g.hXy.0...^ T k z z k k k g p 0 1 ; Z 6X(.^.^.^.^.T.T.T.T.T.T.T.H.", "IXIX#X#X#X@X@X.X+XoXoX`./.7X>Xp.q.r.9.*.} ! P K k h d L z l s s e = $ D eX(.^.^.R.^.^.T.T.T.T.H.T.T.", "IX#X#X#X@X+X+X@XoXoX}.R./.jX1.%.| $.` ) E P h h k k j h s l z s w = $ D 6X(.^.^.^.^.^.T.T.^.T.T.T.H.", "IX#X#X#X#X+X+X+XoX+X}.R.`.!.1X=.x g s j h h h k h j k h z l s d 0 = $ D 6X(.^.^.^.^.^.^.^.^.^.T.T.T.", "IXMXMX#X@X@X@X+X.X`.`.R.).{.Q.2Xn y w p p s s k h h h k s l z s e = $ D 6X(.T.^.^.^.^.oX^.oX^.^.T.T.", "IXcX#X#X@X@X@X+X+XoXoXoX}.^. XkX;XF 9 1 w s s s h h h z z l g d w = $ D 6X(.^.^.^.oX^.).R.^.^.^.T.H.", "MXMX#X#X#X#X X+X}.}.`.oX).).^./.Q.-XB 8 1 w s s s k h z z l s s e = $ D 6X).^.^.^.oXoX^.).).^.^.^.T.", "MXMX#X#X@X@X X@X}.+X+X`.).}.^.^.).Q.-Xv 6 1 w a d h h k z l z s w = $ Z 6XR.^.^.oX^.^.oX^.).^.^.T.T.", "MXMX#X#X@X X+X X@X}.oXoXoX).R.`.T.`.!.2Xm - 4 e d s s z z l s s w = ; D 6X(.^.oX^.^.oX^.).^.^.^.^.T.", "MXMXMX#X#X#X#X@X@X+X.XoX`.`.R.oXR.^.).Q.3XB * 5 e p p h s l z d w 5 X D 6X(.^.^.oX^.oX^.).^.).^.^.^.", "MXMXMXMX#X#X#X@X X@X+X+X}.oXR.oXR.oX^.).].2XN 8 5 0 a s s j h a w 5 # Z 6X_./.^.R.).^.).^.).^.).oXT.", "MXMXMX#X#X#X#X#X@X@X X}.}.`.R.oXoXR.^.).{.Q.qXB & 1 w p s j h a 0 = % D 6X_.^.^.).).).).).^.^.^.T.R.", "UXMXMXMX#X#X#X#X#X#X+X+X+X+X+X`.R.oX).R.(.}.kXqXN & 1 a f s p d w = X D 6X_.^.).^.).).).).).^.^.T.T.", "MXMXMXMXIX#X#X#X#X X@X@X+X+X+XR.oXoX`.oX+X).oXkXtXB 9 1 w d f a w = # D 6X_.).R.).^.).^.^.^.^.T.T.T.", "UXMXIX#X#XIX#X#X#X#X#X@X@X+X+X}.}.R.R.oX`.R.^.@XcXqXB & 3 e r a q = X D eX_.(.R.).^.).).^.R.^.^.T.T.", "MXMXIXIXIX#X#X#X#X#X@X@X@X@X X}.+XoX+X`.R.+X`. X}.xXyXB 6 1 r e 0 = X Z 6X_.).^.^.^.^.^.).^.^.^.T.T.", "MXIXMX#X#X#X#X#X#X@X#X@X@X@X@X}..X`.}.+XoX@XR. X X X[.qXN 8 5 4 3 = X D 6X(.^.^.^.).).T.^.^.^.^.^.T.", "MXIXIXMX#XIX#X#X#X#X#X@X@X@X@X XoX}.+X+XoX`.+X.X}.}. XzXeXB , = 1 : o G 3X(.^.^.^.^.).).R.^.^.^.T.H.", "MXMXIX#XIX#X#X#X#X#X@X#X+X@X@X+X+X+XoX}.}.'.oX+X+X+X.X X[.0XV > # % o G 6X(.R.^.).^.).).^.^.^.^.T.T.", "MXMXMXMX#X#XIX#X#X#X#X#X@X@X@X@X+X+X+X}.oXoXoX.X+X+X}. X|.xXqXc ; + O S 6X_.).oX).^.^.^.^.^.^.T.T.T.", "MXMXMXMXIX#XIX#X#X#X X@X X@X@X X+X+X`.`.'.+XoX+X+X+XoX+X`. XxXuXM . D 6X_.`.).).).^.).^.^.^.^.T.T.", "MXMX#XIX#XIX#XIX#X@X#X X@X@X+X+XoXoXoXR.oXR.oX+XoX`.}.+X X X).|.0XM @ A eX_.R.`.).^.).^.^.^.^.^.T.T.", "MXMXMXMX#XMXMX#X#X#X@X@X`.+X+XoX).).).oXR.oXR.oXoXoX.X+X@X}. X`.xX0Xi F wX_.}.R.).).).).oXR.^.^.T.T.", "MXMXIXMXIXMX#X#X#X#X@X}.`.oX`.R.).R.oX^.oXoX`.oX}.R.R.}.}.{. X`.`.zXeXh.zX_.`.R.).).^.^.^.T.^.^.T.T.", "IXIXIXIXMXMXIX#X#X#X@X XoXoXoXoXoX^.oX^.R.oXR.oX}.oX+X`.R. X.X+XXX{.|.cX`.).oX`.^.^.R.).oX^.T.T.T.T.", "IXMXIXIXIXIXMX#X#X#X@X@X XR.oXR.^.^.^.).R.T.oXR.R.R.oXoX}.+XoX}.+X}.`.}.+X`.R.).).).R.T.T.^.T.T.T.T.", "IXIXIXIXIXIXIX#X#X#X X+X XR.`.oXT.).T.oXT.^.R.oXoXR.).oX`.+X}.oX`.oX`.`.oX}.R.oXR.`.oX^.R.^.^.T.T.T.", "IXIXIXIXIXIXIX#XMX X#X+X+X+X`.R.).T.oXT.T.^.T.T.R.oX).).oXoX}.oXoXoX.XoXoXoXoXR.oXR.T.R.^.^.T.T.T.T." }; micropolis-activity/images/tiles-132.xpm0000664000076400007640000001027010724145723020451 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "67 57 7 1", " c black", ". c #585858585858", "X c gray50", "o c #7F7F7F7FFFFF", "O c green", "+ c #FFFFBFBF7F7F", "@ c #DFDFDFDFDFDF", /* pixels */ " ", " ............................................................... ", " . ............................................................. @ ", " .. ........................................................... @@ ", " ... @@@ ", " ... ++++++++++++ +++++++++++++++++++++++++++++++++ @@@ ", " ... ++++++++++++ +++++++++ +++O++++++++++++ +++++++++++OO+++ @@@ ", " ... + ++ +++ + + ++ ++ O+++++++ +++OOO++++OO++ @@@ ", " ... ++++ +++++++++++ ++ +++ +++O++O++++ X ++++OO+OOOOO+O++ @@@ ", " ... + ++ +++++++ ++ ++ ++++ +++O+O++ + X +++++OOOO+++O+++ @@@ ", " ... + +++++OO+ + ++++++ +++OOO+ + X ++++++++X+++++++ @@@ ", " ... + ++++O+++++++ + ++ +++XOOXXXXXXXXX X+++++++ X+++++++ @@@ ", " ... +++++O+++++ + +++ ++ XX + XXXXX XXXXXXX ++X++O+++ @@@ ", " ... +++++ OOOO+ X +++ XXXXX X XX X XX+++++ @@@ ", " ... +++++OOO+O++ XX XXXXX X XX XXXXXXXXX X++o @@@ ", " ... ++++++++++++ XXXXX XXXXX XXXX XXXXXXXXXXXXX++o @@@ ", " ... +++++ +++++++ XXXXXXXXX XXX X XXX XXXX XXX XXXXX+oo @@@ ", " ... +++++++++++++ XXXXXXX X XXX ++oo @@@ ", " ... ++ X X XX XX X XXX++oo @@@ ", " ... ++++ ++++++++ XXXXXXXXXX XX X X XX XX XXXXXXXX+ooo @@@ ", " ... ++++ ++OO++++ XX XXX XXXXXXXX XX XX XX XXXXooo @@@ ", " ... ++O+ ++OO++++ XX XXX XXXX XX XXXX XX XX XXoooo @@@ ", " ... ++O+ +++ + + XX XXXX XXXXXXXX XXXXXX X XX X oXoo @@@ ", " ... ++++ +++ ++ XX XXXXX XXXXXXXX XXXX X X X X X oooo @@@ ", " ... X XX X XXX X X X Xooo @@@ ", " ... ++++ XX X X XX XXXXX XXXXXXXX XXX X XXXX XXoo @@@ ", " ... ++++ X X XXXX XXX XXXXXXXX XXX XXXX XXXoo @@@ ", " ... ++++ X XXXX XXX XXX XX X X XXXX XXXX oo @@@ ", " ... ++++ XXXXX XX XXXXXXXXX XXX XX XX XX Xooo @@@ ", " ... + X XXX X Xooo @@@ ", " ... ++++ X X XXX X XXX X Xooo @@@ ", " ... O+++ X X X X XX X X XXXX X XX Xooo @@@ ", " ... +O++ X X X X XX XXXXX XX Xooo @@@ ", " ... +O++ X X XX XX XX X X Xooo @@@ ", " ... +O++ X X XX XX XXO X XX X XXX XX X XXooo @@@ ", " ... X X X X XX X XXoooo @@@ ", " ... ++++ XX X XX XX XX X X XXX X XX OXXXoooo @@@ ", " ... ++++ XX X X X X XXX XX XXX XXX X XXXX XXoooo @@@ ", " ... ++++ XX X X X X XXX XX O O XOXOXXXX oooooo @@@ ", " ... ++++ XX O X oooooooo @@@ ", " ... ++++ XX XX O XOXXX XXXXXXXX XXXoooo +++oo @@@ ", " ... ++++ X XXX XXX XXXXXXXX XXoXXooo+ +OO+oo @@@ ", " ... ++++ XX X X XXX X oooooXooooo++ +O++oo @@@ ", " ... ++++ X X X XX XX X XXX XXXXXooooooooooooo++OO ++ooo @@@ ", " ... ++++ X XXXXX ooXoooooooooooooo +O oooo+ @@@ ", " ... XX XXX XXXXXXXooooooooooooooooooooooooooo++ @@@ ", " ... ++ X XXXXXXoooooooooooooo ooooooooo +++ +++ @@@ ", " ... ++++ +++++ XXXXXXoooooooo ++++++++++++ ++++++ ++++ @@@ ", " ... +O++ +++++ + XXXXXXooooo++++++++++ ++ + + +++ ++++ @@@ ", " ... ++OO +++++ + XXXXXoooo+++++++++O+ ++O+ +++++ ++ ++++ @@@ ", " ... ++++O++++++ + XXXXooooo++++ OOO+O +++OOOO++++++ ++++ @@@ ", " ... +++++++++++++ XXooooo++++++++++++++++ +++O++OO++++++++ @@@ ", " ... @@@ ", " .. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ ", " . @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ ", " @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ", " " }; micropolis-activity/images/obj6-2.xpm0000664000076400007640000000512710724145723020032 0ustar simcitysimcity/* XPM */ static char * obj6_2_xpm[] = { "48 48 5 1", " c None", ". c #3F3F3F3F3F3F", "X c #7F7F7F7F7F7F", "o c #BFBFBFBFBFBF", "O c #000000000000", " ", " . . . . . . ", " X.. .. ...X ... .. . . ", " . ...o..XXX.o .o.............. ", " o .oXo...o.X..o..............O ", " ooX.o.....X..X...X....XX..OO. ", " o .. oo.X..X..X...X.......O.... ", " ....oo..o..o..XX........O. . ", " .oo....o.oo.XX....OOOO.. ", " .. o.o.o.X.oXX.......OOOO ", " oo oooooXXXXX....OOOO ", " ooooooXXXXX.X...OOOO ", " oooXoooX......OOOO ", " ooooXXXXX...O.OOO ", " ooooXX...XX..O.OO ", " oooooXXXX..O.OOOO ", " oooooXXXXX...OOOO ", " ooooXX.XX...OOO ", " oooooXXXXX.OOOOO ", " ooooXXXX....OOO ", " oooooXXXX.XOOOOO ", " ooooXXX.....OO ", " ooooXXXX..OOO ", " oooXXXX...OOO ", " oooXXXX...OO ", " oooXXXXX..OO ", " oooXX..O.O ", " ooXoX....O ", " oooo....OO ", " oooXXX.OO ", " ooXXX.OOO ", " ooXX...O ", " ooXX..O ", " oooXX...O ", " ooX..O ", " ooXXXOO ", " oXXX.O ", " oXX... ", " oooXX.O ", " oXXX.O ", " X..O ", " ooXXO ", " oXOO ", " oX. ", " oX. ", " ooX. ", " o ", " o "}; micropolis-activity/images/obj4-7.xpm0000664000076400007640000000530110724145723020027 0ustar simcitysimcity/* XPM */ static char * obj4_7_xpm[] = { "48 48 10 1", " c None", ". c #000000000000", "X c #CCCC7F7F6666", "o c #00000000E6E6", "O c #3F3F3F3F3F3F", "+ c #BFBFBFBFBFBF", "@ c #FFFF00000000", "# c #7F7F7F7F7F7F", "$ c #FFFFFFFFFFFF", "% c #FFFF7F7F0000", " ", " ", " ", " ", " ", " .. ", " .XX.. ", " .XXXX.. o ", " .XXOXXX.. o ", " .OXXXXOXX. o ", " ..XXXXXXXX. o o o ", " ..OXOXXXX+++ o ", " @..XXXXX+#+## o ", " ...XXX+#+##$# o o o o ", " @...X+#+###### ", " ....++##$###O... o o ", " o@.....O####.%.O.. o ", " @..#..O##..%..O. o ", " o @.....O#O..%... o ", " @..#..O#O..%.## o ", " o @.....O#O.O#### ", " @..#..O#O####.... ", " o @.....O####.%.O.. ", " o @..#..O##..%..O. ", " @.....O#O..%... ", " o @..#..O#O..%.## ", " o @.....O#O..###+ ", " @..#..O#O###+#. ", " o o @.....O###+#+X. ", " @..#..O#+#+XX. ", " @.....O#+XXXOO ", " o o @....O+XXXXX. ", " @....XXXXXX. ", " @...XXXXXX. ", " o o @..OXXXX. o ", " @..... o ", " o ", " o o o ", " o ", " ", " o ", " o o ", " ", " o ", " ", " ", " ", " "}; micropolis-activity/images/tiles-110.xpm0000664000076400007640000000520310724145723020445 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "48 48 6 1", " c black", ". c red", "X c #FFFF7F7F0000", "o c yellow", "O c gray100", "+ c None", /* pixels */ "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "+++++++++++++++++++++++++++++++++OXXXXX+++++++++", "++++++++++++++++++++++++++++++++X...XXX.++++++++", "+++++++++++++++++++++++++++++++...++.XXX.+++++++", "++++++++++++++++++++++++++++++++++++XXX..+++++++", "++++++++++++++++++++++++++++++++++++XXXX.+++++++", "+++++++++++++++++++++++++++++++++++XXXX..+++++++", "++++++++++++++++++++++++++++++++++XXXXX..+++++++", "++++++++++++++++++++++++OX.++++++XXXXX.X++++++++", "+++++++++++++++++++++++XOXX.++++XXOXX.X.++++++++", "+++++++++++++++++++++++XXX...++XOXXX.X.+++++++++", "+++++++++++++++++++++++XXXX.++XXXXX.X.++++++++++", "+++++++++++++++++++++++XXX..+OXXXX.X.+++++++++++", "+++++++++++++++++++++OXXXXX XXXXX.X.X+++++++++++", "++++++++++++++++++++OXXXXXXXXXXX.X.X++++++++++++", "+++++++++++++++++++.X.XXXOXXXXX.X.X+++++++++++++", "+++++++++++++++++++....XXXXXXX.X.X++++++++++++++", "+++++++++++++++++++...XOXXXXXXX.X++.X.X+++++++++", "+++++++++++++++++++XXXOXXXXXXX.X.X.X.X..++++++++", "+++++++++++++OX.++XXXXXXXXXXX.X.X.X.X.X.++++++++", "++++++++++++XXX...XXOXXXXXXX.X.X.X.X.X.X++++++++", "++++++++++++OXX..XXXXXXXXXX.X.X.X...X..+++++++++", "+++++++++++XXXXXXXOXXXXXXX.X.X.X.......+++++++++", "+++++++++++.X.XXXXXXXXXXX.X......++...++++++++++", "+++++++++++..XXXOXXXXXXX.X......++++++++++++++++", "++++++++++....XXXXXXXXX.X.....++++++++++++++++++", "++++++++++++..XXXXXXXX.X...+++++++++++++++++++++", "+++++++++++++XXXXXXXX.X.X.++++++++++++++++++++++", "++++++++++++XXXXXXXX.X.X.X.+++++++++++++++++++++", "+++++++++++XXXXXXXX.X.X.X.X.++++++++++++++++++++", "++++++++++XXXXXXXX.X.X.X.X..++++++++++++++++++++", "+++++++++XXXXXXXX.X...X.X.X.++++++++++++++++++++", "++++++++X.XXXXXX.......X.X..++++++++++++++++++++", "++++++++X..XX.X...++++.....+++++++++++++++++++++", "+++++++Xo..X.o...+++++...+++++++++++++++++++++++", "+++++++XXoX.o...++++++++++++++++++++++++++++++++", "+++++++XXXXX...+++++++++++++++++++++++++++++++++", "+++++++XXXX...++++++++++++++++++++++++++++++++++", "+++++++.....++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++" }; micropolis-activity/images/obj3-9.xpm0000664000076400007640000000525310724145723020036 0ustar simcitysimcity/* XPM */ static char * obj3_9_xpm[] = { "48 48 9 1", " c None", ". c #FFFFFFFFFFFF", "X c #FFFF00000000", "o c #7F7F7F7F7F7F", "O c #BFBFBFBFBFBF", "+ c #3F3F3F3F3F3F", "@ c #000000000000", "# c #FFFFFFFF0000", "$ c #66666666E6E6", " ", " ", " ", " ", " ", " ", " ", " ", " ..X ", " o.. ", " O.. ", " O... ", " OO.. ", " o...+ ", " ....o ", " OOO o...O+ ", " +.O O....o ", " o.O OO...O+ ", " o..O @OOXO o.....o+ ", " +...O @OOOOOOOOOOOOOOOOOOOOOOOOOOO+ ", " #ooOoO............................++ ", " +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@+++ ", " o..OO+$@$$@@$@$@@$@$@@$@$@$@$@@$.+O+ ", " o..O ooooooooooOOOOOOO+OOOOOOOOOOO ", " o.O @OOXO oOOOOOO+ ", " +OO @..X OO...O+ ", " O....o ", " o...O+ ", " ....o ", " o...+ ", " O... ", " OO.. ", " O.. ", " o.. ", " ..X ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; micropolis-activity/images/tiles-148.xpm0000664000076400007640000001111510724145723020457 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "64 64 12 1", " c black", ". c #3F3F3F3F3F3F", "X c #00007F7F0000", "o c gray50", "O c #00000000E6E6", "+ c #66666666E6E6", "@ c #0000E6E60000", "# c #99997D7D4C4C", "$ c #FFFF77770000", "% c #CCCC7E7E6666", "& c yellow", "* c gray75", /* pixels */ "+++++++++++++++++++++++++++++++++++++++ oooooo++++++++++++++++++", "+++++++++++++++++++++++++++++++++++++++ oooooo++++++++$$++++++++", "++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%oooooo%%%%%%%.%$$%%%%%++", "+++ %%%#%#%%%%%%%%%%%%%#%%%#%%%#%%%%%%%%oooooo%%%%%%.%%%$$%%%%++", "++O %%%ooooooooooooooooooooooooooooooooooooooo%%%%% %%%%%$$%%%++", "++O %%oooooooooooooooooooooooooooo ooooooooooo%%%%%%%%%%% $$%%++", "++O %%ooooooooooooooooooooooooooo . oooooooooooooooooo%% % $$%++", "++O %%oo*oo*oo*o&& o*oo*oo*oo*oooo oooo*oo*ooooooooo.o% % %$%%++", "++O %%oooooooooo&& oooooooooooooooooooooooooooooooooo. . %%%%%++", "++O %%oooooooooooooooooooooooooooooooooo******ooooooo . %%%%%%++", "oooooooo*oooooo*******ooooo******o&.&o&**oooo.ooooooo. .%%%%%%++", "ooooooooooo%%%**ooooo.oooo**oooo.ooooo***oooo.oooooo.o%%.%%%%%++", "ooooooooooo%%***ooooo..oo***oooo..ooo****oooo..*oo*ooo%%%#%%%%++", "oo*oo*oo*oo%****ooooo..o****oooo..ooo****oooo..ooooooo%%%%#%%%++", "ooooooooooo*****ooooo..o****oooo..ooo****oooo..ooooooo%%*....%++", "ooooooooooo*****ooooo..o****oooo..ooo****oooo..ooo*ooo%**ooo.%++", "oooooooooo%**.**o*******************************ooooooo**o o.%++", " %%%%%%%*******.............................*ooooooo**ooo.%++", "++O %%%%%%%**.****oooooooooooooooooooooooooooo.*oo*oooo**ooo.#++", "++O %%%***********oooooooooooo*++ooooooooooooo.*ooooooo**o o.#++", "++O %%**.....*****oo*.ooooooo*+o*+oooooooo*.oo.*oooooo%**ooo.#++", "++O %***.....*.***oo*.ooooooo*+o*+oooooooo*.oo.*.o*ooo%**....#++", "++O %***.....*****oooooooooooo*+Oooooooooooooo.*.ooooo%*....##++", "++O %***...oo*****oooooooooooo*+Oooooooooooooo.*.oooooo@XX####++", "++O %***...oo*****oooooooooo*+++O++ooooooooooo.*.o*ooo@@XX%%%%++", "++O %***...oo*****oooooooooooo*+Oooooooooooooo.*.ooooo@@XX%%%%++", "++O %***...oo*****oooooooooooo*+Oooooooooooooo.*.ooooo@XXooo%%++", "++O %***...oo.****oooooooooooo*+Oooooooooooooo.*.o*oooo@XXo@XX++", "++O %***...oo*****ooooooo*+++o*+Oo*+++oooooooo.*.ooooo@@XX@@XX++", "++O %***...oo*****oo*.oooo*+Oo*+Oo*O+ooooo*.oo.*.ooooo@@XX@@XX++", "++O %**oooooo*****oo*.ooooo*+OO+OOO+oooooo*.oo.*.o*ooo@XXo@XXo++", "++O %*oooo#oo*****oooooooooo*++++++ooooooooooo.*.ooooooooooooooo", "++O %oooo##o*.****oooooooooooooooooooooooooooo.*.ooooooooooooooo", "++O %%#####o************************************.o*oo*oo*oo*oo*o", "++O %%%####o*****oooooooooooooooooooooooooooooo..ooooooooooooooo", "++O %+..###*****oooooooooooooooooooooooooooooo...ooooooooooooooo", "++O %+..%%%*****.............................o...o*ooooooooooooo", "++O %+OO%%%**.**.............................o..oooooo%%%%%%%% ", "++O %%%%%%%*.***.............................o..oooooo%%%%*ooo++", "++O %+..%%%*****.............................o..oo*ooo%%%&*ooo.+", "++O %+..%%%****ooooooooooooooooooooooooooooooo..oooooo%%&.*ooo++", "++O %+OO%%%***ooooooooooooooooooooooooooooooo...oooooo%&.%****.+", "++O %%%%%%%**ooo oooo oooo oooooooo#...oo*ooo%%%&.%&.++", "++O %+..%%%*ooo ...oooo ...oooo ...oooooooo##...oooooo%%&.%&.%++", "++O %+..%%%ooo....oooo....oooo....oooooooo###...oooooo%&.%&.%%++", "++O %+OO%%%%##.....###..........................oo*ooo%%#%%#%%++", "++O %%%%%%%%%##...........*%%...................oooooo%%%#%%#%++", "++$$$$$$$$$$$$$$$$**.....**%%..*%%..........$...oooooo%%%%o%#%++", "++$$$$$$$$$$$$$$$$..ooooo**..o**%%oo*oo*oo**.$o*oo*ooo%%%*o.%%++", "++O %%%%%%%%* .%%*..ooooo*..oo**..oooooooo*.$.oooooooo%%%%o%%%++", "++O %%%%%%%* .%%%...oooooooo*o*..ooooooooo...$oooooooo%%o%%%o%++", "++O %%%%%%* .%%%%%%ooooooooooooooooooooooooo$.oooooooo%*o.%*o.++", "++O %%%%%* .%%%%%%%%%%%%%%oooooo%%%%%%%%%%%*.$%%%%%%%%%%o%%%o%++", "++O %%%%* .%%%%%%%%%%%%%%%oo*ooo%%%%%%%%%%* $.%%%%%%%%%%%%o%%%++", "++O %%%* .%ooooooooooooooooooooo%%%%%%%%%* ..$%%%%%%#%#%%*o.%%++", "++O %%%%.%%ooooooooooooooooooooo%%.....%* .%$.%%%%%%%%%%%%o%%%++", "++O %%%%%#%oo*oo*oo*oo*oo*oo*ooo%%.%%%%* .%%.$%%%%%%#%#%%%%%%%++", "++O %%%%%%#ooooooooooooooooooooo%%.%%%* .%%%$.%%%%%%%%%%%%%%%%++", "++O % %%%%%.oooooooooooooooooooo%%.%%* .%%%%.$%%%%%%%%%%%%%%%%++", "++O %%%%%%%o.*.oo%%%%%%%%%%%%%%%%%.%%%.%%%%%$.%%%#%%%%%%%%%%%%++", "++O .....o .$ ++", "++OOOOOOOO ooooooOOOOOOOOOOOOOOOOOOOOOOOOOOO$.OOOOOOOOOOOOOOO+++", "++++++++++ oo*ooo+++++++++++++++++++++++++++.+++++++++++++++++++", "++++++++++ oooooo+++++++++++++++++++++++++++++++++++++++++++++++" }; micropolis-activity/images/sctkyo.xpm0000664000076400007640000001027710724145723020351 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "67 57 8 1", /* colors */ "` c #000000", "a c #00BF00", "b c #3F3F3F", "c c #3F3FFF", "d c #BF7F3F", "e c #3C00BF", "f c #585858", "g c #DFDFDF", /* pixels */ "```````````````````````````````````````````````````````````````````", "``ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg``", "`g`ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg`f`", "`gg`ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg`ff`", "`ggg```````````````````````````````````````````````````````````fff`", "`ggg`dddd`ddddddd`ddadddddddadddddd`dddddadddddddaaadddd`ddddd`fff`", "`ggg`ddddd`dddddd`dddddd`ddadaddddd`dddddddddadddddaaddd`ddddd`fff`", "`ggg`ddddd`adaddd`ddd```b``ddddadda`dad`d```dddaddaaddd``ddddd`fff`", "`ggg`daddd`dddddd`dd`bbbbb`dddddd`d`d`````````daddddddd``ddddd`fff`", "`ggg`ddddd`dddddd`dd`bb`````dddd`dd`ddddbb``dddd`ddddd`ddddddd`fff`", "`ggg`ddddd`dddddd`d``bb```aaadd`ddd`dddd`b`ddddd`ad```ddddaadd`fff`", "`ggg```````ddd``````dbbd`daaaaaddd```ddd`bb`dddd`dd``dddddadad`fff`", "`ggg`d`ddd`ddd`dd````ddd``aaaaadd`b```dd``bbbdbb`bd`dddddddddd`fff`", "`ggg`dd`dd`dd`ddd``bb``daaaaaaddd`````bbbbbbb`bb`bd`aadddddddd`fff`", "`ggg`ddd`d```dd`b`bbbb``adaa`````b`bbbbbbbbbb`bb`b```````ddddd`fff`", "`ggg`dddd`bbbb``b`bbbbbaaaadbb`bbb`````````bbbbb`b``ddbbbbdddd`fff`", "`ggg`ddd```bb`bbb`bbbbbb```bbb`bbbb`bbbbbbb`````````b`bbbbdddd`fff`", "`ggg````````bbbbb`bbb``````bbb`bbbb`bbbbbbbb`bb``bb`bbbbbbdddd`fff`", "`ggg`b`bb`````````bbbb`bbb`bbb`bbbb`bbb``bbb`bbb`bb`bbbbbbdddd`fff`", "`ggg`b``bb`bbbbbb`bbbb`bbb`bbb`bbbb`bbb````````````````````````fff`", "`ggg`bbb``bbbbbbb```````````````````bbb``bbb`bbb`bb`bbbbb`bbdd`fff`", "`ggg`bbbbb`bbbbbb`bbbb`bbb`bbb`bbb``bbb``bbb`bbb`bb`bbbbb`bbdd`fff`", "`ggg`bbbbbb``bbbb`bbbb`bbb``bb``````b````````bbb`bb`bbbbb`bbdd`fff`", "`ggg`cbbcbbb``````bbbb`bbb``bb`b````cccc``````````````````bbdd`fff`", "`ggg`ccbcbbbbbbbb`bbbb`bbb`b```bbccccaaccc`b`bbbbbb`bbb`b`b`dd`fff`", "`ggg`cccb`````````bbbb`bbb`bbb``bcaaaaaaacbb`bbbbbb`bbb`b`b`dd`fff`", "`ggg`ccccbbbb`bbb`bbbb`bbb`b`b``bcaaaaaaacb`bbbb``````````b`dd`fff`", "`ggg`ccccbbbb`bbb```````````````bcaaaaaaccb`bbbb`bb`bbb`b`b`dd`fff`", "`ggg`ccccb````````bb`bb`````b``bbccccaaacbb``````bb`bbb`b`b`dd`fff`", "`ggg`cccccbbb`bbbbbb``bb```bb``bbb`bcccccb``bbb`bbb`bbb`b```dd`fff`", "`ggg`cccccbbb`bbbbbb`bbbbb`bb``bbbbb``bbbbbbbbb`bbb`bbb`bbbbdd`fff`", "`ggg`cccccbccccbc`bb`bb`b`````````b``````bbbbbb`bbb`bbb`bbbbd``fff`", "`ggg`cccccbccc`ccccc`bbbb``bb``b`bb`````b`bbbbb`bbb``````````b`fff`", "`ggg`ccccccccccccccccccc`b``````````````````````````bb``bb`b`b`fff`", "`ggg`ccccccccccccccccccccbccbb`bbbbb``bbbbbbbbbbbbbbbbb`bbb``b`fff`", "`ggg`ccccccccccccccccccccbcbbb`````bbbb```````````bbbbb`b`bb`b`fff`", "`ggg`cccccccccccccccccccccccccbbb``bcccccc`ccc`bbb`bbbb`b`bbb``fff`", "`ggg`cccccccccccccccecccccccccbbc`ccccbbbcccccc``bb`bbb`bbbbb``fff`", "`ggg`cccccccccccccccccccccccccccc`cccccccccccbcc`cbb`````bbbb``fff`", "`ggg`cccccccccccccccccccccccccccc`cc`c````c`cccccccbb`b`b``````fff`", "`ggg`ccceccccccccccccccccccccc```````````````bbbcccbbb``bb``bb`fff`", "`ggg`cccccccccccccccccccccccccc``bbb````bbbbbb`bcccccbb`bbb`bb`fff`", "`ggg`cccccccccccccecccccccccccc``bbb`````````````ccccccb`bbbbb`fff`", "`ggg`ccccccccccccccccccccccccc``bbbb``abbb``d``bbbbcc`ccccbbbb`fff`", "`ggg`ccccccccccccccccccccccccc`bbbbb``bbbb``d``bbbbbcc`cccbcbb`fff`", "`ggg`cccccccccccccccccccccccccbbbbbb``bbbb``d```````d`d`ccbccb`fff`", "`ggg`ccccccccecccccccccccccccc``````````````````dd`ddddd`d`ccc`fff`", "`ggg`ccccccccccccccccceccccccccc```b`bbbbbb`ddddd``ddddd`dd`d``fff`", "`ggg`cccccccccccccccccccccccccccbb`b``bbbbb`aaad`b`ddddd`ddddd`fff`", "`ggg`ccccccccccccccccccccceccccc```bb````````````a````````dddd`fff`", "`ggg`cccceeccccccccccccccccccccc`b`bb```dddddddddd`ddddddddddd`fff`", "`ggg`cccccccccccccccccccccccccccbb`bb`dddddddddddddddddddddddd`fff`", "`ggg```````````````````````````````````````````````````````````fff`", "`gg`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`ff`", "`g`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`f`", "``fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff``", "```````````````````````````````````````````````````````````````````" }; micropolis-activity/images/grcom.xpm0000664000076400007640000000273210724145723020141 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "32 32 15 1", /* colors */ "` c #000000", "a c #7F7F7F", "b c #00BF00", "c c #3F3F3F", "d c #3F3F00", "e c #003F00", "f c #FF3C00", "g c #3C00BF", "h c #727272", "i c #FFFFFF", "j c #FFFF00", "k c #DFDFDF", "l c #7F3D00", "m c #3C00FF", "n c #BFBFBF", /* pixels */ "````````````````````````````````", "``kkkkkkkkkkkkkkkkkkkkkkkkkkkk``", "`k`kkkkkkkkkkkkkkkkkkkkkkkkkk`h`", "`kk`kkkkkkkkkkkkkkkkkkkkkkkk`hh`", "`kkk````````````````````````hhh`", "`kkk`gggggggggggggggggggggg`hhh`", "`kkk`gggggggggggggggggggggg`hhh`", "`kkk`gmgmgmgmgmgmgmgmgmgmgm`hhh`", "`kkk`mgmgmglllllgmgmgmgmgmg`hhh`", "`kkk`gmmmgmlddddmgmmmgmmmgm`hhh`", "`kkk`mmmmmmlcdcdmmmmmmmmmmm`hhh`", "`kkk`mmmmmmlddddmmmmmmmmmmm`hhh`", "`kkk`mmmmmmlcdaaaaaaammmmmm`hhh`", "`kkk`mmmmmmlddinnnnnnnmmmmm`hhh`", "`kkk`mmjaaaacdincncncnmmmmm`hhh`", "`kkk`mmjfffffdinnnnnnnmmmmm`hhh`", "`kkk`mmjfffffdincncncnmmmmm`hhh`", "`kkk`mmjfafafdinnnnnnnmmmmm`hhh`", "`kkk`eejfffffdincncncneeeee`hhh`", "`kkk`eejfffffdinnnnnnneeeee`hhh`", "`kkk`eejfafafdincncncneeeee`hhh`", "`kkk`eejfffffdinnnnnnneeeee`hhh`", "`kkk`eejfffffeincncncneeebe`hhh`", "`kkk`ebjfafafeinnnnnnnbebeb`hhh`", "`kkk`bebfffffbincncncnebebe`hhh`", "`kkk`bbbbbbbbbbnnnnnnnbbbbb`hhh`", "`kkk`bbbbbbbbbbbbbbbbbbbbbb`hhh`", "`kkk````````````````````````hhh`", "`kk`hhhhhhhhhhhhhhhhhhhhhhhh`hh`", "`k`hhhhhhhhhhhhhhhhhhhhhhhhhh`h`", "``hhhhhhhhhhhhhhhhhhhhhhhhhhhh``", "````````````````````````````````" }; micropolis-activity/images/checkbox2hilitechecked.xpm0000664000076400007640000007457510724145723023426 0ustar simcitysimcity/* XPM */ static char *checkbox_hilitechecked[] = { /* columns rows colors chars-per-pixel */ "190 70 256 2", " c #0A141B", ". c #0B1A1B", "X c #0C1915", "o c #121B1E", "O c #0C1C2C", "+ c #0B1825", "@ c #111C27", "# c #0E1F36", "$ c #0B221B", "% c #0C2D19", "& c #0A3318", "* c #112816", "= c #143A1B", "- c #14253A", "; c #112F34", ": c #142B43", "> c #192E4D", ", c #162844", "< c #182E52", "1 c #1B314C", "2 c #183449", "3 c #1B3353", "4 c #1C355A", "5 c #1B3A5C", "6 c #163256", "7 c #0E2A45", "8 c #1D3C64", "9 c #1D3D6A", "0 c #1D3E71", "q c #213B5E", "w c #203455", "e c #223D65", "r c #233D6B", "t c #293D6A", "y c #273B66", "u c #233E72", "i c #293D71", "p c #313F6E", "a c #0D4A02", "s c #0C4702", "d c #0E4719", "f c #0E5302", "g c #114B09", "h c #144917", "j c #115F02", "k c #17453C", "l c #104A21", "z c #116302", "x c #126B02", "c c #166608", "v c #157902", "b c #167605", "n c #196717", "m c #1C6830", "M c #276735", "N c #2D7933", "B c #247D1B", "V c #194A44", "C c #1C4E49", "Z c #1D4165", "A c #1C426B", "S c #17456B", "D c #1C4371", "F c #1D4776", "G c #24485B", "H c #265857", "J c #224165", "K c #23426B", "L c #2A426D", "P c #27496B", "I c #234372", "U c #294372", "Y c #2B4971", "T c #254977", "R c #295279", "E c #334C74", "W c #385579", "Q c #32546E", "! c #267345", "~ c #2B7249", "^ c #3F696C", "/ c #435B7C", "( c #2C5C85", ") c #2C5D8A", "_ c #225580", "` c #325C85", "' c #325C8C", "] c #3A5A86", "[ c #375D90", "{ c #2C5184", "} c #2C618B", "| c #2A6487", " . c #2E6392", ".. c #31628D", "X. c #336087", "o. c #366795", "O. c #35749B", "+. c #3C75A3", "@. c #3B79A4", "#. c #3B78A7", "$. c #435D83", "%. c #4C698A", "&. c #4A6486", "*. c #41779E", "=. c #526A8B", "-. c #5A7493", ";. c #54708D", ":. c #4275A5", ">. c #417AA5", ",. c #4478A9", "<. c #477CB2", "1. c #647A97", "2. c #6A7996", "3. c #168702", "4. c #199403", "5. c #1A9803", "6. c #1C9308", "7. c #1CA703", "8. c #1EB203", "9. c #2E8A35", "0. c #21B606", "q. c #27AE14", "w. c #35B72D", "e. c #229412", "r. c #3C9554", "t. c #368E4C", "y. c #318D6D", "u. c #21C403", "i. c #23CD03", "p. c #24D403", "a. c #25DA04", "s. c #28DB07", "d. c #2ADA0C", "f. c #28D50B", "g. c #2DDA11", "h. c #2DD711", "j. c #30DA16", "k. c #33DB1B", "l. c #39DA25", "z. c #3DDA2A", "x. c #37D923", "c. c #3ED930", "v. c #27E304", "b. c #28E604", "n. c #28E904", "m. c #2CE50C", "M. c #29F304", "N. c #2DF709", "B. c #39F619", "V. c #3AE024", "C. c #46B73F", "Z. c #43984F", "A. c #4A936D", "S. c #47B050", "D. c #55B667", "F. c #69BE78", "G. c #44D938", "H. c #40DB2E", "J. c #47ED30", "K. c #4BD942", "L. c #4DD746", "P. c #54CA58", "I. c #57D656", "U. c #4DC44C", "Y. c #5ED663", "T. c #56F044", "R. c #63D25C", "E. c #68C675", "W. c #71C879", "Q. c #6BD375", "!. c #66E45E", "~. c #3C88B6", "^. c #3A90AB", "/. c #33928D", "(. c #2E92CD", "). c #3594CE", "_. c #3598CE", "`. c #3896CE", "'. c #3B99CE", "]. c #3A95C6", "[. c #3696D0", "{. c #3599D1", "}. c #3A96D0", "|. c #3C99D0", " X c #399CD9", ".X c #3DA0D7", "XX c #4B8BB9", "oX c #4689B5", "OX c #4A91BA", "+X c #4893B8", "@X c #518BB9", "#X c #5492BD", "$X c #4C84A9", "%X c #71879C", "&X c #6D8A99", "*X c #7589A3", "=X c #7C93AB", "-X c #6D87A3", ";X c #7AB595", ":X c #76B08B", ">X c #7FACA6", ",X c #429BCD", " Q : J ,XeXyXyXuXyXuXiXyXuXiXyXuXuXuXuXiXyXiXyXiXuXiXaXuXaXiXuXpXsXuXpXpXsXpXpXuXaXuXuXaXuXyXyXyXuXuXyXyXyXyXyXuXuXuXfXiXpXfXfXfXfXnXnXfXgXvXmXnXvXvXvXnXnXvXnXvXvXvXvXfXvXfXfXfXfXpXfXpXpXaXfXiXfXpXfXfXfXfXfXfXpXfXfXfXfXfXfXfXfXfXfXfXfXfXvXfXfXvXfXvXvXfXvXvXfXvXvXvXvXvX", "yX0X0X0X0X3X9X2X|.2X X'.4X2X|.{.|.|.).{.{._._.{.{._.{.{.[.[.[.[.{.).).).).)._.|.`.`.'.'.'.'.2X,XIXJXDX-X=.W r 4 1 : G 1X3XyXpXyXiXiXuXyXiXuXiXiXuXiXiXyXiXiXyXuXiXuXuXuXsXuXuXfXpXfXuXaXuXuXuXuXuXuXuXuXyXyXyXyXyXyXyXyXyXyXyXyXuXiXiXiXfXpXfXfXvXfXvXfXvXfXnXvXvXvXvXvXvXvXvXvXvXfXfXvXfXfXfXpXfXpXfXpXaXpXuXfXpXpXfXfXfXfXfXfXfXfXpXfXfXfXfXfXfXfXfXfXvXvXfXvXfXvXfXfXfXfXvXfXvXfXvXvXvXvX", "yX0X0X8X3X9X2X2X|.2X'.,X,X2X}. X X[.}.|.}.).}.).`.).}.}.`.`.).[.`.).).`.}.}.}.}.'.'.'.'.'.,X2XlXIXDX=X1./ E 8 8 < : 2 ~.0XyXuXuXyXiXiXuXyXyXuXyXuXyXuXiXuXyXyXiXyXuXuXuXiXuXuXuXpXuXpXpXiXiXiXuXyXiXiXiXyXyXyXyXyXyXyXyX0XyXuXuXuXuXuXpXpXfXfXfXfXfXfXfXfXvXvXfXvXvXfXvXfXvXfXvXvXvXfXfXfXvXpXfXfXiXpXpXiXpXiXiXpXfXfXpXfXxXfXsXfXpXfXfXfXvXfXvXfXfXdXvXdXfXfXfXvXfXvXvXfXvXfXvXfXvXvXvXvXfX", "0XyX3X0X9X9X9X9X9X2X'.,X,X2X X|.,X1X}.{._.).).).).)._.).).).(.).).).).{.).}.'.).'.`.'.}.'.|.1XIXJXAX2.&.E K K e 3 , : O.3XuXyXuXuXiXyXuXyXiXiXyXyXyXiXyXyXyXyXiXiXiXaXpXpXuXuXuXuXiXuXyXuXyXiXyXpXuXuXyXyXyXyXyXyXeXuXyXyXyXyXuXuXuXuXuXpXfXpXfXfXfXfXfXfXvXVXfXvXfXfXvXvXvXfXvXvXvXfXfXfXfXfXiXiXuXuXuXsXuXuXuXfXfXfXfXfXpXfXfXfXfXfXfXvXdXdXvXfXfXfXdXfXfXfXfXvXdXfXcXfXvXfXvXvXfXvXfXvXVX", "yX3X0X3X0X3X9X|.2X'.4X4X|.|.'./.D.T.B.N.N.M.M.M.M.M.M.M.M.M.N.n.M.N.M.M.M.M.M.M.M.M.N.n.B.T.W.KXSX%X;.W L P 8 4 > - - | eXuXyXuXyXyXyXiXiXyXyXyXyXyXyXyXyXyXyXuXaXuXpXuXiXsXuXuXuXaXuXiXiXyXuXuXaXiXyXyXyXyXyX0XyXyXyXyXyXyXyXeXiXuXpXuXiXfXfXfXfXgXfXfXfXvXfXvXvXfXvXfXvXfXvXfXvXfXfXfXfXfXpXsXiXuXpXuXaXiXuXpXuXfXsXfXfXsXfXfXfXfXfXfXfXfXfXvXfXfXcXvXfXvXfXfXfXfXvXvXvXfXfXvXfXvXvXvXvXvX", "0X0X0X0X3X2X9X9X2X2X2X2X2X|.2XD.T.B.N.N.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.N.J.!.GXFX=X-.$.E e 8 e < , O O 5 ,XyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXaXuXuXuXpXpXpXfXuXuXuXaXiXpXuXaXyXuXuXuXuXiXiXyXyXyXyXyXyXyX0XuXwXpXyXuXwXuXuXpXiXfXpXfXfXfXfXfXvXfXfXfXvXfXdXfXfXfXfXmXfXfXdXfXaXpXpXfXiXaXuXuXuXuXpXfXuXpXfXpXiXiXsXfXpXfXfXfXdXfXfXfXfXdXdXfXfXdXdXfXfXvXfXvXvXfXvXvXvXfXfXvXvX", "yX0X0X3X3X2X9X9X2X2X'.|.'. X2XJ.B.N.N.M.M.M.M.M.M.M.M.M.M.n.M.M.n.M.M.M.M.n.M.M.n.M.n.B.J.Q.KXSX1.=.E L 9 8 3 - @ + O : OXyXyXyXyXyXyXyXyXyXyXiXyXyXyXaXyXuXaXuXiXsXfXpXuXfXuXaXsXuXuXuXuXyXyXuXpXuXuXuXiXyXyXrXyXyXyXyXyXyXyXyXuXyXyXuXsXpXpXfXfXpXfXpXfXfXvXdXfXvXfXvXfXvXvXfXvXcXfXfXfXfXfXpXuXiXuXuXaXuXpXiXuXfXuXpXfXfXpXfXuXfXcXfXfXvXfXvXfXvXvXfXvXfXvXfXdXfXfXfXdXfXcXfXfXvXvXvXfXvX", "0X0X0X8X3X2X9X|.2X2X,X2X2X X`.B.N.M.M.n.n.n.n.v.n.n.n.n.n.n.v.n.n.n.n.n.n.v.n.v.n.n.m.J.R.:XHX*X-.] L K 4 6 - @ @ # P ].6XyXyXyXyXiXuXiXyXiXyXaXuXuXuXuXuXuXuXpXsXpXfXfXiXpXiXiXiXiXsXyXuXyXiXuXwXiXiXuXyXyXyXyX6XyXyXuXyXuXyXyXyXuXyXpXuXpXpXiXiXfXfXfXfXdXfXdXfXvXfXvXfXfXvXfXvXvXdXfXsXfXuXuXuXuXaXuXuXyXaXaXuXuXuXaXiXuXiXpXfXvXfXfXdXfXvXfXfXfXvXdXvXfXfXfXfXvXcXdXvXfXvXvXfXhXvXvXfX", "0X0X0X3XeX3X9X9X2X2X2X2X'.'.|.n.b.n.n.v.s.v.v.v.a.a.v.v.a.v.v.a.v.a.v.v.v.v.v.v.v.d.V.I.F.>XAX1.%.L e 5 3 - X @ 7 O.1X3X0XyXyXyXyXyXiXyXiXiXiXuXuXuXaXpXuXfXpXfXuXfXpXiXfXpXfXiXfXpXuXuXaXuXyXuXuXyXiXyXyXyXyXyXyXyXyXuXyXyXyXuXuXiXaXuXpXfXpXpXfXfXpXfXfXfXfXfXfXdXfXfXvXfXfXvXfXvXfXfXfXpXfXuXuXpXyXuXyXyXyXyXuXuXiXuXpXiXiXfXpXfXfXfXvXfXfXdXvXfXfXfXfXdXfXvXaXfXfXfXfXfXfXfXvXfXfXfXvX", "rX0X0X3X3X3X9X9X2X2X,X2X,X'.2Xn.n.v.v.v.a.a.a.a.a.a.a.a.a.a.a.s.a.a.a.a.a.a.a.a.s.j.K.W.FXSX%X=.E e 8 1 , + @ X 5 oX2XeX0XyXyXyXyXyXiXaXuXyXuXiXpXuXpXfXpXiXpXiXfXpXpXaXpXfXpXfXfXpXpXpXpXuXuXuXuXuXyXyXyXiXyXyXyXyXiXyXyXyXyXiXyXuXuXyXuXuXuXuXuXiXfXfXfXfXfXfXfXfXfXfXfXfXvXfXfXvXvXvXfXfXpXuXuXuXpXpXyXyXyXiXyXyXyXiXiXuXiXpXpXpXfXfXvXvXfXvXfXvXdXvXvXfXvXfXfXvXfXvXvXfXfXfXfXvXfXvXfXvX", "0X0X0X3X3X3X3X9X2X2X|.2X2X'.'.v.v.v.v.v.a.p.a.a.a.a.a.a.a.s.g.d.s.a.a.a.a.a.a.a.f.x.I.:XFXSX2.$.Y e 3 , O X = $XeX3XyXyX0X0XyXyXuXyXyXiXuXuXuXsXuXfXpXpXfXfXfXfXfXpXfXfXpXpXfXfXpXvXpXfXpXuXaXuXuXyXyXyXyXyXiXyXyXiXiXuXyXyXaXyXiXuXwXyXyXiXiXsXuXpXpXpXfXfXfXfXfXdXfXfXvXfXvXfXcXfXfXfXfXfXpXpXyXiXpXiXyXyXyXyXyXyXyXyXuXuXuXfXfXdXvXfXdXfXfXfXdXfXfXdXfXfXfXdXfXsXfXfXfXfXfXfXvXfXfXvXfX", "rX0X0X0X3X3X9X8X2X2X3X|.'.|.'.n.v.v.v.s.a.a.a.a.a.a.s.s.d.l.c.c.x.d.a.a.a.a.a.s.k.K.E.>XAX%X%.E e 4 , @ $ h M #X0XeX0XyXyX0XyXyXyXyXyXaXuXuXuXpXfXfXfXfXfXfXfXfXfXdXuXfXfXfXfXsXfXfXfXpXdXuXiXuXiXyXaXyXyXyXuXuXpXiXuXyXiXyXyXyXyXuXyXuXuXuXuXiXyXuXfXpXfXfXfXfXfXdXvXfXfXfXvXvXvXfXfXfXfXpXfXiXuXuXpXyXyXiXyXyXiXyXyXuXiXpXpXfXpXfXdXfXvXfXvXfXvXfXfXfXfXfXvXfXfXfXfXsXfXsXfXfXfXfXdXfXfX", "0X0X0X0XeX3X3X2X2X2X'.9X,X'.'.b.n.v.v.v.a.a.a.a.a.a.s.d.z.I.D.S.I.x.d.a.a.a.a.g.c.Y.:X>X*X1./ e 3 , # . * h N n 3X0X0X0X0X0XyXyXyXeXyXyXuXuXuXpXuXuXfXsXfXfXfXfXfXfXfXsXfXiXsXvXvXfXfXfXfXpXpXuXaXyXyXyXyXuXyXuXiXiXuXuXuXyXuXyXyXyXyXyXiXuXuXiXiXuXpXiXiXpXfXpXfXfXcXfXfXfXfXvXvXfXvXfXfXfXfXpXuXiXiXaXiXyXyXyXyXaXyXyXiXaXuXpXfXfXfXdXfXfXdXfXfXfXvXdXsXvXfXfXfXdXfXfXdXfXfXfXfXfXfXvXfXvX", "rXeX0XeX3X3X3X3X3X2X,X X,X'.'.n.b.b.b.a.a.a.s.p.a.s.s.H.I.F.:X^ Q.G.j.s.a.a.v.x.I.CXHXAX%X%.Y 5 > - % d Z.e.j 3X0X9X0X0XqXyX0XyX0XuXuXuXuXuXuXpXfXpXsXfXfXiXfXfXqXpXfXgXaXhXvXiXvXxXiXpXfXdXsXsXqXrXiXqXpXqXjXpXpXfXpXhXpXqXuXxXyXqXuXqXpX6XuXpXyXyXuXpXqXfXjXpXvXpXfXfXvXgXhXvXfXBXiXfXfXcXdXjXsXiXfXwXuXiX6XyXyXqXaXsXuXsXvXuXvXfXfXfXfXfXfXfXhXvXfXfXvXsXfXfXfXdXsXpXsXfXfXfXfXvXfXfXvX", "0XyX0X0XeX3X3X3X2X,X2X2X2X'.|.v.b.b.b.a.a.s.s.s.s.d.V.R.CXGX&X^ y.L.j.v.a.s.j.G.ZX;XSXAX1.W e < - * d t.e.b c 9X0XqX3X0X0X0X0X0XyXyXuXyXyXuXuXuXpXpXfXvXpXvXzXbXbXvXlXdXfXuXfXdXtXdXdXdXyXpXgXyXfXaXyXfXpXyXpXiXdXiXwXpXyXiXaX6XdXrXaXiXrXvXuXqX0XyXiXdXdXaXuXqXyXfXdXcXaXvXfXfXvXvXdXfXaXdXgXpXyXrXiXyXrXrXpXpXyXqXtXiXyXcXrXpXgXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXsXdXpXdXsXfXfXfXfXfXaXfXfX", "yXyX3X0X0X3X3X3X2X2X2X X2X'.|.v.b.b.v.a.a.a.s.f.j.H.I.CXKXSX2.H ! P.k.s.a.s.k.I.CX>XAX2.%.t 4 7 + . & Z.C.e.b z 9X8X0X9X0X0X0XyX0XyXyX0XyXyXyXuXiXpXpXfXiXfXaX .D 9 0 D O.sXbXaXo.T K A r [ zXbX' r r r r K K e y J u zXyX' r r I A K A T .<.aXuXjX0X+.A 9 u ,.aXdX` U 8 F XXcXvXdX#XD A T } 6XzX} I 0 A T o.yXyXyXo.D I A 9 } zXxXsXfXsXfXfXfXfXfXfXfXfXfXfXfXfXfXfXsXfXiXaXfXfXfXfXfXdXvX", "0X0X0X3X0X3X3X3X3X3X,X2X2X'.,Xn.b.v.b.a.s.s.j.k.G.R.GXKXDX%X/ G m S.z.f.a.s.z.Y.;XSXAX1.W q , O & N I.w.6.v z 2X9X3X0X0XeX0X0XyX0XyXyXyXyXyXyXuXpXpXfXiXiXbX) r U K A R yXVXtXR A J K L ) fXfX( r S F A 9 I K K 9 u fXiX| K K r A Z 8 P S I o.6XuXpX,.9 L r :.aXaX` K J D XXcXfXnXXXZ L U ( cXvX( K L t J R rXuXsXR r r A K } dXpXpXsXfXfXfXfXfXsXhXfXfXfXfXfXfXfXfXfXfXsXfXfXfXsXfXfXfXfX", "yX0X0X0X0X0X3X8X3X3X,X9X2X|.2Xb.b.v.v.d.j.H.G.R.W.GXKXSX%X=.Y 5 V t.c.k.d.j.K.W.>XAX%X&.J 6 # . = m P.z.0.6.b z 2X8X0X3XeX8X0X0XyX6X0XyXyXyXuXuXaXiXuXfXfXiXcX( I e r K A X%X1.E 6 - + X g S.H.h.8.6.v z 2X2X3X3XeX3X3X0XeXeXyXuXyXyXuXeXuXiXpXsXfXiXdX) J 9 Y J K $XpX$Xr r U 9 9 } fXuX..J 0 F XXdXgXfXsXsXzXpX6X} J L 0 @XdX+X .I J Z _ yXuX,.r y L :.uXfX` t U r XXxXhXnXXXK t U ' vXfX` K r U r r oXiX<.A L I K r ) uXjXpXiXfXpXfXpXfXfXfXfXfXfXsXfXsXfXfXdXfXfXaXfXuXfXfXfXdXfX", "yX0X0X0X0X0X0X0XeXeX2X2X3X9X2Xv.b.b.m.H.P.A.A.2.1.;.%.] Y P Z q 5 V r.G.k.G.W.KXSX*X&.y - @ o % Z.K.j.i.8.4.v z 9X2XeX2X3X3XeX3X0XwXyXeX0XeXuXyXyXpXpXuXfXpXfX) A K ..A A o.dXo.9 A o.A K X.vXvX' K L A o.@.#.@.@.@.oXfXxX) Z J A XXpXpX6XA Z K F .I L { zXR r U :.A J ` dXfX' J K K K r L 9 P 9 @.eXsX) K 9 D XXuXpXsX) J K A 7XqX@.K r 9 @.iXyX( U r r XXfXgXvX#XJ J K ) xXdX` L A @.I r R tXR S J ,.D 9 ) aXyXuXsXfXuXfXpXpXfXfXfXhXsXsXfXfXsXfXfXfXuXsXfXfXfXfXvXfXvX", "yX0X0XyX0X0X3X3X3X3X9X3X3X.X2Xb.n.v.v.k.z.G.S.m C 7 6 5 q J e J 8 Z H D.Q.ZX;XDX-X%.5 - + $ l P.H.d.s.i.8.4.v z |.2X2X3X3X3X3X3X0X0X0X0X0X0X3XyXyXyXpXpXyXsXdX' Z K >. .I e +Xr K [ @.A A ( cXfX) K K r K r u r J A #.sXpX) y L u oXaXuXyX) K Z I ~.yX:.J K K :.aXpX` J t K OXiXcXmX#X9 9 K ( xXdX( A r >...e I @Xr A ..>.A L ) dXqXuXiXpXpXfXpXpXfXfXfXfXpXiXpXpXpXdXpXfXpXfXfXfXfXdXdXgXvX", "0X0X0X3X0X0XeX3X3XeX9X4X3X9X2Xb.n.v.v.s.d.g.j.c.9.k ; 2 3 5 9 9 e J Q A.ZXZXKXDX-.P 6 @ . & D.L.g.s.s.i.8.4.v z 2X2X2X3X3X3X3X3X0X0X0X0X0X6XyXyXyXyXyXuXiXsXiX) K Z +.#.I A ( L A +.>.e J X.vXdX) J t A *.:.,.#.>.:.oXiXiX( J K D oXuXyXpX' Z K y +XuX+.Z S A @.yXyX' Z y A XXhXpXfXXXI J Z ..vXdX] r K >.>.J 8 ( K I @.>.A K [ aXpXuXaXpXaXpXfXfXfXpXfXpXfXfXfXdXfXpXfXpXiXsXpXfXfXfXvXfXvX", "0XyX0X3XeXeX3X9X3X3X3X9X2X9X2Xb.n.v.n.a.s.s.s.g.L.~ ; 2 3 4 8 9 Z P Q ;.KX>XAX%X&.5 - % N I.k.d.a.a.i.8.3.v x '.2X2X3X3X3X3X3X0X0X0X0X0XyXyXyXyX0XpXyXyXuXiX) t i ,.7Xr r t K r 1X>.9 Z | dXiX..K e D @XdXqXyXyX6XpXuX6X) 9 A r +XsXpX6XI J A r 5XyX#.I K r +.iXjX) L r A @XsXhXxXoXA r K ) VXpX' J Z +.5XS K I Z I 7X:.K r [ yXuXyXuXuXsXpXfXpXfXfXpXfXpXfXiXpXfXiXpXpXdXfXfXfXvXfXvXfXvX", "0X0X0X0X3X3X3X9X3XeX8X3XeX9X3Xb.n.v.v.a.s.a.a.s.k.Y.r.; - > 4 e K P / %.*X%X2./ J 2 O $ l Y.z.d.a.a.a.i.8.4.v x |.2X'.2X2X3X2X3X3X3X3XeX0X0X0XyX0XyXyX0XqXyXpX( A L :.yXR e K K Y uX,.u K } zXuX[ r 0 F XXfXiXpXjXsXyXjXfX) A 9 U oXyX.0XjX#.A r Z ..aXpXgX..e L r ,.aXvX) L r ,.fXT i u J T cX>.A e ) uXxXuXuXaXiXuXpXpXpXpXfXiXfXpXfXpXaXfXpXfXpXfXfXfXfXfXfXfXvX", "0X0X0XeX3X3X3X3X3X3X2X3X2X2X2Xb.n.v.v.a.a.a.a.a.s.x.I.A.k : 3 3 J K W $.=.;.&.Y > # X & S.K.k.s.a.a.a.i.8.4.v z '.2X'.2X2X2X2X3X3X3X3X3X3XeXeX0XyX3XjXuXiXuXyX| A K ,.yX} J A A ..iX>.L K ( dXgX' r L e L J 9 J K K F oXaX( L A t 0 D A r y K S oX0X0X+.A Z A @.yXpX1XF K K J I ( I Z L K A 5XgXdX` r I ,.qX..L i J .gX+.Z K ) yXyXyXyXuXuXuXuXfXiXiXpXiXfXpXpXpXfXpXdXpXfXfXhXfXfXfXvXfXnX", "0X0X0X3X3X3X3X3X9X3X2X3X3X2X2Xb.v.n.v.a.a.a.a.a.v.s.z.I.Z.k 2 3 5 J Y W / W K 5 , + * N I.l.d.s.a.a.a.p.8.4.v z '.'.2X2X2X2X2X2X3X2X9X3X3X3X3X0X3XyX3X3X0XsXiX` e J @.tX>.t K e >.dX@.A J X.dXdX( J K I 9 J K J J y r +XqX( J Z K K r t r L 9 o.6XyXyX+.U t L :.aXyXdX>.A K J Z Y y t r S $XiXfXaX..y K +.qX^.9 t J #.dX,.r t ' iXiXuXiXuXuXuXiXiXpXiXiXfXiXfXiXpXiXfXpXfXpXfXfXfXvXfXvXvXvX", "3X0X3X3X3X3X2X2X9X9X2X2XeX2X2Xn.v.v.v.a.a.a.a.a.s.s.d.z.!.r.k 2 3 5 J P U K 4 : O . h P.H.g.a.a.a.a.a.i.8.3.v z '.'.2X|.2X2X2X2X2X2X2X9X3X3X3X6X3XyXwX0XeXsX3X[ A A #.uX#X0 F I OXsX@.I 9 ) zXsXo.9 9 D A A K A A A u @X6X' A D U 9 A I R .oXyXpX9XiX#.D 9 I ,.uXfXrXuXoXR F 9 A u r _ ~.fXiXsXcX| A A ,.nX$XI u A 7XuX,.D 9 ..sXfXpXpXpXuXiXuXuXuXuXuXuXfXpXsXuXfXpXfXfXfXfXfXvXhXvXvXvXnX", "0X3X3X3X3X3X3X2X2X9X3X2X3X2X2Xn.n.n.v.a.a.a.a.a.s.a.s.d.z.I.t.k 2 q e Z K 4 3 O $ & Z.G.j.s.a.a.a.a.a.p.8.4.v z '.,X|.2X'.2X'.,X2X2X2X2X3X3X3X3X3X3X3XyX0X6XwXrXaXyXuXwXiXaXaX6XgXuXsXaXdXyXjXjXrXqXsXsXsXpXyXiXsXuXrXwXwXyXiX0X6XyXyX0XrXyX3XpXyXyX0XaXyXyXrXqXpXuXiXyX6XxX6XOXXX+X#XaXiXuXuXfXfXaXdXdXjXfXpXxXuXgXfXfXyXfXcXaXpXyXuXpXpXuXiXiXyXuXuXuXuXuXfXuXfXpXfXpXfXfXfXfXfXfXvXfXnXfX", "0X9X9X9X9X2X2X9X.X2X2X2X3X2X2Xv.v.v.v.a.a.a.a.a.a.a.a.s.g.z.I.! V 2 q e 4 < - + % m I.x.v.s.a.a.a.a.a.p.8.4.v z ,X|.,X4X2X'.'.2X2X2X2X2X2X3X2XeX3X3X0X0X0XyXyX0XyXyXyXyXyXuXuXpXuXpXpXiXuXuXuXiXuXyXuXyXyXuXyXyXyXyXyXyXuXuXeXyXeXyXyXyX0XyX0X6XyXyXuXuXuXuXuXyXyXyXuXuXaXiXiXyXiXyXuXiXuXpXuXpXpXpXfXfXfXpXfXpXgXpXfXpXfXfXpXpXiXuXiXpXaXaXuXuXuXyXiXpXiXuXiXfXpXfXfXpXfXfXfXfXfXnXfXfXnXnX", "eX9X9X0X9X2X9X2X9X2X9X2X2X2X2Xn.v.n.v.a.a.a.a.a.a.a.a.a.s.m.H.P.M 2 > 4 3 , @ . d C.z.g.s.a.a.a.a.a.p.p.8.4.v j '.|.|.|.'.'.2X'.|.2X'.2X2X3X3X3XeX3X0X0X0X0XqX0XyXyXyXyXyXyXpXpXuXuXuXuXyXuXuXiXyXaXyXyXyXyXyXyXaXiXyXyXuXeXuXuXuXyX3X0XyX0XyXyXyXyXuXwXuXyXuXyXuXyXyXyXuXiXuXyXyXyXuXyXaXaXuXuXpXdXfXpXfXfXpXfXfXfXiXfXpXfXiXfXpXiXpXaXpXuXyXyXiXyXiXpXpXpXiXpXpXpXfXpXvXfXfXfXfXfXnXnXnXfX", "eX3X3X2X2X2X2X2X2X2X2X2X2X2X2Xv.v.v.v.a.a.a.a.a.a.a.a.a.s.s.j.K.E.V 2 1 , - . & N G.j.s.a.a.a.a.a.a.p.p.8.3.v z '.'.'.|.|.2X,X2X2X2X2X2X3X2X2X3XeX3XeX8X0X0X0X0X0XyXyXyXyXyXaXiXyXuXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXeX0XyX6XyXyXyX0X3XuX0XyXyXuXyXyXyXyXyXyXuXuXyXyXyXyXyXyXyXyXuXyXuXuXpXfXpXfXfXpXfXpXfXpXfXpXfXpXfXpXpXpXpXfXuXiXpXuXiXuXiXyXuXuXiXuXiXfXpXfXfXfXvXfXfXnXnXfXnXnX", "eXeX2X2X9X9X2X2X2X2X,X2X2X2X2Xn.n.v.v.a.a.a.a.a.a.v.a.a.a.s.s.x.I.D.k 2 - @ . d S.V.d.a.a.a.a.a.a.a.p.i.8.4.v z `.4X,X4X|.|.2X4X2X2X2X2X2X2X2X3X3X3X3X3X3X0X0XyX0X0XyX0XeXyXyXyXyXyX0XyXyXyX0XyXyXyXyXyXyXuXuXuXuXyXyXwXyXuXuXyXyX0XyX0XyXyXyXyXyXyXyX0XyXyXyXyXyXuXyXuXyXyXyXyXyXyXyXyXyXyXuXuXsXpXiXpXpXfXpXfXiXfXiXiXiXuXpXpXpXfXfXpXfXuXuXpXyXuXiXuXuXuXuXuXaXpXpXfXvXfXfXfXfXfXfXvXvXvX", "3XeX3X3X3X2X2X2X9X2X2X4X2X2X2Xv.v.v.v.v.a.a.a.a.a.a.a.a.a.a.a.d.c.I.r.2 @ . & 9.L.g.s.a.a.a.a.a.a.a.a.p.8.4.v z '.|.|.|.'.2X2X,X,X2X,X9X2X2X3X2X3X3X3X3X3X0X0X0XyX0X3XyXyXyXyX0X0XyXyXyX0XyXyXyX0XyXyXyXyXyXyXyXyXwX0XyXyX0X0XyX0X0XyXyX3XuXyXyXyXyXyXyXyXyXyXyXyXyXyXuXwX6XyXyXyXyXyXyXuXyXuXuXuXiXuXuXuXpXpXsXpXuXuXuXiXuXuXuXiXsXuXdXuXuXsXpXuXiXuXuXuXuXaXuXdXpXpXfXuXsXfXfXfXfXfXvXfXbX", "0X0X3X3X3X2X9X2X2X2X,X2X,X3X2Xn.v.n.v.a.a.a.a.a.a.a.a.a.a.a.a.s.g.c.Y.M ; $ d P.l.s.a.a.a.a.v.a.a.a.p.p.8.4.v j '.'.,X4X'.2X'.|.2X2X|.2X2X2X2X2X2X3X3X3X0X3X0X0X0X3XyXyX0XyX0XyXyXyX0XyXyXyX0XiX0XyX3XyX0X6X0XyXuXuXyXyXyXyXyXyXyXyXyX0XyXyXyX3X0XyX0X0XyXyXyX3XyXyXwXuXeXyXyXyXyXyX0XyXyXuXuXuXuXaXiXyXuXpXiXiXpXiXyXuXuXiXiXiXpXpXpXpXfXuXpXpXiXyXyXiXuXiXiXuXpXpXfXpXfXvXfXfXvXfXfXvXnXvX", "0X0XeX3X3X3X3X9X3X9X,X3X2X2X2Xv.v.v.v.a.a.a.a.a.a.a.a.a.a.a.a.a.s.k.K.E.d & 9.K.j.s.a.a.a.a.a.a.a.a.p.i.8.4.v j '.}.'.|.'.2X2X'.'.2X2X2X2X9X3X2XeX2X3X3X3XeXeX3X3X0X0X0XyX0X3X0X0X0X0X0X3XeX0XeX0XyX0XyX0XyXyXyXyXyXwXyX6X0XyX0XyX3XyX0X3XuX3XyXyXyXuX6XyX0XyXyXyXyX0XyXuXuXuXyXyXyXyXyXuXuXwXiXiXuXiXuXaXiXyXyXuXuXuXuXuXiXuXiXuXpXpXfXfXpXaXiXiXyXyXyXiXuXiXuXpXfXpXfXfXfXfXfXdXdXfXvXfXvX", "0X0X3X3X3X3X3X9X9X2X2X2X2X2X2Xn.n.v.v.a.a.a.a.a.a.a.a.a.a.a.a.a.a.v.x.I.Z.n U.l.d.s.a.a.a.a.a.a.a.a.p.i.8.4.v j '.,X4X|.'.2X'.,X2X,X|.9X|.8X9X2X2X2X3X0X3X3X0X3X0X0X0X0X3X0X0X0X0X0X0XyXeX0X0X0X0X0XyX0XyX0X3XyX6X0XuXyXeXyXyXyXyXyXyXyXyXyXyXyXyX3XwX0XyXyX0X6XuXuXeXyXyXyXwX0X6XyXuXwXuXuXuXyXuXuXiXuXiXuXuXiXuXuXiXiXuXyXyXyXiXpXpXfXuXpXuXuXyXyXiXyXyXyXuXfXpXfXfXpXvXfXsXdXvXfXvXfXvXvX", "0X3X0X0X0X0X3X3X2X3X X'.8X8X,Xv.v.b.v.a.a.a.a.a.a.a.a.a.a.a.p.a.a.a.g.x.L.w.c.k.p.a.a.a.p.a.a.a.a.p.a.u.8.4.v z }.4X'.|.4X'.2X'.'.2X|.2X4X2X2X2X3X9X9X3X9X3X3X3X3XeXeXeX0X3X3X3X3XeX3X0X0X0X0XyX0X0XyX0X0XyXyXeX0XyXyXyX0XyXyXyXyXyXyX0XyXyX0X0XyX0X3XyXyXrXyXyXrXyXyXyXyXyXyXyXeXyXyXwXeXsXuXpXpXpXyXuXaXpXyXyXyXyXpXpXiXyXyXyXaXuXuXuXuXuXpXuXiXyXyXyXyXuXuXuXfXpXfXfXfXfXfXfXfXfXcXvXnXvX", "0X0X3X0X0X0XeX3X3X3X3X c #2E4F2C", ", c #2B682D", "< c #1E631D", "1 c #1C426B", "2 c #1B4267", "3 c #1C4571", "4 c #3B4343", "5 c #334D4F", "6 c #22416B", "7 c #244267", "8 c #244472", "9 c #3E5A7D", "0 c #305A7C", "q c #29577A", "w c #38667B", "e c #235655", "r c #48352A", "t c #463B38", "y c #553B37", "u c #4F3128", "i c #6A362D", "p c #5A291A", "a c #463B43", "s c #513B47", "d c #513967", "f c #4A492C", "g c #444334", "h c #4B4932", "j c #484438", "k c #564639", "l c #535230", "z c #526B2A", "x c #664838", "c c #6F5034", "v c #716D34", "b c #574F1B", "n c #474646", "m c #564947", "M c #575249", "N c #585655", "B c #4D4F50", "V c #4D4B6D", "C c #516A4E", "Z c #496978", "A c #664A44", "S c #675647", "D c #675855", "F c #774846", "G c #755B56", "H c #72544B", "J c #6F6553", "K c #6D6C6C", "L c #725668", "P c #3535A1", "I c #3B5885", "U c #2C5785", "Y c #376288", "T c #377398", "R c #326892", "E c #3A78A4", "W c #425684", "Q c #44568A", "! c #405983", "~ c #44598C", "^ c #48598D", "/ c #455890", "( c #4C4A8D", ") c #477B9C", "_ c #536B98", "` c #47668D", "' c #4B7AA7", "] c #6259A3", "[ c #5D63ED", "{ c #5C63F1", "} c #7267D4", "| c #6364E6", " . c #6164E9", ".. c #6A67E4", "X. c #6766EF", "o. c #5358D9", "O. c #3B3DC1", "+. c #07850A", "@. c #34A62A", "#. c #00DC00", "$. c #0BDA05", "%. c #18D80A", "&. c #1DCE0D", "*. c #00E300", "=. c #00EA00", "-. c #0BE304", ";. c #0AEA03", ":. c #26CE0A", ">. c #28CC0E", ",. c #21C707", "<. c #2ACB15", "1. c #25DA04", "2. c #25D407", "3. c #26D312", "4. c #37C91A", "5. c #34D313", "6. c #2CD11D", "7. c #57B929", "8. c #4BB325", "9. c #6F8F32", "0. c #68B232", "q. c #77AA39", "w. c #69B131", "e. c #53992C", "r. c #5C955A", "t. c #42C51D", "y. c #48C322", "u. c #56C527", "i. c #6ECB31", "p. c #34995B", "a. c #3B85AF", "s. c #1483C4", "d. c #1985C6", "f. c #1D88C7", "g. c #238BC9", "h. c #298ECA", "j. c #228AC7", "k. c #2D91CC", "l. c #3394CD", "z. c #3896CD", "x. c #3B98CE", "c. c #3D91C2", "v. c #3C99D0", "b. c #3796D0", "n. c #3C8FC1", "m. c #3FA2CB", "M. c #528499", "N. c #4984A9", "B. c #4789B2", "V. c #5584A5", "C. c #5895B9", "Z. c #538BB5", "A. c #6598B8", "S. c #729AAB", "D. c #4797C8", "F. c #429CD1", "G. c #489ED3", "H. c #449CD9", "J. c #579AC5", "K. c #5192C5", "L. c #4BA1D4", "P. c #47A3D5", "I. c #5DA2CC", "U. c #52A4D5", "Y. c #54A5D8", "T. c #5BAAD9", "R. c #58A8D6", "E. c #57ADD6", "W. c #659AC5", "Q. c #64A5CD", "!. c #63ADDB", "~. c #68ABD7", "^. c #66B0DC", "/. c #6BB2DD", "(. c #6AB6DA", "). c #71B5DE", "_. c #73B8DE", "`. c #79B6DA", "'. c #74ACD1", "]. c #6CB4E0", "[. c #69B6E1", "{. c #73B6E0", "}. c #75B9E1", "|. c #7BBBE2", " X c #78B6E1", ".X c #65ADE0", "XX c #51AAE0", "oX c #7CC0E4", "OX c #A02C23", "+X c #8B5436", "@X c #8F6939", "#X c #AA642B", "$X c #8C564B", "%X c #906A51", "&X c #906F6D", "*X c #A76957", "=X c #B06F4F", "-X c #B0746B", ";X c #A6595C", ":X c #CD682E", ">X c #CF7A59", ",X c #CD7C62", ".1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.zX1XfX$.$.w.J L w.%.-.;.=.<.,X3X5XyX=.#.w.iX6Xw.*.-.3.1XG *Xq.=.=.=.-.,XaX=.-.zX,X,X3XdX4.vX,X4.*.w.3XG %Xy.dX2X,X,X,X3X,X1XgX3.3.gX2XsX=.*.%.sX1X,X,X,X3XzX#.#.#.#.3.iX2XzX=.q.3X1X1X$.=.q.5Xt.9.D 2X2X5XiXq.0.#.=.*.-.=.7.6X3X,X,X,X,X,X2X<.0.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.w / _ B.I./.).|.~.I.P.R.Y.U.U.U.L.U.U.L.", ")._.{./.{.).{.).).CXDXFXAXFXoXQ.^ Q _ 2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.zX2Xt.*.#.=.5.G F i c @.=.3.3XsXiX5Xq.*.*.#.0.<.%.2Xw.q.G -XiX1.#.=.4.5XaX=.%.zX1X,X,X,X3XzX4.-.$.*.0.%Xr.=.7.,X,X5X,XyXzX1X1X,X,X2X5XgX6.dX5X5X3X3X,X,X,X0.#.#.$.iX1X1X3X.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.zX2Xy.#.#.*.4.G x 9.+X8.=.7.6Xu.*.pX6X7.*.#.*.*.#.w.4.$.H *X3X1XyX4.,X,X4.*.$.zX1X2X2X2X5XdX<.zXaX*.*.J J 1.3.gXvXaXy.$.zXvXvX1XvXyXq.vX1X,XyXq.q.q.gX3XgX*.#.*.q.2X,X2XiXu.q.5Xq.*.*.*.yX;XF $Xy G 4.=.=.#.#.%.%.%.w.6X<.*.=.&.gX5X,X3XiX*.8.5X1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.Y ` ` N.J.I.T.T.T.E.E.R.U.U.L.U.L.Y.U.Y.", "{.{.].{._.)./.{.{.).{. X{.]. X~.Q I _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.zX2Xy.*.#.*.<.L c v +Xe.3.,X2Xq.%.y.5X0.*.#.%.%.%.*.*.4.G N -X3X3X1XzX<.*.#.$.zXzXq.q.q.aX2X,X2XiX*.$.J *XbX,X2XdX=.=.dX5XvX1X3XsX=.#.gX3XvX$.=.=.%.gX2XgX$.#.$.sX3X3Xw.*.=.aX,X$.#.#.#.yX$X9XLXx D bXy.%.%.q.1X,XgXy.q.$.#.#.*.&.q.gX5X4.=.y.3X1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! / ^ B.C.R.T.T.T.R.R.R.Y.U.U.U.U.L.U.L.", "{.{.}.{.{.].{.{.{.{.{.{.}.{. X~.Q Q _ 2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.xX3Xy.=.#.*.7.D M o l c =XbX5X3XvX,X2X0.*.%.zX>XvXq.4.zX-XN h +X+X=XiX$.%.%.4.3XaX=.*.=.*.q.3X3XaX=.=.J %X1X1X,X7.%.3.&XG D D D %X5.dX5X2X5XsX=.yX3X,X3XgX#.=.q.5X1X>X>.-.;.yX,X%.#.#.*.aX;X$X&Xf M =X>X>X,X3X,X1X3X3.=.#.#.#.#.*.=.6.q.$.=.q.3X1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! / ^ N.C.I.T.T.T.Y.Y.I.Y.U.U.G.U.H.Y.L.", "{.{.{.{.{.{.].{.{.{.{. X{.{. XQ.Q Q _ 2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.bX5Xy.*.#.u.1X*XD x 7.c %Xq.q.dX1X>X5X7.=.3.,X1X,X3X1X1X1XG y 7.v ;XbX>XvXvX,X2XyX=.#.*.#.*.gX3XsX%.5.G %X1X1XxXv c c l r p n X %XbXbXq.q.q.7.$.gX3X,X1XgX*.=.iX5X%XS G z t.dX>X$.*.*.*.5.q.@X;X$XJ @Xh G x ,X.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.fXq.3.*.<.1XbXXvX<.%.fX3X%Xr.K l bX1XbX4.%.%.%.%.;.dX5X-XN k r.r.h : o 4 o O o j n t a X . o *X3X,X,XbXi t . n o $ . n 4 X k g 4 c @Xo m N 5 r p O o 4 k k X m , - - ; ; - < M # j k @XX O u o . k y t a t u 5 X j t A t : O u O D >X,X,X,X1X,X,X1X3X<.=.*.0.2X2X2XsX1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.Y ` / N.C.Q.E.T.T.R.U.Y.U.U.U.U.Y.Y.U.L.", "}. X}.}. X]. X].}.{.{.{. X}.).'.Q W _ :.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.0.-.-.$.-.7.3X,XbX1XbXbXbXvX1XbXbXN v u.%Xt +.r.C . B K K 4 c V o.I X O O =XbX,X3Xu o N kXB o N K B u M N MXj m m LXN B y 5XLXy t -XjXu S c uXuX#Xb v @Xn B MXn A j u.yXx m z tXi A r $X0X$ t %XK n t e.i.c N bX1X,X,X,X,X,X1X1X<.*.t.2XfXyXq.$.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! / ` N.J.Q.T.T.R.R.U.U.U.U.G.U.H.Y.L.L.", "}.}.}. X}.}.].}.{.{.{.{.}.}.{.'.^ ~ _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.zX a x $ O.P . O O *XbXx X j -XS X B N N u M B K t X t -X&Xt j -XjXB t -XjXu B +X$XD @Xm m #Xm n K t X t 9.tXy D x c u A t OXMXB t G A o a v iXi D 3X1X,X,X,X,X,X,X,X6.*.q.6X4.*.#.#.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! / ` N.C.I.E.T.R.T.U.U.Y.U.U.U.U.U.U.U.", " X}.}.].]. X X}.}. X}.}.}.}. XQ.^ ^ _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.zX2X3X1XsXdX3X,X,X,X,X,X,X,X,X,X,XD 4 a D l : X : l : o : f g . # . f : X X A %X: . h : . : h g X X : f : X j f h . 4 h h . j : h 4 : t 4 +X%X&XJ D H #Xn n X t j f a t f l D D M g h . s n n # m h f t a : l K G %X,X,X,X,X,X3X3.t.2XfX%.#.#.#.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.W ~ / N.C.I.E.T.R.R.R.I.U.U.U.G.G.U.U.U.", " X].}.}.{.}.}.}.}.}.{.}.}.}. X.XQ Q _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.fXaXsX5X7.7.3X,X,X,X,X,X,X,X,X,XxXS OX#X+Xj t x k l A y k h j r A k t : j > 4 . m o X g m j g B _ kXV n r i n t r c k j j n c @X: h k X n @XjXMXMXJ G :Xn n k M : j h x t t g x X h g O O u $XO O o h g x t j O o =X,X1X.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.y.*.*.7.5XgXaXgX1X,X,X,XvX1X,X,X,XD 8XOX8Xk l q.@X# l q.@X# k y qX%Xt < c b > N K %X. k LX*Xt I O.P @ M k -XjX4 y lX=Xt B J t . j &XD O B @XdX&XjX%X+X:Xn t -XjXy t 9.tXk t 9.iXi k : O ;X a v pXx # O *XuXnX$X-X3X3.*.=.-.-.7.vX5X1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! ` / N.C.I.I.T.T.T.Y.I.U.U.U.U.U.U.U.U.", "}.}. X X}.{.{.}.}.}.}.}.}.{. X~.^ Q _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.4.*.5.1XgX3.=.4.3X,X,X,X,X,X,X,X,XM > f p g X u r : r i u X m r u r t X u u o X x u . r r o a : e > # n X r r . g u u # . o r t : u r g j x +X+Xi +X+Xc n t r u X # u u r X u u X m . o o y c o o X t u x r # O o g $X#XcX+X.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.y.*.4.6Xy.*.#.4.2X1XX,XD X x k l k y k g g k k f j X X X h M t y j u 4 4 g c #X#Xk t S K X M g M K j j n 4 : g x k j g k k X l g n 4 : n k k : g k K j j 4 : o j k x X j g f x t n g x g h ; : o c y y r j B h k o t $XF sXbX7.=.#.#.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.W ~ / Z.C.Q.T.T.Y.U.U.U.Y.U.Y.Y.Y.Y.L.Y.", "{.{.{.]./._.{.).).{.).).).{.{.~.^ W _ 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.zXgX,X2Xy.*.*.4.3X=Xi 9X( =XbX1X,XM z i.=Xa v u.%Xs l u.%Xm x m K %X. c u.dXa p -X( X 8XmX%Xy M LXB x l m LXB B B K B o k lXcXj t lXnXi l B K N X a lXnXm t LXK B 4 &XK o . lXnXi x a e.yXF t e.yXH , r.+Xr N c yX+Xx s e.i.c A bXH pXc @Xc 4.#.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! / ` N.C.Q.R.T.Y.U.U.U.U.U.Y.Y.Y.Y.Y.U.", "{.].{.{.{.{.].{.).).).{./.{.).Q.^ ^ _ 5.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.vX2X2X5X0.*.*.4.5X,XOX-XL A 1XbX>XG f 9.c a l 9.@Xn l 9.v a l j B l t f yXc a p ;X9X# OX8X8XA n jX&Xu M y jX&Xj B K M t t lX>Xt t lX>Xu m 4 K N y t uXcXt t jX&Xj # %X&XX g uXcXx k a 9.yXr : v aXx 5 r.MX< D x tXu k n z tXi $XLXH +X#XnX$X.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.t.=.=.y.6X0.*.<.D X X # 4 h < ; ; h > 4 X j r n # h t k j j j t k m j j A y g t k k h n k j g g x l X k j j t t g k k g j x v @X: j k r k j k n : j k k g j 4 . X z ; < , < < ; , j S r x t g g m t l < < < < ; < < j S k y t N *X*X*Xv e.$Xt.7.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! / ` N.C.Q.!.E.Y.U.U.L.E.Y.R.Y.U.U.U.U.", "].).].)./.).).{././././././.].Q.Q Q _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.t.*.#.&.gX3Xy.4.D y +.r.h n ; - +.4 +.r.j # i &XV . x &XD n x b u.=Xm k 9.v a l u.pXa B jXm o k mX7Xu M B jXS o m mXcXy B K J S n jXG O S # &XjX# t lXnXk n &XC o , +.+.- - - - < s m 9.yXF a e.yXc 5 - +.+.- - +.- m N c tXx n H $X$X8.t.5X1X1X1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! / / N.C.I.T.T.Y.U.U.U.U.Y.Y.U.L.U.L.L.", "].].]./.].).)./.)./././././.].Q.Q Q _ 2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.t.*.#.*.&.gX,XX5Xu.*.*.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.Y ^ ` N.C.I.T.~.Y.Y.U.U.U.Y.U.U.Y.U.L.U.", "/.)./.).).).)././.^./.^.].].!.Q.Q W _ :.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.7.,.z z b > S z B y a n u x m y k h o X o k A y t h f > X g j X : X g X n t j : : # h j k y j j m a . k g M K j u u n g j j c @X: j k X j g 4 c @Xg n K j g n x #Xt s s a s a s . h : ; g o g > o X h < t o D t y r t j r k X n O f O c $Xc &.#.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.w / ^ V.C.Q.^.R.Y.Y.U.U.Y.R.R.Y.U.U.U.U.", "/././././.)././././././././.~.Q.Q Q _ ,.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.gX=Xp.%Xp = ] B 4 r ( ] i a v u.%Xn B N K n F 9.v s ; r.C . i ; r.C X x %XK a ; r.C . h u.pXt t -X&Xf M N LXn B i 2XjXa N MXk c 4 jXH O S B MXn c n LXK n n MXB c s 8.yXA # &XMXt x 5 r.+Xr 4 B K n : r.+Xu s 9.yX+Xk 4 uXnXF X uXnXi m jXH 4.#.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.Y ^ ` N.W.Q.T.T.Y.U.U.U.Y.U.R.R.Y.U.Y.U.", "/././././.)./././././././.!./.I.Q W _ :.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.%.>X = @.e n i * ] V a l 9.@X. > C > n F z x s ; , l t y ; @.c a k %Xt a ; , z t h q.@Xa k bXjXu M k jX&X4 n jXLXB B K t X . -XJ O S B K j . t jX&Xj 4 K j . t 9.tXy $ ( O.$ x B r.MX> a n C o : r.MX> a z yXc k . uXnXF # uXnXi $XLX$X,.<.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! ` ^ N.C.I.T.~.Y.Y.U.U.Y.R.E.Y.U.U.L.U.", "/././././.)././.(.(./.^.!././.Q.Q Q _ 2.%.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.vX l h # $ # l H s j h : o o l H H H l > o : h j X o : h : j t h X o : h g y a j . # # X l j t n h h y t j j : : g g n j . h h X j h h t n j h X X t f r t g f $ $ X g g > : > f o o : f : 4 > h : t t j l : t g l X g X X n v -.u.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! ~ ` N.C.Q.T.~.Y.U.Y.U.Y.Y.E.Y.Y.U.Y.Y.", "/././.)././././././././././..XQ.Q Q _ :.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.vX3X,X*XK 9.9.J x . . k X h m y t l k y k g . k t g j S a l y t n X h g # $ f n n o h j 4 o g i #X#Xj k f n t t : < 4 r c t A g c X k X j g k k t h j y t g y y t : t m t S y y . j c o A j h j x t l OX#Xx l Z M.L t h u j X x &X%XJ %X-Xy.t.9X1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! / / V.I.I.^.T.Y.E.U.Y.R.Y.R.R.Y.Y.U.Y.", "/././././.^.[./././.^.^./.!..XI.Q Q _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.sXgXbX2X7.=.=.y.D y V 9XV a c 9.c s v 7.%Xn z u.%Xt l yXc n x m } V o V } V X 5 M.5 X 5 M.5 o 8XlX*Xi M s qX-Xt 5 UXMX> A e.tXt S e.pXi M t 7.tXy t 7.yXy t 8.yXy t 8.yXx m 9.tXc x m 9.yXH t e.yXH i :XhXi V ] mX_ m n 8XLXH N 1XbXuXLX,X:XbX..1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! / ` V.J.Q.^.^.Y.Y.Y.Y.Y.R.R.U.Y.Y.Y.Y.", "~././.~.(./././././.^./..X]..XI.Q I _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.y.3.vX6Xu.*.*.4.D r * ] P m +Xz c s f q.c . l yXv a l z c n x * O.P r * O.P t < 6.w X > 6.w o 8X:X8Xi M y qX-Xr 4 9Xr.< y q.v t t w.pXi S j 9.tXs a 9.tXk t 9.tXA t 9.tXy s z aXi k N z v y m z yXr +X8X:XOXV P ^ P x . *XLXK m =X:X-XMX%XcXeXX.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! ~ ~ N.C.Q.T.T.R.Y.Y.T.Y.R.Y.Y.Y.Y.R.R.", "/./.~././.~./././././././.!..XQ.Q Q _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.u.;.3.dX<.#.#.4.D . = $ X l J H H l c s S l t y S l G H H l g # $ # h : $ # k > > 4 f : > 5 j l h l h l g n j f g o o : j m S S g t y t j h s t f f t t g h t m g h y y g c D n . g c G H c l D m S l l l l k e e 5 t f t k X N =X>XkXMX&X=X} [ 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! ` ` V.J.Q.E.!.E.Y.Y.R.E.Y.R.Y.Y.Y.U.Y.", "^././.^./.(./.!.!./.(.^.^./..XI.Q Q _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.5.1.fX3.*.#.#.4.D t r # . l m y t h : X X f t n X g g t # g j t a X g g k t h a s o f n X o g n 4 o X h . X o g h n 4 h h 4 # g h 4 4 : j h : . X : t t t h s t j f . 5 g g o o X j M y t t c t y g l n y : x k y t : x k y t N 1XcX%XB S >X} ..1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! ~ ^ V.C.Q.!.T.R.R.R.R.T.R.T.R.R.Y.Y.R.", "/.^./././.^././././.^.^././..XQ.Q Q _ >.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.5.4.6X7.=.#.#.<.D t i 9Xd M c v c s ; r.h X V MXK X B 9XK 4 x m } * X m qX-X. 5 M.5 X $ d x t 5 M.5 u M $ N x t d ] ( X < @.C . p ;X] r S > @.C : # &X9X: t 9.9.y y $X] $ n j K j k D c 9.y N v tXk J c tXy D c 9.i l G c tXk D gXhXuX:X=X9X .[ 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! ~ ~ V.J.Q.!.T.T.Y.T.Y.T.R.Y.Y.Y.R.R.R.", "^././.^././.!././.^.^.^.!.^.!.Q.Q ~ _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.4.t.5XbXsX4.=.t.D t OX-X^ a H yX@Xn - p.S t * ] P g * ] P n c * O.P X A qX*Xa < 6.w . j x V t < 6.w r A t A V : * O.O.# > +.J t p ;X0X# A , +.J k $ _ O.$ j 9.pXA t 8XqX5 : C C o x H c yXy M z z y m @Xz u D c aXc k D c z u D 4.=.t.bX} [ ..[ 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.w ^ ~ B.C.Q.(.!.T.R.E.T.R.Y.Y.Y.R.Y.E.Y.", "/././././././.!./.!././.!.]..XQ.Q ~ _ :.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.t.%.fXsX1XxXfX=XN j p i y . r y r a O o o g o = o t o $ o t j X $ X t r u r a o > r # X u X . o > o t n o u X . X X t t X O r : X p y t m X O o X t = $ o X u y X t p y t . O o o h m i x A m F F x . y F x M x y r t m F F x D <.4.1X} { | | | 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.I ~ ~ N.C.Q.~.T.T.T.R.R.R.Y.R.Y.T.T.Y.R.", "!./.!./.!./.!.]././.!.!.].!..XI.Q W _ 5.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.y.*.*.*.<.bXbX,XN t 4 m j f n m B f M s M f M M m f n S M u . m m M n n B n f m H l f M m M h k m m n r l M M h j A S t k M l h k B B n t h M M h f x M k f M M k j M n j h M M M g g B m n g m M j f m m m g n m m m t B B B D gX > 4 h g m t h h t # X l n j o t S y t j > 5 N h g n u r h y j u r : X > f j : # : g : X . f g j X j l , , , l < , , l , < , l , < , , l ; , , D ,X} [ | | | | [ 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! ~ ^ N.C.Q.!.!.T.T.R.T.R.T.T.T.T.T.Y.R.", "^././.!././.].!.!./.].!.].!..XI.Q ^ _ 5.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.y.*.*.*.=.y.3X,X,XF >XbXxXD v 0.@Xa i &XV j H 9.%XM F v @Xm x O $Xu X n UXr.X k v v a n ] ( r M 5 M.5 X H c tXs 5 NXNX: $ ] F p M $ ] F u $ P _ : > @.C X > @.K . a K qX: t C ; < , C < ; , B < < , C < ; ; < M , < < N } .| | | | | | 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.9 ^ ^ V.C.Q.!..XT.T.T.R.T.Y.R.T.R.T.T.T.", "/././././.!./.!./.!.].!.!.]..XI.Q Q _ :.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.4.&.fXfXfXvX1X,X F v tXa * o.P u S > 6.w # $Xb v t B NXK o $ ] ] h c $ O._ k $ s p.4 > +.C k > +.J f # ^ O.# f 4 a X n n a B t t t t y X V ( d P * a a t V [ | [ | | | | | 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.I ~ ^ N.C.Q.(.!.T.T.T.T.R.R.T.T.T.T.T.T.", "/.^./.^.!./.!.].!.].!.].!.]..XI.Q Q _ :.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.t.&.gXgXgXgXsXzX h H k H l . $ $ X k > < 5 g S G G c n s 4 4 $ = $ a h j = $ g t t < > h o : g f o > r X = * t u K N K N X n J kX H jXy * $ _ B = 8XbXA B | | | | | | | | 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.w ~ ~ ) C.Q.^..XT.T.T.R.T.T.R.Y.T.T.T.T.", "^././.!.].!.!.!.].!.].!.!.!.!.I.Q ^ _ :.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.gX<.*.*.*.#.=.y.3XA -XbXvXD n y t h k m t l k t t f : t t h g a n o n j n # f g a # h g X o f h a n X f t X o h o o o g z , , , , , , > j f k m f f : a g h : a g r : B k z < @.> o &XkXo K N y . %X&X *XLXc d * r.N = *XLX&X( | | | | | | | | 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.Z Q ~ V.C.Q.~.!.!.T.T.T.T.E.T.T.T.T.T.T.", "/./././.].!.].].!.].].!.].!.!.I.Q ^ _ :.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.zX5.#.#.#.#.*.4.3Xc =XvX,XG F v c m l v c B F v c n x %XD 4 x n M.$ X B ] V o d ] ( X $ d y : s ] ( r M $ d y . A O o , - - - - - +.< N n $XJ a > @.C . > @.C X t S.UXB ` e e w d d ( * V * V ^ V ( d H G c ] ( J n P ( V ( [ | | | | | | | | 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.I I Q N.C.I.^.!.T.T.T.T.T.Y.R.R.T.T.T.T.", "^./.^./.^.^./.^.^..X/.!.!./..XQ.Q Q _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.u.*.#.#.#.#.=.4.1XA +.J k > +.r.h 4 NXr.$ { X.X.X.| ] { X.X.X.X.X.[ X.X.X.....| O.O.O.O.{ { X. .| | | | . .....1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! Q ! M.C.Q.~.E.!.T.T.E.T.T.R.T.T.T.T.T.", "/.^././././.[.[./.!.!./.!.!.!.I.Q Q _ :.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.gX<.=.*.=.*.=.y.*Xm %X*X&Xc H $XH l A y S k H $XH l : M t g t > > 5 j a $ $ g . $ $ k g y # h : $ $ X l g j $ j X O o r , , , , , , , > m j n k g : > X g : O o t B ( ( / X.X. .| o.P X.[ | | | | | [ | . . . .X.X. .X.X. ... .| | | | | . .X.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.9 ~ ^ N.C.Q.!.^.T.T.E.T.T.R.Y.Y.T.R.T.T.", "^./.!.^.!./././.^././.!.!.!..XI.Q Q _ :.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.xXzXv v v v z c B n n t X f > > : f c +X+Xh M a a f : o o h j s a # f g n . f n a o l > > . g g t . t k : o X f j # . g h 5 B n i OX+Xk j f n j g f y a : c &X&XN K } { .| | | { o.] . . .| | | | | | | | ..| | | | | | | .| | | | | | | ....1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.9 ^ W ) C.I.Q.^.T.T.T.T.R.R.R.Y.T.T.T.T.", "/.^./.^./././.!././.!./.!./..XQ.Q Q _ >.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.zX,X@X9.x c pXx n c c v x # @.J p 4 8XmX$Xm c v c a 4 B N 4 l s ] d X B ] d X 5 _ $ X : UXr.o s ] ( O N O o $ B y g 4 MXNX4 OXlXgXi M j $XJ n r $X;Xr $XqX} } ] } .| | [ ..9X*X=X..[ .| | | | | | | | | | | | | | | | | | | | | | | | ....1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! ^ ^ ) Z.W.E.!.^.T.T.T.R.R.Y.Y.E.T.T.T.", "(.^./././././.^.!./.!.!.!./.!.J.Q Q _ :.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.vX,Xl e.i b 0.x B c c z x t r.NXz a 8X:X8XM c 9.v a n C B . c * o.P o * o.P X < 6.w X N NXr.> * o.P o M O o a A V t B UXK > OX:X8XOXM j &Xm X f :X;X$ _ [ [ [ | | | .{ 0X-X#XhXhX-XqX..[ | [ [ [ | | | | | | | | | | | | | | | | | | | | | 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! ~ W ) C.Q.~.T.T.T.R.R.Y.R.Y.U.R.R.R.T.", "[./.^.^./.!./.^./.!./.!.!.!..XQ.Q Q _ :.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.zX*XH A S A k S k j H $XH m < B > k b b p c H A H l > o > j j # * $ k # * $ t > , 4 t t # o : . & $ t m o O O g : t $ : j a : : c u b k k j j y . X p F ] ...| | [ [ | { 0XbX>X=X5.;.iXbX4XqX| { 0XqX..[ | | | | | | | | | | ..| | | | | | .| 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.9 ~ W ) C.C.T.^.E.T.R.E.Y.Y.Y.Y.R.E.T.Y.", "/.[.^././.^.^.^.!./.!.!.!.!..XQ.Q Q _ :.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.zXN G %XG %XG %Xl : 5 , , l s r a f e _ ` k k a a f g g . f j t t X f g X o f M a a h M k s f g . X . l : n n j f n j h j a # g f . . . k f g : s $X&X..{ { | | [ } ] { 0XvX e.; a $ m y j H c @Xm F v v j $ s f r M a ] ( o y *XK . u $X] X > @.C o A y @X%X+XLX..[ | [ | ..o.V 0XqX1X D eX0XbX4X-X>X} .| | | [ { [ [ { eXqXqX} [ | | | | | | 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.9 Q W N.Z.J.I.!.E.R.Y.Y.R.L.R.Y.Y.Y.R.Y.", "!./.!./.!./.^.^.^.^.!.^.!.^.^.I.Q Q _ :.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1., r.5 -XvX1X1X,XN k +.+.+.B l i.v a P ] O.V b 0.v n t A c n x < r.e.. k A V j F 9.tXX F z v t k x V u c * o.O.X y +X$Xn p ;X0Xa ; @.J i M f :XL L ..[ | | | | X.] N *X*X*XG B 5 r.LXkXr.D ..[ [ } qX,X..| [ | [ 0XqXqXqXqXzX5.7.-X} | | | | | | 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.Y Q Q T C.I.I.T.T.R.U.R.U.U.L.Y.Y.U.U.U.", "/./.^./././.^.^.^.(.^.!.!.^.^.I.Q Q _ :.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.@.L z =XbX1XvX X l t OXF P { | | | | X.{ ] %XC D J J G , &XUXi.C J -X| eXcX,X} | | | | [ 0X>X,X.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.z OXx , f : . . t x 9Xo. .| | | | { { 0XhX3.-.%.%.;.9.B K NXkX, G bX-X1X,X} [ ..| | | | [ ....| 0XfXpXpXjX} [ | | | | .1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.I W Q N.Z.I.I.T.T.R.U.U.U.L.U.L.U.U.Y.Y.", "/./.^././.!.^.!.!.(.^.^.^.!.!.Q.Q ~ _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.zX,X3X,XgXy.=.<.D s c v x a l w.+X# l w.@X# l 0.+X# x $XD j k f e.; X y qX$Xa x &X= X s ] V X 5 _ 4 u @Xc ] ( X s &X;Xt > ; < > B r.n o A &X..[ .| | .} 0X0XsX%.*.#.*.#.=.e.5 z C , > G ,XbXvX} [ | | [ [ [ [ | [ | . .......} | | | | | | | 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.Z Q W T Z.J.E.T.T.U.U.U.L.L.L.L.U.U.U.U.", "/.^././.!./.!./.^.^./.!.^.!.(.Q.W Q _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.gXzXxX8.&.yX&.<.D y z i.c t z i.%Xt z i.%X# l i.%X# H %Xj # c < q., X A wX-X. D &X&XX * o.P X < 6.w f c d o.O.o s qX4Xy H c @Xt B UXr.m &X..{ | | | | { 0X7XzX%.#.#.#.#.#.*.9.%XJ G G G %X-X} ..[ | [ } qXqXqXqX..{ .| [ [ | [ [ | | | | | | | 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.9 Q ~ ) B.J.E.R.R.Y.U.U.L.L.P.L.U.U.U.L.", "[./.!./.!././.!././././.(.(.!.Q.Q Q _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.7.$.-.$.sX6Xy.3.D t t c A B t k y a t x f h g x h h . m r g n o j > # t A k 4 n N y n # & $ a : < 5 < > X * $ # o r y X $Xz v t m &X&XL ..| | | | | [ 0XcX3XgX-.#.#.#.#.#.*.aX5X3XbX} ..} X. .| | [ eX>X>X7X5.0.jXqXqX| { [ { .[ | | | | | | ..1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! W W M.B.C.E.R.Y.U.L.G.L.L.L.L.L.L.L.L.", "/./././.[./././././././././.(.Q.Q Q _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.4.=.%.sX3X3Xy.<.D a j 4 B M M n 4 B M n M f n B B b M M B l : m B B B B M n m m M m m M x B B S N B B j t t t n : @.C o D A $XH &X..} ....| | | | { 0X>X4X} jX-.#.#.#.#.*.y.vX} ..| [ | X.[ | | [ } >XbX1XzX$.#.$.-.yX4XqXqXqX9XqX..{ [ { { { .1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! Q Q T B.J.U.Y.Y.L.L.G.D.L.D.L.G.L.L.L.", "/././.]././././.(././.(./././.Q.Q Q _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.fXyXgX3X,X2Xy.<.D A c +Xj o r +Xk j r t r t r u o g X u r . r r r t X t o . o r b t X r o r X u u t j M x 9X;Xt j kX9.k %XG 9XeX| [ [ [ ..| | | { 0X1XqX .{ &X$.#.#.#.#.y.4X} { | | | | [ | | [ } cX>X3XvX4.#.#.*.>.zX1X>XcXu.;.q.rXqXqXqXqXMX} 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.9 ^ ! N.N.C.E.R.U.U.L.L.L.F.F.P.L.L.L.L.", "(././.].]./.)././.^././././.).Q.Q W _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.xX2X3XvX,X2Xy.3.N N S $XM K N +Xc y B K 4 4 p >X$X: x lX*X. m qX$X: x &X= X k 9X;Xg k &X= X n ] ( o m N k wX-Xt k &XL $XrX} ..{ | | | | | | | [ 0X>X4X0XqXqXvX*.=.*.=.8.4X} .| | | | | | [ { eX,XX1XcX>XqX1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! ~ Q T B.C.L.U.U.L.L.G.G.F.P.G.F.P.G.P.", "{.{./.]./././././.^././././.).Q.Q Q _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1X7.7.3XvX2Xy.3.m S MXN X K K t 5 l D K m X $XLXNX4 c mX=Xt A wX-X. D -X&XX A qX-XX D &X&Xt * o.P o M k r c $XA 9X} } } | [ | | | | | | | | | [ qX>X.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.,X6.<.3X.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.vXsXfX3X1X,X3X,XN a # . l t . : l : 4 n 4 h j . : l : x c c : 4 : f : X : l j # : f S G G G S 9X} ] } ^ _ | | | | | | | | | | | | | | | | | | | [ [ { X.| | | [ X. . .X.| [ [ { eXqXwXqX,Xt.$.=.q.3X%.#.#.*.7.,Xt.gX1X8.%.q.2X,XzX2XiX$.*.#.5.q.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.I W Q T a.K.L.L.Y.L.G.G.D.F.F.F.F.G.F.F.", "{.{./.].]././.]./.]./._.).).{.Q.Q ^ _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.zXxX,XvXvXvX,X K C o , K , 4 x &X= # *XbX>XqX} | [ ZXZXo.] ..| | | | | | | | | | | .[ [ [ { { [ { { { X.{ { { { { { { { { eXqXqXgX5.tX2XzX%.#.*.q.2X&.*.#.#.*.=.0.5X1X3.=.u.5X7.%.w.1X<.#.*.7.5X1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.` W Q T a.C.P.L.L.G.F.D.F.F.F.v.F.G.F.F.", "/.{./._._./.{.(.{.).{.{.).).{.Q.Q ^ _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.w.%.%.%.%.%.7. G &XL # v xXqX..[ | X.ZXeX{ ..| | ..| | | | [ [ [ { { { 0XqXwXqXwX9XqX9X9XMX9XwX9XqXwXqXwX9XqXgX<.%.-.4.xX1XzX$.*.*.q.2X%.=.*.=.<.q.gX1X1XiXq.gX2X3.*.#.$.#.*.&.sX1X1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.Z ^ W T B.C.L.L.L.G.G.D.F.v.v.F.F.F.F.P.", "{./.{./././.].]./.{.{./.{.].{.Q.^ Q _ 3.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.t.*.*.=.*.*.*.7.D r c k j t +Xy h j # X r j : A . j t D . j > > > g > p u : n B k : @X-X..| | | [ ZXZX{ ..[ X.X.....{ { 0XwXwX9X9XqXdX5.dX5XxX1.%.1.1.%.1.dX1X7X>X5.$.2.%.-.=.*.*.q.3X3X3XyX#.*.0.zXy.q.q.q.vX5X l j # : : : : : f v D D G $X} [ | | | | ZXZX{ o...X.o.( ] 9XqXdX1.1.1.%.2.$.*.$.gXgX=.#.#.*.*.t.bX,X>X1XaX7.*.*.4.yX0.#.#.%.aX2X,X%.#.#.-.q.6X2X5X1X4.;.q.2X.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.iXsX5X2X6XsX%.3.m B N # # N K O a k G MX4 B m J o 4 ; +.+.h < K , # y &X= # tXt.cXqX/ o. .| | .| ZX} ] n L ] k lX#X+XxX-.=.#.#.*.*.#.#.*.dX2X0.#.#.#.*.iX3X<.%.iX2X5XaXq.vX5X2Xq.#.#.#.iX5XaX#.#.*.q.2X1XvX4.3.q.#.aX3X,X1X1XiXgX5X3.*.7.6Xu.=.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.Z Q Q T B.D.G.L.F.F.F.D.v.v.F.v.v.F.F.x.", ")./.{./.(.{././././.)./.'./.{.Q.Q ^ _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.vX2X7.7.1X2XgXpXN D K m X S NXj n b %XLXD # S NXB 4 ; +.+.5 , K C > L -XL # pXyXqXX.O.o.X.| | X.[ Z h D a %X$Xr mX>X$XxXq.8.*.*.8.7.*.#.*.pX5XgX*.#.#.*.iXzX*.#.#.3.iX5X3X1XbX,XgX%.#.*.w.5X2XaX#.*.0.2X1Xy.=.0.3X$.7.2X,XvX p r : B B y k .1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.zXdXq.w.$.*.0.1XN . . 4 f : # . l g # . g l g . H b t y 5 l g 5 4 b c D N -XqX..X.X.P o.{ 0XqXhX5.c n %XA D m X %X>X1XbX,XbX2X3X,X3XfX*.#.#.%.gXgX=.8.vX2XsX*.#.#.#.#.*.#.#.#.#.#.#.#.#.#.#.3.$.#.*.=.0.2X%.#.#.#.*.0.5X3.#.*.=.*.*.*.#.#.0.bX1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.I I Q T a.C.F.L.P.F.F.F.m.v.v.v.H.F.v.F.", "/./././.)./././././././././.[.Q.Q Q _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.cXbX2X6Xy.*.4.1XB c lXc # x lX+Xa f M %Xu X N N c S p =XH j > K > : -XbX>X0X{ { | X.] 9XqXcXbXcXtX$Xn 4 . X M G J 5.%.3.&.&.%.%.-.%.#.#.*.*.=.iX3XaXzX2XgX<.*.*.*.*.*.*.#.#.#.#.#.*.*.#.#.#.#.#.*.<.q.gX2XaX*.#.*.3.gX2X3.*.&.q.w.q.0.$.*.#.5.q.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.Z I Q T a.B.G.G.G.x.F.D.v.v.v.x.F.x.F.F.", "/.)././././.)./././.!.]././.[.Q.Q Q _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.vXbX,X2Xy.*.4.1Xm @XmX;X# @XmX;Xn x S LXX o _ K . 4 $XLXNXj K r.r.X *XcXqX..[ [ .o.L p #XMXkXuXnX$Xn f &X;Xv 3.=.=.*.*.#.*.t.0.0.w.y.*.t.q.q.vX,X3X3XzX%.=.4.q.w.q.q.7.#.*.*.*.#.<.0.#.#.#.*.*.<.zX5X,X > > . =XqX| [ | | { N uX@X+XMXMX=XcX$Xn m wX-X@Xq.0.q.4.#.#.*.gX5X2X2X,XaXX#X_ K ;X:X@Xl k $X$X$X5X2X6XsX=.*.*.fX3X.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1X4.=.0.3X1X2XXx 4 %X.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.vXiX%.3.3X2Xw.7.D B S @Xx B %Xr n y D N +Xc N K +Xc m kXn B =XcXqX| [ | | ..] c uX+XX M G G %XH J n n &X2X1X,X4.=.%..1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.zX5Xy.=.7.2XiXaXm D &XK . S LXo . b kXK 4 . K K . # $XLXD n =XqX| [ | [ [ rXu u mX>X. *XhX4.,XfX4.J j J t.gX2X,Xw.w.,XgX%.hX2X3X,X8.*.4.y.iX2X,XzX4.3.3.3.dX3X,X,X1X1X.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.0.0.2X5XiXpX3XX=X$XmX7Xv 3.t.@Xn m wX-X$X3X,X1XgX4.%.*.fX3X3X2XfX=.#.*.dX3X,X,X5X1X,X1XgX-.#.$.6.gXXa # X 4 D $Xn B J <.&.%.3.4.vXdX*.#.*.dX,X0.zX1X1X0.0.zX3X3XsX=.aX5XvX5.<.y.*.#.%.gX,X-.#.#.#.2.gX1X8.=.0.6XyX8.*.*.iX5X3.*.#.aX2X,X1X7.%.=.y.5X,XvX3X<.*.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.I ~ I T a.D.G.P.D.P.F.D.v.v.v.v.v.F.F.x.", "!.^.E.!.T.T..XT.T.T.T.^.T.T.^.I.Q Q _ :.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.,Xq.5.0.2X3X,X.=.gXfX=.#.#.3.zX3X1X>X1X2X6XgXy.gXgX=.&.gX,Xw.zX2X7.#.*.q.5X7.#.#.<.xX5XzX$.*.$.iX5X3XyXu.fX1X%.#.#.-.tX2X1XyXu.7.dX1XxX,X3X4.*.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.I ~ Q T a.B.G.L.P.F.F.F.v.v.v.x.x.F.v.F.", "T.!.T..XT.T.T..XT.T.T.T.^.T..XI.~ Q _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.eX4.*.#.5.w.3X1XH 8XlXOX. M.K t M k X1XbX5X4.=.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.V Q Q T a.D.D.P.L.F.F.D.v.v.x.v.F.F.F.m.", "E.T.T.T.T..XT.T.T.!.T.^.T.^..XI.Q ^ _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.} t.=.#.#.#.>.q.A OXb OXk y X u 9XN ] 0X*Xx k 9X.. .| | | wX,X,X3X0.=.X-X-Xe.8.8.8.=X>X-X=X-X-X8.8.8.=X-X7.e.sX-X-X=XX-X-X-X9.8.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.Z Q Q T a.c.D.P.G.H.F.F.v.v.v.v.v.v.F.v.", "T.T.T.T.T.T.T.T.T.T.T.^.!.T.!.J.~ Q _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.NXr.7.$.#.#.*.<.D 4 4 5 b N S 9X[ m o.{ } 0X+X] ...| .} 1X,X,X3XsXq.,XbXG 9.6.$.*.-.C ;X.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.wXeXwXdX$.#.*.4.N 4 N # m =XqX| wXc &X0X0X..} ..| | | [ } ,X,X1XxX2X5X3X2XG %Xu.%.*.%.J *X1X1X3X5X3XX0X} x *Xk *Xx x 9X{ | | | [ ..iX7.,X2Xq.=.=.7.G *X1X3XsXq.G J u.3XaX=.=.vXiX=.gX5X3X3XvX7.7.7.4.#.#.*.dX1X,XbX%X$Xu.sX3X2X1X8.#.*.aX5XvX3XzX-.#.#.*.q.5XzX$.#.#.#.%.4.4.iX5X5Xw.#.#.#.$.4.3.3.*.8.2X=X*X=X*X*X*X;X=X1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.Z I Q R a.a.F.F.G.v.v.D.x.x.z.v.v.F.v.v.", "T.T.T.Y.T.Y.T.T.T.R.T.T.T.T.T.J.Q ~ _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.yXaX3XqX..eXeX} V ] ( ] N } ..} c x A M F &X.. .| | .X.wXw.*.vX5Xq.*.%.vXG *X5X2X3X2XG e.=.vXiX*.-.gXvX<.3.4.y.vX3X2X2X6XfX*.#.*.dX2X3X1X>XfX=.3.gX1X3XgX-.#.&.gX2X,X1X7.*.3.t.$.sXbX5.t.*.*.#.#.*.$.4.iX6Xq.y.*.#.$.y.y.7.dX>XO O O O O O O 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.! Q Q T a.x.F.F.F.F.v.x.x.x.x.x.v.v.v.v.", "T.T.T.Y.Y.T.T.Y.T.R.R.T.T.T.T.J.Q ^ _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.,X5X>XcXqXeX0X0XD ;X( } N ] ..} c %Xx %Xi ] X.| | | { X.dX%.$.X1XX,X>XxX1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.9 Q W R E a.x.F.F.F.v.D.x.x.z.v.v.m.v.v.", "T.T.T.T.T.T.T.T.T.T.T.T.T.T.Y.J.Q Q _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.q.q.3X,XcX3XyXq.D H &XM M xX0X} *Xk m k $XwX{ | | | { eXw.=.#.7.5Xq.=.7.3XG 9.u.$.6.7.L r.*.vXgX7.y.7.,XdX=.#.#.=.3.XqX.. .| | | { eXq.=.*.-.,XsX0.3X2XG *X6Xq.;.=.G e.=.gX1X2X2X3X3XiX=.*.<.y.7.zX,X1X,X4.*.*.*.*.#.=.z S =.*.*.*.%.gX2X2X1X0.4.*.=.=.yX2X,X1XxX$.=.q.2X,X,X%.*.*.#.#.*.*.#.<.*.7.7XjXMXMXcXgXMXNXgX-XMXNXnX1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.w W ~ R a.k.m.F.F.v.x.x.x.b.x.b.x.b.v.v.", "T.T.T.T.T.T.T.T.R.`._.|.oX`.(.I.^ Q _ 2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.4.4.5X,X3XaX*.4.M y $XA : @XwX} 0XS ] 0X....| | { . .eXhXy.y.w.1X1X3X1XxXJ *XcXgXt.0.J J w.>X,X1X,X,XbXgXy.7.xX5X2XbX>X1X1XxX8.y.8.y.y.u.%XH 0.t.y.y.8.gXvXbXbX3XbX0.y.y.gX,XcX,X,Xw.t.fX3X,X1Xw.y.y.u.y.t.8.t.t.y.iX7XkXNXNXnX-XNXUXcXgXNXUXbX1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.` W Q R Z.Q.~.(.~.I.z.D.z.b.b.z.b.z.v.v.", "T.T.T.T.T.T.T.Y.(.SXDXAXFXAX`.~.Q W _ >.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.4.=.q.3X2Xt.=.<.D B m n D %X%X=X%Xc =XW I P ( P I U P %X#X=X=X=X=X@X@X=X=XS J =X#X=X=XJ %X=X#X=X@X=X=X#X#X=X=X=X=X@X@X=X@X=X=X=X=X#X=X=X=X@X@X=X=X=X=X#X=X#X=X@X=X@X=X=X#X=X=X%X=X#X=X=X=X@X@X=X=X=X=X#X=X=X=X=X=X=X=X#X#Xv $X:X#X+Xc :X#Xc +X>X1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.! Q Q M.A.'.VXVX`.~.Y.x.b.b.z.m.z.z.x.b.", "T.T.T.T.T.T.T.T.BXAX6 6 2 6 AX'.Q ^ ` t.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.q.t.q.vX,XaX4.q.J =X-XgXgXvXzXzXzXc sX} | | | } | } | jXxXzXzXzXzXzXxXzXbXJ %XvXzXzXbXJ %XvXgXzXzXzXzXzXzXzXzXzXzXzXxXzXzXzXzXzXzXzXzXzXxX%Xv ,XzXzXzXzXgXzXzXzXzXzXxX>XzXzXzXzXzXzXzXzXzXzXxXzXzXzXzXzX>X=XzXzXzXzXzXzXxXxXcXxXcXcXcXxXxXxXcX>X1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.I ~ I V.BX6 % 6 1 AX~.c.x.b.x.b.b.v.z.b.", "T.T.T.T.T.T.T.T.SXFX6 7 2 8 KXSXQ ^ ^ p.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.%.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.%.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.:.Q ~ I V.UX8 6 6 7 AX(.x.b.b.b.b.b.b.b.b.", "T.T.T.T.T.Y.~.Y.CXJX6 % 7 8 GXAXR / ( Z 4.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.p./ I I S.KX7 7 & 7 GX_.c.z.l.l.z.l.b.z.z.", "T.T.Y.T.T.T.Y..XDXHX% 6 2 6 HXDX_ I I / p.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.y.r.I Q I S.KX2 7 % 7 GX`.x.l.z.l.b.l.b.z.z.", "T..XT.T.T.T.Q.T.DXHX% * 7 % HXDXJ._ Q Q Z 8.3.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.4.Z I Q I U S.HX6 3 6 7 GXBXz.z.l.l.z.z.z.b.z.", "Y.T.T.T.T.T.T.T.DXHX8 % 7 % HXDXI.J./ / ` Z @.3.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.2.1.1.1.1.1.1.1.2.1.1.1.1.1.1.2.1.1.1.%.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.2.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.4.p.^ Q Q I U S.KX% 1 6 6 HXSXc.z.l.l.l.l.b.l.z.", "T.T.T.T.T.T.T.T.FXHX8 % 2 6 HXDXT.T.K.Q Q Z Z p.6.1.1.2.2.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.2.1.1.1.2.1.1.1.1.2.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.:.@.r.^ Q Q W q U NXKX2 1 1 & GXAXz.z.l.b.l.b.b.z.b.", "T.T.Y.T.T.T.T.T.DXHX6 % 2 6 HXDXY.T.~.Z.I ^ ~ _ p.y.<.>.2.2.:.:.:.2.2.2.2.:.:.2.2.2.:.:.:.:.2.:.>.2.:.2.>.2.2.2.:.:.2.2.:.:.>.>.>.>.>.>.>.>.:.2.,.2.:.>.:.:.2.:.2.:.,.>.:.:.2.,.2.>.:.:.:.>.2.:.:.,.:.2.:.:.:.:.2.:.:.:.1.2.:.3.:.:.2.:.:.:.:.>.,.2.:.>.:.:.:.:.:.:.:.:.2.2.>.>.5.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.<.>.>.>.>.>.>.<.4.p.' ^ Q W I 8 U T BXKX1 1 6 2 HXSXc.l.l.b.l.b.l.z.l.", "T.T.T.T.T.T.~.T.DXHX% 7 7 7 HXAX.XY.R.R._ Q Q Q / / Q Q I I W W Q I ! ~ Q Q Q I W Q I W Q Q Q I I Q Q I ~ ! Q ~ Q Q Q Q Q Q W W I W ! I W W W Q W W Q I Q Q I W W W Q I Q I W Q I Q Q I W Q W W W Q W Q I W Q W Q W Q I W Q ! I I W W I ! ! W W ! W W W ! W Q Q W Q W Q Q Q W Q W Q Q W ^ Q W Q W W Q W W Q W Q W Q W W Q W W W Q W W W W W ( W W ^ ^ W W ^ W W V ~ Q Q W W W Q / / Y U 3 q R T BXKX6 1 7 + HXAXx.b.l.l.b.l.l.b.l.", "T.T.T.T.T.T.T.T.DXHX7 % % 8 HXFXT.T.R.P.K._ Q ^ / Q Q Q Q ^ Q Q ^ Q ^ Q Q Q Q Q Q ^ ~ Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q I Q Q Q Q Q Q Q ~ ~ Q / Q / / Q Q / Q / / / / / / / Q Q ~ ( / / / Q Q ^ ^ ^ Q ~ Q Q / Q / Q Q Q / ~ Q ^ ^ ^ ^ ~ ^ ^ ^ ^ ^ Q ~ ^ ^ ^ Q W Q Q Q ~ Q Q Q Q Q Q Q Q Q W Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q ^ Q Q ^ Q Q ^ Q ^ Q ^ W ^ ^ W ~ Q Q Q Q Q ~ ~ ~ Q q q q R E a.AXHX7 + 7 6 KXSXc.l.l.b.b.b.b.l.z.", "T.T.T.T.T.T.^.T.DXHX6 7 8 + IXKXI.!.E.!.I.I.A.Z.' ` ` W Z ~ ! ! ! W Z I Z I I I 9 ! ! Z ! Z I 9 I W W Z I 9 W Z ! Z Z W W W W W W W W W W W I I I ! I I ! ! ! ! W I Z I ` Z I 9 ! Z I W Z W ! ! I Z ! 9 I 9 I I I I I I ! 9 I W V I I Z I W W W W W W W W Q W W W W I Z V I I 9 W ! 9 I Z I W W I ! ! I W W I I ! I I I ! I ! I V I I ! I I I I ! ! I ! I I I I I 9 9 9 W ! V 8 8 q 0 U T T a.a.KXPX7 7 7 % HXBXv.l.b.l.b.b.b.l.l.", "T.T..XT.T.T.T.T.DXHX6 + 2 7 PXHXKXFXDXDXSXSXAXBX'.A.S.M.` Y ! Y Y w I 9 w w 9 9 9 0 0 I w w 9 I w w I w w I 9 Y 0 I Y ! 9 w ! w w ` Z w w ! ! Z Z w ` Z ` ` Z Z ` Z Z ! Z ` Z ` Z ` ` Z ` Z Z ` ` ` Z ` Z ` Z Z ` Z Z Z Z ` Z 9 ` w Y ` Z I w w w w Z Y I Z w w 9 w 0 w Y w w w 0 w 0 w 0 0 0 0 0 0 0 0 0 0 0 0 0 q 0 q 0 q 0 q U 0 q 0 0 0 0 q q q q q q q q q q q q w _ _ S.S.S.S.S.NX'.BXAXKXPXIX2 2 7 % HXAXb.b.l.b.b.b.l.l.z.", "T.T.T.T.^.T.^.T.DXHX6 6 7 7 PXIXPXHXHXHXHXHXHXHXKXFX'.S.Z.N.M.) ) ) ) ) ) ) ) ) ) ) ) ) ) ) N.M.) ) ) ) ) ) ) ) ) ) M.) ) ) M.N.M.) ) M.V.) M.' V.M.V.V.M.V.V.V.V.V.V.V.V.V.V.S.V.V.V.V.V.V.V.V.M.V.V.V.V.M.V.V.V.M.V.V.V.) V.N.M.V.M.) ) ' ) M.) ' ) M.M.) ) N.) ) M.T T N.N.T ) ) ) ) T T T T T E T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T R R M.S.NXBXUXUXKXKXKXKXHXKXPXPXPX7 1 % % HXCXz.l.l.l.l.l.b.l.l.", "T.T.^.T.T.^.T.^.SXHX% 6 6 8 5 7 7 7 7 & 7 7 7 7 & & e BXQ.C.C.C.C.C.C.C.C.C.C.C.C.C.Z.C.Z.C.C.C.Z.C.Z.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.A.A.A.C.A.A.A.A.A.A.A.S.S.'.W.A.A.A.A.S.A.A.A.A.W.A.A.A.A.A.A.A.A.A.A.A.A.A.C.A.A.C.A.C.A.A.A.C.A.A.C.C.A.C.C.C.C.C.C.C.C.C.B.Z.Z.Z.Z.Z.B.B.B.C.Z.B.Z.B.B.B.B.N.a.a.B.N.B.N.a.B.a.a.N.B.a.B.B.a.B.B.a.N.a.B.a.a.a.a.a.a.a.a.'.`.2 % 6 7 8 % % 7 1 7 7 & 7 6 1 + 8 HXDXc.l.l.l.l.l.l.l.l.", "T.T.^.T.T..X^.T.oXKX8 1 6 6 6 % 8 1 1 6 6 2 2 2 7 % & FX'.Q.Q.Q.Q.I.J.Q.J.Q.J.I.I.J.J.I.Q.J.Q.J.Q.J.Q.J.I.Q.J.Q.Q.Q.I.I.Q.I.I.Q.Q.Q.Q.Q.Q.Q.Q.Q.~.Q.'.Q.~.'.Q.Q.'.'.'.'.'.'.'.'.'.'.'.'.~.Q.'.'.'.'.'.'.'.'.'.'.'.Q.~.'.'.Q.Q.'.~.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.J.Q.I.J.J.I.J.J.J.J.J.J.J.J.J.J.J.J.D.J.C.D.D.C.D.D.D.D.D.B.D.D.D.D.D.D.D.B.D.D.D.C.D.B.c.D.a.F.D.a.c.B.a.c.n.`.FX+ 8 % 6 1 1 6 6 2 + 1 8 & + 8 7 + KXSXz.l.l.l.l.l.l.l.l.", ".XT.T..X!.!.^.T.VXFX% 1 2 + 8 8 1 % 6 8 6 % 6 1 6 % % DX`.~.!.!.~.~.~.~.!.!.~.~.~.~.~.~.!.^.!.~.~.~.^./.~.!.~.~.~.~.~.~.~.~.~.~.~.~.!.~././.'.)././.).`.{.{.`.`.`.`.`.|.`.BX`.VX`.oX`.|.`.oX`.`.`.`.).).`.`.).).`.`.(. X(.`.(.(.'.).)./.'./././.~.~.^.~.~.~.!.!.~.R.T.T.E.Y.T.R.U.Y.Y.R.U.U.L.L.U.U.L.G.L.J.L.D.F.G.G.L.G.G.D.D.G.P.D.F.F.F.D.F.F.F.D.G.P.P.x.D.m.v.x.BXFX1 8 % 7 7 7 7 7 7 7 1 % 8 @ 1 7 % GXVXc.l.k.l.l.l.b.k.k.", "T.T.^.T.!.!.~.^.(.CX2 2 7 7 % % 8 % 7 6 % 7 7 7 & 2 7 CX{.!././.^.^././././././.(.~./.^.(.^./.^.(././.!././././.!./././.~./.~./././././.).).).)._._.).`.|.}.|.|.VX|.|.|.BXVX|.|.oX`.SXSXoXVXVX|.VXVXVX|.|.|.|._.`.`.}.}. X}.`._._._.}.).{.{.).).(./././.!././.^.^.!.!.!.^.!.T.T.T.T.T.T.T.T.Y.Y.Y.U.U.L.U.U.L.U.U.U.L.L.L.L.L.U.L.L.L.L.L.L.L.L.G.G.G.F.F.F.F.F.F.x.x.VXDX1 6 8 7 7 7 3 7 6 1 7 1 % 7 1 1 2 DX(.c.k.l.k.l.l.l.k.k.", "^.T.^.^.!.!./.^.^.BXAXFXGXHXHXHXHXHXHXHXHXHXHXHXGXJXAXVX)./.^.~.^.(././././././.^.(.^.^.^./.(.~.^./.^././.!.~./.!./././.^./.^.^.~./.)./.)./.(.)._._. X X|. X}.oX|.}.|.oXoX|.|.|.SXSX|.|.SX|.`.VX|.`.VX`.|.oX_.|.oX{._.}.}.{._.`._._.).{.`.).`.`.).).)./././.!.!.!.!.!.T.T.T.~.Q.T.E.R.T.I.E.U.R.Y.Y.U.I.U.U.U.U.L.L.U.L.U.L.L.L.L.L.L.L.L.L.L.L.L.G.G.F.F.P.F.F.F.x.D.`.DXFXGXJXPXHXHXHXPXHXHXHXHXHXHXGXJXAX`./.b.l.k.l.l.l.l.l.l.", "T.^.!.^.!.^.[./.!.~. XVXCXFXBXFXDXDXDXDXAXDXDXDXAX`.oX~.~.!.^././././././././././.~./././././.~././././././.~./.~././.!./.^./.!./././././.{._.).{.{.}.}.}.}.}.}._.|.|.oX'.W.W.W.`.VXSX|.oX}.|.|.|.|.|.|.|.|.|.VX|.).|.}._.{.{.{._.{.{.{.{.{.}.{.).)././.^.^.!.!.!.!.!.T.T.^.E.E.T.R.R.T.Y.T.Y.Y.Y.R.Y.L.U.U.L.Y.U.L.U.U.G.G.L.L.L.L.L.G.L.L.L.P.P.G.P.F.F.F.v.F.x.F.x.x.'.AXAXAXAXFXFXFXFXFXFXAXCXCXFXBXBXBX!.l.l.k.k.l.b.k.l.l.l.", "^.T.!.!.!.^.!././.!.].!.^.!.!./.^.^./.!.!.].!.!.!./././././././././././././.{.].]././././.].!.].^./././.].!./././././.^./././././.]./.].].].]./.{.{.{.{.{.{.|._.|.`.W.I 8 6 % 6 8 I Q.VX|.|.|. X|. X|.|.}.|.I 3 2 R `.`.).}.}.{.{.{.{.}.{.{.{.).{.]././.^.^..X.X!.!.T.^.E.^.T.T.T.R.T.R.Y.Y.T.Y.Y.Y.U.Y.L.U.Y.L.L.L.U.G.L.L.G.U.G.G.G.P.G.G.P.G.G.G.F.F.F.F.F.v.x.v.v.b.b.z.l.l.v.v.l.b.b.b.z.z.b.k.D.b.l.l.l.k.l.l.k.k.k.k.k.l.l.", "^.^.^.^.!./././.].]././.^.^.~.^.^.^.^./.~././././././.).]./.).).).).)././.).(././././././.!.].~.]./././.]././././.!././././.!././.].(.{.].{.(.)._.{.{.{._.}.|. X|.V.6 & 8 1 + 8 % % 8 A.|._.|. X|.|.}.|.|.}.I 3 + Y |.}.`._.).{.{.}._.(.}.}.].{.}.{./.^./.!.^.!.~.T.^.^.T.!.T.T..XY.!.Y.T.E.Y.Y.Y.Y.L.Y.L.U.L.L.L.L.L.L.L.U.G.G.U.G.H.G.G.G.G.G.F.F.F.F.F.H.v.v.x.x.b.b.z.l.z.l.b.l.b.b.b.b.z.b.b.b.b.k.l.l.l.l.l.k.k.l.k.l.l.l.l.", "^.^.^.^././././.!././././.^.^./././.(./././.~./././././././.)./.)././.).)././././././.)././././.!.~./././.]./.]././././.!.!./././.].]./.)./.{.)././.{.{._.}.}.|.C.3 % % + q Y 0 % 8 + q '.|.}.}.|.}.oX XoX|.Z.V.V.Z.}._.VX)._.}._._._._.}.[.(.{.~.)./././.~.[.T.T.^.E.E.E.!.!.U.Y.T.T.I.Y.R.T.Y.Y.E.Y.L.U.U.L.U.L.L.L.L.U.G.G.L.H.G.P.G.G.G.P.G.P.F.P.x.F.v.v.v.v.b.b.b.l.z.l.l.b.l.l.l.b.b.z.l.b.k.b.b.l.h.k.l.l.l.k.k.l.k.k.l.k.", "!.!.!././.]./././.]././.!./.!././.^./.)././././././.)./././.).).)./.).{./.{./.).).{./././.~./.]././.].]./.]./.!./.^././.[././.].]./././.{.{./._.{.{.{.{.}.}.|.).I 8 1 6 ) X X`.) + 6 3 W. XA.A.W.'.W.V.C.).Q.A.A.W.}.).W.W.W.'.'.Z.N.N.~.{.'.Z.' N.Q.).(././.(.R.' ' ' ' J.I.!.Y.XXT.R.R.T.Y.Y.U.Y.U.U.L.U.L.L.G.L.L.L.G.L.G.L.U.G.G.G.P.F.G.G.G.F.F.v.F.v.z.v.z.b.z.l.l.l.l.l.l.l.l.l.l.l.l.l.b.b.k.b.k.b.k.b.l.k.k.l.k.l.l.k.k.", "]././.].]././././././././././././././././././.)././././././././.).{.).].{._._./.)./.{././.]./.!././.~./.~.]././././.^./././.].]././.).)././._.)._.{.{.}._._.}.'.8 1 6 1 |. X|.}.'.Z.Q.`.{.|.1 8 + ' % % q ~.Y + 1 R }._.% + 2 ' 8 + 6 6 8 W.I 1 % + 8 J.^.!.~.a.8 % 8 1 1 1 R I.!.T.T.R.T.R.Y.Y.U.Y.L.U.L.L.L.L.P.G.G.G.P.G.P.G.G.G.G.H.H.P.G.G.F.F.F.F.F.x.v.v.b.b.l.z.l.l.l.l.l.l.k.l.l.l.l.l.k.k.b.k.k.k.k.k.l.k.k.k.k.k.k.l.l.", "!.]./.!./.).).)././././././././././././././.)./././././.)./.).).{.{.{.{.{.].{./.).]./././.~./././././.].].].]./.(././././././.)./.).).).).).).).(.{.{.{._.}.).C.+ % % ` X|.|.|.`.|.VX X|. X7 & 6 6 % 8 ) |.I 8 6 Y XVX% % % 6 3 1 % % 1 1 3 + * % 6 U ~.(.' 8 1 8 + & 6 % 2 R !.R.E.T.U.Y.Y.U.Y.U.U.L.L.L.L.L.P.G.G.P.G.G.G.G.G.P.H.G.F.F.F.F.G.F.x.F.x.x.b.z.z.z.l.l.l.l.l.l.l.l.l.l.l.l.l.l.b.k.b.k.k.b.k.k.k.l.k.l.k.k.k.k.k.", "/./././.)./.)./.)./././././.(.^././././.)./.).).{.).{.).).).).).]./._.{.{.{.).{.).{.{.(./.]./.!.!./.~.].].~././././.)./././.{././.)././.).).).).{.{.{.{._._.{.W.8 % 6 Y |.|. XVX|. X).`._.|.1 6 6 + ' C.Q.oXI 8 8 I _.).8 6 + q Z.V.6 & 8 + N.Z.q 7 + 8 (.(.8 6 % R Q.(.T 3 8 3 Z.T.T.Y.E.Y.U.U.U.L.U.L.L.G.P.P.G.G.G.F.G.F.F.F.F.F.F.H.F.F.G.F.F.F.x.x.x.x.b.b.z.l.l.l.l.l.l.l.l.k.k.l.l.l.h.l.k.k.k.k.k.k.k.k.k.k.k.k.l.k.l.k.k.", "/./././.).).).).)././././././././././././._.).).)./.{.)./.{.).)._.).{.{.{.{.{.).).].).]./.]./.]./.]./.!././././././././.).)./.{.).).).).{.)._.).}.{.{.{.{._.|.J.& % 6 Y |. X}.|.`.'. XVX|.(.2 6 8 U `._.|.{.R % + Y |.{.6 2 6 ` |.`.I 6 1 U (.{.' 3 7 6 /.J.6 % 3 T ' E ' 3 % 3 E !.T.L.E.U.Y.U.U.L.U.L.L.L.L.G.G.G.H.F.F.F.F.G.F.F.G.x.F.F.F.F.F.x.F.x.x.z.l.z.b.l.l.l.l.l.l.l.l.h.l.l.k.l.k.k.k.k.k.k.k.k.k.k.l.k.k.k.k.k.k.k.k.", "].]./././.)./.).).).{././././.)./.).).(.).)./.).).)._./.).).).).).{.{.{.).{.{.{.{.].).)./.]./.]./././././././.(./.).).)././.{./.).).).).{.).).).{.{.}.{._.}.}.).6 6 2 6 _.|.|.}.W.3 U ' '.}.6 % % ' |._.}. XI 6 8 I }.|.% 7 6 Z.{.).R 8 6 I {./.' 6 8 % '.J.2 7 % % 8 6 % % * 1 E Y.R.R.U.Y.U.U.L.U.L.L.L.L.G.P.G.G.P.F.F.F.F.F.F.F.F.x.F.F.F.F.F.F.v.x.x.z.z.z.b.b.l.l.k.l.l.k.l.l.l.l.k.k.k.k.k.k.k.k.k.k.k.g.k.k.k.k.k.k.k.k.k.", "/./.).)./.{.).).).)._./.)././.)./.).).).{./._./._.{.).{./.).).{.).{.{.{.{.).{.{.{.).).).).)././.]./././././././././.).).).].).).).).).{.)._.)._.{.{.}.{.{.}.{._.I 6 % 7 ) BX|.).U 6 & 8 Z.|.6 + 7 N.`._.}. XY 1 6 Y }.|.2 7 7 N.{.}.Y 6 6 Y ).(.' 2 % * ).J.& % % ' C.B.B.Z.Z.a.D.T.T.Y.T.L.L.U.U.L.L.L.L.L.L.G.P.G.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.x.v.v.z.b.b.l.l.l.b.k.l.b.l.k.h.k.l.k.k.k.k.k.k.k.k.k.k.k.g.k.k.k.k.k.k.k.k.k.k.", "/.)./.).{./._./.{._.{.).).).)./.)./.).).).)./.{.]./._.).{.).)._.).{.{.}.{.).{.{.).).].).).).]././././././././././././.(.{.{.{.).).{.{.{.).)._.).{.{.{.{.{.{.]._.J.6 % % 8 U Y 8 + & @ q VX/.% % % N._.{.}.{.I 8 6 Y _.|.1 & 7 N.{.{.Y & 1 I ].(.N.+ 1 6 /.^.q + 8 U B.Z.R @ U R I.XXY.T.L.E.U.U.L.U.L.L.L.L.G.L.G.G.F.F.F.F.F.F.F.F.F.F.F.F.F.x.v.v.v.x.x.z.z.z.l.l.l.l.l.k.l.l.l.l.k.k.l.k.k.k.k.k.k.k.k.k.k.k.h.h.h.k.k.k.k.h.k.", "/.).].).).).{.{.{.]._.].)./.).).).).{.{.).{.{.{.)._._./.{.{./.{.{.{.{.{.).).{.].).).).].).)././././././././.]././.{./.].].{.].{.{.{.{.{._._.}.{.{.{.}.{.{.{.{.}.`.Z.+ 1 8 % @ % % 6 q W.}.{.8 % + ' `./._.|.Y 8 + Y }.`.3 % 6 ' }.).Y 6 6 I ]./.' 7 % % ).!.C.3 + 8 1 1 6 % 8 ' R.T.Y.Y.U.U.U.L.U.U.L.L.L.L.L.G.G.G.P.F.F.F.x.F.v.x.x.F.x.x.F.F.H.v.x.x.z.l.z.b.l.l.l.l.l.b.l.k.l.k.b.k.k.k.k.k.k.k.k.k.k.g.k.h.h.h.h.h.k.h.h.h.h.", "/./.).).).{.{.{.{._.{.).)._.{.).).).).{.{.{.(.{.).).{././._.{._._.{.].{.{.).).{.)./.).).).).)././././././.]._.].].(.{.)._.{._.{.{.{. X}.}._.}.}.}.{.{.{.{.{./.{.`.`.C.U + 3 8 8 1 Y W.`.}.].1 1 1 N. X}.{.{.Y 1 8 I |.VX1 % % N.CX XR 1 8 Y /.{.' 8 3 % /.].^.Z.U + 1 8 1 8 E Q.T.Y.R.U.R.U.U.L.U.G.U.G.L.L.G.P.G.G.F.F.F.v.F.F.F.D.F.F.F.F.F.x.v.v.v.x.z.z.l.l.l.l.l.b.k.k.k.l.l.b.k.k.k.k.k.k.k.k.k.h.k.k.g.g.h.h.h.h.h.h.h.h.h.", ").).).).{.{.{.{.{.{.{.{.{.).{.{.{.{.{.{.).{.{.{.{._./._.{.{.{.{.(.{.{._.).{.{./.).).).).)././.)././././.(.{.{.(././.]._.{.{.{.{.{.{.}.}.}._.}.}.}.{.{.{.).).}./._.(. X`.`.W.C.A.(.`.}. X{.{.`.|.|.{.).).{.}.{._.{.|.[.[.}._.`._./.[./._.].).].!.)./.).).!.Q.[.[.Q.Q.Z.Z.J.!.R.E.U.T.R.R.R.L.U.U.U.G.G.L.L.L.L.L.G.G.H.F.F.F.F.x.x.F.F.x.x.F.x.F.v.v.v.b.z.z.l.z.l.l.l.l.l.b.k.l.k.l.b.k.k.k.k.k.k.k.k.k.k.h.h.g.g.h.h.h.g.k.k.g.g.", ").).).).).{.{.{.{.}.}.{.}.).{.{.{.{.{.{.{.{.{.{.{.]._.{._./._./.{.{.]._.)._./.{.).)./.).).).).)././././.{./.].]./.{./.].{.(._.].{.{.{.}._. X}.}.{.}.}. X{.).).).].{./.}.`.).].{.}.].{.{.}.}.(._.}.{.).}.{.{.{.}. X`._.}.`.).}._.).{././.)./.!.{.!.[.^.~./.].E.!.!.~.!.!.T..XE.Y.R.T.T.Y.L.E.U.L.G.U.L.U.U.L.L.L.P.G.F.F.F.F.v.F.x.F.x.F.F.x.F.x.v.v.b.b.z.z.l.b.l.l.l.l.k.b.k.k.l.k.k.k.k.k.k.k.k.k.k.k.k.g.h.g.h.g.g.h.k.g.g.k.g.", ").).).).{.).{._._._._.}.}.}.{.{.}. X{.}.{.{.{.{.{.].{.).{.].{.).(.{._.).)._.)./.{._.]./.{.)././._././././.].{.{././.].).).{.).{.`.{.}.}. X}.}.}.}.{.{.{.{.{.{. X).].).{.}.).].}./.}.{.}.{.).{./.{.{.{.{.).}.}._.). X X).{.{.{.).).).]./.)././.).].].!./.!.~.!.~.].!..X.X^.T.U.^.T.T.T.U.L.L.U.U.L.L.L.L.L.L.L.L.L.G.F.P.F.F.F.F.F.F.x.F.x.D.v.v.x.x.z.b.z.b.l.z.l.l.l.l.l.h.l.k.k.l.l.k.k.k.k.k.k.k.h.k.h.h.g.g.h.g.h.g.h.h.g.g.g.", ").).).).).)._._.}.}.}._.}.}.{.{.{.{.{.{.}.}.{.{.{.{._.{.{.{.).)._././.).)./.).{./.).).).).].).)./.).).).).).].(.].{./.).{././._.).).{.{.}.}.}.}.}.}.{.}.{.{.).].{. X X).{.}. X{. X).{.{._._.{.{.{.).).{.{.].{.].). X X{.}.[.{.).`.).]./.].]./.!..X.X/.!.!.^.!.!..X.XXXT.T.T.T.Y.Y.T.Y.Y.R.R.L.U.L.U.L.L.L.L.L.L.P.P.P.F.F.F.v.F.F.x.F.F.F.x.v.v.x.x.z.z.b.b.z.z.l.l.l.l.l.l.l.l.k.k.k.k.k.k.k.h.h.k.k.h.h.h.g.h.g.g.g.g.g.h.g.g.g.", ").{.{.{.{.{.}.{.`.}.|._. X X}.}.}.{.{.{.{.{.{.{.{.}.{.{.{.].).)./.{./.{./.{.]././.{.).).).].)./.)._.).).).).)./._./.).).).).].}.).).].{.).BX`. X}.{.}.|.].{.[.`.{.[.)./.]. X].}.).{.].`.).{._.).{.}.{.'.).{.{.].`.(. X.X X X X!.].)./.).]./././.!.(.!..X.X!..X~.!.!.!..XT.E.R.E.T.Y.Y.U.U.L.L.L.U.U.P.L.U.H.L.P.G.G.F.F.F.F.F.v.F.F.x.v.v.v.v.v.x.z.z.z.l.l.l.l.l.l.l.b.k.l.l.k.l.k.k.k.h.h.h.h.h.h.h.k.g.h.h.g.g.g.g.g.g.g.g.g.g.", ").{.{.). X).`._.|. X X}.|. X{.}.}.{.{.}.{.{.{. X}.{.].{.{.{.{.{.{.).{./.{.{./.{.{./.{.).).).).)././.).)./.).).{./.)./._.).{././.)._.{.{.Z.' ' N.B.V.`.).}.).{.{.).].). X!.}.}.'.I.{.{.(._.).).).{.!.{.{.}.[.(.{.Z.' Z.{.].(.Q.Q.!.).{.!./.]./.~.B.I ) !.!.(.K.` U R N.~.T.N.E ' E ' E E C.U.D.R U U T K.G.Y.L.L.G.G.G.P.x.F.v.F.x.x.v.v.v.v.v.z.z.b.z.l.l.l.l.l.l.l.k.l.l.k.k.k.k.k.h.h.h.h.h.h.k.h.h.g.h.g.g.f.g.g.g.g.g.g.g.g.g.", "{.{.{.}.{.{.{.}.}. X`.}.|.}.}.}.{.{. X{.{.{.{.{.{.{.{./.].).{.].{.].].{././.).{.)./.{.].).).{./.).{.{./.).).{.{.).{.)././.).{.).).)./.).R 1 7 3 @ 3 I './.}.).`.).).(.(.{.).) 8 ' {.{.).{.{.).).].}./.]./.{. X).Y @ R X'.R 3 C.{././.)././.'.B.8 % I ~.!.Z.3 & U 8 1 B.R.R @ @ @ 3 7 8 B.D.3 8 q q @ U L.L.L.L.G.F.F.F.F.x.x.v.v.z.v.v.v.v.v.b.z.b.b.z.l.l.l.l.l.l.k.k.k.k.k.k.k.k.k.k.h.h.h.h.h.h.g.k.h.g.g.g.f.g.g.g.g.f.g.g.g.", "{.{.{.}.}.}. X X X}.}.|. X}.}.{.{. X{.}.}.{.}.{.}.{.{.{.).].).)._._._.(._.).{./.{./.).).].]./.{.]./././././.(.)./././._.).].)./.)._.{.}.Y 7 7 ' / % & T {. X(.Z.' N.I.~./.J.1 6 ` J.~.J.C.Q.' J.].~.Z.' Z.'.).].Q.C.C.~.' 7 % ' Q.)./.!.!.Q.U 3 3 % Y .X.XR 3 T ~.Z.2 3 .X' E ' ) 8 & U K.E 8 8 G.J.@ @ a.m.P.F.F.H.P.F.F.x.x.x.z.z.b.b.b.b.v.v.b.b.b.l.l.l.k.k.k.k.k.k.k.k.h.k.k.k.g.h.h.h.h.j.h.k.g.h.g.g.f.g.f.f.f.f.g.g.g.f.f.", "{.{.}.}.}.}.}.}. X}.|.}. X|.{.{.].}.}.}.}.}.{.}.{.{._.].).).).)./.{.{.{.{./.{.{.{.).{.(.)./.{./._././._././.)./././.)././.).{.}.).].[.{.Y % 7 _. Xq % U }./.U 7 8 % 8 Z.).+ + 7 + R J.1 + U 8 ' W.q @ @ 6 8 W./.R + / C.% % % 8 ' ~.).!./.K.1 Y 0 2 U !.!.Y 8 E [.Q.6 2 K.Y.T.U.B.8 q K.Y.U.K.K.x.E % 8 D.H.P.F.F.F.F.v.x.v.x.x.z.z.b.z.b.b.b.b.b.l.l.l.k.k.k.k.k.k.k.h.k.h.h.k.h.h.k.h.h.h.g.h.g.g.h.g.g.g.g.g.f.f.f.g.f.g.f.g.g.", "{.}.}.}.}.|. X|.`.}.|. X X X}.{. X{.}.{.{.{.{.{.).{._.{.).).).)._.{.{.{.{.{.{.).].{.{.].{././.)./././././././././././.]./././.)./.].].{.I + 1 }.).Y % % /.N.2 8 '.N.1 3 (.N.7 & I B.W.% 8 U Z.'.Y % Y ).R & U !.R 8 I Q.T 6 8 R K./.].!.].J.C.).U 2 R !..X' % q ' T 7 8 Z.Y.T.G.U @ B.XXXXH.v.G.T 2 % T F.G.F.F.F.v.F.v.x.x.z.b.z.z.z.z.b.b.b.b.b.l.l.l.k.l.k.k.h.h.h.h.k.h.g.g.h.h.g.h.g.g.g.j.g.g.g.g.g.g.f.f.g.f.g.f.g.f.g.g.f.", "}.}.}.}.`.|.}.}.}.}. X}._.`.{.}.{.}.{.{.{.{.{.{.{. X).).].{.{. X{.).{.{.{.}.{.{.{.{.].]./././././././././././././././././././._.).).}. XI + % ].}.I % % }.Y % 8 I U % 8 C.'.8 % ' /.J.& % C.).'.1 + ' ].E 6 % ).U 6 I /.W.+ + C././.[.!..X^.!.~.U 8 Y !.T.Q.I 1 3 U + % Z.R.Y.' 1 U Y.Y.U.P.G.T 7 2 E F.H.G.F.D.v.v.v.x.x.x.z.x.z.b.z.l.z.l.z.z.l.z.k.l.k.k.k.k.h.h.h.h.h.g.h.g.j.h.g.h.g.g.g.g.g.g.f.g.g.f.f.f.f.f.f.f.f.f.f.f.f.", "}.}.|.}.|.}. X X|.|. X|. X}.}.}.].}.{.{.{.{.{.{.{.).).).].).).).).).{.}.{.}.{.{.{.{.{./.)./././.)././.].]./././././././.].]././.{./.]. XR + % (.Q.6 6 9 _.I + U N.) ' ' I./.1 6 ) /.C.8 7 J.)./.3 8 ' ~.N.% % /.U 8 R !.Z.6 + C./.!.[.^.!.^.E.^.R 1 I T.^.^.T.N.K.K.1 % I.XXT.U 1 E R.G.L.L.R @ q a.v.H.F.x.v.v.v.v.v.v.x.v.b.b.v.b.z.l.l.z.l.l.l.h.k.k.l.k.k.h.h.h.h.g.g.g.g.h.j.j.g.g.g.g.g.g.g.g.g.f.f.f.d.d.f.f.f.f.f.f.f.f.f.", "}.}.}.}.|._.|.|.|.}.}.|. X}.}.{. X{. X{.{.{.{. X{.{. X).). X).).).{.{.{._._. X{.{.).)./././.]./.]./.]./.].].^.[.].]./.[./././.(././.^.).U 7 % 6 % % 6 Z.`.Z.1 1 Z.' R B.~.].3 % ` A.J.+ @ C.)./.) 3 q A.q 1 T '.U % Y ~.J.% % ' W.!..X^.!.!.!.^.U @ U ~.T.' @ 3 V.` @ R !.XXU.% 8 B.P.U.R.E % 3 6 7 7 3 E F.v.F.v.x.x.v.b.v.z.b.l.z.b.l.l.l.l.l.l.k.l.k.k.k.h.h.h.g.h.g.h.g.g.g.j.j.g.g.g.g.g.g.g.g.f.f.f.f.d.f.f.f.f.f.f.f.d.d.f.", "}. X}.|._.}.}.}.}. X`. X|.}.}.{.{.].{.{.{.{.{.{.).{.).).).).).).{.{.{.{._._._._.{.).).)././.].].]././.]./.!././././.]./././.(././.{./.~.R 6 6 8 3 U Z.).)./.` 8 % 8 8 W. X/.) 8 @ 3 C.% % C./.].Q.U @ 3 3 Y Q.~.R 3 R ^.~.U 1 3 R ~..XT./.!./.E.R 3 R I.[.!.E 3 3 + R G.T.Y.D.@ 3 J.R.U.D.R 8 8 1 % % 3 E G.x.x.v.x.b.z.v.b.z.l.z.b.b.l.l.l.l.l.k.l.k.k.k.k.h.g.g.h.g.h.g.f.f.g.f.j.g.f.f.g.g.g.f.g.f.f.f.f.d.d.f.d.d.d.d.d.d.d.f.", "}.}.}.}.}.}.|.|. X}. X}._. X{.{.{.{.).{.{.).{.{. X).).).).{.{.{.{.{.{.{. X}._._.{.{._.]././.]./.~.].].~.!.]./././.[.^.[./.[./././.].].{./.'.`.(./.`. X{.).(.{.Q.J.Z.~._.{.!.^.C.K.J.[.).).^.].~.)./.Q.K.I.~.].~.~.~./.^././.C.K.J.[..XT.!.Q.T.[.T.~.~..XT.T.!.J.Z.C.R.Y.Y.U.Y.R.I.P.P.P.L.L.P.F.D.G.P.v.H.H.b.b.x.z.b.b.z.l.b.b.z.l.l.l.l.l.k.l.k.k.k.k.k.k.h.h.h.h.g.g.g.f.g.f.f.f.f.f.f.f.g.f.f.f.f.d.d.d.d.d.d.d.d.d.d.d.d.d.f.", "}.}.}.}.}.}.}._. X}.}._._._.{.{.).).).).{.{.{.{.).).).).{.{.{.{.{.{.{.{._.}.}._.{.{.).).)./././.].~..X]./././././././././.^.(.^./.].!.!./.).^.].{.).^./.(././.]././.).^.^.(././.^././.].^.{./.).!.].~.!.!.].!.!.(.!.!.!.!.!.!.[.!.!..X!.!.T.T.E.!.!.!.T.E.T.!.T.Y.R.R.T.U.Y.Y.Y.U.L.L.P.P.D.F.F.x.F.F.F.v.v.v.b.z.v.x.b.z.b.b.b.b.l.l.l.l.l.l.l.l.k.k.k.k.k.h.h.g.g.g.g.f.f.f.f.f.f.f.f.f.f.f.f.f.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.", "}.}.}.|.}.}.}.}.}.{.{.}.{.{.{.).).{.].).{.{.). X).).).).).{.{.{.{. X{.}.}._.}._.{.).).]././.]./.].!././././././.^.[././.(././.^.]./.(.[././.].]./.~._.).!./.].{./. X~.{.^./.!.!.]././.!.).].!.]./.!.[.[..X!.!./.!.!.^.^.~.E.^.!.T..X/.!.T.T.^.E.XXT..X.XT.Y.Y.E.Y.Y.G.Y.Y.Y.Y.Y.P.P.U.L.P.L.G.P.m.v.v.v.x.x.v.b.b.z.m.l.z.b.b.b.l.l.b.l.l.l.k.h.k.k.k.k.h.h.h.h.h.g.g.f.f.f.f.f.f.f.f.d.f.d.f.d.d.d.d.d.s.d.d.s.d.s.d.s.s.s.s.s.d.", "}.}.}.}.}.}.}.}.}.{.}.}. X{.{.{.).).{.{.{.{.).).).).`.).{.{.{.}.{.{.}.{._.}._._.{.{.).)./.)./.]./.].].~.!././.!././././.!./.^.~.].[.[.^././.[.!.].).)./. X)././.{.!././.(.!.[.!.!.^.[.^.!././.~./.^.!.!.!.!.!./.T.(.~.^.(.T.T.T.^..XT.T.!.T.~.T.T.T.T.T.T.T.E.T.U.Y.Y.U.Y.L.U.H.P.P.P.P.P.D.H.H.v.H.v.H.v.v.v.b.z.z.l.l.b.b.b.b.l.l.l.l.k.k.k.k.k.k.k.k.k.h.h.g.g.f.g.g.f.f.f.d.d.d.d.d.d.d.d.d.d.d.d.s.d.d.s.d.s.s.s.d.s.s.s.s.s.", "}.{.}.{.}.}.{.}.}. X X{.{.{.{.).(.{.{.).)._.).).).).). X{.{.{.{.{.{.}.{.}._._._.{.{.).)././.]./././././././.!./.!.]././././././.[./././.).^./.'.)./.{./.[./.[.!.^.(.^.^.].!./.!.!.!.(.^.(.^./.!.!.[.!..X^.^.^.^.!.!.T.!.!..XT.^.T.~.!.^.R.T.T.T.R.!.R.R.T.R.Y.U.Y.L.Y.U.L.Y.L.U.L.D.L.D.G.L.F.F.F.m.b.x.x.m.v.b.b.b.b.b.l.b.b.l.l.l.l.l.k.l.l.k.k.h.k.h.h.h.k.g.g.g.f.f.f.d.f.d.d.d.d.d.d.d.d.d.d.d.s.s.s.d.s.s.s.s.s.s.s.s.s.s.s.", "{.}.}.}.}.{. X}.}.}.).{.{.).{.{.{.{._.].).].).).{.).).{.{.{.{.{.}.}.{.{._.)._._.).)./.)./.)./.]./..X).~././././.!./.!./.!./.]..X!.[./.~.)././.^./.!.[./././.~./.^.(.(.^.[.[.!./.~.^.^.^.!.!.^.!.!.~.!.!.!.T.!.!..XQ.^.T.E.^.^.T.^.T.E.T.T.T.Y.!.T.T.Y.Y.R.U.U.U.Y.Y.L.G.L.L.P.G.L.L.F.F.P.x.F.F.F.F.F.b.H.z.v.z.z.b.b.b.z.z.b.l.l.l.k.l.k.l.k.k.k.k.k.k.k.k.g.g.g.g.g.f.f.f.d.d.s.d.d.s.s.s.s.s.s.d.d.s.d.s.s.s.s.s.s.s.s.s.s.s.s.", "{.{.{.{. X}.{. X].{.{.{.{.{.{.).).{.).).)./././.).{.).).).).{.{.{.{.{._.{.{.{.).).).)./.)./././././.!././.!././././.!././.!././.[./././.^././././././.!./.!.[.!.^.^./.!.!.^.^.!.!.!.^.!.!.~.!.!.!.!.!.!.!.!.T.^.T..XT.^.^.T.T.^.!.T.T.T.T.T.T.T.T.R.Y.Y.E.U.U.U.L.Y.L.L.L.L.L.P.L.L.F.F.F.F.F.F.F.v.v.v.z.x.x.z.z.b.b.z.z.l.l.b.l.l.l.l.l.k.k.k.k.k.h.h.h.g.g.g.g.f.f.f.f.d.f.s.d.d.s.s.s.s.d.s.s.d.s.s.s.d.s.s.s.s.s.s.s.s.s.s.s.", "{.{. X{.{.{.{.{.{.].).).).).{.{.{.{.).)./.)./.)./.{.).).).).).).{.].].{.{.{.{.{.)./.)./.)./.)./././././././.!.!./././././././.!.^././.[././.!.^.!./.!./.^./././.(.^.!./.!.!.^.!.!./.!.!.^.!.!.!.!.~.!..X!.^.T..X^.T.^.T.T.!.T.T.T.T.T.T.T.T.T.T.Y.R.Y.Y.U.U.U.U.U.L.L.L.L.L.G.G.P.F.F.G.F.F.F.F.F.v.v.v.x.z.z.x.z.z.b.z.b.z.l.l.l.l.l.k.l.k.k.k.k.h.k.h.g.h.g.g.g.g.f.f.f.f.s.s.s.s.s.s.s.s.s.d.s.s.s.s.d.s.s.s.s.s.s.s.s.s.s.s.s.", "{.{. X).{.{.].{.).{.{.).).).{.{.).).).).).)./.]./.).{.).)./.).)./.).).).{./.{.{.)./.)./././.)./././././././.!././.^./.^././.^././././.^.[.^./.!.!./.^.^.~.^./.!.!.!.!./.T.^.^.T.!.!.!.!.!.T.!.~.T.!.!.T.T.^.T.T.T.T.T.T.T.^.T.T.T.T.T.T.E.T.R.R.Y.Y.U.U.U.L.L.L.L.L.G.G.G.L.P.G.P.F.F.F.F.F.P.F.P.v.v.v.x.x.b.l.z.z.b.b.l.l.l.l.l.l.k.k.k.l.k.k.h.h.h.g.g.g.g.g.f.f.f.d.d.s.s.f.d.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.", ").{.).).).).).).{.).].).).{.).{.).).).)./././.!./././.).)._.(.).)././.).{.{.{./.).).)./.)./.]././././././.!./.].^./.[././.^./.^.^./.^./././.!.!.^.^.^.^.^.^.!./.!.~.!.!.^.!.^.^.!.!.!.!.!.T.!.R.T.T.!.T.T.T.T.T.T.T..XT.T.T.E.T.T.T.T.Y.Y.E.Y.Y.U.U.U.U.U.U.L.L.L.L.P.G.G.G.P.F.F.P.F.F.F.F.P.x.v.v.v.v.x.b.b.m.z.l.z.z.z.l.l.z.l.k.k.k.k.k.h.k.k.h.h.h.g.g.g.f.f.f.f.f.f.s.s.f.d.s.s.s.s.s.d.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.", "{.).).{.).).{.)./.{.).].)./.).).)./.).)././././././.{.{./././././.{./.)././._.]._././.].].].)././.)./././././.!./..X/./.^./.^.[./.^./.^.^.^.^.^.^.!.!.!.^.!.^.!.!.!.!.!.^.!.T.^.^..X!.!.!.!.!.T.!.T.T.T.T.!.T.T.T.T.T.T.T.T.T.T.T.E.T.Y.Y.Y.Y.Y.U.U.L.L.L.L.L.P.L.G.G.P.G.P.F.G.F.F.F.F.F.H.m.v.v.v.v.v.b.b.l.b.z.z.l.l.l.l.k.k.k.k.k.k.h.k.h.h.h.h.g.g.g.f.f.f.g.f.f.d.s.s.d.s.s.s.s.s.s.s.s.d.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.", "{.).).).).{. X]./.).).).).).).].).)././././././.{./././.).)./././././././././././././.).).).).).)./././././.~.].[.]././././././././.!./.^.^.^.[.!.!./.!.!.^.~.!.^.T.^.^.^.T..XT.T.T.!.T.T.!.R.!.T.T.T.!.T.T.T.T.T.T.T.Y.T.E.R.R.Y.Y.E.Y.R.R.R.U.U.U.L.L.L.L.G.G.G.G.G.G.H.F.F.F.F.F.F.F.x.F.v.F.v.v.v.x.x.b.b.l.l.z.z.l.l.l.l.k.k.l.k.l.k.k.h.h.h.h.g.g.g.g.f.f.f.f.d.d.d.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.", ").).).).).{.).).{.).{./.{.].)./.)././././././././././.(./.^./.[./././././.^.(././././.).).).].).).).].).].~./././././.].!././.!./.^./.^.!./.^.^.!.^.!.!.!.!.T.!.^.!.^.!.!.!.T.!.!.T.!.T.~.T.T.T.R.!.T.!.T.T.T.Y.T.E.R.Y.R.Y.R.Y.Y.R.U.R.U.U.U.L.U.L.L.P.G.G.G.G.G.G.F.P.F.G.v.F.F.F.F.x.F.F.x.F.H.b.m.v.b.b.b.l.l.b.b.b.l.l.k.l.k.k.k.h.k.k.h.g.h.g.g.g.g.f.f.f.d.d.d.d.s.d.d.s.s.s.s.d.s.s.d.d.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.", ").).).).).).).).{././.{.).)./.).)././././.!./././././././././.(././.[.^././././.].]./.].).].).).).).].!.].]././.!.].].).]././.]./.!.!./.!.!.T.^.^.^.!.!.!.!.^.!.!.T.T.^.E.E.T.E.T.R.R.R.T.R.T.T.R.T.Y.T.T.T.T.T.T.XXR.Y.Y.Y.R.R.Y.Y.Y.U.Y.Y.U.U.L.L.L.L.G.G.F.F.G.F.P.F.G.F.F.F.F.x.F.x.x.F.F.x.v.v.b.b.b.b.b.b.b.l.b.b.l.l.l.l.k.k.k.k.h.h.h.h.g.g.g.f.g.g.f.d.d.s.d.s.s.s.s.s.s.s.s.s.s.s.d.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.", ").{.).)./.).)././.)./.).).)./././.~.!././././././././././././.^./././././.^././.!.)././.].).].).].].).).)././././././.!.].)./.!.!./.!.^.!.^.^.^.!.E.!.!.T.!..XT.T.T..XT.T.~.T.T.!.R.!.T.!.R.!.T.T.R.T.Y.Y.Y.R.R.R.Y.R.Y.R.Y.Y.U.Y.L.U.L.L.Y.P.L.L.U.L.P.G.G.G.F.v.F.F.F.v.G.v.H.x.v.x.v.v.F.x.F.v.b.m.b.m.b.b.b.l.b.b.l.l.l.l.k.l.l.k.h.k.k.g.g.g.g.f.s.f.f.d.f.d.d.d.s.d.d.d.s.s.s.s.s.d.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.E s.s.", "{.{.{.).]./.)././.)./.)././.)./././././.!././.!./.!.^.^.^././././.!.^./.!././.!././.]./././.].].)./.).).)././.).)././.].!.!./././.!.!.^.!.^.T.^.T.^.!.!.!.T.T.T.T.T.T.T.T.T.T.T.T.R.Y.T.R.T.T.T.R.T.R.Y.Y.T.Y.Y.R.Y.Y.Y.U.U.Y.U.U.U.U.Y.U.Y.P.L.L.L.L.P.G.G.F.F.F.F.F.F.H.v.v.v.x.F.F.v.x.z.F.z.v.v.b.b.b.b.b.b.b.b.l.l.l.k.l.k.k.k.k.k.g.g.k.g.g.f.f.a.f.d.f.d.d.d.d.s.s.s.s.s.s.s.s.s.s.d.s.d.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s." }; micropolis-activity/images/legendpm.xpm0000664000076400007640000000325610724145723020627 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "93 14 10 1", /* colors */ "` c #000000", "a c #B0B0B0", "b c #00E600 m #ffffff", "c c #007F00 m #ffffff", "d c #FF7F00 m #ffffff", "e c #FFFF00 m #ffffff", "B c #00E600 m #000000", "C c #007F00 m #000000", "D c #FF7F00 m #000000", "E c #FFFF00 m #000000", /* pixels */ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaa```````````````````````aaaaaaaaaaaaaaaa```````````````````````aaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaa`EEEEEEEEEE`DDdDDDdDDD`aaaaaa````aaaaaa`ccCcccCccc`bbbbbbbbbb`aaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaa`EEEEEEEEEE`DdDdDdDdDd`aaaaa``aa``aaaaa`cCcCcCcCcC`bbbbbbbbbb`aaaaaaa``aaaaaaa", "aaaaaaaaaaaaaaa`EEEEEEEEEE`dDDDdDDDdD`aaaa``aaaa``aaaa`CcccCcccCc`bbbbbbbbbb`aaaaaaa``aaaaaaa", "aaaaaaaaaaaaaaa`EEEEEEEEEE`DdDdDdDdDd`aaaa``aaa```aaaa`cCcCcCcCcC`bbbbbbbbbb`aaaaaaa``aaaaaaa", "aaa````````aaaa`EEEEEEEEEE`DDdDDDdDDD`aaa``aaa`aa``aaa`ccCcccCccc`bbbbbbbbbb`aaaa````````aaaa", "aaa````````aaaa`EEEEEEEEEE`DdDdDdDdDd`aaa``aa`aaa``aaa`cCcCcCcCcC`bbbbbbbbbb`aaaa````````aaaa", "aaaaaaaaaaaaaaa`EEEEEEEEEE`dDDDdDDDdD`aaaa```aaa``aaaa`CcccCcccCc`bbbbbbbbbb`aaaaaaa``aaaaaaa", "aaaaaaaaaaaaaaa`EEEEEEEEEE`DdDdDdDdDd`aaaa``aaaa``aaaa`cCcCcCcCcC`bbbbbbbbbb`aaaaaaa``aaaaaaa", "aaaaaaaaaaaaaaa`EEEEEEEEEE`DDdDDDdDDD`aaaaa``aa``aaaaa`ccCcccCccc`bbbbbbbbbb`aaaaaaa``aaaaaaa", "aaaaaaaaaaaaaaa`EEEEEEEEEE`DdDdDdDdDd`aaaaaa````aaaaaa`cCcCcCcCcC`bbbbbbbbbb`aaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaa```````````````````````aaaaaaaaaaaaaaaa```````````````````````aaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", }; micropolis-activity/images/rightdisabled.xpm0000664000076400007640000000733410724145723021642 0ustar simcitysimcity/* XPM */ static char *rightdisabled[] = { /* columns rows colors chars-per-pixel */ "50 50 66 1", " c #5689AC", ". c #5A8CAC", "X c #568CB0", "o c #5A8EB3", "O c #5C90B3", "+ c #5C94BB", "@ c #5D99BE", "# c #6391AF", "$ c #6492B2", "% c #6196BB", "& c #629ABE", "* c #6895B4", "= c #699ABC", "- c #5E96C0", "; c #5C98C1", ": c #6097C0", "> c #639BC1", ", c #6A9DC2", "< c #6A9FC8", "1 c #709FC5", "2 c #66A4CD", "3 c #6DA1C5", "4 c #6CA2C8", "5 c #6CABD2", "6 c #67B0DD", "7 c #6CB3DD", "8 c #6EB8DF", "9 c #71A2C6", "0 c #73A5C9", "q c #75A8CB", "w c #7BAACD", "e c #73AED4", "r c #7EACD0", "t c #73B0D4", "y c #71B5DE", "u c #73B9DE", "i c #79B3D6", "p c #7CB6D9", "a c #7BB8DD", "s c #6FB5E1", "d c #6DBAE8", "f c #72B6E0", "g c #75B8E1", "h c #79B6E2", "j c #7BBBE2", "k c #7EC0E3", "l c #81AFD2", "z c #85B2D4", "x c #80B7D8", "c c #84BADC", "v c #8BB7D5", "b c #8AB7D8", "n c #8ABBDC", "m c #93BDDB", "M c #98BFDE", "N c #81BEE3", "B c #85C1E5", "V c #8AC3E6", "C c #8CC4E8", "Z c #8FC8E6", "A c #8CC8EA", "S c #92C5E5", "D c #90C6E8", "F c #91C8E6", "G c #94C9E9", "H c #99CBEB", /* pixels */ "DDDDDDDDDSDDGCGDGGDGGGGGGGHGHHHHHHHHHHHGGSGDDDDDZD", "DCDDDDDGDGGDAGGGGGGGGGGGGGGGHHHHHHHHHHHHGGGDDDCDVZ", "DZCCCZCZDDGCGGHHGGHGSGDHHGHGHHHHHHHHHHHHGGDDDDZACC", "ZZVZZGCZDDDDGHGHHHGGHGGSGHHHHHHHHHHHHHHHSDDDDCZCVC", "CDCCCCDZGDDGHHSSHHHHHGHHHHHHHHHHHHHHHHHGGDDDCCCVVV", "VVCCCCCZSCDGHHSMSHHHHHHHHHHHHHHHHHHHGHHHDDDACCVVVV", "VVCDCCCZZVGGHHSMmSGHHHHHHHHHHHHHHHHHHHHHGGCCCCVVVV", "VCVVZCCCVVZGFFnmmbmGGGHHHHHHHHHHHHHHHHHHGGDCZVBVVB", "VVVCVVCCCZZCCAnvnzrnFHGHHHHHHHHHHHHHHHHHHSDCVVVVBB", "VVVVVVVCVZCCCVczvvwqbZGHHHGHHHHHHHHHHHHHGGDZCVBBBV", "VVVVVVVCVVZCCBxlzvw04cZHHHHHHHHHHHHHHHHHHGGZZVVVBB", "BVVVBVVCVVVCCBxlllw030cGHHHHHHHHHHHHHHHHHGGCCVBVVB", "VVVVVVVVBVVVCBxwwlw0199nGGGGHHGGHHHHHHHHHGGDDVVVBB", "VBBVBBBVVBVVVBxwwlq4999qbDGGGGGGGHHGHHHHHGGGCCVVVB", "BVBBVVBVBBVVNVcrwwq999q90nAZZZGGHGGHHHHGHGGGDVVNBB", "VVVVVBVVBBVVNCpwww0<100q04cVAAZZAGHGHHHHGGGDDCVVBB", "GNNGNNNGBCNVVBpwwq11,109093pVVZZCGGHGGHHGHGGDZVVBB", "NGNNGGNNBNVNBVpqqq0<,,909933pBBVZCZGHGGHHGGDCVVNBB", "NGGNNGDNBBNVBNpwq0013390990,>,,91314,,>cVNBVCGGGGGGAVVVNN", "NNNNBBVVBNNkjNiq00<,>>,,,,333>,,,aBNBVZDGGDCVVNNNN", "NNNMBBBBBNNjjjiq00<,&=,>,=,3,,,>&,ijNNVGDDDCVVVkNN", "NGNNNNNNBBjjjaiq00<>&>>>>==,3,===*%eNjBCCGAVVVkBka", "NNNNNNNABjjajjtq00<>@@>>:%@=,=**$$4NjNBVACCCVBNNBj", "NNNNjNNNNkjjjjt404,:&>>>:@@&=***$3BNjjBVDCCCBBBjjj", "NNNNNNNNjkjjggtq04,>@:>:-@%%*##*0BNjNNVVCCCCBBNNjj", "kjjjjjNNNajjgjtq442:@-::@@OO###@-:@@OOO##3jNBNNBNACCCVBBNNjjj", "jjjjjNNNajgggg5444>:@+++OO..#,aBkNBkNCVCCVVBBNjjjj", "jjhjhjhdjugfgu744<>:@++OO#.#>jjjjBBBVBVCVVBBNBjjjj", "jjhhajhjgggf8u5<<<:+@+OO...=jjkkNNBVVVVVVBVBNjNjjg", "djgjgggguggf7y502<-@++$ ..=jjjjNNNNBBAVVVBBNNjjjjg", "gggguufhjuggf853<>;+XO...&ajjjjNjNBBBBBBNBNNNjjjja", "gsgsfffjuusg785<<;++X. >jgjjNjaNNNBBBBVBNNNjNNhau", "88fyyfyygsfhf753<-+o . -ugjjauNNjNNNNNBBNBBNNjNjgj", "7yy8y8yyuggyfs5>;+o .X;gyjgkukhjjjjNNNNNjkjjNjjjjj", "yyyfffs7uygyf85;;+X @gggjguajdjjjjNjNkNBjkBjNjjjg", "7yyy7f8yy7y8ff5;+X. ;ghagugjaajjjjkjkNjNBjjkjjjjjj", "s7yyysssy8yyfy5+o ;gggyhggagjjjjjjjjkkjjjNNjNjjjj", "y7yyyyss88uyyf2+O -gghgugygugghhjjjjjjjkjNjNjjjjjj", "7777777f788yff2oX@gghgdyfggggggjgjjjjNjBNNhjjjjjjg", "7777776s68t8ff2o>ggggg8uffgggggjgjjjkjjBNjjjgjajjj", "7777776e7y7ysf2@ggguayggfffggggaajjjjjkjjjjjjhjjgj", "7777777yy777fy5gggggfy7fffygggsgujjjjjBjjjjjjjjgjg", "7777777y77hf7fggfgg7hhdfsghggghyuaajjkkjjjjhjjgggg", "677677y77777788fffsfffffgfgggghgagjjjjjjjhaggggggg", "76767s667777777y7ysyhyyygfgggfjggajjjjjgggjggsgggg", "666767766y7777777yyy7hfhfhgfhdyggghjgggggggggggggg" }; micropolis-activity/images/tiles-41.xpm0000664000076400007640000000304210724145723020367 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "34 34 11 1", " c black", ". c #00007F7F0000", "X c #5D5D5D5D5D5D", "o c gray50", "O c blue", "+ c #4F4F4F4FFFFF", "@ c green", "# c red", "$ c yellow", "% c gray75", "& c gray100", /* pixels */ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%OO@@@@OOOO@@@@OOOO@@@@OOOO@@@@OOX", "%OO@@@@OOOO@@@@OOOO@@@@OOOO@@@@OOX", "%OOXXXXXXXXXXXXXXXXXXXXXXXXXXXXOOX", "%OOX&&&&&&&&&&&&&&&&&&&&&&&&&&%OOX", "%@@X&@@ @@@@@@@@@X@@X@@@@@@@@&%@@X", "%@@X&o%@@@o@o@@+X++X+++++++@@&%@@X", "%@@X&o%@@@@o@@O O@@&%@@X", "%@@X&XX@@@o@oO+oooooooooo O@@&%@@X", "%OOX&@@@OoXXX++o$$$oo$$oo OXo&%OOX", "%OOX&X@O+oXXX+OX$XX$X$X$o OXo&%OOX", "%OOX&@O++oXo O+X$$$XX$X$o OXo&%OOX", "%OOX&@++OoXXX++X$XXoX$X$o OXo&%OOX", "%@@X&@+O+oXXX+OX$oooX$X$o OXo&%@@X", "%@@X&@O++oXo O+X$oooX$$Xo OXo&%@@X", "%@@X&@++OoXXX++XooooXXXoo OXo&%@@X", "%@@X&@+O+oXXX+OOOOOOOOOOOOXXo&%@@X", "%OOX&@O++ooooO O O O O O oooo&%OOX", "%OOX&@++OOOOOOO&O O&OOOOOO@&%OOX", "%OOX&@+OO O O oO XXOo O O O.@&%OOX", "%OOX&@OOOOOOOoO XXOoOOOOOO..@&%OOX", "%@@X&@@......oXoXXoXo.......@&%@@X", "%@@X&@@@....XXXXXXXXXXX.....@&%@@X", "%@@X&@@@@@@oooXXXXXXXXXX.@@@@&%@@X", "%@@X&@@@.@oo@@oo@@@@o@@oo@.@@&%@@X", "%OOX&@@@@@oooooOo ooOooo@@@.&%OOX", "%OOX&@.@@@oo@o o&#o @oo@@@@&%OOX", "%OOX&@@@.@oo@o&#o o&#@oo@@.@&%OOX", "%OOX&@.@@@oo@o oooo @oo.@@@&%OOX", "%@@X&&&&&&&&&&&&&&&&&&&&&&&&&&%@@X", "%@@X%%%%%%%%%%%%%%%%%%%%%%%%%%%@@X", "%@@OOOO@@@@OOOO@@@@OOOO@@@@OOOO@@X", "%@@OOOO@@@@OOOO@@@@OOOO@@@@OOOO@@X", "%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }; micropolis-activity/images/gr10hi.xpm0000664000076400007640000000417010724145723020122 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "69 26 6 1", /* colors */ "` c #000000 m #ffffff", "a c #00FFFF m #000000", "b c #727272 m #000000", "c c #FFFF00 m #ffffff", "d c #DFDFDF m #000000", "e c #0000FF m #000000", /* pixels */ "`````````````````````````````````````````````````````````````````````", "``bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb``", "`b`bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`d`", "`bb`bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`dd`", "`bbb`````````````````````````````````````````````````````````````ddd`", "`bbb`ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc`ddd`", "`bbb`ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc`ddd`", "`bbb`cccccccaeecccccaeeccccccaeeecccaeeeeeeeeccccaeeeecccccccccc`ddd`", "`bbb`ccccccccaeccccaecaeccccccaeecccaecaeccaeeccaeccaecccccccccc`ddd`", "`bbb`ccccccccaecccaecccaeccccccaeecaeccaecccaeccaeccaecccccccccc`ddd`", "`bbb`ccccccccaecccaecccaecccccccaeeecccaecccaeccaeeccccccccccccc`ddd`", "`bbb`ccccccccaecccaecccaecccccccaeeccccaeccaeecccaeecccccccccccc`ddd`", "`bbb`ccccccccaecccaecccaeccccccccaeccccaeeeeecccccaeeccccccccccc`ddd`", "`bbb`ccccccccaecccaecccaeccccccccaeccccaeaeecccccccaeecccccccccc`ddd`", "`bbb`ccccccccaecccaecccaeccccccccaeccccaecaeecccaeccaecccccccccc`ddd`", "`bbb`ccccccccaeccccaecaecccccccccaeccccaeccaeeccaeccaecccccccccc`ddd`", "`bbb`cccccccaeeeccccaeecccccccccaeeeccaeeeccaeeeaeeeecccaecccccc`ddd`", "`bbb`ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc`ddd`", "`bbb`ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc`ddd`", "`bbb`ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc`ddd`", "`bbb`ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc`ddd`", "`bbb`````````````````````````````````````````````````````````````ddd`", "`bb`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`dd`", "`b`ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`d`", "``ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd``", "`````````````````````````````````````````````````````````````````````" }; micropolis-activity/images/tiles-55.xpm0000664000076400007640000000273210724145723020401 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "34 34 6 1", " c black", ". c #7F7F7F7F0000", "X c #5D5D5D5D5D5D", "o c yellow", "O c gray75", "+ c gray100", /* pixels */ "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "Ooo oooo oooo oooo ooX", "Ooo oooo oooo oooo ooX", "OooXXXXXXXXXXXXXXXXXXXXXXXXXXXXooX", "OooX++++++++++++++++++++++++++OooX", "O X++++++++++++++++++++++++++O X", "O X+++++++.X+++++++++++++++++O X", "O X++ XX ++++++++++++O X", "O X+++++++.X+++++++++++++++++O X", "OooX+++++++.X+++++++++++++++++OooX", "OooX+++++++.X+++++++++++++++++OooX", "OooX++ XX ++++++++++++OooX", "OooX+++++++.X+++++++++++++++++OooX", "O X+++++++.X+++++++X+++++++++O X", "O X+++++++.X++++ X ++++++O X", "O X+++++++.X+++++++X+++++++++O X", "O X+++++++.X+++++++X+++++++++O X", "OooX+++++++.X++++ X ++++++OooX", "OooX+++++++.X+++++++X+++++++++OooX", "OooX+++++++.X+++++++X++ X ++OooX", "OooX+++++++.X+++++++X++++X++++OooX", "O X+++++++.X+++++++X++ X ++O X", "O X+++++++.X+++++++X++++X++++O X", "O X+++++++.X+++++++X++++X++++O X", "O X+++++++.X+++++++X++++X++++O X", "OooX+++++++.X+++++++X++++X++++OooX", "OooX+++++++.X+++++++X+++++++++OooX", "OooX+++++++.X+++++++++++++++++OooX", "OooX++++++++++++++++++++++++++OooX", "O X++++++++++++++++++++++++++O X", "O XOOOOOOOOOOOOOOOOOOOOOOOOOOO X", "O oooo oooo oooo oooo X", "O oooo oooo oooo oooo X", "OXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }; micropolis-activity/images/tiles-156.xpm0000664000076400007640000000000010724145723020445 0ustar simcitysimcitymicropolis-activity/images/tiles-56.xpm0000664000076400007640000000273210724145723020402 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "34 34 6 1", " c black", ". c #7F7F7F7F0000", "X c #5D5D5D5D5D5D", "o c yellow", "O c gray75", "+ c gray100", /* pixels */ "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "Ooo oooo oooo oooo ooX", "Ooo oooo oooo oooo ooX", "OooXXXXXXXXXXXXXXXXXXXXXXXXXXXXooX", "OooX OooX", "O X + + + + + + + + + + + + O X", "O X + + +.X + + + + + + + + O X", "O X + XX + + + + + O X", "O X + + +.X + + + + + + + + O X", "OooX + + + .X+ + + + + + + + OooX", "OooX + + +.X + + + + + + + + OooX", "OooX + XX + + + + + OooX", "OooX + + +.X + + + + + + + + OooX", "O X + + + .X+ + + +X+ + + + O X", "O X + + +.X + + X + + + O X", "O X + + + .X+ + + +X+ + + + O X", "O X + + +.X + + + X + + + + O X", "OooX + + + .X+ + X + + OooX", "OooX + + +.X + + + X + + + + OooX", "OooX + + + .X+ + + +X+ X OooX", "OooX + + +.X + + + X + +X+ + OooX", "O X + + + .X+ + + +X+ X O X", "O X + + +.X + + + X + +X+ + O X", "O X + + + .X+ + + +X+ + X + O X", "O X + + +.X + + + X + +X+ + O X", "OooX + + + .X+ + + +X+ + X + OooX", "OooX + + +.X + + + X + + + + OooX", "OooX + + + .X+ + + + + + + + OooX", "OooX + + + + + + + + + + + + OooX", "O X O X", "O XOOOOOOOOOOOOOOOOOOOOOOOOOOO X", "O oooo oooo oooo oooo X", "O oooo oooo oooo oooo X", "OXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }; micropolis-activity/images/tiles-33.xpm0000664000076400007640000000311410724145723020370 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "34 34 13 1", " c black", ". c #00007F7F0000", "X c #7F7F7F7F0000", "o c #5D5D5D5D5D5D", "O c gray50", "+ c blue", "@ c green", "# c #BFBF79790000", "$ c red", "% c #FFFF77770000", "& c yellow", "* c gray75", "= c gray100", /* pixels */ "**********************************", "*$$@@@@$$$$@@@@$$$$@@@@$$$$@@@@$$o", "*$$@@@@$$$$@@@@$$$$@@@@$$$$@@@@$$o", "*$$oooooooooooooooooooooooooooo$$o", "*$$o==========================*$$o", "*@@o=@@.@@@@@.@@@@@@@@.@@@@@.=*@@o", "*@@o=@.@@.@@@@@@@.@@O@@@@@@@@=*@@o", "*@@o=@@.@@$$$$O$$$$O$$OOOOO@@=*@@o", "*@@o=@@.@$ O O $%%O++@@=*@@o", "*$$o=.@@$$ooOooooOooo$oOOOO@@=*$$o", "*$$o=@@$#$oOooooooooo$o O##@@=*$$o", "*$$o=@@$$$oo$$$$$$$$$$$$OOO@@=*$$o", "*$$o=@@$$#o$ooooooooooo$O OOO=*$$o", "*@@o=@@#$$$#OOOOOOOOOOo$OOOOO=*@@o", "*@@o=@@$#$$$O&&&&O&&OOo$oOO@@=*@@o", "*@@o=@@$$$#$o&ooOo&o&Oo$oOO@@=*@@o", "*@@o=.@#$$$$o&&&Oo&o&Oo$XXXXX=*@@o", "*$$o=@@$$$#$o&oOOo&o&Oo$ X=*$$o", "*$$o=@@$#$$#o&OOOo&o&Oo$O oOX=*$$o", "*$$o=@@$$#$$o&OOOo&&OOo$ooO X=*$$o", "*$$o=@@#$$$$ooOOOoooOOo$oOo X=*$$o", "*@@o=@@$$#$$OOOOOOOOOOo$ooo $=*@@o", "*@@o=.@$$$#$$$$$$$$$$$$ O O $=*@@o", "*@@o=@@$#$$$ $ $ooooo $=*@@o", "*@@o=@@$$$$ ooo$ ooo$$$$$$$$$=*@@o", "*$$o=.@#$$ ooo$ ooo$ $ $ $ $@=*$$o", "*$$o=@@$$ ###$ ###$$$$$ $$$.@=*$$o", "*$$o=@@@..ooo..ooo..........@=*$$o", "*$$o=@@.@.ooo..ooo.....@@@.@@=*$$o", "*@@o==========================*@@o", "*@@o***************************@@o", "*@@$$$$@@@@$$$$@@@@$$$$@@@@$$$$@@o", "*@@$$$$@@@@$$$$@@@@$$$$@@@@$$$$@@o", "*ooooooooooooooooooooooooooooooooo" }; micropolis-activity/images/tiles-59.xpm0000664000076400007640000000264710724145723020412 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "53 23 2 1", " c yellow", ". c gray69", /* pixels */ "......... ........................................", "..... . .......................................", ".... . ... ......................................", ".... .. ..... ....................................", ".... .......... .................................", "... ............ . ...............................", ". .. .. ....... . ...............................", " .. .......... .. ...", " . .......... .. ..", " . .. ....... ................................ .", " . .......... ................................. ", " . .. ....... .. ", " . .. ....... .. .", " . .......... ................................ ..", " . .. ....... .......... ...... .... ...", " . . .. ....... .. .... .... .......", ". . .......... .. ..... ..........................", ".. . .. ....... . ................................", ".... ... ....... ..................................", ".... .......... ....................................", ".... .. ..... ......................................", "..... . ... ........................................", "......... ........................................." }; micropolis-activity/images/tiles-121.xpm0000664000076400007640000000521110724145723020446 0ustar simcitysimcity/* XPM */ static char *tiles____[] = { /* columns rows colors chars-per-pixel */ "48 48 6 1", " c black", ". c #99997F7F4C4C", "X c red", "o c #FFFF7F7F0000", "O c yellow", "+ c None", /* pixels */ "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "+++++++++++++++++++X++++++++++o+o++o++++++++++++", "+++++++++++X+++++++++++++++++++++++++++o++++++++", "+++++X++++++++++o++++++++X++++++++++++++++++++++", "++++X++++++++++++Xo+++++++++++++++++++++++++++++", "++++++++++.+++++++++++++++++++++++++++++X+++++++", "++++++o+++++++++++++++++++++++++++++.+++X+++++++", "++++++++++++++++++++.+++++++++++++++++++++X+++++", "+++++++++++++++++++++++++.+++o++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++X+++++", "+++o++++X+++++++++++++++++++++++++++++++++++++++", "+++++++++++++++o+++++++++o++++++++++++++++++++++", "++++++++++++++++++++++++++++o+++++++++++++++++++", "++o++++++++++++++++++++++++++++o++++++++++++++++", "++++++o+++++++++O+++++++++++++++++++++++++++++++", "++++++++++o++++++++++++++++++++++++++++++o++++++", "+++X+++++++++++++++++++++.+.++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "+++++++++++++++++++++++++++++++++++++.++++ooo+++", "+++++++++++++++++++o+++++.++X++++.++++++++++++X+", "++++++++++++++++++++++++++++++++++++++++++++++++", "+++++++++o++++++++++++++.++++++O++++++++++++++++", "+++++++X+++++++++++++++++++++.++++++++++++++++++", "+++++++++++++++++++++o+++++++++++++++++++++++X++", "++++++o+++++++++++++.+++++++.+++++++++++++++++++", "+++++++++++++++++O++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++O+++++++++++++o+++", "+++++++++++++++++++++++++++++++O++++++++++++++++", "++X+++++++++++++++++++++++++o++++++++++o++++++++", "++++++++++++++++++++++++++++.+++++o+++++++++++++", "+++++++++++++++++++++++++++++.++++o+++++++++++++", "+++++++++++++++++++++++o++++++++++++++++o+++++++", "++++++++o++++++++++X++++++++++++++++++++++++++++", "+++++++++++++++++++++X++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++o+++++++++++++", "+++++++++++++++++++++++++X++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "+++++o+++++o+++++++++++++++++++++++O++++++++++++", "+++++++++++++++++..++++++++++++++++++++X++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++", "++++++++++++X++++++++X++++++++X+++++++++++++++++", "+++++++++++X++++++++++++++++++++++++X+++++++++++", "++++++++X+++++++++++++++++++++++++++++++++++++++", "++++++++X+++++++++++++++++++++++++++++++++++++++", "++++++++++++++++++++++++++++++++++++++++++++++++" }; micropolis-activity/images/obj5-7.xpm0000664000076400007640000000515410724145723020036 0ustar simcitysimcity/* XPM */ static char * obj5_7_xpm[] = { "48 48 6 1", " c None", ". c #FFFFFFFFFFFF", "X c #FFFF7F7F0000", "o c #FFFF00000000", "O c #000000000000", "+ c #FFFFFFFF0000", " ", " ", " ", " ", " .XXXXX ", " XoooXXXo ", " ooo oXXXo ", " XXXoo ", " XXXXo ", " XXXXoo ", " XXXXXoo ", " .Xo XXXXXoX ", " X.XXo XX.XXoXo ", " XXXooo X.XXXoXo ", " XXXXo XXXXXoXo ", " XXXoo .XXXXoXo ", " .XXXXXOXXXXXoXoX ", " .XXXXXXXXXXXoXoX ", " oXoXXX.XXXXXoXoX ", " ooooXXXXXXXoXoX ", " oooX.XXXXXXXoX oXoX ", " XXX.XXXXXXXoXoXoXoXoo ", " .Xo XXXXXXXXXXXoXoXoXoXoXo ", " XXXoooXX.XXXXXXXoXoXoXoXoXoX ", " .XXooXXXXXXXXXXoXoXoXoooXoo ", " XXXXXXX.XXXXXXXoXoXoXooooooo ", " oXoXXXXXXXXXXXoXoooooo ooo ", " ooXXX.XXXXXXXoXoooooo ", " ooooXXXXXXXXXoXooooo ", " ooXXXXXXXXoXooo ", " XXXXXXXXoXoXo ", " XXXXXXXXoXoXoXo ", " XXXXXXXXoXoXoXoXo ", " XXXXXXXXoXoXoXoXoo ", " XXXXXXXXoXoooXoXoXo ", " XoXXXXXXoooooooXoXoo ", " XooXXoXooo ooooo ", " X+ooXo+ooo ooo ", " XX+Xo+ooo ", " XXXXXooo ", " XXXXooo ", " ooooo ", " ", " ", " ", " ", " ", " "}; micropolis-activity/images/obj5-0.xpm0000664000076400007640000000515410724145723020027 0ustar simcitysimcity/* XPM */ static char * obj5_0_xpm[] = { "48 48 6 1", " c None", ". c #FFFF7F7F0000", "X c #FFFF00000000", "o c #FFFFFFFFFFFF", "O c #FFFFFFFF0000", "+ c #000000000000", " ", " ", " ", " ", " ", " ", " ", " ....X ", " o.. .O.....X ", " o.... .OO...OX. ", " .... .o....OO.X ", " ..... .o....XX.X. ", " ....+......XX.X. ", " ......o.......X. ", " .o....o.......XX ", " ..o..o.......XX ", " ............XX ", " ....o......X.X ", " .........X. ", " .........X.X ", " o. .........X.X.X ", " o... .........X.X.X. ", " ...o..o.........X.X.X ", " ...o..o.........X.X.X. ", " ..o............X.XXX.X ", " ...............X.XXXXX.X. ", " .....o........X.XX XXX.X ", " ...............XX XXXX ", " ...o.........XXX XXX ", " ............X.X XX ", " ...........X.XX ", " . .o.....X..X.X. ", " . .........X.X.X ", " .. .........X.X.XX ", " ... ........XXXX.X.X ", " ... .o.....XX XXX.X ", " ... .o.....XX XX.XX ", " .... .......XX XXXX ", " .... .o.....XX XXXXXXX ", " X...........XXX XXXXXXXX ", " X.........XXX XXXXXX ", " X.......XXX ", " XX...XXXX ", " XXXXX ", " ", " ", " ", " "}; micropolis-activity/images/tiles-53.xpm0000664000076400007640000000422110724145723020372 0ustar simcitysimcity/* XPM */ static char *tiles___[] = { /* columns rows colors chars-per-pixel */ "42 42 9 1", " c black", ". c #00007F7F0000", "X c #7F7F7F7F0000", "o c #5D5D5D5D5D5D", "O c gray50", "+ c green", "@ c #BFBF79790000", "# c gray75", "$ c gray100", /* pixels */ "##########################################", "#OO++++OOOO++++OOOO++++OOOO++++OOOO++++OOo", "#OO++++OOOO++++OOOO++++OOOO++++OOOO++++OOo", "#OOooooooooooooooooooooooooooooooooooooOOo", "#OOo$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#OOo", "#++o$@@@@+@@+OOO+@+@+@@#######@@@@@@@$#++o", "#++o$@@@.@@+@OOO.@@@@##ooooooo##@@+@@$#++o", "#++o$@@OOOOOOOOO@@@.#ooo ooo#@@@@$#++o", "#++o$@+OOOOOOOOO@.+#oo ooooo oo#@@@$#++o", "#OOo$OOOOOOOOOOO@@@#o ooo ooo o#@@+$#OOo", "#OOo$OOOoOoOoOoO@@#o o ooo o o#@@$#OOo", "#OOo$@@OOOOOOOOO+@# o o o o o o o #@@$#OOo", "#OOo$@@OOOOOOOOO@o#o oo #@@$#OOo", "#++o$@@OoOoOoOoOoo$ ooOoooooooo o #@@$#++o", "#++o$@+OOOOOOOOOo$$ o o o #@@$#++o", "#++o$@.OOOOOOOOO$$$ o ...##.. o o #@@$#++o", "#++o$@@OoOoOoOoO$$# o +++#+++ o o #@@$#++o", "#OOo$@@OOOOOOOOO$o# o +.+++.+ o o #+@$#OOo", "#OOo$@@OOOOOOOOOoo# o +.+++.+ O o #@@$#OOo", "#OOo$@@OoOoOoOoOo## o +++++++ o o #@@$#OOo", "#OOo$@@OOOOOOOOO### o .+.+.+. O o #@@$#OOo", "#++o$@@OOOOOOOOO### o +++++++ o o #@@$#++o", "#++o$@+OoOoOoOoO#o# o +.+++.+ O o #@+$#++o", "#++o$@@OOOOOOOOOoo# o +.+++.+ o o #@@$#++o", "#++o$@@OOOOOOOOOo## o +++##++ o o #@@$#++o", "#OOo$@@OoOoOoOoO### o ...#... o o #@@$#OOo", "#OOo$@@OOOOOOOOO### o o o #@@$#OOo", "#OOo$@@OOOOOOOOO### ooooooooooo o #@@$#OOo", "#OOo$@@OoOoOoOoO###o oo #+@$#OOo", "#++o$OOOOOOOOOOO###o oo o o o o o #@@$#++o", "#++o$OOOOOOOOOOO OO# ooo ooo #o@@$#++o", "#++o$@+@OOOOOOOO@OO#o ooooooo o#.@@$#++o", "#++o$@@@+OOOOOOO@OOO#oo oo#.X+@$#++o", "#OOo$@.@@@+OOO@@+@OoO##ooooooo##XX@@@$#OOo", "#OOo$@@++@@OOO@@@@+OOoO#######XXX@@@+$#OOo", "#OOo$@@.@@@OOO@@@@++oOOoOOoooXXX@@@@@$#OOo", "#OOo$@+@@@@OOO@+@.@.oOoOOoooX.X+@+@@@$#OOo", "#++o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#++o", "#++o###################################++o", "#++OOOO++++OOOO++++OOOO++++OOOO++++OOOO++o", "#++OOOO++++OOOO++++OOOO++++OOOO++++OOOO++o", "#ooooooooooooooooooooooooooooooooooooooooo" }; micropolis-activity/images/icqryhi.xpm0000664000076400007640000000277310724145723020507 0ustar simcitysimcity/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "34 34 8 1", /* colors */ "# c #000000" "` c #7F7F7F", "a c #5D5D5D", " c #FFFFFF", "c c #FFFF00", "d c #FF7700", "e c #BFBFBF", "f c #ff0000", /* pixels */ "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", "edddddddddddddddddddddddddddddddda", "edddddddddddddddddddddddddddddddda", "eddaaaaaaaaaaaaaaaaaaaaaaaaaaaadda", "edda edda", "edda edda", "edda cccccc edda", "edda cddddddf edda", "edda cddddddddf edda", "edda cdddffffdddf edda", "edda cdddf cdddf edda", "edda cddf cddf edda", "edda cddf cddf edda", "edda ff cddf edda", "edda cdddf edda", "edda cdddf edda", "edda cdddf edda", "edda cdddf edda", "edda cdddf edda", "edda cddf edda", "edda cddf edda", "edda cddf edda", "edda ff edda", "edda edda", "edda cccc edda", "edda cddddf edda", "edda cddddf edda", "edda ffff edda", "edda edda", "edda edda", "eddaeeeeeeeeeeeeeeeeeeeeeeeeeeedda", "edddddddddddddddddddddddddddddddda", "edddddddddddddddddddddddddddddddda", "eaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" }; micropolis-activity/Micropolis.png0000664000076400007640000000245610724145723017670 0ustar simcitysimcityPNG  IHDR:Cd]5 pHYsHHFk> vpAg:CkgIDATx\m M߫!{^?j Ec|μvGYѕڮeamtHq@ )Hm۶eYL\N4{߿ۆ)NRh!4]>5t:*U촠 yRlYXWUJZ!B_)s(rqPdXԘ&cK ho Fl& 1p1s)UG&ܫB Omi{ <\ZA`Cab 2OU`RJ~})q8Igy )ݍ, /qax&[' 5rH^,\7Mö:Jy` 3@&0@R3b(ѹvD8<䬒96] Xn,.ꈶ+*\/`@sN77 9a\iA?qۑ \ObZƬYܖBđsT8[kU|ifw\k)w}\L[lB~ -GAjܳҰ{YSkKnGT˂֯B| 8Is?O[m:Q> '#&1Y+emXefKյtߗaNhvztoe7w6+,T3`R@.o%?' yנY8/bRȷYW2gqXe|~݆Obrsāeר |/\'7t.\f\/0K [YC.D)KG3~oF`9U)B1i/Y %Bm[jMRʰ,$ \%?rc*KHc}?l&? .{|`u+گZt1+89|ˉ }'^y,p2L",а~,7?) wOQG)Q>hnٮEq]{pWqbY`[ͿR=@]t-ĖLcMIIENDB`micropolis-activity/manual/0000775000076400007640000000000010724145723016310 5ustar simcitysimcitymicropolis-activity/manual/Graph.120Years.html0000664000076400007640000000665210724145723021555 0ustar simcitysimcityGraph 120 Year Scale

Graph 120 Year Scale


Micropolis, Unix Version.

This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact:
http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

ADDITIONAL TERMS per GNU GPL Section 7

No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

Any propagation or conveyance of this program must include this copyright notice and these terms.

If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

micropolis-activity/manual/Head.TimeMenu.html0000664000076400007640000000662410724145723021571 0ustar simcitysimcityTime Menu

Time Menu


Micropolis, Unix Version.

This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

ADDITIONAL TERMS per GNU GPL Section 7

No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

Any propagation or conveyance of this program must include this copyright notice and these terms.

If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

micropolis-activity/manual/Help.Dismiss.html0000664000076400007640000000665010724145723021507 0ustar simcitysimcityHelp Dismiss Button

Help Dismiss Button


Micropolis, Unix Version.

This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

ADDITIONAL TERMS per GNU GPL Section 7

No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

Any propagation or conveyance of this program must include this copyright notice and these terms.

If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

micropolis-activity/manual/Evaluation.html0000664000076400007640000000667210724145723021320 0ustar simcitysimcityMicropolis Evaluation Window

Micropolis Evaluation Window


Micropolis, Unix Version.

This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

ADDITIONAL TERMS per GNU GPL Section 7

No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

Any propagation or conveyance of this program must include this copyright notice and these terms.

If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

micropolis-activity/manual/Editor.ToolChalk.html0000664000076400007640000000664010724145723022311 0ustar simcitysimcityChalk Tool Icon

Chalk Tool Icon


Micropolis, Unix Version.

This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

ADDITIONAL TERMS per GNU GPL Section 7

No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

Any propagation or conveyance of this program must include this copyright notice and these terms.

If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

micropolis-activity/manual/Head.OptionsMenu.html0000664000076400007640000000663210724145723022325 0ustar simcitysimcityOptions Menu

Options Menu


Micropolis, Unix Version.

This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

ADDITIONAL TERMS per GNU GPL Section 7

No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

Any propagation or conveyance of this program must include this copyright notice and these terms.

If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

micropolis-activity/manual/Plan.Support.html0000664000076400007640000000670510724145723021553 0ustar simcitysimcitySupport Plan

Support Plan

Press this vote button to support the plan.


Micropolis, Unix Version.

This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

ADDITIONAL TERMS per GNU GPL Section 7

No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

Any propagation or conveyance of this program must include this copyright notice and these terms.

If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

micropolis-activity/manual/Scenario.Name.html0000664000076400007640000000665410724145723021633 0ustar simcitysimcityCity Name Entry Field

City Name Entry Field


Micropolis, Unix Version.

This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

ADDITIONAL TERMS per GNU GPL Section 7

No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

Any propagation or conveyance of this program must include this copyright notice and these terms.

If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

micropolis-activity/manual/Head.WindowsMenu.html0000664000076400007640000000663210724145723022324 0ustar simcitysimcityWindows Menu

Windows Menu


Micropolis, Unix Version.

This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

ADDITIONAL TERMS per GNU GPL Section 7

No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

Any propagation or conveyance of this program must include this copyright notice and these terms.

If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

micropolis-activity/manual/Scenario.Bern.html0000664000076400007640000000665210724145723021637 0ustar simcitysimcityBern Scenario Button

Bern Scenario Button


Micropolis, Unix Version.

This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

ADDITIONAL TERMS per GNU GPL Section 7

No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

Any propagation or conveyance of this program must include this copyright notice and these terms.

If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

micropolis-activity/manual/Editor.View.html0000664000076400007640000000663010724145723021342 0ustar simcitysimcityEditor View

Editor View


Micropolis, Unix Version.

This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

ADDITIONAL TERMS per GNU GPL Section 7

No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

Any propagation or conveyance of this program must include this copyright notice and these terms.

If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

micropolis-activity/manual/File.Cancel.html0000664000076400007640000000665010724145723021250 0ustar simcitysimcityCancel File Chooser

Cancel File Chooser


Micropolis, Unix Version.

This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

ADDITIONAL TERMS per GNU GPL Section 7

No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

Any propagation or conveyance of this program must include this copyright notice and these terms.

If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

micropolis-activity/manual/Map.Zones.html0000664000076400007640000000663610724145723021023 0ustar simcitysimcityMap Zones Menu

Map Zones Menu


Micropolis, Unix Version.

This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

ADDITIONAL TERMS per GNU GPL Section 7

No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

Any propagation or conveyance of this program must include this copyright notice and these terms.

If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

micropolis-activity/manual/Frob.html0000664000076400007640000000665610724145723020103 0ustar simcitysimcityMicropolis Frob Window

Micropolis Frob Window


Micropolis, Unix Version.

This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

ADDITIONAL TERMS per GNU GPL Section 7

No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

Any propagation or conveyance of this program must include this copyright notice and these terms.

If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

micropolis-activity/manual/Scenario.LoadCity.html0000664000076400007640000000664210724145723022460 0ustar simcitysimcityLoad City Button

Load City Button


Micropolis, Unix Version.

This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

ADDITIONAL TERMS per GNU GPL Section 7

No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

Any propagation or conveyance of this program must include this copyright notice and these terms.

If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

micropolis-activity/manual/reference.html0000664000076400007640000012447610724145723021152 0ustar simcitysimcityUser Reference

User Reference Guide: Controlling Micropolis

Getting Help

If you wonder about a control or graphic in Micropolis, you can point at it with the cursor, hold down shift and click the left button, to bring up a helpwindow describing it.

Using the Mouse

In Micropolis, you will primarily use the left mouse button to edit the city. The main function of the right mouse button is to select from pie menus. The middle button is used to scroll the view in the Edit Window.

Clicking a mouse button means to press and release it without moving. Dragging means to press and hold the button, move the mouse, then release the button.

Pie Menus

Pie menus are designed to be very fast and efficient to use. You can pop up a pie menu by pressing and holding the right button, then select from it by moving in the direction of the item you want, then releasing the button.

Once you are familiar with the directions, you can use pie menus very quickly by smoothly pressing the right button down, moving in the direction you want, and releasing. If you do this without stopping, the pie menu will not even display on the screen -- you will just hear the name of the item spoken, to remind you of the selection. The more you use pie menus, the easier they are to use. See how fast you can get!

Micropolis Chooser Window

This window lets you select which city to simulate. You can see what the selected city looks like in the map window. Give your city a name by typing it into the Name text field.

Click on "New City" to generate a random map to start a city from scratch. Click on "Load City" to load a saved city from disk.

You can go back and forth between your previously selected cities with the "Previous Map" and "Next Map" buttons.

Click on any of the Scenario buttons to play any of the eight scenarios. When you click on any of those buttons, the city is displayed in the Micropolis Map Window. The Scenarios provide both real and hypothetical problems for you to deal with in seven famous (and one not-so-famous) cities. They present various levels of difficulty. Some problems are in the form of disasters which will occur some time after you start. Other problems are more long-term, such as crime.

Your task is to deal with the problem at hand as well as possible under the circumstances. After a certain amount of time the city residents will rate your performance in a special election. If you do very well you may be given the key to the city. However, if you do poorly, they just might run you out of town.

  • Dullsville, USA 1900 -- Boredom

    Things haven't changed much around here in the last hundred years and the residents are beginning to get bored. They think Dullsville could be the next great city with the right leader. It is your job to attract new growth and development, turning Dullsville into a Metropolis by the 21st century.

    • Difficulty: Easy
    • Time Limit: 30 years
    • Win Condition: Metropolis
  • San Francisco, CA 1906 -- 8.0 Earthquake

    Damage from the earthquake was minor compared to that of the ensuing fires, which took days to control. 1500 people died. Controlling the fires should be your initial concern here. Afterwards, clearing the remaining rubble will allow the city to start rebuilding.

    • Difficulty: Very difficult
    • Time Limit: 5 years
    • Win Condition: Metropolis
  • Hamburg, Germany 1944 -- Fire

    Allied fire-bombing of German cities in WWII caused tremendous damage and loss of life. People living in the inner cities were at greatest risk. You must control the firestorms during the bombing and then rebuild the city after the war.

    • Difficulty: Very difficult
    • Time Limit: 5 years
    • Win Condition: Metropolis
    Bern, Switzerland 1965 -- Traffic

    The roads here are becoming more congested every day, and the residents are upset. They demand that you do something about it. Some have suggested a mass transit system as the answer, but this would require major rezoning in the downtown area.

    • Difficulty: Easy
    • Time Limit: 10 years
    • Win Condition: Low Average Traffic Density
    Tokyo, Japan 1957 -- Monster Attack

    A large reptilian creature has been spotted heading for Tokyo bay. It seems to be attracted to the heavy levels of industrial pollution there. Try to control the fires, then rebuild the industrial center.

    • Difficulty: Moderately difficult
    • Time Limit: 5 years
    • Win Condition: City Score above 500
    Rio de Janeiro, Brazil 2047 -- Flood

    In the mid-21st century, the greenhouse effect raised global temperatures 6 degrees F. Polar ice caps melted and raised sea levels worldwide. Coastal areas were devastated by flood and erosion. Unfortunately, some of the largest cities in the world are located on the coast.

    • Difficulty: Moderately difficult
    • Time Limit: 10 years
    • Win Condition: City Score above 500
    Boston, MA 2010 -- Nuclear Meltdown

    A major meltdown is about to occur at one of the new downtown nuclear reactors. The area in the vicinity of the reactor will be severely contaminated by radiation, forcing you to restructure the city around it.

    • Difficulty: Very difficult
    • Time Limit: 5 years
    • Win Condition: City Score above 500
    Detroit, MI 1927 -- Crime

    By 1970, competition from overseas and other economic factors pushed the once "automobile capital of the world" into recession. Plummeting land values and unemployment then increased crime in the inner-city to chronic levels. You have just been elected after promising to reduce crime and rebuild the industrial base of the city.

    • Difficulty: Moderately difficult
    • Time Limit: 10 years
    • Win Condition: Low Average Crime Density
    You can select the Game Level from the radio buttons (Easy / Medium / Hard). Once a city is started, you cannot change the Game Level; it remains at your initial setting for the life of the city. The current Game Level is displayed in the evaluation window.

    This level -- Easy, Medium, or Hard -- adjusts the simulation to your current abilities by altering several factors. A harder setting will increase the chance of disasters, make residents more intolerant of taxation, cause maintenance costs to grow, etc.

    Once you have decided which city you want to play, press "Use This Map" and Micropolis will come to life!

    Micropolis Controls Window

    This window contains the main controls to Micropolis, status displays, and a scrolling text message log. At the top is a row of menus that are enabled when the game is playing. Beneath that is a status display panel showing the date and the current funds on the left. In the middle is a graph and bar display of the Residential, Commercial and Industrial rates and demands. On the right is an icon of the Micropolis simulation machine, with a red screen when paused and green screen when running. The bottom half of the window is occupied by a scrolling text window, that Micropolis uses to display important messages.
    • Menu Bar
      • Micropolis Menu
        • About...
          Display fascinating and vital information about Micropolis.
        • Save City
          Write the city to a file.
        • Save City As...
          Save the city with a new file name.
        • Choose City!
          Generate a new city, select a scenario or load a pre-existing city.
        • Quit Playing!
          Exit Micropolis and go back to the real world.
      • Options Menu
        • Auto Budget
          Keeps your budget at the same level (or fully funded) without asking for approval every year. If there isn't enough money to meet the budget, then funds will be allocated first to the Transit system, then to the Fire Department, then to the Police. If your city runs out of money, the budget window comes up at the end of the year anyway, and Auto Budget is turned off.
        • Auto Bulldozer
          Allows you to place zones, roadways, etc., directly on top of trees, shoreline, power lines, and rubble, without manually bulldozing first. You will be charged the same amount as for manual bulldozing.
        • Disasters
          Enables or disables random disasters. If disasters are disabled, you can still select them manually from the Disasters Menu.
        • Sound
          Toggles the city sounds on and off. Preserves the sanity and good will of those who have to work in the same room.
        • Animation
          Toggles tile animations on and off.
      • Disasters Menu
        The Disasters Menu allows you to set natural (and unnatural) disasters loose on your city. Use these disasters to test your ability to deal with emergencies in your city or just to release some aggression. More information on disasters, their causes, and dealing with them is presented later.

        Disasters will randomly occur as you play Micropolis. At higher game levels the disasters will happen more often. Most disasters can be activated from the Disasters Menu. Random disasters can be eliminated by turing off the Disasters setting of the Options Menu.

      • Shipwreck: Shipwrecks can occur once you have an operating seaport. They can cause fires where the ship crashes into a shore or bridge. Shipwrecks are not available on the Disasters Menu.

        • Monster
          Sets a monster loose on your city.

          Monster Attacks are provoked by high levels of pollution. A monster destroys everything in its path, starts fires, and causes planes, helicopters, trains, and ships to crash.

        • Fire
          Starts a fire somewhere on the map.

        • Fires can start anywhere in the city. Fires spread fairly rapidly through forests and buildings, somewhat slower over roadways. Fire will not cross water or clear land.

          The effectiveness of the fire department (which can be viewed in the Map Window) is based on how close it is to the fire, its funding level, and its transit access. Fires inside this effective radius will be extinguished automatically. If you have no operational fire departments in the area you can try to control the fire yourself. Since fire will not spread across clear terrain, you can build fire breaks with the bulldozer. Just surround the fire with clear areas and it will stop spreading and eventually burn itself out. You cannot directly bulldoze a fire.

        • Flood
          Causes a flood to occur near the water.

          Floods gradually spread and destroy buildings and utilities. After a while the flood waters recede, leaving behind cleared terrain.

        • Meltdown
          If there's a nuclear power plant, this spills Irn-Bru in the control room, causing a meltdown.

          Meltdowns are only possible if you are using a nuclear power plant. If a meltdown occurs, your nuclear plant will explode into flames. The surrounding area will be unusable for the remainder of the simulation due to radioactive contamination.

        • Tornado
          Causes a tornado to appear somewhere on the map.

          Tornados can occur anywhere on the map at any time. Very fast and unpredictable, they can appear and disappear at a moment's notice. Tornados destroy everything in their path, and can cause planes, helicopters, trains, and ships to crash.

        • Earthquake
          Causes a MAJOR earthquake.

          Earthquakes are the most devastating disaster. This is a Major earthquake -- between 8.0 and 9.0 on the Richter Scale. It will destroy buildings and start fires. The initial damage will vary with the severity of the earthquake, and the eventual fire damage depends on your fire-control efforts.

          When an Earthquake occurs, the Edit Window will shake for a while. When it stops you will have to take charge and control the scattered fires. Use the bulldozer to contain the largest fires first and work your way down to the smaller ones.

        • Clipper
          The Clipper disaster violates the privacy of your simulated citizens, and encrypts the city so only the NSA can decode it.

          Do not use this unless you work for the National Security Agency, and routinely subvert the Constitution of the United States by spying on American citizens with the Echelon Surveillance System.

      • Time Menu
        • Pause
          Stops the passage of time entirely.
        • Slow
          Months pass by slowly.
        • Medium
          Months pass by normally.
        • Fast
          Months pass by fast.
      • Priority Menu
        • Flat Out!
          Micropolis runs really fast, hogging the CPU.
        • Zoom Zoom
          Micropolis runs pretty fast, but leaves some time for other programs.
        • Buzz Buzz
          Micropolis runs fairly quickly.
        • Putter Putter
          Micropolis runs slower.
        • Snore Snore
          Micropolis runs very slowly.
      • Windows Menu
        • Budget
          Open the Budget Window. The simulation is paused as long as the budget window is open.
        • Evaluation
          Open the Evaluation Window.
        • Graph
          Open the Graph Window.
        • Map
          Open the Map Window.
        • Editor
          Open the Editor Window.
        • Frob
          Open the Frob-O-Matic Window.
        • Map Copy
          Open another copy of the Map Window.
        • Editor Copy
          Open another copy of the Editor Window.
    • Status Panel
      • License Owner Name
      • Date
      • Funds
      • Residential, Commercial, Industrial History Graph
      • Residential, Commercial, Industrial Demand Chart
        The Demand Indicator shows the demand levels for Residential (green), Commercial (blue), and Industrial zones (yellow), and can be helpful in planning your city.
      • Micropolis Simulator Icon
      • Scrolling Text Message Window
      • Text Input Field

    Micropolis Edit Window Window

    This is where all actual zoning and building takes place.

    Terrain

    There are three types of terrain in the Edit Window: Open Land, Trees, and Water.

    Open Land is where you can zone and build. It is shown as brown with dark brown speckles.

    Trees and Forests are shown as green, with dark green speckles. You cannot zone or build on trees. You may bulldoze trees and forests to turn them into clear land. While some bulldozing is necessary, clearing away too much green area will result in lower property values.

    Water is shown as blue, with dark blue speckles. You cannot zone or build on water. You must bulldoze coastlines to create landfills before you can build or zone there.

    Edit Window Gadgets

    The Edit Window is where you will do the actual building and zoning. In the middle of the Edit Window is a detailed map showing part of the terrain. Around the edges are controls and fields displaying information about the city.

    There is a row of Menu Buttons on the left below the title. The Display menu lets you select how often the display is drawn. The Options menu lets you turn on and off certain view specific features.

    To the right of the menu buttons, important messages are displayed. Below the menu bar is a tool pallet. The palette displays the name and cost of the currently selected tool, above an menu of colorful icons, used for choosing the city editing mode. Click the mouse over an icon to select an editing tool. The currently selected tool is highlighted, and its name and cost is displayed at the top of the panel, and spoken.

    You can use the selected tool by pressing the left mouse button over the map in the middle of the Edit Window. Also, you can pop up a Pie Menu to quickly switch between editing tools, by clicking the right mouse button over the map.

    You can easily scroll the map by pressing the middle mouse button down over the map and dragging the view around.

    Edit Window Icons

    You can select an icon from the Tool Icon pallet to use a city editing tool. When an icon is selected, a rectangle will accompany the cursor when it's over the map, to indicate the area the tool will effect.

    • Query Tool (question mark)
      Shows the Zone Status Window, describing the population density, value, crime rate, pollution, and growth rate of the zone under the cursor. It doesn't cost anything to use.

    • Bulldozer
      Clears trees and forests, creates landfill along the water, and levels developed, existing zones and clears rubble caused by disasters. The Auto Bulldoze option works on natural terrain, power lines and rubble, but not on zones, roads and rails.

      It costs $1 for each square tile bulldozed. Knocking down a 3x3 zone costs $9 since it's made up of nine tiles. You're automatically charged $1 for each non-empty tile that you Auto Bulldoze.

    • Road
      Connect developed areas. Intersections and turns are automatically created. Lay continuous roads by pressing the left mouse button and dragging your cursor. Be careful -- if you accidentally lay a road in the wrong place, you will have to pay for bulldozing and rebuilding.

      Roads may not be placed over zoned areas. They may be placed over trees, shrubbery, and shoreline only after bulldozing or activating the Auto Bulldoze function from the Options Menu. Roads can cross over power lines and rails only at right angles.

      Holding down the Control key while laying roads will constrain them to a straight line.

      Laying roads across water creates a bridge. Bridges can only be built in a straight line -- no curves, turns or intersections. Shorelines must be bulldozed prior to building a bridge, unless the Auto Bulldoze function from the Options Menu is active.

      Roadways are maintained by the transit budget, and wear out if there is a lack of funding. The amount of yearly funding requested by the transportation department is $1 for each section of road, $4 for each section of bridge.

      It costs $10 to lay one section of road and $50 to lay one section of bridge.

    • Power Lines
      Carry power from power plants to zoned land and between zones. All developed land needs power to function. Power is conducted through adjacent zones. Unpowered zones display the flashing lightning bolt symbol. There is a delay between the time you connect power to a zone and when the flashing symbol disappears. The delay grows longer as the city grows larger.

      Power lines cannot cross zoned land. They can be built over trees, shrubbery, and shoreline only after bulldozing, or activating the Auto Bulldoze function from the Options Menu.

      Junctions and corners are automatically created. Lay continuous power lines by pressing the left mouse button down and dragging your cursor. Power lines across water must be horizontal or vertical -- no turn, curves or intersections. Power lines consume some power due to transmission inefficiencies.

      Holding down the Control key while laying power lines will constrain them to a straight line.

      It costs $5 to lay one section of power line on land, $25 on water.

    • Transit Lines
      Create a railway system for intra-city mass transit. Place tracks in heavy traffic areas to help alleviate congestion.

      Intersections and turns are created automatically. Lay continuous transit lines by pressing the left mouse button down and dragging with your cursor. Tracks laid under rivers will appear as dashed lines. These are underwater tunnels, and must be vertical or horizontal -- no turns, curves or intersections.

      Holding down the Control key while laying tracks will constrain them to a straight line.

      Transit lines are maintained by the transit budget. The level of funding affects the efficiency of the system. The amount of yearly funding requested by the transportation department is $4 for each section of rail, and $10 for each section of tunnel.

      It costs $20 per section of track laid on land, $100 per section under water.

    • Parks
      Can be placed on clear land. Parks, like forests and water, raise the land value of surrounding zones. Parks can be bulldozed as fire breaks or reserve space for later mass transit expansion.

      Holding down the Control key while building parks will constrain them to a straight line.

      It costs $10 to zone one park.

    • Residential Zones
      Where the Sims live, build houses, apartments and community facilitieslike hospitals and churches.

      Most residential zones develop into one of four classes: lower, middle, upper, and high. They can range in population density from single-family homes to high-rise apartments and condominiums. Some residential zones will automatically develop into churches and hospitals.

      Factors influencing residential value and growth are pollution, traffic density, population density, surrounding terrain, roadway access, parks and utilities.

      It costs $100 to zone one plot of land as residential.

    • Commercial Zones
      Used for many things, including retail stores, office buildings, parking garages and gas stations.

      There are four values for commercial property, and five levels of growth, from the small general store to tall skyscrapers. Factors influencing the value and growth of commercial areas include internal markets, pollution, traffic density, residential access, labor supply, airports, crime rates, transit access and utilities.

      It costs $100 to zone one plot of land as commercial.

    • Industrial Zones
      For heavy manufacturing and industrial services. There are four levels of industrial growth, from small pumping stations and warehouses to large factories.

      Factors influencing industrial growth are external markets, seaports, transit access, residential access, labor supply and utilities.

      It costs $100 to zone one plot of land as industrial.

    • Police Departments
      Lower the crime rate in the surrounding area. This in turn raises property values. Place these in high-density crime areas, as defined by your Crime Rate Map. The efficiency of a station depends on the level of police department funding and transit access.

      It costs $500 to build a police station. Full yearly maintenance of each Police Station is $100.

    • Fire Departments
      Make surrounding areas less susceptible to fires. When fires do occur, they are put out sooner and do less damage if a station is near. The effectiveness of fire containment depends on the level of fire department funding and transit access.

      It costs $500 to build a fire station. Full yearly maintenance of each fire station is $100.

    • Stadiums
      Encourage residential growth, once a city has become fairly large. You may build a stadium in a smaller city without negative (or positive) effect. Stadiums indirectly generate a lot of revenue, but create a lot of traffic. Properly maintaining a stadium requires a good road and transit network.

      It costs $3000 to build a stadium.

    • Power Plants
      Can be Coal or Nuclear. The nuclear plant is more powerful but carries a slight risk of meltdown. The coal plant is less expensive, but less powerful and it pollutes.

      All zoned land needs power to develop and grow. When developed land loses power, it will degenerate to an undeveloped zone unless power is restored. Connecting too many zones to a power plant causes brownouts.

      Coal power plants cost $3000 to build, and supply enough energy for about 50 zones. Nuclear power plants cost $5000 and supply electricity for about 150 zones.

    • Seaports
      Increase the potential for industrial growth. They have little effect in a small city, but contribute a lot to industrialization in a large city.

      Seaports should be placed on a shoreline. The shoreline must be bulldozed prior to zoning a Seaport, unless Auto Bulldoze is active. Once the port is operational you may see ships in the water.

      It costs $5000 to zone land for use as a seaport.

    • Airports
      Increase the growth potential of your commercial markets. Once a city starts getting large, commercial growth will level off without an airport. Airports are large and expensive and should not be built unless your city can afford one. Position airports to keep flight paths over water whenever possible, lessening the impact of air disasters.

      Once you build an airport you will see planes flying above your city to and from the airport. There is also a traffic helicopter that alerts you to heavy traffic areas.

      It costs $10,000 to zone land for use as an airport.

    Micropolis Budget Window

    When your first taxes are collected in a new city, and each year after, the Budget Window will appear (unless you select the Auto Budget option). You will be asked to set the funding levels for the fire, police, and transportation departments, and to set the property tax rate.

    The Budget Window can be opened from the Windows Menu. When Auto Budget is active, all the funding levels will remain at full funding, or your last setting. If there is not enough money to completely fund the budget, money will go first to the Transit Department, then the Fire Department, then the Police Department.

    You can raise and lower the tax rate and budget levels by dragging the sliders corresponding to each category. Press the button labeled "Continue With These Figures" to make the Budget Window disappear.

    When the Budget Window opens up, a timer in the bottom button starts running. When it runs out, the Budget Window automatically goes with the currently selected figures and disappears. You can click on the timer button to cancel it, and the Budget Window will stay up for as long as you like.

    Tax Rate

    The maximum tax rate you can set is 20%.

    The minimum tax rate you can set is 0%.

    The optimum tax rate for fast growth is between 5% and 7%.

    To slow city growth without actually shrinking, set the tax rate to 8% or 9%.

    Funding Levels

    The amount of yearly funding requested for the fire and police departments is $100 per station that you have placed. Until you actually build fire or police stations, you cannot fund them. You cannot allocate more than 100% of the requested funding for fire and police departments -- Micropolis police officers and fire inspectors are honest and will not accept your bribes.

    Allocating less than the requested amount will decrease the effective coverage of the police or fire stations.

    The amount of yearly funding requested for the transportation department is $1 for each section of road, $4 for each section of bridge (roads over water), $4 for each section of rail, and $10 for each section of tunnel (underwater rails). You cannot allocate more than 100% of the requested funds.

    Transportation maintenance funding slightly below 100% will cause slow, minor deterioration of the transit system -- an occasional pothole or bad track section. Funding between 90% and 75% will cause noticeable damage -- many sections of road and rail will be unusable. Funding below 75% will cause rapid deterioration of your transit system.

    Cash Flow

    The cash flow is calculated as follows:

    CashFlow = TaxesCllected - TotalAllocatedFunds
    
    
    It will be a negative number if your yearly maintenance costs are greater than your yearly tax intake.

    A major difference between Micropolis and a real city is that Micropolis does not allow budget deficits. If you don't have the money, you can't spend it. Try not to let your city run with a negative cash flow.

    Micropolis Map Window

    The Map Window shows the entire area of your city. It has a pallet of icons down the left edge, for selecting between different map types. The maps show demographic information to help you comprehend the state of your city.

    You can select between various views by pressing the left mouse button over any of the icons. Some of the icons have submenus, that pop up when you hold the button down, so you can select different aspects of the view.

    One or more yellow rectangular outlines overlay the map, showing the location of the Edit Window and Surveyor Window views of the city. You can drag the rectangles around the map to pan the other views. You can also "throw" the view, by dragging with the left mouse button, and releasing the button while moving the mouse. The view keeps on panning and bounces off the edges of the map! Click on a moving rectangle to make it sit still, or on the map to stop all the bouncing rectangles. Use the middle button to avoid such behavior.

    Using The Maps

    The Map Window should be constantly referred to in all stages of city planning, building and managing.

    Before you build, use the map before beginning a new city to plan:

    • Where you want your city center.
    • Where you want the high-class waterfront residential areas.
    • Where you will cross water with bridges, power lines and tunnels.
    • Where to place power plants.
    • Where to place large industrial sections away from the residential sections.
    • The general layout of your city.

    Printing the map and sketching in your plan with pencil or pen can save a lot of bulldozing and re-zoning and rebuilding.

    During city growth:

    • Use the map to guide your city's growth around forest areas, to preserve the trees and improve property values.
    • Use the Transportation Map along with the Traffic Density map to plan traffic control and expansion.
    • Use the City Form Maps to make sure you have the proper ratio of residential to commercial to industrial zones.
    • Use the Pollution Map to detect problem areas, and disperse the industrial zones and/or replace roads with rails.
    • Printing out the map in various stages of development and doing some preliminary expansion planning with pencil can be useful. Printouts can also be used for city historical records.
    During city maintenance:

    • Use the Power Grid Map to locate zones that have lost power.
    • Use the City Services Maps to evaluate the effective coverage of your police and fire departments.
    • Use the Crime Rate Map to locate problem areas that need more police protection.
    • Use the Pollution Map to locate problem areas.
    • Use the Transportation and Traffic Density Maps to determine where to replace roads with rails.
    • Use the Land Value Map to locate depressed areas for improvement or replacement.
    • Use the City Form Maps to maintain the proper ratio of residential to commercial to industrial zones.

    Micropolis Graph Window

    The Graph Window gives you time-based graphs of various city data. It can be opened through the Windows Menu.

    Unlike the maps, which only show the current state of your city, the Graphs give you a record of the past so you can gauge trends and cycles.

    You may view graphs for time periods of either the last 10 years or the last 120 years by clicking on the "10 YRS." or "120 YRS." button.

    • The Residential Population Graph shows the total population in residential zones.
    • The Commercial Population Graph shows the total population in commercial zones.
    • The Industrial Population Graph shows the total population in industrial zones.
    • The Cash Flow Graph shows your city's cash flow: money collected in taxes minus money it took to maintain your city. The center of the Cash Flow Graph represents a cash flow of zero. Do not build more infrastructure (roads, rails, police departments, fire stations) than you can support with tax revenues.
    • The Crime Rate Graph shows the overall crime rate of the entire city.
    • The Pollution Graph shows the overall average pollution reading of the entire city.

    Using the Graphs

    The Graphs give information on many of the same factors as the maps, but show the information over time. Graphs are for locating trends in city life that won't be noticeable in a map. If you look at a map, for example the Crime Rate Map, a very slight rise in the crime rate will not be noticeable. But on the Crime Rate Graph, you would easily locate the upward trend in crime because you will be viewing the levels for a number of years at the same time.

    Residential, commercial and industrial population growth and/or decline can be tracked and displayed. If you notice a downward trend in any of these, refer to the User Reference Card to locate potential problems and solutions.

    Use the Cash Flow Graph to track your city's efficiency as it grows. If your maintenance costs are higher than your tax revenues, you will have a negative cash flow.

    The Crime Rate Graph can be displayed, revealing slight but consistent upward or downward trends.

    Use the Pollution Graph to catch rising levels of pollution before they reach a problem level.

    Micropolis Evaluation Window

    The Evaluation Window gives you a performance rating. You can access it through the Windows Menu.

    Public Opinion is presented in poll form, rating your overall job as Mayor and listing what the public regards as the city's most pressing problems. You are advised to keep your residents happy or they might migrate away, and you will be left with a "ghost town."

    In general, if more than 55% of the populace thinks you are doing a good job, then you can feel secure of keeping your job.

    If 10% or less of the people think something is a problem, then it's not too bad.

    These are most of the problems that citizens complain about, and how to correct them:

    • Traffic -- Replace dense sections of roads with rails.
    • Crime -- Add police stations and/or raise property values.
    • Pollution -- Replace roads with rails, disperse industrial zones.
    • Housing -- Zone more residences.
    • Housing Costs -- Zone more residences in low property value areas.
    • Fires -- Build more fire departments.
    • Taxes -- Lower taxes (if you can). Or lie through your lips.
    • Unemployment -- Zone more commercial and industrial areas.
    Statistics on Population, Net Migration, and Assessed Value are displayed, along with the city's Game Level and the Overall City Score. This data is calculated once a year at budget time.

    Population is the number of residents in your city.

    The Net Migration statistic provides a rating of the desirability of your city. If people are leaving in droves, then you know something is rotten in Micropolis.

    The Assessed Value is the combined value of all city-owned property: roads, rails, power plants, police and fire stations, airports, seaports, parks, etc. It does not include residential, commercial and industrial zones.

    The Categories are defined by population as follows:

    • Village: 0 to 1,999
    • Town: 2,000 to 9,999
    • City: 10,000 to 49,999
    • Capital: 50,000 to 99,999
    • Metropolis: 100,000 to 499,999
    • Megalopolis: 500,000 and above
    Overall City Score is a composite score based on the following factors (some positive, some negative):

    • Major Factors: Crime, pollution, housing costs, taxes, traffic, unemployment, fire protection, unpowered zones, city growth rate.
    • Minor Factors: Stadium needed (but not built), seaport needed (but not built), airport needed (but not built), road funding, police funding, fire department funding, and fires.
    A large population is not necessarily a sign of a successful city. Population size does not affect the overall city score, since low population could indicate a new or growing city.

    Since city growth rate does affect the overall city score, a city in which growth has been intentionally stopped for environmental or aesthetic reasons will have a slightly lower score.

    City SimNotice Window

    The Notice Window is used to display important messages, and for temporary control panels. When something important happens, it pops up to the front. Some times it displays a live view of events happening in the city, that you can click on to scroll the editor window to the location of interest. You can dismiss the Notice window by clicking the "Dismiss" button along the bottom edge.

    Growing a City

    While growing a city, refer often to the User Reference Card. It provides a chart of City Dynamics; how all factors of city life and growth are related.

    The main points to keep in mind while growing a city are:

    • Grow slowly. Watch your money.
    • All zones must be powered to develop.
    • Zones must be developed to generate tax money.
    • Roads or rails must provide access to and from each zone for it to fully develop.
    • There is a yearly maintenance cost for each section of road, rail, bridge and tunnel. This can add up. Don't build too many roads and rails and generate high maintenance costs before your city can generate enough tax revenues to support them.
    • Extra power plants and redundant power lines are expensive, but can keep zones from losing power during a disaster or emergency and deteriorating.
    • Rails can carry much more traffic than roads. While building and zoning an area that you predict will generate heavy traffic, install rails instead of roads in the early stages of development.
    • If you get a lot of heavy traffic warnings, replace roads with rails. You can build an entirely roadless city, even if you're not a train spotter!
    • Grouping zones together, four of five in a row touching each other, can eliminate a lot of power line segments.
    • Airports, seaports and stadiums won't help a small city grow -- so save your money until the city gets larger. The Sims will tell you when they need these things.
    • Place zones, roads, etc. carefully -- they cannot be moved, and you will have to pay to bulldoze them and rebuild.
    • As a rule of thumb, the number of residential zones should be approximately equal to the sum of commercial and industrial zones. When your city is small, you will need more industrial zones than commercial, and when your city gets larger, you will need more commercial zones than industrial.
    • Separate the residential areas from the industrial areas.
    • Proximity to forests, parks, and water increases land value, which increases the taxes collected. Don't bulldoze any more forest than you must. Natural shoreline increases property values more than landfill shoreline.
    • Keep in mind that proximity to downtown raises property values. The simulator defines the downtown areas as "the center of mass of the population density." It calculates the average geographical center of the population.
    • A bigger, more populous city is not necessarily better. Having a self-supporting, profitable city with pleasant surroundings is better than a huge city that is always broke and has no forest or shoreline.
    • Use the various maps and graphs to plan city growth, locate problems, and track your progress. Look for areas that need police and fire coverage as you go, so you don't have to go back and bulldoze developed zones to make room for police and fire stations.
    • Save your city to disk before trying any major new policy so you can go back if your plan doesn't work.
    • Print out your city in different stages of evolution to track and plan growth.
    • Check the Evaluation Window often. The Sims will let you know how you are doing. Also the statistics can be useful; if your population is shrinking, don't go zoning new areas that may never develop. Look for problems in the existing zoned areas, and spend your time and money solving them.
    • Save your city to disk often!!!


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Quit.IQuit.html0000664000076400007640000000675010724145723021162 0ustar simcitysimcityReally Quit Micropolis

    Really Quit Micropolis

    Press this button to quit playing this game of Micropolis.


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Editor.ToolNuclear.html0000664000076400007640000000667410724145723022667 0ustar simcitysimcityNuclear Power Plant Tool Icon

    Nuclear Power Plant Tool Icon


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Editor.ToolSeaport.html0000664000076400007640000000664410724145723022710 0ustar simcitysimcitySeaport Tool Icon

    Seaport Tool Icon


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Head.Scrollbar.html0000664000076400007640000000665410724145723021774 0ustar simcitysimcityMessage Log Scrollbar

    Message Log Scrollbar


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Scenario.html0000664000076400007640000000666410724145723020755 0ustar simcitysimcityMicropolis Chooser Window

    Micropolis Chooser Window


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Head.html0000664000076400007640000000666610724145723020055 0ustar simcitysimcityMicropolis Controls Window

    Micropolis Controls Window


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Quit.AllQuit.html0000664000076400007640000000676410724145723021507 0ustar simcitysimcityEveryone Quit Micropolis

    Everyone Quit Micropolis

    Press this vote button to quit Micropolis if everyone else agrees.


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Editor.ToolPie.html0000664000076400007640000000665210724145723022007 0ustar simcitysimcityEditor Tool Pie Menu

    Editor Tool Pie Menu


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Evaluation.GoodJob.html0000664000076400007640000000666410724145723022643 0ustar simcitysimcityAre You Doing a Good Job?

    Are You Doing a Good Job?


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Budget.Collected.html0000664000076400007640000000664010724145723022313 0ustar simcitysimcityTaxes Collected

    Taxes Collected


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Graph.Pollution.html0000664000076400007640000000665610724145723022240 0ustar simcitysimcityGraph Pollution Toggle

    Graph Pollution Toggle


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Evaluation.Dismiss.html0000664000076400007640000000670210724145723022724 0ustar simcitysimcityDismiss Evaluation Window Button

    Dismiss Evaluation Window Button


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Head.Entry.html0000664000076400007640000000664210724145723021147 0ustar simcitysimcityText Entry Field

    Text Entry Field


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Editor.ToolWire.html0000664000076400007640000000663610724145723022202 0ustar simcitysimcityWire Tool Icon

    Wire Tool Icon


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Player.Display.html0000664000076400007640000000666210724145723022050 0ustar simcitysimcityDisplay of Player to Add

    Display of Player to Add


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Notice.View.html0000664000076400007640000000664010724145723021336 0ustar simcitysimcityNotice Map View

    Notice Map View


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Scenario.Detroit.html0000664000076400007640000000666010724145723022362 0ustar simcitysimcityDetroit Scenario Button

    Detroit Scenario Button


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/File.html0000664000076400007640000000667610724145723020074 0ustar simcitysimcityMicropolis File Chooser Window

    Micropolis File Chooser Window


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Notice.html0000664000076400007640000000666210724145723020431 0ustar simcitysimcityMicropolis Notice Window

    Micropolis Notice Window


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Graph.html0000664000076400007640000000666010724145723020247 0ustar simcitysimcityMicropolis Graph Window

    Micropolis Graph Window


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Notice.Text.html0000664000076400007640000000663010724145723021347 0ustar simcitysimcityNotice Text

    Notice Text


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Quit.No.html0000664000076400007640000000675610724145723020511 0ustar simcitysimcityKeep Playing Micropolis

    Keep Playing Micropolis

    Press this button to continue playing this game of Micropolis.


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Budget.Previous.html0000664000076400007640000000663610724145723022236 0ustar simcitysimcityPrevious Funds

    Previous Funds


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Editor.BuildPie.html0000664000076400007640000000666610724145723022136 0ustar simcitysimcityEditor Tool Build Pie Menu

    Editor Tool Build Pie Menu


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Editor.ToolRail.html0000664000076400007640000000663610724145723022163 0ustar simcitysimcityRail Tool Icon

    Rail Tool Icon


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Editor.ToolRes.html0000664000076400007640000000666610724145723022030 0ustar simcitysimcityResidential Zone Tool Icon

    Residential Zone Tool Icon


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Budget.Police.html0000664000076400007640000000663010724145723021627 0ustar simcitysimcityPolice Fund

    Police Fund


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Help.Scrollbar.html0000664000076400007640000000665010724145723022017 0ustar simcitysimcityHelp Text Scrollbar

    Help Text Scrollbar


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Head.Funds.html0000664000076400007640000000666210724145723021127 0ustar simcitysimcityMicropolis Funds Display

    Micropolis Funds Display


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/inside.html0000664000076400007640000003712610724145723020462 0ustar simcitysimcityInside The Simulator

    Inside The Simulator

    How the Simulator Works and Strategies for Using It

    Many factors influence the chance of your city's prospering or floundering: both internal factors (the structure and efficiency of your city) and external factors (the regional economy, disasters, etc.).

    Zones

    Your city is divided up into three primary zones: residential, commercial and industrial. These zones symbolize the three basic pillars upon which a city is based: population, industry, and commerce. All three are necessary for your city to grow and thrive.

    • Residential Zones are where the Sims live. Here they build houses, apartments and community facilities such as churches and schools. Sims are the work force for your city's commercial and industrial zones.

    • Industrial Zones are used to site warehouses, factories, and other unsightly and polluting structures which have a negative impact on surrounding zones. One of the major goals of planning is to separate these "nuisances" from the areas where people live. In this simulation, industrial zones represent the "basic" production of your city. Things produced here are sold outside the city to an "external market," bringing money into the city for future growth.

    • Commercial Zones represent the retail stores and services in your city, including gas stations, grocery stores, banks, and offices. Commercial areas are mainly dedicated to producing goods and services needed within your city. This is called "non-basic" production or production for the "internal market."

    Population -- Residential

    The major factors controlling residential population are birthrate, availability of jobs and housing, unemployment, and quality of life within the city.

    Birthrate as used here, is actually a combination of the birthrate (positive) and the deathrate (negative). Within Micropolis there is always a positive birthrate.

    Availability of jobs (the employment rate) is a ratio of the current commercial and industrial populations to the total residential population. As a rule of thumb, the number of commercial and industrial zones together should roughly equal the number of residential zones.

    If there are more jobs in your city than residents, new settlers will be attracted. If the job market declines during a local recession, your people will migrate away in search of jobs.

    Housing for your residents is built in the residential zones. These zones must be powered and connected to the places of employment by roads. The structures built in residential zones are influenced by land value and population density.

    Quality of life is a measure of relative "attractiveness" assigned to different zone locations. It is affected by negative factors such as pollution and crime, and positive factors such as parks and accessibility.

    External Market -- Industrial

    There are thousands of variables that influence your city. All these variables can be influenced by your actions with the exception of one.

    The external market (the economic conditions that exist outside of your city) is controlled by the simulation -- there is nothing you can do to change it. In many ways, this external market is the original source of all city growth. Towns frequently begin as production centers (steel towns, refineries, etc.) that service a demand in the surrounding region. As time passes, the external market grows to reflect the regional growth going on around your city.

    The industry in your city will attempt to grow as the external market grows. For this to happen there must be room for expansion (more industrial zones) and an adequate labor supply (more residential zones).

    Internal Market -- Commercial

    The internal market is completely influenced by the conditions within your city. Internal production, created in the commercial zones, represents all the things which are purchased and consumed within the city. Food stores, gas stations, retail stores, financial services, medical care, etc. -- all depend on a nearby population to service. Within Micropolis, the size of the internal market determines the rate at which commercial zones will prosper. Commercial zones need enough zoned land to build on and an existent, sufficient work force to employ. The structures built in commercial zones are mainly influenced by land value and population density.

    Commercial zones grow and develop to serve the expanding internal market. Commercial growth will usually be slow at first, when the population is small and needs very little. As your city grows, commercial growth will accelerate and the internal market will become a much larger consumer of your total city production. This accelerating effect, when the external/industrial production is overtaken by the accelerating internal/commercial sector, can turn a sleepy little town of 50,000 into a thriving capital of 200,000 in a few short years.

    Tax Rate

    The tax rate you set controls the amount of income generated by your city. As taxes are collected each year (simulation time), the Budget Window will appear, giving you the fiscal details of your city and a chance to adjust rates. The simulation determines the amount of revenue collected by assessing each zone an amount based on its land value, current level of development and the current tax rate.

    The tax rate has a global affect on your city's growth rate. If you set it low (0%-4%), growth will be brisk but the city income will be low. If you set it high (10%-20%), you will collect a lot in the short run but in the long run tax income will decrease along with the population. You must keep tax income high enough to invest in new development, but low enough not to scare off residents and businesses. A high tax rate is one way to control city growth, should you want to experiment with "growth control measures."

    Budgeting

    City budgeting affects the way your city grows. City infrastructure cost is represented by three departments: police, fire, and transportation. You may set the funding levels separately for each. All three departments will request a certain level of funding each year. You may supply all or part of the requested funds, in the attempt to balance safety needs and budgetary concerns.

    • Police Department: Police stations lower the crime rate around a territory. The effective radius of your police station is related to the amount of funding allocated to the police department. Police stations cost $100 per year to fund.
    • Fire Department: Fire stations prevent and extinguish fires. The level of funding determines the effective radius of a fire station. Fire stations put out fires within this radius much sooner than outside it, and decrease the chance that they will start in the first place. Fire stations cost $100 per year to fund.
    • Transportation Department:When you build roads and rail systems you are charged for construction and yearly maintenance. The larger your transportation network, the more it will cost for upkeep. If you decide not to or are unable to pay this maintenance cost, roads will slowly deteriorate and become unusable. The maintenance cost for each piece is: Road - $1, Bridge - $4, Rail - $4, Rail tunnel - $10.

    Power

    Electrical power makes modern cities possible. Efficient and reliable power transmission to all zones is the goal of good "power management."

    The entire power grid of your city is periodically checked in the simulation for links to power. If a zone is connected (by other zones or power lines) to a power plant, the zone is considered powered.

    Zones must be powered for development to occur. Many things (such as fires, tornadoes, earthquakes and bulldozers) can knock down power lines and cause blackouts in parts of your city. Development will stop in unpowered zones, and if power is not quickly restored, the zone will decline back to its original state of emptiness.

    Redundant power plants and power connections can make your power grid more reliable, but running more line adds construction costs.

    Transportation -- Traffic

    One of the most important elements of city structure is the transportation network. It moves Sims and good throughout your city. Roads typically occupy as much as 25%-40% of the land in urban areas. Traffic along these roads indicates which sections of your road system are used the most.

    Traffic levels are simulated by a process known as "Trip Generation." Over time, each populated zone in the city will generate a number of trips, depending on the population. Each generated trip starts at the origin zone, travels down the road, and if a "proper destination" is reached, ends at the destination zone -- otherwise, the trip fails. Trip failure indicates inaccessibility of a zone and limits its growth.

    The majority of generated trips represent people commuting to and from work. Additional traffic is generated by residents traveling to shopping, recreation, etc. When analyzing traffic, the simulator tests the following traffic routes:

    Traffic Patterns

    • From Residential
      • To Commercial
      • To Industrial
    • From Commercial
      • To Residential
      • To Industrial
    • From Industrial
      • To Residential

    When Sims drive away from an origin zone, they have a limited "trip range" in which to find a destination zone. Heavy traffic decreases the trip range. If the destination zone is too far away, the trip is unsuccessful. Repeated unsuccessful trips will cause the Sims to move out of the origin zone.

    Each road has a limited capacity for traffic. When this capacity is exceeded traffic jams will form. Traffic jams drastically lower the capacity of a road, compounding the problem and frustrating drivers.

    Traffic conditions fluctuate quickly. Avoid traffic problems by providing several routes for the traffic to take.

    A road must be adjacent to a zone for the zone to be connected to the traffic pattern. Zones do not conduct traffic the way they conduct power.

    Pollution

    Pollution levels are tracked in all areas of your city. This is a general "nuisance level" that includes air and water pollution, noise pollution, toxic wastes, etc. Pollution has a negative impact on the growth of residential areas.

    The primary cause of pollution is industrialized zones. The level of pollution created by an industrial zone increases with its level of growth.

    Traffic is another cause of pollution. There are limited means of combating the pollution level. Lowering traffic density, limiting industrial development, and separating the pollution from the residential areas will help.

    Crime

    Crime rates are influenced by population density, local law enforcement, and land values. As population density increases in an area, the number of crimes committed increases. Crime will also increase in areas of low land value.

    The most effective way to deal with high crime rates is to introduce a police station into the area. Based on its level of funding, the police station will reduce the rate of crime in its sphere of influence. A long-term approach to lowering crime is to raise the land value of the area. One way to do this is to demolish and rezone (urban renewal).

    Land Value

    Land value is one of the most fundamental aspects of urban structure. The land value of an area affects how that area is used. In this simulation the land value of an area is based on terrain, accessibility, pollution, and distance to downtown.

    The farther the residents have to go to work, the lower the land value where they live, due in part to transportation costs. The value of commercial zones depends greatly on accessibility by the populace.

    Land value is also affected by surrounding terrain. If land is closer to water, trees, agricultural areas, or parks, its value will rise. Creative placement of zones within the terrain, with little bulldozing, can make good use of this natural advantage.

    Land value and crime rate have a feedback effect on each other. Lower land values cause crime rates to rise. Higher crime rates cause land values to drop, and can cause "transition areas" near your central city to rapidly decline in value.


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/File.Directory.html0000664000076400007640000000663610724145723022033 0ustar simcitysimcityDirectory Name

    Directory Name


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Budget.Road.html0000664000076400007640000000662410724145723021304 0ustar simcitysimcityRoad Fund

    Road Fund


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Disaster.No.html0000664000076400007640000000673410724145723021341 0ustar simcitysimcityDon't Cause a Disaster

    Don't Cause a Disaster

    Press this button to avoid causing a disaster.


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Budget.Cancel.html0000664000076400007640000000667010724145723021605 0ustar simcitysimcityCancel Changes and Continue

    Cancel Changes and Continue


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Editor.ToolInd.html0000664000076400007640000000666410724145723022007 0ustar simcitysimcityIndustrial Zone Tool Icon

    Industrial Zone Tool Icon


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Graph.Com.html0000664000076400007640000000666010724145723020764 0ustar simcitysimcityGraph Commercial Toggle

    Graph Commercial Toggle


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Editor.ToolStadium.html0000664000076400007640000000664410724145723022701 0ustar simcitysimcityStadium Tool Icon

    Stadium Tool Icon


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/SelectCity.No.html0000664000076400007640000000673510724145723021634 0ustar simcitysimcityKeep Playing

    Keep Playing

    Press this button to keep playing with the current city simulation.


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Editor.ToolQuery.html0000664000076400007640000000664010724145723022374 0ustar simcitysimcityQuery Tool Icon

    Query Tool Icon


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Graph.Money.html0000664000076400007640000000665610724145723021342 0ustar simcitysimcityGraph Cash Flow Toggle

    Graph Cash Flow Toggle


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/history.html0000664000076400007640000010260610724145723020704 0ustar simcitysimcityHistory Of Cities And City Planning

    History Of Cities And City Planning

    By Cliff Ellis

    Introduction

    The building of cities has a long and complex history. Although city planning as an organized profession has existed for less than a century, all cities display various degrees of forethought and conscious design in their layout and functioning.

    Early humans led a nomadic existence, relying on hunting and gathering for sustenance. Between 8,000 and 10,000 years ago, systematic cultivation of plants and the domestication of animals allowed for more permanent settlements. During the fourth millennium B.C., the requirements for the "urban revolution" were finally met: the production of a surplus of storable food, a system of writing, a more complex social organization, and technological advances such as the plough, potter's wheel, loom, and metallurgy.

    Cities exist for many reasons, and the diversity of urban forms can be traced to the complex functions that cities perform. Cities serve as centers of storage, trade, and manufacture. The agricultural surplus from the surrounding countryside is processed and distributed in cities. Cities also grew up around marketplaces, where goods from distant places could be exchanged for local products. Throughout history, cities have been founded at the intersections of transportation routes, or at points where goods must shift from one mode of transportation to another, as at river and ocean ports.

    Religious elements have been crucial throughout urban history. Ancient peoples had sacred places, often associated with cemeteries or shrines, around which cities grew. Ancient cities usually had large temple precincts with monumental religious buildings. Many medieval cities were built near monasteries and cathedrals.

    Cities often provide protection in a precarious world. During attacks, the rural populace could flee behind city walls, where defence forces assembled to repel the enemy. The wall served this purpose for millennia, until the invention of heavy artillery rendered walls useless in warfare. With the advent of modern aerial warfare, cities have become prime targets for destruction rather than safe havens.

    Cities serve as centers of government. In particular, the emergence of the great nation-states of Europe between 1400 and 1800 led to the creation of new capital cities or the investing of existing cities with expanded governmental functions.

    Washington, D.C., for example, displays the monumental buildings, radial street pattern, and large public spaces typical of capital cities.

    Cities, with their concentration of talent, mixture of peoples, and economic surplus, have provided a fertile ground for the evolution of human culture: the arts, scientific research, and technical innovation. They serve as centers of communication, where new ideas and information are spread to the surrounding territory and to foreign lands.

    Constraints on City Form

    Cities are physical artifacts inserted into a preexisting natural world, and natural constraints must be respected if a settlement is to survive and prosper. Cities must conform to the landscape in which they are located, although technologies have gradually been developed to reorganize the land to suit human purposes. Moderately sloping land provides the best urban site, but spectacular effects have been achieved on hilly sites such as San Francisco, Rio de Janeiro, and Athens.

    Climate influences city form. For example, streets have been aligned to take advantage of cooling breezes, and arcades designed to shield pedestrians from sun and rain. The architecture of individual buildings often reflects adaptations to temperature, rainfall, snow, wind and other climatic characteristics.

    Cities must have a healthy water supply, and locations along rivers and streams, or near underground watercourses, have always been favored. Many large modern cities have outgrown their local water supplies and rely upon distant water sources diverted by elaborate systems of pipes and canals.

    City location and internal structure have been profoundly influenced by natural transportation routes. Cities have often been sited near natural harbors, on navigable rivers, or along land routes determined by regional topography.

    Finally, cities have had to survive periodic natural disasters such as earthquakes, hurricanes, tornados, and floods. The San Francisco earthquake of 1906 demonstrated how natural forces can undo decades of human labor in a very short time.

    Elements of Urban Structure

    City planners must weave a complex, ever-changing array of elements into a working whole: that is the perennial challenge of city planning. The physical elements of the city can be divided into three categories: networks, buildings, and open spaces. Many alternative arrangements of these components have been tried throughout history, but no ideal city form has ever been agreed upon. Lively debates about the best way to arrange urban anatomies continue to rage, and show no signs of abating.

    Networks

    Every modern city contains an amazing array of pathways to carry flows of people, goods, water, energy, and information. Transportation networks are the largest and most visible of these. Ancient cities relied on streets, most of them quite narrow by modern standards, to carry foot traffic and carts. The modern city contains a complex hierarchy of transportation channels, ranging from ten-lane freeways to sidewalks. In the United States, the bulk of trips are carried by the private automobile, with mass transit a distant second. American cities display the low-density sprawl characteristic of auto-centered urban development. In contrast, many European cities have the high densities necessary to support rail transit.

    Modern cities rely on complex networks of utilities. When cities were small, obtaining pure water and disposing of wastes was not a major problem, but cities with large populations and high densities require expensive public infrastructure. During the nineteenth century, rapid urban growth and industrialization caused overcrowding, pollution, and disease in urban areas. After the connection between impure water and disease was established, American and European cities began to install adequate sewer and water systems. Since the late nineteenth century, cities have also been laced with wires and conduits carrying electricity, gas, and communications signals.

    Buildings

    Buildings are the most visible elements of the city, the features that give each city its unique character. Residential structures occupy almost half of all urban land, with the building types ranging from scattered single-family homes to dense high-rise apartments. Commercial buildings are clustered downtown and at various subcenters, with skyscrapers packed into the central business district and low-rise structures prevailing elsewhere, although tall buildings are becoming more common in the suburbs. Industrial buildings come in many forms ranging from large factory complexes in industrial districts to small workshops.

    City planners engage in a constant search for the proper arrangement of these different types of land use, paying particular attention to the compatibility of different activities, population densities, traffic generation, economic efficiency, social relationships, and the height and bulk of buildings.

    Open Spaces

    Open space is sometimes treated as a leftover, but it contributes greatly to the quality of urban life. "Hard" spaces such as plazas, malls, and courtyards provide settings for public activities of all kinds. "Soft" spaces such as parks, gardens, lawns, and nature preserves provide essential relief from harsh urban conditions and serve as space for recreational activities. These "amenities" increasingly influence which cities will be perceived as desirable places to live.

    Evolution of Urban Form

    The first true urban settlements appeared around 3,000 B.C. in ancient Mesopotamia, Egypt, and the Indus Valley. Ancient cities displayed both "organic" and "planned" types of urban form. These societies had elaborate religious, political, and military hierarchies. Precincts devoted to the activities of the elite were often highly planned and regular in form. In contrast, residential areas often grew by a slow process of accretion, producing complex, irregular patterns that we term "organic." Two typical features of the ancient city are the wall and the citadel: the wall for defense in regions periodically swept by conquering armies, and the citadel -- a large, elevated precinct within the city -- devoted to religious and state functions.

    Greek cities did not follow a single pattern. Cities growing slowly from old villages often had an irregular, organic form, adapting gradually to the accidents of topography and history. Colonial cities, however, were planned prior to settlement using the grid system. The grid is easy to lay out, easy to comprehend, and divides urban land into uniform rectangular lots suitable for development.

    The Romans engaged in extensive city-building activities as they consolidated their empire. Rome itself displayed the informal complexity created by centuries of organic growth, although particular temple and public districts were highly planned. In contrast, the Roman military and colonial towns were laid out in a variation of the grid. Many European cities, like London and Paris, sprang from these Roman origins.

    We usually associate medieval cities with narrow winding streets converging on a market square with a cathedral and city hall. Many cities of this period display this pattern, the product of thousands of incremental additions to the urban fabric. However, new towns seeded throughout undeveloped regions of Europe were based upon the familiar grid. In either case, large encircling walls were built for defense against marauding armies; new walls enclosing more land were built as the city expanded and outgrew its former container.

    During the Renaissance, architects began to systematically study the shaping of urban space, as though the city itself were a piece of architecture that could be given an aesthetically pleasing and functional order. Many of the great public spaces of Rome and other Italian cities date from this era. Parts of old cities were rebuilt to create elegant squares, long street vistas, and symmetrical building arrangements. Responding to advances in firearms during the fifteenth century, new city walls were designed with large earthworks to deflect artillery, and star-shaped points to provide defenders with sweeping lines of fire. Spanish colonial cities in the New World were built according to rules codified in the Laws of the Indies of 1573, specifying an orderly grid of streets with a central plaza, defensive wall, and uniform building style.

    We associate the baroque city with the emergence of great nation-states between 1600 and 1750. Ambitious monarchs constructed new palaces, courts, and bureaucratic offices. The grand scale was sought in urban public spaces: long avenues, radial street networks, monumental squares, geometric parks and gardens. Versailles is a clear expression of this city-building model; Washington, D.C. is an example from the United States. Baroque principles of urban design were used by Baron Haussmann in his celebrated restructuring of Paris between 1853 and 1870. Haussmann carved broad new thoroughfares through the tangled web of old Parisian streets, linking major subcenters of the city with one another in a pattern which has served as a model for many other modernization plans.

    Toward the latter half of the eighteenth century, particularly in America, the city as a setting for commerce assumed primacy. The buildings of the bourgeoisie expand along with their owners' prosperity: banks, office buildings, warehouses, hotels, and small factories. New towns founded during this period were conceived as commercial enterprises, and the neutral grid was the most effective means to divide land up into parcels for sale. The city became a checkerboard on which players speculated on shifting land values. No longer would religious, political, and cultural imperatives shape urban development; rather, the market would be allowed to determine the pattern of urban growth. New York, Philadelphia, and Boston around 1920 exemplify the commercial city of this era, with their bustling, mixed-use waterfront districts.

    Transition to the Industrial City

    Cities have changed more since the Industrial Revolution than in all the previous centuries of their existence. New York had a population of about 313,000 in 1840 but had reached 4,767,000 in 1910. Chicago exploded from 4.000 to 2,185,000 during the same period. Millions of rural dwellers no longer needed on farms flocked to the cities, where new factories churned out products for the new markets made accessible by railroads and steamships. In the United States, millions of immigrants from Europe swelled the urban populations. Increasingly, urban economies were being woven more rightly into the national and international economies.

    Technological innovations poured forth, many with profound impacts on urban form. Railroad tracks were driven into the heart of the city. Internal rail transportation systems greatly expanded the radius of urban settlement: horsecars beginning in the 1830s, cable cars in the 1870s, and electric trolleys in the 1880s. In the 1880s, the first central power plants began providing electrical power to urban areas. The rapid communication provided by the telegraph and the telephone allowed formerly concentrated urban activities to disperse across a wider field.

    The industrial city still focused on the city center, which contained both the central business district, defined by large office buildings, and substantial numbers of factory and warehouse structures. Both trolleys and railroad systems converged on the center of the city, which boasted the premier entertainment and shopping establishments. The working class lived in crowded districts close to the city center, near their place of employment.

    Early American factories were located outside of major cities along rivers which provided water power for machinery. After steam power became widely available in the 1930s, factories could be located within the city in proximity to port facilities, rail lines, and the urban labor force. Large manufacturing zones emerged within the major northeastern and midwestern cities such as Pittsburgh, Detroit, and Cleveland. But by the late nineteenth century, factory decentralization had already begun, as manufacturers sought larger parcels of land away from the congestion of the city. Gary, Indiana, for example, was founded in 1906 on the southern shore of Lake Michigan by the United States Steel Company.

    The increasing crowding, pollution, and disease in the central city produced a growing desire to escape to a healthier environment in the suburbs. The upper classes had always been able to retreat to homes in the countryside. Beginning in the 1830s, commuter railroads enabled the upper middle class to commute in to the city center. Horsecar lines were built in many cities between the 1830s and 1880s, allowing the middle class to move out from the central cities into more spacious suburbs. Finally, during the 1890s electric trolleys and elevated rapid transit lines proliferated, providing cheap urban transportation for the majority of the population.

    The central business district of the city underwent a radical transformation with the development of the skyscraper between 1870 and 1900. These tall buildings were not technically feasible until the invention of the elevator and steel-frame construction methods. Skyscrapers reflect the dynamics of the real estate market; the tall building extracts the maximum economic value from a limited parcel of land. These office buildings housed the growing numbers of white-collar employees in banking, finance, management, and business services, all manifestations of the shift from an economy of small firms to one of large corporations.

    The Form of the Modern City in the Age of the Automobile

    The city of today may be divided into two parts:

    • An inner zone, coextensive with the boundaries of the old industrial city.
    • Suburban areas, dating from the 1920s, which have been designed for the automobile from the beginning.
    The central business districts of American cities have become centers of information processing, finance, and administration rather than manufacturing. White-collar employees in these economic sectors commute in from the suburbs on a network of urban freeways built during the 1950s and 1960s; this "hub-and-wheel" freeway pattern can be observed on many city maps. New bridges have spanned rivers and bays, as in New York and San Francisco, linking together formerly separate cities into vast urbanized regions.

    Waves of demolition and rebuilding have produced "Manhattanized" downtowns across the land. During the 1950s and 1960s, urban renewal programs cleared away large areas of the old city, releasing the land for new office buildings, convention centers, hotels, and sports complexes. Building surges have converted the downtowns of American cities into forests of tall office buildings. More recently, office functions not requiring a downtown location have been moved to huge office parks in the suburbs.

    Surrounding the central business area lies a large band of old mixed-use and residential buildings which hose the urban poor. High crime, low income, deteriorating services, inadequate housing, and intractable social problems plague these neglected areas of urban America. The manufacturing jobs formerly available to inner city residents are no longer there, and resources have not been committed to replace them.

    These inner city areas have been left behind by a massive migration to the suburbs, which began in the late nineteenth century but accelerated in the 1920s with the spread of the automobile. Freeway building after World War II opened up even larger areas of suburban land, which were quickly filled by people fleeing central city decline. Today, more people live in suburbs than in cities proper. Manufacturers have also moved their production facilities to suburban locations which have freeway and rail accessibility.

    Indeed, we have reached a new stage of urbanization beyond the metropolis. Most major cities are no longer focused exclusively on the traditional downtown. New subcenters have arisen round the periphery, and these subcenters supply most of the daily needs of their adjacent populations. The old metropolis has become a multi-centered urban region. In turn, many of these urban regions have expanded to the point where they have coalesced into vast belts of urbanization -- what the geographer Jean Gottman termed "megalopolis." The prime example is the eastern seaboard of the United States from Boston to Washington. The planner C.A. Doxiadis has speculated that similar vast corridors of urbanization will appear throughout the world during the next century. Thus far, American planners have not had much success in imposing a rational form on this process. However, New Town and greenbelt programs in Britain and the Scandinavian countries have, to some extent, prevented formless sprawl from engulfing the countryside.

    The Economics of Urban Areas

    Since the 1950s, city planners have increasingly paid attention to the economics of urban areas. When many American cities experienced fiscal crises during the 1970s, urban financial management assumed even greater importance. Today, planners routinely assess the economic consequences of all major changes in the form of the city.

    Several basic concepts underlie urban and regional economic analysis. First, cities cannot grow if their residents simply provide services for one another. The city must create products which can be sold to an external purchaser, bringing in money which can be reinvested in new production facilities and raw materials. This "economic base" of production for external markets is crucial. Without it, the economic engine of the city grinds to a halt.

    Once the economic base is established, an elaborate internal market can evolve. This market includes the production of goods and services for businesses and residents within the city. Obviously, a large part of the city's physical plant is devoted to facilities for internal transactions: retail stores of all kinds, restaurants, local professional services, and so on.

    Modern cities are increasingly engaged in competition for economic resources such as industrial plants, corporate headquarters, high-technology firms, and government facilities. Cities try to lure investment with an array of features: low tax rates, improved transportation and utility infrastructure, cheap land, and skilled labor force. Amenities such as climate, proximity to recreation, parks, elegant architecture, and cultural activities influence the location decisions of businesses and individuals. Many older cities have difficulty surviving in this new economic game. Abandoned by traditional industries, they're now trying to create a new economic base involving growth sectors such as high technology.

    Today, cities no longer compete in mere regional or national markets: the market is an international one. Multinational firms close plants in Chicago or Detroit and build replacements in Asia or Latin America. Foreign products dominate whole sectors of the American consumer goods market. Huge sums of money shift around the globe in instantaneous electronic transactions. Cities must struggle for survival in a volatile environment in which the rules are always changing. This makes city planning even more challenging than before.

    Modern City Planning

    Modern city planning can be divided into two distinct but related types of planning. visionary city planning proposes radical changes in the form of the city, often in conjunction with sweeping changes in the social and economic order. Institutionalized city planning is lodged within the existing structures of government, and modifies urban growth processes in moderate, pragmatic ways. It is constrained by the prevailing alignment of political and economic forces within the city.

    Visionary or Utopian City Planning

    People have imagined ideal cities for millennia. Plato's Republic was an ideal city, although lacking in the spatial detail of later schemes. Renaissance architects designed numerous geometric cities, and ever since architects have been the chief source of imaginative urban proposals. In the twentieth century, Le Corbusier, Frank Lloyd Wright, Paolo Soleri, and dozens of other architects have designed cities on paper. Although few have been realized in pure form, they have influenced the layout of many new towns and urban redevelopment projects.

    In his "Contemporary City for Three Million People" of 1922 and "Radiant City" of 1935, Le Corbusier advocated a high-density urban alternative, with skyscraper office buildings and mid-rise apartments placed within park-like open spaces. Different land uses were located in separate districts, forming a rigid geometric pattern with a sophisticated system of superhighways and rail transit.

    Frank Lloyd Wright envisioned a decentralized low-density city in keeping with his distaste for large cities and belief in frontier individualism. The Broadacre City plan of 1935 is a large grid of arterials spread across the countryside, with most of the internal space devoted to single-family homes on large lots. Areas are also carefully set aside for small farms, light industry, orchards, recreation areas, and other urban facilities. A network of superhighways knits the region together, so spatially dispersed facilities are actually very close in terms of travel time. In many ways, Wright's Broadacre City resembles American suburban and exurban developments of the post-WWII period.

    Many other utopian plans could be catalogued, but the point is that planners and architects have generated a complex array of urban patterns from which to draw ideas and inspiration. Most city planners, however, do not work on a blank canvas; they can only make incremental changes to an urban scene already shaped by a complicated historical process.

    Institutionalized City Planning

    The form of the city is determined primarily by thousands of private decisions to construct buildings, within a framework of public infrastructure and regulations administered by the city, state, and federal governments. City planning actions can have enormous impacts on land values. From the point of view of land economics, the city is an enormous playing field on which thousands of competitors struggle to capture value by constructing or trading land and buildings. The goal of city planning is to intervene in this game in order to protect widely shared public values such as health, safety, environmental quality, social equality, and aesthetics.

    The roots of American city planning lie in an array of reform efforts of the late nineteenth century: the Parks movement, the City Beautiful movement, campaigns for housing regulations, the Progressive movement for government reform, and efforts to improve public health through the provision of sanitary sewers and clean water supplies. The First National Conference on City Planning occurred in 1909, the same year as Daniel Burnham's famous Plan of Chicago. That date may be used to mark the inauguration of the new profession. The early city planners actually came from diverse backgrounds such as architecture, landscape architecture, engineering, and law, but they shared a common desire to produce a more orderly urban pattern.

    The zoning of land became, and still is, the most potent instrument available to American city planners for controlling urban development. Zoning is basically the dividing of the city into discrete areas within which only certain land uses and types of buildings can be constructed. The rationale is that certain activities of building types don't mix well; factories and homes, for example. Illogical mixtures create nuisances for the parties involved and lower land values. After several decades of gradual development, land-use zoning received legal approval from the Supreme Court in 1926.

    Zoning isn't the same as planning: it is a legal tool for the implementation of plans. Zoning should be closely integrated with a Master Plan or Comprehensive Plan that spells out a logical path for the city's future in areas such as land use, transportation, parks and recreation, environmental quality, and public works construction. In the early days of zoning this was often neglected, but this lack of coordination between zoning and planning is less common now.

    The other important elements of existing city planning are subdivision regulations and environmental regulations. Subdivision regulations require that land being subdivided for development be provided with adequate street, sewers, water, schools, utilities, and various design features. The goal is to prevent shabby, deficient developments that produce headaches for both their residents and the city. Since the late 1960s, environmental regulations have exerted a stronger influence on patterns of urban growth by restricting development in floodplains, on unstable slopes, on earthquake faults, or near sensitive natural areas. Businesses have been forced to reduce smoke emissions and the disposal of wastes has been more closely monitored. Overall, the pace of environmental degradation has been slowed, but certainly not stopped, and a dismaying backlog of environmental hazards remains to be cleaned up. City planners have plenty of work to do as we move into the twenty-first century.

    Conclusion: Good City Form

    What is the good city? We are unlikely to arrive at an unequivocal answer; the diversity of human needs and tastes frustrates all attempts to provide recipes or instruction manuals for the building of cities. However, we can identify the crucial dimensions of city performance, and specify the many ways in which cities can achieve success along these dimensions.

    A most useful guide in this enterprise is Kevin Lynch's A Theory of Good City Form (Cambridge, MA, MIT Press, 1981). Lynch offers five basic dimensions of city performance: vitality, sense, fit, access, and control. To these he adds two "meta-criteria," efficiency and justice.

    For Lynch, a vital city successfully fulfils the biological needs of its inhabitants, and provides a safe environment for their activities. A sensible city is organized so that its residents can perceive and understand the city's form and function. A city with good fit provides the buildings, spaces, and networks required for its residents to pursue their projects successfully. An accessible city allows people of all ages and background to gain the activities, resources, services, and information that they need. A city with good control is arranged so that its citizens have a say in the management of the spaces in which they work and reside.

    Finally, an efficient city achieves the goals listed above at the least cost, and balances the achievement of the goals with one another. They cannot all be maximized at the same time. And a just city distributes benefits among its citizens according to some fair standard. Clearly, these two meta-criteria raise difficult issues which will continue to spark debates for the foreseeable future.

    These criteria tell aspiring city builders where to aim, while acknowledging the diverse ways of achieving good city form. Cities are endlessly fascinating because each is unique, the product of decades, centuries, or even millennia of historical evolution. As we walk through city streets, we walk through time, encountering the city-building legacy of past generations. Paris, Venice, Rome, New York, Chicago, San Francisco -- each has its glories and its failures. In theory, we should be able to learn the lessons of history and build cities that our descendants will admire and wish to preserve. That remains a constant challenge for all those who undertake the task of city planning.


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Scenario.Rio.html0000664000076400007640000000667610724145723021510 0ustar simcitysimcityRio de Janeiro Scenario Button

    Rio de Janeiro Scenario Button


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Budget.html0000664000076400007640000000666210724145723020422 0ustar simcitysimcityMicropolis Budget Window

    Micropolis Budget Window


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/intro.html0000664000076400007640000002332110724145723020332 0ustar simcitysimcityIntroduction

    Introduction

    Foreword

    Enter Micropolis and take control. Be the undisputed ruler of a sophisticated real-time City Simulation. Become the master of existing cities such as San Francisco, Tokyo, and Rio de Janeiro, or create your own dream city (or nightmare slum) from the ground up.

    Whether you take over an existing city or build your own, you are the Mayor and City Planner with complete authority.

    Your city is populated by Sims -- Simulated Citizens. Like their human counterparts, they build houses, condos, churches, stores and factories. And, also like humans, they complain about things like taxes, mayors, taxes, city planners, and taxes. If they get unhappy, they move out; you collect fewer taxes, the city deteriorates.

    The next few sections will explain the overall concept of Micropolis and give information that will help you win Scenarios and design and build better cities.

    About System Simulations

    Micropolis is the first of a new type of entertainment/educational software, called System Simulations. We provide you with a set of Rules and Tools that describe, create and control a system. In the case of Micropolis the system is a city.

    The challenge of playing a System Simulation game is to figure out how the system works and take control of it. As master of the system, you are free to use the Tools to create and control an unlimited number of systems (in this case, cities) within the framework and limits provided by the Rules.

    Rules

    In Micropolis, the Rules to learn are based on city planning and management, including:

    • Human Factors: Residential space and amenities, availability of jobs, and quality of life.
    • Economic Factors: Land value, industrial and commercial space, unemployment, internal and external markets, electric power, taxation, and funding for city services.
    • Survival Factors: Strategies for dealing with disasters, crime, and pollution.
    • Political Factors: Public opinion, zoning, and keeping residents and businesses satisfied with your city and your performance.

    Tools

    The Tools provide you with the ability to plan, lay out, zone, build, bulldoze, re-zone, and manage a city.

    • Plan: Mapping systems give physical and demographic overviews of the entire city.
    • Layout: Design living and working areas, road and transit systems, and recreational areas.
    • Zone: Set zoning boundaries for parks, residential, commercial and industrial areas.
    • Build: Place roads, rails, airports, seaports, fire and police stations, sports stadiums, and power plants.
    • Bulldoze: Clear forests for city growth, build landfill along waterways, clear and re-zone developed areas.
    • Manage: Using the mapping and graphing systems, gather up-to-date information on traffic density, population trends, power grid status, pollution, crime, land value, police and fire department efficiency, and cash flow. Set the tax rate and funding levels for city services.

    But the most important Tool of all is the Simulator itself. Test your plans and ideas as you watch the city grow or shrink through the immigration and emigration of industrious Simulated Citizens. Sims will move in and build homes, hospitals, churches, stores and factories in the zones you provide, or move out in search of jobs or a better life elsewhere. The success of the city is based on the quality of the city you design and manage.

    Simulator Reaction Time

    The simulator is a very complex multi-tasking piece of software. It is constantly performing many checks, calculations, and updates, as well as keeping watch on the mouse and keyboard to respond to your demands. When you load in a city, give the simulator some time to compile its data and update the maps, graphs, population levels, etc. Some of the other times when the simulator lags behind you are when powering zones and updating the city services map after installing police and fire stations.

    The Goals of Micropolis

    There are many goals to be pursued and reached in Micropolis.

    Scenarios

    Each of the eight included scenarios is actually a game in itself, with an unlimited number of ways to win -- or lose.

    Each Scenario is a city which is either the victim of horrible planning or about to be the victim of a natural disaster. After you load in a Scenario, you will have a limited amount of time to correct or repair the problems. If you are successful, you will be given the key to the city. If not, you may be ridden out of town on a rail.

    If one strategy doesn't work, try another. There are a million stories in each city, and you write them.

    Your Dream City

    Perhaps the main goal of Micropolis is for you to design, manage and maintain the city of your dreams.

    Your ideal place to live may be a bustling megalopolis, lots of people, lots of cars, tall buildings: high-energy, high density living. Or it may be a small rural community, or a linked group of small communities providing slow-paced country living.

    As long as your city can provide places for people to live, work, shop and play, it will attract residents. And as long as traffic, pollution, overcrowding, crime or taxes don't drive them away, your city will live.

    Getting Started

    Micropolis Requirements

    Micropolis requires an Intel processor running the Linux operating system, with the X11 window system installed, a 16 bit deep color graphics display, a kernel with the shared memory option enabled, and at least 32 megabytes of memory.

    Micropolis Features

    On-Line Help

    You can get help on the Micropolis user interface, by pointing the mouse at anything mysterious, holding down shift, and clicking the left button. The Help window will pop up, giving instructions and useful hints on how to use the controls.

    Multiple Views

    You can open up any number of animated city maps and editors at once.

    Pie Menus

    Micropolis features pop up "pie menus" for quickly selecting city editing tools. Pie menus are radial menus with their choices in different directions, and they're very fast and efficient to use. Since you change editing tools quite often while building a city, you can save much time and effort by using the pie menu shortcuts instead of the moving back and forth to the tool pallet.


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/index.html0000664000076400007640000000737710724145723020323 0ustar simcitysimcityMicropolis Manual

    Micropolis Manual


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/bibliography.html0000664000076400007640000001345410724145723021660 0ustar simcitysimcityBibliography

    Bibliography

    City Planning Bibliography

    • Boyer, R., and D. Savageau. Places Rated Almanac. Chicago: Rand McNally & Co., 1986.
    • Callenbach, Ernest. Ecotopia. Berkeley: Banyan Tree Books, 1975.
    • Choay, Francoise. The Modern City: Planning in the 19th Century. New York: George Braziller, 1969.
    • Clark, David. Urban Geography. Baltimore: The Johns Hopkins University Press, 1982.
    • Clay, Grady. Close-Up, How to Read the American City. Chicago: The University of Chicago Press, 1980.
    • Gallion, A., and S. Eisner. The Urban Pattern. New York: Van Nostrand Reinhold Company, 1986.
    • Greenburg, M., D. Krueckeberg, and C. Michaelson. Local population and Employment Projection Techniques. New Brunswick: Center for Urban Policy Research, 1987.
    • Hoskin, Frank P. The Language of Cities. Cambridge: Schenkman Publishing Company, 1972.
    • Jacobs, Jane. The Death and Life of Great American Cities. New York: John Wiley & Sons, 1974.
    • Le Corbusier. The City of Tomorrow and Its Planning. New York: Dover Publications, Inc., 1987.
    • Lynch, Kevin. A Theory of Good City Form. Cambridge: MIT Press, 1981.
    • Register, Richard. Ecocity Berkeley. Berkeley: North Atlantic Books, 1987
    • Planning: The magazine of the American Planning Association. 1313 E. 60th St. Chicago, IL 60637.

    Related Reading for Children

    Fiction

    • Burton, Virginia Lee. The Little House. Boston: Houghton Mifflin, 1942 (reissued 1969).
    • Murphy, Shirley, and Murphy, Pat. Mrs. Tortino's Return to the Sun. Shepard Books, 1980.
    • Dr. Seuss. The Lorax. New Youk: Random House, 1971.

    Nonfiction

    • Barker, Albert. From Settlement to City. New York: Julian Messner, 1978.
    • Eichner, James A. The First Book of Local Government. New York: Franklin Watts, 1976.
    • Macaulay, David. City: A Story of Roman Planning and Construction. Boston: Houghton Mifflin, 1974.
    • Macaulay, David. Underground. Boston: Houghton Mifflin, 1976.
    • Monroe, Roxie. Artchitects Make Zigzags: Looking at Architecture from A to Z. Washington D.C.: National Trust for Historic Preservation, 1986.
    • Rhodes, Dorthy. How to Read a City Map. Chicago: Elk Grove Press, 1967.
    For information on city planning and related subjects, contact:

    American Planning Association

    Planners Bookstore

    1313 E. 60th St. Chicago, IL 60637

    (312) 955-9100


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Disaster.Yes.html0000664000076400007640000000671010724145723021517 0ustar simcitysimcityCause a Disaster

    Cause a Disaster

    Press this button to cause a disaster.


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Quit.IResign.html0000664000076400007640000000674610724145723021474 0ustar simcitysimcityResign Micropolis

    Resign Micropolis

    Press this button to resign yourself from this game of Micropolis.


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Player.html0000664000076400007640000000666210724145723020444 0ustar simcitysimcityMicropolis Player Window

    Micropolis Player Window


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Frob.Dismiss.html0000664000076400007640000000665010724145723021507 0ustar simcitysimcityFrob Dismiss Button

    Frob Dismiss Button


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Scenario.SanFran.html0000664000076400007640000000667410724145723022305 0ustar simcitysimcitySan Francisco Scenario Button

    San Francisco Scenario Button


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/SelectCity.Yes.html0000664000076400007640000000675210724145723022017 0ustar simcitysimcityAnother City

    Another City

    Press this vote button to abandon this city and choose another one to play with.


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/tutorial.html0000664000076400007640000004140510724145723021045 0ustar simcitysimcityTutorial -- A Walk Through Your City

    Tutorial -- A Walk Through Your City

    Starting Up

    To start up Micropolis, go to the Micropolis directory and run the shell script named "Micropolis". The computer will chug for a while as HyperLook and Micropolis are loaded. You'll know things are going well when you see the Introduction Screen.

    The Introduction Screen

    Once Micropolis is loaded, the Introduction Screen will go away and be replaced by a Welcome Notice, and a Startup Window with a bunch of buttons for cities and scenarios.

    The Welcome Notice

    The Startup Window

    In case you wonder about any of the buttons or graphics, you can get help on anything by pointing at it and pressing the "Help" key. So try pressing "Help" over the weird little grill in the upper right corner of the Startup Window. This brings up the HyperLook Help stack. Click on "Done" to dismiss it.

    The Help Stack

    Generating a New City

    Now click the left mouse button on the "New City" button. The Welcome Notice will turn into a control panel for setting up a New City, and the Startup Screen will turn into a Terrain Generator with a map and some buttons.

    The New City Panel

    The Terrain Generator

    City Name

    You can set the name of your city by clicking the left button on the "City Name" text field, and typing the name. The delete key erases the last character, and Control-U erases to the beginning of the line. You can double or triple click on the name to select it, and it will be deleted when you type a new name.

    Game Level

    The three exclusive settings let you select the Game Level. Choose "Easy" for now, by clicking the left mouse button. If you're just starting out, you can certainly use the extra money!

    Generate New Terrain

    If you're not satisfied with the terrain map you see, just press "Generate New Terrain", and you will get a new map. You can do this as many times as you like, until you get a nice map.

    Randomly Generated Terrain Maps

    Use This Map

    When you are happy with the terrain map, press the "Use This Map" button, and the game will begin!

    The Edit Window

    You're now playing Micropolis! The Edit Window, which is the main window used for controlling Micropolis, will be displayed:

    The Edit Window

    The Edit Window is where you will do the actual building and zoning. In the middle of the Edit Window is a detailed map showing part of the terrain. Around the edges are controls and fields displaying information about the city.

    Along the top edge of the window is the City Name, where the name of your city or the scenario you selected is displayed. Clicking on it brings the window to the front.

    In the upper left corner is a picture of the City Simulator. If you click on that, the Introduction Screen will be displayed to show the credits, version, and copyrights. Click on the Introduction Screen to dismiss it.

    On the left edge, below the City Simulator, is a Close Box. Clicking the left button on the Close Box closes the Edit Window into a small icon, a miniature version of the window. Thanks to the way HyperLook is designed, when a window is iconified, it continues to animate. You can double click on an icon to open it back up to a full sized window.

    There is a row of Menu Buttons below the title, to the right of the Close Box. Pressing the right mouse button down over any of these buttons pops up a menu, from which you can select using the right mouse button. Clicking the left mouse button over a Menu Button selects the menu's default item, without displaying the menu. The default menu item has a black ring or rectangle around it. You can set the default by pressing the Control key when the menu is up.

    There are three fields below the Menu Buttons, that display your Current Funds (in dollars), the Current Date (the year and month), and important Messages (one at a time). Clicking on them just brings the window to the front.

    Along the left edge of the window are two columns of colorful Tool Icons, used for choosing the city editing mode. Click the mouse over an icon to select an editing tool. The currently selected tool is highlighted in yellow. The Tool Cost field along the bottom edge of the window tells you the name of the selected tool, and how many dollars it costs to use.

    You can use the selected tool by pressing the left mouse button over the map in the middle of the Edit Window. Also, you can pop up a Pie Menu to quickly switch between editing tools, by clicking the right mouse button over the map. You can easily scroll the map by pressing the middle mouse button down over the map and dragging the view around.

    The Demand Indicator shows the demand levels for Residential (green), Commercial (blue), and Industrial zones (yellow), and can be helpful in planning your city.

    The Zoom Control changes the magnification of the map. You can zoom in or out to make the graphics larger or smaller, or press the Zoom Reset button to zoom back to normal. The animation is fastest at the normal size.

    All of the Micropolis windows have Drag Edges with which you can move the window around, and Resize Corners to change the size of the window. Some windows cannot be resized, so the resize corners just move them around. To use them, press the left mouse button down over the corner or edge, and move the outline to where you want it. The window will move or resize to that location, when you release the button.

    The main portion of the map is land. Your available land is made up of three types of terrain. The brown areas are Clear Land, the green areas are forests and Trees, and the blue areas are Water. You can build only on Clear Land. You can clear forest and extend coastlines with your bulldozer. You can run roads, rails, and power lines straight across the Water.

    The Map Window

    The other window that's shown when you start the game is the Map Window, which displays an overview of your entire city map:

    The Map Window

    You can see different demographic views of the city, chosen by the icons on the left. The type of map is shown along the top edge of the window, to the right of the Close Box.

    There is a yellow rectangle in the Map Window that shows the location of the detailed city view. (There may be more than one yellow rectangles, if multiple views are visible.) Press the mouse button down over the yellow rectangle, and drag it around the map, to scroll the view.

    Building a City

    To begin a city, we need: places for Sims to live, places for Sims to work, and power.

    You can only build on Clear Land, so use the Bulldozer to clear away some trees. Click the left mouse button on the Bulldozer Icon. Move the cursor over to land. It now points to a small square, outlining the area that will be bulldozed when you click the left button. The Trees under your pointer are now Clear Land. Now, hold the left button down and drag the pointer across the Trees. Mass destruction. Clear a large area of land to prepare for building.

    Click the Residential Icon, then move back to your terrain. Your cursor will now point to a large square outline. This outline indicates how much clear space you will need to create a Residential Zone -- a place for Sims to live. Clicking the left mouse button in Clear Land will "zone" that area. The "R" in the zone center indicates that it is a Residential Zone. The flashing lightning symbol means that the zone has no power. Place a few more Residential Zones next to the first one.

    Several New Residential Zones

    Now decide where to position a Power Plant in your city. Point to the Power Plant Icon, and press and hold the left mouse button. A menu will appear, giving you the option of choosing a Coal or Nuclear plant. For now, release the button over "Coal". The outline for a Power Plant is even larger than for a Residential Zone. Place the Power Plant in some open space near your Residential Zones. If your Power Plant is not directly adjacent to a Residential Zone, you'll need to run a Power Line from your Power Plant to the Residential Zones.

    To do this, click the left mouse button over the Power Line Icon. By pointing your cursor and pressing the button, lay Power Lines from your Power Plant to your Residential Zones. Adjacent Power Line sections will automatically connect to each other. Road and Rail lines connect in the same manner.

    In a moment, the flashing symbols in the Residential Zones will disappear, indicating that your zones have been powered. Any zones that are adjacent to a powered zone do not need separate Power Lines run to them. Soon you will see small houses start to appear. The Sims have started to move in!

    Here Comes the Neighborhood!

    Once there are a few Residential Zones, where Sims can live, you need to make it possible for your new residents to find jobs. They can't all work at the power plant!

    Residential, Commercial, and Industrial Zones

    Now you're ready for Commercial and Industrial areas; places for Sims to work, shop, and transact business. Select the Commercial Icon and place a few Commercial Zones near your Residential ones. Then select the Industrial Icon and place some Industrial Zones. Connect all necessary Power Lines.

    Notice that as you select different Tool Icons, the icon's description and its associated cost will be displayed in the Tool Cost field near the lower left corner of the Edit Window. The Current Funds field near the top of the window displays your total funds available.

    Now click the left button on the Road Icon and add Roads from your Residential housing to the Commercial and Industrial areas to allow the Sims to commute to work. Road sections connect themselves like Power Line sections. Once you have Roads, traffic will be generated.

    Roads with Traffic

    Now move the cursor to the Menu Button labelled "Windows", and press the right mouse button down. The Windows Menu will pop up below the cursor. Drag the cursor to the menu item labelled "Budget", and release the right button. This brings up the Budget Window, which lets you set the level of funding for your fire, police, and transportation departments.

    The Budget Window

    Click the left mouse button on the up and down arrows, or drag the sliders to change the funding levels. You can also adjust the current tax rate. If you have no police or fire departments, you can't fund them. You cannot fund more than 100%. Since your city is so new, you can't do much here now, but come back later. Click the left mouse button on the "Go With These Figures" button to make the window go away when you're done. If the hour glass runs out, the window will go away automatically. You can click on the hourglass to keep that from happening.

    Now look at the Map Window. You can get an idea of the size of your city, and how much room you have left. Try the different map views by clicking the left mouse button on the icons along the left edge of the Map Window. You will need this information to build and adjust conditions in your city. For example, you can pinpoint the areas with the highest crime to determine locations for new police stations.

    The Map Window

    Additional information can be gained through the available Graphs. Unlike the Maps, which only show the current state of your city, the Graphs give you a record of the past so you can gauge trends and cycles. You can display the Graph Window by selecting the item labelled "Graph" from the Window Menu.

    The Graph Window

    You can toggle the various graph displays on and off, and switch between 10 year and 120 year graphs, by clicking on the icons at the left of the Graph Window.

    Another way to gather information about your city is by using the Query Tool. To use this, select the Tool Icon with the magnifying glass and question mark, or hold down the "Q" key, then press the left mouse button over the map in the Edit Window. You will be shown a window filled with information about the zone under the cursor.

    The Zone Status Window

    Now, let's Save the city to disk. Use the File Menu to select "Save City as...". You'll see the Save File dialog. Near the top of the window is a text field labelled "File:". You can select a directory by typing its name into the text field, or by double clicking in the scrolling list. Then you can type in a name for your city, ending with the ".city" extension, and press return. Your city will be saved to disk, so you can load it later to get back to where you are now.

    Save File Dialog

    To load a city, use the File Menu and select the item labelled "Load City...". The Open File dialog looks and works almost like the Save File dialog. It will start out in a directory named "Cities", which contains some interesting cities included with Micropolis. You can load and play any of them, or navigate to the directory where you saved your city, and load that again.

    Open File Dialog

    This is all the basic information you need to run Micropolis, but we suggest reading on. The User Reference section explains in detail how to use each program function. Inside Micropolis explains the inner workings of the simulator, and gives some brief hints and tips for using it. There is also an essay on The History of Cities and City Planning, and a Bibliography for serious City Planners.

    Have Fun Playing Micropolis!


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Editor.ToolName.html0000664000076400007640000000664210724145723022151 0ustar simcitysimcityEditor Tool Name

    Editor Tool Name


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Window.html0000664000076400007640000000704510724145723020453 0ustar simcitysimcityMicropolis Window

    Micropolis Window

    This is one of Micropolis's windows. Press Help or Meta-Click on the other controls and graphics for more information about them.


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Ask.html0000664000076400007640000000666010724145723017724 0ustar simcitysimcityMicropolis Query Window

    Micropolis Query Window


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Plan.Veto.html0000664000076400007640000000666710724145723021023 0ustar simcitysimcityVeto Plan

    Veto Plan

    Press this button to veto the plan.


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Scenario.Use.html0000664000076400007640000000673110724145723021503 0ustar simcitysimcityUse This Map Button

    Use This Map Button

    Press this button to start playing with this map.


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/README0000664000076400007640000000634710724145723017202 0ustar simcitysimcityThis is the documentation for Micropolis. The index is in "index.html". The other html files are help files, which are not finished yet. === Micropolis, Unix Version. This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . ADDITIONAL TERMS per GNU GPL Section 7 No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees. Any propagation or conveyance of this program must include this copyright notice and these terms. If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts. You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program. This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU. micropolis-activity/manual/credits.html0000664000076400007640000001070410724145723020635 0ustar simcitysimcityCredits

    Credits

    • Unix Implementation, User Interface, Graphics and Multi-Player Game Design: Don Hopkins
    • TCL/Tk Scripting Language and Toolkit: John Ousterhout (Scriptics).
    • HyperLook User Interface System: Arthur van Hoff, Doug Scoular, Don Hopkins (The Turing Institute, Ltd.)
    • Original Micropolis Concept and Design: Will Wright (Maxis Software)
    • Contributors to Design: Don Hopkins, Arthur van Hoff, Jeff Braun, Robert Strobel, Brian Witt
    • Graphic Artwork: Don Bayless, Will Wright, Scott Martindale, Don Hopkins
    • Documentation: Michael Bremer, Cliff Ellis, Akila Redmer, Tom Bentlery, Will Wright, Don Hopkins
    • Sounds: Will Wright, Steve Hales, Don Hopkins
    • City Scenarios: Jonathan Trachtenberg, Brett G. Durrett
    • Special Thanks to: Will Wright, Lucy Bradshaw, Upmanu Lall, Arthur van Hoff, Dug Scoular, Marcel van Vuure, Bob Adams, Carol Adams, Rafael Bracho, Josh Siegel, John Gilmore, Tim Niblett, Maxis, Dux Software, The Turing Institute, HyperNeWS Fund Contributers
    Software and Manual Copyright (C) 2002 by Electronic Arts.


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Head.Demand.html0000664000076400007640000000666210724145723021240 0ustar simcitysimcityRes Com Ind Demand Gauge

    Res Com Ind Demand Gauge


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Editor.html0000664000076400007640000000666210724145723020436 0ustar simcitysimcityMicropolis Editor Window

    Micropolis Editor Window


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Graph.Dismiss.html0000664000076400007640000000667010724145723021662 0ustar simcitysimcityDismiss Graph Window Button

    Dismiss Graph Window Button


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Budget.Continue.html0000664000076400007640000000667010724145723022204 0ustar simcitysimcityContinue With These Figures

    Continue With These Figures


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Plan.Goto.html0000664000076400007640000000673310724145723021010 0ustar simcitysimcityGoto Plan

    Goto Plan

    Press this button to scroll your editor window to the planned location.


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Editor.Options.html0000664000076400007640000000665010724145723022065 0ustar simcitysimcityEditor Options Menu

    Editor Options Menu


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Map.html0000664000076400007640000000665410724145723017726 0ustar simcitysimcityMicropolis Map Window

    Micropolis Map Window


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/File.OK.html0000664000076400007640000000662410724145723020375 0ustar simcitysimcityOK Button

    OK Button


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Help.html0000664000076400007640000000665610724145723020103 0ustar simcitysimcityMicropolis Help Window

    Micropolis Help Window


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/manual/Evaluation.Statistics.html0000664000076400007640000000662610724145723023450 0ustar simcitysimcityStatistics

    Statistics


    Micropolis, Unix Version.

    This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright © 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org.

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    ADDITIONAL TERMS per GNU GPL Section 7

    No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees.

    Any propagation or conveyance of this program must include this copyright notice and these terms.

    If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts.

    You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program.

    This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

    micropolis-activity/COPYING0000664000076400007640000010451310724145723016072 0ustar simcitysimcity GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . micropolis-activity/__init__.py0000664000076400007640000000000010724145723017132 0ustar simcitysimcitymicropolis-activity/README0000664000076400007640000001370510735227742015725 0ustar simcitysimcity======================================================================== Linux Micropolis for X11. ======================================================================== Micropolis designed and implemented by Will Wright, Copyright (C) 2002 by Electronic Arts. Unix porting, optimization and TCL/Tk user interface design by Don Hopkins (dhopkins@DonHopkins.com, http://www.DonHopkins.com), developed for DUX Software under license from Maxis. Ported to OLPC Fedora Linux by Don Hopkins. ======================================================================== This README file contains several copyright notices. Keep reading. ======================================================================== See the file "COPYING" for the full text of the GNU General Public License. The following copyright notice applies to the original source code of Micropolis (in src/sim/) as well as to the X11 Tk port of Micropolis (in res/*.tcl), and to all of the non-text files in this source code release, including: cities/* All loadable city images images/* All graphical images activity/activity-micropolis.svg Icon for Micropolis in Sugar res/hexa.* Map Graphics res/snro.* Scenarios res/sounds/* Sounds played by the game res/stri.* Text strings displayed by the game Micropolis, Unix Version. This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . ADDITIONAL TERMS per GNU GPL Section 7 No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees. Any propagation or conveyance of this program must include this copyright notice and these terms. If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts. You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program. This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU. ======================================================================== Some parts of this software distribution were written and copyrighted by other people. We gratefully acknowledge the authors and thank them for their generosity in sharing their software with us and the world. Such software includes: res/dejavu-lgc/ Font for use in Sugar Micropolis http://dejavu.sourceforge.net Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Glyphs imported from Arev fonts are (c) Tavmjung Bah. src/sim/rand.c Random Number Generator src/sim/random.c Random Number Generator src/tcl/ Tool Control Language src/tk/ Tk X11 Window System toolkit res/tclinit.tcl from TCL res/tkerror.tcl from TK Copyright 1988-1992 Regents of the University of California Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appears in all copies. The University of California makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. src/tclx/ Extended TCL Copyright 1992 Karl Lehenbauer and Mark Diekhans. Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies. Karl Lehenbauer and Mark Diekhans make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.

?d_'$]',&  /0s*UUUV$"6.'"3276?3376#"'&7#"'&767! >>&i(*ddY862ML]87*%@ne6aFFN9[jl`-SPvogD@ED~w\`VNV8`32767!!7#"'&'p'((+|RRZC RYYp#1 XYn2332767!!7#"'&'K%)(*|SRB!QZYq#1 XXn23\F_`32767!;#"'&?#"'&'')'+|SQZB5[*MM'RYYp#1 XY\vyߢl23V{&'&#"!!67632&)'*{TRB QZYp#/ XVR n23QF{&'&#";#"'&7!67632'((*}RRX4\(MN&D RYYp#/ XY\vyLn2383`%!73676;#"*I)I'xv*^(,Iyv.1Y`736'&+7323!K^)MN'K*I1.vyY` "27676'&+!!2!&'&#Q)) RG.'HUW@@m6%%^R!#Dv IH g`JKoHG!0/aGj` "#327676'&'32767!#!!G.GQ)) r!D.,.G?55;b'&pqCB HI Ga/0!GHoKJ`'F/{=&'&#"#"';#"'&?327676'&/&'&767632./_\]U\02 ;V7GH22 \(LN&# Wa`i^54 `7GI}}Z`_=05+. #PPZZb&.vyI490 QQVVF#"+732676763)D! $uv(8\TlkDRwv\WXNXY%WF!!!;#"'&7#%8B7L-4\)LM(-`>\vwL`*#!7#&'&'&75#73!!!!3276"MZYZb'3F'"UD qUCV :*dI&xJb./!*wp[a3<#&V.`%27676'&'!# '&76767#7!NR.B--JL72"F1)-+MX^"ELQskXWWXksTH;lpAz`#'&7!?27676'&'7=+",{OO(sDs+j\R>;lyxl 4aXksTH5`)!!4s~Qb`` )!!!!##`#1``w)!676;#"~abb)eRU"ʻKJ:Kb`!!!bOPRS`Yx(F`!!;#"'&7!7!o,) u*MI-~`~ .vtfsU`!3676#'7!7!276#"o,&-u+vU.`+( f$0PHb`! !!!"'&'32676'&+1-o,=Hl:4'ged_3X[[]ACN !qfst%)6jcf54&Hb` -&'&767676'&+7!!7#7#$!2O Y4%4C+-o,=Hl:4' ~84N}A U9J*4N !qfs %( #0l327676'&#"67636!SaA (EHJJM4JLLؘ`&(mWrLG`Br+*#Ӆ^^D!&'&76762&'&#"3WKr(%أFF?4@BDHm? &9 ^ׅ#+rB`GLr!'"'&'327676'&#BWKr(%أFF?5?BDHm? %:3^ׅ#*+rB`GLrUi#%32767#'&76762&'&#"2'FHKJN5JLLؘ`&&٣EF?5?BCHmA`Br+#Ӆaׅ#+rC_~ +27676'&#"67632#"'&67632"'&dfDFvxgg,䅅-,醇 *)00 Qa6^^aaaa5''''56L&&8F`2{/%7676'&";#""&7>7&'&76763 (y_\ =HzV79.'jo'kt>C 43r\'(uuxb`]Rd#$*,"%'<:('殭p?@aGH֜/%#"'&76323676;#"1&'&#"3276?#7!vfhjkss,.)ru*\T )HLLP_`?>'""&e2rv\71YXYY 4`DD$!!!3#+"'#5&%3"'"3276IC3B%2h)bvf 54*~8^ S'\+ܐ0cvL9.Lu` !! !!eFFW8RBLOe^-8i`!!!F3`BVr'%#"'&763273676;#"!"326&TXXi[\.-j1)qv*\Ug8Ogg8Pc..\crv\!@$327676'&#"676323#!7#73SaA (EHJJM4JLLؘ`&(m"!rLG`Br+*#҅^”^D$3#!7#737&'&767632&'&#"3E!!Kr(%٣FF?4@BDHm? &9v”š^ׅ#+rB`GLr9 $'%26&#"!!!!#!7#"'&7632g7Ogg8OiDLm+,Si[[-.hHHgga@XLc\/.JCH] ?%26&#"!!!"'&'32676'&+7!!7#"'&7632;g7Ogg8OiDLm+;Jk:5'gee_4X[[\CA+Si[[-.iHH@XLN !qfst%)6jcf54c\/.'> 3:=%276&#"!!367632+'67!#!7#"'&76323276'&gEE8Pgg8((iDLl,*)~:-5 >Si[[-.iHHy#!)g`TT@TTXLu78878c\/.9GH4-G.#"#"'&'!"'&7#3!!676327327676'&/.767!30`V[21 ‚)V9490# %NNFH$,!7676;#"+732767!"'&7#3!38/ kk(E $vv)8\*'A@%S,7kT SNWXDRwv.+vXY>b`%N>s5?J!676!2.#"63 7!"''67&'&'!"'&7#323276#"!;&766L"!OJKG39|GZ[|4]  L5%'@@&R-7C)7 uJRS(»20WXcG 99^G%@.9XY>_9K%NYF0:#"!3!67632+73267676'&'&#"!!!#376763)D! ?ZZZcFE(s(wv)\UW *eIHa,klDNb./wwjyv\77#WV``NWXP$6&'&#"#"'&'!!67632327676'&/&'&P/_\]Uc*2;U7DG dhfhCm(H}Y=U_`h_54 `8H&=00+. (KPZZ"(P1V5390Q* !!!!#!#BMh+-e[L`D$ 333# #333# #$ "!=!!"sPTQ PTQ 7#!#!#!#!GOSO3ENSN4>)>)J (!76&+732!32767!!#"'& '4\)MM&JxDG )eII`BjZZZcFEj܇\vynogn#WV'Xb./wwF9 5%!;#"'&7!76&+732!32767!!7#"'& D&4\(MN'&4\)MN'JxDG )eHI`BZZZcEF܇\vyV܇\vynogn#WV'xb./ww#?676'.#"#367632D )&A.-6Ϛ<999?p..>S01Ug7BC%#?676'.#"#676;#"67632C (&@.-6lKJu`; 889?p/->S01Ue}CBKL6BCv 3+7327673#kIJvg$:~BCK\+z&'&#"#3676322ZP433m488H d 12\sg>,{327673#7#"'&'LO433l4oH G 12\!g>8?327673;#"'&?#"'"'_O442k :`v242qH G 12\!LBD}[=8 !#327>'&'3276?3#!3 --4K,o'!"%> FGnR|(6')>Z*)s`P 333# #` "!PTQ)933+73276?[cy;?=YxA4 WRi*** X!34 X`X!#P22`m#7[ڬ@5m27>'H#Q1))0j=<)YZjt'&l&'STTS X"'&6763"j=<)YZj0)*tSTTS'&l&'P327676'&#"7>32#6|>( -g.`0/aid?gDp18@+'6%@vJyQ5:#&'&767632&'&#"3H1i1LZi-,(**+/gD( &}8d5QyJv  @%6'+@S"W% %rr("+7-7+Aʳ=|f33ÅZϙ|F|Af# #[Ι2fD{f3#'#줠ٲff#373꥞۱x#ab+Xwqf!#uff#fx[#ab+EAq-#ox!#uo'`!!,vqw|u`!vq|&!`{L& `|L!733 k y00 7!##  y00 #7#73733''!'& lݼݼo#!7!ko2F332673#"&5465NHI]~F AFGI|y;13#,1ST #"&546324&#"326SkllkyL:3232673#"&<-"/ ~vU <"/"/ ~uT6T%E<+C>f3#3#%ʜfx2%7;#"'&7<^'W3,s87o[+jf '#7'373t:Ză=XĂWWVV@L 7673733276.&!޴cV zv ׂ3SFFFZ~3#Ι3&'&#"#"'&'7327676'&/&'&767632>:<7;6$/0UV@ACD9>>B>! >#0/ON:<>  -,`d32  .-\d00 373#'#dn2:#&'&767632&'&#"3H1i1LZi-,(**+/gD( &}8d5QyJv  @%6'+@6#!7r"tм#!7!r!6t4#!7!lr!lthh#!7!6r!t4_)7!3"ةtp#qq8Wf3#3#zBbBfx2"<G!'&'&#"#>3232673#"&,#/ ~vU =!/"/ }uT6j70mv" 61mv"fC1fv6f,%91NXq1MA  hF6; 11H;1j1d,"#7676?67676'&#"7>32[ 9!%; STL`,vq2! 1%+&#t^Y.$'$ <>Df6Lf6#MMDe'Vf###mfxxh#']62F cX!3X*3727#+.mmz#3&7+ml.+zDf!#LfRBCTBvra#7373#u! aU#33 a !+rCn!7!#D!a 7326764'3#"&4;#7iM0YR2&;1'M(7^)s{63k"3"'&67631))0j<=)ZZj&'l'&TSST73733! !h#7!##!!  #73733##! ! b7!!!bLF> '+7326?''xv)\U'yv\F %!;#"'&7D&4\*LN'܇\vy M-C~M6Cj2-F!#$oDzfosfc[A#[NND#A#7##A! Avv@#"'#"'&73276732767*y/:`+D` DH$E?&@FF0:mnB]?T@v= Z!0?/A!73"C!۾!7!7!B!!B!Raex7!!"rx7!!i"':TQ^^eP'RkQJqsM15SA!7#de#))=ncI@67632632#6'"#6'"d*x/:`+D`EH$D@&@FF0:m-~5 '7'77a^]a^E!'&'&7>;7"+2676'&<5z ?3z)#zSR!. zRRT: ' f f"fC1fv6%91;' ljnWV?miI#7##!̢55xx,F2 !7!7!7!kk2Z#C3#3#fBbBtxc3!#!O/*>f+#7&#"#>56763273327673#"'&+E~r/ };3232673#"&3#3#(-"/ ~vU <"/"/ ~uT6"T%E<+C>C" t t( 7!#'73!'3g|SzSy(͌T#7?'Ku!t#";#"&>;2R 81jy)kM67L2 '732+732676&#jy)j0S 71짚L76M;%1I_ kj :PO7#'&'&#"#67632327673#"'&{P & N6J rqd6g{O & G 01Y2e5*=ZG?ϩ66юcq9ǗP^g) !!6767654'&#"!!&5477Qm<47&, *@" \74 7ΗLS8BUVUB<#{FO6&=k' reutk' ru'Ff&3 2f& H7[Vf' 9N#f&; Vc' GFy)7!;#"'&'#"'&47763276'"273>I'\; 601H*3{Ƀw xw!" 9A\\]([Z쪃zVT`!!&'&+732JFDKK+ >)=|5PVXJ $ 5&!"! '&5767&547!232767654'&'&gb 0yW7?a8t30K ,egKK "2X(FbS F?I񜝝p52 @uDF8W=6XYZ2?>1L 2{( 4767&547>32.#";#"327V`Erѝ*2EF8@Njo'jtAM`W,cH+0 #)++;&-G.IN8:V"#727654'&# 47!!p@,^^'?#5 Ts-t,Y^Ba)0WX'&%7@< [V{!>'&'&#"!!67632_G )eHI`BZZZcEFn#WV`b./ww4$ %32767654'&#"  '&79POl@*,+]^\>&[X3@]7@^KJ-W@ED9a~}0oNA`327#"'&547! 23!<<7c BjJH #m)Dw8` !!! !KB9xf89R`Au+'&'&+732!! Ue)HNbMJP<LT`w~`!!4'%"ȂBzGS`J("įt` O0V- %$!2#727654'&#$47%&54767!!XI(B-)kD+^^'?5>u-t cA`*0WX""&%T*/eP +B{R`!#327#"'&547!!#-X 24!;<7c o` J%$ #m)Dw`V~$% '!7>324#"276765y`g1GH"i>-gGF )EE :\PazUTA2UTTBdVI{(& #727654'&# '&54776!2pZ[ |?, ^_(>$5aa 0bWX0']@`*0WX'&%wxCM>C`#4#"327676%#! '&54776)ajGG jGF  1xU0UVA5UVBGNMOȜoFO_`!!327#"'&547_-A-X 23!<=7c o` JH #m*Cwc`!654'3! '&547!3276]KX$ 7JL B_`j3q.W_-89FīLK/6@Vkj&2!$477634#"676&hUW5JK0'54#NETs,5%F/jiJX@V5bFRTU8Hnxa`V`!;#"'&/!&'&+732UI61d(IH#I+e)vLL$wO6JK-RFGV`67!!$47!!g*\B]\6KK]B\ N@d @V5oM[C8H`=`$! 47!32!326'!! 54R-7YfLB&97,\ gsub|(_B;FD[1&;jrc1&GjBf& pAcf' G=f&K SHU$ " 7676! '&76! 3276#VlhBTހWD<9p 7 "3y\Ji-m~`zUt]:% #6'&#"'&%6!"'&3676`0F!D:;EUOJLi_A/.lCeJ\R³#G BlO}վUu!6'&'&6%6'&Z?ih_q27cpk-4]JHˍUxT4!0u81R*bf'S uk' riuS`VN'7676'&!&'&767!&i@Y :GGG]z/-oI@IB^-/Pi'a Ac.At,ny }a}y Y,tA=w`'7#!#! 547! !32!32654=\,,V gsR76YfLB&97ZQJID{}}B;EF@\^c/!%76#"'&767676'&676%&6327D*Ȼ݅e3] J4K} tO3e3]K5J} Yj\l<~Pq' |P $ 9l<~Pq' P'kV!"327676'& !&'&76! nn*(@@on()?AIId?@CD'@?ۖق낂삂^-jkdΌdV{ "327676'& !&'&! kGG*)kiHF))PIJJw00]00k{UVVUUVVUZ#`8`oV""#727>'&# '&76%![()TOp84]zZb[TL&eFfVm`""#727676'&#"'&76)?Z?D%q9 fk' 3 '&7 6'&# ;z.ThR|E4x-&T`BCNP&#"327676#"'&'&'&54767676763267!"'&#"'632327676545Ih. &&./&^oS)N9;/  +-;LaxbrK6XeE ŘcK9Gb7fXB^\L"e  D8( $O%+AAC4D&0M`ds//.#AL.#YIX>V1%32%! 67654'&#"!676! ]u7G6d,6plh!Vg)h $ eǾLlR@P|Dno39ӻV{%327# 67654'&#"!67632cEx)T*0`gFEVu]DznTQU<.6F.SlT&*/!'27&#"6763267632&'&#";!/l4'cF!8%$'4B#d|5%""8 F&372%2#1b0> N&K(N 0<1#{/%3'27&#"767632767632&'&#";!7R,20;* !-1fC-*:!,##ɞ9Y%33%9/&:67632! '&5477676!2767#"2767654'&#":inYI 2Éb7D>6'$pzwlHrLJ /rtKN 0D8/xAGߤpJW7x _VTTC6R3TUVA4T4UR&867632! '&5477676!2767#"267654'&" 6t_cM= 4xR6A;smM$t\hanb0h (FG *D8/sGNߤlP_7x _TI9L0TUVG8M1U*V#7#!##!!JܧJA[A`[uNUm#7#!##!!lAAN@A@_p ppp;c+'&767676'&#"67327'$767$}K5K]3e2Ou@ }K5K]3e2Ou `| 'qP~}TjknU{!%# '&76!2&'&#"%32767W{o}|avjR,6jaOR1' w~imJ. !?@qr~! {!'3267%76'&#"76763 !"'0.Bbi~'. ::au=,Wtv}|aoq !~rq@?! Қ&VB7&& !!!# !,~W+DQV4` '!!!!nZd,N V~ '"276737676#"'&'!!!7vGF8))EE8"]t1uf^1-iII12R!wUTTUTT@~' /.bpp!'327676'&#"6763 !"'&6SXXg)(SSgcdm6ilmqO>>qbcR5I""脄""I57B7'yz&yY~&k' uu&k&( ru|f'%!#3276?67654'&'&#!!!!!!2y0F36lDB )o493B0֬H-銊#CC7 ###wKxDS&k& suJG# '&547!2&#"!!326r>Pޭ6%]2oіXeeoˍx m6&,&`k& ruf- 327654&+!32)!6q!Hnqc R` 2e9P\™7=3\8#/(A&{ 27654&+!!!32)!! HnqA}Zcc[c Ro[o9P9™7=3yY!!!2!654.#!!!92B0֬G-P0:)owKS5.-6'&k' su&k' uuk& xuB !!!!!!HZ[)87*N+A$&$327654+!!32)!3c1}R R\uM:=3& %&3!!'3N!!!3!!!3>9vpѾl78kejXp#[NAdE&(u3!!#!#!!3!rne0Kаnos0oc[9Gyy9(3267654&"6$3 !"' 7654&+z`D1AT-Q4XSgv}[]76!!7$&547%bibh[F 10pNVqU/Vr/AJAK;B  )!!!3!pZ[kNN!!"'&47!3!!Kd*H.P[0UHn[:uKSz=x+& !!!!!!ZoZ[#+NB3!!!!!!!l8Z[Z#ANNB327654+!3 )! c RD\7=3&P'&327654+!32)!Zc}R R\uM6A3!654&#"63 !"'3267!5]6Or>.ޭ6%{ mݍ5oЗXd_o5x&!)!36! ! '&547#!"327654'&,ZiECDg?Hvi)'A*(Azΐ_md\O\abOe %3#"#"!6767&'&547676)!Dmn&bU::EPDCKz0 & ?Xf :-))p?@-_=T.4cc+f{D,W* ! 5454767676%676"2>4>/ !Lr.5 GGw"Վ(BՍ({E E T":‚0)' "0O[BA8F`"327654+327654+!2)scv|WDD/J9We K]~^F6h}S9/#4`!!!&F`}M`!3#!#3>#!g]21^6m?Ap.`&i,B{H`3!!#!#!!3!5 BRSB 4KB''U V{%32654#"632!"'32654+uz-[H"βĘ0~~F5XE0G8h!33 #8^UCt4` !!!hgCi`Q`T4'8` !! !!B9xf>`Aa`!!#!676gMT-9*M``%I$uY4` !!!# !sEspap`0{\4` !!!!!!CK?KBSS`V'B{R4`!!!!`}V{SD/{F>`!!!!e'`}F`\UV *7"327&!632#"'!#"54732"3267654&; ?;`CY)BTl.غRSRl-)R`DY*`; ?wBA@JJIKVI*ILWIIJJBA@`[Q` !!!3#!B@B]2{```!;!!!"'&47B#EQCL;' `p^,Y:;8b` !!!!!!BOBOB```Q`!!!!!3#!BOBOB^1```_`%327654+!3 )!}Kt=W~]W'/8R`&8`%327654+!3 #!|BKt ~]W(.{!54& 63 !"'3267!d3\03bTIb$>qCM>%cU8{%!36! ! 547#!"3267654BN4?xT1Ok i `?oFP >{A5֫B5e` 3#"!#"!>7&5476763G/GR)931H"CZ.?j<ppv+d*7a_6!%KJBm'CB1'j4F%!!!63 +7326764.#"!#73EB&#@+f'칡*7\UI;)eRً$rDS\\6',4Zm&vxA&{!327# '&547!2& !BTi3~\ 1j3oQc>qCM7>bK {V8L81'joFM`!!32#!#!676327654+hĶ4LU-8*Mv|v`Wu(.`%I$uY7~^8t`%32764&+!!!32#!!!$v8EvBK@KBK̨ 4SS~66VWu(.'4!!!63 !64.#"!#73EB&#@+iL;)eRً$rDS\6',8m'v4m'CF'Q` !!!!#!B@B21``<<3276?!3276654''!#"'&'#"'&547667!!\^AD*V+[aBF0&.S!% H]] H`<$\{ GJ tmiqU5imw uk=9AFPEf^^l FkC=`K!!!32)!!327654+Z3vX R4 ՠupR6>3$ѻA!!!3 )!!327654+B8<.'s=X-5|'-I~^&H+32767# '&#!!3676!2&'&#"!>Vhcdm6jllq^oZcgOPpbcV6TWXhK-Y4yb""I7ѯ7I""Lm8{+!!32767# '&7#!!3676!2&'&#"tf*#=KIHC3RPQN~d +MBL+=PIKG38?>F[2L4W1yF`Mw2W17'!!!Ј,[q[WW H+QHj` !'!!!'">a u>cIed6f`6p7% 67!!!!!!!'!Ј-oZd[l[[qWW9+QH H4`'!!!!!!#'!IePCP< u?>ap7w>`=6d6f!)654'&'!!767! !?/*OSRR@x)?z!Qh)AUGSM& Hkr3 3r_`!!767!!654'&'#Sk0Vk&s]:V #687;.TM'<'MoFO8/X71:/U%% !!!!!!!654'&'!!76*@@oZd Qh/*OSRRAw)@&9 3r_mSGUM& Hl#4:`$!!!!!!!654'&'#!7kbPCP™&s\;U "687<.S1ʋ>`='MoFO8/X71:/UVkX_232767654'&+732767654'&#">3 #"'&#"32&'&#"'&'&547676!3738>JTK?6C+HH*6rS[1latWLM4%%G(0-( KYV^ST%TR[Zc71TR|С6 5-X =+5-.]<%/*) `I&,TS"(_CV&)sq2 9 (( C:a',WU-t[fX_%#"'&#"32&'&#"'&'&5476763232767654'&+732767654'&#"767632#373r:$+#NXFSH HFLMMc98\EFN"6:04 -1tk(pi29&+U6;*UTRN\G>=fi,꥟ܰKK/ ?43f'.nU?()2 /!%",##  H7h"a@?H2E"Rx<*V`JHh@{2#"'&547"!&!26wV1xV1\ nwxBx{oFPȜoFO8BB Su!632.#"!\Tk177g:c4 rmF{!>32'&#"!nCroW/*4 Q.R`qVul###!632.#"!#LnY}j\Tk177g:cl  i4 rmFf#X-P"32767654'&7! '&5476767&'&547676%&32767654'&ݑ6DXV3B{lY[D1&ƌned70te7T 64xaQ2>vnN-;;:nL.:YO"&UU)*_D_$'rqqY+0^_*VJCldE %8< 7)&:0wI&0(+4H%! '&5476767&'&547673267654"32767654'&VRNM6%'qU UWs/!9,* $SQha??*a`>=)i0;',~VU))`@W).rqqU28^_*)U:M$)oOi/M6"0`Y,;;n#@(;;:n$@(:Ip%I23 !#"'&'# '&54776!367"&'#";676232767654'&+?JQEm:Q&!FQm:EQ%"$H5Qll&*BR&LRkm&+BQ&!S]""R^N!"wxNBtLv!!vxOBtLw"?{+V#";67676232767654'&+"'&'73 !#"'&'&'# '&547676!376762/lGH (l, $; 1iGF 'j4 $< 4hY *5 $;1hZ (0 %; wTVA5N3U   UV@4M3T Պt7;윉  t7<霊 <#x==}#<G H#'##'##'3276?!3276654''!#"'&'#"'&547667!6"J6"J6C!\^AD*V+[aBF0&.S!% H]] H`<$\{ GJ Gxxxx-miqU5imw uk=9AFPEf^^l FkC= 0#'##'##'! 47!32!326'!! 546!K6!K6B"R-7YfLB&97,\ gsxxxxub|(_B;FDIVF!!!# '&54776!2&'&#"h}K+t>PpdbV6TXWh' ;R#3U`f7I"";6~]=V!{%!! '&54776!2.#"r wKsS0OJKG48}G[Z"6\lBJ20WX/(S7T 7'77''''7'77'7_r~qr~s}|}}~}}|}}~@3"'&'&'&54767676763!67676762#P 8" 8f      rqF767632#6'&#"qXR@3&)IX 0LL;b"H#%~!#3!dFa\nn~7!73#7aF\npnQl+D++++S+ i+G i  T- #)/#733#'7%'%'77#%73%̪ͪGaaX(fX(f0"U0"A@¬@yoyo zV!zRR&Vhk!#!!!!332673#"&5Z4d}H IG@`#{#V<7=6}4Vb %!#!!!!332673#"&546C'"shgCiN)MHI^~VQ`T AFGI|y& #2767654'&+3#32#!#737!zm9< (nA~"~!}R (~"~!Z-1]:#-¼uM6AluX»1 #%2767654'&+3#32#!#3!G*) Hu,-fDx4,7C ? ' X;s(/QX`>&4 676'&+327'7+!! .-eIE6Xu[?st)"kYv d66_c~:L~vc~V{+676'&"37'7"'&'!!67632S#)(FF)(h$$\PBMiII1gBTYYj[[.-OHcTTUTTU}/.b b./}&3!!!'6i2N4,3!3!466]F`:} !!!#3!!!2nmmu2ve3n#D ` !!!#73!!3&PNt&vN&F?&f$!2!#3276?67654'&'&#!!!!#֭G-72F46lCC *p3wKxER#CC/ ##4F `32+7326?6&+!!!ML' (vu)8\U 4\K&Fvwwv\\S`3!##!#!!3!3!hk8nos0oc[doe0K#Ayy99G`%3!##!#!!3!3!7X1ASSB 4KBK6 ''U VVo&z|o{&zTB)!!#!!!k8XPgZ_S#AL!=Q`%3!#!!!X1<>B8vga`A& '!!73! !#2gZ_J7h@NDD6J=s8`'!!?37! !'#%>B96'cfc3.`-~& 7!3#! !!#7Z~"~/S@NPg~"SS!=L8)7!!!! !!#78CF"_vyRݐ"kk-}s !!! !!f3C_<DjAaB!!!!!!!!(Zk8ooZcdZ#Ay9Q`%!!!!!!!!>CX1SSBK@JB'`V&A !!!!!!noZdc2Ny94w` !!!!!!SSCK?K&}'`V&ft'!2!#3276?67654'&'&#!!!!!|׭G-70F36lDB *owKxER銊#CC/ ##N4F`32+7326?6&+!!!!lLM((vv)8\T5[Lvwwv\\S}`HM676767654'&#"67763232767# '&'$'&54776!2&'&#"|\E?PpdbV0JfSn) 7!XR`++OEK"&kQ5>$1!(Ydf7/LAY4=.{M%676767654'&#""'&54776!2&'&#"6763232767#"'&>/*  ).!~\0OJKG.:A7PYZ )+)vyD21)(-;673,?=>;[ 63;0+n# qCM%WX3+\;(uwR?e)0 % wBo7'zmDo/{'zt !!!!!!Yk8B33C#A#[` %!!!!7!!CX2''t<yF`!!#zBlBtGE`uq!!7!!!!KJ"[i"Qf)F`#!7!!!!O/.?"BlB# N3!#! !!k8coXiyl#A%`%3!#! !!ԒX2U U5b=#Lt!!!!!!!!ZZk8LB33C#NA#[`%!!!!!!7!!˞BCY2''}O!!!!"'&7!3!!Yk8o*IF(E[ )Hc[#Aywsoe@7#9B`%!!!!"'&7!;!CX1S=:4B  !JB[V(TKh0+#"'&7!;33!!##IG)E[ *99d[oywsoe@7#E9+y`#"'&7!733!!##<:3C  (c(RKBSR!c[V(TKh0+ ټ!2!?67654'&'&#!!#d֫I-P  *nwIyFR5ohb%8KN"+676! !3267# '&"'&?!%!&'&#"RDCQXZp}6w"ca$0,~&AnB@FG78϶.NWjLF rMM7{$-676!2!32767# '&7"'&?3!6'&#"\>tr. w~eqp}0{wvr|giXW$ ! ,*V^DF!xf~~!"D0~ll0F]/&f>?;:nN_&<7o{&=&,uk' xuF')&f "32!#3276?676'&'&#!!!!YFG(71G46lCC )oZ_Swu銊#CC77#!8F`32+7326?6'&+!!!LM( 'vv)8[U \KB9xfvwwv\..S`AV_!#!!676!Z3L1Zu[1#V[A-V``%!#!#6767!C'#r :V-A^>%VB"wd&f%!#32767!!!!!0F36lDBWoZdc[ꊊ#CAz94F`%+732767!!!!!(vv*8\)*OSCK?KBwv..'`V&Vg!#!!!!!! Z3noZdc[#Vy94Vb`%!#!!!!!!C'"sSSCK?KBV'`V!"'&7!3!!!!<*IF(E[ )Hc[8k#Vwsoe@7#9+d`%7!"'&7!;!!!,=:4B  !JB1X[V(TKh0+&V!#!# !!!1Y3.#VN/4VK`%!#!# !!!C'#rpapsEsV{\`08O|'*6f-'k' ruf1'jpB{&k' xuBF'BQA{Bk' ruXA1'jYuk' ru1'j)k' ru1&jg%ZyHb`O&O'q\;4'q&k' ru41'jBk' r)uB1'jHuA{2Hk' r)uhA1'jik' ru1&j0O'qK;F'qk' ruF1'jk' zuFf'k' ru1'jB !!!!!Zk83#AQ` %!!!!!DY2'F`&Pk' ru8R1'jZCV 3#"%676;!!"'&54X@n7=!(c+dZ|Rs-0[;$-ju9+uM7$` %37#"%676;!!"'&54u,vH))  wˉKB4dD !;( zOXX;r'? $4"'&547676;!3267!! '&'#"32767pH+dY(aa \Z[8t bji3n7=!*h_HDsIDTju9S=L,P ʛ+7==-0[<".TQ@`6#"32767"'&'#"'&547676;!32767!pvH)) ><++zeMLIfD8 wˉK0mIH0>00:$ !;( 89k'u )a/.XGr/7OX&#?6==Pm̎w?654'&+732767654'&#">3 32767!!"'&543C+HH*6rS[1larWLM6$ %5X\IE \Z[8_H)5-.]<%/*) `K&+TS"'`@X,2 2&8PL ʛj#&{A32767!#"'&547654'&+732767654'&#"767632g-&BJ/?00:$tQ-1tk(pi29&+U6;*UTRN\G>=fp'"p+!=Pm̎wzTk /!%",##  H7h"a@??88Vy0)654'&+732767654'&#">3 !!L3C+HH*6rS[1larWLM6$ Y}H)5-.]<%/*) `K&+TS"'`@X,23V{1)654'&+732767654'&#"767632!!&;-1tk(pi29&+U6;*UTRN\G>=fi,CqR /!%",##  H7h"a@?H2E"ay$!676!32767!! '&547FP0ZvZ2(a\IE \Z\7uN[7-S=L,PPL ʛiUg`$32767! '&547#6767mHJ0?/0:$W\U Q 8V-A]?%`'#?4==Pm̎wwl.1B"wf)4`!32767!#"'&54?!!!!mFJ/?0':$\V SCK?K`'#?4==Pm̎wwl.1%'`VB*A _WY32767!! '&547!!pi)`aDE \Z[8tOjA43S=L,PPQ iUg\#><`32767!#"'&547!7!FFJ/?0':$\U Q''n($@1==Pm̎wwk.2:R2{7` )'!!!3fQae4`J\%`#!7!#!!!!!FPK$pe&F%&`+(V`Ab{,3>%#"&'#"7!6&#">32>32!#3267%3267%2676&#"~pW2Sn. uf|0{q/n}"kgUUW\"es DI[MOMO> f~~CD01kdkdŨŸUO..f}unLJDMm)Q{` %26+3#26+2)#73z,vf"fr#rk#9TI9X3.w"wt&:jD/{Fa32676&#%'%yt )djB9#gTax~{k"%WK}LW$&va'%#73326&+3_)>u+,aRw&x+ 9#f'aFRWJB+a !!!!!!m&F$&`+(3`2{1#"'&'7327676'&+7327676'&#"767632]&'uuNNON*25V79-(jo'jt?C 44hEPYF,VUVS?@aGH  #$*,"%'<:('$pLf`!!!!#B3B`L$W`!#"&'3267Dh/Dx:-*V/Zn` !"!8`1` !7!!'7_F8I13DdI`iC4`4`B{R{ 6&  67  ް"232R.v~~vv||vD""F@%!>76& !&67 E:E! 5S5:@JPT@TV0VX +>76&#"3267>32'#">7'7% $<!)&>Ro3F5tnmTr3I6rhK/w}HO0u|CDjKmFEE!lMp@{&07!6&#">32>3 !"&'#"%326726&#"N v~f|0zq1Yu`y:YzfUW]!l8Rkj9R+f~~CD01QWTTRVWQ:f}unѫB/F{ 4&#"!! ojkp'$/8H/ 3265!! DoilpP/8]A` !2+!32>&#!̺ nC4RFY>E`MLe`` "";7!!"'&76767&'&'!3R)) QH/'GBCWU@@m6%%^FR"#C IH JKoHG!0/a>G>`$`!3267!#"&7_Bv9TV\vCu**``vddv`V{%!323267>76&#!!#?eR)zm#/>>J4"hF.pfPl|!7373!323267>76&#!!#))))?eR)zm#/>>J4"|hH.pfRn'{#3!!#!!3#%!2676'&'67676'&@??j'ln?j$76k2?" /:,B h4@3##p]88(;YtgU&t`Y`Z8`]`%2676&+?!!!"&'[r}qu*,p,N.H%!oe2g,)*+SLi--:;[`3!!3H`5`I#`!!!!_`}]A` `!!6767!!7&'&7_BI0 iBi BIBI*p**Sw*`au2 X 2uavRRv`6767!!#E-A]?% 8"wfBD 4"3276?#7#"'&546;765654'&#"7>32K'()?)*F188@[46x$#F?;;7?GDF."%&CL]8..Ow% 0/b.O +2676'&#"367632+3267#"&@H.:./ F488Ic32WVx "!PBu5DB~**&)(=Lf]998[n430XJ73#7#"&63227676&"k|587Bvs:uB.-+,2+,\[8"3//ZZ^//ZZY5=J#"'&'#"'&?!6'&#"76763267632+3267%32767%2676'&#"GF8U99 4|EIH %%P@FHNLLKGeEDFNn65WVx "!PBu5 66:*,H@H.:./ ,+,YY9F$#' <8<77^n430K9F!!=d**&)(=$&"327654&#3>32#"'&O122M136ˬA.f?(3BAJA-.HGr4GFn932O112L316B̫/32=l|*3JA\GHr4GFn9<P[7tHED8GH4Z%2!32767#"'&5476767632'67454'&#" &&%J@HGNKIJLQQ1:RQcLK.<** =& DC|HCD8C#"CDs2>, ?Y!7!6'&#"767632#"'&73267b %%P@FHNLKKHONpoIH 66;W9F$#' VWXXYYR9FB=B2&'&7>32&'&#";#"32767#"'&7676; 1121 -/"6#$ CFCJ&*!!A-28,6664CD ,+$#7TP 0~"  01a?((C2#"'&'7327>'&+7327676'&#"767632: 2120./!6#$ BGBJ'*! B,28,6664DC ,+#$7TP 0~"  01a?((EF%4#"'&547676763273#"&'732767"327654'&1d?*1AAJC-.k!ؿ;n51/12e660Jc3J2264EDw?@?8D$#8]ߨ+*]d9BBc; 3##73{̛$@ 3%3 # #\ 6(%x367632#7654'&#"#67654'&#"#367632/<;AU11L@:()=@8T={066:B^:..QGF/0WG* bTs\6B;&+73276767654'.#"#3>32Jt_:7 $@..=|9q?n,}KR 10Us\74B+C&Z$#"327654'&'2#"&54767676N3484P23$31:NOa19ONGFm<>GGn:{G7B"!{FDC8A"!(67632#"'&'7327>'&#"4222OP=rr20.- ')/U:8"%%V-,,/ WWWW 1111 4&#"#4632GBD#$ӹ\\Z`00ZWW327653#"'&5#$BD$#ӹ\\Z0000ZWW&#3>32#"'&"327654&@ͫ.f?(3BAJA-.O122M136b\74CCtHED8F%$HGr4GFn9<3#;#"'&54767#737"4(j\1/4de$  &&H M3327673#7#"&5476VJ@%?.-={5s?V`  #00V4\66ZSd\!7323326767676'&#!7!#}'?4NMND **V'|(\/ NP ?$$.23=m99M+#"'&7332673327673#7#"&2:e33#RJFy(>32#"&'!32.#"2676&#"Ti,,׹i2/eۧT1KRMcPheSb\\c !658`%!737#737#7!#3#)H)$",)),"#FM!!+732767'!BC-$vv)7\+*wv..t #367632#"'&"27676&{578Bv99vA.-A+,3,,3\s[8\\//ZZ^//ZZ^u!.#"3267#"&5476767632u!(O&d~''H0\)33347>PPi/00fB$$ {LIH9@ Mu/;276#"&'&#"63+"#"''67&'&7632+SJ/# $''-U99N^! ' r :%P=rr2.0 * 11XE-c@0&)W6XV 4&'&#"327654'47#"&54632''7'37O./6O42$19OOaϦVM/<45X=! GGo4;;AIDD8A"!sx3aq* __dd z&,,h`33#+732767#73_edGJud#9yyv?CB(#"'&7>;#"&'73267"3276?4pCt9;uoo+,~>R 01V4P74BC3#33##7#73 6rr00zyQmm 3?'&7BH7 Nr22LDC~+73#7;#qzzHzzqqH l67!!73#7!#5JzH{rGmmqle#3#33"+1+5&7637&#"3276 k_ A?ItA!!vO$: 6:QvX7Cw*!@ 3;#"&7r̩ :^tbK4r33+7327671#ʏJKtd#: (sBCAdf3!!\ 00367632+7327676'&#"#6'&#"#3676322;;@m,,HKJt^: H ,;P=A .:*)<|065:B-,:BC}CCAmB^YGh/0Ws\6X*#"'&73327673327673##"&1<:@n,,L@ -9))<@.;)(=̪A0l;AY:BC~C//Y4hu(#?676'&'&#"+7326?367632kK -@.-"IJt^98a999>n,,>R 01U{ u@C4K{\7BC !6'.#"#367632;#"'&7&;3,=|;78?m-+I ;^u0301*[s\9BCK4CGn 33# #gH|gGlm 2#"&6";6'&+3276nm=ۈC,#,CC,WW60$==$0*00*%.!737&'&76?#7!#'67676'&Iy9K=nRzq6KnQD&- 1D#- 1`AW6WAghAWWAaZ 0ZZ0M 0ZZ0k;&'&#"#"';#"&?327676'&/&'&767632k;;96:&6"--UU :_ta 6>3q+JKtd$9y&asBCKfb,J3#;+732767&'&7#737#55hGKtd#:a#(4de#,v?CC,1w w*##7#&'&'&?#73333#3276wr19q=Q ,zy6  66@.m[74 Cm?2M6m ! 0b%27676'&'7!##"&76767#7!3) ~/0  "1, rt17<7q+-AG%n#'&73?27676'&'76&gjNr22IH C94 (w!J=XXXDC~q_71P<@/(f# #3IvOsy !!!7!O)tIX!!;#"'&7!7!h*nPI_t0/F C@uXM!3676#'7!7!276#"X)n\ Z_IrRJ6mONX-!7!7!#"'&'732676'&+*Z/C$"nmB?@; 7:9;Vh )*\j؏ ?:P|A@ <79] !327676'&#"2#"&76 >;2,.=;3)ʉ66))eflSdeG?DD<8ivwwwwv',$f{'D& k"%:82"E&M "%d8M"E& "%8"E Bo7k"Cv@,Do/f"v&q"'@B71"G&M#'BM7##G&"' B7"G&r"'z~>o7"Gz'Z 'B7'G&u' (B0' H&u' (B3' H&"( B{"H&;"(B;{"H#&oo"(c@9zBoD"H#z&k"):[k"I:B1"*$F"J&q"+l@81"Ki&M#+8M#aK&k"+jf:8k"Kj%:o"+zgn"Kz&"+E8"K9<",;"LC 33@&u& ,8p:' |&k".Cv@,8(j"NCv@,&M".8M("N&".!8("N&M#9/M# O&MLQcq2@@n+M=O#q;,&"/"OB33@&~' v</''e O&j"0Cv~@,8g"Pv|&k"0:81&P=&M#a08M{#P&`' yj18'Q&M"18M{#aQ&"18{"Q&' 18{' QBu' u2BU' RB}' p$2B3' RBu' w2B0' RBu' 2B3' R&.k"3CvL@,Vg"Sv&.k"3:V1&S&k"5:82"Un&M#N5M{# U&MQcq2@@nOM"qLP&"5{"Uk"6#: 1&VM"6NM {#VZ"6#LYCvx@,"V"Wvm' .6[' VMk"W:M 2"XXck"7:OY"W(XMc# 7OM#WXc"7O"WBu33@8c'u 7'D W}M"8nM`"X};"8Ln<`"X}"8;5`"X}u' 98nU' X}Y' D8n' X G"9CL@33t9"YM &9gtM`&Y;r&: u|m'ClZ;r&: s|m'vZ;`'jf/:'jZ;k":P:2"ZM;":M`"Zk";:2"[k";j,:2"[jtk"<:F2"\Uk"=C(@,8g"]MU"=aM8`"]U"=8`"]8"KOk"Wj:"ZZF"\f"D{p[k"A:M"$Mf{"DK4"$Luf"D$u' $' Dvu' $' D' $M' D' $' DMk"Mff"Cu' "$' Du' "$f' D' .$f' D' $3' DM|"wMf-"8&M'4(BM{'DH&4"(uB"H&I"(CN@33B9"H&u' (B' H&u' .(B1' H&' (BM' H&' (B' H&Mk'4BMf'D&4",u8" M',M' LBM'2BM{'FRB4"2}uB"RB]u' O2B' RBu' z2B6' RBl' w2BM' RB' w2B' RBMk'BMf'FHk"bCv@,Hf"cvHj"bCC@,Hc"cCH4"bduH"ckHG"bC@L@33H9"c1HM'bHM'Fc}M'8nM`';X}4"8Pun"X|rk"qCv@,id"rv{|rk"qCC@,ig"rC|r4"qYui"r|rH"qC?M@33i9"r|Mr'qiM';rtr&< uh|Fm&C|\tM"<UF`"\t4"<uF"\tH"<CM@33F9"\pFG&3FG&3pFf&3Ff&3Ff&3Ff&3Fm&3Fm&3qG&!G&6f'vf'5#f')sVf'\km&qt$m's2G&7T2G&782f&762f&7 2pf&7c2Tf&728G'wG'6f'vf'5Ff'rs|f'[VG&9[VG&9[Vf&9[Vf&9[Vf&9[Vf&9[Vm&9[Vm&98G'wG'6f'vf'5Xf'xsf'pm'tm'sNAG&;bNAG&;lJf&;f&;LNf&;Nf&;NMm&;iNGm&;c8UG'w`G'6rf'vf'5f'rs+f'4m't4m'sBG&ABG&ABf&ABf&ABf&ABf&A8)G&"LwvG'"6f'"vf'"5Rf'"vsf'"cG&GcG&G}cf&Gcf&Gcf&Gcf&Gcm&Gcm&GwPG''|v $f''Ps ?f''k*m''Vs=G'OK=G'JK=f'FK=f'=K=f'nK=f'nK=m'\K=m'WKDG'+ltG'+6f&+vf&+5xf&+sf&+ m't+Hxm's+Ff&3uFf.2f&7?2f/[Vf&9[Vf0NAf&;{N#f1Bf&ABfNcf&GcfO=f'SK=fPFVG&eFVG&eFVf&eFVf&eFVf&eFVf&eFVm&eFVm&eVG&VG&6Vf&vVf&5V#f&%sVVf&XVkm&m$Vm&[VG&[VG&[Vf& [Vf& [Vf& [Vf& [Vm& [Vm&8VG&wVG&6Vf&0vVf&/5VXf&sVf&Vpm&Vm&=VG'J?=VG'J@=Vf'JA=Vf'JB=Vf'JC=Vf'JD=Vm'JE=Vm'JFVDG'GtVG' H6Vf'IvVf'&J5Vxf'KsVf'LV m'MVxm'NFF&3F&3qFVf&OeFVy&3eFVf&.eF9&3FV9&ek& xuO&q;Ef'Ǫ%f V&GVG3727#2Gez9;m' tuj[Vf&S[V{&9[Vf&0[V9&9[V9&f'Ǫ*f f'Ǫ5f&V&6pf' f'#+@m' tuNF&;gN&;qtN&;i[N9&;tNEm&;b&k& x#u&O&q;Sf'Ǫ/ff'#f'A@m' tucF&Gc&Gqc&Gc2VG&CVG&Cc9&Gcm&Gtk&' xdutO&'q;f''!Ǫ$fwG'$;|&j?l;? fC=Vf'J[=V`'JK=Vf'JP=9'RK=V9'Jif'"Ǫ4 ff&Ǫ+)fV'B+fvG#3&72Gze-!!b53-!! .f!! .f+!! 3.+!! 3."__)&BBX!34 X`X!#R23`!#22`X-#-55`X !3!31 4 X``Xh !#!#622N23`` !#!#q22M22``X !3!32k2`^F; !!!!!7!)B)غ)/;!!!!!!!7!!7!)B)O*CB*O)<} `467>32#"&'. /.0uBAv-/01..vBBu.-0J235624IJ336633 A AoHT!!DC}T!!!!DC DC}}TT !!!!!!DC DCDD}}}oe3#,ee  #/3?K2#"&54"32654&!"32654&'2#"&54#3!2#"&54"32654&ߌNc78Nc8Md78Nc9XጫNc77Nc8魍WWUWWWUWꭍ ꪍXYTX e \ #/;GKWc2#"&54"32654&%2#"&54"32654&!"32654&'2#"&54#3!2#"&54"32654& $Nc78Nb7Nc78Nc8Md78Nc9XጫNc77Nc8魍WWUW魍WWUWWWUWꭍ ꪍXYTX`3`u`,#R`~#"R)`#3~`u)`'V)`"''V<#%#Ͷ#p'7,'"'qFc'?%'7F,6&z{   ' 7 !!!!!!!!zzyyDTDD^DNPPNt}}e}}'}!7>32!1#Q v Zg7tS"adDH3[?D>1"B:*(ǿbY9>K-dM B00_  $'5 $0ovlSPPSEFE&0j &$ 56$ 0gri&FEFESPPS##3 #|||v#"$9# {# { C|@`#3^W [ 3!!#3p)?.)qT"^; #7!!73#7qq&/&q^t&""v&"2'}"r%3!#7!!7!3#i$  cZKi;!333>7654'&X,2!5]fN_PeNS3+"&'.467>3M~Bu.-0/.0uBS1633235S#;2+M~Bu/.01--vA532336$k {g[` !3!!3BEt}0j&  }F+ `333 `33B##FRa20v  #'7!7!'737!!355f#55f#1؎؎1َ׎) !! !9;9:;::;:OJpJ J`#"#Rp+ !!!!!T4455D66144T,,*,,B !! !! !b44855p44@4444T,>,,,p,8!!!!ADCDC}1}7 0 !!!!!!!!zEBECECEDtO %! !! !#!7!3!55p44@44441nn*3nn3),,,p,\rs8rw !!!!!!DCDDnDC}}}}}8rw !!!!!!!!D1D0D1D0a) 6&"32767#"'&767632#)(DC))%lmDD$$lmEE@@@AAAAoppqpqqpz3#3#nQ 333##7!7JZ{{$!!>32#"'&'7327676'&#"2GFhiFBB?=996K54 &%N.65AߞMLKL ('&AB&& 8-"327676'&&'&#">32#"&7676328"# 89"# 0-+-_>?)Z2ed#%{|9359$%IJ$%%$JI%$ 56i{PQuv _!#!nBry6  ,:"32676&'&'&767632#"'&7>732>'&#"=%& <:K 4G XWED -1NQ "]\GFg 32?23 !!>=!!B=>BF00Gi8777jL+/45P|@??@|Pj26d+)732767#"'&7>32#"'&27>&#",.Y-_>?+--2?@ɒ#%{|;438"#+88E56iJK|vv $%JJ%${Rk !!#!5!*(؇(kۅ%%{RF!!{)F{AR!!!!{))ń{P#&'&67673T?+?@n_;:+}|}~67>'&'3`:;+2?+?@o~}|}*#?676'.#"#367632C ( %@.-6n899?p./>R01Us\7BC)T+d{C{dRTtdITudC-dC.d8T/d_C0d T1d+T2d{R3d{%R4d{R)5dPif6dif7dU%!!!!!!#"32.#"3267'G%'a-'4IOU//]T@(?M}MR`**9  9*)73Ʈ36B9*09&'#7&47676?373&'2767#"'#&+5/8d_]m!"-- -E5.0yS_^v7s`<2D'/1=SE LQ j +f%$N12>*E & B/6767#"476$32.#"!>32.#"&'*_v7t__^m5be4P\Qt5b$/D'h $N12J=78IDbǭ`e!!!!3#!#741*5!l"j..t"ݹ #!!37#737#737632.#"!!!n .. ()0SL25~@q><>)@(¸ Wz|%(=;zW80>32!7654&#"!#&'&#"!!>3273F1 Jg we81]a=Ý 2YaDL\.&&5KgnM1VH|#7@XU`_` +#7#737#73!3!3#3#!#!3'(X"("M6LIM"("L}7ML(WxJJJJ& v&^32654&##;7332654&/.54%+!!23!!632.#"#"'&'!"&5467WI{\XS7A ?Fchfg:Z:(IPާZ?xl /8D7Jggf0_T_g9U:Ĝgl((S_zQV& .(D) 64$( (91iOUMkc> %2473$ . @!)PF2676&+!.+!! 32676&/.7>32.#"#"'&mnOmCcXTcb &DZ# R[`i^j 9`8ёYm/_U\b 7#73632.#"!!!!3267/p["P} MXm^a1J\e>NN OmS^F12 F/78QL|u"H+w}WQK!!!!!!#7n)` YVg}c`u!8LȘXb!'?'7!!!77d=ddTB33C.dc<^:MS:MS#9MR9Mus"/;#7367'"76!3 !7326&+ 3 #"'3276#""*sA.0y9X!o>LB[k[_ E@5?06Z%"e6XDk^|yf,2F$RN7P& ,3!3276%!6=7#73!23#3#+!#7%!&'&+Mo; o ML L: la P DC H$CIȘRƍI Q ,Oy\@ Z'/ZZHrkbH.,H jOUMyH+4676737#676&#">32!!#3!2$7#"&767!7Q%!'n8y^|i h"[:,"",oo 8pqj  !.L# %%78LP'5)8xy65ELMTN| )%#&'&%6?3&'&'6767(_b5610C@%!!20XL6;L8?BAXZ;80,+"R7r~or 7N'(OQ"z!z!#'73!;RzŒu͌z7!'3#7tSy͌ +/L"326?%!7#"&546;7>54&#">32!!.#"3267#"&5467>32SN+%AX5W TuzDMHg.[Vs.MW)kQJ5f[0I~?IEMȁP4J9"QT#EiPYV'&oru#5!&'67!!&'&76CKKZ*((*+'(*aEvvtXWe>W ! xw. ,>.#"3267#"&5467>32!!"32654&'2#"&5467>N/LX(kQK4g[0J}@IDNǂ;vtjQo63Qp6 ?32!!!3267!!7#"&546N/LX(kQK4g[0J}@IDNǂ;vt0[ P#!@bL Rr~9"QT#EiPYV5Z4+:)'uoC Kv<2"r)_8K4'67654'&'&#"!#737!!!67632!@ *dIIaً$B #1ZZZcG,w7 $#WVrrb./wLwDSV_2632327#"&#"7632327654'&54?#"'&#";jworulpq}dns(Sa+jq`O81??HH/+y{/U:11::b:~"FLxUBnb_Xċykb[OP%273#"'#67&5477632654#lz16?Dl4;`I g`<A5fT Uf59dNT1QGdX EUS#15!>!"!!7267  &5476%"327654&!!,5x#'N( }w#&O'  c c &4K 5k% 0>#Ȏ>;VȎ>;ףa09ģb09,og4PT3'(T25&8"32>54&'&#3264&'2'#  .546ٻNNNNmnOONOFHF&aaaa3WzyWVVUyzWX5h2wyxyD7nnnc;0<67632#"'67327654'&#"#"'&57&547327654h-uv?AlWH#ZbL83m>Qs49*vb$$1UE?LPީ>+<$~\oA7n=B Ũhb)<(,QBJJY&54'&#"#"'&5327654'&#"3"'&547632763227767654'&#"a@DT[QQ\\f3->=-22,NF-22/:;\\\\Sc*!q:;[Yj )aT'03&' +!!2!&3&#!!2767654'&'E\VQlcvp:o8bB# #3%TT"6w/8؍$~hHf%TX$a 32654&#+!!237!!'!YaaY(j$ba3mn_mddl=`o'4.#"#"&'532654&/.54632733###MN#;?*>2e_~/g@RZ*>D292eY|p.^|~y|Y"*/( VAO[`*,2,* M=H\T(lI`3!!!!!!!!!!!! h"}!n#(!&/ͯ`z  73#######5kk̙{D|eKBM+=!!#"&767!!! 6-3cH#ࠟ$3,77=Vˤ U#yy9&.mp-)% 7673 $54$32!"53!25&'&#"hʰ*X0~Y-;Y-Y-Cc1NS2j?Bdjl,>8?]/c6gUc1NS2Bc1MS2c1MS2 `  ##33!#!#3!!!!!vX53&G$'aS:,#FY%n&0 !67!>32#"&'32676&>76&#"L76&'&'&' 76767676'&'&'&) !#"&76$;&'&7676}շ''|`;O@7E&+E4aY)-B;YI/qDFMXΞqDEMX/F}Է''|b:N?8E&+F5_hOX)-A;W:2TS2:3:no:401teft0110tfet10#V:2ST2:R>4:on:3H{ZQ 5!!Zb<Ƒd 3'#'~bزwxƑiQ '7!5!'7ȌwƑd #737D~زxƑZQ5!'7'7!Zba<ƑwwƑc3'7#7'~a~vƑw;Ɛ/3 7!##Yc̪4/3 #'#5Y3c̪4/3 %!5373/Y c4/3 %'33TYc,4ZQ5!!!'7!Zb㫼m6Mm<JxxƑiQ'7!'7!5!!'7mmfȌwxJxƑs/&'."#"'&/#7!#267676767632GQF=4RHUYEN8XYWFQF!:9MFXZCP6;W\)""!&OG='""'=`,c_""!&V@>&""(@V&!""_c`='""'=GO&!"")ZQ53!!#Zb5c˫<WƑWƑ\3''#'5'~b5ز5wƾXƑWƑiQ'7#'7!5!'73'7̃c4ȌwƑƑe#757377E~˃ز˲ƾWXƑƑZQ5! !Zbr5<W‘WƑRQ'7!' 7!'7˂5rȌw>>ƑZQ !5!3#Ųb; Ƒ6d %'3'!!5b~bƑwhiQ !'7'7!#3A;aƑww\d 7#7!5!q~hƑwd%7'3'7!!5b~bDDƑwƑwZ(5!276767654'&'&'4#b  >/5')+''50= Ƒ  +,x>@9>*+i(!"'&'&'&54676763"3!'7'| >/5('+)(5.?  a +*>9@>x,+  ƑwwZ;3276767654'&'&'&"#5!5!54676762#   ƑM>x,++*>9A=x,+i;54'&'&'&"3#"'&'.547676762!'7'7!#   EE?.5()+'(5/|/5')+زa(M   +,x=A9>*++,x>MƑwwZQM2676767676322676767'7'7"'&'&'&'&'&"#"'&'5}  "#(+!&  #ƒa#Q"$!    $"(,  b $ -#% $, ' בww"*&  *&"ZS%'#5!3'7'7!9b!B9a2'ƑY2Ƒww$ 7'7jf|ᗑ_mHu]W)97 !#!5!b?Ƒa !!'7'7!b>bƑww<7 !5!bgLƑa 3!'7'7!bfb<Ƒww !7#7!~+VƑwZ 5!3bt Ƒ z%#4'&'&'&"7#74767676286BAAC68~--TPnddnPU-,VJG@9!!9@GJVƑwƆvx]Y6006Y]xv)z%476767627#74'&'&'&")-,UPnddnPU-,~86C@AC68vx]Y6006Y]xvƑwVJG@9!!9@GJV 7!##7!Y;cc̪4'wwZ# '73#'7!5#3!ab;jƑwhhw0Ƒ\]4276767654'&'#7!#"'&'&'&547676682G=@E468YW+,,+WUiggiUW+,,+W;LJVS=7# :;LJSVJL;,cepvvpeZ5005Zepvvpe]j47"'&'&'&54767#5!#2767>54'&#X*,,*XUhgghVW*,,*WY764DA=G186epvvpeZ5005Zepvvpec;LJVSJL;: #7=SVJLZ Q5!Zb Z!!ZEƑ3'#bwxdr#'qزb$Ƒi Q!5!'7a Ƒwi'7!5w!37زxƑwdr!#73qZ} 5!! '7!5!'7ZbaƑwƑwM !737 3'#'ز]~bزxƑwwxƑZ}  '7!5!'7 5!!abwƑw̌ƑZ}'5!!!!5)bƑU73'#'#'3~bآزa~wxxƑi}'7!5!'7!5!'7awƑwU%#73737#~آز~xxƑwZ 5!'7!5Zb׾wZ !5!'7 !!aEƑwƑZQ%'7#5!7!!!!!!%9JbJg:MDDWoSSWo6KKZQ!7'!#5#53533'7'7#'5!CCJbJœKaKÜDD7KKSSSwwSKKiQ3'7'7!'7!5!7!5!!7'!:KaK(f9sN?CC93WoSwwSWoKKZQ!!5!!d;UJbJD7SSKc#'3'#'Jb~aKDLRvRKiQ7'!5!'7'7!5CCKaKT7KKSwwSc737#73CDK~J!KKRvRZQ7'!!5!'7'CCDDJbJ!Ka7KKKKSSSwwc7''3'7#7CDDCKa~bJJ~KKKK^SwSSwp #7!##ehYje_qu+cqS  '#5!#5'5ghZhepdvpTj!  753!5373feZ jhe`YRrtdp!p%3!'3 fhi ZdRpd,vpjZQ!!!5!!!j{^b^3j72viiviQ!'!5!7'!5!7!i7j3_a_{jviwwivQQ''#53773/˲bYY ƑcciQ#53773'7'7#'hYYaˋ ccƑwwƛd!##535#53'3'3#3#q것b~b,҂6Ƒw҂d33#3#7#7#535#53것~҂Ƒw6҂ZQ53353%5!!;b겂 2Ƒd3#3#3'#'-~bزw6ƑiQ#5##5'7!5!'7E2wƑd#535#3#737q-~ز-$6ƑZQ #3!db; Ƒ\iQ '73#'7!5aƑwhhw1^ 5!5! !!~T_i$$ '33 !!V5p$@^ 7'!! !!?~_% 7##% !!GUTe$!#3'33 !!5_CV5zzbJ$J #!5#3'3!3! !7Uʹpllx|`$ #!5#7'3!3! !7Uʹll|`$ 3!3# #%#3735#3͢x-|`$܌lzlx'33%! !!!!'37!V5Uhi}5L@$@tt %3'3#!5'3!3!! !!'37lUV76ʹ)UhiTll|<$$tt@^ !5#35!7'!!! ?aa_]#_/%%m 7!##!#bYJ-kcc̪4wm !53735!3Y krc4bw^+ 3'3#?! !! !lUVV)e Ҍ$$iQ)5A '7#"'&'&'&'#53676767623'7$"!&'&'!2767698CCCC89po 98CCCC89ƲaS$$ X $\ $$S$$54&#"#"&54632#"&54324&#"325# K+:rס[}B=VtA@Wqq9WzC2EqG Ur|txe !!!!!dEa*+#V##S4!!#7#3#!!!73!#3#G P0N`jRc+^^##V#`#VV$273#"'&'#7&'&$32 &#" 326767&'&lB|d?Y6]>$_R}yyHJJk"%vyyIKK3YZX|g IHveyKvGd !!!LSV? !!&kV??%&76763!!"!!3!!"١[\]ok=x@?=wBC3"*%&'&54$;73!!!!!!##!!XRCijeUz=FJx>@?=wB%v% '&76)! !!)}r:X2C C, vo{ o%2lc<'%#!5!276767!5!&'&'&#!5!2Lpk<yxAAdZx3"*+#7!5!!5!!5!733>767!7!&'&'&'WSKjKi<G@?=wB%v )5! 765!5!&'&)5k/~sX2C!C,Xo{o%2ld<'l3!-lw!!!!!)u!!!!!uJ)$w !! !!5 ;.G!t{N F!!~F !!5!#!!!5!o***~bbZ3#!!#!5!DDA4#3W 0.3 &em.%73% %#'/jTUjTjjKJ6lrt!!D}D 3##'%Vl"DN7D(3#"&'532654&+532654&#"5>32%3##'%RS\I=3"3'hDQe[F?n>[=W}~QY@Uk='j5CCdOMein~q~ezCDR /32654&#".#"326#"&54632>32#"&\'jBQf]DAk'hDQe[F?n=W}~QY@U~~R1CDeOMeeCCdOMeia~q~nF%!3!E~F%!3!E~ !!##4'!&'7!&'&6`_HR) 6F{$A9vq-..-xy)qF 5'7%%' 6876H ?KN.}d5 B<>b_kyPRP}XR/3#~/)XXy/ #'%37R4&5EdeeX/3#3#^/))XXy/3737##'ԊA5vՊC4\,Y{ *eLX+e!!! %a'^!!!BD^76!2#4'&#"#dnzd)2{7)+P+COO=3327653# '&)7{2)dzndw+=OOC+-8,26532#"&54&#" #"&54632FY_uJ:::[ ##7w`tL>6;e5 jT@OMJ&e<ehWANHC -'GG- ~'GF'GG.9EP'&'7767'&'&'&54767676767676&67>54'&'&'5pC b=sC16;D8788C b=rD15;Hv  + J;PLKJ} ՜U5O9:[>?JKVXKK>? 'U5O9:["$S13(*# b11S$ F.Yeit%'&'776?!'&'7767'&'&'&54767676767676&!67676&67>54'&'&!', b=rD16;@ b=sD16;D8788C b=rD16; b=sD16;H55pC  ?+ ՜U5O9:[U5O9:[>?JKVXKK>? 'U5O9:[U5O9:[":;PLKJ} Tn$S13(*# `%/b11S$ +. Iy}%'&'7767'&'&'&54767676767676&!67676&!67676&'&'776?!'&'776?%!)!67>54'&'&m b=rD15;D8788C b=sC16; b=sC16; b=sC16;H55pC b=rD15;@ b=rD15;?]?+ Q vU5O9:[>?JKVXKK>? 'U5O9:[U5O9:[U5O9:[":;PLKJ} ՜U5O9:[U5O9:[%Tb11S$ rn$S13(*# .p?#4767676767676&7%7&'&'&''&'77673! ;7R  b=sC16; &$P;;!.{sT3l$(1 A b=rD15;;)!]XTF>&U5O9:[ %AAYw8'~2:)+U5O9:[01<.Q;CPY676?67676&7'&'7767&'.'&4767676776'&'&tO#' b=rD15; O:5) `L*9P&+ b=sC16;Ot#5! "5!%"" IC&L' ՜U5O9:['@;_CJy3/@' U5O9:[ 'XPP&K&+63{4;$7kB%9(.=<ERZ&'&67676?67676&''&'7767&'&'%6767677&'&'&>E8?K$& b=rD15; R7; p@!2GD(* b=sC16;S6 0(c",*%*(#)9`W=B# ֜U5O9:[&>FT<;Om3F  U5O9:[ &?ǐ,@FF-'q9:80/n2/m-'5'55#m-'5#'55l-'55m-'5'5'55 F '5.] !!!!!!QDD}}F &.'5E'5E'55FH'5'5XFR#"'&'&'&#"5>32326E_W`  TPY_Wc UMRPE:=MSNE;=KFR3276767632.#"#"&']NT  cX^XOU `V`RUK=;ENSM=:EPFi3267#"''&#"5>32K6M]_WMchiL6PY_WNcgKUPE&EYMSNE%UEF#"/&'&#"5>32326!!E_W` TPYaVaUM~PE: =LTPE: >K'F##"'&/&#"5>32326!!E_W` TPX_Wc  UM~#PE: =MSNE;=KFF%6767#"'!!'7#5!7&'&5>32Tep9^W;E_68vyPjITK[_Wc )9@;OEi0(#VNE;gKF##"'&/&#"5>32326!!!!E_W` TPX_Wc  UM~~PE: =MSNE;=KFF/#"'&/&#"5>32326#5!7!5!73!!!'E_W` TPX_Wc  UMWgWPE: =MSNE;=K튄튄PF3%#5!7!5!7/&#"5676326767!!!!'x'gr[ZPMMY_QPWc %9u!K]_PN[Afq{K ='&SN#";Qk&UP#!lF#;#"'&'&'&#"5>32326#"'&'&'&#"5>32326E_W`  TPY_Wc UM]_W`  TPYaV` UM#PE:=MSNE;=KPE:=LTPE:>KF3&#"5>323267#"'3267#"''&#"5>32sIPY_WcTR' M]_W5D.sIM]_WbUU( PYaV6D.MSNE;E KUPE/KUPE=E# LTPEKF7;#"'&/&#"5>32326#"'&/&#"5>32326!!E_W` TPX_Wc  UM]_W` TPX_Wc  UM~FPE: =MSNE;=KPE: =MSNE;=KF7S#"'&/&#"5>32326#"'&/&#"5>32326#"'&/&#"5>32326E_W` TPX_Wc  UM]_W` TPX_Wc  UM]_W` TPX_Wc  UMPE: =MSNE;=KPE: =MSNE;=KPE: =MSNE;=KKF#3276?632.#"#"&'!5!5]NT cX^XOU `V`~~UK=;ENSM= :EP@F  %5 % $%5$C 68D6F@976767!#"'&'&'#5!!536767623!&'&'&1*+ 1MPQM1 ,!::!,x 1MQPM1 z+*%'H:f<0[2332[39a?H'N'H?a93[2332[0@.4:<20>>0;37'F #"32654&'2#"&6!!!!AZYBAZ[@;n,*,,)+p==~~dbcGHd3/0xDCy-03$'F 2&#56!!!!~~:'F 3# !!!!xt1~~cKA'F 33#!!!!tx~~KcA'F !!%!!!!]BefAfea~~YTTV'F !3!!!!!t+6~~zt'F.5IMQ53#5#"&4632264&#"%#3267#"&546324&#"#"3###535463!!!!ii4"~~V4 kj6h66h6k!))Yd[Yeg/!(&#LSS;9'FJ%)->32#4654&#"#4&#"#3>32!!!!AR1TX",1$-0K-2N~~35uo :5SN[5SM%Q//7'F:!%)#546?>54&#"5>323#!!!!60+&%U-6Z*ns#+/~~>*?1.#'!!d_1N, %`gF !3!!!'7#5!7!ㆂ9㇄~1}MF !!!!!!~~~nsF!5!73!!!!!'7#5!7!5!1o8dgl!j3.flftgsiF !!!!!!!!~~~~F %!5 5E~'~PNF 7!!55%~~(&F!!5!5 5F~~'~6PN&F3!!!!55%~~~(F!!!!'7!5!7!5!7 5AaBrAr'~6\ڠ\ڟPNF!!!!'7!5!7!5!755%AaBrArs~(6\ڠ\ڟH 5 55K6N33QQ33QQH 5555635N#+#&'#67&'&'4767&'36736'& ==03]^50?= >32326 5F_W` UOX_Wc  UM\'~PE:=MSNE;=KPNSF$%#"'&'&'&#"5>3232655%F_W` UOX_Wc  UM~(PE:=MSNE;=KF(14%3267#"'&'&'&''75>32%5%%%  UM]_Wgz 5.IGNX_W Q4rT+/?aͮ=KUPE: E$&SNEEXbrf5-F(143267#"'&'&'&''75676?5%7%57'J39  UM]_Wgz S?>% NX_P,.4=;S܂=KUPE:$Ex&SN# ]euE2, Fl 55% 5~(Q'~PN Fl  5 55%='~~(PN<F<!%7'%%'75%7%57%5%9/5O6w-\sN̘94 Z_k󆑐3^am􇑓g3;5<F<!%7/%5%%'%5%75%U?8e93dTTa;#1SR# 13{f네􊇑3i놣Fs %5$ErYg===||Fs %$gYs=6||6==Fy%5%5$ElVY)Y0USx|Fy%5%5$YVY)0USx|Fy(%#"'&'&'&#"5>32326%5$E_W`  TPY_Wc UM]VY)YPE:=MSNE;=K USx|Fy(%#"'&'&'&#"5>32326%$E_W`  TPY_Wc UMY)YVPE:=MSNE;=K |SUJF?67%'&%5$%abMƵߋ>KKAAynʳlqB[,=qB JF?67&''67&'bLƵ"{䴹KLB@n6m r6B \,moKM3R+#!5!!5!3 32654'&#Ÿp~depDbǡcEEbg le]moKMR7!!!!"3!!"'&76kcDEb~moKM᎐R%!52#!5!27654&#!5"~~bEEcClMKomR&%!!'7#5!7&'&76;7!!!!#";f]I68"nJ6* cDEbBw|BmoKMR &327654'&/!5!7+!!'7!5!7!5!MNbEEE*6J54&'&'$2"&'&'&547676!!#!5!\LJ?>>>>?JLKK>?==?>KXY,,,,YXXZ,,,,ZX\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcb88a$37"2767>54&'&'$2"&'&'&5476765!\LJ?>>>>?JLKK>?==?>KXY,,,,YXXZ,,,,ZX!\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcb^a$3?"2767>54&'&'$2"&'&'&547676''7'77\LJ?>>>>?JLKK>?==?>KXY,,,,YXXZ,,,,ZX\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcbݍݍݍa"=A32767>54'&'&'&#"'67632#"'&'&'&5476'>>?>JJYXKM=>= =?KJYXKLXlk}~jlYV-,,,WYlk}~jkWY,-,,> EacSSFC##"#DEacSSCF##"#Ib0111cawvxwbb0111acvwxwFa$37"2767>54&'&'$2"&'&'&547676!!\LJ?>>>>?JLKK>?==?>KXY,,,,YXXZ,,,,ZXD\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcb}a$3?Q"2767>54&'&'$2"&'&'&547676"32654&'2#"&546\LJ?>>>>?JLKK>?==?>KXY,,,,YXXZ,,,,ZXSAZYBAZ[@;n,*,,)+p=\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcbndHHbcGHd3/0xDCy-03a$+E'#'7'737&"2767>54&'&'$2"&'&'&547676h6{77{֯LJ?>>>>?JLKK>?==?>KXY,,,,YXXZ,,,,ZXqqp##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcba$!;!!!!"2767>54&'&'$2"&'&'&547676``LJ?>>>>?JLKK>?==?>KXY,,,,YXXZ,,,,ZXfp##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcba$37"2767>54&'&'$2"&'&'&5476765!\LJ?>>>>?JLKK>?==?>KXY,,,,YXXZ,,,,ZX<,\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcb^|B !!#!5!%!%!!^88W|B 5!!%!!W|B    ' '!%!!,--,]NNNN|B !%!!!!ADu}3!5!i\ff#!5!i\ff3!5!K4%3!!5K4K3!5!\ffK !!!#3!J>rr !!!#3!ii>rr #33!5!`\\ff#3#33!5!`s\\\ff#3!!!#3!`\>rr3q!!'!#3!S$qY&Y3q!!!!'##3!7!SWm<WUqYYrrP3q !!'7#33##&Cg/pGqY&Ytf\+3q3!!!'7#3!##?!EW{/.n GkkWqYYtr\ F 5rp~F 5p~]F 7!! 5~p~G]F %!5 E~G{ n6'22#"'&'!#"&632!676"32654&U04)+p=;n++/W4HG54HI3/0xDCy-03`4B <-033/0<B6`PsOO9:Pn6 2"32654&'2#"'&'!#"&632!6764HH44HI3U04)+p=;n++/W PsOO9:P3/0xDCy-03`4B <-033/0<B6`m65!6767>32#"&'&/"3264&n*,m<~>o++3IH44HH <0/330/: P:9OOsPP 3!5#%5!I*sx  su3!5! 4 7!!!!!^YBD^ !!!! ^Y%a'^ !!!!!^YBD^)!!?V !!~~V?#u 5d !!%BeeBeeTTpe   HX*)|6UUpf    (*)U::Upf   HT*))0U8Upf  ))Vpf  )(::'F#3276?632.#"#"&'!5]NT cX^XOU `V`~#UK=;ENSM= :EP=F !! 5,c~=F !!55'~e11J H  5 5 5 6L6L6N33QQ33QQ33QQ H 55555562626NPF 5!-5  5~(~'~ :nPNPF !5!555%E~~~( LNPF !5!5E~~LNPF 5!-5~(~:Fy5$%5$E)YV?_:|xSUFy$%$YVY)?:BUS|mFw!&67&%%'&'57&%5$%7q>3w<8dz¦<0$RSAwY49^GY~ Y>-*HM.DXF!6%'6?$%7$%ZzOz|g[ʹ.,Y%7R/VY(`q:}݂\*[xF3!!!!!'#5!7!!!327 5K6M]_WNbGHM6OX_WNcG{'~kKUPE&EMSNE%E[PNF"%3267#"''7&#"5>32755%K6M]_WNbGHM6OX_WNcG~(kKUPE&EMSNE%E[FFy&%3267#"''7&#"5>327%5$K6M]_WMcGHL6PY_WNcG|VY)Y KUPE&EMSNE%EeUSx|FFy&%3267#"''7&#"5>327%$K6M]_WMcGHL6PY_WNcGY)YV KUPE&EMSNE%Ee|SUFw 7%'%57 QĆ_RYwZSZ=܀l<&Fw ''7-'"_R1MwZ(ZA _xh5F&7%!!'7#5!%57 xćx{-nL!E]4&ZBZN`<6F&!!'7#53777qyoMVJM@&ZsZq ZCyWc#%&'&'!5!676763!!"!!3!!"X==\]nl<y;kqL_dxzZdAAx>@?=wBC3#5!3!!"$$3!!"! i/qLQ]m2geCclAbv% $76)! !53#5!)r:X2CeC, v5o%2lc<''5V$Z"!5&76763!!"!!3!!"[\]ok=x@?=wBCv!5 '&76)! !!) 8}r:X2C C, o{ o%2lc<'X"!5&76763!!"!!3!!"[\]ok=x@?=wBC!!!!3!!"'&'&76763!!";x9]qLXY[\]o^zb9CcdZdA9#!!#!5!276767!5!&'&'&#!5!2X==\Lnl<y;lp]udxzZdAAx>@?=wBC#3!&'&#!5!2#!5!2767!g0p]BLm3hmeCxAbv )5! 765!#3!&'&)5k/ sX2CfC,Xˇo%2ld<'Z"!5#!5!276767!5!&'&'&#!5!2Lpk<yxAAdZxv!5 )5! 765!5!&'&)5 /~sX2C!C,Xo{o%2ld<' 5!!5!!5! $wwv 3 %! w(dTZA  ' 5!5!h`ZZ # └n!#!>/'L !#7L(Aq!3?2'"L!73! (2AF!#ERn,$%%$JIvvv鮮뭭nn 8ʸ'+6@KV#"&6 3546 +32 &=# &6;5#'54&#"3!3264&#"32654&#!#"3265n[A@[[@nA[\@A[\@A[\@@[[@A[`ʏʭʏ˭GffGHefffGMGeeHGeeHGeeGF!3!E~n86532#"&54&#"_uJ:::[e5 jT@OMJ&e<\(( #"&546323267^vJ;9; [(]e54jT@OMJ&< !!!!%!!Ldo+l  #/;GS_kw+7CO[gs!2#!"543!254#!"+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;22+"=4#"=43+"=4;2+"=4;2"=43!2#3DŽCAAC!B""B!!D D!)!C!!C!r!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!"B!!B""B!!B"f!""! !C!!C!!C!!C!"B!!B""B!!B""B!!B""B""B"!B""B!!B""B! !C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!B""B!!B""B!"B""B"!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!"B""B""B""B""B""B"!~!!~!!!!& !!!C!!C!!D D!H""!!JJJI%%I&%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%% %I%HJ%%J%%J%%J%%J%%J%W3#`app #3`bp.4 !!#!#7!K*KL)Qs' !53y湂r0_Tsz*!!s*s'- #5yr斧-T_0s' 53 r畧 '*!&*.s'- !# 繂r-s'!!!ySsz*!!s*s',!!!yS,#s'!!! M '*!!&*s',!!! M,#4 #476;#"2opW+0*3,#4'&/327653}6$[c477:c[$!< |AEy <4> ;#"'&52+Wpo>ܜ*043>#32J3 4'&+324,Woo$*04,&'&3;#766$[c:774c[$!< yEA| <3> 3+327654ooW,>0*(!('! !!&$<>32#"&'!'%7!726&"SiZ׻i1 B!C Rϊ8Pό8b]]b`jRP[@(.!3!3%Kuudl &! 4$32"324$35733!vwCC^ߡ``!gL7h׬z@+/ l 4! 4$32"324$!!5>54&#"5>32vwCC^ߡ``gNJ*%G<1yi]KO{L7h׬z@'%D%7A,C Nll D! 4$32"324$#"&'532654&+532654&#"5>32vwCC^ߡ``ofFU`y:TRTZrvPEDB5lVUA[L7h׬z@_0 6135-.)/%|}Upl )! 4$32"324$ 3!3#!5!5vwCC^ߡ``୽"~~vL7h׬z@Y5Уl 9! 4$32"324$!!"632#"&'532654&#"vwCC^ߡ``7f~9ӶOYi}5JRRJ.k_L7h׬z@\$=(F>?F(l '@! 4$32"324$"32654&.#">32#"&5432vwCC^ߡ``1001111W_,\fc:ȧ?wL7h׬z@u@II@@II@*g;  l "! 4$32"324$!!!vwCC^ߡ``G`L7h׬z@l '?K! 4$32"324$"32654&%.54632#"&546732654&#"vwCC^ߡ``6987577[\ ef.-+..+-.L7h׬z@L:;;99;;:apS{{Sp |]]|-.-..--l 4@! 4$32"324$53267#"&54632#"&2654&#"vwCC^ߡ``BV^.\fc9Ʀ@w0220111L7h׬z@)f;!AHHBBHHAl &2>! 4$32"324$35733!4&#"3267#"&54632vwCC^ߡ``V#%&##&%#wwwwL7h׬z@&*jmmnn( <!! !!!!#!#(!((!(0(!B({(!((!((! (Y(!k((3(( D ( #'+/3!33!33!33!33!33!30stststmnmnm(%8K#!1!!!!!!!#!1!!!!!!!#!1!!!!!!!#!1!!!!!!llll޶llll޵kkkkߵkkkk(((((!%)-13#3#3!3!##!#3#3#3#3#3#3#!"޵׶׶m#( 9#( G! N( N(& N& O P(& O P(& N& P U(& O& P U( N(& N U(& N& O U'%! '%!!!Ng>9%-d) 327$%&#"%632#"'++Օl``````qq|qqf' '/7?G%&'&'6767&'&'7%'676727"'64'7&"'62&479'5)3,?4C0x2)/-Z5>3@'5)2+@3C03)5'Z,G4?DD#VVcDD#VV c<1& j(0=Ju &,A=N:0('<1& j(0=Ju &1<>EB0(n_II'[[JnII'[[d) %/36%632#"'327&#"6767&'&6e`` :;;:{m('((((';99̙Rqq|qq%%mܱ[0$ %@%|"d) )73276'&#"7632#"'327$%&#"%632#"'Vg4343gg3434՞OOOOOOOOH++Օl``B!!BB!!oe33eje33````qq|qqd $  $eGyFAk^d $  $27$%&#eGyF+ՕAk^a``d $  $"3eGyF+Ak^``d $  $327$eGyFS++Ak^>``d $  $%&#"eGyFYՕAk^>``d $  $"327$!eGyF++Ak^```d $  $"!eGyFVAk^`d$)6%63"'e`Rqqg)#2f|q*qf(32>54&'."!1,.uBCv[10..uu0-D3366fJI426532&<U( 327$%&#"327$%&#"!(++Օl``````}|qqqqH(U( !#%&#")%632T++qq>~``U 3327$3!#"'$``Ֆ>qq``) %63"`qv`) 2#%&#`iՕ)q>` 527$3+iv`>q "'$33įj+q`)%632#%&#"``iԕqq>``3327$3#"'$j+,i``>qq% % %! %!$ `)32>54&'."467>2#"&'&J'$%]55_I'&&$^i^&%f/.0uv-/01\vBBu.-5wh))++Rh<:g*(+*)(픂235624IJf6633'%!%!!@Z r<'%!%!!X r<'%!%! r<'%!%!N r<'% !%!!!!t&t% r<<% 4632"&! ?N97MMqM`KAj>VV>>VVJ %! &A %! %A d(  7& 6  'hi./*X֖'% !!!!!!tg%ۊ<)) Ie'% !!!!%!!&Ng%M)*<?v^]"3263#!5276;'4?'4?26vi#1z]H3y)/ #&<+*lV#m14He '1l1 Z+dZ?33 #&'&+"'&#"/573;2?"#'57#&'#"#5676!504& 3(d{_R!' 8 2M <=Y4}V .e3B=Se` e9*=9 3@=}k !=] 9eAmu} 5a73&'37&'67&'67&'67'32654'&'7654&#"3672#"$54767&'&547'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'4327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&54327'4327632#"/#"57#"54?'&54327'&327632#"/#"57#"54?'&5432&'67&'67&'67'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432Gsq%&&#%'$:"#!pޞp[}9*;qTR}<(2w,JDdNSjDD% $+*$ $ ),  ! ! (&    %& ! ! '%     %& \! " '% !   %& 7SdR!%"#!"%=    &%     &' |" ! '%   ! &&*EC*Z*,)-)-*,%&%&fБfU 5HhfeefhH2pu^ttQFs棥sKQttGh!99!  !77!  4 4 22 K44 22 22  11                 7        %&%&%'%&%'%&22  //  g               44 22 u !2CTev+&'&54?6?6/&2#"/54762#"/54762#"/54762#"/54762#"'=4762#"/54762#"/547672#"/54762#"/54762#"/547672#"/5476%2#"/547672#"/5476 I7-Vo/"*6% \8^ :x.[>  !    !  |             b     !      !             aG<s-8PZy9} KW2{0R^j ,: . 4 . = ,  ,   -  -  -  -   .  .   ,   -  w !! xLJK9`8w !! 7 ! !xLJK=~PZgKI9`8N I 7%7&5476R3N"e;Q 6$ 8'^4? !2 7%7&547!&'6:P!`$/A?S"="l-2DC[9 )! 4$32324$#"#"&54>32vvDDbcܙݢbFEc-Q**R,K7iwBNmmN1Z00Zp G"32654&!"32654&%#"&54767654$#"#"&54767&54! C]]CA^]iA^^AC]]RutQIdmmqNQusRn!$gJIggIJggJIhhIJgU\\Q srW\\^p G4&#"326%4&#"326! 547&'&5463232$54'&'&54632|^AC]]CB]]CA^^AC]mmnRsuQNqm..mdIQtuRhIhhIJggJJggJIgg ][[Xrq Q\\pe "32654&7#"5432EWK_ȐɎ;12Yp 7"32654&"32654&#"54327&5432#"'&'lllmml#褣楦s奦祣t کxxxxZxxxx;TdIU ~z)5AMYeq}3'%&76'!'47653!76=332654&#"#"&54632'#"&54632#"&54632&'&676&'&676'.7>'.7>6&'&6%6&'&6>'.>'.x"gO$hJ Ki$Pf#؂ԕҘ4vUTvvTUv ) )Y ( )>&%/$%&%/$'F ) )Y( ) OyyO vKK9__9KKݧꧦ]]_""""s!!""D. - . - a)**))*)) / . - .)5AMYeq}5#!4'&'5#2#"&546"32654&'"32654&"32654&7>'.7>'.676&'&676&'&7>'.%7>'.676&'&676&'&53!76=3%'676%327'%&76'77&'$%'#7%6'&7, 3ϔϔSttSRttJ ( )7 ( (/$$ %%$$&%k) ( X( ( Myhy?k>Ys>   =rY>k?LY77%SB T+1SBS%77YK@@1AeA1@@H磤椣筁\\\\     % - -- ,1)))(9)())u- , - - G77W6 W77Gl^ ee ^l(q,&$pp$&,q( !!'!cc8h "!!'!##+572367676!dczD%8i [A.8YW8hA:F;/Itx !!'!  ##' !dc^rnVoRQn8hi[ef[l[J@36273 ##'5 MON@ US VZCv#,5>~3+&=43+&=4%3+&=43+&=43+&=43+&=43+&=4%33 #&'&+"'&#"/573;2?"#'57#&'#"#5676!5S4S3S4S5T5 T4RS44& 3(d{_R!' 8 2M <=Y4 #8d#7$6$8;$7i$7 #9pPL  )Z. ;6ZV Z3%Y63 .87p  />Eqw!674#!!6?676'&#'323276767654#3#&'&'&6%67!672!&=75$/563&43!32+'!67#>54&53 8 A4N,315>(I-4"a1lxXzbf=NS!\q&,L01Ne0<  9 H3 ;;Q4XmM;YV /M(=H: ,qLUD)8Wqke-Pm{NW =$ U  /0c)H?2@[nDF8T$.L !' !ANKOUDu@wL5_K !'7?KNQ>wDB&547632632%6#"'&'# #"'&'&6&'&547676CO""ONP4S2 R$|m ?wE 39 _D%V$F^ 92 Ev? m|4hok@mmr*%te2' BB90tU%) "ft(f" )%Ut09CB '29>3#"'43727&'#"$4727%6725676&5&dB1)X6E v=y(;. eP 0 %SZ7AFF4ysW$,J ]T.MMm@ed: ,'Z M'cM&T)2_M2%!"&54676737#&'&54>;7#"&546767!7!"&54>3!6763!2'71z*-=80O&8-&Q&7>+2  ,2 =,2  =,3>,2463!2!2#!!+32#3#!8%Q'-7'P17=-,y07&#,>3,=  2,= 2,  2+>!C%4&#!"!&3!!"3!#";#"3&'6737#&'6737!"'67!7!&'63!67!2nA+1*KK KKKK8JJSSCTTTTDPSS;Q%8C%39KILKIOKHLKIhghghghgE?-!D72654'6#"'4#"'54#"'54#"'675674767#%!/5BBDEAGCAECB^\ ]]_\]]=8(sJ1 b6'SS cRR SS?SS\\K\\;\\]]!A*>K!C%254+'3254+'!254#!'!254!&#!"463!!2!!#!3#3aKK9JJJJ KK*0,C$D8&Q:TTPESSSSCSSIKLHKOIKLIK93%N-?Eghghghgi!C32=732=7325732'654&#'%2&'&5&'5&'BCEACGAEDBB5/!:(8=]]\_]] \^SS=SS SSb SS'6a!0J)K>*B \\]]:]]J]]pO!%)-15 3656;2#'7+"/#"'+"5&54775%"'5476;25'7&567635&56;374765'75'76=4'&+ '"'4!#"'&36365&5&#%#754'&5&&547'5367&7+&'&'735&2?"5%75537'7'3533553535'32767&5%2?&#%55'575775775J5[( 9?8P7?VE:.>DA.( 3DPDa>@#+6x `]>  >[Pr @se"^L3 4UF "V;=\?/ /*U9[' ."n?$-)&!Dh2 ) ` ?hhE-g> ?. 8Ve lTErf^5.>=9|5"-l)d ,&>vv]cccWpC-+ d8 Bpp>W]oaxvuPp82,D ^8, ^B$K+ "1R[+e*;GW QU I&? gpo% w ^SA$ 2 9i-5n02D|&IY^Pw^%\??\OWC ,,1 /211/=;7777=321811{908hN%b\Dh,)h?17I21!122223 21&2%2#"'&=477654'#"'5473Ձe/o WF^a}/ X 3 X ؍MOb>YaYƮ58l7P P@ $0<FX + &=6&# 3 6=%&#"';27!5%67%!&'&'2+"'&=476.Yf㮿Y0薖q3P+2-)VEV'quI3=%)H3A#S]ٱZYHYoX(I_ ;.2lOP%.G6R%&I8Z 8Pi>'67&&&'6.7#"'&'#"'676'773.#'6'5676&&5476'&'7&&=F! wM>7TBWR?^m &ab)-R7kSWos4K9>>4::T8S-\_l eu?>L=#mg'.2[E :jx(Nr%&&&+F 7!N &".\S$XE/KC\a*0/'rSCٟ C (RKpF|bphc'R"J$Zw1F[q7&&'7'6&'6#&7'&#"'5&567#&''5&'67'6'4'5$'67'656&'67&'6'&'''5$7676'&&'6'63&7"7&'7&'7&'7&'6'6%676767&77&77&''5&"'6%35&'.54>321167#&7 m *VBRa&G ?V M]; :)(6hCs/Ni,H HCfE_ 7^eAB4CCC <1bSBV* 9d i'Wh"&VqH,7u07#]69-/6,X(hR(&"hZ,HK80C:7%_6/-C  "H1 $ &b5 4CUE '(!`9 !,(MTE + }r}A" 7,)f[4f AD <@0&9c?"V+GoMK~aG g9s &0@k"?c*GEKX Gjt9hN&\6 '''' 6\%$&'6&'67327&#!65#&3 mmgrk zYYޱqZre[c7 7 c ,35'533#3!'#'5!5!5#5335#5##3qqlzyymj@@@<<3ffX苜qXGccG J!32654&#!2+73 ### 3׼irriPוؐB(T33#!!#'!'57!5#'5735q~q+!#!573#'5!3!'573!#'73!#'5u__vhhwѡIjj8/w,32#' 37+ &5%6323'#57'53@ǽ˼U4{|I0w_?8:<ؒ6ʞG2k >Y3~||~Obs32732753"'#"'4323$4'5;+"'#"'53275'&'&5?5572'#&'&57634%476=%9*"'<>((I- cE*HiAt>=2{6mNPp ZiU;xT"m ;wuP1RK00D(;,,e"@  p$B(!cc*@rJ&*EcJkg Fp/ԶQRmT_g2#27654'73&#"#'&'#"56='"'46'4#"4735#5&547/63654'%65432#"&546324&#"326%! ! : 7"&66&$55%%44%%5wvϚ{ɬ)::)*<<**<<*):<'L67I" B# B B " B# B C " B# C B " B# C C " C# B B " C# B C " C# C B " C# C C y <BHNTZ`fl3264'&#"&7367'67675673#''5&'&'7&'677&'67'%7&'&'%6767%&',*<&`7" bK*V&"g{ M M !)1! ! 3254#"&#%#7&'67&'67wv:<F>4,<[-ch`ch_7IL6a] ]pu otpu ot !)1! ! 3254#"3$3&'67&'67wv:<F>:]ch`ch_7IL6a] Uypu otpu ot %! ! #$''&'6%&'6wvcGkvJVVr~w{t~w}7IL0c Z    "*2:AIX3#''%#&'52#"'&5476!!'5%!!'53'5%3'5%3#'32765'&#"FF47H8(S A+[!?27@yf756FF u>p,y9#_>?@7`d@\hPPPPy?+<>w_VG{?,rCA+ +"'5676%&'547327676=&#%c_,*Iq{S$'NJǒxbO P >nS]] =f+! &56;2'5$%75#"3Q_d,)Hq-zT$d/'NK7ycOpO >S\^ f01@7#'#53'&'&54767&'&=33676=3#32654'&$ xwatbww!$$!wRMi"iLRx "iMRurRLV$|ddb e|$% ZSSZ %_TYYT $4&#"326&54327##53&ёϔ1./|䤣L~~|  $"32654&'#533'#"5476ϔ|Ҙ{פ㤤ף |~~L #&$76+"'&5'476%7!iiggi$jg ՕeE~Z5s qttrtt<֤ꧦg\ul91B52654&#"#43233#!5nom覨b͈wyyy{(|#53533#632#4654&#"#``d~~dc}mZyH{zF 4"32654&7#"&54767!!53#5!!3!!#3!!92GG22GF7+Db`E*8쌌O79NN97Os0LllllL1KӘJJ-<%#5#535&'&'5'73'3#'73'676=35'73'33n^F][E_nzTThOʍ7NjYYӖy! #!!!'!27674'&#pZ51;J&u@!IM_\ǃ$P<S  !#"#&5463 67!2#6#"t3`ySOuwNTx`3uX1((1E 1"32654&'67>3"#"54767&'&#529vEMWov*&%+tm@ME\ϓΓϖ=Bll)'ҕ*l8lB=&'5 %$ 56?6'ݗ85Tș4ZZ//[[5 @o +?"32654&,'5'&546322654&#" &$#"&547>fVvvVTxw v]BUxxUTyxH v^A____(+|T!%lϓgML____x)+{T!&lϔgMMs =>'.463227#"&5454&#"&'&5476766&RD:DC:Oɢy@Z:rdYwr)! ".hi+.iwsSJKAKL@ݰ |XHwyo†<>bQs-.cx68<32>32#&'567''#&&#4'3>64&"d9k$D7J+v=6Z*Bo,4x9 %j }*ƀwϧ}wh^)etWW<aAktAO]Rk9$!!!5!&5432!!5#67654&#"@ ><覧=]NnnMhh UyzzyU ><84353'5#"'&''#&&#4'3>32>32]PPP=(,4x9 %j >9k$D7Jo}vvxJv<aAktAO]ƀwϧ!5!3##'!5! ` @i8080k<'/27632#"'#576&#"4'5267>327&'"`Ibmn(q|n^,:4!~w$))%n4TuݾgvxaX[&ŝ9!C3276327632#"'&#"'&#'3276327632#"'&#"'&#'%g) ,N210&%pbUWM230N22+0$h( ,N120'$qbUWN13/M31+0(GG$3LKGHb 'HH#2MLGHa S!5!37!!'  _76`S@ʬAR!%Ue67&'&#"!3!67>54.#"!&'.54>325467675#53533#63232>54.#" .BFFKIC54CIKGFB/l &">ac^HD  aa_aa !EG]db=#% )(()+)QPQ((QPQ)+/ 6klj$?6FWWF6?$jlk6 }++--HNRh~&'4>32"'4>32&'4>32&54>32&54>32#!5!'!567>54.#"32767>54.#"327732>54.#"327>54.#"732>54.#",V 014.K0/*'<00<")11 NR'00 YԣLE z  hV!  Z+"  ^  _33@]22-"40446/*33UJ"+33^1/K=0T* ####  #$$##$$#  B #### *"$$" 2A!'-23353#3!53573#'5#5335!75!!5'57!hSShgTTgUVJ+IAC֛E77__vtt4!7CRb&54767&'&'5676767&'&54>32!535#5##3654.#"!32>54.#" 6!%%'F(F&%F)F'&&!4 j6)E&%F(8Iv011/59<5&?HPPIK* ')+K**K+)' *KIPPH>&5<:6uN|l||l|-I+N))N+@65555/F*3V6&7!&54''&''67.76;+"'5#"=6&'76767%25#6&' .Q$( kQ2*(}Q +A "^0!V'>A %E'75'Q]Wy_I1 #C$F)'`xo8:.@s.P mz "x?.#1p#41`&jD"acLHJ ~447| JlL"bT_32>54.#"32>54.#"!5&54767&'&546767&'&54>32'&'.#"y4[14[23\20[5  CJ "$&LF'F%$G(CN%"" S:>st=:8d88d88g66gu9:%N&KRS* '**M**M**' *SRK&N۠:9}qyyq}!%Ueiz67&'&#"!3!67>54.#"!&'.54>325467675#53533#63232>54.#"!57#&'.54>3234'67632# .BFFKIC54CIKGFB/l &">ac^HD  aa_aa !EG]db=#% )(()z7<>k987%%77;k=;7+)QPQ((QPQ)+/ 6klj$?6FWWF6?$jlk6 }++-- !yCB{C!$$!C{BCy! HLP&'4>32"'4>32&'4>32&54>32&54>32#!5!5!,V 014.K0/*'<00<")11 NR'00 Yrr_33@]22-"40446/*33UJ"+33^1/NNOO2A%)5!5!3353#3!53573#'5#5335!Z;hSShgTTgUV^^/oo#E774@4767&'&'5676767&'&54>32!&535#5##3h 6!%%'F(F&%F)F'&&!4 j<5&?HPPIK* ')+K**K+)' *KIPPH>&5<:6n5|l||l|*J".7=6&73#!&54'''7&''676&7;2547#";65'"37IML') x >oT`+`gZ +Y @#]3?&W!g A8/QE)',Qo8:$whPSmh**z1"0@)5"@YRb0&54767&'&546767&'&54>32 "$&LF'F%$G(CN%"" 9:%N&KRS* '**M**M**' *SRK&N۠:9"Q##"'##56'##"/547? dsU 2`g26;2"##'65##"'&5476;2&'5476&+"326733276=4/#"567654'&#"35&5?^g7%SB\JLZޭ\<."7Y@ؘ aj7{6Gf!KQM 1k`t0%K6F98:d  mOE:R p&i  C]&'Ax.+0 nM,W`c,L3#&'&'&6%3#&'&'&63#&'&'&6#"$&5467332$654'&'7  +  , 7  , (ҤӧvCMNDv9?cyɦt3Z|`ŻN[O}БBr1a`bb`a1)EMTTUUTTME)r3#"/4?23*A+ ZP-@3#'654'&'#"54732Nn7S3ڿWP'6?F` 1TFG*֙-@R/"#"=4?2%#"=4?2n0#NI<Ù'PH*~: ۉ8z"C"'4723!#"5472!5bGZOO;Z$}@Ϝ 3363'$6'")2y k?WXc1  3%#'#3%#%,$//c}(,377#'#'547#5773%%F*kknm*&ttrt&<<7CA<<{8AMtG#&#"'5654'5673;54'567332733273+&##&#"#&'565qI3 YY4Jv4(??)4vK2YY 2Iv4)??(4v[#;17F-:S8!cc!8S:-F71;#[RS9 cc 9Sv  ;G7567&'&'3#6737'#&'7#&'6735'67#3335#5,+UU++(*((=((<(())ͼ mm r`^^]qͼ nn q]_]`rchh1hh-.,-C..C.,.-n//_R_//~ijhh~N yy ~hiii~ zz s.. #.6CMhw!2732!'5675'&=32#$'57637&/&+"+&532?4/%32#'#&&=4?#'57335'3!273+#='!"/547354;2?!&=3d4EXJ)fd2(Vfgؐ7FK(?H! 1x0!+V^i.Z LZshV>N%!Jh,OUU*^7QG8*F 1 . ъf)MC =g9EkO 9!(-);&  ]t!y" & 2| ba$ U+  2E35733!&54?'7'7!!"'&%#'73676'77'7'&'676rK((#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*a\MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! 1DW!!5>7>54&#"5>32&54?'7'7!!"'&%#'73676'77'7'&'6762&9,!C6*]PDe+s"+ }V(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*]U1)8(3&ncQ&D- mMOHK$k$823!a IF 7=c`O]BA6$k#- kNA! (=Pc#"&'532654&+532654&#"5>32&54?'7'7!!"'&%#'73676'77'7'&'676 V.a?A[/USNGdhA@CB%VNDb,tK(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*S<\el23-2['&')b YK4JMOHK$k$823!a IF 7=c`O]BA6$k#- kNA!  "5H333##5!5&54?'7'7!!"'&%#'73676'77'7'&'676Wmm(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*Rv_`MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! 2EX!!632#"&'532654&#"&54?'7'7!!"'&%#'73676'77'7'&'676u,}-^?ET/JTTJ#H??(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*_ptcdrr@89@ SMOHK$k$823!a IF 7=c`O]BA6$k#- kNA!  $9L_"32654&.#"632#"&54632&54?'7'7!!"'&%#'73676'77'7'&'676,2==24;;7?NST2izix~"E(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*A;;@@;;Af`5(sa_t MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! .A!#!&54?'7'7!!"'&%#'73676'77'7'&'676_U(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*2{MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! ':7&54?'7'7!!"'&%#'73676'77'7'&'676(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*MOHK$k$823!a IF 7=c`O]BA6$k#- kNA!'9HR!273!567&#2&'76+&67'#'6765'533!273+#'!"/47_4BZW \_&,,X $q ӚeHZcTi*KT}75 b\V/V'f::p ?)\ ) 9s s%00%2<J\e3 + &=%62367#&'&#36&#&#"3274/"34?3'35732?5##!'53.cW{K|".m4 wJG<-V0F @jX[% 8HD }D}yt!7_ ;`OL5_k, ߋ~y}/M<4{1;C,[_ei' [)$ /:BR`j # &5%6; 65%&# !27#57&/#2#&'676+%3#'#&'47'3!27##'%!#"/6<n\Ua->+DSR04IbFER(k(_{aZ)F NF&y I#XYtTpXYSmEb,#4' FV ! Y1 1_ Ug,17H27&' # &5%6367&#'.7&67263'#%; 65%&# WNn\UaNWZn~rzrszr~o>+DSR&XYtTͿWzzWapXYSa/232#!7&!"4#".547673267Ws   y+S Leopq:*$JKK%>)َer(Y$h?}}|r<.32#".:BAW㖗866 65chŮ;?!32#".%2#".54>:BAW㖗866 65666 5chŮ;?!54.#":BA6 665ch =!!54.#"%32>54.#":BA6 6656665 ch =!!54.#"##"'5##"$'&'!5!5&'.54>32!!676767'%'#A"$@$%@#"@$"#M ONAwbjR8=>p;;p@?6HZTwCNN Ng'H''H'(H''H`XAK|@X1(ԁ3"|DD}DD}DD|" 2/ "1X@|AX1# 9Y%&'%67&673&/'67 &'"&'6?&'3' '7  &/7&'>74+-CCQT76'@\R#\;;["S^9$C9TSDGIO,%oN Mk%*U@R?? );322=  9%EEE >2dUDY,  E&%+ B@0"AR/0?wA%od/D&3.YaQ/5#3$"uI' @3/u= =#n- .... l4% % 32+#".7!#"&'&'#&=4;733783%++VTXVUT,*3/.tt/?GG~F6F~GG?>D9/Cp"632&'.'#!#!#0-D'qrJFloUrL|MsVT 'NQ9;:;PHi?CD|))Z h632>54.#"367#&7&$735&'.54>32-R+-R-/Q,*R.̛X#/&)@O߁;6FNOKKQOG32Y22Y22[00[&皗1 #+VVUUVV+ _32>54.#"%2#".54>''#/'7''7''7/5?'77'77'7?3777'_~{|~xx#A%$A$#A$$B Ah7TKA [ AJT 6g@9$x#_ rr ]$v$8@h6SLA[ AJU6hA;%y"`rq ^#v&'I('H((H'(I'{H@('k i()?Hs<]SH$e$HR^;sHA)&ji'*AHs<]SH$e$HR^; "',16;@EQ3&7"7&'7&'7&'7&'6'6%676767&77&77&'"32654&'5&'.54>323#67#&#"/&'&547&"'6%676c&Rc!#QlE+6o.5"Y67+-4*&bN%#!dW,DH5-?65$[4-*2DD2/FEQ#"/%H-HMI2/$/ .$.4OLH,J $@D V>0&8a>!U*~EmLK}`G f7r &0>j!>a)E~CKW Gis7g:M57LL75M-Z '''' Y (5[J5( \d (5J [4 ''/GS2#".54>&'767&%76'&''67&'&'&'6767654676'&7>326'##"'&'&'&54767&'&547676&'&#"6&%6767&'&'&676&5467&'&6732767&:!!  G@s.0[Y  Y[1/r@D3//b+,--,+-*).+.,,-*G?q02][l88jgh 2{|2 ̚45::64 0|z1 gg)+,.*)MMLS68!8`Z\21p?G3..3368  86!QKM)*/.*)M5$##$59gTV++9Z^^Z9++VTg9'(''&()I8:9889: Z_59eUV-, <8.>euvc>-7=bccb>7-?cwud?/8MWZZW **D@@D+8,-VTe95^&)(&''(DA:AD.*!Y[[Y! )r67&'67&'4&6%67.'4'6&&'6767&54?67&'&#&'#&'5&'"'67&'&547632>54.#"2#".54>m#1(.-!*+%(27%#+&'. )--#IQ[K(,##$*M\PQ33- ;-5?VO<8-= .34/^]]_aY[`eKRONNOQ#ejpMcNTvJKr?VlLWW7p jk%n^*V{ww[11[ ww{V)\#fnnd-#JM 7B/""0C7 NK",dnnf#ghhggggUWWXXWWUZ %3!'#!52#"62#".54>BOF/1-"#  5 O Dn; $$$$v33'554#$/V R\ FkGSGUW GJGwc%Q2u!&5476'#5!%QsikB $Y&"BYYZy'#"'&#"'&'&'&547676763232767676'&'&'&/&'&'&547676762!2!%3276767654'&'&'&#"&#"3276767654'&'&lg&  ' !   &"7WR!  FK8!  A@   %bJdG[r             $&$  ' D"&%  $ #  mR )Ky           M!r26767654'&'."#"'%"'&'&'&54767676;27>764'.'&+"'&'&'&547676762%632$"26767654'&'&)"")".'bI_H  $G $#=M\" "XQ=#$ G$  H_KIb'i)"")"q    l?W,># "#" "  " "#" #>,W?~    OYx3!#!"'&'&'&547676?6767676'&'&'&#"#"'&'&'&547>763276;%326767654'&'&'&#"6767654'&'&'&#"32l[[GJZ-   @A   !8KF  &RW7"'  / ! '  $g  %    &    OK) Rd# !#& "*"D '  ""! 2   T   :      AZx-4H67&'&'&+"'&'&'&476767632%632 #"'%#"'&'&'&54767676;276276767654'&'&'&"276767654'&'&'&""'&'&'&547676762"'&'&'&547676762'&'&'&547654'&'&'&";276-&#"+"276767654'&5476%327%&"'&'&476762  IS<)(!$$*&+)('$ *O:R{356xRO* %+&.#%% ",&+mwn<;;8rowp:;;BV0/+"8:D@*|sa  -F(7 "*=8&0!2   1-5$& 6:B4M,Ji&'&'%&'&"632%676767654&2"'&'&'&5476767"3276767654'&'&'&'2#"'&'&'&54767676~8  ,!('^&) ?.13-z  9 + 8 8 3xpkXZ+--,YV{{mlXZ+,,)\Vnl|xhe4330ic}yge444/ja~wIP"2-.$  "" PI $.-2!v   31cdvwzwcaf31cdvwwqi`43d;8rowp:;;8rown<;l,-57'36%33#3#32+3#3##$'#7!:Z0nhMZS?++?SZMhn0Z:( jPP,PP` v ")- !676762!"'&'&'&54!!J &+}r1r J!,~'h,  k-"s! K476?6763&'&'&547632676767654'&7632!54'&'&76'&&#"'&/&'&'&#"#"'&'&/&'&#"&'&'&?6'&'#"'&'&#"!'476/654'&76'327654'&'&327654'&/!/#$ +CD"   !%2   !,F#  1')D  VzVT+g/& ,$ )- 00 p*  $ ,  S  2 42  asJ#   l71]% /~[#<$  o_%?,: *(;Y)$X$+|=L!6CX&PY89Do6 b'n2  83eF] 4T&  &  /50$?- 1@& 3l K  C"P1 :07@D:5XI6.D3[+-1:   q/A8   g&l9Lp{7654'"'&#"+"'&54?67676763276323273#5%6767'&#"6"/67#"27632327654'73654'676547&*b+"CZJ"Pt >Tn:< /8)5" '$1P8b, P0*'$M/hK9O!Lt8gC9C%V)+.|&-C-)+8K Qe+',T' ;cs  /^"|Y/ 428ۇϕl%%ot5oA='Y$ aT* ''G+- %_kj~r}jL`І|\gK@/.85c($7")3SZ67654/##3276?7%54'654'36767632#"'&54767632'610B ډ v=;z1/f       (r 4@  H67; zh| 9 >6!q     B/> '-EL4'&'&/767675'7! !'!654'!4'!!$4767>2"&'&'!654' .. UTT(oR-fH ~!88!~ Uppph,p<((zd7")3SZ&'&#"227654'&'''%'654.#"65&'&'&547632#"'&'&6#" B016˄ <W ;!1 .fa      4  ;76H    |h> 96qm      BO{s[#C'%%.'&"27>7%$6%"'&'&'&47676762%'|- -      8 8@uID`qS   SqGYq > q|s)&%$64'%%&'&'&"27676--- &  & !q``q! 2327632#"'&'&5476#$ 8z@A )/?'@xH )0$'*'2 27277632#"'&'&5476#$ [Wr o&-23A?X@yJL 1 - A  ' 7 eee77ɍ8ɍ?k ONOOt7tt7u B2632#"'&'#"'&54767'&54763267632676y I  lsD!. m$   1O3  6*=P*> "#  nQ26#"'#"'&'#'&'#"'&547&'&54767&&5476326763276  Ӆ"   PmO!unY, ' _ :  (̢1#: _& #- Խ =1 '2ĺ d #!!!!!%!!!!!!!!#!5!3tnonoUHVPBXyBd !!!!!!hp"#d35#7!!#!5!343srsd!!%!!!!!!Qfgh#p"#0 !!#!5!3phhEU3!!'#'!!#!!3!5ӇM_ r,,_ #!#3!3'3#!#3!3###533D,Ԑm_|P_H_dQ#"#3;54'&'&'!"3276767653#4'&'&'&+3!52767>5oZQPB;( -- &=>TN]o"#@>%!--!'32367675&'&'.5467676236767>32#"&'&'&'#"'&'.546767675&  J))II))J &$$S$$!  J))JJ))J   !$$S$$&*!""! ((\(( !""!#%    R.-R  R-.R "   %#!""! ((\(( !""!*  " R.-R  R-.R   J4'&'&'&'.54767676322767676767632#"'&'&'&'&'&#"'&'&'&5476767676765"#"'&'&'&5476767632!  $$#5)43+0!"" %='4  #--24+."  ".+42--#  %-*:  #"!0*g*1 #$  #9+.#  "Z34+-# #-+47(." $-+C,7"  &d8:02& $&20:=-2& (10?!  '&$6/r/6$&'  'D+:!  '228:/3&$$&3/:822'  )2/@' ((& :.:806$&& (K0267632#"'&'&'!&'&'&54676763267632#"'&'#"'&'&'&5476767!6767632#"'&'"'&'&'&54767#"'&'&'&5476767632!#"'&'&'&54767#"'&'&'&476767632&'&5476767632!#"'.'&5476767632&'&54767676   $             6   /           $      (   2     6           %    <    %  (   N276767653"4'&'&'&Nxhe4330ib~~bi0334ehx;8rown<;;==>--28;BA;82--28;AB;82-&lLl+ '1% %2"'&'&'&5476767! !+ ==!fx43+,,+34x34++++4o¬ì6a-28;BA;82--28;AB;82-&lLl+ !''!! !! !WUVV]RRSR^->==>-Iٶڶ&GGlLl+ 3'7'3! !7!%%!"pZ"ZZ"Zp"->==>-giiIvIvIIvIlLlc+ %5%7'%!! !RRS#^->==>-KKGTlLl-  '%'!!!!kkspy{;y<zffz> NrqN qrK% % -S{H{{G{SlyyK7% %' -i??4?ih@3@@GstGWcGtsGcd/3%!!%#'''%!5!%777ldLr*rp*LdldM*rq*pMdE.f:UūoxoU9g.Ff.U:oxo9U.s54'&5476276767632#"#"#"323232#"'&'&/"'&5476=&'&'#"'&'&547676323232?&547'&#"#"#"'&'&54767632676C(12l30'E f:#=6.@ N8E vZ  \u E8N @.6=#a  wFNd0110dNFy~ DzI'#4#,G2$:;$2G,#4#'I~? yFNd0110dNFy ?~I'#4#,G2$::$2G,#4#'I; s"276767654'&'&/54'&5476276767632+"#"32;2#"'&'&/"'&5476=&'&'#"'&'&547676;232?&547'&#"+"'&'&54767632676&  &  PC(12l30'E f:#=6.@ N8E vZ  \u E8N @.6=#a PL wFNd0110dNFy~ DzI'#4#,G2$:;$2G,#4#'I~? yFNd0110dNFy ?~I'#4#,G2$::$2G,#4#'I; wj'&'&'&767654'&54762767676'&76'&'&/#"'&5476='&'&76767*,dJS&&cASN'@2+_:1JJ09`++H,IRAc&&RO`4++,dKR&(aDOO&@3+`90JLOF1:_+.D+JSAc&&RN`1 05HoIH 53c!77\`j4OO4jfVA7g/5 HIoH53   05HoIL43c!77\`j4OO7gfVA7f05 HLlH53  w67654'&"327632#"'&'&/#"'&5476=#"'&'&5476763232?'&#"#"'&'&5476763254'&5476276767632#"'&#"#"'&#"327676%32767654'&'&#"#"3!,L,"20[!Q?R 'b3;K*9CN90JLOF1:M@;-H<2c& S?P!\/.["P?Q &c2:4/.&"./4;=16'+&1,"%&!6'+&./4:>1:#"$./4:>16'+,4:>16'+&./4;=1cn%#"'&'&'&5476767#"'&'&'&5476767632&'&54767676267632#"'#"'&'&'&27654'&'&'&"67&'&'&'276767&54767'&'&#"276767654'&/7676767654'&'&'&#" ,!2+75.+(%),7+2!)%+(6,4."7("2*p*3!(8!3/11+)%(!3*8+($)+-58*3!+ F7 A = ;*] A &l    1A ]+;݂ !l&%",1&+'61=;4/."&./4:>16'.5 1=;4/.&&./4;=1 5+'61>:4/.&"./4;=16'+&1,"8_/$   $/_c.,b" $#  !I?30C !'#  x!  #$ "b,.$  #'! C03?I K-[3b &'#"'&'&'&547676763267'&#"327%327676764'&'.#"7632#"'&'&54767676324676762676322##"'&'"'&'.5#"'&'&'&54767"'&'&'&54767676&'&'&'&'&547676?&'32767677676765&'&'.#"7676767&'&'&/326767674'&'&'67'&'&'&#"67'&'&'&547676767"276767654'&'&'"'&'&'&54?&'276767654'7654'&'&'&"67'&547676762  !/ !  /   @!$$)''%!$$S$$"#(&)%$#2#" '&-!$%))%% $$S$$$"%)(%$ -&""#      /     / ]~     _ /   ] /        JJ!  !J     2 6 Y2 6 1    8 < d8 < 6   %),++*) !$3R  R3&!-(-%2(&"#%(.2$( &',+,)) !$3R  R3'! )),,+)$"#%(.2$( "   i !xg   !      %     !  !   g    "$)($##$()$"$  % %% %  M<\l"276767654'&'&/2#"'&'&'&47676762#"'&'&'&54767676% %-;n./''''/.n.0&''&0eN>E1354BAKN=F0353CAJxhe4330ic}yge444/ja~\[Z](.35<;53.((.35;<53.("68MITNLJ;9"68MILJ;9m;8rowp:;;8rown<;}}w"327632#"'&'&/#"'&5476=#"'&'&5476763232?'&#"#"'&'&5476763254'&5476276767632#"'&#"27654'&%&'&#"327676%327632 654'&'&#"#"&,"20[!Q?R 'b3;K*9CN90JLOF1:M@;-H<2c& S?P!\/.["P?Q &c2;,,;>J=!6"=J>:,,:>J=",|XX|X.U|JU~-|U ~U.<%DREA 11 AERD%<%DREA 11 AERD%9r99r W +?Sg"&462    "'&'&476762"'&'&4767622"'&'&4767$2"'&'&4767wvv M] LV M L#)c*##*c)##)c*##*c)#ce,2$$2,e,1 $$ 1e,2$$2,e,1 $$ 1K8)UL)U~U)^U)Ip17#((#71p17#((#7p17#((#71p17#((#7Y'.n.''.n.''.n.''.n.' K &3@MYam+%5%32476;#"'&'7632&54?#"632'&54#"/72#547"&462"'&=3$ v #$ v "@%%@(@%$&$@%%@(J-Z-OpOOpJ-Z-*2d2((2d2M*'FI*'FeF)*IF)* ( a 'U|XX|Xc( a 'Kl267632%632#"'%#"'&'"'&547#"'&54767#"'&47632&'&54763&5476'* F/-<.  E** C!Wc.<'5 F *M+F /-;/bX"C ))D  /; <F*/#J"5C7/ N".X.$M51C5 "J#//#J{ 5CLM$.X."N 51C!wJ#/[ #! 4$#"# 4$32632!"hgٜؤlLLkpGQ?rAm %!#!3!bVZ?ZS.Sd,m8 %!%!35!bVZ?S.dd,m %!!!bVJ?ZS.SԂJm8 %!!7!bVu$S.SdJ  1120`1111SSRU"SQ#Qk!7!6(!33tJ(n?l(!##lItJ?(t !33!33tJtJ(n?n?l(D !##!##lItJItI?n?BOS2#"327676765!"'&5463!57!##"'&'&'&54767676#  98A)1zj2~!'8::>00/1=;;>/2qKFD6454FCNNCF4546DFKo5?'#"'&'&'&547676763"'&'&'&5476767632?gC?=0/1.?BK9$&! hTj]-D$'FD,.6ME%)&2:'Vl:g0,?)!:"9JOCQ>^v:Mc*ZeC03N35%&-Kt\K%9S >BWN=!$?$8(F!5{^?ZxN676 547&'&327#"'#536767&'&'&5432&5476323254'&54329(<G8;k,0$#CV[<'$a #9 !7AX ;7%'27)b3[X H<ߞ>$3g:=TEB7WPfG+1KHP<Ff#&T'0P+A'<}DCh' 5276767654'&'4igY[FJ$$$$V^bw~9==?x}/CD}>C/GFCG# !&547"xuvw҇>2;#!!676.BDx;:t<_! !_53} ! 55! !iR ! \R2! !E53Q ! R55}__֕jj.'7'7__j3jB$#"&=4&+5326=46;#"3a77`=MRcdQMtsݓXXw(326=467&'&=4&+532;#"+w=NQdc*(N=MK1077bKM࿾XGGXJI9:tJJl ! 4$32!5##7#vwCCL7h/+l &! 4$32>54&#">32!5!vwCC{OK]iy132+32#"&'32654&'>vwCCϼAUVl5BDEPvrZTRT:y`UFf[L7hA}|%/).-5316 0_pl ! 4$32#!!535#!vwCCJv~~L7hߣ5l *! 4$32>32#"&'32654&#"5!5!vwCC._k.JRRJ5}iYO«7L7h(F?>F(=$\l 2! 4$32#"&54632"32654&#">325.vwCC111001110ɷȴ:cf\,_WIwL7hI@@II@@= ;g*l ! 4$32%!!5!vwCCa7L7h*l 1=! 4$32#"&5463232654&'>54&#"2#"&546vwCC75789657e \[fu+..+-..L7h;99;;::G]| pS{{Sp |-..-.-.-l &2! 4$32254&#"3267#"&'4632#"&vwCC7ʸƴ9cf\.^VGw11022011L7h !;f)HBBHHAAl $0! 4$32!5##7#"&54632"32654&vwCC&##&%##%wwwL7h*& nmmn=(F  76767654'&'&'35%33!  '&'&'&5476767ywbd0220dbwyxwbd0220dbw9or6886roljpq6996qp96oooo6996oooo6}9:݈@>}~~}>@@>}~~}>=A_  76767654'&'&'!!5676767654'&#"5>32  '&'&'&5476767ywbd0220dbwyxwbd0220dbwYVS%F;=`HILVW?cdB`a9or6886roljpq6996qp96oooo6996oooo6_.X<<;_<<5'(]]IBBZooV@>}~~}>@@>}~~}>=Om  76767654'&'&'#"'&'5327654'&+5327654&#"567632  '&'&'&5476767ywbd0220dbwyxwbd0220dbwhh<:mmDGHM=NGHBCw}l89un;DESJRH@_`fj9or6886roljpq6996qp96oooo6996oooo6yNNtaa'(<}~~}>@@>}~~}>= +I  76767654'&'&'!33##!5  '&'&'&5476767ywbd0220dbwyxwbd0220dbwp&9or6886roljpq6996qp96oooo6996oooo6 @>}~~}>@@>}~~}>=?]  76767654'&'&'!!67632#"&'532654&#"  '&'&'&5476767ywbd0220dbwyxwbd0220dbw;J !iiCKE@EN||;9;<9or6886roljpq6996qp96oooo6996oooo6c nm)}|X@>}~~}>@@>}~~}>=,Jh  76767654'&'&'"327654'&.#"67632#"'&7632  '&'&'&5476767ywbd0220dbwyxwbd0220dbwa:9sab:99:7o6MK *@@M^^ģbcxz7p9or6886roljpq6996qp96oooo6996oooo6KJKKJKllE&%mnޟ-@>}~~}>@@>}~~}>=$B  76767654'&'&'!#!  '&'&'&5476767ywbd0220dbwyxwbd0220dbwzp9or6886roljpq6996qp96oooo6996oooo6`E#@>}~~}>@@>}~~}>=+BNl  76767654'&'&'"27654'&'.546  &54632654&#"  '&'&'&5476767ywbd0220dbwyxwbd0220dbwg<;;<<;;;^hAh^i;;w3i^^jj^^i,9or6886roljpq6996qp96oooo6996oooo6,=>=>>>kl>=EggOOss\hh\]hh@>}~~}>@@>}~~}>=<Lj  76767654'&'&'532767#"'&54632#"'&27654'&#"  '&'&'&5476767ywbd0220dbwyxwbd0220dbw7p6MK *?AN]^Ģbbyx788c9999ca9::9B9or6886roljpq6996qp96oooo6996oooo6lkD%%lmޟ橨 KJJKKJJK@>}~~}>@@>}~~}>=+8Ca  76767654'&'&'"32654'.  7!5##7  '&'&'&5476767ywbd0220dbwyxwbd0220dbwK('NLNM'&IHHIHahvtl9or6886roljpq6996qp96oooo6996oooo6{z~{ӟ>-,g#&%q @>}~~}>@@>}~~}>= (!5##%  '&'&'&5476767kn9or6886roljpq6996qp#:9q @>}~~}>@@>}~~}>=#A676767654'&#"67632!5  '&'&'&5476767`a`Bdc?WVLMD`=;F%S 9or6886roljpq6996qp ooZBBI]]('5<<_;<}~~}>@@>}~~}>=1O>54'&#"67632+32#"&'327654'&  '&'&'&5476767_f`a@HISSED;nu98l}wCBHGN=MHGDmm:}~~}>@@>}~~}>= +! !335#$  '&'&'&5476767@J@搚9or6886roljpq6996qp  @>}~~}>@@>}~~}>=!?67632#"'&'32654'&#"!5  '&'&'&5476767<;9;||NEDAKCii! F9or6886roljpq6996qp=|}'mn %@>}~~}>@@>}~~}>=,J2#"&5476.#"32654'&#"67632  '&'&'&5476767b:99:bas9:}~~}>@@>}~~}>=$!35$  '&'&'&54767679or6886roljpq6996qp@fE@>}~~}>@@>}~~}>= $0N2"'&476' 654'&'>54& 74632#"&  '&'&'&5476767i;;;<<;;<*iwe;;i^hh(i^^jj^^i,9or6886roljpq6996qp=>lk>>>=>=EssOOgg]hh]\hh@>}~~}>@@>}~~}>=.L%3276'&#"32767#"&'"'&547632  '&'&'&5476767=887xybb^^NA?* KM6p7!a9::9ac99999or6886roljpq6996qp /޸ml%%DklgKJJKKJJK@>}~~}>@@>}~~}>= %C2#"&547>  '!5##7  '&'&'&5476767#[--Z[ZZ--KMMK"LOt9or6886roljpq6996qp{zz{ӟ>-/g#&%q @>}~~}>@@>}~~}>ij !!5!!IKG ppp 7%Qp?4NGi85 b=<22pJJ '-m?GNi!!iu9.Ǘ>~~>iu2"&'&'&5476?!".'&47>3!'&'&54767>2 .(  '!  !'&  (.h2p "2" pi8!5! $EvZPJJi8!5! $EvHJJi8 #3#3#3!!5 sll66ivpppJJi8 55!#3#3#3$Hll66΄ΊXXXXi8!!5 $EvJJD! k>>D! k>>  vvib3!5 5!"'&'&'&i &&,v,&& 0+*%!JJ!%*+i847676763!5 5!"i &&,v,&& 0+*%!JJ!%*+0]!! MUVXeooi855!q΄Ξ0ij%5!!53  !Io>ij%5!!53  !Io>& !73#57!!'|Zoto|C} 2&& 5!'53#'!!!'Z| l }&2 !'!'!53 !yG!Z&cZIuoڞ  3#5!7!!! ycZIcZ5&o rd !53#'5!'! !c-Ic-&-fo%Jdc;dJrd 7!573#5!! !--c-Icfo%LJd;cdJ1!6767632#"'&'&'! $Iʞ uB "&*.37#37#37#37#5!!!!3'#3'#3'#3'#6666l`"66$66$66$66ZPhp> 7&#"7'7 #%+%;?2M3~{FC*9oX:Wib 55!5!!'!~䴴ddPR '327'' #!?;%2~4~*CF9XUp>2%&#"6767&'&"67632&'&547676767耕;>@Q#"F#!!%)*(+'~ !Ap*G&/$##*0,0.+"W!'&'&#'ZGGCia/4767!"!47676763"'&'&'&5!3!&'&5" %!*&,,&*!% "eeZ'&$(0+.!"-+0($&'Ze2&'&'&'&54767#"'&'2767&'&'32$A! '+(+('~!#F"#Q@>;CGGZ'!&'&'$W"+.0,0*##"/&GgX+B6%"'&'&'&547676$47676762"'&'&'&'&'&547676762$ n 8   I > I % O 8 lbQu R$'68"   vc.676767632#"'&'&'&%&'&54767&'&5476;#$&*0/6.i3b.-#4!!YY!&:?$ fLLf#&#/:&'+-23-+'rr'+-32-+Ve"'&'.54?654'&'&'&+"#!".4?64/&4676763!2;276767654/&54676762Q gg'Q  c     c  g"'&'.54?654'&'&'&+"#!".4764'&4676763!2;276767654/&54676762NSl TuSNh    4  i^+#76767&'&/3#6767!5!!5!&'&'zK~BaJ"@@"JaAK^&'c5 5c~&OUä'66'U=;JHd)))dHJ;=#u ! !=?Fvu-1W  =&  o&  v@ v+ v@'  v v@'  v+'  v@' '  *@ *@'  *@'  *@' '  *@'  *@' '  *@' '  *@' ' '  **+ *@'  *+'  *@' '  *+'  *@' '  *+' '  *@' ' '  **@' * *@' ' * *@' ' * *@' ' ' * *@' ' * *@' ' ' * *@' ' ' * *@' ' ' ' * ** *@'  *+'  *@' '  *'  *@' '  *+' '  *@' ' '  **@' * *@' ' * *@' ' * *@' ' ' * *@' ' * *@' ' ' * *@' ' ' * *@' ' ' ' * **+' * *@' ' * *+' ' * *@' ' ' * *+' ' * *@' ' ' * *+' ' ' * *@' ' ' ' * **@' *' * *@' ' *' * *@' ' *' * *@' ' ' *' * *@' ' *' * *@' ' ' *' * *@' ' ' *' * *@' ' ' ' *' * *pv ppv@'  ppv+'  ppv@' '  ppv'  ppv@' '  ppv+' '  ppv@' ' '  pp@' * pp@' ' * pp@' ' * pp@' ' ' * pp@' ' * pp@' ' ' * pp@' ' ' * pp@' ' ' ' * pp+' * pp@' ' * pp+' ' * pp@' ' ' * pp+' ' * pp@' ' ' * pp+' ' ' * pp@' ' ' ' * pp@' *' * pp@' ' *' * pp@' ' *' * pp@' ' ' *' * pp@' ' *' * pp@' ' ' *' * pp@' ' ' *' * pp@' ' ' ' *' * pp' * pp@' ' * pp+' ' * pp@' ' ' * pp' ' * pp@' ' ' * pp+' ' ' * pp@' ' ' ' * pp@' *' * pp@' ' *' * pp@' ' *' * pp@' ' ' *' * pp@' ' *' * pp@' ' ' *' * pp@' ' ' *' * pp@' ' ' ' *' * pp+' *' * pp@' ' *' * pp+' ' *' * pp@' ' ' *' * pp+' ' *' * pp@' ' ' *' * pp+' ' ' *' * pp@' ' ' ' *' * pp@' *' *' * pp@' ' *' *' * pp@' ' *' *' * pp@' ' ' *' *' * pp@' ' *' *' * pp@' ' ' *' *' * pp@' ' ' *' *' * pp@' ' ' ' *' *' * p*p *pp@'  *pp+'  *pp@' '  *pp'  *pp@' '  *pp+' '  *pp@' ' '  *p*p@' * *pp@' ' * *pp@' ' * *pp@' ' ' * *pp@' ' * *pp@' ' ' * *pp@' ' ' * *pp@' ' ' ' * *p*p+' * *pp@' ' * *pp+' ' * *pp@' ' ' * *pp+' ' * *pp@' ' ' * *pp+' ' ' * *pp@' ' ' ' * *p*p@' *' * *pp@' ' *' * *pp@' ' *' * *pp@' ' ' *' * *pp@' ' *' * *pp@' ' ' *' * *pp@' ' ' *' * *pp@' ' ' ' *' * *p*p' * *pp@' ' * *pp+' ' * *pp@' ' ' * *pp' ' * *pp@' ' ' * *pp+' ' ' * *pp@' ' ' ' * *p*p@' *' * *pp@' ' *' * *pp@' ' *' * *pp@' ' ' *' * *pp@' ' *' * *pp@' ' ' *' * *pp@' ' ' *' * *pp@' ' ' ' *' * *p*p+' *' * *pp@' ' *' * *pp+' ' *' * *pp@' ' ' *' * *pp+' ' *' * *pp@' ' ' *' * *pp+' ' ' *' * *pp@' ' ' ' *' * *p*p@' *' *' * *pp@' ' *' *' * *pp@' ' *' *' * *pp@' ' ' *' *' * *pp@' ' *' *' * *pp@' ' ' *' *' * *pp@' ' ' *' *' * *pp@' ' ' ' *' *' * *pp' p *pp@' ' p *pp+' ' p *pp@' ' ' p *pp' ' p *pp@' ' ' p *pp+' ' ' p *pp@' ' ' ' p *pp@' *' p *pp@' ' *' p *pp@' ' *' p *pp@' ' ' *' p *pp@' ' *' p *pp@' ' ' *' p *pp@' ' ' *' p *pp@' ' ' ' *' p *pp+' *' p *pp@' ' *' p *pp+' ' *' p *pp@' ' ' *' p *pp+' ' *' p *pp@' ' ' *' p *pp+' ' ' *' p *pp@' ' ' ' *' p *pp@' *' *' p *pp@' ' *' *' p *pp@' ' *' *' p *pp@' ' ' *' *' p *pp@' ' *' *' p *pp@' ' ' *' *' p *pp@' ' ' *' *' p *pp@' ' ' ' *' *' p *pp' *' p *pp@' ' *' p *pp+' ' *' p *pp@' ' ' *' p *pp' ' *' p *pp@' ' ' *' p *pp+' ' ' *' p *pp@' ' ' ' *' p *pp@' *' *' p *pp@' ' *' *' p *pp@' ' *' *' p *pp@' ' ' *' *' p *pp@' ' *' *' p *pp@' ' ' *' *' p *pp@' ' ' *' *' p *pp@' ' ' ' *' *' p *pp+' *' *' p *pp@' ' *' *' p *pp+' ' *' *' p *pp@' ' ' *' *' p *pp+' ' *' *' p *pp@' ' ' *' *' p *pp+' ' ' *' *' p *pp@' ' ' ' *' *' p *pp@' *' *' *' p *pp@' ' *' *' *' p *pp@' ' *' *' *' p *pp@' ' ' *' *' *' p *pp@' ' *' *' *' p *pp@' ' ' *' *' *' p *pp@' ' ' *' *' *' p *pp@' ' ' ' *' *' *' p *pFg  5  5p~p~ 3 5p~  #3  { pe   HX*)6UUpe  p*)|cUUpe  p*)cUUpf   (*)U::Upf   *))U8U#u >>u-4O :!!" 767>54'&'&'&$  $'&'&547676-nt[^]/.^^qr rt[_\./^anrg3@??@̀@??@.48fj~fh4666fj}fk34ūʪ4O6B" 767>54'&'&'&$  $'&'&547676!!#!5!nt[^]/.^^qr rt[_\./^anrg3@??@̀@??@R++48fj~fh4666fj}fk34ūʪ  4O6B" 767>54'&'&'&$  $'&'&547676   ' nt[^]/.^^qr rt[_\./^anrg3@??@̀@??@MLNL48fj~fh4666fj}fk34ūʪqrqs- !'G'GF'GG.#5!67676&3!'&'7767 b=rD15;- b=sC16;* U5O9:[I%'&'7767'&'&'&54767676767676&&'&'678C b=sC16;D8788C b=rD15;H55 + > ՜U5O9:[>?JKVXKK>? 'U5O9:[":;PG*# nb11S$ .&D77'6767&'&&'&'&'&5#'76767676767657'#( SZ%;50Dr=b A 1(&!#89[:9O5U,*7<7]Y]ETUa[h.'!!'7676?!!76767&'&!!;61Cs=a  ;51Dr=b yd[:9O5Tض[:9O5UN.;?%676764'&'&'76767&'&636"''7676?6!!Q?A! ">Kb;51Dr=b :)/+)G"F*&5=A;61Cs=b *T&FIWWY]DU$[:9O5U,N/,95\N):[:9O5U|.;!!#"'&''$76?7>54'&#"76767&'&676WvGaT954'.'&&767676&'&'776?&'&'&'&4767676!!1'*F"G)+/.+*F"F**% b=rD15;bK>" !A?Q.* b=sC16; LC@" #?CO4N\59,/NN/,95\NU5O9:[$UD]YWWIF&U5O9:[ !KH]XW^BH".#'+7!767676&!!'&'776?3!#3hK b=rD15; b=sC16; {{[NU5O9:[hU5O9:[.@'&'7767#5367676&32#5676'&'&#x. b=sC16;+֎ii! b=rD05;1&+"!+%2 6U5O9:[t:p:tU5O9:[$#!2-41`##.)'&'7767' 767676&7 i b=sC16;x y b=rD15;w x;U5O9:[')U5O9:[م.376?67676&#4'&''&'7767#MD b=rD15; b9M > b=sC16;=# ,k`ԜU5O9:[IbT3 6;Oe5 jT@OMJ&e<ehWANHC %80!!26532#"&54&#" #"&54632&` Y_uJ:::[ ##7w`tL>6;e5 jT@OMJ&e<ehWANHC F 5 5E~c~:F 55~~d:1I11JF3#5 5b~c~QF3#55~~dQ1I11JF3#5 5~c~SF3# 55zI~~dS1I11JF3#5 5b~c~8F3#55~~d81I11JCF ;B#"'&'&'&#"5>32326#"'&'&'&#"5>32326 5F_W` UOX_Wc  UM]_W` UOX`V` UM\'~UPE:=MSNE;=KPE:=LTPE:>KPNCF ;B#"'&'&'&#"5>32326#"'&'&'&#"5>32326 5F_W` UOX_Wc  UM]_W` UOX`V` UM(~UPE:=MSNE;=KPE:=LTPE:>KPNF %!!'7!5!7%5E'GFwic u̵NF5!!'7!5!75%GFwy(juF 3:3267#"'3267#"''7&#"5>327&#"5>32 58<-#M]_W9E"nGM]_W`??,$OX`V9E"nGOX_W`I'~E KUPEq,KUPE:E LTPEs+MSNE8PNF 3:3267#"'3267#"''7&#"5>327&#"5>3255%8<-#M]_W9E"nGM]_W`??,$OX`V9E"nGOX_W`~(E KUPEq,KUPE:E LTPEs+MSNE8F5!5!-5 %%~~(~'~\riF!5!!5!%%55%E~~~~(\iwF:&#"'&/&#"5>32326!! 5F_V` UOX_Wc UM~'~PE: =MSNE;=KFPNF:&#"'&/&#"5>32326!!55%F_V` UOX_Wc UM~~(PE: =MSNE;=KF F")#"'&/&#"5>32326-5 %%E_W` TPX_Wc  UM(~'~PE: =MSNE;=Ko i F")#"'&/&#"5>32326%%55%E_W` TPX_Wc  UM]~~(PE: =MSNE;=KoiFB!!!!55% %%~~~(Z'~|3WiFB!5!5 %%55%F~~'~~~(EiF,55%-5 %%~~(~'~viF,5%%5%%55%E~~~~(QTi{F 55E~~1F 5 5~d~1LJ11F3#55b~~b1F3#5 5~d~b1LJ11Fm!5!!5!5F~~~`NPFm5!5!-5~~(~:[F 555E~~~PPNP[F55-5~~(~#;Fp$.#"#"&'532767676325F]MU  cW_XOU `W_~UK=;ENSM=:EPKNPFp$.#"#"&'53276767632-5F]MU  cW_XOU `W_}(~UK=;ENSM=:EPKF%,!!!!.#"#"&'532767676325~~]MU  cW_XOU `W_~|UK=;ENSM=:EP[NPF%,!!!!.#"#"&'53276767632-5~~]MU  cW_XOU `W_}(~|UK=;ENSM=:EP[-F@ $!!!536767623!&'&'&!!~B:!,x 1MQPM1 z+*~7'H?a93[2332[032326#"'&'&'&#"5>32326%5$E_W`  TPY_Wc UM]_Wgz  TPYaV` UM]\ C? PE:=MSNE;=KPE:=LTPE:>KR%$ffuWF;F#"'&'&'&#"5>32326#"'&'&'&#"5>32326%$E_W`  TPY_Wc UM]_Wgz  TPYaV` UM?C \ PE:=MSNE;=KPE:=LTPE:>KRuf$%yF3>3267#"'3267#"''7&#"5>327&#"5>32%5$7<-#M]_W9E"nGM]_W`?>,#PYaV9E"mGPY_W`J\ C?E KUPEq,KUPE:E LTPEs+MSNE8%$ffuWyF3>3267#"'3267#"''7&#"5>327&#"5>32%$7<-#M]_W9E"nGM]_W`?>,#PYaV9E"mGPY_W`?C \E KUPEq,KUPE:E LTPEs+MSNE8uf$%qF5%5 5E~~'~P#PPNqF55%~~~(PfP'%!%!!N r'%!!!N B"7V)7>'&'&#"!!67632!!-G )eII`CjZZZcFE'QCqon#WVb./ww3yB)7V(!! 3!#!HCvrKDRy-&#!!!!,Zc3o84`!!!!BK@'S`V'gFj2!$763676'&gz3W4LV0(55*lDUB1%E0 j@@TU}dxaEFD 7!!7#"3226&#"(H'owOTxTx+ނyzUf$%32676&#!.+;# !3 yCmnOmD[#rcWUbJWl63F1Z %ZgfXXspR\D֔z6327'&#"!!ZB&7^}QFtb/j( )"26764!!"3 ! 5477.5476Ԏ BԎ N&T0 8\v`{AB!L%LFP EO>eqPB['#"!7676;#"!!!!!#376763)E! q kk*D -- !kkDNNWXDN``NWX[!!#"!!!!#37>3{D4d*D> =-!$7CO``N[!!!"!!!#37>D> ,-!)7CO`N[)-#"!7676;#"!!!!!!#376763)!)E! q kk*D - !kkE3DNNWXDN```NWX[!)#"!76763!!#"3#!!!#376763)E! q kkD -- !kkDNNWX)DN``NWXS5#"!#37676;2!!;!"'&547#37654'&E! - !jlK6 L-SS-@)S-)DR`NWXX=m.6N%%X9j=MN#k&767632!!;!"'&547#37654'&#".#"#"'&'32767654'&/&'&54767632βjS L,RS-@( S- >55/ 0`V[11 U7B3 dg`r0Waah_45 d7H4 |}:u_]_KgL%%X9j=M? %$)&8 #005   (K8f+2ZZ%49 !Q:e(/VVbh%)!?676?>54&#"67632 ?D?HEs_ƮXr8h[ZHD%$AGCv&(ldd-+&'>?P1pBf!#xfs3#%3#*-3#N'.#"#>3232673#"&- / {vU": / #/ }vS#9!% @8) =:#6!#'#9Сz !373{Р332673#"&5 IGA_#{<7=6}83#@*73#3#I###ςR#.#"#>32 IGA`#z<7=6}9f&%!#32767676'&'&#"!!67632+^G36lCH_ -/?#N'{quOO5v #CG~"SI#.&:=`` !3#!#73CV"LM"`JkDf`!!3#+"'#5&%3"'"3276$B%2h)bvf 44*}9^ S'\*`0cvL9.,XR'qH> rX)XY' rcq eXR' yXqH>,Xu' s rX,Xu' u rX)Xu' sq )Xu' u/q  AR' tSqH>,Xv' w rX AY' tS rc9bm' yw wt Au' s tScu' vu s,cau' uN vuc' vu t?>' xP tA>u' s  xPA>u' u xPA>'O8 xPc' vu' \vh!!hp /73267!#"& A2LYgZ0UJrX\t 4{ !;#"&7HC4\)o'\62_<22Q \m Q \d R[H~w16eG34JJ$-TOBO[(KK-3R|&HB&&&B&&&&*&&BF&B&/X}6t8JJ'8DD'BB!['$ 8w8w8w88 8B''B8IqO nt0  QH~{ B 3Op-3'R'IL('{TitftftV-DpHB&&&&&&&&&BBBBB}}}}6tX&-8DDBBBBw8w8w8w8B 8BBBBB n n n n'HBDDHBDDHBDDHBDD&'B'B&B&B&B&B&BB'$B'$B'$B'$& 8&w8&w8&w8&w8&w8[&8w&88&w8&w&N8&8& 8& 8& 8p9 \BBBBBBgMB&8&&8/I/I/I/IXqOXqOYq} n} n} n} n} n} n6t6t808080!['|&'|o'DHH)D$T|l'e&B:!)"y&BV [HHHHe'OM/I&8qXBq'|| i=y6n8)80% 0  '2 %& q& hB& &8&&8&w8BB} n} n} n} n} nApB'$B'$&8BBBB%0w %& q& hBB'$ G)& 8p&B&B&w8&w8BBBB&8&8} n} n/IXqO_& 8;9*-(80&BBBBBBBBB6t;=C?wfkHFD I<0|$&Bw1'C''DDKC)ANE2DUw:*'QAJ   9_+z8w09pZ \AC`8\QJ8JI'!=[EqqWz6b&l^8D24wEE8B^RCP'4N>cYA$GGwE+E,E?A`)4m5 YPY:S(=44mmu 2S+@Y:6_8#&OiIe>Mfi3EVs 4M .d^wNd.U#&XG$dU3*,,dDm-*C5/i4$o[|&&&8&H&&*&&2B&F&&X6tP&6tF2 [NcF'z2A: [4N8L~A0B'DdC_cB=[cBcB=H:_u*_u`B=Z@kdHoDf&'}<~D'?%ZGj/'*?NZ'PDDwHnX&'HB*&E'HHB&&S|&HJ/&&O"&SY&&B|&|&&i&L&&&*&&B&F&HBX#NB& Bu&|&Hs&,84B/448F44B4'DD,>$UVQ8Qi_88D8BB 44DAIw8w8w#8 484Q<B= LAI& 8$ %4%@4TH@mm-(I6?<B=<B=HID=AsR&4|&f1L&+&4 &4L/BQ&8&8}ZBQ&D4 & 4LH=HBDDt,[6ty6t5[ 8cN7cN7&L&8&4&4&4w8p&BBABAL/%&4&4BBHAHAHDBQu&8|C`X?nQ)K4BAW>:2AaQDDv2wW8144BD@  ],>Nt0] KDKOrX Yr$rXrZrYBCrE $%G;Z(rGMTdM'8%iX("!!!Ldji%{l,0=f|&'8|&'8|&'8HBDD&'B&'B&'B&'>'B&B&B&B&B&B&![B'$& 8& 8& 8 & 8:w&w8&8&8&8&w&w&w&w(*&8*&8*&8& 8& 8& 8& 8BBBBBBBBF&'F&'&8&&&/I/I/I/I/IXqOXqOXqO8q} n} n} 5} n} ntt6t808080 8qO![&B&B&B&B&B&B&B&B&w8 wBBBBBBBBBBBBBBHHHHHHHHHH} n} n| i| i| i| i| i6t6t6t6tFFFFFFFF~6v5s/$2222228w6v]5s [ [ [ [ [ [ [ [8w 6 v~5sNNNNNN{8w6v 5PsZZBBBBBBk8w6v5sccccccccwvsB=B=B=B=B=B=B=B=t6 v5sfFF22 [ [NNBBccB=B=FFFFFFFF~6v5s/$ [ [ [ [ [ [ [ [8w 6 v~5sB=B=B=B=B=B=B=B=t6 v5sfFFFFFFFOE [ [ [ [ [*C5&p@NNN[NN&&x/@cccc''cc6t6tX$ wB=B=B=B=B=i4o33_3p--33F  TT3T xe e7)7))FpF-^]$3JJkri$g}p8F7O88')'''8'_' '+{{{PG*')'{'R'I'''8'_' '+{{{PUBB 8 &)+%#BXP&0|tu.C. 8 4_e3cJataWI3 =&'p&X5\ GntftRtftRtIttfttftItt_nf&&&& & &HB&*&w8_8G88ttt t8w8DD'B8 GO& GOHDZdidZcZi Z\ieZRZdiddZiZiZZ7a7aZ)ZZZdiidZMZZUiUZZZZiZcicZcZiQiddZdidZi1@@mmi iZiZZiZ1i1 X5*Vttfttf+$Z30DDAt}XXd-- R- F s+   mmlm  mm3n3nmPs33333 = =UtfttfttUtftft'vZJJJJdd(3 dlJJ6ssss sssss sf4ff4f4ff4fd''(llllllllllHdHdHfHdHdHdHdHdHdHdHdHdd  dHdHdHdHdFFt3]tZttutwtwstepeppJp~ ttttZttttttttbtbtptttZZ_tttttttttttttttyttttttkCCtt1tttttStttttbtt>tttt ttt2tt/tttt2tt*tt"tt5tt!tt5ttetRte{bvttttttttttttttBBBBBBttttttttttt5t5t_ttptltpt tttttZtMAMMlv&/O|dddd0dKMJKNN+M+++++-vd9KKKKdccKMuWWKKt[tmtmtmtmtkRRllt,c5qhh2Q}.Bwlllllllllliiiiiiiiiiiiii&&rruiigiJJ00***************33333343434 -               - %B 7B7&8g1DU.z[[[1[2[SW t O7{89wl,)e,,)) , 9 ?AAAh w{* 79k:;2<&:$&$&$&$&$&$2$7<$8$9u$:$<$F$G$W$Y$Z$\k$$$$$$$$$$$$$$k$k$$$$$$$$$$$$$$$$<$%$&<$'$*$,$.$0$2$4$6$7$8$9k$:$$$<$$$$k$u$v$w$x$y$z$$k$$h$$h%9%:%<%%6%8%:%%u%w%y%&6&&& &"&'&'>4>L>d>|>>>>>? ?$?<?T?l????@ @|@@@@@A A$A<ATAlAAAAAABB,BDB\BtBBBClD(D8DEEEFtFGGHH|IIXIJJKDKLdM$M\MMNHNNO\OOPDP\PtPQxRRS ST\TlTUdUVV`VxVWWWX4XXY@YZ,Z[`[\H\],]L]d]]]]^ ^$^<^T^l^^^^^^__,_D_\_t_____```,`D`\`t```aXbb4bLbdb|bbbbbc c\ctccccdHddddee(e@eXepeeeeefff0fHf`fxfffffgg g8gPghgggggghhiiijjkllmLmdm|mmmmmn n$n<nTnlnnoopDptq<rrssst@tuDuvlvw wx xpxy`yz`z{0{|$|}P}~P~x,@$@|<t Hp<``\8p` @|P\l(d d8 h dP0tt$hx8x8d$DTt,H\p HdTLh @ Ll8L`t`t0Lx8\,\x8L`|$8L`t(H\p, 4\`(T 8HXx $@Xp4DTd¤´hxtČĤļŤ\ƬXLȴ4xɸX\\(͘ ΐlτϜϴhXtь,ҰPL@P0`Dج ٌی ܴP޼DdttX($<L, p l(@P$hHl<P`dLL HXh\l(p$x$<\,D\thxDltPT$44``xp    T  @ h    (  \<(@$t`4x@(8h@|L$Ph<  X !!T!""l"## #8#P#h#######$$ $8$P$h$$$$$$%%%0%@%P%h%%%%%%&&(&@&X&p&&&''h'(t) )*+8+,X,,-d-t--.X.h.x.//080H011H122X2h222223@344455P556(68667T77788l88889H9:(:;<<|<=>>?<?@@<@AXAB0BhBC CCDLDEEEFFFGH,HII`IJHJJJK8KKLL<LMlMN`NNOPXPQQRRRRS<ST TTTTTUU U8UPUlUUUUUUVV,VDV\VtVVVVVWWW4WXWxWWWWWXX X8XPXhXXXXXXYY,YHYdY|YYYYYZZ(Z@Z\ZtZZZZZ[[ [8[P[h[[[[[[\\(\@\X\p\\\\\]]]4]L]d]]]]]]^^(^L^l^^^^^^__,_D_`_x_____`` `8`P`h``````aa,aDa\ataaaaabbb4bLbdbbbbbbcc(c@cXcpcccccddd0dHd`dxdddddee e8ePeheeeeeeff(fDf\ftfffffggg4gLgdg|gggggh h$h<hThlhhhhhhii0iLidi|iiiiijj(j@jXjtjjjjjk k$k<kTklkkkkklll0lHl`lxlllllmm m8mPmhmmmmmmnn,nHndn|nnnnno o$o<oToloooooppp8pTplppppppqq0qLqdq|qqqqqrr,rDr\rtrrrrrss s8sPshsssssstt0tHt`txtttttuu$u<uTuluuuuuuv v$v4vLv\vtvvvvvvwww4wLwdw|wwwwwx x$x<xTxlxxxxxxyy,yDy\ytyyyyyzzz4zLzdz|zzzzz{ {${<{T{l{{{{{{||,|D|T|l|||||||}}(}@}X}p}}}}}}~ ~$~<~T~d~|~~~~~ 8Ph 8Hd|,<Td|8Tl `T4d4Ll`|,d Xp0p0Tdx<$t,xDPx4 4p$8L`t(< h 8tH0Xl|(<\\xXhx0,\|<\|<Td|4DTdtD\l<0`Hx8h@TXh$8| XHtż0XƀƨDǘ4| HɈdHˈ$̀@̀PΜ@τXДPѐ,Ҁ4ӠhԬDpTװ`4ل,ڬH(XTݬިDlߨ@\|,$(Hl<X(Tp,Hl,\|<pdL d,L h<l|THPp0PH0<x\ |  \   X   l  h 8$Lt(l<4 \ P8|,4l T|$P|  \  !!h!!"D""#H#|#$$\$%t%&D&&'T'(P()0))*`*+4++, ,,-`-.4.//p//0 0D0l0001(2282237788H8889 9(9`9999::(:\::;;8;;;< <<=<=>?h@(@ABxCLDD0DLDhDDDDDEE,EHEdEEEEEFGH4HHH\HxHHHHHI I I8ITIpIIJJ`JKLM NNOO,OXOtOOOP P4PPPxPPPQQ$QPQlQQQQR(RDRpRRRS SPSTT|UtV(VW WxWX(XXY<YdYYZ\Z[[0[\[[[\@\\\x\\],]X]]]^^\^^__X__``aabb@bhbbbcc cHd8deXnTqqTqrrlsstu uwz{{|{|H}@T|@| Pt\|<\HLHDh|d88L4P(<$`T`TԠDք <d|ה׬$d 4`0X(LXpH@pp pX$L|P8  4  `  ` <4` t0 |&t'* *+,t-/x028344<4p445(5D5`5|5566H7D789@9:;<0<<==@=l===>>@>l>?@?@(@A<ABlBCD0DEFHIJ$K`L<MNOPQLR8RSTtTUVWWXX,XXXY,YTY|YZ$ZLZ|ZZ[ [t[[\\`\]]P]]^H^_`_``Xaab@c cdf ffggg,gDgDgXglgggggh h(hDhhhhhhi i(iDihiiiijj8j\jjjkk8kLkhkkkkl l8lTlxlllmmDmxmmmnn,nXnnnoo4ohooop8pLphppppq q8qTqxqqqrrDrxrrrss,sXssstt4thtttu8uTuxuuuvvDvxvvvw(wTwwwxxHxtxxyy<yxyyz zHz|zz{8{L{h{{{{| |8|T|x|||}}D}x}}}~~,~X~~~4h8TxDx(THt<x H|8TxDx(THt<x H|8\H|L4x H|8l(d88p ,Xl`@`x,l<tH X$  l0l8| TPHX|L4D<hH$| <\€¤$PÈ @İ <XtŐŬ8TpƌƨXnj b+@k   ``$$x&&z66|DD~FFHHLLRQVVXX]\{{            !"#$% &' ()* +, -   "$&(*,.02468:<>?J?/?1??\?]?^?_?\?\?g?j?k?f?p?q?r?n?u?z?{?|?}?z?x?_??????  #!@:0*ln p))rQQtrrvyyxz|     ` `"$?S?S?T?T?U?V?V ?W ?=?>?3??ʿ? ?!?"#?!"?#?$% vqjzyb Tz 0`$$b)(d0/h75l;;rDDtFFvIIxLLzOO|RR~XV         `??ݿ??տ?????????ǿ?ƿ?ο??ѿ??Կ?ȿ xPmn]`a j k i l m o>n "" ???8T. $&6     !"#$%&'()*+,-./012 ` `"%(+.1 47:=@C FILORUX[?????????????   ?? ?% ?(#?+&&,)(/,(2/.?711843?=64?@99A<:D?=?I@@JC z~|z~|{}{}~~;2 3"& 8"   )z4< <= =  = ==>c>?=9 = =>>t>?/!=R =>&>>?F=t=>>> >?W= ==>P>? ?j 0 2  D@ L  DE " : %:> h< < ,<Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain DejaVu LGC Sans CondensedDejaVu LGC Sans CondensedBold ObliqueBold ObliqueDejaVu Sans Condensed Bold ObliqueDejaVu Sans Condensed Bold ObliqueDejaVu LGC Sans Condensed Bold ObliqueDejaVu LGC Sans Condensed Bold ObliqueVersion 2.10Version 2.10DejaVuLGCSansCondensed-BoldObliqueDejaVuLGCSansCondensed-BoldObliqueDejaVu fonts teamDejaVu fonts teamhttp://dejavu.sourceforge.nethttp://dejavu.sourceforge.netFonts are (c) Bitstream (see below). DejaVu changes are in public domain. Glyphs imported from Arev fonts are (c) Tavmjung Bah (see below) Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Arev Fonts Copyright ------------------------------ Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the modifications to the Bitstream Vera Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Tavmjong Bah" or the word "Arev". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Tavmjong Bah Arev" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the name of Tavmjong Bah shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from Tavmjong Bah. For further information, contact: tavmjong @ free . fr.Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Glyphs imported from Arev fonts are (c) Tavmjung Bah (see below) Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Arev Fonts Copyright ------------------------------ Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the modifications to the Bitstream Vera Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Tavmjong Bah" or the word "Arev". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Tavmjong Bah Arev" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the name of Tavmjong Bah shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from Tavmjong Bah. For further information, contact: tavmjong @ free . fr.http://dejavu.sourceforge.net/wiki/index.php/Licensehttp://dejavu.sourceforge.net/wiki/index.php/LicenseDejaVu SansDejaVu SansCondensed Bold ObliqueCondensed Bold ObliqueAll Typographic FeaturesFonctions typographiquesAlle typografischen MglichkeitenFunzioni TipograficheAlle typografische kenmerkenLigaturesLigaturesLigaturenLegatureLigaturenFractionsFractionsBreukenAll Type FeaturesToutes fonctions typographiquesAlle AuszeichnungsartenTutte le FunzioniAlle typekenmerkenCommon LigaturesLigatures UsuellesNormale LigaturenLegature pi ComuniGemeenschappelijke LigaturenRare LigaturesLigatures RaresSeltene LigaturenLegature RareZeldzame ligaturenDiagonal FractionsFractions en DiagonaleDiagonaler BruchFrazioni DiagonaliDiagonale breukenZ   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~  sfthyphenAmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandicLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongsuni0180uni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191uni0193uni0194uni0195uni0196uni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEUhornuhornuni01B1uni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BAuni01BBuni01BCuni01BDuni01BEuni01BFuni01C0uni01C1uni01C2uni01C3uni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DEuni01DFuni01E0uni01E1uni01E2uni01E3uni01E4uni01E5Gcarongcaronuni01E8uni01E9uni01EAuni01EBuni01ECuni01EDuni01EEuni01EFuni01F0uni01F1uni01F2uni01F3uni01F4uni01F5uni01F6uni01F7uni01F8uni01F9 Aringacute aringacuteAEacuteaeacute Oslashacute oslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217 Scommaaccent scommaaccentuni021Auni021Buni021Cuni021Duni021Euni021Funi0220uni0221uni0222uni0223uni0224uni0225uni0226uni0227uni0228uni0229uni022Auni022Buni022Cuni022Duni022Euni022Funi0230uni0231uni0232uni0233uni0234uni0235uni0236dotlessjuni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240uni0241uni0243uni0244uni0245uni0246uni0247uni0248uni0249uni024Cuni024Duni0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni0259uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269uni026Auni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02AEuni02AFuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02B9uni02BAuni02BB afii57929 afii64937uni02BEuni02BFuni02C0uni02C1uni02C2uni02C3uni02C4uni02C5uni02C8uni02C9uni02CAuni02CBuni02CCuni02CDuni02CEuni02CFuni02D0uni02D1uni02D2uni02D3uni02D4uni02D5uni02D6uni02D7uni02DEuni02DFuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9uni02ECuni02EDuni02EEuni02F3uni02F7 gravecomb acutecombuni0302 tildecombuni0304uni0305uni0306uni0307uni0308 hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322 dotbelowcombuni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0340uni0341uni0342uni0343uni0344uni0345uni0346uni0347uni0348uni0349uni034Auni034Buni034Cuni034Duni034Euni0351uni0352uni0357uni0358uni035Cuni035Duni0360uni0361uni0362uni0374uni0375uni037Auni037Buni037Etonos dieresistonos Alphatonos anoteleia EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni03D0theta1Upsilon1uni03D3uni03D4phi1omega1uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03E2uni03E3uni03E4uni03E5uni03E6uni03E7uni03E8uni03E9uni03EAuni03EBuni03ECuni03EDuni03EEuni03EFuni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FAuni03FBuni03FCuni03FDuni03FEuni03FFuni0400 afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061uni040D afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097uni0450 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109uni045D afii10110 afii10193uni0460uni0461 afii10146 afii10194uni0464uni0465uni0466uni0467uni0468uni0469uni046Auni046Buni046Cuni046Duni046Euni046Funi0470uni0471 afii10147 afii10195 afii10148 afii10196uni0476uni0477uni0478uni0479uni047Auni047Buni047Cuni047Duni047Euni047Funi0480uni0481uni0482uni0483uni0484uni0485uni0486uni0488uni0489uni048Auni048Buni048Cuni048Duni048Euni048F afii10050 afii10098uni0492uni0493uni0494uni0495uni0496uni0497uni0498uni0499uni049Auni049Buni049Cuni049Duni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04A8uni04A9uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B0uni04B1uni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04B8uni04B9uni04BAuni04BBuni04BCuni04BDuni04BEuni04BFuni04C0uni04C1uni04C2uni04C3uni04C4uni04C5uni04C6uni04C7uni04C8uni04C9uni04CAuni04CBuni04CCuni04CDuni04CEuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8 afii10846uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni0500uni0501uni0502uni0503uni0504uni0505uni0506uni0507uni0508uni0509uni050Auni050Buni050Cuni050Duni050Euni050Funi0510uni0511uni1D00uni1D01uni1D02uni1D03uni1D04uni1D05uni1D06uni1D07uni1D08uni1D09uni1D0Auni1D0Buni1D0Cuni1D0Duni1D0Euni1D0Funi1D10uni1D11uni1D12uni1D13uni1D14uni1D16uni1D17uni1D18uni1D19uni1D1Auni1D1Buni1D1Cuni1D1Duni1D1Euni1D1Funi1D20uni1D21uni1D22uni1D23uni1D26uni1D27uni1D28uni1D29uni1D2Auni1D2Buni1D43uni1D44uni1D45uni1D46uni1D47uni1D48uni1D49uni1D4Auni1D4Buni1D4Cuni1D4Duni1D4Euni1D4Funi1D50uni1D51uni1D52uni1D53uni1D54uni1D55uni1D56uni1D57uni1D58uni1D59uni1D5Auni1D5Buni1D77uni1D7Buni1D85uni1D9Buni1D9Cuni1D9Duni1D9Euni1D9Funi1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5uni1DA6uni1DA7uni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1uni1DB2uni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1E00uni1E01uni1E02uni1E03uni1E04uni1E05uni1E06uni1E07uni1E08uni1E09uni1E0Auni1E0Buni1E0Cuni1E0Duni1E0Euni1E0Funi1E10uni1E11uni1E12uni1E13uni1E14uni1E15uni1E16uni1E17uni1E18uni1E19uni1E1Auni1E1Buni1E1Cuni1E1Duni1E1Euni1E1Funi1E20uni1E21uni1E22uni1E23uni1E24uni1E25uni1E26uni1E27uni1E28uni1E29uni1E2Auni1E2Buni1E2Cuni1E2Duni1E2Euni1E2Funi1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Auni1E3Buni1E3Cuni1E3Duni1E3Euni1E3Funi1E40uni1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Auni1E4Buni1E4Cuni1E4Duni1E4Euni1E4Funi1E50uni1E51uni1E52uni1E53uni1E54uni1E55uni1E56uni1E57uni1E58uni1E59uni1E5Auni1E5Buni1E5Cuni1E5Duni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E64uni1E65uni1E66uni1E67uni1E68uni1E69uni1E6Auni1E6Buni1E6Cuni1E6Duni1E6Euni1E6Funi1E70uni1E71uni1E72uni1E73uni1E74uni1E75uni1E76uni1E77uni1E78uni1E79uni1E7Auni1E7Buni1E7Cuni1E7Duni1E7Euni1E7FWgravewgraveWacutewacute Wdieresis wdieresisuni1E86uni1E87uni1E88uni1E89uni1E8Auni1E8Buni1E8Cuni1E8Duni1E8Euni1E8Funi1E90uni1E91uni1E92uni1E93uni1E94uni1E95uni1E96uni1E97uni1E98uni1E99uni1E9Auni1E9Buni1EA0uni1EA1uni1EA2uni1EA3uni1EA4uni1EA5uni1EA6uni1EA7uni1EA8uni1EA9uni1EAAuni1EABuni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EBEuni1EBFuni1EC0uni1EC1uni1EC2uni1EC3uni1EC4uni1EC5uni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED0uni1ED1uni1ED2uni1ED3uni1ED4uni1ED5uni1ED6uni1ED7uni1ED8uni1ED9uni1EDAuni1EDBuni1EDCuni1EDDuni1EDEuni1EDFuni1EE0uni1EE1uni1EE2uni1EE3uni1EE4uni1EE5uni1EE6uni1EE7uni1EE8uni1EE9uni1EEAuni1EEBuni1EECuni1EEDuni1EEEuni1EEFuni1EF0uni1EF1Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni200B afii61664afii301afii299afii300uni2010uni2011 figuredash afii00208uni2016 underscoredbl quotereverseduni201Funi2023onedotenleadertwodotenleaderuni2027uni2031minuteseconduni2034uni2035uni2036uni2037uni2038uni203B exclamdbluni203Duni203Euni203Funi2040uni2041uni2042uni2043uni2045uni2046uni2047uni2048uni2049uni204Auni204Buni204Cuni204Duni204Euni204Funi2050uni2051uni2052uni2053uni2054uni2055uni2056uni2057uni2058uni2059uni205Auni205Buni205Cuni205Duni205Euni2070uni2071uni2074uni2075uni2076uni2077uni2078uni2079uni207Auni207Buni207Cuni207Duni207Euni207Funi2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089uni208Auni208Buni208Cuni208Duni208Euni20A0 colonmonetaryuni20A2lirauni20A5uni20A6pesetauni20A8uni20A9 afii57636dongEurouni20ADuni20AEuni20AFuni20B1uni20B4uni20B5uni20D6uni20D7uni2100uni2103uni2104 afii61248uni2106uni2109uni210Euni210FIfraktur afii61289 afii61352uni2117 weierstrassRfrakturuni211D prescriptionuni2120uni2121uni2126uni2127uni212Auni212B estimateduni2132uni2134alephuni213Buni214Bonethird twothirdsuni2155uni2156uni2157uni2158uni2159uni215A oneeighth threeeighths fiveeighths seveneighthsuni215Funi2160uni2161uni2162uni2163uni2164uni2165uni2166uni2167uni2168uni2169uni216Auni216Buni216Cuni216Duni216Euni216Funi2170uni2171uni2172uni2173uni2174uni2175uni2176uni2177uni2178uni2179uni217Auni217Buni217Cuni217Duni217Euni217Funi2180uni2181uni2182uni2183uni2184 arrowleftarrowup arrowright arrowdown arrowboth arrowupdnuni2196uni2197uni2198uni2199uni219Auni219Buni219Cuni219Duni219Euni219Funi21A0uni21A1uni21A2uni21A3uni21A4uni21A5uni21A6uni21A7 arrowupdnbseuni21A9uni21AAuni21ABuni21ACuni21ADuni21AEuni21AFuni21B0uni21B1uni21B2uni21B3uni21B4carriagereturnuni21B6uni21B7uni21B8uni21B9uni21BAuni21BBuni21BCuni21BDuni21BEuni21BFuni21C0uni21C1uni21C2uni21C3uni21C4uni21C5uni21C6uni21C7uni21C8uni21C9uni21CAuni21CBuni21CCuni21CDuni21CEuni21CF arrowdblleft arrowdblup arrowdblright arrowdbldown arrowdblbothuni21D5uni21D6uni21D7uni21D8uni21D9uni21DAuni21DBuni21DCuni21DDuni21DEuni21DFuni21E0uni21E1uni21E2uni21E3uni21E4uni21E5uni21E6uni21E7uni21E8uni21E9uni21EAuni21EBuni21ECuni21EDuni21EEuni21EFuni21F0uni21F1uni21F2uni21F3uni21F4uni21F5uni21F6uni21F7uni21F8uni21F9uni21FAuni21FBuni21FCuni21FDuni21FEuni21FF universaluni2201 existentialuni2204emptysetgradientelement notelementuni220Asuchthatuni220Cuni220Duni220Euni2210uni2213uni2214uni2216 asteriskmathuni2218uni221Buni221C proportional orthogonalangleuni2221uni2222uni2223uni2224uni2225uni2226 logicaland logicalor intersectionunionuni222Cuni222Duni222Euni222Funi2230uni2231uni2232uni2233 thereforeuni2235uni2236uni2237uni2238uni2239uni223Auni223Bsimilaruni223Duni2241uni2242uni2243uni2244 congruentuni2246uni2247uni2249uni224Auni224Buni224Cuni224Duni224Euni224Funi2250uni2251uni2252uni2253uni2254uni2255uni2256uni2257uni2258uni2259uni225Auni225Buni225Cuni225Duni225Euni225F equivalenceuni2262uni2263uni2266uni2267uni2268uni2269uni226Auni226Buni226Cuni226Duni226Euni226Funi2270uni2271uni2272uni2273uni2274uni2275uni2276uni2277uni2278uni2279uni227Auni227Buni227Cuni227Duni227Euni227Funi2280uni2281 propersubsetpropersuperset notsubsetuni2285 reflexsubsetreflexsupersetuni2288uni2289uni228Auni228Buni228Cuni228Duni228Euni228Funi2290uni2291uni2292uni2293uni2294 circleplusuni2296circlemultiplyuni2298uni2299uni229Auni229Buni229Cuni229Duni229Euni229Funi22A0uni22A1uni22A2uni22A3uni22A4 perpendicularuni22A6uni22A7uni22A8uni22A9uni22AAuni22ABuni22ACuni22ADuni22AEuni22AFuni22B2uni22B3uni22B4uni22B5uni22B6uni22B7uni22B8uni22B9uni22BAuni22BBuni22BCuni22BDuni22C0uni22C1uni22C4dotmathuni22C6uni22C8uni22C9uni22CAuni22CBuni22CCuni22CDuni22D6uni22D7uni22D8uni22D9uni22DAuni22DBuni22DCuni22DDuni22DEuni22DFuni22E0uni22E1uni22E2uni22E3uni22E4uni22E5uni22E6uni22E7uni22E8uni22E9uni22EAuni22EBuni22ECuni22EDuni22F2uni22F3uni22F4uni22F5uni22F6uni22F7uni22F8uni22F9uni22FAuni22FBuni22FCuni22FDuni22FEuni22FFhouseuni2306uni2308uni2309uni230Auni230B revlogicalnotuni2311uni2318uni2319 integraltp integralbtuni2325uni2328 angleleft anglerightuni237Duni239Buni239Cuni239Duni239Euni239Funi23A0uni23A1uni23A2uni23A3uni23A4uni23A5uni23A6uni23A7uni23A8uni23A9uni23AAuni23ABuni23ACuni23ADuni23AEuni23CFuni2422uni2423uni2460uni2461uni2462uni2463uni2464uni2465uni2466uni2467uni2468uni2469upblockuni2581uni2582uni2583dnblockuni2585uni2586uni2587blockuni2589uni258Auni258Blfblockuni258Duni258Euni258Frtblockltshadeshadedkshadeuni2594uni2595uni2596uni2597uni2598uni2599uni259Auni259Buni259Cuni259Duni259Euni259F filledboxH22073uni25A2uni25A3uni25A4uni25A5uni25A6uni25A7uni25A8uni25A9H18543H18551 filledrectuni25ADuni25AEuni25AFuni25B0uni25B1triagupuni25B3uni25B4uni25B5uni25B6uni25B7uni25B8uni25B9triagrtuni25BBtriagdnuni25BDuni25BEuni25BFuni25C0uni25C1uni25C2uni25C3triaglfuni25C5uni25C6uni25C7uni25C8uni25C9circleuni25CCuni25CDuni25CEH18533uni25D0uni25D1uni25D2uni25D3uni25D4uni25D5uni25D6uni25D7 invbullet invcircleuni25DAuni25DBuni25DCuni25DDuni25DEuni25DFuni25E0uni25E1uni25E2uni25E3uni25E4uni25E5 openbulletuni25E7uni25E8uni25E9uni25EAuni25EBuni25ECuni25EDuni25EEuni25EFuni25F0uni25F1uni25F2uni25F3uni25F4uni25F5uni25F6uni25F7uni25F8uni25F9uni25FAuni25FBuni25FCuni25FDuni25FEuni25FFuni2600uni2601uni2602uni2603uni2604uni2605uni2606uni2607uni2608uni2609uni260Auni260Buni260Cuni260Duni260Euni260Funi2610uni2611uni2612uni2613uni2614uni2615uni2616uni2617uni2618uni2619uni261Auni261Buni261Cuni261Duni261Euni261Funi2620uni2621uni2622uni2623uni2624uni2625uni2626uni2627uni2628uni2629uni262Auni262Buni262Cuni262Duni262Euni262Funi2630uni2631uni2632uni2633uni2634uni2635uni2636uni2637uni2638uni2639 smileface invsmilefacesununi263Duni263Euni263Ffemaleuni2641maleuni2643uni2644uni2645uni2646uni2647uni2648uni2649uni264Auni264Buni264Cuni264Duni264Euni264Funi2650uni2651uni2652uni2653uni2654uni2655uni2656uni2657uni2658uni2659uni265Auni265Buni265Cuni265Duni265Euni265Fspadeuni2661uni2662clubuni2664heartdiamonduni2667uni2668uni2669 musicalnotemusicalnotedbluni266Cuni266Duni266Euni266Funi2670uni2671uni2672uni2673uni2674uni2675uni2676uni2677uni2678uni2679uni267Auni267Buni267Cuni267Duni267Euni267Funi2680uni2681uni2682uni2683uni2684uni2685uni2686uni2687uni2688uni2689uni268Auni268Buni268Cuni268Duni268Euni268Funi2690uni2691uni2692uni2693uni2694uni2695uni2696uni2697uni2698uni2699uni269Auni269Buni269Cuni26A0uni26A1uni26B0uni26B1uni2701uni2702uni2703uni2704uni2706uni2707uni2708uni2709uni270Cuni270Duni270Euni270Funi2710uni2711uni2712uni2713uni2714uni2715uni2716uni2717uni2718uni2719uni271Auni271Buni271Cuni271Duni271Euni271Funi2720uni2721uni2722uni2723uni2724uni2725uni2726uni2727uni2729uni272Auni272Buni272Cuni272Duni272Euni272Funi2730uni2731uni2732uni2733uni2734uni2735uni2736uni2737uni2738uni2739uni273Auni273Buni273Cuni273Duni273Euni273Funi2740uni2741uni2742uni2743uni2744uni2745uni2746uni2747uni2748uni2749uni274Auni274Buni274Duni274Funi2750uni2751uni2752uni2756uni2758uni2759uni275Auni275Buni275Cuni275Duni275Euni2761uni2762uni2763uni2764uni2765uni2766uni2767uni2768uni2769uni276Auni276Buni276Cuni276Duni276Euni276Funi2770uni2771uni2772uni2773uni2774uni2775uni2776uni2777uni2778uni2779uni277Auni277Buni277Cuni277Duni277Euni277Funi2780uni2781uni2782uni2783uni2784uni2785uni2786uni2787uni2788uni2789uni278Auni278Buni278Cuni278Duni278Euni278Funi2790uni2791uni2792uni2793uni2794uni2798uni2799uni279Auni279Buni279Cuni279Duni279Euni279Funi27A0uni27A1uni27A2uni27A3uni27A4uni27A5uni27A6uni27A7uni27A8uni27A9uni27AAuni27ABuni27ACuni27ADuni27AEuni27AFuni27B1uni27B2uni27B3uni27B4uni27B5uni27B6uni27B7uni27B8uni27B9uni27BAuni27BBuni27BCuni27BDuni27BEuni27E0uni27E8uni27E9uni27EAuni27EBuni2800uni2801uni2802uni2803uni2804uni2805uni2806uni2807uni2808uni2809uni280Auni280Buni280Cuni280Duni280Euni280Funi2810uni2811uni2812uni2813uni2814uni2815uni2816uni2817uni2818uni2819uni281Auni281Buni281Cuni281Duni281Euni281Funi2820uni2821uni2822uni2823uni2824uni2825uni2826uni2827uni2828uni2829uni282Auni282Buni282Cuni282Duni282Euni282Funi2830uni2831uni2832uni2833uni2834uni2835uni2836uni2837uni2838uni2839uni283Auni283Buni283Cuni283Duni283Euni283Funi2840uni2841uni2842uni2843uni2844uni2845uni2846uni2847uni2848uni2849uni284Auni284Buni284Cuni284Duni284Euni284Funi2850uni2851uni2852uni2853uni2854uni2855uni2856uni2857uni2858uni2859uni285Auni285Buni285Cuni285Duni285Euni285Funi2860uni2861uni2862uni2863uni2864uni2865uni2866uni2867uni2868uni2869uni286Auni286Buni286Cuni286Duni286Euni286Funi2870uni2871uni2872uni2873uni2874uni2875uni2876uni2877uni2878uni2879uni287Auni287Buni287Cuni287Duni287Euni287Funi2880uni2881uni2882uni2883uni2884uni2885uni2886uni2887uni2888uni2889uni288Auni288Buni288Cuni288Duni288Euni288Funi2890uni2891uni2892uni2893uni2894uni2895uni2896uni2897uni2898uni2899uni289Auni289Buni289Cuni289Duni289Euni289Funi28A0uni28A1uni28A2uni28A3uni28A4uni28A5uni28A6uni28A7uni28A8uni28A9uni28AAuni28ABuni28ACuni28ADuni28AEuni28AFuni28B0uni28B1uni28B2uni28B3uni28B4uni28B5uni28B6uni28B7uni28B8uni28B9uni28BAuni28BBuni28BCuni28BDuni28BEuni28BFuni28C0uni28C1uni28C2uni28C3uni28C4uni28C5uni28C6uni28C7uni28C8uni28C9uni28CAuni28CBuni28CCuni28CDuni28CEuni28CFuni28D0uni28D1uni28D2uni28D3uni28D4uni28D5uni28D6uni28D7uni28D8uni28D9uni28DAuni28DBuni28DCuni28DDuni28DEuni28DFuni28E0uni28E1uni28E2uni28E3uni28E4uni28E5uni28E6uni28E7uni28E8uni28E9uni28EAuni28EBuni28ECuni28EDuni28EEuni28EFuni28F0uni28F1uni28F2uni28F3uni28F4uni28F5uni28F6uni28F7uni28F8uni28F9uni28FAuni28FBuni28FCuni28FDuni28FEuni28FFuni29CEuni29CFuni29D0uni29D1uni29D2uni29D3uni29D4uni29D5uni29EBuni2A00uni2A01uni2A02uni2A0Cuni2A0Duni2A0Euni2A0Funi2A10uni2A11uni2A12uni2A13uni2A14uni2A15uni2A16uni2A17uni2A18uni2A19uni2A1Auni2A1Buni2A1Cuni2A7Duni2A7Euni2A7Funi2A80uni2A81uni2A82uni2A83uni2A84uni2A85uni2A86uni2A87uni2A88uni2A89uni2A8Auni2A8Buni2A8Cuni2A8Duni2A8Euni2A8Funi2A90uni2A91uni2A92uni2A93uni2A94uni2A95uni2A96uni2A97uni2A98uni2A99uni2A9Auni2A9Buni2A9Cuni2A9Duni2A9Euni2A9Funi2AA0uni2AAEuni2AAFuni2AB0uni2AB1uni2AB2uni2AB3uni2AB4uni2AB5uni2AB6uni2AB7uni2AB8uni2AB9uni2ABAuni2AF9uni2AFAuni2B12uni2B13uni2C67uni2C68uni2C69uni2C6Auni2C75uni2C76uni2C77uniF208uniF217uniF25F afii10064uniFB00uniFB03uniFB04uniFB05uniFB06uniFFFD dlLtcaronDieresisAcuteTildeGrave CircumflexCaronBreve Dotaccent Hungarumlaut Doublegrave uni0311.caseEng.altuni0268.dotlessuni029D.dotless uni03080304 uni03040308 uni03070304 uni03080301 uni03080300 uni03040301 uni03040300 uni03030304 uni0308030C uni03030308 uni030C0307 uni03030301 uni03020301 uni03020300 uni03020303 uni03060303 uni03060301 uni03060300 uni03060309 uni03020309 uni03010307 brailledotJ.altl.alt@::dػ}}ȌYȌȀ&Y@& }>,,G}G  @ 2 YYdhd@%%Y   %Y%&Y]%]@%dX:t:2  Y~}|{zyxwvtvututYtsYs}rq&ponm @lkjkjj@ihihYhgYgf\ fedcdcb]ccbW%b]b@a`_.`_.^Y^]\ ] \ [Y[KZYZYXYXW%VUTSRQPO%PO%NMLKJIH H@FEFEDCDCC@BdB@A}@?>,>,=<;:94 9287265 6@5 5@43 4 3 211}0/0d//.-,+,K++**K)()(' (' &%$%2$#"#"!%!   2@   @:%dd:%:%K       @d:@  @d++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++n       !! #" >> ?? @@ CA ^^ __ `` aa bbcc gdkh qm srutvv zx {{}   wv             ww    OO                  * ++2-4355 66 77 B9DCEE FF GG ZH\[ b] ig ol qq ttuu x - ..// 0            d p p | rmicropolis-activity/res/dejavu-lgc/DejaVuLGCSerifCondensed.ttf0000664000076400007640000052427010724145723024716 0ustar simcitysimcityPGDEFo\GPOSON&DGSUBk),xOS/2{0VcmapeH80cvt 36feat8$@fpgm8dgasp8 glyf8headE:Xߔ6hhea ~$hmtx@zkerntlloca%Jmaxp {E)D morx R^)dnameRs:x%post?o`dA!prepuy^propu >ijjkpqqruvvwyzz{}~     !""##$tuz{    ./:;QRSTVWWX # ^DFLTcyrl$grek4latnDkernmarkmkmk" $" 6#"e"( :Lb "x@rH X  . 4 : D N X ^ h  B H R X ^ d j 6 h *(r $z^<^79k:;<&:$79:<IWYZ\$%&'6789:&&&*&2&<&&&&&&&&&&&&&&&&&&&8:&&&&9&2$NDuHRNNNNNuuuuuuuNuNuNuu&<:a4k$&28:<HRX\}}}01:7Y89 :N<}\}&Y0:}}}K9;*aa$D8DHRVDDDDD!#0K&&79:<D/\///////&&:K6 "+$7&DaFaHaRaVkZaaaaaaaaaaaaaaaaaaaaaa!k#k&& DD$-5D22$u2DDHDLRDX}\uuuuuDDDDDDDDDDDDDDDDD}}}}DD1}KK0kNN$DNHYLRuUX\NNNNNNuYYYYuuuuuuYu1&&$&2,$a&DaHNLRNXNaaaaaaaaaaa<NNNNNNNNNNNNNNN)1N&    $79:<IWYZ\$%&'6789:$79:<IWYZ\$%&'6789:$79:<IWYZ\$%&'6789:$79:<IWYZ\$%&'6789:$79:<IWYZ\$%&'6789:&&&&& K$9<:}}K9;K9;K9;K9;K9;K9; DD$- DD$- DD$- DD$-,$a&DaHNLRNXNaaaaaaaaaaa<NNNNNNNNNNNNNNN)1N&$79:<IWYZ\$%&'6789:$79:<IWYZ\$%&'6789:$79:<IWYZ\$%&'6789:&9&9&&<:7Y89 :N<}\}&Y0:}7Y89 :N<}\}&Y0:}O7Y89 :N<2\2&Y0:2}}&79:<D/\///////&&:79:<D/\///////&&:K6 "K6 "+$7&DaFaHaRaVkZaaaaaaaaaaaaaaaaaaaaaa!k#k&& DD$-DnFUGaHVIJaLMP}Q}RUSTaU}VWXYZ[\]7,$a&DaHNLRNXNaaaaaaaaaaa<NNNNNNNNNNNNNNN)1N$-/79k:;<&:$-/$-/99:9;9<99:9 79:;9<YZ&:e$%&'()*-./123456789:;<=INRUYZ[\  "&07:?d { "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz#mmwa,]D'*Dt!DD'''''vDD*D~DDDD DDDDDDs8AI*D'DD^D*DrvDwDa]DD!D'DDDDDD*D*D*D*DDDDD'D3DD#JrVDDDDDD '#a#'$=D]478:  ;=GI?KKBOOCQQDTTE^`FhiImmKtxLQRTUVY [c==dOOeZZfabgdfioolmortwxy))z#% &,28>DJPV\bhn4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4|4r4r44D4r4DD4D4D4D4D4D4D4D4D4D4D4DJ>l  (kkk*k#% &,28>DJPV\bhn4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4|4r4r44D4r4DD4D4D4D4D4D4D4D4D4D4D4D~ N "(.4:@FLRX^djpv| $*06<BHNTZ`flk#mRmwa,] * !3R]'jRP'v]*'RtR'R8RA*R'^R!jRjRRP#$=D]4679:xx<=?@ C==HIL))M  ntz 4444444444444444444444444446 8>DJPV\bhntz4d4f4444G44444f4f4l4l4f44G4S44444444!#  $*06<4444444444444444444D444444444444 rDFLTcyrl*grekHlatnX SRB ccmp2dlig8dlig@dligFfracLligaRligaXlocl^  &.6>FNV^HR@ptv000&LM P$=IIKKLMOO      ""$$&&((**,,..0022446688:;==??AAGGQQSSUUh| ^h "(.4:@FLzyxwvuzvqjWSQQRQ Q $Nh  $  $ #!  Q 6DHLQRVX\e OLID * ""> *4IOILIWWIVAJ 4 "*2:BJRZbjr7F75F51F1/F/F~F~ "2F20F0&.68F83F3F4F4 "9F96F6:F: LM  !"# 33fPq PfEd@ m`p~!A?Xauz~_cs [w{-KcEMWY[]}  & 1 : < > I p y !!!"!&!+!_!""""""" "-"C"H"a"e####!#%#(#}##$#&&<&G&g&o')*+ !$PXatz~brCw{0Ph HPY[]_  0 9 < > G p t  !!!"!&!*!S!""""""""'"B"H"`"d#### #%#(#}##$#%&8&?&`&i')* +ogUQNIHGFE75' }|<:840,$ ~yws >;431.,&YLF@=;D&H=;   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}byqz sLjq{)j/s3fbwPP;f=fRBsJ}s jjb\jjjj jj)R`fX{Hjj``'''Djb{sj\)'\jj=fHf JJ }T{3`}TjNNs04 <, %Id@QX Y!-,%Id@QX Y!-,  P y PXY%%# P y PXY%-,KPX EDY!-,%E`D-,KSX%%EDY!!-,ED-[!%!!\4r) 74632#"&3#5E31FF13E=oh8NN87NM#!#D++|#! 33!!!!###!5!!5!L6\]^J]_]\9J?^aabbN 1%>54&'3.54673#.'#.mfkjgZ]f^ebϧưZ[Pb |jݲѾZVD n_VxiXPj!H@  1)t 7#5!#3ONϛ\m{^|.,βa>G YKeNfGXVe=yB""kpqZ=yqPikk`D#D+L &7Lۋyymcdmbjj> 56'5zzbj\]jbm''L| %#'-73%|`D z D`D9 z :նv}vw}F !!#!5!LϢ11B>=3CTOE%ZQs!!Q3s 74632#"&D32FF23Dh8NN87NMBm3#ݐ#my %2#""32JFPSTPcnohh !535%33H|jÃzj}#>32!53!5>54&#"e`] 0js|q 9< mĖ *>32#"&'332654&+532654&#"#iTݙice V-zy e,. ׫23"f~88 !53!53!!34XLj%m k!>32#"&'332654&#"#/}N\eeQ{0MդT$$23"@C{! %%2654&#">32#"!2#.#"[=a"GRe ucFȽKJy^ej #!#!iuo1\{ /4&#"3264&#"326#"&5467.54632[%|po}}op|b񫚈ߐv͟ҟϴt%#"5432!"&'5332"32654&^=34632#"&CTO8F22FF22FE%Z 8MN78MM^F 5EZ~ѦfF!!!!~~^F55~//y} "%4632#"&>32#>54&#"#DE41FF14E_LorfWh8NN87NMc/.ֶ3H+ʜ{y@M%#"&5463253>54&'&$#"3267#"$'&5476$3254&#"3265SĞS5=<`QMZVb tV0aqtwxss6>kDGhlzzngRPPR%oT&']gw}LLF]]{GF~b|i}F!5333!53!3qvߗqpjkjjHje$%!2654&#!532654&+53#5!2! 唈Ώjj~}jkäg#"&'&5!2#.#"3267<փXdbi(nf!ɵז+dap\@Ae\%3 !#53#5! !Ǩ\{jL66Hjkvte353#5!#5!!53#5!!53f:onnGxojk e353#5!#5!!53#5!3fLooo5jk ~jg0.#"3267#5!# !2 dzfTxo6s88kMM_b;<e353#5!#!#5!#3!53!3f  Gjkkkkjj~jes %3!53#5!#ǫ jjjkkeV533265#5!##"&gPOkU2@ca9kk"e}353#5!##5!# 3!3f Cjkk5kk3jje 353#5!#!53f fojkk[353#5! !#3!53#3fp33jk'kjj~jZ353#5!#5!##3ZY%صmjkf/kkyjg %2#""&'&547>3 ݉XdbbdY$hbeYNQJKQkdappbcVobce32654&+53#5!2#!3{jkjg" 47>3 ;.'2#" bdY$h1bZapbcVm:C@QJKQe$3!.+3!53#5!2%!2654&#!s?[$ä32{y{hh7awdtUVMNvzojsJFIydb))5@!7#5!>32#"&'!532654&#"ԟE1o߰o1E~~j@jmd__djuʿ[D#"532#.#"3267#ȟ[[`vk?31/0|}[f!%3!5#"5432#5!54&#"326Ȟ1o߱o1C~~jjd_76_d)ji[D!32673#"5432.#"6m(ծ{r}34ױB#.#"!!3!53#5354632WKG]K 螞323!534&#"3LD-a7Vnsxj@jVlnjjÏjB$ 4632#"&3!53#5!<+)<;*+<Ԝ Dq.DD./BB(jjRkN9 4632#"&#5!#"&'533265=*)=;+*=)CAv7UMJRNq.DD./BBzkq!!`Z{5j)53#5!#5!# 3!5330El(႕j@j kkjj5 %3!53#5!zEjjj@jBD0>323!534&#"3!534&#"3!53#5!>320c5Vdot;Wdnt5D-ZoXuwjj%jj,jjTijp{BpD353#5!>323!534&#"3LD-a7WmsxjRklnjjÑj[D %2654&#""5432*Fc325V@D #32654&#"'#5!>32#"&'3!53z~~E1o߰o1Hiʵkd__dkk[VfD#3!53#"54325!4&#"3265Ȟ1o߱o1D~~kkd_76_dkBrD#.#"3!53#5!>32q_FC{D0n(Z)ONjjTiokgTD)75332654&/.54632#.#"#"&h_}ouUx{oLY_zjhkQywϷ];wv]YFV1-,f,*gtRRCQ*-/o,5q#533!!32673#"&5ǒ8/?A;}wkJk]LU_1_'!3!5#"&5#5!3265#6-a;Vnsx'Cjjo9k '!#5!# #5!#m  gkkk%kkD'#5!## ##5!#u؋Zjk'kkDkk->'#5!# 3!53 3!53 #5!#Ɂp~+}Fz|vr3kkw7jj>jjkk9 '7#5!# #5!##"&'53326?m  gkI,nd*Z-U461<ñkk%kkT|[D;=I' 35!#!!53JW&_aVf#V$#"&54&+5326546;#"38a77a8=MZuwXMititݓhXឈ"X#$3265467.54&+532;#"+?~MXvuYM~?9a88a9W"WhtitݔF'#"/&'&#"5>32326EZTV USPZUV XS'XTB 9IMWQB:J 4632#"&53E31FF13E76tttt ZZSH_hZQi,+ .'{ i l{#.#"!!!53!53#534632_ eWrmsiLD_ekjRk']\<#/7'#"&''7.5467'7>324&#"326+U&%%(V2k>:p7U%%&(V3l>;nIfefe^z@Fw9^,*(ppr$!53!5!5'!53#5!# #5!#3!!!3DlJ}42@kjoiAikk\kkizTij##  R=G A>54&#.#"#"&'532654'&'.5467.54632U=2G45}S^OZh q_fFBQESa`^m qjbJGF.S5&`9KHSaSamc_~,/~[PQbTq zc^1~O7! 2#"&546!2#"&546+?<.-;>+><-.;>!E03BB30EE03BB30E52J#"&54632#.#"32672#"&'&547>"3267>54&'.˦HNKf_kmljXeшbbaabb툉bbaabbvTTVVTTvvTTTUST=%'mf_cnmmmmnnmmmmng^^]僂^^__^]⃅]^^p;(,3#5#"&546;54&#"#5>325#"326!!H+qNh_N\ DE;_a[WSd(uTP30pr-T^FEPNQUah#  5 5 Z Z#ssRssRF^!#!^Qs!!Q3s5$<T32654&+3#'.+3!53#5!2"3267>54&'.'2#"&'&547>&pKJKJp&5hEv 8,RKJJusvWvTTVVTTvvTTTUSTvbbaabb툉bbaabbLKJL3(DF/DDCpmS[j^^]僂^^__^]⃅]^^gnmmmmnnmmmmnb!!u "32654&'2#"&546E]]ED^`B9k&*)yyfiMLfgKKk1.-rBF !!#!5!!!L~yyQo#5>32!53!5%>54&#"?;~?|ZCMCXKGT "hzlKMzBUcLZ*>32#"&'532654&+532654&#"#pBy5|_VkmA}=?XRU\\[0WYIDJN@lcHdwdrzJMXR]_JJJCH@Aaf3#Jif5Vl'!3!5#"&'3!53#5!3265#6/Q3U#;Vmsy'Ahjo$$kkk;!####.546:jaak/NݸBL 4632#"&E41FF14E8MN78MLu{!#"&'532654&':8qe&O)%G4;('@p1QY 5-X<T 535733\Tzj^TT 2654&#""&54632!!_ab^^ba_,k-Lװױbh# 5 %5 4Z zZ #^R^sXXs^R^sXX'd&{F&{'FtdZ'd&uF} "#"&54632#"&54675332673E31FF14D_MnreVm8NN87NM/.ֶ3+ʜ{Fk&$fuFk&$fuFk&$fuF^&$fuF\&$fuFm )4&#"326!53.546323!53!3P8:NN:8PSvACgfFAqpZ?YWA?XXj%zSrrP#jjHj#!#53!3!53#5!#5!!53#5!!53ZRvnooE{oMjHjjk gu&&z+ek&(nuek&(nuek&(nue\&(nuesk&,:uesk&,:uNk&,:uU\&,:uee %3 !#!!53#53#5! !ϩ.\{jL66H}1je}kvtZ^&1ugk&2ugk&2ugk&2ug^&2ug\&2uD   ' 7  _haafbfP13p4pq3Z +.#"324&'7!"&''7&5!27E;p09poNN[FNLi#VHXVwQ`YYQJuRlSVVEiZUSGVk&8uVk&8uVk&8uV\&8uk&<-ue32654&+53#5!#!2#!31jkkj53.#"!534632#"#"&'5332654&/.546N}kwnν 1BPkЦMGbd[dsHjM^PwZj8l]4M/7cr%#eiyhTuI6ARz[d&DC3[f&Dv3[f&Dk3[7&Dy3[!&Dj3[&Dw3[hD 8?5#"326#"&546;54&#"#5>32>32!32673#"&.#"{y{hhbKpsivUVM1Ci7m'֭n{r NvzoF[XIxcc))WZXY}[,[uD&FzZ[d&HCU[f&HvU[f&HkU[!&HjU$d&CZBXf&vZGf&kZ@!&jZ[-.#"32654&#"5432.''%.'7%)H$+aD/B-!7UkS"! pاy/"5k7N:QV^DNBp7&Qy[d&RC^[f&Rv^[f&Rk^[7&Ry^[!&Rj^Fy 4632#"&4632#"&!!F22FF23EF22FF23E7~8MN78MLU8NN87NMD  +.#"32654&'7#"&''7.54327"eC )$dBl7:T32#"&'3!53z~~E1o߰o1Hijmd__dkk9 !&\j=F1'q;$[&q DFi'u!$[-&uKDwF'x$[wD'x?Dgk&&u[f&FvUgk'u&[f&k^Fg^'!u&[!&v^Fgk&&u[f&FlUe\k&'ju[Q&Gee[f)%3!5#"5432!5!5#5!3#54&#"326Ȟ1o߱o1&C~~jjd_76_dJjujjie2'q<([&qUHem' nu([H&uUHe^'!nu([!&vUHew'x2([wD'xHek&(u[f&HlUg0k'u*[9ff&kSJg0m&* u[9fH&Jug0^'!u*[9f!&vSJg60'*[9f'Jek'u+pk'uKe'!5!53#535#5!#!5#5!#3#3!53!3G  Gfjzkkkkz?jj~jBp%353#535#5!!!>323!534&#"3LD-a7VnsxjPzvjzlnjjÏjB^'8u,P7'yZ^z2'q<,$'qSm' 8u, @H'uZews&,xBw$&Lxes^&,!:uB$' %3!53#5! DjjjRkeVq&,-B9&LMeVk'Au-N9 f'keS}'.5Sj'KN5j$)53#5!#5!# 3!5330El(႕jOkkkjjem'w/5l'vOeS'x/5X'$Oe'>n/5'OOe'y/5'yV}OM353'7#5!#%!53o?ͫ ?gojq\kk\(<%3!53'7#5!7}7B6jjj>`VjbVZl'v1Bp6&vDQZE'1BSpD'UQZu&1Bpf&QlUe&eQgZ9$353#5!#5!##"'&'53367653ZY%ص:Fth<:8U&&q:&"jkf/kkyPc!`--?9jB9D(353#5!>32#"&'53327654&#"3LD-aMJAv8VMIR''WmsxjRklnec!!`Z><Ñjg2'q'<2[&q^Rgm' u2[H&u^Rgk'"u2[f'zRk!%# !! )#5!!53#5!!53E{[CommEynjjb_ [D ,3%2654&#"!32673#"&'#"5432>32.#"*6m'խuB>uw?An{rF}ba`c32c``cױel'v5Br6&vDUeS'5BSrD'Uek&5_uBrf&Ul/hl'v6gT6&vDVhk'Eu6gTf&k Vuh&6zguTD&Vz hk&6EugTf&Vl u'z75uq&zWk&7.u5M&W!53#53!#!#5!3#3`uonuj=w@`wj5q!#533!!3#327673#"'&5#53ǒ8ȫ/?A}<;zzkJkԇL*+_GF,V^'u81_7&yAXV2'q><81_&qlXVm' u81_H&uAXVi&8wHc1_&XwLVk'"u81_f&zgXVg&8xD1w'&Xx* br'|:f'kKZr'*|<9 f&k6\\&<-uRl'v=I6&vD]Rp'!W=I&v6]Rk&=NuIf&]lB%3!53#5354632#.#"螞ONeH5@+327654'&#"#5!67632#"'&'!53#5zCA~ABBA~AC_J1KKoopoKK1edqqppeed/0 /0dj@je%!2654&#! 3 )53# aVXjVvjv5@ 32654&#">32#"&'!53#5z~~1o߰o1ʿmd_ _dj~g6$32!"&'332#"h;փXebnf!ɵז+HdapU@AXSIHSg^6#"&'&'&576!247632#4'&#"#&'&#"32767<փXd11(n|YcICg@<:8U-&JRMf!deonnoזba+lkdap\ (W:<!`--zYYPO[&1#"'&5763267632#4'&#"#&'&#"3267#ȟ[Z,-J6oA:<8V,'IR(&`?@vDEDDk? H5!`--==@@st4tt|}eeS\"#6763! )5; 76!#=@t|Ukk\{꫶jY[Xg tjlHe %!"3#3! &5476!3!#xJJoXVojNMkkjސvL5@+54'&#"3276!#3!5#"'&32!#AC~B@@B~CAY0KLnop߱nLK0J^ieeppqqdejjd0/60/d[D&2%#"'&'57276'4'&#"'&7632" 76& <#YX1]^ea AA>B!EY~~~9DDDD DD18DCY.-14B_ KCuu8uttue)3!!#3!!#!#3nxHooo:LqLkg!*"#6763 #"'&'&'&=!'&!3276ba+<$h11eYqqsrXd11HoqpqqpOPklVpb2122apG1ܜ )#.";#"32673#"&5467.54632e 󂞝-V eciT~f32ѫ .IV"'533276'#5!#5!!53#5!Ogk*,Looo5TVDKM9k =c7N/#4'&'&#"!!#"&'5332765#53547632W&G]&% ST323!534&#"3LD-a7WmsxjRklnjjÑjg'"&'&7>3 '276!'&#"XdbbdY$h11eYqqqhhq dqqd dapjpbcVpb21k$ܜc8&2YD&RVgI+7"&'&7>32676323!534&#"'2#"XdbbdY⋷67B@ƲUkO' 11eYqqdapjpbcT(kkږ0pb21kQJKQ[VD'476323!534&#"#"3226& (;AOQ; ~т  kk{ 328S#!2#!3!53"#676327654&+vuϫ=@tXgFGqrjjY[XI'#PQ5V@8327654'&#"47632#4'&#"67632#"'&'3!53zCA~ABBA~ACWX54'&#"#67632327673XwssoMNoJJPPf~pp]OO32TTUThH3ٟ_^=7+ҾaaA;7::lGFRQgTD1%#"'&5476?67654'&#"#5>32327673SX]hg<;z()65hjz_YL87{x+*:;o}??_;,,WVoFG/-*)(CR))tg*,fBB,-1++FY/.;;wJN9 0"!276'&6=3327673#"'&7&"# 76!2 /*ZnPa5&RJ'&U7;;AWlR\:k{_H>~=_@@VmQ>.,`"]s]=59q'#533!!32673#"&'533276=#"&5ǒ8/?A;}Av8VMIR(&,7wkJk]LU_!!`Z>3235.#"35!3#"&'#3267s!<263T-Y*dn-Hme?"<164U-Z*dn,9\=;D[|{kk2\=;D[|R!!53!5#5!!#!'rnfMqIo&oH,<ZHI'53!#!3#!53!5 &_vaj#VijVz[##5!#!#"'&'3327654'&U5&oG[[~idece POQRTfZ}Cyx}|9Ddcfe[#"32673#"'&5476?5!#5!\RROPecddj~[[Go&5TefŬcd9|}xy}`f[6'#"32673#"'&5476?5!#5!\RROPecddj~[[G_%)efŬcd9|}xyVݸQf}&#676323!!53!567!5!67654'&#"e`bb]i_0jV :FG|FSq 9‡0m"!~UUGGei #"&'332654&#!#5!#5!32 ice nyMH23"tk#6'$#"'&'3327654'&#!#5!#5!ۤ[[~idfbe POQRZ_J yx}|9Ddcfeiaq%33##"'&'53327654'&+#53ffJXXWA;;8V'&JR&''&RiqjM^]]"`,.><<>jY#Y+'l>!5!3!!!!#!5!^NNNNS Ѣ Y%#5#Y9ce k'?'e Nf'@'[$f'@GeVW'-/e9O'M/59'MNOZV'-M1Z9'MM1B9*'MQFk&$du[f&Dl2Mk&,9uFf&lZgk&2u[f&Rl]Vk&8u1_f&Xl@V'1_2'qA<V'1_'tV'1_'tV'1_'t[DF'f[2'q3<F'f'fu$[2'<'D1'qj;[h'q{g&.#"32675!5!5#5!3## !2 dzfTpxo6s88kkkMM_b;<[9fD2#534'&#"3267#"&'53326=#"325!#3"BB~~_PWyp1o߱o1Dkde8&&h`ďd_76_dkkg0k'u*[9ff'Je}k'u. j'Ngg'x+2[gD&xaRgg2'q'<[g&q^[k'ux[6f&l=N9Ff&lZe '='e N']'[$']Gg0k'u*[9ff'Je+5!3!53#5!#!#5!#3276#5!#"'&G  SUu?BBwuyyR~jjkkkkqqqvUl+Zk'u1Bpd'QFk0'!4&#"3233!53!3!53&'&54767x@P8:NN:8:.H# qpv!"H9KeW~YWA?XO2QrP?&jjHjjw%=SrQ? [k $B3"&47674&#"3265#"3263!5#"&546;54&#"#5>32S,$HϏG@ZO::OO::OU{y{hh7awdtUVMk(P栠PG?XW@AWXvzojsJFIydb))k'u[hk'Zk'uD f'VFk'#Uu$[f'DF'fu$[H'Dek'#pu([f'He'nu([H'Hsk'#,u,$f&S':u, AH'gk'#u2[f'Rg'u2[H'Rek'#Ou5Brf'Ue'_u5BrH'UVk'#u81_f'XV'u81_H'X4h&6]g4TD&V4&754q&Wnek'u+ p'K[j 9254!"54&#"3262; !"'&'#767#"32#5!j 0)~~\;Z Ko߱o1C3k{_H>i]=G=_@@B6 /76_d)jR35!#!!3'6767SEIo&HT( HZHZPE^=OIp'35!#!!3'6767JW&_HU(Vf#VZPE]EYF'fu$[!'Deu'([uD'Hg'[2'q^<g'[2'qW<g\'!s2[ &v^Rg''u2[2'q^<2'q<<9 &q6\5%{ %354'632#"'#767'&5#5!=|d `gcE^m|iG UeOjB%D4%3544&#"3!53#5!>32632#"'#567'&52=|dWmsx5D-a!~afd^m|@ÑjjRkln֐WG UeO5%oq&%354632#"'#767'&5#533!=|c!~afd8^m|XiG UeOkJkN9'#5!#"&'533265CAv7UMJRNkq!!`Z{[ 754&#"326732654&#"5#"32#5!>32#"&'"~~~~1o߱o1E0o߱o0iʿd_76_d)jmd_ _d[VD 0=4&#"326553>32#"&';#!53#"3232654&#""~~0o߱o0!1o߱o1~~Hkk;d_ _dkkd_76_diF"#5373 3!53!3#'7# ;! Z1ʗ{Hc-qY /:4vA-Yj=.hGjjHj99V:)Y$.'7&'&5!27#&'32673#"&/7&'&#"pG51i(n|]hiHjf ( oז+<փX7d9EO[\ *GJ;daqY! *'7&5327#&'32673#"'7&'&#"fE][Z34]DS`4Dk#ȟy:@v^?ɐ1 {?n9-t|}|N@v"353#53#5!#3#!53f foj Lkk!53#'7!#5!3 `uoCH.vnu32+32673#"'&|xzig@?97`CAxcuVWQQNgivzoGGD.jsJFIyCBdb)mn[fD!%3!5#"54325!#54&#"326Ȟ1o߱o1D~~kkd_76_dk#i[fD'%!53#5!67632#"'&327654'&#"D0LKnoq߲nKL0BB~B@@B~BBkRjd/0 /0ieeppqqed5@'867632#"'&'!53547632#&'&#"327654'&#"{1KKoopoKK1YWA;:8U&&JR&'CA~ABBA~ACEd/0 /0djc]^!`--=;*edqqppee[D >32#"'&'3327654'&#"\#Ȟ[ZZ[a@?vEDDDk課0@@sttt|}[%D.%54632!"'#767&'&57632#&'&#"s<}Ţwpaf [ZZ[`?@vDE\m}G UeO 0@@st[9Z'8327673#"'&=#"'&32#5!54'&#"3276&(RJ&&V8;;AXW1JLoqo߱oLJ1CBB~ABBA~BBh<>--`!]^&d0/60/d)jieeppqqde[Y%647632#&'&#"3!5#"'&3254'&#"3276!XWA<:8V'%JR'&1JLoqo߱oLI2BB~ABBA~BB4]^!`--=;jd0/60/ieeppqqde[D!7632#"'&'33276=%!.#"\ttѮkj(EGmIIszABXX}?@nmj_^[D!!54'&#"#67632#"'&73267\IImGE(jkttBAzs'nm?@}XX̕_^lD-9#"'&'#"'&'&'&#"#676327332327654>CE*VfVK %sZ ImGD(jkf;=J} :Azy;:N0]Qk̕vp>,m?>XX!%=;>+eU^_\;Zg2047632#.#";#"32673#"'&74767&'&XY0^^da UTSFB/Oi a_a^Hnn^@lI1\*DCYZi>iZ2D"'56763273327#&'&''"'&'53327654'&+53254U@A ae]^0XRg;=J_)C)1OgUK 0Jl@]npG^b_a iO/BFRS-.YC?u=;>-N& \Q#6NOP$fjR2Ot<>i[D9"327654'&+5327654'&$%67632#"'& P%?V#7b43?@|""|@?3434[FC``DDzzDD$e2 %{ 33`i54d54j_34KS4MMfGHGGgN9$'#5!3##"&'533265#53CAv7UMJRNkjȤ!!`Z{8j[9Z :!"3265#"&'53326=#"543!547632#&'&#""~rq_PWyp1o߱6WXA;;8V&&JR(&Htp|}&&h`ďd_76]^!`--=<[9f''!##"&'53326=#"54!"3265z_PWyp1o~'k[&&h`ďd_76!t[;(7&'&#"32767#5!#"'&57632, 8JluRPSG7@0 1TaamրL[Va!Z/@ywtdMn8+T8x+- #5!##5!##"'&5476327654'&')ƭJWhhνJ.W:*0|u1#;3^M/Kkk?kkcӤÂKJgAkyЋ6"6/"9wB&6626;2#54+"#"'&54767#"#327654'&'OɄ*_*=V5W%`̈́d,G9f,%[.(KQ4"3(FP*-E9K/ߚ|xN+kk.Pf}W);A*&@fr|1V_'3#"'&5#5!3265#5!3!'-IIaKK;,*nsx6j87ed9kHHkjKp/676323!534'&#"3!53547632#&'&#"-HJa7++nsx5XWA<:8V'%JR'&jl77jjGHjjc]^!`--=9K9?67632#"'&'533276=4'&#"3!53547632#&'&#"-HJaXWA;;8V'&IR''++nsx5XWA<:8V'%JR'&jl77^]!`--><GHjjc]^!`--=;B$%3!53#53#5!3#2654'&#" DU;)+jjjfjkj/!!B/.""""B&' #5!3"'&D%(RXT_]k8<=c^YB$' %3!53#5!# jjjRkgA(%3!53&'&#"#67632#5!32673#"'&V-.RE&,W..Rjjj~('LJI;jPKJIB%3!53$5&72#5!3#'&?N6EܯA5jjjj8dj ccri59 #5!327673#"'&5ԟE&'RJ'&U7<:AXWj<>--`!]^ 56-#5!#3!53#5!!#"'&'3327654'&V)&\E G\[~idece PORRffjj@jVyx}|9DdcfeBD0%#"'&5#5!32765#5!32765#5!3!5#"'&)0IKcJJ;Vdo9;5,+dn;96-ZoKKu;=BVD23!53#"'&'#"'&5#5!32765#5!32765#5! -ZoKK0IKcJJ;Vdo9;5,+dn;96kkjp>=qu;3267632 WYA;;8U&&JR(%Vdo9;;,+dn;95D-ZoKK0IKcJJh^]!`--><]]jj,CD]]jjTijp>=qu;<$kl77jjIH^]B9nD.4'&#"3!53#5!67632327673#"'&56,+ms<<5D.HJaMJ&(RI'&V8<:AXWjIH^]jjRkl77ec<>--`!]^Kp'353#5!#5!##3L}~Y؀#jRkkk'DD>~~~Fuccujuujᙚ[|' &&7!"54763!#7!!'3#7!!53b^^[')늊WP4UUWuppo R M|{`[V=232&'&'&3276=#"'&54767! #"'&87P2RV1P77_@@]EEFE\@@(xjlͩjx(POpoOQj=f=jQOopOP[V#+3!53&'&767#5!#'676'&e~e᝘d~~dJ.DE-H-DD-jj)zzkkgyyiNt8uNfLutLBr'332765#5!#3!5#"'&C_GC{@B1LLn)-, ON^^jjio65Br332765#5!#3!5#"'&C_GCxCB1LLn)-, ON^[jjio65B9g'+!5#"'&'332765#5!#32673#"'&'-1LLn)-,1_GC{@B''SILU8;:AWTo65  ON^^jj<>Z`!]ZBXrD#.#"3!53#5!67632q_FC{B@D0MLn(--)ON^^rjjio56B9rD+#.#"327673#"'&=#5!67632q_FC{B@&'RJ'%U8;;@XXD0MLn(--)ON^^<>--`!]^hio56K=%3!53547632#&'&#"WY@;;8V&&JR(%jjj j^]!`-->--`!]^jjj?1'(3!.+3!73#5!2%32764'&+-! +H>nwQ!LL87db-../` IgRb:yggYgJJf??.3323?1'(#!53#'!#3267!#32764'&#n78LLߖwn>H+ !`/..-b??fJJgYggy:bRgI K3233f9TDB327673#"'&=353332654&/.54632#.#"#"' '&RJ&'U7;;AWX_@?zouUx{oLY_zjhkQywж]Xd<>--`!]^w;8]YFV1-,f,*gtRRCQ*-/oN9d'#"'&'533276'&7632#&'&#"mWA;;7U'&JP(6_VkX@<:8U&&JR'5Tht]!`-->Pnr]"`,.>QmiN9.3##"&'533265#53+5;54632#.#"Av7UMJRN%6'&#"#567632327673#"'&5&RJ&'U7;;AWu6)PJ%'U8:--`!]}N9 0276'&# %# '&!237&7632#&'&#"#54P*/ :\lWA;;7U&'JR&5aPnZ>H_{k~G=]s]"`,.>QmV@@_5D%3##!5!4&#"#>32D7/?A};;kkJkL+*_FG5Vq#533!!327673#"'&5ǒ8/?A}<;kJkЇL+*_FG1_'(!3#3!5#"'&=#53#5!!#!32766-IIaKK;Q,*ns<;'jjj87edMjkHH^\[H,##"&'&'&54767!5! 7654'&'5!܉QQ'&HAUU_aBJ&&QQknQR QR77jA@o`cIC#$FDKaan@j.Ιppppgf.B'"3#&'&5#5!7654'&'ueQQ&(HATU`^TD%'SpeR77j@o`cIC#$^S]k8<<kgf. ' 3!53 3!53?`mHk`'Dkk%kk'! 3!53333!53 ؊jkO>-kkDkk  3!53 3!5367632#&'&#"y?emHk-77d*-,-U622kk%kk|-.DKw)57#5%#5%7~ҫ٧h3ooHoojI9'35!#!!327673#"'&=JW&_i%(RJ%'U8;;AZWVf#V҃;>--`!]\hIB'%254#"!5!#!!2!#d9y_W&_xlcyVf#VEȾ[6'##5!#!#"'&'3327654'&U)%_G[[~idece POQRf#Vyx}|9Ddcfeu6'$, '&654'&+5!#!#'7&"2_(QRU)%_G[[fjDd{6V{fef#Vyx}K56{_ !%327654'&#"#5>323+5qhQ(&&(QI''W8wAXJfj><¾<>.,`" ^Mjj #!+53&'&547632#&'&#";3fJXXWA;;7U'&JR&''&Rij{M^]]"`,.><<>*j ";##"'&'53327654'&+#5qfJXXXA;<8WNIQ(&&(Qhj M^]^!`Z=<<=jf9'747632#&'&#"327673#"'&5gXWA;;7U'&JR&''&RJ&'U7;;AWX}7^]!`-->;<>--`!]^@ %6'&$"'&762匍6o8 565565jA'i[D:%27676'&'&#";#"#&'&54767&'&547632 O%@W"8a44?@}""}@?44`34[GBa_CEyyEC_`$e1F%| 34_i55c55i`33̶LMgGGGGgLM[$9#&'&#"32767#5!#"'&57632547632#.#"`8JluRPSG7@0 1TaamրQVWWA;:8ULIS''՝/@ywzdMn8]^!`Z=;?l'tN9*#'# '&#5!'&#"3247632#"'&&fZdB2dr+)++bBKL:kqqZ{_.""""./!!!!5Tl'7!#3!533!53 #5!#;lO؉jjjJckk$.jjK' 353#5!#!53L ojRkk[VZ(93!53#"'&32=47632#&'&#"4'&#"32765Ȟ1JLoqo߱oLJ1WXA;;8V&&JR(&BB~ABBA~BBkkd0/60/dL]^!`--=;eeppqqde )%3+53#53327654'&#"#5>323#hQ(&&(QI''W8wAXJfjjjfj><¾<>.,`" ^Mj +!+53#535&'&547632#&'&#";3#3fJXXWA;;7U'&JR&''&RijfjM^]]"`,.><<>jj[ ',54&#"326!!53!+5#"32#5!!"~~a~1o߱o1C9&iVզd_76_d)j};[6-7D#5!#3!5#"32#5!!#"'&'3327654'&%54&#"326-V)&^1o߱o1CG\[~idece PORRW~~ffjd_76_d)jVyx}|9Ddcfe8i[B8=%254#"%54'&#"3276!3!2!#5!5#"'&32#5!!8`BB~ABBA~BB v1JLoqo߱oLJ1C7&lcyieeppqqdeVDȾd0/60/d)j85qF#533!!3267332654&/.54632#.#"#"&'5#"&5ǒ8/?A;5@|puVw|nKZ`{iik))y<<з\X @wkJk]LU_19;]YFV1-,f,*gtRRC(*)-.HFo,, C59@#"'&'533276'!32673#"&5#533!&7&7632#&'&#"lX@<:8U&&JP)6l+/?A;}w&lWA;;7U'&JP(6Uhs]!`-->PnC]LU_kJs]"]/.>Qmi5%^q=E632!"'#767#"&5#533!!32767&57632#&'&#"54p` f@w8/?A4ZZZ[`?@vDEV<}Ģ G UXGCkJk]L**]z0@@st\m}B9*A!53!3!53#5354632#.#"!>32#"&'53327654&#"3Y螞<Ñj5e%44632#.#"#"'&'!53#5!332654&/.zKY`{ihk()y<<ж]X 'E^|puVx{o ,*gtRRC(*)-.HFoj@j'wv]YFV1-,5!!53!#!53#5!!z`}ٟE:%'Vj@j};?)#53## ##5!##53## ##5!#RUBVRB `HUBVRB `5/<<C<--`!]^h=l77)!53#53676323!534'&#"3/]c-.5!&0c!<7E>qz@?[>=3E?p{F@?[.'3Fzq>FP[?i`452654DŽi:OO:hHGGH=>X@?X=>POPPi`"'&4763"3`hHGGHh:OO:PPOP>=X?@X>).#327654'&#"#5676323+5D5509%'%+d8::/Cfflg""mj""6z 44}5+;;).!+53&'&547632#&'&#";3AleeB0::9d*'%$715335Dg;d+5}44 z6DjmDi;f3# #hhff33hhx5D35"bqD3"x!#33#Z6Y7 llx3#Y7xi`#gi`#hQ: 533##5#5慔s)H 332673#"&W ^ZZ] VHOGGOc77! 2#"&546+>;..;>!E03BB30E #"&546324&#"326ÏghhgmP9;NN;9Pssss?XW@AWX*w{!33267#"&546UO=25!<fo6{/.8  YQ1i7'.#"#>3232673#"&3&+V[R#9!4'+W\R":Z7OL!7PKNf3#3#fҠifxt%3327#&'&'f;>J_(D+2NgUL c=;>-N( \Q)#x#5!#7#5!##"'&73254Z^[hpbkI$$'<<<SQH'&8YOPH??n2679>((DDFOVW('DDv=99BB2'0J9R/. : !..&('>U01 )7#53#3!53'3#537'#5!#wTSQPQSMK<<<<<<<<).!+53&'&547632#&'&#";3AleeB0::9d*'%$715335Dg;d+5}44 z6DjmDi;4#!5څk44!5!3#Ukx(4!5!3#UkPP43#!5Ukx(4)5!3!>=3%>=3E?p{E?p{F@?[P@?[dCldfvfSfkfW7ya&bA!!&f f)MHuf7!vf7F!ja2#567654'&#"5676'' ,>a0$BJ'Xo 18X(Op6'< "1w\BfzfSflfxm3~*@m'8f###jfܐifxx)M'vfuf)MHu q& #6767E?45i*pPgIJ62'67&'&5476>=$CH ,"17#,LS#&8F'2&'&75476&(0", GC#'F8&#SL,#7vf3#>ifeCoeevgG%53#5#53"G%33##ۥGt!#!t"JQA532654&'#"&n+)2 r QH-^M^WC8:$C q|<:_"'&4763"3gGHHGg9PP9:OPPP{X@?X] 6533!5R] %##5#5۔_G% 533##5#5􅕕] %!!^R۔95'#"&'533276=˰Av7UMJR'&褻!!`Z><-9f%332673#"&5-&'RJLU8uA<>Z`!!xbvfAxJbjeA=A+fwg`~4d >=3~E?54id*pPgIJ6luzfwxfvd3~&Af#!#5yCRb#"3327473327473#"'&3+N W5 B V4 B V L+N  JSblfSdkfCMbufEMduKWeya.&AfqfpfmBff]fQQ'9'&'&#"#676763232767673#"'&'&#"#676763 ~\\1D W.0YZK^ }][2CV.6ROW^ ~\\1D W.0YZK) 9>(&;=3)B 9>(&;F*)F 9>(&;=3):5!jj:5!-jj'?ED^??u'FH9EG@ey!54'&'zDH2yDG0PQX$  +0PQX$  f 'ff57 !v5#&'& #676z%!!%ɯ:`wwww`Ttvf3:dtVvH%#v;cHPl =3?kA..g(Ղ] By>=3462"CTO8FdFFdE%ZpMN78Maf3#Jif7&jFf&#BL 4632#"&E41FF14E8MN78ML f'9 f'4 f'4 f& f' f&+l&ZF$e%eJF)3 avtye(R=e+g ,%2#""&'&547>3 #3!53#5݉XdbbdY$hbeYooooNQJKQkdappbcVobc es,e}.F% 3!5333!5vtvߗjyjjkjj[0Z1e%53!3!#!##3!53#51on]n:o~ooooL]Lcg2eVe3J !53! !#5!`oUPo.7<g'093!535&'&'.46767675#5!#67654'&'bbeYqZFF[pZdbbd]m32.j뢦j,hcY惃YdiݤӶF7SF-W`֗g[`_\gX\&=u\&`u[f&[Zgf&BVf&DBlf&ZB& N[D$2'&'&5476276737'&' &'&767#V7dooojޙME#!]ZV]? "1q;49-zgOBBGygKoV7$C;%oi4;^ΝKyuz8Q &{eq{ tV-%32654'&+5327654'&7632#"'HRTV-sNB+ESʦlJlU?=p^[6;Z]kH=EOq08tdTS(ml^\BS'%'&7#5!76'&'5374*>_*/~2 $,eh$]$BEX~8 08DCY.-14B_ K3CX8Zg2JU3$#5254#&'&46%!#g'`Q~{U^{rZLl堐 BVD3#5!>32#4&#"D-aWmsxklnÑ[+'&#"!32762#"6moHrZLlwVe z&[DRBy'353#5!#3!53!3L67QjRkkjjRjtVD32654'&#"#4767632#"&'~AMswIBNX1:2cZ-$!#@E:ORV$KFf)EE)>t=1!)EE)>t=1#!'k;ZgV $%2#"#&'&'&7>3 0VRrXdbbdY$hbeYqPNQJKQfn #2apjpbcVob2"[VD%26& #&'& *צg~hF8]m{2|gU#"'&'&5!2#.#"%$#52'&}z^dbi(nf!ɵnip6'`Q2,gp\@AĵrZLl[U$&3$#5254#&'&57637673#,tVEDE'`Q~)J`.Rt^qrrZLlz2]Ie)YP%47632#.#"!!#"&'533276oZ.j?XCBH'8p\-i?XC@H(:bdVRE@jbdVRFg` )##5!33܄֤%nm3j #!3f/e|OiU<# #&'#&'&#>3 #5276j.t9Ht"fe!fn'ޥ 4rtk3 YqFqYXdbbdY$hbeYQ}dapjpbcVobc[E+%673#&'&'&'&'6767676#&'&!!,.AQQ*7ud}wg[US`DAu6S FKAc2:/BA>NiS[E+% !5!&'&'&#676"'&'&'&'3 T6u@E aSVZgx|dv7)QQ@/FiN>AB/:2cAKe32654&+53#5!#!2#!31jkkj5V@ 32654&#"#5!>32#"&'z~~E1o߰o1HiOTjmd_ _dg#"&'&5!2#.#"3267<փXdbi(nf!ɵז+dap\@A[353#5! !#3!53#3fp33jkAkjj+=jVV' !#3!53##q&8.y'"fhjvqLVD'!!#5#534767632#"&'32654'&#"MK[[OW3 #"$h+Ö׵!fn(jbeXSHISXA@Upadg )4632#"&#"&'&5!2#.#"3267E32FF23E<փXdbi(nf!ɵז+8MN78MLdap\@Ag )#"&54632332#"#>3 #"$E32FF23Ew+Ö׵!fn(jbeX9LM87NMSHISXA@Upadek'nuLe\'uLE7,4&#"3!53!#!#5!6$32#"&'533265loo#26׳@BgOOkUϸookk`l2I""caek'uJg2#.#"!!3 3# f!ɵ x-W<iz=``h6es,U\':u=eV-"+)53!#"&'53326'#5!#3 32654&+ J2#BgGCBYxl5~Pj""Vm2kke(%32654&+)53!3!53#5!#!#5!#3 7w G  l4jPj~jjkkkk"#5!6763!534&#"3!53!#ro#x٫rolkkdnlkk`e}k'uQek'uO&Zue!"#4#!53#5!#!#5!#3Z! [  ?jjjjjjF$e%!2654&#!!#5!3 )53# 9oVjje%e %3!53#5!#5!ȫLojjjk[} !3!%#5!#3#4'!"#32'Q $x_cZ!_X>Z kkU3 me( ,%3!53!53 #5!##5!##5!# 3!ș@« ’@jj[;j3kk5kk5kk3jc (632#"&'332654&+532654&#"#t׻ݙ"{{V-ś eZ ׫߽i9j~e353#5!#5#5!#3!533f  Gjkkekkjjje&OTue}.4%!#"&'537265#5!#3!5J2#BgH;5#326&+"; Wddhmx]NaǻοkbBuzǒJbjjb?܂pǩ?b ;e)53#5!#!#5!#3#4-9  ` kjjjjT>3#3!53! &5#5!#;#52kjj#9kkǘrke%!#5!#3!53#5!#!#5!#w   {jjkkjjjje!#3#4#!53#5!#!#5!#!# ` Zn  jT>kjjjj?w%32654&+#3 )53!#"ojkLjLe',=ce%32654&+)53#5!#3  7jLjkkg !"$'3!2!5! #"#$(j;W- x ׵!fU^F"z@Xe(%3!53#5!#!76! ! '&!2#"ǫ C%h챹 jjjkkV_AQKJQe$.5463!#3!53#"!53>%!"3Ye<Ĥ$[kjjLQ%jR[OI[DDN6"+'&46767>7367672#"'& 3 [QTKQ_ AsZ;3PQyx k^EQ-B_ 42lGnMM͒3A'" #!53#532654&+32654&+T9ni <_hi^isrj'^q #힖jSj[YDDZp[[n5' #5!3!53#5`KD'ߦjjSjB$' !3!%#5!#3#'&#!"#32>5~9 ']ZZ] CTO3jj{[DHi'%3!53#53 #5!##5!##5!# 3#nymdacN_/mn1_Mbrdqjjjsjjtjjtjj jQD%63 #&'332654&+532654&#"#v}76=#5!#3!53!#"&/326 1$oJ;=E8%9*hMȼjjjjDuSPHO}BX'353#5! !#3!53#3C v0zӕjSj%jjj65j?l'3!53!3!53#5!#!#5!֕0J0ЕjjfjjSjj=jj[DR5v'#3!53!3!53#5u0J0'jjjBjjSj5V@DS[DFJ'#5!3!53!#_0^'ߦjjB!9 '\FV]#0=#5!7632#"/3!53#"532'&#"32?32654&#"E<+_uff,<0=,]up^,==#GNJE$=<#EOLG"iF22EfjjF23-2F()FUF)('[Bo')53#5!#!#5!#3#'&Еѕ^iTjjBjj{?l'#3!53!"&5#5!#3!#5k0KL[Е 9]'jjjW[MTjjsPjB'%!#5!#3!53#5!#!#5!#ЕĕЕЕ{BjjjjSjjBjjB'!#3#'&#!53#5!#!#5!#!#Е]ZЕЕ'j{jSjjBjjB6'%32654&+##!#3 )53ZkkZlMtjp\\o jj6V'#%32654&+)53#5!#3 3!53#5!z[jkZٕtF0jp\\ojSjjLjjSjl6{'%32654&+)53#5!#3 z[jkZٕtjp\\ojSjj[D#"#632#&'33 !5aا#/ T\_i5D(3!53#5!#367632#"'&'2654&#"z0ڕ r}nˆjjTikٌ͙w?1'$.5463!#3!53#"!53>%#"3nn"0n>H+!9\a\[b~wwjgg:bg I:KhdOOf[d&lC[!&lj^&9 -"'5332654&#"3!53#535#5!!!>32pVLJRNU|x5Dh-9B`Z{ÏKjjVwsjwyln%5f&vAj[E%673#"'36#. !!,.gS`uS F3)1/{iSgTDVB$L@!'jZN9M?'!*!53!#"/32>6=#5!# !'32654&+L4"oABOE/.9+ WX[jkZXfHӔO}lMȼjjfp^^o?'()53!3!53#5!#!#5!#3232654&+fJ0ЕЕ;PX[jkZX4ffjjSjj=jjp^^o&%!!>323!534&#"3!53#535#5!h-6U|x5D7wlnjjÏDjjVwsj5jf&vAq?ld&oCs9 K&Vz6w'!"#'&#!53#5!#!#5!#3Z]ZЕЕiTjjBjji?; ()53#"#!5#5!#!#'&+3 326&+:Zdt tdZ7|X/Lj!gkkgbS6"%3264&+3 )53#"#5!#5!!#&#[jkZtMX X E X YjpojSzizg[D '&'& 325 GMI^rzq^=tv9 {2|߽jh{33#3#!53#532654&+Ml6|Y K}bj}~ *q33#3#!53#5264'&+ԧ:T?ZYe[j55[W'Jk\EKKfVk?p78ee %3!53#5!3!ȫojjjk%`5X 3!3!53#50_D'1TjjTie3!53#53#5!#5!!ȫLojjp{k{5'3!53#53#5!#5!!zDZ_JVjjX{i{eE,3!53#5!#5!67$#"&'5332654'&ȫLo4c@AfOOlTFleQMjjkp&+rI""ca5Q[V59'(3!53#5!#5!!2#"'533276=4&#zDZ_JCFJYWpVMJK.'V|jjTiem_]B`Z>5Ïcu &z(NQuD&zne}!3!53#5!##5!# #4'&'E C_Zjjkk5kk4T5v'!533!53#5!##5!# 3#'&#႕0ӎl]ZjjjTikckk{Z} #5!# 3!3!53#537#5!#3C Y5kk3jjj}kk}5j!!!#5!# 3!533!53#535#5!zl(႕0E4zekkjjjjPzvj?\##5!# 3!3!53!#QBok5kk3jjjL6'!##5!# 3!533!53##6El(⃖/l'kckkjjjjWe)53!3!53#5!#!#5!#3#4ͫG  ` j~jjkkkkT>?l'!53!3!53#5!#!#5!#3#'&#J0ЕЕ]ZjfjjSjj=jj{e!!3!53#5!#!#5!#5!3!53G Loǫ~jjkkkjj?'!3!53#5!#!#5!#5!3!531J0ЕZ_JDfjjSjj>ijjeEH267$#"&'5332654'&3!53!3!53#5!#73d@BgPOkUGleQLG|ʌ&+rI""ca5Q[Vojjjjkk59['.3!53!3!53#5!#!2#"'533276=4&#0J0@CFJYWoUMJK.'V|jjBjjTiiem_]B`Z>5Ïgu'z+X[uD&zZx!53!#!#5!3#4#`uonu` Zj` T>J'!53!#!#5!3#'&#^k_]ZjB {<V '%#5!# #5!#3!53m  gk3kk%kkkk *!53 3!53 #5!# #5!# 3#4#Dw (_!Zjjjskkkk@T>'!53 3!53 #5!##5!# 3#'&#?z|vrɁp~+]Zj>jjkk3kkw7{`!53!#!#5!!#5!#3#4#`uonu< _ Zj`jjT>J'!53!#!#5!!#5!#3#'&#^k__Е]ZjB Bjj{!53! &5#5!#;#5!#3#4# _!Zj#9kkǘrkkT>?l'!!53!"'&5#5!#3!#5!#3#'&#JL6%Е9]Е]ZjW6%MTjjs-#jj{#53#5!#! 3!534&+3$ kjjkkWpkBpKes, ,m' guMiH'umeE7167$#"&'5332654'&3!53#5!##5!#(/c@AfOOlTFleQM Ch +rI""ca5Q[Vojjkk5kk595'.3!53#5!##5!#32#"'533276=4&#30ӎFJYWpVMJK.'V|4jjTikckkem_]B`Z>5ÏeE$%!3!53#5!#!#5!##"&'53326G  @BgOOnO%~jjkkkk""ca?9l'%!3!53#5!#!#5!##"'5332761J0ЕЕYWpVLJQ()hlfjjSjj=jjۣ_]B`Z>>)"#3! &5#5!#;#5!#3Z ` "9kkǘrkk?l'!!#"#3!"'&5#5!#3!#5!#3kZ]JL6%Е9]ЕW6%MTjjs-#jj5 !#3!53#5jjj@Fi'u!G[-&uKgF\&Gfu[!&gj3[hDem' nuL[H&uUlgP[Dg\'u[!&j^ ,\'guMi!'jmc \' uNQ!&jn[x[6'=e2'q]<O?l'qoe\'uO?l!'jog\&Uu[!&uj^g+[D g\&u[!&j^g\'`ud[!&j.2'q<Z9 &q=z\'[uZ9 !&j=zk'"[uZ9 f&z=z3\'u^?l!'j~e353#5!#5!3#4#fLo_ ZjkT>5'353#5!#5!3#'&#?Z_J]ZjTi{e\'pub6V!'j[hD 8?32654&#"'>32+32673#"&'#"!54&#"#>323267|xzigbKqshwVVN2Bjɑm'֭nzsvzoF[XIxcc))WZXY*}[Ժ[VD22#"'&'53327654'&+5327654'&'&#676ʿCEyyECKVV]Y 88ia44?@|##|@?43bhoRPDgGGHGf%]-.43_j45d45i`32\|a_BJ$- #"&5462#5!#3!=*)=32>32#"&'#"73267􅈈 ʒm(խuB>uw?Bnzs8F}ba`cc``c)[D 4& #4 82[  653 5 ]2z!53##!#!2654&#!]``d`-MtX4j^`z,{ 14632#"&4632#"&!53##!#!2654&#!>,-<<-,>>,-<<-,>]_`d`-M$0FB42BF0DB22BDX2l`^z\^p0#!#3!2654&#!#3!2654&#!#3!53#ik__|K__yK__^`dn5n`o{`o{3d|9 (5#"32673#5#"&546;54&#"#5>32ΆNLMBAPh]"[=dv{SL>J 67f1}W~BD?HO;@)'iZ\f)DJ87y{9 ,32654&#"#53>32+32673#"'&MLMBA((h]#Z=dv{*)L>J 67331}AB4~BE>I((9;@)(jY]f)C&%87x ==9'53#3#5#"'&63254'&#"3276cc/0FoGFpF0/)*PP))))PP*)]<$;]8WW;k98?>|{@?899  8?32654&#"'>32+32673#"&'#"&'!54&#"#>323267uNLMBAP>/sFpz{QIBK 67f1Pn*mB[[DXSmEvRMHS 4~BE>IP'32f]]f)CK87x0312x{GFbc3hjkg! #53>32#"&'#5732654&#"e^FooF^SPPRRPPS;8658];kq{|}qk9 3#5#"&632#5354&#"326bc_FopF_biSPPRRPPS;]85686;;kq}|{q9v!32673#"&54632.#"u?\YEXTnyRMHS x{GFbbchjjh9v!!54'&#"#67632#"'&73267:-.ZE,+TCCnPPIIx*(NHR x>=#$Fb12WUSSch55kg92"&54767&'&54632#&'&#";#"26732x*+MM+*xp/66;8##B>! ((NN(( !>AF V 42VO:'( ((9OW x45<8;63FI65922#"'&'53327654'&+5327654'&#&#676"y++MM++yo066;8##C=! ((NN(( >AG U 42WO9(( ((9OV y46;8;64EH669+#"&'53326=#"&632534&#"3265b323!534&#"3!534&#"3!53#53>32Z]?^]^[7>FIZZ6?FI[^dZ8G^{BCtu;;4[Mhc;;8YKhc;;;j32#"&'53327654&#"30^d\>b1/oa)J#60.47DIL[;97yK\i{62""ImQhd;926&""&6 ]TVVUVSÃ79V>32#"'&'533276'&#":~dPPPP:899< )'JU+++*VCQ=_dVVVU N$$AAAAEF9 4&"#46 VUzƀ9 2653 &5UVz! "32654&#"'#53>32#"&'3!53SPPRRPPShe^FooF^ce;kq{|}qe<]8658<<!#53533#32673#"&5}\\i')&OPSZK<py>_./^7?F$%[?F%$ZcY9F// A!"::u?<\M44d32#"&'!532654&#"^OVyp0n߲n0D~~&&h`ďd_ _dktfG'53#5!#3#3!53f᝝jkgzjjjf9%3#"&'533276=!53#5!zAv7UMJR'&şEjjh!!`Z>w^y<S+L!- 05&T,92"'&'3367654'&+5327654'&#"#567632"v24 U GA> ((NN(( !=C##8;660oy++MM++y56IF36;8<54x WO9(( (':OV)#.#"3#3!53#53546327/-:0dddie&L&w*+?QM<$;;bp \?^G7%*+p G326763278a)$/37>F$%ZZ?F%$[^dZ8G//./?^/.b\54 {6""I[M44c;;8Y%&44c;;;j_./^7?F$%[?F%$Z<<-;?#"?A!"::u?<\M44db1/4.5#%%)a77m)(44d;;Ta '#"'&'533276'&7632#&'&#" D7a)&%#6/2" <6 D7a)%%#6/3! 5bPA4 {6"->lrQ?4 {6#->!'#53533#32673#"&'533276=#"&5}\\i')&Ooa)J#60.4#ZK<XHI#<]tUh?>>?hV9:])"3#&'&5#537654'&'@W33-)65=];5d4G@3"#C#IHX?58)%5.bR?cYW22349g0CClFE Z]88`n999&'&#"!32762#"&6'*TT*'R'+SS+'n[ff[<[ff[jAF&$f[AD&De&%ju5@&Eex&%j5@&E] e&%j5@&E] guk&u[uf&e\&'ju[f&GBex\"'A[xf"Ge\&'j[f&Geu\&'[uf&Ge\&'k[f&Gk,e&('nun[&H'xe'nu&(n['&HvUpe&(n[D&HeK&(n[KD&He&)wuB&Ig0k&*u[9f&Je&+uBp&Kex"+Bxp"K+e&+u p&Keu&+GBup&KeC&+BCp&K*?K&,:KK&Le}r&.|5j&Nex}&.5xj&Ne}&.5j&Nex#N/5x#O^x2"nq<x33"oqY=e&/y5&Oe~&/NHE&OkYZ[r&0|Bf&PC[&0|uB!&Pv[x"0XBxD"PCZS&1!jBp&QvZx"1BxpD"Q+Z&1BpD&Q*Z&1kZBpD&Qkg&2'u[&R'xg'u&2['x'Rer&3l|5V@f&SKe&3ju5V@!&Sve&5_uBr!&Uex"5_BxrD"Uex2"q<Bxr"q/e&5_rD&Uh&6EugT!&Vvxh"6EgxTD"Vxh&6'EEugxT!&V'&7.u5&Wx"745xq"W&7.5q&W&7k5q&WkVx&81x_'&XVK&81K_'&XV&81_'&XV&8'u1_&X'rV&8'u1_]&X'<Oj&9a 7&YxO's9x ''Y br&:|6&ZC br&:|6&Zv bT&:j3&ZjK b&:|!&Z xb&:x'&Z &;]!&[ &;]!&[&<*|9 !&\Rk&=OuIf&]Rx&=NIx'&]R&=NI'&]Bp&K*&W&Z9 &\[&DgKgT!&VxF&$f[xD&DFE&$fu[&DxF&$'ffu[xf&D'F 'fu&$f%['&Dv3F &$'fuf%[&D'F &$'fuf [{&D'F&$'fuj[&D'oxF&$'ffu[xH&D'ex&(n[xD&HeE&(nu[&Hej&(h[7&Hexk&('nnu[xf&H'esE&,:uB$&exs'9,Bx$'Lgx'2[xD'RgE&2u[&Rgxk&2'u[xf&R'Vx'81x_'&XVE&8u1_&Xr&<*|9 6&\Cx'*< ''R\L'*|<9 '\j'"<9 7'\[&p[&s[&[&[&[&[&[&F&F&iT' T'ď [&t &LŔF&F&ƁZg& Zg&Zg&Zg&Zg&;Z&a ' |''m -'ď 't '2ŔBV&ZBV&OBV&SBV&aBV&BV&BV&lBV&l ' 'U'r j'ď 't '<Ŕ 'i }'iBl&YBl&^&v&t:&&şl&^l&a [' K''r 'xď ' t '<Ŕ 'i 'i[&T[&T[&F[&T[&[& & &I'* '7ď Y't ' ŔB& FB& 9B& 3B& NB& oB& B& IB& > 0'_ 'ď 'Ŕ 'iQ&Q&Q&Q&Q&Q&$Q&Q& & &L', '7ď b't 'Ŕ R'i 'i[d&~[fZgd&gZgfBVd&BVfld&iBlf[d&o[fBd& YBfQd&Qf[P&-[P&-[P&-[P&-[P&-[P&-[P&-[P&-PF'PF'PT' PT' P[' P'PF'PF' BP'yBP'yBP'yBP'yBP'yBP'yBP'yBP'y P'? P'4PU' Pj'! P'h" P'# P'$ P}'%QP' NQP' OQP' PQP' QQP' RQP' SQP' TQP' U P'0V P'|WP'\X P'gY Pb'Z P'>[ PR'\ P'3][H&u[&q[Pd&-^[PD&-[Pf&-[7&[P7&-Fi&u!F1&q;Fd&tFfPF'ZKPlZK2'67&'&5476=$CH ,"17#,LS#&8F'7y7&jVBPd'ybBPD'yBPf'yBV7&lBP7'yd'On fAd'_n feP'W/'$'>'lH&ufl&q^l&cll7&tl&tSm& 8u^z2&q<d'dn fz/' w& 'BH& uIB& qTB& ;BtV&=tV&=B7& AB& 6i&u!1&q;d'n f o'7'j75dCQPd' jQP'' QPf' Q'QP' d'n fd'n fpP'0afvZK2&'&75476(1#, GB#'F8&#SL,#7Qs!!Q3sQsb!!fbb!!fb4b!!3b4b!!3b]&BB#>7E>qz@?[>=3G?q{+?=[Q>=3QUOE%Z.'3F{r?+P[=R#>7#>7RE>pzE>qz@?[P@?[>=3%>=3G?q{ D>qy+?=[P??[Q >=3%>=3QUOVOE%ZPE%Z.'3.'3F|q?Gyq>+P[=?P[?3;g 3%%#5| h hFs3;g3%%%%#55| h h hhFE%'+! 4632#"&qppq||}sq_ 64632#"E31GG140pNN87N $4632#"$4632#""E31FF14VE31GG140pNN87NMpNN87Nx #%4632#"&%4632#"&%4632#"&E22FF23DE31FF14DE31GG14Dh8NN87NM88NN87NM88NN87NMe E #0<@L2#"&546"32654&"32654&"32654&#'2#"&5463#2#"&546OZZOMXYBOYZNMYYROXZMNXXLܻۻZݦ!\ܻۻ ۻۼ e  !-9DOS]2#"&546"32654&%2#"&546"32654&"32654&"26&#'2#"&5463#  &54 ⎧OZZOMXYᎧOZZOMXYBOYZNMYYROXZXXLvۻZZۻZݦ!&\ۻ ۻۼ5# 54 Z#ssRT#5 Z #^R^sXX}O&d B>&""E}&"}&"l. 2654&" '&5476 ```WVTTV0VTTļrrrrrrr/ !535!533#3yhiTTR=$!67632#"&'5332654'&#"#TT!+,5XXYYAFFf\bk55c9*+!5\ KKJJOTtnl::%$ ,27654'&#"67632#"'&54632#.#"0//0XY^/C">@8RQSUʶ2678GQEy;<::lm::pjo<j%LKij 8Eh3 Dh吏u#0;37367"76!32!7324&+3 #"'3254#"2i&uc:p,j#sHy/CKCϬ'.SNoDAx>R_^wژznX,sB7#RmNCI^C!5!7676735#654&#"367632!!#332767##"'&5476o~P ߷ ^op~fPOKJ2!M͚ossvgSUTT2  j*@bj7A+œHGA@{e323!654'&#"YDxAa9"clmthjVlne=fCUjjgE=!HDt /#"&63264&"!!463"##52765#5!t]]]])GGiFFCvlv OiihhhP">Qrkf(3#3!53#3#53#5)#5#3!53##NNN'KNN=NN:BBBB7VBBBhBBBhpe}.Fm#ud'F{Q#ud'Ft#d'F{Q#d'FtZ#d'Fu/#d'F#d'F{=#d'F#d'F{Z#d'Fu=#d'FG#d'Fi'F{D8 !#53y x ׂ } !53%t s _ i8 !3#!i w yac ca} %#5?= > _ ]a-)>54&#"#"&54632#"&54324&#"32 AA2! +[ƒ[u NGbMHbmWKt,>bFأ[t}t{-% 3A+-! !#y1+/w!#3!53!3!53#0Z}謬JJJJJJJw !#'.#!!>?3!5 cFB 7=9! AF<"%!%)/1F!!~Ӣ3#BL 4632#"&E41FF14E8MN78ML6} 3##'%g;q}`s-Pb; %.#"326"&'#"&54632>3"3,xM[skPHvBH@UzyUD=W%vE,x<XXieu~९{YY; /32654&#".#"326#"&54632>32#"&8,xL[sjPIv,xM[skPHv@UzyUD=WxyU/YYie9XXie~९{⦮u I%!3! z~$ I%!3! g~$X33# EETJX3 3#JT\32#4&#"#ݛP,*7\332653#"ꛅVP7**%26732#"&'.#" #"&54632_  HZ92&2 ` G[>6+ l9TA6?&#Hn!bSA8?S*'QaQ*W'Q'QaQF!!#"/&'&#"5>32326~YTR USP[TV XRZT? 9ILZRB 9IfF!!#"/&#"5>32326~XUV USP[TV XRYSB 9ILZRA 9IF8#"'&'&'&#"5>32326#"/&'&#"5>32326EYTR USP[TV XSOXUV USP[TV XSdZT?9ILZRB 9IѓYSB9ILZRA 9I'F!!!!!'7!5!7!qt;Gp?f٠f٠FF !!!!!!~~~ҠF 5 !!EK~~~poF %!555E~~f 3 %! <=YST$`jF^!#E^c?$%%$~Z[|||ӥ,~ U1;FOY!!"&546;#"&5462!54632+32#"&=54&#"3#"32653264&"2654&# ꦦrr uvssvupX>=XX>>XX>=X>XX|XX|XX>v(D(غPEaabbDEbbDbaaE DbbEDbF^!3!E~?c6732#"'&'.#" HZ92& a l9TA6?%Hn%7( #"&5463232676 HZ92& a (Vl9DTA6?%Hkn  !!!!%!!Xdo̔4+l  #/;GS_kw+7CO[gs!2#!"543!254#!"+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;22+"=4#"=43+"=4;2+"=4;2"=43!2#3DŽCAAC!B""B!!D D!)!C!!C!r!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!"B!!B""B!!B"f!""! !C!!C!!C!!C!"B!!B""B!!B""B!!B""B""B"!B""B!!B""B! !C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!B""B!!B""B!"B""B"!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!"B""B""B""B""B""B"!~!!~!!!!& !!!C!!C!!D D!H""!!JJJI%%I&%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%% %I%HJ%%J%%J%%J%%J%%J%. 7!!!#!#Y7(3('! !!&$<.73!3!Y`(l!! !!!!#!#(!((!(0(!B({(!((!((! (Y(!k((3((t ( #'+/3!33!33!33!33!33!30stststmnmnm(%8K#!1!!!!!!!#!1!!!!!!!#!1!!!!!!!#!1!!!!!!llll޶llll޵kkkkߵkkkk(((((!%)-13#3#3!3!##!#3#3#3#3#3#3#!"޵׶׶m#(i#(w!~(~(&~&(&(&~&(&&(~(&~(&~&'%! '%!!!Ng>9%-d) 327$%&#"%632#"'++Օl``````qq|qqf' '/7?G%&'&'6767&'&'7%'676727"'64'7&"'62&479'5)3,?4C0x2)/-Z5>3@'5)2+@3C03)5'Z,G4?DD#VVcDD#VV c<1& j(0=Ju &,A=N:0('<1& j(0=Ju &1<>EB0(n_II'[[JnII'[[d) %/36%632#"'327&#"6767&'&6e`` :;;:{m('((((';99̙Rqq|qq%%mܱ[0$ %@%|"d) )73276'&#"7632#"'327$%&#"%632#"'Vg4343gg3434՞OOOOOOOOH++Օl``B!!BB!!oe33eje33````qq|qqd $  $eGyFAk^d $  $27$%&#eGyF+ՕAk^a``d $  $"3eGyF+Ak^``d $  $327$eGyFS++Ak^>``d $  $%&#"eGyFYՕAk^>``d $  $"327$!eGyF++Ak^```d $  $"!eGyFVAk^`d$)6%63"'e`Rqqg)#2f|q*q ( 2654&#"!Κ⚚ord}}|v<U( 327$%&#"327$%&#"!(++Օl``````}|qqqqH(U( !#%&#")%632T++qq>~``U 3327$3!#"'$``Ֆ>qq``) %63"`qv`) 2#%&#`iՕ)q>` 527$3+iv`>q "'$33įj+q`d)%632#%&#"e``jՕqq>``d3327$3#"'$ei++j``>qq% % %! %!$+! 2654&#"4632"&J|{{Y[|6qpddcc||}'%!%!!@Z r<'%!%!!X r<'%!%! r<'%!%!N r<'% !%!!!!t&t% r<<% 4632"&! ?N97MMqM`KAj>VV>>VVJ %! &A %! %A d(  7& 6  'hi./*X֖'% !!!!!!tg%ۊ<)) Ie'% !!!!%!!&Ng%M)*<?v^ y <BHNTZ`fl3264'&#"&7367'67675673#''5&'&'7&'677&'67'%7&'&'%6767%&',*<&`7" bK*V&"g{ M M !)1! ! 3254#"&#%#7&'67&'67wv:<F>4,<[-ch`ch_7IL6a] ]pu otpu ot !)1! ! 3254#"3$3&'67&'67wv:<F>:]ch`ch_7IL6a] Uypu otpu ot %! ! #$''&'6%&'6wvcGkvJVVr~w{t~w}7IL0c Z    "*2:AIX3#''%#&'52#"'&5476!!'5%!!'53'5%3'5%3#'32765'&#"FF47H8(S A+[!?27@yf756FF u>p,y9#_>?@7`d@\hPPPPy?+<>w_VG{?,rCA01@7#'#53'&'&54767&'&=33676=3#32654'&$ xwatbww!$$!wRMi"iLRx "iMRurRLV$|ddb e|$% ZSSZ %_TYYT $4&#"326&54327##53&ёϔ1./|䤣L~~|  $"32654&'#533'#"5476ϔ|Ҙ{פ㤤ף |~~L #&$76+"'&5'476%7!iiggi$jg ՕeE~Z5s qttrtt<֤ꧦg\ul91B52654&#"#43233#!5nom覨b͈wyyy{(|#53533#632#4654&#"#``d~~dc}mZyH{zF 4"32654&7#"&54767!!53#5!!3!!#3!!92GG22GF7+Db`E*8쌌O79NN97Os0LllllL1KӘJJ-<%#5#535&'&'5'73'3#'73'676=35'73'33n^F][E_nzTThOʍ7NjYYӖy! #!!!'!27674'&#pZ51;J&u@!IM_\ǃ$P<"Q##"'##56'##"/547? dsU 2`g26;2"##'65##"'&5476;2&'5476&+"326733276=4/#"567654'&#"35&5?^g7%SB\JLZޭ\<."7Y@ؘ aj7{6Gf!KQM 1k`t0%K6F98:d  mOE:R p&i  C]&'Ax.+0 nM,W`cr3#"/4?23*A+ ZP-@3#'654'&'#"54732Nn7S3ڿWP'6?F` 1TFG*֙-@R/"#"=4?2%#"=4?2n0#NI<Ù'PH*~: ۉ8z"C"'4723!#"5472!5bGZOO;Z$}@Ϝ 3363'$6'")2y k?WXc1  3%#'#3%#%,$//c}(,377#'#'547#5773%%F*kknm*&ttrt&<<7CA<<{8AMt#u ! !=?Fvu-1#u >>u-* 'Q'Qa&QQ$*-27#537632#"&'.#"3##"&54632_ JUHZ92&2 ` UUG[>6+ TA6?&#Hc!SA8?S*4#"&5463232#53767#537632#"&'.#"3#3.EUG[>6+ Z6UHZ92&2 X`SA8?SfEZQTA6?&#HM'%!%!!N r'%!!!N [$+7&'&5%632767#'"632  3 \#1-PLI,5 O68MA%-26^剄L40P #  [$!9) 33p*34632327&54632#".p?++>-bb-?++>(&.EE0 0EE.-0b^2]f4632327&54632#"&++-po-++./00$$##$$00E5#!5#!5!5463235.#"!5463235.#"#3#!5#X L\GKW;y<2K]GKW;y<jjRkqNKqNKkjjRB"'.#"!3!53!3!53#5354632Uno& NPVUdCjjRjjRk`B!3!53#"!!3!53#53546ex Vjj@dkjjRk`@=;#!5#!#!5#!546325.#"!5463235.#"#3#!5#zڟonUPN K]GKW;y<jjRjjdUV`qNKkjjR?,6#!5#!5!546;#!5#!"!5463235.#"#3#!5#v yŸ L\GKW;y<jjRkdjj`qNKkjjRGG.#33267##"&5!5!&'&#"#3#!5#546328v};A?/7=|RNҟᝀfk]_ULkN `kjjdZ]V#.#"#"&'5332654&/.54632&54632!!32673#"&5#5354&#"`{ihl))y<<з\X_|puVx|n N4888/?A;}vZ]~?&gtRRC(*)-.HFo,,wv]YFV1-,fW+'(cprk]LU_kr_][aX-TGL !%$32654&#"3>3235>54&#" 8F31GG13WgqoKjjpMN78N{+3캶.f3#ifL 2#"&546!2#"&546+><-,=>*><,-=?F.2CC2.FF.2CC2.F3#li ]'.#"'>3232653#"'(,%#/W\L!72,'%*W\U 9.dv 7/ir-C#iS3#'#hhS373hhL #."#>32U``Uvw7667u}|L 332673#"&U`SS`Uvw7667u}| 2#"&5463+><--O_<22u  m {u R[IOehIBnQImy}8{{tmmB}3y3JegeAeegGeefaee_[LZgegkeV3f  RmJ[5[[B[B[BMB;O\5M5BBU[5[qBg51)Im{]mR3kpgnQ3QZa5IbTgZ}3333335gAeAeAeAeeeNUeLZgggggZVVVVe5J[J[J[J[J[J[[[B[B[B[B[MMBMMU[BU[U[U[U[U[UD111153J[3J[3J[g[g[g[g[e[e[AeB[AeB[AeB[AeB[AeB[g[g[g[g[GeGeBBM^MSM eMBeMBeBf;Oae\5\5eM5eM5e5eX5MU(LZBLZBLZB<eLZBgU[gU[gU[0k[keqBkeqBkeqBgggg555V1V1V1V1V1V1f )RIRIRIBJTJe5Je5gg[eTJe5U[AegJOg Be"ae\?M5KBLHBgcUY|g[T5egJUO5N5Q'pxePRI[[[}e#N e eg[ee5 /ZZB3J[MMgU[V1V1V1V1V1B[3J[3J[5[g[g[ae\ gU[gU[[[MO e eg[g[NeLZB3J[5[ZUD3J[3J[AeB[AeB[MSM gU[gU[keqBkeqBV1V1g5Ge [RI3J[AeB[gU[gU[gU[gU[5B5;O[[3)!"gI3DJ[[[5[[[[B[B[lZ]Zj[DO[[[ T1KKMBBMBAEB55BBBOBKU[[[U[BBBqBqBBKBKF?F?fOOBUO551w[`B)KLII[uf. Aj[[?O\5K[,[p[/[5M55oB55M?0?55)))))))7) )III6i6i))mm6i6i]Qc*7))m1 ))UUUUU{'g2B+ ^^`^.>m''ggv"<lg6mBa3Iz {   v # 3Jee3FAeRGegeae3_[LZegGeeJg PVpX[ZPBB`B[)tMBU[ZJPBU[B\5K?`BJU[B;t[[J`B Q\tQ`BU[`BQ1[%?6K 6E'}SgU[g[eUZ?`&R}S;t[;Og[[e5g_[V;Lgggmee-egeUf^ eGee4Ge3JeJee[Ae4 |cGeGeae_[GegGeeg4i Ge7e7e?eegeeJ[UN A5eBB[~Q??\5eB?U[55[JFB?BBJ666[D5?B[B[w&5[gMBM;Oq?&\5?6|?B6g[ e5e5=ek5cQae\5aZ\5??6Ge?ne;?e5g[J yJd?dBe4 ~ae\5Ge?d?M53J[3J[5[AeB[gB[gB[4 ~|cQ[[Ge?Ge?gU[gU[gU[g[444?e5e6[[MB[U[U[N999s9!999s9s99B)!j))9~999!!Wj)[fM9~9~99s9)9)))@C!B/j)j))/99\@!9)a.a.a.993J[Je5Je5Je5g[e[e[e[e[e[AeB[AeB[AeB[AeB[eBg[GeBGeBGe GeBGeB?Mae\5ae\5ae\5eM5^MeMeM_[B_[B_[BLZBLZBLZBLZBgU[gU[e5e5keqBkeqBkeqBkeqggg5555V1V1V1V1V133f )f )f )f )f )  RIRIRIB)[g3J[3J[3J[3J[3J[3J[3J[3J[AeB[AeB[AeB[AeB[eMBeMBgU[gU[gU[V1V1[[[[[[[[33AA H ~ 33ZZZZZZ$   B s PBPBPBPBPBPBPBPB/ $  X    BB:  JO   } m U[U[U[U[U[U[ 0    `B`B`B`B`B`B`B`B    QQQQQQQQ C $/     [[ZZPBPBBU[U[`B`BQQ[[[[[[[[33AA H ~ 33PBPBPBPBPBPBPBPB/ $  X    QQQQQQQQ C $/     [[[[[[[33333ZZPBPBPBPBPBz { GeS^< zw`B`B`B`B;t;t`B`Bv  QQQQQ # paZ33_3IpnQnQ33IIIQIQ33??g3 e {e}>l}l}./=$G/-).QZ/=$G/-IIXD3pae3QQZ/=Z=GDi]--/#3I6EEEE*!**3%3 dlHdHdHfHdHdHdHdHdHdHdHdHddHdHd?dHdHdHdHdFFttyttttkCCtt1ttttt"tt5tt!tt5tetRte{ ***U[pEBB}@k?GZb DB x79k:;<&:$7$9$:$<$I$W$Y$Z$\$$$$$$%$&$'$6$7$8$9$:$$$$$$$$$$$$$$$%&%&&%*&%2&%<%&%&%&%&%&%&%&%%&%&%&%&%&%&%&%&%&%&%&%&%8%:%&%&%&%&&''&''9(&))))))$N)Du)H)R)N)N)N)N)N)u)u)u)u)u)u)u)))))))))))N)u)N)u)N)u))))))))))u)))**&**<**:--a--.k.$.&.2.8.:.<.H.R.X.\}................................}.}......0.1.:/7Y/8/9 /:N/<}/\/////}///&Y/0/:}//1}1}1122K2292;3a33a333$D383D3H3R3V3D3D3D3D3D333333333333333333333333!3#3044K44&4&57595:5<5D/5\55/5/5/5/5/5/5/5&555&5:5566K6666 6"777777$77&7Da7Fa7Ha7Ra7Vk7Z777777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7!k7#k7&&8D88D888$8-8888899D992929$u929DD9HD9L9RD9X}9\9u9u9u9u9u9999999D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9}9}9}9}999D99D91}9K9K::k::N:N:$:DN:HY:L:Ru:U:X:\::::::N:N:N:N:N:N:u:Y:Y:Y:Y:u:u:u:u:u:u:::::::Y:u:::1:&:&;;$;&;2;;;;;;;;;;;;;;;<<<<<<$a<&<Da<HN<L<RN<XN<a<a<a<a<a<<a<a<a<a<a<a<<<N<N<N<N<N<N<N<N<N<N<N<N<N<N<<<N<)<1N==IIIII&INRUUY Y Z Z [\\79:<IWYZ\$%&'6789:79:<IWYZ\$%&'6789:79:<IWYZ\$%&'6789:79:<IWYZ\$%&'6789:79:<IWYZ\$%&'6789:&&&&&K$9<:}}K9;K9;K9;K9;K9;K9;DD$-DD$-DD$-DD$-$a&DaHNLRNXNaaaaaaaaaaa<NNNNNNNNNNNNNNN)1N&79:<IWYZ\$%&'6789:79:<IWYZ\$%&'6789:79:<IWYZ\$%&'6789:&9&9&&<:7Y89 :N<}\}&Y0:}7Y89 :N<}\}&Y0:}O7Y89 :N<2\2&Y0:2 } }  &79:<D/\///////&&:79:<D/\///////&&:  K  6   """K""6" ""&&&&&&$&7&&Da&Fa&Ha&Ra&Vk&Z&&&&&&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&!k&#k&&&0D00D000$0-00000777Dn7FU7Ga7HV7I7Ja7L7M7P}7Q}7RU7S7Ta7U}7V7W7X7Y7Z7[7\7]77::::::$a:&:Da:HN:L:RN:XN:a:a:a:a:a::a:a:a:a:a:a:<:N:N:N:N:N:N:N:N:N:N:N:N:N:N:::N:):1N??d$d-/dddddd79k:;<&:$-/$-/99:9;9<99:979:;9<YZ&:6J"x(>Lz"T*Pt\@b$<f.h 4 f  L  : | ( < B j <l.\\|2jvv:Hx8HXhXdp|*6Bddp| ,8DP\ht6| ,8DP\ht&2>JVbnz,`lx ,Xdp| ".:FR H    & 2 > J V b n !! !!$!0!/J/V/b/n/z///////////0 00"0.0:0F0R0^0j0r0~0000011J1V1b1n1z111111111112 2L2X2d2333*363B3N3Z3f3r3~33333333334444&424>4J4V4b4n4z444455$5H5T5`5l5x55555555556(6t667$7~788T8v89969f99::n::;<;;;">`>>?:?l?@ @:@T@j@@@ABAAB2BvBBCCVCCDDHDDDE"ELEEF,FlFFG4G^GGH HDHdHHHIIHIIIJ0JdJJJKBKKKL L$LxLLM8MMN^NO$O|OOP6PXPPQ,QtQQRRFRRRRSSS4SRSSSSSSTTT&T0T:TNThTTTTU U.U`UtUUVV*V>VRVfVvVVVVVVVVVVW W*W4W>WLWZWpW~WWWWWWXXX*XN^n~ƒҒޒ&2>JVbnz“Γړ ".:FR^jvΔޔ ".:FR^jvΕޕ&2>JVbnzƖҖޖ&2>JVbnz—Ηڗ ".:FR^jvƘ֘&6BNZfr~™Ιڙ*6BNZfr~ƚҚޚ&2>JVbnzěқޛ(4@LXdrΜڜ ".JVbnzʤؤ ".:FT\jr~Υܥ,@Tvܦ&>L`*Ȩި BdHȪҪܪ"d|ĬDȭح(8HXd|Ư4Tΰ P`rڱ$4h0Nh8Jv0>Tfp~ĶҶ &4BLr|¸и޸&P\V޻ʻ(8P^rƼܼ$2HVlzĽ޾Hblʿ@l rО:|0>drҠҰ "6L$ +@ ^   N&^ 066ZDD\HH^LL`RQbVVfXXh\\jltvx            ! "#   "$&(*,.02?R?{?|?}?~?{???????????????z?????  #!  0T VQQXeeZ\^bhlpQQr   `?x?x?y?y?z?{?{ ?| ?b?c?U?ſ?ǿ??ʿ vyquvjwzzxW RS XXxII0LL2OO4WV6AA:    ` ?????????0F $&""( ` ????? T $&FF6   !"#$%&'()*+,-./0  !$'*- 0369<? BEHKNQTW????????Ŀ??ǿ??ʿ??  ?߀????""(%$+($.+*?--40/?20?55=86@;9?<<F? /~157/~15702023838446969::;_V   ?|  L4 J    !K !|!""n"  !U !!""}"!  !_!"+""!!i!"= ""!. !r!!"Q"#  4  q , 4 % .L " : &$ h    Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain DejaVu LGC Serif CondensedDejaVu LGC Serif CondensedCondensedCondensedDejaVu Serif CondensedDejaVu Serif CondensedDejaVu LGC Serif CondensedDejaVu LGC Serif CondensedVersion 2.10Version 2.10DejaVuLGCSerifCondensedDejaVuLGCSerifCondensedDejaVu fonts teamDejaVu fonts teamhttp://dejavu.sourceforge.nethttp://dejavu.sourceforge.netFonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. http://dejavu.sourceforge.net/wiki/index.php/Licensehttp://dejavu.sourceforge.net/wiki/index.php/LicenseDejaVu SerifDejaVu SerifCondensedCondensedAll Typographic FeaturesFonctions typographiquesAlle typografischen MglichkeitenFunzioni TipograficheAlle typografische kenmerkenLigaturesLigaturesLigaturenLegatureLigaturenFractionsFractionsBreukenAll Type FeaturesToutes fonctions typographiquesAlle AuszeichnungsartenTutte le FunzioniAlle typekenmerkenCommon LigaturesLigatures UsuellesNormale LigaturenLegature pi ComuniGemeenschappelijke LigaturenRare LigaturesLigatures RaresSeltene LigaturenLegature RareZeldzame ligaturenDiagonal FractionsFractions en DiagonaleDiagonaler BruchFrazioni DiagonaliDiagonale breukenZ$  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$ sfthyphenAmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandicLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongsuni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191uni0193uni0194uni0195uni0196uni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEUhornuhornuni01B1uni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BBuni01BCuni01BDuni01BEuni01C0uni01C1uni01C2uni01C3uni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DEuni01DFuni01E0uni01E1uni01E2uni01E3uni01E4uni01E5Gcarongcaronuni01E8uni01E9uni01EAuni01EBuni01ECuni01EDuni01EEuni01EFuni01F0uni01F1uni01F2uni01F3uni01F4uni01F5uni01F6uni01F8uni01F9 Aringacute aringacuteAEacuteaeacute Oslashacute oslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217 Scommaaccent scommaaccentuni021Auni021Buni021Euni021Funi0221uni0224uni0225uni0226uni0227uni0228uni0229uni022Auni022Buni022Cuni022Duni022Euni022Funi0230uni0231uni0232uni0233uni0234uni0235uni0236dotlessjuni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240uni0241uni0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni0259uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269uni026Auni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02AEuni02AFuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02BB afii57929 afii64937uni02BEuni02BFuni02C0uni02C1uni02C8uni02C9uni02CCuni02D0uni02D1uni02D2uni02D3uni02D6uni02DEuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9uni02EE gravecomb acutecombuni0302 tildecombuni0304uni0305uni0306uni0307uni0308 hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322 dotbelowcombuni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0358uni0361uni0374uni0375uni037Auni037Etonos dieresistonos Alphatonos anoteleia EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni03D0theta1Upsilon1uni03D3uni03D4phi1omega1uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FAuni03FBuni03FCuni03FDuni03FEuni03FFuni0400 afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061uni040D afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097uni0450 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109uni045D afii10110 afii10193 afii10146 afii10194 afii10147 afii10195uni048Cuni048D afii10050 afii10098uni0492uni0493uni0494uni0495uni0498uni0499uni049Auni049Buni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04BAuni04BBuni04C0uni04C1uni04C2uni04C3uni04C4uni04C7uni04C8uni04CBuni04CCuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8 afii10846uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni1D02uni1D08uni1D09uni1D14uni1D16uni1D17uni1D1Duni1D1Euni1D1Funi1D43uni1D44uni1D45uni1D46uni1D47uni1D48uni1D49uni1D4Auni1D4Buni1D4Cuni1D4Duni1D4Euni1D4Funi1D50uni1D51uni1D52uni1D53uni1D54uni1D55uni1D56uni1D57uni1D58uni1D59uni1D5Auni1D5Buni1D77uni1D7Buni1D85uni1D9Buni1D9Cuni1D9Duni1D9Euni1D9Funi1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5uni1DA6uni1DA7uni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1uni1DB2uni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1E00uni1E01uni1E02uni1E03uni1E04uni1E05uni1E06uni1E07uni1E08uni1E09uni1E0Auni1E0Buni1E0Cuni1E0Duni1E0Euni1E0Funi1E10uni1E11uni1E12uni1E13uni1E14uni1E15uni1E16uni1E17uni1E18uni1E19uni1E1Auni1E1Buni1E1Euni1E1Funi1E20uni1E21uni1E22uni1E23uni1E24uni1E25uni1E26uni1E27uni1E28uni1E29uni1E2Auni1E2Buni1E2Cuni1E2Duni1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Auni1E3Buni1E3Cuni1E3Duni1E3Euni1E3Funi1E40uni1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Auni1E4Buni1E50uni1E51uni1E52uni1E53uni1E54uni1E55uni1E56uni1E57uni1E58uni1E59uni1E5Auni1E5Buni1E5Cuni1E5Duni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E68uni1E69uni1E6Auni1E6Buni1E6Cuni1E6Duni1E6Euni1E6Funi1E70uni1E71uni1E72uni1E73uni1E74uni1E75uni1E76uni1E77uni1E78uni1E79uni1E7Auni1E7Buni1E7Cuni1E7Duni1E7Euni1E7FWgravewgraveWacutewacute Wdieresis wdieresisuni1E86uni1E87uni1E88uni1E89uni1E8Auni1E8Buni1E8Cuni1E8Duni1E8Euni1E8Funi1E90uni1E91uni1E92uni1E93uni1E94uni1E95uni1E96uni1E97uni1E98uni1E99uni1E9Auni1E9Buni1EA0uni1EA1uni1EA2uni1EA3uni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED8uni1ED9uni1EE4uni1EE5uni1EE6uni1EE7Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni200B afii61664afii301afii299afii300uni2010uni2011 figuredash afii00208 underscoredbl quotereverseduni201Funi2023onedotenleadertwodotenleaderuni2031 exclamdbluni203Euni2047uni2048uni2049uni2070uni2074uni2075uni2076uni2077uni2078uni2079uni207Funi2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089uni20A6Eurouni20AFuni20B4uni20B5uni210E afii61352uni2126uni212Auni212Bonethird twothirdsuni2155uni2156uni2157uni2158uni2159uni215A oneeighth threeeighths fiveeighths seveneighthsuni215F arrowleftarrowup arrowright arrowdowngradient proportional orthogonalangle logicaland logicalor intersectionunionuni222Cuni222Duni2242uni2243 equivalencehouse revlogicalnotuni2311uni2318uni2319 integraltp integralbtuni2325uni2328uni237Duni23AEuni23CFuni2423upblockuni2581uni2582uni2583dnblockuni2585uni2586uni2587blockuni2589uni258Auni258Blfblockuni258Duni258Euni258Frtblockltshadeshadedkshadeuni2594uni2595uni2596uni2597uni2598uni2599uni259Auni259Buni259Cuni259Duni259Euni259F filledboxH22073uni25A2uni25A3uni25A4uni25A5uni25A6uni25A7uni25A8uni25A9H18543H18551 filledrectuni25ADuni25AEuni25AFuni25B0uni25B1triagupuni25B3uni25B4uni25B5uni25B6uni25B7uni25B8uni25B9triagrtuni25BBtriagdnuni25BDuni25BEuni25BFuni25C0uni25C1uni25C2uni25C3triaglfuni25C5uni25C6uni25C7uni25C8uni25C9circleuni25CCuni25CDuni25CEH18533uni25D0uni25D1uni25D2uni25D3uni25D4uni25D5uni25D6uni25D7 invbullet invcircleuni25DAuni25DBuni25DCuni25DDuni25DEuni25DFuni25E0uni25E1uni25E2uni25E3uni25E4uni25E5 openbulletuni25E7uni25E8uni25E9uni25EAuni25EBuni25ECuni25EDuni25EEuni25EFuni25F0uni25F1uni25F2uni25F3uni25F4uni25F5uni25F6uni25F7uni25F8uni25F9uni25FAuni25FBuni25FCuni25FDuni25FEuni25FFuni2600uni2638uni2639 smileface invsmilefacesununi263Ffemaleuni2641maleuni2643uni2644uni2645uni2646uni2647spadeuni2661uni2662clubuni2664heartdiamonduni2667uni2669 musicalnotemusicalnotedbluni266Cuni266Duni266Euni266Funi27E0uni29EBuni2A0Cuni2A0Duni2A0Euni2B12uni2B13 afii10064cyrBrevecyrbreveuniFB00uniFB03uniFB04uniFB05uniFB06uniFFFD dlLtcaronDieresisAcuteTildeGrave CircumflexCaron uni0311.caseBreve Dotaccent Hungarumlaut Doubleacute@$d@$ 'd']}  22GG}  2d2dd%x %K.%x @@%0% @@   @I o} @ :]%]@%@0d0 ddl~}~2}|{|{zyx wv wvuv utltsrqp qp p@o}nm>nkm>lk llk k@jddjihihg]hhgf%g]g@f%eddeddcba`_.`_.^]\K[}ZYDXWVUSdRQ2POP}ONA@BL JdI"IH2GGFE EDCDkCBCBA BA@ A @ @@S?>->M=<=K<; <<@; :9:]98987 654543432 321 2 2@1 0/0D/.//. ..- d-,+,K+"++@* *d)(0)A(-(0'-'&:% %]$#$S#"##@"! !]     @#$0S-0 k@-B d-    @    @8k d } d2}-2- Sd+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++I6       !! #" >> ?? @@ CA ^^ __ `` aa bbcc gdkh qm srutvv zx {{} ok {r    Ȁ    --                     #($+* D/ EE F #micropolis-activity/res/dejavu-lgc/DejaVuLGCSans-Bold.ttf0000664000076400007640000150071410724145723023603 0ustar simcitysimcityPGDEFd dN\GPOS1f3GSUB>++6 OS/2dJ?Vcmap@$2cvt >-EXRfeatG@fpgm[kGgaspH glyfnnJYHlhead96hhea H$hmtx|ޚpl4kerne6O$!0locapT4maxpo  morxu0name4}@postfKprep|aw@prop:5;~ @ijjkpqqruvvwyzz{}~    '((),-.//0125667@ACD u v         - DFLT,arab6cyrl@grekNhebr\lao flatntkernmarkmkmk &8/,vVz"8T,:6 " 4 > H R 8 |  B | *D^xhvr$Jp,VhvjZ`2P79k:;Y<&:(&&&&7a89u:<<Y\<$a&a*,.0268<9:<a<<DrD r 9:<68: /6&&& &"&&KK &DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~      & , 2 8 > D J P V \ b h n t z     " ( . 4 : @ F L R X ^ d  Wzzq|of"f>f{d{Z{{d^/_/dd/{{{{{U{Z{{{{{{T{L'{{{{^{oj{dm]{mzzdyYomZ{~z{T{{{Zd_{ >{z_/ZU{{{{{d{{ZZ{{{={{{F{_{{{{{{dd5/^{6{>cdd/{/{/{{{{{G{{19{99{U{U{'{{Z{Z{Z{c{{A{{{{{{{T{T{T{T{{Z{y{{_/{j{ZZZ`{7{!ddv{{={{P{{{{{{{{{{({{({z{(z{L{`V{{{_/L{={Yf$P {{E{U{{K{{{{[{D{{{{{{`{{[{{E{{{{G3{G{{dWW{D{E{'{{6{5d|y|"{WdqdT{{W{({{5{_{dJ$= D]$>?ABCDF  GHBCIHJKLLNOPORRQTURX]T__Zff[ij\mp^txb{{ghijk m mt;KMSYZ^_abddllz #''$**%44&OO'RR(VV)*+,-234 t t5 6 G I " "K , ,L !#$ (  23 "(.4:@FLRX^djpv|{{{{{{{{{{{{{{{{{{pprpr{pr{{{{r{{{{{{{{{{{{{{{{{{{{{{{^8  &,28>DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz "(.4:@FL  |WzzRqof|f>fR^_Rd/RR^ZRT'R^jqRd_R >zR_RR^RR=F_RRRRRR5^6>c^RR//R/RRRG1RUUU^R^R6ZZZRcRRR{R6RRTRRRRRRRZy_RTRZZRZ`7R!Rdd=6"|WqTW5_Rd$= D]$>@ABCZZDvvEFGH J mQ??'' " " , ,  !" &,28>DJP ^ *V\bhntz "(.4:@FLhhf>fff>=>>*   #  -. &,28>DJPV\bhntz{{{{{{{{{{{{{{{{{{{{{{{{{{{{ DFLT,arabFNV^fnv~$xTP6lJ<<<&8LM**__ Q$=IIKKLMOO      ""$$&&((**,,..0022446688:;==??AAHHRRTTVV**__&   dpz "(.4:@FLzvqj().,,-,1//0/ r,/  QD~(:FPZfr C"6 BA"$;V0(/FXR")567DF2 ( IO IL I WIV O LI WAZD&.6>FNV^fnv~>>>>>~>~> ">>&.6>>>> ">>>\[]YZ_^/5<BJP  D   " ,-O " , -DO \[]YZ_^/5<BJP LM*_  33f P PfEd m`,~NSX]bu~#.[jx{EMWY[]} ' ^ q !!! !!!!!!"!$!'!+!.!2!5!@!I!K!"="""""""### ###!#%#*#}##$#$i&&'' '''K'M'R'V'^'''''())*****+,l,w_ QW\`tz&0]w{ HPY[]_ 0 p t !!! ! !!!!! !$!&!*!.!2!4!;!E!K!S!"A""""""###### #%#(#}##$"$`%&''' ')'M'O'V'X'a''''())** *}**+,`,t_xc# {wvoda_][ZRNLIHD>853R}vbkb[To    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}byqzf3f=ffTbfTfmf3bq%fHZfm99Xm=fuff9{{X3fLfLJ#DDf?;Pw /X#/553X sf+j-j!f#^`3B3\fy```{j\{`bXP1L`%!JJ7{'}3Xy9bs04 <, %Id@QX Y!-,%Id@QX Y!-,  P y PXY%%# P y PXY%-,KPX (EDY!-,%E`D-,KSX%%EDY!!-,ED-,%%I%%I` ch #:e:-ff&&/10!%!!fsr) @ <2991/0!!!!h33h^h@1<20###h++)K@1     91/<2<<22<<220!3!!!!#!#!5!!5!!!`aaE````HFR`PF#*1s@? %$ + ,#,, (/($ +/ 2<<991/99999990#.''.546?3.'>54&}osy!dede GUNWWP-.);?7* "*/(BE5;CBBDCB '3c@5  % ."( 41+  1 +%49912<0KSXY""32654&'2#"&546#3!2#"&546"32654&3GNMHHLMGֺ%պպHNNHHMNh{rs{{sr{ؽ۽ ٽڽ٨|rs}}sr|{&06@Y     ,-./+0()'%0' - -! '*$ 0$*$  *  199999991/99990KSX999Y"']@   ' 0   0%/ / %&? ? @K K K/K0ZZUZ Z U(\.\0X2_2dig`i i d&2, ' '* 9 5005@J I'I(WW\ ['ggl ]] >7!!'# 5467.54632.#"3267577oc%Xbi*([k^PMU1ABwCt2>FnkmFDےj5j:0.;6"W/wGs))@ 10#+ @ 29910!&547!י);: @   29910654'!)?C)9F@(      <2<29912290 %#'-73%JLLNLNMXX "@   <<1/<<0!!#!5!    m9@ 10!#hduo10!!ot91/0!!h}B/99103#mb/ #@  10&#"326! ! i||jj|{j@'&@mstm (@  1/20!%!!!T[nT HH5@)% K TX8Y9991/2990KSX9Y"@&**"""555BJFF]]!!>54&#">3 N!IFuZzz )~B~DiMLH+-zӱ(L@+  #)& )999190!"&'32654&+532654&#">3 sqlg~]^rl#!%'%%)67jcfi[]V^*) \3 C@ !  ! %    <291/<290KSXY" !!3#!!Z@jRJ=@"  " 190!!>3 !"&'32654&#"v,Y00{zaSl 12/FFuv+-# $7@ "% %$%190"32654&.#">32! !2eeeefeev_PB[uEgჃ-+11ir E@%91/0KSXY"]@ &5F]!!!e'1} #/G@( '-0 $*& '&!$0991990"32654&%.54$! ! $54632654&#"lttlkrr|כc\ZbbZ\cvnnuunou)ž)*ސUY``YY_`j$7@  %%" $%19073267#"54! !"&2654&#"\RDZ9$@ieffeeff!++22 "vYN`@<21/0!!!!ii`}}N` %@  <210!#!!idiu}=@29190 5<'@ <210!!!!=@<91905511J!H@'    "<299991/9990!546?>54&#">32!!Bj@95`VQfy]N^@D*i1Rb:4\.FOCB:*(ǿbY9>K-o Ml@: 40LM3 30 07$CN34L **)(I(*)4=N<991299999032654&#"#"&5463253>54&'&$#"3267#"$'&5476$32!#?iZYjkZXiYثY|:;_tZked~Yk}٘~~On{KM'{zyZGOPGKɝdIz=;bɵdbg^Pag}}IJ}|b~ ' @@     %    Բ]91/<90KSXY"@ / V f  t   %* IFGH XYVWhifg` t{zu{t      /]]!!!!!F_}))}+%R P@%    !299991/90@ ""/"P"]2654&+2654&+)! [^^[tutuH|B7fPNMQsbcaay$ռmf\;@    - +21990/_]%# !2.#"3267\j}Lu}jksskR78ef87IDDI9.@  -. 99991/0P]32654&#! )=TMwiffixjq#ateeta 0@   21/0 P p ]!!!!!!rg +@ 21/0 P p ]!!!!!rgfK@%    1 3/-+19990_]%# !2.#"3267#!ʥLy}|@   221/<<0@P ` p ]!!!!!!89+y=,KTKT[X@8Y1/0@P]!!+f= A@   KTKT[X@8Y991990 @ P ]!!#3265N3IO@UZfi ]]!!!!mR+ff 2@  -7-+10@ /?]"3254 ! f°±hhgddjk 1@   - 299991/0]! !#!32654&#1pzzp_mddlffb@   - 7-+999190@,  '/V S f ` w w p  Y Y YXj i x ]]# ! !"3254fgk-¾lkh\@2%       29991/<9990KSX9Y"]@66EEVVPee`]2654&+!! !.#yiiyL'O}@f7q^?ZgfX֔-XspR-'@*% %( "(999919990@Tp)9999 JJJ X ]\^^ Z!joooh o n!t t t || |!  !  !(]].#"!"$'32654&/.54$!2{hYuӎ⏏ |~[ {78LP3 pq[QeiH"ӆsUst/ LJDMm)f]ˢŸUO..^ 8@ B@ 221/0O`]%2654&#">32#"&'!!syyss{{{Ju uJf稠b]]bX5{7@ B ;210_].#"3267# !25IOT@TWV/X=202177\8@ @B ;221/0O`]!!5#"322654&#"hJu tsyysryyXc\II]ɨX {C@!    D ;9190/?]!3267# ! 4&#" q}K"=w`h3f~~CD015:“f}un'Q@    E K TKT[X @8Y<<991/22990@]#"!!!#35463L<27DN`N\Fy(K@& #& @ B;)221/990O*`*]%#"54325!!"&'3265"32654&Ju uJhic^[o|xsp||b\CA\c !655@   G 21/<9990`]!54&'.#"!!>32 H.pfQnVon#'b])@ <21/0@ P ` p ]!!!!ff`F =@    <2991990@ P`p]!+53265!!fͱ>fLf`\y @   291/<90@`;IIZ]X_ogvv{:DGJV]g`ewpv|]]!! !!fNNK- 1/0@ P`p]!!f{%i@)   #  H H &KTX@8Y<991/<<<29990@'0'P'p'''']>32!>54&#"!4&#"!!>32DpFNfo@RgphBgthmVH wkHk`_`p{5@   G 21/<9990`]!54&'.#"!!>32 H.pfQnVon#'`b]X'{ -@  BLB;107?G]"32654& ! w}}wu||u!EG{88V^{;@B @ 2210O`]%!!>32#"&"32654&fJu us{{ssyy b]]7\Vy ;@  @B;2210O`]"32654&#"325!!ryyrsyyyJu uJhw+c\IG\c{7@     KTX8Y21/990.#"!!>32/]/fE}*(/`nejb{'@@  6  6% %( SRP"M(9999190KSX99Y" ]@^ #  ,. . . . . ) 9; ; ; : : K J J J H w w  %  7 ?)_) ]].#"!"&'32654&/.54632s_fcKa?o}ktijIm?c=0035+. ###44:90/ m@    TKTKT[KT[KT[X@8Y<<991/<2990@??PPP`` ]]!!;!"&5#33q>\Ա%N7>`;@  G 291/29990`]!3265!!5#"&hG.pfQmp[.w#&)b]`@'%Դ]91/290KSXY"@| 0@Vf  &$+)64990FFII`x$]]! !!fgGw`H` @J 4  4 4 4   %     K TK T[K T[X@8Y91/<2290KSXY"@ 550 G @ @ _ l        &$+)*+ $ % /554;::78 ?GIFHGH YVV[ T Y _f`b```d ` upspppt p      []]!!!! !H\+\yy` ` y@F    %    K TKT[KT[KT[X @8Y91/<290KSXY"@  / 3< CL R\ bl sz         2     $++$ 4;;4 0 DKKD o       :]] !! ! !l{{l=#LbF`6@C %    K TKT[KT[X@8Y9129990KSX9Y"@ @Pet $$$5586699EEJJEEge    9]]! !+5326?f-f)Gp[S `6:K\F` @% Դ]2991/0KSXY"@DYVifyv &)/ 9? J_ ]]!!!5!uNN`f$^@1 %   ! % $  %<<29999999199999990#"&=4&+5326=46;#"3l==lEUZnoYUmutWW10#$`@2%   #%# %<2<9999999199999990326=467.=4&+532;#"+FUZooZUFl==lmWW͖tuR#@  1990#"'&'&'&#"5>32326j`k^Xbk`k^VRPE:=MSPE:=K @ <2991/0!!!33h=^qd#W@.    !$   B$<<222991<9990.+>7+#$4%3NMMNJAY9S: GZ,lm*902i2/  (.##}@@!   <<1/222990.#"!!!!3#5356!2FMvqu\'&} FJ=#/@ ! ! $A !* @&00   '}|~-} |022999999122999990'7.5467'7>327'#"&72654&#"ϙљ0l=6l9ϘϚ.j?:l[\[~ Ϛ1k??l.͚Ϛ7n6?i/ϙ\\\]~y@B  %     nm n m<2<2999991/2<<<290KSXY"]@, $+6:FI   0@ ]]!!!5!5'!5!! !!!!N9:1k$! %j1`BV3VB@ <210##  =3?k@8@1:4 %+1@ =!+%74:!=\.!\=[.7[(@9999991999990.#"#"&'532654'&'.5467.54632>54&uc9KL ҟquMKUfs9AN$ˠoqKATDC{AF''1/CO Y}u0)qI)+2(FJWh33oKL2CbBO4Cj;;1\@1<20K TK T[KT[KT[X@878YK TX@878Y3#%3#11IH@(  2&>f,X c8e XhDJ21/990.#"3267#"&54632'"3267>54&'.'2#"$'&5476$+9o9q~r@s.A>EyWWWWWVy{WWWWWXymmllmmmmllmmf%#rs~$#WWWzyWVVUWWyzWXVnmmmmnnmmmmnu)@$' # A # @'*# s#s*999991999990@??;;;? ?;;;???;]!!"326=%#5#"&546;54&#"5>32-ӅhB:Yr 7^YUWO\K=4>3:rWT@LHt8;##j' 5  @  y y<2991<2990 5 5%$'qsq@ 10!#!o10!!ot 4Lb@8-*+'0!5 2+A'*,$0-+$!1g3f$cX;eX3cGM299991/29990"3267>54&'.#32654&'2#'.+#2#"$'&5476$yWWWWWVy{WWWWWXϲ##NOM+i`)Gok&: 1mmllmmmmllmm3WWWzyWVVUWWyzWXV5442wyVpP:NAD7nmmmmnnmmmmnX;E10K TKT[X@878YKTX@878Y!!vdL @  XYX10"32654&'2#"&546HdcIHdeGBz0/11-0|D\dHHbcGHd3/0xDCy-03 .@   l l <2<21/<<0!!#!5!!!  bbm]@%   "@99919990KSX9Y"!!5>54&#"5>32r_9=4I;>TWKGeD 5P(2>-/oHyVZ(W@ #  ""#@#)& )99919990#"&'532654&+532654&#"5>32P\fQDB<_hkrJTbZNP4{FAWZ`nQ$%@;@=/3--piE`mf710K TKT[X@878Y]!#fT` B@!  !   !2912<990""]!3265!3267#"&'#"&'idfgdh!'!5]-Yq#/YJhT utqqtG8 KSOO/0;d &@ ^^9120!###.54$\fN۲910!!h}o5@   991/0K TX@878Y!#"&/32654&'Z:7{0f42S!:A+->j/_[ .(R<{ 7  @   129035733!9 41Zuu 9A  @  uu 99102#"&546!!"32654&B7T[[TS[[޾ܾM~tt||tt~' 5  @ yy <<991<2990 5-5-%!$'d'[zd'y{d'y'td{h'[zd'yu!M@*   "  "<2999919990!3267#"$546?>5%!!iAm@84`VQew\N^@D*ii1Q~d:3\/FPDB*(ǾcX:=L-d 'k&$ u 'k&$ u 'k&$ u <1 's&$ {&+@0?&]1 'k&$ u +@p@O / ]1 'm!{@S!! ! !%! !  UU "9999999991/<9990KSXY"K TX"""@878Y@/!/!:!o! !! # ///  /// "+ #EKUZ` ` ` ooo``ooo`fi `#tuyz{t    D]] !!!.54632%32654&#"!}^_}vtwM66MN56MJH"K+uu/L{6MM66MMR@7%     /<291/<90KSXY"K TK T[X@878Y@&W ] !!!!!!!!!{y}sfb^fo\&&zsk&( uk&( uk&( uk&( u @@@]1=k&, du@@]1k&, du@@]1k&, |u  Ic:1Ak&, |u +KQX @88Y1!L @   -. <291/<20@X!P!`!////////OOOOOOOO________(]]3#32654&#! )#3PULxhgghyk#ateetamm&1 5uffk&2 Nuffk&2 Nuffk&2 Nuffm&2 gu3"+@@"O3]1ffk&2 fu$+@pP_ / ]1) /@   <291<290  ' 7 NNNN3NPPN- +@> +,   )*&& &,+,* # )-#7-+,99999999199999990@p- -*'&!/-976!9)?-GYVT!Y(Y)jege!j%j($'))68)KFE I)Z^SVV T!V"[(j ejlaf c!k(x ]]3254&/.#".5!27!"&''\4SM3RJJgfqMLhfqs>;Du1:9@q.dkKMscdOOqk&8 'uk&8 'uk&8 @u<1k&8 @u +@p`o0? ]1k&< u @ p o _  ]1 @  - 2299991/0K TK T[KT[KT[KT[X@878Y@,0000PPPP]]!!3 !32654&#=1pzzp]mcenh0j@4.(" !++/"!(%  a%.(a_ . 199991/990@ /2O2p22]4$! #"&'532654&/.5467.#"! 1]EtkAJ8s6HX7bFXT`[efZG NJ%94%@uH9/D7'1Zt2UYnmXf&DCXf&DvXf&DX9&D ?0+1X1&DjX&D@ &2O&O2?&?2]1X{>@B8>66'&# 6-*>;0*? - 6 & 7 3;?<9999912<<<9990@N>>?@MMO@^^_@nno@@@2=0>B=@>R=P>b=`>=>=>=>=>]]4&#""326=>32>3 !3267#"$'#"&54$!354&#"w`gpq[Qe^waGMz =q}~Heߋ"ӆsUf}unLJDMm)JMOMOf~~CD01kdkdŨŸUO..Xo5{&FzX f&HCX f&HvX f&HX 1&Hj @pp ]1f&Cw @p@]1f&vw@p]1f&^  Ic:1#1&j^ +KQX @88Y1X'(@Y&'('%$%(('"#" ! "! 5((5(%('&%"! ## #)'& !#(%" BB;)999919990KSX92Y"KTKT[X)@))878Y@6f!/*76"?*O*oooooooooo]].#"32654&! 4!2''%'!%7l4uru| uj-.N$%3`ox#y-\8 watr`9&QX'f&RCX'f&RvX'f&R <1X'9&R 1"+1X'1&Rj +1V 0@  z{z <<10!!!!!!33XˁN) +@> )+ *& &&++, #* #)B#LB;,999999991/9999990@@:5 ;75!8)?-IF KGD!H)[VT!U(ikfe!e(5:)EJ)U^(i em( ]].#"32654&'.5!27!"&''XK/w}HO0u|;CDG"jKmFElMpD)A+CN{8,,eP~--^f&XC@@]1f&Xvf&X  Ic:11&Xj +1Ff&\vV^;@B @ 2210O`]%!!>32#"&"32654&fJu us{{ssyyb]]7F1&\j 'O'q;$ +@ p/ ]1@]0X'qD@O]1 'z'4$ +@ p]1@o]0X='D@O]1 o''$Xo{'Df\k&& fuXuf&Fvf\k' u&XVf'Ff\k' u&X51'Ff\k&& fuXLf&F9k&'  u\&G  @ O?]1!L\$K%@"      @"B;%<<1/<20O&]!5!5!3#!5#"322654&#"FhJu tsyysryyrr+c\II]ɨO'q;(+@ O@/ ]1@]0X 'qH+@ O@/ ]1k' u(X F'H@O]1k' u(X 1'Ho'(Xo {'Hk&( u  Ic:1X f&Hfk' u*\Ff'Jfk&* 1u\FF&Jfk' u*\F1'Jf6'_*\F'JJk' Yu+  Ic:1k' fuK&+1K QX88Y@ ]<@      2222221/<<22220!!5!3#!!!#53!5H88ջyX¼<@   G  2221/<229990!54&'.#"!#535!!!>32 H.pfkQnVon#'kkb] m' |u,% $+19'_  +1AO'q|;,+1@]0$'q_+1,k' |u,+1F'_+1o&,o&L=k&, u+1` 1/0@ P`p]!!f`f6'-,@1F'ML@1fk' |u-  Ic:1Ff'_  Ic:1Sq'f<.Sy'<Ny` @   291/<290@`;IIZ]X_ogvv{:DGJV]g`ewpv|]]!! !!fNNK`e-l' v/@ pP`@0]1l' vO#@ p`@]1K QX@8Y@]0S'</ @]0S/'/<O' o/' OK QX@8Y@]1'y/'yO `@2 %    <<.9991/90KSXY"!7!!'%s۔#` j ~@-   %    T <2.991/90KSXY" ]@ut@ P ` ` tp p  ]]!7!'7ho}o XVl' +v1m&v}QS')<1S{'<Qk&1 quf&Qi!'Q~FB@%  11221/2990KSX@ 66Y!!#!53265!Z`[nlfL<?yv\<F{$0@!& G %21/0#!532654'&'&'&#"!!67632nlfL$$.p@@fQ[[nedjyv\77#WV`b./wwffO'qf;2$+@pO@/ ]1@]0X''qR+@ O@/ ]1ffk' `u2#+@ pO@]1X'L'R#+@@O]1ffk' Nu2X'f'RfP@"     -+ 299991/220@ !!?!O!_!]# !3!!!!!!"# !2i iZhsf / F& 0ihX^{'3t@2"  .(%4"1 1 +B;499912<9990@/5?5O5O5_5o5o55F"]]4&#"!3267#"&'# !2>3 %"32654&w`hA q}~~HRՂG"QRLJBcw}}wu||f}unwf~~CD01QWTT88RVWQ:l' v5m&v}US'.<5S{'/<Uk&5 uf&UU-l' v6jbm&v}V-k' u6jbf&ZVo-&6zjob{&Vzb-k&6 ujbf&Vb oj'z7o&zW jq&7 { +@ ]1&W 7 j.@   8 8 <<1/2<20!!3#!#53! `:@  T<<2<<1/<<<20!!3#;!"'&=#535#33q\XYNXYԍ>m' ?u8. $+@ / ]19'XO'q@;8+@ p]1@]0'qX+@ O@/ ]1k' @u8+@ p]1F'Xr&8DW @pp]1 &X@&``&PP&??&]1k' 'u8f'X @??]0_&84o`&X=r' h|:<1Hf'Z<1r' |< <1Ff'\k&< u +1\ql' v=\Fm&v}]\qo' y=\F&P]\qk&= u\Ff&]T'#@   E<1/0)#35463!#"?L`NC^'67632#"'&'!#535!!!276'&"JZZuυuZZJfH{=<<==>>b.//.brrTT@TTUTTt 72654'&+27654'&+)"#547676763! v[^//[t;:::uH|I-0!K3AB733PNM()s11ca01y$"2!MA? ^^mML^!67632#"'&'!!!276'&"JZZuυuZZJa{=<<==>>b.//.bTT@TTUTTQ 27654'&+!'3 py6::5z=-1][0-ujju4 67632#"'&'!'276'&"FJZZuυuZZJ{=<<==>>b.//.bTT@TTUTTf\/@-  - <10>3 !"&'3254#"fj}uL}jkssk78__875IDDIfd%%# '&76!2676!3#".#"3267\j}u0/"b3NksskR78efYCCIDDIX%%&'&#"32767# '&76%676;#"5IJIOTSSTTLK@TWVWѫ,Klͱ>fL2WXXW1*Rw\!Lt .327654&#%"#547676763! )}|I-0!K3ATxi3333ixjquu"2!MA? 10tfet10 3#" '&5476!3!!&z5::6]塒|s-0[]1-ujju#+\#!!!5#"'&7632276'&#"cJZZuυuZWs=<<=sr<==<5#b.//,TT@TTTTTTYV(c-!254'&'&76! ! '676'&#"z3@5*BBAspBBFHc.vFIB!%p ͤ2 OF:8W:XXYZJM  !!!!!gr+#V##hfI@ -7-+91@  90@  / ? ]!! !">32#"'&'ghD~y}|}z 9aa9=Aji87GF~arMMr(?@# )) #)* --&)190.54$!2.#";#"3267# $546!#lr^]~glqs%" )*^V][ifcj76%%ޕf7!!!!!#3276rgND銊#CCV#"!!#!532765#354763L2ffLffDN\WXDNWXfd+%# '&!2676!3#"&'&#"32767#!ʥZU"e3N=}|{|}|<34)XoFFei [CCG##"RS& ! '&746?!76'&'&/,9R^^^^R9^DC ^2\>RQQR>\))! ));4'&'&'&#"!!67632?27654'&/#'&5$$.p@@fQ[[ned ).vRK9(T^*4?)-;pn77#WVb./wwީ 4aXksTH)%CSlyxl ;# '&==>xD+v #CCV{Aff  ! '&76"!&'&32767fhhgaOOa9aa9ddjkjjbrMMrl'2_'RfN $"327&4'&+! '&76!2! f°aa=>x@gn6ۂ'CCjkVXF{ #"327&4&+! '&76!2!2w>??>wu>>ILfIޣ"xcll{UVVUUUL\ (vwt'32764&#%"#547676763! !#!p==zpI-0!K3A_76l"2!MA? ~~V^)67632#"'&'!4763!#""276'JZZuυuZZJfXLa=>>==<<b.//.bXfXUTTUTT@TF)!!3 ;#"'&/&'&'327654&#=Kmz&*[pϛ_WNX)1gp==zp~> MJEe ]76cen5->32!2$7#"&5476?67654$!"{h,-uғ-|~.-hg{78LP32!2767#"&5476?>54&#"js_f21%&a?ovw}kqptij%$m?c=005+ ##4:90 -D|(323#;!"'&5'$%53&'&+32qlZt7Lff &f+^h@vcDXW@.:KF!!;+532767&'&5#33q\glͱ>f&#MY%Nrv.+w MY>!!!#"!5476301``N&&i1RQ!!;!"'&5#354763!#"3q\XYfWLN%NXYNfX fj!!!;# '&`=>xx )*[pϛ_]H+/jG5BuKJJ\q!3!!!5#!!sg8A A\F`!3!!!57#5!7!uѵ|NuI`ݶ"%27654'&+5!!!"'&'RQST1R~VN55cf45^#N !pgts="J&&T"%2767# '&54767675!!#"NV~R1TSQR&&J=stޏgp! 54fc55LH`" !!!2767#"'&5476;5/V~VNFsstqlkjgRQSTN !qfst%)655cf54uVF`132767#"'&5476%767654'&+!!oNt\YU&X & >V&X & >U&X X { 'R"$ nXO&q; 'U"$ fXP&q<O'q:;X'qfU*# '&!2&'&#"327675#535#!3ʥy}|{|}|<34)X[FFei7G##kJmJ\Fey 6"32654&6=#"'&5476325!3#!"&'3275o|<fLCDz`wv\x '=' ']'\ ']Gfl' "v*\Ff"Jv |!32765!!'&5!!!u<=<=9OPPO =#V%!!6763254'&#"Fv]apVd` ?=aqx+1|2p|IHk' u1f"QCc 's' }Xs& \}k"Cv@,Xf"v-k"Cv@,N)f"v% 'l"$ &vXf&D 'b"$ lXF&Dl"( vX f&Hb"( lX F&Hl", v f#/b", lF#Uffl"2 svX'f&Rffb"2 elX'F&Rl"5 vwf&UWb"5 lF&UWl"8 svf&Xb"8 9lF&X-'}6jb{')V j'Q7'WR26767654'&#"5767654'&#"67632םlXBAU8@QGIKgPtRoz]GQRYϓ#W@]K]Y76U_;TJp^/10"JD(8hvguImwtw[)eOZ{16767654'&#"5767654'&#"567632e^O<:M48}N@BC]HhKcZgtv݁@IuIPהD7H=LH,,EM.E:]K'(';.).T`T_;Xa^ciI"k"+ Suk"K auV4'&'&'&#"!!67632!o !78GtoqwwvSI#.&:=\f;%2'4#"%276'&#"632"''67&'#"'&7632!pK*%es=<<=sr<==<Lj^3@BM[G$. -FXυtYZJhY3/TT@TTTTTT\8EWiJPH7qD#,/.bX}@"327654'&5! '&54767&'&5476%&327654'&>WXXWUUUUfST]]]]NSt;p6RR@aQQO;;:;;:no;:YcUU)*_^rqqrސ^_*V\PldE %8X1"Dv"(zXo {"HzffR"2 X'O&q;ffR"2 X'0&R ffl' fv2X'0'RffU"2 X'P&q<O'q;<F'q\f%2'4#"632#"''67&!K*%TLjW3GBM[G$.pfY3/\0DXhJPH7qpif{,5632#"''67&6'&'&'&#"!!676326'&#&LjQ2NJM[G$.v$$.p@@fQ[[nedoK*%\*BX\JPH7qw=B7#WV`b./ww<U5/d'%6'&#&!!632#"''67&'&5#3K*%KqSj[3C>L[G$& YU5/`4EWlJPH>Z Y>F` 1@    991990@ P ` p ]!+53265fͱ>fL`\\X @%276'&#" 276'&"367632#"'&'#!5#"'&7632s=<<=sr<==<?=<<==3 3>IYZuυuZYIJuυtYZJTT@TTTTTTTT@TTUEwnwE`-//-`c\/.bX\VX{ ?"3276'& "276'#!#"'&76325!367632#"'&r<===zpCk76l~X #-)#3! 27654'&+3#2654'&+|B7339t;:::u[^//[$A^^mML11ca01H;PNM()0P!!!3#! 5#53!32765Œ=<=<[b6=bbOPPO '&B33#3!!!#7!!#!9HTg99fSݾNVyXB  '+/!3267#"'#7&'&!2737&#"7#34' r?Wq}i_{4,K"`S\z7/m $h"@fxU3fCD01(:!. unK(C2f!3#!#3265#3NfL^wv\cfj $%2654&#"# !25!;# Vb_bm{xPNyTUz\Ff{ )%276'&#" &'5#"'&76325!;s=<<=sr<==<VJuυtYZJhLfTT@TTTTTT_Shc\/.b\  *27654'&+! !&'&+3#!5#y4554yL'HGO>?@f798^m?--gf,,cc֔__-@?Xsp))N{&'&#"3#!#53!67632//./CB fEYZ}(/ JJNJn23!!7!3#!#53#xx{pqaջu—F?`!3!3!+53276?!53#ffH]_p[*) ^3`JJJJK€X{ .27654'&#"!67632!#3267# '&{p98.-QeEEiHZZlmCCsUstttчf&&JD&'IHm)f./ef\\U('..wx\{8@ @B ;221/0O`]5!!5#"322654&#"hJu tsyysryyc\II]ɨ\{ %!!>32#"'&"3276'&hJuυtYZs=<<=sr<==<`c\/.7TTTTTT@TT^ ($276'&"67632#"'&'!4763!#"=<<==>>3 !"&'326&#"XUX/VWT@TOI=%12:02Xs5{0%32'&#"&'&#"63!+"#"'"''47&'&76!296SqIJIOTS3fEnP/XUV9K2WX{PrWD&I*\Ff )%276'&#" &'5#"'&7632!;s=<<=sr<==<VJuυtYZJhLfTT@TTTTTT_Shc\/.bX\\h +%276'&#"76763!#"!5#"'&7632s=<<=sr<==<^klfLJuυtY.?0TT@TTTTTTՊuv\c\/A1X {"76! !"'&'3267!%!&'&#"X"}vwq pAAh`;<3 際0D"!~~n:;?>X {G@  D ;91@  90/?]5!.#">3 ! %3267XE q}0Qpw`h+f~~CD01>f}uny{ 432767! '&'&'&#"6763 ?;#"'&5W ;`hAA]U("Nqwv}0&&i+`OA ?;:n,Q`Vv)?!"D087o[n{?n{1!"'&'5327654'&+5327654'&#"567632y~\]\ZG^UMtABC>v|u2987_;<[ZYWtt87\p$'(:<'%",*$#  HGa@?n'{?!"'&'5327654'&+5327654'&#"567632?;#"'&75y~\]\ZG^UMtABC>v|u2987_;v|u2987_cSSWtt87ly~'(:<'%",*$#dR]`囜*HGa@?pF`53!3#+53265$fllͱ>fL^wv\\Fh 5"3265#"'&54763!36763!#"#!"&'3265o|<0 # />q~M%>wu>${؜(UAmmAU;L2UU2Xa "#";!!!!!!"# !22oVVoEN_|  dKUV$"h .'"3276'53376#"'&'#"'&'&7! !  J-VWcKHHGgVV16aFFN9[jl`-SPvogD@ED~w\{V^`32765!!5#"'&'//./KJfEYZ}(1 XYn2332765!!5#"'&'//./KJfEYZ}(1 XXn23FE`32765!;!"'&=#"'&'//./KJfLflnEXZ}(1 XY\vyߢl23V{&'&#"!!67632//./NJfEYZ}(/ XVR n23F{&'&#";!"'&5!67632//./KJLflnhEYZ}(/ XY\vyLn23=`%!534763!#"nlh$&yv.1Y=`%34'&+5!23!8&$hln1.vyYj` "27654'&+!!2!&'&#['(('[Onn99s?223%+-Kv IH g`JKoHG!0/aGj` "#327654'&'32767!#!!OO['(('%K-+%k322?s99nnf HI Ga/0!GHoKJ`jFb{7.#"!"';!"'&=32654'&/.54632s_f12&%a?79&flnkpqtij$%m?c=005+ #b&.vyI4:90 Fd#"+532654763dLllͱ>fLffDRwv\WXF"535#354763!#"3#+53265 ϲffLglͱ>fLNWXCJrv\FP{!2;#"'&54'&+ffLf>llL{XW\vwDD|*"'#5$%74763!#"3"+&#"32763ffL7tZlq@h^+f&DWXDcvvK:.`!!4'&+!23#q\3YX>NXY%F!!!;!"'&5#fqLfll`>\vwL`+#!5#&'&'&=#53!!!!3276Q[Zm/>&fhfx#$.p@"xJb./!*wp[a3<#V.`$27654'&'!# 54767#5!L$2CCCC3%KYQB@I]$ELQskXWWXksTH;l:pA`#'&5!?27654'&/-OI;pnh ).vRK9(T;lyxl 4aXksTH`) !!`H` ) ! !!!ռ'`) !676;#"G_^p[)* ʻKJKG`!!!tw9`Yx(\F`!!;!"'&'!5!uO  li}N`~ .vtf\s`!3676#'7!5!254#"u |؂NV_#`+( f$0PYH`" !!!"'&'327654'&+8r^V~VNsstqlkjgRQSTN !qfst%)655cf54uH` -&'&76767&'&+5!!5#7#$!2,b5'jBTr^V}WN es}A U9J*4N !qfs %( #0J332765&'&#"67636!]V99cPONNLQQ҄frLG`Br+*#Ӆ^J3!&'&54762&'&#"3mfQQLNNOPc99V ^ׅ#+rB`GLrJ3!'"'&'327674'&#ffQQLNNOPc99V3^ׅ#*+rB`GLrJU3#%32767#'&54762&'&#"9cPONNLQQ҄QQLNNOPc:`Br+#Ӆaׅ#+rC_ + 654'&#"476!2! '&47632"'&>`_ _`_`ӹ'&65'&Ll&'6^^aaaa5''''56L&&`nQ{/%7654'&";#" $5467&'&54763 VTTb_7892u|v>CBAL~yl78tt`]Rd#$*,"%'<:('殭p?@aGH֜X-%# '&76!236763!#"3.#"32767'!5!\hopwglfLZZZY,%%e2rv\710YX `D$!!!3#+"'#5$%3"'"3276ff8sZlq 3@h^+f&ܐ0cvL9.Ly` !! !!yd`#fLOe^-`!!!j`\Vh)%#"'&7632536763!#"!"3276'&JuυuJhlfLr<==%276'&#"!!367632+'47!#!5#"'&76323276'&s=<<=sr<==<^h#k@  JuυtYZv'% /61TT@TTTTTTXLu78878c\/.9GHh-F.#"!"'&'!"'&5#3!!67632532654'&/.547!3s_f12&%a?Y_owt{XYfq*zckpqtij$#o?\=005+ (KP"(XY>‚)V94:90# %NF8$,!54763!#"+532767!"'&5#3!33QffLllͱ>f&#XY\NWXDRwv.+vXY>b`%Ns6@K!676!2&'&#"63 7!"''47&'&'!"'&5#3232'&#"!;&543q/XUVUIJIOTS!g"g ]G2$XY1>S\E»2WXcG 99^G%@.9XY>_9K%N'F:#"!3!67632#!532654'&'&'&#"!!!#354763L/cQ[[nednlfL$$.p@@ffDNb./wwjyv\77#WV``NWX#4.#"!"'&'!!6763232654'&/&'&s_o(2&%a?Y_owtzfFzcimqtij$#o?`2=000+ (KP"(P1V53:90Q* !!!!#!fN7!f-L`D. 333# #333# #.xyyy޼yxxyyy޼yxsPTQ PTQ. 7#!#!#!#!>)>)HJ )!54&+5!2!32765!!#"'&Lflnh$$.p@@fQ[[nedj܇\vynog77#WV'Xb./wwHFb 6%!;!"'&5!54&+5!2!32765!!5#"'&hLflnfLflnh$$.p@@fQ[[ned܇\vyV܇\vynog77#WV'xb./wwn?#=4'&'.#"#367632? .H))4:;F|@A>S01Ug7BCn?%#=4'&'.#"#476;#"67632? .H))FFkA49:G|@A>S01Ue}CBKL6BCS 3+5327653#nEEr(A~BCK\n&'&#"#3676322X00,:9P  d 12\sg>n327653#5#"'&'nX0/,rP G 12\!g>8n_327653;#"'&=#"'"'nY/0BjEG,8:P  G 12\!LBD}[= !#32764'&'3276?3#!3322:l0]j! (I%$FGR|(6')>Z*)s. 333# #.xyyy޼yxPTQ?33+53276?-=32#<8$%?s33221htTcAy8@+'6%@ vJyQ5/#&'&547632.#"31xAdUt4312d4r@$%78d5QyJv @%6'+@ "% % E "5-5Eʳ|Nf33|F|Nf# #ZfDyf6@ 91290K TKT[X@878Y3#'#Dzfyf6@ 91<90K TKT[X@878Y 373Dzx#+X;qmf!#f^f #yfx[#+;Aq-^#ykxm!#k]`!!*f|]`!*|& `L& `L!533> 5!## ‡; #5#53533^ݼlݼݼo#!5!>oPF i@  1<0K TKT[KT[X@878YK TX@878Y@]332673#"& cSSc FFJJFw;1*10K TX@878Y!!w1 C @ : 10K TKT[X@878Y32654&#"4632#"&}M67LM67Lvvvv7LM66MM6vvvVo@   991/0!33267#"&546ō2&;1'M(7^)s{6CI'1 \V5m\9@  @  999919999990K TKT[X@878Y@T              ( ]]'&'&#"#4632326=3#"&7/$&g]$I)=%$(g]$CT%>;+@9f%@0_O]]1<203#3#-fx2%7;#"'&7:&&i+`NBs87o[f '#7'373QRSȵSRȶWWVVIU '473733254Syׂ3SFZnS3#nD1&'&#"#"'&'5327654'&/&'&54632JDD=B 0>(==TUGKLPDHHJD"!F(>=@EF -,`d32  .-\d`: 373 #'##2/#&'&547632.#"31xAdUt4312d4r@$%78d5QyJv @%6'+@j@ 1/0!!5!Fvмtj'@??//21/]0!!5!3F4tj@ 21/0!!5!3Fhhtj'@pp  21/]0!!5!3F4tj@ 1/0%3!5tPp;"qqf3#3#@fx="o\T$'&'&#"#476323276=3#"'&7/$&43]$$%)=$43]$"!2/l;< " .m;; \fCefvwfT9X9qM 8ZF {;1;?1j "#5476?67674'&#"5>32Y7 ,&A$XWPg11  1%+&#t^Y.$'$ fwf\#\D'C 4f###r£׮fxxZ' ZF cXr@10!3X*!527#xyz#3$5yxzJf!#ff\BCeBv^#5353##33_+5C`n!5!#]+4+532654&'3#"&CI'1 \V5m2&;1'M(7^)s{6Wt"3"'&4763t7&&&'6vSTTSv&'l'&TSST53533귽h#5!##+ #53533##b5!+bF^ '#!5326=nlfLyv\Ff %!;!"'&5hLfln܇\vywMCV?Lj=bA@10!#DozVo\A#\D9A#5##Ǽvg@#"'#"'&'3274732767jy0@k=>j. NONG@FF0:mwBw?Z@ Z= Z!T?9ABRa(;@x5!;MOx5!M'2pnm^^ef'qqJqs!>19SA!5#=ng@67632632#&'"#&'"gy0Aj>=k. MPMG@FF0:m '7'771!'&'&546;5"+2654'&%>; + @9 )#zSR!. zRR: '88\fCkfvZ9#55#53pp{;'jlV #"=3;X3Vh:I#5!#!ƴtxx,2!5!5!5!>>2Z 3#3#@tx!#!*>\f+#7&#"#4654763273327653#"'& :a (56W%%Bi%56W&# J\ <2jAA h9j@A \+3#3#'&'&#"#465463232653#"&;Ҵ 8- (kW%J';'%'kW&FC#<2j'<9j\#  T( 7!#'73!'3awQwww(͌$#557'Aܛo#";#"&46;6LL6vvM67L Z& bo532+532654&#pvv6LL6짚L76M ;1_9k9P7#'&'&#"#67632327673#"'&],$V5Hqpo?x],$P;Iqpo?P# $0)JI# $,-JI\ $#&'& #&%6z z 3OG$%%$GN(h(5!'3#7hfww͌tf3AntVH%#AnHV #"=3;X3VhX5{X5{&FyfX5{&yfN`[f710K TKT[X@878Y]!#uf;'lj5Wf&09y+f' JtRf'"\f'$\zf&*Kf'/nf&3Zh/&Cj '$% '@ Բ]91/90@%KSXY"@/ IFXYVWhifg`zu]@/Vft ])!!')HNT(\q=+ff N@  -7-+1@  0@ /?]@ ]"3254 ! !!f°±hhghddjk=,q. '@ Բ]91/<90@%KSXY"@/ IFXYVWhifg`zu]@/Vft ]! !!ut}))w+901b ;  <<1@  /0@p P 0 ]!!!!!!29igg\qff23 b@     <9991@   /99990@  P p ]!! !!$a#A4l j7<ff'N@' %') -!%-+(ԴpP]<<<<Դp!P!]1/<2<20)]!67654'&'&'&7675!!.#aa"//"aa!0̓̒SO[W rr rq!';s\B@   ܶ _ o ]<<ܶ_o]1@   /22<<0!"!3!2765!#+S67R,6eP9ǗP^g\7b@ -7-+ 99//991@ /<2990@ !!/!?! ]  ] !!67654#"!!$fg3S&°­&S3d8#\6Fk&$ uk&/ uc)f';nf&?PVf&Af'CC &Oc)z$d@   B;%99KSX$<3#"'8?O[mN{sbv@rMM sP7Cd\W>UsN)U+xwC X\Sf(TʲVU`@   91@  /<<990%KS KQZX@Y@=yZ^______GFDJJ77499%*+  ]@vVPA2$]!!&'&+5326g6"6%DDBPVXJ Y($)T@%%B L B;*991@(**" *990?+D4]&!"! 4767&5! 32654&'&z茪3@ 5*Brqc.Fb]##p9С2 ODF8W n{1J@" 22'(#,23 '  /;21Բ]033]&'&547632.#";#"32767# $546el78ttWYZ[<;_7892u|v>CBAtMU^GZ\]\~\?@aGH  #$*,"%'<:('$pYVUF@  B;Բ]91@   /<0@  @]#52654&# !!&}F0;;Z{};&&B< V{6@   G 21/9990`]!4&'.#"!!>32 H.pfQnn#'`b]X($B@ BLB;221@ @ `?]0?]767&'&#" ! 6[XY\6 1LghK2 OTW^aLWoo`" 10`0]327#"'&'&5!198 >CAhfj@[+Xw=` k@    291@  /<290%KSX@  <<@  Y@ ]!!! !fbRWR`Au+=@    Դ/  ]91@  /<90%KSX@    << 9Y@   ]@ ]'.+532! !>K^p϶DM8뚶<LT`w`O@   B 99991/20%KSX@CAh ` ?[+Xw`V^~ 2@ B @ !21@   !0O"`"]67632#"&'!%"32654&A{~y&%ÑuJTs{{ssyyĀ]bBXV5{8@  B;<1@/0_  ]&#"#52654&# '&!25F0;;V/b ;&&B~7>X` 6@  BLB;1@ 90 ]"32654&#! 76)v}}vv||B>{8+`'  1@  20!!327#"'&'&5+V189 >CAh ` @[-Vw `:@  B  Բp ]991 20@ p_/?]4'&'!! '&5!3764RuG*h~fJ`t\-RG_^PaJB@VjY@!B B ; ܶ_o]<<ܶ_o]991@  /<2<<0!]2!$763676&U62j@V@}dxa4V`@ <Բ]<91@  <<90%KSX@    99 999999Y@  ]@  ]!;#"&/!.+532{V G6pK!J0pσNwO6땻-R3V`R@   ܶo_]<<ܶo_]1@   <2<<0 ]65!!$!!ڋffdd @V@ d`X`V@  B B;999991@  2<29/90/]!!76'!%$z"F3sfs3FT(798'1'jbC 1'jOX'f&I} f'OXf'ySo$ " 76'&! '&76! 3276!Kws6FP,^n #3A7Tg1F-m~`zUt]h% #6'&#"'$%$! '&3676'\MRjе 鞏PJq9GR³#G BlO}վU*!4'&'&6%6'&µ=**+tx9CWsVV"}ddd}"VVc.At,ny }a}y Y,tA.`#%$47#!!764_??>wu>>>>Uwd"!d{UVVUUVBVUZ#`(؜`fVl""#52764'&# '&76%!Svvp}U][TF";ڤ]zZb[TL&eFXVT`!"#52764'&#"'&76) :SSZ*}U][TF";Mw`9 fk|+3 '&76'&# |`)& k9V+ "Gk{W RS; fKX<"'&'# '&467!3276=!32764''!'676 x0/yzxGp@Ag479gh46{lel473hA?vBx=F޼ەu^U^^ FkmimmsAF褊b23GxU4`%%&'4!!764!'676Rj~=jr&nj=~8yܦob B@d6@ل|1+ &WfV" 765!!# '&76/RRRQ0RRJi~~vI<UX\V{"32765!!#"'&76r<==BC*J&#"327676#"'&'&'&547676763267!"'&#"'632327654fet1 *'1.&[s]-Z@I:1$#%7Hc}mD)DZwZ@NaerjQhVF"e  D8( $O:HAAC4D&0M`ds.#AL.#YIX^WV!3 %! 654'&#"!676! M|=[SL}xZ:\J2 eǾLlxVP|Dnӻ^V{!327! 654'&#"!676!  eNGAjs?1O}DznTQUQ:6F.Slll/!'27&#"6763267632&'&#";!Q:!3!N#"''+:Y#"`;*&(%N!3!:=#1b0> N&K(N 0<1#d{/%3'27&#"567632767632&'&#";!54z1-A " $2@@2$ " A-1jɞ9Y%33%9f"167632! '&7676!2767#"276'&#"4lz*&Yˋ(wrgDCCDDEEFD8/ߤ27x _VTTTTTUVTU]"067632! '&7676!2767#"276'&"/uanr¤&"}uP{cqlg]s=<<==>>?D8/ߤ27x _TTTTTTUVTU9V<!5#!#!!!<`[u7V#5#!##!!ƭse`p ppuoc+%&'&7676'&#"67327'$'&7j=+;3g9[Lkj=+;3g9[L`| 'qP~>==<}Tddjkg{!%# '&76!2&'&#"%32767g^{Щ0|^@|lLN n usN. !?@qr~! {!73267%5&'&#"54763 !"'Nsu n OKk}?^{0| !~rq@?! ҚV^f\&9 ! !!#!TVW+DQV2` '!!!!,N DV^~ ("276'537676#"'&'!!!5s=>>==<3 !"&Dksskj}u}R5IDDI5788f\&y3D:&yck' 7uk' u fb#%!#3276=4'&'&'&#!!!!!!2bN=$$. fe銊#CC77##wul' vf\A@ - +21@990327# !2&#"!LuXxofeoˍx-6=,Akf=-^2654&+!!$!3 gypoz~d'3^][]\8#/(Az4&+326!!!3 )!!oz~~yp3,[]^q9y b2!=4'&'&'&#!!!!!fe$$.wu5o77##ql& vk& pu;k& u !!!!!!8AN+ '$ '@   21/027654'&+!!!3 y6::5zi-1][0-ujju%@ 1/03!!%\N{0@    1@   /2220!!>!3!!!h:E#[ENAd(/j@%   <<1/<<<<<<0KSX@$   Y3! !#!#! !3!{RR{9Gyy9((32654&#"6$3 !"&'32654&+EC'^GMllՙ}[]V^1")"'&$)67jcfi =@6  6% 11 991/<2990KSXY"!!!Rm+k& 8uq.^  1 /<036!!!^f'#K1+[90+ff2@1/<0!!!+N3f\& j7;= 1@% /20KSX@   Y%!#32767! !(;xFj!KBU6m#EOXf :@- -+ <<<<1@  /<2<204&'>!!5$%<oaboꖆU'; $@   1/2<0)!!!3!8NN  21 /20!!"&5!3!!:J^l:yx+ % %@    1/2<<0!!!!!!#+N -@    1/22<<03!!!!!!! %#ANNd2654&+!!3 )ypozn3^][]#&Q +@  - 299991/027654'&+%)!3 y6::5zL-1][0-juujy3267!!.#"63 !"'_uLx#x5o_5_o6! ! '#!!"3254tghh°{zddz^)m[@$%    2991/<9990KSX@ 99Y3#"#"!>7.54$)!Jyiim^q7f@}O'L?XfgZRp-+X{DX>W*:@ (BL"B ;+1@ +%+990'&547676%6763 ! 4"32654&n:kv29PLzFt !Ehv}}vv||mCCĀ0)' "0O[8&&` -@    !21@   /02654&+2654&+!2#!>@@>OPPORMcm3222&??>>Rsj`@  1/03!!Q`}s`0@     1@   /2220>5!3!!!#!r`ȺppSO&i`X {H&i`k@%   <<1/<<<2<<0KSX@$   Y3! !#!#! !3!;(@II@':f''U Vd${ 32654#"632!"'32654!# kzٴ@,gE03=᭮8^O2` <@%     991/<2990KSX@ 4 4Y!!!fU`T`T&=` @   291/<290@`;IIZ]X_ogvv{:DGJV]g`ewpv|]]!! !!fbzW~`Aaq0` @   1/<036765!!#q(E$uY`%I` I@%      1/<290KSX@4 44 4 !!!#!`0{\` $@      221/<20!!!!!!fcf`V'X'{R`@  1/<0!!!```V^{SX5{F`@  1/20!!!!ji`}F`\qV $/K@-B$$ ' B;022221@*% $" 02222220"327&!632#"'!#"32"32654&AyyAk===fj ϑjj ϑjk==kAyywJJII*IIIIJJ `[` $@     1/220!!!!3fcf```  21 /20!!"&5!;!0f:LfPDzY` %@     1/2<<0!!!!!!tfftf````-@     1/22<<0)!!!!!3!,ftftf```(`%2654&+!5!32#OPOP??>>W`'` !@   21/04'&+3276!32#!f('PO((Ffz{{z^? AWSTRRf{!. 63 !"'3267!  Ώ/VѰ $Kb$>>%cUl{!36! ! '#!"326&f,"!EZw}}wu||`?>{B+z` "A@% "   #21/<0KSX@   9Y3#"#"!6767&'&54763!!OO['(('%K-+%322?s99nnv HI G>a/0!GHoKJX m&CX 1&jF-%+5326=4'&'&'&#"!#535!!!67632llͳ>fL$$.p@@fFQ[[nedwv\[F77#VW,rrb/.ww(m&vX5{!327# !2& !$ V/Ώ Uc>7*7>bKjb{VL#1FMZ`!32#!#!6762654&+QșEt(KOPPO`W`%I$uY7??>>L`%2654&+!!!!!!32^OPSLfcf??>>'`VW$67632!54'&'&'&#"!#535!!!Q[[ned$$.p@@fFib/.wwoF77#VW,rr=m&vm&CF&` !!!!!!Dhfcfi``fX23276=!32764''!#"&'# '&467!09gh46{lel473hA?vBx./yzxGp@Ag4tmiqmw AFf^^ FX`SdS3 )!!5!!2654&+3""@ypozu$^][](32#!!!!!!2654&+Xf^OPPOBI??>>'3267# '&#!!3676!2.#"!6Xxskj}۷ir+u}jksvDybDI78ѯ87IDLm{*!!32767# '&'#!!3676!2.#"o1TTLK@TWVWѫ.f0/XUVUINT-L4W1yF`Mw20W17'!!!΋WW H+QH3u` !'!!!'w'w zzzd6f`6p7 7!!!!!!!'!樨&΋WW9+QH H`'!!!!!!!'! zzzf'wwp7w>`=6d6fff)4'&'!!767!!fk>^U:kqIJqM& Hkr3 3rX'`!!767!!4'&'#uQooPK+A>*LM'<'MU1:/U !!!!!!!!4'&'!!76KJqk>^U:k#9 3rM& Hl#` !!!!!!!4'&'#!7OrfoPK+A>*Lʋ>`='MU1:/UoVkKR2327654'&+5327654&#">3 #"'&#"32&'&#"'&'&5476373>I$R]H=STGG~]^rl EEMNO1:2,ci`j]ee]fdsJ]MK߲Dz6 5-XN45-.]V^*) `_TS"(_asq2I (( CQWU-QtfKR%#"'&#"32&'&#"'&'&547632327654'&+5327654'&#"567632 373zp@+4'heN]VVOWUXrJcV@NY(<@.2C>v|u2987_;<[ZYWtt87ly~DzKK/Q4FnU?()2<'%",*$#  HGa@?pRx6765!!5$'&5!!tW=O͖P=V8Hn{efjlJ8VR%6765!!$'&5!!(U2>ez|؈ze>6QRDS^Z|(p&ta\UK ffpX{  ! "!&!26 EGq`M kh{8(8BBc !632.#"! nw;@r*r54 rr{!>32'&#"!gPb6:Z"w`qV l###!632.#"!nw;@r*r5l  i4 rrf#L}X+f2!A23 !#"'&'# '&76!367"&'#";6762327654'&+#R""ZiZ$ !N! $ZiZ""pP@$Zaaa`[# T #[`aaaZ$!""ON!"wxxv!!vxxw"X{'N#";676762327654'&+"'&'73 !#"'&'&'# '&5476!3767625x=??>w2$B$6u>>>=v9 %B%94; %B 6ʏ55 %B%wTVVU   UVVT Պ윉  霊 fX" 0=X}" 4fXG >#'##'##'3276=!32764''!#"&'# '&467!x<<<<<< ^ > f    uF567632#&'&#"g_RWW 12S[ 0LLMF%%~!#3!\\nn~5!53#5\npnrl+A +o i+ i+o+++ Ar- #)/!53!#'7%'%'77#%53%RR:zV!z9yo`yoJ@>@A@¬@yoyo zV!zRRVvk)!!!!!332673#"&RmY`LL`NV =<<=VB)!!!!#332673#"&fUtg@ cSSc Q`T}VFJJF03 )#535!327654'&+=Vy6::5zXujjuX»-1][0-3#32#!#3!27654'&+uufO((('P`XOOX`>B ?;!  654&+327'7+!! zpL7uj`vj dl_c~:L~vc~V^{)6'4'&"37'7"'&'!!67632<==>>=s*%DTuZZJfJZZuυpHcTTUTTU}/.b b./}@ 1/03!!!#\2N@  1/03!3!t`:}: 3#3!!!!%\Bn#D*` #53!!!!!QT?f!!2!#3276=4'&'&'&#!!!!= feN=$$.%\wu銊#CC77#F`!2+5326=4&+!!!llllͳ>fLLfQvwwv\\S`/)3!##!#! !3!3!XR{{R#Ayy99G&`%3!##!#! !3!3!II@':f;(''U VVo('zdo${&z'q!!#!!!K&b+1#AL!==`%3!#!!!PC~fba`Aq'!!73! !#EEP1DD6J=s=`'!!7537! !'#D2f2nzWn3.`-~0q5!3#! !!#5+1SS!=Ly'!!!! !!#5fkNNKkk-2 !!! !!Q+1#!=L(k` !5!! !!NbzW~Aat!!!!!!!!8#Ay9D`%!!!!!!!!gfcf'`V !!!!!!8%Ny9` !!!!!!fcQ}'`Vf #!2!#3276=4'&'&'&#!!!!! feN=$$.:wu銊#CC77#NF`!2+5326=4&+!!!!llllͳ>fLLf/vwwv\\S}`fB6767654&#"&5763232767# '&'$'&76!2&'&#"? b;6JCH(#v~3EF8MSK@TWVWѫ$u}j\wazv.XR`PVOEK"#kr$1!(ef8704X.p{@%6767654&#" '&76!2&'&#"4763232767#"'&C)%2.3嫫/XUVUGL?YRSS'4lo[`1+11B891AB} 63;240+n/ʛ*%WXV(uwRX %wfo\'zsXo5{'z j !!!!!!x`#A#` %!!!!5!!gij<F`! !!f-f `uq!!5!! !!%TT%K`F`%!!!!5!! !8 'f-f N'3!# ! ! !?;:n_'"D o{'PE=,/k' u&iF'Gf'"32!#3276=4'&'&'&#!!!!cfeN=$$.+wu銊#CC77#!F`32+5326=4&+!!!llllͳ>fLLffbvwwv\\S`A6Vi!!!!676!g|wBW'#V[7-+V?`%!#!#6765!g@Im`*1FpVB"wff%!#32765!!!!!N=8銊#CC9F`%+53265!!!!!llͳ>fLfcfwv\'`VVv)!!!!!!!8y9NVVB`)!!!!!!#fcfg@'`V}V!"'&5!3!!!!:he$$.l#Vwsoe@7#9+d`%5!"'&5!;!!!0UQf $f[V(TKh0+V)#!! !!!9TVD%NVVD`)#!!!!#g@{\`0}VO 'z'4+@p]1@]0X='@O] 'k& u +@p@O / ]1X1&jX{k' uX F'@O]1hfQX {hfk' +u`X 'ja/k' u&i1'jG(k' ud$&j,yYH`TO'q8;'qk' 8u'jffk& fu$+@pP_ / ]1X'1&j+1ff}X'{7ffk' fupX''jqyk' uf&jL;O'q;F'q;k' uF'j;k' uFf'k' Lu'j !!!!!=%\#A` %!!!!!gQ`k& u&j] 3#"%476!3!! '&z5::6塒s-0[]1-ju9+ujZ1` %35#"%476;!!"'&HP'(((aufu !;? zOXXO!/"'&476!3!32765!! '&'#"32765Ӕ<=kl<=ٟ, Tjiz5::8sj@<sj ju9OPPP ʛ+7==-0[_/.TQZ` 0#"32765"'&'#"'&5476;!32765!˃P'(((EC%%߇%CKHq^kuR6(QP)6R~ !;? 89k'u )a/.XdOXkS==Pm̎w824'&+5327654&#">3 32765!! '&mSTGG~]^rl#EEON=G`fB=f45-.]V^*) `aTS"'`_B08PL ʛ{532765!#"'&54'&+5327654'&#"567632B0IR)6R~噄C>v|u2987_;<[ZYWtt87l7?p5'=Pm̎wzh<'%",*$#  HGa@??HVn')4'&+5327654&#">3 !!STGG~]^rl#EEONf45-.]V^*) `aTS"'`_3VY{()4'&+5327654'&#"567632!!C>v|u2987_;<[ZYWtt87ly~gR<'%",*$#  HGa@?pay6 3!676!32765!! h|wBW'<=kgA=[7-OPPL 6=+v` 32765! '&5#67656)PR)6R~(~m`*1F`mP==Pm̎wwB"wf |`32765!#"'&=!!!!6+NR)6H~~fc`mP==Pm̎ww%'`Vf*X\_$ 32765!! !!{<=kl<=`OPPQ 6=\#`32765!#"'&5!5!6+NR)6H~~inpM==Pm̎wwRn{?` )'!!!3JgJ~`J\ `#!5!!!!!!!Y+zU+2V`X{,3>%#"&'# 5!.#"6$32>32!#3267%3267%2654&#"waGMzFq}~ HeߋӆsU+w`gpq[QeMOMO> f~~CD01kdkdŨŸUO..f}unLJDMm)'` %24+3#24+2)#53qqw~~wiߟcm(&:jX5{Fa32654&#%'%#wJv}ZNMMNZ{k"%WK}LW$&'a'%#53326&+3JU[f##qaFRWJBa !!!!!! 3`n{1#"'&'5327654'&+5327654'&#"56763 l78ttWYZ[<;_7892u|v>CBAtMU^GZ\]\~?@aGH  #$*,"%'<:('$pL`!!!!fff`L$ZT`!#"&'3265hKG6f4e]` !"!=`` !7!!'7jobo`iC``X'{RX5{X 4&  6%  B8(8.v~~vv||vD""FX@%!>54& !.5 20Ư217*7@JPT@TV0VX: +>54&#"3267>3 '# 467'7)A+CN{8,,eP~--^K/w}HO0u|CDjKmFEE!lMpX^{&05!.#"6$32>3 !"&'# %326726&#"XE q}~~HRՂ"GކQRLJpw`h\w}}wu||+f~~CD01QWTTRVWQ:f}unѫBX/'{ 4&#"!! |uw}G"!E/8[*/ 3265!! |uw}u/8h` !2+!3264&#hze[MTTM`ML+z`+z` "";5!!"'&54767&'&'!3['(('[Ofnn99s?223k%+-K IH JKoHG!0/a>G``!3265!! $5fS^_Sg``vddv`+{Xt@|v@'5{#3!!#!!3#%!2654'&'67654'&G 5k%156w=7 ?9%80h4@3##p]88(;YtgU&`YH`Z\F`]t`%2654&+57!!!"&'q~X7T94|z},)*+SLi--:;`3!!Q``N`!!!!/`}h``!!6765!!5&'&5f? f ?fll`au2 X 2uavRRvq0` !#!#!<]!\4D3M3'!!!!!!5!#1d}d\QVv} &27654'&+27654'&+#!!2::I%%$%JpNV\\mmWX@,+76,lOy<;D54t=Vv 327654&#%!2#!iWNNKB !! BK=AB}|6A9JJ]_JJ9A6v !!!!!!vd}cࣜv !5!5!5!5!5c}d@$#"'&54$32&'&#"327675#5![abh뉊^VVLOMNNONLK&! z'ut(HHHH v 3!3#!#vf?bvi3#vi 3+532765v_`1%L'& MN&%Iv 3! !#v^;1tHIv3!!vc_v !!###v54ٚAd=v !3!#vV==v #!3V=D=@ "32654&'2#"$76$ozzopzzp、SstjsstsO ?"27654'5#"'&54767&'&54767&327654'&q6886655vaj45gs;:oppp:;sj15kIF"44(jT=332!!>=!!!!=?!a27kG/064Q|@??@|Q4604,=8'W !'!C<v} !2+#32764'&#vG&''&Gpv !27654'&+#!2!'&'&#L!!!!LfsVWZ[2'((r#$#;m9:וD78xSj $#I>i!!#!c_v3327653 '&5v&&WV'&ddfde h,--,h VWWV&g 333! !&颢颢誩``|m7 +"3276=7#5#"'&5476;54&#"5>32FH3?,+-98RmEDUVTZH>?5HI**&)(=L]998[n440, m7 /27654'&#"367632+32767#"'&F$#3@+,.89QnDEVU+*YI>?5HIJITU*&)(=Lf]998[n430 CCmb53#5#"&632264&".88JI89LLL\[8"3^^^m@6>L#"'&'#"&=!&'&#"56763267632+32767%3267%27654'&#"K>^DE,1M 11XHJKOPQPOqTS.?FGWzHGVU+*YI>?5S&%=AP VF$#3@+,,+,9F$#' 8<77^n430 K9##B=d*&)(=mb 264&#">32#"&'#3ILLIH'&&'M.rISTTSIr.^^0//074\\\\47[gmb3#5#"&632264&".88JI89LLLP[8"3^^^mb#!32767#"'&5476324'&#"b11YGJKOPPPPjjhicd%&mb 5!&'&#"567632#"&73267m11XHJKOPPPPjjз%&
=?<899o43NN&%IF''64Z[ZZ8]̗PP ++\\TV-,.-mO3##53mms 3%! !#ms&m*67632#65654&#"#4&#"#367632+;;Fz@?,2@F(4A##)66AIp:BCGB<^YGhm2#+532654'&'&'&#"#3>322EDhA0 G((3rFz??}CC4KR 10Us\74BCmu "32764'&'2#"&6K(''(KI'(('Ifggf00000000WWWW6m67632#"'&'532764'&#"m6568kllk7765(0/5_4554_1/.. WWWW 1111 mu4'&#"#4632('IK('ηfgZ0000ZWWmu327653#"'&5XNJK'(ηgfZ`00ZWWmb#3>32#"&"3264&O.rISTTSIrgH'&&'HILLb\74\\\\40//0^^m3#;#"'&5#535:t…88pp,21w m23327653#5#"'&m F)(3rEz@@?2MMLB 00V5[74BCmA!53233276767654&#!5!#QG9WVU&% laf= ?H.23=mrm(#"'&5332673327653#5#"&M+;;Fz?@,1@F(4A##)lAIp:BC~C<^Y4hm33#m⯯Olb5654'&#"327654'&'5647>32#"'(9E'&IPJ(ogtWH01I2"*@^:[OO[1#/! /0YY/0&'P0PB&H1e4.9/HqdJIk\3#5&'&+532ef!*f+`)S1 *8@ +&#"#"'&54767&54!232764&'&MkXlhghhg!(]LZ"*)*GH)*Z>`'74?KXWWXuZ,Y' 1XW2122TS 2#5$47635676&_YggUjX"T HS$$WH/0F9v6KN! 73;#"&/#'&'&+532c"Fisx/  dFS=>19H-Ti.'(mmOgZdnudm2sdmsdlbwd\sd8@pdSyd! sdF^y(>32#"&'!32.#"2654&#"Ju uJUc^[o|xsp||b\\c !65v`%!535#535#5!#3#Fy!!+532765'!fgllͱ>f&&wv..tmb#367632#"'&"2764'P.89ISTTSI89LL&''\s[8\\\\^^///m&'&#"32767#"'&7632../1_4554_5/0(5677kllk866 1111 WW6WW mM/;2'&#"&'&#"63+"#"''45&'&7632$"]R4./.1_54 @j,~E2llk857 * 11XE-c@0&)W6XV mu/&'&#"327654'&7#"&547632''7'37y"#" JPRHI'(gJ!"gf__xvF<JDS^00ZLHHSWWKJzBH6qA@H6m1#"'&'5327654'&+532764&#"567632M'(VU:::9-;51I)*+'QJNJ$F<%65&9987##((?a10  "~0( PT7#$m#"3###5354763}0pp@A&,,f11mV33#+532767#53ppADp'@v?CBmb,#"'&5476;#"'&'532765"3276=.pJUTTUklB>=?<899o43FN&%IF''64Z[~ZZ̗PP ++\\TV-,.-Tm23327653##"'&m .F)(3:9Ez@?~>R>01V4P7BCmT3#33##5#53ᇇQmmm 3?'&5m<W~GELDC~mT !53#5!#T~ lmT5!!53#5!#m~mmqll$3#33"+1"+5&7637&#"3276j#I 9DG „W(B;AQvX7Cw*!m) 3;#"'&5mAiDEKCCrm133+532651#mCDo'@0(sBC4Am3!!n40m067632+5327654&#"#4&#"#367632+;;Fz@?FDi@,2@F(4A##)66AIp:BC}CCAmB<^YGhm(#"'&5332673327653##"&M+;;Fz?@,1@F(4A##)lAIp:BC~C<^Y4hm '#=4'&'&'&#"+5326=3>32  G((BDi?23rFz??>R 01U{ u@C4K{\74BCm "&'&'&#"#367632;#"'&5L A.(488Gy@?0AhDI0 1*[s\9BCK4CGnm$ !3!#mlmmu 2#"&6"!3&'&+3276fggfηK('H0 (KI'WWWW60$==$0*00m#+!535&'&7675#5!#'6764'&MggM~LffL('' %''1`AW6WAghAWWAaZ 00M 00m=&'&#"#"';#"'&=327654'&/&'&54632ICCG%nl332653 '&5l4;<4TSSTB88BxBBBBm(#'&53?27654'&/2.%`aW~GE J40$5!J=XXXDC~q_71P<@/(fm# #3ⰯOsm !!!5!}gstXm!!;#"'&'!5!}gt  RiDBktF C@uXmMP!3676#'5!5!25&#"}geNiQ~t\R<mONX-m2 7!5!#"&'532654'&+gf6O62kkHGDCCAaf45gv؏ ?:P|A@<79m !32767&'&#"2#"&76C$(DB)$#'DA*"VWWVVVG?DD<8ivw^wwwv '"$ X{"Dq#@%^&EfuQ#%Q^#E#%^#Efo\jcv@,Xo5f"v 9q#@'\&G\uM9#'\M#G9#'\#Gw9#z'\o"zGH9&'Z\<&GNu"( 'X k"H&H u"( X k&H #(X {#Hp#(Xp {#Hoo#zc@9(Xo F"z#Hp#?)'p#>?If6#m"*\F#Jp#t?+&KfuM#k+M#Kp#jB?+/&Kfu\o#zV+No#zHK#O+#K p#|,Lpyb33@LRu", !V' qkcv@,.y&NduPq#\.Qy#Nq#m.y#NM#/M#_OBM&/'u$MO#q_;Z#/^Wb33@OH&/ZE&O^W9kcv@,0f#vP9p#?01&P|M9#0M{#/P`&1 Yj&QM"1kM{#Q#X1{#Q~&1 YD{&QVffu"2 X'S"R ffY"2 X'3&R ffu"2 X'k&R ffu"2 X'k&R kcv@,3V^f#vSp#?3V^1&S:p#?50"fUM#5M{#_UMQcq2@@n}M"qU~#F5D{#U-p#?6jb1&VZM-"6jMb{#bV-cv`@,#Z6jb#v"VV-m"6 jbc&#d2M-p#?jMb0"a jp#?7Y#(W Mj#7M#W j#7bv33@W Hj&7ZH&WZ[#8\`#EXo#8p`#X#68`#Xu"8' NS S"X' 1 ]Y"8 "X'qj 'HcM@339:#Y M''9M`'Y=r&: h|Hm&ZC=r&: h|Hm&Zv=`&:jh/H&Zj=p#d?:H0#Z=Q#x:HP`#Z'p#;?; 0#['p#j0?; 1#j[p#?<F1#\\qkc@,=\Fc"v]\Pq#=\QF`#9]\q#=\F`">]#Kp#j?WH#ZF#\X#D'p#L?A P'"$5XP{"D '4'u$X'D 'o"$ `X7"D  'o"$ HX"D  '"$ cX`K"D  '"$ KX"D  P'k"XPf"z 'u"$ lX!"D  'u"$ lX&"D  '"$ bX"D  '"$ lX="D  P'z#XP="gM'(XM {'H4'u(X 'HH"(CM@33X :"Hyo"(' +y uX"H o"( X "H }"(  XrK"H "( X "H Mk'XM f'4'|u,kf'`M='|,M'_LfMf'f2XM'{'Rff4'hu2X''Rffo"2 Xo"R ffo"2 X'"R ff"2 X{K"R ff"2 X'"R fMfk'fXM'f'lk' Nub_f'vclk' Nub_f'Ccl4'hub_'clG"bCdL@33_:"clM'fb_M'cM'?8M`'X4'@u8'Xk' 'uqf'vrk' 'uqf'Cr4'@uq'rG"qC4L@33:"rM'?qM'rr' |<Fm&Cd\P"<F`"\;'|<F'\I"<CN@33F:"\c)G&;c)G&;}c)f&;c)f&;c)f&;c)f&;c)m&;c)m&;~ 'G& 'G&Jf'#ֿOf'(qf'Jׂf'm&~dm'cnG&?]nG&?>nf&?<nf&?#n@f&?nn!f&?7G' G' 6f' Uֿ/f' Nf' ׂf' VG&AVG&AVf&AVf&AVf&AVf&AVm&AVm&AG'"G'" Ef'"Oֿ Df'"Nf'"ׂf'"m'"dm'"cG&CQG&C[Bf&Cփf&C8@f&C׿f&Cm&CXm&CR!G'$-G'$zf'$=ֿf'$Nf'$ׂ+f'$m'$dm'$cX'G&IX'G&IX'f&IX'f&IX'f&IX'f&IG&*UG'* ^f'*ֿ cf'*f'*ׂAf'* G&O G&O f&O f&O f&O f&O m&O m&OG'/ f'/ f'/xm'/cXG&StXG&SoXf&SjXf&S`Xf&SXf&SXm&SXm&S} G&3xsG'3 f'3+ֿ f'36cf'3ׂf'3 m'3ldcm'3cc)f&;c)f6nf&?Fnf7Vf&AVf8f&Clf9X'f&IX'fV f&O fWXf&SyXfXcV)G& pcV)G& pcV)f& pcV)f& pcV)f& pcV)f& pcV)m& pcV)m&  p V'G&! V'G&"VJf&#;VOf&$@Vqf&%bVf&&Vm&'Vm&(VG&5 VG&6 Vf&7 Vf&8 Vf&9 Vf&: Vm&; Vm&< VG&=6VG&>BV Ef&?V Df&@Vf&AVf&BLVm&CVm&D&XVG&m oXVG&n oXVf&o oXVf&p oXVf&q oXVf&r oXVm&s oXVm&t oV G&uVsG&vDV f&wV f&xVcf&y4Vf&zpVm&{Vcm&|4c)F&;c)&;qcV)f&} pcV)z&; pcV)f&6 pc)9&;cV)9& p 'k& u 'O&q;f'5Wf V'&wGV wG!527#wGez\9;\m' ujVf& V{&A Vf&8 V9&AV9& f' +ff'"RfV&"XEf',f' 0\m' uF&CV)&Cqd&CX/9&Cdm&CP,k&$ |uAO&$q|;;f'$fQf'8]f'H\m' u F&O &Oq &O :V^G&KV^G&K 9&O m&Ok&/ uO&/q;=f'/^faG',^;;&jl;^fCXVf& oXV`&S oXVf&X oX9&SwXV9& of'*fuf'3f7V&3fmfvwG#3$5Gzeo10!!oto/10!!/10!!/10!!/10!!1"__J&BBX@ 10!3'dX`X9@ 10!#Td`L@ 10!#Te`X9#d`X +@    1<20!3!3!ddXb`Xo + @  1<20!#!#!TeTe`^F + @  1<20!#!#TeTe`^Xo !3!3 ee`^5; *@  WV W <<1220!!!!!5!VJ#!/3;?@!   W VW <<<<2912<220!!!!!!!5!!5!VJ###!<}'` ]10467>32#"&'.'535II245633JI326J235624IJ336633'AF'AoH !!h}!!!!hh}}^ #@   1/<<220!!!!!!hhh}}}yB V #/3?K|@C3 2211 003%@ *$F4 :02$L3IC1!  C=!'= I7' -L9912<<2220KSXY""32654&'2#"&546"32654&'2#"&546#32#"&546"32654& HNNHGLLGֹHNNHHMNGպֺ׺GNMHHLMh{rs{{sr{ؽ۽8|rs}}sr|ٽڽ ؽ۽٨{rs{{sr{ B "-8@DMW"32654&'2#"&546"32654&'2#"&546"2654&$  &#3  &54$"2654 ZHNNHGLLGֹ(HNNHGLLGֹHNNMNt\t؎NMLh{rs{{sr{۽٨{rs{{sr{۽8|rs}}sr|z ۽1{rs{{sr(`!(`u(`b",,w(`#,w",,(`#!`u(`g&//|(`&/'/|/<#%##'y29190 5%'q'y<91905-$'3#}##Y#Yw'n!5>32!3# ^fy]N^@D*h1"B:*(ǿbY9>K-dM B0_  $'5 $CJ?ơSPPSEFE&j &$ 56$ :F;&FEFESPPS_#3 #ۊ@ v#")# {# { ;C@`j#3  !!!!!mT"^ !5!!5!!5m^F&""&"'n"V%3!#5!!5!3#!<+d׎cZK; !333>54$fN۲fS3'#"&'.467>3،I326535IR2633235fS'372+r،I535623I532336) ` !3!!>diu}j&9:la+ L33 L33=B<##lRaX:8| #'7!5!'737!!؍1؍؍1׍1؎؎1َ׎) !!!^^^OJpJ J(`P#,e#,w",,+ !!!!!,,,,T,,*,,B !!!!!,,,d,,T,>,,,p,=!!!!hh}1}d0 !!!!!!!!diiiitpD %!!!!#!5!3!,,d,,rr,,,p,\rs9w !!!!!!hhh}}}}}9w !!!!!!!!hhhha</ 4&"32767#"'&547632B@! !LK! bcabbccb@@@AAAAoppqpqqpmO3#3#mQ8. 333##5!5ya$!!>32#"'&'5327654'&#"Lq6^]efNLLLKCC32#"&547632>>?:431j;; )^8``rs?;<9$%IJ$%%$JI%$ 56i{PQuv T!#!TSFy6M ,:"32654&'&'&547632#"'&54673264'&#"C#$$#CAFFT**WVWV*.Q_.0[Z[[^97<79!!>=!!B=>BF00Gi8777jL+/45P|@??@|Pj26dA)532767#"'&54632#"'&2764&#"~8h2i;; */07UVrsA;;>>>?>56iJK|vv $%JJ%$k !!#!5!hHIkۅ%%F!!'FA!!!!''ń{o#&'&47673`....`P)(P}|}~g6764'&'3gQ())(Q`./..a~}|}n?#=4'&'.#"#367632? .H))4:;F|@A>R01Us\7BC</TYd{C{dmTtdZTud8.C[daC\dN'T]dTC^dMT_dAT`dad%bd)cdoifddgifedm7dmbdmud:sdmbdM"%!!!!!!# !2.#"3267 3P^F^PPVVP`**9  9*)73Ʈ27f9)06&'#7&'&76%7373&'6767#"'#&'B=!72,Ϳ@76 0<:d[bdcuTR!Fi+<V,6767# !2.#"!>32.#"1.bedue`udelo1@0;k$")N)u~ "I77ef87ID: ̦c[M!!!!3#!#5>rgz[X"X}#676!2.#"!!!!!!35#535#5`z\YFMv84uuw|'&>:r B0#4'&#"!!676323632!754'&#"!. Rh78hCUThtYV/X21##Ne9(75UU``/085cs VH)v75TRXZ#5#535#53!3!3#3#!#!3'aLZmRmaLxJJJJ P3264&##532654&/.54%!#!! 3!!632.#"!"'&'!"&5=pzzpUFItijIm?"fqffqhcڀs_fcKa?ov""Ա_ml%N9"/:90/ # U~^> 0035+. # BF2654&+!.+!! 32654&/.54632.#"!"'&yiiyf7q^mL'O}@:djptijIm?cڀs_fcKa?ov(?ZgfXspR֔-v/:90/  0035+. #"&)-1'#53'!!7!!7!3#3#!#!#5!73'!!7{X6q66s66n6XzD̅D˺ijzjiK@vvVVBvvBvvvvO ! !4&#!!% !3!!PN+$ooaY*5=Y>"1r@;.*(1.!2*("%!) 2 +) )% 2229999999999122<2990%# '#73.5467#736!2.#"!!!!3267_pKXbXMep_Qc-VY2~cTR78 87NO{v$$ zzOO<!!!!!!#5J|ibn`u!8LȘ j!'75'7!!!77{d,d,`c,c,<^:MS:MS#9MR9M7 (_t'6767632#"'&'327654'&#"67'6767632#"'&'&/#"'&5476323276767654&'&&#"32Nע%;7OKkJ?O+A03'&q++S38=D !?9DL_K>.136> QORJBJ(Q(30`DG4%63x>$ #7+Уc]97#9Xzav24?Le;&2ELyP)+'+>AHJB @@=kbq~Es/4 %UAB`_KBjoD7=AiK}f^[@ 0)5'32327&547632#527654'#"'&#"654'&#"ѦwJw,PYaTkzI5Et|S@,3Z8$)DlX``S㫣lm@.jVBthP#lH+990CF *1!3276%!64'5#53! 3#3#!#!#5%!&'&+g9mmN^qq^mo9g_B7P*PPgX~Ug(gT_g6f[$x$-#5!#5&'&76753&'&'67679}h{ei񘺼d^tgiVoo$*T?pcBuqDeTKF#eiϥ"7?& 6#PU" 5!!!#3#!!!#537!!/3'3 { 3R{{/{{R3[3K3_/UÕeeÕÊX46767!5#454$!">32!!#3!2$7#"&547!5L"{{h ^6)-|~.L# %%78LP'5)8xy65ELMTN )%#&'$%6753&'&'6767_g9:Эݢ:7h_Q\DGHCZT%;0,R7r~or 7N'(OQ"z!3!w=!5!'3:w=z!#'73!5Fww͌=z5!'3#7=ww͌) %)A"326=%!5#"&546;54&#">32!!.#"3267#"$$32LD62?[A hScSciY']f6eppe:hWPDD..,-_K y EL61!657@!vv#Bf\%%# '&76!2&'&#"3276\j}u}jjsns}p78ef87@"!?k?!Hկ -'&r#$/%/ܸܸ$ и /A&6FVfv ]A] и ии /+015!&'67!!&'&76TT.--.0+-.҃tXWe>W ! xw)'1.#"3267#"$$32!!"32654&'2#"$$A]f6eppe:hWPDD KSSKISSI@!vv#B5qtsrrstqT)15!3265!!5#"&.#"3267#"$$32!!p@ )FU?Y]f6eppe:hWPDD GhD"dUrmJI@!vv#B5"r):3!3%!!!!!!nn]xn+/?;!>54&#"!!>32)q GAol.hucm VH9O@Fa^ N#676'&'&#"!#737!!!67632!x  !.pQPk(fB(6dddnNL,77#WVrrb./wwVjF2632327#"&#"7632327654'&547%#"'&#"^v{x}}ȋo֏z,\l/v~jX>6FF PP5ʷ05^:11::b:~"FLxUBnb_Xċykb[OP6%273#"'#67&5477632654#7>r>I,W RW *֪~oqqȎ>;VȎ>;T^ '9!2+!3264&#"32>54&'&$  $&546Dz OUUOAЮWWWVy{ήWWWX 0llllBx@9WzyWVVUyzWXnnnn;C0<67632"'67327654'&#"#"'&57&547327654It2݂DIzdM&dmU>"9yEY:?.m((6UE?LPק=+<$~\oA7n=B Ũhb)<(,QB} !67654'&%33!27&#!! !L:PO"xBnALM!0jmnmmff#,# 76! ! 7& 676'&fgklk-{@{{{}Llk\4334Ь01SlJY&54'&#"#"'&5327654'&#"3"'&547632763227767654'&#"HL^eZZfgr82ED2881VN2884@Bfggf\n/$~AB}:1$ $3CAA9Ya+.vuuvjVMMWWMMV[^SMpuvuuk# XW1W{|^1$h{r^Co(BP>;[Yj )l'03&' +!! !&3&#!!2767654'&'8Nf`Zxn|@|>4JΞ"&*&:(^^&<w/8؍$~hHf%TX$L Ǹ!/"/!и/ ܸи"ܸA]A)9IYiy ]9 ///+ +и/ 9и/ 90132654&#+!! 37! !'!gppgW{K)qpa/~/_mddl=`oW'4.#"#"&'532654&/.54632733##'#R])2-+Fr_?H\j1,. 3?g^}7rnm!  QDYb+  T@Pa M `3!!!!!!!!!!!!@DPjD/ͯ`z'R v@>  %    ji i ji91<<2<<9990KSXY"73#######5ww㪉LqKBM\q 3%!!!5!.=&]x'x737!!#"&547!!! 4#~˲˄~#~zx89xzVˤ U#yy9q. 'm}Y-)% 7673 $54$32!"53!25&'&#"C]JjMo_zggJF__DM3TT<`xGZAEIpP3RQ4O )!!!!g##y;}\ 4&#"322#"&54ID`IFa~ﳶr|tx g6 4'#!5654/&54?'&5477'&5474/c2-i>Bd=VE/b5c2Bc2c2Cc1NS2j?Bdjl,>8?]/c6gUc1NS2Bc1MS2c1MS2 `  ! ! !!!#!#!!!!!! zVV  s?m.mt 372!#Ie%F` 63&5#3#32767#"'&'&'&5#!#"#463!d.4U"_'165Ic@;6 ^7V)"xfQLW,3$p G x &#T+Ka~=2{ƜV}3>3 3!#"F{!nDFvFuV;c; 3!!AC\]x3!3%!!!1nn]x+]w ! ! !!5 5-ExwcS*J +! )327&#!3676654'&LTbU !LM}j';c10tf:@S^et10]6z5x 3ZNqF #'2%267654'&#"!!7#"'&5477632#3%-)C%u^ ^ueC2tPQȦ;0r,)[ZJoIx\aXc\mLV/.~ X2xZJoI2C{ 1!654'&#"32767# '&547! ! * NI~HefUr|sЊd5"Z }?8X<[s6z0oDO:qDM9 3%!!!!LƫJWf9pxF 732767!#76767#!!>f/.&,Dm %Of9Fs..wvuAk,<<7T}&0 !67!>3 #"&'32654&>54&#"g57ocbiE*([k^PMU1ABwCt2FnkBmFDےj5j:0.;6"W-/wGs))d'y&{udm'ud'ytd'y&{\dm'y&t\dZ'y'\du8'y'\d[d'y&{]da'y']d\d'y&{_dZ'y&u_da'y&\_dT'y&^_dd'y{=,&,,K&,',K,&,9 '9 &9, Y&9',, &9',',',', g, g&,;';'9',;' &;',,G/f\&9'90L0'LLN&L'LL<&LYy`Y&YL $'L'LY B'L 0'L'LY'[L `['L[ 2'L'L [OX5{F\G{Pk !*3 ) '&'&'&54767676!32654&+#"3Txi3333ixUxi3333ixT10tfet1001teft01Nq9 / !+ +(+( A]A)9IYiy ]A&6FVfv ]A] и(1.+" +"0132654&+'67654'&'! )=l=R;4334;S>jc7>=7dTMwiffixjzWV:2ST2:4:on:3 ateetak  BZc32+56767>54&'&'&' 76767654'&'&'&) !#"&546;&'&5476j>S;4334;R=ld7=>7cPxi3333ixUxi3333ixPl=R;4334;S>jc7>=7W:2TS2:3:no:401teft0110tfet10#V:2ST2:R>4:on:3f\HX5{d?Q   2@ @@ 00 ]1@   990@   <<@ <<KSX << Y5!!dyƑ<Ƒ* @   991  2@ OO ?? ]0@   <<@ <<KSX << Y3'#'ƑwxƑuPQ   2@ OO __ ]1@  990@   <<@ <<KSX << Y'7!5!'7PwyƑȌwƑ* @  991  2@ @@ PP ]0@   <<@ <<KSX << Y#737wƑxƑdPQڶ 22@ PP_ _O O]1@    9220@   <<@ <<@ <<@ <<KSX <<<< Y5!'7'7!dDƑwƑ<ƑwwƑ*@    9221 22@__P POO@ @]0@   <<@ <<@ <<@ <<KSX <<<< Y3'7#7'ƑwwƒvƑw;Ɛ3 7!!#c,4c̪43 #'!5_c̪43c̪43 %!5!73c̪4c43 %'3!zc4c,4d?Q5!!!'7!dyYyrƑ<JxxƑuPQ'7!'7!5!!'7PwyyƑȌwxJxƑs/&'."#"'&/#7!!267676767632 NZN !D:[P_cLW>bc,a NZN $A?VMbdKX=AW\)""!&OG='""'=`,c_""!&V@>&""(WLc_P[:D! NZN WUA<(""&>@V&!""_c`='""'=GO&!"")d?Q53!!#dƾWYƑƑ<WƑWƑ!3''#'5' WƑWƑwƾXƑWƑuPQ'7#'7!5!'73'7PwƾYƑWƑȌwƑƑ+#757377wƑƑƾWXƑƑdXQ5! !dW>HƑ<W‘WƑ\PQ'7!' 7!'7PwH>‘WƑȌw>>Ƒd?Q !5!3#OiƑw Ƒ6* %'3'!!5Ƒ6ƑwhuPQ !'7'7!#3eƑwiƑww\* 7#7!5!Ƒww\hƑw*%7'3'7!!5wƑƑwhDƑwƑwd?(5!276767654'&'&'4#ƑwJ    E4;,-0+,;5D Ƒ  +,x>@9>*+uP(!"'&'&'&54676763"3!'7'D5;,+0-,;4E    JƑw +*>9@>x,+  Ƒwwd?;3276767654'&'&'&"#5!5!54676762#M     Ƒw 0-,;45;,+0-,;4E   ƑM>x,++*>9A=x,+uP;54'&'&'&"3#"'&'.547676762!'7'7!#     MME4;,-0+,;54;,-0 ƑwM   +,x=A9>*++,x>MƑwwdPQM2676767676322676767'7'7"'&'&'&'&'&"#"'&'5#$   "%'-0$+  ' בw 'Z&(%   "(&-0$ w $ -#% $, ' בww"*&  *&"dPS%'!5!!'7'7!r?ƑwAI?Ƒw2'ƑY2Ƒww 7'7v9j#Pu]W)9Z, !#!5!,rƑw~Ƒ[ !!'7'7!~ƑwrƑww<Z, !5!,ƑwLƑ[ 3!'7'7!Ƒw<Ƒww- !7#7!ƑwwVƑwdb 5!3Ƒw Ƒ z%#4'&'&'&"7#74767676 >Ƒww12^YzoozY^21VJG@9!!9@GJVƑwƆvx]Y6006Y]xv.z%4767676 7#74'&'&'&".12^YzoozY^21Ƒww>vx]Y6006Y]xvƑwVJG@9!!9@GJVM 7!!#7!3c,4B[cc̪4'wwd#P '73#'7!5#3! Ƒwi3ƑwjƑwhhw0Ƒ\]"4276767654'&'#7!! '&'&'&54767< <>7ODHL:< >c,a/11/a_trrt_a/11/a;LJVS=7# :;LJSVJL;,cepvvpeZ5005Zepvvpe]47 '&'&'&54767!5!#2767>54'&a/11/a_trrt_a/11/a,c> <:LHDO7>< epvvpeZ5005Zepvvpec;LJVSJL;: #7=SVJLd ?Q5!d d?!!dyƑwƑ*3'#wx#'Ƒ$Ƒu PQ!5!'7P%Ƒ ƑwuP'7!5Pwyw*!37ƑwxƑw!#73ӾwdP}',`V',dP}',d?}'5!!!!5JyyƑwƑ_U73'#'#'3ZƑwxxƑuP}'7!5!'7!5!'7jwyyƑwƑw_U%#73737#ZwƑwxxƑwdP' %BdP'$!Bd?Q%'7#5!7!!!!!!~@SwS r@?dVKKWoSSWo6KKdPQ!7'!#5#53533'7'7#'5!)KKSwSخSwSخKK7KKSSSwwSKKuPQ3'7'7!'7!5!7!5!!7'!6@SwSr@VOOKK3WoSwwSWoKKd?Q!!5!!SwSLK7SSK)#'3'#'RTKLRvRKuPQ7'!5!'7'7!5)KKLSwS7KKSwwS)737#73KKTxvR!KKRvRdPQ7'!!5!'7')KKbKKSwS^Sw7KKKKSSSww)7''3'7#7KKKKSSSwwKKKK^SwSSw  #7!##Sqc,vqjqu+cqS '#5!#5'5yrt*dpRpdvpTj! 753!5373pdvpTjYRrtdp! %3!'3FRrtdpRpd,vpjd?Q!!!5!!!?Qv9iwiv2viivuPQ!'!5!7'!5!7!uviwi9vQviwwivZ5Q''#5!773›Ƒwcc ƑccuPQ#5377!'7'7#'sccƑw ccƑwwƛ*!#!5!5!5!'3'!!!!Ƒ,҂6Ƒw҂*3!!!!7#7!5!5!5!Ƒww҂Ƒw6҂d?Q5!35!%5!!%5Ƒ 2Ƒ*3#3#3'#'2Ƒw6ƑuPQ#5##5'7!5!'7w5Ƒ2wƑ*#535#3#7372wƑ-$6Ƒd?Q #3!Ƒw Ƒ\uPQ '73#'7!5 ƑwiƑwhhw7^? 5!5! !!$T_i$$6~ '33 !!,_i$$p$H^P 7'!! !!$_%6~ 7##% !!_%e$6~!!!'33 !!YK_i$$zzbJ$J6~ #!5#3'3!3! !v_r$$pllx|`$6~ #!5#7'3!3! !v_r$$ll|`$6~ 3!3! !%#!%!5#3mr$$M2|`$܌lzlx6~'33%! !!!!'37!,_$$$^ttL@$@tt6~ %3'3#!5'3!3!! !!'37__vc̪4<\wrc4bw^+6~ 3'3#?! !! !___-%%$$e Ҍ$$uPQ)5A '7#"'&'&'&'#53676767623'7$"!&'&'!27676Pw?>KJJK>?|{ ?>KJJK>? Ƒf\(( ~ (g  ((\(( 54&#"#"&54632#"&54324&#"32;'#S0@eID`IFa~q9WzC2EqG Ur|tx !!!!!gr+#V##4!!#7#3#!!!73!#3#)5Wk=j [n+^^##V#`#V`z$273#"'&'#7&'&$32 &#" 32$767&'&IoFcξ<hE(ixuЋPRRh!&) QSS9YZX|g IHveyKvGd  @ /91/90 !!!#-3mV? !!GskV??%&76763!!"!!3!!"efſ{wC""Bw}_cdZdAAx>@?=wBC3"*c/+ + +ܸ иии!и#и*и*/01%&'&54$3!73!!!!!!##!!a[g"uu C"5N"BwCH3cdh[[[>x>@?=wB%v'% '&76)! !!)P])7KyK1&vo{ o%2lc<'%#!5!276767!5!&'&'&#!5!2}wB""Cw{Ųfe_cCBw=?@>xAAdZx3"*k/ + +++  иии!и#и*и*/01#!#7!5!!5!!5!733>767!7!&'&'&'ba\pu4uW\C"N"BwCH3c[[xx[x>@?=wB%v' )5! 765!5!4'&)5P) 7KyK1)o{o%2ld<'Ol //013!lw@pp120!!!!)u!!!!uJ))w O@    91990@ &#)  ) ( ) 8 ]]!! !!5 Bl_{N 10!! !!5!#!!!5!  bbd-W+ии и /++ и 013#!!#!5!QAh+@55%10KSXY"#3 R>. //013`em%73% %#'mvzzvzvvKJ36r910!!h}LZ n@*      %  @  9190KSXY"3##'%`w͑%hN7LZ"~uDIZ"~[ %.#"326"&'#"&54632>3"3+tKZqfMGzEeDaƯZcG_"wC+v;CCdOMein~q~ezCD /B@#  $'!-!0 $k*k099991<999032654&#".#"326#"&54632>32#"&+vIZqgLHw+tKZqfMGzDaƯZcG_ů[1CDeOMeeCCdOMeia~q~n%!3!%!3!S5/ + ܸк 9и01 !!!#4'!&'7!&'&fX32jO\-*u N#Q(H?vq-..-xy)q//901 5'7%%' 6^w=<P Fp37; B<>b_kyPRPX/3#/)bX/ ;+и//9 901#'%3%:F ;EdeeXW/3#3#/))bX/{//и/ܸи ܸܸ и и// // 9 9 9 9013737##'I;J:\,Y{ *eLX+e5J!!! 5EG^5J!!!5fgw^5J76! !4'&#"!5o{ o.8ÄkTF54'&'&'m; }J " mDK6>>?J " mDK6?JKVXKK>? 'U5O9:["$S13(*# b11S$ N.Yeit%'&'776?!'&'7767'&'&'&54767676767676&!67676&67>54'&'&!' mDK6>>?J " mDK6?JKVXKK>? 'U5O9:[U5O9:[":;PLKJ} Tn$S13(*# `%/b11S$ /. Qy}%'&'7767'&'&'&54767676767676&!67676&!67676&'&'776?!'&'776?%!)!67>54'&'& mDK6>>?J " mDK6?JKVXKK>? 'U5O9:[U5O9:[U5O9:[":;PLKJ} ՜U5O9:[U5O9:[%Tb11S$ rn$S13(*# .?#4767676767676&7%7&'&'&''&'7767U%#B<\  mDK6&U5O9:[ %AAYw8'~2:)+U5O9:[01<.;CPY676?67676&7'&'7767&'.'&4767676776'&'&X', mDK6FT<;Om3F  U5O9:[ &?ǐ,@FF-'q9:80/n2/z-'}C'}}z-'}'}}Cy-'}}z-'}'}'}}  &v}]g !!!!!!Q%hh,}P} '}'}'}'}vH&'}}R#"'&'&'&#"5>32326j`k^Xbian ^VRPE:=MSNE;=KR3276767632.#"#"&'gV^ naibX^k`jRUK=;ENSM=:EPi3267#"''&#"5>32T;Vgj`VnsuU32326!!j`k^Xbk`k^VePE: =LTPE: >K'##"'&/&#"5>32326!!j`k^Xbian^Ve#PE: =MSNE;=KF%6767#"'!!'7!5!7&'&5>32-]q{@iaBLjuƩZvQ]Seian-9@;OEi0(#VNE;gK##"'&/&#"5>32326!!!!j`k^Xbian^VePE: =MSNE;=KF/#"'&/&#"5>32326!5!7!5!7!!!!'j`k^Xbian^Vj`U>aPE: =MSNE;=K튄튄P3%#5!7!5!7/&#"5676326767!!!!'HrF9edXVVbiZYan)@Ă$TgjYVeHrʉK ='&SN#";Qk&UP#!l#;C@!.9* 1 "9*1<-<<219999990#"'&'&'&#"5>32326#"'&'&'&#"5>32326j`k^Xbian ^Vgj`k ^Xbk`k^V#PE:=MSNE;=KPE:=LTPE:>K3&#"5>323267#"'3267#"''&#"5>32RXbian^[,#Vgj`;L3RVgj`m^^,$Xbk`;L.MSNE;E KUPE/KUPE=E# LTPEK7;#"'&/&#"5>32326#"'&/&#"5>32326!!j`k^Xbian^Vgj`k^Xbian^VeFPE: =MSNE;=KPE: =MSNE;=K7S#"'&/&#"5>32326#"'&/&#"5>32326#"'&/&#"5>32326j`k^Xbian^Vgj`k^Xbian^Vgj`k^Xbian^VPE: =MSNE;=KPE: =MSNE;=KPE: =MSNE;=KK#3276?632.#"#"&'!5!5gV^naibX^k`jUK=;ENSM= :EP@  %5 % $%5$[g&Y%Zh6@976767!!"'&'&'!5!!5!676762!!&'&'&[6/07VYYW6 0%AA%0M 6WYYV7 N0/%'H:f<0[2332[39a?H'N'H?a93[2332[0@.4:<20>>0;37' #"32654&'2#"&6!!!![HdcIHdeGBz0/11-0|D dbcGHd3/0xDCy-03$'  &!56!!!![y:'  3# !!!!ׅcKA' 33#!!!!ށKcA' !!%!!!!fpqeqp3YTTV' !3!!!!![,րMzt'.5IMQ53#5#"&4632264&#"%!3267#"&546324&#"#"3###535463!!!!?uu9&CWWC%:4%''%%''2.$M()R)cmk^Vgx&"*DAcct99BFV4 kj6h66h6k!))Yd[Yeg/!(&#LSS;9'J%)->32#4654&#"#4&#"#3>32!!!!![6]b"&16(26 S28VR35uo :5SN[5SM%Q//7':!%)#546?>54&#"5>323#!!!!!5 0+)^2*?1.#'!!d_1N, %`g =@!      <291<2<2.990!3!!!'7#5!7!^P1}M !!!!!!ns!5!73!!!!!'7#5!7!5!M.{>orv8Or?Aftgsi !!!!!!!! '@    <2291/90%!5 5PN '@   <<291/907!!55%&!!5!5 56PN&3!!!!55%!!!!'7!5!7!5!7 5"3I>~H~6\ڠ\ڟPN!!!!'7!5!7!5!755%"3I>~H~6\ڠ\ڟH 5 59696N33QQ33QQH 555569869NQ#+#&'#67&'&'&767&'36736'&DD59gi;5FDDD59gi;5FGAGWedYVedۘۘ&%5%67$%'5$7d0wL,ƦvS)^o'oS*[n&%57%'\Z-VpR̩wSXT~ %'7'75%%5XEZVwopR̩SX_'T(%%!!'7!5!7%5%<lSUCBu;L6S]5-XdsEE(7'7!!'7#5!75%7%5ֶDXFL62.B =^2*ςE\fuES$%#"'&'&'&#"5>32326 5j`k^Xbian ^VfPE:=MSNE;=KPNS$%#"'&'&'&#"5>3232655%j`k^Xbian ^VdPE:=MSNE;=K(14%3267#"'&'&'&''75>32%5%%%P ^Vgj`s;3QOVbia Z^0Q[Fl¢=KUPE: E$&SNEEXbrf5-(143267#"'&'&'&''75676?5%7%57'WR9? ^Vgj`s\GE)VbiY13:D ?\ָ̼܂=KUPE:$Ex&SN# ]euE2, l 55% 5wPN l  5 55%PN<<!%7'%%'75%7%57%5%e\i4"*PW<2."W94 Z_k󆑐3^am􇑓g3;5<<!%7/%5%%'%5%75%F??8]] ' o_\\q'V 13{f네􊇑3i놣s %5$dos===||s %$sod=6||6==y%5%5$>V|}0USx|y%5%5$@T|}0USx|y(%#"'&'&'&#"5>32326%5$j`k^Xbian ^Vg|}PE:=MSNE;=K USx|y(%#"'&'&'&#"5>32326%$j`k^Xbian ^Ve}|PE:=MSNE;=K |SUJ?67%'&%5$%ސmUΠ< STIGynʳlqB[,=qB J?67&''67&'֐mUBΠ4PSTIGn6m r6B \,|mݴnLNl e>moKM3#!#!5!!5!3 32654'&#,|ppmݴnLNlg le]moKM%!!!!"3!!"'&766nLNl6ΌmoKM᎐%!52#!5!27654&#!56̌6lNLnClMKom&%!!'7!5!7&'&763!7!!!!#";>Q=Z&zQ<Kl<{nLNlBw|BmoKM &327654'&/!5!7+!!'7!5!7!5!XlNLL0<[RCnVΝ%vFQ<&L&MKomM0 B"WlsBs9 %!!'7!5!7!"'&763!!"3!!P@jPhΌ6nLNl6v2HumoKM-9676'&#!!2#!!!!7!5!7)}6nLNlh@Rh@G moKMtHH5J 57!!%!32765!! '&ZHb"bH/<8.o{o_FIcxcI+=OOC+5J&}5J !3##5#535!32765!! '&7/<8.o{oP+=OOC+V!!!!V!5!!5 I?3 ް 2 ް2/33 3015!!!!!*@ K?3ް2 ް 2 / 301!5!!5!!5?jV/X#!#/XV/X73!3V$3?"2767>54&'&'$  &'&'&547676!!#!5!TSEFDDFESTTSEFDDFESbc1111cbbc1111cb88\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcb88$37"2767>54&'&'$  &'&'&5476765!TSEFDDFESTTSEFDDFESbc1111cbbc1111cb$8\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcb^$3?"2767>54&'&'$  &'&'&547676''7'77TSEFDDFESTTSEFDDFESbc1111cbbc1111cbݍݍݍ\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcbݍݍݍ"=A32767>54'&'&'&#"'67632#"'&'&'&5476' ED"#FDSRcbSUDED"#DFSRcbSUbxwvwc`2111abxwvw`c1211aGEacSSFC##"#DEacSSCF##"#Ib0111cawvxwbb0111acvwxwF$37"2767>54&'&'$  &'&'&547676!!TSEFDDFESTTSEFDDFESbc1111cbbc1111cbh\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcb}$3?Q"2767>54&'&'$  &'&'&547676"32654&'2#"&546TSEFDDFESTTSEFDDFESbc1111cbbc1111cbyHdcIHdeGBz0/11-0|D\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcbndHHbcGHd3/0xDCy-03$+E %#'-73%&"2767>54&'&'$  &'&'&547676== =  TSEFDDFESTTSEFDDFESbc1111cbbc1111cbqqp##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcb$!;!!!!"2767>54&'&'$  &'&'&547676TSEFDDFESTTSEFDDFESbc1111cbbc1111cbfp##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcb$37"2767>54&'&'$  &'&'&5476765!TSEFDDFESTTSEFDDFESbc1111cbbc1111cbCj\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcb^B /3  ް222   ް2/3   ް2 2 2ް201!!#!5!%!%!!88oNz88WB c / 3ް2ް2 / 3ް2  015!!%!!8oNzWB N/3  ް2/3   ް201   ' '!%!! NNNNNz]NNNNB !%!!!!eNz hu}5?3/3///3013!5!\ff3?3/3///33301#!5!\ff-?3ް222/3013!5!<4/?3///301%3!!5<45?3/3///3013!5!!\ff !!!#3!!!>rr N?3/3ް2 / //3 01!!!#3!>rr R?333/3 /// //3ް2 01#33!5!j\\ffo?333 3 3 / 3 ///////3ް2ް 2 01#3#33!5!F\\\ffk?3 3 3/ 3ް2// / //3 ް 2 01#3!!!#3!jj\>rr3q!!'!#3!RNEqY&Y3q!!!!'!#3!7!`:`&qYYrrP3q !!'7#3!##g94|;qY&Ytf\+3q3!!!'7#3!##?!`4ww`qYYtr\  5' 5'] 7!! 5'G] %!5 <G{ z6'22#"'&'!#"&632!676"32654&:Bz0.22,0|D_4.0|DŒBz005`9PO::PQ3/0xDCy-03`4B <-033/0<B6`PsOO9:Pz6 2"32654&'2#"'&'!#"&632!676::PO;9PQ8Bz0.22,0|D_4.0|DŒBz005` PsOO9:P3/0xDCy-03`4B <-033/0<B6`z6:5!6767>32#"&'&/"3264&z:/0zBD|0/79QP::OP <0/330/: P:9OOsPY[ 3!5#%5!v x  3!5!?4 7!!!!!&cfgw^ !!!! &cEG^ !!!!!&cfgw^)!!!3-3W?V !!!!V?#u 9}Xd !!%fpqeqpTT'e   ''6UU'f    ?<'fU::U'f   {'f0U8U'f  fNV'f  Nf::'#3276?632.#"#"&'!5gV^naibX^k`j#UK=;ENSM= :EP= !! 5 M<= !!55 +11J H  5 5 5 86:686N33QQ33QQ33QQ H 5555556:86886:NP 5!-5  5 :nPNP !5!555% LNP !5!5LNP 5!-5:y5$%5$T@}|?_:|xSUy$%$@T|}?:BUS|mw!&67&%%'&'57&%5$%7~E9оD\eعCR([\GwY49^GY~ Y>-*HM.DX!6%'6%7$%7$%ሗX,tLjrfOM Y%7R/VY(`q:}݂\*[x3!!!!!'#5!7!!! MЫ=Mv0'`@`U@x3!!!'#5!7!5!!5!!MЫ=Mv<0 `j`@!!!!!!'7!5!7!)iԻikG9@莊!!!'7!5!7!5!!5)iԻikG9j莊"%3267#"''7&#"5>327 5T;Vgj`VnNPU32755%T;Vgj`VnNPU327%5$T;Vgj`VnNPU327%$T;Vgj`VnNPU@?=wBC3#5!3!!"$$3!!"!5}wy9geCclAbv'% $76)! !53#5!)Pٛ])7KWK1&v5o%2lc<'&l}VZ"!5&76763!!"!!3!!"B5efſ{wC""Bw}ZcdZdAAx>@?=wBCv'!5 '&76)! !!)'w])7KyK1&o{ o%2lc<'X"!5&76763!!"!!3!!"B5efſ{wC""Bw}خ cdZdAAx>@?=wBC!!!!3!!"'&'&76763!!"L@g}ֲbcefſ{izb9CcdZdA9#!!#!5!276767!5!&'&'&#!5!2bC#DgſzxC""Bw}udxzZdAAx>@?=wBC#3!&'&#!5!2#!5!2767!5}fy9meCxAbv' )5! 765!#3!4'&)5P') 7KWK1)ˇo%2ld<'Z"!5#!5!276767!5!&'&'&#!5!2RB}wB""Cw{ŲfeZcCBw=?@>xAAdZxv'!5 )5! 765!5!4'&)5'P) 7KyK1)o{o%2ld<'S 5!!5!!5!Sz$ww6 3 %! XZ9(dTd  ' 5!5!GG # └!!!m!!5A!!T"!5!!TA!#nI,$%%$nn!"nn 8ʸ'+6@KV#"&6 3546 +32 &=# &6;5#'54&#"3!3264&#"32654&#!#"3265˭ʏʭʏeHGeeGHefGHefGHefGMGeeGHe`ʏʭʏ˭GffGHefffGMGeeHGeeHGeeG!3!n6732#"&54&#"iRA@Aee5 jT@OMJ&e<\-( #"&546323267iRA@Ae(]e54jT@OMJ&<T !!!!%!!Pr6L+x  #/;GS_kw+7CO[gs{ + ]b+]%*+%++]и/bи/*и/%hи*nиииии/ ++"+"f_+f:3+:++'и"-и3?и:Eи3Kи:Qи3Wи:]и3cи:iи3oи:uи3{и:и3и:и3и:ии/ии/ии/ии/ии/ии/ии/ии/ии/ ии/ии/#и)и)//и5и5/;иAиA/GиMиM/SиYиY/_kиfqи_wиf}и_иfи_иfи_иfи_иfи_иfи_иfи_иfии"ии"ии"01!2#!"543!254#!"+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;22+"=4#"=43+"=4;2+"=4;2"=43!2#UݓJIIJ%J%%J%%K$$K%J%J%%J%F%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%%%C%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%$%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%$%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%%%%%%*$%%%J%%J%%K$$K%%%%%JJJI%%I&%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%% %I%HJ%%J%%J%%J%%J%%J%! !pp ! !p. !!!!!5!NQ !5!ݠΐ0_T*!!#*- !5-T_0 5!]]*!*.- !!]#ΐ-!!!#*!!#*,!!!#,#!!!]#]*!!#*,!!!]#,#sX !4763!!"{|a0!0*,!4'&/32765!<(en:==@ne(!< |AEy <sX> 3!!"'&5!0a|{>ܜ*0s>!!J 4'&#!!2s!0a|{$*0sX,&'&!;!76<<(en@==:ne(!< yEA| <> !#!!2765s{|a0!>0*(!(! !! $<[^>32#"&'!'%5!%26&"Ju uJ%Qf#{yy{b]]b`jRP[@.6!3!3oNdxN &ۺ+#+#+A&6FVfv ]A]A]A)9IYiy ]+ + $%+$01! 4$32"! 4$357!3!NKKgg L7h׬z@+/ xN 4+$++A&6FVfv ]A]A]A)9IYiy ]*91и1/+ + +.'+.01! 4$32"! 4$!!5>54&#"5>32NKKggo.*OC6uhSXL7h׬z@'%D%7A,C NlxN D+B5+B+A&6FVfv ]A]A]A)9IYiy ]A55]A5)595I5Y5i5y5555555 ]5B9,5B9,/A,,]A,),9,I,Y,i,y,,,,,,, ]ܺ&9;9+ + )"+)?8+?2/+2/2901! 4$32"! 4$#"&'532654&+532654&#"5>32NKKgg|rN^j@][]dXMKJ;x_^IeL7h׬z@_0 6135-.)/%|}UpxN )+!+!+A&6FVfv ]A]A]A)9IYiy ]!$и&+ + "#+"и#'01! 4$32"! 4$ 3!3#!5!5NKKgg BKL7h׬z@Y5УxN 9I+&3+&+A&6FVfv ]A]A]A)9IYiy ]-9A33]A3)393I3Y3i3y3333333 ]99+ + 0)+0+#6+#01! 4$32"! 4$!!"632#"&'532654&#"NKKggS?!Wcu;S[[S3wiL7h׬z@\$=(F>?F(xN '@+;+5%+5+A&6FVfv ]A]A]A)9IYiy ]A&6FVfv ]A]A%%]A%)%9%I%Y%i%y%%%%%%% ])%59+ + "8+"2+201! 4$32"! 4$"32654&.#">32#"&5432NKKgg6666677ai1gqn@޹GL7h׬z@u@II@@II@*g;  xN "#/$/ܸ#и/A&6FVfv ]A]A]A)9IYiy ] 9!9+ + !+01! 4$32"! 4$!!!NKKggxl1L7h׬z@xN '?K!+=+1F+1+A&6FVfv ]A]A]A)9IYiy ]A&6FVfv ]A]AFF]AF)F9FIFYFiFyFFFFFFF ]%F19%/A%%]A%)%9%I%Y%i%y%%%%%%% ](=9+=9+/4F19%7ܸ+@+ + ":+".I+.C+C(C94C901! 4$32"! 4$"32654&%.54632#"&546732654&#"NKKgg=;==e˽f$pq32033023L7h׬z@L:;;99;;:apS{{Sp |]]|-.-..--xN 4@+>)+>/8+/+A&6FVfv ]A]A]A)9IYiy ]A>&>6>F>V>f>v>>>>>>> ]A>>])>9A88]A8)898I8Y8i8y8888888 ]+ + ,;+,5&+501! 4$32"! 4$53267#"&54632#"&2654&#"NKKgg_i3frn?ݸG5885677L7h׬z@)f;!AHHBBHHAxN &2>+#+#-9+-3'+3+A&6FVfv ]A]A]A)9IYiy ]#ܸи/A99]A9)999I9Y9i9y9999999 ]9$и$/A'']A')'9'I'Y'i'y''''''' ]+ + $%+$01! 4$32"! 4$35733!4&#"3267#"&54632NKKgg|'D')*''*)'ÏL7h׬z@&*jmmnn;( ;!O;!O ;!O;!O;!O;!O;#!O#;(!O(q(!((!((!((!'(I(!]((!((3(:( ' q( #'+/3!33!33!33!33!33!3mnmnm;(%8K#!1!!!!!!!#!1!!!!!!!#!1!!!!!!!#!1!!!!!!qlllllllllmmm((((;(!%)-13#3#3!3!##!#3#3#3#3#3#3#^^(ll(lm#;( #q:( !&9 '( 9(& &  9(&  9(& &  9(& &  9( '9(&  9(& &  %! %!!!,7r+uv ))xxp) )$7632#"'327$%&#"%632#"'~~~~eMM>yJJJJJ6````qq|qq#uv@A%91990KSXY"  9%-p) 327$%&#"%632#"'MM>y````qq|qqr' '/7?G%&'&'6767&'&'7%'676727"'64'7&"'62&47\+;.81F9K58.42d;E9G,:.80G9J6&8.;+d1O9FLL&_`JnLL'`_n<1& j(0=Ju &,A=N:0('<1& j(0=Ju &1<>EB0(n_II'[[JnII'[[p) %/36%632#"'327&#"6767&'&6py AAAA,+-,,-+A@@Rqq|qq%%mܱ[0$ %@%|"p) )73276'&#"7632#"'327$%&#"%632#"'r99:9rr9:99XWXXXXWXMM>yB!!BB!!oe33eje33````qq|qqp $  $pkk]Ak^p $  $27$%&#pkk]<MAk^a``p $  $"3pkk]<MAk^``p $  $327$pkk]\MMAk^>``p $  $%&#"pkk]Ak^>``p $  $"327$!pkk]<MMgAk^```p $  $"!pkk]<Ak^`p})6%63"'pRqq)#2y|q*q(32>54&'."!623IJf654253ED3366fJI426532&< ( 327$%&#"327$%&#"!IMM>y_O````}|qqqqH( ( !#%&#")%632OyyMMqq>~``  3327$3!#"'$@1>qq``) %63"æqv`) 2#%&#u)q>` 527$3Muyv`>q "'$33yuMq`!)%632#%&#"uqq>``!3327$3#"'$uMMuyy``>qq!% !% !%! !%!$'`)32>54&'."467>2#"&'&o+()h:;iR+**(iuh*)r5352456fJI325wh))++Rh<:g*(+*)(픂235624IJf6633%!%!!d r<%!%!!We r<%!%!W7 r<%!%!W7 r<% !%!!!!+c,b r<<!% 4632"&! W>>VV}V2 j>VV>>VVJ !%! c  !%! b  p(  7& $  %;<*X֖% !!!!!!,7,rWb<)) Ie% !!!!%!!,crWbM)MM^??@7`d?\gOOOOy>*<?v^h"-///9 99013263#!5276;'4?'4?26u'6"gP39.4! '*C0.xV#m14He '1l1 Z+dd?7)+и//// 9:90133 #&'&+"'&#"/573;2?"#'57#&'#"#5676!5:+#9,p!j[%+ > 7VCCc":8}V .e3B=Se` e9*=9 3@=}k !=] 9eAmu} 5aǺM*+MA**]A*)*9*I*Y*i*y******* ]*к*M9Mи/*M9Mи/*M9*и/Mc///'P+'+ܸ и /и/99и/99и/99и/999999и/9999990173&'37&'67&'67&'67'32654'&'7654&#"3672#"$54767&'&547'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'4327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&54327'4327632#"/#"57#"54?'&54327'&327632#"/#"57#"54?'&5432&'67&'67&'67'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432O~ )*+')+(@&'$||e?/A}]\B-71SLoW\vLL)(0/ (( .1(%%,* # $ )*f$% +) $ #*+f%%,* $ $ )*   \o  [  %)#&'%&)#`#$ *) $ #+,U   Q   0  E%% +) $ $*+*EC*Z*,)-)-*,%&%&fБfU 5HhfeefhH2pu^ttQFs棥sKQttGh!99!  !77!  4 4 22 K44 22 22  11                 7        %&%&%'%&%'%&22  //  g               44 22  !2CTevU/d////01+&'&54?6?6/&2#"/54762#"/54762#"/54762#"/54762#"/54762#"/54762#"/547672#"/54762#"/54762#"/5476%2#"/5476%2#"/5476%2#"/5476DQ=2`{4&/<) g>i#@3e E $   $   #  #  #  $   #  $   $  U $   # " $   #  aG<s-8PZy9} KW2{0R^j ,: . 4 . = ,  ,   -  -  -  -   .  .   ,   -   #///9901!! WV9`8 O///+к 9 99к901!! 7 ! !WVDu9`8N I7///99 9 901 7%7&54769 }V&7A 6$ 8'^4? '+/+01!2 7%7&547!&'6I@Y%14HFS"="l-2DC[9 )+"++A&6FVfv ]A]A]A)9IYiy ]A&6FVfv ]A]+ + 01! 4$32! 4$#"#"&54>32JJhhq^mNMn2Z//Z2K7iwBNmmN1Z00Z} GH/I/Fܸ(A((]A()(9(I(Y(i(y((((((( ]H@и@/.A.&.6.F.V.f.v....... ]A..]@:и://7/C++C0 +0 и7ܸи/0&и&/01"32654&!"32654&%#"&54767654$#"#"&54767&54! gJggJIhgIhhIJgg[ZQoyy}WZ[zADgJIggIJggJIhhIJgU\\Q srW\\^} GH/I/ܸH$и$/и/$0A0&060F0V0f0v0000000 ]A00]6A66]A6)696I6Y6i6y6666666 ]3+3?+?.+ и /и?'и.8014&#"326%4&#"326! 547&'&5463232$54'&'&54632hIJggJJgMgJIhhIJg#@@z[ZW}yOOyoQZ[sIhhIJggJJggJIgg ][[Xrq Q\\} ׸//и/A&6FVfv ]A]ܸ A ]A ) 9 I Y i y ] и //++01"32654&7#"5432ɏǾ/`T_ȐɎ;12Y} 7 + +*+0+0A&6FVfv ]A]A]A)9IYiy ]A&6FVfv ]A]A**]A*)*9*I*Y*i*y******* ]9+- +-3+#+#01"32654&"32654&#"54327&5432#"'&'3xxx:yyxf& کxxxxZxxxx;TdIU  k)5AMYeq}BH+BAHH]AH)H9HIHYHiHyHHHHHHH ]NиHT-!+- +)3+)013'%&76'!'4%$53!76=332654&#"#"&54632'#"&54632#"&54632&'&676&'&676'.7>'.7>6&'&6%6&'&6>'.>'. [&riX(tRSu(Yiq'LW쥨驧r^]]^ !! !! ..- . *)n))*)m)+. .- . OyyO vKK9__9KKݧꧦ]]_""""s!!""D. - . - a)**))*)) / . - . p)5AMYeq}+!+!'+ +'A!&!6!F!V!f!v!!!!!!! ]A!!]'и/!ܸ!и//// + $+$++иܸܸ015#!4'&'5#2#"&546"32654&'"32654&"32654&7>'.7>'.676&'&676&'&7>'.%7>'.676&'&676&'&53!76=3%'676%327'%&76'77&'$%'#7%6'&718楣\\\R     - -Y - -))G))))U*)>- - ~- - VFwDcD CB DcDwETc==F\J $06# J\F==cS@@1AeA1@@H磤椣筁\\\\     % - -- ,1)))(9)())u- , - - G77W6 W77Gl^ ee ^l(q,&$pp$&,q(u S / / и/и/ ܸи/ ܸ ++01!!'!Pn8hv "g#/$/#и/и/$ܸи/ ܸ ܺ 99 ++01!!'!##+572367676MoL)>u eI3?ba8hA:F;/Itxv S//и/и/ܸи/ ܸ ++01!!'!  ##' Mo_h[ei[i8hi[ef[l[@// // 90136273 ##'5) U.WW1@ US Vdv#,5>~Wh+WAиA/Z//C+Z9 Z9Z9%Z9.Z90к7C9IZ9yZ9C}013+&=43+&=4%3+&=43+&=43+&=43+&=43+&=4%33 #&'&+"'&#"/573;2?"#'57#&'#"#5676!5\:V\9\:\:]:&]9[\::+#9,p!j[%+ > 7VCCc":8 #8d#7$6$8;$7i$7 #9pPL  )Z. ;6ZV Z3%Y63 .87p  />Eqwg0/FQ+F C+ t +tcr+crܸ иF?иFAиA/F_и_/01!674#!!6?676'&#'323276767654#3#&'&'&6%67!672!&=75$/563&43!32+'!67#>54&53# ? I :W0 96;E,Q 2:&l6x0 bm! ras"\>%Ef~e2U6g!6V#p5C+ C ? P9 B;Q4XmM;YV /M(=H: ,qLUD)8Wqke-Pm{NW =$ U  /0c)H?2@[nDF8T$.L / + 01 !' !T4XKGwL5_K ////01 !'7W4Z~wDB7/ /*/*9*9(*9-*901&547632632%6#"'&'# #"'&'&6&'&547676xJX%&XWX:\8 [Ez##FM !9@!#jL)_(Mi#"?8" MF##y4hok@mmr*%te2' BB90tU%) "ft(f" )%Ut09CB '29>-///919=9013#"'43727$'#"$4727%6725676&5&oJ7.b;7!"&546767!7!"&54>3!6763!26P+=6/2D>R+>2,+v*>>+2  ,2 =,2  =,3>,2K/1/&+ + и/и/ܸ&(и(/01463!2!2#!!#!32#3#!>*v+,1>+R=D206=+P#,>3,=  2,= 2,  2+>{!C_"+?+?<6+< + +5/+5"&ܸ(и(/.01%4&#!"!&3!!"3!#";#"3&'6737#&'6737!"'67!7!&'63!67!2I0!6SS SS: SS>SS]]J]]]]h\\, Bv*>K%39KILKIOKHLKIhghghghgE?-L!D'C+'+ + ?+?CܸC"и"/')и)/'.ܺ/9//5ܺ6 96/<ܸ?F9/B/(B996B990172654'6#"'4#"'54#"'54#"'675674767#%$4:JILLHOKHLKIhghgighgD>-sJ1 b6'SS cRR SS?SS\\K\\;\\]]!A*>K{!CuC+'+'*.+*+ +15+1C>ܸ<и*vA!,]]j\\\\K\\IKLHKOIKLIK93%N-?EghghghgiL!C>"+> ++'+'"ܺ.9./*ܺ/95 95/1ܸ>8ܸ><иDghgighghSS=SS SSb SS'6a!0J)K>*B \\]]:]]J]]}O!%)-15#PL+P+w+ L9HL9AP&P6PFPVPfPvPPPPPPP ]APP]uL9L9L9ии/и/и/.ܸи/L9L9L9L9L9L9L9L9L9.и/L9и/ии/.9ии/L9и/"9(L93L97$/0/|+*+5+D+D+ D9Dи/;и;/HD9u9ик59и/ܺ59к59595959к5959595959595к595и/"59(5935901 3656;2#'7+"/#"'+"5&54775%"'5476;25'7&56%635&56;374765'75'76=4'&+ '"'4!#"'&3$365&5&#%#754'&5&&547'5367&7+&'&'735&2?"5%75537'7'3533553535'32767&5%2?&#%55'5757757751:e,$?F?Y>F_LA3ELH3,8LYLlEF'!0< k#gF  EeY!! Gp&iq9 :^N$%`BCf F4"4._?ee3&{E(1-+!$Kt8 -   $Gs sM rEF"2 >_plTErf^5.>=9|5"-l)d ,&>vv]cccWpC-+ d8 Bpp>W]oaxvuPp82,D ^8, ^B$K+ "1R[+e*;GW QU I&? gpo% w ^SA$ 2 9i-5n02D|&IY^Pw^%\??\OWC ,,1 /211/=;7777=321811{908hN%b\Dh,)h?17I21!122223 21& //012%2#"'&=477654'#"'5473Bq4|l anN ilm b 9 b؍MOb>YaYƮ58l7P P@ $0<FX?Y/Z/ܸY и /ܸ  ++01 + &=6&# 3 6=%&#"';27!5%67%!&'&'2+"'&=476r cR~UY082.ԍ_W_V"+}IR8D).P9H'S]ٱZYHYoX(I_ ;.2lOP%.G6R%&I8d 8Pi]9/\/ /"/)/Wg+W 99% 99+ 99=и=/C 99Q 9901>'67&&&'6.7#"'&'#"'$76'773.#'6'5676&&5476'&'%&&8DN$$ UE>!]J([Fhy *m.2\=w\`|:S?ED:@@]?]1fix pFFTD'yr,48eL @v(Nr%&&&+F 7!N &".\S$XE/KC\a*0/'rSCٟ C (RKpF|bphc'R"J$d1F[qG^+G$ܸgܸи/$g9 $g9 $g9$g9^G9Gииq#иGܸ&и&/*^G9G2и3и$4иq5и^7и7/;^G9=и=/$ܸ@и@/C$g9$IиqJкP^G9gUиU/X$g9ZиZ/$\кb^G9dиd/k$g9GoиpиGrиsи$tиquк{^G9|^G9}^G9^и/$g9gи/^G9^G9$g9$g9$g9$g9$g9^79^G9^G9^G9^G9Gии$иqи$иqиGи///!///+yu+yuy9 uy9 uy9 и /uy9/9/9*/9;/9C/9uPиP/X/9b/9k/9urиr/{uy9|uy9}uy9/999999999999999999и017&&'7'6&'$#&7'&#"'5&767#&''5$'67'6'6'5$'67'656$'67&'6'&'''5$7676'&&'$'63&7"7&'7&'7&'7&'6'6%676767&77&77&''5& '6%35&'.54>323#67!&W= y /_I[l*O F_VhB" "@.,<9tJ4Vt1P QJqMi vhpHI!:JJJ B7m\J_/ ?o v!"t,`s&*_~P1>5='g=@24<1 -s[,*&sd1PT>5J@=)j<42JCYT_Y))X^TY{ #m7 "J}>  "H1 $ &b5 4CUE '(!`9 !,(MTE + }r}A" 7,)f[4f AD <@0&9c?"V+GoMK~aG g9s &0@k"?c*GEKX Gjt9hN&\6 '''' 6\%N$%/ и /A]A] ܸܸܸк9 9и&/ + +и01&'6&'67327&#!65#&3yyys~w ccޱqZre[c7 7 c , !+!"+и/!ܸи/и/и иܸи/и/ии/и/"&и!(/+ + &+ $+$ܸии и и&)и$+0135'533#3!'#'5!5!5#53!5!5#!!-ʷ}} ckvG G @<<3ffX苜qXGccGJ!"/#/" и /ܸи#ܸA]A)9IYiy ]и/и/и/ /// + +0132654&#!2+73 ### 3(ttvgnؐB(s+иии////+ +  и ии0133#!!#'!'57!5#'5735׫$"q~q+!++ + ии%и'и -+++ии&и(01!#!573#'5!3!'573!#'73!#'5;jjŠJss<wѡIjj8/w{,i + A & 6 F V f v ]A ]//+0132#' 3%+ &5%6323'#57'53^VQ6>ѨABؒ6ʞG2k >Y3~||~ObsU]+UHB+H+% +%hq+hA]A)9IYiy ]9 ]h999и/]h9#]h9+]h9/ %949AH&H6HFHVHfHvHHHHHHH ]AHH]9BH9=]h9F]h9KиK/LиL/NиN/Q]h9AU&U6UFUVUfUvUUUUUUU ]AUU]YBH9hu// /4/+к499к4949#49+49/49949=49F49K49Q49Y490132732753"'#"'4323$4'5;+"'#"'53275'&'&5?5572%#&'&5%634%476=%@.!%,BE,#!-Q2" $nL/PuHED8@9AF&F6FFFVFfFvFFFFFFF ]AFF]0JAU&U6UFUVUfUvUUUUUUU ]AUU]Aff]Af)f9fIfYfifyfffffff ]i/,/,9',91,9>,9012#27654'73&#"#'&'#"56='"'46'4#"4735#5&547/63654'%654BR38xy}xO8x  *@;^ThoP?).Rt}?ywW·FY3(p"AK|.PQUbKxưrɮ-(-; )1Hv;32#"&546324&#"326%! !  Őb{=&*<<*(;E;))::));KJ67Ϛ{ɬ)::)*<<**<<*):<'L67I" #   " #   " #   " #   " #   " #   " #   " #    <BHNTZ`fl3264'&#"&7367'67675673#''5&'&'7&'677&'67'%%&'&'%6767%&'0/CB^0/AC/88pkTcR|NOOfUip88pqUfONNQaQh!$ b)dLQk KRt!% c'd&//^000NN|P_Pfp88poQ`QyNNP\ Qgp88pmQ \Py,  M N>&`7" bK*V&"g{ M M !)1a + 0,+0$++A & 6 F V f v ]A ]A]A)9IYiy ],и(и(/A0&060F0V0f0v0000000 ]A00]3 +++&"+&"*и&.01! ! 3254#"&#%#7&'67&'6767KJ]_VNEWMCe2ntjnti7IL6a] ]pu otpu ot !)1a + 0,+0$++A & 6 F V f v ]A ]A]A)9IYiy ],и(и(/A0&060F0V0f0v0000000 ]A00]3 +++&"+&"*и&.01! ! 3254#"3$3&'67&'6767KJ]_TNEAgntjnti7IL6a] Uypu otpu ot %ͺ + ++и/A]A)9IYiy ] "и"/' + ++ и / и$01! ! #$''&'6%&'667KJOR`7IL0c Z    "*2:AIXY/Z/ܸܸи/и/Yи/и/BиB/CиC/EиGиG/LAL&L6LFLVLfLvLLLLLLL ]ALL]F/H///W+$'+$+и'/013#''%#&'52#"'&5476!!'5%!!'53'5%3'5%3#'32765'&#"sNN99=>-1\ H0e%FKSwZGr=;=NN$E| 1 ?'_>?@7`d@\hPPPPy?+<>w_VG{?,rCA+,/-/ܸ,и/A&6FVfv ]A]&// 99 901 +"'5$76%&'547327676=&#~jt1/Q}](+VRxbO P >nS]] =fP+,/-/,и/-ܸA]A)9IYiy ]&//9 901! &56;2'5$%75#"3ui1.P~N](7P,VSZycOpO >S\^ f0:1@!7+7 + .++..9и  и /к.9A7&767F7V7f7v7777777 ]A77]7!и+=и.B /"/+/-/ / + '2+':+:2'9и и и/2'9017#'#53'&'&54767&'&=33676=3#32654'&i($lm$(($[Uu&tU[$&uU[[UV$|ddb e|$% ZSSZ %_TYYT* $+++A]A)9IYiy ]A&6FVfv ]A]и/"и&/++ #+ #ии!и!/014&#"326&5432%##5!&w衤礡PP䤣L~~| * $!+ + +A&6FVfv ]A]A ]A ) 9 I Y i y ] и/и/&/+ + + и/ и/ 01"32654&'#5!3%#"5476礡𳉧פ㤤ף |~~L #+%+01&$76+"'&5'476%7!ttsstEus pid5s qttrtt<֤ꧦg\ul9S//и/A&6FVfv ]A]9ܸܸ//++0152654&#"#43233#!5 z{ym㗗yyy{(|jǸ /!/ и/и ܸи!ܸA]A)9IYiy ]и/ ///+ + ик  901#53533#632#4654&#"#*jjoon}mZyH{zF2 4˺+ + .++. ܸ"и$и&и (и+-ܸ0и+2и.6/$!+$ + &+&$'и&)и$+и!-и /и1и301"32654&7#"&54767!!53#5!!3!!#3!!8OO87ON=0LmkL/>Λ2  1O79NN97Os0LllllL1KӘJJ-'< ++4)+4к 49ик 49 49" 49#A))]A)))9)I)Y)i)y))))))) ])+и+/, 4942и2/9и4>//:+:и:к 9 99999"9#9+9,9192901%#5#535&'&'5'73'3#'73'676=35'73'33◰zhNgeMjzzTThOʍ7NjYYӖy?//и/и/ܸ ܸиA]A)9IYiy ] + + +01! #!!!'!27674'&#.d ;6zFH%QM_\ǃ$P<] 5 +  9/ + и01!#"#&5463 67!2#6#"V⩁9k]ts]k8X1((1Eu 1#2/3/2"и"/A&6FVfv ]A]3ܸ A ]A ) 9 I Y i y ]"9и/$и$/&"9++ +  9& 9+и,01"32654&'67>3"#"54767&'&#52Γ͕LVa{.+ؔ)0zHUM\ϓΓϖ=Bll)'ҕ*l8lB=j;//и/ ܸܸ// //01&'5 %$ 56?6'[W4ZZ//[[5 @Eo +?);+)5#+5 +A5&565F5V5f5v5555555 ]A55]#59/A]A)9IYiy ]A ]A ) 9 I Y i y ];A)&)6)F)V)f)v))))))) ]A))]/иA 8+ +01"32654&,'5'&546322654&#" &$#"&547>__^- ͓hI^^^9l ͓hI____(+|T!%lϓgML____x)+{T!&lϔgMM  =( +(+"+A]A)9IYiy ]A""]A")"9"I"Y"i"y""""""" ]A(&(6(F(V(f(v((((((( ]A((]?+%+01>'.463227#"&5454&#"&'&5476766&KAKK@WߴGdAoc.%&3tu/3u]JKAKL@ݰ |XHwyo†<>bQs-.cx68<32>32#&'567''#&&#4'3>$4&"?w(K>R0D32>32gYYYD,1:?$)v$E?w(K>Ro}vvxJv<aAktAO]ƀwϧe// и /ܸи/ 9иܸ  /++01!5!3##'!5!~2k<@i8080k<j'/0/1/ܸ0и/ 9ܺ#9%и%/,A,,]A,),9,I,Y,i,y,,,,,,, ]/+* +*0127632#"'#576&#"4'5267>327&'"SkQmyz,~zi2@:$(.-)zW] ݾgvxaX[&ŝ9{!C*// /013276327632#"'&#"'&#'3276327632#"'&#"'&#'Es- 1V865+)|m^aV885W7805Dt,1W776+)}m^aW784V8705(GG$3LKGHb 'HH#2MLGHaA//ܸܸи/и/ܸ иии/// //+иии01!5!37!!' 3(ͦ '3_76`S@ʬARc!%UeS ,+ #&+#!+!U$+UO+OA & 6 F V f v ]A ]A]A)9IYiy ]3,O9I,O9g=/#&+#<9+<"+0+0ик309<?и9AкI090K0167&'&#"!3!67>54.#"!&'.54>325467675#53533#63232>54.#"P#3JNNTRJWVJQSOMJ4"?*&ElnhPL$ llill %LOhnlD')----+)QPQ((QPQ)+/ 6klj$?6FWWF6?$jlk6 }++--JHNRh~//GиG/и/Fܺ F9F9)F97F9QܸIкJF9GPܸMкTF9jF9F9Fи/F9QF+QNO+N>D+>Dи/>и/>и/>6и6/01&'4>32"'4>32&'4>32&54>32&54>32#!5!'!567>54.#"32767>54.#"327732>54.#"327>54.#"732>54.#"M_ 6694S55.+C55C&.66 V\+55 c$M##$ 6$#$s`%#$d0"%)h #"#_33@]22-"40446/*33UJ"+33^1/K=0T* ####  #$$##$$#  B #### *"$$" U!'-2g(+(+++9+/ ܸи ܸ к(9/(ܸии(и/2и/+#и#/*ܸ%и%/.и./(1и4+++++$+2(+2"0+"ии/+ и /+и/ии/ии/01!35!#3!53573#'5#5!35!75!!5'57!s\\ss]]s JRRIJ~֛E77__vtt4!v7CRbWc/d/cи/и/SAS&S6SFSVSfSvSSSSSSS ]ASS]и/dܸ[A[[]A[)[9[I[Y[i[y[[[[[[[ ]!и!/#и#/[DиD/FиF/NиSPиP/R5+R_+W<+WBJ+B<W9!<W99и<?01&54767&'&'5676767&'&54>32! 535#5##3654.#"!32>54.#"  <$))+N-N*)N-M,**%:  @ v<-M**M-?K566459<5&?HPPIK* ')+K**K+)' *KIPPH>&5<:6uN|l||l|-I+N))N+@65555Q*3VW/X/ܸWи/ 9"9;A;&;6;F;V;f;v;;;;;;; ]A;;].и./1и1/@9A9E9KܺP9S9// 9"9@9A9E9P9S9016&7!&54''&''67.76;+"'5#"=6&'76767%25#6&' 3Z(-6  Z8. ,Z0H &h6%`+EH )#M+=;,Zga#iR6U k''M.+`xo8:.@s.P mz "x?.#1p#41`&jD"acLHJ ~447| JlL"0T_/+@8+@A&6FVfv ]A]+/9A@&@6@F@V@f@v@@@@@@@ ]A@@]48@9D8@9U!+UZ+!#и#/+Z9MZ9!T0132>54.#"32>54.#"!5&54767&'&546767&'&54>32'&'.#":e79e89f76e;[S &(*UM,N)(N-KV)&& \@ECA8d88d88g66gu9:%N&KRS* '**M**M**' *SRK&N۠:9}qyyq}c!%Ueiz_ ,+ #&+#!+!U$+UO+OA & 6 F V f v ]A ]A]A)9IYiy ]3,O9I,O9=/#&+#fg+f<9+<"+0+0ик309<?и9AкI090K0167&'&#"!3!67>54.#"!&'.54>325467675#53533#63232>54.#"!57!&'.54>3234'67632!P#3JNNTRJWVJQSOMJ4"?*&ElnhPL$ llill %LOhnlD')----s=BDw@>=))==AwDB=+)QPQ((QPQ)+/ 6klj$?6FWWF6?$jlk6 }++-- !yCB{C!$$!C{BCy! JHLPQ/R/QGиG/и/REܺ E9E9)E97E9JܸGPܸKиJMMF+IN+I>D+>Dи/>и/>и/>6и6/01&'4>32"'4>32&'4>32&54>32&54>32#!5!5!M_ 6694S55.+C55C&.66 V\+55 c$))_33@]22-"40446/*33UJ"+33^1/NNOOU%)$!+$ +  + и/$и/и!и$ ܸи+&+&'+ +  +  и и /'ܸи и !и!/ "и$и$/ %015!5!!35!#3!53573#'5#5!35!s\\ss]]s ^^/oo#E77v4@m+A&6FVfv ]A]991/014767&'&'5676767&'&54>32!&535#5##3  <$))+N-N*)N-M,**%:  @%v<5&?HPPIK* ')+K**K+)' *KIPPH>&5<:6n5|l||l|L".7=W <+ ?/ / 9 9 9 9, 98 9016&73#!&54'''7&''676&7;2547#";65'"3=QUU+-6 E|]k0krd0c G&h8E+`%s H>4wM-',Qo8:$whPSmh**z1"0@)5"@YR00m+A&6FVfv ]A]9 9/01&54767&'&546767&'&54>32; &(*UM,N)(N-KV)&& 9:%N&KRS* '**M**M**' *SRK&N۠:9C#+///"/01#"'##56'##"/547?^'5@_*SU&/UL ;Yԧ9UP(` XI.s2Q3/4/ ܸ!ܸ и /3и/ܺ+ 9/&+и&/0122732#&547636=4'&# #4'&#"*t pz&=<xQ>hG:V Hek%PF5NP B|-&pA&NFX // 901 &&5 <F:^;" V gdG7C+///99 9/901236;2"##'65##"'&5476;235&'&=476e x<JT`(GeRUdfB3 VNT9D///4 +4 к#94+к=9>901+"'##56#+"'&575477;2732;276=4'3&'"~V"0b*SV*8UiQ"_|Q )w`SgA ? 6N #euB? gIo5 F(pZRw// /9012367632#&5476(t*#\l~ ΨT]1klSI|-X //01 &47E osU H2`g+Z+N+99V9AZZ]AZ)Z9ZIZYZiZyZZZZZZZ ]i//^+J+J):+)и/) и!и),и,/:7и7/JAи:QиQ/:Sи:UиU/V:790126;2"##'65##"'&5476;2&'5476&+"326733276=4/#"567654'&#"35&5hr=)\"IfRUdgC3&=cG kv ==Nr%SZU 6vk 6)S<F98:d  mOE:R p&i  C]&'Ax.+0 nM,W`cT,L#@8+@+0H+0A&6FVfv ]A]"ܺ<809A@&@6@F@V@f@v@@@@@@@ ]A@@]AHH]AH)H9HIHYHiHyHHHHHHH ]0N/D4+D013#&'&'&6%3#&'&'&63#&'&'&6#"$&5467332$654'&'v  0A  1Y  1,KV./VL9?cyɦt3Z|`ŻN[O}БBr1a`bb`a1)EMTTUUTTME)%+///9013#"/4?23hH0#!cZ-@o3+///99013#'654'&'#"54732XWz=\9`Y'6?F` 1TFG*֙-@x/e/ /и/и/ ܸи/ܸ//99901#"=4?2%#"=4?26ձ'VQܖCت+YP*~: ۉ8z"Co//ܸи/ ܸи/ܸи ++ +и/и/ 9901"'4723!# 5472!5kmOdXX[;Z$}@Ϝ"  ++к 9A]A)9IYiy ]// /+ 9013363'$6'"-8 w?WXc1 0 // и /и/ ܸи/иܸи/ ܸи и//// /99 9 999013%#'#3%#)N(4/c}4(,=++и ܺ 9ик  9ܺ9к9и!и%и&и'и+и(и)и*к, 9////99 9 999999&9*9,901377#'#'547#5773%%.wwzy.**  <<7CA<<{8AMtPGc6+6и6#//MT,P$ 66$0_ u3dUdt_}s*$"Rt0XX__/ik=ZG8*F 1 . ъf)MC =g9EkO 9!(-);&  ]t!y" & 2| ba$ U+  2E3/$/+ +к$39$39$39"к%9&$39'и'/7$398$399$390135733!&54?'7'7!!"'&%#'73676'77'7'&'676ի,&T>=c$(wK9.U:Cʈ%`T??5̈'8/a\MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! 1DWE/6/,-+,+ +6E9#6E9$6E9%6E9-4к7-,986E9,9и9/I6E9J 9K6E901!!5>7>54&#"5>32&54?'7'7!!"'&%#'73676'77'7'&'676]T@1$J=c$(wK9.U:Cʈ%`T??5̈'8/]U1)8(3&ncQ&D- mMOHK$k$823!a IF 7=c`O]BA6$k#- kNA! (=PcQ/B/89+8 + #+#+9 BQ9/90BQ91BQ99@кC989DBQ98EиE/UBQ9V#9WBQ901#"&'532654&+532654&#"5>32&54?'7'7!!"'&%#'73676'77'7'&'676Z _3lFHe5^\VOosHGJI)`VKm1Sj,&T>=c$(wK9.U:Cʈ%`T??5̈'8/S<\el23-2['&')b YK4JMOHK$k$823!a IF 7=c`O]BA6$k#- kNA!  "5H6/'/++'69и к'69'699%к(9)'69*и*/:'69;'69<'6901333##5!5&54?'7'7!!"'&%#'73676'77'7'&'676yy,&T>=c$(wK9.U:Cʈ%`T??5̈'8/Rv_`MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! 2EXF/7/-.+- ++7F9ܺ7F9$9%9&7F9.5к8.-997F9-:и:/J7F9K7F9L7F901!!632#"&'532654&#"&54?'7'7!!"'&%#'73676'77'7'&'67612hFL]5R]]R'PF ,&T>=c$(wK9.U:Cʈ%`T??5̈'8/_ptcdrr@89@ SMOHK$k$823!a IF 7=c`O]BA6$k#- kNA!  $9L_ + A & 6 F V f v ]A ]и/? 9M/>/45+4+"+" "9ܺ+>M9,"9->M95<к?549@>M94AиA/Q>M9R"9S>M901"32654&.#"632#"&54632&54?'7'7!!"'&%#'73676'77'7'&'6767DD7:BB=F"W\]8uu&M,&T>=c$(wK9.U:Cʈ%`T??5̈'8/A;;@@;;Af`5(sa_t MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! .A// /++ /9 /9 /9к!9" /9#и#/3 /94 /95 /901!#!&54?'7'7!!"'&%#'73676'77'7'&'676&,&T>=c$(wK9.U:Cʈ%`T??5̈'8/2{MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! ':{(//+(9(9(9к9(9и/,(9-(9.(9017&54?'7'7!!"'&%#'73676'77'7'&'676,&T>=c$(wK9.U:Cʈ%`T??5̈'8/MOHK$k$823!a IF 7=c`O]BA6$k#- kNA!'9HRm//F/=D+=F9 F9*F90D=98F9;F9@F9IиDL01!273!567&#2$'76+&67'#'6765'533!273+#'!"/47*:!Jca# fi*11Za(}ypPd!^t/TT}75 b\V/V'f::p ?)\ ) 9s s%00%2<J\e9d +d+.и./O d9dQ013 + &=%62!67#&'&#36&#&#"3274/"34?3'35732?5##!'53aoPS<&3y: SO B2_5N vbe)PK  L$=j"AjOL5_k, ߋ~y}/M<4{1;C,[_ei' [)$ /:BR`j_k/l/ܸk и /A&6FVfv ]A]A]A)9IYiy ]' 9+ 9G 9L 9T 9Y 9_ 9++V[+V")+"')"9+)"90и0/L[V9Vaи[e01 # &5%6; 65%&# !27!57&/#2#&'676+%!#'#&'47'3!27##'%!#"/6g^_b0h\{\[:5:QmMM[-w,ldN VNG+Q'XYtTpXYSmEb,#4' FV ! Y1 1_ Ug,17H8+8'+1+1 A+ A&6FVfv ]A]A]A)9IYiy ]  9, 9A8&868F8V8f8v8888888 ]A88]AAA]AA)A9AIAYAiAyAAAAAAA ]J<+<E+$+*+*ии*.и$40127&' # &5%6367&#'.7&67263'#%; 65%&# aWg^_Wa+{|<b0h\{\&XYtTͿWzzWapXYS1/5/*+* +  +# 9012!2!!7&!"4#".547673267   0# Uq{|}@!/(SSS*E.َer(Y$h?}}|r<.32#".ee(<<ħñ"32#".%2#".54>ee(<<ħñ"54.#"ee:<#"< !<"#;ch =!!54.#"%32>54.#"ee:<#"< !<"#;"< !<"#< ;#ch =!!54.#"##"'5##"$'&'!5!5&'.54>32!!676767'%''H&(G()G'%H(%'V W3WImuw>DE}AB|GE=md^JW4W Vs'H''H'(H''H`XAK|@X1(ԁ3"|DD}DD}DD|" 2/ "1X@|AX1#  9Yw/(/6/8/6969696969"69>69@69F69V6901%&'%67& 673&/'67 &'"&'6?&'3 ' '7  &/7&'>70  1JK[]><+Gg['fBBe&\h?(K?]\K ! RTX1){V8#Uw )/^@R?? );32TD$ #@F,MMMv E8p_Lc1  M**+ B@0"AR/0?wA%od/D&3.YaQ/5#3$"uI' @3/u= =#n- .... y4u1// / + 1919к19&и ,к.19 /и 2к41901% % 32+#".7!#"&'&'#&=4;7337_8)0/_^aM`^^1/ 9534?GG~F6F~GG?>D9/C}"7+//// /+01632&'.'#!#!#Ҹ62K#+~~R!Nx_TV_T 'NQ9;:;PHi?CD|))Z)6׺*+$+2+2A&6FVfv ]A]A]A)9IYiy ]и/$и//. +.0132>54.#"367#&7&$735&'.54>322[02[24Z1/[3)'5*.XA54.#"%2#".54>''#/'7''7''7/5?'77'77'7?3777''H)(H('H((I\Hs=]SH$e$HR^323#67#&#"/&'&547&"'6%676V n*[n%'ZxL0<{2;&b;>/2:.m*nW)'$o`0LP;2F<;(e:2/"7LL75MLZ'&4)PNPUQ74(4 3(4:XUPNR (@D V>0&8a>!U*~EmLK}`G f7r &0>j!>a)E~CKW Gis7g:M57LL75M-Z '''' Y (5[J5( \d (5J [4 '''/GSm//и/и/JܸиJ(и(/J*и*/J,и,/JA]A)9IYiy ]0и0/A&6FVfv ]A]8и8/:и:/<и&'767&%76'&''67&'&'&'6767654676'&7>326'##"'&'&'&54767&'&547676&'&#"6&%6767&'&'&676&5467&'&6732767&$$$$OG36ecce74GL944m/122102/.303112.OF}68ge"w?>v"rt #87! ":;@A<:" !66# sr*./13/.UVT\<>"$!! !"#">kcg86|FO 93399 <>#"#><  "$ZTU./43..V5$##$59gTV++9Z^^Z9++VTg9'(''&()I8:9889: Z_59eUV-, <8.>euvc>-7=bccb>7-?cwud?/8MWZZW **D@@D+8,-VTe95^&)(&''(DA:AD.*!Y[[Y!& )rao+>8+>Q+QA88]A8)898I8Y8i8y8888888 ]8>9/A]A)9IYiy ]ܺ8>9/A]A)9IYiy ]A&6FVfv ]A]$ܸ ܺ$9$9ܺoQ9A]A)9IYiy ]oQ9<8>9и/и/;/_/w+2.+2_;9_;9_;9_;9<_;9Eи.I0167&'67&'4&6%67.'4'6&&'6767&54?67&'&#&'#&'5&'"'67&'&547632>54.#"2#".54>'7,3 3%/0),7=*'0*+3.22'Q YfT,1'').UfY Z98 "2 B2;F_ XB?2C 3" 894ihgikcekS[XVWXZ#ejpMcNTvJKr?VlLWW7p jk%n^*V{ww[11[ ww{V)\#fnnd-#JM 7B/""0C7 NK",dnnf#ghhggggUWWXXWWUd %+A]A)9IYiy ]9и/"и"// + и/ 9013!'#!52#"62#".54>" h9|M463%&$$5 O Dn; $$$$ / /0133'554#$/[QwGSGUW GJG$Fbm67654'&'67632!!#5!#5!5!5&'&'&'&54767676323276767654'&'&'&#"!5&'&'&'&54767&#"32Z&&&'Lh`TVDE$##$E@Z-<81VDE$##$E@ZNfbR18+../:9C=7/##"-<J81,/##/5?G5>+../:9CB9*5;AB;5**5;BA;5L##%CEVUb_UVE@( %CEVU_bUVE@(##,+.<;AB;<./9BUb_UD  u8CU_bUC8+.<;BA;<./Ew3eq&#"327&'&476%3276767654'&'&'&"%'#"'&'#"'&'&'&5476767632'%'676326764'&=<@x.+0.(B=?>=-&& ,&%,D6?=?+,/*??zG]3"D"&%%A=_V`ZZ""V`ZZ^;D"&&$AB[X]:3:΂>] [Z:3!$"2.*?:CDr1*8>]^A47>\\]W@8-.=)%%%%'>HS]ZY^XAA&% P^Ȗ9 % P%4:CA<.*(2:<2GwB^n67632'%'#"'&'!!#5!5!5&'&'&'&54767676323276767654'&'&'&#"67654'&'&#"327&'&5476"X]:3:]3"D"&%#C:bV`]W%!-<81VDE$##$E@ZNfbR"-##-D6>>?+,/*??=@!##8BJ2>+../:9CD6-&&% P^29!$HS\[Y[VF=*%%  %CEVU_bUVE@(##}6AUb_UA6-.=]ZY^Bb2R!!#5!5!5&'&'&'&5476767632'%'"3276767654'&'&'&4.(E$##$E@Z-<81VDE$##$E@ZNf:4:]|G5>+../:9CG5>+../:9~(EVUb_UVE@( %CEVU_bUVE@(# P^29`+.<;BA;<./+.<;AB;<./ /M#"'&'&'&54767676327'7'%'276767654'&'&'&"(F3"D"&%#C:bV`ZZ^;D"&&$AB[X]:3G9:]:F=~=<.,/*??z?<.+.(!$HS\[Y[VF=*%%'>HS]ZY^XAA&% iiD^29i..=+../:9CG5>+../:9 \2:a(EVUb_UVE@( %CEVU_bUTG(Hij:ο\ij+.<;BA;<./+.<;AB;<./4/O!!#"'&'&'&5476767675!5!' 276767654'&'&'&#"<-Z@E$##$EDVRbfNZ@E$##$EDV18kbbjC9:/..+>5GC9:/..+>5疑 (@EVU_bUVEC%##(@EVUb_UVEC% kajP/.<;BA;<.+/.<;AB;<.+ /O####"'&'&'&5476767632333'7 '%3276767654'&'&'&#"ܖU (@EVU_bUVEC%##(@EVUb_UVEC% Uܭkaj/.<;BA;<.+/.<;AB;<.+<-Z@E$##$EDVRbfNZ@E$##$EDV18kjC9:/..+>5GC9:/..+>54;2"'&'&'&5476767"327>7654'&'&'&RUEG"##"GEURRUEG"##"GEUC9;\.+>6FC9;\.+>6#&BIRUb_URIB&##&BIRU_bURIB&s\<;BA;<.+\<;AB;<.+42"'&'&'&5476767RUEG"##"GEURRUEG"##"GEU#&BIRUb_URIB&##&BIRU_bURIB&J;"276767654'&'&'&2"'&'&'&5476767R#$$#R#$$=>3443>==>3443>"$)($##$()$"06"@21.2@?FI?@21.5="$)($##$()$""$)($&#$()$'R 5%%%xr6׊eMM^xx)7654'&'575##'&54767'5!nL^A>..>A^L܄bNC#FF#CNbr*NJ!'11'!JN*MI<77aZ% NT>%  #HH  ")mROeb     0         $&$  ' D"&%  $ #  mR )Ky           V!Er26767654'&'."#"'%"'&'&'&54767676;27>764'.'&+"'&'&'&547676762%632$"26767654'&'&.&&.&m,mQjP (!N!"(!'CVf& &bZC'!("!N!( PjoQm,.&&.&q    l?W,># "#" "  " "#" #>,W?~    lOYx3!#!"'&'&'&547676?6767676'&'&'&#"#"'&'&'&547>763276;%326767654'&'&'&#"6767654'&'&'&#"32eOuRd2  HH#   %>TN  +Za>%#+$ 4$$$+$ 's   *    * OK) Rd# !#& "*"D '  ""! 2   T   :      IZx-4H67&'&'&+"'&'&'&476767632%632 #"'%#"'&'&'&54767676;276276767654'&'&'&"276767654'&'&'&""'&'&'&547676762"'&'&'&547676762'&'&'&547654'&'&'&";276-&#"+"276767654'&5476%327%&"'&'&476762I  Q\C--%("(/*0.,+"( /X]\9<\X/"$)0*3')"* %1*0CR[        22 2 2 2 %'   &J  &%C\d#_*]OhXC%&  J&   O]*       ")&`&"'$"/' <%ZS  % SZ%< /'* "%5"-($# ;8\= !  !  " /VC "  !  !  [uV/+    V^n3276767654'&'&'&#"&'&5476767632#"'.54767&54732#"#"676767'&#"'67654 ozwbd011.f_zx|wbd011,k9995ulsp:995un*D$lQ$" 6*D?"5'K(2- #%>   :7 331cdvwwqi`4331cdvwxD>mwn<;;8rowp:;;BV0/+"8:D@*|sa  -F(7 "*=8&0!2   1-5$& 6:B4V^,Ji&'&'%&'&"632%676767654$2"'&'&'&5476767"3276767654'&'&'&'2#"'&'&'&54767676?!*$ 1$-+h+-$F3782* !?1 $> > 9|wbd0111c`zwbd011.f_zxsp:995unsp:995ulwIP"2-.$  "" PI $.-2!v   31cdvwzwcaf31cdvwwqi`43d;8rowp:;;8rown<;x,A-57'36%33#3#!2#!3#3##$'#7$@d5{sVd]F0 0F]dVs{5⒒d@( jPP,PP` 0 ")- !676762!"'&'&'&54!X$#R#+/RFF$#R#$1Sh,  k-"s!|K476?6763&'&'&547632676767654'&7632!54'&'&76'&&#"'&/&'&'&#"#"'&'&/&'&#"&'&'&?6'&'#"'&'&#"!'476/654'&76'327654'&'&327654'&/%4&)"$0JK&  $)7    %1'# #6 +-L __^/s4* 1( .266 |/(1   \   #:7  lS&   x71]% /~[#<$  o_%?,: *(;Y)$X$+|=L!6CX&PY89Do6 b'n2  83eF] 4T&  &  /50$?- 1@& 3l K  C"P1 :07@D:5XI6.D3[+-1:   q/A8   g+jl9Lp{7654'"'&#"+"'&54?67676763276323273#5%6767'&#"6"/67#"27632327654'73654'676547&p/l0&J!cS%YE]{@C"$4>-;% ,(6Y>m!N$X6"/,(4sS?X$U>"sJ?K(`./4+2K2.0>S Zp0+1^' ;cs  /^"|Y/ 428ۇϕl%%ot5oA='Y$ aT* ''G+- %_kj~r}jL`І|\gK@/.85c($")3SZ67654/##3276?%%54'654'36767632#"'&54767632'%;66I   }g A6qn       -> 9@  H67; zh| 9 >6!q     B5> '-EL4'&'&/767675'7! !'!654'!4'!!$4767>2"&'&'!654' 33 ^^^RXI#J2VlP# ~!88!~ Uppph,p<((zd")3SZ&'&#"227654'&'''%'654.#"65&'&'&547632#"'&'&6#"%  I66;o |>A%6!q       9  ;76H    |h> 96qm      BX{[#C'%%.'&"27>7%$6%"'&'&'&47676762%'2&%k      Aڙ> >dIID`qS   SqGYq > q)&%$64'%%&'&'&"27676&22"k**!q``q!3W 2327632#"'&'&5476'( > !~GH ".4F+@xH )0$'*' 27277632#"'&'&5476'( e` }{*279HFb@yJL 1 -A  ' 7 Ɏ877Ɏ77ɍ8ɍ? tt7tt7t7tt7uB2632#"'&'#"'&54767'&54763267632676 Q   x L$3 z(   6X3  6*=P*> "#  Q26#"'#"'&'#'&'#"'&547&'&54767&&5476326763276T 디% $$YyX$ zc0 + j :  (̢1#: _& #- Խ =1 '2ĺ pD #!!!!!%!!!!!!!!#!5!36HVBBXBBUHVPBXyBpD !!!!!!""p"p"#pD35#7!!#!5!3rrsrspD!!%!!!!!!r"p"#p"#Rb !!#!5!3ppEU l3!!'#'!!#!!3!5@,r,,_ r,,_>v #!!!!!'!!!!!!!!#!5!3hm_|P_H_pDQ#"#3;54'&'&'!"3276767653#4'&'&'&+3!52767>5{dZYIB,$22$*DE]Vh{%'GC_Rl|lR_CIJ{hV]ED*$22$,BF\Zd{%'GC_RllR_CIJ&%IB`Oo|oO\FG'$zdZ\GB+%22%+BIdz$'GF\OooO`BH&&{dZ\GB+%22%+BId  #!! !!! 373#'7#ZAA:Llحmllmzlmllm|}}|d d}cT`C54'&54762327632#"'&+"'&5476=#"#"'&476323(L,68x86,L zFvd0000dvFz L,68x86,L zFvd0000dvFz zFvd0000dvFz L,68x86,L yFvd0110dvFy L,68x86,LV^&'##"&'&'&4767>32367675&'&'.5467676236767>32#"&'&'&'#"'&'.546767675&   R.-R  R-.R "  *!""! ((\(( !""!#%   " R.-R  R-.R    %#!""! ((\(( !""!**!""! ((\(( !""!#%    R.-R  R-.R "   %#!""! ((\(( !""!*  " R.-R  R-.R   Sa4'&'&'&'.54767676322767676767632#"'&'&'&'&'&#"'&'&'&5476767676765"#"'&'&'&5476767632($ ((& :.:806$&& )D+:!  '228:/3&$$&3/:822'  )2/@!  '&$6/r/6$&'  '?03'  &d8:02&!$&20:=-2& (20C,7"  &d8:02& $&20:=-2& (10?!  '&$6/r/6$&'  'D+:!  '228:/3&$$&3/:822'  )2/@' ((& :.:806$&& (T`0267632#"'&'&'!&'&'&54676763267632#"'&'#"'&'&'&5476767!6767632#"'&'"'&'&'&54767#"'&'&'&5476767632!#"'&'&'&54767#"'&'&'&476767632&'&5476767632!#"'.'&5476767632&'&54767676Z   ( &            <   4          % (      (   2     6           %    <    %  (   W_276767653"4'&'&'&Wsp:995ullu599:ps;8rown<;;j>-'O^__^Oq44H4"hdd0!% %!-@jjjk**37'7 #'xxxx.xx.x..x  pD #'!5!73!GFdFGrEGdGErFGqFGdGFqGEd@L     - FOFc,OO,cFd,PO,dGOP T` '!%%%!%% % -wD{wwf#w%f{wwy||y{xxf#w%f{wwxEy||y % %  Zp/AppA/}}ET`     - Zq NqqN  NrqN qrT`% % -ZyllylyyT`%% %% -ZtGcVGttGVcGGstGWcGtsGcpD/3%!!%#'''%!5!%777xo:U.cF.d;UǩoxoU:e.Ec.U9oE.f:UūoxoU9g.Ff.U:oxo9U. 54'&5476276767632#"#"#"323232#"'&'&/"'&5476=&'&'#"'&'&547676323232?&547'&#"#"#"'&'&54767632676'K,68x86,L qA'C<4GW>L d  f L>WG4L d  d L>WG4L d  f L>WG4L d  d L>WG4 +F$H$F+ > ;<5 AcJ2QD++DQ2J (5H,'9,J&0f) T|\`j4OO7g`\|T 'g/& H,9',I4( (3J,&9-H &0f) T|\`j4OO4j`\|T 'g/&J,9',H5(""'!$(:UJJU:($!'""nF"276767654'&'&'767632#"'#"'&'&'&'#"'&'&'&5476767#"'&'&'&5476767632&'&5476767632=>3443>==>3443>x>%85670-)-%8/>0!-)-02;>/8%0 )-02;>/8%-'&$>/:#-)-02;>/;))-02;>/8%- 06:4/.&"./4;=16'+&1,"%&!6'+&./4:>1:#"$./4:>16'+,4:>16'+&./4;=1nFn%#"'&'&'&5476767#"'&'&'&5476767632&'&54767676267632#"'#"'&'&'&27654'&'&'&"67&'&'&'276767&54767'&'&#"276767654'&/7676767654'&'&'&#"Z 0%8/>;20-)-!0>/8%-)0-<1:3%>-%8/|/8%->%85670-)-%8/>0!-)-02;>/8%0 M=  H  C# B/g  H *x#$   -7 H  g/B    $#x*%",1&+'61=;4/."&./4:>16'.5 1=;4/.&&./4;=1 5+'61>:4/.&"./4;=16'+&1,"8_/$   $/_c.,b" $#  !I?30C !'#  x!  #$ "b,.$  #'! C03?I T`-[3b &'#"'&'&'&547676763267'&#"327%327676764'&'.#"7632#"'&'&54767676324676762676322##"'&'"'&'.5#"'&'&'&54767"'&'&'&54767676&'&'&'&'&'67676?&'32767677676765&'&'.#"7676767&'&'&/326767674'&'&'67'&'&'&#"67'&'&'&'67676767"276767654'&'&'"'&'&'&54?&'276767654'7654'&'&'&"67'&547676762:   $4 $$ 4$   % !()-+,)$"! ((\(( !"&',+-)(!'7'&"# ,*2% !()-.))$"! ((\(( !"(%*-,*(! #2*&"# "&'     !  4  !   4  g       i 4  !g  4   !     oR#$$#R#$$  8 < c7 < 7    8 < d8 < 6   %),++*) !$3R  R3&!-(-%2(&"#%(.2$( &',+,)) !$3R  R3'! )),,+)$"#%(.2$( "   i !xg   !      %     !  !   g    "$)($##$()$"$  % %% %  V^<\l"276767654'&'&/2#"'&'&'&47676762#"'&'&'&54767676% %-z35++++53z35++++5pWDM69 ;9JHSWDM69 ;9JHSsp:995unsp:995ul}}(.35<;53.((.35;<53.("68MITNLJ;9"68MILJ;9m;8rowp:;;8rown<;}}"327632#"'&'&/#"'&5476=#"'&'&5476763232?'&#"#"'&'&5476763254'&5476276767632#"'&#"27654'&%&'&#"327676%327632 654'&'&#"#"Z*1%85e %ZF\ +m8BS/?JV@6RTXN6@VGB1QB8n* \FZ% e53e!&ZFZ *n8BS/?JV@6RR6@VGB1QB8m+ \FZ&!e3*1%8~> +F$$> +F$H ;<5 A~ ;<5 A+DQ2J (5H,'9,J&0f) T|\`j4OO7g`\|T 'g/& H,9',I4( (3J,&9-H &0f) T|\`j4OO4j`\|T 'g/&J,9',H5(G+DQ2J$(:U$(:U3!'""!'""A''7'753'75377537'7'#5''#5'7#5'7'7<B-OS2#"327676765!"'&54$3!57!##"'&'&'&54767676#   ?>I-7އv3T%+>CPNHiDG-2/&D9  . !-8=DD_o2{jTc@F'%.36<@M137+4V52&'&547676762"'&'&'&5476767Zy*,&&%1]~|45,--,54|45,--,5(+&014|d΃fz410&$(F*.46=<64.**.46<=64.*Nf%C&%&547676762476767622"'&'&'&5476767Z{&%1-l./&%%&/.l-1%&|45,--,54|45,--,5ġS410&$%%1/66/1%%$&014R*.46=<64.**.46<=64.*nF(%%&%&54767676247676762Z_75EAAD6556DAAE57_qKFD6454FCNNCF4546DFKoX'#"'&'&'&547676763"'&'&'&5476767632rJFD6464FBNNBF4646DFJp`84F@NLBD6466D@NLBD66^~* i654'&#"632327632!"'&5!267&'&#"#"'&54763247632327654'&547632#" 6+Jo.^V|;-˙it36?̺fQMeEJS?(*$ s]vh2K)*NL13^v:Mc*ZeC03N35%&-Kt\K%9S >BWN=!$?$8(F!5{^?ZN676 547&'&327#"'#536767&'&'&5432&5476323254'&5432?-BO>Bv06('K`dC+(k$'eM?$#=Hb B=)+8=.m9eb PB>$3g:=TEB7WPfG+1KHP<Ff#&T'0P+A'<}DC/' 5276767654'&'4rceNS((((`hm@DDF/CD}>C/GFCG !&547>2;!!676PJKBA<! !$ ! "#{! !{54&#">32!5!NKKggɈXԺShu6CO*.qL7hlN C,A7%D%xN 6Ÿ7/8/ܸ7и/9*ܸ1A11]A1)191I1Y1i1y1111111 ]49.+. + !'+!+9*'!901! 4$32%4&#">32+32#"&'32654&'>NKKggI^_x;JKMXd][]@j^NreL7hA}|%/).-5316 0_pxN S//ܸи/99ܸ+ + 01! 4$32#!!535#!NKKggK"L7hߣ5xN *+!+A!!]A!)!9!I!Y!i!y!!!!!!! ]+ *+ +'$+'901! 4$32>32#"&'32654&#"5!5!NKKggiw3S[[S;ucW׿!=VL7h(F?>F(=$\xN 21++#+A]A)9IYiy ]A&6FVfv ]A]A##]A#)#9#I#Y#i#y####### ])9/9 +  + +01! 4$32#"&54632"32654&#">325.NKKgg766666676̹Ȣ@nqg1iaQL7hI@@II@@= ;g*xN + + 01! 4$32%!!5!NKKgg.L7h*xN 1=++ +A]A)9IYiy ]A&6FVfv ]A]A ]A ) 9 I Y i y ]#9/9;9;/A;;]A;);9;I;Y;i;y;;;;;;; ]5+ )+ +28+201! 4$32#"&5463232654&'>54&#"2#"&546NKKgg=;=>?<;=p$f˻e#q0330233L7h;99;;::G]| pS{{Sp |-..-.-.-xN &21+-'+-+A]A)9IYiy ]A&6FVfv ]A]9#9A'']A')'9'I'Y'i'y''''''' ]+ + *0+*01! 4$32254&#"3267#"&'4632#"&NKKgg͸Ȣ?nrf3i_O76588567L7h !;f)HBBHHAAxN $0+(+("+".+и/A]A)9IYiy ]A..]A.).9.I.Y.i.y....... ] /++01! 4$32!5##7#"&54632"32654&NKKggِ&*''*)'')L7h*& nmmn =(F  76767654'&'&'!5%3!!  '&'&'&5476767̆mo5885om4mo5885omP\|~}~~}>@@>}~~}> =A_  76767654'&'&'!!5676767654'&#"5>32  '&'&'&5476767̆mo5885om4mo5885om)4 \)NBCkPQT`aFnoIkl\|~}~~}>@@>}~~}> =Om  76767654'&'&'#"'&'5327654'&+5327654&#"567632  '&'&'&5476767̆mo5885om4mo5885omttBAzyLOPUDWOPJJx??zBLL\R[PGjkr=\|~}~~}>@@>}~~}> = +I  76767654'&'&'!33##!5  '&'&'&5476767̆mo5885om4mo5885omh*˪+\|~}~~}>@@>}~~}> =?]  76767654'&'&'!!67632#"&'532654&#"  '&'&'&5476767̆mo5885om4mo5885omz##$#utKSLHMVA@AC\|~}~~}>@@>}~~}> =,Jh  76767654'&'&'"327654'&.#"67632#"'&7632  '&'&'&5476767̆mo5885om4mo5885oml@@lm@??@=|}~~}>@@>}~~}> =$B  76767654'&'&'!#!  '&'&'&5476767̆mo5885om4mo5885om\N\|~}~~}>@@>}~~}> =+BNl  76767654'&'&'"27654'&%.546  &54632654&#"  '&'&'&5476767̆mo5885om4mo5885omsBBBBCBBBhtdthuABtԄ9tihvvhit0\|~=>>>kl>=EggOOss\hh\]hh@>}~~}>@@>}~~}> =<Lj  76767654'&'&'532767#"'&54632#"'&27654'&#"  '&'&'&5476767̆mo5885om4mo5885om=|m@??@ml@@@@J\|~}~~}>@@>}~~}> =+8Ca  76767654'&'&'"32654'.  7!5##7  '&'&'&5476767̆mo5885om4mo5885omT,+VUVV++2QPPQΠP3x\|~-,g#&%q @>}~~}>@@>}~~}> = (!5!#%  '&'&'&5476767{\|~}~~}>@@>}~~}> =#A676767654'&#"67632!5  '&'&'&5476767lkIonFa`TULkCBN)\\|~}~~}>@@>}~~}> =1O>54'&#"67632+32#"&'327654'&  '&'&'&5476767irklGPQ\\LLBz??xJJPOWDUPOLyzAB2\|~}~~}>@@>}~~}> = +! !335#$  '&'&'&5476767hno\|~}~~}>@@>}~~}> =!?67632#"'&'32654'&#"!5  '&'&'&5476767CA@AVMLHSKtu#$##\|~}~~}>@@>}~~}> =,J2#"&5476.#"32654'&#"67632  '&'&'&5476767Pm@??@ml@@C|=⇆nmϵihVGG/ TU<|=\|~}~~}>@@>}~~}> =$!35$  '&'&'&5476767>h\|~}~~}>@@>}~~}> = $0N2"'&476' 654'&'>54& 74632#"&  '&'&'&5476767YtBBBCBBBB/tBAuhtt-tihvvhit0\|~lk>>>=>=EssOOgg]hh]\hh@>}~~}>@@>}~~}> =.L%3276'&#"32767#"&'"'&547632  '&'&'&5476767!C>?=ↆmmдhiVHG. TU<|=Al@@@@lm@??@\|~}~~}>@@>}~~}> = %C2#"&5476$  '!5##7  '&'&'&5476767e22dedd22TUUTBU¡\|~-/g#&%q @>}~~}>@@>}~~}>uPj !!5!!Pp#@pppt 7%FN4NGuP85 zD<22pJJt '-ZKFGNuP!!u\lE>~~>uu2"&'&'&5476?!".'&47>3!'&'&54767>2 p4, ,$ $, ,42p "2" puP8!5! %JZPJJuP8!5! %JHJJuP8 #3#3#3!!5 xx<<oJpppJJuP8 55!#3#3#3oPxx<<΄ΊXXXXuP8!!5 %JJJPD! 6>l>>PD ! DR>l>>P  BlvvuPb3!5 5!"'&'&'&u##+*15J1*+##0+*%!JJ!%*+uP847676763!5 5!"u##+*15J1*+##0+*%!JJ!%*+0!! ^r{VXeoouP855!Dq΄Ξ0uj%5!!53  !<9h9>uj%5!!53  !<9h9>+Z !73#57!!+ Id&+ъ2&+Z 5!'53#'!!!+dI|&22 !'!'!53 !Odcndh 2 3#5!7!!! ndnd;ch dd !53#'5!'! !]n2n22r-hJdc;dJdd 7!573#5!! !2+2n2nr-hLJd;cdJ<!6767632#"'&'&'! <'CZmo~yti^Z...*^Vqo~yti^?)X6nGCZ.//+]Yonzqi_X0//+]>Iʞ BP "&*.37#37#37#37#5!!!!3'#3'#3'#3'#<<< 7&#"7'7 !%*BF8WU{FC*9oX:WubP 55!5!!'!XXddPRt '327'' !!iFB*8X:*CF9XUpt>2%&#"6767&'&"67632&'&547676767tBEHY'#&N'$X$)./,0+""" /%Hp*G&/$##*0,0.+"W!'&'&#'ZGGCuaP/4767!"!47676763"'&'&'&5!3!&'&5P%T)#$"/*11*/"X$#)%eeZ'&$(0+.!"-+0($&'Zet2&'&'&'&54767#"'&'2767&'&'32t)H% X"""+0,0-+"$'N&#/'YHEBCGGZ'!&'&'$W"+.0,0*##"/&GsPX+B6%"'&'&'&547676$47676762"'&'&'&'&'&547676762$/+z > _$#R#af#R#) >xbQu R$'68"   vc<.676767632#"'&'&'&%&'&54767&'&5476A ''+/54<3o8n23'9%%bb%&:?$ fLLf#&#/:&'+-23-+'rr'+-32-+V2e"'&'.54?654'&'&'&#!"#!".4?64/&4676763!23!276767654/&546767622 Z rrd Z   c     c  2g"'&'.54?654'&'&'&+"#!".4764'&4676763!2;276767654/&546767622pW\xj  \W    4  uP^+#76767&'&/3#6767!5!!5!&'&'PSJl R&GG&R lHSi*n: :n**OUä'66'U=;JHd)))dHJ;=#u ! ! j.u-1 \ ] ' \ \' ] ],@ !,,+ !,,@' !, !,, !,,@' !, !,,+' !, !,,@' !,' !, !,@ !,@' !, !,@' !, !,@' !,' !, !,@' !, !,@' !,' !, !,@' !,' !, !,@' !,' !,' !, !+ !,@' !, !,+' !, !,@' !,' !, !,+' !, !,@' !,' !, !,+' !,' !, !,@' !,' !,' !, !@' ! !,@' !,' ! !,@' !,' ! !,@' !,' !,' ! !,@' !,' ! !,@' !,' !,' ! !,@' !,' !,' ! !,@' !,' !,' !,' ! ! !,@' !, !,+' !, !,@' !,' !, !,' !, !,@' !,' !, !,+' !,' !, !,@' !,' !,' !, !@' ! !,@' !,' ! !,@' !,' ! !,@' !,' !,' ! !,@' !,' ! !,@' !,' !,' ! !,@' !,' !,' ! !,@' !,' !,' !,' ! !+' ! !,@' !,' ! !,+' !,' ! !,@' !,' !,' ! !,+' !,' ! !,@' !,' !,' ! !,+' !,' !,' ! !,@' !,' !,' !,' ! !@' !' ! !,@' !,' !' ! !,@' !,' !' ! !,@' !,' !,' !' ! !,@' !,' !' ! !,@' !,' !,' !' ! !,@' !,' !,' !' ! !,@' !,' !,' !,' !' ! !,p !,p,p@' !, !,p,p+' !, !,p,p@' !,' !, !,p,p' !, !,p,p@' !,' !, !,p,p+' !,' !, !,p,p@' !,' !,' !, !,p,p@' ! !,p,p@' !,' ! !,p,p@' !,' ! !,p,p@' !,' !,' ! !,p,p@' !,' ! !,p,p@' !,' !,' ! !,p,p@' !,' !,' ! !,p,p@' !,' !,' !,' ! !,p,p+' ! !,p,p@' !,' ! !,p,p+' !,' ! !,p,p@' !,' !,' ! !,p,p+' !,' ! !,p,p@' !,' !,' ! !,p,p+' !,' !,' ! !,p,p@' !,' !,' !,' ! !,p,p@' !' ! !,p,p@' !,' !' ! !,p,p@' !,' !' ! !,p,p@' !,' !,' !' ! !,p,p@' !,' !' ! !,p,p@' !,' !,' !' ! !,p,p@' !,' !,' !' ! !,p,p@' !,' !,' !,' !' ! !,p,p' ! !,p,p@' !,' ! !,p,p+' !,' ! !,p,p@' !,' !,' ! !,p,p' !,' ! !,p,p@' !,' !,' ! !,p,p+' !,' !,' ! !,p,p@' !,' !,' !,' ! !,p,p@' !' ! !,p,p@' !,' !' ! !,p,p@' !,' !' ! !,p,p@' !,' !,' !' ! !,p,p@' !,' !' ! !,p,p@' !,' !,' !' ! !,p,p@' !,' !,' !' ! !,p,p@' !,' !,' !,' !' ! !,p,p+' !' ! !,p,p@' !,' !' ! !,p,p+' !,' !' ! !,p,p@' !,' !,' !' ! !,p,p+' !,' !' ! !,p,p@' !,' !,' !' ! !,p,p+' !,' !,' !' ! !,p,p@' !,' !,' !,' !' ! !,p,p@' !' !' ! !,p,p@' !,' !' !' ! !,p,p@' !,' !' !' ! !,p,p@' !,' !,' !' !' ! !,p,p@' !,' !' !' ! !,p,p@' !,' !,' !' !' ! !,p,p@' !,' !,' !' !' ! !,p,p@' !,' !,' !,' !' !' ! !,pp !p,p@' !, !p,p+' !, !p,p@' !,' !, !p,p' !, !p,p@' !,' !, !p,p+' !,' !, !p,p@' !,' !,' !, !pp@' ! !p,p@' !,' ! !p,p@' !,' ! !p,p@' !,' !,' ! !p,p@' !,' ! !p,p@' !,' !,' ! !p,p@' !,' !,' ! !p,p@' !,' !,' !,' ! !pp+' ! !p,p@' !,' ! !p,p+' !,' ! !p,p@' !,' !,' ! !p,p+' !,' ! !p,p@' !,' !,' ! !p,p+' !,' !,' ! !p,p@' !,' !,' !,' ! !pp@' !' ! !p,p@' !,' !' ! !p,p@' !,' !' ! !p,p@' !,' !,' !' ! !p,p@' !,' !' ! !p,p@' !,' !,' !' ! !p,p@' !,' !,' !' ! !p,p@' !,' !,' !,' !' ! !pp' ! !p,p@' !,' ! !p,p+' !,' ! !p,p@' !,' !,' ! !p,p' !,' ! !p,p@' !,' !,' ! !p,p+' !,' !,' ! !p,p@' !,' !,' !,' ! !pp@' !' ! !p,p@' !,' !' ! !p,p@' !,' !' ! !p,p@' !,' !,' !' ! !p,p@' !,' !' ! !p,p@' !,' !,' !' ! !p,p@' !,' !,' !' ! !p,p@' !,' !,' !,' !' ! !pp+' !' ! !p,p@' !,' !' ! !p,p+' !,' !' ! !p,p@' !,' !,' !' ! !p,p+' !,' !' ! !p,p@' !,' !,' !' ! !p,p+' !,' !,' !' ! !p,p@' !,' !,' !,' !' ! !pp@' !' !' ! !p,p@' !,' !' !' ! !p,p@' !,' !' !' ! !p,p@' !,' !,' !' !' ! !p,p@' !,' !' !' ! !p,p@' !,' !,' !' !' ! !p,p@' !,' !,' !' !' ! !p,p@' !,' !,' !,' !' !' ! !p,p' !,p !p,p@' !,' !,p !p,p+' !,' !,p !p,p@' !,' !,' !,p !p,p' !,' !,p !p,p@' !,' !,' !,p !p,p+' !,' !,' !,p !p,p@' !,' !,' !,' !,p !p,p@' !' !,p !p,p@' !,' !' !,p !p,p@' !,' !' !,p !p,p@' !,' !,' !' !,p !p,p@' !,' !' !,p !p,p@' !,' !,' !' !,p !p,p@' !,' !,' !' !,p !p,p@' !,' !,' !,' !' !,p !p,p+' !' !,p !p,p@' !,' !' !,p !p,p+' !,' !' !,p !p,p@' !,' !,' !' !,p !p,p+' !,' !' !,p !p,p@' !,' !,' !' !,p !p,p+' !,' !,' !' !,p !p,p@' !,' !,' !,' !' !,p !p,p@' !' !' !,p !p,p@' !,' !' !' !,p !p,p@' !,' !' !' !,p !p,p@' !,' !,' !' !' !,p !p,p@' !,' !' !' !,p !p,p@' !,' !,' !' !' !,p !p,p@' !,' !,' !' !' !,p !p,p@' !,' !,' !,' !' !' !,p !p,p' !' !,p !p,p@' !,' !' !,p !p,p+' !,' !' !,p !p,p@' !,' !,' !' !,p !p,p' !,' !' !,p !p,p@' !,' !,' !' !,p !p,p+' !,' !,' !' !,p !p,p@' !,' !,' !,' !' !,p !p,p@' !' !' !,p !p,p@' !,' !' !' !,p !p,p@' !,' !' !' !,p !p,p@' !,' !,' !' !' !,p !p,p@' !,' !' !' !,p !p,p@' !,' !,' !' !' !,p !p,p@' !,' !,' !' !' !,p !p,p@' !,' !,' !,' !' !' !,p !p,p+' !' !' !,p !p,p@' !,' !' !' !,p !p,p+' !,' !' !' !,p !p,p@' !,' !,' !' !' !,p !p,p+' !,' !' !' !,p !p,p@' !,' !,' !' !' !,p !p,p+' !,' !,' !' !' !,p !p,p@' !,' !,' !,' !' !' !,p !p,p@' !' !' !' !,p !p,p@' !,' !' !' !' !,p !p,p@' !,' !' !' !' !,p !p,p@' !,' !,' !' !' !' !,p !p,p@' !,' !' !' !' !,p !p,p@' !,' !,' !' !' !' !,p !p,p@' !,' !,' !' !' !' !,p !p,p@' !,' !,' !,' !' !' !' !,p !pg  5  5'' 3 5j'  #3 < { 'e   ''6UU'e  '''cUU'e  '''cUU'f   'fU::U'f   'fU8U#u  u-:O :!!" 767>54'&'&'&$  $'&'&547676zeig44hi}&eig44hlzVGFFGrGFFG.48fj~fh4666fj}fk34ūʪ:O6B" 767>54'&'&'&$  $'&'&547676!!#!5!zeig44hi}&eig44hlzVGFFGrGFFG  48fj~fh4666fj}fk34ūʪ  :O6B" 767>54'&'&'&$  $'&'&547676   ' zeig44hi}&eig44hlzVGFFGrGFFGsqrq48fj~fh4666fj}fk34ūʪqrqs3 z&''.c#5!67676&!!'&'7767:# mDK6I%'&'7767'&'&'&54767676767676&&'&'67k?J " mDK6>>?J " mDK6 ՜U5O9:[>?JKVXKK>? 'U5O9:[":;PG*# nb11S$ .D77'6767&'&&'&'&'&5#'76767676767657'#, ]d)B;6KCm H6-*%'>CX(+A<6KDm  \9[:9O5U,*7<7]Y]ETUa[h.c'!!'7676?!!76767&'&!! B<6KDl  A<6KDl 6[:9O5Tض[:9O5UN.c;?%676764'&'&'76767&'&636"''7676?6!!YFI$$$&DTlA<6KDm "A-4//N&N.+:DH!A<6KDm . T&FIWWY]DU$[:9O5U,N/,95\N):[:9O5U|.5;!!#"'&''$76?7>54'&#"76767&'&676 Ol^?Ca6-A<6KDm WH74 A<6KDm ,SWM,;N6(8[:9O5UAG$eю [:9O5U|$ .cSW67>54'.'&&767676&'&'776?&'&'&'&4767676!!A8+.N&N//44//N&N./( mDK6ÄkTFÄkTF32326#"'&'&'&#"5>32326 5j`k^Xbian ^Vgj`k ^Xbk`k^VfUPE:=MSNE;=KPE:=LTPE:>KPNC ;B#"'&'&'&#"5>32326#"'&'&'&#"5>32326 5j`k^Xbian ^Vgj`k ^Xbk`k^VdUPE:=MSNE;=KPE:=LTPE:>KPN %!!'7!5!7%5O’OK>uMc u̵N5!!'7!5!75%O’OK>;ju 3:3267#"'3267#"''7&#"5>327&#"5>32 5C2'Vgj`@L&zOVgj`kFF2'Xbk`?M&zOXbiajE KUPEq,KUPE:E LTPEs+MSNE8PN 3:3267#"'3267#"''7&#"5>327&#"5>3255%C2'Vgj`@L&zOVgj`kFF2'Xbk`?M&zOXbiajE KUPEq,KUPE:E LTPEs+MSNE85!5!-5 %%\ri!5!!5!%%55%\iw:&#"'&/&#"5>32326!! 5j`k^Xbian^VePE: =MSNE;=KFPN:&#"'&/&#"5>32326!!55%j`k^Xbian^VePE: =MSNE;=KF ")#"'&/&#"5>32326-5 %%j`k^Xbian^VePE: =MSNE;=Ko i ")#"'&/&#"5>32326%%55%j`k^Xbian^VgPE: =MSNE;=KoiB!!!!55% %%|3WiB!5!5 %%55%Ei,55%-5 %%vi,5%%5%%55%QTi{ 55<1 5 5<1LJ113#55<b13#5 5<b1LJ11m!5!!5!5`NPm5!5!-5:[ 555PPNP[55-5#;p$.#"#"&'532767676325gV^ naibX^k`jUK=;ENSM=:EPKNPp$.#"#"&'53276767632-5gV^ naibX^k`jUK=;ENSM=:EPK%,!!!!.#"#"&'532767676325gV^ naibX^k`j|UK=;ENSM=:EP[NP%,!!!!.#"#"&'53276767632-5gV^ naibX^k`j|UK=;ENSM=:EP[-@ $!!!5!676762!!&'&'&!!A%0M 6WYYV7 N0/H7'H?a93[2332[0~~K|}CMuuUSx|y 7!!!'7!%5$>~~K|}CMuuUSx|]a!5!5%5$-&obn%$ffuW]a!5!5%$bo&-nuf$%a %5$!!!'7!5!7!5!7-&ob,JXv2Jv2D%$ffuWXuWuWa %$!!!'7!5!7!5!7bo&-,JXv2Jv2Duf$%tuWuW;F#"'&'&'&#"5>32326#"'&'&'&#"5>32326%5$j`k^Xbian ^Vgj`s ^Xbk`k^Vg-&ob PE:=MSNE;=KPE:=LTPE:>KR%$ffuW;F#"'&'&'&#"5>32326#"'&'&'&#"5>32326%$j`k^Xbian ^Vgj`s ^Xbk`k^Vebo&- PE:=MSNE;=KPE:=LTPE:>KRuf$%y3>3267#"'3267#"''7&#"5>327&#"5>32%5$C2'Vgj`@L&zOVgj`kFF2'Xbk`?M&zOXbiaj-&obE KUPEq,KUPE:E LTPEs+MSNE8%$ffuWy3>3267#"'3267#"''7&#"5>327&#"5>32%$C2'Vgj`@L&zOVgj`kFF2'Xbk`?M&zOXbiajbo&-E KUPEq,KUPE:E LTPEs+MSNE8uf$%q5%5 5P#PPNq55%PfP%!%!!W7 r%!!!W7 %!!,7r=zp~lO76lNf%2654&+! !.+;# yiiyL'O>@?f7q^m{x3 326=mEHrVepcM"UhCsUst -Peetf]+l^j^Ÿo'..[%m)B333!;!"'#&5#33_>\oMA^;3ÞN7:[>t*y )54'&'&'&#"!!67632!!$$.p@@fQ[[nedgo77#WVb./ww3q"y!! 3!#!fwKK-\% !!!!5!s!7A\` !!!!5!uN`fN!!'7'67632%7654#&&vgGwhHl nd&P#/3Y).=8#?H%*Ku!!!!8u`!!!!fc`V'j2!$763676'&+*6j@@TU}dxaEFb'5!!5# !226&#"mb_+ނyzf%32654&#!.+;# !3 =yiiyDO}@f7q^m{xs!Ey4{B##%R8>e)m''F@ ) !E#T(<2<<1@ ! '!/<22<2220#"!54763!#"!!!!!#354763LffL2fffDNNWXDN``NWX+BI@   ET<2<<991@    /<2<2990!!#"!!!!#35463iJK:k$7DN``N'B@@    ET<2991@  /<22990!!!"!!!#3546{L<)7DN`N'@*.V@+ 0,  $E"&T/<2<<<<1@#.$+ *$!/<<22<<2220#"!54763!#"!!!#!!!#354763)!LffKkfff\iDNNWXDN```NWX'B)M@ +  #E!%T*<2<<1@"# )# /<<22<2220#"!54763!!!"!!!!!#354763LffLfffDNNWX)DN``NWX'H-#"!#35476;2!!;!"'&5#354'&"Lffֺffq\XY)DR`NWXXWN%NXYNDjU&547632!!;!"'&5#354'&#".#"!"'&'32654'&/.54632~Ƈr\XY+(E;2-'s_f12&%a?Y_ownkpqtij$ r?@u_]_\L%NXY?0&$)&80%005+ (KP%4:902h!% 546?>54$#">32!tB*D@^N]yfQV`59@jBihB--K>9Yb(*BCOF.\4:bR1dmf@10!#f;@ 1<203#%3#mN810K TX@878Y@ //]!#3\#@  @! $  $999991<29990K TX$$$@878Y@\             ##+]]'&'&#"#465463232653#"&8- (kW%J';'%'kW&F#<2j'<9j810K TX@878Y@ //]#yE@ 91<90K TX@878Y@/// ]!#'#f4߲DzyK@ 91290K TX@878Y@//// ]373f߲DzP S@  120K TX@878Y@///// / ]332673#"&`LL`=<<=w*10K TX@878Y!!w @O?]1<20!#!#ı`#!##53#73#'3# 3#3#'3#}}d 3#3#'3#}}d3#3#d 3#3#3#3#dd"%'$&7!327676'!;# +~@f3HT͜1@"f62kK4)MM \^Z[B/IVqgK-MEUX #!3276=!UD@bD,1fsa\,1jXX!#"'+3276=!;XnMMnbD,1f1,Dbmm,1jj1, ,:;#"'&''$&7!! 7&'&54767632654'&#"P}/k@:Gd7k@f3HY@ 1shƍW4$c{xx--@:b@RQT4,8*:79Q  U #!3276=!3#UD@bD,1fsa\,1jX!#"'+3276=!;3#XnMMnbD,1f1,Dbmm,1jj1,ٖ %4'&"27>"'&47623J22J?@?@@?@$2%&2@@@@@??R' &  }' ' R X' ' R '  j'  X'   /I;#"'&'&'3 7!$'&54767&$3 &#&7&'&567632&#"?I=TBVyG<2mSgZ-ΤKȜfT_`" 4N650B>F:*?mBF:*?m  #2H BL\O%""$E=Z !"(j+(} 04Mh(B+3276767&'&'&672;#"'&7&'&567632&#"?Rc¾d΋m`_Kq^GHK/;WBVk4N650B>F:*?m ; ``(=<<=f&%!#327654'&'&'&#"!!67632RNA !78Gtoqwwvv #CG~"SI#.&:=` !3#!#53f`JD`!!3#+"'#5$%3"'"3276f8sZlq 3@h^+f&`0cvL9.XR'q> XXY' cqXR' Xq>X6u'  X4Xu'  Xdu' lq du'  q aAR' Sq>BX5v'  XaAY' S cBb5m' w taAu' x SCcpo' u "yCco' u QyCc5' u a>' P l>6u' P N> u' P l> '< PCct'n us'Z!!pp53265!!"&ITc\_JrX\t 4 &!373! 7676'4'!;#"`ó&75OI4f ":,IV FQ9beDCmey" };, &%! 7676'4'!;#"&75OI4f ":,IVQ9beDCmey" };,8%%%$&7!7676!;#" 373p@fG=Nf1,D^BóRaUL!\fr"-4LajM1,~F !+!276373U1,Dbe@Dósj1,\aFX#32765!;#"'#373bD,1f1,DbnMMnIó,1jMj1,mm~F,3:#'$'&7!32765&'&'&5476763 ;#"'&#"373ľT@fF36 0J2LgV5=nZD-9Bó)i[eD*#("% %Tb/I#&,xF@ #!3276=!%373 3#'3#UD@bD,1fó@sa\,1jFHX@#!#"'+3276=!;373 3#'3#XnMMnbD,1f1,Dbó@mm,1jj1,FH r!%! 7676'4'!;#"373&75OI4f ":,IKVxóQ9beDCmey" };,,F 5  KSKQZX8Y1/0@ P ` p ]!;#"&5fLf{\ %&'&'32&5!;#"'&''"'&5476_)-Daf#)D K\GBl8:j=(3 #60!ȎR,"#A0DΤ2_<22rmrW .f+B{s/) mRo b\}j331 fwwf3ff)u 1 =+'\^fXX\mX{'\RVX\j7dH)7\}J+RomZm {u+HdHdHh1 1 1 1 1 1 fwwwwA!fffff-fXfXfXfXfXfXbXXmXmXmXmX#XXXXXXN771 fX1 fX1 fXfXfXfXfX\!\wmXwmXwmXwmXwmXf\f\f\f\R A$,|3RRt#ifXfXfX VfX)))jjjju u u =dH7\\\\\\{'}tQ4ffX!t\Ywhw{fX\| 3R Vfl_fXAt5wju '7\\..T Lu.T LJEZ  q L b\| pp1 fXfXmX1 fX1 fXbXf\f\3RfXfX.Y q L b\f\ OL1 fXbX-N1 fX1 fXwmXwmX/fXfX)w)ju e\y}EX\\1 fXwmXfXfXfXfX7\\1uj\AQV 01 wmXcT\) 7fX\\XXT\V\mXmXytn\nnnV\\X33]]xVVVRX#jXEXth_{NN3#j#jjR{j]'\7dH7\y\ Y uJJJJSnzXPV\JJ ?\ \ =\&o6'V=.R.jHPHnnnnnI.Vs+   //  sm^s^m]] wVKIn DM/\e{ K\e5WwbVg;Mf!g\kT$pp hjjXfXeX[a5  '/1 1 w\f31 fwu f+'s7FctngcsYtnYX=sYXTVX;X+gB)4ZX'gXgX5oIh**_{.ofXfXw|GZr-fxf\l*W4^Ol^dfu97oXf((fDDfDww fA <^  3+;1  {w/3^ffu +;f+'lw dJ d))fXX.vsmX&d qXX7q)~(<#+mXmX.Xj#Z 7fXd(3 fX otQhfWX  y}EXfXfXfXfX871uXrXt0.:.*wZ[/&d3 3 30R28(v 0#fXfXu 77+') w~w~w6z 6z /&3 6q+tw~v1 fX1 fXbXwmXhmXhmX/&d. YfXfXfX+;7+;7+;7w~.J<Z F%Z\ 6"+ fX ltn7bX'X'xtnZ PXXHXHXHXX[rh#+#+'7dH\.tP7rh?qwv/vqvqv#@7vvv6vv7v7vH@Ovvpv&mmmmmmmmmmmmmOmmmOmmmmmmmOmmlnv8S@!mnmmlnv8S@!7v]mOmOmmmmmmmm@mmmslmmmPmOmm~mmmVm`m+mmmm2lmmWm0mmmgm1 fXfX\\\\\wmXwmXwmXwmXwmXw{'f\/\N LR!3R3R3RB$^VVVfXfXfXfX))))Djjjjju u u u 1 71 7=dH=dH=dH=dH=dH+')+')7\\\\\\dH7fX{'1 fX1 fX1 fX1 fX1 fX1 fX1 fX1 fX1 fX1 fX1 fX1 fXwmXwmXwmXwmXwmXwmXwmXwmXkfXfXfXfXfXfXfXl_l_l_l_l_7777cccccccc1 1 TY{tntntntntntnU[/k   p n@7HXXXXXX"w  lggggggggq y dXXXXXXXXE  9cctntnXXggXXcccccccc1 1 TY{   p nXXXXXXXXE  9ccccccc1 1 a51 wwoE)/,AQ]gggggg)^^XXXXX '7mwV RoRo    BBBB53''V BB(( ((( (LL/)>FV/)3/ls=8x( dp  <m8aNTMA999NoNgn<{mZ8aNTMA999NoNgmmmMmoMf<}VX $ <O><u "Ff X===)f +) ')?j EnfSWl,L( ?'\7'731 }w;Zg QF7*FmCTHdHmHdHmHZH8HdHaHdHZHaHTdE1   a +'' A'f7  ) X\V Ok OkfXduddu dud\dudududdZZd.ddduud`dd_u_ddddududduZududu76H6666666Hzz6u`ududdud7u71 bZ;ww`,,,,LL)dVhR3 VLVLVI[,bb55553n3 \3N /zzZyz``555PPPPWWPPPPPPPPzzzYW  a a C,,,,, C,,,WdOl- x]]ssss\xxxxxxxxxx''''''''''''''''''''''q''''''''''llgg'''''''''''''''''pprppppppppp7p7''''''''''ppppp'''',h,d,,,,+,}}_}} ,,,B,d,,,,,,,,,,},,,dZd2E\,,,,,,,,,,,,,,,,,,,,,,,S,,,,,],,,,,m,,E,,,,A,,,U,,Q,0,,,U,,L,0,C,,X,,B,,X,,,x, ,,,,,,,,,,,,,,1,,,,,,,,,,,X,X,j,, T},y,},),,,,,dEGb  gT VIVVx+5X3ppppR >pTVSTWW0V000002p@TTTTpnnTVaaTT,f,z,z,z,z,xx>NnX~#9Uwlfxxxxxxxxxx                    uuuuuuuuuuuuuu++<uusu@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,__::: J33*''''   )fB3R\\7N1!Bb)X{'+'''w'(j2mmwxD =6j=DxDxD&]xxxxx4xxxaxBxaxBxaxCxCxCxaxlxNxlxCs=ss$DD!, 79k:;Y<&:$&$&$&$&$7a$8$9u$:$<<$Y$\$$$$$<$$$$a$&a$*$,$.$0$2$6$8<$9$:<$a$<$$$$$<$D$r$D$ r%9%:%<%%6%8%:%%%%%&/&6&&&&&& &&"&&&&K&K'&' >>?@?@@p@ATABCDDhDxDEE`EEEEFGGGHI,IIJPJK(KLKpKLLMdMN,NOO\OOPPxPQ8QQQRRPRRS4SSTTDTTTUpUVWXWpWWWXX0XtXYYHYYZ$ZZ[@[[\4\\\]]]4]^^\^^_D__`(``aa(a\a|aaaabb,b<bLbdb|bbbbbbcc,cDc\cccccdd(d@dXdpdddddee0e\eteef0fg\ghi iijdjtjjjkTkkkllLmmlm|mn<nloo,ohoxooooopHpq4qrrPrrss(slsstt(t8tHtttuuutuuvvvw w<wwwx,xdxxxyypz,ztz{{P{| ||}~4~h<t` \<l8|p(<Pdx \h\ xL(HT4d`X8T|d8Ph,D\t4Tl(@Xp0H`x(@Xp $<Xp0H`x 8Pl0H`x4Ld|(@Xp(Hd| $<Tl,H`x 8Ph(@Xp0H`x $D\t4Ld| $<Tl,D\x 8Ph,D\t 8Ph(@\t$<Tl,D`|,D\t $<Tl4Lh(@Xp 8Ph,D`| 4D\l $<Tl,D\t4Ld| $<Tl,D\t,<Lt,<Td| 8Ph $<Ld|”¬ 8HXpÈàø 8HpppppppppppppppppĠİ@pňŠ `ƄTǸP<Xtɠht̬̔$H͐ (ΈΜ 8\tϐ(DЀи8LрјѸTҐҸ`ӌHԀ$HՀ|֤P H؄,@Th|ِ٤ٸ0DXlڀڔڨ$pܰ ݴ((8\,80X p4\tH,|Tt8HX `@$xh8Xx8P`x0HXp0@Xx 0@hd t     H x   8X$`(8L(`D(Px\4PlH,ld $ d  !4!!"4"|"##P##$$H$$%$%x%&0&''d''(@))4))**t*+$+++,H,-d..P./l//0T1L12 3 3d3334445556D6X67,7D7\78889::::;x;;< x?ABCEE8E\ExEEEF$FDFGGdGH8HI,IJdK\KLMNNtO0OOOOPP@P`PQ4Q|QRRPRST TUULUUVLVVW,WWX@XYYYZ0ZZ[x[\]T]]^`^_$_`_``a(abbPbccpcddeeefXfpfgg,gh(hPhti@ijklHm@n$nopq qr rhrsslsstxuuv\vvwTwwx$x`xy8yz<zzz{{P{|{{{{|D|||},}}~~p~$t4p|\ `L$`4HhD0T4d$@x,Hl`D|8`|`t8Tp,x4Pd|4L@P,Xt<X (Tp,Ht$X,<4Ĥ8ŐDƬ$LǤpHxɼ8PhDl˔Hp\͜\\,TЀМ @ތp|4HxX x|$p  8  T4h@XP"X#$$&<&\&|&&&&''<(*,.T0X124|678@98:\;=??AdBDHFGIDJKDLMhNhPT VXZ\_a|bde4f8fghijtjkm\olop`q(rssuvy{}~<0Px dXh PhX``<h\x ,$8LDʀ`Մ,׸hܰ |D<xLLPDl,8 t@XDp$$d0  Xl4 l`0 `40 , !"###$$,$X$$$%%,%X%&,&'))+ ,-\/1335 6d7P8l9:;=>@>?@AABC<D(EEFFHFtFFGtGGHHlHHHIIhIIJJ`JJKLKKL@LM MNNPNOPOPQpR S8TpUUDUTUdU|UUUUUUVV$VHV\VxVVVVWWHW\WxWWWWXXHXdXXXXY(YTYYYYYZZ8Z\ZZZZ[[<[h[[[\\,\X\|\\]],]X]]]^^L^^^^^__8_\____``<`h```aa,aXa|aabb,bXbbbccLccccdd<dhdddeeDexeef fHflfffg$gXgggh(h\hhiiDiiiiijj8j\jjjjkk<khkkkll,lXl|llmm,mXmmmnnLnnnnoo<ohoooppDpxppq qHqlqqqr$rXrrrs(s\ssttDttttuu<uhuuuvvDvxvvw wHwlwwwx$xXxxxy(y\yyzzDzzz{{8{d{{||4|h||} }H}}}~(~\~~D4x<P$\|@,@$h<0``8|Llp$hl0P l0HdXhX< @lL|XD$ P |\x<0$|ld,Dh$\P0H,°`|8l4ȀȠHx8Tpʌʨ4Plˈˤ,H̄X,Έ@ϤЌl .b+@   >bt| DD ?:0*ln p))rQQtrrv~~xz|,,//     ` `"$?N?N?O?O?P?Q?Q ?R ?8?9?.??ʿ?????? vqjz( -.01Tz 0`$$b)(d0/h75l;;rDDtFFvIIxLLzOO|RR~XV         `??ݿ??տ?????????ǿ?ƿ?ο??ѿ??Կ?ȿ  >n "" ???6CBA8T. $&>>6     !"#$%&'()*+,-./012 ` `"%(+.1 47:=@C FILORUX[?¿??ſ??ȿ??˿??ο??ѿ??Կ   ?? ? ?#?&&,)(/,(2/.? 11843?64?99A<:D?=?@@JC ~~72,g  N (4;; <9<==^ =>/ 0      (= | $ " : %:l h;FCopyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain DejaVu LGC SansDejaVu LGC SansBoldBoldDejaVu Sans BoldDejaVu Sans BoldDejaVu LGC Sans BoldDejaVu LGC Sans BoldVersion 2.10Version 2.10DejaVuLGCSans-BoldDejaVuLGCSans-BoldDejaVu fonts teamDejaVu fonts teamhttp://dejavu.sourceforge.nethttp://dejavu.sourceforge.netFonts are (c) Bitstream (see below). DejaVu changes are in public domain. Glyphs imported from Arev fonts are (c) Tavmjung Bah (see below) Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Arev Fonts Copyright ------------------------------ Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the modifications to the Bitstream Vera Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Tavmjong Bah" or the word "Arev". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Tavmjong Bah Arev" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the name of Tavmjong Bah shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from Tavmjong Bah. For further information, contact: tavmjong @ free . fr.Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Glyphs imported from Arev fonts are (c) Tavmjung Bah (see below) Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Arev Fonts Copyright ------------------------------ Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the modifications to the Bitstream Vera Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Tavmjong Bah" or the word "Arev". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Tavmjong Bah Arev" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the name of Tavmjong Bah shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from Tavmjong Bah. For further information, contact: tavmjong @ free . fr.http://dejavu.sourceforge.net/wiki/index.php/Licensehttp://dejavu.sourceforge.net/wiki/index.php/LicenseAll Typographic FeaturesFonctions typographiquesAlle typografischen MglichkeitenFunzioni TipograficheAlle typografische kenmerkenLigaturesLigaturesLigaturenLegatureLigaturenFractionsFractionsBreukenAll Type FeaturesToutes fonctions typographiquesAlle AuszeichnungsartenTutte le FunzioniAlle typekenmerkenCommon LigaturesLigatures UsuellesNormale LigaturenLegature pi ComuniGemeenschappelijke LigaturenRare LigaturesLigatures RaresSeltene LigaturenLegature RareZeldzame ligaturenDiagonal FractionsFractions en DiagonaleDiagonaler BruchFrazioni DiagonaliDiagonale breukenZ .  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , sfthyphenAmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandicLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongsuni0180uni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191uni0193uni0194uni0195uni0196uni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEUhornuhornuni01B1uni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BAuni01BBuni01BCuni01BDuni01BEuni01BFuni01C0uni01C1uni01C2uni01C3uni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DEuni01DFuni01E0uni01E1uni01E2uni01E3uni01E4uni01E5Gcarongcaronuni01E8uni01E9uni01EAuni01EBuni01ECuni01EDuni01EEuni01EFuni01F0uni01F1uni01F2uni01F3uni01F4uni01F5uni01F6uni01F7uni01F8uni01F9 Aringacute aringacuteAEacuteaeacute Oslashacute oslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217 Scommaaccent scommaaccentuni021Auni021Buni021Cuni021Duni021Euni021Funi0220uni0221uni0222uni0223uni0224uni0225uni0226uni0227uni0228uni0229uni022Auni022Buni022Cuni022Duni022Euni022Funi0230uni0231uni0232uni0233uni0234uni0235uni0236dotlessjuni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240uni0241uni0242uni0243uni0244uni0245uni0246uni0247uni0248uni0249uni024Auni024Buni024Cuni024Duni024Euni024Funi0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni0259uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269uni026Auni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02AEuni02AFuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02B9uni02BAuni02BB afii57929 afii64937uni02BEuni02BFuni02C0uni02C1uni02C2uni02C3uni02C4uni02C5uni02C8uni02C9uni02CAuni02CBuni02CCuni02CDuni02CEuni02CFuni02D0uni02D1uni02D2uni02D3uni02D4uni02D5uni02D6uni02D7uni02DEuni02DFuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9uni02ECuni02EDuni02EEuni02F3uni02F7 gravecomb acutecombuni0302 tildecombuni0304uni0305uni0306uni0307uni0308 hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322 dotbelowcombuni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0340uni0341uni0342uni0343uni0344uni0345uni0346uni0347uni0348uni0349uni034Auni034Buni034Cuni034Duni034Euni0351uni0352uni0353uni0357uni0358uni035Cuni035Duni0360uni0361uni0362uni0374uni0375uni037Auni037Buni037Cuni037Duni037Etonos dieresistonos Alphatonos anoteleia EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni03D0theta1Upsilon1uni03D3uni03D4phi1omega1uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03E2uni03E3uni03E4uni03E5uni03E6uni03E7uni03E8uni03E9uni03EAuni03EBuni03ECuni03EDuni03EEuni03EFuni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FAuni03FBuni03FCuni03FDuni03FEuni03FFuni0400 afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061uni040D afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097uni0450 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109uni045D afii10110 afii10193uni0460uni0461 afii10146 afii10194uni0464uni0465uni0466uni0467uni0468uni0469uni046Auni046Buni046Cuni046Duni046Euni046Funi0470uni0471 afii10147 afii10195 afii10148 afii10196uni0476uni0477uni0478uni0479uni047Auni047Buni047Cuni047Duni047Euni047Funi0480uni0481uni0482uni0483uni0484uni0485uni0486uni0488uni0489uni048Auni048Buni048Cuni048Duni048Euni048F afii10050 afii10098uni0492uni0493uni0494uni0495uni0496uni0497uni0498uni0499uni049Auni049Buni049Cuni049Duni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04A8uni04A9uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B0uni04B1uni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04B8uni04B9uni04BAuni04BBuni04BCuni04BDuni04BEuni04BFuni04C0uni04C1uni04C2uni04C3uni04C4uni04C5uni04C6uni04C7uni04C8uni04C9uni04CAuni04CBuni04CCuni04CDuni04CEuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8 afii10846uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni0500uni0501uni0502uni0503uni0504uni0505uni0506uni0507uni0508uni0509uni050Auni050Buni050Cuni050Duni050Euni050Funi0510uni0511uni1D00uni1D01uni1D02uni1D03uni1D04uni1D05uni1D06uni1D07uni1D08uni1D09uni1D0Auni1D0Buni1D0Cuni1D0Duni1D0Euni1D0Funi1D10uni1D11uni1D12uni1D13uni1D14uni1D16uni1D17uni1D18uni1D19uni1D1Auni1D1Buni1D1Cuni1D1Duni1D1Euni1D1Funi1D20uni1D21uni1D22uni1D23uni1D26uni1D27uni1D28uni1D29uni1D2Auni1D2Buni1D2Cuni1D2Duni1D2Euni1D30uni1D31uni1D32uni1D33uni1D34uni1D35uni1D36uni1D37uni1D38uni1D39uni1D3Auni1D3Buni1D3Cuni1D3Duni1D3Euni1D3Funi1D40uni1D41uni1D42uni1D43uni1D44uni1D45uni1D46uni1D47uni1D48uni1D49uni1D4Auni1D4Buni1D4Cuni1D4Duni1D4Euni1D4Funi1D50uni1D51uni1D52uni1D53uni1D54uni1D55uni1D56uni1D57uni1D58uni1D59uni1D5Auni1D5Buni1D5Duni1D5Euni1D5Funi1D60uni1D61uni1D62uni1D63uni1D64uni1D65uni1D66uni1D67uni1D68uni1D69uni1D6Auni1D77uni1D78uni1D7Buni1D85uni1D9Buni1D9Cuni1D9Duni1D9Euni1D9Funi1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5uni1DA6uni1DA7uni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1uni1DB2uni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB8uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1E00uni1E01uni1E02uni1E03uni1E04uni1E05uni1E06uni1E07uni1E08uni1E09uni1E0Auni1E0Buni1E0Cuni1E0Duni1E0Euni1E0Funi1E10uni1E11uni1E12uni1E13uni1E14uni1E15uni1E16uni1E17uni1E18uni1E19uni1E1Auni1E1Buni1E1Cuni1E1Duni1E1Euni1E1Funi1E20uni1E21uni1E22uni1E23uni1E24uni1E25uni1E26uni1E27uni1E28uni1E29uni1E2Auni1E2Buni1E2Cuni1E2Duni1E2Euni1E2Funi1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Auni1E3Buni1E3Cuni1E3Duni1E3Euni1E3Funi1E40uni1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Auni1E4Buni1E4Cuni1E4Duni1E4Euni1E4Funi1E50uni1E51uni1E52uni1E53uni1E54uni1E55uni1E56uni1E57uni1E58uni1E59uni1E5Auni1E5Buni1E5Cuni1E5Duni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E64uni1E65uni1E66uni1E67uni1E68uni1E69uni1E6Auni1E6Buni1E6Cuni1E6Duni1E6Euni1E6Funi1E70uni1E71uni1E72uni1E73uni1E74uni1E75uni1E76uni1E77uni1E78uni1E79uni1E7Auni1E7Buni1E7Cuni1E7Duni1E7Euni1E7FWgravewgraveWacutewacute Wdieresis wdieresisuni1E86uni1E87uni1E88uni1E89uni1E8Auni1E8Buni1E8Cuni1E8Duni1E8Euni1E8Funi1E90uni1E91uni1E92uni1E93uni1E94uni1E95uni1E96uni1E97uni1E98uni1E99uni1E9Auni1E9Buni1EA0uni1EA1uni1EA2uni1EA3uni1EA4uni1EA5uni1EA6uni1EA7uni1EA8uni1EA9uni1EAAuni1EABuni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EBEuni1EBFuni1EC0uni1EC1uni1EC2uni1EC3uni1EC4uni1EC5uni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED0uni1ED1uni1ED2uni1ED3uni1ED4uni1ED5uni1ED6uni1ED7uni1ED8uni1ED9uni1EDAuni1EDBuni1EDCuni1EDDuni1EDEuni1EDFuni1EE0uni1EE1uni1EE2uni1EE3uni1EE4uni1EE5uni1EE6uni1EE7uni1EE8uni1EE9uni1EEAuni1EEBuni1EECuni1EEDuni1EEEuni1EEFuni1EF0uni1EF1Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni200B afii61664afii301afii299afii300uni2010uni2011 figuredash afii00208uni2016 underscoredbl quotereverseduni201Funi2023onedotenleadertwodotenleaderuni2027uni2031minuteseconduni2034uni2035uni2036uni2037uni2038uni203B exclamdbluni203Duni203Euni203Funi2040uni2041uni2042uni2043uni2045uni2046uni2047uni2048uni2049uni204Auni204Buni204Cuni204Duni204Euni204Funi2050uni2051uni2052uni2053uni2054uni2055uni2056uni2057uni2058uni2059uni205Auni205Buni205Cuni205Duni205Euni2070uni2071uni2074uni2075uni2076uni2077uni2078uni2079uni207Auni207Buni207Cuni207Duni207Euni207Funi2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089uni208Auni208Buni208Cuni208Duni208Euni2090uni2091uni2092uni2093uni2094uni20A0 colonmonetaryuni20A2lirauni20A5uni20A6pesetauni20A8uni20A9 afii57636dongEurouni20ADuni20AEuni20AFuni20B0uni20B1uni20B2uni20B3uni20B4uni20B5uni20D0uni20D1uni20D6uni20D7uni2100uni2102uni2103uni2104 afii61248uni2106uni2109uni210Duni210Euni210FIfraktur afii61289uni2115 afii61352uni2117 weierstrassuni2119uni211ARfrakturuni211D prescriptionuni2120uni2121uni2124uni2126uni2127uni212Auni212B estimateduni2132uni2134alephuni213Buni213Cuni213Duni213Euni213Funi2140uni2145uni2146uni2147uni2148uni2149uni214Bonethird twothirdsuni2155uni2156uni2157uni2158uni2159uni215A oneeighth threeeighths fiveeighths seveneighthsuni215Funi2160uni2161uni2162uni2163uni2164uni2165uni2166uni2167uni2168uni2169uni216Auni216Buni216Cuni216Duni216Euni216Funi2170uni2171uni2172uni2173uni2174uni2175uni2176uni2177uni2178uni2179uni217Auni217Buni217Cuni217Duni217Euni217Funi2180uni2181uni2182uni2183uni2184 arrowleftarrowup arrowright arrowdown arrowboth arrowupdnuni2196uni2197uni2198uni2199uni219Auni219Buni219Cuni219Duni219Euni219Funi21A0uni21A1uni21A2uni21A3uni21A4uni21A5uni21A6uni21A7 arrowupdnbseuni21A9uni21AAuni21ABuni21ACuni21ADuni21AEuni21AFuni21B0uni21B1uni21B2uni21B3uni21B4carriagereturnuni21B6uni21B7uni21B8uni21B9uni21BAuni21BBuni21BCuni21BDuni21BEuni21BFuni21C0uni21C1uni21C2uni21C3uni21C4uni21C5uni21C6uni21C7uni21C8uni21C9uni21CAuni21CBuni21CCuni21CDuni21CEuni21CF arrowdblleft arrowdblup arrowdblright arrowdbldown arrowdblbothuni21D5uni21D6uni21D7uni21D8uni21D9uni21DAuni21DBuni21DCuni21DDuni21DEuni21DFuni21E0uni21E1uni21E2uni21E3uni21E4uni21E5uni21E6uni21E7uni21E8uni21E9uni21EAuni21EBuni21ECuni21EDuni21EEuni21EFuni21F0uni21F1uni21F2uni21F3uni21F4uni21F5uni21F6uni21F7uni21F8uni21F9uni21FAuni21FBuni21FCuni21FDuni21FEuni21FF universaluni2201 existentialuni2204emptysetgradientelement notelementuni220Asuchthatuni220Cuni220Duni220Euni2210uni2213uni2214uni2216 asteriskmathuni2218uni221Buni221C proportional orthogonalangleuni2221uni2222uni2223uni2224uni2225uni2226 logicaland logicalor intersectionunionuni222Cuni222Duni222Euni222Funi2230uni2231uni2232uni2233 thereforeuni2235uni2236uni2237uni2238uni2239uni223Auni223Bsimilaruni223Duni2241uni2242uni2243uni2244 congruentuni2246uni2247uni2249uni224Auni224Buni224Cuni224Duni224Euni224Funi2250uni2251uni2252uni2253uni2254uni2255uni2256uni2257uni2258uni2259uni225Auni225Buni225Cuni225Duni225Euni225F equivalenceuni2262uni2263uni2266uni2267uni2268uni2269uni226Auni226Buni226Cuni226Duni226Euni226Funi2270uni2271uni2272uni2273uni2274uni2275uni2276uni2277uni2278uni2279uni227Auni227Buni227Cuni227Duni227Euni227Funi2280uni2281 propersubsetpropersuperset notsubsetuni2285 reflexsubsetreflexsupersetuni2288uni2289uni228Auni228Buni228Cuni228Duni228Euni228Funi2290uni2291uni2292uni2293uni2294 circleplusuni2296circlemultiplyuni2298uni2299uni229Auni229Buni229Cuni229Duni229Euni229Funi22A0uni22A1uni22A2uni22A3uni22A4 perpendicularuni22A6uni22A7uni22A8uni22A9uni22AAuni22ABuni22ACuni22ADuni22AEuni22AFuni22B2uni22B3uni22B4uni22B5uni22B6uni22B7uni22B8uni22B9uni22BAuni22BBuni22BCuni22BDuni22C0uni22C1uni22C4dotmathuni22C6uni22C8uni22C9uni22CAuni22CBuni22CCuni22CDuni22D6uni22D7uni22D8uni22D9uni22DAuni22DBuni22DCuni22DDuni22DEuni22DFuni22E0uni22E1uni22E2uni22E3uni22E4uni22E5uni22E6uni22E7uni22E8uni22E9uni22EAuni22EBuni22ECuni22EDuni22F2uni22F3uni22F4uni22F5uni22F6uni22F7uni22F8uni22F9uni22FAuni22FBuni22FCuni22FDuni22FEuni22FFhouseuni2306uni2308uni2309uni230Auni230B revlogicalnotuni2311uni2318uni2319 integraltp integralbtuni2325uni2328 angleleft anglerightuni237Duni239Buni239Cuni239Duni239Euni239Funi23A0uni23A1uni23A2uni23A3uni23A4uni23A5uni23A6uni23A7uni23A8uni23A9uni23AAuni23ABuni23ACuni23ADuni23AEuni23CFuni2422uni2423uni2460uni2461uni2462uni2463uni2464uni2465uni2466uni2467uni2468uni2469upblockuni2581uni2582uni2583dnblockuni2585uni2586uni2587blockuni2589uni258Auni258Blfblockuni258Duni258Euni258Frtblockltshadeshadedkshadeuni2594uni2595uni2596uni2597uni2598uni2599uni259Auni259Buni259Cuni259Duni259Euni259F filledboxH22073uni25A2uni25A3uni25A4uni25A5uni25A6uni25A7uni25A8uni25A9H18543H18551 filledrectuni25ADuni25AEuni25AFuni25B0uni25B1triagupuni25B3uni25B4uni25B5uni25B6uni25B7uni25B8uni25B9triagrtuni25BBtriagdnuni25BDuni25BEuni25BFuni25C0uni25C1uni25C2uni25C3triaglfuni25C5uni25C6uni25C7uni25C8uni25C9circleuni25CCuni25CDuni25CEH18533uni25D0uni25D1uni25D2uni25D3uni25D4uni25D5uni25D6uni25D7 invbullet invcircleuni25DAuni25DBuni25DCuni25DDuni25DEuni25DFuni25E0uni25E1uni25E2uni25E3uni25E4uni25E5 openbulletuni25E7uni25E8uni25E9uni25EAuni25EBuni25ECuni25EDuni25EEuni25EFuni25F0uni25F1uni25F2uni25F3uni25F4uni25F5uni25F6uni25F7uni25F8uni25F9uni25FAuni25FBuni25FCuni25FDuni25FEuni25FFuni2600uni2601uni2602uni2603uni2604uni2605uni2606uni2607uni2608uni2609uni260Auni260Buni260Cuni260Duni260Euni260Funi2610uni2611uni2612uni2613uni2614uni2615uni2616uni2617uni2618uni2619uni261Auni261Buni261Cuni261Duni261Euni261Funi2620uni2621uni2622uni2623uni2624uni2625uni2626uni2627uni2628uni2629uni262Auni262Buni262Cuni262Duni262Euni262Funi2630uni2631uni2632uni2633uni2634uni2635uni2636uni2637uni2638uni2639 smileface invsmilefacesununi263Duni263Euni263Ffemaleuni2641maleuni2643uni2644uni2645uni2646uni2647uni2648uni2649uni264Auni264Buni264Cuni264Duni264Euni264Funi2650uni2651uni2652uni2653uni2654uni2655uni2656uni2657uni2658uni2659uni265Auni265Buni265Cuni265Duni265Euni265Fspadeuni2661uni2662clubuni2664heartdiamonduni2667uni2668uni2669 musicalnotemusicalnotedbluni266Cuni266Duni266Euni266Funi2670uni2671uni2672uni2673uni2674uni2675uni2676uni2677uni2678uni2679uni267Auni267Buni267Cuni267Duni267Euni267Funi2680uni2681uni2682uni2683uni2684uni2685uni2686uni2687uni2688uni2689uni268Auni268Buni268Cuni268Duni268Euni268Funi2690uni2691uni2692uni2693uni2694uni2695uni2696uni2697uni2698uni2699uni269Auni269Buni269Cuni26A0uni26A1uni26A2uni26A3uni26A4uni26A5uni26A6uni26A7uni26A8uni26A9uni26AAuni26ABuni26ACuni26ADuni26AEuni26AFuni26B0uni26B1uni2701uni2702uni2703uni2704uni2706uni2707uni2708uni2709uni270Cuni270Duni270Euni270Funi2710uni2711uni2712uni2713uni2714uni2715uni2716uni2717uni2718uni2719uni271Auni271Buni271Cuni271Duni271Euni271Funi2720uni2721uni2722uni2723uni2724uni2725uni2726uni2727uni2729uni272Auni272Buni272Cuni272Duni272Euni272Funi2730uni2731uni2732uni2733uni2734uni2735uni2736uni2737uni2738uni2739uni273Auni273Buni273Cuni273Duni273Euni273Funi2740uni2741uni2742uni2743uni2744uni2745uni2746uni2747uni2748uni2749uni274Auni274Buni274Duni274Funi2750uni2751uni2752uni2756uni2758uni2759uni275Auni275Buni275Cuni275Duni275Euni2761uni2762uni2763uni2764uni2765uni2766uni2767uni2768uni2769uni276Auni276Buni276Cuni276Duni276Euni276Funi2770uni2771uni2772uni2773uni2774uni2775uni2776uni2777uni2778uni2779uni277Auni277Buni277Cuni277Duni277Euni277Funi2780uni2781uni2782uni2783uni2784uni2785uni2786uni2787uni2788uni2789uni278Auni278Buni278Cuni278Duni278Euni278Funi2790uni2791uni2792uni2793uni2794uni2798uni2799uni279Auni279Buni279Cuni279Duni279Euni279Funi27A0uni27A1uni27A2uni27A3uni27A4uni27A5uni27A6uni27A7uni27A8uni27A9uni27AAuni27ABuni27ACuni27ADuni27AEuni27AFuni27B1uni27B2uni27B3uni27B4uni27B5uni27B6uni27B7uni27B8uni27B9uni27BAuni27BBuni27BCuni27BDuni27BEuni27E0uni27E8uni27E9uni27EAuni27EBuni2800uni2801uni2802uni2803uni2804uni2805uni2806uni2807uni2808uni2809uni280Auni280Buni280Cuni280Duni280Euni280Funi2810uni2811uni2812uni2813uni2814uni2815uni2816uni2817uni2818uni2819uni281Auni281Buni281Cuni281Duni281Euni281Funi2820uni2821uni2822uni2823uni2824uni2825uni2826uni2827uni2828uni2829uni282Auni282Buni282Cuni282Duni282Euni282Funi2830uni2831uni2832uni2833uni2834uni2835uni2836uni2837uni2838uni2839uni283Auni283Buni283Cuni283Duni283Euni283Funi2840uni2841uni2842uni2843uni2844uni2845uni2846uni2847uni2848uni2849uni284Auni284Buni284Cuni284Duni284Euni284Funi2850uni2851uni2852uni2853uni2854uni2855uni2856uni2857uni2858uni2859uni285Auni285Buni285Cuni285Duni285Euni285Funi2860uni2861uni2862uni2863uni2864uni2865uni2866uni2867uni2868uni2869uni286Auni286Buni286Cuni286Duni286Euni286Funi2870uni2871uni2872uni2873uni2874uni2875uni2876uni2877uni2878uni2879uni287Auni287Buni287Cuni287Duni287Euni287Funi2880uni2881uni2882uni2883uni2884uni2885uni2886uni2887uni2888uni2889uni288Auni288Buni288Cuni288Duni288Euni288Funi2890uni2891uni2892uni2893uni2894uni2895uni2896uni2897uni2898uni2899uni289Auni289Buni289Cuni289Duni289Euni289Funi28A0uni28A1uni28A2uni28A3uni28A4uni28A5uni28A6uni28A7uni28A8uni28A9uni28AAuni28ABuni28ACuni28ADuni28AEuni28AFuni28B0uni28B1uni28B2uni28B3uni28B4uni28B5uni28B6uni28B7uni28B8uni28B9uni28BAuni28BBuni28BCuni28BDuni28BEuni28BFuni28C0uni28C1uni28C2uni28C3uni28C4uni28C5uni28C6uni28C7uni28C8uni28C9uni28CAuni28CBuni28CCuni28CDuni28CEuni28CFuni28D0uni28D1uni28D2uni28D3uni28D4uni28D5uni28D6uni28D7uni28D8uni28D9uni28DAuni28DBuni28DCuni28DDuni28DEuni28DFuni28E0uni28E1uni28E2uni28E3uni28E4uni28E5uni28E6uni28E7uni28E8uni28E9uni28EAuni28EBuni28ECuni28EDuni28EEuni28EFuni28F0uni28F1uni28F2uni28F3uni28F4uni28F5uni28F6uni28F7uni28F8uni28F9uni28FAuni28FBuni28FCuni28FDuni28FEuni28FFuni29CEuni29CFuni29D0uni29D1uni29D2uni29D3uni29D4uni29D5uni29EBuni2A00uni2A01uni2A02uni2A0Cuni2A0Duni2A0Euni2A0Funi2A10uni2A11uni2A12uni2A13uni2A14uni2A15uni2A16uni2A17uni2A18uni2A19uni2A1Auni2A1Buni2A1Cuni2A7Duni2A7Euni2A7Funi2A80uni2A81uni2A82uni2A83uni2A84uni2A85uni2A86uni2A87uni2A88uni2A89uni2A8Auni2A8Buni2A8Cuni2A8Duni2A8Euni2A8Funi2A90uni2A91uni2A92uni2A93uni2A94uni2A95uni2A96uni2A97uni2A98uni2A99uni2A9Auni2A9Buni2A9Cuni2A9Duni2A9Euni2A9Funi2AA0uni2AAEuni2AAFuni2AB0uni2AB1uni2AB2uni2AB3uni2AB4uni2AB5uni2AB6uni2AB7uni2AB8uni2AB9uni2ABAuni2AF9uni2AFAuni2B12uni2B13uni2B14uni2B15uni2B16uni2B17uni2B18uni2B19uni2B1Auni2C60uni2C61uni2C62uni2C63uni2C64uni2C65uni2C66uni2C67uni2C68uni2C69uni2C6Auni2C6Buni2C6Cuni2C74uni2C75uni2C76uni2C77uniF208uniF217uniF25F afii10064uniFB00uniFB03uniFB04uniFB05uniFB06uniFFFD dlLtcaronDieresisAcuteTildeGrave CircumflexCaronBreve Dotaccent Hungarumlaut Doublegrave arabic_dot arabic_2dots arabic_3dotsarabic_3dots_aarabic_2dots_a arabic_4dots uni066E.fina uni066E.init uni066E.medi uni06A1.fina uni06A1.init uni06A1.medi uni066F.fina uni066F.init uni066F.medi uni06BA.init uni06BA.medi arabic_ring uni067C.fina uni067C.init uni067C.medi uni067D.fina uni067D.init uni067D.medi uni0681.fina uni0681.init uni0681.medi uni0682.fina uni0682.init uni0682.medi uni0685.fina uni0685.init uni0685.medi uni06BF.fina uni06BF.init uni06BF.mediarabic_gaf_bar uni0311.caseEng.altuni0268.dotlessuni029D.dotless uni03080304 uni03040308 uni03070304 uni03080301 uni03080300 uni03040301 uni03040300 uni03030304 uni0308030C uni03030308 uni030C0307 uni03030301 uni03020301 uni03020300 uni03020303 uni03060303 uni03060301 uni03060300 uni03060309 uni03020309 uni03010307 brailledotJ.alt uni0695.finauniFEAE.fina.longstart uni06B5.fina uni06B5.init uni06B5.medi uni06CE.fina uni06CE.init uni06CE.medi uni0692.final.alt uni06D5.finaA&%$!:$#"!:"!: d}}      Y    & Y @ &  .A@}>,,G}G  @ 2 d۠d%%%   %ё%Д #&̑ɻ]ɻɀ@%]@%dĐ::2  }& @ ]%]@..@   K%%%2 ~}|{zywvwvututsr}qpo,o,nmlkjihc h2gf2ed ed d@cb c b a`a``_ ^]\\[Z[ZZYXWV@VUTSRQRQQPOPONONMLKLKJKJIJIHGFGFEDCDCBA%BAA%@?@?>?>=< =< ;d:987656%54554 4432 33@2 10100/ .-,:-,%,:+d*d)(''& %$#@+$#" "!!@  %@ K}K%%dd   2     @   @d  d++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++wJ       !! #" >> ?? @@ CA ^^ __ `` aa bbcc gdkh qm srutvv zx {{}  |{                WW            ) .*2/ 33 44 =5 >>?? @@ XA YY`[bacc dd ee pgrqss tt uu {          u vvww Ox P P Q Q R R S S [ T \ \ ] ] ^ a b  ـ      + # - -micropolis-activity/res/dejavu-lgc/DejaVuLGCSansMono-Bold.ttf0000664000076400007640000070001010724145723024422 0ustar simcitysimcity GDEF)c,GPOScrL GSUB=lPOS/2_Vcmapmozcvt I*fpgmq49j gasp glyf  `head9;,6hhea d$hmtx׈loca 1LL!xmaxp Z name3l !cpost<+HMprepLQ3y8prop.~0 \ cyrl $2cyrlSRB locl 66J$33f  P PfEd m`tXRR~!%+/A?Xauz~_ [w{%9?GKW]cmqEMWY[]}  # & 1 : < > I p y !!!"!&!+!_!"" """"" "-"="i"""""## ###!#%#*#}##$#&/&&&&'' '''K'M'R'V'^'u'''')+ !$+-1PXatz~Cw{ $0<AJWZalp~ HPY[]_   & 0 9 < > G p t  !!!"!&!*!S!""""""""'"8"A"m""""##### #%#(#}##$#%&8&&&''' ')'M'O'V'X'a'''')+~yxwigfb_][ZYC+# cHE<'&caU?3/)'%#!  B;0-*u]XTNHECaolkKAq 6<  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}byqz3#N\{#'##\ #\\w#3b##\b b b%%1/#/ 9bRsq#oVd\Hf```{\{`o7L'5%={D=!/s, %Id@QX Y!-,%Id@QX Y!-,  P y PXY%%# P y PXY%-,KPX EDY!-,%E`D-,KSX%%EDY!!-,ED-,%%I%%I` ch #:e:-hh@ b/10!%!!hsr) @ d <2991/0!!!#  !#qe@ d1<20!!!++J@0g g    91/<<<<<<<2220333#3!####5!#5!#3_^aJ^^^^J^Jvuu%vD /P@+)%$(hh!/$, ( 0<21/<22290>54&#.'.546753.'?FE>??ˍWggU̹GP>[ٴ O=>O-C:9L-.+=BI' (0Ϭ ! '3V@-(  (kk kj.k%1"+1""499991/999904632#"&"32654& 4632#"&"32654&!?9PP9:OP)˹=8ON9:QRXO::OO:9PP`^P::OP99Q%*8@Z)(*()(-,.+23456718%8+(%#1) #1p#popnr)($ +.#  .8 )$. 9999999991/99990KSX999Y"%#"5467.54632.#">54&'3!32676767fKWꍋ20ID@APR=D9DI"BCr;H23ёXN<$%86$~f &b993V+wIz  d10!+ @ut  29910#&547䟚@=5R @ut  299103#6545䞛䄀=?y9TJ@(   n   <2<2991<22990 %#'-73%TJLLLLKLXXB\ #@ v    <<1<<0!!#!5!RPRPjo@ w 10!#9co-10!!-wow 1/0!!MoqB`@ d103#m{V #$@ x! xn!r$  $10@////////// / / ?????????? ? ? OOKKKKK K O TTTPPPTT T ddd```dd d    T////////// / /   $]]4632#"&"326&32#"H45HH54H|f^^fg^^5HH54HGB~{|~o $@xxdx  1/20!%!!!J5JML J/s'[@/% zy xnx    991/990KSX9Y"!!577>54&#">32uL=KByoOkk^;H5/FVAdm?<')ݿX^D}L(G@)p zy#p z y pnr) &  )9190#32654&#">32!"&'32654&%nyynTgg\qd^xxWOS]*( !εǢ&$/1o^s}fu B@   % xd   <291/<290KSXY" !!3#!!y5jBF<@!xzyx xd r  190!!>32!"&'32654&#"+$R.`fSXOQ  ))u''b $5@{{ z y{"nr%   %190"32654&.#">32# !2`ee``gg#OC/c..F싄--AAn75@%xd 991/0KSXY"!!!P #/D@% {'{-{nr'0 $*  ! 0991990"32654&%.54632#"&54632654&#"hczzcc{zqvto|eWXeeXVf}gg~eg}}'yغx(&ĉ׊TXggXWefoN$7@{ zy{ {nr% " %19073267#"543 !"&2654&#"OC/dF7_ee_`gg .,AAi}}'@ ww <21/0!!!!MM's' "@ww   <210!#!!MNMoXmy@29190 5y!X'y@vv<210!!!!X!!Xmy@<919055X!`a)$q@8   %$  fhn !  %<2999991/9990KSX99Y"!!!546?>54&#">32  >PZ?-\\T`beD^XD&cNY=P+CDGF 89L\VBT= s 4]@1(+$ 4| | }'$|+}|+15'(   ! .529919999904&#"326#5#"&5463254&#"3267# !2fYYeeYYf&gHȥGl"0PE\Qm`v4!qqrR511/)//77! @;      %h~d     KSK QZX @8Y91/<90KSXY"@,0000 5::5s|]]!!!!!hi\uZq+q} >@$h hdh   !2991/9032654&#32654&#%!2)čqvp_anF`wyjFP\\S뽼 İ9.@op op nr! 210%# !2.#"32679FU>.UDLLLL+$$xy$$FAAFu(@p dp !  "99991/0326&#! )P<nB? tsJ *@ppd p#  2<1/0)!!!!!J^?{yX %@ppd# 21/0!!!!!XBuujS@!ppopnr%! 1990@]]#5!# !2.#"326hUu?-ZL>`.DTIKsy30PQH &@pd  " 221/<20!!!!!!'q'9+h% #@pd p 221/220!!!!!y))3m.@ opp dr  199073265!!!"&mVctl_JVX\t 4u a@3  %d   291/<290KSXY"!! !!u'N)Nw@ pd1/03!!'w/V{ @  % % 91@ d /<290@  %KSXY" ]@R )=??   & )/708?    ]]K TX 88Y!!###V`bq+sTwX S@%d&& 991/<2990KSXY"]@  ]]!!!!w=^=+=\u #@ppnr !! '10"326&! ! hqhhqrhh    xx{,@pp d !  299991/032654&#%! !#!yuu`5nJbyyb\u<@ pp n ! !'9919990# ! "326&   ~xqhhqrhh~xL  f@6  %p pd   !  "29991/<9990KSX9Y"!&'&+!! 32654&#',A/ Ok^ yihz A^y暶 i_mm^V'p@>'' '%' o!p o pnr('$ ($"(9999190KSX99Y".54$32.#"!"&'32654&'ߞge_`krSohvlmxPLU/.CFVP>Q10Bڦ541TRcYCeZw@ pd1/20)!!!jf*@  pr d  1299990!3265!! j'reer''ppR9m@%%dKSK QZX@8Y91/290KSXY"@  ]]%!!!h)g)+ @@      % d   /91/<<90KSXY"]@6fe   )&ghj f g wzsx]]!3!! !kT;H+ @C    % d   KSK QZX@8Y91/<290KSXY"@  ]]) ! ! !V11X%!S@(%d 9991/290KSXY"! !!>"#>3XwLs 8@%pdp 991/0KSXY"!!!5!Lw#$@ut10!#3!ZoB`@ d9910 #Nm/+ @ut9910!53#5+޾9@ d91290 # #--/10!5/۾f"1K TKT[X@8Y0 #fx^T{ %@/   ggh g#r #  .)&22991/99990@-400 4!urr  ]"326=%!5#"&546!354&#"5>3 ZMt#5d gdikapTfLZq}JPʵĻ1GI5:(&w 6@  h hrt2 0221/9904&#"326>32#"&'!!Rl__nn__lh6Ze.$-6]]ba%}.@yh yh r 75210%# !2.#"3267%Jb&ZS@RUB9++89*,7;9:Z;6@hhrt2 )221/990!!5#"3232654&#"$/eZl__nn__lSab40]\}{L@#   hy h r .)190@ ]%# 32!3267.#"Nfv ekspex 7**->w:?itw{q;4@ t  <<2991/22990!!!!5!546;#"XB/bNʜ0bXH} (I@(  &' hyhh#')& 2 ))221999904&#"326!"&'326=#"325!#r]\qq\]r%\]S[|v+f`+%B .,u|yPN, 8ZR/.@ h t 7  521/<99990!4&#"!!>32/ENPZ#j)yh}]f *@  s  <<1/20!!!5!!!!Dlm%`XR 7@  s  <2991990%#!53265!5!5!!RbRN%+nTV @@! %t  .5 291/<90KSXY"!! !!%`cXd}^B `TZF %@t  991/990!5!;!"&NRbѶ`nR{"@'  h :=:=:#K TK T[X@8Y91/<<<299990@7      /////////?? ? ? ? ?????]>32#4&#"#4&#"#3>32!fJo&22((22&nDDpGD}TV{1{VT}1`tBMQ/{0@  h 7  521/<99990!4&#"!!>32/ENO[#j)zi~`]fbo{ #@hhr . )10"32654&32#"hixxijxx==Vw{9@hhr 20221990%!!>32#"&4&#"326$.eZbl__nn__l ab]񢸸ZV;{ 5@ h hr 2)22199032654&#"#"325!!l__nn__l6Ze/$1^]04ba#{)@ h  21/990.#"!!>320M]&%+w&ln``i+{'@=    %  yhyh%r( >7"5(99991990KSX99Y"(!]@+ $)) ) ) ) ) ),//,))))) (!$'].#"#"&'32654&/.54632QXbd Tema^gjKQ_=4598P2&##7:<98<"&o11@  <<2991/<2990!!;#"&5!5!IUKA>%`0@  hr   7521/299990!3265!!5#"&%DOOY%iTyh~]fP`i@%%1/91/290KSXY"X]@U  ZUUY]] !!)``j` @@      %    /91/<<90KSXY"h ]@@     )&') 96k c wxuy   ]]333! !ywꈇ`5ZF7` @B    %  1/ 91/<290KSXY" ]@    96]] ! ! !yV`yHN;X`w@A     %    1 /9129990KSX9Y"+5326?!!;vwZT+V44y=o<A)9` 8@%6/ 2991/0KSXY"!!!5!MiN``$^@0 %   !  t% $  %<<29999999199999990#"&=4&+5326=46;#"3k>>k{hFb~~bFhחsrݓTѥ͐Ut10#!$`@1%   #t%# %<2<9999999199999990326=467.=4&+532;#"+yhHb}~aGiym>>mVͤэVחstݔXy++@  19990#"'&'.#"5>32326yKOZq Mg3NJNS5dJ t]F+<73 ":?=6 7= @ d <2991/0!!!3 !#+e !F@& yh yh r" -/"<<<2212<220.'>7#&573 8x?@w84xC=ur{~5*1L0+" :9!wb>@  zyhn x <<1/222990.#"!!!!3#535632N9EjcPS)+N^T /c@8  *( -'! ) -0)'!$ * ( $02299912299904&#"3267'#"&''7.5467'7>32;dJIeeIJd$P0'T-)S.'QIccIJffq)S,/Q$*S)/Q&u@<%  d    229991/2<2<290KSXY"! !3!!!!!5!'!53>"#>VddVX𻗽J@ <210##  =% >y@C/0*1 06 'f&*f# f f54%.#"#"&'532654/$5467.5463271a71|U6LU v_fFAѺYUUIMR haG@ЬJX$E(6X`$E+Ql:4Ki neY/2{Q95Fs^!2xR-;1@ 1<203#%3#u1}N1ID@%  >2>&JDB C8B ,/210.#"3267#"&546322#"&'.5467>"3267>54&'.P4[0akjb5`*7j2ʩ7iZZ\[[[~}[[[\ZZ~cIGHHGGcdFHHHHHh__g$ZZ[~}[[[[[[}~[ZZGIGebHHIIHHbeGIG %)d@4 $#(&$& n*&(' #*229991999905#"326#"&546;54&#"5>32#!!fmd=6Vn2yN[[R@ILP4818g96u11!"@ww# -@   U U <2991<2990 5 5++#Xjy@ v 10!#!X!,-10!!-w}N 4L\@3-*+'0!52+A M*',$0-!1E3+E$CGB3C;B/29991<99902#"&'.5467>#32654&'2#'.'##%"3267>54&'.hZZ\[[[~}[[[\ZZb@@998(NG&7O?9)cIGHHGHccGHHHHHNZZ[~}[[[[[[}~[ZZb((+)oXZAU 81:/qGIGebJGHHGJbeGIG-X10!!-wV@ n@@102#"&546"32654&hCz//12.0zDHdbHHdc30/xDBz./3dHHbcGHdXy *@v  v   <2<21/<<0!!#!5!!!fff!bb2@ ^9190!!56754&#"5>32f3Z:WK8MKB6-+KO4<#"}o~*(D@& #  )^&^ )9190#532654&#"5>32#"&'532654&FooJUOFEDECibouKJCPU_b2,-3teI^p\y@8=D f"1K TKT[X@8Y0!#fT` G@'  hr !    75!29912<<990!3265!3267#"&'#"&'RRQP!+J#H[%nF;ST XrsrsG> KSNP/0F;) "@d 91290!###.54$!fN۲w 10!!Moo3!@   ]1/90!#"&'532654&'97{0e5-T$:A*.>j/_[ .(R<9 )@   ^ 12035733!9x-+)N0@ n  9910!!4632#"&"32654&%PŦçkIUUIIUUV޾~mm}}mm~\# -@   U U<<991<29905-5-++#wvwv/w{';V'{A/w{'{&AtV/w';V'uA%x@<   %%  fhrd&# !  &<<99999919990KSX99Y"!!!3267#"&546?>54765  >PZ=-\\SabeD^XB&ocMY;Q,CDGF89L\V@T?!k&$>u@ ]1!k&$<u@ ]1!k&$?u  +@ ]1!m&$=u$ +@O$@]1!k&$;u   +@  p? 0/   ]1!m!@M ! !%h  i ~!   "999991/<9990KSXY"]@\ !000 0!o  !!' )!;44 ;!t |! ! !]] !!!.54632%32654&#"!/\uZ,*uv*N57MN65Nsq%a=uu>_6MM66MMAc@3  %p hpdp~  % /<291/<20KSXY"!!!!!!#36Vfnj{o9&&zuJk&(>uJk&(<uJk&(?uJk&(;u%k&,>u%k&,<u%k&,?u+1%k&,;u+K SKQZX@88Y1u 9@hp dp  ! "/<29991/2203#326&#! )#53P<nBĉr tswXm&1=u#+@O#@]1\uk&2>u@]1\uk&2<u@]1\uk&2?u +@]1\um&2=u1" +@O1@"]1\uk&2;u +1wXs 0@   <291<290  ' 7 XJJGJHJHH )s@> )*  '$ ($p$ pn$r*(! '!)!!!'*.99999991999999903264&'.#".5!27!"&''U8rh9N4pi## g=q''j@xb9= >5 33X>=s^xCBrjfk&8>u@]1jfk&8<u@]1jfk&8?u +@]1jfk&8;u +1k&<<u{0@hh d !  2299991/032654&#!3 !#!ytu`'n5nIbxyd2X@2)#,2&h&h/tr*  #A  ) .+/399991/990#"&'532654'&/.5467.#"!4632 }t aRP=|C:s6IUsV;< b\^`#[Q@Y J>^ C:HX D0M~JIebf^Tf&DC^Tf&Dv^Tf&D( @?&/&]1^T9&D6^T1&Dj^T&D4{ A@K. 4, ;5#A  ggy 451g8g,>8& rB#;-, 4T)-RB<999912222999990@'33040536G3G4G5G6YYYYW3W6 A]5#"326554&#"!3267#"&'#"&546;54&#"5>32>32IWY@=?=2??2=d_A=Bo%}&FzH\}f&HC'\}f&Hv'\}f&H(' @?/]1\}1&Hj'f&Cf&vf&(1&jbf(@N (((#$%$"!"%%$%('%"! #&#h hr#t)'& !#(%" .))999919990KSX9Y".#"32654&#"432''%'!%+1b0izwhms udV(?7%\)B}-b2 wumt{u/9&Q6boh&CRbog&DRbog&(R+@]1bo&6R1 ++1bo&jR +1BV $@v  <<10!!!!!!55uK +s@>+,  )*&h&h&r,+,* # )#.),99999999199999990 32654&.#".5327#"&''?B&hxJZ>'jy--UC./SCc:"4Im=+-yLk--w%f&XC%f&Xv%f&X( +@]1%1&Xj +1;Xf&\vVw9@hhrt 20221990%!!>32#"&4&#"326$.eZbl__nn__lab]񢸸;X1&\j, +@!p_PO@?0/ ]1!N'q:$ +@ O@/ ]1@]0^T&qD!s'2-$+@]1@]0^T=&2D@]1!o'5c$^ol{'5DAk&&<upf&Fvf}k'?u&Jf&(iF9k'Du&%1&3iFjk&&@uGf&F)fu}&'@Zg:cAnA1G@8@/]1uZ$F@&"   "hhrt   2)%<<1/<2990!5!5!3#!5#"3232654&#"2$/eZl__nn__l"ttab40]JO'q;(@]0\}&qHJk'C5u(@]1@?]0\}F&2 H@]1Jk'D5u(\}&3H@]0oK'5(\o}{'5HJk&(@5u\}k&H) @?/]1ujk'?yu*bXHf&(Jujk&*Cu@?]0bXHF&J2ujk'Dyu*bXH1&3Juj'i *bXH'UdJ@?]0Hk'?u+ +1/k'?uK +1K QX@8Y@O]0>@   pd    "<22<221/<2<<220!!5!3#!!!#53!5'q&ن'qhQ /B@" ht 7  5<<<1/<<299990!4&#"!#535!23!>32/ENP--ݠ#jQQ)yhGF}zz]fij%m'=u,$ #+19&6@]1%O'q;,+@/ ]1@]0&q%k'Cu,+@]1@?]0F&2o%&,5Bo&L5g%k&,Du` @ 1/20!!!5!!Dlm`D@# op p dpr ! 221/2<22990%32765!!#"&!#3!3>?HU'(STEl9ǾMVX\:: uv43 N G@$   s   ! <<<21/22<220%#!53265!5!5!!!!!5!#3#ѵbRN%o6!nTVm!k'?@u-+1Xf&(u0&ir(.0'i(N` ?@  %  .5 291/<290KSXY"!! !!%`cXd`}^B `Tl'<v/ZFl'<vOK QX@8Y@O]00'i(/Z0F&i(O':Do/Z':kO'y/Z'yO @/]1 7@  pd    <2.9991/903'%!%!q'p}wo™%\D@%  t  <<99991/99905'!5!%;!"&duK'grSbѶӦâѠnwXl'<v1/m&vQw0X&i:(10/{&i@(QwXk&1@)u/f&Q)$'Q#lXd@@%d p & &91/2990KSXY!!+53265!l\\y'dR; gnlnX/{5@ hh 75 21/99990+532654'&#"!!>32/[Zy'dR"#NO.-#jQQTklnz45GG~`]fij\uO'q;2+@ O@/ ]1@]0bo&qR+@/ ]1\uk'Cu2 +@]1@?]0boF&2R +@]1\uk'Eu2 @??]0bof&7R@ __]0D>@!p  pdp %  <99991/220! )!!!";C=.{\[|478nͲɮ{ )5o@1("!% !gy3g -%g r6*0T!*R(6<9912<22999990@ !"()]!3267#"&'#"32>32'54&#"4&#"326>c_>2:MN;;NM:ߐ;:,*JJMG8;;Bjfm'=u8- #+@O@ ]1%9&6X* +1jfO'q;8+@ O@/ ]1@]0%&qX+@/ ]1jfk'Cu8+@]1@?]0%F&2X+@]1jfj&84O @]0%&X4jfk'Eu8 @??]0=f&7X@ __]0j_f&85o`&X5br'?|:+1m&(Z+1r'?|< +1;Xm&(\+@]1k&<;u( +@ po `_ PO @? 0/  ]1sl'<v=9m&v]s'D(=91&3#]sk&=@u9f&]);*@  t <991/90)!5!546;#"B/Nʜ0A (1!2)"#547676323264&#32654&#UJ,0!Z{i-p_an--qv׽ İ%/!MALPSF`wyj{w"'!!!632 &"2\llhQlnnæ~D+%3264&+'3 !yuuy٢n5bbR-&"2>32#"&'!'lnn6Ze.ܖD]]ba973254#">3 !"&LLLLDU.>U+HFAAFH$$rr$k %27# %6326;#"&#"E0-Xa\1)!Hx#@7.8"#%27# !2676;#"&#"&HZy'_.#K33sV89Vl7+rU?u"#547676; !#26& 0KnB'&4MFmts?}#";! $545676?6%3!jĈvqeH+ejyw`+ Q2[w"7632!5!!526&"*hlʳl\lnn4Da=n{%/%#"'&'&'532?654#"32%26&#"~}cTy `&ZQh:#?ixxijxx5?NM ",f==KJJ 3!!!!!{?B+\u&'&#">3 ! 532767@*4LLFU 9 "4qr4" HbyAFH$$xx~_PxxP}L'"267# $5467.54$32.#";^dqꨠ\ggTnyyn}s^o1/$&٢!(*]SOWlXe!!!+5276=!eSZVh)%C}+dl72}-[Xv!!#!532765!5!546;#&XT\c()obcl78TNʜ&k(%27#5!# %632676;#"'&# ]*̬@<< Za\1)}."TsC  l7.R:dO  '! !%3254hrACr%v ]u~ *'&'&'&#"#3>32?67653hbYDG?@$$xUAA X+19y} V*4GF}]fij 4 T^xh;'&'&5!!!nmf&&))xv-.%!!3#!!!#53y)) !!!676&|'@MD6$wGq3= 476;#"3! !![Zy'b+)`cXdAml75}^B `TZF3+;!"&=#53!5! RbѶN^n^BP! !''7!gkd)NUTEWR%#"&326532653#5"&#!fJo&d((d&nppGD<}TV{D{VT}D+tBMQV!+532765!!! T0<;+<^Z4K=+=V/{!4&#"!!>32/ENO[#jTzi~`]f\u  &5%63 &'&#"!3276hn-]O` I|:3U- Q )4qr4(txxpOD2P_xx]'^2 '^R &5%6327!#327&#"d(ECOu]rxSU+Cg//g&q+pi5x yhV{327!##""327&훀꓌ixxi,<< =|erП]]3264&#"#5476763! !#!quu 0K/5Jbb'&4MFmVw$&"2"'!#776;#"3632Rlnn k QZy'_.#\QDal7+Wy*9(;#"'&/&'&#!!3 32654&#{ ((+^%vSa.((+^'n5NytuV2C8h!#IU54&#">32ّLPxmlvhoSrk`_eg7eCYcRT45B01Q>PVFC ./˞+{'>323267#"&546?654&#"Y_ꚨQKjg^ame㕠T dbXQ=&"<89<:7##&2P8954bx:Xv&(;#"&5# %53232#%&'&'32'3@䨇.2\K t8G (`@iHs@ lY265LoX1 !!;#+532767&'&5!5!IUUZy'b+"PYKA+fl7,eHQ>w!!%#"!4767676O'{0i{Z!0,-LAM!H!o147676;#"!!;#"&5!5[Ry'b+)IU`mb 75gKAZVw!#!!!;#"'&)+b'yZSV57ld'^8'^XhZw##"47#5!32654&'!wxllxQNpgfqPRmn8mO֦M uR'53!"'&5!276%xliB'&&f-H9mȷn.-X!!776&S.a)=?51JL@\MXa +5326?!76&kwZT+u%p[RS4;^0"=o<A)_;;& #O9s!3!!!5#53!\Uw&4`!3!!!57#5!!Min`  "# '&5!327654'&+5!!>aEb)"'toNkIQm?tk9)qo dn  %2765!! &54767675!!# J1>6n GOoNot׊54&#">323+uLmT;KByoOkk^;H u5HtAVAdm?<')ݿX^H "#!!!2! '&5!32654'&+DtKQG>OJoKKfO@tfstt_95jcf54nHc` 2!"'&'32654'&+!!lxiGGghhf_[KKY0,fgst%)58jcf54v5?%#"'&'327654'&+#5;5!3[w٣IIDFFHHY43NTB61^ׅ#*+rB`GLr!¦!! +'I!!!!!!!5!5!5! ffff:!k&$@u^Tf&D)%k&,@uf&)\uk&2@ubof&R)jfk&8@u%f&X)%O'q;jf'<%'Djf'@%'Ojf'>%'CXy{^TO'q;O'q;&q\_u&52b_o{&5R\_uO'q;b_o&q333327653#"5##8EΝ9RJ%2:8}0qhwXk'>u1/h&CQV&i6+{&iVZw&i7o1&igWt%-%724#"'632#"'#67&'#"32!26&"-h*4X|u+D=$>L׵<0$DxEEx yaGyl$>40/-DsX!!#+532767!5!LSZy'b+"w#dl7,dX9`!!#+532767!5!MSZy'b+"N``dl7,dboO'q;boO'q;\ul'Dv2bo0&3RboO'q;O'q;<;X&q\1t %724#"7632#"'#67&'&5!5!-h*4BX|u* J[N) y1BXl}7&%t{/%724#"7632#"'#67&'&=4'&#"!!67632$R!)$Fd{]!u ~;I?##0T`j y1BXl+5GQt`l3!3ߨot1$%724#"'7632#"'#67&'&5!5!!!!V$S!*2%Fc{^"t ~;I%^j y1BXl>XR` ,@    991990%#!53265!5!RbRN+nT-26&"&"2>32#"&'#5#"323KMMKMM%e?Gi !hG?d&DD]]baab40]]SJ{-&"226&"#"3253>32#"&'#KMMDKMM&d?Gi !hG?e%DD]]04baab]]! !!#'#7'7'3'i<ʢ\BC-Z!,UK2bs{s[q^??y?R( &#"# ''&5!27&'3267}jFUן:>.UN$!7RLL_$$r1y Ms~"&AF''7&5!27&'3267#"'&#"?&ZS j&*=MUBJbyB uw9 ~y!Z9:++~~ !3#!!#5(vb)#5'7!! 5#4`/ɢTIsByrw+{1.#"#"';# /&'32654&/.54632QXbd T}<肰 a^gjKQ_=4598P2&Pۭ s7:<98<"&9`!;# /!j3-<肰AiN`);PۭV$"#"#5476767637$!!!264'&#N+0!K0DVpz==p$0 "MB?~m66nd{ ,27654'&#"!67632!#32767# &@B.,Nt@@"6RTdր~44dhccj`pP**fL--XWq}J((ʵ^]1G%$:(&xY{5!!5#"763226&"5$/JKelkZHGlnna114/.DxY{%!!67632#"'&&"2$/KJeklZGHblnn_a11䘘/.ODxY$67632#"&'!476;#"3&"26HGZlke.[Zy'dRlnn]./ba@klnKD'}7326&#"6763 !"'&BJJURML@SSTZbUU9 :P7 ,s0}-%32'&#"763!"'"''47&'&76!2&'&#"96SgfQ=ZSTS@MLR9Kr]G&A,7MM$26&"7!;#"'&=#"'&32nVXX"-5aHH%<;QdbɺG99D:Stnlka110/.FO#26&"%!5#"32776;#"mVXX%xQ˽H99+EHa4Dab40/.]gl75Xy{73267!57632!"&&'&#"ke vԒ <<;Xy{>3 #"'&5!.#"32767fvek9:pe<< '**“ w:?t;<>=q{ 332767#"'&'&'&#"67632?;#"'&5_-HN10 w@A;hUYY^`___5!Hq; ?;:n,Q`ƟVv)?!"D07o[fk{2&'&54$32&'&#";#"32767# '&546HI]hjyTlz2US>hu2@`g#qriiXohibٝ=@BW  &1E OY"[\pfk{(\@! yh#) y hr)& )190 KTX)@))848Y%%]!"&'532654&+532654&#"5>32)boXrq2uhzy]=p"#(YO56E1>W0{A#"&'5327654'&+5327654'&#"567632?;#"'&5'Cr?@wuJTCNOUH'NI/&XK1?@&[R>fZPOEi>  !HZ<0=JJp\["TO E.)  O.N7o[$ley. !27654'&+5327654'&%672'$*F(5:&J@*?;9Yon:8<:nmY%?H "J7#"-VWbLHIGgVV=LX`%#!53265!5!!5!3#RbRN+nV ;"32765#"'&54763!3676;#"#!"'&'32765Y1200\Z12;HG]lkkl'RW|*TONOKHHIABwRROPRR:Gb..⡠rv..!6MM|VU`*%#"'&54763)!"'&'3265"3265.=_mnnm.'VPQQMJJJ[f11_[fb\⡠!6OP:7_%%#"'&7632&'&#"32767'#5!7]edk򍍐`YXOQPQPQPMN'"!e2(1YXYY b`oo ' !!3254g> CCN}V#L~||bo`%254'!!! 54f-,,CCW;HJ9SLJ*^!32765!!#"'&#"#NP--#jQQVy44GF}\]fij*!4'&#"!476;#">32*#"NP--[Zy'dRjQQ)y44GF}@kln]fijV*(%4'&#"!476;#">32+5326#"NP--[Zy'dRjQQSZy'dR)y44GF}@kln]fij)blnjh!!!3#!!5!5!5!!fDllܐ@`!5!#"'&5D&&fmnl.-vxjh` !!5!!5!llbXz*#"';!"'&=&#"567632!5!3276xJHHN6>(*bZ\NJNHJRNG=FDF+<77llu:?= ke"&#";&;!"&=#&'&!5!!;2` 3RbѶ{@'N 028?pno)b̜rD^%!5!;!"'&N*(b\Z77llH. !;#"&5#5!!#"'&'32654'&+V$[=J휉l;S<5ssMNNMGEgm88n~Nn`L9 !qfst%)58jcf54P`"%#"'&326532653#5"'&!!fJ78&d((d&7788pGDdd<w1}TV{1{VT}tB&')(PV`"%#"'&326532653#"'&!!fJ78&d((d&7788pGDdd<w1}TV{1{VT}B&')(PV{367632+5327654'&#"#4'&#"#367632!32K77GJc R""133267DDpF#"dddl77~)*+-y1y-+*)~1`tD$'R@F{'!54'&'&'&#"+5326=!67632 &\55ZYzRB'CKK[Vo77#WVyv\pb./DF{"4&'&#"!!67632;#"'&5&'U<5'CKLZRSUuY_-HWK`b./wxj/.vxY` !!!!xI}`uubo{ !7632#"'"!3&'&!#3276bzi<. % .5!!5#"'&'0L^EE&$,XZv<::45,,! >&ln`45327676765!!5#"'&'0L^EE& $,XZv<::45,,! >#9/u`45MV`%327676765!;#"'&'#=#"'&'M0A@M]FE& %()d'yZS+YYw<:945,! >&66n\67lb)`45V{.#"!!676320N\FF&&*ZXx<994+,,! >&lnR `45V{!.#";#"'&5!676320N\FF&(*f&xZ`&*ZXx<994+,,! >&ln%77lp7`45J`35!476;#"!XZT%%QP! KJ`35!4'&+532!~$$VXZK !PQhh`+!&'&'&+!! 32?674'&'&'&#*9  4'$lwxHFX>W) 1 +B- m WF`MLtDC_(:% A` "#327654'&'32767!#!!OO['(('%K-+%k322?s99nnf HI Ga/0!GHoKJ`V({8&'&#"#"';#"'&532654'&/.54632QWXXb22 TKJrq?A)d'yZ[ade^gj&%Q_^_=48P2&TUVWS)7lk7<98"&[Xv!#!53276546;#"T\c()Ccl78ʜ@[Xv!##!53265!5!!5!546;#"3R[bR)B/JblnNʜ0A[Xv!&'&+532;!"'&B)(c[T@}87lc:Xv&(%;++5$!346;#""#"67638t K\24@5Hi@`(Yl ʜ@L56TJ`!5!4'&+532!!~$$VXZ>K !PQVJ!!;#"'&5!5!%%TZXDK !PQ>Xx`!5#"&=#53!!!3)32760hRR&:&HDNP,%J]f/yhF;U|`&327654'&'!##"54767#5!&@+99^_89+@LE86>OELQskXWWXksTH;l:pAT}`$#'&55#53!?27654'&/A;0}}o[Z%"%`D=/!D;lyx:yƩ 4aXksTHP`3!! Pdid`j` !# # #!!ӄ`:676;#"!! ;RSvwZ**+ٞIHo<)D`!!!DOQf`Yx(.V`!!;#"'&'!5!FN(*d&xZTN``77lbv\`%3276'&!367632+'47!5!R'& /62]N N9G`v[0@78nHc`! !5!!"'&'32654'&+7yNqMGghhfa``]KK9 !qfst%)6jcf54dHl` .&'&23676 !5!5#7#$!2&'&++ c4'xMqNFet ;K}A U4X9 !qfs.( #-[H*4+32765&'&#"67636!XTN33YHHFFDIIؽw[rLG`Br+*#Ӆ^+!&'&54762&'&#"3y[wأIIDFFHHY33N ^ׅ#+rB`GLr+!'"'&'327674'&#XB[wأIIDFFHHY33N3^ׅ#*+rB`GLrU+#%32767#'&54762&'&#"3YHHFFDIIؽwwأIIDFFHHY4`Br+#Ӆaׅ#+rC_7 *32654&#"47632 '&47632"'&EWUyxvyUW䦥.#"1<"Db"#6^^aa5'''/-6L&&wZ` ,@ hh  !21/9032654&#32654&#%!2#!^^^^HNLJSNdn33320203፛Rsjlez.% !";#""'&54767&'&547676H F(5:&J@*?;9?Yon:8<:nmY-kl%?H "J7#"-VWbLHIGgVV=t=+%#"'&7632676;#".#"32767'#5!^ddk򍎐VZy'dRQPQQ'!"e2eln10YX xY` !!!!!!xFUF`k1]Wt$!!3+5$)3!5!&#"?676%8tFZҽ4Ni]kb)+VSk ]L@6hVh` !! !7!h@D4d$V'``!!!D`FVM'%#"325#476;#"!26&"*;9HɶR<;&IHa6,+XX+[1/0411aml76e}\\D\?&327654'&#"67632;#!5+53lTN34YHHFFDIIټw[ rLG`Br+*#҅^p¾?&5&'&547632&'&#";3+!5#53#[w٣IIDFFHHY43NTp^ׅ#+rB`GLr¾3 %(26&"73!!!+5#"'&7632 !rBBr!կa,-=s?@A@w6++R\\D\SL`ۦa11/.~@ 4>!#5#"76323!#"'&'32654'&+26&"Z>?=;9:7SX--Xe! rBBr {ab4/.]SL9 !qfst%)6jcf54\\D\9<%3276'&26&"73!367632+'47!+5#"'&7632! rBBr ԯ 8/yz-,=s@?@Aw6++R9Gi\\D\SL`v[0@78a11/.~B/I&'&#"#"'&'#"'&5#533367632532654'&/&'&547#3b1455;2`-,DD<@?@56(G998U:=<8>@R0e/.3=48H:'SUVW"(PQ>½K3ZH7<98"%RQ0*K !XH&.35476;#"+532767#"'&5#53#323(17~;563NNN0Ab+bl7.bPQ>CK !Qs3<G367632&'&#"763#"'"''47&'&'#"'&5#5332'&#"#;&54Y6222'.-2U]>e=x1$65"!XN23-)#,7Gr]G&A#(PQ>J9K,K !JX3;>32+5327654'&"####535476;#"ϮZ?`0176~H<^ϰ32(b]fikTkl77z45GG~NNN04?&'&#"#"'&'#"&5#5!;5327654'&/&'&54632o0545;2`--DD=?@A}nb;:x9> Q1d/.999=48H:'SUVW#)`77H7:98"%RQ.#5!;!5!!!5#"&b:aaٯ~n`77`9 333# #333# #9xyyy޼yxxyyy޼yxsPTQ PTQ %#!#!#!#!>)>)8J"332765!!#"'&54'&+5328""NO/,$LJjPR**d&xZV^Vy44GG|\]33ij:7lcQV)3327653;#"'&=#"'&54'&+5328>@$$BPaJHxUA@#!PaHE^VyhGF}˄nlk}]fij:7leI#4&#"#367632,2300De443i~D:'(Fh5;<I#4&#"#476;#"67632,23;9M@400Deh3i~D:'(Fa<=~>JL4vjK+532765#5!5#53Ktʖ?zox~J~rU|&'&#"#367632|)*1>*/ 99L, $"b !<>tb6 U|32767>53#5#"'&'U)*1>*/ 99L, $"J !<>!b6 "32767>53#;#"'&'=#"&'))2;-, @N:5rM&J!I #<>!8~=7{J6: "#327654'&'3276?3#!322:l0]j! (I%$FG()|)7((?Y**t 333# #ޜUNLWWV=F+5326?33&45LL96ŤYY((}">!biL$L%2764'4#7&&'&6vTSSTvt'&l&'STTS"'&4763"vTSSTv6&'&&tSTTS'&l&'H327654'&#"567632#6}1!!9g..--,/.iyLY;m8@+'6%@  vJyQ5H#&'&547632&'&#"3m;YLyi./,--..g9!!1}8d5QyJv  @%6'+@f5@ 91290K TKT[X@878Y3#'#Ʋff5@ 91<90K TKT[X@878Y 373Dzx @1@0#ǽ+ [@1@0#ǽ+-Aq-6`!!he|6`!h|&`$L&`%L; #5#53533^ݼlݼݼF `@  ]]1<0K TX@878YK TX@878Y@]332673#"& dSSc FEKJF;1M10K TX@878YK TK T[X@878Y00]!!1L R@ ] ]10K TK T[X@878YK TX@878Y4632#"&732654&#"LvwwvM67MN66Mvvvv7LM66MMoj@  ] 1/90!33267#"&546-5%=2&M(6_)r|7GF'1 \V5m 9@$    999919999990K TK T[X@878YK TK T[X@878Y@M           &]'&'&#"#4632326=3#"&j7 +$%g^$H)>%$'g^$BT%>;+?:)=f4@@o]991<2055]3#3#Vfx2%7;!"'&7r&&iNBs87o[ 5&73733254؜}~ztoق2SFEE['#5!;#"'&z4?ʆ:;~J>~=<J..#"#"'&'532654'&/&'&547632V4p8?@6d20IHADDE>.8(.Fhb[sTr..> L4)=f7f) #ȾD'PPf###£׮fxx '32F2 c2@10!32!525#xxz#3$5zyz;f!#!fN'CN'vyo#5353#&M33##ٽSC~n!5!#+1532654&'3#"&CI'1 \V5mR2&;1'M(7^)s{6 "3"&4637LM6vvjMlMV53533W;fN#5!##+` #53533##SG~5!S+G/X/ %+53276=!/[Zy'b+)#+ml75}V 75!;#"'&#)+b'yZ[)}}57lm2(3-2(jL"4t:@10!#oKzo?5 j&#ǽD-&#5##v@#"'#"'&'3276732767y0@k>=k. MPMG@FF0:m')$(%2"2? $6-j&qB#Xy+ax5!x5!'uwy')?rsL_-nmJ&!5#=n@67632632#&'"#&'"y0@k=>k. NONF@FF0:map '7'77h)!'&'&546;5"+2654'&$ >< ,@8 )#zSR!. zRR: &66;13  $#&'& #&%6iy z 3OG$%%$GN(tf3AntVH%#AnHV #"=3;X3Vhs' fv-; &jf'yJf'yHf'%f'Uuf'f';wf' &!$}%X!)! qi0/=J(s=H+\u3"326&! ! qhhqrhh  \  xx%,u.!)!!Hi+V{0wX1H )!!!!!HAA!\u2H{3bx !! !!o>nZw7<\u&.67654'&'3!35&'&547675#!QQ[\ww]\wb#QQ Uk?  HJllKFFKllJH=?kU;P3!35&'&!!6765!wwb'@'@'a+~[##[ą+ZwF@$    OON N 9991/<299073&5323!>54&#"!Zxllx)QNpgfqPR'm8nȿm O֦M%k';uk';u6f&f&V/f& f&L&6z(&767;5#"/! '&'&54763Af罐qpj4+0QfRDcEG6::;Ax윒+$= TᥙABMR[[Vo!%!! 5456'&E,rbbEI8    8V`!!&'&+532w)n*&*Pn]o(vVH JYbo!%/&547632&'&'&#"32#"76"326&G~}cTy `&ZQh:#?;ixxijxx)?NM ",f=KJtB"3276767#"'&54767&'&547632&'&'&#";xD0 3Dqte_ e3khPPHH~}W`y `&ZQh:# ,:h/ )A!!*%VVyKK@?dNM "* !V##52764'&# !5!3T][TF!;)l MX[TL&DV/{!4&#"!!>32/ENO[#jTzi~`]fao(&'&"2767  G -<<- -99- $wppvvRQ`;#"'&5#5%%T:NZX` J!!PN`-P ! !'&'&+532)''^p_o<q-wJJXT`w/x`67676'&'!1!!@|8M6P3E.*{2'Z|u4@bY|rNįt`V#$! %$47#5! #52764'&sl3S][TF!0A*R LX[TL&bo{R`#3267#"&'.=!!#51F",c7Or`? " VX#sVw{  #"&'!&"2Z6lnn{]^SDV*}$%#52764'&# '&!2.#"R^\SF";w&ZS@RM?LX[TL&9*,7;WGb`#"476)327654'&z(C$=8\]^r'J`!!;#"'&5!%%T:NZX`K !PNL`!"'&5#5!327676'&'!1ZX%%9g>  L#7&$PN J!!7gLGةAVj!2!$76676'&&`rkjs+*Z6j{4V@BsSV}dxaM>HV`'!&'&+532!;#"'&Cz#%&OudgRPC)#%&PvgdSr6LJ<mLJ>EV`%6!!$!!n$nn$n$d 3V@ O?`%7!!76''!'$i G@F= *dtd-1&jL1&jbof&Lf&?f&ow% " 76'&!"'&767676"B ws6Fqn r96$(-k<`zt ~xhn$ $6'&'&'&%6#"'&3676g2DTGjЈ ۞Q;^{/G/z xGCcX}վUjNk"!4''&676'&\+**SJtxLGkeJZ vV "40z7/cT$f'O"k&;u:V'67!!&'&4%67654'&W$dTܢe)FF6$&EEj#U mi$a mE+_q!v+\u!`#5!#'$'%!76''iKJ#  9$G@F=#- t 3Zg/#"'&7676'&6'&'&632767%76y8\C2=0 ~R8\F56/!2뼟Blb|aPZP02"=BsZ{kF[R@02\Og\Vu "326&!&'&! hqhhqrhh!ܛ\  Y  `*~xƇbVo{ "326&!&'&32hixxijxx)܋^[Jha#j=i`9 %"54763!! 32#27654'&pSD~t>;!FT[]ckr%LS\bfZVt`""#52764'&# '&76)AMM=nR^\SF";wxM[\ILX[TL&X) V"%#"&'3267!5!5476325.#"yE5Q'P+7s>!E4^%R)7pW RS; 3g+6'&#"56776327'&'&7'&765F\8R~!0=2C\8R~!/6sB= 20BPZPa|blB= 20R[Fk{Kw{!3!! ! #"&'$&"2 "Z6lnn(S]^D%}FXRM\u!3276!&'&#"! ! @Q )4qr4(_ 4rq4  _xx]ΔKyyHxx}$%# '&76!2&'&#"!!32767FYPgZTSS?MOPL.7LXGIC9*,6[5XfAZ;%}$732767!5!&'&#"6763 !"'&CIGXM7.LPOM?SSTZgPY9 ;ZAfX5[6 ,흜{Vw9&V{ !!###V`b'+%TVV{ !!!#!V{}'%.Vw{%!!!5#53! #"&&"2GhhZblnnppS]OD973254#">3 !"&LLLLDU.>U+HFAAFH$$rr$9'y9&yEJk&>uJk&;uX,%+532654'&/"!#5!!6?67632ڈbR#`)GG" -ݾ+/5^)Q+nz3%  D1C0$ 5iXk&<u9:@!pop op nr! 2210%# !2.#"!!32679AZ>.]?6`<IJ+"&xy'!2UCDV6%,%k&;u+K SKQZX@88Y1m-%3264&+#+532>!32#6%tt%% rFhn laaZѰ+o'%3264&+!#3!332#6%tt%Bn laaZh9$!!6?67632!4'&/"!#"+/5^)Q#`)GG" -ݾ0$ 5iz3%  D1Cuk& <uwXk& >uk&CuH 3!!!!!'q'/+B!${3@pp p d!   2<99991/0%32654&+!!3 )yuuyn5kbyyb'}%X@ pd1/0!!/(l@p dp  1/2<<0 KTX@878Y8@ ]!32645!3#!# 0d*P~ `3Uc5/BJ(M@  d   <<1/<<<<90KSX@878Y!'!!!!!XxNz'zNxXPLNNw,}LwX M@  %d && 991/<2990@  ]KSXY"!!!X^+==wXk& Cuu.H1@1@ ppd/<0@ ]+3267!! \ _c fѰ+ aoM+V{0H+\u2H@pd"1/<0!!!!+/{39&Zw78@ %p d 1/20KSX@  Y+326?!!>uP:a(71<1/jl#|@:  :: <<<<1@p dp/<2<20 KTKT[KT[KT[KT[X!  @878Y@ 00 0 ???]!5&5475!!>54&'sZUxsZVwussuuuaҏэ;P G@ pd " 1/220 KTKT[X @ 878Y3!!!3!P'q'//Beg"@p d  21/290!#"&5!3265g%¯#|GbVI3VN @ dp:= : =: 1/2<<0 KTX @ 848 @8Y KTKT[KT[KT[X @848Y@ ////])33333..Nw@ d p:=: : =:1/<<<<0 KTX@848 @8Y@   //// ])333333#zB000%32654&+#5!3 !5)tt)!5avaZ(%32654&+!3 )!'tt  yavaZ+|U,@p p d  !  299991/0%32654&+!3 !ytty'n5avaZ9!"63 !"'3 !(횒.>Ҩ(k|HHrqHH{&9@p"np r%pd:$ :$%:'<91/990"36766'&!367632#"'&#2:**),4"(,"'shdWgwoeloyxwx y"u<_@&%p pd  ! 2991/<9990KSX@  9Y.546)!#"!>#";捖 ^kO /Azhiy+N^A%^mm_^T{DAoK ,5@* .$)-21@ 'h!h r-0632#"4/&4767676%6"32654&n&0u6$ZyU3ixxijxxK #of=4 JIX@ RwZ` ,@ hh  !21/9032654&#32654&#%!2#!}vv}NN@SNdn=FF;0119ۍSlj`@ 1/0!!{`2`l@     1/2<<0@  ]KTX@878Y!265!3#!#ZZ5SF^VU{\}{H`0@     <<1/<<<<90!'!!!!!;1%1;n<<^Bnfk{/` ]@  74 221@% /<<990 KTXA @88YKSX@ Y!!!/#=`5`5/F&+2`Ei`/@ 1@h/<0@ ]+532>5!!; _ dPQPIVz` @  !  91@  /<290@  %KSXY"K TX 88Y KTX @ 848Y!!# ##V```q7s/` %@  74 221/<20!!!!!/#=``}bo{R/`@741/<0!!!/`{`Vw{S%}F/`@ 1/20!!!5/`{;X`\OV>@ : :: <<<<1@t h hr <2<20&733>54&'  FjjFHjjHV..gs77`[a` %@    7 1/220%#!!!!#=#`{{$a!@  7 421/20;!!#"&5!\k"޾+[;3N` @ := : =: 1/2<<0 KTX @ 848 @8Y KTKT[KT[KT[X @848Y@ ////])33333`{{N`w@  :=: : =:1/<<<<0 KTX@848 @8Y@   //// ])333333#zB`{{{(`3264&#'32#!#5!FInjjnI^=;۬`3264&#32#!!B2jj2m%=;Z``$`$@h h 7 4291/032654&#32#!{njjn{,=FF;Z`%{"'3 7!5!&#"63 ő.#5駄$V ur T8| 2@hhr  ::: !291/0"32654&33676#"'&'# ,^c+8T\k"BnmVf½›t`Q[ڔu ST`_@&%    2991/<9990KSX@  9Y.546)!#"!>#";l*!"`K]PnnP]t(/G322qbR"#/-ݫ#KjQP+ny44FDџy]fjg f&&v%}<@" yh yh r 752210%# !2.#"!!3267%Jb&ZS@R|_UB9++89*,7;Ug9:+{VL1&jXRM` 3264&##+532>5!32+.2jj2v , dPV =;PIZ#`3264&#!#3!332#.2jj2+ =;!`}Z/!4&"!#535!!!>32/E/-ݫ#Kj<yhFDџy]ff&-v/f&+C';XF&62/` !!!!#!#>#`{X@pd1/0!!!/2@ 1/0!!3N{`:/X !#53!!!هhM\` !#53!!!݂h6X!2+532654'&+!!!5~d+QڈbR#X5inz31RX/`32+53276=4'&+!!!QQY[qb)("%LxihӶjl77|14k`}oL&z fok{&z*u3!#!!!=#'N)BN`%3!#!!!)#d%`cX `T`}^%!#!!!!!3!'q'h9/`)!!!!!!!#=#!`}qo9&zuo%}&zH4Zw )!!!!!%1/` )!5!!!!!B<;X`!!!W44iXA)!# ! ! !  V11XB%!7`%3!# ! !!5VVyHNeg3!6?6?2!4'&'&#"e#*/79^)Q#`GG.-f2$ 5i1z3% C/K%,k'Cu F&2)uX !!!2+5327654'&#/'NOUW.QZ[ڈe&)#1FN5ool77~/1X`!!!32+53276=4'&#%`c QQY[qb)("%Lk`}%ihӶjl77|14XH%+53265!!!!!H\[ڈbR'q'+nlnmh9X/`%+53265!!!!!/Y[qbR#=#+jln`}eg#"'&'&5!3276765!!!D+/59^)Q##`GG.-#0$ 5i3z3% CF$a%5#"'&'&5!;!!!k+# 7sk"e[3=! '!!s'2-+@]1@]0^T=&2#!k&;u   +@  p? 0/   ]1^T1&j#{Jk'C5u\}F&2 (\uPXy{\uk';u{Xy&j|k';u &j)}Lk';u fk&j* xnHc`wXO'q; /&+qwXk';u /&+j\uk&;u +1bo&j1 +1\ubo{\uk';ubo&j9k';u %&j@O'q;;X&q6k';u;X&j6k'Eu;Xf&76egk';u$&j:X )!!!!%3` )!!!!!`B(k';(u&j>5{ @32654&#"26=%!4&#"5>32>32+3267#"&'#"&IWY@=?=&2~2=d_A=B/fk{2#"'&'5327654'&+5327654'&#"56763 )HI]hjyTlz2US>hu2@`g#qriiXohib'(@BW  &1E OY"[\pigd %!!5!!!!!%bV{ (3!4&#"5>32>32#"&'#"&26=7326&#"c_uAHv&DX&h+0)5!264&#!5!264&#!5!#GD}TV{1{VT}1`tBMQ!fJo&d((d&np; %"326=7#5#"&546;54&#"5>32gR81IQ"h?yA?B|D=~G/:*3bX ?F)-qeni() |E ,27654'&#"367632+32767#"&Fh(*1I)("45?wQO!!?A>?C=~F9*20X @fF*qen54( |K53#5#"&547632264&"//@yDC}9--DxEExY]6UUggg! @32654&#"26=%!4&#"5>32>32+3267#"&'#"&5.78)&(& O ?<&L% N5A^S>dn010$U//X(>OS9p]..+*(*01 F55F vPU! /-0,g_hg45"%"%^4&"2>32#"&'#3EwFFw"[8~y@_yggg4476]g83#5#"&54632264&"^@y~8ZDxEExM]674ggg9#"&54632!3267'.#"@J"aa?|CIF@KCJH #ABE?7>32#"'&=!.#"32767U@J]^WWa`@|C#%G?&&TTRSCJH #@"!#"?@2&'&54632&'&#";#"32767#"'&546 X-.:BCLV5DM 54'BIs)cdk$%1aX &z ,2 33?HS@2#"'&'5327654'&+5327654'&#"567632X-.;ACLV4EM64'BJt(=AGHBB8FBB>cel$%1aX &z ,2 33?HS= (4&#"326#"&'5326=#"&5463253H;9HH9;H:q;5l9OJZ@yx<_TeeTUeeAFC,,2.PBm !#5!#3#53浵~~Qm 373##n?7w%53>32#4&"#4&"#3>2A.\F??EVF(&pF/0EmE0/FmsA%+-l+532654'&#"#3>32:8L?312_Be333<<~=JfD('Gs^49:<= "3264&632#"BLLBCKKwhhhh0бk 53264&#"567632#"'&k*./5[aa[310(4558]]>65!ef WX = 4632#4&#">KCBL՘\hh\= #"&533265ʱKCBL՘\hh\^#3>32#"&64&"2_@y~8[EwFFwb^674gggE3#;#"&5#535.5p~*$~Zz!~d32653#5#"&e+d8^BefwD:OFh]49v!5!264&#!5!#5LAXOkh:A&Y2S;Y\2"#"'&5326532653#5"'&WA.\"$??"#V##(&88anF/0EnE0/FA%2#3἖sbXH} (%32654&#"6!2.#">32#"&'!r]\qq\]r\]S[|v+f`+ۓW .,u|yPNZRih` !!5!!5!5!ll~b7ZXF!5!;#+532767#"&NRbSZy'b+"Ѷ`n9}+dl7,dK#367632#"'&64&"2//@yCD~8--DxEExYs]6UUgggb #"&54632.#"3267.l=9i4(a3ZaaZ5^)!fe !fM -;2'&#"763#"#"''45&'&547632&'&#"$"]R4Ak@~2'\]]9464)004Za * e@4'$WXW f^V= (.#"32654&7#"&54632''7'37>BMKBDI J?6(e#c:)FQFXdea7MUzBA=qAHEB@2#"'&'5327654'&+5327654'&#"567632_lec>BBF8BBHGA=(tJB'46ME4VLCA;.- SH?33 2, z& Xa1%$e3###53546;#"عj)F7~ ~,qW~y33#+532767#53'qqBDp'@v?CBN*#"'&5476;#"'&'53265"326='\;kEEEEkXX62330/./[Uz9@<:@64[Z~[Y̎PP V\\TV-,[Ti3327653##"'&i13_Cd33wD('FgR49;;H3#!3#3!535+535#m|)Qmw~~wmZ#5!3#"'&5m@uEE~PBD}B 3!53#5!|~~w~~B 3!53#5!5!|~~w~~mm;A$#533+#5&76;#5!&#"?276dj#I ,9w¬sB;C> v\/<~g+#G#5!;#"'&t>ǃ:8~J~=<D#5!;#+532767#"&t3>49L=s~J> Fy8<~8yu3!!02167632+532654'&#"#4'&#"#36762 /\#"-.n>3+   "#UG(87z8=~>J|FDmDFmsA&.2"#"'&5326532653#"'&WA.\"$??"#V##(&88anF/0EnE0/F0%('#=4'&'&'&#"+5326=367632 :"!98kM4)*0/9eh>R 10U{ rCC4K{\7*"4&'&#"#367632;#"'&55&!*/09e445Jj8<0( 1*[s\7BD~KCGnK 33##Llm= !7632#"'"!3&'&+3276>XYXYYXYB&&E &BC&=0XYYXXYY4(??(4-44 '/7675#5;#3+535&'76764'& fHmmHffHmmH//00=0X@q~~q@XX@h~~h@A^ 44R 44j8&'&#"#"';#"'&=32654'&/.54632n3687> 5e/.HG()?L99=?@;ABY3ja<<;- /0Pa10.~=<"  [L[d 9+53276546;#"5:ǔ>j*y8<~ IqW~ $[ 3#;1+532767&'&5#535.568L>38~*$fx9<~8)-z!~7#5#"&=#533333+3276^Beg44ƹ.+13]49vummD:'!5a&327654'&'5!##"&54767#5!Z($$;<#$) 0,#\\"(1$q+-AG%n4$#'&=#5;?27654'&/h)%OO|Fh99ee =+&+l!J=XYXDC~D~¯_71P<@/(f23# 2໖sb !!!5!r4st{y!!;#"'&'!5!,5t?K86ttdJ~=7{yJ]3276'&!367632+'47!5!>4;1t (B3_$yE!7!5!#"'&'532654'&+4[1G1,``@BAA==<;W\/0\jz @9P|@A <79=&'&"2767 &6 &%$$ Ա,l?TT?l~hBTTBhc2u"f'Z2;"fGu&,'Z;&,-GVu'(f''Z;'(G2H"f+2/"fKuk'<u.k'<uNu2"f.2"f*Nu&,.&,-N2"f/Z2F"faO2O'q;Z2FO'q.;'($'/ZF'(b'OV{k'<u0Rf&vPR1&3RPV2{"f0R2{"fPwX`'Dj1/&3Qw2X"f12/{"fQwX'('1/{'( QVw1&3HS2"f5#2{#fDU2O'q;#2&qf+1&3V2V"f62+{"fVZ2w"f7o21"ftWZw'('7oV'(t'W92&9fP2`&Yfr'>|:m&CZr'<|:m&v1Z`'j/:&jZ`'Dj<;X&3\2J&f(\2}{&f&HJm'=1u(\}&6H2%&f,2&f&L\2u&f2b2o{&fRj2f&f82%`&fXr'>|<;Xm&C\m'=u<;X&6\6r&6r&6r&6r&6r&6r&6&6&r'Hr'r'r'pr'{4r'gT'H"'r&r&2r&<r&xr&r&Jr'IJr'IJr';Jr';gJr'r5Jr'hV/r&V/r&V2r&V<r&Vxr&Vr&V/&V/&Hr'Hr'Hr'Hr'+Hr'6Hr'6(H'(H'r&r&2r&<r&xr&r& & &%r'I%r'I%r'T%r'@q%r'|?%r'rU%'IU%'Ibor&bor&bor&bor&bxr&br&[ur'ur'Iur'Our'O%ur'0ur'&Lr&Lr&Lr&Lr&Lr&Lr&L&L&zr'mr'r''?r&?r&?r&?r&?r&?r&?&?&owr')wr'bwr'Owr'O>wr'Iwr'Iw'}w'q6f&C6ff&CfV/f&CV/ff&C fbof&CbofLf&CLf?f&C?f6Vr&)6Vr&*6Vr&+6Vr&,6Vr&-6Vr&.6V&/6V&0Vr&1Vr&2Vr&3Vr&4pVr&54Vr&6TV&7"V&8V/r'EV/r'FV2r'GV<r'HVxr&IVr&JV/'KV/'LVHr&MVHr&NVHr&OVHr&P+VHr&QVHr&R(VH&S(VH&T?Vr&}?Vr&~?Vr&?Vr&?Vr&?Vr&?V&?V&oVwr&)Vwr&Vwr&Vwr&>Vwr&Vwr&Vw&}Vw&6F&26&q6Vf&6Vz&6Vf&69&6V9&!s'2-!N'q:f'*f!V& rV r!55#5! Ax 96 ;'TjV/f'V/{'V/f'V/9&V/9' Jf'DJfHf'&yHfVH&2r'6xr&n. 'F&2&q&  9& &%s'2-%N'q:)%f'b%f<r'@r' 'LF&2L&qL&LVwr&Vwr&L9&L&s'2-N'q:f'f{r'5;'rj-; fC?Vf&?V`&?Vf&?9&?V9& 8uf'qUufBwf'{wfZVw& fv r5!#7 @ïx-10!!-w-/10!!//10!!//10!!//10!!/&BBL@ tW10!3c~L@ tW10!#:bjo@ wW10!#9coL#b9 &@ t WW 1<20!3!3b`~~9 &@ t WW 1<20!#!#9b9b9o &@ w WW 1<20!#!#9b9bo9 #!#bAb;3 $@f d ?  <<1<20!!!!!5!LK}8;39@ff  d ?  <<2<<212<220!!!!!!!5!!5!LLKK}+}` 10467>32#"&'.736HI256743IH426I235624HI447743?!!?qH9o #@w VV V 1/<<220!!!!!!q'd'd'ooo $0<HLp@?J%K+I"L 71= +"%j4C: L(I1KJ\\F\7@\1.\1(\/99991/<2229999904632#"&5%"32654&4632#"&%"32654&4632#"&%"32654&%wwwu2IH33JJxvvw4GH33JKޥxwvw3HH33JK'!xwxwK24KK42IxwxG45LM41J+xwxH35LM41J^\  ".:EQ\`462#"&57"2654&462#"&57"2654'&4632#"&%"2654&4632#"&7"2654&%֓ӕjg,A@[AAlӕih-@?[A #mxvvw4GHfJKkihj-@@ZBC'!xwxwK24KK42I{xwxwK24KK42%&xwxG45LM41J+xwxH35LM41J^\Z/#@ U29190 5/+#y#@ U<9190 5-+#wv"'4M B0&'GG4&3'GD'G4 '47632"'"2764632#"&$"H !! (TUUT <XFFHFFE4llll E@    %   ^ <<91<290KSXY"333##5!5mmw)%#!!>32#"&'5327654'&#"G+y8 `_gfAF3B;=j8777\6677ߑON}LL &%GA('  ("264&'&#">32#"'&54632"##"F081.nr dDKLUTUT033?'&JI''Nݕ xv%$GHMMff !#!MUu2 )7"327654'%.5476  '&547672764'&#"**TDC**)NPRSRS('LT1/VWWW11k"#x"##"<;##"#tF$#9:#i^Cj;<<=hC/.86Mz@AABxK971b  .532767#"'&547632#"'&27654'&#"J081.m99!22DKKTTUTgh033A"##"ABF## <;w$HGLMffkl ''JI''N'(I#4'&#"#3676322300Df433i~D('Gs^4;;T:d9C{dTtdTudC;d%C<dT=dC>dT?d T@d#5#535#53!3!3#3#!#!3'"aMBBBnAAAARlbMxJJJJ51@9&(  ox#o xn#r/21('/),&, 0',2229999999999122<20@]]632.#"!!!#3267#"'#73.5467#7,$SDJMkT323#!xmlvho O9+ rk`_eg|P=5YcRT45 2 f@PVFC ./_T. )%#&'$%6753&'&'6767_h8:Ьݢ:8g_Q\DGHB[T%;/+R7r~or 7N'(OQ"z!;`!>54&#"!!>32Nۅ:7Sty/#t0e (5:=\gL !  "2!!!463"!#5265eb<<b)W ٔW  þ>;N>;f A@$   d F F FFF/91<<2<<9073#######5dYЙkKuTKBCZwu.!m/{'{&AuV't&AuV/y{'{&A<Vy't&A<Vy'u&A<Vy{';&A<V/{'{&A=V#{'<&A=V/~{'{&A?V~'u&A?V#~{'<&A?V~{'>&A?V/w{'{AB 5!!B#x4̂x#xxM '#'"xx$Mx4x#B '7!5!'7x4x#xxM !737"xx#x4̂xB5!'7'7[x#xx#xx##xxݎxM'3'7#7x$"xxގxx#xx#x- 7!##v<Ļ vĜ<7 #5'#5!7Ĝ< dĜ<6t %!537536vdĜ #!$5>+;6-0$(v# *%;(#8MX!GL!!+Im6#"'&'&'&'&'&#"'67676327676'#5!#O$0-6;+>4!# >&.&=A"?,.!" v([+!!O7!XM8#(H. % #vdB!!'#537xZx#xZxxx##xxM'75'3''#xx$"xxxZx#xZxB'73'7'7#'7!5,xZx#xZxxxݎxxM77#75'73؂xxގxxcxZx#xZxB'!5!7w>x#xx1xx##xxB'7!'7'7!'4x‚x#x>w1xxݎxxB 53#5!5x#x,x##xM %'3'3!5x$"x,rx#xB !'7'7!#3rx#xxݎxM 7#7#5!؂xގxx#xrM%7'3'7!!5"xx$"xx",#xYx#xxB(276767654'&'&'4#!5g    @16T)+51@x#x  Q87;=49(*x##xB(!'7'7!"'&'&'&547>763"j x#x@15+)T61@   xݎx*(94=;78Q  B$=+#5#53547>76"3276767654&'&'&g@16**)+50AGx#xT61@  G    ))87;=49(*x##xH;78R  H  B$=23'7'7##5#"'&'&'&54767676";54'&'&'&j@16Tx#xGA05+)**61@    G R87;Hxݎx*(94=;78))  H  BF26767676763226767'7'7#"'&'&'&'&'&"#"'5[ #$! x#x,"    "/x#x   %$   xݎx "  ! x##xB#'7#533'7'v81x#x81x#x'x##x'xݎx9~ 7'7ckn"[ kOcuP%8 5!#Ђx"xhx##xw !#!'7'zfx$xWxݎx8e !3!5x"xwx##xe '7'7!3x$xxݎxW5p !5!7#7[_xݎxwx#x?^ !3!5Xxx"xx##x2X '5476767632#4'&'&'&7#7,#!A=PNZ]KS;>#"!*#13#'Dxݎxq!TPA>! #;SK]ZNP=A!#qx#x%'C "()/ZOR?<# !>APT2V 5!7!##2lv<ĻʌvĜ<B  !!#33#'7!5!'7xpxxpx xx,xx746#"'&'.5476732767>54/#7!&>(()NGgZsn_aMOP(&Q--'<0CB47---0v\apn_cMG.(()LNkoaZU-8:>=96/(-,r=ZHv74#5!#53276767654'&'7#"'&'&'&5476v0---74BC0<'--Q&(POMa_nsZgGN)((>\vdHZ=r,-(/69=>:8-UZaokNL)((.GMc_npaB5!B#x4#xB!!BM̂xx#M3'#"xMxM#'x$M4x#B!5!'74x#xB'7!5xxM!37xM̂xM!#73ضx#x4B  '7!5!'7 5!!x4x##x4̂xxx#xx M  '#' #737"xx$rxxMx4x##x4̂xB 5!!'7!5!'7B#x4̂x*x4x##xxxxB'5!!!!5#x4̂4̂x>#xx# M73'#'#'3i"xx$x44x#B'7!5!'7!5!'7x44x#>xxݎ M%#73737#hxxގ#x4̂4̂xB '7!55!x#x4x#xB !! !5!'7BM̂xM4x#x#xB!73!!!'7#5!!{Va6PEV`6Dx#x\HHVߞ;cff:bDx##xHHB!7'#53533'7'7##5'35#HHDx#xDDx#xDHHHfDx##xDDxݎxDfHB!'7#5!7!5!73'7/!7'!8Va68PxV`6Dx#xHH;cff:bDxݎxHHB!!5!3HH\ Dx#xDyHHfDx##xDfM#'3'#' fDx$"xDfI\Dx#xD \HB!5!'7'7!5!7Dx#xD \HyfDxݎxDfHM%37#73fDxގxDfH\ Dx#xDHB5!'7'7%!7'!Dx#xDDx#xDkHHHDx##xDDxݎxDfHHHM'3'7#77'Dx$"xDDxގxHIIHWDx#xDaDx#xHHkHH}6##7!#V`JvnJVJpvJT '#5!#5'5CJnvJ`JvdpJ^VT%753!5373JvdpJ^V^JndvJ}6%33!'38V^JpdvJV`JvnJB!!!!5!!qYNx#xdfYfx##xfB'!5!7'!5!7!5Yx#xNYdYfxݎxfYfB3773#''#5[KLnDvvx#xPP~~x##xB'7'7#''#5377vx#xvvDnLKxݎx~~PPM%#5#535#535'3'3#3x$"xV¼x#xVM3#3#7#75#535#5353xގxV»x#xVŸB #553353!Ƃx#xC{x##xM 5'3'#7#7x$"xnƂx#x}ʻB 3'7'7+53#53Ƃx#x}ʻxݎxM 7#757'3'3؂xގxƂx#x}6B !!#3xpxxxB 3#'7!5!'7xpx,xx 5!5! !!5cm 깹] 333'#!#\^Z A !!75!!5 ]]YY ###3!3"^\ZX0 m 3'335%!!# #^\znnZgm %3'3#!5%# #3!^\^dddZm! #!5#7'# #3! ^^dd9cm! # #3!3#!!5#3f\ F ^m!וddkn'33%# ##!#'37"\`\\\~$ym?TT %3'3#!5'3!3#7# ##'37^\^p\\\@ddZm?TTB 5#35!7'!!!5 5ddm]]YY'd!#7!##gv<ĻdgdvĜ<,x!5!!53753dĜ<cg<Ļd 3'3#7## #3 3^\\^XZZ֤mmB676323'7'7##"'&'#58X)O$A?x#x:[V6NJ9\ 63SxݎxH9ZY8J M 3'#'737"xxxxMx4x#x4̂xB'7!5!'7!5!'7!5!'7x444x#?xxݎB#5!5!53!54&#"#"&54632#"&54324&#"32?3-,:*:}fMHeLJdcBds<+@lFWt|uy K@&%h91/90KSXY"% !!{!5q!!{qdmCq?3 3ް2ް22013!!"&63!!"!Q )SS) PH{__{HPd;w +mq?33%ް 222ް2222*+/"/01#"!#73#!!3!!"'&'7&'&63S) W J+!y 53W ^c>H{HPPHC4|Pu_`P`_cnB / 3 3ް2ް22fff01!!3!!".>3!!"U*^_*&,bމ`+dmCq?33ް2ް22 01&'.#!5!2#!5!26767!5 )SS) mPH{b{HPd;w +kq?33*3+3ް222 ް222%2/"/01%326767!73&'&''7#53!5!&#!5!2'#܃S) V SK,"xk 52X ^c>H{HPPHC4PuP`bcnB/33fffް2ް22 01!5!&'&#!5!2#!5!276|*]^+&,bމ`+L9@__120!!!9_^-LP *@     <91990 5!! !!5my=/9) ӇB v10!!BKqB`@ d103#myTU etrw 10!!M1 ,@     9190'%3##q@`44{$  %.#"326"&'#"&54632>3"36J032#"&'#"&546320P2;JC88b6J0#@ a/<<1@h h//047632&#"#"'732UpsXlNGUnsXlNGD"McoHޕMcoH^#+4632&#"#"'732%4632&#"#"'732ronQ.A&ronQ.A&ronQ.A&ronQ.A&D"K&ޑK&"K&ޑK&^#+A4632&#"#"'732%4632&#"#"'732%4632&#"#"'732aroKnR&roKnR&rnLnR&rpKmR&roKnR&roKnR&D"KzޑKz"KzޑKz"KzޑKzB &tJi !!!!!!JMM/6'n$'oT'$'TXy''~Xy0#"'&'.#"5>323326yKOZq Mg3NJNS`u_G0;73 ":?<776<Xy032?3632.#"#"&'XJG_u`SNJN3gM qZOK0A<677323267#"''43NJNSFXɉ;5GJKOK[C :?<7Dj323326!!yKOZq Mg3NJNS`t_F(!Z<73 ":?=676=X'y#"'&'.#"5>323326!!yKOZq Mg3NJNS`u_G)!;73 ":?<776323326!!!!yKOZq Mg3NJNS`u_G)!!;73 ":?<7763233263!!!'7#5!7!5!7yKOZq Mg3NJNS`u_G`aG#z`;73 ":?<7763236767!!!!'\UQ:43NJNS`jNDJKHEL=a?]R<# :?<77 Y A;XXy7Z@110+5.*'   '.5  810*8<29199999990#"'&'.#"5>323326#"'&'.#"5>323326yKOZq Mg3NJNS` t_FIKOZq Mg3NJNS` u_GZ<73 ":?=67 6=;73 ":?<77 6<X=y4&'&#"5>3223267#"'3267#"'&''75>3243NJNS`f]GJKO)-D\NFIKOZq gZpNS#(  :?<76Z323326#"'&'.#"5>323326!!yKOZq Mg3NJNS` u_GJKOZq Mg3NJNS`u_G)!;73 ":?<77 6<;73 ":?<776323326#"'&'.#"5>323326#"'&'.#"5>323326yKOZq Mg3NJNS` t_FIKOZq Mg3NJNS` u_GJKOZq Mg3NJNS`u_Gu<73 ":?=67 6=};73 ":?<77 6<;73 ":?<776<X<y"32?3632.#"#"&'!5!5XJG_u`SNJN3gM qZOK!!A<67732#6454&#"#4&#"#3>32!!!!!Z6^b"%25'26 R28W""35uo :5SN[5SM%Q//7V'x:!%)#546?>54&#"5>323#!!!! 6 0*)^3*?1.#'!!d_1N, %`N >@"   v v  <291<2<2.990!3!!!'7#5!7!NŮmA1}X<y !!!!!!X!!!Xy{!5!73#!!!!'7#537!5!~P$fZ=e(lN"ebSbKXy !!!!!!!!X!!!!Xy &@v  <2291/90 5!5y!PNFXy &@v  <<291/9055%!!X!! Xy 3!! 5!5X!!! PNFXy 3!!55%!5X!!> X}y#5!7!5!73!!!' 5ZYM{~ X!i i행PNX}y#5!7!5!73!!!'55%ZYM{~ X!i i행Wyq&%5767$'567Rȳ}v֜P ij~wԞP(Fd%EP7(Ge#Xy%5%7%'bk8jyx!:_|:XCXy'75%%57'xk8Zj<y:_|B:[XCX<yD7%!!'7!5!7%5%ykSnKAD*ZWOzd#@4=PhLx"LX<y@7'#5375%7%5!!' z0VFdjeG'C0'Pau6LvLXy!#"'&'.#"5>323326 5yKOZq Mg3NJNS`u_GJ!;73 ":?<776<PNXy!#"'&'.#"5>32332655%yKOZq Mg3NJNS`u_G)!;73 ":?<776<X<yD+.7%3267#"'&'&''75>327%5%RmKKt`GJKOZq G:GAFJNSMOyel!PNX yy  5 55%y!!PNXTy1!7%'757%57%5%77'4PGx0e4P0GkB$$1F4F\}F5F\|t?t?XTy15%%''5%75%7XZuu: &uvk;Z&vFIs}FyJs}Vwa%&'567$wSh"/_D$#Q_Vwa%$VhSbQ#$DbO/"X[y5%$X{qQ_#pOKI4 &X[y%%$ynq{_Q#yBpR&4 RIKX2y%%#"'&'.#"5>323326%$yKOZq Mg3NJNS`u_GJQ_;73 ":?<776<TKI4 &X2y%%#"'&'.#"5>323326%$yKOZq Mg3NJNS`u_G)_Q;73 ":?<776<TR&4 RIKVw67&%'&'567677\RN@E߾\SiIRa_bIGE#"R!+Vw'76?&'67&qRN@E߾\SiIRab_bb*IE#"R!+DXyx!!"3!!"'&5476?:nLMm:׃x|~KM᎚ِXyx2#!5!27654&#!5̍:mMLnxϚMK~|Xyy %&'&5476;3!!!"''#"T=1̆cHcw.nL!5ِEFǚ|~K Xyy +'7#5!!5!232654'&'}=1̆cH>9c.nLA!5ِE,F9|~K Xy)%!5!!"3!!"'&5476y:nLMm:׃c|~KM᎚ِXy)7!!2#!5!27654&#!5X!:̍:mMLnQϚMK~|Xy(#"3!!!"#!!'7#537&'&5476;7OnL!-u/K.~=M=̦CH|~KuLx#BِEXy(!5!27+!!'7#537!5!327654/:*'EE/&`-u/K.~-/ mMLL ,E(ϚuLxuMK~|M Xy)!%!'7!5!7#"'&54763!!"3!!y(6^N׃:nLNl:=6ؔDuِ|~KM1DXy) 2!!'7!5!7!5!27654&#!5̍Kh]6(6^:lNLn)ϚR"KDؔDuMK~|XVy!!!!X!6XVy!5!!5y6Xy 5!!!!!X!!6*@Xy !5!!5!!5y!6?j33?2"&'&'&547676"2767>54&'&'3!!#!5!WV,+++WWWW+++,VWGE:;99;:EGFF:;99;:FXVWih{xihWVXXVWhix{hiWVj9;SP;99;PS;93372"&'&'&547676"2767>54&'&'!!WV,+++WWWW+++,VWGE:;99;:EGFF:;99;:FMXVWih{xihWVXXVWhix{hiWVj9;SP;99;PS;933?2"&'&'&547676"2767>54&'&'77''7WV,+++WWWW+++,VWGE:;99;:EGFF:;99;:F8xxyxXVWih{xihWVXXVWhix{hiWVj9;SP;99;PS;9yxxx3372"&'&'&547676"2767>54&'&''WV,+++WWWW+++,VWGE:;99;:EGFF:;99;:FxxXVWih{xihWVXXVWhix{hiWVj9;SP;99;PS;9_xx3372"&'&'&547676"2767>54&'&'!!WV,+++WWWW+++,VWGE:;99;:EGFF:;99;:FMXVWih{xihWVXXVWhix{hiWVj9;SP;99;PS;933BL2"&'&'&547676"2767>54&'&'2#"&546"32654WV,+++WWWW+++,VWGE:;99;:EGFF:;99;:F7b%&'qqX>=,-?XVWih{xihWVXXVWhix{hiWVj9;SP;99;PS;9d)'%`8nqq>Z<=,,3!)/7?E2"&'&'&547676&'&'&'75676767'%654'WV,+++WWWW+++,VW:F!#!E: ֈ :E!#!F: & XVWih{xihWVXXVWhix{hiWV9  9{18@9p 9 9 w:A92t3!;!!!!2"&'&'&547676"2767>54&'&'+{{WV,+++WWWW+++,VWGE:;99;:EGFF:;99;:F@XVWih{xihWVXXVWhix{hiWVj9;SP;99;PS;93372"&'&'&547676"2767>54&'&'!!WV,+++WWWW+++,VWGE:;99;:EGFF:;99;:FMXVWih{xihWVXXVWhix{hiWVj9;SP;99;PS;92K 3!!#!5!!!!o2K !!!!!Moת2K 77''7!!! yxxxoixxyxs2K %!!!!!oMX'y32?3632.#"#"&'!5XJG_u`SNJN3gM qZOK!A<677F =0|bF=&N@NU@Xy&3!!!'7#537!5!!5!3>F =0|bF=&NjN@Xy5!7!!!!!!!'7Xw!6_H4%H@CffXy!!!'7!5!7!5!!5y_H4%Hw6jCffXy" %3267#"''&#"5>327%5yL;5GJKOK[_b43NJNSFXH!e3275%X!V_;5GJKOK[_b43NJNSFXJ,323267#"''yQ_k43NJNSFX]_;5GJKOK[_KI4 & :?<7D323267#"''X_Q{43NJNSFX]_;5GJKOK[_R&4 RIK :?<7D ebP e(}bP]Y"\I\\\\I`LLMK\y>>Q ! !RppQ ! !p$ !!#!#5! Cm !5! ݠr0p !!#v !&5 ƠT_Cm 5!p g!v  !!#ƚΐ,Um!!! # q !!#v!!  rm!!#N#!v !!!##m !4763!!"{zf+!u0%y!4'&/32765!-9+en:==@ne( =F|AEuH<y 3!!"'&5!+f}{y%0Wy!! m 4'&#!!2!+fz{}%0y&'&!;!76<(en@==:ne+!< TuEA|R=y !#!!2765{}f+!y0%(!(! !!;bc;$<n$c!3!3\ V(! ! !!!!#!#(!(F(!Z((!((!(h(!|((!(*(!>((3(i(} F( #'+/3!33!33!33!33!33!3䟟䟟䟟mnmnm(%8K#!1!!!!!!!#!1!!!!!!!#!1!!!!!!!#!1!!!!!!F????">>>>#>>>>">>>>(((((!%)-13#3#3!3!##!#3#3#3#3#3#3#ޟޟ#|ŸŸ|Ÿm#(#E(Zh!|i}h((&&(&(&&(&&i(}(&(&&w!N<w7!!!xr$<w 3!254#!") ) xrVVVw&w !%!5!5!5!5!5!5!5!5!5!N54&'.#"!624HI347652IH637J347744IH426532<( 3276'&#"327$%&#"!zzzzzzzz12Ι.̌GG2GGF@XXXX(( !#%&#")7632ΙK/zzzz`XXGG 3327$3!#"'&12zzzzXX`GG7| %63"71{y`X{G7| 2#'&#82{{x|XG7 527638x{{ΚT{GZ7 "'$33{y{TX`G|%632#'&#"12zzzzz`XXGG332763#"'$zzzzzzΙGGXXwN<wN<w!Nw!v<`/3267>54&'.#"467>32#"&'.H+(*h9;i)*,++(i::f+),H736HI256743IH426?:IILII޸[["[[w !!!!!!IIN< w !%!!5!!!I) NjBZ7="-?33 #&'&+"'&#"/573;2?"#'57#&'#"#567635a)8)kOkaKA-'= //G),Y=  !H$ /+HDH)+) $., fYYx !=Z Lx73&'37&'67&'67&'67'32654'&'7654&#"3672 $54767&'&47'&27632#"/#"?#"54?'&5432'&327632#"/#"?#"54?'&5432'&327632#"/#"?#"54?'&5430'&327632#"/#"?#"54?'&5432&5432&56327&5432'&327632#"/#"?#"54?'&5432'&327632#"/#"?#"54?'&5432PO~ )*+')+(@&'$||e?/A}]\B-71SLoWj\vLLr%%,* #$ )*n$ % +) $ #*+    ? '+&()&(+&p   % % +) $ $*+*EC*Z*,)-)-*,%&%&fБfU 5HhfeefhH2pu^QFs棥sKQG4 4  22044 22 9       L%('*%)(*%)(*t     144 22 0r!2CTev+&'&54?6?6/&2#"/547672#"/547672#"'=47672#"/54762#"/54762#"'=4762#"/547672#"'=47672#"/54762#"/547672#"/547672#"/547672#"/5476l=.%G\&#- Lj.N 0d&K4i    }    g    s            &                            H5-V"*2-.T<:U'EGE'DN-ֈU]\`CDcbF]WWZA@ZZ@AZZA@[[@AZKPrqqrPGeޝdMP䠠P }2ٛk A4&#"26%4&#"326#"547&'&4632 $54'&'&4632XP79NNqO.N97OO79N']EacDC_\n\U>DbcEXFDbbDEaaEEaaEDaa+G詄UUSj멏i LVV6 "32654&7#"32?ɏǾ/`TcȐɎ;P12Y.1"264&"3264#"54327&5432#"'&'@KjjjiOiiLKirqrtPssrqQܩZTdIU )5AMYdp{3/&76'!'47653!476=332654&#"#"&54632'#"&54632#"&54632&'&676&'&676'.7>'.76$6&'&%6&'&6>'.>'.f<;.=+,>/;Kyz~LZ|WX{{XX{IE11EE11ET    m       ;   R       s@dd@s}>}=/NnN/=}>@MllMNkk& % I% % "!$# "! "!! & % % & %-5AMYdp|5#!4'&'5#2#"&546"264&"264"2647>'.7>'.%676&'&>&'&7>'.%7>'.676&'&676&'&753!476=3''676%27/&76'77&'&/#?6'&7liilYz{XW|{bEEbEd      8    @     .HxttxH%?%5E$6  6$D5%?%-5!!1(~(1 5,4t4(4N4(4t4;hhh%%#%% $ %_ $ $!"!$!/!!!" $ $ $ %:-,GtG,-: XLRqqRLX ![$n[ii[n$[!ob !!'!tKZGkcn "!!'!##&+572367676hNn_5, S Grj3#-EmDJ~o.(*!4\tR~UL !!'!  ##' CI3Z  > << 5DCX << ; YD36273 ##'5&< +Z@\\DC ZY\5#,5>~3+&=4%3+&=4%3+&=43+&=4%3+&=43+&=43+&=4%33 #&'&+"'&#"/573;2?"#'57#&'#"#567635@)A({@(@){A)A(@A(^)4 'iOj_J@,&< //F(0'&&'ܐ'J&(lN5  >! )&V?<?$&$ '& ZN N />Eqw!674#!!6?676'4#'323276767654#3#&'&'&6%67!672!&=75$/563&43!32+'!67#>54&53 *,  3)="(&)09$) L&TE` MPA[MH Y $ ;&&e=O%/ N ,8(.7L1Rf~H8SQ,zH%9D6 )jGP@4Rjd_*KfsDIR 9! O  -]&C+/3#"'43727&'#"$472776725676&5&U8)$ tJ .; d3f,"3' VD ( GL/7;;,g t^F$< LD&?>X4R !/# I ? P?D!)Mv>/z2!"&54676737#&'&54>;7#"&546767!7!"&54>3!6763!2h!.)g$'30!/&j ! /:(/  )/ 9)/  9)0:*/z2!2654&'&'#'367654.+'32654&'&'!'!2654.#!&'&#!"i !.)g$'30G!/& ! /:(/  )/ 9)/  9)0:*!!C4&#!"!&3!!"3!#";#"3&'6737#&'6737!"'67!7!"'63!67!2e;'+pCCo CCCC2CCKK<LLKK%JJ60"2=2).=<==<@=:>=;TT USUT UT83$QE!D72654'6#"'4#"'54#"'54#"'675674767#%$4:JILLHOKHLKIhghgighgD>-sJ1 b6'SS cRR SS?SS\\K\\;\\]]!A*>K!!C463!2!6#!!2+32+32#67&'#'367&'#'!27&'!'!27&#!&'!"l;'+CC  CCCC2CCKK<LLKKmJJl6"2=2).=<==<@=:>=;TT USUT UT83$QE!C32=732=7325732'654&#'%2&'&5&'5&'IKLHKOHLLIJ:4$N->DghgighghSS=SS SSb SS'6a!0J)K>*B \\]]:]]J]] O!%)-1523656;2#'7+"/#"'+"5&54775'"'5476;25'7&567635&56;374765'75'76=4'&+ '"'4!#"'&36365&5&#%#754'&5&&547'5367&7+&'&'735&2?"5775537'7'3533553535'32767&5%2?&#%55'575775775uo,Mz"060D/5I:2'5:6&" *:D:S46$.e QN5  u4MDa 6bUP+ ,H;`I23N5( (#I0M '^5%#!:X+ "*  6W}W:uW4 5vT & /H3V XD9\SL+&31.d+%X!Q $2``KPPPG[6%# Qy- 6[[3GK[O`_A[-)$t7 L-$ L6=" (CJ#R"0 :~GB{~Eoj<4S[Za LC5 ) .U%+Z&)͢ 7e<ILAaMoK33K@G6 $$(& (''&1/----2)( (-((d.'-T?OK8T$ !T3(-<((')))())( &2%2#"'&=477654'#"'5473t\*e O@UCXq P S. P ӍMOb>YaYƮ58l7P P@ $0<FX + &=%6&#"3 6=%&#"';27!54767%!&'&'2+"'&=476^7\Pg㑵Hr'.)%sM M#fC-7!%A.; ӎw:kKqz +H*G;M tu/&((AA&:+C;."/ 8Pi>'67&&&'6.7#"'&'#"'676'773.#'6'5676&&5476'&'67&&07 ^< 1x,B5@2 JVMv!#uA+UBDX[f*;-10)..C,sB#HKU P]12<0VQ }%'H6-T}^$k7 R2'7f!A\;y?1!50BEt"!zkQ;0qu0\oi:5oPZjsXFaPJGl;4ejN^1F[q7&&'7'6&'$#&7'&#"'5&767#&''5$'67'6'6'5$'67'656&'67&'6'&'''5$7676'&&'6'63&7"7&'7&'7&'7&'6'6%676767&77&77&''5&"'6%35&'.54>23#67#&8 p +WDTc'H @XO`= ;*)8 kDv/Pk-J KDhGa D`gBD6DDD =3dTDW, :g j)Yi#'WtI-9w18$^8;./7-I)jS)'#i\-IM91D;8%a7/.D=uRNBR&'%QBNRq d2 D s98C ["|44&3, '2^3R T(B?#'9C- !y ~#Z10>N?$%Y4 )%FN? ({ usis< 3(&^T05<>7;,#4[:O(vAfGEtYB z^~4j #,;b:['~Av@~EQ Bak4~_H#T2 $$$$ 2T"`q$&'6&'67327&#!65#&3jjdnh wWVݱqZre[c7 7 cyX ,35'533#3!'#'5!5!5#53!5!5#!!ʶ~~ blvF F A<<3ffX苜qXGccGap 3264&#!2+73 #'#5# 3m`hh`2`Ĉѳh|;vvʷ}f33#!!#'!'57!5#'5735 64pzp7d+!#!573#'5!3!'573!#'73!#'5IxOOTxSVVdY\yvVPPvIyY',32#' 37+ &5%6323'#57'53mJl{~m@+ݼh4144'0>,_ vNknmmnObs32732753"'#"'432364'5;+"'#"'53275'&'&54?5572'#&'&547634%476='4&#68$$B )Z>&A_;i88u-o1bFGfQ_M5mwLbkjI,K=''8 0##Rm4 ڹ+ܴ5!PP"4\=ѻ"8Qý32#"&546324&"26%#"5432itvxsq1"00" 0/B//B/#a`ir|H!//!"00""00"!/0 _b 9>DJPV\bhn27654'&#"&7367'67675673#''5&'&'7&'%67'7&'67'%7&'&'%6767%&'&$h%$%%34$&1++XSA N@`==k>P CRX++XYC P>k==l?L ?Q oL+ Nn;P?;@  nMNn3%%%%34%&&%s==`?J >PW,,WW? K?_==f?H?PW,,WU?H?^<=Ke+cL mCP`k<<!4(0847632#"'&7327654#"&#%#&7&'67&'67!󫪪vӤ=6 5N'V[S.U[R󫬬񫪪񿉊 ʯX[V[X[V[!4(0847632#"'&7327654#"73$3&'67&'67!󫪪vѦ=63QNV[S.U[R󫬬񫪪񿉊w  'X[V[X[V[!4!)47632#"'&%#$''&'6%&'6!󫪪4>;D@KDzcngk?dnhk󫬬񫪪I kpinipi !4 "*2:AIX3#''%#&'52#"'&5476!!'5%!!'53'5%3'5%3#'32765'&#"M==,/0#H 8&O6 |7iY06./==e6a&i1r4z012+KN2HQ>>>>f^2"/1]8`1"Y 4f2y5+ +"'5$76%&'547327676=&#; hz0/O{[(*TQ~`NO =tR[\ 8d<+% &56;2'5$%75#"3vh0.P~N^(8P,VRZycOpO >S\^ f`1B7#5#53'&'&54767&'&=33676=3#327654'&O&"}|fzg}}"&&"}UQn$mQU}"$nQUVV{xVVUQ<"{u^^\ _u{"#| zUOOUz |#YOT{zQPPQz{TO@>)4'&#"3276&5476327#'#53'&`____`oŠqk]^^]YYňÁhgf@> '"3276'&'7#5373'#"'&5476j___``_ߓqŊqYX]]XYfhhĈÁj0 '&'&376&+"'&5'476%7!Z{z[ZZ[~\YWmpN#ZX[[YZ[PQmp#TG*52764'&#"#463233#!5sPQPPtrQPyzg֏LQQQPPQr{{t|g*#"#53533#632#47654&#"#ddiqqCBigIIugzyUr}ppDtPQs_CS 7"27654'&7#"&54767##53#533333#3##h. @\ ! 2(>>?ZW~>'3|}}! -/@ /- !^'?XY??~YX?(F}R}hh}}hLS<#5#535&'&'5'73'3#'73'676=35'73'13|e{vw}wwUATwx|xxS@Wwx}vv|d|re{Eus~~suE|VAKtrrt@X{Ius~~suI{dr|*! #!!!'!27674'&#_82V)3{D#MHZW{s{?zK8! %#"#&5463 67!2#6#";z\)MaBuh __ itBaM(]y tt[+##+tt\5."264&'67>3"#"&54767&'&#52hq៝rd:BJ|^d#!p⡠q $c]7A;{26XY "zz" YX62 &'5 %$ 56?6'.j拈|*xIIz'&|JJx, F42$8"3264,'5'&54632264&" &$#"&547>ȜmmNMm} lyzU<Mnnnm+}7 lyzU<|||,&(uO#eaHG||||Q'(sO#e‹`IH=! <>'.463227#"&5454&#"&'&5476766&D9BB8Ğv?W:pbW~tp) "-ff)-gtpQ@3AA:ACj›GmN?ijbvr56WGe((Wi0154d)-?/6?2>32>32#&'567'6'#4&&#4'3>64&"-S5,9"\0+Fgv!4u|W")^,k ikdS!eb[_[H|NYC:RHB=G`SnU|#!!!53&54632!!5#67654&"U't00Z =yy= :]ZssZ JjkkjJ 2f4%353'5#"'&''#&&#4'3>32>32YE;<<-!&Y*dx cf_Oz.*O2)7Ze``b<`WuALh`8!5!1##'!5!_drrPk^K{U_W{'/27632#"'#576&#"4'5267>327&'"2XCZd}uud$gq~dV)40tlx!&%"dLk}:Uwma4 sOHK{wY@x A63276327632&"'&#"'&#'6327627632&#"'&#"'&#'YR #{=('%{XNCEz>O&z>'(#&R #{=O&{YNCEz>'(%{=('#&ee22ee$l66kd23dEPdd33dd$l76kd34eE^s#!5!37!!'  L34((C $Td67&'&"!3!67>54.#"!5&'.54>325467675#53533#63232>54.#"3'8xpA?9l9>@q<;9'D} 5RTP=: SSPSS ;r>>p  p>>r> !A% )RSQ1 )6BB6) 1QSR) p  ""V{zHNRh|&'4>32"'4>32&'4>32&54>32&54>32#!5!'!567>54.#"32367>4.#"323732>4.#"327>54.#"732>54.#"I )),(?)(#!3()3$))BG!(( K{mg,;h IXI L$  P   H''1|G''#s%'')7$ ''A  ''HTݬ9.%~~ rF)~ wpa!'-23353#3!53573#'5#5335!75!!5'57!ePPeeQQeDpH>H@A~}}~00mrTTreppe-!7CQ^&54767&'&'5676767&'&54>32!535#5##3654."!2>4.#" 1""#@%@#!@% ?$##0 ܍a1%?E?%4,/--+D,/1+ 4;AB<>"  "#>"">#"  ">#10$ITNnVB, n ?%#Naji-/4^t&AYcgb3%' + ((NV8OQĿ>:<uyg**5 k5h P[32>4.#"732>54.#"!5&546767&'&546767&'&4>32'&'.#"+L)+L*+M)(LH     > |n @: !:;! 8An} E04`a30TL**LTM((     ++x: 8>>q ?9 9? q>>8 :x++c^UZbbZU^jg% $Tdhy47&'&";67>54.#"!5&'.54>325467675#53533#63232>54.#"!57#&'.54>3234'67632#7$5oh<:5d4:;i865%1MNJ96 MMJMM 68JNM0v    +0 +/0U-,,+,.T1/, 9j9:h  h:9j9a &LMK- '2==2' -KML& 1  V//X//X//V6HLP&'4>32"'4>32&'4>32&54>32&54>32#!5!5!M ,,.*C,+%#7+,7%,+ FK#++ PDNAM**4d;K))$'**,dY&"**E #**L:ƥ??@@=%)5!5!3353#3!53573#'5#5335!mD^JJ^W^KK^׋LLZZ,}}uz%yuu{{u}--4@4767&'&'5676767&'&54>32!&7535#5##3 1!!#?%?#!?% >$""/ _1+ 4:AA<="  !#=""=#!  "=![1=%T e >6.HC'L"'G 12h[FH`[$%ok+*8d .Ncv[.7&546767&'&546767&'&4>32 w "E> #@!!?% =E!w ./@ =CDz" E>"">E "zDC= @/.QO##"'##565'##"/547?kM ,4N"DF &Fi?JO/FB!O {|Im<&=M2227632#&547636=4'&#"#4'&#"=` ]d2 cBU;/G;SXMB:@B ս;7hf% #>|\@9@O &&5 iC n:^O G  %2O7236;2"'##'65##"'&5476;235&'&=476jS c1=EO ;SCFRʝT6*F@E1;O+.`162V Yi8/D ;8[B VRP"<B+"'##565#+"'&575477;2732;276=4'&3&'"ih;F(wQ"DG".FWCNfBy" bODUq5u4  Pro@ |S`64 '4'&'~ v '  w (  w ' $k=F F>jG3~Pjb^*IerN{̑?qJAe}Ωv6\~x(ONPPNO(!8?|EE|?8!r!_3#"/4?23D-!]UF+}{<!/3#'654'&'#"547326Rs9W5[S%3;B[/OBC'*|<j_g#"=4?2%#"=4?23ɧ%QM?ˠ)TK7(w7џ5s ?|O"'4723!#"5472!5YA>RHIOq 1 ӫg 4D% 3363'$6'"I+4 puoS^*  3%#'#3%#';&2 IʗHj7*(,377#'#'547#5773%%,ppsr,'zzxz'984?/99e5>:_`qE#&#"'5654'5673;54'56732733273+&##&"#&'565*G1 VV2Is3'{'3sI1VV 0Gs3'{'3sP3+1='3sH1WW1Hs3'=1+3PH2WW2H. ;G7567&'&'3#6737'#&'7#&'6735'67#3335#5*)SR))&*&';((:'&)'ȶkkn\\[[nȶ kk n[[\\n`ff/ee.((&(;((:(&((@))SS**n\][[o jj |o[\\\n jj e(P( /N#.6CMhw!2732!'5675&'&=32#&'567637&/7&+"+&'532?4/%32#'#&'&=4?#'57335'3!273+#&='#"/547354;2?!&=35-,;K> #WU* y "њHV ηz/;@"q=o )we)$IY'L ALaXwH >X%CII$PC/DN6g+  b% #  jnN :3 O+5{bQ< ,d-  X] f '^ JJA!< 8 2E35733!&54?'7'7!!"'&%#'73676'77'7'&'676}]} =--HW(7*! >y*1c{F=.,H-.'d(#Y+GC8957jN})%%tGl5nm3(,H:0/(_kiN}!N920K 1DW3!5>7>54&#"5>32&54?'7'7!!"'&%#'73676/77'7'&'676@.#5*"I?6O"[m" c<,+GU 5) <|w)/ayD<,+G,,&a(!>B<#q'%NG91 M7835hL{'$$qEh3kj2'+G8/.&HghL{ L8*/D *(=Pc#"&'532654&+532654&#"5>32&54?'7'7!!"'&%#'73676/77'7'&'676D|q%N24H'CB=9PS3464E>6O#]o 32EX!#"632#"&'532654&#"&54?'7'7!!"'&%#'73676'77'7'&'676H$evyn$L27C'y*1c{F=.,H-.&c)"ERUHHS S /(*. 8956jN~(%%tGk5nm3(,H:00'\jiN}!N91/K "7J]"3264&7.#"632#"&54632&54?'7'7!!"'&%#'73676/77'7'&'676]'00'*//l+2>AB(S`dT^dyg7<,+GU 5) <|w)/ayD<,+G,,&a(!.T--T.H D&RECSukf{7835hL{(#$qEi4lj2'+G8/.&HhgLz L8*.- X.A!#!&54?'7'7!!"'&%#'73676'77'7'&'676n!?/.JY08+"(@},2fH?/-J.0'f*#&K:;68nP*%'wIn7rp5).J<21(vmmQ"P;:1-K':7&54?'7'7!!"'&%#'73676'77'7'&'676N!?/.JY08+"(@},2fH?/-J.0'f*#:<68mP*&&wHn7qp5 ).J;11)wnlP!P;;199'9HR!273!567&#2&'676+&'67'#'6765'533!273+#/#"/47$,7Jv I MO $p%|I ^ [T<K"(~GW$?8?])( EAs#L, T 0 ` +WVۄ`$$a.|%2<J\e3 + &=762367#&'&#367&#&#"3274/"34?3'35732?5#+'535^-J|@h'\-e@<r2&H); uZJM =9jl:jgb.Qi2Q|酝:*}( dpR!h j `]_i$x:-(^%,3"ؿEa HMP E7g /:BR`j # &5%6; 65%&# 327#57&/#2#&'676+'%3#'#&/47'3327##'%3#"/6j1M{ǮG&z v$ExݨE(+=R:n:D!s Y!gQKum;} uA;>e=g¯Cy??ԢB|*>w4I ' 5@` bC$ j$H?iM!%.|7H27&' # &5%6367&#'.7&67263'#%; 65%&# mJB|e6O}°I+o|BJn^jaygwaaygxaj^w$FyتFG퇢D{C?` B]ww]B JХC}.?yP%.232#!7&!"4#".54767267p   {u*_ Jcllm8*#I%<($|ʀX#{Nwt7mnld4)5:IIIB,<_4767632#"'&'&!%!!  >W$`4 Z|b<_/374767632#"'&'&4767632#"'&'&!%!!    UW$`H    Z|b<_/GKO4767632#"'&'&4767632#"'&'&4767632#"'&'&!%!!      UW$`H      Z|b<[/G_cg4767632#"'&'&4767632#"'&'&%4767632#"'&'&4767632#"'&'&!%!!    /    UW$`  K     Z|b<_/G_w{4767632#"'&'&4767632#"'&'&%4767632#"'&'&4767632#"'&'&4767632#"'&'&!%!!    /      >W$`  L      Z|b<V/G_w4767632#"'&'&%4767632#"'&'&4767632#"'&'&4767632#"'&'&%4767632#"'&'&4767632#"'&'&!%!!  0      /    UW$`+    .      @  Z|b.t )2 $$ >54.#"4>32#"&h..--t*Ƅ2..2/.y )62 $$ >54.#"4>32#"&$2#".46h..--1.-.y*Ƅ2..2//2..2/.t 2 $$2>4.#"h-..-t*f/2..2/.j '2 $$2>4.#"$32>4."h-..-q.-.1-j*f/2..2/y2..2/R7!!R-ӖR7!!%!!RMzM; 67'&/#'3#67$#%ׯP==Ͱ̼bN+#!f"K++!|o554.#"##"'5##"&'&'!5!5&'.4>32!!676767'7' :!9!"9 :! F GF;kY_1278e56d:81)RLk<GG E~^ : : ; ;NG 5 e4G( Li) enf77fne )i (G4e5 G( Pm 9Y%&'%67&673&/'67'&'"&'4?&'37' '7 &/7&'#>7$%88EFu/- 6uNDL22LENu/80uFD8jU45B%y\A@Yy$F 0=/0 ,-X70 ;~*2 %% 2*~697X-,oo  +F9d1 ) ( 1d9C1*CT'&#"'5&767#&$'&%'6'&'''$'676'&5$'6%'.54>32D$ "@F,NNNvF8p^Lb2  N**+ B@0"AR/0?wA%od/D&3.YaQ/5#3$"uI' @3/u= =#n- .... w3% % 32+#".7!"&'&'#&=4;73737D*$#GFHH%#Ι+(&aa'm99m9 3.055_4i4_550.3k  #tttk"632&'.'#####֊v)%8 _^>:k{ZG_?g@`H,>|:=+,j,,<6O/233<bbJ 132>4.#"367#&7&$735&'.4>2,P*+P,.N+)PƗd"/%(MM~95DLMNMD2)WN,,NWP**g!ʇw֜s~  &JJ&6d_32>54.#"%2#".54>''#/'7''7''7/5?'77'77'7?3777'ighilddk66676W- E?6K6>F -V60dO `_ Nb06W- E?6K6>F -W61dP `_ Nb1ghhghgg 766760eP `_ Nb/6V- E?6L6>F -V61dP `` Od16V. E?6L6>F ,* ? !&+05:?DP3&7"7&'7&'7&'7&'6'6%676767&77&77&'"32654&'5&'.4>323#67#&#"'5&'&547&"'6%6761a$O` "NiB*4l,4"U47),3($aM#"aT*BF 4,=44#Y3,)0BB0/CBO"!-$F$FJF1.#- -#-2MJF$G# 8<g7*!2U6J%n=_CBnT> rYw0d "*7]6U$u=n;wBLz >\e0wZ3C.1BB1.C(N "%""%" M#p.PA.$;QW$.AP-{ "R &.FR2#".54>&'767&%76'&''67&'&'&'67676547676'&7>3263'##"'&'&'&54767&'&547676&'&#"6&%6767&'&'&676&5467&'&6732767&h@9h),)RP|  |PR-*g:>/**Y&()((')&&)')(()% @9f+.TR"`33`\_ .np, 00441/ ,pn, ]]&&()&&EEEJ032WyQT.,d9@.**..1230IDE%&**%&F+.SEFE.IMMI."#FES. !  ";-0.--.0IM+.REF$$1.%2S_`Q2%-1OQQO2-$3Q`_R3&.>GIIG"" 7447#.$$FER/+L"  !75/57%"IJJI* )p~67&'67&'4&6%67.'4'6&&'6767&54?67&'&#&'#&'5&'"'67&'&47632>4.#"72#".4>"0'-, )*#'05%"*%%, ),,"GNYI'+""$(JYNO21, 9,4=SM:7,: -12-[[Z[]WXIOMKLMN2 Y{\ bCWDJgABcp7L^BML0b \u]! @R%KlhhO+ww+O hhlK$PZX'@D 0:)ww*;0 EA&XZw[[[[GJMMJ"( %3!'#!52#"62#".54>o:5(67%'$(n H0L*I"33'554#$/* PR 6h"&>I > >A>!!ua!&5476'#5!+{h_a66mHHm.rZy'#"'&#"'&'&'&547676763232767676'&'&'&/&'&'&547676762!2!%3276767654'&'&'&#"&#"3276767654'&'&˗Pz  ,D@   7;+  23  M98G ):               r         0   L:5U        .\ r26767654'&'."#"'%"'&'&'&54767676;27>764'.'&+"'&'&'&547676762%632$"26767654'&'&#  #  @!R763276;%326767654'&'&'&#"6767654'&'&'&#"32ɓ E79E"  21 +96  >B+  # zOo              49D   /    "    :           =JZx-4H67&'&'&+"'&'&'&4767676327632 #"/#"'&'&'&54767676;276276767654'&'&'&"276767654'&'&'&""'&'&'&547676762"'&'&'&547676762'&'&'&547654'&'&'&";276-&#"+"276767654'&5476%327%&"'&'&4767628?.  !  !a=?^'_)\?=a! !# "!.8?""  "  "  "   f  2 .?E S@6f G=. 2  ŕ6@  B   )_>9 9>_)  % I        ? *        ;d.      ?P   !-  @( ,#%>  NpNM&_*# (! &) ,,f&  ! (K_  Z0-  Yi D   cp-)L &gK1 [N3$ n/ "!0{I"H#fmt2>,7HBI.;/8[, Q[z)  .)S9L *E   '+(4%(4  *X >  7A) 0'-570+I;-% *#%(0  ]'5.  U-9Lp{7654'"'&#"+"'7&54?67676763276323273#5%6767'&#"6%"/67#"27632327654'73654'676547& t!M#l5G;@\ 2BX-0%-m * '?,N ?'!&R;-> <\-R5-6E!"$b$6$!q",; t@P"#C  *FS "DX@! %z$(`]jMP   &O/+@ p_u<  3  DMKZRdYL6D_YBI5.!!''kGWz")3SZ67654/##3276?7%754'654'36767632#"'&54767632'0,,; (| w| ki5.U,\\    %g .  ;,-0j{w {w3V. T, \[^     -5& '-EL4'&'&/767675'7! !'7!654'!4'!!$4767>2"&'&'!654'$$CCC||]V|V#u    9Z(f(Y7%$66%"'&'&'&47676762%'b&I    )^tN/  /dIW?    @ViDV /  V%&%$64'%%&'&'&"27676@))< "  " ]NO]    9|23277632#"'&'&5476"# 6v>? (-=%P8j?  #j<  y"$"JrB23277632#"'&'&5476"" YTo k%,02?=V8jiA{C {u+'qP?  ' 7 sssssstsXrsrtsssr@Q  ' 7 5NB2632#"'&'#"'&547677&'&54763267632676   Bt  ah>) c!  ,Hs *ܡ   },"2A "  {3+Q26#"'#"'&'#'&'#"'&547&'&54767&'&54763267632676  ΂    NjM  rkW* & \ *3 #ﳎ*3 Tv! ( 5+" , @V #!!!!!%!!!!!!!!#!5!3 ;E;JEJJJ<;E;EJK!IKV{ !!!!!!||uv9f35#7!!#!5!3*+մܳ*ִ0r!!%!!!!!!/0``1/`1) !!#!5!3^^^~S3!!'#'!!#!!3!5LDʃDMA #5!#3!3'3#!#35!3###5353;9nj#5AI##0vQ#"#3;54'&'&'!"3276767653#4'&'&'&+3!52767>5/]LED73!&&54GBO]63H>SkS>H388]OBG45&&!35FEL]63H>SS>H38882I32367675&'&'.5467676236767>32#"&'&'&'#"'&'.546767675&% >#"? ?"#>    G   >#"? ?"#>  G     F  >##> >##>   F    ?#"> >"#?4'&'&'&'.54767676322767676767632#"'&'&'&'&'&#"'&'&'&5476767676765"#"'&'&'&5476767632B ,#,+%) 3!, &&*-#''#-*&& &$0 )$W$) 0$' L+,$&&$,/"&&$b3") M*,%&&%,."'%%0 )$W#) 4!, &&+,$''$,+&& &$1 ,#,+$)0267632#"'&'&'3&'&'&54676763267632#"'&'#"'&'&'&5476767#6767632#"'&'"'&'&'&54767#"'&'&'&54767676325##"'&'&'&54767#"'&'&'&476767632&'&547676763235#"'.'&5476767632&'&54767676h             -  (                  '    *             .         +j276767653"4'&'&'&+sidUS+*+'WPihtthiPW'+*+SUdi),)URhexuhbXR,,,,RYaitwfgSU),%t?247676763"'&'&'&5!276767653"4'&'&'&LEA86:4DDMMDD4:68AEtjdVT,*+(XQjhvvhjQX(+*,TVdj-76DCOME@:66:?FLOCC67-*UShgyvjbYS,-,-RZbjvyghTU*,(8 %%! !)ttJHcdecH]F]~]^C5 )!%%!2#"'&'&'&54767676hzt@z@Az@t{ne_RP)((&SNcdome_RP)((&SMdd0x}*(QObbrle]TP)**(QObbooe]TN+*(.'"276767654'&'&'! !_)(""""()_)(""""(Y$(*/.*(#  #(*./*($]^#< '1%%2"'&'&'&5476767! !#xxa)(#""#()a)(#""#(YDgghgD^I^W $(*0.+($  $(+.0*($ YZ(8 3'7'3!%%!! !hE۱CCDe g  g f ҁссi:]^= 3'7'3!%%!7!7'7!hTDEDDTNPPIQ2P11P2#mm(? -5%7'%!! !] P  gfeer­696ƌ]^^. /'%!!%!77!yrryyqm"_^^l%%tu%ߴ߳!63% %#'-7:|:||9|kֵֵkֶWz`37'%7% %#'ZZZZZ]^Z^ZZ˛ʜm˜˜mʜ0o #'!5!73!P6M6P$6PMP66R#6QLR6$Q6L$z     - h<_K <; L_zK <; J`;<_  '!'/7'?!7% % -[9^[[ZG^ZZz'}*}zy}*}'q^\\ZG^ZZ:\O}zy}*}'yz(}2 % %  h_y(_^(zFGs% % -hVHzVUzHrVU{HUVH% % -hhhႁhhhႂhhh$h7% %' 7-'hX5 5XV6 6g5VW6 6WV5 0t/37%!!%'#''7'%!5!%7'77;[TA:#T8#AT[TA#9T#8AT T8#AT[U@#7S#9@U[TA8#154'&5476276767632#"#"#"327232#"'&'&/"'&5476=&'&'#"'&'&54767632332?&547'&#"#"#"'&'&54767632676?>$,.c.,$> ]5 71+: H3> kR  Sk >3H :+17 7Z  >$,.c.,$? Z7 71+: H3> lR  Rk >3H :+17 9X  ib9@R'))'R@9dg  8d< +$;)01):$* \570+9 F3= kQ  Sj  =3F 9+077Y  >$,.a.,$? Y770+9 G3= kR  Qk =3G 9+079W     > h`9@Q'(('Q@9bf  7c<+$:)/0(:$+HH#:.'W4,CEH@,4W'*>&DL:Z##KGW,f ',;[;;+*Q--}KOW*AA*WSGu5-U&+;;[;,)  '+;[<>**Q--}KNW+@@-USFu5-S(+;>Y;+* !67654'&"327632#"'&'&/#"'&5476=#"'&'&5476763232?'&#"#"'&'&5476763254'&5476276767632#"'&#"#"'&#"327676%32767654'&'&#"#"i/)F)/,UK:M $\/8E(5>H6-EFJA-5H;8)D7.\# L;KU,*UK;K #\.7F'5>H5-DE-6H<7*C8/\$ M:K U+:6-21 4 $:<;$ 4 22-6 O;(A7##7A(; !*:#.#;&Rm!CcJMU)??,RMJcCoS%9#.#;)!  );#-$:'Qn!DcIMU*??*UMIcD oS%;#.$:* f /D;;D/ $i"276767654'&'&'767632#"'#"'&'&'&'#"'&'&'&5476767#"'&'&'&5476767632&'&5476767632o00'))'00o00'))'0]0+)*+%# #+%0%##&&.0%+%   #%'.0$,#0%-# #%'.0$.  #%'-1$,#$%*/0961/*%%*/1690/*%) "*&0-(%$$$)-0&*!&"*!$$)-0&-#%(-0&*"" (-0&*"$$(./& n%#"'&'&'&5476767#"'&'&'&5476767632&'&54767676267632#"'#"'&'&'&27654'&'&'&"67&'&'&'276767&54767'&'&#"276767654'&/?676767654'&'&'&#"h &,&1/(&#!$&1%-$!&$/'.)2$-%c%-$2-*++&$!$-%1&$!#&(/1&,& =s0 9 55%R 9 !_  , 9 R%5s  _!#'"+'0/)&$%%).2'+$ * '1.*%%%%*.1' * "+'2.)%%$&)/0'+"'#L% %L %#M L:2(&6  _ M#%   6&(2: -[3b &'#"'&'&'&547676763267'&#"327%327676764'&'.#"7632#"'%&'&54767676324676762676322##"'&'"'&'.5#"'&'&'&54767"'&'&'&54767676&'&'&'&'&'67676?&'32767677676765&'&'.#"7676767&'&'&/326767674'&'&'67'&'&'&#"67'&'&'&'67676767"276767654'&'&'"'&'&'&54?&'276767654'7654'&'&'&"67'&547676762    (  b  (       #!"G"!# * " ' ## G!""  '  Y m    ( y   ( O k  w  m Q (  O (     ? ?   + / L* / *   +. M+ .*   !!!! '? ?' "#& #'"!!  '? ?'  !"!  $&  m P    O        m     y    O k         b       %j<\l"276767654'&'&/2#"'&'&'&47676762#"'&'&'&54767676% %-[''!  !''[&( !! (TB39)+,+76?A3:(+,+76>tjeVT,++(XRiiuskdVT,**(XQijtuz"z!uv!z"z#&(,-''""''-,(&#e)*:6?;97,+)*97z88,+,*UThgyricYT+,,*USigtvjbZR-,zvvz"z vv!z29"327632#"'&'&/#"'&5476=#"'&'&5476763232?'&#"#"'&'&5476763254'&5476276767632#"'&#"27654'&%&'&#"327676%327632 654'&'&#"#"i"(-+S I9K #Y.6C&4<F4,CDH?,4F96(B5-Y" K8IS*)RI8J "Y-5D&3<F4,CC,4F:6(A6.Y# K9I R*"(-62 #9~3 #9; 01+56 00,5`%;G,A $.?'!3&@!*Yx$ ImPT]-EE0ZTPmI "zZ)!?&3!'@-$ #,A'!2'?!*Yx$ImQT\.EE.\TQmI#yZ)!A&2"'?.#~&41%%14>3t-3>41%%14>3f^CC^B%@#@@%@#-4>41%%14>4-3>41%%14>3+  V  ++  V  !r +?Sg"&46277''"'&'&476762"'&'&4767622"'&'&4767$2"'&'&4767eeeBABA#U##U##U##U#V%**%V&**KV&**&V%**~ffeAA$AAV%**%V&**V&**&V%**#U##U##U##U#  &3@MYam+%5%32476;#"'&'?632&54?#"632/&54#"/72#547"&462"'&=3?_?6 6  6] 6'?&M&C_CC_?&M&< 'L&&L'!6 6^6!6 >_CC_D<>"l267632%632#"'%3#"'&'"'&547#"'&54727%#"'&47632%&'&54763&5476h!#;'&1'h 9##8)'1!, ;#A#; '&1')8##9 h'12;# 4%.&! 6 = 6%".% 3 3 G%.56 = 6 %".G 4 $8 ! 54."#"54$32632#"_ ɀ~~a>E  %!#!3!p EE?p9E=V %!%!35!cE:d FF8 %!!![:F:\;[0q %!!7!N]<N;)G+t  ,o9; #q !rQk!k`!733}b>v!#7#)iC~####g]jOS2#"327676765#"'&546;57!##"'&'&'&54767676%#     42;%-n`Ԯrr#26A@:V7:$)&7.Yq   % $.277g[(dVDQ49%*,04?()-#52&'&547676762"'&'&'&5476767hc"$njln(Lfe*+$$$$+*e*+$%%$+! #'(*dRjjSc*('!"%*,20,+%""%+,02,*%"%C&'&547676762476767622"'&'&'&5476767hcn(%X%&&&W%(nؖe*+$$$$+*e*+$%%$+,Dj*('(&,,&('(*kC"&*,11,*%##%*,11,*&".i%%&%&54767676247676762hhÔ*(42u24)(()42u24(*i\=97,*+*96@@69*+*,79=Zr_'#"'&'&'&547676763"'&'&'&5476767632_dA=;0-/.=:DD:=./-0;=Abx1.=8DC9() 1F="%".4"tNa5&$4! /.r<@6B2L_0>Q#kI|"rz7&)?),%=^K=.C26F@13.!9+cM313N676 547&'&327#"'#536767&'&'&5432&5476323254'&543253%5@26`', =NR6#!vWR>4 2:O t51"".1&X.RO A5ȏ )T/186,FAS :#(=:tA0 9SD 'A#5}11BO9 "'&'&'&547676763"3ᗊpm8884qlYTN! !C@RP]e:6pltm9:'62~~jf77 5276767654'.'4]PR@C! !NTYlq4888mpe'67fj~~27&:9mtlo7:fkR !&547jljjlyyxzQqpnc$!!676n wu;;vi43f$lcC}U# 3tD}U 3 DutV.! !JV. ! JA! !m^\GHB ! ^^HHv!'7DWWWW|'7'7WWbW>W^$#"&=4&+5326=46;#"3xMe,,fLx1d=AOOA=dƂ׈ihDŽOߍOi(326=467&'&=4&+532;#"+5nCFVU$#Cn5BB*)p//oTBB¥P⎁AAPDBۇ45iDCS/~ #!5!3}t]} 7%d^=]d>S~5 /%0~##t] '-f\=]d]>-!'7!. (``I)=2"&'&'&5476?!".'&47>3!'&'&54767>2 '!  `!!  !' ,&   &   S~&!5! F78-x!5!5 V(Mr6u #3#3#3!!5 鴴ZZ---I(,,,,S~  55!#3#3#3F9UU**b]^bUUUS~!!5 F7.`tq!%  qR{V$%! S%@{V t%226=3!5 5!"'&'&'&6  $hI$  h$   6<47676763!5 5!"6  $hI$  $   $O!! e 6n55!lMlTwccwekl!5!!53 ' !_[y"kd""e/l5!!53 ' !_["/d""5 !73#57!%!6UcGjbzbdǩ""ap 5!'53#'!!!7%acߎA[؁(ZqZ{{{ĒҒ}TM %'!'!53 !;qKRnKa26wwIw22wT}> 3#5!7!!! ZQtZQ0L>ssjLK2Nu '!53#'5!'7! !pSn%R&%Ua2wKJ,Lw22w)1 '7!573#5!7! !r&j&St&SpWl6qM,LLyy77y@!6767632#"'&'&'!  6IYZgb^UMI%&&"LF\Zfc^UM3!t:6I&&&#LHZZhc\UMH'&&#L2<tt XNy "&*.37#37#37#37#5'!!55!!3'#3'#3'#3'#r+qr*rr+rr+rV{{*q+*r*+r++r+9Ɔ\]t] 7&#"7'7 #%5#t69.wZY96t".*X/S~k 55!5!!7'!nnUVGG8:ȏu\j '327'' #395t".Y/Y"u69.xXXN2%&#"6767&'&"67632&'&547676767}:"  s %*&*(&"!#!"O>>;*E/4767!"!47676763"'&'&'&5!3!&'&5v  5 $ %% $  H vgMME %!#"!% EMu\2&'&'&'&54767#"'&'276?&'&'32\":  #'$'$#Y@I:86s6::I  #&'#'" X  :5*+B67"'&'&'&547676$47676762"'&'&'%&'&'&547676762$[ /  H =a=   / ZI=X  q> d(*c     XJn.676767632#"'&'&'&%&'&54767&'&54765 #&+*1)F-Y)) .EOO/3S>>S&/ #$))%#]]#%))$#&e"'&'.54?654'&'&'&+"#!".4?64/&4676763!2;276767654/&54676762 I ]]I    Q      Q  %eg"'&'.54?654'&'&'&+"#!".4?64/&4676763!2;276767654/&54676762 GKa u~iKG E     2 +#76767&'&/3#6767!5!!5!&'&'g?j7R=y66y=R6k?VO S+ +Sd _8=eyu'&utj54&#">32!5h: &DX^Deb`T\\-?ZP> j: =TBV\L98FGDC+P=YNc{;f@10!#!f-1@ 1<20KTX@878Y3#%3#u810K TX@878Y@ //]!# !@   " "999991<<99990K TX"""@878YK TX"""@878Y@]             ! !.]'&'&#"#5463232653#"&j6-(mX$K&<'$'kX%G"<2j'<9j810K TX@878Y@ //]#7b@ 91<90K TK T[X@878YK TX@878Y@/// ]!#'#5߲Ʋh@ 91290K TK T[X@878YK TX@878Y@//// ]373ݲDz/wqB@ 9910KTKT[KT[X@878Y78]'T%#%vw 332673#"&bLM`<=<= @  ]]120332673#"&bLM`<=<=10!!b/@ @O?/]1b-X&;<b&q>#-"&q<, &q=V'@`; 4&=;>'D@ X'<b=+'<s?T'>V?$'=,? $&C=,X&C<b[&C>e&CLk&?LW+&<`DL_<22mmmh!%5yBj-q{s}fosXXX!}umuVw\\Zj9so/9^Z\bZRbZ#oP7;Xw-wX--XFo9///!!!!!!w\\\\\wjjjj^^^^^^\\\\bbbbbbB;;!^!^!^ZZ\\\\\ubububub muZZZZ%wwwl\b\b\bD##ZoZoZojjjjjj;sss+-}a\}l[& ZPR\ b:ooZZus ns nI!^\bjjjjX^\b\bwZosbb\bb;1%onxxxMFXXff0l|bbjjXkrPPP@DxbKQMhA[[[:XUTP:D.vnd7wl=x]hF3BQJ4.98QIIUUHH  -L )'JH --L) NNoSV;`S/-Lt - -X-Jas-yU!}!s\u!Vw\bZ\PZ6L68baP/bbLAHE?LbL?oh"$":3\b`Z cr-3\VV.muw!}(}wwuV\Z#PeNN(|<^Aw2\fEVb;O7aNN(8S\\#;/\}fu%Z;7eue!^!^\\X\X}f nww\b\b\b;;;e(5fiba)(+;EK!^897@@=Bm3l=k==^Ed22biZKbf=@eNiHZBB;GD22(*K= j9[7542bJE=ZZVZuuuZZZVRRVRwww##ZoZo9P;\\\bj;;66666666q5T"h6,((  r@UUbbbbbb\&LLLLLLLL{n????????p*?}66bbLL??66666666q5T",((????????p*?}6666666!!!  y   ) LLLLLL-?????8UBZ--j9Z&&% I9% .;Zu!///#/#/BBBBB;IBBBBBBBBBBBB9?222B77BBBBB BB B BBBBBBBB}}BBBBBBBBAB',B BBBBBBBBddcddcBqy1 XXBJ/XXXXXXXXXXXXXXXWXXXXXXQQXXXXXXXXVVNXXXXXXXXXWXXXXXXXXXXXXVVXXXXVVXXXXXXXXXXXXXX2222XXXXXXXXXXXXXXXXXn//XG#XC@2QQniEiiDDu777777aa"5"Y::;+6.ocN8/&/// "N`ya7g!!!!GCL54=/U28Y^CVpj6gv2 1.rjD7`./<KD$>K--9.7.P<<<<<<....RRs'J6*R*"..:=4%=?D-W&W;%J@3@V90~0G+%(C(#(=(.6W0$2$017+!$%2 02)!"$E=80+Qg.rA1fnCDStSt-IS-6SS`{{66O6ee5a}T2)XtSuN*u5&%2Suub .- /oZ-----    +DDDDxXH0d  \  ` $p||,D d` x h !!P!!""H#@#$`$%& &'`'(@()**++,<,-.@./H0@112823(34t4t456778$9X9:;<<<P>?D@@@@AHAxAB4BC0CPCpCDDDDE$E`FGGGGGHHH0HTHI$IPItIIIJJKKKLL$L<LMMMNNN0NHOOOPP$P<PTPlPPQQQQR$RDRdRSSST$TDT\TU<UtUUUUVV(V@VXVpVVVVVWW(WXX XLXlXXXXXYY(Y@YdY|YYYYZ ZHZ[|[[[\ \@\X\p\\\]^P^t^^^_8_P______` `a,aDa\ataaaab`bc0cXcccddeeeeff(f@fXfpfffffggg0gTgghhhii0idiiiijj,jDjhjjjkk0kHk`kxkklllm mXmnnnoolop,ppqlqr4rsstttDttu<uuv0v|vw<wTwlwx8xyyzzz{${{|@|||} }|}~$~h~lD4D\t4Ld|4Ld 8P4($( ,|h@4 0TLDH$p\p ,HD,t$<8h(HDl$hpD08H lT0h@T$Lh|PXHœ0Pxà(8HXhx,XpńŴ 4HlƌƬ Dhǔǰ(<P|ȌȜȸ4H\pɄɘɬɼ,H\pʘ$ˌˤ˸8`p̘̰̀ 8Phx͈͘dt΄ΰ(8tτϔ(8ФTlфќѴ҄<ԜHը8H֘ t<ؤH0ڀ4LdpݐޤpL\(X((8(D 8PhxH`xXh`p @P`p`HX8D p<,DT4DT\l $H`xP4L@t0H`$d|<<L\t \   d    $ ` x         0 H ` x        < L \ t     4Ld|P(`8 D0x |0p\D@DX $ l  !!!""0"#,#$$0$%4%&$&&'X''( (l()<)))))**(*@*X*p*****+++0+H+`+x+++++,, ,8,P,h,,,,,,--(-@-X-p-----...0.H.`.x.....// /8/P/h//////00(0@0X0p0000011101H1`1x1111122 282P2h22222233(3@3X3p3333344404H4`4x4444455 585P5h55555566(6@6X6p6666677707H7`7x7777788 888P8h88888899(9@9X9h9999999:: :0:H:X:p:::::;;;0;H;`;x;;;;;<< <8>>0>H>`>x>>>>>?? ?8?P?h??????@@@8@H@`@x@@@@@AAA(A@A\AtAAAAAABB,BDB\BlBBBBBCCC,CDC\CtCCCCCCD DD4DLDdD|DDDDDDE E4E4E4E4E4E4E4E4E4E4E4E4E`EpEEEFF(FdFFGG`GH HXHI4IIJKhLLMM$M8MTMpMN NNOtOPHPQ(Q<QPQdQxQQQQQQRdST TUU|VVV(V8VXVxVVVVWW8WXWxWWWXX4XhXXY(YXYYYZ0Zx[$[\\`\\]0]p]]^$^`^_8_`a<b b|bbc0chccddeeTef\fg gHgpgggh h0hhi,itijjLjjk,kllDllmm`mmn<n|nno8oop pppqqHqqrrHrrrsTsstXtu upuuvHvww\wwx<xxyHy|yzz{0{`{|}~,(d|$P8tp(|hXH`L`8|dt0(l4D 0\L0ll0T| T PT ,dHPd(04TtH@\ D` x\4Pl0Lh„t0D`tĈĤļ <XńHƤ`ʈʤ4`ˀ˰<X̠̄,Xt͜͸(DlΌϐH@Ҩ4ӈ8Ԝ<ՠdָ@lװ,D\Hp٘ LtT۔Hܼ4ݬ$Plޘ޴8HHtD  dT`P $|  L p   < h(h<DT$L\<| !`"|#$&,'$'(h)0)*0*++,|,-. //D/00d0112X3<5467(8P9<:L;l ?<@A|BBC<D4EtFHITJ JtKKKDKKLXMLNOP<PQXR|THVXY YXYY[](^bdDefpgikXlmnoppxpq qdr,s ssttTttuTv<vwyz~(~TLl|h|00p<`p(l<H|h <40 ,T|DHt@<<`LPPh0d,h0`”ð8LŤ4ǼLȬ0\ɸhʀʘʰ(@Xpˈˠ˸0H`] +e@_Ji S  "4   (  _ *n 2  ,% "j : & hCopyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain DejaVu LGC Sans MonoDejaVu LGC Sans MonoBoldBoldDejaVu Sans Mono BoldDejaVu Sans Mono BoldDejaVu LGC Sans Mono BoldDejaVu LGC Sans Mono BoldVersion 2.10Version 2.10DejaVuLGCSansMono-BoldDejaVuLGCSansMono-BoldDejaVu fonts teamDejaVu fonts teamhttp://dejavu.sourceforge.nethttp://dejavu.sourceforge.netFonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. http://dejavu.sourceforge.net/wiki/index.php/Licensehttp://dejavu.sourceforge.net/wiki/index.php/LicenseZ]  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\] sfthyphenAmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandicLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongsuni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191uni0193uni0194uni0195uni0196uni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEUhornuhornuni01B1uni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BBuni01BCuni01BDuni01BEuni01C0uni01C1uni01C2uni01C3uni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DFuni01E2uni01E3uni01EAuni01EBuni01ECuni01EDuni01F6uni01F8uni01F9 Scommaaccent scommaaccentuni021Auni021Buni0221uni0224uni0225uni022Buni022Duni022Euni022Funi0231uni0232uni0233uni0234uni0235uni0236dotlessjuni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240uni0241uni0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni0259uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269uni026Auni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02AEuni02AFuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02BB afii57929uni02BEuni02BFuni02C0uni02C1uni02C8uni02CCuni02CDuni02D0uni02D1uni02D2uni02D3uni02D6uni02DEuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9 gravecomb acutecombuni0302 tildecombuni0304uni0305uni0306uni0307uni0308 hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322 dotbelowcombuni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0358uni0361uni0374uni0375uni037Auni037Etonos dieresistonos Alphatonos anoteleia EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni03D0theta1Upsilon1uni03D3uni03D4phi1omega1uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FAuni03FBuni03FCuni03FDuni03FEuni03FFuni0400 afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061uni040D afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097uni0450 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109uni045D afii10110 afii10193 afii10050 afii10098uni0492uni0493uni0494uni0495uni0498uni0499uni049Auni049Buni04A2uni04A3uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B2uni04B3uni04BAuni04BBuni04C0uni04C1uni04C2uni04C3uni04C4uni04C7uni04C8uni04CBuni04CCuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8 afii10846uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni1D02uni1D08uni1D09uni1D14uni1D16uni1D17uni1D1Duni1D1Euni1D1Funi1D43uni1D44uni1D45uni1D46uni1D47uni1D48uni1D49uni1D4Auni1D4Buni1D4Cuni1D4Duni1D4Euni1D4Funi1D50uni1D51uni1D52uni1D53uni1D54uni1D55uni1D56uni1D57uni1D58uni1D59uni1D5Auni1D5Buni1D77uni1D7Buni1D85uni1D9Buni1D9Cuni1D9Duni1D9Euni1D9Funi1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5uni1DA6uni1DA7uni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1uni1DB2uni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1E0Cuni1E0Duni1E0Euni1E0Funi1E12uni1E13uni1E24uni1E25uni1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Cuni1E3Duni1E3Euni1E3Funi1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E4Auni1E4Buni1E57uni1E5Auni1E5Buni1E5Cuni1E5Duni1E61uni1E62uni1E63uni1E6Cuni1E6Duni1E70uni1E71uni1E7Euni1E7FWgravewgraveWacutewacute Wdieresis wdieresisuni1E8Euni1E8Funi1EB8uni1EB9uni1EBCuni1EBDuni1ECAuni1ECBuni1ECCuni1ECDuni1EE4uni1EE5Ygraveygraveuni1EF8uni1EF9uni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni2010uni2011 figuredash afii00208 underscoredbl quotereverseduni201Funi2023uni2031 exclamdbluni203Euni2047uni2048uni2049uni2070uni2074uni2075uni2076uni2077uni2078uni2079uni207Funi2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089uni20A6Eurouni20B4uni20B5uni210E afii61352uni2126uni212Auni212Bonethird twothirdsuni2155uni2156uni2157uni2158uni2159uni215A oneeighth threeeighths fiveeighths seveneighthsuni215F arrowleftarrowup arrowright arrowdown arrowboth arrowupdnuni2196uni2197uni2198uni2199uni219Auni219Buni219Cuni219Duni219Euni219Funi21A0uni21A1uni21A2uni21A3uni21A4uni21A5uni21A6uni21A7 arrowupdnbseuni21A9uni21AAuni21ABuni21ACuni21ADuni21AEuni21AFuni21B0uni21B1uni21B2uni21B3uni21B4carriagereturnuni21B6uni21B7uni21B8uni21B9uni21BAuni21BBuni21BCuni21BDuni21BEuni21BFuni21C0uni21C1uni21C2uni21C3uni21C4uni21C5uni21C6uni21C7uni21C8uni21C9uni21CAuni21CBuni21CCuni21CDuni21CEuni21CF arrowdblleft arrowdblup arrowdblright arrowdbldown arrowdblbothuni21D5uni21D6uni21D7uni21D8uni21D9uni21DAuni21DBuni21DCuni21DDuni21DEuni21DFuni21E0uni21E1uni21E2uni21E3uni21E4uni21E5uni21E6uni21E7uni21E8uni21E9uni21EAuni21EBuni21ECuni21EDuni21EEuni21EFuni21F0uni21F1uni21F2uni21F3uni21F4uni21F5uni21F6uni21F7uni21F8uni21F9uni21FAuni21FBuni21FCuni21FDuni21FEuni21FFgradientelement notelementuni220Asuchthatuni220Cuni220D asteriskmathuni2218 proportional orthogonalangle logicaland logicalor intersectionunionuni222Cuni222Duni2238uni2239uni223Auni223Bsimilaruni223Duni2241uni2242uni2243uni2244 congruentuni2246uni2247uni2249uni224Auni224Buni224Cuni224Duni224Euni224Funi2250uni2251uni2252uni2253uni2254uni2255uni2256uni2257uni2258uni2259uni225Auni225Buni225Cuni225Duni225Euni225F equivalenceuni2262uni2263uni2266uni2267uni2268uni2269uni226Duni226Euni226Funi2270uni2271uni2272uni2273uni2274uni2275uni2276uni2277uni2278uni2279uni227Auni227Buni227Cuni227Duni227Euni227Funi2280uni2281 propersubsetpropersuperset notsubsetuni2285 reflexsubsetreflexsupersetuni2288uni2289uni228Auni228Buni228Funi2290uni2291uni2292 circleplusuni2296circlemultiplyuni2298uni2299uni229Auni229Buni229Cuni229Duni229Euni229Funi22A0uni22A1uni22CDuni22DAuni22DBuni22DCuni22DDuni22DEuni22DFuni22E0uni22E1uni22E2uni22E3uni22E4uni22E5uni22E6uni22E7uni22E8uni22E9houseuni2308uni2309uni230Auni230B revlogicalnotuni2311uni2318uni2319 integraltp integralbtuni2325uni2328 angleleft anglerightuni237Duni239Buni239Cuni239Duni239Euni239Funi23A0uni23A1uni23A2uni23A3uni23A4uni23A5uni23A6uni23A7uni23A8uni23A9uni23AAuni23ABuni23ACuni23ADuni23AEuni23CFuni2423upblockuni2581uni2582uni2583dnblockuni2585uni2586uni2587blockuni2589uni258Auni258Blfblockuni258Duni258Euni258Frtblockltshadeshadedkshadeuni2594uni2595uni2596uni2597uni2598uni2599uni259Auni259Buni259Cuni259Duni259Euni259F filledboxH22073uni25A2uni25A3uni25A4uni25A5uni25A6uni25A7uni25A8uni25A9H18543H18551 filledrectuni25ADuni25AEuni25AFuni25B0uni25B1triagupuni25B3uni25B4uni25B5uni25B6uni25B7uni25B8uni25B9triagrtuni25BBtriagdnuni25BDuni25BEuni25BFuni25C0uni25C1uni25C2uni25C3triaglfuni25C5uni25C6uni25C7uni25C8uni25C9circleuni25CCuni25CDuni25CEH18533uni25D0uni25D1uni25D2uni25D3uni25D4uni25D5uni25D6uni25D7 invbullet invcircleuni25DAuni25DBuni25DCuni25DDuni25DEuni25DFuni25E0uni25E1uni25E2uni25E3uni25E4uni25E5 openbulletuni25E7uni25E8uni25E9uni25EAuni25EBuni25ECuni25EDuni25EEuni25EFuni25F0uni25F1uni25F2uni25F3uni25F4uni25F5uni25F6uni25F7uni25F8uni25F9uni25FAuni25FBuni25FCuni25FDuni25FEuni25FFuni2600uni2601uni2602uni2603uni2604uni2605uni2606uni2607uni2608uni2609uni260Auni260Buni260Cuni260Duni260Euni260Funi2610uni2611uni2612uni2613uni2614uni2615uni2616uni2617uni2618uni2619uni261Auni261Buni261Cuni261Duni261Euni261Funi2620uni2621uni2622uni2623uni2624uni2625uni2626uni2627uni2628uni2629uni262Auni262Buni262Cuni262Duni262Euni262Funi2638uni2639 smileface invsmilefacesununi263Duni263Euni263Ffemaleuni2641maleuni2643uni2644uni2645uni2646uni2647uni2648uni2649uni264Auni264Buni264Cuni264Duni264Euni264Funi2650uni2651uni2652uni2653uni2654uni2655uni2656uni2657uni2658uni2659uni265Auni265Buni265Cuni265Duni265Euni265Fspadeuni2661uni2662clubuni2664heartdiamonduni2667uni2668uni2669 musicalnotemusicalnotedbluni266Cuni266Duni266Euni266Funi2670uni2671uni2672uni2673uni2674uni2675uni2676uni2677uni2678uni2679uni267Auni267Buni267Cuni267Duni267Euni267Funi2680uni2681uni2682uni2683uni2684uni2685uni2686uni2687uni2688uni2689uni268Auni268Buni2690uni2691uni2692uni2693uni2694uni2695uni2696uni2697uni2698uni2699uni269Auni269Buni269Cuni26A0uni26A1uni26B0uni26B1uni2701uni2702uni2703uni2704uni2706uni2707uni2708uni2709uni270Cuni270Duni270Euni270Funi2710uni2711uni2712uni2713uni2714uni2715uni2716uni2717uni2718uni2719uni271Auni271Buni271Cuni271Duni271Euni271Funi2720uni2721uni2722uni2723uni2724uni2725uni2726uni2727uni2729uni272Auni272Buni272Cuni272Duni272Euni272Funi2730uni2731uni2732uni2733uni2734uni2735uni2736uni2737uni2738uni2739uni273Auni273Buni273Cuni273Duni273Euni273Funi2740uni2741uni2742uni2743uni2744uni2745uni2746uni2747uni2748uni2749uni274Auni274Buni274Duni274Funi2750uni2751uni2752uni2756uni2758uni2759uni275Auni275Buni275Cuni275Duni275Euni2761uni2762uni2763uni2764uni2765uni2766uni2767uni2768uni2769uni276Auni276Buni276Cuni276Duni276Euni276Funi2770uni2771uni2772uni2773uni2774uni2775uni2794uni2798uni2799uni279Auni279Buni279Cuni279Duni279Euni279Funi27A0uni27A1uni27A2uni27A3uni27A4uni27A5uni27A6uni27A7uni27A8uni27A9uni27AAuni27ABuni27ACuni27ADuni27AEuni27AFuni27B1uni27B2uni27B3uni27B4uni27B5uni27B6uni27B7uni27B8uni27B9uni27BAuni27BBuni27BCuni27BDuni27BEuni27BFuni27E0uni29EBuni2B12uni2B13uni2B14uni2B15uni2B16uni2B17uni2B18uni2B19uni2B1A afii10064uniFFFD dlLtcaronDieresisAcuteTildeGrave CircumflexCaron fractionslash uni0311.caseBreve Dotaccent Hungarumlaut Doublegrave thinquestion uni03080304 uni03040308 uni03070304 uni03080301 uni03080300 uni03040301 uni03040300 uni03030304 uni0308030C uni03030308 uni030C0307 uni03030301 uni03020301 uni03020300 uni03020303 uni03060303 uni03060301 uni03060300 uni03060309 uni03020309 uni03010307@tGG22dk  Y&Y@&2G@AGA2k2%e}f2 ]%]@%e2d~}d|S{f{2zez2yxfxdwvts s rq.rq.pfp}onmnml]mmli%l]l@kkji%ji@%hfhdgfgdfefedcba}`^d\[\[Z2Y-YXWWV2UTS TS RQRQPQPONMdNMdLKJIJIHGF}EDE}DCA?2>=<=<; <; :9:98 998 8@76776-6545K4343212d1-10/@0D/.-.-,--@@ ,+,,@ +*++@ * **@W)K('K&$&$%$%K$$#""2! 4!>  42@ @@ @WK77222X}X       @   @   @ @  d+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++J<       !! #" >> ?? @@ CA ^^ __ `` aa bbcc gdkh qm srutvv zx {{} ,( 8/ >    rr        0 2133 44 95 @:KBOLRQ V _ `` aa bb cc kd ll mm 5n 99micropolis-activity/res/dejavu-lgc/DejaVuLGCSansMono-Oblique.ttf0000664000076400007640000055131410724145723025155 0ustar simcitysimcity GDEF),GPOScrL GSUB 6lJOS/2}rVcmapRcvt &,fpgm gasp t glyf- 'head82,6hhea /2d$hmtx`2loca #|B<Xmaxp a nameO!sa!postȶ<Hprep8prop̷.0  cyrl $2cyrlSRB locl$33f   Py PfEd m`::~!%+/A?Xauz~_ [w{%9?GKW]cmqEMWY[]}  # & 1 : < > I p y !!!"!&!+!_!"" """"" "-"="i"""""## ###!#%#*#}##$#&&<&G&g&o')+ !$+-1PXatz~Cw{ $0<AJWZalp~ HPY[]_   & 0 9 < > G p t  !!!"!&!*!S!""""""""'"8"A"m""""##### #%#(#}##$#%&8&?&`&i')+~yxwigfb_][ZYC+# cHE<'&caU?3/)'%#!  B;0-*u]XTNHECaNL43ݹܓ   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}byqz##X!#/{{RfoZ!7={fs +bb#3N{T\q#w!`j#fy```{w`{{RNNfffHF?{L'5oojo{-{{=foD7f}s, %Id@QX Y!-,%Id@QX Y!-,  P y PXY%%# P y PXY%-,KPX EDY!-,%E`D-,KSX%%EDY!!-,ED-hh@ O/10!%!!hsr)s` Y@.   :TSQ 991/0KSX9Y"3 #3#ʁX2s2qeR@UQ1<20###Ѯ++P@5 X X    91/<2<<22<<220#3 33!!!!###!7!!7! Siih'T'hhii'T'haabbN; 0l@@()%/0%W$ZXWZX!0 !()/ %$, 19991/29999902654&'#.'7.54$?3.'+uV^PwTe;__#QhZ 0d/UH AYQ LEtNUcEJ-.+73#'#"&547.54632.#"326773>J zk{;_hǼA|9#*zLq,_AGB͋fqGG֯!g4l7&&s^/Iuw96Q10#+u @hg   99910 #&5;32267654&#"P77ON87PsTTߔürUUݓþP/E]bkP0F\g7PP78NOEEg`f__{ T@* :ccQc   99991/20KSX2Y"7!7%3!!9#`5!ɪuLJժf\@99991@ q cac/29990@9%!!7754&#"7>32  n!7'r\~)paGR!#]jCD12›`g*N(J@+c W q cW qc#ae) )  & )99190!"&'732654&+732654&#"7>32rl^&[b {Rq%{Tس~%%45uy|d_((!? s@>      : cQ     991/<290KSXY" !33##!7JٜFE$3dT j@8  : cWbccQe!   !999190KSX9Y"!!>32#"&'732654&#"`!H/Y,i`XlH)T^OKժ|VPP!32ꮀ(&\h *;@ ccr W bc(ae+ "+9104&#"32.#">32#"&5476$32\tkzk $:K7DqPDNzNDb1KRqzy '%'fiǸwSa`צf5@:cQ91/0KSXY"!#! <^+)f #/?@" c* c$cae*t0 '-!09919904&#"326.5432#"&546"32654&5vpykl(ֲ ~uf{xtŚi~&i)̳`|cr}[l?L *3@cr c( ca(e+"+91032654&#"732#"&5467>32#"&Jtkxk#:K7DqPCNzNDbKqzzٺ%'fiȹvS`a֦X#%O@):nun91/0KSXY"3#3#'?>54&#"7>323#`MqkUGpcOi$meaiT<1[^[Ho8JRGB98~^lVFfVu @o@5.1*@ xx -*x1!x1:A@= -. ='=4A9991999990@ ]2654&#"#7#"&54327>54&#"3267# 476$32}eX{c3QT_TX9xC-BS|n& Ә`nїap}o?D9H=+#4~}՝{=ѰM/ v@B      :cyQ    91/<90KSXY" !3#!##-+{ u@@       :c cQc z   !9991/90KSX99Y"32654&# 32654&#%!2)mkÈ{Xo}bи}<ݮkff>^T|s2@|{c|{c ae  99910%#"5476$32.#"3267T[rkPK)@P_GhUX5)) |*(?>QS{@=j P@(   : c Qc   99991/0KSX99Y"%267654&+ )DD6ErgTGh#}s?w/5 X@0    :ccQcz   991/0KSXY"!!!!!!Xu!TV rh!wժF\ S@,    :ccQz  991/0KSXY"!!!!#o!\Vd ժH7N)a@3&))#$"%):%&"&c("c|{cae*('&%)*9991990KSX9Y"%#"5467>76$32.#"3267#7!Wu! #^8kPM)AQbD,N"#Dl%L`>? ZouC|*(?>SQ4arQ%# {@B     :czQ   9991/<20KSXY"3!3#!#v)vʋՉd+99 ?@"  : cQc   91/220KSXY"!!!!7!!Z>!:!!9ժNU@.  : {cc Qe  991990KSX9Y"'73267!7!#"&-Hg(!H8a=OSD.J j@;      :}   991/<290KSXY"33 ##ApyN 8@:cQ9991/0KSXY"3!!q!eժ  @D     : }   99991/<290KSXY"]@&  ]]!!# ## nݺNs +/ @<  :}  9991/<2990KSXY"]@  )]!3!#3+3R)!@c c'ae**10%267654&#"#"&47>7>32U/J\inU/L\i-+C'Xڑ++C'XڑÇf_f_hun\;yo\;y3h@6    :cc Q   99991/0KSX999Y"32654&#%!2!##m|mu/ϿlgR-3@c%c ae.+"+.991990#"&47>7>32267654&#" ++C'Xڑ@%6OU/J\inU/L\io\;ySotC_!\f_f_h @R       :c c Q      9999991/<9990KSX999Y"#.+#!232654&#HW6yj,mn{!)fۣ~jhybճWpi{'@:    : |qc|qc%ae(  "(9999190KSX99Y"8]@<'''))))777  (((%%%%88VVVV]].#"!"&'732654&/.54!2{'Q]byhd)bpXeJ P;<GX('2--EBRZ)!:y(5@@:cQ99991/20KSXY"!!#!t!++ժ+P~@K   : ceQ991290KSX99Y"33267>73#"&546s˳mnY|--˲*_NGj=h ;\\9>h?8;%~+J@':}91/290KSXY"%3!3V1ƾ+R` @J        : }    91/<<90KSXY" ]@\  ;u      )%& 86736 FFCE ZVTU kfch e zvvy u   %]]333##ZIyF +f9 ~@H      : }    91/<290KSXY"33 ##D1dDf@5:} 9991/290KSXY"33#σub 9@:cQc   91/0KSXY"!!!7!1-" )՚oG@":~~g9910KSXY"!#3!mVdB0@:Q910KSXY"#3ժǪC@ :~~g9910KSXY" !73#7X+ޏH@ Q91290 # #Ȳu-m/10!5/mPPPf2@ 910K TKT[X@878Y#ŏfxH?{ .@a! "   : %  &W%")e,% &,/99991/99990KSX99999Y"']@65$0%0&5'  ' ]]"326?#7#"&54$!37>54&#"7>32wt+DRgX&} Hn5 ~uVo#lY 3{IScԹ)L^e= U[33'' h;T%@L$#  $#"$# !#$#$#%$$#:! e$""#%!#$ $#&999991/990KSX9999Y"%267>54&#">32#"&'#3T.19eeS30:k>fRHL|b"/ZV^l\XVo{RTVϺlsVTq{4@WZWZ e   99910%#"&547>32.#"3267IZk[]߅YO%BUn<8?`S3')ܕbcb++:6YYRh>?w%@L  $%#: # e# &999991/990KSX9999Y""3267>54&3#7#"&547>32X.16feU018msѸAdPEK|aWWZsZXWrxCTVҼ!lvxWbf} &\@" W&Y#  e'  &  '999910@h hooooo ooooo ]]>54&#"#"&547>32!3267t{,uigxjSm Xr#x++֜,mVZ"eN 498j@9     :       999991/22990KSXY"#"!!#!7!7>3_`)&Sec/яN;Hy{.@[ ... ..-.)*+(,..: , W  ) -/-,. .#/999199990KSX99999Y"%267>54&#"#"&'7326?#"&547>3273O.17pdr5RK%IP%:nPHJoe"ZTZjwwI,.uW[׸jp|aUTH@R    :   99991/<990KSX999Y"#67654&#"#3>323]W!{/tKb J G'QWab ^= h@7   :      99991/20KSXY"!!!7!!3#f׾mnm-`/BCV r@@  :     91990KSX9Y"!7!+73263#)ʵ_nJ-wZ {@:!!     :   991/<90KSXY"w]v}p]]33 ##%uͨXZFF?7]@/:    99999991/990KSX9Y";#"&5467!7!XY[ϭ #6IHP.{+@e    $%"%#""%:!  &$ )$" $"%  &!"% # %" ,.999999999991/<<<299990KSX99Y"K TX,,,@878Y>32#>54&#"#>54&#"#3>32'}MVg}.3KT+}}/1JQ-}٨,o@K\DIm\6kw\u?8aq=:w``323]W!{۸ Kb J G'QW`ab ^uZ{ !@ e  10"324&'2#"&547>ppp_RJO⓻RKOVΊmvvˇqtxVh{%@N%$#" ! :e&&# &.99991990KSX9999Y"%#3>32#"&7267>54&#"%o-=dOFKzdQ-18gfU018p RXлnvzTHYU\qZXXr{bV{{%s@=  : e&# &999991990KSX99Y"%#"&547>3273#"3267>54&=fRHKтd#ոU.19efR20:kTVϻ"pvxUUXV^l[WUp{{h@7       : c    991/990KSX99Y".#"#3>32-wL&kٸ(CՇGs(y,,`x~%#s5{)@;  !    ! : !WZWZ'e* ! $*9999190KSX99Y"]@`++''99IIDDYYYY)iiii)yyytty)) ' ' //55GGv]].#"#"&'732654'&/.54$325#GMHutQc%^S CyX9-/f\b8{\##55w\c4!g!dp@@  :   9991/<2990KSX9Y"!!;#"&5467!7!=^wNfߧ w+>3B5ovD/`>}m`@Q     :  e   99991/2990KSX999Y"332673#7#"&546]U!{ڸ!Ii J%DOUyba~']`J@'!!!!:91/290KSXY"33#`D\#` @J      !!! ! :     91/<<90KSXY" ]@f   * J       *$ :4 GCD ZZ T kfh c yxy u   !]]333##\ 1j<צ`wBo` ~@H!! ! !  !  !!!:    91/<290KSXY" ## 3>_4q`DT uV`~@F!  !!!!!:     99129990KSX9Y"+7326?33>g6:`lQu<+ٷhkILJ]qTN^Nm` 7@!!:  91/0KSXY"!!!7!?.!u!`ۓ%4@f -.-..-    : 5'- )'.)~)~'~g5)(54.  $-5999199999990KSX9999Y"#";#"&546?67654&+7326?>7>3N^3!xoIP/VaNH- bq>=~2H6/OgK@&!3?9m{D% 2-UKn{'"10#4@e -.-..-    :-5)  )'.)~'~)~g54.  5)('*(5.99199999990KSX9999Y"7326?>7.546?>54&+732;#"#N^3!xpJP/UbMJ- bp>= /H6/OfLA&"3@9l{ D% 1-VJn|'"Xy &@ ll 1<2990#"'&'.#"5>32326yKOZq Mg3OINS5dJ t]F ;73 !;?<6 7=s ^@/ :SQ 99991/0KSX9Y"#73#3B1ˁX1+e{?$V@3WY WY  e %  "" %912<990.'>7#.547>73? 1{HAK!K?7f7̢FV8f7<}u5&,-(!úD`16"+`႙@F  :  Wqa c  9991/2<2990KSX9Y".#"!!!!73#737$32%6y?&+rZ 3!Z/3<+-ُ/яLB /}@B (-  * -'! ) -0)$ !'$* EFE( $02299999999912299999999904&#"3267'#"&''7.5467'7>32d|[Z}}Z[|Z^.[20`0\^.[3.^Z{{Z\}~t]1]02[-^Z3].2]-_/@]  :    Q    9991/2<2<290KSXY"!#!7!7'!73333!! wbbs7ln   o#o1ho#@ <210##  d7-4Bv@E$%B<;5& %, XX2aC$%5 "<%&,/B;"%/"%8%/?%)C9999919990.#"#"&'732654/.5467.54632>54&/-!G:gV|Ur))FS!J=p J}Pv)%GTXkPRVU~&(bHOZ ;VuEe5#Z7$'^Nb| 3UoI`?%P53o75p^34p73`SF-n@99991<20@@@@@PPPP]K TX@878YK TX@878Y3#%3#''}N1ID@'  &>>2J- /,(8 (8*D/210.#"3267#"&54632'"3267>54&'.'2#"&'.5467>`:o:u8g24r=г=rjKKMMKLijLLKLKKkZZ\[[[~}[[[\ZZ/lhȬJKKjhKLLLLLijKKJgZZ[~}[[[[[[}~[ZZ  +/o@?  .,#", &a0 .- )/,0 #"6)6099999919990"326?#7#"&546;47654&#"7>32!!ٔI"3267>54&'.XXP:&rk1=-7ffZJJDZZ\[[[~}[[[\ZZ~jKKMMKLijLLKLKKLbeG]C;P*T6?>5VZZ[~}[[[[[[}~[ZZgJKKjhKLLLLLijKKJb+@ 9910!!V+u @ a#$# 102#"&546"32654&hAu,-/OomOPqp1.-rBoPPlnNOpXy.@ l l   <2<21/<<07!!!!#!5!X!dCDLI3j@5:  aK999999199990KSX99Y"!!?$54&#"7>32!9J?3zST}5vrni3=%)o^(H@*  #a)   KK& )99190#"&'732654&+732654&#"7>32HNЯB;Ch2pUYHHavVV*e<Gz7yr\ [Gy\NC@jP@33sd[Ot?ff/10K TKT[X@878Y3#ufV`&@\   &#$"% :%   c"e '&'  %'99912<99999990KSX999Y"3326733267#"&5#"&''-mf! (J!CO5b\| mV H6[a  UIRLSS};u g@0  :Q  99991290KSX9Y"!###.54/эZfN/`/@:n910KSXY"3#;`us&@    991/90!#"&'732654&'+%#w,^/(I CK@]$]m<6N6\ X@. JJ:  `     99120KSX2Y"3?33!qu c)t'+n)!7@  a"  !"6 6"999910"&5467>3232654&#"!!yA8=Z@7=cWjcWk\WCJNXBJNTixؗix{RZ# 3@  u   CC991<2990?777R+^#T+^# ^R^ ^R/m{';V'{/y{'{&tV/m';V'u!@J !!!:S WY ce Q"  ! ! "99919990KSX9Y"33267#"&546?>7#73PojUGodOj%lebhT=1D]]YHo8JRGB98~^lVFfVk&$3uEk&$3u3m&$3u^&$3uLN&$3um !@Q   !! !!  !:  c  [ y   " ""!"99991/<9990KSXY"4&#"326!.54632#!#Y?@WW@?Y33srPF#Z?YWA?XX`#kErrQ {o@P   :c ccQcz  91/<20KSXY"!!!!!!#!!V3!jd!K\5ժFժsu&&zh5k&(`u5k&(`u5m&(`u5N&(`u9k&,9u9k&,9u9m&,9u9N&,9ujk@;  : cQc    99991/220KSXY"%267654&+!! )#73DD6Er[ kgTGhщ{}s?+/ŕ{^&1/uRk&2+uRk&2+uRm&2+uR^&2+uRN&2+u;T .@     <91<290 7   ^t^_t\t%\^u^uw^ 8o@;)9$863 '$*73(c$c3a$e9)9(*-7  '-6 8 -999999999199999990%3267654&' .#"#"&''7.547>327B^Bp=26yf[8q<2:$iSXQ6^cwhTXM6Td,2'{#)u'+l <[Z..@:V++}@Pk&87uPk&87uPm&87uPN&87uDk&<9u3 @I   :c cQ   999991/0KSX9999Y"#32! 32654&#FH#3`i|m縘gb7f5@[#$# $$#45512035:3*$ #0W0e445$'# 35'*-  '' '-56999999991/990KSX999Y">32#"&'732654&/.5467>54&#"#*˰ )<3sQGA;G6U=Z8˲h\yۻqϠ!F$`&=,'UW !}l4R?/D\?$OYH?f&DCHjf&DvH?f&D(HZ7&D6H?&DjH?N&D4{ OP@'O'OO'  ';:987<6'5':+ $!F@6?$O4%W$!(@W?<IC.(ePOL?965F$%+4@L'1P999999912<2<29999990KSX9999Y"@`>#>$>%0?0@Z#Z$Z%Z&ooollloooooj#j$j%j2o3o4o5oNoO{#{${%{&#$%&%9#9$9%2?2@I#I$I%I&j3 ]]7#"3267>54&#"!3267#"&'#"&546;7>54&#"7>32>321}i##N;Ze=D;SjaUF5";Hj/]uUM1L#O8Rv2PyH'!b3C'\uq{&Fzwbff&HCbff&Hvbff&H(bf&Hj=f&C=If&v=f&(=&jwj!0@L:! %%+ e1( .(!. ( 19999199990KSX9Y"#"&5467>32.''%'3%.#"324&f{qKFMLGL0 5)h%P,sh/֗htx~io{&V:^\VȑX\ xA@eTV7&Q6uZf&RCuff&RvuZf&R(uZ7&R6uZ&RjXyo '@l D <<103#3#!!j!/ '1m@:'2"1( +%&""+"e2'2& 1(.%.  . 299999999199999990 324&.547>327#"&''.#"N4PKQߓNx.p]{ RJOJ{3w\%I49W.`0Pnwu$$M2Tmvv%%L'}mf&XC}mf&Xv}mf&X(}m&XjVf&\vVh%@M%$#" ! :e&& &.9991990KSX9999Y"%#3>32#"&7267>54&#"%or=dOFKzdQ-18gfU018pRXлnvzTHYU\qZXXr{V&\j,0&$q:H?&Dqn|'2$4$HCH&2Du.'5$Hu?{'5nDsk&&uf&FvZsm'u&qf&(ZFs'3u&q&3ZFsm&&uf&F)Zjm&'*uwg9Q?}Gjw-@|  "! #+,-+,-*: + "e+ %.999991/<2990KSX99999Y""3267>54&!7!733##7#"&547>32X.16feU018m>IAdPEK|aWWZsZXWrx5yyTVҼ!lvxW50&(q:bf&Hq#5m'`u(bfH&2H5'3`u(bf&3H5u'5h(buf}'5H5m&(ubf&H)7Nm'9u*;Hyf&(JNm&*9u;HyH&J2N'39u*;Hy&3JN'i*;HyN'UQ.Jm'Ku+THm',uK43!733##!##73!7+*++ ʊ֊׆ ,*,9Q,##654'&#"##7373!!67632 (p~ZX!{} }a >C^^r>%JA1B)G[Xzz`21qBiK9^'9u,=97&692&,q<=&q9m'9u,=-H&2]u&,$5lAu&L5p9P&,9u=` C@":   991/20KSXY"!!!7!!f׾mnm`/B%73267#7!#"&!#3!73#w)+tD]d%}4@fC >OSD.êS !!!7!!3#!7!+73263#-׾mnm-)ʵ_nJ-a/BCwm'u-Vf&(J&ih.Z'iN` 33 ##Y[>vҢW`/ZFB?NIl'7v/7Im'7wON &il/7'iONR'n/7 ')ONb'yc/79'y;O e@8    : Qc     .99991/90KSXY"3%!!'%sr)Iqq dqJdϨ3hdXZ@K:   99991/990KSX9Y";#"&5467'!7!%XY[ϭ ;Jss;JX%6IH#O(c$)br'I|1T_m&vQ&i(1TH{&iQQm&1uT~f&Q)0'#IQ{V33+732767#'Yܹ%nnZ:=ܹiij>Hi}Vn{$+73267654'&#"#367632\&moZr 'qXW!{ڸ!D]^s>%6ij|~A2B)G[\``21qBjJR2&2q<uZ&RqRm'+u2uZ)&2 RRk'+u2uf&7R#H"b@7!"!"!"!""!:c c Q c"!    #91/220KSXY"%!"&5476$3!!!! ";P!B5VR!WH!k!v/1}{>᪪ђlêFlm7~j=xz{,8P@\-'@?6758'@@?  '@? '?@?:8/-59 - E5- W 5*eQB8/.- N N2'N'!Q9999912<99999990KSX99Y"o.]@oo o o jjo-i/o8 ]>32!3267#"&'#"&5467>7>32!7>54&#"267>7>54&#":Pz aUF6#;G_":Q;'8uP|4IB=Sk7<`(HCA_(J?@+TZ[nNX:2)+E@AD6NyGfkDVL8GNGB,jl MTEF5`V$QW l'7v56m'vU &i}53{&iU m&5Buf&U)Z{r'I|6s_m&vV{m'ou6sJ&(EVu{&6zsu5{&Vz{m&69usNf&V)u5&z7ud'zW5m&7`u&WW*3!!!!#!7!!s!-p !pp! p+ժA@V!!!3#;#"'&54?#737!7!>^-- &uE+--+>1%91S5e:J>P^'7u8}m7&6XP1'q;8}m&qXPm'7u8}mH&2XP9&84 }m&X4yPk'7u8}f&7XPe&85}sm`&X5R`t&:J|\#m&(ZDt&<R|Vm&(\DN&<9ur'I|=Nmm&v]Q&=_vNm&3(]m&=9uNmf&])!#!7!7>;#"-)&_`яNSeT!*32676H#!"#7>332676&#Wt|0"}'5E8 #~2j/>orqp ˘//&r1F݇,L>32#"&'#!!&#"32=DEdgh=i !&#"32>32#"'&'#'S^[Y*)/0;fUV56dDCYmnnnRRX랝+,S|L?32#"7>3 !"&)=X<5F=@@=2!%# !2676;".#"3267DSRkbF@)JoZ98<])(`M9++8(8rGj>>~A:;>jH3 !#"#7> 6&!#VJKv6E8 #a@@//&r1FHKwZ#";7!! &7676%3器~' F(H}Xɉ{+ˡd7#";7!! &7676%3|器~' F(H}Xɉ{+ˡda 32676&#"7!#7#"32aS])*`Y$Ҹ>dˬ65%fLT}SW;7XR3 !7!!7!!7w!ir!VT!+Q7!'&#"7>32 !3276u,#(VV)U[LLK'!(_PS{@=))yz~#vu=(.76$32.#";#"3267#"&7>|i#0Is$`Y bp'ng("{ (({smz45$&ΕVM!!!!+7327677"U !%noZ98ժH#ij>>~GV$+"!!+732767!7!767676;b..)deF1i/0(#i,AJb)(gc``01N\' @g(%# !2676;".#"3267#7!`vHG^QoT?6B_;=Ck0N {KMonj>5MI!FRcI ! 7 3 3327P1ch8=?un+J&#767673#"'&76&#"#36763288C=PP-Ú77*8CBH"{.vhUUum14IBe``  19!7!!;#"'&7r!=!ǯ !Z ٪HE'+z=>jf7!!3!!#!!7!!7!!Z=!p !O9!!9O!pժi@ #37376767'&nqVVŃEW-%Tl+HssB%r3r T7676;#"33 ##&nnZ98`=wҢWij>>~ZFB?;#"&?#73!7!;+6BY饌&&ߠ  |~ĎɎd% ##''3:\.Ze:dn@Jo |"%#"&33267332673#7#"&0wJF8Ǩ.FPS-Ũ/#JIQ-ŧާ,p?LWrHE! s{ p{+`>~}Ro{#6&#"#3>32\ڹOq"{ڸ!Ds~d``cQ  32'&#"32767\LLLB,#(_S;#'!(_P:z~{{vu&2^ {&R^6%63273# &#"327-_8>Pݯӱ90!@@CXY+͠v~^fR4{ %63273##"'&7327&#"}UWeRްeI:MV~,`/s%+n+͝u"mmBx +#"#7>3! 27676&+D[m^t6E8 #~'^!]mM//&r1FE8D Vt*3267'"#"67232#"&'#76;#"I"*Q b@{˪65fo:DN5/2FIWS.O u&;#"&/&'&+#33 !#3 h8:FFL4[||%#YlG"5-3f;[ BgTHzT$Pm>'>323267#"&7>?>76&#"hqV'qhہ*ti)$o^g''Ƞ/ vp{DI--յ1#hcq<;;{'>323267#"&7>?>76&#"sWZʸHszTq%pS Mjl}SX9!!1Yc55##}#JKSQ..V>!6'&#"3;#"'&7# 76!23 n| wZdAE#)*/@)-0A3=g)(V\`@oV !!;+73276?#"&7!7!>^wKu&nnZ98(ϊ'w+>|bij>>~`>o4&#7>3!!#6R8 #!-/7&r1F+j!!;#"&7!7!7676;#"^wKuϊ'w*&nnZ98`|b`ij>>~V]!!;#"'&?!s"- !ZߥED%+ժU~>>ji'8v^q'Xd^|8##"67#7! 76'7"a6$==$""+-4-+Fj"n8!L ILJ4!"'&733276'3hHE& !Z-+Fia6%> ILɸC #367632'&#"u2-P?b("8t*b7m*9 VZm+7326?3676'&xSU|lLbN1ôJY]j,QN$h:=HTN~)+) =  !3!#!!7#7!!C!P"! e!"՚i@Xyb!!!#!!7!7!!K-!8Z! dbҖg 7676'&+7!7!2! $7UU{rsNO!! 2ivZA=++KKKKIJG8+lh3! $76767637!!#" 76++fjki !!kjUU{rs݊hl+8GJIKKKKLn` 7!!#"3267# &767676Aj9e@zy38GFmgLxkj^V5zrܨ JKKK21%݊hm*8d 6323#!!7!7!67676'&#"$$?1SP!Ex!u!!/" $4Dc``JU?T<>< % 7676'&#!!!!2! &735 66 W^#$!zFrO_}nw~FVrAr_3#+)'6vp3!!!!#!7!7!7!O_!._!dd!_.!_ls`nm&$9uHlf&D)9m&,\u=Nf&)Rm&2\uuf&R)2Pm&8Nu}mf&X)}m2&q%<Pu&x}&DH<Pw&}&OT<Pu&}m&CB<`h{HP2&q%HH8hEՊ#w+w57Of'MSb9du'k&1FuTHf&QC{&i6s5{&i6V5&i7d'iWlW(1%7276"'676#"'#7&/'&'&3232676&"C{!h+>65PjqSBԚ))DԐ>>t#O9 Y%Z5H7WSCT4V6!!3+73276?!7!m"%noZ98՚o*ij>>~Vb!!#+73276?!7!y- %nnZ98|! bܖij>>~%uZ2&q%<uZ2&q(<RO&2tuZ&R3uZ2&q%<D1&<q;V&\q *l%7276"#7&'&7!7!676#"jC{!-wi $h+=F>O9aJwt# lE{.%7276"'676"'#7&'&?6&#"#3>32Cz" g$>r.O9aJs{``>^>>t#O9aJ;>V` !7!+7326)ʵ_nw2Q12676&"&#"32>32 #"&'#7#"323T(~*))(S'PP~))(PPN+n=yO56z32 #"&'#T(~*))S'PP~))(PPN+n=yO56zZBC {J8FFJ!@w@) '&#"# /'&!27&'3267COV<eU[wZ.3G[M74YV EXU$ ~)) F/ndJI ~' @=( &#"# /'&7!27&'3267wJ9H)OSRtM *$6aQI&%uNh G`M7S]++ L8 rMq;>L 3!!!!!7!ˑ!O!dp! iA4# ##7'7!!1CB[t\˔Kr"!-[QF*3j8JB`{5.#"3#"'&/&/7632676/&'&7>32`#FS}NGo!x{z#L'Tf@G)^.%{hA>zB:: Z9..QSKJ#}^R ~$=&[5#`cY1!GJ!b!;#"'&/&#?!- .{#L4[Tf@G1Z b ~$=&[?%x"#7>3!2##326&#6E8 #~'*+uʕʌ4//&r1F nn{ )32676&#"3>32+3267#"&'.=dl%| Nƀ%o^e$mX-+qpepӺ)Ld_y64''RR2{73#7#"32 676& ٸ>dˬ65&eT^ ))`ыSW;7WT0H{%#3>32#"&&  ٸ>dˬ65e(T^))` \SWW" '&#"3267632#"&'#7676;#"!S^*)_<U+{>3 !"&'732676&#"RRkQE%=])(`M%++*,A:;>lw,%3276#"67&'&76!2&'&#"63 !"8K e 2&u45UNME!FJJPyyPMv+/#R9K9DhT#3 #+qrfrrVs$2676&"3;#"'&?#"32tSB՚)*EBpH833&5EEP56 QkTC~>>jiáS,+;7W:$2676&"%7676;#"#7#"32:SB՚*)EF&[]8H0/߷5P55 PkT ij>>~SW;7WSCh{632!"&'7326?!76&#"1/45[a$bX#]^"++98ȷ`h{7!76&#"7>3 #"73267q#Xx$q[54ֿp/Z89++"Ţ{ 4%676732#"'&7&'&7>3273;#"'&7i&  ,g6G3  'ROQT"SQY P!10-'֊>8E#Z`vg'#d4*,#)u10`Zth{0&'&76$32&'&#";#"32767#"'&7>r53QXZd cTTL @?PPc_^T"f]^Vyx _A@^  VJ=+,nQb54"[\mBF{2#"&'7327676'&+7327676'&#"767632<< U["EXWdeeKIQP ACKYYm n]_PNM_JJm\["45bQ77,+=J++  ^@A{B#"&'7327676'&+7327676'&#"76763273;#"'&7'^)* zy?B"2AAKNO54qv|f>? /0h8DCS!SGGÊO 0/,'=_JJm\["45bQ77,+=J++  OAf10`ZȢA^y+ 27676'&+7327>'&%672#'&RWSvAM1&F3/]TSg]OuvJBN^B6@JN67=6s-VWggVW>XVy`!+73267!7!!7!y \%ݥZr\ Fbh(Ӝ}}ؤiJH&07676;#"#"&'7326?#"63"326Y&\]19)(1>>#Fy6y"6X3. SmPIng\"ij>>~.,}^\::bH\ $"326#"&'7326?#"6763!RPd1LN$YC">mĭ3,9b.,}^\:㣝i!%#7!#"76!2&'&#"32b7AgN[R55>dep!ijSGyyOMM">KMrqfqrgQ` 7 333276>-X.@uq|2232#6&#"#7676;#"Ds},Oq"{&moZ98 `cJij>>~NV@->32+73276?6&#"#7676;#"Cs},n&nnZ98nNq!{&nnZ98 `cʀij>>~6ij>>~3#!!!!!7!!7!!.bb <mnm< Fˏ5i`!#"'&7!7!;ͥFE'o׊BZjf;6~|2` !!!!7!! mnm`By&;#"&?&#"7>32!7!3267#"'I%;7-";#"&?67# 7632!7!3#'6#"3`CY饌&%=&06%Kߘ6M \|~¾󠠄K9YV{;#"'&7!7! BYLG'|~jdL.;#"&7#7!!2#"'&'7327676'&+7!0Gg%W![T\G/-+LKMM&9W_^;32 +73276?#6&#"#6&#"#3>320vJF8e%ffR54}.FPS,}}.#JIQ,}ڧ-o?LWHEjj>>~s{p{``32;#"'&]pSS {ٵ!EX?>-?4),OO__^edwxH10`` { !3!#.ү{yyt]{  #"%"!6'&!3276ҽ8888]R*7,3 $3]C{-m__mOmmO2`!!!!!"'&763#";_9pFbb65oo**EE`ݛlklm0|73276?332767676'&#"#"&7#"'&76769% 2"9$#u#$ 09*&%P; -nMO/Mo',2) `pB?UO++OU=]pxeY􎃃BcW}!*3#7;#3+737&'&76767676'&1I^78v//L^87{J9]*)2eU>^)*3"ouu{{BnmBHImnI `7327673#7#"'&'##,gg%sڹ"Nfg efNf21J 7327673#7#"'&'"#,di$ŹԹ"Ngf eif21gV`#7327673;#"'&?#7#"'&'"$,fh%si1F>?)"Ngf efN 10``f21VG{&'&#"#367632#"#,gh%Ź,"Ngf ef f21VG{#&'&#"#;#"'&?3367632###,gg%si>@*"Nfg ee10``֔f210{676;#"!!7!))eej0-rmnib`020{!!7!6'&+732tinotkѴ??V00`b `!#&'&+#!2327676'&#4**#rj)44a\\\ FBwHH77w 66^q$%'`PQi++ST** `!#!3327673327676'&+eT z||ڹ\aBBUG>@wGI86wSiQP`'%$q^667**TS++bVf{=.#"#"/;#"'&?327676'&/&'&76$32f"FZLM **=f?((**T@%$!*ML[[ 10``=Wg5-,QK((%$JK)V676;#"+73276_xr#hbîc-/*ceF1i0/pR[V((h)``01V!+73267!7!!7!7>;#">\&ܥZr\ F=$˳c]uh(Ӝ}}ؤiNQgcVoe;#"'&76'&+732i1F@?+cAJ(10`a(h((VaYV!#"327673## 76!3676;#"w |n*'Be*)#ibîd-/3A0Ǜo@`\V()gG`!7!6&+732!! >^vKuω'v+>>`|b@W!!;#"&7!7!~>^Kuω'+>|b >`!733!33##7#"&?)32763 bb:bb X"Wcau-./|i^Ĥrq,HKEioabdo?ܤdqnܑkmh}` !+"'&7#7!?27676'&'&B^"!.F??*oSg4kk/8QDdqn``;612abdw7,`!##3è}T`U` !###33Uŭtjj`j >;#"##u|lLbM2ózHTl}33#ff}8 ~V`!!;#"'&?!7!k \  ;5*+)! `ۧ10``%D`!#67!7!7!332!73276#H !Pej!t.$  FY3<;4% 6[L` 2!"'&'7327676'&+7!7!{juZA=+^``c&KmqsMO!ej 8*mh%12KKKJLk`#, 76676'&+7!7!2#6'7&#"327L'2) NO!ej iv[@=8Q 9tŃ qL;*1JJ$8+lgqUeR8y*K/K'V327676'&#"76763 #?lI,MPTRV!SUTUlT$!rLbAr+#}swt#&'&7676!2&'&#"3YV!$UNME!FKIPyF+@ws}#+rAbLr83!"'&'7327676'&#YV!$UNME!FJJPyF+@tws}#+rAbLrPJ#676!2&'&#"32767# '&7)$UMNE!FKJPyF,MPRSV!STUUjV$>}#+rAAr+#}S-}B )67632 '&7 676'&#"67632"'&^*}{)*P}}RQQQxx ((/. O^5ԜИٍccƍffff.""""./B!!a} &327676'&# 327676&#%!2#!F]8< #$^6U32 CV==cn10yyc36?\13+*?.Vi?>NNuTTs5y+";#"3$''"'&7>7.767632tCL1&E3-uTWQaMBcSTg]Ovu6=76NJ@6sx>WVggWV0%#7!#"'&76325676;#"#&'&#"32Z6tg>\]443D *PON(&;7a`P452 ^`03j&Brqfqr { 3!3#!#VVgg{A/V3#3## 76!3!7#"3276Z-ٵ)Ad+(;w {i0p?`я3A0NL` ## 33¹} kL T#{3!!dʽ!{/V<)%#"'&76327676;#"# 276'&"n?LL]ONg]99&*POO&&κO((VUO()Ud0110d``01jtssttssxV$327676'&#"76763 3###73?lI,MPTRV!SUTUlT$!*65rLbAr+#}swԤ$7&'&7676!2&'&#";3###7*YV!$UNME!FKIPyF+@>F66ws}#+rAbLr #26&"3!!!+7#"32O8O8 vnT !^!4EANbg߀N/1%j+^Lۓa31DD10ML C3276'&#"%#7#"'&76323!2#"'&'7327676'&+7!OXWJHOWXHƼo!7>>Jz-.gmkzJ,+voV !?B3+9789&)nArJK(*ch cqjtssttss_3d0110d^L$8*mh%12KKKJ ,326&"!7!332+#67'#7#"3233276#O8N7|#s !i\/$ \]!6}KyZfzJXvn h *5j 3.#"#"'&'#"&7#7333#;732676'&/.7>32^!'^6Rb -R#n"#6757qB)vQQ>o>vEk3m:Neb#`>{=g?((TT@I!,KL!&`>NM55YQK($)$V%.!7676;#"+73276?#"'&7#73!33>#SMJ$&)PP5%N&'+.)vee>5jvUNZV()g)_`02PM`> &'pf.6@3632&'&#"632#"'67&'#"&7#733276#"&77#3>y3-.&!&,*0lQRO%Uu0$1(\rC)vQQ> -W N=.03rvE‚#+qrfr9DhT"2`>9KiNVv3+7327676&#"####737>;#";67632])DCm? ,JY|ooji$qhj;>m"<~-x+&?)TT?&$!,KL\[&:MV3-+RK(#*$JAD7 3!!!+sU!]rvGLۓ 333# #333# #t12t͉4Lt22tΉ4U= !#!#!#!#sS3k3S3k3UXrX3J#32673##"'&7?6'&+732?l>]p {ҋwFLMX33-mN%5**)֟ybe22wx0t 10`` V/!7#"'&7?6'&+73232673;#"'&7"32JtI=N^EutB4|JycwYYk\g883>32#6&#"#7676;#"4|JycJtI=N^Eum>=rB98wYXj\1Sw66WUzW 3+732673#t||r,B;tsxlX6Vr[t.#"#3>32`,b@uzu0S  qksa97]|v32673#7#"&'q,b@uzu0S  qkJa97*C32673;#"'&?#7#"&'>,b@ulC,r()/T  qkJH VX66x a97!+33276?3327676'&+@7 LMzt3j>))4{,&'}K,- ##K}N;[--s?5/. 333# #t22t͈4+7326?33YGkN\D0=/{}<{RpEW(K/i9@:og910KSX9Y"#73)~g3#j(~f672676ʠg @j G@ sA?,__=>X@?X=>POPPP"'&6763"33sA?,__s @i F@ PPOP>=X?@X>~327676'&#"767632#(yC, 2q24454555E8QSoG=@*7K$@ ` XFh_@C{~#&'&767632&'&#"3WGg:8Sh512,-//2qK+ *y=AmC@_hFX ` @$K7*@fR@91290K TKT[X@878YK TX@878Y3#'#͓ufNf:@91<90K TKT[X@878Y#373wx@1@0#kk+@1@0%#kk+Tq^O#!!rerJ';#!HreJT#$=#%& 733##7#7,,,,)JHn@ H H91<90K TX@878Y@   ]K TX@878Y332673#"&546xWUPjw HADJLvwDm;@ 9910K TX@878Y@ @@PP]3#))N h@ " I"10K TK T[K T[X@878YKTKT[KT[KT[X@878Y4&#"3267#"&54632X@@WW@@X{ssss;@XWA@WX?sstuX"@    9991/90!33267#"&546w=@/-!B "G"alK:e&%& PG7xV7@!   91<99990K TK T[X@878Y@=     ]K TK T[X@878Y@           ]'.#"#>3232673#"&/#*/}rY+D&/ )1}qY,B`1KN&/NMfe@ 1<20KTK T[X@878Y@)////2222BBBBVSUU]3#3#҇Lfx\%3;!"'&7iDA'wd10`ZȢ- 7673733276͂#$忉s /MM~3#tt"~).#"#"&'732676'&/.7>32-e9V` 6Y'x*,8wA;w=Rbk'hO@na//$)*+MWfk2-*SIXa~ #'#37ΉRH+{~#&'&767632&'&#"3WGg:8Sh512,-//2qK+ *y=AmC@_hFX ` @$K7*@@X!!7!AGЈX!!7!3A<4X3#!7xxAhhX3#!7f&Dzs5"3"'&676 @i G@ s@@-^`>=X@?X>=OPPPlq3!7373":#7!##S#cv{ #73733##'"""fck7!fc5V %+73276?&moZ98ij>>~BVE 73;#"'&7m !ZͥEE&~>>ji"l83(d..jQv4(>;3#Ouzub5 s/#WWD4/#7!#@&&@J9X#"6533273273"]Lt&uhf,vie-vGtRN-)0(J3202YV.6,/q9mB]#Xy a&h!5&hhh5!Ĥ' MN`LMw@'/ZsVFFJ`_K4m /!!jjN66&b9X632#6#"#6'"#72tLt&uhf,vie-vGtRr_ '7'77VMdreMdrI}`}}a~~a}}`).7>77>76'&'RN/RN0PQn +0PQn  &66D37"#6%62#&%nv..vd<<tf3tVH%#HVY #"?3;LX$ 3Vh#'?ffvF'irjf'>/`yf'DQf'f'Df'Df'f'&$%E%!3:ceyy5(=+Q!7!#"32 32)r!P@@PLLLBǪ/bz~9,J.3#3#es+# 01 !7!7!!7!A!\!)A!A!ժ9R233 !!7 7!!"! !6!!A@57D<fh&/3!737&'&7676?#7!67676'&'=Oe-.s!!Oe.-s!!O3P6"InO3Q7"+v[ssZttZss[v*DD*7*DD*9;67633!737&'&3^O?g?CCL*!!*DVLCC?0B["WDWx ֪ WW"#73&7323!7676 D"a6$=g=$"1"+--+Fj" 7oȼ߅LI L9N'9uDN'9u1f&~ff&|Vof&ff&&1z *76'&3273;#"'&''&'&767aSh#+68Uq Yo^D Cm5UW6: oik*%1)0T*XmY*)Vv#7#76'$`+^F6 9Td697+!k;%8Eb6=q'0 AV`&+7323#^1FzSSD~S]VKH" 4"32676&%&'&76$32&'&#"76*)e)*fh!2 f0"=DQR JD,  %i\_8888&L (=\ $+.! -&~Jm?326?#"'&'&'&767676;7#"'&'&76?6?27.#"YE$U^b$6{ x@4 ' *hv~ hI)  ,BMQX#iB2("P7Kp-*/6 B6 .(\=2 R%#677676'&# !7!@EYaD3' 9YM$f$%#KOxsPWKL,#%5,*3eaZi|Vo{#6&#"#3>32\ڹNq!{ڸ!Ds}```cgj6'&#"!3276 #"%%*fZ2%%*f[ҪHIIH<⇙8wyvs`;#"'&7#71lXn@?*n`+.0`b;`-8{ ##'&#7Ù#1Ee<2V`wg`!367676'&'31]|je P4&ޑ`T|p5dwY|rNįtR&%#677676'&# 6%$67#7! @EYaD3' 9\-c3&$$9%!*<KOxsPWKL,#%5,*p$Rݿ &uZ{RH`!#3267#"&7!##1$%7-%M%qB"T`PH? X%V|6#"&'#76&#"32VU65fn=HS\)*`{WS<R{$%#677676'&# !2.#"@EYbD3& 9laQF&<]()HIKOxsPWKL,#%5,*8(8*,A:nof` 32676'&%#"763!;^$)e)&@,884$ Gos*◗- `%;#"'&7!7!!lXn@?*g##j0`b`%"'&7!337676'&'1#%lrn*?@,4P4R}0.Տb`s{ZwfvaVh )"27676'&'2##"'&7673~A^i`*)84 Y`53NN^_4: G>d$(69g;ˑRh]c[斘n,mJseg.V`#&+73 3;# zE X1F EvX1Fz ~,~V`%67673#&'&733CJe!|~*NN_f*~|!C2;@WxؑoW@ `7332376'3%&# CfiFTV^QAarwQ\c eF+THc#3-&j&juff&f& f&r7$ # 7654'$'&763 '7676q ZiMKNCEBM \I,!2TpA{z Ʋ iR{$ $6'&'&'&7!2#"'&3276(*f>5{B_NwR^YTTuomM9T^yhpw{A K~}Sj~9#6''&7676'&F ~~#*Tj}!Qu6hU0rROv~*+40r51_Tf'E9N'u^V}'#&'&7673767676'&' OPg85tEERh85v [Bh)$7][Bf*$6VyvaxxGnռFCImֹD` !3237667%&# 67#7!C4FTW_QA1*\ct3NB$_$+T3 [g/%76#"'&767676676'&632767vp9 yN @{],p9 yN , ZMf lh|TDY|lp"=lh|TDY| lcwV #"32&'&32pP@?POCVLLBLK|O"y|•"jV{ "32676& #&'& ㌻)*f*)eNNI^871Ҽ78w mw.v\R#"32#677676'&#"'&76)Nd<;tzIEYbD3& 9w]PGǭ2e!+wTOxsPWKL,#%5,*˞nͱR`#7! 32'27676'&'&'&7676396: '2DaZD@bIH))rYĜ*,5%#,LKWPsxOJonlU\)GV#!#"&'32767!7!676327.#"@dOW0]+ )b9xA<[Fx,L 0_1s q_K!s7oQ>d1 7"'&7 6'&724V9-$DO6,9-$DO[~,`*l#FR`*l#FRva #!3a<l&pM]V#76#'#?&'&zrdc&AqX.Ya*uh.nm3iFKI Mf7L[OF5`4 x #&'#&' #'@ֹ#ڹI( -ȹXVU65f7!S\)*`pp>WSL?32#"7>3 !"&)=X<>++B$32676&#!3)!jjﰮDEXx@"(F"{f>d%E3!!F"!/ժq%3#!#326!3!!y_>>_M2fL8ZT9*B9,SeBL5(B##33333###nY("nwwn"!n9&ddQ9N #3!#"3+3'2A J.s #726!#S1?z eBS.+W++ 0+R2!#!#++33s&57&+7327676733Z[:UL\!mQ770ٖoJ+'/.M *5>,%3#7&'&47%>4'&'xB <.F"3 tB-{ j Wy ]sS S#j9; #3!33#8")_>+B33>73##.[VNq!Jˌ,άyIz)&g )33333"++#333333#V"_>++BG%326&+ !7!32#~3!u++ )+ !3%327676&+ 332#"[f\G\w["u[+++J8)3G%326&+ 332#ꍹ3"u++ )L"'7 767!7!64'& 763 >)}y}|2!sD)xKHtR}_@}R̀sj #"32332 ##3(lk@@(kloJ{LKlu8o#CiyzjMfc.76$3!##"#>#";`})1{clriՐu+w]oH?{DGs7 -65# 3 6  &546?6767676%67ZTOF8-  123&+%5dS2/bLP`{WjYIUA   +td`#!2#!327654&#32>4&#>,ǀCycu4&Y}J6stSPPsTNʦ}J7u gQs}o`[!Q` %#!3!3BY8ڸ湸8`JJb3326?3##"&44Nq!(ڸn7d^s}W 6G+2` )33333(ڨ𽨽`66`%#####!3𽨽8U66ng` !!2#!# 7654+Xѳ(H #F`;p#Ѥϵ` )332' 7654+# ڶX[fM #SFڸ`;S@p#)`X`%32676&+3!2#.pٸXA֙YZ^X`;a6{?32767!76'&#"7>3 !"&a&4`sg, 5G]V&VQ66R9>;qdSp:A,*윜+{ $6764'&"3  '&547##3&#%,B:SO9^ڸh4lkVd:A`(Fa.7>3!##"#676#";j^IںVJ5"fV11^W_o#2~(*gNHabfm&C(bf&j#(T_$+732676&#"##7373!!>32&onrZr`Nq!R!&&z!XDs}, ki}}엎\ª;`cm&vQ&{%# '&!2.#"%!3267RRtt56aQF&<]sU,@H`M9++8*,A:pSdq;>s5{V=L=&jԯVM`"%2654+##+73267!32( F 0%VjX'#UuL!N5X)рiv;p#Ѥy`%27654+32+!#3!3# Fd(ddڨYlYp#Ѥ`9+!!>32#6&#"##7373z"XDs~-]]Oq"Q"%R;`cᗎ\m&v0-Vm&C@+V&2 6r` !#!3!3y88ڸ繸`JE@3!3!F"?]/2$#!38=bX`:E !!##73!!#!ݡˡ!`!/>s^` !!##73!!!`aa!X$ ¸Ef#!!!2+7327676&#"!/V7ZY.<4~L!>GE&8]|9ժFwr|zKK"V^`#!!3 +7327676'&#_$;:B,5)edn*14! )`GQ``07 )uN& zBuF{&*zJ%3###33t]<)q"ˁE8h`%3###33Z6*ҢWھ[>4B?`/Z!#!#3!33#ʋՉ#v)v^9dV`!#!#3!33#bbڸWWZ`CX4su&zduq{&4zh5 !#!7!!3#?+!t!+^++t` !#!7!!3#c#&#ɓZ 4D<V` #33WâEVNl0%3### 33g]<8}3B`%3### 33Z6b*v4?Hk*#6&#"#36?6?2a\Nqj`2X!P"˄+74H0I > ڗ*\cU'% T pTHK9,Bm'9u H&2)fJ32+7327676&+#33]Y.<4~L!>GF%9]|r"ˁqwr|zKK"hV`3 +7327676'&+#33x::B,5)edn*14! )/Wھ[>wGQ``07 )&?`/f%+732767!#3!34L!>GF%v׊"w)whzzKK_9dVV`+732767!#3!3)edn*1fbڸWW``07 `CE !#!!3#"!/^ժ^` !#!!3#L$ȒZ`4_H #Hϸ1n|'2$4HCH&2#LN'3uH?&j#o{5m'`ubfH&2(QP`h{QN'+u{`h&j|BN'Wu &j)NN'$u BF&j*xL`1'q; V&q+N'+u V&j+RN'+uuZ&j1Qt]{QN'+ut]&jLN'u a6&j@&1'q;V&q6&N'5uV&j6&k'7uVf&76N'+u&j: !#3"'&'&7332767673=^j+75G0H >,ZUNqj_2X!I$'% T pI*\z)b!#3#"&73326?36ZJ'A^s},44Nq!(~5" 2 N'+u&j>{ O3267>54&#"326?%!>54&#"7>32>32+3267#"&'#"&54671}i##N;ZeD;Sj+aUF5";Hj/]uUM1L#O8Rv2PyH'!b3C'\i]{0#"'&'732676'&+732676'&#"767632r53QXZd cTTL @?PPc_^T"f]^Vyx A@^  VJ=+,nQb54"[\m Pd %!!7!!!#73)q-я{,8P%#"&546?!>54&#"7>32>32#"&!3267"3267>7>54&:PzaUF6#;G_":Q;'8uP|4B=Sk<`(HCA_(Jb?@+TZ[nNX:2)+E@AD6NyGfkDL8GNdGB,jl MTEF5`V$QW/{  #6&#"71Ҽ7)e)/./  332678.8*f*/.+0[%!7!2676&#!7!#J$$^$WD"lp2rV$W?373!7!2676&#!7!#W'(A''##jxexE$$v:&"zlp2r+S")7!2676&#!7!2676&#!7!#rB0w!}o |p!`!`6, Y"iJo5FP;9JI9!c?Le( ."326?#7#"&546;7>54&#"7>32KI+3A7]}Ot.{F`s§PI6~FD{8u E)/7wg+]58]Nm" 03e\Q:& )32676&#"3>32+3267#"&'."&eu ?D`~Ot1}PliF];@Ez8Wr??8?vh+f]85lZimKDg..R73#7#"&7>322676&"-tt'k?l"!@V5;r<NO/00z{ww{ O3267>54&#"326?%!>54&#"7>32>32+3267#"&'#"&5467 NC2%8@ +%4C 8 =5,[!&S-CXY:Q`J 51S02V$3K X2MZ )7",K) ',GH.P3>,1 `.+-,QEpz1 +/^%##%VIG4%267>54&#">32#"&'#3L5V$@?5V %C'h@gs4-0N>Tuu304=GH320?DK/0thQ=@G0/Og%"3267>54&3#7#"&5467>32h7T"@@5W#EkItt)h?gr3+/N>\103AGH311@CKDO/0ujP54&#"#"&5467>32!32676RIMB~AKC4Eub\8H  CKeU}wX=02k8, NR #7!76&#"7>32#"&73267. `m8LH9!!ݗxGUT2gp fnZ_cW*0&'&7>32&'&#";#"32767#"'&7>H! 389?>550Vh ((Uid^x 33m>;<5@;;6LLo$$5KX]0*"Q>-7 a33]=S*0#"'&'732676'&+732676'&#"767632H! 389?>550Vh ((Uid^x 33m>;<5@;;6LLo$$5KX]0*"Q>-7 a33]=S.267>54&#"#"&'7326?#"&5467>327302S#G?aHO"3d0.c2^g%nEar2-/F?`t3/2}32#>54&#"#>54&#"#3>32N16A PiN  05OiN /3Ojj F)/:&)=3M<g3B $H}g6@ # Cs6"#**$+73267654'&#"#367632XDFht9HWHQ77Mtt+;;Hl'!pm;gFGgF<{4/1\v4/2IHIHWxsM=BBzrL?AC3>32#"&'732676&#"3i3Cߤ3\+&V:mZm #6&#"4#%w#{@XYuՠxzzx3  &733267#w#{@XYuՠxzzx%#3>32#"&7267>54&#"Fst'l?fp1,0M?Y3U#A@5W#FbP.1tiP>BD/(203@GG221@DKC!!;#"&5467#737'K1@jbK'P %R>B&TP*332673#7#"&5466TuU;5PoMut.qBR`|&,0h_b^76RG4}!7!2676&#!7!#K_fblqi7*g32#"&'#N.08pdr6 RL&HP&:nPHJnf"2ZTZjwQwI,.uW[׸jp|aU ` !!!!7!!!7ymnmOg `BV);+73276?#"&7!7!BY&moZ980&|~ij>>~#3>32#"&$6&"2tt'k?l"!@V\5;r<NqO/00z{ww{3#"&5467>32.#"3267!.i8D9;T8i2)Y5El%$'VV32.''7'37.#"32654&NG/-0Yy0-0T  !YB2qIAi `TN:ACxrF;>E0 430pQ13 CJ$8$2#"&'7327676'&+7327676'&#"767632P&& cb6o9,77?m?@ /._chV32 )*W088DE;;3 01 )*=]33a 7-Q"*]XK5$$3#"3###737>3<< xtx yvU/88P#P,l\=73#7!3#+7326?c&&,r\PP\>#"'&7#7!;+h,,F)W*9t;:n@PpFF !#3!73#@ggP-PP !#3!73#!7@ggP-PP\\/3#"76;33#7#"3276.ttſytrx)? rKNB,|ssW?#5$  ;#"'&7#7!:*8d0-.FFX<8p(Q: ;+73276?#"&7#7!_*8EFhu8$$hX|.EGH m;32+73276?#6&#"#6&#"#3>32K/U,#@^uj3!!O,24OjO/.3Nii G'07)&uSmwX#"G g@Eg?Es6"#'"#"&733267332673##"&K/U,#PjO,24OjO/.3NiiDG'07('ukAEg?Eg6"#' +732767367632#6&#"23V!1X+107[! SVR';Fix66XV~a8BDwYYk\Zw#76&#"#367632;#"'&7B(:GhNWW,008[ C 1"UH/YYk\sa8BDH VX66x 33# #o{o{~-  #"&76%"!6'&!3276&w#$v##@X;3e  XY;*R=5cc5=J,==,!*3#7;#3+737&'&7676767676'&tb.;##`Jiti0;##`No`f/#; g5'; \\AUTA\\ DTUD ]/%>wx=%; )=xw>)$=.#"#"/;#"'&?327676'&/&'&7>32,e9V01 Y&v++YY9< Cr'( :;;=R21 g&h'&@nb/$+*MW33 VX66x"19-***IX`676;#"+73276LGA>{no> ??r-C]Me30U:Jx66XL !!;+53276=#"&5#535};J88hu9kPF7R m;t>g>t>uu7t7>=Jz`N^B;\\`9Y,-6/#7!27676'&'7!# '&767672M57WCC7;HH./X\{':?KYm67YR8>#{\8?>LQRR<=:531+"'&73?27676'&'&t<֎,r('WtWA [CD#4*8?>L66wpU67YQ8C##3{i{s !!!7!^=R^O!!#;#"'&?!7!VG 2!V^=R VX66x ^]#67#7!7!3632#73276#Ma \&nI n ,8!!^R^=jR3 2#"'&'7327676'&+7!7!CJ9('ݱ;<=>/xDxGI02hnL\& =;M| m**PJ*)]R^%6'&#"!3276 #"&76&XY@8 MXY@9&k-.˓k-.l~LVVL~g~MVVM]lj#fE'wl"fGj"',w"G,Aj'("'2'(Gl"+fTlH"f'KJk&.uZk&NrulJ&.f Zl&NfAJ&.,Z&N,ANl "f8/7l#fONl1"qx;7l/#q9N '("/'(v'O k"08uf"Pv&P3&l "f0l{"fP'9&1TH&3Ql"f)1TlH{"f'Q'("1TH{'( QVh&S3 l"f5~l{#f\U l1"q';~l"qEs5&V3l{"f6sl5{"fVl5"f7ld#fW05'("7d'(%"Wl+&9fl`&Yf R`r&:|\#m&CZR`r&:|\#m&vOZR`4'j8$:\#&jZD7&<L\V&\35l&f(blf}&f H5^&(Tubf7&H69l&f,=l&f.LRl&f2ulZ{&f RPl&f8}lm`&f XDr&<|Vm&C\D^&<TuV7&\61r&1r&1r&1r&1r&1r&1&1&r'r'pr'vr'v]r'sr'''p~Jr&~Jr&~Jr&~Jr&~r&~r&r'r'r'r'Jr'`r'|Vor&|Vor&|Vor&|Vor&|Vr&|Vr&|V&|V&r']r']r'Jr'Jr'|r'|'D'Dr&r&8Jr&bJr&jr&r&&&r'r'r'r'Jr'`r'f'^'uZr&uZr&uZr&uZr&ur&ur& r'r'r'r'r'vr'vr&r&r&r&r&r&&&UDr'Dr'JDr'1D' r& r& r& r& r& r& & &r'r'vr'r'r'r''^'1f&C1f~Jf&C~ff|Vof&C|Voff&CffuZf&Cufff&Cf f&C f1Vr&)1Vr&*1Vr&+1Vr&,1Vr&-1Vr&.1V&/1V&0Vr&1Vr&2Vr&3Vr&4]Vr&5sVr&6V&7V&8QVor'EQVor'FQVor'GQVor'HQVr&IQVr&JQV'KQV'LVr&MVr&NVr&OVr&PVr&QVr&RV&SV&T Vr&} Vr&~ Vr& Vr& Vr& Vr& V& V&Vr&Vr&Vr&Vr&Vr&Vr&V&^V&1H&21&q1Vf&1Vz&1Vf&17&1V7&n|'2$4,0'q:f'pfV&2xrVY2xr#727#73V2"dV76F'MTjQVof'QVo{'QVof'|Vo7&QVo7';f'vf f'DQfV&8Jr'jr&d8'FJH&2+&q-&V7&&9|'2$490'q:mf'fbJr'r&d$'>H&2&q&%Vr&%Vr&7&&D|'2$4D0'q: Df'DDfr'F-'rjFPfC Vf& V`& Vf& 7& V7& Tf'fTf'fV&?ffv\xr73#3"e""ïd/Z9910!!P !/Zy@ 9910!!/yy@ 9910!!/yy@ 9910!!/yy@ 9910!!/y]&BB9@:og910KSX9Y"#73)~5@:og10KSX9Y"3#)/5@:on10KSX9Y"3#)/B#7B*t* e@3     :o g     991<20KSX99Y"#73#73& '~~y _@0     : og     91<20KSX99Y"3#%3#))/ _@0     : on     91<20KSX99Y"3#%3#''/) #7##7*s**s*;o \@0: Q   99991<20KSXY"3!!#!7!Roٮo\];;o@L       :   Q   999122220KSXY"%!#!7!!7!3!!!RPojoRRohn\\?!   & 104632#"&?}|}||{|?q?)/ w@<    :n    999991/<<220KSXY"3#3#3#<o;;///'3?Km@<%1= 1%+\C7IF:4(:"FG4"@ "G""".G"@(/99991/<22299990'32654&#"4632#"&32654&#"4632#"&32654&#"4632#"&H%'H_EDbcCE_yxxwyLaEEacCEayyxxy aEF`bDEayyxxy7a`JGacECcaEyxyEaaECcaExxy"GaaGCcaExxy  #/3?JT`32654&#"4632#"&%32654&#"4632#"&'32654&#"462#"&2654&#"4632#"&Q::PR8:QeeddeQ::PR8:QeeddeV%'O:8RR8:OeȊceyaacCEڦyxxy!GaaGCcaExxyzGaaGCcaExxya`JGacECcaEyxyaaECcxxy5m#@uC91907m+!{#R=s#@uC9190%77=+_# ^R?'4 B'4x'^S?'a $<4762#"&%#"'&5476767632276767654'&#"bJ&%6N89JKd??&&:9JJc@@Y6.,!/!!H8,. /#"@  ,kMO&&EDl{zOO&%ED8NtsdV'&5NtujO'& t@> JJ J  J: `   991<290KSXY"33##7!7 !iuw!#~ oy}y4&!!>32#"&'7327654'&#"1 <MM##A>IM`H~09v?}RR66`5782_ ?@gFAB0.rABaH() b64'&#"326.#"67632#"'&5476767632f''HbCB))Ha'\2TT%1;?LvBA.5BCRJJ-Bfg200?#"GFkC'&ThPP=87h?FC.7ABx]deRx<< a!#!u  $5A,:4'&#"3276&'&547632#"'&5476"327654'&M-,O`=>ZLc==H$%dcxBAkS,+̟POFG2UnNER98((A%%87V;F34();eHHfPOA@0.Ku99d]BBUZF7@11F2a4327654'&#"732767#"&54767>32#"'&NH`DC)(HaAB'.-3UT%.?>Lx-5RKK4.Bgf3//@DGFkE&&KKh PP9pgCBC.66BAx^Rw=< #6&#"#367632KK;PZ;:Dy-@@Px^!{TP43`s^6~aT:d\C{d3TtdTudC;d4C<dbT=daC>dAT?daT@d"&)''#!333#3#!###737#73377'(%hkkkhkk'(4&{{&&{{{-|@C$%|{c!|{ c '+a!e.'.-,+($$ &,$.9999999991<22299032.#"!!!!3267#"5#73>7#7]LJH'FGG28 /LU'PV1 1!*(A323#!!3267#"&767#736767!7e A^g'qV' o):7hہ*ti) WD 4cq<;''K={[/ {9b{DI--N@{ O/{t!,&'&#2767#&'&776?)GLKff]]o)gc_\4d5]=?,e+\RV_P0- W6i----iH$"u9Bt"#BuflCTHKy 02#"547"327654!!3>3"##726 4 42 3 b[y$U2 y$U2 .=.= 0Z/= 1Q~>;\>fh@6    :   Q  1 1010/91<<2<<90KSXY"###5!3###r}r7q^^-BJ.m/m{&'{uV/m&'tuV/{&'{<V/&'t<V/&'u<V/{&';<V/{&'{=V/{&'<=V/{&'{?V/&'u?V/{&'<?V/{&'>?V/m{&{B} 5!!B#ZpZR#ZZM '#'"ZZ$MZpZ#B} '7!5!'7ZpZ#ZZM !737@ZZ#ZpZB}!5!'7'mZ#ZZ#ZߠZ#R#ZZRZM%7#7'3'ZRZZ$R"ZݠZ#ZZ#Za 7!##:nt':tna #5'#5!tn'dtna )53753dtnntda 733!ntd:ntB}3!'7!5!7ѓc}Z#Z㔎RZ#R#ZRB}#5!7!'7'7!'/cZ#ZߤRZRZRYxa532767676767632&'&'&#"#"'&/#7!$f ! +!3-68+2",j!!!3 .6+85.0$m: w '07)(6;C+ : ,:'+:Yxa5!5!#5#"'&'&'.'&#"'6767632327676:m$0.58+6. 3!!!j,"2+86-3!+ ! f:d+':, : +C;6()70' wB}!!'#537i&ڠZZ#ZZZZ#R#ZZM'75'3''#ZZ$R"ZZ&ZZ#ZZB}'73'7'7#'7!5hZZ#ZZZZRZZM77#75'73ZZRZZ'ZZ#ZZ&B}'!5!7ZZ#ZZ1ZZ#R#ZZB}'7!'7'7!'4ZZ#ZZ1ZZRZZB} 53#5!5뤤4Z#ZhZ#R#ZM %'3'3!5Z$R"Zh̠Z#Z4B} !'7'7!#3̠Z#Z4ZRZM 7#7#5!ZRZ4Z#Z̤M%'7'3'73!5ZZ$R"ZZhZZ#ZZB#(276767654'&'&'4#!5d >b-*,%:0Z#Z  *+(54<852.&Z#R#ZB#)!'7'7!"'&'&'&547676763"mEZ#Z0:%,*-11> ZRZ&.258<45(+  B#$>2+#5!5!54767676"3276767654'&'&'&l>b-*,%:0ΠZ#Z2)-019 o #*+(54<852.&ՠZ#R#Z};47(+ }  A#%?!'7'7!#5#"'&'&'&54767676";54'&'&'&e910-)2Z#ZΤ0:%,*-11> o #+(74;}ZRZ&.258<45(+  } B}X3267676767632267676?'7'7#&"'&'&'&'&'&""'&'&'&#5! ! Z#Z  > >  Z#Z" *!#$' * ZRZ %  '%  %' " Z#R#ZB!'7#5!3'7'<2Z#Z<2Z#Z Z#R#Z ZRZq` %7'7]JQgz=Zӄh PJV}e 5!#Z"ZǠZ#R#Ze !#!'7'< Z$Z9kZRZe !3!5zZ"ZZ#R#Ze '7'7!354'&/#7!J%%%'HD_SlhX[HJ%%%%Jw422-A8;>112-!:zJZ[ghX\HC+%%'GKY[eg[WMs2=>FD{2,/2{DF>H':Xy6#5!#52767>54'&'7#"'&'&'&54767<:!-211>;8A-224wJ%%%%JH[XhlS_DH'&&&Iz:d'H>FD{2/,2{DF>=2sMW[ge[YKG'%%+CH\Xhg[[IB}5!B#Zp{#ZB!!BMZZ#M3'#|"ZMZM#'Z$MpZ#B}!5!'7pZ#ߤZB'7!5Z{ZM!37ZMZGM!#73{Z#ZpB|  '7!5!'7 5!!ZpZ##ZpZZZR#ZZ*M !737 3'#'2ZZR"ZZ#ZpZMZpZB| '7!5!'7%!!ZpZ#ZpZuRZZ#ZZ#B|'5!!!!5 #ZppZ>R#ZZ#R*M73'#'#'3hR"ZZ$RZppZ#B|'7!5!'7!5!'7ZppZ#>RZZR*M%#73737#hRZZR#ZppZBA! '7!=!Z#Zp{Z{#ZBA! !! !5!'7BMZMpZ#ߤZ#ZB}!73!!!'7#5!!qVa6ZEV`6NZ#Z">RRjը;mRR:lNZ#R#ZRRB!!373'7'7#'7#537!7'!RRȚNZ#ZN|NZ#ZN.9#!RRRRNZRZN ~NZ#R#ZN RRB}!'7#5!7!5!73'7'%!7'!`]Va6.ZxV`6NZ#ZRR;mRR:lNZRZRRB}!!5!RRpNZ#ZNRRRNZ#R#ZNRM#'3'#'RNZ$R"ZNRSpNZ#ZNpRB}!5!'7'7!5!7NZ#ZNpRRNZRZNRRM%37#73RNZRZNRRpNZ#ZNRB}!!7/7'7!5mRRRNZ#ZNNZ#ZNRRRNZRZNNZ#R#ZNM'77#7'3SRRSQNZRZNNZ$R"ZpRRmRRANZ#ZNNZ#Z6a##7!#tn::n3:t:5p::6a '#5!#5'5C:3n::n:4:dp:nt6%753!5373:4:dp:ntn:nd:4:6%3!'3n:nd:4:n::p5:tB}5!!!!!Z#Zwgw"?Z#R#ZRwRwRB}!5!7!5!'!5!70"wgwZ#?RwRwRZRB}37773'''#5:;!\[`Z#ZCCjjZ#R#ZB}'7'7#'''53777Z#Z`[\!;:ZRZjjCCM%#5#535#535'3'3#3Z$R"ZtZ#ZtM533#3#7#75#535#5ZRZtZ#ZtB} !553353!Z#Z{Z#R#ZM '3'#7#7Z$R"ZnZ#Z}ʻB} !'7'7!+53#53Z#Z}ʻZRZM 7#77'3'3ZRZZ#Z}6B} !!#3#Z4ZݤZ#ZZ#B} 3#'7!5!'7뤤Z4̠ZZ#h#ZZ 5!5! !!? Ou]%uuv 333'#!#\^vtP uB !!75!!5 t]]Xv ###3!3,^\X& v 3'335%!!# #^\XtvpFguv %3'3#!5%# #3!^\^$tv~Fuv #3#!5#3/# #3!J\^^|HGetvJ~{GGMuv 3#!!5#3# #3!F\ F ^tvW~uv 3'333'37# ##!#^\fd^tv ^u9v #!5#3'%3'37#7# ##3!3^^ fd^tvJ^uB '#35!7'!!!5 5~t]]EF 7!##!#*:ntaI':tnIFEF %!53753!5!ldtn~ntd&Iv #7#3'# #3 3\^^tvP*OutuB}'0#"'&'#53676323'7'7%&'&#"!32764RvxN1kk2Ow9g' Z#Z 0GD2 & +JD5@3PO2BB4R,( : ZRZ11/0*M !#737'#'RZZ"ZZ$#ZpZ*ZpZ#Ba7!5!'7!5!'7'7!5!ppZ#Zp?ZRRRZB}#5!5!53!Z#Z[qZ#R#ZB}!5!53!'7'7!#p\Z#ZߤZRZB}#53533'7'7##Z#ZZ#ZߠZ#R#ZZRZB}#5##5#53533533ҤtZ#ZtZ#R#ZB}#53533533'7'7##5##tZ#ZtߤZRZB}53533533'7'7##5##5Z#Z8Z#Z8ߠZ#R#ZZRZ !! ?OuuuB 7% !5uzR##7 ! ?S:uuzRuu##-)6@'! '!* $$*9991990>54&#"#"&54632#"&54324&#"32JIH7$$0e՘ݢe WOmVPmmWKt,>bFأ[t}t{O@*BBBB:91/90KSXY"#3 !q!#7!hqqPC?3 3ް2ް22013!!"&63!!"!0",Z(膆(\JN*"f_QQĪKM_fOPi%+i?33ް2&2'2$%ް2222//01%3!!"''7&'&6;73#!!#"!#L(0,:CyEB航6'|>v\JK-".4"$: 1cQı2#KK_ff_lFO]B/ 3 3ް2ް2201!3!!".>3!!"N=c(憆(c=֪I9[[9IPC?33ް2ް22 01&'.#!5!2#!5!276767!5 ,Z(؈膆(\JL, 1f_rĪKM_fOPi%+h?3333ް2$2%2&'ް222//01&#!5!27+'7#53!5!3276767!73&'&'(/-9CyDD舫6'{rx\JJ. 4 %:  1crı2ݪyKK_ff_lFO]B/33ް2ް22  015!&'&#!5!2#!5!2767>b(؈憆(؆b>,I9[[9IL9@ LL120!#!L^L= -@     <91990!!5 5!!LR%# Չ\P_X-yl10!!X!תB#@ :Q10KSXY"3Tm+U e+Gr/`n103#`; /@     99190'%3##d)#Ӕ/}b%9 %.#"326"&'#"&54632>3"38\32#"&'#"&546329[=G[TFBi8\=G[SDCj~/[w~SNAU}^sdlkutcjmvu۠d|k֥s}T!3!T*,}T!3!T*p,33# NM^T,3 3#T^,$476767632#4'&'&'&#"#;9_UijB9 KGLV32326yKOZq Mg3OINS5dK t]F;73 ";@<7  6<Xy32767>32.#"#"&'XJF]t Kd5SNIO3gM qZOK?<6  7<@;" 37;XyG&'&#"5>323267#"''43OINS61-NSXIFJKOQdSP  ;@<7 W"323326X!!KOZq!Sc1NJOR`!t]D;83$
777=X`y!!#"'&'.#"5>32326X!!KOZq Mg3OINS5dK t]F c;73 ";@<7  6<Xbz'767#"'!!'7#5!7&'&567676ǧfYUE5kIQ%\n*xrYQMoIF\<[ETFR q$"B2(d%(9L5XXy$!!!!#"'&'.#"5>32326X!!!KOZq Mg3OINS52'V t]Fجϯ;73 ";@<7 " 6<X1y0%#5!7!5!73!!!'#"'&'.#"5>32326Qu{hq,gqTKOZq Mg3OINS52'V t]FR=R ;73 ";@<7 " 6<Xy.1%!5!7!5!7&'.#"5>3273267#"'!!!!'hMEnK Mg3OINS523J:VQ FJKO!8!E$F";@<7 832326#"'&'.#"5>323326yKOZq Mg3OINS5dK t]FJKOZq Sc1NJOR` t]Dï;73 ";@<7  6<а;83 $77 7=X0y8&#"5>327&'&#"5>323267#"'3267#"/'00NJOR:G67'43OINS520N]a91FJKO?J4r[DKKOdgb 7 ;@<7 !7)32326#"'&'.#"5>323326!!yKOZq Mg3OINS5dK t]FJKOZq Sc1NJOR` t]D*!;73 ";@<7  6<а;83 $77 7=Xy7S#"'&'.#"5>323326#"'&'.#"5>32326#"'&'.#"5>323326yKOZq Sc1NJOR` t]DKKOZq Mg3OINS5dK t]FJKOZq Sc1NJOR` t]D;83 $77 7=;73 ";@<7  6<а;83 $77 7=Xy$!5!53276767632.#"#"&'y!JF]t V'25SNIO3gM qZOKج#?<6 " 7<@;" 37;Wy' %52% $'"51pZV(IٜXDz;%76767!##"'&'&'#5!!5367676323!&'&'&i1*+V WJRNMR  W,!::!,\HSLPM% +*%'H:^2:A<336G84^:H'@'H?Y L=@33/N0<^:H'%X`z!!5367676323!&'&'&!!i:!,\HSLPM% +*!#'H?Y L=@33/N0<^:H'%X`y' Xy& 'Xy'o& Wz'n& J. 3#3#!5!5J=>𹬬J. ##!!!!>7BX`y 365&'!!5!&547!5!!%43448>!0IG00GG2?8>;_8X`y  "264&'2#"&546!!!!iIdddeH:l'**z{h!!bFE``bq+((d:svvBX`yK 2&'56!!!!j!!K BX`yD 3# !!!!.鏫!!ZV"BX`yD 33#!!!!.@!!DV"BX`y !!'!!!! TU UTv!!BX`y !3!!!!!h-e!! z(iBE`(/?GKO#"3###535463!3267#"&54632.#"'53#5#"&4632264&"!!!!@#mmC???DJB&G$$K&aqk[Q_B;18BCC?-I\\I-?p`ctiF6A?9i=$#tu#gSSSBX`y"&*>32#4&#"#4&#"#3>32!!!!"]?T\Y88EQY7:DQYYU;;R!!=:xoHOM]QHPL^P%U20=5BX`y$(,3#7#546?>54&#"5>32!!!!ffc`--A6(Y1/a3\p$-,!!aN2A+,/-7#!^aO&E++ $BX%y<@ l  l  <291<2<<990!3!!!'7#5!7!X}y}J;fժhӬXyB !!!!!!X!!!جX y%#5!7!5!7!5!73!!!!!'G=XkXU7Y Z:wSAw@Xy 7!!!!!!!!X!!!!߬Vw? (@l  <2291/905!5w!!LK Xy? (@l  <<291/90-5!!X#!!VVTw 3!!5!5V!!!!߬¶LK VTw 3!!-5!5V!!!!߬VVw#5!7!5!73!!!'5 p[5m{*[y~!߬`u,`vLKVw#5!7!5!73!!!'-5 p[5m{*[y!!߬`u,`vWy&%5767$'5674[šzآb|۠M)Ig#M(Jh#Xy %5%%%'w2rK/dtm0x0oVXy '75%%5%'rKnd.t'o0xEu0#oVX y!5!%5%%%!!'XC_^?sMN#N+PJ>`5Yd|5X y!!'7#5375%7%57'NEO>:fLNtt5\h}a5H<Vw?#%#"'&'.#"5>323265wKOZq Mg3OINS52'V t]FJ!;73 ";@<7 " 6<LKVw?!(%#"'&'&'&#"5676323276-5wKHGOZq M343OFGINIIS52'V t]FDE)!!;3 " @< " 6V w+.%"5>327%5%%%3267#"'&'&''}QINSE^AsMP#Bt]FJKOZq _4O;@<7փ_5Xc|6V w27'732767#"'&'&''5676?5%7%53;L t]FDEJGLGOZq P32326&%&%5$7$7wKOZq Mg3OINS5dK t]FJl#a;73 ";@<7  6<RO]ɗ9=}Vw*%#"'&'.#"5>3232655%$wKOZq Mg3OINS5dK t]F)a#l;73 ";@<7  6<R˖}=9"]OV[w67&%'&'5$774hmU֠Gc _eT2wnw2"O0Bj%V[w'567&'567&hmU*c _eT2Vwnw 2O0BDj%Xy_%!"'&54763!!"3!yɊD_`Dƍ^`Xy_75!27654&#!5!2#XD`_DȊɣ`^ȋXy> #"&'&5476;7!!!!"#'J_+30TD~K9# K^+#Eƍ5p5Xy> 32654'&'7+'7!5!!5!237RJ_+30TD~K9FC K9^+#Eƍ55Xy%!5%!"'&54763!!"3!y!ɊD_`Dƍ^`Xy%!=!27654&#!5!2#yD`_DȊɪ`^ȋX,y&%!!'7#5!7&'&5476;73!!!#"$UrG6:qYȲG5^_=R5 Yƍ5p&`=X,y!++!!'7#5!7!5!&#!5!27327654'&'92D4VqF53 D&#I`__ 2ȋ559`^`X0y!%!'7!5!7#"'&54763!!"3!!yR|ɊD_aDAQjfƍ^`5eX0y"%!'7!5!7#!5!27654&#!5!2yR|Da_DȊ]zTQjf`^nj^DeXwy1/3ް2/301!!!!X!w@Xwy1/3ް2/301!5!!5ywXy H/3 ް 2 ް2/33 3017!!!!!!X!!w߸Xy J/3ް2 ް 2 / 301%!5!5!!5y!w54&'&'3!!#!5!ݾOO''''OOݾOO''''OO~GE:;99;:EGFF:;99;:FތPOO__pm__ONPPNO__mp__OO=9;SP;99;PS;9Oi372"&'&'&547676"2767>54&'&'!5ݾOO''''OOݾOO''''OO~GE:;99;:EGFF:;99;:FMPOO__pm__ONPPNO__mp__OO=9;SP;99;PS;9ՌOi3?2"&'&'&547676"2767>54&'&'77''7ݾOO''''OOݾOO''''OO~GE:;99;:EGFF:;99;:FBccccPOO__pm__ONPPNO__mp__OO=9;SP;99;PS;9ccccOi372"&'&'&547676"2767>54&'&''ݾOO''''OOݾOO''''OO~GE:;99;:EGFF:;99;:F,ccPOO__pm__ONPPNO__mp__OO=9;SP;99;PS;9KccOi372"&'&'&547676"2767>54&'&'3#ݾOO''''OOݾOO''''OO~GE:;99;:EGFF:;99;:FPOO__pm__ONPPNO__mp__OO=9;SP;99;PS;9Oi2L2#"&546"326542"&'&'&547676"2767>54&'&'h7b%&'qqnNL88OݾOO''''OOݾOO''''OO~GE:;99;:EGFF:;99;:F)'%`8nqqMpLM77POO__pm__ONPPNO__mp__OO=9;SP;99;PS;9Oi!'/7=E2"&'&'&547676%&'&'& 654'67676-ݾOO''''OOݾOO''''OOf:F-T1-F::E.S1.E:POO__pm__ONPPNO__mp__OOAϚ9FPQ9.9떖EQPD19Oi!;!!!!2"&'&'&547676"2767>54&'&'+{{ݾOO''''OOݾOO''''OO~GE:;99;:EGFF:;99;:F;gZfPOO__pm__ONPPNO__mp__OO=9;SP;99;PS;9Oi372"&'&'&547676"2767>54&'&'5!ݾOO''''OOݾOO''''OO~GE:;99;:EGFF:;99;:F2mPOO__pm__ONPPNO__mp__OO=9;SP;99;PS;9IPi%!!!3!!#!5!3Ҍ8Ȍ7nj6Pi %!!!!53rM_Pi%!!!7   '3ͬc  ccc #c ccc Pi %!!!3#3X`y!532767>32.#"#"&'yJF]t Kd5SNIO3gM qZOK ?<6  7<@;" 37;XAy 755%5!5X!#!!ʶLK XAy % 5 -5!!y#!!!!KL VVw?  55!5!w!!!KLVXy? 55%5!X!#!Vw $75$&%&%5$7$7"nWlܜ86s˖}=9]OVw $'$'5%$5)n˱#lݷW680O]"ɗ9=}Vw)%*67&'&%&''&'57&%5$?7dMjTVʥ3˱!3a4m"cjX)3S][e﹏3N@%HZ-=}k$Vw)$(6%'56?56%7$'57&%D>WwZN(۷+/m")33 +Si063hiyje˖X[y3!!!'7#! !PYBzrYh?ݪ@?@X[y3!'7#5!!5!!PYzrY(s??ݪ@X>y!!!!!!'7!5!7!X!w R`RgfjfX>y%!'7!5!7!5!!5!!yRgw! RjfhDfVw?%%&'&#"5>327%5 %3267#"''43OINS:Z0!!x2XIFJKOQd>3  ;@<7 ҧK{"327V!!?E>XIFJKOQd>C43OINS:Z0"323267#"''&%&%5$7$743OINS61-NSXIFJKOQdSl#a  ;@<7 W"323267#"''55%$43OINS61-NSXIFJKOQdSa#l  ;@<7 W"]Y"\I\\\\I`LLMK\y>> 3#˪5hppK #3J5hp . #7!!!#t\"o]]o"\.ڭ%ۭ& #53àZ03#s #5ˠАWeE%3 53Zz i#s  3#àР˓[m#!!# q3#s!!`N um!5!#z3#zz3!5!`z m #4763!!"ƺoyeD9uߑfW#'&%'53 763:*enK==Mne( =C _AEc H<  3!!"'&59De{oVfd #3ƺ m 4'&#!5!2 9Deyo}Wf &'&3!3#76<(enM==Kne*!<McEA_I= 3#!5!2765 o{eD9ᏞfV(3(! !!;bc;$<:.]3!3:~\T\~.%y5!!X3 2!@ 2 5!!5!!5!4)4𬬬 !!!!!4)4XXX 333 Nf  !!!@@@ Nf  53353353353𬬬 3333333XXXX 333322s's' !!!!@@@@22s's'!!!!\!!#!!#\!5!Z!!X!5!$Z!!$X3!-Ԭ3!-.*!!@Ԭ!!@.*5!3,,(!3,X5!!@,(!!@X3!!- 2Ԭ3!!- 2* #!!!P@ZԬ 33!!P-#,Ԭ!!!@# 2Ԭ #!!!P@.* 33!!P-#\*!!!@# 2*!5!3,Z,!!3,X !5!!#@PZ,( !5!33$,PZ,!5!!$@Z, !!!#@PX !!33$,PX*!!!$@X!5!!Z !!!!-XV !5!5!!,ZV!!!X!5!!$#Z !!!!$#XV !5!5!!$#ZV!!!$#X5!3!,-,Ԭ !3!!,-XԬV 5!3!!5,-3,*V!3!,-X*5!!!@,Ԭ !!!!@#XԬV 5!!!!5@,*V!!!@X* #!5!3!,-Z,Ԭ !!3!!,-XԬ !5!3!!,-Z,* !!3!!,-X* !5!!!!@Z,Ԭ !5!3!!$,-#Z,Ԭ !5!!!!$@#Z,Ԭ !!!!!#@#PXԬV #5!5!!!!P$@V,* !!33!!$,P#X*V !5!533!!$P-#ZV* !!!!!@X* !!3!!$,-#X* !!!!!$@#XԬ !5!!!!$@#Z,* !!!!!$@#X*5!35!,-𬬬!!!-,XX33*!!@@*DH5!5!xX333x 2 2H !!!!-Rx !!##xmsZxH !!3!!xm3-sZRH !5!5!5!,NX 5!###lZZXH !5!!!5!4l t,ND 3!!!--Dx 333!x,ԬxD 3!3!,(D 5!5!5!3,,D|X 5!333,,(DX 5!35!3̠| 3!!!!-- 2Rx 333!!xs 2 2Ԭx 3!33!!-s, 2ZR !5!5!5!3,,X !5!333xtZ, 2X 5!3!5!33t, 2H !5!!5!4R 5!!###sZZH 5!!5!3!!t,-sZRD 5!5!3!,-DX 5!333!,,ԬD 5!5!333!DX,!5!5!5!3!!!!,,--R5!333!!###s,,ԬZZ !!!!5!5!333!-s t,ZR, 4763!!"Q[yY[`~| 4'&#!5!2.-Yx[Q`~=?x 5!2653#xY[Q[~|2Ψx !"'&533![Q[Yyx2|~>3m 2>#3> 2> # # 3 3>ݲ}#$cc|5!F3F~|5!|iF3P|!XF!@F~|!|iXF!@P5!5!!5iVV333PP~P!!!iXVV#!#P@P~P( ! ! !!!!#!#(!(F(!Z((!((!(h(!|((!(*(!>((3(i(} F( #'+/3!33!33!33!33!33!3䟟䟟䟟mnmnm(%8K#!1!!!!!!!#!1!!!!!!!#!1!!!!!!!#!1!!!!!!F????">>>>#>>>>">>>>(((((!%)-13#3#3!3!##!#3#3#3#3#3#3#ޟޟ#|ŸŸ|Ÿm#(#E(Zh!|i}h((&&(&(&&"(&&"i(}(&"(&&"w!N<w7!!!xr$<w 3!254#!") ) xrVVVw&/&w !%!5!5!5!5!5!5!5!5!5!N?:IILII޸[["[[w !!!!!!IIN< w !%!!5!!!I) NDJPV\bhn27654'&#"&7367'67675673#''5&'&'7&'%67'7&'67'%7&'&'%6767%&'&$h%$%%34$&1++XSA N@`==k>P CRX++XYC P>k==l?L ?Q oL+ Nn;P?;@  nMNn3%%%%34%&&%s==`?J >PW,,WW? K?_==f?H?PW,,WU?H?^<=Ke+cL mCP`k<<!4(0847632#"'&7327654#"&#%#&7&'67&'67!󫪪vӤ=6 5N'V[S.U[R󫬬񫪪񿉊 ʯX[V[X[V[!4(0847632#"'&7327654#"73$3&'67&'67!󫪪vѦ=63QNV[S.U[R󫬬񫪪񿉊w  'X[V[X[V[!4!)47632#"'&%#$''&'6%&'6!󫪪4>;D@KDzcngk?dnhk󫬬񫪪I kpinipi !4 "*2:AIX3#''%#&'52#"'&5476!!'5%!!'53'5%3'5%3#'32765'&#"M==,/0#H 8&O6 |7iY06./==e6a&i1r4z012+KN2HQ>>>>f^2"/1]8`1"Y 4f2y`1B7#5#53'&'&54767&'&=33676=3#327654'&O&"}|fzg}}"&&"}UQn$mQU}"$nQUVV{xVVUQ<"{u^^\ _u{"#| zUOOUz |#YOT{zQPPQz{TO@>)4'&#"3276&5476327#'#53'&`____`oŠqk]^^]YYňÁhgf@> '"3276'&'7#5373'#"'&5476j___``_ߓqŊqYX]]XYfhhĈÁj0 '&'&376&+"'&5'476%7!Z{z[ZZ[~\YWmpN#ZX[[YZ[PQmp#TG*52764'&#"#463233#!5sPQPPtrQPyzg֏LQQQPPQr{{t|g*#"#53533#632#47654&#"#ddiqqCBigIIugzyUr}ppDtPQs_CS 7"27654'&7#"&54767##53#533333#3##h. @\ ! 2(>>?ZW~>'3|}}! -/@ /- !^'?XY??~YX?(F}R}hh}}hLS<#5#535&'&'5'73'3#'73'676=35'73'13|e{vw}wwUATwx|xxS@Wwx}vv|d|re{Eus~~suE|VAKtrrt@X{Ius~~suI{dr|*! #!!!'!27674'&#_82V)3{D#MHZW{s{?zK8QO##"'##565'##"/547?kM ,4N"DF &Fi?JO/FB!O {|Im<&=M2227632#&547636=4'&#"#4'&#"=` ]d2 cBU;/G;SXMB:@B ս;7hf% #>|\@9@O &&5 iC n:^O G  %2O7236;2"'##'65##"'&5476;235&'&=476jS c1=EO ;SCFRʝT6*F@E1;O+.`162V Yi8/D ;8[B VRP"<B+"'##565#+"'&575477;2732;276=4'&3&'"ih;F(wQ"DG".FWCNfBy" bODUq5u4  Pro@ |S`64 'RHIOq 1 ӫg 4D% 3363'$6'"I+4 puoS^*  3%#'#3%#';&2 IʗHj7*(,377#'#'547#5773%%,ppsr,'zzxz'984?/99e5>:_u#\u ! !h i/u-1u#\u h u-w7!!!xr$<w!!!xr<w7!!xr$<w%!!Yr$<w% h5bcJ6bw bc66bw ! bc6bw! 5bc6b w #)-17%#535#5#5#5##5'3#5#5#5#5#5##5##5###5ZssssVrrrrsZVr~rZHNrrrrZZrHNbVrrrrrrVL %"32676&'6#">7.7>3%"*)e)*fo888-:G% ߞ"(gڜ-*/1|kI5b@`   :        2999991/<2<2990KSX9Y"3#'#"!#!##737>3/-J__۸%&Sec/яNb@K   :     99991/<22990KSX9Y"!#!"!!##737>Ѹ__)پ&{Sec/яNT"&,7>?67654'&#"6763237 e3232673#"&"*&"6}#|U">##$(8 } ~\79 32mn 6.mn=Y910@//]]KTX@878YK TX@878Y#]@ 91<90@/// ]K TX@878YKTX@878Y3#'#՞ј5c@ 91290@//// ]K TX@878YKTX@878Y#373-՞ї /mf@ 9910'F#ll5 #.#"#>325rOKWky!x=68;qy5 3@  HH120KTX@878Y332673#"&rOKWky!x=68;qym`:@ 9910@ OO__]KTX@878Y3#'3#3#͠=͠i###5`,0#7676?>7654'&'"#"7676323#/! HK40 >2'@M*N=KL |2! !#OJ; 2bEBTY;X1-%#D>Y5'$RX'<b's'V'H,&H,_X&Mb5[&?e5&L*g&Lrk&`L@/#_<22wmdhsR!uX/bb{\)?XXXXFs5\N9NR3R PRdHH;wb;T=Z7Tubs}\NX{/dJX/+X3?}\R///os55559999RRRRRPPPP37HHHHHHbbbb====wTuuuuuX/}}}}HHHssssww5b5b5b5b5bN;N;N;N;T,9=9=9=]A9=ZN7N7N7N7XTTT}RuRuRu# 3 ssssP}P}P}P}P}P}R\NNNT,Di2HZ7a3Q=G F97Tc}Q fx >o8J XArvsH9=RuP}}P}P}P}`HoRuRuTs4uuRuu* 2xxxn0Ur:C`tBJig%N2Y6`!A t2cg00 b)c@T~D'8PSas /NxQD 3z[]*fP{Ow-"{@Q?w*.?'lvf5B"4Xx4r?QE5Q9R3f91~|1AK~|g8uH%fa u rR99^w\\H1v Q73ss55PEp99\"K&Eq5sR3s&,3HGdbBVVVuV1I!nXa(bbTs==+VrEEsEBVs+T9VE_HHo5bQ`Q`BVVRuQtQta&&&i +V+(&$#**? *.333C*#I3,*$3=*&/t Z-$L5O%ww2TZZZN7N7NTTT ~ ~ss0R\R\R\5b5b9=RuP}11111111^t~~~~~~Ka||||||||8bjKaf^uuuuuu V ^11~~||uu 11111111^tQQQQQQQQ ^111111122QQQ|Q; Q8j99mb%%  TT?\//);??5=?x?a4baAaa\34baAatTy/////////////BBBBBYYBBBBBBBBBABBq?QQ2BXXBBBBGB*BB*B*BBBBBBBBBBBBBBBBBBEEB*BBBBBBBBX+;)}}?5XJWXXXXXXXXXXXXXXXWXXXXXWJJXXXXXXXEXXXXXXVXVVVVWXXXXVVVVVVVVVXVVVVVVXXXXXXXXXXXXXXOOOOOOOOOPPPPXXXVXVVVVXXXXVVVVXaGX|h2     :xxxxxxx||iEiiDDu777777?aa"!!!!GCL2 1rjD7uuLbb??/miDDDD@p, x0  H  @H d|`8TddXt8 8!l!"#0$T%%&&&'<''')|*+,$,-./01812345d6l7X89\:(;;<=l>8>?@$AlAAB|CXD<EPFPFGHlIJKK<KlLMMMNOlOPQQR8RShSTT T@U0UHU`UxUUVWWWWWXX X8XPXhYHY`YxYYYYZL[t[[[[[\^^,^D^\^t^^``a a$a<aTalaaabbcc c8cPchcddee e8ePfXfpfffffggg0gHg`gxggggghihiiiiiijj(j@jXjpjjjjjkkk0kHkll,lDl\ltlllllm`mnDn\ntnnnnoo(o@oXopoopHq0qHq`qxqqqqr(rrrrsss0t uuuvv v8vPvhvvvvvvww(w@wXwpwx x8xPxhxxxxxxyy(y@yXypyyyyyzzz0zHz{{${{|l|}D}}~0~~Px<,HP\4L,8<@XTdx\D4P(@Xp(@Xp@Xpx(@Xp<P08dP8$,, xp`,8xLLHT,h,`<P|Tx||T`,Ƅ0tȀ8xɼhX˴X̼ ͘(XlΔΰϴ $P$xӔTԸ4`ՄՔդմdtքִ֔,@\׈װDhذ@pٌ 4P`pڌڴ$8L`tۄ۔ۤ$8hܰPh|(8H`xވޠ޸0@P`ߌߜ߬߼,<Lp8HX,D\t8p,,<(|htD\tD4Ldl hhxlx\l| 0Hdt  8P(<Td(8$\$t dt x,h(8H|  x  0   ( @   @ P ` x   `   @lxX 8PD,D t @Xp(@Xp 8P`p0H`xd||TD|hhH 0 ! !""#0##$4$%4%%&&P&' 'x'(8(`()<))*X*+, ,h,-,-x-..4.x.//p/0(0111223|34445 5556@677|777778 8$8<8T8l88888899,9D9\9t99999:::4:L:d:|:::::; ;$;<;T;l;;;;;;<<, >$><>T>l>>>>>>??,?D?\?t?????@@@4@L@d@|@@@@@A A$A<ATAlAAAAAABB,BDB\BtBBBBBCCC4CLCdC|CCCCCD D$D<DTDlDDDDDDEE,EDE\EtEEEEEFFF4FLFdF|FFFFFG G$G<GLGdGtGGGGGGHHH,H<HTHlHHHHHHII,IDI\ItIIIIIJJJ4JLJdJ|JJJJJK K$K<KTKlKKKKKKLL,LDL\LtLLLLLMMM4MLMdM|MMMMMMNN,NDN\NtNNNNNNO O$O@OXOpOOOOOOPP(P@PPPlPPPPPPQ Q$Q<QTQlQQQQQQQRR,RDR\RtRRRRRRSSSSSSSSSSSSSDSTSSST4TLTUUXU|VVWLWXXY0YLY[H\`\\] ] ]<]X]t^0^_```0`aaaab b b4bHb\bpbbc,d8deef8ffg gg<g\g|gggghh<h\h|hhhiiLi|ij j<jljjk kTkllm4m|mnnDnnno4oppqXr s8ssttLtttu,uvDvvwx8x\xxxxy$yHylyzzhzz{@{{||h|}H}}~~H~@@,|`0l$`h (l\L8$X`4`4p(dt@0Pt<8h\,x4 `tDDX((h,<T`$\,P h(0\0x(X@0((x8 à4Ĉ$ppǴ4X|ȜTʬϐϸPlФ0PlѐѴ$|Ҵ`ӔӰ$@\xԬXՐdֈ֬<`ׄפ0Ppؔؼ<dٔ8dڐڸ<dېۼ 8d܌ܰ0X݄ݰ<pޤ @x߰ T$HtHt4`L|$X<p(l4d0Lh@d,Hd (DX ,D`| `x,`p,Xt8T| (Tp$@lHl|0hh$txLxXt 8d<h4pdP@l  X   h@<(,<L4L|8L0l 4d , t ""###$$l$$%%%%%&&,&D&\&t&&&&&'''4'L'd'|''+h@_Jo 3t  F4 D  (  _ 0w 8  2@ " : & hCopyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain DejaVu LGC Sans MonoDejaVu LGC Sans MonoObliqueObliqueDejaVu Sans Mono ObliqueDejaVu Sans Mono ObliqueDejaVu LGC Sans Mono ObliqueDejaVu LGC Sans Mono ObliqueVersion 2.10Version 2.10DejaVuLGCSansMono-ObliqueDejaVuLGCSansMono-ObliqueDejaVu fonts teamDejaVu fonts teamhttp://dejavu.sourceforge.nethttp://dejavu.sourceforge.netFonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. http://dejavu.sourceforge.net/wiki/index.php/Licensehttp://dejavu.sourceforge.net/wiki/index.php/LicenseZ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ sfthyphenAmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandicLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongsuni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191uni0193uni0194uni0195uni0196uni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEUhornuhornuni01B1uni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BBuni01BCuni01BDuni01BEuni01C0uni01C1uni01C2uni01C3uni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DFuni01E2uni01E3uni01EAuni01EBuni01ECuni01EDuni01F6uni01F8uni01F9 Scommaaccent scommaaccentuni021Auni021Buni0221uni0224uni0225uni022Buni022Duni022Euni022Funi0231uni0232uni0233uni0234uni0235uni0236dotlessjuni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240uni0241uni0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni0259uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269uni026Auni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02AEuni02AFuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02BB afii57929uni02BEuni02BFuni02C0uni02C1uni02C8uni02CCuni02CDuni02D0uni02D1uni02D2uni02D3uni02D6uni02DEuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9 gravecomb acutecombuni0302 tildecombuni0304uni0305uni0306uni0307uni0308 hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322 dotbelowcombuni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0358uni0361uni0374uni0375uni037Auni037Etonos dieresistonos Alphatonos anoteleia EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni03D0theta1Upsilon1uni03D3uni03D4phi1omega1uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FAuni03FBuni03FCuni03FDuni03FEuni03FFuni0400 afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061uni040D afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097uni0450 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109uni045D afii10110 afii10193 afii10050 afii10098uni0492uni0493uni0494uni0495uni0498uni0499uni049Auni049Buni04A2uni04A3uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B2uni04B3uni04BAuni04BBuni04C0uni04C1uni04C2uni04C3uni04C4uni04C7uni04C8uni04CBuni04CCuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8 afii10846uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni1D02uni1D08uni1D09uni1D14uni1D16uni1D17uni1D1Duni1D1Euni1D1Funi1D43uni1D44uni1D45uni1D46uni1D47uni1D48uni1D49uni1D4Auni1D4Buni1D4Cuni1D4Duni1D4Euni1D4Funi1D50uni1D51uni1D52uni1D53uni1D54uni1D55uni1D56uni1D57uni1D58uni1D59uni1D5Auni1D5Buni1D77uni1D7Buni1D85uni1D9Buni1D9Cuni1D9Duni1D9Euni1D9Funi1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5uni1DA6uni1DA7uni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1uni1DB2uni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1E0Cuni1E0Duni1E0Euni1E0Funi1E12uni1E13uni1E24uni1E25uni1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Cuni1E3Duni1E3Euni1E3Funi1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E4Auni1E4Buni1E57uni1E5Auni1E5Buni1E5Cuni1E5Duni1E61uni1E62uni1E63uni1E6Cuni1E6Duni1E70uni1E71uni1E7Euni1E7FWgravewgraveWacutewacute Wdieresis wdieresisuni1E8Euni1E8Funi1EB8uni1EB9uni1EBCuni1EBDuni1ECAuni1ECBuni1ECCuni1ECDuni1EE4uni1EE5Ygraveygraveuni1EF8uni1EF9uni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni2010uni2011 figuredash afii00208 underscoredbl quotereverseduni201Funi2023uni2031 exclamdbluni203Euni2047uni2048uni2049uni2070uni2074uni2075uni2076uni2077uni2078uni2079uni207Funi2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089uni20A6Eurouni20B4uni20B5uni210E afii61352uni2126uni212Auni212Bonethird twothirdsuni2155uni2156uni2157uni2158uni2159uni215A oneeighth threeeighths fiveeighths seveneighthsuni215F arrowleftarrowup arrowright arrowdown arrowboth arrowupdnuni2196uni2197uni2198uni2199uni219Auni219Buni219Cuni219Duni219Euni219Funi21A0uni21A1uni21A2uni21A3uni21A4uni21A5uni21A6uni21A7 arrowupdnbseuni21A9uni21AAuni21ABuni21ACuni21ADuni21AEuni21AFuni21B0uni21B1uni21B2uni21B3uni21B4carriagereturnuni21B6uni21B7uni21B8uni21B9uni21BAuni21BBuni21BCuni21BDuni21BEuni21BFuni21C0uni21C1uni21C2uni21C3uni21C4uni21C5uni21C6uni21C7uni21C8uni21C9uni21CAuni21CBuni21CCuni21CDuni21CEuni21CF arrowdblleft arrowdblup arrowdblright arrowdbldown arrowdblbothuni21D5uni21D6uni21D7uni21D8uni21D9uni21DAuni21DBuni21DCuni21DDuni21DEuni21DFuni21E0uni21E1uni21E2uni21E3uni21E4uni21E5uni21E6uni21E7uni21E8uni21E9uni21EAuni21EBuni21ECuni21EDuni21EEuni21EFuni21F0uni21F1uni21F2uni21F3uni21F4uni21F5uni21F6uni21F7uni21F8uni21F9uni21FAuni21FBuni21FCuni21FDuni21FEuni21FFgradientelement notelementuni220Asuchthatuni220Cuni220D asteriskmathuni2218 proportional orthogonalangle logicaland logicalor intersectionunionuni222Cuni222Duni2238uni2239uni223Auni223Bsimilaruni223Duni2241uni2242uni2243uni2244 congruentuni2246uni2247uni2249uni224Auni224Buni224Cuni224Duni224Euni224Funi2250uni2251uni2252uni2253uni2254uni2255uni2256uni2257uni2258uni2259uni225Auni225Buni225Cuni225Duni225Euni225F equivalenceuni2262uni2263uni2266uni2267uni2268uni2269uni226Duni226Euni226Funi2270uni2271uni2272uni2273uni2274uni2275uni2276uni2277uni2278uni2279uni227Auni227Buni227Cuni227Duni227Euni227Funi2280uni2281 propersubsetpropersuperset notsubsetuni2285 reflexsubsetreflexsupersetuni2288uni2289uni228Auni228Buni228Funi2290uni2291uni2292 circleplusuni2296circlemultiplyuni2298uni2299uni229Auni229Buni229Cuni229Duni229Euni229Funi22A0uni22A1uni22CDuni22DAuni22DBuni22DCuni22DDuni22DEuni22DFuni22E0uni22E1uni22E2uni22E3uni22E4uni22E5uni22E6uni22E7uni22E8uni22E9houseuni2308uni2309uni230Auni230B revlogicalnotuni2311uni2318uni2319 integraltp integralbtuni2325uni2328 angleleft anglerightuni237Duni239Buni239Cuni239Duni239Euni239Funi23A0uni23A1uni23A2uni23A3uni23A4uni23A5uni23A6uni23A7uni23A8uni23A9uni23AAuni23ABuni23ACuni23ADuni23AEuni23CFuni2423SF100000uni2501SF110000uni2503uni2504uni2505uni2506uni2507uni2508uni2509uni250Auni250BSF010000uni250Duni250Euni250FSF030000uni2511uni2512uni2513SF020000uni2515uni2516uni2517SF040000uni2519uni251Auni251BSF080000uni251Duni251Euni251Funi2520uni2521uni2522uni2523SF090000uni2525uni2526uni2527uni2528uni2529uni252Auni252BSF060000uni252Duni252Euni252Funi2530uni2531uni2532uni2533SF070000uni2535uni2536uni2537uni2538uni2539uni253Auni253BSF050000uni253Duni253Euni253Funi2540uni2541uni2542uni2543uni2544uni2545uni2546uni2547uni2548uni2549uni254Auni254Buni254Cuni254Duni254Euni254FSF430000SF240000SF510000SF520000SF390000SF220000SF210000SF250000SF500000SF490000SF380000SF280000SF270000SF260000SF360000SF370000SF420000SF190000SF200000SF230000SF470000SF480000SF410000SF450000SF460000SF400000SF540000SF530000SF440000uni256Duni256Euni256Funi2570uni2571uni2572uni2573uni2574uni2575uni2576uni2577uni2578uni2579uni257Auni257Buni257Cuni257Duni257Euni257Fupblockuni2581uni2582uni2583dnblockuni2585uni2586uni2587blockuni2589uni258Auni258Blfblockuni258Duni258Euni258Frtblockltshadeshadedkshadeuni2594uni2595uni2596uni2597uni2598uni2599uni259Auni259Buni259Cuni259Duni259Euni259F filledboxH22073uni25A2uni25A3uni25A4uni25A5uni25A6uni25A7uni25A8uni25A9H18543H18551 filledrectuni25ADuni25AEuni25AFuni25B0uni25B1triagupuni25B3uni25B4uni25B5uni25B6uni25B7uni25B8uni25B9triagrtuni25BBtriagdnuni25BDuni25BEuni25BFuni25C0uni25C1uni25C2uni25C3triaglfuni25C5uni25C6uni25C7uni25C8uni25C9circleuni25CCuni25CDuni25CEH18533uni25D0uni25D1uni25D2uni25D3uni25D4uni25D5uni25D6uni25D7 invbullet invcircleuni25DAuni25DBuni25DCuni25DDuni25DEuni25DFuni25E0uni25E1uni25E2uni25E3uni25E4uni25E5 openbulletuni25E7uni25E8uni25E9uni25EAuni25EBuni25ECuni25EDuni25EEuni25EFuni25F0uni25F1uni25F2uni25F3uni25F4uni25F5uni25F6uni25F7uni25F8uni25F9uni25FAuni25FBuni25FCuni25FDuni25FEuni25FFuni2600uni2638uni2639 smileface invsmilefacesununi263Ffemaleuni2641maleuni2643uni2644uni2645uni2646uni2647spadeuni2661uni2662clubuni2664heartdiamonduni2667uni2669 musicalnotemusicalnotedbluni266Cuni266Duni266Euni266Funi27E0uni29EBuni2B12uni2B13uni2B14uni2B15uni2B16uni2B17uni2B18uni2B19uni2B1A afii10064uniFFFD dlLtcaronDieresisAcuteTildeGrave CircumflexCaron fractionslash uni0311.caseBreve Dotaccent Hungarumlaut Doubleacute thinquestion uni03080304 uni03040308 uni03070304 uni03080301 uni03080300 uni03040301 uni03040300 uni03030304 uni0308030C uni03030308 uni030C0307 uni03030301 uni03020301 uni03020300 uni03020303 uni03060303 uni03060301 uni03060300 uni03060309 uni03020309 uni03010307@֚ԴG}%2і}2»}Y&Y@&//2G@GddkY }:Y :  V f   XA W%d]%]@%XA~XA~}|d{dzy@}xwvutst2srqpq(ponmlkldkjkji hgf f f@ed.ed.cXAcbY ba`a`_]``_[%_]_@^]\[%\[%ZY ZY XW%XAWVW%VUTSRSRQPONBNSMLxKJ}KJ}IHGDCB2A@BAF@?-@B?>@?->=<;:9S:98(9S8(76543210/+ /.d-,+ ,+ *)('-'&%%2$#"!-!1 d 2 @:%%:B-B   :    @$--:-  d++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++J<       !! #" >> ?? @@ CA ^^ __ `` aa bbcc gdkh qm srutvv zx {{} ,( 8/ >    rr        0 2133 44 95 @:KBOLRQ V _ `` aa bb cc kd ll mm n micropolis-activity/res/dejavu-lgc/DejaVuLGCSansCondensed-Oblique.ttf0000664000076400007640000125103010724145723026140 0ustar simcitysimcityPGDEFTS\GPOS=x.XGSUBjϘ1 &OS/2cH;VcmapSDJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz "(.4:@FLRX^djpv|     $ * 0 6 < B H N T Z ` f l r x ~    q tGRur$ {{5{{1{{{{{{R{{{7{{d{H{u{{D{R{~)^%,xl%|RV{H{wu{U{,{/E{{{{~!{{>{{{{W{m{ {{{{{{{|/h{{L{{{{{{{{{{{k{k{{{{{y{J{[{{{{{[m{Q{n{n{{{t{q/{b{?#y{p{w~|v{m{[{{F{G{{{{{J{{{{q{.{{ {'u/{{q{){{m{{{{{{{{d{{v{{{8{{`{{{{{{{{H{M{{{d{d{r{{G{{z{zm{{y{tt{{{a<q{]{{{J$= D]$>?@ABD  E((GBBHHIIPVKX]R__XffYijZlp\txa{{fghhl279?AACJPQUUWW[[ccpp ++.. 00!88"CC#FF$vv%&)-./0123 ] f5 } ~? A!Z[# q {%0 "(.4:@FLRX^djpv|{{{{{{{{{{{{{{{{{{orr4{tr{{{{r{{{{{{{{{{{{{{{{{{{{fF  "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTu2eR&Sh" RTR RR}lRRiRSzR Rw P"?RPR}# jRAzR~RRRRRBLRR%RRRR<RR5RWR%9eRLRLR6RLRHRRYRZRZRySRTRRRyRER!RtrR!)W2SzRb$= D]$>?@A  BTTCllDvvE{{FGhJ3399   ] b d f } ~   ! "(.4:@F#FFV7444n444444444444444bibbg N R  ! "(.4:@F#FFV7444n444444444444444bibbgV { Z[ q { + &,28>DJPV\bhntz{{{{{{{{{{4{{{{{{{{{{{{{{{{{F 'PV\bhntz "(.4RhRhRhCCFCCCcmRhRh[[RhOD4,CIMDODppccFF Z[ q q s s u {  Z[ q { + &,28>DJPV\bhntz{{{{{{{{{{4{{{{{{{{{{{{{{{{{ vDFLT&arab6cyrlBgreknhebrlatn MKD SRB $     DNK   aalt\aaltdccmpjccmppdligvdlig|dligfrachligligaligaloclloclsaltsalt     &.6>FNV^fnv~:Lx|x^0r<<<2DLM%%ZZ S$=IIKKLMOO      ""$$&&((**,,..0022446688:;==??AAHHRRTTVV%%ZZ& p dpz "(.4:@FLzvqjxa) r& (2dn  &,{  $ #!  Q $&DFHLQRVX\y(:FPZfr " "w$;OVl0m(/\F`X_R")567DF2 ( lIO kIL hI nWIV jO iLI mWAZD&.6>FNV^fnv~{{yy~~ "||zz&.6}}~~ "SRTPQVU&,39AG  |D    -O  |-DO SRTPQVU&,39AG } ~LM%Z t r u s x y q z v { w 33f  P PfEd m`D(~AIMNQX]bu{~#+[w{EMWY[]} ' ^ q !!! !!!!!!"!'!+!.!2!5!;!K!"="""""""### ###!#%#*#}##$#$i&&&'' '''K'M'R'V'^'''''())*****+,j,w_ CLPQW\`tz~&Cw{ HPY[]_ 0 p t !!! !!!!!! !&!*!.!2!4!;!K!S!"A""""""###### #%#(#}##$"$`%&&''' ')'M'O'V'X'a''''())** *}**+,g,u_yqVSJ54\ZXTSRPMLIGEBA<-& {[ WVTSRQNMKHG& =( `I\Nh r  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}byqz#/77R-997y\H/{PfoHTs +b-{T\qb#H99````{w`{Pffw;{J/}5oo-{TffqD)fs04 <, %Id@QX Y!-,%Id@QX Y!-,  P y PXY%%# P y PXY%-,KPX EDY!-,%E`D-,KSX%%EDY!!-,ED-[!%!!\4r)N 3 #3#sQ-e,qe#!#J++!3!!!!#!#!7!!7!!!']_]/#J2 ]\]^!)L#/\KaabbN= /%>54&'.'#.'7.546?3}\gwVaNGL5Z5hKS_O+Z(QgT\ZdFO.2U -/*>D$~0 #/3"&54324&#"3264&#"326"&5432#{ѨzAFEerID`uDFcsID`s{Ч{ЌXñ ij­\dkjí]dò   VM 3 326#'#"&547.5467>32.#">7fmpU0(]_`x)'>lFID?o">oC`XgA[lSUڴt._6Dz2RZ$$/1d,VXOzK#J+  #&5EDSQəE)G# 4'3rCESQKS76Jc %#'-73%cC5f4C4/f.bybcyF !!#!5!P Ӫ--d73#u@RV!!pkV73#,yB3#rm[8#2#"547>"3267654&[RS≱\SSyD|1SbigHz2R`i}QOuХQOѥZ~ 7!7%3!!x)N(}HHժ# !!7>54&#"7>32R _yf{cUw"oWfרBu]azDA12Щr+>32#"&'732654&+732654&#"$cZѥrjhaJ͆TY!UZ܌~rVa &$}xL:9%%43ˢhq^g))! 33##!7 !嬿<=#3`$/ !>32#"&'732654&#"/A*U,nfH{Q]!ST喇GQը޾\@E --갂%%tC *4&#"326.#">32#"5476$32Nuetg4M8Bea[?^bX]F)ﰄ:&(UWӲ_AF!#!MV+=E /4&#"3264&#"326#"&5467.54$324tw]~i{}g||flĞ_cЮۣqrD_ttdz+{Ӱ"$lŘQ#*?32#"&5467>32#"&32654&#"Q!4L8Ce_]?^dX]Fwdug!&(UYӲ^BFv_#3#3#,b-## 73#3# t,@^F 5E_~Ѧ`F!!!!~~^F55~//m!%#7>32#7>?>54&#",,\_`m]L2Fd_L=bVH]98gbTB^\{^\YFj9LVGBk4@%#"&543273654#"3267# 476$3 "32654&h>O S#r:t{Jz~D {tg[gJLƘIPG0'}rW]rfiGr~wߜp~fyn 3#!# !8J+1 !2)!2654&# !2654&#7ѽpp&2`%vPnx՜ݨvlf>|aYM.#"3267# 476$32%WqT69}m*knohmtba^lzYY348XG14 ! #!3 4&#77>yjkw1N߿y|z/wc1 !!!!!!7RdN^ժF1: !!!!#7N~ժH7R9#%!7!#"47>32.#"326Ftw㭚`~i$Q{VIT_oIO8WUGG^cylۘ-19 3!3#!#7kk}l}d+913#7+f 3+7326740H9z~!󪚾14 33 ##7oHu7)13!!6Ө1 !!## #7+12 33##7s+Ia#"3267>54&"476$32IU69R7:qnbrlesLix⣡lvFR1T !2!##32654&#7ja囥pfվ/ϰitKa&#"476$32#"3267>54& lbpU69R7:AP gTix⣡lv1S32654&##.+#!2[ꉪrki:L3ri(kmoǩ/mtvhdջ X'.#"!"&'732654&/.5432X$ZSGmkm%ddRm4`67HM,5/0EFZ]&6&O!!#!mq %ժ+k"332673!"&5467 )5 u=O\#W2X!33|+Y 333##@B>   +# 33 # #Nt7u#t33#t||f9 !!!7!X՚oI!#3!~B#6mv !73#7v ޏF # #\ttu-!5B^f#fvK{ +#7#"&54$;7>54&#"7>32#"3267pHr vQZ^T cY!dc1Yc..''!Y~yXd״B:%4&#"3267>>32#"&'#3xiM1532!;HO1MUDTHPpoKxG500>9W}..!!Ϯ%uPR#T%%#"&547>323#3267>54&#"BojeB[b)lviM35=vgN/4?adǦ-wOShabSQTkRMST{ &>54&#"!3267#"&547>32vo{0lS YbpmFm "z&,64((ͯ-vJP.i}r#"!!##737>3qZR𫧬"Oic/яNƠ;VK{.#"&'7326?#"&547>3274&#"32K1WA=M!Ejj`@]f%RtjBv+DMum`+,*TX\ś)sLRi`e:4V|=@#>54&#"#3>32vv `Umk?l\/HT^Ȧ^m$R@3#3#R(#ƥ0V3+732673# !+)j>*bQ(`GCHZ(@h 33 ##R8R`u#@3#R@{+#>54&#"#>54&#"#3>32>32wvtZQyovZPzoŦ DhnLo\+>Zdɡ%?[eɡ`bgrv|!O@{#>54&#"#3>32vv `Uoæ"Fk\/HT^ũ`aj$RT{ "&5467>323254&#"ԱG8ZۋF9Xstuq^9+.zVW˘CacJV>{%4&#"3267>>32#"&'#3slJ43=sjN03?CojdB\k$hTPOnRNRiad˦wOScb TZM{"%#"&547>3273#3254&#"Cnkd@\p gpirkN14=adɢ.xNTbcRMQNR@V{.#"#3>326@% fŦ Bh4߻`ah{(.#"#"&'732654/.54632 BN 5nPj [Qz9~uR?((cUc53pa"$46tY`;%y^u !;#"&5467#733 kEMk87`". @:7!`>i>`332673#7#"&546{vv ]Voæ"Fm c1FU]ȩlbkZZ`33#`H` 333##+x7f31~`{{`S` ## 3R2Q`DNkVX`+7326?33sp_Fa<4ధϮhkTzk7Z` !!!7! s`ۓ%\4#";#"&546?47654&+7326?>7>3[E{T.mdBI*MWF@( Xf78r*?2)}wOgKB&5?9m{ D% 2-UKm{'"# 47326?>7.546?>54&+732;#"# FzU.ldAH+MWFC) Xf77r/?/+|xOfL@&"2@9l{D' 1-VJn~&"F1#"'&'&'&#"5>32326E^Xc  TPY_Wc UM1OD;>MSOE<>LZ !#3#73SrQ,d,eH!.'>7#.573ns Bt8 *pP;J;E6Z5>3Z׆!%- -*! 2,.#"!!!!73#7376327v9%%`QR)/?~(*׏/яTRC#/7'#"&''7.5467'7>324&#"326"g" "$g5h74l7e!""#h2h:6iSfefes;w>?s9q(&%%s>v:@t8s'%$|pprR!#!7!7'!73333!!OOw 1﷫ͮ}fp9{3{JD{3##  =~ B>54&/.#"#"&'732654/.5467.54632JM`HILLqA{4]wzOnLvg%%۳>JE5eyDoJtj'#ۨ@1o96q[33p82aSϤ''aIOZ "3267>54&'..#"3267#"&54632bbaabb툉bbaabbvTUVVUTvvTTTUST͗54&#"7>32!!D:hO4V`vлSZ@BG=-lPKS;F{=@pABzdFA""|x7{r# 77o#!~#"#RRF^!#!^RV!!p5/8L"3267>54&'.'2#"&'&547>#32654&'2#'.+#vTUVVUTvvTTTUSTvbbaabb툉bbaabbpnncOP[_V=){u5A1;f^^^傁^^__^]⃅]^^gnmmmmnnmmmmnb>KL?gwyVpMI`3DVb!!qu "32654&'2#"&546HccHHcdG9k&*)yyooPOmmOOp1.-rBF !!#!5!!!P  ~}}B !!7>54&#"7>32Q|55L?2vKEz:o9BrnT.V(6C"${rY>q(>32#"&'732654&+732654&#"Jr1qgWCHȦ:u90e8o}WXNS\gJI3o7iVMr^Hy\R>?lH@55f3#fVC`&3326733267#"&5#"&'zibr 'H#;D2^T}aV G4]d  TJPNVF;! !###.54n}~6fNHF3#-FZu!#"&'732654&'!s'M'#G&6@3W*ds =5H9y 3?33!kς c)t'+nIT 4&#"3262#"&5467>!!YWiYSnﷇ"!8lns֗mvⴚD?jv`{r# %7777#@#[#=![  ^R^ ^Ry',d&{0y&{'0td',d&u0D!73#"&546?>?33267'-,]`al\M3FcaK=cUI^98gbTD^Z{^\YFj9LVGBnk&$ t]unk&$ r]unm&$ u]ur^&$ s]unN&$ q]unm !4&#"326.54632#!# !P99OO99P03fgB>8JZ?YWA?XX%qErrOz$) !%!!!!!!#GMmeO_B&ӹ87FMu&&z1k&( t*u1k&( r*u1m&( u*u1N&( q*u1k&, tu1k&, ru1m&, uu1N&, qu=! #!#73!!3 4&#@6>yklwz T.\2N߾z|zc12^&1 s~uIak&2 tuIak&2 ruIam&2 uuIa^&2 suIaN&2 qu?   ' 7  ekccjfjL57y5yy5 7.#" 3267>54&.5476$327#"&''M)XS8: h.YR89 ##nbpuLQ$$jes}DQ<=mr-W,DCpz8]PUPMMcIbTRck"k&8 t{uk"k&8 r{uk"m&8 u{uk"N&8 q{utk&< r u1( ##33232654&# <.b囦pfRѯhsV@5>32#"&'732654&/.5467>54&#"##%,,kJD~9;}?p+F.W<fZxŧq޺=%a(H%'^Pr[-NC+RoC~%NZKf&DCZKf&DvZKf&DZK 7&DZK&DjZK&DZK{ >I>54&#">32>32!3267#"&'#"&54$;7>54&#"#"32673o|0?^T)Mw lRZb3[w vQZ)cY!"z''Z\Z\.i<&,64((sqvn1Yc..yXd״Tu{&FzkTf&HCdT&f&HvdTf&HdT&Hjd@f&C@f&v@f&@&jR:.#"&5467>32''%'3%.#"3254&>>GDK݂JDO}4$o&}V. 'N(vrufvdt|xet|k^ȃm_bdCDl@.7&Q{Tf&RChT*f&RvhTf&RhT7&RhT&RjhFo 3#3#!!-~oA{ '1.#".547>327#"&'' 324&+!T4G8YڍN4NG8WێN3M{#R5#"/)1~KzV43V7}D|V54T3%#G'&i>f&XC_i>f&Xv_i>f&X_i>&Xj_VXf&\vUV>%4&#"3267>>32#"&'#3slJ43=sjN03?CojdB\k$hWTPOnRNRiad˦wOScbVX&\jUn1&$q;K&DqCi'!$K &fDst'r$Ks{'DMk&& ruT.f&FvkMm' uu&Tf'FMP' yu&T&zFMm&& vuTf&Fk14m&' vbuT&G p=T -%#"&547>32!7!733##3267>54&#"BojeB[b)<%viM35=vgN/4?adǦ-wOShaR{{SQTkRMS13&(q=T&Hq1m' x*u(TH&dH1P' y*u(T&dH1s'(Ts{'AH1m&( vBuTf&HkR9m' uu*;VKf&}JR9m&* xu;VKH&J}R9P' yu*;VK&}JR9'm*;VK4' J19m' uu+@m' uuK@3!733##!##73!7ϵ&''|l}((9QT&##654'&#"##7373!!67632vu *p_]oqq=8LZYiD+\?3L0O__zze22wLvH1^' su,@7'11&,qC;@&q41m' xu,@H's'>,s'=L1$P&, yu@`3#ƥ`1f &,- @V&LMfm' uu-0Vf')14'H .@h' NEr` 33 ## UC__`!1l' r1v/@ l' r1vO1' /$' O1' pn/@i' p O1'yv%/@1'ytO 3%!!'7?p=2uZg3}XL{qJ 37#'7^i0Ɏ|z/@wf=wb12l' rv1@m&v1Q12'/ 1@{' Q12m&1 vu@f&QkF&yQ3EV/33+732767#Kʦ&[Y^+01ɦ}``0A}@V{#+73267>54&#"#3>32z!+)jbRx `Uoæ"FkCGCHZ/HT^ũ`aj$RIa1&2q ;T&RqhIam' xu2TH&hRIk' zu2T}f&hRT ##";!!!!!"&'&5476$3AlNx|,t8gP^*Fo;+LInӵ+F#FtbaT{(2A!3267#"&'#"&547>32>32'>54&#"3254&#"lR!Yc+[zD;Zۋu0Zـ o|2sttr^9+.264')ncihXulpq.iT"z嘗@acJ1Sl' rv5@m&v1U1S'> 5$V{' U1Sg&5 vo@f&U Xl' rv6m&v1V Xm' u<u6f&&V uX&6zZu{&Vz Xm&6 v"uf&VOu&zD7ru &zWOm&7 v uupm&W p_!!3###73!}q#eeed#ժA@!!!3#;#"'&54?#737#738U() h;%(yz(zy8A+/'P1b>P>k"^' s{u8i>7&_Xk"1&8q;i>&Xqvk"m' x{u8i>H&_Xk"<&86i>&X?kAk' z{u8iuf&_Xkc"&8kis>`&XYt&: uk|f' Ztt&< u|VXf&8\tN&< q ul' rv=m&v1]L&= y^q&]m&= vPuf&]}r!##737676;#"$"VVZ*(яNPP'(i" (6'&  7667632#"'&'##7373!!]$76`_$#77`_4FYXo/.oGG#%/tssttsstRd0110d}}^] &1!27676'&#2#!"#76763!27676'&#B`#SR;;`` s99#>2 !ceO LJ78DCBC `` ef//&r1FRQ>78rq882","67632#"'&'#!%6'&  76nFYXo/.oGG#$76`_$#77`_d0110dtssttsstN_ 6'&#!!276!2#!#::`#RTk-hg''_DCDCmmD@9"67632#"'&'##36'&  76EXYn./oGG"WI#77_`#$77_`d0110dDtssttssts'?3267>54&#"7>3 #"&s%VpT69}l*kn"nhntqa^lzYY34G3`dM676;#"&'&#"####32767# '&76!2P1[rF9x?>#%K``uώ34__uoql%lprwϊ??1ye bzKK_//ٜ//_H$$gh$9&676;#"&'&#"32767#"32&'MZ?,^++?CCHlmHEEHKKMKT/1E@oS`10+qrfrq+$$>:=^ 3 '&!7 )"#76763445ihCDR{>2 !ce/w.,~//&r1FRQt 3!!"!!"&76763!!?<:#`ܒRS''-NCD#CD+mm1v"7!#7#"32 7676'& eNFXXo..oGG$77_`#$77__d01DD10tssttssteV4c.3276'&'&7632!"'67676'&#"OVi1/a`1#;J0s_ A?b#$9:ab""AEp9Fu\0%p ̥@$OFIqrstt`g u !7!!7!!7^Md+Kh!,!!2767676'&'&'&#"67632#"'&7F~se6IhBdc~&r~~{YW).A0RtsZc  pLLыW+*$#G^12<==^RQq3&'&767632&'&#";#"3267#"'&76765o11 PXWb`RSKST=<``KMbU#e^]Tsu'[Z%!VU|ih &>=sp<;KJKK21%yyݐbbf`!!!!+732767[Nj0E8y?>"ժHKKVZ#"!!+732767#7376763ZY)* ^]Y)* !]^((hcUV((h*NUV3d-%!7!# '&76!2676;#"&'&#"3276FqwŎ@@;p1]rF9x~"&Thj}55`NOS*+mn$dz_00R "254'#"'&54767673 3:z7"dOiL' MLAFbI AWW-Q$661^l56'&#"#367632;27676'&'!#'&7(CEiYZLjo]_o**/&8:?ʙ)V(=<$ *a`.]xw22eby__OO``nqd ,,F&dba21y 3;#"&"%$y8E̎-KK( 33###737q{{wD167'&#33>B.sJK5Kn~;!tH'Cw+1K676;#"3 ##!^^YSeA__VVPh# 33###736|{z8D#''%'3%#Qv  . հ2eccŊhah<^*%#"'&73327673327673#7#"'&T`bt@@(!&i[\&&kn\[KWXmnBB|;;{z5N__NM_`)g11>>fU33#+732767[y۰0ltE8y?>"+t|KKhV:{8SX ! '&76 !' 767^>>儆}t4['R CWm7Ҥ||?*'2Y'<RS\ $"327&6'&#! '&76!2!2 AƑ21XWƞ_#%$n儆}eR GF/L椤}KKzz-xV{ "& 7&6'&##"'&3232cbF99 7wx^_`1/-ZDģ79%utntsY_wt108``^5 32676H+#"#76763br~``&'isL2 !ce/ϒqrqq/8&i1FRQV= )6'&  7667632#"'&'#676;#"$77_`#$77__d/FXXo\oHG"i ^^Y**/tssttsst_d0110dXUV((WVP*332;#"'&'&+#3276'&+]/`_%'jAE5Yq68#E )l;ARS.88bqpqY"$=?5II HI6/676323276?#"'&7676?67676&#" $r`aV?>rts &oo_qo|${fHIGHrlk"^7vc32+mlpp/EFDD~n>>-``& o{1676323276?#"'&7676?67676'&#"MOOQ{76 23ҫ%&:%-0A3=g)(V\`@oV !!;+73276?#"'&7#737Uk6g%[Z?,_*+<:$kzy8N``01PO`>P33!7!"37676Tee 1G++QRF1i&4T676;#"!!;#"'&7#73 ^]Y*)Uk6h;;$kyyUV()gcNPO`f!7!!;#"&`#q#"$$x9Ȅ0+=JKf'!8k0&X ="7! '&7676?!!! 766' y#+|_]*#wv[\ 76!Kyaޑʦav5(y%#"'&7# 766'&/8y$%".FCE6"&&x T(;#)KK-zt5”DWm} 676'#3I~<3FY]M,M|}oN(61ze99 Vzp+7326?3676'&ipaEXE-ׯuDP`SIB%hzHTN~)20e^'E !3!!!7!7!! A"fu՚"`!3!!!7#7!!nJ.)`ܐ\9*%%27676'&+7!7!2#"'&'7ehFGI:_jQ:7D /knms"XnlkKKIJܪ$8*mhU)$y%1$%2767#"'&/&76767637!!#"|vvh"uslt" '[``}_I``k1%y$)Uhm*8ܨ$JILH`#"3276?#"&7676;7!7!6_}``[!KtU\]f"Sb`aX8*mhr!y%12KJV`'2767# 5476%$7654#!!7! KIKQUJPW|*vz&0U, 5%b f8d1a w#7!!77!7!67676&#"7>323#{R|i.0 |yVx#wOgi".'T^3@umHLIwBC12tt\RI`1(2# '&/&73327676'&#!#!!^kQ:7D .t" &fhFGൎDrSQ8+lhU)$yy$)UKKIJ-%L`%2#"'&'7327676'&#!73!!)^jQ;7C!/UVWY"DbggFGsU8+lhU)$y%12KKIJ&"$#"'&'7327676'&+#7333PM!xLFF>;GCHm?&:8200}ws}#(rAbLrVW{#3676327654'&+"5=Q1" Kz+ &j;z FN1pJ[05W2(E(A V3#] V'lV|3!!!!#!7!7!7!l<*<~<*<,Ԫ01 m&'?1 uf&'@T{f&G@1f'-/1V'M/@V'MO1fN'-c11Vb'Mc1@V'MQnm&$ v]uKf&QD1m&, vu@f'1Iam&2 vuTNf'Rk"m&8 vpui>f&lXk"3"8 i>1'q;k"`&8 i>:&X qk"Z&8 i>@&X qk"Z&8 i>:&X qO{3"$ K1'qh;3"$ K "D q)4&q>K&qRZ5#"'&476767632&'&#"3276?#737!7!3.wVW`rr~tsi$Qmm{lmVI)+a`_YZJ6}I('ыW+*$#G^12<=lji+XX;VK{A4&#"32766?#"'&547676763273##"'&'732?!7RtjBv+D&';:mij*EjWX55`@UU]fKL%')6WKKA=Mfň:4Vut|JJLhTX\pqśsL))54`+~`FM7,*`FR9m"* vu;VKf#J14m". vu@hm"N vuIca&2Tc{&RsIca1&q ;Tc&qh*m' vPuyLY&O0VY#"1 &'=1 u&']T{&G]R9l' rv*;VKf"Jv5#"'&7!#3!32767v'qkHE)/k|kk*)JEu`Z߀xxv 9dPNOKV%#367632654'&#"eO ?W˳6# O/ *t՜HW5xPb397 5+I-F12k' tu1@f"QC)m& rvKl' rv&D)l' r4vKf"vl' rv{f"vnp&$ {tzKf&DnV&$ wn^KH&D1p"( {zTf&H1V"( w5^TH&H1p", {z)f#1V", w^@H'<Iap"2 {zTf#RIaV"2 w^TH'R1Sp"5 {z@Vf&U!1SV"5 w^@H&Uk"p"8 {tzi>f&Xk"V"8 wn^i>H&X X'6{'oVO'u7u 'nWR,:676767654'&#"?6767654'&#"767632'h'6R9EqU0@camuVN,=9_B*8hP|%*cqMmYVۍ}X,Oq{:676767654'&#"?6767654'&#"767632\x^%1J3=xjL,>WSeNn_^pR\IGQll3*}3H*6VU/cGtD#2/#C0'.UCgO[?XKHsffJ!19k"+C@,@k"KCm@,1V#654'&#"#3676321xv'*^jjL.})YGb?k~BC^f;pa(6%3276'"632!"'#67&7#"76323 7676'& !//z$9B-+&W"EWYp..pGG"kx#67``#$87`^- H:E<$d01D10d^tssttsst"K" 767654'&32767654'&'72 '&547>7&'&5476763|mn@RKnn?R|v>.ab *UsuSE2&w\ џ00uMM_-AA1&TMdhK&+ "cI`#&tX.4"FGFSJ>5/F" 767654'& '&547>7&'&5476732767654'HXW,>XX,<P:Qz}9&%CbH {' H2'6vuMN MM&!V7MMN&!U8Mj6C#&@Y "cDY),tttT4<"#V+B0K"D1|"(zTu{"Hz>Ia3"2 3T11'q;Ia3"2 jT+&R |IaO&2 ytT&RhIa;"2 4T1'q;t1&<qf;VX&\qUp%3276'"632!"'#67&73<"-/z$8A-, &V!覂- H:E32!//z$8B-+&V"OUp]_nçNiDE)- H:E0V`3+73267 !+)j>*bQ`GCHZ1 1? 7676'& %67632#"'&'+7#"32;6'&  76#67``#$87`_FXXo/.oGG#FXXp..pGG"k$77__$$77_`/tssttsstd0110dd01DD10d^tssttsstxV{ 1?6'&  76+#"327;67632#"'& 7676'& B#77__#$76`_hiFYXo/.oGG#EXYn./nGHH$77a_$#87`_/tssttsstRd01DD10dd0110tssttsst~o3#!#'#7'7 3!;LF7 F>B>5#:-Y'FF8O|",'&76!27&'32767# '#&#"(MI1>2xd4.rLo "&`uqom%lqqvԌd&`u畖4FXh$xYv+!f //_H$$\/حS )'7&7327&'32767#"'&#"I4$/FMF'&cHEHKIOKTj^%<@mm$^N: lOU ^q+$$Vqrg 33#!!#737q]{w8'7!!##!j1k&$#gl[0=iUYB9XM4b2{=.#"3#"'&/&'&'&'7327676&/&'&7>32?Q{ &$6<<Yzsn D#L[:@U["KNV4uGF M778\?((TT@%$!,KL[@~$=&[#1-,QKP%$JK`!;#"'&/&+?!Q$o DaL\9@,QU`1~$=&[? % 3276'&+"7676;2+#RS/98>UQN JMKM``&'#jII HI+#qpqq.!2#!#73!27676'&#!!27676'&#!7_`s98#@DO KK77d#$SR<;#`` efp/>78rq88ѐDCBCS!3!33##"'&7#73!32767%lll3gi32h+<[žnUi 0D2+^) -'vDfEPZhV! vDMC uJc,'rf33#+73267#735y]/F9x~"\H-V3#33#+73267#73X)#XS%?,_UR(aؤ\*#&'&+!!##73!2327676'&#*7*+"qj(56l9@@__&KK/\NO87HH~h11wpkk؍]]OCDBCX{&'&#"3###733676328']]NNXF][x ef<Ĥf21Q{ .2676'&#"367632+32767#"'&ɭ00degqI^]zKJ!>@VVVTbYXQVV+f{b:9ml)Lf01a```FE.'~~UM{73#7#"'&32 76'& ťFXXpXU\pHFF67``F78`d01D10jtssttss{7#367632#"'&'&  7ĥEYWp[pGG2G77_aF78^`d0110 tsstjtss" -6'&  7667632#"'&'#7>;#"]$76a^$#68`_3GYXoVW/.oGG#&c'+/tssttsstRd0110d04{?3267>54&#"7>32#"&!9W}..!!ϮuPR#ap{,%3276#"67&'&7632&'&#"63 !"2D u[| -!j//KHCA;FCHnmHFl ) H9K9DhT#3 $*qrfr TV + 7676'& %3;#"'&?#"'&32$77a_$#78`_Uk_,?88$FXXpXU\oHF/tssttsst^ؙ10``֔(d01D101-#7#"'&7632?>;#" 7676'& FXXpXU..pGG" &b(+#67``#$87a^d0110d404tssttsst4{!67632#"&'732767!76'&#"n,ik1/`ROVT`mo,NDD{^,*4cdWWO{"7!6'&#"7>32#"'&732767^KK`]_a`aqr.1^\;:zbc)Zdc4*,ėZZWWJ{ 5%676732#"'&7&'&76763273;#"'&7s# ;z 0[B 3a\^baba`r˦_&9=:#֊>8E#Z`vg'#d4*#)u10`ZG|6 {2#"&'7327676'&+7327676'&#"767632slMR>ONZ[[CBzIH :=|CPPccTUH``GE_m\["45bQ77,+=J++  OO^@A|>#"'&'7327676'&+7327676'&#"7>3273;#"'&7kcHJIM9IITVV<8{hED 76k@[]DYI^':>;#F\l[[%88ZX83,-F@..NBj10`ZȦFWh|1"327676'&+7327676'&'2# '&76jm$%GHWU=7|hED 66BXZAAikcjk0/nrot88ZX83,-F@..NO]@Al[[WV`33#+732767#735XR%?,^++R`(01ؤKMrqfqrR|`" 3 &76767327676'&'>ApL0~.;" "G5& xܱSccS$-EIdccdIE-Y`$ 3 '&76767327676'&'DQ=.) PO87 S4R^$/bLx>@AA@>xLb-!@2FF2@!-Vp`332673##"'&wu**pniOYWiEEaPO{Vf21xx#367632#6'&#"#7676;#"kLYZiEC(vu**o_]o&[Y_*+e22wx\OO__``01DV-167632+7327676'&#"#7676;#"NXZiED)z%[Z_*+y**o]_o%[Z_*+e22wxH``01OO__``01/9 7333##3#0YXOP*Ĥ<P` ;#"&7}^,?q&}`610` 7!#3!73%褤)#3327673#"'#&'&#"#67632 "q;;Ro "q::R %$RIJ %$RIJG33##7#"76326#"3mi7#,0!:1E STK98V73;#"'&7a^,?89%l10``KL%2#"'&'7327676'&+7!#3!^kQ97'TVVY"CbfhFEM8+lhyy%12KKKJ3Lb'%#"&73327673327673#7#"'&Saau'wvKj[[pvLk[\oħLWYlnCA|:<b`^zb``zh02>>Va(%#"'&7332673327673##"'&8Saau@@'vuLhou&%l~\\niKWXmnC@|;;z{bybMN`_yYg11>>hV{667632+7327676676'&#"#6'&#"#367632T`au@?'z&^++ K %%j\[ou&&k\[oŦKWYmmBC|;;{zH01VnPNN__NM_``g11>>UV@{!+732767367632#6'&#"&Y[?,_+*ȦLZYjEC(vu**o_]``01te22wx\OO__hVT{!6'&#"#367632;#"'&7**o^^oŦMYZiEC)y_,?89%OO__`e22wxH10``?V` 33##뙰`ylU{ 2#"'&76"!6'&!327610`_00aU&=195(:bE{휝sedu{RstQX`!!!!! '&76!#"; 3!@1}~0/%!&&ZX!`ݛlklmf|93276?332767676'&#"#"'&'#"'&7676F)(FE?"! $FCG*/ &Cޗz*(˅\530MK]7>.'  `pB?UO++OU0Kg]pxeYGGGGBSVeU`7327673#7#"'&'$(]^!gçF]\x efNf21> '327673#7#"'&' (Z^ F\]w eif21&V<`7327673;#"&?#"'&'G (]^!g_,?q& E]]w efN10f21V<{&'&#"#367632 '\]!F\]w ef f21V<{ &'&#"#;#"'&7367632 '!h_8:&ȧF\]w ʿ10``tf21{76;#"3!73(2Gg_*,K$!P%02V{3!7376'&+732e%K_g:20%PE`#&'&+#!232676&#D/Lg`%/.XS]RS~s32?Q|DE %&7=>QT_89% !STTXuGG &'778\?((**T@%$!*ML[[ 10``=5-,QK((%$JK1V<676;#"+73276Gmf_XY**%Z[?,_*+pR[V((h)``01/V<$7676;#"3#+732767#73#7  ^]Y**jS%Z[?,_**S?`NUV((h(``01ؤiVve;#"'&76'&+732_,?89&Y9C$10`a(h((VaYV<!#"327673## 76;676;#"$k pc&ڣ#;[&%_XZ)*3A0Ǜo@`\V()gz`!7!6'&+7323# 7Vjg;;%jzy8>`''PO:W!!;#"'&7#737Uh<:%zy8''OO >`"733!33##7#"'&?)3276XXXYPNYXiEE)+)o_UĤ`a+,O'U*kff(@D}Eioaaabdo?ܤdqn뒒kmhb+"&73?27676'&'7,?q&}}].``)11]\G 612abec0Ys`!##3 >T`4` !###334668{jj`j8 676;#"##AiMMpaEXE,װ,==HTl\`33#ø`WW`8V`!!#;#"&?!7!o^->r&~`ۓ10%`!#67!7!7!332!73276# h*  ?P3<;4% 6[L`!2#"'&'7327676'&+7!7!`iQ:7'TWVY"DbehFG8*mhyy%12KKKJ L`#, 76676'&+7!7!2#6'7&#"327.#- ރ GG:_jR972I4iv eL;*1JJ$8+lgqUeR8y*K/K327676'&#"767632#68aB(EHLJMKMKMaL uyrrLbAr+#}swt|#&'&767632&'&#"3hsPM!yLGE>?CBHm?&:ws}#+rAbLr3#"'&'7327676'&#.sPM!xLGE>?BCHm?&:tws}#+rAbLrL#67632&'&#"32767#"'&7 yLEG>?CCHm?'EHIKMKLLM_N @}#+rAAr+#}K- B+27676'&#"67632 %67632"'&JHkjHI}~lm%þpo%&{%$*)#$U6ccccffffԜؘ0.""""./!!!!E`6Z|1";#"327676'&' !"'&7>7&'&7676VlFG 64h}HQBBrl%$EC>ml00ectb*+tt..@F-,38XZ88torn[[lA@]ON60%#7!#"'&76325676;#"#&'&#"321!]GRHij.17Z%ZZ_*+__HBmmHEF" _`02jMrpdprEp`V3#33## 76;#"3276[)#ģ&=T'$ j rU/ xG`͋BA0 L` ## 33r;_L T#?R`3!!@ `JTV  ,%#"'&32?676;#"# 76'& FXXpXU\oHF# $[Y^++F67``F78`d01D10d2x``01xnjtssttss $327676'&#"7676323###7368aB(EHLJMKMKMaL uy&00rLbAr+#}swԤ|$7&'&767632&'&#";3###7s&PM!yLGE>?CBHm?&:8?11ws}#+rAbLr1; ), 7676'& %3!!!+7#"'&7632#67``#$87a^TkLnFXXpXU..pGG͈/tssttsst^Lۓd0110MUL`5C#7#"'&323!2#"'&'7327676'&+7  7676'& 3GXWpWW/.pGG#kL;_jQ97'TVVY"BbfhEG$76a_$#78`_3d01D10d^L$8*mhyy%12KKKJbtssttsst8A 4; 7676'& %%!332!##67!#7#"3233276##77``#$86`_i* % FXXp./oGG#j ?O/tssttsst 3<;4d01DD10d^6[aF.#"#"'&'#"'&7#733!!;7327676'&/&'&767632@Q{FD &%7<=QUPW;;$kzz88Vj6gSTTWuGG ̓tt\?((**T@%$!,KL[[!&PO`>NM5-,QK($)$JKVVyV5&.!67676;#"+73276?#"'&7#73!37R_XZ)*%Z[?,^++;;%jyy8HFk6g''[V((h)``01PO`>Nkp-9C!632&'&#"63 #"'67#"'&7#73327676#"&77!38ULFF>>DBHmmHEe *cHK> :;$kzz87JV vf4W+.j6gz#+qrfr v)2LOAPO`> 'KV NeV7+7327676'&#"#!##737676;#"!;67632z%[Z^++y**p]_n񫦫 !]^Y)*NXZiDEH``01OO__/яNUV((hce22wx(R!3.#"#"'&'#3>32327676'&/&'&Q?Q| $'6;=QTRX\JfOQTXuGF'"768?((TT@%$!,KL!&2-,QK($)$JK% 3!!!+6LnPLۓ) 333# #333# #)i,{,i{.{Eh-z-h{/|U=!#!#!#!#UK..UK..UXrXJ~"327673##"'&776'&+732a)+o^^okMjED(w^,?89%OO__ybedwx 10`` V|,!7#"'&776'&+732327673;#"'&7MjED(v^,?79%uUo^^o]->94"edwx 10`` b__y60`Y{#6'&#"#367632sBhAFU::>ih;/78CnXwY,-56\g8{!367632#6'&#"#7>;#"/78CnXBhAFU::>icog<9wY,,55\1SwlWU7 3+732673#hopf(<4hhxlX6Vr1&'&#"#367632X:::hmi+9:L  89ksa9 327673#7#"'&'X:8:ini*:9L  98kJa9!327673;#"'&?#7#"'&'/Y99:hn"<'g%$+9;K  98kJ V6X66x a9 +33276?3327676'&+v83 ED{mi.`6%%/yn(FpD') DoN;[--s?5</.g 333# #hh-{-i{/|+7326?33I?00FT=+6*mrobp"#W(K/iK P#73 t?q3#uխ?I%#7%t[ڬ@'672676'ʠ 9` !9 h:9'=>X@?,,=>PO%"'&6763"3h:9(UVg 9/0 ?9 PPOP>=,,?@X>l327676'&#"767632#$m;) -e-0.0.00/?2HLc@r[@*7K$@ ` XFh_@C#&'&767632.#"3Or@^32K\1,,'(U.eC' &m[AmC@_hFX `@$K7*@2% %$r27-7b'| f33S}d}|gv|f3# #}d~fg0pf3#'#O}r}fqf#373r~x;#;z+Vbqf3#f^f#fv;%#;z+-cTq^^#nv3#n#!!'fAfJ'#!fAJ#{#|!733k55j,7!##55, 733##7#7'(((j!7!kjq)H332673#"&546sfLMMchswHDCIM}D3#'$p #"&546324&#"326ohhhhnO:322673#"&_) #.quQ"9* ",qtS"<Z7IR7GTZf3#3#H|zfxS%3;#"'&7^':=;#d10`ZȢf '#7'373 BdăDcĂaa``q 7673733276u  ϭ{{ yt /MM3#hh6a/2&'&#"#"'&'732676'&/&'&767632`(.-3N++Q"l&(OOz36695567JX`#]$$ HHu:12 a /$*+MW33 k2-*)*IX01 2 #'#37z|1{H+#&'&767632.#"3Or@^32K\1,,'(U.eC' &m[AmC@_hFX `@$K7*@ EX!!7!n ЈEX!!7!3ۢn6z4EX3#!7_lz{lnhh~EX3#!7)z{6n4HEX%3!7zp@v"qq{ef3#3#AbAfx(.SMuV!'.'"#6763227673#"&( #q;9R!+ "q;:R#;, Am:: , Cm::"fC|fv4fq7bJqT|  f5)kHDFQj{62#7>?676&#"md Z-$ k%4./1APcH3UC=A   (6%""($4E4f*jf#M{NDO'Hf#!#?yͪ{fxx)'_j8)nH q(#3t?#77#73-dd-{73#7",,ef{lf3# f1UCe5'UveK&73#7#7zU{_&3##3|{Vz_dp!7!#/V{k732676&'3#"&/H)3 wbT+Uw-+76 >&Dzs50]"3"'&676 :^ ?: g:9(UV>=X@?X>=OPPP3!7373ƟGz_'#7!##Ǡz& #73733##z{׈7!V 7+73276? &ZZ^++``01V %3;#"'&7_8:&10``rSCSjC .ST3#tuSzfsifRT#RNzND T#7##:{""{:J9X#"4733273273"Dh"i^[(j^[(k@hR-R|Uw9Xr6UW~9)SwT!7=B!7!7BC #"'&'.#"7>323262NGQ] @X.GMQJ0V> ^T? ;73 !;?<6 7=h!7^%h`h7!aĤy('IgG^NO*'xMLFXYQ;~`K[.T!#``,11&bo9YX632#6#"#6'"#72Dh"i]\(j^[(k@iRV '7'77"F[g[EZg[}`}}`}}`}}` e.7>77>76'&'ozJF*zJF0PQn +0PQn T: ' f f"fC|fvq7#77#73-dd-{Fp umV0u [I#7!#!ڇ4,F2 !7!7!7!kk2xx>(3#3#BbBtxu&!#!O5*>,uf'73327673#"'&'#7&'&#"#67632ANb~ "q:;R"Mc}  #p;:R#g  $%RJI g $%RJI u#/&#"#>3232673#"&3#3#+ &#1q oL 7 "#4 qpS1χ7h 32mn 6.mn3Cu# s` s`( 7!#'73!'3tJ[ryr\qz(͛i#7?'=Z)ךt~~&'&6767:-/ 9g8:(VTg*,@A++{OPPN7767676'&f9:(VTg:-0 {NPPO{++A@,**D( kS :P=7#'&'&#"#67632327673#"'&wC&!Z6HsqR71JyD& W:GrrR71Z7  $0GJI "7  $,KJI Sn :3(7!'3#73\ryrd͛.tlf3/t1VoH%#nHV #"'&?3; (( V!. {#f3#fSF'9ljnf&HFylf'vBf' qf'uf&!Vff'&af'*z>&: Cn$1%2|3!!2Erժ\ !3 +1(=19+SX !!  76' ! '&76{vt21XW21W>>儆}p椤H1,14.\3#3#L+101212u !!!!!!+*==qIa2281T32 %!!7 7!!!RTpO7t<[O /36767654'&'&'&54776?3#ŋg" GIh$ FIwj .ǥvi /ƤWs4/TWWs5.TWx=Dy=D;!67"'&336763#;GG2WLz|2GHD(hg椌gHD"%!7676 !7!&'&7!  #*{*#<=u(' 86!aL"ʦa>؍1N& qutN&& quSf&c2G f&6HhVuf&8lf'Y:`& FSz *76'&3273;#"'&''&'&767xK] &03mxfQdU=:e0MN14 oik*%1)0T*Xk[*)V(!7#! %&7 76"V PB-.QMF72ZF9&6EdZ%I:FV`3#&+732dҰKJvU,?LdVD~4.&#"#"'&6767&7!2327676'&'&OWh0/``0#cN .7P5%,3ElD-8%[FvbILRA%#677676'&# !7!6w9?PW =.# 3aV?!  4SGKOxsPWKL,#%5,*3Y'ihV:{#6'&#"#367632***o^^oŦMZYiECHOO__`e22wxI $!!3276'&#"2#"'&76G&'2fZY2eO>VWBAVUAAd~uvl` ;#"'&7bPd99%}`+.0`bI6` 33 ##R*PN`/ZFB? ##'&+7߰uaVie<2~VC`w`!367676'&'31o_x[ H/"Ȃ`T|p5dwY|rNįtPX =.# 3L5:."Ի !3!7.KOxsPWKL,#%5,*,X$Rݿ T{Rdn`!#32767#"'&7!## y 1!"#"lv`PH  ABXVa{ 67632#"'&'#66'&  76ZH;..oGG"i($77_`#$77__fZ#10dtssttsstzR{("'&32&'&#"32#677676'& jk0/FMFE?>CCHmmHFEu;>QX =." :#+qrfrqLOxsPWKL,#%5,*Wa "327676'&'##"'&76\c $:8ab# 84q& F%1`_00~nststtȷzn휝^`%;#"'&7!7!!^aOc99&] !`0`b``327676'&'31'"'&7$jqJ/H/(:D"|`+90vfwZ{s`vxVh )"27676'&'2##"'&7673W;wTi^ .X^/-FF]_01p@Ac!"83fx5ˑRh]p[nmNssg.U{a#&+73;'&*CR,?CuR,?~0)~mV`&'&73367673#Oa*rp ?8mxG\or,{F%aw~LB,BTxnc#nf` 633237663%&h)IJ*MɻZbK*HS)gYR@O@*z'jC:`&FjT3f&@p`f&Fff'6Jq% %52767676'&'&#"'&76#327676'&WIKkHilvDK'=DYFHEMPC1?TCF0*j:Fp=lW5I pAKu_ըoskKꀰ-V{HVJ($ (6'&#"'&67632#"'&3276c0%~KF>Z7i4qqTPKLZ^]`C2lsp~GBZkA Jx'np}כ.#6''&76%6'&8x?qq _q@ j0\K-dJHv H40r{C1]Vf]f'R..N' qKuRSVe'2##"'&76327676'&#"]I]_/1FF]`10ITfW_%$94eȓeWb#"82c휙owgsugHgusgf.`7!#%&# 67)323766  !hYhieKǻZbKϤ*RѧO1[g/&767767676'&#"76776327'7S (ʎ Fmv 4d'To :ʎ Fmu4dʖ cl|YDT|˩hl="pl |YDT|˩hlfMZuXz#&'&76!   'FFq|>>ή~t21 21VpҳIHxV6{ "327676'& #&'&32bbF99ab##99FFJ`1/-``01ustntstttu n}8{R$"32#677676'&# '&76)}k5;:МRB+wTOxsPWKL,#%5,*eN|Rka#"32#677676'&#"676!Em!$EFcu;=QX =-# 40*t HqrqLOxsPWKL,#%5,*>1:)V'367632&'&#"!!#"'&'73276sh,*+,"#'l?R6!{l3,-$')++NGZd >Qoɏ?s K_v 7"'&7 6'&72F4(| =H13)|!=G[~,`*l#FR`*l#FR& #!3&iGopM]V!#76#'#66?&%&nep#YfI#PR48}G c]++:IKi XL} \4! 'x #&'#&' #' `B$O6B=+4#M!P^BK^F654'&'##"'&54?##"'&547677#326767$7676O??B5TNxi-*+"SRgp/XXjQ#"*MAI2Yu@s e[WhFPVU[wmi;XEVhim1\lAFŽ^^AQ0*dU`%!&# 6337663'676Nb*ĸ+?ȻNU>+IB*$I͡gg?J 5@+h@ф{I%l +?PVC!32763##"'&5476% m0*>tt/tUiigF6֭ J`Ui @?Րer6QVv{  7673##"'&5476763Y$ (7+``$bhFXY[@ *cB;mUsst1Rd01sFNȢ1K-) '67676767654'&#"#3676= g $R\C@|yӞ9G"CP~{'Sk^jj{=@̡E5 2Wzmh&%vr~'BCwS&#"3276767#"'&#"'63232767654''&'&'&'&54767676763267X5( D9K$)|Q=0;S3VuA3RWT !Hpc?%?,3'  %'1CNbUfA8mLD ! ! 12yKN.#AL.#^YF@?84+& "H $;;=/?"+VhPV%# 767654'&#"#676323 7xضV{%#"767654'&#"#67632327VEf5>}]#8PgO ,byYk}QAKu,2RtW+0ຐ5%! &'&#"76763267632'&#";!73276E0 9@ f8 2;)Pf <6'>@I@@h=" C(FK#C "&E !!{6%) &'&#"76763267632'&#";!73276 Ud 05v1-'Bv404BB48=3553g<'$8$67632# '&54776!2767654'&#"3276=c?0XRxumN.xQTgJ[c 0Err# 3Glo-sJV"1rFNh[oһ '$?6qNsst;4sSsstT5#7&67632#"'&54776!2767654'&#"3276V502dZlV9/_;T}.UULGZ?R"8ad#%7_^7xJF61jO\`fһ ''QCfEsstJ@jKsst8V#7####!30/AA`d`dubU #7####!3 --j@@_pzpp g+767676'&#"76776327'&767ׅɏ Enu 4d'Uo 9ʏ Enu 3e'Uo 9|YDT|˩hl= pl |YDT|˩hl= p}Va{%6767632#"'&')! 6'&  76%lH;..oGG"GL<$77_`#$77__%̧fZ#10dXtssttsstT{F0VMSX! 766'&  ! '&76}'SWL BWtl7>>儆}~yW{!&'&#"!!32?#"'&7632 T`me.aFJsJGIb`rra[`"! c\\c( P{!767632#"/732767!7!6'&#"&$g[rraaZD>Asme.aFJ_^# ؜c\\c 1(V>M&2 ! !###7P!+V` !!## #*Ħ`{`Va{(6767632#"'&'!!#7#76'&  76Oz(iH;..oGG"7L[$77_`#$77__fZ#10dȪpptssttssts'HM'yys'&}y1k& tpu1N& qhuf#%+732767654'&#!#!7!!!2/qqE8x@>"3 *p|}#MwQ3hzzKK"@3L/O9+FwJ~ES2|k' rwuS2& !! 7# '&547|%,>2BR%Ӌ`>ս2-pӐϏbpg X61,1N' quf-3!!7677!32#!4+3 6cL!cU{i-kgK 'x` 0+8/XmO4<)2!!#3!332#4+3 6#||k;klgK &k` 09dmO4=(_2#654'&#!#!7!!çQ4HE *p|}#MqwKDRf@3L/O9+F14k' rpu21k' thu-m& xuNT )3!3!#LM8++n$24#!! 6!!2#!_$0[N-gK '(@mO4=1%2|3!!2ErժK%!!67!3#!#[RK$X!˃8`1U8G7V D+?x4&A1(X33#####333KŇ||CêkqdG99dO(2#"&'732676&+732676&#"7> {}o'n"$zp}yW"mѲ|!ĐBY+wps{M("21 ##30/+21m& xu14.7#7677!#!7U{i-L!c/X++1019+Ia228 #!#8l++1T3M&O7-33+7326?õ$#XE8kJ:l2&],*j`&%%>763#7$'&547%"SfB " 1] /_ /j!#I)9#9n?Hn?F -;NT )3!33#NU+3!3#!"'&5473R|kP4HE +dtMDQv@2 %!3!3!3綪+++N)3!3!33#U++Q!!7!!2#4#!! 6@sCk-fL 'k_$ /+mO4=(2)',;2C4#!! 63!2#!_$0k-gK '(mO4= !"'7327!7!6#"76->@Y%=2%aaӽՎ;s&  654'3!  '&547!#"t29W!27ƶs=6Z>d~atLfViHgWh-jҐcq[͟{ST{F~^`!!#!no`3VX`\VV .;%26764'&#"3>32#"&'##"'&473227&#"o*0oX]J[CJN/0Kh#ddCJM11 Kh#X^JXo*0}m6cX^LajN^9^N_h=L^m6cS`[^` )3!33#ĦJ`33R`3#!"'&54733!VĦSˊK. 1/ `_:g1<*#ER` %!3!3!3VŦ`3^j`)3!3!33#ĦK`333R`  )!7!4+3276+^9oeP@ $)͓7ݐEd`&E`4+3276 )3@!^;pfŦPs6$)`7 {2#"'7 67!7!654&#"76lK/w7a{mHSHVړ\VFK{ $  6764'%336  '&547### #8 #$+N2`@0O]B \MHsLHAhO]Ǘm>F`.7>3!##"#676#";[K]ĦRW;PiG/F{FVi/(DUVHnIT={V@L@'j40VM` )! 76767!4+3276_;pKH\P PE̓@!#)oPo~ŷ7ܑE` )!#3!34+3276^:oZZŦPPPE͒@rCX$)`77ݐ/>G ##7373!!67632#654'&#"#(&KMYZiG+he *p[^_}}We22wHwHYG?3L0O_bEm'vEik&CZVX&1^` !#!3!3T22Ħ`3B]=3276?33276654''3#"'&'#"'&5476673#/pgRS"+*-ixNT5B??HKIAքM*"#QjXXZmihVEX;imw'[UVPAFhUf^^_Fl\f`JZ!2#!!7!73!4#!! 6[(-gK &K'&L`$ 0QmO4=Q(B)4+3276 )!7!3!!tArCW]:og$A@$6t/>$)͓u;+#3376!2&'&#"!!32767# '&m|kJ2xdeQ%L_`ur9m)Zauqol%krqvϋ29$#G_//wƪ//_H$$OKO{#2&#"!!327#"'&7##336768r*[~ClhT[ĥQ9{FVAW^3VH`3ʀ#'#3#>_^_ʽ?@wrs+` #'#3#r=GGpJWjQ`1!#3!3##'#/,}k#ʽ_^_?@w9d+rrsG` !#3!3##'#rTUĦVVGGpJW2`QjQ##767!#654'&'!iip1>΅Q[7AYY~b҆12bqhXfz(f`! #654'&'##7671|2xZ5? $&HJIO?b#1Qh&VhO\K@hHO\KtU'41_"%!#654'&'##767!#3!Q[7Aiip1>^l}kqd2bqhXfz Y~b_49n(G`"%!#654'&'##767!#3!yZ4@$&IJIP?b#0!UĦV^|w&VhO\K@hHO\Kt`?V,mX_2&'&# '&5476763232767654'&+732767654'&#"767632#"'&#"#3736QUG9[xZmFMY*o=ZR\E6ERQ/?KXYmm]]QgNPN|8&%yM>F%$# UP x}&) CPtHQ-ZAyU9I;& hP|%*|UV!`EW$(f$*$C F" 5 tfV]%2767654'&+732767654'&#"7>32'&'&#"32&'&#"'&54767632#373N=927|hDE .6k@]]EXFABil2$z{F0=  FZ~J)R0/NuMX9@N-W4r~1-[ ;.3,-F 3&.N>d]@AI6D[[#LG " 8Ao;D$Ux)mV`ISXgT{!  '&547!654'&"!26\<1b\<0#/#0{eRa̚eRa)&hJe)&hKe !#37632'&#"ZeR95 <B%Ks=2RC "C{67632'&#"#3niEt-03#!DT|ᵯ$O37 `T l#%# #37632'&#"zRynJ|^eR95 <B%Ksk =2RC "Cf"H">5/V-[%32767654'&+"'&'&'#";676762# '&54776!36767623 !#"'&'&Ӏ+ 9N8 )Ԁ+2#"'&547676;67676232+"'&'&(Ra! #(( +/$)Qa $1) +/ )UB )* / )SC () / `t:6eUa  _tE;eG_   m@H颈   m@I袉   B]"=fd"0B]3 I#'##'##'3276?33276654''3#"'&'#"'&5476673|->->-8/pgRS"+*-ixNT5B??HKIAքM*"#QjXX3dddd'mihVEX;imw'[UVPAFhUf^^_Fl\f &#'##'##' 633237663%&'|->->-8sh)IJ*MɻZbK*HS)gYddddR@O@*TV!!# '&54776!2&'&#"3!#Dža?1xedR&K`_u畖4BoFgƒZeh$#G_//hTUTV{ !"'&54732&'&#";#eJ 0FMFE??CBHmm$ 0EeKqAI:#+qr;4nNq4g7'77''''7'77'78yy~x~yxy}}d}}}}}}d}}}z2!"'&'&'&4767676763!67676762a3   3 g      )M6323654'&#"6\R?+$j.@|pxG/*$Md9MC)(u!#3>F~~u!73#7!4G~n~`+ + i+ i++ +n+V B- #)/'7'7'7%'%73-#%7#733#X(deX'cemlHBlA%%pttZy\yW\zn[wyo\ԤRԤR߬@¬@2V1m%3###33332673#"&IlxW/'k GDMaktm~V=67o$)RRя>1Y'+#!2'676&+327'7iumj`_% qcgHu#u~{Sqrے-,9/~V={*%'7676'& 32'#"'&'#367632as_["$67`_$#77?eshUboGG#hGXXo/. ]stststs].01d d013!3!6Sq2$*3!3!*B7Qߪ`:332| 3!!!!##luVEr9u>'` 3#73!!!!EXuuN4wX۪ 2f|!#!!!2+732767654'&#jErHwQ35/qrD7y@>"3 (r9ժFwJ~ES{zKI">5L/O@V`#!!32+7327676'&`8R12#73733#3 ##$&+?~QwH1@n3 ###7373!oC``pq=#zzA !7!3 ##(jKoH+u7)hE` !7!3 ##UC``ƚ#NT!!#3!33#|l}kkV99dAd`%3##!#3!3L2ZZĦQQL`31 #!#3!!}l}kkD+9dG` #!#3!!TZZĦQQJ`3ͪ2fm#!2+732767654'&#!#!#!wQ35/qqD8x@>"3 (rzlqwJ~ES{zKI">5L/O9+GVA`32+7327676'&+#!#!2;'0%[Yb&,.W婦gwGS``07&):`R-:L%&54767632327#'#$'&54776!2.#"3276767654'&#"&mkA)&vXvYLDEJ?D[?1jroJ!Im畖49WH6n& AC24ek}}}}NtER֝s?] яbph$">7^dVk.$?5+6'GEFy}cQR!{L%6767654'&#"&5476763327#"'#"'&5477632&'&#"3!a$(  TVvw7# *88[P;CI`26`@0MFE?7N>Lmm$"8q"**.NnT4X5?_tWXX9Z09,4hN\#qrMAhGsMu'zTu{&zk{  %3##!7!!FU8#q#A+aE` %3##!7!! L2noLt<VX`%#33ORధϮ)-7Z 33!!#!7)_^(fVX`#!7!33!78iధϮeE7ZɎ7%3## # 33dV8lӪA{+3o`%3### 33rfL2Q4LHJq{w%!33#!!7!!EV8#q#+A+aw`%!33#!!7!! L2no9L%3##!"'&733!3V8}QN*64ToSkAwr7ٟd`%3##!"'&?33!3kM1[ˉLC )%$&] NL _Vu;;#"'&73;333###<5PN)74Tp66k}6wr7ٟ9d+`7333###7#"'&?3!"OĦ\##LC )%% _Vu;0!2#654'&#!#kxQ2GD *o|wJ~ESf>4L0O9@KKp#+76! !32767# '&"&?3!6'& L"C/aa}zzu%q}|Ə3' :9N BXtmm00_F$$UL>86||8{$,"'&?3367632!32767#"'&6&#".{HI! %+E<}]],JK__]b``rj;t{bc(RQF1!&}Zdc4*,WWKsp&;@ p@8s{&<u@ p@1,Xm' xuSH'1f232+7327676'&#!#33||QN)6/D8y@?!3)*p}nqwrKK"OO9wEVr`32+7327676'&+#33)5;(/%[Zc&,.!}UŦUCwGQ``07$)`V:!#!767!3#4K%TZc1lx+8.%5ժVV_`%3##!76767!n@yL~H%Vdž1f9%+732767!#3!3C/qrD8y@>"kl}kkh{zKI_9dGVr`+732767!#3!3&c'/\ZĦQQ0= `31V9!#!#3!33#5}l}kklx9dժVGVr`%3##!#3!3ȦnZZĦQQV`3%!"'&733!3##;_QN*64ToSk8Vwr7ٟd+`%!"'&?33!3##@ˉLC )%$&] Nĥ2Lp_Vu;;1V%3### #!!lyXVGV`%3### #33uojꙙV'P`@Oi'!K &fnN' q]uK&jZ)K{1m' x*uTH&dKhQO{KhN' quWO&jCXXN' quS'jON' qu&j*yL`O211'q;Ei&q21N' quEi&jIaN' quT&jhSXtU{2SXN' qugU&jhhN' q$u &j-1'q;VX&q1-N' qFuVX&j1- k' zFuVXf&1N' qsu&jZN %3##!!"V8DrAժ^` %3##!!L2ߙL`2)N& quEd'j@ 3!!" !"'&5476763! *;#`ܓRRhK &,k("S0D#CD+mO4o$)RUB8!"32767#"'&5476763!3327673#"'&ܓRR)DtWc?h^c]H &,k !e^CFvw'ysF#CD*$U8_m}`61e15mmf6/M8JJOZxx90`6#"32767#"'&547676;3327673#"'&sE?$/`f2N]]{I6w|Pv (`]DF99*mtD.*^>,9m4l01aEi)/RUa@3L0OORAsxx%C654'&+732767654'&#"767632327673#"'&'&545GRQ/?KXYmm]]QgNPN|}9&"d_BGuv(ysF" !X8K;& hP|%*|UV!bDY(Z)J;JJOZxx8P'(>|@654'&+732767654'&#"7>32327673#"'&54/7|hDE .6k@]]EXFABiq-%!+^^CF8:)nsP68G+3,-F 3&.N>d]@AH?:>2EORAsxuM[VQ2!#654'&+732767654'&#"7676323#~K4GRQ/?KXYmm]]QgNPN|}9&.h!X8K;& hP|%*|UV!bCY).V|0%3##654'&+732767654'&#"7>32fJ817|hDE .6k@]]EXFABin0#FA-3,-F 3&.N>d]@AI6GD%327673#"'&547!7676 "d_BGvv(ysI3 L%VZc26/M8JJOZxxS~AMq8.%5]`%327673#"'&547!76767_,\^DF8:)nsP6r@yL|J%`=3EORAsxuM[5Gp`!327673#"'&54?!#3!r,\^CG8:)nsP6#ZĦQQ`=3EORAsxuM[`3R9*W^327673#"'&547!7! "d^CFvw(xtI3"q+6/M8JJOZxxS~AMqD`327673#"'&547!7!yi +_]DF99*mtP6pn=4EORAsxuM[~RG|66 ` !#!#3! ,C>h[S`G `3!!!!!!! 3 m*4?Bw0ޙ``Ӕ&X{,3>%#"?!6&#"7>32>32+3267#"&3267%2676&#"YRw̺+^cb`1V؀!~VSbQu{(Vɬ`d Z^#Z55*,ywxx..''``f{bsٴ)c;` #%276+3#6+327#!7#73!2T #3$ncf,po|f_ڪrĐT{Fi`32676&#%! )~&%%23Ǔxi` ! )#73!#32676&+k%23XT>~&%6`` !!!!!!k~*5?Aw`Ӕ8|1#"&'7327676'&+7327676'&#"767632qa*+ttETRFF@kGG 55h{JPBBTPOGVNOHA@]ON ..@F-,38XZ88%l%L`3#736ĥL()`L `?327673#"& 3xF^72&no1Ax=<=MFy,Er`T{ 77!'7pI2GHNq0xdajkNjE*`Ei`TyR{-1 6& 3267#"7632]*)+I/t%#>76& #.7632]4B ,R.76&#"'>32'#"7>7'7A-6 Hl,7 Ag,rNk+J:XOl*K9W)gA\*g>}66]C_56`?`O { '27!6&#"7>32>32#"&'#"7326726&#"]`ab`6S~ؿ00~(Y̺t{(Fr##rZ44*,nmnmolkp#Ę/u{ 6&#"#32#r#1,0/8e/ 32673#"w#r#10/8`32676&#%!2+#>QjIQ˩N^VV^>`l`!&'&'3;3!"'&7>#"3.&&g`%/.XSTR};k@A21lS66^2q$%PQicQ++ST**~^`p`$"&7# 67#Ny|&~'|y};ML?%!7!2676&#!7!# \  P:"L||BtM7373!7!2676&#!7!# $$## \  P:"xzʤ||Dv{"#!7!2676&#!7!2676&#!7!#NdH![ [  R9 Erurw?yzZ`Y`Z`]`732>&+7%7!2 's!]cs' @zHBdd>Jm7_{3!!{/`IL`!'LĥH`D```367673#7&'&3~QAa$450y**L`045"9%G`1Ms,}},uM L`76767!#!!ErJ%WģAi!{v'4#7#"'&5476;?454'&#"7>32#"32767Gi.:'&"h|i,78Fs76Y[sF-,-##=<-##<_^8Z[[ZA@@AA@@5=K#"'&?!6&#"76763267632+3267#"'&%326?27676'&#"4ABJ<: ^h;<;?>=>;`?@7DCRk11RS OU7l5>o3Q77s$%NV|~76 @VAA3QR2kpa "!CC"!44^j66 GN`T23bX6E7 =%67632#"'&'#3KC0T &%A1*+!''::@as!">)65:>.,ihQ\.-.=>=M,,-.z4n[UUC+7_g-#"'&54767676323#%3276767654'&#")tE_78!#?*45:=^Cij%%B0**"%$B2T!68@@o]UTC,:6UQ.-./=>>9 /7654&#"!32767#"'&54767>32QFN;<11XC==48<;>GG$#E,zEl?? DP01YP N*+e >?rbUTB*,@?l9"7!6'&#"767632#"'&73267 //h<:<><>>32.#";#"32767#"&7676=6 o+^54Y(D,-CAXSN/2 **U522-611.~ 0/H4OX ^$'2U13 `fa<))0#"'&'732676&+7327676'&#"7>32+=6 HIp*/044+-)CYCAYTN.3 +)V522-6c.@? /0 H4O-+]4$'2U 12  `33a<))W&9#"'&'73276?#"'&547676763274'&#"326VlYX70/(&,+0c@@ ,sD`78!#<(56;@_4%$C)&%+$%Dc۠NO e 56d/14??nWSSA*:6aL*)0AAFM)*3#73ei|h1hi 33 ##vidfq$'&#".000CEː4Z((*).fDE-+,e.^0 XX_ ?@@? q6'&"#67632$$=?n__yoBAA@qWWg27673#"&7$$==nyoBAA@qN,4'&#"3267>%>32#"'&'#3$%C/+* !$%B2T (*rFal!#>*54;C..AiiS+,-,?>>N+*.,.|68~q]UTC,7b#;#"&54767#7373C/jd]\DXV#i"P$VHH TPN332673#7#"'&5476KhI6UzGh{i,<>DT/-z 0p_[c7--Q !7!27676'&#!7!#|Z44,,^za2$ NOg#"FS10gg%dAl88)#"&73327673327673#7#"'&5==JcQJjJBQ:8FiJCP9;Fi|h.87DF*)E!"z[+,64\c[+,66Zcb;##`33#n]/o"V3{(32.#">32#"&'#32676&#"2XDAJ!Do--p"#n##nF,*[cbbc#`7!#3#3!73#73<3$2;त T7Vd%+73276?#3&?+`*006$ #367632#"'&$6'&"27h|h,77Ft67ZZsF,-a-#"<<-##;_s^8Z[[ZA@@AA@@(&'&#"32767#"'&5476767632%**-3--1*,W+005.`2CE$#F/A@L,,+f  0BAFU)* f>?taRRB, K,3276#"67&'&7>32&'&#"632#"+SJ9N W D͔/-+)&,*-fDE,Co. * &;/Z ` ?@ss@biL$7#"'&5467>32''7'37&'&#"327654&'+0EERpCC/+2P FP|7sHH&%HgEE9>>BLGG8A#"BAnC8AFe<56rQ=57 TUM(([Z&<0#"'&'7327676'&+7327676&#"767632CI!# YX/315'228c8: +)UZ]N.-LN*e>>55-xx X )*=]33a 7-Q"*0]XK5H#"3###7376763c9 lildd 66tU:8P#P,o-,7#7333#1+73276?gfkikcc7:g';P#P x66XU o +7#"3276#"'&'73276?#"&7>3-S;;#"TT<:lWX7/0*(,*.f>> ,87Gulu>=pp=>>=۠NO e 45k37n3327673##"'&KhJGT<;EihB197Bm,+{Y,-65\cO9CC  7333##73#e8h7\\3g1zhg\\j ;#"'&7N<(g$#NpUW66wN 7!#3!73,aW`dW\\E\\!?!#3!73S%,`W_dW\\\\E\\3#"76;33#7#"3276}hhm|g{gl%8 fDE< ,|ssW?#5$ 3;#"'&7ߞh!;(f#$SV6X66x$+73276?#3:9f(<hhax66XS g3!!Grkj$_3>32+7326767676&#"#6'&#"#367632:4{Jc()Lrf;6 . /BQ:9GhJCP::Ei{i078DF))EBED~zxlX6V0=-ZX56\w[,+56\sa9"# '#"&7332673327673##"&4==JcQKhJCQsFhIDP:9EjjC077EESE"!~{[+,j\c[+,65[cQ:F6P+73267367632#6'&#"Nqg(;6~h188Cm++KhKGT<:xlX6V~a8BDwY,-56\]6'&#"#367632;#"&7FU;<Ei{i198Bn*,L ;'gHY,-56\sa8BDzV6Xlx_ 33# #Gdn~dn~42#"'&7>"!6'!3276F<>^_<<˧?5h $UT=+WWWXXWW@9\[8E-AA.3!*3#7;#3+737&'&7676767676'&*ia1=_Lhh`/=_KeW]3*>$\2(>#\\FWWG\\FWWE[*,ApoA-9*Aqq@+;&'&#"#"/;#"'&?327676'&/&'&7>32'.-4M+, P"k&'z36 <g#$4j7J-, \#]"#u9cb /$+*MWf VX66x"j-***IX`676;#"+7326D@;8obd9 99g'<6]Me30U:Jx66X63#;+7326?#"'&7#737#DBkrf(;6y%&BLM#PMaxlX6V -,vTP!733!33##7#"&?)3276b8h8C8h7ii2h286CnVFU;6\\`9Y,-6/r&7327676'&'73##"'&76767F/2''<=26`aA@(+O\{':?KY7667YR8>#{\8?>LRRQRR<=:31+"'&73?27676'&'&6(g$#NhN;Q== .&8?>L66wpU67YQ8C##3n`ojs !!!7!)"^=R^'!!#;#"&?!7!7!;(fHl^=R V6Xlx ^^#67#7!7!3632#73276#XcA} c (2!!^R^=jR3& 2#"'&'732676'&+7!7!=A4%"cd6678*l>k,-]b* =;M|CD mTPJ*)]R^; !327676'&#"2#"&7676USB;/  STB566Rʉl))ee*MWXMmGYXFovw^wv.n'$K.{'D1P"%@B:&Eu1"%KB:"E1"%>B:"E&Muk"Cv@,Tuf"v14P"'@T&Geu14"'T"G14"'zT"G=1u4"'z#Qu"Gz14'8 '$'G1Z"( T"H 1Z"( Ta"H 1"(D{"H1u"(Tu{"H1uf"(c@9zTu9="H#z1:P")j@}rO"Iv?R92"*3<;VK"JB19P"+ @@"K19"+@'K19N"+j>@:N"Kj>nu9"+zqu"Kz199"+ @9"K4u",Vu"LC33@19Z", o@&" \14k".Cv@,@hk"NCv@,14".@h"N14".z@h"N]1"/'`O1k#&/u1"+qj;1"/`t"OCO33@1'+ /' O1k"0Cv"@,@f"Pv1P"0Z@@&P1"0d@{'P127' y\1@&gQ12"1@{'Q12"1@{"QC1|2' u61@{'@ QIaZ"2 9T"R IaX"2 dT2"R IaZ"2 )T"R Ia\"2 .TR"R 1Tk"3CvL@,V>f"Sv-1TP"3w@V>&S1SP"5v@@V"U1S"5V{'`U1S3"NCq2@@n"Oq1S"5UV{"U( XP"6@&V X"6{"VA jcv6@,# Y6f#v"VV W"6 $"V XO"V?"WOP"7g@u /"WgO"7ku "WO"7+> "WB33@)' 7 ' Wk""8Vi>`"Xju""84u>`"Xe""8>`"XIk"Z"8 iv"X ~k"4"8 i>"X iXE"9CL@33Z7"Y#X&9Z`&YvYr&: t\|k'CZYr&: r\|m'vEZY4'j$:'jZYN":>"ZY":`"ZP";@S"[xN";j>S"[jntO"<d?VX"\ak"=C@,f"]L"=~`"]L"=R`"]@"KFu M"Wjo="ZVX"\,K#{wD}rN"A>n#$K{"Dun'Cu$K{'D9"$ K!"D ^n9"$ K"D ^["$ K""D XY"$ K,"D Xnm#Kf#Z"$ KH"D ~nZ"$ K"D xn"$ K)"D nY"$ KK"D wi#K #u1&(T{&H1'(u(T4{'H1EcDL@33(T7"H1y9"( TV"H 19"( T"H 1["( Ta"H 1Y"( Tk"H 1m"Tf"1#t,@o{#S&,X&L_Ia&2T{&RIa'u2T&{' RI9"2 (TM"R Ia9"2 ,T"R I["2 (TO"R IaY"2 $TY"R Iam"Tf"?*kcv@,bYf"vc?*kcC^@,bYf"C?c?*#!sbY{#|c?*Ec@L@33bY7"1c?*"bY"ck"&8i>`&Xk"'pu8i>{' Xfkcv@,qk0f"vrfkcC*@,qk0f"Crf"qpuk0{"r fEcL@33qk07"rf"qk0#rtr' t|<VXk&\Ct"<qVX`#C\t'|<VX'\tEcmL@33<VX7"\Sa&e2Sa&A2Sf'2Sf&w2Sf&w2Sf'2Sm&j2Sm&=2na'9na'^f&df&d: f'duFf'~m'b, m'`lGa&=6Ga&36Gf&6Gf&!6GEf&G6Gbf&J6`a'a'^f&hf&x`uf'df'~!hV:a'8hV:a'8hV:f&s8hV:f&e8hVuf&w8hVf'8hVzm'8hVgm&z8`a'a'^f&hf&m`4f'd`f'~'m'bOm'`gla',:la'$:f'=:Ef'P:^`f'b:Zif'P:lm',:lm'(:`a'a'^af&raf&r`f'd f'~2Vm'bg\m'`mTa&l@Ta&c@Tf&[@Tf&L@Txf&z@Tf'@`a'! a'!p^f&!7f&!@`xf'd!f'~!R`a&7F`a&F`f&#F`f&F`Tf&VF`ff&NF` m&2F`m&Fa'&?f&&f'~&m'`&fa';Jfa'2Jff'6Jff';Jff'zJff'dJfm'@Jfm';Ja'*FSa'*^f&*Wf&*b`f'd*Of'~*em'b*"m'`*ZSf&h2Sf-Gf&L6G f.hV:f'8hVuf/]f':lf0Tf&o@T3fM`f&+F`fNff',JffOSVa&ASVa&ASVf&ASVf&ASVf&ASVf&ASVm&ASVm&AVna'Vna'^Vf' Vf' :V f'DuVFf'Vm' Vm'DV:a'LDV:a'LDV:f'LDV:f'L DVuf'L DVf'L DVzm'L DVgm'L `Va'uVa'r^Vf'@Vf'E`V4f'V`f'Vm''Vm'?fVa'6>fVa'6?fVf'6@fVf'6AfVf'6BfVf'6CfVm'6DfVm'6EVa'9FSVa'G^Vf'JHVf'UI`Vf'BJVf'rKVem'LVm'NMSH&n2S&qm2SVf&ANSVz&A2SVf&A-S7&c2SV7&Anm' xAun1'q;f'c;nf Vn'aVa#77#73/yxg.7SFm' sjDV:f'LRDV:{'L8DVuf'L/hV:7'8DV:7'Lf'c?lf f'cIvBf 1V9'f'f&;Cim' slH'::l'q&:l'C:z>l7'C:l3m'E:1m' xu11'qD;;f'cLqff' f&V'im' s`H&#F`&q F`&F`1Vaa'BVaa'B`7&#F`m&Ftm' xu&t1'qt;&f'c&ffa'#SF',ljSF ^fCfVf'6ZfV`'6JfVf'6Of7'.JfV7'6}f'c!ufgf'c*$afVD'*fva73#7"xy͔gRV!!pRVy!! fyy!! fy@y!! 3y@y!! 3y"__)&BBBP#73 t?X3#uլ@d73# u@1#7 uX!լ@ #73#73 tQ t?? 3#%3#u uլ@@ 73#%3# ut@@ #7!#7t\/t\խ??M; 3!!#!7!HJßK\];%!#!7!!7!3!!!JJI`JJJK`J\\+! 4632#"&qppq||}sq_wb73#,w73#%3#,-w0 73#%3#%3#,,ž-ki3#,i  #/;GK"&54324&#"326"&54324&#"3264&#"326"&5432#|ШzAEFcrHD`t0{ѨzAFEerID`uDFcsID`s{Ч{ЌX kjí]d ij­\dkjí]dò    #/;GS_c"&54324&#"326"&54324&#"326"&54324&#"3264&#"326"&5432# |{ШyAFEdqHCat8|ШzAEFcrHD`t0{ѨzAFEerID`uDFcsID`s{Ч{ЌX kjí]dò kjí]d ij­\dkjí]dò   `3ܷ`u`'`'&`#3Nö`u`'`'' g#'#g0ro#7o!!#Rro#?7r#A]  ^R*"#h##{'n.$#7>323#7>76'&Ҭ Vc _\ Y`_2,  ,K0  v"@  &""D&" 'n"q;.%3#7##7!!7!3#%  fffC4fc;###!i>7}*mՌSkKW! 3+"&54767DkoNMo!}|VT! #;#TkpLOpPTV|}6ck {# %#73#73ot]]*R?'n&  6c#  B"w#!HF1a &$#"56$32lhighh~vvuw' #'%!7!'73%!!G>=R >y>> R>µy)`rrbqr2 737373""##9##`''*&N 73!737373O""""##)##p : 7373737373##n##)##$$>##p  ^"3#3#d,,'_ 3#%3#3#3#-y-,,is %73737373#!7!3!##)##$$>##uuWuuX  felP> 3#3#3#I,,,>aw 3#3#3#3#о,,--? "27676/2#"&7><=<=ir%%r%%VVVVVVV!#3#3#inhhigK !33##7!7J_{{!!bam !!67632#"&'732>&#"$GGdc6n8.56>dcd/a4_ MLKJq ffD/"327676'&&'&#"67632#"&767632P77$%OO77$%)++,sKJ$+88>>>]\w%#uv,,+m45[Z4554Z[54bg KL1LMONuv !#!, =za0+ *:"327>/&'&7> #"'&76767327676'&#"ɧ87 PTS87(H!" ?? 23NN(&XYAB9;K $#LI31 $$KJ21*,+KLV,++]12Hdt::dJ01:7PyAAAAyN98?&%%$A?&%%$<.732767#"&767632#"'&2676'&#"<)++,tJI$(:8>|\];<&"uv,+,On%%OM97%%g KK/MNoouv rh\Z4554Z\44{Rk !!#!5!<_<k_8_8{R3!!{)3_{aR!!!!{))^_\ #&'&6767bv-5[=+A?m~ v3#676'&[?,?Al[b;<-~~~1#6&#"#3>32BhA7FUt>ini/oCmYwYYk\sa88=T*d C{dQTtd2Tud[C,d!C-dAT.daC/dBT0d8T1d{R2d{8R3d{R 4d\if5d ivf6d[9##"32.#"3267!!!!!!DPY_>[=8XMXQ[~ : Gw667756GFDFG kM9+5;73&'3267#"'#7&'#7&'&476$;73&'&#.yE".13 pc&ac!w#,&3xP d^c yrYjL144~*,($- r9(YY34@W} XI FRlzd M2%6767#"476$32.#"3>32.#"JFjc'ade^djQ"OgL23VFw6V,5l ,Y348XGGa^lzkVeX]ɨ:!!!!3###7M5..=Hϔ,#!!73#737#737632.#"!!!@@/?~>7v9%\\m.(*@2>32#>54&#"#6767#&#"#3>3273$ LovtZQyovxw-OzoŦ DhN:y 6Mv|!O)\+>Zdɡ% 2ɡ`bg 7F"&)''#3333#3#####737#733772#$uq!^a``^``qv#$4&{{&&{{{1 ?X32654&#!##!233!632.#"#"'&'#"&5467!#;732654/.54a囥pfbjh87KqRKBM5oPX#'kkEL'[Qy9~u/ϰit^վ>/J((cUc53pa 7!`". @:M46tY`;%y^4jE326&##.+#!232676&/.7>32.#"#"'&]僞.oi(lln&v6V!3ORUWu M7o[??Q{ L6zQT&/b؍$~3YQKP%$((TT@I!*Oe"&)-1'#73'3!73!733#3#####7 !73'!!7S4 M MN3T.n(-.  i/o  /qi.uuguuguuuu %2 #6&#!#)"33!3ߧߧ=MG2^'V*$oNT "`_+.#"!!!!3267#"#73>7#7332_KV?0: 1b\#UW 1 2X ]be^{2f7{V`34${7g1{G1433!!###5oo9%-gZ{ur)rO!7!!77#'?'Z%q CmV%~aMnjMw]MkfMu#0;#7367"76!32!7326&+ 3 #"'3276#"/2wK2u0c:˺+DHjn@csH\_&=5/M6Ax++w.R_^wژznX,sB7#RmNC1 )0!3276%!6=7#73!23#3#!###7%!&'&+vR"IRih2aHiRRS#Sj`68fX#Y%+ YYZ _HyZ.+ZvQZ%:GL66767!7!67676&#"7>323#!!3267#"&767#7-O{b6 =Vq"n^#"l?E6gz${_& J,{ +kv67&&UB{\* {;^~FE/0K?{g!,&'&#2767#&'&776?3g%@DD[[TTd%]YVR0Z1T78₤(['SJMVH+) O0i----iH$"u9Bt"#BuflCz!#'73!8e[qzq͛z7!'3#7\ryqd͛ +/O#74#"&546;7>54&#"7>32#"32673#.#"3267#"&5467>32W \kšTP9{iRBb>9[:#H\27b!7=Z]0mf!Bx>WU<`7mA9Pn :?!6#DpQU;>d:"+'>[jb 8[?Bg& Au>Rr+53&'&'6767!!5&'&76JB.YY.B21IDFF2222FFEJ/2`_:rq;zn #++$ * rn)#5D.#"3267#"&5467>32%3#%"&5467>3232654&#""H]17b!8=Z^/nf!Cw?WV<_8m6,Fo6,EKLpMI?c)":!*'?[jb!8Z@AKä^ChffDielmcfaBF5) #=.#"3267#"&5467>32%3#332673#76#"&546"H]17b!8=Z^/nf!Cw?WV<_8mS\]97YU Xnz:!*'>Zkb!8[?AJ $399y:UsE"r)_@K@#67632#654'&#"##7373!!MXZjD*vu *p_]oe22wKwGW\?3L0O__}}_!2?632327654'&54?#"'&#"632327#"&#"_~dj0zk\@8HHHH/+y{/Ucbvkqppq}dnsZ'PVaK~podykb[OP68/1::b:&3273#"'#67&5477632654#$O4Cx6?D?8DaH i^AnqA٨3bX sf59nNU;uQN]\&EW -2"'&5472764#"!!3!"#!7270 qR/!rT-#7G-#6C|y150_@>І``@>І`4R4Q{k@4k5 "-! ! #"32'32654&#%!2+#pv}%PT YaaYL00ey wXQPXdc;0<67632#"'67327654'&#"#"'&57&54727654zRwv?AmZE%fnT>#Cz>Pvf49*хt+);ƂMkeLPק<+(h|H=y|n=B {u.F/4_NJJY&54'&#"#"'&5327654'&#"3"'&547632763227767654'&#"J$G&Sl\]~\\(*9:A?:::9RI;99:J1\\\\[e*!q:2e_~/g@RZ*>D292eY|p.^|~y|Y"*/( VAO[`*,2,* M=H\T(l;`!!#!!!!!!!3!!RT0G4Y>ey` `fffe  3#######5ܝe1geg/B^^D*<7! 76?!!! 6'x$*{*# 86"Lya#Laָv5(14.nmp-)% 7673 $54$32!"53!25&'&#"hܰ*X0~Y-.hY-Y-uc1LS2?Bdjl,>8?]/c6gUc1LS2tc1LS2c1LS2$`  !!!!#3#'!#!33##BF:p]~%r~~,Fzy`C5DT,yja&0 #673>32#"&'732676&7>76&#"=E_"jgmv&  KFG=_#QahUM@Yr~YW׀c?}<$$/1oX3gQX?@y"{'0udB"t'0udy"{'0-dB"t'0-d"u'0-dK",'0-dy"{'0.d"-'0.dy"{'00d"u'00d"-'00d"/'00dy"{01,1Z&,,l1&,',l,1&,9X9s&9,&9',, J&9',',,\1&,;;&;,&;',,1/M&14'10@L@C&LLK@&L'LKL@&LYZ`Y&YL&Y'LL"e&Y'L'L"Lm@&L[S`[&[L.&['LL7@OT{FTG@{PX  ) !3 !## !/DCQ||CC35445~ji.,w24#3 !#32#32676&#! )$354A$$5^Fnv.CDR{Y.,职~X(1C3 !#732676&+32# ) !#"&7>;7#";# !3<45A%$Au]Gm&CDzzSCC0FnGA$%@543/b!ji~߁ó.,s'H{Z8 5!!ZblIlUZxxy 3'#'Qalљlvx<xi8 '7!5!'7lIlZwxxy #737-Qlәlx76767632&'&'&#"#"'&/#7!+$3/(+?65FCOR@I26-%20'+ 9-N@ROCF58!F0O<:" %7lgllxaxxaxz ''#'5'-bl>lҙl=lavxxxbxi8 '7#'7!5!'73'7llgl=laUwxxxxwz757377llӘllxbxxxvZ85! !Zbl>llalUZxaxxaxi8 '7!' 7!'7lall>laUwxx>>xxwZ8 !5!3#Plbl-xZxYz %'3'!!5laQal7xvx檪i8 #3!'7'7lal-\xwZwxz !5!!7#7lQl+xvxz7!!5!7'3'Ql[ZllaQalxvxxvxZ%52#!5! 767>54&'&'&8/-*'(&)#4,lblܪ-)o=3276767654'&'&'&"5476767632+#5!5u 0 '+,/8;,4#)'*-/8ulbl  =69)-(.46=<69)-xZxj>54'&'&'&"3)'7'7!#5#"'&'&'&5476767632 1  .lalҘu7/-+&(#5,:8/-*'ׂ  xwZwx-)96<=64.(-)96=Z8X#532267676767632267676;'7'7#""'&'&'&'&'&""'&'&'&_ lbl +!  "#(+!#  ##( lal $#Q"$   $"Q#$ -xZx$ -#%"&* 'xwZwx ""&*  *&"" ZF%'!5!!'7'7!dlblxye@lal:5xZxo:xwZwx  7'7jUXgP}Xxb7 #!5DlbloxZx !'7'7!#UlblDxwZwx7 !5!3lblDxZx 3!'7'7lblDxwZwxy 7#7!5;lQl =xwxZ !5!3lblʙ-xZx,(X&7#7547676762#4&'&'&"lQl))SQcabcQR));;6NBFJ9:xvx2pk_V1..1V_kp]B;'!!#?@SQ]GX&54'&'&'&"#476767627#7 9:JFCM6;<))SQcabcQR))lQl2]QS@?#!!';B]pk_V1..1V_kp2xvx4 5!7!!#W9lrcc?x^dc 5!'73#'7!#3!elclVlblxxNPxxXxx}p62767>54'&/#7!!#"'&'&'&54767>;<6MCFJ9<;<9Q+))+QKi\xsaeOQ+)))S+BQQ]ZB;'!!#?BZ]QQB#,@#Zpp|pqYS4..0WYqp|pk_Mp67#"'&'&'&5476?!5!#2767>54'&^^24]xZx]4]xwZwx]Jiiiii8!7'!7!5!7!'7'7!'7!5w)__Dm!jtASlalSivBiixK]xwZwx]KxZ8!!5!!h75TlblT^x]xZx]xiz#'3'#'lSlaQblTl^P8^xvx^hi87'!5!'7'7!5__SlalS5iix]xwZwx]xz737#73_^lTlQlSl%hh^xvx^8Z8!7'!!5!'7'h8__^*TlblT`Slaliii]xZx]]xwZwxz7''3'7#7^__TlbQalSSlQlliii{]xwx]\]xwxj #7!##LQ9vLvU,?UP5#'#5!#5'wMv9QLvU?ԄU4 753!5373wL9 vQMqPU?U4j33!'3LQv 9LqPU?,UZ8!!!!5!!@_|lblwxxxZxxi8!5!'!5!7'!5!`|xlalFxxxwZwxxZ8#''''#53777$?cYlbl}?c-FnxZxFni8577773'7'7#'''ic?}lalYc?-nFxwZwxnFy3'!!!!#!5!5!5!'Qal    lvxTrxy#7!5!5!5!3!!!!7+Ql    lxrTxZ8 5!!53353ZblLlUZxxay 3'#'3#3#Qblҙl?vxrxVi8  '7!5!'7%3#'#5lLla:Uwxxw(y 737533lәluxrxv4`9 !#3Vlclתx~\xi9 !'73#'7!ilclVxvvx1~ 5!! !!\Z7\}*;  33 #!vYp  d @~ !!!!?\\ ; ###3!3vv77e n ; !# #3 3!#3YZvvMYM$| \d; )3# #3#!5#3 3[vv\Pdx   %#!5#3'!3!3! !33'[ZZiZdd\nt;%#!3!3# #3!5#3}hi\Px;%3 3!## ##3 37~vvMYa}|sd d| ; %#!5#3 3!3## ##33 37[vv}|s` \h i~ 7!! !5#35!i9l7Z f:bȃ  m!#7!!#Y9lc?x^m35!3!5!73nY9 )lcr+a?^xJ; 3 3#'3 3# #~vvv77e   dCi8)5A '7!"'&'&'&'#5367676762!'7$"!&'&'!27676l -,:74=)-  -,:74<*- 54&#"#"&54632#"&54324&#"32 AA2! +[ƒ[u NGbMHbmWKt,>bFأ[t}t{ !!!!!!TbժF53!#7#53#53!5!73!!73#:jzFv0Y+^^`u(673#"'&'#7&'&$32 '&#" 32$767&'&P`s^>Zæ2,q^9*Y< JHH!Q#)JJJ4;nSz_'BTc_ N@DROg !3!h$ %?%! !hx<?!!"$54$3!!!59C}|s@s|}C:vsJxNL``ȟMOx]&/!!!!3!!"''&'&54$;7#\BŦ !s:9ZV('@-9C}4|}C:7ʟ 7c``JxN MOx]hg% $54$)!!3!  r^F!@gO:0Q&'&'&'!5!2#!5!676767!59C~{s?s{}D:'JxNLȟMOx]&/'7!5!!5!&#!5!2+&'&'&'3676767C; !s:9ZW('9C~5{}D:7ʟ 7c;JxN HMOx]hg )5%2767!5&'&!5Q  r^F"?hrgP:1R!!yw!#!#ZV}w!#!#ZVwJ}w !! !!5 2l\a3!-F!!~תF !#!5!3!!5!P  s}תF !!#!5!3#P 53#tb% #ԙ,%m%73% %#'lMLLM#G_rtHF3#žF6} 3##'%g;q}`s-Pb;6(3#"&'532654&+532654&#"5>32%3##'%?S[3p?.l3"3,xM[skPIyAG?T{yUA=W&xB,x<XXjewߦ~XZ; /32654&#".#"326#"&54632>32#"&8,xL[sjPJx,xM[skPIy?T{yUA=WyyT/XZie7XXjeߦ~᧯w I%!3! r~, I%!3! `~,%&'&'3!!#4'!&'7#C:N=xeJT&6~Hʋs^(Rs57756uF 7&'7%%'6 676M}?@^Txl/4RW!L!$Ҿ &!L {J+3#+[J?+ 37#'H֐EVo)gnJ+3#3# +[J?+3737##'RHTEE+qd @oxpAnX33# EE^TX3 3#T^X32#4&#"#ݜP(*7X332653#"휅RP7**%26732#"&'.#" #"&54632_  HZ92&2 ` G[>6+ l9TA6?&#Hn!bSA8?S*'FF*q'F'FFiLX-6?676&'&'&'&'77&'&5476767654'&'KGBEA14? Y@"'7'AC!GCD4K|oUFCD41IosV/HgjG$4.JhgH$iLFMQZc676&'&!676&'&'&'&'77!'&'&'77&'&54767!!67654'&KGBEA14? WKGBF@14? Y@"GCD47GCD4K|oUFCD4$åFCD40IosV!.JhgH$+/HgjG$iL4mqu~676&'&!676&'&!676&'&'&'&'77!'&'&'77!'&'&'77&'&54767!)!67654'&KGBEA14? WKGBF@14? X KGCE@14? Y7'7'&'&'77&'&54767676&'&77'AC!U32326E^Xc  TPY_Wc UM2NE;=LTNE;=KF23276767632.#"#"&']NT  cX^XOU cW_2UK=;ENTL=;ENFl&#"5>323267#"''ZM]^XVmS LTNE+~F KUNE,FF #"/&'&#"5>32326!!E^Wc TPY_Wc UM~oNE;=LTNE;=K`F#"/&'&#"5>32326!!E^Wc TPY_Wc UM~OE;=LSNE; =KkaF$%767#"'!!'7#5!7&#"5>32U{ ^W|bpPPY_Wc o"DX"OEd8LSNE;IF"#"/&'&#"5>32326!!!!E^Wc TPY_Wc UM~~OE;=LSNE;?Kk˪F.#"/&'&#"5>32326#5!7!5!73!!!'E^Wc TPY_Wc UMm~dwDdOE;=LSNE;?KL˪s˪sFC33267#"'!!!!'7#5!7!5!7/&'&#"5>327 M]^W#'Rb^72blj  TPY_Wc y"KUOE˪Nt˪=LSNE; NF;#"'&'&'&#"5>32326#"'&'&'&#"5>32326E^Xc  TPY_Wc UM]^Xc  TPY_WcUMoNE;=LTNE;=KڲOE;=LSNE;=KF43267#"'3267#"/'&#"5>327&#"5>23'M]^X9EBQM]^Xvp|3'PY_W:EAQPY_a KUOE8KUNE; @^ LTNE8LSNE;f@F59#"/&'&#"5>32326#"/&'&#"5>32326!!E^Wc TPY_Wc UM]^We TPY_Wc .M~LOE;=LSNE;?KҲOE;=LSNE;?KyF5P#"/&'&#"5>32326#"/&'&#"5>32326#"/&'&#"5>32326E^Wc TPY_Wc UM]^Wc TPY_Wc UM]^We TPY_Wc .MײOE;=LSNE;?KҲOE;=LSNE;?KҲOE;=LSNE;?KF"32?632.#"#"&'!5!5]NTcX^XOUcW_~~UK?;ENSL=;EOȪF+  %5 % $%5$C 68DӦ6F9%676767!#"'&'&'#5!!536767623!&'&'&<)2r 1MPQM1 s2)==)2 1MQPM1 2),CE[<0[2332[39\DD+N+DD\93[2332[0<[EC,`F !536767623!&'&'&!!=)2 1MQPM1 2)~++DD\93[2332[0<[EC,`F& 4F& '44F'4& 4D'4& 46z' 4'446{'4'4 `F 365&'!!5!&547!5!!/./.~R~X0IG00GG2?8>;_8`F  "264&'2#"&546!!!!AZZZ[A5`$%&mo(~~bFE``bq+((d:svv`FK 2&#56!!!!~~KW`F 3# !!!!鏫c~~c'@`F 33#!!!!ʖ~~'c@`F !!'!!!! TU UTE~~䰰`F !3!!!!!,d~~ NfQ`F(/?GKO#"3###535463!3267#"&546324&#"'53#5#"&4632264&"!!!!9 bb<998=B<"@ C#We`RIU<6,2<<<:(BRRB(:6_66_~~7%$3`3D= DH>p`ctiF6A?9i=$#tu#gSSSP`F"&*>32#4&#"#4&#"#3>32!!!!T8MRP23>IP24=HQQM55J~~=:xoHOM]QHPL^P%U20=˨`F$(,3#7#546?>54&#"5>32!!!![[XV();0$P,*W.Se!((~~aN2A+,/-7#!^aO&E++ 'F!!!!!'7!5!7!qt;Gp;fըfӪFL !!!!!!~~~תF4!5!7!!!!!!'7!5!7!5!9sIfcs8tJ[dAT˪˪T˪F  !!!!!!!!~~~~KF 5 !!E`~~~poF 55 !5~a!~ǪVF 3!! 5 !!~`~~~poVF !!555 !5F~~`"~kǪF!5!7!5!7!!!!' 5V{|$.RV}||{`~ss1stFpoF!5!7!5!7!!!!'55V{|$.RV}||~`ss1stF. 5 56L6pr pr . 5555636'!67&'&54767&'676'&'<&P/CC/P&%P/CC/P%;::;GF㞢GGGG➣FG2;;;<<;2;F56?&%5767$'[汅yZy氆])]o& bR)`q% RFd%'%5% @zB̛{br˶@6 o@hGpF%5'75%7-Fz5zb_%˶C@ʴ@hGp/FV !5!%5%%%!!'7ljAg\J}EOlUrC@=Vlь=/FV7'#5!75%7%5!!'6M'NR?wsbFL>ߪwe=ت=F$%#"'&'&'&#"5>32326 5F_Wc UOX^Xc  TN\`~ND:3232655F_Wc UOX^Xc  TN~aNF<>LTNF<>L>)FP14%&#"5>32%5%%%3267#"'&'&/' - OX^X"'`i?g`  TN]_Wc HQ-LTND9ATj͊LTNF<= &TN#wf=J;NF} 55 5~``~'poNF} 5 55=`~~`'pomF`!-%5%%%'5%%5 ,W|Q>^z:Q>9:b _TW&o}䎲w&-r~bUmF`!7/%5%%'%5%75%z)lXZ!(CWYw"D2,/*/&O{¸[&}FP %5$E'jgaa^~||FP 55%$gj'a||^a)FW!%5%5$ETY)Y]]x|)FW3%55%$Y)YTBW|]]RFW(%#"'&'&'&#"5>32326%5$E^Xc  TPY_Wc UM]TY)YNE;=LTNE;=K$]]x|RFW(%#"'&'&'&#"5>32326%5$E^Xc  TPY_Wc UMYTY)NE;=LTNE;=K$]]x|F&%5$%67%'%vi}vGqjU)?eKtuu" K 9'F'567$'567&'ejvi~WupjRU)?Kuu,ަK9'R_%!"'&54763!!"3!Q|}}|{VVzƍ^`R_75!27654&#!5!2#zWU{|}}|`^ȋ;R #";3!!!!#"54763E{VVz+ffI)dd}|^`&pphƍ3R 32654'&+ #!5!!5!32#{UWz*ffsSee}|9^`phƍF7!!!"'&54763!!"3!kk|}}|{VVz햖,ƍ^`^7!!5!27654&#!5!2#lzWU{|}}|,`^ȋF '!";!!!!'7#5!7&'&54763!7!!o{VVz#=7XyE28u}}|OXyDR^`5ƍ7^ '327654'&/!5!7+!!'7!5!7!5!zWUU;NTXyLfN}}|82XyEI8`^`C 7 Xȋ5jF )5!7!!'!"'&54763!!"3!}]fl(el|}}|{VVz햖Z54&'&'$2"&'&'&547676!!#!5!dTSDEEEEDSTTSDFDDFDSXY,,,,YXXZ,,,,ZX@A''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcbeea$7!!"2767>54&'&'$2"&'&'&547676wTSDEEEEDSTTSDFDDFDSXY,,,,YXXZ,,,,ZXתa''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcba$3?"2767>54&'&'$2"&'&'&547676''7'77dTSDEEEEDSTTSDFDDFDSXY,,,,YXXZ,,,,ZXlml''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcbxyxa$7 "2767>54&'&'$2"&'&'&5476762lCTSDEEEEDSTTSDFDDFDSXY,,,,YXXZ,,,,ZXpx''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcba$37"2767>54&'&'$2"&'&'&5476763#dTSDEEEEDSTTSDFDDFDSXY,,,,YXXZ,,,,ZX''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcbAa$3?N"2767>54&'&'$2"&'&'&547676"32654&'2#"&546dTSDEEEEDSTTSDFDDFDSXY,,,,YXXZ,,,,ZXRHccHHcdG:j')*yy''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcboPOmmOOp1.-rBa$+E %#'-73%"2767>54&'&'$2"&'&'&547676r#/\/#/\TSDEEEEDSTTSDFDDFDSXY,,,,YXXZ,,,,ZX1XSXYS''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcba$!;!!!!"2767>54&'&'$2"&'&'&547676@@TSDEEEEDSTTSDFDDFDSXY,,,,YXXZ,,,,ZXj''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcba$37"2767>54&'&'$2"&'&'&547676!!dTSDEEEEDSTTSDFDDFDSXY,,,,YXXZ,,,,ZX2A''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcba$!%!!!!#!5!/H@AYeea$ !!!%!!wHHת\a$   ' 7 %!%!!GmlFlFFHxjyjjyk$a$ !%!!3#/H33!!rgup!#!!rgup3!5!sL%3!!5sL#33!!rup# !#3!!!!rr$ !#3!!!!rrgg$ !3!!!#3rZrrup !#33!!!#3rr srrfup!#3#3!!!!rr?rrZZf$33!!!'!r2g,hFu5Y6p!!!!'!#3!7!1g_wThrr8_56$$!!'!#3!#3ghcgrruLrr5Y6pu!#3!!!!!'##37!Orrg_hrrm_s$-56$F 5~ F \ bb:Fd 5! 5~bFd 5! bbb:mf%/2#"'&'!#"&54632!676"264&40*)%%lnI-.Kmml4/+(%k/K4GGhGH,)fPNq^D^pB %  !p*)NNP^DpB 5  5!*)KbNPpB5 5K*>]PpB 5 p*)K>P`F32?632.#"#"&'!5]NTcX^XOUcW_~UK= ;ENSL=;EOȪ^F 5 3#E_~达ѦZ^F 55%3#~//m.   5 5 5 6L6L6pr pr pr .  55555563636.F  5 !5! 5a~~`~Npo.F  5 !5! 5Ea~~~`~NpoF %5 5!E~op9F 7 5 !5!a~~)FW5$%5$Ep)YT_|x]])FW5$%$5pYTY)B!]]|F!&!%'&'57&%5$%67&%7EYv9uu^9p+fkU%KA6#(AF+3273267#"'' 5Y=OX^XTlc^[=N]_WWma`~LTND*F JVND+FpoF"%&#"5>3273267#"''55Y=OX^XTlc^[=N]_WWma~`LTND*F JVND+FͰFW&&#"5>3273267#"''%5$ZM]^XVmbTY)Y. LTNE+F KUNE,F]]x|MW&&#"5>3273267#"''%5$Y=OY_WUlc_[>N\^XVma~YTY)3 LTNE+F KUNE,F]]x|F 7%'%5'jvƎ}< @Y8@\9@aF '7%u Ŏ }@?Y@<9@}F5!%57%!!'7QVtx;jR ?:qߦ[@Z8@_}B7!!'7#537%7%aҎvkSTs'`L8@ǹ@7!#3|s?s~'Jȟ]hg )5!2767!#3!&'&#%5Q  r`Fb!@grg Q:欑0P !5!&'&'&'!5!2#!5!676767!5o/^9C~{s?s{}D:2UJxNLȟMOx]h}!5! )5%2767!5&'&!5E~   r^F"?hrP:1R 5!!5!!5!&A> 3 %!  `$`yZ ! ' 5!5!ZŌ  B !##>~٥m ##7'33?"m!733'F^!#E^k?$%%$~Z[|||ӥ,~ U1;FOY!!"&546;#"&5462!54632+32#"&=54&#"3#"32653264&"2654&# ꦦrr uvssvupX>=XX>>XX>=X>XX|XX|XX>v(D(غPEaabbDEbbDbaaE DbbEDbF^!3!E~?k6732#"'&'.#" HZ92& a l9TA6?%Hn%7( #"&5463232676 HZ92& a (Vl9DTA6?%Hkn  !!!!%!!Xdo̔4+l  #/;GS_kw+7CO[gs!2#!"543!254#!"+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;22+"=4#"=43+"=4;2+"=4;2"=43!2#3DŽCAAC!B""B!!D D!)!C!!C!r!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!"B!!B""B!!B"f!""! !C!!C!!C!!C!"B!!B""B!!B""B!!B""B""B"!B""B!!B""B! !C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!B""B!!B""B!"B""B"!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!"B""B""B""B""B""B"!~!!~!!!!& !!!C!!C!!D D!H""!!JJJI%%I&%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%% %I%HJ%%J%%J%%J%%J%%J%3#c^pp+ #3*c^p.l !!#!#7!B]XtXtXt #53Nr0kTN*3#*- #5Nr-Tk0 35#Ls0kTK*#3*- 35Ls-Tk0#!!N]SN*3#*,!!N,!5!LR]UK*3#L*,3!5!L,_ #476;#"cs[=3יfV,#'&/532763R6$[dC77Hd[$!<  _AE_  <_> ;#"'&53=[sc>ܚVf_>#3J 4'&+532`4=[rd$Vf_,&'&3;#766$ZcH77CcZ$!< _EA_ <> 3+532765`dr[=4>יfV7(3('! !!&$<>32#"&'#'%73%&  oEo]n" *" GnGmdaad]chaam@j0.2!3!3]Xvuv^ &! 4$32! 4$#"35733!llLLggٜ٣VA?rpG~+/ 8! 4$32! 4$#"!!5>7>54&#"5>32llLLggٜ٣J7+VF5wgW6+8A?rpGM"?U(?N&:$}:iF D! 4$32! 4$#"#"&'532654&+532654&#"5>32llLLggٜ٣Y j°9{ORp>ig`Y~PPSR/m`U{7]A?rpG]0OLGN<:BB 4@! 4$32! 4$#"532676#"&54632#"&2654&#"llLLggٜ٣hLW*kr tGҴ0`GRRGFSSA?rpG$O <b[[bb[[b &2>! 4$32! 4$#"35733!"32654&'2#"&546llLLggٜ٣ik:>>:9>>9uzzuv{{A?rpG>>'*6ޗ{( ;!! !!!!#!#(!((!(0(!B({(!((!((! (Y(!k((3(( C ( #'+/3!33!33!33!33!33!30stststmnmnm(%8K#!1!!!!!!!#!1!!!!!!!#!1!!!!!!!#!1!!!!!!llll޶llll޵kkkkߵkkkk(((((!%)-13#3#3!3!##!#3#3#3#3#3#3#!"޵׶׶m#( 8#( F! M( M(& M& N O(& N O(& M& O T(& N& O T( M(& M T(& M& N T'%! '%!!!Ng>9%-d) 327$%&#"%632#"'++Օl``````qq|qqf' '/7?G%&'&'6767&'&'7%'676727"'64'7&"'62&479'5)3,?4C0x2)/-Z5>3@'5)2+@3C03)5'Z,G4?DD#VVcDD#VV c<1& j(0=Ju &,A=N:0('<1& j(0=Ju &1<>EB0(n_II'[[JnII'[[d) %/36%632#"'327&#"6767&'&6e`` :;;:{m('((((';99̙Rqq|qq%%mܱ[0$ %@%|"d) )73276'&#"7632#"'327$%&#"%632#"'Vg4343gg3434՞OOOOOOOOH++Օl``B!!BB!!oe33eje33````qq|qqd $  $eGyFAk^d $  $27$%&#eGyF+ՕAk^a``d $  $"3eGyF+Ak^``d $  $327$eGyFS++Ak^>``d $  $%&#"eGyFYՕAk^>``d $  $"327$!eGyF++Ak^```d $  $"!eGyFVAk^`d$)6%63"'e`Rqqg)#2f|q*q ( 2654&#"!Κ⚚ord}}|v<U( 327$%&#"327$%&#"!(++Օl``````}|qqqqH(U( !#%&#")%632T++qq>~``U 3327$3!#"'$``Ֆ>qq``) %63"`qv`) 2#%&#`iՕ)q>` 527$3+iv`>q "'$33įj+q`)%632#%&#"``iԕqq>``3327$3#"'$j+,i``>qq% % %! %!$+! 2654&#"4632"&J|{{Y[|6qpddcc||}'%!%!!@Z r<'%!%!!X r<'%!%! r<'%!%!N r<'% !%!!!!t&t% r<<% 4632"&! ?N97MMqM`KAj>VV>>VVJ %! &A %! %A d(  7& 6  'hi./*X֖'% !!!!!!tg%ۊ<)) Ie'% !!!!%!!&Ng%M)*<?v^]"3263#!5276;'4?'4?26vi#1z]H3y)/ #&<+*lV#m14He '1l1 Z+dZ?33 #&'&+"'&#"/573;2?"#'57#&'#"#5676!504& 3(d{_R!' 8 2M <=Y4}V .e3B=Se` e9*=9 3@=}k !=] 9eAmu} 5a73&'37&'67&'67&'67'32654'&'7654&#"3672#"$54767&'&547'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'4327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&54327'4327632#"/#"57#"54?'&54327'&327632#"/#"57#"54?'&5432&'67&'67&'67'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432Gsq%&&#%'$:"#!pޞp[}9*;qTR}<(2w,JDdNSjDD% $+*$ $ ),  ! ! (&    %& ! ! '%     %& \! " '% !   %& 7SdR!%"#!"%=    &%     &' |" ! '%   ! &&*EC*Z*,)-)-*,%&%&fБfU 5HhfeefhH2pu^ttQFs棥sKQttGh!99!  !77!  4 4 22 K44 22 22  11                 7        %&%&%'%&%'%&22  //  g               44 22 u !2CTev+&'&54?6?6/&2#"/54762#"/54762#"/54762#"/54762#"'=4762#"/54762#"/547672#"/54762#"/54762#"/547672#"/5476%2#"/547672#"/5476 I7-Vo/"*6% \8^ :x.[>  !    !  |             b     !      !             aG<s-8PZy9} KW2{0R^j ,: . 4 . = ,  ,   -  -  -  -   .  .   ,   -  w !! xLJK9`8w !! 7 ! !xLJK=~PZgKI9`8N I 7%7&5476R3N"e;Q 6$ 8'^4? !2 7%7&547!&'6:P!`$/A?S"="l-2DC[9 )! 4$32324$#"#"&54>32vvDDbcܙݢbFEc-Q**R,K7iwBNmmN1Z00Zp G"32654&!"32654&%#"&54767654$#"#"&54767&54! C]]CA^]iA^^AC]]RutQIdmmqNQusRn!$gJIggIJggJIhhIJgU\\Q srW\\^p G4&#"326%4&#"326! 547&'&5463232$54'&'&54632|^AC]]CB]]CA^^AC]mmnRsuQNqm..mdIQtuRhIhhIJggJJggJIgg ][[Xrq Q\\pe "32654&7#"5432EWK_ȐɎ;12Yp 7"32654&"32654&#"54327&5432#"'&'lllmml#褣楦s奦祣t کxxxxZxxxx;TdIU ~z)5AMYeq}3'%&76'!'47653!76=332654&#"#"&54632'#"&54632#"&54632&'&676&'&676'.7>'.7>6&'&6%6&'&6>'.>'.x"gO$hJ Ki$Pf#؂ԕҘ4vUTvvTUv ) )Y ( )>&%/$%&%/$'F ) )Y( ) OyyO vKK9__9KKݧꧦ]]_""""s!!""D. - . - a)**))*)) / . - .)5AMYeq}5#!4'&'5#2#"&546"32654&'"32654&"32654&7>'.7>'.676&'&676&'&7>'.%7>'.676&'&676&'&53!76=3%'676%327'%&76'77&'$%'#7%6'&7, 3ϔϔSttSRttJ ( )7 ( (/$$ %%$$&%k) ( X( ( Myhy?k>Ys>   =rY>k?LY77%SB T+1SBS%77YK@@1AeA1@@H磤椣筁\\\\     % - -- ,1)))(9)())u- , - - G77W6 W77Gl^ ee ^l(q,&$pp$&,q( !!'!cc8h "!!'!##+572367676!dczD%8i [A.8YW8hA:F;/Itx !!'!  ##' !dc^rnVoRQn8hi[ef[l[J@36273 ##'5 MON@ US VZCv#,5>~3+&=43+&=4%3+&=43+&=43+&=43+&=43+&=4%33 #&'&+"'&#"/573;2?"#'57#&'#"#5676!5S4S3S4S5T5 T4RS44& 3(d{_R!' 8 2M <=Y4 #8d#7$6$8;$7i$7 #9pPL  )Z. ;6ZV Z3%Y63 .87p  />Eqw!674#!!6?676'&#'323276767654#3#&'&'&6%67!672!&=75$/563&43!32+'!67#>54&53 8 A4N,315>(I-4"a1lxXzbf=NS!\q&,L01Ne0<  9 H3 ;;Q4XmM;YV /M(=H: ,qLUD)8Wqke-Pm{NW =$ U  /0c)H?2@[nDF8T$.L !' !ANKOUDu@wL5_K !'7?KNQ>wDB&547632632%6#"'&'# #"'&'&6&'&547676CO""ONP4S2 R$|m ?wE 39 _D%V$F^ 92 Ev? m|4hok@mmr*%te2' BB90tU%) "ft(f" )%Ut09CB '29>3#"'43727&'#"$4727%6725676&5&dB1)X6E v=y(;. eP 0 %SZ7AFF4ysW$,J ]T.MMm@ed: ,'Z M'cM&T)2_M2%!"&54676737#&'&54>;7#"&546767!7!"&54>3!6763!2'71z*-=80O&8-&Q&7>+2  ,2 =,2  =,3>,2463!2!2#!!+32#3#!8%Q'-7'P17=-,y07&#,>3,=  2,= 2,  2+>!C%4&#!"!&3!!"3!#";#"3&'6737#&'6737!"'67!7!&'63!67!2nA+1*KK KKKK8JJSSCTTTTDPSS;Q%8C%39KILKIOKHLKIhghghghgE?-!D72654'6#"'4#"'54#"'54#"'675674767#%!/5BBDEAGCAECB^\ ]]_\]]=8(sJ1 b6'SS cRR SS?SS\\K\\;\\]]!A*>K!C%254+'3254+'!254#!'!254!&#!"463!!2!!#!3#3aKK9JJJJ KK*0,C$D8&Q:TTPESSSSCSSIKLHKOIKLIK93%N-?Eghghghgi!C32=732=7325732'654&#'%2&'&5&'5&'BCEACGAEDBB5/!:(8=]]\_]] \^SS=SS SSb SS'6a!0J)K>*B \\]]:]]J]]pO!%)-15 3656;2#'7+"/#"'+"5&54775%"'5476;25'7&567635&56;374765'75'76=4'&+ '"'4!#"'&36365&5&#%#754'&5&&547'5367&7+&'&'735&2?"5%75537'7'3533553535'32767&5%2?&#%55'575775775J5[( 9?8P7?VE:.>DA.( 3DPDa>@#+6x `]>  >[Pr @se"^L3 4UF "V;=\?/ /*U9[' ."n?$-)&!Dh2 ) ` ?hhE-g> ?. 8Ve lTErf^5.>=9|5"-l)d ,&>vv]cccWpC-+ d8 Bpp>W]oaxvuPp82,D ^8, ^B$K+ "1R[+e*;GW QU I&? gpo% w ^SA$ 2 9i-5n02D|&IY^Pw^%\??\OWC ,,1 /211/=;7777=321811{908hN%b\Dh,)h?17I21!122223 21&2%2#"'&=477654'#"'5473Ձe/o WF^a}/ X 3 X ؍MOb>YaYƮ58l7P P@ $0<FX + &=6&# 3 6=%&#"';27!5%67%!&'&'2+"'&=476.Yf㮿Y0薖q3P+2-)VEV'quI3=%)H3A#S]ٱZYHYoX(I_ ;.2lOP%.G6R%&I8Z 8Pi>'67&&&'6.7#"'&'#"'676'773.#'6'5676&&5476'&'7&&=F! wM>7TBWR?^m &ab)-R7kSWos4K9>>4::T8S-\_l eu?>L=#mg'.2[E :jx(Nr%&&&+F 7!N &".\S$XE/KC\a*0/'rSCٟ C (RKpF|bphc'R"J$Zw1F[q7&&'7'6&'6#&7'&#"'5&567#&''5&'67'6'4'5$'67'656&'67&'6'&'''5$7676'&&'6'63&7"7&'7&'7&'7&'6'6%676767&77&77&''5&"'6%35&'.54>321167#&7 m *VBRa&G ?V M]; :)(6hCs/Ni,H HCfE_ 7^eAB4CCC <1bSBV* 9d i'Wh"&VqH,7u07#]69-/6,X(hR(&"hZ,HK80C:7%_6/-C  "H1 $ &b5 4CUE '(!`9 !,(MTE + }r}A" 7,)f[4f AD <@0&9c?"V+GoMK~aG g9s &0@k"?c*GEKX Gjt9hN&\6 '''' 6\%$&'6&'67327&#!65#&3 mmgrk zYYޱqZre[c7 7 c ,35'533#3!'#'5!5!5#5335#5##3qqlzyymj@@@<<3ffX苜qXGccG J!32654&#!2+73 ### 3׼irriPוؐB(T33#!!#'!'57!5#'5735q~q+!#!573#'5!3!'573!#'73!#'5u__vhhwѡIjj8/w,32#' 37+ &5%6323'#57'53@ǽ˼U4{|I0w_?8:<ؒ6ʞG2k >Y3~||~Obs32732753"'#"'4323$4'5;+"'#"'53275'&'&5?5572'#&'&57634%476=%9*"'<>((I- cE*HiAt>=2{6mNPp ZiU;xT"m ;wuP1RK00D(;,,e"@  p$B(!cc*@rJ&*EcJkg Fp/ԶQRmT_g2#27654'73&#"#'&'#"56='"'46'4#"4735#5&547/63654'%65432#"&546324&#"326%! ! : 7"&66&$55%%44%%5wvϚ{ɬ)::)*<<**<<*):<'L67I" A# A A " A# A B " A# B A " A# B B " B# A A " B# A B " B# B A " B# B B y <BHNTZ`fl3264'&#"&7367'67675673#''5&'&'7&'677&'67'%7&'&'%6767%&',*<&`7" bK*V&"g{ M M !)1! ! 3254#"&#%#7&'67&'67wv:<F>4,<[-ch`ch_7IL6a] ]pu otpu ot !)1! ! 3254#"3$3&'67&'67wv:<F>:]ch`ch_7IL6a] Uypu otpu ot %! ! #$''&'6%&'6wvcGkvJVVr~w{t~w}7IL0c Z    "*2:AIX3#''%#&'52#"'&5476!!'5%!!'53'5%3'5%3#'32765'&#"FF47H8(S A+[!?27@yf756FF u>p,y9#_>?@7`d@\hPPPPy?+<>w_VG{?,rCA+ +"'5676%&'547327676=&#%c_,*Iq{S$'NJǒxbO P >nS]] =f+! &56;2'5$%75#"3Q_d,)Hq-zT$d/'NK7ycOpO >S\^ f01@7#'#53'&'&54767&'&=33676=3#32654'&$ xwatbww!$$!wRMi"iLRx "iMRurRLV$|ddb e|$% ZSSZ %_TYYT $4&#"326&54327##53&ёϔ1./|䤣L~~|  $"32654&'#533'#"5476ϔ|Ҙ{פ㤤ף |~~L #&$76+"'&5'476%7!iiggi$jg ՕeE~Z5s qttrtt<֤ꧦg\ul91B52654&#"#43233#!5nom覨b͈wyyy{(|#53533#632#4654&#"#``d~~dc}mZyH{zF 4"32654&7#"&54767!!53#5!!3!!#3!!92GG22GF7+Db`E*8쌌O79NN97Os0LllllL1KӘJJ-<%#5#535&'&'5'73'3#'73'676=35'73'33n^F][E_nzTThOʍ7NjYYӖy! #!!!'!27674'&#pZ51;J&u@!IM_\ǃ$P<S  !#"#&5463 67!2#6#"t3`ySOuwNTx`3uX1((1E 1"32654&'67>3"#"54767&'&#529vEMWov*&%+tm@ME\ϓΓϖ=Bll)'ҕ*l8lB=&'5 %$ 56?6'ݗ85Tș4ZZ//[[5 @o +?"32654&,'5'&546322654&#" &$#"&547>fVvvVTxw v]BUxxUTyxH v^A____(+|T!%lϓgML____x)+{T!&lϔgMMs =>'.463227#"&5454&#"&'&5476766&RD:DC:Oɢy@Z:rdYwr)! ".hi+.iwsSJKAKL@ݰ |XHwyo†<>bQs-.cx68<32>32#&'567''#&&#4'3>64&"d9k$D7J+v=6Z*Bo,4x9 %j }*ƀwϧ}wh^)etWW<aAktAO]Rk9$!!!5!&5432!!5#67654&#"@ ><覧=]NnnMhh UyzzyU ><84353'5#"'&''#&&#4'3>32>32]PPP=(,4x9 %j >9k$D7Jo}vvxJv<aAktAO]ƀwϧ!5!3##'!5! ` @i8080k<'/27632#"'#576&#"4'5267>327&'"`Ibmn(q|n^,:4!~w$))%n4TuݾgvxaX[&ŝ9!C3276327632#"'&#"'&#'3276327632#"'&#"'&#'%g) ,N210&%pbUWM230N22+0$h( ,N120'$qbUWN13/M31+0(GG$3LKGHb 'HH#2MLGHa S!5!37!!'  _76`S@ʬAR!%Ue67&'&#"!3!67>54.#"!&'.54>325467675#53533#63232>54.#" .BFFKIC54CIKGFB/l &">ac^HD  aa_aa !EG]db=#% )(()+)QPQ((QPQ)+/ 6klj$?6FWWF6?$jlk6 }++--HNRh~&'4>32"'4>32&'4>32&54>32&54>32#!5!'!567>54.#"32767>54.#"327732>54.#"327>54.#"732>54.#",V 014.K0/*'<00<")11 NR'00 YԣLE z  hV!  Z+"  ^  _33@]22-"40446/*33UJ"+33^1/K=0T* ####  #$$##$$#  B #### *"$$" 2A!'-23353#3!53573#'5#5335!75!!5'57!hSShgTTgUVJ+IAC֛E77__vtt4!7CRb&54767&'&'5676767&'&54>32!535#5##3654.#"!32>54.#" 6!%%'F(F&%F)F'&&!4 j6)E&%F(8Iv011/59<5&?HPPIK* ')+K**K+)' *KIPPH>&5<:6uN|l||l|-I+N))N+@65555/F*3V6&7!&54''&''67.76;+"'5#"=6&'76767%25#6&' .Q$( kQ2*(}Q +A "^0!V'>A %E'75'Q]Wy_I1 #C$F)'`xo8:.@s.P mz "x?.#1p#41`&jD"acLHJ ~447| JlL"bT_32>54.#"32>54.#"!5&54767&'&546767&'&54>32'&'.#"y4[14[23\20[5  CJ "$&LF'F%$G(CN%"" S:>st=:8d88d88g66gu9:%N&KRS* '**M**M**' *SRK&N۠:9}qyyq}!%Ueiz67&'&#"!3!67>54.#"!&'.54>325467675#53533#63232>54.#"!57#&'.54>3234'67632# .BFFKIC54CIKGFB/l &">ac^HD  aa_aa !EG]db=#% )(()z7<>k987%%77;k=;7+)QPQ((QPQ)+/ 6klj$?6FWWF6?$jlk6 }++-- !yCB{C!$$!C{BCy! HLP&'4>32"'4>32&'4>32&54>32&54>32#!5!5!,V 014.K0/*'<00<")11 NR'00 Yrr_33@]22-"40446/*33UJ"+33^1/NNOO2A%)5!5!3353#3!53573#'5#5335!Z;hSShgTTgUV^^/oo#E774@4767&'&'5676767&'&54>32!&535#5##3h 6!%%'F(F&%F)F'&&!4 j<5&?HPPIK* ')+K**K+)' *KIPPH>&5<:6n5|l||l|*J".7=6&73#!&54'''7&''676&7;2547#";65'"37IML') x >oT`+`gZ +Y @#]3?&W!g A8/QE)',Qo8:$whPSmh**z1"0@)5"@YRb0&54767&'&546767&'&54>32 "$&LF'F%$G(CN%"" 9:%N&KRS* '**M**M**' *SRK&N۠:9"Q##"'##56'##"/547? dsU 2`g26;2"##'65##"'&5476;2&'5476&+"326733276=4/#"567654'&#"35&5?^g7%SB\JLZޭ\<."7Y@ؘ aj7{6Gf!KQM 1k`t0%K6F98:d  mOE:R p&i  C]&'Ax.+0 nM,W`c,L3#&'&'&6%3#&'&'&63#&'&'&6#"$&5467332$654'&'7  +  , 7  , (ҤӧvCMNDv9?cyɦt3Z|`ŻN[O}БBr1a`bb`a1)EMTTUUTTME)r3#"/4?23*A+ ZP-@3#'654'&'#"54732Nn7S3ڿWP'6?F` 1TFG*֙-@R/"#"=4?2%#"=4?2n0#NI<Ù'PH*~: ۉ8z"C"'4723!#"5472!5bGZOO;Z$}@Ϝ 3363'$6'")2y k?WXc1  3%#'#3%#%,$//c}(,377#'#'547#5773%%F*kknm*&ttrt&<<7CA<<{8AMtG#&#"'5654'5673;54'567332733273+&##&#"#&'565qI3 YY4Jv4(??)4vK2YY 2Iv4)??(4v[#;17F-:S8!cc!8S:-F71;#[RS9 cc 9Sv  ;G7567&'&'3#6737'#&'7#&'6735'67#3335#5,+UU++(*((=((<(())ͼ mm r`^^]qͼ nn q]_]`rchh1hh-.,-C..C.,.-n//_R_//~ijhh~N yy ~hiii~ zz s.. #.6CMhw!2732!'5675'&=32#$'57637&/&+"+&532?4/%32#'#&&=4?#'57335'3!273+#='!"/547354;2?!&=3d4EXJ)fd2(Vfgؐ7FK(?H! 1x0!+V^i.Z LZshV>N%!Jh,OUU*^7QG8*F 1 . ъf)MC =g9EkO 9!(-);&  ]t!y" & 2| ba$ U+  2E35733!&54?'7'7!!"'&%#'73676'77'7'&'676rK((#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*a\MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! 1DW!!5>7>54&#"5>32&54?'7'7!!"'&%#'73676'77'7'&'6762&9,!C6*]PDe+s"+ }V(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*]U1)8(3&ncQ&D- mMOHK$k$823!a IF 7=c`O]BA6$k#- kNA! (=Pc#"&'532654&+532654&#"5>32&54?'7'7!!"'&%#'73676'77'7'&'676 V.a?A[/USNGdhA@CB%VNDb,tK(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*S<\el23-2['&')b YK4JMOHK$k$823!a IF 7=c`O]BA6$k#- kNA!  "5H333##5!5&54?'7'7!!"'&%#'73676'77'7'&'676Wmm(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*Rv_`MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! 2EX!!632#"&'532654&#"&54?'7'7!!"'&%#'73676'77'7'&'676u,}-^?ET/JTTJ#H??(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*_ptcdrr@89@ SMOHK$k$823!a IF 7=c`O]BA6$k#- kNA!  $9L_"32654&.#"632#"&54632&54?'7'7!!"'&%#'73676'77'7'&'676,2==24;;7?NST2izix~"E(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*A;;@@;;Af`5(sa_t MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! .A!#!&54?'7'7!!"'&%#'73676'77'7'&'676_U(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*2{MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! ':7&54?'7'7!!"'&%#'73676'77'7'&'676(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*MOHK$k$823!a IF 7=c`O]BA6$k#- kNA!'9HR!273!567&#2&'76+&67'#'6765'533!273+#'!"/47_4BZW \_&,,X $q ӚeHZcTi*KT}75 b\V/V'f::p ?)\ ) 9s s%00%2<J\e3 + &=%62367#&'&#36&#&#"3274/"34?3'35732?5##!'53.cW{K|".m4 wJG<-V0F @jX[% 8HD }D}yt!7_ ;`OL5_k, ߋ~y}/M<4{1;C,[_ei' [)$ /:BR`j # &5%6; 65%&# !27#57&/#2#&'676+%3#'#&'47'3!27##'%!#"/6<n\Ua->+DSR04IbFER(k(_{aZ)F NF&y I#XYtTpXYSmEb,#4' FV ! Y1 1_ Ug,17H27&' # &5%6367&#'.7&67263'#%; 65%&# WNn\UaNWZn~rzrszr~o>+DSR&XYtTͿWzzWapXYSa/232#!7&!"4#".547673267Ws   y+S Leopq:*$JKK%>)َer(Y$h?}}|r<.2#"&4??[2攖69666ʿ~`eȭ8V2#"&%2".4>6?>[2攖6:66566:65ʿ~`eȭ8V4."6?>66:65ʿ~`e 4."$2>4.#"6?>66:656:665ʿ~`e 4.#"##"'5##"$'&'!5!5&'.54>2!!676767'%'z#@"#@#$@"!@!#M MMAvahN7=>nuo?=7EYTvAMM MfNG''GNH&&_W@Gz@W0(̀2"zDC|CC|CDz" 16 "0W@z@W0#Q 9Y%&'%67&673&/'67 &'"&'6?&'3' '7  &/7&'>7+,B|BRS75'?\R"[;:Z!R]8$B8SRCBBN,%nMLi%*T?Q>? #:21< 9# DDD =3dTDX+  D%(&* A@/"@Q/0>vA%nc.C&2.X`P/5#2$!rI' @2/t< <#m* ---- K3% % 32+#".7!"&'&5#&=4;733703%*+UTVV++2/.ss/3LL3L)(D=?FF}F-F}FF?=D0.@Z"632&'.'#####o0-B &qoIEkcUqKzLqUyS &MP9:9:OGh>BD..TM532>54.#"367#&7&$735&'.54>2,Q,,Q-/P++Q-ɛ["0%*FO܀96ENNPNF21X22X12Z00Z&嘖󱢂. "+UVTTVU+ X2>.#"2".46''#/'7''7''7/5?'77'77'7?3777']|}vx7D@%$@F@$$[@g7SJ@ Z!?IT6f@:$x"^ rq \#u%9@f6SK? Z @IT6g@:$x"^ rq \#u%n'HNG((GNHG@(&j~ h')?Gr<\RG$d$GQ];rG@(&i ~ h')@Gr<\RG$d$GQ];D !&+05:?DO3&7"7&'7&'7&'7&'6'6%676767&77&77&'"32654'5&'.4>23#67#&1#"/&'&547&"'6%676Tb&Qb!#PkC*5n-4!W47*,3)&bM%# cV*CG4-?64#Z3,*3bCC10D#$"/$G*GLH0/#/ .$.3NLH)I#"?Ct>/%8`>!T*}ElKJ{_F e7p %/>i!>`)E}CJV Fhq7f9L56KK65yY &*&&*& X (4ZI4( [c (4I Z3 '~ ")>J2".46&'767&%6'&''67&'&'&'>764676'&7>26'1"'&'&'&54767&'&547>&'&#"6&%>7&'&'&676&467&'&672767&#"  "!F@p.0ZX  XZ-1/p@C2//`++-,,+,+*-+-,X* F?o02\Zjpiff 1z|0 ɚ44t54 /|z0 )*,-*)KMLQ67 ; =6`X\11n?F 2..23 6676  PLK)*\))L-$(##($49fSU++9Y]]Y9VUSf9'N'&((H7r787r Y^49dTV,, ;7->dsub>,64.#"%2".4>f#1(..!*+%&06%#*&&. *-,#IO[L&,#$%)L[OP21- ;,5?TO;8,< .12/^^`YZKQNNP~"dioLbMSuIJq>UkKVV6o ij$k]*UzvvZ11Z vvzU)[#ec,#IL 6B/!!0C6 MJ"+ce#̻gg̽ffQUWWUZ  #3!'#!52#"62#".4><]D./.!"  D [ Ch:$($$($n33'554#$/N QZ AjFSF\Q FIFsX%N,r!&5476'#5! VqhjB #b%"BXXZy'#"'&#"'&'&'&547676763232767676'&'&'&/&'&'&547676762!2!%3276767654'&'&'&#"&#"3276767654'&'&lg&  ' !   &"7WR!  FK8!  A@   %bJdG[r             $&$  ' D"&%  $ #  mR )Ky           M!r26767654'&'."#"'%"'&'&'&54767676;27>764'.'&+"'&'&'&547676762%632$"26767654'&'&)"")".'bI_H  $G $#=M\" "XQ=#$ G$  H_KIb'i)"")"q    l?W,># "#" "  " "#" #>,W?~    OYx3!#!"'&'&'&547676?6767676'&'&'&#"#"'&'&'&547>763276;%326767654'&'&'&#"6767654'&'&'&#"32l[[GJZ-   @A   !8KF  &RW7"'  / ! '  $g  %    &    OK) Rd# !#& "*"D '  ""! 2   T   :      AZx-4H67&'&'&+"'&'&'&476767632%632 #"'%#"'&'&'&54767676;276276767654'&'&'&"276767654'&'&'&""'&'&'&547676762"'&'&'&547676762'&'&'&547654'&'&'&";276-&#"+"276767654'&5476%327%&"'&'&476762  IS<)(!$$*&+)('$ *O:R{356xRO* %+&.#%% ",&+mwn<;;8rowp:;;BV0/+"8:D@*|sa  -F(7 "*=8&0!2   1-5$& 6:B4M,Ji&'&'%&'&"632%676767654&2"'&'&'&5476767"3276767654'&'&'&'2#"'&'&'&54767676~8  ,!('^&) ?.13-z  9 + 8 8 3xpkXZ+--,YV{{mlXZ+,,)\Vnl|xhe4330ic}yge444/ja~wIP"2-.$  "" PI $.-2!v   31cdvwzwcaf31cdvwwqi`43d;8rowp:;;8rown<;l,-57'36%33#3#32+3#3##$'#7!:Z0nhMZS?++?SZMhn0Z:( jPP,PP` v ")- !676762!"'&'&'&54!!J &+}r1r J!,~'h,  k-"s! K476?6763&'&'&547632676767654'&7632!54'&'&76'&&#"'&/&'&'&#"#"'&'&/&'&#"&'&'&?6'&'#"'&'&#"!'476/654'&76'327654'&'&327654'&/!/#$ +CD"   !%2   !,F#  1')D  VzVT+g/& ,$ )- 00 p*  $ ,  S  2 42  asJ#   l71]% /~[#<$  o_%?,: *(;Y)$X$+|=L!6CX&PY89Do6 b'n2  83eF] 4T&  &  /50$?- 1@& 3l K  C"P1 :07@D:5XI6.D3[+-1:   q/A8   g&l9Lp{7654'"'&#"+"'&54?67676763276323273#5%6767'&#"6"/67#"27632327654'73654'676547&*b+"CZJ"Pt >Tn:< /8)5" '$1P8b, P0*'$M/hK9O!Lt8gC9C%V)+.|&-C-)+8K Qe+',T' ;cs  /^"|Y/ 428ۇϕl%%ot5oA='Y$ aT* ''G+- %_kj~r}jL`І|\gK@/.85c($7")3SZ67654/##3276?7%54'654'36767632#"'&54767632'610B ډ v=;z1/f       (r 4@  H67; zh| 9 >6!q     B/> '-EL4'&'&/767675'7! !'!654'!4'!!$4767>2"&'&'!654' .. UTT(oR-fH ~!88!~ Uppph,p<((zd7")3SZ&'&#"227654'&'''%'654.#"65&'&'&547632#"'&'&6#" B016˄ <W ;!1 .fa      4  ;76H    |h> 96qm      BO{s[#C'%%.'&"27>7%$6%"'&'&'&47676762%'|- -      8 8@uID`qS   SqGYq > q|s)&%$64'%%&'&'&"27676--- &  & !q``q! 2327632#"'&'&5476#$ 8z@A )/?'@xH )0$'*'2 27277632#"'&'&5476#$ [Wr o&-23A?X@yJL 1 - A  ' 7 eee77ɍ8ɍ?k ONOOt7tt7u B2632#"'&'#"'&54767'&54763267632676y I  lsD!. m$   1O3  6*=P*> "#  nQ26#"'#"'&'#'&'#"'&547&'&54767&&5476326763276  Ӆ"   PmO!unY, ' _ :  (̢1#: _& #- Խ =1 '2ĺ d #!!!!!%!!!!!!!!#!5!3tnonoUHVPBXyBd !!!!!!hp"#d35#7!!#!5!343srsd!!%!!!!!!Qfgh#p"#0 !!#!5!3phhEU3!!'#'!!#!!3!5ӇM_ r,,_ #!#3!3'3#!#3!3###533D,Ԑm_|P_H_dQ#"#3;54'&'&'!"3276767653#4'&'&'&+3!52767>5oZQPB;( -- &=>TN]o"#@>%!--!'32367675&'&'.5467676236767>32#"&'&'&'#"'&'.546767675&  J))II))J &$$S$$!  J))JJ))J   !$$S$$&*!""! ((\(( !""!#%    R.-R  R-.R "   %#!""! ((\(( !""!*  " R.-R  R-.R   J4'&'&'&'.54767676322767676767632#"'&'&'&'&'&#"'&'&'&5476767676765"#"'&'&'&5476767632!  $$#5)43+0!"" %='4  #--24+."  ".+42--#  %-*:  #"!0*g*1 #$  #9+.#  "Z34+-# #-+47(." $-+C,7"  &d8:02& $&20:=-2& (10?!  '&$6/r/6$&'  'D+:!  '228:/3&$$&3/:822'  )2/@' ((& :.:806$&& (K0267632#"'&'&'!&'&'&54676763267632#"'&'#"'&'&'&5476767!6767632#"'&'"'&'&'&54767#"'&'&'&5476767632!#"'&'&'&54767#"'&'&'&476767632&'&5476767632!#"'.'&5476767632&'&54767676   $             6   /           $      (   2     6           %    <    %  (   N276767653"4'&'&'&Nxhe4330ib~~bi0334ehx;8rown<;;==>--28;BA;82--28;AB;82-&lLl+ '1% %2"'&'&'&5476767! !+ ==!fx43+,,+34x34++++4o¬ì6a-28;BA;82--28;AB;82-&lLl+ !''!! !! !WUVV]RRSR^->==>-Iٶڶ&GGlLl+ 3'7'3! !7!%%!"pZ"ZZ"Zp"->==>-giiIvIvIIvIlLlc+ %5%7'%!! !RRS#^->==>-KKGTlLl-  '%'!!!!kkspy{;y<zffz> NrqN qrK% % -S{H{{G{SlyyK7% %' -i??4?ih@3@@GstGWcGtsGcd/3%!!%#'''%!5!%777ldLr*rp*LdldM*rq*pMdE.f:UūoxoU9g.Ff.U:oxo9U.s54'&5476276767632#"#"#"323232#"'&'&/"'&5476=&'&'#"'&'&547676323232?&547'&#"#"#"'&'&54767632676C(12l30'E f:#=6.@ N8E vZ  \u E8N @.6=#a  wFNd0110dNFy~ DzI'#4#,G2$:;$2G,#4#'I~? yFNd0110dNFy ?~I'#4#,G2$::$2G,#4#'I; s"276767654'&'&/54'&5476276767632+"#"32;2#"'&'&/"'&5476=&'&'#"'&'&547676;232?&547'&#"+"'&'&54767632676&  &  PC(12l30'E f:#=6.@ N8E vZ  \u E8N @.6=#a PL wFNd0110dNFy~ DzI'#4#,G2$:;$2G,#4#'I~? yFNd0110dNFy ?~I'#4#,G2$::$2G,#4#'I; wj'&'&'&767654'&54762767676'&76'&'&/#"'&5476='&'&76767*,dJS&&cASN'@2+_:1JJ09`++H,IRAc&&RO`4++,dKR&(aDOO&@3+`90JLOF1:_+.D+JSAc&&RN`1 05HoIH 53c!77\`j4OO4jfVA7g/5 HIoH53   05HoIL43c!77\`j4OO7gfVA7f05 HLlH53  w67654'&"327632#"'&'&/#"'&5476=#"'&'&5476763232?'&#"#"'&'&5476763254'&5476276767632#"'&#"#"'&#"327676%32767654'&'&#"#"3!,L,"20[!Q?R 'b3;K*9CN90JLOF1:M@;-H<2c& S?P!\/.["P?Q &c2:4/.&"./4;=16'+&1,"%&!6'+&./4:>1:#"$./4:>16'+,4:>16'+&./4;=1cn%#"'&'&'&5476767#"'&'&'&5476767632&'&54767676267632#"'#"'&'&'&27654'&'&'&"67&'&'&'276767&54767'&'&#"276767654'&/7676767654'&'&'&#" ,!2+75.+(%),7+2!)%+(6,4."7("2*p*3!(8!3/11+)%(!3*8+($)+-58*3!+ F7 A = ;*] A &l    1A ]+;݂ !l&%",1&+'61=;4/."&./4:>16'.5 1=;4/.&&./4;=1 5+'61>:4/.&"./4;=16'+&1,"8_/$   $/_c.,b" $#  !I?30C !'#  x!  #$ "b,.$  #'! C03?I K-[3b &'#"'&'&'&547676763267'&#"327%327676764'&'.#"7632#"'&'&54767676324676762676322##"'&'"'&'.5#"'&'&'&54767"'&'&'&54767676&'&'&'&'&547676?&'32767677676765&'&'.#"7676767&'&'&/326767674'&'&'67'&'&'&#"67'&'&'&547676767"276767654'&'&'"'&'&'&54?&'276767654'7654'&'&'&"67'&547676762  !/ !  /   @!$$)''%!$$S$$"#(&)%$#2#" '&-!$%))%% $$S$$$"%)(%$ -&""#      /     / ]~     _ /   ] /        JJ!  !J     2 6 Y2 6 1    8 < d8 < 6   %),++*) !$3R  R3&!-(-%2(&"#%(.2$( &',+,)) !$3R  R3'! )),,+)$"#%(.2$( "   i !xg   !      %     !  !   g    "$)($##$()$"$  % %% %  M<\l"276767654'&'&/2#"'&'&'&47676762#"'&'&'&54767676% %-;n./''''/.n.0&''&0eN>E1354BAKN=F0353CAJxhe4330ic}yge444/ja~\[Z](.35<;53.((.35;<53.("68MITNLJ;9"68MILJ;9m;8rowp:;;8rown<;}}w"327632#"'&'&/#"'&5476=#"'&'&5476763232?'&#"#"'&'&5476763254'&5476276767632#"'&#"27654'&%&'&#"327676%327632 654'&'&#"#"&,"20[!Q?R 'b3;K*9CN90JLOF1:M@;-H<2c& S?P!\/.["P?Q &c2;,,;>J=!6"=J>:,,:>J=",|XX|X.U|JU~-|U ~U.<%DREA 11 AERD%<%DREA 11 AERD%9r99r W +?Sg"&462    "'&'&476762"'&'&4767622"'&'&4767$2"'&'&4767wvv M] LV M L#)c*##*c)##)c*##*c)#ce,2$$2,e,1 $$ 1e,2$$2,e,1 $$ 1K8)UL)U~U)^U)Ip17#((#71p17#((#7p17#((#71p17#((#7Y'.n.''.n.''.n.''.n.' K &3@MYam+%5%32476;#"'&'7632&54?#"632'&54#"/72#547"&462"'&=3$ v #$ v "@%%@(@%$&$@%%@(J-Z-OpOOpJ-Z-*2d2((2d2M*'FI*'FeF)*IF)* ( a 'U|XX|Xc( a 'Kl267632%632#"'%#"'&'"'&547#"'&54767#"'&47632&'&54763&5476'* F/-<.  E** C!Wc.<'5 F *M+F /-;/bX"C ))D  /; <F*/#J"5C7/ N".X.$M51C5 "J#//#J{ 5CLM$.X."N 51C!wJ#/[ #! 4$#"# 4$32632!"hgٜؤlLLkpGQ?rAm %!#!3!bVZ?ZS.Sd,m8 %!%!35!bVZ?S.dd,m %!!!bVJ?ZS.SԂJm8 %!!7!bVu$S.SdJ  1120`1111SSRU"SQ#Qk!7!6(!33tJ(n?l(!##lItJ?(t !33!33tJtJ(n?n?l(D !##!##lItJItI?n?BOS2#"327676765!"'&5463!57!##"'&'&'&54767676#  98A)1zj2~!'8::>00/1=;;>/2qKFD6454FCNNCF4546DFKo5?'#"'&'&'&547676763"'&'&'&5476767632?gC?=0/1.?BK9$&! hTj]-D$'FD,.6ME%)&2:'Vl:g0,?)!:"9JOCQ>^v:Mc*ZeC03N35%&-Kt\K%9S >BWN=!$?$8(F!5{^?ZxN676 547&'&327#"'#536767&'&'&5432&5476323254'&54329(<G8;k,0$#CV[<'$a #9 !7AX ;7%'27)b3[X H<ߞ>$3g:=TEB7WPfG+1KHP<Ff#&T'0P+A'<}DCh' 5276767654'&'4igY[FJ$$$$V^bw~9==?x}/CD}>C/GFCG# !&547"xuvw҇>2;#!!676.BDx;:t<_! !_53} ! 55! !iR ! \R2! !E53Q ! R55}__֕jj.'7'7__j3jB$#"&=4&+5326=46;#"3a77`=MRcdQMtsݓXXw(326=467&'&=4&+532;#"+w=NQdc*(N=MK1077bKM࿾XGGXJI9:tJJ ! 4$32!5##7#llLL>+đA?r\/+ *! 4$32>54&#">32!5!>llLL8+6Wgw5FV+7JawqA?rFi:}$:&N?(U?"Mt 6! 4$32%4&#">32+32#"&'32654&'26llLL7{U`m/RSPP~Y`gi>pRO{9j ]A?rs ?<:32#"&'32654&#"75!5!llLLWP[-]jj]=lUOx99hA?r%aVUa/  2! 4$32#"&54632"32654&#"7>325.llLLSFFSSFFSfҭFsrk*XKB`A?rZbbZ[bb*= P# ! 4$32%!35!llLL.ѭHA?rv]K 1=! 4$32#"&5463232654&'>54&#"2#"&546llLLVKLUULKVj __jGCJJCFHHA?rlHQPIIPPI\vSttSvB>=BB=>B &2! 4$32254&#"326#"&'4632#"&llLL"ҬGt rk*WLB`6SFGRRGFSA?rK < O$[bb[[bb $0! 4$32!5##7##"&5463232654&#"llLLi.>9:>>:9>{vuzzuv{A?r*'$=(F  76767654'&'&'35%33!  '&'&'&5476767ywbd0220dbwyxwbd0220dbw9or6886roljpq6996qp96oooo6996oooo6}9:݈@>}~~}>@@>}~~}>=A_  76767654'&'&'!!5676767654'&#"5>32  '&'&'&5476767ywbd0220dbwyxwbd0220dbwYVS%F;=`HILVW?cdB`a9or6886roljpq6996qp96oooo6996oooo6_.X<<;_<<5'(]]IBBZooV@>}~~}>@@>}~~}>=Om  76767654'&'&'#"'&'5327654'&+5327654&#"567632  '&'&'&5476767ywbd0220dbwyxwbd0220dbwhh<:mmDGHM=NGHBCw}l89un;DESJRH@_`fj9or6886roljpq6996qp96oooo6996oooo6yNNtaa'(<}~~}>@@>}~~}>= +I  76767654'&'&'!33##!5  '&'&'&5476767ywbd0220dbwyxwbd0220dbwp&9or6886roljpq6996qp96oooo6996oooo6 @>}~~}>@@>}~~}>=?]  76767654'&'&'!!67632#"&'532654&#"  '&'&'&5476767ywbd0220dbwyxwbd0220dbw;J !iiCKE@EN||;9;<9or6886roljpq6996qp96oooo6996oooo6c nm)}|X@>}~~}>@@>}~~}>=,Jh  76767654'&'&'"327654'&.#"67632#"'&7632  '&'&'&5476767ywbd0220dbwyxwbd0220dbwa:9sab:99:7o6MK *@@M^^ģbcxz7p9or6886roljpq6996qp96oooo6996oooo6KJKKJKllE&%mnޟ-@>}~~}>@@>}~~}>=$B  76767654'&'&'!#!  '&'&'&5476767ywbd0220dbwyxwbd0220dbwzp9or6886roljpq6996qp96oooo6996oooo6`E#@>}~~}>@@>}~~}>=+BNl  76767654'&'&'"27654'&'.546  &54632654&#"  '&'&'&5476767ywbd0220dbwyxwbd0220dbwg<;;<<;;;^hAh^i;;w3i^^jj^^i,9or6886roljpq6996qp96oooo6996oooo6,=>=>>>kl>=EggOOss\hh\]hh@>}~~}>@@>}~~}>=<Lj  76767654'&'&'532767#"'&54632#"'&27654'&#"  '&'&'&5476767ywbd0220dbwyxwbd0220dbw7p6MK *?AN]^Ģbbyx788c9999ca9::9B9or6886roljpq6996qp96oooo6996oooo6lkD%%lmޟ橨 KJJKKJJK@>}~~}>@@>}~~}>=+8Ca  76767654'&'&'"32654'.  7!5##7  '&'&'&5476767ywbd0220dbwyxwbd0220dbwK('NLNM'&IHHIHahvtl9or6886roljpq6996qp96oooo6996oooo6{z~{ӟ>-,g#&%q @>}~~}>@@>}~~}>= (!5##%  '&'&'&5476767kn9or6886roljpq6996qp#:9q @>}~~}>@@>}~~}>=#A676767654'&#"67632!5  '&'&'&5476767`a`Bdc?WVLMD`=;F%S 9or6886roljpq6996qp ooZBBI]]('5<<_;<}~~}>@@>}~~}>=1O>54'&#"67632+32#"&'327654'&  '&'&'&5476767_f`a@HISSED;nu98l}wCBHGN=MHGDmm:}~~}>@@>}~~}>= +! !335#$  '&'&'&5476767@J@搚9or6886roljpq6996qp  @>}~~}>@@>}~~}>=!?67632#"'&'32654'&#"!5  '&'&'&5476767<;9;||NEDAKCii! F9or6886roljpq6996qp=|}'mn %@>}~~}>@@>}~~}>=,J2#"&5476.#"32654'&#"67632  '&'&'&5476767b:99:bas9:}~~}>@@>}~~}>=$!35$  '&'&'&54767679or6886roljpq6996qp@fE@>}~~}>@@>}~~}>= $0N2"'&476' 654'&'>54& 74632#"&  '&'&'&5476767i;;;<<;;<*iwe;;i^hh(i^^jj^^i,9or6886roljpq6996qp=>lk>>>=>=EssOOgg]hh]\hh@>}~~}>@@>}~~}>=.L%3276'&#"32767#"&'"'&547632  '&'&'&5476767=887xybb^^NA?* KM6p7!a9::9ac99999or6886roljpq6996qp /޸ml%%DklgKJJKKJJK@>}~~}>@@>}~~}>= %C2#"&547>  '!5##7  '&'&'&5476767#[--Z[ZZ--KMMK"LOt9or6886roljpq6996qp{zz{ӟ>-/g#&%q @>}~~}>@@>}~~}>ij !!5!!IKG ppp 7%Qp?4NGi85 b=<22pJJ '-m?GNi!!iu9.Ǘ>~~>iu2"&'&'&5476?!".'&47>3!'&'&54767>2 .(  '!  !'&  (.h2p "2" pi8!5! $EvZPJJi8!5! $EvHJJi8 #3#3#3!!5 sll66ivpppJJi8 55!#3#3#3$Hll66΄ΊXXXXi8!!5 $EvJJD! k>>D! k>>  vvib3!5 5!"'&'&'&i &&,v,&& 0+*%!JJ!%*+i847676763!5 5!"i &&,v,&& 0+*%!JJ!%*+0]!! MUVXeooi855!q΄Ξ0ij%5!!53  !Io>ij%5!!53  !Io>& !73#57!!'|Zoto|C} 2&& 5!'53#'!!!'Z| l }&2 !'!'!53 !yG!Z&cZIuoڞ  3#5!7!!! ycZIcZ5&o rd !53#'5!'! !c-Ic-&-fo%Jdc;dJrd 7!573#5!! !--c-Icfo%LJd;cdJ1!6767632#"'&'&'! $Iʞ uB "&*.37#37#37#37#5!!!!3'#3'#3'#3'#6666l`"66$66$66$66ZPhp> 7&#"7'7 #%+%;?2M3~{FC*9oX:Wib 55!5!!'!~䴴ddPR '327'' #!?;%2~4~*CF9XUp>2%&#"6767&'&"67632&'&547676767耕;>@Q#"F#!!%)*(+'~ !Ap*G&/$##*0,0.+"W!'&'&#'ZGGCia/4767!"!47676763"'&'&'&5!3!&'&5" %!*&,,&*!% "eeZ'&$(0+.!"-+0($&'Ze2&'&'&'&54767#"'&'2767&'&'32$A! '+(+('~!#F"#Q@>;CGGZ'!&'&'$W"+.0,0*##"/&GgX+B6%"'&'&'&547676$47676762"'&'&'&'&'&547676762$ n 8   I > I % O 8 lbQu R$'68"   vc.676767632#"'&'&'&%&'&54767&'&5476;#$&*0/6.i3b.-#4!!YY!&:?$ fLLf#&#/:&'+-23-+'rr'+-32-+Ve"'&'.54?654'&'&'&+"#!".4?64/&4676763!2;276767654/&54676762Q gg'Q  c     c  g"'&'.54?654'&'&'&+"#!".4764'&4676763!2;276767654/&54676762NSl TuSNh    4  i^+#76767&'&/3#6767!5!!5!&'&'zK~BaJ"@@"JaAK^&'c5 5c~&OUä'66'U=;JHd)))dHJ;=#u ! !=?Fvu-1 + &  2]&  2@   @'   @'   '  @' '  *8@ *8@'  *8@'  *8@' '  *8@'  *8@' '  *8@' '  *8@' ' '  **8  *8@'  *8 '  *8@' '  *8 '  *8@' '  *8 ' '  *8@' ' '  **8@' * *8@' ' * *8@' ' * *8@' ' ' * *8@' ' * *8@' ' ' * *8@' ' ' * *8@' ' ' ' * **8 *8@'  *8 '  *8@' '  *8'  *8@' '  *8 ' '  *8@' ' '  **8@' * *8@' ' * *8@' ' * *8@' ' ' * *8@' ' * *8@' ' ' * *8@' ' ' * *8@' ' ' ' * **8 ' * *8@' ' * *8 ' ' * *8@' ' ' * *8 ' ' * *8@' ' ' * *8 ' ' ' * *8@' ' ' ' * **8@' *' * *8@' ' *' * *8@' ' *' * *8@' ' ' *' * *8@' ' *' * *8@' ' ' *' * *8@' ' ' *' * *8@' ' ' ' *' * *p pp@'  pp '  pp@' '  pp'  pp@' '  pp ' '  pp@' ' '  pp8@' * pp8@' ' * pp8@' ' * pp8@' ' ' * pp8@' ' * pp8@' ' ' * pp8@' ' ' * pp8@' ' ' ' * pp8 ' * pp8@' ' * pp8 ' ' * pp8@' ' ' * pp8 ' ' * pp8@' ' ' * pp8 ' ' ' * pp8@' ' ' ' * pp8@' *' * pp8@' ' *' * pp8@' ' *' * pp8@' ' ' *' * pp8@' ' *' * pp8@' ' ' *' * pp8@' ' ' *' * pp8@' ' ' ' *' * pp8' * pp8@' ' * pp8 ' ' * pp8@' ' ' * pp8' ' * pp8@' ' ' * pp8 ' ' ' * pp8@' ' ' ' * pp8@' *' * pp8@' ' *' * pp8@' ' *' * pp8@' ' ' *' * pp8@' ' *' * pp8@' ' ' *' * pp8@' ' ' *' * pp8@' ' ' ' *' * pp8 ' *' * pp8@' ' *' * pp8 ' ' *' * pp8@' ' ' *' * pp8 ' ' *' * pp8@' ' ' *' * pp8 ' ' ' *' * pp8@' ' ' ' *' * pp8@' *' *' * pp8@' ' *' *' * pp8@' ' *' *' * pp8@' ' ' *' *' * pp8@' ' *' *' * pp8@' ' ' *' *' * pp8@' ' ' *' *' * pp8@' ' ' ' *' *' * p*p8 *pp8@'  *pp8 '  *pp8@' '  *pp8'  *pp8@' '  *pp8 ' '  *pp8@' ' '  *p*p8@' * *pp8@' ' * *pp8@' ' * *pp8@' ' ' * *pp8@' ' * *pp8@' ' ' * *pp8@' ' ' * *pp8@' ' ' ' * *p*p8 ' * *pp8@' ' * *pp8 ' ' * *pp8@' ' ' * *pp8 ' ' * *pp8@' ' ' * *pp8 ' ' ' * *pp8@' ' ' ' * *p*p8@' *' * *pp8@' ' *' * *pp8@' ' *' * *pp8@' ' ' *' * *pp8@' ' *' * *pp8@' ' ' *' * *pp8@' ' ' *' * *pp8@' ' ' ' *' * *p*p8' * *pp8@' ' * *pp8 ' ' * *pp8@' ' ' * *pp8' ' * *pp8@' ' ' * *pp8 ' ' ' * *pp8@' ' ' ' * *p*p8@' *' * *pp8@' ' *' * *pp8@' ' *' * *pp8@' ' ' *' * *pp8@' ' *' * *pp8@' ' ' *' * *pp8@' ' ' *' * *pp8@' ' ' ' *' * *p*p8 ' *' * *pp8@' ' *' * *pp8 ' ' *' * *pp8@' ' ' *' * *pp8 ' ' *' * *pp8@' ' ' *' * *pp8 ' ' ' *' * *pp8@' ' ' ' *' * *p*p8@' *' *' * *pp8@' ' *' *' * *pp8@' ' *' *' * *pp8@' ' ' *' *' * *pp8@' ' *' *' * *pp8@' ' ' *' *' * *pp8@' ' ' *' *' * *pp8@' ' ' ' *' *' * *pp8' p *pp8@' ' p *pp8 ' ' p *pp8@' ' ' p *pp8' ' p *pp8@' ' ' p *pp8 ' ' ' p *pp8@' ' ' ' p *pp8@' *' p *pp8@' ' *' p *pp8@' ' *' p *pp8@' ' ' *' p *pp8@' ' *' p *pp8@' ' ' *' p *pp8@' ' ' *' p *pp8@' ' ' ' *' p *pp8 ' *' p *pp8@' ' *' p *pp8 ' ' *' p *pp8@' ' ' *' p *pp8 ' ' *' p *pp8@' ' ' *' p *pp8 ' ' ' *' p *pp8@' ' ' ' *' p *pp8@' *' *' p *pp8@' ' *' *' p *pp8@' ' *' *' p *pp8@' ' ' *' *' p *pp8@' ' *' *' p *pp8@' ' ' *' *' p *pp8@' ' ' *' *' p *pp8@' ' ' ' *' *' p *pp8' *' p *pp8@' ' *' p *pp8 ' ' *' p *pp8@' ' ' *' p *pp8' ' *' p *pp8@' ' ' *' p *pp8 ' ' ' *' p *pp8@' ' ' ' *' p *pp8@' *' *' p *pp8@' ' *' *' p *pp8@' ' *' *' p *pp8@' ' ' *' *' p *pp8@' ' *' *' p *pp8@' ' ' *' *' p *pp8@' ' ' *' *' p *pp8@' ' ' ' *' *' p *pp8 ' *' *' p *pp8@' ' *' *' p *pp8 ' ' *' *' p *pp8@' ' ' *' *' p *pp8 ' ' *' *' p *pp8@' ' ' *' *' p *pp8 ' ' ' *' *' p *pp8@' ' ' ' *' *' p *pp8@' *' *' *' p *pp8@' ' *' *' *' p *pp8@' ' *' *' *' p *pp8@' ' ' *' *' *' p *pp8@' ' *' *' *' p *pp8@' ' ' *' *' *' p *pp8@' ' ' *' *' *' p *pp8@' ' ' ' *' *' *' p *p2F  5 ~d22hp %#3 5p<~:p 73 Ù+8bb:pB 7*>PNqpB '*N>PNq^DpB *>PNpB%  p*)NPpB5  5*)KbNP#u >>u-4k7!!  767654'&'$  $'&'&547676~|fiffif|~ ~{ghffhg{>g3@??@̀@??@;:rs죟sr:;;:rssr:Ŭɪ4k3?  767654'&'$  $'&'&547676!!#!5!*~|fiffif|~ ~{ghffhg{>g3@??@̀@??@s?LLB;:rs죟sr:;;:rssr:ŬɪKss4k3?  767654'&'$  $'&'&547676   ' *~|fiffif|~ ~{ghffhg{>g3@??@̀@??@sSl`k`am`B;:rs죟sr:;;:rssr:Ŭɪ3x23w3x* _'F'F&FFiLX#53676&'&3#'&'&'77KGBEA14?JHBE@13@, FCD4 MFCD4iLX+5!676&'&3#!!'&'&'77#537KGBEA14? JHBE@13@ @FCD4٨FCD4ΪiLX#%'&'&'775%676&'&1"JHBE@13@)KGBEA14?mFCD4FCD4iLX09%'&'&'77&'&54767676&'&&'67' KHBE@13@ SBcdKiKGBEA14? Ae$H817'AC!FCD41IosV='73'/0/= #JHBE@13??-0\"#,(KGBE@14?' .!#$TA0@SGLCD55FCD4M 25DCL802&&FCD4x$'a8]HH]iLX#''&'767!!67&'&'&!!3#x@30?F;OJ < ?41AEBGK9n-< JFD 4DCFRiLX15''&'76767654'&'67&'&'&63#YE@>`mB9&LGBEA14? 4>XabcOAKGCE@13@)k6HFgjJG*$Q]GCD4ozlo!FCD43>'iLX=A654'&#"32676&'&'&'&'77&'&547673#~@@m KGBEA14? R7Nm/((JHBE@13@(:.mhT+FCD4Ea8J'JFCD42PiLX3'&'&'77&'&53676&'&67653N=kJHBE@13@S8Mm.)'KGBEA14?&8/mriRFCD4LFaIȢJ(FCD41P8*)!526732#"&'.#" #"&54632`>z_  HZ92&2 ` G[>6+ l9TA6?&#Hn!bSA8?S*b)5!26732#"&'.#" #"&54632`_  HZ92&2 ` G[>6+ bl9TA6?&#Hn!bSA8?SF 5 5E~_~FѶeѦF 5 5~_~FѶeѦG& (4F& )4F'& (4F'& )4G& (4F & )4FN;B%#"'&'&'&#"5>32326#"'&'&'&#"5>32326 5F_Wc UOX^Xc  TN]_Wc UOX^Xc  TN\`~PNE;=LTNE;=KPD:32326#"'&'&'&#"5>3232655F_Wc UOX^Xc  TN]_Wc UOX^Xc  TN~`PNE;=LTNE;=KPD:327&#"56767326 5F_W>K.}NN]_WcSP9+OX^X=K.}NOX^QbFeSQ:+N\`~PD4KUNE;@LTNE4LRN"*,@J^po_FN5<#"'3267#"/'7&#"5>327&#"5>32732655F_W>K.}NN]_WcSP9+OX^X=K.}NOX^XbSQ:+N~`PD4KUNE;@LTNE4LRND:@J^FT 5!5!-5 !5!E~~~~~/0\^ҲЪ~FT -55!55!~~ҲЪ᪪/0FN%#"/&'&#"5>32326!! 5F_WcUOX^Xc TN~`~PD:32326!!55F_WcUOX^Xc TN~~`PD:323265-5E^Wc TPY_Wc UM]~~OE;=LSNE; =KJ/0:ҲЪF !(#"/&'&#"5>32326-5 5E^Wc TPY_Wc UM~~OE;=LSNE; =KJҲЪ/0,F -55!55!~~%ҲЪ᪪(/0٪,F 5!5!-5 !5!E~~~~~%/0\~ҲЪ^6F 5 5 -55E~~~~/0V/ҲЪа/6F -555 5~~~ҲЪ۰/'/0K/F& 55E~~_p/ѦѶF& 5 5~_~p/om//G&& @4F&& A4F{ 5!5 5!~Ѫop9F{ !5! 5 !5!F~~`~~ѪF555~~pNpopF 55 5E~~~`~p pUF)$.#"#"&'532767676325F]NT  cX^XOU cW_~TL>֪VJ<:DNTL<:DNDopF%,5!5!.#"#"&'53276767632 5~]NT  cX^XOU cW_}`~>֪VJ<:DNTL<:DNDfF $!!!536767623!&'&'&!!~B=)2 1MQPM1 2)~Z{+DD\93[2332[0<[EC,FW7!!%5$~TY)Yy]]x|FW%!!%5$E~~YTY)y]]x|FW !!'7!5!%5$NQxQ?oTY)YqPP]]x|FW !!'7!5!55%$NQxQ?Y)YTqPP|]] FK75!5!%5$~H:3֪k-QtXVv FK75!5!55$%$~~:H3֪kVXQ-qFK!5!7!5!7!!!!'%5$V{}%.RV}||{H:ss1st-QtXVvqFK!5!7!5!7!!!!'55$%$V{}%.RV}||:Hss1stVXQ-yF:E#"'&'&'&#"5>76326#"'&'&'&#"5>32>%5$E^Xc  TPY_XW UM]^Xc  TPY_Wc]H:(NE;=LTN9 A=KOE;=LSNE;C E-QtXVvyF:E#"'&'&'&#"5>76326#"'&'&'&#"5>32>55$%$E^Xc  TPY_XW UM]^Xc  TPY_Wc:H(NE;=LTN9 A=KOE;=LSNE;C EVXQ-F6A#"'3267#"/'7&#"5>327&#"56767326%5$F_W>K.}NN]_WcSP9+OX^X=K.}NOX^QbFeSQ:+N\H:$PD4KUNE;@LTNE4LRN"*,@J-QtXVvF6A#"'3267#"/'7&#"5>327&#"5676732655$%$F_W>K.}NN]_WcSP9+OX^X=K.}NOX^QbFeSQ:+N:H$PD4KUNE;@LTNE4LRN"*,@JVXQ-F7 5~~`~pppoF%5555E~~~`òi'%!%!!N r'%!!!N NT!DVR!#6'&#"#3>323#u**o]_olNiED)[eOO__edwxNODVq33 3###UCQfJ2``iE#2!#3!k|k9K`!#3!fZĥQ`3Uhh '"27676'&'2#"'&76734;wTi^ /Y^/-]_01p?Ac!"83fx5ˑRh]p[mNssg.Rn  73#7#"32Vdp c4()]y}E:E^+焀Uf##.+;#"&!2326&#N6V"qi)ll\"Iy8F̎/&/]僞.o~hb–m؍OYp #3632'&" %ᶯb,)I7``Te^1%/" 6764'&!!"32 '&5477&547>[# #9 ##:WVaA0P`?:[MHsLHu5 2/hN\ƝhN\MD|}%#"!!#!##737676;#"!76763YS𫧫: ^]YS ^\Phc//яNUVPhcNUV}3#'#"!#!##7376763)^ZRkŧ9"VVOic.яNPP}!#!"!!##737>ZR𫧬"{Oic/яNǟ}+/#"!767676;#"!#!#!##73767633#pY*) ^&NuY*)mç:: ^](((hcNU'((hc//яNUV}'#"!76763!#!"!!#!##7376763pYS ^\YS𫧫: ^]PhcNUV{Phc//яNUVb"57654'&+"##737676;2!!;#"'&547#7&[Y+)է ^]?( Uj h:%jy`c+!-(((h=яNUVV6c5BNA+0'P1b=Q`el&'&#"#"'&'732767654'&/&'&547676326767632!!;#"'&547#737654'&"SF@H>j@<&~7=,WOU["STTWuGG"78'jtACcaF2Uj h:%jyz *<>97 ?+*'W ,$!+L7V"&[[#5-,Q1#*$J5Q!&NV _]_D] #LA+0'P1b=Q`N. 210@+TL!%%#3>3237>?>54&#" 9,!]HVb=L_dF3K^m``+BGVL9jFY\^{\^BTbg86^f3#f3#%3#Է%#63#/&#"#>3232673#"&'"0q nM7!"#3 qqR29 32mn 6.mn2#~3#'#Žy~ #373㿏y}  #.#"#>32k FEMalsm~=67iK1nTIgTIgTIgTIgTetBjPo1/1/xe82W E1nB.iQU"aT<1n4nOJG WYX<bWJJD/)G8KhUh?gU-X=fS```&``TTk1k0Rk:r\NBBe(( |VK,E66E2?<T |M1UJ8adyke(%)B1 !gOIIqII66v0qV^-^mm66q.ZEq2622 ~H@{(#U5F+9m5L1 ( az+RpW U#n G?vj*4.1mSIlv!q u0faoz121j1S1161b12Ij2W12eOet[1etSGhol*`SBg4GLhgIol>IB<gTUd9zWU*`xBmfoz*`gT*`flquJfSf1ugx9|$1Mv:'BuPQ1m^<gTe8b }T1SnWnP`1M62sMs112S 112_1b2c-jN21217b2b21j61j1Ij2W1MeOc-2`N2N22;iKp:>EEnTGEEYEnEEgTET1~B'VB^AE^E>E KTnTnTGEW@@1xEGYEEB^BfZB;dKTY15Ggd1GmSCT"e>VuTBfBfTTFCb2G2>GW1d*d2'2@7GNYb1XE1/@+hjNdM1PG2GRQMTe{aetBeBB{aAA@KC8KC817G1XEjj1Gj1GA61nG@iKiK*K1nTKnOKnO7G*(b2Eb2EIgTSgUSgU c-Bc-Bc-BAN^2E@>2>Bu0B<5GRW^DlGB6* X8cT[[x8% YE2TnEEgT]OggTT1~"NB2B@ ssL:8L  "7LL:O7mRmRW 6:JEEtiK1B1B1BMT1T1T1T1Q1$1nT1nT1nD1nT1nT$1}R;j1@j1@j1@jorj1@5W1@1+@1+@1+@111u161@61@61@b1@b1@b1@b1@IgTIgTIgTIgTW1W11@111V     eOueOueO>e)EkiEj4EeEkiEkiBBBBetB@uBiK}iKiKiKiKiKiKiKiKiKiKiKiK1nT1nT1nT1nT1nT1nT1nT1nT1@IgTIgTIgTIgTIgTIgTIgT?gY?gY?gY?gY?gYEkiEki fk fk fk fk fketBetBetBetBSSSSSSSSQ^Q:uX GGGGGG`^x`hhhhhhhh`^d`ololooEo^oZolol`^`QgTgTgTgTgTgT`^`*`*`*`*`*`*`*`*`.IvffffffffS^`SSGGhho]olgTgT*`*`ffSSSSSSSSQ^Q:uX DDDDDDDD`^d`ffffffffS^`SSSSSSS(.SDDDhD_lEvj1iolololozolol11kq i*`*`*`*`*`*`etetfSS^fffffua33_3IpRR33IIII1M??eww3wI *p rr~36V3IFF;c6m6<'8NI^_sIlIa?I!KD+<{{{\ 1{{{\ P[MM:,@bF %14OT1eO1Gt)n)@@_}3cJjtWL;3 <1'p$1S]]\T$jyByBKyyy1111 {1%1M161@K@@@B"m@B6@TT@X2XsZyiyZyZi'ZzizZiZzizzZjZjZZ 77Z(GdZZyiiyZlZZljlZZZZiZzizZzZiZiyyZyiy`i1;@;;; ;;;imm;iliZiZZiZ1i1y]EEE+EE+ss3b#I666t[[EEEE***iiiiiilll33WEEE22EEEEEEEEEEEE3m3mWlEEEI33333 = =3NE+EE+EE3NE+E+EEZ3%3 dlsKKf_ff_f_ff_f0ttttttttttHdHdHfHdHdHdHdHdHdHdHdHdd?dHdHdHdHdFFt3]tZttutwtwstepeppJp~ ttttZttttttttbtbtptttZZ_tttttttttttttttyttttttkCCtt1tttttStttttbtt>tttt ttt2tt/tttt2tt*tt"tt5tt!tt5ttetRte{bvttttttttttttttBBBBBBggggggggggffg`o'Qq!KgZMgDgggZg^MAMMlv&/O|dddd0dKMJKNN+M+++++-vd9KKKKdccKMuWWKKt[tmtmtmtmtkRRllt,c5qhh2Q}.Bwttttttttttiiiiiiiiiiiiii&&rruiigiFFFFFFFFF*FFFFFFFF*FFFFFFFF*FFFFFFFF*FFFFFFFF*FFFFFFFF*FFFFFFFF*FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF*FFFFFFFF*FFFFFFFF*FFFFFFFF*FFFFFFFF*FFFFFFFF*FFFFFFFF*FFFFFFFF*FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3333333343434 *iiiiiiiiiiiii**jNDN+D2KURUBg12}}}2}2}b2b77 `bUUAAzAAAA A a ))PWWW) yz l7k9:;>(>@>X>p>>>>>???0?H?`?x?@$@<@T@l@@@@@@AA,ADA\AtAAAAABBB4BLBCCCDTDE4EFGGGGHlII@IJtJK(KL8LMMPMMN$NlNOHOXOOPPQ Q|RRS8SSTXTU UpUUUVhVW$W|WXXYYZZ[[\\p\\\]]]4]L]d]|]]]]]^ ^$^<^T^l^^^^^^__,_D_\_l______`alaaaaaabb,bDb\btbbbbbc\cccd d,dDd\dtdddddeee4eLede|eeeeef f$f<fTflffffffgg,ghhhi,ijkklDl\ltlllllmmm4mLmdm|mmn|no,ppqHqrtrsst tu$uuv4vw$wxx xlyytyz|z{t||}}~8~H~LLT\(0d,hl,Tdd h T t0x HtH hpdT|L<<<H8HX|H4`$@`| 4\ (t@| \$8P|(<Pdx 4Hh(PlP (\,T0\0DXpDp<0th|,<Xp <Tdtx(8HDTD\tŒ¤¼À8p8Ƹ,hxTd<8|t<̤̼`ϐФјҔҤ$ӄӴ8Ԙpplhdۄ4tܴHhHXhx߸l $4 | l|l(@P d @d|4DTlTPDTd`p$dl,Dd@Xp|dllDD 0\dX p  L   0 l     L d | T<|@8h@X04, $<h\8$4Ld|4Ld|,DTd|  $ < T l    !!x!"#0#$%L%&d&&'l'|''(\(l(|() )*H*X*++@+,,H,X,,,,,-0-. .//@//00$0d0111112242D2p223,34X456<67`78h999::;0;<8>>?t??@l@A|B(BC C\CDDDDDE0EEFF4FG\GH4HdHI|J4JJK`KLLLtLLM`MN@NXNpNNNNNOOO4OLOdO|OOOOOP P$P<PTPlPPPPPQQ(Q@QXQpQQQQQRRR0RHR`RxRRRRRSS,SDS\StSSSSSTT(T@T\TtTTTTTUUU4ULUdU|UUUUUV V$V<VTVpVVVVVWWW4WLWdW|WWWWXX X8XPXhXXXXXXYY,YDY\YtYYYYYZZZ4ZPZhZZZZZZ[[([@[X[p[[[[[\\\4\L\d\|\\\\\] ]$]<]T]l]]]]]]^^,^D^\^t^^^^^___4_L_d_|_____``(`@`X`p`````aaa0aHa`axaaaaabb b8bPbhbbbbbccc0cHcdc|cccccd d(d@d\dtdddddee e8ePeheeeeeeff,fDf\ftfffffgg$g<gTglggggghhh4hLhhhhhhhhii,iDi`i|iiiijjj4jLjdj|jjjjjkk,kDk`k|kkkkkll,lDl\ltlllllm m$m<mTmlmmmmmnn n8nPnhnnnnnnoo,oHodooooooppp,p<pTpdp|ppppppqq,qDq\qtqqqqqrrr4rLrdr|rrrrrs s$s<sTslsssssstt,tDt\tttttttuuu4uLudu|uuuuuv v$v4vLv\vlvvvvvww w8wTwdwwwwwwx x$x<xLxdx|xxxxxy y$y<yTyly|yyyyyz z(z8zTzlz|zzzzz{{ {0{L{\{t{{{{{{{{{{{{{{{{{{{{{||,|H|`|x|||}}<}t}}~~l~~~~,H0\|,XPd$<Pld <\l@h,pT@D  4H\px<$@h|$D 8$@\t P$p (X8Xx8Xx8`x(H`p0@P`pp P8h0dD4X0H((dx Dl 0TP(pT<|ü<Ę4tŴ4t,DŽ hȰ8tɸ8t ˀ<̰H͌μpϴXа |Ѱ4lH|Ԝ\Xּd׸$\xش ,xٌ٤tL܈PxPސ $Dd$$@lh(x|lx4Tt LH T4l\L<P8h`40dd`0P< |4\H   0   td 0T$`TPX|Dl|DD|x(`@`0|@@  x !\!"4""##|#$\$%4%&&h&&''<'`'''())4))*..//T///0040l00001 1,1`1122<2223334H5 567@889:d;4;H;d;;;;;< <(?L?`?t?????@@$@8@P@l@@AA AxACCD$EEF(FDFpFFFGG$GLGhGGGGH H<HhHHHHII@I\IIIIJ$JhJK,KLM@MN8NNO@OPPTP|PPQXQRR,RXRRRS<SXStSSSTTDTlTTUUHUpUVVXVVWXWXXXYY(YPY|YYYZZ[d\eghhxhi,ijkhkltnqqr<rstdvvHv|wPxxy<zz{|P@`XT<4d<\|HL `Xlx`(<$tlXP`l T@`LLHx İ ɘ`̰ͤ 8PhόЀѼxԜմ|ۜh܌ޘ4X8LXdX HxLt0|t8\  `   p ,  P `!$!"$8%'(x)*H*|**++h++++,,H,-.0//01 22p233X33344(4T445556p778899:|;<=$>h?T@pABCEFDFGHIIJK@L,MMN NLNxNNOxOOPPpPPPQQlQQRRdRSSPSST@TUUVVLVWLWXYlZ[4\l]]@]P]`]x]]]]]]^^ ^D^X^t^^^^__D_X_t____``D``````a$aPaaaaabb4bXbbbbcc8cdcccdd(dTdxddee(eTeeeffHfffffgg4gXgggghh8hdhhhii(iTixiijj(jTjjjkkHkkkkll8ldlllmm@mtmmnnDnhnnno oTooop$pXppqq@qqqqqrr4rXrrrrss8sdssstt(tTtxttuu(uTuuuvvHvvvvww8wdwwwxx@xtxxyyDyhyyyz zTzzz{${X{{||@||||}}8}d}}}~~@~t~~Dh T$X@4`0dD$X@0t8 H| @` | T8x@l| 8PhP p@$L(@X,|x(p (t4`p$P|l,Dx4Tx Lxh,Hd (D`| < b+@    &x`$$r&&tDDvFFxHHzLL|RQ~VVXX\\{{            ! "# $%& '(   "$&(*,.02468?J?/??Z?[?\?]?Z?c?f?g?b?l?m?n?j?q?v?w?x?y?v?t?[????? #!:0*ln p))rQQtrrvyyxz|     ` `"$?S?S?T?T?U?V?V ?W ?=?>?3??ʿ? !?"?#$?"#?$?%& vqjzxa Tz 0`$$b)(d0/h75l;;rDDtFFvIIxLLzOO|RR~XV         `??ݿ??տ?????????ǿ?ƿ?ο??ѿ??Կ?ȿ wOlm\_` i j h k l n>n "" ???8T. $&6     !"#$%&'()*+,-./012 ` `"%(+.1 47:=@C FILORUX[?????????????   ?? ?& ?)#?,&&,)(/,(2/.?811843?>64?A99A<:D?=?J@@JC y~{y~{z|z|}}~~;2)m!  V  )A4>>< =i ==>,>>!=  =s=>?>>=,=}=>Q >?=B ==>>e>?" 0 2  :1 B  < "u : %: h; <~ "<Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain DejaVu LGC Sans CondensedDejaVu LGC Sans CondensedObliqueObliqueDejaVu Sans Condensed ObliqueDejaVu Sans Condensed ObliqueDejaVu LGC Sans Condensed ObliqueDejaVu LGC Sans Condensed ObliqueVersion 2.10Version 2.10DejaVuLGCSansCondensed-ObliqueDejaVuLGCSansCondensed-ObliqueDejaVu fonts teamDejaVu fonts teamhttp://dejavu.sourceforge.nethttp://dejavu.sourceforge.netFonts are (c) Bitstream (see below). DejaVu changes are in public domain. Glyphs imported from Arev fonts are (c) Tavmjung Bah (see below) Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Arev Fonts Copyright ------------------------------ Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the modifications to the Bitstream Vera Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Tavmjong Bah" or the word "Arev". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Tavmjong Bah Arev" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the name of Tavmjong Bah shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from Tavmjong Bah. For further information, contact: tavmjong @ free . fr.Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Glyphs imported from Arev fonts are (c) Tavmjung Bah (see below) Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Arev Fonts Copyright ------------------------------ Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the modifications to the Bitstream Vera Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Tavmjong Bah" or the word "Arev". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Tavmjong Bah Arev" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the name of Tavmjong Bah shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from Tavmjong Bah. For further information, contact: tavmjong @ free . fr.http://dejavu.sourceforge.net/wiki/index.php/Licensehttp://dejavu.sourceforge.net/wiki/index.php/LicenseDejaVu SansDejaVu SansCondensed ObliqueCondensed ObliqueAll Typographic FeaturesFonctions typographiquesAlle typografischen MglichkeitenFunzioni TipograficheAlle typografische kenmerkenLigaturesLigaturesLigaturenLegatureLigaturenFractionsFractionsBreukenAll Type FeaturesToutes fonctions typographiquesAlle AuszeichnungsartenTutte le FunzioniAlle typekenmerkenCommon LigaturesLigatures UsuellesNormale LigaturenLegature pi ComuniGemeenschappelijke LigaturenRare LigaturesLigatures RaresSeltene LigaturenLegature RareZeldzame ligaturenDiagonal FractionsFractions en DiagonaleDiagonaler BruchFrazioni DiagonaliDiagonale breukenZ   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~  sfthyphenAmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandicLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongsuni0180uni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191uni0193uni0194uni0195uni0196uni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEUhornuhornuni01B1uni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BAuni01BBuni01BCuni01BDuni01BEuni01BFuni01C0uni01C1uni01C2uni01C3uni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DEuni01DFuni01E0uni01E1uni01E2uni01E3uni01E4uni01E5Gcarongcaronuni01E8uni01E9uni01EAuni01EBuni01ECuni01EDuni01EEuni01EFuni01F0uni01F1uni01F2uni01F3uni01F4uni01F5uni01F6uni01F7uni01F8uni01F9 Aringacute aringacuteAEacuteaeacute Oslashacute oslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217 Scommaaccent scommaaccentuni021Auni021Buni021Cuni021Duni021Euni021Funi0220uni0221uni0222uni0223uni0224uni0225uni0226uni0227uni0228uni0229uni022Auni022Buni022Cuni022Duni022Euni022Funi0230uni0231uni0232uni0233uni0234uni0235uni0236dotlessjuni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240uni0241uni0243uni0244uni0245uni0246uni0247uni0248uni0249uni024Cuni024Duni0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni0259uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269uni026Auni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02AEuni02AFuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02B9uni02BAuni02BB afii57929 afii64937uni02BEuni02BFuni02C0uni02C1uni02C2uni02C3uni02C4uni02C5uni02C8uni02C9uni02CAuni02CBuni02CCuni02CDuni02CEuni02CFuni02D0uni02D1uni02D2uni02D3uni02D4uni02D5uni02D6uni02D7uni02DEuni02DFuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9uni02ECuni02EDuni02EEuni02F3uni02F7 gravecomb acutecombuni0302 tildecombuni0304uni0305uni0306uni0307uni0308 hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322 dotbelowcombuni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0340uni0341uni0342uni0343uni0344uni0345uni0346uni0347uni0348uni0349uni034Auni034Buni034Cuni034Duni034Euni0351uni0357uni0358uni035Cuni035Duni0360uni0361uni0362uni0374uni0375uni037Auni037Buni037Etonos dieresistonos Alphatonos anoteleia EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni03D0theta1Upsilon1uni03D3uni03D4phi1omega1uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03E2uni03E3uni03E4uni03E5uni03E6uni03E7uni03E8uni03E9uni03EAuni03EBuni03ECuni03EDuni03EEuni03EFuni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FAuni03FBuni03FCuni03FDuni03FEuni03FFuni0400 afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061uni040D afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097uni0450 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109uni045D afii10110 afii10193uni0460uni0461 afii10146 afii10194uni0464uni0465uni0466uni0467uni0468uni0469uni046Auni046Buni046Cuni046Duni046Euni046Funi0470uni0471 afii10147 afii10195 afii10148 afii10196uni0476uni0477uni0478uni0479uni047Auni047Buni047Cuni047Duni047Euni047Funi0480uni0481uni0482uni0483uni0484uni0485uni0486uni0488uni0489uni048Auni048Buni048Cuni048Duni048Euni048F afii10050 afii10098uni0492uni0493uni0494uni0495uni0496uni0497uni0498uni0499uni049Auni049Buni049Cuni049Duni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04A8uni04A9uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B0uni04B1uni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04B8uni04B9uni04BAuni04BBuni04BCuni04BDuni04BEuni04BFuni04C0uni04C1uni04C2uni04C3uni04C4uni04C5uni04C6uni04C7uni04C8uni04C9uni04CAuni04CBuni04CCuni04CDuni04CEuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8 afii10846uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni0500uni0501uni0502uni0503uni0504uni0505uni0506uni0507uni0508uni0509uni050Auni050Buni050Cuni050Duni050Euni050Funi0510uni0511uni1D00uni1D01uni1D02uni1D03uni1D04uni1D05uni1D06uni1D07uni1D08uni1D09uni1D0Auni1D0Buni1D0Cuni1D0Duni1D0Euni1D0Funi1D10uni1D11uni1D12uni1D13uni1D14uni1D16uni1D17uni1D18uni1D19uni1D1Auni1D1Buni1D1Cuni1D1Duni1D1Euni1D1Funi1D20uni1D21uni1D22uni1D23uni1D26uni1D27uni1D28uni1D29uni1D2Auni1D2Buni1D43uni1D44uni1D45uni1D46uni1D47uni1D48uni1D49uni1D4Auni1D4Buni1D4Cuni1D4Duni1D4Euni1D4Funi1D50uni1D51uni1D52uni1D53uni1D54uni1D55uni1D56uni1D57uni1D58uni1D59uni1D5Auni1D5Buni1D77uni1D7Buni1D85uni1D9Buni1D9Cuni1D9Duni1D9Euni1D9Funi1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5uni1DA6uni1DA7uni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1uni1DB2uni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1E00uni1E01uni1E02uni1E03uni1E04uni1E05uni1E06uni1E07uni1E08uni1E09uni1E0Auni1E0Buni1E0Cuni1E0Duni1E0Euni1E0Funi1E10uni1E11uni1E12uni1E13uni1E14uni1E15uni1E16uni1E17uni1E18uni1E19uni1E1Auni1E1Buni1E1Cuni1E1Duni1E1Euni1E1Funi1E20uni1E21uni1E22uni1E23uni1E24uni1E25uni1E26uni1E27uni1E28uni1E29uni1E2Auni1E2Buni1E2Cuni1E2Duni1E2Euni1E2Funi1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Auni1E3Buni1E3Cuni1E3Duni1E3Euni1E3Funi1E40uni1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Auni1E4Buni1E4Cuni1E4Duni1E4Euni1E4Funi1E50uni1E51uni1E52uni1E53uni1E54uni1E55uni1E56uni1E57uni1E58uni1E59uni1E5Auni1E5Buni1E5Cuni1E5Duni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E64uni1E65uni1E66uni1E67uni1E68uni1E69uni1E6Auni1E6Buni1E6Cuni1E6Duni1E6Euni1E6Funi1E70uni1E71uni1E72uni1E73uni1E74uni1E75uni1E76uni1E77uni1E78uni1E79uni1E7Auni1E7Buni1E7Cuni1E7Duni1E7Euni1E7FWgravewgraveWacutewacute Wdieresis wdieresisuni1E86uni1E87uni1E88uni1E89uni1E8Auni1E8Buni1E8Cuni1E8Duni1E8Euni1E8Funi1E90uni1E91uni1E92uni1E93uni1E94uni1E95uni1E96uni1E97uni1E98uni1E99uni1E9Auni1E9Buni1EA0uni1EA1uni1EA2uni1EA3uni1EA4uni1EA5uni1EA6uni1EA7uni1EA8uni1EA9uni1EAAuni1EABuni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EBEuni1EBFuni1EC0uni1EC1uni1EC2uni1EC3uni1EC4uni1EC5uni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED0uni1ED1uni1ED2uni1ED3uni1ED4uni1ED5uni1ED6uni1ED7uni1ED8uni1ED9uni1EDAuni1EDBuni1EDCuni1EDDuni1EDEuni1EDFuni1EE0uni1EE1uni1EE2uni1EE3uni1EE4uni1EE5uni1EE6uni1EE7uni1EE8uni1EE9uni1EEAuni1EEBuni1EECuni1EEDuni1EEEuni1EEFuni1EF0uni1EF1Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni200B afii61664afii301afii299afii300uni2010uni2011 figuredash afii00208uni2016 underscoredbl quotereverseduni201Funi2023onedotenleadertwodotenleaderuni2027uni2031minuteseconduni2034uni2035uni2036uni2037uni2038uni203B exclamdbluni203Duni203Euni203Funi2040uni2041uni2042uni2043uni2045uni2046uni2047uni2048uni2049uni204Auni204Buni204Cuni204Duni204Euni204Funi2050uni2051uni2052uni2053uni2054uni2055uni2056uni2057uni2058uni2059uni205Auni205Buni205Cuni205Duni205Euni2070uni2071uni2074uni2075uni2076uni2077uni2078uni2079uni207Auni207Buni207Cuni207Duni207Euni207Funi2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089uni208Auni208Buni208Cuni208Duni208Euni20A0 colonmonetaryuni20A2lirauni20A5uni20A6pesetauni20A8uni20A9 afii57636dongEurouni20ADuni20AEuni20AFuni20B1uni20B4uni20B5uni20D6uni20D7uni2100uni2103uni2104 afii61248uni2106uni2109uni210Euni210FIfraktur afii61289 afii61352uni2117 weierstrassRfrakturuni211D prescriptionuni2120uni2121uni2126uni2127uni212Auni212B estimateduni2132uni2134alephuni213Buni214Bonethird twothirdsuni2155uni2156uni2157uni2158uni2159uni215A oneeighth threeeighths fiveeighths seveneighthsuni215Funi2160uni2161uni2162uni2163uni2164uni2165uni2166uni2167uni2168uni2169uni216Auni216Buni216Cuni216Duni216Euni216Funi2170uni2171uni2172uni2173uni2174uni2175uni2176uni2177uni2178uni2179uni217Auni217Buni217Cuni217Duni217Euni217Funi2180uni2181uni2182uni2183uni2184 arrowleftarrowup arrowright arrowdown arrowboth arrowupdnuni2196uni2197uni2198uni2199uni219Auni219Buni219Cuni219Duni219Euni219Funi21A0uni21A1uni21A2uni21A3uni21A4uni21A5uni21A6uni21A7 arrowupdnbseuni21A9uni21AAuni21ABuni21ACuni21ADuni21AEuni21AFuni21B0uni21B1uni21B2uni21B3uni21B4carriagereturnuni21B6uni21B7uni21B8uni21B9uni21BAuni21BBuni21BCuni21BDuni21BEuni21BFuni21C0uni21C1uni21C2uni21C3uni21C4uni21C5uni21C6uni21C7uni21C8uni21C9uni21CAuni21CBuni21CCuni21CDuni21CEuni21CF arrowdblleft arrowdblup arrowdblright arrowdbldown arrowdblbothuni21D5uni21D6uni21D7uni21D8uni21D9uni21DAuni21DBuni21DCuni21DDuni21DEuni21DFuni21E0uni21E1uni21E2uni21E3uni21E4uni21E5uni21E6uni21E7uni21E8uni21E9uni21EAuni21EBuni21ECuni21EDuni21EEuni21EFuni21F0uni21F1uni21F2uni21F3uni21F4uni21F5uni21F6uni21F7uni21F8uni21F9uni21FAuni21FBuni21FCuni21FDuni21FEuni21FF universaluni2201 existentialuni2204emptysetgradientelement notelementuni220Asuchthatuni220Cuni220Duni220Euni2210uni2213uni2214uni2216 asteriskmathuni2218uni221Buni221C proportional orthogonalangleuni2221uni2222uni2223uni2224uni2225uni2226 logicaland logicalor intersectionunionuni222Cuni222Duni222Euni222Funi2230uni2231uni2232uni2233 thereforeuni2235uni2236uni2237uni2238uni2239uni223Auni223Bsimilaruni223Duni2241uni2242uni2243uni2244 congruentuni2246uni2247uni2249uni224Auni224Buni224Cuni224Duni224Euni224Funi2250uni2251uni2252uni2253uni2254uni2255uni2256uni2257uni2258uni2259uni225Auni225Buni225Cuni225Duni225Euni225F equivalenceuni2262uni2263uni2266uni2267uni2268uni2269uni226Auni226Buni226Cuni226Duni226Euni226Funi2270uni2271uni2272uni2273uni2274uni2275uni2276uni2277uni2278uni2279uni227Auni227Buni227Cuni227Duni227Euni227Funi2280uni2281 propersubsetpropersuperset notsubsetuni2285 reflexsubsetreflexsupersetuni2288uni2289uni228Auni228Buni228Cuni228Duni228Euni228Funi2290uni2291uni2292uni2293uni2294 circleplusuni2296circlemultiplyuni2298uni2299uni229Auni229Buni229Cuni229Duni229Euni229Funi22A0uni22A1uni22A2uni22A3uni22A4 perpendicularuni22A6uni22A7uni22A8uni22A9uni22AAuni22ABuni22ACuni22ADuni22AEuni22AFuni22B2uni22B3uni22B4uni22B5uni22B6uni22B7uni22B8uni22B9uni22BAuni22BBuni22BCuni22BDuni22C0uni22C1uni22C4dotmathuni22C6uni22C8uni22C9uni22CAuni22CBuni22CCuni22CDuni22D6uni22D7uni22D8uni22D9uni22DAuni22DBuni22DCuni22DDuni22DEuni22DFuni22E0uni22E1uni22E2uni22E3uni22E4uni22E5uni22E6uni22E7uni22E8uni22E9uni22EAuni22EBuni22ECuni22EDuni22F2uni22F3uni22F4uni22F5uni22F6uni22F7uni22F8uni22F9uni22FAuni22FBuni22FCuni22FDuni22FEuni22FFhouseuni2306uni2308uni2309uni230Auni230B revlogicalnotuni2311uni2318uni2319 integraltp integralbtuni2325uni2328 angleleft anglerightuni237Duni239Buni239Cuni239Duni239Euni239Funi23A0uni23A1uni23A2uni23A3uni23A4uni23A5uni23A6uni23A7uni23A8uni23A9uni23AAuni23ABuni23ACuni23ADuni23AEuni23CFuni2422uni2423uni2460uni2461uni2462uni2463uni2464uni2465uni2466uni2467uni2468uni2469upblockuni2581uni2582uni2583dnblockuni2585uni2586uni2587blockuni2589uni258Auni258Blfblockuni258Duni258Euni258Frtblockltshadeshadedkshadeuni2594uni2595uni2596uni2597uni2598uni2599uni259Auni259Buni259Cuni259Duni259Euni259F filledboxH22073uni25A2uni25A3uni25A4uni25A5uni25A6uni25A7uni25A8uni25A9H18543H18551 filledrectuni25ADuni25AEuni25AFuni25B0uni25B1triagupuni25B3uni25B4uni25B5uni25B6uni25B7uni25B8uni25B9triagrtuni25BBtriagdnuni25BDuni25BEuni25BFuni25C0uni25C1uni25C2uni25C3triaglfuni25C5uni25C6uni25C7uni25C8uni25C9circleuni25CCuni25CDuni25CEH18533uni25D0uni25D1uni25D2uni25D3uni25D4uni25D5uni25D6uni25D7 invbullet invcircleuni25DAuni25DBuni25DCuni25DDuni25DEuni25DFuni25E0uni25E1uni25E2uni25E3uni25E4uni25E5 openbulletuni25E7uni25E8uni25E9uni25EAuni25EBuni25ECuni25EDuni25EEuni25EFuni25F0uni25F1uni25F2uni25F3uni25F4uni25F5uni25F6uni25F7uni25F8uni25F9uni25FAuni25FBuni25FCuni25FDuni25FEuni25FFuni2600uni2601uni2602uni2603uni2604uni2605uni2606uni2607uni2608uni2609uni260Auni260Buni260Cuni260Duni260Euni260Funi2610uni2611uni2612uni2613uni2614uni2615uni2616uni2617uni2618uni2619uni261Auni261Buni261Cuni261Duni261Euni261Funi2620uni2621uni2622uni2623uni2624uni2625uni2626uni2627uni2628uni2629uni262Auni262Buni262Cuni262Duni262Euni262Funi2630uni2631uni2632uni2633uni2634uni2635uni2636uni2637uni2638uni2639 smileface invsmilefacesununi263Duni263Euni263Ffemaleuni2641maleuni2643uni2644uni2645uni2646uni2647uni2648uni2649uni264Auni264Buni264Cuni264Duni264Euni264Funi2650uni2651uni2652uni2653uni2654uni2655uni2656uni2657uni2658uni2659uni265Auni265Buni265Cuni265Duni265Euni265Fspadeuni2661uni2662clubuni2664heartdiamonduni2667uni2668uni2669 musicalnotemusicalnotedbluni266Cuni266Duni266Euni266Funi2670uni2671uni2672uni2673uni2674uni2675uni2676uni2677uni2678uni2679uni267Auni267Buni267Cuni267Duni267Euni267Funi2680uni2681uni2682uni2683uni2684uni2685uni2686uni2687uni2688uni2689uni268Auni268Buni268Cuni268Duni268Euni268Funi2690uni2691uni2692uni2693uni2694uni2695uni2696uni2697uni2698uni2699uni269Auni269Buni269Cuni26A0uni26A1uni26B0uni26B1uni2701uni2702uni2703uni2704uni2706uni2707uni2708uni2709uni270Cuni270Duni270Euni270Funi2710uni2711uni2712uni2713uni2714uni2715uni2716uni2717uni2718uni2719uni271Auni271Buni271Cuni271Duni271Euni271Funi2720uni2721uni2722uni2723uni2724uni2725uni2726uni2727uni2729uni272Auni272Buni272Cuni272Duni272Euni272Funi2730uni2731uni2732uni2733uni2734uni2735uni2736uni2737uni2738uni2739uni273Auni273Buni273Cuni273Duni273Euni273Funi2740uni2741uni2742uni2743uni2744uni2745uni2746uni2747uni2748uni2749uni274Auni274Buni274Duni274Funi2750uni2751uni2752uni2756uni2758uni2759uni275Auni275Buni275Cuni275Duni275Euni2761uni2762uni2763uni2764uni2765uni2766uni2767uni2768uni2769uni276Auni276Buni276Cuni276Duni276Euni276Funi2770uni2771uni2772uni2773uni2774uni2775uni2776uni2777uni2778uni2779uni277Auni277Buni277Cuni277Duni277Euni277Funi2780uni2781uni2782uni2783uni2784uni2785uni2786uni2787uni2788uni2789uni278Auni278Buni278Cuni278Duni278Euni278Funi2790uni2791uni2792uni2793uni2794uni2798uni2799uni279Auni279Buni279Cuni279Duni279Euni279Funi27A0uni27A1uni27A2uni27A3uni27A4uni27A5uni27A6uni27A7uni27A8uni27A9uni27AAuni27ABuni27ACuni27ADuni27AEuni27AFuni27B1uni27B2uni27B3uni27B4uni27B5uni27B6uni27B7uni27B8uni27B9uni27BAuni27BBuni27BCuni27BDuni27BEuni27E0uni27E8uni27E9uni27EAuni27EBuni2800uni2801uni2802uni2803uni2804uni2805uni2806uni2807uni2808uni2809uni280Auni280Buni280Cuni280Duni280Euni280Funi2810uni2811uni2812uni2813uni2814uni2815uni2816uni2817uni2818uni2819uni281Auni281Buni281Cuni281Duni281Euni281Funi2820uni2821uni2822uni2823uni2824uni2825uni2826uni2827uni2828uni2829uni282Auni282Buni282Cuni282Duni282Euni282Funi2830uni2831uni2832uni2833uni2834uni2835uni2836uni2837uni2838uni2839uni283Auni283Buni283Cuni283Duni283Euni283Funi2840uni2841uni2842uni2843uni2844uni2845uni2846uni2847uni2848uni2849uni284Auni284Buni284Cuni284Duni284Euni284Funi2850uni2851uni2852uni2853uni2854uni2855uni2856uni2857uni2858uni2859uni285Auni285Buni285Cuni285Duni285Euni285Funi2860uni2861uni2862uni2863uni2864uni2865uni2866uni2867uni2868uni2869uni286Auni286Buni286Cuni286Duni286Euni286Funi2870uni2871uni2872uni2873uni2874uni2875uni2876uni2877uni2878uni2879uni287Auni287Buni287Cuni287Duni287Euni287Funi2880uni2881uni2882uni2883uni2884uni2885uni2886uni2887uni2888uni2889uni288Auni288Buni288Cuni288Duni288Euni288Funi2890uni2891uni2892uni2893uni2894uni2895uni2896uni2897uni2898uni2899uni289Auni289Buni289Cuni289Duni289Euni289Funi28A0uni28A1uni28A2uni28A3uni28A4uni28A5uni28A6uni28A7uni28A8uni28A9uni28AAuni28ABuni28ACuni28ADuni28AEuni28AFuni28B0uni28B1uni28B2uni28B3uni28B4uni28B5uni28B6uni28B7uni28B8uni28B9uni28BAuni28BBuni28BCuni28BDuni28BEuni28BFuni28C0uni28C1uni28C2uni28C3uni28C4uni28C5uni28C6uni28C7uni28C8uni28C9uni28CAuni28CBuni28CCuni28CDuni28CEuni28CFuni28D0uni28D1uni28D2uni28D3uni28D4uni28D5uni28D6uni28D7uni28D8uni28D9uni28DAuni28DBuni28DCuni28DDuni28DEuni28DFuni28E0uni28E1uni28E2uni28E3uni28E4uni28E5uni28E6uni28E7uni28E8uni28E9uni28EAuni28EBuni28ECuni28EDuni28EEuni28EFuni28F0uni28F1uni28F2uni28F3uni28F4uni28F5uni28F6uni28F7uni28F8uni28F9uni28FAuni28FBuni28FCuni28FDuni28FEuni28FFuni29CEuni29CFuni29D0uni29D1uni29D2uni29D3uni29D4uni29D5uni29EBuni2A00uni2A01uni2A02uni2A0Cuni2A0Duni2A0Euni2A0Funi2A10uni2A11uni2A12uni2A13uni2A14uni2A15uni2A16uni2A17uni2A18uni2A19uni2A1Auni2A1Buni2A1Cuni2A7Duni2A7Euni2A7Funi2A80uni2A81uni2A82uni2A83uni2A84uni2A85uni2A86uni2A87uni2A88uni2A89uni2A8Auni2A8Buni2A8Cuni2A8Duni2A8Euni2A8Funi2A90uni2A91uni2A92uni2A93uni2A94uni2A95uni2A96uni2A97uni2A98uni2A99uni2A9Auni2A9Buni2A9Cuni2A9Duni2A9Euni2A9Funi2AA0uni2AAEuni2AAFuni2AB0uni2AB1uni2AB2uni2AB3uni2AB4uni2AB5uni2AB6uni2AB7uni2AB8uni2AB9uni2ABAuni2AF9uni2AFAuni2B12uni2B13uni2C67uni2C68uni2C69uni2C6Auni2C75uni2C76uni2C77uniF208uniF217uniF25F afii10064uniFB00uniFB03uniFB04uniFB05uniFB06uniFFFD dlLtcaronDieresisAcuteTildeGrave CircumflexCaron uni0311.caseBreve Dotaccent Hungarumlaut DoublegraveEng.altuni0268.dotlessuni029D.dotless uni03080304 uni03040308 uni03070304 uni03080301 uni03080300 uni03040301 uni03040300 uni03030304 uni0308030C uni03030308 uni030C0307 uni03030301 uni03020301 uni03020300 uni03020303 uni03060303 uni03060301 uni03060300 uni03060309 uni03020309 uni03010307 brailledotJ.altl.alt@%2s2%%:2SMAS2 }MA}G}G2~}K%}d|{zyzyx]yyxw%x]x@w%vutdsrq%rdqpq%poMAon@mlkji:jdiK%i:hN hgfg2feddMAdcba ba `_`d_^_^] \[ \[ ZMAZYXY(XWVUVUT]UUTS%T]T@S%RQP.QP.ON ON MK%MALK%LKJK%JIHGHGFEDCB}CB}A@?><6B<;:6B:S9@p8}76B6-6B543:20 /-,+-+1*))#('&'d&% %2$ $}#:#" "!!    @  @:%d%%A%:  }    :-:-  @d++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++n       !! #" >> ?? @@ CA ^^ __ `` aa bbcc gdkh qm srutvv zx {{}   wv             vv   NN                  ) **1,3244 55 66 A8CBDD EE FF YG[Z a\ hf nk pp sstt w , --.. /             c o o { qmicropolis-activity/res/dejavu-lgc/DejaVuLGCSerifCondensed-Bold.ttf0000664000076400007640000052726410724145723025602 0ustar simcitysimcityPGDEF\GPOS,!_!+GSUB.OS/2᧡6VcmapeH86cvt 먏@fpgm>Pgasp> glyfة>head:6hheap$hmtxe $zkern"hMzlocaZiJmaxp v- morx -:X79k:;k<&:$79k:<IWYZ\$%&'6789:   &&&*&2&<&&&&&&&&&&&&&&&&&&&8:&&&&9&A22$DHRUX+-/135&a4k$&28:<HRX\01:7Y89 :u<}\}&Y0:}}}K9;#$kDHRkkkkkK79:<D/\///////&&:K6 "=$7D<FHRUkVDXDZ\mk}k<<<<<<aaDDDDakk!D#D&1Dkk k k DD$7k22$a2DDHDLRDX}\aaaaaDDDDDDDDDDDDDDDDD}}}}DD1}&&2uu$}DNHYLRYUX\}}}}}NNNNNNuYYYYYYYYYYYY1&&$&2,2$}&DaHNLRNXN}}}}}aaaaaaaNNNNNNNNNNNNNNNN1NAkDKKKKY2KKKKY2KKKK<KKKK-7k&k-7k&k$79k:<IWYZ\$%&'6789:  $79k:<IWYZ\$%&'6789:  $79k:<IWYZ\$%&'6789:  $79k:<IWYZ\$%&'6789:  $79k:<IWYZ\$%&'6789:  &&&&& K$9<:}}K9;K9;K9;K9;K9;K9; DD$ DD$ DD$ DD$,2$}&DaHNLRNXN}}}}}aaaaaaaNNNNNNNNNNNNNNNN1N&<KKKK<KKKK$79k:<IWYZ\$%&'6789:  $79k:<IWYZ\$%&'6789:  $79k:<IWYZ\$%&'6789:  &9&9&&7Y89 :u<}\}&Y0:}7Y89 :u<}\}&Y0:}O7Y89 :u<}\}&Y0:}}}&79:<D/\///////&&:kDKKKK79:<D/\///////&&:kDKKKKK6 "K6 "=$7D<FHRUkVDXDZ\mk}k<<<<<<aaDDDDakk!D#D&1Dkk k k DD$,2$}&DaHNLRNXN}}}}}aaaaaaaNNNNNNNNNNNNNNNN1N$79k:;k<&:$ $99:9;9<99:9 79:;DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz "(.4   2i;# # Q D#UDqID bD#V1M1##DUDgDD]DUDDV|D!D#D!D!D DF#mDgDi#^D;UDD UD #2UD#D!D D#iIDUDDDDD  DUDqqUDUDUDUDDDDDbbD~DDbD|D  V1VDkDE#DDDDUDUDDgDMDDcDDUDUDUD<DLD'DR DRDV|D|D|D|DoD|D D D DDLDJD~DM1DD]DDDD DDDj*\DDD$DqDD#>i($=D]45678:  ;=GI?KKBOQCTUFWXH_`JhiLmmNooOtwPTUVXY;Z=RTVOOZZabdfoo))#$ "(.4:@FLRX^d3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D4,4m4m4D4m4DD4D4D4D4D4D4D4D4D4D4D4DJ>f  (mm#mPm#$ "(.4:@FLRX^d3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D4,4m4m4D4m4DD4D4D4D4D4D4D4D4D4D4D4DPr 8>DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz   2iR;## Q ]UdIVbRVRVgVRRV|!#!!R F#mgRRIR] dRdUUUURbRbR~Rb|RRVVky8VRRRRRgMcRRVRVRV;LRRRRR3PR||||o| R R RFRLJ~RRRFRRR[R>i$=D]45678  9:<>;C=R~TV))  jpv|44444444444444444444444444 . 6<BHNTZ`flrx~3f3<333<3<3<333f3f333f383<444444444!#  $*06<4433333333333333334D444444444444 rDFLTcyrl*grekHlatnX SRB ccmp2dlig8dlig@dligFfracLligaRligaXlocl^  &.6>FNV^Zd@pt*000&LM P$=IIKKLMOO      ""$$&&((**,,..0022446688:;==??AAGGQQSSUUh| ^h "(.4:@FLzyxwvuzvqjWSQQRQ Q *4Vh     $ #!  @ Q &6DFHLQRVX\]e OLID 2 "  ""> *4IOILIWWIVAJ 4 "*2:BJRZbjr7F75F51F1/F/F~F~ "2F20F0&.68F83F3F4F4 "9F96F6:F: LM  !"# 33fPq PfEd `p~!A?Xauz~_cs [w{-KcEMWY[]}  & 1 : < > I p y !!!"!&!+!_!""""""" "-"C"H"a"e####!#%#(#}##$#&&<&G&g&o')*+ !$PXatz~brCw{0Ph HPY[]_  0 9 < > G p t  !!!"!&!*!S!""""""""'"B"H"`"d#### #%#(#}##$#%&8&?&`&i')* +ogUQNIHGFE75' }|<:840,$ ~yws >;431.,&YLF@=;D&H=;   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}byqz{`jyV\byb`{{N\=VTq\f{fb--){bb??)fD)y V%hNf s{juy jdy{Hy`yqq 33Nyj``'''Dbjyyb3'b=D)fRR5fVVVJ!/TfDs04 <, %Id@QX Y!-,%Id@QX Y!-,  P y PXY%%# P y PXY%-,KPX EDY!-,%E`D-,KSX%%EDY!!-,ED-[!%!!\4r)@ 74632#"&!#5dFFeeFFdQk}NppNOpp#!#a++}#3 333!!!####5!#5!?'VWW>VVWV'?0Vhhj$+273;.54673#.'#.>54&'l meXmpmc.LYLYm[^Xa;#7 +'t;Ǵ, T=FV WJJ`, '3"32654&'2#"&546!3#2#"&546"32654&:22::33:Ϭ;23::33e-dI_.8)'# 5467.54632#.#">7#5!#3%326_QsZفϜ..Botha[h 6=ŸRC13FPPSCz9|r`R\ DqxxWlLCS1#+ $%'3~~}ZZ̄x``] 56'5^}}2)x`yXYy`x4.(9 %#'-73%DXYEY''{xF !!#!5!l'&? >=!^XTЊVmc!!d5` 74632#"&eFHddHFeNppNOppB3#&mV %26&#" ! lPPllPPl  XHIuwwpqK 3535%!3Qyy{]#>3 !53!57$54&#"lnn}{{jdB%%ДJ*>32!"&'332654&+532654&#"#wkj{m |32!"&'332654&#"#032# !2#.#"2654&#":U;6Qjm}c]OO]\OOu44qffiѯددj #!#!jշi{)_#/! $5467.54$324&#"3264&#"326Y稟DSTCCTTC#TfhRSgfT̥Υ$Ⱦ'wwuuշc %"32654&#"543 !"&'3326t\OO\]OOl;UQjm}d{دد55  iafi 4632#"&4632#"&dFGddGGcdFGddGFd-OpqNNnnNppNOpp/ 4632#"&>=!dFGddGGcy^X-OpqNNnneSϊXmBF 5Eq~-F!!!!~~BF55~q10Pw "%4632#"&>32#>54&#"#4eFGeeGFeo^}~unkckmNppNOppY""++y N54&#"326#"&5463253>54&'.#"3267#"$'&5476$32+yp[YmmY[p(PŬP(ŁcfR~uUWPan]3srrvvrs&gxwLHLLG}'갏`NTFEjśewzDC^TT~~|KJ}~|abo#5333!53!3!moqy\yy1y#;V$353#5!2!32654&+32654&+VvvyyƤf}vM^# !2#.#"3267]5uUwr#žƇ&ef@AV%32+53#5! !]}}jy,GE+yyV353#5!#5!!53#5!!53V|`{{F{yy!V353#5!#5!!53#5!3V{U{{yy!yM.#"3267#5!# !2(ûK5ӞuZƱ&&xNLhi@AV{353#5!#!#5!#3!53!3VMyyy yyyydyV  353#5!#3VyyyyyV"533265#5!##"&uFDWF̬K^X+yy"V{353#5!##5!# 3!3V98yyy!yy3yyV 353#5!#!53Vzyyy-M353#5! !#3!53#3M+*M_ayyByyysyQK353#5!#5!##3Q+֬ɫyyyy7ByM %2#" ! "~RS~\BKLByjjddV=353#5!2+332654&+Veuveyyy㭑M $! ;#"&2#"RS/m.Dhjdt/92)BKLBV$3!.+3!53#5!2%32654&+Pn)ĊF>WM7Lv~~v \W`yÌMyyy!y)7332654&/.54$32#.#"!"$r¬cŠ vr^ʻHbvrZd+78Ǹ,,gf]a4742I!53!#!#5!3N{4zyu-y?#5!#326#5!#! Ԭ\yyyy&U###5!# #5pvjny\yy#y,!# ##5!# ! #5!#"}!'?\yykyy  3!53 #5!# #5!# 3!53q#b[{Ԧb?:yy;yy\yy5yy5!53#5!# #5!#3=pr.-ryyy9yyByD 35!#!!53D"}{{hA!#3!xxB#'m!53#5x2xO # #lvv;-!5f۾~cf#zfxKD(3!5#"&546;54&#"#5>3 5#"3269?cns`gfVfxY`FGJZyTP?{Wc""leedl*!7#5!>32#"&'!532654&#"(ee(8U`bPPb`Uy#xSQQSyf實KD# 32#.#"3267#Ӷdierfqn|`u L& (**هπxK !54&#"3263!5#"32#5!V_cPQb_V?9(ee(i尦ySQ,*QSxKAD4&#"!32673#"32FURGnp|g'Xҩwηzt#(8|#.#"3#3!53#5354632|eD>H@MF NLsyyy5yK9D,!"&'53326=#"325!4&#"3265V`ge}ty(ee(9V_cPQb_V`!!ifySQ,*QSy尦8353#5!>323!534&#"3?9pt>L`Zty#x}_Tyy5i#y? 4632#"&3!53#5!eIGddGIe]TQooQOonuyy5yw9 4632#"&#5!#"&'53265dJFedGIe%6zBf5;B4TQopPOony\PG^{?)53#5!#5!#3!533~shpYxy#xyyyy{X? %3!53#5!yyy#x?tD0>323!534&#"3!534&#"3!53#5!>32_Bhs7KU]rr8IV]rLj7cuyjayyhyyhyy5y]Vc?D353#5!>323!534&#"3?9pt>L`Zty5y_Tyy5i#yKD %26&#""32hdRQefSSfTq+)*VD #32654&#"%#5!>32#"&'3!53U`bPPb`U(ee(Hi實ySQQSHyyKVD#3!53#"325!4&#"3265V(ee(9V_cPQb_V!yySQ,*QSy尦5D#.#"3!53#5!>32fHEhx.pP3US̵\yy5yok OD)7332654&/.54632#.#"#"&Vf tagA_Uuf{tad:KY)w}KF@F%)!mnEB6>%5,Kq#53!!!32673#"&5> (4:7ŌyJyuDVZ*'3!5#"&5#5!3265#5u99p;OaYt'Ry_T+yky]'!#5!##5!#i%t}goyy`yyRX'#5!## ##5!#ٴ}fqhq';LyyRfyyX'#5!#3!53 3!53#5!#vu{vkHtyyFyyyyyy9\'#"&'5326?#5!##5!#?+zh,l@f=<;H$_g'rgtubMJGc%5yyuyy@' 35!#!!53A%ck{ky9+w*#"&'.=4&+5326=467>;#"3Ԕ,`77`,Ԇ]eJYtvWJey1>$npsyspm%=1x^"^#*3265467.54&+532;#"+[dKXwuZKd[Ԕ-a~77~a-Ԅ^"^x1=%mpsyspn$>1F?#"'&'&'&#"5>32326ET[U XEWWZV [E?VR:BHIWQ9DH@ #"&54632!53?eFGcdFFei}1NnnNOpqJVL"%%#&73#.'>7YNMmm5jf cZR^ ^kӝ%#&%~ zj}#.#"!!!53!53#534632blYLi\=z{:lalyy=yD=T /2654&#"'7.5467'7>327'#"&LRssRRsqp,a71b4)`84b\\\]~Ϛ.k@?l.͞Ӛ8o6?i/Ӛ#$!53!5!5'!5!#5!##5!#!!!!3%j6{qz/jyZu;uyy'yy#utNuy##  8=5C#.#"#"&'5332654&/.5467.54632>54&''k^WIR1QyfgKEĴK\k]`NT0RyghKGİC(*Rc(*SeVVJC/B/Hbsh+/ZZRJE/B/Hcrg,.Y!N-=f:X#O*"3267>54&'.#"&54632#.#"3267bbaabb툉bbaabbmOMNNMNmnNMNNMOӰHN_ ^I]lk^BXnmmmmnnmmmmnWWV{zVVVUWVz{VXV%'^j\Y6a!,!!3!5#"&546;54&#"#5>325#"326f2h.tMnx~UUEO VAL[AK748D^\96zr~ZYA>KA>CJ- 55ZZ-F!#!Lc!!d55$<T3#'.+3!53#5!2%32654&+2#"&'&547>"3267>54&'.#6Z6i52MNNl|Y32!53!57>54&#"T@HbuZuZKB8OrRZ`T{]T_SQ*>32#"&'5332654&+532654&#"dO:^\lpHHVMGOTXR%INFA;HVidH^o]z{POVRPWTD@?FI@7f3# f3V'3!5#"&'3!53#5!3265#5~92bC6=O_Zv'Ry}SGyyyny;%!####.5461f}Nݸ  4632#"&eFHddHFeNppNNooo!#"&/32654&'76um+[/(M 69.@m4VZ /-BD 535733͓^eei}^6c!!2654&#""&54632f2gD==DE<32!32673#"&'#"&546;54&#"#5>325#"326RFURGEdnp}f~&xFPoo]ffVf|rxb`HPMUXҩPNNηyuMONN?tWa""MSnqq`pKoD&Fz}KAf&HC}KAf&Hv}KAf&Hk}KAN&Hj}f&C?f&v f&kN&jK-#"5432.''7.'7%.#"32654&&&N':+-.Z~R)**DdUUddR9m%. ?n4d&>nI7g꾼k?V&QyKf&RCKf&RvKf&RkKV&RyKN&Rj{F 4632#"&4632#"&!!~O78OO87OO78OO87OE~=XX=>XXZ>XX>=XX!-' .#"326=#"&''7.5327\QEcTRFbR;=dHL;;hANZXYYHv12VKu)21V*f&XC*f&Xv*f&Xk*N&Xj9\f&\vL*V #32654&#"#5!>32#"&'3!53U`bPPb`U(ee(Hi實xSQQSHyy9\N&\jLP'qD$K&q;D}'uH$K5&ukDo'x$KoD'x.DM^k&&uKf&FvM^k'u&Kf'kFM^'!u&KN'vFM^k&&uKf&FlVk&'uK#&GLOK )54&#"3263!5#"32!5!5#5!3#V_cPQb_V?9(ee(#Ți尦ySQ,*QS'x]xxVP'qD(KA'qHVk' u(KA5&u}HV'!u(KAN&v}HVo!'x(KoAD'x'HVq&({KAf&HlMk'u*K9f'kJMk&* uK95&JuM'!u*K9N'vJM' *K9'/JV{k'6u+k'uKV{#'353#535#5!#!5#5!#3#3!53!3!5!VM꭭yyyyy\yydyf8%353#535#5!!!>323!534&#"3?C9pt>L`Zty3gx߉_Tyy5i#yV o'|u,V&yV P'qD,'qUV k' |u,*5&uVo &,x]?o&LxV &,!|u?' %3!53#5!yyy5yVV&,-`?9&LMyV"k'u-w9sf'kRV2{'C .?2' N?$)53#5!#5!#3!533~shpYxy2yyyyyzXVl'v/?l'^vOV2'y /?2'A OV'o/?'OV'y/?'yO353'%#5!#%!53b?2?yyuyyNu%3!53'7#5!7 8Çnj9yyy`ixaiQKl'v1?6'vQQ2K' 1?2D' QQKk&1u?f&QlT&eQQ9K"353#5!#5!##"&'533276'3Q+֬LX6zBf5;Z!ɫyyyyNWPG5.7By?9D&353#5!>32#"&'5332654&#"3?9p6{Bf5;B4>L`Zty5y_TߣPG^{+i#yMP'qUD2K'qRMk' u2K5'uRMk'"u2Kf'zRM!'%#"3!"&'&547>3!#5!!53#5!!53r{[[Z|J{{1{yy49VLIW:3!KD 4%26&#"4&#">3232673#"&'#"32hdRQefSSHSQFDk nm}g#vA>zrTҩPPL϶ztMOMO.)MVl'v556'vUV2' 552D'S UVk&5u5f&Ulyl'v6O6'vVyk']u6Of&k;Vyo&6zOoD&Vz;yk&6fuOf&Vl;oI'z7,oKq&zWIk&7u,>&WI!53#53!#!#5!3#3N{4zߴyuy,Kq!#53!!!3#32673#"'&=#53> (4:7GFFFyJyDVZ@AED?o'u8*V'yX?P'qD8*'qX?k' u8*5'uX?t&8wY*&Xw?k'"u8*f'zX?_&8xg*o='&Xx,r'|:Xf'kWZ5r'_|<9\f&kU\5&<_uDl'v=@6'v]D'!r=@&vD]Dk&=nu@f&]l?8|%3!53#5354632#.#"MFeD>H yyy5yNL:>|")2!22)53"#676327654'&+32654&+qx{TVll>?JUvJKIHv\_NNxciiyY[fE+>?;;VH*+3276'&#"#5!67632#"'&'!53#5*+`b((((b`+*mR(EDevuuveDE(8ߺSSXXWXSSS)()(Sy#x$32)53!532767654'&'"+]w l]TSTOf"ucyyHLOK 326&#"5>32#"&'!53U`bPPb`U(ee(8ߺʯxSQQSywM^6$3 !"$'332#"M5Tuxs#ĿƆ')__@AoA@M/# '&76!267632#4'&#"#&'&#"32767]5Uw47LL\6{Ae0# 32547632#4'&#"#&'&#"32767#ijceig]6zBf;B4e99f8977|`:; LZY& (4TSP#$^{sهBAddgh@@xO" ! )53"#6763276'&+jN>?JU}caab}yY[fE+GEV'!#!#3! '&5476767676;+"3gzl ~wPSRTLuyyiiޤcu"uOOLH*+54'&#"3276#3!5#"'&7632!#!,*_b())(b_*,ƈ9)DEduvvudED)QmiSSXW6XXSSwyS() ()S KD'3%#"'&'5332?6'4#"'&76 "276&x tZolie );`l:#Ve*(()*)S)^E? $!.0#X Y``_``aV)3!!#3!!#!#38|F{{`|`\`yM"'&#"#6763 ! 5!3276s]`ƆUU&6T~'\SZTR> SSqpjU熢*#.#";#"32673# $5467.54$32om |ju}/;| m|j֭j{x((ѱ#aV "'533276'#5!#5!!53#5!uZW"${U{{pVD KK+y!Dn^P{|1#&'&'&#"3##"'&'5332765#53547632|e #>H ffMHIGe ">H !feMIIF  9&:9y5\[  9&9:y[\ M467632#4'&#"#&'&#"3267#5!# '&76!2EL\6{AeEP#$^{XY&&xN&&hi  D #5!##5!#! '&%$'&_Pe2@;$ kk\kkȵu8:5727654'&'53# 4'&#"3!53#5!>32[88&/t]^.,RKabn8 L`.,tň9pRSZpp`y,@lccIC#$_R54NO#yy#x}_TjiV #5!#3#"'&#$U!mQ yy<=cN"<3#3!53#53#5!#]߭LSyy yyV! 3!3!53#5!#672#4'& F8L9}.E=Bf9^4[yyyyy!w P$&?'47632#4'&#"#5!#3!533!53gi6{Ae$}:yyyCyyi}%%M ~i?t0%#"&5#5!#3265#5!#3265#5!#3!5#"&TBh:s7KU]r#r8IV^s9:8cujayy\hyy\hyyy]Vc\VK5332765#5!#5!###"&uZX"#+֬cI KJ+yyy7hN"?VD 353#5!>323!534'&#"3?9pRSu L`.,ty5y_Tjj+yy߇54NO#yM  ! %276!!'&#""~RS~TI \ JT HTTIddy L&2FL^c&RLN , !2676323!534&#"%2#"!~RMJKKݬLFWD#}^!yy͕, dyBKLBLVD(6'&#" 32676323!526&"A5| x<9>6Д#eRQSS{//+)A yy"=%!2+3!53"#676327654'&+Qᄄ >?JUeuFEEEvewvwxyyY[fE+WVUV*V63276'&#"47632#4'&#"67632#"'&'3!5*+`b((((b`+*hh6zBf;B4(EDevuuveDE(HiSSXXWXSSTSP#$^{S)()(SHyyV9332654&+53#5!#32326?#"'&'&+3]euve-8#%$$=e@lwVZ"+yyyrw)"5/b$$JM;>^ -yy1%# '&5476?67654'&#"#6763232673SUʶ//DDXYrvPPɛcsH32uvnn47401]f43GHJ,|{޸cd87+dZrvOD2%#"'&546?>54'&#"#67632327673pZtsJ:13as=?et_`UllBC_! 43btCD fUV5%>6B"#77m !TULM)%##@F%&>?wJ7(332673#"'&7#"'&54%6676756'&'&72+ V0'B>CeFLp}!"9+9ueC +wYQ?7tG9LN[f %T7E,O|.X,9Kq$#53!!!;#"&'533276="#"&5> (46zBf5<@ŌyJyuDѣPG/-}` I"#6763!#5!3!533?KVjIz>LI[fE+-yy,K)#53547632#&'&#"!!32673#"'&5gi6{Ae= 35!3#!5#63235&'&#":ҕ|rƵaC;5fB=#,\9yyyy%/GP 9E#6235.#& 35!3#"&/3267I;5fBz6rg$H;<=f@l,hz+3GPuyy%cGJMbuD35#5!!#!3!!53DVFM}{{h @'#!53!5#53!#!nkhck{XyyfyZ+w?L!"&'332654&+5!#!ej{m |<}{qGTy((H~h?L 5!#5!#"32673# $5476q{};} m|k֐dGఢ((yT?`L'!267##"&546;5!3!d*k|m };kTy((Hf+w{'#6763 3!!53!5767!5!654'&#"lnlkn8iB[}{^q@A{j@@dB%tu}g9CJq[kZ[GHV!"&'332654&#!#5!#5!j{m |{֙H((Hny>`L' !"&'332654&+#5!#5!>j{m |mRe54y((HCyߨ5)q#!3##"&/3327676'&+5#53>PXAw8fQ\)AhqyMU "R"#/0+yq#q+&l>!5!3!!!!#!5!F6666S Ѣ q%#5#q%V >k'?>'V f'@>'Kf'@ GVV2'-/V9'M/?9'MOQV '-1Q9'M1?9@'M<Qk&$uKf&DlQV k&,u f&lMk&2uKf&Rl?k&8u*f&Xl?'*P'qD?'*'L~?'*'L~?'*'L~KAD'KP'qOD''u$KO'C'DP'q{DK'qMH&.#"32675!5!5#5!3## !2(ûK5L䳳ӞuZƱ&&xxxNLhi@AK9D3#53&'&#"3276%!"&'53326=#"325!#3*+_cPQb_++?`ge}ty(ee(LjyPS6SR3!!ifySQ,*QSyyMk'u*K9f'0JV{k'lu.k'uNM_'xZ2K_D'xRM_P'qUDK_'q?Lk'ux?`Lf'=w9f&lV >'=>'V ']>'K'] GMl'v*K9f'0JV*326#5!! '&5!3!53#5!#!#5!#-Q(vcLq>o>x5{kyyyy yyQKk' u1?f'#Ql .!3264&#"33!53!3!53&'&54767~G/2EF1/}% K oqqm K3 5#"326i%KԖK=QOE12DE12DQ9?cns`gfVfxY`FGJZl#T짧TC 7LMlMMyTP?{Wc""leedll'vKf';=l'v-f'5p'#z$Kf'D'u$K5'DVp'#z(KAf'HV'u(KA5'H p'#z,i&%V '}u,##&%Mp'#-z2Kf'5RM'u2K5'5RVp'#z55f'#UV'u555'#U?p'#Xz8*f'JX?'u8*5'JXy)&6FO)D&V)I'V7,)Kq'WV{k'3u+k'uKK#.:%#"32#5!72'&7#454"%54&#"326%Eee(P):~\ c$wV_cPQb_V* ),*QSxu S,OND|.Xi6D35!#!)'6767D"}{!cd%'hAmZbdm@'35!#!)'6767A%ck{%c^,'y9+wmTh[v'u$KN'DVo'(KoAD' HM'KP'qDM'KP'qDM'!u2KN'vRM''u2KP'qD5P'q D<9\&qU\?!%754'632'#767&1&#5!?T|Q_Ѣv {xޙk}^rJI UeOx?D5%754'632'#767&1&54&#"3!53#5!>32S|Q_Ѣw |x>L`Ztň9pޙk}^rJI UeOi#yy5y_T,q'%754%#53!!!632'#767&1&/T|Qc> Ѣw {wޙk}yJyZZrJI UeOw9'#5!#"&'53265ň6zBf5;B4y\PG^{K# ,8326&#"5#"32#5!>32#"&'!54&#"326VU`bPPb`U(ee((ee(V_cPQb_Vߺʯ1SQ,*QSxSQQSyi6IV"D".:>32#"&'353#"32=!4&#"3265%326&#"V(ee((ee(?V_cPQb_V?U`bPPb`USQQSHxySQ+ ,QSy!6iiʯ!!'75373 3!53!3! ;'7#7Q V'׏Q>=o>mJ4a NZ `+1~Z yy1y3+ŏ! *'7&!27#&'32673# '&'&#"JQۇUw`hQrS$_Ƈ&5ö\žNZ'f )ZJ<T<]mj (#"''7&5327#&'3267&#"#Ӷ良L\dfDEsMze E7|`u 98dqLyVŠ(V5*P1hxI>"353#53#5!#3#!53V߬zy yy!!53#'7!#5!3 N{LQDz6P&yTZL5ZyLGOCDH#"'&/&'&'&'327654'&/&'&547632#&#"326?sb ?xU["If*38"FAC[f 90HJh'$$$<<fn&;>^ ), qQ%%*LLD@{I"%5MOR6 nb$$JM@9'3#5!#!6326?#"'&/&%ck{ک60#%$<<f@lxUZ"Hy9+wa%$JM;>^,V32+#!5#32$$#!"3676Hvu# >|8f\yy "R!KD'#5!>32+32673# &3264&#"Ԉ?cns_hfUf?xY_EGJZyTP?{Wc"""ldlKD !54&#"326!#3!5#"325V_cPQb_VLj9(ee(i6yySQ,*QSKD !326&#"!53#5!>32#"&'V_cPQb_V:)ee)Hiʰy6ySQQS* -326&#"354632#.#"67632#"&'!5U`bPPb`U6{Ae5PG^{Q)(QSyKD>3 #"&'332654&#"L"Ӷdierfpn|`t ۶**'πxE8.%54'672!"'#767&'&57632#&'&#"SFmt { OPPU78hDGޗutHG UeO 0@@sx^K9 .54&#"326#"32#5!#32673#"&5V_cPQb_V(DEee(4B;5fBz6i6Q(),*QSx}{^GPK#/%3!5#"325354632#.#"#54&#"326V9(ee(6{Ae532#"FTRHnp|h' ҩwηzt7cD 632767&'&#"#>327327#"'&'#"'&'7#TR$# !8|h'*-4YjE*UiTI .F"^ŧJTSR%_7[ztv+^*, 0]Qxft؛VgY7147676#&'&'";#"7673#"'&'4767.bpd C@So;64>s;6Q=8EL$dʋO]||,sEP3E)'1-?E.8F5XO6CQ&<9=KDQvK71#"'53767676'&+5327654'&##56}|]Oʳd$LE8=Q7;t=46;nT@C dqb,[vQDK=9<&QC6OX5F8.E?-1')E3PEK7C#"'53767676'&+5327654'&##567327#"'&'?|~^Oʳd$LE8=Q7;t=46;nT@C dqQٝ+,4YjE*UiTI ;QEK=9<&QC6OX5F8.E?-1')E3P:Y+^*, 0]QxKD8%67654'&+5327654'&#"2!"'&'$%676b34?>""}@?44aB!:"9K[\\[5fK>]KF23`I@>x@>L_34 %{ fGHGGg/P4"w9'#5!3##"&'53265#53ňNJ6zBf5;B4y1yPG^{\yK9 6#"326=%!"&'53326=#"4763!54632#.#"cPQb_V?`ge}ty(ewt6{Ae5:L5byyyyK\+&643232#54#"#"&54767&'&#"#327654'&'LQ3 ^h8?_1q?-Sf`[7 'LaZu'x@_T+yyˇiy?+353354632#.#"676323!534&#"3?6{Ae5L`ZtyŌPG^{^**yy5i#y?9:353354632#.#"67632#"&'53326=4&#"3?6{Ae5L`ZtyŌPG^{^**yy}PG^{}yi#y?%3!53#53#5!3#4632#"&LjeIGddGIeyyyfyVy1yuQooQOonB'#5!3#"'&DŽ%(RCWQ]y8<=c0??' '!#3!53#LjOyyyy5;%3!53#54767#5!67653( c0,R c0&Byyy #=KFxY#=L< ;%3!53#&54!2#5!3#&73;-ƛ d|fyyy nxxI _`?9U#5!32673#"&5Lj5A<5eA{6x f{^GP?`(!"&'332654&+5!#3!53#5!!5dj|m };cfvTy((Hf}yy#xw*`'0%#"&5#5!#3265#5!#3265#5!#3!5#"&@Cg:r7JU^s#r8JU^s9:8cuja+yy hyy hyyy]Vc*V`'0%#"&5#5!#3265#5!#3265#5!#3!#"&@Cg:r7JU^s#r8JU^s9:8cuja+yy hyy hyy!y@]Vc?9D=>32#"&'53326=4&#"3!534&#"3!53#5!>32_Bh6{Ae5323!534&#"##"&'533265Lj9pt>L`Z6zBf5;B4y_Tyy5i}PG^{?9D+353#5!>32#32673#"&5474&#"3?9p4B;6fBz6>L`Zty5y_T\}{^GPhi#ys'353#5!#5!##3s{{-&]Q|]z0}}}V{zKD  322767!!&'&"dd)%$*Rn#)*#+)`VWaS_aRs=, )%#"3!"&'.5467>3!#5!353#5#!53rKK=df[Z{I||{W~99W%)=?)%PK=2324'&'&3276=#"'&54767! #"'&#@R2SV2PB#nMMoSS"MP"SSoLM(xjlͩjx(POpoOQj=f=jQOopOPL%-!#3!53&'&767#676'&<OӂҰ̰̀)77.65yuvyy%ts^E,`a,2/``/5'33265#5!#3!5#"&5fHEhyt0/pP =US̵yyyok 5332765#5!#3!5#"&5fHEh<=t0/pP =USfhyyyok 59'+33265#5!#327673#"'&=15#"'&5f)$EhytB;fBz6hh/NLp') =U*)̵yy{//$#PST}o655XD#.#"3!53#5!>32fHEh<<.pP3USfhyyyok 59D##.#"32673#"&=#5!>32fHEhx4A<5eA{6В.pP3US̵}{^GP}yok ?TD%3!534632#.#"6{Ae5323!5B;6fBz6Їyy1/GPyys]'&33!.'&'&+3!53#5!2%327654'&'&+uJ23%i4  3fvTGSm\1:0",/m !!>yA[yy5y5 Ko@7J3<>H*  s]'&3#!53#5!#32767>7!#32767654'&#u$SGTvfqs3  4%32m/,"0:1\ 7AnK 5y5yy[Ay>!!W  *H><3O9D<7=332654&/&'&54632#.#"#"'32673#"&5Vf tagA_ACUuf{tadKGH(*4B;5fBz6+w}KF@F%*LL!mnEB6%5NNc{^GPw7!&7632#.#"#"&'53276'~fLFeC>K1|h6zBf5;B' ]\NL:;ђeSPG/Iaw9|.54632#.#"#3##"&'53265#53+53MFeD>I 6zBf5;B4'NL:;yPG^{\yVyK98!326?#"'&76'&#"#5>32-B;5fBz6h7(A>CdFLqWS/GPSlQjP:LN\n7(3#&'&''$547632&7632#.#"%&#&7676'c CeuLj+9"!}pLFeC>B'0V +w+YO,E8Sޘ% ͧe\NL:Ft7?QX.|?^D%3#!!5!4&#"#>32ӊ (498ōyyJyDVZ,9Dq#53!!!32673#"&5> 5A<5eA{6yJy{^GP*'%#5!3#3!5#"&=#53#5!!32656t~~99pttD;OaYXVy1yy_T\yVy1y%kKH,##"&'&'&54767!5!27654'&'5!@]]YSJbbnnLT,,]]0%7979&0r@lIC#$FDKaan@ybpppp`y?'$#5!727654'&'539Lj[98&0t\^-,SKab\Ry3pp`y,@lccIC#$?' 3!53 3!53Sit}oS'Ryy`yy?'! 3!53333!53 ڴ}q !iqyyfRyy?H?>32'.#"3!53 3!53[+{g,l@f=<:H$grtubMJGc%yyuyys)!53#5!##5!#3Nssyyydyyy@9)'35!#!!332673#"'&=A%ck{&5A<5eA{6khy9+w{^GPSR}@I'"%#7475!#!367676%3276M|l%ck{53Oe# Py9+w 8\*"rUd"?`L'!"&'332654&+5!#!ej{m |323!5qhB)\Qe8wAXPy)0/#"R" UMyyq%3!53&'&54632#&'&#";PXAw8fQ\)AiyyylMU "R"#/0)q#5!##"&/3327676'&+qOPXAw8eQ\)BhyyMU "R"#/0)8q!7327673#"&54632#&'&#"\Qf8wA갰Aw8fQ\\/#"R"  "R"#/8w@ %6'&$"'&762ɚ976 ! ~ 5565655?'iKD8%276765'&'&#";#"2# $54767&'&54$_28#:!Ca53?@|""~>?34IcL]>Kf5[\\[F {% 43_L>@x>@I`32"/gGGHGfsI3&'&#"327#5!#"'&54763254632#.#"YAEiCEABa,4ihim$$6zBf5;B4sT=mmmn((Ts6PG^{`?'t7 '14632#"&'$547232#5!#&'&%&#&7>5dIGdcHHeR>gr*'W!*c w5TQopPOonM3Uy\8?QYO,X8KV*'533!537#5!#7!#3y~rKmg%q YƈVy+yy?yyXy xs?' 353#5!#!53sKyy5yyKV .4&#"32653!53#"324632#.#"V_cPQb_V>(eeED(6zBf5;B4H6yySQ,*()Q(PG^{q)3#3#!#53#5353276'&'&#"#7>32hB)\Qe8wAXPXyyyfy)0/#"R" UMq)%3#!#53#535&'&54632#&'&#";3#㈈PXAw8fQ\)AiyyyfyMU "R"#/0)yK %*54&#"326#!5#"32#5!!!!V_cPQb_VǪ(ee(v&ci6ۇSQ,*QSxwwK`@3?3!5#"32#5!!!"&'332654&+5!54&#"326V9(ee(vdj{l |;c[V_cPQb_V}ySQ,*QSxwTy((Hfi6KI <A54&#"326276!367676#767#!5#"32#5!!V_cPQb_V_ V%v64Oew{(ee(ci6UF%rw 8\*"SQ,*QSx,QqE#53!!!3267;32654'&/&'&54632#.#"#"'&'#"&5> (4:7!eNDtah! _BBUtf{sbcKGHYd^hHŌyJyuDVZ)I>KF@#"%*LL!mnEB6%5NN8,79#53!3'&7632#.#"#"&'53276'!32673#"&5>}fMGeD>J2|h6{Ae5F#53!!!32767&57632#&'&#"672!"'#767'#"&554> (4:8OOPU88gEFns { GŌmSyJyuD+(Qv0@@sx^nHG UeO +AEk~89>C#.#";!>32#"&'5332654&#"3!53+3!53#5354632|eD>H@9p6{Ae5L`ZuĈMF NLs_TߣPG^{+i#yy5yy5y?s&:)53#5!67632#.#"#"'&15332654'&/&'&RlUuf{tadKGHYd'fNDtag `A.y#x(sAT!mnEB6%5NN֋)I>KF@#"%*L4?|!#!53#5!!!![v&cy#xwwQ{)#53## ##5!##53## ##5!#uQID`Is{uQID`IsSsJCCuCCsJCCuCCQ#5!##5!#S^^dV03!73#"'&5#4&#"#5>32332765#5u:pQR4B;fBz6giLa--u'xx_Tij{^$#PSTy˄75ONyd9=%#"'&5#4&#"#5>32332765#5!32673#"&=#7:pQR4B9fBz6giLa--u4B;6fBz6_Tij{^$#PSTy˄75ONy}{^GP}Qx!53#5!676323!534'&#"3VX],%00Ii56XJ3>KCC5;;sCC=K,,_CQt053354632#.#"676323!534'&#"3QX$')*B"&+%0/Ji65YL1?MCN[^ ~-(E4;;sCC=K,,_CQ$47632#"'&#5!#"'&'5332765! 0. !A.0 !X'DC#')*B#&+. -,>Dg\./ ~-(EQ#.#"3!53#5!67632B/,D'(rgY_-31I 0.99eCCDj>Q533276=#5!#3!5#"'&QB/-D''qY_13H0.99eCC4Dj>Q-*533276=#5!#32673#"&=#5#"'&QB/-D''qX*'"B+')#13H0.99eCCE(-~ ^[Fj>Q&4#!53#5!#32767676?!#32767654/&#E5.6LCiVggh" "lS`!!G)), $>M* 000 30#98Qj{#53## ##5!#uRIC`IrsIDDuDDQk6#"&'5326?#5!##53#((CF)A('%/ CfJQLB }+*(8[DD`DD~#67WOhC7`~>=3VO.C7`~&'3_O.`72764'4#2""#"1jLKKLjt'&l&'STTS"'&4763"kKKKKk1"#""tSTTS'&l&'Q"3276'&'&#"#7>323+5C,;5B$M*9994YYXw.o44~/+CCQ"3+53&'&547632#&'&#";XXYY3::8+M$B5;+CCC[+/~44o.wy!f3#'#`政fy!f373`xY3P qHY@3x)3!#kBkB llx!#kBx&`gL&`hLcR*J 533##5#5򩏏5 332673#"&qeYYeq5INNIH)RN 462"&HOlNNlOUa++8>>LC)'L?A2T{./KK:ϧC##'$*+Ia^ =&% +,Ne/0Q$7#53#3!53'3!537'#5!#oMSStPuuTYG|K)DDCCCCDDQ"3+53&'&547632#&'&#";XXYY3::8+M$B5;+CCC[+/~44o.w\#!5ީr\\#!5!ީr\x(\#!5!ީr\PP\!#!5!3ީr(x\)5!3~>=3%>=3VO(VO.C7`C7`fCffvffkfuVyfPN qffM fg5uf)Nvf)Njf2#5676'&'&#"769(OH:- !2BS]47Q%nn&1&8"#13wf0fzfflf3ݩm30'WLf#!#X˔fxxg9'vfufg5u 3 #54767FB?>*hE+oOP7'&547632'638%''#:>+)&ZY: ')>61+8B8Y(Bw/.&'&547632A$9XZ&(,>:#''%x./wB(Y8B8+16>)'cf3#^frCf vvf%#5353#3ü%33##㞼yVq!5!#Tƪ'c532654&'3#"&;B%) SK/b2~2&84(P&6`*r|>"3"'&47632""#"1jLKKLj&'l'&TSSTT53533TüO#5!##ގŎaT% #53533##⎎üOa5!Pa9N#"&'5332656zBf5;B4fPG^{9m!32673#"&5>5A<5eA{6f{^GPKpvf"K|pja"'7)qw\V)r >=3FB?>p*hE+oOP7Rozfoxfr3mOr#!#57x;yr#"'#"&'32747&532745!T12T[cq D? s CE 3 HHs zvlfrkf ;gruf==!dddcy^X-OpqnneSϊXm7f3# f~)+'jf&#  4632#"eFHddHFypponf'Of'T^f'Tf&f'Bf&+3&ΐ$V%VJ6W)3!V#V(D=V{+M "!#3!53#2#" ! {{{{~RS~5BKLByddV ,V{.73!5333!53qmyyy\yyM0QK1e53!3!#!##3!53#51on]n:o~ooooZZM2VzVV=3J 3 !#5! !53KUPo4gSo*ZI75<M&/67654'&'3!535&'&57675#5!#%,%TT$-Lٍ٬ٌ-$TT%N2rr1yyYne$\yy\$en|61rr2 ; 113!#"3!535$'&6+5!21#5!#676[RxjMbyR[T(ag"T1ywiyyi~%y_.eyy7R#%!53!56#"!3!&5! d-{llz.MMܸ} 0 '5 5}\A<}V &u5&uK_f'Yf'?Vf'?3f&ͧ?' K_A,6737'&'# 76 &'&7676LUtk6'1!NMI !!HRtt:s-z_,())a`* Q3,_c"wBmy$:"),+ `W6XYRtVc(-%3276'&'&+5327654'&!#",8HJU *5B;/#&34!0kKIVZa Ta^yxDYK0m)\oTS"f-S''&7#5!76'&'53:0Sa.1pi( 8tC^̸Gwgnk!4fMJ,:K'0&54767632#&'&'&#"32 7626&"@wuYolie (<`l:" {V7dRQSS^E? $!.0#X+XLY6H#&'&'&#";#"32767673#"#&'&5476767'&'&54767632d (;`l: -=z+6H $ -E~rB #dmml^ ߇OL#PADwufcl$!.05$#1?*G*(=5 #<LO~H?7<`E? ?U!#!3 #5276# 47mll8n|'(t`ȱ芭!yo]Ll& ?VD3#5!>32!4&#"Lj9pSR>L`Zy_TjgXiK,!'&"!276 32o&,-&l$**%HAQ6sy{T?3' %'&5#5!72籡nnP!p|qRy3G?')53#5!##5!#3!533~?xshpYxy6xx~yyyy{XA%3!533!53&'&'&5676Qo}tiYS)N;fC3>$yyyCyy+'%M  3V'!#5!3265#5!3!5#"&'=O_Zv92bC6VXynyRy}SG?')#5!6767654'&'53BPe%8&6t<^-6In>yQWmNy9L,;UQwapKq,`?U)&'&54%!#!;#3 #5276#&'&5L_O}-mN+77Hk%*t`ȱݯG=2V!yCxLbo]Lls8KDR?'353#5!#3!53!3?ȉvty5yyyy5ytVE 32654&#"%6#"&'!U`bPPb`UiMque(HiHJQSKUD% #5276# 32#.#"'(tbƱdierfqnTo]Ll& (**هK' %264&" 476)hdRQSSޤ}TZ+Ꞌy?{'#!!327'&5m,Wx`T/pyyFyf'z6<'uKVx' !! '&476!27654'&#"cc@zHPTTjkSUPH-qLq~a^f^a~q?'8!32!327654'&7''&'&'&54767#5!&8;Ik?kI;8&(],C<5wH]ZVw5\(dTiO"0B'/ 0yuh1D(dTlG /C}KP#%MY %2#"!&'&! "LRS\BKLBkh(dИKYD%26&"!&'&32hdRQSS``T_d!b)bMU9% #5254# '&!2#.#"2+uaǴ3Uwr#ž\q[Llkf@AfKU!7653#"3 #5276# W#Gehg>iY:8n|'(t`ȱD3g< edo]Ll& (V)UPo%47632#4&#"3##"&'533276}h=Pl/6D4|j>Om06D 3vbZN9]ywcYN9[` )##5!33j𤜜%lHmy?#!3|s|"|nT^ #&'#&#"#6$3 !5276t %9te#sxTu_`]Bݔ֡oA@__yRVJ #&'&'#&'$#664td &)tML='ZskT2513,9'Gq hLj56'&76?6'&'&#676?7673'&'&rk./!uRQ<*9ep_$LZI/!uRK'0'9es\)G0>\(dTiO"0B'/ /zuh1A(dTlG /C0 7rrtRE 032654&#"762#&'&#'&5%6#"&'U`bPPb`U/6zV-e -`LkUiMque(HiOJXO<,:)L-^JHJQSKD# 32#.#"3267#Ӷdierfqn|`u L& (**هπxw9 4632#"&#5!#"&'53265dJFedGIe%6zBf5;B4TQopPOony\PG^{M!32&'&#" ! u[TSARSBN~RS~B逡vddKD # 32#.#"!4!3267#Ӷdierf92l.7|`u L& (**هdZyWhxKD 332767!&!&'&#"#>32!"&L t`|7.k28freidLxhWyZd'**ڳV=353#5!#32+332654&+Veuveyyyry*V 326&#"!#5!>32#"&'U`bPPb`U(ee(HiʯTFxSQQSM^# !2#.#"3267]5uUwr#žƇ&ef@AfM353#5! !#3!53#3M+*M_ayy9yyysyV' !#3!53#!`7z' yyy_LLVE%53%6#"&'!!!532654&#"LZiNpue)j?V_bPPb_VyeHJQSyppiM^332#"#6$3 !"$M'ƿĘ#sxTu@AoA@__M^ #4632#"# !2#.#"3267eFGeeGF<5uUwr#žƇ&yppo`ef@AfM^ ##"&4632332#"#6$3 !"$eFHddHFó'ƿĘ#sxTuoop%@AoA@__Vk&LuV&LuJ-#"&'5332?654&+3!53!#!#5!!2MoJNuFDX"u\|pz` C@Op""^XK W_yyuVk&JuM^% 3# !2#! !!S M5uU rFV \Nwǡy6V ,V &=|uyV"-*3#32#!53!#"'532667#53276&+EwlmG_GdJ2SuEJ$ PDSPy #rciL yM^X$yLL3V&/)53!3!53#5!#!#5!#3 %32654&+GMDloGOOydyyyy yy ciN y!23!534&+3!53!#!#5` gu\|pzLyy;yyuV{k&QUuV{k&OQu-'rZV{!"#4'&#!53#5!#!#5!#3#ZZyyy-yyy$V32)53#5!#5326'&+]wnlygRUL"xcyy-?MQV%V %3!53#5!#5!_${yyyyV $%3!!#5!#3#4'&#!"#326'J-lZZmY/yyF>hmV(3 %##5!# 3!3!53!53 #5!##5ߐw68L86w߭y!yy3yyy\+yyy!yV" $'3 6&+5326& #>3 o]*;/}| mw5z/>߽i=x{+##V{353#5!#5#5!#3!533VMyyykyyyyCDyV{'uOV{.%#"'532667#5!#3!53!2SuEJ$̬NdM^X$yyyyM0V{+M2Vz!#3!53!3!53#V$NMyyy-yyV=3M^&I7-"'5332?#5!# #5!#yuE`.rYVraD^Xb,ryy"yyb:!M'3"3!535"35#5!#2#5276'&##?ZZ?THLsuZ@SS@ZGyyyyyyy0yyM )53#5!#!#5!#!#5!#3#4'&;myyy0yy0yyF !#3263!#!#3 ) kk<{o*>uy MVS',IcV)53#5!#3 !#326*o~kkijyyy J>M^$3 !"$'3! !5!! #r!S5N w VFso5A9V(353#5!#376! ! '&#3%2#"VRS}Ԭyyy/ddη3y\BKLBV"$4$3!#3!53#"!53>%#"3L7MW?F)nv~~47yyy#M=yW\HHKDD>6&6  '&547676%>7326&" D]u!Pup :\zB%(n8?' *%327654'&+5327654'&+7 )53#5PkR[IUzPGcNRBVkGNNbay*/b].4$&HD *y_88 GGtKKy5y?!' !3!53#5!#Rmyy5y?'!73276=#5!#3#'&#!"#!3? jlZuZk{$"y yyl5赬KADH?X'+##5!#3!533!53'3!53'#5!##5xYrgq54!"#5$3 # 332767+=-vd\dN#|sIE1#9]#$@au| &A1?'3!533!53#5!#5#5!~vtň;t:v=yyqyy5yykwyy?'o?')53#5!##5!#3!533~?xshpYxy6xx~yyyy{X'7>=#5!#3!53!#"/2B($?8QDpVڤyyyy5}?'3!53#5!!#3!53!<{cyy5y|yuu:?'3!53!3!53#5!#!#5!~vtň;t:v=yy}yy5yy?yyKDR?'353#5!#3!53!3?ȉvty5yyyy5y*VDSKDF;!'!#5#3!53##;muňm'ߨyy59\'\JV5 =32?'&#"3276'&#"'762 /3!53#"'&762#5!B "@1 L-$))$-J! * ( )n+ P77L:7Q`^Q7\GGyyqGGxX'[?'%3#'&#!53#5!#!#5!#~kZ;t:v32#"&'53265J>L`Ztňǎ`9p6{Bf5;B4midyy+yxy_T PG^{?!f&jv}KD#"!!32673! 32Ʌll.7|`u D wWhx&(TODV?LN&jw9Mi'*3254#!#"/2767676=#5!#32#!53mT$?8QDpB2~}%VmmRRyy!Ӑy?''3254#53!3!53#5!#!#5!#32#~mvtň;t:v<3 y}yy5yy?yy!Ӑ%353#535#5!!!>323!534&#"3?ǎ`9pt>L`Zty+yxy_Tyyidy?f&qv?f&oC9\&Wz?'!"#'&#!53#5!#!#5!#3MZfZF;t:v=y5yy'yyy'3265!!#!#'&+3 )53#"#!5#lNmR~n*~QmM>yYMy!Y&#"#53#5!3#&+32)5332764'&#)X aa Y)v?u?wF?BB?FznxzOFyt/11/MKiD   %267%!."J!GNNRL*$+ )ӸyɲaRVN+#3#!2767654'&'&'&+'35#!32#^HmlxD[OE))5TS6g\y Liޤcr#/u2OL $Ihq.32#!53#53!33276?654'&'&# 3i/--S @vgz5m.+">%B @ AkJ 5y5yJyH $9e6V %3!53#5!3!_$3{[yyyy%R?!X !3!53#5!3!tňumyy5y1V3!53#53#5!#5!!_${~yyqy'?!'!!3!53#53#5!#5! tňmReyyysyIyߨVJ+3!53#5!#5!!2#"&'5332?654&#_${_ MoJNuFDW#uyyyC@Op""^XK W_?9''3!53#5!#5!!2#"&'532654&#tňmR>PS6zBf5;B4>Lyy5yߨjlPG^{uiVo'zN?oOD&zXnV{)3!53#5!##5!# 3#L9yyyy!yy3!?')533!53#5!##5!#3#kpYx?xshy{Xyy6xx~yy;B{ #3#!5#!5# 35!335#535!3Vȅp ǿLyy\+yyy(pyy8!5#5!!!#5!#3!533!53#5LjCshpYx5gx߉yyyy{Xyy3 35!#!5#!5# 35!335D{pVDŽp Ǭ-yy\+yyy!yh(##5!#3!533!53##yrgqYy{'x~yyyy{Xyy6:V!53!3!53#5!#!#5!#3!ȫLydyyyy yy!f?''!53!3!53#5!#!#5!#3!vtň;t:v=y}yy5yy?yy;LVt3!35!3#!5#!#!5#!3ȫL*|y yyyydyy`?'3!35!3#!5#!#!5#!3vtň;t:v=m'y?yyyy}yy5!VJ 135!3#!5#!#!5#32#"&'#32767654$#έ۬t"XDEuOKnNkyyyy-yyyW KX^""pO@Cg?9'-35!3#!5#!#!5#32#"&/32654'&#~8;t:v=M>4B;5fBz6SP yyyy5yyoi{^GPkljMo^'zJXKoD&z}xI!53!#!#5!3!N{4zyu-!f;!'!53##!#5#3!mmy5!ߨ;L5<V\'%#5!##5!#3!53g'rgtO_yyuyy yy )53 3!53 #5!# #5!# 3##b[{Ԧy:yy;yy\yy5!X')53 3!53#5!##5!#3#/{vkHtvuyyyyyyyF;!53!#!#5!!#5!#3!N{4z#yu=yy!f;'!53##!#5#!#5!#3!mmNv=y5!ߨ5yy;L8H!53!"$5#5!#;#5!#3!Ouy;yyőyyy!f?''#!53#'&'&5#5!#3#5!#3!ve&G;t%)v=y:9iyyByy;L8/353#5!#!23!534&+39` guyyyyy;y8KV ,3 k' quM?X5'umVJ1 35!3#35!3#!5#32#"&'#32767654$#D 2Lu"XDEuNJnMkyyyyyyyW KX^""pO@Cg?9'- 35!335!3#!5#732#"&/32654'&' Ks~x?xLnL>4B;5fB{6ROyyxxyy#Li{^GPklhVJ{)%!3!53#5!#!#5!##"&'5332?6sLMoJNpEEW#Uyyyy yyC@Op""^XK W?9'$#"&'53265!3!53#5!#!#5!#~6{Ae532>32+32673#"&3264&#"rFURGEdp}g~'yFPpo\gfUf{rxb_GPMUҩNN6-ηyuMONN?tWa""Mn`pfD2 #"'&'53327654'&+5327654'&'&#676R[\\[MZZbh 88ia53?@|""~>?34bgpVTDgGGHGf%]-.43_L>@x>@I`32\|a_'- #"&54632#5!#3!eIGddGIeO9QooQOonyyy D1"26&326=#"%54&#"#>32>32#"&eRQRRLGTQFDjn|h#wA?yrҩPL:(϶ztMOMOMKD 32!&"LQS)K #"!265eQS)*!53##!#!2654&#!#PmUL m/`Um@|BXjdd,+ -7"&462"&4632!53##!#!2654&#!#6MMlNO56MM65OO8OmVL m/`UmXxTV:~BXlbr^t0%#!#3!2654&#!#3!2654&#!#3!53#_W mmó^y'mmó^y'mmmTMYJsy=S^h`>R_hx>nM'3!5#"&546;54&#"#5>325#"326W(b>\djFH32+32673#"&3264&#"W(b>\djEI33><6UUW@@W:g[`a[B32>32+32673#"&3264&#"*,54-o,i>FOAO _Kv-2xFuyjPF:A@6t@NoHL><-306t]\k ++rdB@c^++++`Zcb"@J05~*yw<}4=M1#5!>32#"&'!5%3264&#"WV@@V6<>33><6B.---JCf[a`[gM/ 54&#"3263!5#"&54632#5!6<>33><6UW@@WV:g[`a[^CJ---.BM4&#"!32673#"&54632,54-aGNAQ ^t\[k AqeC@c^M326=%!54&#"#>32#"&*,54-aFOAP ^t]\k ArdC?c^M2"&54767&'&54632#&'&#";#"2673::gg::198>B#$B=! ')NP'' >AG ` 65UM9'' ''8NU v34*"#B"#)43DG64M22#"'&'53327654'&+5327654'&#&#676A9:hh:9199=A##C=! ((NP&( >BF a 75UN8'' ''9MU v34)##B"#(53DG55M/+#"&'53326=#"&546325!4&#"3265ٵ<|A@ NJ]LW@@W6<>33><6|:8VnB---.KCg[`a[fM #"&54632#5!#3!?.-??-.?WuVV -==-+=<CC=CM_!53#5!7#5!#3!53'3VVHpAG8LCBCCCC0M0>323!534&#"3!534&#"3!53#5!>32*bAhgVH#/5;HH#.6;HVV#[>J\:6rsCCm9OJCCm9OJCCCS307M&53#5!>32#"&'5332654&#"3MVV$]Geh"N)@"%* '0=8ICCS4/tqGY\ |,'4CK9V^CM26&" &54632?4355jijk>M>32#"&'5332654&#"Ms?C@ GATGEOdcJHnqFBM 4632#4&"M35ѐijM #"&5326544БijM1 !3264&#"'#5!>32#"&'3!53l6<>33><6WV@@V]W:f[a`[^CK.---BBME#53533#32673#"&5XXȨ!%#TYm|XCCL&01XGKeMX3!5#"&5#5!3265#5U#]GfgW&2<8ICR4.tq1Cm;W_CM!53##!#!2654&#!#MDU60xtEap32#"&'!5326&#"l_gf }ty(ee(9V_bQQb_V!!ifySQQSyfʰ?'!#3#3!53#53#?O'yyyyfyV9%3#"&'53326=!53#5!6zBf532#"&'l6<>33><6VVW@@W:f[`a[WCCK.--- M#"&54632#.#"3267s?C@ GATGFN (&PN(( !=C##A=9919:hh:946GD34)#"B#"*43v UN8'' ''9MUM\#.#"3#3!53#5354632\@+'-)tmVZZ|0\-r**?GKC=CCCIae MH#5!3##"&'5326=#53 V``"M*@!%*!UUCCEY\ },'4CECM/'!##"&'53326=#"&54767#"3265bU<|A@ NJ]LW@LI.s>33><6C|:8VnB--~TR`a[fM\3!#"&5#5!#3265#5Y$]GfgWhI'1<9JB<4.tq1CCJ:W^CM3!535#535#5!3#4632#"&lVVVVVVV@.->>-.@CCCCC-==-+=<M#5!3#"'&T4bj*7eMCxH!"6#M '!#3!53#VuVVVVCC=CCM5!'!#3!53#MuVuVVVVCCCC=CCMD '14632#"&#&547232#5!#&'&'&#&7>5?/,??,.@&BGƐU7> hK -=>,+=<*/zlCr#-1,PE1OM?##5!32673#"&5V!*%!@*M"BEC4',| \YM3#"&'53326=#53#5!V"M*@!%*!VVCEY\ |,'4CECBM 53#5!#353MmmmLCBBAM=>32#"&'53326=4&#"3!534&#"3!53#5!>32*bAhg"M*A!&)!#/5;HH#.6;HVV#[>J\:6rsםEY\ |,'4CEm9OJCCm9OJCCCS307M0#"&5#5!#3265#5!#3265#5!#3!#"&?*bAhfWgH#/5;HYH#/5;HgVV#Z?J[ ;5rs1CCm:PJ!CCm:PJ!CCRB<3/6M)#5!>323!534&#"##"&'53326= U$]GfgWI'1<9"M*@!%*!CS4/tqCC6K9V^EY\ |,'4CM+53#5!>32#32673#"&=6=4&#"3MVV$]Geh!)&!@)M"'0=8ICCS4/tqEC4',| \Y K9V^CM53#53#53##3MNNZ:Nj;CEEE_CM  &546322767#3&'&"A?4f5/ut/6o-45-M\%-!#3!535&'&547675#676'&tnRhhSooQhhQoo##""C ARRA CC@RR?) 55/ 55Mz;=332654&/&'&54632#.#"#"'32673#"&5R@UI=B*;S^**6xI@MI=?$/Rw-.!)%"@)M#AE)'#'**G`]<<&$! +*Mc^7C4',| \YMc!&7632#.#"#"&'533276'O@|0\,?*'/ q NB"M*@!%*>`33 }**!F&P7. |,'(5ME$#53533#;#"&'533276="#"&5XXȨ!"M*@"%)|XCCL&sY\ |,'E5KeMX%5#5!3#3!5#"&=#535#5!#32658IOOU#]GfgJJW&2<8CCCR4.tq2CCCm;W_M,##"&'&'&54767#5!27654'&'53ˠd;:84/=>EFy05;;d"##s$##GGO;m(%'%)65>>>eY5B[M$5#5!727654'&'53VV9$#Id;:4/=>GCu|=>fX5B#GGN<67(%M#3!53 3#53 BIOFCCqCCM 5!#5!!53MZC1DCdB:jMe5!#5!!332673#"'&=MZC1[!)&!@)M"~CBCdB:uC4',| .,[EMG"#747#5!#5!367676'376MZC1" 2QP@W#7 PP CdB:K2Sk>;'M#"&'5332654&+57!#5!}?[CNEYNV^bZ%D1 .Css{NR\VYa{dBM3&'&"#276 &54632.{.vIVVIHRRH7&$K7D&DV&%u*&EuVK&%*K&E*V&%*&E*Mo^k&uKof&vV&'uK&G?uVK#<'KK#4GV&'K&G2Vo&'>Ko&G V7&'kIK:&GkLV&('uKA&H'UV&('uKA&H'UV&(KAD&HV9&(K9AD&HV&)u8|&IuM&*uK9 &J0V{&+7u8&KuVK{#6+8K#uKV{&+7u&KuVo{&+8o&K<V;{&+68;&KtV9 &,|9&L$V{r&.o|?r&N|VK{&.f?K&NtV{&.f?&NtVK#V/?K#3OVKP#qDn?KP#qDoV&/;&O$V~&/VE&OkWMr&0|?tf&PM&0p?tN&Pv-MK#T0?KtD#PQK&1!?&QvQKK#1?KD#uQQK&1?D&QtQ7K&1k3I?ID&Qk[M&2'uK&R'54UM&2'uK&R'54UV=&3u*Vf&StV=&3u*VN&SvV&5u5N&U#VK#55KD#3UVKP#q>D5K #qV&55D&U$y&6^uON&Vv;yK#f6OKD#VyK&6']^uOKN&V'I&7u,K&W$uKI#|7,KKq#WI&7,Kq&W7I&7kI,7Pq&Wk0I?K&8*K'&XI?9&8*9'&XI?&8*'&XI?&8'u*&X'JI?&8'u*f&X'JJo&9u]V&YK'9K]''Y,r&:|X6&ZC ,r&:|X6&Zv,&:jAAX&ZjW,&:|XN&ZP,&:KX'&Z &;uXN&[ &;uXN&[5&<`|9\N&\Dk&=nu@f&]DK&=n@K'&]D&=n@'&]8&KtK&W$uX&Z9\&\K&DgON&VK&$KKD&Db&$uK&DKk&$'uKKf&D'&$'uK&D'&$'uK&D' &$'uKl&D'&$'uK&D'CK&$'uKK5&D'VK&(KKAD&HVb&(uKA&HV&(KAV&HVKk&('uKKAf&H'V b&,}u?'%VK &,}?K&L3MK&2KKD&R5Mb&2uK&R5MK&2'uKKf&R'45?K&8*K''aX?b&8u*&XJ5r&<_|9\6&\C K5&<_\'&\R5i&<`|9\&\5o&<Zu9\V&\K_'K_'K_'K_'K_'K_'K_'K_'&'~ &u &Ĵu&g2&ź&&ƄY&hY'Y&]Y&gY'Y'='-' & &Ĵ&b&ź?V'?V'?V'?V'?V'?V'?V'?V''' u& z&Ĵ&h &źL'{F'|?3&?3&3&3&Ę3&3&ű43&,3&Ƣ3')'&&Ĵl&b&ź'{'|K'K'K'K'K'K'-'6l'u&&Ĵ$&._&źh?' ?' ?' ?' ?' ?' ?' ?' '&Ĵe:&źg'|2H'H'H'H'H'H'H'H'b'L'&&ĴE&.&źm '{P'|9K_f'K_fYf'Yf?Vf'?Vf3f&֚?3fKf'Kf?f' ?fHf'ZHfKM_'KM_'KM_'KM_'KM_'KM_'KM_'KM_'M'M'M 'M 'M'M2'M'M' ?M&˦?M&˦?M&˦?M&˦?M&˦?M&˦?M&˦?M&˦M'M'M u' M z'!M'"M '7#ML'j$MF'd%HM'NHM'OHM'PHM'QHM'RHM'SHM'THM'UMb'VM'WM'XM'*YME'ZM'[M '[\MP']K_5'uK_ 'qKM_f&^KM_A&KM_f&K_V'KM_V&}'uHP'qDf&քAfM'4KtM4K'&547632'68%''";>+)&ZY: ')>61+8B8Y(Bw/.Vy~)'Vj?Mf&b˦?MD&˦?Mf&˦?VV'?MV&˦f&քnfAf&քfVM{'Pf'i4&5&935&u?3 &q3&ԙ3"3V&3&V k' |uV P'qDf&ք^fNf'LE')&?5'u ? 'q ?' ?tV'tV'?V' ?' 5k' u5P'q Dgf&ք2f`'$l)&j~)+~cfCHMf&jHM'&HMf&H&HM&cf&քlff&քBfRM'f7fv7O&'&547632$9XZ&(,>:#''%x./wB(Y8B8+16>)'c!!d5c!!f!!f4!!34!!3&BB~#67WOhC7`X>=3XWNC7a6?>=37VOC7`X&'3_Oa7~#67#67VPWOhC7aC7`X>=3%>=3VMWNC7aC7a6r?>=3%>=3VPVOC7`C7`X&'3&'3_N^Na7Ca73; 3%%#5|%n%%nJ##R##3;3%%%%#55|%n%%n%%n%%nJ####I#### `467>32#"&'. /.0uBAv-/01..vBBu.-0J235624IJ336633 A AoH` 74632#"&eFHddHFeNppNOppE` %462"&%4632#"&deedeFHddHFeNppNOppONppNOpp` #%4632#"&%4632#"&%4632#"&GeGFeeFGedGFeeFGdeFHddHFeNppNOppONppNOppONppNOpp,  #/3?K2#"&546"32654&"32654&'2#"&546!3#2#"&546"32654&k:11::33:22::33:Ϭ;23::33dߋe-d ,  !-9CGS^2 &546"32654&%2 &546"32654&"32654&'2#"&6!3#2#"&546"32654 9229;22:11::33:22::33:Ϭu23::3dddߋev-d5-54Z-T-5Z-ABw &M B0;&""w&"sw&"627654'&#""'&7632CCDD[ZZ[Z[[Z<<==<<<<@nnnnnndnn,!535!533#3%.qU㄄p^yX^yN_%!>32#"&'53327654'&#"#9&\3m\\[EKE()NT(('(P+"!9[MKKP((76om67$I,67632#"'&547632#&'&#"27654&"&-.6KJZYcd3uDF''?e.-Du2uJIferr8CD10vw`00wv0[ #!#!tV\NndHp <'5 '&5467&'&5476 '4&"32764'&"276e54XYYYjdY,,PQ4-,,h++45a88[q<==KCDT5;;sCC=K,,_C6DTD{TMDtTQDuT,DT_DTIDT[DT<DT?DT'%)-535#53#5!3#5!#3#3###3!5373'#35#'~֬*HGH-yyyyybyy-Lyyy4#"#734'&54765#7332#.#"!!!#3267"//m/|/-a}j$hu100we$ w58 w $>Cķw,16wܭ$u-"/;37367'"76!3 !7324&+3 #"'3254#"$*`!܏x:nY_>wkj.CIFD?6My 6Ze6?#k^|yf,2F$RN7P'(@!!32673# '&547#5!6767!5!67654'&#"#676323 )F31r /K_,/CEXXsv톆E#"3'y*32Zrv32uvD9y/ ;+y1-1]h23GHJ,|{2+y!*#&'&76753#&'&'6767"tSylܙԕl12h}j$A1HF1AP-\\+tSLFΐC[EAWTQR>3#7!>323!654'&#"?qJp@) a8x Lauix}_TjCl=JyF0,4G} 02"&6&"26!!463"##7265#5!pmRNMP䛝QuQPvQfux=vy<-QvupwRxxVWuw 9PQ3ӊ9PSy (!#5#3!53##%3#3!53#3#53#5EvNNvD/MMNfNLLմb`PPb%R`PPgPPRRV{.ml9'u[d&{F:M9&t'F:u[dl.'[d&{F:M.'[d&tF:Q.&u'[dF:,.&'[dF:lG'[d&{F:_G&'[dF:lG'[d&{F:QG'[d&uF:_G'[d&F:[G'[d&F:l&{F:D8 !#53t.x.t } !#53%gt s4_4i8 5!3#i*u/w/u(4c c4} 3%#5 `4_4DF)>54&#"#"&54632#"&54324&#"32/('4&4oؚњ\zEA[xFA[wcBds<+@lFWt|uy $I7! 3''+$I %!#WU$b+*w!#3!53!3!53#*T^TT^TTwI!#'.#!!26?3!5 X}OSKq Wj+ AOf S4+)X&GF!!~3#  4632#"&eFHddHFeNppNNoo@ 3##'%]Z~*Z3qtk %.#"326"&'#"&54632>3"3)nFTjaIDq?S>W}}SO=V o?(o7LJqXUqtq}밸urKLI /32654&#".#"326#"&54632>32#"&P(oFUiaICo)nFTjaIDq>W}}SO=V}{T1KLoYVqr$LJqXUqtE}밸u찷q/r%!3!//r%!3!/t0!!! %a'T!!!BDT76!2#4'&#"#cozc*26*+T+COO=3327653# '&*62*czoc{+=OOC+,)26732#"&'&'&'" #"&546324\XkD8)8 Z $#2nVmF<-? KbPfbN>J?(:,'QQ, 'Q'QQF!!#"/&'&#"5>32326~T[U XEWWZV [EUS: BGJVQ9 DH-F!!#"'&'&'&#"5>32326~T[U  XEWWZV [EVR9BHIVR9 DHF9#"'&'&'&#"5>32326#"'&'&'&#"5>32326ET[U  XEWWZV [EVT[U  XEWWZV [EoUS:BGJVQ9DHVR9BHIVR9DHF !3!!!'7#5!7!ႇ%55}FI !!!!!!~~~rF %!5 5E~-~PPF 55%!!~-~ 3 %! ~~_PQC|F!#EL{h,$%%$JIvvv鮮뭭nn 8ʸ'+6@KV#"&6 3546 +32 &=# &6;5#'54&#"3!3264&#"32654&#!#"3265n[A@[[@nA[\@A[\@A[\@@[[@A[`ʏʭʏ˭GffGHefffGMGeeHGeeHGeeGF!3!E~h{4732#"&'&'&'"XkD8)8 XbP(( #"&54632267XlE8)8 X(}@bPq !!!!%!!Ldo+l  #/;GS_kw+7CO[gs!2#!"543!254#!"+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;22+"=4#"=43+"=4;2+"=4;2"=43!2#3DŽCAAC!B""B!!D D!)!C!!C!r!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!"B!!B""B!!B"f!""! !C!!C!!C!!C!"B!!B""B!!B""B!!B""B""B"!B""B!!B""B! !C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!B""B!!B""B!"B""B"!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!"B""B""B""B""B""B"!~!!~!!!!& !!!C!!C!!D D!H""!!JJJI%%I&%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%% %I%HJ%%J%%J%%J%%J%%J%.+ !5!!!!#_.bb(3('! !!&$<.3!3_.b(l!! !!!!#!#(!((!(0(!B({(!((!((! (Y(!k((3((t ( #'+/3!33!33!33!33!33!30stststmnmnm(%8K#!1!!!!!!!#!1!!!!!!!#!1!!!!!!!#!1!!!!!!llll޶llll޵kkkkߵkkkk(((((!%)-13#3#3!3!##!#3#3#3#3#3#3#!"޵׶׶m#(i#(w!~(~(&~&(&(&~&(&&(~(&~(&~&'%! '%!!!Ng>9%-d) 327$%&#"%632#"'++Օl``````qq|qqf' '/7?G%&'&'6767&'&'7%'676727"'64'7&"'62&479'5)3,?4C0x2)/-Z5>3@'5)2+@3C03)5'Z,G4?DD#VVcDD#VV c<1& j(0=Ju &,A=N:0('<1& j(0=Ju &1<>EB0(n_II'[[JnII'[[d) %/36%632#"'327&#"6767&'&6e`` :;;:{m('((((';99̙Rqq|qq%%mܱ[0$ %@%|"d) )73276'&#"7632#"'327$%&#"%632#"'Vg4343gg3434՞OOOOOOOOH++Օl``B!!BB!!oe33eje33````qq|qqd $  $eGyFAk^d $  $27$%&#eGyF+ՕAk^a``d $  $"3eGyF+Ak^``d $  $327$eGyFS++Ak^>``d $  $%&#"eGyFYՕAk^>``d $  $"327$!eGyF++Ak^```d $  $"!eGyFVAk^`d$)6%63"'e`Rqqg)#2f|q*q ( 2654&#"!Κ⚚ord}}|v<U( 327$%&#"327$%&#"!(++Օl``````}|qqqqH(U( !#%&#")%632T++qq>~``U 3327$3!#"'$``Ֆ>qq``) %63"`qv`) 2#%&#`iՕ)q>` 527$3+iv`>q "'$33įj+q`d)%632#%&#"e``jՕqq>``d3327$3#"'$ei++j``>qq% % %! %!$+! 2654&#"4632"&J|{{Y[|6qpddcc||}'%!%!!@Z r<'%!%!!X r<'%!%! r<'%!%!N r<'% !%!!!!t&t% r<<% 4632"&! ?N97MMqM`KAj>VV>>VVJ %! &A %! %A d(  7& 6  'hi./*X֖'% !!!!!!tg%ۊ<)) Ie'% !!!!%!!&Ng%M)*<?v^ y <BHNTZ`fl3264'&#"&7367'67675673#''5&'&'7&'677&'67'%7&'&'%6767%&',*<&`7" bK*V&"g{ M M !)1! ! 3254#"&#%#7&'67&'67wv:<F>4,<[-ch`ch_7IL6a] ]pu otpu ot !)1! ! 3254#"3$3&'67&'67wv:<F>:]ch`ch_7IL6a] Uypu otpu ot %! ! #$''&'6%&'6wvcGkvJVVr~w{t~w}7IL0c Z    "*2:AIX3#''%#&'52#"'&5476!!'5%!!'53'5%3'5%3#'32765'&#"FF47H8(S A+[!?27@yf756FF u>p,y9#_>?@7`d@\hPPPPy?+<>w_VG{?,rCA01@7#'#53'&'&54767&'&=33676=3#32654'&$ xwatbww!$$!wRMi"iLRx "iMRurRLV$|ddb e|$% ZSSZ %_TYYT $4&#"326&54327##53&ёϔ1./|䤣L~~|  $"32654&'#533'#"5476ϔ|Ҙ{פ㤤ף |~~L #&$76+"'&5'476%7!iiggi$jg ՕeE~Z5s qttrtt<֤ꧦg\ul91B52654&#"#43233#!5nom覨b͈wyyy{(|#53533#632#4654&#"#``d~~dc}mZyH{zF 4"32654&7#"&54767!!53#5!!3!!#3!!92GG22GF7+Db`E*8쌌O79NN97Os0LllllL1KӘJJ-<%#5#535&'&'5'73'3#'73'676=35'73'33n^F][E_nzTThOʍ7NjYYӖy! #!!!'!27674'&#pZ51;J&u@!IM_\ǃ$P<"Q##"'##56'##"/547? dsU 2`g26;2"##'65##"'&5476;2&'5476&+"326733276=4/#"567654'&#"35&5?^g7%SB\JLZޭ\<."7Y@ؘ aj7{6Gf!KQM 1k`t0%K6F98:d  mOE:R p&i  C]&'Ax.+0 nM,W`cr3#"/4?23*A+ ZP-@3#'654'&'#"54732Nn7S3ڿWP'6?F` 1TFG*֙-@R/"#"=4?2%#"=4?2n0#NI<Ù'PH*~: ۉ8z"C"'4723!#"5472!5bGZOO;Z$}@Ϝ 3363'$6'")2y k?WXc1  3%#'#3%#%,$//c}(,377#'#'547#5773%%F*kknm*&ttrt&<<7CA<<{8AMt#u ! !=?Fvu-1#u >>u-, p'Qp'Q'QQ-83267#5!7632#"&54&#"!!#"&54632FYSf_uJ:::[ #8WXw`tL>6;=,{jT@OMJ&ekfSShWANHC -8=#"&5463232#534567!5!67632#"&54&#"3!!#8WXw`tL>6;P8f_uJ:::K '5&fSShWANHC ^U~jT@OMJ&ALMC'%!%!!N r'%!!!N K "*'"32 767&'&54763276726&"p" EP6F~4XԶD=)C8SRQS2>;+ 8#_+3G.h246227&462 &hOlN#.2"NlNDeFMnAH>DeFMˎyy5ysLNsLNyyy58"#.#"!3!53!3!53#5354632Ae l^}ttňWjVZVRyy5yy5yL84$)3!53#"3#3!53#53tOstňseyy+Vyyy5y9;#!5#!#!5#!5463235.#"!5463235.#"#3#!5#;tDt<}}^l ejWoAH>DeFMˎyy5yyVZVLsLNyyy58654$)3!53#"3#3!53!3!53#5354632#.#"tOsuĈqMFeD>H@'Leyy+Vyyy5yy5yNLs: 2547632#33267##"&5!5!&'&'&#3#!5#H,dO"ŭ8:4' fCqf'^\:&"QyuZVDy3 g[yyyNX4&'.#"&#"#"&'#32654'&/&'&546323&'&54632#33267##"&5!5!?=>U:=8BB_ !gbt fpYHHKdas{f&L66Lŭ 8:4( :g)(,yLL*%"#@FK}wNN5%6BEnm -8=SS=MyuZVDy-"& 32654&#"3>3235>54&#"++*eFGeeGFemkcknu~}_B>OppONpp͂+"f3#f 4632#"&%4632#"&O66MM66ON66OO66N{32odfo7:;6f 332673#"&odKLeo7:;6 4632#"&N66OO66N{V|VV&MV^VhyBVVMQEMjVEMV3y[G? #ADhh~K*bKKK8K<8?x???<?K*K5 OS,<*/2J/@)D#8~36c3'M'Q7E3'6Q8RrM|V|V|V|V^V^V^V^VKOQEMEMEMEMEME=G?G?G?G?#sVx?KKKKKKKbKKKKK? K<?KKKKK-<*<*<*<*/*/KKKMbKMbKMbKMbK>VKKOK|VK|VK|VK|VK|VK&MK&MK&MK&MKV<V<8^V^V^V*^V?^V?Vh?hyxBV??V?V?V?V?Q<?Q<?Q<?BTQ<?EMKEMKEMKMfKV5V5V53y O3y O3y O3y O[S,[S,[S,G?<*G?<*G?<*G?<*G?<*G?<*2#/#AD@AD@AD@8#'V*'MMbKKO>#'V*K|VEMbQ&M 8^V^"BV?? A?]<?EMELLLLj#*V3y OJbS,[ S,[GD<-hRh#AD@???{mV>)N V UV KxVVW? Q /Q?K^V EMKG?<*G?<*G?<*G?<*G?<*KKKrKrMK&MKBVEMKEMK??x V UV K&MKVQ<?KrKE=-KK|VK|VK^^V#EMKEMKV5V5G?<*G?<*3y O[S,V<KAD@K|VKEMKEMKEMKEMK#/ ??,xlKlIb"[ O@VKKK*bKbEKAKKKc`Y KK.KxKKs qK<*<?<??B?;;??**????K??E?E??A?E?KE?*bKv;/~JJQ?E???=7LLbKbaQ6KK?bK O?x*?<?E?/E?VEMKVIV?V??V(?1V?BV?BB8GVd?V? V?MbK[v;#/ J ;8d?8<8^V |3?BV?VE?8E??KKrK|VKEMKEMK |3?1V???VE?VE?EMKEMKEMKMbK-/-/-/8E?V?V7LM KKNdZMZMMMMM3M3MMMM(MM>MhM]MM]M]MMMMM>MM?MMM]MMMMMM(M5M(M(MMMOMMM>M;M9MfM]MMMMMMkMMMMMMAM]MKV*V*V*MbK>VK>VK>VK>VK>VK|VK|VK|VK|VKV8&MKV<8V<8V<V<8V<8^VBV?BV?BV?V?V?V;VM?M?M?Q<?Q<?Q<?Q<?EMKEMKjV*jV*V5V5V5V53y O3y O3y O[S,[S,[S,[S,G?<*G?<*G?<*G?<*G?<*//22222 J J#/AD@AD@AD@<8S2/MK OKKKKKKKK|VK|VK|VK|VK^V?^V?EMKEMKEMKG?<*G?<*#/#/#/#/KKKKKKKK  `Y`Y`Y`Y`Y`Ykk<?<?<?<?<?<?<?<?   5 k{?{?{{{{{4{,qRW4#KKKKKK{s????????(UHHHHHHHH ! ,]KK`Y`Y<?<?{{?KK??HHKKKKKKKK  <?<?<?<?<?<?<?<?   5 kHHHHHHHH ! ,]KKKKKKK4t4~<?<?<?<?<?2 VPi{9{?{{{"{^V^V#NL????tt??##Ul~~HHHHHbhR7733_3pcc33~X6X$~$X$6$X33  3 , ,w;)w)w'6','_'I'['<'?U'6''M'Q','_'I'['<'?'P$N'<>G3hRBVtltMtltMtQt,tlt_tltQt_t[nlDiDk$k$*k3@+,4, ,++(3 dlA+HdHdHfHdHdHdHdHdHdHdHdHddHdHd?dHdHdHdHdFFttyttttkCCtt1ttttt"tt5tt!tt5tetRte{ ,d-d-KhO<8<898E:DN-*TIM 79k:;k<&:$7$9k$:$<$I$W$Y$Z$\$$$$$$%$&$'$6$7$8$9$:$$$$$$$$$$$$ $ $$%&%&&%*&%2&%<%&%&%&%&%&%&%&%%&%&%&%&%&%&%&%&%&%&%&%&%8%:%&%&%&%%&&''&''9(&)2))2)))$)D)H)R)U)X)))))))))))))))))))))))))))))))))))))))))))))+)-)/)1)3)5))))**&*--a--.k.$.&.2.8.:.<.H.R.X.\.......................................0.1.:/7Y/8/9 /:u/<}/\/////}///&Y/0/:}////1}1}1122K2292;333333$k3D3H3R3k3k3k3k3k33333333333333333333344K457595:5<5D/5\55/5/5/5/5/5/5/5&555&5:5566K6666 6"777777$777D<7F7H7R7Uk7VD7XD7Z7\7mk7}k777777<7<7<7<7<7<7a77777777777a7D7D7D7D777777a7k7k7!D7#D7&71D7k7k7 k7 k8D88D888$8888899k992929$a929DD9HD9L9RD9X}9\9a9a9a9a9a9999999D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9}9}9}9}999D99D91}9&99&9::::u:u:$}:DN:HY:L:RY:U:X:\:}:}:}:}:}:N:N:N:N:N:N:u:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:::::::Y:Y:::1:&::&:;;$;&;2;;;;;;;;;;;;;;;<<2<<<<$}<&<Da<HN<L<RN<XN<}<}<}<}<}<<a<a<a<a<a<a<a<N<N<N<N<N<N<N<N<N<N<N<N<N<N<<<N<N<1N==IIIIIAINRUkUDUKUKUKUKYYY2YKYKYKYKZYZ2ZKZKZKZK[\<\\K\K\K\Km-m7km&k}-}7k}&k79k:<IWYZ\$%&'6789:  79k:<IWYZ\$%&'6789:  79k:<IWYZ\$%&'6789:  79k:<IWYZ\$%&'6789:  79k:<IWYZ\$%&'6789:  &&&&&K$9<:}}K9;K9;K9;K9;K9;K9;DD$DD$DD$DD$2$}&DaHNLRNXN}}}}}aaaaaaaNNNNNNNNNNNNNNNN1N&<KKKK<KKKK79k:<IWYZ\$%&'6789:  79k:<IWYZ\$%&'6789:  79k:<IWYZ\$%&'6789:  &9&9&&7Y89 :u<}\}&Y0:}7Y89 :u<}\}&Y0:}O7Y89 :u<}\}&Y0:} } }  &79:<D/\///////&&:kDKKKK79:<D/\///////&&:kDKKKK  K  6   """K""6" ""&&&&&&$&7&D<&F&H&R&Uk&VD&XD&Z&\&mk&}k&&&&&&<&<&<&<&<&<&a&&&&&&&&&&&a&D&D&D&D&&&&&&a&k&k&!D&#D&&&1D&k&k& k& k0D00D000$00000::2::::$}:&:Da:HN:L:RN:XN:}:}:}:}:}::a:a:a:a:a:a:a:N:N:N:N:N:N:N:N:N:N:N:N:N:N:::N:N:1N??d$dddddd79k:;k<&:$$99:9;9<99:979:;`pF ,8DP\h@0<HT`lx $0^".:FR^jv(4@LXdp| P ,8DP|".:FR^jv*j    * 6 B N Z f r ~ !!!!(!4!@!L!X!d!p!|!!!!!!!!!!""("t"|""#2#b###$6$t$% %0%l%%&&&v&&''<'t''( (P(((())P))*"*p*+++b+++,$,0,<,~,,--D-j--..>.p....//,/8/D/P/\/h/t///////////0000(040@0L0X0`0l0x000001>1J1V1b1n1z111111111112>2J2V23333&323>3J3V3b3n3z333333333334 44"4.4:4F4R4^4j4v444455@5L5X5d5p5|5555555556"6p667$7~788L8n89 9>9n99::\::;;`;;<(>b>>?*?f???@@H@x@@AA`AAB,BNBBCCbCCCDDNDrDDE6EEFF:FFFGGVGGGGH"HPHHII6IhIIJJJpJJKK:KRKKLLZLM"MMNDNNOO^O|OPPJPPPQQZQQRRR*R@R\RzRRRSSSS,SBSPSZSdSxSSSSTT2TVTTTUUDUTUhU|UUUUUUUUUVVVVDVNVXVbVpV~VVVVVWWW W*WXTX^XhXvXXXXXXXXXYYFYTYbYrYYYYYYZ$Z2Z\F\N\l\t\|\\]]V]b]n]z]]]]]^@^r^_,_`___``8`d````a0adaaabojovooppNpVpppq,q4qxqqqrrJrtrrrrrrrs\sdsssttBtttuuLuXuduuuuuuvvHvvvvvwwDw~wwwx>xXxrxxxy8yDyPy~yyzzDztzzz{,{t{{{{| ||8|l|||}}T}~}}}}}~4~r~~ ".:FRZbnz*2:FR^jvʀv8Tp܃ ZȄ"T,vچHΆ2V~Jjƈ8~ȉVʊNrFZJ܎&`ȏԏ(4@LXdp|̐ܐ(4@LXdp|đБܑ $0JVbnz Πڠ ".6BJRt|ġСء*6BJVbnz̢آ(4~ʭ(B~ĮԮ8^"z԰ Fα&BĴڴ"0>LZhvʵԶ.&0>JXfp|ط@޹"fDRhvغ*@Ndrл޻&`΄,~Њ@PbvѐѪ$ +@+4   P: r0*&&l66nDDpFFrHHtLLvRQxVV|XX~]\            ! "# $% &   "$&(*,.02?R?T?}?~?~?y??`?????????????z?????  #!@  0T VQQXeeZ\^bhlpQQr   `?x?x?y?y?z?{?{ ?| ?b?c?U?ſ?ǿ??ʿ vyquvjwzzxW RS XXxII0LL2OO4WV6AA:    ` ?????????DF* $&""(  ` ?????? T $&FF6   !"#$%&'()*+,-./0  !$'*- 0369<? BEHKNQTW????????Ŀ??ǿ??ʿ??  ?߀????""(%$+($.+*?--40/?20?55=86@;9?<<F? /~157/~15702023838446969::;_V{ N $ j4 h    !x !!"4""!  ! !!"E"#!!# !!"X"#!E!""j "#(![ !!"!"~"#;  4  q 6 > 4 8[ " : &B h    Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain DejaVu LGC Serif CondensedDejaVu LGC Serif CondensedBoldBoldDejaVu Serif Condensed BoldDejaVu Serif Condensed BoldDejaVu LGC Serif Condensed BoldDejaVu LGC Serif Condensed BoldVersion 2.10Version 2.10DejaVuLGCSerifCondensed-BoldDejaVuLGCSerifCondensed-BoldDejaVu fonts teamDejaVu fonts teamhttp://dejavu.sourceforge.nethttp://dejavu.sourceforge.netFonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. http://dejavu.sourceforge.net/wiki/index.php/Licensehttp://dejavu.sourceforge.net/wiki/index.php/LicenseDejaVu SerifDejaVu SerifCondensed BoldCondensed BoldAll Typographic FeaturesFonctions typographiquesAlle typografischen MglichkeitenFunzioni TipograficheAlle typografische kenmerkenLigaturesLigaturesLigaturenLegatureLigaturenFractionsFractionsBreukenAll Type FeaturesToutes fonctions typographiquesAlle AuszeichnungsartenTutte le FunzioniAlle typekenmerkenCommon LigaturesLigatures UsuellesNormale LigaturenLegature pi ComuniGemeenschappelijke LigaturenRare LigaturesLigatures RaresSeltene LigaturenLegature RareZeldzame ligaturenDiagonal FractionsFractions en DiagonaleDiagonaler BruchFrazioni DiagonaliDiagonale breukenZ$  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$ sfthyphenAmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandicLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongsuni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191uni0193uni0194uni0195uni0196uni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEUhornuhornuni01B1uni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BBuni01BCuni01BDuni01BEuni01C0uni01C1uni01C2uni01C3uni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DEuni01DFuni01E0uni01E1uni01E2uni01E3uni01E4uni01E5Gcarongcaronuni01E8uni01E9uni01EAuni01EBuni01ECuni01EDuni01EEuni01EFuni01F0uni01F1uni01F2uni01F3uni01F4uni01F5uni01F6uni01F8uni01F9 Aringacute aringacuteAEacuteaeacute Oslashacute oslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217 Scommaaccent scommaaccentuni021Auni021Buni021Euni021Funi0221uni0224uni0225uni0226uni0227uni0228uni0229uni022Auni022Buni022Cuni022Duni022Euni022Funi0230uni0231uni0232uni0233uni0234uni0235uni0236dotlessjuni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240uni0241uni0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni0259uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269uni026Auni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02AEuni02AFuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02BB afii57929 afii64937uni02BEuni02BFuni02C0uni02C1uni02C8uni02C9uni02CCuni02D0uni02D1uni02D2uni02D3uni02D6uni02DEuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9uni02EE gravecomb acutecombuni0302 tildecombuni0304uni0305uni0306uni0307uni0308 hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322 dotbelowcombuni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0358uni0361uni0374uni0375uni037Auni037Etonos dieresistonos Alphatonos anoteleia EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni03D0theta1Upsilon1uni03D3uni03D4phi1omega1uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FAuni03FBuni03FCuni03FDuni03FEuni03FFuni0400 afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061uni040D afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097uni0450 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109uni045D afii10110 afii10193 afii10146 afii10194 afii10147 afii10195uni048Cuni048D afii10050 afii10098uni0492uni0493uni0494uni0495uni0498uni0499uni049Auni049Buni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04BAuni04BBuni04C0uni04C1uni04C2uni04C3uni04C4uni04C7uni04C8uni04CBuni04CCuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8 afii10846uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni1D02uni1D08uni1D09uni1D14uni1D16uni1D17uni1D1Duni1D1Euni1D1Funi1D43uni1D44uni1D45uni1D46uni1D47uni1D48uni1D49uni1D4Auni1D4Buni1D4Cuni1D4Duni1D4Euni1D4Funi1D50uni1D51uni1D52uni1D53uni1D54uni1D55uni1D56uni1D57uni1D58uni1D59uni1D5Auni1D5Buni1D77uni1D7Buni1D85uni1D9Buni1D9Cuni1D9Duni1D9Euni1D9Funi1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5uni1DA6uni1DA7uni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1uni1DB2uni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1E00uni1E01uni1E02uni1E03uni1E04uni1E05uni1E06uni1E07uni1E08uni1E09uni1E0Auni1E0Buni1E0Cuni1E0Duni1E0Euni1E0Funi1E10uni1E11uni1E12uni1E13uni1E14uni1E15uni1E16uni1E17uni1E18uni1E19uni1E1Auni1E1Buni1E1Euni1E1Funi1E20uni1E21uni1E22uni1E23uni1E24uni1E25uni1E26uni1E27uni1E28uni1E29uni1E2Auni1E2Buni1E2Cuni1E2Duni1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Auni1E3Buni1E3Cuni1E3Duni1E3Euni1E3Funi1E40uni1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Auni1E4Buni1E50uni1E51uni1E52uni1E53uni1E54uni1E55uni1E56uni1E57uni1E58uni1E59uni1E5Auni1E5Buni1E5Cuni1E5Duni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E68uni1E69uni1E6Auni1E6Buni1E6Cuni1E6Duni1E6Euni1E6Funi1E70uni1E71uni1E72uni1E73uni1E74uni1E75uni1E76uni1E77uni1E78uni1E79uni1E7Auni1E7Buni1E7Cuni1E7Duni1E7Euni1E7FWgravewgraveWacutewacute Wdieresis wdieresisuni1E86uni1E87uni1E88uni1E89uni1E8Auni1E8Buni1E8Cuni1E8Duni1E8Euni1E8Funi1E90uni1E91uni1E92uni1E93uni1E94uni1E95uni1E96uni1E97uni1E98uni1E99uni1E9Auni1E9Buni1EA0uni1EA1uni1EA2uni1EA3uni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED8uni1ED9uni1EE4uni1EE5uni1EE6uni1EE7Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni200B afii61664afii301afii299afii300uni2010uni2011 figuredash afii00208 underscoredbl quotereverseduni201Funi2023onedotenleadertwodotenleaderuni2031 exclamdbluni203Euni2047uni2048uni2049uni2070uni2074uni2075uni2076uni2077uni2078uni2079uni207Funi2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089uni20A6Eurouni20AFuni20B4uni20B5uni210E afii61352uni2126uni212Auni212Bonethird twothirdsuni2155uni2156uni2157uni2158uni2159uni215A oneeighth threeeighths fiveeighths seveneighthsuni215F arrowleftarrowup arrowright arrowdowngradient proportional orthogonalangle logicaland logicalor intersectionunionuni222Cuni222Duni2242uni2243 equivalencehouse revlogicalnotuni2311uni2318uni2319 integraltp integralbtuni2325uni2328uni237Duni23AEuni23CFuni2423upblockuni2581uni2582uni2583dnblockuni2585uni2586uni2587blockuni2589uni258Auni258Blfblockuni258Duni258Euni258Frtblockltshadeshadedkshadeuni2594uni2595uni2596uni2597uni2598uni2599uni259Auni259Buni259Cuni259Duni259Euni259F filledboxH22073uni25A2uni25A3uni25A4uni25A5uni25A6uni25A7uni25A8uni25A9H18543H18551 filledrectuni25ADuni25AEuni25AFuni25B0uni25B1triagupuni25B3uni25B4uni25B5uni25B6uni25B7uni25B8uni25B9triagrtuni25BBtriagdnuni25BDuni25BEuni25BFuni25C0uni25C1uni25C2uni25C3triaglfuni25C5uni25C6uni25C7uni25C8uni25C9circleuni25CCuni25CDuni25CEH18533uni25D0uni25D1uni25D2uni25D3uni25D4uni25D5uni25D6uni25D7 invbullet invcircleuni25DAuni25DBuni25DCuni25DDuni25DEuni25DFuni25E0uni25E1uni25E2uni25E3uni25E4uni25E5 openbulletuni25E7uni25E8uni25E9uni25EAuni25EBuni25ECuni25EDuni25EEuni25EFuni25F0uni25F1uni25F2uni25F3uni25F4uni25F5uni25F6uni25F7uni25F8uni25F9uni25FAuni25FBuni25FCuni25FDuni25FEuni25FFuni2600uni2638uni2639 smileface invsmilefacesununi263Ffemaleuni2641maleuni2643uni2644uni2645uni2646uni2647spadeuni2661uni2662clubuni2664heartdiamonduni2667uni2669 musicalnotemusicalnotedbluni266Cuni266Duni266Euni266Funi27E0uni29EBuni2A0Cuni2A0Duni2A0Euni2B12uni2B13 afii10064cyrBrevecyrbreveuniFB00uniFB03uniFB04uniFB05uniFB06uniFFFD dlLtcaronDieresisAcuteTildeGrave CircumflexCaron uni0311.caseBreve Dotaccent Hungarumlaut Doublegrave@K 2ǻƻĖG}G0}  & @ 7 !7 2.+t+t ]%]@%@ @  dtd  @   2 }t} t2q  @~t~}|}|{z{zy]zzyx%y]y@x%w7vtvkututsrqrqqpo.po.nmlkKj hg g@f!e}d@ckba}`^] ][YXY-XW2V TSTSRQPQ%PPOONMN}MI MM@LL1KK2JI J}I HG H}G FE F2ED E E@D CBCBA@A}@6 @@?=)?>=)>]==)<;<;:;:9 :9 878}76 776 6@5454+ 43 32) 210 0/$)/7.! .-,-,+ ,,@+ *&*) )@('('&''@&%$)%$!$)#!#"! "! ! !  @!*@-:!}22!)k!) !-} -    @      @@d+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++I6       !! #" >> ?? @@ CA ^^ __ `` aa bbcc gdkh qm srutvv zx {{} ok {r    Ȁ    --                     #($+* D/ EE F #micropolis-activity/res/dejavu-lgc/DejaVuLGCSans-ExtraLight.ttf0000664000076400007640000037513410724145723025003 0ustar simcitysimcityPGDEF_;c\GPOS0L=`GSUB7[?OS/2qDVcmap2E cvt 9JfeatL@fpgmq4vjLgaspMx glyf˅MheadA9AX6hheaYA$hmtxN^Akern.DYt*6loca5 maxp 8 morx{llpname c9(&,postT5prep;hprop+` $ijjkpqqruvvwyzz{}~      ())*+,,-0123:;?@@AZ[[\degh{||} jDFLT arab*cyrl4grekBlatnPkernmarkmkmk" $"94+:f(/99a}au/&DDDkkDaak)}/DDa}9DC}&&9}k}}k&a DD}aaauYN}k}aaa kkDaakA?ka&}kD}VuaD)kKr9KD &&&/<}kDNk&|)$$%%&&''))**++-- .. // 22 33445566778899::;;<<==DDHHIINNQQ RR!UU"XX#YY$ZZ%[[&\\'mm-}}, .( !#'         ! ! !"""  ""$$&&**++#,,--#..//#0011#2233#4455#6677%8899'::;;==??AACCIJOO QQRRYY\\ ]] ^^ ``ii}} ~~ !##### ! !  ! !""## ! ! ! !'!!!RRSSTTVVXXZZ\\^^``bbddggiikkmmooppqqrrttvvxxzz||           ! ! ! !""""#####$$%%%%%&&''       ! ! !  !!!"" ##!$$ %%!&& ''!(( ** ,, .. 00 2233#4455#6688::<<>>@@AA'BBCC'DDEE'FFGG'AF)II+KK*MM+OO*XX-YY,J201  !"#$%&()'*+,-.76 8!!!!/$%%%%%****. !!!!!! " " " " "$$$$ % % %%((())))'''******,. "$ ''*."$! %*****% % % !! % %((**)'  % % % %.&%%!!% !! " " " "###$$$$ % % % %(((()))))''''*****++,,,,,--. '.!! % % % % % % % *******....2222225354376$%&')*+-./23456789:;<=DHINQRUXYZ[\m}   "$&*+,-./0123456789:;=?ACIJOQRY\]^`i}~RSTVXZ\^`bdgikmopqrtvxz|    !"#$%&'(*,.0234568:<>@ABCDEFGABCDEFIKMOXYpv  &,28>DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz "(.4:@FLRX^dL\/_*s''}srT{{E{;j{//s{{}{{o{{}{^{'b{`{'{}Q|{{}{L;\//ssr`{'T{{{{EE{{@{{jj{{}{/{{{}{{{}{{}{^{G^a{q{+{q{HJ{~^}@{E{}{{^{{E}{p{{t{}{j{{b{{^{{/{{T{}a{E{{{{>{{{{{{}{{{{{`b{{K{s{s{{{{{u{'{//{{{y{^{)$= DU$W]6=>?@AB  CD55EBCFFGHNNJPSKV[O``UbbVehWlp[`alrvDDHHOO(@@! "(.4:@F{{{{{{{{{{{{{{{{{{orr{{{{{{{{{{{{`v w &,28>DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~L\/_Rs''}srT;RR}RR^'b`R}R7R`RTR@RjRjRR}R}}}^G^aRXqH~R}^>^$= DU$W]6=>  ?BC@FFBNNCPPDRREbbFnnGHSYwwm|~nqrstDDuOOv*+-03::@FLRX^djpv| 6 R*+-03::@FLRX^djpv| 6<BHNTZ`flrx~h=DhhhD%@@%@@z "({{{{{{{{{{{{ pDFLT arab0cyrl:grekHlatnVccmp&dlig,dlig2frac8liga>ligaD"*2:BJ0lL,***LM( O$=IIKKLMOO      ""$$&&((**,,..0022446688:;==??AAFFPPRRTT~~( Qf \ "(.4:@FL2  z1vqj|)r.  g"[ fe""6 "(IOILOLII Zp"*2:BHbb~b~bbb LM   #% (%%'O(&(?,% P{ PfEd@ m`|`~39ETY\aceipu(8?X]au~_aer  "(wEMWY[]} ! & 1 @ I T q t !! !!'!+!.!2!4!K!T!!!!""""""7"<##) &7EPV[_cehot#,?X\atzadp    &w HPY[]_ $ 0 9 B K p t !! !!&!*!.!2!4!K!S!_!!!""""""4"<##)~{qj`^]ZXUFE>=<4 vpfb`\XTGEC;:6543+(RNHFDB@?>=<:9865321/&xsgYWURQ;4*(%%   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}byqz5fqu-J3T99NR7s`s3VV9s3D{o{RoHT3fs +b-{T#\q#H99`#fy```{w``b{{Rffw;{J/}oo5jo{-{T7fD)fs04 <, %Id@QX Y!-,%Id@QX Y!-,  P y PXY%%# P y PXY%-,KPX EDY!-,%E`D-,KSX%%EDY!!-,ED-,%%I%%I` ch #:e:-ff!%!!f_CKwj %3#3#jaaa8qe#!#H``++!! !3!!!!#!#!5!!5!?hbwrbresafgpeqqcpvf~pf;;NfM<<MNs)2;#"'&'57&'&54767532&'&#67654'&\F~biw=`_gh[MxTNVRc\klsr[NOIIYXTQ-,+*W-)09"OPWW U!UU]\ABlj<;~FFrmEB +/="32654'&'2#"'&5476"327654'&%3#2#"'&5476c88pcap88cRSSSRRSRc88pc`9889>h\hRSRRSRWVXWOnnnmmnmnWVWWXWO nmmnmn >72767 67673#'# '&54767&'&547672&'&#"lK8`kqQ?'#T<e"0wsb~usL5%&$\`RO_RU?eGc+X]^Zd4SW}*g]{1AY)D?BX[ >c:#$)734JG#G`+L#&'&547LAABAYDE2L3#676'&YDDEDYBAAAKJ %#'-73%~|0~}0*R'(X !!#!5!OeNRZRXw~%3#eO>(~,@dZ!!dZRx~%3#ff~~ B3#(jjmY "3276'&'2#"'&76YYYYYYYY~~~~~~~~`RL( %!5%3!!0JgfJR'\}RJ!7!!567>54'&#"567672TDtphFjMd9:p}"(VQQiwozdiL:Yj)29cc\R`c@2!"'&'5327654'&+5327654'&#"567672?xED^cdjTddhrqij[\^_RrsdeYmn:8%db>mI&%baUVTEFTT:=h1hiwZWds !33##!58lNf,>Pth3$!!67632#"'&'532654'&#",,,U内SWV]NTS]st)PQTQ  ~}f%ıgh-e'  6&'&# 67632#"'&76!2Cº>FFGEw63Ne}|}|EGFbz,j*ۅn>Qy4!#!jVU +7" 7654'&%&'&54632 '&54763276'&#"`__`N`a``a>AqrAC[pFIvwFwvIQWVVW\]\]]]]\3$UYhhTW"%`cttttُccޢQQ"QQe (%53 6#"'&547632!"'& 6& FFGE*w63Ne}|z{}|EGF>ºj*%>n>Q拋npz&%3#3#&ffff 3#3#'eeeN>'(/@z 5~dieTL!!!!LRRz55^/T/e,%3##5476?67654&#"'67632fffe"]Z<q}AiLdNZrpo$"\X,~~XN<[Y<(/1~.WmTaaLE@ZV+4W _327654'& #"'&6325367654'&'&$#"32767#"'&'&'&5476767632%KJLLLK07HG_cdȞ_HH6\SV%!Luqhc\RQ54e`~}|h%qtt<=>DkvJ)'dcdedd*M%$|}%&Lsvwi`bp$#Iq؟wr;;//YPc44BC~l4D>>\uqx摓 =5 !3#!#{;rGjp++ %!27654'&#!2654'&#%!2#!`w\\\\^TT>9?YAIiRQPQGIRHP"[f' &'&# !2767# '&76!2'fst敖tsfjwvƴ:vwYs]-.^./]yH$$gh&%~ ! 76'&!%! )_(RrojѠYWU~W !!!!!!L9SQ]Q !!!!#pPeSQ Y%%!5! '&76!2&'&# !276kDwxdesr~ӗ-{a` Rs5mn8a8 3!3#!#eCeeep+ `3#hh+ ^ 3+53265d=1hVSb' 33 ##bc!c}E53!!d}RI 3 3###IffS+ 33##d(fU+^   76' ! '&76ꐏ{"ݯAC U !27654'&#%!2#!#^3[\\[isrrsdRYYZYSllll~ $  76'#'" '&76! ꐏ~*""ݯ#"`iAB'ab!#&'&#!#!2!2654&#c>:)LkSLNd;8{JH4h44]؋_]sm3&'&'&#"'&'5327654'&/&'&547672-!!#!-eR}332763! '&ddccddu}||}\ܕ$>5!3 3xr iq+) 3 3 3# #gUT~RTg_W+2x 3 3 # #rt!s,*ss8B.3 3#.treP9\ !!!5!sK=2QRQ1=!#3!UhT B#jm=!53#5=Tfh # #+-Q-k!5kNNdf #JRfv{ ,"3276=7##"'&76!354'&#"567632Ģo\]][Med``}}UT`d@fYMpgƀox|E0=1YZ\hi``$Fc7!xgq '&#"32767632#"'&'#3ts}tsst}s?JqddqJ?ZZ"uuuuuuu6SS6{&'&#"32767#"'&7632S6]UPNONMRSQPZZ*b3+]$q3#5#"323276'&#"ZZ?JqddqJsts}tsst}s`6SDDS6uuuu"uuuQ{"!32767# '&76324'&#"QitD3#\\{'676 #4&#"#4&#"#3676324pj$XY[jv\|nv\\1ghb[FlECgf\_g`g`n@?B36{#4&#"#3676326\qr\\1Pvcc\ڲ`a`f6QqpB{ 327654'%2#"'&cdcccdd|}}|}|*۠ퟠ >Vq{%#367632#"'&$'&#"327DZZ?JqddqJts}tsst}sX 6SS6"uuuuuuuVq{ 3276'&#"#"323#Kts}tsst}sX?JqddqJ?ZZ@uuuu"uuuI6SDDS6H{&'&#"#3676322H&"4pXZZ-Qp' ~f`Z>U{2&'&'"#"'&'5327654'&/&'&54632baFhZEAE?R_^d|@MUz$caMN4K@J]࣋5@?e6?4~U04#@IuZYsF CDn\*<&!6`3327653#5#"'&\qr\\1Pvccbڲ`ayf6Qqp:`3 3#`|{a_v`` 3 3 3# #_u_ۀ~`*rJ` # # 3 ,knnrmY^`J/n}N`+53276?3 3b'&SaO#"<>&&j #53#3aaa8U+e8&%&'&'2767#"'&732>PIIIKIINFJISfwwfNKJ4k1)j 2b&'&'"!!!!5!#537632NLD;FX1Cc"ut=LKZ XNLLPNtt {o+;7''&'&''7&'&76767'76764'&'"376yF#"F(+JOUD+%F&#F(+KN[>9[[SxYY]V{v\YI,.GKQ@3*II.0GJCO8#I ]WYU|_XZW~!#!5!/!5!3 3!!![ce`Yoq[9RQRsRQ"##ddd  _RM67654'&&'&#"#"'&'5327654%'&'&54767&'&54632]#X\$WLOG8NMAB/(j"ȦOGLOLOG8NMAB/(j"ȦOGL=[i<\{q~f$((GxMMfBNB2KSKlf$((GxMMfBNB2KSKlF3#%3#^^^\\xxx7X"3276767654'&'&'&$  '.'&5467&'&#"32767#"'&547632zzfe4444efzz{zfd2223cfz{0l66ڃЄ66lڃGBAAEggjkDIIHETSKL!6JIPR@h8>2=yEEb56))^#XX*+_] 7YY$H  5 5HS+#S+{z {z  2!#!c2dZ!!dZR7BZ"3276767654'&'&'&$  '.'&5467#327654'&'2#'&'&+#zzfe4444efzz{zfd2223cfz{0l66ڃЄ66lڃt-//.lBB')H%&*d:&$6Z23fe{}{zfe3443ed{z{zdf323777777ڂ7&%[\'&R>=}Y::)*E]T+!!VX""327654'&'6'"'&'476T8::8TS9::9S<4,%"qqQPQPs7:ST8999SR99N%"'7CpQPrpRO !!#!5!!!OeNNSUSNR^!!56754'&#"567632Qx88m4==HMCB:@0SbB P_'(2\.n-b2#"'&'5327654'&+5327654'&#"5>32$B))UO9?>F4<;CGFAAX^p9:;0-s f3#RfV`&33265332767#"'&'#"'&'\TZ $*% 4')/0)Q?isajBV HzNnH  I('<<,#38z; !###&'&546y[\rrfJtijrx3#hh~"~!#"&'7327654'&'B489o,R)$((3@ !0=33/W-, ] 4"01E 35733!g.WAW:YND!!  &547%"327654&PH^^^^_vGFHFuvEGPRmmkmټmZYYYYYH 5 %5 +S+S^ ^z--{^ ^z--c'5&{t?'td'5{bc'5&ut'+332767#"'&5476?6767>5#53e"]Z<q}AiLdNZrpo$"\X,fffBXN<[Y<(/1~.WmTaaLDAZV+<4~=5k&$u=5k&$u=5m&$u=5P&$u=5N&$u=5] $4&#"326!&'&4762#!#OX@A+,,+A@X{e+#HHGGHH"*rGjg?X+,@A+,XZ$HGHHGH#}+8H!!!!!!#!5!?wlqJfRQ]Q+R\~'&&z-Wk&(uWk&(uWm&(uWN&(uak&,/uk&,/uMm&,/usN&,/u ~ ! )#53!!! 76'&!ojfq(Rյ~PlPXWP&1uk&2'uk&2'um&2'uP&2'uN&2'uIok  ' 7 k7F55F8FL57I5II5y 7 32764'&'&'&#"&'&576!27!"'&''BVc~bH`_v3BD$&#mpVF?"(ޕv_LF=O+1AvaY,,poWMa|b-.]>]v7,O<k&8uk&8um&8uN&8u.k&<suX 3!2#!#!26'&#g1tttrgg1Z\kk^kkbSHXZ=47632#"'&'53276'&'&/&'&54767&'&#"#a`XYUgh$#RGA]^d`]+8>YHFMR*UV*']Qy5BqFK]qmntt79x6./1+GJ\Y^8CGkW>)_23A=SxKA:J[`f&DCf&Dvf&D"&D&Dj&DP|@L4'&#"67632!32767# '&'#"'&76!354'&#"567632"3276=jYqh#(poit1YZ\hia`$Fc7!x1|E~{&FzQf&HCQf&HvQf&HQ&Hjf'C(f'v=f'c'j@/.#"3254'&'#"'&47632''%'3%5?n dd$4V+?~}}*"u߻Hjޯ]mKbӴL~6"&QBf&RCsBf&RvsBf&RsB"&RsB&Rjsn 3#3#!!$ffffn'RP 4 327654'&'&'&#"&'&5327#"'&''/?CUcdP2A?M  A/bOM:H-cPQ>HcL< !dSC<NCXFOOf[m >" @;HZcy!"E:6f&XC{6f&Xv{6f&X{6&Xj{n}Nf&\v^Vq%#367632#"'&$'&#"327DZZ?JqddqJts}tsst}sXL6SS6"uuuuuuun}N&\j^=51'q;$&qwD=5' J$& |D=~'$~{'D'k&&-uf&Fv'm'Lu&f'F''Lu&' F'm&&-uf&F~&'&G ~'!5!533##5#"323276'&#"IZZ?JqddqJsts}tsst}s`MM6SDDS6vuuu"uuuW3'q=(Q'qHWm'u(QH' HW'u(Q' H~'(~b{'xHWg&(oQa&HYm'\u*V,f&hJYm&*uV,H&J Y'\u*V,& hJY'0^*V,4'& Jm'u+6m'uKT3!33##!##53!dDddddD1S QSS r#4&#"##5353!!67632r\\\y Rccc\ش4MM]UDQwxSP'.u,F"'Y1'q.;,H'qgm'.u,VH' ~N'd,~4'JL`&,/uB`3#\\`'-\,V'M8L Lm'.u-V=f&b''0 .E`'0 N` 33 ##h0Hh`,!5l'nv/#l'ZvO5'0 /s'0 O5'/'9O5'y1w/N'ysO5 3!!'%d:A:URRiS < 37#'7\5\6rJӀJl'v16m&vBQ'0 16{'0 Q_&1g6f&Q'QU 33+532767# dh+ fUST/Wj6{ +5327654&#"#3676326EFF1p:9qr\\1Pwcc\YYN22ڲ`a`e7Qqp1'q';2B&qsRm''u2BH& sRk''u2Bf'R!!!!! %$%$!#239F  | SQ]QUWQδ|1B4'&#"!32767# '&'#"'&3267632%"32767454'&8j\qhNit;ddbc=>#1}}||0 5moߪccccdcrn`d\:mx3`*,@\P> >>NV=䋊!l'v5Nm&vBU!'0 5H{'0 U!_&5}gHf&Uml'v6m&vBVmm'u6f&%V~m&6z~{&Vzmm&6uf&V-~&zP7f~&zW-_&7sgf&W7p-!!!!#!5!!-?e@R`PmPf!!3#;#"&5#53#53I{!DNN3pNNRN>P'u86"'X1'q;86'qXm'u86H' X/&8E6&X|k'u88f'Xn&8~`&X')t'|:m'EZ.t'r|<n}Nm&^\.N&<su\l'v=Xm&vB]\'b=X& ]\m&=uXf&]]!##535476;#"j]UTf6BNNUVN5Aq '3276'&#"67632#"'&'##5353!!Est}stts}tt?JqddqJ?ZZZZK@uuuv vuuU6SS64MM 0!2654'&#!27654'&#!2#!"#5476`^TTw]\\]%9?YAI;1cRQGIeiRQPQHP"[f>2AFRQq !7632#"'3532#"!5Est}stts}tZ?JqddqJ?"uuuvvuuk6SDDS6gM' 6763 !"'&'53 76'&!"hwv:ƄvwjfsttsfYL%&$$Hy]/..-];,&'&# !2767# '&76!2676;#"'etu敖tsfjwvƴ:vD?AFF1p:9Ys\..`./]yH$$gg&"TYN22)67632676;#"&'&#"32767#"'PZ!?FF1p:9S6]UPNONMRSQ QYN22b3+]$ ~~ ! 76'&!%! )"#5476_(Rroj;1cRQѠXWU~>2AFRQ !!5!!"&5476!"3!|yy`\\\\w:IR+jjQQPQRq !'&#"327#5#"32!5st}stts}tZ?JqddqJ?"uuuvvuuk6SDDS6gMSE`-3 54%&'&57632!"'67654'&#",ex||~}r:olxeHb`bkbbpe@* ܖL0OtY_偂k^W !5!!5!!5W9+QQ=S"676%$! '&!5'&# ! 76=MݯD9"{{#75]]Bo6:@2&'&54763.#";#"32767# &5476m8:nmYedsrR_^\[jiqrhddTjdc^DE% WZwih1h=:TTFETVUab%&Im>ݐbd 7!!!!+5326pP>1hVhmSQtSV#"!!+532765#5354763ʂf6B.EFF0p:9UTN5AcNYYN22&NNUVI/%!5! 76!2476;#"&'&# !276iDwD=DFF1p:8esr~ӗ-{a` Rs4lnOYN20`8RI ! 5 3 3! '&<{; hl yp~Kʗ/!#"'&54&#"#367632;2765&'&'3l+,\\ RcccX\WeI8XrQ0IkDFش}UDQwxtx&.vlBSZ 3;#"'&g?M[\-Rzz1+ 33###53hh[P Pb67'&#33LLL"91lqpcc߃R$54t #+3 ##=476;#"C-~Vw]EFG1p:9{w>YYN22 + 33###53\\N=N 7;3#+53276d.d( 6F=1h+"U+^VoSTBV6{|! ! '&76 !5'! 76'"ݯ*{{NC',L2k',RU%"#54765!2#!#!27654'&#;1cRQsrrsdd3[\\[>2AFRQllll~RYYZYVq )3276'&#"#476;#"67632#"'&Est}stts}ttZEFD1p:9?JqddqJ@uuuv vuuIX(YYN226SS6m/"'&5476?67654'&#5676332%[wSLdnBwbMt}cxdFrye^o=')FAoMN&1^>goϦ`>$(\@pLQb{26763232767#"'&5676?67654'&#=@5]J@K4NMac$zUM@|d^_R?EAEZhFa?kK2!!##"#5476&e;1cRQR}>3AFSQf %!!;#"&5#535476;#"{!EEFF0p:9`NNN_~5pNNYYN22-!!;#"'&55!-Vg1=?BR٨Sota',8',Xu#4'&'!5! 475!!! 76Z^ru$͵૲SPp㯭ZpPSA%2764'&'3!#"'&33uAbyp>ZM[\gRmSlvzz-.676327'&#" #3K EQ)+:_S g/te 7A'A !99n}d{676327'&#" #+32767MK"2B.BH=?1[Vrb!/F7IuY]E<-# I7-Sw1V'MeQ=5m&$uf&DMm&,/u?f&m&2'uBf&Rvm&8u6f&Xv6"8261'q{;'6'}'6' }'6'}Q{=56"$1&q];=56"$"D8H4'q>P'qYm'Ju*V,c"JJ'm'u.U`m'uuNn'42nB{'Rn1'q';nB&qsV?f& '=' ']'']GYkcv@,*V,c"vJicCn@,16d#CQ=5"\ 5#v8Hl"\vPc#veyl"vPc"v=5p'z$d"D#=56'>$H&D%eWp'z(Qc"H#W6'>(QH"H%Kp'Yz,dc"#fw6'>>,VH"%$p'Az2Bd"R#6'>2BH"R%!p'yz5Hc"U#%!6'>5^H"U%-p'z86d"X#6'>86H"X%m'0v6{'0,V-'0S7f'0Wm"+u6m"K!u=5"$ @"D ~W"(z~Q{"Hz{6"2jB1'qs;6"2jB1'qr;''t2B& sR6"j2B1'qs;.1'qr;<n}N&q^\VK` 3+532765\EFF1p:9`YYN22 -;'&#"327#5#"32367632#"'&'3276'&#"=ts}tsst}sZ?JqddqJ?Z?JqddqJ?ts}tsst}s"uuuuuuu6SDDS6L6SS6Buuuu"uuuV{-;##"32367632#"'&'$'&#"3273276'&#"qZ?JqddqJ?Z?JqddqJ?ts}tsst}sts}tsst}sV6SDDS66SS6 "uuuuuuuuuuu"uuu>5a { ,2654&#"367632!#32767#"'& Ģo\]][Med``}}UT`d@fYMpgƀo枘|E=1YZhi``$Fc7!xgq{3#5#"32'&#"327ZZ?JqddqJ>st}stts}t`6SDDS6,"uuuuuuuq{67632#"'&'#33276'&#"D?JqddqJ?ZZst}stts}t`6SS6`uuuu"uuuq )3276'&#"67632#"'&'#476;#"Est}stts}tt?JqddqJ?ZEFD1p:9@uuuv vuuU6SS6~YYN22{$'&#"67632#"'&'327瑑PZZ?S6]UPNONMRSQ$b3+]$V -'&#"3273;#"'&=#"32st}stts}ttZ9:p1DFE?JqddqJ"uuuvvuuj~22NYY~6SDDS6 )'&#"327#5#"32476;#"st}stts}tZ?JqddqJ?EFD1p:9"uuuvvuu6SDDS6YYN22Q{"47632!"&'53276!7!&'&#"op텂=cbdc3 #"'&732767Rit?B30` 33##`\\`B{"!&'&'2#"'&!3276tdU  Uc|}}|J`cca*uvQ >䅉c`"#&'&+#!2327654'&#q(.6fF@Ak\S\^10>IKI!6`<}'(`NOdGDD19un87c`"#!3327673327654'&+q]01^\\kA@Ff6.&IKI>DDGdON`('}<`6!78nu91u`"533!33##5#"'&=)32765us\\zz\1Pwccjqr$NNe7Qqphbڲ`aq`%5! 7654'&'5!!#"'&54767q~NJDccJJKIdqHIKFvxFK|Ǥ`!#"&53;2765&'&'3,l}YZX\VeI8XrQ0IkDu).vlBSZ:`!# #3:`av`` !# # #3 3_u_%~`*nN676;#"# #Z{3!![&{N $'3276'&#"3!!!5#"327ts}tsst}sXZj*N_3pNF CDn\*;'!aN`ZEAE?Rba`X@?X=>POPP f3# #UOPf f#33+UOPx+qs fvdfC+Tq^dC.s v.)9H 332673 &O :;hgsO ޞHe23cgD.3#\\ǃ  4&#"32>"'&4762X@A+,,+A@X^HGGHHGG?X+,@A+,XHHHHGHHc~!332767#"'&5476U0! @3(($)R,o98E10"4 ] ,-W/333)"#'&'&#"#67632327673#"'&9 &_,+M& % 9 &\+*L& %p7  $%Rr?>7  $%RjBC f3#3#RRdz )pbfCq fvf3'"/q|])1H D8 DjG2#567654#"56cXO"y[@Cƴ+9C!Xl-H'H&f$f,#,XD'!!f#%#RRdxx)1'  )1H qR(#3j@? #575#53WTdzQd<K 53#7"TW/T kBH#"'&'.#"5>32326SKOZq Mg3OINS5dJ t]Fa;73 !;?a<6 7=v s!!vrR s!!rRt'G G;0:# !'#GF<>:']]D. n^nk^Pon_tf3_tVH%#_HVg #"=3;f<{KNVh{{&FyO{&ys f3#RfF &jLl=5f'LWrxyAf'Lt[f'L]Jf'Lz_f'Le(]f'Lnjf&n6Lht;'M.~=5$%j3!!pS~>5 !3:9oR+W(\=+ !!  76' ! '&76>Wꐏ{"ݯFVAC `,b'.>5 # #:ri9+qI01b !!!!!!29iggCNNN2 U3 %!!5 5!!3X>!PP`Kp`-7.<x;36763#$'&3hrehꕡesqrc]ju#!!5&'&576 !5!65'&! Z^YIru#C_͵籱.᫲TPqqPTV7sN'/u_.N'qujf&vLnf&zLPV6f'L|Qf'LF~&Mz *3273;#"'&''&'&767o37ʑQYWXQO4a(&6>Nb;-'qHkeib   {zNAۈ-"OQ(ӡyLVX%'! !"%5%$J\g;M`[Zr{Qb9NZ Kt* VP` 3#&+532:'c;[#>_^VdHE-&# #"'&4767&5!23254'&'&4ex||~}r:ox+eIa`bkbb.pe@*ܖL0OtYd_偂k^|1&'&54632&'&#";#"32767#"&5476W20¶LbaPQG;-OMQXSRXrT0ZTU|86\C@]$%[+P>\T65N>DkHG+ V/hMJR%4527654'&# !5!pCH?T~T6)))K:f7@Cfh>Q<0%5B743MM\$V6{#4&#"#3676326\qr\\1PvccHڲ`a`f6QqpE$ 2#""!'&3276sڱd`_e^de^$YWuvJ;̴4,` ;#"&5DX\l}Y`u).LD`nN # #'&'&+532baqrb!.G7IuY]E8`Sv=/NM9V`w`!376'&'&'31`;C4en>)%d`kg6lwY|rNįiR&%4527654'&# %$'&%!5!$z9H?T~T6)))KN.d97 6Cfh>Q<0%5B74NX>MMNjB{RJ`!#32?#"&5!##J1'!-7#J%I\^`NV Q bJVp{67632#"&'#4  ;CfcᵋB\,P{53_?%R{(%4527654'&# '&7632&'&#"pCH?RT6)))K䑑PZZ?W2]Uic7@Cfh>Q<0%5B74$b5|ua "3254%!#"3sƭON9*xW`!!5#;#"&5#!xBX\l}YB`Ou).L`327676'&'31'"'&5!?4gGpt@)'uzGW`/NAюlzwZ{s`vVs )"276&'&'2##"'&7673*V}sq]6vuu|u^svwZrBotj"~roPn!lLR~D;Vd`#&+53;'&h>1FEg``;1F\P$ɏLV`&'&336763#rjz_aS\Ra^zp\%w@oa.gy;x$p`73!233 '3!"& l^ l :7Sc4g4c8+t;&~j.&jBf&L}f&L"f&LY){FVKM" ! '&76 !'! 764'"ݯ{$z֐ꐏN A{#67632&'&#"!!32767#"'JWW:R0XPi[ giGNKJINNM W |kNy| S {#$'&#"67632!!#"'&'327 JWW:R0XPi[ giGNKJINNM W |kNy| S XVq'&'F'&y3''yWk&uWN&u,y2+5327654&#!#!5!!fc=2i*+LeR%EldSTX" SSjk&u'&&'&# !!!2767# '&76!2'etu敁]tsfjwvƴ:vwYs\..N./]yH$$gg&%m6`,sN&/u ^-h%567!3!#!+!%!27654'&#!hbud yydxv]\\]X/%5ejj4RQPQ"3!;!#!+!#!27654'&#ecyyee]\\]pejj iRQPQ,y2#4&#!#!5!!fccLeR%Elgf SSb'k&uk'uZm&ru  )3!3!# fBfJe{+=5$ #!!!!27654'&#yy|w\\\\:jjRRiRQPQ%jYd%!!67!3#!# q+dbYbP2?7>>e|nAW(rx33 ##### 333KnndllKdEG  p@ ##3f(d+^Um&ub'.h567!#!hbufxvX/%5+I0+2 #!#dd+|U3'&-7Z%+'3276?3 3X2VUkMO[I214!kku./P*t|k'3#5&'&5476767654'&h h΁6څ  n|}ma r}|rx; 33!33#dDdh}}mA!!"'&533!3'9\cceltGɵ+ !3!3!3!#dkhkd1h|1+!3%3!33#dkhkdh|0}mA4 #!!5!!27654'&#yy`w\\\\:jjSeRiRQPQ&, #!3!27654'&#yydw\\\\:jjeRiRQPQ'&6763 !"'&'53 7645!5!'&!"hwv:Ƅvwjfst]uteYL%&$$Hy]/.PN..\$ ! '&!#3!76  76'"ݯhh: ꐏP0M:NACm36763!3!"!"&5463+>:)LkSLNdk;8H4h44]؋_]s{DE-&# #"'&4767&5!23254'&'&4ex||~}r:ox+eIa`bkbb.pe@*ܖL0OtYd_偂k^ ` &!27654'&#!27654'&#%!2#!C5PLLT!JEEJ00^q|gff$)<:v{6:_63ke35Mg<=rRR`3!!`Nh`%!!6765!3#!#|Q$W\\(/,^hQ{Hn|`33 ##### 333cTd\eTd\|00U |1#"'&'5327654'&+5327654'&#"5>32g68|UTZ0TrXRSXQNN-;GQPabL02\JMh/V +GHkD>N56T\>P+[%$]@CC` ##3C\\```C& ``M`76765!#!`;b\aNR` 3 3###[]Z|[`5!U` 3!3#!#\\\M\`$B{RZ`#!#Z\M\``Vq{S{F. `!!#!.BcB`On}N`\U$0<%#"'&32367632#"'&'#'&  7 76'& }5XVw_gͲwVX5\5YWt^ff[tWY5\PORPPR;OPO;RPPROp;:2:;p~p;:颏:;pt rJ`[` 3!33#!\\\2``!!"'&=33!3tų\c\/\$lt̐ ` 3!3!3!\\\`,`3!3!33#!\\\\`,t` 4'&#!!276!2#!!5IO=OIEjeee_6{7<(<9OMMM,42`& ` 4'&#!!2763!2#!IO=NI8\Ejeed_6{7<(<8OMMM{##"'&'532767!5!&'&#"567632֑MNNIJKNGig [iPX0R:WWJp~ S |yNk| W $"327654'&'2#"'&'##33676cccddc|}}r \\t}/䋊Q`c`"&'&54763!##"#676#";^/1]\S\kA@Gf6.JKJ=DGdON('}U`6!78nu91Qk&CZQ'jVr'!!67632+5327654&#"##5353y RcccEFF1p:9\\M]UDQwxHYYN22ش4Mm&v{#67632&'&#"!!32767#"'JWW:R0XPi[ giGNKJINNM W |kNy| S {VBLc&jVKM``#76765!32#!!4'&+3276`\`P-!5!!!33#!?CehRR}mA.`!5!!!33#!B;\\2OO=!2#4&#!#Sdz\ccLe^ltyw 6KDOrxm&tun|H& =5' J& |=5N&u&j8HP|Wm'uQH' OQ{N& uQ&jT rxN&tun|&j@N'u&j:1&q;C&qN&uC&jN&'uB&jsB{N''u-B&js.'N&gu&jZ1&qr;n}N&q^ZN&run}N&j^Zk&run}Nf&^N'u&j^N&u2'jP| M2654&#"%32767%5!'&#"5>3 767632!#32767#"'&'#"'&PĢo\]jYqhRitVcdcccdd|}}|}|qt %#67654&! #&'&5476 b3+]$tS6]UPNONMRSQPZZ@LQ 4%3276767654$#"'6763 '# $54767'7L< !dSC<NCXFOOf[m >" @;HZcy!"E:9/?CUcdP2A?M  A/bOM:H-cPQ>H|1B32767%5!'&#"5>3 67632#"'&'#"'&254'&#"j\qhRit#1}}||0 5mo!ccccdco`d]:lx4a*,A[O? ?NV>䊊/By#4#"#76 B\Ȫbd`|~|~/C&3327653 '&\Ȫbd`|~T|~&쉈񜟠:`Y`ZX`]`:`Z`V,{"0#$32.#"67632#"'&'3276'&#"\ aVVQQR st}stts}tq]i,*K&˄&~rrrrrrr=5"${"Dk"% @q"E "%-q"E-"% q"E ~'k"Cv@,~f"vC~"' @q"G *~#-'q#-zG~"' q"G O~"'z[~q"Gz~&'*q&G^*WZ"(Q#HWZ"(Q#H_"(4A^{"H4@W"(Q{"H~Wf"(c @9z~QH"H# zK") v@]"I @Y"*2"V,"JI"+ @6"K #-+6#-KP"+j@6N"Kj>}"+z}6"Kz9"+59W"K5&s",J?"LB33@u:Z#u,a&#ab'k".Cv@,E`k"NCv@,b'".-E`"N-b'".  E`"N v5#-/K#-O53cq2@@nH1#q;5"/ DD"OC 33@5')/=')OIk"0CvB@,f"PvI"0 w@' FPI#-t0{#-P'\16x' Q#-16{#-Q"1 6{"Q ''16{''QZ"j2B#R5"j2B#RZ"j2B#RZ"j2B#RUk"3CvA@,Vqf"Sv2U"3 @Vq' S!"5 @H"U !#-}5H{#- U!3cqz2@@nH"q!"5 TH{"U m"6 @& %Vm#-6{#-Vmk"6# ZCv@,f"V" Vvm4"6#fVm" @" *-"7 r@f"W #-#-q7f#-W-"7 b"WC Y33@-'r'7f'&W"8.6`"X.?"86`"X"84p6`"X4Z"286p#X5"286#X>5h"9F:""Ym>5&9-:`&Y-^)r'|:k'C Z)r'|:m'vZ)4'j$:'jEZ)": @"Z G)":-`"Z-Jx"; @rJ"[ gxN";j>rJ"[jf."< p@n}N"\ f\k"=C@,Xf"]\"=-X`"]-1\"= X`"] 6"K ffN"Wj->"ZBn}N"\a#D]"A @=5"$-{"D-N=59#Ls$#D=5Z"$X#D=5Z"$2#D=5"$Mb#D=5Y"$#D=5m"-f"-O=5Z"$#D=5Z"$#D=5"$b#D=5Y"$#D=5"-"-`W'-(Q{'-HW9#s(Q#HW4"(CL@33Q""HZ"(#HWZ"(rQ#H"(b#HWY"(Q#HWm'-Qf'-p:#)t,W#`'-.,K'-L'-'2B{'-sR9#5s2B#xRZ"j2#RZ"j2`B#R"j2{b#RY"j2B#Rm'-'Bf'-sk"^Cv@,kf"_vk"^CC@,kf"_C9#s^k#_4"^C L@33k""_^'-'^k'-s_'-86`'-{X9#s86#Xak"iCv@,f"jvak"iCCK@,f"jCa9#gsi#ja4"iC L@33""ja'-i'-{j.r'r|<n}Nk&C!\."<-vn}N`"\-t.9#es<n}N#`\.4"<CyL@33n}N""\ws&pvs&0Hvs'vs'vs'vs'v&vv&Dv=5s'#W=5s'0Ws'|W$s&Ws'SW"%s'oW%f'QW1"'NWxs&Dzs&09zs& zs&%zs&Ozs&Rzs'[%s'0[s'|[$s&[ys'S[""s'o[^V6s'|V6s'0|V6s'|V6s&p|V6s'|V6s'|V6'|V6'|s']%s'0]s'|]$s&]9s'S]3"js'o]d%z'Q]t"'N],s'~,s'0 ~s''~s'<~s'Q~s'=~>'~9'~s'_%s'0_s'|_$s&_s'S_4"s'o_p%'Q_"'N_Bs&xBs&0nBs&eBs&TBs'Bs's'e#%"s'0e}s'|ev$%s&es'Se6"s'oews&=s&0s&'s&!s&`s&W&8&%s'0jb$s&j"s'oj6"'NjLs'^s'0Ts'Ys'^s's''c'^s'nN%Js'0nBs'|n$Ns&ns'Snt"Rs'on%'QnB")'Nnf&$tvfqf&$TzfrV6f&|$V6fs,f'$~QftBf&${Bff&$0ff'$MfVs&GHHVs&GHIVs&GHJVs&GHKVs&GHLVs&GHMV&GHNV&GHO=V5s'P=V5s'QVs'FR$Vs'FSVs'hT"V%s'U%Vf'V"V'2WV6s'G8dV6s'G8eV6s'G8fV6s'G8gV6s'G8hV6s'G8iV6'G8jV6'G8kVs'l%Vs'mVs'n$Vs'oV9s'#p"Vjs'Tq%Vz'dr"V'sVs'GYVs'GYVs'GYVs'GYVs'GYVs'GYV'GYV'GYVs'\%VJs'VBs'$VNs'Vs'"VRs'%V'P"V)'H& zv&qyvVf&GHVz&GHvVf&GHq"&nvV"&GH=5m&Wu=51&Wq;wf&WB$R=5fN=V5'WTsVgGTs'3)")&j^V6f'G8V6{'G8|V6f'G8sV6"&|V6"'G8f'[b$RAfPtf']n$RfQV']ms'$ Ms&/B.)']H' $~9'q~,'".~t;VW"'.~Y'0~gm&_.u[1&_q0;f'_q$RJfRfs'$0js&/_0)'0H& '&q$&"uVps'Vps'0"&'&.m&jvu.1&jq;f'j$R]fT%s'0g&j$lF MdfCVf'GYV`'GYVf'GY"'OV"'GY(f'e;$RfSf'$RnDfUuV'ns fv_s(dZ!!dZRdZAZ!!ZRZCZ!!ZRZE,"__J&BBBw#53OeO>(@w3#eO>(՗@w%3#eO>(E#5(>O՗@&II&JJ&KK #5!#5(>O(>O՗@@9; 3!!#!5!elekURcR9;%!#!5!!5!3!!!lekkelURRUR`"~%3#"ff~~"2&SS"&TSS "&uT F+9=LZhw"327654'&'2#"'&5476"327654'&'2#"'&54763#"327654'&'2#"'&5476"32654'&'2#"'&5476 c88pc`9889bRSRRSRkc88pc`9889bRSRRSRh\hc88pc`9889bRSRRSRc88pcap88cRSSSRRSRWVWWXWOnmmnmnOWVWWXWOnmmnmnWVWWXWOnmmnmnWVXWOnnnmmnmns 5sS+{z s75 5Sձ{--z^ L"K#N##=N'^O $2#547''676323#6?67654&#"#e 2"jKdN[qpo$"\X,fff`!Z<q0-T/VmTaaLE@ZV+4r~+!Y<(/1~|B_#"'&'5 76yYDDEDYBAAAn567632&'& [2YDDEDYBAAAK# {# { 3(!!V(p3#Ih\h= !#3#3!UhJT= !53#53#5!=UhJTQ&""f&"J'^";j2###rr\[޵jiJ 3##"&5463yWWv}~}|/( #;2+WWv~}P|}Kk {# #5#5def'>O#^/@/n&_^Ko#  B###Ha~_l"327654'&'2#"'&5476c88pc`9889bRSRRSRWVWWXWOnmmnmnz3#3#zttttgc !33##5!5.,\i`NZlr { ^t bu ct " &rG&F Au>R"r)'|1 "-! ! ! ! '32654&#%!2+# JR12)uyӲckkc?L00ey wXQPXdunukb'.=5]}Y-)% 7673 $54$32!"53!25&'&#"C]JjMo_zggJF__DM3TT<`xGZAEIpP3RQ4O )5!!5!3 PeS=QjM)/&'&'&'&76762#&'&'&747676>.EV( ?.HT(,'bHeGo,(bGeHovC2 };MXqvB1~67654'&" #676736763 "'&'5327654'&ilK8`kqQ?#T<e"0wsb~ usL5%&$\`RO_RU?eGc+{]^Zd4SW4*g]{1AY)D?BX[ >c:#$)734JD"{'5ud^D"t'5ud"{5`,&,,&,',,(&,9>59>e&9,>&9',,> &9',',,-&,;x;x{&;,x&;',,5/'&~'I0BL&LLp"&L'LpL&LY:`Y&YLD&Y'LDLf&Y'LD'LL$&L[rJ`[r&[L[r &['L[LDO{FqG{P  %%! ! 76) !%! 76'&)Rjxj(RQ/Qj~QXW'F{&d? !5!?$GwG/PG(G !'3(G(G/GwG$uP !7'!u/GwG$$Gw(wG$ #7$Gw(wG$$GwG/dP 5!7'$GwGGwG$PG(G$Gw(wG$%#7'3$Gw(wG$G(Gܛ$GwGGwG$1L %#7!!@Ve+dMc,dU1L %'!5!#xGc,eMFd1L !!7#xGc,eGVd,c1L #!5!@Ve+dVddPK !5!!7'!?$GwG/6/GwG$$G(GX$Gw(wG$#x #7'3$Gw(wG$G(Gg$GwG/6/GwG$dPK !7'!!5!u/GwG$$GwG/$Gw(wG$G(Gd?J5!!!!5dG//$Gw(GddG(#3#'#'3r(GddG(wG$//GvQJ'!5!'7!5!7QwG$//Gi(wG$dd$Gw(#!#7373#B(wG$dd$Gw(G//$Gw=5 %!#3!3@{rjeHS+W !5!!5!!5W9+QQ=S>5Z>5ZsY!5RR3#Ih\h%?P1U enmr#y #yy #y #yy#y y #y #y #yyDsQ#"'&'&'&#"5>32326sPJMv vHCJPJKx vHAQaOD;>MSaOE<>L@_! !! $<#u  u-6'Pq@5'\qj6'\q@Z'PdvZ'PdZ'qdZ'qdj6'q@^Z'bPj5'^\c4'ujZ'd^cZ'udcZ'xducY'~udY'^~dZ'd^dZ'd^d'^c'u]z'#"!5476;#"!!#!##5354763ʂf6BSUTf6B.]]UTN5AcNWVN5AcNNNUV]#"!#!##5354763!3#ʂf6B\]UTt\\N5AcNNWV~]!"!!##5354763#f6B.]UT\5AcNNNWV])-#"!5476;#"!#!#!##5354763!3#ʂf6BSUTf6B\]]UT$\\N5AcNWVN5AcNNUV~])#"!54763#!"!!#!##5354763ʂf6BSUT\f6B.]]UTN5AcNWV5AcNNNUVTL+/%355467676?67654'&#"67632 f,X\"$porZNdLiA}r=Z\!;~~~{4<+VZ@ELaaTmW.~1/(==93327673#"'&Y:9_^88Y PPPOJ**''Pw=>==.3#\\3#3#rRrRl#!#RRjﶺ_<22#J F@m #o Ff5j=3Kd d&?y==)3\\ ?buILL-y>{x.{\ f]99E9J+#frn3X[,[5j{~"_Fd5^5bs"5bJy=y=y=y=y=y=8\a\\\s3 LLLLLILy.if9999cPnny=y=y=ffff)3 3333T\9\9\9\9\9r\ 9?bEuXu9uuF  LLL/JJJ++++-#f-#f-#f.n.{\3X{\3X{\3X]}f3 }L 3{\1b59  Ly7+#f2#f-;u.pn{\3X\8] ` d <Ksday=\9Ly=y=83?ULL9 ` d <3y=8LyPy=y=\9\9LLJJ+-#fy=LLLL.n9AAy>fSS{uccuqnIV <uuss c  qDHRqD"cvu#nno::efesF=Dty==uy>{\L\?by>IL-.L{xLu\s.FS<F SZnxvJxG;Gtf9LJ,u\\s\ h\J,?bZy=}=u6dr?bhIL-ZL{x6|44}?m`hnSAA` IGf;.nUrr$tdc'd+99c90`"TAnLLGLuSf.ny-x.|9rny=y=8LLrnSAALLLdZnZnZn|f9 3fyqyqy@/3X4;y====f)))))]3\9?\u9a?bE?bE?bEu9u9u9Eu9IIILLLLJJJJT+++++-#f-#f-#-#fy>y>{xr{xr.n{\3X{\3X{\3X#fn]y=y=y=y=2y=y=y=y=y=y=y=y=r\p9W\9LLLL`LLLyyyyy;;;;;.n.n.n.nFFFFFFFFy=y=$'i"%"SSSSSS%$0l"%$7h"x%" %$"%"o%$"E%$"."k%$"_%"FFSc<FFFFFFFFy=y=$'i"%"%$7h"x%"k%$"_%"FFFFFFFy=y==y=<prt\\D..{%FausVdd,%%%%99"W"" 33?nnKV`Q/KnKn5lnz5c5l55^5b5c Quu?by=}j=^\by>a>> >W{xwx xu)I9~} ]rrr9f Hedud1111dddvy=y>y>Vn+xxxxxxxxxxxxxxxxxxxx] ] ]]]4D2l*.r9a}au/&DDDkkDaak)}/DDa}9DC}&&9}k}}k&a DD}aaauYN}k}aaa kkDaakA?ka&}kD}VuaD)kKr9KD &&&/<}kDNk&JRfJ.hL0 j N 2   lP4nJhhhhhh         Pn   JJ     .... l PPPPhhh 040404  n 2 2 2 fJJh  lPhLP h   .hh  h    hh0404  hhhh n  fffJJJJJ      . l l lPPPPhhhhLL04040404 j j      N N n 2 2 2n                    hhhhhhh n n n nRRRRRR66Jd`b  "$&(*,.0468:<>@BDFHJLPRNTVXZ\nl &&&&2p44444446::::BBBB^HJJJJJTTTT\4446666 8 8:::::>>>>@@BBBBBBDDDDDHHHHJJJJ P P P"R"R"R"R$N$NN&T&T&T&T&T&T*X.\.000<6 >DHNN&T\ DH4BJT&T&T&T&TJ444>JJ4444::BBJJ P P&T&T"R$N@4:JJJJ.\LJJ88::>>BBJ46 8 8 8 8 8:::::<>@@@@@BBDDDDFFFHHHHJJJJ P P P P"R"R"R"R"R$N$N$N$N&T&T&T&T&T(V(V*X*X*X*X*X,Z,Z.\000@N\444444444444::::::::BBJJJJJJJ&T&T&T&T&T&T&T.\.\.\.\ddddddjfjhfnl,@|8*:HTb*H2v$ Dn2B`xN  0 H ` r D v P v  4 h J l  `n:l l8F~$`|"2BR@LXdr*8Z|6BNZhv ".:T(6BP\ht:FTbp|,:b &4BNZf .:FR`nzR    ( 4 @ L Z f r ~ !!!!*!8!F!R!^!j!v!!!!!!!!!!"""*"j"""#0#v###$ $Z$$$%F%d%%&&V&n&&&&'''\'h't''(<(((())8)D)P)))**B*f*t*********++ ++&+2+@+N+Z+f+t+++++++++++,, ,,$,0,<,H,T,`,l,x,,,,,,,,,,-- --$-0-<-H-T-`-l-x-----------... .,.8.D.P.\.h.t...........////(/4/@/L/f/0(000t001"1T1122P2X2`2233H3n3334 4$4^4455@5n55555566H6777&7.7J7^7r7z777777778&8`8v888888888889999$929@9X9f9p9~9999999::::(:2:<:F:P:Z:d:n:x:::::::;; ;; ;.;<;P;X;d;p;x;;;;;;;;;;<< <<$<<F>>>?2?f????@ @@:@z@@@AAJAlAABB@BrB~BBBBBBBCC>CvC~CCCCCCCCDD@DHDPD^DfDDEE EE$EIjIIIIIJJ2J:JNJVJ^JrJzJJJKK4KRKKKKL,LfLrL~LLLMM MM"M\MMMMMMMN*NnNvN~NNNNNNNOOOO2OPOnOOOOOOOOOOOPPPP&P2P>PJPVPbPnPzPPPPPPPPPPPQQQQ(Q4Q@QLQXQdQpQQQRRRRR&RZRRSHSfSSSSSSSTT TT$T0T[J[V[b[n[z[[[[[[[[[[[\ \\"\.\:\F\R\^\j\v\\\\\\\\\\\]]] ],]8]D]P]\]h]t]]]]]]]]]]]^^^^(^4^B^N^\^h^t^^^^^^^^^^^_ __"_._<_H_T_`_l_x___________` ``"`.`:`H`T`b`p`|``````````aaa"a.a:aFaRa^ajavaaaaaaaaaabbb b,b8bDbPb^blbzbbbbbbbbbbcccc,c8cFcTc`clcxccccccccccdddd&d2d>dJdVdddrd~dddddddddddeeee&e.e:eBeNeZefere~eeeeeeeeeeffff&f2f>fJfVfbfnfzfffffffffffg gg"g.g:gFgRg^gjgvggggggggggghhhhh(h0hoHoTobonozooooop2pHppq qq(q0qtntttuu6uRulutu~uuuuuuuuvv0v:vPv`vnv|vvvvvvvvvwww$w2w@wNw\wjwxwwxxHxxxxyyn "" ???[gfe F~ II$LL&OO(` ??????? L(4x $&bb.   ``  ???????????????  ~~;_L x/I ~ H 4   ! ! !!"I"#! ! !!"Z"#!!8 !" "m"#,!Z!"$" "#=!p !!"6""#P  *  b ^ 4 d 0 " :  &f h "    Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain DejaVu LGC Sans LightDejaVu LGC Sans LightExtraLightExtraLightDejaVu : DejaVu LGC Sans ExtraLight : 17-9-2006DejaVu : DejaVu LGC Sans ExtraLight : 17-9-2006DejaVu LGC Sans ExtraLightDejaVu LGC Sans ExtraLightVersion 2.10Version 2.10DejaVuLGCSans-ExtraLightDejaVuLGCSans-ExtraLightDejaVu fonts teamDejaVu fonts teamhttp://dejavu.sourceforge.nethttp://dejavu.sourceforge.netFonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. http://dejavu.sourceforge.net/wiki/index.php/Licensehttp://dejavu.sourceforge.net/wiki/index.php/LicenseDejaVu SansDejaVu SansExtraLightExtraLightAll Typographic FeaturesFonctions typographiquesAlle typografischen MglichkeitenFunzioni TipograficheAlle typografische kenmerkenLigaturesLigaturesLigaturenLegatureLigaturenFractionsFractionsBreukenAll Type FeaturesToutes fonctions typographiquesAlle AuszeichnungsartenTutte le FunzioniAlle typekenmerkenCommon LigaturesLigatures UsuellesNormale LigaturenLegature pi ComuniGemeenschappelijke LigaturenRare LigaturesLigatures RaresSeltene LigaturenLegature RareZeldzame ligaturenDiagonal FractionsFractions en DiagonaleDiagonaler BruchFrazioni DiagonaliDiagonale breukenZ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ sfthyphenAmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandicLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongsuni0180uni0181uni0182uni0183uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191uni0193uni0194uni0195uni0196uni0197uni0198uni0199uni019Auni019Duni019Euni019FOhornohornuni01A4uni01A5uni01A7uni01A8uni01A9uni01ABuni01ACuni01ADuni01AEUhornuhornuni01B1uni01B2uni01B3uni01B4uni01B5uni01B6uni01C0uni01C1uni01C2uni01C3uni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DEuni01DFuni01E0uni01E1uni01E2uni01E3Gcarongcaronuni01E8uni01E9uni01EAuni01EBuni01ECuni01EDuni01F0uni01F1uni01F2uni01F3uni01F4uni01F5uni01F8uni01F9 Aringacute aringacuteAEacuteaeacute Oslashacute oslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217 Scommaaccent scommaaccentuni021Auni021Buni021Euni021Funi0226uni0227uni0228uni0229uni022Auni022Buni022Cuni022Duni022Euni022Funi0230uni0231uni0232uni0233dotlessjuni0238uni0239uni0245uni0250uni0251uni0252uni0253uni0254uni0256uni0257uni0258uni0259uni025Buni025Cuni025Funi0260uni0261uni0263uni0265uni0268uni0269uni026Funi0270uni0274uni0275uni0280uni0281uni0289uni028Auni028Buni028Cuni028Duni028Euni0299uni029Cuni029Euni029Funi02A3uni02A6uni02AAuni02ABuni02BB afii57929uni02BEuni02C9uni02CAuni02CBuni02CDuni02CEuni02CFuni02F3uni02F7 gravecomb acutecombuni0302 tildecombuni0304uni0305uni0306uni0307uni0308 hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni031B dotbelowcombuni0324uni0325uni0326uni0327uni0328uni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni033Funi0358uni035Cuni035Duni0361uni0374uni0375uni037Auni037Buni037Cuni037Duni037Etonos dieresistonos Alphatonos anoteleia EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni03DCuni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FDuni03FEuni03FFuni0400 afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061uni040D afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097uni0450 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109uni045D afii10110 afii10193uni0461uni0464uni0465uni0470uni0471 afii10147 afii10050 afii10098uni0498uni0499uni04A4uni04A5uni04AAuni04ABuni04AEuni04AFuni04B4uni04B5uni04BAuni04BBuni04C0uni04C1uni04C2uni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8 afii10846uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F8uni04F9uni1D02uni1D04uni1D09uni1D0Buni1D0Duni1D0Euni1D0Funi1D10uni1D11uni1D12uni1D13uni1D14uni1D16uni1D17uni1D20uni1D21uni1D22uni1D26uni1D27uni1D28uni1D77uni1E00uni1E01uni1E02uni1E03uni1E04uni1E05uni1E06uni1E07uni1E08uni1E09uni1E0Auni1E0Buni1E0Cuni1E0Duni1E0Euni1E0Funi1E10uni1E11uni1E12uni1E13uni1E14uni1E15uni1E16uni1E17uni1E18uni1E19uni1E1Auni1E1Buni1E1Cuni1E1Duni1E1Euni1E1Funi1E20uni1E21uni1E22uni1E23uni1E24uni1E25uni1E26uni1E27uni1E28uni1E29uni1E2Auni1E2Buni1E2Cuni1E2Duni1E2Euni1E2Funi1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Auni1E3Buni1E3Cuni1E3Duni1E3Euni1E3Funi1E40uni1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Auni1E4Buni1E4Cuni1E4Duni1E4Euni1E4Funi1E50uni1E51uni1E52uni1E53uni1E54uni1E55uni1E56uni1E57uni1E58uni1E59uni1E5Auni1E5Buni1E5Cuni1E5Duni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E64uni1E65uni1E66uni1E67uni1E68uni1E69uni1E6Auni1E6Buni1E6Cuni1E6Duni1E6Euni1E6Funi1E70uni1E71uni1E72uni1E73uni1E74uni1E75uni1E76uni1E77uni1E78uni1E79uni1E7Auni1E7Buni1E7Cuni1E7Duni1E7Euni1E7FWgravewgraveWacutewacute Wdieresis wdieresisuni1E86uni1E87uni1E88uni1E89uni1E8Auni1E8Buni1E8Cuni1E8Duni1E8Euni1E8Funi1E90uni1E91uni1E92uni1E93uni1E94uni1E95uni1E96uni1E97uni1E98uni1E99uni1E9Auni1E9Buni1EA0uni1EA1uni1EA2uni1EA3uni1EA4uni1EA5uni1EA6uni1EA7uni1EA8uni1EA9uni1EAAuni1EABuni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EBEuni1EBFuni1EC0uni1EC1uni1EC2uni1EC3uni1EC4uni1EC5uni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED0uni1ED1uni1ED2uni1ED3uni1ED4uni1ED5uni1ED6uni1ED7uni1ED8uni1ED9uni1EDAuni1EDBuni1EDCuni1EDDuni1EDEuni1EDFuni1EE0uni1EE1uni1EE2uni1EE3uni1EE4uni1EE5uni1EE6uni1EE7uni1EE8uni1EE9uni1EEAuni1EEBuni1EECuni1EEDuni1EEEuni1EEFuni1EF0uni1EF1Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni200B afii61664afii301afii299afii300uni2010uni2011 figuredash afii00208uni2016 underscoredbl quotereverseduni201Fonedotenleadertwodotenleaderuni2031uni203B exclamdbluni203Duni203Euni203Funi2040uni2042uni2043uni2045uni2046uni2047uni2048uni2049uni204Buni204Cuni204Duni204Euni204Funi2050uni2051uni2052uni2053uni2054uni2070uni2071uni2074uni2080uni2081uni2082uni2083uni2084donguni2103uni2109 afii61352uni2117uni2126uni2127uni212Auni212B estimateduni2132uni2134uni214Bonethird twothirdsuni215Funi2160uni2161uni2162uni2163uni2164uni2165uni2166uni2167uni2168uni2169uni216Auni216Buni216Cuni216Duni216Euni216Funi2170uni2171uni2172uni2173uni2174uni2175uni2176uni2177uni2178uni2179uni217Auni217Buni217Cuni217Duni217Euni217Funi2180uni2183uni2184 arrowleftarrowup arrowright arrowdown arrowboth arrowupdnuni2196uni2197uni2198uni2199uni21C4uni21C5uni21C6uni21C7uni21C8uni21C9uni21CA universal existentialuni2206gradientuni2216 asteriskmathuni2218 thereforeuni2235uni2236uni2237similaruni23AEuni23CFuni29EBuniE000uniE001uniE002uniE003uniE004uniE005uniE007uniE008uniE009uniE00AuniE00BuniE00CuniE00DuniE00EuniE00FuniE010uniE011uniE012uniE013uniE014uniFB00uniFB01uniFB02uniFB03uniFB04uniFFFD dlLtcaronDieresisAcuteTildeGrave CircumflexCaron uni0311.caseBreve Dotaccent Hungarumlaut Doubleacute@%2%%A:B2SAS//2ݖ}ٻ֊A}G}G͖2ƅ%]%]@@%d%d%A2dA  d   A(]%]@%..%A  %d%@~}}~}}|d{T{%zyxw v utsrqponl!kjBjSih}gBfedcba:`^ ][ZYX YX WW2VUTUBTSSRQJQP ONMNMLKJKJIJI IH GFEDC-CBAK@?>=>=<=<; <@; :987876765 65 43 21 21 0/ 0 / .- .- ,2+*%+d*)*%)('%(A'%&% &% $#"!! d d BBBdB-B}d       -d@--d++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++P`       !! #" >> ?? @@ CA ^^ __ `` aa bbcc gdkh qm srutvv zx {{}   @ BA DC FE MH OO      $" 0/ ;1 >< @? UA WVXX YY aZ bbcc dd qe rrytzz~{      micropolis-activity/res/dejavu-lgc/fonts.scale0000664000076400007640000000371010724145723022010 0ustar simcitysimcity21 DejaVuLGCSans-Bold.ttf -misc-dejavu lgc sans-bold-r-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSans-BoldOblique.ttf -misc-dejavu lgc sans-bold-o-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSans-ExtraLight.ttf -misc-dejavu lgc sans light-extralight-r-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSans-Oblique.ttf -misc-dejavu lgc sans-medium-o-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSans.ttf -misc-dejavu lgc sans-medium-r-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSansCondensed-Bold.ttf -misc-dejavu lgc sans condensed-bold-r-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSansCondensed-BoldOblique.ttf -misc-dejavu lgc sans condensed-bold-o-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSansCondensed-Oblique.ttf -misc-dejavu lgc sans condensed-medium-o-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSansCondensed.ttf -misc-dejavu lgc sans condensed-medium-r-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSansMono-Bold.ttf -misc-dejavu lgc sans mono-bold-r-normal--0-0-0-0-m-0-iso8859-1 DejaVuLGCSansMono-BoldOblique.ttf -misc-dejavu lgc sans mono-bold-o-normal--0-0-0-0-m-0-iso8859-1 DejaVuLGCSansMono-Oblique.ttf -misc-dejavu lgc sans mono-medium-o-normal--0-0-0-0-m-0-iso8859-1 DejaVuLGCSansMono.ttf -misc-dejavu lgc sans mono-medium-r-normal--0-0-0-0-m-0-iso8859-1 DejaVuLGCSerif-Bold.ttf -misc-dejavu lgc serif-bold-r-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSerif-BoldOblique.ttf -misc-dejavu lgc serif-bold-o-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSerif-Oblique.ttf -misc-dejavu lgc serif-medium-o-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSerif.ttf -misc-dejavu lgc serif-medium-r-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSerifCondensed-Bold.ttf -misc-dejavu lgc serif condensed-bold-r-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSerifCondensed-BoldOblique.ttf -misc-dejavu lgc serif condensed-bold-o-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSerifCondensed-Oblique.ttf -misc-dejavu lgc serif condensed-medium-o-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSerifCondensed.ttf -misc-dejavu lgc serif condensed-medium-r-normal--0-0-0-0-p-0-iso8859-1 micropolis-activity/res/dejavu-lgc/DejaVuLGCSerifCondensed-Oblique.ttf0000664000076400007640000053407010724145723026313 0ustar simcitysimcityPGDEF5B\GPOS{L\!8GSUB'$OS/2xN*VcmapeJ8+0cvt 30feat2X@fpgm2gasp3$ glyfw@30üheadr:96hhea [ $$hmtx+DH~kern\cU6locaoDl,xLmaxp }E: morx%P:name^I&DpostoA-prepuy^propwh x<ijjkpqqruvvwyzz{}~    tuz{    ./:;QRSTVWWX$ ^DFLTcyrl$grek4latnDkernmarkmkmk" $"<^6(BT&pBXv~@@Jdjpz : $ * 4 : @ F L   J |   . x $*d Bd79k:;<&:79:<IWYZ\&':&&&*&2&<&&&&&&&&&&&:&9&!$NDuHRNNNNNuuuuuuu&<:a4k$&28:<HRX\}}}01:7Y89 :N<}\}&Y0:}}}K9;*aa$D8DHRVDDDDD!#0K&&79:<D/\///////&&:K6 "+$7&DaFaHaRaVkZaaaaaaaaaaaaaaaaaaaaaa!k#k&& DD$-5D22$u2DDHDLRDX}\uuuuuDDDDDDDDDDDDDDDDD}}}}DD1}KK0kNN$DNHYLRuUX\NNNNNNuYYYYuuuuuuYu1&&$&2,$a&DaHNLRNXNaaaaaaaaaaa<NNNNNNNNNNNNNNN)1N&    79:<IWYZ\&':79:<IWYZ\&':79:<IWYZ\&':79:<IWYZ\&':79:<IWYZ\&':&&&&& K$9<:}}K9;K9;K9;K9;K9;K9; DD$- DD$- DD$- DD$-,$a&DaHNLRNXNaaaaaaaaaaa<NNNNNNNNNNNNNNN)1N&&9&&<:7Y89 :N<}\}&Y0:}7Y89 :N<}\}&Y0:}O7Y89 :N<2\2&Y0:2}}&79:<D/\///////&&:79:<D/\///////&&:K6 "K6 "+$7&DaFaHaRaVkZaaaaaaaaaaaaaaaaaaaaaa!k#k&& DD$-DnFUGaHVIJaLMP}Q}RUSTaU}VWXYZ[\]7,$a&DaHNLRNXNaaaaaaaaaaa<NNNNNNNNNNNNNNN)1N$-/79k:;<&:$-/$-/99:9;9<99:9 79:;9<YZ&:^$%&'()*-./123456789:;<=INRUYZ[\  "&07:?d r "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntzg'*r,q#aDDDDDDDDD\D:DnDjDyDjD\D>DqIDDDUDD^yDvDq;DD>DvDMDeDDDRDDDDDCDXDXDDDnDD DDPr$%&'()*+,-./0123456789:;<=DEFGHIJKLMNOPQRSTUVWXYZ[\] GHIKOQTU^_`himtuvw Zabo$$ "(.4:@FLRX^d-D-D-D-D-D-D-D-D-D8D-D-D-D-D-D-D-D-Df|rr-Dr-DDuDuDuDuDuDuDDDDuDuDJ>f  (;kkkk$$ "(.4:@FLRX^d-D-D-D-D-D-D-D-D-D8D-D-D-D-D-D-D-D-Df|rr-Dr-DDuDuDuDuDuDuDDDDuDuDr& C $*06<BHNTZ`flrx~gRr),qR2   z$RRRRR|WRP $=D]4679:<=oo?@B  rx~pprug!djpphpphhg\loh 4:@FLRX^djpv|f<<<<<<fffff<N<"$~ &,2PPPY Y Y Y Y Y [GPPPPPY Y -DY  nDFLTcyrl*grekFlatnT SRB ccmp,dlig2dlig8frac>ligaDligaJloclP $,4<DLT8hr 000&LM P$=IIKKLMOO      ""$$&&((**,,..0022446688:;==??AAGGQQSSUU  hk| ^h "(.4:@FLzyxwvuzvqjWSQQRQ Q,F`r   QHLRX\eD * ""> *4IOILIWWIVAJ 4 "*2:BJRZbjr7F75F51F1/F/F~F~ "2F20F0&.68F83F3F4F4 "9F96F6:F: LM !"#$ 33f Pq PfEd m`p~!A?Xauz~_cs [w{-KcEMWY[]}  & 1 : < > I p y !!!"!&!+!_!""""""" "-"C"H"a"e####!#%#(#}##$#&&<&G&g&o')*+ !$PXatz~brCw{0Ph HPY[]_  0 9 < > G p t  !!!"!&!*!S!""""""""'"B"H"`"d#### #%#(#}##$#%&8&?&`&i')* +ogUQNIHGFE75' }|<:840,$ ~yws >;431.,&YLF@=;D&H><   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}byqz sLjq{)j/s3fbwPP;f=fRBsJ}s jjb\jjjj jj)R`fX{Hjj``'''Djb{sj\)'\jj=fHf JJ }T{3`}TjNNs04 <, %Id@QX Y!-,%Id@QX Y!-,  P y PXY%%# P y PXY%-,KPX EDY!-,%E`D-,KSX%%EDY!!-,ED-[!%!!\4r)m >32#"3#7R328 T14,o-0pNN87N#!#D++|#! 33!!!!###!5!!5!L6\]^J]_]\9J?^aabbN=# 1%>76&'3.7>73#6&'#. h~Va^yL_1aqUĊ.Z.YI.b diOє/Z/VD n_VxiXPj!H@  1)t 3#  &76Ov>MMv4<Nw7&'&547>32#654'&#">?!#3`\n>T\Qbn|qT # =a-f*0c] NrLg&\{eNf+'qTpGXVb4;e== """ Y28qZ((:sPikk`D#D+t &7Ȍ>>2=<5xmcdmbjj[ 76'7"==7xȌ>>bj\]jbm''L| %#'-73%|`D z D`D9 z :նv}vw}F !!#!5!LϢ11$>?3$ap%E%ZC,s!!_3s >32#"R419 S230pNN87NlB3#pm^6 $  "32J;32!73!7>76&#".e.k]"& k0 j=硟p|q 9< mĖ&)>32#"&'332676&+732676&"#+qUż%iZ2eV-i!e,. ׫23"f~  !73!73!!3W33j%m k)%!>32#"&'332676&#"#$K5N))\]3fx""tQ32#"!2#6&#"fDe!"@Jaɺ((=EmGL+eccFȽKJy^ej #!#! i<uo1\69 ,6&  66&#"326#"&7>7.76$  qpvapobop$$Ϟs  v͟ҟϴ=:##"7632!"&'7332" 676&QJbȸ((+=EGM,dbbiDd!#cKJ xRel%"|ɽy>2">32#"}Se8Rf;R337R320pNNpMpMLrLy>?3>2"ap%Se7 SeE%ZpMN78M^F 5EZ~ѦfF!!!!~~^F55~//y !>32#">32#>76&#"#S319 S23hK ,o9hqg)W0pNN87N/.ֶ3H+ʜ{h?L%#"&63273>76&'.#"3267#"$'&7676$3276&#"326YCSFTv' -HQU,)DMtd#r[^?" N P3/Dfgm\nfRPPR%oT&']gw}LLF]]{GF~b|i}r!7333!73!3Mzvј7ʩjkjjHj$%!2676&#!732676&+73#7!2!W y䔞sˮ 'jj~}jkäU`#"&'&7!2#.#"3267`քGQ0=(n=e9:חGdap\@Am%3 !#73#7! !WRl[?=>6jLlHjkvt##73#7!#7!!73#7!!73::o%W!oWo!Hnx%n:jk 5#73#7!#7!!73#7!3L:o%W!nVo!5qjk ~jUt6&#"3267#7!# !2::f^Caޝ=>7s>88kMM_b;<e#73#7!#!#7!#3!73!3 ZZ pHqjkkkkjj~j %3!73#7!#W jjjkkV7733267#7!##"&)g?Oko&2+@~ca9kk"#73#7!##7!# 3!3 c]jjkk5kk3jj[ #73#7!#!73 f,oBjkk#73#7! !#3!73#3o߫}ʫjk'kjj~j#73#7!#7!##3&YWmŵjkf/kkyjU %2#""&'&7>3 9:9:ˉGQ0?xj%=xjNQJKQkdapjpbcVobc32676&+73#7!2#!3톩p|!"`jkjo0 '&54767>3 ;#"'&'2654'&#"̒gyi$d4$b!ica-:1S:1Sӓ\ipbcՕ\im:C@RRQJmcmd(#3!.+3!73#7!2%!26&#!r373!#!#7!3t(o>>n(uݫj` jD#7!# 6#7!# u 22;ʾ;jkkkkS]#7!###7!U.jzkkjkkx!###7!#3#7!#`nWbݛBjkk9\kk] 3!73 #7!##7!# 3!73O[C}8,jjskkkk?jj[T373#7!##7!#3^~ajkk\kk,j #7!#!!730 (I'o=& $n:HZH!#3!>^jjB##m !73#7]jNjF # #\IJ}-m!5fmPPJd#idx=E%%3!7#"'&'&77676"32674(>LLcP2 >ܼܠ6_0,sq!Ujjd0/wKh=HaޖQ=>*SN&(#7!>32#"&'#3267654'&#"LEtBoU8,o 1~&-~!jmd_fKU_dO?[n#?QY>kDM4ceB|V##654'&#"!!#72767#73767632WG]_ ơ _.0 ccݼɁb/,s~"'s}&&h`\Zŏd_wKh=Ha"Q=>*SiX3#7!>323!654'&#"YDxAa9"clmthjVlne=fCUjjgE=!H]>32"'&543!#7!#H+)GT Dq.D" /B! jk9'>32#"'&54#7!#"&'733267PH+)F+*"CљAp2&UJQdq.D" /B! Wkq!!>!-{L 3!##7!#7!` GEۉ jhj kkL%3!#7!EjjjUD/>323!654'&#"#654'&#"##7!>32Dc8!drdogt dohD!@ZpXuwh>eBSjN8>$EK6>#Dijp{#D3#7!>323!654'&#"D!Aa9#dlmshklne=fCUjjgE=#HND!%267654'& "'&5476 څ(0(0sdF,3dE,FhQ`?uhPa@uckEN2jENOVqD(3267654'&#"'#7!>32#"&'#0~'.~EBnT8,nhHiO?[LKdQ2 >ܼݮ71 ,sr!Ud0/wKh=HajQ=>*SD#654'&#"##7!>32/_DzhD!Dn(W)4'ioktD;?33267654'&/&'&547>32#654'&#"#"&+`)5|o#ps,ުLR(`(3ihz!r|0"];N-;]Y/ +1-,B/A,*I-:RR-)*-/G2F ,eq#733!!32673#"'&5479:7v?AJ}!/ kJk]O. &U_G+P3A~"'33!7#"'&547#7!3267|!A`:#d;#"38~'-M77v-'8=\2rzqA2>ititݓhXឈ"X#A$3267>7.76&+732;#"+S?~\2o|pA2=~?8|'-M88v-'9W"WhtitݔF'#"/&'&#"5>32326EZTV USPZUV XS'XTB 9IMWQB:Jy[ >32#"73_R319 T23-n,R5pMN78N5}L"%#&7673#6&'>7w&%Lq;nj/Z/ñ**/Z/RA0_PXS&,+ .'{ i l]#6&#"!!!73!73#73>321^TVr4sf(i=h4$L?_ekjRk']\<#.7'#"&''7.5467'7>324&#"26+U&%%(V2k>:p7U%%&(V3l>;nIfeˍ^z@Fw9^,*(pprT$373!7!7'!73#7!##7!#3!!!3@k 1~Uk@joiAikk\kkizTij##  =w A>76&#6&#"#"&'732676'&'.7>7.7>32E@ $;F f(#S OOZy Vto>,ӜQ@$S S`^~XgA1ЖF.S5&`9KHSaSamc_~,/~[PQbTq zc^1~Oa7!2#"'&7676!2#"'&7676+ #$.- %%* #$-. &$!#"03!!!!30"##"03!!!!30"#5,D#"&54632#.#"3267  .546%"3267>54&'.˦HNKf_kmljXeaaaavvTTVVTTvvTTTUST=%'mf_cnnn^^]僂^^__^]⃅]^^@597#"'&54767676327337654'&#"327676!!(6;;BU.) ``}$0qrt7W== ;R?>tM,+C:^.6wv ;TvXvV =$)RS3)@&0LL|h # 77 i#ssRssRF^!#!^C,s!!_3s5$<N32654&+3#'.+3!53#5!2"3267>54&'.  .546&pKJKJp&5hEv 8,RKJJusvWvTTVVTTvvTTTUSTaaaaLKJL3(DF/DDCpmS[j^^]僂^^__^]⃅]^^gnnnKb!!du "3264&'2#"&546E]]ED^`B9k&*)yyfiMLfgk1.-rBF !!#!5!!!L~yy#7>32!73!7%>76&#"?A>|ZC#-ZX FLFb "hzlKMzBUcL*>32#"&'732676&+732676&#"#F~5|s qXhXAx8? KSTkK[0 Xf "H;!####.76$j`a !k/NݸBL >32#"& S319 T2388MN78MLuy!#"&'732676&'+.%e&M'"E3E@p1QY 5-X<U 73?33Uo\Tzj^T%( 26&#""&7> !!`|6E^^~EQ;>l-8Lװbh]# 7%7]H]F#^R^sXXs^R^sXXU8'd&{FU/&{'Ftd8'd&uF3: !#"&7>32#"&7>?3326736S319 S23 hL -n9ire(VpNN87NP/.ֶ3+ʜ{rk&$furk&$urk&$|ur^&$ur\&$wuNm '6&#"32!73.7>23!73!3@99^ ?99yv:.u\Gۄ7˪~YWA?XZj%zSrrP#jjHj]I#!#73!3!73#7!#7!!73#7!!73[Z:Ôv:o%W!nWn Fn{$o:MjHjjk Uu`&&zn#k&(u#k&(u#k&(u#\&(uk&,[u8k&,{u>k&,{u<\&,[uv %3 !#!!73#73#7! !_Sl^."k_[?=>6jLlH}1je}kvt^&15uUk&2uUk&2uUk&2uU^&2uU\&2uD   ' 7  _haafbfP13p4pq3  +.#"32>'7!"&''7&7!27+o:*p9; 32#"#"&'7332676&/.7>gkw #:F{MLA)bQ\d3]DR9wZj8l]4M/7cr%#eiyhTuI6ARz=d&DC3=f&Dv3=f&Dk3=7&Dy3=!&Dj3=&Dw3.sD5@I%#"&7>;76&#"#7>32763 327673 '&/7#"326654#"$[p jth U%^MOt`6i3\z$]d F'{cigey4 [XIxcc)),?Dce&"^>n#?QY>vzoB|NuD&FzNd&HCUN f&HvUNf&HkUN!&HjUd&CZf&vZf&kZ!&jZ$%-.#"32676&#"7632.''%.'7%'H$'%e&c&,+)1C- /$-QfG< pاy/"5k7N:QV^DN#7&QyNNd&RC^Nf&Rv^Nf&Rk^N*7&Ry^N!&Rj^Fy 4632#"&4632#"!!F22FF23EF22FF23~8MN78MLpNN87NHm +.#"3267>'7#"&''7.763271[C( ZC( +,T39),3U1:o99Hv1g=;Ly3Jv56?Ms232?~"d&XCA~"f&XvA~"f&XkA~"!&XjA9%f&\v='VI(3267654'&#"#7!>32#"&'#}1~~'.~0EsBoU7+ogHiO?[323!654'&#"YԟD';Aa9"clmthzvjzlne=fCUjjgE=!HU^'Tu,b7'y@2'q<,c'qRm'!Nu,H'uIw&,"xQ2w&L"x^&,"Eu'%3!#7!<DjjkV'-,]9-'MLVEk'u-9f'kS'.LS'.Nw $!##7!#7! 3!E[ۊ  kkkj[m'Qw/Ll'vOS['`/LS'O['$n/L'O'y/L 'yl}Od#73'7#7!#%!73T/t Z"-?9j9*D,654'&#"##7!>32#"&'733276~ms gD!Aa;#њ@p2&UIR21hgE=#Hklne;gCV!!>!-><U2'q^<2N&q^RUm'!u2NH&u^RUk'#u2Nf'zRZ!%# !! )#7!!73#7!!73673>=[C:o%W mWm!Emy$ojjb_ ND=%26& 654#"$327673 '&'#"'&5476 6763 څO_O_bey4 6i3\z$]d dF,3d `F82B|y&"^>n#?QY>kEN2ce(l'v56&v;US('5SD'KU(k&5uf&Ul/5l'v66&v;V5k'u6f&k V5u&6zutD&Vzr5k&6uf&Vl Wu>&z7Euq'z^WW>k&7ouemM&WW>373#73!#!#7!3#3det(o>>n(uddj=w@`wj;q&#733!!3#327673#"'&547#739:7(4 ?A%&}!/ 4zykJkO. &*+_G+P3A,D^';u8~"7&yAXD2'qu<8~"&qlXDm'!;u8~"H&uAXDi&8wc~"&XwIDk'#;u8~xf&zgXgD'x8~w"''xXxr&:|gf'kBZ[Tr&<V|9%f&k.\[T\&<nul'v=6&v;]p&="e&v*]k&=uf&]l'#654'&#"#"&'733267#737>32WG]_ơ=t7#XH\`ǡON"H&+327676'&#"#7!67632#"'&'!73#7H!10~TV&'.-~TT!._J^BTSoWoBC edqqppeed/0 /0dj@j%!2676&#! 3 )73#W ynVcC'jVvjv& 32676&#">32#"&'!73#7H!a~&'[~!tBoWo ʿmd_ _dj~&6$32!"&'332#"`=քGQ0=Kn=e:9חGHdapU@AXSIHSL^6#"&'&'&776!267632#6'&#"#4'&#"32767`փFQ =(nwU[SNgA882'U%JRc(fUU׌99QQזooGlkdap\ (W:<!`--zYYPO;1#"'&7763267632#6'&#"#6'&#"3267|Add,-ZV**)V?pA882&V$JR21)`35vYXQ/1k-? H5!`--==@@st4tt|}vm"#6763! )7; 76!#LP!t6ljY[Xg tjlH$] %!"3#3! &7676!3!#rXXzb'mVX%n:jNMkkjސvL+76'&#"3276!#3!7#"'&32!#!01~UT'&-.~~USZBSToUTWoCC]J_ieeppqqdejjd0/60/dT1D&2%#"'&'?27676'&#"'&7632" 76&7dd0[[_"f99GK8XdcYddYDtXXP/0 YXP`18DCY.-14B_ KCuu8uttu1)3!!#3!!#!#3+:o%xmH oWn W%n:9LqLkU!*"#6763 #"'&'&'&?!'&!3276sooG`%=KJxkyzkiGQ H1USc3USݎOPklVpb2122apG1ܜG])#6&";#"32673#"&7>7.7>32].e o-U"e3lj$ݪyU~f32ѫ .VZ"'7332767#7!#7!!73#7!Yx)g"k79%K:n$X!oWo!5|7^VDKM9k =c7+#654'&#"!!#"&'733267#737>32WG]_ ơ=t7#XH\`ǡ>6$ADqd'U^v6P DnpkӚ_bTM9jpj&jjjf'&'&#"#76763273!733!73''%:06 T#0-/*d//'ldHm('\D.-|bVskk"kkcV3%#"'&7#7!#32767#7!#32767#7!#3!7#"&Dc88$>doJK?doJK!@Zpuwggjj+]^jj$]^jjijp{V733267#7!#7!###"'&)f"Oko&YWl+٬?@c019kf/kky]V(D 373#7!676323!736'&#"3D!ASSar&7"msMMUjRkl77kkIH^]jU'"&'&7>3 '276!'&#"mGQ0?xj%=KJxjzzwݎ<+MS&JSގ~<dapjpbcVpb21k$ܜP'2KD'VRo+7"&'&7>32676323!736&#"'2#"FQ1@xi};9E@ƌ,٫&:kO0 =KJyjyzw::::dapjpbcT(kkږ0pb21kQJKQpVFD'476323!736&#"#"3226& *>A9R: cYY2҂ˆP_P`  kk{ 328#!2#!3!73"#676327676&+bb!"`LP!tU$0\6Y5MQt'톩pjkkrM4RqV%;D(BmjU2%#"&7676?>76'&#"#67632327673wwo&^^°>@[]+e7ts^!``̻==HGcb#gH3ٟ_^=7+ҾaaA;7::lGFRQ8D1%#"'&7676?67676'&#"#7>32327673`]YXHH0/ ..ii`)`LCC32 32p|JI_;,,WVoFG/-*)(CR))tg*,fBB,-1++FY/.;;w9 0"!276'&6?3327673#"'&7&"# 76!2A $' Z )}!'RJ/-V&>=>AGX--&RK0k{_H>~=_@@VmQ>.,`"]s]=Z9_q'#733!!32673#"&'733276?#"&7n::8v!?AK}>К@q2'U !#7!3!73"#676>n(uݫMO!t>io jjY[dL$V~+!!327673#"'&7#73767632#6'&#"7v"?A%%}SK//wihE482&V%JR11'k]L*+_CCGFk_^!`--=;|Vd#"&7!#!#7!327673HDF@Ƌ,u)o>=o)u&mO10f"5`NK10c' 8t;A'XZ .!#! 766'7!#7! '&'&'&7676ri4 on)0]^1)o 5iӭ%JKuijjIR%L-F骩6FӉW֗g[`0/\gհ%!'&7#7!#766'&'7318X# t1,;8aAL&KLti{e Ae kk}B/ rSٗd[0'[7%3!73#7!#632#6'&#"N^~{<<92'U Ir:jjjkk\k!`--Hl9>%#"&'73326?#7!#62#6'&#"B~d*W*$T)61G2^m]zT%f&U JO|[D;=\kk%.`--!!73!7#7!!#!0rb$n: MI'o=& H,<ZH'73!#!3#!73!7M& _2w"`4Fj#VijVz #2#"&7#327676'&/7!37!@@#`be9Y`_j픕)!FFF>%e9mjiiii)"pqI=n'%TefŬcd9|}xy}`f6H'#"32673#"'&7676?7!#7!qdd">>%e9mjhjii)"pqI3_ &efŬcd9|}xyVݸQf&#676323!!73!767!7!67676'&#".e.kgg]"0 j=% V O79|R_q 9‡0m"!~UUGGu #"&'332676&#!#7!#7!32"%iZ2en:n$YxMH23"tk6'$#"'&'3327676'&#!#7!#7!FF$)i``X8eb`"@@^Z/^JI yx}|9Ddcfeiakq%33##"'&'73327676'&+#739e=H((hhA981&U JR21!"Rh.qjM^]]"`,.><<>jD #+DG&lm!7!3!!!!#!7!pNTSM$NTSNS Ѣ D7#7#{ΒΜ9c k&'? f&'@$pf&G@V&/-9&/ML9l&OMNV &1-M9l&1MM9&QMrk&$Wu=f&Dl[k&,auf&lPUk&2uNf&RlYDk&8'u~"f&XlCD'~"2&q<D'}~G&tD'~6&~tD'j~"&tPDr'(=2&qw7s>if88kkkMMӕ[hb;<>9D;#73654'&#"3267#"&'73326?#"'&5476327!#3> 0~&-~P(_I'Whp"BnU8,nDAkM>[LKdP2 >ݻܠ6_0,sr!Uk(P栠PG?XW@AWXjd0/wKh=HaޖQ=>*S]Il'*v.sk'w l'vmf'_rk'$u$<f'5Dr'u$<H'4D#k'$"u(Mf'WH#'u(MH'VHk'$u,d&5='u,W&+Tk'${u2Mf'`RT'Du2MH'_R(k'$u5f'1U('u5H'0UDk'$u8~"f'CXD'u8~"H'BX54&6]4tD&VW4>&7e4q&Wnek'u+W'K/jO 9276!"76&#"3262; !"'&'#767#"32#7! #!`~'&[~-&L0' Z SoXoaB3k{_H>i]=G=_@@B6 /76_d)j=#7!#!!3'6767 (J'o<& %:`8%HZHZPE^=Op'37!#!!3'6767& _2%:`8)Vf#VZPE]EYr'u$<!'4Du#'(MuD']HT'N72&q<T'N02&q<U\&2"sN &Rv^T''Du2N72&q<[T2'q<<9%&q6\%, %376'632#"'#767'&7#7!w-|do)#T g$E*E^m|iG UeOj%D4%3766&#"3!73#7!>32632#"'#767'&7-|d#=mtU5D!Aas&)#T f$F)^m|@ÑjjRkln֐WG UeOu%.q&%376 632#"'#767'&7#733!y-|d%J*"Tf$F)J:97^m|XiG UeOkJk9 '#7!#"&'733267SBњ@q2'U =IRdkq!!`Z{$t 776&#"326732676&#"7#"32#7!>32#"&'"a~&'[~"a~'&[~"BnWnaEsBoXniʿd_76_d)jmd_ _doVD 0=6&#"326773>32#"&';#!73#"3232676&#"N!a~'&[~!T BoWoU"UBoWo n"b~~&'\~Hkk;d_ _dkkd_76_dir"#73733!73!3#'7#;!Y=E; 7X90{;A,,j=.hGjjHj99V:$.'7&'&7!27#&'32673#"&/7&'&#":(=(nvY`<5e  QזG`׃G^iT:$9EO[\ *GJ;daqYJ *'7&7327#6'32673#"'7&'&#"9D&,4[V10r9f-`/l-A矼cb%4v)^?ɐ1 {?n9-t|}|N@v[#73#73#7!#3#!73[g gYf,oBj LkkO>373#'7!#7!3 vo-5U$v>n(usRtN)MjyRG9lBEf=j^J:9D?32673#"'&/&'&'7332676&/.7>32#6&#"#"'2&G'>U$0\61J'+`j|p GpsXݪLQ(`fjhy Cr|_2/!];D(32+32673#"'&(|dhhLLb9D` 67wcV&]VTNTUvzoGGD.jsJFIyCBdb)mnMD\D$27676'"'&/#767&'&767676'&(7+`=cST++ߙA:63f[ [/  -~k1zgdS)&-2ziv$oV7$C;%oi4;^2Kyuz8Q{eq{ &'867632#"'&'!73767632#6'&#"327676'&#" BTSoWoBC )ihA972&U IR21!10~TV&'.-~TT!Ed/0 /0djc]^!`--=;*edqqppee)D>32#"'&'33276'&#"Add,-[VVR/a54vXYP0/k-課0@@sttt|}^%D.%76632!"'#767&'&77632#6'&#"C,}ģ}-'T g$d-,[VVR/a45uXY(\m}G UeO 0@@stI9'8327673#"'&?#"'&32#7!76'&#"3276VRJ..V'=>>AGG)BTSoVTWoCB `B!01~TU'&.-~TTh<>--`!]^&d0/60/d)jieeppqqde$%667632#6'&#"3!7#"'&3276'&#"327686hhA882&V JR11BSTnUTWnDA)"01~TV&'.-~TT4]^!`--=;jd0/60/ieeppqqdeGD!7632#"'&'33276?%!6&#"X6,,Ѯ\[ :;m\\& crzRRXX}?@nmj_^PD!!76'&#"#67632#"'&73267_&66mQP2Fy{de,,ZZ10{r.'nm?@}XX̕_^MD-9#"'&7#"'&7&'&#"#67632%332327676e6N-UgE= ,YF6mQO3Fy{df 03J}+0{xLJF N0]Qk̕vp>,m?>XX!%=;>+eU^_\;)2067632#6&#";#"32673#"'&76767&'&dd1[Z`'arU!TRPM'@ha(fe`Ha`lJpF+P*DCYZi>i2D"'767632%3327#&'&7'"'&'73327676'&+73276UIHa'ja`1MGf 13J_060!4NhE= 7Mg7O}~G\^Y)a h]98;SS!-.YC?u=;>-N& \Q#6NOP$fjR2Ot<>iQLD9"327676'&+7327676'&$%67632#"'& R'F0- Q 8a><67|""|IH*+<6R:_JBRRPQ~v87ڱ$b0 %{ 33`i54d54j_34KS4MMfGHGGg9R'#7!3##"&'733267#73SBVdњ@q2'U =IRdckjȤ!!`Z{8j9 :!"3267#"&'73326?#"763!767632#6'&#"(B#&[~!#(^H'Vhq#Bo,&6hhA882&V JR20Htp|}&&h`ďd_76]^!`--=<A9''!##"&'73326?#"76!"3267qz(^I'Vhq#Bo,&B#&[~"'k[&&h`ďd_76!tN;(76'&#"32767#7!#"'&77632r0?luge**>67E4 0 2G]ffmfe-,LWRZ/!Z/@ywtdMn8+8+#7!##7!## '&327E/ʉ !/kk?kkc}ԐȵƊB%62#76"'&'&#76763276\+ ^+=؛pͅSvZ+&\Wjb $gJ;s9K0jlXlBNlhQVE'3#"'&7#7!3267#7!3!'YARS`:9&c<GHjjc]^!`--=;%3!73#73#7!3#2676'&#" >CDW1TG)+$$jjjfjkj/!!B/.""""' #7!3"'&jD}RHD_]k8<=c^Y' %3!73#7!#< jjjRkg(%3!73&'&#"#67632#7!32673#"'Do&V;;RdE'9V;;Rjjj~('LJI;jPKJI+%3!73$7672#7!3#'6ʜ?"'O+kEܞA5jjjj8dj ccriX9#7!327673#"'&7rERJ..U&>>=AHGj<>--`!]^ 6-#7!#3!73#7!!#"'&'3327676'&Vt& \tEV `FGF")i_aX8eaa"@@ffjj@jVyx}|9DdcfecD0%#"'&7#7!32767#7!32767#7!3!7#"'&DTVc87$d;r>doJKU6t doJJU6!@Zp@@u;=VD23!73#"'&'#"'&7#7!32767#7!32767#7!^@Zp?@DTUc78%c;r?coJKU6t doKI U6kkjp>=qu;3267632giA792'U JR21>doJKU:a doKI U5D!@Zp?ADTUc78$Dh^]!`--><]]jj,CD]]jjTijp>=qu;<$kl77jjIH^]9D.6'&#"3!73#7!67632327673#"'&7j"msML U5D!ARTa;:&RI/.U&>>=AHGjIH^]jjRkl77ec<>--`!]^'#73#7!#7!##3}}YuzjRkkk'UIWuppo R M|{`6K=2326'&'&3276?#"'&76767! #"'& 7P@0zO ?P7Z13/NM]22$)&e$XY]22(xjlͩjx(POpoOQj=f=jQOopOPHV#+3!73&'&767#7!#'676'& 4OdX{?@OdYyO=>AGDo65  ON^^jj<>Z`!]ZXD#6&#"3!73#7!67632/_ 8DzRQߞD!DVVn(+,)ON^^rjjio569D+#6&#"327673#"'&?#7!67632/_ 8DzSQ>AGGSTD!DVVm)++)ON^^<>--`!]^hio56l=%3!73767632#6'&#":[hiA882&U JQ30jjj j^]!`-->>=AHG[j j<>--`!]^jjj'(3!.+3!73#7!2%327>'&++L[>>nDwQ!??BBkb67%&` IgRb:yggYgJJf??.3323')#!73#7!#32767!#327>'&#k,,YYwDm>*(=-&@`86%$b??fJJgYggybRgI K32339DB327673#"'&?373332676&/.7>32#6&#"#"'RJ..U&>=?@GH(`56yp GpsXݪLQ(`fjhy Cr|_]Td<>--`!]^w;8]YFV1-,f,*gtRRCQ*-/o9'#"'&'733276767632#6'&#"hA882&V JP3Dh@982'U JR2C ht]!`-->Pnr]"`,.>Qmi9.3##"&'733267#73+7;7>32#6&#"DcКAp2'U %6'&#"#767632327673#"'&G"'RJ-/U&=>>AG_4"(PJ..U&>=>AG_hGnQ=--`!^|nP>--`!]}9i 02767&# %# 76!23767632#6'&#"#76P5< !El$&hA882&V JR1D"_$ Z >H_{k~G=]s]"`,.>QmV@@_#D%3##!7!6&#"#>32:97v"?A%%} //kkJkL+*_FGRV q#733!!327673#"'&7::7ɻ!?A%%}!0/kJkЇL+*_FG(h'(!3#3!7#"'&?#73#7!!#!32766W?!ARS`:9%D ee $&bA@o`cIC#$FDKaan@j.Ιppppgf. '"3#&'&7#7!7676'&'e::78UMZ[aNEkD|Sp|e!%%b@o`cIC#$^S]k8<<kgf.'3!733!73mHsk'Dkk%kk'!3!73333!73]ckÊawtkPXy>-kkDkkuK 3!733!7367632#6'&#"^mHskC??c+++*#U62#$2kk%kk|-.D)?#7%#7%7 6ЫB~8h3ooHooj9'37!#!!327673#"'&?& `3i%QJ..U&>>=AJGVf#V҃;>--`!]\hB'%276#"!7!#!!2!#+9^& `3;)#"wlcyVf#VEȾ6 '##7!#!#"'&'3327676'&Ut& `3_FFF!)j__Y8eb`"@@f#Vyx}|9Ddcfe66 '$, 76676'&+7!#!#77&"2l%C8"@@Ut& `3_FFF!)f,dz6V{fef#Vyx}K56{_Jn!7327676'&#"#7>323+7iQ20""QJ/.V&>|A'(iWhoj><¾<>.,`" ^Mjj#!+73&'&767632#6'&#";3pf<<>*ji<";##"'&'73327676'&+#7oe=H('ihA982&V >IQ30!"Qhj M^]^!`Z=<<=j9C'767632#6'&#"327673#"'&7hhA882'U JR21(RJ-/V'=>>AGH}7^]!`-->;<>--`!]^@ %6'&$"'&762:00~0/~~]\{\]7%$pJ 565565j'' #!73#7327654&+327654&+WAl_323#?.iQ20""QJ/.V&>|A'(iWhjjjfj><¾<>.,`" ^Mj+!+73#737&'&767632#6'&#";3#3?f<<>jj$  ',76&#"326!!73!+7#"32#7! !"a~&'[~-"`4~BnWnaBp&!iVզd_76_d)j};I607D#7!#3!7#"32#7!!#"'&'3327676'&%76&#"326Vu% ^uBoXoaCW`FGF")i_`Y9daa"@@a!a~'&[~ffjd_76_d)jVyx}|9Ddcfe8i2B8=%276#"%76'&#"3276!3!2!#7!7#"'&32#7! !^9z!01~TU''.-~TT- 9)#!v!BSTnUTWoCBaBp& lcyieeppqqdeVDȾd0/60/d)j8eqF#733!!3267332676&/.7>32#6&#"#"&'7#"&79:7v!?AJ *5|p GpsXުLQ(`fjhz ""q|00]Q L^kJk]LU_19;]YFV1-,f,*gtRRC(*)-.HFo,, C{9a@#"'&'7332767!32673#"&7#733!6767632#6'&#"mh@982'U JP4D v"?AJ~!^v::&hA882&V JP3D hs]!`-->PnC]LU_kJs]"]/.>Qmiu%q=E632!"'#767#"&7#733!!32767&77632#6'&#"76ψ,'T fK^v:97v"?A%$-[VVR/a45vXY(1,}Ţ G UXGCkJk]L**]z0@@st\m}9OA!73!3!73#737>32#6&#"!>32#"&'73327676&#"39YƢ<Ñj\%4>32#6&#"#"'&'!73#7! 332676&/.}ުLR(`fjhz ""q|00]T 'ES^j|p GpsX ,*gtRRC(*)-.HFoj@j'wv]YFV1-,!!73!#!73#7! !"`4|Eq&!'Vj@j};*c)#73## ##7!##73## ##7!#HEU BUDRRB  `>EU BUDRRB  `>5/<<C<>AGG)\"msU'jkl77<=--`!^]HGj9B76'&#"#767632#3267#7!3327673#"'&?37#"&7 RJ..V&>>>AGH)\"nsU4)RJ..U&>>=AHG ASSar%v'<=--`!^]HGjY<>--`!]^h=l77~!73#73676323!736'&#"3 ]b C(2432#"'#73#"'&'7332767Z , a r@@_(##5.3 4&&4'&#C 67VKZLS)Y&%~Hu.)v<"!<#$=N()***7*!$xR#73## ##7!#pEU BUDRRB  `>/<<C<7 P\ @?[ >?3P\ NLF@?xy[.73TkF !FP[?672676ʠ 9_ @9 h:9(UV=>X@?X=>POPP"'&6763"3g:9(UVh :^ ?: PPOP>=X?@X>.#327676'&#"#7676323+7NGE4 41 9(((*d/1C7D>f elg ""mj""6z 44}5+;;#.!+73&'&767632#6'&#";3lf e?B(1CBd*%% 806>&5EHg ;d+5}44 z6DjmDi;9xf3# #Ohifzf33 hhx3YXKbqH@3YXtx!#33#]7$7 llx3#7x#g#hSR:J 733##7#7!!l)H 327673 &pV()55W#uHO#$$#O 7! 2"'&767aW #$\ %!#"03!!!!30"|t "&67626'&#"3276't(UV:H  :;.. !;9/0g栠OPP?,,+,@A+,,,"wr!33267#"&7>Ud226"=f` H{/.8  YQ1iI7"'&'&#"#6763232673#"'&y* &W:;R") '9V;:R"Z7('LJI!7PKJI\f3#3#Hghfxt%3327#&'&7,f 03J_1515NgE= c=;>-N( \Qi#%x#7!#7#7!##"'&%3276i] [ goq  bπW  '<<<#!ECOKQS LLw=76BB2'0J9R/. : !..&('>U01 7#73#3!73'3#737'#7!#S S͖Q OhQ SӑM  K<<<<<<<<#.!+73&'&767632#6'&#";3lf e?B(1CBd*%% 806>&5EHg ;d+5}44 z6DjmDi;W\#!7Vs \W\#!7!Vr!4\x(W\#!7!Vhr!g\PPcW\!#!7!3f4r!(x/W\)7!3f!ϩM>?3%>?3P\ P\ F@?[P@?[IdCfv8wfkH7yJb~qf fk)Hu 7!v_7!jl2#767676'&#"7676 & rfI,TM^WC8:$C q|<:_"'&6763"3g::)VUg:^ @::OPPP{X@?XB 6733!7R_(%##7#7۔RG% 733##7#7P%!!kR۔9h'#"&'733276?)КAp2'U </9e%332673#"&7`)QJ\U&>{A<>Z`!!rxJbvfAxLbjA:A2fw`~4d >=3~E?54id*pPgIJ6Muzfwxfd3CC~bf#!#7(BB(y&Ckb#"3327673327673#"'&(9N'W1 B"V2 C"V=KN  J5tbl1dk0ChbuE:duKoey.NfqpfmBff]fuQ'9'&'&#"#676763232767673#"'&'&#"#676763 s]\5H  W8;baK_ t\\5H  V8CYVW^ s]\5H  W8;baK) 9>(&;=3)B 9>(&;F*)F 9>(&;=3):7!jj:7!.jj#'9Q:^??&'/:;9EG@ey]lbY ?[g3!00Ca`b&CAb632#6'&#"#6'&#"#32?9N(V2 C"V1 B"W=KN  JPU '77''TpU}L}TpU}Lwuhtthuuhtth!|.7>77>76'&'zEN*zEN0PQX$  +0PQX$  f 'ff)7!v #&'& #676<e!!N:`wwww`Tdtf3dtdVH%#HPb ?3?TD&01g(Ղ] y>?3>2"ap%Se7 SeE%ZpMN78Mf3#jfa7/'xjrf&#BL >32#"& S319 T2388MN78ML\f'9f'4)f'4rf& f'f&+'Zr$%4Jc)3bby#(=e+U +#3!73#72#""&'&7>3  oWn !nVo!9:9:ˉGQ0?xj%=xjbQJKQkdapjpbcVobc,.r%3!7333!7vјjyjjkjj01#%73!3!#!##3!73#7o::oo:::o6 oWn  oWn L]LcU2e#3!73!3!73#7dGݫkjjjjk3 !73! !#7!ln:,Q:o$.W>7[T<^'093!737&'&'.>7676?#7!#67676'&'X?,rfv_HDVkMX?,sis>h c9gPf(*]Jh*(\F/OF! ajja !FOOHdkkdHZvmVcVmvZ];11;#"3!73&'&6+7321#7!#67622\Q61{./Qb06"R\43*D/ Gd"#kwijj i~3k_Ckk|C_'%!73!767 !3!&767> .i4 )0p1)o 5i-%uiIR;%椉ӶF7SF-W`֗g[`_\gH\'gu[T\'~uMf&[*f&V(f&Df'Z~&N MD$2'&'&7676276737'&' &'&7677+`=cST++ߙA;63f[ [/  -~k1zgdS)&-2{hvoV7$C;%oi4;^ΝKyuz8Q &{eq{ V-732676'&+7327676'& 7632#"'?%BDV-r\K /SFVIqJRBMMwKHI2J;Z]kH=EOq08tdTS(ml^\SJ'%'&7#7!76'&'73TG9>`\2R= ) e\ 132#6&#"LD!Aa<9&"=msklnebÑA+'&#"!32762#"?2 $dY?1 %eY9ұвJ@AkK+J-' #7!7'&uD=.|jF"k#JyuzP'##7!# 3!733!73#7rHۊ )Қ50'kckkjjjjTi &'&#"#7676323!733!73:06 T#0-/*d//ldHm\D.-|#kk"kkRVQ'#7!3267#7!3!7#"&'R;l"=msU6!AQ3NRVfkkAhjo$$+&'%6767676'&'73##7!>vUsJ#> e]5* %Sm焧Dt0tFld\Fa ;1mTfJ=,g\,k6UB)"3$#7276# '&76767&76%!#!(`1p^SX!)&+:_/J8)@k>moHrZLlwVe z&NDR'#73#7!#3!73!367QjRkkjjRjVD32676'&#"#6767632#"&'F!a~&(/8sw\TҦ+dkBXtWo HihzoeOzr#. _dqU D %$#7276#&'&732#6&#",p_dd-,3[R/`hv()11HrZLl1/0qrP' %2676'&'" !!#"76܅($-)SX&(`4os/-Y|Flmuk3|z'7'&7!#!t=-~jFu_/kf"KyuzP k'"3#&'&7#7!767'&'e"%)78UMZ[aNEkD|Sp|e!/+O'Oso`cIC#$^S]k8<<k;f/`V-)7#&'&'&'&76767367676767676'&#"UJ195/ (RJe aN+0 I(=fг:%(!;FS?:>E!'NDE.-1V!E@l4W??4>sUD!0*P e!%(!;FS?TT$K@lp4D;GD38$C5"CR@Vk̶?Jg* ptL\ #6'& 3!73' }f `PMKZAo\  &ue 6jjk{R sef'Z \&Su1V#%676'&'#&'&7673'pEYP0%FUdYRQTdYFXP0%K\ut^y-e^t8u\< ' <!##&'"'&'&'&76767#)767673767'&'(!;FS?TTPTH59/ *P* 2"/3*1!&t>4W??4>sUD!0'k;ZxV $%2#"#&'&'&7>3 :::9FFTLjFQ1@xj%=yizVNQJKQfn #2apjpbcVob2"pV*D%26& #&'& P_P`GFRdY2Y}F8]m{2|xU#"'&'&7!2#.#"%$#7276rLQ0=(n32#"&#7!#"&'733267PH+)1 F+*1CљAp2&U =JQdq.DD./BBzkq!!`Z{U !! 6'& "&'&7>3 :KBSEq<GQ0?xj%=xjQ}dapjpbcVobcNE+%673#&'&'&7676767676#6'&!!Z7N\T+7dM  /gWQK0` 86ubTBFKAc2:/BA>NiS6E+% !7!6'&'&#676"'&'&'&'3US  uLP&`0[Y`faa) 3z!7(NF4FiN>AB/:2cAK32676&+73#7!#!2#!3톩p2&!"'jkkj'VI 32676&#" #7!>32#"&'}"b~~''\~HEsBoWogHiOTjmd_ _dU`#"&'&7!2#.#"3267`քGQ0=(n=e9:חGdap\@A#73#7! !#3!73#3s<o߫֫jkAkjj+=jVM' !#3!73# #~7.z̦'"fhjvqVDD'!!#7#736767632#"&'32676'&#"K[[,clAXtXnI"a~'(/9rx\Tkppkzr#. _dihzoe*&332#"#6$3 #"&*9:׵Bf<n(< xiSHISXA@UpadU` )>32#"&#"&'&7!2#.#"3267 R419 S238\`քGQ0=(n=e9:חG8MN78MLdap\@A*& )#"&7>32332#"#6$3 #"& R419 S23859:׵Bf<n(< xi9LM87NMSHISXA@Upad#k&Lu#\&Lu$E6.6'&3!73!#!#7!67$#"&'733267x=]ga\<)n=>n(#sL rO!M+@~<)g>Oko&ϴ5Q[Vokk`l&+rI""ca4k&JuU`! '&!2#.#"!!3 O|(;f;w+.Xz=56,e\&=uV7-D$,)73!#"&'7327667#7!#3 326&+L 2l}U#~<g83If%5xZl5aH0:zPj""VQsǦ2kkbK(%326&+)73!3!73#7!#!#7!#3 ƕ9y@L pGp ZZ Zl5bGjKPj~jjkkkkbr%#7!67$3!736'&3!73!#=o)#tL rO">> =]ga[<(o=l&+rkkd5O[Vokk`k&Quek&O+u5&Zz74#!73#7!#!#7!#3!"BR ݫ [(0qjjjjjjr$" !%!267654'&#!!#7!3 )73#W  )=9:o%YVc1'j7.]4NVd%'j%4 %3!73#7!#7!WL:o%jjjk $3!74#!"#326767#7!#33m}%QZ(0`KXj/.6xKZ! eqM\m2kkU#(h%3!73!73 #7!##7!##7!# 3!jj_c c%jj[;j3kk5kk5kk3j&0  '&'3267654'&+73267654'& #6{\I4 $PhO5\-AV-Ĵ%4Ν!e.x[ kLk-3kRi92X3+b>Zj+%P0E~Ze#73#7!#7#7!#3!733 < jkkekkjjje&Or.D%!#"&'73267#7!#3!7d2l}U#~<g4e0\15xj""Ob$2kkjj0e+U2e#3!73!3!73#7dGݫkjjjjk3U`&W>75%#"&'7332?#7!##7!#~w%|=fB2L8VجRq""dK}Tkk2kkb.`&2=!#32+3!737#"&'&'&547>;7#326654'&+";z Ąᄎn[A.e7N=/3J0 ~kb͊bjjb?K5|:;T?b [F=WA8];74#!73#7!#!#7!#3 P9 ݫ KqkjjjjT!#3!73! '&547#7!#;#7`cH7 7'8mkjj#rU+19kk0)Y7PrkU%!#7!#3!73#7!#!#7!# ݫ  ޫ {jjkkjjjjp74#!73#7!#!#7!#!#7!#3 Pn ޫ ݫ KqkjjjjjjTK %32>54&+#3 )73!#5(f+X#s1 M$o:j.]kDm18LjL3&c,=m %3267654'&+)73#7!#3 W )<L X6`1j7.]4NLjkkDm1*& !"#$3 !"&'3!2!7!6^Be;3(e>-;x X֕\hF"z_2)9%3!73#7!#!67676763 #"'&'&'&7!276'&#"X ]C3Kxizz$=KKxizzikFQ`܎::SSݎ::SSjjjkkwcpb12Vob2122apzJK#.7>3!#3!73#"!73>%!"3}!gXsT3jf4hkjjLQ%jR[OIԏ=ED&G6(436767632#"&54?67676767>"3 5_m@C|mHEZ56Ҩ:Ѥ  /*p\HP\RPK c6_wG 42lGn^! D@H$EQ-B3hXY8R'' #!73#7327654&+327654&+WAl_qdF,3d3qGl9_FuKY!NhPjrkEN2;_SoNDH'%3!73#73#7!##7!##7!# 3#FmynFLdcN^BnnBr^Mb~dqjjjsjjtjjtjj j#2,"'763 #"&'&'3327654&+7327654&!5^#ۜRQ^E|E\oTgzS+Td`ȴ@*O^`aO>Ry@MlEuj3=b:Y~"'33!7#"'&547#7!3267|!A`:#d|K7K}2LMȼjjjjDۘO'!#3!73# 3!73#7#w0Byg'%jjj65jjSj'3!73!3!73#7!#!#7!!/HIH/88jjfjjSjj=jjNDR#DQOVqDSNDFUDP9%'\2Ve&3@#7!7632"/3!73#"'&5472'&"2?26764'&"TEfI3^u.$0H0HJ4\vdF-5$1(0+Ix1).)iF2DN2EfjjF2jEO-2F(kk('[')73#7!#!#7!#3#7654VD^ iTjjBjj{ s'#7!#3!#7!#3!73!"'&4;"  8^C/54&+##!#3 )73[~LZXl/L;E6jpu<` j$(j' &%327654&+)73#7!#3 3!73#7!/Z@SLZ6;E/j8Jy<`jSjj$_jjSjl[' %327654&+)73#7!#3 /Z@SLZ6;Ej8Jy<`jSjj$6E-% !7!676'&'&#676"'&'&'&'3US uLP&`0[Y`faa) 3z!7(NF4Fi A6AB/:2cAKD#3!73#7!#3676 #"'&726& n>0A0YcVO_O_jjTikٌ͙w8'%.46763!#3!73#"!73>%#"3kKYY"1Dm?Q>-Dh?bm?bjeJJjgg:bg I:KhddHXNd'ClN!&j^l9)."'7332676&#"3!73#737#7!!!>32d&V =JRcv"=|L5ºD'gD@r&jg9B`Z{ÏKjjVwsjwyln%_]f&jvANE+%673#&'&'&7676767676#6'&!!Z7N\T+7dM  /gWQK0` 86ubTBFKAc2:/BA>NiStDV]L!9M"')# !#! "'72>6?#732>54&+:W"5/j<|J?^<>N#!lX[~MZX'jl,t/ӔO}lMȼj?px<`g' *%32>54&+7 )73!3!73#7!#!#7!#X[}MZXPD6fHIH/88;fpx<`n%,ffjjSjj=jj*%!!>323!736&#"3!73#737#7!gCAr%]7R"<}N5ûD7wlnjjÏDjjVwsjf&qvA~"d&Cso9%'z')73#7!#!#7!#3!"#7654lZ'(] iTjjBjji sj$0!#!#7654+3 )73#"#!7#3267654'&# t3dQ06`1 LZ'd3sr )<kg rCm19Lj!gv7.]4N (%32>54&+3 )73#"#7!#7!!#654#p[~LZO;E6NX"X( DEV (XPjpu<`$(jSzi dUMD%#"'&54 %32765 厾Y:;z; =wV hV|fJS2JNjSChN33#3#!73#732676&+ж,+l3dG' zp}bj}~ q33#3#!73#72>'&+1::::C3gfe [~!,+[WH'Jk\EKKfVk?p78eh %3!73#7!3!W4nHjjjk%`"X 3!3!73#76^K둀D'1TjjTi5!!3!73#73#7!#7!5ml]L:o%U{jjp{k'!!3!73#73#7!#7!V<D<CZ/^I={jjX{iE5,3!73#7!#7!67$#"&'7332676'&=L:o%rL rO!M+@;)f>Oko&L=^ga\jjkp&+rI""ca5Q[V9'(3!73#7!#7!!2#"'733276?6&#m=DZ/^I<C38$2jh~e'U =IL81'"<|jjTiem_]B`Z>5Ïu&&Nz(#u2&nz!3!73#7!##7!# #476'j c]K_ Zjjkk5kk4T'!733!73#7!##7!# 3#76#5Қ5/I܊ D^ ZjjjTikckk{ #7!# 3!3!73#737#7!#3/]j Y5kk3jjj}kk}L#7! 3!##737#7!!uۉ  GԞE'ekkjhzvjz##7!# 3!3!73!#c\i%n:k5kk3jjjLL'!##7!# 3!733!73##EH܊ (њ5/l'kckkjjjjWe)73!3!73#7!#!#7!#3#4pHq ZZ K_j~jjkkkkT>'!73!3!73#7!#!#7!#3#76#?HIH/87D^ ZjfjjSjj=jj{!3!73#7!#!#7!#7!3!73Hq ZZK:n$~jjkkkjjI'!3!73#7!#!#7!#7!3!73.JH078Z/_IDfjjSjj>ijjE 267$#"&'7332676'&3!73!3!73#7!#1L rP"M+@~<)g>Oln'K=]ga\<Gݫ|ʌ&+rI""ca5Q[Vojjjjkk9+'.3!73!3!73#7!#!2#"'733276?6&#=0I0@AC38$2jh~e'U =IL81'"<|jjBjjTiiem_]B`Z>5ÏUu`&Xz+NuD&xzZW>373!#!#7!3#6#t(o>>n(uݫK`Zj` T>'373!#!#7!3#76#^.k/^E] ZjB {[T<jV'%#7!##7!#3!73mgkB3kk%kkkk]!733!73 #7!##7!# 3#6#[C}8,K_Zjjjskkkk@T>G'!733!73#7!##7!#3#76#z|NurpۄD^ Zj>jjkk3kkw7{W373!#!#7!!#7!#3#6#t(o>>n(u<ݫ J`Zj`jjT>S'373!#!#7!!#7!#3#76#^.k/^`D^ ZjB Bjj{!73! &7#7!#;#7!#3#6#`"77po K_Zj#9kkǘrkkT>'!!73!"'&7#7!#3!#7!#3#76#?Oko&L=^ga\= ch +rI""ca5Q[Vojjkk5kk9'.3!73#7!##7!#32#"'733276?6&#<40Hۉb38$2jh~e'U =IL81'"<|4jjTikckkem_]B`Z>5ÏEe$%!3!73#7!#!#7!##"&'73326|Hq ZZ 0@~<)g>Pmj%~jjkkkk""ca9'%!3!73#7!#!#7!##"'733276lJH078jgd&V =JQ33hlfjjSjj=jjۣ_]B`Z>>)"#3! &7#7!#;#7!#3ZX_K_"77po "9kkǘrkk'!!#"#3!"'&7#7!#3!#7!#3Z(']D=JL,;! 9]CW6%MTjjs-#jj !#3!73#jjj@ri'u!G=-&u"gr\'wuG=!&j3g]I.sD#m'!uLNH&uUlUPPDU\'uP!&jQh\'uM!'j%m&\&N u#!&nj x6 '=e2&Oq]<~"&oqe\&Ou~1!&ojU\'uUN!&j^uU+ND U\'uN!&j^*&\&d`u6!&j.52&Zq<9%&zq=5\&Z[u9%!&zj=5k&Z#[u9Of&zz=\&^,u!&~j5#73#7!#7!3#6#L:o%ݫK`ZjkT>'#73#7!#7!3#76#Z/^JD] ZjTi{3\&bpu!&jOD 8?32676&#"'>32+32673#"&'#"!76&#"#>323267 ({dhhVZp jsiV&]N"Rjص.&km2Ena{r-vzoF[XIxcc))WZXY*}[Ժ;D22#"'&'73327676'&+7327676'&'&#676/ʤPQ}u87ٲKRSW&Y0/ja=<57|""|II*+bg(+c`DgGGHGf%]-.43_j45d45i`32\|a_tJ -#"'&547>2#7!3!CH+)GT C.D" /B! jDkPD(/" 6&!76&#"#>32>32#"&'#"73267EP_ P`&lm2Fu1OuYw.Snٴa{r.8F}ba`cc``c)dD 6& #6 '_(,3,2V  673 7z(_ '-]-2Uz!73##!#!2676&#!><]_?WGa>-MtX4j^`z{ 1>32#"&>32#"&!73##!#!2676&#! J+.0 G.+2MJ+.0 G-,2<]_?WGa>-M$0FB42BF0DB22BDX2l`^z=\7p0#!#3!2676&#!#3!2676&#!#3!73#`N׼`Y`K_X_K`Y`_?VI5n`o{`o{3d| *3#7#"'&547>32737654'&#"326Z '0/?d/ d?%&^ GIb IGa;]8W6L-48n;0%/ 8}|=// ?q R ,32676&#"#73>32+32673#"'&NY ?BA00>] +b=da{ #"K>U6;651}564~BE>I((9;@)(jY]f)C&%87x =='73#3#7#"'&63276'&#"3276 d]c *45Fo657pF** OQ56PP54]<$;]8WW;k98?>|{@?89 8?32676&#"'>32+32673#"&'#"&7!76&#"#>323267-NY >BA`69|Gpf{ CHBV6;k1Pd4vCrDZDf S,mEll=MHh4~BE>IP'32f]]f)CK87x0312x{GFbc3hjkg?(#73>32#"&'#3267654'&#"sd H)jEp5# oFTh OPk POj;86W9Q)058] ,#3"8{9,3"?qk[(#7#"'&547>32#77654'&#"326[h)iFo6# oFT=c  OQj QOj]85W9Q)0686;;,#3"8}|9+4#?q&32673#"'&547>32'654'&#"T "YEfT,m@, 9& oNHg2,8$>GFbbV;W&,T7Y,5;%7"5jh !!56'&#"#67632#"'&73267""YE33T,MMn??98MHgx>=#$Fb12WUSSch55kg2"&76767&'&7>32#6'&#";#"2673g 23OJ## p03478C='& "#N N.. >AQU>=VO:'( ((9OW x45<8;63FI6522#"'&'73327676'&+7327676'&#&#676h 32PJ## p/4478B='& ""O O.- >APU?=WO9(( ((9OV y46;8;64EH66%8#"&'73326?#"'&547>3273654'&#"3267Jg;i.6 !F\j)iFo6# oFT OPk QOj}7fnP85W9Q)068]<,#3"8}|9+4#?qk#"'&547>2#733#m- -5 c ic &% << 3###73%#73!W a-hd p,W ;0L,;<</>323#654'&#"#654'&#"##73>32+j?^$ ?^ H ?F^BhI ?F]Ahid )f8GP{BC:#9%.;o+ #&hcs*#%hc;j32#"&'733276yP EHaAhid )i=c% Va)G6/4b:&#(hd9!:%0K\i{ """,!267654'&""'&547> Tp o H?, ?+Ã:-6$A:-7#B7V;W&,V;W&,>32#"'&'733276'&#")c??aa9674=" KT882UC^=_dVVVU N$$AAAAEFf 6&"#> 32#"&'# PPk PPiUd *iFo5# oEUBh;,#3"8{9,3"?qe<]86W9Q)058w#73733#32673#"'&547>\ \%i% J  ()/ O_RZ<<, 05QK'.$=33#7#"'&547#733267hib )h=d$ ?^ D EI`;i;>8":%0><:&")jd 7!73##!#7!2676&#!j&<(j6- z='_n\\faZ_##?_ I(?E//5[ I?F//6[ jd )e9F)( A!"::u?<\M44d32#"&'!73267654'&#"(_H'V24q#CoT8,o 1~'-~!&&b.0ďd_fJU_dktN?[?jkgzjjjf9%3#"&'733276?!73#7!КAp2&U =JQ21Ejjh!!`Z>32#454'&#"3267)d?, ƒ9m4= KTp VC^O`cV;W&,C $;.6#AFF!!.376632#"'#767&'&767632#6'&#"nNZ ?gNUW5 A ?aa9664=!!JU875=FJo(0QQ9,WUV N$$@AY?-.#"32676&#"&7>32.''7.'77-bu@QQr  U?* P3Al- x~ux>w^y<S+L!- 05&T,2"'&73367676'&+7327676'&#"#767632v()U&& ""O O.- >B((8?880oh 23PJ$" 56IF36;8<54x WO9(( (':OV+#654'&#"3##"&'733267#737>327-:= l}f&I#7-:<kd d}f&I#w ?QM7#"3267, df#73327673#"'&7d ͷ4.6&'')a--V;_I""6{ 45\b<3#"&'733276?#73#73b a)F 6&.4 de ;:\i{62""I:;; 73#7!#!73 l`k J k_F);<< D#"'&'73327676&#"3!736'&#"3!73#73>3267632CABa)## 6.4 T'?F.06[ [=?F/.5Z ^^d )f9F((+55?_##+b\54 {6""I[M44c;;8Y%&44c;;;j_##?^ H'?F./6[ I?E//5[ <<-;?#"?A!"::u?<\M44d] Z8DI01&b\54 {6""IQ8`Mb]c2%82b0%72<<DWVD<9CVWC:+AA, +AA*B327673#"'&?1731332676&/.7>32#6&#"#"'( 4.6&'')a--< ""LGT ,RFI7 k0d4< @BBM *HNP< s:68I""6{ 45\dC! 42'0J9R]:A..%.O>Ta '#"'&'733276767632#6'&#"PQAa)$#6/2!* PBa($# 6.4+bPA4 {6"->lrQ?4 {6#->'#73733#32673#"&'733276?#"&7\ [%i% K()/ O'a)G6'.4 #Z;<XHI#<]tUh?>>?hV9:]/"3#&'&7#737676'&'a@P$% "$50:9=\1,Cd N4GN?>#IHX?58)%5.bRK0D0g0l PQ -##?!#7!#"'&'73327676'&6 =! ,e-,^]B<<9$@ PZV>=()9g0CClFE Z]88`n9936'&#"!32762#"&6TS?8(FSS?9$oPЃpPn[ff[<[ff[jrA&$&7ue&WWx>#7exq#TWV>&7q&WW>&7k(q&WkxD&8Hnx"'&XXKD&8E?K"'&XTD&8<?"'&XLD&8'i-u~?&X'BD&8'u~"S&X'B2]^&9uC7&Y<]x'9Dx''Yxr'|:g6&ZCxr'|:g6&ZvyxT&:j3g&Zj6x&:|f!&ZKxx&:fx'&Z]&;!&[<]&;!&[<[T&<|9&!&\/k&=uf&]x&=x[&]^&=[&]#W&Kye&Wf&ZK9&&\/<Q&DgJt!&Vrx&$&~A&ş*'^-'al's'hh&rpm&ďxl't s2&Ŕ<'i'iN&TN&TN&FN&TN4'N!&U's'Ih&*p&ď7lk'ts&Ŕ &F &9 &3 &N &o &' &I &> s'_pX&ďs&Ŕp'i<'<'<'<'<'<'$<'<' '8'Lh&,p&ď7lx'ts&Ŕh'i'iMd&~Mf*d&g*fV(d'V(f-d'ifNd&oNfd&Y f<d'<fMP&˦MP&˦MP&˦MP&˦MP&˦MP&˦MP&˦MP&˦rP&rP&hP&pP&P&P!&9rP&rP& P(& P(& P(& P(& P(& P(& P8& P8& lPM&sPB&hP& pP&!/lPv&"sP&#P&$GP&%B>U, 8#7#,LS#&8F'I7ya7'LVjP(d&b P(D& P(f& V87&lP87& qd'nO\fd'n_fPe&r'$&>I& H'uf'q^'c@7't't2'q<Zd'nd)fr' 'I&H&uI &qT &; ~V&=V&=7&A N&6 [Ti'u![T1'q;5d'n fs'a7&jXa7/JdC7 P\ @?[d>?3dQ^ +?=[2>?33ao%E%Z&'&5473Vj" +P[y>MGT=P@'!Vp#>7#>7pP\ !P\ @?[P@?[dG>?3%>?3dQ^ .P\ +?=[P??[26>?3%>?33ao%)bp$E%ZPE%Z&'&5473&'&5473Uj" Ui! +P[y>MGT=P@'!V?P[x=LHV?P?' Va; 3%%#7mmcFs;3%% %%#77mmSm.mcScFE%'+! 4632#"&qppq||}sq_ >32#"S228 T230pNN87N $>32#"$>32#"S219 T23cS228 T230pNN87NMpNN87Nz  $>32#"$>32#"$>32#"~S319 S23cS219 T23cS228 T230pNN87NMpNN87NMpNN87N  "-8<F2#"&7>"32676&"32676&"26H#"&7>3#  &76BΎ!!΀Ow=NNu"32676&%2#"&7>"32676&"32676&"26H#"&7>3#  &76 鎁BΎ!!Nx++\`?@*'k;=-5bj;=-+lj]Xg]]`ƻ\ptfppppp  !737!733#3Gy]iTTR&!67632#"'&'73327676'&#"#`2#--4FE˛?>?>"D ))Y_@@''a7--(4XZ JIL+*:9kk99%  *2676&#"67632#"'&767632#6'&#"ëuDVVs+559ABAʍ=>,7r{1243D!!Cvrkkrnhn7+JH}hkkv7M #!#7!Z]G*Te 36&"276'&#"27#"'&76767&'&7>32&L:;&K;z ! LK23!C4'c/-^^DCEFjK3'~9R%b11b1ܖ****T*T 98Xs?>>?sX89 ?0KcrrcW$2 0#"'&767632#"'&'733276"327676'&!1:8C@Bec>?,/{{0334ECAvKLHV:8%"VZ67#! )JJ}KKhjwv 77#7332#6&#"!!!!3267K:z ;Y(Zc;`hnz;<_  Q<jzh30h1"0h.>Eh3 Dh吏u#0;#7367"76!32!7326&+ 3 #"'3276#"/2wK2u0c:˺+DHjn@csH\_&=5/M6Ax++w.R_^wژznX,sB7#RmNC/C!7!7676737#676&#"367632!!#332767##"'&7676na !]ts7e+][@>< "^ &oww3"##72767#7!a\^/qQ^]/!>i,?iCB%#m%#ǫN&n`?>҅__A|Ii."54Jj-"4hP">Qrkf(3#3!53#3#53#5)#5#3!53##NNN'KNN=NN:BBBB7VBBBhBBBh.NmU#ud'F{#ud'FtU#d'F{#d'Ft#d'Fu #d'FU#d'F{#d'FU#d'F{#d'Fu#d'FM#d'FU'F{D8 !#53y x ׂ } !53%t s _ i8 !3#!i w yac ca} %#5?= > _ ]a-(>54&#""&54632#"&54324&#"32 AA2A+[ƒ[u NGbMHbmWKt,>bFأ[t}t{-% 3A+-! !#y1+/w!#3!53!3!53#0Z}謬JJJJJJJw !#'.#!!>?3!5 cFB 7=9! AF<"%!%)/1F!!~Ӣ' 3#BL >32#"& S319 T2388MN78ML6} 3##'%g;q}`s-Pb; %.#"326"&'#"&54632>3"3,xM[skPHvBH@UzyUD=W%vE,x<XXieu~९{YY; /32654&#".#"326#"&54632>32#"&8,xL[sjPIv,xM[skPHv@UzyUD=WxyU/YYie9XXie~९{⦮u I%!3! z~$ I%!3! g~$X33# EETJX3 3#JT\32#4&#"#ݛP,*7\332653#"ꛅVP7**%26732#"&'.#" #"&54632_  HZ92&2 ` G[>6+ l9TA6?&#Hn!bSA8?S*'QaQ*W'Q'QaQF!!#"/&'&#"5>32326~YTR USP[TV XRZT? 9ILZRB 9IfF!!#"/&#"5>32326~XUV USP[TV XRYSB 9ILZRA 9IF8#"'&'&'&#"5>32326#"/&'&#"5>32326EYTR USP[TV XSOXUV USP[TV XSdZT?9ILZRB 9IѓYSB9ILZRA 9I'F!!!!!'7!5!7!qt;Gp?f٠f٠FF !!!!!!~~~ҠF 5 !!EK~~~poF %!555E~~f 3 %! <=YST$`jF^!#E^c?$%%$~Z[|||ӥ,~ U1;FOY!!"&546;#"&5462!54632+32#"&=54&#"3#"32653264&"2654&# ꦦrr uvssvupX>=XX>>XX>=X>XX|XX|XX>v(D(غPEaabbDEbbDbaaE DbbEDbF^!3!E~?c6732#"'&'.#" HZ92& a l9TA6?%Hn%7( #"&5463232676 HZ92& a (Vl9DTA6?%Hkn  !!!!%!!Xdo̔4+l  #/;GS_kw+7CO[gs!2#!"543!254#!"+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;22+"=4#"=43+"=4;2+"=4;2"=43!2#3DŽCAAC!B""B!!D D!)!C!!C!r!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!"B!!B""B!!B"f!""! !C!!C!!C!!C!"B!!B""B!!B""B!!B""B""B"!B""B!!B""B! !C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!B""B!!B""B!"B""B"!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!"B""B""B""B""B""B"!~!!~!!!!& !!!C!!C!!D D!H""!!JJJI%%I&%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%% %I%HJ%%J%%J%%J%%J%%J% . 7!!!#!#&ZYYYY7(3('! !!&$<0.73!3!YYYv`(l!! !!!!#!#(!((!(0(!B({(!((!((! (Y(!k((3((t ( #'+/3!33!33!33!33!33!30stststmnmnm(%8K#!1!!!!!!!#!1!!!!!!!#!1!!!!!!!#!1!!!!!!llll޶llll޵kkkkߵkkkk(((((!%)-13#3#3!3!##!#3#3#3#3#3#3#!"޵׶׶m#(i#(w!~(~(&~&(&(&~&(&&(~(&~(&~&'%! '%!!!Ng>9%-d) 327$%&#"%632#"'++Օl``````qq|qqf' '/7?G%&'&'6767&'&'7%'676727"'64'7&"'62&479'5)3,?4C0x2)/-Z5>3@'5)2+@3C03)5'Z,G4?DD#VVcDD#VV c<1& j(0=Ju &,A=N:0('<1& j(0=Ju &1<>EB0(n_II'[[JnII'[[d) %/36%632#"'327&#"6767&'&6e`` :;;:{m('((((';99̙Rqq|qq%%mܱ[0$ %@%|"d) )73276'&#"7632#"'327$%&#"%632#"'Vg4343gg3434՞OOOOOOOOH++Օl``B!!BB!!oe33eje33````qq|qqd $  $eGyFAk^d $  $27$%&#eGyF+ՕAk^a``d $  $"3eGyF+Ak^``d $  $327$eGyFS++Ak^>``d $  $%&#"eGyFYՕAk^>``d $  $"327$!eGyF++Ak^```d $  $"!eGyFVAk^`d$)6%63"'e`Rqqg)#2f|q*q ( 2654&#"!Κ⚚ord}}|v<U( 327$%&#"327$%&#"!(++Օl``````}|qqqqH(U( !#%&#")%632T++qq>~``U 3327$3!#"'$``Ֆ>qq``) %63"`qv`) 2#%&#`iՕ)q>` 527$3+iv`>q "'$33įj+q`d)%632#%&#"e``jՕqq>``d3327$3#"'$ei++j``>qq% % %! %!$+! 2654&#"4632"&J|{{Y[|6qpddcc||}'%!%!!@Z r<'%!%!!X r<'%!%! r<'%!%!N r<'% !%!!!!t&t% r<<% 4632"&! ?N97MMqM`KAj>VV>>VVJ %! &A %! %A d(  7& 6  'hi./*X֖'% !!!!!!tg%ۊ<)) Ie'% !!!!%!!&Ng%M)*<?v^ y <BHNTZ`fl3264'&#"&7367'67675673#''5&'&'7&'677&'67'%7&'&'%6767%&',*<&`7" bK*V&"g{ M M !)1! ! 3254#"&#%#7&'67&'67wv:<F>4,<[-ch`ch_7IL6a] ]pu otpu ot !)1! ! 3254#"3$3&'67&'67wv:<F>:]ch`ch_7IL6a] Uypu otpu ot %! ! #$''&'6%&'6wvcGkvJVVr~w{t~w}7IL0c Z    "*2:AIX3#''%#&'52#"'&5476!!'5%!!'53'5%3'5%3#'32765'&#"FF47H8(S A+[!?27@yf756FF u>p,y9#_>?@7`d@\hPPPPy?+<>w_VG{?,rCA01@7#'#53'&'&54767&'&=33676=3#32654'&$ xwatbww!$$!wRMi"iLRx "iMRurRLV$|ddb e|$% ZSSZ %_TYYT $4&#"326&54327##53&ёϔ1./|䤣L~~|  $"32654&'#533'#"5476ϔ|Ҙ{פ㤤ף |~~L #&$76+"'&5'476%7!iiggi$jg ՕeE~Z5s qttrtt<֤ꧦg\ul91B52654&#"#43233#!5nom覨b͈wyyy{(|#53533#632#4654&#"#``d~~dc}mZyH{zF 4"32654&7#"&54767!!53#5!!3!!#3!!92GG22GF7+Db`E*8쌌O79NN97Os0LllllL1KӘJJ-<%#5#535&'&'5'73'3#'73'676=35'73'33n^F][E_nzTThOʍ7NjYYӖy! #!!!'!27674'&#pZ51;J&u@!IM_\ǃ$P<"Q##"'##56'##"/547? dsU 2`g26;2"##'65##"'&5476;2&'5476&+"326733276=4/#"567654'&#"35&5?^g7%SB\JLZޭ\<."7Y@ؘ aj7{6Gf!KQM 1k`t0%K6F98:d  mOE:R p&i  C]&'Ax.+0 nM,W`cr3#"/4?23*A+ ZP-@3#'654'&'#"54732Nn7S3ڿWP'6?F` 1TFG*֙-@R/"#"=4?2%#"=4?2n0#NI<Ù'PH*~: ۉ8z"C"'4723!#"5472!5bGZOO;Z$}@Ϝ 3363'$6'")2y k?WXc1  3%#'#3%#%,$//c}(,377#'#'547#5773%%F*kknm*&ttrt&<<7CA<<{8AMt#u ! !=?Fvu-1#u >>u-* 'Q'Qa&QQ$*-27#537632#"&'.#"3##"&54632_ JUHZ92&2 ` UUG[>6+ TA6?&#Hc!SA8?S*4#"&5463232#53767#537632#"&'.#"3#3.EUG[>6+ Z6UHZ92&2 X`SA8?SfEZQTA6?&#HM'%!%!!N r'%!!!N (6")7.7%63267#'"632  3 6:"M.VOIf(Q78]% : ,37Y^YP)` LdP # [$!9) 33A9MEJU3 &7&>227&762%KV!)0 8&V2nhc!cE#.D?3#E`]f&>2 '&7622h 5=C* ,=" 'H0)56(0H#V!W2767#73767632#654'&#"!767632#654'&#"!!#"&'7332767!#"&'73h_.0 ccơ=t7#W8<kZ[.'qZ[.'qk.'8<.'d/'654'&#"!3!!#"&'733267#737>32>U&/o&ơ=t7#XH\`"NK="*dCj1.'qk`'!3!#"!!#"&'733267#737>=e ơ=t7#XH\`#Vjdk1.'qk`Z#"'&547#3267!!7#!7>327.#"!7>3237.#"#3#"'&547#32767_]GW#7t<ۨCn0&T&KO#H_]GW$7u;!7#!"!7>3237.#"#3#"'&547#3276Ϊ`\GX#7u< C#2_]GW$7u32#33267##"'&547!7!&'&#"#3#"'&547#3267oB/&'v / }JA?v7M,nA"`\HX#7t='d*"=k]A3P+G_U& .Ok `k1q'.[s"#"#"'&547#3267654'&/&'&547>3237'&'&54632#33267##"'&547!7!7454'&'&'&#"D,sp#o|5)`+P]"0|q"zhi3(`("?^[w / }JA?v7; uINDA/B,-1+ /Y];-N,, F2H.-)*-RR:-I=ZL}I k]A3P+G_U& .Ok5MD./wyTL15%32767654'&#"3>32376767654'&#" J41)+ 14S.W)fr4#ŧ9n-xx I`LZZ%h &'''7&'N{O6Q&++3vv-({Qkf3#!jf2#"'&7676!2#"'&7676,+ $$-- %&* $$,- %&##.2!""!2.####.2!""!2.##73#i!'.#"'67632327673#"'&"# W97M -'%W97U<:> .d;;  /i99-#ui3#'#hh373\hi #."#67632TVjT&STvwx7667u?>| 32673#"&UVjU'SSvwy7667u?>|mE 2"'&76U2 $$Z F.2!""!2.3#3# jJi#!#zviui__<22 m { dR[IO=hHtI$nCImm^)Z6=mm3h3sJUAUGa_LUok5W3]fx [mJJ=NN$BNAXM];\LMLUNOqe~D)gmAy}]Tma3k@gnC3KRIUb%g]UU33s3s3s3s3s3O5^UAAAALUUUUU[J=J=J=J=J=J=.NBNBNBNBNMMMMU$UNUNUNUNUNU~~~~'3sJ=3sJ=3sJ=UNUNUNUN$$ABNABNABNABNABNUAUAUAUAGXGXMbMcMM2M];a\L\wMLMLLXLULLL<GLUUNUUNUUN0ZNkqkqkq5555WEWeW;~~~~~~fx)g[[JJJL;J$UTAUGK |a\MLUPUK|op U8UZ|V|tZxP[\ukDDND g$L /3sJ=MUUN~~~~~BP3sJ=3sJ<5^.U>UAa\LUUNUUNM g$UANL3PJ<5^.U3sJ<3sJ<ABMABMMMWTUMTUMkqkq~~5WeGW/3sJ<ABMTUNTUNUUNTUN[u;$o3sO:3,JM\)^I$BGBPM)jQDAN MME+XUNO6UH qqBBxFFU#R(wL`)vL6Ji. j'$\2GJ,$pI/2eM{uoM*0 7R III66#9zKmtm66Sl |"I\7im #||||c|/{J9IKgl `|\y"ZlCXOCj*C`SQ0s;N'61gg "g)ddma3sIz{ rv#3sJ3AGUa3s_LUGW[^ P[M*P`M)MU$*KPUAR`6UN;qPz` `\<`UN`<1A%^K1<}"xUpxbU?.8&/}; N;UN6'U_;*U*AA$U5^E GaG45G3sJJA4|G0aE_GUGUW45` G77*J=U& NBN~#~~\eUNON2JL6DBNBNwNM]M;q\~|jBUMBk|#a\a\L?LGn;UNW[j WyddfX4~a\GdM3sJ=3sJ=5^.ABNUBPUBP4~|#G~G~UUNUUNUUN*6454545O;MtPUUN=ih kkB  h hh h  P M  h:GQxcQQJbF  hh'hnWPd@h3sJ<JMJMJMUM$$$$$ABMABMABGABHUAGWGXGWGWGWoM(a\Ka\Ka\KM(M(M^M(___LLLLTUMTUMOOkqkqBkqBkq555VeWeVWn??~~3]C3]Dfx)gfx)gfx)gfx)ffx)f  [We)f<3sJ<3sJ<3sJ<3sJ<3sJ<3sJ<3sJ<3sJ<ABNABMABMABMMWM,UUNTUMTUM~~[[[[MMMMMMMM3s3sAhApH~3s3s******$lshpBlssPPPPPPPP/l$shpXlsUU~lsJhOpls}mUNUNUNUNUNUNU0shpls````````sps<<<<<<<<C8$h/plsMM**PPUNUN``<<MMMMMMMM3s3sAhApH~3s3sPPPPPPPP/l$shpXls<<<<<<<<C8$h/plsMMMMMMM3s3s3s3s3sIaPPPPPz{GI< I````;;``[[vsaaJ<<<<<r#33_3IpnCnC33IIdI2Id2a??h3 {] ll   MU  M/X3a3OUU UUMUDi]--/#3(I6EEEE*!**3%3 dl 0HdHdHfHdHdHdHdHdHdHdHdHddHdHd?dHdHdHdHdFFttyttttkCCtt1ttttt"tt5tt!tt5tetRte{ ***U(A[\b8n 79k:;<&:$7$9$:$<$I$W$Y$Z$\$$$$&$'$:$$$$%&%&&%*&%2&%<%&%&%&%&%&%&%&%%&%&%&%&%:&&''&''9(&))))))$N)Du)H)R)N)N)N)N)N)u)u)u)u)u)u)u))))))))))))**&**<**:--a--.k.$.&.2.8.:.<.H.R.X.\}................................}.}......0.1.:/7Y/8/9 /:N/<}/\/////}///&Y/0/:}//1}1}1122K2292;3a33a333$D383D3H3R3V3D3D3D3D3D333333333333333333333333!3#3044K44&4&57595:5<5D/5\55/5/5/5/5/5/5/5&555&5:5566K6666 6"777777$77&7Da7Fa7Ha7Ra7Vk7Z777777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7!k7#k7&&8D88D888$8-8888899D992929$u929DD9HD9L9RD9X}9\9u9u9u9u9u9999999D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9}9}9}9}999D99D91}9K9K::k::N:N:$:DN:HY:L:Ru:U:X:\::::::N:N:N:N:N:N:u:Y:Y:Y:Y:u:u:u:u:u:u:::::::Y:u:::1:&:&;;$;&;2;;;;;;;;;;;;;;;<<<<<<$a<&<Da<HN<L<RN<XN<a<a<a<a<a<<a<a<a<a<a<a<<<N<N<N<N<N<N<N<N<N<N<N<N<N<N<<<N<)<1N==IIIII&INRUUY Y Z Z [\\79:<IWYZ\&':79:<IWYZ\&':79:<IWYZ\&':79:<IWYZ\&':79:<IWYZ\&':&&&&&K$9<:}}K9;K9;K9;K9;K9;K9;DD$-DD$-DD$-DD$-$a&DaHNLRNXNaaaaaaaaaaa<NNNNNNNNNNNNNNN)1N&&9&&<:7Y89 :N<}\}&Y0:}7Y89 :N<}\}&Y0:}O7Y89 :N<2\2&Y0:2 } }  &79:<D/\///////&&:79:<D/\///////&&:  K  6   """K""6" ""&&&&&&$&7&&Da&Fa&Ha&Ra&Vk&Z&&&&&&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&!k&#k&&&0D00D000$0-00000777Dn7FU7Ga7HV7I7Ja7L7M7P}7Q}7RU7S7Ta7U}7V7W7X7Y7Z7[7\7]77::::::$a:&:Da:HN:L:RN:XN:a:a:a:a:a::a:a:a:a:a:a:<:N:N:N:N:N:N:N:N:N:N:N:N:N:N:::N:):1N??d$d-/dddddd79k:;<&:$-/$-/99:9;9<99:979:;9<YZ&:6J.,@Ndr4\6v.Jx8PvV  V v $ L j ~  \  N : b v ,l,\D ::\\r| Zh@fv R:FR^jv $0dnz*6BNZfr $fr~&2: $0<HT`lx&2>JVbv  " . : F p !$!j!v!!!!!!"X"d"p"|""""""""""## ##$#0#Z#########$$$$&$2$>$J$V$b$n$z$$$$$%<%D%%%&.&&&''H''((\(())j)**"*F***+.+++,6,B,N,,-2--...|..//>////0 0`0011,1j112(2`22223343@3L3X3d3p3|333333333344 44$404<4H4T4`4h4t4444445T5`5l5x55555555555666^6j6v6747@7L7X7d7p7|777777777788 88$808<8H8T8`8l8x88888889(9N9t99999999999::: :X::;;l;<>">z>??T?@@@@x@A ApAB:BhBC CPCCDDPDDEEE\EEFFRFGGXGGHHDHHIIHIIJJ4JbJJKPKKLLfLLMMNMMMN N8NnNNO(O^OOPPPPPQHQPQQQR@RRSSSTXTU*UUVVXV|VW0WhWWX XPXXYY:YPYfY|YYYZ,Z@ZTZbZjZxZZZZZZZ[,[P[[[[\\\\\\\\]]"]F]P]Z]d]n]x]]]]]]]]]^ ^ ^.^8^N^t^^^^^^^__6_J_\_t_______`` ``.`^`h`r`|`````aaa$a4aDaNaXapaaaabb*b8bFb^bbbbbbbbbcccc"c*c2cHcPcXc`ccccccd(d0dVd^d~ddddeJeeeeeeeef@ffggdggghhPhhhi4ivZvvvw4wfwrwzwwwwwwxxx:xxxyy2yjyyyzzxzz{{T{r{{||J|||||} }R}Z}b}j}r}z}}}~ ~V~~~2`.:FNҁށ(v&^z4xƄ8lֆ BvJVb܈NNV^jvȊRƊ$0vēޔN~h2|ȗZΘNjB^Țbқ X<~Ɲ">t&2>JVbnzžΞڞ *:JVbnzŸΟڟ ".:FR^jvʠ֠*6BNZfr~ʡ֡*6BNZfr~¢΢ڢ ".:FRbr£Σڣ ".:FR^jvʤ֤*6BRbr¥ҥ&2>JZjvʦڦ&2>JVbnz§Χڧ ".:FR^jvĨШܨ $0>LXdr~ʩ֩".JVdp|ƫҫޫ(4BP\dpxȬԬܬ $0Tz&Ե $X~l$.8BLV`Ⱥĺ̺Ժ$4DTdtлBZp̼ڼ HĽؽVbrؿ.Tn¿ҿvVp~Ôèò"0>LZhvĄĎ`Ŵž *6DRhƒƞǘ "0FTjzɒɠɴ,BPftʊʘʮʼ BˊˤT̮ *V͂ͮ8L`~κ$:PhϊϬϺ0DXvМв:ZzѺ:zҎҢҶӊ@ԠL6r֮Jט"\ج لٮVvڤ.T۞ۼ$p܆ܜ<ݼFF߬L,HH<LL>RR@XXB\\DFN    ?y?z?u??????????   0T VQQXeeZ\^bhlpQQr   `?x?x?y?y?z?{?{ ?| ?b?c?U?ſ?ǿ??ʿ vyquvjwzzxW RSl X <TII0LL2OO4WV6AA:  ` ???????0F $&""( ` ????? T $&FF6   !"#$%&'()*+,-./0  !$'*- 0369<? BEHKNQTW????????Ŀ??ǿ??ʿ??  ?߀????""(%$+($.+*?--40/?20?55=86@;9?<<F? /~157/~15702023838446969::;_V", i H 4  ! ! ! !!"a"#!7 ! !""r"#-!!P !"$""#D!r!"<" "#U! !!"N"##h  4  q < D O >v " :  &f h "   " Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain DejaVu LGC Serif CondensedDejaVu LGC Serif CondensedObliqueObliqueDejaVu Serif Condensed ObliqueDejaVu Serif Condensed ObliqueDejaVu LGC Serif Condensed ObliqueDejaVu LGC Serif Condensed ObliqueVersion 2.10Version 2.10DejaVuLGCSerifCondensed-ObliqueDejaVuLGCSerifCondensed-ObliqueDejaVu fonts teamDejaVu fonts teamhttp://dejavu.sourceforge.nethttp://dejavu.sourceforge.netFonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. http://dejavu.sourceforge.net/wiki/index.php/Licensehttp://dejavu.sourceforge.net/wiki/index.php/LicenseDejaVu SerifDejaVu SerifCondensed ObliqueCondensed ObliqueAll Typographic FeaturesFonctions typographiquesAlle typografischen MglichkeitenFunzioni TipograficheAlle typografische kenmerkenLigaturesLigaturesLigaturenLegatureLigaturenFractionsFractionsBreukenAll Type FeaturesToutes fonctions typographiquesAlle AuszeichnungsartenTutte le FunzioniAlle typekenmerkenCommon LigaturesLigatures UsuellesNormale LigaturenLegature pi ComuniGemeenschappelijke LigaturenRare LigaturesLigatures RaresSeltene LigaturenLegature RareZeldzame ligaturenDiagonal FractionsFractions en DiagonaleDiagonaler BruchFrazioni DiagonaliDiagonale breukenZ%  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$% sfthyphenAmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandicLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongsuni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191uni0193uni0194uni0195uni0196uni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEUhornuhornuni01B1uni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BBuni01BCuni01BDuni01BEuni01C0uni01C1uni01C2uni01C3uni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DEuni01DFuni01E0uni01E1uni01E2uni01E3uni01E4uni01E5Gcarongcaronuni01E8uni01E9uni01EAuni01EBuni01ECuni01EDuni01EEuni01EFuni01F0uni01F1uni01F2uni01F3uni01F4uni01F5uni01F6uni01F8uni01F9 Aringacute aringacuteAEacuteaeacute Oslashacute oslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217 Scommaaccent scommaaccentuni021Auni021Buni021Euni021Funi0221uni0224uni0225uni0226uni0227uni0228uni0229uni022Auni022Buni022Cuni022Duni022Euni022Funi0230uni0231uni0232uni0233uni0234uni0235uni0236dotlessjuni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240uni0241uni0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni0259uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269uni026Auni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02AEuni02AFuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02BB afii57929 afii64937uni02BEuni02BFuni02C0uni02C1uni02C8uni02C9uni02CCuni02D0uni02D1uni02D2uni02D3uni02D6uni02DEuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9uni02EE gravecomb acutecombuni0302 tildecombuni0304uni0305uni0306uni0307uni0308 hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322 dotbelowcombuni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0358uni0361uni0374uni0375uni037Auni037Etonos dieresistonos Alphatonos anoteleia EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni03D0theta1Upsilon1uni03D3uni03D4phi1omega1uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FAuni03FBuni03FCuni03FDuni03FEuni03FFuni0400 afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061uni040D afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097uni0450 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109uni045D afii10110 afii10193 afii10146 afii10194 afii10147 afii10195uni048Cuni048D afii10050 afii10098uni0492uni0493uni0494uni0495uni0498uni0499uni049Auni049Buni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04BAuni04BBuni04C0uni04C1uni04C2uni04C3uni04C4uni04C7uni04C8uni04CBuni04CCuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8 afii10846uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni1D02uni1D08uni1D09uni1D14uni1D16uni1D17uni1D1Duni1D1Euni1D1Funi1D43uni1D44uni1D45uni1D46uni1D47uni1D48uni1D49uni1D4Auni1D4Buni1D4Cuni1D4Duni1D4Euni1D4Funi1D50uni1D51uni1D52uni1D53uni1D54uni1D55uni1D56uni1D57uni1D58uni1D59uni1D5Auni1D5Buni1D77uni1D7Buni1D85uni1D9Buni1D9Cuni1D9Duni1D9Euni1D9Funi1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5uni1DA6uni1DA7uni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1uni1DB2uni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1E00uni1E01uni1E02uni1E03uni1E04uni1E05uni1E06uni1E07uni1E08uni1E09uni1E0Auni1E0Buni1E0Cuni1E0Duni1E0Euni1E0Funi1E10uni1E11uni1E12uni1E13uni1E14uni1E15uni1E16uni1E17uni1E18uni1E19uni1E1Auni1E1Buni1E1Euni1E1Funi1E20uni1E21uni1E22uni1E23uni1E24uni1E25uni1E26uni1E27uni1E28uni1E29uni1E2Auni1E2Buni1E2Cuni1E2Duni1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Auni1E3Buni1E3Cuni1E3Duni1E3Euni1E3Funi1E40uni1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Auni1E4Buni1E50uni1E51uni1E52uni1E53uni1E54uni1E55uni1E56uni1E57uni1E58uni1E59uni1E5Auni1E5Buni1E5Cuni1E5Duni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E68uni1E69uni1E6Auni1E6Buni1E6Cuni1E6Duni1E6Euni1E6Funi1E70uni1E71uni1E72uni1E73uni1E74uni1E75uni1E76uni1E77uni1E78uni1E79uni1E7Auni1E7Buni1E7Cuni1E7Duni1E7Euni1E7FWgravewgraveWacutewacute Wdieresis wdieresisuni1E86uni1E87uni1E88uni1E89uni1E8Auni1E8Buni1E8Cuni1E8Duni1E8Euni1E8Funi1E90uni1E91uni1E92uni1E93uni1E94uni1E95uni1E96uni1E97uni1E98uni1E99uni1E9Auni1E9Buni1EA0uni1EA1uni1EA2uni1EA3uni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED8uni1ED9uni1EE4uni1EE5uni1EE6uni1EE7Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni200B afii61664afii301afii299afii300uni2010uni2011 figuredash afii00208 underscoredbl quotereverseduni201Funi2023onedotenleadertwodotenleaderuni2031 exclamdbluni203Euni2047uni2048uni2049uni2070uni2074uni2075uni2076uni2077uni2078uni2079uni207Funi2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089uni20A6Eurouni20AFuni20B4uni20B5uni210E afii61352uni2126uni212Auni212Bonethird twothirdsuni2155uni2156uni2157uni2158uni2159uni215A oneeighth threeeighths fiveeighths seveneighthsuni215F arrowleftarrowup arrowright arrowdowngradient proportional orthogonalangle logicaland logicalor intersectionunionuni222Cuni222Duni2242uni2243 equivalencehouse revlogicalnotuni2311uni2318uni2319 integraltp integralbtuni2325uni2328uni237Duni23AEuni23CFuni2423upblockuni2581uni2582uni2583dnblockuni2585uni2586uni2587blockuni2589uni258Auni258Blfblockuni258Duni258Euni258Frtblockltshadeshadedkshadeuni2594uni2595uni2596uni2597uni2598uni2599uni259Auni259Buni259Cuni259Duni259Euni259F filledboxH22073uni25A2uni25A3uni25A4uni25A5uni25A6uni25A7uni25A8uni25A9H18543H18551 filledrectuni25ADuni25AEuni25AFuni25B0uni25B1triagupuni25B3uni25B4uni25B5uni25B6uni25B7uni25B8uni25B9triagrtuni25BBtriagdnuni25BDuni25BEuni25BFuni25C0uni25C1uni25C2uni25C3triaglfuni25C5uni25C6uni25C7uni25C8uni25C9circleuni25CCuni25CDuni25CEH18533uni25D0uni25D1uni25D2uni25D3uni25D4uni25D5uni25D6uni25D7 invbullet invcircleuni25DAuni25DBuni25DCuni25DDuni25DEuni25DFuni25E0uni25E1uni25E2uni25E3uni25E4uni25E5 openbulletuni25E7uni25E8uni25E9uni25EAuni25EBuni25ECuni25EDuni25EEuni25EFuni25F0uni25F1uni25F2uni25F3uni25F4uni25F5uni25F6uni25F7uni25F8uni25F9uni25FAuni25FBuni25FCuni25FDuni25FEuni25FFuni2600uni2638uni2639 smileface invsmilefacesununi263Ffemaleuni2641maleuni2643uni2644uni2645uni2646uni2647spadeuni2661uni2662clubuni2664heartdiamonduni2667uni2669 musicalnotemusicalnotedbluni266Cuni266Duni266Euni266Funi27E0uni29EBuni2A0Cuni2A0Duni2A0Euni2B12uni2B13 afii10064 afii10192cyrBrevecyrbreveuniFB00uniFB03uniFB04uniFB05uniFB06uniFFFD dlLtcaronDieresisAcuteTildeGrave CircumflexCaron uni0311.caseBreve Dotaccent Hungarumlaut Doubleacute@$d@$ 'd']}  22GG}  2d2dd%x %K.%x @@%0% @@   @I o} @ :]%]@%@0d0 ddl~}~2}|{|{zyx wv wvuv utltsrqp qp p@o}nm>nkm>lk llk k@jddjihihg]hhgf%g]g@f%eddeddcba`_.`_.^]\K[}ZYDXWVUSdRQ2POP}ONA@BL JdI"IH2GGFE EDCDkCBCBA BA@ A @ @@S?>->M=<=K<; <<@; :9:]98987 654543432 321 2 2@1 0/0D/.//. ..- d-,+,K+"++@* *d)(0)A(-(0'-'&:% %]$#$S#"##@"! !]     @#$0S-0 k@-B d-    @    @8k d } d2}-2- Sd+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++I6       !! #" >> ?? @@ CA ^^ __ `` aa bbcc gdkh qm srutvv zx {{} ok {r    Ȁ    --                     #($+* D/ EE F $micropolis-activity/res/dejavu-lgc/fonts.dir0000664000076400007640000000371010724145723021477 0ustar simcitysimcity21 DejaVuLGCSans-Bold.ttf -misc-dejavu lgc sans-bold-r-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSans-BoldOblique.ttf -misc-dejavu lgc sans-bold-o-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSans-ExtraLight.ttf -misc-dejavu lgc sans light-extralight-r-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSans-Oblique.ttf -misc-dejavu lgc sans-medium-o-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSans.ttf -misc-dejavu lgc sans-medium-r-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSansCondensed-Bold.ttf -misc-dejavu lgc sans condensed-bold-r-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSansCondensed-BoldOblique.ttf -misc-dejavu lgc sans condensed-bold-o-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSansCondensed-Oblique.ttf -misc-dejavu lgc sans condensed-medium-o-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSansCondensed.ttf -misc-dejavu lgc sans condensed-medium-r-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSansMono-Bold.ttf -misc-dejavu lgc sans mono-bold-r-normal--0-0-0-0-m-0-iso8859-1 DejaVuLGCSansMono-BoldOblique.ttf -misc-dejavu lgc sans mono-bold-o-normal--0-0-0-0-m-0-iso8859-1 DejaVuLGCSansMono-Oblique.ttf -misc-dejavu lgc sans mono-medium-o-normal--0-0-0-0-m-0-iso8859-1 DejaVuLGCSansMono.ttf -misc-dejavu lgc sans mono-medium-r-normal--0-0-0-0-m-0-iso8859-1 DejaVuLGCSerif-Bold.ttf -misc-dejavu lgc serif-bold-r-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSerif-BoldOblique.ttf -misc-dejavu lgc serif-bold-o-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSerif-Oblique.ttf -misc-dejavu lgc serif-medium-o-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSerif.ttf -misc-dejavu lgc serif-medium-r-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSerifCondensed-Bold.ttf -misc-dejavu lgc serif condensed-bold-r-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSerifCondensed-BoldOblique.ttf -misc-dejavu lgc serif condensed-bold-o-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSerifCondensed-Oblique.ttf -misc-dejavu lgc serif condensed-medium-o-normal--0-0-0-0-p-0-iso8859-1 DejaVuLGCSerifCondensed.ttf -misc-dejavu lgc serif condensed-medium-r-normal--0-0-0-0-p-0-iso8859-1 micropolis-activity/res/dejavu-lgc/DejaVuLGCSans-BoldOblique.ttf0000664000076400007640000151164410724145723025130 0ustar simcitysimcityPGDEF^^\(GPOS'R8GSUB < NOS/2dTF\VcmapȉF2cvt sKfeatM@fpgmMgaspNx glyfZNhead9}#D6hhea #|$hmtxdv#3kernMEW* locamی3maxpk  morxxҎnameUYA8post|sprep|餖pkpropǬ  Xijjkpqqruvvwyzz{}~     !""##$?@@A&''(+,-../014556?@BC t u ~       DFLT,arab6cyrl@grekPhebr`lao jlatnzkernmarkmkmk +&4bWNh.<"< 2 < F P X$Fh,,:HV`j0Jd~d>DVdrX^|RX*H79k:;2<&:P&&&&&27<89u:<FGWYZ\kkk$<%&<'*,.0246789k:<kkhh 9:<68:6 " &DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~      & , 2 8 > D J P V \ b h n t z ``````````4H864zUP||{5{?{9{5"/@1{){{q{q{{{%5{{,{{!{{!{s{T3{{4{.{HC4 -U{P;x*{c{X{!4{HL{&/<]{|2{,{{{y{5{5{5{5{{}{}{{{uW{/{/{ {p{/{{{{{C{C{{3{{-{{{{{{4{{{{GG{6{P*{{F{{${${{{{{SJSs{{{J5{&/u{{SJ{{{x{R{P{{X{{Qr{Y{5{{{{.{{{dd{s`{%V{{{?{{){{{!{{{{{{'{{J{h{<$ ST{{ +{  &{{3{{ {{{G$= D]$>?ABCE  FGBCHHJJLLMOPNRRPTUQX]S__YffZij[mp]txa{{fghij l ms:?AGIJLRXY]^cckk    &&))33NN  , . 0!$ (3 "(.4:@FLRX^djpv|7{7{7{7{7{7{7{7{7{{7{7{7{7{7{7{7{7{{rr{+r{7{7{7{r_{{{{{{{{{{{{e{e{e{e{e{e{e{e{e{e{e{V  $*06<BHNTZ`flrx~ &,28>DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>D8888888888w R<h5.(SRM%pDl"R"R"9T?R?Ri/E&R@R,TRP R mRR@R5SRMMM%L{RDHHHHRR$RPR*>R"RR'RRRRRTNoR RRFRRRRRRRK>g/ERRR+"+R "VRR+"RwR6aRM<<L>>q']*R$= D]$>@ABCZZDvvEFGH J mQ>>&&   ! "(.4:@F C24<449^ *V\bhntz "(.4:@FLfffvvv|Bvv.fff|Bv>>686:  ! " #  #. &,28>DJPV\bhntz7{7{7{FII@FL{.{7{7{7{7{7{@@7{7{Fy{{{#{e{e{e{e{e{e{e{e{e{e{e{ DFLT,arabFNV^fnv~L^xpB<<< 2LM**__ P$=IIKKLMOO      ""$$&&((**,,..0022446688:;==??AAHHRRTTVV**__&   dpz "(.4:@FLzvqj')-++,+0../. r+.F",6@z 2< "(.4  $ #! @ Q$&6DFHLQRVX\]~(:FPZfr B"5 A@"$;V0(/FXR")567DF2 ( IO IL I WIV O LI WAZD&.6>FNV^fnv~=====~=~= "==&.6==== "===[Z\XY^].4;AIO  D    -O  -DO [Z\XY^].4;AIO LM*_  33f  P PfEd! m`,~NRX]bu~#.[jx{EMWY[]} ' ^ q !!! !!!!!!"!$!'!+!.!2!5!@!I!K!"="""""""### ###!#%#*#}##$#$i&&'' '''K'M'R'V'^'''''())*****+,l,w_ QW\`tz&0]w{ HPY[]_ 0 p t !!! ! !!!!! !$!&!*!.!2!4!;!E!K!S!"A""""""###### #%#(#}##$"$`%&''' ')'M'O'V'X'a''''())** *}**+,`,t_wb" zvunc`^\ZYQMKHGC=742Q|ua~jaZSn    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}byqz#/f3f=;+ffT}f+\9//uLfLDD;Pw /X#/553Xfs+j-j!f#^`3B3\fy```{j\{XPL`%!JJ7{}3Xy9bs04 <, %Id@QX Y!-,%Id@QX Y!-,  P y PXY%%# P y PXY%-,KPX EDY!-,%E`D-,KSX%%EDY!!-,ED-ff@ Q/10!%!!fsr) Y@.   :UTS 991/0KSX9Y"! !!!iqlhE^h@VS1<20###h++=P@6 Z Z W   91/<2<<22<<220!! !3!!!!#!#!7!!7!F+`aa)5E)6````5F5`hh7 !(/v@C# ")^] ^][* [!*)#"&- !&-& - & 09999991/<29990#.'.54$%73.'>54&T;]1`x=ҿ+,+eX1?w93TdA7ckI-+&7=7 "%/$ DQ=07VK39q '3M@+e .e"a(ee a`d4+%   1  + %49912<0"32654&'2#"&54#3!2#"&54"32654&Vo=>Wn? ֝ k֝ Vn==Wn?hWWUWꭍ ꪍXYTX9&0@[   0'0%&$''0:0' - -iYf!gd` '*$ * 0$* 1999991/99990KSX999Y"]@`  * 9 K K'[ \'bm n'   &0' ' +'+0;';0III H H'J0ZZ\ \ \\#X'honki i l0$]] >7!!'#"$5467.54$32.#"3267m)>Z7+xJTv{ֿ.[e5WOVd7>54&#"#"476$32dMw(.PTNv'1R8ncembg\Y?nY5piY[AbZ5okyX t@- :uuSu   991/20KSX9Y"K TK T[X  @878Y!%!!!T3inR3 HH5|@):X sdv999991/990KSX9Y"K TK T[K T[X@878Y]!!>54&#"6$3278{hmpe_@PMRZKN=21Ū(i@,s ^ x s ^xsw#d`)   & /999190K TK T[X)))@878Y!"&'32654&+732654&#">32q~wh9YiŖ1yUl7vp%s%%)49kYYraLP,*  @;         : uS    991/<290KSXY"K TK T[K T[K T[X@878YK]] !!3#!!Lo556`ARJ'@9:^]]sys vS `  999190KSX9Y"K TK T[K T[K T[X@878Y!!>32!"&'32654&#"j7v-,_0r}t;ol|Tt ѹ12/HD`q+-fH 'r@! ^ ]sss%d`(  (9190K TX(((@878Y@```` ` ` `````` ]"32654&.#">32!"476$32rZPqX6VQN]|pxG^ἔYc`f,,ȵ31ک!s 3@:vS991/0KSXY"!!!'f-<-F #/t@$ *ssw$sd`0- ' -!0991990K TK T[K T[KT[KT[KT[X000@878Y"32654&%.54$!2!"$546"32654&ufXwglkM&zt3f{YIf{YtSauSb-e谠-/yŰwbDTwbEST7'@ ^]s s "sd`(%% (9190K TX(((@878YKTX(@((878Y@o o o ooo$o%o&o' ]73267#"&5! #"&2654&#"T5WQM]i|qx_rWQqX!-+ȵ31کa [b`fT`N@(:TzT91/0KSXY"!!!!-iJChL`}}` Z@.   :TpTz   9910KSX9Y"!#!!h;լiJu}=@|{29190 5<'@ o}o<210!!!!=@|{<91905511Jo!@I !:!  Y]iUTd  ! "999991/9990KSX9Y"!!!7>?>54&#">32hFWJOHQLPs>ajLP9d1P}f:=j69=CB:*(wf<>M+\j L]@5IM-.* LF~*1~!=WM -.L C'7M991<<29990"32654&#"&543273654!"!267#"&'&5476$32!"#"&' jQMjP'-ZS}˅v\`Kvhm⎇bxroirg!ґTXɒV^KSBTEKnWSbbRMl>ɰH]\Yv{ @A     : uS   91/<90KSXY"]@  + / ?   + ) ]]!!!!!uLZ+?+ h@::S    !9991/90KSXY"2654&+2654&+)! 3gtQL>ebeLbk#A h[;>s~vKHyn՜JJ@ uu d` 991990@  ))]]%# 476$32.#"3267يrroqty>`oeF12J=78IDIN+J@@!  : S   9991/0KSXY"3 4&#! ) :/""`abjq.#EQQzm\+\ T@/    :S    91/0KSXY"!!!!!!N9s6g:B7+\ O@+    :S  91/0KSXY"!!!!!N9s6g:{J9 h@6  : uu d`!  !299199990KSX9Y"%# 476$32.# 3267#!sƳrqw;zv8p991VoGEC=87GF"+ u@A     :S    91/<<0KSXY"!!!!!!No8n{{9+y+6@:S91/0KSXY"]!!N+f [@%  : S    K TKT[X8Y9991990KSX9Y"!!#3267N:N9  :S  9991/<2990KSXY"] ]!!!!NVlR + J /@ uud`! !KTX@8Y104&#"3267> # 476$쟗s? qRn{oja*k4s?=QE'la_[+{@H    : u u S      99991/<9990KSX9Y"] ]2654&+ !!2!.#]dL3o#9ȫNh'p"a\?zvJEոXsoSR'@;    : uu%d`( " "(9999190KSX99Y"]@9 9 9 9 9 99999 9!I I I I I IIIII I!YZ Z Z Z Z ZZZZZ Z!m m m m m mkkmmmmm m!y y y y y yyyyyy y!< )```` ]].#"!"$'32654&/.54!2R>qiGoƹɑ=zJ}e.y87ZP39'265EMLlT7= '+%b`@:S991/20KSXY"K TK T[KT[X@878Y!!!!`9NTg@:     : ` S  91290KSX99Y"!3267!! $5467N ih$A 0Jba$Y;q@':S91/290KSXY"]@%5)76 ]]!!!nj5\+ % @J        : S    91/<2290KSXY"KTX @ 878Y@j       / / ? ? O O YYY      &%#' 637 0 BB UZVPP  !]]!!!!!d.n1}L2B==+o @I   :  S   91/<290KSXY" ]@4  -$ <2 LC    '$' * 79 : DHG ]] !! !!nyKa  +yx@5:S  991/290KSXY"]@  D]]!!!yy)o 9@:S   91/0KSXY"!!!7!08%:-<F@":lk9910KSXY"!!!!Nl--B5@ S9103Xƾm@@:lk9910KSXY"!7!!7!3+ +m`@ S91290 # #fg--10!5۾ f2@ 910K TKT[X@878Y#'fx#{ +@c        : "  g#"g&`  )#"),9991/99990KSX99999Y";"]@83!0"C!@"S!P"c!`"!"!"!"5":#:$K#K$[#[$k#k$#$#$ ]]"326?%!7#"&54$!37>54&#">32QGn}XsK8}{oa6p~ SQ=Fy)d_ BC.."Q?j @K  : ii`k    !  9991/990KSX9999Y""32654&!!>32#"&?cX_.!.huRkMH[sw\ifk+b]ρd~]L{3@ ii`  99910.#"3267# $5476$329HCފ~TI7Y[ibmU=02u21ډgqnJ @K  : ii` k    ! 9991/990KSX9999Y"%2654&#"!!7#"&5467>32uaW_ti!RkMH[s]hfkXb]ρd~]J{'H@( g$g`( ' !  (9999190!3267# $54676$32%>54&#" q7[Wg `Ri'9mlDC0/݀dx|(Yo  P^spfR@<      : igkz     K TKT[KT[KT[KT[KT[X 8Y991/22990KSX9Y"@ ``pp]#"!!!#37>3R/KE /1Ѩ2%7CO`N)Fuy+@Y+* )'&(  :& &g i z&i)#! ,99991/99990KSX99999Y"%#"&5467>327!!"&'3267"32654&XViMHXv7i:h^5UY!T^Z^b\qdy\c3 !65fkhm?;@L   :  k  %#  9991/<99990KSX999Y"0]!>54&#"!!>32)q GAol.hucm VH9O@Fa^ N?X@(:zk  91/0KSXY" ]o ]!!!!h.h9`F @:     : gz k   K TK T[X8Y...9991990KSX9Y"o]!+73267!!h.ղ-?e]+h9`[? @A      :zk   91/<90KSXY"]@<     )EQXcwpvz  *ESdpus ]]!! !!mhug^?6@:k  91/0KSXY"]!!mh?{+@x !    "#$# !$#(')&$#%$$#:!  &$ )$z" %"!$  &$ %% $# ,99999991/<<<299990KSX9999Y"]@#     /-]>32!7654&#"!>54&#"!!>32Sr q?6gls >7clh!TgtgnM1VH|#7@HKM8?`_`w?;{@N   :  z  %#& 9991/<99990KSX999Y"0]!>54&#"!!>32)q GAolh!cm VH9O@F`a^ NJ5{ )@ii ` !)! 10p]"32654&2#"$54676$a]a@ZVf\Vd{joincvx~dtxVj{@M:ii`z !   9991990KSX9999Y"0!]%!!>32#"&"32654&s-h!RkMH[sAcX_ b]ρd~]7\ifkJVu{@N:ii`z  ! 9991990KSX9999Y"7!!#"&5467>322654&#"isPkMH[saW_Lb]ρd~]]hfk?\{@6       :  z   & 91/9990KSX99Y" ]@#    @@@@@@``````].#"!!>32%Z4 fh'GՂ0!/`jq{{'@9    : gg%`(  ,*"(K TKT[K T[X"8Y9999190KSX99Y"@i j j jjj j!````o)vv]].#"!"&'32654&/.54$!2{5i]js@^Aٮs}6atqr@dAs=2473$ .$$9:64$( (X@>  : iz i  K TK T[KT[KT[KT[K T[X8Y9991/<2990KSX9Y")]!!;!"&5467#3=n3\=H3Ӣ\1>& .(@!>{s`@M    :  ` z &%K TK T[K T[K T[K T[KT[KT[KT[KT[KT[KT[X8Y9991/299990KSX999Y"0]!3267!!7#"&546gq FAolg!\p9P?F'a`#Nm`@&:zK TKT[KT[KT[KT[KT[K T[K T[K T[X8Y91/290KSXY"@FVffj]]!!!Jkn`j` @F     : z    KTKT[KT[K T[X8Y91/<2290KSXY"@(I   %% GHF W fh xty ]]!!!!!J'R)P`%`^` @I     : z    KTKT[KT[K T[K T[X 8Y91/<290KSXY"@N  (%)+ 1GJ   ((')+* 65GEGFG G G kch i  ]] !! !!t#8{=#LbF`@C :  gz   /K TKT[KT[KT[KT[KT[K T[K T[X 8Y9129990KSX9Y"@   H]]!!+7326?R;wʠ%qXa&!`6ρ;J<` m@,,:izi   KTKT[KT[KT[KT[X8Y91/0KSXY"@)&/ ]]!!!7!1FC1/`fZ0@g0/.-,+* $%&'() "!# : 1 #)*k110-*)&#   19999999199999990KSX9999Y"#"&546?>54&+7326?>;#"3+ڳ%[u@->'%+Fg!vrPJ Qtm{{<(7XHtWZMC(.0C410#Z0@l+,+0,,+ :+1''%,'%/k1'&0  /0+",%(&01999999199999990KSX9999Y"326?>7.546?>54&+732;#"+Fg!wsPL !QtC+۳']t?-=%%mYZND-*2D3z{="6XHuR#@ o o1990#"'&'&'&#"5>32326j`k^Xbk`k^VRPE:=MSPE:=K [@/ :UTS 991/0KSX9Y"!!!!Fiqqd+=^"a@8    i i #   #99199990.+>7#.5%3f{94p9K@ YG8HU77l(77DX.рJm520h10"#"#}@E  :^] gsd s  99991/222990KSX9Y".#"!!!!3#737$!27;G}!u-@34?-!4.\%({ FJ=#/@H ! ! $!* 00   'LKM-L K022999999122999990'7.5467'7>327'#"&72654&#"ϙљ0l=6l9ϘϚ.j?:l[\[~ Ϛ1k??l.͚Ϛ7n6?i/ϙ\\\]~  @S  :    S    9991/2<<<290KSXY"!!!7!7'!7!!!!!!:RRA'o%#pH%%h;`LL LL@ <210##  =3?@F@1:4%  $+1d@$7! =%+.47! :=(!11.=070.(@9999999199990.#"#"&'732654&/.5467.54$32>54&+Z=P^19Z96T_0f=Ma0Owp42S!PUaPXr(&=22)No{:$X6++?0/%=6f{;)\5Y>=V@[8=]7;1u@99991<20K TK T[X@878Y@*    0000 ////????]]3#%3#f1111IH@(  2&>7,- 486 -9DJ21/990.#"3267#"&54632'"3267>54&'.'2#"$'&5476$+9o9q~r@s.A>EyWWWWWVy{WWWWWXymmllmmmmllmmf%#rs~$#WWWzyWVVUWWyzWXVnmmmmnnmmmmnXu7/F@o"! #BBB  BBB:'*&#   U_#*d00   -&'-B099999919999990KSX99999Y"&]@xO@@@@@ O O O OOOOOO O!PPPPP _ _ _ _____ _! % &%&*%*&?????????:%<&K%K&Y%Y&i%i&y%y&%&%&]]!!"326?%#7#"&546;7>54&#"7>32/'\p>5TVBe}MLXU#bK=9F,4qXT@}LFod ,.##z3}' 4@     991<290 7 72+Z%L1+Z%'qsq@ o10!#!3@ rq9910!!mt9 4Lb@8-*+'0!5 2+A'*,$0-+$!1837$4-;6-34GM299991/29990"3267>54&'.#32654&'2#'.+#2#"$'&5476$yWWWWWVy{WWWWWXϲ##NOM+i`)Gok&: 1mmllmmmmllmm3WWWzyWVVUWWyzWXV5442wyVpP:NAD7nmmmmnnmmmmn=X1K QX@8Y0!!bw%dL @  -.-10"32654&'2#"&546HdcIHdeGBz0/11-0|D\dHHbcGHd3/0xDCy-03 .@o  o = = <2<21/<<0!!#!5!!!  bb\sc@!  dP99919990@ 55YY ]]!!7>54&#"7>32y!\nPNA:DG$SElxD :c*(..,mdOTRj(t@- #  #d)   PP& )99919990@        (]#"&'732654&+732654&#"7>32KNP>!:wXJ]`T u(INpu# LROO/0; c@.  :S  9999120KSX9Y"!###.54+Ӽ9fN`/@:T910KSXY"!!hL}-o#@   991/0!#"&'732654&'%"1a3(Q&BL4X*hs 9/E7) @0 OO:  b     9991290KSX2Y"]@   ))99JMMJJ]3?33!fۅ9 41Z^u\ b@ d   DD 999910@,@@@OOOPPP___ JJJEEEXXX ]]2#"&54!!"32654&Ϸ*7&XcFCcGMѹLPKQu' 4@     991<290?-77-7u1X+#L1X-#r&{'xZzdrJ&{'tdx`&u'xZzdL!@M !!!:UT Y] i` S"  !  "9999919990KSX9Y"!3267#"&546?>7%!!h VKPFPLPr=`jLS8Fh3P{f<=h69=DA*(wf54'&'(zR**nkaXf--oj\f{'zNs?a_\t5Tk&8 muTk&8 muTk&8 muTk&8 muyk&< u+j@: :u uS  9991/0KSXY"!32+!32654&#N+ WSY9BP̈eb׿uOVN\zRV?T7@^&% %&%67734257:5,& % 2gg2gk`667&%)"/ 57) ,/), "/, 7 89999999991/990KSX999Y"6$!2#"&'732654&/.5467>54&#"!*5f =TNNJ18o4Rd.M=C<ROfuZڰ0I]H7H+;[L=(A7+/e?1CFkp#f&DC#f&Dv#f&D#9&D#1&Dj#&D#{ @J@T7@5= ,&A A5&%"g5) @G=g/)`KJAD76 ,:%&D5:@ 2:D2K9999999999912<<<999990@6; ; K K [ [ k k 2?0@B?@@R?P@b?`@?@?@?@]]"326?>32>32!3267#"&'#"&54$!37>54&#">54&#"QGnuh9_Ղ p5BuK<|xr^aQi%SQ=Fy)JIMMI-\/9mlCD0/ghif BC..  P^toLo{&FzJf&HCJ3f&HvJf&HJ1&Hj?f&Cs?f&vs?Pf&s?R1&jsJm,@c*+,+)(),,+&'&#$#%$$#'(&%&(#$#(( !"(:,+*)&%$#'"'i i`'k-*+,) %$'&#" + !! -99999919990KSX9Y".#"32654'4#"$5!2''%'!%4f4d^@A[Wel%1W$#T`R#ms (j\tdtx] l^tj^?;9&QJ5f&RCJ5f&RvJ5f&RJ59&RJ51&RjV *@ on IJI <<10!!!!!!33Xˁ$+{@@$,+%("(#(ii`,+#, %+ +" $+!! ,.99999999199999990.#".54676$327#"&''3267E- ''[WdhDa))ZVemD`E/J;L~duw..o;Octz12p{sf&XC{sf&Xv{sf&X{s1&XjFf&\vVj@L:ii`k  !  999991990KSX9999Y"%!!>32#"&"32654&shuRkMH[sAcX_b]ρd~]7\ifkF1&\j{O&$q;#&Dq{|'K6$#-'D{o'$#o{'DJk&& uL)f&FvJk' u&Lf'FJk' u&L1'FJk&& uLf&F+Jk&' ouJ&G #mJ '@d &'% : % i%i`%k     ! (9999991/<2990KSX2999Y"%2654&#"!7!7!3#!7#"&5467>32uaW_9u%i%!RkMH[s]hfk'ttb]ρd~]+\O&(q;J&Hq+\k' u(JF'H+\k' u(J1'H+o\' (Jo{'H+\k&( ?uJf&HJ9k' u*)Fuf'JJ9k&* u)FuF&JJ9k' u*)Fu1'JJ69'*)Fu'J+k' u+?;k' uK{@3:  S     9991/<<<<220KSX@(      <<<7/S'7O+' n/?' 6O+'y/?p'yO `@6    : S    .9991/90KSXY"!%!!'%eTi N7bh=iJׇ @1: k   .9991/90KSXY"KTKT[KT[KT[KT[KT[K T[K T[X @ 878Y / ]!7!'%hfdu` NˑVDˇ+l' _v1?;m'vQ+S'71?S;{'r7Q+k&1 u?;f&Q}J&~Q@Fw!!#!732767!bZ[,-f0/d<?yv..<gFb{(#!7326767654'&'&#"!!67632R+-f^b .pQQlf dddnN1jyv\7 $#WV`b./wLwDJO&2qf;J5&RqJk' u2J5F'RJk' u2JBf'RV ; !@8    : S   !  "91/220KSXY"]@ ## #0#`#p## ]#"!3!!!!!!# 476$3iLqkh9u8g9A9y7`Ѐ;/1J.zIFJo{ 3?j@:+( g:i g4i.(`@ 1 +=1=17!" @999999912<9990>54&#"!3267#"&'#"$54676$32>32"32654&`Ri%# p7:Z։[Ue@^ a]a  P^un9mlDC0/NRRNcuwQQQQ(]Bjoin+{l' ;v5?m'vU+S{'75S\{'7U+{k&5 u?f&URl' ;v6m'vVRk' u6{f&uVoR&6zo{{&VzbRk&6 uf&Vbbo'z7Xo&zRWbk&7 uXf&W zc!!3#!#73!`8c%bb%c!!!3#;!"'&54?#737#3>q2&\2G-&2>%X9i=N>Tm' mu8{s9'XTO&8q@;{s&XqTk' mu8{sF'XTh&8]X{s&XTk' mu8{sf'X_T&8{os`&X %r&: |jf'Zyr&< <|Ff'\yk&< ul' ;v=m'v]Y&= 7c']k&= !uf&]TfR)#37>3!#"2%/K#" `NCH&67632#"'&'!#737!!!26&"7]dcuee32uQQ7(fH(I>XNN>-b.//.brr@UTT 827676'&+2676'&+)"#767676763! [76''[=ct10uLub*I.% =&W3AB7yz)BB((NM()sbca01y$jj"2!MA? ^^mML+K 67632#"'&'!!!26&"7]dcuee32uQQ7.9aN>XNN>-b.//.b@UTT| 27676'&+!'3 y?C1,zHn}/.-1][0-ujjuL|67632#"'&'!'26&"k]dcuee32uQQ7j>XNN>-b.//.bӨ@UTTf<@  9991@ u ud`0@ ]'324&#">3 #"&>`o8eBr-hrotR5IDd INK12Ã7.Fd*%# '&%$!2676!3#"&'&#"32767uxy}FEu1-@s3N9f^20WXXW1Rw\m .327676&#%"#767676763! )씓++I.% =&W3ATbU!!LM}jquu"2!MA? 10tfet10x 3#" '&7676!3!!Hz>C1-*~/.7|8s-0[]1-ujju#+# !!!7#"'&763226&#"Xsr>X5#b.//,Ǩ@pV\c.!276'&'&76! ! '67676'&#"m v646(=F595S10spST89a-vFIB!%p ͤ2 OF:8WXXYZJM +r !!!!!r8C9g6r8+#V##I*!!276767676'&'&#"6$3 #"'&'~ )豲j8<>Lښ=v_5O'?ZYsOE =ONOO87GF`nE<_10_S@81&'&7676!2.#";#"32767# '&7676Ɂ54%#llml7V]~?>1]^gppw:xwxs,ba%"ST_` )*^V].-54fcj6%stޕa`f7!!!!!#3276o9r6g8_6N9?!32767654/d"&W nnO8K`|DC%$? 2\ccXRQQ:_&j\)=*):>'&'&#"!!67632?27676'&'7#'&7x  !.pPQk.ftdddnMN,, /ve]#F"V'08&2XW+n#WVb./wwީ 4aXksTH( %CSlyx ;# '&ζ`x<8N}|6V݊- !3#!#3Zw2yy2m+'& !!!6769>Mt r"jܳ{gƧ$L`L ! !!6763!#"zN[,-e01-Fyv.. !3#!#3Xf3xx3]mI#''%'!%!Z#% H$f\ \eaeca_H+%#"'&7!32767!32767!!7#"&:YhhpYP/hNfHG!h$RgHIhTgth67wkC w65TTC65UU+_`pf7!!!!#3276oXmR/i!N9..wuN`-F:fIޅl"y]UU,{UVVUUUL\ (vw, )327676'&#%"#767676763! !#!QpGH32pI.% =&W3A.-e_76dd66"2!MA? ~~Vn(67632#"'&'!6763!#""26/]ccuee23uQQ7s-->b.//.bXfXUTTU@VF)!!3 ;#"'&/&'&'327676&# 2"2-.Xr2 "$[p.ϛPJ)./!RpHGdp~> MJEe ]76cen.67632!2767#"&7>?>76'&!"={zhv 33y%0{{-?|~vj#+yx{7LPq2\\2.}ͱ.>f/,>G)\2>%Nrv.+w MY>J-!!!#"!767638p "#ppNLi1RQ,!!;!"'&7#376763!#"q1]\2HG)]1 zi-L$#N%NXYNfXf#!!!;# '&z9`901x<9N}|6#߂CC݊*&8u]&XC%!!#"'&76767!!! 766,#29m)( '|}NO' \\92# <89< DVtuutˤU#yǼ9.!# '&!;27676'&'7!N}|6`x<}(0TR%#1Vu^_{{676'&!!)|#D.2g{{o#gr7 yPu`.F6767'&!+32767P05`ivcԙ%0/[p-ϛmkm+/jG5BuKJJ!3!!!7#!!-}2f88-2HA`!3!!!?#7!7!1|+N21u+I`ݶ* %2676'&+7!!!"'&'IJ0u91+Mx@:+8&jcf45^#N !pgts="JL * %2$7# '&76767677!!#"D9+ckV190]^LJ=stޏgp! 54fcjH-`! !!!2767#"&7676;52/1N[kc+Fswxx:wppg^]N !qfst%)6jcf54V`932767#"'&547676%76767654'&+!!lEOie=l$'&.dnoom+itjqYhX>f'$.O21"08g!CA (%+ K;jC9% &"#!!#!67676&#"6763 3!77]32 / tuZsr@z }~)S3,+?Di'&LH+vvzi !7!!3 ! '&7!32676'&+0}%9\Dj;8++IJ_<(xstsscjjcf45H`!?!!32!"'&'32676'�}Q+Rd58+spoj9beegIJ\/Fhsst%)6jcf54$#737!!!#"'&'327676'&#!;&f& T-*MNE:EJKPyG+?3”C^ׅ#*+rB`GLrV{!!676;27654'&#"9-f l]p:1 a+~Y4 o%,p\])(UN& A,AV!!wVC'KV!!!!!!!7!7!7!$m_.+_.._+._e8+ k'?'+ Tf'@'J jf'@G+f'-/+F'M/?F'MO+f '-1+F 'M1?F'MQ{k&$ Du#f&D+k&, u?f&nJk&2 uJ5f&RTk&8 gu{sf&XTR' h8{sO&q ;Tu' H8{sU' XTv' @8{sV' XTu' @8{sU' XH{{R' 8$#O&q;{R' ;$# ' D`O&q:;#&qJ9/# '&476767632&'&# 3276?#737#!34¶99q;ztuv_^8889t x1VF{ ~G"#OO87G##cceWfW)Fuy?"327654'&6?#"'&54767676327!3#!"'&'327!7XW//ZXX//>&Vion&'HXrrvPQ7i%;Wh`a^5UUUY_Xwwwf56vwh67]A\Mb\z{qrqdy@?..c3iVYbC!6HYJ9k"* u)Fud#J+i". s?i"N sJ_&2ZJ_5{&RJ_O&qf;J_5&q*k' !uyHY&TqFg !+732767!373h.~}ղ-?e/./`qr-.x+ '='+ T']'J j']GJ9l' ;v*)Fuc"Jv. !32767!!'&7!!!o$--LL$ee>>{"o9OPPO =#V3%!!676327654'&#"ivu$rlv@4 Y4P# /aqv-1|ej*+2p)#H1H+k' u1?;c"QCB{' #|"Cv@,`l' v#d"v+l' evg"vu{p"$ z#f&D{"$ U#F&D+\p"( GzJf&H +\"( JF&H+~p", z?Fd#+", ?WF"Jp"2  zJ5f&RJ"2 J5F&R+{p"5 +z?\f&U+{"5 ?\F&UTp"8 z{sf&XT"8 U{sF&XR':6{{'Vb'7X'~WR;676767654'&#"?6767654'&#"6767632&~g*6U9D2iU2AgSzY}j{r [h=1"ד#W@]K]=*6U_8WGsA%10"J|A+8h`guImYWw[)On{;676767654'&#"?6767654'&#"67676325̗p[(2M2>(\K.<]KlPos_}vqiP\9/F5J=L3#,EM-F:]7(';je5".TPjT_;XKI`lI"+i"+ s?;i"K sBV5676'&'&#"!!67632!#24Fpo'"s,};SI#.ss&:=/fW<%276#"%276'&#"632"''67&'#"'&7632!K4.fsML>+-srLN>-,^j^(2 Sa[B3-D ;Laee23tPQ7thY3/TT@TTTTTT\8EWiJPH7qD#,/.bX3'P"32767654'&7! '&5476767&'&547676%&32767654'&.q2Dfj[)5 !Oa[B2.!8 H)\2>U5/`4EWlJPH>Z Y>F` n@$  : gz   ...91990KSX9Y"K TK T[X @ 878Y o ]!+73267h.ղ-?e]`[#B <%26&#" 26&"367632#"'&'#!7#"'&7632Rs>Xsr>X?>XN@ %t\bcuee32uQP6]uee23tPP7u@@UEwnwE`-//-`c\/.bXqV{E"327676'& "27676'#!#"'&76327!367632#"'& rLM -,rsML ,-@N?!%-ML ,rr]uee32uQP6!f \bcuee23uQPwTTTTTTTTUEwnwEUTTT|Lc\..c`-//-Z!#'#5'7!!%'!'X<d4[ }j! JJ&S[qs\1"+'&7%$!27&'3267# / &#"s\MI1Eu}nUM[**\sy OP""MN-Ϩ9 5alkti;: l= #c=05+ #PPZTGx490VV`!;#"/&'7!1ZaMN.ϧÿ1`':ZGxf,(""#767676763! !#!!27676'&#XN,& =&W3A.-!eypGH32p%/!MA? ~~76dd66r|27676'&#"! !oIG23pXC-.|#W76dd66~X#.)#3! 2676'&+3#27676'&+ub*>3B7yz)BBt10u3 T[76''[=$jjA^^mMLbca01H;((NM())o!!!3#! 7#73!32767Puuu&>>&`$--LL$[b6=bbOPPOy%+Br33#3!!!#7!!#!Ƭ^H89ܪ8^^"Cj6ݾNVyJB%*/!32%#"'#7&547!2737&#"7#364'j̞:d6c5"aN$h%"YfU +wDMfasDO: unE5<f!3#!#3267#3N3R6N9f^Q^wv\rf $%2676&#"# !27!;# //// |BBH-maxP8N7yTUzsF{ )%276'&#" &?#"'&76327!;sNL>+-srLN>-+%  ]ueedtPQ7 h:f-TT@TTTTTT_Shc\/.b\ (27676&+! !&'&+3#!7#y>=XyK=L'vw*K22'fn!10^m3,,3?--gfXcc֔-@?Xsp))NY{&'&#"3#!#73!67632+,-/QP%UU%_f$[cc}'/ JJNJn23=p!!7!3#!#73#}Tp&dzz&qDջu—F`!3!3!+73276?!73#fXf&mkn.p[0.&}&^`JJJJK€7{ /27676'&#"!67632!#32767# '&p@? &&QeSS|}i!\ccYY &<;sgh^5yvwtpof&&JD&'IHm)f./ef\\U('.wxK{{7!!7#"'&763226&#" h ]ueedtQPs>Xsr>Xc\/.ɨ@{%!!>32#"'&"326&w h ]ueedtQPBs>Xsr>X`c\/.7@H '$26&"67632#"'&'!6763!#"%>XNN>-B\bcuee32uQQ7,.f^@UTT`-//.bFyv\D{4@  9991@i i ` 0>3 !"&'3267654'&#"[X/f6nWN96T .BOS=qCM%121+]Xsr>,-% ]uee23tPQ7th:f-TT@TT_Shc\/.bX\# (%26&#"76763!#"!7#"'&7632Rs>Xsr>X0.f^]uee23tP)2'@Պuv\c\/A1.{!76! !"'&'3267!%!6'&#"Y3"56{zu5pppq&56h`HG3 際0D"!~~n:;?>H{!7!6&#"6763 ! '&%32767WE q}}5065x0/`hLM%+f~~!"D0Ɵf>?;:nM{ 332767! '&'&'&#"6763 ?;#"'&7( /`hLM%5xEW Bq}}50!"i+#`90! ?;:n,Q`ƟVv)?!"D087o[7({>{3!"'&'7327676'&+7327676'&#"767632ŔFGcfej.Refqr%mZ;2*uhCY N-{oU-~lk]!WT=JJp\["YO E1&  WB@M{B!"'&'7327676'&+7327676'&#"767632?;#"'&75ŔFGcfej.Refqr%mZ;2*uhCY N-{oU-}ml\}I!"i+#`9/ G=JJp\["YO E1&  O.N87o[$_u{/%27676'&+7327676'&#& '&76!2tIJ <7v,|u8? 10_vc#!ADlfgDCqsb!'(:<'%",*$#dR]`囜*HGa@?p$F`73!3#+73267%_f_%Q,ͱ.>f^Q^wv\/F* 5"3267#"'&76763!36763!#"#!"&'3267o-,sp=]ugf0,q.}-f^*5i]7SUU[ wOP:Gb\⡠rv\ !6ZF`)%#"'&76763)!"&'3267"3267]ugf0,qh4i\6TTU[ Uo,-sp>b\⡠ !6OP:H_#%# '&76!2.#"3276?!7!qutw55k_^P.QZkk"#+&& 1H2(10YX P`  ! 6!276'A{ք@@{4 %B МH0WFHJDWd`  67!!276'@{{g4 %B ,H|(|HW;HJ9SJ^!32767!!#"&hP ! .pQPkftdddnšog77#WV'Xb./$!7676'&'&#"!6763!#"67632P ! .pQPk,-f^ccdnšVo77#WVFyv\a-/@F:067632#!7326?676'&'&#"!6763!#"bccdnš,V*.-f^7 ! .pQPk,-f^a-/Ftv\[77#WVFyv\j!!!3#!#73f9f^&UU&ܐJ` !?'&7h"a.XW,`l.7 yx?`%#!#73#73!3#r..~.f.~v!676?3!#6767"f JGg{ IIj 9JH;JI!3#!'$&#";&Gf*tu19\j7`'Y{ hX96"BKT5F !;!"'&7phf-TW(/.vy@HN%!!!"'&'32676'&+7!!nfU0 Rw@;+sppj:beegJI0ͧLN !qfst%)6jcf54}^+%#"&7!3267!32767!!7#"'&VXhhp,hqNf!jhq$RgHIkh U_^gtONh67 w65&65UT'_0088TB^+%#"'&7!32767!32767!!#"&}YhhpNM,hqNfHG!khq$RgHIkhrTgth67ww w65TT&65UT'N_`peF{167632#!732676'&#"!6'&#"!!67632+Xhhp,+-f^Nf!kr$RgHIlh U_^gtONh67jyv\sw65H65UT`_0088Fb{(!7676'&'&#"#!7326?!67632RP  .pQQ=+--db+f dddnNMVo77#WVtv\pb./wwgF{#6'&'&#"!!67632;!"'&7!",gZOlf gacoOM,g-T\&2"WK`d,/wxj/.v` !!! !mR`uuH7{ ! ! '&76"!36'&!#32763!lޅlwP< $ "-}M-wuO.{؜(UAmmAU;L2UU2Ja ##";!!!!!!"# !22ofg!!EFojN+_(+|1+  45KUUUV$".'"3276?3376#"'&7#"'&767! 'EE"+,/ooc><8VTg>=.)G6aFFN9[jl`-SPvogD@ED~w\kV]?[`32767!!7#"'&'}+,-/[\ df$[cc}'1 XYn2332767!!7#"'&'S*-,/\[!f$Zdc}'1 XXn23gF`32767!;!"'&?#"'&'+-,/\[!df:f.UV+ Zcc}'1 XY\vyߢl23V{&'&#"!!67632D*-,/^[!-f$Zdc}'/ XVR n23ZF{&'&#";!"'&7!67632F+,-/[\ a:f-UW+h$[cc}'/ XY\vyLn23?`%!736763!#"r..Q+.h-0Qyv.1Y`736'&+7!23!Si.UW,S.1.vyY` "27676'&+!!2!&'&#[-."![O4+P_`GGy<)) i[%'Kv IH g`JKoHG!0/aG` "#327676'&'32767!#!!O4O[-."!%K313kF;;Bm++|}f HI Ga/0!GHoKJ`+F{=&'&#"!"';!"'&?327676'&/&'&7676324jfg_f67 B_= OP!#78f-UW+'alkti;: k=OQ #ckj=05+. #PPZZb&.vyI490 QQVVF&#"+732676763&-L$# (ͱ->f^#wwDRwv\WX'FO"737#376763!#"3#+73267&-1#ww-L$# n&U.}ͱ->f^QNWXCJrv\F{!2;#"'&76'&+FUU#:f>-UU' L{XW\vwD/D>*"'#5$%76763!#"3"+&#"3276V;94#ww-L#$ ͨ)8s.mq?h \,f/DWXDcvvK:.`!!6'&+!23#>2q\\23GG)\2>>NXY%`F!!!;!"'&7#F>f>q2:f.UU,2`>\vwL`*#!7#&'&'&75#73!!!!3276&Udcdm+9N,&_h _f_fx @.pQ*xJb./!*wp[a3<#&V.!`%27676'&'!# '&76767#7![3I22ST=7&N7-20 Ubi&$ELQskXWWXksTH;lpA`#'&7!?27676'&'7D/&1XW,h!/uf\"E!;lyxl 4aXksTH`)!!S`` )!!!!&''R`)!676;#"zllmm.p[^&ʻKJ:Km/`!!!mt.v\\`Yx(F5`!!;!"'&7!7! 1;O..UR#}1`~ .vtfs`!3676#'7!7!276#"1;*3ւ0ߒ _3`+( f$0PH`! !!!"'&'32676'&+S21 Qx@:+spoj9beegIJN !qfst%)6jcf54*H` -&'&767676'&+7!!7#7#$!2 c9*:J021 QwA:+h>:s}A U9J*4N !qfs %( #0yj327676'&#"67636!]lH-MPSRV:RUTk*-y`rLG`Br+*#Ӆ^i!&'&76762&'&#"3e`S-)NMF:FJKPyF*@ ^ׅ#+rB`GLr!'"'&'327676'&#f`S-)NMF:FJKPyF*@3^ׅ#*+rB`GLrU#%32767#'&76762&'&#"T,MPTRV:STUj**MNE:FJJPyH`Br+#Ӆaׅ#+rC_ + 7676'&#"676!2! '&67632"'&> pqLMrs112! /-65  Zl 6^^aaaa5''''56L&&?`7`{/%7676'&";#" &7>7&'&76763 eif!#DO_>? 3,u|,vEJ :9 !g+,l`]Rd#$*,"%'<:('殭p?@aGH֜$/%# '&76!236763!#"1&'&#"3276?!7!rtuw23.~.f^ .PTUYjk FE+&& +e2rv\71YXYY :C`D$!!!3#+"'#5$%3"'"3276nf8f)8s.mq ;94.?h \,f/ܐ0cvL9.L` !! !!`(Z[fLOe^-?`!!!j9`JV)'%#"'&7632736763!#"!"326&X^bauef32u7 .~.f^r>Xrs>Xc..\crv\!@j$327676'&#"67632!!!7#73]lH-MPSRV:RUTk*-y%%rLG`Br+*#҅^”i$3#!7!7!7&'&767632&'&#"3eM%%S-)NMF:FJKPyF*@v”š^ׅ#+rB`GLr# " $'%26&#"!!!!#!7#"'&7632Rs>Xsr>XuhU0:N11]uee23tPPr@XLc\/.JKH J ?%26&#"!!!"'&'32676'&+7!!7#"'&7632zs>Xsr>XuhU0 Rw@;+sppj:beegJI0ͧ]uee23tQP@XLN !qfst%)6jcf54c\/.+ ( 3:=%276&#"!!367632+'67!#!7#"'&76323276'&[sLM>Xsr>,-uhU0:..@2:   ]uee23tPQ'%.rTT@TTXLu78878c\/.9GH:g-G.#"!"'&'!"'&7#3!!676327327676'&/.767!3g5j_f76 B_=JO!#osqtGH*\2>f>q#0c= aklti:; l=  \\=005+. (KPZZ"(XY>‚)V9490# %NWF$,!76763!#"+732767!"'&7#3!3>Q#ww-L$# (ͱ->f/,HG)]1>w]\NWXDRwv.+vXY>b`%NEsb5?J!676!2.#"63 7!"''67&'&'!"'&7#323276#"!;&76=q%$/XRSO9?Ode!:g U:*,GH*\2=-= SV\\-#"»20WXcG 99^G%@.9XY>_9K%NcF:#"!3!67632#!73267676'&'&#"!!!#376763O-L$# /cdddnNL,,-f^a  !.pQPkѨ1#wwDNb./wwjyv\77#WV``NWX$6&'&#"!"'&'!!67632327676'&/&'&4jfg_n.8 B_=KO!#osqt.fy-PcD_ikti;: k>P*=00+. (KPZZ"(P1V5390Q* !!!!#!CfU0;N27!qL`D(  333# #333# #($Ϳ&%C$Ϳ%&sPTQ PTQ1 7#!#!#!#!OWW9LWW:>)>)Ju (!76&+7!2!32767!!#"'&E+:f.UV+hO  .pQQkfudddnNMj܇\vynogn#WV'Xb./wwF 5%!;!"'&7!76&+7!2!32767!!7#"'&dh*:f-UW,*:f-UW,hO  !.pPQkfdddnMN܇\vyV܇\vynogn#WV'xb./ww=#?676'.#"#3676325K - *H32S01Ug7BC=%#?676'.#"#676;#"676324J , *G32>@F|43>S01Ue}CBKL6BCg 3+7327673#wRRr(A ~BCK\0&'&#"#3676322X:98y9?>P  d 12\sg>1327673#7#"'&'TX:88y9|P G 12\!g>8G#327673;#"'&?#"'"'jX:98wAj8:7~P G 12\!LBD}[=8 !#327>'&'3276?3#!3+22:T0!{+%%*E NOzR|(6')>Z*)sk 333# #k$Ϳ&%PTQ.33+73276?enMBEDcH: WRi*** hX9@:S910KSX9Y"!3;:'ժX`X!#uT7թ`#7!e!ڬ@X27>'H#v7-.6vDC.cdvt'&l&'STTS@"'&6763"JvDC.cdv6-/tSTTS'&l&'Y327676'&#"7>32##55)7!##)##55M #7#73733L++$++$lݼݼ o#!7!>"oTFo@  91<90K TX@878YK TX@878Y@   ]332673#"&546WVPQh"͜F AFGI|y;-1K@ 9910K TK T[X@878Y@  00//??]]!!11y @@  KK10K TK T[KT[X@878Y#"&546324&#"326wxxwTABTUAATxxxxATTAAUToF@@  991/0@IIIIYYYYiiii ]!33267#"&5463G41-%R+9Z'joJJP"& EBA~9@"    91999999990K TKT[X@878Y@(         (]]'&'&#"#>3232673#"&{1&"4 ^$C%5"&4 ^"<T%E<+C>%f@ 1<20K TK T[X@878YK TKT[X@878Y@-   0000@@@@]3#3#ɮbfx2%7;#"'&7_!"i+#`81"s87o[Mf '#7'373AdڑCbڑWWVVG 7673733276l*%n& ׂ3SFFFZ3#3&'&#"#"'&'7327676'&/&'&767632EAB=B"#='45^_GIJL?EEJD%$E'54XW@CE  -,`d32  .-\d00j 373#'#$oz2A#&'&767632&'&#"3,P6t7Tdt21- ./04rL, *8d5QyJv  @%6'+@Y #!7F%tм #!7!켴F$<t4 #!7!xF$xthh #!7!3232673#"&1&"4 ^$C%5"&4 ^"32, @%)"B$[^Uj1~ 8%" 1%+&#t^Y.$'$ f hf f #VVD8'Cf###yfxx;#'F cX!3X*!727#03yyz#3$70yx30z0f!#U%f6"BC*@Bvu2#7373#-$$l #33$l$$+FCn!7!#L%+l7326764'3#"&9B'< tV5cR2&;1'M(7^)s{6["3"'&67637-. 6vCD.dcv&'l'&TSST73733%##%h#7!##j%+%# #73733##Y$$$$$b7!$+$bF( '#!7326?++.f^+yv\vF %!;!"'&7h+:f.UV+܇\vyMC~wMCj@2F!#qD-ozoF-A#,VVDJ A#7##H$$Hv/g@#"'#"'&73276732767.5@k0Kj MO(MF+@FF0:mY]B$?@@H= Z(!?{Az!79%%۾t!7!7 %%%%Ra((Sx7!(&&:bx7!:&&T '^ZZ^^eY'8\![Jqs?1?_SiIA!7#ppD,,=n5@67632632#6'"#6'"/5@k0Kk  LP(LG*@FF0:m~ '7'77lhilh1!'&'&7>;7"+2676'&C;" E9)#zSR!. zRR: '77fC7fv9@;'lj V  XI#7!#!:txx,2!7!7!7!>>2Z.3#3#JJtx!#!<X5*>uf+#7&#"#>76763273327673#"'&L 4 BBW%#W% BBW&!J\ <2jAA h9j@A x$3#3#'&'&#"#>3232673#"&!B61&"4 ^$C%5"&4 ^"<C%E<+C># ~ T( 7!#'73!'39Q\ם\(͌#77%'%i#";#"&>;7[ >6v-vM67L '8732+732676&#v-v6\ =7짚L76M;E1;[_8{k8P7#'&'&#"#67632327673#"'&X *$V8g8g\qJ2++3+\ !! !!8>8p<8a#A4lb7y<Ys /6767654'&'!7&'&54776?!3's;,n2)q;q} 6  | 7[&"b@5S*$a: rxfVaf'@W|f&BCoH'NNy)7!;#"'&'# '&4776!276'"2796DR,fA<66P.9CHH##LlT ='&X|&xԣVWX'QVG094#"32767654'&'767676 76763#"'m78U -s?>P7-P 6tuL[[( ONfSR×krTUNA2UDD)fC+$W> xw!" 9A\\]([Z쪃V`!!&'&+732Ng]SS0$D-D;PVXJ  $ 5&!"! '&5767&547! 32767654'&'&m5a=Fk? o95S 1qrST &8a-FbS F?I񜝝p52 @uDF8W=6XYZ2?>1L 7({(9@&' ! )291@$ii `)90 4767&5476$32.#";#"327'jM语.7MM>HWu|,vGVja1cH+0 #)++;&-G.IN8AV"#727654'&# 47!!|G1 hi,F'; ]22Cc^Ba)0WX'&%7@< fVa{!>'&'&#"!!67632PiO  !.pPQkf dddnMNn#WV`b./ww:E$ %32767654'&#"  '&7?YXxG.10ghgE*b9Grg=G^KJ-W@ED9a~}0oW`327#"'&547!89!%BC=n fjJH #m)Dw?o` !!! !Tf?\WR`Au+<'&'&+732!! ^p-϶PW!mMJP<LT\`w9`!!4'&ޑwfl]`J("įt` O6V- %$!2#727654'&#$47%&54767!!m,2JwK0 hi,F"#; E 2 cA`*0WX""&%T*/eP +J5{RL`!#327#"'&547!!#2b89!%BC=n {Ϩ` J%$ #m)Dw`V~$% '!76$324#"27676Nkr6OP%tE2͹sNN .LM :\PazUTA2UTTBpV{(& #727654'&# '&54776!2|de F0 hi,E(;ll5/bWX0']@`*0WX'&%wxCM>K@`#4#"327676%#! '&54776)vOO vON M6~ޅ_5 ?UVA5UVBGNMOȜoFOjV`!!327#"'&547j22Vb89!%BC=n {` JH #m*Cwo(`!654'!! '&547!3276Tb( =ST fjku9q.W_-89FīLK/6@Vj&2!$477634#"676t^`SSj6 ,;:&VM]1:*M4jiJX@V5bFRTU8Hnxa`V` !;#"'&/!&'&+732{Q<6p-QP' AQ 0p-σTU(wO6JK-RFGVa`67!!$47!!ȟ.ffgfSSogff Vdd @V5oM[C8H`D`$! 47!32!326'!! 54CZ23=cqTf*?=13f sGub|(_B;FDfA1&Bjbo(1&NjJ5f&}Ho(f'NDf&RyQ$ " 7676! '&76! 3276!'`xtI^!aKB@# #%9fRu-m~`zUt]@% #6'&#"'$%$! '&36766M%K@ҨAM _XSTujHQ3xJqRfR³#G BlO}վUN!6'&'&6%6'&dF ttj}8=w2:hRHˍUxT4!0u81R.4f'ZtNk' uZkV'7676'&!&'&76%!&uGc#@OOOg42|QdQ Jh24ɕYu+l#Hc.At,ny }a}y Y,tAD.`'7#!#! 547! !32!32654Df11` sGZ;cqTf*?=ZQJID{}}B;EFH\c/!%76#"'&767676'$676%&6327L.p9g S:S絤 W9p9g S;R " Yj\l<~Pq' |P $ 9l<~Pq' P'wV!"327676'& !&'&76! z{.-HG{z-.GHQwQpFGghHGFق낂삂^-jkdΌoV^{ "327676'& !&'&! (wOO ..wuON .-YRwRR65"!56w{UVVUUVVUZ#`8`{V'""#727>'&# '&%6%!0e-.^X|CK!nd,F9 fk,u 3 '&7 6'&# ͥMB3]t[/:2G]kBCP&#"327676#"'&'&'&54767676763267!"'&#"'63232767654Qt4! **44*h{]-W?B4" 02AUkm~SV%3 %! 67654'&#"!676! g>=Xp1<}xs$_rJ2t ) eǾLlR@P|Dno39ӻV{%32%! 67654'&#"!676! M.1:^/6jsMM_gDznTQU<.6F.SlT&*t/!'27&#"6763267632&'&#";!&QxZ:+N$#>)(,:J"#'o;)%&>$N*9=88#1b0> N&K(N 0<1#d{/%3'27&#"767632767632&'&#";!7[18RA /#!%26rJ2#!/ A$"1'j'ɞ9Y%33%95T&:67632! '&5477676!2767#"2767654'&#" AuzcQ8m=LEYˏ+(}xPTS!4TV! 6D8/xAGߤpJW7x _VTTC6R3TUVA4T4U&867632! '&5477676!2767#"267654'&"]-->F!~' /.b1UTTU@L{FFMQ{327676'&#" ! *HuP9./Hq6<hFFFFyMZ#eV>}Tjkz{!%# '&76!2&'&#"%32767a{Ћl0v[1-.LM>%h6qi72uQQ77w%wUTTUTT@~' /.bppp!'327676'&#"6763 !"'&<]absΏ--\]snoy>N+A{$+327654+!!3 )$i86[ [\uM:=3+%+r3!!+"%8\N!!!3!!!3>x|Ew>>wpub}#[NAdE+\(I3!!#!#!!3!{RÍ{{G+R{n9Gyy9X(3267654& 6$3 ! ' 7654&+kL7H/^P2 ZI:a<\s}[]76! !7,547%mt mt  j7j  6tVqU/Vr/AJAK;J )!!!3!\"8wNNL!!"'&47!3!!oP3Y5 ^l{:uKSz=x++  !!!!!!X"#+NJ 3!!!!!!!w>"#ANN327654+!3 )!t$9nn [\7=3+ 'Q+^327654+!3 )$n[ [\uM6A3!654&#"63 !"'3267!W<uE<)_{ mݍ5oЗXd_o5x+ )!36! ! '&547#!"327654'&MuMghrFu).,H.,Hzΐ_md\O\abO %3#"#"!6767&'&547676)!ZKyz+m^A@Mf#YKKS5" *'L?Xf :-))p?@-_=T.4cc+#{D1W* ! 5454767676%676"2>4!E~4 %T~3;$OsO& ,I,{E E T":‚0)' "0O[BA?`"327654+327654+!2)-maKK4R?(e K]~^F6h}S9/#:e`!!!Q+`}`!3!!!3>#! Ȩh7p7hqCM>%cU?|{%!36! ! 547#!"3267654fW9c"!^6Xw u `?oFP >{A5֫B5` 3#"!#"!>7&5476763O4O[-@9oP%Kd3FvB|}v+d*7a_6!%KJJm'CJ1'j:F%%!!!63 +7326764.#"!#73ifF'GLq,ͳ.>f^Q"A.p['rDS\\6',:m'vI{!327# '&547!2& !$u9эf6/9{έQc>qCM7>bK{{V?L?>1'j_FMi`!!32#!#!676327654+S #U^t2?/U>`Wu(.`%I$uY7~^?+`%32764&+!!!32#!!!>LOfScSfS #\\~66VWu(.':%!!!63 !64.#"!#73ifF'GLuU"A.p['rDS\6',?om'v:Cm'CF'[c` !!!!!!4fcfi77h``Cb<3276?!3276654''!#"'&'# '&547667!$ghHL /{/"elIN5*3?\$* Phg PkB (f@OS#"tmiqU5imw uk=9AFPEf^^l FkCD`R(!!!3 )!!327654+"9b [9"$ՠupR6>3$ѻID!!!3 )!!327654+f>^2+ D)ϲ2X'-I~^++32767# '&#!!367$!2&'&#"! E_snoyFENe7L4W1yF`Mw2W1~N7'!!!R蘸e}[$eWW H+QH` !'!!!'_Elh'ŚEnQpd6f`6p7* <7!!!!!!!'!@蘸{"oee}[WW9+QH H:U`'!!!!!!!'!'QpXfX_'ŚEElp7w>`=6d6f)654'&'!!767! !4/X\[[H-FZsKUGSM& Hkr3 3r_w`!!767!!654'&'#wf6`wGgA_ &"<>=B3]M'<'MoFO8/X71:/U* % !!!!!!!654'&'!!76K{"oKZs4/X\[[H-G*9 3r_mSGUM& Hl#:`$!!!!!!!654'&'#!7Bw4rXfXGgA_ &"<>=B3]7ʋ>`='MoFO8/X71:/UVkX_232767654'&+732767654'&#">3 #"'&#"32&'&#"'&'&547676!3738>E!R]SF gLNV&<@6: 27v,|u8? *0_;B/_][WfODDqt1" KK/ ?43f'.nU?()2 /!%",##  H7h"a@?H2E"Rx1Va`QQ{oH{ ! '&547"!&!26 _6`6@z MIƅ{oFPȜoFO8BB S,!632.#"!zw7>>rA54 rz{!>32'&#"!zg{a4/9Z3"w`qV,l###!632.#"!Tzc<zw7>>rA5l  i4 rzf#3'P"32767654'&7! '&5476767&'&547676%&32767654'&.^ >f       aF767632#6'&#"C}b[H8*-QX 0LL;b"H#%#~!#3!o\N\nn9~7!73#79#N\npnwl+/+o+m+9++H i+ i  7- #)/!73!#'7%'%'77#%73%!㽑!㽑_lkHk=8b,q;b,q5%0 5 %A@¬@yoyo zV!zRR+Vk!!!!!!332673#"&59R"mJ QOHj'Ɣ#V<7=6}:V %!#!!!!332673#"&546g+s:ftt؎VPQh"͜VQ`T AFGI|y+^ #2767654'&+3#3 )#737!y?C$,zHˌ&$[ ,،&$-1]:#-¼uM6AluX»7d #%2767654'&+3#32#!#3!VO.. !P02!qK "2>f ? ' X;s(/QX`>+ 676'&+327'7+!!  32pQLf^#:fSQ+vwwv\\S`i3!##!#!!3!3!w>Í{{G+R{nn{R#Ayy99G`%3!##!#!!3!3!b7I\\I':RfR;6(''U VVoX'zoG{&z]J!!#!!!&w>b r"j#AL!=Z`%3!#!!!*b7CDf>Za`A+'!!73! !#V8r"jR=  DD6J=s?o`'!!?37! !'#)Ef?;,nZWn3.`-~+7!3#! !!#7=&4 r&SS!=L?7!!!! !!#7[fk&jyN[&kk-F !!! !!8i{< y#+oe` !7!! !!N+?ZWEAaJ;!!!!!!!!w>{{"n8n#Ay9Z`%!!!!!!!!gb7\\fRcRf'`V+ + !!!!!!O{{#o8n%8Ny9:.` !!!!!!\\fScSQ+}'`V+f d'!2!#3276?67654'&'&#!!!!! O2=6N9f^#:fT/vwwv\\S}`QuM676767654'&#"67763232767# '&'$'&547%$!2&'&#" !fLFCH80#:aJ 1:JA9MXPI9ZZYẄßEu}nm`5Rr\zΐ->$XR`++OEK"&kQ5>$1!(Ydf7/LAY4D.9{M%676767654'&#" '&54776!2&'&#"6763232767#"'&UE4/  .3% f6/XRSO3@H=Ycd -0.K8 #7-,2B<=80FDEBf 63;0+n# qCM%WX3+\;(uwR?e)0 % wJo'zLo{'z !!!!!!?w>8`8#A#e#` %!!!!7!!gb7i++jy<F`!!!ff+NM`uqy!!7!!!!rSS&%j%&Qf)F`!!7!!!!43 &ffP& N3!#! !!w>nCm#A%`%3!#! !!Ab7{({b=#L{!!!!!!!!B8w>8`8#NA#e`%!!!!!!7!!ffb77i++j}!!!!"'&7!3!!w>{QN-L  !.ln#Aywsoe@7#9`%!!!!"'&7!;!pgb7\D@"9f $Rf[V(TKh0+L#"'&7!;33!!##ҸQO-M  !.??o{"ywsoe@7#E9+y`#"'&7!733!!##QC@"9f  ,n,[Sf\[$n[V(TKh0+ ټX!2!?67654'&'&#!!|o Q2Y   !.z"wIyFR5ohb%?;KW"+676! !32$7# '&"'&?!%!&'&#"[hgZbd|<~%ml(#51*HzI@FG78϶.NWjLF rMM='{$-676! !32767# '&7"'&?3!6'&#"D"3 q}}5ϊrtba( $_0/`hLM%xf~~!"D0~ll0F]/&f>?;:nW_&C"=o'{&DP+,Ik' duF'J+f"32!#3276?676'&'&#!!!!cNO-=6N9f^#fSf?vwwv\..S`AV!!!!676!9Tö6de7'#V[A-V`%!#!#6767!g+ A&2HhE)pVB"wd+f%!#32767!!!!!6N9f./X\fScSfwv..'`V+V!!!!!!!!9{{#o8n#Vy9:V`%!#!!!!!!g+\\fScSfV'`Vl!"'&7!3!!!!BQN-L  !.ln>w#Vwsoe@7#9+d`%7!"'&7!;!!! 1D@"9f $Rf7b[V(TKh0++Va!!!# !!!9##VN/:V`%!#!# !!!g+|l|iV{\`0?O{|'K6#-'{k' Du#1'j`#{+\k' uJF'IQH{Ik' u_H1'j`Ik' du1'jJXk' uQ1&jr*yH`T+O'q;:C'q+k' u:C1'jJk' uJ51'jQ{|H7{7Q{k' uoH71'jpk' u#u1&j5O'qp;F'qk' puF1'jk' puFf'Lk' lu1'jJ !!!!!w>"%8\#AZ` %!!!!!gb7Q+`+ k' 8u?1'jK 3#"%676!3!! '&54Hz>C$-5/o\s-0[;$-ju9+uM7"` %37#"%676;!!"'&540P-. "x$SfoL !;( zOXX;r'G$4"'&547676!3!3267!! '&'#"32767}P/o-kl$ff>ف#mvuVz>C$/sjPLsIDTju9S=L,P ʛ+7==-0[<".TQ!`6#"32767"'&'#"'&547676;!32767!P-. "EC00pUUQqL> $SRyQP5F5RA( !;( 89k'u )a/.XGr/7OX&#?6==Pm̎w?654'&+732767654'&#">3 32767!! '&5409J0PP/<~]f7xl#~aUU<( );agQL$ff>iH)5-.]<%/*) `K&+TS"'`@X,2 2&8PL ʛj#{A32767!#"'&547654'&+732767654'&#"7676322*IR5F5RA(Z27v,|u8? *0_;B/_][WfODDq|+&p+!=Pm̎wzTk /!%",##  H7h"a@??88V0)654'&+732767654'&#">3 !!\U9J0PP/<~]f7xl#~aUU<( H)5-.]<%/*) `K&+TS"'`@X,23V{1)654'&+732767654'&#"767632!!B27v,|u8? *0_;B/_][WfODDqt1"g~R /!%",##  H7h"a@?H2E"ay {$!676!32767!! '&547Y6dd7'-kgQL$ff>فW[7-S=L,PPL ʛiUg`$32767! '&547#6767,yPR5F5RA((f_ Z ?&2HgF)`'#?4==Pm̎wwl.1B"wf. :`!32767!#"'&54?!!!!CyNR5F5HA(f_ \fScS`'#?4==Pm̎wwl.1%'`VJ9*H_$a 32767!! '&547!!u-klLL$ff>فWu9`9S=L,PPQ iUg\#E`32767!#"'&547!7!ANNR5F5HA(f^ Zi++n($@1==Pm̎wwk.2@8R7({>` )'!!!3"fq7:`J\`#!7!!!!!!!Y+S(z}++(+20,V`H4{,3>%#"&'# 7!6&#"6$32>32!#3267%3267%2676&#"7}a8\z3F q5~5z¼!&ws^E_`g%Bp LQeMOMO> f~~CD01kdkdŨŸUO..f}unLJDMm)Z` %26+3#26+2)#730q&q~'~w'>^Q>(3%&:jL{F_a32676&#%'%# JpvH@&s^k{k"%WK}LW$&^a'%#73326&+3JD01k\+? 3,u|,vEJ :9tMYcN1`__\!?@aGH  #$*,"%'<:('$pL`!!!!Cf9f`L$a.`!#"&'3267hs5K@1/a3ey` !"!?o`76` !7!!'7j>Q78LoQ`iC:E`:C`J5{RD{n 6&  6%  \B889w(.v~~vv||vD""F@S%!>76& !&67 @L%;z*;@@JPT@TV0VXs +>76&#"3267>3 '# >7'7 "* )B$- +Dm[{8O:zz]~9P<~tK/w}HO0u|CDjKmFEE!lMpHn{&07!6&#"6$32>3 !"&'# %326726&#"WE q5 ~7b" l}ކAcև_`h%3w>[wu>Z+f~~CD01QWTTRVWQ:f}unѫB /{ 4&#"!! f|uw}G"!E/8/ 3265!! |uw}u/8h` !2+!32>&#B"#{J9[McEM`ML`T` "";7!!"'&76767&'&'!3$[-.!"[O4+Pf`_GFz<)) ik[%'K IH JKoHG!0/a>GE``!3267!! &7f@^^gh//``vddv`{%!323267>76&#!!#^TFp[.y'4 F`FS9&hF.pfPl|!7373!323267>76&#!!#--.. TFp[.y'4 F`FS:%|hH.pfRn{#3!!#!!3#%!2$76'&'67676'&+HF F+ w%F(<=vF=&%5A1I h4@3##p]88(;YtgU&m`Yj`Z`]`%2676&+7%!!!"&'~}021W4O)% |q8r,)*+SLi--:;`3!!Q9``N`!!!!/`}h`(o`!!6767!!7&'&7fQ6 ufuIPgQ/|//\/`au2 X 2uavRRv@`6767!!#M2HgF)p ?"wfB !#!#!}Y!?4D3M]3'!!!!!!7!#fBd}&d&ȂQV% '27676'&+27676'&+#!!2:"" :#GI+*  J+J !hgmmMN P,+76,66Oy<;D54t=V% 327676&#%!2#!dW[[>7$0.MX=AB}|6A9]_JJ9A6%V !!!!!!d}&cࣜ%d !7!7!7!7!7dc&}d6%#"'&767632&'&#"3276?#7!ceehss''^SSF!HIJN]\>=&"! z'uttt(HHHH % 3!3#!#>f>EE?b%3#P 3+732767np1 %L.. MN&%I%1 3! !#;@1tHI%3!!c_% !!## #5/4wϚwAd=% !3! #oo==% #!3o;o=D=5 "32676&'2#"&7676Zo^op^Rjj'(('Sstssts' >"2676'7#"'&76767&'&76767&327676'&i=> 10x /&X_=>lo00{|ddDFwf(+ vQF&:/$jTC8 .-!!>=!!B=?!a27kG/064Q|@??@|Q4604,=8'W !'!C<% !2+#327>'&#RSܴ8w.G,-! GGGp%z 27676'&+#!2!'.#L&& Lf*=sLLn`0 !VJ>;m9:וD78xSj $#I>.8!!#!Wcȃ_]3327673 '&7bWV0.bb"uufST" h,--,h VWWVw 333!!w,,/``|LJ 4"3276?#7#"'&546;765654'&#"7>32T+,-F./N7>>He:;Ņ('NFAB="GOLM."%&CL]8..Ow% 0/b.XX +2676'&#"367632+3267#"&GP 3@44N9?>Qn88a` &%YI;!LI**&)(=Lf]998[n430b73#7#"&63227676&";>=J@ЂI3201801\[8"3//ZZ^//ZZca5=J#"'&'#"'&?!6'&#"76763267632+3267%32767%2676'&#"N>^@?#:MQP! *)YGNOW"UTSOq!MLMWz<;a` &%YI;d <32#"'& W778U78<I3rCwFE-9IHRI23HGr4GFn932W767U87<&I498Dw.9SHfGHr4GFn9<P[7tHED8GH4do%2!32767#"'&5476767632'67654'&#"a*)RGPOW#SQRTZZ6A[ZnTT3B/. =& DC|HCD8C#"CDs2>, ?cl!7!6'&#"767632#"'&73267m *)YGNOW"USSPWW"!|{QP <32&'&#";#"32767#"'&7676A 7686#34%<'( JNJR+/%$I18>1<<<:KK10$#7TP 0~"  01a?((K2#"'&'7327>'&+7327676'&#"767632A 7686#34%<'( JNJR+/%$I18>1<<<:KK10#$7TP 0~"  01a?((M%4#"'&547676763273#"&'732767"327654'&N6pBxEF.7HHRK23#w$Az;!6568p<<5Sn9R8764EDw?@?8D$#8]ߨ+*]d9BBc;3##73#( 3%! ! #g0 f*<(*367632#7654'&#"#67654'&#"#367632+4CBH^76TG"A--DH #>^D5<<@Jh:..QGF/0WG* bTs\6BBe&+73276767654'.#"#3>32[Ri@= (G33D?~Fz1}KR 10Us\74B+C&d}#"327654'&'2#"&54767676W99>:X89(87@WXl6?XWGFm<>GGn:{G7B"!{FDC8A"!-67632#"'&'7327>'&#":878XYD~7541##,-5^@?&*)_2114 WWWW 1111 4&#"#4632NJK'(ηgfZ`00ZWW327653#"'&5'(IK('ηfgZ0000ZWWj&#3>32#"'&"327654&H3rCwFE-9IHRI23W778U78<b\74CCtHED8F%$HGr4GFn9<3#;#"'&54767#737,& :-u f65:op(  &&H Vw3327673#7#"&5476`RG)F32D:F`j  #00V4\66ZSp!7323326767676'&#!7!#R,F9WVVL./`+,f4 WX ?$$.23=m99U"+#"'&7332673327673#7#"&!8ABFz11SG2@ZCG 4A-.D6;33#[ aJU6676'&#"327676'&'766767632#"'21 9E""/IP&'A#ojfUJI01};( +5AZ1M]]F@1#/! /0YY/0&'P0PBH1e4.9/HqdJIkO3#7&'&+7327e..h *f+X&S1 *0 -&#"#"'&76767&76!2327676&'&Fk L]yxWWx'+T#LSk% 3!GH24J=`'74?KXWWXuZ,Y' 1XW2122TTTa!2#7$67637676'&_KW 6//6xcj%$M*5#*^ HS$$WH/0F9v6K''t73;#"&/#'&'&+732٬8 "Fisha9 FS669H-Ti.'(mgYd0udVwsdsdUwdOsd0pdaydtsdFcy(>32#"&'!32.#"2676&#"3]u11u7 5]7S[ VoYsp\b\\c !65%?`%!737#737#7!#3#r..'&1..1&'F!!+7327675!fg2(ͱ.>f//wv..t0k#367632#"'&"27>%z9=>IAB8feI34/0"/1"\s[8\\\\//////e&'&#"3267#"'&7632 (+-1_=?"V_5d. 9797Z[<}|845 11b WW6WW kM.;276#"&'&#"63+"#"''67&'&7632!"]R49),,1_| Sj , ~ A*[<}|845 * bXE-c@0&)W6XV Ou0&'&#"327676567#"&767632''7'37w" J0/ @HI01;xwmn` `:<%%DS^00ZLHHSWWKJzBH6qA@H631#"'&'7327676'&+7327676&#"767632 J `^:896*831I-/'#QJNJ"(><%n);;97 )*((?a10  "~(PT7#$v#"3###7376763}0 ^^pp IK&,,f11M33#+732767#73Y^ppMQp'@v?CBu)#"'&7>;#"&'73267"3276?o9zJCĆnz|Bx;7569ox?F`IF/0"64Z[~̗PPV\\TV-,.-To3327673##"'&wK - *F31?>Ez32~>R>01V4P7BCHD3#33##7#73I 500QmmZ 3?'&7H<W~:8LDC~0 !73#7!#1F~F l07!!73#7!#`F~Fmmql$3#33"+1"+5&7637&#"3276" jj#IDQG ! „W(B :AQvX7Cw*!) 3;#"'&7Ai78KCCr033+732671#PQo'@: (sBC4A0g3!![4 0G 067632+7327676&#"#6&#"#367632;7A@Fz42FSQi@ G 2@Xn0,#"'&7332673327673##"&<7AAFz23J? 1@X9'#?676'&'&#"+7326?3>320J , G12"NQi?<`=|Fz32>R 01U{ u@C4K{\74BCG"6'&'&#"#367632;#"'&7t A7132D@@G%nZN3327673 &7I ;< IIa_BBxBBZ0#'&73?27676'&'7,qrW~:8HH J?: -!J=XXXDC~q_71P<@/(f0S##3S\Os0! !!!7!gJsXH!!;#"'&7!7!gJt  Ri76kF C@uX8M=!3676#'7!7!276#"gKe ciQ}\R<mONX- ;!%!7!#"&'7327676'&+ge4K*'wxHC ?@@Aa89 .0gv؏ ?:P|A@79\ !327676'&#"2#"&767 DB6/.DA7,ח?@Rnm~RmmG?DD<8ivw^wwwv{'N$#{'D+k"%:?j2"E+M"%?Mj"E.+"%?j"E&Jok"Cv@,Lof"v+Jq"'8@J1"G+MJ#'JM#G+J"'&J"G+rJ"'zEo"Gz J'H 'I'pG+\u' (J0' H+\u' (J3' H+\"(J{"He+;\"(J;{"H'+o\o"(c@9zJoD"H#z+\k"):fRk"I:J91"*)Fu"J+q"+@?;1"K+M#k+?M;#K+k"+j:?;k"KjF:o"+zVn;"Kzz+"+?;"Kh#<",o~;"LC33@+u& ,?:' m+k".Cv@,?j"NCv@,+M".E?M"N+".A?"N+M#/M#_O+MQcq2@@nXMO#q;Y+"/"OB33@+~' /'7 O+j"0Cv@,?g"Pv+k"0:?1&P|+M#0?M{#/P+`' j1?;'Q+M"1k?M;{#Q+"14?;{"Q+' 1?;{' QJu' 2J5U' RJ}' $2J53' RJu' 2J50' RJu' 2J53' R+k"3CvT@,Vjg"Sv+k"3:Vj1&S:+{k"54:?\2"Uz+M{#5M\{#_U+M{Qcq2@@n|M\"qU}+{"5,s\{"URk"6C:{1&VMR"6M{{#bV"6#TYCv@,u"V"!Wv%m' P6' VMRk"9:M{2"bk"7:XY"W(bM#7XM#Wb"7X"WC33@>'f 7'/ WMT"8{Ms`"XH;T"8U{<s`"XT"8;s`"XFTu' \8{sU' XTY' h8{s' XG"9C8L@33m9"YM&9Mm`&Y %r&: h|jm'CZ %r&: h|jm'vZ %`'j/:j'jZ %k"::j2"ZM %":WMj`"Zk";<:^2"[k";jM:^2"[jyk"<:F2"\k"=CI@,g"]M"=M`"]"=`"]?;"KXk"Wj:j"ZF"\#"D}fRk"A:{M"$)#M{"D{4"$u#"D9{u' 4$#\' D{u' 4$#' D{' ;$#3M' D{' 4$# ' D{Mk"#Mf"{u' B$#+' D{u' B$#' D{' P$#' D{' ;$# 3' D{M|"#M-"+M\'(JM{'H+\4"(uJ"H+\I"(CN@33J9"H+pu' (J' H+.u' P(J' H+i' (JeM' H+\' (J/' H+M\k'JMf'+Z4",Fu?," M'X,M'_LJM'V2JM5{'RJ4"2uJ5"RaJu' t2J' RJu' 2J' RJ#' 2JoM' RJ' 2J>' RJMk'VJM5f'Pxk"bCv @,Q*f"cvPxj"bCC@,Q*c"cCPx4"buQ*"cPxG"bCdL@33Q*9"c6PMx'VbQM*'cMT'8{Ms`'XT4"8u{s"X*k"qCv/@,u]d"rv*k"qCC@,u]g"rC*4"quu]"r^*H"qCbM@33u]9"rM*'quM]'ryr&< |Fm'C\My"<F`"\[y4"<uF"\4yH"<CM@33F9"\}NG&:NG&:}Nf&:Nf&:Nf&:Nf&:Nm&:Nm&:~{G&{G&<f'#տf'(;f'Jւ f'm&~d)5m'c7(G&>]7(G&>>7`f&><7Sf&>#7f&>n7f&>7?:G'@G'<f'Uտf'N;f'ւPf'fVaG&@fVaG&@fVaf&@fVaf&@fVaf&@fVxf&@fVam&@fVam&@?eG'!qG'!< f'!Oտ f'!N; Ef'!ւ {f'!Cm'!dUm'!cWG&BQWG&B[f&BՃhf&B8W?f&BֿW/f&BWm&BXWm&BR?G'#G'#< f'#=տf'#N;f'#ւf'#m'#dm'#cJ5G&HJ5G&HJ5f&HJ5f&HJWf&HJqf&H?G&)U-G')< {f')տ f');"f')ւ^f')o(G&No(G&No(f&No(f&Nojf&Novf&No(m&No(m&NG'. 'f'. Ef'. m'.cDG'tRDG'oRDf'jRDf'`RDf'RDf'RDm'RDm'}RG'2x\G'2< f&տ2+ f&26;Lf&ւ2f&2 m'd2lLm'c2Nf&:Nf57(f&>F7f6fVaf&@fVaf7Wf&BlW|f8J5f&HJ5fUo(f&No(fVDf'yRDfWNVG& pNVG& pNVf& pNVf& pNVf& pNVf& pNVm& pNVm& p{VG& {VG&!V f&?;V Ef&@V {f&ALVCm&BVUm&C&DVG' olDVG' omDVf' onDVf' ooDVf' opDVf' oqDVm' orDVm' osVG'tV\G'Du32#"&'.'535II245633JI326J235624IJ336633'AF'AoH^!!hK}^!!!!%hKhK}}^ y@=    :T     999991/<<220KSXY"!!!!!!%hKhKBhL}}}oAe!!/1eq 5 #/3?Kb@7 eFe:a@e2e$a0*`42dL1C=3'!    - ! 'I 7 'C =L9912<<22202#"&54"32654&!"32654&'2#"&54#3!2#"&54"32654& ۜם Vn=>Wm>$Vo=>Wn? ֝ k֝ Vn==Wn?魍WWUWWWUWꭍ ꪍXYTX q #/;GKWc2#"&54"32654&%2#"&54"32654&!"32654&'2#"&54#3!2#"&54"32654& }ם Vn=>Wm>@ם Vn=>Wm>$Vo=>Wn? ֝ k֝ Vn==Wn?魍WWUW魍WWUWWWUWꭍ ꪍXYTX`!`u`#+w+`#+"++wJ`#!Ţ`uJ`A'.|.J`'.'.|.<#%##}'@9190 71+Z%'qN'@ 91990?-7N1X+#3   ' 7 !!!!!!!!1NNNN hhhhNPPNt}}e}} 'nq!7>32!3# ds=]%lpKP8 ,EhE1"B:*(ǿbY9>K-dM B0_  $'5 $CJ?ơSPPSEFE&j &$ 56$ :F;&FEFESPPS_#3 #ۊ@ v#")# {# { mC|@`k#3h  !!!!!}-bl-}T"^ !7!!7!!7}+m+}^H&""&"d'n" %3!#7!!7!3#<D+!d׎cZKu;S!333>7654'&ƾ㼝8$:hfN_PeNfS3+"&'.467>3،I326535IS1633235fS#;2+r،I535623I532336)k {s` !3!!9Iit}j&98+ k333 k33Bb##PRa2v9 # #'%!7!'73%!!;;q'1;;q1'Ю1؎؎1َ׎) !! !@^@@^@A^AOJpJ J`t#+"+#+w+e}+5 !!!!!:,::,:h;,;:,:T,,*,,%B !! !! !:,:>;,;}:,::,::,:T,>,,,p,?!!!!ehKhK}1}>0 !!!!!!!!iJiJiJiKtXZ %! !! !#!7!3!;,;}:,::,::,:Szz.rzzr.,,,p,\rs?w !!!!!!hKhKzhK}}}}}?w !!!!!!!!h6h5h6h6a-> 6&"3276%#"'&767632B'.,LK., )wyKM))wyMM@@@AAAAoppqpqqp3#3# zQ 333##7!7Sey!$$!!>32#"'&'7327676'&#"Lq8ONtuNIIG!C@?9-"327676'&&'&#">32#"&767632>&&>?&&35111jEF.c8po()?::9$%IJ$%%$JI%$ 56i{PQuv iY!#!Fy6#8 ,:"32676&'&'&767632#"'&7>732>'&#"C** CAS 9O!!b`MK37V[#&gfOOs 97F79#$!!>=!!B=>BF00Gi8777jL+/45P|@??@|Pj26d0*)732767#"'&7>32#"'&27>&#"04c2iEF/237FHߢ((A:9>>&&0>?L56iJK|vv $%JJ%$k !!#!5!hHIkۅ%%F!!'FA!!!!''ń{YA#&'&67673zF0FF{jAA0}|}~67>'&'3kAB07E/FG|~}|}/S#?676'.#"#367632KJ , *H23?@F|44>R01Us\7BC->TXd)C{d\sTtdRjTudCZd$C[d>9T\diYC]d#8T^d0*T_d`d%ad)bdYiAfcdifddLJddodd}djsdcld_Z%!!!!!!# !2.#"3267N +)+32*QX]44^G-FV"!V[`**9  9*)73Ʈ36J9*09&'#7&47676?373&'2767#"'#&+;4>ojgz$&22 2M:45N\ii=jB8K ",47=SE LQ j +f%$N12>*E & J/6767# 476$32.#"!>32.#",/i=jjhzWmq:YgZ"- ;m(4 K+t $N12J=78IDbǭ`e!!!!3#!#79s6g:$w%v33%ݹ#!!37#737#7376!2.#"!!!$34$--5\T7;G}FBa-d-¸ Wz|%(=;zW=B/#6'&#"!!676323632!?6'&#"!Y6$Rhkh V^]htNLz41,rNeJ8k75``/085cs VH)v75TR#7#737#73!3!3#3#!#!3',a 4&,&Uh=nssq5i]js@^Aٮsx,-Ӣ\_zQV& .(D) 64$( (91iOUMkc> %2473$ . @!- <F2676&+!.+!! 32676&/.76$32.#"!"'&y{XyK!fn!a^mn"L')Ld'#[ektiv @j> "cz5j_fm B_= !#or'?ZgfXspR֔-v/:90/  0035+. #/ %"&)-1'#73'!!7!!7!3#3#!#!#7!73'!!7{X q bs bnbXz3D&D%3G~3@3vvVVBvvBvvvv !  #6&+!% 3;! HMM+AIMM*?=Y*5=YJ"/+~@B($+(ss" d`,$%#,%#+ "% #% ,9999999991<222990%#"'#73>7#73632.#"!!!!3267|f%X Vbil7RfpDV Xz\hF12 F/78QL|u"H+w}WQ!!!!!!#7zJjGa|btrn`u!8LȘb!'?'7!!!77YoDo o^8`83n!n<^:MS:MS#9MR9ML7 .i'6767632#"'&'32767654'&#"67'6767632#"'&'&/#"'&54767632 327676767654&'&&#"32c.ENIZVkJ:H  CSXZk>.": +S@G =DK$ '%NFB͕HB73Z2vGOPeK>,//16bB7XOJ."#F$/0`PTH34* &[l$#7+Уc]97#96O3AHJB @@=kb3JMq~Es/4 %UA4G_KBjoD7=AiK}f^<={@ G1@'32327&54767632#72767654'#"'&#"6764'&#"ڤw=b, "akO- ,s,,zV>+|>1,2M$)$ Dl26X``7a0<㫂&'lm@.j?3thP#l$:990C#i+ ,3!3276%!6=7#73!23#3#+!#7%!&'&+{{B  T TADxl YKJ P(JQߩ[Qw 0Xy\@ Z'/ZZHrkbH.,H jOUMyH+N[ux&1#7!#7&'&54776?3&'&'6767}(hijwbFcZn]0]Pho%+VIjR354^TKF#dtiϥ"7?& 6#PaQYU"xz7!!!#3#!!!#737!!/3')& A{Y &&Q55.R&P[PL|_UÕeeÕÊ 46767!7#676&!">32!!#3!2$7#"&767!7oZ*%+{=hv%f@1&&0{{-)?|~v &.L# %%78LP'5)8xy65ELMTN )%#&'&%6?3&'&'6767jm;;65͗KGE$%95bTFIHcc >610%R7r~or 7N'(OQ"z! 3!#!7!'3:\=z!#'73!BF\ל͌0z7!'3#70\ל͌ +/L"326?%!7#"&54$;7>54&#">32!!.#"3267#"&5467>32]V/*HbXa ]LUPs3e`04Ua-wZS:re5RGQLVސB43&(XUvA Mq ')!7>P4J9"QT#EiPYVR'%# '&%$!2&'&#"3276uxy}EEu}mn_^lhsv::7ef7@"!?k?!Hկ '&r#$/%/ܸܸ$ и /A&6FVfv ]A] и ии /+015!&'67!!&'&76TT.--.0+-.҃tXWe>W ! xw4 ,>.#"3267#"&5467>32!!"32654&'2#"&5467>4Ua-wZS:re5RGQLVސB0vZ|<9Z}=#FCPۆGBO9"QT#EiPYV5IFID˫cL]]ɬaM\^4 [ :.#"3267#"&5467>32!!!3267!!7#"&5464Ua-wZS:re5RGQLVސB0e@Y '%GmU? [~9"QT#EiPYV5Z4+:)'uoC Kv<"r)83!3%!!!!!!cyynn]xn+/?;K:5'67654'&'&#"!#737!!!67632! .pQQk'fB'7dddnN17 $#WVrrb./wLwDSVjF2632327#"&#"7632327654'&547%#"'&#"^v{x}}ȋo֏z,\l/v~jX>6FF PP5ʶ05^:11::b:~"FLxUBnb_Xċykb[OP6%273#"'#67&5477632654#7!"!!7267  &5476%"327654&!!MX',+W, R'+W, :*n !n !G:S :w* ~'Ȏ>;VȎ>;ףa09ģb09,og4PT3'(T2&8"32>54&'&#3264&'2'#  $&546yЮWWWVy{ήWWWX##NOM+ՙ0llll3WzyWVVUyzWX5h2wyxyD7nnnn;C0<67632#"'67327654'&#"#"'&57&547327654It2݂FIxaP&dmU>"9yEY:?.m((6UE?LPީ>+<$~\oA7n=B Ũhb)<(,QB8 !67676'&%33!27&#!! !o>$_ @xyBx.{n"kl)*ALM!0jmnmmj#,# '&76! ! 7& 676'&GGgkG1q@r ;;!;;lk\4334Ь01SlJY&54'&#"#"'&5327654'&#"3"'&547632763227767654'&#"HL^eZZfgr82ED2881VN2884@Bfggf\n/$~AB}:1$ $3CAA9Ya+.vuuvjVMMWWMMV[^SMpuvuuk# XW1W{|^1$h{r^Co(BP>;[Yj )l'03&' +!! !&3&#!!2767654'&'8Nf`Zxn|@|>4JΞ"&*&:(^^&<w/8؍$~hHf%TX$l Ǹ!/"/!и/ ܸи"ܸA]A)9IYiy ]9 ///+ +и/ 9и/ 90132654&#+!!237! !'!bllbIv5 (mkU$yz$_mddl=`o('4.#"#"&'532654&/.54632733###UW'AG/E8pi4sG[d/EK7?8pc|3iиY"*/( VAO[`*,2,* M=H\T(lQ `!!!!!!!!!!!!!$C%Q$&k,$C+߰/ͯ`z'R v@>  :   S ;: : ;:91<<2<<9990KSXY"73#######5ww㪉LqKBM 3%!!!7!"=]x'x~2D!!#"&767!!! 6,#29mQ '' 92# <.89< DVˤ U#yy9+.{m}Y-)% 7673 $54$32!"53!25&'&#"C]JjMo_zggJF__DM3TT<`xGZAEIpP3RQ4O+\ )!!!!996:f{##y;}\ 4&#"322#"&54ID`IFa~ﳶr|tx g6 4'#!5654/&54?'&5477'&5474/c2-i>Bd=VE/b5c2Bc2c2Cc1NS2j?Bdjl,>8?]/c6gUc1NS2Bc1MS2c1MS2 `  !!!!!!!#!!!!!! g^wb-# ; +(+3\:,#FY%q` 73&7#3#32767#"'&'&767#!#"#6763!n&*U  '597Ic84&g^7V5+x&ZYfQLW,3$p G x &#T+Ka~=2{NNV-}36$3 3!#"wEZ< Ԏivw+u~;c;+ 3 !!"C\]x+3!3%!!!gHn n"]x+]dw* ! ! !!7 7:Lb-LbExwcS*J +! )327&#!3676654'&LTbU !LM}j';c10tf:@S^et10]6z5x 3ZNqF #'2%267654'&#"!!7#"'&5477632#3%-)C%u^ ^ueC2tPQȦ;0r,)[ZJoIx\aXc\mLV/.~ X2xZJoI2C{ 1!654'&#"32767# '&547! ! * NI~HefUr|sЊd5"Z }?8X<[s6z0oDO:qDM9 3%!!!!LƫJWf9pxF 732767!#76767#!!>f/.&,Dm %Of9Fs..wvuAk,<<7z&0 !67!>3 #"&'32676&>76&#"CY2wMv+  [e6TON`  KYwC|:FnkBmFDےj5j:0.;6"W-/wGs))rA'x&{ud\A'ud'xtr'x&{[d\'x&t[dR'x'[du'x'[dZr'x&{\d'x'\d[r'x&{^dR'x&u^d'x&[^di'x&]^dr%'x{+,+',K,+e',',K,+ Q'9,9',9 ',',9 6', g', g',',',9+ K';,;&;, ',G',;+/J&+J'+0?L?&LL?'L<'LL?'YyLm`Y'LY &Y'LL &Y'L'LL 0?&L[^`[&[L &['L L?OL{FJG?{PX !*3 ) '&'&'&76767676!32$76&+#"3TbU!!LM}UbU!!LL~T'++Ͳ++10tfet1001teft01Nq*L /32$76&+'67676'&'! )'++k:M0*M=GWBOdAJ2-cT:aU3!!}jzWV:2ST2:4:on:3 ateetaX  BZc32+76767>76&'&'&' 76767676'&'&'&) !#"&76$;&'&7676A++kBWG=M*0M:kc-2JAdPP}ML!!UbU~LL!!UbPM++&m@WF>M+/O:itXa.2HAW:2TS2:3:no:401teft0110tfet10#V:2ST2:R>4:on:3fHD{d?Q   2@ @@ 00 ]1@  o 990@  o <<@ o<<KSX <<o oY5!!dyƑ<Ƒ* @  o 991  2@ OO ?? ]0@  o <<@ o<<KSX <<o oY3'#'ƑwxƑuPQ   2@ OO __ ]1@ o 990@  o <<@ o<<KSX <<o oY'7!5!'7PwyƑȌwƑ* @ o 991  2@ @@ PP ]0@  o <<@ o<<KSX <<o oY#737wƑxƑdPQڶ 22@ PP_ _O O]1@   o 9220@   o<<@ o<<@ o <<@ o<<KSX <<<<oo o oY5!'7'7!dDƑwƑ<ƑwwƑ*@   o 9221 22@__P POO@ @]0@   o<<@ o<<@ o <<@ o<<KSX <<<<oo o oY3'7#7'ƑwwƒvƑw;Ɛ3 7!!#c,4c̪43 #'!5_c̪43c̪43 %!5!73c̪4c43 %'3!zc4c,4d?Q5!!!'7!dyYyrƑ<JxxƑuPQ'7!'7!5!!'7PwyyƑȌwxJxƑs/&'."#"'&/#7!!267676767632 NZN !D:[P_cLW>bc,a NZN $A?VMbdKX=AW\)""!&OG='""'=`,c_""!&V@>&""(WLc_P[:D! NZN WUA<(""&>@V&!""_c`='""'=GO&!"")d?Q53!!#dƾWYƑƑ<WƑWƑ!3''#'5' WƑWƑwƾXƑWƑuPQ'7#'7!5!'73'7PwƾYƑWƑȌwƑƑ+#757377wƑƑƾWXƑƑdXQ5! !dW>HƑ<W‘WƑ\PQ'7!' 7!'7PwH>‘WƑȌw>>Ƒd?Q !5!3#OiƑw Ƒ6* %'3'!!5Ƒ6ƑwhuPQ !'7'7!#3eƑwiƑww\* 7#7!5!Ƒww\hƑw*%7'3'7!!5wƑƑwhDƑwƑwd?(5!276767654'&'&'4#ƑwJ    E4;,-0+,;5D Ƒ  +,x>@9>*+uP(!"'&'&'&54676763"3!'7'D5;,+0-,;4E    JƑw +*>9@>x,+  Ƒwwd?;3276767654'&'&'&"#5!5!54676762#M     Ƒw 0-,;45;,+0-,;4E   ƑM>x,++*>9A=x,+uP;54'&'&'&"3#"'&'.547676762!'7'7!#     MME4;,-0+,;54;,-0 ƑwM   +,x=A9>*++,x>MƑwwdPQM2676767676322676767'7'7"'&'&'&'&'&"#"'&'5#$   "%'-0$+  ' בw 'Z&(%   "(&-0$ w $ -#% $, ' בww"*&  *&"dPS%'!5!!'7'7!r?ƑwAI?Ƒw2'ƑY2Ƒww 7'7v9j#Pu]W)9Z, !#!5!,rƑw~Ƒ[ !!'7'7!~ƑwrƑww<Z, !5!,ƑwLƑ[ 3!'7'7!Ƒw<Ƒww- !7#7!ƑwwVƑwdb 5!3Ƒw Ƒ z%#4'&'&'&"7#74767676 >Ƒww12^YzoozY^21VJG@9!!9@GJVƑwƆvx]Y6006Y]xv.z%4767676 7#74'&'&'&".12^YzoozY^21Ƒww>vx]Y6006Y]xvƑwVJG@9!!9@GJVM 7!!#7!3c,4B[cc̪4'wwd#P '73#'7!5#3! Ƒwi3ƑwjƑwhhw0Ƒ\]"4276767654'&'#7!! '&'&'&54767< <>7ODHL:< >c,a/11/a_trrt_a/11/a;LJVS=7# :;LJSVJL;,cepvvpeZ5005Zepvvpe]47 '&'&'&54767!5!#2767>54'&a/11/a_trrt_a/11/a,c> <:LHDO7>< epvvpeZ5005Zepvvpec;LJVSJL;: #7=SVJLd ?Q5!d d?!!dyƑwƑ*3'#wx#'Ƒ$Ƒu PQ!5!'7P%Ƒ ƑwuP'7!5Pwyw*!37ƑwxƑw!#73ӾwdP}',`V',dP}',d?}'5!!!!5JyyƑwƑ_U73'#'#'3ZƑwxxƑuP}'7!5!'7!5!'7jwyyƑwƑw_U%#73737#ZwƑwxxƑwdP'$BdP' B#d?Q%'7#5!7!!!!!!~@SwS r@?dVKKWoSSWo6KKdPQ!7'!#5#53533'7'7#'5!)KKSwSخSwSخKK7KKSSSwwSKKuPQ3'7'7!'7!5!7!5!!7'!6@SwSr@VOOKK3WoSwwSWoKKd?Q!!5!!SwSLK7SSK)#'3'#'RTKLRvRKuPQ7'!5!'7'7!5)KKLSwS7KKSwwS)737#73KKTxvR!KKRvRdPQ7'!!5!'7')KKbKKSwS^Sw7KKKKSSSww)7''3'7#7KKKKSSSwwKKKK^SwSSw  #7!##Sqc,vqjqu+cqS '#5!#5'5yrt*dpRpdvpTj! 753!5373pdvpTjYRrtdp! %3!'3FRrtdpRpd,vpjd?Q!!!5!!!?Qv9iwiv2viivuPQ!'!5!7'!5!7!uviwi9vQviwwivZ5Q''#5!773›Ƒwcc ƑccuPQ#5377!'7'7#'sccƑw ccƑwwƛ*!#!5!5!5!'3'!!!!Ƒ,҂6Ƒw҂*3!!!!7#7!5!5!5!Ƒww҂Ƒw6҂d?Q5!35!%5!!%5Ƒ 2Ƒ*3#3#3'#'2Ƒw6ƑuPQ#5##5'7!5!'7w5Ƒ2wƑ*#535#3#7372wƑ-$6Ƒd?Q #3!Ƒw Ƒ\uPQ '73#'7!5 ƑwiƑwhhw7^? 5!5! !!$T_i$$6~ '33 !!,_i$$p$H^P 7'!! !!$_%6~ 7##% !!_%e$6~!!!'33 !!YK_i$$zzbJ$J6~ #!5#3'3!3! !v_r$$pllx|`$6~ #!5#7'3!3! !v_r$$ll|`$6~ 3!3! !%#!%!5#3mr$$M2|`$܌lzlx6~'33%! !!!!'37!,_$$$^ttL@$@tt6~ %3'3#!5'3!3!! !!'37__vc̪4<\wrc4bw^+6~ 3'3#?! !! !___-%%$$e Ҍ$$uPQ)5A '7#"'&'&'&'#53676767623'7$"!&'&'!27676Pw?>KJJK>?|{ ?>KJJK>? Ƒf\(( ~ (g  ((\(( 54&#"#"&54632#"&54324&#"32;'#S0@eID`IFa~q9WzC2EqG Ur|tx !!!!!gr+#V##4!!#7#3#!!!73!#3#)5Wk=j [n+^^##V#`#V`z$273#"'&'#7&'&$32 &#" 32$767&'&IoFcξ<hE(ixuЋPRRh!&) QSS9YZX|g IHveyKvGd@/91/90 !!!#-3mV? !!GskV??%&76763!!"!!3!!"efſ{wC""Bw}_cdZdAAx>@?=wBC3"*c/+ + +ܸ иии!и#и*и*/01%&'&54$3!73!!!!!!##!!a[g"uu C"5N"BwCH3cdh[[[>x>@?=wB%v'% '&76)! !!)P])7KyK1&vo{ o%2lc<'%#!5!276767!5!&'&'&#!5!2}wB""Cw{Ųfe_cCBw=?@>xAAdZx3"*k/ + +++  иии!и#и*и*/01#!#7!5!!5!!5!733>767!7!&'&'&'ba\pu4uW\C"N"BwCH3c[[xx[x>@?=wB%v' )5! 765!5!4'&)5P) 7KyK1)o{o%2ld<'Ol //013!lw@??120!!!!)u!!!!uJ))w 0@    91990!! !!5 Bl_{N on10!! !!5!#!!!5!  bbd-W+ии и /++ и 013#!!#!5!QAd10#3 R>. //013`em%73% %#'mvzzvzvvKJ36r910!!h}LZ h@;      :    9190KSXY"3##'%`w͑%hN7LZ(3#"&'532654&+532654&#"5>32%3##'%\fQDB<_hkrJTbZNP4{FAWZ`w͑%hZnQ$%@;@=/3--piE`FN7IZ 333##5!5%3##'%y:`w͑%hN7 %.#"326"&'#"&54632>3"3+tKZqfMGzEeDaƯZcG_"wC+v;CCdOMein~q~ezCD /B@#  $'!-!0 $<*<099991<999032654&#".#"326#"&54632>32#"&+vIZqgLHw+tKZqfMGzDaƯZcG_ů[1CDeOMeeCCdOMeia~q~n%!3!%!3!S5/ + ܸк 9и01 !!!#4'!&'7!&'&fX32jO\-*u N#Q(H?vq-..-xy)q//901 5'7%%' 6^w=<P Fp37; B<>b_kyPRPX/3#/)bX/ ;+и//9 901#'%3%:F ;EdeeXW/3#3#/))bX/{//и/ܸи ܸܸ и и// // 9 9 9 9013737##'I;J:\,Y{ *eLX+e5J!!! 5EG^5J!!!5fgw^5J76! !4'&#"!5o{ o.8ÄkTF54'&'&'m; }J " mDK6>>?J " mDK6?JKVXKK>? 'U5O9:["$S13(*# b11S$ N.Yeit%'&'776?!'&'7767'&'&'&54767676767676&!67676&67>54'&'&!' mDK6>>?J " mDK6?JKVXKK>? 'U5O9:[U5O9:[":;PLKJ} Tn$S13(*# `%/b11S$ /. Qy}%'&'7767'&'&'&54767676767676&!67676&!67676&'&'776?!'&'776?%!)!67>54'&'& mDK6>>?J " mDK6?JKVXKK>? 'U5O9:[U5O9:[U5O9:[":;PLKJ} ՜U5O9:[U5O9:[%Tb11S$ rn$S13(*# .?#4767676767676&7%7&'&'&''&'7767U%#B<\  mDK6&U5O9:[ %AAYw8'~2:)+U5O9:[01<.;CPY676?67676&7'&'7767&'.'&4767676776'&'&X', mDK6FT<;Om3F  U5O9:[ &?ǐ,@FF-'q9:80/n2/z-'|'||Cz-'|C'||y-'||z-'|'|'||  '|u]g !!!!!!Q&hh}} &u'|'|'||H'|'|R#"'&'&'&#"5>32326j`k^Xbian ^VRPE:=MSNE;=KR3276767632.#"#"&'gV^ naibX^k`jRUK=;ENSM=:EPi3267#"''&#"5>32T;Vgj`VnsuU32326!!j`k^Xbk`k^VePE: =LTPE: >K'##"'&/&#"5>32326!!j`k^Xbian^Ve#PE: =MSNE;=KF%6767#"'!!'7!5!7&'&5>32-]q{@iaBLjuƩZvQ]Seian-9@;OEi0(#VNE;gK##"'&/&#"5>32326!!!!j`k^Xbian^VePE: =MSNE;=KF/#"'&/&#"5>32326!5!7!5!7!!!!'j`k^Xbian^Vj`U>aPE: =MSNE;=K튄튄P3%#5!7!5!7/&#"5676326767!!!!'HrF9edXVVbiZYan)@Ă$TgjYVeHrʉK ='&SN#";Qk&UP#!l#;C@!.9* 1o o"o9*o1<-<<219999990#"'&'&'&#"5>32326#"'&'&'&#"5>32326j`k^Xbian ^Vgj`k ^Xbk`k^V#PE:=MSNE;=KPE:=LTPE:>K3&#"5>323267#"'3267#"''&#"5>32RXbian^[,#Vgj`;L3RVgj`m^^,$Xbk`;L.MSNE;E KUPE/KUPE=E# LTPEK7;#"'&/&#"5>32326#"'&/&#"5>32326!!j`k^Xbian^Vgj`k^Xbian^VeFPE: =MSNE;=KPE: =MSNE;=K7S#"'&/&#"5>32326#"'&/&#"5>32326#"'&/&#"5>32326j`k^Xbian^Vgj`k^Xbian^Vgj`k^Xbian^VPE: =MSNE;=KPE: =MSNE;=KPE: =MSNE;=KK#3276?632.#"#"&'!5!5gV^naibX^k`jUK=;ENSM= :EP@  %5 % $%5$[g&Y%Zh6@976767!!"'&'&'!5!!5!676762!!&'&'&[6/07VYYW6 0%AA%0M 6WYYV7 N0/%'H:f<0[2332[39a?H'N'H?a93[2332[0@.4:<20>>0;37' #"32654&'2#"&6!!!![HdcIHdeGBz0/11-0|D dbcGHd3/0xDCy-03$'  &!56!!!![y:'  3# !!!!ׅcKA' 33#!!!!ށKcA' !!%!!!!fpqeqp3YTTV' !3!!!!![,րMzt'.5IMQ53#5#"&4632264&#"%!3267#"&546324&#"#"3###535463!!!!?uu9&CWWC%:4%''%%''2.$M()R)cmk^Vgx&"*DAcct99BFV4 kj6h66h6k!))Yd[Yeg/!(&#LSS;9'J%)->32#4654&#"#4&#"#3>32!!!!![6]b"&16(26 S28VR35uo :5SN[5SM%Q//7':!%)#546?>54&#"5>323#!!!!!5 0+)^2*?1.#'!!d_1N, %`g =@!   o} o  <291<2<2.990!3!!!'7#5!7!^P1}M !!!!!!ns!5!73!!!!!'7#5!7!5!M.{>orv8Or?Aftgsi !!!!!!!! '@  o  <2291/90%!5 5PN '@ o  <<291/907!!55%&!!5!5 56PN&3!!!!55%!!!!'7!5!7!5!7 5"3I>~H~6\ڠ\ڟPN!!!!'7!5!7!5!755%"3I>~H~6\ڠ\ڟH 5 59696N33QQ33QQH 555569869NQ#+#&'#67&'&'&767&'36736'&DD59gi;5FDDD59gi;5FGAGWedYVedۘۘ&%5%67$%'5$7d0wL,ƦvS)^o'oS*[n&%57%'\Z-VpR̩wSXT~ %'7'75%%5XEZVwopR̩SX_'T(%%!!'7!5!7%5%<lSUCBu;L6S]5-XdsEE(7'7!!'7#5!75%7%5ֶDXFL62.B =^2*ςE\fuES$%#"'&'&'&#"5>32326 5j`k^Xbian ^VfPE:=MSNE;=KPNS$%#"'&'&'&#"5>3232655%j`k^Xbian ^VdPE:=MSNE;=K(14%3267#"'&'&'&''75>32%5%%%P ^Vgj`s;3QOVbia Z^0Q[Fl¢=KUPE: E$&SNEEXbrf5-(143267#"'&'&'&''75676?5%7%57'WR9? ^Vgj`s\GE)VbiY13:D ?\ָ̼܂=KUPE:$Ex&SN# ]euE2, l 55% 5wPN l  5 55%PN<<!%7'%%'75%7%57%5%e\i4"*PW<2."W94 Z_k󆑐3^am􇑓g3;5<<!%7/%5%%'%5%75%F??8]] ' o_\\q'V 13{f네􊇑3i놣s %5$dos===||s %$sod=6||6==y%5%5$>V|}0USx|y%5%5$@T|}0USx|y(%#"'&'&'&#"5>32326%5$j`k^Xbian ^Vg|}PE:=MSNE;=K USx|y(%#"'&'&'&#"5>32326%$j`k^Xbian ^Ve}|PE:=MSNE;=K |SUJ?67%'&%5$%ސmUΠ< STIGynʳlqB[,=qB J?67&''67&'֐mUBΠ4PSTIGn6m r6B \,|mݴnLNl e>moKM3#!#!5!!5!3 32654'&#,|ppmݴnLNlg le]moKM%!!!!"3!!"'&766nLNl6ΌmoKM᎐%!52#!5!27654&#!56̌6lNLnClMKom&%!!'7!5!7&'&763!7!!!!#";>Q=Z&zQ<Kl<{nLNlBw|BmoKM &327654'&/!5!7+!!'7!5!7!5!XlNLL0<[RCnVΝ%vFQ<&L&MKomM0 B"WlsBs9 %!!'7!5!7!"'&763!!"3!!P@jPhΌ6nLNl6v2HumoKM-9676'&#!!2#!!!!7!5!7)}6nLNlh@Rh@G moKMtHH5J 57!!%!32765!! '&ZHb"bH/<8.o{o_FIcxcI+=OOC+5J'|5J !3##5#535!32765!! '&7/<8.o{oP+=OOC+V1/3ް2/301!!!!V1/3ް2/301!5!!5 I?3 ް 2 ް2/33 3015!!!!!*@ K?3ް2 ް 2 / 301!5!!5!!5?jV/X#!#/XV/X73!3V$3?"2767>54&'&'$  &'&'&547676!!#!5!TSEFDDFESTTSEFDDFESbc1111cbbc1111cb88\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcb88$37"2767>54&'&'$  &'&'&5476765!TSEFDDFESTTSEFDDFESbc1111cbbc1111cb$8\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcb^$3?"2767>54&'&'$  &'&'&547676''7'77TSEFDDFESTTSEFDDFESbc1111cbbc1111cbݍݍݍ\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcbݍݍݍ"=A32767>54'&'&'&#"'67632#"'&'&'&5476' ED"#FDSRcbSUDED"#DFSRcbSUbxwvwc`2111abxwvw`c1211aGEacSSFC##"#DEacSSCF##"#Ib0111cawvxwbb0111acvwxwF$37"2767>54&'&'$  &'&'&547676!!TSEFDDFESTTSEFDDFESbc1111cbbc1111cbh\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcb}$3?Q"2767>54&'&'$  &'&'&547676"32654&'2#"&546TSEFDDFESTTSEFDDFESbc1111cbbc1111cbyHdcIHdeGBz0/11-0|D\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcbndHHbcGHd3/0xDCy-03$+E %#'-73%&"2767>54&'&'$  &'&'&547676== =  TSEFDDFESTTSEFDDFESbc1111cbbc1111cbqqp##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcb$!;!!!!"2767>54&'&'$  &'&'&547676TSEFDDFESTTSEFDDFESbc1111cbbc1111cbfp##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcb$37"2767>54&'&'$  &'&'&5476765!TSEFDDFESTTSEFDDFESbc1111cbbc1111cbCj\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcb^B /3  ް222 ް2/3  ް2 2 2ް201!!#!5!%!%!!88oNz88WB S / 3ް2ް2 / 3ް2 015!!%!!8oNzWB B/3  ް2/3  ް201   ' '!%!! NNNNNz]NNNNB !%!!!!eNz hu}5?3/3$$///3$$$$013!5!\ff3?3/3$$///333$$01#!5!\ff-?3ް222$$/3$$013!5!<4/?3$$$$///3$$01%3!!5<45?3/3$$///3$$$$013!5!!\ff N?3/3$$ް2 $ $/ //3$$$$ $ $01!!!#3!!!>rr N?3/3$$ް2 $ $/ //3$$$$ $ $01!!!#3!>rr R?333/3 $ $/// //3$$ް2$$ $ $01#33!5!j\\ffo?333 3 3 / 3 $$///////3$$ް2$$ް 2 $ $$$01#3#33!5!F\\\ffk?3 3 3/ 3$$ް2$$// / //3$$ ް 2$$ $ $ $$01#3!!!#3!jj\>rr3q!!'!#3!RNEqY&Y3q!!!!'!#3!7!`:`&qYYrrP3q !!'7#3!##g94|;qY&Ytf\+3q3!!!'7#3!##?!`4ww`qYYtr\  5' 5'] 7!! 5'G] %!5 <G{ z6'22#"'&'!#"&632!676"32654&:Bz0.22,0|D_4.0|DŒBz005`9PO::PQ3/0xDCy-03`4B <-033/0<B6`PsOO9:Pz6 2"32654&'2#"'&'!#"&632!676::PO;9PQ8Bz0.22,0|D_4.0|DŒBz005` PsOO9:P3/0xDCy-03`4B <-033/0<B6`z6:5!6767>32#"&'&/"3264&z:/0zBD|0/79QP::OP <0/330/: P:9OOsPY[ 3!5#%5!v x  3!5!?4 7!!!!!&cfgw^ !!!! &cEG^ !!!!!&cfgw^)!!!3-3W?V !!!!V?#u 9|Xd !!%fpqeqpTT'e   ''6UU'f    ?<'fU::U'f   {'f0U8U'f  fNV'f  Nf::'#3276?632.#"#"&'!5gV^naibX^k`j#UK=;ENSM= :EP= !! 5 M<= !!55 +11J H  5 5 5 86:686N33QQ33QQ33QQ H 5555556:86886:NP 5!-5  5 :nPNP !5!555% LNP !5!5LNP 5!-5:y5$%5$T@}|?_:|xSUy$%$@T|}?:BUS|mw!&67&%%'&'57&%5$%7~E9оD\eعCR([\GwY49^GY~ Y>-*HM.DX!6%'6%7$%7$%ሗX,tLjrfOM Y%7R/VY(`q:}݂\*[x3!!!!!'#5!7!!! MЫ=Mv0'`@`U@x3!!!'#5!7!5!!5!!MЫ=Mv<0 `j`@!!!!!!'7!5!7!)iԻikG9@莊!!!'7!5!7!5!!5)iԻikG9j莊"%3267#"''7&#"5>327 5T;Vgj`VnNPU32755%T;Vgj`VnNPU327%5$T;Vgj`VnNPU327%$T;Vgj`VnNPU@?=wBC3#5!3!!"$$3!!"!5}wy9geCclAbv'% $76)! !53#5!)Pٛ])7KWK1&v5o%2lc<''|VkZ"!5&76763!!"!!3!!"B5efſ{wC""Bw}ZcdZdAAx>@?=wBCv'!5 '&76)! !!)'w])7KyK1&o{ o%2lc<'X"!5&76763!!"!!3!!"B5efſ{wC""Bw}خ cdZdAAx>@?=wBC!!!!3!!"'&'&76763!!"L@g}ֲbcefſ{izb9CcdZdA9#!!#!5!276767!5!&'&'&#!5!2bC#DgſzxC""Bw}udxzZdAAx>@?=wBC#3!&'&#!5!2#!5!2767!5}fy9meCxAbv' )5! 765!#3!4'&)5P') 7KWK1)ˇo%2ld<'Z"!5#!5!276767!5!&'&'&#!5!2RB}wB""Cw{ŲfeZcCBw=?@>xAAdZxv'!5 )5! 765!5!4'&)5'P) 7KyK1)o{o%2ld<'S 5!!5!!5!Sz$ww6 3 %! XZ9(dTd  ' 5!5!GG # └!!!am+ !!77+A!!bT+"!7!!G+7TA!#nI,$%%$nn!"nn 8ʸ'+6@KV#"&6 3546 +32 &=# &6;5#'54&#"3!3264&#"32654&#!#"3265˭ʏʭʏeHGeeGHefGHefGHefGMGeeGHe`ʏʭʏ˭GffGHefffGMGeeHGeeHGeeG!3!n6732#"&54&#"iRA@Aee5 jT@OMJ&e<\-( #"&546323267iRA@Ae(]e54jT@OMJ&<T !!!!%!!Pr6L+x  #/;GS_kw+7CO[gs{ + ]b+]%*+%++]и/bи/*и/%hи*nиииии/ ++"+"f_+f:3+:++'и"-и3?и:Eи3Kи:Qи3Wи:]и3cи:iи3oи:uи3{и:и3и:и3и:ии/ии/ии/ии/ии/ии/ии/ии/ии/ ии/ии/#и)и)//и5и5/;иAиA/GиMиM/SиYиY/_kиfqи_wиf}и_иfи_иfи_иfи_иfи_иfи_иfи_иfии"ии"ии"01!2#!"543!254#!"+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;22+"=4#"=43+"=4;2+"=4;2"=43!2#UݓJIIJ%J%%J%%K$$K%J%J%%J%F%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%%%C%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%$%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%$%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%%%%%%*$%%%J%%J%%K$$K%%%%%JJJI%%I&%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%% %I%HJ%%J%%J%%J%%J%%J%!!1mpp !!2mp. !!!!!7!T.SNS.Q !5!ݠΐ0_T*!!#*- !5-T_0 5!]]*!*.- !!]#ΐ-!!!#*!!#*,!!!#,#!!!]#]*!!#*,!!!]#,#sX !4763!!"{|a0!0*,!4'&/32765!<(en:==@ne(!< |AEy <sX> 3!!"'&5!0a|{>ܜ*0s>!!J 4'&#!!2s!0a|{$*0sX,&'&!;!76<<(en@==:ne(!< yEA| <> !#!!2765s{|a0!>0*(!(! !! $<G>32#"&'!'%7!%26&"7]ueu7 e&f \>X>b]]b`jRP[@,.a!3!3FTNdxN &ۺ+#+#+A&6FVfv ]A]A]A)9IYiy ]+ + $%+$01! 4$32"! 4$357!3!NKKgg L7h׬z@+/ xN 4+$++A&6FVfv ]A]A]A)9IYiy ]*91и1/+ + +.'+.01! 4$32"! 4$!!5>54&#"5>32NKKggo.*OC6uhSXL7h׬z@'%D%7A,C NlxN D+B5+B+A&6FVfv ]A]A]A)9IYiy ]A55]A5)595I5Y5i5y5555555 ]5B9,5B9,/A,,]A,),9,I,Y,i,y,,,,,,, ]ܺ&9;9+ + )"+)?8+?2/+2/2901! 4$32"! 4$#"&'532654&+532654&#"5>32NKKgg|rN^j@][]dXMKJ;x_^IeL7h׬z@_0 6135-.)/%|}UpxN )+!+!+A&6FVfv ]A]A]A)9IYiy ]!$и&+ + "#+"и#'01! 4$32"! 4$ 3!3#!5!5NKKgg BKL7h׬z@Y5УxN 9I+&3+&+A&6FVfv ]A]A]A)9IYiy ]-9A33]A3)393I3Y3i3y3333333 ]99+ + 0)+0+#6+#01! 4$32"! 4$!!"632#"&'532654&#"NKKggS?!Wcu;S[[S3wiL7h׬z@\$=(F>?F(xN '@+;+5%+5+A&6FVfv ]A]A]A)9IYiy ]A&6FVfv ]A]A%%]A%)%9%I%Y%i%y%%%%%%% ])%59+ + "8+"2+201! 4$32"! 4$"32654&.#">32#"&5432NKKgg6666677ai1gqn@޹GL7h׬z@u@II@@II@*g;  xN "#/$/ܸ#и/A&6FVfv ]A]A]A)9IYiy ] 9!9+ + !+01! 4$32"! 4$!!!NKKggxl1L7h׬z@xN '?K!+=+1F+1+A&6FVfv ]A]A]A)9IYiy ]A&6FVfv ]A]AFF]AF)F9FIFYFiFyFFFFFFF ]%F19%/A%%]A%)%9%I%Y%i%y%%%%%%% ](=9+=9+/4F19%7ܸ+@+ + ":+".I+.C+C(C94C901! 4$32"! 4$"32654&%.54632#"&546732654&#"NKKgg=;==e˽f$pq32033023L7h׬z@L:;;99;;:apS{{Sp |]]|-.-..--xN 4@+>)+>/8+/+A&6FVfv ]A]A]A)9IYiy ]A>&>6>F>V>f>v>>>>>>> ]A>>])>9A88]A8)898I8Y8i8y8888888 ]+ + ,;+,5&+501! 4$32"! 4$53267#"&54632#"&2654&#"NKKgg_i3frn?ݸG5885677L7h׬z@)f;!AHHBBHHAxN &2>+#+#-9+-3'+3+A&6FVfv ]A]A]A)9IYiy ]#ܸи/A99]A9)999I9Y9i9y9999999 ]9$и$/A'']A')'9'I'Y'i'y''''''' ]+ + $%+$01! 4$32"! 4$35733!4&#"3267#"&54632NKKgg|'D')*''*)'ÏL7h׬z@&*jmmnn;( ;!O;!O ;!O;!O;!O;!O;#!O#;(!O(q(!((!((!((!'(I(!]((!((3(:( ' q( #'+/3!33!33!33!33!33!3mnmnm;(%8K#!1!!!!!!!#!1!!!!!!!#!1!!!!!!!#!1!!!!!!qlllllllllmmm((((;(!%)-13#3#3!3!##!#3#3#3#3#3#3#^^(ll(lm#;( #q:( !&9 '( 9(& &  9(&  9(& &  9(& &  9( '9(&  9(& &  %! %!!!,7r+uv ))xxp) )$7632#"'327$%&#"%632#"'~~~~eMM>yJJJJJ6````qq|qq#uv@A:91990KSXY"  9%-p) 327$%&#"%632#"'MM>y````qq|qqr' '/7?G%&'&'6767&'&'7%'676727"'64'7&"'62&47\+;.81F9K58.42d;E9G,:.80G9J6&8.;+d1O9FLL&_`JnLL'`_n<1& j(0=Ju &,A=N:0('<1& j(0=Ju &1<>EB0(n_II'[[JnII'[[p) %/36%632#"'327&#"6767&'&6py AAAA,+-,,-+A@@Rqq|qq%%mܱ[0$ %@%|"p) )73276'&#"7632#"'327$%&#"%632#"'r99:9rr9:99XWXXXXWXMM>yB!!BB!!oe33eje33````qq|qqp $  $pkk]Ak^p $  $27$%&#pkk]<MAk^a``p $  $"3pkk]<MAk^``p $  $327$pkk]\MMAk^>``p $  $%&#"pkk]Ak^>``p $  $"327$!pkk]<MMgAk^```p $  $"!pkk]<Ak^`p})6%63"'pRqq)#2y|q*q(32>54&'."!623IJf654253ED3366fJI426532&< ( 327$%&#"327$%&#"!IMM>y_O````}|qqqqH( ( !#%&#")%632OyyMMqq>~``  3327$3!#"'$@1>qq``) %63"æqv`) 2#%&#u)q>` 527$3Muyv`>q "'$33yuMq`!)%632#%&#"uqq>``!3327$3#"'$uMMuyy``>qq!% !% !%! !%!$'`)32>54&'."467>2#"&'&o+()h:;iR+**(iuh*)r5352456fJI325wh))++Rh<:g*(+*)(픂235624IJf6633%!%!!d r<%!%!!We r<%!%!W7 r<%!%!W7 r<% !%!!!!+c,b r<<!% 4632"&! W>>VV}V2 j>VV>>VVJ !%! c  !%! b  p(  7& $  %;<*X֖% !!!!!!,7,rWb<)) Ie% !!!!%!!,crWbM)MM^??@7`d?\gOOOOy>*<?v^h"-///9 99013263#!5276;'4?'4?26u'6"gP39.4! '*C0.xV#m14He '1l1 Z+dd?7)+и//// 9:90133 #&'&+"'&#"/573;2?"#'57#&'#"#5676!5:+#9,p!j[%+ > 7VCCc":8}V .e3B=Se` e9*=9 3@=}k !=] 9eAmu} 5aǺM*+MA**]A*)*9*I*Y*i*y******* ]*к*M9Mи/*M9Mи/*M9*и/Mc///'P+'+ܸ и /и/99и/99и/99и/999999и/9999990173&'37&'67&'67&'67'32654'&'7654&#"3672#"$54767&'&547'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'4327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&54327'4327632#"/#"57#"54?'&54327'&327632#"/#"57#"54?'&5432&'67&'67&'67'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432O~ )*+')+(@&'$||e?/A}]\B-71SLoW\vLL)(0/ (( .1(%%,* # $ )*f$% +) $ #*+f%%,* $ $ )*   \o  [  %)#&'%&)#`#$ *) $ #+,U   Q   0  E%% +) $ $*+*EC*Z*,)-)-*,%&%&fБfU 5HhfeefhH2pu^ttQFs棥sKQttGh!99!  !77!  4 4 22 K44 22 22  11                 7        %&%&%'%&%'%&22  //  g               44 22  !2CTevU/d////01+&'&54?6?6/&2#"/54762#"/54762#"/54762#"/54762#"/54762#"/54762#"/547672#"/54762#"/54762#"/5476%2#"/5476%2#"/5476%2#"/5476DQ=2`{4&/<) g>i#@3e E $   $   #  #  #  $   #  $   $  U $   # " $   #  aG<s-8PZy9} KW2{0R^j ,: . 4 . = ,  ,   -  -  -  -   .  .   ,   -   #///9901!! WV9`8 O///+к 9 99к901!! 7 ! !WVDu9`8N I7///99 9 901 7%7&54769 }V&7A 6$ 8'^4? '+/+01!2 7%7&547!&'6I@Y%14HFS"="l-2DC[9 )+"++A&6FVfv ]A]A]A)9IYiy ]A&6FVfv ]A]+ + 01! 4$32! 4$#"#"&54>32JJhhq^mNMn2Z//Z2K7iwBNmmN1Z00Z} GH/I/Fܸ(A((]A()(9(I(Y(i(y((((((( ]H@и@/.A.&.6.F.V.f.v....... ]A..]@:и://7/C++C0 +0 и7ܸи/0&и&/01"32654&!"32654&%#"&54767654$#"#"&54767&54! gJggJIhgIhhIJgg[ZQoyy}WZ[zADgJIggIJggJIhhIJgU\\Q srW\\^} GH/I/ܸH$и$/и/$0A0&060F0V0f0v0000000 ]A00]6A66]A6)696I6Y6i6y6666666 ]3+3?+?.+ и /и?'и.8014&#"326%4&#"326! 547&'&5463232$54'&'&54632hIJggJJgMgJIhhIJg#@@z[ZW}yOOyoQZ[sIhhIJggJJggJIgg ][[Xrq Q\\} ׸//и/A&6FVfv ]A]ܸ A ]A ) 9 I Y i y ] и //++01"32654&7#"5432ɏǾ/`T_ȐɎ;12Y} 7 + +*+0+0A&6FVfv ]A]A]A)9IYiy ]A&6FVfv ]A]A**]A*)*9*I*Y*i*y******* ]9+- +-3+#+#01"32654&"32654&#"54327&5432#"'&'3xxx:yyxf& کxxxxZxxxx;TdIU  k)5AMYeq}BH+BAHH]AH)H9HIHYHiHyHHHHHHH ]NиHT-!+- +)3+)013'%&76'!'4%$53!76=332654&#"#"&54632'#"&54632#"&54632&'&676&'&676'.7>'.7>6&'&6%6&'&6>'.>'. [&riX(tRSu(Yiq'LW쥨驧r^]]^ !! !! ..- . *)n))*)m)+. .- . OyyO vKK9__9KKݧꧦ]]_""""s!!""D. - . - a)**))*)) / . - . p)5AMYeq}+!+!'+ +'A!&!6!F!V!f!v!!!!!!! ]A!!]'и/!ܸ!и//// + $+$++иܸܸ015#!4'&'5#2#"&546"32654&'"32654&"32654&7>'.7>'.676&'&676&'&7>'.%7>'.676&'&676&'&53!76=3%'676%327'%&76'77&'$%'#7%6'&718楣\\\R     - -Y - -))G))))U*)>- - ~- - VFwDcD CB DcDwETc==F\J $06# J\F==cS@@1AeA1@@H磤椣筁\\\\     % - -- ,1)))(9)())u- , - - G77W6 W77Gl^ ee ^l(q,&$pp$&,q(u S / / и/и/ ܸи/ ܸ ++01!!'!Pn8hv "g#/$/#и/и/$ܸи/ ܸ ܺ 99 ++01!!'!##+572367676MoL)>u eI3?ba8hA:F;/Itxv S//и/и/ܸи/ ܸ ++01!!'!  ##' Mo_h[ei[i8hi[ef[l[@// // 90136273 ##'5) U.WW1@ US Vdv#,5>~Wh+WAиA/Z//C+Z9 Z9Z9%Z9.Z90к7C9IZ9yZ9C}013+&=43+&=4%3+&=43+&=43+&=43+&=43+&=4%33 #&'&+"'&#"/573;2?"#'57#&'#"#5676!5\:V\9\:\:]:&]9[\::+#9,p!j[%+ > 7VCCc":8 #8d#7$6$8;$7i$7 #9pPL  )Z. ;6ZV Z3%Y63 .87p  />Eqwg0/FQ+F C+ t +tcr+crܸ иF?иFAиA/F_и_/01!674#!!6?676'&#'323276767654#3#&'&'&6%67!672!&=75$/563&43!32+'!67#>54&53# ? I :W0 96;E,Q 2:&l6x0 bm! ras"\>%Ef~e2U6g!6V#p5C+ C ? P9 B;Q4XmM;YV /M(=H: ,qLUD)8Wqke-Pm{NW =$ U  /0c)H?2@[nDF8T$.L / + 01 !' !T4XKGwL5_K ////01 !'7W4Z~wDB7/ /*/*9*9(*9-*901&547632632%6#"'&'# #"'&'&6&'&547676xJX%&XWX:\8 [Ez##FM !9@!#jL)_(Mi#"?8" MF##y4hok@mmr*%te2' BB90tU%) "ft(f" )%Ut09CB '29>-///919=9013#"'43727$'#"$4727%6725676&5&oJ7.b;7!"&546767!7!"&54>3!6763!26P+=6/2D>R+>2,+v*>>+2  ,2 =,2  =,3>,2K/1/&+ + и/и/ܸ&(и(/01463!2!2#!!#!32#3#!>*v+,1>+R=D206=+P#,>3,=  2,= 2,  2+>{!C_"+?+?<6+< + +5/+5"&ܸ(и(/.01%4&#!"!&3!!"3!#";#"3&'6737#&'6737!"'67!7!&'63!67!2I0!6SS SS: SS>SS]]J]]]]h\\, Bv*>K%39KILKIOKHLKIhghghghgE?-L!D'C+'+ + ?+?CܸC"и"/')и)/'.ܺ/9//5ܺ6 96/<ܸ?F9/B/(B996B990172654'6#"'4#"'54#"'54#"'675674767#%$4:JILLHOKHLKIhghgighgD>-sJ1 b6'SS cRR SS?SS\\K\\;\\]]!A*>K{!CuC+'+'*.+*+ +15+1C>ܸ<и*vA!,]]j\\\\K\\IKLHKOIKLIK93%N-?EghghghgiL!C>"+> ++'+'"ܺ.9./*ܺ/95 95/1ܸ>8ܸ><иDghgighghSS=SS SSb SS'6a!0J)K>*B \\]]:]]J]]}O!%)-15#PL+P+w+ L9HL9AP&P6PFPVPfPvPPPPPPP ]APP]uL9L9L9ии/и/и/.ܸи/L9L9L9L9L9L9L9L9L9.и/L9и/ии/.9ии/L9и/"9(L93L97$/0/|+*+5+D+D+ D9Dи/;и;/HD9u9ик59и/ܺ59к59595959к5959595959595к595и/"59(5935901 3656;2#'7+"/#"'+"5&54775%"'5476;25'7&56%635&56;374765'75'76=4'&+ '"'4!#"'&3$365&5&#%#754'&5&&547'5367&7+&'&'735&2?"5%75537'7'3533553535'32767&5%2?&#%55'5757757751:e,$?F?Y>F_LA3ELH3,8LYLlEF'!0< k#gF  EeY!! Gp&iq9 :^N$%`BCf F4"4._?ee3&{E(1-+!$Kt8 -   $Gs sM rEF"2 >_plTErf^5.>=9|5"-l)d ,&>vv]cccWpC-+ d8 Bpp>W]oaxvuPp82,D ^8, ^B$K+ "1R[+e*;GW QU I&? gpo% w ^SA$ 2 9i-5n02D|&IY^Pw^%\??\OWC ,,1 /211/=;7777=321811{908hN%b\Dh,)h?17I21!122223 21& //012%2#"'&=477654'#"'5473Bq4|l anN ilm b 9 b؍MOb>YaYƮ58l7P P@ $0<FX?Y/Z/ܸY и /ܸ  ++01 + &=6&# 3 6=%&#"';27!5%67%!&'&'2+"'&=476r cR~UY082.ԍ_W_V"+}IR8D).P9H'S]ٱZYHYoX(I_ ;.2lOP%.G6R%&I8d 8Pi]9/\/ /"/)/Wg+W 99% 99+ 99=и=/C 99Q 9901>'67&&&'6.7#"'&'#"'$76'773.#'6'5676&&5476'&'%&&8DN$$ UE>!]J([Fhy *m.2\=w\`|:S?ED:@@]?]1fix pFFTD'yr,48eL @v(Nr%&&&+F 7!N &".\S$XE/KC\a*0/'rSCٟ C (RKpF|bphc'R"J$d1F[qG^+G$ܸgܸи/$g9 $g9 $g9$g9^G9Gииq#иGܸ&и&/*^G9G2и3и$4иq5и^7и7/;^G9=и=/$ܸ@и@/C$g9$IиqJкP^G9gUиU/X$g9ZиZ/$\кb^G9dиd/k$g9GoиpиGrиsи$tиquк{^G9|^G9}^G9^и/$g9gи/^G9^G9$g9$g9$g9$g9$g9^79^G9^G9^G9^G9Gии$иqи$иqиGи///!///+yu+yuy9 uy9 uy9 и /uy9/9/9*/9;/9C/9uPиP/X/9b/9k/9urиr/{uy9|uy9}uy9/999999999999999999и017&&'7'6&'$#&7'&#"'5&767#&''5$'67'6'6'5$'67'656$'67&'6'&'''5$7676'&&'$'63&7"7&'7&'7&'7&'6'6%676767&77&77&''5& '6%35&'.54>323#67!&W= y /_I[l*O F_VhB" "@.,<9tJ4Vt1P QJqMi vhpHI!:JJJ B7m\J_/ ?o v!"t,`s&*_~P1>5='g=@24<1 -s[,*&sd1PT>5J@=)j<42JCYT_Y))X^TY{ #m7 "J}>  "H1 $ &b5 4CUE '(!`9 !,(MTE + }r}A" 7,)f[4f AD <@0&9c?"V+GoMK~aG g9s &0@k"?c*GEKX Gjt9hN&\6 '''' 6\%N$%/ и /A]A] ܸܸܸк9 9и&/ + +и01&'6&'67327&#!65#&3yyys~w ccޱqZre[c7 7 c , !+!"+и/!ܸи/и/и иܸи/и/ии/и/"&и!(/+ + &+ $+$ܸии и и&)и$+0135'533#3!'#'5!5!5#53!5!5#!!-ʷ}} ckvG G @<<3ffX苜qXGccGJ!"/#/" и /ܸи#ܸA]A)9IYiy ]и/и/и/ /// + +0132654&#!2+73 ### 3(ttvgnؐB(s+иии////+ +  и ии0133#!!#'!'57!5#'5735׫$"q~q+!++ + ии%и'и -+++ии&и(01!#!573#'5!3!'573!#'73!#'5;jjŠJss<wѡIjj8/w{,i + A & 6 F V f v ]A ]//+0132#' 3%+ &5%6323'#57'53^VQ6>ѨABؒ6ʞG2k >Y3~||~ObsU]+UHB+H+% +%hq+hA]A)9IYiy ]9 ]h999и/]h9#]h9+]h9/ %949AH&H6HFHVHfHvHHHHHHH ]AHH]9BH9=]h9F]h9KиK/LиL/NиN/Q]h9AU&U6UFUVUfUvUUUUUUU ]AUU]YBH9hu// /4/+к499к4949#49+49/49949=49F49K49Q49Y490132732753"'#"'4323$4'5;+"'#"'53275'&'&5?5572%#&'&5%634%476=%@.!%,BE,#!-Q2" $nL/PuHED8@9AF&F6FFFVFfFvFFFFFFF ]AFF]0JAU&U6UFUVUfUvUUUUUUU ]AUU]Aff]Af)f9fIfYfifyfffffff ]i/,/,9',91,9>,9012#27654'73&#"#'&'#"56='"'46'4#"4735#5&547/63654'%654BR38xy}xO8x  *@;^ThoP?).Rt}?ywW·FY3(p"AK|.PQUbKxưrɮ-(-; )1Hv;32#"&546324&#"326%! !  Őb{=&*<<*(;E;))::));KJ67Ϛ{ɬ)::)*<<**<<*):<'L67I" #   " #   " #   " #   " #   " #   " #   " #    <BHNTZ`fl3264'&#"&7367'67675673#''5&'&'7&'677&'67'%%&'&'%6767%&'0/CB^0/AC/88pkTcR|NOOfUip88pqUfONNQaQh!$ b)dLQk KRt!% c'd&//^000NN|P_Pfp88poQ`QyNNP\ Qgp88pmQ \Py,  M N>&`7" bK*V&"g{ M M !)1a + 0,+0$++A & 6 F V f v ]A ]A]A)9IYiy ],и(и(/A0&060F0V0f0v0000000 ]A00]3 +++&"+&"*и&.01! ! 3254#"&#%#7&'67&'6767KJ]_VNEWMCe2ntjnti7IL6a] ]pu otpu ot !)1a + 0,+0$++A & 6 F V f v ]A ]A]A)9IYiy ],и(и(/A0&060F0V0f0v0000000 ]A00]3 +++&"+&"*и&.01! ! 3254#"3$3&'67&'6767KJ]_TNEAgntjnti7IL6a] Uypu otpu ot %ͺ + ++и/A]A)9IYiy ] "и"/' + ++ и / и$01! ! #$''&'6%&'667KJOR`7IL0c Z    "*2:AIXY/Z/ܸܸи/и/Yи/и/BиB/CиC/EиGиG/LAL&L6LFLVLfLvLLLLLLL ]ALL]F/H///W+$'+$+и'/013#''%#&'52#"'&5476!!'5%!!'53'5%3'5%3#'32765'&#"sNN99=>-1\ H0e%FKSwZGr=;=NN$E| 1 ?'_>?@7`d@\hPPPPy?+<>w_VG{?,rCA+,/-/ܸ,и/A&6FVfv ]A]&// 99 901 +"'5$76%&'547327676=&#~jt1/Q}](+VRxbO P >nS]] =fP+,/-/,и/-ܸA]A)9IYiy ]&//9 901! &56;2'5$%75#"3ui1.P~N](7P,VSZycOpO >S\^ f0:1@!7+7 + .++..9и  и /к.9A7&767F7V7f7v7777777 ]A77]7!и+=и.B /"/+/-/ / + '2+':+:2'9и и и/2'9017#'#53'&'&54767&'&=33676=3#32654'&i($lm$(($[Uu&tU[$&uU[[UV$|ddb e|$% ZSSZ %_TYYT* $+++A]A)9IYiy ]A&6FVfv ]A]и/"и&/++ #+ #ии!и!/014&#"326&5432%##5!&w衤礡PP䤣L~~| * $!+ + +A&6FVfv ]A]A ]A ) 9 I Y i y ] и/и/&/+ + + и/ и/ 01"32654&'#5!3%#"5476礡𳉧פ㤤ף |~~L #+%+01&$76+"'&5'476%7!ttsstEus pid5s qttrtt<֤ꧦg\ul9S//и/A&6FVfv ]A]9ܸܸ//++0152654&#"#43233#!5 z{ym㗗yyy{(|jǸ /!/ и/и ܸи!ܸA]A)9IYiy ]и/ ///+ + ик  901#53533#632#4654&#"#*jjoon}mZyH{zF2 4˺+ + .++. ܸ"и$и&и (и+-ܸ0и+2и.6/$!+$ + &+&$'и&)и$+и!-и /и1и301"32654&7#"&54767!!53#5!!3!!#3!!8OO87ON=0LmkL/>Λ2  1O79NN97Os0LllllL1KӘJJ-'< ++4)+4к 49ик 49 49" 49#A))]A)))9)I)Y)i)y))))))) ])+и+/, 4942и2/9и4>//:+:и:к 9 99999"9#9+9,9192901%#5#535&'&'5'73'3#'73'676=35'73'33◰zhNgeMjzzTThOʍ7NjYYӖy?//и/и/ܸ ܸиA]A)9IYiy ] + + +01! #!!!'!27674'&#.d ;6zFH%QM_\ǃ$P<] 5 +  9/ + и01!#"#&5463 67!2#6#"V⩁9k]ts]k8X1((1Eu 1#2/3/2"и"/A&6FVfv ]A]3ܸ A ]A ) 9 I Y i y ]"9и/$и$/&"9++ +  9& 9+и,01"32654&'67>3"#"54767&'&#52Γ͕LVa{.+ؔ)0zHUM\ϓΓϖ=Bll)'ҕ*l8lB=j;//и/ ܸܸ// //01&'5 %$ 56?6'[W4ZZ//[[5 @Eo +?);+)5#+5 +A5&565F5V5f5v5555555 ]A55]#59/A]A)9IYiy ]A ]A ) 9 I Y i y ];A)&)6)F)V)f)v))))))) ]A))]/иA 8+ +01"32654&,'5'&546322654&#" &$#"&547>__^- ͓hI^^^9l ͓hI____(+|T!%lϓgML____x)+{T!&lϔgMM  =( +(+"+A]A)9IYiy ]A""]A")"9"I"Y"i"y""""""" ]A(&(6(F(V(f(v((((((( ]A((]?+%+01>'.463227#"&5454&#"&'&5476766&KAKK@WߴGdAoc.%&3tu/3u]JKAKL@ݰ |XHwyo†<>bQs-.cx68<32>32#&'567''#&&#4'3>$4&"?w(K>R0D32>32gYYYD,1:?$)v$E?w(K>Ro}vvxJv<aAktAO]ƀwϧe// и /ܸи/ 9иܸ  /++01!5!3##'!5!~2k<@i8080k<j'/0/1/ܸ0и/ 9ܺ#9%и%/,A,,]A,),9,I,Y,i,y,,,,,,, ]/+* +*0127632#"'#576&#"4'5267>327&'"SkQmyz,~zi2@:$(.-)zW] ݾgvxaX[&ŝ9{!C*// /013276327632#"'&#"'&#'3276327632#"'&#"'&#'Es- 1V865+)|m^aV885W7805Dt,1W776+)}m^aW784V8705(GG$3LKGHb 'HH#2MLGHaA//ܸܸи/и/ܸ иии/// //+иии01!5!37!!' 3(ͦ '3_76`S@ʬARc!%UeS ,+ #&+#!+!U$+UO+OA & 6 F V f v ]A ]A]A)9IYiy ]3,O9I,O9g=/#&+#<9+<"+0+0ик309<?и9AкI090K0167&'&#"!3!67>54.#"!&'.54>325467675#53533#63232>54.#"P#3JNNTRJWVJQSOMJ4"?*&ElnhPL$ llill %LOhnlD')----+)QPQ((QPQ)+/ 6klj$?6FWWF6?$jlk6 }++--JHNRh~//GиG/и/Fܺ F9F9)F97F9QܸIкJF9GPܸMкTF9jF9F9Fи/F9QF+QNO+N>D+>Dи/>и/>и/>6и6/01&'4>32"'4>32&'4>32&54>32&54>32#!5!'!567>54.#"32767>54.#"327732>54.#"327>54.#"732>54.#"M_ 6694S55.+C55C&.66 V\+55 c$M##$ 6$#$s`%#$d0"%)h #"#_33@]22-"40446/*33UJ"+33^1/K=0T* ####  #$$##$$#  B #### *"$$" U!'-2g(+(+++9+/ ܸи ܸ к(9/(ܸии(и/2и/+#и#/*ܸ%и%/.и./(1и4+++++$+2(+2"0+"ии/+ и /+и/ии/ии/01!35!#3!53573#'5#5!35!75!!5'57!s\\ss]]s JRRIJ~֛E77__vtt4!v7CRbWc/d/cи/и/SAS&S6SFSVSfSvSSSSSSS ]ASS]и/dܸ[A[[]A[)[9[I[Y[i[y[[[[[[[ ]!и!/#и#/[DиD/FиF/NиSPиP/R5+R_+W<+WBJ+B<W9!<W99и<?01&54767&'&'5676767&'&54>32! 535#5##3654.#"!32>54.#"  <$))+N-N*)N-M,**%:  @ v<-M**M-?K566459<5&?HPPIK* ')+K**K+)' *KIPPH>&5<:6uN|l||l|-I+N))N+@65555Q*3VW/X/ܸWи/ 9"9;A;&;6;F;V;f;v;;;;;;; ]A;;].и./1и1/@9A9E9KܺP9S9// 9"9@9A9E9P9S9016&7!&54''&''67.76;+"'5#"=6&'76767%25#6&' 3Z(-6  Z8. ,Z0H &h6%`+EH )#M+=;,Zga#iR6U k''M.+`xo8:.@s.P mz "x?.#1p#41`&jD"acLHJ ~447| JlL"0T_/+@8+@A&6FVfv ]A]+/9A@&@6@F@V@f@v@@@@@@@ ]A@@]48@9D8@9U!+UZ+!#и#/+Z9MZ9!T0132>54.#"32>54.#"!5&54767&'&546767&'&54>32'&'.#":e79e89f76e;[S &(*UM,N)(N-KV)&& \@ECA8d88d88g66gu9:%N&KRS* '**M**M**' *SRK&N۠:9}qyyq}c!%Ueiz_ ,+ #&+#!+!U$+UO+OA & 6 F V f v ]A ]A]A)9IYiy ]3,O9I,O9=/#&+#fg+f<9+<"+0+0ик309<?и9AкI090K0167&'&#"!3!67>54.#"!&'.54>325467675#53533#63232>54.#"!57!&'.54>3234'67632!P#3JNNTRJWVJQSOMJ4"?*&ElnhPL$ llill %LOhnlD')----s=BDw@>=))==AwDB=+)QPQ((QPQ)+/ 6klj$?6FWWF6?$jlk6 }++-- !yCB{C!$$!C{BCy! JHLPQ/R/QGиG/и/REܺ E9E9)E97E9JܸGPܸKиJMMF+IN+I>D+>Dи/>и/>и/>6и6/01&'4>32"'4>32&'4>32&54>32&54>32#!5!5!M_ 6694S55.+C55C&.66 V\+55 c$))_33@]22-"40446/*33UJ"+33^1/NNOOU%)$!+$ +  + и/$и/и!и$ ܸи+&+&'+ +  +  и и /'ܸи и !и!/ "и$и$/ %015!5!!35!#3!53573#'5#5!35!s\\ss]]s ^^/oo#E77v4@m+A&6FVfv ]A]991/014767&'&'5676767&'&54>32!&535#5##3  <$))+N-N*)N-M,**%:  @%v<5&?HPPIK* ')+K**K+)' *KIPPH>&5<:6n5|l||l|L".7=W <+ ?/ / 9 9 9 9, 98 9016&73#!&54'''7&''676&7;2547#";65'"3=QUU+-6 E|]k0krd0c G&h8E+`%s H>4wM-',Qo8:$whPSmh**z1"0@)5"@YR00m+A&6FVfv ]A]9 9/01&54767&'&546767&'&54>32; &(*UM,N)(N-KV)&& 9:%N&KRS* '**M**M**' *SRK&N۠:9C#+///"/01#"'##56'##"/547?^'5@_*SU&/UL ;Yԧ9UP(` XI.s2Q3/4/ ܸ!ܸ и /3и/ܺ+ 9/&+и&/0122732#&547636=4'&# #4'&#"*t pz&=<xQ>hG:V Hek%PF5NP B|-&pA&NFX // 901 &&5 <F:^;" V gdG7C+///99 9/901236;2"##'65##"'&5476;235&'&=476e x<JT`(GeRUdfB3 VNT9D///4 +4 к#94+к=9>901+"'##56#+"'&575477;2732;276=4'3&'"~V"0b*SV*8UiQ"_|Q )w`SgA ? 6N #euB? gIo5 F(pZRw// /9012367632#&5476(t*#\l~ ΨT]1klSI|-X //01 &47E osU H2`g+Z+N+99V9AZZ]AZ)Z9ZIZYZiZyZZZZZZZ ]i//^+J+J):+)и/) и!и),и,/:7и7/JAи:QиQ/:Sи:UиU/V:790126;2"##'65##"'&5476;2&'5476&+"326733276=4/#"567654'&#"35&5hr=)\"IfRUdgC3&=cG kv ==Nr%SZU 6vk 6)S<F98:d  mOE:R p&i  C]&'Ax.+0 nM,W`cT,L#@8+@+0H+0A&6FVfv ]A]"ܺ<809A@&@6@F@V@f@v@@@@@@@ ]A@@]AHH]AH)H9HIHYHiHyHHHHHHH ]0N/D4+D013#&'&'&6%3#&'&'&63#&'&'&6#"$&5467332$654'&'v  0A  1Y  1,KV./VL9?cyɦt3Z|`ŻN[O}БBr1a`bb`a1)EMTTUUTTME)%+///9013#"/4?23hH0#!cZ-@o3+///99013#'654'&'#"54732XWz=\9`Y'6?F` 1TFG*֙-@x/e/ /и/и/ ܸи/ܸ//99901#"=4?2%#"=4?26ձ'VQܖCت+YP*~: ۉ8z"Co//ܸи/ ܸи/ܸи ++ +и/и/ 9901"'4723!# 5472!5kmOdXX[;Z$}@Ϝ"  ++к 9A]A)9IYiy ]// /+ 9013363'$6'"-8 w?WXc1 0 // и /и/ ܸи/иܸи/ ܸи и//// /99 9 999013%#'#3%#)N(4/c}4(,=++и ܺ 9ик  9ܺ9к9и!и%и&и'и+и(и)и*к, 9////99 9 999999&9*9,901377#'#'547#5773%%.wwzy.**  <<7CA<<{8AMtPGc6+6и6#//MT,P$ 66$0_ u3dUdt_}s*$"Rt0XX__/ik=ZG8*F 1 . ъf)MC =g9EkO 9!(-);&  ]t!y" & 2| ba$ U+  2E3/$/+ +к$39$39$39"к%9&$39'и'/7$398$399$390135733!&54?'7'7!!"'&%#'73676'77'7'&'676ի,&T>=c$(wK9.U:Cʈ%`T??5̈'8/a\MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! 1DWE/6/,-+,+ +6E9#6E9$6E9%6E9-4к7-,986E9,9и9/I6E9J 9K6E901!!5>7>54&#"5>32&54?'7'7!!"'&%#'73676'77'7'&'676]T@1$J=c$(wK9.U:Cʈ%`T??5̈'8/]U1)8(3&ncQ&D- mMOHK$k$823!a IF 7=c`O]BA6$k#- kNA! (=PcQ/B/89+8 + #+#+9 BQ9/90BQ91BQ99@кC989DBQ98EиE/UBQ9V#9WBQ901#"&'532654&+532654&#"5>32&54?'7'7!!"'&%#'73676'77'7'&'676Z _3lFHe5^\VOosHGJI)`VKm1Sj,&T>=c$(wK9.U:Cʈ%`T??5̈'8/S<\el23-2['&')b YK4JMOHK$k$823!a IF 7=c`O]BA6$k#- kNA!  "5H6/'/++'69и к'69'699%к(9)'69*и*/:'69;'69<'6901333##5!5&54?'7'7!!"'&%#'73676'77'7'&'676yy,&T>=c$(wK9.U:Cʈ%`T??5̈'8/Rv_`MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! 2EXF/7/-.+- ++7F9ܺ7F9$9%9&7F9.5к8.-997F9-:и:/J7F9K7F9L7F901!!632#"&'532654&#"&54?'7'7!!"'&%#'73676'77'7'&'67612hFL]5R]]R'PF ,&T>=c$(wK9.U:Cʈ%`T??5̈'8/_ptcdrr@89@ SMOHK$k$823!a IF 7=c`O]BA6$k#- kNA!  $9L_ + A & 6 F V f v ]A ]и/? 9M/>/45+4+"+" "9ܺ+>M9,"9->M95<к?549@>M94AиA/Q>M9R"9S>M901"32654&.#"632#"&54632&54?'7'7!!"'&%#'73676'77'7'&'6767DD7:BB=F"W\]8uu&M,&T>=c$(wK9.U:Cʈ%`T??5̈'8/A;;@@;;Af`5(sa_t MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! .A// /++ /9 /9 /9к!9" /9#и#/3 /94 /95 /901!#!&54?'7'7!!"'&%#'73676'77'7'&'676&,&T>=c$(wK9.U:Cʈ%`T??5̈'8/2{MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! ':{(//+(9(9(9к9(9и/,(9-(9.(9017&54?'7'7!!"'&%#'73676'77'7'&'676,&T>=c$(wK9.U:Cʈ%`T??5̈'8/MOHK$k$823!a IF 7=c`O]BA6$k#- kNA!'9HRm//F/=D+=F9 F9*F90D=98F9;F9@F9IиDL01!273!567&#2$'76+&67'#'6765'533!273+#'!"/47*:!Jca# fi*11Za(}ypPd!^t/TT}75 b\V/V'f::p ?)\ ) 9s s%00%2<J\e9d +d+.и./O d9dQ013 + &=%62!67#&'&#36&#&#"3274/"34?3'35732?5##!'53aoPS<&3y: SO B2_5N vbe)PK  L$=j"AjOL5_k, ߋ~y}/M<4{1;C,[_ei' [)$ /:BR`j_k/l/ܸk и /A&6FVfv ]A]A]A)9IYiy ]' 9+ 9G 9L 9T 9Y 9_ 9++V[+V")+"')"9+)"90и0/L[V9Vaи[e01 # &5%6; 65%&# !27!57&/#2#&'676+%!#'#&'47'3!27##'%!#"/6g^_b0h\{\[:5:QmMM[-w,ldN VNG+Q'XYtTpXYSmEb,#4' FV ! Y1 1_ Ug,17H8+8'+1+1 A+ A&6FVfv ]A]A]A)9IYiy ]  9, 9A8&868F8V8f8v8888888 ]A88]AAA]AA)A9AIAYAiAyAAAAAAA ]J<+<E+$+*+*ии*.и$40127&' # &5%6367&#'.7&67263'#%; 65%&# aWg^_Wa+{|<b0h\{\&XYtTͿWzzWapXYS1/5/*+* +  +# 9012!2!!7&!"4#".547673267   0# Uq{|}@!/(SSS*E.َer(Y$h?}}|r<.32#".ee(<<ħñ"32#".%2#".54>ee(<<ħñ"54.#"ee:<#"< !<"#;ch =!!54.#"%32>54.#"ee:<#"< !<"#;"< !<"#< ;#ch =!!54.#"##"'5##"$'&'!5!5&'.54>32!!676767'%''H&(G()G'%H(%'V W3WImuw>DE}AB|GE=md^JW4W Vs'H''H'(H''H`XAK|@X1(ԁ3"|DD}DD}DD|" 2/ "1X@|AX1#  9Yw/(/6/8/6969696969"69>69@69F69V6901%&'%67& 673&/'67 &'"&'6?&'3 ' '7  &/7&'>70  1JK[]><+Gg['fBBe&\h?(K?]\K ! RTX1){V8#Uw )/^@R?? );32TD$ #@F,MMMv E8p_Lc1  M**+ B@0"AR/0?wA%od/D&3.YaQ/5#3$"uI' @3/u= =#n- .... y4u1// / + 1919к19&и ,к.19 /и 2к41901% % 32+#".7!#"&'&'#&=4;7337_8)0/_^aM`^^1/ 9534?GG~F6F~GG?>D9/C}"7+//// /+01632&'.'#!#!#Ҹ62K#+~~R!Nx_TV_T 'NQ9;:;PHi?CD|))Z)6׺*+$+2+2A&6FVfv ]A]A]A)9IYiy ]и/$и//. +.0132>54.#"367#&7&$735&'.54>322[02[24Z1/[3)'5*.XA54.#"%2#".54>''#/'7''7''7/5?'77'77'7?3777''H)(H('H((I\Hs=]SH$e$HR^323#67#&#"/&'&547&"'6%676V n*[n%'ZxL0<{2;&b;>/2:.m*nW)'$o`0LP;2F<;(e:2/"7LL75MLZ'&4)PNPUQ74(4 3(4:XUPNR (@D V>0&8a>!U*~EmLK}`G f7r &0>j!>a)E~CKW Gis7g:M57LL75M-Z '''' Y (5[J5( \d (5J [4 '''/GSm//и/и/JܸиJ(и(/J*и*/J,и,/JA]A)9IYiy ]0и0/A&6FVfv ]A]8и8/:и:/<и&'767&%76'&''67&'&'&'6767654676'&7>326'##"'&'&'&54767&'&547676&'&#"6&%6767&'&'&676&5467&'&6732767&$$$$OG36ecce74GL944m/122102/.303112.OF}68ge"w?>v"rt #87! ":;@A<:" !66# sr*./13/.UVT\<>"$!! !"#">kcg86|FO 93399 <>#"#><  "$ZTU./43..V5$##$59gTV++9Z^^Z9++VTg9'(''&()I8:9889: Z_59eUV-, <8.>euvc>-7=bccb>7-?cwud?/8MWZZW **D@@D+8,-VTe95^&)(&''(DA:AD.*!Y[[Y!& )rao+>8+>Q+QA88]A8)898I8Y8i8y8888888 ]8>9/A]A)9IYiy ]ܺ8>9/A]A)9IYiy ]A&6FVfv ]A]$ܸ ܺ$9$9ܺoQ9A]A)9IYiy ]oQ9<8>9и/и/;/_/w+2.+2_;9_;9_;9_;9<_;9Eи.I0167&'67&'4&6%67.'4'6&&'6767&54?67&'&#&'#&'5&'"'67&'&547632>54.#"2#".54>'7,3 3%/0),7=*'0*+3.22'Q YfT,1'').UfY Z98 "2 B2;F_ XB?2C 3" 894ihgikcekS[XVWXZ#ejpMcNTvJKr?VlLWW7p jk%n^*V{ww[11[ ww{V)\#fnnd-#JM 7B/""0C7 NK",dnnf#ghhggggUWWXXWWUd %+A]A)9IYiy ]9и/"и"// + и/ 9013!'#!52#"62#".54>" h9|M463%&$$5 O Dn; $$$$ / /0133'554#$/[QwGSGUW GJG$Fbm67654'&'67632!!#5!#5!5!5&'&'&'&54767676323276767654'&'&'&#"!5&'&'&'&54767&#"32Z&&&'Lh`TVDE$##$E@Z-<81VDE$##$E@ZNfbR18+../:9C=7/##"-<J81,/##/5?G5>+../:9CB9*5;AB;5**5;BA;5L##%CEVUb_UVE@( %CEVU_bUVE@(##,+.<;AB;<./9BUb_UD  u8CU_bUC8+.<;BA;<./Ew3eq&#"327&'&476%3276767654'&'&'&"%'#"'&'#"'&'&'&5476767632'%'676326764'&=<@x.+0.(B=?>=-&& ,&%,D6?=?+,/*??zG]3"D"&%%A=_V`ZZ""V`ZZ^;D"&&$AB[X]:3:΂>] [Z:3!$"2.*?:CDr1*8>]^A47>\\]W@8-.=)%%%%'>HS]ZY^XAA&% P^Ȗ9 % P%4:CA<.*(2:<2GwB^n67632'%'#"'&'!!#5!5!5&'&'&'&54767676323276767654'&'&'&#"67654'&'&#"327&'&5476"X]:3:]3"D"&%#C:bV`]W%!-<81VDE$##$E@ZNfbR"-##-D6>>?+,/*??=@!##8BJ2>+../:9CD6-&&% P^29!$HS\[Y[VF=*%%  %CEVU_bUVE@(##}6AUb_UA6-.=]ZY^Bb2R!!#5!5!5&'&'&'&5476767632'%'"3276767654'&'&'&4.(E$##$E@Z-<81VDE$##$E@ZNf:4:]|G5>+../:9CG5>+../:9~(EVUb_UVE@( %CEVU_bUVE@(# P^29`+.<;BA;<./+.<;AB;<./ /M#"'&'&'&54767676327'7'%'276767654'&'&'&"(F3"D"&%#C:bV`ZZ^;D"&&$AB[X]:3G9:]:F=~=<.,/*??z?<.+.(!$HS\[Y[VF=*%%'>HS]ZY^XAA&% iiD^29i..=+../:9CG5>+../:9 \2:a(EVUb_UVE@( %CEVU_bUTG(Hij:ο\ij+.<;BA;<./+.<;AB;<./4/O!!#"'&'&'&5476767675!5!' 276767654'&'&'&#"<-Z@E$##$EDVRbfNZ@E$##$EDV18kbbjC9:/..+>5GC9:/..+>5疑 (@EVU_bUVEC%##(@EVUb_UVEC% kajP/.<;BA;<.+/.<;AB;<.+ /O####"'&'&'&5476767632333'7 '%3276767654'&'&'&#"ܖU (@EVU_bUVEC%##(@EVUb_UVEC% Uܭkaj/.<;BA;<.+/.<;AB;<.+<-Z@E$##$EDVRbfNZ@E$##$EDV18kjC9:/..+>5GC9:/..+>54;2"'&'&'&5476767"327>7654'&'&'&RUEG"##"GEURRUEG"##"GEUC9;\.+>6FC9;\.+>6#&BIRUb_URIB&##&BIRU_bURIB&s\<;BA;<.+\<;AB;<.+42"'&'&'&5476767RUEG"##"GEURRUEG"##"GEU#&BIRUb_URIB&##&BIRU_bURIB&J;"276767654'&'&'&2"'&'&'&5476767R#$$#R#$$=>3443>==>3443>"$)($##$()$"06"@21.2@?FI?@21.5="$)($##$()$""$)($&#$()$'R 5%%%xr6׊eMM^xx)7654'&'575##'&54767'5!nL^A>..>A^L܄bNC#FF#CNbr*NJ!'11'!JN*MI<77aZ% NT>%  #HH  ")mROeb     0         $&$  ' D"&%  $ #  mR )Ky           V!Er26767654'&'."#"'%"'&'&'&54767676;27>764'.'&+"'&'&'&547676762%632$"26767654'&'&.&&.&m,mQjP (!N!"(!'CVf& &bZC'!("!N!( PjoQm,.&&.&q    l?W,># "#" "  " "#" #>,W?~    lOYx3!#!"'&'&'&547676?6767676'&'&'&#"#"'&'&'&547>763276;%326767654'&'&'&#"6767654'&'&'&#"32eOuRd2  HH#   %>TN  +Za>%#+$ 4$$$+$ 's   *    * OK) Rd# !#& "*"D '  ""! 2   T   :      IZx-4H67&'&'&+"'&'&'&476767632%632 #"'%#"'&'&'&54767676;276276767654'&'&'&"276767654'&'&'&""'&'&'&547676762"'&'&'&547676762'&'&'&547654'&'&'&";276-&#"+"276767654'&5476%327%&"'&'&476762I  Q\C--%("(/*0.,+"( /X]\9<\X/"$)0*3')"* %1*0CR[        22 2 2 2 %'   &J  &%C\d#_*]OhXC%&  J&   O]*       ")&`&"'$"/' <%ZS  % SZ%< /'* "%5"-($# ;8\= !  !  " /VC "  !  !  [uV/+    V^n3276767654'&'&'&#"&'&5476767632#"'.54767&54732#"#"676767'&#"'67654 ozwbd011.f_zx|wbd011,k9995ulsp:995un*D$lQ$" 6*D?"5'K(2- #%>   :7 331cdvwwqi`4331cdvwxD>mwn<;;8rowp:;;BV0/+"8:D@*|sa  -F(7 "*=8&0!2   1-5$& 6:B4V^,Ji&'&'%&'&"632%676767654$2"'&'&'&5476767"3276767654'&'&'&'2#"'&'&'&54767676?!*$ 1$-+h+-$F3782* !?1 $> > 9|wbd0111c`zwbd011.f_zxsp:995unsp:995ulwIP"2-.$  "" PI $.-2!v   31cdvwzwcaf31cdvwwqi`43d;8rowp:;;8rown<;x,A-57'36%33#3#!2#!3#3##$'#7$@d5{sVd]F0 0F]dVs{5⒒d@( jPP,PP` 0 ")- !676762!"'&'&'&54!X$#R#+/RFF$#R#$1Sh,  k-"s!|K476?6763&'&'&547632676767654'&7632!54'&'&76'&&#"'&/&'&'&#"#"'&'&/&'&#"&'&'&?6'&'#"'&'&#"!'476/654'&76'327654'&'&327654'&/%4&)"$0JK&  $)7    %1'# #6 +-L __^/s4* 1( .266 |/(1   \   #:7  lS&   x71]% /~[#<$  o_%?,: *(;Y)$X$+|=L!6CX&PY89Do6 b'n2  83eF] 4T&  &  /50$?- 1@& 3l K  C"P1 :07@D:5XI6.D3[+-1:   q/A8   g+jl9Lp{7654'"'&#"+"'&54?67676763276323273#5%6767'&#"6"/67#"27632327654'73654'676547&p/l0&J!cS%YE]{@C"$4>-;% ,(6Y>m!N$X6"/,(4sS?X$U>"sJ?K(`./4+2K2.0>S Zp0+1^' ;cs  /^"|Y/ 428ۇϕl%%ot5oA='Y$ aT* ''G+- %_kj~r}jL`І|\gK@/.85c($")3SZ67654/##3276?%%54'654'36767632#"'&54767632'%;66I   }g A6qn       -> 9@  H67; zh| 9 >6!q     B5> '-EL4'&'&/767675'7! !'!654'!4'!!$4767>2"&'&'!654' 33 ^^^RXI#J2VlP# ~!88!~ Uppph,p<((zd")3SZ&'&#"227654'&'''%'654.#"65&'&'&547632#"'&'&6#"%  I66;o |>A%6!q       9  ;76H    |h> 96qm      BX{[#C'%%.'&"27>7%$6%"'&'&'&47676762%'2&%k      Aڙ> >dIID`qS   SqGYq > q)&%$64'%%&'&'&"27676&22"k**!q``q!3W 2327632#"'&'&5476'( > !~GH ".4F+@xH )0$'*' 27277632#"'&'&5476'( e` }{*279HFb@yJL 1 -A  ' 7 Ɏ877Ɏ77ɍ8ɍ? tt7tt7t7tt7uB2632#"'&'#"'&54767'&54763267632676 Q   x L$3 z(   6X3  6*=P*> "#  Q26#"'#"'&'#'&'#"'&547&'&54767&&5476326763276T 디% $$YyX$ zc0 + j :  (̢1#: _& #- Խ =1 '2ĺ pD #!!!!!%!!!!!!!!#!5!36HVBBXBBUHVPBXyBpD !!!!!!""p"p"#pD35#7!!#!5!3rrsrspD!!%!!!!!!r"p"#p"#Rb !!#!5!3ppEU l3!!'#'!!#!!3!5@,r,,_ r,,_>v #!!!!!'!!!!!!!!#!5!3hm_|P_H_pDQ#"#3;54'&'&'!"3276767653#4'&'&'&+3!52767>5{dZYIB,$22$*DE]Vh{%'GC_Rl|lR_CIJ{hV]ED*$22$,BF\Zd{%'GC_RllR_CIJ&%IB`Oo|oO\FG'$zdZ\GB+%22%+BIdz$'GF\OooO`BH&&{dZ\GB+%22%+BId  #!! !!! 373#'7#ZAA:Llحmllmzlmllm|}}|d d}cT`C54'&54762327632#"'&+"'&5476=#"#"'&476323(L,68x86,L zFvd0000dvFz L,68x86,L zFvd0000dvFz zFvd0000dvFz L,68x86,L yFvd0110dvFy L,68x86,LV^&'##"&'&'&4767>32367675&'&'.5467676236767>32#"&'&'&'#"'&'.546767675&   R.-R  R-.R "  *!""! ((\(( !""!#%   " R.-R  R-.R    %#!""! ((\(( !""!**!""! ((\(( !""!#%    R.-R  R-.R "   %#!""! ((\(( !""!*  " R.-R  R-.R   Sa4'&'&'&'.54767676322767676767632#"'&'&'&'&'&#"'&'&'&5476767676765"#"'&'&'&5476767632($ ((& :.:806$&& )D+:!  '228:/3&$$&3/:822'  )2/@!  '&$6/r/6$&'  '?03'  &d8:02&!$&20:=-2& (20C,7"  &d8:02& $&20:=-2& (10?!  '&$6/r/6$&'  'D+:!  '228:/3&$$&3/:822'  )2/@' ((& :.:806$&& (T`0267632#"'&'&'!&'&'&54676763267632#"'&'#"'&'&'&5476767!6767632#"'&'"'&'&'&54767#"'&'&'&5476767632!#"'&'&'&54767#"'&'&'&476767632&'&5476767632!#"'.'&5476767632&'&54767676Z   ( &            <   4          % (      (   2     6           %    <    %  (   W_276767653"4'&'&'&Wsp:995ullu599:ps;8rown<;;j>-'O^__^Oq44H4"hdd0!% %!-@jjjk**37'7 #'xxxx.xx.x..x  pD #'!5!73!GFdFGrEGdGErFGqFGdGFqGEd@L     - FOFc,OO,cFd,PO,dGOP T` '!%%%!%% % -wD{wwf#w%f{wwy||y{xxf#w%f{wwxEy||y % %  Zp/AppA/}}ET`     - Zq NqqN  NrqN qrT`% % -ZyllylyyT`%% %% -ZtGcVGttGVcGGstGWcGtsGcpD/3%!!%#'''%!5!%777xo:U.cF.d;UǩoxoU:e.Ec.U9oE.f:UūoxoU9g.Ff.U:oxo9U. 54'&5476276767632#"#"#"323232#"'&'&/"'&5476=&'&'#"'&'&547676323232?&547'&#"#"#"'&'&54767632676'K,68x86,L qA'C<4GW>L d  f L>WG4L d  d L>WG4L d  f L>WG4L d  d L>WG4 +F$H$F+ > ;<5 AcJ2QD++DQ2J (5H,'9,J&0f) T|\`j4OO7g`\|T 'g/& H,9',I4( (3J,&9-H &0f) T|\`j4OO4j`\|T 'g/&J,9',H5(""'!$(:UJJU:($!'""nF"276767654'&'&'767632#"'#"'&'&'&'#"'&'&'&5476767#"'&'&'&5476767632&'&5476767632=>3443>==>3443>x>%85670-)-%8/>0!-)-02;>/8%0 )-02;>/8%-'&$>/:#-)-02;>/;))-02;>/8%- 06:4/.&"./4;=16'+&1,"%&!6'+&./4:>1:#"$./4:>16'+,4:>16'+&./4;=1nFn%#"'&'&'&5476767#"'&'&'&5476767632&'&54767676267632#"'#"'&'&'&27654'&'&'&"67&'&'&'276767&54767'&'&#"276767654'&/7676767654'&'&'&#"Z 0%8/>;20-)-!0>/8%-)0-<1:3%>-%8/|/8%->%85670-)-%8/>0!-)-02;>/8%0 M=  H  C# B/g  H *x#$   -7 H  g/B    $#x*%",1&+'61=;4/."&./4:>16'.5 1=;4/.&&./4;=1 5+'61>:4/.&"./4;=16'+&1,"8_/$   $/_c.,b" $#  !I?30C !'#  x!  #$ "b,.$  #'! C03?I T`-[3b &'#"'&'&'&547676763267'&#"327%327676764'&'.#"7632#"'&'&54767676324676762676322##"'&'"'&'.5#"'&'&'&54767"'&'&'&54767676&'&'&'&'&'67676?&'32767677676765&'&'.#"7676767&'&'&/326767674'&'&'67'&'&'&#"67'&'&'&'67676767"276767654'&'&'"'&'&'&54?&'276767654'7654'&'&'&"67'&547676762:   $4 $$ 4$   % !()-+,)$"! ((\(( !"&',+-)(!'7'&"# ,*2% !()-.))$"! ((\(( !"(%*-,*(! #2*&"# "&'     !  4  !   4  g       i 4  !g  4   !     oR#$$#R#$$  8 < c7 < 7    8 < d8 < 6   %),++*) !$3R  R3&!-(-%2(&"#%(.2$( &',+,)) !$3R  R3'! )),,+)$"#%(.2$( "   i !xg   !      %     !  !   g    "$)($##$()$"$  % %% %  V^<\l"276767654'&'&/2#"'&'&'&47676762#"'&'&'&54767676% %-z35++++53z35++++5pWDM69 ;9JHSWDM69 ;9JHSsp:995unsp:995ul}}(.35<;53.((.35;<53.("68MITNLJ;9"68MILJ;9m;8rowp:;;8rown<;}}"327632#"'&'&/#"'&5476=#"'&'&5476763232?'&#"#"'&'&5476763254'&5476276767632#"'&#"27654'&%&'&#"327676%327632 654'&'&#"#"Z*1%85e %ZF\ +m8BS/?JV@6RTXN6@VGB1QB8n* \FZ% e53e!&ZFZ *n8BS/?JV@6RR6@VGB1QB8m+ \FZ&!e3*1%8~> +F$$> +F$H ;<5 A~ ;<5 A+DQ2J (5H,'9,J&0f) T|\`j4OO7g`\|T 'g/& H,9',I4( (3J,&9-H &0f) T|\`j4OO4j`\|T 'g/&J,9',H5(G+DQ2J$(:U$(:U3!'""!'""A''7'753'75377537'7'#5''#5'7#5'7'7<B-OS2#"327676765!"'&54$3!57!##"'&'&'&54767676#   ?>I-7އv3T%+>CPNHiDG-2/&D9  . !-8=DD_o2{jTc@F'%.36<@M137+4V52&'&547676762"'&'&'&5476767Zy*,&&%1]~|45,--,54|45,--,5(+&014|d΃fz410&$(F*.46=<64.**.46<=64.*Nf%C&%&547676762476767622"'&'&'&5476767Z{&%1-l./&%%&/.l-1%&|45,--,54|45,--,5ġS410&$%%1/66/1%%$&014R*.46=<64.**.46<=64.*nF(%%&%&54767676247676762Z_75EAAD6556DAAE57_qKFD6454FCNNCF4546DFKoX'#"'&'&'&547676763"'&'&'&5476767632rJFD6464FBNNBF4646DFJp`84F@NLBD6466D@NLBD66^~* i654'&#"632327632!"'&5!267&'&#"#"'&54763247632327654'&547632#" 6+Jo.^V|;-˙it36?̺fQMeEJS?(*$ s]vh2K)*NL13^v:Mc*ZeC03N35%&-Kt\K%9S >BWN=!$?$8(F!5{^?ZN676 547&'&327#"'#536767&'&'&5432&5476323254'&5432?-BO>Bv06('K`dC+(k$'eM?$#=Hb B=)+8=.m9eb PB>$3g:=TEB7WPfG+1KHP<Ff#&T'0P+A'<}DC/' 5276767654'&'4rceNS((((`hm@DDF/CD}>C/GFCG !&547>2;!!676PJKBA<! !$ ! "#{! !{54&#">32!5!NKKggɈXԺShu6CO*.qL7hlN C,A7%D%xN 6Ÿ7/8/ܸ7и/9*ܸ1A11]A1)191I1Y1i1y1111111 ]49.+. + !'+!+9*'!901! 4$32%4&#">32+32#"&'32654&'>NKKggI^_x;JKMXd][]@j^NreL7hA}|%/).-5316 0_pxN S//ܸи/99ܸ+ + 01! 4$32#!!535#!NKKggK"L7hߣ5xN *+!+A!!]A!)!9!I!Y!i!y!!!!!!! ]+ *+ +'$+'901! 4$32>32#"&'32654&#"5!5!NKKggiw3S[[S;ucW׿!=VL7h(F?>F(=$\xN 21++#+A]A)9IYiy ]A&6FVfv ]A]A##]A#)#9#I#Y#i#y####### ])9/9 +  + +01! 4$32#"&54632"32654&#">325.NKKgg766666676̹Ȣ@nqg1iaQL7hI@@II@@= ;g*xN + + 01! 4$32%!!5!NKKgg.L7h*xN 1=++ +A]A)9IYiy ]A&6FVfv ]A]A ]A ) 9 I Y i y ]#9/9;9;/A;;]A;);9;I;Y;i;y;;;;;;; ]5+ )+ +28+201! 4$32#"&5463232654&'>54&#"2#"&546NKKgg=;=>?<;=p$f˻e#q0330233L7h;99;;::G]| pS{{Sp |-..-.-.-xN &21+-'+-+A]A)9IYiy ]A&6FVfv ]A]9#9A'']A')'9'I'Y'i'y''''''' ]+ + *0+*01! 4$32254&#"3267#"&'4632#"&NKKgg͸Ȣ?nrf3i_O76588567L7h !;f)HBBHHAAxN $0+(+("+".+и/A]A)9IYiy ]A..]A.).9.I.Y.i.y....... ] /++01! 4$32!5##7#"&54632"32654&NKKggِ&*''*)'')L7h*& nmmn =(F  76767654'&'&'!5%3!!  '&'&'&5476767̆mo5885om4mo5885omP\|~}~~}>@@>}~~}> =A_  76767654'&'&'!!5676767654'&#"5>32  '&'&'&5476767̆mo5885om4mo5885om)4 \)NBCkPQT`aFnoIkl\|~}~~}>@@>}~~}> =Om  76767654'&'&'#"'&'5327654'&+5327654&#"567632  '&'&'&5476767̆mo5885om4mo5885omttBAzyLOPUDWOPJJx??zBLL\R[PGjkr=\|~}~~}>@@>}~~}> = +I  76767654'&'&'!33##!5  '&'&'&5476767̆mo5885om4mo5885omh*˪+\|~}~~}>@@>}~~}> =?]  76767654'&'&'!!67632#"&'532654&#"  '&'&'&5476767̆mo5885om4mo5885omz##$#utKSLHMVA@AC\|~}~~}>@@>}~~}> =,Jh  76767654'&'&'"327654'&.#"67632#"'&7632  '&'&'&5476767̆mo5885om4mo5885oml@@lm@??@=|}~~}>@@>}~~}> =$B  76767654'&'&'!#!  '&'&'&5476767̆mo5885om4mo5885om\N\|~}~~}>@@>}~~}> =+BNl  76767654'&'&'"27654'&%.546  &54632654&#"  '&'&'&5476767̆mo5885om4mo5885omsBBBBCBBBhtdthuABtԄ9tihvvhit0\|~=>>>kl>=EggOOss\hh\]hh@>}~~}>@@>}~~}> =<Lj  76767654'&'&'532767#"'&54632#"'&27654'&#"  '&'&'&5476767̆mo5885om4mo5885om=|m@??@ml@@@@J\|~}~~}>@@>}~~}> =+8Ca  76767654'&'&'"32654'.  7!5##7  '&'&'&5476767̆mo5885om4mo5885omT,+VUVV++2QPPQΠP3x\|~-,g#&%q @>}~~}>@@>}~~}> = (!5!#%  '&'&'&5476767{\|~}~~}>@@>}~~}> =#A676767654'&#"67632!5  '&'&'&5476767lkIonFa`TULkCBN)\\|~}~~}>@@>}~~}> =1O>54'&#"67632+32#"&'327654'&  '&'&'&5476767irklGPQ\\LLBz??xJJPOWDUPOLyzAB2\|~}~~}>@@>}~~}> = +! !335#$  '&'&'&5476767hno\|~}~~}>@@>}~~}> =!?67632#"'&'32654'&#"!5  '&'&'&5476767CA@AVMLHSKtu#$##\|~}~~}>@@>}~~}> =,J2#"&5476.#"32654'&#"67632  '&'&'&5476767Pm@??@ml@@C|=⇆nmϵihVGG/ TU<|=\|~}~~}>@@>}~~}> =$!35$  '&'&'&5476767>h\|~}~~}>@@>}~~}> = $0N2"'&476' 654'&'>54& 74632#"&  '&'&'&5476767YtBBBCBBBB/tBAuhtt-tihvvhit0\|~lk>>>=>=EssOOgg]hh]\hh@>}~~}>@@>}~~}> =.L%3276'&#"32767#"&'"'&547632  '&'&'&5476767!C>?=ↆmmдhiVHG. TU<|=Al@@@@lm@??@\|~}~~}>@@>}~~}> = %C2#"&5476$  '!5##7  '&'&'&5476767e22dedd22TUUTBU¡\|~-/g#&%q @>}~~}>@@>}~~}>uPj !!5!!Pp#@pppt 7%FN4NGuP85 zD<22pJJt '-ZKFGNuP!!u\lE>~~>uu2"&'&'&5476?!".'&47>3!'&'&54767>2 p4, ,$ $, ,42p "2" puP8!5! %JZPJJuP8!5! %JHJJuP8 #3#3#3!!5 xx<<oJpppJJuP8 55!#3#3#3oPxx<<΄ΊXXXXuP8!!5 %JJJPD! 6>l>>PD ! DR>l>>P  BlvvuPb3!5 5!"'&'&'&u##+*15J1*+##0+*%!JJ!%*+uP847676763!5 5!"u##+*15J1*+##0+*%!JJ!%*+0!! ^r{VXeoouP855!Dq΄Ξ0uj%5!!53  !<9h9>uj%5!!53  !<9h9>+Z !73#57!!+ Id&+ъ2&+Z 5!'53#'!!!+dI|&22 !'!'!53 !Odcndh 2 3#5!7!!! ndnd;ch dd !53#'5!'! !]n2n22r-hJdc;dJdd 7!573#5!! !2+2n2nr-hLJd;cdJ<!6767632#"'&'&'! <'CZmo~yti^Z...*^Vqo~yti^?)X6nGCZ.//+]Yonzqi_X0//+]>Iʞ BP "&*.37#37#37#37#5!!!!3'#3'#3'#3'#<<< 7&#"7'7 !%*BF8WU{FC*9oX:WubP 55!5!!'!XXddPRt '327'' !!iFB*8X:*CF9XUpt>2%&#"6767&'&"67632&'&547676767tBEHY'#&N'$X$)./,0+""" /%Hp*G&/$##*0,0.+"W!'&'&#'ZGGCuaP/4767!"!47676763"'&'&'&5!3!&'&5P%T)#$"/*11*/"X$#)%eeZ'&$(0+.!"-+0($&'Zet2&'&'&'&54767#"'&'2767&'&'32t)H% X"""+0,0-+"$'N&#/'YHEBCGGZ'!&'&'$W"+.0,0*##"/&GsPX+B6%"'&'&'&547676$47676762"'&'&'&'&'&547676762$/+z > _$#R#af#R#) >xbQu R$'68"   vc<.676767632#"'&'&'&%&'&54767&'&5476A ''+/54<3o8n23'9%%bb%&:?$ fLLf#&#/:&'+-23-+'rr'+-32-+V2e"'&'.54?654'&'&'&#!"#!".4?64/&4676763!23!276767654/&546767622 Z rrd Z   c     c  2g"'&'.54?654'&'&'&+"#!".4764'&4676763!2;276767654/&546767622pW\xj  \W    4  uP^+#76767&'&/3#6767!5!!5!&'&'PSJl R&GG&R lHSi*n: :n**OUä'66'U=;JHd)))dHJ;=#u ! ! j.u-1 [ \& [ [& \ \,@ ,,+ ,,@' , ,, ,,@' , ,,+' , ,,@' ,' , ,@ ,@' , ,@' , ,@' ,' , ,@' , ,@' ,' , ,@' ,' , ,@' ,' ,' , + ,@' , ,+' , ,@' ,' , ,+' , ,@' ,' , ,+' ,' , ,@' ,' ,' , @'  ,@' ,'  ,@' ,'  ,@' ,' ,'  ,@' ,'  ,@' ,' ,'  ,@' ,' ,'  ,@' ,' ,' ,'   ,@' , ,+' , ,@' ,' , ,' , ,@' ,' , ,+' ,' , ,@' ,' ,' , @'  ,@' ,'  ,@' ,'  ,@' ,' ,'  ,@' ,'  ,@' ,' ,'  ,@' ,' ,'  ,@' ,' ,' ,'  +'  ,@' ,'  ,+' ,'  ,@' ,' ,'  ,+' ,'  ,@' ,' ,'  ,+' ,' ,'  ,@' ,' ,' ,'  @' '  ,@' ,' '  ,@' ,' '  ,@' ,' ,' '  ,@' ,' '  ,@' ,' ,' '  ,@' ,' ,' '  ,@' ,' ,' ,' '  ,p ,p,p@' , ,p,p+' , ,p,p@' ,' , ,p,p' , ,p,p@' ,' , ,p,p+' ,' , ,p,p@' ,' ,' , ,p,p@'  ,p,p@' ,'  ,p,p@' ,'  ,p,p@' ,' ,'  ,p,p@' ,'  ,p,p@' ,' ,'  ,p,p@' ,' ,'  ,p,p@' ,' ,' ,'  ,p,p+'  ,p,p@' ,'  ,p,p+' ,'  ,p,p@' ,' ,'  ,p,p+' ,'  ,p,p@' ,' ,'  ,p,p+' ,' ,'  ,p,p@' ,' ,' ,'  ,p,p@' '  ,p,p@' ,' '  ,p,p@' ,' '  ,p,p@' ,' ,' '  ,p,p@' ,' '  ,p,p@' ,' ,' '  ,p,p@' ,' ,' '  ,p,p@' ,' ,' ,' '  ,p,p'  ,p,p@' ,'  ,p,p+' ,'  ,p,p@' ,' ,'  ,p,p' ,'  ,p,p@' ,' ,'  ,p,p+' ,' ,'  ,p,p@' ,' ,' ,'  ,p,p@' '  ,p,p@' ,' '  ,p,p@' ,' '  ,p,p@' ,' ,' '  ,p,p@' ,' '  ,p,p@' ,' ,' '  ,p,p@' ,' ,' '  ,p,p@' ,' ,' ,' '  ,p,p+' '  ,p,p@' ,' '  ,p,p+' ,' '  ,p,p@' ,' ,' '  ,p,p+' ,' '  ,p,p@' ,' ,' '  ,p,p+' ,' ,' '  ,p,p@' ,' ,' ,' '  ,p,p@' ' '  ,p,p@' ,' ' '  ,p,p@' ,' ' '  ,p,p@' ,' ,' ' '  ,p,p@' ,' ' '  ,p,p@' ,' ,' ' '  ,p,p@' ,' ,' ' '  ,p,p@' ,' ,' ,' ' '  ,pp p,p@' , p,p+' , p,p@' ,' , p,p' , p,p@' ,' , p,p+' ,' , p,p@' ,' ,' , pp@'  p,p@' ,'  p,p@' ,'  p,p@' ,' ,'  p,p@' ,'  p,p@' ,' ,'  p,p@' ,' ,'  p,p@' ,' ,' ,'  pp+'  p,p@' ,'  p,p+' ,'  p,p@' ,' ,'  p,p+' ,'  p,p@' ,' ,'  p,p+' ,' ,'  p,p@' ,' ,' ,'  pp@' '  p,p@' ,' '  p,p@' ,' '  p,p@' ,' ,' '  p,p@' ,' '  p,p@' ,' ,' '  p,p@' ,' ,' '  p,p@' ,' ,' ,' '  pp'  p,p@' ,'  p,p+' ,'  p,p@' ,' ,'  p,p' ,'  p,p@' ,' ,'  p,p+' ,' ,'  p,p@' ,' ,' ,'  pp@' '  p,p@' ,' '  p,p@' ,' '  p,p@' ,' ,' '  p,p@' ,' '  p,p@' ,' ,' '  p,p@' ,' ,' '  p,p@' ,' ,' ,' '  pp+' '  p,p@' ,' '  p,p+' ,' '  p,p@' ,' ,' '  p,p+' ,' '  p,p@' ,' ,' '  p,p+' ,' ,' '  p,p@' ,' ,' ,' '  pp@' ' '  p,p@' ,' ' '  p,p@' ,' ' '  p,p@' ,' ,' ' '  p,p@' ,' ' '  p,p@' ,' ,' ' '  p,p@' ,' ,' ' '  p,p@' ,' ,' ,' ' '  p,p' ,p p,p@' ,' ,p p,p+' ,' ,p p,p@' ,' ,' ,p p,p' ,' ,p p,p@' ,' ,' ,p p,p+' ,' ,' ,p p,p@' ,' ,' ,' ,p p,p@' ' ,p p,p@' ,' ' ,p p,p@' ,' ' ,p p,p@' ,' ,' ' ,p p,p@' ,' ' ,p p,p@' ,' ,' ' ,p p,p@' ,' ,' ' ,p p,p@' ,' ,' ,' ' ,p p,p+' ' ,p p,p@' ,' ' ,p p,p+' ,' ' ,p p,p@' ,' ,' ' ,p p,p+' ,' ' ,p p,p@' ,' ,' ' ,p p,p+' ,' ,' ' ,p p,p@' ,' ,' ,' ' ,p p,p@' ' ' ,p p,p@' ,' ' ' ,p p,p@' ,' ' ' ,p p,p@' ,' ,' ' ' ,p p,p@' ,' ' ' ,p p,p@' ,' ,' ' ' ,p p,p@' ,' ,' ' ' ,p p,p@' ,' ,' ,' ' ' ,p p,p' ' ,p p,p@' ,' ' ,p p,p+' ,' ' ,p p,p@' ,' ,' ' ,p p,p' ,' ' ,p p,p@' ,' ,' ' ,p p,p+' ,' ,' ' ,p p,p@' ,' ,' ,' ' ,p p,p@' ' ' ,p p,p@' ,' ' ' ,p p,p@' ,' ' ' ,p p,p@' ,' ,' ' ' ,p p,p@' ,' ' ' ,p p,p@' ,' ,' ' ' ,p p,p@' ,' ,' ' ' ,p p,p@' ,' ,' ,' ' ' ,p p,p+' ' ' ,p p,p@' ,' ' ' ,p p,p+' ,' ' ' ,p p,p@' ,' ,' ' ' ,p p,p+' ,' ' ' ,p p,p@' ,' ,' ' ' ,p p,p+' ,' ,' ' ' ,p p,p@' ,' ,' ,' ' ' ,p p,p@' ' ' ' ,p p,p@' ,' ' ' ' ,p p,p@' ,' ' ' ' ,p p,p@' ,' ,' ' ' ' ,p p,p@' ,' ' ' ' ,p p,p@' ,' ,' ' ' ' ,p p,p@' ,' ,' ' ' ' ,p p,p@' ,' ,' ,' ' ' ' ,p pg  5  5'' 3 5j'  #3 < { 'e   ''6UU'e  '''cUU'e  '''cUU'f   'fU::U'f   'fU8U#u  u-:O :!!" 767>54'&'&'&$  $'&'&547676zeig44hi}&eig44hlzVGFFGrGFFG.48fj~fh4666fj}fk34ūʪ:O6B" 767>54'&'&'&$  $'&'&547676!!#!5!zeig44hi}&eig44hlzVGFFGrGFFG  48fj~fh4666fj}fk34ūʪ  :O6B" 767>54'&'&'&$  $'&'&547676   ' zeig44hi}&eig44hlzVGFFGrGFFGsqrq48fj~fh4666fj}fk34ūʪqrqs3 z'''.c#5!67676&!!'&'7767:# mDK6I%'&'7767'&'&'&54767676767676&&'&'67k?J " mDK6>>?J " mDK6 ՜U5O9:[>?JKVXKK>? 'U5O9:[":;PG*# nb11S$ .D77'6767&'&&'&'&'&5#'76767676767657'#, ]d)B;6KCm H6-*%'>CX(+A<6KDm  \9[:9O5U,*7<7]Y]ETUa[h.c'!!'7676?!!76767&'&!! B<6KDl  A<6KDl 6[:9O5Tض[:9O5UN.c;?%676764'&'&'76767&'&636"''7676?6!!YFI$$$&DTlA<6KDm "A-4//N&N.+:DH!A<6KDm . T&FIWWY]DU$[:9O5U,N/,95\N):[:9O5U|.5;!!#"'&''$76?7>54'&#"76767&'&676 Ol^?Ca6-A<6KDm WH74 A<6KDm ,SWM,;N6(8[:9O5UAG$eю [:9O5U|$ .cSW67>54'.'&&767676&'&'776?&'&'&'&4767676!!A8+.N&N//44//N&N./( mDK6ÄkTFÄkTF32326#"'&'&'&#"5>32326 5j`k^Xbian ^Vgj`k ^Xbk`k^VfUPE:=MSNE;=KPE:=LTPE:>KPNC ;B#"'&'&'&#"5>32326#"'&'&'&#"5>32326 5j`k^Xbian ^Vgj`k ^Xbk`k^VdUPE:=MSNE;=KPE:=LTPE:>KPN %!!'7!5!7%5O’OK>uMc u̵N5!!'7!5!75%O’OK>;ju 3:3267#"'3267#"''7&#"5>327&#"5>32 5C2'Vgj`@L&zOVgj`kFF2'Xbk`?M&zOXbiajE KUPEq,KUPE:E LTPEs+MSNE8PN 3:3267#"'3267#"''7&#"5>327&#"5>3255%C2'Vgj`@L&zOVgj`kFF2'Xbk`?M&zOXbiajE KUPEq,KUPE:E LTPEs+MSNE85!5!-5 %%\ri!5!!5!%%55%\iw:&#"'&/&#"5>32326!! 5j`k^Xbian^VePE: =MSNE;=KFPN:&#"'&/&#"5>32326!!55%j`k^Xbian^VePE: =MSNE;=KF ")#"'&/&#"5>32326-5 %%j`k^Xbian^VePE: =MSNE;=Ko i ")#"'&/&#"5>32326%%55%j`k^Xbian^VgPE: =MSNE;=KoiB!!!!55% %%|3WiB!5!5 %%55%Ei,55%-5 %%vi,5%%5%%55%QTi{ 55<1 5 5<1LJ113#55<b13#5 5<b1LJ11m!5!!5!5`NPm5!5!-5:[ 555PPNP[55-5#;p$.#"#"&'532767676325gV^ naibX^k`jUK=;ENSM=:EPKNPp$.#"#"&'53276767632-5gV^ naibX^k`jUK=;ENSM=:EPK%,!!!!.#"#"&'532767676325gV^ naibX^k`j|UK=;ENSM=:EP[NP%,!!!!.#"#"&'53276767632-5gV^ naibX^k`j|UK=;ENSM=:EP[-@ $!!!5!676762!!&'&'&!!A%0M 6WYYV7 N0/H7'H?a93[2332[0~~K|}CMuuUSx|y 7!!!'7!%5$>~~K|}CMuuUSx|]a!5!5%5$-&obn%$ffuW]a!5!5%$bo&-nuf$%a %5$!!!'7!5!7!5!7-&ob,JXv2Jv2D%$ffuWXuWuWa %$!!!'7!5!7!5!7bo&-,JXv2Jv2Duf$%tuWuW;F#"'&'&'&#"5>32326#"'&'&'&#"5>32326%5$j`k^Xbian ^Vgj`s ^Xbk`k^Vg-&ob PE:=MSNE;=KPE:=LTPE:>KR%$ffuW;F#"'&'&'&#"5>32326#"'&'&'&#"5>32326%$j`k^Xbian ^Vgj`s ^Xbk`k^Vebo&- PE:=MSNE;=KPE:=LTPE:>KRuf$%y3>3267#"'3267#"''7&#"5>327&#"5>32%5$C2'Vgj`@L&zOVgj`kFF2'Xbk`?M&zOXbiaj-&obE KUPEq,KUPE:E LTPEs+MSNE8%$ffuWy3>3267#"'3267#"''7&#"5>327&#"5>32%$C2'Vgj`@L&zOVgj`kFF2'Xbk`?M&zOXbiajbo&-E KUPEq,KUPE:E LTPEs+MSNE8uf$%q5%5 5P#PPNq55%PfP%!%!!W7 r%!!!W7 %!!,7r=XyKL')L23&fn!10^mR01x<9N}|6?--gfX֔-@@Xsp))\CC݊'0!7#"''7&7676!37&'&#"6763  3276?/Z/&| \ccrMz^w:&"U} ;shg^5xwwt v\&OeTSetf./+l^j^\\o'.[%IHm)B?133!;!"'#&7#3=2\2oIj*"\2=3ÞN:[>J;)0( )7676'&'&#"!!67632!!O  .pQQk/fudddnNM,Zgbo77#WVb./ww3J!0!! 3!#!_fy,b7K[-  !!!!7!#-#w>-7A ` !!!!7!0:h70`fZ~!!'?67632%7676#&47gmwpp(u 0zoD2E6;X).=8#?H%*K+!!!!Mn89{?`!!!!fSc+\`V'sj2!$763676'&ss9``5à-;;/xL^f7)L4 j@@TU}dxaEFL7!!7# !226&#"-m,{^^+ނyz^f%32676&#!.+;# !3 Ky{XyLd'fn!a^mRax<9N6')ZgfXXspR\D֔6327'&#"!!dI+=i[M̘Ӏ/j(!/ )"26764!!"3 ! 5477.5476O I +]!5~>fk{AB!L%LFP EO>eqPBfS'@)"(K TK T[KT[KT[KT[KT[KT[X8Y1@ i!g 'k!z/<<2<<220@&""<9<9#"!76763!#"!!!!!#376763S.L#$ $ww.L#$ 22Ψf2$wwDNNWXDN``NWXfb@  K TKT[KT[KT[KT[KT[X8Y1@i gkz /<<<20@!     <9<!!#"!!!!#37>3h9o/KE ^ 2%$7CO``Nfb@ K TKT[KT[KT[KT[KT[X8Y1@  i gk z /<220@   <9<!!!"!!!#37>?#KE /1Ѩ2%)7CO`Nf )-@-* $ .K TK T[KT[KT[KT[KT[KT[X 8Y1@"i-#g* )k#z /<<<<2<<220@5+,-*-!$ $ <9<9</+#"!76763!#"!!!!!!#376763)!S.L#$ $ww.K"# kf2$ww\i9DNNWXDN```NWXf )@  $ *K TK T[KT[KT[KT[KT[KT[X 8Y1@"i#g )k#z /<<<2<<220@.!$ $ <9<9<+#"!76763!!!"!!!!!#376763S.L#$ $wwL#$ 2f2$wwDNNWX)DN``NWX]5#"!#37676;2!!;!"'&547#37654'&x"L#$ 2$vxֺT< q2\\2G-\2)DR`NWXX=m.6N%%X9j=MN#ak&767632!!;!"'&547#37654'&#".#"!"'&'32767654'&/&'&54767632Eu\r2\\2G-\2 !E;:5 5j_f67  _=J8 #osk~5aklti:; o=P9 #@u_]_KgL%%X9j=M? %$)&8 #005   (K8f+2ZZ%49 !Q:e(/VV Ph%)!?676?>54&#"67632 FhFPLja>sedPL)(HOJ+,ndd-+&'>?P1pBqf!#L%f+P@99991<20@"    0000////????]]3#%3#Z/1C10K TX@878Y@++//]]!#w@  91<299990K TX@878Y@(      )9]]'.#"#>3232673#"&j1!$4 _%A#5$'5 ]&@!% @8) =:`:910K TX@878Y@ //]#hG@ 991<90K TX@878Y@/// ]!#'#\3 M@ 991290K TX@878Y@//// ]!373N3@  1290K TX@878Y332673#"&5N QOHj'Ɣ<7=6}!>@ 9910K TX@878Y@ 0000]]!!/!#!#Q###搲\N#.#"#>32 QOHj'Ɣ<7=6}@f4&%!#32767676'&'&#"!!67632/i!N9D`!!3#+"'#7$%3"'"3276Df)7t.mq ::3.@h ]+f/`0cvL9.NX)R'qP> #XKX,Y' YcqX)R' #XqP>NXdu'  #XNXu'  #XKXu' qKXu' q)A)R' (SqP>NXYv' M #X)A,Y' (S Yc[b5m' Vw )t)Au'   (Scu' )u cu'  )ucQ' )u `b>Q' P `e>\u' } Pe>u' 6 Pe>'8 Pc'n )ui'\vp!!pp73267!!"&H8Tcr5_JrX\t 4 !;#"&7mf:f-{ͪ+\ Q_<22wmDwd f+7q9s/) R3 ^;JXf-T3T3\1{+J+w+w+J++3++++J+J)+ub1+ f#?LJmJ{f)??R??V??JJ?X{7d)7ZJ 7X3}R3=\R -^3uHrHrH`L1{1{1{1{1{1{`Jw+w+w+w++++++JJJJJ+?f#f#f#f#f#f#b#LmJmJmJmJ????J?JJJJJ{{{{771{f#1{f#1{f#JLJLJLJL+JJw+mJw+mJw+mJw+mJw+mJJ)J)J)J)+?R+?+?+?+?+?+|?3+R?R?+?++?+?H+?+?+?}@gJJJJJJ VVJ)+?)+)+?ubXubXuc{{{{{{d7{f}+|L.(x#pw+I@w{.X\|3+RV_fQPQQpAVw+j?bJ,uu'C{..*.  .  EZ8 b+ + tJ++\? + +?1{f#+?JJ{{{{{mH1{f#1{f#`b#J)J)3+R?JJJJ.* b+ + tJJ) O.L+?1{f#`b#1{f#1{f#w+mJw+mJ+?+?JJJJ)+?)+?{{ubX+?B/y3E-1{f#w+mJJJJJJJJJ7BKF#q1Z1uCAr)1yw+mJrTs)=7f7KTTKV#m.mHMt7\1_$V/ZH@]j]?x5@V}VVeXg#HEJt_kN?N3gZ?##+R{'j0`]'!\7d7my  *yiS?7z:P?VJi ?# K =+:&WoE6cV=(RjPg01GIkV.s+   X@YAyIa5s= s ) Ty%MKG MAYj$[<;f 8;06v Gww-K0Y({{u);U`J@ T j9;jjofLe7a .:4 9('f1{++1yw++Q+3+1y++8J++w+ubY++Nt7fWgoNs t7Af:W?s6JTp;KjgoB)ZDfgoJgoD5QI@._kDHwo{rw+,GZCLFl*4O^5u/W!YLQ(z(+J+Jw+w++S++ < +c3+++J1{+++ w+++3+++J++Jub+W+lJw + JJ++ d+)f#1?.:vmJ:: ?::J:LE7_)[~?[j<??#?#mJmJ:.:I???: ?:7[CDI+?~ *: *:thQWHzzy3E-RGCDCDRD8" #9XxX7+r:+7++.:".O+.:3J Z9+ ?9+R?3eJZ+: +:QDJLue77+)ew~w~w?6Wz=6Wz=+9+ ?wo+:+r:w~+t:?1{f#1{f#`b#w+mJImHImH.* +:+:JJQHQH#+7+7+7w~J.ZJ+<?K" FG%!\ " .:JHalE@t77bHZLxt8a ?P7::JHHHH rh##E7d.P7rh?(w%/%q%q%#67%%P%6%%7%7%H5'%%p8]wLXbc(bdcJKM(O*BdO-VpOUnOva@0VnOva@7%]?0OeOkO3vuoH@Z00s)00PGOn~G0eVd`L+ai2ZZ0W00H8 g\1{f#+?+?+?JL+J+J+J+E Iw+mJw+mJw+mJw+mJw+mJw+{fJ)+?+?+?+?#+?3+R?3+R?3+R?+++++V?+V?+V?+?+?+?+?JJJJJJJJ++)+?)+)+)+tubXubXubXu>{{;{{1717ddddd+)+)7?Xd7f#{f1{f#1{f#1{f#1{f#1{f#1{f#1{f#1{f#1{f#1{f#1{f#1{f#w+mJw+mJw+mJw+mJw+mJw+mJw+mJw+mJ+? JJJJJJJJJJJJJJPQPQPQPQPQ{{uuuuu7777NNNNNNNN1{1{T<Y{;)t7t7t7t7t7t7U?[</;kffffffff? < p; nWWWWWW?7<H;JJJJJJ"?w < l;gogogogogogogogoq y dDDDDDDDDE < ;9NNt7t7ffWWJJgogoDDNNNNNNNN1{1{T<Y{;)ffffffff? < p; nDDDDDDDDE < ;9NNNNNNN1{1{Ma1{7fffffo.:+}dWWWfWW++4dgogogogogogo)(77 DDDDD 9'V R3R3    '''BN'' ^{^^ qDq JJ JL}LN/)V>u/)3s/s#x} ?>X ? ?->i#0999NYN/-\R>i#0999NYNLddMco_JJV= + -/Jub "L+Nx #=1R ,4 /48?:j+ n8jSWl,l( Q''D3+1{}w+;Zg Qq7++d*FmCzHrH\HrH\HRHHrHHrHRHHir+E+++1  a++ A+J++????7 ?) ?LJV? OX* OXduddu dud\dudududdZZd.ddduud`dd_u_ddddududduZududu76H6666666Hzz6u`ududdud7u71 bZ;ww`,,,,LL)dVR3 VLVLVI[,bb55553n3 \3N /zzZyz``555PPPPWWPPPPPPPPzzzYW  a a C,,,,, C,,,WdOl- x]]ssss,xxxxxxxxxx''''''''''''''''''''''q''''''''''llgg'''''''''''''''''pprppppppppp7p7''''''''''ppppp'''',h,d,,,,+,}}_}} ,,,B,d,,,,,,,,,,},,,dZd2E\,,,,,,,,,,,,,,,,,,,,,,,S,,,,,],,,,,m,,E,,,,A,,,U,,Q,0,,,U,,L,0,C,,X,,B,,X,,,x, ,,,,,,,,,,,,,,1,,,,,,,,,,,X,X,j,, T},y,},),,,,,dEGb  gT VIVVx+5X3ppppR >pTVSTWW0V000002p@TTTTpnnTVaaTT,f,z,z,z,z,xNNx>NnX~#9Uwlfxxxxxxxxxx                    uuuuuuuuuuuuuu++<uusu@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,__::: J33*''''%)^fJ03JR0 7Z1+!?BsL)^!fLfLf f fw](+`3NN@]?xNxKxxNxNxKxKx)xNx)x[x)xxxxbxexexexi=* 79k:;2<&:$&$&$&$&$&$2$7<$8$9u$:$<$F$G$W$Y$Z$\k$$$$$$$$$$$$$$k$k$$$$$$$$$$$$$$$$<$%$&<$'$*$,$.$0$2$4$6$7$8$9k$:$$$<$$$$k$$$$$$$$k$$h$$h%9%:%<%%6%8%:%%%%%&6&&& &"&'&'?@ABC`DDFFFG4HHJKKPLM,NTP0PPQRhRS$STLU8UVWpWX$XYZZ4ZTZt[p[[[[[]4^,^D^\^t^^^^^__```4`L`d`|`bbbccc0ceHe`exeeeeggggghhh4hLhdiiiijj j8jkkkkl l$m m8mPmhmmmmmmnn(n@nXnpnnnnppp0pHp`pxpppppqq q8qPqhqqqqqrst t$t<tTtlttttuu@udu|uuuvvvwww4wLwdw|x xy y$y<yTylyyyztzzzzz{|},}D}\}t}}}}}~~~4~L~d~|~~~~4Ld| $<Tl|8H 4@PPh8($xDLXxPxx40H<, 0H`x 8Ph(@Xp(0H`x(@0H`| $<Tl,D\t4Ld|4H<h0H`xt$P`$( $4HX`0Xh4T(ƀdDȀȼ|ɸ<d̐<͸84τ@Ш0Ѭ(8ӨԄ,@ְ\אXp<ڤ۴`݄l`0t,xPPxt,T|Ll|,Tp4HX@4h<h 8L$8L`,Ht4H\T|$Xlt4Hdp0DXl|,PPl $`t$Pl,H`x<L\l p   |       $  l  l L\8H( tl<0<($(@|  |!l!"x# #$t%(%l%&H&&&'l'(T(d(t(())* *$*<*T*l*+ +t++++,4,---0-H----. .x../p///00(080H0x000011122T2233X34P445x56 6d6t67H77788\888889 9099:0:|:;;P;h;<<= =$=<==>8>H>X>p>>?d???@@PAA AABCChCD DDEpFFGHHHHI\IIJPJhK\L8MNN,NDO$OP8PQQQRRDRSlSTXTUDUVHVtVVWWWXdXXXYDYYZ0ZZ[[`[[\4\t\]d^X_D_\_t___`,`t`aaTaabDbcc|ccdee4eLe\eteffpfg$g|gh hlhi8iiijjj4jLj\jljjjjjjkkk4kLk\klkkkkkkl ll4lLldl|lllllm m$m<mpmmmn4no@opqprrs(sst4tDtTtu(u8uHuuvw wwwx xxy0y@yyyyyzzt{ {{|,|x|}}}\}~4~~~~Pt,pLPLx<dh\hLtL8TLt(p(<Pdx,<4(`xP8pp(@L@ |, | $<Xp0H`x Dd| $<Tl4Ph,H`x $<Tl,D\t 8Pl8Xp0Ld| $<Tl0H`x 8Pl,D\t4Ld| $<Tl0H`x 8Ph(@Xp8Ph,D`x(@Xp4Ld| $<Tl4Ph(@Xp$@Xp8Ph€˜´0H`xÔì $<TlĄĜĴ4Ld|ŔŬ(@Xpƌƨ 8H`pLjǘǰ 8PhȀȘȰ(@XpɈɠɸ0H`xʐʨ 8Phˀ˘˰(@Xp̸̠̈0@Xhxͤʹ,D\l΄Δά(@PhπϘϰ $<Tl|ДЬ $4PhxшѠѸ(@PhxҤҤҤҤҤҤҤҤҤҤҤҤҤҤҤҤҤ XӐXԴ8|X$@\ٌD`ۨ(D\|ݠ,ެ0D|ߴ8p8H`(hHxD4\D`dx,@Th|x8 8tXh(x0Tt<Th(XhLlL( T   $ 4 D   P   H  D8<$Dd$Dd|$\t $D\l ,<L\l(8,\4|   !<!!""\""##L#$$$%h&$''|''(,(d(() )* *L*+\,,$,L,t,,,--4-P-l--..`.../D/0 0`001 1|122X2233\334L44585|566<6|667<778D8999::`:;;<>8>l>>?d@@P@AlAABPCHCDEE`EEEF`FFG`GGHHHHHIIJTK$KDKhLLLM M4MN$NPNNOOOPRlT\U0V\WWWWXX4XpXXY YYZHZ[0[\@\]^t_,` ``ab b8bXbxbbbc8ccd<d|deefg ggh$hhhi$ihijjtjkkllXlmmxmnpo oppXpqdqqr0rsstttuuuv@vwwwxdxxyXyzz{{,{P||}~p$tDt hllPHT,0t Dp8| dh(|dtpPT@T(<`H4X8h,H4PthLDllĀĜĸ (D`|ŘŴ$8ȄȘȬ $@\pɈɤ@XʰL\8dπϬHdЌШ4`|Ѩ 8TҀҜ0dӨ8H@װD؜Pٸ0Xڰ(|(T܄ (D\t$Pxޠ(T|(hhh8`L| @$T$d,    (0$ |$D `'(*@+t,L-d.\2$5d6079H9h9999::(:H;=?A`CdDEGIJKLLDMhNQR RTpU WTY(Z\P]^P_`tatcgikmortuw x@yDyz{(| }}~(hxl4  (H<\,p($dt\tdll$Ht(hЄ 80$DXP݌ l(8tPHXX\$Px8D, L  d   P  |00p< d!"x#@$%'(x)+(,--l-.<..../4/0 012D334546667,7l77788<8h889$9:@;<=D>t@L@CDFGdHIJKMMO4PxQR0RST|U@V$VWX|YTYYYZZ8Z[[,[[[\,\\\|\]$]P]]^^d^__P_``taapabbcPcdetfghphhhhhhii$i@iTipiiiiij j<j`jjjjjk k<k`kkkkll@ldlllmm m<m`m|mmmn n0nTnnnno0oLopooopp<pppppq qLqqqrr r<r`r|rrrs s0sTsssst0tLtptttuu<upuuuv vLvvvw w0wTwwwwx0xTxxxy y@ytyyzz,z`zzz{0{\{{||4|p||}} }<}`}|}}}~ ~0~T~~~~0Lp<p L 0T0T @t,`0\4p 0T0T @t,`0\4p@l4p@t0\4p$``@|(Tl, \ 8@0<X HTx44pDH\$|HP`,Th@tdt4xhì8\\8Ȩʘh̄\0Έd,XЄм@t8TpҌҨ4PlӈӤ0LԌ b+@k   ``$$x&&z66|DD~FFHHLLRQVVXX]\            !"#$% &' ()* +, -   "$&(*,.02468:<>?E?*?,??W?X?Y?Z?W?W?b?e?f?a?k?l?m?i?p?u?v?w?x?u?s?Z??????  #!@:0*ln p))rQQtrrv~~xz|++..     ` `"$?N?N?O?O?P?Q?Q ?R ?8?9?.??ʿ?????? vqjz' ,-/0Tz 0`$$b)(d0/h75l;;rDDtFFvIIxLLzOO|RR~XV         `??ݿ??տ?????????ǿ?ƿ?ο??ѿ??Կ?ȿ  >n "" ???5BA@8T. $&==6     !"#$%&'()*+,-./012 ` `"%(+.1 47:=@C FILORUX[?ÿ??ƿ??ɿ??̿??Ͽ??ҿ??տ   ?? ? ?#?&&,)(/,(2/.? 11843?64?99A<:D?=?@@JC ~~72 T ]  )4< ><[ < ==(==>Q! >h<<=`= >>y< <==r=>+> 0   0" 8m  2 "9 :o %: h;Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain DejaVu LGC SansDejaVu LGC SansBold ObliqueBold ObliqueDejaVu Sans Bold ObliqueDejaVu Sans Bold ObliqueDejaVu LGC Sans Bold ObliqueDejaVu LGC Sans Bold ObliqueVersion 2.10Version 2.10DejaVuLGCSans-BoldObliqueDejaVuLGCSans-BoldObliqueDejaVu fonts teamDejaVu fonts teamhttp://dejavu.sourceforge.nethttp://dejavu.sourceforge.netFonts are (c) Bitstream (see below). DejaVu changes are in public domain. Glyphs imported from Arev fonts are (c) Tavmjung Bah (see below) Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Arev Fonts Copyright ------------------------------ Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the modifications to the Bitstream Vera Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Tavmjong Bah" or the word "Arev". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Tavmjong Bah Arev" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the name of Tavmjong Bah shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from Tavmjong Bah. For further information, contact: tavmjong @ free . fr.Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Glyphs imported from Arev fonts are (c) Tavmjung Bah (see below) Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Arev Fonts Copyright ------------------------------ Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the modifications to the Bitstream Vera Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Tavmjong Bah" or the word "Arev". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Tavmjong Bah Arev" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the name of Tavmjong Bah shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from Tavmjong Bah. For further information, contact: tavmjong @ free . fr.http://dejavu.sourceforge.net/wiki/index.php/Licensehttp://dejavu.sourceforge.net/wiki/index.php/LicenseAll Typographic FeaturesFonctions typographiquesAlle typografischen MglichkeitenFunzioni TipograficheAlle typografische kenmerkenLigaturesLigaturesLigaturenLegatureLigaturenFractionsFractionsBreukenAll Type FeaturesToutes fonctions typographiquesAlle AuszeichnungsartenTutte le FunzioniAlle typekenmerkenCommon LigaturesLigatures UsuellesNormale LigaturenLegature pi ComuniGemeenschappelijke LigaturenRare LigaturesLigatures RaresSeltene LigaturenLegature RareZeldzame ligaturenDiagonal FractionsFractions en DiagonaleDiagonaler BruchFrazioni DiagonaliDiagonale breukenZ   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~  sfthyphenAmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandicLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongsuni0180uni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191uni0193uni0194uni0195uni0196uni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEUhornuhornuni01B1uni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BAuni01BBuni01BCuni01BDuni01BEuni01BFuni01C0uni01C1uni01C2uni01C3uni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DEuni01DFuni01E0uni01E1uni01E2uni01E3uni01E4uni01E5Gcarongcaronuni01E8uni01E9uni01EAuni01EBuni01ECuni01EDuni01EEuni01EFuni01F0uni01F1uni01F2uni01F3uni01F4uni01F5uni01F6uni01F7uni01F8uni01F9 Aringacute aringacuteAEacuteaeacute Oslashacute oslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217 Scommaaccent scommaaccentuni021Auni021Buni021Cuni021Duni021Euni021Funi0220uni0221uni0222uni0223uni0224uni0225uni0226uni0227uni0228uni0229uni022Auni022Buni022Cuni022Duni022Euni022Funi0230uni0231uni0232uni0233uni0234uni0235uni0236dotlessjuni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240uni0241uni0242uni0243uni0244uni0245uni0246uni0247uni0248uni0249uni024Auni024Buni024Cuni024Duni024Euni024Funi0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni0259uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269uni026Auni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02AEuni02AFuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02B9uni02BAuni02BB afii57929 afii64937uni02BEuni02BFuni02C0uni02C1uni02C2uni02C3uni02C4uni02C5uni02C8uni02C9uni02CAuni02CBuni02CCuni02CDuni02CEuni02CFuni02D0uni02D1uni02D2uni02D3uni02D4uni02D5uni02D6uni02D7uni02DEuni02DFuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9uni02ECuni02EDuni02EEuni02F3uni02F7 gravecomb acutecombuni0302 tildecombuni0304uni0305uni0306uni0307uni0308 hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322 dotbelowcombuni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0340uni0341uni0342uni0343uni0344uni0345uni0346uni0347uni0348uni0349uni034Auni034Buni034Cuni034Duni034Euni0351uni0352uni0357uni0358uni035Cuni035Duni0360uni0361uni0362uni0374uni0375uni037Auni037Buni037Cuni037Duni037Etonos dieresistonos Alphatonos anoteleia EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni03D0theta1Upsilon1uni03D3uni03D4phi1omega1uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03E2uni03E3uni03E4uni03E5uni03E6uni03E7uni03E8uni03E9uni03EAuni03EBuni03ECuni03EDuni03EEuni03EFuni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FAuni03FBuni03FCuni03FDuni03FEuni03FFuni0400 afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061uni040D afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097uni0450 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109uni045D afii10110 afii10193uni0460uni0461 afii10146 afii10194uni0464uni0465uni0466uni0467uni0468uni0469uni046Auni046Buni046Cuni046Duni046Euni046Funi0470uni0471 afii10147 afii10195 afii10148 afii10196uni0476uni0477uni0478uni0479uni047Auni047Buni047Cuni047Duni047Euni047Funi0480uni0481uni0482uni0483uni0484uni0485uni0486uni0488uni0489uni048Auni048Buni048Cuni048Duni048Euni048F afii10050 afii10098uni0492uni0493uni0494uni0495uni0496uni0497uni0498uni0499uni049Auni049Buni049Cuni049Duni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04A8uni04A9uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B0uni04B1uni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04B8uni04B9uni04BAuni04BBuni04BCuni04BDuni04BEuni04BFuni04C0uni04C1uni04C2uni04C3uni04C4uni04C5uni04C6uni04C7uni04C8uni04C9uni04CAuni04CBuni04CCuni04CDuni04CEuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8 afii10846uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni0500uni0501uni0502uni0503uni0504uni0505uni0506uni0507uni0508uni0509uni050Auni050Buni050Cuni050Duni050Euni050Funi0510uni0511uni1D00uni1D01uni1D02uni1D03uni1D04uni1D05uni1D06uni1D07uni1D08uni1D09uni1D0Auni1D0Buni1D0Cuni1D0Duni1D0Euni1D0Funi1D10uni1D11uni1D12uni1D13uni1D14uni1D16uni1D17uni1D18uni1D19uni1D1Auni1D1Buni1D1Cuni1D1Duni1D1Euni1D1Funi1D20uni1D21uni1D22uni1D23uni1D26uni1D27uni1D28uni1D29uni1D2Auni1D2Buni1D2Cuni1D2Duni1D2Euni1D30uni1D31uni1D32uni1D33uni1D34uni1D35uni1D36uni1D37uni1D38uni1D39uni1D3Auni1D3Buni1D3Cuni1D3Duni1D3Euni1D3Funi1D40uni1D41uni1D42uni1D43uni1D44uni1D45uni1D46uni1D47uni1D48uni1D49uni1D4Auni1D4Buni1D4Cuni1D4Duni1D4Euni1D4Funi1D50uni1D51uni1D52uni1D53uni1D54uni1D55uni1D56uni1D57uni1D58uni1D59uni1D5Auni1D5Buni1D5Duni1D5Euni1D5Funi1D60uni1D61uni1D62uni1D63uni1D64uni1D65uni1D66uni1D67uni1D68uni1D69uni1D6Auni1D77uni1D78uni1D7Buni1D85uni1D9Buni1D9Cuni1D9Duni1D9Euni1D9Funi1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5uni1DA6uni1DA7uni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1uni1DB2uni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB8uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1E00uni1E01uni1E02uni1E03uni1E04uni1E05uni1E06uni1E07uni1E08uni1E09uni1E0Auni1E0Buni1E0Cuni1E0Duni1E0Euni1E0Funi1E10uni1E11uni1E12uni1E13uni1E14uni1E15uni1E16uni1E17uni1E18uni1E19uni1E1Auni1E1Buni1E1Cuni1E1Duni1E1Euni1E1Funi1E20uni1E21uni1E22uni1E23uni1E24uni1E25uni1E26uni1E27uni1E28uni1E29uni1E2Auni1E2Buni1E2Cuni1E2Duni1E2Euni1E2Funi1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Auni1E3Buni1E3Cuni1E3Duni1E3Euni1E3Funi1E40uni1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Auni1E4Buni1E4Cuni1E4Duni1E4Euni1E4Funi1E50uni1E51uni1E52uni1E53uni1E54uni1E55uni1E56uni1E57uni1E58uni1E59uni1E5Auni1E5Buni1E5Cuni1E5Duni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E64uni1E65uni1E66uni1E67uni1E68uni1E69uni1E6Auni1E6Buni1E6Cuni1E6Duni1E6Euni1E6Funi1E70uni1E71uni1E72uni1E73uni1E74uni1E75uni1E76uni1E77uni1E78uni1E79uni1E7Auni1E7Buni1E7Cuni1E7Duni1E7Euni1E7FWgravewgraveWacutewacute Wdieresis wdieresisuni1E86uni1E87uni1E88uni1E89uni1E8Auni1E8Buni1E8Cuni1E8Duni1E8Euni1E8Funi1E90uni1E91uni1E92uni1E93uni1E94uni1E95uni1E96uni1E97uni1E98uni1E99uni1E9Auni1E9Buni1EA0uni1EA1uni1EA2uni1EA3uni1EA4uni1EA5uni1EA6uni1EA7uni1EA8uni1EA9uni1EAAuni1EABuni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EBEuni1EBFuni1EC0uni1EC1uni1EC2uni1EC3uni1EC4uni1EC5uni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED0uni1ED1uni1ED2uni1ED3uni1ED4uni1ED5uni1ED6uni1ED7uni1ED8uni1ED9uni1EDAuni1EDBuni1EDCuni1EDDuni1EDEuni1EDFuni1EE0uni1EE1uni1EE2uni1EE3uni1EE4uni1EE5uni1EE6uni1EE7uni1EE8uni1EE9uni1EEAuni1EEBuni1EECuni1EEDuni1EEEuni1EEFuni1EF0uni1EF1Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni200B afii61664afii301afii299afii300uni2010uni2011 figuredash afii00208uni2016 underscoredbl quotereverseduni201Funi2023onedotenleadertwodotenleaderuni2027uni2031minuteseconduni2034uni2035uni2036uni2037uni2038uni203B exclamdbluni203Duni203Euni203Funi2040uni2041uni2042uni2043uni2045uni2046uni2047uni2048uni2049uni204Auni204Buni204Cuni204Duni204Euni204Funi2050uni2051uni2052uni2053uni2054uni2055uni2056uni2057uni2058uni2059uni205Auni205Buni205Cuni205Duni205Euni2070uni2071uni2074uni2075uni2076uni2077uni2078uni2079uni207Auni207Buni207Cuni207Duni207Euni207Funi2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089uni208Auni208Buni208Cuni208Duni208Euni2090uni2091uni2092uni2093uni2094uni20A0 colonmonetaryuni20A2lirauni20A5uni20A6pesetauni20A8uni20A9 afii57636dongEurouni20ADuni20AEuni20AFuni20B0uni20B1uni20B2uni20B3uni20B4uni20B5uni20D0uni20D1uni20D6uni20D7uni2100uni2102uni2103uni2104 afii61248uni2106uni2109uni210Duni210Euni210FIfraktur afii61289uni2115 afii61352uni2117 weierstrassuni2119uni211ARfrakturuni211D prescriptionuni2120uni2121uni2124uni2126uni2127uni212Auni212B estimateduni2132uni2134alephuni213Buni213Cuni213Duni213Euni213Funi2140uni2145uni2146uni2147uni2148uni2149uni214Bonethird twothirdsuni2155uni2156uni2157uni2158uni2159uni215A oneeighth threeeighths fiveeighths seveneighthsuni215Funi2160uni2161uni2162uni2163uni2164uni2165uni2166uni2167uni2168uni2169uni216Auni216Buni216Cuni216Duni216Euni216Funi2170uni2171uni2172uni2173uni2174uni2175uni2176uni2177uni2178uni2179uni217Auni217Buni217Cuni217Duni217Euni217Funi2180uni2181uni2182uni2183uni2184 arrowleftarrowup arrowright arrowdown arrowboth arrowupdnuni2196uni2197uni2198uni2199uni219Auni219Buni219Cuni219Duni219Euni219Funi21A0uni21A1uni21A2uni21A3uni21A4uni21A5uni21A6uni21A7 arrowupdnbseuni21A9uni21AAuni21ABuni21ACuni21ADuni21AEuni21AFuni21B0uni21B1uni21B2uni21B3uni21B4carriagereturnuni21B6uni21B7uni21B8uni21B9uni21BAuni21BBuni21BCuni21BDuni21BEuni21BFuni21C0uni21C1uni21C2uni21C3uni21C4uni21C5uni21C6uni21C7uni21C8uni21C9uni21CAuni21CBuni21CCuni21CDuni21CEuni21CF arrowdblleft arrowdblup arrowdblright arrowdbldown arrowdblbothuni21D5uni21D6uni21D7uni21D8uni21D9uni21DAuni21DBuni21DCuni21DDuni21DEuni21DFuni21E0uni21E1uni21E2uni21E3uni21E4uni21E5uni21E6uni21E7uni21E8uni21E9uni21EAuni21EBuni21ECuni21EDuni21EEuni21EFuni21F0uni21F1uni21F2uni21F3uni21F4uni21F5uni21F6uni21F7uni21F8uni21F9uni21FAuni21FBuni21FCuni21FDuni21FEuni21FF universaluni2201 existentialuni2204emptysetgradientelement notelementuni220Asuchthatuni220Cuni220Duni220Euni2210uni2213uni2214uni2216 asteriskmathuni2218uni221Buni221C proportional orthogonalangleuni2221uni2222uni2223uni2224uni2225uni2226 logicaland logicalor intersectionunionuni222Cuni222Duni222Euni222Funi2230uni2231uni2232uni2233 thereforeuni2235uni2236uni2237uni2238uni2239uni223Auni223Bsimilaruni223Duni2241uni2242uni2243uni2244 congruentuni2246uni2247uni2249uni224Auni224Buni224Cuni224Duni224Euni224Funi2250uni2251uni2252uni2253uni2254uni2255uni2256uni2257uni2258uni2259uni225Auni225Buni225Cuni225Duni225Euni225F equivalenceuni2262uni2263uni2266uni2267uni2268uni2269uni226Auni226Buni226Cuni226Duni226Euni226Funi2270uni2271uni2272uni2273uni2274uni2275uni2276uni2277uni2278uni2279uni227Auni227Buni227Cuni227Duni227Euni227Funi2280uni2281 propersubsetpropersuperset notsubsetuni2285 reflexsubsetreflexsupersetuni2288uni2289uni228Auni228Buni228Cuni228Duni228Euni228Funi2290uni2291uni2292uni2293uni2294 circleplusuni2296circlemultiplyuni2298uni2299uni229Auni229Buni229Cuni229Duni229Euni229Funi22A0uni22A1uni22A2uni22A3uni22A4 perpendicularuni22A6uni22A7uni22A8uni22A9uni22AAuni22ABuni22ACuni22ADuni22AEuni22AFuni22B2uni22B3uni22B4uni22B5uni22B6uni22B7uni22B8uni22B9uni22BAuni22BBuni22BCuni22BDuni22C0uni22C1uni22C4dotmathuni22C6uni22C8uni22C9uni22CAuni22CBuni22CCuni22CDuni22D6uni22D7uni22D8uni22D9uni22DAuni22DBuni22DCuni22DDuni22DEuni22DFuni22E0uni22E1uni22E2uni22E3uni22E4uni22E5uni22E6uni22E7uni22E8uni22E9uni22EAuni22EBuni22ECuni22EDuni22F2uni22F3uni22F4uni22F5uni22F6uni22F7uni22F8uni22F9uni22FAuni22FBuni22FCuni22FDuni22FEuni22FFhouseuni2306uni2308uni2309uni230Auni230B revlogicalnotuni2311uni2318uni2319 integraltp integralbtuni2325uni2328 angleleft anglerightuni237Duni239Buni239Cuni239Duni239Euni239Funi23A0uni23A1uni23A2uni23A3uni23A4uni23A5uni23A6uni23A7uni23A8uni23A9uni23AAuni23ABuni23ACuni23ADuni23AEuni23CFuni2422uni2423uni2460uni2461uni2462uni2463uni2464uni2465uni2466uni2467uni2468uni2469upblockuni2581uni2582uni2583dnblockuni2585uni2586uni2587blockuni2589uni258Auni258Blfblockuni258Duni258Euni258Frtblockltshadeshadedkshadeuni2594uni2595uni2596uni2597uni2598uni2599uni259Auni259Buni259Cuni259Duni259Euni259F filledboxH22073uni25A2uni25A3uni25A4uni25A5uni25A6uni25A7uni25A8uni25A9H18543H18551 filledrectuni25ADuni25AEuni25AFuni25B0uni25B1triagupuni25B3uni25B4uni25B5uni25B6uni25B7uni25B8uni25B9triagrtuni25BBtriagdnuni25BDuni25BEuni25BFuni25C0uni25C1uni25C2uni25C3triaglfuni25C5uni25C6uni25C7uni25C8uni25C9circleuni25CCuni25CDuni25CEH18533uni25D0uni25D1uni25D2uni25D3uni25D4uni25D5uni25D6uni25D7 invbullet invcircleuni25DAuni25DBuni25DCuni25DDuni25DEuni25DFuni25E0uni25E1uni25E2uni25E3uni25E4uni25E5 openbulletuni25E7uni25E8uni25E9uni25EAuni25EBuni25ECuni25EDuni25EEuni25EFuni25F0uni25F1uni25F2uni25F3uni25F4uni25F5uni25F6uni25F7uni25F8uni25F9uni25FAuni25FBuni25FCuni25FDuni25FEuni25FFuni2600uni2601uni2602uni2603uni2604uni2605uni2606uni2607uni2608uni2609uni260Auni260Buni260Cuni260Duni260Euni260Funi2610uni2611uni2612uni2613uni2614uni2615uni2616uni2617uni2618uni2619uni261Auni261Buni261Cuni261Duni261Euni261Funi2620uni2621uni2622uni2623uni2624uni2625uni2626uni2627uni2628uni2629uni262Auni262Buni262Cuni262Duni262Euni262Funi2630uni2631uni2632uni2633uni2634uni2635uni2636uni2637uni2638uni2639 smileface invsmilefacesununi263Duni263Euni263Ffemaleuni2641maleuni2643uni2644uni2645uni2646uni2647uni2648uni2649uni264Auni264Buni264Cuni264Duni264Euni264Funi2650uni2651uni2652uni2653uni2654uni2655uni2656uni2657uni2658uni2659uni265Auni265Buni265Cuni265Duni265Euni265Fspadeuni2661uni2662clubuni2664heartdiamonduni2667uni2668uni2669 musicalnotemusicalnotedbluni266Cuni266Duni266Euni266Funi2670uni2671uni2672uni2673uni2674uni2675uni2676uni2677uni2678uni2679uni267Auni267Buni267Cuni267Duni267Euni267Funi2680uni2681uni2682uni2683uni2684uni2685uni2686uni2687uni2688uni2689uni268Auni268Buni268Cuni268Duni268Euni268Funi2690uni2691uni2692uni2693uni2694uni2695uni2696uni2697uni2698uni2699uni269Auni269Buni269Cuni26A0uni26A1uni26A2uni26A3uni26A4uni26A5uni26A6uni26A7uni26A8uni26A9uni26AAuni26ABuni26ACuni26ADuni26AEuni26AFuni26B0uni26B1uni2701uni2702uni2703uni2704uni2706uni2707uni2708uni2709uni270Cuni270Duni270Euni270Funi2710uni2711uni2712uni2713uni2714uni2715uni2716uni2717uni2718uni2719uni271Auni271Buni271Cuni271Duni271Euni271Funi2720uni2721uni2722uni2723uni2724uni2725uni2726uni2727uni2729uni272Auni272Buni272Cuni272Duni272Euni272Funi2730uni2731uni2732uni2733uni2734uni2735uni2736uni2737uni2738uni2739uni273Auni273Buni273Cuni273Duni273Euni273Funi2740uni2741uni2742uni2743uni2744uni2745uni2746uni2747uni2748uni2749uni274Auni274Buni274Duni274Funi2750uni2751uni2752uni2756uni2758uni2759uni275Auni275Buni275Cuni275Duni275Euni2761uni2762uni2763uni2764uni2765uni2766uni2767uni2768uni2769uni276Auni276Buni276Cuni276Duni276Euni276Funi2770uni2771uni2772uni2773uni2774uni2775uni2776uni2777uni2778uni2779uni277Auni277Buni277Cuni277Duni277Euni277Funi2780uni2781uni2782uni2783uni2784uni2785uni2786uni2787uni2788uni2789uni278Auni278Buni278Cuni278Duni278Euni278Funi2790uni2791uni2792uni2793uni2794uni2798uni2799uni279Auni279Buni279Cuni279Duni279Euni279Funi27A0uni27A1uni27A2uni27A3uni27A4uni27A5uni27A6uni27A7uni27A8uni27A9uni27AAuni27ABuni27ACuni27ADuni27AEuni27AFuni27B1uni27B2uni27B3uni27B4uni27B5uni27B6uni27B7uni27B8uni27B9uni27BAuni27BBuni27BCuni27BDuni27BEuni27E0uni27E8uni27E9uni27EAuni27EBuni2800uni2801uni2802uni2803uni2804uni2805uni2806uni2807uni2808uni2809uni280Auni280Buni280Cuni280Duni280Euni280Funi2810uni2811uni2812uni2813uni2814uni2815uni2816uni2817uni2818uni2819uni281Auni281Buni281Cuni281Duni281Euni281Funi2820uni2821uni2822uni2823uni2824uni2825uni2826uni2827uni2828uni2829uni282Auni282Buni282Cuni282Duni282Euni282Funi2830uni2831uni2832uni2833uni2834uni2835uni2836uni2837uni2838uni2839uni283Auni283Buni283Cuni283Duni283Euni283Funi2840uni2841uni2842uni2843uni2844uni2845uni2846uni2847uni2848uni2849uni284Auni284Buni284Cuni284Duni284Euni284Funi2850uni2851uni2852uni2853uni2854uni2855uni2856uni2857uni2858uni2859uni285Auni285Buni285Cuni285Duni285Euni285Funi2860uni2861uni2862uni2863uni2864uni2865uni2866uni2867uni2868uni2869uni286Auni286Buni286Cuni286Duni286Euni286Funi2870uni2871uni2872uni2873uni2874uni2875uni2876uni2877uni2878uni2879uni287Auni287Buni287Cuni287Duni287Euni287Funi2880uni2881uni2882uni2883uni2884uni2885uni2886uni2887uni2888uni2889uni288Auni288Buni288Cuni288Duni288Euni288Funi2890uni2891uni2892uni2893uni2894uni2895uni2896uni2897uni2898uni2899uni289Auni289Buni289Cuni289Duni289Euni289Funi28A0uni28A1uni28A2uni28A3uni28A4uni28A5uni28A6uni28A7uni28A8uni28A9uni28AAuni28ABuni28ACuni28ADuni28AEuni28AFuni28B0uni28B1uni28B2uni28B3uni28B4uni28B5uni28B6uni28B7uni28B8uni28B9uni28BAuni28BBuni28BCuni28BDuni28BEuni28BFuni28C0uni28C1uni28C2uni28C3uni28C4uni28C5uni28C6uni28C7uni28C8uni28C9uni28CAuni28CBuni28CCuni28CDuni28CEuni28CFuni28D0uni28D1uni28D2uni28D3uni28D4uni28D5uni28D6uni28D7uni28D8uni28D9uni28DAuni28DBuni28DCuni28DDuni28DEuni28DFuni28E0uni28E1uni28E2uni28E3uni28E4uni28E5uni28E6uni28E7uni28E8uni28E9uni28EAuni28EBuni28ECuni28EDuni28EEuni28EFuni28F0uni28F1uni28F2uni28F3uni28F4uni28F5uni28F6uni28F7uni28F8uni28F9uni28FAuni28FBuni28FCuni28FDuni28FEuni28FFuni29CEuni29CFuni29D0uni29D1uni29D2uni29D3uni29D4uni29D5uni29EBuni2A00uni2A01uni2A02uni2A0Cuni2A0Duni2A0Euni2A0Funi2A10uni2A11uni2A12uni2A13uni2A14uni2A15uni2A16uni2A17uni2A18uni2A19uni2A1Auni2A1Buni2A1Cuni2A7Duni2A7Euni2A7Funi2A80uni2A81uni2A82uni2A83uni2A84uni2A85uni2A86uni2A87uni2A88uni2A89uni2A8Auni2A8Buni2A8Cuni2A8Duni2A8Euni2A8Funi2A90uni2A91uni2A92uni2A93uni2A94uni2A95uni2A96uni2A97uni2A98uni2A99uni2A9Auni2A9Buni2A9Cuni2A9Duni2A9Euni2A9Funi2AA0uni2AAEuni2AAFuni2AB0uni2AB1uni2AB2uni2AB3uni2AB4uni2AB5uni2AB6uni2AB7uni2AB8uni2AB9uni2ABAuni2AF9uni2AFAuni2B12uni2B13uni2B14uni2B15uni2B16uni2B17uni2B18uni2B19uni2B1Auni2C60uni2C61uni2C62uni2C63uni2C64uni2C65uni2C66uni2C67uni2C68uni2C69uni2C6Auni2C6Buni2C6Cuni2C74uni2C75uni2C76uni2C77uniF208uniF217uniF25F afii10064uniFB00uniFB03uniFB04uniFB05uniFB06uniFFFD dlLtcaronDieresisAcuteTildeGrave CircumflexCaronBreve Dotaccent Hungarumlaut Doublegrave uni0311.caseEng.altuni0268.dotlessuni029D.dotless uni03080304 uni03040308 uni03070304 uni03080301 uni03080300 uni03040301 uni03040300 uni03030304 uni0308030C uni03030308 uni030C0307 uni03030301 uni03020301 uni03020300 uni03020303 uni03060303 uni03060301 uni03060300 uni03060309 uni03020309 uni03010307 brailledotJ.altl.alt@::dػ}}ȌYȌȀ&Y@& }>,,G}G  @ 2 YYdhd@%%Y   %Y%&Y]%]@%dX:t:2  Y~}|{zyxwvtvututYtsYs}rq&ponm @lkjkjj@ihihYhgYgf\ fedcdcb]ccbW%b]b@a`_.`_.^Y^]\ ] \ [Y[KZYZYXYXW%VUTSRQPO%PO%NMLKJIH H@FEFEDCDCC@BdB@A}@?>,>,=<;:94 9287265 6@5 5@43 4 3 211}0/0d//.-,+,K++**K)()(' (' &%$%2$#"#"!%!   2@   @:%dd:%:%K       @d:@  @d++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++r,       !! #" >> ?? @@ CA ^^ __ `` aa bbcc gdkh qm srutvv zx {{}  |{            ~~   VV            ( -)1. 22 33 <4 ==>> ?? W@ XX_Za`bb cc dd ofqprr ss tt z          t uuvv Nw O O P P Q Q R R Z S [ [ \ \ ] ` a  ؀micropolis-activity/res/dejavu-lgc/DejaVuLGCSansCondensed-Bold.ttf0000664000076400007640000126204010724145723025423 0ustar simcitysimcityPGDEFZ[6\GPOS2hGSUB5\OS/2d>\Vcmapɔm>Jcvt >-DRfeatFT@fpgm[kFgaspG@ glyfe'GLheadR9{6hhea )/$hmtx%(3kern6D!0locad xWt3 maxp  morxrpname~oApost0 p{@prep|aYprop\aX @ijjkpqqruvvwyzz{}~       PQQR[\]^^_`acdmnopxyyzz{yzz{ . / 8 9 i j p q r s | }    zDFLT&arab0cyrl:grekHhebrVlatn`kernmarkmkmk %8. vVz"8T,:6 " 4 > H R 8 |  B | *D^xhvr$Jp,VhvjZ`2P79k:;Y<&:(&&&&7a89u:<<Y\<$a&a*,.0268<9:<a<vxz<DrDr 9:<68:vxz /6&&& &"&&KK &DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~      & , 2 8 > D J P V \ b h n t z 2mmETTVxtt{@{{bt{@;/;/@@{d{z{{{{{b{Y{S{Q{R{{{{zz{t{;{{@ 2{zmbETT[@Sx{bWTR{{v{z{@b;{m{T;/{t{t{t{@{{o{o{o{{{{{;{tt{t{Q{Q{{@@/;{{ @@{{{d{d{I{z{{z{{{{{{{{{{?dh{;{bW{{{Y{S{R{{{{{ttC{{9{t|{;/{E{t{"{@@7{{z{d{y.{d{{Y{Uz{{z{z{E{_{{Q{{!{!{z{`{z{{;/{{3m`t{J{ {{{{{z{z{{{z{z{z{{{#{R{{>{ {.{K{o{ h{q{{@z{{ {{mt{{@@@z{{Y{{;{y@G$= D]$>?ABCDF  GHBCIHJKLLNOPORRQTURX]T__Zff[ij\mp^txb{{ghijkhm4DFLRSWXZ[]]eesx    !##"--#HH$KK%OO&xx'()*dd, - -- _ e. g h5 7 9 : !#\]$ s |& 01 &,28>DJPV\bhntz4{4{2{2{1{1{2{2{2{2{2{2{2{2{2{2{2{2{rr4{r1{4{4{4{4r4{2{2{2{2{2{4{5{4{4{2{2{2{2{2{2{2{2{2{2{2{  "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz "(.4:@FLRX^djpv|2mVETTRVxtttbtRt;;Rt@dzRR;bYSQRRRzz;RR@b;RmTR;R;ttttRooo;RtRtRtQRQRttR; ;RRRRdRdRIzzR;R;RmR?RdRhR;RRbRWYSRRRRttRC9t|;RRtRR"R@@tmttY;R@$= D]$>@ABCZZDvvEFGHhJ88  dd _ c g h   !" &,28>DJP444444444444=444444444444444444444N (RX^djpv| $*06<4h4h2f2222>22222f2f222f22>424=42>2>2224544222222222(\] s u w x y z { |  \] s |! +, $*06<BHNTZ`flrx~4{4{2{2{222222{2{2{2{2{2{2{22424{4{44222{2{2{45{442{2{2{2{2{2{2{2{2{2{2{ vDFLT&arab6cyrlBgreknhebrlatn MKD SRB $     DNK   aalt\aaltdccmpjccmppdligvdlig|dligfrachligligaligaloclloclsaltsalt     &.6>FNV^fnv~$xTP6lJ<<<&8LM%%ZZ Q$=IIKKLMOO      ""$$&&((**,,..0022446688:;==??AAHHRRTTVV%%ZZ&  dpz "(.4:@FLzvqjzc) r { QDy(:FPZfr "  "y$;QVn0o(/^FbXaR")567DF2 ( nIO mIL jI pWIV lO kLI oWAZD&.6>FNV^fnv~}}{{~~ "~~||&.6 "UTVRSXW(.5;CI  D    -O  -DO UTVRSXW(.5;CI LM%Z v t w u y z s { x |  33f P PfEd m`D(~AIMNSX]bu{~#+[w{EMWY[]} ' ^ q !!! !!!!!!"!'!+!.!2!5!;!K!"="""""""### ###!#%#*#}##$#$i&&&'' '''K'M'R'V'^'''''())*****+,j,w_ CLPQW\`tz~&Cw{ HPY[]_ 0 p t !!! !!!!!! !&!*!.!2!4!;!K!S!"A""""""###### #%#(#}##$"$`%&&''' ')'M'O'V'X'a''''())** *}**+,g,u_{sXUL76^\ZVUTRONKIGDC>/( }] YXVUTSPOMJI(! ?* bK^P j t  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}byqzf3f=ffTbfTfmf3bq%fHZfm99Xm=fuff9{{X3fLfLJ#DDf?;Pw /X#/553X sf+j-j!f#^`3B3\fy```{j\{`bXP1L`%!JJ7{'}3Xy9bs04 <, %Id@QX Y!-,%Id@QX Y!-,  P y PXY%%# P y PXY%-,KPX (EDY!-,%E`D-,KSX%%EDY!!-,ED-,%%I%%I` ch #:e:-[!%!!\4r)G !#!!D..D^###շ++}333!!!####5!#5!#34VWW>VVWV'?0V/?#*1#.''.546?3.'>54&̒qdgm׵ZZZZޒ@MGNNH-.);?7* "*/(BE5;CBBDC; '3"32654&'2#"&546#3!2#"&546"32654&@FF@AEF@nH@FF@AFGh{rs{{sr{ؽ۽ ٽڽ٨|rs}}sr|n&0 >7!!'#"5467.54632.#"3267p01dYX^u܀&$R`THFL,:FnkmFDےj5j:0.;6"W/wGs))#+ !&547! sts;: 654'!ssss ?C$9 %#'-73%)DԙD-D-,XXF !!#!5!o**  b!#DZuc!!d5!!D}B3#&mX &#"326! ! P_op__pn`Z   mstm !%!!!28J2T HH5c!!>54&#">32O0B?iQnun qB~DiMLH+-zӱ{p(!"&'32654&+532654&#">3 [gfa]|rTUga|%'%%)67jcfi[]V^*) R !!3#!!|:RJ!!>32!"&'32654&#"^'P+ronW~~Ja 12/FFuv+-r $"32654&.#">32# !2[[[[\[[PUH;QP$]Ⴣ-+11ir {p!!!{yp #/"32654&%.54632! $54632654&#"bhhb`gg{|}zYSQXXQSYvnnuunou)ž)*ސUY``YY_`_$73267#"543 !"&2654&#"SJ=Q _Y[\\[[\\!++22 "vY`!!!!EE`}}t` !#!!EZEu}=F 5Ec~'F!!!!~~=F55~e11J~!!546?>54&#">32!!~<_:30WMI\mTGT:=&E1Rb:4\.FOCB:*(ǿbY9>K-y M32654&#"#"&5463253>54&'&$#"3267#"$'&5476$32!#^QQ_`QP^qxPšPxp45UiP`[ZrP`qssxzqr-IoCF#{zyZGOPGKɝdIz=;bɵdbg^Pag}}IJ}|b~  !!!!!Vp+%R 2654&+2654&+)! RUURiiii pz[PNMQsbcaay$ռm[%# !2.#"3267`pxPp`agԺgaR78ef87IDDI32654&#! )|)n2+k_\\_lq#ateetae !!!!!!)`EQ !!!!!)[a%# !2.#"3267#!ax\mqp6]$oFFei87GF"^ !!!!!![Z9+y!![+f !!#3265[G6lo# !! !![xN!=Le!!![`EN ! !!#!24+D%^ !!!!H}+[ "3254 ! Dopddjk ! !#!32654&#?[enne_mddl[# ! !"32544pCGllkh\g2654&+!! !.#l__l Gq92fT?ZgfX֔-XspR'.#"!"$'32654&/.54$32Pn^|wPjpqyR{ɻo78LP3 _efRI[|EAtyhMhhLJDMm)f]ˢŸUO.. %2654&#">32#"&'!!hmmhgoooCiiCB稠b]]bO{.#"3267# !2AGL9KN4O=202177R!!5#"322654&#"IDCjihmmhfmmXc\II]ɨO{!3267# !24&#" ~fprr*kW]u3f~~CD015:“f}un#3#"!!!#354632D67DN`NRFy(%#"54325!!"&'3265"32654&ICjjCD^YURdolgeppb\CA\c !65!54&'.#"!!>32 A)esBIcVon#'b]!!!!BB`F !+53265!!B¹8[EB`\ !! !!Bsvyw-!!B{%>32!>54&#"!4&#"!!>32A=e?G[d:J\eD;]hhmVH wkHk`_`p{!54&'.#"!!>32 A)esBIcVon#'`b]O{ "32654& ! zkppkjooj$'{88V{%!!>32#"&"32654&BCiigooghmm b]]7RVy "32654&#"325!!tfmmfhmmmCjjCDw+c\IG\c{.#"!!>32+S+|B>q&$/`ne_{'.#"#"&'32654&/.54632gU\YCX8dp`h^`Bb9׭Y=0035+. ###44:90/ G!!;!"&5#3L7S쿠%N7>`!3265!!5#"&D @)esBIbp[.w#&)b]`!!!BCt`@g` !!!! !A9 9`` !! ! !UU~=#LbF`!!+5326?CBX@eRK `6:KR` !!!5!ipz`f:$#"&=4&+5326=46;#"3:Ĵa77a>MQcdPMmutWW#:$326=467.=4&+532;#"+?~MQddQM~?Ĵa77amWW͖tuFR#"'&'&'&#"5>32326E_W`  TPYaV`UMRPE:=MSPE:=KG !3!..D=^qd#.+>7+#&473xFFFFC; P3K4 @Z,lm*902i2/  (.##pj.#"!!!!3#535632_?EjfPͯS'&} FB=T#/'7.5467'7>327'#"&72654&#",a70b3)`84bRssRRsq Ϛ1k??l.͚Ϛ7n6?i/ϙ\\\]~!!!5!5'!5!! !!!!gg,hh,`BV3VB##   =3?.#"#"&'532654'&'.5467.54632>54&Y3DD ejFCڿM[g3;F!cfC;εL>54&'.'2#"&'&547>4c4frrf:g*;v8?smONNNNNmnNNOONOlbbaabb툉bbaabbf%#rs~$#WWWzyWVVUWWyzWXVnmmmmnnmmmmnu)!!"326=7#5#"&546;54&#"5>32$x^<4Pg1~U{PMNHSD=4>3:rWT@LHt8;##'  5 5JDkD'qsqF!#!Qc!!d55 4L"3267>54&'.#32654&'2#'.+#2#"&'&547>mONNNNNmnNNOONOFHF&_V%?c`"4 bbaabb툉bbaabb3WWWzyWVVUWWyzWXV5442wyVpP:NAD7nmmmmnnmmmmnX!!7d "32654&'2#"&546AZYBAZ[@;n++,,)+p=\dHHbcGHd3/0xDCy-03F !!#!5!!!o***~bbb!!5>54&#"5>32sM7/B58KND@[D 5P(2>-/oHyVQ(#"&'532654&+532654&#"5>32S[I=;t6U^afCLXQFH/o?;NQ`nQ$%@;@=/3--piE`HEf!#FfT` !3265!3267#"&'#"&'EZ[]ZD#0T(Pf+yPC^T utqqtG8 KSOO/0t; !###.546 ԫfN۲!!D}o!#"&/32654&'42os+[/-K4;'(>j/_[ .(R<n 35733!˸9 41Ziu 2#"&546!!"32654&߳sKRRKKRR޾ܾM~tt||tt~' 5-5-]EQF'Z'.d'2:{Z'2:'t[d{]'.d'2:u ~!!3267#"&546?>5%!!E:b:2/VNH[lSFU9=&EE1Q~d:3\/FPDB*(ǾcX:=L-d k&$ vu k&$ tu k&$ wu s&$ u{ k&$ su m! !!!.54632%32654&#"!TVjhE10FG/1ECpH"K+uu/L{6MM66MMRJ!!!!!!!!!"S)aECb^[o&&zNek&( v<uek&( t<uek&( w<uek&( s<uk&, v umk&, t uk&, w#u:rk&, s#u 3#32654&#! )#3{*m3*l^]]^l#ateetam^m&1 uu[k&2 vu[k&2 tu[k&2 wu[m&2 uu[k&2 su)"  ' 7 "yyzy3NPPN( +3254&/.#".5!27!"&'' .vKE.uJ CBpC\eFD\fs>;Du1:9@q.dkKMscdOOq0k&8 vu0k&8 tu0k&8 wu0k&8 suIk&< tRu !!3 !32654&#[enne]mcen04632#"&'532654&/.5467.#"!,T>ha;|C3g1AO2X?OL}VR[\ZG NJ%94%@uH9/D7'1Zt2UYnmOKf&DCOKf&DvOKf&DOK9&DOK1&DjOK&DO4{>4&#""326=>32>32!3267#"&'#"&546!354&#"kV]sefRI[|kW@Em fqsrA[}yhMf}unLJDMm)JMOMOf~~CD01kdkdŨŸUO..Oo{&FzOf&HCOf&HvOf&HO1&Hjf&Cf&vf&nW1&jnO(.#"32654&! 432''%'!%<2a/irufjo j_)F!!=dRy-\8 watr`9&QOf&RCOf&RvOf&RO9&RO1&RjVF !!!!!!zI~XˁF +.#"32654&'.5!27!"&''C+kp@G+jo=='`Cb?>aFeD)A+CN{8,,eP~--^f&XCf&Xvf&X1&XjFf&\vV%!!>32#"&"32654&BCiigooghmmb]]7F1&\j O'q;$OK&q{D z'4$OK='D o'$OoK{'sD[k&& tuOf&Fv[k' wu&Of'F[k' zu&O1'F[k&& xuOf&Fk&' xuRF&G rPR$!5!5!3#!5#"322654&#"I&DCjihmmhfmmrr+c\II]ɨeO'q;(O'qHek' y<u(OF'Hek' z<u(O1'Hoe'(Oo{'oHek&( xNuOf&H[ak' wu*RFf'J[ak&* yuRFF&J[ak' zu*RF1'J[6a'*RF'J^k' wu+k' wuKZ!!5!3#!!!#53!5'[Z~~~~[ջyX¼!54&'.#"!#535!!!>32 A)esCFHcVon#'kkb]m' u#u,v9'o:rO'q;, X'qo'k' y#u, kF'oo&,o|&Lk&, z&u`!!B`f'-,FU'MxLfk' w#u-Ff'oS'<.S'e<N` !! !!Bsvyw`e-el' t_v/l' t2vOSe'(</S'<Oe' rlo/t' r~Oe'yA/|'y|On !7!!'%[`E` j !7!'7Dtdpd XV^l' tv1m&vpQS^'<1S{'7<Q^k&1 xuf&Q^k'QyFN!!+53265!8#8ca\D<?yv\<F{$+532654'&'&'&#"!!67632ca\D !)e9:BIRRc[Zjyv\77#WV`b./ww[O'qB;2O'qR[k' yu2OL'R[k' {u2Of'R[# !3!!!!!!"# !2&^^Q)a * rV +ihO{'34&#"!3267#"&'# !2>32%"32654&=kW]v ~epqqAJv'yIJz"kppkjoof}unwf~~CD01QWTT88RVWQ:gl' t@v5m&vpUSg'<5S{'<Ugk&5 xNuf&ULl' t@v6_m&vpVk' wGu6_f&QVo&6z_o{&VzXk&6 xNu_f&VX o'z7oG&zW q&7 x>{&W r !!3#!#53! CBG!!3#;!"'&=#535#3LSOQNXYԍ>0m' uu89'X0O'q ;8'qX0k' yu8F'X0r&8$W &X0k' {u8f'X_0&8o(`&Xr6r' w|:@gf'ZIr' wh|<Ff'\Ik&< shuRl' t@v=Rm&vp]Ro' zWy=R&H]Rk&= xTuRf&]L#3)#3546;#"D`NC'67632#"'&'!#535!!!276'&"CQQixxxxiQQCB'o7667788b.//.brrTT@TTUTTV 72654'&+27654'&+)"#547676763! RU*+Ri5445i pzA(+D|.:}~.-PNM()s11ca01y$"2!MA? ^^mML!67632#"'&'!!!276'&"CQQixxxxiQQCo7667788b.//.bTT@TTUTTHE 27654'&+!'3 m1440n-1][0-ujju. 67632#"'&'!'276'&" BQQjxwwxjQQBn6666688b.//.bTT@TTUTT[>3 !"&'3254#"\_qOwq_`hչh`78__875IDDI[d%%# '&76!2676!3#".#"3267`pP+*XG6l78agԺgaR78efYCCIDDIO%&'&#"32767# '&76%676;#"ACBGKKKKLDD9KOMNCb7\E2WXXW1*Rw\ .327654&#%"#547676763! )^|qo)A(+D|.:n2l_...._lquu"2!MA? 10tfet10 3#""'&5476;!!m0440Ts-0[]1-ujju#+R#!!!5#"'&7632276'&#"IBQQjxwwxjQNh7667hf67765#b.//,TT@TTTTTTPVc-!254'&'&76! !"'676'&#"n~.9%0&;;;ge<;?AY)vFIB!%p ͤ2 OF:8W:XXYZJM e !!!!!dEa*+#V##^!! !">32#"'&'ZCDoqmqppn 3XX3=Aji87GF~arMMr{p(.54$!2.#";#"3267# $546y|afTTq}]afgΎ%" )*^V][ifcj76%%ޕfQ7!!!!!#3276)׈G6l78D銊#CCV3#"!!+532765#3547632D\\D\\DN\WXDNWX[Ad+%# '&!2676!3#"&'&#"32767#!a\QL[F6l86qpnppp6./$oFFei [CCG##"R& ! '&746?!76'&'&/ua3sJTUUUJr4agT=<U2\>RQQR>\))! ))4;4'&'&'&#"!!67632?27654'&/#'&5L !)e9:BIRRc[Z %*kID3$LU%/9%(5{ec77#WVb./wwީ 4aXksTH)%CSlyx ;# '&77l6F숉VCC݊  !3#!#3Zm'&!!!676ʜA7DWN[gvmtƧ$L`L ! !!476;#"svywcaZH-Fyv\  !3#!#3B]m 3''%'!%! 7:E"CB"' eaeca-%#"'&5!32767!32765!!5#"&G=UTee[D F\31DI^13D7887766b.//.bXfXUTTUTT@TFP)!!3 ;#"'&/&'&'327654&#[Dbn"&ReUOFO%,\e77ne~> MJEe ]76cen/T->32!2$7#"&5476?67654$#"o^|w((jངxyorx))z]]ouu78LP3232767#"&5476?>54&#"_hU\-,!#W9djkq`feh__!!b8جY=005+ ##4:90 e&D (323#;#"'&5'$%53&'&+32faQh2D\\"\&U]:vcDXW@.:KFG!!;+532767&'&5#3LS\b7\" EQ%Nrv.+w MY> !!!#"#54763DC+,VWN&&i1RQG!!;!"'&5#35476;#"LSOQ\ODN%NXYNfX f!!!;# '&BC78l6G숉#߂CC݊'8G' X1W%!!#"'&54767!!! 764Pr;;[[[\<;rqnnVtuutˤU#yǼ9!# '&!;27654'&'53F숉[77l6[jzGFEG{|+?#.,RQYah44aa3333iOo~VU))`^rqqrސ^_*)oOi/MY00`YM v:;;:no;:RF!+532767!5!!!Y[#Di/mA.+v#7RF`!+532767!5!!!Y\" pmA.+vf o"$>OK1"D}ve"(z{Oo{"Hz[R"2 OO&q;[R"2 O0&R [l' zv2O0'R[U"2 OP&q<IO'q;<F'q\f<%2'4#"632#"''67&!AyC&!LD`N.@;FR@ *eBY3/\0DXhJPH7qpif{,5632#"''67&6'&'&'&#"!!676326'&#&E_I-FBER@ *j !)e9:BIRRc[ZdyD&!\*BX\JPH7qw=B7#WV`b./ww<U5/da'%6'&#&!!632#"''67&'&5#3VyC&"CLJ`R.<8DR@ " QU5/`4EWlJPH>Z Y>F` !+53265B¹8[E`\R @%276'&#" 276'&"367632#"'&'#!5#"'&7632th7667hf677676677..8APQjxwwxjQPACjxwwxiPQCTT@TTTTTTTT@TTUEwnwE`-//-`c\/.bXRV{ ?"3276'& "276'#!#"'&76325!367632#"'&tf6776fh76677..7766CjxwwxjCBAPQjxwwxjQPwTTTTTT@TTUEwnwEUTT@T|Lc\\c`-//-!#'#5'7! !7'!'VCB"KbLfX@LBJJ&S[qs\!)'&576!27&'3267# /&#"(f`PphPLyf++jga`p JPJqf&sȘ!=%DI78 [DR"+'7&576!27&'32767#"'&#"XeWOL21^a,-` KLDD9KOMN=KK^^Ջ pe"W1zWXe !3#!!#3[`EmX'7!!!#5# wfBC5f1j(sJqH9y_J{5.#";#"/&/32654'&/.54632gU\,-"!X8woҶQG7 `efh^`!d9׭Y=005+ #ZTGx4:90RJ`!;#"/&'5!ip[gQGʁ`':ZGxfHV&""#547676763! !#!!2764&#F'+D|.:xSe77ne%/!MA? ~~76l #-)#3! 27654'&+3#2654'&+pz}~.-fi5445iѿRU*+R$A^^mML11ca01H;PNM()+!!!3#! 5#53!32765[[~~~~,/76{|76[b6=bbOPPO ) !!NBe33#3!!!#7!!#!4AK\44]KݾNVyOB '+/!3267#"'#7&'&!2737&#"7#34'g9Nfprrt_Uo/'*WJSn2)b!]u9[RM3fCD01(:!. unK(C2f!3#!#3265#3[G6loj\# F!!53!3#+53265BBaa8[E^wv\ g *27654'&+! !&'&+3#!5#l/00/l {|@@G899233Tb?--gf,,cc֔__-@?Xsp))N{&'&#"3#!#53!67632+*)+w<; B>PQq$/ JJNJn23OK{ .27654'&#"!67632!#3267# '&>EAQQtabzz<=hMhhihyyf&&JD&'IHm)f./ef\\U('..wxR{5!!5#"322654&#"IDCjihmmhfmmc\II]ɨR{ %!!>32#"'&"3276'&DBixxxxiPQg7667gg6776`c\/.7TTTTTT@TT ($276'&"67632#"'&'!476;#"L76677886AQQixxxxiQQCca\DTT@TTUTT`-//.bFyv\O{>3 !"&'326&#"OMO3OL:KGB=%12:02Os{0%32'&#"&'&#"63!+"#"'"''47&'&76!2S31vKLACBGKK.\>cHOLN9K2WX{PrWD&I*RF )%276'&#" &'5#"'&7632!;th7667hf6776NCjxwwxiPQCDD\TT@TTTTTT_Shc\/.bX\R +%276'&#"7676;#"!5#"'&7632th7667hf6776;`b\ECjxwwxiP)9+TT@TTTTTTՊuv\c\/A1O{"763 !"'&'3267!%!&'&#"Orrsrpkke~ K::^V663 際0D"!~~n:;?>O{5!.#">3 !"%3267O ~eprr/KlV^t+f~~CD01>f}unl_{ 432767!"'&'&'&#"6763 ?;#"'&5= 6V^:::L$G~ekkprsrrƳ"#^'WG; ?;:n,Q`Vv)?!"D087o[c{8c{1#"'&'5327654'&+5327654'&#"567632mqSSSQ@ULEi:<=7ujpi-322U56RQPNhi31\p$'(:<'%",*$#  HGa@?c{?#"'&'5327654'&+5327654'&#"567632?;#"'&75mqSSSQ@ULEi:<=7ujpi-322U56QRPNi@""_'WG;\p$'(:<'%",*$#  H+Iq87o[c{/%27654'&+5327654'&#& '&76!2i:<=8tjpi-322U{YJJOwhi31amq'(:<'%",*$#dR]`囜*HGa@?pF`53!3#+53265 Baa8[E^wv\RF 5"3265#"'&54763!3676;#"#!"&'3265tdo66gepCjyxxyM]b\E^YUQQRwOP:Gb\⡠rv\ !6RF`)%#"'&54763)!"&'3265"3265ICjyxxyMD^YUQQRdo66gepb\⡠ !6OP:O_"%#"'&7632.#"32767'#5!]dek񎍐aOQQQP(!"H2((10YX -Pu` ! 4!254'QU:U/./МH0WFHJDW-u`  47!!254':UU/./,H|(|HW;HJ9SJ^!32765!!#"'&D !)e9:BIRRc[Zog77#WV'Xb./ww%!54'&'&'&#"!476;#"67632 !)e9:ca\DHQRc[ZVo77#WVFyv\a-/wwF167632+5326=4'&'&'&#"!476;#"HQRc[Z_a\D !)e9:ca\Da-/wwFtv\[77#WVFyv\S!!!3#!#53[CCܐJ` !?'&5D")U{ec`l.7 yxS` %!53#5!#RIvk!676=3!#4767dB 54\ 55_ 9JH;JId!3#!'$&#";&kB9`;0*Pn^X96"BKTF !;#"'&5D"!]ac/.vyH&!!!"'&'327654'&+5!!BmNpMGgigfa``]IJLJMLN !qfst%)655cf54^,%#"&5!32767!32765!!5#"&@>TTeD F\22DJ]23DTTeD F\22DJ]23D] A*UV$"^.'"3276'53376#"'&'#"'&'&7! 8   ))NNYDAA@]MN,~nd6aFFN9[jl`-SPvogD@ED~w\nV@W`32765!!5#"'&'****|DBC>PQp$1 XYn2332765!!5#"'&'****|DBC>PQp$1 XXn23F`32765!;#"'&=#"'&'****|DBCE\ad>OQp$1 XY\vyߢl23V{&'&#"!!67632+*)+yFCB>PQq$/ XVR n23F{&'&#";#"'&5!67632+*)+|CCD\acD>PQq$/ XY\vyLn23`%!53476;#"RIca]!"yv.1Y`%34'&+5323!" ^acI1.vyY_A` "27654'&+!!2!&'&#R#$$#RGcc33h9--.!')Cv IH g`JKoHG!0/aG_A` "#327654'&'32767!#!!GGR#$$#!C)'!G.--9h33ccBC HI Ga/0!GHoKJ`_F{7.#"#"';#"'&=32654'&/.54632gU\,-"!X813"\ac`efh^`!!b9׭Y=005+ #b&.vyI4:90 F#"+532654763 Dba8\D\\DRwv\WXF3"535#35476;#"3#+53265 \\D]a8\DNWXCJrv\F{32;#"'&54'&+\\D\8abD{XW\vwDD *"'#5&%7476;#"3"+&#"3276\\D2hQaf}:]U&\"DWXDcvvK:.G`!!4'&+!23#dLSPP>NXY%FG!!!;#"'&5#CLD\ab`>\vwL`+#!5#&'&'&=#53!!!!3276IRQb+8"\DqB *d:xJb./!*wp[a3<#V.`$27654'&'!# 54767#5!D!-=<<<.!CPI;9BSELQskXWWXksTH;l:pA`#'&5!?27654'&/GB5{ecD %)jJD4$K;lyxl 4aXksTH`) !!a`@g` ) ! !!!gǪ `_`)!676;#"@VTeQ%& ʻKJKv`!!!wORf`Yx(RF`!!;#"'&'!5!ip  ub^`~ .vtfRsr`!3676#'7!5!254#"ip ouwU`+( f$0PPHE`" !!!"'&'327654'&+MpNqMGghhfaa_]JIKKN !qfst%)655cf54iHE` -&'&76767&'&+5!!5#7#$!2'X0#_ `c{/%7654'&";#""&5467&'&54763 gyNKKYzU223-ipju7=<:Eqma13ihw`]Rd#$*,"%'<:('殭p?@aGH֜O-%#"'&76323676;#"3.#"32767'#5!]dek񎍐\b\EQQQP(!"e2rv\710YX _`Du$!!!3#+"'#5$%3"'"3276BB2h Qaf }9^U'[#ܐ0cvL9.L` !! !!BLOe^-`!!!F`RV)%#"'&763253676;#"!"3276'&ICjxwwxjC]b\Ef6776fh7667c\\crv\!TTTTTT@TTB$327654'&#"676323#!5#53SM34YHGFFDIIټw\rLG`Br+*#҅^”B$3#!5#535&'&547632&'&#"3\vأIIEGFGHY43Mv”š^ׅ#+rB`GLrR '*%276'&#"!!!!#!5#"'&7632th7667hf6776;DmCjxwwxiPQTT@TTTTTTXLc\/.JRHg C%276'&#"!!!"'&'327654'&+5!!5#"'&7632th7667hf6776;DmMqMGhhhea_`]IJLKMCjxwwxiPQTT@TTTTTTXLN !qfst%)655cf54c\/.R 4;>%276'&#"!!367632+'47!#!5#"'&76323276'&th7667hf6776;Dka9>CjxwwxiPQ#!+~TT@TTTTTTXLu78878c\/.9GH-F.#"#"'&'!"'&5#3!!67632532654'&/.547!3ghV[--#!W9PUdkhoOQCL&nZ3adfh__ c9׭S=005+ (KP"(XY>‚)V94:90# %NF$,!5476;#"+532767!"'&5#3!3/\\Eaa8\"OQrSNWXDRwv.+vXY>b`%NsY6@K!676!2&'&#"63 5!"''47&'&'!"'&5#3232'4#"!;&54LOMMLACBGKK\]T@- OQ,8vK(S>»2WXcG 99^G%@.9XY>_9K%N#F :#"!3!67632+532654'&'&'&#"!!!#3547632D?IRRc[Zcb\E! *d::\\DNb./wwjyv\77#WV``NWX\#4.#"#"'&'!!6763232654'&/&'&gVc$-"!W9PVdkhnB?nY8_bei^`!d9V-=000+ (KP"(P1V53:90Q*F !!!!#!BhBL`D) 333# #333# #)lmmmǩmllmmmǩmlsPTQ PTQ)} 7#!#!#!#!SS>)>)ZJ )!54&+532!32765!!#"'&D\acD !)e9:BIRRc[Zj܇\vynog77#WV'Xb./wwZF 6%!;#"'&5!54&+532!32765!!5#"'&EDD\acD\acD !)e9:BIRRc[Z܇\vyV܇\vynog77#WV'xb./wwc#=4'&'.#"#367632 )A%%/45?p9;>S01Ug7BCc%#=4'&'.#"#476;#"67632 )A%%??v`;/34@p9;>S01Ue}CBKL6BC2 3+5327653#c>>vg$;~BCK\cC&'&#"#3676322CO,+(43H d 12\sg>cC327653#5#"'&'cO++(fH G 12\!g>8c 327653;#"'&=#"'"'cP*,;`v>@(24H G 12\!LBD}[= !#32764'&'3276?3#!3--4a+T`$B! ??R|(6')>Z*)s) 333# #)lmmmǩmlPTQ33+53276?ή(76YxA4 WRi*** XJtX##5Jڬ@2764'4#2""#"1jLKKLjt'&l&'STTS"'&4763"kKKKKk1"#""tSTTS'&l&'*l327654'&#"5>32#6|2!"8h..--,^hzKY:m8@+'6%@ vJyQ5*l#&'&547632.#"3l;ZMxh/.,-Z/f: !2}8d5QyJv @%6'+@"% %$G"5-5G%ʳ|f33|ܗ|F|f# #ۗfDy!f3#'#`栳fy!f373`栳xp#o+XqHEf!#FfTRf#Sfx[p#o+Aq-TR#SkxHE!#FkS`!! q|S`! q|&`{L&`|L!533ky5!##y #5#53533!ǩlݼݼo#!5!koF 332673#"& YKKY FFJJFQ;I13#R1 32654&#"4632#"&WE11EF02Djjjj7LM66MM6vvv3o!33267#"&546-#5-#E$1U%hn0CI'1 \V5m9'&'&#"#4632326=3#"&2* "}\T B%7! !$}]S!<T%>;+@9sf3#3#\fx2%7;#"'&7""_&VF;s87o[f '#7'373JKKJWWVVA '473733254ڄzvׂ3SFZc23#c=1&'&#"#"'&'5327654'&/&'&54632[C==7;+8$77KM@CEH=AAB>?$87:>? -,`d32  .-\d` 373#'#ڄڑ2*l#&'&547632.#"3l;ZMxh/.,-Z/f: !2}8d5QyJv @%6'+@!!5!is7мt!!5!3is4t!!5!3ishht!!5!3is4t%3!5iɼtp"qqf3#3#ݽ fx="oT$'&'&#"#476323276=3#"'&2* "}..T !!%7 !}/.S!2/l;< " .m;; fCefv_fef9_XMqefM  f kFo;1j;S1jjV"#5476?67674'&#"5>321(":!ONH\-u, 1%+&#t^Y.$'$ 02efjfe#D11'VIf###fxx k'jo kF c X!3ǭX* 3525#mmz #3&5mlz\f3#[fBCeBv_9#5353#ޥ.#33+bCWn!5!#T4'532654&'3#"&mf+#7&#"#4654763273327653#"'&;4~W$}00N"!;}^!}01N" J\ <2jAA h9j@A m#'+'&'&#"#465463232653#"&3#3#52)$}`N"B#5#!#}aN"?٢N#<2j'<9jCm# u u( 7!#'73!'3l|kkl(͌m#557'nuƋ#";#"&46;2DE1kkM67L  k&D b532+532654&#jj0FE1짚L76M#;1L_ kL Pe7#'&'&#"#67632327673#"'&T '!M0@eed8lT '!H5Aeed8P# $0)JI# $,-JI 6#&'& #&%6T 串 T 3OG$%%$GN((E5!'3#7kk͌tf3:ctVH%#:cHtVe #"=3;eO.VhO{t`85f!#6f;5' lj/f&+ yf') f'9 =f'9 f&#D $f'( >f&,Q *&< y $%e )!!)NTe(R=^+[ "3254 ! !!Dop^5ddjk,. ! !!-w+0^1 !!!!!!^==\q[2^3e !! !!ES#A4l 7I<['!67654'&'&'&7675!!b) WW*[*WW+ʅ[ʄSO[W rr rq!#i;g!"!3!2765!#cY'J1Z1J(Y6eP9ǗP^g\1 !!67654#"!!&Cp""pd8#\6?vk& s'uIk&( souYf' 4cf&8 HVf&: f' V<&H Yz$7!;#"'&''&7676'&'"7b =J\I,Vf v=dZCF+lT =O.'&xѣV00654&#"32654'&'567>3#"'8FSbFogsYk9|gFE hG1UsN)U+xwC X\Sf(TʲV`!!&'&+532Cd1!==;PVXJ P$)&!"! 4767&5!232654&'&m~ה.90&;vffwY)Fb]##p9С2 ODF8W c{1&'&547632.#";#"32767#"&546Aa13ihNPQR65U223-ipju7=<:iELU@QSSSq\?@aGH  #$*,"%'<:('$pPV#52654&# !!q?+46<u;&&B< V{!4&'.#"!!>32 A)esBIcn#'`b]O$767&'&#" ! 1QPOT0 ,E\^D, -TW^aLWoo`327#"'&'&5!,338<;] Bj@[+Xw` !!! !B?f}R`Au+6X'.+532! !8CTe=M8뚶<LT`w`676'&'3!!h%Sv3&zntB'7[D8rNįt`PV"6#52654&#$%&767!! %$mUO?+46gugAd];&&BeP+ȿO{RMF`!#327#"'&'&5!!#M,327=:^ ` ?[+Xw`V~ 67632#"&'!%"32654&!yoqm""xiCgooghmmĀ]bBOV{&#"#52654&# '&!2ɀ~}?+55}4b ;&&B~7>O<` "32654&#! 76)zkppkjooW;ٓz{8&h`!!327#"'&'&5'A,338<;] ` @[-Vw`4'&'3! '&5!376N.Jj?&^qBCViS(RG_^PaJB@vV8j2!$763676&~?@zL}q1y-j@V@}dxa.Vw`!;#"&/!.+532gUA0eD~B+evGwO6땻-R3wV7`65!!$!!w}C@AB}@d @V@ d`O`!!76'!%$!ru~gBg~urT(798#1'jr<1'jHOf&B pf' HOf' SLdY$ " 76'&! '&76! 3276Ckg1?Tcxo.n2Ly],?-m~`zUt]^i% #6'&#"'$%6!"'&3676F#SEJ_{st{/Cf3@R³#G BlO}վU%P!4'&'&6%6'&H7%&&hl3m;V[D<:  ff>9 fko3 '&76'&# BC%J&#"327676#"'&'&'&547676763267!"'&#"'632327654[h- &#,)#RgT)P:B4, !2AYpb=%=Q~xŘkQ:FW[f`I]M?"e  D8( $O:HAAC4D&0M`ds.#AL.#YIX^NV!327! 654'&#"!676! ptRKDqlQ4S) eǾLlxVP|DnӻTVa{!327# 654'&#"!67632[xF@:`g9,G|ꈉpDznTQUQ:6F.SllaM/!'27&#"6763267632&'&#";!@/4F##'4PV|5&"$!F47%#1b0> N&K(N 0<1#Z{{/%3'27&#"567632767632&'&#";!5n ,);!-::- :),ɞ9Y%33%9[&"167632! '&7676!2767#"276'&#"/uanr¤&"7}$lyg\s=<<=ss=>>?D8/ߤ27x _VTTTTTUVTU"067632! '&7676!2767#"276'&"*jWcgxxxⓓ"piHnYfa\Th76677889D8/ߤ27x _TTTTTTUVTU3V#5#!##!![`[u1V#5#!##!!MB`p ppudc+%&'&7676'&#"67327'$'&7G_~7'5.\4REwF _~7'5.\4REw `| 'qP~}Tddjk|{!%# '&76!2&'&#"%32767TvoupT9paDG 0 ~ihF. !?@qr~! {!73267%5&'&#"54763 !"'Ggi 0 FDao:Uouou !~rq@?! ҚV[& ! !!#!24W+DQV` '!!!!J~,N =V~ ("276'537676#"'&'!!!57887766^xpxxxiQQCQwUTTUTT@T~' /.bpp=73254#">3 !"&=agԺga`pPpR5IDDI5788[&{y=&yYek' vuek' s6u f#%!#3276=4'&'&'&#!!!!!!2G6l87 !):B֭\[銊#CC77##wuel' t@v[# !2&#"!!32xP¶]ooˍxx6,:rk' s#uf-T2654&+!!6!3 mednqZ^][]\8#/(A4&+326!!!3 #!!!Fcnrrmdc[Z[[]^q9y 2!=4'&'&'&#!!!!![\[ !):Bwu5o77##l& tv^k& vu5Wk& yu^ !!!!!!)[ZAN+ $ 27654'&+!!!3 m1440nc-1][0-ujju%e3!!Nn!!>!3!!!lv]4ؾ#[ENAde(* 3! !#!#! !3!Ro0hh1oZ9Gyy9y(32654&#"6$3 !"&'32654&+`|{>< T'+|yaa}[]V^1")"'&$)67jcfi^ !!!]}I+^k& yu.TR 36!!!U\#K1+[0^+[2^!!!]+N3[& 75W%!#32767! !F$5l?_~j*"kU6m#EOX[ &'6!!5$%ŒZK=>KԆUM,0#i;@ )!!!3!9p[ZNN)!!"&5!3!!*[CTHZ:yx+; !!!!!![n[Z#+N 3!!!!!!!;[Z[#ANNZh2654&+!!3 #!7.546)!m__bUf1:pG ?XfgZRp-+OK{DOW$  4/&547676%676"26%4ak.3HE@h0ppp{8&CCĀ0)' "0O[B>`264&+2654&+!2#!u8998GHHGIFYb3d2&??>>Rsj`3!!F`}gj`>5!3#!##!fVhK.&i`O{H"`3!!#!#!!3!5  BB  4B''U VZ{ 32654#"632!"'32654!#`Աnâwv@,gE03=᭮8^O2_` !!!_B3`T`T_&` !! !!B?f;`Aae`36765!!#f$g>~$uY`%IG` !!!#!stԫ`0{\_` !!!!!!B?C`V'O{R_`!!!_```V{SO{F%`!!!!`}F`\eV !+"327&!632#"'!#"32"326&Z:mm:`777C_ﻂ__ﺃ_a66a:mmwJJII*IIIIJJ@`[` !!!!3 {B?C``v!`!!"&5!;!B4ECPDzY` !!!!!!nOBBOB````)!!!!!3#BOBOB```$ `%2654&+!5!32#cGHGH??>>W`'=`%3264&+!32#!ݣGHGHB?~=W{{!. 63 !"'3267! 큙3t SKb$>>%cU{!36! ! '#!"326&B$kppkjoo`?>{B&` "3#"#"!6767&'&54763!!~GGR#$$#!D('!.--9h33bdv HI G>a/0!GHoKJOm&CO1&jF-%+5326=4'&'&'&#"!#535!!!67632aa8\D !)e9:B%IRRc[Zwv\[F77#VW,rrb/.wwm&vxO{!327# !2& !ST t4 Uc>7*7>bK_{VLW1'jnFMQ`!32#!#!6762654&+/g4?~$HHHHv`W`%I$uY7??>>`%2654&+!!!!!!32GHKDv4B?C??>>'`VW$67632!54'&'&'&#"!#535!!!IRRc[Z !)e9:B%ib/.wwoF77#VW,rrm&v_m&CF&_` #!!!!!B?C``[23276=!32764''!#"&'#"'&467!3]^.1Ua[a/2.^:j;l)*mnꀅl@d :]/tmiqmw AFf^^ FO`LZ3 #!!!5!!2654&+[9mednu$^][]$32#!!!!!!2654&+6B;ţGHHGBI??>>'3267# '&#!!3676!2.#"!Olg``pť^[f'Pp``gj=XybDI78ѯ87IDLmz{*!!32767# '&'#!!3676!2.#"^f,KLDD9KOMNx)B+uOLNLAFK)L4W1yF`Mw20W17'!!!}~WW H+QH-` !'!!!'kL Ll nnnd6f`6p7 7!!!!!!!'!5 -[Z}}WW9+QH H`'!!!!!!#'!nmmB Kklp7w>`=6d6f[)4'&'!!767!!`8TM4`fu vfMAM& Hkr3 3rO`!!767!!4'&'#ޔId&dHC':8&DM'<'MU1:/U0!!!!!!!!4'&'!!76|A@[ vf`8UM4` 9 3rM& Hl#` !!!!!!!4'&'#!7kzB&dHD&;7&Eߓʋ>`='MU1:/UcVpkKR2327654'&+5327654&#">3 #"'&#"32&'&#"'&'&5476373f8B JT@7JL@@|rTUga>>yFFG,4-(Y_W_T[[T\ZhBTEDɠ6 5-XN45-.]V^*) `_TS"(_asq2I (( CQWU-HtfKR%#"'&#"32&'&#"'&'&547632327654'&+5327654'&#"567632373!e:'/#^[FTMMGOLOfCYM:FP$69*-=7ujpi-322U56RQPNhi31amq破KK/Q4FnU?()2<'%",*$#  HGa@?pRx)6765!!5$'&5!!N7G[r쇋ZH7MZ8Hn{efjlJ8V%6765!!$'&5!!L-8AnoznA80I1DS^Z|(p&ta\UK [iO{ 2#""!&!26h$'LV wx `]{8(8BBc !632.#"! \eck5:f&c4 r{!>32'&#"!CHX15 Q`qV l###!632.#"![z\eck5:f&cl  i4 rf#pcOo+[a!A23 !#"'&'# '&76!367"&'#";6762327654'&+JQEQ F QEQeH: QXWWWRLRWWWXQ !""ON!"wxxv!!vxxw"O{'N#";676762327654'&+"'&'73 !#"'&'&'# '&5476!3767620l6997k.!; 0j8777k3 !;" 35 !;1ꁔ0 ";! wTVVU   UVVT Պ윉  霊 ["x=O}"[G >#'##'##'3276=!32764''!#"&'#"'&467!l6666666l3]^.1Ua[a/2.^:j;l)*mnꀅl@d :]/Gxxxx-miqmw AFf^^ FO &#'##'##'!!76'!%$l6666666lru~gBg~urxxxxT(798[V!!# '&76!2.#"Ph*Pp`ag#3[f87IDOV{%!! '&76!2&'&#" OLNLACBGKKBD\2WXRT1 7'77''''7'77'7!Vl_^lUlUl`_lUl}|}}~}}|}}~c/"'&'&'&547676763!67676762# 8 ! 7 f    F567632#&'&#"]VJuNN ,-K[ 0LLMF%%~!#3!a\nn~5!53#5a\npnMl+T +1 i+x i+1+x+`+H T4- #)/#53 3#'7%'%'77#%53%JJn3xnxmdyldxܛ  A@¬@yoyo zV!zRRVk)!!!!#332673#"&]}IZKVEDVNV =<<=V)!!!!#332673#"&_B3OCm YKKY Q`T}VFJJF+3 #!#535!327654'&+~~[~Mm1440nXujjuX»-1][0-3#32#!#3!27654'&+㡡tjjs4BvG$$$#Hv`XOOX`>B ?;!  654&+327'7+!! neE1i_~?Vj_ dl_c~:L~vc~V{)654'&"37'7"'&'!!67632r677887g&!x>KiQQCBCQQixxxeHcTTUTTU}/.b b./}e3!!!2N3!3!5F`:}4e 3#3!!!!uuon#D%` #53!!!!!uuF2?f=!!2!#3276=4'&'&'&#!!!!֬\[F6l86! *wu銊#CC77#FA`32+5326=4&+!!!aaaa8\DD\Fvwwv\\S`*Y3!##!#! !3!3!h1oZo0#Ayy99G"`%3!##!#!!3!3!ZBB  4B5 ''U VVyo'zZo{&z#!!#!!!X[x#AL!=`%3!#!!!=B?fa`A'!!73! !#B>[>.xNDD6J=s`'!!7537! !'# -B-cf;c3.`-~+5!3#! !!#5[~~xN~SS!=L '!!!! !!#5BGsvywkk--9 !!! !!CyN#!=L$` !5!! !!y>g;Aa!!!!!!!!\Y[Z#Ay9`%!!!!!!!!`DB?C'`V !!!!!!][Ny9` !!!!!!_B?}'`Vf#!2!#3276=4'&'&'&#!!!!!]֭\[F6l77 !)wu銊#CC77#NF`32+5326=4&+!!!!_baab7\EE\vwwv\\S}`[ B6767654&#"&5763232767# '&'$'&76!2&'&#"X51C?2EKD9KOMN!Pp`SkWnj*XR`PVOEK"#kr$1!(ef8704O.{@%6767654&#""'&76!2&'&#"4763232767#"'&;<%!-).OLNL@D9PIKK#/adRV,'-,;24,;vVCB N#i3!# ! ! !c@j&&k@#A%`%3!# ! !!~UUb=#L !!!!!!!!"[YKBC#NA#`%!!!!!!5!!BB}!!!!"'&5!3!!(Z*^[[ !)HZ#Aywsoe@7#9vd`%!!!!"'&5!;!!CLIB !C[V(TKh0+)#"'&5!;33!!##^[[ !)Zywsoe@7#E9+yv!`#"'&5!533!!##*LIB bRCRb[V(TKh0+ ټ)!2!=4'&'&'&#!!֫][! )ws5o@7#K $-676! !32767# '&"'&=!%!&'&#"(DCnqooppm{{ȱ||=8~4WW4@##G7϶.NWjLF rMM |{$-676!2!32767# '&'"'&=3!4'&#"Gr ~fjkprrsr}ikj*! 56W];:xf~~!"D0~ll0F]/&f>?;:n _'= o|{'>,* k' ysu"F'&f"32!#3276=4'&'&'&#!!!!Z\[F6l86! *[wu銊#CC77#!F`32+5326=4&+!!!aaaa8\DD\B?fvwwv\\S`A0V!#!!676!RYKCpk3 32765!!"'&JL@@|rTUga>>yHF7@V\;7[f45-.]V^*) `aTS"'`_B08PL ʛ{532765!#"'&54'&+5327654'&#"567632;,AJ%10qΊv=7ujpi-322U56RQPNhi31at19p5'=Pm̎wzh<'%",*$#  HGa@??HV')4'&+5327654&#">3 !!pJL@@|rTUga>>yHFYf45-.]V^*) `aTS"'`_3V{()4'&+5327654'&#"567632!!=7ujpi-322U56RQPNhi31amqCR<'%",*$#  HGa@?pay0H!676!32765!! pk%#"&'#"5!.#">32>32!#3267%3267%2654&#"kW@Fn eprq@[}ygMkW\teeRH[}MOMO> f~~CD01kdkdŨŸUO..f}unLJDMm)#` %24+3#24+2)#53Svffkrrk_ȏYbX3ww&:jO{Fga32654&#%'%)jqPGEEGQrw{k"%WK}LW$&#ga'%#53326&+3)LQwwBfaFRWJBva !!!!!!F`3`c{1#"'&'5327654'&+5327654'&#"567632a13ihNPQR65U223-ipju7=<:iELU@QSSSq?@aGH  #$*,"%'<:('$pL`!!!!BBB`L$Q`!#"&'3265DD~@0].[T` !"!`` !7!!'7FdXd`iCG`_`O{RO{Or 4&  67  ߚ!.v~~vv||vD""FO@r%!>54& !.5 :-+-,@JPT@TV0VX +>54&#"3267>32'#"467'7]%:}'<Fo'([Hq()UK/w}HO0u|CDjKmFEE!lMpO{&05!.#">32>3 !"&'#"%326726&#"O ~epqqAJt&xIJzKlV^tlpplioo+f~~CD01QWTTRVWQ:f}unѫBO/{ 4&#"!! Sojkp'$/8Q/ 3265!! oilpP/8]` !2+!3264&#^nARFKKF`ML&`&` "";5!!"'&54767&'&'!3~R#$$#RGBCdb33h9--.F!'(D IH JKoHG!0/a>G%```!3265!#"&5BKTUKD``vddv`,Xt@/v@#{#3!!#!!3#%!2654'&'67654'&W@j0anj-01k2193!3,h4@3##p]88(;YtgU&`Y@g`ZR`]h/`%2654&+57!!!"&'2ruxupP1L3/omq,)*+SLi--:;`3!!H``I_`!!!!`}]``!!6765!!5&'&5B9 B 9Baa`au2 X 2uavRRve`b +"3276=7#5#"'&5476;54&#"5>32?A-9(')33Ic>=MMxLQA880AB**&)(=L]998[n440, b /27654'&#"367632+32767#"'&? .9'(*24Hc>>NLx'&PB790ABBBKM*&)(=Lf]998[n430 CCb 53#5#"&632264&"?)32CuuB24DDD\[8"3^^^b6>L#"'&'#"&=!&'&#"56763267632+32767%3267%27654'&#"D~8T=>(,sF,,OACCGHIHGfKK)9?@NnA@NLx'&PB790"!7;H 4>!.9'(,+,9F$#' 8<77^n430 K9##B=d*&)(=b  264&#">32#"&'#3AEEAA#""#E)gAvKKKKvAg)^^0//074\\\\47[gb 3#5#"&632264&"?)32CuuB24DDDP[8"3^^^b #!32767#"'&5476324'&#" &,,Q?CDGHHHH_`^^YZ""6;%$ 9F$#& VWXXYYR9##! >b  5!&'&#"567632#"&73267b,,OACCGHHHH__!"6b#+532654'&'&'&#"#3>32>=t];+ ?$$-g?n98}CC4KR 10Us\74BCb "32764'&'2#"&6C$##$CB#$$#B\\\\00000000WWWW6b67632#"'&'532764'&#"b1/12aaaa1200$++/V////V,*)* WWWW 1111 b4'&#"#4632I$#BC$#Ժ\\Z0000ZWWb327653#"'&56FBD#$ӹ]\Z`00ZWWb #3>32#"&"3264&.)gAvKKKKvAg]A#""#AAEEb\74\\\\40//0^^bd3#;#"'&5#5355hw32ee,21w b3327653#5#"'&b ?%$.g>n9:?2MMLB 00V5[74BCb!53233276767654&#!5!#|@3OMM"! aX|\7 ?H.23=mrb`(#"'&5332673327653#5#"&'55?n8:',:?$/: %a:Be:BC~C<^Y4hb533#b̝OFy(>32#"&'!32.#"2654&#"BiiB3ۧYTRdplheoob\\c !65S`%!535#535#5!#3#RIF!!!+532765'!BCaa8[#"wv..tb #367632#"'&"2764'.*24AvKKKKvA33EE###\s[8\\\\^^///b&'&#"32767#"'&7632*)*,V////V/++$0111aaaa201 1111 WW6WW bM/;25&#"&'&#"63+"#"''45&'&7632 SJ/**),V0.:_ (r>-aaa201 * 11XE-c@0&)W6XV b/&'&#"327654'&7#"&547632''7'37:BHIAB#$]B\\VUlj?<JDS^00ZLHHSWWKJzBH6qA@H6ba1#"'&'5327654'&+532764&#"567632E#$MM4453)5/-A%&'#IBFB!?6"00"3421 ((?a10  "~0( PT7#$bP#"3###5354763Op+ee9;y&,,f11b33#+532767#53ee;=te#:xxv?CBb ,#"'&5476;#"'&'532765"3276=?)eCtLLLLt`a;8786233d/.?F"!B?##64Z[~ZZ̗PP ++\\TV-,.-Tb3327653##"'&b *?%$.44>n99~>R>01V4P7BCb3#33##5#53rrzzQmmb 3?'&5b6 Nr@>LDC~b !53#5!#Jzzq lb5!!53#5!#bJzzqmmqlb$3#33"+1"+5&7637&#"3276_B3>t@ wO$;5: QvX7Cw*!b 3;#"'&5b:_u=>KCCrb33+532651#b<>td#9,(sBC4AbD3!!c0bb067632+5327654&#"#4&#"#367632&55@m:9?=t^:'.9?$/; %10;Be:BC}CCAmB<^YGhb`(#"'&5332673327653##"&'55?n8:',:?$/: %a:Be:BC~C<^Y4hb'#=4'&'&'&#"+5326=3>32 @$$;=u_8-.f?n98>R 01U{ u@C4K{\74BCb"&'&'&#"#367632;#"'&5 :)$.32@m:8+;^t=B0 1*[s\9BCK4CGnb 33##blmb 2#"&6";&'&+3276\\\\C$#A+$CB#WWWW60$==$0*00b#+!535&'&7675#5!#'6764'&I{E]]E{rE\\E$##"##1`AW6WAghAWWAaZ 00M 00b=&'&#"#"';#"'&=327654'&/&'&54632xB<<6;6$66KJ!:^t=><@@B;>#769>=  -,`d327CC} o) .-\d`bs#"+532654763rp*==te#:+::z&asBC4Kf11bd3#;+532767&'&5#5355h:=ud#9b,2ee,v?CC,1w b*##5#&'&'&=#53333#3276r.f>T#9zz @$m[74 Cm?2M6m ! 0bb(%27654'&'5!##"'&54767#5!,'%~%'+12/%Ûbb$*57q+-AG%nb#'&53?27654'&/`,*!VWNr@> C.,!0x!J=XXXDC~q_71P<@/(fb5# #35̞Osb !!!5!p*NOXb_!!;#"'&'!5!p*OJ^u=<OF C@uXbM!3676#'5!5!25&#"p*[F^IrOSJ6mONX-b 7!5!#"&'532654'&+*\1G0-``A@==<:X\/0]j؏ ?:P|A@<79b !32767&'&#"2#"&76  $>;%  #=;&MNNMNMG?DD<8ivw^wwwv "$OK{"Dq#@%&EuQ#N%Q#E#%#E[ojcv@,Oof"vq#@'R&GuM#'RM##G#'R#Gw#z'Ro"zGH&'zZR<&GNeu"( #Ok"H&H eu"( Ok&H e#G(O{#WHpe#(Op{#Hoeo#zc@9(OoF"z#HQp#?)#3p#8?I[a6#H"*RF#J^p#O?+&KuM^#+M#aK^p#j"?+*&KuRo^#zg+Fo#zZK^#+#XKp",Dp:b33@LIu", V' kcv@,.&N uP#.Q#iN#H.#NMe#9/M# O;Me&/'S&u MXO#qo;-e#/Ub33@OHe&/ZE&OnWkcvu@,0f#vPp#?01&P=M#a0M{#P^`&1 zj&QM^"1M{#aQ^#61{#Q~^&1 wD{&QV[u"2 OS"R [Y"2 O3&R [u"2 Ok&R [u"2 Ok&R kcv@,3Vf#vSp#?3V1&Sgp#?50"\UMg#N5M{# UMgQcq2@@nPM"qLQg#%5={"Up#?6_1&VQM"6N_M{#Vcv=@,#Z6_#v"VVm"6 _c&#Z2Mp#?X_M0"WY p#?7GY#(W M#A7MG#W #7Gbk33@W H&7ZHG&WZ[0#N8\`#Xo0#8p`#X0#8`#X0u"8' uS tS"X' ug1 t)]0Y"8 "X'qj HcM@339:#Y M'9M`'&Y6r&: v|@gm&ZCZ6r&: t|@gm&Zv6`&:j*/@g&Zj6p#'?:@g0#zZ6Q#:@Pg`#-Z#ip#?;0#[#ip#j?;1"jv[Ip#?<F1#\Rkc@,=Rc"j]RP#\=RQ`#]R#=R`"8]#KGp#j?W@g#ZF#\Ou#{D#3p#D?A P"$OPK{"D 4'u$OK'CD o"$ VO"D o"$ AOM"D "$ YOK"D "$ DOK"D Pk"OPKf" u"$ aOK!"D u"$ aOK&"D "$ XOK"D "$ aOK="D Pz#OPK="Me'<(OM{']He4'<u(O'_HeH"(CM@33O:"Ho"(' ty wKuO"H xo"( O"H "( OK"H e"( O"H Mek'<OMf']yB4'#u,`)' M'#,M' L[M'2OM{'GR[4'u2O'IR[o"2 O"R [o"2 O"R ["2 OK"R ["2 O"R [Mk'OMf'GaFk' tubUf'vcaFk' vubUf'CcaF4'ubU'IcaFG"bC@L@33U:"caMF'bUM'GcM0'8M`'XX04'u8'ZXk' tuqGf'vrk' vuqGf'Cr4'uqG'ZrG"qCL@33G:"rM'qMG'XrIr' vh|<Fm&CZ\PI"<_F`"\I;'j|<F'"\II"<CN@33F:"\YG&4YG&4pYf&4Yf&4Yf&4Yf&4Ym&4Ym&4q G&! G&vf'{f'f')f'\m&qt'm'scG&8TcG&88cf&86cf&8 cf&8ccf&82,G'2G'df'^f'f'r f'VG&:VG&:Vf&:Vf&:Vf&:Vf&:Vm&:Vm&:&G'0G'Xf'Wf'f'xf'm'tm'sG&<bG&<lf&<f&<L96f&<(f&<m&<im&<cG'G'f'f'wf'rf'm'tm'sOG&BOG&BOf&BOf&BOf&BOf&BG&#L\G'#of'#sf'#8f'#vnf'#G&HG&H}f&Hf&Hf&Hf&Hm&Hm&HG'(|f'(Pf'(km'(VsOG&LOOG&LJOf&LFOf&L=Of&LnOf&LnOm&L\Om&LWYG&,lG',f',f',f',f',5m',Htm',sYf&4uYf/cf&8?cf0Vf&:Vf1f&<{f2Of&BOfOf&HfPOf&LSOfQYVG&eYVG&eYVf&eYVf&eYVf&eYVf&eYVm&eYVm&e VG& VG&Vvf&V{f&Vf&%Vf&XVm&mV'm&VG&VG& Vf& Vf& Vf& Vf& Vm&Vm&V&G&V0G&VXf&0VWf&/Vf&Vf&Vm&Vm&OVG&@JOVG&AJOVf&BJOVf&CJOVf&DJOVf&EJOVm&FJOVm&GJVYG&HVG&I Vf&JVf&K&Vf&LVf&MV5m&NVm&OYF&4Y&4qYVf&PeYVz&4eYVf&/eY9&4YV9&e k& yu O&q;Gf'Ȫ/f V&QIGtVeQIG3527#RGez9;m' uujVf&TV{&:Vf&1V9&:V9&*f'Ȫff'ȪfV^&6>`f'tqf'#+m' uuF&<g$&<qt&<i*9&<tm&<b'k& y#u:rO&q;f'Ȫ=fHjf'Sf'Am' uuF&H&Hq&H3VG&DVG&D9&Hm&HIk&( yduIO&(q;kf'(!Ȫ$fG'%T;&jl;5 TRfCOVf&\JOV`&LJOVf&QJO9&LROV9&JOf'#Ȫff',Ȫ>f1V&,BHEfvQIG#3&5HGzec!!d5c!!f!!f4!!34!!3"__)&BBXJ!3ZX`tX!#2Z`!#2Ͼ[`tX#Z`X !3!3ͿZ9ZXb`X !#!#2[2ο[`^ !#!#2Ͼ[2ο[`^X !3!3[8[`^/;c !!!!!5!4)/-;c!!!!!!!5!!5!4)<} `467>32#"&'. /.0uBAv-/01..vBBu.-0J235624IJ336633 A AoH!!D}<!!!!DfD}} !!!!!!]D5DfD}}}y; 4 #/3?K"32654&'2#"&546"32654&'2#"&546#32#"&546"32654&AFFA@DD@~@FF@AFG@`H§@FF@AEFh{rs{{sr{ؽ۽8|rs}}sr|ٽڽ ؽ۽٨{rs{{sr{ ; l "-8@DMW"32654&'2#"&546"32654&'2#"&546"2654.  &#3  &54$"2654 AFFA@DD@qAFFA@DD@~@FFFGO HȷOFFEh{rs{{sr{۽٨{rs{{sr{۽8|rs}}sr|z ۽1{rs{{sr$`3$`u$` "R$`]#R"$`#3`u$`&V$`]&'V<#%#Ͷ#J' 5JD'qj'5-E'{#p###{~'}~!5>32!3#~ T\mTGT:=&D1"B:*(ǿbY9>K-dM B00_  $'5 $0ovlSPPSEFE&0j &$ 56$ 0gri&FEFESPPS##3 #|||v#"$9# {# { C@`#3H  3!!#3/T"^} #5!!53#5z/^?,&""v~y&"2~y'}"M[%3!#5!!5!3#i ŽcZK;+ !333>54&,fN۲S3'#"&'.467>3M~Bu.-0/.0uBR2633235S'372+M~Bu/.01--vA532336$ _` !3!!ZEu}0j&  a*a+ D33 D336B##{FRa0X  #'7!5!'737!!^´1؎؎1َ׎") !!!<<<OJpJ J$`##R"+} !!!!!oT,,*,,!B !!!!!}T,>,,,p,!!!!DD}1}Z0 !!!!!!!!ZELEEEtd %!!!!#!5!3!z34,,,p,\rsw !!!!!!DDD}}}}}w !!!!!!!!DDDDa6 4&"32767#"'&5476329DDYYXXXYYY@@@AAAAoppqpqqpb.3#3#bQ2 333##5!5||W$!!>32#"'&'5327654'&#"x1US[[GDDED<<6L.--,N-53<ߞMLKL ('&AB&& F-"327654'&&'&#">32#"&5476328884/.,_55 %T3VVgg9569$%IJ$%%$JI%$ 56i{PQuv K!#!Ln1sy6E ,:"32654&'&'&547632#"'&54673264'&#"< <;??K&&OMNM%)JV)+RQRRU32623!!>=!!B=>BF00Gi8777jL+/45P|@??@|Pj26d:)532767#"'&54632#"'&2764&#"q3]-_55 &*+2LNgh:558889756iJK|vv $%JJ%${Rk !!#!5!*(؇(kۅ%%{RF!!{)F{AR!!!!{))ń{c#&'&47673V*))*VH%$H}|}~\6764'&'3]I$$$$IV**)*W~}|}c#=4'&'.#"#367632 )A%%/45?p9;>R01Us\7BC6T,dnC{dbTtdQTud2C.dWC/dFT0dKC1dET2d:T3d{R4d{%R5d{R)6dcif7d\if8dEl%!!!!!!#"32.#"3267Ga4HT&THHMMH`**9  9*)73Ʈ27[9)06&'#7&'&76%7373&'6767#"'#&'X;72-( 20 +65ZRYZYiKJ6c&f0;:= s$-ef JPj ,e "I78>!Fi+6,6767# !2.#"!>32.#"c,)X[Zir=iZ[ac-95` %F%iq "I77ef87ID: ̦c[!!!!3#!#5)םz[X"Xpj#67632.#"!!!!!!35#535#5=nrSP?Ej2/PPͯw|'&>:r +>32!>54&#"!#&#"!!>3273@$=e?G[dG\eD;]'$36WhmVH wk4n1`_`IO#5#535#53!3!3#3#!#!3'XEH}IWDxJJJJ P3264&##532654&/.54%!#!! 3!!632.#"#"'&'!"&5enneExM?Bh^`Bb9׬\?f\BL^YsgU\YCX8ck_ml%N9"/:90/ # U~^> 0035+. #UF2654&+!.+!! 32654&/.54632.#"#"'&l__lb2fTb Gq94[_eh__Bb9׬YthU\YCX8dj$?ZgfXspR֔-v/:90/  0035+. #"&)-1'#53'!!7!!7!3#3#!#!#5373'!37oP1L1m1N0n0J1Onpxp____*:vvVVBvvBvvvvG0 ! #4&+!% 3;!H dd>Y*5=Y7"1%#"'#73.5467#73632.#"!!!!3267UdDOXOtFAdUIYs(NEP-rYKR78 87NO{v$$ zzOO6!!!!!!#5)YV,5c`u!8LȘ !'75'7!!!77"Z'Z'BCY(Y(<^:MS:MS#9MR9M$u-"/;37367'"76!3 !7324&+3 #"'3254#"$*`!܏x:nY_>wkj.CIFD?6My 6Ze6?#k^|yf,2F$RN7P? *1!3276%!64'5#53!23#3#+!#5%!&'&+,]3qObbTreerTbJ3]_B7P*PPgX~Ug(gT_g6O4676735#454$#">32!!#3!2$7#"&547!5{Do}o^|w hU1$طorx.L# %%78LP'5)8xy65ELMTN )%#&'$%6753&'&'6767U]34ǒ42]UIR=@@32#3.#"3267#"&632D=0-9R! ^xKYJY^P#^T[1[ee[4^NHy>>x..,-_K y EL61!657@!vv#BC'&oru#5!&'67!!&'&76CKKZ*((*+'(*aEvvtXWe>W ! xw$'1.#"3267#"&632#3"32654&'2#"&6T\0[ee[4]OHz==y _DKKDAKKA@!vv#B5qtsrrstqT$ 15!3265!!5#"&.#"3267#"&632#3  %?LP T\0[ee[4]OHz==y _GhD"dUrmJI@!vv#B58"r)8!>54&#"!!>32xf @:daDiYbVH9O@Fa^ N#676'&'&#"!#737!!!67632! *dII`؋$B#1ZZZcFE(w77#WVrrb./wwV_2632327#"&#"7632327654'&54?#"'&#";jworulpq}dns(Sa+jq`O81??HH/+y{/U:11::b:~"FLxUBnb_Xċykb[OP%273#"'#67&5477632654#lz16?Dl4;`I g`<A5fT Uf59dNT1QGdX EU>P%)"264!46!"!!5265  &!!cg88g8N}N ?oqqȎ>;VȎ>;T^5 '9!2+#3264&#"32>54&'&$  .546TGMMG:ٻNNNNmnOONOPaaaaBx@9WzyWVVUyzWXnnnc;0<67632"'67327654'&#"#"'&57&547327654h-uw>AnZE#ZbL83m>Qs49*vb$$1UE?LPק=+<$~\oA7n=B Ũhb)<(,QBJJY&54'&#"#"'&5327654'&#"3"'&547632763227767654'&#"a@DT[QQ\\f3->=-22,NF-22/:;\\\\Sc*!q:;[Yj )aT'03&' +!!2!&3&#!!2767654'&'E\VQlcvp:o8bB# #3%TT"6w/8؍$~hHf%TX$D0 32654&#+!!237! !'!]ee]5o%fe=qr_mddl=`o'4.#"#"&'532654&/.54632733##'#JT$-)'?fVy}9rAS_-'*.9\Uwp2frtܯc{b!  QDYb+  T@Pa M`3!!!!!!!!!!!!9i{nH/ͯ`z  73#######5kk̙{D|eKBM1,1W!!#"&547!!! 4PrvwrqnSSnVˤ U#yy9. mp-)% 7673 $54$32!"53!25&'&#"hʰ*X0~Y-;Y-Y-Cc1NS2j?Bdjl,>8?]/c6gUc1NS2Bc1MS2c1MS2~ `  # # 33!#!#3!!!!!34l8HIyGa72!#Ie%K&0 !67!>32#"&'32654&>54&#"v/2 dY}X_u%&$R`UHEM,:54&'&'&' 76767654'&'&'&) !#"&546;&'&5476Q||_8K5/--/5J7aZ1781Y.l_...._lΕl_...._l.||a7J5/--/5K8_Y1871W:2TS2:3:no:401teft0110tfet10#V:2ST2:R>4:on:3[HO{ZQ 5!!Zb<Ƒd 3'#'~bزwxƑiQ '7!5!'7ȌwƑd #737D~زxƑZQ5!'7'7!Zba<ƑwwƑc3'7#7'~a~vƑw;Ɛ/3 7!##Yc̪4/3 #'#5Y3c̪4/3 %!5373/Y c4/3 %'33TYc,4ZQ5!!!'7!Zb㫼m6Mm<JxxƑiQ'7!'7!5!!'7mmfȌwxJxƑs/&'."#"'&/#7!#267676767632GQF=4RHUYEN8XYWFQF!:9MFXZCP6;W\)""!&OG='""'=`,c_""!&V@>&""(@V&!""_c`='""'=GO&!"")ZQ53!!#Zb5c˫<WƑWƑ\3''#'5'~b5ز5wƾXƑWƑiQ'7#'7!5!'73'7̃c4ȌwƑƑe#757377E~˃ز˲ƾWXƑƑZQ5! !Zbr5<W‘WƑRQ'7!' 7!'7˂5rȌw>>ƑZQ !5!3#Ųb; Ƒ6d %'3'!!5b~bƑwhiQ !'7'7!#3A;aƑww\d 7#7!5!q~hƑwd%7'3'7!!5b~bDDƑwƑwZ(5!276767654'&'&'4#b  >/5')+''50= Ƒ  +,x>@9>*+i(!"'&'&'&54676763"3!'7'| >/5('+)(5.?  a +*>9@>x,+  ƑwwZ;3276767654'&'&'&"#5!5!54676762#   ƑM>x,++*>9A=x,+i;54'&'&'&"3#"'&'.547676762!'7'7!#   EE?.5()+'(5/|/5')+زa(M   +,x=A9>*++,x>MƑwwZQM2676767676322676767'7'7"'&'&'&'&'&"#"'&'5}  "#(+!&  #ƒa#Q"$!    $"(,  b $ -#% $, ' בww"*&  *&"ZS%'#5!3'7'7!9b!B9a2'ƑY2Ƒww$ 7'7jf|ᗑ_mHu]W)97 !#!5!b?Ƒa !!'7'7!b>bƑww<7 !5!bgLƑa 3!'7'7!bfb<Ƒww !7#7!~+VƑwZ 5!3bt Ƒ z%#4'&'&'&"7#74767676286BAAC68~--TPnddnPU-,VJG@9!!9@GJVƑwƆvx]Y6006Y]xv)z%476767627#74'&'&'&")-,UPnddnPU-,~86C@AC68vx]Y6006Y]xvƑwVJG@9!!9@GJV 7!##7!Y;cc̪4'wwZ# '73#'7!5#3!ab;jƑwhhw0Ƒ\]4276767654'&'#7!#"'&'&'&547676682G=@E468YW+,,+WUiggiUW+,,+W;LJVS=7# :;LJSVJL;,cepvvpeZ5005Zepvvpe]j47"'&'&'&54767#5!#2767>54'&#X*,,*XUhgghVW*,,*WY764DA=G186epvvpeZ5005Zepvvpec;LJVSJL;: #7=SVJLZ Q5!Zb Z!!ZEƑ3'#bwxdr#'qزb$Ƒi Q!5!'7a Ƒwi'7!5w!37زxƑwdr!#73qZ} 5!! '7!5!'7ZbaƑwƑwM !737 3'#'ز]~bزxƑwwxƑZ}  '7!5!'7 5!!abwƑw̌ƑZ}'5!!!!5)bƑU73'#'#'3~bآزa~wxxƑi}'7!5!'7!5!'7awƑwU%#73737#~آز~xxƑwZ 5!'7!5Zb׾wZ !5!'7 !!aEƑwƑZQ%'7#5!7!!!!!!%9JbJg:MDDWoSSWo6KKZQ!7'!#5#53533'7'7#'5!CCJbJœKaKÜDD7KKSSSwwSKKiQ3'7'7!'7!5!7!5!!7'!:KaK(f9sN?CC93WoSwwSWoKKZQ!!5!!d;UJbJD7SSKc#'3'#'Jb~aKDLRvRKiQ7'!5!'7'7!5CCKaKT7KKSwwSc737#73CDK~J!KKRvRZQ7'!!5!'7'CCDDJbJ!Ka7KKKKSSSwwc7''3'7#7CDDCKa~bJJ~KKKK^SwSSwp #7!##ehYje_qu+cqS  '#5!#5'5ghZhepdvpTj!  753!5373feZ jhe`YRrtdp!p%3!'3 fhi ZdRpd,vpjZQ!!!5!!!j{^b^3j72viiviQ!'!5!7'!5!7!i7j3_a_{jviwwivQQ''#53773/˲bYY ƑcciQ#53773'7'7#'hYYaˋ ccƑwwƛd!##535#53'3'3#3#q것b~b,҂6Ƒw҂d33#3#7#7#535#53것~҂Ƒw6҂ZQ53353%5!!;b겂 2Ƒd3#3#3'#'-~bزw6ƑiQ#5##5'7!5!'7E2wƑd#535#3#737q-~ز-$6ƑZQ #3!db; Ƒ\iQ '73#'7!5aƑwhhw1^ 5!5! !!~T_i$$ '33 !!V5p$@^ 7'!! !!?~_% 7##% !!GUTe$!#3'33 !!5_CV5zzbJ$J #!5#3'3!3! !7Uʹpllx|`$ #!5#7'3!3! !7Uʹll|`$ 3!3# #%#3735#3͢x-|`$܌lzlx'33%! !!!!'37!V5Uhi}5L@$@tt %3'3#!5'3!3!! !!'37lUV76ʹ)UhiTll|<$$tt@^ !5#35!7'!!! ?aa_]#_/%%m 7!##!#bYJ-kcc̪4wm !53735!3Y krc4bw^+ 3'3#?! !! !lUVV)e Ҍ$$iQ)5A '7#"'&'&'&'#53676767623'7$"!&'&'!2767698CCCC89po 98CCCC89ƲaS$$ X $\ $$S$$54&#"#"&54632#"&54324&#"325# K+:rס[}B=VtA@Wqq9WzC2EqG Ur|txe !!!!!dEa*+#V##S4!!#7#3#!!!73!#3#G P0N`jRc+^^##V#`#VV$273#"'&'#7&'&$32 &#" 326767&'&lB|d?Y6]>$_R}yyHJJk"%vyyIKK3YZX|g IHveyKvGd !!!LSV? !!&kV??%&76763!!"!!3!!"١[\]ok=x@?=wBC3"*%&'&54$;73!!!!!!##!!XRCijeUz=FJx>@?=wB%v% '&76)! !!)}r:X2C C, vo{ o%2lc<'%#!5!276767!5!&'&'&#!5!2Lpk<yxAAdZx3"*+#7!5!!5!!5!733>767!7!&'&'&'WSKjKi<G@?=wB%v )5! 765!5!&'&)5k/~sX2C!C,Xo{o%2ld<'l3!-lw!!!!!)u!!!!!uJ)$w !! !!5 ;.G!t{N F!!~F !!5!#!!!5!o***~bbZ3#!!#!5!DDA#3H 0.3 &em.%73% %#'/jTUjTjjKJ6lrt!!D}D 3##'%Vl"DN7D"7u=A"7.# %.#"326"&'#"&54632>3"3'hDQe[F?n>[=W}~QY@Uk='j5CCdOMein~q~ezCDR /32654&#".#"326#"&54632>32#"&\'jBQf]DAk'hDQe[F?n=W}~QY@U~~R1CDeOMeeCCdOMeia~q~nF%!3!E~F%!3!E~ !!##4'!&'7!&'&6`_HR) 6F{$A9vq-..-xy)qF 5'7%%' 6876H ?KN.}d5 B<>b_kyPRP}XR/3#~/)XXy/ #'%37R4&5EdeeX/3#3#^/))XXy/3737##'ԊA5vՊC4\,Y{ *eLX+e!!! %a'^!!!BD^76!2#4'&#"#dnzd)2{7)+P+COO=3327653# '&)7{2)dzndw+=OOC+-8,26532#"&54&#" #"&54632FY_uJ:::[ ##7w`tL>6;e5 jT@OMJ&e<ehWANHC -&HH- ~&H'HHF.9EP'&'7767'&'&'&54767676767676&67>54'&'&'5pC b=sC16;D8788C b=rD15;Hv  + J;PLKJ} ՜U5O9:[>?JKVXKK>? 'U5O9:["$S13(*# b11S$ F.Yeit%'&'776?!'&'7767'&'&'&54767676767676&!67676&67>54'&'&!', b=rD16;@ b=sD16;D8788C b=rD16; b=sD16;H55pC  ?+ ՜U5O9:[U5O9:[>?JKVXKK>? 'U5O9:[U5O9:[":;PLKJ} Tn$S13(*# `%/b11S$ +. Iy}%'&'7767'&'&'&54767676767676&!67676&!67676&'&'776?!'&'776?%!)!67>54'&'&m b=rD15;D8788C b=sC16; b=sC16; b=sC16;H55pC b=rD15;@ b=rD15;?]?+ Q vU5O9:[>?JKVXKK>? 'U5O9:[U5O9:[U5O9:[":;PLKJ} ՜U5O9:[U5O9:[%Tb11S$ rn$S13(*# .p?#4767676767676&7%7&'&'&''&'77673! ;7R  b=sC16; &$P;;!.{sT3l$(1 A b=rD15;;)!]XTF>&U5O9:[ %AAYw8'~2:)+U5O9:[01<.Q;CPY676?67676&7'&'7767&'.'&4767676776'&'&tO#' b=rD15; O:5) `L*9P&+ b=sC16;Ot#5! "5!%"" IC&L' ՜U5O9:['@;_CJy3/@' U5O9:[ 'XPP&K&+63{4;$7kB%9(.=<ERZ&'&67676?67676&''&'7767&'&'%6767677&'&'&>E8?K$& b=rD15; R7; p@!2GD(* b=sC16;S6 0(c",*%*(#)9`W=B# ֜U5O9:[&>FT<;Om3F  U5O9:[ &?ǐ,@FF-'q9:80/n2/m-'6#'66m-'6'66#l-'66m-'6'6'66 F &/6] !!!!!!QDD,}P}F '6'6'6E'6E/FH&Y'66FR#"'&'&'&#"5>32326E_W`  TPY_Wc UMRPE:=MSNE;=KFR3276767632.#"#"&']NT  cX^XOU `V`RUK=;ENSM=:EPFi3267#"''&#"5>32K6M]_WMchiL6PY_WNcgKUPE&EYMSNE%UEF#"/&'&#"5>32326!!E_W` TPYaVaUM~PE: =LTPE: >K'F##"'&/&#"5>32326!!E_W` TPX_Wc  UM~#PE: =MSNE;=KFF%6767#"'!!'7#5!7&'&5>32Tep9^W;E_68vyPjITK[_Wc )9@;OEi0(#VNE;gKF##"'&/&#"5>32326!!!!E_W` TPX_Wc  UM~~PE: =MSNE;=KFF/#"'&/&#"5>32326#5!7!5!73!!!'E_W` TPX_Wc  UMWgWPE: =MSNE;=K튄튄PF3%#5!7!5!7/&#"5676326767!!!!'x'gr[ZPMMY_QPWc %9u!K]_PN[Afq{K ='&SN#";Qk&UP#!lF#;#"'&'&'&#"5>32326#"'&'&'&#"5>32326E_W`  TPY_Wc UM]_W`  TPYaV` UM#PE:=MSNE;=KPE:=LTPE:>KF3&#"5>323267#"'3267#"''&#"5>32sIPY_WcTR' M]_W5D.sIM]_WbUU( PYaV6D.MSNE;E KUPE/KUPE=E# LTPEKF7;#"'&/&#"5>32326#"'&/&#"5>32326!!E_W` TPX_Wc  UM]_W` TPX_Wc  UM~FPE: =MSNE;=KPE: =MSNE;=KF7S#"'&/&#"5>32326#"'&/&#"5>32326#"'&/&#"5>32326E_W` TPX_Wc  UM]_W` TPX_Wc  UM]_W` TPX_Wc  UMPE: =MSNE;=KPE: =MSNE;=KPE: =MSNE;=KKF#3276?632.#"#"&'!5!5]NT cX^XOU `V`~~UK=;ENSM= :EP@F  %5 % $%5$C 68D6F@976767!#"'&'&'#5!!536767623!&'&'&1*+ 1MPQM1 ,!::!,x 1MQPM1 z+*%'H:f<0[2332[39a?H'N'H?a93[2332[0@.4:<20>>0;37'F #"32654&'2#"&6!!!!AZYBAZ[@;n,*,,)+p==~~dbcGHd3/0xDCy-03$'F 2&#56!!!!~~:'F 3# !!!!xt1~~cKA'F 33#!!!!tx~~KcA'F !!%!!!!]BefAfea~~YTTV'F !3!!!!!t+6~~zt'F.5IMQ53#5#"&4632264&#"%#3267#"&546324&#"#"3###535463!!!!ii4"~~V4 kj6h66h6k!))Yd[Yeg/!(&#LSS;9'FJ%)->32#4654&#"#4&#"#3>32!!!!AR1TX",1$-0K-2N~~35uo :5SN[5SM%Q//7'F:!%)#546?>54&#"5>323#!!!!60+&%U-6Z*ns#+/~~>*?1.#'!!d_1N, %`gF !3!!!'7#5!7!ㆂ9㇄~1}MF !!!!!!~~~nsF!5!73!!!!!'7#5!7!5!1o8dgl!j3.flftgsiF !!!!!!!!~~~~F %!5 5E~'~PNF 7!!55%~~(&F!!5!5 5F~~'~6PN&F3!!!!55%~~~(F!!!!'7!5!7!5!7 5AaBrAr'~6\ڠ\ڟPNF!!!!'7!5!7!5!755%AaBrArs~(6\ڠ\ڟH 5 55K6N33QQ33QQH 5555635N#+#&'#67&'&'4767&'36736'& ==03]^50?= >32326 5F_W` UOX_Wc  UM\'~PE:=MSNE;=KPNSF$%#"'&'&'&#"5>3232655%F_W` UOX_Wc  UM~(PE:=MSNE;=KF(14%3267#"'&'&'&''75>32%5%%%  UM]_Wgz 5.IGNX_W Q4rT+/?aͮ=KUPE: E$&SNEEXbrf5-F(143267#"'&'&'&''75676?5%7%57'J39  UM]_Wgz S?>% NX_P,.4=;S܂=KUPE:$Ex&SN# ]euE2, Fl 55% 5~(Q'~PN Fl  5 55%='~~(PN<F<!%7'%%'75%7%57%5%9/5O6w-\sN̘94 Z_k󆑐3^am􇑓g3;5<F<!%7/%5%%'%5%75%U?8e93dTTa;#1SR# 13{f네􊇑3i놣Fs %5$ErYg===||Fs %$gYs=6||6==Fy%5%5$ElVY)Y0USx|Fy%5%5$YVY)0USx|Fy(%#"'&'&'&#"5>32326%5$E_W`  TPY_Wc UM]VY)YPE:=MSNE;=K USx|Fy(%#"'&'&'&#"5>32326%$E_W`  TPY_Wc UMY)YVPE:=MSNE;=K |SUJF?67%'&%5$%abMƵߋ>KKAAynʳlqB[,=qB JF?67&''67&'bLƵ"{䴹KLB@n6m r6B \,moKM3R+#!5!!5!3 32654'&#Ÿp~depDbǡcEEbg le]moKMR7!!!!"3!!"'&76kcDEb~moKM᎐R%!52#!5!27654&#!5"~~bEEcClMKomR&%!!'7#5!7&'&76;7!!!!#";f]I68"nJ6* cDEbBw|BmoKMR &327654'&/!5!7+!!'7!5!7!5!MNbEEE*6J54&'&'$2"&'&'&547676!!#!5!\LJ?>>>>?JLKK>?==?>KXY,,,,YXXZ,,,,ZX\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcb88a$37"2767>54&'&'$2"&'&'&5476765!\LJ?>>>>?JLKK>?==?>KXY,,,,YXXZ,,,,ZX!\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcb^a$3?"2767>54&'&'$2"&'&'&547676''7'77\LJ?>>>>?JLKK>?==?>KXY,,,,YXXZ,,,,ZX\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcbݍݍݍa"=A32767>54'&'&'&#"'67632#"'&'&'&5476'>>?>JJYXKM=>= =?KJYXKLXlk}~jlYV-,,,WYlk}~jkWY,-,,> EacSSFC##"#DEacSSCF##"#Ib0111cawvxwbb0111acvwxwFa$37"2767>54&'&'$2"&'&'&547676!!\LJ?>>>>?JLKK>?==?>KXY,,,,YXXZ,,,,ZXD\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcb}a$3?Q"2767>54&'&'$2"&'&'&547676"32654&'2#"&546\LJ?>>>>?JLKK>?==?>KXY,,,,YXXZ,,,,ZXSAZYBAZ[@;n,*,,)+p=\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcbndHHbcGHd3/0xDCy-03a$+E'#'7'737&"2767>54&'&'$2"&'&'&547676h6{77{֯LJ?>>>>?JLKK>?==?>KXY,,,,YXXZ,,,,ZXqqp##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcba$!;!!!!"2767>54&'&'$2"&'&'&547676``LJ?>>>>?JLKK>?==?>KXY,,,,YXXZ,,,,ZXfp##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcba$37"2767>54&'&'$2"&'&'&5476765!\LJ?>>>>?JLKK>?==?>KXY,,,,YXXZ,,,,ZX<,\##EFc`FE####EF`cFE#dbcwvwvcbddbcvwvwcb^|B !!#!5!%!%!!^88W|B 5!!%!!W|B    ' '!%!!,--,]NNNN|B !%!!!!ADu}3!5!i\ff#!5!i\ff3!5!K4%3!!5K4K3!5!\ffK !!!#3!J>rr !!!#3!ii>rr #33!5!`\\ff#3#33!5!`s\\\ff#3!!!#3!`\>rr3q!!'!#3!S$qY&Y3q!!!!'##3!7!SWm<WUqYYrrP3q !!'7#33##&Cg/pGqY&Ytf\+3q3!!!'7#3!##?!EW{/.n GkkWqYYtr\ F 5rp~F 5p~]F 7!! 5~p~G]F %!5 E~G{ n6'22#"'&'!#"&632!676"32654&U04)+p=;n++/W4HG54HI3/0xDCy-03`4B <-033/0<B6`PsOO9:Pn6 2"32654&'2#"'&'!#"&632!6764HH44HI3U04)+p=;n++/W PsOO9:P3/0xDCy-03`4B <-033/0<B6`m65!6767>32#"&'&/"3264&n*,m<~>o++3IH44HH <0/330/: P:9OOsPP 3!5#%5!I*sx  su3!5! 4 7!!!!!^YBD^ !!!! ^Y%a'^ !!!!!^YBD^)!!?V !!~~V?#u 6d !!%BeeBeeTTpe   HX*)|6UUpf    (*)U::Upf   HT*))0U8Upf  ))Vpf  )(::'F#3276?632.#"#"&'!5]NT cX^XOU `V`~#UK=;ENSM= :EP=F !! 5,c~=F !!55'~e11J H  5 5 5 6L6L6N33QQ33QQ33QQ H 55555562626NPF 5!-5  5~(~'~ :nPNPF !5!555%E~~~( LNPF !5!5E~~LNPF 5!-5~(~:Fy5$%5$E)YV?_:|xSUFy$%$YVY)?:BUS|mFw!&67&%%'&'57&%5$%7q>3w<8dz¦<0$RSAwY49^GY~ Y>-*HM.DXF!6%'6?$%7$%ZzOz|g[ʹ.,Y%7R/VY(`q:}݂\*[xF3!!!!!'#5!7!!!327 5K6M]_WNbGHM6OX_WNcG{'~kKUPE&EMSNE%E[PNF"%3267#"''7&#"5>32755%K6M]_WNbGHM6OX_WNcG~(kKUPE&EMSNE%E[FFy&%3267#"''7&#"5>327%5$K6M]_WMcGHL6PY_WNcG|VY)Y KUPE&EMSNE%EeUSx|FFy&%3267#"''7&#"5>327%$K6M]_WMcGHL6PY_WNcGY)YV KUPE&EMSNE%Ee|SUFw 7%'%57 QĆ_RYwZSZ=܀l<&Fw ''7-'"_R1MwZ(ZA _xh5F&7%!!'7#5!%57 xćx{-nL!E]4&ZBZN`<6F&!!'7#53777qyoMVJM@&ZsZq ZCyWc#%&'&'!5!676763!!"!!3!!"X==\]nl<y;kqL_dxzZdAAx>@?=wBC3#5!3!!"$$3!!"! i/qLQ]m2geCclAbv% $76)! !53#5!)r:X2CeC, v5o%2lc<'&%6VZ"!5&76763!!"!!3!!"[\]ok=x@?=wBCv!5 '&76)! !!) 8}r:X2C C, o{ o%2lc<'X"!5&76763!!"!!3!!"[\]ok=x@?=wBC!!!!3!!"'&'&76763!!";x9]qLXY[\]o^zb9CcdZdA9#!!#!5!276767!5!&'&'&#!5!2X==\Lnl<y;lp]udxzZdAAx>@?=wBC#3!&'&#!5!2#!5!2767!g0p]BLm3hmeCxAbv )5! 765!#3!&'&)5k/ sX2CfC,Xˇo%2ld<'Z"!5#!5!276767!5!&'&'&#!5!2Lpk<yxAAdZxv!5 )5! 765!5!&'&)5 /~sX2C!C,Xo{o%2ld<' 5!!5!!5! $wwv 3 %! w(dTZA  ' 5!5!h`ZZ # └!#!/}!#5A!32"}!53!2AF!#ERn,$%%$JIvvv鮮뭭nn 8ʸ'+6@KV#"&6 3546 +32 &=# &6;5#'54&#"3!3264&#"32654&#!#"3265n[A@[[@nA[\@A[\@A[\@@[[@A[`ʏʭʏ˭GffGHefffGMGeeHGeeHGeeGF!3!E~n86532#"&54&#"_uJ:::[e5 jT@OMJ&e<\(( #"&546323267^vJ;9; [(]e54jT@OMJ&< !!!!%!!Ldo+l  #/;GS_kw+7CO[gs!2#!"543!254#!"+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;22+"=4#"=43+"=4;2+"=4;2"=43!2#3DŽCAAC!B""B!!D D!)!C!!C!r!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!"B!!B""B!!B"f!""! !C!!C!!C!!C!"B!!B""B!!B""B!!B""B""B"!B""B!!B""B! !C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!B""B!!B""B!"B""B"!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!!C!"B""B""B""B""B""B"!~!!~!!!!& !!!C!!C!!D D!H""!!JJJI%%I&%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%% %I%HJ%%J%%J%%J%%J%%J%3 #pp # 3p. !!#!#5!Qs' !53y湂r0_Tsz*!!s*s'- #5yr斧-T_0s' 53 r畧 '*!&*.s'- !# 繂r-s'!!!ySsz*!!s*s',!!!yS,#s'!!! M '*!!&*s',!!! M,#4 #476;#"2opW+0*3,#4'&/327653}6$[c477:c[$!< |AEy <4> ;#"'&52+Wpo>ܜ*043>#32J3 4'&+324,Woo$*04,&'&3;#766$[c:774c[$!< yEA| <3> 3+327654ooW,>0*(!('! !!&$<k>32#"&'!'%5!726&"CiiC!/Bommob]]b`jRP[@v.!3!3Jdl &! 4$32"324$35733!vwCC^ߡ``!gL7h׬z@+/ l 4! 4$32"324$!!5>54&#"5>32vwCC^ߡ``gNJ*%G<1yi]KO{L7h׬z@'%D%7A,C Nll D! 4$32"324$#"&'532654&+532654&#"5>32vwCC^ߡ``ofFU`y:TRTZrvPEDB5lVUA[L7h׬z@_0 6135-.)/%|}Upl )! 4$32"324$ 3!3#!5!5vwCC^ߡ``୽"~~vL7h׬z@Y5Уl 9! 4$32"324$!!"632#"&'532654&#"vwCC^ߡ``7f~9ӶOYi}5JRRJ.k_L7h׬z@\$=(F>?F(l '@! 4$32"324$"32654&.#">32#"&5432vwCC^ߡ``1001111W_,\fc:ȧ?wL7h׬z@u@II@@II@*g;  l "! 4$32"324$!!!vwCC^ߡ``G`L7h׬z@l '?K! 4$32"324$"32654&%.54632#"&546732654&#"vwCC^ߡ``6987577[\ ef.-+..+-.L7h׬z@L:;;99;;:apS{{Sp |]]|-.-..--l 4@! 4$32"324$53267#"&54632#"&2654&#"vwCC^ߡ``BV^.\fc9Ʀ@w0220111L7h׬z@)f;!AHHBBHHAl &2>! 4$32"324$35733!4&#"3267#"&54632vwCC^ߡ``V#%&##&%#wwwwL7h׬z@&*jmmnn( =!! !!!!#!#(!((!(0(!B({(!((!((! (Y(!k((3(( E ( #'+/3!33!33!33!33!33!30stststmnmnm(%8K#!1!!!!!!!#!1!!!!!!!#!1!!!!!!!#!1!!!!!!llll޶llll޵kkkkߵkkkk(((((!%)-13#3#3!3!##!#3#3#3#3#3#3#!"޵׶׶m#( :#( H! O( O(& O& P Q(& P Q(& O& Q V(& P& Q V( O(& O V(& O& P V'%! '%!!!Ng>9%-d) 327$%&#"%632#"'++Օl``````qq|qqf' '/7?G%&'&'6767&'&'7%'676727"'64'7&"'62&479'5)3,?4C0x2)/-Z5>3@'5)2+@3C03)5'Z,G4?DD#VVcDD#VV c<1& j(0=Ju &,A=N:0('<1& j(0=Ju &1<>EB0(n_II'[[JnII'[[d) %/36%632#"'327&#"6767&'&6e`` :;;:{m('((((';99̙Rqq|qq%%mܱ[0$ %@%|"d) )73276'&#"7632#"'327$%&#"%632#"'Vg4343gg3434՞OOOOOOOOH++Օl``B!!BB!!oe33eje33````qq|qqd $  $eGyFAk^d $  $27$%&#eGyF+ՕAk^a``d $  $"3eGyF+Ak^``d $  $327$eGyFS++Ak^>``d $  $%&#"eGyFYՕAk^>``d $  $"327$!eGyF++Ak^```d $  $"!eGyFVAk^`d$)6%63"'e`Rqqg)#2f|q*qf(32>54&'."!1,.uBCv[10..uu0-D3366fJI426532&<U( 327$%&#"327$%&#"!(++Օl``````}|qqqqH(U( !#%&#")%632T++qq>~``U 3327$3!#"'$``Ֆ>qq``) %63"`qv`) 2#%&#`iՕ)q>` 527$3+iv`>q "'$33įj+q`)%632#%&#"``iԕqq>``3327$3#"'$j+,i``>qq% % %! %!$ `)32>54&'."467>2#"&'&J'$%]55_I'&&$^i^&%f/.0uv-/01\vBBu.-5wh))++Rh<:g*(+*)(픂235624IJf6633'%!%!!@Z r<'%!%!!X r<'%!%! r<'%!%!N r<'% !%!!!!t&t% r<<% 4632"&! ?N97MMqM`KAj>VV>>VVJ %! &A %! %A d(  7& 6  'hi./*X֖'% !!!!!!tg%ۊ<)) Ie'% !!!!%!!&Ng%M)*<?v^]"3263#!5276;'4?'4?26vi#1z]H3y)/ #&<+*lV#m14He '1l1 Z+dZ?33 #&'&+"'&#"/573;2?"#'57#&'#"#5676!504& 3(d{_R!' 8 2M <=Y4}V .e3B=Se` e9*=9 3@=}k !=] 9eAmu} 5a73&'37&'67&'67&'67'32654'&'7654&#"3672#"$54767&'&547'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'4327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&54327'4327632#"/#"57#"54?'&54327'&327632#"/#"57#"54?'&5432&'67&'67&'67'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432Gsq%&&#%'$:"#!pޞp[}9*;qTR}<(2w,JDdNSjDD% $+*$ $ ),  ! ! (&    %& ! ! '%     %& \! " '% !   %& 7SdR!%"#!"%=    &%     &' |" ! '%   ! &&*EC*Z*,)-)-*,%&%&fБfU 5HhfeefhH2pu^ttQFs棥sKQttGh!99!  !77!  4 4 22 K44 22 22  11                 7        %&%&%'%&%'%&22  //  g               44 22 u !2CTev+&'&54?6?6/&2#"/54762#"/54762#"/54762#"/54762#"'=4762#"/54762#"/547672#"/54762#"/54762#"/547672#"/5476%2#"/547672#"/5476 I7-Vo/"*6% \8^ :x.[>  !    !  |             b     !      !             aG<s-8PZy9} KW2{0R^j ,: . 4 . = ,  ,   -  -  -  -   .  .   ,   -  w !! xLJK9`8w !! 7 ! !xLJK=~PZgKI9`8N I 7%7&5476R3N"e;Q 6$ 8'^4? !2 7%7&547!&'6:P!`$/A?S"="l-2DC[9 )! 4$32324$#"#"&54>32vvDDbcܙݢbFEc-Q**R,K7iwBNmmN1Z00Zp G"32654&!"32654&%#"&54767654$#"#"&54767&54! C]]CA^]iA^^AC]]RutQIdmmqNQusRn!$gJIggIJggJIhhIJgU\\Q srW\\^p G4&#"326%4&#"326! 547&'&5463232$54'&'&54632|^AC]]CB]]CA^^AC]mmnRsuQNqm..mdIQtuRhIhhIJggJJggJIgg ][[Xrq Q\\pe "32654&7#"5432EWK_ȐɎ;12Yp 7"32654&"32654&#"54327&5432#"'&'lllmml#褣楦s奦祣t کxxxxZxxxx;TdIU ~z)5AMYeq}3'%&76'!'47653!76=332654&#"#"&54632'#"&54632#"&54632&'&676&'&676'.7>'.7>6&'&6%6&'&6>'.>'.x"gO$hJ Ki$Pf#؂ԕҘ4vUTvvTUv ) )Y ( )>&%/$%&%/$'F ) )Y( ) OyyO vKK9__9KKݧꧦ]]_""""s!!""D. - . - a)**))*)) / . - .)5AMYeq}5#!4'&'5#2#"&546"32654&'"32654&"32654&7>'.7>'.676&'&676&'&7>'.%7>'.676&'&676&'&53!76=3%'676%327'%&76'77&'$%'#7%6'&7, 3ϔϔSttSRttJ ( )7 ( (/$$ %%$$&%k) ( X( ( Myhy?k>Ys>   =rY>k?LY77%SB T+1SBS%77YK@@1AeA1@@H磤椣筁\\\\     % - -- ,1)))(9)())u- , - - G77W6 W77Gl^ ee ^l(q,&$pp$&,q( !!'!cc8h "!!'!##+572367676!dczD%8i [A.8YW8hA:F;/Itx !!'!  ##' !dc^rnVoRQn8hi[ef[l[J@36273 ##'5 MON@ US VZCv#,5>~3+&=43+&=4%3+&=43+&=43+&=43+&=43+&=4%33 #&'&+"'&#"/573;2?"#'57#&'#"#5676!5S4S3S4S5T5 T4RS44& 3(d{_R!' 8 2M <=Y4 #8d#7$6$8;$7i$7 #9pPL  )Z. ;6ZV Z3%Y63 .87p  />Eqw!674#!!6?676'&#'323276767654#3#&'&'&6%67!672!&=75$/563&43!32+'!67#>54&53 8 A4N,315>(I-4"a1lxXzbf=NS!\q&,L01Ne0<  9 H3 ;;Q4XmM;YV /M(=H: ,qLUD)8Wqke-Pm{NW =$ U  /0c)H?2@[nDF8T$.L !' !ANKOUDu@wL5_K !'7?KNQ>wDB&547632632%6#"'&'# #"'&'&6&'&547676CO""ONP4S2 R$|m ?wE 39 _D%V$F^ 92 Ev? m|4hok@mmr*%te2' BB90tU%) "ft(f" )%Ut09CB '29>3#"'43727&'#"$4727%6725676&5&dB1)X6E v=y(;. eP 0 %SZ7AFF4ysW$,J ]T.MMm@ed: ,'Z M'cM&T)2_M2%!"&54676737#&'&54>;7#"&546767!7!"&54>3!6763!2'71z*-=80O&8-&Q&7>+2  ,2 =,2  =,3>,2463!2!2#!!+32#3#!8%Q'-7'P17=-,y07&#,>3,=  2,= 2,  2+>!C%4&#!"!&3!!"3!#";#"3&'6737#&'6737!"'67!7!&'63!67!2nA+1*KK KKKK8JJSSCTTTTDPSS;Q%8C%39KILKIOKHLKIhghghghgE?-!D72654'6#"'4#"'54#"'54#"'675674767#%!/5BBDEAGCAECB^\ ]]_\]]=8(sJ1 b6'SS cRR SS?SS\\K\\;\\]]!A*>K!C%254+'3254+'!254#!'!254!&#!"463!!2!!#!3#3aKK9JJJJ KK*0,C$D8&Q:TTPESSSSCSSIKLHKOIKLIK93%N-?Eghghghgi!C32=732=7325732'654&#'%2&'&5&'5&'BCEACGAEDBB5/!:(8=]]\_]] \^SS=SS SSb SS'6a!0J)K>*B \\]]:]]J]]pO!%)-15 3656;2#'7+"/#"'+"5&54775%"'5476;25'7&567635&56;374765'75'76=4'&+ '"'4!#"'&36365&5&#%#754'&5&&547'5367&7+&'&'735&2?"5%75537'7'3533553535'32767&5%2?&#%55'575775775J5[( 9?8P7?VE:.>DA.( 3DPDa>@#+6x `]>  >[Pr @se"^L3 4UF "V;=\?/ /*U9[' ."n?$-)&!Dh2 ) ` ?hhE-g> ?. 8Ve lTErf^5.>=9|5"-l)d ,&>vv]cccWpC-+ d8 Bpp>W]oaxvuPp82,D ^8, ^B$K+ "1R[+e*;GW QU I&? gpo% w ^SA$ 2 9i-5n02D|&IY^Pw^%\??\OWC ,,1 /211/=;7777=321811{908hN%b\Dh,)h?17I21!122223 21&2%2#"'&=477654'#"'5473Ձe/o WF^a}/ X 3 X ؍MOb>YaYƮ58l7P P@ $0<FX + &=6&# 3 6=%&#"';27!5%67%!&'&'2+"'&=476.Yf㮿Y0薖q3P+2-)VEV'quI3=%)H3A#S]ٱZYHYoX(I_ ;.2lOP%.G6R%&I8Z 8Pi>'67&&&'6.7#"'&'#"'676'773.#'6'5676&&5476'&'7&&=F! wM>7TBWR?^m &ab)-R7kSWos4K9>>4::T8S-\_l eu?>L=#mg'.2[E :jx(Nr%&&&+F 7!N &".\S$XE/KC\a*0/'rSCٟ C (RKpF|bphc'R"J$Zw1F[q7&&'7'6&'6#&7'&#"'5&567#&''5&'67'6'4'5$'67'656&'67&'6'&'''5$7676'&&'6'63&7"7&'7&'7&'7&'6'6%676767&77&77&''5&"'6%35&'.54>321167#&7 m *VBRa&G ?V M]; :)(6hCs/Ni,H HCfE_ 7^eAB4CCC <1bSBV* 9d i'Wh"&VqH,7u07#]69-/6,X(hR(&"hZ,HK80C:7%_6/-C  "H1 $ &b5 4CUE '(!`9 !,(MTE + }r}A" 7,)f[4f AD <@0&9c?"V+GoMK~aG g9s &0@k"?c*GEKX Gjt9hN&\6 '''' 6\%$&'6&'67327&#!65#&3 mmgrk zYYޱqZre[c7 7 c ,35'533#3!'#'5!5!5#5335#5##3qqlzyymj@@@<<3ffX苜qXGccG J!32654&#!2+73 ### 3׼irriPוؐB(T33#!!#'!'57!5#'5735q~q+!#!573#'5!3!'573!#'73!#'5u__vhhwѡIjj8/w,32#' 37+ &5%6323'#57'53@ǽ˼U4{|I0w_?8:<ؒ6ʞG2k >Y3~||~Obs32732753"'#"'4323$4'5;+"'#"'53275'&'&5?5572'#&'&57634%476=%9*"'<>((I- cE*HiAt>=2{6mNPp ZiU;xT"m ;wuP1RK00D(;,,e"@  p$B(!cc*@rJ&*EcJkg Fp/ԶQRmT_g2#27654'73&#"#'&'#"56='"'46'4#"4735#5&547/63654'%65432#"&546324&#"326%! ! : 7"&66&$55%%44%%5wvϚ{ɬ)::)*<<**<<*):<'L67I" C# C C " C# C D " C# D C " C# D D " D# C C " D# C D " D# D C " D# D D y <BHNTZ`fl3264'&#"&7367'67675673#''5&'&'7&'677&'67'%7&'&'%6767%&',*<&`7" bK*V&"g{ M M !)1! ! 3254#"&#%#7&'67&'67wv:<F>4,<[-ch`ch_7IL6a] ]pu otpu ot !)1! ! 3254#"3$3&'67&'67wv:<F>:]ch`ch_7IL6a] Uypu otpu ot %! ! #$''&'6%&'6wvcGkvJVVr~w{t~w}7IL0c Z    "*2:AIX3#''%#&'52#"'&5476!!'5%!!'53'5%3'5%3#'32765'&#"FF47H8(S A+[!?27@yf756FF u>p,y9#_>?@7`d@\hPPPPy?+<>w_VG{?,rCA+ +"'5676%&'547327676=&#%c_,*Iq{S$'NJǒxbO P >nS]] =f+! &56;2'5$%75#"3Q_d,)Hq-zT$d/'NK7ycOpO >S\^ f01@7#'#53'&'&54767&'&=33676=3#32654'&$ xwatbww!$$!wRMi"iLRx "iMRurRLV$|ddb e|$% ZSSZ %_TYYT $4&#"326&54327##53&ёϔ1./|䤣L~~|  $"32654&'#533'#"5476ϔ|Ҙ{פ㤤ף |~~L #&$76+"'&5'476%7!iiggi$jg ՕeE~Z5s qttrtt<֤ꧦg\ul91B52654&#"#43233#!5nom覨b͈wyyy{(|#53533#632#4654&#"#``d~~dc}mZyH{zF 4"32654&7#"&54767!!53#5!!3!!#3!!92GG22GF7+Db`E*8쌌O79NN97Os0LllllL1KӘJJ-<%#5#535&'&'5'73'3#'73'676=35'73'33n^F][E_nzTThOʍ7NjYYӖy! #!!!'!27674'&#pZ51;J&u@!IM_\ǃ$P<S  !#"#&5463 67!2#6#"t3`ySOuwNTx`3uX1((1E 1"32654&'67>3"#"54767&'&#529vEMWov*&%+tm@ME\ϓΓϖ=Bll)'ҕ*l8lB=&'5 %$ 56?6'ݗ85Tș4ZZ//[[5 @o +?"32654&,'5'&546322654&#" &$#"&547>fVvvVTxw v]BUxxUTyxH v^A____(+|T!%lϓgML____x)+{T!&lϔgMMs =>'.463227#"&5454&#"&'&5476766&RD:DC:Oɢy@Z:rdYwr)! ".hi+.iwsSJKAKL@ݰ |XHwyo†<>bQs-.cx68<32>32#&'567''#&&#4'3>64&"d9k$D7J+v=6Z*Bo,4x9 %j }*ƀwϧ}wh^)etWW<aAktAO]Rk9$!!!5!&5432!!5#67654&#"@ ><覧=]NnnMhh UyzzyU ><84353'5#"'&''#&&#4'3>32>32]PPP=(,4x9 %j >9k$D7Jo}vvxJv<aAktAO]ƀwϧ!5!3##'!5! ` @i8080k<'/27632#"'#576&#"4'5267>327&'"`Ibmn(q|n^,:4!~w$))%n4TuݾgvxaX[&ŝ9!C3276327632#"'&#"'&#'3276327632#"'&#"'&#'%g) ,N210&%pbUWM230N22+0$h( ,N120'$qbUWN13/M31+0(GG$3LKGHb 'HH#2MLGHa S!5!37!!'  _76`S@ʬAR!%Ue67&'&#"!3!67>54.#"!&'.54>325467675#53533#63232>54.#" .BFFKIC54CIKGFB/l &">ac^HD  aa_aa !EG]db=#% )(()+)QPQ((QPQ)+/ 6klj$?6FWWF6?$jlk6 }++--HNRh~&'4>32"'4>32&'4>32&54>32&54>32#!5!'!567>54.#"32767>54.#"327732>54.#"327>54.#"732>54.#",V 014.K0/*'<00<")11 NR'00 YԣLE z  hV!  Z+"  ^  _33@]22-"40446/*33UJ"+33^1/K=0T* ####  #$$##$$#  B #### *"$$" 2A!'-23353#3!53573#'5#5335!75!!5'57!hSShgTTgUVJ+IAC֛E77__vtt4!7CRb&54767&'&'5676767&'&54>32!535#5##3654.#"!32>54.#" 6!%%'F(F&%F)F'&&!4 j6)E&%F(8Iv011/59<5&?HPPIK* ')+K**K+)' *KIPPH>&5<:6uN|l||l|-I+N))N+@65555/F*3V6&7!&54''&''67.76;+"'5#"=6&'76767%25#6&' .Q$( kQ2*(}Q +A "^0!V'>A %E'75'Q]Wy_I1 #C$F)'`xo8:.@s.P mz "x?.#1p#41`&jD"acLHJ ~447| JlL"bT_32>54.#"32>54.#"!5&54767&'&546767&'&54>32'&'.#"y4[14[23\20[5  CJ "$&LF'F%$G(CN%"" S:>st=:8d88d88g66gu9:%N&KRS* '**M**M**' *SRK&N۠:9}qyyq}!%Ueiz67&'&#"!3!67>54.#"!&'.54>325467675#53533#63232>54.#"!57#&'.54>3234'67632# .BFFKIC54CIKGFB/l &">ac^HD  aa_aa !EG]db=#% )(()z7<>k987%%77;k=;7+)QPQ((QPQ)+/ 6klj$?6FWWF6?$jlk6 }++-- !yCB{C!$$!C{BCy! HLP&'4>32"'4>32&'4>32&54>32&54>32#!5!5!,V 014.K0/*'<00<")11 NR'00 Yrr_33@]22-"40446/*33UJ"+33^1/NNOO2A%)5!5!3353#3!53573#'5#5335!Z;hSShgTTgUV^^/oo#E774@4767&'&'5676767&'&54>32!&535#5##3h 6!%%'F(F&%F)F'&&!4 j<5&?HPPIK* ')+K**K+)' *KIPPH>&5<:6n5|l||l|*J".7=6&73#!&54'''7&''676&7;2547#";65'"37IML') x >oT`+`gZ +Y @#]3?&W!g A8/QE)',Qo8:$whPSmh**z1"0@)5"@YRb0&54767&'&546767&'&54>32 "$&LF'F%$G(CN%"" 9:%N&KRS* '**M**M**' *SRK&N۠:9"Q##"'##56'##"/547? dsU 2`g26;2"##'65##"'&5476;2&'5476&+"326733276=4/#"567654'&#"35&5?^g7%SB\JLZޭ\<."7Y@ؘ aj7{6Gf!KQM 1k`t0%K6F98:d  mOE:R p&i  C]&'Ax.+0 nM,W`c,L3#&'&'&6%3#&'&'&63#&'&'&6#"$&5467332$654'&'7  +  , 7  , (ҤӧvCMNDv9?cyɦt3Z|`ŻN[O}БBr1a`bb`a1)EMTTUUTTME)r3#"/4?23*A+ ZP-@3#'654'&'#"54732Nn7S3ڿWP'6?F` 1TFG*֙-@R/"#"=4?2%#"=4?2n0#NI<Ù'PH*~: ۉ8z"C"'4723!#"5472!5bGZOO;Z$}@Ϝ 3363'$6'")2y k?WXc1  3%#'#3%#%,$//c}(,377#'#'547#5773%%F*kknm*&ttrt&<<7CA<<{8AMtG#&#"'5654'5673;54'567332733273+&##&#"#&'565qI3 YY4Jv4(??)4vK2YY 2Iv4)??(4v[#;17F-:S8!cc!8S:-F71;#[RS9 cc 9Sv  ;G7567&'&'3#6737'#&'7#&'6735'67#3335#5,+UU++(*((=((<(())ͼ mm r`^^]qͼ nn q]_]`rchh1hh-.,-C..C.,.-n//_R_//~ijhh~N yy ~hiii~ zz s.. #.6CMhw!2732!'5675'&=32#$'57637&/&+"+&532?4/%32#'#&&=4?#'57335'3!273+#='!"/547354;2?!&=3d4EXJ)fd2(Vfgؐ7FK(?H! 1x0!+V^i.Z LZshV>N%!Jh,OUU*^7QG8*F 1 . ъf)MC =g9EkO 9!(-);&  ]t!y" & 2| ba$ U+  2E35733!&54?'7'7!!"'&%#'73676'77'7'&'676rK((#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*a\MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! 1DW!!5>7>54&#"5>32&54?'7'7!!"'&%#'73676'77'7'&'6762&9,!C6*]PDe+s"+ }V(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*]U1)8(3&ncQ&D- mMOHK$k$823!a IF 7=c`O]BA6$k#- kNA! (=Pc#"&'532654&+532654&#"5>32&54?'7'7!!"'&%#'73676'77'7'&'676 V.a?A[/USNGdhA@CB%VNDb,tK(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*S<\el23-2['&')b YK4JMOHK$k$823!a IF 7=c`O]BA6$k#- kNA!  "5H333##5!5&54?'7'7!!"'&%#'73676'77'7'&'676Wmm(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*Rv_`MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! 2EX!!632#"&'532654&#"&54?'7'7!!"'&%#'73676'77'7'&'676u,}-^?ET/JTTJ#H??(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*_ptcdrr@89@ SMOHK$k$823!a IF 7=c`O]BA6$k#- kNA!  $9L_"32654&.#"632#"&54632&54?'7'7!!"'&%#'73676'77'7'&'676,2==24;;7?NST2izix~"E(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*A;;@@;;Af`5(sa_t MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! .A!#!&54?'7'7!!"'&%#'73676'77'7'&'676_U(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*2{MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! ':7&54?'7'7!!"'&%#'73676'77'7'&'676(#K87Y $kmMD3)M4=z!5VL86Y"89/z#2*MOHK$k$823!a IF 7=c`O]BA6$k#- kNA!'9HR!273!567&#2&'76+&67'#'6765'533!273+#'!"/47_4BZW \_&,,X $q ӚeHZcTi*KT}75 b\V/V'f::p ?)\ ) 9s s%00%2<J\e3 + &=%62367#&'&#36&#&#"3274/"34?3'35732?5##!'53.cW{K|".m4 wJG<-V0F @jX[% 8HD }D}yt!7_ ;`OL5_k, ߋ~y}/M<4{1;C,[_ei' [)$ /:BR`j # &5%6; 65%&# !27#57&/#2#&'676+%3#'#&'47'3!27##'%!#"/6<n\Ua->+DSR04IbFER(k(_{aZ)F NF&y I#XYtTpXYSmEb,#4' FV ! Y1 1_ Ug,17H27&' # &5%6367&#'.7&67263'#%; 65%&# WNn\UaNWZn~rzrszr~o>+DSR&XYtTͿWzzWapXYSa/232#!7&!"4#".547673267Ws   y+S Leopq:*$JKK%>)َer(Y$h?}}|r<.32#".:BAW㖗866 65chŮ;?!32#".%2#".54>:BAW㖗866 65666 5chŮ;?!54.#":BA6 665ch =!!54.#"%32>54.#":BA6 6656665 ch =!!54.#"##"'5##"$'&'!5!5&'.54>32!!676767'%'#A"$@$%@#"@$"#M ONAwbjR8=>p;;p@?6HZTwCNN Ng'H''H'(H''H`XAK|@X1(ԁ3"|DD}DD}DD|" 2/ "1X@|AX1# 9Y%&'%67&673&/'67 &'"&'6?&'3' '7  &/7&'>74+-CCQT76'@\R#\;;["S^9$C9TSDGIO,%oN Mk%*U@R?? );322=  9%EEE >2dUDY,  E&%+ B@0"AR/0?wA%od/D&3.YaQ/5#3$"uI' @3/u= =#n- .... l4% % 32+#".7!#"&'&'#&=4;733783%++VTXVUT,*3/.tt/?GG~F6F~GG?>D9/Cp"632&'.'#!#!#0-D'qrJFloUrL|MsVT 'NQ9;:;PHi?CD|))Z h632>54.#"367#&7&$735&'.54>32-R+-R-/Q,*R.̛X#/&)@O߁;6FNOKKQOG32Y22Y22[00[&皗1 #+VVUUVV+ _32>54.#"%2#".54>''#/'7''7''7/5?'77'77'7?3777'_~{|~xx#A%$A$#A$$B Ah7TKA [ AJT 6g@9$x#_ rr ]$v$8@h6SLA[ AJU6hA;%y"`rq ^#v&'I('H((H'(I'{H@('k i()?Hs<]SH$e$HR^;sHA)&ji'*AHs<]SH$e$HR^; "',16;@EQ3&7"7&'7&'7&'7&'6'6%676767&77&77&'"32654&'5&'.54>323#67#&#"/&'&547&"'6%676c&Rc!#QlE+6o.5"Y67+-4*&bN%#!dW,DH5-?65$[4-*2DD2/FEQ#"/%H-HMI2/$/ .$.4OLH,J $@D V>0&8a>!U*~EmLK}`G f7r &0>j!>a)E~CKW Gis7g:M57LL75M-Z '''' Y (5[J5( \d (5J [4 ''/GS2#".54>&'767&%76'&''67&'&'&'6767654676'&7>326'##"'&'&'&54767&'&547676&'&#"6&%6767&'&'&676&5467&'&6732767&:!!  G@s.0[Y  Y[1/r@D3//b+,--,+-*).+.,,-*G?q02][l88jgh 2{|2 ̚45::64 0|z1 gg)+,.*)MMLS68!8`Z\21p?G3..3368  86!QKM)*/.*)M5$##$59gTV++9Z^^Z9++VTg9'(''&()I8:9889: Z_59eUV-, <8.>euvc>-7=bccb>7-?cwud?/8MWZZW **D@@D+8,-VTe95^&)(&''(DA:AD.*!Y[[Y! )r67&'67&'4&6%67.'4'6&&'6767&54?67&'&#&'#&'5&'"'67&'&547632>54.#"2#".54>m#1(.-!*+%(27%#+&'. )--#IQ[K(,##$*M\PQ33- ;-5?VO<8-= .34/^]]_aY[`eKRONNOQ#ejpMcNTvJKr?VlLWW7p jk%n^*V{ww[11[ ww{V)\#fnnd-#JM 7B/""0C7 NK",dnnf#ghhggggUWWXXWWUZ %3!'#!52#"62#".54>BOF/1-"#  5 O Dn; $$$$v33'554#$/V R\ FkGSGUW GJGwc%Q2u!&5476'#5!%QsikB $Y&"BYYZy'#"'&#"'&'&'&547676763232767676'&'&'&/&'&'&547676762!2!%3276767654'&'&'&#"&#"3276767654'&'&lg&  ' !   &"7WR!  FK8!  A@   %bJdG[r             $&$  ' D"&%  $ #  mR )Ky           M!r26767654'&'."#"'%"'&'&'&54767676;27>764'.'&+"'&'&'&547676762%632$"26767654'&'&)"")".'bI_H  $G $#=M\" "XQ=#$ G$  H_KIb'i)"")"q    l?W,># "#" "  " "#" #>,W?~    OYx3!#!"'&'&'&547676?6767676'&'&'&#"#"'&'&'&547>763276;%326767654'&'&'&#"6767654'&'&'&#"32l[[GJZ-   @A   !8KF  &RW7"'  / ! '  $g  %    &    OK) Rd# !#& "*"D '  ""! 2   T   :      AZx-4H67&'&'&+"'&'&'&476767632%632 #"'%#"'&'&'&54767676;276276767654'&'&'&"276767654'&'&'&""'&'&'&547676762"'&'&'&547676762'&'&'&547654'&'&'&";276-&#"+"276767654'&5476%327%&"'&'&476762  IS<)(!$$*&+)('$ *O:R{356xRO* %+&.#%% ",&+mwn<;;8rowp:;;BV0/+"8:D@*|sa  -F(7 "*=8&0!2   1-5$& 6:B4M,Ji&'&'%&'&"632%676767654&2"'&'&'&5476767"3276767654'&'&'&'2#"'&'&'&54767676~8  ,!('^&) ?.13-z  9 + 8 8 3xpkXZ+--,YV{{mlXZ+,,)\Vnl|xhe4330ic}yge444/ja~wIP"2-.$  "" PI $.-2!v   31cdvwzwcaf31cdvwwqi`43d;8rowp:;;8rown<;l,-57'36%33#3#32+3#3##$'#7!:Z0nhMZS?++?SZMhn0Z:( jPP,PP` v ")- !676762!"'&'&'&54!!J &+}r1r J!,~'h,  k-"s! K476?6763&'&'&547632676767654'&7632!54'&'&76'&&#"'&/&'&'&#"#"'&'&/&'&#"&'&'&?6'&'#"'&'&#"!'476/654'&76'327654'&'&327654'&/!/#$ +CD"   !%2   !,F#  1')D  VzVT+g/& ,$ )- 00 p*  $ ,  S  2 42  asJ#   l71]% /~[#<$  o_%?,: *(;Y)$X$+|=L!6CX&PY89Do6 b'n2  83eF] 4T&  &  /50$?- 1@& 3l K  C"P1 :07@D:5XI6.D3[+-1:   q/A8   g&l9Lp{7654'"'&#"+"'&54?67676763276323273#5%6767'&#"6"/67#"27632327654'73654'676547&*b+"CZJ"Pt >Tn:< /8)5" '$1P8b, P0*'$M/hK9O!Lt8gC9C%V)+.|&-C-)+8K Qe+',T' ;cs  /^"|Y/ 428ۇϕl%%ot5oA='Y$ aT* ''G+- %_kj~r}jL`І|\gK@/.85c($7")3SZ67654/##3276?7%54'654'36767632#"'&54767632'610B ډ v=;z1/f       (r 4@  H67; zh| 9 >6!q     B/> '-EL4'&'&/767675'7! !'!654'!4'!!$4767>2"&'&'!654' .. UTT(oR-fH ~!88!~ Uppph,p<((zd7")3SZ&'&#"227654'&'''%'654.#"65&'&'&547632#"'&'&6#" B016˄ <W ;!1 .fa      4  ;76H    |h> 96qm      BO{s[#C'%%.'&"27>7%$6%"'&'&'&47676762%'|- -      8 8@uID`qS   SqGYq > q|s)&%$64'%%&'&'&"27676--- &  & !q``q! 2327632#"'&'&5476#$ 8z@A )/?'@xH )0$'*'2 27277632#"'&'&5476#$ [Wr o&-23A?X@yJL 1 - A  ' 7 eee77ɍ8ɍ?k ONOOt7tt7u B2632#"'&'#"'&54767'&54763267632676y I  lsD!. m$   1O3  6*=P*> "#  nQ26#"'#"'&'#'&'#"'&547&'&54767&&5476326763276  Ӆ"   PmO!unY, ' _ :  (̢1#: _& #- Խ =1 '2ĺ d #!!!!!%!!!!!!!!#!5!3tnonoUHVPBXyBd !!!!!!hp"#d35#7!!#!5!343srsd!!%!!!!!!Qfgh#p"#0 !!#!5!3phhEU3!!'#'!!#!!3!5ӇM_ r,,_ #!#3!3'3#!#3!3###533D,Ԑm_|P_H_dQ#"#3;54'&'&'!"3276767653#4'&'&'&+3!52767>5oZQPB;( -- &=>TN]o"#@>%!--!'32367675&'&'.5467676236767>32#"&'&'&'#"'&'.546767675&  J))II))J &$$S$$!  J))JJ))J   !$$S$$&*!""! ((\(( !""!#%    R.-R  R-.R "   %#!""! ((\(( !""!*  " R.-R  R-.R   J4'&'&'&'.54767676322767676767632#"'&'&'&'&'&#"'&'&'&5476767676765"#"'&'&'&5476767632!  $$#5)43+0!"" %='4  #--24+."  ".+42--#  %-*:  #"!0*g*1 #$  #9+.#  "Z34+-# #-+47(." $-+C,7"  &d8:02& $&20:=-2& (10?!  '&$6/r/6$&'  'D+:!  '228:/3&$$&3/:822'  )2/@' ((& :.:806$&& (K0267632#"'&'&'!&'&'&54676763267632#"'&'#"'&'&'&5476767!6767632#"'&'"'&'&'&54767#"'&'&'&5476767632!#"'&'&'&54767#"'&'&'&476767632&'&5476767632!#"'.'&5476767632&'&54767676   $             6   /           $      (   2     6           %    <    %  (   N276767653"4'&'&'&Nxhe4330ib~~bi0334ehx;8rown<;;==>--28;BA;82--28;AB;82-&lLl+ '1% %2"'&'&'&5476767! !+ ==!fx43+,,+34x34++++4o¬ì6a-28;BA;82--28;AB;82-&lLl+ !''!! !! !WUVV]RRSR^->==>-Iٶڶ&GGlLl+ 3'7'3! !7!%%!"pZ"ZZ"Zp"->==>-giiIvIvIIvIlLlc+ %5%7'%!! !RRS#^->==>-KKGTlLl-  '%'!!!!kkspy{;y<zffz> NrqN qrK% % -S{H{{G{SlyyK7% %' -i??4?ih@3@@GstGWcGtsGcd/3%!!%#'''%!5!%777ldLr*rp*LdldM*rq*pMdE.f:UūoxoU9g.Ff.U:oxo9U.s54'&5476276767632#"#"#"323232#"'&'&/"'&5476=&'&'#"'&'&547676323232?&547'&#"#"#"'&'&54767632676C(12l30'E f:#=6.@ N8E vZ  \u E8N @.6=#a  wFNd0110dNFy~ DzI'#4#,G2$:;$2G,#4#'I~? yFNd0110dNFy ?~I'#4#,G2$::$2G,#4#'I; s"276767654'&'&/54'&5476276767632+"#"32;2#"'&'&/"'&5476=&'&'#"'&'&547676;232?&547'&#"+"'&'&54767632676&  &  PC(12l30'E f:#=6.@ N8E vZ  \u E8N @.6=#a PL wFNd0110dNFy~ DzI'#4#,G2$:;$2G,#4#'I~? yFNd0110dNFy ?~I'#4#,G2$::$2G,#4#'I; wj'&'&'&767654'&54762767676'&76'&'&/#"'&5476='&'&76767*,dJS&&cASN'@2+_:1JJ09`++H,IRAc&&RO`4++,dKR&(aDOO&@3+`90JLOF1:_+.D+JSAc&&RN`1 05HoIH 53c!77\`j4OO4jfVA7g/5 HIoH53   05HoIL43c!77\`j4OO7gfVA7f05 HLlH53  w67654'&"327632#"'&'&/#"'&5476=#"'&'&5476763232?'&#"#"'&'&5476763254'&5476276767632#"'&#"#"'&#"327676%32767654'&'&#"#"3!,L,"20[!Q?R 'b3;K*9CN90JLOF1:M@;-H<2c& S?P!\/.["P?Q &c2:4/.&"./4;=16'+&1,"%&!6'+&./4:>1:#"$./4:>16'+,4:>16'+&./4;=1cn%#"'&'&'&5476767#"'&'&'&5476767632&'&54767676267632#"'#"'&'&'&27654'&'&'&"67&'&'&'276767&54767'&'&#"276767654'&/7676767654'&'&'&#" ,!2+75.+(%),7+2!)%+(6,4."7("2*p*3!(8!3/11+)%(!3*8+($)+-58*3!+ F7 A = ;*] A &l    1A ]+;݂ !l&%",1&+'61=;4/."&./4:>16'.5 1=;4/.&&./4;=1 5+'61>:4/.&"./4;=16'+&1,"8_/$   $/_c.,b" $#  !I?30C !'#  x!  #$ "b,.$  #'! C03?I K-[3b &'#"'&'&'&547676763267'&#"327%327676764'&'.#"7632#"'&'&54767676324676762676322##"'&'"'&'.5#"'&'&'&54767"'&'&'&54767676&'&'&'&'&547676?&'32767677676765&'&'.#"7676767&'&'&/326767674'&'&'67'&'&'&#"67'&'&'&547676767"276767654'&'&'"'&'&'&54?&'276767654'7654'&'&'&"67'&547676762  !/ !  /   @!$$)''%!$$S$$"#(&)%$#2#" '&-!$%))%% $$S$$$"%)(%$ -&""#      /     / ]~     _ /   ] /        JJ!  !J     2 6 Y2 6 1    8 < d8 < 6   %),++*) !$3R  R3&!-(-%2(&"#%(.2$( &',+,)) !$3R  R3'! )),,+)$"#%(.2$( "   i !xg   !      %     !  !   g    "$)($##$()$"$  % %% %  M<\l"276767654'&'&/2#"'&'&'&47676762#"'&'&'&54767676% %-;n./''''/.n.0&''&0eN>E1354BAKN=F0353CAJxhe4330ic}yge444/ja~\[Z](.35<;53.((.35;<53.("68MITNLJ;9"68MILJ;9m;8rowp:;;8rown<;}}w"327632#"'&'&/#"'&5476=#"'&'&5476763232?'&#"#"'&'&5476763254'&5476276767632#"'&#"27654'&%&'&#"327676%327632 654'&'&#"#"&,"20[!Q?R 'b3;K*9CN90JLOF1:M@;-H<2c& S?P!\/.["P?Q &c2;,,;>J=!6"=J>:,,:>J=",|XX|X.U|JU~-|U ~U.<%DREA 11 AERD%<%DREA 11 AERD%9r99r W +?Sg"&462    "'&'&476762"'&'&4767622"'&'&4767$2"'&'&4767wvv M] LV M L#)c*##*c)##)c*##*c)#ce,2$$2,e,1 $$ 1e,2$$2,e,1 $$ 1K8)UL)U~U)^U)Ip17#((#71p17#((#7p17#((#71p17#((#7Y'.n.''.n.''.n.''.n.' K &3@MYam+%5%32476;#"'&'7632&54?#"632'&54#"/72#547"&462"'&=3$ v #$ v "@%%@(@%$&$@%%@(J-Z-OpOOpJ-Z-*2d2((2d2M*'FI*'FeF)*IF)* ( a 'U|XX|Xc( a 'Kl267632%632#"'%#"'&'"'&547#"'&54767#"'&47632&'&54763&5476'* F/-<.  E** C!Wc.<'5 F *M+F /-;/bX"C ))D  /; <F*/#J"5C7/ N".X.$M51C5 "J#//#J{ 5CLM$.X."N 51C!wJ#/[ #! 4$#"# 4$32632!"hgٜؤlLLkpGQ?rAm %!#!3!bVZ?ZS.Sd,m8 %!%!35!bVZ?S.dd,m %!!!bVJ?ZS.SԂJm8 %!!7!bVu$S.SdJ  1120`1111SSRU"SQ#Qk!7!6(!33tJ(n?l(!##lvtI?( !33!33tJtJ(n?n?l( !##!##lvtIvtI?n?BOS2#"327676765!"'&5463!57!##"'&'&'&54767676#  98A)1zj2~!'8::>00/1=;;>/2qKFD6454FCNNCF4546DFKo5?'#"'&'&'&547676763"'&'&'&5476767632?gC?=0/1.?BK9$&! hTj]-D$'FD,.6ME%)&2:'Vl:g0,?)!:"9JOCQ>^v:Mc*ZeC03N35%&-Kt\K%9S >BWN=!$?$8(F!5{^?ZxN676 547&'&327#"'#536767&'&'&5432&5476323254'&54329(<G8;k,0$#CV[<'$a #9 !7AX ;7%'27)b3[X H<ߞ>$3g:=TEB7WPfG+1KHP<Ff#&T'0P+A'<}DCh' 5276767654'&'4igY[FJ$$$$V^bw~9==?x}/CD}>C/GFCG# !&547"xuvw҇>2;#!!676.BDx;:t<_! !_53} ! 55! !iR ! \R2! !E53Q ! R55}__֕jj.'7'7__j3jB$#"&=4&+5326=46;#"3a77`=MRcdQMtsݓXXw(326=467&'&=4&+532;#"+w=NQdc*(N=MK1077bKM࿾XGGXJI9:tJJl ! 4$32!5##7#vwCCL7h/+l &! 4$32>54&#">32!5!vwCC{OK]iy132+32#"&'32654&'>vwCCϼAUVl5BDEPvrZTRT:y`UFf[L7hA}|%/).-5316 0_pl ! 4$32#!!535#!vwCCJv~~L7hߣ5l *! 4$32>32#"&'32654&#"5!5!vwCC._k.JRRJ5}iYO«7L7h(F?>F(=$\l 2! 4$32#"&54632"32654&#">325.vwCC111001110ɷȴ:cf\,_WIwL7hI@@II@@= ;g*l ! 4$32%!!5!vwCCa7L7h*l 1=! 4$32#"&5463232654&'>54&#"2#"&546vwCC75789657e \[fu+..+-..L7h;99;;::G]| pS{{Sp |-..-.-.-l &2! 4$32254&#"3267#"&'4632#"&vwCC7ʸƴ9cf\.^VGw11022011L7h !;f)HBBHHAAl $0! 4$32!5##7#"&54632"32654&vwCC&##&%##%wwwL7h*& nmmn=(F  76767654'&'&'35%33!  '&'&'&5476767ywbd0220dbwyxwbd0220dbw9or6886roljpq6996qp96oooo6996oooo6}9:݈@>}~~}>@@>}~~}>=A_  76767654'&'&'!!5676767654'&#"5>32  '&'&'&5476767ywbd0220dbwyxwbd0220dbwYVS%F;=`HILVW?cdB`a9or6886roljpq6996qp96oooo6996oooo6_.X<<;_<<5'(]]IBBZooV@>}~~}>@@>}~~}>=Om  76767654'&'&'#"'&'5327654'&+5327654&#"567632  '&'&'&5476767ywbd0220dbwyxwbd0220dbwhh<:mmDGHM=NGHBCw}l89un;DESJRH@_`fj9or6886roljpq6996qp96oooo6996oooo6yNNtaa'(<}~~}>@@>}~~}>= +I  76767654'&'&'!33##!5  '&'&'&5476767ywbd0220dbwyxwbd0220dbwp&9or6886roljpq6996qp96oooo6996oooo6 @>}~~}>@@>}~~}>=?]  76767654'&'&'!!67632#"&'532654&#"  '&'&'&5476767ywbd0220dbwyxwbd0220dbw;J !iiCKE@EN||;9;<9or6886roljpq6996qp96oooo6996oooo6c nm)}|X@>}~~}>@@>}~~}>=,Jh  76767654'&'&'"327654'&.#"67632#"'&7632  '&'&'&5476767ywbd0220dbwyxwbd0220dbwa:9sab:99:7o6MK *@@M^^ģbcxz7p9or6886roljpq6996qp96oooo6996oooo6KJKKJKllE&%mnޟ-@>}~~}>@@>}~~}>=$B  76767654'&'&'!#!  '&'&'&5476767ywbd0220dbwyxwbd0220dbwzp9or6886roljpq6996qp96oooo6996oooo6`E#@>}~~}>@@>}~~}>=+BNl  76767654'&'&'"27654'&'.546  &54632654&#"  '&'&'&5476767ywbd0220dbwyxwbd0220dbwg<;;<<;;;^hAh^i;;w3i^^jj^^i,9or6886roljpq6996qp96oooo6996oooo6,=>=>>>kl>=EggOOss\hh\]hh@>}~~}>@@>}~~}>=<Lj  76767654'&'&'532767#"'&54632#"'&27654'&#"  '&'&'&5476767ywbd0220dbwyxwbd0220dbw7p6MK *?AN]^Ģbbyx788c9999ca9::9B9or6886roljpq6996qp96oooo6996oooo6lkD%%lmޟ橨 KJJKKJJK@>}~~}>@@>}~~}>=+8Ca  76767654'&'&'"32654'.  7!5##7  '&'&'&5476767ywbd0220dbwyxwbd0220dbwK('NLNM'&IHHIHahvtl9or6886roljpq6996qp96oooo6996oooo6{z~{ӟ>-,g#&%q @>}~~}>@@>}~~}>= (!5##%  '&'&'&5476767kn9or6886roljpq6996qp#:9q @>}~~}>@@>}~~}>=#A676767654'&#"67632!5  '&'&'&5476767`a`Bdc?WVLMD`=;F%S 9or6886roljpq6996qp ooZBBI]]('5<<_;<}~~}>@@>}~~}>=1O>54'&#"67632+32#"&'327654'&  '&'&'&5476767_f`a@HISSED;nu98l}wCBHGN=MHGDmm:}~~}>@@>}~~}>= +! !335#$  '&'&'&5476767@J@搚9or6886roljpq6996qp  @>}~~}>@@>}~~}>=!?67632#"'&'32654'&#"!5  '&'&'&5476767<;9;||NEDAKCii! F9or6886roljpq6996qp=|}'mn %@>}~~}>@@>}~~}>=,J2#"&5476.#"32654'&#"67632  '&'&'&5476767b:99:bas9:}~~}>@@>}~~}>=$!35$  '&'&'&54767679or6886roljpq6996qp@fE@>}~~}>@@>}~~}>= $0N2"'&476' 654'&'>54& 74632#"&  '&'&'&5476767i;;;<<;;<*iwe;;i^hh(i^^jj^^i,9or6886roljpq6996qp=>lk>>>=>=EssOOgg]hh]\hh@>}~~}>@@>}~~}>=.L%3276'&#"32767#"&'"'&547632  '&'&'&5476767=887xybb^^NA?* KM6p7!a9::9ac99999or6886roljpq6996qp /޸ml%%DklgKJJKKJJK@>}~~}>@@>}~~}>= %C2#"&547>  '!5##7  '&'&'&5476767#[--Z[ZZ--KMMK"LOt9or6886roljpq6996qp{zz{ӟ>-/g#&%q @>}~~}>@@>}~~}>ij !!5!!IKG ppp 7%Qp?4NGi85 b=<22pJJ '-m?GNi!!iu9.Ǘ>~~>iu2"&'&'&5476?!".'&47>3!'&'&54767>2 .(  '!  !'&  (.h2p "2" pi8!5! $EvZPJJi8!5! $EvHJJi8 #3#3#3!!5 sll66ivpppJJi8 55!#3#3#3$Hll66΄ΊXXXXi8!!5 $EvJJD! k>>D! k>>  vvib3!5 5!"'&'&'&i &&,v,&& 0+*%!JJ!%*+i847676763!5 5!"i &&,v,&& 0+*%!JJ!%*+0]!! MUVXeooi855!q΄Ξ0ij%5!!53  !Io>ij%5!!53  !Io>& !73#57!!'|Zoto|C} 2&& 5!'53#'!!!'Z| l }&2 !'!'!53 !yG!Z&cZIuoڞ  3#5!7!!! ycZIcZ5&o rd !53#'5!'! !c-Ic-&-fo%Jdc;dJrd 7!573#5!! !--c-Icfo%LJd;cdJ1!6767632#"'&'&'! $Iʞ uB "&*.37#37#37#37#5!!!!3'#3'#3'#3'#6666l`"66$66$66$66ZPhp> 7&#"7'7 #%+%;?2M3~{FC*9oX:Wib 55!5!!'!~䴴ddPR '327'' #!?;%2~4~*CF9XUp>2%&#"6767&'&"67632&'&547676767耕;>@Q#"F#!!%)*(+'~ !Ap*G&/$##*0,0.+"W!'&'&#'ZGGCia/4767!"!47676763"'&'&'&5!3!&'&5" %!*&,,&*!% "eeZ'&$(0+.!"-+0($&'Ze2&'&'&'&54767#"'&'2767&'&'32$A! '+(+('~!#F"#Q@>;CGGZ'!&'&'$W"+.0,0*##"/&GgX+B6%"'&'&'&547676$47676762"'&'&'&'&'&547676762$ n 8   I > I % O 8 lbQu R$'68"   vc.676767632#"'&'&'&%&'&54767&'&5476;#$&*0/6.i3b.-#4!!YY!&:?$ fLLf#&#/:&'+-23-+'rr'+-32-+Ve"'&'.54?654'&'&'&+"#!".4?64/&4676763!2;276767654/&54676762Q gg'Q  c     c  g"'&'.54?654'&'&'&+"#!".4764'&4676763!2;276767654/&54676762NSl TuSNh    4  i^+#76767&'&/3#6767!5!!5!&'&'zK~BaJ"@@"JaAK^&'c5 5c~&OUä'66'U=;JHd)))dHJ;=#u ! !=?Fvu-1  '  o'  v@ v+ v@'  v v@'  v+'  v@' '  *@ *@'  *@'  *@' '  *@'  *@' '  *@' '  *@' ' '  **+ *@'  *+'  *@' '  *+'  *@' '  *+' '  *@' ' '  **@' * *@' ' * *@' ' * *@' ' ' * *@' ' * *@' ' ' * *@' ' ' * *@' ' ' ' * ** *@'  *+'  *@' '  *'  *@' '  *+' '  *@' ' '  **@' * *@' ' * *@' ' * *@' ' ' * *@' ' * *@' ' ' * *@' ' ' * *@' ' ' ' * **+' * *@' ' * *+' ' * *@' ' ' * *+' ' * *@' ' ' * *+' ' ' * *@' ' ' ' * **@' *' * *@' ' *' * *@' ' *' * *@' ' ' *' * *@' ' *' * *@' ' ' *' * *@' ' ' *' * *@' ' ' ' *' * *pv ppv@'  ppv+'  ppv@' '  ppv'  ppv@' '  ppv+' '  ppv@' ' '  pp@' * pp@' ' * pp@' ' * pp@' ' ' * pp@' ' * pp@' ' ' * pp@' ' ' * pp@' ' ' ' * pp+' * pp@' ' * pp+' ' * pp@' ' ' * pp+' ' * pp@' ' ' * pp+' ' ' * pp@' ' ' ' * pp@' *' * pp@' ' *' * pp@' ' *' * pp@' ' ' *' * pp@' ' *' * pp@' ' ' *' * pp@' ' ' *' * pp@' ' ' ' *' * pp' * pp@' ' * pp+' ' * pp@' ' ' * pp' ' * pp@' ' ' * pp+' ' ' * pp@' ' ' ' * pp@' *' * pp@' ' *' * pp@' ' *' * pp@' ' ' *' * pp@' ' *' * pp@' ' ' *' * pp@' ' ' *' * pp@' ' ' ' *' * pp+' *' * pp@' ' *' * pp+' ' *' * pp@' ' ' *' * pp+' ' *' * pp@' ' ' *' * pp+' ' ' *' * pp@' ' ' ' *' * pp@' *' *' * pp@' ' *' *' * pp@' ' *' *' * pp@' ' ' *' *' * pp@' ' *' *' * pp@' ' ' *' *' * pp@' ' ' *' *' * pp@' ' ' ' *' *' * p*p *pp@'  *pp+'  *pp@' '  *pp'  *pp@' '  *pp+' '  *pp@' ' '  *p*p@' * *pp@' ' * *pp@' ' * *pp@' ' ' * *pp@' ' * *pp@' ' ' * *pp@' ' ' * *pp@' ' ' ' * *p*p+' * *pp@' ' * *pp+' ' * *pp@' ' ' * *pp+' ' * *pp@' ' ' * *pp+' ' ' * *pp@' ' ' ' * *p*p@' *' * *pp@' ' *' * *pp@' ' *' * *pp@' ' ' *' * *pp@' ' *' * *pp@' ' ' *' * *pp@' ' ' *' * *pp@' ' ' ' *' * *p*p' * *pp@' ' * *pp+' ' * *pp@' ' ' * *pp' ' * *pp@' ' ' * *pp+' ' ' * *pp@' ' ' ' * *p*p@' *' * *pp@' ' *' * *pp@' ' *' * *pp@' ' ' *' * *pp@' ' *' * *pp@' ' ' *' * *pp@' ' ' *' * *pp@' ' ' ' *' * *p*p+' *' * *pp@' ' *' * *pp+' ' *' * *pp@' ' ' *' * *pp+' ' *' * *pp@' ' ' *' * *pp+' ' ' *' * *pp@' ' ' ' *' * *p*p@' *' *' * *pp@' ' *' *' * *pp@' ' *' *' * *pp@' ' ' *' *' * *pp@' ' *' *' * *pp@' ' ' *' *' * *pp@' ' ' *' *' * *pp@' ' ' ' *' *' * *pp' p *pp@' ' p *pp+' ' p *pp@' ' ' p *pp' ' p *pp@' ' ' p *pp+' ' ' p *pp@' ' ' ' p *pp@' *' p *pp@' ' *' p *pp@' ' *' p *pp@' ' ' *' p *pp@' ' *' p *pp@' ' ' *' p *pp@' ' ' *' p *pp@' ' ' ' *' p *pp+' *' p *pp@' ' *' p *pp+' ' *' p *pp@' ' ' *' p *pp+' ' *' p *pp@' ' ' *' p *pp+' ' ' *' p *pp@' ' ' ' *' p *pp@' *' *' p *pp@' ' *' *' p *pp@' ' *' *' p *pp@' ' ' *' *' p *pp@' ' *' *' p *pp@' ' ' *' *' p *pp@' ' ' *' *' p *pp@' ' ' ' *' *' p *pp' *' p *pp@' ' *' p *pp+' ' *' p *pp@' ' ' *' p *pp' ' *' p *pp@' ' ' *' p *pp+' ' ' *' p *pp@' ' ' ' *' p *pp@' *' *' p *pp@' ' *' *' p *pp@' ' *' *' p *pp@' ' ' *' *' p *pp@' ' *' *' p *pp@' ' ' *' *' p *pp@' ' ' *' *' p *pp@' ' ' ' *' *' p *pp+' *' *' p *pp@' ' *' *' p *pp+' ' *' *' p *pp@' ' ' *' *' p *pp+' ' *' *' p *pp@' ' ' *' *' p *pp+' ' ' *' *' p *pp@' ' ' ' *' *' p *pp@' *' *' *' p *pp@' ' *' *' *' p *pp@' ' *' *' *' p *pp@' ' ' *' *' *' p *pp@' ' *' *' *' p *pp@' ' ' *' *' *' p *pp@' ' ' *' *' *' p *pp@' ' ' ' *' *' *' p *pFg  5  5p~p~ 3 5p~  #3  { pe   HX*)6UUpe  p*)|cUUpe  p*)cUUpf   (*)U::Upf   *))U8U#u >>u-4O :!!" 767>54'&'&'&$  $'&'&547676-nt[^]/.^^qr rt[_\./^anrg3@??@̀@??@.48fj~fh4666fj}fk34ūʪ4O6B" 767>54'&'&'&$  $'&'&547676!!#!5!nt[^]/.^^qr rt[_\./^anrg3@??@̀@??@R++48fj~fh4666fj}fk34ūʪ  4O6B" 767>54'&'&'&$  $'&'&547676   ' nt[^]/.^^qr rt[_\./^anrg3@??@̀@??@MLNL48fj~fh4666fj}fk34ūʪqrqs- !&H'H'HFH.#5!67676&3!'&'7767 b=rD15;- b=sC16;* U5O9:[I%'&'7767'&'&'&54767676767676&&'&'678C b=sC16;D8788C b=rD15;H55 + > ՜U5O9:[>?JKVXKK>? 'U5O9:[":;PG*# nb11S$ .&D77'6767&'&&'&'&'&5#'76767676767657'#( SZ%;50Dr=b A 1(&!#89[:9O5U,*7<7]Y]ETUa[h.'!!'7676?!!76767&'&!!;61Cs=a  ;51Dr=b yd[:9O5Tض[:9O5UN.;?%676764'&'&'76767&'&636"''7676?6!!Q?A! ">Kb;51Dr=b :)/+)G"F*&5=A;61Cs=b *T&FIWWY]DU$[:9O5U,N/,95\N):[:9O5U|.;!!#"'&''$76?7>54'&#"76767&'&676WvGaT954'.'&&767676&'&'776?&'&'&'&4767676!!1'*F"G)+/.+*F"F**% b=rD15;bK>" !A?Q.* b=sC16; LC@" #?CO4N\59,/NN/,95\NU5O9:[$UD]YWWIF&U5O9:[ !KH]XW^BH".#'+7!767676&!!'&'776?3!#3hK b=rD15; b=sC16; {{[NU5O9:[hU5O9:[.@'&'7767#5367676&32#5676'&'&#x. b=sC16;+֎ii! b=rD05;1&+"!+%2 6U5O9:[t:p:tU5O9:[$#!2-41`##.)'&'7767' 767676&7 i b=sC16;x y b=rD15;w x;U5O9:[')U5O9:[م.376?67676&#4'&''&'7767#MD b=rD15; b9M > b=sC16;=# ,k`ԜU5O9:[IbT3 6;Oe5 jT@OMJ&e<ehWANHC %80!!26532#"&54&#" #"&54632&` Y_uJ:::[ ##7w`tL>6;e5 jT@OMJ&e<ehWANHC F 5 5E~c~:F 55~~d:1I11JF3#5 5b~c~QF3#55~~dQ1I11JF3#5 5~c~SF3# 55zI~~dS1I11JF3#5 5b~c~8F3#55~~d81I11JCF ;B#"'&'&'&#"5>32326#"'&'&'&#"5>32326 5F_W` UOX_Wc  UM]_W` UOX`V` UM\'~UPE:=MSNE;=KPE:=LTPE:>KPNCF ;B#"'&'&'&#"5>32326#"'&'&'&#"5>32326 5F_W` UOX_Wc  UM]_W` UOX`V` UM(~UPE:=MSNE;=KPE:=LTPE:>KPNF %!!'7!5!7%5E'GFwic u̵NF5!!'7!5!75%GFwy(juF 3:3267#"'3267#"''7&#"5>327&#"5>32 58<-#M]_W9E"nGM]_W`??,$OX`V9E"nGOX_W`I'~E KUPEq,KUPE:E LTPEs+MSNE8PNF 3:3267#"'3267#"''7&#"5>327&#"5>3255%8<-#M]_W9E"nGM]_W`??,$OX`V9E"nGOX_W`~(E KUPEq,KUPE:E LTPEs+MSNE8F5!5!-5 %%~~(~'~\riF!5!!5!%%55%E~~~~(\iwF:&#"'&/&#"5>32326!! 5F_V` UOX_Wc UM~'~PE: =MSNE;=KFPNF:&#"'&/&#"5>32326!!55%F_V` UOX_Wc UM~~(PE: =MSNE;=KF F")#"'&/&#"5>32326-5 %%E_W` TPX_Wc  UM(~'~PE: =MSNE;=Ko i F")#"'&/&#"5>32326%%55%E_W` TPX_Wc  UM]~~(PE: =MSNE;=KoiFB!!!!55% %%~~~(Z'~|3WiFB!5!5 %%55%F~~'~~~(EiF,55%-5 %%~~(~'~viF,5%%5%%55%E~~~~(QTi{F 55E~~1F 5 5~d~1LJ11F3#55b~~b1F3#5 5~d~b1LJ11Fm!5!!5!5F~~~`NPFm5!5!-5~~(~:[F 555E~~~PPNP[F55-5~~(~#;Fp$.#"#"&'532767676325F]MU  cW_XOU `W_~UK=;ENSM=:EPKNPFp$.#"#"&'53276767632-5F]MU  cW_XOU `W_}(~UK=;ENSM=:EPKF%,!!!!.#"#"&'532767676325~~]MU  cW_XOU `W_~|UK=;ENSM=:EP[NPF%,!!!!.#"#"&'53276767632-5~~]MU  cW_XOU `W_}(~|UK=;ENSM=:EP[-F@ $!!!536767623!&'&'&!!~B:!,x 1MQPM1 z+*~7'H?a93[2332[032326#"'&'&'&#"5>32326%5$E_W`  TPY_Wc UM]_Wgz  TPYaV` UM]\ C? PE:=MSNE;=KPE:=LTPE:>KR%$ffuWF;F#"'&'&'&#"5>32326#"'&'&'&#"5>32326%$E_W`  TPY_Wc UM]_Wgz  TPYaV` UM?C \ PE:=MSNE;=KPE:=LTPE:>KRuf$%yF3>3267#"'3267#"''7&#"5>327&#"5>32%5$7<-#M]_W9E"nGM]_W`?>,#PYaV9E"mGPY_W`J\ C?E KUPEq,KUPE:E LTPEs+MSNE8%$ffuWyF3>3267#"'3267#"''7&#"5>327&#"5>32%$7<-#M]_W9E"nGM]_W`?>,#PYaV9E"mGPY_W`?C \E KUPEq,KUPE:E LTPEs+MSNE8uf$%qF5%5 5E~~'~P#PPNqF55%~~~(PfP'%!%!!N r'%!!!N #V)54&'.#"!!>32!! A)esBIcCon#'b]3yV!! 3!#!BsvQDwy-!!!![`!!!!B?`V'v8j2!$763676&~?@zL}q1y-j@@}dxaX5!!5#"3226&#"AIXӋ<靤+ނyzfg%32654&#!.+;# !3 l__l#Gq92fTbnl6F[ ZgfXXspR\D֔6327'&#" !!=B';gUXFYb/j(O ""326&!"3 ! 7.5463zkppkjooe)m#'#"!5476;#"!!!!!#3547632Dp\\D\\DNNWXDN``NWX&!!#"!!!!#35463vEBD4$7DN``N#!!#"3#!#3546<D6)7DN`N#m*.#"!5476;#"!!!#!!!#354763)!2Dp\\C\\EDNNWXDN```NWX#o)#"!54763!!#"3#!!!#3547632Dp\\D\\DNNWX)DN``NWX#-#"!#35476;2!!;!"'&5#354'&D\\[\LSOP)DR`NWXXWN%NXYND_-U&547632!!;!"'&5#354'&#".#"#"'&'32654'&/.54632tqβzvMROP'$>5-)#gU\,-"!X8PVdkcw`efh^`!g9׭9u_]_\L%NXY?0&$)&80%005+ (KP%4:90-h!% 546?>54&#">32!++w&=:TFSm\IMV/3:`;EhB--K>9Yb(*BCOF.\4:bR1df!#fO3#%3#c`!#am#'&'&#"#465463232653#"&52)$}`N"B#5#!#}aN"?#<2j'<9j#!#'#Ƞ373ɠb 332673#"&WDEV=<<=3#!#3#mp#!#lP53#h73#'3#ᇇᇇh 3#3#'3#pqᇇdh 3#3#'3#pqᇇd3#3#dh 3#3#3#3#ᇇᇇddt"%'$&7!327676'!;#"'q:B.AK,:B0.`Cu4)MM \^Z[B/IVqgK-MEX #!3276=!=:sX=(,Bsa\,1jX!#"'+3276=!;bFEcX=(,B,(=Xmm,1jj1,t,:;#"'&''$&7!3 7&'&54767632654'&#"{q*`95@Zt:B.A6: ~,h]N/ jC-*+= 8K \^ZFB gA@:B)uQ&_rJ<*)Ne?%.654'&"32!!2767'"'&54767676!-'* ,.Z6!JmIXb_H7f*ZO&;1( EGT4,8*:-YB3$A + ;#"'&'+327&54767654'&"e~O/ +a\[`* /N1|*w)B)uQ~22~Qu)4hN77Nh` :&'&;4%$'&767!32767"'&'&547676763*#&!m9?VtL#B0 6aYSXbUP/E)'-'nf>c{xx--@:b@RQT4,8*:79Q% A  #!3276=!3#=:sX=(,B䇇sa\,1j!#"'+3276=!;3#bFEcX=(,B,(=X3mm,1jj1,ٖ %4'&"27>"'&4762B--Bv8:8::8:$2%&2@@@@@??tR' ~&  >' ' ~R ' ' ~R t'  -'  '   C/I;#"'&'&'3 7!$'&54767&63 &#&7&'&767632&#"?CA8K;Mm@6-bK]Qw~\KyV= {F0/+v<8@4&9cB VW =<<=fC&%!#327654'&'&'&#"!!67632BIF6l8: 23?Ndgkkjv #CG~"SI#.&:=S` !3#!#53[C`JDu`!!3#+"'#5$%3"'"3276B2hPaf }9^U'[#`0cvL9.ZXR'q> sCXZXY' sCcqZXR' zCXq>ZXu' tj sCXXu' v sCXZdu' tq Zdu' vq >AR' uDSq>"Xv' xC sCX>AY' uDS sCc"bm' zCw xCt>Au' t uDS"co' wCu ty"cho' wCu vy"c' wCu uD>>' yCP uDG>u' yCP tj,>u' yCP v&G>'A< yCP"c' wCu'Zh!!hp*53265!#"&BLYSZUJrX\t 4 m&!373! 7676'&'!;#"uu"seHA.B 4(AN FQ9beDCmey" };, &%! 7676'&'!;#""seHA.B 4(ANQ9beDCmey" };,%%%$&7!7676!;#" 373\e9B?u~7GB,'>T;԰uuRaUL!\fr"-4LajM1,~F !+!276373,(=XAs:=uusj1,\aF#32765!;#"'#373X=(,B,(=XbFEcBuu,1jMj1,mm~Ft[3:#'$'&7!32765&'&'&54767632;#"'&#"373JL:B?r.u1 ,B-E]M07cQ=(3;tuu)i[eD*#("% %Tb/I#&,xF@ #!3276=!%373 3#'3#=:sX=(,Buu:ᇇsa\,1jFH@#!#"'+3276=!;373 3#'3#bFEcX=(,B,(=Xuu:ᇇmm,1jj1,FH r!%! 7676'&'!;#"373"seHA.B 4(ADuNuuQ9beDCmey" };,,F !;#"&5BD\n\SM_<22M lm M l R[H}6;Gn4JJ$bcX{Rr{p_t-~3y |H[[*[F[/  6#68RJJ}TO'DO'RO!#'R www O''RI_q @0R  HpB 3c3'b'QHLt'nitZtZt]-~      H[:[[[[[(6O-OOOOOOODOOOOOwwwwO OOOOOF    ' O O OH[DOH[DOH[DOH[DO'R'ROOOOO['R['R['R['R w:w 'w ww[wwws   ^ [O[O[Og[O/I_/I_/I_/I_ q q q      6@668R0R8R0R8R0R!#'|'|H'.H[H[DOT|'RP^{!["  B [JaU[O'O//Iqq  1688R0RKD0iKDB'  2 * XRD~ Ow[O     O O OO['R['R[O[O0Pw 2 * XR['R G  OO(F O OOOw*w [O[Ok  /I_ q{_Z 9RpO8R0R OO[O[O[O[O6=wRRHDI_0RH| + Ow O'R'R'DODORROONlcccDcwR'ROJ--   +w d_OO^nJJ__I_![qq@6vRRPiBBBBDcOwERBBRRRPRc#A))[[GcGcEcEcEcA)4tY*Y*yy4HT4THmSmSQ3Ac=Y*gW12 ]9c94441SggIQ0EgiE\nE$f,,tDOmt-8/Cio* | 8R[ *[F 6[#g1?6Yc Y'PcAP O6LAPOM'DOO&v.wBO#OBOd^_%_%nB)Zd[OH[DOof([l['RZ%GNTaZj['3?1Zd'DOw[|O'H[*E'==H[=S H[/:OT"S 5 ||inL*yT*[FH[ 5#[# Zu|Hus$OOgO"/ZFeO'DO,$eVvi$D{&OO DOI_www#Q [BO ZL$I $- [O@cHT[O  pO[6O[BO[BOH[DO1M|+fF'4%*<"y/Z+ -$K +RL[OH[DO ,66# 4vv c  c  L*"0&vw O OOO^O^OL*"y/ZP[O[O[OHuD{555vu|`QXnQ0Q&K[O {cOa#DO#cwQODOOOOgOgQ]&&,N,#@0Rh]FeKbKbrb brbrbrbrbbbrbbbbGbbbbbrbbGbTbbb'rbbbbbbbrbGbbbbbbXb_bbbb b b:bbb bbb2bb>bbbbabFbb O|'|'|'H[DO'R'R'R'R'ROOOOO!#['R   *R F wDIww;w wUw***    [O[O[O[OF'F'=/I_/I_/I_/I_/I_ q q q q       6@6@6@6@6@##68R0R8R0R8R0R q@O!# O O O O O O O O O O O OOOOOOOOOyw`w[O[O[O[O[O[O[OJaUJaUJaUJaUJaU       6666YYYYYYYY  ~/cccccc]          ~9{ PZZOOOOOOkBOBOBOBOBOBOBOBO fYYcc  OOBOBOYYYYYYYY  ~/          ~BOBOBOBOBOBOBOBO fYYYYYYY  O/ QtQ     C>t$*':xHS''66X TTBOBOBOBOBOio1HQ33_3pcc33tt/-  e3 ^; ;$7$$$7$$F~-~^]$HJJ}k?~~M$a6$FZd'6b'2'W'F'K'E':{{{c\Gc'6'n'b'Q'2'W'F'K'E':{{{c\E[6pO G76 P$?0O$su$<$ 8 _e>3cJatDW 83 11 'pX5\ ~GKtZtbtZtbtQt2tZtWtZtQtWtKnZ  ## #H[*w_G wDO'R G` G`H[DOZdidZcZi Z\ieZRZdiddZiZiZZ7a7aZ)ZZZdiidZMZZUiUZZZZiZcicZcZiQiddZdidZi1@@mmi iZiZZiZ1i1 X5*Vttfttf+$Z30DDAt}XXd-- R- F s+   mmlm  mm3n3nmPs33333 = =UtfttfttUtftft'vZJJ}JJ}dd(3 dlJJ6ssss sssss sf4ff4f4ff4fd'l'vllllllllllHdHdHfHdHdHdHdHdHdHdHdHdd  dHdHdHdHdFFt3]tZttutwtwstepeppJp~ ttttZttttttttbtbtptttZZ_tttttttttttttttyttttttkCCtt1tttttStttttbtt>tttt ttt2tt/tttt2tt*tt"tt5tt!tt5ttetRte{bvttttttttttttttBBBBBBttttttttttt5t5t_ttptltpt tttttZtMAMMlv&/O|dddd0dKMJKNN+M+++++-vd9KKKKdccKMuWWKKt[tmtmtmtmtkl99lt,c5qhh2Q}.Bwlllllllllliiiiiiiiiiiiii&&rruiigiJJ00***************33333343434 -               - % v1X.O#V&V## ##W_-nhhhhtt.}`.tt000000000000wZZZZZZ>">">""">G,G"hmHtzw!, 79k:;Y<&:$&$&$&$&$7a$8$9u$:$<<$Y$\$$$$$<$$$$a$&a$*$,$.$0$2$6$8<$9$:<$a$<$$v$x$z$<$D$r$D$r%9%:%<%%6%8%:%%v%x%z%&/&6&&&&&& &&"&&&&K&K'&'>(>D>`>x>>>>>??0?L?d?|????@@A@APABBBCdCCDDEPEFFGGLGH8HI|IIJ<JJKKKKLlLLMMNNO OP4PDPQ,QpQRR0RHRS(SxST$TdTULUVXVW@WXXlXXXXYY(Y@YXYpYYYYYZZ Z8ZTZpZZZZZ[[ [8[P[h[x[[[[[\\]4]L]d]|]]]]]^ ^$^l^^^^^_L____```4`P`h``````aa(a@aXapaaaaabbb0bHb`bxbbbbbccd<dTdldefHfg8gggggghh,hDh\hthhhhi<ijljk`l$lmmmn0noop ppq$qr r`rsDst4tu uxvvw$wxxxyHyzz{l{|\|}}`}~d~~\l|0 XdTh\,tp@p|<<H,l8p` `0hH8`$@Pp$@Th,H4` <` 8`t 4H\p0D`|D`t4p,\pt(D`L,@h @@XTh|Hp(@Pl(8dt$P`p(8,,DX0lXdt4@ p¼(@XpÈà$Ĩ,DHT4ȠȰ$Ʉɴ,ʈD0̌XhР<xѴLhHXhxԸ| 8֬,<Td4ؐب xو٨h0@xۈۘۨH@tݴp@ߤߴ< x(` DTd,<p`x| $4L\  | L0DT8t`($Hh8d<tl4Ld8\Xd0 T L `x ( 8  \ t     @   @    ` ` $4D\x(8H`x0H`x P|P|(ph P<xX@X  0 p  !!,!<!L!!!"""x"###$%0%%&d&'((8(l()X)**T**+4++,d,--D--.P./p00D011`1112422330348455D56<674788899H9::h::;;;4;L;d;|;;;;;<<(<@ >$><>T>l>>>>>>??,?H?`?x?????@ @$@<@\@t@@@@@A A$A<ATAlAAAAAABB,BDB\BtBBBBBCC C8CPChCCCCCCDD,DDD\DtDDDDEEE0EHE`ExEEEEEF F$F<FTFlFFFFGGG0GHG`GxGGGGGHH H8HPHhHHHHHHII,IDI\ItIIIIIJJJ4JLJdJ|JJJJJK K$K<KTKlKKKKKKLL,LDL\LtLLLLLMM(M@MXMpMMMMMNNN0NHN`NxNNNNNOO O8OPOhOOOOOOPP,PDP\PtPPPPPQQQ4QLQhQQQQQQRR(R@R\RtRRRRRSSS4SLSdS|SSSSSTT(T@TXTpTTTTTUU U8UPUhUUUUUUVV0VHV`VxVVVVVWW(W@WXWpWWWWWXX$X@XXXpXXXXXYYY4YLYdY|YYYYYZ Z$Z@ZXZpZZZZZ[[[4[L[d[[[[[[\\0\@\X\h\\\\\\\]] ]0]H]`]x]]]]]^^ ^8^P^h^^^^^^__(_@_X_p_____```0`H```x`````aa a8aPahaaaaaabb(b@bXbpbbbbbbcc c8cPchccccccddd4dLddd|dddddeee4eDe`exeeeeefff0fHf`fxffffffg g$g<gTglggggggh h h h h h h h h h h h h h h h h h(h8hThphhhhhi iDihiijjXjjk(kDk`kkklmmmnn4nLnlnnnoo0ooopp@pdp|pppqq(qDqqqr8rLrrrrrssTsstt`ttuHuuv$vHvvw|wxPxyy yHyyzz,z@zTzhz|zzzzzz{{{0{D{|p}}D}~8~l48`tLd<PHHd`,<LT @` @`(@`(8H` 0HhxP(8h<@hH h(dxxpH(`` Tx@d0\ ` `X\4d,h(hp8DdHdXH|\HDœ¸D`àdxĔp@Ƭ,`Lj(tD\|ʄ@dрѬ,LҬ l@Լ4h׸pd4`xۘ۸x8|ݼ P<L$hX h@T x H,L,t(<8tDxp< TT,T| PLh<x$L L\l,p8ttL,D  `  $     X  0 `xT0`@t0PpD<X@\pL8` !""#$<%,&&&'''8'T'p'''''((4(P(l(()P*@**++,+@+T+p+++++,,$,P,,--t./8/1|1112 2(2T2t22233,3H3t33344 4L4h44445$5@5l55666708(899:,::;8;;<<@<==d==>><>l>>??,?D?\?@ @8@`@@AA<AdAB BLBBCLCDLDDEEDEpEEEEFGXH QSTTlTU UVW\WXhZ]]^0^^`Xab<bpcDdde0efghDkl4mTnqrLrsHst0tvw(wxXyy0yPypyyyyz{||<|}~@xTL`lT0|h`LDT`H4T@@<|l|T80H`xøP ȐH ̨d$p֬T$$P8$ L0@P|dpXx(xTT`0 (   \(,8$T0X|xtxP  H t   ! !!"T"##$|% %|&@&'(h)*+,..081|2344456D7(789:X:::; ;<;<<0<<==0=`==>(>T>>??h?@@T@@ApBBlBC CDLDEFpGHIlIIIIIIJ J J<JPJlJJJJJKK8K\KKKKKLL8L\LLLLMM<M`MMMNNN8N\NxNNNOO,OPO|OOOP,PHPlPPPQ Q8QlQQQRRHR|RRSSS8S\SxSSSTT,TPT|TTTU,UHUlUUUV V8VlVVVWWHW|WWXX,XPX|XXXY,YPY|YYZZ<ZpZZZ[([\[[[\,\X\\\]0]l]]^^^8^\^x^^^__,_P_|___`,`H`l```a a8alaaabbHb|bbcc,cPc|cccd,dPd|ddee<epeeef(f\fffg,gXgggh0hlhhii,iPi|iiij,jPj|jjkk<kpkkkl(l\lllm,mXmmmn0nlnnoo<ohooop0plppqq<qpqqr,rXrrrs0slsst t\ttuu\uuv<vxvvw$wPwwwxy|zhz{ {| }}~P,4 (pDp x4@d  \0t4D d0p8HTdd<p,Tt$L4dd(l|l|,H8LlD <Xt8TpL PhT b+@   >bt| DD{{ ?:0*ln p))rQQtrrvyyxz|     ` `"$?S?S?T?T?U?V?V ?W ?=?>?3??ʿ?? ?!"? !?"?#$ vqjzzc Tz 0`$$b)(d0/h75l;;rDDtFFvIIxLLzOO|RR~XV         `??ݿ??տ?????????ǿ?ƿ?ο??ѿ??Կ?ȿ yQno^ab k l j m n p>n "" ??? 8T. $&6     !"#$%&'()*+,-./012 ` `"%(+.1 47:=@C FILORUX[?????????????   ?? ?$ ?'#?*&&,)(/,(2/.?611843?<64??99A<:D?=?H@@JC {~}{~}|~|~;2#^ 5u  )4<% U>< =< =m==>d>!< =F=>>t><=P=>$ >>= =Y=w=>8>> 0 2  4( <y  6 "Q : %: h; ?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~  sfthyphenAmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandicLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongsuni0180uni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191uni0193uni0194uni0195uni0196uni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEUhornuhornuni01B1uni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BAuni01BBuni01BCuni01BDuni01BEuni01BFuni01C0uni01C1uni01C2uni01C3uni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DEuni01DFuni01E0uni01E1uni01E2uni01E3uni01E4uni01E5Gcarongcaronuni01E8uni01E9uni01EAuni01EBuni01ECuni01EDuni01EEuni01EFuni01F0uni01F1uni01F2uni01F3uni01F4uni01F5uni01F6uni01F7uni01F8uni01F9 Aringacute aringacuteAEacuteaeacute Oslashacute oslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217 Scommaaccent scommaaccentuni021Auni021Buni021Cuni021Duni021Euni021Funi0220uni0221uni0222uni0223uni0224uni0225uni0226uni0227uni0228uni0229uni022Auni022Buni022Cuni022Duni022Euni022Funi0230uni0231uni0232uni0233uni0234uni0235uni0236dotlessjuni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240uni0241uni0243uni0244uni0245uni0246uni0247uni0248uni0249uni024Cuni024Duni0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni0259uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269uni026Auni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02AEuni02AFuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02B9uni02BAuni02BB afii57929 afii64937uni02BEuni02BFuni02C0uni02C1uni02C2uni02C3uni02C4uni02C5uni02C8uni02C9uni02CAuni02CBuni02CCuni02CDuni02CEuni02CFuni02D0uni02D1uni02D2uni02D3uni02D4uni02D5uni02D6uni02D7uni02DEuni02DFuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9uni02ECuni02EDuni02EEuni02F3uni02F7 gravecomb acutecombuni0302 tildecombuni0304uni0305uni0306uni0307uni0308 hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322 dotbelowcombuni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0340uni0341uni0342uni0343uni0344uni0345uni0346uni0347uni0348uni0349uni034Auni034Buni034Cuni034Duni034Euni0351uni0352uni0353uni0357uni0358uni035Cuni035Duni0360uni0361uni0362uni0374uni0375uni037Auni037Buni037Etonos dieresistonos Alphatonos anoteleia EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni03D0theta1Upsilon1uni03D3uni03D4phi1omega1uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03E2uni03E3uni03E4uni03E5uni03E6uni03E7uni03E8uni03E9uni03EAuni03EBuni03ECuni03EDuni03EEuni03EFuni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FAuni03FBuni03FCuni03FDuni03FEuni03FFuni0400 afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061uni040D afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097uni0450 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109uni045D afii10110 afii10193uni0460uni0461 afii10146 afii10194uni0464uni0465uni0466uni0467uni0468uni0469uni046Auni046Buni046Cuni046Duni046Euni046Funi0470uni0471 afii10147 afii10195 afii10148 afii10196uni0476uni0477uni0478uni0479uni047Auni047Buni047Cuni047Duni047Euni047Funi0480uni0481uni0482uni0483uni0484uni0485uni0486uni0488uni0489uni048Auni048Buni048Cuni048Duni048Euni048F afii10050 afii10098uni0492uni0493uni0494uni0495uni0496uni0497uni0498uni0499uni049Auni049Buni049Cuni049Duni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04A8uni04A9uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B0uni04B1uni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04B8uni04B9uni04BAuni04BBuni04BCuni04BDuni04BEuni04BFuni04C0uni04C1uni04C2uni04C3uni04C4uni04C5uni04C6uni04C7uni04C8uni04C9uni04CAuni04CBuni04CCuni04CDuni04CEuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8 afii10846uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni0500uni0501uni0502uni0503uni0504uni0505uni0506uni0507uni0508uni0509uni050Auni050Buni050Cuni050Duni050Euni050Funi0510uni0511uni1D00uni1D01uni1D02uni1D03uni1D04uni1D05uni1D06uni1D07uni1D08uni1D09uni1D0Auni1D0Buni1D0Cuni1D0Duni1D0Euni1D0Funi1D10uni1D11uni1D12uni1D13uni1D14uni1D16uni1D17uni1D18uni1D19uni1D1Auni1D1Buni1D1Cuni1D1Duni1D1Euni1D1Funi1D20uni1D21uni1D22uni1D23uni1D26uni1D27uni1D28uni1D29uni1D2Auni1D2Buni1D43uni1D44uni1D45uni1D46uni1D47uni1D48uni1D49uni1D4Auni1D4Buni1D4Cuni1D4Duni1D4Euni1D4Funi1D50uni1D51uni1D52uni1D53uni1D54uni1D55uni1D56uni1D57uni1D58uni1D59uni1D5Auni1D5Buni1D77uni1D7Buni1D85uni1D9Buni1D9Cuni1D9Duni1D9Euni1D9Funi1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5uni1DA6uni1DA7uni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1uni1DB2uni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1E00uni1E01uni1E02uni1E03uni1E04uni1E05uni1E06uni1E07uni1E08uni1E09uni1E0Auni1E0Buni1E0Cuni1E0Duni1E0Euni1E0Funi1E10uni1E11uni1E12uni1E13uni1E14uni1E15uni1E16uni1E17uni1E18uni1E19uni1E1Auni1E1Buni1E1Cuni1E1Duni1E1Euni1E1Funi1E20uni1E21uni1E22uni1E23uni1E24uni1E25uni1E26uni1E27uni1E28uni1E29uni1E2Auni1E2Buni1E2Cuni1E2Duni1E2Euni1E2Funi1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Auni1E3Buni1E3Cuni1E3Duni1E3Euni1E3Funi1E40uni1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Auni1E4Buni1E4Cuni1E4Duni1E4Euni1E4Funi1E50uni1E51uni1E52uni1E53uni1E54uni1E55uni1E56uni1E57uni1E58uni1E59uni1E5Auni1E5Buni1E5Cuni1E5Duni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E64uni1E65uni1E66uni1E67uni1E68uni1E69uni1E6Auni1E6Buni1E6Cuni1E6Duni1E6Euni1E6Funi1E70uni1E71uni1E72uni1E73uni1E74uni1E75uni1E76uni1E77uni1E78uni1E79uni1E7Auni1E7Buni1E7Cuni1E7Duni1E7Euni1E7FWgravewgraveWacutewacute Wdieresis wdieresisuni1E86uni1E87uni1E88uni1E89uni1E8Auni1E8Buni1E8Cuni1E8Duni1E8Euni1E8Funi1E90uni1E91uni1E92uni1E93uni1E94uni1E95uni1E96uni1E97uni1E98uni1E99uni1E9Auni1E9Buni1EA0uni1EA1uni1EA2uni1EA3uni1EA4uni1EA5uni1EA6uni1EA7uni1EA8uni1EA9uni1EAAuni1EABuni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EBEuni1EBFuni1EC0uni1EC1uni1EC2uni1EC3uni1EC4uni1EC5uni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED0uni1ED1uni1ED2uni1ED3uni1ED4uni1ED5uni1ED6uni1ED7uni1ED8uni1ED9uni1EDAuni1EDBuni1EDCuni1EDDuni1EDEuni1EDFuni1EE0uni1EE1uni1EE2uni1EE3uni1EE4uni1EE5uni1EE6uni1EE7uni1EE8uni1EE9uni1EEAuni1EEBuni1EECuni1EEDuni1EEEuni1EEFuni1EF0uni1EF1Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni200B afii61664afii301afii299afii300uni2010uni2011 figuredash afii00208uni2016 underscoredbl quotereverseduni201Funi2023onedotenleadertwodotenleaderuni2027uni2031minuteseconduni2034uni2035uni2036uni2037uni2038uni203B exclamdbluni203Duni203Euni203Funi2040uni2041uni2042uni2043uni2045uni2046uni2047uni2048uni2049uni204Auni204Buni204Cuni204Duni204Euni204Funi2050uni2051uni2052uni2053uni2054uni2055uni2056uni2057uni2058uni2059uni205Auni205Buni205Cuni205Duni205Euni2070uni2071uni2074uni2075uni2076uni2077uni2078uni2079uni207Auni207Buni207Cuni207Duni207Euni207Funi2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089uni208Auni208Buni208Cuni208Duni208Euni20A0 colonmonetaryuni20A2lirauni20A5uni20A6pesetauni20A8uni20A9 afii57636dongEurouni20ADuni20AEuni20AFuni20B1uni20B4uni20B5uni20D6uni20D7uni2100uni2103uni2104 afii61248uni2106uni2109uni210Euni210FIfraktur afii61289 afii61352uni2117 weierstrassRfrakturuni211D prescriptionuni2120uni2121uni2126uni2127uni212Auni212B estimateduni2132uni2134alephuni213Buni214Bonethird twothirdsuni2155uni2156uni2157uni2158uni2159uni215A oneeighth threeeighths fiveeighths seveneighthsuni215Funi2160uni2161uni2162uni2163uni2164uni2165uni2166uni2167uni2168uni2169uni216Auni216Buni216Cuni216Duni216Euni216Funi2170uni2171uni2172uni2173uni2174uni2175uni2176uni2177uni2178uni2179uni217Auni217Buni217Cuni217Duni217Euni217Funi2180uni2181uni2182uni2183uni2184 arrowleftarrowup arrowright arrowdown arrowboth arrowupdnuni2196uni2197uni2198uni2199uni219Auni219Buni219Cuni219Duni219Euni219Funi21A0uni21A1uni21A2uni21A3uni21A4uni21A5uni21A6uni21A7 arrowupdnbseuni21A9uni21AAuni21ABuni21ACuni21ADuni21AEuni21AFuni21B0uni21B1uni21B2uni21B3uni21B4carriagereturnuni21B6uni21B7uni21B8uni21B9uni21BAuni21BBuni21BCuni21BDuni21BEuni21BFuni21C0uni21C1uni21C2uni21C3uni21C4uni21C5uni21C6uni21C7uni21C8uni21C9uni21CAuni21CBuni21CCuni21CDuni21CEuni21CF arrowdblleft arrowdblup arrowdblright arrowdbldown arrowdblbothuni21D5uni21D6uni21D7uni21D8uni21D9uni21DAuni21DBuni21DCuni21DDuni21DEuni21DFuni21E0uni21E1uni21E2uni21E3uni21E4uni21E5uni21E6uni21E7uni21E8uni21E9uni21EAuni21EBuni21ECuni21EDuni21EEuni21EFuni21F0uni21F1uni21F2uni21F3uni21F4uni21F5uni21F6uni21F7uni21F8uni21F9uni21FAuni21FBuni21FCuni21FDuni21FEuni21FF universaluni2201 existentialuni2204emptysetgradientelement notelementuni220Asuchthatuni220Cuni220Duni220Euni2210uni2213uni2214uni2216 asteriskmathuni2218uni221Buni221C proportional orthogonalangleuni2221uni2222uni2223uni2224uni2225uni2226 logicaland logicalor intersectionunionuni222Cuni222Duni222Euni222Funi2230uni2231uni2232uni2233 thereforeuni2235uni2236uni2237uni2238uni2239uni223Auni223Bsimilaruni223Duni2241uni2242uni2243uni2244 congruentuni2246uni2247uni2249uni224Auni224Buni224Cuni224Duni224Euni224Funi2250uni2251uni2252uni2253uni2254uni2255uni2256uni2257uni2258uni2259uni225Auni225Buni225Cuni225Duni225Euni225F equivalenceuni2262uni2263uni2266uni2267uni2268uni2269uni226Auni226Buni226Cuni226Duni226Euni226Funi2270uni2271uni2272uni2273uni2274uni2275uni2276uni2277uni2278uni2279uni227Auni227Buni227Cuni227Duni227Euni227Funi2280uni2281 propersubsetpropersuperset notsubsetuni2285 reflexsubsetreflexsupersetuni2288uni2289uni228Auni228Buni228Cuni228Duni228Euni228Funi2290uni2291uni2292uni2293uni2294 circleplusuni2296circlemultiplyuni2298uni2299uni229Auni229Buni229Cuni229Duni229Euni229Funi22A0uni22A1uni22A2uni22A3uni22A4 perpendicularuni22A6uni22A7uni22A8uni22A9uni22AAuni22ABuni22ACuni22ADuni22AEuni22AFuni22B2uni22B3uni22B4uni22B5uni22B6uni22B7uni22B8uni22B9uni22BAuni22BBuni22BCuni22BDuni22C0uni22C1uni22C4dotmathuni22C6uni22C8uni22C9uni22CAuni22CBuni22CCuni22CDuni22D6uni22D7uni22D8uni22D9uni22DAuni22DBuni22DCuni22DDuni22DEuni22DFuni22E0uni22E1uni22E2uni22E3uni22E4uni22E5uni22E6uni22E7uni22E8uni22E9uni22EAuni22EBuni22ECuni22EDuni22F2uni22F3uni22F4uni22F5uni22F6uni22F7uni22F8uni22F9uni22FAuni22FBuni22FCuni22FDuni22FEuni22FFhouseuni2306uni2308uni2309uni230Auni230B revlogicalnotuni2311uni2318uni2319 integraltp integralbtuni2325uni2328 angleleft anglerightuni237Duni239Buni239Cuni239Duni239Euni239Funi23A0uni23A1uni23A2uni23A3uni23A4uni23A5uni23A6uni23A7uni23A8uni23A9uni23AAuni23ABuni23ACuni23ADuni23AEuni23CFuni2422uni2423uni2460uni2461uni2462uni2463uni2464uni2465uni2466uni2467uni2468uni2469upblockuni2581uni2582uni2583dnblockuni2585uni2586uni2587blockuni2589uni258Auni258Blfblockuni258Duni258Euni258Frtblockltshadeshadedkshadeuni2594uni2595uni2596uni2597uni2598uni2599uni259Auni259Buni259Cuni259Duni259Euni259F filledboxH22073uni25A2uni25A3uni25A4uni25A5uni25A6uni25A7uni25A8uni25A9H18543H18551 filledrectuni25ADuni25AEuni25AFuni25B0uni25B1triagupuni25B3uni25B4uni25B5uni25B6uni25B7uni25B8uni25B9triagrtuni25BBtriagdnuni25BDuni25BEuni25BFuni25C0uni25C1uni25C2uni25C3triaglfuni25C5uni25C6uni25C7uni25C8uni25C9circleuni25CCuni25CDuni25CEH18533uni25D0uni25D1uni25D2uni25D3uni25D4uni25D5uni25D6uni25D7 invbullet invcircleuni25DAuni25DBuni25DCuni25DDuni25DEuni25DFuni25E0uni25E1uni25E2uni25E3uni25E4uni25E5 openbulletuni25E7uni25E8uni25E9uni25EAuni25EBuni25ECuni25EDuni25EEuni25EFuni25F0uni25F1uni25F2uni25F3uni25F4uni25F5uni25F6uni25F7uni25F8uni25F9uni25FAuni25FBuni25FCuni25FDuni25FEuni25FFuni2600uni2601uni2602uni2603uni2604uni2605uni2606uni2607uni2608uni2609uni260Auni260Buni260Cuni260Duni260Euni260Funi2610uni2611uni2612uni2613uni2614uni2615uni2616uni2617uni2618uni2619uni261Auni261Buni261Cuni261Duni261Euni261Funi2620uni2621uni2622uni2623uni2624uni2625uni2626uni2627uni2628uni2629uni262Auni262Buni262Cuni262Duni262Euni262Funi2630uni2631uni2632uni2633uni2634uni2635uni2636uni2637uni2638uni2639 smileface invsmilefacesununi263Duni263Euni263Ffemaleuni2641maleuni2643uni2644uni2645uni2646uni2647uni2648uni2649uni264Auni264Buni264Cuni264Duni264Euni264Funi2650uni2651uni2652uni2653uni2654uni2655uni2656uni2657uni2658uni2659uni265Auni265Buni265Cuni265Duni265Euni265Fspadeuni2661uni2662clubuni2664heartdiamonduni2667uni2668uni2669 musicalnotemusicalnotedbluni266Cuni266Duni266Euni266Funi2670uni2671uni2672uni2673uni2674uni2675uni2676uni2677uni2678uni2679uni267Auni267Buni267Cuni267Duni267Euni267Funi2680uni2681uni2682uni2683uni2684uni2685uni2686uni2687uni2688uni2689uni268Auni268Buni268Cuni268Duni268Euni268Funi2690uni2691uni2692uni2693uni2694uni2695uni2696uni2697uni2698uni2699uni269Auni269Buni269Cuni26A0uni26A1uni26B0uni26B1uni2701uni2702uni2703uni2704uni2706uni2707uni2708uni2709uni270Cuni270Duni270Euni270Funi2710uni2711uni2712uni2713uni2714uni2715uni2716uni2717uni2718uni2719uni271Auni271Buni271Cuni271Duni271Euni271Funi2720uni2721uni2722uni2723uni2724uni2725uni2726uni2727uni2729uni272Auni272Buni272Cuni272Duni272Euni272Funi2730uni2731uni2732uni2733uni2734uni2735uni2736uni2737uni2738uni2739uni273Auni273Buni273Cuni273Duni273Euni273Funi2740uni2741uni2742uni2743uni2744uni2745uni2746uni2747uni2748uni2749uni274Auni274Buni274Duni274Funi2750uni2751uni2752uni2756uni2758uni2759uni275Auni275Buni275Cuni275Duni275Euni2761uni2762uni2763uni2764uni2765uni2766uni2767uni2768uni2769uni276Auni276Buni276Cuni276Duni276Euni276Funi2770uni2771uni2772uni2773uni2774uni2775uni2776uni2777uni2778uni2779uni277Auni277Buni277Cuni277Duni277Euni277Funi2780uni2781uni2782uni2783uni2784uni2785uni2786uni2787uni2788uni2789uni278Auni278Buni278Cuni278Duni278Euni278Funi2790uni2791uni2792uni2793uni2794uni2798uni2799uni279Auni279Buni279Cuni279Duni279Euni279Funi27A0uni27A1uni27A2uni27A3uni27A4uni27A5uni27A6uni27A7uni27A8uni27A9uni27AAuni27ABuni27ACuni27ADuni27AEuni27AFuni27B1uni27B2uni27B3uni27B4uni27B5uni27B6uni27B7uni27B8uni27B9uni27BAuni27BBuni27BCuni27BDuni27BEuni27E0uni27E8uni27E9uni27EAuni27EBuni2800uni2801uni2802uni2803uni2804uni2805uni2806uni2807uni2808uni2809uni280Auni280Buni280Cuni280Duni280Euni280Funi2810uni2811uni2812uni2813uni2814uni2815uni2816uni2817uni2818uni2819uni281Auni281Buni281Cuni281Duni281Euni281Funi2820uni2821uni2822uni2823uni2824uni2825uni2826uni2827uni2828uni2829uni282Auni282Buni282Cuni282Duni282Euni282Funi2830uni2831uni2832uni2833uni2834uni2835uni2836uni2837uni2838uni2839uni283Auni283Buni283Cuni283Duni283Euni283Funi2840uni2841uni2842uni2843uni2844uni2845uni2846uni2847uni2848uni2849uni284Auni284Buni284Cuni284Duni284Euni284Funi2850uni2851uni2852uni2853uni2854uni2855uni2856uni2857uni2858uni2859uni285Auni285Buni285Cuni285Duni285Euni285Funi2860uni2861uni2862uni2863uni2864uni2865uni2866uni2867uni2868uni2869uni286Auni286Buni286Cuni286Duni286Euni286Funi2870uni2871uni2872uni2873uni2874uni2875uni2876uni2877uni2878uni2879uni287Auni287Buni287Cuni287Duni287Euni287Funi2880uni2881uni2882uni2883uni2884uni2885uni2886uni2887uni2888uni2889uni288Auni288Buni288Cuni288Duni288Euni288Funi2890uni2891uni2892uni2893uni2894uni2895uni2896uni2897uni2898uni2899uni289Auni289Buni289Cuni289Duni289Euni289Funi28A0uni28A1uni28A2uni28A3uni28A4uni28A5uni28A6uni28A7uni28A8uni28A9uni28AAuni28ABuni28ACuni28ADuni28AEuni28AFuni28B0uni28B1uni28B2uni28B3uni28B4uni28B5uni28B6uni28B7uni28B8uni28B9uni28BAuni28BBuni28BCuni28BDuni28BEuni28BFuni28C0uni28C1uni28C2uni28C3uni28C4uni28C5uni28C6uni28C7uni28C8uni28C9uni28CAuni28CBuni28CCuni28CDuni28CEuni28CFuni28D0uni28D1uni28D2uni28D3uni28D4uni28D5uni28D6uni28D7uni28D8uni28D9uni28DAuni28DBuni28DCuni28DDuni28DEuni28DFuni28E0uni28E1uni28E2uni28E3uni28E4uni28E5uni28E6uni28E7uni28E8uni28E9uni28EAuni28EBuni28ECuni28EDuni28EEuni28EFuni28F0uni28F1uni28F2uni28F3uni28F4uni28F5uni28F6uni28F7uni28F8uni28F9uni28FAuni28FBuni28FCuni28FDuni28FEuni28FFuni29CEuni29CFuni29D0uni29D1uni29D2uni29D3uni29D4uni29D5uni29EBuni2A00uni2A01uni2A02uni2A0Cuni2A0Duni2A0Euni2A0Funi2A10uni2A11uni2A12uni2A13uni2A14uni2A15uni2A16uni2A17uni2A18uni2A19uni2A1Auni2A1Buni2A1Cuni2A7Duni2A7Euni2A7Funi2A80uni2A81uni2A82uni2A83uni2A84uni2A85uni2A86uni2A87uni2A88uni2A89uni2A8Auni2A8Buni2A8Cuni2A8Duni2A8Euni2A8Funi2A90uni2A91uni2A92uni2A93uni2A94uni2A95uni2A96uni2A97uni2A98uni2A99uni2A9Auni2A9Buni2A9Cuni2A9Duni2A9Euni2A9Funi2AA0uni2AAEuni2AAFuni2AB0uni2AB1uni2AB2uni2AB3uni2AB4uni2AB5uni2AB6uni2AB7uni2AB8uni2AB9uni2ABAuni2AF9uni2AFAuni2B12uni2B13uni2C67uni2C68uni2C69uni2C6Auni2C75uni2C76uni2C77uniF208uniF217uniF25F afii10064uniFB00uniFB03uniFB04uniFB05uniFB06uniFFFD dlLtcaronDieresisAcuteTildeGrave CircumflexCaronBreve Dotaccent Hungarumlaut Doublegrave arabic_dot arabic_2dots arabic_3dotsarabic_3dots_aarabic_2dots_a arabic_4dots uni066E.fina uni066E.init uni066E.medi uni06A1.fina uni06A1.init uni06A1.medi uni066F.fina uni066F.init uni066F.medi uni06BA.init uni06BA.medi arabic_ring uni067C.fina uni067C.init uni067C.medi uni067D.fina uni067D.init uni067D.medi uni0681.fina uni0681.init uni0681.medi uni0682.fina uni0682.init uni0682.medi uni0685.fina uni0685.init uni0685.medi uni06BF.fina uni06BF.init uni06BF.mediarabic_gaf_bar uni0311.caseEng.altuni0268.dotlessuni029D.dotless uni03080304 uni03040308 uni03070304 uni03080301 uni03080300 uni03040301 uni03040300 uni03030304 uni0308030C uni03030308 uni030C0307 uni03030301 uni03020301 uni03020300 uni03020303 uni03060303 uni03060301 uni03060300 uni03060309 uni03020309 uni03010307 brailledotJ.alt uni0695.finauniFEAE.fina.longstart uni06B5.fina uni06B5.init uni06B5.medi uni06CE.fina uni06CE.init uni06CE.medi uni0692.final.altA&%$!:$#"!:"!: d}}      Y    & Y @ &  .A@}>,,G}G  @ 2 d۠d%%%   %ё%Д #&̑ɻ]ɻɀ@%]@%dĐ::2  }& @ ]%]@..@   K%%%2 ~}|{zywvwvututsr}qpo,o,nmlkjihc h2gf2ed ed d@cb c b a`a``_ ^]\\[Z[ZZYXWV@VUTSRQRQQPOPONONMLKLKJKJIJIHGFGFEDCDCBA%BAA%@?@?>?>=< =< ;d:987656%54554 4432 33@2 10100/ .-,:-,%,:+d*d)(''& %$#@+$#" "!!@  %@ K}K%%dd   2     @   @d  d++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++r,       !! #" >> ?? @@ CA ^^ __ `` aa bbcc gdkh qm srutvv zx {{}   wv             xx    PP                  + ,,3.5466 77 88 C:EDFF GG HH [I]\ c^ jh pm rr uuvv y . //00 1           e q q | s   micropolis-activity/res/dejavu-lgc/DejaVuLGCSans-Oblique.ttf0000664000076400007640000146236010724145723024327 0ustar simcitysimcityPGDEF\i\D\GPOS4x/GSUB=Z3, DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz     " ( . 4 : @ F L R X ^ d j p v |     $ * 0 6 < B H N T Z ` f l r x ~ """"""""""]Rc$44 4~RcO{{{{1X{{{>{{L{{{{{{{{U{{Mh{{x\3)){.=T{(w{{{RR3{/{ {{{^{{{{{{{{`{{#{{{{{/{{)]{{{!{!{{{{[{Z{7?{{{{{%{;{{{{{{{{{{{{@@{{{6q/G{{#@{{{6{ {{{{{ {{{{D{{?{{Y{{c]$ {{{{{ {{{{j{w{{{{{{**{{{6{x{{{${h{{{l{e{*{V{{3{{%{{{{{<{zU{44z{{y{tDt{{{48{Ss{{q{8{{{K$= D]$>?@ABD  E((GBBHHIIPVKX]R__XffYijZlp\txa{{fgh lmt9>@FHHJQWX\\^^bbjjww "##$%%%22&55'77(??)JJ*MM+}},-0456789: < P R!# '2 $*06<BHNTZ`flrx~{{{{{{{{{{{{{{{{]{{orr{Hr{{{{r{{{{{{{{{{{{{{{{{{{{{{  &,28>DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz "(.4:@FLRX^djpv|**ZZ pqR c _*c;,J2R]R,y6 RR;Rv8RuR\zRDRDv*_* %FRYRR DDRRRR3RRRfTR-R~QRORRR |R;R;R}RF\RTRTRYRTRlR=RRRRyR4]RRRi=RqR^R~R 4^TTXgX b*,*Lp4R $= D]$>?@A  BTTCllDvvE{{FG JmR::@@%%   ! "(.4:@F __11C A4;449 N  R  ! "(.4:@F __11C A4;449V ;{  "- "(.4:@FLRX^djpv|{{{{{{{{{{w{{{{{{{{{{{{{{{{{V )TZ`flrx~ &,28>D?h?h?h.....Q]?h?h,,?h<D.4DDDD55  ! "  "- "(.4:@FLRX^djpv|{{{{{{{{{{w{{{{{{{{{{{{{{{{{ DFLT,arabFNV^fnv~:Lx|x^0r<<<2DLM**__ S$=IIKKLMOO      ""$$&&((**,,..0022446688:;==??AAHHRRTTVV**__&   dpz "(.4:@FLzvqj')-++,+0../. r+.& (2dn  &,  $ #!  Q $&DFHLQRVX\~(:FPZfr B"5 A@"$;V0(/FXR")567DF2 ( IO IL I WIV O LI WAZD&.6>FNV^fnv~=====~=~= "==&.6==== "===ZY[WX]\-3:@HN  D    -O  -DO ZY[WX]\-3:@HN LM*_  33f  P PfEd m`$~~NQX]bu~#.jx{EMWY[]} ' ^ q !!! !!!!!!"!$!'!+!.!2!5!@!I!K!"="""""""### ###!#%#*#}##$#$i&&'' '''K'M'R'V'^'''''())*****+,l,w_ QW\`tz&0w{ HPY[]_ 0 p t !!! ! !!!!! !$!&!*!.!2!4!;!E!K!S!"A""""""###### #%#(#}##$"$`%&''' ')'M'O'V'X'a''''())** *}**+,`,t_wb" zvunc`^\ZYQMKHGC=742Q|ua~jaZSn    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}byqz#/77R-997y\H/{PfoHTs +b-{T\qb#H99````{w`{Pffw;{J/}5oo-{TffqD)fs04 <, %Id@QX Y!-,%Id@QX Y!-,  P y PXY%%# P y PXY%-,KPX EDY!-,%E`D-,KSX%%EDY!!-,ED-ff@ D/10!%!!fsr) @-   :HF 991/0KSX9Y"K TK T[KT[KT[X @ 878Y3 #3#Z2q1qe@IF1<20#!#o$++/N@4L L    91/<<<<<<<2220!3!!!!#!#!7!!7!!!h$igP'RT$hggh%JT'Pf8T%aabbND /`@9 $ KOM+* K#M-*',+ -#$*  '09991/<2290%>54&'.'#.'7.54$?3Xfs_l""VOT;d;tS"\jX/d,ZgT\ZdFO.2U -/*>D$~ #/3O@,W*WRW!W*R1$Q0V40-2 '  ' - 49912<0"&54324&#"3264&#"326"&5432#ሟ躈HNMp~QKk\LMoQKk纈.ñ ij­\dkjí]dò   ` 3@T// ///:0 /& Z&%Y)Z"VQ 0/&, % 3,3  4999991/9990KSX999Y"]@X *: It      % & %&+)*%*&6 9%9&6/KIkxu/]] 326#'#"$547.5467>32.#">7Vy}^n-gjj.+ExNQ#KF|&EKjXgA[lSUڴt._6Dz2RZ$$/1d,VXOzo@ IF10#o+j @ \   99910#&5jLL\ZəE)G#N !@\ 999104'3 KL\ZKS7=JN@,  ] ] V    <2<2991<22990 %#'-73%g:r:g:PrPbybcy #@ `  <<1/<<0!!#!5!-Ө-Ӫ--@:bH10KSX9Y"K TK T[X@878Y@%%55FFVV ]KTX878Y73#!ぐ@\?@ c9910KTX@878Y@ __oo]!!}w{Q@:H91/0KSXY"K TK T[KT[X@878Y73#1jBj.@:F910KSXY"3#mf#D@d dV Q$! $10K TK T[K T[X$@$$878Y2#"547>"3267654&e[]g\\L7\murP7[ku}QOuХQOѥd T@* :ddFd   99991/20KSX2Y"7!7%3!!J#sI }HHժ@,:eY dVd 999991/990KSX9Y"K TX@878Y@( ,,eyuxy '4Ucv]] !!7>54&#"7>32{#7!qn_%|`rרBu]azDA12Щr+@+ d!KXd+KX(dVQ!g,!  "+ %,99190K TX,@,,878YK TKT[KT[X,,,@878Y@aff*a++]]>32#"&'732654&+732654&#"Dnd跡~vslR^c%^d`l &$}xL:9%%43ˢhq^g))% @;   : d F   991/<290KSXY"K TK T[KT[KT[KT[KT[X@878Y@$:  +*) :89 6 f yu ]]33##!7 !q!CD^'7f3`) @6  :dKOddFQ!   !999190KSX2Y"K TKT[KT[X!!!@878Y!>32#"&'732$54&#"H._1{qPZg%\^OZը޾\@E --갂%% *@# d dk K hj(VQ+ "+9190K TX+@++878Y@`z{J J JJ*Z Z ZZ*j j jj*z z zyz* * * * * * * *-]]4&#"326.#">32#"5476$32pӁr":U>IpkfFimbg%N)ﰄ:&(UWӲ_AF@:dF991/0KSXY"K TX@878YK TKT[KT[X@878Y@ ')Zhxy]!#!'V+D /c@#$d dd*VQg0$' -'!0991990K TK T[KT[X000@878Y4&#"3264&#"326#"&5467.54$32˛gtsqxگin-qrD_ttdz+{Ӱ"$lŘZ*@("K"d kjh(dVQ+% +9190K TX+@++878YK TKT[KT[KT[KT[KT[X+++@878Y@FFFdddd ]?32#"&5467>32#"&32654&#"Z%:U>JpjgFhobhܲMDŽp҂r!&(UYӲ^BFvj #k@(:HlH91/0KSXY"K TKT[X@878Y3#3#91l2### @.   :HbHl   9910KSX9Y"]]K TK T[KT[X @ 878Y@%%55FFVV ]73#3##၏1@^M@*````:nm29190KSXY" 5Ѧ`@ ``<210!!!!^O@+````:nm<9190KSXY"55//m!@F  : K!NZHV  !"9991/9990KSX9Y"K TX"@""878Y@ t t ttt]%#7>32#7>?>54&#"11fjkyhT8NojTDm`Ph98gbTB^\{^\YFj9LVGBw4@Z@3 5"!4;or!o%5o ro%.A>  !"4811(A9912990%#"&543273654!"!267# 476$3 "32654&EW)\']RǥUѼhAiāresJLƘIPG0'}rW]rfiGr~wߜp~fy @@    :Z F   91/<90KSXY"]@$ *HIHGWhgw]]3#!# !>`]$+7 l@<:ZZFZs    !9991/90KSXY"!2)!2654&# !2654&#Zг||TjEƃX-z՜ݨvlf>|aYVS@ ZetZVQ   99910K TKT[X  @878Yo!].#"32$7# 476$32)`}^32.#"326^NƟku)Z_Q]joIO8WUGG^cylۘ-7 }@D     :ZsF    9991/<20KSXY"3!3#!#Zwwˋ#d+97%2@:F91/0KSXY"3#Z+f! K@&  : ZvF    9991990KSX9Y"3+73267V5P!?%󪚾7 @G     :F    991/<290KSXY"]@j$%#675HXkixx  &&%'787=<IGFYX\[hfbbzxx~~$]]3! ##Z{ u7)79@:ZF9991/0KSXY"3!!X!^Ө7 @Q     : F    9991/<290KSXY"]@  )70 JC x  &)(') 2547 5 DGJCI F XYWhfw *]]!!## #Z/B7ž+7 @@  :F   999991/<2990KSXY"]@P' ?6H[j ")&5:=7IWY_ hkw ]]!3!#Ze+R#D@ ZZVQ$  $KTK T[KT[KT[X@8Y100%]"32$7>54& 476$3 ^54& yl}9<^>OO]]``]!!#!y ժ+w@<     : ZQ F   9991299990KSX99Y"@!     4 4 4 4 4 444]K TX@878Y]332673!"$5467=˰ .˴; u=O\#W2@&:F91/290KSXY"]@0*(8GGXWgieyywh]]!33+)  @I      : F    91/<2290KSXY" ]@ ()& ;;3 KF     ')$)+*(- & * 6756 6 8 KGCH G VV gihg g yx 1]]333##H3J-hE  +# M@I    : F    91/<290KSXY"]@ )+) :8; IJI YZhhh y   ''()())& ( 8::665 5 8 FFGGD F H YYXT T X ffehfggfe e f zzzyu u    I]]3 3 # #s7u#h@7:F 9991/290KSXY"]@:(9IIZY{y$5Vj ]]3 3#[ʉf9 P@:ZFZ   91/0KSXY"x]@ w]]!!!7! { =w՚oR\Q@!:oo\9910KSXY"]]!#3!XB0@:F910KSXY"#XmD@ :oo\9910KSXY" !73#7X+ޏ@ F91290 # #HHu-o10!5fk910K TKT[X@878YK TK T[KT[KT[KT[X@878Y@ DDUgv]#JњfvT`{ +@d  #"$!)*(+:+(!!o (LK{LzQ +"! % %#% ",99991/99990KSX99999Y"0]@.<<O[[jjzz 2C@TPd`tp ]]KTX,,,@878Y@ !"#$+ ]#7#"&54$)7>54&#"7>32#"3267L}"Q9 Zd h] Ѹob$dc1Yc..''!Y~yXd״J%@M  $#$#"$# !#$#$#%$$#:! L LQz$\""#% !#$$%#$&999991/990KSX9999Y"`']KTX&&&@878Y']4&#"3267>>32#"&'#3uU7:CsW89FDpwnHgm2!/SOSmQORm\iƢvNTdc^J{K@KN LKNLzQ  " 99910KTX  @878Y.#"3267#"&547>32J%BPX6V^L]#PY}{TN500>9W}..!!Ϯ%uPR#^%@L   : L LQ z\%"&999991/990KSX9999Y"`']KTX&&&@878Y%#"&547>323#3267>54&#"XJ{vpJfl-xѹtV8;DsW5:EadǦ-wOShabSQTkRMS^{ &@$o KNL |L!zQ' $ #$#"'999910p(]KTX'''@878Y@,oooolo o o o$o%o&]]>54&#"!3267#"&547>32{65x\#cm}yNy "z&,64((ͯ-vJP.i@<      : o}\~      K TK T[K T[K T[KT[KT[KT[KT[X 8Y991/22990KSX9Y"#"!!##737>3d[/Ѿ&Oic/яNƠBV{.@X"#!-.,   :#,K L#Lz,L~ )"/99991/99990KSX99999Y"`0]KTX///@878Y!"&'7326?#"&547>3274&#"32ſ7aH"DV$MvvkGgq) \vI/LUy`+,*TX\ś)sLRi`e:4V|=H@M   :  Lz\   '%$99991/<99990KSX999Y"0]`]KTX@878Y]#>54&#"#3>32u j_ y/wFx \/HT^Ȧ^m$RH/q@*:c\~(%$9991/0KSXY"@ ]KTX@878Y3#3#w-'۸V7@A : c }~\   (...99919990KSX9Y"K TK T[X@878Y@////PPPP```` ]3+732673#)%0-vE/l[3-`GCHZ(H @H))     :~\   % $ 9991/<90KSXY"]@>6STThi ::@ XXWWiljyyy]]KTX  @878Y33 ##ww@"ju#H/U@:\%$91/0KSXY"@]`]KTX@878Y3#wѸH?{+@s    : # L& z~  #) # '#')$,99999991/<<<2990KSX9999Y"0-]@-`-p-]KTX,,,@878Y#>54&#"#>54&#"#3>32>32/dZ{dX{۸#KszT{\+>Zdɡ%?[eɡ`bgrv|!OH{@M   :  Lz~   '*$99991/<99990KSX999Y"0]`]KTX@878Y]#>54&#"#3>32u j_!{ٸ%Mw \/HT^ũ`aj$R^{ ?@LL zQ! "!10KTX!!!@878Yp"]"&5467>323254&#"O?cN?by~h@/3zVW˘CacJV{%@O  $#$$#"$# !#$#$#%$$#:! LLzQ"$~&"&% !#$$%#&K TK T[KT[KT[KT[X#8Y999991990KSX9999Y"`'p'']4&#"3267>>32#"&'#3xR:9DvW59FJ{voJgw(s-TPOnRNRiad˦wOScb ^Z{"@L  :LL zQ~#%"#KTX@8Y999991990KSX9999Y"`$]$]%#"&547>3273#3254&#"VJzwoHg|$ չ:|uwW7:Cadɢ.xNTbcRMQNRH{@   $991@  Lz ~/990K:PX@       99Y"O]@@@@@@@@@P ].#"#3>32H)$q۸#Is:߻`ah{(@?      :  KOLKOL&zQ)  #)K TKT[KT[X#8Y9991990KSX99Y"@( //)X X X X XX ))99JJYY]].#"#"&'732654/.54$32#IV;{Yv$eZ? [?((cUc53pa"$46tY`;%y^b@>  : o~ }  K TK T[KT[K T[X8Y991/<2990KSX9Y"]@ gyy]!;#"&5467#733bwMUw>=`". @:7!`>u`@L    :  LQ ~  'K TK T[K T[KT[KT[KT[X8Y99991/299990KSX999Y"`]332673#7#"&546 h_!{ٸ%Ny c1FU]ȩlbkZ`@'++++:~K TK T[K T[KT[KT[KT[X8Y91/290KSXY"]@,x%75IIgftsu]]0]33#ä`H` m@J++     + + : ~    KTK T[KT[X8Y91/<2290KSXY" ]@5 ED ST gdvt     ,&( ) $ 6=768 3 6 LHJJII H F [XZYZX feeddf` f v{zyv v   =]]@.    ]]333##/>7T`{{`` ~@H++ + +  +  +++: ~   K TKT[KT[KT[X8Y91/<290KSXY"]@*)&'%&)) ) + :865579 ; JIGEEGI J VVUVXW ffffefg f f vuvuuw v   J   &+)& 6886 FIIF Xihh wx   ]] ] ## 3;d'w`DNkV`@F +  ++ +  + + :  } ~ K TK T[KT[KT[KT[X8YKTX@8Y99129990KSX9Y"]@f& 7 F v w v &$$)9 9 98I I H Hwwwx x v v yy  *]]+7326?33}jMlC9úhkTzk7ZX` s@++:o~o   K TKT[KT[KT[X8Y91/0KSXY"x]@xw]]!!!7!j!s!Kk`ۓ%4@f -.-..-    : 5'- )'.)o'oo'\5)(54.  $-5999199999990KSX9999Y"]@K      % % % %%5 5 5 55H H H HHK K!K"K#K$K%Z Z!Z"Z#Z$Z%%]#";#"&546?47654&+7326?>7>3M^3 yoIQ/UaNG- bq=> /G7.OgKB&5?9m{ D% 2-UKm{'"10#4@f -.-..-    :-5)  )'.'o)o)o\54.  5)('*(599199999990KSX9999Y"7326?>7.546?>54&+732;#"#N^3!xoIP/UaNJ- bq>>~5F5/OfL@&"2@9l{D' 1-VJn~&"1#@ `` 1990#"'&'&'&#"5>32326ian ^Xbian ^V1OD;>MSOE<>L k@/ :HF   99991/0KSX9Y"]]!#3#73yZ1p1eH!@[     ! : K NKNLL LLzQ"!    "912<0KSX9999Y".'>7#.5%3z+I>#/|YBS#AM324&#"326{r%$&(r;t=:x=q%%&&s7t@?s9q(&%%s>v:@t8s'%$|ppr\b@]  :    F    9991/2<2<290KSXY"]@85ESww  &&&::GFWUT``v vuu]]!#!7!7'!7!33!!!beXX` 6 ̾Rq 9{3{JD{3@ <210##  = B@J23-4  3:*M)-o&Mo@V&C230  0:34 00#= # 7C999999919990>54&/.#"#"&'732654/.5467.54632ZRVkPQUU~ H:gXzUr))ER L;pL{Rv+'G1o96q[33p82aSϤ''aIOZ :A$104G$ 73D=00*/D0/J21/02#"$'&5476$"3267>54&'..#"3267#"&54632mmllmmmmllmm^^``^^⃄^]]^\^BB@zBCFInmmmmnnmmmmng^^^傁^^__^]⃅]^^! "R +/r@@ " .,#" ,&V0 .- )/,0 #";);0999999199990"326?#7#"&546;5>54&#"7>32!!RLAsX:`kж]dFIODPPKS;F{=@pABzdFA""|x7{q# 1@  l   991<299077'%}'%}#RR^@ `10!#!^\@ c9910!!}/8L`@6EBC?2H09JC 9 $HE301B54&'.'2#"$'&5476$#32654&'2#'.+#^^``^^⃄^]]^\^ㄘmmllmmmmllmm}{{nWXfi`C.;I6Bf^^^傁^^__^]⃅]^^gnmmmmnnmmmmnb>KL?gwyVpMI`3D}b @1@oK QX@8Y0!!Vu=  @ V ,-,10"32654&'2#"&546PnnPPnoO@v+..ooPOmmOOp1.-rB .@`  `   <2<21/<<0!!#!5!!!-Ө-}}J@/AA: V C9991990KSX9Y"]@ )),,]K TK T[KT[KT[KT[KT[KT[KT[X@878Y@#699FOOLLLLFYYjjzz] !!7>54&#"7>32;:TF7SL@{@BrnT.V(6C"${rY>q!(k@* (%V) (C "C)99190@(     ]]>32#"&'732654&+732654&#"S~7}raKP߸@@5p?{abV\fsRR8|=iVMr^Hy\R>?lH@55-f10K TKT[X@878YK TKT[K T[KT[KT[X@878YK TX878Y@VV]3#fqfV`&@X   &#$"% : % L"Q ~'&'  %%'99912<990KSX999Y"3326733267#"&5#"&'-um  # ,P&BK8i]lV G4]d  TJPNVF; i@2  :F %% 99991290KSX9Y"!###.541ύXfNHF/@:H910KSXY"3#2Fdu#&@    991/90!#"&'732654&'$"+V+'O*!!catc\z˖&%>wPns֗mvⴚD?jv`{o# 1@  l   991<2990%77779'c''`% ^R^ ^R'Zd&{x5&{'x5td!'Zd&ux5Lf!@I  : !HK!NZQF" ! $"99919990KSX9Y"KTX"""@878Y@#dddddddz y zzzz]73#"&546?>?33267d21gkkxgU9NnkTCm_Qh98gbTD^Z{^\YFj9LVGBk&$ uk&$ um&$ u^&$ uN&$ um !@P !  !   : Z S " !"999991/<9990KSXY" ]@8 & 9MW  ( 98HGHW[YXX!gww ]]4&#"326.54632#!# !Y?@WW@?Y69rrIE>`]$Z?YWA?XX%qErrOz$@L  : ZZZZF Zs  91/<0KSXY"]@-   GIIIGWXgfwuwwy] !%!!!!!!#ʚ!X!8i!>I7FVu&&z7 k&( u7 k&( u7 m&( u7 N&( u7Vk&, ;u7k&, ;u7m&, ;u7"N&, ;uo@=    : oZFZ       /999991/220KSXY"! #!#73!!! 4&!dYawwL)^PfTs߾z|zc7^&1 uRk&2 TuRk&2 TuRm&2 TuR^&2 TuRN&2 Tu? @M `  ````` ` ` :   <291<290KSXY"  ' 7 7w55v8vL57y5yy5y 7@B78(&# )562'#Z2Z#V2Q8',(68),  &,5 (,7,  8.99999991999990@$7754709 &5&5' )765]]K TKT[KT[KT[X888@878Y@>IJ J7YZ d j gu { w) D6C7WS6S7`6`7w q6q76767]].#" 32$7>54&.5476$327#"&''-b\>A u3c[>? ''zm}9TZ((vp˽LZ<=mr-W,DCpz8]PUPMMcIbTRcwk&8 uwk&8 uwm&8 uwN&8 uhk&< u7 q@= :Z ZF  999991/0KSXY"!#3!232654&#DB#3 qm|rRѯhs`5@\#$#  $$#45512035:3*$ #0KL0L\Q445$'# 35'*-  ' '-#56999999991/990KSX999Y"]@]]K TK T[K T[KT[KT[KT[KT[KT[X6@66878Y6$32#"&'732654&/.5467>54&#"#=& Ů*01wRL?AG|/N3aCԭqd۹q޺=%a(H%'^Pr[-NC+RoC~%NZT`f&DCdTf&DvdT`f&DdT7&DdT`&DjdT`&DdT{ >I@T5>3*# I?>?o3o$K#NF L' K>{;L| z-'Q3JI@C54?  >3 C8*? #$ ?C0"J99999999912<<<99990@2; ; K K \ \ k k { { 3=0>D=@>T=P>c=`>t=p>=> ]]KTXJJJ@878Y@,oooolo ooooo1234?@AB"#]]>54&#">32>32!3267#"&'#"&54$)7>54&#"#"3267|6h]-V x["dm8f܄9 Zdfob$"z''Z\Z\.i<&,64((sqvn1Yc..yXd״^uJ{&Fzw^f&HCo^f&Hvo^f&Ho^&HjoHf&CH+f&vHf&H&j\.@`:##L)L Q\/&,,&,& "/999919990KSX9Y"KTX///@878Y#"&5467>32''%'3%.#"3254&DEOKTRLX:(| G`P#+W,ufvdt|xet|k^ȃm_bdCDlH7&Q^f&RCs^f&Rvs^f&Rs^7&Rs^&Rjso )@` > <<103#3#!!oA '1@B'2")( ,%" ,&",L"Lz"Q2/&2 )( / /% /' "29999999199999990@DJ H EGV%U&X)kkg%b&f's&w'p3I I FFU VWWY(fh%uvx%y&y'y)]]KTX222@878Y ()]].#".547>327#"&'' 324&%]:O?bW:VO>aW9V'[;#"/)1~KzV43V7}D|V54T3%#G'&uf&XCjuf&Xvjuf&Xju&XjjVf&\v^V%@L  $#$#"$# !#$#$#%$$#:! L LQz"$\&"&% !#$$#&999991990KSX9999Y"K TK T[KT[KT[KT[X&@&&878Y`'p'']4&#"3267>>32#"&'#3xR:9DvW59FJ{voJgw(s}TPOnRNRiad˦wOScbV&\j^1&$q;T`&DqJi'!$T&qDs'$Ts`{'DVk&& -u^f&FvwVm' Ou&^if'FVP' Gu&^J'FVm&& -u^f&Fw7m&' u^&G B^-@i'&(% !"#$  :((L LQ z\%%".999991/<2990KSX9999Y"`/]KTX...@878Y%#"&547>32!7!733##3267>54&#"XJ{vpJfl-CFtV8;DsW5:EadǦ-wOShaR{{SQTkRMS7 3&(q=^&Hq7 m' u(^H&oH7 P' u(^&oH7s '(^s{'eH7 m&( u^f&Hw\m' Su*BVf'J\m&* 'uBVH&J\P' Ku*BV'J\'*BV4' J7m' !u+Hm' BuK@4:Z  ZsF     9991/<2<<220KSX@(      <<<6STThi ::@ XXWWiljyyy]]KTX  @878Y33 ##'^H1j`!7l' v/Hal' vO7'A /(/' O7' zn/H' ~O7'y%/H'yO b@7    : ZF     .99991/90KSXY"3%!!'7b}`8Id!_r9}XL{q# j@3: \ %$ 9991/90KSXY"p ]ed` ]37#'7t5ߞ5@wf=wb7l' v1Hm&v6Q7' 1H{'V Q7m&1 -uHf&Qw&~QUMV33+732767#p*ech05}``0A}HV{#@! !*$&999919@ } Lz~/9990@0   :KSX9999Y"0%]`%]KTX$$$@878Y%]#!73267>54&#"#3>32u%0-vl[ j_!{ٸ%Mw CGCHZ/HT^ũ`aj$RR1&2q';^&RqsRm' Tu2^H&sRR0k' Tu2^f&sR^ #@9    :ZZ F Zs  #  $91/220KSXY"KTK T[KT[KT[X$$$@878Y#";!!!!!"&'&5476$3xW1!X!9h!N{^+LInӵ+F#Ftba^{(2A@9 /) )o K N6L|32>32'>54&#"3254&#"x[%cm/e燿LBc6c {7h@/3264')ncihXulpq.iT"z嘗@acJ7l' v5Hdm&v6U7' 5({' U7g&5 [oHf&U l' v6dm&v6V m' u6f&*V u&6zdu{&Vz m&6 u0f&VXuh&zL7ub&zWXhm&7 um&W jz!!!!#!7!!!p !pp! pժA@ @!!!3#;#"'&54?#737#73>{-- sA)-->A+/'P1b>P>w^' u8u7&jXw1&8q;u&Xqwm' u8uH&jXw<&86u&XFwk' u8uf&jXwc&8wus`&X)t&: |f')Zht&< {|Vf&>\hN&< ul' v=dm&v6]L&= qX&]m&= uXf&]!##737676;#"D&_`ͮd.-яNPP'(i& (6'&  7667632#"'&'##7373!!(==jj('==$jjNbb{43{OO' E/tssttsstRd0110d}}i &1!27676'&#2#!"#76763!27676'&#kD\\BAkj#??'E8 $op֪X+TS=>DCBC `` ef//&r1FRQ>78rq888&"67632#"'&'#!%6'&  76Nbb{43{OO' .N k(==jj('==$jjd0110dtssttsstW 6'&#!!276!2#!#AAkD[]cwNsr++DCDCmmDH"67632#"'&'##36'&  76Mbb{34{OO&!Ժ}Q'==jj'(==$jjd0110dDtssttsst9@   9991@Zet ZVQ 0o]?32$7>54&#"7>3 #"&)`}^:i 3 '&!7 )"#767635V:;utKK"PaE8 $op/w.,~//&r1FRQ} 3!!"!!"&76763!!bBADj[\N++NW|CD#CD+mm7"7!#7#"32 7676'& Vk MҸ Mbb{34>{OOh'==$jj'(==jjd01DD10tssttsstqVc.3276'&'&7632!"'67676'&#"X`t64kk6'BR5GjDIFl'(?@lm%&HM|?Fu\0%p ̥@$OFIqrstt`g g !7!!7!!7g>!i9!V!+T!,!!2767676'&'&'&#"67632#"'&7RNՌ$p=sp<;KJKK21%yyݐbbf!!!!+732767Z!pVP!v5M!?FE&ժHKKV#"!!+732767#7376763c.//$hhc./ϰ$hh((hcUV((h*NUV8Rd-%!7!# '&76!2676;#"&'&# !2767N!}GG^}6gM!?%*^tu;;kWXS*+mn$dz_00R1 "254'#"'&54767673 3%@=%,pXuT, VU1FbI AWW-Q$661^##56'&#"#367632;27676'&'!#'&7P-KLucdUvҹ{ hi|./4*>@F᪫-!"_,DC' .kk3gxw22eby__OO``nqd ,,F&dba21V 3;#"&ʾ&)(?!M-KKe 33###73Z~ʈwD7C67'&#3!I3RT:TdzʌA ;!tH'Cw+1#676;#"3 ## $ihc\qI1jVVPh#7 33###73X8DG#''%'3%#Z# ;$OÙ2eccŊhah<i*%#"'&73327673327673#7#"'&A]klGG,%*uef **w{fe "SabyzIJ|;;{z5N__NM_`)g11>>f!3!+732767]5xM!?FE&+t|KKtV{?] ! '&76 !' 767:EEœH:+[\ Jay=Ҥ||F'L2cB'R] $"327&6'&#! '&76!2!2 ܢ77baܯj1&)(zœ;p['ON4L椤}KKzz-V{ "& 7&6'&##"'&3232nlN??*=ijj65NdLٵ>?)utntsY_wt108``i 32676H+#"#76763m~ kj*+uT8 $op/ϒqrqq/8&i1FRQV )6'&  7667632#"'&'#676;#"'==jj'(==$jj64Mbb{f{PO&t<$hhc.//tssttsst_d0110dXUV((aV*332;#"'&'&+#3276'&+4kj*+vH #L;b~<>'M .wBdƍ[\4?>mqpqY"$=?5II HI/67632!276?#"'&7676?67676&#"''~kl_FEꁀ$*|{j}|(rPQOPxw"&i7vc32+mlpp/EFDD~n>>-``&{1676323276?#"'&7676?67676'&#""VWXZ=< 88BbaZeer%phha>=;:CZ[_`f?(**T@%$!*ML#5-,QK((%$JKVV8 +V!6'&#"3;#"'&7# 76!23@ n| wZdAE#)*/@)-0A3=g)(V\`@oVi !!;+73276?#"'&7#73,>{wN``01PO`>Yz33!7!"37676^!pp# 7O++QRF1i&4^n676;#"!!;#"'&7#73$hgc..{w21/<%Taޑʦav5(%#"'&7# 766'&/V?()&ʾ4NKM/<&*+ ],B'.KK-zt5”DWmS 676'#3C9MchV1ˊoN(61ze99 Vp+7326?3676'&:u|lLbM2óKYk\RI*hzHTN~)20e^'E!!!!!7!7!!s!=#g՚"H`!3!!!7#7!!j!{}!oPJe`ܐ\9/7%%27676'&+7!7!2!"'&'72qsNO!! juZA=K$4wzz&azykKKIJܪ$8*mhU)$y%1K$%2767# '&/&76767637!!#"6s&w&+ekjj !%!kjk1%y$)Uhm*8ܨ$JI L`#"!276?#"&7676;7!7!ujjke$S^fhq&]mkk! 8*mhr!y%12KJVC`'2767# 5476%$7654#!!7! TQSZ#^RYaQ.$Sej!NG6&, 5%b f8d1a w#%!!77!7!67676&#"7>323#!L!xu35_'Xst&3,]h9@umHLIwBC12tt\RI`1(2! '&/&73327676'&#!#!! hwZA=K$4܁&+rsNOʞ!)\Q8+lhU)$yy$)UKKIJ-%Lg`%2!"'&'7327676'&#!73!!fivZA=K$4^``c&KmrsNO!!_8+lhU)$y%12KKIJ&{$!"'&'7327676'&+#7333ZYU!$UMNE!BOJPyF+@>7 66 }ws}#(rAbLrV{#3676327654'&+";-!DZҸ7% S0 *vBz FN1pJ[05W2(E(AVN3#V'V3!!!!#!7!7!7!.x_!/_!ʍ!_/!_,Ԫ6#7 m&'?)7 f&'@)^ lf&G@7f'-u/7V'Mu/HVp'M9O7f'-17V3'M1HVI'MQm&$ uTsf&ZD7Om&, EuH3f'Rm&2 Pu^f'Rwm&8 uuf&xXw3"8  u1'q;w`&8 u:&X ~wZ&8 u@&X ~wZ&8 u:&X ~X{3"$ Tc1'qs;3"$ T"D ~4&q>T&q\5# '&476767632&'&#"3276?#737!7!3C3矞`aku)Zyyyy_Q./kkjccS =}I('ыW+*$#G^12<=lji+XXBV{A4&#"32766?#"'&547676763273#!"'&'732?!7vI/L*+A@yuu/Mvab;;kG^_gqTT) ,!.Y&TV"Y# 7 &'=)7 &'])^ l&G]\l' v*BVf"Jv;x! '&7!#3!32767x,}wPM.4""ww/.RL `Z߀xxv 9dPNOKVS%#367632654'&#"qu$Fa<' XU4 .HW5xPb397 5+I-F7k' u1Hf"QC.Jm& uvT.l' Yv&Dl' vTf"vyl' {vf"vp&$ zT`f&DV&$ ^TeH&D7 p"( z^f&H7 V"( ^^H&H7p", Az.f#7$V", ,^HH'|Rp"2 jz^f#RRV"2 x^^H'R7p"5 zHf&Uz7V"5 g^HH&Uiwp"8 zuf&XwV"8 ^uH&X '6{'VXh'7b'WR:676767654'&#"7%6767654'&#"767632+Ѳt,<[?L! ~^5HnkzB%hepW!Zh<1+AWKy^J1Cjj>uVN,=9_B*8hP|%*cqMmYVۍ}X,O{:676767654'&#"?6767654'&#"767632fh)7R9DvU1E`\qVzji|[gQO[xy8/"ө3H*6VU/cGtD#2/#C0'.UCgO[?XKHsffJ!7k"+C-@,Hk"KC]@,7VM #654'&#"#3676324!7+"/hvvU3})YGb?k~BC^fBp(6%3276'"632!"'#67&7#"76323 7676'& F%" 44В(?I20#*`%Mac|34|OO&v'<>$jk'(>=ki- H:E<$d01D10d^tssttsst&NK" 767654'&32767654'&'72 '&547>7&'&547676!øyzG[pzzF[E3̨km /^\̟L8*f 豥56MM_-AA1&TMdhK&+ "cI`#&tX.4"FGFSJE/F" 767654'& '&547>7&'&5476732767654'ba1D bb1CvAZ?**mP ʙ, P8+T`"D7| "(z^u{"HzER3"2 U^1'q;R3"2 ^&R RO&2 't^&RsR;"2 V^1'q;h1&<qr;V&\q^p%3276'"632!"'#67&73_%"34ђ(>I20$+_%- H:E32x%" 44Б(>I20#*`&W^|hi{ٹ"VuLL-- H:EI3/$+_%>>{- H:EV`n@) : }~   ...919990KSX9Y"K TK T[X@878Y3+73267)%0-vE/l[`GCHZ7w 1? 7676'& %67632#"'&'+7#"32;6'&  76'==$jk'(>=jjPNbb{43{OO'  Mbb|34>|OO&v(==jj('==$jj/tssttsstd0110dd01DD10d^tssttsstV{ 1?6'&  76+#"327;67632#"'& 7676'& '==jj'(==$jjjttNbb|43>|OO'!!Mbb{34{OO(==$kj('>=jj/tssttsstRd01DD10dd0110tssttsstp 3#!#'#7'7 3 !BU=NEIE:}]]2Y'FF8O~",'&76!27&'!2767# '#&# ,VQ6FSo:3~U{$&*@j}|y)x~}ok:!FXh$xYv+!f //_H$$\/ح )'7&7!27&'32767#"'&#"Q:(5jUN,*nPQMPSRW!T]vibCGyy(^N: lOU ^q+$$Vqrg 33#!!#73Z~g!_w?z'7!!##!v7w+!sxe˔5DiUYB9XM4b8{=.#"3#"'&/&'&'&'7327676&/&'&76$32"FZ *)f?((TT@%$!,KL[@~$=&[#1-,QKP%$JKx`!;#"'&/&+?!j!Y({#LlTf@G1Z^Pe`1~$=&[? %Ae3276'&+"7676;2+#5[\4?>E^ZW$RUTUkj*+'uII HI+#qpqq{2676'&'&767632#v?DBaZW$STTUmk+]q2RAF+#qpl&.!2#!#73!27676'&#!!27676'&#!Zjk#??'GiX+TS>=o'D\[BB'`` efp/>78rq88ѐDCBC!3!33#! '&7#73!32767Fxxx 9st9 /BCkl/jܕ$}jiij$7B33#!!!!#7#! #!mfX! !.!ff";"iVVF㪾FJB$+1654'!327#"'#&5473273&#"# G+Ee"{^u5h80h- -'vDfEPZhV! vDMC uJc,'rfY33#+73267#73Wʇ!f5M!?&f!HV63#33#+73267#73~.'b \)ɵF1i_\ (aؤf. !32#"73;#"&7# !2o*or-%PE!M4gE:E^–V{#"&?#"3273; 6& F~*%N|g>|'!9i1Oz$O{VּdaDDadaj*#&'&+!!##73! 327676'&#=/0%~u-;=HH~h11wpkk؍]]OCDBC{&'&#"3###73367632#",hg WW b"Ngf ef<Ĥf21<x3!733!#!73!l œ ˊ Wlv9 V`+7326?!733!33!+;uUV|lLbM1le_L8h==HT33Zc{ .2676'&#"367632#!32767#"'&65oqr#}!RhgSS $EG`_`]!mcbZ`_+f{b:9ml)Lf01a```FE.'~~_{73#7#"'&32 76'& !ڸ!Mbb|a_f>|PNN<>$jkN=>jd01D10jtssttssl{7#367632#"'&'&  7!ڸ!Mca|f|OOqN==jkN=>$i`d0110 tsstjtss& -6'&  7667632#"'&'#7>;#"(==ki('<>$jjNcb{_a43{OO' *ȵm,0/tssttsstRd0110d04{4@   9991@KNLNN LzQ 0?3267>54&#"7>32#"&%BPX6V^L]#PY}{TN)00>9W}..!!ϮuPR#lpW{,%3276#"67&'&76!2&'&#"63 !"7L e 2%v45SPKH"BNJPzyPMw*.#P9K9DhT#3 $*qrfr ^V + 7676'& %3;#"'&?#"'&32.(==$kj('=>jjvi1F>?)Nab|a_f>|PN/tssttsst^ؙ10``֔(d01D107-#7#"'&7632?>;#" 7676'& ¸ Mbb|a_34|OO& *ȵm,0b'<>$jk'(>=kid0110d404tssttsst:{!67632!"&'732767!76'&#"z1uv64k["X_^jy{1LK^,*4cdWWX{"7!6'&#"7>3 #"'&732767hNSSjhil"kk ~46hgB@mn-Zdc4*,ėZZWWR{ 5%676732#"'&7&'&76763 73;#"'&7' RA 6eIT 8lfim"kmlk ~i+@DA'֊>8E#Z`vg'#d4*#)u10`ZO |= {2#"&'7327676'&+7327676'&#"767632x U["EXWdeeKIQP ACKYYm n]_PjkNM_m\["45bQ77,+=J++  OO^@A8|>#"'&'7327676'&+7327676'&#"7>32%3;#"'&7wn"PSQU"@QQ]`_C>tLL =tLL =edq"iiSGyyPMM">KMrqfqrR`" 3 &76767327676'&'~H"|T63B%!&N;*xܱSccS$-EIdccdIE-`$ 3 '&76767327676'&'w 4. XX>> \:[hB%!*E(4bLx>@AA@>xLb-!@2FF2@!-V`332673##"'&./| {ԸtWcauMLaPO{Vf21xx#a#367632#6'&#"#7676;#"UcduLK-/.|ih {*eci/0e22wx\OO__``01LV-367632+7327676'&#"#7676;#"VbduLL-)edi/0./|hi {)edi/0e22wxH``01OO__``015x 7333##3#5 bb XX׸.Ĥ<P` ;#"&7i1F~*`610` 7!#3!73  褤.#3327673#"'#&'&#"#67632Ը &}AB[{ &}AA[ %$RIJ %$RIJOV33##7# 76326#"39 yt=&15%A7M \TK9>V:73;#"'&7li1F>?)l10``TLK%2!"'&'7327676'&+7!#3!3hwZ@=+^_`c&JmrsMM j/Ue!8+lhyy%12KKKJ3Lb'%#"&73327673327673#7#"'&m]kl,Tuee |Twef|ڹ"TabyzJH|:<b`^zb``zh02>>Va(%#"'&7332673327673##"'&]klGG,Tt {*)xff{ԹtSabyzJH|;;z{bybMN`_yYg11>>tVk{667632+7327676676'&#"#6'&#"#367632]klGG,*ȵi0/S)*ufe { **wfe {ڹ"SabyzIJ|;;{zH01VnPNN__NM_``g11>>BV{!+732767367632#6'&#"/*ceF1i0/޹"UdcuLK-/.|ih ``01te22wx\OO__tV{!6'&#"#367632;#"'&7/.|ih {ڹ"UcduLK-i1F>@*OO__`e22wxH10``F` !3!# -ͪ`yl_{ 2#"'&76"!6'&!327665jj56Ӕl^*|7?;,@mL{휝sedu{RstQb`!!!!! '&76!#";9G:55E%**cb%`ݛlklmrC|93276?332767676'&#"#"'&'#"'&7676N. !,NMF&$$$$(MKO.5 *J/,g:96UTg=D3,# `pB?UO++OU0Kg]pxeYGGGGB\V\p`7327673#7#"'&'("#,gh%rٹ"Ngf efNf21 '327673#7#"'&'##,dh$ƹӹ"Nfg eif21+V`7327673;#"&?#"'&'O##,gh%ri1F~*$Mgg efN10f21V{&'&#"#367632s##,gg%ƹ-"Nfg ef f21V{ &'&#"#;#"'&7367632s##,%si>@*޺"Nfg ʿ10``tf21{76;#"3!73I8Ori/1S!P%02V.{3!7376'&+732qSis@20%P`#&'&+#!232676&#4T#rj)44a\\\ FBwnw l^q$%'`PQiVSTT|`!#!3327673327676'&+eT z||ڹ\aBBUG>@wGI86wSiQP`'%$q^667**TS++V{<.#"#"/;#"'&?327676'&/&'&76$32"FZLM **=CEZ^i>@* %\]^aOO*,=>>f?((**T@%$!*ML[[ 10``=5-,QK((%$JKV676;#"+73276Oyq#ibîc./)deF1i/0pR[V((h)``01V$7676;#"3#+732767#73#7*$hhc./u \)deF1i//\ F`NUV((h(``01ؤiVe;#"'&76'&+732i1F??*c@J(10`a(h((VaYUV!#"327673## 76!3676;#"(w |n*'Be*)#ibîd-/3A0Ǜo@`\V()g`!7!6'&+7323#&>{vsAB)v>>`''POAWi!!;#"'&7#73,>{sBA)ȇ>''OO > `"733!33##7#"'&?)3276 bb:bb X!VcbuLM-/.|j^Ĥrq,HKEioaaabdo?ܤdqn뒒kmhnb+"&73?27676'&'7U1F~*g3kk-66hfO612abec0Ys`!##3ç~T`` !###33ȸjj`j 676;#"##uUV|lLbM1ô==HTl`33#aa`8Vq`!!#;#"&?!7!j i1F~*7 Qe`ۓ10%S`!#67!7!7!332!73276# !Pej!t.$  FY3<;4% 6[Ln`!2!"'&'7327676'&+7!7!VjuZA=+^``c&KmqsMO!ej 8*mhyy%12KKKJ#Ln`#, 76676'&+7!7!2#6'7&#"327P'2) NO!ej iv[@=8Q 9tŃ qL;*1JJ$8+lgqUeR8y*K/K327676'&#"76763 #X?lI,MPTRV!SUTUlT$!rLbAr+#}swt.#&'&7676!2&'&#"3YV!$UNME!FKIPyF+@ws}#+rAbLrs3!"'&'7327676'&#PYV!$UNME!FJJPyF+@tws}#+rAbLrLY#676!2&'&#"32767# '&7$UMNE!FKJPyF,MPRSV!STUUjV$@}#+rAAr+#}S-~B+ 7676'&#"67632 %67632"'&RPwvPQxy*}{)*P )(/. '(^6ccccffffԜؘ0.""""./!!!!MF`<|1";#"327676'&' !"'&7>7&'&7676wNO <:tQYIJx)(MKayx55po"l/0..@F-,38XZ88torn[[lA@]ON<h0%#7!#"'&76!25676;#"#&'&#"3256AgO[Quv46>d*ddj//jiQIyyPMM" _`02jMrpdprM`VV:3#33## 76!3#"3276.'ڵ*D]+(#u _4#xG`͋BA0 L3` ## 33~ jL T#F`3!! ʹ!`J^V ,%#"'&32?676;#"# 76'& UMbb|a_f>|PN' )eci/0sN<>$jkN=>jd01D10d2x``01xnjtssttss$327676'&#"76763 3###73X?lI,MPTRV!SUTUlT$!*65rLbAr+#}swԤ.$7&'&7676!2&'&#";3###7*YV!$UNME!FKIPyF+@>F66ws}#+rAbLr7 ), 7676'& %3!!!+7#"'&7632'<>$jk'(>=kivUi  Mbb|a_34|OO1/tssttsst^Lۓd0110M^L15C#7#"'&323!2!"'&'7327676'&+7  7676'& !Nba|`a43>|OO'vUj! juZ@=+^_`c&JmrsMO (==$kj('=>jj3d01D10d^L$8*mhyy%12KKKJbtssttsst? 4; 7676'& %%!332!##67!#7#"3233276#'==$jk'(>=jjT0h t/#)  Mbb|34>|OO&v FX/tssttsst 3<;4d01DD10d^6[lNF.#"#"'&'#"'&7#733!!;7327676'&/&'&767632N!GZML **=BDZ^YaAB)v>>{v=f?((**T@%$!,KL[[!&PO`>NM5-,QK($)$JKVVV&.!67676;#"+73276?#"'&7#73!3!>x#ibîc./)deF1i/0AB)v>9PNvNwp-9C!6!2&'&#"63 #"'67!"'&7#73327676#"&77!3>{UNMF"EKJPyyPMq+.nPTE AB)v>A=S_!r:a03v 'KV NqV7+7327676'&#"#!##737676;#"!;67632)edi/0./|hi {Ӿ$hhc./-"VbduLLH``01OO__/яNUV((hce22wx-!3.#"#"'&'#36$32327676'&/&'&"FZ )+?((TT@%$!,KL!&2-,QK($)$JK*$ 3!!!+XUi u1Lۓ.k 333# #333# #.t11t͉3Ms22sΉ4U=X!#!#!#!#S3k3S3k3UXrXJ"327673##"'&776'&+732./|hi {ѹwVuLL-i1F>?)OO__ybedwx 10`` V,!7#"'&776'&+732327673;#"'&7i"VuLL-i1F>?)^|hi{ h2F?:&edwx 10`` b__y60`Y #6'&#"#367632JsHN^A@EutB5=>JzbwY,-56\g8 !367632#6'&#"#7>;#"5=>JzbJsHN^A@Eun|rB9wY,,55\1SwlWU}Y 3+732673#t||r,B:ttxlX6Vr7O&'&#"#367632;b@@Atzt0@@T  89ksa9 #327673#7#"'&'b@?@uzu/@@T  98kJa9 8!327673;#"'&?#7#"'&'4c?@@tz&B,r)(0?BS  98kJ V6X66x a9 +33276?3327676'&+?8 MLyu3j=))4{,N}K,- $#K|N;[--s?5</.s& 333# #st22tΉ4)+7326?33nG55N]D0X@?,,=>POa"'&6763"3sA?,__s @45 F@ PPOP>=,,?@X>327676'&#"767632#(yB- 2q25364555F7PTnG[@*7K$@ ` XFh_@C#&'&767632.#"3WGh98Sg611,-^3pK+ *y[AmC@_hFX `@$K7*@ 2B% %(vDE27-7'|}f33o|g|f3# #nfgRfd@ 91290K TKT[X@878YK TK T[K T[KT[KT[X@878Y3#'#ffd@ 91<90K TX@878YK TK T[K T[K T[KT[KT[X@878Y#373ٓx^#^+}bq-f3#fqff#Jњfv^%#^+2Tq^#Jњnv-3#fqn;#!!HrerJ'#!reJ##!733>;;j,. 7!##.;;,% 733##7#7,,,,j!7!>j)H@  91<90K TX@878YK TK T[K T[K T[KT[KT[X@878YKTKT[KT[KT[X@878Y332673#"&546rTVUnt HDCIM};D/@:9910KSXY"K TK T[K T[K T[KT[KT[X@878Y@OOPPUU]]K TX@878Y3#d' @   10K TK T[X@878Y@   ]K TK T[KT[KT[KT[X@878Y@I44400044 4 444000444OOKKKKK K O O O KKKKKKO$]K TX878Y#"&546324&#"326џtsst{WABUUBCUsstt@WUBBVVs;A@   91/90@IIIIYYYYiiii ]!33267#"&546bw@?--E%%GghMCe##" LK4{P7@   91<<99990K TK T[X@878Y@  ]]K TK T[K T[KT[X@878Y@!    ]K TX878YKTKT[X@878Y'.'"#>322673#"&- '3}[%@/ &1}\&BZ7IR7GTf@ 1<20K TX@878Y@-   2222BBBB{{]KTKT[X@878Y3#3#׉Vfx%3;#"'&76i+@DA'd10`ZȢ@f '#7'373CIpڑKnڑaa``}Q 7673733276##s /MM >3#tt=/2&'&#"#"'&'732676'&/&'&767632-329V00 Z&x*,XW9<;@;;<=Rb k'g((PP@77 a /$*+MW33 k2-*)*IX01 8Q #'#37QΈRH+#&'&767632.#"3WGh98Sg611,-^3pK+ *y[AmC@_hFX `@$K7*@AX!!7!AGЈX!!7!3A<4X3#!7xxAhhX3#!7f?676&#"pzo e2( w):357GZnH3UC=A   (6%""($49hfbuf\p#oVVD<'4[f#!# ͇fxx)')zH q}(#3?^#77#732po1{73#7"22oq{\f3##ǮfUC+Uv&t73#7#7#`#_&3##3Q#`_jop!7!#4`k732676&'3#"&4P.8  m]0_w-+76 >&Dzs5K"3"'&676 @i G@ sA?,__>=X@?X>=OPPP3!7373ܱ"_#7!##"& #73733#####׈7!JV 7+73276? )edi//``01:Vp %3;#"'&7gi??*10``QESCSj C.SJT3#du#zs;C#T#"VVD T#7!#@&&@J;9wX#"6533273273"Lt&uhf,vie-vGtRRHU9XS6Ua~F9SxTFx!7D!7!7p #"'&'.#"7>323267"VOZg Gb3OU"YS5`D i]F ;73 !;?<6 7=gh!7ihh7!  Ĥ,'IQP^NO'VDUFXY;S`PK[c.T!!jjN66&b 9FX632#6#"#6'"#72Lt&uhf,vie-vGtR  '7'77NeseNes[}`}}`}}`}}`T.7>77>76'&'BRO/RO0PQn +0PQn : '77fCh`fv\}7b^#77#732po1{F|$V II#7!#!:V,2!7!7!7!>>2xx3#3#:JJtx- !#!KX;*>,ff'73327673#"'&'#7&'&#"#67632Vm  &}AA[&Vn  &}AA[&g  $%RJI g $%RJI f#3#3#/&#"#>3232673#"&0XZ"*&"6~$zV">$ &&: ~"|\ 6C 32mn 6.mnf# N Nc( 7!#'73!'3Hff~(͛#7?' d-~~r&'&6767@24 $"@r?@,`]r*,@A++{OPPNB7767676'&r?@,`]r@24 $"{NPPO{++A@,*/D#"B8{k8P7#'&'&#"#67632327673#"'&K*$eH77ba77a:EEœp椤H7%,7.3#3#T\+70718 !!!!!!L!9/!g!gqR28738  %!!7 7!!A!>!X!!8ypXh7h<f /36767654'&'&'&54776?3#r& OQʚs' MRrv 4ݷu 5۷Ws4/TWWs5.TWx=Dy=D;l!67"'&336763#1!֔AOO7aTč7OOL-hg椌gH"%!7676 !7!&'&7! _##'/P/'CD##?,+#>1/<%ȼaL"ʦa>؍72N&" KuhN&- qu\)f&n9O}f&=PtVf&?xsf'FAk&M\)z *76'&3273;#"'&''&'&767FSh#+68yq Yo^D Ap5UW6: oik*%1)0T*Xk[*)V!%#! %&7 76 `+YI23ZM =7,!j?+@'(   04291@o#L,Lz,Q4ܲ]90&'&547632&'&#";#"32767#"'&5476l/#L] \MOGwN^1:tQn;J]YYN"_WWPpUpS\A.>cN .7P5%,3ElD-8%[FvbITR%#677676'&# !7!u@EYaD3' 9l`~$f$\OKOxsPWKL,#%5,*3Y'itV{#6'&#"#367632ָ/.|ih {ڹ"UdcuLKHOO__`e22wxQ$!!3276'&#"2#"'&76+,7rdb#7pXE``IH__HId~uvx` ;#"'&7ЍlYo??)`+.0`bR` 33 ##,[>vҢW`/ZFB? ##'&+7Ù#k`ue<2~V`w=`!367676'&'313|je P4&ޑ`T|p5dwY|rNįtBR&%#677676'&# %$67#7! $@EYaD3' 9U:^3&$$9%!=3KOxsPWKL,#%5,*,X$Rݿ ^{Rp`!#32767#"'&7!##1$7%&'%x!!"c`PH  ABX!V{ 67632#"'&'#66'&  76PB34{OO&t-'==jj'(==$jjfZ#10dtssttsstRs{( '&!2&'&#"32#677676'&]vw55jUNMF"EKJPyyPMMAEYbD3& :#+qrfrqLOxsPWKL,#%5,*aFa "327676'&'##"'&76Ƙgm$(@?lm'#>:}c$N*6jj65nststtȷzn휝`%;#"'&7!7!!lXn@?*g[$ $Xj0`bkK`327676'&'31%"'&7("v}R4P4,@L&`+90vfwZ{s`vV h )"27676'&'2##"'&7673A^ti*'?4bi51NNgj57} FIn$&>9q;ˑRh]p[nmNssg.Ua#&+73;'$gJaL[1F J[1F~0)~yVg`&'&73367673#Xl/~}#F>yOf"|~1N%aw~LB,BTxnc#nq:` 633237663%$at-.VdmT.P\-r`cR@O@* 'j.AkK&Mj^f&G}kOf&M"q:f'YQ~N% %52767676'&'&#"'&76#327676'&}QTwP#txLT+DLbNPLҤUYK6F]KM6!.u"AMp=lW5I pAKu_ըoskKꀰ-V{HVR$ (6'&#"'&67632#"'&32766*SNEd=t:}~^YTTcigkK7xp~GBZkA Jx'np}כ#6''&76%6'&F ~~ j}!G9+u6fS2pRHv H40r{C1]Vrf'YPnN' uY\V'2##"'&76327676'&#"Qgj56NNhj65Q]qaj)(@9qpam&&>8c휙owgsugHgusgq`7!#%$! 67)323766$,$% tbcat u:p TdmT Ϥ*RѧO6[Vg/&767767676'&#"76776327'7 ,Ҕ Ny 9p,]{@Ҕ Ny 9pড় cl|YDT|˩hl="pl |YDT|˩hlfMZX#&'&76!   'NN~;:EDŒH77@77`pҳIHV{ "327676'& #&'&32mlN??lm'&??NNSj65Nkj56stntstttu n}8{Rf$ 32#677676'&# '&76)w;ABPzIDZaD3' :gkEAxe!+wTOxsPWKL,#%5,*eNRa#"32#677676'&#"676!Ly%(MMnBDZaD2' :5/5$HqrqLOxsPWKL,#%5,*>7)V'367632&'&#"!!#"'&'73276 s1/00 &&,xF[<Ax911) +./0WOdd >Qoɏ?s K_ 7"'&7 6'&72V9-$DO6,9-$DO[~,`*l#FR`*l#FR #!3<l&pM]Vk!#76#'#66?&%&zq}'״qRDY[:>O$nh0נ0:IKi XL} \4! ,,x #&'#&' #'^ֹ#ڹI( -ȹXyTD ! ! 12yKN.#AL.#^YF@?84+& "H $;;=/?"+VhPVG%! 767654'&#"#676! 3 %:ޅCQ{-$Kjd *y) ۄ!eM]6?fk9>ضV{%# 767654'&#"#67632327q;Eg'>YsX myYk}QAKu,2RtW+0ຐG5%! &'&#"76763267632'&#" ;!73276in?G$#! r>$"TB.Xr$B<,!|EG!!GH h=" C(FK#C "&E !!2{6%) &'&#"76763267632'&#";!73276x̨&6;62+J96!:IkI:8=3553gC$8$67632! '&54776!2767654'&#"3276nF5b[yV3΅Z]sS#en 5M& 8Ox{-sJV"1rFNh[oһ '$?6qNsst;4sSsst^#7&67632#"'&54776!2767654'&#"3276-`;57pdx`?4jB]O_^UO!dF[%>lo')=ii7xJF61jO\`fһ ''QCfEsstJ@jKsst?V#7!#!#!35 5HH`d`dumU|#7####!3|22GG_pzpp.g+767676'&#"76776327'&767  Mz 9p,^{ ?ғ Mz 9p,^{ ?|YDT|˩hl= pl |YDT|˩hl= pV{%6767632#"'&')! 6'&  76)yPB34{OO&N ! _'==jj'(==$jj%̧fZ#10dXtssttsst^J{FV7M]! 766'&  ! '&76E+\aTJ`Hw>S:EEœ~y`B{!&'&#"!!32?# '&76!2""#^jyq3[MSRO!Rlk~l ej&% c\\c( Y<{!76763 !"/732767!7!6'&#" *)re ~lkdL!EHyq3[MSjh' ؜c\\c 7VV&8 ! !# ##Z- - !+VI` !!###Kٹ`{`V{(6767632#"'&'!!#7#76'&  76X-uPB34{OO&=!e!'==jj'(==$jjfZ#10dȪpptssttsstHV'y3&y,7 k& u7 N& uf#%+732767654'&#!#!7!!!2W5}~L!>GE&8 /|R!!VZ8hzzKK"@3L/O9+FwJ~ES8k' u] & !! 7! '&547)E!H\)kFս2-pӐϏbpg 67%,7N' /uf!-!!7677!32#!4!#3 6$n!^u1xwsS +LGj@5+8/XmO4<)8!!#3!332#4!#3 6|"wzwwsS +j@59dmO4=(j{2#654'&#!#!7!!.Z9PL /|R!!VqwKDRf@3L/O9+F8k' u8k' u2Nm& uW )3!3!#;">++$84)! 6!!2#!jD@51 WNrT +"(@mO4=7%83!!8"!)ժ%!!67!3#!#)a%>j7x_>>_ D+?x4&A7 (33 # ## 3{ʏ9m__~QxM(2#"$'732676&+732676&#"7>#|,oz&(| ԳƆa&yѲ|!ĐBY+wps{M("8 #!3w"+8m& u8 3! # #ZʏaL_y#7677!#!=!^u1x$nԪ/X++707+R28 #!#""++73V&Xh72N33+7326?'aM!?wRAl2&],*jo|$36$765%$547%73#b9I x ' q3A94q")81#91#?F -?H;W )3!33#"_+D3!3#!"'&5473xw_Y:PL +dtMDQv@8V %!3!3!3<O"Oʪ+++Wu)3!3!33#S"OO_++!!7!!2#4)! 6dG!wNrT +jD@5+mO4=(8',84)! 63!2#!jD@5wwNsS +(mO4=9 ! '7! 7!7!6! 76O5FF))%D!)aaӽՎBF&  654'3!  '&547!#H7?aA7=2ʀ0DudE6l ЁLfViHgWh-jҐcq[͟$];N-4kk+wb~HHCB'"N0CT`{D@7!/ '&54?67676$%676    6764'gG& P[z95-U1jH6''?('(hMZw)v ,u8whN\MHsLHMF`$4#!! 7632654&#%!2#!RG%p32#"&'##"'&473227&#"M{.6{bhR!eKSV55ۧSt'ooKSV66&St'bhRb{.5}m6cX^LajN^9^N_h=L^m6c`[i ` )3!33#09ٹUS`33Rm`3#!"'&54733!ڸ\T3 74)`_:g1<*#M` %!3!3!3ڽ"ڹٽ`3i `)3!3!33#G"ٹٽڽS`333R `  )!7!4#!! 76AC8$YG$$)͓7ݐM`&"M`4#!! 76 )3RG%AC9ڹYs6$)`7 { !"'7 67!7!654&#"76&xS4!0>2lǚ"{mHSHVړ\VFT^{ $  6764'%336  '&547##1''?('(W80kG5gI fMHsLHAhO]Ǘm>F`.7>3!##"#676#";eT ڹ\aBBUG>@2wnw i%$q2^66\TS^^k&CZ^'jOV}-#7373!!67632+732767654'&#"#IFSVbduT0w)edF1n*1u /|cjj}}We22wEwI[``07[?3L0O_eMm'vaL{2&#"!! 7# '&547"!2EY0!tO5j{FVi/(DUVHnIT={VH/LH'jV7M` )!76767!4+3 76ACTQfX$YiG%#)oPo~ŷ7ܑM` )!#3!34+3276 @CddڹY"YYiG~Ka$)`77ݐ/>O}##7373!!67632#654'&#"#IFSVbduO0sq /|ei j}}We22wHwHYG?3L0O_bMm&v[Mk&CdV&6i ` !#!3!377fٹU`3J=3276?33276654''3#"'&'#"'&5476673C4}r\\&//2tV^:IFFPђSQHV/&'Zvbb#!ZmihVEX;imw'[UVPAFhUf^^_Fl\q:`Qd!2#!!7!73!4)! 6,NsS + p++q jD@5QmO4=Q(J4#!!276 )!7!3!!H~Ka@C9EHHE<t/>$)͓uB+#3376!2&'&# !!!2767# '&"wRSopZ)Tjk~@!F-dk}|x)w}89$#G_//wƪ//_H$$OT{#2&#"!!327# '&7##33676"/,"Kx!s^"eڸZ?{FVAW^3VH`3ʀ~f#'#3#yEii0$?@wrs+`#'#3#DOOhÿpJWjQ`7!#3!3##'#"w_ii0?@w9d+rrsO^`!#3!3##'#$k_ڸ_}ÿOOpJW2`QjQE##767!#654'&'!nuu|7E哳Ze=HYY~b҆12bqhXfz(`! #654'&'##767]pMd:G(*QRQXFm'6Zt&VhO\K@hHO\KtU'470"%!#654'&'##767!#3!Ze=Huu|7Ehx"woqd2bqhXfz Y~b_49n(O`"%!#654'&'##767!#3!@Md:G(*QRQXFm'6!$_ڸ_]w&VhO\K@hHO\Kt`?VmX_2&'&# '&5476763232767654'&+732767654'&#"767632#"'&#"#373+)VEM*(' _XE՞ї&) CPtHQ-ZAyU9I;& hP|%*|UV!`EW$(f$*$C F" 5 tfV]%2767654'&+732767654'&#"7>32'&'&#"32&'&# '&54767632#373WD?7>tKM3d]@AI6D[[#LG " 8Ao;D$Uxl0yVg`P]n^`{!  '&547!654'& ! 6fC64fC6Q&5 '5{eRa̚eRa)&hJe)&hKe!#37632'&#"ٮp[?;$BI)T=2RC "C{67632'&#"#3ezuL269&%!L]Qç$O37 `Tl#%# #37632'&#"\zRiٮp[?;$BI)Tk =2RC "Cf"&NE/`>-[%32767654'&+"'&'&'#";676762# '&54776!36767623 !#"'&'&ꏠ/@V> .뎢/CV. > .wi=_-> ^wh=> ‘PHn NGo R\:Ӫ S\ҫ ^{*X%32767654'&+"&'&'#";67>2# '&547676!36767623 !#"'&'& -[l$ ',- 04(-Zl$(6- 04 .^J-. 4 .]J-. 4 `t:6eUa  _tE;eG_   m@H颈   m@I袉   J" ,=q:d" J3 I#'##'##'3276?33276654''3#"'&'#"'&54766732E2E2>4}r\\&//2tV^:IFFPђSQHV/&'Zvbb#!3dddd'mihVEX;imw'[UVPAFhUf^^_Fl\q: &#'##'##' 633237663%$2E2E2>at-.VdmT.P\-r`cddddR@O@*^V!!# '&54776!2&'&# 3!#hlFSpo[*Skj9I{ksƒZeh$#G_//hTU^VF{ ! '&547!2&'&#";#&pS5jUNME!FJJPyy( 5MpSqAI:#+qr;4nNq 47'77''''7'77'7w}}d}}}}}}d}}}~z2!"'&'&'&4767676763!67676762388g      )M6323654'&#"6f[F0(v3H|O/*$Md9MC)(u!#3EN~~u!73#7!@N~n~R`+- +# i+ i++++ - #)/'7'7'7%'%73-#%7#733#γb,nqb,nqylJjxI=) )0!け!けZy\yW\zn[wyo\ԤRԤR߬@¬@8Vm%3##!3!332673#"&!?~w"w NLVlw"yV=67L< ..+nU>o$)RRя>7'+#!2'676&+327'7_uzu"kj* ~mrP#u~{Sqrے-,9/~V{*%'7676'& 32'#"'&'#367632lje&(==jj('==Fps_m{OO's-"Nbb{43]stststs].01d d013!3!"<])2$/[3!3!/=Y`:337 3!!!!##x`!)?#!ݡʡ>,=` 3#73!!!!Ma!X9!`a۪ 8f!#!!!2+732767654'&#"!)PZ8;4~~L!>GE&8 -~9ժFwJ~ES{zKI">5L/OHV8`#!!3 +7327676'&__!>8B,5)edn*13 (`GQ``07&.,%3######33333k_>)ۖʊ+ٽwwA99ddG `%3######33333!lT7!reerpīqWWqYrL  U AAu&z9u|&zW%3###3!p_>E"zA1wHm`%3###33ΟT781jٹ^IL#`7'#373! !#>"z[Ad/GM0dM1IQHM`#7'#3?3 #e-4jڹ^K*eH>`8R7#73733#! !# )+ /QwH1H3 ###7373!{H1j} }` #zz !7!! ##e=!{ +u7)t` !7!3 ##8^H1jƚ#W!!#3!33#""ww_>9dAo`%3##!#3!3TT7ddٸYWYL`37 #!#3!!ˋ##ww!+9dON` #!#3!!ϹddڸZWZ!J`3ͪ8f@#!2+732767654'&#!#!#!SZ8;4~~L!>GE&8 -~""rqwJ~ES{zKI">5L/O9+OV`3 +7327676'&#!#!#!8B,5)ecn*14 !`wGS``07&):`\-:L%&54767632327#'#$'&54776!2.# 3276767654'&#"#*ywH-*acTL!MRFLœeFSv{R$Qy9?aP7^dVk.$?5+6'GEFy}cZR{L%6767654'&#"&5476763327#"'# '&54776!2&'&#"3%l), $ ^_=' #/>>eZAJRk7VEUyy(&>q"**.NnT4X5?_tWXX9Z09,4hN\#qrMAhGsVu'z^uJ{&zw %3##!7!!_>!!A+l` %3##!7!!DT7B!1!BLh<V`%#33LXZú)-7Zh 3 3!!#!7[ !ih!fV`#!7!33!1=>;úyeE7ZɎ%3## # 3 3zp_>A{+3`%3### 33qT7!e%vLHJq/%!33#!!7!!_>!!+A+l`%!33#!!7!!DZT79B!1!B9Ld%3##!"'&733!3b_>ˊ_ZV.<9]|xw˪Awr7ٟd`%3##!"'&?33!3̸T7eTK$-)(*h)VL _Vu;;E#"'&73;333###|;YW.=:^|<4L0O9HKS'#+76! !!2767# '&"&?3!6'& U:BJp4kl)}8, !@?9 IbHym00_F$$UL>86||>{$,"'&?3367632!32767# '&6&#"PPQ$ */MChg1SSjihl"kk~vmn-RQF1!&}Zdc4*,WWSs'&BO@ p@>s{&C@ p@7%,m' pu"H'7f32+7327676'&#!#3!ÊZW.<4L!>GF%9./|"zqwrKK"OO9wMV`3 +7327676'&#!#33f:B,5)edn*13!$_ڹ^wGQ``07$)`V!#!767!3#)^ȓ!dn7x!?+8.%5ժVV`%3##!76767!{8{GTQ)Vdž7f%+732767!#3!34~~L!>GE&w##wwh{zKI_9dOV`+732767!#3!3*ȵn+5fdڸZWZ0= `37V!#!#3!33#΋##ww!?9dժVOV`%3##!#3!34{8ddڸZWZV`3d%!"'&733!3##i_ZV.<9]|xw>_wr7ٟd+`%!"'&?33!3##HTK$-)(*h)Vٸ7Tp_Vu;;7V%3### #!!!?~ž#/B7VOV`%3### #!!{8=V'P`H/Oi'!T&qN' uT`&jdT{7 m' u^H&oTQX{TN' #u^X&jJ_N' gu"'jN' Ou&j/7yLn`T81'q;M&q8N' uM&jRN' Tu^&js]{_{7]N' Tun_&jso9N' u &j2N1'q;V&q62NN' uV&j62k' uVf&6DN' um&jdW %3##!!B_>"!)AժhY` %3##!!>T7!L`8N& WuM'jHD 3!!" !"'&5476763!)/ADj[\sT +Nw("S0D#CD+mO4o$)RUJ8!"32767#"'&5476763!3327673#"'&[\-L`oFthnhP +Nw %piJNʄ,N&CD*$U8_m}`61e15mmf6/M8JJOZxx96`6!"32767#"'&5476763!3327673#"'&/LF(5jq8WghR< !X -jhKN?@.zL.*^>,9m4l01aEi)/RUa@3L0OORAsxx%/KC654'&+732767654'&#"767632327673#"'&'&54l;N [Z4FSbcy#yghYrWXW?+%piJNʄ,N& !X8K;& hP|%*|UV!bDY(Z)J;JJOZxx8P'(>j|@654'&+732767654'&#"7>32327673#"'&544>tKM3d]@AH?:>2EORAsxuM[/V2!#654'&+732767654'&#"7676323#T:N [Z4FSbcy#yghYrWXW?+ 3t!X8K;& hP|%*|UV!bCY).V/|0%3##654'&+732767654'&#"7>32tqS?6>tKM3d]@AI6G%327673#"'&547!767 %piJNʄ,Q9)_Ǔ!cn76/M8JJOZxxS~AMq8.%5`%327673#"'&547!76767ە#0ghKN?@.zY<{GTS)`=3EORAsxuM[;xO'`!327673#"'&54?!#3!#0ghKN?@.zY<'dڸZWZ`=3EORAsxuM[`3\*a$i327673#"'&547!7!F %oiJNʄ,Q9!!+6/M8JJOZxxS~AMqL`327673#"'&547!7!t$0ihKN?@.zY<|B!1!=4EORAsxuM[~iRO |==` !#!#3!1~;\`G (`3!!!!!!! ! k; I/5Wk`Ӕ&b{,3>%#"?!6&#"7>32>32#!3267#"&3267%2676&#"[1Nhn"lj6`!$`]!mZC-{ko#Z^#Z55*,ywxx..''``f{bsٴ)n` #% 76)3#6+327#!7#73!2## `9){n90| |Ÿf_ڪrĐ^J{F`32676&#%! )0*)7F89Ǔ` ! )#73!#32676&+7F89a z D*)ڍ<`X` !!!!!!; I/`Ӕ>|1#"&'7327676'&+7327676'&#"767632l/0L] \MOGwNO <:tQYIJ]YYN"_WWP"A@]ON ..@F-,38XZ88%l)L`3#73XٸU--`L U`?327673#"& $8Nh=8){{6̹H=<=MFy,M`]{ 77!'7P7O!W}5xdajkNjM`M`]yR{-1 6& 32$7! 76! n ///n/tm%#>76& #.76! ڬ:I#f# 1x3CtNPƳPNM]*UY + 3267>76&#"'>3 '# 7>7'72< Oy1= Hr2Xw/RAaWx.S@`)gA\*g>}66]C_56`?`X{ '27!6&#"7>32>32#"&'#"7326726&#"hNjl"lj<\56-c-ǔN~''Z44*,nmnmolkp#Ę/{ 6&#"#32&~'5N5/8/ 32673#"''66/8n`!2676&#%!2#!# FZvQ[f !W^VV^>` `!&'&'3;3!"'&7>#"3)4+)#rj)44a\|\\ BwHH87wS66^2q$%PQicQ++ST**``$ &7# $7#W++ };ML%!7!2676&#!7!#cZ$$`$YA%L||BtM7373!7!2676&#!7!#)''''lZ$#`#Y@%xzʤ||Dv.{"#!7!2676&#!7!2676&#!7!#oP"\$$$`$[? Erurw?yz`Y`ZX`]R`732>&+7%7!2 'Ӏ$hnHGP}Bdd>Jm7{3!!I!{/`N`!'ڷ`D`n`9`367673#7&'&3ڸZHm'::6//Uk6::'@*N`1Ms,}},uM$`76767!#!$LR)ٶGt!{v !3#'!#Zń-Xq`!!!!!7!#!.0A;),F"U___DXI.! '327676'&#327676'&#%!2#!;g8:+*g1^34 ('^EED20Q[Rab+&&MO%%X@? ]65dL.- rUp==. 327676'&#%! )=~ji!!KL**vNONN]fe." !!!!!!R-0@;___ !7!!7!7!7;@0-_/__<$7#7!#"'&767632&'&#"326,NFS^\efg((\ON?;KJWgg!!EGCn]/rssr'y5UVVU. 3!3#!#BBM2MWr.O3#Uf 3+73267NN1(TVDE`Tl. 33 ##DNazBm.3!!_., 33## #н`|{9=". 33##Ы|{EE. ##3|׫{)EDE<"327676'&$  '&76>cc?Abc?@`_&&ta`'&[\\[[\\[\vvvvuvS?"327676&327676'&'72#"'&76767&'&76763sKM;;stLLt^R=<4 jCE,=9>>E7@zd+_9666[i66 G''` FG; +27676&#"3>32+3267#"'&5;= FF`FF}Ft3Umj[Y.-_>8>?E7@='&"utzt/zN??:acN31{,')AB,()A_^86Z[([ZA@@AA@@@3;I#"'&?!6'&#"7>3267632+32767#"'&%326?27676'&#"^9SCD  56sADCBjGH#;KJ[wp[YZ_=;<:C|9Y>=@**V`;< #"FaFE34QR2k88a"!CC"!h^j66 GN `T23bX6E7 =M>?:baMfuuc@AA@@AA8Z[[Z68^g'3#7#"'&763227>'&"^Btt0<=N??:bbNd{,')AB,)(BS^8Z[([Z6@AA@@AA>#!32767#"'&7676326'&#" 56sCBACBECDQRooCC**VaCD2j88a WW[ZQRmT3210Y:!7!6'&#"7>32#"'&73267B  66sCABCCCRQooCC**Va2k87aWW[ZRQmT23bX62&'&7>32&'&#";#"32767#"&7676E {053<:21,K11&%Ib]W37 /._;971<673 34$$4OX ^$'U13 `fa<))/~2#"'&'732676'&+7327676'&#"767632D> QO{054;:11-Kb&%Ib]V47 /0_:871<672HG 43 H4O-+]4$'U 12  `33a<))M 16'&#"327#"'&'73276?#"'&763273K,((^]@@,)(]^@_`=540//03rCD .>=N>?8b`N23tm=>>==>>FNO e 45k37XX"XX7_%C3#73tzt0t  33 ##udPE@DtHKY>?Duyu2=CC,)*^]CB*uFEghEEA@@AAApoBWWWXXW~67632#"'&'7327>'&#"4556MNޠ:31--^3pKK,13p3355 XX _?@@? '6'&"#>324*)CCzΘFEoBAA@qWW^27673#"'&7*)CCzΘEFoBAA@qWW #367632#"&$6'&"27Auu/=>M>>baMf,((B@,'(Bb_8Z[[Z6@AA@@AA?3#;#"'&7#737:"BHww*+BUU"PMV-,vTPZ3327673#7#"&cItIN^@BEtyt6<=Jyd{Y,-65\c`9;b!7!27676'&#!7!#Ue9823gpl9* VWg#"FS10gg%dAl88a)#"&73327673327673#7#"'&-8CCRn^IuHIZ??EtHKY>@Etyt4<=LM0/E!"z[+,64\c[+,66Zcb;##c33#c{wB{~  #! !&'3276776#"6t2 )y3τ4}"#"^ؙ83a _{W)3#7&+732$P:{i.t.^<,||GX*,&#" '&76767&76!2327676'&'&9 ~=LghEFi(3ZE.*C,)*^]BC.2O'r(B4?KWXXWr]$,O'(@?AAAjp69T) )"27676'&'2##7"'&7676736N)K;HA)![?Die~,s,~BEgMj-,D)%GK!Q:5}t?3XJOZUUXR=\ ,Ajq@:'#&+73;'&4h@a,4?a,GX]:DFY%CgYd7OudZsdcsd odW)sd*SdT)xdtd&V{(!2.#">32#"&'#32676&#"84aK"IR&L|ο23|&!#'z'&zF,*[cbbc#.`7!#3#3!73#73  B8 8Bत T>V%+73276?#3M")ʴF0j/5.06 #367632#"&$6'&"27tzt/>@:bbNd,((AB,()@_s^8Z[[Z6A@@AA@@>&'&#"3267#"'&7>32-.02qJL,22q2h54l;ML511` @??@_YY EK,3276#"67&'&7>32&'&#"632#"3#0\R@S `  M43/.+1/2qJK3H{3 * &;/Z ` ?@ss@bi&/&'&#"32676'&7#"&767632''7'37 iFFV\[&@kjhg P \@  =67r2#"'&'7327676'&+732676'&#"767632K#$ [\2445)33:_=; +(V]aI`(&K-53@?87/|>@ Z )) kuknn @AwU:8P#P,i/0F#7333#3+73276?Trrjtjno?=r,BP#P x66XU N ,7#"3276#"'&'73276?#"&76763c-]@@((]^@@k__=640.003rCC /=>N|a`>=pp=>>=۠NO e 45k37XXo3327673##"&xJtIN^AAEttA6> rKNB,|ssW?#5$ 1Z3;#"'&7KtC,r()SVX66xZ+73276?#33=?r,B! ttax66XS g3W3!!j_N6>32+73276767676'&#"#6'&#"#3676329Ro-/L=>rB. JZ>?EtIKY>>Euzu2==ML//EBED~zx66XV0=-Z,,56\w[,+56\sa9"#w)#"'&73327673327673##"&C9BDRn./IuIIZ?>EtIKY>@EttA3<>LM^E"!EE~{[+,55\c[+,65[cQ:F +732767367632#6'&#"|r,B|t5=>Jz12JtI N^@@xlXV~a8BDwY,-56\N!6'&#"#367632;#"'&7rN^@@Euzu4=?Jy21LB,r(*Y,-56\sa8BDzVX66x3 33# #b{|b{~> 2#"'&7676"!6'!3276˗FEghDFhfB: $w)^]C/WWWXXWWWW@9\[8E-AA.=&.#7!#3!737&'&7676767676'&m8EgSs^k6FhQqb[8.C)[7+D,*\\FWWG\\FWWE[*,ApoA-9*A@+<.#"#"/;#"'&?32676'&/&'&7>32,f8W/0 Y'v,+WX9= Br(*:<;=Rb h(g'(@78b/$+*MW33 VX66x"j2-***IX`}6676;#"+73276:C@A |r,B]Me30U:JxlXV3#;+7326?#"'&7#737Q"B(Hw?=r,B:*+BUU"PM,ax66X6V -,vTPT!733!33##7#"&?)3276Tn6t6g6t6uu1t6=#{\8?>LRRQRR<=:_"&7#32767#VR8LuM88RPMuLXPZs{>??>{}ZP` 31+"'&73?27676'&'&=ij,r()NtNA ZCA%4+8?>LRR66wpU67YQ8C##3{v{s !!!7!' \^=R^!!#;#"'&?!7!'C,r)(> \^=R VX66x ^^#67#7!7!3632#73276#E` \'nF m ,7!!^R^=jR3"2#"'&'7327676'&+7!7!wCJ:*(mn;==?/=1 %G:@?Rmn~Rmm*MWXMmGYXFovw^wwwv.'$T.`{'D7P"%@J&Eu7"%J"E7"%EJ"E+Vuk"Cv@,^uJf"v7P"'@^&Gu7"'&^"G7"'^"GD7u"'z'Zu"Gz7'" '('G7 Z"( ^"H 7 Z"( ^"H 7 "(L{"H7u "(^u{"H7u f"(c@9z^u="H#z7P")v@O"I?\2"*U<BV"JI7P"+(@H"K7"+zH'K7N"+j>HN"Kj>^u"+zbu"Kz79"+H9"K6u%",uCu/"LC33@7Z", _H" J7k".Cv@,Hk"NCv@,7"..H"N7".H"Nh7"//'O7k#&/*uJ1"YqZ;7"/kd/"OC<33@7' //' O7k"0CvB@,H?f"Pv?7P"0@H?&P7"0H?{'xP77' \1H&rQ7"1vH{'Q7"1H{"QK7|' 1H{'+ QRZ"2 \^"R RX"2 ^"R RZ"2 J^"R R\"2 P^"R 7k"3CvT@,Vf"Sv27P"3@V&S7P"5@H"U7"5{'U73"|Cq2@@n"}q7"5B{"U P"6@&V "6{"V jcvX@,# Y6"f#v"VV FW"6 D"V O"?"XhP"7r@b/"WVXh"7b"WpXh"70Eb"WB33@-h' 7b' Ww"8u`"Xrvu"8:u`"Xp"8)`"XwZ"8  u"X w4"8 u"X uE"9CL@337"Y'&9`&Y)r&: |k'CZ)r&: |m'viZ)4'j$:'jZ)N":>"Z:)":.`"ZP";@"[N";j>"[jzhO"<o?V"\lk"=C@,Xf"]U"=X`"]"=[X`"]H"KNbM"Wj_="ZV"\1T>#DN"A>#$T`{"D'u$Ts{'TD)9"$ T"D i9"$ T`"D i2["$ T"D b!Y"$ T"D bm#T`f#1Z"$ T"D Z"$ Tv"D "$ Tk)"D z6Y"$ T"D i#T#7 &(^{&H7 'u(^{'H7 EcKL@33(^7"H79"( ^"H 7 9"( ^"H 7 ["( ^"H 7 Y"( ^"H 7 m"^f"7#t,H{#%&,/&LR&2^{&RR''u2^{'}RR9"2 I^"R R9"2 M^"R R["2 I^"R RY"2 D^"R Rm"^f"Fkcv @,bcBf"vcFkcC@,bcBf"CFcF#sbcB{#cFEcdL@33bcB7"6cF"bcB"cw&8Uu`&X w'u8u{'}Xr@kcv/@,qwf"vrr@kcCK@,qwf"Crr@"quw{"r}r@Ec4L@33qw7"rr@"qUw#rhr' r|<Vk&\Ch"<V`#\h'r|<V'`\hEcyL@33<V7"\\)a&p9\)a&H9\)f'9\)f'9\)f'9\,f'9\)m&v9\)m&D9a'#a'ixf'|xf&Af'Sf'om'Q1 dm'NxO a&D=O a&9=ODf& =OBf&%=Of&O=Of&R=ka'a'if'|f&k,f'S"hf'o^tVa'?tVa'?tVf'?tVf&p?tVf'?tV:f'?tVm'?tVm'?k{a' xa' iyf'| f& kf'S 31f'o dAm'Q t\m'N xBa'Ax;a' AKf''ALYf'<Aif'QAdf'=Axrm'Axmm'Aka'"a'"if'|"f&"kYf'S"4f'o"pm'Q"m'N"^a&xG^a&nG^f&eG^f&TG^f'G^f'Gka'(#wa'(}ipf'|(vzf&(k0f'S(6qf'o(wkKa&=MkKa&MkKf&'MkKf&!Mkf&`Mkf&WMkm&8Mkum&Ma'-bf&-f'o-6m'N-Lq:a'^Qq:a'TQq:f'YQq:f'^Qq:f'Qq:f'Qq:m'cQq:m'^Q 'a'1N]{a'1isf'|1f&1kMf'S1tf'o1m'Q1BZm'N1\)f&t9\)f4O f&T=O}f5tVf'?tVf6hf'Axsf7^f&{G^fTkKf&0MkOfUq:f'MQq:fV\V)a& H\V)a& H\V)f& H\V)f& H\V)f& H\V,f& H\V)m& H\V)m& HVa' Va'!iVxf'F"Vxf'F#AVf'h$Vf'%Vm'& Vdm'2'LVa' 84LVa' 85LVf' 86LVf' 87LVf' 88LV:f' 89LVm' 8:LVm' 8;kV{a'<Vxa'=iVyf'>Vf'?kVf'#@V1f'TAVAm'dBV\m'CqV:a' YlqV:a' YmqV:f' YnqV:f' YoqV:f' YpqV:f' YqqV:m' YrqV:m' Ys V'a'\t]V{a'uiVsf'vVf'wkVMf'xVf'yVm'PzVZm'{\)H&z9\)&qy9\V)f& H|\V)z& H9\V)f& H4\)7&n9\V)7& Hm' u1'q;.f'RBfV'-aV -a#77#734gP7yF]m' FjLVf' 8LV{' 8?LVf' 86tV7'?LV7' 8lf'Rbxf;f'R nf7V' $f' of&B.]m' Fx2H'$Ax'qAx '.AxI7'.Axm'0A7&m' .u"7 1'q0;"f'R"q~Eff''f&_]m' FkKH&'MkK&q$MkK&Mk8!Va'I!Va'IkK7&'Mkwm&Mhm' vu-h1'q;-Hf'R-rZfwa'*yF'1ljyFlfCqV:f' YqV:`' YQqV:f' YVq:7'OQqV:7' Y5f'R(;Yff'R1DlfV'1-fv0a73#7""͔g\?@ c9910KTX@878Y@ __oo]!!}\y@ o9910!!yy@ o9910!!yy@ o9910!!yy@ o9910!!y"__J&BBB T@:bF910KSX9Y"@  **99IIYY ]#73#၏?V@:bF10KSX9Y"]@%%66FFVV ]3#!ゐլ@4@:bH10KSX9Y"73##ၐ@RK#7J"b$լ@ + @1     :b F   991<20KSX99Y"@1     *** * ::: : III I YYY Y ]#73#73#၏w#၏??3 @.     : bF    91<20KSX99Y" ]@1    %%% % 666 6 FFF F UUU U ]3#%3##႐#၏լ@@% ]@.     : bH    91<20KSX99Y"73#%3##ၐ#၏@@K #7!#7"f"m"f"խ??V; Y@.:L F   99991<20KSXY"3!!#!7!5Poٰp\];@I       :LL  F   .9999912<220KSXY"%!#!7!!7!3!!!jRRnkoRRpjn\\3!  . 104632#"&3~|}}||}3q373#1373#%3#11 v@:    :H     999991/<<220KSXY"73#%3#%3#111ki3#1i  #/;GKd@83W-WR'W9WBRI<QHVLHE0J*6 ?  $ !0 ? E* ! L9912<<2220"&54324&#"326"&54324&#"3264&#"326"&5432#s织HMMo~PKkn躈HNMp~QKk\LMoQKk纈. kjí]d ij­\dkjí]dò   F #/;GS_c"&54324&#"326"&54324&#"326"&54324&#"3264&#"326"&5432# 漆HLNn~PJl͉织HMMo~PKkn躈HNMp~QKk\LMoQKk纈. kjí]dò kjí]d ij­\dkjí]dò   `3`u`'+,+`'+X&++,`#3W`u`'.,.`@'.,'.X. #'#R#@ l91907%%}#R#@ l9190?7'd# ^R"#s#Y#YA'^O$#7>323#7>76'&!"an%igbki81  2T6CF 6 #C98ŸLVV/5<4BR-5^1Y7| B_ $7#"$'5O:nvv~hhgi~wuI3 # #bbc$$v=# {# { }gECT@`5xR\">  "@  ~&""f&"J'^"B%3#7##7!!7!3#F/$2 fffC4fn;###!WuE"=2΋KՌSkKW! 3+"&54767w|WU|!}|VT! #;#zw|UW|PTV|}=k {L# %#73#73gg/R?'n&98=#  B##%H1a // + 01&$#"56$32>;ighh~vvuwH #'%!7!'73%!!ED[*aʇDD*[aɇ)`rrbqr2/ 737373&&&&@''`H'+X'+&++,t 73!737373t&&X&&Z''-''p < 7373737373''z''-''''E''p  i^3#3#11'j5 3#%3#3#3#22~11is %73737373#!7!3!D''-''''E''3f  feyPA> 3#3#3#n1ӓ1ӓ1>lLw 3#3#3#3#11Ӫ21F "27676/2#"&7>KCC""#!CC""#u))ա))VVVVVVV%C3#3#tztttgT @*A  A  A :  V     99991<290KSXY"K TK T[K T[K T[KT[KT[KT[X@878Y@)+/--/ / 6Fy]KTKT[KT[KT[X878Y !33##7!7Zw7Rj%%`bam !!67632#"&'732>&#"y(OOoo?DFEgf)'110m45[Z4554Z[54bg KL1LMONuv '!#!i 30/ *:"327>'%&'&7> #"'&76767327676'&#">=Y]\?=-Q$&GF79VV-*bbII@AS (&UQ97 ((SS76*,+KLV,++]12Hdt::dJ01:7PyAAAAyN98?&%%$A?&%%$C.732767#"&767632#"'&2676'&#"C-000SQ(,A>EfgBB)'110Xz))XU?>*)g KK/MNoouv rh\Z4554Z\44k !!#!5!Q_i_k_8_83!!'3_a!!!!''^_f #&'&6767m2!;eE0HFy~3#676'&eE1FHyemBC2~~~6#6&#"#3>32ItI=N^Etzt5|IzcwYYk\sa88}TX~dFC{~dTt~dqTu~dCZ~d]C[~dT\~dC]~dT^~dwT_~d`d8ad bdfifcdifdd/d>d=d8Qsd:de##"32.#"3267!!!!!!YciaeC>bVbZfAN:/667756GFDFG kV9+5;73&'3267#"'#7&'#7&'&476$;73&'*'3L""%37 }n+kn%"'1*9Y ohn !cvT79:/1(1 r9(YY34@W} XI FRlzd V2%6767# 476$32.#"3>32.#"RNun+lophouZ%XrU79`M<_0;!x ,Y348XGGa^lzkVeX]ɨAA!!!!3###7X!qVP!;33=Hϔ1#!!73#737#737$32.#"!!!MG!3!G 4FE#=@)~m.(*MBE,#6'&#"#3676323632#6&#"#:&*wef {ڹ"RcayzI/Īfx+ Tuef {8xGM_a`f21>&>E3\__N"&)''#!333#3#!###737#73377q'(~$hkkkhkk~'(4&{{&&{{{7 ?X32654&#!##!233!632.#"#"'&'#"&5467);732654/.54l}q"mu#t>=p ~[T#IV;{Yb'+wwMU+eZ?/ϰit^վ>/J((cUc53pa 7!`". @:M46tY`;%y^:<E326&##.+#! 32676&/.76$32.#"#"'&g3{u-xxz"*=_%8X[^aV={fF"FZ S<Z]+/b؍$~3YQKP%$((TT@I!*X8"&)-1'#73'3!73!733#3#####7 !7 3'!!7]: V VW9]4zq,v2$&4$&4}L4uuguuguuuu %2 #6&#!#)"33!3/CVP7hñe DUO7hH9V*$oN^"k+@> ZetZ)% # )VQ,,%$#   &$,9999999991<2220@o o ooooooo o! ].#"!!!!3267#"#73>7#7332!S`G5 7w mf'^a 7 8a@gbe^{2f7{V`34${7g1{G73!!!###5|{ kˑrZ{ur)rXh!7!!77#'?'d! Ky_%~aMnjMw]MkfM`9 l3l'67>32#"'&'"32676767654'&'&67'>7632#"'.'&/#"'&547>32 32676767654'&'&&#"32.@RAaJp CE\gW78*YWE  >$C  Y0$(+|JIB73Z2vGOPeK>,1Y8 _\u?2iI1"#H/45lO<4-  +fm!/& -9)ЗiRm:37N/6wdg7? 2j7#=6$ 629&% (2M !:5S}$@{mb3JMq~Es/4 -& "TA3E]|@8nRkc>;%#aC" 1A'632327&54767632#72767654'#"'&#"%67654'&#"xp{1C"0D "aktO- ,w& iURmq6$53ZY" 24."`NkB04X``7a0<㫃%&†qJ< Na~hFl*!#??0W!}7= )0!3276%!6=7#73!23#3#!###7%!&'&#!!\%*ut8kQu[[]&]u˶kX?qX#Y%+ YYZ _HyZ.+ZvQZ%:B[ x&1#7&'&54776?3&'&'6767#7!'GiSGЩhZiQ*MaYkNCK@Nx "|sovid;/:nnͦ$F_0,?'S*% ldYl~7!3!!3##!##7373!/3F0P0PEqk+R{{{{{AN66767!7!67676&#"7>323!!!3267# &767#7NX4D_~'yi&%yES<r(j*J,{ +kv67&&UB{\* {;^~FE/0K?{!,&'&#2767#&'&776?3)GLKff]]o)gc_\4d5]=?,e+\RV_P0- W6i----iH$"u9Bt"#BuflC 3! ~d$!7!'3#Gf~d=z!#'73!?f~~͛3z7!'3#73f~~d͛# +/O#74#"&546;7>54&#"7>32#"32673#.#"3267#"&5467>32Oa fw׫]Y@u"\ImE?e^&Pg7=m%=Ddh5yq$JE`_Cj=zA9Pn :?!6#DpQU;>d:"+'>[jb 8[?B]'%# '&76!2&'&#"3276%x~}FFSopZL[|oi(%??{uH$$gh$#GvA&44-44&[!!g&F Au>Rr,+,/-/ܸܸ,(и(/A&6FVfv ]A] и ии# /!"+!0153&'&'6767!!5&'&76I3cc3I86QLNN7887NNMR48_ki:rq;zn #++$ * rn.d#5D.#"3267#"&5467>32%3#%"&5467>3232654&#"S&Pg7=l%>Ddh5zq%JF``Bj>y<1N{<1LST}VQFn-"%:!*'?[jb!8Z@AKä^ChffDielmcfaBF5.#=.#"3267#"&5467>32%3#332673#76#"&546S&Pg7=l%>Ddh5zq%JF``Cj>yfg@=c_ bz:!*'>Zkb!8[?AJ $399y:UsET"r)83!3%!!!!!!S{{nnq  dx+%HKH#67632#654'&#"##7373!!VbduL/ /|ih {@e22wKwGW\?3L0O__}}jF!2?632327654'&54?#"'&#"632327#"&#"jou6!wfG>PPPP5ʷ05^nmw~|}}ȋo֏zZ'PVaK~podykb[OP68/1::b:&3273#"'#67&5477632654#0)W:KІ``@>І`4R4Q{k@4k "-! ! ! ! '32654&#%!2+# JR12)uyӲckkc?L00ey wXQPXdn;C0<67632#"'67327654'&#"#"'&57&547276545[ۄFIyeL )qz]E& JEYq:?.蔁0.A ƂMkeLPק<+(h|H=y|n=B {u.F/4_N8 !33!27&#!!2#67676'&d.>{n"kl)*Ww@5nK$q jmnmm)VV)t&/%#'# '&76! % 7& 676'&4œEE;:E3-cubv)';HJ"&>&:(^^&<w/8؍$~h\ nj%TX$ /!/ и/ ܸи!ܸA]A)9IYiy ] и /9 ///+ +0132654&#+#!273 # #s sNCI/ϒ_6۬kk('4.#"#"&'532654&/.54632733###UW'AG/E8pi4sG[d/EK7?8pc|3iиY"*/( VAO[`*,2,* M=H\T(lB`!!#!!!!!!!3!![pto9*EƆ` `fffe'F >@!   F 4 4 54591<<2<<903#######5Jq7rqr/B^^ %#!!!7!J4̤O4d qddd 1Cb7! 76?!!! 6'?##'/P/'##?#>21/<%Ta#Laָv5(7.m}Y-)% 7673 $54$32!"53!25&'&#"C]JjMo_zggJF__DM3TT<`xGZAEIpP3RQ4O7 )7!!7!3!V!PɪhJ) 4&#"322#"&54WOmVPm˜ݢt}t{أأg6 4'+5654/&54?'&547 '&5474/c2>Bd=VE/b5c2ltc2c2uc1LS2?Bdjl,>8?]/c6gUc1LS2tc1LS2c1LS2) `  !!!!#3#'!# !33##ADh)Ejjև2j`C5DT,y|`@D%7"'&'&767#32#"&'&767#!#"#6763!#327673#  fl,_{<:A9| ^=Z&d DF`7%Z4@'5 AY m7FETfd*LK ,s|OO'vN 2wx87tKsO=  =d01 PD10d^dTd6Jthi[{ (232767# '&5477632!7!654'&#" N&#G_yZ\klmk}Z5fF 9NJC0<7h:J(u*oDMcFPZd82vRsO 73#3#!!džP.Nd`V#676#732767!3#5ʆ#5H2K1i0/N)de".еT0Hd01``v&0 #673>32#"&'732676&7>76&#"iLj&vrz*$ SN$NDi 'Zkt_V@Yr~YW׀c?}<$$/1oX3gQX?@}"{'x5udJ}"t'x5udj"{'x5[dJj"t'x5[d!j"u'x5[dTj"Z'x5[d"{'x5\d"['x5\d"{'x5^d!"u'x5^d"['x5^d"]'x5^d"{x57%,7&,,7M&,',,(7&,99*&9,&9',, R&9',',,-7|&,;;@&;,&;',,7/V&7'70H/LH&LLpH&L'LpLH&LY`Ys&YLD&Y'LDL S&Y'LD'LL$H&L[`[&[L[&['L[LH/O^J{F^GH?{Pb   ) !3 !## !PKK"PPKK5V:;T;:5~ji.,w7#3 !#3 #32676&#! )E#5V:;#H)(:hNzPKK"PaY.,职~b (1C3 !#73 $76&!#32# ) !#"&7>;7# !3# !35;:#H()HhNz*KKNN$KKR2NzNH)(H#:;U5/b!ji~߁ó.,H{d?8   2@ @@ 00 ]1@  ` 990@  ` <<@ `<<KSX <<` `Y5!!dx=xUZxx @  ` 991  2@ OO ?? ]0@  ` <<@ `<<KSX <<` `Y3'#'-Zxxvx<xuP8   2@ OO __ ]1@ ` 990@  ` <<@ `<<KSX <<` `Y'7!5!'7Pwx=xZwxx @ ` 991  2@ @@ PP ]0@  ` <<@ `<<KSX <<` `Y#737Zvxxx76767632&'&'&#"#"'&/#7!#/)85,0F"<;NJX[GR7<"#!2)85,/$#?2WG[XJN;?,!F0O<:" %7xxUZxaxxaxuP8 '7!' 7!'7Pwxx>xaxUwxx>>xxwd?8 !5!3#xwx-xZxY %'3'!!5xZxZxvx檪uP8 #3!'7'7xwx-\xwZwx !5!!7#7\xxZxx+xvx7!!5!7'3'xxxxxZxxvxxvxd>%52#!5! 767>54&'&'&>42/+-+-':1 Hxwxܪ-)o=  xwZwx(.46<=69)-d>>3276767654'&'&'&"5476767632+#5!5 6 +/24>A1:'-+/24>xwx  =69)-(.46=<69)-xZxvP>54'&'&'&"3)'7'7!#5#"'&'&'&5476767632# 6 +lxwx>42/+-':1A>42/+ׂ  xwZwx-)96<=64.(-)96=dP8X#532267676767632267676;'7'7#""'&'&'&'&'&""'&'&'& xwx 0$#$   "%'-0$' !  ' '- xwx  ('Z&("  "(&Z'( -xZx$ -#%"&* 'xwZwx ""&*  *&"" dPF%'!5!!'7'7!pxwxpdxwx^:5xZxo:xwZwx* %'7 !^ b9YXxbZ  #!5 xwxoxZx[ !'7'7!#xwxxwZwxZ  !5!3 ixwxDxZx[ 3!'7'7xwxDxwZwx 7#7!5xwZwx=xwxd? !5!3?=xwx-xZx,-eX&7#754767676 #4&'&'&"9xxZvx.-\ZnllnZ\-.BB54'&/#7!!#"'&'&'&54767D !BB54'&x\-..0YXplgtTY0../Z#,@#B"!BB@RNJV]xwx]TQ>]xwx]xLii `iiT4]xZx]4]xwZwx]JiiiiuP8!7'!7!5!7!'7'7!'7!5giiyYuI0]xwx]uIiixK]xwZwx]Kxd?8!!5!!]xwx]7Qix]xZx]xi#'3'#'x\xZx^xhP8^xvx^huP87'!5!'7'7!5$iiQ7]xwx]iix]xwZwx]x737#73jhx^xvZxx\x%hh^xvx^8dP8!7'!!5!'7'iili\]xwx]]xwxiii]xZx]]xwZwx7''3'7#7iii]xZx]]xwZwxliii{]xwx]\]xwx  #7!##PU?,UvU,?UP5#'#5!#5'U,?UvU?ԄU4 753!5373U?ԃUPqPU?U 433!'3ɕPU?UqPU?,Ud?8!!!!5!!c$R&xwxxxxZxxuP8!5!'!5!7'!5!Q$܊xwx&RFxxxwZwxxd?8#''''#53777?(FncxwxFn-FnxZxFnuP8577773'7'7#'''unFxwxcnF-nFxwZwxnF3'!!!!#!5!5!5!'-Zx((ت&&xvxTrx#7!5!5!5!3!!!!7Zxx((&&xxrTxd?8 5!!5!35!dxqxUZxxa 3'#'3#3#-ZxxbvxrxVuP8  '7!5!'7%!#'#5PwxqxUwxxw( 737533-vxxvxrxv4k?9 !#3?xvxתx~\xuI9 !'73#'7!uxvxxvvx7?~ 5!! !!  d }*^V 3! !!d}*p  d HP~ !! !!    ^V #!# !!!d e n ^V !! !3 3!!!E*dr*r$| \d^V )3! !3#!5#3 3 ȃ\Pdx @t %#!5#3'!3!3! !33'ȡdxd:tZdd\nt^V%#!3!3! !3!5#3ĹtIt\Px^V%3 3!!! !!3 37r*kd d| ^V %#!5#3 3!3!! !!33 37ȃ:͊` \h u}~ 7!! !5#35! u\Pdx f:bȃ  zM!#7!!#Mc"?,^xc?x^zM35!3!5!73zpc?Jx^cr+a?^xJ^V 3 3# '! !! !  e   dCuP8)5A '7!"'&'&'&'#5367676762!'7$"!&'&'!27676Pwx 21@=:C.2  21@=:C.2 _x_R#)l$h$#R#$Uwx@21.2@@21.2@xw#w;',utP'7!5!'7!5!'7!5!'7Pwx===xUZwxתתxwZd?D5!3!!#!dx3xUZxmmxuPD '7!#!5!3!'7Pwxͪ3xUwxmmxwdPD3!'7'7!#!5xwxwwxwxmxwZwxmxZxd?D5!333!!###!dx⪪YxUZxmmmmxuPD '7!###!5!333!'7PwxYxUwxmmmmxwdPD333!'7'7!###!5d xwxdxwxmmxwZwxmmxZx7?@  !JBJAu}@ 7'!5! PJBł}BB7}@7'! ! 6BB A}BBh %!3!3۠ՈR+n #&'&#"327673  B!OO!B ocI7͙7Ich-)6@'! '!* $$*9991990>54&#"#"&54632#"&54324&#"32IH7$$0e՘ݢe WOmVPmmWKt,>bFأ[t}t{ !!!!!!P9ժFa53!#7#53#5!!5!73!!7!#h:@uJ5 c+^^`u](673#"'&'#7&'&$32 '&#" 32$767&'&YjiEd80~i?/c`RQQ$g'-"SRR:;nSz_'BTc_ N@DROg`@91/90 !3!^DC?`%! !3f<?I!!"$54$3!!!W?JGcGK@ sJxNL``ȟMOx]I&/!!!!3!!"''&'&54$;7#ؖI$$$GA?d`,,c?J;K@ 7ʟ 7c``JxN MOx]g% $54$)!!3!+*(FiNv%FrO:0QI&'&'&'!5!2#!5!676767!5?JGcGK@ 'JxNLȟMOx]I&/'7!5!!5!&#!5!2+&'&'&'3676767 I^Q$$GA?d`,,#?J;K@ 7ʟ 7c;JxN HMOx]g )5%2767!5&'&!5(*FiNv%FtFgP:1R, //01!!,wq@77120!#!# }wq!#!# wJ}w; [@    91990@.UPQVPb`g`e`tppupx V pp]]!! !!5 7AJI3!-`10!!ת !#!5!3!!5!--+}ת W+и и и / + +и 01!!#!5!3#-Ө-5m_@:QV10KSXY"]@) %86EYViexuu]3#/<% //01 #4%m%73% %#'TUUTUTTUDGrHFH103#F=} *@    91903##'%\sB}}`s-Pb;=(3#"&'532654&+532654&#"5>32%3##'%\e9}F4wCmxolV^^ad_(fQI7ZsB}@mR|yOFJLl?<:=svcE`+`s-Pb;=  !33##5!5%3##'%P5bsB}F]my`s-Pb; %.#"326"&'#"&54632>3"31UfvYRIOF^_HDa+J1CXXjewߦ~XZ /<@- !$'!!0 $*099991999032654&#".#"326#"&54632>32#"&1TevYR1UfvYRF^_HDa^/XZie7XXjeߦ~᧯wI%!3!~,I%!3!G~,IA//+к99к901%&'&'3!!#4'!&'7`'JAW`LqR]+X* Pʋs^(Rs57756u5 +  // 9 9 901 7&'7%%'6 676r{EG%y44RW!L!$Ҿ &!L {JP+3#+fJ+ 7+и//9 90137#'PMVo)gnJ+3#3#@+fJ+{//и/ܸи ܸܸ и и// // 9 9 9 9013737##'[P]ME+qd @oxpAn!3# ih^T3 3##"T^32#4&#"#P(*7332653#"RP7*/%&@  & 9:9&1026732#"&'.#" #"&546327j Pd@7*8  kOeD=!0 l9TA6?&#Hn!bSA8?S/'%/D'J'%tL-6?676&'&'&'&'77&'&5476767654'&'SOJMG79GcBnnVsSOJMG79G]InoSu=,EG%,=,HK%GCD4K|oUFCD41IosV/HgjG$4.JhgH$tLMQZc676&'&!676&'&'&'&'77!'&'&'77&'&54767!!67654'&SOJMG79G~SOJMG79GcBnnVsSOJMG79GSOJMG79G]InoSu~=,HK% =,EG%GCD47GCD4K|oUFCD4$åFCD40IosV!.JhgH$+/HgjG$tLmqu~676&'&!676&'&!676&'&'&'&'77!'&'&'77!'&'&'77&'&54767!)!67654'&SOJMG79G~SOJMG79G~SOJMG79GcBnnVsSOJMG79GSOJMG79GSOJMG79G]InoSu,~=,HK%2=,EG%GCD47GCD47GCD4K|oUFCD4$åFCD4$åFCD40IosV!.JhgH$+/HgjG$tL.F54'&'&'&''&'&'77#47676767676&'&7#'7"'&1,SOJMG79G+3$('f55C$'SOJMG79GE35^H6H802&&gFCD4$'a8LCD55_FCD4 25DCL]HHtLD'&'>7'7'&'&'77&'&54767676&'&7=,HK%{C$,=Q HVVsSOJMG79G]InoSuSOJMG79GcBc HHJ.JhgH$M; +eHWZFCD41IosV32326ian ^Xbian ^V2NE;=LTNE;=K23276767632.#"#"&'gV^ naibX^ nai2UK=;ENTL=;ENl&#"5>323267#"''cDXbia]yeEVgia`yS LTNE+~F KUNE,F #"/&'&#"5>32326!!ian^Xbian ^VeoNE;=LTNE;=K`#"/&'&#"5>32326!!ian^Xbian^VeOE;=LSNE; =Kka$%767#"'!!'7!5!7&#"5>32^ iaBP﹉lZXbian$}o"DX"OEd8LSNE;I"#"/&'&#"5>32326!!!!ian^Xbian^VeOE;=LSNE;?Kk˪.#"/&'&#"5>32326#5!7!5!7!!!!'ian^Xbian^VLoKɦoOE;=LSNE;?KL˪s˪sC33267#"'!!!!'7#5!7!5!7/&'&#"5>327b Vgia'+\+zlh>Tm?u ^Xbian "KUOE˪Nt˪=LSNE; N;?@.9*-" *`19`"` `<-<<219999990#"'&'&'&#"5>32326#"'&'&'&#"5>32326ian ^Xbian ^Vgian ^Xbian ^VoNE;=LTNE;=KڲOE;=LSNE;=K43267#"'3267#"/'&#"5>327&#"5>29+Vgia@LJZVgia}9+Xbia@MHZXbi a KUOE8KUNE; @^ LTNE8LSNE;f@59#"/&'&#"5>32326#"/&'&#"5>32326!!ian^Xbian^Vgiaq^Xbian3VeLOE;=LSNE;?KҲOE;=LSNE;?Ky5P#"/&'&#"5>32326#"/&'&#"5>32326#"/&'&#"5>32326ian^Xbian^Vgian^Xbian^Vgiaq^Xbian3VײOE;=LSNE;?KҲOE;=LSNE;?KҲOE;=LSNE;?K"32?632.#"#"&'!5!5gV^naibX^naiUK?;ENSL=;EOȪ+  %5 % $%5$[g&Y%ZhӦ69%676767!!"'&'&'!5!!5!676762!!&'&'&[C-87VYYW6 8.CC.8d 6WYYV7 e8-,CE[<0[2332[39\DD+N+DD\93[2332[0<[EC,` !5!676762!!&'&'&!![C.8d 6WYYV7 e8-;++DD\93[2332[0<[EC,`& |& '||'|.& |'|*& |62' V'||63'|'| ` 3654'!!5!&547!5!!4434w~0IG00GG2?8>;_8`  "264&'2#"&546!!!!^HdddeH;k'**z{bFE``bq+((d:svv`K  &!56!!!![yKW`  3# !!!!6c'@` 33#!!!!'c@` !!'!!!!+]^*^]䰰` !3!!!!![Np!N NfQ`(/?GKO#"3###535463!3267#"&546324&#"'53#5#"&4632264&"!!!!}?$mmC???DJB&H#$J'`qk[Q_C<17CBB@,I\\I,@p`ctiF6A?9i=$#tu#gSSSP`"&*>32#4&#"#4&#"#3>32!!!!x!]?U\Z79EPZ7:DPZZV:;Su=:xoHOM]QHPL^P%U20=˨`$(,3#7#546?>54&#"5>32!!!! eeb_--B6'Z0/`4\o$-,jaN2A+,/-7#!^aO&E++ '>@" `  `  <291<2<<990!!!!!'7!5!7!}/H{};fըfӪL !!!!!!ת4!5!7!!!!!!'7!5!7!5!DQ"rn遙RoLT˪˪T˪  !!!!!!!!K T@.````:m`  <2291/90KSXY" 5 !!@po V@/````:m`  <<291/90KSXY"55 !5AǪV 3!! 5 !!@poV !!555 !5BkǪ!5!7!5!7!!!!' 5'`ȉ)P"_=6@ss1stFpo!5!7!5!7!!!!'55'`ȉ)P"_=6ss1stF. 5 5:6:6pr pr . 55556:86:'!67&'&54767&'676'&'{)#Y4JJ4Y#))#Y4JJ4Y#)AAAAGF㞢GGGG➣FG2;;;<<;2;5$?$%5%67$'W eĔd?NĔ])]o& bR)`q% Rd%'%5% >zmzF<˶@6 o@hGp%5'75%7-孈m%˶C@ʴ@hGp/V !5!%5%%%!!'/xvH-rf5LOlUrC@=Vlь=/V%'!5!75%7%5!!' GWb[mmNL>ߪwe=ت=$%#"'&'&'&#"5>32326 5jbn ^Xbh`n ^Vg@ND:3232655jbn ^Xbh`n ^VeNF<>LTNF<>L>)P14%&#"5>32%5%%%3267#"'&'&/' k Xbh`'+kuE%sk ^Vhjbn "Pv1-LTND9ATj͊LTNF<= &TN#wf=J;N} 55 58@'poN} 5 55@'pom`!-%5%%%'5%%5 MM`ZDOA@FZDt@m*_TW&o}䎲w&-r~bUm`!7/%5%%'%5%75%Jvad",,V`bL"_D2,/*/&O{¸[&}P %5$r osaa^~||P 55%$so a||^a)W!%5%5$gV$}]]x|)W3%55%$Vg}$BW|]]RW(%#"'&'&'&#"5>32326%5$ian ^Xbian ^Vg$}NE;=LTNE;=K$]]x|RW(%#"'&'&'&#"5>32326%5$ian ^Xbian ^Ve$}NE;=LTNE;=K$]]x|&%5$%67%'Et֋$k}uU)?eKtuu" K 9''567$'567&'%=⃹t֋~}uRU)?Kuu,ަK9'_%!"'&54763!!"3!ʊ@^`@ƍ^`_75!27654&#!5!2#@`^@Ȋʣ`^ȋ; #";3!!!!#"54763^`0rrndflppꊊ^`&pphƍ3 32654'&+ #!5!!5!32#^`0rrpp9^`phƍ7!!!"'&54763!!"3!Ɋ@_`@,ƍ^`7!!5!27654&#!5!2#@`_@Ȋɖ,`^ȋ '!";!!!!'7!5!7&'&54763!7!!ʉ_`'}E=aLT>scL0R^`5ƍ7 '327654'&/!5!7+!!'7!5!7!5!^`__BV 5cTpX?bLm>U`^`C 7 Xȋ5j )5!7!!'!"'&54763!!"3!.Bqx-qxDɊ@_`@Z54&'&'$  &'&'&547676!!#!5!]\LMLLML\]]\LMLLML\bc1111cbbc1111cbdd''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcbee$7!!"2767>54&'&'$  &'&'&547676r$]\LMLLML\]]\LMLLML\bc1111cbbc1111cbתa''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcb$3?"2767>54&'&'$  &'&'&547676''7'77]\LMLLML\]]\LMLLML\bc1111cbbc1111cbxyx''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcbxyx$7 "2767>54&'&'$  &'&'&547676pxg]\LMLLML\]]\LMLLML\bc1111cbbc1111cbpx''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcb$37"2767>54&'&'$  &'&'&5476763#]\LMLLML\]]\LMLLML\bc1111cbbc1111cb''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcbA$3?N"2767>54&'&'$  &'&'&547676"32654&'2#"&546]\LMLLML\]]\LMLLML\bc1111cbbc1111cbxPnnPPnoO@v+..''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcboPOmmOOp1.-rB$+E %#'-73%"2767>54&'&'$  &'&'&547676C4f4C4/f/]\LMLLML\]]\LMLLML\bc1111cbbc1111cb1XSXYS''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcb$!;!!!!"2767>54&'&'$  &'&'&547676]\LMLLML\]]\LMLLML\bc1111cbbc1111cbj''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcb$37"2767>54&'&'$  &'&'&547676!!]\LMLLML\]]\LMLLML\bc1111cbbc1111cb8''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcb$?3 ް 222   ް2/3ް222   ް201!%!!!!#!5!QX>ddYee$ T ? 3ް2ް2 / 3ް2 01!!!%!!rPX>ת\$ C?3  ް2/3  ް201  ' 7 %!%!!=kyykyjjX>xjyjjyk$$ !%!!3#QX>5J5?3/3,,///3,,,,0133!!upJ3?3/3,,///333,,01!#!!JupI-?3ް222,,/3,,013!5!<fI/?3,,,,///3,,01%3!!5<f|5?3/3,,///3,,,,0133!!Nup| N?3 / 3, ,ް2,,///3,,,,, ,01!#3!!!!.NN$J N?3 / 3, ,ް2,,///3,,,,, ,01!#3!!!!.$J R?33 3/3,,// / / / 3, ,ް2,,,,01!3!!!#3GupJ o?33 3 3 3 / 3,,///////3,, ް2 ,, ް2,, , ,01!#33!!!#3.GVfupJk?333/3 , , ް 2, ,/////3,,ް2,,, , ,,01!#3#3!!!!.cGGf$J33!!!'!'Ssj\s=u5Y6pJ!!!!'!#3!7!sjshxj56$$J!!'!#3!#3s6s=5Y6puJ!#3!!!!!'!#37!s:jsjG$-56$ 51  ^ bb:d 5! 5bd 5! ^bbb:yf%/2#"'&'!#"&54632!676"264&j95/-)*xzQ3Q3Txzw:5/-)4S9OOsOP,)fPNq^D^'B %  !'''tNP^D'B 5  5!''6bNP'B5 5tN>]P'B 5 'Nt>P`32?632.#"#"&'!5gV^naibX^naiUK= ;ENSL=;EOȪ^ 5 3#ѦZ^ 55%3#^//m.   5 5 5 :6:6:6pr pr pr .  5555556:86::6:.  5 !5! 5?@Npo.  5 !5! 5?@Npo %5 5!@op9 7 5 !5!?)W5$%5$Ti}$_|x]])W5$%$5iT$}B!]]|!&!%'&'57&%5$%67&%7*?;i@]0qw^%KA6#(AF+3273267#"'' 5cCXbh`^xnieEVhjb_zl]@LTND*F JVND+Fpo"%&#"5>3273267#"''55cCXbh`^xnieEVhjb_zl[LTND*F JVND+FͰW&&#"5>3273267#"''%5$cDXbia]ymieEVgia`yl]$}. LTNE+F KUNE,F]]x|W&&#"5>3273267#"''%5$cDXbia]ymieEVgia`ylS$}3 LTNE+F KUNE,F]]x| 7%'%5 '瞃۞L О  @Y8@\9@a ' 7%͞G۞О@?Y@<9@}5!%57%!!'71|Iv\' :qߦ[@Z8@_}7!!'7#5!7%%%9Jpv\]FGjq8@ǹ@ 3 %! $`yd ! ' 5!5!fB  !##am! ##7 G33b"m!!733XG^!#^k?$%%$~  1;FOY!! &546;#"&546 !54632+32#"&=54&#"3#"32653264&"2654&#l(ع(DbEDbbEEbbEDbPDbabbabDv(D(غPEaabbDEbbDbaaE DbbEDb^!3!Z?k6732#"'&'.#" Pd@7* l l9TA6?%Hn*u( #"&546323267u Pd@7* l (Vl9DTA6?%Hkn T !!!!%!!Bf6L̔4+x  #/;GS_kw+7CO[gs{ + ]b+]%*+%++]и/bи/*и/%hи*nиииии/ ++"+"f_+f:3+:++'и"-и3?и:Eи3Kи:Qи3Wи:]и3cи:iи3oи:uи3{и:и3и:и3и:ии/ии/ии/ии/ии/ии/ии/ии/ии/ ии/ии/#и)и)//и5и5/;иAиA/GиMиM/SиYиY/_kиfqи_wиf}и_иfи_иfи_иfи_иfи_иfи_иfи_иfии"ии"ии"01!2#!"543!254#!"+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;22+"=4#"=43+"=4;2+"=4;2"=43!2#UݓJIIJ%J%%J%%K$$K%J%J%%J%F%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%%%C%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%$%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%$%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%%%%%%*$%%%J%%J%%K$$K%%%%%JJJI%%I&%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%% %I%HJ%%J%%J%%J%%J%%J%-3#˪5ipph #3h5ip . !!#!#7!fb"bb"P #53sàȖ0kTs*3#*P- #5sȠ-Tk0P 35#àȖ0kTP*#3P*P- 35Ƞ-Tk0P#!!s#s*3#*P,!!s`,P!5!#UP*3#*P,3!5!`,X #4763!!"]oeD9יfV],#'&%'53 763<(enK==Pne(!<  _AE_  <X> 3!!"'&5]9Deo>ܚVf]>#3]J] 4'&#!5!29Deo$VfX,&'&3!3#76l<(enP==Kne(!< _EA_ <]> 3#!5!2765oeD9>יfVu(3(! !! $<>32#"&'#'%73%&  N{g{' L%6OzOz$daad]chaam@j5.!3!3b^ &ۺ+#+#+A&6FVfv ]A]A]A)9IYiy ]+ + $%+$01! 4$32! 4$#"35%33!??qqW|A?rpG~+/ 8?+3&+3+A&6FVfv ]A]A]A)9IYiy ]3и/A&&]A&)&9&I&Y&i&y&&&&&&& ],9+ + +0)+001! 4$32! 4$#"!!56$7>54&#"5>32??qqWO\R!>/_N;sa=0>A?rpGM"?U(?N&:$}:iF D+B5+B+A&6FVfv ]A]A]A)9IYiy ]A55]A5)595I5Y5i5y5555555 ]5B9,5B9,/A,,]A,),9,I,Y,i,y,,,,,,, ]ܺ&9;9+ + )"+)?8+?2/+2/2901! 4$32! 4$#"#"&'532654&+532654&#"5>32??qqW v@X[}DuskcZX\[4yk_=hA?rpG]0OLGN<:,+>2+201! 4$32! 4$#""32654&.#"632#"&5432??qqWN\\NN\\Ta/w N 5jA?rpGb[ZbbZ[b#P =  "#/$/ܸ#и/A&6FVfv ]A]A]A)9IYiy ] 9!9+ + !+01! 4$32! 4$#"!#!??qqWkQ1A?rpGK '?K +=+1F+1+A&6FVfv ]A]A]A)9IYiy ]A&6FVfv ]A]AFF]AF)F9FIFYFiFyFFFFFFF ]%F19%/A%%]A%)%9%I%Y%i%y%%%%%%% ]+=9+/4F19%7ܸ+@+ + ":+".I+.C+C4C901! 4$32! 4$#""32654&%.54632#"&546732654&#"??qqWT__TT__jivvWQMKRRKMQA?rpGPIIPQHIPIvSttSv\\=BB=>BB 4@+>)+>+/8+/A&6FVfv ]A]A]A)9IYiy ]A>&>6>F>V>f>v>>>>>>> ]A>>])>9A88]A8)898I8Y8i8y8888888 ]+ +  2+ ,;+,5&+501! 4$32! 4$#"532676#"&54632#"&2654&#"??qqWUa.w O 5kN[[NN\\A?rpG$O <b[[bb[[b &2>+#+#*<+*60+6+A&6FVfv ]A]A]A)9IYiy ]A00]A0)090I0Y0i0y0000000 ]A<<]A<)<9<I<Y<i<y<<<<<<< ]+ + -9+-$%+$3'+3$01! 4$32! 4$#"35733!"32654&'2#"&546??qqW͞u>@EE@?FF?A?rpG>>'*6ޗ{;( ;!O;!O ;!O;!O;!O;!O;#!O#;(!O(q(!((!((!((!'(I(!]((!((3(:( ' q( #'+/3!33!33!33!33!33!3mnmnm;(%8K#!1!!!!!!!#!1!!!!!!!#!1!!!!!!!#!1!!!!!!qlllllllllmmm((((;(!%)-13#3#3!3!##!#3#3#3#3#3#3#^^(ll(lm#;( #q:( !&9 '( 9(& &  9(&  9(& &  9(& &  9( '9(&  9(& &  %! %!!!,7r+uv ))xxp) )$7632#"'327$%&#"%632#"'~~~~eMM>yJJJJJ6````qq|qq#u"@91990  9%-p) 327$%&#"%632#"'MM>y````qq|qqr' '/7?G%&'&'6767&'&'7%'676727"'64'7&"'62&47\+;.81F9K58.42d;E9G,:.80G9J6&8.;+d1O9FLL&_`JnLL'`_n<1& j(0=Ju &,A=N:0('<1& j(0=Ju &1<>EB0(n_II'[[JnII'[[p) %/36%632#"'327&#"6767&'&6py AAAA,+-,,-+A@@Rqq|qq%%mܱ[0$ %@%|"p) )73276'&#"7632#"'327$%&#"%632#"'r99:9rr9:99XWXXXXWXMM>yB!!BB!!oe33eje33````qq|qqp $  $pkk]Ak^p $  $27$%&#pkk]<MAk^a``p $  $"3pkk]<MAk^``p $  $327$pkk]\MMAk^>``p $  $%&#"pkk]Ak^>``p $  $"327$!pkk]<MMgAk^```p $  $"!pkk]<Ak^`p})6%63"'pRqq)#2y|q*q( 2654&#"!|~}}|v< ( 327$%&#"327$%&#"!IMM>y_O````}|qqqqH( ( !#%&#")%632OyyMMqq>~``  3327$3!#"'$@1>qq``) %63"æqv`) 2#%&#u)q>` 527$3Muyv`>q "'$33yuMq`!)%632#%&#"uqq>``!3327$3#"'$uMMuyy``>qq!% !% !%! !%!$3! 2654&#"4632"&nȊce;~|ddcc||}%!%!!d r<%!%!!We r<%!%!W7 r<%!%!W7 r<% !%!!!!+c,b r<<!% 4632"&! W>>VV}V2 j>VV>>VVJ !%! c  !%! b  p(  7& $  %;<*X֖% !!!!!!,7,rWb<)) Ie% !!!!%!!,crWbM)MM^??@7`d?\gOOOOy>*<?v^h"-///9 99013263#!5276;'4?'4?26u'6"gP39.4! '*C0.xV#m14He '1l1 Z+dd?7)+и//// 9:90133 #&'&+"'&#"/573;2?"#'57#&'#"#5676!5:+#9,p!j[%+ > 7VCCc":8}V .e3B=Se` e9*=9 3@=}k !=] 9eAmu} 5aǺM*+MA**]A*)*9*I*Y*i*y******* ]*к*M9Mи/*M9Mи/*M9*и/Mc///'P+'+ܸ и /и/99и/99и/99и/999999и/9999990173&'37&'67&'67&'67'32654'&'7654&#"3672#"$54767&'&547'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'4327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&54327'4327632#"/#"57#"54?'&54327'&327632#"/#"57#"54?'&5432&'67&'67&'67'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432O~ )*+')+(@&'$||e?/A}]\B-71SLoW\vLL)(0/ (( .1(%%,* # $ )*f$% +) $ #*+f%%,* $ $ )*   \o  [  %)#&'%&)#`#$ *) $ #+,U   Q   0  E%% +) $ $*+*EC*Z*,)-)-*,%&%&fБfU 5HhfeefhH2pu^ttQFs棥sKQttGh!99!  !77!  4 4 22 K44 22 22  11                 7        %&%&%'%&%'%&22  //  g               44 22  !2CTevU/d////01+&'&54?6?6/&2#"/54762#"/54762#"/54762#"/54762#"/54762#"/54762#"/547672#"/54762#"/54762#"/5476%2#"/5476%2#"/5476%2#"/5476DQ=2`{4&/<) g>i#@3e E $   $   #  #  #  $   #  $   $  U $   # " $   #  aG<s-8PZy9} KW2{0R^j ,: . 4 . = ,  ,   -  -  -  -   .  .   ,   -   #///9901!! WV9`8 O///+к 9 99к901!! 7 ! !WVDu9`8N I7///99 9 901 7%7&54769 }V&7A 6$ 8'^4? '+/+01!2 7%7&547!&'6I@Y%14HFS"="l-2DC[9 )+"++A&6FVfv ]A]A]A)9IYiy ]A&6FVfv ]A]+ + 01! 4$32! 4$#"#"&54>32JJhhq^mNMn2Z//Z2K7iwBNmmN1Z00Z} GH/I/Fܸ(A((]A()(9(I(Y(i(y((((((( ]H@и@/.A.&.6.F.V.f.v....... ]A..]@:и://7/C++C0 +0 и7ܸи/0&и&/01"32654&!"32654&%#"&54767654$#"#"&54767&54! gJggJIhgIhhIJgg[ZQoyy}WZ[zADgJIggIJggJIhhIJgU\\Q srW\\^} GH/I/ܸH$и$/и/$0A0&060F0V0f0v0000000 ]A00]6A66]A6)696I6Y6i6y6666666 ]3+3?+?.+ и /и?'и.8014&#"326%4&#"326! 547&'&5463232$54'&'&54632hIJggJJgMgJIhhIJg#@@z[ZW}yOOyoQZ[sIhhIJggJJggJIgg ][[Xrq Q\\} ׸//и/A&6FVfv ]A]ܸ A ]A ) 9 I Y i y ] и //++01"32654&7#"5432ɏǾ/`T_ȐɎ;12Y} 7 + +*+0+0A&6FVfv ]A]A]A)9IYiy ]A&6FVfv ]A]A**]A*)*9*I*Y*i*y******* ]9+- +-3+#+#01"32654&"32654&#"54327&5432#"'&'3xxx:yyxf& کxxxxZxxxx;TdIU  k)5AMYeq}BH+BAHH]AH)H9HIHYHiHyHHHHHHH ]NиHT-!+- +)3+)013'%&76'!'4%$53!76=332654&#"#"&54632'#"&54632#"&54632&'&676&'&676'.7>'.7>6&'&6%6&'&6>'.>'. [&riX(tRSu(Yiq'LW쥨驧r^]]^ !! !! ..- . *)n))*)m)+. .- . OyyO vKK9__9KKݧꧦ]]_""""s!!""D. - . - a)**))*)) / . - . p)5AMYeq}+!+!'+ +'A!&!6!F!V!f!v!!!!!!! ]A!!]'и/!ܸ!и//// + $+$++иܸܸ015#!4'&'5#2#"&546"32654&'"32654&"32654&7>'.7>'.676&'&676&'&7>'.%7>'.676&'&676&'&53!76=3%'676%327'%&76'77&'$%'#7%6'&718楣\\\R     - -Y - -))G))))U*)>- - ~- - VFwDcD CB DcDwETc==F\J $06# J\F==cS@@1AeA1@@H磤椣筁\\\\     % - -- ,1)))(9)())u- , - - G77W6 W77Gl^ ee ^l(q,&$pp$&,q(u S / / и/и/ ܸи/ ܸ ++01!!'!Pn8hv "g#/$/#и/и/$ܸи/ ܸ ܺ 99 ++01!!'!##+572367676MoL)>u eI3?ba8hA:F;/Itxv S//и/и/ܸи/ ܸ ++01!!'!  ##' Mo_h[ei[i8hi[ef[l[@// // 90136273 ##'5) U.WW1@ US Vdv#,5>~Wh+WAиA/Z//C+Z9 Z9Z9%Z9.Z90к7C9IZ9yZ9C}013+&=43+&=4%3+&=43+&=43+&=43+&=43+&=4%33 #&'&+"'&#"/573;2?"#'57#&'#"#5676!5\:V\9\:\:]:&]9[\::+#9,p!j[%+ > 7VCCc":8 #8d#7$6$8;$7i$7 #9pPL  )Z. ;6ZV Z3%Y63 .87p  />Eqwg0/FQ+F C+ t +tcr+crܸ иF?иFAиA/F_и_/01!674#!!6?676'&#'323276767654#3#&'&'&6%67!672!&=75$/563&43!32+'!67#>54&53# ? I :W0 96;E,Q 2:&l6x0 bm! ras"\>%Ef~e2U6g!6V#p5C+ C ? P9 B;Q4XmM;YV /M(=H: ,qLUD)8Wqke-Pm{NW =$ U  /0c)H?2@[nDF8T$.L / + 01 !' !T4XKGwL5_K ////01 !'7W4Z~wDB7/ /*/*9*9(*9-*901&547632632%6#"'&'# #"'&'&6&'&547676xJX%&XWX:\8 [Ez##FM !9@!#jL)_(Mi#"?8" MF##y4hok@mmr*%te2' BB90tU%) "ft(f" )%Ut09CB '29>-///919=9013#"'43727$'#"$4727%6725676&5&oJ7.b;7!"&546767!7!"&54>3!6763!26P+=6/2D>R+>2,+v*>>+2  ,2 =,2  =,3>,2K/1/&+ + и/и/ܸ&(и(/01463!2!2#!!#!32#3#!>*v+,1>+R=D206=+P#,>3,=  2,= 2,  2+>{!C_"+?+?<6+< + +5/+5"&ܸ(и(/.01%4&#!"!&3!!"3!#";#"3&'6737#&'6737!"'67!7!&'63!67!2I0!6SS SS: SS>SS]]J]]]]h\\, Bv*>K%39KILKIOKHLKIhghghghgE?-L!D'C+'+ + ?+?CܸC"и"/')и)/'.ܺ/9//5ܺ6 96/<ܸ?F9/B/(B996B990172654'6#"'4#"'54#"'54#"'675674767#%$4:JILLHOKHLKIhghgighgD>-sJ1 b6'SS cRR SS?SS\\K\\;\\]]!A*>K{!CuC+'+'*.+*+ +15+1C>ܸ<и*vA!,]]j\\\\K\\IKLHKOIKLIK93%N-?EghghghgiL!C>"+> ++'+'"ܺ.9./*ܺ/95 95/1ܸ>8ܸ><иDghgighghSS=SS SSb SS'6a!0J)K>*B \\]]:]]J]]}O!%)-15#PL+P+w+ L9HL9AP&P6PFPVPfPvPPPPPPP ]APP]uL9L9L9ии/и/и/.ܸи/L9L9L9L9L9L9L9L9L9.и/L9и/ии/.9ии/L9и/"9(L93L97$/0/|+*+5+D+D+ D9Dи/;и;/HD9u9ик59и/ܺ59к59595959к5959595959595к595и/"59(5935901 3656;2#'7+"/#"'+"5&54775%"'5476;25'7&56%635&56;374765'75'76=4'&+ '"'4!#"'&3$365&5&#%#754'&5&&547'5367&7+&'&'735&2?"5%75537'7'3533553535'32767&5%2?&#%55'5757757751:e,$?F?Y>F_LA3ELH3,8LYLlEF'!0< k#gF  EeY!! Gp&iq9 :^N$%`BCf F4"4._?ee3&{E(1-+!$Kt8 -   $Gs sM rEF"2 >_plTErf^5.>=9|5"-l)d ,&>vv]cccWpC-+ d8 Bpp>W]oaxvuPp82,D ^8, ^B$K+ "1R[+e*;GW QU I&? gpo% w ^SA$ 2 9i-5n02D|&IY^Pw^%\??\OWC ,,1 /211/=;7777=321811{908hN%b\Dh,)h?17I21!122223 21& //012%2#"'&=477654'#"'5473Bq4|l anN ilm b 9 b؍MOb>YaYƮ58l7P P@ $0<FX?Y/Z/ܸY и /ܸ  ++01 + &=6&# 3 6=%&#"';27!5%67%!&'&'2+"'&=476r cR~UY082.ԍ_W_V"+}IR8D).P9H'S]ٱZYHYoX(I_ ;.2lOP%.G6R%&I8d 8Pi]9/\/ /"/)/Wg+W 99% 99+ 99=и=/C 99Q 9901>'67&&&'6.7#"'&'#"'$76'773.#'6'5676&&5476'&'%&&8DN$$ UE>!]J([Fhy *m.2\=w\`|:S?ED:@@]?]1fix pFFTD'yr,48eL @v(Nr%&&&+F 7!N &".\S$XE/KC\a*0/'rSCٟ C (RKpF|bphc'R"J$d1F[qG^+G$ܸgܸи/$g9 $g9 $g9$g9^G9Gииq#иGܸ&и&/*^G9G2и3и$4иq5и^7и7/;^G9=и=/$ܸ@и@/C$g9$IиqJкP^G9gUиU/X$g9ZиZ/$\кb^G9dиd/k$g9GoиpиGrиsи$tиquк{^G9|^G9}^G9^и/$g9gи/^G9^G9$g9$g9$g9$g9$g9^79^G9^G9^G9^G9Gии$иqи$иqиGи///!///+yu+yuy9 uy9 uy9 и /uy9/9/9*/9;/9C/9uPиP/X/9b/9k/9urиr/{uy9|uy9}uy9/999999999999999999и017&&'7'6&'$#&7'&#"'5&767#&''5$'67'6'6'5$'67'656$'67&'6'&'''5$7676'&&'$'63&7"7&'7&'7&'7&'6'6%676767&77&77&''5& '6%35&'.54>323#67!&W= y /_I[l*O F_VhB" "@.,<9tJ4Vt1P QJqMi vhpHI!:JJJ B7m\J_/ ?o v!"t,`s&*_~P1>5='g=@24<1 -s[,*&sd1PT>5J@=)j<42JCYT_Y))X^TY{ #m7 "J}>  "H1 $ &b5 4CUE '(!`9 !,(MTE + }r}A" 7,)f[4f AD <@0&9c?"V+GoMK~aG g9s &0@k"?c*GEKX Gjt9hN&\6 '''' 6\%N$%/ и /A]A] ܸܸܸк9 9и&/ + +и01&'6&'67327&#!65#&3yyys~w ccޱqZre[c7 7 c , !+!"+и/!ܸи/и/и иܸи/и/ии/и/"&и!(/+ + &+ $+$ܸии и и&)и$+0135'533#3!'#'5!5!5#53!5!5#!!-ʷ}} ckvG G @<<3ffX苜qXGccGJ!"/#/" и /ܸи#ܸA]A)9IYiy ]и/и/и/ /// + +0132654&#!2+73 ### 3(ttvgnؐB(s+иии////+ +  и ии0133#!!#'!'57!5#'5735׫$"q~q+!++ + ии%и'и -+++ии&и(01!#!573#'5!3!'573!#'73!#'5;jjŠJss<wѡIjj8/w{,i + A & 6 F V f v ]A ]//+0132#' 3%+ &5%6323'#57'53^VQ6>ѨABؒ6ʞG2k >Y3~||~ObsU]+UHB+H+% +%hq+hA]A)9IYiy ]9 ]h999и/]h9#]h9+]h9/ %949AH&H6HFHVHfHvHHHHHHH ]AHH]9BH9=]h9F]h9KиK/LиL/NиN/Q]h9AU&U6UFUVUfUvUUUUUUU ]AUU]YBH9hu// /4/+к499к4949#49+49/49949=49F49K49Q49Y490132732753"'#"'4323$4'5;+"'#"'53275'&'&5?5572%#&'&5%634%476=%@.!%,BE,#!-Q2" $nL/PuHED8@9AF&F6FFFVFfFvFFFFFFF ]AFF]0JAU&U6UFUVUfUvUUUUUUU ]AUU]Aff]Af)f9fIfYfifyfffffff ]i/,/,9',91,9>,9012#27654'73&#"#'&'#"56='"'46'4#"4735#5&547/63654'%654BR38xy}xO8x  *@;^ThoP?).Rt}?ywW·FY3(p"AK|.PQUbKxưrɮ-(-; )1Hv;32#"&546324&#"326%! !  Őb{=&*<<*(;E;))::));KJ67Ϛ{ɬ)::)*<<**<<*):<'L67It" #   u" #   t" #   t" #   t" #   t" #   t" #   t" #    <BHNTZ`fl3264'&#"&7367'67675673#''5&'&'7&'677&'67'%%&'&'%6767%&'0/CB^0/AC/88pkTcR|NOOfUip88pqUfONNQaQh!$ b)dLQk KRt!% c'd&//^000NN|P_Pfp88poQ`QyNNP\ Qgp88pmQ \Py,  M N>&`7" bK*V&"g{ M M !)1a + 0,+0$++A & 6 F V f v ]A ]A]A)9IYiy ],и(и(/A0&060F0V0f0v0000000 ]A00]3 +++&"+&"*и&.01! ! 3254#"&#%#7&'67&'6767KJ]_VNEWMCe2ntjnti7IL6a] ]pu otpu ot !)1a + 0,+0$++A & 6 F V f v ]A ]A]A)9IYiy ],и(и(/A0&060F0V0f0v0000000 ]A00]3 +++&"+&"*и&.01! ! 3254#"3$3&'67&'6767KJ]_TNEAgntjnti7IL6a] Uypu otpu ot %ͺ + ++и/A]A)9IYiy ] "и"/' + ++ и / и$01! ! #$''&'6%&'667KJOR`7IL0c Z    "*2:AIXY/Z/ܸܸи/и/Yи/и/BиB/CиC/EиGиG/LAL&L6LFLVLfLvLLLLLLL ]ALL]F/H///W+$'+$+и'/013#''%#&'52#"'&5476!!'5%!!'53'5%3'5%3#'32765'&#"sNN99=>-1\ H0e%FKSwZGr=;=NN$E| 1 ?'_>?@7`d@\hPPPPy?+<>w_VG{?,rCA+,/-/ܸ,и/A&6FVfv ]A]&// 99 901 +"'5$76%&'547327676=&#~jt1/Q}](+VRxbO P >nS]] =fP+,/-/,и/-ܸA]A)9IYiy ]&//9 901! &56;2'5$%75#"3ui1.P~N](7P,VSZycOpO >S\^ f0:1@!7+7 + .++..9и  и /к.9A7&767F7V7f7v7777777 ]A77]7!и+=и.B /"/+/-/ / + '2+':+:2'9и и и/2'9017#'#53'&'&54767&'&=33676=3#32654'&i($lm$(($[Uu&tU[$&uU[[UV$|ddb e|$% ZSSZ %_TYYT* $+++A]A)9IYiy ]A&6FVfv ]A]и/"и&/++ #+ #ии!и!/014&#"326&5432%##5!&w衤礡PP䤣L~~| * $!+ + +A&6FVfv ]A]A ]A ) 9 I Y i y ] и/и/&/+ + + и/ и/ 01"32654&'#5!3%#"5476礡𳉧פ㤤ף |~~L #+%+01&$76+"'&5'476%7!ttsstEus pid5s qttrtt<֤ꧦg\ul9S//и/A&6FVfv ]A]9ܸܸ//++0152654&#"#43233#!5 z{ym㗗yyy{(|jǸ /!/ и/и ܸи!ܸA]A)9IYiy ]и/ ///+ + ик  901#53533#632#4654&#"#*jjoon}mZyH{zF2 4˺+ + .++. ܸ"и$и&и (и+-ܸ0и+2и.6/$!+$ + &+&$'и&)и$+и!-и /и1и301"32654&7#"&54767!!53#5!!3!!#3!!8OO87ON=0LmkL/>Λ2  1O79NN97Os0LllllL1KӘJJ-'< ++4)+4к 49ик 49 49" 49#A))]A)))9)I)Y)i)y))))))) ])+и+/, 4942и2/9и4>//:+:и:к 9 99999"9#9+9,9192901%#5#535&'&'5'73'3#'73'676=35'73'33◰zhNgeMjzzTThOʍ7NjYYӖy?//и/и/ܸ ܸиA]A)9IYiy ] + + +01! #!!!'!27674'&#.d ;6zFH%QM_\ǃ$P<] 5 +  9/ + и01!#"#&5463 67!2#6#"V⩁9k]ts]k8X1((1Eu 1#2/3/2"и"/A&6FVfv ]A]3ܸ A ]A ) 9 I Y i y ]"9и/$и$/&"9++ +  9& 9+и,01"32654&'67>3"#"54767&'&#52Γ͕LVa{.+ؔ)0zHUM\ϓΓϖ=Bll)'ҕ*l8lB=j;//и/ ܸܸ// //01&'5 %$ 56?6'[W4ZZ//[[5 @Eo +?);+)5#+5 +A5&565F5V5f5v5555555 ]A55]#59/A]A)9IYiy ]A ]A ) 9 I Y i y ];A)&)6)F)V)f)v))))))) ]A))]/иA 8+ +01"32654&,'5'&546322654&#" &$#"&547>__^- ͓hI^^^9l ͓hI____(+|T!%lϓgML____x)+{T!&lϔgMM  =( +(+"+A]A)9IYiy ]A""]A")"9"I"Y"i"y""""""" ]A(&(6(F(V(f(v((((((( ]A((]?+%+01>'.463227#"&5454&#"&'&5476766&KAKK@WߴGdAoc.%&3tu/3u]JKAKL@ݰ |XHwyo†<>bQs-.cx68<32>32#&'567''#&&#4'3>$4&"?w(K>R0D32>32gYYYD,1:?$)v$E?w(K>Ro}vvxJv<aAktAO]ƀwϧe// и /ܸи/ 9иܸ  /++01!5!3##'!5!~2k<@i8080k<j'/0/1/ܸ0и/ 9ܺ#9%и%/,A,,]A,),9,I,Y,i,y,,,,,,, ]/+* +*0127632#"'#576&#"4'5267>327&'"SkQmyz,~zi2@:$(.-)zW] ݾgvxaX[&ŝ9{!C*// /013276327632#"'&#"'&#'3276327632#"'&#"'&#'Es- 1V865+)|m^aV885W7805Dt,1W776+)}m^aW784V8705(GG$3LKGHb 'HH#2MLGHaA//ܸܸи/и/ܸ иии/// //+иии01!5!37!!' 3(ͦ '3_76`S@ʬARc!%UeS ,+ #&+#!+!U$+UO+OA & 6 F V f v ]A ]A]A)9IYiy ]3,O9I,O9g=/#&+#<9+<"+0+0ик309<?и9AкI090K0167&'&#"!3!67>54.#"!&'.54>325467675#53533#63232>54.#"P#3JNNTRJWVJQSOMJ4"?*&ElnhPL$ llill %LOhnlD')----+)QPQ((QPQ)+/ 6klj$?6FWWF6?$jlk6 }++--JHNRh~//GиG/и/Fܺ F9F9)F97F9QܸIкJF9GPܸMкTF9jF9F9Fи/F9QF+QNO+N>D+>Dи/>и/>и/>6и6/01&'4>32"'4>32&'4>32&54>32&54>32#!5!'!567>54.#"32767>54.#"327732>54.#"327>54.#"732>54.#"M_ 6694S55.+C55C&.66 V\+55 c$M##$ 6$#$s`%#$d0"%)h #"#_33@]22-"40446/*33UJ"+33^1/K=0T* ####  #$$##$$#  B #### *"$$" U!'-2g(+(+++9+/ ܸи ܸ к(9/(ܸии(и/2и/+#и#/*ܸ%и%/.и./(1и4+++++$+2(+2"0+"ии/+ и /+и/ии/ии/01!35!#3!53573#'5#5!35!75!!5'57!s\\ss]]s JRRIJ~֛E77__vtt4!v7CRbWc/d/cи/и/SAS&S6SFSVSfSvSSSSSSS ]ASS]и/dܸ[A[[]A[)[9[I[Y[i[y[[[[[[[ ]!и!/#и#/[DиD/FиF/NиSPиP/R5+R_+W<+WBJ+B<W9!<W99и<?01&54767&'&'5676767&'&54>32! 535#5##3654.#"!32>54.#"  <$))+N-N*)N-M,**%:  @ v<-M**M-?K566459<5&?HPPIK* ')+K**K+)' *KIPPH>&5<:6uN|l||l|-I+N))N+@65555Q*3VW/X/ܸWи/ 9"9;A;&;6;F;V;f;v;;;;;;; ]A;;].и./1и1/@9A9E9KܺP9S9// 9"9@9A9E9P9S9016&7!&54''&''67.76;+"'5#"=6&'76767%25#6&' 3Z(-6  Z8. ,Z0H &h6%`+EH )#M+=;,Zga#iR6U k''M.+`xo8:.@s.P mz "x?.#1p#41`&jD"acLHJ ~447| JlL"0T_/+@8+@A&6FVfv ]A]+/9A@&@6@F@V@f@v@@@@@@@ ]A@@]48@9D8@9U!+UZ+!#и#/+Z9MZ9!T0132>54.#"32>54.#"!5&54767&'&546767&'&54>32'&'.#":e79e89f76e;[S &(*UM,N)(N-KV)&& \@ECA8d88d88g66gu9:%N&KRS* '**M**M**' *SRK&N۠:9}qyyq}c!%Ueiz_ ,+ #&+#!+!U$+UO+OA & 6 F V f v ]A ]A]A)9IYiy ]3,O9I,O9=/#&+#fg+f<9+<"+0+0ик309<?и9AкI090K0167&'&#"!3!67>54.#"!&'.54>325467675#53533#63232>54.#"!57!&'.54>3234'67632!P#3JNNTRJWVJQSOMJ4"?*&ElnhPL$ llill %LOhnlD')----s=BDw@>=))==AwDB=+)QPQ((QPQ)+/ 6klj$?6FWWF6?$jlk6 }++-- !yCB{C!$$!C{BCy! JHLPQ/R/QGиG/и/REܺ E9E9)E97E9JܸGPܸKиJMMF+IN+I>D+>Dи/>и/>и/>6и6/01&'4>32"'4>32&'4>32&54>32&54>32#!5!5!M_ 6694S55.+C55C&.66 V\+55 c$))_33@]22-"40446/*33UJ"+33^1/NNOOU%)$!+$ +  + и/$и/и!и$ ܸи+&+&'+ +  +  и и /'ܸи и !и!/ "и$и$/ %015!5!!35!#3!53573#'5#5!35!s\\ss]]s ^^/oo#E77v4@m+A&6FVfv ]A]991/014767&'&'5676767&'&54>32!&535#5##3  <$))+N-N*)N-M,**%:  @%v<5&?HPPIK* ')+K**K+)' *KIPPH>&5<:6n5|l||l|L".7=W <+ ?/ / 9 9 9 9, 98 9016&73#!&54'''7&''676&7;2547#";65'"3=QUU+-6 E|]k0krd0c G&h8E+`%s H>4wM-',Qo8:$whPSmh**z1"0@)5"@YR00m+A&6FVfv ]A]9 9/01&54767&'&546767&'&54>32; &(*UM,N)(N-KV)&& 9:%N&KRS* '**M**M**' *SRK&N۠:9C#+///"/01#"'##56'##"/547?^'5@_*SU&/UL ;Yԧ9UP(` XI.s2Q3/4/ ܸ!ܸ и /3и/ܺ+ 9/&+и&/0122732#&547636=4'&# #4'&#"*t pz&=<xQ>hG:V Hek%PF5NP B|-&pA&NFX // 901 &&5 <F:^;" V gdG7C+///99 9/901236;2"##'65##"'&5476;235&'&=476e x<JT`(GeRUdfB3 VNT9D///4 +4 к#94+к=9>901+"'##56#+"'&575477;2732;276=4'3&'"~V"0b*SV*8UiQ"_|Q )w`SgA ? 6N #euB? gIo5 F(pZRw// /9012367632#&5476(t*#\l~ ΨT]1klSI|-X //01 &47E osU H2`g+Z+N+99V9AZZ]AZ)Z9ZIZYZiZyZZZZZZZ ]i//^+J+J):+)и/) и!и),и,/:7и7/JAи:QиQ/:Sи:UиU/V:790126;2"##'65##"'&5476;2&'5476&+"326733276=4/#"567654'&#"35&5hr=)\"IfRUdgC3&=cG kv ==Nr%SZU 6vk 6)S<F98:d  mOE:R p&i  C]&'Ax.+0 nM,W`cT,L#@8+@+0H+0A&6FVfv ]A]"ܺ<809A@&@6@F@V@f@v@@@@@@@ ]A@@]AHH]AH)H9HIHYHiHyHHHHHHH ]0N/D4+D013#&'&'&6%3#&'&'&63#&'&'&6#"$&5467332$654'&'v  0A  1Y  1,KV./VL9?cyɦt3Z|`ŻN[O}БBr1a`bb`a1)EMTTUUTTME)%+///9013#"/4?23hH0#!cZ-@o3+///99013#'654'&'#"54732XWz=\9`Y'6?F` 1TFG*֙-@x/e/ /и/и/ ܸи/ܸ//99901#"=4?2%#"=4?26ձ'VQܖCت+YP*~: ۉ8z"Co//ܸи/ ܸи/ܸи ++ +и/и/ 9901"'4723!# 5472!5kmOdXX[;Z$}@Ϝ"  ++к 9A]A)9IYiy ]// /+ 9013363'$6'"-8 w?WXc1 0 // и /и/ ܸи/иܸи/ ܸи и//// /99 9 999013%#'#3%#)N(4/c}4(,=++и ܺ 9ик  9ܺ9к9и!и%и&и'и+и(и)и*к, 9////99 9 999999&9*9,901377#'#'547#5773%%.wwzy.**  <<7CA<<{8AMtPGc6+6и6#//MT,P$ 66$0_ u3dUdt_}s*$"Rt0XX__/ik=ZG8*F 1 . ъf)MC =g9EkO 9!(-);&  ]t!y" & 2| ba$ U+  2E3/$/+ +к$39$39$39"к%9&$39'и'/7$398$399$390135733!&54?'7'7!!"'&%#'73676'77'7'&'676ի,&T>=c$(wK9.U:Cʈ%`T??5̈'8/a\MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! 1DWE/6/,-+,+ +6E9#6E9$6E9%6E9-4к7-,986E9,9и9/I6E9J 9K6E901!!5>7>54&#"5>32&54?'7'7!!"'&%#'73676'77'7'&'676]T@1$J=c$(wK9.U:Cʈ%`T??5̈'8/]U1)8(3&ncQ&D- mMOHK$k$823!a IF 7=c`O]BA6$k#- kNA! (=PcQ/B/89+8 + #+#+9 BQ9/90BQ91BQ99@кC989DBQ98EиE/UBQ9V#9WBQ901#"&'532654&+532654&#"5>32&54?'7'7!!"'&%#'73676'77'7'&'676Z _3lFHe5^\VOosHGJI)`VKm1Sj,&T>=c$(wK9.U:Cʈ%`T??5̈'8/S<\el23-2['&')b YK4JMOHK$k$823!a IF 7=c`O]BA6$k#- kNA!  "5H6/'/++'69и к'69'699%к(9)'69*и*/:'69;'69<'6901333##5!5&54?'7'7!!"'&%#'73676'77'7'&'676yy,&T>=c$(wK9.U:Cʈ%`T??5̈'8/Rv_`MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! 2EXF/7/-.+- ++7F9ܺ7F9$9%9&7F9.5к8.-997F9-:и:/J7F9K7F9L7F901!!632#"&'532654&#"&54?'7'7!!"'&%#'73676'77'7'&'67612hFL]5R]]R'PF ,&T>=c$(wK9.U:Cʈ%`T??5̈'8/_ptcdrr@89@ SMOHK$k$823!a IF 7=c`O]BA6$k#- kNA!  $9L_ + A & 6 F V f v ]A ]и/? 9M/>/45+4+"+" "9ܺ+>M9,"9->M95<к?549@>M94AиA/Q>M9R"9S>M901"32654&.#"632#"&54632&54?'7'7!!"'&%#'73676'77'7'&'6767DD7:BB=F"W\]8uu&M,&T>=c$(wK9.U:Cʈ%`T??5̈'8/A;;@@;;Af`5(sa_t MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! .A// /++ /9 /9 /9к!9" /9#и#/3 /94 /95 /901!#!&54?'7'7!!"'&%#'73676'77'7'&'676&,&T>=c$(wK9.U:Cʈ%`T??5̈'8/2{MOHK$k$823!a IF 7=c`O]BA6$k#- kNA! ':{(//+(9(9(9к9(9и/,(9-(9.(9017&54?'7'7!!"'&%#'73676'77'7'&'676,&T>=c$(wK9.U:Cʈ%`T??5̈'8/MOHK$k$823!a IF 7=c`O]BA6$k#- kNA!'9HRm//F/=D+=F9 F9*F90D=98F9;F9@F9IиDL01!273!567&#2$'76+&67'#'6765'533!273+#'!"/47*:!Jca# fi*11Za(}ypPd!^t/TT}75 b\V/V'f::p ?)\ ) 9s s%00%2<J\e9d +d+.и./O d9dQ013 + &=%62!67#&'&#36&#&#"3274/"34?3'35732?5##!'53aoPS<&3y: SO B2_5N vbe)PK  L$=j"AjOL5_k, ߋ~y}/M<4{1;C,[_ei' [)$ /:BR`j_k/l/ܸk и /A&6FVfv ]A]A]A)9IYiy ]' 9+ 9G 9L 9T 9Y 9_ 9++V[+V")+"')"9+)"90и0/L[V9Vaи[e01 # &5%6; 65%&# !27!57&/#2#&'676+%!#'#&'47'3!27##'%!#"/6g^_b0h\{\[:5:QmMM[-w,ldN VNG+Q'XYtTpXYSmEb,#4' FV ! Y1 1_ Ug,17H8+8'+1+1 A+ A&6FVfv ]A]A]A)9IYiy ]  9, 9A8&868F8V8f8v8888888 ]A88]AAA]AA)A9AIAYAiAyAAAAAAA ]J<+<E+$+*+*ии*.и$40127&' # &5%6367&#'.7&67263'#%; 65%&# aWg^_Wa+{|<b0h\{\&XYtTͿWzzWapXYS1/5/*+* +  +# 9012!2!!7&!"4#".547673267   0# Uq{|}@!/(SSS*E.َer(Y$h?}}|r<.2#"&bb,9T9ǥ!<@2#"&%2".4>bb,9T9ǥ!<@4."bb4<"!<@4."$2>4.#"bb4<"!<@4.#"##"'5##"$'&'!5!5&'.54>2!!676767'%''G&'G'(G&%G%&U V0VHlss=DE{{FD=ic]IV1V UrNG''GNH&&_W@Gz@W0(̀2"zDC|CC|CDz" 16 "0W@z@W0#[` 9Y%&'%67& 673&/'67 &'"&'6?&'3 ' '7  &/7&'>7 0  0IJZ\=;+Ff[&eAAd%[g>(J>\[J ! MNW1)zU5"Uu)/]?Q>? #:2SC# #?C &LLLz D8o^Lb0  L*,** A@/"@Q/0>vA%nc.C&2.X`P/5#2$!rI' @2/t< <#m* ---- T}3% % 32+#".7!"&'&'#&=4;7337+8)//^]`T_0/84343LL3L)(D=?FF}F-F}FF?=D0.@e"632&'.'#!#!#52J#+}|Q!Mw^}TU}^yS &MP9:9:OGh>BD..TV"532>54.#"367#&7&$735&'.54>21Z01Z24Y0/Z2߬-&5).W@.#"2".46''#/'7''7''7/5?'77'77'7?3777'YLG)(GNG((Gr=\RG$d$GQ]23#67#&1#"/&'&547&"'6%676 m*Zm$'YwK/;z2:%a:=/19.v*mV)'$m_/KO:2F<:'d91/UlKK65L'(&4(OKOTP64'4 3'49WTOKQ '"?Ct>/%8`>!T*}ElKJ{_F e7p %/>i!>`)E}CJV Fhq7f9L56KK65yY &*&&*& X (4ZI4( [c (4I Z3 ' ")>J2".46&'767&%6'&''67&'&'&'>764676'&7>26'#"'&'&'&54767&'&547>&'&#"6&%>7&'&'&676&467&'&672767&|&$$&$NG}35dbbd264}GK844k/021101/.2021b.NF{67fd!v|u!qr #76! ߫!::;:! !55# %-/12/-TUT[<="#B !D"=jbf76zFN 83388 <=#!#=<  "#YTT-/f.-U-$(##($49fSU++9Y]]Y9VUSf9'N'&((H7r787r Y^49dTV,, ;7->dsub>,64.#"%2".4>'6,3 3%//)+6<)'/*+3.21'Q XeT+1'')-TeX Y87 "2 B1;E^ WB>1C 3" 784h̻hjcdSZWWY~"dioLbMSuIJq>UkKVV6o ij$k]*UzvvZ11Z vvzU)[#ec,#IL 6B/!!0C6 MJ"+ce#̻gg̽ffQUWWUe #3!'#!52#"62#".4> n,L353$%$$D [ Ch:$($$($33'554#$/ZZvFSF\Q FIF$Fbm67654'&'67632!!#5!#5!5!5&'&'&'&54767676323276767654'&'&'&#"!5&'&'&'&54767&#"32Z&&&'Lh`TVDE$##$E@Z-<81VDE$##$E@ZNfbR18+../:9C=7/##"-<J81,/##/5?G5>+../:9CB9*5;AB;5**5;BA;5L##%CEVUb_UVE@( %CEVU_bUVE@(##,+.<;AB;<./9BUb_UD  u8CU_bUC8+.<;BA;<./Ew3eq&#"327&'&476%3276767654'&'&'&"%'#"'&'#"'&'&'&5476767632'%'676326764'&=<@x.+0.(B=?>=-&& ,&%,D6?=?+,/*??zG]3"D"&%%A=_V`ZZ""V`ZZ^;D"&&$AB[X]:3:΂>] [Z:3!$"2.*?:CDr1*8>]^A47>\\]W@8-.=)%%%%'>HS]ZY^XAA&% P^Ȗ9 % P%4:CA<.*(2:<2GwB^n67632'%'#"'&'!!#5!5!5&'&'&'&54767676323276767654'&'&'&#"67654'&'&#"327&'&5476"X]:3:]3"D"&%#C:bV`]W%!-<81VDE$##$E@ZNfbR"-##-D6>>?+,/*??=@!##8BJ2>+../:9CD6-&&% P^29!$HS\[Y[VF=*%%  %CEVU_bUVE@(##}6AUb_UA6-.=]ZY^Bb2R!!#5!5!5&'&'&'&5476767632'%'"3276767654'&'&'&4.(E$##$E@Z-<81VDE$##$E@ZNf:4:]|G5>+../:9CG5>+../:9~(EVUb_UVE@( %CEVU_bUVE@(# P^29`+.<;BA;<./+.<;AB;<./ /M#"'&'&'&54767676327'7'%'276767654'&'&'&"(F3"D"&%#C:bV`ZZ^;D"&&$AB[X]:3G9:]:F=~=<.,/*??z?<.+.(!$HS\[Y[VF=*%%'>HS]ZY^XAA&% iiD^29i..=+../:9CG5>+../:9 \2:a(EVUb_UVE@( %CEVU_bUTG(Hij:ο\ij+.<;BA;<./+.<;AB;<./4/O!!#"'&'&'&5476767675!5!' 276767654'&'&'&#"<-Z@E$##$EDVRbfNZ@E$##$EDV18kbbjC9:/..+>5GC9:/..+>5疑 (@EVU_bUVEC%##(@EVUb_UVEC% kajP/.<;BA;<.+/.<;AB;<.+ /O####"'&'&'&5476767632333'7 '%3276767654'&'&'&#"ܖU (@EVU_bUVEC%##(@EVUb_UVEC% Uܭkaj/.<;BA;<.+/.<;AB;<.+<-Z@E$##$EDVRbfNZ@E$##$EDV18kjC9:/..+>5GC9:/..+>54;2"'&'&'&5476767"327>7654'&'&'&RUEG"##"GEURRUEG"##"GEUC9;\.+>6FC9;\.+>6#&BIRUb_URIB&##&BIRU_bURIB&s\<;BA;<.+\<;AB;<.+42"'&'&'&5476767RUEG"##"GEURRUEG"##"GEU#&BIRUb_URIB&##&BIRU_bURIB&J;"276767654'&'&'&2"'&'&'&5476767R#$$#R#$$=>3443>==>3443>"$)($##$()$"06"@21.2@?FI?@21.5="$)($##$()$""$)($&#$()$'R 5%%%xr6׊eMM^xx)7654'&'575##'&54767'5!nL^A>..>A^L܄bNC#FF#CNbr*NJ!'11'!JN*MI<77aZ% NT>%  #HH  ")mROeb     0         $&$  ' D"&%  $ #  mR )Ky           V!Er26767654'&'."#"'%"'&'&'&54767676;27>764'.'&+"'&'&'&547676762%632$"26767654'&'&.&&.&m,mQjP (!N!"(!'CVf& &bZC'!("!N!( PjoQm,.&&.&q    l?W,># "#" "  " "#" #>,W?~    lOYx3!#!"'&'&'&547676?6767676'&'&'&#"#"'&'&'&547>763276;%326767654'&'&'&#"6767654'&'&'&#"32eOuRd2  HH#   %>TN  +Za>%#+$ 4$$$+$ 's   *    * OK) Rd# !#& "*"D '  ""! 2   T   :      IZx-4H67&'&'&+"'&'&'&476767632%632 #"'%#"'&'&'&54767676;276276767654'&'&'&"276767654'&'&'&""'&'&'&547676762"'&'&'&547676762'&'&'&547654'&'&'&";276-&#"+"276767654'&5476%327%&"'&'&476762I  Q\C--%("(/*0.,+"( /X]\9<\X/"$)0*3')"* %1*0CR[        22 2 2 2 %'   &J  &%C\d#_*]OhXC%&  J&   O]*       ")&`&"'$"/' <%ZS  % SZ%< /'* "%5"-($# ;8\= !  !  " /VC "  !  !  [uV/+    V^n3276767654'&'&'&#"&'&5476767632#"'.54767&54732#"#"676767'&#"'67654 ozwbd011.f_zx|wbd011,k9995ulsp:995un*D$lQ$" 6*D?"5'K(2- #%>   :7 331cdvwwqi`4331cdvwxD>mwn<;;8rowp:;;BV0/+"8:D@*|sa  -F(7 "*=8&0!2   1-5$& 6:B4V^,Ji&'&'%&'&"632%676767654$2"'&'&'&5476767"3276767654'&'&'&'2#"'&'&'&54767676?!*$ 1$-+h+-$F3782* !?1 $> > 9|wbd0111c`zwbd011.f_zxsp:995unsp:995ulwIP"2-.$  "" PI $.-2!v   31cdvwzwcaf31cdvwwqi`43d;8rowp:;;8rown<;x,A-57'36%33#3#!2#!3#3##$'#7$@d5{sVd]F0 0F]dVs{5⒒d@( jPP,PP` 0 ")- !676762!"'&'&'&54!X$#R#+/RFF$#R#$1Sh,  k-"s!|K476?6763&'&'&547632676767654'&7632!54'&'&76'&&#"'&/&'&'&#"#"'&'&/&'&#"&'&'&?6'&'#"'&'&#"!'476/654'&76'327654'&'&327654'&/%4&)"$0JK&  $)7    %1'# #6 +-L __^/s4* 1( .266 |/(1   \   #:7  lS&   x71]% /~[#<$  o_%?,: *(;Y)$X$+|=L!6CX&PY89Do6 b'n2  83eF] 4T&  &  /50$?- 1@& 3l K  C"P1 :07@D:5XI6.D3[+-1:   q/A8   g+jl9Lp{7654'"'&#"+"'&54?67676763276323273#5%6767'&#"6"/67#"27632327654'73654'676547&p/l0&J!cS%YE]{@C"$4>-;% ,(6Y>m!N$X6"/,(4sS?X$U>"sJ?K(`./4+2K2.0>S Zp0+1^' ;cs  /^"|Y/ 428ۇϕl%%ot5oA='Y$ aT* ''G+- %_kj~r}jL`І|\gK@/.85c($")3SZ67654/##3276?%%54'654'36767632#"'&54767632'%;66I   }g A6qn       -> 9@  H67; zh| 9 >6!q     B5> '-EL4'&'&/767675'7! !'!654'!4'!!$4767>2"&'&'!654' 33 ^^^RXI#J2VlP# ~!88!~ Uppph,p<((zd")3SZ&'&#"227654'&'''%'654.#"65&'&'&547632#"'&'&6#"%  I66;o |>A%6!q       9  ;76H    |h> 96qm      BX{[#C'%%.'&"27>7%$6%"'&'&'&47676762%'2&%k      Aڙ> >dIID`qS   SqGYq > q)&%$64'%%&'&'&"27676&22"k**!q``q!3W 2327632#"'&'&5476'( > !~GH ".4F+@xH )0$'*' 27277632#"'&'&5476'( e` }{*279HFb@yJL 1 -A  ' 7 Ɏ877Ɏ77ɍ8ɍ? tt7tt7t7tt7uB2632#"'&'#"'&54767'&54763267632676 Q   x L$3 z(   6X3  6*=P*> "#  Q26#"'#"'&'#'&'#"'&547&'&54767&&5476326763276T 디% $$YyX$ zc0 + j :  (̢1#: _& #- Խ =1 '2ĺ pD #!!!!!%!!!!!!!!#!5!36HVBBXBBUHVPBXyBpD !!!!!!""p"p"#pD35#7!!#!5!3rrsrspD!!%!!!!!!r"p"#p"#Rb !!#!5!3ppEU l3!!'#'!!#!!3!5@,r,,_ r,,_>v #!!!!!'!!!!!!!!#!5!3hm_|P_H_pDQ#"#3;54'&'&'!"3276767653#4'&'&'&+3!52767>5{dZYIB,$22$*DE]Vh{%'GC_Rl|lR_CIJ{hV]ED*$22$,BF\Zd{%'GC_RllR_CIJ&%IB`Oo|oO\FG'$zdZ\GB+%22%+BIdz$'GF\OooO`BH&&{dZ\GB+%22%+BId  #!! !!! 373#'7#ZAA:Llحmllmzlmllm|}}|d d}cT`C54'&54762327632#"'&+"'&5476=#"#"'&476323(L,68x86,L zFvd0000dvFz L,68x86,L zFvd0000dvFz zFvd0000dvFz L,68x86,L yFvd0110dvFy L,68x86,LV^&'##"&'&'&4767>32367675&'&'.5467676236767>32#"&'&'&'#"'&'.546767675&   R.-R  R-.R "  *!""! ((\(( !""!#%   " R.-R  R-.R    %#!""! ((\(( !""!**!""! ((\(( !""!#%    R.-R  R-.R "   %#!""! ((\(( !""!*  " R.-R  R-.R   Sa4'&'&'&'.54767676322767676767632#"'&'&'&'&'&#"'&'&'&5476767676765"#"'&'&'&5476767632($ ((& :.:806$&& )D+:!  '228:/3&$$&3/:822'  )2/@!  '&$6/r/6$&'  '?03'  &d8:02&!$&20:=-2& (20C,7"  &d8:02& $&20:=-2& (10?!  '&$6/r/6$&'  'D+:!  '228:/3&$$&3/:822'  )2/@' ((& :.:806$&& (T`0267632#"'&'&'!&'&'&54676763267632#"'&'#"'&'&'&5476767!6767632#"'&'"'&'&'&54767#"'&'&'&5476767632!#"'&'&'&54767#"'&'&'&476767632&'&5476767632!#"'.'&5476767632&'&54767676Z   ( &            <   4          % (      (   2     6           %    <    %  (   W_276767653"4'&'&'&Wsp:995ullu599:ps;8rown<;;j>-'O^__^Oq44H4"hdd0!% %!-@jjjk**37'7 #'xxxx.xx.x..x  pD #'!5!73!GFdFGrEGdGErFGqFGdGFqGEd@L     - FOFc,OO,cFd,PO,dGOP T` '!%%%!%% % -wD{wwf#w%f{wwy||y{xxf#w%f{wwxEy||y % %  Zp/AppA/}}ET`     - Zq NqqN  NrqN qrT`% % -ZyllylyyT`%% %% -ZtGcVGttGVcGGstGWcGtsGcpD/3%!!%#'''%!5!%777xo:U.cF.d;UǩoxoU:e.Ec.U9oE.f:UūoxoU9g.Ff.U:oxo9U. 54'&5476276767632#"#"#"323232#"'&'&/"'&5476=&'&'#"'&'&547676323232?&547'&#"#"#"'&'&54767632676'K,68x86,L qA'C<4GW>L d  f L>WG4L d  d L>WG4L d  f L>WG4L d  d L>WG4 +F$H$F+ > ;<5 AcJ2QD++DQ2J (5H,'9,J&0f) T|\`j4OO7g`\|T 'g/& H,9',I4( (3J,&9-H &0f) T|\`j4OO4j`\|T 'g/&J,9',H5(""'!$(:UJJU:($!'""nF"276767654'&'&'767632#"'#"'&'&'&'#"'&'&'&5476767#"'&'&'&5476767632&'&5476767632=>3443>==>3443>x>%85670-)-%8/>0!-)-02;>/8%0 )-02;>/8%-'&$>/:#-)-02;>/;))-02;>/8%- 06:4/.&"./4;=16'+&1,"%&!6'+&./4:>1:#"$./4:>16'+,4:>16'+&./4;=1nFn%#"'&'&'&5476767#"'&'&'&5476767632&'&54767676267632#"'#"'&'&'&27654'&'&'&"67&'&'&'276767&54767'&'&#"276767654'&/7676767654'&'&'&#"Z 0%8/>;20-)-!0>/8%-)0-<1:3%>-%8/|/8%->%85670-)-%8/>0!-)-02;>/8%0 M=  H  C# B/g  H *x#$   -7 H  g/B    $#x*%",1&+'61=;4/."&./4:>16'.5 1=;4/.&&./4;=1 5+'61>:4/.&"./4;=16'+&1,"8_/$   $/_c.,b" $#  !I?30C !'#  x!  #$ "b,.$  #'! C03?I T`-[3b &'#"'&'&'&547676763267'&#"327%327676764'&'.#"7632#"'&'&54767676324676762676322##"'&'"'&'.5#"'&'&'&54767"'&'&'&54767676&'&'&'&'&'67676?&'32767677676765&'&'.#"7676767&'&'&/326767674'&'&'67'&'&'&#"67'&'&'&'67676767"276767654'&'&'"'&'&'&54?&'276767654'7654'&'&'&"67'&547676762:   $4 $$ 4$   % !()-+,)$"! ((\(( !"&',+-)(!'7'&"# ,*2% !()-.))$"! ((\(( !"(%*-,*(! #2*&"# "&'     !  4  !   4  g       i 4  !g  4   !     oR#$$#R#$$  8 < c7 < 7    8 < d8 < 6   %),++*) !$3R  R3&!-(-%2(&"#%(.2$( &',+,)) !$3R  R3'! )),,+)$"#%(.2$( "   i !xg   !      %     !  !   g    "$)($##$()$"$  % %% %  V^<\l"276767654'&'&/2#"'&'&'&47676762#"'&'&'&54767676% %-z35++++53z35++++5pWDM69 ;9JHSWDM69 ;9JHSsp:995unsp:995ul}}(.35<;53.((.35;<53.("68MITNLJ;9"68MILJ;9m;8rowp:;;8rown<;}}"327632#"'&'&/#"'&5476=#"'&'&5476763232?'&#"#"'&'&5476763254'&5476276767632#"'&#"27654'&%&'&#"327676%327632 654'&'&#"#"Z*1%85e %ZF\ +m8BS/?JV@6RTXN6@VGB1QB8n* \FZ% e53e!&ZFZ *n8BS/?JV@6RR6@VGB1QB8m+ \FZ&!e3*1%8~> +F$$> +F$H ;<5 A~ ;<5 A+DQ2J (5H,'9,J&0f) T|\`j4OO7g`\|T 'g/& H,9',I4( (3J,&9-H &0f) T|\`j4OO4j`\|T 'g/&J,9',H5(G+DQ2J$(:U$(:U3!'""!'""A''7'753'75377537'7'#5''#5'7#5'7'7<B-OS2#"327676765!"'&54$3!57!##"'&'&'&54767676#   ?>I-7އv3T%+>CPNHiDG-2/&D9  . !-8=DD_o2{jTc@F'%.36<@M137+4V52&'&547676762"'&'&'&5476767Zy*,&&%1]~|45,--,54|45,--,5(+&014|d΃fz410&$(F*.46=<64.**.46<=64.*Nf%C&%&547676762476767622"'&'&'&5476767Z{&%1-l./&%%&/.l-1%&|45,--,54|45,--,5ġS410&$%%1/66/1%%$&014R*.46=<64.**.46<=64.*nF(%%&%&54767676247676762Z_75EAAD6556DAAE57_qKFD6454FCNNCF4546DFKoX'#"'&'&'&547676763"'&'&'&5476767632rJFD6464FBNNBF4646DFJp`84F@NLBD6466D@NLBD66^~* i654'&#"632327632!"'&5!267&'&#"#"'&54763247632327654'&547632#" 6+Jo.^V|;-˙it36?̺fQMeEJS?(*$ s]vh2K)*NL13^v:Mc*ZeC03N35%&-Kt\K%9S >BWN=!$?$8(F!5{^?ZN676 547&'&327#"'#536767&'&'&5432&5476323254'&5432?-BO>Bv06('K`dC+(k$'eM?$#=Hb B=)+8=.m9eb PB>$3g:=TEB7WPfG+1KHP<Ff#&T'0P+A'<}DC/' 5276767654'&'4rceNS((((`hm@DDF/CD}>C/GFCG !&547>2;!!676PJKBA<! !$ ! "#{! !{54&#">32!5!>??qq>0ţ=as;N_/>!RL}A?rFi:}$:&N?(U?"Mt 6+A]A)9IYiy ]1.+. + !'+!+9*'!901! 4$32%4&#">32+32#"&'32654&'26??qq|=_ky4[\XZcksuD}[X@v hA?rs ?<:32#"&'32654&#"75!5!??qqYe2hvvhDw_X@ϰ?A?r%aVUa/  23/4/3и/4ܸA]A)9IYiy ]A&6FVfv ]A] +  + +,&+,/&,901! 4$32#"&54632"32654&#"7>325.??qq\NN\\NN\qºN w/aTJjA?rZbbZ[bb*= P# + + 01! 4$32%!35!??qqlUA?rv]K 1=++ +A]A)9IYiy ]A&6FVfv ]A]A ]A ) 9 I Y i y ]/9;9;/A;;]A;);9;I;Y;i;y;;;;;;; ]5+ )+ +28+201! 4$32#"&5463232654&'>54&#"2#"&546??qq_TT__TT_⾭vijvkKRRKMQQA?rlHQPIIPPI\vSttSvB>=BB=>B &23/4/ܸA]A)9IYiy ]3'и'/-A-&-6-F-V-f-v------- ]A--]+ +  +*0+*# 901! 4$32254&#"326#"&'4632#"&??qq鿹ºO w.aUJk<\NN[[NN\A?rK < O$[bb[[bb $0Ӻ%+%+++A]A)9IYiy ]A++]A+)+9+I+Y+i+y+++++++ ]+ .+ (01! 4$32!5##7##"&5463232654&#"??qq$ŸuF?@EE@?FpA?r*'$ =(F  76767654'&'&'!5%3!!  '&'&'&5476767̆mo5885om4mo5885omP\|~}~~}>@@>}~~}> =A_  76767654'&'&'!!5676767654'&#"5>32  '&'&'&5476767̆mo5885om4mo5885om)4 \)NBCkPQT`aFnoIkl\|~}~~}>@@>}~~}> =Om  76767654'&'&'#"'&'5327654'&+5327654&#"567632  '&'&'&5476767̆mo5885om4mo5885omttBAzyLOPUDWOPJJx??zBLL\R[PGjkr=\|~}~~}>@@>}~~}> = +I  76767654'&'&'!33##!5  '&'&'&5476767̆mo5885om4mo5885omh*˪+\|~}~~}>@@>}~~}> =?]  76767654'&'&'!!67632#"&'532654&#"  '&'&'&5476767̆mo5885om4mo5885omz##$#utKSLHMVA@AC\|~}~~}>@@>}~~}> =,Jh  76767654'&'&'"327654'&.#"67632#"'&7632  '&'&'&5476767̆mo5885om4mo5885oml@@lm@??@=|}~~}>@@>}~~}> =$B  76767654'&'&'!#!  '&'&'&5476767̆mo5885om4mo5885om\N\|~}~~}>@@>}~~}> =+BNl  76767654'&'&'"27654'&%.546  &54632654&#"  '&'&'&5476767̆mo5885om4mo5885omsBBBBCBBBhtdthuABtԄ9tihvvhit0\|~=>>>kl>=EggOOss\hh\]hh@>}~~}>@@>}~~}> =<Lj  76767654'&'&'532767#"'&54632#"'&27654'&#"  '&'&'&5476767̆mo5885om4mo5885om=|m@??@ml@@@@J\|~}~~}>@@>}~~}> =+8Ca  76767654'&'&'"32654'.  7!5##7  '&'&'&5476767̆mo5885om4mo5885omT,+VUVV++2QPPQΠP3x\|~-,g#&%q @>}~~}>@@>}~~}> = (!5!#%  '&'&'&5476767{\|~}~~}>@@>}~~}> =#A676767654'&#"67632!5  '&'&'&5476767lkIonFa`TULkCBN)\\|~}~~}>@@>}~~}> =1O>54'&#"67632+32#"&'327654'&  '&'&'&5476767irklGPQ\\LLBz??xJJPOWDUPOLyzAB2\|~}~~}>@@>}~~}> = +! !335#$  '&'&'&5476767hno\|~}~~}>@@>}~~}> =!?67632#"'&'32654'&#"!5  '&'&'&5476767CA@AVMLHSKtu#$##\|~}~~}>@@>}~~}> =,J2#"&5476.#"32654'&#"67632  '&'&'&5476767Pm@??@ml@@C|=⇆nmϵihVGG/ TU<|=\|~}~~}>@@>}~~}> =$!35$  '&'&'&5476767>h\|~}~~}>@@>}~~}> = $0N2"'&476' 654'&'>54& 74632#"&  '&'&'&5476767YtBBBCBBBB/tBAuhtt-tihvvhit0\|~lk>>>=>=EssOOgg]hh]\hh@>}~~}>@@>}~~}> =.L%3276'&#"32767#"&'"'&547632  '&'&'&5476767!C>?=ↆmmдhiVHG. TU<|=Al@@@@lm@??@\|~}~~}>@@>}~~}> = %C2#"&5476$  '!5##7  '&'&'&5476767e22dedd22TUUTBU¡\|~-/g#&%q @>}~~}>@@>}~~}>uPj !!5!!Pp#@pppt 7%FN4NGuP85 zD<22pJJt '-ZKFGNuP!!u\lE>~~>uu2"&'&'&5476?!".'&47>3!'&'&54767>2 p4, ,$ $, ,42p "2" puP8!5! %JZPJJuP8!5! %JHJJuP8 #3#3#3!!5 xx<<oJpppJJuP8 55!#3#3#3oPxx<<΄ΊXXXXuP8!!5 %JJJPD! 6>l>>PD ! DR>l>>P  BlvvuPb3!5 5!"'&'&'&u##+*15J1*+##0+*%!JJ!%*+uP847676763!5 5!"u##+*15J1*+##0+*%!JJ!%*+0!! ^r{VXeoouP855!Dq΄Ξ0uj%5!!53  !<9h9>uj%5!!53  !<9h9>+Z !73#57!!+ Id&+ъ2&+Z 5!'53#'!!!+dI|&22 !'!'!53 !Odcndh 2 3#5!7!!! ndnd;ch dd !53#'5!'! !]n2n22r-hJdc;dJdd 7!573#5!! !2+2n2nr-hLJd;cdJ<!6767632#"'&'&'! <'CZmo~yti^Z...*^Vqo~yti^?)X6nGCZ.//+]Yonzqi_X0//+]>Iʞ BP "&*.37#37#37#37#5!!!!3'#3'#3'#3'#<<< 7&#"7'7 !%*BF8WU{FC*9oX:WubP 55!5!!'!XXddPRt '327'' !!iFB*8X:*CF9XUpt>2%&#"6767&'&"67632&'&547676767tBEHY'#&N'$X$)./,0+""" /%Hp*G&/$##*0,0.+"W!'&'&#'ZGGCuaP/4767!"!47676763"'&'&'&5!3!&'&5P%T)#$"/*11*/"X$#)%eeZ'&$(0+.!"-+0($&'Zet2&'&'&'&54767#"'&'2767&'&'32t)H% X"""+0,0-+"$'N&#/'YHEBCGGZ'!&'&'$W"+.0,0*##"/&GsPX+B6%"'&'&'&547676$47676762"'&'&'&'&'&547676762$/+z > _$#R#af#R#) >xbQu R$'68"   vc<.676767632#"'&'&'&%&'&54767&'&5476A ''+/54<3o8n23'9%%bb%&:?$ fLLf#&#/:&'+-23-+'rr'+-32-+V2e"'&'.54?654'&'&'&#!"#!".4?64/&4676763!23!276767654/&546767622 Z rrd Z   c     c  2g"'&'.54?654'&'&'&+"#!".4764'&4676763!2;276767654/&546767622pW\xj  \W    4  uP^+#76767&'&/3#6767!5!!5!&'&'PSJl R&GG&R lHSi*n: :n**OUä'66'U=;JHd)))dHJ;=#u ! ! j.u-1- [h \& [ [T& \ \T,X@ ,,X  ,,X@' , ,,X ,,X@' , ,,X ' , ,,X@' ,' , ,@ ,@' , ,@' , ,@' ,' , ,@' , ,@' ,' , ,@' ,' , ,@' ,' ,' ,   ,@' , , ' , ,@' ,' , , ' , ,@' ,' , , ' ,' , ,@' ,' ,' , @'  ,@' ,'  ,@' ,'  ,@' ,' ,'  ,@' ,'  ,@' ,' ,'  ,@' ,' ,'  ,@' ,' ,' ,'   ,@' , , ' , ,@' ,' , ,' , ,@' ,' , , ' ,' , ,@' ,' ,' , @'  ,@' ,'  ,@' ,'  ,@' ,' ,'  ,@' ,'  ,@' ,' ,'  ,@' ,' ,'  ,@' ,' ,' ,'   '  ,@' ,'  , ' ,'  ,@' ,' ,'  , ' ,'  ,@' ,' ,'  , ' ,' ,'  ,@' ,' ,' ,'  @' '  ,@' ,' '  ,@' ,' '  ,@' ,' ,' '  ,@' ,' '  ,@' ,' ,' '  ,@' ,' ,' '  ,@' ,' ,' ,' '  ,pX ,p,pX@' , ,p,pX ' , ,p,pX@' ,' , ,p,pX' , ,p,pX@' ,' , ,p,pX ' ,' , ,p,pX@' ,' ,' , ,p,p@'  ,p,p@' ,'  ,p,p@' ,'  ,p,p@' ,' ,'  ,p,p@' ,'  ,p,p@' ,' ,'  ,p,p@' ,' ,'  ,p,p@' ,' ,' ,'  ,p,p '  ,p,p@' ,'  ,p,p ' ,'  ,p,p@' ,' ,'  ,p,p ' ,'  ,p,p@' ,' ,'  ,p,p ' ,' ,'  ,p,p@' ,' ,' ,'  ,p,p@' '  ,p,p@' ,' '  ,p,p@' ,' '  ,p,p@' ,' ,' '  ,p,p@' ,' '  ,p,p@' ,' ,' '  ,p,p@' ,' ,' '  ,p,p@' ,' ,' ,' '  ,p,p'  ,p,p@' ,'  ,p,p ' ,'  ,p,p@' ,' ,'  ,p,p' ,'  ,p,p@' ,' ,'  ,p,p ' ,' ,'  ,p,p@' ,' ,' ,'  ,p,p@' '  ,p,p@' ,' '  ,p,p@' ,' '  ,p,p@' ,' ,' '  ,p,p@' ,' '  ,p,p@' ,' ,' '  ,p,p@' ,' ,' '  ,p,p@' ,' ,' ,' '  ,p,p ' '  ,p,p@' ,' '  ,p,p ' ,' '  ,p,p@' ,' ,' '  ,p,p ' ,' '  ,p,p@' ,' ,' '  ,p,p ' ,' ,' '  ,p,p@' ,' ,' ,' '  ,p,p@' ' '  ,p,p@' ,' ' '  ,p,p@' ,' ' '  ,p,p@' ,' ,' ' '  ,p,p@' ,' ' '  ,p,p@' ,' ,' ' '  ,p,p@' ,' ,' ' '  ,p,p@' ,' ,' ,' ' '  ,pp p,p@' , p,p ' , p,p@' ,' , p,p' , p,p@' ,' , p,p ' ,' , p,p@' ,' ,' , pp@'  p,p@' ,'  p,p@' ,'  p,p@' ,' ,'  p,p@' ,'  p,p@' ,' ,'  p,p@' ,' ,'  p,p@' ,' ,' ,'  pp '  p,p@' ,'  p,p ' ,'  p,p@' ,' ,'  p,p ' ,'  p,p@' ,' ,'  p,p ' ,' ,'  p,p@' ,' ,' ,'  pp@' '  p,p@' ,' '  p,p@' ,' '  p,p@' ,' ,' '  p,p@' ,' '  p,p@' ,' ,' '  p,p@' ,' ,' '  p,p@' ,' ,' ,' '  pp'  p,p@' ,'  p,p ' ,'  p,p@' ,' ,'  p,p' ,'  p,p@' ,' ,'  p,p ' ,' ,'  p,p@' ,' ,' ,'  pp@' '  p,p@' ,' '  p,p@' ,' '  p,p@' ,' ,' '  p,p@' ,' '  p,p@' ,' ,' '  p,p@' ,' ,' '  p,p@' ,' ,' ,' '  pp ' '  p,p@' ,' '  p,p ' ,' '  p,p@' ,' ,' '  p,p ' ,' '  p,p@' ,' ,' '  p,p ' ,' ,' '  p,p@' ,' ,' ,' '  pp@' ' '  p,p@' ,' ' '  p,p@' ,' ' '  p,p@' ,' ,' ' '  p,p@' ,' ' '  p,p@' ,' ,' ' '  p,p@' ,' ,' ' '  p,p@' ,' ,' ,' ' '  p,p' ,p p,p@' ,' ,p p,p ' ,' ,p p,p@' ,' ,' ,p p,p' ,' ,p p,p@' ,' ,' ,p p,p ' ,' ,' ,p p,p@' ,' ,' ,' ,p p,p@' ' ,p p,p@' ,' ' ,p p,p@' ,' ' ,p p,p@' ,' ,' ' ,p p,p@' ,' ' ,p p,p@' ,' ,' ' ,p p,p@' ,' ,' ' ,p p,p@' ,' ,' ,' ' ,p p,p ' ' ,p p,p@' ,' ' ,p p,p ' ,' ' ,p p,p@' ,' ,' ' ,p p,p ' ,' ' ,p p,p@' ,' ,' ' ,p p,p ' ,' ,' ' ,p p,p@' ,' ,' ,' ' ,p p,p@' ' ' ,p p,p@' ,' ' ' ,p p,p@' ,' ' ' ,p p,p@' ,' ,' ' ' ,p p,p@' ,' ' ' ,p p,p@' ,' ,' ' ' ,p p,p@' ,' ,' ' ' ,p p,p@' ,' ,' ,' ' ' ,p p,p' ' ,p p,p@' ,' ' ,p p,p ' ,' ' ,p p,p@' ,' ,' ' ,p p,p' ,' ' ,p p,p@' ,' ,' ' ,p p,p ' ,' ,' ' ,p p,p@' ,' ,' ,' ' ,p p,p@' ' ' ,p p,p@' ,' ' ' ,p p,p@' ,' ' ' ,p p,p@' ,' ,' ' ' ,p p,p@' ,' ' ' ,p p,p@' ,' ,' ' ' ,p p,p@' ,' ,' ' ' ,p p,p@' ,' ,' ,' ' ' ,p p,p ' ' ' ,p p,p@' ,' ' ' ,p p,p ' ,' ' ' ,p p,p@' ,' ,' ' ' ,p p,p ' ,' ' ' ,p p,p@' ,' ,' ' ' ,p p,p ' ,' ,' ' ' ,p p,p@' ,' ,' ,' ' ' ,p p,p@' ' ' ' ,p p,p@' ,' ' ' ' ,p p,p@' ,' ' ' ' ,p p,p@' ,' ,' ' ' ' ,p p,p@' ,' ' ' ' ,p p,p@' ,' ,' ' ' ' ,p p,p@' ,' ,' ' ' ' ,p p,p@' ,' ,' ,' ' ' ' ,p p2  5 1Vd22h' %#3 5' :' 73 ٪L^8bb:'B 7''ٛ>PNq'B '''ٛ>PNq^D'B ''>PN'B%  '''tNP'B5  5''bNP#u  u-:k7!!  767654'&'$  $'&'&547676h08rtrrtr@rtrrtr VGFFGrGFFG;:rs죟sr:;;:rssr:Ŭɪ:k3?  767654'&'$  $'&'&547676!!#!5!rtrrtr@rtrrtr VGFFGrGFFGssB;:rs죟sr:;;:rssr:ŬɪKss:k3?  767654'&'$  $'&'&547676   ' rtrrtr@rtrrtr VGFFGrGFFG]x3w32x3B;:rs죟sr:;;:rssr:Ŭɪ3x23w3x/ i'J'%&otL#5!676&'&!!'&'&'77SOJMG79G!SOJMG79G , FCD4 MFCD4tL+5!676&'&!!!!'&'&'77!5!7$SOJMG79G SOJMG79G @FCD4٨FCD4ΪtL#%'&'&'775%676&'&oCSOJMG79GJSOJMG79GmFCD4FCD4tL09%'&'&'77&'&54767676&'&&'67'WSOJMG79G]InoSuSOJMG79GIq(P >6=,HK%FCD41IosV='73'64D#'SOJMG79F F25f'&1,SOJMG69G+4$(']H6H\GLCD55FCD4M 25DCL802&&FCD4x$'a8]HH]tL#''&'767!!67&'&'&!!3#G96GMBWS _ F97GMJOS[n-< JFD 4DCFRtL15''&'76767654'&'67&'&'&63#cMGEBo6( F97GMJOSsVnnBcG97GMJOS:&B=tkDBJ4DCFBUo|K*4DCG=~tLp9=767654'&676&'&632#"''&'&'773#"ofdKHGEkyJ?*UOJMG79G;DblmoWISOJMG79G-k6HFgjJG*$Q]GCD4ozlo!FCD43>'tL=A654'&#"32676&'&'&'&'77&'&547673#HGCljHHHGkbSOJMG79GcBnnVsSOJMG79G]InoSu'EgjJEHIhgHHGCD4K|oUFCD41IosVtL#'+7!676&'&!!'&'&'773!#3;SOJMG79GSWBKI69G ūIFCD4ޥFJ Vy4--SOJMG79G-A 4yhT+FCD4Ea8J'JFCD42PtL3'&'&'77&'&53676&'&67653jVDwSOJMG79G\?Vy4.+SOJMG79G*> 4yriRFCD4LFaIȢJ(FCD41P8/)!526732#"&'.#" #"&54632j Pd@7*8  kOeD=!0 l9TA6?&#Hn!bSA8?S/b)5!26732#"&'.#" #"&54632kj Pd@7*8  kOeD=!0 bl9TA6?&#Hn!bSA8?S 5 5FѶeѦ 5 5FѶeѦ& ~|/& |'& ~|'& |& ~|/ & |N;B%#"'&'&'&#"5>32326#"'&'&'&#"5>32326 5jbn ^Xbh`n ^Vhjbn ^Xbh`n ^Vg@PNE;=LTNE;=KPD:32326#"'&'&'&#"5>3232655jbn ^Xbh`n ^Vhjbn ^Xbh`n ^VePNE;=LTNE;=KPD:327&#"56767326 5jbDS4WVhjbm\Y@/Xbh`ES3VXbhZmMp[Y@1Vg@PD4KUNE;@LTNE4LRN"*,@J^po_N5<#"'3267#"/'7&#"5>327&#"5>32732655jbDS4WVhjbm\Y@/Xbh`ES3VXbh`n[Y@1VePD4KUNE;@LTNE4LRND:@J^T 5!5!-5 !5!uu/0\^ҲЪ~T -55!55!usҲЪ᪪/0N%#"/&'&#"5>32326!! 5jan^Xbh`n^Vf@PD:32326!!55jan^Xbh`n^VfPD:323265-5ian^Xbian^VgsuOE;=LSNE; =KJ/0:ҲЪ !(#"/&'&#"5>32326-5 5ian^Xbian^VeuOE;=LSNE; =KJҲЪ/0, -55!55!us%ҲЪ᪪(/0٪, 5!5!-5 !5!uu%/0\~ҲЪ^6 5 5 -55uu/0V/ҲЪа/6 -555 5uuҲЪ۰/'/0K/& 55p/ѦѶ& 5 5p/om//&& |/&& |{ 5!5 5!@Ѫop9{ !5! 5 !5!@Ѫ555@pNpop 55 5@p pU)$.#"#"&'532767676325hV^ n`hbX^ nbj@TL>֪VJ<:DNTL<:DNDop%,5!5!.#"#"&'53276767632 5hV^ n`hbX^ nbj@>֪VJ<:DNTL<:DNDf $!!!5!676762!!&'&'&!!C.8d 6WYYV7 e8-;Z{+DD\93[2332[0<[EC,W7!!%5$$}y]]x|W%!!%5$$}y]]x|W !!'7!5!%5$ZZ N$}qPP]]x|W !!'7!5!55%$ZZ N}$qPP|]] K75!5!%5$!:[]3֪k-QtXVv K75!5!55$%$][:!3֪kVXQ-qK!5!7!5!7!!!!'%5$&`ȉ)P"_=6!:[]ss1st-QtXVvqK!5!7!5!7!!!!'55$%$&`ȉ)P"_=6][:!ss1stVXQ-y;F#"'&'&'&#"5>76326#"'&'&'&#"5>327>%5$ian ^Xbib` ^Vgian ^Xbian OOg!:[](NE;=LTN9 A=KOE;=LSNE;CE-QtXVvy;F#"'&'&'&#"5>76326#"'&'&'&#"5>327>55$%$ian ^Xbib` ^Vgian ^Xbian OOe][:!(NE;=LTN9 A=KOE;=LSNE;CEVXQ-6A#"'3267#"/'7&#"5>327&#"56767326%5$jbDS4WVhjbm\Y@/Xbh`ES3VXbhZmMp[Y@1Vg!:[]$PD4KUNE;@LTNE4LRN"*,@J-QtXVv6A#"'3267#"/'7&#"5>327&#"5676732655$%$jbDS4WVhjbm\Y@/Xbh`ES3VXbhZmMp[Y@1Ve][:!$PD4KUNE;@LTNE4LRN"*,@JVXQ-7 5@pppo%5555òi%!%!!W7 r%!!!W7 %!!,7r32Zʍ &}[Z!_ &}[, %$R/ %$R6!2+##7332676'&+!Zjk++uʽ(>?)[qrqqϐђIIА^f*#&'&+;#"&! %327676'&+=/-(~u.;=HDh01KKm؍]]=CDBC &+4;#7 ''7&7676;7&'&#"76763273763276? =}!RhgPQ*$) F`_`]!mcbZaP#B9p5cqr#e9`f01<}NV{`` E.'rOs+Ax.ml) 3{ 2B333#;#"'&'##73=0.ҡW(>!#6'&#"#3>323#踃./|hi {/wVuLL-fUOO__edwxLW >33 3###mHvU782kiEL# !!#!7!#m_>=g՚oAc` !!#!7!j lS7} Qe`R%P%63#76?676#"<]5ʌQd&5A -M21]@/2UPn44%8!#3!j""w9T`!#3!dڸZW`3_h '"27676'&'2#"'&7673A^th+'?4aj51Ƿhj57~ FIn$&?8q;ˑRh]p[mNssg.[   73#7# !2|o*ogr--gE:E^+焀^f##.+;#"&! 326&#=_%~u-xxf&Q?!M5*g3{~hb–m؍Op #3632'&"}èm1-R=``Te^7/" 6764'&!!"32 '&5477&547>''?(''@(`lH5 jGAeMHsLHu5 2/hN\ƝhN\MD|%@'  &K TK T[K T[K T[KT[KT[KT[KT[X8Y1@ o}%\~ /<<2<<220@$    <9<9#"!!#!##737676;#"!76763c\/Ѿ$hgc\$hgPhc//яNUVPhcNUV!@ (% K TK T[K T[K T[KT[KT[KT[KT[X8Y1@o c}\~ /<<<20@"    <9@o_]3#'#"!#!##7376763h-hd[۹&_`Oic.яNPP!@%K TK T[K T[K T[KT[KT[KT[KT[X8Y1@ o }\ ~ /<22990@!   9@_]!#!"!!##737>%ѹd[/Ѿ&{Oic/яNǟ+/@,1.(-%&"0K TK T[K T[K T[KT[KT[KT[KT[X"8Y1@ $o%/c},+\%~"/<<<<2<<220@6,-/.-. #&!"&"<9<9@1o1_1]#"!767676;#"!#!#!##73767633#c..$h!+Vc..ٹ$hg-((hcNU'((hc//яNUV'@ ) %"(K TK T[K T[K T[KT[KT[KT[KT[X8Y1@ o!} '\!~/<<<2<<220@+  ""<9<9@)_)]#"!76763!#!"!!#!##7376763c\$hgҹc\/Ѿ$hgPhcNUV{Phc//яNUVm57654'&+"##737676;2!!;#"'&547#7e"c/.$hhF- {v sA)v`c+!-(((h=яNUVV6c5BNA+0'P1b=Q`l&'&#"#"'&'732767654'&/&'&547676326767632!!;#"'&547#737654'&"!NFPFuGC *=D1`X^e%\^]aOO%=>+ uHKnlM8{v sA)v.CE?= ?+*'W ,$!+L7V"&[[#5-,Q1#*$J5Q!&NV _]_D] #LA+0'P1b=Q`N. 210@+TL!%%#3>3237>?>54&#" 1ˬ%hP`mDTjoN8ThykjL6>BGVL9jFY\^{\^BTbg8Lf3#Ǯfo@99991<20@"@@@@PPPPOOOO____]]KTKT[KT[K T[X@878YKTKT[X@878YKTKT[X@878Y3#%3#)&µ10@   ]K TK T[K T[KT[X@878Y@ ]K TX@878Y@(**)66GGWW //]]KTX@878Y@ff]3#͞Ln@ W W91<<9990KTKT[X@878YKTK T[X@878Y/&#"#>3232673#"&#+&"6}#{U#=$ &'9 }!}\79 32mn 6.mn910K TX@878Y@ //]]KTX@878YK TKT[X@878Y@ tt]#R@ 91<90K TK T[K T[K T[X@878Y@     ]KTX@878YKTKT[X@878Y3#'#Xמї c@ 91290@//// ]K TX@878YKTX@878Y#373՞ї  #.#"#>32w NLVlw"y=67Tt+B#tF_brG\+>>+V##Af33#SMP<<;MVWVF^7v^?l:wq -<*.O1 1 f}7] ^ s3 ~nuu R3}32uu.M;Ph}T =8AQd,`_[}_\kK;QKdD<HSFyyqhd `_%.c sC/":P:7ef^ey"x:z~r=ly}7u8y7{7L]\7?7y778LR878XLf{L\7F\XO txkF\:SOZTtQxRxvB^p!akGGyqk^kq~RrG\qO6L07GG,xJYF[U7~$C^?JmOf^9L]`Y7V85V77Ju8] \7\7\\8Jj882Wy}8}7u8@7!88877LR87VX2o{6W|8W8}8BT@M4M^5A3M3MM M;M^;Mf^_riRMiQMMd T^^'O4Mda+9H9H980MOM3M;ixJq*d`JBT ~D G7OL77OSLGyL]^@R@R&E`^xJqxJq^f^ ~XX8AO}8O74/7,u8H!A?Wm=7M=7HjtWIo7O8O^\6ZVf^;l{ytl|||HoS>oS>\75=7M7IO7IO|7 O9HyTyTT7^LTXLTX5!AT/83M83MLR^L]_L]_d 222|uWh8QM}H8 J-6/n/;O3\Ga/iLSO= bnf^S>9)( M] M3M]fyyy/X2 3T2$ru.././<.|.|UN..Y...< ..;S|"/";>=/@m">'V>V:6/>Mn%h 7ENO=O'O^m\?=Z;aVc7 W*STn%7=ZVc7 W*ST&.9>> >EO&_4>N=o&`  13NwINE3O>O=K}\VTYB_@`V~#O6yT}7J}7J}7JVf^)7^)7^)7^)7Z)7(7^7^7L7^7^73\B7H7H7H^b7H\9D\79H?7H?7H?7Hu79u79u79eu797H7H7H7H7H7H7HLR^LR^LR^LR^777JH7J7J7JC + + + + +X#X#X#E-#wuv:pwuwuyy{{{3{3{3H#TyTyTyTyTyTyTyTyTyTyTyTyT7^7^7^7^7^7^7^7^\79H\9LR^LR^LR^LR^LR^LR^LR^NFcNFcNFcNFcNFcwuwurwrwrwrwrwF\F\F\F\F\F\F\F\yyi'Ai SOSOSOSOSOSOki0klttttttttki7khxxxLidxx kik^^^^^^okikkkkkkkkkE.qqqqqqqqk ]ik_F\F\SOcOt<thx^^kkqqF\F\F\F\F\F\F\F\yyi'Ai LLLLLLLLki7khxqqqqqqqqk ]ik_F\F\F\F\F\F\F\yyyPyLL<LtLpxr7xxxxx\7\7D~'kkkk!!kkr{yyqqqqqalV\\ R% %%%V33U )) 33?nn=}VR`Bn=n=nHNt<iajyl5Fn%5T55L55/5C999f165555555555999f"/V>O=8V:eVVA1MN *7:X^?7X .`7B~1N!$=4#],.B.8HHjNh8Rn8LtSWv,(B'C?7y}7hg A)|b=88|dWZ[O=vJJ!T!\777b7ya W7{w u7V)779HHH~H} ]H9Hf^^H b)7 bedud    du,dudududvdvdd*ZZd-Opdduudwddxvxddddudud  dududuku7^H^^^@^^^uzz^uwududdud7u7y#hZZ,dVD===j,ff+/P/u/+tPtut+t+t+tyyy``**yyay*ZZ a aWWd++* x +5,,,,,,,,,,''''''''''''''''''''''q''''''''''llgg'''''''''''''''''pprppppppppp7p7T''''''3'''ppppp'''',h,d,,,,+,}}_}} ,,,B,d,,,,,,,,,,},,,dZd2E\,,,,,,,,,,,,,,,,,,,,,,,S,,,,,],,,,,m,,E,,,,A,,,U,,Q,0,,,U,,L,0,C,,X,,B,,X,,,x, ,,,,,,,,,,,,,,1k|[L~TexVLeEGb  gT VIVVx+5X3ppppR >pTVSTWW0V000002p@TTTTpnnTVaaTT,f,z,z,z,z,xNNx>NnX~#9Uwlf,,,,,,,,,,                    uuuuuuuuuuuuuu++<uususs,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::: /+t+t+t+t+t+t+t+t+t+t++t+t+t+/+/''''u9u6^#2W>?W>{3P<8TG_@[^7++}m4oLR1E^_xexexxexexexex@xex@xx@xKxxKxux~x~x~xK, 9z l7k9:;?@ABCDEGdI JxKLLN4NNOTPxQ\RtSTULVW4X8XXY ZlZ[ [\]^D_\``P`albbbbbd d$d<dTdldefggg0gHg`gxggghhhhiii0ikkkkll,lnnnnno o$qq,qDq\qtqqqqqsDs\stsssst0uuuvvv4wtwwwwwxxx4xLxdx|xxxxxy yzzzzz{{{0{H{`{x{{{{{|| |8|P|h}\~l~~~~~~,D(@Xp0ph 8@4Ld| $<Tl4Ld| $<Tl,DL,0@8p\p T,`4(@HLx( T0$pdddd`L\t4Ld| $<Tl $<T $<Tl,D4Ld,D\t4Ld| $<Tl< (< L0H`xLL@xPPH8Ì Āt08Ǩ@lʘ ˄4DͤHΔHPXѬ$Ҵ,`(hl֠׀״,ؘTdٰdڴ h۰ ܘTݨ t0߀x HtH$lxl`$XHH HTDTd$d l$@Pl8L`tpX8\0\p0DXl(Hd0L`t0p<p 4|  <      $ 8 h   P l       $ P |     TH\ $<L 0Lh 0`p$4Xhx 0@`(@XptLDT0@\T      !!"D"""#t#$%%|%&x&''h'((|)T)*X*+T,P,-P../p0 0d01<1112\23D3T3d3t334444445p55666(6867$7777888p88999t9:0:H:::::;,;<;L;\;<0<@>|? ??@@@@A<ALAB BTBlBBC,CdCtCCCCCDDEEHEEFF0FFGdGGHHHII I0IHIXIJ4JJJJK(KKLdLM`MN$NpNO<OP$PQ8RLS\SlS|STTPTUU U0U@VPWTWlWXdXY`YZ0Z[[D[l[\\]l]^X^_T___` `aadaaab<bbc clccd<ddee@ef,ggh h$hXhhhiiTiij,jpjkklkll$lmPmpmmmmn<nooToop8ppq qpqqqrrr0r@rPrhrrrrrrsss0s@sPshssssssttt0tHt`txtttttuu uPuuuvvxw(wxyXyz{{{|| |0|}}} }X}~t~L@P`p@DT lHXhx0@ tL0dL|8(d|4$`L h\  tL4H\pt xlD(htP,\t0`0T,(@Xt4Ld| $<`(@Xp4Pl4Lh,D\t4Ld|(@Xp4Xx 8Pl,D\t 8Ph(@Xp4Ld| $<Tl,D\t4Ph(@Xp0H`x$<Xp4Ld0H`x¨ $<TlÄÜô0HdĀĘİ(@\xŔŬ,D\tƌƤ,Hdǀǘǰ(@\xȔȬ4Ld|ɔɬ,H`xʐʨ$<Xtˌˤ˼4Lh̸̜̄ $4L\ẗ́ͬ͜$<Tl΄Μδ,D\tόϤϼ4Ld|ДЬ $<TlфќѴ,D\tҌҤҼ4Ld|ӔӤӼ0H`xԐԨ4Ld|Քլռ8Hd|֔֬4Ld|טר,D\tؐؠؼxوټ$Xpڈxݐ$\ 8`$p(Hl(DLx,H <P8@p@hx|d0Lt<Pdx,@Th|H l|0x4<\ @h (P Tdl4 | 0  h h ,48hd<tP(4Tt4Tt,<Tt ,<Ld $4Ll|8 4 !"#$$8$h$$%0%&&''d''(D((()4)**+X,-0--..H.../(/0,0h01|2$2H2p2223343X3t3334<44455l56T6677T78 8L889 9L99:D::;<;;<>T>??@@T@@A8BB0BBCCxCD,DDEETEEFFG<GHHHxHIIJ<JK8K`KKL`LLM\MNNPNdNNOOPdQ,QLQpRRRSPSxT<ThTTUUUUVXYZ[\|\\\] ]$]X]]^^h^_4_``a$abcTdde`eftfgg g@g`gghhlhhi8iijk4klLllm$mn@nno0oop pqqhqr(rsstDtu<uvvvw w`wx@xy@yyz<z{{h{|4|} }}~~`~ 4X$d`4hPPH|$hPx Dx 4DT Lx Dx@(`0LH,`xP0 h@t8\l,Px<t(LhLh,Ht  Ĕh|ɘɴ$@\xʔʰ 4͔̀ͨ <Xl΄Πμ<TϬ HX4`|ԨD`Ոդ0\x֤4P|ט ,`ؤ4وۜXܔDݜ`ް<ߴ\THt,x8x888`$@h4 (\`8tt L   | 0xt\<`t!!"$+,./0126t9:<====>>8>X>x>@B$DHEGHIKMdNOPQS UPV\WXY\[]x_,`abcdeh@khmlort0w(xz<{p|}~(x\<x,p\T(P`x, X4|Pxt8PDhl0$dx,Tl8X$´@˜̼ϔ Hӌ(ڤLހ0xD P\P@|Px 4x<` d |8,\  p4T4 P !(!!"\"x"""#<#$X%T&&'P'()*@**+(+P+|+++,$,P,|,-P-.x/0@1X23`57889:;<>?<@A`BCD\E(FFGlHPHIJKKKLL4LdMM0MXMNN(NXNNNOPO|OOP<PPQ,Q|QR,RSDSST<TU|V$WWXZZZZZ[[([([<[P[l[[[[[\ \(\L\h\\\\] ](]L]h]]]]^^@^l^^^__0_L_h____``8`\````a(a\axaaabb<bhbbbccLcxccdd0dLdhddddee8e\eeeef(f\fxfffgg<ghggghhLhxhhii8i\iiiij(j\jjjk k8klkkll,lXlllm m\mmmn,n`nnoo0oLohoooopp8p\ppppq(q\qxqqqrr<rhrrrssLsxsstt8t\ttttu(u\uuuv v8vlvvww,wXwwwx x\xxxy,y`yyzz8z\zzzz{({\{{{| |8|l||}},}X}}}~ ~\~~~,`@l,`0l\,`P HhHpp0dL(h$`(h,L,<(XD$ Ph,LX(t@h($lHx@pPlxt0d,DP|¨DØô$@\xĔİ <XtŐŬ@p b+@   &x`$$r&&tDDvFFxHHzLL|RQ~VVXX\\            ! "# $%& '(   "$&(*,.02468?E?*??U?V?W?X?U?^?a?b?]?g?h?i?e?l?q?r?s?t?q?o?V???{?? #!:0*ln p))rQQtrrv~~xz|++..     ` `"$?N?N?O?O?P?Q?Q ?R ?8?9?.??ʿ?????? vqjz' ,-/0Tz 0`$$b)(d0/h75l;;rDDtFFvIIxLLzOO|RR~XV         `??ݿ??տ?????????ǿ?ƿ?ο??ѿ??Կ?ȿ  >n "" ???5BA@8T. $&==6     !"#$%&'()*+,-./012 ` `"%(+.1 47:=@C FILORUX[?ÿ??ƿ??ɿ??̿??Ͽ??ҿ??տ   ?? ? ?#?&&,)(/,(2/.? 11843?64?99A<:D?=?@@JC ~~72 ; $ r (4;<  < <<=L=><" < <<=]=>!<; <==p=>/<]<='= =>@S 0   & .O  * " :6 %: h;jCopyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain DejaVu LGC SansDejaVu LGC SansObliqueObliqueDejaVu Sans ObliqueDejaVu Sans ObliqueDejaVu LGC Sans ObliqueDejaVu LGC Sans ObliqueVersion 2.10Version 2.10DejaVuLGCSans-ObliqueDejaVuLGCSans-ObliqueDejaVu fonts teamDejaVu fonts teamhttp://dejavu.sourceforge.nethttp://dejavu.sourceforge.netFonts are (c) Bitstream (see below). DejaVu changes are in public domain. Glyphs imported from Arev fonts are (c) Tavmjung Bah (see below) Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Arev Fonts Copyright ------------------------------ Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the modifications to the Bitstream Vera Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Tavmjong Bah" or the word "Arev". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Tavmjong Bah Arev" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the name of Tavmjong Bah shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from Tavmjong Bah. For further information, contact: tavmjong @ free . fr.Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Glyphs imported from Arev fonts are (c) Tavmjung Bah (see below) Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Arev Fonts Copyright ------------------------------ Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the modifications to the Bitstream Vera Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Tavmjong Bah" or the word "Arev". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Tavmjong Bah Arev" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the name of Tavmjong Bah shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from Tavmjong Bah. For further information, contact: tavmjong @ free . fr.http://dejavu.sourceforge.net/wiki/index.php/Licensehttp://dejavu.sourceforge.net/wiki/index.php/LicenseAll Typographic FeaturesFonctions typographiquesAlle typografischen MglichkeitenFunzioni TipograficheAlle typografische kenmerkenLigaturesLigaturesLigaturenLegatureLigaturenFractionsFractionsBreukenAll Type FeaturesToutes fonctions typographiquesAlle AuszeichnungsartenTutte le FunzioniAlle typekenmerkenCommon LigaturesLigatures UsuellesNormale LigaturenLegature pi ComuniGemeenschappelijke LigaturenRare LigaturesLigatures RaresSeltene LigaturenLegature RareZeldzame ligaturenDiagonal FractionsFractions en DiagonaleDiagonaler BruchFrazioni DiagonaliDiagonale breukenZ   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~  sfthyphenAmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandicLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongsuni0180uni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191uni0193uni0194uni0195uni0196uni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEUhornuhornuni01B1uni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BAuni01BBuni01BCuni01BDuni01BEuni01BFuni01C0uni01C1uni01C2uni01C3uni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DEuni01DFuni01E0uni01E1uni01E2uni01E3uni01E4uni01E5Gcarongcaronuni01E8uni01E9uni01EAuni01EBuni01ECuni01EDuni01EEuni01EFuni01F0uni01F1uni01F2uni01F3uni01F4uni01F5uni01F6uni01F7uni01F8uni01F9 Aringacute aringacuteAEacuteaeacute Oslashacute oslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217 Scommaaccent scommaaccentuni021Auni021Buni021Cuni021Duni021Euni021Funi0220uni0221uni0222uni0223uni0224uni0225uni0226uni0227uni0228uni0229uni022Auni022Buni022Cuni022Duni022Euni022Funi0230uni0231uni0232uni0233uni0234uni0235uni0236dotlessjuni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240uni0241uni0242uni0243uni0244uni0245uni0246uni0247uni0248uni0249uni024Auni024Buni024Cuni024Duni024Euni024Funi0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni0259uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269uni026Auni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02AEuni02AFuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02B9uni02BAuni02BB afii57929 afii64937uni02BEuni02BFuni02C0uni02C1uni02C2uni02C3uni02C4uni02C5uni02C8uni02C9uni02CAuni02CBuni02CCuni02CDuni02CEuni02CFuni02D0uni02D1uni02D2uni02D3uni02D4uni02D5uni02D6uni02D7uni02DEuni02DFuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9uni02ECuni02EDuni02EEuni02F3uni02F7 gravecomb acutecombuni0302 tildecombuni0304uni0305uni0306uni0307uni0308 hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322 dotbelowcombuni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0340uni0341uni0342uni0343uni0344uni0345uni0346uni0347uni0348uni0349uni034Auni034Buni034Cuni034Duni034Euni0351uni0357uni0358uni035Cuni035Duni0360uni0361uni0362uni0374uni0375uni037Auni037Buni037Cuni037Duni037Etonos dieresistonos Alphatonos anoteleia EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni03D0theta1Upsilon1uni03D3uni03D4phi1omega1uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03E2uni03E3uni03E4uni03E5uni03E6uni03E7uni03E8uni03E9uni03EAuni03EBuni03ECuni03EDuni03EEuni03EFuni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FAuni03FBuni03FCuni03FDuni03FEuni03FFuni0400 afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061uni040D afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097uni0450 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109uni045D afii10110 afii10193uni0460uni0461 afii10146 afii10194uni0464uni0465uni0466uni0467uni0468uni0469uni046Auni046Buni046Cuni046Duni046Euni046Funi0470uni0471 afii10147 afii10195 afii10148 afii10196uni0476uni0477uni0478uni0479uni047Auni047Buni047Cuni047Duni047Euni047Funi0480uni0481uni0482uni0483uni0484uni0485uni0486uni0488uni0489uni048Auni048Buni048Cuni048Duni048Euni048F afii10050 afii10098uni0492uni0493uni0494uni0495uni0496uni0497uni0498uni0499uni049Auni049Buni049Cuni049Duni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04A8uni04A9uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B0uni04B1uni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04B8uni04B9uni04BAuni04BBuni04BCuni04BDuni04BEuni04BFuni04C0uni04C1uni04C2uni04C3uni04C4uni04C5uni04C6uni04C7uni04C8uni04C9uni04CAuni04CBuni04CCuni04CDuni04CEuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8 afii10846uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni0500uni0501uni0502uni0503uni0504uni0505uni0506uni0507uni0508uni0509uni050Auni050Buni050Cuni050Duni050Euni050Funi0510uni0511uni1D00uni1D01uni1D02uni1D03uni1D04uni1D05uni1D06uni1D07uni1D08uni1D09uni1D0Auni1D0Buni1D0Cuni1D0Duni1D0Euni1D0Funi1D10uni1D11uni1D12uni1D13uni1D14uni1D16uni1D17uni1D18uni1D19uni1D1Auni1D1Buni1D1Cuni1D1Duni1D1Euni1D1Funi1D20uni1D21uni1D22uni1D23uni1D26uni1D27uni1D28uni1D29uni1D2Auni1D2Buni1D2Cuni1D2Duni1D2Euni1D30uni1D31uni1D32uni1D33uni1D34uni1D35uni1D36uni1D37uni1D38uni1D39uni1D3Auni1D3Buni1D3Cuni1D3Duni1D3Euni1D3Funi1D40uni1D41uni1D42uni1D43uni1D44uni1D45uni1D46uni1D47uni1D48uni1D49uni1D4Auni1D4Buni1D4Cuni1D4Duni1D4Euni1D4Funi1D50uni1D51uni1D52uni1D53uni1D54uni1D55uni1D56uni1D57uni1D58uni1D59uni1D5Auni1D5Buni1D5Cuni1D5Duni1D5Euni1D5Funi1D60uni1D61uni1D62uni1D63uni1D64uni1D65uni1D66uni1D67uni1D68uni1D69uni1D6Auni1D77uni1D78uni1D7Buni1D85uni1D9Buni1D9Cuni1D9Duni1D9Euni1D9Funi1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5uni1DA6uni1DA7uni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1uni1DB2uni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB8uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1E00uni1E01uni1E02uni1E03uni1E04uni1E05uni1E06uni1E07uni1E08uni1E09uni1E0Auni1E0Buni1E0Cuni1E0Duni1E0Euni1E0Funi1E10uni1E11uni1E12uni1E13uni1E14uni1E15uni1E16uni1E17uni1E18uni1E19uni1E1Auni1E1Buni1E1Cuni1E1Duni1E1Euni1E1Funi1E20uni1E21uni1E22uni1E23uni1E24uni1E25uni1E26uni1E27uni1E28uni1E29uni1E2Auni1E2Buni1E2Cuni1E2Duni1E2Euni1E2Funi1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Auni1E3Buni1E3Cuni1E3Duni1E3Euni1E3Funi1E40uni1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Auni1E4Buni1E4Cuni1E4Duni1E4Euni1E4Funi1E50uni1E51uni1E52uni1E53uni1E54uni1E55uni1E56uni1E57uni1E58uni1E59uni1E5Auni1E5Buni1E5Cuni1E5Duni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E64uni1E65uni1E66uni1E67uni1E68uni1E69uni1E6Auni1E6Buni1E6Cuni1E6Duni1E6Euni1E6Funi1E70uni1E71uni1E72uni1E73uni1E74uni1E75uni1E76uni1E77uni1E78uni1E79uni1E7Auni1E7Buni1E7Cuni1E7Duni1E7Euni1E7FWgravewgraveWacutewacute Wdieresis wdieresisuni1E86uni1E87uni1E88uni1E89uni1E8Auni1E8Buni1E8Cuni1E8Duni1E8Euni1E8Funi1E90uni1E91uni1E92uni1E93uni1E94uni1E95uni1E96uni1E97uni1E98uni1E99uni1E9Auni1E9Buni1EA0uni1EA1uni1EA2uni1EA3uni1EA4uni1EA5uni1EA6uni1EA7uni1EA8uni1EA9uni1EAAuni1EABuni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EBEuni1EBFuni1EC0uni1EC1uni1EC2uni1EC3uni1EC4uni1EC5uni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED0uni1ED1uni1ED2uni1ED3uni1ED4uni1ED5uni1ED6uni1ED7uni1ED8uni1ED9uni1EDAuni1EDBuni1EDCuni1EDDuni1EDEuni1EDFuni1EE0uni1EE1uni1EE2uni1EE3uni1EE4uni1EE5uni1EE6uni1EE7uni1EE8uni1EE9uni1EEAuni1EEBuni1EECuni1EEDuni1EEEuni1EEFuni1EF0uni1EF1Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni200B afii61664afii301afii299afii300uni2010uni2011 figuredash afii00208uni2016 underscoredbl quotereverseduni201Funi2023onedotenleadertwodotenleaderuni2027uni2031minuteseconduni2034uni2035uni2036uni2037uni2038uni203B exclamdbluni203Duni203Euni203Funi2040uni2041uni2042uni2043uni2045uni2046uni2047uni2048uni2049uni204Auni204Buni204Cuni204Duni204Euni204Funi2050uni2051uni2052uni2053uni2054uni2055uni2056uni2057uni2058uni2059uni205Auni205Buni205Cuni205Duni205Euni2070uni2071uni2074uni2075uni2076uni2077uni2078uni2079uni207Auni207Buni207Cuni207Duni207Euni207Funi2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089uni208Auni208Buni208Cuni208Duni208Euni2090uni2091uni2092uni2093uni2094uni20A0 colonmonetaryuni20A2lirauni20A5uni20A6pesetauni20A8uni20A9 afii57636dongEurouni20ADuni20AEuni20AFuni20B0uni20B1uni20B2uni20B3uni20B4uni20B5uni20D0uni20D1uni20D6uni20D7uni2100uni2102uni2103uni2104 afii61248uni2106uni2109uni210Duni210Euni210FIfraktur afii61289uni2115 afii61352uni2117 weierstrassuni2119uni211ARfrakturuni211D prescriptionuni2120uni2121uni2124uni2126uni2127uni212Auni212B estimateduni2132uni2134alephuni213Buni213Cuni213Duni213Euni213Funi2140uni2145uni2146uni2147uni2148uni2149uni214Bonethird twothirdsuni2155uni2156uni2157uni2158uni2159uni215A oneeighth threeeighths fiveeighths seveneighthsuni215Funi2160uni2161uni2162uni2163uni2164uni2165uni2166uni2167uni2168uni2169uni216Auni216Buni216Cuni216Duni216Euni216Funi2170uni2171uni2172uni2173uni2174uni2175uni2176uni2177uni2178uni2179uni217Auni217Buni217Cuni217Duni217Euni217Funi2180uni2181uni2182uni2183uni2184 arrowleftarrowup arrowright arrowdown arrowboth arrowupdnuni2196uni2197uni2198uni2199uni219Auni219Buni219Cuni219Duni219Euni219Funi21A0uni21A1uni21A2uni21A3uni21A4uni21A5uni21A6uni21A7 arrowupdnbseuni21A9uni21AAuni21ABuni21ACuni21ADuni21AEuni21AFuni21B0uni21B1uni21B2uni21B3uni21B4carriagereturnuni21B6uni21B7uni21B8uni21B9uni21BAuni21BBuni21BCuni21BDuni21BEuni21BFuni21C0uni21C1uni21C2uni21C3uni21C4uni21C5uni21C6uni21C7uni21C8uni21C9uni21CAuni21CBuni21CCuni21CDuni21CEuni21CF arrowdblleft arrowdblup arrowdblright arrowdbldown arrowdblbothuni21D5uni21D6uni21D7uni21D8uni21D9uni21DAuni21DBuni21DCuni21DDuni21DEuni21DFuni21E0uni21E1uni21E2uni21E3uni21E4uni21E5uni21E6uni21E7uni21E8uni21E9uni21EAuni21EBuni21ECuni21EDuni21EEuni21EFuni21F0uni21F1uni21F2uni21F3uni21F4uni21F5uni21F6uni21F7uni21F8uni21F9uni21FAuni21FBuni21FCuni21FDuni21FEuni21FF universaluni2201 existentialuni2204emptysetgradientelement notelementuni220Asuchthatuni220Cuni220Duni220Euni2210uni2213uni2214uni2216 asteriskmathuni2218uni221Buni221C proportional orthogonalangleuni2221uni2222uni2223uni2224uni2225uni2226 logicaland logicalor intersectionunionuni222Cuni222Duni222Euni222Funi2230uni2231uni2232uni2233 thereforeuni2235uni2236uni2237uni2238uni2239uni223Auni223Bsimilaruni223Duni2241uni2242uni2243uni2244 congruentuni2246uni2247uni2249uni224Auni224Buni224Cuni224Duni224Euni224Funi2250uni2251uni2252uni2253uni2254uni2255uni2256uni2257uni2258uni2259uni225Auni225Buni225Cuni225Duni225Euni225F equivalenceuni2262uni2263uni2266uni2267uni2268uni2269uni226Auni226Buni226Cuni226Duni226Euni226Funi2270uni2271uni2272uni2273uni2274uni2275uni2276uni2277uni2278uni2279uni227Auni227Buni227Cuni227Duni227Euni227Funi2280uni2281 propersubsetpropersuperset notsubsetuni2285 reflexsubsetreflexsupersetuni2288uni2289uni228Auni228Buni228Cuni228Duni228Euni228Funi2290uni2291uni2292uni2293uni2294 circleplusuni2296circlemultiplyuni2298uni2299uni229Auni229Buni229Cuni229Duni229Euni229Funi22A0uni22A1uni22A2uni22A3uni22A4 perpendicularuni22A6uni22A7uni22A8uni22A9uni22AAuni22ABuni22ACuni22ADuni22AEuni22AFuni22B2uni22B3uni22B4uni22B5uni22B6uni22B7uni22B8uni22B9uni22BAuni22BBuni22BCuni22BDuni22C0uni22C1uni22C4dotmathuni22C6uni22C8uni22C9uni22CAuni22CBuni22CCuni22CDuni22D6uni22D7uni22D8uni22D9uni22DAuni22DBuni22DCuni22DDuni22DEuni22DFuni22E0uni22E1uni22E2uni22E3uni22E4uni22E5uni22E6uni22E7uni22E8uni22E9uni22EAuni22EBuni22ECuni22EDuni22F2uni22F3uni22F4uni22F5uni22F6uni22F7uni22F8uni22F9uni22FAuni22FBuni22FCuni22FDuni22FEuni22FFhouseuni2306uni2308uni2309uni230Auni230B revlogicalnotuni2311uni2318uni2319 integraltp integralbtuni2325uni2328 angleleft anglerightuni237Duni239Buni239Cuni239Duni239Euni239Funi23A0uni23A1uni23A2uni23A3uni23A4uni23A5uni23A6uni23A7uni23A8uni23A9uni23AAuni23ABuni23ACuni23ADuni23AEuni23CFuni2422uni2423uni2460uni2461uni2462uni2463uni2464uni2465uni2466uni2467uni2468uni2469upblockuni2581uni2582uni2583dnblockuni2585uni2586uni2587blockuni2589uni258Auni258Blfblockuni258Duni258Euni258Frtblockltshadeshadedkshadeuni2594uni2595uni2596uni2597uni2598uni2599uni259Auni259Buni259Cuni259Duni259Euni259F filledboxH22073uni25A2uni25A3uni25A4uni25A5uni25A6uni25A7uni25A8uni25A9H18543H18551 filledrectuni25ADuni25AEuni25AFuni25B0uni25B1triagupuni25B3uni25B4uni25B5uni25B6uni25B7uni25B8uni25B9triagrtuni25BBtriagdnuni25BDuni25BEuni25BFuni25C0uni25C1uni25C2uni25C3triaglfuni25C5uni25C6uni25C7uni25C8uni25C9circleuni25CCuni25CDuni25CEH18533uni25D0uni25D1uni25D2uni25D3uni25D4uni25D5uni25D6uni25D7 invbullet invcircleuni25DAuni25DBuni25DCuni25DDuni25DEuni25DFuni25E0uni25E1uni25E2uni25E3uni25E4uni25E5 openbulletuni25E7uni25E8uni25E9uni25EAuni25EBuni25ECuni25EDuni25EEuni25EFuni25F0uni25F1uni25F2uni25F3uni25F4uni25F5uni25F6uni25F7uni25F8uni25F9uni25FAuni25FBuni25FCuni25FDuni25FEuni25FFuni2600uni2601uni2602uni2603uni2604uni2605uni2606uni2607uni2608uni2609uni260Auni260Buni260Cuni260Duni260Euni260Funi2610uni2611uni2612uni2613uni2614uni2615uni2616uni2617uni2618uni2619uni261Auni261Buni261Cuni261Duni261Euni261Funi2620uni2621uni2622uni2623uni2624uni2625uni2626uni2627uni2628uni2629uni262Auni262Buni262Cuni262Duni262Euni262Funi2630uni2631uni2632uni2633uni2634uni2635uni2636uni2637uni2638uni2639 smileface invsmilefacesununi263Duni263Euni263Ffemaleuni2641maleuni2643uni2644uni2645uni2646uni2647uni2648uni2649uni264Auni264Buni264Cuni264Duni264Euni264Funi2650uni2651uni2652uni2653uni2654uni2655uni2656uni2657uni2658uni2659uni265Auni265Buni265Cuni265Duni265Euni265Fspadeuni2661uni2662clubuni2664heartdiamonduni2667uni2668uni2669 musicalnotemusicalnotedbluni266Cuni266Duni266Euni266Funi2670uni2671uni2672uni2673uni2674uni2675uni2676uni2677uni2678uni2679uni267Auni267Buni267Cuni267Duni267Euni267Funi2680uni2681uni2682uni2683uni2684uni2685uni2686uni2687uni2688uni2689uni268Auni268Buni268Cuni268Duni268Euni268Funi2690uni2691uni2692uni2693uni2694uni2695uni2696uni2697uni2698uni2699uni269Auni269Buni269Cuni26A0uni26A1uni26A2uni26A3uni26A4uni26A5uni26A6uni26A7uni26A8uni26A9uni26AAuni26ABuni26ACuni26ADuni26AEuni26AFuni26B0uni26B1uni2701uni2702uni2703uni2704uni2706uni2707uni2708uni2709uni270Cuni270Duni270Euni270Funi2710uni2711uni2712uni2713uni2714uni2715uni2716uni2717uni2718uni2719uni271Auni271Buni271Cuni271Duni271Euni271Funi2720uni2721uni2722uni2723uni2724uni2725uni2726uni2727uni2729uni272Auni272Buni272Cuni272Duni272Euni272Funi2730uni2731uni2732uni2733uni2734uni2735uni2736uni2737uni2738uni2739uni273Auni273Buni273Cuni273Duni273Euni273Funi2740uni2741uni2742uni2743uni2744uni2745uni2746uni2747uni2748uni2749uni274Auni274Buni274Duni274Funi2750uni2751uni2752uni2756uni2758uni2759uni275Auni275Buni275Cuni275Duni275Euni2761uni2762uni2763uni2764uni2765uni2766uni2767uni2768uni2769uni276Auni276Buni276Cuni276Duni276Euni276Funi2770uni2771uni2772uni2773uni2774uni2775uni2776uni2777uni2778uni2779uni277Auni277Buni277Cuni277Duni277Euni277Funi2780uni2781uni2782uni2783uni2784uni2785uni2786uni2787uni2788uni2789uni278Auni278Buni278Cuni278Duni278Euni278Funi2790uni2791uni2792uni2793uni2794uni2798uni2799uni279Auni279Buni279Cuni279Duni279Euni279Funi27A0uni27A1uni27A2uni27A3uni27A4uni27A5uni27A6uni27A7uni27A8uni27A9uni27AAuni27ABuni27ACuni27ADuni27AEuni27AFuni27B1uni27B2uni27B3uni27B4uni27B5uni27B6uni27B7uni27B8uni27B9uni27BAuni27BBuni27BCuni27BDuni27BEuni27E0uni27E8uni27E9uni27EAuni27EBuni2800uni2801uni2802uni2803uni2804uni2805uni2806uni2807uni2808uni2809uni280Auni280Buni280Cuni280Duni280Euni280Funi2810uni2811uni2812uni2813uni2814uni2815uni2816uni2817uni2818uni2819uni281Auni281Buni281Cuni281Duni281Euni281Funi2820uni2821uni2822uni2823uni2824uni2825uni2826uni2827uni2828uni2829uni282Auni282Buni282Cuni282Duni282Euni282Funi2830uni2831uni2832uni2833uni2834uni2835uni2836uni2837uni2838uni2839uni283Auni283Buni283Cuni283Duni283Euni283Funi2840uni2841uni2842uni2843uni2844uni2845uni2846uni2847uni2848uni2849uni284Auni284Buni284Cuni284Duni284Euni284Funi2850uni2851uni2852uni2853uni2854uni2855uni2856uni2857uni2858uni2859uni285Auni285Buni285Cuni285Duni285Euni285Funi2860uni2861uni2862uni2863uni2864uni2865uni2866uni2867uni2868uni2869uni286Auni286Buni286Cuni286Duni286Euni286Funi2870uni2871uni2872uni2873uni2874uni2875uni2876uni2877uni2878uni2879uni287Auni287Buni287Cuni287Duni287Euni287Funi2880uni2881uni2882uni2883uni2884uni2885uni2886uni2887uni2888uni2889uni288Auni288Buni288Cuni288Duni288Euni288Funi2890uni2891uni2892uni2893uni2894uni2895uni2896uni2897uni2898uni2899uni289Auni289Buni289Cuni289Duni289Euni289Funi28A0uni28A1uni28A2uni28A3uni28A4uni28A5uni28A6uni28A7uni28A8uni28A9uni28AAuni28ABuni28ACuni28ADuni28AEuni28AFuni28B0uni28B1uni28B2uni28B3uni28B4uni28B5uni28B6uni28B7uni28B8uni28B9uni28BAuni28BBuni28BCuni28BDuni28BEuni28BFuni28C0uni28C1uni28C2uni28C3uni28C4uni28C5uni28C6uni28C7uni28C8uni28C9uni28CAuni28CBuni28CCuni28CDuni28CEuni28CFuni28D0uni28D1uni28D2uni28D3uni28D4uni28D5uni28D6uni28D7uni28D8uni28D9uni28DAuni28DBuni28DCuni28DDuni28DEuni28DFuni28E0uni28E1uni28E2uni28E3uni28E4uni28E5uni28E6uni28E7uni28E8uni28E9uni28EAuni28EBuni28ECuni28EDuni28EEuni28EFuni28F0uni28F1uni28F2uni28F3uni28F4uni28F5uni28F6uni28F7uni28F8uni28F9uni28FAuni28FBuni28FCuni28FDuni28FEuni28FFuni29CEuni29CFuni29D0uni29D1uni29D2uni29D3uni29D4uni29D5uni29EBuni2A00uni2A01uni2A02uni2A0Cuni2A0Duni2A0Euni2A0Funi2A10uni2A11uni2A12uni2A13uni2A14uni2A15uni2A16uni2A17uni2A18uni2A19uni2A1Auni2A1Buni2A1Cuni2A7Duni2A7Euni2A7Funi2A80uni2A81uni2A82uni2A83uni2A84uni2A85uni2A86uni2A87uni2A88uni2A89uni2A8Auni2A8Buni2A8Cuni2A8Duni2A8Euni2A8Funi2A90uni2A91uni2A92uni2A93uni2A94uni2A95uni2A96uni2A97uni2A98uni2A99uni2A9Auni2A9Buni2A9Cuni2A9Duni2A9Euni2A9Funi2AA0uni2AAEuni2AAFuni2AB0uni2AB1uni2AB2uni2AB3uni2AB4uni2AB5uni2AB6uni2AB7uni2AB8uni2AB9uni2ABAuni2AF9uni2AFAuni2B12uni2B13uni2B14uni2B15uni2B16uni2B17uni2B18uni2B19uni2B1Auni2C60uni2C61uni2C62uni2C63uni2C64uni2C65uni2C66uni2C67uni2C68uni2C69uni2C6Auni2C6Buni2C6Cuni2C74uni2C75uni2C76uni2C77uniF208uniF217uniF25F afii10064uniFB00uniFB03uniFB04uniFB05uniFB06uniFFFD dlLtcaronDieresisAcuteTildeGrave CircumflexCaron uni0311.caseBreve Dotaccent Hungarumlaut DoublegraveEng.altuni0268.dotlessuni029D.dotless uni03080304 uni03040308 uni03070304 uni03080301 uni03080300 uni03040301 uni03040300 uni03030304 uni0308030C uni03030308 uni030C0307 uni03030301 uni03020301 uni03020300 uni03020303 uni03060303 uni03060301 uni03060300 uni03060309 uni03020309 uni03010307 brailledotJ.altl.alt@%2s2%%:2SMAS2 }MA}G}G2~}K%}d|{zyzyx]yyxw%x]x@w%vutdsrq%rdqpq%poMAon@mlkji:jdiK%i:hN hgfg2feddMAdcba ba `_`d_^_^] \[ \[ ZMAZYXY(XWVUVUT]UUTS%T]T@S%RQP.QP.ON ON MK%MALK%LKJK%JIHGHGFEDCB}CB}A@?><6B<;:6B:S9@p8}76B6-6B543:20 /-,+-+1*))#('&'d&% %2$ $}#:#" "!!    @  @:%d%%A%:  }    :-:-  @d++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++r,       !! #" >> ?? @@ CA ^^ __ `` aa bbcc gdkh qm srutvv zx {{}  |{            }}    UU            ( -)1. 22 33 <4 ==>> ?? W@ XX_Za`bb cc dd ofqprr ss tt z          t uuvv Nw O O P P Q Q R R Z S [ [ \ \ ] ` a  ؀micropolis-activity/res/dejavu-lgc/DejaVuLGCSansMono-BoldOblique.ttf0000664000076400007640000053321410724145723025755 0ustar simcitysimcity GDEF)\,GPOScrL GSUB 6slJOS/2ߩVcmapOcvt >,8fpgmQ dgasp glyfNFV 4head9906hhea h$hmtxFh5loca2.@\maxp QGK nameVyK!post(ʮm|CprepԱ$prop˷- U cyrl $2cyrlSRB locl $33f   Pq PfEd! m`::~!%+/A?Xauz~_ [w{%9?GKW]cmqEMWY[]}  # & 1 : < > I p y !!!"!&!+!_!"" """"" "-"="i"""""## ###!#%#*#}##$#&&<&G&g&o')+ !$+-1PXatz~Cw{ $0<AJWZalp~ HPY[]_   & 0 9 < > G p t  !!!"!&!*!S!""""""""'"8"A"m""""##### #%#(#}##$#%&8&?&`&i')+~yxwigfb_][ZYC+# cHE<'&caU?3/)'%#!  B;0-*u]XTNHECaC9i .4  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}byqz#3#N#'#\ ##3##/%%1/;sqoV#d\H```{\{`o7L'5%={D=!/s, %Id@QX Y!-,%Id@QX Y!-,  P y PXY%%# P y PXY%-,KPX EDY!-,%E`D-,KSX%%EDY!!-,ED-hh@ 7/10!%!!hsr)R ]@.    49    99991/0KSX9Y"!!! # 7# f!qe@ 91<20!!!++N@3      91/<2<<22<<220#3333#3#####73#73J^^^6H6^_^_5H5^qrvuu%v'D /m@;)%%$(<54&#.'.54$?3.';Rb95HS49Ua3YWD0/GL22 ZD*9-.,=BZ(|',.! '3V@-(  (?? ?>.?%1"+1""499991/999904632#"&"32654& 4632#"&"32654&!?9PP9:OP)˹=8ON9:QRXO::OO:9PP`^P::OP99Q&0@O$%$&%%$()'/.040'$ % -<;C<BE%%!&!0$ ' !* 199999991/99990KSX999Y"%#"&547.54$32.#">73!3267VWź FA16BX^&(*0 xlsZ^^,Z.H23հi:d/#&GB"tW :][4\c910!+R7 @ G   99910 #&5789RPۏͦJ"F!qV @G  999104'3q89QQ8[%3y9TJ@(   B   <2<2991<22990 %#'-73%TJLLLLKLXXB\ #@ H   <<1<<0!!#!5!RPRPo4@4I10KSX9Y"!#:6׬o9910!!+u8\o/@4I91/0KSXY"!!NFoB3@ 49/9910KSXY"3#TmZw /@ J$J-B$E0 '010@////////// / / ?????????? ? ? D@@@@@E UPPPPPU ookkkkk k o   C////////// / /  ]]4632#"&3267654&#"#"&547>32I45JJ54IjDG@k$6ABGCj$6AfUIeSJ5HI43IGqljc\rkheI+ O@(4JJ9J   991/20KSXY"!%!!!^J3F53bL J/oc@24LK JBJ 9999991/9990KSX9Y"!!7%6754&#">32bi3K13^pcRv3me:(.RbHQ;: (*{"`(M@,M LK#M L K MBE) ) &  )999190#32654&#">32!"&'32654&4|sjSn6hXfz6`loUFL*( Ÿ$&$.0Rc` o@<      4 J9    991/<290KSXY" !!3#!!u51>?:jBj@84JLKJ J9 E  999190KSX9Y"!!>32!"&'32654&#"T+35!H)__3F_ǎzNO  (*hy(&` '8@M M L KM%BE(  (91904&#"326.#">32#"&5476$32#[Mi[Kln3?654&#">32Z 7XX]kJEYt5fhbui~`N]~C9>IH 7:_bVis ?a@4-0)? OO P,)O0P O09@? < ,- <&<3@999991999902654&#"#7#"&5432>54&#"3267# 476$32hQGgP+r<Hh |i|X[`OQ?k_XTtP-MXS]R1531/#B[kv{؛0095~D<ͨ@$ n@:      4<Q9    91/<90KSXY" !!!!!hqpq+q#@I###  # #4T T9T S"  "#$9991/90KSX9999Y"] ]32654&# 32654&#%!2#!VŜjoTDy{VZK׾LEKFVRFmjD@릤 l?C<J@UCVUCV BE  99910K TX @ 878Y%#"476$32.#"3267MUyaRM@2XP6EU~vQ^+$$nr$$DEaUkӇCI ]@+   4V 9V    9991/0KSX99Y" ]]3267654&#! #! `p+4A};%hH^?XXj%~ WqE\P U@/  4VV9 VS   91/0KSXY")!!!!!_ 3??1L{y/ P@+4VV9S   91/0KSXY"!!!!!>B3#uf&x@3#&& !"&4"##V%VUCV BE'%$#"&'991990KSX9Y"K TX'@''878Y%#"476$32.#"3267#7!FsxbQMB3QG4)E "t$?91^;@"os$$CF;9/~MbN# @?     4VS9   91/<20KSXY"P]@ PPPPP]!!!!!!'oqn'ف9+h J@&  4V9 V    991/220KSXY"!!!!! 3y3׼)43)3R@+  4 UCVV 9E  991990KSX9Y"'3267!!#"&ANgtq4!RCCqoNX`_l 7785X w@B      49   91/<290KSXY"!! !!'l3\R_- P!6@4V991/0KSXY"3!!P#'w3/  @I     4 9   991/<290KSXY"K TK T[X @ 878Y@>  /////   '//)/;8]]!!## #a1)h/q+qR @:  49  9991/<2990KSXY"(]@*5(*'%300005QWPPWPWPW]]!!! ! /=+==)P@V'VB'E*! *10@+0044553300000000 0!0"0#0$0%]4&#"3267>7>47>32#"&dPQ;d$+PQ;c%-dUMbTNxxGE'\sKxvGE,Ss ck@;    4TT 9   9991/0KSX999Y"32654&#%!2+!)Th}I:N蹤mJ[MrB[Q=-|@%VV BE." " ".99991990@A000 0 0 00000000005553$3%3&0'0(0)0*0+0,0- ]#"&547>324&#"3267>7>cTNaU#iIӛPQ;d$+PQ;c%-]Bn/xxGE'\sKxvGE,Ss@Q       4T T9    999991/<9990KSX999Y"(](]!&'&+!!232654&#=Dj5ius#ZP{\\ HWx կi|NM'@;'''4 ' UC!V U C VBE('$ $(99991990KSX99Y"   ]@    ( ]]@() ( ( 9 9 9 I I I Y Y Y h h h y y y ( ]].54!2.#"!"&'32654&'|Cg[9Dovtn|;akFEP~))>?qXTS3A451QUud>[}@4V9991/20KSXY"K TKT[KT[KT[KT[KT[X@878Y@ ])!!!j1#3-s@=   4  VE9 9991299990KSX99Y"!3267!#"&546D'\Tl'#P?L} '/RZz|R?JNƷ*d-F@#4991/290KSXY"%!!!-{dA#+)Z @A      4 9    91/<290KSXY"]@**5888]33!!!l )3 ;H+q? u@?    4 9   91/<290KSXY")! !!/pf#hA1N`@149 91/290KSXY"!!!%BsswwL  7@4V9V   91/0KSXY"!!!7!13/Z}#?F@!4WWG9910KSXY"!#3!D&%ZTB.@49910KSXY"#mjB@4WWG9910KSXY"!73#7!d%%9@ 991290 # #--W/10!5/۾s`f/910K TKT[X@878Y#fx/u{ *@O      4!  ]]!<"\]%[E_ (  !"(+99999991/9990KSX999Y"K TK T[KT[KT[KT[KT[KT[X+++@878Y@23 0!0"3#vv x  ]]"3267%!7#"&54$!37>54&#"7>32Q?v7{Cn7%faRv/q[hm?Rm}MM1 9<98'''j/ @J    4 <<E[G    999991/990KSX9999Y"K TKT[KT[KT[X  @878Y%254&#"!!>32#"&XoSJrZ)/%w?_=7Euoephw`c۽i}{W@ ` <K< K [E  99910K TKT[KT[X@878Y%#"$5!2.#"3267MSo(bL5=Nz|F[%!!=)+:8ƀ~44B @J    4 <<E[ G    999991/990KSX9999Y"K TK T[KT[KT[X  @878Y"3254&7!!7#"&547>32yoSIrZ}%B_>8Eupephw`cܾkL}&w@#`d<Kc#< [E'& '999910K TK T[X'''@878Y@ & ]%#"$547>32!3267>54&#"_nXPT  l]fYd(7**afm-vSce>;h Ubvv@=    4 ddG e    99991/22990KSX9Y"K TX@878YK TKT[KT[X@878Y!!!!7!7>;#"XX+ۮ+*+A:LNӓ7X +@\+ + + + +* +'(&)+ +4)* `<<K<&[*ef,* )+ + ,9999199990KSX99999Y"K TK T[KT[X,,,@878Y]%254&#"!"&'326?#"&547>327!sRHrP5bW6KW}6`TIFjh#% dofo --u|SUѲlgtng;`@L   4  <[G   99991/<99990KSX999Y"K TK T[KT[KT[KT[KT[X@878Y@    7 ]!>54&#"!!>32Nۅ:7Sty/#t0e (5:=\gL7 @5   4 i hded    991/20KSXY"K TK T[KT[KT[KT[KT[X@878Y!!!7!!!!5Dl++m%C`X@?   4 id dhef  .991990KSX9Y"K TX@878YK TK T[KT[KT[X@878Y]%#!73267!7!7!!!=/;-df+N)B%+.;4kTVR @D      4eG   991/<90KSXY"K TX  @878Y!! !!%r9tRZ^B `T @/ 4dGd  999991/990KSX9Y"K TKT[KT[KT[X@878Y@ ]3!!"&5467!7!q>N-ͪ +Vm!-%pF,{+@k !    $!"!#""!4&$!  <)[$e" $,"%  &!"% # % " ,.999999999991/<<<29990KSX99Y"KTK T[KT[KT[KT[X,,,@878Y@? ? ? ?????7???????@@@@@@@ @ GOOOOOOOOOO O!O"O#O$O%O&O'O(PPPPPP P __________ _!_"_#_$_%_&_'_( !"$%&'L]>32#>54&#"#>54&#"#3>32 L\l  #"09 $"/7)yEEW@Kpa/aK13=(*Zw1*B(*Wz1`tDKK;`{@L   4  <[e   9991/<99990KSX999Y"K TK T[KT[KT[KT[KT[X@878Y@ ]!>54&#"!!>32Nۅ:7Ruy% 0e (5:=`\gLXy} !@ <<[E 104&#"32!2!"&R]U{aSyM mvjy6BpV{@M4<<[Efe    999991990KSX9999Y"K TX @ 878Y%!!>32#"&7254&#"{{-%!G]>8EupoSJrZ ba۽j|rephwDV}@N4<<[Efe  999991990KSX9999Y"K TK T[KT[X  @878Y7!!#"&547>32"3254&V'%s?_>8FtooTJrZP_dܾk}sdqhw{}@5       4 <[ e   91/990KSX99Y"KTX@878Y.#"!!>320vJ(d%#>w>o,/+)``iZF{'@<    4 ``<K<K%[E( " "(9999190KSX99Y"K TK T[X(((@878Y@(-/// / / ,/. / :::JJJYYY ]].#"#"&'32654&/.54$32F2K]^nIJvhc3V]n{=Xzr]=56F;-7%%r##8;KC.4'$p@>  4 de d  9991/<2990KSX9Y"K TX@878YK TKT[KT[X@878Y!!;#"&5467!7!P>+hj`@O   4  <E e  9991/299990KSX999Y"K TK T[X@878YKTX@878Y@      ]!3267!!7#"&546{#:6Sqz#!,eT4:?wZiH`@#4e91/290KSXY"K TK T[X@878YKTK T[K T[KT[KT[KT[X@878Y@    ] !!P``nZ-` @B      4 e    91/<290KSXY"]@.&))::KL   **-<<<IM[\]]333! !`!#^`5ZN` @@    4 e   91/<290KSXY"K TX @ 878YKTKT[KT[KT[KT[KT[KT[KT[X  @878Y@ )8HYY]] !! !#ժ- `dR=X`@A     4  df e  99129990KSX9Y"K TX@878YK TK T[KT[KT[X@878Y+7326?!!'p~-uWd<')5yi54&+7326?>!3#"3o%Ĩ + `w>%=)+${hY& }_S) DPm}880=L=nVѧWLE'.8;3k10#0@i+,+,,+ 4+1''%,%W'W/W'G1/, 1'&%(&01.991999999990KSX9999Y"326?>7.546?>54&+732;#"+{gX' ~^T) BQy%ͤ)_t>%>)+UͤTOG*06<1`r#m :UFtޓXy++@ ll  19990#"'&'.#"5>32326yKOZq Mg3NJNS5dJ t]F+<73 ":?=6 7=R ]@. 49 99991/0KSX9Y"!!!3H8 f#+ehN$R@1` `J K JK[ E%  ""%912<220.'>7#.547>73N5-n@@@3>A77mfP{775rh5(/L.)" țjSY"j@F  4 dLK<B J  9991/222990KSX9Y".#"!!!!3#737$325i!P+?34@-%3J))N ^T /c@8  *( -'! ) -0)'!$ * ( $02299912299904&#"3267'#"&''7.5467'7>32;dJIeeIJd$P0'T-)S.'QIccIJffq)S,/Q$*S)/Q&?@K  4 u u9   .9991/2<2<290KSXY"!!3!!!!!7!'!73==%s$dVTd%:%X𻗽J@ <210##  h=#G@N7829 %8?/;.2;+;;EB+H785 (" 5%(9B 8?"B5("B54&'.#"#"&'732654/.5467.54632P&:>#&N:)9>&"J-D?U^=micUor-+Rb.JKV^dmPzr30G7,X&':6&'X(#@"!D?)HECAzLTC+e?!"D?Ee DHsK]2)b?;H1a@99991<20K TK T[X@878Y@////????]]3#%3#Z111}N1ID@%  q po>qpo2n>n&JD  8 ,/210.#"3267#"&546322#"&'.5467>"3267>54&'.P4[0akjb5`*7j2ʩ7iZZ\[[[~}[[[\ZZ~cIGHHGGcdFHHHHHh__g$ZZ[~}[[[[[[}~[ZZGIGebHHIIHHbeGIG *.t@A! '~!~ -~+ +'~}~|B/! *$-,.+/  $ $ /999999919990#7#"&546;7>54&#"7>32"3267!!X.{OkЇIF9S!PAzu:,Up#P@X65zh#(*(&i^ EHK,:xNN# 1@    // 991<299077N--v\/-w#Xjy@ H 10!#!X!,9910!!+u8}N 4L\@3-*+'0!o5n2+oAn M*',$0-!1"3+"$ G3 ;/29991<99902#"&'.5467>#32654&'2#'.'##%"3267>54&'.hZZ\[[[~}[[[\ZZb@@998(NG&7O?9)cIGHHGHccGHHHHHNZZ[~}[[[[[[}~[ZZb((+)oXZAU 81:/qGIGebJGHHGJbeGIGXB19910K TK T[X@878Y!!w%V@m mB102#"&546"32654&hCz//12.0zDHdbHHdc30/xDBz./3dHHbcGHdXy *@H  H   <2<21/<<0!!#!5!!!fff!bbL@&4 3999999190KSXY"!!76754&#"7>32h3[HC?MLIfD-%A[-1$#lc/(K@+ # )  &33)999190#732654&#"7>32#"&'732654&omX^PF0PIBypScKE>O`oW73(.fYZo cJQF-59f-10KTK T[X@878Y!#wAFfT{`&@V   &#$"% 4 % <"Ef e'&'%  '9912<2990KSX999Y"!3267!3267#"&'#"&'7-!D=Rf! +.P$HL 5{F:LaT X0?Fps#! KSOO0/f; `@-  49  <9991290KSX9Y"!###.54-վEfN'-/@4I910KSXY"!!NHo{%@    291/90!#"&'732654&'3$$4f0+R#DI0\,cv 62E7! S@+334       99120KSXY"3?33!;jŇo-+)N+ 4@~~ }~B  999910432#"&4&#"326!!3%D=WxEIH7:_bVik&$73uwk&$43urk&$83um&$53unk&$33um !@J    !  !4 < = Q  " !  "99991/<9990KSXY"32654&#"!!!.54632!oM66MN56MEku$*vt/P6MM66MMq$j5uu;lj@L    4V <V9VQS  91/<20KSXY"!!!!!!!33<3N64H}nj{o&&zyk&(7Xuk&(4Xuk&(8Xuk&(3Xuk&,7/uk&,4/uk&,8/uk&,3/u"}@F!" 4<V9V #" #99991/220KSX99Y"! #!#733#3267654&#;%hH^/f?-N`p+4A}WqE\PFrXXj%~m&153u=k&273u=k&243u=k&283u=m&253u=k&233uwXs 0@   <291<290  ' 7 XJJGJHJHHsL'.l@8+'/.(+%&"V"+VB"E/ .(% '& &/999999919999999032.547>327#"&''.#"wM8}4 bUNi= L5Nr9K4y6b<=2^"J'BAs8a,>ObJHrN47-k&879u-k&849u-k&889u-k&839uNk&<4/u@L  4TT9 9991/0KSX9999Y"!!32# 32654&#w@#'/I:NVg|L㸯qB\RJ[M3@e )*+*&'%(++*4("!%3.+%`< %<.G E))*31! (+*1!  ! 1*499999999991/99990KSX999Y"KTKT[KT[KT[K T[X444@878Y@lllllllllll ]#"&'732654/.546754&#"!6$32y`L;:B@1:k.ZhoE,*ZR]r) #dS9`L;}D ODBoG-g;%@Gfefݮ+d/uf&DC/f&Dv/uf&D(/9&D6/u1&Dj/u&D4{ L3@. .8765493.01/2.43 <1!C=("L !`"<`= ]]1]"K%c9]=\F@[+%E1_MLI 32!"<=.(16C.I..M9999999912<22999990KSX9999Y"KTXMMM@878Y@,3;3<3=/012 L0000;0<0=]]7#"3267>54&#"!3267#"&'#"&546;7>54&#"7>32>32Jbu:1CP% (,8G=UF8A/9Q^ =Yl DA4V/OERt4T~NgU332#"&ZoSJrZ{%uG]>8Eupephwba۽j|X1&\jBN&$q:/u&Dq'2 ;$/v8&2Do'5c$/ou{'5 Dk&&4uf&FvVk'8u&f&(VFk'=u&1&3VF4k&&9uf&F)Vk&'9IuBv'2wGBs'@h'&% #"$      4 "  <"<E[G %      (999991/<2990KSX9999Y"!7!7!3#!7#"&547>32"3254&VB%/%%B_>8EupoSIrZTtt`cܾkqephwO&(q;L&Hqk'<Xu(LF&2Hk'=Xu(L1&3Ho'5(Lo}'5Hk&(9muLf&H)Bfk'8u*Xf&(Jfk&*</uXF&J2fk'=u*X1&3Jf'i *X+'UZrJk'8Lu+;`k'8-uK4!!7!3#!!!#73!7'+q+&+ ځ׆ #q#hQ8#!67654&#"!#737!!!>32%݄ :7St| # >0e),:=zz\g&m'5/u,;9&6O&,q;7&qk'</u,7F&2Bo&,(5io>&L5}k&,=/u7` j@"4ded   991/20KSXY"KTKT[KT[K T[X  @878Y!!!7!!5Dl++m`%3267#!#"&!#3!3{>,lBJO1>]wIG8/9/00JX`_l n853 u"%+73267#7!7#3!!!7!#3#_#6%/z]0IR.+G{ .. qGH.;4kTVk'8u-X f&(0X'i(.R0'i(NA` !! !!%Jc7wS`}^B `TPsl'4/v/rm'4.wOP0!'i(/5 &iL-OP'2n/!'2"OP'y/l'y?O! d@8   4  V9   .9991/90KSXY"3'%!7!P`s+'_s^\w3c#%@J 4dGd  99991/990KSX9Y"KTKT[K T[X@878Y3!!"&5467'!7!%=N-Ω 5Zb+V^"gEl -%pF,Ò:ˊl'4Bv1;o&v Q0&iC(1;0`{&ij(Qk&19u;f&Q)S'#QX!!+732767!4qrx,&d44 gnl77fX{#+732767654'&#"!!>32v1poy,'d43| NOv|# 1j<$Tkl77=+,5~`]fi?eC=O&2q;Xy&Rq=k'<3u2Xy &2R=[k'>3u2X4f&7@RHc@84V V 9VS    91/220KSXY"!"&547>3!!!! ";b3C54&#"!3267#"&'#"&547>32>32267>7>54&#" (,7G> VH9@/9R^2\@68DŽSx%0Rr4D 394D3B'40UYF54O]72((QEKK<=<;>1XZ@JvaZxHA@I*|HQz"IAl'40v5]o'v U0'i(5!0{&i(Uk&597uf&U)Vl'4Bv6Zo&v Vk'8Nu6ZFf&(Vo&6zZoF{&Vzk&69/uZf&V)o&z7o'zWk&79Our&W2s)#73!!!3#kh&b22b&!!!3#;#"'&54?#737!7!>>,&&U,I/#&,>)!P3k=P>-m'59u8j9&6X-O&8q;j&Xq-k'<9u8jF&2X-m&848Rj &X4-ak'>9u8jVf&7bX-_&85jo`&X5)Zr'8G|:Z-o&( ZNr'8:|<Xo&( \Nk&<3/u l'4Bv=1o&v ] h'=r=11&3-] k&=9/u1f&]))!7!7>;#"oۮ+*+A:Nӓ7P! (1!2)"#7676763232>&# 32676&#J%#*,& <&j{hD-po#PnU-b׽ İ%/!MALPSF`wyjg"'!!!632&"2I6 .)KNK76?H?Kæ~D;~%32>&+'3 !y/byTmn5`bbR.&"2>32#"&'!'7?H?KHZǛ76e ܵ|D]]baU73276#">3 !"&@?L11sLY@KU.IItU+HFAAFH$$rr$pk %27# %6326;#"&#"@Ije/-p`+];2 x1]Hx#@7.8"o#%27# !2676;#"&#"456c:Xoy,'_8,"4ndD4/sV89Vl7+rU?!"#767676; !#26&s>_nMMz33j&4MFmts?/#";! &767676?6%3!]Ĉ_Y)%W4Dejyw`+ Q2[W"7632!7!!7 26&"67ʳGK) ?I?J4DT={%/%#"'&'&'732?676#"32%26&#"PcRs* Y%WQhA( jV53Mi@Tij@T5?NM ",f==KJ 3!!!!!2{L3??2B+;6'&#">3 ! 732767SLY@MUJJJqrK2(HbyAFH$$xx~_PxxP1'"267# &7>7.76$32.#";vg5kq*Ϧx$0\a4_Tnhn2}s^o1/$&٢!(*]SOWX !!!+7276?!?3^ 2foV,h3/B}+dl72}-X7!!#!732767!7!7>;#&X,0gq+c34,'+obcl78TNʜNk(%27#7!# %632676;#"'&# #]170̅Hia<: nb,];2]jP+"TsC  l7.R:dON^ '!!%3276VBbCK34B%v ]u~t*'&76'&#"#3>32?67673.Y,/)3 ?@21}.u+U-,)3 [;CI9y} V*4GF}]fij 4 T^x ;'&'&7!!!,WV2f)22)xv-.!!3#!!!#73 2y2b&6)22)6&b 1!!!676&98ߣc#'s@؋x6@G:$wGq3= 676;#"3! !!1poy,'b53Dc8wSۻAml75}^B `T3+;!"&?#73!7!% =b,ь1%p,N^n^B!!''%!H׋&E P)+UTEW%#"&326732673#7"&/sJH>d9d6&}`pGD<}TV{D{VT}D+tBMQcVn!+732767!!! m@_0,<::=Z4K=+=eV{!6&#"!!>32v0NOw}#!1jyTzi~`]f;  &7%63 6'&#"!3276"+ztTaJ}N3*&UVyQqrK;txxpOD2P_xx]&2^&R^E &7%6327!#327&#"_ ,|[GPWvݒD@!CgFgU%q+pi5x yh'Vf{327!##""327&iWgmi@Ti+Nd* =|erП]]Q32>&#"#7676763! !#!U/b>_/5`mJbb'&4MFmV$&"2"'!#776;#"36322?I?J?>76&#">32ǛRd eml;ro, c ak`m8ng'7eCYcRT45B01Q>PVFC ./˞tc{'>323267#"&7>?676&#"^__UV ^g^l2se"X  YbX\=&"<89<:7##&2P8954 X&(;#"&7# %53232#%4'&'32'3p ?+'͇24/2F:t8)oa@ iHY@ lY265LX  !!;#+732767&'&7!7!>,g=U$1hoy+'b6+BJ+d,>KA+fl7,eHQ>R!!%#"!6767676O'{2/h{j&<!,-LAM!H!t67676;#"!!;#"&7!7+pey,'b53+g=U,*e+`mb 75gKAV2!#!!!;#"'&r33 b',yE?V57ld(&8^'Xh^C##"67#7!32676&'!c7%==%)4a{ *Cgf* "C4mn8mO֦M 0Y'73!"'&7!276@ c7%=G,"2'f^!H9mȷn.-XT !!776&rr./8i52JL@\MXFa +7326?!76&Q,wZ`@"%f^_1eW?-=o<A)_;;& #O9 !3!!!7#73!/0&2/]&w&0`!3!!!?#7!!"-&M+i-o% ` "# '&7!327676'&+7!!6lw+>V=bF #!'+30!Je6;m?tk9)qo dn %2767!! &76767677!!#  X<>+69[euS03-+(8N5J߀tPcfq! ϋ.#H`!#"32767# '&76767677!!+UU}]fel:mllgڂ+[cwS-+45fcj6%tsޏfq! r$!!?#7!7>76&#">323+Qu3L1%UG\[ coOv5s^%Y[u%6UtAVAdm?<')ݿX^H"#!!!2! '&7!32676'&+33DsF:3+lw+>D@oAAfO@tfstt_95jcf54H` 2!"'&'32676'&+!!na33+gdd_9U[AAY)Y0,fgst%)58jcf54v58*%#"'&'327676'&+#7;7!3 Ip-*٣EF=:=BDHoA%7T8%!B!%61^ׅ#*+rB`GLr!¦Q!!t +le'!!!!!!!7!7!7!t C.f+.fXXf.+f.:Rk&$9/u/f&D)k&,9/uf&)=k&29/uXf&6)-k&89Dujf&X)jO&q#;-&4j0&Dx-&9j&Or-&7j&CrB{/uO&q#;jO&q;&q=_&25X_y}&R5=_O&q;X_y&q333327673#"7##oo 8E! WH;;ށ9RJ%2:8}0qhk"17[u;`h"QC&i6ZF{&iV&i7'iWt%-%726#"'632#"'#67&'#"32!26&"^-g*3}-HtC2%?%3+JL67='g$0?!wi?!x yaGyl$>40/-D X6!!#+732767!7!C/31foy+'c5+0_w#dl7,d^X`!!1+732767!7!P,0M+2foy,'b5+-``dl7,dXyO&q#;XyO&q";=l'=Rv2Xy0&R3XyO&q";NO&<q;X&\qte %726#"7632#"'#67&'&7!7!5-g*3`}.HtB%9F1,N y1BXl}7&t{/%726#"7632#"5#67&'&?6'&#"!!67632$S!)9tc{.H^9uz*41/ ?-2}#%9T(8!`j y1BXl+5GQt`l3!3ߨt$%726#"'7632#"5#67&'&7!7!!!!$S")!-:sd{.H^9t {*41Y,=%=,^j y1BXl>X`%#!73267!7!!=/;-df+N+.;4kT-26&"&"2>32 #"&'#7#"323?(q?*Z?(q?)@8v?\77ІGV ! 4{GY77ҋ?RsDD]]baab40]]S!J{-&"226&"#"3273>32 #"&'#?(q?*?(q?)@8v?\77ІGV ! 4{GY77ҋ?RsDD]]04baab]]rM!!!#'#7'7'3'EiNUx9M! &lP{s[q^??y?RrM( &#"# ''&7!27&'32672MUy͋,J.UK"Fj9LZ_$$r1y Ms~"&AF''7&7!27&'3267#"'&#"!tcZOt &;UN5Rbu !uw9 ~y!Z9:++~~V !3#!!#7'%6w3bi%)#7'7!! 7#kٖ3F!2iL֓UIsByrws{1.#"#"';# /&'32676&/.76$32r2FXbo  Pt"]-*an2V^gv @M{ _=4598P2&Pۭ s7:<98<"&d`!;# /!W-+"-+a0i,`);PۭV[$"#"#7676767637$!!!2>'&#%N+& =&W1D-.eٛVp'32p$0 "MB?~m66H{ ,27676'&#"!67632!#32767# & IJ%#NtQQ}"EZ[d#& --dhhhu0hpP**fL--XWq}J((ʵ^]1G%$:(&a{7!!7#"763226&"$!BTTe67Z?>]?H?Ja114/.D p{%!!67632#"'&&"2N$!BUSe67Z>??H?J_a11䘘/.ODI$67632#"&'!676;#"3&"2IQPZNN86e 1poy,'dg?H?K]./ba@klnKDH8}7326&#"6763 !"'&H56EDUAvRSRJ4[WXZuu66bQQ9 :P7 ,s}-%3276#"763!"'"''67&'&76!2&'&#"a46 S*:fJ0t65ZOQJ46GFR 9Kr]G&A,7*$26&"7!;#"'&?#"'&32?2|?5s#6+a3418EEQEE77G00D:Stnlka110/.#26&"%!7#"32776;#"d?3{?4> 8Q77H006Y]a,4Dab40/.]gl75%{73267!77632!"&6'&#"%4_e 457v 00epEE7 ?:w 喗*q=><;B{>3 #"'&7!6&#"32767nvwx75mm4ew-/peHH!'**“ w:?t;<>=q{ 332767#"'&'&'&#"67632?;#"'&7[!HN<;="7]eht.Riz7] M9hu+2Dfb qrlm^.tklbً=@BW  &1E OY"[\p{2!"'&'7327676'&+7327676'&#"767632+bfej.Refrq&lZ<2+uhCY M-zoV.~lk]"UU=p\["YO E1&  WB@{A#"&'7327676'&+7327676'&#"767632?;#"'&7'En02JO.=JLUH*SC+&+XK6E 8![U@l._RREY5 !) !#HZ& 7=JJp\["TO E.)  O.N7o[$_y. !27676'&+7327676'&%672'$HG*F.< 4!J*@/E 42b_]IF~.,~~M@M%?H "J7#"-VWbLHIGgVV=LXT`%#!73267!7!!7!3#1,bgL&3,N_&+nV ;"32767#"'&76763!3676;#"#!"'&'327675YAB !\ZAB=NQP]LL1+'-hn|.*'(+1TLJI3ACBIPQ wRROPRR:Gb..⡠rv..!6MMbV`*%#"'&76763)!"'&'3267"3267P_NO1,.'2VMNK4BEEJ +["!_[=b\⡠!6OP:r_%%#"'&7632&'&#"3276?#7!gjikop23`UTG.GKMPba <='#"+e2(1YXYY D`o 7!!3276DI,f=.B\CCcN}V#L~||`%276' !!! 76- ; /CC=h'.1*W;HJ9SLJ^!32767!!#"'&#NP;:|#u1j<=Vy44GF}\]fij1!6'&#"!676;#">32 ݄NP;:|1poy,'dg1j<=)y44GF}@kln]fij9VZ(%6'&#"!676;#">32+7326}NP;;}1poy,'dh1j=<(2goy,'dh)y44GF}@kln]fij)bln!!!3#!!7!7+7!!-f9D^&)l,,l)@&3ܐ`!7!#"'&7,De,VW,l.-vx` !!7!!7!=l,,l,,b*#"';!"'&?&#"767632!7!3276-VNMN6: b,EG1NV,ZMORe,NB>FIL+<77llu:?= g"&#";4;!"&?#&76!7!!; 2`=b,ь1{&+@D,N 028?pno)b̜D%!7!;!"'&4+Nb+GE77llH. !;#"&7#7!!#"'&'32676'&+A|ZT)I,^0+U,k6M%"+MKJF:=Dh..n~Nn`L9 !qfst%)58jcf54`"%#"'&326732673#7"'&/sJ$%>zd9d6&>>10pGDdd<w1}TV{1{VT}tB&')(EV`"%#"'&326732673#"'&.tJ#%>zd9d6i&>?00pGDdd<w1}TV{1{VT}B&')( V{367632 +7327676'&#"#6'&#"#367632./99K#$={/Z^c, R-, 22 31'=?DD`F#"dddl77~)*+-y1y-+*)~1`tD$'RF{'!7676'&'&#"+7326?!67632хP &\FF=+'qpz-RT+' VTT[xVo77#WVyv\pb./F8{"6&'&#"!!67632;#"'&7 'UMDl' VTUZ;<,U-uBG&-HWK`b./wxj/.v ` !!! !I}`uuP{ !7632#"'"!36'&!#3276-jmojniN7!!7#"'&''zL^KK2 )d$"?bdv<87.5,,! >&ln`45+327676767!!7#"'&'b'zL^KK2$!>bev<77/5,,! >#9/u`45V@`%327676767!;#"'&71?#"'&'F'=&66n\67lb)`45!V{.#"!!67632n(wN\ML2'-&"&lnR `45iV{!.#";#"'&7!67632n(wN\ML2'\g&,xEJ0&"&ln%77lp7`45`37!676;#"!,d+gj,T+,g,QP! K `37!6'&+732!,~gV,HK+d,K !PQ `+!&'&'&+!! 32?676'&'&'&#(0s$"$Vlhi"US0>W/ 9  %A- m WF`MLtDC_(:% ` "#327676'&'32767!#!!O4O[-."!%K313kF;;Bm++|}f HI Ga/0!GHoKJ`hVi{8&'&#"#"';#"'&732676'&/.76$32i2GRSXb78  P;:"?@d',yEF12V^`^gu Nz  _[\=48P2&TUVWS)7lk7<98"&X7!#!732767>;#"0gq+c34'+Ccl78ʜ@X7!##!73267!7!!7!7>;#"3U1fo+bhM&3,)'+B9r&JblnNʜ0AX!6'&+732;!"'&E B+'c+FA@}87lcX7&(%;++5$!3>;#""#"6763̋)8t,\q2;93'+@ 5Hi >a2Yl ʜ@L56T:(`!7!6'&+732!!z>,~gV,HJ*d,>>K !PQV!!;#"'&7!7!>+T,KH++>DK !PQ>C`!7#"&?#73!!!3)3276U 0hz( R&R_&_:_&_H&0NP:0J]f/yhF;G`&327676'&'!##"76767#7!fO.A((^_IJ27&@+#20 KW\&ELQskXWWXksTH;l:pA`$#'&77#73! ?27676'&'7,6!1oCC,=,%C=!&`VO6!;lyx:yƩ 4aXksTH`#!!>iEf`jn` !###!!d`676;#"!!fZ`av+wZ00A!s~ٞIHo<)`!!!OQ\\`Yx(V]`!!;#"'&7!7!,/N"d&+xEB$,``77lb`%3276'&!367632+'67!7!'& --1.CM1; -9G`v[0@78H`! !7!!"'&'32676'&+M+-!Ik73+gdd_9W[Z]AA9 !qfst%)6jcf54H` .&'&23676!7!7#7#$!26'&+j c8*+- Hk82+ i=9tm3A}A U4X9 !qfs.( #-[H*4c327676'&#"67636!PTdB&CHLJN:JMLؔ])-n`rLG`Br+*#Ӆ^!&'&76762&'&#"3q`Hp-)أFE>:>BDHo@$8 ^ׅ#+rB`GLr!'"'&'327676'&#`B`Hp-)أFE>:>BDHo@$83^ׅ#*+rB`GLrDU#%32767#'&76762&'&#"&CHMJN:KLMؔ]**أEF=:>BCHoA`Br+#Ӆaׅ#+rC_( *32676&#"67632 '&67632"'&EDCyxvyhj1䂁13. +)1< Rb6^^aa5'''/-6L&& d` &27676'&+27>&+#!!2vH,+ !!J&R^44T^( ^)) cc4520Lf2QHIjOP`GFR:90rz.% !";#""'&76767&'&767676 HGF.< 4!J*@/E 42b_]IF~.,~~M@Mkl%?H "J7#"-VWbLHIGgVV=t,+%#"'&7632676;#".#"3276?#7!Xhiikpq322ioy,'dg7HPbc y'##+e2eln10YX  ` !!!!!!FOUOFZZ`k1W$!!3+5$)3!7!&#"?676UB%ب(9t0Voҽ;93,Ni ^kb3+VSk ]L@6:>BDHpA$8TD&%%&p^ׅ#+rB`GLr¾ %(26&"73!!!+7#"'&7632?re?r3tU,a* 066=s!"67_^w6!"}\\D\SL`ۦa11/.~@ 4> !#7#"76323!#"'&'32676'&+26&"B /m+rs>:<6:1357Sm##XeR?re?r2{ab4/.]SL9 !qfst%)6jcf54\\D\9<%3276'&26&"73!367632+'67!+7#"'&7632?re?r2tU,$0Y/y4< z  /66=s"!68]_w6!#}9Gi\\D\SL`v[0@78a11/.~g/I&'&#"#"'&'#"'&7#733367632732676'&/&'&767#32'.05;$# u.Y"UU<<<9%'+d,>>% 2X965/778>K L-^ g3=48H:'SUVW"(PQ>½K3ZH7<98"%RQ0*K !X &.37676;#"+732767#"'&7#73#3>'AB+(& ,/DL~+;#%'+d,>g3NNN0Ab+bl7.bPQ>CK !s3<G367632&'&#"763#"'"''67&'&'#"'&7#733276#"#;&76F=(w6..)4)(1V ae,<>x) ''%+d,= X N2g3'&)#,7Gr]G&A#(PQ>J9K,K !~X3;>32+7327676'&"####737676;#"Ϯ!%n?`)1KK~H+<$#} ^*)}Ϯ,'BA+(&b]fikTkl77z45GG~NNN0?&'&#"#"'&'#"&7#7!;7327676'&/&'&7>321&0/5;#$ u.Y!UU=<<:}D0,b ;0l9>%& K-] 966=48H:'SUVW#)`77H7:98"%RQ#7!;!7!!!7#"&,b ;*,a*}D`77`3 333# #333# #3$Ϳ&%C$Ϳ%&sPTQ PTQ" %#!#!#!#!?WW9LWW:>)>)J"332767!!#"'&76'&+732MP<:}$v1UTj;=(d&,xEB^Vy44GG|\]33ij:7lcV;)3327673;#"'&?#"'&76'&+732V#>@22},P,a531,U-+(P,a31^VyhGF}˄nlk}]fij:7le#6&#"#367632OK !23%$FB65De)(3i~D:'(Fh5;<#6&#"#676;#"67632OK !23$%FwGEM@@65DeQ3i~D:'(Fa<=~>JL4vj+732767#7!7#73 ? ]z&ox~J~r&'&#"#367632'(1>-3 8z%?>L,"b !<>tb6 32767>73#7#"'&';'(1>-3 8z%?>L,"J !<>!b6 "32767>73#;#"'&?#"&' '&2;1/  8z@N.+%~M&GI #<>!8~=7{J6: "#327676'&'3276?3#!322:S0  {+%&)E NOz()|)7((?Y**t1 333# #=F"+7326?33q7<=LL9=(UYY((}">!bi8@4G910KSX9Y"!35׬~q!#R94׭~Y27>'H#x7-.6vDC.cdvt'&l&'STTSr"'&6763"!vDB.cdv6..tSTTS'&l&'e327676'&#"767632#6}>) -g.001 010ib=iEq68@+'6%@  vJyQ5Y#&'&767632&'&#"3P6i1I[i,-( )*,.gF( $}8d5QyJv  @%6'+@PFf6@ 991290K TKT[X@878Y3#'#󷰘ff6@ 991<90K TKT[X@878Y#373F򶮙x@1@0#ll+[@1@0#ll+zAq-.`!!e|[`!C|&_`$L&`%LN #7#73733L++$++$lݼݼ`Fd@  1<990K TX@878YK TX@878Y@  ]332673#"&5XLQuƘF =HMER;189910K TX@878Y@ //??]!!/1 :@ 2 210K TK T[X@878Y4632#"&732654&#"ϦwvvwM76MN57Mvvvv7LM66MMo#@   2 91/90!33267#"&546K04*%P-1\+ctNPJ!) MB<yh9@     99991999999990K TK T[X@878YK TX@878Y@'           ]'&'&#"#>3232673#"&1*"4 _"=.3$&4 }e#AT%!E<$'C>ufi@ 1<20K TKT[X@878Y@/,,,,&87663146LLJJBB]!#3#fx2%7;!"'&7""i#:/ ls87o[  7673733276r)$١Ya toق2SFEE[cn#7!;#"'&^zw(?ʆ./~J>~=<..#"#"'&'732676'&/&'&767632.j8?F4`('SQABBA8z 4uf7f)#VVD'PPuf###yfxx` &23$]F2 ca!32$!727#03xyz$#3$7#0yy30z9f!#Af'C1'vy6#7373#%#lo-33##۾$%$dCn!7!#%+lE7326764'3#"&:A'= tV5bR2&;1'M(7^)s{6W "3"&>37[>6v.vjMlMK73733%#$%N#7!##n%+%#2 #73733##%#$%$@G7!A$+$GXi %+73276?!P0qoy,'b63#+ml75}V ?!;#"'&# b',yEE)}}57lm28(32H(j"46:!#ozo5j&#VVD &#7##I$$Iv@#"'#"'&73276732767/5@k0Kj  LP(LG*@FF0:m')PF$(`%2q"2?yh$6jB&qB#6+a@ p@x7!&&x7!&&'!ttuwyrM'N?rsqL_ nm&!7#ppD,,=n@67632632#6'"#6'"/5@k0Kj  LP(LG*@FF0:mH '7'77Nlhilh),!'&'&7>;7"+2676'&D; " F9)#zSR!. zRR: &66;13j $#4'& #6%6k9  3OG$%%$GN(tCf3ġtVH%# HqVs #"?3;cX$3VhL'9fv;('pjf&-yf&f&f&f&tNf&;f&O(&$%z)! qi)_/=( =+;3 "326&! ! 22 q449qr449JVJJ\  xx,X.3!!!iq3+ 01 )!!!!!A2A2o!2=2j3  !! !!22>227N<P%-67676/3!37&'&7676?#!aE5Mp))jx32wNo))jx32U'^A  Uk? HJllKFFKllJH=?kUq?;3!37&'&!!6767!x32wHkKC'C1% '[1C'CK|+~[##[ą+'3&7323!>76&#"! c7%=^=%))4a{ *Cgf* "C4'm8nȿm O֦Mk'3/uNk'3/uf&^f&eVf&Of&(&z(&767;7#"?!'&'&76763L羮=6RN=1<Af,RD1#DG'*"!KMAx윒+$= TᥙABMR[[V!%!! 7676'&Ea,Y7Yo-Da.++9(-EI8    AV`!!&'&+732)})SSW $ *.PmO^(vVH JY'|!%/&767632&'&'&#"32#"76"326&cRs* Y%WQhA( j53Mi@Tij@T)?NM ",f=KJ^RtB"3276767#"'&76767&'&767632&'&'&#";xM9 -;rthf+ k4nhtt _^<<W^s* Z$WQi@((4g+/ )A!!*%VVyKK@?dNM "* !yV#727>'&# !7!:1DMmd,F;g[1),l,T MX[TL&DeV{!6&#"!!>32v0NOw}#!1jyTzi~`]fB(6'&"2767  ]YB2,VD0v$ƐlƐwppvvRQO`;#"'&7#7hT:,NJI+d,` J!!PNA`-Iz!!'&'&+732Ȳ`k !!^p-P_<q-wJJXT{`w`67676'&'!1!! Jf <34&ޑW2'Z|u4@bY|rNįt`gV$! %$67#7! #727>'&xP;4,l,1%+.!0CMmd,F0A*R LX[TL&Xy}R`#3267#"&'.?!!#7,h%F"%.f7Ok z㮢,`? " VX#sV{  #"&'!&"2"68Z}#rܾt*?H?K{]^SDV}$%#727>'&# '&!2.#"ҌDLmd,E;_s56cZJ45R! <1LX[TL&9*,7;WG`#"676)327676'&ș(551(,G/N TikMN 6=8\]^r'`!!;#"'&7!,gT:,NJI+d`K !PN`!"'&7#7!32767654'!12JI+d,ɓ9gZ"7=#) 9PN J!!7gLGة5Vj!2!$76676'&HU:caRRw`?,;;.wL^&7)L4 j{4V@BsSV}dxaM>V`'!&'&+732!;#"'&L&i !O-ueXF.&:)h !P-vgVGr6LJ<mLJ>^V$`%6!!$!!4f$ghdSSzfg$f8^$d 3V@ O`%7!!767'!'$#7ewe&G?IMG=$acv_Q*dtd-OH1&j1&jXf&f&f&PZ% " 7676!"'&767676"&WxsI]5cLC@n)l!?F-k<`zt ~xA$ $6'&'&'&%6#"'&3676 #T A@CN^XSTujH*<,_zEf/z xGCcX}վUjNk!6''&676'&wJK'hh-Cj}3Qk@1qS "40z7/cT.f&k'3u(V'67!!&'&6%67676'&#jS$SPw5/iQQPx50,%Y* 2z)&W * j#U mi$a mE+_q!v+\u!`#7!#'$7%!767'K,,J.Q 7e9YD5%F?JMF=$3- t Zg/#"76767676676'&632767'76gD]CGUB {],D]FKNDi-Blb|aPZP02"=BsZ{kF[R@02\OgaV "326& !&'&! q54:qr459QQA_JKUKIt  `*~xƇwV{ "326& !&'&32i@Tij@TQQHniW45pJha#j=i>9 %"76763!! 32#27676'&@ps11kY~3tII;F,dm!KNkr%LS\bf8V`""#727>'&# '&76)ݛP^! ;/mCMnd,F<^t66,M[\ILX[TL&/)UV"%#"&'3267!7!7676327.#"UAQ'J&.2n><!*%Q?^%M$-2k3 !"&@?L11sLY@KU.IItU+HFAAFH$$rr$&yU'yEk&7Xuk&3XuX-%+732676'&/"!#7!!6?676321oo+bhZ])GM% :Z((d15< T$=)+klnz3%  D1C0$ 5izk'4u| 7# 547!2& !d)@I.z@y.<2gs͇HCuyH6,k&3Xu-a"%32>4&+# +732>!32#% Q%#Fw%0 r\E^Shqn;lacQZѰ+o9 %326764&+!#3!332#%Q%"nBnqn .la|)cQZh9:D$!!6?67632!6'&/"!# (d15< T$=)ob])GM% :Z0$ 5iz3%  D1CXk'4u wzk& 7u(Fk&<Cutj 3!!!!!"'q'MM/+t$%32>&+!!3 )gy/by2:n5`kbb'%z!!"2/x!3267!3#!#t0 sd; Pq>~> `3U1K/B(!!!!'!!'rNH ALuNNw,hL`wz !!!z"s+==wzk& <uX.u +3267!!h#Fw\3 _vN2SfѰ+ aoM+ 0+=2j!!!!+/3&7(F+3276?!!\u2P:K=S1s1/jl'!7&'&5476?!!664'&'XZ:/B[:/%x) sB suyLRsuuyMSuaz7h)LG{6hq?; #!!!3!""'q'q>//B !"'&'&7!3276767ݕ15<:T$=)f#Y]GM2:Q0$ 5i3z3% C' )!3!3!"'''//t1!3!3!3!"'''TM///p|l %326764&+#7!3 !) Q)U)!q5-av,fQZu.476$)!#"!>#";ފ^ ,# s^kpvBMzzIy5+N[^A%^m#YP/u{D$K!,632 546?6767676%6&"2676@E)0w==5%12~X3BӜ.BӜ K #ofLX L ,IX@ 솑G b` !327654&#327654&#)!22}AQ`}U',7<^E?"&Y15>#3 Gy_#`|qj`!!C+{``!267!3#!#=V1ZESc88cF^VU{L}H`!!!!'!!%>1pIQ53)1Z`<^Bnxu{?` !!!݋8#`5`5?F&25+A``+732>7!!}&(>_/ d^FRQݯPI` !!## #`31`/`q7s?` !!!!!ee#J=J``}Xy}R?`!!!ݯï`{`V{S{F`!!!7+̯ݯ+`{X`\=V%.547733>764&'0M5GOO4MJ!9CK!9DVMZ.gN[s7P}P}`[m` %#!!!!Zc8#=#`{{a;!!#"'&'&7!M  0rk_"Qkv'<+=! 'e[3` )33333𯲯𯲯`{{ `)333333#z𯲯𯲯Bc`{{{ik` 327654&#'32#!#7!62In;KTnԷ"^,&\/4ۗt&+` 327654&#32#!!222;KT2bRhO"%&\/4ZVAt&+``` 327654&#32#!2{n;KTnRԷ",&\/4Zt&+`F6{"'3 7!7!&#"63 Ł5n^#+駚4tO5V ur TkKXR{:"32767676765&'&'&!36767632#"'&'&7#)N-  #*- " %Tj7.5476$)!#" #";O(m,c" lTX;]P=MWP]/GtK M&[06Lf&C'(L1&j'(X&%+732676'&"!#737!!!>32:1oo+qbh]=:^)#)KL1j<<(+klny44FDџy]fjgqf&v&}$%# '&76!2&'&#"!!327670RYZbst66ZPOK46GFR_:#)_+;UPOM9+,7[8Ug@Z:ZF{V7Lo1&j'XM` %327654&##+732>7!32+22;KT2v&(>,/ d^FRVR "&\/4PIZt&+` 327654&#!#3!332#22;KT2eeJ+JR "&\/4!`}Zt&+!6'&"!#737!!!>32of=:^)#)KL1j<=<y44FDџy]fjiAf&v-?f&C<+XF&26Z` !!!!#!4#>#88`{!!!"<n/2S!!3%N=g{`:z )#73!!!!ف.s2@/WMHj` !#73!!!YY+V++h+6X{!2+732676'&+!!!5~Z&=)_1+bhRW"25inz31RX`32+73276?6'&+!!!~==)$1no+qb43KxO)ihӶjl77|14k`o`& zo{&*ztX3!#!!!門M _ 'l3\p -p`%3!#!!!Qh?#wS%JcD `T`}^%t!#!!!!!3!"'nqn'h9/p`)!!!!!!!gg#J=J#!h`}qo&zuo{&4zHJt )!!!!!22%1pU ` )!7!!!!ݱ))̈!hBN<X`!!!'X4s4XA)t3!#! !!SM I1m1p%!7S`%3!#! !!0h?5VyVDyHNe3!6?6?2!6'&'&#"e.#/5?:T$=)zm]GM2:ef2$ 5i1z3% C;`K,k'<u F&2b)XT !!!2+7327676'&#-b"'r@NUM(<(_0po+e14R(EN5ool77~/1Xp`!!!32+73276?6'&#"O%Jc ==)$1no+qb43Kk`}%ihӶjl77|14X%+73267!!!!!0ro+bhy"'nqn'+nlnmh9X `%+73267!!!!!71no+qbh_g#J=J#+jln`}t#"'&'&7!3276767!!!wb15<:T$=)f#Y]GM2:Q#Mۀ0$ 5i3z3% Cta%7#"'&'&7!;!!!+(kv'<+B  0rk_"?he[3=! 'j !j.'2 ;/v8&2#nk'33u/u1&j#j{k'<XuLF&2(;PB{;k'33u{B1&j|k'3u 1&jb)`k'3u 1&j_*xH`wzO'q; ?&q+wzk'3u ?1'j+=k'33uXy1&j1;P{;k'33uP1&jk'3u F1&j9@(FO'q%;X&q6(Fk'39uX1&j6(kk'>CuXf&76k'3u1'j:t{ )!!!!"2%3p` )!!!!)!h`B:k'3Mu1&j> { L32654&#"326?%!>54&#"7>32>32+3267#"&'#"&5467 Jbu:1CP (,8GfUF8A/9Q^ =Yl DA4V/OERt4T~NgU354&#"7>32>32#"&'#"&5467"3267>7>54& (,7Gg VH9@/9R^2\@68DŽSx%0R4D 394D3B'40UYF54O]72((QEKKĀ=<;>1X@JvaZxHA@I*|HQz"IA/{ 32!6&#"4W4 Tji /=񥹹/ #"!326755% Tji /=)9)!2>&#!!#'9yu{~}9`9WI&DX&hB-7373!!2>&#!!#-...|9TVQX>99t;*v&DX&h*\0)7!2>&#!7!2>&#!7!#uA0.}\N{1.{^L}1.`)t=8f!fJo&d((d&np *"326?#7#"&546;76454&#"7>32li3(JeM*mE`oĸz@=4JG9 :=$.ha=F++bSy " UR;  ,27676'&#"367632+32767#"&*g./ 1I43N+99?xn\[ ?ABBIBGp9*20X @fF*qen54( |73#7#"&7676322>&")55@y`#"WV}9('(.w\(/xY]6UUggg L32654&#"326?%!>54&#"7>32>32+3267#"&'#"&5467 /=J$+2#- 6,#W)$V3;T'\9P^D+(!X61\+4I X5OV .,:/!:& /1)v -5 /-/-XKl!"$'#$&NIK2 2654&#"#3>32#"&eFd4/Hh9ZK(h<\l'",JF[q8?o:Ctg67zjJ:IPF "32654&73#7#"&5467>32RFe4.Hi8[O*h<\k'#+IG]r8?o:Ci]67{jI;IQG &#"&5467>32!3267'>54&#"V32#"'&?!6&#"32767xEJKL#!ܛDE!Qa?Kp G?.-TTRSCJH #@"!#"?2&'&7>32&'&#";#"32767#"'&7>U%& Ę;@AIQ4CM#:0$BJs +@ >GHED;JCD>WY~$%1aX &z ,2 33?HS2#"'&'7327676'&+7327676'&#"767632U%& Ø;@AIQ4CM#:0$BJs +@ >GHED;JCD>WY~$%1aX &z ,2 33?HS! +2654&#"#"&'7326?#"&5467>32734Hj4-Hj3T">s7"0h6OY"a=ct5.,~CBU &i8>h9>[AFJ.0udN=:A>:fm !#7!#3#73mS*~~Q 373##`ČI4Jw%5*>32#>54&#"#>54&#"#3>2Q0:D XW$XY#XLW7$*>76*m" 3Bm% 1DmsA&**#+732767654'&#"#3>32TFFM? !N12JNkBe%3<<~Jf"OGs^49:$8& 4&#"3264632#"&;6Mi>4Li ѩѩ=Bs;Dw+ 732>&#"767632#"'&+!#++5Zw*KZ4430!:779JI""ޣ>33!ef WX  >32#6&#""ז!5BBc՘\hh\ #"&733267"ז!5BBc՘\hh\#3>32#"&72654&#"N-g;\k'#+IG[Ff5.Hi8b^76zjH;IPE@q8?o:C+3#;#"&5467#737'B&2k@&~ ~>H &!~332673#7#"&546&ZR%"4GMk@QWw!#OMa]2;OJ)/!7!2>&#!7!#5$MJMPk$$i7. &Y2S;Y\"#"'&7326732673#7"'&H/['MX?#XX?#X''V(&88anF/0EnE0/FA% #3W3sV} +"3254&%$!2.#">32#"&'!rRHrP4bV6JV~6`THFjh"do fo--u|SUѲlgtngiB` !!7!!7!7!l++l,,&%%b7\Xr!7!;#+732767#"&ި+N=b 1foy+'b6+ь`n9}+dl7,d#367632#"'&$6&"2)64@y`#"VW}9'((.w\(/xYs]6UUggg+#"&54632.#"3267'0g4>k0"&V1kMN,d9x!oGG*M -;276#"763#"#"''67&'&767632&'&#"I!"\R5Xj$@~ /I""op922/!!--3Zx * e@4'$WXW f^V).#"32654&#"&54632.''7'374Qk?5Og&KKЬʝ*"O.P |_9Co"EfYсv#<EA@sCB>2#"'&'7327676'&+7327676'&#"767632]Y pn=A@B3@@HGD 9&tJA*8 1LE7YODC; 65 SH?33 2, z& Xa1%$!3###737>;#" mn t)$:+~ ~,vR~I33#+732767#73ip pPRp'@v?CB*#"'&7676;#"'&'73267"326?2g v\/<~g+#F#7!;#"'&s=ǃ-+~J~=<ob#7!;1+732767#"&js&>AEL>"X~J> Fy8<~8yfk3!!f$0167632+732676'&#"#6'&#"#36762$$/\'M9;n>48S XX X'(U=(87z8=~>J|FDmDFmsA&."#"'&7326732673#"'&H/['MX?#XX?#XB''V(&88anF/0EnE0/F0%'#?676'&'&#"+7326?367632T 3:,,&HFkM45l6559eK>R 10U{ rCC4K{\7"6&'&#"#367632;#"'&751*D6569e%&Q 5Ik*,0( 1*[s\7BD~KCGn 33# #t_Pω_Plm !7632#"'"!36'&+3276BllEEBllEMB1& BC1=0XYYXXYY4(??(4-44'/76?#7;#3+737&'767>'&ByWqi;RByWqi;L;)% L;)% =0X@q~~q@XX@h~~h@A^ 44R 44%8&'&#"#"';#"'&?32676'&/.7>32-357>## 2`%%SQ((?L+,6<<;AJU0fM<9:- /0Pa10.~=<"  [L[d -+732767>;#"AG> !}* y8<~ IqW~ $+ 3#;1+732767&'&7#737'@ &6BFM="*.?'~*$fx9<~8)-z!~#7#"&?#733333+3276u6kBdN33<<<<.12%]49vummD:'!a&327676'&'7!##"&76767#7!F2) ;<.. # ) oo06:%q+-AG%n'$#'&?#7;?27676'&'7k!bc|Fh**&ef*& =62  "l!J=XYXDC~D~¯_71P<@/(f 3#iW+s !!!7!4Cj{y!!;#"'&7!7!5:t?K+)tdJ~=7{y]3276'&!367632+'67!7! 4:*P1%  (B3_$y!%!7!#"'&'732676'&+,4Z/C# noA?@;$799:Wi ))\jz @9P|@A <796'&"2767 &6 8*6+J}[,}[l?TT?l~hBTTBhc2"f'B2"fG"',B"G,-'(7 ''(G2"f+;2`"f%KXk&.4uRk&N4u2X&.fR2&NffX&.,R&N,-P2!"fM/2 "fyOP2BO"q;2 P'q;?!'( /n '( O k"04?uf"Pv1&P3 2 "f01{"fP`'=Ej1;`&3Q2"1f;2`{"f%Q'( 1"`{'( QV1&S3H1"f5J2{#fTU1O"q;J2"qfZF1&V32"6fZ2F{"Vf2"7f2"fwW'( 7l'( W2-&9f2`&Yf)Zr&:7|Z-o&C Z)Zr&:4|Z-o&vH Z)Z`'j5/:Z-&jZN`&<=7jX&\32&f(L2}&fHm&(5puL&H62&f,27&f4L=2&f 2X2y}&f(R-2&f8j2`&fXNr&<7|Xo&C \Nm&<51uX&\6r&r&r&r&&r&:r&&&r&Hr&r&r&r&{r&g&H&^Rr&^Rr&^r&^r&^&r&^:r&cr&Ir&Ir&;Ar&;r&rr&heVr&eVr&eVr&eVr&eV&r&eV:r&eV&eV&1r&]r&r& r&~r&6r&6&&Or&Or&r&r&H&r&L:r&O&O&cr&Ir&I8r&TFr&@r&|r&r&I&IXyr&Xyr&Xr&Xr&X&r&X:r&r&r&I3r&OUr&Oxr&0rr&&r&r&r&r&&r&:r&&&Nr&Nr&Nr&oN&r&r&r&r&&r&:r&&&r&r&b3r&OUr&Or&Ir&I&7&qf&Cf^Rf&C^feVf&CeVfOf&COfXyf&CXff&Cff&CfVr&)Vr&*Vr&+Vr&,V&r&-V:r&.V&/V&0Vr&1Vr&2Vr&3Vr&4Vr&5Vr&6V&7V&89Vr&E9Vr&F9Vr&G9Vr&H9V&r'I9V:r'J9V&K9V&L1Vr&M]Vr&NVr&O Vr&P~Vr&QVr&RV&SV&TVr&}Vr&~Vr&Vr&V&r&V:r&V&V&Vr&Vr&3Vr&UVr&Vr&Vr&V&7V&F&2&qVf&Vz&Vf&9&V9&`s&2-CN&q:f&*fV&rqVsr!77#7!2"Axyh96;&jTT9Vf&9V{&9Vf&eV9&9V9&f&Dff&&fV&r'6H&r'.n&MO`F&2OB&qOH&O(Oh9&O&s&2-N&q:f&bfr'@L:r'&MF&2&q&(Vr&Vr&9&&Ns&2-NN&q:Nf&tNf{r&5s;H&jr;(s`fCVf&V`&Vf&9&V9& f&qff&{fV&9fvFr7!#7 M"A"ïx9910!!+u8@ 9910!! 1/@ 9910!! 1/@ 9910!! 1/@ 9910!! 1/&BB8@4G910KSX9Y"!35׬~4@4G10KSX9Y"!#95׬o4@4I10KSX9Y"!#:6׬oa#a8s8 d@2     4 G    991<20KSX99Y"!3!35׬5׬~~ `@0     4 G   91<20KSX99Y"!#!#}95׬-95׬o `@0     4 I   91<20KSX99Y"!#!#93լ+:3լoX #!#P8s8A7t8;y Z@/4; 9    9991<20KSXY"!!!!!7!yLL++L}81;{@J   4;;  9      999912<220KSXY"!!!!!!!7!!7!yLN-ZL+JJ+LZ-J}+}` 10467>32#"&'.736HI256743IH426I235624HI447743?!!?qHLo u@;    4I   999991/<<220KSXY"!!!!!!:F'E;Hooo $0<HLp@?J%K+I"L 71= +"%>4C: L(I1KJ11F17@11.11(1/99991/<2229999904632#"&5%"32654&4632#"&%"32654&4632#"&%"32654&%wwwu2IH33JJxvvw4GH33JKޥxwvw3HH33JK'!xwxwK24KK42IxwxG45LM41J+xwxH35LM41J^\  ".:EQ\`462#"&57"2654&462#"&57"2654'&4632#"&%"2654&4632#"&7"2654&%֓ӕjg,A@[AAlӕih-@?[A #mxvvw4GHfJKkihj-@@ZBC'!xwxwK24KK42I{xwxwK24KK42%&xwxG45LM41J+xwxH35LM41J^\1m#@ /91907m2)w#=w#@ /9190 7%'-B#wv'4M B0'@@4'@ 4'@/ #647632"326767654'&#"#"&4767>32J%#J2.L'3/&%&H=4UUg$%95e <e?<7UabH>8TbaxYL+*|RMV _@3 3  3 334      991<290KSXY" 333##7!7Reml#${)%!!67632#"'&'7327654'&#"@%k&SS~DDK<$2=?o^_yvtSL&& !#!o ?u2  -=4&#"326'&'&547632#"'&54767327654'&#"L@P23('AMdJ&&iiPP?@jN++ijRRFG !2F/. !;A-,1:+*B0T'(=gHI78YR99./G}KL78d_CC)"!4,#"!$3732767#"'&547632#"'&327654&#"!$+223oKK"+66?uEDlmOP++LEcb012 7I54@5M33 <=u$>>l``FGytsTL%%188R1<98 #6'&#"#367632OJ 23%%Ey65Df)'3i~D('Gs^4;;/T:d!C{dTtdTudC;dC<d!T=dC>d T?d!T@d!#7#737#73!3!3#3#!#!3' -a&A-B&AV7#7]VPI@8Oi9RZRhMs?LUTT$$KMg|>Z$$ +K!63267# &767#736767!7!676&#">323#!seml;ro,&' c8&+ak`m8ng'|&bA5&YcRT45 2 f@PVFC ./_T% )%#&'&%6?3&'&'67679jm;;65͗KGE$%95bTFIHcc >610%R7r~or 7N'(OQ"z!;`Ko /2#"547"32764!!!>3"!#7267 8 7  b%4)/*W- -*W-  4D4E:F9G=>;N>;f A@$   9 # # ###/91<<2<<9073#######5dYЙkKuTKBCX.m{'uV'{:'uV't:{'<V'{:'<V't:/'<V'u:*{'<V';:{'=V'{: {'=V'<:{'?V'{:/'?V'u: {'?V'<:{'?V'>:w{'{:B 5!!B#x4̂x#xxM '#'"xx$Mx4x#B '7!5!'7x4x#xxM !737"xx#x4̂xB5!'7'7[x#xx#xx##xxݎxM'3'7#7x$"xxގxx#xx#x- 7!##v<Ļ vĜ<7 #5'#5!7Ĝ< dĜ<6t %!537536vdĜ #!$5>+;6-0$(v# *%;(#8MX!GL!!+Im6#"'&'&'&'&'&#"'67676327676'#5!#O$0-6;+>4!# >&.&=A"?,.!" v([+!!O7!XM8#(H. % #vdB!!'#537xZx#xZxxx##xxM'75'3''#xx$"xxxZx#xZxB'73'7'7#'7!5,xZx#xZxxxݎxxM77#75'73؂xxގxxcxZx#xZxB'!5!7w>x#xx1xx##xxB'7!'7'7!'4x‚x#x>w1xxݎxxB 53#5!5x#x,x##xM %'3'3!5x$"x,rx#xB !'7'7!#3rx#xxݎxM 7#7#5!؂xގxx#xrM%7'3'7!!5"xx$"xx",#xYx#xxB(276767654'&'&'4#!5g    @16T)+51@x#x  Q87;=49(*x##xB(!'7'7!"'&'&'&547>763"j x#x@15+)T61@   xݎx*(94=;78Q  B$=+#5#53547>76"3276767654&'&'&g@16**)+50AGx#xT61@  G    ))87;=49(*x##xH;78R  H  B$=23'7'7##5#"'&'&'&54767676";54'&'&'&j@16Tx#xGA05+)**61@    G R87;Hxݎx*(94=;78))  H  BF26767676763226767'7'7#"'&'&'&'&'&"#"'5[ #$! x#x,"    "/x#x   %$   xݎx "  ! x##xB#'7#533'7'v81x#x81x#x'x##x'xݎx9~ 7'7ckn"[ kOcuP%8 5!#Ђx"xhx##xw !#!'7'zfx$xWxݎx8e !3!5x"xwx##xe '7'7!3x$xxݎxW5p !5!7#7[_xݎxwx#x?^ !3!5Xxx"xx##x2X '5476767632#4'&'&'&7#7,#!A=PNZ]KS;>#"!*#13#'Dxݎxq!TPA>! #;SK]ZNP=A!#qx#x%'C "()/ZOR?<# !>APT2V 5!7!##2lv<ĻʌvĜ<B  !!#33#'7!5!'7xpxxpx xx,xx746#"'&'.5476732767>54/#7!&>(()NGgZsn_aMOP(&Q--'<0CB47---0v\apn_cMG.(()LNkoaZU-8:>=96/(-,r=ZHv74#5!#53276767654'&'7#"'&'&'&5476v0---74BC0<'--Q&(POMa_nsZgGN)((>\vdHZ=r,-(/69=>:8-UZaokNL)((.GMc_npaB5!B#x4#xB!!BM̂xx#M3'#"xMxM#'x$M4x#B!5!'74x#xB'7!5xxM!37xM̂xM!#73ضx#x4B  '7!5!'7 5!!x4x##x4̂xxx#xx M  '#' #737"xx$rxxMx4x##x4̂xB 5!!'7!5!'7B#x4̂x*x4x##xxxxB'5!!!!5#x4̂4̂x>#xx# M73'#'#'3i"xx$x44x#B'7!5!'7!5!'7x44x#>xxݎ M%#73737#hxxގ#x4̂4̂xB '7!55!x#x4x#xB !! !5!'7BM̂xM4x#x#xB!73!!!'7#5!!{Va6PEV`6Dx#x\HHVߞ;cff:bDx##xHHB!7'#53533'7'7##5'35#HHDx#xDDx#xDHHHfDx##xDDxݎxDfHB!'7#5!7!5!73'7/!7'!8Va68PxV`6Dx#xHH;cff:bDxݎxHHB!!5!3HH\ Dx#xDyHHfDx##xDfM#'3'#' fDx$"xDfI\Dx#xD \HB!5!'7'7!5!7Dx#xD \HyfDxݎxDfHM%37#73fDxގxDfH\ Dx#xDHB5!'7'7%!7'!Dx#xDDx#xDkHHHDx##xDDxݎxDfHHHM'3'7#77'Dx$"xDDxގxHIIHWDx#xDaDx#xHHkHH}6##7!#V`JvnJVJpvJT '#5!#5'5CJnvJ`JvdpJ^VT%753!5373JvdpJ^V^JndvJ}6%33!'38V^JpdvJV`JvnJB!!!!5!!qYNx#xdfYfx##xfB'!5!7'!5!7!5Yx#xNYdYfxݎxfYfB3773#''#5[KLnDvvx#xPP~~x##xB'7'7#''#5377vx#xvvDnLKxݎx~~PPM%#5#535#535'3'3#3x$"xV¼x#xVM3#3#7#75#535#5353xގxV»x#xVŸB #553353!Ƃx#xC{x##xM 5'3'#7#7x$"xnƂx#x}ʻB 3'7'7+53#53Ƃx#x}ʻxݎxM 7#757'3'3؂xގxƂx#x}6B !!#3xpxxxB 3#'7!5!'7xpx,xx 5!5! !!5cm 깹] 333'#!#\^Z A !!75!!5 ]]YY ###3!3"^\ZX0 m 3'335%!!# #^\znnZgm %3'3#!5%# #3!^\^dddZm! #!5#7'# #3! ^^dd9cm! # #3!3#!!5#3f\ F ^m!וddkn'33%# ##!#'37"\`\\\~$ym?TT %3'3#!5'3!3#7# ##'37^\^p\\\@ddZm?TTB 5#35!7'!!!5 5ddm]]YY'd!#7!##gv<ĻdgdvĜ<,x!5!!53753dĜ<cg<Ļd 3'3#7## #3 3^\\^XZZ֤mmB676323'7'7##"'&'#58X)O$A?x#x:[V6NJ9\ 63SxݎxH9ZY8J M 3'#'737"xxxxMx4x#x4̂xB'7!5!'7!5!'7!5!'7x444x#?xxݎB#5!5!53!54&#"#"&54632#"&54324&#"32?3-,:*:}fMHeLJdcBds<+@lFWt|uy K@&4<91/90KSXY"% !!{!5q!!{qdm3!!"&63!!"!Q )SS) PH{__{HPd;w +#"!#73#!!3!!"'&'7&'&63S) W J+!y 53W ^c>H{HPPHC4|Pu_`P`_cn!!3!!".>3!!"U*^_*&,bމ`+dm&'.#!5!2#!5!26767!5 )SS) mPH{b{HPd;w +%326767!73&'&''7#53!5!&#!5!2'#܃S) V SK,"xk 52X ^c>H{HPPHC4PuP`bcn!5!&'&#!5!2#!5!276|*]^+&,bމ`+L9@44120!!!9_^-LP *@     <91990 5!! !!5my=/9) ӇB H 10!!BKB3@ 49/9910KSXY"3#TmyTU etrI10!!M1 ,@     9190'%3##q@`44{$  %.#"326"&'#"&54632>3"36J032#"&'#"&546320P2;JC88b6J0#47632&#"#"'732UpsXlNGUnsXlNGD"McoHޕMcoH^#+4632&#"#"'732%4632&#"#"'732ronQ.A&ronQ.A&ronQ.A&ronQ.A&D"K&ޑK&"K&ޑK&^#+A4632&#"#"'732%4632&#"#"'732%4632&#"#"'732aroKnR&roKnR&rnLnR&rpKmR&roKnR&roKnR&D"KzޑKz"KzޑKz"KzޑKzB 'tJi !!!!!!JMM7:/6&'T'$'oTn$Xy&'~Xy0#"'&'.#"5>323326yKOZq Mg3NJNS`u_G0;73 ":?<776<Xy032?3632.#"#"&'XJG_u`SNJN3gM qZOK0A<677323267#"''43NJNSFXɉ;5GJKOK[C :?<7Dj323326!!yKOZq Mg3NJNS`t_F(!Z<73 ":?=676=X'y#"'&'.#"5>323326!!yKOZq Mg3NJNS`u_G)!;73 ":?<776323326!!!!yKOZq Mg3NJNS`u_G)!!;73 ":?<7763233263!!!'7#5!7!5!7yKOZq Mg3NJNS`u_G`aG#z`;73 ":?<7763236767!!!!'\UQ:43NJNS`jNDJKHEL=a?]R<# :?<77 Y A;XXy7Z@110+5.*'   'l.5l l l810* 8<29199999990#"'&'.#"5>323326#"'&'.#"5>323326yKOZq Mg3NJNS` t_FIKOZq Mg3NJNS` u_GZ<73 ":?=67 6=;73 ":?<77 6<X=y4&'&#"5>3223267#"'3267#"'&''75>3243NJNS`f]GJKO)-D\NFIKOZq gZpNS#(  :?<76Z323326#"'&'.#"5>323326!!yKOZq Mg3NJNS` u_GJKOZq Mg3NJNS`u_G)!;73 ":?<77 6<;73 ":?<776323326#"'&'.#"5>323326#"'&'.#"5>323326yKOZq Mg3NJNS` t_FIKOZq Mg3NJNS` u_GJKOZq Mg3NJNS`u_Gu<73 ":?=67 6=};73 ":?<77 6<;73 ":?<776<X<y"32?3632.#"#"&'!5!5XJG_u`SNJN3gM qZOK!!A<67732#6454&#"#4&#"#3>32!!!!!Z6^b"%25'26 R28W""35uo :5SN[5SM%Q//7V'x:!%)#546?>54&#"5>323#!!!! 6 0*)^3*?1.#'!!d_1N, %`N >@"   H H   <291<2<2.990!3!!!'7#5!7!NŮmA1}X<y !!!!!!X!!!Xy{!5!73#!!!!'7#537!5!~P$fZ=e(lN"ebSbKXy !!!!!!!!X!!!!Xy &@H  <2291/90 5!5y!PNFXy &@H  <<291/9055%!!X!! Xy 3!! 5!5X!!! PNFXy 3!!55%!5X!!> X}y#5!7!5!73!!!' 5ZYM{~ X!i i행PNX}y#5!7!5!73!!!'55%ZYM{~ X!i i행Wyq&%5767$'567Rȳ}v֜P ij~wԞP(Fd%EP7(Ge#Xy%5%7%'bk8jyx!:_|:XCXmy55X!`aX<yD7%!!'7!5!7%5%ykSnKAD*ZWOzd#@4=PhLx"LX<y@7'#5375%7%5!!' z0VFdjeG'C0'Pau6LvLXy!#"'&'.#"5>323326 5yKOZq Mg3NJNS`u_GJ!;73 ":?<776<PNXy!#"'&'.#"5>32332655%yKOZq Mg3NJNS`u_G)!;73 ":?<776<X<yD+.7%3267#"'&'&''75>327%5%RmKKt`GJKOZq G:GAFJNSMOyel!PNX yy  5 55%y!!PNXTy1!7%'757%57%5%77'4PGx0e4P0GkB$$1F4F\}F5F\|t?t?XTy15%%''5%75%7XZuu: &uvk;Z&vFIs}FyJs}Vwa%&'567$wSh"/_D$#Q_Vwa%$VhSbQ#$DbO/"X[y5%$X{qQ_#pOKI4 &X[y%%$ynq{_Q#yBpR&4 RIKX2y%%#"'&'.#"5>323326%$yKOZq Mg3NJNS`u_GJQ_;73 ":?<776<TKI4 &X2y%%#"'&'.#"5>323326%$yKOZq Mg3NJNS`u_G)_Q;73 ":?<776<TR&4 RIKVw67&%'&'567677\RN@E߾\SiIRa_bIGE#"R!+Vw'76?&'67&qRN@E߾\SiIRab_bb*IE#"R!+DXyx!!"3!!"'&5476?:nLMm:׃x|~KM᎚ِXyx2#!5!27654&#!5̍:mMLnxϚMK~|Xyy %&'&5476;3!!!"''#"T=1̆cHcw.nL!5ِEFǚ|~K Xyy +'7#5!!5!232654'&'}=1̆cH>9c.nLA!5ِE,F9|~K Xy)%!5!!"3!!"'&5476y:nLMm:׃c|~KM᎚ِXy)7!!2#!5!27654&#!5X!:̍:mMLnQϚMK~|Xy(#"3!!!"#!!'7#537&'&5476;7OnL!-u/K.~=M=̦CH|~KuLx#BِEXy(!5!27+!!'7#537!5!327654/:*'EE/&`-u/K.~-/ mMLL ,E(ϚuLxuMK~|M Xy)!%!'7!5!7#"'&54763!!"3!!y(6^N׃:nLNl:=6ؔDuِ|~KM1DXy) 2!!'7!5!7!5!27654&#!5̍Kh]6(6^:lNLn)ϚR"KDؔDuMK~|XVy1/3ް2/301!!!!X!6XVy1/3ް2/301!5!!5y6Xy I?3 ް 2 ް2/33 3015!!!!!X!!6*@Xy K?3ް2 ް 2 / 301!5!!5!!5y!6?j33?2"&'&'&547676"2767>54&'&'3!!#!5!WV,+++WWWW+++,VWGE:;99;:EGFF:;99;:FXVWih{xihWVXXVWhix{hiWVj9;SP;99;PS;93372"&'&'&547676"2767>54&'&'!!WV,+++WWWW+++,VWGE:;99;:EGFF:;99;:FMXVWih{xihWVXXVWhix{hiWVj9;SP;99;PS;933?2"&'&'&547676"2767>54&'&'77''7WV,+++WWWW+++,VWGE:;99;:EGFF:;99;:F8xxyxXVWih{xihWVXXVWhix{hiWVj9;SP;99;PS;9yxxx3372"&'&'&547676"2767>54&'&''WV,+++WWWW+++,VWGE:;99;:EGFF:;99;:FxxXVWih{xihWVXXVWhix{hiWVj9;SP;99;PS;9_xx3372"&'&'&547676"2767>54&'&'!!WV,+++WWWW+++,VWGE:;99;:EGFF:;99;:FMXVWih{xihWVXXVWhix{hiWVj9;SP;99;PS;933BL2"&'&'&547676"2767>54&'&'2#"&546"32654WV,+++WWWW+++,VWGE:;99;:EGFF:;99;:F7b%&'qqX>=,-?XVWih{xihWVXXVWhix{hiWVj9;SP;99;PS;9d)'%`8nqq>Z<=,,3!)/7?E2"&'&'&547676&'&'&'75676767'%654'WV,+++WWWW+++,VW:F!#!E: ֈ :E!#!F: & XVWih{xihWVXXVWhix{hiWV9  9{18@9p 9 9 w:A92t3!;!!!!2"&'&'&547676"2767>54&'&'+{{WV,+++WWWW+++,VWGE:;99;:EGFF:;99;:F@XVWih{xihWVXXVWhix{hiWVj9;SP;99;PS;93372"&'&'&547676"2767>54&'&'!!WV,+++WWWW+++,VWGE:;99;:EGFF:;99;:FMXVWih{xihWVXXVWhix{hiWVj9;SP;99;PS;92K 3!!#!5!!!!o2K !!!!!Moת2K 77''7!!! yxxxoixxyxs2K %!!!!!oMX'y32?3632.#"#"&'!5XJG_u`SNJN3gM qZOK!A<677F =0|bF=&N@NU@Xy&3!!!'7#537!5!!5!3>F =0|bF=&NjN@Xy5!7!!!!!!!'7Xw!6_H4%H@CffXy!!!'7!5!7!5!!5y_H4%Hw6jCffXy" %3267#"''&#"5>327%5yL;5GJKOK[_b43NJNSFXH!e3275%X!V_;5GJKOK[_b43NJNSFXJ,323267#"''yQ_k43NJNSFX]_;5GJKOK[_KI4 & :?<7D323267#"''X_Q{43NJNSFX]_;5GJKOK[_R&4 RIK :?<7D$db!3b $"}!73!z$> dXjy!#yG,$%%$nn!"nn 8ʸ#O'+6@KV#"&46235462+32"&=#"&46;5#'54&#"3!3264&#"32654&#!#"3265k֘֗kk֗֗kL65LL56LM56LM56LM55LL56LJחkkחחkkט5LL56LLkLL55KK65LL65KK5Xjy!3!y3j477632#"&'&'&#"jkbwL=.> ebP e(}bP]Y"\I\\\\I`LLMK\y>>Q1 !!R1mpp !!2mp$ !!#!#7!V.VW.Cm !5! ݠr0p !!#v !&5 ƠT_Cm 5!p g!v  !!#ƚΐ,Um!!! # q !!#v!!  rm!!#N#!v !!!##m !4763!!"{zf+!u0%y!4'&/32765!-9+en:==@ne( =F|AEuH<y 3!!"'&5!+f}{y%0Wy!! m 4'&#!!2!+fz{}%0y&'&!;!76<(en@==:ne+!< TuEA|R=y !#!!2765{}f+!y0%(!(! !!;bc;$<$!3!39W V(! ! !!!!#!#(!(F(!Z((!((!(h(!|((!(*(!>((3(i(} F( #'+/3!33!33!33!33!33!3䟟䟟䟟mnmnm(%8K#!1!!!!!!!#!1!!!!!!!#!1!!!!!!!#!1!!!!!!F????">>>>#>>>>">>>>(((((!%)-13#3#3!3!##!#3#3#3#3#3#3#ޟޟ#|ŸŸ|Ÿm#(#E(Zh!|i}h((&&(&(&&(&&i(}(&(&&w!N<w7!!!xr$<w 3!254#!") ) xrVVVw&w !%!5!5!5!5!5!5!5!5!5!N54&'.#"!624HI347652IH637J347744IH426532<( 3276'&#"327$%&#"!zzzzzzzz12Ι.̌GG2GGF@XXXX(( !#%&#")7632ΙK/zzzz`XXGG 3327$3!#"'&12zzzzXX`GG7| %63"71{y`X{G7| 2#'&#82{{x|XG7 527638x{{ΚT{GZ7 "'$33{y{TX`G|%632#'&#"12zzzzz`XXGG332763#"'$zzzzzzΙGGXXwN<wN<w!Nw!v<`/3267>54&'.#"467>32#"&'.H+(*h9;i)*,++(i::f+),H736HI256743IH426?:IILII޸[["[[w !!!!!!IIN< w !%!!5!!!I) NDJPV\bhn27654'&#"&7367'67675673#''5&'&'7&'%67'7&'67'%7&'&'%6767%&'&$h%$%%34$&1++XSA N@`==k>P CRX++XYC P>k==l?L ?Q oL+ Nn;P?;@  nMNn3%%%%34%&&%s==`?J >PW,,WW? K?_==f?H?PW,,WU?H?^<=Ke+cL mCP`k<<!4(0847632#"'&7327654#"&#%#&7&'67&'67!󫪪vӤ=6 5N'V[S.U[R󫬬񫪪񿉊 ʯX[V[X[V[!4(0847632#"'&7327654#"73$3&'67&'67!󫪪vѦ=63QNV[S.U[R󫬬񫪪񿉊w  'X[V[X[V[!4!)47632#"'&%#$''&'6%&'6!󫪪4>;D@KDzcngk?dnhk󫬬񫪪I kpinipi !4 "*2:AIX3#''%#&'52#"'&5476!!'5%!!'53'5%3'5%3#'32765'&#"M==,/0#H 8&O6 |7iY06./==e6a&i1r4z012+KN2HQ>>>>f^2"/1]8`1"Y 4f2y`1B7#5#53'&'&54767&'&=33676=3#327654'&O&"}|fzg}}"&&"}UQn$mQU}"$nQUVV{xVVUQ<"{u^^\ _u{"#| zUOOUz |#YOT{zQPPQz{TO@>)4'&#"3276&5476327#'#53'&`____`oŠqk]^^]YYňÁhgf@> '"3276'&'7#5373'#"'&5476j___``_ߓqŊqYX]]XYfhhĈÁj0 '&'&376&+"'&5'476%7!Z{z[ZZ[~\YWmpN#ZX[[YZ[PQmp#TG*52764'&#"#463233#!5sPQPPtrQPyzg֏LQQQPPQr{{t|g*#"#53533#632#47654&#"#ddiqqCBigIIugzyUr}ppDtPQs_CS 7"27654'&7#"&54767##53#533333#3##h. @\ ! 2(>>?ZW~>'3|}}! -/@ /- !^'?XY??~YX?(F}R}hh}}hLS<#5#535&'&'5'73'3#'73'676=35'73'13|e{vw}wwUATwx|xxS@Wwx}vv|d|re{Eus~~suE|VAKtrrt@X{Ius~~suI{dr|*! #!!!'!27674'&#_82V)3{D#MHZW{s{?zK8QO##"'##565'##"/547?kM ,4N"DF &Fi?JO/FB!O {|Im<&=M2227632#&547636=4'&#"#4'&#"=` ]d2 cBU;/G;SXMB:@B ս;7hf% #>|\@9@O &&5 iC n:^O G  %2O7236;2"'##'65##"'&5476;235&'&=476jS c1=EO ;SCFRʝT6*F@E1;O+.`162V Yi8/D ;8[B VRP"<B+"'##565#+"'&575477;2732;276=4'&3&'"ih;F(wQ"DG".FWCNfBy" bODUq5u4  Pro@ |S`64 'RHIOq 1 ӫg 4D% 3363'$6'"I+4 puoS^*  3%#'#3%#';&2 IʗHj7*(,377#'#'547#5773%%,ppsr,'zzxz'984?/99e5>:_u#\u ! !h i/u-1u#\u h u-w7!!!xr$<w!!!xr<w7!!xr$<w%!!Yr$<w% h5bcJ6bw bc66bw ! bc6bw! 5bc6b w #)-17%#535#5#5#5##5'3#5#5#5#5#5##5##5###5ZssssVrrrrsZVr~rZHNrrrrZZrHNbVrrrrrrV)*2 54767.54763%"&"26765%5"b6(V)/\BӜ BӜ |LX LXkbMB@KGGB@]       4 ddGe       999991/<2<2990KSX9Y"!!!!!!#737>;#"%9Zۮɮۮ-'P+CB:-cNɝ1B@M    4 ddG e      99991/<22990KSX9Y"3#!#737>3!!#"d+ۮ-'B:cNɝ31j%!?6?>54&#">32  @7 7 iubƥhf5tYEJs]XW5v{iVb_:7HI>9C~dN`:9f!#Af;\@99991<20KTX@878Y@////????]]3#%3#P/15Ds10K TX@878YK TX@878YKTX@878Y@++//]]!#+s`@  99991<<99990K TX@878YK TX@878YKTX@878Y@%         ]'.#"#>3232673#"&1!#5 `%A#5%'4 ^%@!% @8) =:Xy} !@ <<[E 104&#"32!2!"&R]U{aSyM mvjy6BpX910#ɏX?@ 991<90!#'#L\s@ 991290!373/wo@ 9910'T%#%vuN#.#"#>32N ROGj(Ɠ<7=6}N@  1290332673#"&5 ROGj(Ɠ<7=6}H9910!!w/u(!#!#Ϯ-###,!!!767676767654'&#"67632I 7Y01O9!B\5s&9=$sX&54<bX&84sX&87VX$&85H,$'5H,<X'4Mb<N['7?e<N'L<Xgk'L 8'=L4`9(_<22vm[vdhR'!RqyB\Z+`m?71XXX#/fP==-)qTj9s//BL;R;XDZjZ1XRhhNXX9f!R/Zj=====ws----//////LLLLR;XXXXXBjjjj///BBLLLLLffff;B RAPPPP%;;;Sf=X=X=X!ZZZZ-j-j-j-j-j-j)Z111!;.po!/WT;1Nu de;'Q$5tRC00#8QlR/=X-jj-j-j-jB/j=X=X;Z ^XX=XX!ssd[Ha H*%B*_bD9gE P8*U+!ih:CGD( 0 <~-g~3qYeYPz.RyucYYis9PyRu96odW@ Pqy6s Hq9tO;=Pq^eOA'^yeBOAIgX5^OXPA.(aw>8/VUkD;F|aw(xwwu=(q'|/$ qL??A?X?=iFLLqZA?ZSH%JU7e;//jL;B;Bw?w?=X;P;PF((( ,)B* ++i\+*!Ihof%+'BB;RRRPP?n;;"JJZZl)Z)Z)ZLL=X-j^^^^^^d Beeeeeeee2^ OOHLOOd9GXXXXXX4Vyso4V7^^eeOOXX999999992^ 4V7qy999e9HOOOOOOLt|ss9F11=/! ! /!! !%;o/* / BBBBB;IBBBBBBBBBBBB9?222B77BBBBB BB B BBBBBBBB}}BBBBBBBBAB',B BBBBBBBBddcddcBy1 XXBJ/XXXXXXXXXXXXXXXWXXXXXXQQXXXXXXXXVVNXXXXXXXXXWXXXXXXXXXXXXVVXXXXVVXXXXXXXXXXXXXX2222XXXXXXXXXXXXXXXXXno}XG#XC@2QiEiiDDu777777aa"!!!!GCL2 1rjD7uu)BB95sXX/HussXXXXDDDDHL  P 4D P\`d(|d p!|"#\$0$%p&$&'$''(L(() *+,`-.t/h0223457894:H;l<0=h>h?@lAXBtClDE\EFGTGTGHIJKKM(MNOPHPPQRHRS0STTUVVWLWXdXXYY<Z8ZPZhZZZ[\\\\\]](]@]X]p^d^|^^^^^_h`t`````aclccccccff(f@fXfpfffffghh(h@hXhphhiijj,jDj\k\ktkkkkklll4lLldl|lllllmnDn\ntnnnnnooo4oLodo|ooooop p$ppqq(q@qXqpqqqqrlrs`sxsssttt0tHt`txtttudvlvvvvvvwwlwwxx(x@xXxpyHz{{{0{H{`{x{{{{{|| |8|P|h|||}D}\}t}}}}}~~~4~L~d~|~~~~~ $<TlL\xHD\4 `dt8 ,$0Hd<4|p\DL\t4Ld|4Ld|,D\td,D\d `\$t`p@,D8T\Lt(pp(<XPt l@8LP@4dTl8 è0\Ŕ\ƀDŽȐ`,ˬ̐0PθtLдTѬҐ lӔt4Ր,H\p֠<א||Tڬ|۴<hܔ 0@P`p0\tވޤ0Dlߐߴ,Px0DXlDXl,HdxD$D`4Ld| <L\lplh H8HxH8|h4(\tP<L$T44DTH0l@Xp8Ptd|HXDT$4`pdt X \    d t      h x    \ 0X$<h0pH`x$`l0t$\l8p0d4DTl   4 L d |      !!,!D!\!t!!!!""8"P"h#H#$(%%L%%&4&' '(()X)*8*+D+,l,,-d-.(.../d/00X00112,223p3445556H6677x788889P9:D:t:;<<<<=d=>`>>??|?@P@h@@@@@@AA(A@AXApAAAAABBB0BHB`BxBBBBBCC C8CPChCCCCCCDD(D@DXDpDDDDDEEE0EHE`ExEEEEEFF F8FPFhFFFFFFGG(G@GXGpGGGGGHHH0HHH`HxHHHHHII I8IPIhIIIIIIJJ(J@JXJpJJJJJKKK0KHK`KxKKKKKLL L8LPLhLLLLLLMM(M@MXMpMMMMMNNN0NHN`NxNNNNNOO O8OPOhOOOOOOPP P8PHP`PpPPPPPPQQQ(Q@QXQpQQQQQRRR0RHR`RxRRRRRSS S8SPShSSSSSSTT(T@TXTpTTTTTUUU0UHU`UxUUUUUVV V8VPVhVVVVVVWWW4WLWdW|WWWWWWXX0XHX`XxXXXXXYYY(YDY`YxYYYYYZZZ0ZHZ`ZxZZZZZZ[[ [8[P[h[x[[[[[[[[[[[[[[[[\(\8\l\\]] ]]^8^`__`D`aabPblc dteeff4fHfdffgDghXhiijdjjjjk k k4kHk\kpklm mnPn`oooooopp p@p`ppppqq q@qXqqqr rhrrss@spsttuXuuv0vxvvw4wpwwx8xyHzz{||H|||}(}`}~~~D Hp `DP( LD@ X@T H,<<4(ld8@D,pD|4pHT(``(Ldl8X@< $d`d H@LD|l hHpXpl4l ðdĴDŀ8ƌPǨ4ȰxʈːTx̠\@dμL H|Ը D`՘ռ <`֘(D| (T|ؐج8Tpٌ٨4Hܔܨܼ4Pl݀ݘݴPhP`Hd(DlD`0\x8|\l XXd0`(lhLP L4$Lt,TDp0$4T8X  @ h     P    h (,THx<Tl,D\t4V+k@_J y!$ ` 9 4 }  (  _ : B F :m " : &W h Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain DejaVu LGC Sans MonoDejaVu LGC Sans MonoBold ObliqueBold ObliqueDejaVu Sans Mono Bold ObliqueDejaVu Sans Mono Bold ObliqueDejaVu LGC Sans Mono Bold ObliqueDejaVu LGC Sans Mono Bold ObliqueVersion 2.10Version 2.10DejaVuLGCSansMono-BoldObliqueDejaVuLGCSansMono-BoldObliqueDejaVu fonts teamDejaVu fonts teamhttp://dejavu.sourceforge.nethttp://dejavu.sourceforge.netFonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. http://dejavu.sourceforge.net/wiki/index.php/Licensehttp://dejavu.sourceforge.net/wiki/index.php/LicenseZV  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV sfthyphenAmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandicLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongsuni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191uni0193uni0194uni0195uni0196uni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEUhornuhornuni01B1uni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BBuni01BCuni01BDuni01BEuni01C0uni01C1uni01C2uni01C3uni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DFuni01E2uni01E3uni01EAuni01EBuni01ECuni01EDuni01F6uni01F8uni01F9 Scommaaccent scommaaccentuni021Auni021Buni0221uni0224uni0225uni022Buni022Duni022Euni022Funi0231uni0232uni0233uni0234uni0235uni0236dotlessjuni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240uni0241uni0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni0259uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269uni026Auni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02AEuni02AFuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02BB afii57929uni02BEuni02BFuni02C0uni02C1uni02C8uni02CCuni02CDuni02D0uni02D1uni02D2uni02D3uni02D6uni02DEuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9 gravecomb acutecombuni0302 tildecombuni0304uni0305uni0306uni0307uni0308 hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322 dotbelowcombuni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0358uni0361uni0374uni0375uni037Auni037Etonos dieresistonos Alphatonos anoteleia EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni03D0theta1Upsilon1uni03D3uni03D4phi1omega1uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FAuni03FBuni03FCuni03FDuni03FEuni03FFuni0400 afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061uni040D afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097uni0450 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109uni045D afii10110 afii10193 afii10050 afii10098uni0492uni0493uni0494uni0495uni0498uni0499uni049Auni049Buni04A2uni04A3uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B2uni04B3uni04BAuni04BBuni04C0uni04C1uni04C2uni04C3uni04C4uni04C7uni04C8uni04CBuni04CCuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8 afii10846uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni1D02uni1D08uni1D09uni1D14uni1D16uni1D17uni1D1Duni1D1Euni1D1Funi1D43uni1D44uni1D45uni1D46uni1D47uni1D48uni1D49uni1D4Auni1D4Buni1D4Cuni1D4Duni1D4Euni1D4Funi1D50uni1D51uni1D52uni1D53uni1D54uni1D55uni1D56uni1D57uni1D58uni1D59uni1D5Auni1D5Buni1D77uni1D7Buni1D85uni1D9Buni1D9Cuni1D9Duni1D9Euni1D9Funi1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5uni1DA6uni1DA7uni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1uni1DB2uni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1E0Cuni1E0Duni1E0Euni1E0Funi1E12uni1E13uni1E24uni1E25uni1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Cuni1E3Duni1E3Euni1E3Funi1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E4Auni1E4Buni1E57uni1E5Auni1E5Buni1E5Cuni1E5Duni1E61uni1E62uni1E63uni1E6Cuni1E6Duni1E70uni1E71uni1E7Euni1E7FWgravewgraveWacutewacute Wdieresis wdieresisuni1E8Euni1E8Funi1EB8uni1EB9uni1EBCuni1EBDuni1ECAuni1ECBuni1ECCuni1ECDuni1EE4uni1EE5Ygraveygraveuni1EF8uni1EF9uni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni2010uni2011 figuredash afii00208 underscoredbl quotereverseduni201Funi2023uni2031 exclamdbluni203Euni2047uni2048uni2049uni2070uni2074uni2075uni2076uni2077uni2078uni2079uni207Funi2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089uni20A6Eurouni20B4uni20B5uni210E afii61352uni2126uni212Auni212Bonethird twothirdsuni2155uni2156uni2157uni2158uni2159uni215A oneeighth threeeighths fiveeighths seveneighthsuni215F arrowleftarrowup arrowright arrowdown arrowboth arrowupdnuni2196uni2197uni2198uni2199uni219Auni219Buni219Cuni219Duni219Euni219Funi21A0uni21A1uni21A2uni21A3uni21A4uni21A5uni21A6uni21A7 arrowupdnbseuni21A9uni21AAuni21ABuni21ACuni21ADuni21AEuni21AFuni21B0uni21B1uni21B2uni21B3uni21B4carriagereturnuni21B6uni21B7uni21B8uni21B9uni21BAuni21BBuni21BCuni21BDuni21BEuni21BFuni21C0uni21C1uni21C2uni21C3uni21C4uni21C5uni21C6uni21C7uni21C8uni21C9uni21CAuni21CBuni21CCuni21CDuni21CEuni21CF arrowdblleft arrowdblup arrowdblright arrowdbldown arrowdblbothuni21D5uni21D6uni21D7uni21D8uni21D9uni21DAuni21DBuni21DCuni21DDuni21DEuni21DFuni21E0uni21E1uni21E2uni21E3uni21E4uni21E5uni21E6uni21E7uni21E8uni21E9uni21EAuni21EBuni21ECuni21EDuni21EEuni21EFuni21F0uni21F1uni21F2uni21F3uni21F4uni21F5uni21F6uni21F7uni21F8uni21F9uni21FAuni21FBuni21FCuni21FDuni21FEuni21FFgradientelement notelementuni220Asuchthatuni220Cuni220D asteriskmathuni2218 proportional orthogonalangle logicaland logicalor intersectionunionuni222Cuni222Duni2238uni2239uni223Auni223Bsimilaruni223Duni2241uni2242uni2243uni2244 congruentuni2246uni2247uni2249uni224Auni224Buni224Cuni224Duni224Euni224Funi2250uni2251uni2252uni2253uni2254uni2255uni2256uni2257uni2258uni2259uni225Auni225Buni225Cuni225Duni225Euni225F equivalenceuni2262uni2263uni2266uni2267uni2268uni2269uni226Duni226Euni226Funi2270uni2271uni2272uni2273uni2274uni2275uni2276uni2277uni2278uni2279uni227Auni227Buni227Cuni227Duni227Euni227Funi2280uni2281 propersubsetpropersuperset notsubsetuni2285 reflexsubsetreflexsupersetuni2288uni2289uni228Auni228Buni228Funi2290uni2291uni2292 circleplusuni2296circlemultiplyuni2298uni2299uni229Auni229Buni229Cuni229Duni229Euni229Funi22A0uni22A1uni22CDuni22DAuni22DBuni22DCuni22DDuni22DEuni22DFuni22E0uni22E1uni22E2uni22E3uni22E4uni22E5uni22E6uni22E7uni22E8uni22E9houseuni2308uni2309uni230Auni230B revlogicalnotuni2311uni2318uni2319 integraltp integralbtuni2325uni2328 angleleft anglerightuni237Duni239Buni239Cuni239Duni239Euni239Funi23A0uni23A1uni23A2uni23A3uni23A4uni23A5uni23A6uni23A7uni23A8uni23A9uni23AAuni23ABuni23ACuni23ADuni23AEuni23CFuni2423upblockuni2581uni2582uni2583dnblockuni2585uni2586uni2587blockuni2589uni258Auni258Blfblockuni258Duni258Euni258Frtblockltshadeshadedkshadeuni2594uni2595uni2596uni2597uni2598uni2599uni259Auni259Buni259Cuni259Duni259Euni259F filledboxH22073uni25A2uni25A3uni25A4uni25A5uni25A6uni25A7uni25A8uni25A9H18543H18551 filledrectuni25ADuni25AEuni25AFuni25B0uni25B1triagupuni25B3uni25B4uni25B5uni25B6uni25B7uni25B8uni25B9triagrtuni25BBtriagdnuni25BDuni25BEuni25BFuni25C0uni25C1uni25C2uni25C3triaglfuni25C5uni25C6uni25C7uni25C8uni25C9circleuni25CCuni25CDuni25CEH18533uni25D0uni25D1uni25D2uni25D3uni25D4uni25D5uni25D6uni25D7 invbullet invcircleuni25DAuni25DBuni25DCuni25DDuni25DEuni25DFuni25E0uni25E1uni25E2uni25E3uni25E4uni25E5 openbulletuni25E7uni25E8uni25E9uni25EAuni25EBuni25ECuni25EDuni25EEuni25EFuni25F0uni25F1uni25F2uni25F3uni25F4uni25F5uni25F6uni25F7uni25F8uni25F9uni25FAuni25FBuni25FCuni25FDuni25FEuni25FFuni2600uni2638uni2639 smileface invsmilefacesununi263Ffemaleuni2641maleuni2643uni2644uni2645uni2646uni2647spadeuni2661uni2662clubuni2664heartdiamonduni2667uni2669 musicalnotemusicalnotedbluni266Cuni266Duni266Euni266Funi27E0uni29EBuni2B12uni2B13uni2B14uni2B15uni2B16uni2B17uni2B18uni2B19uni2B1A afii10064uniFFFD dlLtcaronDieresisAcuteTildec6462Grave CircumflexCaron fractionslash uni0311.caseBreve Dotaccent Hungarumlaut Doublegrave thinquestion uni03080304 uni03040308 uni03070304 uni03080301 uni03080300 uni03040301 uni03040300 uni03030304 uni0308030C uni03030308 uni030C0307 uni03030301 uni03020301 uni03020300 uni03020303 uni03060303 uni03060301 uni03060300 uni03060309 uni03020309 uni03010307@tGG22dk  Y&Y@&~2}|{zG{{@zyAzGyAxw2xkw2vutsrqp%olkj j iihghhgg@fed:d}cbcbaba`;`2_^_^];]d\ [Z[ZY]ZZYX%Y]Y@X%WV;V}U:U2T;T'SRSdRQPdOSM;M2L:L2KJ;JdIHGF F F@ED.ED@.CBABA@]AA@=%@]@@?k>=%>=%<;4K7 7   @6 2   2X}Xd++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++J<       !! #" >> ?? @@ CA ^^ __ `` aa bbcc gdkh qm srutvv zx {{} ,( 8/ >    rr        0 2133 44 95 @:KBOLRQ V _ `` aa bb cc kd ll mm -n 11micropolis-activity/res/dejavu-lgc/DejaVuLGCSerif-Bold.ttf0000664000076400007640000060546410724145723023756 0ustar simcitysimcityPGDEF}Q\GPOS,GSUBѴ/OS/2᧢N7`VcmapE 7cvt 먏=\feat?@fpgm?@gasp? glyf?@headG:"?6hhea4E?P$hmtx0-?tkern#N\,locaxJ| hmaxp vt morx?C:X79k:;k<&:$79k:<IWYZ\$%&'6789:   ! &&&*&2&<&&&&&&&&&&&&&&&&&&&8:&&&&9&A22$DHRUX+-/135&a4k$&28:<HRX\01:7Y89 :u<}\}&Y0:}}}K9;#$kDHRkkkkkK79:<D/\///////&&:K6 "=$7D<FHRUkVDXDZ\mk}k<<<<<<aaDDDDakk!D#D&1Dkk kk DD$7k22$a2DDHDLRDX}\aaaaaDDDDDDDDDDDDDDDDD}}}}DD1}&&2uu$}DNHYLRYUX\}}}}}NNNNNNuYYYYYYYYYYYY1&&$&2,2$}&DaHNLRNXN}}}}}aaaaaaaNNNNNNNNNNNNNNNN1NAkDKKKKY2KKKKY2KKKK<KKKK-7k&k-7k&k$79k:<IWYZ\$%&'6789:   !$79k:<IWYZ\$%&'6789:   !$79k:<IWYZ\$%&'6789:   !$79k:<IWYZ\$%&'6789:   !$79k:<IWYZ\$%&'6789:   !&&&&& K$9<:}}K9;K9;K9;K9;K9;K9; DD$ DD$ DD$ DD$,2$}&DaHNLRNXN}}}}}aaaaaaaNNNNNNNNNNNNNNNN1N&<KKKK<KKKK$79k:<IWYZ\$%&'6789:   !$79k:<IWYZ\$%&'6789:   !$79k:<IWYZ\$%&'6789:   !&9&9&&7Y89 :u<}\}&Y0:}7Y89 :u<}\}&Y0:}O7Y89 :u<}\}&Y0:}}}&79:<D/\///////&&:kDKKKK79:<D/\///////&&:kDKKKKK6 "K6 "=$7D<FHRUkVDXDZ\mk}k<<<<<<aaDDDDakk!D#D&1Dkk kk DD$,2$}&DaHNLRNXN}}}}}aaaaaaaNNNNNNNNNNNNNNNN1N$79k:;k<&:$ $99:9;9<99:9 79:;DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntzaya/%<}a}aXDDDDCDD}1s1DDGDDDDDDBD|D^D}D^D^DFD}DDDDDJ=DyDa} /D}BD^DFD}/DD?DDXDpDCHDDDDDD<D<D.D?DDDDDDCC}1}DDj?DDGDGDGDDDDDDDDDDDD`DD0'BDxCBDxD|DDDDDDFDFDFDNNDDDDs1DDDDDDD"DDy%/@ } XDDD@DD DD^DwDDaDDDDD5$=D]45678:  ;=GI?KKBOQCTUFWXH_`JhiLmmNooOtwPTUVXY=Z?TVX==??IILLNOQQSSWW\\cdfillnoqqssww||++(2$ "(.4:@FLRX^dDDDDDDDDDDDDDDDDDD,mmDmDDDDDDDDDDDDDJ>f  (m2m}mm(2$ "(.4:@FLRX^dDDDDDDDDDDDDDDDDDD,mmDmDDDDDDDDDDDDDXz :@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz "(.4:@FLRX^djpv|aya/9R%<}}aX}R}R}G}R R}B-^}^^RF}RJ=/RRXpHR<<.RRRRRR}}x}RGGRGRRRRR}R}R}{0BRRRBRRrP-RFRFRFRKNRRtR RKRRRR"[$=D]45678  9:<>=D?TVX++  jpv| . 6<BHNTZ`flrx~f<<<<fff8<((**,0(2  $*06<D rDFLTcyrl*grekHlatnX SRB ccmp2dlig8dlig@dligFfracLligaRligaXlocl^  &.6>FNV^Zd@pt*000&LM P$=IIKKLMOO      ""$$&&((**,,..0022446688:;==??AAGGQQSSUUj| ^h "(.4:@FL|{zyxwzvqjYUSSTS S *4Vh     $ #!  @ Q &6DFHLQRVX\]g !O LID 2 "   ""> *4#IO"ILI%W$WIVAJ 4 "*2:BJRZbjr9H97H73H31H1H~H~ "4H42H2&.6:H:5H5H6H6 ";H;8H8<H< LM +),*/0(1-2 33fPq PfEd `~!BE?Xauz~_cs [w{-KcEMWY[]}  & 1 : < > I p y !!!"!&!+!_!""""""" "-"C"H"a"e## ###!#%#*#}##$#&&<&G&g&o')*+ !$EPXatz~brCw{0Ph HPY[]_  0 9 < > G p t  !!!"!&!*!S!""""""""'"B"H"`"d##### #%#(#}##$#%&8&?&`&i')* +qiWSPKJIHG97) ~><:62.& {yu @=6530.([VRLFCAL.$WLJ )  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}byqz{`jyV\byb`{{N\=VTq\f{fb--){bb??)fD)y V%hNf s{juy jdy{Hy`yqq 33Nyj``'''Dbjyyb3'b=D)fRR5fVVVJ!/TfDs04 <, %Id@QX Y!-,%Id@QX Y!-,  P y PXY%%# P y PXY%-,KPX EDY!-,%E`D-,KSX%%EDY!!-,ED-ff@ m/10!%!!fsr) )@r p s  9910%4632#"&!#5oNNppNNowwNppNOpph@ s1<20#!#++)T@3        991/<22<2222220!! !3!!!!#!#!5!!5!F+`aaE````HFR`hh$+2h@;+2ww,v %u "p3(  /,  (%!  32<912<229073;.54673#.'#.>54&'xypay| ynPUcUcyehal;#7 +'t;Ǵ, T=FV WJJ`1h '3W@,*(}}} .}"p {4+%1 412<0KSXY""32654&'2#"&546!3#2#"&546"32654&@88@A88A˿NZ;ʿ˾A89@A88e-dR.8@e,-,--,2130 ! 78/!! */,!60$ ($v&6~{-vp&03 !%$') 3/,$.)$)3 99999999991/2999990KSX999Y"0]@0 / 07 8/0178 / 07 8/0178OOf0v/u0]])'# 5467.54$32#.#">7#5!#3%326!d33J|tket =!hbTЊVmo10!!ot#` 8  KQX <<<+*>XHIuwwpq :@*v{  1/2990KSXY"!5!5%!!w;yyX@+   *  u{    9991/990KSX9Y"#>3 !53!57$54&#"xzz?`ÉvdB%%ДJ*U@- vu)&u{p+ # ) #  +999190>3 !"&'332654&+532654&#"#v!vy B4vy##̱((Hx{T=L@%* v v{ <<91/<<290KSXY")53!5!!!3qxCys+G@&uu s p     91990!>3 !"&'332654&#"#BZ@zxLw3d34(*F?B#%6@ uu u{ p& # &190>32! !2#.#"2654&#"A_^XZvyngXXggWWu44qffiѯدد7@*s 91/0KSXY" #!#!XE)j##/C@% 'u!-uu{p0$ *$* 0991990! $5467.54$! 4&#"3264&#"326ȺL\]KK]]K']rs\]rq^̥Υ$Ⱦ'wwuuշo %@@# #u#uu{p&   &190"32654&#"54! !"&'3326gWWggXXxB^$2=!oNNpoOOnib-OpqNNnneSϊXmB@29190 5--@<210!!!!B@<91905510PT "9@r ! { p#! #10%4632#"&>32#>54&#"#VpNOppONp|izwnw yNppNOppY""++o Nj@84O151 t tM18%8DO45M J+J>O229991<9999054&#"326#"&5463253>54&'.#"3267#"$'&5476$32!#|ecyyce|,ZڿZ,ۏnq\^aYkzg9~~GͲ$sLHLLG}'갏`NTFEjśewzDC^TT~~|KJ}~|aboL@Q     * v vs  91/<290KSX22Y"#5333!53!3!z23E{}y\yy1y#;`R$R@( v#vsv ## %(#"%2299991/2290&P&p&]353#5! !32654&+32654&+`uyyƤf}vV?@~ ~ {p % 10@ 0ou{{]! !2#.#"3267;Iz 'Ωܕ+ef@A`8@ vs v % (# "299991/220]%32+53#5! !Uoy,GE+yy`W@.  v vsv )( #"2221/0Po]353#5!#5!!53#5!!53`>yyy!`O@)  vsv )* #("2<21/20]353#5!#5!!53#5!3`3{yy!yV3D@!  v ~~{p(  % 190 P ].#"3267#5!# !2-ҿT;I6Ʊ&&xNLhi@A`3^@-  v sv - -( #(#"2222221/<2<20@ P]353#5!#!#5!#3!53!3`Ryyy yyyydy`` 9@vs v (#(" 221/220@ 0 @ P ` p ]353#5!#3`yyyyjV{@ ~ v s (# *.12990@ ///0@P]KTKT[KT[KT[X@878Y@____Y_p]533265#5!#!"&MLaMS^X+yy"`3@>   *  v sv (#("2<291/<22<290KSX2Y" ]@         , & & * *))'9H E @ E @ C CCHA@@@W S S S SSZy   =  ! &5 6B GQ Vv ]]353#5!##5!# 3!3`y-ٓgyyy!yy3yy`s =@ vs v(  (#"21/20@ 0 0 0 0 ]353#5!#!53`Lyyy-V{@D* vs v(( (# ("22991/<2<290KSXY"]@> (Sp  &&&:VPf`uwvvp]]353#5! !#3!53#3Vhg13yyByyysyZ~@-* v sv (( ( ("21/<2<22990KSXY"]@@Php&77h]]353#5!#5!#!3Z myyyy7ByV /@~ ~{ p% % 10@ o]%2#" ! {TxyS\BKLByjjdd`J@"v vsv  / * # ("2<99991/220Pp]353#5!2#!332654&+`R&ppyyy㭑V E@ ~~{p! % % !99999190@ o""""]$! ;#"&2#"u[xy5y3Lhjdt/92)BKLB`$@H  *v #vs v  # ( $( #"%22999991/<2229990KSX9Y"] ]3!.+3!53#5! %32654&+?Yz-ڙEaV=T \W`yÌMyyy!L)@?#"$!   * !~'~{'p* !1$0*9999190KSX99Y"+]@"( ( ( ( ((( (!("(#: : : : ::: :!:":#X X X X XXX X!X"X#k k k k kkk k!k"k#  !"#  !"#?0+P+++]]7332654&/.54$!2#.#"!"$ؿn۲' ĵhлђHbvrZd+78Ǹ,,gf]a4742o@  s v ( #(1/22990K TKT[KT[X@878Y@@_` ]!53!#!#5!3sgȇdyu-yFN@$   vsp(( ((#.1<299990@ ?]#5!#326#5!#! έ\yyyy&UR@9        *  vs  91/<290KSX22Y" ]@     # # @P ]]###5!# #5R}͍y\yy#y @\          *  v s 91/<<<290KSX22Y" ]@D "CFSV   && '##EFFGH@TX WP]]) !#5!# ! #5!#VĠBH#Ι?\yykyy 3)@f   * v sv  91/<2<290KSX2222Y"]@4*%   &+++))+]]K TK T[K T[KT[X@878Y@8= = ;;44?O]] 3!53 #5!# #5!# 3!53ɸ-!?:yy;yy\yy5yy@A       *  v sv    #999991/2<290KSX22Y"K TK T[KT[KT[KT[X@878Y@P       JJ[[Y Y _nnh o o xxx z  z  ppp  &]]!53#5!# #5!#3`D̦PNbyyy9yyByL y@"  * s    991/0KSXY"K TK T[K T[K T[K T[X@878YO]35!#!!53L{5hA7@vv210!#3!7xxB@ s/910#m@vv210!53#5x2x@ s91290 # #JJ;-/10!5۾f-10K TKT[X@878Y #fxTD(@1&&&p #35# 2)22991/99990@,*:?????9O** +//   !" ]]3!5#"&546;54&#"#5>3 5#"326hFnzjsq_q cjMORdyTP?{Wc""leedl/F!G@$!p> <58"2221/99990?#]7#5!>32#"&'!532654&#"ǘ-pp-_jmYYmj_y#xSQQSyf實TD2@  p3 >210]# !2#.#"3267&4oup~r}zkL& (**هπxTh !L@%   p55 <>2"<<1/99990?###]54&#"3263!5#"32#5!o`inYZmi`b-pp-i尦ySQ,*QSxTDe@"  p>9 ?221990@"`  ]]4&#"!32673# ! 5N^[O%|s+. Xҩwηzt#(?e@&  3 + 5A<<1/222990K TX@878Y0 0 ]#.#"!!3!53#5354632pKEPH :UN NLsyyy5yT9hD,t@., #) #p- 35 <&>2-2219999990@  ( ?.     $ ]]!"&'53326=#"325!4&#"3265jsq-pp-`inYZmi``!!ifySQ,*QSy尦?x@,   JH5 F5CA21/<299990]K TX@878Y/]353#5!>323!534&#"3F@}EUkdy#x}_Tyy5i#yF ;@  K 5 5A21/20@ /`]4632#"&3!53#5!pQOooOQpoTQooQOonuyy5yh9= L@%   3K 5 A19990 / ]4632#"&#5!#"&'53265oRNpoOQp)323!534&#"3!534&#"3!53#5!>32Js=S^h>R_h>nyjayyhyyhyy5y]VcFDy@,  JH5 F5A221/<299990]K TX@878Y/]353#5!>323!534&#"3F@}EUkdy5y_Tyy5i#yTD -@  p>; >210@`]%26&#" ! p[Zqq\\q?>Tq+)/VFD #q@+  "  p$4>32#"&'3!53)_jmYYmj_-pp-bHi實ySQQSHyyTVhD#S@*#  p$45<> 2$2<<1299990o%%]3!53#"325!4&#"3265їc-pp-`inYZmi`!yySQ,*QSy尦;LDU@%   43C 5A21/29990@ /?O_]#.#"3!53#5!>32LqPLtF4|Y3US̵\yy5yok X-D)@C  Q!  Q ! * !''p* ! 33O$O2*9999190KSX99Y"@ ]@+++) ) ) , , )6#E#Y Y Y Y Y YYY Y!Y"Y#j j j j j jjj j!j"j#  !"#  !"#  !"#<]]7332654&/.54632#.#"!"&`qlsIi^Ձq lo@SѠc)w}KF@F%)!mnEB6>%51q^@  p 8<2122990K TK T[X@878YO_]#53!!!32673#"&5˚b',:@> ۜyJyuDVZ/'i@#  pH5F 5 8<1/<299990]K TK T[X@878Y]3!5#"&5#5!3265#5?}BXkc'Ry_T+yky'}@:    LL*     91/<290KSX92Y"(]@ ,+KK[[]!#5!# #5!#ub  {yy`yyR '@[   L  LL L *    91/<<<290KSX22Y" ]@: + 7    &##**(7669 GGCCFJ WW Y ]]#5!## ##5!#Pȋ}tZ}';LyyRfyy'3@e L  LLL*    /91/<2<290KSX2222Y"]@       %+ + + )"""99?9?9 85566LIILDDZ^^ZX Wxx8$*59]]#5!# 3!53 3!53 #5!#ϼ<\ɏJwyyFyyyyyy9'@\ LL*  39991<299990KSX222Y"]@B  %%55<<<<<<FFSSVV]]#"&'5326?#5!##5!#0s1xGqCCAP(1seubMJGc%5yyuyyHF' @$ LL *   33 2991/0KSXY"K TK T[K T[K T[K T[X@878Y@ ' `]]35!#!!53Hb5wwy9+wm*\@/ + #&'  +# *& +<<29999999199999990#"&'.=4&+5326=467>;#"3m2k==k2gpRcaRpy1>$npsyspm%=1x^"^10#y*^@0"+  #)+)" +<2<99999991999999903265467.54&+532;#"+eoSbdSoe2k>>k2^"^x1=%mpsyspn$>1?-@  99199990#"'&'&'&#"5>32326]e_ aM``d_eM?VR:BHIWQ9DH &@r {  991/0#"&54632!53pNOnoNNpu1NnnNOpqJL"S@+ u u p#   ">#<<22199990%%#$%3#.'>7cWVR y.y;vqnd[h ^kӝ%#&%~ zjL@(  vu{v    <2291/22990#.#"!!!53!53#534$!2xcTuf` Axalyy=yL= /u@> )0- *( -!'-0  )'!$* $ ( $ 02299999919999999902654&#"'7.5467'7>327'#"&[\[~|їљ0l=7m9͘ќ.j?:l\\\]~Ϛ.k@?l.͞Ӛ8o6?i/Ӛ'R$@\  *v v vs"v#  #!  %<2<29999991/2<2<2<290KSX22Y"]@HD, ,##3 553;??<LLEGX o o ]]!53!5!5'!5!#5!# #5!#!!!!3Fm=߉$5myZu;uyy'yy#utNuy@ <210##  ?=5C@l)(*'W<=<$%#&W==<  WC6C  W66C*C=<6'  &- 3{D=@#69&  @#-'9C<#Y#WYW0@WV09WV*D99999999991990KSX9999Y"#.#"#"&'5332654&/.5467.54632>54&'whaQ[6ZrrSMSfvhjW]5[ssSOJr,.[n-/]pVVJC/B/Hbsh+/ZZRJE/B/Hcrg,.Y!N-=f:X#O*54&'.#"&54632#.#"3267mmllmmmmllmmyWVVVVVy{WVVVVXOWi iQhwviIbnmmmmnnmmmmnWWV{zVVVUWVz{VXV%'^j\Y=!,k@7"*# #*  {-$''"f'f-229999199990!!3!5#"&546;54&#"#5>325#"326qs3U{^_LX `ITeHS=9?K^\96zr~ZYA>KA>CJ?- -@   h h <2991<299055?+ +-@ 190!#!o10!!ot$<T@S  11*  I#=%I1O #] ^ ^][OZ+[CZ+\7U229999991/2<229990KSX9Y"3#'.+3!53#5!2%32654&+2#"$'&5476$"3267>54&'.'<d32!53!57>54&#"^HPmdHdSI?WrRZ`T{]T_SZ/*N@) )&{+ # )#kk +999190>32#"&'5332654&+532654&#"oX@ifx|PP`VOX]b[)QWNHBP`idH^o]z{POVRPWTD@?FI@Zsf-10K TKT[X@878Y!#\f9V'@1  p 5 H5F5 A 22<1/<2299990!]K TK T[X @ 878Y@!]3!5#"&'3!53#5!3265#57mJ;!nDXjc'Ry}SGyyyny;-@ s  912290!####.54$o+q}Nݸ #    104632#"&pNOppONpNppNNooo@  91/0!#"&/32654&'R>;y0f4-U$6.&7&>.+03 p&A8&;?'.3/6'?;/#2A22999912<<9999990@@:,?-?.?/?0?1PBB+-/.//$%&'789:]]4&#">3 !32673#"&'#"&54$!354&#"#5>325#"326N^[OMo %|r+NY|{grq_qmjOYV^XҩPNNηyuMONN?tWa""MSnqq`pToD&FzTf&HCTf&HvTf&HmTN&Hjf&CFf&v f&mN&jT-j@7" " (p .+% +% +>;%> 2.9999999199990@/`/]! 5432.''%.'7%.#"32654&?*V,A/24d[J//K o^^oo\9m%. ?n4d&>nI7g꾼kFV&Q{Tf&RCTf&RvTf&RmTV&R{TN&Rj{ '@   <<104632#"&4632#"&!!X=>XX>=XX=>XX>=X=XX=>XXZ>XX>=XX!3#'|@>('%" &" "p((&%'?;?2(999999999199999990@)`)] .#"326=!"&''7.5!27ZMn]\Mm\ BCoPTAB?tHVZXYYHv12VKu)21V/f&XC/f&Xv/f&Xm/N&Xj9f&\vT/VF #q@+ " p $4>32#"&'3!53)_jmYYmj_-pp-bHi實xSQQSHyy9N&\jTLP'qD$T&qBDL}'wH$T5&wwDoL'z$ToD'zPDVk&&)yuTf&FvVk',yu&Tf'mFV'0yu&TN'xFVk&&-yuTf&Fn`k&'-auT&G'XT} )a@1 & ( "$ p#l!5'% <>2*<<91/<299990?+++]54&#"3263!5#"32!5!5#5!3#o`inYZmi`b-pp-Di尦ySQ,*QS'x]xx`P'qD(T'qH`k'//u(T5'wH`'0/u(TN'xH`o'z(ToD'zHH`q&(-+{Tf&HnV3k',u*T9hf'mJV3k&*/juT9h5&JwV3'0u*T9hN'xJV3'*T9h'J`3k',u+k',DuK`3#'353#535#5!#!5#5!#3#3!53!3!5!`RRyyyyy\yydyf?%353#535#5!!!>323!534&#"3Fg@}EUkdy3gx߉_Tyy5i#y``o'*u,V&{``P'qD,'qB``k'/u,/5&w`o`&,zgFo&Lz``&,0uF' 1@55A 21/20@  / ` ]%3!53#5!?oyyy5y`V;&,-@""1F9Y&LM@6%1jV{k',u-h9f'm?`23' .F2' NF$)53#5!#5!#3!533s}cy2yyyyyzX`sl')6v/Fl')vO`2s' /F2' O`s''o/F!''kO`'yi/F'yOO@,  v sv  ( ( #"<2299991/290353'%#5!#%!53mFTFfLyuyyNu`@# 5  5 A<2<9991/290@  /Z`]]%3!53'7#5!7Do>ٗ@yyy`ixaiZl')v1F6'vQZ2'\ 1F2D' QZk&1-uFf&Qn^&gQZ9"353#5!#5!##"&'533276'3Z Ub32#"&'5332654&#"3F@}9 ?/2529912<2<99990@6   ]]%26&#"4&#">3 32673#"&'# !2p[Zqq\\O]ZNKv %zs'фHFԇ?TҩPPL϶ztMOMO.)M`l')vv5;L6'vU`2' 5;2LD' U`k&5-au;Lf&UnLl')vv6X-6'vVLk',u6X-f&mBVoL&6zXo-D&VzBLk&6-uX-f&VnBo'z71oq&zWk&7-u1>&W'A!53#53!#!#5!3#3sgȇdyuy1q!#53!!!3#32673#"'&=#53˚b'ٸ,:@> ONNNyJyDVZ@AEDFo'*u8/V'{XFP'qD8/'qXFk'/u8/5'wXFt&8yY/&XyFk'1u8/f'|XF_&8z/o'&Xz r',|: f'm}Zr',|<9f&m^\&<(uLl')vv=HF6'v]L'0=HF&xL]Lk&=-uHFf&]nF?%3!53#5354632#.#"?:UNpKEP$$yyy5yNL:>| R)2! 2)53"#676327654'&+32654&+^_xx¿EFS_SSQP\_NNxciiyY[fE+>?;;`eJ/F+3276'&#"#5!67632#"'&'!53#5)/0jm-,,-mj0/Wy"-LLpヂpLL-ߺSSXXWXSSS)()(Sy#xe$32)53!532767654'&'"+̍ őx]\]Yf"ucyyHLOKF 326&#"5>32#"&'!53)_jmYYmj_)-pp-ߺʯxSQQSywV6$! !"$'332#"V;2zI'Ωܕ+)__@AoA@V@/! '&76!267632#4'&#"#&'&#"32767;z:=TUf?==k@ALZY& (4TSP#$^{sهBAddgh@@xX  ! )53"#6763276'&+?oEFS_mlllyY[fE+GE`e'!#!#3! '&5476767676;+"3%x ̄Y]\]Luyyiiޤcu"uOOLH/F+54'&#"3276#3!5#"'&7632!#!L0/jm,--,mj/0-LLpゃpLL-"yPiSSXW6XXSSwyS() ()S TD'3%#"'&'5332?6'4# '&76 "276& d{xtp -Bkx@!'垟2_p.---..\)^E? $!.0#X Y``_``a`)3!!#3!!#!#3y>`\`yV"'&#"#676! ! 5!3276hjܕ_^+;zT]d]\> SSqpjU熢*#.#";#"32673# $5467.54$!2yv4B yvà!v{x((ѱ#PV "'533276'#5!#5!!53#5!d!a&(3{|VD KK+y!Dn^={1#&'&'&#"!!#"'&'5332765#53547632p &EP$$ qqUQQNp &EP$$qqUQQN  9&:9y5\[  9&9:y[\ Vs467632#4'&#"#&'&#"3267#5!# '&76!2FMUfEP#$^{XY&&xN&&hi  D) #5!# #5!#! '&%$'& 8 72l5iGAD! kk\kkȵu?5727654'&'53# 4'&#"3!53#5!>32 e?>*5gh21\Slmz"#Uk22@}[\Zpp`y,@lccIC#$_R54NO#yy#x}_Tji``#5!#3#"'&'(_%yQ yy<=cN&3#3!53#53#5!#Syy yy`=! 3!3!53#5!#672#4'&ٓgy4LDIq @h4[yyyyy!w P$&F'47632#4'&#"#5!#3!533!53stFB,XA#"qJ9E(@yyyCyyi}%%M ~iFH0%#"&5#5!#3265#5!#3265#5!#3!5#"&Jsy=S^h`>R_hx>njayy\hyy\hyyy]VcJV5332765#5!#5!#!#"&d!a&' mnQ KJ+yyy7hN"FVD 353#5!>323!534'&#"3F@}[\"#Uk22y5y_Tjj+yy߇54NO#yV  ! %276!!'&#"{TxyS]R  S] Q]]Qddy U&2Uc&RVU : , !26763 3!534&#"%2#"zTxVRTS MaL&S^!yy͕, dyBKLBUV\D(4'&#" !2676323!526&"UI:?D?D"')((#CqGx_d&/yyyrw)"5/b$$JM;>^ -yL1%# '&5476?67654'&#"#6763 326735ќ]^44KLbb YYnH32uvnn47401]f43GHJ,|{޸cd87+dZrvX-D2%# '&546?>54'&#"#67632327673%|c񁀠ёS@78lDE qjk^xxJJi%$:9lKKqUV5%>6B"#77m !TULM)%##@F%&>?wS|7(332673#"'&7#"'&54%6676776'&'&72/$`6+IEKpNU}%&?0\qJ W0YQ?7tG9LN[f %T7E,O|.X19q$#53!!!3!#"&'533276="#"&5˚b',:XNNNySTP$#/*yuDVZ@AEDV%!#!#5!327673# '&9gȇd&'aL&'WSz{)#uJK,,^""ppL&83qc&X\(!#! 76'&'5!#5! '&476>ݜdddcQQވzzzz8}5 ٚ) }\<ܡ%2'5!#"'&5#5!#QF= 35!3#!5#63235&'&#"4JB;qID&1\9yyyy%/GP 9E#6235.#&35!3#"&/3267VQB;qI=s(PACCqGx1s03GPuyy%cGJMbuL35#5!!#!3!!53L|kr5h HF'#!53!5#53!#!w 5wXyyfyZ+wG!"&'332654&+5!#!ovy B RGTy((H~hG 5!#5!#"32673# $54763ӉR B yvoGఢ((yTG`'!267##"&546;5!3!3oK:vy Bw"Ty((Hf+w '#6763 3!!53!5767!5!654'&#"xzxwz?uJe`ÉiD3 GHvGGdB%tu}g9CJq[kZ[GH`!"&'332654&#!#5!#5!vy }3H((HnyE`' !"&'332654&#!#5!#5!Evy Py"q54y((HCyߨ5.q#!3#!"&/3327676'&+5#53bYbH>qZf.ItqyMU "R"#/0+y#+.&!5!3!!!!#!5!jXXXXS Ѣ %#5#%` }k'?'` 6f'@'T f'@G`V '-/`9'M/F9G'M OZV '-P1Z9 'MP1F9'MQLk&$-uTf&DnZ``k&,-u f&nVk&2-~uTf&RnFk&8-u/f&XnF'~/P'qDF')/'~F'-/'~F'+/'~TDL'TP'qXDL''u$TO'YC'YDP'qDTn'qV&.#"32675!5!5#5!3## !2-ҿT;qǨI6Ʊ&&xxxNLhi@AT9hD3#53&'&#"3276%!"&'53326=#"325!#3o.0inYZmi0/cjsq-pp-yPS6SR3!!ifySQ,*QSyyV3k'-u*T9hf'J`3k'-u.k'-HuNV_'z2T_D'zRV_P'q{DT_'qGk'-uxG`f'G?h9f&n` }'='` 6']'T ']GV3l')v*T9hf'J` *326#5!! '&5!3!53#5!#!#5!#s2ZI˃nRq>o>x5{kyyyy yyZk'+u1Ff'QLl .!3264&#"!3!53!3!53&'&54767N57MN65)$SΎE{}Dz TCY#;nlMMlMS#TuJ;yy1yyf3 5#"326)$SSDZWM67LM67LFnzjsq_q cjMORdl#T짧TC 7LMlMMyTP?{Wc""leedll')vTnf'Dl')vv3#f'Lp'2@z$Tf'YDL'u$T5'YD`p'2pz(Tf'H`'0u(T5'H`p'2$z,i&~``'u,'#&~Vp'2z2Tf'RV'~u2T5'R`p'2z5;Lf'U`'bu5;L5'UFp'2z8/f'XF'u8/5'X)L&6X)-D&V)'71)q'W`3k'-u+k'-JuKT0#.:%#"32#5!72'&7#454"%54&#"326%)Mpp-Y.@f n(`inYZmi`* ),*QSxu S,OND|.Xi6L35!#!)'6767L{5^no*+hAmZbdmHF'35!#!)'6767Hb5wFnh1+y9+wmTh[vL'u$TN'YD`o'$(ToD'HV'~TP'qDV'~TP'qDV'0{u2TN'xRV'~'~u2TP'qDP'q&D<9&q^\Fr!%754'632'#767&1&#5!]Zj ޙk}^rJI UeOxF=D5%754'632'#767&1&54&#"3!53#5!>32J]Zj EUkd@}ޙk}^rJI UeOi#yy5y_T1`q'%754%#53!!!632'#767&1&m]Z4b' ޙk}yJyZZrJI UeOh9='#5!#"&'53265ۗ32#"&'!54&#"326_jmYYmj_-pp--pp-`inYZmi`ߺʯ1SQ,*QSxSQQSyi6RVD".:>32#"&'353#"32=!4&#"3265%326&#"-pp-n-pp-b`inYZmi`b_jmYYmj_SQQSHxySQ+ ,QSy!6iiʯR!!'75373 3!53!3! ;'7#>Z `, Z `E{ϨyR:3 NZ `+1~Z yy1y3+ŏf! *'7&!27#&'32673! '&'&#"RZzjtZ(jܕ+;gNZ'f )ZJ<T<]m (# ''7&5!27#&'3267&#"&Tf4oqKMVp=k@>o}LyVŠ(V5*P1hxI>&s353#53#5!#3#!53`Ly yy1!!53#'7!#5!3 sgTZLvduZoGyTZL5ZyLGXC-DH#"'&/&'&'&'327654'&/&'&547632#&!"326?n#F_e%R !q/8?%NIJeq ?5QRt,')(B Cqn&;>^ ), qQ%%*LLD@{I"%5MOR6 nb$$JMH9'!#5!#!6326?#"'&/&b5w<6&*(B CqGx_d&Oy9+wa%$JM;>^,`32#!#!5#32$$#!"3676m烚1''wE>q\yy "R!`.D2654&#"#5>;23!53mgq>E&UvS"R" rwEvyyLTD'#5!>32+32673# $3264&#"Fnzjsq_qbcjMORdyTP?{Wc"""ldlThD !54&#"326!#3!5#"325o`inYZmi`-pp-i6yySQ,*QSThD !326&#"!53#5!>32#"&'M`inYZmi`-pp-Hiʰy6ySQQS/F -326&#"354632#.#"67632#"&'!5)_jmYYmj_PG^{Q)(QSyTD>3 !"&'332654&#"T&8oup~r}zk۶**'πxLz8.%54'67 !"'#767&'&576!2#&'&#"\O A  XXY_>>sLNޗutHG UeO 0@@sx^T9C .54&#"326#"32#5!#32673#"&5o`inYZmi`-KMpp-:IB;qI<i6Q(),*QSx}{^GPTE#/%3!5#"325354632#.#"#54&#"326ї-pp-s+ͯ/1;cvM/_t]Q 3M&^ŧJTSR%_7[ztv+^*, 0]Qxft؛Vgco71476%6#&'&'";#"7673#"'&'4767.m}p JG]{A<9EB=ZD>MT(oXg,sEP3E)'1-?E.8F5XO6CQ&<9=KDQvT`71#"%53767676'&+5327654'&##56(gXo(TM>DZ=BE9DZ=BE9x@>L_34 %{ fGHGGg/P4"h9'#5!3##"&'53265#53ۗ:L5byyyyT+&643232#54#"!"&54767&'&#"#327654'&'T&Z8it=Gj6~F2]r!e> "+BPZv`IrEe:PdnB'#Kk#)%6'0 ;F/V'3!#"&5#5!#3265#5@}{EUkd'x@_T+yyˇiyF+353354632#.#"676323!534&#"3FR_hx>nja+yy hyy hyyy]Vc/V1'0%#"&5#5!#3265#5!#3265#5!#3!#"&Jsy=S^h`>R_hx>nja+yy hyy hyy!y@]VcF9D=>32#"&'53326=4&#"3!534&#"3!53#5!>32JsR_h>nyjay}PG^{}Rhyyhyy5y]Vci9D)#5!>323!534&#"##"&'533265ݗ@}EUkd32#32673#"&5674&#"3F@}:IB;qI<EUkdy5y_T\}{^GPhi#y@'353#5!#5!##3Ncgvgz0}}}V{zTD  ! 2767!!&'&"?>p.(j).['-.(+)`VWaS_aR , )%#"3!"$'.54676$3!#5!353#5#!53TSDoed W~99W%)=?)%PT=232&'&'&3276=#"'&54767! #"'&v'H[7\`7YI'zUU|]\%ru&\]{VU(xjlͩjx(POpoOQj=f=jQOopOPL^%-!#3!53&'&767#676'&_ꑷo⏷-==73=<yuvyy%ts^E,`a,2/``/;L'33265#5!#3!5#"&;qPLt4|Y =US̵yyyok ;L332765#5!#3!5#"&;qPLtCC4|Y =USfhyyyok ;9'+33265#5!#327673#"'&=#5#"'&;q.(LtIBqI32LqPLtCCF4|Y3USfhyyyok ;9LD##.#"32673#"&=#5!>32LqPLt:IB;qI<4|Y3US̵}{^GP}yok FD%3!534632#.#"?F323!5IB;qIyA[yy5y5 Ko@7J3<>H*  '&3#!53#5!#32767>7!#32767654'&#)!\O]r)8" :š*87]y30'5@7f 7AnK 5y5yy[Ay>!!W  *H><3X9-D<7=332654&/&'&54632#.#"!"'32673#"&5`qlsIiIJ^Ձq lo SPP,/:IB;qI<+w}KF@F%*LL!mnEB6%5NNc{^GPh7!&7632#.#"#"&'53276'qUNpKER"7t32V2IB;qI32#',:@> ۜyyJyDVZ19q#53!!!32673#"&5˚b':IB;qI<yJy{^GP/'%#5!3#3!5#"&=#53#5!!3265䌌?}hBXkcXVy1yy_T\yVy1y%kTH,!#"&'&'&54767!5!27654'&'5!ghc\Slmz{T^11hg5*>?>?*5@lIC#$FDKaan@ybpppp`yF<'$#5!727654'&'53e?>*5gh21\Slm\Ry3pp`y,@lccIC#$FD' 3!53 3!53Vyuq{y'Ryy`yyFd'! 3!53333!53 ȋs}ABt}yyfRyy?HF8>32'.#"3!533!530s1xGqCCAP(squbMJGc%yyuyy])!53#5!##5!#3șϕyyydyyyH9'35!#!!332673#"'&=Hb5wc:IB;qI3 3!5tI.fZq>HbYoy)0/#"R" UMyy%3!53&'&546!2#&'&#";5oYbH>qZf.ItyyylMU "R"#/0)#5!#!"&/3327676'&+YbH>qZf.ItyyMU "R"#/0)8!7327673# &546!2#&'&#"/fZq>HH>qZf\/#"R"  "R"#/8=@ %6'&$"'&762w[ZX"#$$$##5565655F='kTfD8%276765'&'&#";#"2# $54767&'&54$8"?&@%Jl:9FG&&EF99QoTgEpq;eggeF {% 43_L>@x>@I`32"/gGGHGf3&'&#"327#5!# '&5476!254632#.#"dHMtKLHIl1:utty ((5oRNpoOQpxEs~.+`%/n :TQopPOonM3Uy\8?QYO,X8TV'533!53%#5!#7!#3=S@sb}'cVy+yy?yyXy x' 353#5!#!53py5yyTVC .4&#"32653!53#"324632#.#"o`inYZmi`ac-ppMK-3 tI.fZq>HbYXyyyfy)0/#"R" UM)%3#!#53#535&'&546!2#&'&#";3#5YbH>qZf.ItyyyfyMU "R"#/0)yT %*54&#"326#!5#"32#5!!!!o`inYZmi`-pp-c'=5i6ۇSQ,*QSxwwT` *3?3!5#"32#5!!!"&'332654&+5!54&#"326ї-pp-ovy B 5,`inYZmi`}ySQ,*QSxwTy((Hfi6TI <A54&#"326 76!367676#767#!5#"32#5!!o`inYZmi``)<9XpK-pp-=5i6UF%rw 8\*"SQ,*QSx1qE#53!!!3267;32654'&/&'&54632#.#"!"'&'#"&5˚b',:@>$qWKls$$jIJ^Ձq lo SPPcohtPۜyJyuDVZ)I>KF@#"%*LL!mnEB6%5NN817&9#53!!'&7632#.#"#"&'53276'!32673#"&5˚b qUNpKER"7t ۜyJ]\NL:;ђeSPG/Ia-uDVZ1q>F#53!!!32767&576!2#&'&#"67 !"'#767'#"&554˚b',:@?XXY^>>sLN A !Nۜ\yJyuD+(Qv0@@sx^nHG UeO +AEk~?9 C#.#"!3!>32#"&'5332654&#"3!53+!3!53#5354632pKEPH@}KF@#"%*L4F!#!53#5!!!!׽,c'=5y#xwwZ)#5!## ##5!##5!## ##5!#3[QўKQ[QўKQSsJCCuCCsJCCuCCZ6#5!##5!#6zܫzS^^SV03!73#"'&5#4&#"#5>32332765#5]@}Z[:IBqI32332765#5!32673#"&=#@}Z[:I@qIDg\./ ~-(EZ#.#"3!53#5!67632J41L+,~:biO"87Q 0.99eCCDj>Z533276=#5!#3!5#"'&ZI42K,+}cj"78P0.99eCC4Dj>Z*533276=#5!#32673#"&=#5#"'&ZI42K,+}b/+&I/,-'"78P0.99eCCE(-~ ^[Fj>Z&4#!53#5!#32767676?!#32767654/&#;4M* 000 30#98Zj#5!## ##5!#3[QўKQsIDDuDDZk#"&'5326?#5!##5!# ,-J N.I,+*4 KR[TB }+*(8[DD`DDR@ { i 9190!67R`XhC7`R>=!`X .C7`R&'!Ri X.`7 2764'4#7&&'&6vTSSTvt'&l&'STTS "'&4763" vTSSTv6&'&&tSTTS'&l&'Z1"3276'&'&#"#7>323+5K0B;I(V/@??:ccbw.o44~/+CCZ1"3+53&'&547632#&'&#";bbcc9@@?/V(I;B/KCC[+/~44o.wyf<@ 91290K TKT[X@878YXW]3#'#դfyf4@ 91<90K TKT[X@878Y 373դx3üP; qH@3üx)3!#wI6wI llx!#6wIx& `iL& `jLoRgJ 533##5#5 V5 6@  120K TK T[X@878Y332673#"&}pccp}5INNIm)N A  _ 10K TX @ 878YK TX  @878Y462"&mWxWWxWAJ)- \T4mfVr@      9999199990@,               ]]5463232653#"&/&#"jf%G.G,$)1njf%G.H-$)1/F=/F=f:@ 91<20KTK T[X@878Y3#3# פfxeX327#"'&'-/1:c vM/_t]Q +^*, 0]QxZY3'&'#5!#7#5!#76ЪMT{zU \M.XHGD-DDDD_wZ 3!53#5!cUbbHCCCZ!253327654'&/&'&54632#&'&#"#"&_J 01TF&%E_k00>EETJ-,TFH7^44TS@ϧC##'$*+Ia^ =&% +,Ne/0Z}7#5!#3!53'3!537'#5!#-{V\\HY]cNT)DDCCCCDDZ1"3+53&'&547632#&'&#";bbcc9@@?/V(I;B/KCC[+/~44o.w0\#!50F\0\#!5!0F\x(0\#!5!0F\PP0\!#!5!30F(x0\)5!30>=!%>=!1`X `X .C7`C7`fCYrfvxfmeV{P: qM U5wl)Nx)rNj;2#5676'&'&#"76,XPA1 $7I]h47Q%nn&1&8"#yf|xfn\3m'D!8f#!# ZfxxU9'xwU5w 3 #54767NJFE*hE+oOP7m'&547632'6>*++'AD1-+db@ ')>61+8B8Y(Bw/.m&'&547632(@bd+-1DA&,,)x./wB(Y8B8+16>)'Rf!#ifrC Zsvvb%#5353#üD%33##D㞼gy_q!5!#]c532654&'3#"&AJ)- \T4m2~2&84(P&6`*r|>r"3"'&47637&&'&6vTSSTv&'l'&TSST53533ü#5!##a% #53533##üa5!ae9:#"&'533265)r >=3>NJFEp*hE+oOP7oz=ozfr3m;r#!#5vx;jr#"'#"&'327654532747$]87]en} KF JM 3 HHs zyvnyrm ;Vrw==!oponib-OpqnneSϊXmZsf-10K TKT[X@878Y!#\f)'jLf&  # 4632#"pNOppONyppo$f'tf'zf'zf& f'f&0&ЄL$`R%`L<)3!N`o)n`(L=`3+V "!#3!53#2#" !   TxyS5BKLBydd``,`3.L73!5333!53Dz23Enyyy\yyV{0Z1q#53!3!#!##3!53#5{N{D{{7{{{{ZZV2`2X`3S 3 !#5! !53Sh{{*Z7<V&/67654'&'3!535&'&57675#5!#%;2)]])2֜֝2(^^(N2rr1yyYne$\yy\$en|61rr2 3;A113!#"3!535$'&6+5!21#5!#676]$f[un[f$^,kr&]1ywiyyi~%y_.eyy7\#K@( ~{g g %!% $991/<22990%!53!56#"!3!&5! N#Ǣ"Orr} 0 '5 5}\A<}``&(u&(uTf'cof'FV f'Ff&ϝF<' TA,6737'&'# 76 &'&7676]T_w<,7$WVQ$$$P[>]2j0--.lj/ Q3,_c"wBmy$:"),+ `W6XYRV(-%3276'&'&+5327654'&!!"1>PS^ /;IB4'+8:$5vSR`da Ta^yxDYK0m)\oTS"f2S ''&7#5!76'&'53cĚA6\k36|u, >Kh̸Gwgnk!4fMJ,:T'0&54767632#&'&'&#"3  7626&"dd{xtp -Bkx@!'_Yp[Z\\^E? $!.0#X+XLco6H#&'&'&#";#"32767673#"#&'&5476767'&'&54767632Qp -Bkx@! 1D0=O( 3LI 'oxzxh X T'YHLqnx$!.05$#1?*G*(=5 #<LO~H?7<`E? FU[!#!3 #5276# 47D{y?w?zG-jȚ!yo]Ll& FV D3#5!>32!4&#"ݗ@}[\EUkdy_TjgXiT,!'&"!276 ! *11*h)..)Q?>AQ6sy{TF' %'&5#5!7ų{zY!p|qRy3GF')53#5!##5!#3!533s}cy6xx~yyyy{XIG%3!533!53&'&'&5676{q΁uc\-WA#"qJ9E(yyyCyy+'%M  9V'!#5!3265#5!3!5#"&'3DXjc7mJ;!VXynyRy}SGF<')#5!6767654'&'53?IZp)>**4hh2JCSlm\Ry3upc~,AX6C#$`VD 8%676764'&#"!&'&'&'&547673%6O c7>*2Bl:|CCJ2hh4*>:Y+ϞOh2JC;>k-HQ]oY066XA,~fpgnG99NvX6/79D5%3!53&'&#"#567632#5!#327673#"'&'®ws(*<^212/Jh4 2JCIv;7|CCJ2 4TJ>9('J ep]A,)n+X6;+Y066X~,H|mng QI'6%&'&54767332!327654'&'53''&CJ2hh4*>BQwbwQB>*4hh2JC;Pgd`6XA,~fpu \upf~,AX6/7!'7N&jF<N'j Tf&oF<f' QIf'T, (676'&#"'&! #327654'ix)4jm1* 줠?4?f).qi6-+_Axy{^z~s=Fx,%'&#"!3#! '&#5!3276 *[0柙Q6iq.)r?yA:ny(yݔ]dի=%6#6'&3!53SyAH=N-.)hɷ|B|>,Wx`T/pyyFyuf'='(uTV0' !! '&476!27654'&#"tdPY^]vv]^YP-qLq~a^f^a~qFb'8!32!327654'&%''&'&'&54767#5!{*>BQwbwQB>*,h2JC;Pgd`;CJ2h%" @fpu \upf= &%X6/7!'7/6X/yyT96B!'&'&7'&76?6'&'&#676?7673#"&'5376*0w34%#[Y B/?p|j*R dQ4%#[S+6+?p n\(dTiO"0B'/ 0yuh1D(dTlG /C}KP#%VY %2#"!&'&! {qxy֝\BKLBkh(dИTYD%26&"!&'&! p[Z\\$j?>kT_d!b)bVU% #5254# '&!2#.#"@T0lz 'Ω\q[Llkf@AfTU`!7653#"3 #5276# 'OptrDvc??zG-j4D3g< edo]Ll& (`)BP%47632#4&#"!!#"&'533276ԋtCYy4\(dTiO"0B'/ /zuh1A(dTlG /C0 7rrRE 032654&#"762#&'&#'&5%6#"&'_jmYYmj_4<`2q 2kTx^V}p-HiOJXO<,:)L-^JHJQSTD# !2#.#"3267&4oup~r}zkL& (**هπxh9= 4632#"&#5!#"&'53265oRNpoOQp)9l 3=kL& (**هdZyWhxTD 332767!&!&'&#"#>3 !"&Tk=3 l8?r~puo4LxhWyZd'**ڳ`353#5!#!2#!332654&+`/&ppyyyry/VF 326&#"!#5!>32#"&')_jmYYmj_-pp-HiʯTFxSQQSV! !2#.#"3267;Iz 'Ωܕ+ef@AfV{353#5! !#3!53#3Vhg13yy9yyysyV' !#3!53#!Zo҇' yyy_LUV8E%53%6#"&'!!!532654&#"UdV}p-nb_jmYYmj_yeHJQSyppiV332#"#6$3 ! $V+ک' zI@AoA@__V #4632#"! !2#.#"3267 pNOppON|;Iz 'Ωܕ+yppo`ef@AfV ##"&4632332#"#6$3 ! $BpNOppON+ک' zIoop%@AoA@__`k&N+/u`&N(/uJ-!"&'5332?654&#!3!53!#!#5!!2 WzSWMLa'!lj 'C@Op""^XK W_yyu`k&L)/uV% 3! ! #! !!'V;Iz@Njg\NwǡL6``,``&?(ujV{-*3#32#!53!#"'532667#53276&+eLȍxyOi6R7]MR(XK\Xy #rciL yM^X$yLL3` &/)53!3!53#5!#!#5!#3 %32654&+:RLЬx|OXXydyyyy yy ciN yF!23!534&#!3!53!#!#5'lj Lyy;yyu`3k&S)u`3k&Q+u2g'r\`3!"#4'&#!53#5!#!#5!#3ddgRyyy-yyyL$`e32)53#5!#5326'&+zȑxѸ[_ϐL"xcyy-?MQ`R%` %3!53#5!#5!ӿ3yyyy` $%3!!#5!#3#4'&#!"#326'TR2yddyb4yyF>hm`( k+!##5!# 3!533!53'3!53 #5!##y-+nk~~kn+-yyZyy@yyAy8yyyyy#yyZ`T# $'3 654&!#53 6& #>3 .Ǽ4B4 y:!/>߽ix{+##`3353#5!#5#5!#3!533`RyyykyyyyCDy`3'uQ`3!##5!# 3!533!53#`-"wEydyyLyy=u8yye%#"'532667#5!#3!53! 7]MR(U6M^X$yyyyV{0`3+V2`2!#3!53!3!53#`ҿyyy-yy`3V&72g"'5332?#5!# #5!# Mj3̨|lD^Xb,ryy"yyb:!V?'3"3!535 !5#5!# !5276'&#`FddF^aadG]]GdGuy M` ?',e`:)53#5!#3 !#326:ڿTwwijyyy J>V$! ! $'3! !5!! #Ay:V'glNo5A9` (353#5!#376! ! '&#3%2#"`xyS־Oyyy/ddη3y\BKLB.#"3#3!53#3!53.$!r񌗗1(clHyyy#yyV#|TDDE6(6  '&547676%>73326&"՝T> LgAY |CxD`1\qp[Z\X8J> :\zB%(n8F='#%32654&+532654&+%! )53#?ZvZOowOڭdyYb]bJHDJy_p ty5F' !3!53#5!#"pPyyy5yF'!73276=#5!#3#'&#!"#!3F$u#nwd-dw(&!y yyl5赬TDHF('+!##5!#3!533!53'3!53%#5!##`s}CB}s'x~yyyyjGyy#Gyy?yyFD)4#5327>54!"#5$3 ! 33276]=0D1֓poV'aQM1#9]#$@au| &A1F'3!533!53#5!#5#5!{q}yyqyy5yykwyyF'qF')53#5!##5!#3!533{s}cy6xx~yyyy{X"'7>=#5!#3!53!#"/2I-np(F?ZK}Vڤyyyy5}F'3!53#5!!#3!53!_P73pcyy5y|yuu:F'3!53!3!53#5!#!#5!{]}yy}yy5yy?yyTDRF'353#5!#3!53!3FPy5yyyy5y/VFDSTDFB'!#5!3!53!#BTyy'ߨyy59'\SV ;32?'&#"326&#"'7632#"/3!53#"32#5!ޒJ#%Ho#T3UU3R%/@Ƒ-b-zB/P77L:77\GGyyqG+(Gx'[F'%3#'&#!53#5!#!#5!#wd{]|yly5yy5yyF' #5!#;#5!#3!53{;Gۃ|zyyD2yyyyFT'%!#5!#3!53#5!#!#5!#]|{]gy5yyyy5yy5yyFb')53#5!#!#5!#!#5!#3#'&f{]g]|wy5yy5yy5yyl'!#3 )53!#3264&#~ ,yNN'yOFy5``U' $!#3!53#%!#3 )53#3264&#&o/ ,NN'yyy5yyOFy5?``U'!#3 )53#3264&#U ,NN'yOFy5?``WD6! ! 332767!5!.#"#w4qI k?2 lv~qpH\jhSw¾vlD!#36  '#3!53#26&"l 03>ǗoI\[Z\'yyy5h2'#"3.4$3!#3!53#!53b{wf_#;UYdoQoyyyc$yTf&nCTN&nj9 .4&#"3!53#535#5!!!>32#"&'53265EUkdݞx@}323!534&#"3Fݞx@}EUkdy+yxy_TyyidyFf&svFf&qC9&a|F'!"#'&#!53#5!#!#5!#3drd{]}y5yy'yyy'3265!!#!#'&+3 )53#"#!5#wIryZڿZyr>yYMy!Y:&#"#5!#5!!#&+3 )5332764'&# .bl  lb. ,bNFIIFNznxzOFyt/11/VTD   %267%!."?>WVxT.(+ )ӸyɲaR`+#3#!2767654'&'&'&+'35#!32#iOyxȅLXL..;]\!=r\y Liޤcr#/u2OL $Rq.32#!53#53!33276?654'&'&#C8t522\ GrQWy3/&E (J @ AkJ 5y5yJyH $9e6` %3!53#5!3!ӿyyyy%RFX !3!53#5!3yyy5y1`3!53#53#5!#5!!ӿ3yyqy'F'!!3!53#53#5!#5!?@Py"eyyysyIyߨ`JB+3!53#5!#5!!2!"&'5332?654&#ӿ3' V{SWMLa&!yyyC@Op""^XK W_F9 ''3!53#5!#5!!2#"&'532654&#APy"aY\}csy{Xyy6xx~yy;J3 #3#!5#!5# 35!335#535!3տ'Ӡyy\+yyy(pyy?!5#5!!!#5!#3!533!53#5ݗgs}c5gx߉yyyy{Xyy335!#!5#!5# 35!335L'Ӡ-yy\+yyy!y(##5!#3!533!53##s}c'x~yyyy{Xyy6:`N!53!3!53#5!#!#5!#3!3Rydyyyy yy!fF'!53!3!53#5!#!#5!#3!{]}y}yy5yy?yy;L` d3!35!3#!5#!#!5#!33Rhy yyyydyy`FU'3!35!3#!5#!#!5#!3{]}y'y?yyyy}yy5!`J 135!3#!5#!#!5#!2#"&'#3 767654$#s-R!'aLMWSzW kyyyy-yyyW KX^""pO@CgF9'-35!3#!5#!#!5#32#"&/32654'&#{]}UE:IB;qI<[Z yyyy5yyoi{^GPkljVo'zoZToD'zz!53!#!#5!3!sgȇdyu-!fB'!53!#!#5!3!$yTyy5!ߨ;L<V'%#5!##5!#3!53seפbO_yyuyy yy 3)53 3!53 #5!# #5!# 3#ɸ-!ꍠy:yy;yy\yy5!')53 3!53 #5!##5!# 3#3ɏJwӠ8!&aLMWS{V kyyyyyyyW KX^""pO@CgF9R'- 35!335!3#!5#732#"&/32654'&'LASUzUE:IB;qI<\Wyyxxyy#Li{^GPklh`J3)%!3!53#5!#!#5!#!"&'5332?6R WzSW|MLa'!Uyyyy yyC@Op""^XK WF9'$#"&'53265!3!53#5!#!#5!#32!#32673#"&3264&#"N^[OMo |r+NY|{grq_qmjOYV^ҩNN6-ηyuMONN?tWa""Mn`pD2 !"'&'53327654'&+5327654'&'&#676x0eggeWcdmt >>ul:9FG&&EF99ms|_^DgGGHGf%]-.43_L>@x>@I`32\|a_d- #"&54632#5!#3!pQOooOQp}QooQOonyyy D1"26&326=# %54&#"#>32>3 !"&=p[Z\\O]ZNKv zs'фHFԇ:ҩPL:(϶ztMOMOMTD ! !&"T?>sZ\)T ! !265Z\)+*!53##!#!2654&#!#y_Tymk%y@|BXjdp+ -%"&462"&4632!53##!#!2654&#!#~BXlbrt0%#!#3!2654&#!#3!2654&#!#3!53#+jayyhyyhyy5y]VcJsy=S^h`>R_hx>nVH'3!5#"&546;54&#"#5>325#"326_,mEgnuMQCHGC024?CJ.,`Zbb#GD07~uu32+32673#"&3264&#"`?,lFfnuMPCIGC123?$CK/,aYcb"GD06~u,u;o7;V !54&#"326!#3!5#"&546325K=BE89DB=>__`FF`:g[`a[B32>32+32673#"&3264&#"K1;:2{0uFOWHX jT28NvYNAGH32#"&'!5%3264&#"`?`FF`?32#"&K1;:23OWHY it]\k ArdC?c^V2"&54767&'&54632#&'&#";#"2673@@ss@@7?>EI''JD%$,-WX,,$$EHN k=:UM9'' ''8NU v34*"#B"#)43DG64V22#"'&'53327654'&+5327654'&#&#676d@@ss@@6??EI''ID%$,-WX,,$$EHN k<;UN8'' ''9MU v34)##B"#(53DG55V+#"&'53326=#"&546325!4&#"3265*ɷCHG WQhU`FF`>=BE89DB=|:8VnB---.KCg[`a[fV #"&54632#5!#3!G32FF23G`__ -==-+=<CC=CV!53#5!%#5!#3!53'3m__>P2|IN?UCBCCCC0Vb0>323!534&#"3!534&#"3!53#5!>329/lHtr`qP'4;BPP'3'eERf:6rsCCm9OJCCm9OJCCCS307VW&53#5!>32#"&'5332654&#"3V__>(hOpt%V.G%*.%,5D?RCCS4/tqGY\ |,'4CK9V^CVJ26&" &54632G99::ɱjijk>V>32#"&'5332654&#"V­FJG OH]OMWCR>dcJHnqFBVJ 4632#4&"Vɱ9:ѐijVJ #"&53265Jɱ9:БijV !3264&#"'#5!>32#"&'3!5332#"&'!5326&#"x?#jsq-pp-`inYZmi`!!ifySQQSyfʰF'!#3#3!53#53#Fo'yyyyfyV9%3#"&'53326=!53#5!?32#"&'=BE89DB=__>aFFa:f[`a[WCCK.--- V#"&54632#.#"3267­FJG OH]OMWCQ cebJHnrGBV,.3254#'676!"'#767&'&547632#&'&#"t;bW91[tQVkkje788; ''I]02&T;D 'n'/OO8+TTT M#$@B|4VJ ,#"&54632.''7.'77.#"2654&UvȲɚ6 )!a?X9/F;;:R~"=R7H" = (U9 i~ih;iV2"'&'3367654'&+5327654'&#"#567632d;<k NHE$$,,XW-,$%DI''IE??6@@ss@@46GD34)#"B#"*43v UN8'' ''9MUV#.#"3#3!53#5354632G/,2-@`dd5g1r**?GKC=CCCIae V#5!3##"&'5326=#53@_>jj%V.G&).%^^CCEY\ },'4CECV'!##"&'53326=#"&54765#"3265_ɷCHG WQhU`FSRPE89DB=C|:8VnB--~TR`a[fV3!#"&5#5!#3265#5Wd(gOqs`Q+6C?RB<4.tq1CCJ:W^CV3!535#535#5!3#4632#"&`b____>``G32FF23GCCCCC-==-+=<V#5!3#"'&]<9mu/=eMCxH!"6#V '!#3!53#__`b__CC=CCV5!'!#3!53#V__`b__CCCC=CCV '14632#"&#&547232#5!#&'&'&#&7>5F41GF23G+HP۠_>=F tS$-=>,+=<*/zlCr#-1,PE1OV##5!32673#"&5_>$.*%H.V&BEC4',| \YV3#"&'53326=#53#5!`%V.G&).%__>CEY\ |,'4CECBV 53#5!#353VxxyUCBBAV=>32#"&'53326=4&#"3!534&#"3!53#5!>329/lHtr%V.G&).%'4;BPP'3'eERf:6rsםEY\ |,'4CEm9OJCCm9OJCCCS307Vb0#"&5#5!#3265#5!#3265#5!#3!#"&/lIsr`P&5;APP'4323!534&#"1#"&'53326=@_>)gOqs`pQ,5D?%V.G&).%CS4/tqCC6K9V^EY\ |,'4CV@+53#5!>32#32673#"&=6754&#"3V__>(hOpt%.)&G.V%,5D?RCCS4/tqEC4',| \Y K9V^CVU53#53#53##3VVVAVvxACEEE_CVJ  &546322767!!&'&"ɱG:f5/ut/6o-45-V%-!#3!535&'&547675#676'&7{[ss\|b{YttY{{&& &&C ARRA CC@RR?) 55/ 55V;=332654&/&'&54632#.#"#"'32673#"&5[G _QDH.B\h./;QGWPDF(4\22%.)%G.V&AE)'#'**G`]<<&$! +*Mc^7C4',| \YV!&7632#.#"#"&'533276'XG6f1F0+4# WI%V.G&). >`33 }**!F&P7. |,'(5V$#53533#;#"&'533276="#"&5aaߺ$&V.G%)-bCCL&sY\ |,'E5KeV%5#5!3#3!5#"&=#535#5!#3265xR1XX_(gOqsRR`?)8C?CCCR4.tq2CCCm;W_V[,##"&'&'&54767#5!27654'&'5!oAA>:4DEMM5;AApB"'''(!#GGO;m(%'%)65>>>eY5B[Vw$5#5!727654'&'53_>`@''"QoAA:5DDGCu|=>fX5B#GGN<67(%V|3!53 3#53DJQWMCCqCCV 5!#5!!53VKp6KCdB:jV5!#5!!332673#"'&=VKp%.)%G.V&KICdB:uC4',| .,[EVG"#767!5!#5!367676%376WKp&$7ZYGa'= PP CdB:K2Sk>;'U,#"&'5332654&+57!#5!FeKVLbW`imd*Ko .Css{NR\VYa{dBVJ!&'&"!276 &54632O3ɱvIVVIHRRH7L&$T7D&DX`R&%bu/F&EEu`KR&%a/KF&E`R&%a/F&EVok&)yuTof&v`&'buTh&Gu`K#'TKh#G`&'aTh&G`o&'Toh&G`7&'mIT:h&GmL`&('0u+/T&H'U`&('0u)1T&H'U`&(/TD&H`9&(/T9D&H`&)&u?&IDuV3&*uT9h &J`3&+u?&KEu`K3#+?K#K`3&+u&KEu`o3&+?o&K`;3&+?;&K`9`&,9&L}`3r&.) |Fr&N)N|`K3&.FK&N`3&.F&N`Ks#/FK#O`KsP#qDpFKP#qDq`s&/%B&O}`~s&/,E&OmWV{r&0)I|FHf&PHV{&0=pFHN&PxjVK{#0FKHD#GPZ&10F&QxZK#~1FKD#QZ&1FD&QZ7&1mUIFID&Qm[V&2'~u+|T&R'UV&2'~u)wT&R'U`&3bu/VFf&S`&3bu/VFN&Sx`&5bu;LN&U`K#a5;KLD#U`KP#qaD;KL #q`&5a;LD&U}L&6uX-N&VxBKL#6XK-D#BVKL&6'uXK-N&V'BC&7u1&W}uK#71Kq#5W&71q&W-7&7mI17q&Wm5IFK&8/K'&XF9&8/9'&XF&8/'&XF&8')*u/&X'F&8'u/f&X'Ro&9*uV&Y_KR''9K''TY r&:+| 6&ZC) r&:)| 6&Zv &:jA &Zj} &:| N&Z~P &:K '&Z} 3&;uN&[_ 3&;uN&[_&<|9N&\_Lk&=,uHFf&]GLK&=HKF'&]FL&=HF'&]F?&K &W}u &Z~9&\_T:&Di/X-N&VCKL&$TKD&DXLb&$uT&DYKLk&$',uTKf&D'XYL&$'u)T&D'YXL&$'u+T&D'YXL &$'uTl&D'YYL&$'u*T&D'YYCKL&$'uTK5&D'XY`K&(/TKD&H`b&(0uT&H`&(*1TV&H`Kk&('/,2uTKf&H'``b&,uF'~`K`&,FK&LVK&2}TKD&RVb&2~uT&RVK&2'}~uTKf&R'FK&8/K''XFb&8u/&Xr&<+|96&\C K&<'&\^Ri&<|9&\_o&<*u9V&\_T'T'T'T'T'T'$T'T'L&L'p&&Ƭ&r&DzL&L'vco&tco'co&gco&rco'co''>',&B&ƬBV&&DzFV 'FV 'FV 'FV 'FV 'FV 'FV 'FV 'q'>e'2 &N &ƬT & &Dz 7'l 1'mF&F&&&ƌ&&Ǩ:&1&ȗ'J'2&H&ƬN&H&Dzj'l X'mT'T'T'T'T'T''<"' & &Ƭ&O0&DzF<' F<' F<' F<' F<' F<' F<' F<' s' &Ƭ #&DzZ9'mpQI'QI'QI'QI'QI'QI'QI'QI''TY' & &Ƭ&PY&Dz'l'm\Tf'Tfcof'cofFV f'FV ff&؏FfTf'TfF<f' F<fQIf'QIfTM'TM'TM'TM'TM'TM'TM'TM'ML'ML'M'BM'BM'M': ML' ML' FM &͜FM &͜FM &͜FM &͜FM &͜FM &͜FM &͜FM &͜Mq' Me'!M '"M '#M 's$M '%M 7'&M 1''QMI'PQMI'QQMI'RQMI'SQMI'TQMI'UQMI'VQMI'WM'XMY'$YM 'ZM '[M'\MY'$]M'^M'_T5'wT 'qTMf&`TMA&TMf&TV'TMV&L}'wHLP'qDf'vHLfML'WMW'&547632'6>*++'AD1-+db@ ')>61+8B8Y(Bw/.fV{)s'VjFM f&d͜FM D&͜FM f&͜FV V'FM V&͜f'v$f +f'vf`M3'Y' u&f&@5&wF &q&֎&V&&``k'/u``P'qDXf'vfW' T'.f&F<5'w F< 'q F<' F<V' V' F<V' F<' k'/DuP'q&D9f'vpf'Dx)s&j)fCQMIf&lQMI'&QMIf&QI&QMI&5f'vfsf'vf\M'ZsfvZ&'&547632(@cd*-0EA&,,)x./wB(Y8B8+16>)'o10!!oto/10!!/10!!/10!!/10!!&BBR@ { i 9190!67R`XhC7`b'@s i 9190>=!b`WC7a=?@  i 9190>=!=`WC7`b'&'!'iWa7#2@   { i i991<22990!67!67#`Y`XhC7aC7`b4@   s ii 991<<2990>=!%>=!3`V`WC7aC7a=?3@    ii 991<<2990>=!%>=! `Y`WC7`C7`b&'!&'!'iV1iWa7Ca79; 8@   s TRT  <2<21<2<203%%#5)j))jJ##R##9;a@5  s T R T <222<2221222<22<203%%%%#55)j))j))j))jJ####I####'` 10467>32#"&'.'535II245633JI326J235624IJ336633'AF'AoH#` 74632#"&pNOppONpNppNOpp` %462"&%4632#"&BppppdpNOppONpNppNOppONppNOppZ` #&@r! p$ $1<<220%4632#"&%4632#"&%4632#"&pONppNOpepNNppNNpdpNOppONpNppNOppONppNOppONppNOpp1  #/3?Kk@723030121*@ }}*}$F}4:2p0${L C= I17!'73-L12<<2220KSXY"2#"&546"32654&"32654&'2#"&546!3#2#"&546"32654& Z˾˾@77@A88@88@A88A˿NZ;ʿ˾A89@A88dߋe-d 1^ !-9CGS^2 &546"32654&%2 &546"32654&"32654&'2#"&6!3#2#"&546"32654 տ˾@77@A88D˾@77@A88@88@A88A˿NZ;ʿ89@A8dddߋev-ds-@ h291905s+--@ h<91905+-AB&M B0Bf&""T&"T&"=H27654'&#""'&7632KKLLeddedeed<<==<<<<@nnnnnndnn1;P@(*  {1k 1 <<912<290KSXY"!535!533#3%%}{}w^yX^yNj#%!>32#"&'53327654'&#"#*f9yffeMSL,-W]--,,Y0&%!?[MKKP((76om67$R?,67632#"'&547632#&'&#"27654&">*23Cķw,16wܭ(u "/;37367'"76!3 !73 4&+3 #"'3254#"(/k$@zciE"wv3KMiF323!654'&#"F}S}G-l Uk!tx}_TjCl=JyF0,4OR 02"&6&"26!!463"!#7265#5!'y[WUZ[ZYZ8XCCjQvupwRxxVWuw 9PQ3ӊ9PSy(@G$  & "s)! ]!]]'#]% ] ])22991<<22<229990!#5#3!53##%3#3!53#3!53#55LVVKVVVqVTTմb`PPb%R`PPgPPR\`3.Lmx'ud&{HV&t'Hudx'd&{HV'd&tHZ&u'dH1&'dHx'd&{Hj&'dHx'd&{HZ'd&uHj'd&Hf'd&Hxi&{HL?8 !#53?`4_4  !#53% 4_4uh8 5!3#u4_4(4c c4 3%#54c c4`4_4LF)=@'! '!* $$*991990>54&#"#"&54632#"&54324&#"324,,:*:|fMHeMIecBds<+@lFWt|uy )L@(*s91/90KSXY"%! 3dd+) %!#}{1b+/w=@"  a ba c ba22122<20!#3!53!3!53#/XFFT^TT^TTw9@$   91990!#'.#!!26?3!5 ӋX\S~!v0" HX6S4+)X&G10!!)@*p{10KSXY"3#)Z #    104632#"&pNOppONpNppNNooHD *@    91903##'%ugdɌKZ3qtk %.#"326"&'#"&54632>3"3.zN]vlQK~F\E`]XD_#|F-{=LJqXUqtq}밸urKL /=@-$ '! !0 $`*`09999122999032654&#".#"326#"&54632>32#"&-{N^ulQJ|.zN]vlQK~E`]XD_]1KLoYVqr$LJqXUqtE}밸u찷qr%!3!0r%!3!045J!!! 5EGT5J!!!5fgwT1N76! !4'&#"!1o{$o.8.> c ('8z`yNB2F KbPfbN>J?(:1'S S1 'S@'S S!!#"/&'&#"5>32326]e_ aM``d_eMUS: BGJVQ9 DH-!!#"'&'&'&#"5>32326]e_  aM``d_eMVR9BHIVR9 DH9\@/5470-7),! 0 )077!:54,:<29199999999990#"'&'&'&#"5>32326#"'&'&'&#"5>32326]e_  aM``d_eM`]e_  aM``d_eMoUS:BGJVQ9DHVR9BHIVR9DH >@"      <291<2<2.990!3!!!'7#5!7!Vb5}I !!!!!!r $@   <2291/90%!5 5yPP $@  <<291/9055%!!y 3 %! \ !C|7!#!7xV!#5x7!3b"Vx!53!bx!#{hI,$%%$nn!"nn 8ʸ'+6@KV#"&6 3546 +32 &=# &6;5#'54&#"3!3264&#"32654&#!#"3265˭ʏʭʏeHGeeGHefGHefGHefGMGeeGHe`ʏʭʏ˭GffGHefffGMGeeHGeeHGeeG!3!h{q4732#"&'&'&'"bwL>.> abP-( #"&54632267bwL>.> a(}@bPqT !!!!%!!Pr6L+x  #/;GS_kw+7CO[gs{ + ]b+]%*+%++]и/bи/*и/%hи*nиииии/ ++"+"f_+f:3+:++'и"-и3?и:Eи3Kи:Qи3Wи:]и3cи:iи3oи:uи3{и:и3и:и3и:ии/ии/ии/ии/ии/ии/ии/ии/ии/ ии/ии/#и)и)//и5и5/;иAиA/GиMиM/SиYиY/_kиfqи_wиf}и_иfи_иfи_иfи_иfи_иfи_иfи_иfии"ии"ии"01!2#!"543!254#!"+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2%+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;22+"=4#"=43+"=4;2+"=4;2"=43!2#UݓJIIJ%J%%J%%K$$K%J%J%%J%F%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%%%C%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%$%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%$%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%%%%%%*$%%%J%%J%%K$$K%%%%%JJJI%%I&%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%J%%%% %I%HJ%%J%%J%%J%%J%%J%! !p ! !p. !5!!!!D.bb(!(! !! $<.3!3.b;(t;!O;!O ;!O;!O;!O;!O;#!O#;(!O(q(!((!((!((!'(I(!]((!((3(:(|' q( #'+/3!33!33!33!33!33!3mnmnm;(%8K#!1!!!!!!!#!1!!!!!!!#!1!!!!!!!#!1!!!!!!qlllllllllmmm((((;(!%)-13#3#3!3!##!#3#3#3#3#3#3#^^(ll(lm#;(q#q:(!&9'(9(&&9(&9(&&9(&&9('9(&9(&&%! %!!!,7r+uv ))xxp) )$7632#"'327$%&#"%632#"'~~~~eMM>yJJJJJ6````qq|qq#u"@91990  9%-p) 327$%&#"%632#"'MM>y````qq|qqr' '/7?G%&'&'6767&'&'7%'676727"'64'7&"'62&47\+;.81F9K58.42d;E9G,:.80G9J6&8.;+d1O9FLL&_`JnLL'`_n<1& j(0=Ju &,A=N:0('<1& j(0=Ju &1<>EB0(n_II'[[JnII'[[p) %/36%632#"'327&#"6767&'&6py AAAA,+-,,-+A@@Rqq|qq%%mܱ[0$ %@%|"p) )73276'&#"7632#"'327$%&#"%632#"'r99:9rr9:99XWXXXXWXMM>yB!!BB!!oe33eje33````qq|qqp $  $pkk]Ak^p $  $27$%&#pkk]<MAk^a``p $  $"3pkk]<MAk^``p $  $327$pkk]\MMAk^>``p $  $%&#"pkk]Ak^>``p $  $"327$!pkk]<MMgAk^```p $  $"!pkk]<Ak^`p})6%63"'pRqq)#2y|q*q( 2654&#"!|~}}|v< ( 327$%&#"327$%&#"!IMM>y_O````}|qqqqH( ( !#%&#")%632OyyMMqq>~``  3327$3!#"'$@1>qq``) %63"æqv`) 2#%&#u)q>` 527$3Muyv`>q "'$33yuMq`p)%632#%&#"puqq>``p3327$3#"'$puMMuyy``>qq!% !% !%! !%!$3! 2654&#"4632"&nȊce;~|ddcc||}%!%!!d r<%!%!!We r<%!%!W7 r<%!%!W7 r<% !%!!!!+c,b r<<!% 4632"&! W>>VV}V2 j>VV>>VVJ !%! c  !%! b  p(  7& $  %;<*X֖% !!!!!!,7,rWb<)) Ie% !!!!%!!,crWbM)MM^??@7`d?\gOOOOy>*<?v^  <BHNTZ`fl3264'&#"&7367'67675673#''5&'&'7&'677&'67'%%&'&'%6767%&'0/CB^0/AC/88pkTcR|NOOfUip88pqUfONNQaQh!$ b)dLQk KRt!% c'd&//^000NN|P_Pfp88poQ`QyNNP\ Qgp88pmQ \Py,  M N>&`7" bK*V&"g{ M M !)1a + 0,+0$++A & 6 F V f v ]A ]A]A)9IYiy ],и(и(/A0&060F0V0f0v0000000 ]A00]3 +++&"+&"*и&.01! ! 3254#"&#%#7&'67&'6767KJ]_VNEWMCe2ntjnti7IL6a] ]pu otpu ot !)1a + 0,+0$++A & 6 F V f v ]A ]A]A)9IYiy ],и(и(/A0&060F0V0f0v0000000 ]A00]3 +++&"+&"*и&.01! ! 3254#"3$3&'67&'6767KJ]_TNEAgntjnti7IL6a] Uypu otpu ot %ͺ + ++и/A]A)9IYiy ] "и"/' + ++ и / и$01! ! #$''&'6%&'667KJOR`7IL0c Z    "*2:AIXY/Z/ܸܸи/и/Yи/и/BиB/CиC/EиGиG/LAL&L6LFLVLfLvLLLLLLL ]ALL]F/H///W+$'+$+и'/013#''%#&'52#"'&5476!!'5%!!'53'5%3'5%3#'32765'&#"sNN99=>-1\ H0e%FKSwZGr=;=NN$E| 1 ?'_>?@7`d@\hPPPPy?+<>w_VG{?,rCA0:1@!7+7 + .++..9и  и /к.9A7&767F7V7f7v7777777 ]A77]7!и+=и.B /"/+/-/ / + '2+':+:2'9и и и/2'9017#'#53'&'&54767&'&=33676=3#32654'&i($lm$(($[Uu&tU[$&uU[[UV$|ddb e|$% ZSSZ %_TYYT* $+++A]A)9IYiy ]A&6FVfv ]A]и/"и&/++ #+ #ии!и!/014&#"326&5432%##5!&w衤礡PP䤣L~~| * $!+ + +A&6FVfv ]A]A ]A ) 9 I Y i y ] и/и/&/+ + + и/ и/ 01"32654&'#5!3%#"5476礡𳉧פ㤤ף |~~L #+%+01&$76+"'&5'476%7!ttsstEus pid5s qttrtt<֤ꧦg\ul9S//и/A&6FVfv ]A]9ܸܸ//++0152654&#"#43233#!5 z{ym㗗yyy{(|jǸ /!/ и/и ܸи!ܸA]A)9IYiy ]и/ ///+ + ик  901#53533#632#4654&#"#*jjoon}mZyH{zF2 4˺+ + .++. ܸ"и$и&и (и+-ܸ0и+2и.6/$!+$ + &+&$'и&)и$+и!-и /и1и301"32654&7#"&54767!!53#5!!3!!#3!!8OO87ON=0LmkL/>Λ2  1O79NN97Os0LllllL1KӘJJ-'< ++4)+4к 49ик 49 49" 49#A))]A)))9)I)Y)i)y))))))) ])+и+/, 4942и2/9и4>//:+:и:к 9 99999"9#9+9,9192901%#5#535&'&'5'73'3#'73'676=35'73'33◰zhNgeMjzzTThOʍ7NjYYӖy?//и/и/ܸ ܸиA]A)9IYiy ] + + +01! #!!!'!27674'&#.d ;6zFH%QM_\ǃ$P<C#+///"/01#"'##56'##"/547?^'5@_*SU&/UL ;Yԧ9UP(` XI.s2Q3/4/ ܸ!ܸ и /3и/ܺ+ 9/&+и&/0122732#&547636=4'&# #4'&#"*t pz&=<xQ>hG:V Hek%PF5NP B|-&pA&NFX // 901 &&5 <F:^;" V gdG7C+///99 9/901236;2"##'65##"'&5476;235&'&=476e x<JT`(GeRUdfB3 VNT9D///4 +4 к#94+к=9>901+"'##56#+"'&575477;2732;276=4'3&'"~V"0b*SV*8UiQ"_|Q )w`SgA ? 6N #euB? gIo5 F(pZRw// /9012367632#&5476(t*#\l~ ΨT]1klSI|-X //01 &47E osU H2`g+Z+N+99V9AZZ]AZ)Z9ZIZYZiZyZZZZZZZ ]i//^+J+J):+)и/) и!и),и,/:7и7/JAи:QиQ/:Sи:UиU/V:790126;2"##'65##"'&5476;2&'5476&+"326733276=4/#"567654'&#"35&5hr=)\"IfRUdgC3&=cG kv ==Nr%SZU 6vk 6)S<F98:d  mOE:R p&i  C]&'Ax.+0 nM,W`c%+///9013#"/4?23hH0#!cZ-@o3+///99013#'654'&'#"54732XWz=\9`Y'6?F` 1TFG*֙-@x/e/ /и/и/ ܸи/ܸ//99901#"=4?2%#"=4?26ձ'VQܖCت+YP*~: ۉ8z"Co//ܸи/ ܸи/ܸи ++ +и/и/ 9901"'4723!# 5472!5kmOdXX[;Z$}@Ϝ"  ++к 9A]A)9IYiy ]// /+ 9013363'$6'"-8 w?WXc1 0 // и /и/ ܸи/иܸи/ ܸи и//// /99 9 999013%#'#3%#)N(4/c}4(,=++и ܺ 9ик  9ܺ9к9и!и%и&и'и+и(и)и*к, 9////99 9 999999&9*9,901377#'#'547#5773%%.wwzy.**  <<7CA<<{8AMt#u ! ! j.u-1#u  u-1 'S `'S@'S S33267!5!7632#"&54&#"!!#"&54632jc"]qiRA@Ae &>bakTFbakTF\[Z\2>;+ 8#_+3G.t46227&462 &tWxW'37&WxWOlLj[OlL=8)|MM6bR6MM}((X5#!5#!5!5463235.#"!5463235.#"#3#!5# HPFJpNTBHPFJpNT➞yy5ysLNsLNyyy5?"l@4"  JH3 5 F5A#<21/<2229990@ $$/$$$]#.#"!3!53!3!53#5354$!2p xi˘avVZVRyy5yy5yL?a@/    J H5 F5A<29991/<222990@ /]4$)3!53#"3#3!53#53$2ӘXseyy+Vyyy5y@;#!5#!#!5#!5463235.# !5463235.#"#3#!5#{i{5ix pvaCHPEKpNU➞yy5yyVZVLsLNyyy5?654$)3!53#"3#3!53!3!53#5354632#.#"$2ӘXD:UNpKEPH'Leyy+Vyyy5yy5yNLsA2547632#33267##"&5!5!&'&'$#3#!5#BP1oX%" >@:,&ڦpL~p'^\:&"QyuZVDy3 g[yyyWX4&'.#"&#"#"&'#3 $54'&/&'&546323&'&54632#33267##"&5!5!@FDE_AD>JHj$$rlp|bPOђS nlr*T<@:,(:g)(,yLL*%"#@FK}wNN5%6BEnm -8=SS=MyuZVDy2"& 32654&#"3>32356$54$#"tBpNOppONpy wnwziB>OppONpp͂+"Zf!#fs |@  _ _1<20K TKT[X@878YK TK T[KT[X@878YKTKT[KT[X@878Y4632#"&%4632#"&X<;VU<32{oq{7:;6T @@ 1<0K TK T[K T[K T[X@878Y332673#"&{oTTq{7:;6m w  _ 10K TKT[X @ 878YK TK T[KT[X  @878YKTKT[KT[KT[X @ 878Y4632#"&mW<=@rPjpjj5Z5KJ5``5<`L`V``5VPZqV``SV5 N\`(TcFFF(TPH2VTcFFVTFFI9FFVTFRTTbFF=`CVQFVTFQVTF==TF=TVVT^VT`8BkG^{V\=TRThVTT`/^VVU^V^V^V``6`]V``j K `G``~2`5````` ```G`V`V``^V~2V5 `N? %V XV ``]V L`./TVEFFUFTFFFFFhFFVTF/TB7SFFFF#UnUW4l2TTFTX F hFFFF V8TU`PR`F`F`F`F`FJ?`F `F `xF^VTB5  BH?FH??` F`F`FH?F F5/T5/TFT`TVTVT F`FGG`F`FVVTVVTVVT]VW~2~2~2N?F`F `U VTVTpVVVBVVVVVKVKVVfV0VVVVkVVVVV)VxVVV F VkVjVVKVVVV-VfVtVfVfVVVVpVtVVVVVV.V3VVV)VVVVLV7VLVUV5/T`/`/`/^VT`T`T`T`T`T`T`T`T`T`q?VT`?`?``?`?` `F`F`F` F` F` B` VwFVwFVwFPZFPZFPZFPZFVVTVVT`/`/`7;`7;`7;`7;XXX1111F/F/F/F/F/555 5 LHLHLH? TX5/T5/T5/T5/T5/T5/T5/T5/T`T`T`T`T` F` FVVTVVTVVTF/F/(T(T(T(T(T(T(T(T5555ccccccWE [ [FFFFFFFF   ; w  FF:1 dVTVTVTVTVTVT4z  GFFFFFFFF` | &QQQQQQQQs % 1o/{(T(TccFFFVTVTFFQQ(T(T(T(T(T(T(T(T5555FFFFFFFF   ; w  QQQQQQQQs % 1o/{(T(T(T(T(T(T(T55}55WWFFFFF `Yu@F&``KWTFFFFRRFF&HxQQQQQJ\ZZVRoRob=bb=b/9/9''d 1133B=1jRfCF'_=VZ1jRfCF+ =(+EO\`5HxHVHxHVHZH1HxHjHxHZHjHfxLuFL))/VBH`551111 !1Ol- x''''''''''''''''''''''q''''''''''llgg'''''''''''''''''pprppppppppp7p7Tpp''''3'''ppppp'''',,,,,,,,S,,,,,C,,X,,B,,X,,x,A133''''VTtqX?? @?AW2ZZmM 79k:;k<&:$7$9k$:$<$I$W$Y$Z$\$$$$$$%$&$'$6$7$8$9$:$$$$$$$$$$$$ $ $ $!%&%&&%*&%2&%<%&%&%&%&%&%&%&%%&%&%&%&%&%&%&%&%&%&%&%&%8%:%&%&%&%%&&''&''9(&)2))2)))$)D)H)R)U)X)))))))))))))))))))))))))))))))))))))))))))))+)-)/)1)3)5))))**&*--a--.k.$.&.2.8.:.<.H.R.X.\.......................................0.1.:/7Y/8/9 /:u/<}/\/////}///&Y/0/:}////1}1}1122K2292;333333$k3D3H3R3k3k3k3k3k33333333333333333333344K457595:5<5D/5\55/5/5/5/5/5/5/5&555&5:5566K6666 6"777777$777D<7F7H7R7Uk7VD7XD7Z7\7mk7}k777777<7<7<7<7<7<7a77777777777a7D7D7D7D777777a7k7k7!D7#D7&71D7k7k7 k7k8D88D888$8888899k992929$a929DD9HD9L9RD9X}9\9a9a9a9a9a9999999D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9}9}9}9}999D99D91}9&99&9::::u:u:$}:DN:HY:L:RY:U:X:\:}:}:}:}:}:N:N:N:N:N:N:u:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:::::::Y:Y:::1:&::&:;;$;&;2;;;;;;;;;;;;;;;<<2<<<<$}<&<Da<HN<L<RN<XN<}<}<}<}<}<<a<a<a<a<a<a<a<N<N<N<N<N<N<N<N<N<N<N<N<N<N<<<N<N<1N==IIIIIAINRUkUDUKUKUKUKYYY2YKYKYKYKZYZ2ZKZKZKZK[\<\\K\K\K\Km-m7km&k}-}7k}&k79k:<IWYZ\$%&'6789:   !79k:<IWYZ\$%&'6789:   !79k:<IWYZ\$%&'6789:   !79k:<IWYZ\$%&'6789:   !79k:<IWYZ\$%&'6789:   !&&&&&K$9<:}}K9;K9;K9;K9;K9;K9;DD$DD$DD$DD$2$}&DaHNLRNXN}}}}}aaaaaaaNNNNNNNNNNNNNNNN1N&<KKKK<KKKK79k:<IWYZ\$%&'6789:   !79k:<IWYZ\$%&'6789:   !79k:<IWYZ\$%&'6789:   !&9&9&&7Y89 :u<}\}&Y0:}7Y89 :u<}\}&Y0:}O7Y89 :u<}\}&Y0:} } }  &79:<D/\///////&&:kDKKKK79:<D/\///////&&:kDKKKK  K  6   """K""6" ""&&&&&&$&7&D<&F&H&R&Uk&VD&XD&Z&\&mk&}k&&&&&&<&<&<&<&<&<&a&&&&&&&&&&&a&D&D&D&D&&&&&&a&k&k&!D&#D&&&1D&k&k& k&k0D00D000$00000::2::::$}:&:Da:HN:L:RN:XN:}:}:}:}:}::a:a:a:a:a:a:a:N:N:N:N:N:N:N:N:N:N:N:N:N:N:::N:N:1N??f$ffffff79k:;k<&:$$99:9;9<99:979:;B&BdDB0:$j@Zjt < R !!!8!!"z#2#T$$f$%t%%%&&''<''(((()):)|))))*8*D*P*\*h*t++++++++,,,,t,,,,,,,------........////////0000000001"1111112T2`2l2x22222222222333 3(3333333334444(444@4L4X4d4p4|44455 55$505<5H5T5`55555556 66$606<6H6T6`6l67 77"7.7:7F7R7^77777788899&929>9J9V9b9n9z9999999999::H:T:`:l:x:::::::::::;;; ;,;8;D;P;\;;;<>j>>? ?>??@@`@~@@AA2ApAABBRB^BjBBC8CCD$DpDxDEE$E`EEEEFFLFFFGG:GlGGHHFHTH`HHHHHHHHHHIIII(I4I@ILIXIdIpI|IIIIIIIIIIJJJJ\JJJJJJJJK KK"K.K:KFKRK^KjKKKLLpL|LLLLLLLLLLMM MM$M0MPPQ2Q|QQRRRRSSSXSST T8TTUUHU|UV VlVW*WTWWXXhXXY"YnYYYZZ4ZVZZ[[p[[\ \D\\]"]H]p]]^^2^V^^_L___`N`t``aaLalaaabbPbbbc,c^cccd6dddeee`eef"ffgRghhnhhi2iPiijjbjjjk.k~kkkll(lDlblllm(m6m>mLmbmpmzmmmnnTnnoo@otooop0p@pTphpzppppppppppqq0q:qDqNq\qjqqqqqqrr rr(r8rHrjrrrrrrs ss s*s@sJsTsbstssssssssst2t@tNt^tntxttttuuu&uHuVu`uvuuuuuuvvv v.v:vFvNvVv^vtv|vvvvvvwww8w@wHwPwnwvw~wwxx~xxxxxxxy"yjyyzVzzz{{0{d{{|||L|||}}2}}~4~~~~~~ N8؁ >v~ԁ V.^΄2d P̅؅*6fnvڇ R^jv܇:Bƈ*Zbjrڊ&LxҊ 4d܋,d~Dp|֎,4T\d>hď(Zΐڑ(\dlx‘2>JV.rԓ6x̔*^• N|4@Ll Jtؙ *t,Zʚ֚ޚ&2>JV^fr~ʛ֛*6BNjHnܝ"fRޠ>l@dҢ .Xp0tԣPz¥R| 8Tnئ$<Ш Hj:p֪LhLXdp|īЫܫ $0JVdlz̽ؽ&4@LXdpxξ־ $0N^Ј~&:P^t0r< Ph8R B`^J>6N4~D*Z,X r3 +@+4   P: r0*&&l66nDDpFFrHHtLLvRQxVV|XX~]\            ! "# $% &   "$&(*,.02?P?R?{?|?|?w??^?????????????x?????  #!@  0T VQQXggZ\^bhlpSSr   `?v?v?w?w?x?y?y ?z ?`?a?S?ſ?ſ??ȿ v{qwxjy|zzY TU XXxII0LL2OO4WV6AA:    ` ????????? !"#%$DF* $&""(  ` ??????  T $&HH6   !"#$%&'()*+,-./0  !$'*- 0369<? BEHKNQTW????????¿??ſ??ȿ??  ?݀????""(%$+($.+*?--40/?20?55=86@;9? <<F? 1~3791~37924245:5:668;8;<<7_B] )a  4 (   !k!"$ A  !!|!"7! Z !.!!"N | !F! ""_   !X!""r     S "b *  & "= :s & hCopyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. DejaVu changes are in public domain DejaVu LGC SerifDejaVu LGC SerifBoldBoldDejaVu Serif BoldDejaVu Serif BoldDejaVu LGC Serif BoldDejaVu LGC Serif BoldVersion 2.10Version 2.10DejaVuLGCSerif-BoldDejaVuLGCSerif-BoldDejaVu fonts teamDejaVu fonts teamhttp://dejavu.sourceforge.nethttp://dejavu.sourceforge.netFonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. http://dejavu.sourceforge.net/wiki/index.php/Licensehttp://dejavu.sourceforge.net/wiki/index.php/LicenseAll Typographic FeaturesFonctions typographiquesAlle typografischen MglichkeitenFunzioni TipograficheAlle typografische kenmerkenLigaturesLigaturesLigaturenLegatureLigaturenFractionsFractionsBreukenAll Type FeaturesToutes fonctions typographiquesAlle AuszeichnungsartenTutte le FunzioniAlle typekenmerkenCommon LigaturesLigatures UsuellesNormale LigaturenLegature pi ComuniGemeenschappelijke LigaturenRare LigaturesLigatures RaresSeltene LigaturenLegature RareZeldzame ligaturenDiagonal FractionsFractions en DiagonaleDiagonaler BruchFrazioni DiagonaliDiagonale breukenZ3  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123 sfthyphenAmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandicLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongsuni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191uni0193uni0194uni0195uni0196uni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEUhornuhornuni01B1uni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BBuni01BCuni01BDuni01BEuni01C0uni01C1uni01C2uni01C3uni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DEuni01DFuni01E0uni01E1uni01E2uni01E3uni01E4uni01E5Gcarongcaronuni01E8uni01E9uni01EAuni01EBuni01ECuni01EDuni01EEuni01EFuni01F0uni01F1uni01F2uni01F3uni01F4uni01F5uni01F6uni01F8uni01F9 Aringacute aringacuteAEacuteaeacute Oslashacute oslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217 Scommaaccent scommaaccentuni021Auni021Buni021Euni021Funi0221uni0224uni0225uni0226uni0227uni0228uni0229uni022Auni022Buni022Cuni022Duni022Euni022Funi0230uni0231uni0232uni0233uni0234uni0235uni0236dotlessjuni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240uni0241uni0242uni0245uni0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni0259uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269uni026Auni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02AEuni02AFuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02BB afii57929 afii64937uni02BEuni02BFuni02C0uni02C1uni02C8uni02C9uni02CCuni02D0uni02D1uni02D2uni02D3uni02D6uni02DEuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9uni02EE gravecomb acutecombuni0302 tildecombuni0304uni0305uni0306uni0307uni0308 hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322 dotbelowcombuni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0358uni0361uni0374uni0375uni037Auni037Etonos dieresistonos Alphatonos anoteleia EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni03D0theta1Upsilon1uni03D3uni03D4phi1omega1uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FAuni03FBuni03FCuni03FDuni03FEuni03FFuni0400 afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061uni040D afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097uni0450 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109uni045D afii10110 afii10193 afii10146 afii10194 afii10147 afii10195uni048Cuni048D afii10050 afii10098uni0492uni0493uni0494uni0495uni0498uni0499uni049Auni049Buni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04BAuni04BBuni04C0uni04C1uni04C2uni04C3uni04C4uni04C7uni04C8uni04CBuni04CCuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8 afii10846uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni1D02uni1D08uni1D09uni1D14uni1D16uni1D17uni1D1Duni1D1Euni1D1Funi1D43uni1D44uni1D45uni1D46uni1D47uni1D48uni1D49uni1D4Auni1D4Buni1D4Cuni1D4Duni1D4Euni1D4Funi1D50uni1D51uni1D52uni1D53uni1D54uni1D55uni1D56uni1D57uni1D58uni1D59uni1D5Auni1D5Buni1D77uni1D7Buni1D85uni1D9Buni1D9Cuni1D9Duni1D9Euni1D9Funi1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5uni1DA6uni1DA7uni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1uni1DB2uni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1E00uni1E01uni1E02uni1E03uni1E04uni1E05uni1E06uni1E07uni1E08uni1E09uni1E0Auni1E0Buni1E0Cuni1E0Duni1E0Euni1E0Funi1E10uni1E11uni1E12uni1E13uni1E14uni1E15uni1E16uni1E17uni1E18uni1E19uni1E1Auni1E1Buni1E1Euni1E1Funi1E20uni1E21uni1E22uni1E23uni1E24uni1E25uni1E26uni1E27uni1E28uni1E29uni1E2Auni1E2Buni1E2Cuni1E2Duni1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Auni1E3Buni1E3Cuni1E3Duni1E3Euni1E3Funi1E40uni1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Auni1E4Buni1E50uni1E51uni1E52uni1E53uni1E54uni1E55uni1E56uni1E57uni1E58uni1E59uni1E5Auni1E5Buni1E5Cuni1E5Duni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E68uni1E69uni1E6Auni1E6Buni1E6Cuni1E6Duni1E6Euni1E6Funi1E70uni1E71uni1E72uni1E73uni1E74uni1E75uni1E76uni1E77uni1E78uni1E79uni1E7Auni1E7Buni1E7Cuni1E7Duni1E7Euni1E7FWgravewgraveWacutewacute Wdieresis wdieresisuni1E86uni1E87uni1E88uni1E89uni1E8Auni1E8Buni1E8Cuni1E8Duni1E8Euni1E8Funi1E90uni1E91uni1E92uni1E93uni1E94uni1E95uni1E96uni1E97uni1E98uni1E99uni1E9Auni1E9Buni1EA0uni1EA1uni1EA2uni1EA3uni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED8uni1ED9uni1EE4uni1EE5uni1EE6uni1EE7Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni200B afii61664afii301afii299afii300uni2010uni2011 figuredash afii00208 underscoredbl quotereverseduni201Funi2023onedotenleadertwodotenleaderuni2031 exclamdbluni203Euni2047uni2048uni2049uni2070uni2074uni2075uni2076uni2077uni2078uni2079uni207Funi2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089uni20A6Eurouni20AFuni20B4uni20B5uni210E afii61352uni2126uni212Auni212Bonethird twothirdsuni2155uni2156uni2157uni2158uni2159uni215A oneeighth threeeighths fiveeighths seveneighthsuni215F arrowleftarrowup arrowright arrowdowngradient proportional orthogonalangle logicaland logicalor intersectionunionuni222Cuni222Duni2242uni2243 equivalencehouseuni2308uni2309uni230Auni230B revlogicalnotuni2311uni2318uni2319 integraltp integralbtuni2325uni2328 angleleft anglerightuni237Duni23AEuni23CFuni2423upblockuni2581uni2582uni2583dnblockuni2585uni2586uni2587blockuni2589uni258Auni258Blfblockuni258Duni258Euni258Frtblockltshadeshadedkshadeuni2594uni2595uni2596uni2597uni2598uni2599uni259Auni259Buni259Cuni259Duni259Euni259F filledboxH22073uni25A2uni25A3uni25A4uni25A5uni25A6uni25A7uni25A8uni25A9H18543H18551 filledrectuni25ADuni25AEuni25AFuni25B0uni25B1triagupuni25B3uni25B4uni25B5uni25B6uni25B7uni25B8uni25B9triagrtuni25BBtriagdnuni25BDuni25BEuni25BFuni25C0uni25C1uni25C2uni25C3triaglfuni25C5uni25C6uni25C7uni25C8uni25C9circleuni25CCuni25CDuni25CEH18533uni25D0uni25D1uni25D2uni25D3uni25D4uni25D5uni25D6uni25D7 invbullet invcircleuni25DAuni25DBuni25DCuni25DDuni25DEuni25DFuni25E0uni25E1uni25E2uni25E3uni25E4uni25E5 openbulletuni25E7uni25E8uni25E9uni25EAuni25EBuni25ECuni25EDuni25EEuni25EFuni25F0uni25F1uni25F2uni25F3uni25F4uni25F5uni25F6uni25F7uni25F8uni25F9uni25FAuni25FBuni25FCuni25FDuni25FEuni25FFuni2600uni2638uni2639 smileface invsmilefacesununi263Ffemaleuni2641maleuni2643uni2644uni2645uni2646uni2647spadeuni2661uni2662clubuni2664heartdiamonduni2667uni2669 musicalnotemusicalnotedbluni266Cuni266Duni266Euni266Funi27E0uni29EBuni2A0Cuni2A0Duni2A0Euni2B12uni2B13uni2B14uni2B15uni2B16uni2B17uni2B18uni2B19uni2B1A afii10064cyrBrevecyrbreveuniFB00uniFB03uniFB04uniFB05uniFB06uniFFFD dlLtcaronDieresisAcuteTildeGrave CircumflexCaron uni0311.caseBreve Dotaccent Hungarumlaut Doublegrave@K 2ǻƻĖG}G0}  & @ 7 !7 2.+t+t ]%]@%@ @  dtd  @   2 }t} t2q  @~t~}|}|{z{zy]zzyx%y]y@x%w7vtvkututsrqrqqpo.po.nmlkKj hg g@f!e}d@ckba}`^] ][YXY-XW2V TSTSRQPQ%PPOONMN}MI MM@LL1KK2JI J}I HG H}G FE F2ED E E@D CBCBA@A}@6 @@?=)?>=)>]==)<;<;:;:9 :9 878}76 776 6@5454+ 43 32) 210 0/$)/7.! .-,-,+ ,,@+ *&*) )@('('&''@&%$)%$!$)#!#"! "! ! !  @!*@-:!}22!)k!) !-} -    @      @@d+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Rl       !! #" >> ?? @@ CA ^^ __ `` aa bbcc gdkh qm srutvv zx {{}  qm }t    ʀ    //                    %*&-, F1 GG]H ^^ __ `` aa ib jj kk l &&2(micropolis-activity/res/wishx.tcl0000664000076400007640000000153010724145723017471 0ustar simcitysimcity# wish.tcl -- # # This script is invoked by the "wish" program whenever it starts up. # It invokes initialization scripts for Tcl and Tk, then does a few # wish-specific things like setting the window geometry, if one was # specified. # # $Header: /user6/ouster/wish/scripts/RCS/wish.tcl,v 1.1 92/03/06 09:40:56 ouster Exp $ SPRITE (Berkeley) # # Copyright 1992 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # load tk.tcl if [info exists geometry] { wm geometry . $geometry } micropolis-activity/res/hexa.3840000664000076400007640000002000010724145723017001 0ustar simcitysimcity3303030000 0 00 _0 0 0 0 0 0  0 0 00`00 03033303303030000000 00 _00 0 0` 0 000 0 00303330 33030300000000 0 < 0  000000000303330  333030 00< 00` 0 0 0 00 00 _000 00000303330  33030 3 00  00l00 00 0 0 0 0 0 0 _000 000303330 330 3030 000  m00 000 00 00_0 00000030333033030300000000 0` 0 _0 _0`0 00000003033303330300000000 0_ 00 0 0 `00 0 0 00<0030 333micropolis-activity/res/wmap.tcl0000664000076400007640000002141710724145723017301 0ustar simcitysimcity# Windows: Maps, for Unix Micropolis. # # Micropolis, Unix Version. This game was released for the Unix platform # in or about 1990 and has been modified for inclusion in the One Laptop # Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If # you need assistance with this program, you may contact: # http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or (at # your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. You should have received a # copy of the GNU General Public License along with this program. If # not, see . # # ADDITIONAL TERMS per GNU GPL Section 7 # # No trademark or publicity rights are granted. This license does NOT # give you any right, title or interest in the trademark SimCity or any # other Electronic Arts trademark. You may not distribute any # modification of this program using the trademark SimCity or claim any # affliation or association with Electronic Arts Inc. or its employees. # # Any propagation or conveyance of this program must include this # copyright notice and these terms. # # If you convey this program (or any modifications of it) and assume # contractual liability for the program to recipients of it, you agree # to indemnify Electronic Arts for any liability that those contractual # assumptions impose on Electronic Arts. # # You may not misrepresent the origins of this program; modified # versions of the program must be marked as such and not identified as # the original program. # # This disclaimer supplements the one included in the General Public # License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS # PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY # OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF # SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS # DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, # INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, # FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY # RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, # USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST # INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL # MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE # UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE # WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE # CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR # ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME # JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED # WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A # CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY # NOT APPLY TO YOU. global MapWindows set n [Unique] set parent [WindowLink $head.w2] set win $parent.map$n set MapWindows [linsert $MapWindows 0 $win] global MapState.$win set MapState.$win 0 LinkWindow $head.map $win LinkWindow $win.head $head LinkWindow $win.parent $parent LinkWindow $win.top $win catch "destroy $win" frame $win SetHelp $win Map bind $win {[WindowLink %W.view] Visible [string compare %s FullyObscured]} bind $win {[WindowLink %W.view] Visible 1} bind $win {[WindowLink %W.view] Visible 0} frame $win.centerframe\ -borderwidth 1\ -relief sunken SetHelp $win.centerframe Map.View mapview $win.centerframe.view\ -font [Font $win Large] $win.centerframe.view size [expr "[sim WorldX] * 3"] [expr "[sim WorldY] * 3"] LinkWindow $win.view $win.centerframe.view LinkWindow $win.centerframe.view.pallet $win.topframe LinkWindow $win.centerframe.view.win $win bind $win.centerframe.view <1> {MapPanDown %W %x %y} bind $win.centerframe.view {MapPanDrag %W %x %y} bind $win.centerframe.view {MapPanUp %W %x %y} bind $win.centerframe.view <2> {MapPanDown %W %x %y} bind $win.centerframe.view {MapPanDrag %W %x %y} bind $win.centerframe.view {MapPanUp %W %x %y} bind $win.centerframe.view <3> {MapPanDown %W %x %y} bind $win.centerframe.view {MapPanDrag %W %x %y} bind $win.centerframe.view {MapPanUp %W %x %y} pack append $win.centerframe\ $win.centerframe.view {top frame center expand} frame $win.topframe\ -borderwidth 1\ -relief raised menubutton $win.topframe.zones\ -menu $win.topframe.zones.m\ -text {Zones}\ -font [Font $win Medium]\ -variable $win.postedMenu\ -borderwidth 1\ -relief flat LinkWindow $win.zones $win.topframe.zones tk_bindForTraversal $win.topframe.zones bind $win.topframe.zones {tk_firstMenu %W} bind $win.topframe.zones {tk_traverseToMenu %W %A} tk_menus $win $win.topframe.zones SetHelp $win.topframe.zones Map.Zones menu $win.topframe.zones.m\ -font [Font $win Medium] tk_bindForTraversal $win.topframe.zones.m bind $win.topframe.zones.m {tk_firstMenu %W} bind $win.topframe.zones.m {tk_traverseToMenu %W %A} $win.topframe.zones.m add radiobutton\ -label {All}\ -variable MapState.$win\ -value 0\ -command "SetMapState $win 0" $win.topframe.zones.m add radiobutton\ -label {Residential}\ -variable MapState.$win\ -value 1\ -command "SetMapState $win 1" $win.topframe.zones.m add radiobutton\ -label {Commercial}\ -variable MapState.$win\ -value 2\ -command "SetMapState $win 2" $win.topframe.zones.m add radiobutton\ -label {Industrial}\ -variable MapState.$win\ -value 3\ -command "SetMapState $win 3" $win.topframe.zones.m add radiobutton\ -label {Transportation}\ -variable MapState.$win\ -value 5\ -command "SetMapState $win 5" # Disabled dynamic filter for now. #$win.topframe.zones.m add radiobutton\ # -label {Dynamic}\ # -variable MapState.$win\ # -value 14\ # -command "SetMapState $win 14" menubutton $win.topframe.overlays\ -menu $win.topframe.overlays.m\ -text {Overlays}\ -font [Font $win Medium]\ -variable $win.postedMenu\ -borderwidth 1\ -relief flat LinkWindow $win.overlays $win.topframe.overlays tk_bindForTraversal $win.topframe.overlays bind $win.topframe.overlays {tk_firstMenu %W} bind $win.topframe.overlays {tk_traverseToMenu %W %A} tk_menus $win $win.topframe.overlays SetHelp $win.topframe.overlays Map.Overlays menu $win.topframe.overlays.m\ -font [Font $win Medium] tk_bindForTraversal $win.topframe.overlays.m bind $win.topframe.overlays.m {tk_firstMenu %W} bind $win.topframe.overlays.m {tk_traverseToMenu %W %A} $win.topframe.overlays.m add radiobutton\ -label {Population Density}\ -variable MapState.$win\ -value 6\ -command "SetMapState $win 6" $win.topframe.overlays.m add radiobutton\ -label {Rate of Growth}\ -variable MapState.$win\ -value 7\ -command "SetMapState $win 7" $win.topframe.overlays.m add radiobutton\ -label {Land Value}\ -variable MapState.$win\ -value 11\ -command "SetMapState $win 11" $win.topframe.overlays.m add radiobutton\ -label {Crime Rate}\ -variable MapState.$win\ -value 10\ -command "SetMapState $win 10" $win.topframe.overlays.m add radiobutton\ -label {Pollution Density}\ -variable MapState.$win\ -value 9\ -command "SetMapState $win 9" $win.topframe.overlays.m add radiobutton\ -label {Traffic Density}\ -variable MapState.$win\ -value 8\ -command "SetMapState $win 8" $win.topframe.overlays.m add radiobutton\ -label {Power Grid}\ -variable MapState.$win\ -value 4\ -command "SetMapState $win 4" $win.topframe.overlays.m add radiobutton\ -label {Fire Coverage}\ -variable MapState.$win\ -value 12\ -command "SetMapState $win 12" $win.topframe.overlays.m add radiobutton\ -label {Police Coverage}\ -variable MapState.$win\ -value 13\ -command "SetMapState $win 13" label $win.topframe.legend\ -bitmap "@images/legendn.xpm" \ -font [Font $win Medium] LinkWindow $win.legend $win.topframe.legend pack append $win.topframe\ $win.topframe.zones {left frame nw} \ $win.topframe.overlays {left frame nw} \ $win.topframe.legend {right frame ne} pack append $win\ $win.topframe {top frame center fillx} \ $win.centerframe {top frame center fill} pack append $parent\ $win {top frame nw expand fill} InitMap $win update idletasks micropolis-activity/res/weditor.tcl0000664000076400007640000004775610735230201020014 0ustar simcitysimcity# Window: Editor, for Unix Micropolis. # # Micropolis, Unix Version. This game was released for the Unix platform # in or about 1990 and has been modified for inclusion in the One Laptop # Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If # you need assistance with this program, you may contact: # http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or (at # your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. You should have received a # copy of the GNU General Public License along with this program. If # not, see . # # ADDITIONAL TERMS per GNU GPL Section 7 # # No trademark or publicity rights are granted. This license does NOT # give you any right, title or interest in the trademark SimCity or any # other Electronic Arts trademark. You may not distribute any # modification of this program using the trademark SimCity or claim any # affliation or association with Electronic Arts Inc. or its employees. # # Any propagation or conveyance of this program must include this # copyright notice and these terms. # # If you convey this program (or any modifications of it) and assume # contractual liability for the program to recipients of it, you agree # to indemnify Electronic Arts for any liability that those contractual # assumptions impose on Electronic Arts. # # You may not misrepresent the origins of this program; modified # versions of the program must be marked as such and not identified as # the original program. # # This disclaimer supplements the one included in the General Public # License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS # PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY # OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF # SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS # DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, # INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, # FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY # RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, # USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST # INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL # MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE # UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE # WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE # CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR # ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME # JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED # WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A # CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY # NOT APPLY TO YOU. global EditorWindows set n [Unique] set parent [WindowLink $head.col2] set win $parent.editor$n set EditorWindows [linsert $EditorWindows 0 $win] global Skip.$win set Skip.$win 0 global AutoGoto.$win set AutoGoto.$win 0 global Controls.$win set Controls.$win 1 global Overlay.$win set Overlay.$win 0 global DynamicFilter.$win set DynamicFilter.$win 0 LinkWindow $head.editor $win LinkWindow $win.head $head LinkWindow $win.parent $parent LinkWindow $win.top $win catch "destroy $win" frame $win SetHelp $win Editor bind $win {[WindowLink %W.view] Visible [string compare %s FullyObscured]} bind $win {[WindowLink %W.view] Visible 1} bind $win {[WindowLink %W.view] Visible 0} # $head.editor points to most recently created or entered editor bind $win "LinkWindow $head.editor $win" global CityName #wm title $win "Micropolis Editor" #wm iconname $win $CityName #wm group $win $head #wm geometry $win 550x535+440+5 #wm positionfrom $win user #wm withdraw $win #wm maxsize $win 5000 5000 #wm minsize $win 32 32 #wm protocol $win delete "DeleteWindow editor EditorWindows" frame $win.topframe\ -borderwidth 0 frame $win.topframe.controls\ -borderwidth 1\ -relief raised if {0} { menubutton $win.topframe.controls.update\ -menu $win.topframe.controls.update.m\ -text {Display}\ -font [Font $win Medium]\ -variable $win.postedMenu\ -borderwidth 1\ -relief flat tk_bindForTraversal $win.topframe.controls.update bind $win.topframe.controls.update {tk_firstMenu %W} bind $win.topframe.controls.update {tk_traverseToMenu %W %A} tk_menus $win $win.topframe.controls.update SetHelp $win.topframe.controls.update Editor.Display menu $win.topframe.controls.update.m\ -font [Font $win Medium] tk_bindForTraversal $win.topframe.controls.update.m bind $win.topframe.controls.update.m {tk_firstMenu %W} bind $win.topframe.controls.update.m {tk_traverseToMenu %W %A} $win.topframe.controls.update.m add radiobutton\ -label {Always}\ -variable Skip.$win\ -value 0\ -command "SetEditorSkip $win 0" $win.topframe.controls.update.m add radiobutton\ -label {Often}\ -variable Skip.$win\ -value 1\ -command "SetEditorSkip $win 2" $win.topframe.controls.update.m add radiobutton\ -label {Sometimes}\ -variable Skip.$win\ -value 2\ -command "SetEditorSkip $win 8" $win.topframe.controls.update.m add radiobutton\ -label {Seldom}\ -variable Skip.$win\ -value 3\ -command "SetEditorSkip $win 64" $win.topframe.controls.update.m add radiobutton\ -label {Rarely}\ -variable Skip.$win\ -value 4\ -command "SetEditorSkip $win 256" } menubutton $win.topframe.controls.options\ -menu $win.topframe.controls.options.m\ -text {Options}\ -font [Font $win Medium]\ -variable $win.postedMenu\ -borderwidth 1\ -relief flat tk_bindForTraversal $win.topframe.controls.options bind $win.topframe.controls.options {tk_firstMenu %W} bind $win.topframe.controls.options {tk_traverseToMenu %W %A} tk_menus $win $win.topframe.controls.options SetHelp $win.topframe.controls.options Editor.Options menu $win.topframe.controls.options.m\ -font [Font $win Medium] tk_bindForTraversal $win.topframe.controls.options.m bind $win.topframe.controls.options.m {tk_firstMenu %W} bind $win.topframe.controls.options.m {tk_traverseToMenu %W %A} $win.topframe.controls.options.m add checkbutton\ -label {Auto Goto}\ -variable AutoGoto.$win\ -command "SetEditorAutoGoto $win \$\{AutoGoto.$win\}" $win.topframe.controls.options.m add checkbutton\ -label {Pallet Panel}\ -variable Controls.$win\ -command "SetEditorControls $win \$\{Controls.$win\}" $win.topframe.controls.options.m add checkbutton\ -label {Chalk Overlay}\ -variable Overlay.$win\ -command "SetEditorOverlay $win \$\{Overlay.$win\}" # Disabled dynamic fulter for now. #$win.topframe.controls.options.m add checkbutton\ # -label {Dynamic Filter}\ # -variable DynamicFilter.$win\ # -command "SetEditorDynamicFilter $win \$\{DynamicFilter.$win\}" pack append $win.topframe.controls\ $win.topframe.controls.options {left frame ne} # $win.topframe.controls.update {left frame ne} label $win.topframe.messagelabel\ -borderwidth 1\ -relief raised\ -font [Font $win Large]\ -text {}\ -width 23 LinkWindow $win.message $win.topframe.messagelabel SetHelp $win.message Editor.Message pack append $win.topframe\ $win.topframe.controls {left frame ne} \ $win.topframe.messagelabel {left frame ne expand fill} frame $win.centerframe\ -cursor hand2\ -borderwidth 1\ -relief sunken SetHelp $win.centerframe Editor.View editorview $win.centerframe.view\ -font [Font $win Big] LinkWindow $win.view $win.centerframe.view LinkWindow $win.centerframe.view.top $win BindEditorButtons $win.centerframe.view bind $win.centerframe.view {focus %W} if {[sim MultiPlayerMode]} { set entry [WindowLink $head.entry] bind $win.centerframe.view " if {\"%A\" != \"\"} { $entry insert cursor %A tk_entrySeeCaret $entry } " bind $win.centerframe.view "tk_entryDelPress $entry" bind $win.centerframe.view "tk_entryDelPress $entry" bind $win.centerframe.view "tk_entryDelPress $entry" bind $win.centerframe.view "tk_textCutPress $entry" bind $win.centerframe.view "tk_entryDelLine $entry" bind $win.centerframe.view "tk_entryCopyPress $entry" bind $win.centerframe.view "tk_entryBackword $entry; tk_entrySeeCaret $entry" bind $win.centerframe.view "DoEnterMessage $entry $entry.value" bind $win.centerframe.view "DoEvalMessage $entry $entry.value" } else { bind $win.centerframe.view {EditorKeyDown %W %K} bind $win.centerframe.view {EditorKeyUp %W %K} } bind $win.centerframe.view "%W PanBy 0 -16 ; %W TweakCursor" bind $win.centerframe.view "%W PanBy 0 16 ; %W TweakCursor" bind $win.centerframe.view "%W PanBy -16 0 ; %W TweakCursor" bind $win.centerframe.view "%W PanBy 16 0 ; %W TweakCursor" bind $win.centerframe.view "EditorToolDown none %W %x %y ; EditorToolUp %W %x %y" bind $win.centerframe.view {EditorKeyDown %W %K} bind $win.centerframe.view {EditorKeyUp %W %K} bind $win.centerframe.view {EditorKeyDown %W %K} bind $win.centerframe.view {EditorKeyUp %W %K} pack append $win.centerframe\ $win.centerframe.view {top frame center fill expand} frame $win.leftframe\ -borderwidth 1\ -relief raised\ -geometry 130x10 SetHelp $win.leftframe Editor.ToolPallet frame $win.leftframe.tools\ -borderwidth 0\ -relief flat label $win.leftframe.tools.costlabel1\ -relief flat\ -font [Font $win Small]\ -text {} LinkWindow $win.cost1 $win.leftframe.tools.costlabel1 LinkWindow $win.centerframe.view.cost1 $win.leftframe.tools.costlabel1 SetHelp $win.leftframe.tools.costlabel1 Editor.ToolName label $win.leftframe.tools.costlabel2\ -relief flat\ -font [Font $win Small]\ -text {} LinkWindow $win.cost2 $win.leftframe.tools.costlabel2 LinkWindow $win.centerframe.view.cost2 $win.leftframe.tools.costlabel2 LinkWindow $win.centerframe.top $win SetHelp $win.leftframe.tools.costlabel2 Editor.ToolCost canvas $win.leftframe.tools.spacer\ -width 132 -height 4 button $win.leftframe.tools.palletres\ -bitmap "@images/icres.xpm"\ -font [Font $win Medium] \ -borderwidth 1 -relief flat -padx 0 -pady 0 -text {} -cursor hand2\ -command "EditorPallet $win 0" SetHelp $win.leftframe.tools.palletres Editor.ToolRes button $win.leftframe.tools.palletcom\ -bitmap "@images/iccom.xpm"\ -font [Font $win Medium] \ -borderwidth 1 -relief flat -padx 0 -pady 0 -text {} -cursor hand2\ -command "EditorPallet $win 1" SetHelp $win.leftframe.tools.palletcom Editor.ToolCom button $win.leftframe.tools.palletind\ -bitmap "@images/icind.xpm"\ -font [Font $win Medium] \ -borderwidth 1 -relief flat -padx 0 -pady 0 -text {} -cursor hand2\ -command "EditorPallet $win 2" SetHelp $win.leftframe.tools.palletind Editor.ToolInd button $win.leftframe.tools.palletfire\ -bitmap "@images/icfire.xpm"\ -font [Font $win Medium] \ -borderwidth 1 -relief flat -padx 0 -pady 0 -text {} -cursor hand2\ -command "EditorPallet $win 3" SetHelp $win.leftframe.tools.palletfire Editor.ToolFire button $win.leftframe.tools.palletquery\ -bitmap "@images/icqry.xpm"\ -font [Font $win Medium] \ -borderwidth 1 -relief flat -padx 0 -pady 0 -text {} -cursor hand2\ -command "EditorPallet $win 4" SetHelp $win.leftframe.tools.palletquery Editor.ToolQuery button $win.leftframe.tools.palletpolice\ -bitmap "@images/icpol.xpm"\ -font [Font $win Medium] \ -borderwidth 1 -relief flat -padx 0 -pady 0 -text {} -cursor hand2\ -command "EditorPallet $win 5" SetHelp $win.leftframe.tools.palletpolice Editor.ToolPolice button $win.leftframe.tools.palletwire\ -bitmap "@images/icwire.xpm"\ -font [Font $win Medium] \ -borderwidth 1 -relief flat -padx 0 -pady 0 -text {} -cursor hand2\ -command "EditorPallet $win 6" SetHelp $win.leftframe.tools.palletwire Editor.ToolWire button $win.leftframe.tools.palletbulldozer\ -bitmap "@images/icdozr.xpm"\ -font [Font $win Medium] \ -borderwidth 1 -relief flat -padx 0 -pady 0 -text {} -cursor hand2\ -command "EditorPallet $win 7" SetHelp $win.leftframe.tools.palletbulldozer Editor.ToolBulldozer button $win.leftframe.tools.palletrail\ -bitmap "@images/icrail.xpm"\ -font [Font $win Medium] \ -borderwidth 1 -relief flat -padx 0 -pady 0 -text {} -cursor hand2\ -command "EditorPallet $win 8" SetHelp $win.leftframe.tools.palletrail Editor.ToolRail button $win.leftframe.tools.palletroad\ -bitmap "@images/icroad.xpm"\ -font [Font $win Medium] \ -borderwidth 1 -relief flat -padx 0 -pady 0 -text {} -cursor hand2\ -command "EditorPallet $win 9" SetHelp $win.leftframe.tools.palletroad Editor.ToolRoad button $win.leftframe.tools.palletchalk\ -bitmap "@images/icchlk.xpm"\ -font [Font $win Medium] \ -borderwidth 1 -relief flat -padx 0 -pady 0 -text {} -cursor hand2\ -command "EditorPallet $win 10" SetHelp $win.leftframe.tools.palletchalk Editor.ToolChalk button $win.leftframe.tools.palleteraser\ -bitmap "@images/icersr.xpm"\ -font [Font $win Medium] \ -borderwidth 1 -relief flat -padx 0 -pady 0 -text {} -cursor hand2\ -command "EditorPallet $win 11" SetHelp $win.leftframe.tools.palleteraser Editor.ToolEraser button $win.leftframe.tools.palletstadium\ -bitmap "@images/icstad.xpm"\ -font [Font $win Medium] \ -borderwidth 1 -relief flat -padx 0 -pady 0 -text {} -cursor hand2\ -command "EditorPallet $win 12" SetHelp $win.leftframe.tools.palletstadium Editor.ToolStadium button $win.leftframe.tools.palletpark\ -bitmap "@images/icpark.xpm"\ -font [Font $win Medium] \ -borderwidth 1 -relief flat -padx 0 -pady 0 -text {} -cursor hand2\ -command "EditorPallet $win 13" SetHelp $win.leftframe.tools.palletpark Editor.ToolPark button $win.leftframe.tools.palletseaport\ -bitmap "@images/icseap.xpm"\ -font [Font $win Medium] \ -borderwidth 1 -relief flat -padx 0 -pady 0 -text {} -cursor hand2\ -command "EditorPallet $win 14" SetHelp $win.leftframe.tools.palletseaport Editor.ToolSeaport button $win.leftframe.tools.palletcoal\ -bitmap "@images/iccoal.xpm"\ -font [Font $win Medium] \ -borderwidth 1 -relief flat -padx 0 -pady 0 -text {} -cursor hand2\ -command "EditorPallet $win 15" SetHelp $win.leftframe.tools.palletcoal Editor.ToolCoal button $win.leftframe.tools.palletnuclear\ -bitmap "@images/icnuc.xpm"\ -font [Font $win Medium] \ -borderwidth 1 -relief flat -padx 0 -pady 0 -text {} -cursor hand2\ -command "EditorPallet $win 16" SetHelp $win.leftframe.tools.palletnuclear Editor.ToolNuclear button $win.leftframe.tools.palletairport\ -bitmap "@images/icairp.xpm"\ -font [Font $win Medium] \ -borderwidth 1 -relief flat -padx 0 -pady 0 -text {} -cursor hand2\ -command "EditorPallet $win 17" SetHelp $win.leftframe.tools.palletairport Editor.ToolAirport pack append $win.leftframe.tools\ $win.leftframe.tools.costlabel1 {top frame center fillx}\ $win.leftframe.tools.costlabel2 {top frame center fillx}\ $win.leftframe.tools.spacer {top frame center fillx} place $win.leftframe.tools.palletres -x 9 -y 58 place $win.leftframe.tools.palletcom -x 47 -y 58 place $win.leftframe.tools.palletind -x 85 -y 58 place $win.leftframe.tools.palletfire -x 9 -y 112 place $win.leftframe.tools.palletquery -x 47 -y 112 place $win.leftframe.tools.palletpolice -x 85 -y 112 place $win.leftframe.tools.palletwire -x 28 -y 150 place $win.leftframe.tools.palletbulldozer -x 66 -y 150 place $win.leftframe.tools.palletrail -x 6 -y 188 place $win.leftframe.tools.palletroad -x 66 -y 188 place $win.leftframe.tools.palletchalk -x 28 -y 216 place $win.leftframe.tools.palleteraser -x 66 -y 216 place $win.leftframe.tools.palletstadium -x 1 -y 254 place $win.leftframe.tools.palletpark -x 47 -y 254 place $win.leftframe.tools.palletseaport -x 85 -y 254 place $win.leftframe.tools.palletcoal -x 1 -y 300 place $win.leftframe.tools.palletnuclear -x 85 -y 300 place $win.leftframe.tools.palletairport -x 35 -y 346 pack append $win.leftframe\ $win.leftframe.tools {top frame center expand fill} pack append $win\ $win.topframe {top frame center fillx} \ $win.centerframe {right frame center expand fill} \ $win.leftframe {left frame center filly} global ShapePies piemenu $win.toolpie\ -title Tool\ -titlefont [Font $win Medium]\ -font [Font $win Medium]\ -fixedradius 26\ -shaped $ShapePies\ -preview "UIMakeSoundOn $head fancy Woosh {-volume 40}" $win.toolpie add command\ -label Road -bitmap "@images/icroadhi.xpm"\ -xoffset -4\ -command "EditorSetTool $win 9" $win.toolpie add command\ -label Bulldozer -bitmap "@images/icdozrhi.xpm"\ -xoffset 5 -yoffset 17\ -command "EditorSetTool $win 7" $win.toolpie add piemenu\ -font [Font $win Medium]\ -label Zone -piemenu $win.zonepie $win.toolpie add command\ -label Wire -bitmap "@images/icwirehi.xpm"\ -xoffset -4 -yoffset 17\ -command "EditorSetTool $win 6" $win.toolpie add command\ -label Rail -bitmap "@images/icrailhi.xpm"\ -xoffset 4\ -command "EditorSetTool $win 8" $win.toolpie add command\ -label Chalk -bitmap "@images/icchlkhi.xpm"\ -xoffset -4 -yoffset -17\ -command "EditorSetTool $win 10" $win.toolpie add piemenu\ -font [Font $win Medium]\ -label Build -piemenu $win.buildpie $win.toolpie add command\ -label Eraser -bitmap "@images/icersrhi.xpm"\ -xoffset 4 -yoffset -17\ -command "EditorSetTool $win 11" piemenu $win.zonepie\ -title Zone\ -titlefont [Font $win Medium]\ -font [Font $win Medium]\ -shaped $ShapePies\ -initialangle 270 -fixedradius 20 $win.zonepie add command\ -label Query -bitmap "@images/icqryhi.xpm"\ -yoffset 5\ -command "EditorSetTool $win 4" $win.zonepie add command\ -label Police -bitmap "@images/icpolhi.xpm"\ -xoffset 4 -yoffset -10\ -command "EditorSetTool $win 5" $win.zonepie add command\ -label Ind -bitmap "@images/icindhi.xpm"\ -xoffset 4 -yoffset 25\ -command "EditorSetTool $win 2" $win.zonepie add command\ -label Com -bitmap "@images/iccomhi.xpm"\ -yoffset -5\ -command "EditorSetTool $win 1" $win.zonepie add command\ -label Res -bitmap "@images/icreshi.xpm"\ -xoffset -4 -yoffset 25\ -command "EditorSetTool $win 0" $win.zonepie add command\ -label Fire -bitmap "@images/icfirehi.xpm"\ -xoffset -4 -yoffset -10\ -command "EditorSetTool $win 3" piemenu $win.buildpie\ -title Build\ -titlefont [Font $win Medium]\ -font [Font $win Medium]\ -shaped $ShapePies\ -initialangle 270 -fixedradius 25 $win.buildpie add command\ -label Airport -bitmap "@images/icairphi.xpm"\ -yoffset 7\ -command "EditorSetTool $win 17" $win.buildpie add command\ -label Nuclear -bitmap "@images/icnuchi.xpm"\ -xoffset 11 -yoffset -10\ -command "EditorSetTool $win 16" $win.buildpie add command\ -label Seaport -bitmap "@images/icseaphi.xpm"\ -xoffset 0 -yoffset 14\ -command "EditorSetTool $win 14" $win.buildpie add command\ -label Park -bitmap "@images/icparkhi.xpm"\ -yoffset -5\ -command "EditorSetTool $win 13" $win.buildpie add command\ -label Stadium -bitmap "@images/icstadhi.xpm"\ -xoffset 0 -yoffset 14\ -command "EditorSetTool $win 12" $win.buildpie add command\ -label Coal -bitmap "@images/iccoalhi.xpm"\ -xoffset -11 -yoffset -10\ -command "EditorSetTool $win 15" SetEditorAutoGoto $win 0 SetEditorControls $win 1 SetEditorOverlay $win 1 SetEditorDynamicFilter $win 0 InitEditor $win global CityName UISetCityName $CityName update idletasks micropolis-activity/res/hexa.5630000664000076400007640000003300010724145723017004 0ustar simcitysimcity !  " ! ! """! 1"!  "" "" "  ""  "" """" "3" " "!"  ## """ !!"#""""  "0 "2# " 2! "" !""!" !!"" """""""!!!1!"!" " ""   "  "!  "  """      " """ """#3  03 #3#2"" 3 0 #02 "23  """ """ 3332   "#3 32" #0  "2"  " "  " 20" 2 "#3 21#"# " " 00 "  " 330"" "" !0""0 !2!0" """   ""3!##" "  #  ""   3 #0  #"0 3!00 22  3  ! ! " 000" "3 300  30 30 "#0  0 30 0 " *3 03# 000 0# "00 "0  0"03 0 " # "  0 0 0 0"  030 "0 "0  0 30 3 3 3 " 3      *  0 0 2  0330 0030 !2 0 !3303 *"300 0300000  0 0 00 00    "  0 0   0     00000micropolis-activity/res/snro.4440000664000076400007640000006476010724145723017057 0ustar simcitysimcity$''(((()**)*((("         !!  "(  !$!%% '&&%!#xqghfbWE:?~uwvs{xr{mscavofmxtok_XbNYaYVVTSPNNJGD>>D<32;;3), /u|vos{rf[Yic[NG]WNH=2,# """(*.0000145666667;<;;:999 !!!!!""""##################$$$$$$'$$$$$$$$$$$$$$$$$$$$$%+######!!!!"####################!! $  "T mCNTLPICT"CURSMENUBPAT rSTR#WDEF   =  J  (   00#00"00#00#00"0B0$00"00#00B0$00#00$00E0C0C0C0I0C0C0C0I0C0C0C0D00"00"00"0$00#000#00"00%0%000%0%0%0%00B00%000%0!0B0$00#0000%0!0$000%00B0+0+0)0B0(0(0*0B0*0*0)0B00%0"000000%0%0 000%000%0%0!00%0%0%0  0B0000#00"000B00%0%0%00000 00%0!0$00J0C0C0C0L0C0C0C0L0C0C0C0H00%000!00%0!0$000"00 00%0%0%0"00%0%0  0B00%00%0%0%000!0B0$000%0%0%000%000#00#00%000!0Bppp0Baaa0Ba a#a&0B00%0!0000#0%0%00$0%0!000$000%0%0%00#000%0%0  0J0D00%0%0%0000%00B00%000%0%0!000 00%0%000!000BpppMaapMa!$a'0B00%00$0%0%000%0%00 0$00#0%0%000!00 00%0%000!00%0  0$00J0K0D00000%0!0B00%0!00%0%0"00%000%000!0Bppp0Baaa0Ba"a%a(0B000 00%0%0!00000%0%0%0!0000%0 0000!00 0B0F0D00%00B00%000%0%0%0"00!00%0!0088pN0C0L0CpN0C0L0CpN0C0H00%0%0%000%00"000000#0%0!000B00"0F0C0D00%0!0B0000#0%0%0%0%00000%0%0"8aaa0B0(0(0+0BaDaGaJ0B00%0%0%0%00#00%0%0%00$0000000!0$00"0B00%0#00B0$0%0%00B00 00%0%0000 00#00"00%0%0%0"8Raa0B0(;H0(0BaEHaK0B0$000%0%0%0%0%0%0%0%0%0%0!0$0%0!00%0 00%00B00%00 0B0$0%000 0B0$0%0%000%0%0%000%0008Raaa0B0(0+0+0BaFaIaL0B00!00%0%0%0%0%0000000#00"00"0$0%0%000"0$000%0  00%0!0B000B00!0B00%000#000%0%0%0%0 000E0C0C0C0L0CpN0C8\8SpN0C0L0CpN0C0H0000%0%0%0%0!00%0000000 0000 00  0000B00 0B000B00%0!000 00%0%0%0 00!0Bccc0Bppp8Raaa0Baaa0B00%0000%000%0%000 0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0CAAAAA0C0C0C0C0C0L0C0I0C0C0K0C0C0C0C0C0H00%00$0%0%0%0!008Rcc 0Bpp0Baa0Baa0B0000!00%0%0!0E0C0C00"0$00"0$00" 0$00#00#00B0B00#00#00"0B0$00%00 0000000 8Rccc 0Bppp0Baaa0Baaa0B00%000%0"00000B0000%000%0 00%0%0%0%0!0B0F0C0D0000%0%00B00%08U8S8S8S8S8S8S8S8Y8S8S8S8Y8S0C0C0I0C88pN0C0L0CpN0C0L0CpN0C0L0CpN0C0H00#00%0%0!000E0C0C0G00!00%0!0$00%0%0  00%000%00B0$00J0C0C0D00%0!0B00!8R0*0)0)0(0(0+0)8RaDaGaJ8Rahakan0B0+8aaa0Baaa0Baaa0Baaa0B00%0%0%0%000%00"0E0G000000#0%0%0%0  00!00!0F0D00 0B0$00B00%00B008R0)0(0*0*0)0(0+0BaEHaKx]ailaopMpx]aapMaapMaa0Baa0B00%0%0%0%0!00000E0C0G0$000 00%0%0%0! 00#00%0%0"0F0D0B00!0F0D00 0B00!8Z8S0C0C0C0C0D0+0BaFaIaL8Rajamap0B0*8Raaa0Baaa0Baaa0Baaa0B0000000E0C0C0C0C0H00#0%0 00%0%0%0 00%0%0%0%0%00F0I0H000"0F0D0B00%08R0)ccc#c'0B0)88x^8S8\8SpN0C0L0C0L0CpN0C0L0C0C0C0L0CpN0C8\8SpN0C0L0C0C0C0I0C0C0C0I0C0G0B000 00%0%0%0!00%0%0%0%00F0H00"0F0C0H00%0!8R0+c c$c(0B0+8aDaGaJ8Raaa0B0+0Ba2a5a80B0+0)0+0Bppp8RaDaGaJ0Bccc0Bppp0B0$00B0$000#000%0%0%0000000B0$00%0%0#00B00%08R0(c c)8R0+8aEHaK0Baa0B0*0Ba36a90B0);J0)0Bpp0BaEHaK0Bcc pMpp0B0$0%0!0B00!00%0%0!00%0%0%0!00"0B000%0%0%0!0B000 8R0*cc"c&c*8R0*8aFaIaL0Baaa0B0+8Ra4a7a:0B0+0*0*8Rppp8RaFaIaL0Bccc 0Bppp0B00%00B0000%0%0%0"00%0%0 0$00#00%000"0B00%0%00J0C0C0C0L0C0C0C8Yx^888\8SpN0C0L0CpN0C0L0C88pN0C0L0C0C0C88x88X0+0+0*0J0CpN0C0L0CpN0C0H000 0B00 0E0C0C00%0%0%00$0%0%0%0%00"00%0%0%0%0!000B000 0Bbbb0Bppp8Rp`p8Raaa0BaDaGaJ0B0+8ppp0Bppp8aaa8R0+;I0*0Bbbb0B```0B0B0E0C0G00000%0%0%0000"00%0%0%000!pM0$0pMbcpMppx]``pMaa0BaEHaK0B0*8RpppMpp8Raa80(0)0(8Rbc0B``0B0B0B00%000"00%0%000%00B00!0Bbbc0Bppp8Rp`p8Raaa0BaFaIaL0B0*8Rppp0Bppp8Raaa888S8S8Xbbc0B```0B0J0C0C0C0G0$00#00"00%00$000"00 00%0!0F0D00#00#00J0CpN0C0L0CpN0C88pN0C8\8Sx^8S8\8SpN0C8\8S8\8SpN0C8\8Sx^8S8\8Sx^8S0Hppp0J0CpN0C0L0CpN0C0L0C0C0C0C0C0C0H00%0%0%0%0"00%0!00!00"00%0"0B00%0%0%0!0Bccc0Baaa8aaa8Raaa8Ra a#a&8R0(8Rccc8Raaa8RaaapMpppMppp0Baaa0B0B00"00%0%0%0%000#0%0%0000%0"00%0"00%00B00%0%0%00Bcc 8Raa0Baa8Raa0Ba!$a'pMppMcc 0Baa8Raa0Bqpq0Bpp0Baa0B0$00"0F0D000%0#0000%0%0%0!00%0%0%000!0000%0%0"00%0!0B00%0%0%0!0Bccc 8Raaa0Baaa8Raaa0Ba"a%a(0B0+0Bccc 0Baaa8Raaa0J0C0C0C0Hppp0Baaa0B00%00B00!000 00%0%00000 00%0"00%0%0%0"000B000%0%088pN0C8\8SpN0C8\8Sx^8S8\8SpN0C8\8Sx^8S8\8S0L0CpN0C0L0CpN0C0L0CpN0C0Hccc0J0CpN0C0L0CpN0C0H00%0!0B0000%0%00!0$0%0%000%0000J0C0D000 8ppp8Raaa8Raaa 8Raaa8RaDaGaJ8R0*0Bbbb0Baaa0BaaapMcc 0Bbbb0Baaa0B0$0%0%00B00 0$000%0%0%0%0#00#0%0%0%0 0$00%00B0F0C8Y8S8Xpp8Raa0Ba a 0Baa8RaEHaK8R0(8Rbc0Baa0Baa0Bccc 0Bbc0Baa0B0000B00!000%0%0000%0%0%0!00%0%0%00#00Bqpq8R0)8Rppp8Raaa0Baa a 0Baaa8RaFaIaL8R0)8Rbbc0Baaa0Baaa0B0)0)0(0Bbbc0Baaa0B0E0C0C0K0C0D00%0#000 000%0%0"00%0%00%0%0%00#00Bpp0B0+8Z8SpN0C8\8SpN0C8\8SpN0C8\8SpN0C88x^8S888[x^0I0C0L0C888\8SpN0C0L0C0C0C0L0C0C0C0L0C0C0I0K0C0C0C0C0G0B00%0%0!00"000%0#0%0%0000%0%0%0! 0Bqqq0B0)8Ra;a>aA8Ra2a5a88Ra2a5a88Rppp8ppp8aDaGaJ0B0(0B0*80*8Ra;a>aA0BaDaGaJ0B0)0*0(0B0$00B0F0C0C0D00%0%000%0%0#0000%0%0%000%0%0 0Bpqq0B0+0BaaA0B000B0E0C0C0C0D00!000" 0B0*0(0*0+qpp0J0CpN0C0L0CpN0C88x888pN0C0L0CpN0C888x8X0+8aEHaK0Baa0BaapMaaA0BaDaGaJ0BaDaGaJ0Bccc0BqpppMaa0Baa0Bailao0Bcc 0Ba!$a'8Railao8R0)8aDaGaJ888S8S8\8SpN0C0L0C0C0C0H00 0F0C0C0C0Haaa0B00! 0BaEHaKpMa. # # ADDITIONAL TERMS per GNU GPL Section 7 # # No trademark or publicity rights are granted. This license does NOT # give you any right, title or interest in the trademark SimCity or any # other Electronic Arts trademark. You may not distribute any # modification of this program using the trademark SimCity or claim any # affliation or association with Electronic Arts Inc. or its employees. # # Any propagation or conveyance of this program must include this # copyright notice and these terms. # # If you convey this program (or any modifications of it) and assume # contractual liability for the program to recipients of it, you agree # to indemnify Electronic Arts for any liability that those contractual # assumptions impose on Electronic Arts. # # You may not misrepresent the origins of this program; modified # versions of the program must be marked as such and not identified as # the original program. # # This disclaimer supplements the one included in the General Public # License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS # PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY # OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF # SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS # DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, # INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, # FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY # RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, # USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST # INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL # MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE # UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE # WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE # CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR # ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME # JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED # WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A # CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY # NOT APPLY TO YOU. ######################################################################## # Libraries ######################################################################## set errorInfo {} set auto_noexec 1 source $tk_library/wish.tcl ######################################################################## # Globals ######################################################################## set UniqueID 0 set State uninitialized set CityName "Micropolis" set GameLevel 0 set SimHome [pwd] set CityLibDir $SimHome/cities set CityDir $CityLibDir set OldBudget 0 set BudgetRoadFund 0 set BudgetFireFund 0 set BudgetPoliceFund 0 set BudgetTaxRate 0 set DemandRes 0 set DemandCom 0 set DemandInd 0 set Priority 2 set Time 3 set AutoGoto 1 set AutoBudget 1 set Disasters 1 set AutoBulldoze 1 set Sound 1 set DoAnimation 1 set DoMessages 1 set DoNotices 1 set ShapePies 1 set SoundServers {} set AudioChannels {mode edit fancy warning intercom} set BudgetTimeout 30 set BudgetTimer 0 set BudgetTimerActive 0 set BudgetsVisible 0 set EvaluationsVisible 0 set SplashScreenDelay 5000 set Scenario -1 set Chatting 0 set ChatServer "localhost" set ChatSocket 6667 set ChatConnection {} set NickName "nickname" set UserName "username" set ServerName "servername" set RealName "realname" set ChannelName "#Micropolis" set HomeDir "" set ResourceDir "" set HostName "" set LocalHostName "[exec hostname]" set SaveCityWin "" set MapHistory {} set MapHistoryNum -1 set HelpLoaded 0 set QueryX 0 set QueryY 0 set FreeVotes 0 set ShowingPicture 300 set MaxLines 500 set ShrinkLines 250 set ShowingParms {} set VoteNames {UseThisMap Ask Zone} set VotesForUseThisMap {} set VotesForAsk {} set VotesForZone {} set VotesForBudget {} set CurrentDate {} set HeadWindows {} set EditorWindows {} set MapWindows {} set GraphWindows {} set BudgetWindows {} set EvaluationWindows {} set SplashWindows {} set ScenarioWindows {} set FileWindows {} set AskWindows {} set PlayerWindows {} set NoticeWindows {} set HelpWindows {} set FrobWindows {} set HeadPanelWidth 360 set HeadPanelHeight 200 set MapPanelWidth 360 set MapPanelHeight 330 set NoticePanelWidth 360 set NoticePanelHeight 250 set SplashPanelWidth 1200 set SplashPanelHeight 900 set ScenarioPanelWidth 420 set ScenarioPanelHeight 440 set SugarURI "" set SugarNickName "" set SugarShared 0 set SugarActivated 0 set SugarBuddies {} set SubWindows { {editor EditorWindows} {map MapWindows} {graph GraphWindows} {budget BudgetWindows} {evaluation EvaluationWindows} {scenario ScenarioWindows} {splash SplashWindows} {file FileWindows} {ask AskWindows} {player PlayerWindows} {notice NoticeWindows} {help HelpWindows} {frob FrobWindows} {head HeadWindows} } # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 # type id callback param var x y w h normal over disabled checked checkedover # ----------- --------------- --------------- ------- ------- --- --- --- --- ------- ---- -------- ------- ----------- set ScenarioButtons { { button load DoLoad "" "" 70 238 157 90 "" @images/button1hilite.xpm "" } { button generate DoGenerate "" "" 62 392 157 90 "" @images/button2hilite.xpm "" } { button quit DoQuit "" "" 68 544 157 90 "" @images/button3hilite.xpm "" } { button about DoAbout "" "" 101 705 157 90 "" @images/button4hilite.xpm "" } { checkbox easy DoLevel 0 "" 982 106 190 70 "" @images/checkbox1hilite.xpm "" @images/checkbox1checked.xpm @images/checkbox1hilitechecked.xpm } { checkbox medium DoLevel 1 "" 982 176 190 70 "" @images/checkbox2hilite.xpm "" @images/checkbox2checked.xpm @images/checkbox2hilitechecked.xpm } { checkbox hard DoLevel 2 "" 982 246 190 70 "" @images/checkbox3hilite.xpm "" @images/checkbox3checked.xpm @images/checkbox3hilitechecked.xpm } { button left DoLeft "" "" 540 375 50 50 "" @images/lefthilite.xpm @images/leftdisabled.xpm } { button right DoRight "" "" 841 375 50 50 "" @images/righthilite.xpm @images/rightdisabled.xpm } { button play DoPlay "" "" 625 376 180 50 "" @images/playhilite.xpm "" } { button scenario1 DoPickScenario "1" "" 310 451 209 188 "" @images/scenario1hilite.xpm "" } { button scenario2 DoPickScenario "2" "" 519 451 209 188 "" @images/scenario2hilite.xpm "" } { button scenario3 DoPickScenario "3" "" 727 450 209 188 "" @images/scenario3hilite.xpm "" } { button scenario4 DoPickScenario "4" "" 936 450 209 188 "" @images/scenario4hilite.xpm "" } { button scenario5 DoPickScenario "5" "" 310 639 209 188 "" @images/scenario5hilite.xpm "" } { button scenario6 DoPickScenario "8" "" 519 639 209 188 "" @images/scenario6hilite.xpm "" } { button scenario7 DoPickScenario "7" "" 728 638 209 188 "" @images/scenario7hilite.xpm "" } { button scenario8 DoPickScenario "6" "" 937 638 209 188 "" @images/scenario8hilite.xpm "" } } # Disabled until we handle mouse events on the map itself. # { button map DoMap "" "" 516 30 396 338 "" @images/maphilite.xpm } ######################################################################## # Fonts set FontInfo { {Big { {-*-dejavu lgc sans-medium-r-normal-*-90-*} }} {Large { {-*-dejavu lgc sans-medium-r-normal-*-80-*} }} {Medium { {-*-dejavu lgc sans-medium-r-normal-*-70-*} }} {Small { {-*-dejavu lgc sans-medium-r-normal-*-60-*} }} {Narrow { {-*-dejavu lgc sans-medium-r-normal-*-60-*} }} {Tiny { {-*-dejavu lgc sans-medium-r-normal-*-60-*} }} {Text { {-*-dejavu lgc sans-medium-r-normal-*-70-*} }} {Message { {-*-dejavu lgc sans-medium-r-normal-*-70-*} }} {Alert { {-*-dejavu lgc sans-medium-r-normal-*-70-*} }} } ######################################################################## set MapTitles { {Micropolis Overall Map} {Residential Zone Map} {Commercial Zone Map} {Industrial Zone Map} {Power Grid Map} {Transportation Map} {Population Density Map} {Rate of Growth Map} {Traffic Density Map} {Pollution Desity Map} {Crime Rate Map} {Land Value Map} {Fire Coverage Map} {Police Coverage Map} {Dynamic Filter Map} } set EditorPallets { leftframe.tools.palletres leftframe.tools.palletcom leftframe.tools.palletind leftframe.tools.palletfire leftframe.tools.palletquery leftframe.tools.palletpolice leftframe.tools.palletwire leftframe.tools.palletbulldozer leftframe.tools.palletrail leftframe.tools.palletroad leftframe.tools.palletchalk leftframe.tools.palleteraser leftframe.tools.palletstadium leftframe.tools.palletpark leftframe.tools.palletseaport leftframe.tools.palletcoal leftframe.tools.palletnuclear leftframe.tools.palletairport } set EditorPalletImages { res com ind fire qry pol wire dozr rail road chlk ersr stad park seap coal nuc airp } set EditorPalletSounds { Res Com Ind Fire Query Police Wire Bulldozer Rail Road Chalk Eraser Stadium Park Seaport Coal Nuclear Airport } set GraphPallets { leftframe.left.res leftframe.left.com leftframe.left.ind leftframe.right.money leftframe.right.crime leftframe.right.pollution } set GraphPalletImages { res com ind mony crim poll } set GraphYearPallets { leftframe.year.year10 leftframe.year.year120 } set GraphYearPalletImages { 10 120 } set ToolInfo { { {a} {Residential Zone} {$100}} { {a} {Commercial Zone} {$100}} { {an} {Industrial Zone} {$100}} { {a} {Fire Station} {$500}} { {a} {Query} {free}} { {a} {Police Station} {$500}} { {a} {Wire} {$5}} { {a} {Bulldozer} {$1}} { {a} {Rail} {$20}} { {a} {Road} {$10}} { {a} {Chalk} {free}} { {an} {Eraser} {free}} { {a} {Stadium} {$5,000}} { {a} {Park} {$20}} { {a} {Seaport} {$3,000}} { {a} {Coal Power Plant} {$3,000}} { {a} {Nuclear Power Plant} {$5,000}} { {an} {Airport} {$10,000}} { {a} {Network} {$1,000}} } set DynamicDataNames { {Population Density} {Rate of Growth} {Traffic Density} {Pollution Density} {Crime Rate} {Land Value} {Police Coverage} {Fire Coverage} } ######################################################################## # Initialization ######################################################################## wm title . {Micropolis Root} if {"[sim Platform]" == "msdos"} { sim DoAnimation 0 set DoAnimation 0 set ShapePies 0 } else { sim DoAnimation 1 set DoAnimation 1 set ShapePies 1 } sprite explosion 7 sprite tornado 6 sprite airplane 3 sprite helicopter 2 sprite monster 5 sprite ship 4 sprite bus 8 sprite train 1 sim ResetDynamic # The next three lines have no effect on the OLPC, where we don't provide # the font in res (because it's already in the system fonts). These lines # are for other systems that lack the font. set FontPath "[pwd]/res/dejavu-lgc" system "xset -fp $FontPath >&/dev/null" system "xset +fp $FontPath >&/dev/null" ######################################################################## # Messages ######################################################################## proc Message {id color title msg {props {}}} { global Messages set Messages($id) [list $color $title $msg $props] } Message 1 #7f7fff {DULLSVILLE, USA 1900} \ {Things haven't changed much around here in the last hundred years or so and the residents are beginning to get bored. They think Dullsville could be the next great city with the right leader. It is your job to attract new growth and development, turning Dullsville into a Metropolis within 30 years.} Message 2 #7f7fff {SAN FRANCISCO, CA. 1906} \ {Damage from the earthquake was minor compared to that of the ensuing fires, which took days to control. 1500 people died. Controlling the fires should be your initial concern. Then clear the rubble and start rebuilding. You have 5 years.} Message 3 #7f7fff {HAMBURG, GERMANY 1944} \ {Allied fire-bombing of German cities in WWII caused tremendous damage and loss of life. People living in the inner cities were at greatest risk. You must control the firestorms during the bombing and then rebuild the city after the war. You have 5 years.} Message 4 #7f7fff {BERN, SWITZERLAND 1965} \ {The roads here are becoming more congested every day, and the residents are upset. They demand that you do something about it. Some have suggested a mass transit system as the answer, but this would require major rezoning in the downtown area. You have 10 years.} Message 5 #7f7fff {TOKYO, JAPAN 1957} \ {A large reptilian creature has been spotted heading for Tokyo bay. It seems to be attracted to the heavy levels of industrial pollution there. Try to control the fires, then rebuild the industrial center. You have 5 years.} Message 6 #7f7fff {DETROIT, MI. 1972} \ {By 1970, competition from overseas and other economic factors pushed the once "automobile capital of the world" into recession. Plummeting land values and unemployment then increased crime in the inner-city to chronic levels. You have 10 years to reduce crime and rebuild the industrial base of the city.} Message 7 #7f7fff {BOSTON, MA. 2010} \ {A major meltdown is about to occur at one of the new downtown nuclear reactors. The area in the vicinity of the reactor will be severly contaminated by radiation, forcing you to restructure the city around it. You have 5 years to get the situation under control.} Message 8 #7f7fff {RIO DE JANEIRO, BRAZIL 2047} \ {In the mid-21st century, the greenhouse effect raised global temperatures 6 degrees F. Polar icecaps melted and raised sea levels worldwide. Coastal areas were devastated by flood and erosion. You have 10 years to turn this swamp back into a city again.} Message 9 #ffa500 {Query Zone Status} \ { Zone: %s Density: %s Value: %s Crime: %s Pollution: %s Growth: %s} \ {{view {PanView $v $QueryX $QueryY}}} Message 10 #ff4f4f {POLLUTION ALERT!} \ {Pollution in your city has exceeded the maximum allowable amounts established by the Micropolis Pollution Agency. You are running the risk of grave ecological consequences. Either clean up your act or open a gas mask concession at city hall.} \ {{view {PanView $v [sim PolMaxX] [sim PolMaxY]}}} Message 11 #ff4f4f {CRIME ALERT!} \ {Crime in your city is our of hand. Angry mobs are looting and vandalizing the central city. The president will send in the national guard soon if you cannot control the problem.} \ {{view {PanView $v [sim CrimeMaxX] [sim CrimeMaxY]}}} Message 12 #ff4f4f {TRAFFIC WARNING!} \ {Traffic in this city is horrible. The city gridlock is expanding. The commuters are getting militant. Either build more roads and rails or get a bulletproof limo.} \ {{view {PanView $v [sim TrafMaxX] [sim TrafMaxY]}}} Message 20 #ff4f4f {FIRE REPORTED!} \ "A fire has been reported!" \ {{view {PanView $v [sim CrashX] [sim CrashY]}}} Message 21 #ff4f4f {MONSTER ATTACK!} \ "A large reptilian creature has been spotted in the water. It seems to be attracted to areas of high pollution. There is a trail of destruction wherever it goes. \ All you can do is wait till he leaves, then rebuild from the rubble." \ {{view {FollowView $v monster}}} # XXX: write more text Message 22 #ff4f4f {TORNADO ALERT!} \ {A tornado has been reported! There's nothing you can do to stop it, so you'd better prepare to clean up after the disaster!} \ {{view {FollowView $v tornado}}} # XXX: write more text Message 23 #ff4f4f {EARTHQUAKE!} \ {A major earthquake has occurred! Put out the fires as quickly as possible, before they spread, then reconnect the power grid and rebuild the city.} \ {{view {PanView $v [sim CenterX] [sim CenterY]}}} # XXX: write more text Message 24 #ff4f4f {PLANE CRASH!} \ {A plane has crashed!} \ {{view {PanView $v [sim CrashX] [sim CrashY]}}} # XXX: write more text Message 25 #ff4f4f {SHIPWRECK!} \ {A ship has wrecked!} \ {{view {PanView $v [sim CrashX] [sim CrashY]}}} # XXX: write more text Message 26 #ff4f4f {TRAIN CRASH!} \ {A train has crashed!} \ {{view {PanView $v [sim CrashX] [sim CrashY]}}} # XXX: write more text Message 27 #ff4f4f {HELICOPTER CRASH!} \ {A helicopter has crashed!} \ {{view {PanView $v [sim CrashX] [sim CrashY]}}} Message 30 #ff4f4f {FIREBOMBING REPORTED!} \ {Firebombs are falling!!} \ {{view {PanView $v [sim CrashX] [sim CrashY]}}} Message 35 #7fff7f {TOWN} \ {Congratulations, your village has grown to town status. You now have 2,000 citizens.} \ {{view {PanView $v [sim CenterX] [sim CenterY]}}} Message 36 #7fff7f {CITY} \ {Your town has grown into a full sized city, with a current population of 10,000. Keep up the good work!} \ {{view {PanView $v [sim CenterX] [sim CenterY]}}} Message 37 #7fff7f {CAPITAL} \ {Your city has become a capital. The current population here is 50,000. Your political future looks bright.} \ {{view {PanView $v [sim CenterX] [sim CenterY]}}} Message 38 #7fff7f {METROPOLIS} \ {Your capital city has now achieved the status of metropolis. The current population is 100,000. With your management skills, you should seriously consider running for governor.} \ {{view {PanView $v [sim CenterX] [sim CenterY]}}} Message 39 #7fff7f {MEGALOPOLIS} \ {Congratulation, you have reached the highest category of urban development, the megalopolis. If you manage to reach this level, send us email at micropolis@laptop.org or send us a copy of your city. We might do something interesting with it.} \ {{view {PanView $v [sim CenterX] [sim CenterY]}}} Message 40 #7fff7f {MEGALINIUM} \ {Congratulation, you have reached the end of time! Because of the toroidal nature of the the Micropolis Space/Time Continuum, your city has wrapped back in time to 1900!} \ {{view {PanView $v [sim CenterX] [sim CenterY]}}} # XXX: write more text Message 41 #ff4f4f {HEAVY TRAFFIC!} \ {Sky Watch One reporting heavy traffic!} \ {{view {FollowView $v helicopter}}} # XXX: write more text Message 42 #ff4f4f {FLOODING REPORTED!} \ {Flooding has been been reported along the water's edge!} \ {{view {PanView $v [sim FloodX] [sim FloodY]}}} Message 43 #ff4f4f {NUCLEAR MELTDOWN!} \ {A nuclear meltdown has occured at your power plant. You are advised to avoid the area until the radioactive isotopes decay. Many generations will confront this problem before it goes away, so don't hold your breath.} \ {{view {PanView $v [sim MeltX] [sim MeltY]}}} Message 44 #ff4f4f {RIOTS!} \ {The citizens are rioting in the streets, setting cars and houses on fire, and bombing government buildings and businesses! All media coverage is blacked out, while the fascist pigs beat the poor citizens into submission.} Message 46 #ff4f4f {NO SOUND SERVER!} \ {There is no sound server running on your X11 display "%s". You won't hear any noise unless you run a sound server, and turn the sound back on in the "Options" menu.} Message 48 #7f7fff {Start a New City} \ {Build your very own city from the ground up, starting with this map of uninhabited land.} Message 49 #7f7fff {Restore a Saved City} \ {This city was saved in the file named: %s} Message 100 #7fff7f {YOU'RE A WINNER!} \ {Your mayorial skill and city planning expertise have earned you the KEY TO THE CITY. Local residents will erect monuments to your glory and name their first-born children after you. Why not run for governor?} \ {{middle {@images/key2city.xpm}}} Message 200 #ff4f4f {IMPEACHMENT NOTICE!} \ {The entire population of this city has finally had enough of your inept planning and incompetant management. An angry mob -- led by your mother -- has been spotted in the vicinity of city hall. You should seriously consider taking an extended vacation -- NOW. (Or read the manual and try again.)} Message 300 #ffd700 {About Micropolis} \ "Micropolis Version [sim Version] Copyright (C) 2007 by Electronic Arts. Based on the Original Micropolis Concept and Design by Will Wright. TCL/Tk User Interface Designed and Created by Don Hopkins, DUX Software. Ported to Linux, Optimized and Adapted for OLPC by Don Hopkins. Licensed under the GNU General Public License, version 3, with additional conditions." ######################################################################## # Options ######################################################################## option add *CheckButton.relief flat option add *Dialog.cursor top_left_arrow option add *Entry.relief sunken option add *Frame.borderWidth 0 option add *Listbox.relief sunken option add *Scrollbar.relief sunken option add *RadioButton.anchor w option add *RadioButton.relief flat option add *background #b0b0b0 option add *foreground #000000 option add *activeBackground #d0d0d0 option add *activeForeground #000000 option add *disabledForeground "" option add *selectBackground #d0d0d0 option add *selectForeground #000000 #option add *selector #ffff80 option add *selector #bf0000 option add *Scrollbar.Background #b0b0b0 option add *Scrollbar.Foreground #d0d0d0 option add *Interval.Background #b0b0b0 option add *Interval.Foreground #000000 option add *Interval.activeForeground #d0d0d0 option add *Interval.sliderForeground #b0b0b0 option add *Scale.activeForeground #d0d0d0 option add *Scale.sliderForeground #b0b0b0 option add *PieMenu.activeBackground #b0b0b0 option add Mwm*Micropolis.clientDecoration -maximize ######################################################################## # Global Bindings ######################################################################## bind all {HandleHelp %W %x %y %X %Y} bind all {HandleHelp %W %x %y %X %Y} bind all {HandleHelp %W %x %y %X %Y} bind all {HandleHelp %W %x %y %X %Y} ######################################################################## # Utilities ######################################################################## proc echo {args} { puts stdout $args flush stdout } proc Unique {} { global UniqueID set id $UniqueID incr UniqueID return $id } proc tkerror {err} { global errorInfo puts stderr "$errorInfo" } proc ident {i} { return "$i" } proc NoFunction {args} {} proc LinkWindow {fromname to} { global WindowLinks set WindowLinks($fromname) $to } proc WindowLink {fromname} { global WindowLinks set to "" catch {set to $WindowLinks($fromname)} return $to } proc DeleteWindow {sym name win} { set head [WindowLink $win.head] LinkWindow $head.$sym {} global $name set wins [eval ident "\$$name"] set i [lsearch $wins $win] if {$i != -1} { set $name [lreplace $wins $i $i] } destroy $win } proc Font {win name} { global FontInfo FontCache HeadWindows set scr [winfo screen $win] set font "" catch { set font $FontCache($scr,$name) } if {"$font" == ""} { set label "" catch { set label $FontCache($scr) } if {"$label" == ""} { foreach head $HeadWindows { if {"[winfo screen $head]" == "$scr"} { set label $head.fontlabel label $label -text "X11 Sucks" -font fixed set FontCache($scr) $label } } } set fonts [keylget FontInfo $name] foreach font $fonts { #echo "Configuring font $font on $label" if {[catch "$label config -font \"$font\""] == 0} { #echo "yow!" break } else { #echo "oops!" set font "" } } if {"$font" == ""} { #set font 8x16 # OLCP default font set font 6x13 } set FontCache($scr,$name) $font } return $font } proc Color {win color mono} { if {[winfo screendepth $win] == 1} { return $mono } else { return $color } } ######################################################################## # Window Definition Functions ######################################################################## proc MakeWindow.head {{display ":0"}} { global ResourceDir source $ResourceDir/whead.tcl return $win } proc MakeWindow.editor {head {display ":0"}} { global ResourceDir source $ResourceDir/weditor.tcl return $win } proc MakeWindow.map {head {display ":0"}} { global ResourceDir source $ResourceDir/wmap.tcl return $win } proc MakeWindow.graph {head {display ":0"}} { global ResourceDir source $ResourceDir/wgraph.tcl return $win } proc MakeWindow.budget {head {display ":0"}} { global ResourceDir source $ResourceDir/wbudget.tcl return $win } proc MakeWindow.evaluation {head {display ":0"}} { global ResourceDir source $ResourceDir/weval.tcl return $win } proc MakeWindow.splash {head {display ":0"}} { global ResourceDir source $ResourceDir/wsplash.tcl return $win } proc MakeWindow.scenario {head {display ":0"}} { global ResourceDir source $ResourceDir/wscen.tcl return $win } proc MakeWindow.file {head {display ":0"}} { global ResourceDir source $ResourceDir/wfile.tcl return $win } proc MakeWindow.ask {head {display ":0"}} { global ResourceDir source $ResourceDir/wask.tcl return $win } proc MakeWindow.player {head {display ":0"}} { global ResourceDir source $ResourceDir/wplayer.tcl return $win } proc MakeWindow.notice {head {display ":0"}} { global ResourceDir source $ResourceDir/wnotice.tcl return $win } proc MakeWindow.help {head {display ":0"}} { global ResourceDir source $ResourceDir/whelp.tcl return $win } proc MakeWindow.frob {head {display ":0"}} { global ResourceDir source $ResourceDir/wfrob.tcl return $win } ######################################################################## # Sound Support ######################################################################## proc UIInitializeSound {} { } proc UIShutDownSound {} { } proc UIDoSoundOn {win cmd} { global Sound SoundServers if {$Sound} { set win [WindowLink [winfo toplevel $win].head] if {[lsearch $SoundServers $win] != -1} { set cmd "send -quick -server $win Sound sound $cmd" if {[catch $cmd]} { # XXX: Lost a sound server... LostSoundServer $win } } } } proc UIDoSound {cmd} { global Sound SoundServers if {$Sound} { foreach win $SoundServers { set foo "send -quick -server $win Sound $cmd" if {[catch $foo]} { # XXX: Lost a sound server... LostSoundServer $win } } } } proc KillSoundServers {} { global SoundServers foreach win $SoundServers { set foo "send -quick -server $win Sound KillSoundServer" catch $foo } set SoundServers {} } proc UISetChannelVolume {win chan vol} { UIDoSoundOn $win "channel $chan -volume $vol" } proc EchoPlaySound {soundspec} { # Temporary workaround to tell Python Sugar app to play sound. global Sound if {$Sound} { echo PlaySound [lindex $soundspec 0] } } proc UIMakeSoundOn {win chan sound {opts ""}} { # Send message to Python to play sound. EchoPlaySound $sound #UIDoSoundOn $win "play $sound -replay -channel $chan $opts" } proc UIStartSoundOn {win chan sound {opts ""}} { # Send message to Python to play sound. EchoPlaySound $sound #UIDoSoundOn $win "play $sound -replay -channel $chan -repeat 100 $opts" } proc UIStopSoundOn {win chan sound {opts ""}} { UIDoSoundOn $win "stop $sound" } proc UIMakeSound {chan sound {opts ""}} { # Send message to Python to play sound. EchoPlaySound $sound #UIDoSound "sound play $sound -replay -channel $chan $opts" } proc UIStartSound {chan sound {opts ""}} { # Send message to Python to play sound. EchoPlaySound $sound #UIDoSound "sound play $sound -channel $chan -repeat 100 $opts" } proc UIStopSound {chan sound {opts ""}} { UIDoSound "sound stop $sound" } proc SetupSoundServer {win} { AddSoundServer $win } proc AddSoundServer {win} { global SoundServers set i [lsearch $SoundServers $win] if {$i < 0} { set SoundServers [linsert $SoundServers 0 $win] } } proc LostSoundServer {win} { DeleteSoundServer $win # UIShowPictureOn [WindowLink $win.head] 46 [winfo screen $win] } proc DeleteSoundServer {win} { global SoundServers set i [lsearch $SoundServers $win] if {$i >= 0} { set SoundServers [lreplace $SoundServers $i $i] } } proc UISoundOff {} { } proc MonsterSpeed {} { return [expr "[sim Rand 40] + 70"] } proc ExplosionPitch {} { return [expr "[sim Rand 20] + 90"] } proc HonkPitch {} { return [expr "[sim Rand 20] + 90"] } ######################################################################## # Global Window Handlers proc WithdrawAll {} { WithdrawHeads WithdrawEditors WithdrawMaps WithdrawGraphs WithdrawBudgets WithdrawEvaluations WithdrawSplashes WithdrawScenarios WithdrawFiles WithdrawAsks WithdrawPlayers WithdrawNotices WithdrawHelps WithdrawFrobs } proc ShowInitial {} { ShowHeads ShowEditors ShowMaps EnableMaps } ######################################################################## # Head Window Handlers proc PrepHead {head} { global State InitHeadMenus $head case $State { uninitialized { } splash { WithdrawHeadOf $head ShowSplashOf $head } scenario { after 1000 "WithdrawSplashOf $head" WithdrawHeadOf $head ShowScenarioOf $head sim UpdateMaps } play { WithdrawSplashOf $head WithdrawScenarioOf $head ShowHeadOf $head ShowEditorOf $head ShowMapOf $head EnableMaps ReShowPictureOn $head InitHead $head InitHeadMenus $head } } } proc ShowHeadOf {head} { wm deiconify $head } proc WithdrawHeadOf {head} { wm withdraw $head } proc ShowHeads {} { global HeadWindows foreach win $HeadWindows { ShowHeadOf $win } } proc WithdrawHeads {} { global HeadWindows foreach win $HeadWindows { wm withdraw $win } } proc DeleteHeadWindow {head} { UIQuit $head } proc InitHeads {} { global HeadWindows foreach win $HeadWindows { InitHead $win } } proc InitHead {win} { set w [WindowLink $win.text] $w configure -state normal $w delete 0.0 end $w insert end "\n" $w configure -state disabled if {[sim MultiPlayerMode]} { set w [WindowLink $win.entry] $w delete 0 end global ${w}.value set ${w}.value "" } sim UpdateHeads UIUpdateRunning } proc InitAllHeadMenus {} { global HeadWindows foreach win $HeadWindows { InitHeadMenus $win } } proc InitHeadMenus {win} { global State set m0 [WindowLink $win.m0] set m1 [WindowLink $win.m1] set m2 [WindowLink $win.m2] set m3 [WindowLink $win.m3] set m4 [WindowLink $win.m4] set b0 [WindowLink $win.b0] set b1 [WindowLink $win.b1] set b2 [WindowLink $win.b2] set b3 [WindowLink $win.b3] set b4 [WindowLink $win.b4] case $State { uninitialized { } splash { } scenario { $m0 unpost $m1 unpost $m2 unpost $m3 unpost $m4 unpost $m0 disable 1 $m0 disable 2 # When in multi player mode there is an extra menu # item to add another player, before the quit item, # so compensate for it here. if {[sim MultiPlayerMode]} { $m0 disable 4 } else { $m0 disable 3 } $b0 config -state normal $b2 config -state disabled $b4 config -state disabled } play { $m0 enable 1 $m0 enable 2 # When in multi player mode there is an extra menu # item to add another player, before the quit item, # so compensate for it here. if {[sim MultiPlayerMode]} { $m0 enable 4 } else { $m0 enable 3 } $b0 config -state normal $b2 config -state normal $b4 config -state normal } } } proc UIDisaster {win cmd action} { AskQuestion [Color $win #ff0000 #ffffff] "Cause a Disaster" \ "Oh no! Do you really want to $action" \ "{No way!} Disaster.No {WithdrawAsks}" \ "" \ "{I guess so.} Disaster.Yes {WithdrawAsks ; $cmd}" } proc CrushHead {head} { global SubWindows VoteNames foreach foo $VoteNames { global VotesFor$foo set votes [eval ident \$VotesFor$foo] set i [lsearch $votes $head] if {$i != -1} { set VotesFor$foo [lreplace $votes $i $i] } } foreach foo $SubWindows { set sym [lindex $foo 0] set name [lindex $foo 1] global $name set wins [eval ident "\$$name"] foreach win $wins { if {[WindowLink $win.head] == $head} { DeleteWindow $sym $name $win } } } } proc ChatDown {win} { tk_butDown $win } proc ChatUp {win} { tk_butUp $win global Chatting if {$Chatting} { CloseChat } else { OpenChat } } proc OpenChat {} { global Chatting global ChatServer global ChatSocket global ChatConnection DoSendMessage "Opening Connection to Chat Server $ChatServer socket $ChatSocket ..." status set ChatConnection {} catch { set ChatConnection [connect $ChatServer $ChatSocket] } if {$ChatConnection == {}} then { DoSendMessage "Sorry, I could not open a connection to chat server $ChatServer socket $ChatSocket." status set Chatting 0 } else { filehandler $ChatConnection r "ReceiveChat" set Chatting 1 } global NickName global UserName global HostName global ServerName global RealName global ChannelName catch { puts $ChatConnection "USER $UserName $HostName $ServerName $RealName\r\n" nonewline puts $ChatConnection "NICK $NickName\r\n" nonewline puts $ChatConnection "JOIN $ChannelName\r\n" nonewline flush $ChatConnection } } proc ReceiveChat {mode f} { # DoSendMessage "ReceiveChat: MODE $mode F $f" set msg "" gets $f msg if {[string first {:} $msg]} { set msg ": $msg" } set from [lindex $msg 0] set cmd [string tolower [lindex $msg 1]] set handled 0 if {($cmd == "privmsg") || ($cmd == "notice")} then { set handled 1 set chan [lindex $msg 2] set i [expr "[string length $from] + 1 + [string length $cmd] + 1 + [string length $chan] + 2"] set j [expr "[string length $msg] - 2"] set line [string range $msg $i $j] set chan [string range $chan 1 [string length $chan]] set from [string range $from 1 [expr "[string length $from] - 1"]] set from [split $from {!}] set from [lindex $from 0] DoSendMessage "$from> $line" } if {$handled == 0} { set msg [string range $msg \ [expr "[string length $from] + 1"] \ [expr "[string length $msg] - 2"]] DoSendMessage $msg } } proc SendChatMessage {msg win} { global ChatConnection ChannelName NickName if {"$msg" == ""} { return } if {[string range $msg 0 0] == "/"} { set cmd [string range $msg 1 [string length $msg]] DoSendMessage "$NickName> \[$cmd\]" set cmd "$cmd\r\n" } else { set cmd "PRIVMSG $ChannelName :$msg\r\n" DoSendMessage "$NickName> $msg" } set result 1 catch { puts $ChatConnection $cmd nonewline flush $ChatConnection set result 0 } if {$result} { DoSendMessage "IRC Broke the connection" CloseChat } } proc CloseChat {} { global Chatting global ChatServer global ChatSocket global ChatConnection DoSendMessage "Closing Connection to Chat Server." status catch { puts $ChatConnection "QUIT\r\n" nonewline flush $ChatConnection $ChatConnection close } set ChatConnection {} set Chatting 0 } proc DoEnterMessage {win var} { global Chatting global $var set msg [eval ident "\$\{$var\}"] if {$Chatting} then { SendChatMessage $msg $win } else { DoSendMessage $msg } $win delete 0 end } proc DoEvalMessage {win var} { global $var set command [eval ident "\$\{$var\}"] $win delete 0 end DoSendMessage "Evaluating TCL: $command" catch {uplevel #0 $command} result DoSendMessage "Result: $result" } proc DoSendMessage {msg {tag message}} { global HeadWindows foreach win $HeadWindows { appendWithTag [WindowLink $win.text] $tag "$msg" } } proc UISetMessage {msg {tag status}} { global DoMessages EditorWindows HeadWindows if {$DoMessages == 0} { return } foreach win $EditorWindows { [WindowLink $win.message] configure -text "$msg" } foreach win $HeadWindows { appendWithTag [WindowLink $win.text] $tag "$msg" } } proc appendWithTag {w tag text} { global MaxLines global ShrinkLines set start [$w index end] $w configure -state normal if {$start > $MaxLines} then { $w delete 0.0 $ShrinkLines.0 set start [$w index end] } $w insert end "${text}\n" $w tag add $tag $start {end - 1 char} $w configure -state disabled $w yview -pickplace {end - 1 char} } ######################################################################## # Budget Window Handlers proc ShowBudgetOf {head} { set win [WindowLink $head.budget] if {$win == {}} { set win [MakeWindow.budget $head [winfo screen $head]] } wm deiconify $win wm raise $win update idletasks sim UpdateBudget } proc ShowBudgets {} { global HeadWindows BudgetsVisible set BudgetsVisible 1 foreach win $HeadWindows { ShowBudgetOf $win } } proc WithdrawBudgets {} { global BudgetWindows BudgetsVisible foreach win $BudgetWindows { wm withdraw $win } StopBudgetTimer set BudgetsVisible 0 } proc BudgetContinue {{win ""}} { global OldBudget BudgetRoadFund BudgetFireFund BudgetPoliceFund BudgetTaxRate set OldBudget 0 if {([sim RoadFund] != $BudgetRoadFund) || ([sim FireFund] != $BudgetFireFund) || ([sim PoliceFund] != $BudgetPoliceFund) || ([sim TaxRate] != $BudgetTaxRate)} { UISetMessage "The budget was changed." } else { UISetMessage "The budget wasn't changed." } WithdrawBudgets sim Resume MakeRunningSound } proc BudgetReset {{win ""}} { global OldBudget BudgetRoadFund BudgetFireFund BudgetPoliceFund BudgetTaxRate if {([sim RoadFund] != $BudgetRoadFund) || ([sim FireFund] != $BudgetFireFund) || ([sim PoliceFund] != $BudgetPoliceFund) || ([sim TaxRate] != $BudgetTaxRate)} { UISetMessage "The budget was reset." if {[sim Players] > 1} { UIMakeSound edit Sorry } } else { UISetMessage "The budget was reset." } sim RoadFund $BudgetRoadFund sim FireFund $BudgetFireFund sim PoliceFund $BudgetPoliceFund sim TaxRate $BudgetTaxRate set OldBudget 0 ChangeBudget } proc BudgetCancel {{win ""}} { BudgetReset WithdrawBudgets sim Resume MakeRunningSound } proc SetTaxRate {rate} { sim TaxRate $rate } proc BudgetSetTaxRate {rate} { SetTaxRate $rate ChangeBudget } proc BudgetSetRoadFund {percent} { sim RoadFund $percent ChangeBudget } proc BudgetSetFireFund {percent} { sim FireFund $percent ChangeBudget } proc BudgetSetPoliceFund {percent} { sim PoliceFund $percent ChangeBudget } proc UIShowBudgetAndWait {} { global OldBudget BudgetRoadFund BudgetFireFund BudgetPoliceFund BudgetTaxRate if {$OldBudget == 0} { set BudgetRoadFund [sim RoadFund] set BudgetFireFund [sim FireFund] set BudgetPoliceFund [sim PoliceFund] set BudgetTaxRate [sim TaxRate] set OldBudget 1 } ShowBudgets UISetMessage "Pausing to set the budget ..." sim Pause MakeRunningSound StartBudgetTimer InitVotesForBudget sim UpdateBudget sim UpdateBudgetWindow } proc ToggleBudgetTimer {} { global BudgetTimerActive if {$BudgetTimerActive} { StopBudgetTimer } else { StartBudgetTimer } } proc StopBudgetTimer {} { global BudgetTimerActive set BudgetTimerActive 0 UpdateBudgetTimer } proc StartBudgetTimer {} { global BudgetTimerActive BudgetTimer BudgetTimeout set me [Unique] set BudgetTimerActive $me set BudgetTimer $BudgetTimeout UpdateBudgetTimer after 1000 TickBudgetTimer $me } proc RestartBudgetTimer {} { global BudgetTimerActive if {$BudgetTimerActive} { StopBudgetTimer StartBudgetTimer } } proc UpdateBudgetTimer {} { global BudgetWindows BudgetTimerActive BudgetTimer if {$BudgetTimerActive} { set text [format "Auto Cancel In %d Seconds (click to disable)" $BudgetTimer] } else { set text [format "Enable Auto Cancel (currently disabled)"] } foreach win $BudgetWindows { set t [WindowLink $win.timer] $t config -text "$text" } } proc TickBudgetTimer {me} { global BudgetTimerActive BudgetTimer BudgetTimeout if {$BudgetTimerActive == $me} { incr BudgetTimer -1 if {$BudgetTimer < 0} { StopBudgetTimer UpdateBudgetTimer FireBudgetTimer } else { UpdateBudgetTimer after 1000 TickBudgetTimer $me } } } proc FireBudgetTimer {} { BudgetCancel } proc funds {n} { sim Funds $n } proc ToggleAutoBudget {} { global AutoBudget if {$AutoBudget} { #echo "ToggleAutoBudget found on, clearing" sim AutoBudget 0 } else { #echo "ToggleAutoBudget found off, setting" sim AutoBudget 1 } } proc UIUpdateBudget {} { UpdateAutoBudget } proc UpdateAutoBudget {} { global BudgetWindows AutoBudget if {[sim AutoBudget]} { set text "Disable Auto Budget (currently enabled)" } else { set text "Enable Auto Budget (currently disabled)" } #echo "UpdateAutoBudget $AutoBudget $text" foreach win $BudgetWindows { set t [WindowLink $win.autobudget] $t config -text "$text" } } proc UISetBudget {cashflow previous current collected taxrate} { global BudgetWindows BudgetsVisible #echo "UISetBudgetValues $taxrate $BudgetsVisible" if {$BudgetsVisible} { foreach win $BudgetWindows { set w [WindowLink $win.cashflow] set old [lindex [$w configure -text] 4] if {$old != $cashflow} { $w configure -text $cashflow } set w [WindowLink $win.previous] set old [lindex [$w configure -text] 4] if {$old != $previous} { $w configure -text $previous } set w [WindowLink $win.current] set old [lindex [$w configure -text] 4] if {$old != $current} { $w configure -text $current } set w [WindowLink $win.collected] set old [lindex [$w configure -text] 4] if {$old != $collected} { $w configure -text $collected } set w [WindowLink $win.taxrate] set old [$w get] if {$old != $taxrate} { $w set $taxrate } set w [WindowLink $win.taxlabel] set old [lindex [$w configure -text] 4] set new "$taxrate%" if {$old != $new} { $w configure -text $new } } } global HeadWindows foreach win $HeadWindows { set w [WindowLink $win.taxrate] set old [$w get] if {$old != $taxrate} { # FIXME: this might not work if the slider is disabled in multi player mode. $w set $taxrate } set w [WindowLink $win.taxlabel] set old [lindex [$w configure -text] 4] set new "Tax Rate: $taxrate%" if {$old != $new} { $w configure -text $new } } } proc UISetBudgetValues {roadgot roadwant roadpercent policegot policewant policepercent firegot firewant firepercent} { global BudgetWindows BudgetsVisible if {$BudgetsVisible == 0} { return; } foreach win $BudgetWindows { set w [WindowLink $win.fire].request set old [lindex [$w configure -text] 4] set new "$firepercent% of $firewant = $firegot" if {$old != $new} { $w configure -text $new } set w [WindowLink $win.fire].fund set old [$w get] if {$old != $firepercent} { $w set $firepercent } set w [WindowLink $win.police].request set old [lindex [$w configure -text] 4] set new "$policepercent% of $policewant = $policegot" if {$old != $new} { $w configure -text $new } set w [WindowLink $win.police].fund set old [$w get] if {$old != $policepercent} { $w set $policepercent } set w [WindowLink $win.road].request set old [lindex [$w configure -text] 4] set new "$roadpercent% of $roadwant = $roadgot" if {$old != $new} { $w configure -text $new } set w [WindowLink $win.road].fund set old [$w get] if {$old != $roadpercent} { $w set $roadpercent } } } proc ChangeBudget {} { global VotesForBudget if {"$VotesForBudget" != ""} { InitVotesForBudget } RestartBudgetTimer } proc InitVotesForBudget {} { global VotesForBudget BudgetWindows set VotesForBudget {} foreach win $BudgetWindows { [WindowLink $win.vote] config -relief raised } UpdateVotesForBudget } proc UpdateVotesForBudget {} { global BudgetWindows UpdateVotesFor Budget $BudgetWindows } proc UpdateTaxRateSliders {} { global HeadWindows set players [sim Players] foreach win $HeadWindows { set slider [WindowLink $win.taxrate] #echo "UpdateTaxRateSliders players $players win $win slider $slider" if {$players == 1} { $slider configure -state normal } else { $slider configure -state disabled } } } ######################################################################## # Evaluation Window Handlers proc ToggleEvaluationOf {head} { global State if {"$State" != "play"} { return } set mapped 0 set win [WindowLink $head.evaluation] if {$win != ""} { set mapped [winfo ismapped $win] } if {$mapped} { WithdrawEvaluationOf $head } else { ShowEvaluationOf $head } } proc WithdrawEvaluationOf {head} { set win [WindowLink $head.evaluation] if {"$win" != ""} { pack unpack $win } } proc ShowEvaluationOf {head} { set win [WindowLink $head.evaluation] if {$win == {}} { set win [MakeWindow.evaluation $head [winfo screen $head]] } #wm raise $win #wm deiconify $win set parent [WindowLink $win.parent] #pack append [WindowLink $head.col2]\ # $parent {top frame nw fill} pack append $parent\ $win {top frame nw fillx} update idletasks sim UpdateEvaluation } proc WithdrawEvaluations {} { global EvaluationWindows EvaluationsVisible foreach win $EvaluationWindows { #wm withdraw $win #set parent [WindowLink $win.parent] #pack unpack $parent pack unpack $win } set EvaluationsVisible 0 } proc EvaluationVisible {w v} { global EvaluationsVisible global [set var $w.visible] set $var $v if ($v) { set EvaluationsVisible [expr "$EvaluationsVisible + 1"] } else { set EvaluationsVisible [expr "$EvaluationsVisible - 1"] } } proc UISetEvaluation {changed score ps0 ps1 ps2 ps3 pv0 pv1 pv2 pv3 pop delta assessed cityclass citylevel goodyes goodno title} { global EvaluationWindows EvaluationsVisible CurrentDate set class [string tolower $cityclass] UISetMessage "$CurrentDate: Score $score, $class population $pop." if {$EvaluationsVisible} { foreach win $EvaluationWindows { global [set var $win.visible] set visible [eval ident "\$\{$var\}"] if {$visible} { # TODO: set evaluation window and icon title #wm title $win "$title" #wm iconname $win "$title" set w [WindowLink $win.goodjob] set old [lindex [$w configure -text] 4] set new "$goodyes\n$goodno" if {$old != $new} { $w configure -text $new } set w [WindowLink $win.problemnames] set old [lindex [$w configure -text] 4] set new "$ps0\n$ps1\n$ps2\n$ps3" if {$old != $new} { $w configure -text $new } set w [WindowLink $win.problempercents] set old [lindex [$w configure -text] 4] set new "$pv0\n$pv1\n$pv2\n$pv3" if {$old != $new} { $w configure -text $new } set w [WindowLink $win.stats] set old [lindex [$w configure -text] 4] set new "$pop\n$delta\n\n$assessed\n$cityclass\n$citylevel" if {$old != $new} { $w configure -text $new } set w [WindowLink $win.score] set old [lindex [$w configure -text] 4] set new "$score\n$changed" if {$old != $new} { $w configure -text $new } } } } } ######################################################################## # File Window Handlers proc ShowFileOf {head} { set win [WindowLink $head.file] if {$win == {}} { set win [MakeWindow.file $head [winfo screen $head]] } wm deiconify $win wm raise $win return $win } proc ShowFiles {} { global HeadWindows foreach win $HeadWindows { ShowFileOf $win } } proc WithdrawFiles {} { global FileWindows foreach win $FileWindows { wm withdraw $win } } proc DoFileDialog {win Message Path Pattern FileName ActionOk ActionCancel} { ShowFileDialog $win "$Path" "$Pattern" $win.message1 configure -text "$Message" $win.path.path delete 0 end $win.path.path insert 0 $Path $win.file.file delete 0 end $win.file.file insert 0 "$FileName" $win.frame1.ok config -command " $ActionOk \[$win.file.file get\] \[$win.path.path get\] wm withdraw $win" $win.frame1.rescan config -command " ShowFileDialog $win \[$win.path.path get\] $Pattern" $win.frame1.cancel config -command " $ActionCancel wm withdraw $win" bind $win.files.files "" "\ FileSelectDouble $win %W %y $Pattern \" $ActionOk \[$win.file.file get\] \[$win.path.path get\]\"" bind $win.path.path " ShowFileDialog $win \[$win.path.path get\] $Pattern $win.file.file cursor 0 focus $win.file.file" bind $win.file.file "\ $ActionOk \[$win.file.file get\] \[$win.path.path get] wm withdraw $win" } proc BindSelectOne {win Y} { set Nearest [$win nearest $Y] if {$Nearest >= 0} { $win select from $Nearest $win select to $Nearest } } proc FileSelect {win widget Y} { BindSelectOne $widget $Y set Nearest [$widget nearest $Y] if {$Nearest >= 0} { set Path [$win.path.path get] set TmpEntry [$widget get $Nearest] if {[string compare "/" [string index $TmpEntry \ [expr [string length $TmpEntry]-1]]] == 0 || \ [string compare "@" [string index $TmpEntry \ [expr [string length $TmpEntry]-1]]] == 0} { # handle directories, and symbolic links to directories set FileName [string range $TmpEntry 0 \ [expr [string length $TmpEntry]-2]] # whoops / or @ is part of the name if {[MiscIsDir $Path/$FileName] != 1} { set FileName $TmpEntry } } { if {[string compare "*" [string index $TmpEntry \ [expr [string length $TmpEntry]-1]]] == 0} { # handle executable filenames set FileName [string range $TmpEntry 0 \ [expr [string length $TmpEntry]-2]] # whoops * is part of the name if {[file executable $Path/$FileName] != 1} { set FileName $TmpEntry } } { # a ordinary filename set FileName $TmpEntry } } # enter the selected filename into the filename field if {[MiscIsDir $Path/$FileName] != 1} { $win.file.file delete 0 end $win.file.file insert 0 $FileName } } } proc FileSelectDouble {win widget Y Pattern Action} { BindSelectOne $widget $Y set Nearest [$widget nearest $Y] if {$Nearest >= 0} { set Path [$win.path.path get] set TmpEntry [$widget get $Nearest] if {[string compare $TmpEntry "../"] == 0} { # go up one directory set TmpEntry \ [string trimright [string trimright [string trim $Path] /] @] if {[string length $TmpEntry] <= 0} { return } set Path [file dirname $TmpEntry] $win.path.path delete 0 end $win.path.path insert 0 $Path ShowFileDialog $win $Path $Pattern } { if {[string compare "/" [string index $TmpEntry \ [expr [string length $TmpEntry]-1]]] == 0 || \ [string compare "@" [string index $TmpEntry \ [expr [string length $TmpEntry]-1]]] == 0} { # handle directorys, and symbolic links to directorys set FileName [string range $TmpEntry 0 \ [expr [string length $TmpEntry]-2]] # whoops / or @ is part of the name if {[MiscIsDir $Path/$FileName] != 1} { set FileName $TmpEntry } } { if {[string compare "*" [string index $TmpEntry \ [expr [string length $TmpEntry]-1]]] == 0} { # handle executable filenames set FileName [string range $TmpEntry 0 \ [expr [string length $TmpEntry]-2]] # whoops * is part of the name if {[file executable $Path/$FileName] != 1} { set FileName $TmpEntry } } { # a ordinary filename set FileName $TmpEntry } } # change directory if {[MiscIsDir $Path/$FileName] == 1} { if {[string compare "/" [string index $Path \ [expr [string length $Path]-1]]] == 0} { append Path $FileName } { append Path / $FileName } $win.path.path delete 0 end $win.path.path insert 0 $Path ShowFileDialog $win $Path $Pattern } { # enter the selected filename into the filename field $win.file.file delete 0 end $win.file.file insert 0 "$FileName" if {[string length $Action] > 0} { eval $Action } wm withdraw $win } } } } proc NameComplete {win Type} { set NewFile "" set Matched "" if {[string compare $Type path] == 0} { set DirName [file dirname [$win.path.path get]] set FileName [file tail [$win.path.path get]] } { set DirName [file dirname [$win.path.path get]/] set FileName [file tail [$win.file.file get]] } set FoundCounter 0 if {[MiscIsDir $DirName] == 1} { catch "exec ls $DirName/" Result set Counter 0 set ListLength [llength $Result] # go through list while {$Counter < $ListLength} { if {[string length $FileName] == 0} { if {$FoundCounter == 0} { set NewFile [lindex $Result $Counter] } { set Counter1 0 set TmpFile1 $NewFile set TmpFile2 [lindex $Result $Counter] set Length1 [string length $TmpFile1] set Length2 [string length $TmpFile2] set NewFile "" if {$Length1 > $Length2} { set Length1 $Length2 } while {$Counter1 < $Length1} { if {[string compare [string index $TmpFile1 $Counter1] \ [string index $TmpFile2 $Counter1]] == 0} { append NewFile [string index $TmpFile1 $Counter1] } { break } incr Counter1 1 } } incr FoundCounter 1 } { if {[regexp "^$FileName" [lindex $Result $Counter] \ Matched] == 1} { if {$FoundCounter == 0} { set NewFile [lindex $Result $Counter] } { set Counter1 0 set TmpFile1 $NewFile set TmpFile2 [lindex $Result $Counter] set Length1 [string length $TmpFile1] set Length2 [string length $TmpFile2] set NewFile "" if {$Length1 > $Length2} { set Length1 $Length2 } while {$Counter1 < $Length1} { if {[string compare [string index $TmpFile1 $Counter1] \ [string index $TmpFile2 $Counter1]] == 0} { append NewFile [string index $TmpFile1 $Counter1] } { break } incr Counter1 1 } } incr FoundCounter 1 } } incr Counter 1 } } if {$FoundCounter == 1} { if {[MiscIsDir $DirName/$NewFile] == 1} { if {[string compare $DirName "/"] == 0} { $win.path.path delete 0 end $win.path.path insert 0 "/[string trim [string trim $NewFile /] @]/" } { $win.path.path delete 0 end $win.path.path insert 0 "[string trimright $DirName /]/[string trim [string trim $NewFile /] @]/" } } { $win.path.path delete 0 end $win.path.path insert 0 \ "[string trim [string trimright $DirName /] @]/" $win.file.file delete 0 end $win.file.file insert 0 "$NewFile" } } { if {[MiscIsDir $DirName/$NewFile] == 1 || [string compare $Type path] == 0} { $win.path.path delete 0 end $win.path.path insert 0 \ "[string trimright $DirName /]/[string trim [string trim $NewFile /] @]" } { $win.path.path delete 0 end $win.path.path insert 0 "$DirName" if {[string length $NewFile] > 0} { $win.file.file delete 0 end $win.file.file insert 0 "$NewFile" } } } } proc ShowFileDialog {win Path Pattern} { busy $win { set Path [lindex [split $Path] 0] if {[$win.files.files size] > 0} { $win.files.files delete 0 end } # read directory if {[catch "exec ls -F $Path" Result]} { set ElementList {} } if {[string match $Result "* not found"]} { set ElementList {} } set ElementList [lsort $Result] # insert .. if {[string compare $Path "/"]} { $win.files.files insert end "../" } # walk through list foreach Counter $ElementList { # insert filename if {[string match $Pattern $Counter] == 1} { if {[string compare $Counter "../"] && [string compare $Counter "./"]} { $win.files.files insert end $Counter } } else { set fn $Path/[string trim [string trim [string trim $Counter /] @] *] if {[MiscIsDir $fn]} { $win.files.files insert end $Counter } } } } } proc MiscIsDir {PathName} { if {[file isdirectory $PathName] == 1} { return 1 } { catch "file type $PathName" Type if {[string compare $Type link] == 0} { set LinkName [file readlink $PathName] catch "file type $LinkName" Type while {[string compare $Type link] == 0} { set LinkName [file readlink $LinkName] } return [file isdirectory $LinkName] } } return 0 } proc busy {win cmds} { set busy {} set list [winfo children $win] set busy $list while {$list != ""} { set next {} foreach w $list { set class [winfo class $w] set cursor [lindex [$w config -cursor] 4] if {[winfo toplevel $w] == $w} { lappend busy [list $w $cursor] } set next [concat $next [winfo children $w]] } set list $next } foreach w $busy { catch {[lindex $w 0] config -cursor watch} } update idletasks set error [catch {uplevel eval [list $cmds]} result] foreach w $busy { catch {[lindex $w 0] config -cursor [lindex $w 1]} } if $error { error $result } else { return $result } } ######################################################################## # Editor Window Handlers proc ShowEditorOf {head} { global EditorWindows set found 0 foreach win $EditorWindows { if {[WindowLink $win.head] == $head} { set parent [WindowLink $win.parent] #pack append [WindowLink $head.col2]\ # $parent {top frame nw expand fill} pack append $parent\ $win {top frame nw expand fill} set found 1 } } if {$found == 0} { NewEditorOf $head } else { update idletasks sim UpdateEditors sim UpdateMaps } } proc NewEditorOf {head} { set win [MakeWindow.editor $head [winfo screen $head]] #wm deiconify $win set parent [WindowLink $win.parent] pack append $parent\ $win {top frame nw expand fill} update idletasks sim UpdateEditors sim UpdateMaps } proc ShowEditors {} { global HeadWindows foreach win $HeadWindows { ShowEditorOf $win } } proc WithdrawEditors {} { global EditorWindows foreach win $EditorWindows { #set parent [WindowLink $win.parent] #pack unpack $parent pack unpack $win } } proc InitEditors {} { global EditorWindows foreach win $EditorWindows { InitEditor $win } } proc InitEditor {win} { set e [WindowLink $win.view] UISetToolState $win 7 $e ToolState 7 set size [$e size] $e Pan 960 800 $e AutoGoing 0 global $e.TrackState set $e.TrackState {} } proc SetEditorAutoGoto {win val} { global AutoGoto.$win set AutoGoto.$win $val set e [WindowLink $win.view] $e AutoGoto $val } proc SetEditorControls {win val} { global Controls.$win set Controls.$win $val if {$val} { pack append $win $win.leftframe {left frame center filly} } else { pack unpack $win.leftframe } } proc SetEditorOverlay {win val} { global Overlay.$win set Overlay.$win $val set e [WindowLink $win.view] $e ShowOverlay $val } proc SetEditorDynamicFilter {win val} { global DynamicFilter.$win set DynamicFilter.$win $val set e [WindowLink $win.view] $e DynamicFilter $val if {$val == 1} then { ShowFrobOf [WindowLink $win.head] } } proc SetEditorSkip {win val} { set e [WindowLink $win.view] $e Skip $val } proc EditorToolDown {mod w x y} { global [set var $w.TrackState] $w ToolMode 1 case [$w ToolState] in \ 7 { # bulldozer UIMakeSoundOn $w edit Rumble "-repeat 4" } \ 10 { # chalk StartChalk $w } case $mod in \ constrain { set $var [list constrain_start $x $y] $w ToolConstrain $x $y } \ default { set $var none } EditorTool ToolDown $w $x $y sim NeedRest 5 } proc EditorToolDrag {w x y} { EditorTool ToolDrag $w $x $y sim NeedRest 5 } proc EditorToolUp {w x y} { global [set var $w.TrackState] $w ToolMode 0 case [$w ToolState] in \ 7 { # bulldozer UIStopSoundOn $w edit 1 } \ 10 { # chalk StopChalk $w } EditorTool ToolUp $w $x $y set $var {} $w ToolConstrain -1 -1 sim UpdateMaps sim UpdateEditors sim NeedRest 5 } proc EditorTool {action w x y} { global [set var $w.TrackState] set state [eval ident "\$\{$var\}"] case [lindex $state 0] in \ constrain_start { set x0 [lindex $state 1] set y0 [lindex $state 2] set dx [expr "$x - $x0"] set dy [expr "$y - $y0"] if [expr "($dx > 16) || ($dx < -16)"] then { $w ToolConstrain -1 $y0 set $var none } else { if [expr "($dy > 16) || ($dy < -16)"] then { $w ToolConstrain $x0 -1 set $var none } } } $w $action $x $y } proc StartChalk {w} { sim CollapseMotion 0 } proc StopChalk {w} { sim CollapseMotion 1 } proc EditorPanDown {mod w x y} { global [set var $w.TrackState] $w ToolMode -1 case $mod in \ constrain { set $var [list constrain_start $x $y] $w ToolConstrain $x $y } \ default { set $var none } EditorTool PanStart $w $x $y } proc EditorPanDrag {w x y} { EditorTool PanTo $w $x $y } proc EditorPanUp {w x y} { $w AutoGoing 0 $w ToolMode 0 EditorTool PanTo $w $x $y $w ToolConstrain -1 -1 sim UpdateMaps sim UpdateEditors } proc EditorKeyDown {w k} { $w KeyDown $k } proc EditorKeyUp {w k} { $w KeyUp $k } proc BindEditorButtons {win} { set w [WindowLink $win.top] bind $win <1> "CancelPie $win ; EditorToolDown none %W %x %y" bind $win {EditorToolDrag %W %x %y} bind $win {EditorToolUp %W %x %y} bind $win "CancelPie $win ; EditorToolDown constrain %W %x %y" bind $win {EditorToolDrag %W %x %y} bind $win {EditorToolUp %W %x %y} bind $win <2> "CancelPie $win ; EditorPanDown none %W %x %y" bind $win {EditorPanDrag %W %x %y} bind $win {EditorPanUp %W %x %y} bind $win "CancelPie $win ; EditorPanDown constrain %W %x %y" bind $win {EditorPanDrag %W %x %y} bind $win {EditorPanUp %W %x %y} InitPie $win $w.toolpie } proc UISetFunds {funds} { global HeadWindows foreach win $HeadWindows { [WindowLink $win.funds] configure -text "$funds" } } proc UISetDate {date month year} { global HeadWindows global CurrentDate set CurrentDate "$date" foreach win $HeadWindows { [WindowLink $win.date] Set $month $year } } proc SetPriority {index} { case $index { \ {0} { sim Delay 500000 sim Skips 0 } \ {1} { sim Delay 100000 sim Skips 0 } \ {2} { sim Delay 25000 sim Skips 0 } \ {3} { sim Delay 5000 sim Skips 20 } \ {4} { sim Delay 5 sim Skips 500 } } } proc UISetDemand {r c i} { global HeadWindows DemandRes DemandCom DemandInd set DemandRes $r set DemandCom $c set DemandInd $i if {$r <= 0} then {set ry0 32} else {set ry0 24} set ry1 [expr "$ry0 - $r"] if {$c <= 0} then {set cy0 32} else {set cy0 24} set cy1 [expr "$cy0 - $c"] if {$i <= 0} then {set iy0 32} else {set iy0 24} set iy1 [expr "$iy0 - $i"] foreach win $HeadWindows { set can [WindowLink $win.demand] # $can coords r 8 $ry0 14 $ry1 # $can coords c 17 $cy0 23 $cy1 # $can coords i 26 $iy0 32 $iy1 $can coords r 49 $ry0 55 $ry1 $can coords c 58 $cy0 64 $cy1 $can coords i 67 $iy0 73 $iy1 } } proc UISetOptions {autobudget autogoto autobulldoze disasters sound animation messages notices} { global AutoBudget AutoGoto AutoBulldoze Disasters Sound set AutoBudget $autobudget set AutoGoto $autogoto set AutoBulldoze $autobulldoze set Disasters $disasters set Sound $sound set DoAnimation $animation set DoMessages $messages set DoNotices $notices } proc UIDidToolRes {win x y} { UIMakeSoundOn $win edit O "-speed 140" } proc UIDidToolCom {win x y} { UIMakeSoundOn $win edit A "-speed 140" } proc UIDidToolInd {win x y} { UIMakeSoundOn $win edit E "-speed 140" } proc UIDidToolFire {win x y} { UIMakeSoundOn $win edit O "-speed 130" } proc UIDidToolQry {win x y} { UIMakeSoundOn $win edit E "-speed 200" } proc UIDidToolPol {win x y} { UIMakeSoundOn $win edit E "-speed 130" } proc UIDidToolWire {win x y} { UIMakeSoundOn $win edit O "-speed 120" } proc UIDidToolDozr {win x y} { UIMakeSoundOn $win edit Rumble } proc UIDidToolRail {win x y} { UIMakeSoundOn $win edit O "-speed 100" } proc UIDidToolRoad {win x y} { UIMakeSoundOn $win edit E "-speed 100" } proc UIDidToolChlk {win x y} { } proc UIDidToolEraser {win x y} { } proc UIDidToolStad {win x y} { UIMakeSoundOn $win edit O "-speed 90" } proc UIDidToolPark {win x y} { UIMakeSoundOn $win edit A "-speed 130" } proc UIDidToolSeap {win x y} { UIMakeSoundOn $win edit E "-speed 90" } proc UIDidToolCoal {win x y} { UIMakeSoundOn $win edit O "-speed 75" } proc UIDidToolNuc {win x y} { UIMakeSoundOn $win edit E "-speed 75" } proc UIDidToolAirp {win x y} { UIMakeSoundOn $win edit A "-speed 50" } proc UISetToolState {w state} { global EditorPallets EditorPalletImages ToolInfo set win [WindowLink $w.top] #echo "UISETTOOLSTATE w $w win $win $state" ExclusivePallet $state $win $EditorPallets ic $EditorPalletImages \ raised sunken {NoFunction} {NoFunction} set c1 [WindowLink $w.cost1] if {"$c1" != ""} { set info [lindex $ToolInfo $state] set cost1 [lindex $info 1] set cost2 [lindex $info 2] $c1 configure -text "$cost1" [WindowLink $w.cost2] configure -text "$cost2" } } proc UIShowZoneStatus {zone density value crime pollution growth x y} { global QueryX QueryY set QueryX [expr "8 + 16 * $x"] set QueryY [expr "8 + 16 * $y"] UIShowPicture 9 [list $zone $density $value $crime $pollution $growth] } ######################################################################## # Map Window Handlers proc ShowMapOf {head} { global MapWindows set found 0 foreach win $MapWindows { if {"[WindowLink $win.head]" == "$head"} { global MapPanelWidth MapPanelHeight #place configure $win -x 0 -y 0 -width $MapPanelWidth -height $MapPanelHeight #[WindowLink $win.parent] configure -width $MapPanelWidth -height $MapPanelHeight set parent [WindowLink $win.parent] pack append [WindowLink $head.w2] \ $win {top frame nw expand fill} set found 1 } } if {$found == 0} { NewMapOf $head } else { update idletasks sim UpdateMaps } } proc NewMapOf {head} { set win [MakeWindow.map $head [winfo screen $head]] global MapPanelWidth MapPanelHeight #place configure $win -x 0 -y 0 -width $MapPanelWidth -height $MapPanelHeight #[WindowLink $win.parent] configure -width $MapPanelWidth -height $MapPanelHeight set parent [WindowLink $win.parent] #pack append [WindowLink $head.col1]\ # $parent {top frame nw fillx} pack append [WindowLink $head.w2] \ $win {top frame nw expand fill} sim UpdateMaps } proc ShowMaps {} { global HeadWindows foreach win $HeadWindows { ShowMapOf $win } } proc WithdrawMaps {} { global MapWindows foreach win $MapWindows { #place forget $win pack unpack $win } } proc InitMaps {} { global MapWindows foreach win $MapWindows { InitMap $win } } proc InitMap {win} { SetMapState $win 0 } proc EnableMaps {} { global MapWindows foreach win $MapWindows { EnableMap $win } } proc EnableMap {win} { [WindowLink $win.view] ShowEditors 1 [WindowLink $win.zones] config -state normal [WindowLink $win.overlays] config -state normal } proc DisableMaps {} { global MapWindows foreach win $MapWindows { DisableMap $win } } proc DisableMap {win} { [WindowLink $win.view] ShowEditors 0 [WindowLink $win.zones] config -state disabled [WindowLink $win.overlays] config -state disabled } proc SetMapState {win state} { set m [WindowLink $win.view] $m MapState $state if {$state == 14} then { ShowFrobOf [WindowLink $win.head] } } proc MapPanDown {w x y} { $w PanStart $x $y } proc MapPanDrag {w x y} { $w PanTo $x $y } proc MapPanUp {w x y} { $w PanTo $x $y sim UpdateMaps sim UpdateEditors } proc UISetMapState {w state} { global MapTitles #set win [winfo toplevel $w] set win [WindowLink $w.win] set m [WindowLink $win.view] set title [lindex $MapTitles $state] # TODO: set map text field header to title #wm title $win "$title" #wm iconname $win "$title" global [set var MapState.$win] set $var $state case $state { \ {6 8 9 10 11 12 13} { [WindowLink $win.legend] config -bitmap "@images/legendmm.xpm" } \ {7} { [WindowLink $win.legend] config -bitmap "@images/legendpm.xpm" } \ {0 1 2 3 4 5 14} { [WindowLink $win.legend] config -bitmap "@images/legendn.xpm" } } } ######################################################################## # Graph Window Handlers proc ToggleGraphOf {head} { global State if {"$State" != "play"} { return } set mapped 0 set win [WindowLink $head.graph] if {$win != ""} { set mapped [winfo ismapped $win] } if {$mapped} { WithdrawGraphOf $head } else { ShowGraphOf $head } } proc WithdrawGraphOf {head} { set win [WindowLink $head.graph] if {"$win" != ""} { pack unpack $win } } proc ShowGraphOf {head} { set win [WindowLink $head.graph] if {$win == {}} { set win [MakeWindow.graph $head [winfo screen $head]] } #wm deiconify $win #wm raise $win set parent [WindowLink $win.parent] pack append $parent\ $win {top frame nw fillx} update idletasks sim UpdateGraphs } proc WithdrawGraphs {} { global GraphWindows foreach win $GraphWindows { #wm withdraw $win pack unpack $win } } proc InitGraphs {} { global GraphWindows foreach win $GraphWindows { InitGraph $win } } proc InitGraph {win} { UISetGraphState $win 1 1 1 1 1 1 0 } proc UISetGraphState {win t0 t1 t2 t3 t4 t5 range} { set g [WindowLink $win.graphview] GraphPalletMask $win [expr "$t0 + ($t1<<1) + ($t2<<2) + ($t3<<3) + ($t4<<4) + ($t5<<5)"] GraphYearPallet $win $range } ######################################################################## # Splash Window Handlers proc ShowSplashOf {head} { set win [WindowLink $head.splash] if {$win == {}} { set win [MakeWindow.splash $head [winfo screen $head]] } set splashscreen [WindowLink $win.splashscreen] set success 0 catch {$splashscreen config -bitmap "@images/splashscreen.xpm"; set success 1} if {$success} { wm deiconify $win global SplashScreenDelay after $SplashScreenDelay "UIPickScenarioMode" } else { UIPickScenarioMode } } proc WithdrawSplashOf {head} { set win WindowLink $head.splash] wm withdraw $win } proc ShowSplashes {} { global HeadWindows foreach win $HeadWindows { ShowSplashOf $win } } proc WithdrawSplashes {} { global SplashWindows foreach win $SplashWindows { wm withdraw $win set splashscreen [WindowLink $win.splashscreen] $splashscreen config -bitmap "" } } proc InitSplashes {} { } proc InitSplash {win} { } proc DeleteSplashWindow {win} { # TODO } ######################################################################## # Scenario Window Handlers proc ShowScenarioOf {head} { set win [WindowLink $head.scenario] if {$win == {}} { set win [MakeWindow.scenario $head [winfo screen $head]] } # TODO: load background bitmap wm deiconify $win } proc WithdrawScenarioOf {head} { set win WindowLink $head.scenario] wm withdraw $win } proc ShowScenarios {} { global HeadWindows foreach win $HeadWindows { ShowScenarioOf $win } } proc WithdrawScenarios {} { global ScenarioWindows foreach win $ScenarioWindows { wm withdraw $win # TODO: flush background bitmap } } proc InitScenarios {} { global MapHistory MapHistoryNum if {$MapHistoryNum < 1} { set prev disabled } else { set prev normal } if {$MapHistoryNum == ([llength $MapHistory] - 1)} { set next disabled } else { set next normal } global ScenarioWindows foreach win $ScenarioWindows { # TODO #[WindowLink $win.previous] config -state $prev #[WindowLink $win.next] config -state $next } } proc InitScenario {win} { global MapHistory MapHistoryNum if {$MapHistoryNum < 1} { set prev disabled } else { set prev normal } if {$MapHistoryNum == ([llength $MapHistory] - 1)} { set next disabled } else { set next normal } # TODO #[WindowLink $win.previous] config -state $prev #[WindowLink $win.next] config -state $next LinkWindow $win.scenarioTarget -1 LinkWindow $win.scenarioTargetDown -1 global ScenarioButtons set i 0 set len [llength $ScenarioButtons] while {$i < $len} { set data [lindex $ScenarioButtons $i] set type [lindex $data 0] set id [lindex $data 1] #echo "DATA $data" #echo "ID $id" LinkWindow $win.$id.over 0 LinkWindow $win.$id.enabled 1 LinkWindow $win.$id.checked 0 #echo "SETTING WIN $win ID $id" set i [expr "$i + 1"] } UpdateLevelSelection $win UpdateLeftRightEnabled $win } proc UpdateLevelSelection {win} { #echo UpdateLevelSelection global GameLevel if {$GameLevel == 0} then { LinkWindow $win.easy.checked 1 LinkWindow $win.medium.checked 0 LinkWindow $win.hard.checked 0 } if {$GameLevel == 1} then { LinkWindow $win.easy.checked 0 LinkWindow $win.medium.checked 1 LinkWindow $win.hard.checked 0 } if {$GameLevel == 2} then { LinkWindow $win.easy.checked 0 LinkWindow $win.medium.checked 0 LinkWindow $win.hard.checked 1 } UpdateScenarioButtonID $win easy UpdateScenarioButtonID $win medium UpdateScenarioButtonID $win hard } proc UpdateLeftRightEnabled {win} { #echo UpdateLeftRightEnabled global MapHistory MapHistoryNum if {$MapHistoryNum < 1} { LinkWindow $win.left.enabled 0 } else { LinkWindow $win.left.enabled 1 } if {$MapHistoryNum == ([llength $MapHistory] - 1)} { LinkWindow $win.right.enabled 0 } else { LinkWindow $win.right.enabled 1 } UpdateScenarioButtonID $win left UpdateScenarioButtonID $win right } proc UpdateScenarioButtonID {win id} { global ScenarioButtons set i 0 set len [llength $ScenarioButtons] while {$i < $len} { set data [lindex $ScenarioButtons $i] set id if {$id == [lindex $data 1]} then { UpdateScenarioButton $win $data break } set i [expr "$i + 1"] } } proc UpdateScenarioButton {win data} { set type [lindex $data 0] set id [lindex $data 1] set over [WindowLink $win.$id.over] set enabled [WindowLink $win.$id.enabled] set checked [WindowLink $win.$id.checked] #echo "WIN $win TYPE $type ID $id OVER $over ENABLED $enabled CHECKED $checked" if {$enabled} { if {$checked} { if {$over} { set bm [lindex $data 13] } else { set bm [lindex $data 12] } } else { if {$over} { set bm [lindex $data 10] } else { set bm [lindex $data 9] } } } else { set bm [lindex $data 11] } [WindowLink $win.canvas] itemconfig $id -bitmap $bm } proc DoEnterCityName {win} { } proc InitVotesForUseThisMap {} { # TODO: Disabled for new scenario window. return global VotesForUseThisMap ScenarioWindows set VotesForUseThisMap {} foreach win $ScenarioWindows { [WindowLink $win.vote] config -relief raised } UpdateVotesForUseThisMap } proc UpdateVotesForUseThisMap {} { global ScenarioWindows UpdateVotesFor UseThisMap $ScenarioWindows } proc UIUseThisMap {} { global CityName GameLevel Scenario WithdrawAll # special handling for scenarios? if {$GameLevel != -1} { sim GameLevel $GameLevel } sim CityName $CityName UINewGame UIPlayGame if {$Scenario != -1} { UIShowPicture $Scenario } } proc HandleScenarioDown {win x y} { #echo HandleScenarioDown $win $x $y HandleScenarioMove $win $x $y set w [WindowLink $win.w] set target [WindowLink $w.scenarioTarget] LinkWindow $w.scenarioTargetDown $target } proc HandleScenarioUp {win x y} { #echo HandleScenarioUp $win $x $y HandleScenarioMove $win $x $y global ScenarioButtons set w [WindowLink $win.w] set target [WindowLink $w.scenarioTarget] set targetDown [WindowLink $w.scenarioTargetDown] if {($target != -1) && ($target == $targetDown)} { set data [lindex $ScenarioButtons $target] set type [lindex $data 0] set id [lindex $data 1] set callback [lindex $data 2] set param [lindex $data 3] set var [lindex $data 4] set xx [lindex $data 5] set yy [lindex $data 6] set ww [lindex $data 7] set hh [lindex $data 8] set normal [lindex $data 9] set over [lindex $data 10] set disabled [lindex $data 11] if {$type == "button"} { #echo callback $callback w $w param $param eval "$callback $w {$param}" } else { if {$type == "checkbox"} { #echo checkbox callback $callback w $w param $param eval "$callback $w {$param}" } } } } proc HandleScenarioMove {win x y} { #echo HandleScenarioMove $win $x $y global ScenarioButtons set w [WindowLink $win.w] set target [WindowLink $w.scenarioTarget] set found -1 set i 0 set len [llength $ScenarioButtons] while {$i < $len} { set data [lindex $ScenarioButtons $i] set type [lindex $data 0] set id [lindex $data 1] set callback [lindex $data 2] set param [lindex $data 3] set var [lindex $data 4] set xx [lindex $data 5] set yy [lindex $data 6] set ww [lindex $data 7] set hh [lindex $data 8] set enabled [WindowLink $w.$id.enabled] set checked [WindowLink $w.$id.checked] #echo "ID $id ENABLED $enabled CHECKED $checked w $w id $id" if {($enabled != 0) && ($x >= $xx) && ($x < ($xx + $ww)) & ($y >= $yy) && ($y < ($yy + $hh))} { set found $i break } set i [expr "$i + 1"] } if {$found != $target} { if {$found == -1} { if {$target != -1} { #echo OUT $w $found $xx $yy $normal LinkWindow $w.scenarioTarget -1 set targetdata [lindex $ScenarioButtons $target] set targetid [lindex $targetdata 1] LinkWindow $w.$targetid.over 0 UpdateScenarioButton $w $targetdata } } else { #echo IN $w $found $xx $yy $over LinkWindow $w.scenarioTarget $found LinkWindow $w.$id.over 1 if {$target != -1} { set targetdata [lindex $ScenarioButtons $target] set targetid [lindex $targetdata 1] LinkWindow $w.$targetid.over 0 UpdateScenarioButton $w $targetdata } UpdateScenarioButton $w $data } } } proc DoLoad {win param} { #echo DOLOAD $win $param UILoadCity $win } proc DoGenerate {win param} { #echo DOGENERATE $win $param UIGenerateNewCity } proc DoQuit {win param} { #echo DOQUIT $win $param UIQuit $win } proc DoAbout {win param} { #echo DOABOUT $win $param MakeHistory "DoLoadCity cities/about.cty" } proc DoMap {win param} { #echo DOMAP $win $param } proc DoLevel {win param} { #echo DOLEVEL $win $param DoSetGameLevel $param } proc DoLeft {win param} { #echo DOLEFT $win $param PrevHistory } proc DoRight {win param} { #echo DORIGHT $win $param NextHistory } proc DoPlay {win param} { #echo DOPLAY $win $param UIUseThisMap } proc DoPickScenario {win param} { #echo DOPICKSCENARIO $win $param UILoadScenario $param } ######################################################################## # Undo/Redo Facility proc InitHistory {} { global MapHistory global MapHistoryNum set MapHistory {} set MapHistoryNum -1 } proc MakeHistory {cmd} { global MapHistory set len [llength $MapHistory] if {($len == 0) || ($cmd != [lindex $MapHistory [expr $len-1]])} { lappend MapHistory $cmd } else { incr len -1 } GotoHistory $len } proc GotoHistory {i} { global MapHistory global MapHistoryNum InitVotesForUseThisMap if {$i != $MapHistoryNum} { set MapHistoryNum $i set cmd [lindex $MapHistory $i] eval $cmd } if {$MapHistoryNum == 0} { set prev disabled } else { set prev normal } if {$MapHistoryNum == ([llength $MapHistory] - 1)} { set next disabled } else { set next normal } global ScenarioWindows foreach win $ScenarioWindows { UpdateLeftRightEnabled $win } } proc NextHistory {} { global MapHistory global MapHistoryNum set len [llength $MapHistory] set i [expr "$MapHistoryNum + 1"] if {$i < $len} { GotoHistory $i } } proc PrevHistory {} { global MapHistory global MapHistoryNum set i [expr "$MapHistoryNum - 1"] if {$i >= 0} { GotoHistory $i } } ######################################################################## # Ask Window Handlers proc ShowAskOf {head} { set win [WindowLink $head.ask] if {$win == {}} { set win [MakeWindow.ask $head [winfo screen $head]] } wm deiconify $win wm raise $win return $win } proc ShowAsks {} { global HeadWindows foreach win $HeadWindows { ShowAskOf $win } } proc WithdrawAsks {} { global AskWindows foreach win $AskWindows { wm withdraw $win } } proc WithdrawAskOf {win} { set ask [WindowLink $win.ask] if {"$ask" != ""} { wm withdraw $ask } } proc AskQuestion {color title text left middle right} { global HeadWindows foreach win $HeadWindows { AskQuestionOn $win $color $title $text $left $middle $right } } proc AskQuestionOn {head color title text left middle right} { ShowAskOf $head set win [WindowLink $head.ask] set t [WindowLink $win.title] $t configure -text $title $t configure -background $color set t [WindowLink $win.text] $t configure -state normal $t delete 0.0 end $t insert end "${text}\n" $t configure -state disabled set bf [WindowLink $win.frame] set l [WindowLink $win.left] set m [WindowLink $win.middle] set r [WindowLink $win.vote] set rf [WindowLink $win.voteframe] if {$left != ""} { $l config \ -text [lindex $left 0] \ -command [format [lindex $left 2] $head] SetHelp $l [lindex $left 1] pack append $bf $l {left frame center} } else { pack unpack $l } if {$middle != ""} { $m config \ -text [lindex $middle 0] \ -command [format [lindex $middle 2] $head] SetHelp $m [lindex $middle 1] pack append $bf $m {left frame center expand} } else { pack unpack $m } if {$right != ""} { set notify [format [lindex $right 2] $head] set preview [format [lindex $right 3] $head] set cmd [list DoVote $win Ask $notify $preview] $r config \ -text [lindex $right 0] \ -command $cmd SetHelp $r [lindex $right 1] pack append $bf $rf {right frame center} } else { pack unpack $rf } InitVotesForAsk } proc BindVotingButton {win but name} { set w [WindowLink $win.top] bind $but "VoteButtonEnter $win $but" bind $but "VoteButtonLeave $win $but" bind $but <1> "VoteButtonDown $win $but $name" bind $but "VoteButtonUp $win $but $name" bind $but <2> "VoteButtonDown $win $but $name" bind $but "VoteButtonUp $win $but $name" bind $but <3> "VoteButtonDown $win $but $name" bind $but "VoteButtonUp $win $but $name" } proc VoteButtonEnter {win but} { global tk_priv set screen [winfo screen $but] if {[lindex [$but config -state] 4] != "disabled"} { $but config -state active set tk_priv(window@$screen) $but } else { set tk_priv(window@$screen) "" } } proc VoteButtonLeave {win but} { global tk_priv if {[lindex [$but config -state] 4] != "disabled"} { $but config -state normal } set screen [winfo screen $but] set tk_priv(window@$screen) "" } proc VoteButtonDown {win but name} { global tk_priv set screen [winfo screen $but] set rel [lindex [$but config -relief] 4] set tk_priv(relief@$screen) $rel if {[lindex [$but config -state] 4] != "disabled"} { set head [WindowLink $win.head] if {[IsVotingFor $head $name]} { $but config -relief raised } else { $but config -relief sunken } } } proc VoteButtonUp {win but name} { global tk_priv set screen [winfo screen $but] $but config -relief $tk_priv(relief@$screen) if {($but == $tk_priv(window@$screen)) && ([lindex [$but config -state] 4] != "disabled")} { uplevel #0 [list $but invoke] set head [WindowLink $win.head] if {[IsVotingFor $head $name]} { $but config -relief sunken } else { $but config -relief raised } } } proc PressVoteButton {win but name} { global tk_priv uplevel #0 [list $but invoke] set head [WindowLink $win.head] if {[IsVotingFor $head $name]} { $but config -relief sunken } else { $but config -relief raised } } proc IsVotingFor {win name} { global VotesFor$name set votes [eval ident "\$\{VotesFor$name\}"] if {[lsearch $votes $win] == -1} { return 0 } else { return 1 } } proc DoVote {win name notify preview} { global VotesFor$name set votes [eval ident "\$\{VotesFor$name\}"] set win [WindowLink $win.head] set i [lsearch $votes $win] if {$i == -1} { lappend VotesFor$name $win } else { set VotesFor$name [lreplace $votes $i $i] } UpdateVotesFor$name set votes [eval ident "\$\{VotesFor$name\}"] if {[llength $votes] >= [NeededVotes]} { eval "$notify" } else { eval "$preview" } } proc UpdateVotesFor {name wins} { global VotesFor$name set votes [eval llength "\$\{VotesFor$name\}"] set needed [NeededVotes] foreach win $wins { set head [WindowLink $win.head] if {[IsVotingFor $head $name]} { set border [expr "($needed - $votes) * 1"] set pad [expr "6 - $border"] [WindowLink $win.vote] config -padx $pad -pady $pad [WindowLink $win.voteframe] config -borderwidth $border } else { set border [expr "($needed - $votes - 1) * 1"] set pad [expr "6 - $border"] [WindowLink $win.vote] config -padx $pad -pady $pad [WindowLink $win.voteframe] config -borderwidth $border } } } proc InitVotesForAsk {} { global VotesForAsk AskWindows set VotesForAsk {} foreach win $AskWindows { [WindowLink $win.vote] config -relief raised } sim PendingTool -1 UpdateVotesForAsk } proc UpdateVotesForAsk {} { global AskWindows UpdateVotesFor Ask $AskWindows } ######################################################################## # Player Window Handlers proc ShowPlayerOf {head} { set win [WindowLink $head.player] if {$win == {}} { set win [MakeWindow.player $head [winfo screen $head]] } wm deiconify $win wm raise $win return $win } proc ShowPlayers {} { global HeadWindows foreach win $HeadWindows { ShowPlayerOf $win } } proc WithdrawPlayers {} { global PlayerWindows foreach win $PlayerWindows { wm withdraw $win } } proc UpdatePlayers {} { # TODO: Disabled for new scenario window. return global HeadWindows PlayerWindows set players "" foreach win $HeadWindows { set server [winfo screen $win] # if {[string first : $server] == 0} { # set server "[exec hostname]:0" # } lappend players $server } sim Players [llength $players] foreach win $PlayerWindows { set list [WindowLink $win.players] $list delete 0 end eval "$list insert 0 $players" } UpdateVotesForUseThisMap UpdateVotesForAsk UpdateVotesForBudget UpdateTaxRateSliders } proc UIShowPlayer {win} { ShowPlayerOf $win } proc DoNewPlayer {win} { set field [WindowLink $win.display] set dpy [$field get] if {"$dpy" != ""} { $field delete 0 end sim Flush update idletasks if {[AddPlayer $dpy] != ""} { wm withdraw $win } } } ######################################################################## # Notice Window Handlers proc ShowNoticeOf {head} { set win [WindowLink $head.notice] if {$win == {}} { set win [MakeWindow.notice $head [winfo screen $head]] } global NoticePanelWidth NoticePanelHeight #place configure $win -x 0 -y 0 -width $NoticePanelWidth -height $NoticePanelHeight pack append [WindowLink $head.w3] \ $win {bottom frame sw expand fill} return $win } proc ShowNotices {} { global HeadWindows foreach win $HeadWindows { ShowNoticeOf $win } } proc WithdrawNotices {} { global NoticeWindows foreach win $NoticeWindows { #place forget $win pack unpack $win } } proc ReShowPictureOn {{head ""}} { global ShowingPicture ShowingParms UIShowPictureOn $head $ShowingPicture $ShowingParms } proc UIShowPicture {id {parms ""}} { UIShowPictureOn "" $id $parms } proc UIShowPictureOn {where id {parms ""}} { global DoNotices Messages ShowingPicture ShowingParms if {$DoNotices == 0} { return } set ShowingPicture $id set ShowingParms $parms set msg $Messages($id) set color [lindex $msg 0] set title [lindex $msg 1] set body [lindex $msg 2] if {$parms != ""} { set cmd "format {$body} $parms" set body [uplevel #0 $cmd] } set props [lindex $msg 3] if {"$where" == ""} { global HeadWindows set where $HeadWindows } foreach head $where { NoticeMessageOn $head "$title" $color "$body" Medium $props } } proc NoticeMessageOn {head title color text font props} { ShowNoticeOf $head set win [WindowLink $head.notice] set t [WindowLink $win.title] $t configure -text $title -background $color set t [WindowLink $win.text] $t configure -state normal -font [Font $head $font] $t delete 0.0 end $t insert end "${text}\n" $t configure -state disabled set left "" catch {set left [keylget props left]} set l [WindowLink $win.left] if {$left != ""} { $l config -bitmap $left place $l -in $t -anchor sw -relx .05 -rely .95 } else { place forget $l } set middle "" catch {set middle [keylget props middle]} set m [WindowLink $win.middle] if {$middle != ""} { $m config -bitmap $middle place $m -in $t -anchor s -relx .5 -rely .95 } else { place forget $m } set right "" catch {set right [keylget props right]} set r [WindowLink $win.right] if {$right != ""} { $r config -bitmap $right place $r -in $t -anchor se -relx .95 -rely .95 } else { place forget $r } set view "" catch {set view [keylget props view]} set vf [WindowLink $win.viewframe] global v set v [WindowLink $win.view] set bg [WindowLink $win.background] if {$view != ""} { uplevel #0 "$view" pack unpack $t pack append $bg $vf {left frame center fill} pack append $bg $t {right frame center fill expand} } else { pack unpack $vf } } proc UIPopUpMessage {msg} { DoSendMessage $msg } proc ComeToMe {view} { set win [winfo toplevel $view] set xy [$view Pan] set x [expr "[lindex $xy 0] >>4"] set y [expr "[lindex $xy 1] >>4"] ComeTo $win $x $y } proc ComeTo {win x y} { global EditorWindows set head [WindowLink $win.head] set myeds {} set myautoeds {} foreach ed $EditorWindows { if {"[WindowLink $ed.head]" == "$head"} { lappend myeds $ed set view [WindowLink $ed.view] if {[$view AutoGoto]} { lappend myautoeds $ed } } } if {[llength $myautoeds]} { UIAutoGotoOn $x $y $myautoeds } else { if {[llength $myeds]} { UIAutoGotoOn $x $y $myeds } } } proc FollowView {view id} { $view Follow $id set skips 999999 if {[sim DoAnimation]} { set head [WindowLink [winfo toplevel $view].head] global EditorWindows foreach win $EditorWindows { if {"[WindowLink $win.head]" == "$head"} { set s [[WindowLink $win.view] Skip] set skips [min $skips $s] } } if {$skips == 999999} { set skips 0 } } $view Skip $skips $view Update } proc PanView {view x y} { FollowView $view "" $view Pan $x $y } ######################################################################## # Help Window Handlers proc ShowHelpOf {head} { set win [WindowLink $head.help] if {$win == {}} { set win [MakeWindow.help $head [winfo screen $head]] } wm deiconify $win wm raise $win return $win } proc ShowHelps {} { global HeadWindows foreach win $HeadWindows { ShowHelpOf $win } } proc WithdrawHelps {} { global HelpWindows foreach win $HelpWindows { wm withdraw $win } } ######################################################################## # Frob Window Handlers proc ShowFrobOf {head} { set win [WindowLink $head.frob] if {$win == {}} { set win [MakeWindow.frob $head [winfo screen $head]] } wm deiconify $win wm raise $win return $win } proc ShowFrobs {} { global HeadWindows foreach win $HeadWindows { ShowFrobOf $win } } proc WithdrawFrobs {} { global FrobWindows foreach win $FrobWindows { wm withdraw $win } } proc UISetDynamic {i min max} { sim DynamicData [expr "$i*2"] $min sim DynamicData [expr "$i*2+1"] $max } ######################################################################## # Help Handler proc LoadHelp {} { global ResourceDir source $ResourceDir/help.tcl } proc HandleHelp {win x y rootx rooty} { global HelpLoaded HelpWidgets Messages if {$HelpLoaded == 0} { LoadHelp set HelpLoaded 1 } set orig $win set head [WindowLink [winfo toplevel $win].head] set id "" while {1} { catch {set id $HelpWidgets($win)} if {$id != ""} { break } set list [split $win .] set len [expr "[llength $list] - 2"] set list [lrange $list 0 $len] if {[llength $list] <= 1} { set id Window break } set win [join $list .] } if [info exists Messages($id)] { UIShowHelpOn $head $id } else { UIShowHelpOn $head Window } } proc UIShowHelpOn {win id {parms ""}} { global Messages ShowingPicture ShowingParms ResourceDir set head [WindowLink $win.head] set msg $Messages($id) set color [lindex $msg 0] set title [lindex $msg 1] set body [lindex $msg 2] if {$parms != ""} { set cmd "format {$body} $parms" set body [uplevel #0 $cmd] } set props [lindex $msg 3] ShowHelpOf $head set win [WindowLink $head.help] set t [WindowLink $win.title] $t configure -text $title -background $color set t [WindowLink $win.text] $t configure -state normal -font [Font $head Large] $t delete 0.0 end $t insert end "${body}\n" FormatHTML $ResourceDir/doc/$id.html $t $t configure -state disabled } proc FormatHTML {filename text} { set f "" catch { set f [open $filename] set line "" set header "" set title "" gets $f header gets $f title while {[gets $f line] >= 0} { if {"$line" == ""} { break } if {([string index $line 0] == "#") || ([string length $line] == 0)} { continue } $text insert end "$line\n" } } if {$f != ""} { close $f } } proc SetHelp {win id} { global HelpWidgets set HelpWidgets($win) $id } proc Help {id title {msg {}} {props {}}} { Message $id #7f7fff $title $msg $props } ######################################################################## # Pie Menu Handlers # Set up the bindings to pop up $pie when the right button is clicked in $win proc InitPie {win pie} { bind $win {} bind $win <3> "PieMenuDown $win $pie $pie Initial %X %Y" bind $win {} bind $win {} } # Set up the bindings to continue tracking $pie # Get this: we keep the tracking machine state in the bindings! proc ActivatePie {win root pie state} { bind $win "PieMenuMotion $win $root $pie $state %X %Y" bind $win <3> "PieMenuDown $win $root $pie $state %X %Y" bind $win "PieMenuMotion $win $root $pie $state %X %Y" bind $win "PieMenuUp $win $root $pie $state %X %Y" } # Cancel and reset a pie menu proc CancelPie {win} { set binding [bind $win <3>] set root [lindex $binding 2] set pie [lindex $binding 3] set state [lindex $binding 4] if {"$state" != "Initial"} { catch {$root ungrab $win} $pie unpost $pie activate none UIMakeSoundOn $win fancy Oop } InitPie $win $root } # Handle pie menu button down proc PieMenuDown {win root pie state x y} { case $state { Initial { ActivatePie $win $root $pie FirstDown update idletasks catch {$root grab $win} $pie activate none $pie post $x $y PreviewPieMenu $win $pie $x $y update idletasks } ClickedUp { TrackPieMenu $pie $x $y ActivatePie $win $root $pie SecondDown } SelectedUp { $pie activate none #$pie post $x $y $pie defer PreviewPieMenu $win $pie $x $y ActivatePie $win $root $pie SecondDown } FirstDown { # error CancelPie $win } SecondDown { # error CancelPie $win } } } # Handle pie menu button motion proc PieMenuMotion {win root pie state x y} { case $state { FirstDown { TrackPieMenu $pie $x $y $pie defer } ClickedUp { $pie activate none #$pie post $x $y } SecondDown { TrackPieMenu $pie $x $y $pie defer } SelectedUp { $pie activate none #$pie post $x $y } Initial { # error CancelPie $win } } } # Handle pie menu button up proc PieMenuUp {win root pie state x y} { case $state { FirstDown { TrackPieMenu $pie $x $y set active [$pie index active] if {$active == "none"} { $pie show catch {$root grab $win} ActivatePie $win $root $pie ClickedUp } else { set label [lindex [$pie entryconfig $active -label] 4] set submenu [lindex [$pie entryconfig $active -piemenu] 4] UIMakeSoundOn $win mode $label if {$submenu == {}} { set reward [$pie pending] catch {$root ungrab $win} $pie unpost $pie activate none if {$reward} { sim Funds [expr "[sim Funds] + 5"] UIMakeSoundOn $win fancy Aaah } eval [lindex [$pie entryconfig $active -command] 4] InitPie $win $root } else { $pie unpost $pie activate none $submenu activate none $submenu post $x $y PreviewPieMenu $win $submenu $x $y catch {$root grab $win} ActivatePie $win $root $submenu SelectedUp } } } SecondDown { TrackPieMenu $pie $x $y set active [$pie index active] if {$active == "none"} { CancelPie $win } else { set label [lindex [$pie entryconfig $active -label] 4] set submenu [lindex [$pie entryconfig $active -piemenu] 4] UIMakeSoundOn $win mode $label if {$submenu == {}} { set reward [$pie pending] catch {$root ungrab $win} $pie unpost $pie activate none if {$reward} { sim Funds [expr "[sim Funds] + 5"] UIMakeSoundOn $win fancy Aaah } eval [lindex [$pie entryconfig $active -command] 4] InitPie $win $root } else { $pie unpost $pie activate none $submenu activate none $submenu post $x $y PreviewPieMenu $win $submenu $x $y catch {$root grab $win} ActivatePie $win $root $submenu SelectedUp } } } Initial { # error CancelPie $win } ClickedUp { # error CancelPie $win } SelectedUp { # error CancelPie $win } } } # Track the selected item proc TrackPieMenu {pie x y} { $pie activate @$x,$y } proc PreviewPieMenu {win pie x y} { set preview [lindex [$pie config -preview] 4] if {"$preview" != ""} { set rx [winfo rootx $win] set ry [winfo rooty $win] set x [expr "$x - $rx"] set y [expr "$y - $ry"] eval [format $preview $x $y] } } ######################################################################## # Pallet Handlers proc ExclusivePallet {state parent children prefix images inactive active cmd} { #echo "ExclusivePallet state $state parent $parent children $children prefix $prefix images $images inactive $inactive active $active cmd $cmd" set i 0 foreach child $children { set name [lindex $images $i] if {$i == $state} then { $parent.$child config \ -bitmap "@images/${prefix}${name}hi.xpm" \ -relief $active } else { $parent.$child config \ -bitmap "@images/${prefix}${name}.xpm" \ -relief $inactive } incr i } eval [concat $cmd $state] } proc NonExclusivePallet {mask parent children prefix images inactive active cmd} { set i 0 foreach child $children { set name [lindex $images $i] if {$mask & (1<<$i)} then { $parent.$child config \ -bitmap "@images/${prefix}${name}hi.xpm" \ -relief $active } else { $parent.$child config \ -bitmap "@images/${prefix}${name}.xpm" \ -relief $inactive } incr i } eval [concat $cmd $mask] } proc EditorPallet {win state} { global EditorPalletSounds UIMakeSoundOn $win mode [lindex $EditorPalletSounds $state] EditorSetTool $win $state } proc EditorSetTool {win state} { global EditorPallets global EditorPalletImages ExclusivePallet $state $win $EditorPallets ic $EditorPalletImages \ flat raised "$win.centerframe.view ToolState" } proc GraphPallet {win state} { set mask [[WindowLink $win.graphview] Mask] set mask [expr "$mask ^ (1<<$state)"] GraphPalletMask $win $mask } proc GraphPalletMask {win mask} { global GraphPallets global GraphPalletImages NonExclusivePallet $mask $win $GraphPallets gr $GraphPalletImages \ flat flat "SetGraphState $win" } proc GraphYearPallet {win state} { global GraphYearPallets global GraphYearPalletImages ExclusivePallet $state $win $GraphYearPallets gr $GraphYearPalletImages \ flat flat "SetGraphYearState $win" } proc SetGraphYearState {win state} { set graph [WindowLink $win.graphview] if {$state == 0} { $graph Range 10 } else { $graph Range 120 } } proc SetGraphState {win mask} { global GraphPallets set graph [WindowLink $win.graphview] $graph Mask $mask } ######################################################################## # Button Handlers proc sim_butEnter {w} { global tk_priv set screen [winfo screen $w] set tk_priv(window@$screen) $w } proc sim_butLeave {w} { global tk_priv set screen [winfo screen $w] set tk_priv(window@$screen) "" } proc sim_butDown {w} { global tk_priv set screen [winfo screen $w] set pict [lindex [$w config -bitmap] 4] set tk_priv(relief@$screen) $pict $w config -bitmap [lindex [split $pict .] 0]hi.xpm update idletasks } proc sim_butUp {w} { global tk_priv set screen [winfo screen $w] $w config -bitmap $tk_priv(relief@$screen) update idletasks if {$w == $tk_priv(window@$screen)} { uplevel #0 [list $w invoke] } } proc BindSimButton {w} { bind $w {sim_butEnter %W} bind $w {sim_butLeave %W} bind $w <1> {sim_butDown %W} bind $w {sim_butUp %W} bind $w <2> {sim_butDown %W} bind $w {sim_butUp %W} bind $w <3> {sim_butDown %W} bind $w {sim_butUp %W} } ######################################################################## # Internal Callbacks proc UIStartMicropolis {homedir resourcedir hostname} { global HomeDir ResourceDir HostName HeadWindows set HomeDir $homedir set ResourceDir $resourcedir set HostName $hostname sim InitGame sim GameStarted update foreach display [sim Displays] { if {"[AddPlayer $display]" == ""} { echo Couldn't add a player on $display ... } } if {"$HeadWindows" == ""} { echo Micropolis is exiting because it couldn't connect to any players. sim ReallyQuit } } proc UISelectCity {win} { AskQuestion [Color $win #ff0000 #ffffff] "Choose Another City" \ "Do you want to abandon this city and choose another one?" \ "{Keep playing.} SelectCity.No {RejectPlan}" \ "" \ "{Another city!} SelectCity.Yes {UIPickScenarioMode}" } proc UIQuit {head} { if {[sim Players] == 1} { set l "{Keep playing.} Quit.No {RejectPlan}" set m "" set r "{I quit!} Quit.IQuit {DoReallyQuit %s}" } else { set l "{Keep playing.} Quit.No {RejectPlan}" set m "{I quit!} Quit.IResign {DoIResign %s}" set r "{Everyone quit!} Quit.AllQuit {DoReallyQuit %s}" } AskQuestion [Color $head #ff0000 #ffffff] "Quit Playing Micropolis" \ "Do you want to quit playing Micropolis?" \ $l $m $r } proc DoIResign {head} { global VotesForAsk set display [winfo screen $head] CrushHead $head DecRefDisplay $display UISetMessage "The player on X11 Display $display has resigned." UpdatePlayers if {([sim Players] == 0) || ([llength $VotesForAsk] >= [sim Players])} { sim ReallyQuit } } proc DoReallyQuit {head} { echo QuitMicropolis sim ReallyQuit } proc UISplashMode {} { global State set State splash sim Pause WithdrawAll InitSplashes ShowSplashes } proc UIPickScenarioMode {} { global State global CityLibDir set State scenario sim Pause WithdrawAll InitHistory UIGenerateCityNow InitScenarios InitVotesForUseThisMap ShowScenarios } proc ForcePickScenarioMode {} { global State if {"$State" != "scenario"} { UIPickScenarioMode } } proc UIGenerateCityNow {} { global CityName GameLevel sim CityName NowHere sim GameLevel 0 UIGenerateNewCity } proc UIGenerateNewCity {} { global CityName GameLevel if {$GameLevel == -1} { set GameLevel 0 } MakeHistory "DoNewCity NowHere $GameLevel [sim Rand] [sim TreeLevel] [sim LakeLevel] [sim CurveLevel] [sim CreateIsland]" } proc DoNewCity {name level {r ""} {tl -1} {ll -1} {cl -1} {ci -1}} { global Scenario set Scenario -1 sim TreeLevel $tl sim LakeLevel $ll sim CurveLevel $cl sim CreateIsland $ci if {"$r" == ""} { sim GenerateNewCity } else { sim GenerateSomeCity $r } sim CityName $name sim GameLevel $level UIShowPicture 48 } proc UIDidGenerateNewCity {} { sim Update } proc IncRefDisplay {display} { global DisplayRegistry if ![info exists DisplayRegistry($display)] { set DisplayRegistry($display) 0 } incr DisplayRegistry($display) } proc DecRefDisplay {display} { global DisplayRegistry incr DisplayRegistry($display) -1 if {$DisplayRegistry($display) <= 0} { CloseDisplay $display } } proc CloseDisplay {display} { } proc DoStopMicropolis {} { KillSoundServers destroy . } proc AddPlayer {display} { set i [string first : $display] if {$i == 0} { } else { if {$i == -1} { set display "$display:0" } } echo Adding a player on $display ... set head [MakeWindow.head $display] if {"$head" != ""} { set display [winfo screen $head] IncRefDisplay $display PrepHead $head UISetMessage "Added a player on X11 Display \"$display\"." UpdatePlayers } else { UISetMessage "Couldn't add a player on X11 Display \"$display\"!" } return $head } proc FireBomb {} { sim FireBomb } proc DropFireBombs {} { FireBomb after 300 FireBomb after 600 FireBomb after 900 FireBomb } proc UIMakeMonster {} { sim MakeMonster [sim Rand 120] [sim Rand 100] } proc melt {} { sim HeatSteps 1 sim HeatFlow -7 sim HeatRule 0 } proc eco {} { sim HeatSteps 1 sim HeatFlow 19 sim HeatRule 1 } proc oops {} { sim HeatSteps 0 } proc TogglePause {} { global State if {"$State" != "play" || [sim Speed]} { sim Speed 0 } else { sim Speed 3 } MakeRunningSound } proc SetSpeedTime {time} { sim Speed $time MakeRunningSound } proc MakeRunningSound {} { global State if {"$State" == "play" && [sim Speed]} { UIMakeSound edit Boing "-speed 1[sim Speed]0" } else { UIMakeSound edit Boing "-speed 90" } } proc SayDemands {} { global DemandRes DemandCom DemandInd set slope 3 set r [expr "100 + ($DemandRes * $slope)"] set c [expr "100 + ($DemandCom * $slope)"] set i [expr "100 + ($DemandInd * $slope)"] after 020 "UIMakeSound edit O \"-speed $r\"" after 220 "UIMakeSound edit A \"-speed $c\"" after 440 "UIMakeSound edit E \"-speed $i\"" } proc UISaveCity {win} { global SaveCityWin set SaveCityWin $win sim SaveCity } proc UISaveCityAs {{win ""}} { global SaveCityWin if {"$win" == ""} {set win $SaveCityWin} set SaveCityWin $win global CityDir set file [ShowFileOf $win] DoFileDialog $file "Choose a File to Save the City" $CityDir "*.cty" "" \ "UIDoReallySaveCity" "" } proc UIDoReallySaveCity {name path} { global CityDir if {![string match *.cty $name]} { set name $name.cty } set CityDir $path sim SaveCityAs $path/$name } proc UIDidSaveCity {} { DoSendMessage "Saved the city in \"[sim CityFileName]\"." status } proc UIDidntSaveCity {msg} { DoSendMessage $msg alert UIMakeSound warning Sorry "-speed 85" } proc UILoadScenario {scen} { MakeHistory "DoScenario $scen" } proc DoScenario {scen} { global Scenario set Scenario $scen sim LoadScenario $scen UIShowPicture $scen } proc UIDidLoadScenario {} { } proc UIStartScenario {id} { global Scenario set Scenario $id UILoadScenario $id UIPlayGame UIShowPicture $id } proc UIPlayNewCity {} { UIGenerateNewCity UIPlayGame } proc UIStartLoad {} { UIPlayGame } proc UIReallyStartGame {} { #UIPickScenarioMode UISplashMode } proc UIPlayGame {} { global State global Priority set State play sim Resume sim Speed 3 sim AutoGoto 1 SetPriority $Priority InitHeads InitAllHeadMenus ShowInitial sim NeedRest 10 } proc UISetSpeed {speed} { global Time State set Time $speed if {"$State" == "play"} { UISetMessage [lindex { {Time pauses.} {Time flows slow.} {Time flows medium.} {Time flows fast.} } $speed] } UIUpdateRunning } proc UIUpdateRunning {} { global HeadWindows Time State if {($State == "play") && $Time} { set pict "@images/micropolisg.xpm" } else { set pict "@images/micropoliss.xpm" } foreach win $HeadWindows { set can [WindowLink $win.demand] $can itemconfig micropolis -bitmap $pict } } proc DoSetGameLevel {level} { sim GameLevel $level } proc UISetGameLevel {level} { global GameLevel set GameLevel $level global ScenarioWindows foreach win $ScenarioWindows { UpdateLevelSelection $win } } proc UISetCityName {name} { global EditorWindows global CityName set CityName $name set title "Micropolis Editor on $name" foreach win $EditorWindows { # TODO: set editor window and icon title #wm title $win "$title" #wm iconname $win "$title" } } proc UILoadCity {win} { # if changed, r-u-sure? global CityDir set file [ShowFileOf $win] DoFileDialog $file "Choose a City to Load" $CityDir "*.cty" "" \ "UIDoLoadCity" "" } proc UIDoLoadCity {name path} { global CityDir set CityDir $path if {![string match *.cty $name]} { set name $name.cty } MakeHistory "DoLoadCity $path/$name" } proc DoLoadCity {filename} { sim LoadCity $filename } proc UIDidLoadCity {} { global State GameLevel Scenario set Scenario -1 set GameLevel -1 if {$State == "play"} { UIPlayGame } else { UIShowPicture 49 [sim CityFileName] } } proc UIDidntLoadCity {msg} { DoSendMessage $msg alert UIMakeSound warning Sorry "-speed 85" UIShowPicture 49 [sim CityFileName] sim Fill 0 sim UpdateMaps } proc UINewGame {} { global OldBudget set OldBudget 0 sim InitGame sim EraseOverlay InitEditors InitMaps InitGraphs update sim UpdateMaps } proc UIDidPan {w x y} { if {[$w ToolMode] == 1} { EditorToolDrag $w $x $y } update idletasks } proc UIDidStopPan {win} { UIMakeSoundOn $win fancy Skid "-volume 25" $win TweakCursor } proc UIEarthQuake {} { } proc UIAutoGoto {x y {except {}}} { global EditorWindows set didOne 0 set x [expr "$x * 16 + 8"] set y [expr "$y * 16 + 8"] foreach win $EditorWindows { if {"$win" != "$except"} { set view [WindowLink $win.view] if {[$view AutoGoto]} { set didOne 1 $view AutoGoal $x $y } } } if {$didOne} { sim UpdateMaps } } proc UIAutoGotoOn {x y eds} { set x [expr "$x * 16 + 8"] set y [expr "$y * 16 + 8"] foreach win $eds { [WindowLink $win.view] AutoGoal $x $y } sim UpdateMaps } proc DoLeaveGame {head} { } proc UILoseGame {} { UIPickScenarioMode UIShowPicture 200 } proc UIWinGame {} { UIShowPicture 100 } proc DoPendTool {view tool x y} { global HeadWindows ToolInfo VotesForAsk set win [WindowLink $view.top] set head [WindowLink $win.head] if {($tool == [sim PendingTool]) && ($x == [sim PendingX]) && ($y == [sim PendingY])} { if {[lsearch $VotesForAsk $head] != -1} { # you can only vote once UIMakeSound edit Oop } else { UIMakeSound edit Boing set ask [WindowLink $head.ask] PressVoteButton $ask [WindowLink $ask.vote] Ask } } else { UIAutoGoto $x $y $win UIMakeSound edit Boing set info [lindex $ToolInfo $tool] set a [lindex $info 0] set name [lindex $info 1] set cost [lindex $info 2] set title "Build $a $name" set question "Do you support the plan to build $a $name for $cost?" AskQuestion [Color $win #00ff00 #ffffff] "$title" \ "$question" \ "{Veto plan.} Plan.Veto {RejectPlan}" \ "{Goto plan.} Plan.Goto {ComeTo %s $x $y}" \ "{Support plan!} Plan.Support {SupportPlan $view %s $tool $x $y} {PreviewSupportPlan $view %s $tool $x $y}" set VotesForAsk $head set ask [WindowLink $head.ask] [WindowLink $ask.vote] config -relief sunken UpdateVotesForAsk sim PendingTool $tool sim PendingX $x sim PendingY $y sim Votes [llength $VotesForAsk] } } proc RejectPlan {} { sim PendingTool -1 if {[sim Players] > 1} { UIMakeSound edit Sorry } WithdrawAsks } proc NeededVotes {} { global FreeVotes set players [sim Players] set needed [expr "$players - $FreeVotes"] return [max 0 $needed] } proc SupportPlan {view h tool x y} { global VotesForAsk sim Votes [llength $VotesForAsk] sim PendingTool -1 sim OverRide 1 $view DoTool $tool $x $y sim OverRide 0 WithdrawAsks UIMakeSound edit Aaah } proc PreviewSupportPlan {view h tool x y} { global VotesForAsk sim Votes [llength $VotesForAsk] } proc SugarStartUp {uri} { global SugarURI set SugarURI $uri # TODO: Load the city file at the given URI, or configure according to URI parameters. } proc SugarNickName {nick} { global SugarNickName set SugarNickName $nick } proc SugarActivate {} { global SugarActivated set SugarActivated 1 } proc SugarDeactivate {} { global SugarActivated set SugarActivated 0 } proc SugarShare {} { global SugarShared set SugarShared 1 } proc SugarBuddyAdd {key nick color address} { global SugarBuddies set buddy [list $key $nick $color $address] lappend SugarBuddies $buddy } proc SugarBuddyDel {key nick color address} { global SugarBuddies set buddy [list $key $nick $color $address] set i [lsearch $wins $win] if {$i != -1} { set SugarBuddies [lreplace $wins $i $i] } } proc SugarQuit {} { sim ReallyQuit } ######################################################################## micropolis-activity/res/sounds/0000775000076400007640000000000010724145723017137 5ustar simcitysimcitymicropolis-activity/res/sounds/honkhonk-med.wav0000775000076400007640000010500610724145723022245 0ustar simcitysimcityRIFFWAVEfmt "VDdataډ  6GJC<9?GG=& q<ucdz5y+=QklU>%  sXC639CH;/II> &  M g  D E &n'' =)>J , q=y  4,^@Tv!Yt1Qxz9:3H[R^Zms2OpW\F"xDb{^.)6CD*!55"zG3c ~   z e rASagkx]:tu6'> 1 3Beg=r%$6.9:+7;fR}513idC1 I|N1 {P`Q  9hym(}pq29S|n&, g8=P~<1UxEE eAOj Up} dP_2\h`>Z  W4As.TN<8 : b I+'o[ OH"a> zb|O6# @(D ]%! 1!$>zG Z8fP_ j/Yh/6OTNc eCk.Dpr)UP.c ']q>% 6HyO>M R:qM8?NFg?e&S; ;T?QP)Ug2*.(&! ^1<[KTX ! 5  ORfv!* L L ;8\JR5Ky0!m|WA'F x NWz>Rxs> )pukQ |l!! =B,f fu)/@oY4YuCPEE-7 I <! H mJ%r:CGK~$YWuy[*vu[*{[yTcghC5-S\1^~WEuz-B03crJW`G ; \ +!sV?} ~t&l i ( n O > [~8;g+ ND_CQZPaQE&gp 4zf(12Sc`Y(f? \O64A/~Ll XUHoe'O>e].EaBIG-)LS#6Mlza]kiB 3d]7fC4%L+ A ) Q88gh0F d P  NT n$~1(XwV2RQ-hvA%Yb)@UA{d(|7[!@LM f ]H5-tRde_8wOJQ(" T[v)%`XW) de L',YRGal91AfE'h.zhl E4Gs.4F7"%y}0U^# %./YQWLYjBl]+c>svR\    8 5H8);:JOu\ L & J D  u_CVhzxYDFoMO /!l;xIt8En?[`8EeeK#w@UN%$lJnn2e " L32LG+W<_\:APpg? n t67'_*84rnpDOIYm>c? UT ;dU@ B 6 !4p,$ k O _ M j ? sj%~T 8u>{pJa|\t6%Vu8F\F2e`g#Nl8 [ B {.cJ8}F*2:V9o%Ez5[-& U 2  O 2gJp\B$i,a-EX|0_w-*i@h%F.RO RzJgu{ $DC!^5c!lQV\TCyjK=\l  E ^cn0\{9yNU~U<*b s^Zl{BxS{x&~C *ZO1(/] Y6JB b"%P "XCMJ o ] _ =]t`r'LiEd,Q ( q oKQgN L\PjVeD h ;;1I1?_-f:f8cS;B O 4 ` l  0PA (X4$ _V7*rxL3<8I5BQSwCX a >    )y D ZKDOAY@_#8Xv_wj jp\)S;`n%1^s+X Tt 4=$)z-,TLPQk^lFk_p# k B f {*#lnW\# :k0_^OZP `AWWNf\  V/G%d&yn(tg(8YzHS0 AvIEwz73pr1} Y  Gxd[=!D]~R .'GmV>RmHuD%J ^457h!GF\kk ck 6 J b o `-'+rG}Ag~hpV:\ 0, > !Hr }_13Q`R~8*,4-=Q [ 5K)y0{MmD/<Nc4Pw`2Iy H r  F M 2m)TKkfgc7p2i~ { I q ~sg_E';/@Kc[ZuJKH5,S6w;l|\s4UuI;LmI- 1U ve2CJ XLG 090fAZ7hz1nL?w4mpsuEF?BJGHQ5EKH2#+0A l8v"; 92%rKcC[,MG0^j]U*K l 5kH # y 9 1 U >yn$\PW) s[ Q$ X C^|'z\EB_AeW/xAk^B Py@bmKPALd S Q i[jBRca}r UpI4{~mQpO   8 g ) | C b}%TrK9jHc$&Z9 8    E $ $[O<"{bv3T /,:8OGpPqd13=yecksskZ|yw?{a)9LOz~2Q * | ] B5&hK p ^?jD  El#Yo (fJ  vL9cW=(A{yCTjc`O,4~%00}Q|x/8R"  { _}]Z Hpx>#b<$BxI  `c\zwp/~co(z@Lxg 47J50?7L(<$r|~}  i $ ,  R:.jo;  l(p~wVlvKu[k'Qkvb\|-sU # + QErU9c 2hBu0s<;# W+ P | ! yFm)6>w97JjU~%1.I_tj[+SeYd{t3(L?<=;0)))&`< BH,H_j]e^ b k z C["w_ . , 3 N#S6*`3`X=mE**z'`~nE!zp&1AWs0D_1MU=x;- yDY3 r3%z{o"6d|yF5+d  BN%(Fk80C ? :)#.0^B>C|WVQDMByAA|0 #B4T![nYy} S , -;=>ZP_|<{wri=  _ LCp Vn_`Ma^a47x[l#Ox35  kAAFR,3gQ iJz0R)TSn6 -2]" 4@bD=x fi  " + Q X t8/ T6QeY<E'=}Q'B(W 6@hh [a&,=VW xSS.@N3K(wiRv!L [VL*//HA=? CO 6:Av=KkbQW6 b7B7W X ` _,t9:Xn59_rq220 Z'(N*}ed+2bz s J\]bz5kw  6 E a d}9/sw-Y|T ZW1T9|1*q\CZX>F D^P^6rW^$z8>V  eBK?Uj> 2"3tH;W7SIn_D/V[I8:B3pp?cb>] K7E=a~#M</ h # `LUARk75E#?CrGCv],(`NA%<:R.95wYe(%Re9bUA FrI; cB+9}R:_e cVa>V3D;Z5Phn 2xyx^8L>OG987uW-faBTY.vT 748TOS=~!/ x[.H}v@198<|_18Dh}0L_1ypV;!.A G A\=>E3D2SWp: K^*$^C7-1i&/cYJR1? kyeWC3s -AIJ?$v}([{yI ~xsns+{ )C[p~]@;IGi/274O=I*.%)qoUmP6\@Ew8k%LSOI%"k@Exlmv{upy(BWu!b?MViLaza02qMc"&U; zLf7 e_w)#\Wo gSjn15m|o? xEF-e5Bk9+f})M{  \"=qzqUPIi?C@[R%6^#'hj.P4 8S (M8*46*&FG:19MUC# W .B5$0UhBpxc&E;tc_w76D3 vLA74(^l<.KMC;;?FH=eB9;;86?Sm{NGA/(y^,)l<M& Iqn^uy#6p{vI}@T{x||yy  ;>76H\Pjt|hDD3    .y`M6)0Li{Y j#zWw\lrB};OB0Sn| I{qJgBERE vL:CnS:XLEZ~m)y=+h|qt~~}@sBqkv|rv{h+uzu^W}9"0 <.D?D79h**H37/.$5E4LKEGA<>?7{vy|yzz|~uZ?8P~j=! Bdw~qX=02=C?% 5PP@>]oE<SrxJgjrUC6B=5}rP:LMq}h3+?.xrujsrq|xntgJ;9;==<7%g.3a%Nl||{u_3/E_x|y||wu!=?:;CGC>Lsy}~wl|ec}^F>AB3|#&uswvhO0"AfwgE4LynN}znmsxwtoox $;GB5_Q.'Aa|t^VX]\Z`ui4wD [x^: R%qmzn=f,SfX[feDtM2% %7Sltk\XblndY\gpj\T`{/\eN*%=Sk'a\$T|;A50GzBm 0 5NI69a4lmOPn 3NbibUPZfh[JKhY8't3  }dRA) 3\)nWcX(\)sRMawy_2u\S[u r h>zz<C>/;ay\=Lnu|g2sB8o;]9nY@'!i\c >~My-GKEEPg g8 -n<oL |t"=Jdpgqvqnv.] CobYYyD:$CbS Oxj  Wdw 2 ++ L~^rr87<BG"r i)hJh@xV=6650-2?NhASw 8K&UY[a8"yZ5o hr],?g;4#z{4Qn +5\G]8Kqg5[?)M $ K R 7 "4{|:ND(|n Oe)UdDX^,ZuX 2w0{R  X>.=M'8ZWTKR/PYc.ise liGjvm/Z^r-`{P3db6=2h)D\!]zM~^! ^ Q  i %n~5 2pT}B` v|?%CwB "'gsB bOhEad+Ks+[ / H  s4*h):.,li/qzGT\K4\1rKzufJo 9" L6K.@i SK -0hui3`W6:Bl@Qe9!`,ADj\:'C:=CG!S~ Z IRuP 9  :h N@h2Dl_4 I~D{T7+MKz$H{f("~ ~m:PAJ2E8#- 8{ 8  ,&KBK0%:eO6^Vf x ^ 1 )2 k2#6~JZhP@kv{P: > P @!'n4X %#XgK,^?O5!0.&k*8vmK `K:G%K(e03 T (e/lm8be?,kC[rZ='9 / 8Z r E".O*#8{ 8Mn1RH!=#P[';j }oL~_6W1x{O.hAF~KY</(LkF8 faB9gw%E 9 ='p}H] fB7 Q /     6p> pm0b4l)v:ap9+%-t[CG.[e:t(f[SrXM+}}9b ZrS|}.=7T B ! $  i9^;EhD&9RZS7zb8hP.VQ$Z0A[@&1_iEh 1  =)Tm|0  c (n0h _;_dQE[q VVe} |qrCVQ < 0 W \ sk.\NC'oy x9M0~TJ9I>S>8p  ! P h$fR}ht= ;li~/V)3  kE`cYs" nslV*"6J^0<I5S#lSj0/*#R s 8i O f1~|#A'R`XC?^d:NbLfP3<^GZI 'iVn y U PaZbms}hycI4=>t cHun   TT#\_sp y U~olQr|$+PL)`lk!u8}#TKr 0P#LkT a @ :  C=*E0 x1 b Y I _ :}ez@fWQb{WS;++u:STW%QU(A}33{U,    3 [[/_JNL/ZR7*yl*@B|^]O>}& v X e &.;;+BY!sETgL K + 8(PY+b7e pr";dR}~Cdvjk]?;x1X:G u z 6t $UAq; oVPw3!+$FA x?FB5!=aoK \C94jz=cW;5| %l2SDIY%W#Dw}klOROAY A"|M Ea %%Q-w(P=jivCOA ( u  g+^> 8"2:5pbIAvW v]I *a\K^ftn.I!d{P=.dW7!~P}kup@b" MPZ ) dRH@V%c{|)bG"@c: ^f^v+5dB9\$49Dv[ _ g  n)To]F_ b%KN) x p ?>= VfH]!; myWL3PRX'z1?j%C!KBC l N@QEGrUTX+Oh6mN&g3Dv ?EgY|! X ) At7f% T7!@!` B  &2]:RA~ev"8/  TKj}qi_ gx%'`I8Z_{ K p : V aD^ Dw6FG+)`4bz@KDFP*']h},vx@g;L\+ 4)v6~9 { ~/TOIv8ZJvxrYVs%\J!Hmxf oNo5A|GaWFid\{H } \6L29J! nq@R` | -PpT 7 MeR18F./ !vu{1Z|5<$%i53 Q J  YSUBTh]waZdg6t1$f8A}eRlt!Eht w,   Up&Jh &&j3}A):bO "l u  I)Hp=vIl$e3 Vb_ H{bxv {7WF+*   :Wo~ij2#3*[o[<QIDNRkRV)B; c#om0ip"o7 '  H  uP]EIm t 6 @Vl :#UZ|,K(Ln8.BK9Xl_vn_{M_>fE ' ^ w P GTm["{ 8C0:pwC:   W }5R~/pZ>VC<rJ!9$[ }"$q.+,YkAP &(ro,hK#p["pa3^}8 /*{ - +=oG8d:3qj3 MI" W@ w^[z:Dgj ].XWsPH  )'77z(5.tgi;;:!;Y[x r AVbzs p&s1Fu&l,F9"W~Pd46q"zpjvKT  Nrn 9}5uvoJ`eZ "Eq>D,-^ $  P 38 es QdbM*dft(|D sqXbCj!rkQ< 51f$B;%\mU+US?6pV]m5mw"  O [ x\m.SaHg0a-_  Fx e3TeOiijU~Oztos1~"cC * 0= -Y]gm-}Q$Ou ^ D  !-$2}n0"ewgk4Y qUnc@@A709@WtP0W5~}qB BxqH06E0fn ptyV=l } qvjs<~wgdtq %: {  5 ~5fC}5euQ:j@~C|- ~;Gp{^:%*Eo|pqpHK4rilV]!~A2.XLoi> #Hk+|3 :i3wqh6.}+gFj&!;$h C`'q0F '8"[KrwndT'`EmoeVIxg GjL9 Zl\v rN<Ya O`i,^d5e@#e(q~r3A6,7Uq{xxu4re?=>) [%*Up) [&RGIvjcUD)pnDa':MK km{vWT+k>xxwO;?LE' H"c887AG0$+ TLb?;]XU!Whj]'"(Qt$] YG}e{!Z?OZ7Z~0mVa= .JSH71=LM?' kgws4i\ opz&lAH0M".*/S{YkvP /O"c|,W## ~jT?~;5">qKThk FYC>>FQw_SYŽU@=?GQo[]]F>;;>DYλY=67;DYkkc[YYUS[W<58Cc¿w_YUUWY]oYGIoO=88;Ioc][[_gID߹DDBMUK?@cA88;@MoG7Ok?AOkc[wW>GɲS>@N[[D8oDAJQQQkwk]okk[[]YE>_ŻU?55=OggowwANJ4A´]IºNESggY[]]MWdzk>;@ILS>=ݿJ=EYYcSQkD9GijL>EM97ٴFKYUJKoocgLCBB߭w82:DIQȾo_]]Y[__]]]]gN@ݺL/2_kMKOON]cWYkM_k@?KYYUgk_U@;O´L?;2BȼgMYg[[LSk_co=.J55.8CDBUɺgWW]og_koo@QF84<缸K@FMQWc[Y__?DƸK?Lg_Y?NG<>DDFGSLD˻E>I[_Y]oo_][C=UH//]wU_wkUO]og[_?/HA58ADCSSͽgOLSgk_]gH>׵oADDC;?ݵ@>KOKNokc[YcH;co??Mcg_I?YJ=?GLOwO߸o==Mg]ScwkY[k]@>>06_DN]cwwk_[WW]_co]<>gϹoF<:=DW[OWkwoo>GI>HUB7AQ=@ILIQwW;@ƸL?GU[[[g_E>YB:?JNWoL]K;?N]Y[ggO=Cβw<8Hocwgcowkcw@AC7:Kkok[SSSW]gw?CǸUAJ_kI:HkC?EEHGMY9>ɹE?MggWcF=SD;?KSE:cCY_Swg_UQU]ooAA@ѺQ@G[k_QEIݺL=?GIM]A@ӼL=E]c[oL;?׷W>AOK7>S?HSQKQoo__kocUA?OE53;DSÿkc_koggwkgFUo20SSEM[QKQoYS]k>LE??Sw[[kHSųJ:;CIHO?E̾H>G]o_]W>=kJBBD79绸GL[YJHow]]ow_?2I8/7BFDSνw]UUUY_ggcckoJEʷS61?̷NHLNNS_kWQ[G<뺼W>Eco]U?SD:?HHHYw?gY>?LLWUSggYUB=WN9/=[gw_QScWUkoo]]10ͪg43=DBF[OO_oc]__owG>ٸ_??;:LijQ>ANOM]wogw[>UIANccW]D>>_wB;=EMYoùI>CNQSYcUQYYE?[?3AoYgcWgk]Y_wgJH_@;GõG;;78=Lo[B>M̻C9:AIWoUMY׾O>;>HGBoQ=>FKMYYw]gkkcSE?KʶkL944>kkowokoD>ټKBHL_L;_k@CUcWQkU=;;kg=;CN=4cD@HKIK_wokkUBN˶o@57=Kc]Y]_c]_owkgww>NS18ӵEAM[UOow[OWog=LMGWk_S[WJﺰB9BӵEBH8:շHLYUIJowww_Y]g_goS>5U6/7AEHgǼcc_gkokgwMEιU52IgJJIMOYoYONYG;Q=BWgUUNcH?o=9AIIMʿg?__BBFWgc_ocM>DնgB6/DDɿkU]_SILwo]UWowcg?-@9/6?DBSʻgUU]og?]I>::SôS>?IMM]]w_YY]o?KH?KkgcwAACӶ[><@EGNNKźADJ=9UE=ENJM_wooF;BHM_W̶W::IWYNcgkYYkcD:L¯3;N=KwkwwwwgwL;NS>>9;GcwYNQ[cggoO;_?>KYB6EQ??FFEMB8kkoADQ__]kDAo>9>GGNSGIc=5=gY[woockwgcwAEȾW_;c<:Iw[g[SQW_ko@QMCLckQ=CCϴH=AFEHYM8GƼ?=KKc]OYK@NW>9߱D?JOLMgocgU>DĹ]?56?YkWW[cg][ckg]YYgOAۺ85kG>Nw_O[cWW_I@չW?G]o]SWKMۺEEնS>?H>9_JEMQKLLkggkkoG>Dٰ:277>DMǽg__gkgkwg_gwoUU52LF@EJJOgYYwoOwoMQwo_koGJӶ]<9>EGGMW[wQMS_c_cg]]KEW˹_D@>Cckk_SQco]]owwwUBKdzQ==FKM[gYY[_kokwwowkwSHGGYgLIMU[og]YY_kcS]]YkoocW˿YLLQYco_W[][Y[cowg]]k]Uk_IEOok__kogccgwoSOwUJIOS[wwg_ckooo_]YS]_[gwwwwokckg_cckkokoockk[W]gkowoooo__wwmicropolis-activity/res/sounds/uhuh.wav0000775000076400007640000004026410724145723020640 0ustar simcitysimcityRIFF@WAVEfmt "VDdata@ '$ ,44 .8- /0  DP:&D='TJ\_ FB9#=>y[ZM @ , e ]i\PYJ { GQt7 2/Fd̅YPze/m; =X  ; e S6 qID   o # Vj#fl| s ] K.RI]  (NUDc=@#KaXObfsSA*ma+uUV? $  ;HA:[ ; # 9 3oB(eU-)쑖d^<߳ b! o ? * s ^Ywo*m R^] \i) \ A F wF={$ _vv.2Gj '"#7$A"u=%;kϾDAF Q%dݲ^'' rN T>5ئ5 V U  _]|   IJ%8 Z\y *QuyMF PDC-R7ZW {1 8feMg}f1*F$*-a H  A8$ I= p I i  Q\w ' P   b !8"&>+.z.-@.}.)v۸#ո&y-XдT P 1'eL+2n, _2=®w i t 1 X(|1|  cu),# 6)/ Q?!$ CV @b`d@V6W$j &p* Dz[RaSz(u] | |,&)/ 8Y  c  p x 9 !)/2z236:5 $/褲̃ \va$yԖ* >'42',"&0i:O- dTJ#E&|Xn1 ! % -v!\, 0k(jUܨ. F #`&r" 2b,wxq )"F B{-V,w AV w lmx aTx Q4 sp Q ;%|/7:X:9:7,'ȱzVW1mcպ  r-N/,50l%#(#m{WA (fv'F(4 Kls2  ''%0@/U" (&߼f7 AT %<% KmrZ64 +joW|B4?y 5tcԿ$(   \:> (#H&DU CNbGe%l *$'**T($i#F%)/ 7[@*KRKP=a< ߠ&t]ož !*c&z$17* 4ƽk[شs6 y2E90c_, +c9;/0:T "i*+% &[$.F8eEp!# \<jjC f sea AgiT&09 v p !NTV"&%# 9+ " ~ I$,7BMKP0TUrQAz$#6G\Uműb Gź͇ d./7) ##U''k9t!ɬQ]T#u..|!D .ޱ '..,i _,IF Q$+,4'))-& p#_!V K;[\:] ;S"9 SRG*])lv6=rXf=r|#(+_-.1+6;uA+EC49# ۦLwd[k" QuЇNr!#- '"J2ԢE\~-3(%Nz m "ju7n &&V B32'{Kfo K\l  N C > rYrv%7cl 1((` { %*,:./)08247|86q.B/O!ʄ `\NzI Hn^}}:&.utX , %w'[< 1maG A  T $,G Ert@P bc6 I {&  / q M 's}}{Y V  %/+g * OCT*XO}7 +1*$*RUlHsGK < N"'),//-(pI*b_J@[XDm 5q{ g:"Ekdi;we:s6 _ J){!)"twr #/ To">"!v^;xc2mimK@!p,/J"o jG8&i{ t3QsFOjes5]A.b~v9% sr*ddu fl:% /u)h{V}D0ApS<L7c1!Iw+@p4CBxu%1IL+m_h%=d?$k~T/ -IftjQ2i KhkbP4vS$@btnF!Dr=^6Ayi=1<C5 2ioRACThux}&_TumN@;;;=??5++?owz@dvti\PE. ! !'*5GVT7'Yv^#!%%#! 4FC/,82 ?tb=&!+3. 3JH1 Lp;"=NE( ,.6QK'ya_Nkmc^`[L0#EP<!?I9  Lsx`; Ot8  l&lCDc=K8Lkc=2;?Nj~lL ,HOB(  ;QWG$ 3-;3 ",beD-#.EZeilwe2#DtNqT| mWbu~qA(pLr6 *-/mL-4008JY\O6)$!-/%qgqH4-%l6v'95   Iqn _vI8 "b\J& @|n]; w" gK% \~X=O.mnS,n i D EWe] bh!E%^g+iQ G8%uR*-T`8!%g]:>&K"X0d ~( X ^~)J 1uG;mHl "•̿q( d)wjhz ( uO6jC- 55 `9v(4N (/O % +x-R4(` v =~@*U-ldwrd8YuG?j jjb 'e{ G rTJPQ 9ɫ%#%oL^{F!$ a$vq !w = 0Ew\ %  r*j/6  N$2MF  , '$ resfX  ?\= XoUmS\jX2. ) )Y, on #>; R w Ta`8:Xn^K  klZ t:w2ƫڳZ=+KW! GAJ Wir Xu7u 5ekH<% ;  < ? .  W X)ON+; gNkF]9b | `Lsh!/y^JQ1;nR yP+)  D 6 0-"r}-6AS6T@' [_ u^$_އ< L )FއWX#" 4 ?sN)*| _iQkpVu3\<)HNC w |*{S L J]/(0TCGr` C $ u܅Ph} a.k("> `b{=o X#F us=h-q f5XGaA  d|еRU8 | I1s A 2 [ QZc ]>|,&w"O r~f1D  ?P u.4hX)L n: P6mt B s LT5UjB(*11( ={]/T<_p !  3 l~ F .iA Y -  D(E|*/yK+"M9 h & +,S7!+] PR<"$Z"Y]uNW fL - ` ClNUkz"$!CVs`VUe n@>U;QrB +7 $},?[7[ "#H -JrxW t IdJaF,aC>:d]+XLmZ>|U q\HEL T  6 m ] ty 0 @*9 7 eb?R8 mJ  E}SR7ܿD |BO( l @.!  h m wK; p2D*$#k~ %s NrfE) ]o.S[yQY  `'!b44Z ?Q @ Ec59fi 5 '+2)"kj L{ gwn) ?^%  mB16 C_$ * hu|WEB#|f;9J  /:< 65^ožnڝHGS :>Q/N9. ۙ  w,#% Gz>RHG3NE &Qv}*!2 o >S/% 4  t}9Q E 1 +"^z-7W`-E>V6mLeEf!G)"}St %S MR36 jA9,#j e * %D { 'A!C6BBkoO?~%eT j*Y6|ZٯCUD,6  Drlj ) ] = 1 aT 7޿V ?"!Z O<*p 1 =0C  U`D)t =7q R JUAM-E c uFgcB"Wf: }!DASF9dQ.)`S~[A#k/i f?3QD;Iy)W%3 Z ?"B) S T->.Gg 4 U v 1CB;UOLxhJ{*{z\CUn6  # r K _0ɩ 0_h,Tv87j C ?e(+SkP  Hg= w i v[Ln jWk Q#:lrrYvzJ@mImF$VD}8JQi1'7]:Ng&u>(?1g?"(k`B[ $ * < {(ofd4? mOxC-2Fr+a3hd  E Dubl9+qU2Y1Z"Sv~"]=L^Ro6(v})aq[^ 8L aN?} >Wk?|:)z~rBO -X7%F!jZC:T`S'md"a_|$#\i;4qO%Ky ]C~ ug1lKCJXo,//( /^u5) 58.OpjE ,6=CC@?A?. CengZSNG9"9F::ML7  $32$ 5HMA$)?4+) $0( ,JlR 9F.'(/FH5 #FYM& *-xBS( {II@ gnQ^c.y- E~h8xj?WV?_^cGjt;mm{_UTTSWfo1*u[7*,-#y@~!F4X )?ML3ZMSbt&tlW^{bZkhG?e3 yjAcitWE vaDan[NWh1 YKrS2C,sRK gb  x& GK(Cz k7x |N"C}`Zw Zqjv'Aws;Mj)}21kB:8 )5NuI{ |<$dOb8qd9  e42-sZD\0'BH so`+ 0z9kB~D v Elc3L2!doG&xp')D41)( 'Jxf3,]cmn{DB!08()Ks~JORj_q9kJUg3Ax]J)9jUOY+,fFid_GgH{S!b"BCAQsh} $!zg7e|V;4>H< [A,8B,,slAS\_Ol%CAPq@!Kpo7wmp$Q h<#f3/T|}H5t-En51*)1MU'._%%e M/*DJ#58_4.QDzh: 'OzJp%J|OuBWzIT1,J"j|9/E~k-\tR?EV`X=%>E<0& 6k\{il AXVORdztN2W'Th_PQn[43SniD!1F5)rZR]oe^|G[96ESI) ;_sysiZG8/1:CC7 '3, A{p6)78!  'JYTHEOZYF* '1**DY\I+! !micropolis-activity/res/sounds/explosion-low.wav0000775000076400007640000067312410724145723022515 0ustar simcitysimcityRIFFLvWAVEfmt "VDdata(v@)/?F@76<@@:8:?@<99=?=;:;8:>@<98>A@83:Qmyx{~~zzz|||||}|{z{}~}{|||}{|}}{{z|}}{{{|}|{{{|{z{}~|zy}xsxe?>F=(%Di^ F}x9]^L =!*_> )-C A~i(cH@eg?h%   Ycf7m&884pv^LeR_e7nzn9fk? bwR]XHfc."{e s?hA\v'Pl]p^^y fpw5@rlJ  f 9 G * ] B g 8 *  T J s c  c % S   _   lLea q  " Y do{uST M+QAVL:4>EF@4"&J 6#V}\j[Qin`S_=LF6cFA"DwEqq2QLGUO{b-N{i;uy~A+8D,F:z$N^0`& {|rWWoXieE}}jSSvLQy*u   q O 1 y P f V j K r i;7Z" / z R x = Z 3 ey7=i_oNy)R8N`$vS68A 2-*>BWxVoBVLOaS1!':iKA"HM Rr\VBFj. ( P j  }  n 1 \ < ^^fU~S" #]eWrACla*DybyjKqi ktpQt1|   T(2v~.   b  ky.XwVsIKI32QhQDsTw_0 %i'Tlz'Y5ROx /9]?> iW,W ?uXS G3Las5={%S?v'Vm+CMQ/.aSvl2/",uK|}jm7rMC+T-U`~J/ !bK$8B/wE3|1Gx(%{,[~u b[YqP5QMPASr6p)LjmY  5Xm$m.#K|" uVMNq2{ )HbRnO  3 X p  I a  G y J| o S H  , rCWIul#Ej)    ? =Bxkv=)TN oD[|Fve6.adMgQ_O1H l-(8 gLsx#LUrrl/1oE4P2pPe?  <@sSfg$ 9 Y V h {  l z E D y i  - p ^ 8 , 7 > 8 6 H ^ F B v p B @ O J (  / | 4  g]K^7 gZ.dMmCHQ"Ek-r(=j dXJ;(G'/>>Cfa+3Q@ (c+4  q 1 bO>[OaPf}Ez ]_-5X% yoc|."O' lYZO')DF381/wsgjpJcNW`l p 3   S ai $` p j a : 4 C { T*5>9f  tWh"(WALh*#argfV:5e%}2DU-RHwn A > G _ Y (  k l uYaL*:& \  c j L ( e Y  5 + U M Y E  7 t t /  a k ! 6  T  =Zz_QU'_ fF^z D  4 o 9 O 1 C 4&&I 6fiC WtH7kM{UMW(n  E*]~P1M\.2<7?02b71vi HSNGKqW>n8< >pyt("yj}T'v[} UJA-BR.{ ( ({Za8g8%JG%wC#=A,(#`[kWR=C`;4t2yeFUp Prp~]x"u] 9! ! L;)6{[RaS'EOiav F O!4I4} [gN&ijv2x~`7 NT\A0 ^*'15P_:7 Q1IX]qJc1cpZ" ;ul+'f,wrZ_4O6|<%vcg'aJ:IR j i  3 i-%<3R$A) :%czc@4\U00q"6aJ JgKW" &S}}O8+Mpmx6IuP.dB.7 PG(S o_n3!`l\kS ]j | YQA`:z}V/D'tmv\(; lO\  ~ ( d Z_Sh$K=.0@`j~JJ|S"4];(%:?C?7S5|agz>by LgR8}9_JcFFQO9W-}2APfE . f~2  =%x#98  N"#BYXI?8-)VcX8f7GK^(C-U.QNMj-%6;?YEOHQy$+"NU:~}J8(% V|K7AX%TOMi7f4PW$$531X6v f < j \ * | :  # I Y G . * ; C 8 9 s U  Z   3 U R 9 ; R - z U Q 1 L '1 S O:S5E'fwRlYZqmIv +f6!Q5W]d`3mB7\>Cu ]%O(/0-$zh;%(O9 'ogGR2{\ai'EqO3uC/Fn n5;7S)x/<2NB L K ] o  D D  u  7  $ c ^ " 3 QgcfD}eIU:;!=lxfec % 6:w!Tl`>s|c=VZ* G-GN-Dx}&Zz   u9iE/LelQNQ V/ x t R 0  )p ip6A  9  g^H~ us :.bQv*#tn1kX* KG:T*k t[pm[+`XSJHO/:|J   3X;>x}l)kxR .|,/jo\uEXN > koB9`S^u PnJpYt.I|w^w%9;a<`T\M|<Lg(rR`x-BMS86|w*/fvdSk4&fcxI}&L]~U n*^qo"v1RvZ2@BAdx@DjL? &-1M0&?; N%K & k c o 9 x Z < @ D $  ) < n 4*D_Ds*vC^{#W2ZCKkF`Jul\u{P&Ib33ZH7W}L8ZK8QqOiS <l]nu\LPOL.3$dEX>.l.8hFC^fLF=4}TC[r`NwzK6algna9`"a*Stty_? 4  y 5w? s ` > SH[lL>Q}\y$-?Rw(;|R)[h0Dph6yBiBMZ$p`gj"iN 1JJ)kQO(kc[uzUDcz&Y>buW`}hv}hqNgY8gJME8Q!osRnL p ;W  P.Lap;kiTb'e7*I26FCBbQ, "&]\Yn ^(,RW,$bD.t^e4i*G<+kyb~,~ R)w*B#Fj~-^T4dW@]@Q)Ro!tQg:| : a o * l  d " . E / A y ; " 0 < ( % C a V ' ' i F ^ < M Q )   ~ V _pQI  |U HlE4|L=(LY 3 . # G Q D 6 2 7 = @ = ; 7 8 = A > 7 7 D O 9 w  * i v > U  } j $  8 H`g:0Un 4fnk$@C1!>(z Jr&@"pe YOII}~.{z"g@-VJKKdi6Y!"fyk/(#6#%BgrbOulL_^< X!Zyp NN>:WE^R^6 M!pHW /1(Rv`uM9K[,i{W@9EoHUi #&}$aj d?^&k2 PpA&E;QF D + O } \ 4 P)I  ,8&% R     u  _d  h / h R R  r;^QuAA DknF0 Mab< C E   @ g  7 ?IMJjDws<g\ oOW&{j  K Z h $  bj\$s>TyG)vCY((Qvh[~q]n!3HLGbXRkn!PpBcD"+cqH=ZW GJ;9Da~m : &JxVQ4N5Vt]8>x0+U[X`{x.3@lWq2@'jH ARV?"Dm#)(2lRA+f\Qin0%aLg.E~Zs`jZj.-p&[q{F%b2[G\xY_TItcHo'"Z~p6EQZCm~IV& 3)  g \ q  5  y * W  [  D c I 5 . 1 @j1'CuM05Tk  F5 d ^/R p oyj62R'q\i#@D 7LB+ @`Yy/ * B o b _ b '  1} o-[QOy%h|M-Z~J10bNc;vzNlJ"q+>1z[vQ!~n~'= ]^i61}Kw`Nnpb x/1lYd"4JT?),^ax?6!EO8:TqMFeCfsv C!GD-7m&*P!j3Mg~twX,,=w\fH_i@5X@D:n  F }u {a 5.9_;&2 jeWHRj> }% D3>` viy<G*BGV9?E$ !6GQVN.d@^/R1 8SB?{k2C~LTI'#6p|~n?=R  \Sn  L"R   N ' 0 % {Fn 6LCe8$ ob: {rezM/K$#[pYVNDPvw4Ag|4eWMd^r/" 0 Y   KHi{"5Yy\*LIu&6@CoT# %( y}*jc8,>  dI  E0l^/`);Lo"vmCGt[X6S^9m?,pQr`zcNGvU6< q9-2>=Ss~pIk8wYv +KgMOY[ip[pZr13*"g-  ( c!g+XT^>:t8mf;[c NX?l .vh[&w]MG{nm@0D_Ru =N  o / x n > > 5 &  ($N~UU9)gNp KA8f'` .vj<0{`B 1>+0z@>@8kZjA7 ~j 'f r R c 7 Rc8-\7,3`@Jn0X6E-n  @G 9 c  C e m | 4 !i  " mqC7.nRqX!F O 6 ,    Td UA3(uFlP2}`b!r Oq,.e/ Q 5 } = b mgFd #[)DbB:EG 28I[h!*]KFd8silw3.^ Y3 >2s * W % c   z   / g v @ Q ,X#('~a"`zm m\c}C_UfeCFmY]Km[&^Up f@uD"j87==8 t@c%w - A q Z 7 MToO[TC^uDi%j PFuDI@Gdrg#Y_>Y, k'VO|x@<TUa xL cWy7?)[3&]l7A]?AGd6l4@pLQzt&_tu3k6JZf3#hspltzLX]=*d{tV3E*vZ7)1a< ! #e>079qPt-m|hM `'ZbQHXn5{< ^u [#DB8Rt\vI)3@6959m&?wg5\\3z 1+{ A2,'Wx\j!?, dy*wo6I$,\ 2 \)TDg < T _   @  (  \ 0dk / u@QXQq WN6{ - ) I  E Z  ) \`TPs u  A 0 .:gT) @X!  7]  _r< x E,U ^ qdV*, hJ]#nNu'*-yLzG_(^Ab`"wnSk^G[+.L>FOP++E//vX $jw3uOs re:dE33>ptVjr[p,)2Ky $3'4+,$rg]2g ]Q4 +.o kPW%u J r g _  m 4 r b 1  & S i L  H   " g m "  b J#0 PV/{UZ ?UlNq')?4,1#LIO-tsTh#q|N0A1eXsS5@^\@"6_Xq- y{%fCdIZK(vX ;G!$Td K P C : 7 9 > B > 1 - P ! y ; V O 5-M=Y$_'+1mVlFr A1 s\; T E g K 5 N [ + XB<"KO*_ Nk -)y+(iQWa@B ok:,ixFN?@j@A,&V^&P57_%DIRu#&E~3mE  hF8?7>#^\WR{ Q dE*2a>[rs y} `MoybOR`noVb\V4z *|rd$4DBt%<,l]@B=- Uvt~;e(Nf?I3< )  i   h X , !  J   J0`ebD _9?=!!44)Jrj 6Q/0"^3wy=wrOisz:xzO<Q,[A66 + 1 2  E z   > h * 2 Q$ K)"( xA-Ze= p.eo.!W 2QP  pF`0O P ]V  |bv (y{K~S4TE-.=*T[v~qrR|qLHy'`$V]S""/]hsAtzIsnE]]$t9qBd;jj\DGcpYJwXpMz&.b>*$B8[kZ5*JeY56x0vcsL|?#*38W7SXZS8#Vt[8^~Z,HNi7 M9@+=.  (   %  & dtwE _:Cg\nmz@U-d$d}y"D!{\g;,8F8nq8|,]xiXL kd".QZ|rYUY  o  w  ' u v  w  1 j h = |c7, ' fyY*+@[k   E n  * + h z  [{ 3 >k*HE(l AI36@-CzeuZ~o;-u .8^lJ-}Ss V2 M % 2vr2VeW4 G h U K @*@\vcdjsdkCR)v_(U2"xm"3Q ! R 8 s ' S  J ) A e8I>o6)|5"UnfVG.?UNFck9>6}9J7fxs{|'p)AV,Q{6e'Q>2bj% (s%v,dY&<+$95! JH |M.dApU-Gj!GDmx.>ilw!{PJaSI5$,Xx U' &JZWN@*/@Z B#g&.Z7C pxn]KegC*z"YzT257~9fy=mP^l/$ }%]M  e8?^r\]HS4=k|hz- 0a F M H%ZbVi7FB>}]{S (9\YX ?6hW7 6uZ-i(thS}J+QW713Qe2?Rzd21T_QC8, >K0>kgl1D3@E<%[O`7[[FMS]D. dBBCc` 'on4/T3H#"hA[VvrbC m>'.}h ?Tsg=% - g . A&%l xj T  (  ~ ] = 2o: b+r% wAkz}G\>"|&8nnz~De@RQLW v2NJ4^wPJ?)yeKv<W2jPxYGz|d~s{=~3{iuryQOz}d=D0]/I|{*H9<31#|m.BRhm!v&|IchTN<<J-lfS/RnNA`C^)akE_voUR>]}i X k l  R F ^ J - / B E 5 . C W G  @ ~ j bj_cg6 <7oJ\8lLI\B3eFsR/+/1XEdGJi^$96 l,XB\d Mn\`ZWl2ZRw Q27rxiF(;h4\m&!$"ZZB}^VE }L*."p$GIvdK DYzuvGQgxy_bI+68tvyriDRiUYo*Qmwg Vr&qzKQ Z\%} aP&_]ZxF9, +}ifHOep|,o+ZV6w4@jWj  n _ : u s 6 8q7WR<}fL.m mbz3hC `Z17s|, LLgQ(C~]rV&jr#@.&0-!RjMxIO64O_9/=Tvk$p i oook} V 3 }  TwGBW4)L5 !Dt  C Q ~  tB 7 9o~sll`FdEV#=xXCkHU ,<,U34P8.%  #KA#N!'k9)Yo/^' %%Y u$%kC"C7 yrViLd f^  s% d $ 8  T .z Y5O60RC?][*m\ d u  B R q gh: )Q'-Qmc8SJr'CmE>MM9:mit\<wT%330BL4.UXDBD7#(Nn[H$#-7<7(#@o\b^?Z |3k@660P } B ^ L_C~> I , 5  [ -=&);GLvC ;%_s*\[3W < c/ Q \   g j")'Kz!22 hqXr;nP[q l h , (R,q,Z dYNDDb*/w_9=Ul=dB<1'!i3by5f }4[kuon) NKCK5s;HnO7-}p=Mrf^$M[MtwALR!Yr[vSF<-2_?heh>V"-Q")7q1'Hfj>ufiwVC(}-24sED*8}= /&]i]R>+@wm@mK3^I:f$gE_G.% rJQd*h5{WY.(V*k!5*LYt$+}  @ o 1 ?^Z4!uTP, < v7g(Y  <?bTn  uisnx|GS`m5}^wg@/(Fb |2   YJQ[#T+j$K=% {lnLde(`h+Y`w0>ZA =);-Ib->[J  Z8}0"(E=*,0,oq3"G>^ (kz.> (*^p{wOCnIJ 1 ~HA=^Q" L:q9?5v[|8<VLmiS0$y6pOe}f@E53ENqs\MxJ@K 15T |\2 '\4CK4lKS<IpgS'$,^UQ9N  a :   8 ? U a#"  e ! t 1   LH0!<?|wVEt!m1-EAg!=xc4.OS}=xq91ZO%Zl*A 7-Ur1 0 lP V 4 4 bv3a$x]3 _X6,cfRb` 3 @8 c :V`8)]wXR/:{/W*6Gm+?UlM:8x[!t2MFx>kYC +QEgzvslk?3V1qP\L/?fHA+hQP_*dRp& 4N$HYnPD] _ G xu <  ' F j `* irn8 6 L ,-L`YV=;1QlyE1G.u'd@f }~8'8S: E*apS;Ss|kYUby[Z%*([2f :fpZx%ECvd > 47M;_ X M$LJ0]ZeR2>MGM\JLeU<# k6dts. &9 SxbgV<]Y5T3,l{zaB| :\A(@C\AK~ 7P 7){G= ?DN &Y@&B/cL&O&Zt"rbl*SR`.|\97uK?(a0k l ? K : . $  $iN~!,US6`M@I@kK>7,$+=NE!r:>,tcB<g=OmG_N,.a ]|}k TS$m`mTCoiUk~#G6>9zXWM'OI c | H W co) JkRxYW[BQ+b.FdR0`xWLj8191 =h~F}NJT$7^br{>@~ \Jx3-StBew%#;[1k"t#uSr:ac$u - c {  ~ M G k d ~ H $#(A.d{Z ; w % 9 e & ( G6 ^ Y r|#DnN]D n R 8 / Y 3  E n 0Q7ltQ9q7XVb>9V'#O%#" *cAmaU )/eVQ*Uu_(we0:R a 22NE R!C 3c23BH"@$ m    U a V^;(oFk7V=qg9Cx-`?   ) e t  ! d ? D ] J  X   e |z7!:V*  z   3 @^&qwtHTU'ig4c]OGU{X>]Kq~aER}^93|eG`O {T+}Y|s:>;YhOtZ0Yi'1Dddg 'zkYYv-i )  j : y c5xRE{|ay#daQW(,L7pog]-#g/6UFdjh>_UwWKMicD_+~*}Zf/9n6 $_||eNw,nzyd n(Z w  ( ;  v'Hnb {U67d]?"d2<TTsYz-[ ]!@E<#!|DTih? R7P,{K7:a8(`G{ fP=j ?_ .hXzf!6T+/1-hL=2X)F& f n `  [ p R A  b j )g.` I-; 0 9 Q , *XWw:gR1}BdtO\<  Wlz 9 D~gVrnsE i n # 1  6   , *   T H[yq-bFe_OUv!{L(<.PhhmT-B%h:c I7V$3R4_ S?_oeC{0l^'KV$iJ0IT     6 5 5 0s.i(--FVgswF//>5~AwryjP~N- w5F-eL$vE(-p-nz4-=ILE<9E]a)w'NKeHr0b'@ Xj tB<{vHIMmYT&PaU*h7wrV|j     ,"eS}sRW\G6_El !v1# txuOm(}jdNVMR\R;2HkoD7_{qbo]:.6GGUX9q[:8B'wV! wCBK0 (_v]mz"jpwuL S 0 Z R ? G L "  e + Y @ i ) |$ T  qU# "8lAmd* $   9 & Q - O .hC!<* &vB*s m.WOj5j:.pJY' c;E2C=!+le[{0QYU~ HCXHeEE>zOmbLJ V O  d /    l 1 K5{OT<=&Zk8f{h`><1s'5m9s0I,f1\eQsNHBzYheB1k y G  q F   @ \ P 5 * 3 ? ? ? S w a  RS.i3^p!%iboG* Qej : $  n  VlM|h^TB`?}Gjga0}hM/ [2Y4Q &:{[5"q8',K@n Mras#Yojrqhlv3$;I88s~3h}0;>H 3@fT$N.gl)/zP!0(9   )  + (  6 _ 8 ^ \ 7   Y o H cl a _ V,7D6a%V/Z"J.i+%RZ-y}JTrFSxU/_DI:/7[Ha 9k[G% 23/ne[A[2twA[j$Q?G@o dY0giCe&{}N&X:|6nR5(*Im`@soxy|ah nOp/wshj &}x'sh@,eX7$,~a" aQcTi n<) 8  , @ , % ] h o 9 l  W ^ !  1 O M ; > L 2  a  = 0 ] v D R  Wj@7q"GJ <{^" L[> 8o|86 c@  mfsB)O(GH@I[S+8IGCUXOYp:Xv`Rx`D:-Qp)"=`3  G(?QE>`l W,  2  A o   r & 1 X  h ]I39}2;eFF2V,nz9B>  F I   y.F<CIbM:8:,%D|   ~ E O 4 8< u8= D!6y])H  FW.* =G, ZD0~$XBW!,N}}v('\A" 4 i {  ) = =   f4Zuz q t~O`=Zho-mhlGFf *.0A73xNs^hgXRe|x[GUmVTM GxIkz7dirTw l4[N.{2A9'E-v(JT>c76N)[mDs<`}YYbcz`>gvudUP@Q{Jnx)TH_ZB_N2WN }(agYn,}Qn68KVcUasb5Lnj'3+ak h \ > 8 . ! + P h O  2 m r 6  T i  > # .  [ +! %} v9XTAPL{# TX}F(U"/|tEvFCW5!Wa OvM7A' ey%$S]@N-$v)(T ! &R BBkybEFcx/rR IDa <YIF3fi[7( nm%~Hm.i/8Fv)c, #0W(tb-SR#RAlJS?$#g6tWP  jtN  XKHZW` j owOp@n?M kgLvY}$z`1(L1OFH84vaP#j9y-OZ<@bF84yl 2CJB*@2Xc`QT$nQALJdF'[}CDycC[TLrtoXVBA~_^ck|i*"tcy+<,Qs=5IQC4>W]<'6}%K_l>74'<_^9 8 E-2- K$_[O^ P6}M6w.`uV G 5 f * Y  q {  ~Scn^ L EI "M*f{XW(%/nc._f-,rM2#O^x$6K]`- 8UuDKp5t"y3/!`U*8 yEN#a{22qY J`s{}~}kNP9onHFcN@Y1}1 :y 3ui:Obm )SlW*=%N_U;.8MWJ72BVU@.9XdA4 b9P9R]p^~");+a$ <  M A " H 2 V ; - N k A l  Tpa~.j  T4-91 v|K] V y W ( V y T > 1  e 1|EiB+SIWPk!s j<+*O!Sus6cHZ "0d\6)FaG!#)hGLm$O^ ,'sLbDX%tmv6! CJ]b,<_X/u. b~N ju< c),u!$F{  w} NZ 2t 3dl? : H6]u'  & *  T!K%D3fMHIP *?Uam"~'VX8*H]Fp  5  G H _9^ 2  wYP[MQ 7 -t_ q,DpQ*^i5$.yL7@!#S&g[#4##edN6; {.5`_n,KpO@^2_m( '":CE6>]i@kb*DO]>W;F{6k lupCt,0sj\lwecvj> xk,+%6e U I ] A x $   i _ ' \   550T_=^rkXG WQ}e~*q> `g A`IIx@=!-ckxuHW[^ k&yB[!j?T!3/sMsTD/G* t $u\%@ c6   u O  +*z y H  % ? E F  ~ { z T ?  { l 3 2 ) ] [ " U:o8~vIXD8ukhz?sTGlp]fQ92^7K4 8;!m C5[aJV^&OW~l-Yx]U_#V+P )6hu(Ji=iqM35EMH?;@JMF;7DZ^; UW;wbwX1Wa5@xk$2sD~~}'#jFn' a'gfsS= bqa:TOCOolgMC:gvswkYbll=Ld\ C'c| +>,>v'JZ| hkyN/8IA/D~+ub*228"7%Ab@PL$ .  Q & X ~ X  1 7YsS !  5h~N ! M = h { 1 g   =}aV>0zw ] acTeLZ yR>|  P /  4 p s (  c !+ tZ1( |Z^!m*fgqt 8s Z_,1|,Um.> T`9y:qaXcdz"S$7Yzx$(`q:efbY?;u8FMiqg}\(pK#K fur/p:d]Uzy\'KhTge7:A;F 41KUE $$5%c^VcbX 4 j864&.dvk@O4BR|.> ; R9(6T1p: Ws OI( E H q Y 5 ( 0 ; @ E I B / 0 Y o I <  )tT523@tI!$>a$chtFG[0{  r  U yYF_ERDT\.>qxgRReytUnL>I8$B}Jo. cZi'xM&"@`~kUqRYivtdx$ P]ma-r%x za.9FftC}C>HEPTyo_B 's6iL&8 [Xy(2N4uv9Miz 4]"ODWAY 6uEoE8v+b&)rbtkA N7_G6Hrr@# P Zv( E ^ bbFLbJ`QBCZFz,5['  21I#Lj^KttVB$BAP[k{5&ba PG9+LI -eA`@ >omtB:}# \Mr- ot B %1M;KYLu!"3F  C 4 B   x k;5#V5^NKzJ5]e1.Zm{KGPsAASvN5Na4+L!*ozIPVFW^DQP@nn0$Fd)e,. p n g  6 1S3$ *  0 Q  + : D$v"K<_}6 .W=3n E|KbAE st!f{~ /.J$P=* ~hYC3kam7FmQ$Bgi [LaN .d!_$? U  j  K` \rA _& t K  $1(H=(` s   ,  i9s{KZS (l pI  ck` o e   W 6 l ! "=*/M /I{y*`H#jf~lB_G $i bM Cl[/-4-S mgPco^4<wmcVQ6x$  J U v 8 m `  oM7R# ^ > b E N.BF4,6<;KobXnSy#c25(qj&4]Gp@C815{(bqHuWxky,HMM ?v{mwvHNcx{`=ZNBvDG>:>>:892 " Rd-N. |k!A.kZ%8-1Rb^VWbfYGPzZpA0vw7<_JDwTqib|OiRF8/v1,&_~O7%0[UT~IjU40JS:&e K7Rva>832C[]B(/PSzu@&hp&>>'v c aUlsz|%,m9F7[&GZo~ZF_5S,L81 {& 16*<kC`L,w HPM9 v8Ag |\ z{b niH0(z~byRy*%IUG36{G/BjHxy: "~@Xmm6-_qD^@KLxE%|QqUk UZ'05C9u@:"s%jm&?G#PS Ozc.8ZV@ZSx%,lsF)>KbTS >2=dqGOnR9[,cI:`F0M"dx&-DnB_p i %  @  n|s}z? #8 %MrDB0V KP9Q:*I{p$rcrRYJa4-Gb 'p Lns;] !E]\@g6  hf 8 - $-3 }y"4iv`P2)>?-[M 1 . =mci7;.7Z YXbF*"$Q\TLAYe0&Lr'%)U$,D tIDRR#?H_[R <sKGP v[: _#(x2IPq!F@Q_1x{UEZ&EZGsYZ|> : ,c [>{jxP6g3)',2+PM|BC{[5YP]Z:#T/K:ph:{DI7w{(-,LI}5aw{jx 7><&AH?<@?4/<ML5#.IUA.9>MqXbmZ6jX[v~hTXdWKDH (FEsQBu\q_iwxtv}wcF3252'*EaFCZ$@l_"Hnb.X+dRb^)o!P+ `yxG]j? _&zVrn<;7|o( /?9.B4zu8FDo/`K} -D?: > * h ]" z 3E6A5 \A  Y SY")wL  ]"  )  h , eso A n 9 E L   ! 6 'e V' 00aP:xC?1^:,qsli;3-w XX 3jIuL3K 2"Gzi`.ciVu)I5#^Pjv<|Kna|rmGAF>31m=hy.1@  T k A ( p S V 6 Z[h 5, ~R`/P[eso W r:rns~_mxdA*gL{m <"D9su::`L\]wqp+(`AT2_BmPov $ b { , e WWAtO-P o#g5 . ( H D + 5  $N D  : v J b9P2fICwFy  & 0j1%!V}u K h+  3 -Z{v;Xf ?C7 O P  8N _ANxfCx'9zi+O0Z$:B7&N M(K ?zwF7\R3Q6 %:"ULnLp" Jyz  k}RQo y*^-VA@A%*g}SUKx .&*E@#{LU  pZ t{\D@OMK+.n;r Io6M ,SL 9!_&\`GX'k@Zflny ! C d ! 6 "  p x D 4 P 6  JYq  E c : c $by>;  a ( <=j1ipp&BYCDV4;S',t:ZM=*,+->tz 5$F$( CHc | 5`CG}<J:3h6 5 L a l u ' +  S N 7 1 #}TN}v/eU7~j5(TjTt}SQ_~t7,&ozt&VP)=7+MSIL+=t$~s {4,XiN&B{ F;tD*UWW^(#t>1iz"0 z 0!@zj y 1c1 jidYG8U@ RBW=cw * e k ; 5   Q y \ *  UX$&'+c)2fsKD]Q6)u!nPnet~+eit~"W h)-WYO 'oG-3+*V!tME)? %!b/$1 RmO/7<%J -N_.Nk8-B# q d < ; L =   V + E 6 6 O ] >  Q R BM bU :C 5!RTutt XRUWWa=Z0u<,yl?'@B-1`a:3K^'EV^ F*5WCo{HZ< '?iTEd|Q{!-u^ 7"jC z`CQR$RD@]w i :  $ N ? < P S 3   Z \ j = T a 0 {  q<uOR!*G9v .|t? -PaR+I]FQo[1 9^eF$'Om^,0rKm }| 1 }R+]zj{L|pkzOuI}k%1]# 6 n 7{n1$M\F**<IE;;A4 y M ! g _  7 M 9 < w x % 5 H B V L $  4 ^ ` ;  % E ; l  f o E  7 QX~=o>Xmic>@s \s)!s<J7  :NdSsy`MuNBz"xPSL1@2x#yEN~ 8^ $].1.s,; 3#`uKS{B,kb?ff0Bd*7.q%I6f 8 E N ] 3 x  j  x < " + : > @ H I 9 " " F g [  } R ` ` unaxHN -,={o!|eo*55 @ n '  s v O }AVXdrcKUd^BR~V txZV0H9/i{^*Jk>JIjo+!HU5DM# 3^6`I *l   9 [fd^M+?{-,KA fJ&}n@98z .dSG{x;#<@=2X#u+4}uT()Sn?.8k># lD0QE6 # & 0{FhHb/D[}hJ aH]7S6`8A[VF9jaGoQUaHc(pqWsLa|D:/1:#2E&83]lWw'KP0lyEIebO[]o:_tGR5 FB@4zSb%YA]>?g0b") DVJ7E]v %~H0@jNu;0cU|k'$v2v n %   h  N % P q ` N   ) % - n HJ &^XwN4JB9Abe|.'@+@7(vR~Q'Vre*1x&g@lZglbW^lreSTsc1&) 9_E-RsM+PmR+}=~x(oZ({ mm  F  ; ? x . 1g Pc uZdB>   w K   9 D = 7 3 4 A N K /   t m K   > S I ? B @  K   = X Q 8 + 2 = = ? X  %  ^ C  O:,ML 9Tjoi$<9 p9H79\ $z3g, !)%+9 >K1nA. &wD nW3r/K3?<5Fgj5okmi{]FOiAsm OvGw3W( dmI$ 1 m  9 H ( : BHz_py8* 20=^:q D/yhP(W$w  !A { yAI3$)]Y+:e|MQl+ *nNn85DJF@==H\e0W_qk&,iB@.!y66FdaM B-p"Jfps p K 7 P L   6 " 7 I q W  0  g ] KL t= SUT pj:Z74 yn#/).SCBKg}RGpzFx6]"17FQe  dCm`>7E)'8,jw|T] ?Jur+ExK`+CflUQCT@G% O   S L 9 e ?hR78B2,y> O { X 9  Y  !sC[yBcN8/ ` c$C*&^o#-<N_|i Wk"? 7/61C"{ T!wngOP6aB=E @fD 'Y:O'_1oloX1n E-{e n L I g R # " _ 7 A A , " : _ b 1 \ g  m g A 9 F 7  f + ,NrJb>Xc.~eVuH  ^qOwoynLJ5@ C[N"|&h!1 la 7 3 u \_]4ro C q  i  Kt5?< =7w#% wfv& jU< k r  q S m \D5euYC_m=U7)rUted pFGIh[a  E0 U]%o*/Q. pp!A[ k <+i~aL Z JI5 8T&1daFz& |S} ?dAml5 C : ?YJCKB6  K j5gf T ~ |ct"UoO1gYv'Nt!'S)hQFsS-epa7>2_VfA t v r F Y R D  )  = z Btxm{=OFT0{i:?J[C,#?7^wc]J4# lk`&tj8?buno_; < bEef@8<,G\A%`0s0wnq  0 } ' _l+~Fm(v pIW0L'8 yJBHWzG_5I/G)PJ#:(RjC-lP.&>J0{diwSFH;$*Uv\ 9tt=1Q3 X v|ctMrN bC8@10hiT-_ -L }FQt0))#r<LaF;x65 !zBU Otp(YIz:zE%IYJ!Z=IR}: ;i O*@yXW^/UPG f = Z   J ^ -  W#=4r?92' K5d(Z]MuYR_t'q3H>K`?=J6c5V YW )r " r 1 . B 8   i _ @  z{   ;  VmO*{}6XO$b{qZCe={@Vk]PCxrn !(.!"2f0qZxo z4 Hn~I=C{4J=",sj_>ozzK!,d|3Q0-m9]X{>4 E @ = ] i : T 1 yx* x c V  F (  ~ E B  +nQ1`H1B R,ZOB|lI|l-tj$#cp3T8|~G5Xl|UL06$_e>FjnRoVTa*D#{_/r"7[zg-BD(  ryi,>ayZFNOv,@`EGJ%Q;Up p 9 }  f A1Dur$}{< ^   . / 9 R Z = ! 0 K  " A Te `  I+SjkHsy),~ 5 \ )   N Z qdiieL=L$SA}F*qf t[ Q&P%Iux5C\2mp5bpWf?J 2  | b , -  r { P D    #  ce@e85ocZE;=! |QbqiS \ Y,/G{8hTXqN3?P@#2uqSVkrhZV\q 2@cr+8OMr]mo@\+ I--#wr8l  > % ` /   t r/*j?(I5[nU.4Qz18 jOV~Pqo)B429K3l;eU Bnk[xbWYUk=$1~ mx,=zaFupH\  #Of[a!)VR,$'3KY  c4mV>; '  V \ 1 C Q W iNOe9:{' F>^w$^LI# 6  6 F 9 - 8 I I > ; 3 ] ; f E P  [  njN"u +_eAO& b _ 8 , H P = 3 K Y  U&Ha&3j|Z'{A gRgH0h?%M#z'w lzFl #F%>> &>"z;6M.x/4Z'  Z "\#>{5*QbIf~nu|?,Nvx^U`FL'Rd} 7 6*F p iNwPh0~M5fgPQ5K44*-ai+SvFiZ`L ( { wvRo/l4,xo^#SvyyKj\*E.o90M>!^WHY2:4]b!{u }  |  )v 9T5G*D>S4Q_TF(,"gu%wVn H c N  ? vYm=R@\(}_Ot@  ` =ih&   [7\ yo0 $H  ) a L ) J X 5 b4F{n$\j% O5I<;K}|N h3^-,(o7~3 x. U53CUA?W^*DG2f<pi^t U6x<0Ws`<4FL>QMv)hG(x8Y]  w z}([3 A U sul]a&)JK G%"!X;  M j >  f /s}Ls0o2`pVA!]T+BiIU9Yyd7@s64P4 8l2'2(6ymrXeSr ewp,#lKY5Zi&l`"tq1+w< 8 ' 4 U Z 7   P | _ Gv& C2Z>O(V{ 0r|$R/\a;#'66.8UX  2$x!/D}aqq3S.<BU_ bb1[=8\vweIAS XE}C! 2 R y  C + : A < 7 7 7 ; K [ F VtV:m ql\!`t2<c6?sU 9N:JUG+,Uz_Cb^}K\|6"xk  j { l al5F. bns f ZqW[* . w <  m t bm4 o  nzP[_ttF%=X\>+[|WSYWLs2J)H! ?3)*  Cv \dR>*z}~PxcmE% S )- 4^DU#gxB@# ,J?l 4[Cp~"~o3"o | ` 5 b C t r 9 < "V^  xx{  buJ^< ; 5 F U G '  6 ^ c 6 4%P~YQgKwQc]xuoST[|A5 )'*UAPK;6AD?Hjs1!kV=Nr8 T+\;#*3-#OM2J{42vZH<6.=EisZbsn mH% K k UEWGLWL1'Bfi>k@VBJkD=0_    0 Zl x } 0  o [ 7"27+2bI ] 1 X  x t   i P v } 4 :pMjp5P;3b"$ \ WKQ`rT:)QgW.;x-i,eg8 N}PW2y eC=,I~S.bDqM:KTF46EE34`@D@Nw wLk^jz?8~8-g?[Q:%#2jzI`UkUff#7#-j]@$P mon `}`CB4E0 6.-e=?OE?76[i*^fO[!Z2?Ux ' !bb)fC*aknoOP`G>W < [ O q  5 *  FA*gY *Xs*Uk{w\Ql?$Ue07^<a;6ux;2* :~&>2-a$S9IYYD} 1rid !LRIR~ e1D3X*O~WV '/ v%>E~@Z ? y /{Cr%n.irWtj rI H h o / c . * ` 1 u  g 9 %Oo 2#  TC$  'n&U_ qyqY\b"6jQGY>72 % !/"x]C'p0=*:Gx{CZyZnYwaYCV=a:V+'9Ml|'&zwMDN%)8$H7|"llwYCEj'5 +N-0/:z6%IUB} u " _ 5 u ` * r y  3 * ( S v V / 1 j  7 : -KS: V9 $ O h $ " /Tp,'M=SsPq&" (c+0g|B5=$RGh.fNNQOWywcb cyL}O=(/]'9ff/k Wg~n+NxE3*@jaKRE"4 EQhw}=5E_nRQY7pI)IPW fPapV. q*S'?,]S ` hMh0]Spx7q$jm r {  K j Z- ?fgq LT<k@H'>z<'ICv+QU=$ou`'XX&2c765.-z>F'!Q&gN/l7eZdo&q~iC@*m^[ p'(@E!oLk1%v7Tg8xgz]dU$t>:n4GI;Q6 EHM*TK-+?I<)}koIU4b`XuilSCD  @X}I.kQ]l+XHM sh {~-( B_1MiO'2bo;j~ ^  3 ^ X < 8 E  U ' &p |  c~ [kt W+PzG#_q[lJ*%tyC$F7S M  E g L / J j * o82Iq/!4xu9Yx5TzV6 W)a)l:1Yf"3&a7P&G(o Px12|vV^ILbFZ$HXX<\! #@/.N+@*ih =[zjU@"WQ.[  ?B;Iq |Hk15nx TCoZ^mLX '   G @ ? x # u$K, (I3* Vj(j/bVB+W7uQ'ZF!O?Z+-3t}+013Kf'%z"AiWCwM$ uW`il_{6eH.3:/!*=?8i f%gncVU B 2 } G G D M|%w `8y`^Bz{ U  hm9tLY&/C;3Mtf $M|{CHk~Rs&|f[cM @vSTGDB  /8x~OjVpb*Z0+QxeWQlj  P''j^\:b-EzfE8B3rHPweD6'"x`CzC_#/J=2QF-[9YUI4t-%O;B2tT3^aFreL{eFM{(B]Lh0z KD ) ;W@O 9R>~|.uo r*^)e+,'D"Pyryu00KDJ, /(|  C@2K94?IZ WjSSO%lmg{!Lj_kK'& PJ W J j B  # j<St0zAql=| L/[YqK]v(6g~lH:O}xa_"nQ#?^_E,CcJfZ1WX@5;^GUm8#2-#25kNl=}-ns0@s2 E:#Vs..kaFIV5+}NTn0Q67RMtAdpn`TI[XI;eQX H PcdqS.2z "D!Jq l$O+7!x  ? 6 0   (<rH8\ :-ki7rz@K;3yFfF.faD9?B=>NYM.$Cmn5vx[6`n4C 3dR!L<8UiPGB~?WR@y+ QZ`3Ip)yukX0  m s N  v = G Hx tMAO/TKpX QvpJZl1 f 8j. *- >  &   k  Q U * % , > L H 1 % D { a q uj"g#X=C%IC*xY,-` f 5 %eYBkEzf5kjG:;9 kl+5tBX$& +Wd(;Q%%r; 3kTq4<`LXX1BXcx@    nMCs#m[-9 $  s ~ o 2 / :$uy 7 3 '   !\OPm* ; \ r L X)TKM;nI  4 g n W Y q  H   }jldw\j>\~D 0)aU) J 70\rsVic*]wP Uw(p6iZ+q!9uGh%`7:\J9HthWc^ Pd[HB6t~scMg< xBUr.(GG"){Fn+YuQ !&{P4 Tr5yy.B>e/ ]f  |$ z $ ; _ }~ Z  4 E }z R # | h { i n . + #]6kzdMQa`NR7& L$ h j&^mST8p P  ! 8 ~ (easj< Fm{sj[$#KD.I45m(G_Ho=oK|^DrP)}z(i02Z m14 PNPl`tj[N& Z ?TQMJ=7bJp r|\YXd#U@~3SC@&W9@ZT68Eq2 3.7:}TS{ $ s r O N w r \   {'k;'Xwgy5 a ')>  k Z E 1F/ OsX')k8 lQ?B 0,3L g#=,`&"? Bao/?]&0%t}dcLC=v }|w0HG"?0\T&,=N=0xNzFV q 1 +?.Sk>?k~Pz<ED4hr]SJ>Hsu^w2]Kf@98Q=-Il_ 3uC %6iFG"4j[(w;MKISR0 "e TE'$+eM4gg,*@1I/xyp(-FG)$Y+nG7N`D})VI@8hY9 ! 1 W R LH2sH^q3"2 ( F @l o  `T  @J/?sp \ f X z  =s%+G*Vz/f &~ mS/ &@eKd/-.)uC/fZ@ro:#[yX= 2E 2fcC1;G@7U'stG&1IE2d?.W S$:-' {XgX`8-cskG&YmS72@PQB34Nrx{reqe# ,G;]k&})~WJ>d** xU@/*sxo f$c{ 3 r G # ` V w Vi (aS0>Xk:`r8*{!k7+4Dy Y~b*~5;3$OP%dROh~^S;U/4 -Gg6:-l  y R =|GLsX  &G|U I,+]dQ$H s2 " =n$l\k=V $_|v2ZT?ul39[L&3r\o!(CA=c~z{)wo3v;gdd`B$ )2xDS F_ 57 &Qg!*=Bh0E3 @u=|!fU 1 njneY_LH32]F^s/WQJ#J*qXAe_ HIRbz:x  Jf?az<=5I.{/LhPTLq\z|q 0=&53fHJ V4Ff ` V [ _ H , zT UK oIb.1h/'r +.K/H` a  9177$o4J'<(@9gO=>4Ml1%o}4;DXQ\T]UQ( 6cu;Dpa4 `C|xOda .    [ IrA4[cFWL 3betaD [Y7\'zK,CH:e  ?   1A L  # 7 n N CF"2]aQ..9h|bFhvO@nlI<:eTm^rtVb]>mF3pI3B3 Y8d10;Z^}|}3M >SpvH=Bnx"  aaq^4\tpPO8yB=T 0'm ,6(-S[ _H%K^jD{c^.2al4w[,uS]ch+ @bwOp@Q`I >:/B9"6|Ho ,J!V  I)|8(E8lB}c~H <~oY}4 1 9  = q/WCsM/Q|g/D|XTk@xMp!$rd~\md+ xz>gJ4r45{,0#D3H5-]oC4S? zI7 <G;8lFSEUmhVdY{  v52S V p Z , Q x s [ H 0    _v6 P L JT} 6 Dy}nv|R CT7TOC?9""X'ZvHnSdq$0(~ML>/,Nz|c /[E7i+~` cuI EK 6(rJKl3 ) KhKz 4] =1/NaG ;yz5 33 +-!!s"6%l!mGV_ANL l > J i  O MJ*Rv6&l8ty[nN E9L:>4XFB{6QN=@@B[\   _^#O'=g)pW9\cQUTRzz"DY f 0FHh_"?^SV]U) _UJ rU_L \ ~ MI; d 2 V E I    ~7(0_+w~(\+L9** }  Tk C#:[\>lg(D& ~rPZY h A ~ 6 d52AvKkgHQ:?MCN4BUj&FZ7Lg$`}]2,Pd-o2/vx;' 6 O&s^H^K  { { _ 0 x~t5QHUCa!&iLA:gXv  n!np@=F b3V]xQBceG<"P- 5w^(uJ;'?} Y E p I + l .PCds dT@k;{ETlOWw*"7t a}md ] s2s]#S+Sy ~asE}2Msz '1'gA"HFejvgdh)"TJ 8   n V 7  `  C j&o8T >/&HxtO r u < Q [vvn"c\ 9 ( . :  &  I ELCQ Z[  PJ 3 \  #N:[COGZPCFH,* ~6<="~n7A6D,hc$&(E]SQ/>1+ 0sl*vNEnMl R\Po}5H>GoAo [F{8L'"|3&:+-].7SIl'.Z ]}'Iz".P+')p m wFd^6$mY&$ri;^hoT<DTWSC+'j~=4Q`Zn&Z=IbKoStqf&.RSn:eQ@oK GjMBKfV=,2L_H^Wl)l[j$$c7.  } u L.62&/RfI5X T L"">PF48J7#y'+Y%m. .5mLi `Q8ryU@"kfL5s|)2l^GNT.,(0cb u`SIAGRitfHpp6Tk3M~!~&lI}wE29CDFKKA>HGyVL881ezNJgELgb"e 6 X P T Q V YSa9-  WUC vB  !69>%/7 L N2 B n N 9 l g ) Y V?YJ'($.@[y *~G] QM5 h?2;N\Q00y`p D'  :o N_I}nvJ>V|ZUZ9dV-ZqjVFMow9W    \ I Z  U* 5 lzm"`eA ;7p{rq+zhqOMD>vf\Rm,)wZ_\Nj>HYA'dgE|m6 = Im/$ 4 m4 ? / ,  N \  =  K V 6.k}f|#]0U GrCK 8 b "   8 hwCWdj{"&G, )XIw>sRe+`bKK_w: ?v#[Zw4MqC/[! ?t y L%o4kTF!\le q 2 X  GLJ';f|]m@%=,w%iYJHW.5Lwj =8 A>_ =DG L9O5=\R5b/pu=zvI]t=T%uPSb]w;+f Q$mD$lH_e{40^W=~Yg((nceV %:#d^^<*=@%g\Sv (   O I 7 W K `  I9-oZcT*:}~ ~fw] @XU !%Tc|yZ}Er y,sa>D]$mi[hxa/%hLP`pYRb<2CLu  K2 VA & nLCiR 95 h\X?y ; F > W &6a% d1OXK`a@(;`jRGYEg!Bt1r..\17>k9m?TtL_&4`QndUk )N4H20~gS=/ dSppx.Mn'PePTN|}o bzC |. `m M S | R  : =   d K9A9 6'\(c a <WarUP pp a1 4. l e xS 'WxV  ; ; w  a~9=@F&D#_}( i Z I N V + ]iwd 3V_ ^^] .A#8w9ZTG *\%zL]2#B[j-p xh{$<; 9 L^ E l B|:l~Ympe=VSm].0E6u*  Cu R  2   s  *K8a,kyz \;[N^VRlAP=:w@I h R a  h ? 3 " / w 9  :S?woIUs+>pM}Z@5GJTz4w]xlsbAjovyy]yy6RS)"w=[rVe y9@\XP@xMNZUUL-JG19G[E \j9]tS"?|;6QkZ6)8NSO_>Y/ 08mrt%FV lmhQRe24 '\}$ vp >C/X'Jc<*qm=31p4g`]w+"/ SUi 1'q b 2  *%wW/2IBV~XQ = % q 5  k  ^ <%N'#{JOi~|\57Qh\myU >XpG61Ar645U ?tz],! vwE+e"Ua0#Lg co-3T)U!8m'"!*u  7 be 1D"uQV3Y!/qird>=7&-^og{wO5e Qg} $OVZ|+HZv"OEn:UQ4l J . C   iM0khuSxo JG { D A  5 U P .' r *h%R3 |XH?7\TF&W}jRmF:C}{/}yGyq+' {b A2U_ Q f  D   S p   8 v ;  d  ~ - uoON)$A?[maN I0.  c  c  I Y 7 a x n <I k a VT_IiVeb:#TI  E:Qz~ z8*Qh$ao:3&OQG_F2g`bM<|Alh=tKZCJ B0Q*L|Q2'@wZdIW( =R0jz#Te ]Gu M+h|rX x<[Y2sPeeuHh]).'NH)$1'l;Bhjf}^ nb3.c oHK/+) c $g3 {'i>n ~vAH} 7  |OYxGb*2/ 4|D,j/VVpm# '  x`~ .  R  k t w X G   X T ~ - MuV]JGa.!21\k|S%G {9m`1-B:?=8n2#@YP92BTTC34E[bL+HkW4[o./osh1~O%1B7|5bb BtYz: F#B*2\0d>"<`Y-)_D+&05\Dd"|wFmot9'1(.6eEm }JwE@ ]qs]wlKL%(cCA,---d]M:JvJl.H0Uj H | r H   y O B  )8$?z{ VX s(z 9  F J % f  y X S f Y J j r U Mgy;/ bP: LNVIo YMAw/~ @vA}M~tzA:6QK,IKs s0[{U'&?4u7P[IqwFRM!av _(!b\| syW*gk*hDgRJ2#)*!5`69l >Z6RG?|dBf>:aW(5P!]1J*J@/95 ^g"c(X e'?KX)Id;q`_W =b\A%Qx @`;,- ?PNWdFQr ~D=}Vg$*n\P6F o % kA Q `9 ~+/1l>T" a V  8 P R 7 J  ` 0  v8&Ph(HU?$ 3X~*Y _ * . A)I05T+^cn~W*Da;*LFp;M!]x5BPARG#@P$>HY6uBd<& N)b}npAx1~uuNFVYT`e > o mesn @l?GPy`~[o*t}vg`R4 A 8$) yx_2IK{ _H+E/7StyPzd=s:3&d38}Nb?R %  a 9  f  \ : $ o t g%r4tB& g  @ r  ' G ,  , $ )!WkURwY i   z x I ~_/`2 ?aQ\-X Ov1*3; ?`3Z=| z|pOd1&^B   [ p  G . R#_z; z([ > oy"( 7|6 } >C$"Ok/6i*%9GTUSdROvlF,yE]8y 6)E{4V.>i2cKf`!l}#Skyi:x0Izn"9s$K/x=@v n+EC!*?WvC|o>mlsS/AW}F op);%!v&kU _JMGLP45VY;$f.5a $_U4oAFH$r5EV u *_ R c 5% # y]p  R"h-bS?k;4x_=9 1w q I ] w  }j1Fh.W:t|8fc:zz;_g5%:p!5RD(4h}@uW5+_LL3r UF|L<b^\ yI*K}qMG\swn`TJPw"{jN0 zdA\<Z]u1 - ] _ D + & " @ R 8 ! T f [ MU3M&v' b !>JIP Si,N} S~Kh]W, O}5HA 3HY -;YR#(n')?|t|e{_2wG`NS5'%m ~b '5(J/Lsf/4"2kuI656o|T[wP j3J9_D U u - } | <  F e V 1  * F S J 8 , ) , A x (`eE%!8PR6)\.P7x*x k|ErF}J }BG /+"(xIqh)R"gtM7woBZ*D!'[fN=:807a`D^^xw =  B   <ytS&wAz|wV?0  ~ U ! <   j d 6 " : { KYh{O "*waA?PmP^pn9)/BikF=l3:,aT XR3g4;k%`"aP8Jg1hjjy^ @.Y  @c{ b ?   e + n e Q  Oio\ZVD:k+[Vh6:b0td Ui6rSrE~}A4Ho$0WP_GwQ}=2m;eNh-PpE6Spf*|{&F5![iH$#F^R28s^nMnkr.FPn 0  ( 3 m @ L*Y#!<_uN he{*aMYqgQSjupryDVA_=Y/3" R9 2x$j%,[,X(`/4*-*N)0u$N *T tKT (# Dsm%V 86X>bn5>N+xxEy*9X28&Y564g0[npj T 0>%%$Dy&r <   0 E R K 1 $ C n 9 O f 0 n t  #zT\[z'AlILl C ' c 8 P . X Sn\4R,igokc_CE@[Pz2@XF/VU$*~X{8TxQ~U $">2ikPY@_e?z[ %!)bD\g+TYQI~ *+p[g S=|-=l]|}m6}Bx|EH*'V-QY_sP5RJ6d{p8IjBfrS ;gA  %/We8$d]DNtrAQ~ HPCPAXta3$F]BBja7_e%v? E!>:Opnzlp SP4 A q x WQu $  u |  9  t1@00QM6MC p s 4  ! P j N   4 ~ 1 | \ t{XHGQ F'v]L4?? |D(\gpR[*mOOxpl3^c]4 4 'AG -'6 f]5j LPQ}p Ct_H,`/(+NfB/}ydX}Z9Nc5 P>/eE0YIv_'MQ$>t^Qsy)lNr9BcVtT,^uzn"fXP4d|+>p`S=dMgCP:+fUk7r}>| : {tD!}y*{mlvD(/ jIj!$8sER.ocJ~ %# % 4 5 &  ]n(rC1!    _!DN0+@!$P<KjM(M%, 1=yC@ui_j$,6NUK: Ef Ps:PgLpMaAQY)fGSc< Mf%iQLNDymG7j`1VVK7dYDt1 %n+C}t } ' b Z h<`Z~Hc   - % 0 J jBu;U=Q [5?l)Y v K q !  ?cXcf[V-eC2E@IO.D$EU{7,IRgP! 3sB8"-83!M8wRG r:"5FFzn<~' 8 AxzX?q_)8F jKfeDR?% ;7 8)/k0@u%x>*A_1#]( lbMRj % u 0 T 0  ?N*z^% Px^Z:o T7V#gE!-[(Xn&] Oy7ss@`)ZJ)"1P@W/yZqlt` E'F\I~| 0%{!}%k9Qx4vK~FxN`>z 8a^k}%\v  / yp  / D > _!p`"W%/(C *?xB~D,  9ATLh;D &tUD1] q~QZ]tqEFm&))&~O\$N !W[Cb+|i.{X~"xx@&Sc&*v *?966jt:DdC:d- iu+fDa.(Jl> ,>zr-!;#;m>0y[ (/I5JIZE6"oq[2PK ephv}WwUZC 7# ` {S l  g ~ c  : ^ q R Y v~ W6&X^ 5=@;\,e @/719 Y g]RtYA4  +.T>RJ<`y3AmG2S}]/9:Mx}xj7K!?zI6T\h^<=}g ;s'\b9n4q17tE34&\WTFEB3 @TW6LMU !(i"DY (JqT7$G|wjp,j wP-<GY^:L S i w0VW Oz R VEX .@y&Jh< q $) =kCfr[JH?<c= m,  Q] : vJzq6) z/ZW#>3Ix&_6n.@A33aD 3H(-3+P'M"(qPU$h3MB6'sY+)wtvs!k@9q_tk 9;,4')d>R[\&:!0= H i  7 & :qbu -&h ~ D 9  n C ~* * e ] 2 v p  = . zXs,iMlPP2^!8~C3u4lf ~_p}hCAmCB}}V s?6J^b&%rLW ]X#3Z?M^c_ZNSYGV  JYaLYw\LUc/j'\)u> /AD@TXN4jlc-BD2Gqn+s$%lT9 1zCYys &" !Jt v}@lea1Tt+6o170 {,1 (cQ0*_C.]57   ; g Y p:}*eM"wv t ~ P U GD[RYLIo   $ %Ok W:FRrP ?vOby!Xizhv*Y;Xjg0h3:zvza<=_ nT9sa)dhIsTN3;mrKS6;O62g.('/Y_iP(lrp6>gL1en,;]36?iwpj]9wYVl)b"G,  A gBQQy`mO L | 3 |\>  | .vx ]ML |5R xk\<)-^Ib}56`=rJ}e$1u)WGcwmYRVg P"){c$4Z,nZ9.:KQC-'>XE!xK6 0OPD%~`h8ud{=^.cF_xe|mHv_SbCnmoI0UiYZc_fpK6BE&c>`:j JJ!AfE/*7`_6 0 Ot 9  W 6 cS)M*pnS*Td#8JXRsimCa<v( F 3 ; Z \ 1  Z Y t==G7$SxW*y V A ` c x  m%5JY6N`:.rm6D6G6x:dp _ % M ; > ~ m%->G],VaOZ/(bIN4SRm5 _? } pJ A63VPD:E=}8YW 4 \ F  {{oV['A 'f-;%HJ3:fqjNU 4R,?{QXo$l9D VD8u8:  2I\M!9`[ /O,a/5P<>HtZ3 jD]SE}e 6QZ OM  , l l t I  ! ;mb`,6IC;%{n? #S< #2 "  t a z]O,`l9yxt&D2MxJ!VqT#d-#l) ^ 9 b l T}W_'{U@,1%3`i: 4 c /} m s puM=7f) 8{2=6MnOhYKW H|B!@l 0 p [ s + e F LSrME[ v(Fn8y 6lSo ydm lcM_0=q76I/G 5Inyy~& #NZ .'VM[YR *I$.Q  S   3   YH]w#k23[ aFAcUrn >ZR{r D[y|16D%5A]j5%275l5FQ*8)wm}\: UiN:\gz(_MO1O3Q.J$[b5l0=k[0SQ\~`UjC`JLZm{ydF=](2K`M 7UR|~t_=$ Tf. tdRF: ? s/   c  r (:  RJ  aQbK6V2+_ a G  } e)%FjHOIsd|E:PP;7m <C[_>sO{Qi=9dGY6gM2=Df.L'?~jBj`DI45Ag`*Ml5> c O 7 i   K ) > v 6 X / | v 3  , V S , S  V0- 1  W O Y zIv$yQ*(N" ']g)b}p5N8#/4?x_*/Q`LIZ c Z&T RP/@  } h e r ^ dc 3Set"2'a&5qjff\R?tq~Kj $0# w-s=H8mJ'8hR+LM\ 4v{uLmvgMEXssQ2K0&35 uA+d @8M/M  U j 7 ay" , v sm x }b0e fEF:A 4)j ^\CY:~vXX?2y8xohwXhj~[ 0J [>7-}K KiT:uX6c@N 3t"GsIuV) >(z 8L m>)gC}[S"]3)( ho@>1 ?uuC! )s!7(yI[1n{ RlZ\sI{,he38C$F >%AK$!8 ~DJpcC43,%`!z0t-E@9ldqLSc?4+82iYfX6 *k_MeLuc22#dq %\-:p}up`#R!$Ei60 f{xOYx~hTU_dj[UmVbuz^1?RWY~lIV[+(#v &)`v9s"5 @*u.yqT*L7 d9 [Be}un-K%)%FN 3; C  ^ o *V?y'p K&b# 8s0,=l] =3r8n#PC0Mr VQ$Yp@k1a1]MQBq1@bjfxx*v&6bslqv0[Jo4)^zV52YfL#B|0xsv]>?d,mL])~yPF]e aw!ML^$T 5J$%Z=&:WqoA]~WSYZY^]RY.rWjz&o,@pvWMBkhL//`1yxJ+9V[ILqs#Aafar`>g]xBD!:a\H10R= f26@tzm(~i< rpL& @Em!{- .+Xf)@w\ikI{?7a[Wmq +3wv%A0pP-vCbD$NGV>*(mH"4:M/ZaJDcn #nHe.a/6zy6~ FM^h]fK*^.'$79 TfLD`}yPbk  U j q J ,ywhi*r ! 5 U ]  , x 9 [ LZA;0\ qsJYF;r@U/n5%%a. Yg'$qurXo "i.S]~ b 8+Ksv[?]#+E:$P~f ;4Z3Fno# 6rqs8\A SrQ2pw[9LaF TOup,x/p\VREb $ } E " @>Ip34K0V iEX;\vw']7_fd$VGk |L_[>g(GujbXO$Jfq9V6NN):  ~ = - ; '  $ q =ZB7G2# OBv6miyh7uc YUzV3).; F5 Y ,^X~ { -+tSPiBXE!5@-.DGY>1zVJ]ca+W"z$oE}mZz3;%jMF0'Z1Y k  y^`uCO J c2i"tR V % b g ) ( 0  7Md(%LYJ5*,8FQJ0'PjP  J  /xGuNjz/` o a M g > H Y g q c , " ! t aBbhX=A|WmklaViL(`H+YdB]SHE`ImbT DAu9U  )  7  .  3LIWii}M5E4i4w94 okn rSsk#!   e V 6 S  1  b  $ h h / l > F#~7?Ol;e &"+yB;2tV d.*4,IP'  YDL Oa| KJ8Q%Eo1ZJI 70y.f+I.%z?_169C"8%VAz 90 = Dqr 2AWvHZ zqt$a2VKCzH927"eX_OI!){x U; 0{ JI! Guu &xe=Ah@'+3*E: #}# Zj'/H 2J !Xyy=9 qtlJA[fOz;VYJIOPQWM% baJJ%4JJlA#LYiMO`;yWT8,bGL s59Yt~%_v rpWsg}x`g3<}CQ  w ) l O 7 I ^ { ; 9Ghj5)t>oiy\ZG B:2Ltrlra<2tt~bm{f|f^aBI /fl{<To19'8B+* .,YQd${JW++( BXFE,(F|Mfr('H& @2j5=awvoiZ1n*pB}0Ki#2hc~&.$u.;r/  =f>R+B1vQpqN  a  R <   c{_,>6eG:j : +  L a  2 h ~  'E a  m Cm] e{S=8&,WF< F f x  q - n Na^GW@SVY|PQLg^2z0rPMvo~!Y:[PDG B>PV%&w"gW}U. [}c./4i[|4fmtN?TPr.EG!UQvF l`vo6c`k;+iKUabv.o1 xQ'36'+K\B; N `  / 4 6 `  7 x ; x O cy93O<t'Ok]fc~kC5zP*U shtZs,i6z~D!dz~pmn*19d>,hiL'a8%/^? [kg>%^w,#KMD%v\==)cbsDD*)'7lnLanxK$X4y%J  v1b5-Z% uF-3+uVy Mee3\N \ Y p  4N+ (!  u((+  c=szu$Q ja% zi72E]4Vnjc=kf_3IZ&Om ~K#x1gt6`; l 1_|=GrCUvf.i!">iU.9Wg]'=B?DIEBIOB!sMf4RSO_@m=*8sA`l[ bE;l_/$ }hX > * | x e  4 : 5 ? P P 4  Z i i {  E p * $ N U B D \ 0 U ZH@  k6.]0>]|d0_%Lh3n3c0UpG;`D9_5zq}d.]8yclm$gU!jL$pyRx :vi\0dS[{&R)DJt+N g/ cna@;^xO=X\KUw9 V L+5 / #yTtmYdHZ )U L(/GB  +aRf k >[& _ > 8 # . E G 4 < h g YOLI:}s3 +]h]hV!K6/SPWO{iA2@@2GH*%+J?N :cF57?-1C4xes^^!M"vaN>]66: H>jj$a!8b'UBL?U|6V8-4 Z"~Qc H/t  s>dFFmY> Mu\ ^ dX468=:;54>e}c]LbPj D4adj5ia0ZQG #*/y j)k7:1]1q@j"Pt riUq~Q I IZ5}=SM^Fz!?G9XFeE-})z|y1/jR 9I2 /4+!/C@ R -UR$WXxSo* `J 7i2  .Am( > U7OcDr0[*d S 9 P 6 p >   t,B-hV`r)+hn#eKg9anS^O x=]1&+=iL~C9)Q$E ]G5*I1!_}Lh7" -EJ86?5;rj|,1K-0^ncO@,^mkQ.; } Iz z>gD\Q?&I\VZ0'":{a|oNh;?NXahYP4]9ou6  vbmMNwO e/~Oph#OZ ao X.<%L3} !m&wq%)Mzf;P$ s2% kW5-.SuMZD@1!S-vzF0X7 <8EzL/bo@d(yC37Terp83j{p ! $   yenT+Aoj&K& 1# 8@{>2w h 6 n l 0 g ; 2 & l   s } '  X ,S;{X>3 :Sg*U}0s8mG.w 5z kNis^OYkpvMi8`] `SGbugWg~\P[;Z9Xj]0%9KOPVNc0,9   ! dt7b]CVa 3 A2 n *H Zm\ZnrQ4Dyl&a6EH`<Y3V W"1J}nY{5$oRw$kpeu`4TVqAtbmS~X=V\ OiiVtUUjU RM|YMO=gPbX i!ZIFE>3dc: r BD M  {'D,PxzpBL6D}fm2%fljNg/,m]]7qsx-oR[j 1TS @ d _ _ 0 u 5 ( x |>g0P[=8>2N 4 | 6 r 3`}O\S .7CQVLawC;G)*MH 8h/$9B40MiIU~M6Kse>8]J0_ikl3^k&i~"l+t*amNO `)E? '7: 7}hinCrCd\ma\T%6?P8hz P>)7WiHUBy fO1EWb CY$+$lddK^l+5!G"gy q_%0R?>k} Sd[c^C))4) &YW Uvf9K*-YZmKH[{ W l   JNK#r\/+?+~{ 2-OM%Us+8R/;0-HCmJE+I< ;<\[C?PA&,.  C z 5 DTT@=j(F]cR(h =IaL6>*_NjNk`D9GUSIUx{4tI;J#k/` 7WJ:Qgj?v}C9D=gA U+kGat]z-Deq{tp+mv^it&\cQZN~Kd 0Fswn.( :Ox#Fz?a|zun, )JIW80apy ?no?'Q69C@7|j6IK5c'\r'3ETz `^5!adXxc;',b'{(F~},7sQIW=X/r7 N o r Qv)L9 w4M2Njj[dY d&c#  R / * . ` 55 f%]4&#_Q4Z`&/05Xy7G9m-"r`>2Fz*+[S5=0F8>1JSpL2!"Fb;?(od n ; r  1\f &3fl'sEma@OD2B0rM$U5rSIO&#Etyr:kOZF$ t3u0n7(WS7\Lxw+Ot &\tZ}rhkVteK>tP3J4x.NQoNPH'0{q(&2'r %5a4B'n7So},3=R\v8/t_)JJ JNbg~LeWwV<R}q8}V  !tAs&K\):H)N~PC4l%8_@4npU+taa%f_A5PljR CW'ZOJiy6 = e){0-Mq TG"&@poh&":&RlRk.'E= $`bJ@JvDLeW=-7XoK'cM A&vA ~ c;|Mxj5%w:ETp {SRYZwL}8:PHB[ szCbmr%{]y`ra R j   Rp? G[B #% #9$=>MmP" B8aj`</~# ,  K  i 2TN_{5'7% L9,yR|}#s]GQ6gOy Clp1\KIk f  q . G C grXSrJ  > ~ 6 - Uq7=WUjVW]cjts\CGw,O%4ka,OlZ+$3B*-gvW:Pi{lZIvS[dw\lpE"}mQl6B 052_Q1:Qczh 9.]XD]%z ) n2#h+H/|q^Oxl  kjy_ Gr@TR_9!H`#x<7?h__A{qF(/;$?U#ry1,Ak?\7-)JyiZ 0yDa1X#?OW}>M;# g2uLs6_uN#qN ! '&)/T!vJ;TQ8")\, x v 3  [ t | A8xC  8  R ~ ^  # =  K ' = : -$3= swwzZpw*=u5J2* U$>dLq|-!Fic  "4vTi16 \ _u"?=TA~{*r)G]agkaWe@"g[2 /|%AX]w`c7{Bb)lDkP8Q!2N_/v]UH;>!=7U!p /0N.FGwoZ;xFtXG?Vk0K~k+& K_svBYv26Q}"="X6G  yv%#f\3$0.}2?3GQkK)H6:LA) -BG5 d6Shs9yJMV9nX4I $htY5(P FwQ'52A;:BA78WsA#5 W:pV8e+<[_[npGao@:Bq3gU=ra! m  A U  ' 2t5 Mp&8~>nNP qg!ByxI*2O[Vc:+M5v1VdQ,{Vto8\&yK6:3/]L $BWVIA9')4h!gV9)7mPLtBB~8K.;^ H%We"'*UJM/pKS&tz}Eb9x+0scPM3- [yP6- +  X q K A r G $lMGD4W/). o Y ? | k   R ?/G+,_bG;EC-&ZO,C\G5 @w `~1AtJ4o?z_%W+S5  EfT giC<Na9?i8:!>Jpf4< > + ~Zxo]WVPQb~|m%74ru`fbbf*PH;I,Pm* X) R(z qSEzL9 Soh04O7O+81dxNg22K9 CgO=,\E!]e7M}f;"CMA1GcAe8BN[)sCR.DF!,iH(Le5xo3BQP(! 2 [1di7Xl^*DfiWYnp5]3Efk[UdlID?[ xD F7|:i1!u k{SXD#{)"&n<a KP=tg9n&\4`{n{:e1+n u|'p 2LXC1 U^WX"0L8DL#? &  KvU\{ibqshmy}xpqvvqp,d};vLjJ)&00,7U^jar+:$5ftcdF"4 ODE+3!1A0guc]^behgaau7w os^h 6!D%Ehb<UD: A-a~{t62D,*Mb?*{B-,$CA~fmh8PV(bX2XOTN[fQ)!P$Ji*((| <5,o2o,6QV:MnuE `I"Ersdz17 x3O=NH=~3k5tE&ShU,6vO  Z9uHNON;A_mR'"[ ![Qs7Y?-JM@<z)JckM/fu]?ZsO1BA^${hurmS_rC "!Y~VFS, 4    m  a)%d+KsZQs0rT{)<$OR/L+@KnO50{  ?9xn@&1LVNG\wzy`^:<UES3CnsiO&<:[+;;v'Bvla%C"(NK8Jhh< /5f`CQ cyd sDQ&:z;m\`EG:Mod?/t 0jhD3{ e}@d&=?{gi`bWJ Nnh=J~E :j)(7R$m;y>Emi;]ND@#LZ  e  Y Gz+#imT\{q o2>$bc>5c;3p  -+q~r`6J 1F\ hzEUnPI=k9) cZ6J}|<In?A,CyJqj{*IE@dt]MX1p(N5uv\-VoK Q_<"xmwkego$lJJ CrY|EX1#&6(plWdgTs \UO1-N--44,.>K:E0K$ #!,!`eL63BRRA-1`3*1a= 7ck"HTc|z r{O|]_c 0 @ T+("")(Zu2&RSnN~CDz+Gjn/zX(--=F cwr0p )  3 g D % }j Y k " " j E ^  cDL [ zDW[b<T]!9,Kw~:W?17 sC ygA&D5-'jAxs7qsPL>jIf.j\_Z(s7iE6Od/uk9N8?etE}T: n*yN>]uX2^J.\ '-q+LVi3)mt!bdV[>TaO$iIE 1J5z # f8W +pC@`kZ4({L4FhyjH6bp[dtG|8-3R m  Q Z 7 ]  N-Y6aRx AFsT&*}j0]v)mOj.{ySEHA<k7A\F^iy}:Jrc"v3h Q b&dM;H-JjdiL"@Mtl}E8'_jOVc+p'PB@PU+o9 *%_+,e i'-"yv C2OAsNUg`MgYR^<#c/123Q|_`8] Sb 7db_Qt`EIU%u|#Zv{~~`!Y[[X(z;;+mk]bk_B<f 2$1Lr9F"B':3U*EG1@]C@)D15G=9UrWD-eM=OeihQH./S*S PXMsP/0?>/4[w2dBVh?8*< :kkO78Ojg$ B06fLI!,#Lc+$GKQE^pk`\cji`^ckh]Zj{pA$qRxR hxn'!x _bFOnuE'4O`G?pV_ (CE<=<[ (@D<71&+j#NM;1/(!/Sk;d(=h{rgc]KDrcn?UUr xE" _chi`~(RpML N*C  NLU_*]S:5.fXhjQa2G< +X#sB v*  _ T F|avwNaXFJ J]B5w] U z   :[`|z2Skv?At+(1/TrO V% ?{^nw# ps+O*hh;!H\I0=o|_gvF5M,u+/u[ f;Z( \kOFUI ^Dy^QI# 5I3Z6$j!8;emC$N_JVdqWkRfvSC=Es\7_!n&  [D0B "b~^67N/.}Ce 'Sa;g!q{5fIa`}d:dxlUNW\Y^osN' Q  6?%;!1B]DBB ja\.#e\O+B: >$XPu{?,-98@'Kwrt% I ~&)K0S`<78zt9a1MA1VjfE<AXT;SA(BY?DdVD  ECfStIS* oY}_]K\aJP8[wNuJF+ 3&W$@J< [4O,AcA ,DKEADD2  |$Z0 t*8SPDN_7zHGmoIH@3hKPX?/zkEt / T FvK[*Sm~qI@xlBf^8Fw^}\vx&a_vvoCX saZK&=IbI\/7jx?!H v)!<6i4;s5h2az|=W yjvo+#(@A ;DSCH,- :Gbj";9th+dkWcm*9F{Esn/);  oX;:jT TR`Y}{P]*_R?Whc8Dv!&cmyX9Cmm-$QUI"EMA/!W)c<c`PV`1R:wYY\ c~_XEb= 7ohy6{cZcc(_L)z+KD`OI^e@%~yl>"VOl2&Tti]muNQ?A 00$/f{zC&z6w@9?.4eUWYJNSb0&0+ISC  8*fLvd#6.@-@ X&!D:5Q:79eCT-'l9Q[i= _Fg}B) ygr0^x]P<r% !+WV scw {*&ZDu @. (P]J/)=Y^6jew{uz~yt+Z`  E 7!DBR{ !rfb66Ed&H<U&Z^ "[X~/i#qa[c2ozt|~aQksJ> 3D2y{0~BH,]qc~VRBQ=TI(   '[ze~^[AQEFXbO2.S~v" 5#hIwCiQKcf: 'nBNa8E)zh[ ~a`pZ*&vAxZoc.!;k!K] J;loRa|f!# ,Z^b68<8,-V #a2yg1t2Z*L^=CiYaVt/!ds83pe &4}n\}F9DZ#b ?W _96;=Waf\lna UF 6&T, ["4aqtoRh{|x+ awC XZ[>6i?MfEvQYjDr  "!=; a)$Fr %z3><-- DFg(P`NfwnvK4FN;02-^7F  !KQj 5s%s9+NZE>M8_Q,hb,AG4ki$6*rsanqMUQ8hi"3oAUp5^ FK'!pB$&Ya/}NDl|kwQ$2_<$97DU!<)O4;MZVH?FWbPi{{yzoe"E?@\-2rHye9)7LSK1x M?&pF(l-tuO/0T~y[8: j|J#>D<>FC.4w  -DIr?-NIF|vVH L24g_yw/~( v.y{z3.Z6YSui1s9rK(')I3g#@6Pp_8NS+Y5 <"=/-<4OrgF_wrrosMj;  IL&gd1). pCWhN}Q[\/qm"|J"3U`jNF4f&0p6 s{QL#'"  @*1xWOl~N5ZCH. qE")A,m| $ m}E Cqc h.4&= WtY$6NrgA"0rq EDp1=sL ,%"9I$Rp}Q/XS0!Abtyysig{I"(F 9Fg")u)ffvhGCm>13-r#JZ@2Y,QvD\4 &*( de cB;<97<>3,\%(bt< o,R3/.y$5k'$FSEXw 3E=E fwG>IF87IYQ46Ro:.|n$sR'%*(P&_ bN((*al0eU]#iFT>IeV,(pq(pEPcN9v\7!o^#'W>a(bMCX_9 nu|X&t.zSpM >rkx|Oy=-.h;[,Nq`n'FWYI<Y CuDEXf`.^&dG_PO4&S2-F p -5,(+EkQ ,_`.fM5nfP4/ LJDogKsMZ7~sY~WA Z" ?-SoG:AA;O./ kP6PKHu$8PqX E.a! PeY}Zhg.}?_P:N2P6~r+$dW<QlI A9rmzhG2iSp-zZPrH#*||^r>LXoF @|> DL.`bdNA`VX+idf=NF52;D<2E89V3nbtXQ  4CDENSC$P!fb5&1"!v6? R|_%2WF 7!>~rorXsV -JQ "d`b}|`dIY,6:Q5 :? WCTs}kSPcuq`V]ikfjqc5 op/?Vx2Gd.MkVztjam<r1#H>.{]VIFs{ifz<gO)Z{Q2Atp)U*B)032M.Ljot~ GX+#cI $woupi{g\z||{m<10r7z3p6eB$%!7#UzAjiC* z:@L@a -;K4e\(T|b8^/XnU5-=LOJHC80@epAi XQ ;r{ F,f C]Y1EtCoF?J1/+CKWNA8X K@l)f76GpG7ASx;E?Is;A &tGGK4Ry\  !!0-.^|bsq.*C:00/3tm9y)g:kqGEbVED;L C-H*6YWziyut"L3Vduz^<|' oa'JE.'6A5)jC:re,?* 4kn'c"Vgex##[0o!Ez6k6g0"b\.1>s9@xE:Bd !C'n!W 3)E&o)@Q!,s\{aoIAo8@ps/3pP?C${I<E%^v 9P~@COUaXuXjeFa)%dpOq`bc31vr9W|-=lR`UT`#R  I?+SK)RoDS&Q6 7bqI,2DI>:JU4` 9_X4,KU@.@wtN\Er09YNFHC0#:i|= =``;Dya OE/0BsHPE^y~O~5#IGiG6Rq)2V78HSUOEB[ TJNj.L( I ,$",,;DD#=6.2%(+#'1$Z!/P`2mjfW>dwk688$+SY3Q%v%y1{e r |6u#;nx@<zPP=xk 6zq>?W`qU_~zA=e:2B 41;!,KF2/%% " ?c?LS5 YitD-Zj-y; !6 D,u`MZb~>("1 ?nHT$6CFR7@[8;\O U}kb,&8C!e[AX1oysc:p 0fxK@DN[U?-C};YI`w*Cwy']/"NGhRu BRt6kA29 !F]]WV^d_US[fgYOTgraD;a%od *fK*3==<HNE40AK1@s7?XUWvmVUYbm- 0r8s8 3>%)3.QOHfO/+:@66a 3/ Doo7WX@*,J{8dUL_e? )ld+z%y65UXZjM`M<_$aH;5'Wr>M^LhwTX{_Bay?J*()'qMc4%OHL"Z\P1*X/T [1^3DC lf+/C8qM\G!4o5>Q ~ 1->A5jFM1X\KKee R$>cJt R XYxx^xfq53SPwcrc1=C8(9y! %;|Ls$u.@; GqqIK7 9.+JdTYL~~Ad)k0}A@9OhZ".B ^W>2r!xy|Gt1Lp%4kJYT8V SmG Bs~x{t]nv/sw09fc?m,x<o7L1_QjMMjZ5Fz3K(1ZD}a*G=;f( FI)&5&\Z\W @_RAU^~2pY0}v0Eq o+RaF]PUnz_61gIE\WNQTA%20>t(m7`\aa4ne"O Uzkqug^Keb{v`h  &iEi[YsSlVNf :'C:%+60'9[:d  Ss)*i}ON 0`_:5sxjtzs2hc=#,K[M+ -fI1avDAko $>]j;C$woKKZvb-i%  Kud]cyRLTB)v:J7VH314+Ar@>E{&P;HN$i (O/3mvxhV8gj ;@/G0NAR  ;J|"'>0!Nh?FB #$L64shH]=pU<}vE?d~p]38g5.Oezx9 L`|`>BvcTxp*+^Y([fc.@t|4Nz  Q`,}g1-Q+UyuX hK iC6k{Z7C_^7*kViFgllo!];XKAvMD%7=$2hkhe (0'>nGLylK:qu2:[T^\}~~{yxX >)Cu=Lv_= 6 {L$OrjiK 49.=ws{RG8bR+*1$2P e?+ +XsV<\-;(0`e#VH    2WRJ:DG,]8rZ[(OH?    5C~sal>y: )QczO~><5$[S,SY-Hqo\<&Zg.kEfF+gr:x:[{6]L RycjxYf)- $X/i WL ^AH6}*W_4BswN?\b>Cx\)*$_lXmywvp.t=}:0tG*8E-aI(1)h2wu2 ]m4}I6pu;H9<4>RT>&+KbR%5"?Y  :zs{tYM %?bzu7=1?+ <^X;&0L]L%  6n}qb}zGz Qw|Z w}t7^^Rt5l,o}<#&$#vJhKZlZp=KI"[qFVA)%09;841/16960077(Pczqx".[V -Bu]`K?p2=f7kr.[MpzO>'xfq0W{u=68$>)@$(@"?XeX#N,3%'WQ?9?B>;@HH7  ;Nu1YAbwNO}]@_{$9Q&"@Zb#$U~R)tx*_qg`08UJH}?ql%>PZl7=NC3J&6){ciD77;>>=;9j`, `D9!0, NQmG d_7#-3*%J\b9:YO! })*S*AP& )9;cg5?7xs|{kw$Q No[5*=QNBS4ydYA$: Pg:*56'"96U s|L Hh\6!4YdI(&Gf^60c{Q}gtD't"AtvJ'aMa`\`c\MMcz/) ,%*a+   7.\}X 7qw6y}~uqzzrx{]'+Z7 ~1$($&.,Y8@JDu|{IN$[ puV! JI}h52ZhM"G  6{52/m@|ZYIyd/-WdH   `.ELL$u4NL;17?@<:=?;7:BE:/0FYKu]iwwrw}`FlWk# -doD 6F5'5VaEH} TMIluprrmp 4EB=@?8/4IZGvahtttzxZHrA!)>B<<BFC><>BD@>>?AADD=67O|  KmWm}{e_le~[e#BEqGrMfwoy@&SnX*:r=;.5To>HQ .)_<_S4(5@96X* -UmN6 )*o"+'|;\[B05K[Q3 6KwjD,9\q[(Hw 9$kKB% %<GH@=>>>@FLB!/ z e:&+365796,#3Zrqsqot{}rdfyt>T#     8o~kR{`v19kwQ'*Rwj87qV Y3PD>NT(]C]RP)286'.Vi".zGc wwMJ"z|,\R0$/1!#lq=rWpVF 7NKIUaS-M!or>!BM?E/5#!4j ABsjO_N-3JL-IeH- ' &gO6awRO|BM>&/JO/]ee~r\jV`{ORGF* s_nst{|y ^Wxv\f!!3N_kLmf_O`Q8.>W`D^GsoC!.emTo?*5NZN4*@fq<Dmjy|ef9kol  U  h y^il_t  Bxz~  -A@:ANSF54HZV8   Y @|s-pm=&1''GaE)=&  -@DMV+5ZX7"Mt`_uqrpou{|qfi{dTiw-0P t&<Ry^,HWJ?<BLRH\gxm|`%)   =[^NABMTRJHKG1-?'3LYL5,>cq>}T  "2 X5,5k$     >!0MYM:5ANOC9;GNI>:BNPD53Oq! P+N^G,+<3 o"/4+1GP.d+vF>SI6/7A@<>A=-+Fmb)Y6m\%J\>3UO) KcD1`(GK>7:=4+Ba|T;ii6nn+&+Av|q3A, )PYG64?HF@>>=>AEF>45FYS#iiy}||wpw Ai(( bg~yrv}~ +\{~e\`|yN   TeN*!;^`9 o 0~@:< qPdUJKMJEJRRLPmt^~) )y?,4>?:>FC&[1 )9A;,%1EM1dWiwggvkO;102784,):f4LF-'?K;"4OM,JgH)o[tnlm7vzq\vYw9.TdO/&Aei9wu~hK2-=OQ>)+RR - L5 1 J_P3+:MO@35CMI;3;INB& ' qxK  Jrj#V%&?PL;17IUJ$f6$0DLB0+:OR7  [] t_fz}i]j  'AKC3.8HL=&"D   9II@8:BHD;8>HJ@54CQN6!-c  "HSLA=@EHGD?BVyujyHt'.  PAd\5+WpPyrz~xviK:9==77?HB/#:z   # V{ `$2OS=(*ATL- .==8:AB916GO@ I  Rno ynw|n   2i5mV|lp{i~ebY&   $ ~t^kluT&  q4< F9.TTzvgofH=@C:.1GWJ /OK_sJxDV{~mjqz{sfM0%@SB)Psju}ux}{w(|  |.MDuvS^@|_fuzvuvurrtoW1@[Jk=%  2GMD:9@EC??A<& i9$-CMD3.8IM;ZNksA?+&2 nCNHCEFB9=SeIf2a  #7   P~|z`E55AJH=6:GOE+ ,c|~~R zy|{x{|mm   7]Mhvmptpl~ z% ;owF    *b}T    ;rvtxF  n5'3AC=<@=1*B#  +=A>?DD?8:DLH3*@JF=:?CDA=>ACA>>?BBA==@CB?<>ADA<;?HI=$  z7(ERF/)7LP9 u#su}~|}~yqu  P64:<9HF?:<CFB94=TpW1*:LN@35DQK3   Lr"    B %?NH817@@=D]uksjc  lbt}ed  N~}~|@  qkw}z{{uu     ooz{|~zqq    &xD %]}ymP92;FGA>@>. wvz||~t]D42:@@<9;<<;E[xzorqfv Hy{~z_B24CKF<6<FHA99AHF=7<GNB* 5DFA??@??BEE:" )>GE@>?@@@BGB0 >q~~}eH43?JI?69FOF..CID=;@DD?<>BDA=>BDA=<@EB3micropolis-activity/res/sounds/computer.wav0000775000076400007640000035146410724145723021534 0ustar simcitysimcityRIFF,WAVEfmt "VDdata0a4;@C,g8>zMz3ozAjjWFE+$>Y%AR\d{ ~I*#j6:?eW<n+'rHpPG]SLh)zECW70zo>hy|dr[`;K5 |P}KH g[-mc '*Q ?lF2+ 1#$7lN" RݟޭW>  wS! D0 = ^R0d>߉5{W/y bl"$" fh!5S{ec1iC r? } d"6NX;{&q Sf [N 7x*DE`I+]`X c(+M< X^# eOL6h 4 <1iQ  pu2y zcax"* 1bbwA< N+ !#7 il E1Bo 3K:B ^-A'?/S4  hBV{g] a y,J $h 2vl)w&>3G aZtN(ORgf s* 'Np ZX \ |{ *b >r !\R m 1dqGy2T sm ""!\#E (q3g`qJ`r= -7=  Ok 8;4IZ f4# tVCLlmRn q& F UUHkߗr5i5 >E "!6: /]m,ME,-TS ? . F jW:xw{e4 e85+ Xy4| vgAZ%-yu=^5NT ak]/c0A` Uy* jRZ\|*PH L~ eeyLsNz>! H5s  Woq>OAs]]x UsM:E#M[F [\ z ~\F NY0U: dH4 EUc<^ڞ=ߢw .=8Sn pqC{ Ep.vu  ?~ e;_n 7N\2"y3j] 6M3-i; O 9.;`ݭOrj/> $Q; A#>.  V+!""!D 6 Q>>sp>? _v Q J 8\>j[  JR +LV367K^ hzj{!""B!,`I$_+yޗ\,]W O  "H&9 4o E &R% ;;cd85_ R9y"g ~T$X.dQ0;OV ld) m cJX Rn1./l$t s ` ;h FhzHGLG< 3Ob5 Mh4 ff <= ,"U"H p .s4ObDs\ mHG  p'~*>``u3^{ SF &1`Po'mSc| "<#{"1![),  D2ޝݥߤm-Q A/A q _a9__?UAbK 1 NGXd_eL gD!!"! ". 6d MnF,V>t C@VW3ch >!gg_ ='ZY^E a/H!B Ug Rk'v 89rhoOdBr X(e]eJL w2ER^  .H;N E@C=lk, D.*]x o FvC{ &.+" { Dw #6BEf[\8] 3*$At!x#r_u  !!!i zSyܘݜߗ @5$d ET7/ .h[Z,ScU~& p ( fX %4\9C=B QF wPF<߁iݡޯ+)[ Z%`w2O%b A\n^``O {Iv 7"w"! > L%CߴG_+pD Z})GWo svDg: [;I`63 r[gIFߒem]LY7#U Q 2FW# P5a\ `Vv {o6R+3gT lMH"N G ] |(\>  (S0 #BF޿܇X|F~ Z[]nL $]E]w_%nr*a rK kf _5& RAXٻLR{ x3;pR Yve{m:ߊRsv# uQk)"h#<"O ):^$' ~ %k > 1tA#)Z 3 ! WP_7w l!a&1cj` ?3q P D[tr (N/_ߝߡR&' io!"!G q1x|F8S )f2!""! yqT dfo5۸ݥXPZ4 Lx5, K46#7X$bh>( nK"k# JwSFWAp 'Z!"! J 4Z#$ۉAr3 K Y07 ==^U9,.U&.wS F>%~A ?O/WUgV &I0oj P[nV ކ!4] nF Q7v KoZݜ /IV k} !E#^yG\Cq~ s<QG :BN}e E/io =b^ %=- yzG% QMtH/ Y~] eE@69r sH HV cgv 0'y K"$,% $!NG ` ,-s mICq#z vU3ru ݺ)bF uV(Q?  "ti P@ !r 5c% !lt;meDߺ9,.S M IPO  g^ޗݨ߭t G\*b swyn=.!&0 "g$s$D#!B 7A"u 4)} -&r!1Y! A M0t" ((U MfpO ~j "iTe{ H<"-$$h# ^! ;#Bmhٴ5&rOcl^!\ )J AE r1m<_6 mqo-!( o _4<} h! #" 8]  r߰w4"D8= P3 PY-2bH) C!q+)6B x>A _F9 {& ""{!X 'CZ.Kߖ  e a 2g}\:d Q2A Cwa!c"2!8/ MnEjazdSHps;  {[XWAy `+ݏJOb _: ? &v vgpVkz <  cenzrW @$!O#M"nD ?0KuFI'3w pA} g^^>@vS!8o cr  k Lw"? &EC >Ryxm52W:0caX A:w5 '|t\Z  ^ 1(l `Y?t ,c  ?qAz,X l9 x"t!t >'vTLlZ"qwg.l0D=D>N#OLU,2y)!Mo --XU~YH6  yc&X. Tqv]i>VE]Ty!o%&u%"X_% \V5|P߅_p#t7:J xs(h `T yߥ[oZ-j*p qNQ+ =4}I k <k5+X 9+eEܙd'DN {fW8VLg% ^mPo MVK[-,k 5X ,E;R)q$:'.1 ueH"bm 1n#A(36 XD ?^ndzQx%b ,=l  Uy)W TBk#S%J#N=LFWߊai=L{' Y m>Tw ;@moi xو*A T_O  35^F3ENz (NGu h<M4. 'ZEY D XtSI ]zQSF; qcdl "" "oDJB%%݇X}p;f fxu -Z*ߩ߂Sa j!<tC !p y'Y?  _U!: )gd 9W.&u6(Wn1 ajRW (4I he~7  y"X -6 OfQ +- :~W+iaIm #?'߾ߠ2KAq HLEM d{%mo]3x]Q r!%'I&":iCq d6C{iQ_' T> : j'<\Ofj_ ^0qB :ahwR@3i9 W { 52{no K - ieph7nX Wi}!## T_ 36sGL%q` 8D~ 1J^< pqfD& b qC5ߝ8$&V{,\.k 8z{P TFhb 7|t $$xE]RLp.fGglTo (nfE 3Y* pUDM vy3G'/  v &X0u;;LIL =W^{"u,UR0Y/^_ih(  SMyt= ujU @8ߌx&~#,x 0D`][ ;O 9_ 91mq , >rc3':ߩvݗqa-pW X vza"Ac. H })7} N!/S ytj-A;/I T&"."|o 58#s'i[d#   mvRM@i   2  x b $  m.%4,}Q]u$78 _|D kXl MG7{q{U7 yXc'FMEU9~@gf)!JW\5DQ:)>Fj83'8w |N23RWs}HRP7e[ pBvUS+La(Br%pC  |YJQZ M'GA)OYo XL)ZFvC$d)ij?G#|+<Q8< b&k#rYl ~/GW-?ks8%O:g;g?%`|ncahPAS &;cNv[cB(m&R0|k [/@|1Ln$Z?s1rUeg0:;qY^7YBOY2+q>j%"R>l9`I-#LsVz ,Wd= oYRU&(gi/N/ wtxb /pt6# BAY V y"kAM~^_u "^ #O ! PR0&BWL?)]wRPQL3r^R*jF"5WL 'y%#Sk0G*am_5n9&m*VS PrbB,429!AP.__D{I)XVY#V0X1B)c(o_^V[KB#'~w 1^3zHxM7$o!EN/ ,/iQF`sFH I:#=qa CT<^=.B}>% 8,_P2sQ.p/=ECF\Zv>! ITq7'9NmS09T@\}i=y`p9ju1^e3M oEy&=yZv1cRJ/bh m,4tAy/6h$fV( #0IM?B 6cB?atY6;tF@;@)*`iZ,a^-a4|'H;Jo8L{,S;Ki'Va ,cG L"Yur_ [(# ;b_z< hD iY@% Inctq%\~`Ge0\J+(]!>.r & k )o7ROSu cBB%3PL#[k2`?x [ MU[? NzTl|k^H. Z?`MB@%$nDl*Z!@J.y'8 eoLH !dmb"\ Ad"t yn@H*- b R 4G U `2zk/), ApsFIDD&XL(5 'bXm/>M5{fYt  C ' U ~ 0X {rkxgW3mK# L]IP-]6lwt [AH&Vz f 1 /  k{rhcA{1pRpTr] (x " t !X ' r ^ r-c #p"gwm ,mYi2h>_K0ra9- )A|I9n9}E2C (Y< HM   D=}kKFw}x#+&;*q)/6,KGs#P7VQ@oyM'C8B(C  u % D H 7H tdw6yu 0^ Zh5Jda1AH2,2+Sl ,AfJK ]wV H4Y=g @hC}* PbA i'([L8 !(S.*=tXJV 6xpQ MSpn"<h LGDg:\ pT\jh|o;8u. o6ne ~ Y p  7 {Evw{ G-qMJvY.h ]y  ik2  NDa F] e  cb}2E ;!n 0q$e.WzGW G4-(a0.z:v V e `3 6*M5mg/HX[]OgasJ/I OJcy " k 9u^r\HugME;XI&QYV6| *T$D/=3:MB,B$oL8 K Dv |u4(h%\b. elD %hd2;9(/@^g\WE.Dv~bi1sxf qT K7+S .e-Kf+Pp  `Kw3S+|OMG- kN]sTo>Z:?^ " u i"  s i'f=kncXhfW[  D,+#i { PXSSyC "yj-k{NoN SaP!,/9d8"`w {& \ ; a  / !c94q jv*  J\P~%[\u Z l=  \6 V #?o  |3 CU ? c RdiX ZPK D v } )@K)]G2Utoie/ b D8  iD H/P 8z zE-pZ1r!O<g >- zY5 x9  o $H tqnQ.VCI.V vDAv m y@#1 ("   }b  ~m  k $ "#a.\ G$9* 3l bs'  P| H /V >6T N K 3) vG^ -zi LFkKD+g :a   >pj(? R~C Z ]t | Gg  N>5?l"6o HSV C\N ~P4 5z ; 8 u>uL[ X- "aH< ;F 9|e H 'RDL+[  KGv gCTH4|/cu  D oq*) WM SQB l  z 8d/E$\ L &w :Yvs ^(6f|\dwQo vKo - _] F] N 3{;4d 9 [* mUEreJ$? 6#[ ^ `K m q  jw:l _ ?uKNJ xzxI - !;G A5  2g U9c@ [ {D^5Z PZ#6f?qg B  8 ._oZP 8X 1 o?  x 7C9 H)  8;EGFepqR8[X >M 7K:^  (  -ga  ot>\ f I\$lQT6 m 2+ 4 jxT  Yn@ ]Y XxZ  )%I X+c Ly ,  # fZ6 gT!Le 0nsBxo s4LM .n 3 ^U( I+*mmG;d Lv 5Bx Fp PVut`7 SX2 h9c _  9a0\ cw   = #J`{h gb x ! j ' BLX Q - ^|1 JjxZ0  h#~ [R OQ /+jd=F?d*7[bA>( Vb- O SK ohv 1 /1p X:  ]& ^-{8J < eq+gA?d[ gt $LPI Il /y3MXe@|| 5 I)q -%~ w~1oj$:Hp xQ"K O s U;*z,^!kDhwjFx DWNc_%+ l f PJJ W n^ uP ( ZE '_WA_|tBU {~i Kc.s~ 1nw  13  Aq\=",43 NV g + BB m 5( -8M \n uH  (s  4X Cc 9_-k O4U8 r vJ(p h H$ 7fK 0~UQt Y AD$ ;=l o |6b)U h #@)]w 6 F"= Tu2 0~{gC$N  >e0 {z KFcQ[ =Im<>:GC 6gF<%1a=|z e oa$B YxD 1sYx:&/ AV XL y9S =z@BF 8K[ u 2! *3DXy(g,j,;F[tJuGcTmyOL:c J Dh Jq3 U-7 [ _ !n=^{ oTtMKj 8E /  Q{,R  B Ux x u  ?JKthLG,DZl~G \  2G?pQg/L+Fz X - C!QL-g` O:zr D !P)}" 7S6>{o!! x@S_$jd_Su T/{IAL v; KBuJRGZ[><0 cWg3 CsH 8M'"_55Y0CjGxv3>KpbDFPq$5LZUcP FFl2xt(_Z&5c}l&FU*x (P4 +{VaNgUC nd`J<xt_f](3hu2iFn?o3bOp_ sS%XU:OaYH-T n e zW_{iwu8icKkMxI' uncUu'VGT1(+%sm28)9t$k"@eWKS[mWtSz%0ioF GL+O TVZKH+hJZochA+\r,UT=0w?!as|_".>0GG]i(nT$8Sh?DmL "'o6:6ty#^Bkjz"wVx*| 7Cac e()y*APg:HgJ+y[ix{tl>1"0h$N&Yw?A6|Mo # r} nRQH~hm__@b=Q{^XOO0 h 9wIm],~y| DKQs Spr$&M6:cUU] Gls| mk>6#fDo*S&3)1) /@*  m Q $qD?8f"XCYzMn ~ Ia?R- Qo[UjgVX1`=GyB<+d#=mWRlL %^ v,Zz2Dp4PQsyq-o& V/(&2yfT@7k)/}Le?VX ouN_CHG`$B6:A?]Y^\Zpjh'p9*9`d,\[!YlUqtx[#Wj]a H1iZpov{ CQ 6A^tt ?oB O t\ fF{XT"ae?S'%`8myc'U1hOQr.'1k]-  N<\N %p(;G"S\2w3@&'!leC3>6n'Z)KtQfjy;#R`b_\|5W 6{ ANAw!C+6>&U5?E3cm0p\_7Py^|mHmaWBC"( o`{=:D<Y3Byviqsd'I 7foF #D#daV? 0UVrhR ;Ih7H `5%V]ANaI5H  r"SfOpOSM@h+jxT wc<]@W:muRqcW=1?0NE( t7ADi ]\6i"HE[%]Wz+1y(?G%}i>[[cJ;:@]?z}.' 6_ hW!7Ey-+n5~ d L~rTXy8rI A{jOf_,k oqsCiOP.,Z 1  r l_/wE2P6Q9##C,CSJ)~5U`K@}! ne =,X^{j-fsx ry+n z  sv0 uqg*l9n UTR|1fU\ZE w7c#g3 B ? 7%wT\(92ml!2;pT +Fp)Qh-}uz$e:#197 x+Y<(46ggCfIf{ci"?  cL c#9eK`?d AJJ!;}A!ojX 9l>W{/ ()G  W! <]N7'g  V "  b=/,`g\);^*?Lq]/ZZY7g"/ g m >eOv`8E~? e$bY?i @qN/\MOVwJBZn'Zat6MA  D R(RKMA!1l_~& EDnW/n+,  m)E+ OKJ'|-h {#!"p5 {80H+ fgin 5Q;M,r _V & b!a-#V q ^6X_aEZW)kMw$jZKx~*eT(hh/ Y:   a;<v;5 $ 9R0`QfIo5vY G:f9)u 4m|6 7W5!^ x ' Xa9i'GK hGr\`Wnv?C|)Hva& z C  W ~qw(  /J & M5Nmf~CYJNpI&d2e D = @{?&0-fr V rFZCTDca  [QUI1uFtp}jBq`vKsj7MJK+(^)f>I8S %Z,j@!f$M^QoXnrj8w+Y-wm&o-a" dGtbk}b@Ev  Y / it%?d {T.e5Td>Jp  9,*h* ePk0*$CE.s ODH "j't6-lH>HZ% K /g=dVL/s% s3soc#HEV~s`AW]p5Ts9p9Dvqa[,pZLN40 NX.d6*RtA(c wK7!9_5l7`GF=g   OV #Xz uDpPi Q0 y y !1RVn}@|`J "Y# i&h_f5  E W@0P T#*r:IR 3 n:&1EO>W%b ' =-{a( l3M>tL@ &cXI( #OAdgF/9h;ySih"m>A'" vA  3f0Y++4/E#)y @| \"e;>OAta6WUTYWy9d\wG#DP@ -G+F U  4D u(rn5<%W |=w1FyY]J7>1 C=c D -  't`m0qK5C9A< P!g(5R>r-j   k ~ugH`CM9d ;b5LNWo'j c~3  r&u qu 1h6 74g3 uG^^X0!W #*K 4V u&KQ= M F }!n4  T$<0[ \ ZM,6> ) 8inqM*grV{'   a!1@" zO S` t , ['FY_=C`!+- TT/ #$ay5&|Y  ;Cg i /[z s^?  h#yy-ree%4bI"NC g:5Lwdj (| K# #@Sv6l-AET$ G 0XQ9i=a7b  O3di~k.  :F s^ sc *mKC 5eB2f'  SKX'9o:Fg\p: K u;vpV4k".4:0 mcM " ' et  hUBCO0`6]Qs #)}S7TC;i ,6 e = j{ Lg`k  {X ^HA;S**_ 'r#hKw7wxh4qXg W=KfRZ5 ogv  g@+ CZ0\d) plTp*o+M(Kr,aw< S >h/#a%Z 7 .3C R  O  NL\; t5v`uj jQ)s ]2s?9ih :Q }UA g *\ { jN c3%i{S)5+zfzxz>J;#eIyt0-a =/Kl U h7uW Bs   }/l egvWy u 8m!}50ep^Y|P=,s?By abx\S  / >[3DTm(  1x;:#S { n CS&P[qeTPDQ{ Zgy 7G_LTAT$JCo>+rw3lGX* RuQ&( _ m7yg H T W } %R:,o$qB .(I5Bc 2B 9 \ Jhz a@{#  exu{ [dA` XyE*Yn^~aUn}LR@bqM~Zv | oy,0 l A.SA' vVjW B+ w L'| q^[(w $|" '*d&=-JsOI(!| pHC{Ex1 [< S_# )$5 R#'+%~ _ d ^d~RwV-:= .pw{]J19<2b O{3(dx( |N< u\%IZ Tgwe\&z;GxwN.Me=4 i m5 at[Vazv|R yo W^ P Q S I!`%oaXH~u1 m"^:olg.+P^ 7F{e:!T? 0/ I \vWQsZtR/\` tva1) mT) m$ GC K Mi +IR V2&fZ3 }8* MU h#[9l'vSs %cVyn ChSԜ9݇|\#mw_cCp !;< Df} }ܶFBK #)("|C>= 0 x`OJphb$&!MI h   "e- m @)s E .m3*޽&&J^7 8  #$x!Qt 0b 1ީdD| x8!"*{P lBoSqAf#A!$   v13I(  #c&O"-~"&L# JOߴG 02 }d=VskTn$hS)t<2YOXrU(K* 8 Fnkޕ. ,@* "!"P) m[v +ݣߔNYe[ 1E" 9b # ,a"<#*"*!ZK &'"p"s  M@J\mڌm|F\!~#;&  : a0/+>' 6Fq!">"m+ KZD-oP}(gW1r~ Ajt L  -\P  %77tO 8hep !l M0,yNsc qSi"%#4 8  Sy XRW    > *mj-)ްBmr{"$%! Q1 Y+RPriW %U!F,"&w# O iWufGP$UqN%Fb K X a[Q^cjd( x}X 0J%'&$"|y l(9۩bQ?VAdw'8'9gmX=: r 8D`UA) j^ܧظyL  T $!,*# d'܀{2IWO1G re )[}>,C=Z5ݨٞlJ`  %%(NtB| 00!' A [F.qU   } ?u s*cUMB (b[oQx\?2 dOd^ 5 "Sn  N B3NVHTD! @b'  !&;2uߧA_$H34 1"e/,/n C : fh! 6}:!" *b= {Qi5n3kDkm~rc}  aAOo)~ݝd3}K<{ go _q; % 9w`2nh xl" +=4Y?MyVr8Z* @ }QYlhdi%4! H0>fH=HzR(G AcA`rY IpdGR{1( / }Za/t GHnX@B H  sWz7)tE!y  ""sE;޵$ًk)  9LBs FRi:L>n v :A!W$#2./R$I" p g@= N:;,B6g D3  Nk`H+-f 6 v ["k%"9dF{ 4qyG"U;H+#RDsTm`'_Xcri G+Sb 1A:q8GP(1C%#   Otn : }ߛܗzU/#@j*w} Qs)pvax7 QBUN> g<$'J#Cr q=c!"  E \jsqߐX'8oy ""o1H `w=H\7r\x13 >$ #$<"Y!> 0G f!'.xO2 FPN bQwzp4 $y$!e P%~u !$H .6j 4ވ\E\D0  w6 #%4.ߓ,Cyja % O=A  J^ Kg`B"R 3 z"!2n\ _XHp߬<1I 7K3\Tn W/FIUNs> #h $;$\ s'gsnJ !#"x E1/ C)ݍڽ &y-K) S:$h(Ip= f0 E ;j]8k} KylO 93 @^ ߻ۉdrP2]w #o <Q( :Cxޢ t>!x"j!VEY , '.[{#V-\ "#F!r 9"X<)McV&>_ P Q,A|0 50z[y@=!S,|G !""="! A.e  3A ,s: z ? c(l[ߞK -%('`$3!5 ,6zXrBqAE!z"<"w! kU_ oBO=3BQ-Zvd!( q kEC S!^ 9  ~B%=E HF0 $"6 K.  {G ~?>82 nq{b V7y޳jiSrY> < v>GnO(|tsz  N U' IF܍39J~> ]y:4 Vx@=+ .4:Uo*|G7+'U_:_5hl Mi} !" >T G-vzu[b c{N a"qJ1Bbx Gx) \bG iN= ;3 q)+) gIR%%RoD8sw -!" c fpVS:u#or m"!z Rcy !F7Yߧ B^7 '7*Yg1,7(H*h3 Jq shE!BdwD  H!J$$]# @\ YF2 PZM| 1`=y#z * ߑ}\uP-  ZyD[ EzL/I8Xw$!""!CfTBhNS ): !Z!| w M(l ;Dj SgV. Ge[)LSG4 7Lx o a 8JLtk Z)Vh  %u''F%n!AxJT} 4L\[8m=C l|Z p N-c%Rk b a"!aYO [sAB: > z X>Q$ rXnJU]L 7 m:HW`^= w^ޮ[j=%  u""!P !P%t=: G( ."n" wi w. VU{9a2 wW8 ]Im$p,Z >N+8~ pz%J^yq6d t` !" ~ee3Z;ZirR ` YVk EOu tQ'`Z Q;9j o ^`k!"i> J/w_#C]=o& #U'P U -(!ޗ@$6n6< )V/phc' |JiX+\I04 ; z""#!(E Fy -I?_8S3h#  WE{a  H il~6X{ qC c!%& %"m J w4(3wQ Y~)@ Qz# -kO aVO!" ]~z d;g[-_G T  M' K  \+*>Q: ;M}C k"!cShhC M G-M x/H+%y%8 g1 t0""P6$' MEcA#v7Q\* I19v h?/Loe i ; A*"=sbmWK= :D-Q ItxuNip s7*w\C;Ie1Va-&-JNT1JG +yr!:<WL>xG  b%EiowNMYT VVCt{Z]b%1lETpvk==r2I)+q: e|o,jd>%wvB2[6 :  &2DS!sFHbVDA{vB?12h:Ly!7u|t}%R0s}:tM]vPn~@>!=M4f,S Z L)c=9+:$en` T +  Ggu ` pP/ 03Ef ``EK|)C%uK{0c_Kl\y-R)F Gu7MEN> d LG<  NYbT)\SK 0E ] c F Yu>MN<T `yb d 8 2@aK S:`k8'm8X)x/?p1WyzO2o,6~ C f a ]%:e/U S 'K    zal/ PGS -DW)p [G zGXy;5KbdP(5:+0M|B < J $ )w!I9\ $u P.-Vl Uz1F8(n*B(*ox-)A P < QMwxkp:^ fMW@ fw&mZ].w /  a7Ov4"3J y 9 "N[k.z/c{$@=QY 4U hBZSvcC7#KC)VZ&l 2&Qj v Ry } N=xJLy~ n^y #PC:^',{o|1|!S n I^c!Ph0vElB_z)\<Z'E@ _ ,~riq^](kEjX |N #M4')idkB<* <~uF#dF k[GN)PK e E9V )_ WaGKnvF)t:L=Gx^<{TD`~x",`{hDZYf{fZ  1]_ u%p I%4MQx: ?1pS Lg:9 DNi |H " fjf$Du g n $ ^/ZA#q} F-q={^ PRTJbb(XY1<d6lQZ     h]` { Rw  U%  0Lw3 ; wTzq;#&9h&4=bceo , qd:qaB#{K[k R i q f a'i Rj~1qDqDnAxh^C<f&g , E L\_ ( qI/0rg9m B B =.A +cRW .5:}) eKxa e ` 1 uE*9 S  D8*.(t8}m  [*@SC1M~)fD'l7+i{+OcxA d%7X oyq k1  +FIIV O %F4,_#Nl(."GEH n%_ vL-Q,U : Kk *Z U/g09G,G.  oWcZ>2Ug`#31 6dD  SBuqyd B kg 7 3  VEfx\R xx!'l,SE`_Jgu\>2{ 8 LgN\JmhOl(rT6v] \CA V+7Pr ^ aCw= D iJ7rC }>*pI{wI e.6z W|o .}{tu#4O=q.Vkk[bVo t/+Jd8_  % V*NHo + @s]d ~ Ki&JUv(N;; BQ l`JPeUAA > JV44ay;uZ 8M.k=' ?2%* {_ z G ( 9 |OYtoaL I Qs+ 4 CnKXtYH{oC2k  ] 3ay-d[dA&}+bA \'Udp K ]ESTi|n Q =^XsHk  '-_vL ?Y{8h  ?jw r;nbC{B p/ O `]*`^HT KedI)%1c1 jhq u_|FJ w S  S23y>X3; [ tpoB^)ot* r }!m`z%lc 0 c !T;%I j  { k # nxZC*8RH | ^ d !V|!3 d 3 $ Z[0w O? IT>'(4v _o 1 H  K/F}/3  ` \(W&Y8EMM [ xY -I0%B9A%gf;)BjPU 3 wM V1m<P&.E g1Z}Y) * &nwu \ z )SB3MLu"S s m+Y:,^NR^'2"Y U }@r':lV ;gj]0 88 =H)ro* ;   <> c:"S5qzB 05+ D5~ D CghNd?H / *8 T0g@  } 5 / 8 [ s 5K9/ o w M + h [O{t+Q 7L Mz - 8= FIE| k|O a ]! -Aq=fz>$7vkj_]P. k [ e2 B ?SY[q = o T ~~]Q,H^1 X Vwb B 0W8QU308  w U%m*;5|vH 4 4G n5G(VWCNquvg`Q=2( P  O b3y ( H]d-W^vL p . u  A!b >   j#>= C2 8 | " ~ YFolx),4HDpo Q G T9y*3 yI j4t [_C5 8D tgf>DQk{$:{ ?6U }<: y S ) v X; t?.}pnJ F qC^X2B pU_} *a3[( 6 1}Ld1c mW] A 1 ]+H!B|>]#% -3 zy:ZuaS v P{S:`?0=ic n Y aH5W DjR 3DDM2" E  8 ~cbzP8*<6 g _QI_ib X C v;D7?}IZhE T 4 & cwR!! h]jDN_)f =o>#tnpH' 5 w s^( 6 oT  a #'o3-z=?JIvh5  ;G-QkK F  q1P:/'\x kF 50g$UxW q . 0[7Jo0EB:w:X 5 ? <t[DDG;P[g| H 8 ; r L,u_^ U XS l!OmkR8  2uB}JNRs<]&x g qDB;lN Xw'Y] dL} $a" -6D z< D ` #R.{/cJqB . 4%;E- 3W &5QPS:` ( C J v xJ#_+ 8  ~ \vW{pN 2 %9T"3m>8h M 2. #ay TFw=woSsJD*LE H?? Q Ebfh5pm) 6 ) n o^M6]UBU  X d:;tR13H3 O r  lj !3 $ ldBo.F6U'. l6a 6 W_E@r]]CE(   5ro$Z UaRg 8 2jV5X  T =C3dS v   % &8Zbr k  6_?8[}T ( m<_-UDp  *<,T5F  (xeTvhH% n5 aM <; { Sf guy5# G*<j&|,zr/8A@rNa9  Ms88XZKn HAB7?0\f7a0 a i>,^:jb  s .u ~eP&;$O9IAF 0 SBk[.Gt_o(q"Ud%wL^D63/T<>dmD3Pj>a$ cdKEL:"v}1Im?D(GaHfpRllo|Efl5&-Tq(CagW EbhC!n<XfcSy/L67}7*X\t pN+;>H4HX #n( Dcr qvk \cpB]AOb6d8#j%MY8drz6|GsxwrJ7TN]L;k_T5X=(]LPiGgOj'duP M  U B1Qz82zaE:qQgt[ *K u~M@){y"W[ @ (7O^**o|& WlZ ( ! zQ`-(.GS4EqAy)#+kn~&m':1cgT ]g;9z<QBVvk':0 FB,b 8 %To+nbi%\RFGIn`fu[i! ?App@DU:%^3UX{G?Ir+NL>%xK*Pkt/#kN@^Iw!+C,9,WHkJXr  ?M</ M t ZF4}^u@*atonaxM I D ; By1/(AcxO4%c;x@geL %#*G uJJMXp| c9c2g9w_c;~HyZr>L+DwdRq%6Eq # G  ;i]xOLwy}z* Sznkq4k,HN>O6J1`9" dVi^>:W3@\ed E c2` !~r'>] )IxrU&P{Y}ZJe 15rY1d%^H98|$ ~"tKN* XLoA~w$^9l~7 '  5),~0UnMG[2-+_gjV`NAF%Cm{ {|\|OG*qvoNy'B*/gkicg,qcZL +3@+Y`M (  [ Xu2@}{x[BKDy9Iq+2O[JB)~(T cX "(xNI0&z@8rYwI7i`K{  ~>D#@gjLkT(XQLzHQ8\Eb$L ;Y p 0 .  $ ? v w X 0 t 5  FL5w<'?w-R 30{;W ys < o f R ; b )t \Ga}%2$$[x'#'1A6Sv}gvO mqix7 _81A4I; >5c B   | 5 A 2  B H \< * $cwC[h0st j%#p i M S )dRB)b*Nk _fG07k9jgPOHO 0 u y  9k 8 # j  f K 5G n z d  (LKuv %M!$uYkmK5^g}? K M { `H 8 : ] 9 =  5c4CFu7AR)5{O!|o!=ANB & X 6l ~ i Cj U J "uL}|Nd}3 z,b: f 4. 4 c   G_vQA+oS|QbYk9:Fx*D S H   6 @< P ji|Q,F&Q_NEdQeMV:  ]U "tnnoV.'9Whf`p A ]t_"y A V 90pR>."39\Ah7hq? j - U  0 H | bSpG54CQEkq6{ |  ( +&t:dD S=[65X\VAu pN $   A  Kx  D sm|PsW&O#+4\dxE_ h nO76y)hq ib-3pZ=El, d V`%mm"={<6:=W"y I-2hp g (  - x"zl P SuH h Y >gvg}xSax    )1u\%KN$ _[X d f/B B KJ`j?,}  $>lo+J  t[ ;s!,t%d`n& #~ +t g76f & 3  $< 9^L | $0e F b ` Os 4X  S -f?HniKl?j= Z g bSWH-6 . = hVWga^ WD aB 9ph$c " * Z wv :ac r=& ^ 3 ~(UQ.w6~ 6$ ic_8"(C YB8jN q`=C;>EU: m %  3T)y*cHgHIu B d  k = a(x?MciP 0d .9D 1BE 8HhAA1 }HLaUHNS  9 Uhx[c}  >%_ pACojC,] [ @K 'LDHLt<B  n # cB5e n /| hvbM\ww&f    ajY9DxO3 Z)>Ei~!_ _M9 %3m}` slF w R  "JzK3hIPp A t- Bh+=J   6   ldAgx5 9 # <:q~z j i 5 n G 1 a6peb)N)o]q zXgO 5 Cev={7 "=IU3VaW@  c ) )eSH\5 D  tHpZp"g>F  ` 8,d0K 5  q1qCbP\i4   E_QKn ^zY\ fguUS86\AJ j d r  =jH]  a (/4O\V  HzX:V4nU'   U O~ eh5' pp }G'Ee u g p  tLDD&[ZgE B b 0  1=sQ%fV|Z4 V < vbAA/m6-o >? V_fs]BLY \ c  7`uxH])[B t "JB4{{qz|5  6 F 8 f,&& <  Wq 6 B9u= P tP!lN=IL H&\ @$+zX g aPhX PP  5JiDkhqi CC] |@cC T S f =M& 2qgv PAic],d D] Kv_].)MK@( P o y 1,~cz u AQm)q/O \ AiE'b p k K TTO 7GS 6;V~tk  # go39562k2,qq F S ;]`wJ5 u. \Jh45Tn D M GtJo + Ti1e  uN)dY`.< np @K s010 Zq3AD /W ~w.q)Q< . 6"CUFukV  EFA_.I3 T ( `}tHx U |l@G] p  xaB4(TVlb -JBs{3  UDgUX`Le .{ (1"KU~ # <OYuFQ n'=] ` nfQkH~K 2  '\MgM6Y r u v ~%^Lmx mx 6QO#_'e  Z d~W c X ( KYO{ W G *ryi M r`2 Wb Re gD;81CFZ a  U-_p/ 3d M7Mft |U)0)"` T o3axl . ^ O G =yQ; E'T ZPj:I[&coGb L #!y}:D8V}l9 =\pM{ iB#L= ( (EI4 zU N [ to~R h4cVX7k?H ?u  G  , V? ;yn  = 462Z b{( iW-"u] ! (,|RxJV8~ { \BHT  x1c|ZaMQ:W M   F T  j VB?E0 }MUn-V.j   (y9* 5 0 tp)?b}7M| j*9 {w   -[a34`#bq]qQ 2 ; o6@1cK+(t G UkQ`>  MeQ]  }'qzhK Q <|dI~w5 gsd i*wLkXM$S } L ch-;B-  t Q / 92 1h 27F  qk3DD)  _lU+$pf d)ScKM5 *V eIy1:  f KS]D#  (  YD /|BBb 9DzNMNt+ ; K u? c  P S a=| 7r} o[JZ;b "k l~><J 06z M(| ST#|l&i{S^ bgVI.mFc   m ( 6vTR>  K @dF `W )~+ >  .cg  R7}D q}!t'`(7% Z DiCw٫[bNYW`77 !=$F$"e:nY h E~(ދ֠zُ [z t#e" X[m)->10g154 : Mlp\&tZ4IjlR.!<'a(@%U} `"#B ךs:s (0 D 81(V! hSkAJmcgovz6PX ,U"$#I MLw| -*ZQ&# B!1$D$"\tt iLD`^sk~}|]"U%Gs'߅Oۢ<{v \%!)G)&!qL h98zHL hbD > v+"C ^o5~8I߉2v' $$!(}R n f!N۲~= ]2n!#"O Kz.@Lߌgrq rx`0TQ W ,ݧEn3 yg2 pcg!QV]bYt]^k Q] ! # Qi)}Tֹ%L \  e!" T daDDxRO = a"*}->+!%vt B LG b޺,CsnK<W N#i"_RI j}7s>{Lk2`L [I%z `$~&~$,8) UOx6SP֐Ek S '+ U!h8%6DZ!&E(% \%& G CwhnQQ pM   #W&f&7#_ {\*(w1vKO5  Y f6޸׀՟ܽ~[/Fd/  %`(''"W CaByRd,*7S:rٹv}C4> &' &!UG pK'Oӻ՗t i]+q~H s8f x}OM b)WEqpj;7  !&('" {.2uZvދB' nv^lW"G'('%W! m} Q4.׫Ӱwb U { r1L Y$R gS9X!lXTH $  RF޹$p&gDJ +?p!N%}%#Y\ *u)Q5k@_ xUMV l{ yQzp=ROTEY[ !u[ "nG[meٓ/ $$7s^`Z}U?U%.7h [J w!n$ = S 5&w{5!=E5K f#{$'( (X%  {8\o3KP k ^/hF `fqbfۈ26Mx;rT$c&z%|!- Mci4_ݱݕs *" W h ' =& 'f[nP@xk"'(&@" ;sCP{zNBI? '=a"$]%#Yql|%pGYe2yZ=![$#!:} ) FܟxւY/h6  #&$$  Dm( B `O_>;, WBL! $!r v $'(&"4C[!4~&|q <p "f*+'7  w t"݋'d_^D0CC" pl=stju#wt 5n:;n/ o KVc$/l!-v FC; ^2 XqKچk+@jxh|5 #%'$&{ :^a_"kS \a4wi0<\Ob )zg ~!GNsNb |:!{%*&"0 3  Qj|MSb wo 7%'$s(_ &GK*0^ߜI _MR+Mew# !cUZtv 1` F!8v ||iiz=J٨ۅ7\%* d""?YdQ}wY kDq$' K*F-s/3=d{%dh $!8#d!DA H1bvQ#K޲WUFHuc<8q+ }FߞI {!y%P&B$;e vy*ۨHv@ISF0"&=&H#\n Er&/VY%-lbG5N޷Bv w!%%!kZ2&>6M'7Yqc6)L XR#$"}y ? 4ڐh-|U E ; % o$" 9] J c[ h4Ik  "_&Q)&! ai73X{wHފ` Ieh$B>#E"O Z~,5@oH51%} g  S"1&&R#BT^Gf 0ޝ'Rq Jw%+*#<; 6cLQؔPߐ*zfs\ NfU_ E( X $`9E0[",a+=TM K uhX;/I HTS #8# _) f3N0^@ )#r #z%!mJ iOV,2ތՀw?<[ Q%((#l]EU dH @_) XW" OOp ?lA hp޼v*n + 4"o''#pV 3YN(H%"AI #$!uEn~ VTR^*KDC6XtV? ;]"#zCN?Cnu*!8`stUTr~1- *+'##Kij 2[::) U m>!Z"Q N;Sd+@ #&,$o8 =^TWbA$dN "I((z$PhݨOvl: GKg73-AWis#g ba y/% lA ٶ|s 26wL!p VW ^<]Ia (r" [ m!"  Gg߬#FZHo'3 lI#x&$P e~?(RY&~  !Q'B 5jy2h7GߌM|:SV&L zky"$ # 4 ['n\׷fLP :<!a KbP0pݺ݀f;_sD i BN=#ޥ)Qm_F uaZe@ bA Ip*:4 !p C!$K'&.!) ! ^]Lw>^1nOAX[  l%V$cO p][7k=w3 hO Rr/P2n. ?_!a" "%ur<ۏ&yD*>"3R   0\nܦ,ujb + 4H#\ v 8D]'{[L %(("W~&% j_F1#f} "i$k!S 7-mބWsdUo YnNx 5!2 iR(mi*'- pox %9Z ."5 -*MR`v I!&@Wg e)}!$q%_#::A V0*J_2ޭX(n-P  Z_ 1GOXR,\ 1e =? cOo5W5 s Nxt _W;w}^/ '47wSa)m t|StR, OYf dR`Nnv >/]"M%&E&$"w5 ]>n ?W&.0< B{7g`C0} 9%  }Bz$s+ L 2./w߃W^N/?`ZR yHH2#y 7cb[CwgߟIUk 3 5Kv  e>?C )arކ2VR|Xu =? "$7%# )'c X ^i"LOy |EW 0N]l z XoA1gZ ?mI g#[ s)@"K, u Fv"$%#4 z  e|C}^Wi* Nd} ^oCw~df~k RT R >. x߱ߋh:  |IN.{n Vb 2H)yY uoJ& ,=߯F" 6l -mUgV l #"I#y#v" @{ SbN0$l<]sM>)| S4qKmXީq6 2 - HlxE4g5   cJ* VI&!Qr+D]IfNv`FkV id jGD+S_x2@vX4VA1BU^RLX*)S7C$O`<+tHr{;L]@FL'BY4 b4O= yI' /eSo#Fd`i tW4+#g tT { 62a!J: tL$rEo-GV@$[;1z|wC U'_  7>6Nh9   5 LY,NNw!aF&0`R4i7C*nWX] O}PXN? > G] p 9  3PO*{4|k/d%.PwN7K`cl5H%h'{ v U a (hX;!`K3sVn5R&~\~avJ17Y@3{Ou1q(F,l5U2 *9 !:(69>~HQ%51awp @+ArbEm5Pv#7;e)3!xL lCrf5o;GJW'3ZLKvq]q/F<."P K`Jc!Pl]WqG*""\G]'/~x1mxDS#qV/fdV6( E  [ / W&yIIidSIq|+a-0@ iJ 7 [?=odER,Gz=o L N _Z q S /.Cqwy*$7=OH1 2A"2;5ad*P?Q;.x2A9 K4$yH5  ; / k L  Nb{"\|kievel#bQpzP!`0b:".){~$PDcH [  $ x( mv"&D6n~L,OYe"=ul$ K#"](r;MmU1rn"=F!fA~QGWn2r>b])0qs ZAs`HO-r-&BTQA |c(AaQvP}N_<( GC~/FmsV heZSeaFWs;? jK m &qdDu%uL#q[pl&3!7WojMx0QA]4Ecd@dz Uvk  oL2)oKBk;8Q1_vZe&B%ywE0yzb'5^weOjb M -"SG8Fs.@tT9@$JA7xdt:/mw:0dQ?.J0i99eZ>W]|7IY lL`SLpVQ #Qmp0Zs} CTKC? e q~o}9"MW@EwT l T$n@_Ai4L t A % c f Jg5}FJ0hM`ok;PA>  %=)7 mI=]][)8nKaUHKJU2+Nq*] b[\@HbF=])(Ksiy )M12*E-AF)KV~fUN !Kv.  *ZL7U5*Q^CtKM .6W[wJ1CPo u,B!-k77.pza&NWl&GBs@cKTW:  y )Ti;[Agev%D21uDN ,k=;?E/_+c3!u _t#'A v<,%}_GUP#OP*hPVPj1E,Q9v$V w]~Kh}dfJ%,U 1|;gAbq6_ `\|wNc5M4 |@#*m<]MIphOg/YR,GDB\"mi'5 _u0L~*J}4Kh-z T+CRn&+me=qt5~ BBR0tL8\nEIYoRns'y `p[h&OK1L6 r?+*Rq94@g 5>v%.2|g oJ/"II%"8XAx.| Lu P@'Hf?l}#H,yIj@6Q@vJz?j;~3Ppwp@L@0*KxW4\y|=$`ca!(@{A"A W7g& . N % ~ d Z fQ@(Xh'_={b@uF#`t%-a=4F`r~`UX*"  <T0FH jFfptB  9cdHoSsO%~MNxjBB^Lk#agzX Cn9$ /B+q+57hgCc*&%yvzu_L9jvXcVx@v=$W,oM -JXFDR -q${XYxbrtEg]!&SbWv Vk71ty1=4%hp"~()n>l=TIVSLm" uo34B_A;:`RjOCC1y6"Fx;l.7 }SDr,2(_  3 mSR@d ; e X 7* = 5 '  Ew Aow[u" *pg7vFxDn 3 KF&tevKG?_ #C[It_ 6+hjF*Oo>N[T35O~ mQ!eH@ZOM$+2h-.%=qEzQfw\Z{  JD1zc( DD60d2msFuF@- vm,kYW'+-EWfDvU%ep c::N3BD+BpS/ZZ}LqR{X gO[b4yl7.itHKSa(d!N=|rtN8o;xg m~21fUyon !4ASDZX5q&18e>3^\ LS /I^ pEoAo)%Y,w ZolAEf4]>2ji&/6ff1h'T&"?7XX|O   w E50-RQE\v`$aq3aYX*09U<|NTa w /Z _l 6U_qE}u{e>{ 6F}&@" Z H fB9^qESWZn?eV @m,J"Tx?l6U~M7_Vd^$^Yf~  5 O %[I ,G2 TGuQf<{iZEt D2:cWi$)9DaGtrwj1&s  b[149}v4m}6c)?sDT282mg| _sWVb{Qqw(1{RFQR5/xiVQ^j2B4 q\Bk`Q8_g  GnO MyHf/[T<]+IucH=I->dX1t+_BRS+,-g\bdyQ=J\COKX BM9't ;A cky>bCj%7zU9x?tV{ ,fkc6(r|@L# r9 trb? {SyO_d, V~w!3FY-vW&N'U UuS@2*2:6B:S@Li  +2?ih!^O9zT8xt3iY+,Gy+TfBF{X_{/Y"y>Mh+20Eb ){xIWoF*`0EpIL6=N'>?jS^B% j ! fQ$0~a"V ~l?Wuc }ZYG@%NoDE A^9*(>XP@  *]U9fsm{g+s_X|EG]L{l+_{mHWW|_|\* tj?Epm><8a5Q02QVD7[#g$+V \~X,_I<Ko[=CZTiP5^(bJa bP?<X+Xbc _Ja&27]~\M0 : 5RG^JU_I-gT <%Bq5pu OF>O5/'S#6flS8pVaB(l@M?OQ*9UK\#V#klxLi )+}VK )%lDH}foaH1U+`u*=H1  v >!$jLHueWGyX\Q5|"J_GO:Aa+=ze8.&B)M@U769jM5"Zn *b<K/bf:Qi~IB!4Iwnv5r*$!{vnOZrO#PXb[XXb* Q=q} BSc8B%=TUKdfksbJcfG'A/MfBs X&  S y ~6]\XGoOsy?JL zMd d;I=|ni(AJoJ, }H_V?Adq 4  {dT]L1nXS6G>-1W ]]j0Fe   e^4ULso/?mbiCMo}6),=FK BfY=*+n[8|Bswq9nt(E[[>prt'>yCV 1%^%.6y  @ j  OxZU& +O P;^CZ 'rb&kf!UDf2BU@, c`,InjdsiqNRS/)6;S $ [&3 c E )z)$6.rkOksf%dlA&Fu 0)I^|Vv4=.qR_%gCS/&E`_{i,| WR^{x 3@`!M=Sx\dw.:/ x r VICe2eRzaLUDvL/rR)\4K15N(Ba\vb#4"a0bw *= oJL7.(\QC3 "E[W kmNz}lCAwNj {aw9`BFJ,h;_\5)XVL S8H*RifkHiEQn74=LS%-Wr!t g*_fr2+nb+A1 egGP!$=oObj3m!_=I9$"u[hgZ= i~1>7J|Y=jt.A1vNO2(n>H+qZR}={yx^58@!Qo((!SraVd>O5GzEr9$_Toc{eQ(' [/bmLx  Oi ~ d5K\|GNLf?kO!1.k\S:MiC .s8_039O>5XVF*/2;#K/O qMa,SXJI0Sr(|z~|d 0cK/L^'7zOGKS.C9YEhb(6s#83o*IQ)oi?h_Ve-?o$oi9MgkrtgD)Vj~V uGfZ/&kF1"I+Xt}me\)(zxoMk54eqt D69<{dfI:3fBscFDT  ]R> Bxx}[t4(|:.Q?& o|3jj/Q #d Yc' 9gaPy|LKc5.kt[J@E;z4+EvX7Gg3QTG6Ypl C=P&MM_6%2]q9F[X zL TxhnpHm1f_n2J@D'E8~ w3HL7\0L?}[l*M^ho}1*r&T9YI+`[l/jc|U&:Wbtmicropolis-activity/res/sounds/quackquack.wav0000775000076400007640000012350410724145723022017 0ustar simcitysimcityRIFF<WAVEfmt "VDdata"-1) " ! +2$ >WV8 6LK<,'-9ELH:"=OC!  1>DB;:@JPOE7&   2J; /7@SdcO4(-2+:= (Ye7&72%' /- <IC/=]^@ *95)&-3)@{v1_a >Q40[Q)%1)"9>) !?M1 '& % "+@JIDCGKH>2)(+*! -=% 0(.<2 Z$C"s M}rI~<#o?EC  4^V"=:4^aP1su[VNm\63NPQX:|_9^idP3#e|kSN:]uEXIH :x(G$T80#nf%mT[m6=gxlIm9 aQLLH>.&/Ku4KOE:9BJB'6n|Q+ hasS~kK !GgeLB^t &Hzo)z_R^ MtaEaMLYmBUK's_[m;Q\aju&(=Scq_To8 #EG0&BUZYaroP- \KIMRe >%aVG8?0]nL$)06HbpZ#  +0LjdY-NWCl>4Y*r`I;, -/%zl} 8a}V'(Pm}Vv. $j 9PYZTMHE?,}PEcsu!E|z?4"EDnTzJp//G\o 1hTpt|tR"AqMd/ /CHHNVXK0 d2)Ko%H@BZEd%2[>tB3) _+~b_/;|c\_fp*F|U[ 2s9&9J\tgU^w>|sJ/*29+uW*bIG~Px0=h({ 1MezMA;,%4!i.E m 0nOcfl{xV*EzdEEgcyU@0,?l,Q&-@jxx%@WCZ1?l%p GM,hpS$S,eG`2G=xzZSzm^R?*+T4@-3oLED+ Yf U6ewZSc7>xYv>.CfA O`F^4~>, V }B$`]n+`GX~U   9 p-k-F݊ڂXڬ'S*5 gg` unL0Q _Q  = = Wd9;WeMN/;Dc(WU  %,{E~LiA;L0& v*\mrR<<N^OF];Saqi+!!#P xoy y% H R9 ղՑ+߼k 2 !"c" Q>< hV-NI V0x 8p!| {8 !wF-RPb*Gh~r x QS?Gp5X v42xh;L]p9-{/9^jK ]  6}cr2Rh 2 Y"ګ'Т(ܚt xl{ %,.Pm<_  (eH 4<_P& W L Dtm%bLW"j5  3 UV!4`|_vJLUAZjFeV'| Y J1nw+M/Lg=  O P;2+l((|q6N pI p /i8A%]/T kE g\wg   {Cs4So[b 8|!" E ) QU 5dR[ M mW 6j! i& { <{I'32 N I $ $ "#$c0fgS~0x}_L< Tl*͚<,hbql pBk7; }Ow:x6v|. ;]{q  < 2"a[b = IB_a z b*%IV']aC%FQx+4D"!Qt V3{  .$MW^h1Z4`j [ 3 @ oѴSaATQS4B GyyUT{y$  F }  |~/KC` - f L8>%jB2F _U on<&}n!qDd16o }ZXRQ OFe-){~$?B}'16n2P B ( w ^ ]ۓi \~ j "#$1C:`3\K   <M;<6 vN\  dH  SL1\f hZH{(P ?\#u!h[+R}XZ =TFC)qWAe 'lC0\ yxwѝ/-h!۷߈ O'' yܢ% > yI] ( #rQ&5McH{Gy l W: .  whgN&^]g#.ta$Tq [Vg<E#x96sbG .1CDʓ, K% c_qF&(&M7( 0f W+2eD|B lDXI*'r^gqc$yeKV^m3a3g%B9Mzm@eJwaMWRU^-+hwdKR,Sp>K;qr}@ k#32 $f-"bEM$c ''dN*?$=h u j||@ wlgF @ 3}Epj]Hr3,fR6}QJ"_f\ -~S\*x*]fBnrl x-QSUI R'( <1WS*/KY-3IzL- q-Mpwm.,?8ոzj$*&G u~ I x2a@Tw N AjPg Yn3qe|_knK?lnR }f#0v*ZPQo%1a r $K8X,%pr" \mzH_zRX q  NG& %,*]?7ぺ2TJ"32&/Bf|I m Wh{ D+55 tp,AhT ]?oyW Mb{wC V~ .^t+K'{2c#Yw5-u{?.5A7 RX }TWwk8 U#qQ/ "ׁ?'b='7^o ./% 5I1p(:! O; /.Q Q4 !+P "$W/4>F4$0BJ8^K3x&4+Fao7at^@f< x6Zon K G 2J!+ ! n-(7s 9g [!+L7KA+mC5W)P1E*# hV7 0  ^Z+ Z r2Yt?I +m8 Vo5bJ4^q0w>GXI,"|{ec!B-cdE"us X W q1hl^:yH: $ r֣OW/:*ƹ+ $,N' <S.W HEZC &a lB%ew -px_ V  't_>zJSGG;\sE "OX"~q8Z`( mXQC-!i E 9BGW6/T +w vٙ D *9|.1 } S/+(,svP]I !5 BJl M HkFU~ o4!q( 7p$lxH<kA2r"@;h):2${*o4vWaxqUPES_dTz`C"II mlsRہc ̞^ n)4^(:e/&%}_Rd =} pAG  / K"O m [43q &j Y `PA<ZypK|k>VI@WeaAI6wcUtCo_K$ntQ];B6K A QvxS z 4Pk dx`ߊƬб, }"*O+`'Ry}NM<% _ T z$4     K aq `qwY-O*U[| QjQq1X6c(,?= o.1z"y4,s?!~- wS/ΘH>  dܑw   *g#a @A|) M sl;rupP } *H:+$ W 7R#t _;ay1\\F"NMEGu4}nb!Lt|x~bS76d3 p-d6r2sP  GK ?6D^{4 &* q&<`1oO` id^}& V9$cl,+#ZS1b+wXdmWy^e/GUX[RZ~ wy }.o6Q TuY'XoZMFF< NpFA1ܙ+o- Mvs}9 TXtP % y[.S "J4QOfy49qT& U.v!#E XzMTO"aL#e4z YUW< ((D<XW KCS\ cI OK<` n@eoM kkWg}hV9 s\  8?Af Ixv}*LPr Kt;Sw`3U3"(5: :.$>_5(9Y~XDE"1y%\#}Tec>b^QKNnvWyGf!8=Z98_(( M&s.L<'hk4}HoHTkqqLJx-t4:>= GO3c%hp=P=Uy7MnWHOa}HGjr!}^$u!OZz~>cK[+Bs %W'a5zwq=eNdGf>,9vV%JQe.+U:d k_h|n0pxRE`$%1lq8 LlnN?TOCBNbt|rovsM! =E0_U% Cm &!2A>) N~m[=&\w\EBWjd9~Zb4" 2LO?5?VbQ' $-)2:DC/" 3Lm|qnh`ULHGLS^bW816!#1 <[2e7_J>0Sa[I:0(!28+!HilT4#&*3m{]1(-,1<B:   6RhpiT3 # )Kyz/"cmD !*3E\fV4&;P^V3#:4FBtr!4$KXG/(9Q]TB56AO[cil^BDeqiWHFGF:&)00+  ->JLC0%;LWUG-     .;ELLA/"!1K`d\PKPSK4"//#<M9~fZl9G, LlfI0.<D8!H^T4#)# /:;1! (,( &BUPA25EUVF0! %((*2<A=2)(*(  !)+*% ,BNB7K=0XjdR<&0UqvgM81692! #  H}U7//+"&6CHGHG4Zg8936WQ02XdM'3k~J'$24   /RR1 %0*,999F^tsY8!&)!+/  )%  P}zG,gsF9M@&$.,+CO4 &<@+   4>A:% ,6+ )) "13& *981)(/694/5LnX==Wsx_:&,C[c[J2=G9,0#  "+3*-A7/?+ />15evfE.1AI6 $)  :_iV:+3KfpgTEDP^b\OGHKE4*.!  $( &%1WW<#&# )XU$!XwQo87%Qf`H-#5JWZQG@@A>2  (3;@>5+&)/1+ !  !-2/(   /62&)24.'!($   13'$47)#"#  %+287. !! !9IA!  .."% */4<A5'/ ,SYC)#8XkeH"Barx}iA2>H;   4H`{}`D.D\XB01=D9    3JG&:HB41<SfgS267 ! 7JC+ +) DtlC ' #4* !PO  :cqcH2/>Uik]@KX9#(1>5 7MN:'.4HA(  "#  XsFmJ  EO0 #  $>RWTRPQPMJIF?711/$ 0F7 /;.$FXK*  $#   %! .9+27&  &>QYVOHC:(  (6*HQ'.wm6lvS*AB;8:;1$ +@PM9!  +>=&)" Eo%$ !+    O_74kg; !<?( "7LafT6((+2( -4+ * /RU;%EP1)8$#yGI zDRgw{iu!s/V;4Kd@ns%O+|!pr,(m"8S<![OaPBy`e1O;]Fm:e02r|S+ ; jUg4NGi` |uXPiIV}a&$U|C1Z~U aZ#sXR^{'<NYWK9*" (' 1@<&  <]ndDAT`aS6|[MWr?P\qG~`b3Vq~2-;?8&nJ69S ?m \W;N>A=<@B>2}8T}W5#,RGIut (8\o)}C _]%G> D b_be|aG% 1rJ~[;!O0QSVZ,rs6_9 gAZ*Kk Y?Q]F/s?G^ ]A cfw|{|s_Sn"piDDn}%wlV7'ZZ.[a1qn49g9A_3D ^PVdP3 7&"8CE<i'Q8q@cfK'( w}qRBW?` }hU@- 5ES\\M2yGstN+ *7+S ;~P+$hB|p (ZbuE+Z"PQEOt1)<='Q3  \],;]/:StPwWTe0R [gr' ,E]}:G>,^R7~'95`DcDx,;hH f,}r"-R_iU Y 5;Zۆ-ݜdG_ {A^ 6CP \)xuv W"NtE=|R  _I1 d C #jK [K:h+a=HXc {Hn39{ep,/< ( _-b 2 m &0 Tzޞ״Ҩh"sfԊ!߳yV>S! @Ib _o{HPi)G _ K!|c&x m/q: #9Y G g]/]cJ-|A@Ytbr-YLlg7k~1W(76 <u. %=΀-շ9_Z  '*(v4SJmR4I Ld8FYr Yb9 0 MO 7^)  LgbjgF  -c0EM'>dEP \Q)}gGI$=  M  > m | MT 4d{>= I5 :ZܖD X  M=k>?Hx 9goe*Y Y 4  +"CP y KLL [# ;yInn N yA p  9cCW pA & V訤 Ոe #MnD9M G~W\U. V%$QYUHx5>?NLv   I kK3AY<  = ! @:8 T J zw)W 4 _ W 'KRr C1y &o &O "I-nM:  M1`} p'+ &W&j߇ۇ,z ? Y)6^l~ a$/! y m>cZv U# "hL__-$dQ,Q&O B  G J d  _F#*k'.%9 t&-X! $Fy3  | ~Y /$?|8B yPLWs::lw 8d3 J 6H 5{~:FKzZB|#3S b  = %wM9+` ~ cjRq s90eT cdޣ̸%ߧ 2,8-?^{UҊ9)98#*ֵ&{I< G%UC C w W[ ]b 87  e36rR's,rsu;z `\ UID5|(KQ"@ VT4rD11:U(90d" 37+,(MɝV)X J6 3D Opi $ PNr  Cpv| o _ #w @@d4&Wi 'f}Dic`IT k  %  E$% ' z:I A$r_KOnX'H P![mu"  |b8YCO ӿd\'B=G(y䤵 W'++5&ntٝk "+/%gbY~ !>?g}pq  j k4oT#ar3pF`8} B* 7cK-;&B~o"G</V   HC^^:P.Q%?.G~+8Çf 8()9(*" FTƓA!-v# p%EXB" #:kIM ST8&IMH^.Ql:wW(ae 92)sR!g"$K 8ahb>W Mm-%up` Y  ,,W 6/ _qvPd a/)7Kw)Y-OVsH};~j.K\LF[~#3CN+ZGaZ?}y 8 # ; j:9adb^k$6z+0|GԼU"v#1$% e ,׿ר h sint Es 5X+ ~ ;x0 `jv/& s?2|oW$*fJFcUW/6 1Ui >4!J'; 9 H H C  Lԡ1{f2,;*(Κߧ6K$A#+ F@p@  4c /!Np"} L+DB2to@m + / 4 Uv J PcKaS+jPP?/&s"**i{rQ2|  pA 2p:Vi,p;)[K=#"x` q7؇ 8cn[ !Xt5W d?a 8n- e(DroN1t q }n F#JzG X;q)/%XUb6m=56<' {vi  \ # M q XD  #´| 7:l+1Ұ#G# Hx g0a>" "F!WCx0tE XS adV %Y$ =[+C\(g!5x1ALAk,ILne  F e P ]Ha a;??ƻ8K7_?.J#!" ty1}ރ  Qa~!N !1g) U' V k,`j &9s<*3$+:F=`~?`CjXvj/ 7 a ! -4[pmo)>1f n^#!. }rW׬a^Au$ qyU) x49  4 /S+7?}n?(;/z VOx}1;;,UIyS69(}Yu~T~ !h/uC E E g " // Ӫߺٝ*:+Ro"M  >nzeb47ol" }G)q D R U yy,IV Rx37;khpgd!CRHk5cGqATjYoo-~ K u  LvO7' .Ɣ(58#jC!X!dSGU۴m .niLASs"cA - 5Vz } DWx%HP A< 0}-.7&zss?2|~~m$ Q ( xh^Z; }z- t4p/8?%‰ʍ##^k!}(r:5 r%gZI2 933 9x  fuVb B9T%*Ry3S#&5bp3*"zO ^X4qGIa<ljCX Ok;\үתּI/VA2*+#V !&!8 !MG]!_0I" 6Bs<5 -t L _)d<=& 9RS:21 f=ZeW<dX \@4%8ggj{ f N >L0s `"=ˮ/ 54=';̦!$e!S5W27[S ;9mg2R gnG6 n j9S$E z ,L-NA pIkK<MW!V 5x_o6/hB=~^FhE A2Fl ,0 ;*ȠH` 57iy:ѹK8P %#/u  LUxB "r]he^Z#7oH grn S9# wC5%pULhv VfCe,3@f"1Lmk !Eg]_ S # JI C7#B1$^>#h$ `?Րy my`f 4{7_  q{  K 1^o;Aq M J_qu,H#< b 0{?Lw&y7,>fUWBRCTU2"Jc5  3e.Fܨ&L(d `"& Bx 6 6S$<;" 6d @  <WRB  *)g~W D YG=U n *;l?z cmvgCf6_"k>w%92JPUoE[kI;Jt($ \]KV3a$a  g`wبT t@ x>d  P`j ~xNo # MB`p HM^6  f>>7G4g7:9xa9$-@+D,a )/:?W6:J$v0~8/xO 9 # u  M8'p&; O 6$  :h(^W"B}JT6&OIcMq$l#Xlf$]ke`8U,[q]|:_7'nm[Uy:H` 0sOo^27DKZg[U '@_yfHo'7;KI:i-:'#L\ Y`Q~ wwYk$1;#fdkvoGD<[.Z3G@zN8'q+|-,UG)=/YCy|4 @)r!J<Q9uWQIW.~`H- I{p8?L9 9XbYLA7 8#Nk{ 0?:$la 0z*@J<HzVD-7q@6]V%9Q\ZM0 ,%`=Gurh]L9+*4@JLMUh{/, %21"5CVm{pQ8D{uQ:-(*6J`nrnh]K3"$=[eGzjvjl#NfhT3;W`R=/5J]`M.0EL?+ "$( (FM4 !":6=J88_wsW4 *N~S30CYY6,LP3'863;Oa`I#048,.#))1PGCI! !1YcJ#*OXG./( (!CG6+AH6 %E^jiY8 2IQV]_L$26&Ekv\'-*,%  #:@2 *% GsuP+!<G5 $76 A~iY[^N/(:, )/(25 Nf\C* )$ %-:HH0-&+20* %8AFR^_Q5  3DNRPE3   28 !-! 4<:8:9)4?IA;5 <[^H-#7[|t^VWP->_prbL5 +;@@@@?;8:=?/ (!02$(&#%+6BJG;03BVXK2  8UK &(  -@E?4-%  '19GXedP0+.9A4!28'+1'    !   (84$%:HOS\gpofZQOOKC:761% ,72 !"<B 7A2++#;C5-=A92055( %($ !+9B?4&  'J]O* *XuoU?>LTF( <:.9(.3!- Zo+HYM3%.+     " &/*  # 5;( CinQ,!1KP6 ,ED- ?J8 #1?B0-J[W? $=F=.,9CB0 #&"! %  *'!4IM?'#CjnK12Jed/OuM Y>1[P4?@aA$tSJM$> (cf) e tiVY5(!+dL: "g;gfU K~ XB.k:v WQ=W{3 ^ckxCyYzX:L~Jr&^4zb4Yh 4K< @r_'.h8sX y}U(^oV! MlKw'#Rur1#HQH;1)  Jd"%FE2@A:-  'Qtx]D61+!OL!1- (73  ## #AL=&<FLU`cT8!5Xnm[IGRW?z"580& ")3=EMSXZ[XJ35GC1"*.*(*/2/( ru %" *9?;-+0!".101684)$9HJ;!!&>R[WKB?BB8   "%&0. ('    4@=-"! &3<5'5A7&"'#%()-10+'+1- /CI=& 1AA4  .1( 2DJC3!   "$(1<KZitvl[NIE:" 3SS/ !22*(04#)-6PR:$!&,#!&=TZXUVXZXVPB+/>FMV_aWC3/44$   &# .:AFMSQE0!%27+?N&QK336NfxvZ1  ' 0A7  +GG*"&*+86-0>Q[YSOONHDGOSF)micropolis-activity/res/sounds/rail.wav0000775000076400007640000003402210724145723020611 0ustar simcitysimcityRIFF 8WAVEfmt "VDdata7 !%*,+&"(<WlqfRA:6.wY2'4=DN_t3FVo8Ucc_dmn\= |ij{^{[KWton~*D`xznjwhS@(ymX3vggv5W L.OlsaD7L|yg<s^E(~ti]QF?<@K[k{%;ACM`t~mDh;wspr{5Z(19Jo-\xsAtB |eUE2 *Qv+<Tv~xxvnbYWXQ8 }h<LzI\C*ko\K5pT="dWUOB2+7Qs*7@B>824=IPL:"  lA  3Kk7IXh};SO;'$2DOLA1nXD6*#%8B>+%14+pZA( 4Ldrune\\cp0986;J\kw_3 /C\yqhifX@+!  |^KOdsjq\7##3Ot$KjEO0&17<BA5'"2Swtt{xdD%+S<*yw49LSQAaK$6V!Xu NRV@ *qtCjGb0e+unou]mlT3SuUC8- 'Q1=oC ;:,.Z.j{pH@^&97.3:+ xkpp8bh42>2Q {s}!,-,+( #',;Uv=MQUcwxnkqTP0Uk=K&oO m+<V |iP[ 2$un,7lR- = ,  ?hGT`!7LO S-LDz&}\l52z/X:-6]JgU:Y]=4K5\Nx9'<a3o[D&3OcxHm|~vc> dF73 Tg08 v S< :$+5)^|Cul7 a \RB ?xQ N =7E߾ߎߌ\. Gj4tW>70y 3\ ~>b'9vt J[bY11U j1/JLTB;W= S 1 +  1NA!O@JKPT E  \ a 9 ExI.1~zQ5"hs,7 E x6q w ,^tpLˑ wl ia#'*.023R31,L&& \Qmo :(^vvbnt !!g" llo~ b PGg.>S%Y6/yv  %7k > 9 T + P qvuq`ߛ 5~D<UW P,  QI7LE Kd" Z hc3+$S%D"c(K 4N͢{w~վ˪Ѝ ֻצQ#]NlT#({,.:0i0V/,(i!VvmU#cDZC= rhW15Gz $ #%%$S"gv= BmzM l/8x'[uxk<W S oi^1@, qu  d V n3l`[yoG| l f 8G[$Uc6a 1~\HMפ\ԅ\k?W\V`$+14X533!/*$^9# }   v>fֻؙׄܽ0H7rE BDytt"%(O*)&p!j k. )S_R@ W}E"XS^]g9 dsdP&TuK *[' D .XM1`qHkU{_oV Z >P`ZBH8- ~E@^q; BϾk؋Ӏ#rKNF$(**';%" U5v۟N4 %(*S*d(E%!s7Y >U}=Oc+QC ) @pH ngDaqR8C"ޚݘ[ 3aLk $m z G }klf I J  X 9]&$3w~EjF5K-I5  y|e[ǥ 5ѱT.~֐i j-h!!K$@&:&%X$%F(h*V)l# +m4i"ܡ39R~ 2w "&%*)%b1 +&`NeB=ZzFk.E@JAA @ *L" "X)2"5U:F7`+E & W7 I  m ~V6jbf 8 q ) P s,) R= - /hfԪɂzTǽpV,ƵTT0ν6 #&,.-#+D*+z-,4'! fgT?*]<؛֋'{n`!'E+*u%WC.;a7g T~!n`7{m Y9J?J` L7$x}Xa  LXDv 2 " -6"TQ'C ~N(1wYv!v"! kO ߫ՠͬ 3 0bb;}efYTH a$*-,++n,R,)^# Z R k3#8M & $f*!"!:"%]&1#{Q!|MGmb H {G " To>Sb 7Lkg1_: }pJ% J . zu{n gpbyzX)8 x22M"O!}"!mD O[M˟e, pHFϾ<;<9P (:,+p)p(*-~.),%)h0\0.KYm q .QV*$P)X*1'2!~n ?|Pei]m'tcG k`*x1>xI2_& Xt#Ikoivg'{'w0B - '*)Q'&(+,(d  s R Mۯۛ߁v=!s!/ 5w( #"h_l $$!8 (:JU"9/g_eZ2  z&B- !5^C-G].''E-FUX^J! qxf _a:w@c["h \ L:IGg-pZy *]v۾ Nw8؎½ǒ !C M  kw&&0"f$#*KQN\Ot}eJ4 &w +p 9%&(#I  x]dM@OXY)CTt)*tu*Y 44  f3|N/@ ,3(P \ m QU^1T4yKW (  = X ' ?|  ? v P"c O  A v >   N:VJwA ߋT:+NL׈My;&!#S$q!h{? .vko] Se),f q!W$&&%|# [Y)K;_bwM O/(p:a[  NL*>mQsk ,  ~-}q/v/WL>NpY5Q91!} L   T ! p 8 G ;u+ < , .݊Т1ʖ]PژxeT#$!& @>'Tp$`iGP/ " #&%l! z @#k.TNSV rpl`7 $%(->s{x=I0 "1*1$ #.uPELTsV  + E 7W=;x~b2Y>5 K GB ao{&jl "@s 2l2 ! e #  !Z ' : )  JqHfqG!*P_6<q Hj_c&% ^ O;tBvJf@<f!<" "X &ILjKv-S{ +s.r~Kis?G O \ Q:g . nR))/ e8hMRL*Yo! 4k3~Cgs}tP<!z*ssmb^z]'Q's'Oo)G4 $(K.hC o!.&Qi { CQ@$]˅8_(3 CwEC cHy ^ xYs%>%'ieoam x FY) ( nZ5,Df=)-m1 $ }t ; #9yBd*6b53GKg ( %]  ] P[E+$Y!RkqC[ xKqZYrU)tRtzY7iCVT:6YnJ% - t   BkyqdP 6e SpU-T?u'2\<5r 9 { % %4]:D|8SRӶѤWr؏*rCa !"T":!/E {vL-]S.*( /"I SK($c(u_ P )j&{B 32HQ_L\#3V_;T 1I#`$Z R U]G$_2R^^LvD~P|3؃eDQ q %@ !!: [5Q <;,1rYAO4Ef{,nOo 1 xa @@u?  ,wNTTOpN!] ZDF14uas (wekC!+\DIY F :  1N .X)"n2pM+vQ="C+a/A-Y`MpNc;S2b),I`kkehf@V PiS }5i4Gvu^C+q|WN5xRaYfTd6ac!`e~`:sٺm_HM'] d]azD$^  heaRH%}"b?XP"'HO } ? 'J4i >~dO_8EzCO`sd^%}`{hQu?)NGM 1PfmS1RjA:% E 1 .Uippqmf\ez p^xO!0 <B PFu+(T9  ^n9ll\f:(a&&}l xHP{G0y1ekN)/Ytj?3ZXmO_<Lg#\a)Ds]f _ dycs=  @( QaT '>sat<"&>RJ!<OQ2lAlMd6T&}2X]"`5UOr|Gz D01mu {:|/:0 x;XNvO ?Slau\nDNIj*K3KJ[&/ja{We?Q~1y3<_m"T.6APYF(+|<&F^a@9">MWk1ZyI>G5G%UzY!4 PtmTCOrKrkui4d#Qmicropolis-activity/res/sounds/bulldozer.wav0000775000076400007640000004144410724145723021672 0ustar simcitysimcityRIFFCWAVEfmt "VDdataBhJqqn"@L) N" &'$,10,yjhpriQ8**25209L\ZD* 4Zx~rfj?U5emJ1 wW9jamwK8~)] .aB(%g %+%&12yi`S?*O,&6Rw[F&:}TR!AG/V4|"Y_id#hZ1d)+9sj`^(20"WNRN?wx` {wM : D!XAQ6hZ5\.Uws w_Jokr j*mG@qnsh^ppKRRB \ 'fGsva[N / q : F](`@j x{UKծɇź—\yv%n3[<} D@A`T0W # Bv  }_Z5^Em9l`;+.s# 7 cC% a V  K1p#+=B1l?ax!$=eT8$EtC$#PO S'Uko$6_ C l U C D~q&d .C@iɕnʍ͋@q1Ho-  (UE d o3|A+OH 8QG' [ a Y ; sE4TJ0]W: rB"UZ^'3YM  s  [ S6p{ah5oPj*  s"4 X;o7LT*ȘĩµÙǙ̘iԶ('o: V9(Y"$k%3$! T!"" wL  _ R2{<"pN@zL y   l n`$xf'!(ZVNB!BDg\@?hr Iq 9 ^ p\S}! ;jXNq~V | pG!j^| -%OFѸIDYȄqXBd6  #j'h(1&X"{- c"!ehw! |2. {giL > / b ?  =al/\QYVr2uY } u([, Mr S ? 7 zz/x} HE]= 7(Cכѐ̂f |CV{$oۤfhf"&[)|)e'$#\$%%$! nCOvIn3 ^* M- K% JO{  .w  I;Jdf) Z' QV  A9n,N KJ3\"L B   z [ #NyhͬȦԻ ̼GZHS k"'+-m+(j& &&^&B$ 04 { | ; ,/Gz^Fckn1UX$k S_u@44 4%,!c(Wl Nh#N2$ E j ^9e;9R 0 _AC8 <WeVP2vкpg_{] x]#`(, -6+I(I& &&D&#l Y*D( Nq4tyKb}-ljx 2 y-& ou~(^0 -otIiԋ3wҿeSw󷝻 ɘ}&n. |^ j ! {A2 R""!F  7!% .GNJmt?I0(& Q f< 2 [ I zf\<(<@ LL~t ? 8B%?}n?JY ',/F~Km$ 0kFuCY,1JTٽ*kTĿ?u$GN 3 1~+( >! "#$$#!&w  R5-(b"8cfQ!o.^ e ) pyHm+v0p'dgA & s n :   Q D j  K x  F @ - S F z k LC<2څM9U u{Phk E BJ<D)O\ z kc$TVz _~;d|#pIfd=NE1.}=/[Ui(%~6 -if Wo?yfiH%:"X'hgc(!c6O1%]wfuG' 83:Z{h=e{d;~io2Kaw XE|&/J9+jo Z0-w\l|_n^^~^ i53KTHBjT\Sjs>6m:Ufw11RoW=_7IYg|NGr?HA wUWHk>52[t,d1 1HiY"oWV B'm0|``Q0u\6QxU*FZ*9(  mIM[ > N 0#gRXt@( 1fC=88aZh ]C^Oa_)+ ~2w:N!fNO<;*\%4]02 B;494H[W;R 5 3 l4@S7g;+v 7 # |  / K-9Z1m\HN^;#+Pcni O nOk<P~M5:%bJU> 2^Atc=.A&dv}m!u_&',x P V6O'| +C~TL,:Psd~8c ]d</tR7JFAHF"~9z ) s  7 1 q V  - D N PK:=q8 tye%PDҡǺ(ʲ̧A%ͺђԇ<% #| {#8)++**+e,&*% !!3L{ %jtvPgzwyh$r;Y ] l t!n qY GJ&z 6nm]5oaj&,G37!yy8dhsa9Vjla $ p 'JD(/s3zF0")^ Q(  \2՛ρؾ%RŚɺͬφϾHVC!$).L221f001/H+$ sB hw8ߨW4>$ @> 0ql y O |  "\`8]-\; 6 @Rh,ho$D4SY xcJE}bB-  y.VIs W = 5 / D { } @ X D- M L>܋) Ͷ;¦Sʘ;˓&Sѝm |"$$&)-.-,*)(*&";- !K#r /Oj#%(ez( B7>:?T &  UE250(>_etT t34  Zw[ i9zEwR4:`  5 8Uh1)C.j  ~ ?  O e f E _ _Z n54}˪Æ*EJ b֧/Fw!"#d&)+,+X*(P'%e$6#"m"!csI Tpd ?cI!$(m *Qh C^ u  w/ ~h/w z tkcM['7(GF:.= = G vZI|93J$W v  LP1 3 '  X G t -  V j M uRؼHxq]1͔ϟOΠѠש݋<" n; 3 !}$-(N*`*R)z(j((K('E%#"!F "ymN/a`J2::HQ  d^WFS<Tm`B{ @*|s9Y8Ss X.22ee ~+Vz;+U Bu':jC>,2_d Y ~ k  3#  # ; l ] }Y]eQ7F$ck 7  [ 1 C v _  +]tJ^n4ɬ͋Хͅr1վٛ`r^h dAPC!v$C&b&%8&c'((>'%G$z# "!p >0_ HtdQ: B f{T F  @E BLH R/ s*e5 u5@V%<(g-lO8#e$ / p }ba -3 V 4 Gl(<_ccO^%"xEgVEZ+lѡ~˺"ws޶  )m=\!D"#v$T&P'r&$!  %BQ-)sGLH 5 "%9Mja/+ }CheT ~df|Mn73DZ~|YB|e8QM;zR,`&mY  Z  _ a >j5kdgR3 $-u9Cn|em7H{Pp8RX9BR=*=n]I!G6"u .sDkV%'5'$H[&^;H+=} V 9 n t x `U /Fe5$OV-sClm>$|D-^8f|(~*&+m.M1CK uNm6<]P3b8NeL}pW X/dEMOZY}J \dn(lR}ejl8aa?ffc),Dcbh Cr88CtOLgpF-$AUD]#;.'w6<^q4bzG\pWZBE=E(0La "[y$0(VdtSK+{C\^f  $V_, #^[3L`nDq!d6q*@%yMLRiAX ?~ID >C** Q[D]ik~`7%e"V:KcN!Nczjb){I% n\!e - H f & fj YJ[E=<7|*M0mb|KJ~hBP@K~fo6>p>EtwuT%s@8uOA'"{[$$'cR;St-MRD q:?Ot@ ]$\$=a'>Oblj]m|?Ur$fc 1RS^HviHjEI g'uJV yEY2gu+5O Z m A{ M;_@_4i1KZ$|wxE*.z,FR3c7>e&rj)_p}Rb_]9L47mJtME [? m'>? f} V 2o M  c]d>yc  pGs&^{h:vr^;` :M@N]EO{LhaqsVX;"G8dL_5QW eflIjew.aB- |p@PXPrqzhe+/ eu, >g /c178}<5Ew9/g lYsp` nG9 ,^Xs~j' bMV&Z1g>DMBy+0KZg0`@*sM]iIad}+2UKg;[?1w?VD89H;) 7dM4'cQP!;~L|t4W8Nk`-=*J.,Q7f2#cC;3*i7`S&fh;Q}k5'^R\4c`R&b))/BCO>v;: xzYHOEQWJOQamQ8I K%p>rzq?tSnm 2["oS/ KrdJ{F|(Zcl?7* UnHy-i\D99%j*^\I#ad=j&Llvez;|uU@,P=0MO9Kc8yZk>$ -Mr/ dqRi&~c VN mKj4VrY%M =_jOZ+nmQ=dNGDlx~ # puM'@Vj&d< 2 BYK G  eEb-L^pIx<'5QN_/[jEME<dx-mYKyTyrm'~4C;@b%Y1|8VG:imsM&[u(R@WV_QVDY ')|K W % \ < g&/u޳{۶{ݚZg l  _ f<Pb h,hC{BO4]KS=`  t II ! x  cu81Y]+7 u_#&#-]a@ @Tx2sqQ&GQH~P[BOd2  U U ? - + ? i k M l  )O^ 51.CzW F J c w;* y T,p0=QGM؃<+@jO p,^y*?XU Rrwb>d4}$[jIhX_jiA5c< r a % { D o*d,,rr_F`i0_E .%j'o8]T&5R"S L$!<Hx48B0w Q 3 e  F C 6HM0r> G-c{,/]{ e  ] #k)dDJ6#$F"f ]sql.lj]| W>@ LO9  {D+?H\yi>jPA_FPwao, Z7~19"e 0/)0_lfLNg1R@|g4z5 I~YSxx^7mu t>9|f?oN[93g( pYN>rmicropolis-activity/res/sounds/boing.wav0000775000076400007640000004473410724145723020773 0ustar simcitysimcityRIFFIWAVEfmt "VDdataI  !)(  (:7#"(  *2&   '0,    &)((*.0+     );@8 #*./)  !            $''!  ""     !*7ENSSPLG>1% #&'**' (241027::88;AFD</"  #)-+#      !! #'($ -:AIWgxyqi_TI;* (4>GQX][VND:/#  .:@=5-*/5:91(#/7;99898/&%,-)$#)12-% "&)%  !#(0:AHMSXXRA)kQ?70,/Ac'9HOQQK=%'>\eG0!:Qclns|wgXJ: |kXE936CZu}h]]`^ZZf|  04) &AU_dhrt`OC7,)6Ob\6 a!8h .TyiL. /Y)izlV8 tC ,=Qfw~mP)[;!  2Ul}nM7+$&9Rj!KooL76>DA@MluXFFI:J{ e" Q^6Ww4z8 W.LzuGn )f#B&&&w&&$!Xk${r0Hp9@ FjO I O=gifg  4 Y  D QK *#ONSy!$'W* ,,^,\+)X'#/;h^&EAR䬶ͩ.ܵwYH; W{` 4NDiE^ "k(3s=DH%KLMM"L0HBo:62p)O$Vx" KQ<K0!/ 4  13xIdYd4Xqqcb ! auT .L@-e 0cp 1 D)W> ~J NR$OZo1 NT'dK,q%+/[1/c,'"eGD\#X(Ӝx0 ?|U!" x! 9i> =q59  {  Br |K+`$t|4/]L]~HS61M) k3,-rH`EO ,G-_'9uZ^:V ?  %:()*)'$7> 4O˭$Ά4W/ $+0s3A3%1-)j$ ;w֌NS_w "!H##!A8% Eaj(WHtAj   u pxXcX_B/ l T iN[^( 5~9: n9u[l+~K v f IP^r/7 K ',<00 /*%VڜGB~w9_"3)-B153N30+$3 4F*VhVjs" #N$&I&#n rC= )5;RP ~C\7 Z*Q Y {3e{Hcp`xU[ !Lpch^6+w'w%rrC +MBaP%*ljk+ޤJٴz(t6abey!$t'+/1.&ej5֦͍ͶF-0S)%H^&.3662+;$I _Fn90 {"" j To0S@E79w  CN h Vr`v>*g JB V fy  -JoSxM* 6 R wj9:1]M WXk*,[EG8Hw:X8esvQ> 8 % { w)i(~@P˞҈+ 8*1507U64f2+/')vQ_j̉ z(0G6x7)4,"> Lg܈-7BcZ3n =/Irp, ^>]I ^a!N )f Zx7#,Mj2  ] " Q (P'oMV W`]J1h(OgdBoNSD79qmT 5~Q\go{vF^Q$8-Rح 2 &.**(# <r0۔Ӕx Y8 ^U/ t| TT) ^6g&AD F@ ( b^HPjUl5cb 0wR80dy,- y wkPL?ARZ|I;fgf@ , # | F  A ckz8hBcV P ) 6 c^jAV0 %t(ʉȏ>5(CFpB :. Fm#)/:+*/Ѓ|26;I !.2/)" ٱ7czTE $&[". 6x٤H0?#'&q! 39 U  SsF/ i|K)G HC} O4=) >x 1 &YL.$ J8E,*0  cVi{6r *,*P)C?jft cevkQJC6/C3@0Rނہ'"++!4OD޼De7- ;@ al*(!_ %%hDacb ( r$$]U d: .}N([< =mz##O% . q?te 8#Bf4 qvtcI0F@\Tjz`C43Hyi~CC78OGO<\'Wi R7 " uiԋfݠ=jIR=[Ǝ>%+5-!.=V.I6) SnwD jd1o,]p99 R/kXe]RhH 7a-qn)_} /!(W@, 'b+M 6zܛ )8V2ΰ5B;% s ՐۛO+'36ܻ+g^hpor7[e=D#lM Q Cx- k T  " ]r7'G(c9sHAB4dF-Lr?'2aO]dUAO?&$iWYZ{G I|, =ny1: NqwY?$q$T ӟ <^?(?lD!!<\|y\ ^wI[FshR_^= z Z  F0/.;N+dd  G\-*\rXyVNXJ h@$/,s63l#qY^nkY-4mV!T'+lEHL8L`ol#h{z9cp \ܜ;'1,*ak Z? V; o8 T -M= m  L6cDr!}v4p_*VDV kr~z ? 4@oWF&Lzzu:%+SJOz ix [K@'. [&_1$6T,O:F9IJ9.?C TsGS  ?!aW /p+ceIz-]nqsFKhAj'Hki7G^}jrG%xBu~"$ISn.y-( v aR [*5z_>prSCJc\BeG  b^' p [s8q[=^j(?bL#P: X:h{)WB *z=J"$,pZe<h@B-_ :Vw"D]} u(n'))3mG ev [EasF/}vUQgwi0?6W. ~[eY+]*#?] X }f SKhbsl\,kXSv_T|,+mP<5XfmwNAFpjr7qC\{#PIaqz+w[Si(FiuwP[@@,=? FxpChcfnoZ\< !Q/)6D @kk![6yH-u1@P8zaZy0 1$8;T 7HI@0.'&V{i9 "*Zl`F33Gdyx\.<nrI ,Wb5!!GVWO{,!/ZOh q@OVrSpEw X-oA6q )xqy(_EHj-NV}1)X'*6E]}8LPI?7;DI=" CotYGDLN?";d|h\att=LlsjXH;7@NVK,:X[7!mmy1C dvEU+0 'CeltsV}?> dzNrXm=srLP-_]/S)Ldw,[njZMC<03ZzvaOFEJMG4?_mlcYL:!  #/>Pdqp^E. Q?*SY&%xV.DWvLe-)3:lzx8PdhOJd%zvohk dQ$Q]K44U|4/Qc_J2"%+) #?a}X8 $-6=HVhtrW**Sot_6Y+ Kh O1Y # p8xm@g<IUT:{~BM {1E<'sbws|N(xi8I5p2X -NjoX0 1Nf}eH98:5(!QrxgH- 0P^V> !%!!*;KQG4tT$=i'?pflsJKr!8W`v` `k.Dk~`(1, U]=+mXWt l=(1V(>Ta^H* '8Ld{}cB%)<O`heVC5/01)2<<860'$.780)(/8@>4 i0.*dw6r\~2=9s 3}6 :^sx] k%q9 -M^[= *kg;hY]r &737P__UD3" "!!3FXccZRMIB5&$,6<5&%02) n69cN(~L (WoL MGxTOP6NfhY?Z+7z ,Kdtzxn^H.~khq#(%! #((# #6J\mxzp`L=0" "'''(*,& %ALA0+;UdY7 /2!~a5h+u%q( TsXLXwy<#N&zfPE.:$`LV]FO5ZyvgYQD*vx !%!,@NXYTH9'';FG;) .GE, )FTL2#4@C<- j.p1BksR=LKc3 @4ZOlc?52P)n Gpupl]B_D78BHLRb )/12/148;6,# "&'(*0<HQVXWVRJ?0 &+((,2:=;4%#% '287/! n_O6 ^-Fqb<%0^:bdD8-] xgHBP:mO3 J..#,Hevvja_^O,mNHZw| &0359@D<' :\onaSHA8+ #2DV`^P7   *1.$ xK`1!KGWeO`8`\:-e^lUPB7bhK!~lT5"X <T^behfS1`1'Ggx}| "166894)$" !&,-(&,8GONF<4-# $3;?AEHFA82,' #+#uZG7$QCdu:!1c@cW$Uz+}soZ+IaP$xrdF K  ,Mag_J, _KM_s-87-# '*( !-5;@FMQPLD@<:4( ,58:<AB;0,061  #'n`JZ"Dx)X13i/pj)M@eipX9glT1] + &@SWH/(HfqfQB@FJB0!!$ -==/"-1.)(.5<=90)iT<\%UnA.<nYf5V|+xN 'VY7no|~^!J Ka^M;- u_^p1FXiuzth^YRF4 '3=@=5,&"  %.0( (45( |qbZYN"k.J}*N&!G$@-+v5f<UF"^5&CDXO<6H`pkZJDB8tqy{fSLNVao)98) /DOPT^oxueSHHNPK?4..461)%)385) "5;0)$&m6no{^ORp3J,.bZvOG=><#]+8h%%",1-" #   ,6AN]gh_QC>?CB9+micropolis-activity/res/sounds/woosh.wav0000775000076400007640000002167610724145723021034 0ustar simcitysimcityRIFF#WAVEfmt "VDdata#FvP0 {_</_%8KZj"HixO2XslE! e:*7QivukZG5&!+8J`u8m|s`=>iV Gx!t  +&V}B:"+U--],qI)yO)6* Mz3PCC.feu/3qB# 17x1^MqDALP6]s^dX#jG_meu(s~mj4%E4V83)Im}h3h~EGSs F } e  Q{m"h-E2%nk0&c\!kk^\C q  MPxrge=J* 7 6 QL<@a 9wd%Y52\'(l R  OFl ""h"+!?|}!_$p&'|('$y (mR J1 i)f4pmc"S I 0SR"-"RrYIm j},0q4 LYas("$C&&&~&%o$!:W;!b#/&e*;/23P1",%"O?ZWAoJM 3oB1+Ktgpυ͗2ПяqѾҶdϚY|گ;Zz ; ^{(dr/ S| pT Vp  4 P `*f5:A[^ 0 K W>O%~%*ݓDSјҹu|VG·ёՒؒ ك؂j,3VNT M@bC hI'k,:0f35|6502z/.15; ADF>EBB=d8300Y25:>AhA=@5+8#Gd G UzfR8QYkkGۣtXo.%YC vL+Deg)% IGZzqiYW܅q\WECfیCz|:4S ^R#u $T"`aO JNJ G  ugY g M .9  R?Ug " x?a h p}c| afw&1PYU5q y Sݳw ;+ LI5}-H dg3_, ARXt. & RA4s  y2 `^ gh F* = v ?bfgC?]3%>K )pB0)tgrs*& pXsu]#!F R#B.- 1F&/-"C E eq%z% X s < x*A :k QUkLtW#ܓkcueC;  i <q  P7;P8b}C   :! 7" 1qb|6D @ !b e < $G  5  H &  af 4 1w  $ d 1  Ls=2V\ot0H'$fELZNMWHHP!Or*0Gq t;h=-1. e pD,>>* */am`K )#:4 ^_D`y\s 1`~;K j n 8`f0Xq[= cO^tJ6n)7Cqa] F0K1 Ng[ 5 E D  P h v J<\,XV41tvQY.2SFzn0Zr ?K l#'.>=XRh]C E[, l BMdkDe=JDh6 2 'm!nW\[L:E}"<7(z5#^Vzm%e%12>' yVJ)%[tG$dU?]<#`m2&p@~xv~i  TM} U55PnIyho*j%H'Tg{4s>x Kb3^ qP*A Hj^ >c1Kv@Ts+Rc2d)FutD"GY$RBqU7 %F^cu9#tAs}(*F%M?.bs5RkI ipDRJlKX&R*8laRj/Ei4eHDm7UL)-VT?LWYIRLM)e\VAx 3wj,^#1tVZV%54V#^PND 4;8ys$y-zRb0BTXPh+Xj|(\,(mMPorHv{[-y,&X2*m?Ve}kIm .kE^ P_[x?B" .0.Tp,Ih2_5JryW<Z8 ZX+C@P= :4 ~ol}   $)&""'++("+6:2jjzxuy :PXSII[vdOC;1)(/97$n[[p+/+'(5FU`egijoqrrnlifb`acksxyuqlihe_Q='   #/40( "-;EEB;:@IPOE7*# !$'*-09JctnO /GC.$$ #1GW\P@8>Oaikhfgjlieb_bghdXI<8880# &6HYcd]TPQX^grn@"*. 31W??HME<:=DFA848BE;(*Jl}u^NP\bO(:cp[2%/*+,%&'  );@9/' .GL; ,0)!"()micropolis-activity/res/sounds/cuckoo.wav0000775000076400007640000010436210724145723021152 0ustar simcitysimcityRIFFWAVEfmt "VDdataƈy]j3;vTl~XD;o<YLf<+b5't[:)p i 'ֶ J 0 &i5u +J5' ٌS< P`"FBUD'Т1ޔH2P((M5Z{5!tF|Ի<t b+77b)Rl7{Խ +J4(1! 1fd7fMDV V}z7*_0&&JZ! $"$-hkwDvڋLd3P>E6#~"TM n v:" I x.@n.9?2TawQѨJ    "^OݠCRI ;F W)ٰ̖>"i$r  N?@&JN9)+$!`(M ;"ߤ,w?_  qڷnqRSAm"T\r +F!   g8qK|"S6SK4r+y8//cdT dw]_` c@ m2 y87*'.8>8@. MՇ;ܻ  u^1)%7 $b5B{B > 2]i gi;1\Y^q M }m7=]'* ]s Uj k YJ$8&. ) 3V&8&\8v݀IC+-.um$"Q 4otnDv P. m+>܍d }:%j8 mO $( BVJP8c;kG v Y2cjU!gE55C(?&:`XB"'1b N [޿H T.HbMs. :K*ޜ??#&(ut } v G_ Q!dwX]9l#c*ױa9#o9&+"Z:[D>1w;5"~ j1*&e!v-q !|Ic] t |B [4 Pka3 ePI_K-4h" B D{~ XƍX 8Ru |oo/2 30!s $n ^{ 3ەK#,2 1]%'*X'Ϙ %D:~l 1.PM&Y'(-c$ NE+s2 s#-0#\xtna@T#  7<`x|! l\8PoV2@<%j˕ ;+ޖ`mn+,> KJ3Z_lLۃr) ^:XG 4&Uۆd! a_Y B9+w 69Y f,#@< 9N @ q S],a/!~ /:  a (̑)7]0e P1  A  F$Z uom߹3$ hI~!W! [sLT{Ia ' fW,A o25f 4 @-t_S > x5U< ` BR {sc)D4/.9U4\  %پ}hRW qWߢcgF > y E /Ad݋4  nY x ! T H se f<S1B/Vq V L=RV G < v; E{$W*O@Y! { #G !-: t6}k;(c j 3q:+V $et jExL % =Dӯڤ k 2t`P}Ho .KT(x&l#LVf6 ? ~.. c<A{Zj(*D ,G`|!ޠ=O sI D \ P-BRU"e ˒( n' ?$$SV_ ! 6J Y B4X~ee O7Ema 69"!X tc >ܯ;*  % `pw y p #0d rݿgְ (*5,,mw13*:Q pAN5 "ew^t 6!#) ] ȩEb6 f bf4[_n,p 7 ?(Ghy8 i_v"(0 y(]l f a # 5qd,!V9 iХhs#hj> tG=6pc d01  3K>G e%!/N&Lx@& XD 6TG@  * $g'!=5Ve " R= t~'  zz$cRN WE8"%x& 4{*  @5b->R(= o:M&{K 7zTC#.y-#x ta i6G - Un 8o !$<#&X/q@w&߆j$ $Qax[  [Z2XK0!+NM,?   Q0S2 'RIfN58L> N_~/| @!p'%D] $L&E .2 ^Rg4 u"s.9mJ( UMfez oM3Dz;SY \ w Q QMEF>Y!:rr Hd| /G&6/|" ]+5{/> ^V< o o&%" &!r+J5C\k=p!;?mhCGn ]q1= @J  s^MH|H>xrP D [ dtx !Y @sSw?&T2ߩ#wbWB (% e߫On"]  1_0߆%"Fۈҵܞy9_M "_t  v< ;H[4Hr1G]S g$  ,j&q&e-R(> 9di hVs$" MA֮0)G*FA F5 AA [%$#u5،H r :!  pK ?XH K (wyd B6b i6H B&.)XCt*+*C- r @C`;"k[{E a ED >1@$N.,i%NmW݈S <C}A"i q!B[ S  #$*!:iIK8 .)+ +ߪD'P qZHcVJJA% ?q4Wn,v  k  dhm spWoA!!`{|,q_!B 'TmN vX7 s9 W#0*Qj' %:2޼ !AWܸ( F  tEd@5IKu;* , [t0(:sdL_U JXA- R>TBhSЫ+vrXm`6=hR)$ (, TW!N < os;D+ tUs je/Y8V SJ j] 1patE Iz=Kf6 @iKknZqp@*#9 a;Cv JӬc[0 m\ @%K$2 < {_# :SfxZ{@4J2 +)v!_"A b  8 M y"2 =C,t !J tYdӿhx &"X[JT_0?#fJ  _\&zXfؚ  XqX #l " 0f?a  ^ I t RS f7V<)z tv~Y^& * F ]!1< gt&#o ?" A nNu K U uY&w# 1 7A#+|tkdi2| 6\ X؞p&,riiA 5\4 cn% ';& J"dfm''5eWUgqN$w|~= A vUJZ 89]yo0ղ.:Pp cy "+-?g #S@z2u B00>M\ (#0I7o?k  m@J  &L w3o-yo& KJu  HUN:i*]L}P w\ :A(2 2nd ?> #'s6O]"e /vl69fN[Ll.19 .t/1# v# hxLH) ? W ebw q f; X j <&(FH߿eU _&6c#\'cJa-Z :K U{Br1*a+) $ sx ,n{ | P  3 A PcuB7g(9A:$m {>d̪,Φ}H %-2&28+J c.+,@ܲXE )5> ?6( ȓ„뿜.iԬZ-KBJE7'Epǵ 0c/>FJKpMIK%B1|y~%~`R~95OU(M ;v&w9 ?˜ 6MA\{^TCd-S Ѷ-@R][+K1'cwrεr4D0GT5SG9|/Z' $ϫlΠH #j5ES[X,I0FU䯣*x:>ZjeP/5aظ'!ψl%E^klhV@4%KXYqN#<( {c ӵEoi4HXTa4]K1uܶ٩g٧b/:$P7Z4VuG4 Lə3Q;?kx)CU^\Q@,71 ޮŪxy!:NYXLO8"9ҩ~ xJ  :P\qZ]K5u jx iުmd ,'/=$KKOgKIC :0%%5S5b+8LЯ(r;LWWL9%!J¤ui =;S`^^M6!Z^bK/P߇?e.BQ5W1RD3!׻Y8m]#3@BFC,:|- Nهż̲;Ӈ6 '-2I52 '?2CѣH&D)4:;7+` Efcͪq&*(E0/) P(?"jla!|"!& Lۇۜb _b/h%ET@eCW W cvAL I  d7t%+} Z:[ > *v^ A]6 C~(;!Yv $qE }Lc# Mg S M C?\ xkzgY'sUv~$I CQvg30r 33$Kj'/!$%&&$UN/hGZtu_~^};6  C[; H/8- - ?  iT 5v.<x Y jL^ e ;] c"$}6 2 S%k&GOo Y98A a  @[n:I(Yt- %t=@DBKNM Lr)5  YDro> 3 h*|A$Z; V  $  pgKIbff ]& fVg,K'gY & .$2un Cqad G sg@huq9?}o ; 8g   dLV_/93  fuf,i:} U r\ } p?zB Yv @' $\I S ! r [la=o.H z X8u . \*2ESXYTBH Qi!k|d} P }1|  \7$o'cw=CD Pc71Z= 5r '9Cu *z QzxZf  MZN(qM_|F! -fYqtOC%_ 3=&"3 #Y @=8gvG&)Vj B#.x ]i YFh eD{ H rqzF}pR2$$WV Gy H M =5gU.' ^$_ ~K fY;<6` %_%o @ :4gYyzVt*BAVx41j S1 +$i(E Bv'? H@ 4CY EWn_\ VbF ^[(]^] yn $R . 9]B #}Eai"y? kF Xz9[( q-Yno< 1fb #0  j"E<  +!LtD>g C]/f g N>{  w 8>F"&;'hAt~mDot(J>;Gok:< }dGJ: J#g@+AH1|~uKAPw;  :?J:d g$ .pp#^h9lmzqs }HWgJ M. $39Z,_D^+ohviJtM/\$_5mz/]>b \u) D S hRH?N ] 81$} L@G@ : $ L2(8= ];('(^G[8n\oc~`` q\gJ O LPE]h$;r A1_u>*Pyn#x ^BM=ZpHa+gXw#}aF `"=|alP { kO(CzaQ_>]pV{  qG 3(n_^:;BA+  yK *e }L/mze~ qSwQ noV6t 9 V}t^'VT R =! JPJ OmH\D>Cm8T08zsa ;$r/*F&i**hwNsA.0qgCEV9*T  =::*\ e edK]bhiHsG!X5N SdS1dklNfQ1{\dS0$;/NdUm,xg Q37 K e, ' jm&ni'!Z]%& d Gt@.?85Qh/N X H! MN %IZ0V]s:,Y26E qDwI`e/_sQ*h8'pDbo/;M*B +Z@G  [-KEFN$TFVBl > Z kx|g| $<*v6g8vk'gA* :x"<b`[3hG0z@se )=^!0ak- K Gr&Wx6I_%e*}V:L<U{cf [(e2&YPEgQ?(%d1FKDjCmQ=,ZuJYhO Wl! C y Uq\`(h;k ub".k59w &u4CZ+KUV,PSD*VgxUYu= J Q fD C?$JV}o;aAFP}j ]vS1D"O  n}B|rE26q(1SPo|-Q8X=&?i;p'd 2:/FK8k!\ gOKto\o &SlZnhfi y9jKb}YSn cbL\D/Q*.c nov a%d)<#[`hc j SO : 4E+ 84Wz6  IJ &C"'x (yo@)YDnD_`vcI Yo?Z27|r[!Y:1e`"}&@`FI"FFhMc%CejUb&s?~hQQ9N:E ~ J8)<0QSNH{W> k`%f5v 1Z)x$:e~c > j SIwQg6| XjPc#"]I,UV8S?_# AtHuzGf+xHgk(+X6>l%&`p'CY%4cK?_ CoBngU"`g "A6UBiEh|U{4[c)s^Iq:\HL;IDATUv eDfero, N YgKOPonU 4|a1[*<2STX-s19f" wP%`u jY-f/ O 0XfM0R4-0f XbI6m+ -g { |\ YEWSKRA, i3h)'\mWf 8PP +  7R8k,~yZ)~3P9"zq{!0  9 J R)nc{z`{]>Zo;O[SPku?A  hU*DA"e=,Z:y`U[ 6zI AzO[ \H}yvIRWZrXZY F ~dHhh"uhW)6KoL8y!~+13>o`'q?7Y!vH@T;  `e%6!Z+C0H`o=S jUzI:it#wGC Odw \FKu7=l!}oi|YtHq"Qi L [8(?vkQhFt#Sw~ u!qzJa+!ZKAjpe2B4],p,& J>3fN{[Uwl^ X @b A#]];g{)tY$D>9N 8+Y "<+sc(#~H]45.9 ?WyZBw](FY1 7(kjd*w5Zq$ Qr?uIz9B/1|>He;7.+s{/y"N~Ke_"]Fk`b8 wF`wtS6   L R_mDiC Q% g(P EH\%0), }mme g dg{ B W gQ( b (&#&  gf< t*<" Roh?ޥމ:@"u j[p! u#,6 dL !I 9nKDi lG $%# <@D0u֙|i ~4 <%/,*O!*Gwݵ 9 !p%%%#.nڡaFP%" NhT;D{r9IEaRJ{ 90qԓV*a"7':)d)& r Rat{o۴s*YA[v$^%R azySߘJ'&1M31b-)&/ M*Q1`ٰ;/d2WA ,l޸'t# n!%(m('& @HGh}ژ=ފߎ@\m/ H" 1J }&-306b1$j; PܬО^ɾC&++&) @@`Mu"YVмiݴ=$> c*0/& aS}oQz '9U"&$r< bgя8A=  !##%+0l2-#,  luTՕ'N #$`%*S$uu Ju( 5 *N-N&F Oֺy &l*.b,& P':%   "i&J"/; )E`ԁфؑ"6!i#/P;?5$P1zbX֦(cX q%)!#93^߱9Z~!Ja>Z &5.5i70@ v^M!ܞ CA+3."/  b7Ց3y|ϰi'I($ 7+tViۤjtl&b,i)#Gb 2WP ֿ͝ϾnO 2&}(H&($$z&#V0Wݿ}o{:#t$!l {v+ٻP`I?& < {p 2p҇ oS| w9`rz2f  _j#|Q-k]#l!%A%$1$$"Kekݛa(on \ FFI!" =_"1eS( U!n$ QXZ |'s^ !%[#^h 6 C 5މu#. ]E = *8W #H'~*+*'# ; nhSPb߹#mbG  9: 3\Vw  ('6c0q 2/`QAE56W@c&< Md4Z"d !L/z  zhbs  Z ). g-Q{v&FY^y|z@@IZ&s r p| N0\K /p)`8  o7 t/z  > c_uyar(yr ql'B Q%= P nb;` D K(G~T\_,<   1 IsWmS[3kQw:\M/OO5y:hc%Z4$X,PwW gw1 JUl|`(8#9 <~1x&fi ;n&Wq %^fU4w-sB%4>R- vcCs> h~ EDxL7TN,kZ{c(5Y:ec@N-L (>sV508?.fI[z5r ~TP&nyk Y'3g;oVn8 Mk(VNlQv>3 SsC" c|2[`nD\|qR0NLIh3rA[x 9u 3Epkn R M8c\#U~6[R3zZ,zV'Th#b7E i IoUc2X$0&0XD  j  vgm15Gy`-Gt5 gB`Fq  % @GPp1=ZS+ky9m.y [TGSIpc|)@3F #@ "}uj3;9%9ueQjkpp11?!zKft{X+MK"S? }Ru8~nX,WV! ^6ylNJDpaOT ,jV-\o(|RJ6/pk<%f.Cfl 61=P&ihvv! s zs.t `J!:P2~Gs:B!^5 (*j\Z!e2| s&FTv 6Mb? 4 >4!O} >M;FV*-n&0+Ux$^C}'*' eXjxZ\yV\p{*6J{F2}JP]D)-nDNU%u B[b?.4m.%7@;6eunLbq*93& M4 xZR[*T 0v/8=J] C@XL,$E:/k6gr^"L}& ]  Z{VgTMIMD"9l^kRMk-1df%>e, %xi/S|>1 ot\w#KWhu5T[ , A<zj?#uDx93#?tb\UEZ+@x, p *Wvn++ZWQWg32Ytv4/@d\M?C2PUx:(s+9dYkf!3M{#z 6wV)Dzj=d!&j"y=D@qrouH9!e8]j\]os9;9JNK!_ C@5s\(HYDB|[vyr4!YZio;MHh$g0A_>Kg(TW >;Z1WSj(\^G# 9EuQoCN]"Bt}\5ot_zG[ czC7 whOX'_5"B@ )_'F(aP@l] a'(:I` =P#5jsA;13]dHah XK"j\SJ$,ViPkcbhR0/B%mb@- 8$$qSn4Vq`8",f4d!u>h.*uGh  \8Mtg+nVAj(C)H 7D0kn]3s5M q71~23)1$-5gro 4]yk4',+52G[mN7%EW :oQ?Kccr3L\,>`31p`p0&7v6"[g.- XHKeRu_eDhC5#k^k^Czv<p;*2?b"KTqcqPLO]YDD*O$, r/4DNYc`VG?SKl)Sz~gcNTNeR# {zf;7 !15t! ;n[qA4^p PCCxR/D7|J O82\"AU{U7y hw'oe:T]Q!`wiYL<N6`*/kDP0&N02,rl|G!7B T@C;Na@ _Sa;Q=j {)VzYd6}q:/F;ECGjf\/tGZ { l0Q-cYv&1rRkDo^s1yv e#H>XWY &;Bf4iU>eTYYkX[6mn@_~D(,G~ @@o7lY&mC =V-n2f%KV'g,v?E|,-`S>hPGO1!]Sz;#w+6IYx"@)`:SQr{]"2)"edoYqLl5C Dmd@ <^ }i,z5}b12$ 0[.rZ.r)H`I}F?E){v*a%a=3+.w5 17XHk}B13I>H^ -[T1s(?%H;("IT|?d#$Jt\Us>7zID3&0f<AJX$"^S RUxtDef 9,hU +lY\*2h,66X7(Abn$*GCb:uiL6Vr=; "lF +9 m Zv?FjMIQV0<V hD-}$o{d6nc"gj9micropolis-activity/res/sounds/fire.wav0000775000076400007640000007206010724145723020613 0ustar simcitysimcityRIFF(tWAVEfmt "VDdatat UwtOcT 7ps?S`{e8"Fr_k:IC;/ c$.~,i2G0jj^tM6GCAFOM9 ;[_D"#<iX4o|N+XfV7.sP088<B@6.<dSF|_:irU}mA;uj+ <h]&0j}T:doV%:C:+%)9M]hjW-7gU\wW]BIY-OHjX[T,#)  ! auI sf mQ/0BB( ! 1@3(2IN(1c`0L`M _l?@#azI 44/p~hZUD;|z:dYJpLBtUWi)f! optu(-p08. UEMyOW93M5a%I=$(Y2 ]:)x$@/ )HH#KtEc9oYF]D<{y#\@fbKcgH8|h1XS!p !vKGG &vJ~3W<(x{&KM-lPa/zSN 2$aH~u4&^paB/0=?+x/K!uRlmTTcuS6Zyb"R6zi*BLg(IPOD!BQeLS\~ABJ8sY}@<g2(S.sq$J9rrhu{4th2graWXzsil?C;qP1n[SM8hH|ow7kZ==T+ 21Wi7Kx 2T nO gJVk7yp5Ry*p[UAb:k+'l1kEK=!>( z63:I2MC"h=|3jMbSqn ,U*t)F)zVS{VQ9$:r)j 8 b*xK[G{69SCCIU$ra Vs$~*lA. lm03_3/u y)(3kpOXBS--OB 2r\pm>:hPPttLb{FHU}CmT\s 0#f%fL(34Ktwau +G<f@U9oS^u(y}(=!YQG[5wdsjCk{ K:hHR PP*Ex8E5Z?bBcp"qi)=.t&b2=p{1R.8XRdH4Fc:TTRt/Mn a*0|dUAY<3}+'vNx*jB2pr;n0E\t ?H~2vΑJҬۍAlx h ) ~ + l t3 [~WODZ Oe V %s |T ~k V n  /  O v HD(]X&[j<#tH:I;$0rX j KB.YfcF.#m'"fYPhcAth4G\`h4/aU  G gw eYcׂ5~wi  n[*  Tcd+srfn  =J\1 hE p6D/ ? P u R ^JelPw%lWHSz_L= { y  ?5@GHjr!xW+aQNDPXzpTD(%aFtpYDSQ_&E;=_Z ? pG}9ҵBB K|} 8tg c v0~qFVhi# 1  ^q l ,yTRlc%4 lk  9}3 : HwmS4,z "=+ʭޑ@P45 NJ~&N  Y39, xzizK.3k ) l/?HY ?2F6(,CwH"'n d XF4 7  6;68VJ(A.(-Z-%.iFlV$z`;4S9xr&|L4/#Im>c3 0 .  I b]9آq[ϭ˝3Nv j  *^ bNrU_5dJ2 hO ^T u!m TuL `+s!b t ;)q ,  1 ['VLNUzod]>w1_f [A ! ;|TR,uJbkp C^V6 Y2( D + X z . + Q D V t(AlBmo6L+m (Tu(r 9 9  e @ "B!U f <eX) K; ?i e 2eo[G6*J} r N [ 92f*w``{$mx F %=    ` F0`k QlV5 h ` D p  Y N5ߠڢپL :ݑ)ɩͩօ*{KY K="y$h"iO`5Z ' &hY7)Is uSo %. 2x Wa+jGF[RsdDY N. 8 Z 0 -L&S%6;QO>UmbF 1 [  Nzh/ky> 9kc5H|;g_l f  _ uG 1 h nqc4Egf D O OO1.\+ bY7R%,{V0כ?ݰ#TU(6vBqto;LS- ]YHtWa=lQtV  ZyD:Z@ C g}]"wn!vXX}J_%L7 b  {*_T0 4- UN+6y_M=$6ITH%e>'|@v|Ws\Pz\wY/rg[?MEW- c:^71NxdR~ 9Txp?/a;e~/ !/vTHPk@9i,$-w~1>nNF/ 5(hUc(Om3?qO|).oN;Mg9)n?2c*b+Tl+5]]dD%XJ]E|mMyini-0ej!V:NUm88b&'w;LrK@.i!<i4T9;6I8eTR z?`c| "dWUq Z 9G61O5qOTJagu9$;nb5`{eenh}^X&  );T8Z?U[8b$LS F@mKUf?w|@t'] $No W{?Z1u4 wF1&YB m QEnPM~ytU `ou$p7 ;\cwiSY~ F 6\tH:h%J@SmT DOY\UssYPJ$o`J"G ,z4+h?reNCghm`CTP\'wxF)X}s! NE1W;k }_ zt*.o<~gUZC~MCs2tJP\HZr(TAjFhd4En^y$.}{RNhyB+6/ [5$BYOOzj.g.D#qGh^Dwpno/oovJTu&x}D$}0:>y3&}Ld '-0HzX3434w]9M,SW /& <E#$Q[29wxs1 619u6 |WXJSx#, -XP0{^ V)?<5n7D4_N4KH<.#->?)$pKFNO_ kaB#$+g~!C9[fRHC5"#5HPK@63671*+:P`^J) 0BUdibQB@O^`N5%(5=6'4># 5E4 0+'$ =<)41"($  %;@81;QegQ1$0:FVgsseI$'!0*$  %0.('+242-# Gc^?*U^H),7(%%$(%*7*"'-020& &7:0 #,28;26XgZ8%&0A3#9@:210) 5:/  +-" )-$0>0$WvmF  4PO3    (>7 B}Y;;N_aUGEP[U5*9* ")(#$vI3F! =^S, /!$itG##>YkhO,'>B. 7>k=N!08$'QiTMcV9cOI^*r$`=!F6O ^k .6?;0WI3Af BqY}v he9vt vh\d\_8@u;]Do,r>`!5uVO @"QI!u&hU1x(Y(Ws^eGQe  4Ke\b}_*,fy'5r, |'5on,x!?kKo CV\fWN GQdhNGdw{J:(N4;]MR]h ,$cF>c / ZMY %oa? w Qa^Js~:  Q7U@,?h0dRW@QjMK~3],OqI K2njK>  X 4 g  S @ G.Y~^V;,JR7vf]R!BO61&Tqf5(@o{.9{}9&\Q e$cVCrFs9aKN@#n:/h֤}8f4{ 9 ~ ^2i0 w 8B$_OdL`s6c@4; \ R ~RZ K4nz] vj]M}i.cM)ut1E9t& : R*oA Y6Ch#:.fLWq&p+&&v r9qh($c+qQEL-#F}~tbH9a R LAHfzk I=-9K`pd5k~k 5zgzEr:- QK+R_Y   7o  b   bu?qI[pHd,}wj9S u n dQ=Jz1Qr+ht\P#~9.+{~I@yZMh03JcbG^ZGx.c7[@ %{$i>P=5 F_;QhzI~ %jQ'y]"Qh9ze~n =Fdvov"< MH] UuZ^ . FP9 $YVR42||w#c~ # Hs V6  d ? s 3UCi 59i?&\SI3$-nG ^F  M'HM39PSJ"rix4=f3 " .Gh)PB;82= ? $A02 !')Iu:w;}*wJth#bE/l1~1`#jf 8komT\bYg 3v;Y%.Diqny@ rM~/f94~_X$\>f*~ ma4x mU 0$"C0E hd).gwK uZ3GYy@VF,-bLE~l<|2A`S)#eQ1K)=dciq69!v:fEf| gSh[ ?}1N$@wp\'G5&tiVE CL,:&^vG~&8i ga]l4xo2PRg/[}Ce<)7r ;t>&o"aZ1^sP35`igov~M] cftKs( Nr4hV]-z_3h1I+306;f|t=j"j:_<)jRWvZ=_O9%{_fSJ3mMlE  pHvn]Wj"*S)9.-nw_fdMp )^i#>y$9jgQ !yckbi+?+2)6o=>EEZX-JSl q2Z$Y 9n Z- cR@A E DX*U N)G~4jYc  %=0{r6)%p S Gr } Z65 N<}er5wC D  iW L A;v SHBrS&{*jDjEby[9%p %D\[v79P m/7*}O`J(c4b BL.3#Wh+oY!.Ztqb R+:7"uf\H@=|Oa4Jn2|' ^jucnZk 6l`w3*Uk& mPguWcp:[#)|sN%y{X1 [(Eq8 hO4T6p +c/R{h4o t5Xf,^^p 0J!O#^jrgH!YOu*Wb>6J]WOWtlzDkk|LM[?)!VngY>Z@cZ 2FNr}i 4 O+`.{&6`\_s4@J,*Z6bZ|iL!^O^DUsD UT ELG3|4&yv(N=4(1/p%"DMCSb4+K1(P3 Pu\">wHn`Ys}:_":WF'!}pw?=o~s>_9c E]LB={3h5tsXo\^s\As1F%0KBcsA*qjsT/uWArWLRf (Ym 0I8/e1nD ) *pbYEDYv/ZEJYHSc?=0"R<[1h:O MRW%w Mqcf3>p M1Y;!;1'=Sul!/jk2{YS,o6! N"utv1.o)wL^wD M&/+[[&>DyZ\hYuhQPTp:<<L_ PyuiKzAhzKj 4#q 5&S; W/jk)!ljL[p,V[\+[`}jg} %~FLjc!X +m$n*Y )0 >i6|dCoa.9_t$XRDBz};1t7}vc`8 ^(ELX< &W>&RheM4^vf#9{7(nYIe(/[@_d ZdSo"VG*J57!6aeUqL+1EL1J9$>> ^En <B3* _eu5U hBEM8[TqMz7B1~o(. 7zMrU* (qV:< bov T!-R`$:+N j8ejkA1A ! f)Axz?  # 9p81z< k }cyNkmjkl`< bLX'^xrjq-VaJ / ;jlS"mUR]h)r6}>>q`v(MZ@rO!PPcQN1yY 9Vp)y4*/]^qn^SUM! ! t*FtTp4wepAw&!i!2zhun49n>,:q;6LXL9FU\,UECd'iD[CxjwtQwOC\]HLkI' Qk%PQKC.4/5n`c*;#s\94Jda-p\%Jm<p_h%yKJ1E K7jXS!E "e`#9J:pq!T[RKTTa(8?!Uq#`Tt2IoBK"0B9xQX {&@^]afEY(FuoqqsiZVjr|{ |?d{L|8/ZF~r-(4oBSPB6Ag{]gjB b{VJ1?,g$TnGZ)yJiJW.2f{t)}jgn%1VR- bn~to,9'i=3>K-X-72BvrHMk4V&l(3o`69_]9U_LLX`U0M{M:79,<x] 0<FT_cY@  1*J]2?ul  0{5([^ Px,VpQ%^Myb8 Aky^H1OI2^g TkWk2xy8/Cf.jsv>Tm<L\cGzz+AA| np Ano0`$6co~kHd\r#"/N[+'W)>;3Ao19!Zr`gwV<15FX`V?,%($ |/wBG)TQ5 &;a/Rr *Hf~xX* shq~rllqw 5WcK1b] VGhU%hj'TQ``N74We(h5=5gI~\p1bu\l/vplpAna1F@>GSVSKF9L7`Ob3#NM$Kgw]N`X;%!6E=|{~l>;Zx{MEdE  =KB,E G~ReR8RJ *EL=$  ')(()09AC>/*>LX`ipog\WXWQA-<_aG 96H!du(=_%6X"`',%  3DLI=s AO I[M!K^P7-EoO%(dC&"2LnM kLB=* a`Tr^D^ /^'p tmq31-4Mo+z]; Ssl?D lDGyi[p| $, 1DHA=EYmoU|E:\xr v8  0ZwwT><W V %!-Qyig?9<&upw}ubVaP }vP[tQYh;);C;00Fsa3,W#GH!Pr`^otqzS<DdjQN^njT7(-Jtg($ 1R_V@&KWD$9BIS`eV-{\SX\O1 7<b"TR\>!?OD(1u*<C, TxnW} 2I=PncA %l0,DH.qL/#3ZzZk^sMLX(o?LJ+1Sw{[:&$2Ll(&9f &c!`Uxn=4($micropolis-activity/res/sounds/query.wav0000775000076400007640000003770210724145723021037 0ustar simcitysimcityRIFF?WAVEfmt "VDdata?6*=9  (&s]@ ziXD*`>& waH%}eWZn/BTafhkv  27/ $,2<Mbv9N_s?b Bs  iXI2xiW>(#6INH8)  -BQUQGCJWfpz/ik\WY[]^_]ZYZ^a^WSYkv]PS^fbT>&{\=#xljli_SKKKF:-)**"   od^TF;42,  $(+4?LZeny '/:DR`ku           *20,()-.-+)*-.,+*+--++*,--+,+,-./-%    ",10(        )22,&'-1/)&)14,  (46-               !+10,*+,.-+*,..+""+/-+,.+               /WNAZ8F:QV9$erLNhD!HQ=-nt5`5[+1oq$Ih]7pm,TT]^i`7}taLe)7Ap) SW%Dhl+)isO84DdF!P}u>_- $DV]U/%_*s5LF(d[vLN@)<|Fk^*+uQRx<m4 l D Hfni\SWrQ0:oD{+Q5X_N&eBOg@*0)X m%Q"|[Fl:n(\) ;j/(-|jM !BvFWy^G2j^_a]TQ_8#"<q\OOcF^R {   n  p  Ab=s0Juw6[liW5c=+I$Prdy5}psZDnrOO!j;'&-4=Pl{kR"x5 o[&d \+- K aGMZ>d5QN)ZmmeV?"9nK$c5IPD:4x1^!BRxc'(ir7 P'U>oN?jVh#D7.D7F{;i!$ 4 < ! 2<  n  2 g , I y \ E < P e!T3/{[ 2x_I5*7e% `o-3}vx { YWo0HH>31@b8 \  [  T   I  t }B]&xfX?#+V{O n * ~  V  ^ %,!4P^o6 *Ef7/ UV). 4 8 7`nEd{IdS^ 1 wECaY8h gH%Ci 4߉{߈}YYߝP6isjr1j\kRg~&PGS$hiA33W"mQq v g _1 )y+4RU#n!3/dzn&;d)e0:q+ ( s Qmp[kH_F^G#G9}?B uKyg#S:>xX;3/Nc"?=vR'   2H2A9haRJ| 7 T O S 4 # 3 ; 6 7 S [   G g  g " > 0 ; - w G > I L , x bUYnk  @k!- DO{G&0v2HA&BMn.{wpDh4Nf$|G`2.D  s %G*9E y j b 6 l*4-?(9ocn2j _Jm > 6sDFx/!۴؀؇).Z7'7tO?|Wݢ^̌q =Int<~%ҁMځ۴P=3RZtdCWLozo[cL7 w ) 5 #&u)+.-S../q.-,o,i,y,q,b,u,,,w,+*Z*))'q% #!F;} aE  C=a   R3"$'()5****)'$ = 1. z`wu( Vyz >Y v/ &Gsm[ K h F ND /[V\!c&D3af,sݪۿINE̡}ھQ1tҷ/H_ 4 C H H FX $&&$!pl VR=Lst'+4@VuN!k$%$">Z " {HY$Kx  " \ [;V U<#Vts8L T 7b1Fg/=X=;ۮ΃EwΟL * Q k  ;$*d..[+ %? M+)c ].  @ )C t > iI_^f^fo~ prBVJԜ ak [1 K$>/44.$, [!Z  A+ݽl0C   <>a I]^ V*SF3;Y}@d,a0 ":k [ c hT < N<Qt:n$Xu - w܇Q+*ְS 5 VJ &",1k2-$JjC #Jqa 1 7 < Slm[MU Xv~[VN{n_Z * s@g a ~ KPKE ALk])N}Ao eX8C1։Ղ׸% $ G > !*/v0,$"T f u;k d2  c G  m"` 6Cy O | N = \ W  ?,v Y r189Uy+snL3UOևG59[ x hA'@\ OB?&j,.T,_&A s 0 1?.VuN~BT #rF  7!u)Xo 1 iX   |~zmX; uP i\.AIt9?]x GTg76/׿Eun*g $+ /4.)1"@ #ub$ ^oJ3{-a c'^1"rb  Z l C i ,1U}y6m& p 0 5 H  wQ!_^hK@%oO6JqXCzװzwJgi4 %i+-l,'(L!k t VEqJW[2T>  UKI=ZLq> J rp A ' ZB[Fd T " 9?]2Hm$0_. ڤ׼srY^?/ d e !#*b-x-`*$ 9}z f73,Bxmf0 `l\ T% C ]UAo~7yRj_ X U C L P S FgHXZo>3f?aN)Rޙ@_ - l$ ! '0*U*~'L"kX ((1c`Ms)-3.nWy .n 'Lu@ :VD ,  ?".A4-: *:p1^gL>[R0 EpE[f{k |/5CQ P gq on #$#f ` Cs HvE.NC:\ k|')F'  l 0~EnJ4=cV09>%Vh l  > & ] =   P k E J  fH ("n2Uv()$QdhjNG*| O^u \ 7Iq B+vR dDXQ_o j3^ & > t TPs~g@[tS 5U^N2iTgj#WL($`|OF ]&wlf(q``- $%7/Lu$hrHf]T-"G#Y$qzbLD^v345%[ 3GH=55<@<@]e  C v X .  TGc^"lDX?:= 5y !JX-Kq Ad[['\YcOPUO9dCSi56MdyJTwZ~D@\  V ` E   a  :  6 > V $:=^C S5  l 2 y 2Zg_"Iy{|N`p  o ~ kkUHp$2 0cvKP-5sjSSB>sJ BnD?X e I |  s  7 ] eARr\XY]l')%EC IjoX/x0[ b76|Ah H[ XY ~b!&t]1J;uu   O r 1 8  z 4 >!vJ[Q* ) Cd1tG!_g&N J @e0/Hsm[u'FFBTmzkSy sp Oix%~e-k ?X E; ] q) 3 e 8 R+h(.khxrub@ J T y MB - v Z Ik;kc#&K.*@YP u = L   | I  m<BW>c-1'-UY/>pHo E9W G`4  pqqS4Zg%/O $jv b um8  U[ q /?B3BM5ID 0g&?,   * p U  P GE7m9{ai/Yid:#I [q 6 j^&'/`pMRpZ7(t@JzI` A J  J {5*C<Xv{Km*]BQt|1U|aPC)6aPC}5 f_y4 #0Y;  * P m  `  `DP_GgtuI=8_DEdR?hy G m p  oBL{O Az:Rp=r=" u?<]D\K)t>KJ>K%w AX]D\ST y<dnWLGGGA1Wg0=XDG[;ciybRw{u {}L !  D { < 4 _{2w$WZa  ';<[??.$<" 1 ( = ?S4 h$o@:$[O.]`QOu] I *8Uiago[[[C.y~I3)-pe ]RU (C<g 4 7 h=F8 "j J^'s`TPQRK9FJWh$3`fH99%tT6  s  : n  Z  } a oe1Wn)L^'"` yf,;tL% [o(9YT p1?j!%8(9Ifr1\8cneP56ZoU](fmB&'6C9 ~LA^I :.m)/<97<A><=>2 Dz/n].k3 sCrIiq(: )FZ)BE f W f 2 4 U - EAe`Wl^(g>NpD(@1;+tA_U8%eWhc}f]ZF U_50.|~YWvK1  EP|MwTe}tsjV18GFEOgB&YV/UhP:%Cu]>OnM+{l\G)k; Wsx6d Ss1j<{t^)fN[jE[0Ns ? \ [ + +h1)}7!{T"6LNmicropolis-activity/res/sounds/e.wav0000775000076400007640000000755210724145723020116 0ustar simcitysimcityRIFFbWAVEfmt "VDdata> !5@7! %2?A008. # NmW" &  .NgqeH.%/AORNA. %IYJ$*$@dp^<~}iH T-OCsQu"|ZWn8uazT0?st4jR(+-EGHw;B'|>&2}4 VH];DL 1ETz" obs+B>yVw$SZ_Qb"TfQVcO8= HqyM@_Q~4 m/0 R^jjl-J5\^k8SFma>$*R*XdK)cW yI)&?ZcKx2%EH*2S[PNi46-'-;M`ssO1'4Mbh[;~!oO9X\y5>FC$0Yi\Qnbh6GzyO6>RR- 2< $(*!o'CWO[*/@T$ _AF|+l/+1.'5T|mch{SA3 82kU-9$\Pb IS2zN-LQ u\<[9BG6n`q]oWH+T~[]0!&#eGMg#^ppXQ%B,GyzJO6^nY*B_uI<9kFGfqH-b&MiP!+B@; }T/C fv# OW:3Pg01^ V1a0&B@ fKKs{ndJ*zOAT^tc/p[sFS }0*`eqm=*OlQe]d O}^s"dFL}Qc9x18.3@H'M*j;%6mn*'n>\5" 3Wf:<-Sj>dV.ALdU<9Z|fv~a6 2hbeF>] <_fS;/5GZgprnihpztT& CcS>SzH37>}v5HKM[~;n#K{\CANUH'b40IF+micropolis-activity/res/sounds/zone.wav0000775000076400007640000004553010724145723020643 0ustar simcitysimcityRIFFPKWAVEfmt "VDdata,K1;A@5!;w}G3LR>Om^#QiZ=*1Hh~yqe^aqpQ4)0AQXZ]fv}_2FciZUsu1TmE/M)3 uem0 +CKRv-_u*aS\, &hqNKXR,VoOUE-4FPNSieIK0D) t0x} K V2GpxD[eMCVs4"YY(,Qc<5Tn4T'vC]t5|qM&VPSx6;beB"0b_ !vu\..2;H/f{ZE- 0039<[\ 1ji=x9vKee`^O")ii: t!S@'A&x^_2ic>C02Yb!*kuygJ0rYjl&WG{w~ue7$w{*X g=3v - H) w)@~Q=\Ww6 gHae,32-([X#Scb[F+(e8(+dns2_!Ecg/4[? )l.,.YZHp;ikYE&y4wX&zLR8:/G`9,RA}kC%HqUOD>4#HcxAd0ykYE^::hjKzbh1 ,rXckL$sGmO${"%QSF^}$["U^^*"3Z+f+%?!oN-pPv,oHzn4&'|~$O)Qyx.uzcECaJb )A(J!.ekj]^|K0"=,.8*"LDR3pbO V% ?Tm#XDg PoQ1L w6P{_.r5S4_Gu"s+GF[$Drd0,?kj"e!`\ bmlzg DsJ\t'=N[Srkk)vphE96e&BMz?vgeLg<U%  >  k 3 i ` j cj`  n__.eSgMh@MCrNBE@)b xva8 A/!Xw[OPnHv_.^m+w @  X b u 5 J Ob`D+!'l3H7 F{Ra (  %   bkyp8\5gcY\+quR 9 PyCZK LJlpcLyWBs@C9uWHr`"/n;^ \  d * |P!-`n Y9XM,qJn=5JFy[6%Bc0 RHH8]c   &2!J)߶j%ۍޮ$̤ac5O܏  `7[No_g L Bvj|@ g@ {+  NKأ6zڮɴu>+:[ (, +E"e׉ehמ,)76,]s'+#)"UH }hAR5׶sFm? ;h r"T!& %{`J3*LOabيٞBE31! 9   l  N cEp|4`cZ q VWSoZ '+ O B MxRUF)3 & ~ v 6*+UC ƥ{-{ }ߚ`I5O$$3V:9P78=?@8$ A /cl\CR -&+d39 g f3w TM l{0&~@yd\ݽdF@#a/ [psLG` dVL=9C | p R' ' Vo#  D  S h x y f ~x@djF{0Zֱ#PɯJ $%0HX اkt"qm  +8;>7S0<+')"eH[b֯ʀ[;N\ Sp2+.*#5!|"N0TI/lG8{ ` *u lXE=Pw# @LIxE<a G!>MxZ3 ( X[E u: ; U I ;gZ B L  % vdOPCj{,'CVѠƱ}Lvqu l 5k ".c,8 "O!2EejQ~T'  7 n~DK W5YfgBj#?d(  Z[ foIj"%nQCzX3C) 4;7zUy<^d$s xW$9 CrZ p  / Q+fak  1rQi %#5 -C/f檚ӥݠpq'!2ۇ ݱv WeIL%   !NlT x  1 }JG $h$#SE p t _$QA  W s Tnra=9bJT61)L @7`{A-D)rPR>rGtJDmbZzdU.}Y5 r  C < ( " Q ' _ f  q ) (Hf;'37OcI '#}h׮!ԡ) /)0Րߛ @ I  _fKHn jpEz)}@lug,1 +}Zg r 6 2 G : h?iqdHUQ&;Ck(QoV-h(yt *ST]>\ B   G 8 f , ? N N B raq#YSH >uyss˿~ݫ~]ÿ6ɵwz!t' rlVyREU!Jc j S F DKXS,1B a VZe .tuu % ! s ~j\z+ YKr^U&>L'#8Hd7TNT(SpH"iX % lYB  ' ~ 6<rTG&' xrb*!+:Eߗ\1I]( h(73Y]q;IPOx]8 6PR%xkD Y\u 5  "ZI-eLN\2?%aiQGy8|AS@ris5ZKMX~UI"d5Z ? 4 ulF9@T-^ SM\؁iɥVI߁ jVD q { `RuYF| $UeF~UvqR~>gr H D R X }X r,Z&56XlCM23 tE?17Xc\d[pqNC@aEe*  & B 6 7 r ? P  H Q D@wK ",4i- ޷KPAp_}@迲DaQ1T#%{  [j^XT0\  F:?QF`-K c t  T G  WF(X3 3 +mWA M/ GM9$`/ok ZM^1/0.NM#D? VOߏגӢZˍ*z"ȏHJӾpܤߨr.(0i B,ONnnnW<  5r WIfRlpb9e? pSOa8 m3Q@ ^7/JxyJED d ZZaH<cG pK U?i؂!Ěˍ̄͜- &  + je^P,L}pE/ ] y6*k"(f[R(W")u/4^%Qrzv bYZ.V@9v}m .Vj]#bp<m fv DCvVwz#[ J0PKPet(/)hv $ -}X^ t3z,NE4s*t!o*y&r,MNHh *mPcxSTa|s c > cO~i]] GH@N.]*pգ#joٽLY*=c0o iC_s1h @ |-,oZga(UPXs8~kMJ[8,oX 5 / n m   *U,,\GܾXكX|׵ػ"$To4[ J)^z g \ b "4Dnx}g{Jk{  o0.C, G1> e P < x 5 m k;8| $F/޿ܗtfs?4"K)J6E'3.{3 a<i:w z FF vWVT^ (R!S -n!~1%f]`i N U\(9+-W 2  d } ! ; 6>7 {X*٤&%ސޔu^r PDEzf U J GZ7bV#5 -$ < < ,.8Zs_$dtB+3FgKx1)CU]-!p] Q B E \vP-I) WTM ;w Mmxz5R`9,Mw 'e`cE;# 56 2 u?oLp  Q w J" e  wy~-=uEg\vI2lHSWr[ l ! " BeyP NeD jVeNq{#A2z~R2scg>s#nq  2  : y <;M4=SS8*pd)_+:i;.  b 6 i =0gu.S ,Do] u&"(a`(2]8azYL C ( j o r v0<@m$rEA8 }m6 g @  q y bOc18BK h|pSS\P<a( wkQ3 0/ w g _, z  92{0V )zL_fb X ! Y , _ #?Eh4VAk'A>{M6|wl`n1 2 k#9 [u78[>ajLgq ^  E{ :XoU0:rtACuT%?Xr`:'z).`4@zXFJVWK>?V#~NQQ  1  r Y |7 t G bBFW5K4Anww?^dyv8?0jw,``IXW@BL$>J;|? j  + B aP k iA8\^>wWO"[v'Ev[kuF%ou-h Sckn -V>NEp" A A V  m X - 0 s9PFt/_ :SnPKp~VCyFwAWmC/b> g,UR$(H@orlJ$XF ? '  a  WE&:blgX]/9\sEr1?!,y]78WR=w2)SvH2 (o$>g2)]U/93^F  , H ' : @ IXoAP,YcV4$qsHS\ >zN&J-F+,q|FburBsDc":qp< ^  Q \ H . njdMcF6Z4SiY5(R> &hL.PzkFgMr`k@ B}J" a  0 B!bCgw~u?C9=^h iXsp=`mf-2`oE[Bfsf/?f r Y > C uT lo0/_(> GF&QX_JAd<~ g^Q.o*5Lb  G:Bpd>B g | S Q ]x`qbW~oV@,$ZQe xsr1[V43z+d21%$0DXg|4gjk lf{U@zJL(2UG[gS+= uajUHB;'}[C0kB&yK,)A[t=^9Rp-?HMRZaebZSV^hi\A&#D s`ek\2r[RU][G-5FPWamy/V#Hf #20;\h\;xk_TLC:."!.4) k/oin|)L{+;GWlyka[[`l{k_h~R5x%cYMd*^xd/"BJ=*$1Mntu,'*DsthmZ.!GrhMJ]|}X/.<GS_c[G/sS Kg`8   /9:8BYvX^.:-/~{ujinncRHJTWK<7@NSH4&%(("!,>JB+4MN3 c41jH(4Yz~m[Wcoqjkxzv Uz}b8 *Hsz>micropolis-activity/res/sounds/skid.wav0000775000076400007640000007454610724145723020633 0ustar simcitysimcityRIFF^yWAVEfmt "VDdata:y#6,7jm] "u$L rUS</4!D!?0  O9Fr{mHt  `+f\MhmB6]lqkV(dB* cOED .!  #@7zA"'^" _&9Y C(G;$ 'T"$  W l2W D$(D77 O> 6+ ; :B d+M 5 ?MT{ E(Uz ct |Pu%w*!D| % a q 60  c!g .~   R 17V bj7f 99 b{ $AI9m  PZ ! y~);`_e-5h< Z/$YVhdW )EgP]V WU 8X[:8_p+C~Uym " (3  m ,;xvN^< %26tdyupksUNߔ^f'6CE; 2^ 2xd+c  $ RFI" +l  >f^ OY8 1: /el 0nn;aO[ jW>P='A   sx>P ?5avQStVg d`[^39}mQ6%B?/ 2 & sA#$rg ENxF"  @ym I#"+JH aDEG5dC GKuk0Ien8 0LWdQtYjaM@_h5 \ a [ 6 '?M e  &#  z o$>:.;WX.qaQ7\7C| ;#  9  o!/s; ^`&\aelYYBb`;;N=bOV l rXf3r50b6nO2DXZc=&Lq?E: 9  /Cv?8"/Dz \ 7 X h H  MsZSe]#Ect`)Q oQUSl I 'U$ Cw:d-?@ p=PEB l x-p o *D59i7-.x  4 -4cd8/8?(;jF@src Q0 { l !j4F~]p " "%M IWh|w1 ziAZ04_ߠߪcZXmD[}*`<'/ hn A| P \ZkJ"9 HlJ [ Q2|<7)i ?>߃4IQ &_)J$0cAxHZXp \ rE^ pWx r W~! )! 5\8_ ( =! !?x)ZveP Fr # ? !k] N  6Ll &  \K\ =8)! (w 5 ~ JK4aG t|3 :Q3M!! a v:I te'QDg} c wZ!B"|߅*xH  0nIJ 99E q $" ;Mi q{U7DOoV 0xztBH Fq M:qrVzd7 FpsV6pU 4]v' T3Z[ Y~y:  (gG_ GK [  [["L .w 9 X9coeHt#1 B c=V"<($ez 56 Q$<;_-XJ5cs3 q%q'ZJ! 1;[L rDvU \T  F>Zeeeh@ 6$H ?b C?% w4S5" Tk- & G&X'@ : JJbQ_nPu Q i Cdu_b 1N>p9 t n ;|UbK G7b:  \972I oocm KFV O P > } /Z<q -"  WR]F4  + : Z Fs $  0| \hީڻ޲*-sM@ {:M9Z2\ ot| ?HR~7 |Y ]Xa`N+ _l99H kAiak ;C vsPtEbu 'Azs`@t}S%~tq+p2EP 3 fbUSvW D8IgK7 _ YBb  ##  9  aBTa]h  ,XGR "%z~ f zICAP BB-MNzF |IN 9%E"y 'Y\.8:,3 E =*w & DA , v t9\_c *1i _e [߉0qcNV2 ._u v OJcj( A? F T w Uh a t^6/7{; * U( 4 ~ p=uwm,1:O V @ Z = m .MF+=HMX}0X1Cu[N R {Yd  = Y R ;  U C ` ] #:an`OzxL ZIqE4dBs ^ qnEW)J] y{    4  * Qc`5  37W" _u#x.qy0!)dk;ifGo{"H+ :u " @ ("e z 9 d 4^89`d:wJ].;x8UQ}'5t47uxQ)dRB9GGw%/rHn h GE!B8yxVgX3a#,UF|Gn WJxeqA}'[E/;8T8 b&W } ) @  F v m2v(< K v85x{::% 8\O8Wf. 1M:~J#efwx~" Hp K" @[ KaymY>hx"^ !| k=> E)^8P8m <S-?[[{akY k -?fY X'y2 I  ms;$]9Nw/_t?D ! 1J>ZIvuC0J[v7 /:M O. ,em_q4YL!r D" # ^ OR'ݕ@hq 0 /PS 19_'zPo vl 85h ?5/=;Caۏ-z=T!b^ V;q L,Jn#E? H ;5 pW(AE#" (4~0$$gnm ߞ,3K+qP!&V frVn'3DV:lcKky2r'c۪zbb  p p h '6.rKSF lCR Q'J! # ^.Y4HWFS76j @S R"xo"r"  {U]MH N nG v'CC8"QmZ| x -a   }Uݼ%q,y 8>BYdQ 6 \ޛ}Kp?k [5mZ wJH6Y}v 57c6aۥ j uZ=f 0/0=_@,{6 ;'* #~!!'  1!Ape]0C L !> p G(le.j _F< U qe`!J  ~Jp|'"?4 Hi8 x  " zߨv z 8 u  p| v  fA*Twh5uZ*" 7gD ? @Q |7,BQd 6 "Y'. xs>!FZK> w wH  4#k"y%  v?g` ]0\aTJ_h s 1I}P}q-ek, J mz fu $6S ` Mz &`n r <T i X]7 (od)D|Q K - ,w2= 0DZ3 Kc:UKm[)?dVCv.,d``S 5$s `w y8x m Z b -  < 2 y!c>&l RgAj""-:D%4 bbbI \K W;r4  ,NP 84d%y4u!++ܗم  UEpb  tFW :$&&=Q#F( ^{ sr- (bZ} !0URw(yz $ HiPByI<   D"!u [GJ=cyo    # 3 IGR u 1&b&3g E_ o K+& W u N 9 jF*zLS>o?b : FY5E N  < o L B u^P39?1Eha@#1LO/sj3U {*@k ]zJ+p89,# b]f ;D +`RDX W # Vv (  eOw ^ #e// Wm]B J X10B2DTUE*%&K J 4cB\ : h  qgRK z V =  , C  [M/ v f |)F,1g K@? n x G Y d6*da9y4L(! 04  P8$% X .N c6{;i.qnWg No f Mo5Jx; s?7Wl~[:(6W'WQ 0"1D Z Tތu{-T"O B!D %$"u`$!9fZܵ~-y} 1k 6EM C#"k 4 H5RG \>0hb !  $g!v@T+]=hZ|w wnq W |]cIjtA~ } !6!i JQFoݜ`c  8  sb Cg!N5 ?YnZ7 SG< I Ka:##AV &v,a!! ,t=_ o.W1tAp P  !W!}EgZ iAYI;$  \K!ݯ3>  ߠobSW M!w >P %}!}?&9T%MN%w P  C6C Z LX.zt ;&>߄BV7U` qN  1]>LXߖ߆TS'v =H*e` 5~O% tC|,߾߳ߜ  A 3 ^A  [ Vdk "_"z R= PLL0eH A2Uބ4"*.Wc = m*- n ~mD4u 8 po^K0 "{#!b-(3qQ߽^dA k{ 8  cCH$ x Rz{ er&k{O u x|bg)!yfEeJ- v k '?p*0 |nK - pZ' $v}):@)YcJpp%2N#abC 0d?Kk q ^,4 A~`!!n|!kW o!E3u ZRP}c-Q! ^=0B ]9r`k Z . 8[q Njb VEj-~0KB3u fy]n+)[ 2J !R(k?j>u_ Bv4v)8' qD B+%+)j u 4 d  Lsu _iZ].  j>NQ$9l@iY5sUl%hF  5=}  M,1K{ o3UJ s tM0 SJ ` N nsTmX,{dj_W4E YVh6H u7]%?kZtMe zxb (f^WC)tV1@L,OY+3& _ u50K35!y:1nvG6_}b94p ?y<$l]fuBba]YzX}\k q[b@Had}>3)<1FH6%k0]q0 D U " 0 &U- tlgpb6"}Qr l tJ3J ^ % 9 1$ B  n fGI T#a>4 O  6 .j>Zda;n:Gzh$e @E[ 8   kX "KL7 s LMk4 T 9-A:& o,G24|.qߏ߶kUy߬ߎ="y  38:jX,\YOP:eK BG-u.7 ~?Q "  zi 8 1Z_߆ 4^83N<"$!I+  nIrFuX+ dR17 &CrA\A[ݼ,-#oP 2Mc>NwځzuQ8I6FJ * %`"#sbM x  L> %n^;leHk* TZl!'#"8a#Ot~0GIhg" F c r S^!@`C'[ݘBz3 T:K\ E$ "!G!!s{ w OAܗ]( U R;'pGG0A 7{ Z~7hPm!! Y <N?<.% ߗJZk7fl!n$H" +SR ' fad1[d%q. o qr7AF etqx/P v %}p`fU5\=NߤzgAi"" .<q:) G gsft&`+4aW$L9 b!!D4SVM a H *[a C w E Q .@rdhB !GM#/(k  .p]2^*0& yH>O[u2;' VpN iJf[  ,H<? iZ -[6+%HެR(2$$WC kg{H߇3:Hr`!)ZJ  n cNGm< /bD3; P #!(#n}6fLA >oo%GJ0Z5c  k M+y%=JO 6|C  b0H# W &fj `Q Jw'Vf]L%aT jt } Ej? ! 2$Z9 :  1  } +< )u b_wfl2W 6 Q 0 L (L(I+AW v [ F2HI\ Ny -_Am $Vu9 q$wjs5 0  t )@Ds[ cT = d%EvHdoOzOQGGG| C \ , .xUR>sD$63<95Z3! ) l ~ y   ZO/h/  7 K  iC, 0 , ~=S=7X?/4i=\k$(\/QGU`I : o  /  ;0 _ U # ^ 6z9FR&y  " 44 _ zl5Qt%"8|!?9unzX: k 'ycPH4R>xG) ":L# v |v.$HQ vb} bX$ ;! B^j0h}J  9@ߤo G _   &"}7 )%2 ,xc  d $& "p A; Oi%bd =<i!4  f l7Q:,L1* 5b"L5Oi- II! Gg = /WR@ w# E s6]N~ G9&YumQ#7JE!^ ]c ,< "suJ PJn_Rp!]C* E,C eT%۩oK]= NHEl n>mYJ bkG, ? U j qr'DdY5b$'zI W&\GE MoG_921OK %"O!iVlDmFd-B\ mZ=J8ltec ֑Z Ko@W '9s] } *nߧ a8V m[^4 xcD 1nV'{q  k ->VZ @yy~{ 7[ $#S _AWJ uUj !!QKv * H BrpENXs{V\ UE\4cw' 95 ݅? Q ` , 6Krӭ__ )-i ueJ a &Pj; %/Gs ޴Ei M V7,Lp ImcwR~xE>@~ kbB  u=03&+&! > >  ]?h|JS}Bh+ v z9(r U,FYWHb kwmr e n  WP 5t zd TR R?I|6]|G9n=y }CaDt T*  ' T d7 E bK+ 'O|_ mX"2# | 8kT % R4"y g)E y$ >9 w %q e'faa{:[!} ;3_Cqkha $ n=#\0Nw[802sO  S s TXaF{ VH( % p ?kA 6j @ ܭ/eASniq=T3S!U p0a -r{MM~H pY (s("" 3pvW"_ tK 6fG .^W y^   H _* 9  8l  Dh [  n Yc}$P+r "M($(#cHiON8?"iV [`G , OCTJ+] ! O9839i: 8 f>Y) S 2  `# p : =  D 1a}xivh8CD;,*AW$lC +`X8XWgeRL?X15Ri?'>yZn[<..Sq_&)z0+{#!)  F}P8>!NbF!5U^#X<rmKDv.l<v5C@_U  )B5 c l Y y R  O0gv ) V[ PN!mk($ vw O):ߺEF%;\u ~ K{ 1 8% s ! : )  ba c?j##e@&); U 1&?< ?W?)]Gt $fR6EC+7c}L&[E |Xr-xY. # RR  .=Ww  "!=y } ^b ( ;-.4ߨ< }> Z3?< s'z 8xf( / VZ}F&#L' tiX TWUz3N Om # C4 7`l9O= k ylUA@<ns \|< SC :Y]t#!@ |: /4p)q? '"L eI $ S xN[Ac }p0#gxArUSi|4L8\& S  D 3%\\7b x(wAs Y } qF ;Wz#J"*{ |% x8  *9#u u @  FjH Lk 9CyZt { % Dk<>YYvp @'v" uJ l =- / 7 h [-[ep 2}UG#Q$K6Jk xU c\U2A 9 u[/_b * $g 9_*lRC `;uMv  ' 9i'Y] rP,'unrI atG Sm h \gB_  E jf"O N$v( l#!j dQ}`_nkc^$@zc# " A; ;GTW0 ( , h!y"Z[;c C  : .Cd t !#h\V$* F ; C >r JxIZ!( q &C7 uK. R oPi  7t@# T P m "5Y Rf{6G 7fۆnrGR7 >=Nx|  \ Qenc9m!De_q(=Tb9 !\eK!$Z vLz 5U  "sDk`K27 ~iHf,58J}A 6gSp5n ;Dzx 'dV h =\ "#Dc B9,;Ic  e&Bo/E Ea 9'@y9Z). U fwkfM4 gd)yw ; $)'&?'s !!- s^j<Z,>n]b_K(5  ^ 4Hu {q6h}z  }* guJ51hD <jT!' 4" $* !  ?]d.H)U BJ o  Sw~y.]߲ye|. Ne4}gG0i}w S[ _gwW=B)@"qxfZ N QZN 1We ( = 9- " '  2 4E L2 9mOB `(| Y )&~9 !m=:xW7;u.  /qu5Hju& |#!l5 &8 ' gEB 2 z laY(i 5(  t+( / h?Q  .?e < $ :  1  O o  `.\]F` Q hU)_* 2#L&tMx*D45E\! /|!*0/'fVqL\{~m5z#mT. PNS =9dL^x%|  0 Z 1 2 | U  bO39pu7Qm=z%{gUK@M9g9c,w-X3#Xp)\;1ja 3S9~xHN}{ O^ / M G- b6f6iur R[^JZN`j?$,9ORh? v O<@W)R :>(` F ZRhH=bL7>r1Vr.R.]vQ|  { # W  k f v`w+# cN\ S  c7O 2KAnRCG:6SL{</  ` lw ~UsGXC(Qo (4H? J  ul G U6|D v [ > qu8!`H ugm8>QB7b%)H]d-Q;wq6VNw6GY, ~ - I nvKZh jE b 7MWt \  z_,]f#V& >e`!E#' +v VjK,!".@irPe ;":Id=[1_Q Cs"!x$ W ^ {HW^^2K&1 >R7Kބ|]5 j {~ic=  '&AZ*. Mg 6 U+M :8fPabR O9 &- ?. %)x=ui*uF[3(99e 5  5 _Hub s 2DS x. uq %b`` + ]N7kC4T> 9O DM j^"Bt^P830 E{\ -,z(G j< Z"&}`nނiZ t ' } V;gv9;~em &  ? : LV}, o , T %. U[ 7"/89 / N[ h * Y=bsE mV_ ff1m 0h B/ ZG o@-z !3Va{"gc + [ Z{V{=<e ;*57]KU c @L`eL n ]<j  a H e: nDwr ]?R!f: Y 6 = o  x)Ud(}}*H8micropolis-activity/res/sounds/monster.wav0000775000076400007640000007763210724145723021367 0ustar simcitysimcityRIFFWAVEfmt "VDdatansS}z\e{~qm% %?7e]O2.=PT?{osuox{fd9(>Qhpds H$0>Y!LcDvipsnm;[Q51X>~1v|_|- osOL Hu-M,D,.e   O_$ *8w'oO9H, 8 ky  ~JXYokd`,-CZP81<A+B^P=[Cld{&MNq<@ S`uv\#$fhh90 |Uee8;3lbAU)]2vDcs XI|p5y#4G/B!,]kbUei,P%Q Yl# QnVdiNP+v?%9]gRFs=fT8FlPvB~lkn]tyf3^w O!C9rX(V^,1.a/}\GFKB5LB$! *oZ@jQuYW([hP\$(+A$P!hl@!Op6*R)4?6#L~} :p"| xZP'xD<^J A )OtRy N1>HK>Q~E]><A$Y{4Q D!$T<i._FAYM)_Trl{n1 0G>8n"T= kNuvDDeC.(y8O KP/\L/3cc[C0jjw1{f! Hcut2oLG}5 8va8H,37+|bVI)iy3\8wwF#">Z+72StN# )xdpYaty{rzHo  !/Dh Vrq;rU_K`u]s1O#:2T)nAN,SMVh0 ld3Wypk4tH9 (6vOa<7`nz :-j`T< c # 6h>ozecsC#)2$1.B4* '.W*o8 383P#xvfVssf_yNt!<#hxh6za{9z||VJ'x;#70* xV>]1\v;iF>oI Or[5U- av4cSx}g4/+wi0>]{ O a1P*M^P`Da8s;v 9 Ux +f)&W%-?[+2LL=r; qUIZ'Ne_0s`d'3*,_< rbeU7QT5!0/_sayXtE2]8Glxj:XxTnw}Fzu%N+ !g^*z`~P`gyd)4:5a5 I Lm\;(WOziJ54Ogq{bd~F1YRXN=[j(.Yn3-UD 5J5C~xxy,3y24vl]>\YaM|1+!_\&,N*%>[ekI(iZLM eJ!j Epo2RQUVBmT4JNxuFp* SP_1~oL m=['B$xu3M'DvA.+F< y JsOW4l] Ji$1a$.[[Vf&J?y];@KOQ\H*RM:7sc61yR+eZs1 j:<&-KAp#QlvwInv -i 3${&$pjZ,6-%mHm m^A+0  (p/! Q@J6Vdrs9szo $o;~E9+bo^pB3\rJsJ7}$KnpHM&lY!I9$|]a/J5J<y~t5SZ'fnw3 k3q"2 Q8idY &/r zG c>}RdW{,QT 1Vi#> %6#A-Zp{s GiK ",t`Dv~6Ql %^"J1  Z12rw8,<TSE*,ZyIY(j;Jv$Ds&$  " 5[c.C`dRovJ: J + lwcwZ2Q`0fU 3>  ~0121p* y[;|dyKD~rX={eE yp Bn4t`Q=Z"HSE`3>5(5 / p oB}.5rp0,=\KvgV#&JQl%* t  q5 O 0Y=8Re_z_p+ C C G}IOM} <{@=gp5F \ &Z7o:a2TIV@ y g U ^]It7 .\T8l.> J ; "M\6`Rdx8i/`'cB> < D n zZ/N }/s?a:ur\o{7JJ F jOtV r1rIU9Ch$v;- U k/ 60^[F1{L? }  *[dGM.Xnbwlw87lOD/b _i[l|Z K(r Tl5hg$uodOl < RK)vK,{t9ld!{1"TXBn X 4 D4 }}{Jg`#kp{Ob]J  3S}5V>e4!84# / # 0# ~ W 1|BHXQk}hR}G}e8   s?'7hK_E-EW 1  8t8'9q5%^rQ`d` U w{$ (T~[pGx-&@9\~ +s '88I{N_GF>T((FF:jP| _lu( 9[i],a81 ; cjH  sj*b*_tdDhDJ  Z69'   6GH'So=  X uf/O $ aHs# )$gzll'Bb. (f:VO ? 9R+ oBS V<  "pl 5:-g.a6;LjYum  9d [" O ^ r  7BbTN +5WH951 , L)PH_%(S  &-01 P I) ]e.<  a%- oTmc1=~0'F nJ d O?]hY)d-V u3 B6 v!K b  RBu+Ohz}bZ2_  zOe- = ?<,6  i^ e^&S!j73>e(Yd A {\k2< 1>GDIC\ XoK% m  J%v)[t Y  d IS n "im"Kw #bT X1 L wPm#iJ?4 c5$ABmo+ iP ?<g]KLiK0  Vz^ / khm p 7  @ [S\Yq  2v a. ' G L ? f/yGP: 'f/N=]+ @ Owz}vy)yZQ[a `  'n!eb6\!_ 4U4ZsV >A ]=Xp< 7@ gJCF C < '!  I) ^X~T+hq )yvP M:Ld(  7|@I  zbv 1 9[f e>KE  M Wf:X9"|tw@E Sr@  u_*^EC'BK ;eSs{8 : ,E j 7'Euzu[P k `3a  ,  D yA&vA>Goq@!l^ 2*y 7qnr :}cI-ZfsC c yuf .  b  i %< o $qrYL?"upNi# % sYL/ be f(~ y ^Lq`,q ^ v :,   ; % ejm6hR %  ~H  cr7ZB qW#9 /z}>GY B2'g9  > l {X iOO\|'O2L_x}y$ ] [B# B X~{M$1[Nfd{ dv7j ] 5 UXv9liWre2\PObM v*Q "GVSspgtdY \ sl i7?  wm& H:b2^iMH  A]k`Kk r 5|F<,m L N  , 2 ` z bN *n96Vީ.O> H  } . v ; m'X%FVhx*+tX|dI( a+ - = & ?"!n;    ?$ &$RrJ dt._OOcN[4K S  t  & Y _;D^ v5;O2xXU  [ *P GoMfJ:>6p5q #b,1q $ [dV o_ U~r 55$:|1Y8 " o :  } Im $t> pZnOJN !c+)F. mf #Ug U   lF h"Z$x=T%*- 9 [Te zE,D+ |iIXLp"9 x * >, ,"IahWKh,E jX Z  y7 >$19<{ .!f_  < SyAN d5- i?3eCiW/Xg"A q  $ #  $6 #\F<>k*Vo 7'^- n t @ @  K  Gv ~VBP[ x3""}Cyq U f y )  ~T^O##*'r$dE$ y Yjt {aVtՒܲ95P"4/SJ +  ] W? &J)!7'i~B~+W$y Z9,j uNF51-r֥0fd'8S ^1 9 N } bI  wO ; 3 l,krfeA2c c7B-4 /  ik,#0|%X 0/D+X]WU  Q |n{ gp  m`4dj_Ԕv_gX?NL  Qe |P=KoQdD_"le?*(o, h 1>GD 3OU WNߩ'$o   ^\P#a}IY'HB&#M Ei  ={l# X{bLf<5 BQOEID>& A # 4"+>' N z\E>}zs{T5OY U 5t"9[=wJ m{49=i0 E &gq+ Q)LQfM=I}~Hb]=lI Do)D+L4hR2k߹CvJ" u UX' *B\) d}x~?.>~H0y;k i G,f>h@.83A:AK6}} N,u "$ 3 WrqY8!tS٦J%!t! q S~o |9F(npzCpG/ 8A[ S wߛO==x|{ r & 8 O W    ^2N=@OHAFxޛm`;w*QE A]a0u<-=ߊ."5LD FB'b u(0V<pe fS: t| Q>  V1P\dYt3sگ߳ A5]!3 D cru AQ] Y&o[>q ;Y |C  `#) wߊ' >p\&};{Zs O/$ 'xzs\ ? Y mk$dN8*8%>> v 5tFiKْqpn.[6No  mE 0 8*D;@9"&}j1w eDgu V wu oNt 0p` >,c2x 2 ^(] OnJL V|ٲՠܺQ5!-eM r '2 4  v hv]Eb \ֺֈDF9XV^J R9 L X,gg*/~5ܿ/u!>/xw5G+b O  `1  ElZI6+;kPNY?j"7b>! KK %߶@5Kh/\P j %W7e ep6TZTsG1p}0T!@SRT GO~m4 MFDQC߳n.4 -R =+; tbV[w_i<=f:ډڝe!B_0D 12 F=l5-ݭٕܠ,[LE  ?(z | ) !0!^wjE]<jڀe1*)XA*d + QE ?F /4;6+JTTUl.e6u#2 ^O =K 8"  Ph N97E %[xCt]]0i9 .FxTq[]HBOm  zV| Gh B,kT xm'ZEC1$`)5dz[m a 6Z"V%"}u-@)M\" +H%"S#  rx*w Ts3A* Nl Svl ##P'-Jy &uzS'e)1,Z5 Z!7-"$!em4 | eL &}E h1?: 4(a}"]#GU~!- .ۡI49+Y)& @ f  " PQzn< ,< 5I)4,o t# ׺y5yX*s"`>; *!1N:l G ./2Lzr2@.$b# lJ <#"2/ > Rc 9 0|> &VDONYr٨ؿߧx(KB8g#`!,(#  3Q "!h  D8f|tB 0tL'~A 1g* '9 W h("\VG:bn8IA6S .M!Zi  P:c 7L6 :>CON.Gi Tޮڴ38@A(x~l YV :"C M" S_u"V0!< i@s d${)$Fx  #!, = q{Ml#sEtܣ#7h EA () G a{"3#-!7K\n vtKa9؟t#)2}pz2 Q !!Osp "r<^v߯'<3K\yX~& LW!! s  !!/tJM1IYlMq85H7P[#EQg;"S)F& "*6e޲G4vY X W!~ G 32Z'޿ޙ[l3 n 7"`(m%(]  " o)IupG7C$[;'AܨMJt <&)"Tn!@"!# Vp ,+P Dr Tz ^- } ; :u{h K2cނ@sn}\UWI,;O!w~ " !"I! j * AuJܗ ,t} C A`60"#,!X-c !m!? 0a!!#!L014GOUdpR5/k"S"=A"g,; q h !{!^ By t>KK]([ BDCߠP&-"$^z>bfi C!" !-5  >!#"f!p^f]j]"5#= u1} p ,KwqZ wV.5sd Gt#%!s {!V#! FSbsd9( cNEK#; 76*]e  X !!8 $ >) x',SwuB[Dp^ j$C's" u  $!"!Ji Z  >az4$z, IM }Z @ !"S!8C W!_!g q!"!MsUN9# \NO&-gb#*[O s 6 ^ KL a2^Hvg ^ ߹ yd-<M.tR!I NN>` M!:! -}sm~DߌU=Uk wm~=1 ! y R!SS/ݒކ߮AO; #z&"R L !q!st { !O>$Z9_fRFz!!} [## C$}Uܘ57s܂x_y6 P67gu e  !!:?3!ߜ݉߆qCX;MU#K4 "!7| f L 5!"!qqE@f|tB =? +"!G  u! F "q#t Y,V;2HKk&nUv E[ 0""0'e`~ R  [ b ^^NiD߉ ߮i )y6]wR& I%)$k =. <\ "s#XhD LDPsI(fuqVj9#_8 "a"P k !"\! $ocmXhU,}z(>y: &'%1 } k !_" *kG (f}ul3"dި3z5tU+ h1"~21r 9 O !H"/ !LPzp\P\ߎOnu2)bc3h={q r ` } L B L  );y e߆߼޾ߟ48w "' !1!  P % Wuh&0i >i&=*4SvtX!" z_ !!j#."$A"i Pr]}}u 6NPf[a&%o@L " o !"; %r+a5)۶VU}Y KI""^ ^=!"!V<JKAAމx1n6uNIr6z KG'p&Y }_ 2 B" "w# # z 8pFt ~`W) &iuny  ,"!QcpnI7#$O9ܓ!KfI7Q! 7~ Hs pnWgv{HgOK#P(3$| ! !s - [ O 0 7% Hޔ`ݮ!leg@T l!'>(!Vh!u"!v>'VEcm8xSv>z|MB#u![ s! p q8sVV+HߝwؗoH9E|s 0 ' U=Vpe wkߕ:$$g1{Qf!!s  \L Lp\bS{?PLP# cBZ& "!w .uR .A=K!r `glo18N"7#3!i - (}qD_5}۾Ӱ{{(M` c[ Uq ] vN /GոC20} % \)03`! ~ dlfՕج2?^Bf"%h;W3B2:)- N i 7 h|^Y8گ@QIon&8Ds *34x`&P6oRmgYxlhK3L~ ]Qf~  [ #mBq]4de@vT  aXd"&~ YE%S_^'BG'HD3lqv<5dI| `N}`d7eCG..W~-  s 3| -8#+uK2N:0>dGar=`s }9e xx P *'PqB>9"s]Yl!@ S idc(] c 7 G 74*+6ch PV(iYUd| {Zvxdu Q),csS5|k -h@32N3I)Ko|XwW8G,tBAz&kKR<6Xl>,=L8 dP5J%)JY]Y\micropolis-activity/res/sounds/eraser.wav0000775000076400007640000006412410724145723021151 0ustar simcitysimcityRIFFLhWAVEfmt "VDdata(h7?:0&#$*.0-(##-:DJE>547;;2&!):MXTC.$2?LL0wr}n{ -93"/8.@ahV=5JpxgSFHWhgP0!0Rjb: *)!vitegkmkl(2<LdtG9Nx{hO7+8Yoi{Ei`fomX0&8AB=;I`z-1  Ijq]>('3@@4*)2:1 "'&#5DJC3),>XlwxvwwrdRA964.& !%(&%(/3/ 2?;* ytx',.029BE>2,3Iapm]MGJSVSJ=1'#*;P\ZM?78>DJPVXVL>/"  +-! 2JVYVTPH>7<M^bQ1  *-" '35.tko{T$*o+0,*2BMOJFPi{ 1FC0*QBu=J"e2$x9OL ^7qFeBWK4;_<-IcnbqHjva59ptNK6"t&JkH5;h= @WnHSu/p;:iA{z.SbJ&M\!A`iZ5|]oE{B~~4YbJ!.dmjfG.&4Spv]-{.' #! qYdB.( cl,i MZ@AOWSMOW[P4 Ax>}L8XJsLF;re[f~@C"0- *;#>i|F @!pIA<t(-&A *8JGXbwggGi[`vTynffOilo)DMCv,4/zAKE|rL!+}h.3H2^ 4ObJj?\4$bX_A4E#bzcG, X>6Hr3/`:=P7OSHJI;U:q% +`c+,G W  k R L I_Vb)[Ws"/.b0HpYxb.+?ai@ *W>    ZH 1?X]^"hZp9_ )<*;.sjC/&_pL>ze4$ .>/N QXW B_Gv4eUr3-IA<cdy@W77S1jAs8x N ^_Q i - ;i7T1z R"2mcI'-kt>B_Fx*&>(5l(s[8QpD$3{~Nuke.0/uSI=XSB83+S %Hlk\I9-0M 8Pduo>b<Gap4!mCWusLBumcPDt  w 1 W e  ^LqSS ~",DB!mo,=1R&giQo 0  lrjRh:<H>_ oJ_FFZ~+.0 R XmQ0(:6*#&.62" 2O\LW7i][!7h\r#~.jdB~z3A*   > 8^ x  S   dwOH X1wKny#S:gmoo()#|x> _/Ufd )($"$Ax q0|N O 2csbam|8xH#\GHVdfeqX P;.\qkW7&$STimCbm 0GcrN 0 ` n - + x t L : qiL#FXcp6!`Ri3Tbi+Y'\g8 Mjb%|%h >P13r8pK+s]. 3><3,.7;/~%/,&7)qJ-ue\SKM]s{nt -DQ|FgpAl l{Z['m*^@*Yg)+4\~]VC0s~'~oU>Mn8Ayb8a$0`'Sik]I3"2TPbA&0Wsg:C$W&NloZlJ`FN4 _c$8\]&}JDmzh<a?2;O`imqy}wv}|`6 /r#8Qw3l-[$aR1OvUi  s:S"e}A)2:[a i+.1/sBh@!0`1?>3# wS^?5RMNu!Vyi;E|+HD"ut"TmY%S=AG8 jM.}nghlrrhWD/0NgxO5)Kl n4(HYZUZwL_@8SnmVC5oLP3cIL[G@.^=?/YRE%cN|}P SgKEI{/)TvY )[~=}KhE;KbsqaPM\u`9(39<9.   vprtusu~IBe.a>:aVc~ y  ;  H 'E><NX'q?noA8hJ#i ZM6=sdS, P :hGA5<%[(Ru`,x=^ ]A#/fK)V@@]_5 A3hHE;+o+AQ^aJ $P Axw2]M'gI1*$fEpLt)io?(y z K Y/A>w%zGe!\%}V!& b   k NP 0 ST7@LR\|foM!=pN8+_B] I:-;6 ^pB[l/8x oI"x9->?I!*, \E1G|M4)`h2# Upq SRAW08vVoQ=xkFr~'.R?*>X7=Rc? M ;vNOLRI*IQDQd3t JI89les Bh'xfnH8 eNBTtFJIp@i,WHOSX|mRm.: & m Cj5 [M)'Mn=O8iU I / V x \  C $s[>vf 8ߧla; `X ?p{75jN ; *Q`MNYQ!+KhEE  V z  Qz ,  >K2tB&awDC<A N  M = F!r:Db l@{iXR% ~ 3 ceQcX(*Ci y m W "h } w  rA[ߪ{݌ޛe6w}(1  R)3!GD 6 O  J.S,F1[3oPL^:* i  TI;O 4  5%KlD07maDd,nlrX^ Y  b F ZPenA<iK<`_f|kXH,1O 9 Z-j;-!S7cEke3z^~D " 4 ; 0 8    -.iwXݺݮp6IPIy%c$ Ab$}% u>-\{|L>l-n4 t] !   X UO3]gf] @v=j5#[ ` P J : o [{Lr] Q~<7.u}8_v { mk 04Lo/J&9 ^ dp h oZT l/q9Mz/mx\zX$33 F g V{ Y#? w-Mbq3~L2%!U4 X I  9N&P F Qq<kZa~''W ~Ze@(DGY-w | }Ro:S!H BHj6[t@kgY < > "  g G ^ +:gc0kl!4B9 s $ :45?_|88S`90Zs E8P  < >F9>8T98ct6$k" Y ' ? L  G ' X " Ncp?)IgmP1t4Wb34  2%*[Is)!-d $8e6")O ' $Q <u0fl[^,KHK{YH%JW@X ?  HiU y   U W%|.!{xr Nf! [$G)ZY@CSAt{p  ` F Z C`uV89rV "^kNF8 .*>  SD:LFpbZu x v   Kv36 CgU@".|:kUf)Ml)J{ | 8S 6 YmDj 0 A  U 9fp'IGU;P86<{w>V`  T 0<NzUF7 9_ w|!5 Jc@XX<Z.#e^n=j9sko3zy"UwT- UHd +AViL:2FQ0 pb'b$W\/o!OE'c36'~A  ^$7'YgS,.K"(B"Gg.|awz/4bE~Z|!b9^8#KElC|Q $-+! vdb }_# +y g:t4Y^TqNH!)jHcO&*Zw,mYr[A?lCI[ ID8[uUx} f3_vn ZOS?saUgj. |~ ]]5mj68 #/aO7aaWfCuf<4`+d7_Y5g"#<~n}$[P/$Ki202p@U4>c!f^ WplZ&=nMUHMgI$g]Z 0qc8R8| _4Z@MiJ)1ErYWzm{vI!>Y6\<zMQ0;t/^8Ly%4v]KYI-H X/"Ip|nrpQ&z0 f^sl0vc:N0V,yB"nUKjF]Y*wz4Cm@IkJa_ v!R|Z+ 7?#I4UX(+Q/z Dt-/1KdMd]8sg+4V%![?B5@'{ 1wRdI!2{i 6f w,(=4$YH,O~RDN(h|=%GU/+>Isl58g OZgn"*2CstA`MVp`K\#v!51V m6-@FO"J=@ XHJ7Y%:V_m/AQPbTk? |a> (lAz3 FG65sP5D'=V[YXRF#"b(c3,Y8mF; f3er[54}/gag`+1~bw9hhIMhgJXdrjSl`+d,+3e#_: <YC+xehl(D0%[w0$o$CL$9L.7}sm,} 3(qe*'-(eUs@]~k(&bsr kBr+WVG2\j[D'+3"vD {}]$6HDFDqh[9 bieo !&)Y:B3pq!D=x945{eW%&2 @$lm3Ob=D3G {|i`rn HW/gt&[D)w32>e  2 ? 8 S   D  h | aZ )@O%Xn)5$d2z=X t+g;E"ijH.K~J;'<}8X03XZ7^ q+P,trv\Li F_rD:j)iOrK|XD_|4F$th/v/ P6>'ld|^lK',n1:Ym]m:*O E]4'N: f_z0VyAj[VKP.7RJG-9bhW OB$eJzY+D ;i^~(pL"Q E .(G>-M~NkeG"%! yo> 5raF:CZv$`C'~sk^JAMl"rbN~$]~]8OyQEX~^&8RS 0(W &D^kf;,TuPBrEWVp<%{eTk_< "-% cOxT&[ Jy):Uz b5$%w`FM' +W*;1CgGV{\!oH% #-c6BDBBL]lwxutz^>,(.2%|ZCDVlz&-"/V{j>"=WkzuW1 .;a_r}qXL_$6BE>0,G]"kY:D5,1 M )T P::Sap60(ZQ`PZt68RK4TO"G|< R}A j)$}9MX\ v  \ . sNdz]\ODa^:^H 1qcgNY>LPq4v]#M9Y!zo/rZ8 ?t}!qto/&dAxrh@sM^~_; ~ohW4~tuz>p"U(b`[ 2~T6+:_T ,:=BN`r*EI:^G@EE3d AUQ?3:Ncx 2UaQ5&3V}zI"/OU0.j{XGO`kfYNF>5(  Y:@BIOPNTh~pcTIHQZ\UJ>/)o['! yor|x2I AnY 0, !Bu9)K:mGUc) *Miw|kQuFyMa{TKdtE !=P~ 0_Gwh $ yy*_rq X0]>hF cv,76ik&1t)P=W"E7si ]} S&6bDN h[f)M| &48-fEhPL>y?9W  ~joyxgO7!}GV"}bT^'V$3Ig%,$ O% |}nE*Ij -Nl`F)+457;@@=974.!  r`M?SkqcW\myrbdJ>:&#9T[A,FXdpysS~  kn-PpHc@W|thl^'mtp2-ps@y@+PL A<gRkHa1:eV/x 9b_tsT -XFtJ"LZW{ubQ[UnAKr}gr 08e$6X:,uhXTnAh^,?ZS446)b^# xUbMjog\XXYTG938AC4zfTIGSnBhd2*589;2?ZwZ5"<^cA!gPo*vHylgV>5ToJ|D>e;so+@)@{ yks Gfp]3?PF%\Ux+VVJt;B[E @4zJ*xF;a(XkEOEdr_\\k#=&sDoI|,}%lV! Wc'-h}S%]fPEHNQJA@JO@pn ~x~ ~[EN{*5"lLnZnArQJ;<&}dFwb2d98zr6t_A65"C.dJn{5JD4)&`+.lOnlhd9*F0%*((2HexF GqvW+ 6@4,esQ?=FG<$ 7OWG,FWP, Vtu[,mY^LhTv-m ! c:'3\5IMA(:QWQB2'"!'%1V~wgrzK.::5/) &<A+q`\etS% &:GTezjULUl  ;\aP5 #BayqR)1:&wL>SGNAyx<R9U lQ.zL5jJDj{['0'[11Nt .EF.jMEY)xD03#  -0,# 'LjoT& #,08K^\5RfA%LlmLBoR0v\&#n5 ?=GzHeJ[rsky"  6P]k[, 9MQ@!$IoqT:! 01~b\th7.](mxU&(MZG   4=5! !   'Kkr]//91'!!$*4APXXQH@5"?SXM5!:KOH<1%  :ooVGBGRYWG/&4BQ^cZJ;/)% 'Njc33SI$;HGIZva@/8HQE/(488:COURPU`jhS9-5M]V9=RJ/ # '94 )$  /]e?Fh( 6_iVBC]zslse? &(%%x\ipk{>4  )75rQ~\>:K_aQ7%&098-->GF:''Eak[>%!(% ! #,6;4!   ./ $@SO:" $3DSYVOHGHHB9-'*9M^c]PFC>5#   /AHC8//:GOQNMPV]bdc[OC=@HPRPNS^mwyr`F,#4GL>)('%S\*a,dgNo"%9 'ef>$$A@y[Yis\'2^_8 2Q\\[`glo3(J @ys9  <r}KlWUYP6W+, #@RP?7FlVrhC%*V*:EP[ZF!>[NP-l^\WNJ[w5~T87ESO>5GwI!4i #on`Uh pLTPO0V+(N~[9':7oG.0E[U+W|'ub}coF|FbQ7* .(-b~zZ' " 0\)ScVD[ Yh@ ,JV]rqx'-!uC#=;N_;dy|(ZH`xc}o^TWetxwtuxq^A#(Mvnj.=<>Sy!=TWE) 0h"!w]KM^sqP cV\cYn|]eRIkyz ?SC l49[e_\bjmmuzUNvz| 2j 7o{Q1;jlTfdPTZWMQjl-9 ~dD5G )!NITl/aG0#"/8)BtG_ /ZI:5E%G_#TGs]+V"L^V4d#S0[lXKhzaUvQtRQ~bIKTRJGKH(tt_%k{dSYj|;R;AwuP)lX&G\6cEeqv.ZkkfhuzM!9LCJKv1pK?R{iF?N`cTEBE?w>b.)(nS$O}Kf& !L^;vosb6-=("p[T&2RZ xbw6FaR&+czPqxXBw DOnYu(ktU5<nM,+@c77-f.p\'5?g.ec@+Qc~I?fT59WxvsrsnbSP`)(P->RH&l(}?aV*rTi*Kz-oqMEK\$ <#6tYN[b m]#,Q::zx O>sor5 ~"-{hz(Yld[jk=6YC an m~9_o'SA9/9FKa)QC Dm3O3- f;E0^)F'<g*Bth3*4?#a8bQN\v M+^L{E1kv9J:mT  =  s cyER<&A#D;Z4n%w6W?]|Lo{ !*) o v- ' % > g ,]kzhwP ^,3!h3rq|;n{XQO$xg-:&,2[s-BH~,;e g0O > : # X ) r%96is~GWv_iQ m $g% U s ;`30;`: @xOpH4RBmXO?wil:Jb]Te}T\pKN jU~ xHNEq=novu+2MOb-nz s d  ! ?  /LB<>4[lB^ T3_TkE* ,  bI+C@ r; RS\^HA/|tMC!;79*0/|,dE0 `b$HnuUTMD(sc jg_  Q [ * g]Lk 9P7B%H>d7q0 ^ d 3 L9L.[d We ~ e  X MIzT^Z0 Qy :|j"lF3L6F0@z>rh-Crn?q+  r   E w M 53.t94 ; yY38h?d *#(d"W ' }dSe4 Y c3J`8O@[.4B|4V"0$gvt_Gc86^#^qV%!E_o{ (Vl GR_|jcG#0- M :S54LssGmD0dtR^Xga( d j < +V=n:;tb=S(T."2Rvzg]]gvn[Zln;sU:5Ii{sXFPv*=]B= < )J~7q  wO:;Qju_#v6i0u#h-W1o>i.O{D5{'m*m4:NKUwkLPrs<+C8S^Qut0&P^MklQr%+4Yg_ Mt}yrgXOSdwiTRay[",ZiJ YD;68?FB, 9TVE-#*,*1E_v'66"M$VR0pTf,=  1S`W;#/1%2Uxp\XhrQ:5BZuiN?Fc{WBDYgaF!m[RI:-0Lr^- ! 6ZbK%As~lfn$<<*5XvsH?\lR?31<QdhW7skpzzgE%-Pu #-00.1:EOYfwweZ^tzgds\@7>LRK4vvsZVe|{ik7^gYC3-4E]vx{yov|[4.4yYCCSbcL'1=3)Pl}Mti:CO;":D1 '1."&P~mmu~rfahv}u`K9.$jTMQX[^foxz~`6 -;9:Kcw|xx~eG'   3P^YB$ -5*+::0&$*2<EQ]efaZVX[[VMNZqj=zbNDEMQNLUew|z"592$2T}lG8E^pn]MELUZYZ\_ZL;-$  Psn;$4 ,1"2RaO%#12(}y{|{x~ #!(//+# #-6@O`no`H2,3=;, AdukG  {ox  ,G<ak[IHRUB,^c;9W;1,J]]UK?,  >\R%syXUdZ~|6Y+\OFyE.jU4:6`L\f)7fqD<@ v3S&ESln2eP#&$A{G+ :([5BQN!4#$*&&&&Z&f&x&2&U%#p"!6V`5 6#:Jksz,a.WL3P<"/2uB  &3ߊ+7ڨ`Szٝں ݞSqP*(l[ %S k!#U&:(h)****5*B)((u)Z**)h(&D%-$d#"0"! H6rO 4 <tlKs@^l $ b(J7dssz5,q;s[5 k6,5&[ s q+ASO0 *DuJ>AEV<)0QxJ{Z.Tv6Kdw*rIeXYxHp8v&^Neml9jnAu>#;NrC:$ ) O } - C A ; < D > # w N 7 3 : 8  PK;}%lao! N,.s;?UPv5Jh<XSG&CiscT[~ 'HwEY Yj03Pn<\ hQ ) ; m 4 7  A A$81P=ߺNpKj36DA t y2Rhru]F{:S;`Adp ?aB`I!  |t ~ 5 tLaBf{gzIR)@_i]s1G# ?<+ey>q[uK- 3'\\1.M3%5 O\> !@\DZcE6_XPrF r * oN8dKmR߷noemKܸޯ~ld/z W X> rm S  $Y;9p-^J% 8 x { 6 lY%C g cPSh`mT%(5)xp -}*KDr|RLxr6"4uyI6,s}Q4O u[$ry$ML uz*2dLZz{ 5 4 l  [ E  V U0  :b!zv&pH'טm zX m Ph:} 'U+ipZLs . =3\  }MP+fpGpr*(5F5*gw{/")$&foS4l~kNgM}R_ L*p#Q}4&|ty_g"}uGv/-aF _ 3 A 7 @  Y 3 # , T  ]G@Q8  p&dڗKfTcЁ>AW}V + : # 7 "  @ * ) &  2 c  4[0S!; #:r g m z h<M"8fxx, (NN|7 T :Ul&MQdJ\ehwtZU9Se``*~x/RP;;O) x/L)h')" iurm#[e5o^ &  t 9 &2 ! XL.XQֻe5XRIu\d .1h N /mOs'?u+~1=/ & 8u]fTn j= K !E= / ,=7 EZ +i%2x i0x:f[3DmKkP&JdP=l^U$Z ow}7KP[ "F^+RPSY@5I8*h2\F$)Xo.b'<BtVq%0   8X S6 ۞MީL` 9u:d x\OaX j<ft_Z#*&|8  1 { ;u5\@u 2+`tx\{(|chcZkoG L G_NRkj(l8B0;^t*ssaG1Ulm)n`Fs ^MKOXY@pB\IR5.ISH9A0+U~/Q"#D`D0X=$rxb8H_ B~U=i8cHb"aHIL\pDziL LVz{.yc1t%1uWa%oDaPsb)ZxuT9fE )W`*l2"acB8h ndoA H2 _ ]] . 8f;f%'WlT$ :iQA^[ YJ_QQ 2/ 3\RAU2Ia>h#`fDW+m6Qr=rc]**v 1Xwrbay 8hqK9Gp7CB<5+R'E")/O9lo]a+<Pu{@hF^^vjZa{qG('4=IdL15BIDIfj1idny~weH$  n9S?`ht%7#+WfRFFWs[%x_TOMID7c3"hx^PH;$  &G^cXB) }tony 'Ca~R(hhM;.%%:e^5roy|dC! { !E|o #HAu: -Sy ,;MbsymQ1  '5CR_my|jVKRitWA4.(  "1>EHQbw|pid\O<* xmcVPXo~U1#/Li}!*06<BGIF=3)$C_^I:?Uiof[XaqnB%($!$-0) O&f!,:JSUV`ssM*H0*.  \Zh:8UggX=m[QZyln^*.HH_`70ng, l_T,cO/_,'\_0MYx;)w2z& / QqXo_.xtDN #,"2k5/=H@"W:5`.BT]TRmCK/9DfOd !V-{e>X3W M=(;D =-5RFyd# +Kc}L2"UYOWAH91D 8e?M s0([C :-$O:0;BAwRf/Xk?._ PsOzk`@r4{D$_,Z rgcbk.fETn}X]UkMn5WQsf:Zj9!sWaw{vmTHzncYk8: wBe8]&Ss/$lSqK%SH }1#g)bp7Z6=bJi>9OET(! j_<5 FH WZ_Z NYh2DABpVFPWL*G;/MVK]cO2(V!$"pT InK*Gx[2*SRYH/TO%wz')~pt]ml6+gn1{\v{? 9V:#xN\zVNnwYwfQ =wdp4E+Z*Wvk?e`kC t 2I[ 00]NjN\QJrN-TN&^N6W@ *Gn$7.wrO'GdeL,Ahd2X$M?_U_J+;&k|QU,&! 2 /<2  Z>kCu<tjy}L57=3 'mp2hH#s?4iZ2%#*IhqVX2R1>2fnMV0C->RL'3SO),UP&/:Q~(-e`%fV`~(@ ." 7L<~`Q_~{ 3A>+@twG$& SF"&<Xsq\[xK*#**~s63#0x0p-[ADVC*9/%BWT?$"1Kcl^?2YcO+ 9XaQ. &HT@# 8dSVj]C0' .EC.,GY`_[N4D=}1$HV'#xMJwK7Kgp[4 r2`M B_O))6  %m5)XqiL, ,B)":( &JUK8&@QE( *\wWFGIA21Ha_7 L^7|eVtfbOl[5#Eovpp:9H<% 9&h/JPbn~SYxQQtvE'%9MTF#,>MWYL4 "*%3RcQ"7($"&9093XZ6#MYF'5\r`0$\~]6 %,02/% $0%<lr99B7! )ReZ>  !#!!  7GC-0?57+Q_5micropolis-activity/res/sounds/honkhonk-high.wav0000775000076400007640000007102010724145723022415 0ustar simcitysimcityRIFFrWAVEfmt "VDdataq 1CGB@AA3UsxQ;0 ? 2sEuRu&#[|t5~()v7L(Utb+x>Y@@= 6 +HcHcw)3#(zx t>9;Uc/_Ww _ 0 ( o 3 MihB+ Vs VbHG7-=',S *a[J<$4q\::pP4NBA"|hdMEOGP[1F!<Z~=H$hn%(\,#A[n?-e". :. 2ycpOM^vkKvjE<~"O;Z7[6,a=\KAArR ^ ) Oe7)N"LYM4ty } JCn 9 90`]vr6wY/|q]m:YAxwU`Wt2N?FJ.9e"P>M_o{c;p70$ 4afRg:*9Z^+,%D(l}Sf9M9K#+D6z|VP(]W 7!F6 Gp7 @w *  Qj Wo%-~|?Sk0IqU+QOdw&W/*; ` U~xE:Q 4WdVV-( !K;( pU}{-r2EeL(dCIPV?w/xG24d=`UL{s#C=A\"`/e e72yX<"YE)]4 t \ # Z=%1^ t ac(:,  0b& )x *ihv'K&9eg5.Yf/(m S``9~,e%  LY@d,z-Vh\oB k A #^]rA t( NFpt+mg'PX!cV~wK XpUP;E $ M = >%d~n`c%0_L`t a Kkn5GHaoV*y uzNfv`$_\^6TCi,NDAF)j2_6@ZM|  e k lML'<&YB  5 xV= /26RAWX+DgP8e$uT?U xKgO5_'Z{0b"\ @ R]A  .w6f^|:?R-uQ o | z Z o[`!y#2MH.6s|kH+n5 N anL&@i'e| 6 8 4a"ev(> 0J_F YN>8U|mevI#qI 9 !fN^-r)U1rC,Sj J A J  *|7az5?p3pP8Tpz,hpcad5MIzqQ<\={e E~/rIEKC=g0eNw7 X b[ U4f/d=GcwLZSs~B;Z@o<(=z@&R*q^4 # f j ) vlYsdj<- q8 5 W.zhnD>-;L[[{|YJ=v Q  ' 5 tvQLve5vpfIMR: ^|#:~.V 4 n 'Y%@]o'+Zr]YH r  ;uS+x<+ygF|Hq,ac=aD*hSixqj0 |,@ _  IvU#qEp9fX<pucx471Q]nO"~bZr0^t{j1V;F|>f[W\P < lIqwLm,o]yXlx@AW5WGPg~k vrq~4D#ZVD oZ ` i,s:d"K:{ j- PC8.3-# EJ-@z:aF+[FW~ 7 8Mk8L19$@!S b`@ "  + x Vm4>#}^?O  b M9Dh1>/.JUm]58g>Y5c!P(O%N M 4X5 &lcTs~kfE i~j0'.DQL!2x RU~AnHoeFBmV,WQF a(^[+I|*ZFd\hiv50KM#aOd?U 7  w fNX;#SVcR4;lz DVn r |aK:bnLWH{Z{NWsVnY,rQ " 0HqxVhhmvIbT?~! jS8D9An J r *G#Nt ArltN J S a+`<!%0KC] }-+q. xbnoQ<\Iv t ='15d[M`d}W^VFfJ*T j[ 9'jd99 cc~2bbl -  H}> , q2#E*2l>[>@ -ExPKd^$-S*m~w#tA + g y xw%55#R-#{ l < .  bTfsp:0LZ!|wC<SePZ?!qG h N W\z[9_ws O_Mo2|b@voo #d N = h.WZ[ 7\n N nsKp3b"F* ,)!*DvlOIn=/wH<M@^;k8 C 8 %L[TwVCWV{=wiBIJ!)V4W#DLI\3Rnn-0 Goe#c*LfjaNJy 5 i%~m!  sCX&3]jK^NhD{IAp$uEMDiO4 [  X y *8#lL,BdXEU>eVR F X X ' c/HG4Csd~29WZka!olOuG &l~b{!WPn",xSMMRkf  b #    ZOl[U#` + F , [&HkKK zEc4Y;C}YZ(17s/rc|?jV_mL{](J dg {i7h'Tz+]OV x qAQ/'@t4EH[-. 4k*I I+ . ~ f6 d]}2jqxJ)eo\5 ~d!8AyB<k(8*J&NEqG%Q@PS ` $ @ uI3GWi3 !OzdieY{M}^ wrF 4?o2l*W[ssDsnHdQ}?}{g6H<m@8 5mV^(a- 4  3DU08;m]zX=+Ksy_S|K|qrR'O P < ! l;Z4G0c| \A 8$B-{9U(OiZ6l9?+.gBus! o ;+.](j( fA~e)e texnDP *  Zc!izDkM4(kNW ` \ < arE\O FLM qRGX'2;H& C mZpEY@VAL6A!)ls-')P[M1p*BzE+K. 7@Ii|J.6'f( B < @  _ 6 F # J"?I_Dj ;Nde^":P% c3pr^r_^;:GGIK>+W#1?D@95:DK9R L+dFXHA4kS@q A-zzO DOG=9=DIB&uK848CXz}?DSz#,?y10+8>wvTDBY&{jl5CDAFLBq5(SI.% N,bL=>\z(?IH _F>V&9bFi4kb0h4`53WmR{I &5i~xqt9tWzosg:qUYC< K+`EEg)C;+>;7AWr6hsXB,9^xxa? BW]-l M*a*Svx]C.lM>=NxGt}rU>49FLE2 !<Woy:kvCmQNn<b'U aD99qX?% }{ >j b8 vI"jJ+XQ&X;59;8:BI@=rrt}yuy}sp~~^E;Gf)p8C3OiD9G`y;|  qU6 tiswu{{vxup{ N/0>Db cK8% 6CDA?>@BC@4|vy|xyrT??TtT)$7CVt}_F:8:ARowbh)`gDpt|}x} ,=A@AB@?@B?,'\~gM1 ;KL?57EQL2@]uwXBE`~U qpzzhM.8a2A0 z~iH:P-H`xvtxC"=;t{tqy|xz|~{}~rX>25<4z? Ev 7Xo}w[*/BYrkf~ 9LK@Bavj{~iE  z~mqufG3Acwe@2Yzg}[xopsrpw !:[ gyu !:^&TNcI  :Oczo[OQc~{FTf5~cH0s<U9n?n^@l{]4BO&v$e!OH" ^m][O)Z%?c .me 6k.Jk_.`U%^=~k~7N` ~WVvT@dqXP]$K0Jg? ds5Fy)+X:g5%55*"@MHCB,OsK,kQ=/+1>SvXj?(h ![?FUGShhY(F]R-X\eXH YWcjH#+_rfXN C q uB!GL4p G ANyQ6Cax* 9OYPEL O y#d%j 13bvK@h586&'GyLp&`U3/6*+2uhX]W" . K ( #^,7+MD0hqhOk<z"1k+vpZ'vj=wK]Lt % 7  U#zbM[:jJQszLOKhYy\Oc vDxa_,*J6D9z[sx C , a4A)zKx* eC:D_q$;G2!IL6 tq'^~NQ6BijmJp4de s #F ||NC:s9cYL-FLfk l BRif,"/A{J ' ZC &JAoH@rDT|c  @ > {^]EwTjT.C\nPY[,iD 5yc4 z8[cJcFX *~,G6 CnJZ3# m S be jz. W9 I_LT m  Xa,AtURY!0f4VAyaP&$g ?$:[^+i5M  VkWjpENvaZk3~}`I) ^YK=Rfn1?kIb]Bb/k,8|8&H/djQ  <y   ! Fy#k|\eTSb\hINttRxszo|~DdMtUFu*`FzOjRSGI6WocVa r u  m,'Z/.@nvB ~ x wxP7}}<zQ} bkOu;] YP:]vaFk F RXO  ) GlkX4{~: O _x>RrT;u 3=gFL6]J6E6$kOQv ;Ko^%d& <   V^M gAh91 _-9kj6BdqC2i*$4zRH n?(Q@L:e3OJe&f0k X0Uv4 f (_7  nI8'){ 6<nYB@li+| "a6XvY 9}{Z:aLG=~P HnUB\ g %! c8_&&C&!5V B.ls &azHL9bx7b2/R&:Q_.>L_* FL!~"]"@3=[t x jDOPG!t:  '3v8,Jh*}%w @g<HY D BeKoX N)M Y V% [tn!A&,adSqP^-{Ykw 6r  ) 8Hj6 30B-X$ ")+; \  B O/8um*=E_ Ix=Bk\ H HRb-O>, }}*b?wUaTYI  A}@LM} K 'E30 b~-MmKC>-f:]sXJ&lt:R#<wp3xJy's @m`0>y:#? }a _TR O%d5 Ba5^ a-5[$6dPPNHR^6/S9 eYrd{d x ]n;M{.P [ TvUuv,Vt&  ~2Vy6 `vhgOE F   |k;Io}Rp'/S8?[cMCPf1`[/ \ p ?7G]r# U ZzI22B?q:a+VBX ~WW j ERv\M7mBJ&b? O>#}e.["0>$R]h-S2jZ{LZS*[1p O PH]x7K 3CREwEXe R - 5ftYP0 ?- c!r *DUI+C I qN]tP`?2LhFu4<s,G8L62<TMuu c  e  Iu]NHySH U  2 F,u^ LPr/*l8 77Dc=i;Br6qb ` p  -  bh.}?~8[!E]Ha)tP #o2@4BiSZO|G2d? ; h>NwR: $ F q@.r5ENU9S#  1@[6d6nT_8g b,sZ \ 71tW8$v|( w /pHhH[M0Y K ? O I n~N/w_:dzT+9 O]UKK m>W<JLf_25>9!zW; !  uw _ejB||x[ Ul\ f vb#S*ll]baR_Z?:uw>1e Pj 5>m#}~k ,. yOaI-t}HZ'Kd3CoYHi,@:(,~o'o[f6uW-*5 yI3f-  K/ ; 8 f  ?% Abx(`>co>385 1 ? ;E%; Vl2ST0 6`tI# & 7 a:0V"vC5w(&+pA,L~A2VnynS=Pdu5\y,2:DcycbP=p.RI@{Jw.EpOXo ru:B 5z@O(WA O fh+  G5w4D2xcjs(Ytk{G>Xdc vQ5Wc&hy"&W-,GRs27 QWBF3(<`{~N,,_;"Jx3U0("JQ0>:QHx<LE gE'j#XwY\| ^$WaF<?B;&vDA6JMC,LqiD Dm s/sVY(j<`:;@j v({F:DA] \~u!o !=KI?9<@5kh}_"fn&I\V73/ GT7 &'`\ fDXioG r_6n0p<rt5H@;LmrL/:n<N7&9-0~}rL#} J|zHKx}i0lz!Xv[D- odrZ1Xt~v4KMS4G:micropolis-activity/res/sounds/sorry.wav0000775000076400007640000004047010724145723021044 0ustar simcitysimcityRIFF0AWAVEfmt "VDdata AI2(5Jj6 XV8TH;DvZ )y#04 /,-9)L~Z9[<$^D>&/2! %$ 4Z]4 =F$ L? '')??6/0,&ED(Emj7}*vo %)-XiLM}e>&)AO=#$ -uV(cPF6Te#ph )*;9 ;yO/$  ):A5<UWB(-8702;:"K-*2*C>#'CD>jDq=K|J8fgzQ<*~p 22-LN$!z:vM ODxe.7rCDkM[,,?" U?B#=,`E%Lx1$Zf#Pa2.O&z\l-~+'+~~kkC|9MRk'Q.-1#]qhfiB89;kW0\ :y vby{Yn\Dvz@?P6B\;338#!ePrWG*1rRAEj,ctI{i]!Ytb/cx{Yj=C3rR: R5&z>]>c2~So~hJ392u|M IF ;jABZL91=Sf.,&m@KQ> (  ./ HY3FmPg83qjsA0NEShoQzcfPPDNo`g:gv;FFqD@zw*HzTSl$Xa=4Lcvc{e"@ U@0X[E3tDnC6t{ArJs 7)|C1eiE;` X$]B* 11UJa.g1MsTPWJ!'0?&*.TH|Zt"\s,`O`oFi.37NpT+`lt3Iht!L~* 14'#(+WK  @F_Be%&dK|HcHpB&GI 9#A;}OZ`i+ UL3#3pz$QL\wV?0&: 9TU4 xTs :8N4ts =Ab|;r1t< 41H6jRRw &;j Mqp/3FnG L w"]RiEkCglS6 :+V12r0mq4jI Yf8^m)VioC 4 9V9)UqMnn|;YcZ/Bla3%nR9jElA /+b)VYpL?OUz-`&::,V'hP4 =)r:>l5FCEv4hX@QB\8.Q eO{u9Hgd|fZ ; R  K 7%N/pem;f]) b T (UNv(dwp+.: l t esH7Q 4w8SpD1ET %}SnX(s9M5c1#kn\ l~<}>s!F& uY]w=a&a@-k NnITR1s,)m[D OR$u ?!H wn [ H4y{@ +j Xbku)OLr#g{DJ y | ~ 2*J_w6XxJZ:n=9F3nFTD~lf85grzQ  3U GRZ0I<G>T3{'. j GH@UVA=FGP) Gh}PS  p-R G1 CCg#)? q f'F15 #~v5"pfumzDO5P( )^5xc!d=EZ/cN =@IgIj9j5E h_kQ{KhX%ztmm3*] , J  Z l١rdye q" SGr OW65(V?#)m .;cs r VG-&2F`>`& S Y Q~.d $. U T  yEja];>%LU8 2 < H P<9I~LDr\&S|<`!ltU)8q 2TONR0AtL0 w U6Y+ xHO ) X E  ] $~w9 Xp;!Tx; 1e a/I<,0^; 5 T FK rFp%]x  r RQnB]7RI/9  e Y 4 n v>0N5T%_O/ :%dHE B *%! Mvɾ~Xr  FTy }DWm~ O, c r `"!%d~K'qh!$>gg(% f$ *c K2vMR2o"fB04cMc  ^?{gcO}bP\i7>J N k W]i 9GO;~k4M0 [ : : WgTB"&'#<K 1&N Onw[ f=-`e b sv H:YXaAnEY; T'Qj `5 }Y} \ySB PaY~fE t L S &G ٪ټ Em m # -^  bh%koJ[ }A"%-%!k "d5Ucm_=Au @q e C# PTfYp-jIE ,4 wA Dwk k *?r` 7y ~ D J d +0RwMЌŴ_8;ȓي J=d  U8'= Zs" 4z :"8"pP 4U}*}w f < H 2Hl1T &: K XY3G3LL{BsFu vxkY D(1;]%fAxLnrStI %6  *_Rܔ̥`ŸXRТb k Rc|c#'z(%3 hR 9of 'knvYgE> "S z  7+6oL w| l>o[( + v}D5VtW7& { ox\ "~f.6 ,90[o^ V׌ɮPΛLyIG b?q ` ;!*/0-- %=] _! [Doq7t;`yL M B d;Sg[ :# ' ;k Z %)" i [4oc! 'M7N UuΊ±v ) jލZDL%(1!895+^ q \tZ*nBd& H o<1 { Av"'} k so X5;)lK ,cLpTZ -+ F 31Y a 0e  ! |k!!+7 vxC)ʼ:y + >1Ӆ7% 0/9'><4X(fGq>vh f njc v(Q  7 D N uZ })7q x0;U5B6[o tM+K7EI D 5 Cj#C$  a k` Hu"&'P%5[D;ͽݢU?V   ._ 0:>0;2%+]b"2J CۖP&  \n v 8;7S } } dIeV{<7fY&0 K zY@_"4$:7 O! w,Xf w O + ":IzX l ~$ /ڙ| iԮ_t )+ɥqۑ1>WA:-f "lHB s*L1E/$Yю̸aH6 Mz*hn 7! Wh 7pLm*} 2D;/P"`+ |r R}j z \ S<i;L t  P JG ( j+ N{͂]-;qגδ$U)10'&b}'#K/550. Ve u1ޗ;Gus 482# +@_d aE5I#Pyd(JZ|* H{ ]>d}1pa)g]j :k J&a 4 K ] jiJ ^ށ&,0Ɵ²Bѥg $H n;I0~)4C9[6, 8$[q+n ߩF|er[G Hg X>' Vw/ f  " z1^nBhf Vzz y8 OZ  t>me  d i)D 9+O0[0g ^9S2 Qp iߋD< 0ۦ"Ů'v @sJ'//'pEhp( u@"  (2u'0-X4`%7 $ r pcOD\ CCV9We xZ!~$*2lA }_ CUs ynz vGt(o3'==|e7fuL # d RE>`7((HO˒\).SV B$< yxl )S ]OHIFh(;nb^ ?}=K >R  N {$y#. E`H{' $GYpm C 5 < \gPm\ b I }L!P 6w*  kx(!FT L[  lL as, GM~։Ϣ:PVOx"Z# .="~h  R  f 7'5r:6  T~d H B : ,"7az wB [MxUI38]`  [3 >oqhVU x  G   +KWG=_  U21g؃h2VA.  f[m=c r[! + Q N f @ C  |  R : .\hk_tq#%VaAV9>; D's D^PDX ]Z0"3gk !at L x 2 6PEglV.Nj}_D K-(RJEq%t I9y9{ s nDcd8 ;Qj?a/oNp@ r  ()OL b SbE\Lf0!@Ntz TOF 3 <9nYYOwyT5KrE*:-\Xsc& $=\qv8[t`eDxMw XTZ :[LJk|]Zf:Fs'aZ8 *I? "lRIKhA(  - ";r- ?5 &  T  <C;`ETc[:E)V:F q`:k/4I$C s fOV *EhdTH}]&2J \mse!^\H)yUp_ sd*$: Z~6T  LoSPoJ>kwL0h/@Atd0%1ZA|#+3fX0C[ ~xiE C(Y:LZ>UbY83fk%eL>e Xf>GYZhhi O6 1 3  ]  .C<F K P2 IQUBl .@^Up(A-o*:.#p4?Ed-v>-zQ8'CDA7O`-&O"$u.s4Vy#/e*YHsxlgD:UHD 3$, cB W@*R_/6eV-< k42-m]>O4?<]_N4f{jjs,_9%':=WX]:+\2+$9\iR5F+M5{; \#mGGuu}<*D pQ+M [nd?) BK/r?&^|0B28`!W;'~\u:=Z^-]`|#_~5zh`s &KLa*yz/'G`:lQ lmHrfYevj/m#bTI&k#QwSQT4L3C+{_Vmicropolis-activity/res/sounds/rumble.wav0000775000076400007640000002720210724145723021152 0ustar simcitysimcityRIFFz.WAVEfmt "VDdataV.wvz~|z{}}zuxl? ~su'2attmbky`j? &6Z" / ;  <  C ? 5 J g Q % A 4 NdIS:`CQOFhU}h + @ D B . X WMgBlZ1GJoL'#:fCl4:+<$cL^P<8A:x3+;4)z< Nfmt_-)Y:}KE:L$iu Y3/Nma KCMAK|fN3PbSB9 ^e#k2DVp:6@5 vontT: !Z   {noT@PT-_E<:8=BB7M $<?:;I`} Og((iQVIFHY;@5UR;~a]d*-LtJ5  `:vnE6Uk#Q6S+7pDKg0 Dj3=F!2?i}< sJ:8MF I=#'`5J5 fbSxe2R%*OH`s<>K2nyv~|iYimUyi.bD  \ N 9 b J k & R  dXe|a^7|AsP06R[]b%CX~[Bnjhsf)Q i_C),F>}cGEN>:gPb3cY%*6, "??I 2HH.Ng-K RYp5  |HRuovtc ) ot;zlc,u 6OVI74EWV;  U66?6 N99>8})b &IO7%;~"De4  *DRSOIHLQRH2  RDj~kptfI0'-9=8,(3Idvzuu7Xp~}|,M}@C/`qkR7$ <<5c1:!8&}`BU|`bQN[geZSU`faTLY/ WlL vdt/|tM'ZmbZo  ]LFj{b3ZImU*YWjX&"eP;M+xd:I@SV1l`Y[d R`\mPk8#*W8 < wb v|(%b: &#-=51 ! : x / ` o 5 W z : k 1 ghAGKxAT!=GW =n'.G!)mFueCWd4{B((_wD%akw]&!/*(H^!]zzru JF9S9hoXA4F->>n"|WI%>&&``tN%&   q HCfCf}8zBkbHL_C\(@{$-_^&U%'#>QS=BW%m<8J+ g 9s0Arw<^]NEEMTSG0  X c3&7C#hegtvnt*u,?FGDBADGGC@AEGEEU 3k   g22MYNM*\DQq ]asC//|} Zj;uP&C4B:H+27bl3P"4,%<:ouhrc5@41Q"& *=EKJ5g  {sw{|}|vv~wqwmi~1AGD@>>ADB28vO7VBJF:yx*+H<{a5C]( ~P*?al?p+(]}SM$Dctd[F,1TVr ^ t>xqDn[ ]p1_JX2 ^e%CS<8{ ;1,Di{wpx|\F<.%_/%-697/SqcnufQQiwWAR94k;]I\SQ Tg} Ko*  O 8&h5wBzGWVt t c &kI  G ? p $ iP2; .ftV!MD#diGBu 1Ng\kJ8SwDFIfxxsGS/(284/8Sr|q} e?HB@DIICAADGGGE<' }g9Asfkw7B=Ag+ xs(>LhF 923hW"!z }A`uxH?6'A# C nQ.RQ>h > $T  j u9o&MPzUU p q F \hF1 " -  3 h`[vFp_pRkscP2HzhVe %C`w|~)+P'9+GN$9IEMw Dl p4KFWzJ Zm4z`bu|s~>[T1 -zMi}Uj1 #9pF6+1x/!%l`imfeFDq~qmsuc@"2FA2M] lL`W$AFW&9jPpX))_(pw4]|V,q <,Y&MHd.dhKe x@AH/ntnuvont}{lcn>4w !  I\, A<8,?l}D q TGXFP<8,6UeG4Sj{V~04Pqtjo-l&kG T\c?+)1,I1tTE[M!mwivKr=#XAT]/@gBR[oNmd*=<4464 "Oltqqtwuw'BF>=Ns 7;G3)FqsOmLGF\8N=Jj$@Ow'jZuJMV?  .JOX?QP@]ZVY_c_>od_e!aXBY T\<8!@uX/dVq M`[kP+44t#6O0E7|.S068!#1/+3@@/$@`poksJZF/8o Ps'^XqzM}+1AtiERG{Y&gnr"}_sF'f}8Y[bJ/cg)faU>`78MLp)K&b IR^\\S1XNA*E<5 \Nekatl  %CPI91:Pm~Y~kU 1J%3v$.[!k5XI;n.[MH# DpWG#9j\_drEpfRxMk>g B-$Jf_dclqcZSH9hE?)2b]( #9v((_|zs-,Yt|yy}tZB88<:7>Rmyw{}z}micropolis-activity/res/sounds/park.wav0000775000076400007640000004250610724145723020625 0ustar simcitysimcityRIFF>EWAVEfmt "VDdataE $T~H+/>8*:*EgrgM(  #y0Q9umM+ *8*'=7  %67) .?D8  #>T_`WND:(   FpwIFO$! .&,8,!0,(-001,".DQSH:,'+-*0:1 ($-CL> '().6APanodQD>@=2! !)+&  '& 1K^d`[\bjgS2 8S\VLMTR@,3+!!+*  8@3!*53$   9QXO?300,#!3@@0   +:547 06, $CamcF)(6<:0%!+690   '% @P@7L>7@;4.)! &$ #,<OdxziF  ",6:71+)'%! &-30"  %0( Zb  AQE( $2<CGHB07nM&92   *ERM3#(#)PsvM:Q= =G J<KxU+ :k{T0lo-1[Z5  %Zl1 Eu_"UnP9% sQd O3%A)`f 9da'_?>-3CwRP?LK"J d \h8  z S tZmqyAH@xFUGiGoBxg-D^QBTY0Dx!b!N=i+7s1 "  ]  zNZ%6ij  Hb8`/>axD}7 &tpK7<<6Q?mJQTP@{b_Z kKT  7   G * g :I 5 [ t H = - I; (hNN["\;s_l4|Fn C+G[A]Rib"M)pG~ns$<?Ze<AOWGRnw o'<.' ko|&0i7} C &/:ep>kD%(Q h]+,xD,}V$>q 0 P 7HP@ EF+   6 ~id]3o -jnr5FNP%2_} @kQ,yOF5`[s*Ih4saoW D@  h52$>QS("/IBy,ijr` B  v 5 i g 9  ~ c ` V/V!,3' J*?o0W<1B|4M@uOO o>Qv.g 1tO*#$fU:s*Q ^Vp3Z . P7'Y)3W#t7IkGKx}{mS3WZ7Wyb#S?v]ygEuh<3bLfgcIbyYlGN#\A^M 37cpo^<p*st7HgXvnxZg+4k-6zT$#Q |< *^+C pz6bAl3?Lq1  +`Lzov=PvZ7b(c&L6=h@*:tNIP`K|!H"'=)f]sCnp,EMh~q$hHFn6:.u:Cqj_(O|C+{iX2DX{?_1wC4/ [V\8'z Wjp/E$ |P 6R-`S)#;~q<H:`FHa( Lb.W"J{ H^V?G%J E B %F7};۟ƿs;8֘xJ. {sKM  sA5 TٷW>z @ d$H 'h&/pdPgV zAj= | ]ݦޥ[\~ f jh ' jtG@8I   Dj $ qI32z SA TBZ4A_"> O y / [6yѧʷǁ<~U]&8-*1x2k1@.I)#l. a'F_&A 0,h ]$2((&"suYOA!0lsY Jj"HZ F)Y11~I3 " 2#1{D s@a .Fl (ǽB=ի, |tQYj  l t-9ٚoԏ܋ ! %c(/(%e!"V  % 9>-ef ]0E%6 r!" r K; )~jh9&N~bV g<?*o 0"y:# |N r" jLZ DBjCr~j|F =gOy`IYKgd?W\qtL/ L4jy: 22  Vx^B8nh F$ Y !  j    CpaQا0ղ'ڄpye#/V"^#`!}f? u-2(mT0@P9#4uD<=/ 8 NS<J M w65  <qlfD/Yt:eiT ` S  k|x`? w2Ce0 N*"2qC/!X<-/^ l =^*'p3[*"%zOu;MZ)^R= Rm\*zcw5n~7M`E52zqV hw/w=qFB"-#  GQ(,x=q8Bq1ouv$E78V>8hB+.N}Aoxd= {m?4Gm'Z/{$ *qC9#InmQ&>l@\ eE  6 [Kqo%~g]h dl#u|;z  *'FUZ\ZJmGXS%?#r&tf,:x26(mKj >sZUTG'];)):Rm Vd^vy@ 8_g; ^F6(!K0JQSVZWI.  B|Nj_c<E5qM!m*N}V=7@Qm-fziA#,;3 \xb:'AxW >eF !@F3tWUn{$.<MVVE)   CRJBIc{yW"+YJoZ\o7Z]> j8/jMs3v%~8DlH'&FqdN#&75)"5_rUKF:w '<]z[PZmwrfao~W://-%-2!9exsbSLHGJRZ\P=04IWO1 %WJE.X}7O+u5 9r 1%nlk6-1#?D@EXsq]I2=xhLK^iT ):Lh^! "0<GVj{rMea1C2  Q5M!Ikr[4 6+(vpq$ sx9 ']tmsyoBg_|$Yul\,C3Ku-hQ)vnjmy/Id 3H<}>.+X?Fn4oqicS7|meem}*^~jWB+%**#}f\^kJy^F4)/'u "-=\\.vN1-Bd=Y7!#2<9(n[Zv3bb7 mULVv&16<HYfeU9""8O_fgimqnaK- -KO:8KPJIQhyy]-$ #"1D@( 0)  GkI79>6:MB (1..7GOK7 &+' ")0) 'APK=1-0/& "8GG2 &8RiyzjT=( yxoW9+>v.AMcvX?( /75-('! cGD[} #:OO9 "6BK[tY,gPLXp&6?<' #.27?GQ^m|~h<&;NbpqcG(  <]u|ugVB-%'!4G^zmJ1& 1T}i~aI`  >SL)68 Kuxmm}a1 PofH22AF1MuuN=2" (9@ABGH?' ~|ulp~iZe}A>|:chYB)%0-#!&..v#U'Lo x(Ao-b'z;c yc`B;-. VSiS2{ZS_w@/-rE}*OmoQ _c9)M9h9-U%Pt#wo'VeY <5rMp DV=&]l3%J2ze4ak-]OcU\,+^Q }=$m9|*wFLN YNDOc&Z\RDl"!>E?4l  lS'6>i+}6/cD]TG_0aaq|{zwz)Q;is'!\EV"# [:9GP^uM<RK_ ~$f{*[.zB?5<bWdhy+?Q)~ _*W*_/Xv:j|]Wt9u[gN(gRzbg.vVJ 9=mZ,+Jg$D}EC-Qx)L)`iyGt \\Z`7yIb b9XPL7WD5j}nj(:5)&P+^<hl9OQI5 WB~Z?;Y-&hGjR=k|U{kf8I2YPn'$yIpj1/I5h^[PZTnS6Ywb;{n.PJ14&k2BQS-#pq-:=Di:]W43ruix(WV+~H id12+b/SVFPsQZ-$#BHI$yL|E-H>h>;Fqk6~XT ? YtSNoi4`Z]~L>R"$]}Q*CRZ GAU:WSv'K]?c~A'<Z#Zyl4U(z>3,WU H;5C)&2gc g>Jugf<A6qR= )BZmsiR8& $/Jdal@1M ;"#%Xg ] ef_Us1@!nZWCfi*xC*DeF1WUb 5vu0>^ =BHwIQ!|k#6j' sE/((,0/* N^EI^~r8rK_Viuc2pK2 *Y JnqaTdQ2NeJ0qN'' \x}Cy $ GSUvh8StQLPLIa rOHA u$Y$BF4"pg)ul+'Nw/a{t1eDMQl"2'    *FTF{i[TVdyvGoL"#CH1_;09Ka z|6.1=7]+4Qm~~46#(DfqojV.,6.##+% !micropolis-activity/res/sounds/ignition.wav0000775000076400007640000040637210724145723021515 0ustar simcitysimcityRIFF WAVEfmt "VDdata  RkQ*21HorS0$10(DJ;"0CMPWi~~hD#&8DGD>;=ADC@<>CKXluyyKyit2;=l2-p5" ^|4-Yu"lu`U Pwq%dp ;Zor9;+G;mb}|{LeFX-4Q : ^M`BW ' h{(H7_kjJ: |l>DEOfoU<Ao 5O7'Um}Q7Jg M2;Jy| Kpgh JI ?Dg9g~N \ l|9 wV r$z\jJ2B^f> RS4V6 X 'ytRG  Vqpe-}S9h|a\OB3g'Q$01x4Va2.57Dp}`1(3vsic~}&{)+E |l YW~u _ +s,kWw j w YF6HVSPryLlR< < Y5P m6 opX$N p)U,z ; N% -bCL7(~irpbiYp x Vfq[H x6A`#BnF/[n _[ c `C^6! Q%#gz+d^  5 z9 }?&C 7}BvZkP\K@Vog 'b\;DPKds 6 ;hS 3[&p1  -N=Bah YEg8>ePg1 6WC@v L\x[[ ( <r-> ZsRQ Sq;bZ5F SkU]+{ 0 rh)n [ D |D ` K NKmi#NP} iN &=  P^8I+ e '4D  hVTAl2vAt- ~Ys `[ Hd A0  .y k 9-wR$;?|A(9" v6L$}=ov'rI 8H   UCg dx ge,' 8O> @ . 7 mt/;Pwaf 6m  {0hD@/O &q P ?@:t:* 03 [bt\i+ D " }ZqG 6 -RTz%R/!W ~ I= g4  eA '"S 'E> IOluu&eS^|/P !P X'P !RMYrkH'b< {z, S GhG  vI|* 1S| ?I y"XN*blXx ] E< B^ $,@n - `  "#BqEOL  (l *op4 i .AYL & F#[=Jc[, Z :KV(`m} {Tm+A% : 1e?^uh | D WV_JcS) * 6hct K |T W  pr J:9`~T.U+r99zU ZxH Xu 4} @E8EXLB _=$ /'?t ! % vLNh|Vhi  ~g8k\{>==/q qI% L ] 2'y7) =h "JDsAO H\_  N DM>Jr | }y!N ] Rr` [+H C1+ I w wmIa*m;Ln7& Y @ &{ CL'qoE!B R SjYaYD( j DaL#F i""|f\Z0\O8q7 L (;J6W Yz 4e\^f - `eR a< O >M+f7q OI  zd! z-Q/{s2 #* \= D 7K1K0X |Y ' b 5v(n D t2j)S *nHT*`0JD-DOR h C^]#y cM;(( 8 }i )X{ lg=0 = 2!b " >5P eBlg% " 2>De\ z&FG ! ASII(1,pZyb<r iV5D9+&me @@ -2*d 5?S(  bbbI  ^R-~H9CK(A&>N G   n_I5  NgMaL2^j "]!c (mmU Rc,O   "" P'80 L u/]. uB^5b&h<*sZATo\w )neo:[U? , X .r6U"Jp DRD|LV, r^" )..9 t +.ps7 g  bh +**=C`dT:Z5ei1"`sep#Yf$ oI DO ! 6yaum & Y z=  SN@ /Ic0= Lz 6 ?So&?m;P!%}3 = W 3J d .H %6 74FD # f 7   $ }&%  , F %pBzQt>jh\  v >@  D,"N:k\FeKl 2s K   p!~Oj  K&tx!tB S~z~ q  l A *G$ ~feo ;R J MK\it.AiO \UZM O ``BkQ"#8nK @wOy%5l[ - 4 X  E -, y +}S)# ;O%O9" 9 J$Fp?A{)S =;{*sw\:KXo4Fjg*$ of Bp;] Ge$r1#h"i  >^0* l }OS9*Dv j F& oM'*?b h Ah%RjL } ) #sC66@# W o _-ab @L j_ R( ~ + F`&#i +W/aPZ7UIO' CvK%e  u  cl N J ?l=4  yrVd&K3= !as"vgt7gh=BKSSV+ Y `e Y F m9_&i F5 %p gH%O0e  y PNQ @ rk 6+ :c m Z{njH :$  > @ fh#tm[ w ~x>& u i[, $C7  3 b   6Gq* (`i  $/94 + a'<@ | k <X r  ~k!xU5=Y\{+J@M!8@5p&Z} { Jsj. ]l 7D2+5+&`wmEHQRZ8 [hcP?8nzCJ &=kn ,B/UNO- @,C4 .{g#%oT w}o _ &i U.|*WX:M~+0c 5LR ) u &5z)yG  ^g nR^* aNaW4_  :.  ^P=vH & B6 U'YL  S%h - 4 L2ug1&/ :JI@o,& W 1 N {  :1  *j}o FNz+3 Bz0GOpAofj /\YRJOr);L | @k-<  P3<$'b+ v6>P  bEOX c+VL[Z & $#KWv#*KUq0@Upc`oB<( bmV0 ]9h;nJk 3= uN(  qj;:i5,JHSNOpJ3@8 Pt }rNR  ,D:#XP5Fnfv2E  g !U`J>L0+ee ` !g<(.y2NkiV v\\U{q| j  Y u 5 ER+=qJ!p2  N SP`\s<@):Kp ~r \hL "?\ K C)X-6 drq,);lR1"0M~f p$ B'[JMXOCQ}e_J `h3Ef D:mFhM  a/Qa[O)Kp5b2| w dSv$r9l (c:& < VBoH_  F_.hp -+7Z f& /ZEwTd7? R8 t0 Tec=P2 2"%<-{   iV M R"QA593 ` Q! NXT"j 7 &Ug>x1  z&)q6H 7 o E @ r DMmBjs, N c Dmu `vnEvm fI >6%  YV7 4EZ_+'y X0'CKw:_} -(  SP4 ty;Ged\ 9 *]bQ3^Y :na$HM@o\'< 4 " ng A Cr~G3-<n5B " f3 _2q YjkA# =%& ? &_0 O  ! q x /W_n[ .  u~f%[ e qE_ *m  c  _R g AGP BR7<-A8r5&8IBk F`)D4D j MIs: a -#=$".> > : > &" &mgFd  Wmm.cNLM dURi+(V1aF6Gl>jV  J p zC_m@e+9+ J?MT;!_ MmVg/ E?Uvh:*ZD7Vql5A QeanSN=Jj>z}bcvc*4+:?M,r q@V43R;A$?/be=my|htZW6a-iL$/DxP A}"o;ugW?c}(jS%y{!EB)G%!:kRj3tismBFH[.x$r\7Ex1uReRlBR{R OKX\Qr"`%sPt='^<1iS~hY/STyJ!@k6xX`@rSyoA&LMBkK"!@ybxXrNtZY;FCgTWN,$3"fJVOK#5?O+&VS-_   $h] E&1G E.hW~A&/zGml ERdvBSzU]$V 3KU"7l 0-'Mu]gzo4 ey@pvv-cIm H K+HeEZlzC,N$<*:0kLH)2nz$A:Jy PyfK1D="zCK<E  0bLM*Xb> xA3;T& E ) Q WsJS3 4Q ^ ' ]}~}q,]l ]XLA! l/ f , .#m %tHIKMH#Yu4%LRI  Cd^~~sD73g,M2_ )TOCV&   F3  -xXcP ^. 7O.Y, W BQ>xwAOrRFqw n\Nu7Zsr%6 ]ao1jFyl.nh8iWb=+I-.< =Tvqs\R i QvE 2 J I Jv b1Mr{q#X j "M0 m Agna,XJ\ 8 ?*r  H^zPhW{2mg i ;(iyCKaV:Gtz  +eY ]kc `Bc%M ~  ?YtyOJ?{{> }  H ].'Odp2v+$'bU+q]H YHH 'Y={P"*%v "8r h(0 m; G^Y1=fWb5y_@gD- )B)o2Z}sz R } !DM#3|l~OO$:= )n<{  m1f}+Z7=S<f?+QW!ToO ~v6\pzt U m{ $c2 `KUJg QB 8'T + o \TM e ,L 0 e@  Qu:2e*MEnF^ Nt$gLJ?g   8jEHfl k1 39 " b ~guV_CP WezR1(34 gHkwu (&Bs5!+U { BKYbd7h` sJa+ 8 3 )6" =@W5yS]OWf* F (,B6- R Y A XyNS+e V.xX-6ScQU \ 6^M5_*f[s2  m  77VO Y9''x*Nc( bd -}+J 2@zf * b$< @5%8HWvdyhqqG>2#[L?f^@@[aVfFxOQ X WK}b * 3@!  / F:H@ Z.dk  ?zJbx* )D LFj e UB * ,U ? hSlCKsU Uo8 47tzCpU"o jHv?/p =DJ jB0 + sZ@< j&2,X > 8W8n*W^X.(k?7tZE"86 P yhFY r \: 5 ( 6 a V x 1 V5\JQ|#_:&Ig.u%y7Xiz uV 9^N*8a A%r|f}O.X!%s!VCAS6zP>E=XF.'z.fkqe9( \sD`wzF`D{c{ff8z)ZW%\  >$ R k yZ9l^bl9h` [U;zEu/Bp^U`GW@tl}&_KDFoE5?!4ZHrX;&6. -?JhK;(;p/q2AGsuB/Y Ss"F+@L8 )RY ?s ?P}5c\tQH3 ~[T9m92Mc'Vn[.  U&N `7)!u~r{*oD'kcC 2Fjcc0D<; g ](9/Ar6p*REPi|d:ej|m@J 1Jjc_N< gRQ}*m1>Gx)>YO blK\$%pV=eg^=\!H5/P`FHO QR*qz7-Xz>yzVaN3;IrM[ Ao Yn%p'uPH?qLZ ,t[Q0"C+:/|DAJzAj~uF_v.r[/|+XcK ENPk]#Mjy78 clXjd^c'<52iJbe] H!fAA(-C}9    rM o %d,$FU beF9bBQU&ou0^ub7Mn.^vI3JHM R,_sT41@ .wK (Uh'CZGV8GYq:TtGrG@B$ 'e*s$mL99 k '!]|>  b B q e! }0lS S5FeH [TrKVP% aH_HWFLR6Rb?'I@)3O2Nm<bBO'Qn+ ,>~h*__"_@tyx 9>]"E [G3V0d8%HANZG uI!u|kkDm].y7'MkmLP 2E|lK'Qke u;krG0B4\j'UY(?;)]K9-p^ jBo?T5\,-asid1]]!^^ iMcIL8j2}O,S';N6sl`z b*'o(vHF{ ;@n)4!~,x2N 75n;w=i?RnNf]jR]bYHioA9f5H1S`UBDm\ cw&&vIzlh[;w[4('!*fsU u{=mAB w}Ms;}P2P#:{'_! a  ^  J W-{?y')k{qX2\\Ya2zyqa[GlSRM1F BT4 6 *   u Nr  ` 9bZ g4WMs8)b'm[MCN!S!`N5ITm 1qY[wzoX0US&EB|j/^A?v )<K K 5z>bT]`@ l!Kgi$(SS * :&O'Wjq)FU^Om9YUEQX#xb: nq-4  nK\$# <[ ! ! g  Rm " q*}^q f|4luw4Tx^oaK&~m {iU ! <JMef9H" w\CY$I?je[ y&uy*'}M?oS D+0n+)a!\~2 =  Gc=d5r9FPt9zM{%5KDWh#Amb73j2nP]v;Cf=CF! ?nUp\)hr w$/4K*F*Y>Jc6 n Zx1 p j B B M @  D t E ; ,  Ry[AT5B0):(NsOKfFZL%lD?`rob?   9fgDoux2 [HHHVYg@=:cp/z]j-:L4:I= Z/E z R >K.wOKA$ x<=2O!F,f7)j {  L )W : J 9 3 !oE}e6d,oWeddL[, n_Be B)DlM p ` ^ P A ^Pem"*MEc}RGm*rKlqn20}X KN *rPc; lfanp6b~Y XaL}TW\}<TnQ!g#m2;j_({!5Ps +e^j  ae@m5iCAX!Tto \ O C;@41c##Frj.r/){Fll;x tom(aw|Qz\=*:#W.H 2 B = < @ ,N ; 2 *($j z n g 5[*+\9`t\TcMl*%;"*%<cZnA:Z`|ncjbPw VyduF  Y K r 7 E ^ Fwm[ e}wlD66(>s0,r qNyeT  G|5e==bDQ~d  T&IKy$=XP|~"bPoP*?LU"}t'}r-9[3 !\sF|eJ/ 0!.lNG1x Qyg'xDd\^J}uS$Scc%#vXA5 Z|RD q  ! &  { ` r ? > tu j G 7 W|r9 F"<$MRl *U^Bb'"B m NESU%^2v2u; R   >Dm8)[i1MwlA]/J2:5)9m@/dYDx| ,g~#N6@5/Qii8dV=V3I ,BAYo` o#Y{">sgteM F J   ;   y:n> q T G { L<*GM2&%?Me5.)6/-&%<aCW-LxK gwlF{oPJ:$73goBi\ M[>1{I B  n }8G [ * = X % + tv7Uv 2fVy~eIS2@mbg,^b7*Ck"8glU8a2R i4'@Y ) |Lw*f)W 6i~n 4 Y [hMZh*jee*^K+{O9FO'UkcmB"J~]jHr|weE#LJ ];/ u D J  + d ! h B7}fKq|{fWak "o4hU< b g>~ vS/>f2 CDL v i 1 ]a^>Px#D_io] k < b ^ JkfJ m)[pNi RtvzJUyIrO;l/t)Ke~6<  ? V zk D ^k  :9b j|\1V>e,92>6MIi4@ZAI 4@LaV  /  3 $y ihP_yE|F V X ' 9Ec Z$u`*CcRkxLwuk1W-rh dS  h  ?  l F+4sAAX^ U;ug@?{V$5 c *XZ(\.itjt;S E#i [[8 yU* ./+?y?6lth=x!zV co R M D f TqF$eg 9 ( S  K "MYk(qXFs qsYMT)'[s ^= c hIz6 e  , z u g $ j~;Cy{d(&YM* 7 [ 6 T l J B . i Z 0yBHq,>OFmCo\S aZ(=s&PE~-cAO81nm<\m`< } Ba\Gg Hf BUBV wdlN  V  ]JHin0XRF`e@He.}F Uyd O4%\C|d H = V q  D B 4 e K @ 8 q  iEa] x  b"XjyQWT U5@'U>j%;!YuU83<6rCBI8UVG.>: K }%^-EFV WgQkH6Y"1b {A)b"_"}K\>9djZG ;q p u_=& T  yz0+6}-:o*l)vO-jOI[Dhm%J g^?f^{W.! Z T 8uB38yDe    8ttlY-*{<<Dpi4bj!6:KlLT?_S.u9 /vC'4VD*[.y 3 NhO `xXA V} 0\  8h >Q_3/CD3D(Y ppKGv(QiR[HAf t(#:\gtBwO{I$MxMH c[=UFq 9  & j , Gue C 1 " w 6vr2  6:erB WW% M.>K!:-cBF33>R@ ' NpOQ i B$O#(A (1"*8M&"=-  / F^^cB`viN;3LRCTkI:p WxM`05p>,> kgt8EUH4fhUB2%?]3 _ T 6 ] 4(A4/BPF1+86gG! L n ixcH$?(,h$m>_N`5"1@;M=+k]Ep)KH+_ @MDb<8Kb#~U< $Kvd  3z}>LPf=pF.JOU' XjW:YSsgMa&KKM/S3 A i T c Z | 'VlcO;0$&VwD4]5our?YjV`@Z  A ] 5@f?GN u M /n er)f{QuD,)F$l'? W|wUb# W{Z%F5:1<OO:U^#3'"kWRi/ 6!&]\F  v  *#jZ:='t+wV y@%-`Z( R_0c%[}i'#. 7d zdR9)  ] u A & R  m.,H.~Y_E&=Lk3~.cm8a[|QQVSdOF:9(zrK0&|L3s^ 896zwBy01 8yR*$$n 21 y#c5rSJXrk  &!4t)?W\U=jvZ +SD1p,^`_ZH P8 =  Z - + # ? . B + x K 7 N3&Gb%L,=< ~ lC,Ei G(N_O83@QWF! 8\ k7,t @ Kx?]ET&jexjr*/pXg , ErfZC.n}`jB#u l ) /1$)u)i;3-_`dom\xLeXQ5y#,jlM^?C;xK^#dG#W > j  I aY W = J S  SeEsy,?0.rJ#G>dk{W kdY!|E8'^j78dF J fBZnNTv/j33% @ L o 'z0gaZL>d`N   l5 $A|g7"zQ~>FohKq'u|PyRT* A  $^ ' R F n % _ '@TM1{H 7  f > g;g`wcUfn}t9 aN} K6/~gA#>T`l]JS{M/Dr@Z 8 uB ! AXU^T3:  . f A  wH%Ak$y#915!W+Q=phv$1Z8je..&381?gQSP5tZMW4 I  $  Ga.e 8 j > f 0;\J| h:=`=,g&=aVl$p'c*s/z7N*1Y&$_1@E  G-  ~8]@;fiY ur_vq'\on|_=-/-[[fyR7.H *F(F r j  H E A % |fK4& F1S# d f :   H w 6 ? T W([y_.3d N#+]RK#fQ"^pQ[jk }eS"Z1}r; l QJQ%=2ko-5.V4 ! $'#l((eQ FAa1 "  ~ Q+hK= \  . .  w ~5ZgD@6Jj ,`F]RakYen M S.g;?F4tCrH:'&_4g jpZ#>d5gL *- b~B9_x~I6?z%mYVGt} z K ^ : *F}  T D Y g1mk^a   1O9^"x{_9qH6I{G e??h6% 8 r"!6 WhcOmvZ/wc2 yos7r.n%` <\-#bO/a)M\  f / ! p P T Ug1rF;M$ob~xjYWx!DG/jf3Db@K.*.ET`fX< / Gsz cr*/=lI-5w*:H XMV"A H+e+f"1[eQ >F=BLol==H V  D 5Gv d r 4  NFI-7~b5ZV yLpx}L!UdTT/%bhAa   e 4i}hnaU0^$:'T ? Yh !ziU1[ +xBOw* p#Q g  < pI)t6bq=wJ% W * m  @ Br o ^{@V_d ,=L7[zb /U?2]i ,XqT! e Y Y m]]Gbj0zx:B&(f!q{JHf~^RUcYra8  lr8XmKh_  T > ^ )T   ! E{5< bZeY;_/"{yg -A  0  /%mroIV8!/!v`/ ,  / , 5`,-wY}8wQ.B$~ L8."c aU h]@y 8 B v L AQ   W 6'e2Qq KWIN/s#w^ wE`THM]2oTA(HMQDFr`zZ`Y]O%1xUp0@R7^<  , [87 1 L U l Ie@\1,o@)4NHJ\GF;}-g^l' i:$z/%U1 [ d I Q ?bAZ B1^ H't!0jk^T..)>6+ PJBd  A),JVcm)K91P1%nLt / lVrY   F 'bK 7 9 |_xV%[zxh|R5V8Q|)q3 >Z iMQ q KvC0fpB*ur3M(aJ<:{*,2y , M N !  ]> I i. #X ~M ,  + Y cfNGsO yro<6k<:w)Pj}TjG  Hbywl,4l4M:=%i%dd|U,Jf "7PXy) B] 5Rys$ f/Ffc t5Z Xm 9JmCW2tq;eJ5^CcNAFI\#q`qH U]/}=/Wl r'O4[?FJ,d$/. %: = b%)NT v 5o:]FcX / 7huZIVFs6Q 8p@]uI3}wX V c } ozb\<[$F.9 ] !rg(Bq@%*e T hl tj & F( & b#H<g (E 44C@rKJLj$~xvosN   u 3 D -a 3Y 0 +  /1r $n~~ g Z J g V0 1 `&qEF>q az4f)J7M3 Mq e (   9 YJ!'HT4r<H(/B Df-I|IRfjJy{jK Kf?/; W K  W   UW5{m(pEVT%HNy{)NOT 4 o !*  -.(o)t  O  c X  4ThJI8 UC}?) /R\qifCvqz&W".#Q r u   T,.*_^9&PrqinZd3| L  F g% 4 jFs=&aDN:MuO^Rh^m=/ k6 K l Yq! *.Q)U 3 ogrH!COj{[5}Qk FoWf  }+h m ^qs V;f?\At5(MP2,$FT943?{1QmM ( "B0] ;f:#5Ia:`1d Cf]NMy/\)369B# K Bvh  M l|:I2~:Ot=Z!7#.@&DQ`s  v ~E3cG&~q)Y"$(N4AK3v"E S w3UR i " Y *{u_<.iS!%v;6waXEd|Njml- Q 8 j ) 5 H V  g x   Z[x&ME|RA46m'I{bh:_AG  $8 c  m 7 N  X r@J8Y1u_:l!H'#x?|Ku9LQk7B  7 4"(r " ^u* &0+<(t%7'uNF` 0 Y v pjdPPSe@&E[ Rp'C&Pr7@` S  eRc`c k  +[ E:o37JILTT.ajfB..i( ) J  ' ( s|zy q Z> b NC:J 3/Bha3 x^<.w 6k i | /6 + M C ]"r| U/ y ~ w8D^D jIv` RQk"J jHP4y;# 9 zx JM b W7 * 2 HXhn3oO^NUmG/i]";J Mp :(V([~FU( " g`OI  Q * &CCrTZgbcbBN Oq&6moSZ\ V w lE&X<@h2 m u /  ncX7+^"12h39]"|Y}ry(6J"Eg'k[E  ei  X g Kan %{NLet$Na"HU_`mn:"5@4A_G  M Q _[ci|z  W 4  > jK(cS.aCUY;,R e+X<@ }^k 1 +P-^4/2nf N W i GX{ RZk&qzm0/((aoD,6MP= tZk<Y7_(  ")!l Q5QH$d$^[,N7{Efh-7(2S=q   b  Ma  J  %4 7jJiGg]e mx %aX^   B F  eQ9?Z  o 2 =% C#4s8:Cj|Sl8-& J\NnDV-(K sq Py%93T*+m!^>VrdP]\5D7g@n9pBgo  Y" tM?e2 w  W4gok0 T"/o"W  Aq8-2MzG  o e 2 k93 F u^) l1_:@c<wB+l /+f+jXN{c (jqo*93+ &pUqOsmC4G . &`Qj4R$d)G?|W_Z2 )  9 z1 i ^ K & `eX vmW/fvLQ`_)B9T"Nc  z 4 = I X5d $E0N F O B2fminXZe ~KZ(c d4=|K 4  r T "   =Dd Oja^k=,aJ%|Gf%x*Dh\* . $ [ Z I>JEf<3 [ qc.[L2M.1_LG(,OBn~e=O/R, Z $3L) 1Q 7  U : /?e / ` M 8 d >   n   b  5(^;Q},z'MgQ \5uW$WH{.`3G='S`luq <P@dQo$FJ)?{$|dSoQ.U&yvxdx u 3   k | ` M 1QaH@8 fw 1oXE`w;V[FL 5IZ/q ` ~ Q G s v hMt"2|`_P J]t5&j[P{OY3]!\|1.;M5T )g Kzm P  ] EwbL(,hDz(9^+C3$qbeR<K S *  n k ` V p w {G_f>. -u{RY%Y|'[@wFG{" , 87  + t B =C i ' = ; % Z<.. %"b9K0xROZ$j0r m }L <) NF WyQ9Rp!:L^0"rnM)-Z'j{xQ9Fjt v =yto7Cqg4 e~NfgtJmy^F;3`%["V[ Kq5?HvD+f+9?8k1(G,aeZ*,; : O  3 %*  zQ2nxYakI7 aEOulGHb5{Sj' =S=TwOI9X^[fc 9V[W_vKCnb|SxDYFiv+z0K0W\5;5jnuysgMhT Fa  k~\/@nal&UM<~ 6C@%  g lim" Q "qGnky;TiNZooU 4y0W1;5b.Ci8  P u   {>6_9:u.(kwAIX$: .W ty_drU |m?X,XF 5 |! FVX/1'z+WV0&pp(6R`n^B|=)}$| E @ U p b -^!56-N:&n6zS^P5 ]6PHsQN:exn &t%CH@q S| ?!5-ytfQ*uHk`Z||z b0L/f V < < s j  9 u 7 H [  "3.W_^!k?D,O Km rw? # v  9 K F V  O ]) !rJ  d}"DMc2>$Kv 0 x 7 R c~ O % 6dv^H}"r/w8>Ff65GK}D!iv=EMBo[o d v\ M  \ dS > v  wH/3LRi+xf*rvzO}$4V(1;  D > &    *%+x^H = +ML?Wk,,6n6Rn:1 NUi%lHPz9 kPZY   N]^jh?H(>x<%ulM3 /kW;WpfuxJ p i5 K x DPLl&J=3P}u@lkT-WZ Xw4Y= O   v 8Jo]S)^RyqZ SwnKfxk?W^-L(XvD/ DO? W :  y  y H G C q :rTC]SP9 Q 1t8P A  ^ eAVgvqW(U 5=-[1q>Z]G > 1 4 g QA 'm D Om= Z  z xlD[!5Pq~s/>r3LS~ (w R c  o v  L8 q L eD 0ml/wmYcFt`5#GS {e"'{S-Mz K    U ARt*^BgRyj,LWyRHd6|+K*# -}bT|wgMk1\[*??>4  rZ  R `k@@%i.3!BD5|N- 2_OL)EI.=k*  | K' ^ /r0Wm=ZiylwfU6=Nl &$F((Pc3 r_c/4O:f{],?D  R s F]0Me%X JSPE:Xbi9Hv C$wsGR;1kKgi,U 3 60y + .90;q7SqT*[x3&Uk|\MU 7 /p- B t t  Tvn " v:VQ4)mvcG*/ "3}X(b1"m_f e V V m  5 n ( VJa  /rn=T]-p@t^I+Z<$0QW|ggS%RQA4u2nIiU * ) V 6 C @@ <   ( zB;_/?_s Zv-MB$<nRb$?^yW,! \^# 7    14 a<_r%zWS;a+R!N-m $[ RI`GeHvMfyd!7n+%E(6$ (    )x U  O WJ>V<2e7(`w/Z9E"HM`b^@6` 1n; `  t u\#q>x / -2b@<\$W|IR p |B:ju7P p /2)m C+ 8 L   d }an<&vB]NJ@J?M[L:;\6HlGY^R@W2 5OD     } C _$?B+2mp+|AA(wr6{2-:iDB_ ]>`u "0 v ^ | Pa<JSCGh@p |qdLfX Wa . \BER>w{4 0 ON(D. ?5u!]CRy)oe"S9k?z$EdT}C8 k+*.',<DNwD:F: i~r x F !6O1A":sOMfu!jn1xG ] +C @E ##; |*T = b  B Y {d$s"#^F+9b xeMYjz5 m 4 L   C/ [ x 7 )i, k F  RHI'<|$(,cjVQ  ZliJ.1fz_z\ v \+B Q / *TO4Y$7c\ 61A% 8-"IrM"ytov eB/lNeIK`ae)4 \^ L NS E"X3RY[ N g(t? #UO-='g3'mc,# :%u.dCB8 i Hy!lQ{,*g}%  dL ^J / + , ^x$ x=i|Ob " QTR02y f1IQxr , | ( ^K6k: 1 S z E f@cJqq ^FCE KAZ_OR > H UX(lx 1 )3[  Y 2 1 w fq > 9<^D .:K;<af 4N9@ Tyf^1fyl(}F;bqYWW +IYx4ny fl(S4TYy{~qM#GGlEL } <d{L.J1%J79]d^9"5^_M{L][OnX &/cQvNmGbp"k.O'#$.Sd[7`D:KO+Q<so* SD < ng)aVg!W|  / ?   b r   bga'_ D&})v o-T)u *Aw7 ` Sk # ?$ _~1J0+K[4Hw4q>maLct+Qx7 M -  : = *ZAe YuJ RAsSdJ2O]8[;jmsZKv8bf4x|Rk.  }w8E?&j 9&)6eaLR4Wj;+s&8?.UrSdG]]I 9@I-n1G7X 1cm+CO v ;AOUd|5I%Jefa2[B`yqDnpo)Nh]PQo% z  ~5(w > ozK %sxc@^~3gJys m=nu_370LeJoso Jk t W "  y  w 8m  j %BcNtypDeD0LiC/`8/p6 %?F @ ( 2 N  J1!y^u6MB0\G Z =NW%'jI2@Wnsne[ h K ( W6)u<+!+H=3di:\k` V- ?<`C:#>i~eEU|? $Qot6r&=VKO   C Wf9!mie$^(w _o0V*`|95:$r2,{'>6 O 7< ec$ ?7' 0uJx?u J41F [TX  g -IqZJxA<#w }*}D e 7 un:cP4J(t4Dz;`Y0suFHeygY,!( W\kqd` h A , ( 3 =/dPzLe}pVek4X%9! rsHKU R -@1 w]~pZ$D}x e[>rvY~g+d$)V O p  Kbl6F$ -NY9v: M7:!kf ~%n]Mqrq.dH8?o/@ |{=](GY = qyW1vq?USqfmY]uE3TEv<:C'Z|'o T 3PN<lKnI F X.0lC l.!>wnw;)k:'lU28~?5PH@&djiuvqM gE  F;L@^*e;{;HCG.H ~Tub hK7)b<>3u3z<iVCJ s -h9j`25KSK@7M;eSOmuh).}E{CN7W?/(^ ZmE-dro:H # _ 3 6 * 0  EFolJPN%~>/2NC)5Jscfd@:rb ,4 0 Z WO, jCv0g0U z0%]mVp1\R8b<tD><V`H!C9wD(JtY/&f(XSrdn-Fh0 7ws.  [Gm3<!+Qrs3L3>un8XN\JGjc4 \< N| b > S 6 mV.N[E|RQH*s2J@ ]g?>  V;  ;pop Vq~9~'ysPR. w*'u 0 )| j  \ g~mCGjIiI"pTZlMbOHG " { b hkM 3  b!>JR=b *xcWhef\k@hZUogW7E$}K{ |  2 4+ 0XX (y d  ? D,db;m0$.J!a$^ b9/Tj`.  ZQ<wD( 2xSulqP d2@~QO *n   8~ | t = jZ p H ' "PHtWrb!hLg /q[nPc[G1,3}" = P t (}k503o_ 4>`=4# {\Np"BuddhJL^*z_U _ kxO:vk ?Ho*.NT7 l5|w iJ Z #N  M {N2dR|6.M(&'FhkKeUfAo J C Q401ss@(7 7 x s a J cdy @B{9$V{G4A#,2ts 5;z !%}X  A   7BlN/, J(;8p=Px;><.>S #Bt+ $R;Sd\Jpx.  uT >48%IfvCqQ % z   Z42$)|t? "Z~:i!Zh~d<iLnT+^ : $Z Eh  %&n2aWDk>!.51VZL\og3 )-v9 3"i; $  9uwk:jCq#w7T#d!J@TH6hGAKBeM)]4PK0hf>H7TsAai%)4DDq>zh_B& H o d 2 =T Eok %FSk+a+ u, GB VM M 4 H<M * 5 < / ( 7 wXD; I]Oie"pHY.%)-EWrO 69< m \ J2 L q my  8N2C"amI,IN&hJ UFYVe]8_<  h~TUFjT6 lYOa$gG27 Y K t25=>L6E  ?  p5D9v.rN:l551,zVSU@[` B t} a# ;cPfcq-dyVX2C<<\P3BOqq;f3LO;#%qT1 ab&#;Cc|GY>6O`:ta|jTGeVHYn3^+V fu`: ;tE=*\ubgX 53NP0RqQz-  g|  8   M A2 7 ' u )  X]a]lN;\R'BWq EYzulFi:H.IPPhv6h"ztqbvtUQ0/ji{iqVhj1R4s{=\<z K g HZ{Fhk'"W7rE6Q=vUS%(4]? m('Ic5@"!,xPOU}aPvUt<;/ e@ZPV\3d< >i4PQC 7xEjr H - C ~Fow4KcE0E=, bK~9o4_?}wGm/3F8g % * `| ( U  ( Hma a(2t&iB-,7$E[Nl7p$VUp6Qr`\< + L *t i 4YIl'e d,YKQjdL9 ?*"^ o~L[S/3] nli  j {d W 9 gvIbIn>y*oB=~YfUzP'2=co  fg> k{NS?'W{$4uK2Ny'q{#8  u-vE f D ^za))R-W4x!/5XyH 9E(@p dQ 2 Z \  -lH w wj7(DQf@_tL|Y h:W!$u]4R<L4elpCG[3<CV[>Z| hVy8s{9 l#N Y 9b(Rh z9XWh.ua C ] k("H4=A:fMf%^F 0 r h  - 7 mZ Vf 3  u0pU}'Fp$m kq?l+:5\EC14k_5vs0,> 6]-NbvxlS2e!6%}[/!l9#-}=g\y|-j0QO6+oh 3,53zg bxR _gi)tpBf)CN|PkkGDIj lHT9UI>)Jw ($PM1\s  $ t ]B'vu 3)< r0 # 9 4Jo A~N:n@KQiO ,%z"a;lld9B^=hBq)vY{d#r)E]<I+Hd`tU^-s h?V{#/3)>m}.4 (8:I'I(}@,  >pv %('y^*RyIk5q{6lXc#\7noj&S,cq b$aCDfwf[9MJD{T ZsI,FQ m0mD1^Tvl5uL2v#g[5&Fb=` x4yTg2ib2y8q%rh_k5VF8amsGx0c-ayrd}fe= ][2r )d(6 'bAO S _5 :gU{&U`Z5#kr)nsV#yXE_?h|gkb0OJG{3W{t:3:7(CZ4m}G% gL3(~71Z)U?T;N!~sgANHsEklw0#]J>GwZb 2qf*-Sh*JV M,mfk,d6B+g")DA\EN$h(%Mn3 [1U~h 9lBH`$  7)AwlqiV }C<$US+ll~ <f+#d; Zbo / Pa m 0OQ)T  Z N d E Fy  UB1wJLV o&fS**r]NuB0 xu}v]v.+_1W`zY?}Dh#/2 RCjn g>EfShbsxw.6Hn=  />)!` K 41$^ FOjDz: !4S9}]7|b/VQ2Cb-\^c?d: R(+n  c ,p\rcc sNvX<=F$_q9!gl 3c#@u@O9)sv/5 gXy3 2>+T!fF)]= ph`u MY:]N"Hd &UQ(*%1s99}&XG[P.:GX  F8 h9_wvNf6d9T|lrYP7%T~y35y>NQ ;P'3<a Y Q~P2mwU3vPCByh{/^edN%Dv% s_\'Rc)[YO?j +2F$[czeW@*>tn>S3`L yJ}Ymfb]<.%w{EI:E D j ! [OUNX-!K/s&Vzg %VG2ne9^&dUr O }P[VE9:!ZxBJV7aZu,pcdk!x[gh" YN[e<bHjK#q<<+kK9qRRGu+Ok&yr.d7IdTvwD,'c l8UdMX'd9QD;kw 3BI;6.lAg$B1z0OKS},]/7wA"a I/t)`& Jd>A%pfeA82 *)' R-|1aM5_j<Ttz5$3- ~OjrSrX0  [bLq?89f~4yw25e\XB}$\[sO<:"MkjAM* j C  DMpKd9OB'sk3Qpd_{NfC\;)hq]q6V'oC *GOLPd0Ic,J qwFy/ s#|aLR?S+HB6-oF+8*K667i'f-|wP!pfI4J ?B1=ClC@Whg^NH2 #94d,1kZ?[lo Fos*\>a*n)twHYQXVbt,kLUrD[DU3~\a%<$=z| !ksU6E`&N=I^ pZoGz`0/xYM`mrH!fi4X@JYG9hEqHp!p)D 0bbbn! *v_ = p/c95 B  MuNr2!R} 50{[?$c%&&l#Y U'~d._v<gnA0{MR|n!U,LIX ;yi <Gc&SWV?@$?s)Cu"<y+=/{*Ad~eHo[a|Q w {xnQ,{;:?ecvn Wb aXmvNX!Nu^B,5!N~mp&LAi<I~<<HK kGXkfr:U'* }IMFbW B)Ye{.UCU<;Ld(Z |wbDxonxF86N<G~Rm|Icl8z *f =M$IR&~F .PZMm}*JvQ `8&YS[QpX8T}KK.t{Fcb1 `j)~<%,m[1[?dK2t%& "o)aIOx'PR09eeRe;R(^[4h bp">+:lt]<AUK "F`2 { F9T;4W\B /4<qDABz$ '{=H(\}d|_U6s0$.DOe" |lS0pgf.tPnuk:t8<4"^7l={x\KGdJ< !",e l/b *7$yK~@R>i-Z71u["+|~7H {a\0]'Ro= 7%$Fu(~Mdy+@Y]?*^Q+O0/g6J{$ uwxSnrs"_t4g;tIPg_YdG8>? >S)+E~H)~ AW2O, J(6L8E F(E9/EUTpY+ltt;sLb(dY=_lmR^C|tno.&8P$Z> w? b',rBr3j|Dy5){ %pSI % }JQQ^$ME#)"jF2To;Nk;5mY4 + F   f X ;j  c %+'kd_t? #cm >Eg-i&RI2 U VH4fC]ov kf}EJ yc(0J1>"`I <npt@HSFb 3qh)BoxC}'r#Zz>}3E06 xjKF.Y/@ HNl(2]!Fa5,0ZxHDV~8WBt>jBu%T)#  drC8 qX'60l=K^rD}+[jVF }Q LAF&bXK?,/ 3?Vg|c cW U@%Ad0MjIHFk_  M n O  K b  y f 7 %  ]5Q;ND>M m mJLfB{6sPus=lpe5ZQ<@w H ucIWL|nzZ`iBv@"(-Ls3-[yDTa:kO: c;$5JL7jTHT/) u!5aoL}W`A !Ie!x.+$f,IU$5\{"1sHux5cVakT'+R3^rmMxy7(tf^7B}.JWBs1D.B <ItXjbO5HPleo")qp[?v {(o^h+,>I4[0#=ym,:K(=|4<zH0xrL^p>0u>Qn=%y2CCO7q1Z6}$\~9o`n?(:R6 II[E]mNVn:@C#GqO `a3?i  O _ f k<N,]die0:2(zF"/m]P#R7(E|Trtdx8A*EFW>N5Pju r,oPX 'Smw9dvAsUSG5^yt'$uKD5SAH#. s > o4;+KlR G4 zM`G^:'4lXIwj>(9q<{~lb[ V}nc, m LLbHN5B~u;3 'pK}IK TL`<"6j kv j? F %W  U V 9 k2MMWXV05dq(';FN7O$e0/Le~ODW T /W  J } s > E ,8o'Yme+TH$>)+\ 7)Xne%T,d\P_/w)~ Y > p X  yF)FYFV K 9-rl1$ow)d ^4T6n ~_g_T{] wnyWM |V);O$(ce6Iz[[0G3p6vX;Fo<K q Q= W % D l 1f,'DCJ0VqyIS<OMw:Ysb,u+wvdfAG2w@  _)t9jBX5iy(kJ>"|= _h9\r7wqi3zyXO6\R% e U)M?E\Xj)pS}gID - 6  ` * H d + ]d ,2{.Zyu\|zCIXdCi&k>BF! C N @Bo2g4/S/n\iBi}X&glK eS:$$id/X,0 j0{Q.ipgoP_;>C+\e f5yd-]]G8Y?>A}[#iH'`Y'D{ce96f  ?KMEc -m_+q{<tf 5M{2 c8OD9]x I ^xMo0dulks@~1\=)!Qj6ZF53`@ 3tV; J-{yfu?t$.QcYkgLUn . L`?T?hMdcf^8ix t=^K!~`.MH"uSa31})Bi-|-?uF8YqcVpNfdvj:c]jE9br@*EV a^u/EsX+x;|YSPMe m6<wiqLQF0u3 `!#Cf`L'_+@fU- 7}}q]_E[g1 u7~WGsv|^u7-h"ju3E&\i;1+4x7J6P(PRE9a^FOjA_jh|y(3}EB$E|XX_Il/N & $94y:oyR'wJXSW-G\E}Kq,J8bCF4gXO=1l~BFs ^d8<jxd~"1U*R@0K~6rZBss9)N@|:2#ur%,ILDk@>|Aht9&'>$Ui1h9;Bi)nfSJq_[W; vg 'a^{0Db-!bO`VM@Sx`4k%XKpI ReYd*WY(MnTPs.roP"Gu\%;D+@ahHyqE#6ZX~@o*cVG2dq08(\E,w'MDKt?ynCe6e  }8|ngP ;e;rhvvjC_dz ?R:Jd2NXOy(T$3#J*+XL=5"/)l ;f:5a:[l[rJ?_7i3ipz0SHr]Z=GRIl#w(]^g,fLw<6@ _B -e2X"`2X,qR)bKJWe0w$ _/:,E 1\>8R-=!BHO\DGtM-,'{I,r :@x^!/@{  y mB\0~e's>i7;h S^JB/9u4@^za B - 6 !T @ bdH/!&b-@4d Q>[ ,?W){JD\/vXvGU-!e"@^U1b}11`{VC #F:>f|JGw ( 8~ ]5,,%PS<f{jFsNDp%;wL0sSDorp ^+q2^hkYxZNaOmD5vRU;Eutj'U? ^Wkj!D2t(>:N=IJS3LDz`  Ghtipkv#Xr= ) /%tCcKdlHOQiA.f`bziUPK*s=pL$&c;0H@3MI5$l!,pU55 +=r3'Y'[7ni{,:t0AHxT.b0$tR+$$^IQtwX Nf1hpQrP5{"# -j^&$~2>Pl@d0c&(xG!AO>kkB0kzq.c E p!i!hg[(P} /; f2ddoQ8bx9UvtbO4QQY oAB L ) %K}4 2 vIw `z\"[-bgP]pld~}[o=_bwgy^]_P  E L 7d 'Fj@6dgMG*rK)36Mmu6%']mm$X,:i8wd{fn_d)`< \}gO\94%AV]([%?&7/ #@ ATnAMlxb2jI%>IMk2/q`Ra1x9Ep-Q%aA)f^&f`m ]o%@:9%yS\ q;B k|}A PEFK/7eTe 365 S 3  ] M ) F 9 ~)AGi` E O!4\+![~ 5,1G1q~f1Na,QNk28f/{+CGe{S~Yi.%S`R|Qc] 5R{lK+5xqu.yI8yKTJRNEU$glKTZy 81j!1L&fnE UP8gA$KQ&O[|^!9Y?~R_5h!x1wHP2kA*ru)?4:Wx1G&S3}c: |)NZSA7g<s@   q B g ' d E s . Z SQm `aea2 ,696 Pn|"j)w_  p X { Y ' LrY n M $ .  pr O$0]SkR-"%U.PtEa;2>zF`)^/T KeEl,l$w+'0*Y|q%]i F Yaz k a!_+ 3;ARS ^bKq/+JX $ .NBJnj!U '&e I   9  NrB3HtZtm4 AlV{OE|EhS|jt/`t)x}sN k#w h } Sf(_ *CQS# #Lta+3g6>ddXmnic^M:J3m[ DZo2;.hf5 O8*SdH!GJ!;oe}=v)L }>(#PEQ$LtGU)$ku~}of10]KFA($4i@J%\mQ%VcFLq"yeoJS.vP6!io&QnJUhtVhMG:i]q)y%-9 ) jTJJzs m^vGZky u1ClP<>1|.PTaC'eZ^xy5I@d9D 2^Cx8tPx2 e  u%  S< E ' Y Y(jgt T#yyU/\5Yh\^ o  7 , = *  j (J  Hl y j;17x+0"k YG_U$v`v$Qyd{4r m,%f'TaH= ; I R  v W d ! 17~)Xa ^G VZ yQ?b*@NT.<C3MOX:O`_t -^S`:gt)#=SeH4 #cF^6GPeE,/^>P$ ak(bA0.]AuLJ"e|6x [ $/ Gl\ /*4[dmuelJ_7dl ix1H0 m70x3$ 7S{MCPY0G- l7TpW'5{IP4w4(exnOdd F=\vp:Tj2JhRTmaK4]SmM>) v<> /j%WQaSWLVM p3"m<@<-inG5P+v#!ac!5_ Bbh}9]f2rp><ksGmJQ x Ts]F]5 kQT)Io:3(n iema@D^Z0"m < 7 A l I Y/ZCA^z.HcDAAC HD D>)@FmB7J eEa & 0 ? e 6 x  1(`#+ :PXVM0xN w%wy($o|6uq|)v"V`CG 66( S %MFR JK.=42KNB8 O^>T QHBz}=,b&T".qy57;q= yV(X1xWPlk\jKfA,Wo G-)ow{&UOhU&dt1>*r!j3L0b|5H0fy,)H;|zq]93 9Z {=^=T$ ) *y4g  Mo;|a , ( T P >P2nR-.oy;2FV}^{@9Y^zh}mo14!.nkV q+0p4{\|/5`m 5YV|r FL3;nfLJ!|=r4s%P 3e0Nu<|pG&1H(C}hfx[cv"2Lu<_^Xe#]6V4x%RM1-5PQXAMLRz4)9hOv /Y~FEe|8JSVKL?t+^H<|G9 < D xEw!^l&547;tJMduRhOsB>51r9a N_?yu'k+Q<M2bpcGQzTO3,A_+1tg N! _CB= d}"ojaGQnu:BRa_QvPN.uECSmxKGKN~<Y4Jx>`gAg1/)ak0Sz7QZDwNFDXWI .|LwX$^h_!#"c5w53Of+c#!`STYvLb/4z9J*7gaL Xk F@b`N8[;zBRtNJ,,? QQ F}d1 3 P f 5 m L P M& ";lR |( \$g_qOLYh^jV5^ kH:Q!tYf?-{*NVhQe_=dl4vmE}/2|;9y6Solm=^ m+ OCR&|8ZCb;] d46bWm#| * PG~!+5wSdN@9_',wGlN'aB}3_$!w?YABbo#Wp7q I=ISyl>IH)T-hX^$VTN<M/#5z`5~P=2J}H E  s!(#S kCr|(gi6qR27LR5'fZ A&D7y ZGR 8&X | "GJ[g q 1 5  ~FBO;EM=Q #dHNdzmm;N/Du!)E_OY qzIH(V\_}_-zvZ #L,GTq]+ .LhQA6Di.j^t5uZ>jVFyDo3@s C6L:2G_:k7/Bx " jEj24-WUmh"8|2,pI&` %ZG0s4Ksfc^ 8 y #V?GGf>D4[ xf)2Rd - J7X,s?1 T| Bb{'7`>cXsDeavp(E|K JEpOTB)F(=*5=c} [~Ie4A,]0\~=!i$G2#&bvZ`r@(g"*! sIq*BE3Pv)>r666'TB(JWwl0 biT _&&Jtkd""0<r0$k^ FOyp@~uMR{>?2FV#-=h'd9 M%[0mUJPs']WLhxLH{8-e: OYkM"Yx<~ B H  w 2 f ro "tyt-lzcrkQx dh"vcM1K$vsz A#Ac w.cjr"yp|yc?%S,}PD:/bF5SOQ$oT`mN=1m(KCE N3qv,\s0c:N:mIjG XCeHAJRK@XpP:^5 D .  = k % S #  ]/\mWJkjR&>82o>O*i$kDTy+]lD~T1Ds_eQV(2>0H{}[4*Ar FoU YqEj4sL10*LGEe6+/i.+h6p_%w[V#z(bu1Xo7rPyy. -c,wI;_ r3Q.W9kX`It  ~ )  zHY2)i.TdTAXp57aOT7z^{'Z=wrzZc 2c;XyW$ hO~=q/n\WKU(d,>G GQlg)M V[%%l0E"gc=?LW\-nwon}gFn%i,VC>zXDuhNT(&-3XZ#N#bd Ge0Z : \ y d@L^sIt1oR*$CxcI/sPq&eLZd+o&nlQ)VHl I X= > S  Y h U - q m `4mzdxGKDlP 0Jz$@&[rn|4!uQAVwV`y(uZ5L[X,[:H}> A8X4H6O$J=7YN B ! Z8x ^ ^2_/  s@#oUqhK JD1-[C7+\9/ itjS#Mh62 :/!XaC{1{;)YKPIz */[i6]hB yM#Sy-S!;_ < 8[ 4P~y>X`xYSV2uK]c6^m%g5+?,TZ('S% WKC@`7&-;EhvxYPlD7*j^. 4>km[i`@@*^aY*T:@|oHh   U  9dlpS1]}O.T@4l)9VxQaRbvA(8MIT. { N  - K G k z & e % c%yf%k~dwVr`2D Cw,ig+@x[B@c182&OU}D6n)?gw&j9jh3l# ^8Q?PiO0\!y% ~$h~Z !=)v2 n k 3 ^op^4mz! JhB2M6l3v@r3\NM0l:4YTVW e] v_Gu*w(]Q52BKIdX>Z=R}pB02I1qI@11 RMr_QW LBDJf 6 / Em Y#vk b.YsHRRySQ>;`tgrWe.j* D^*R<>-#1|:}[.p2gW'5=-c9[ A"c0l.FQiAr\/P0Hw\]s}JQDql|mb1\uN{0i[L`zI4 Lj@OJ/Ql}xL )jjP+#XS9a>}0 `  & Q , X iyJU"z2-.yL_X+*PyB ^]Ccl+RQr&CfL) c ? h [ } I uq^ gI*tJ3'xeuf<u\4D>@D :,97aK][#j|o1\)0U,YPY| zGhT }^M=yn=P ,Pit*~' Fw}CQwyN_h2`\|)cAO=:*/]>gjc3318B#I'Y$+X0\}x>/Y E v 2[Bs  '  ) B I+a,-S1$WeM ;DK)-~<{><$8{t\i5 7eLC`>6'3C;5}A <  ?3IRv\zcl'%H4jFZ`haVNVd>f. d 2 2 P8 n]J>% S'wo& ^Id wW8 ! ! 0 2 N g 6aDna TtnMH~qF<oRC'gStC3O-i@x!]r2zQGBDnM"yogc'h]wF Q,L D  . { ziH>:t ) n}BLbB21ih/UFf0B &` d e  _ c R 0 . s % ' $veSpx:0@V\V_"uV77+sJ4BXCi ^a2UN<1h-JDL!dB \h`g&pQ(zk!_Bca8`" ^}cP[Eg}=p|k_w$Br{Xa\{[C1"pQb{Yrp%R'_s;8P[t$SpOw+ p!?3~X$X 38wX&t[7k]bz6Cx 1)3<Vj4_M^ (0?*)p $_jon'Ro&&:C9PzNge6\~#&Fm~Gbwf?My&p@?P;Oi.MdECZ1`d:InSi # <7[AU\J]ew`c&a~EX~D>OL \T s  4 9 z D s k Yb'ZK KV3}w6E [^B;z)6d]]P&4fM 2Nzky]kPw"26keja/?>/FE % Lh Q I  ' 7 rJXa m *o S%1G7;.4VB{ -).C Fu  1 A b_3 'EY4 Q ;XU @T/M`n Jg #+01LE*4~d%ga+f 43{B[~Qv'f>D~3f20RTk&nT s[d:8V^zbE4 8#YnVPwWv&WUC_ }J?A9!rQ)0>y6 Xhd*6ne-?{i3 J *), B qwvYV7Y FjT9,'\ qF YO.\gNNTVI-v  Z> oN~.p[A$hdQi?X]U!a5IsHGZsbS n M \K=|  /thDfYFrL~,r>puLkM bW{^uPN I[NT 0 @ wC5 0mR>uQ<^z}x.:3L<}@WeXnx\at_KN&]qD:cJ q T1,+?A 9 ? . j 5  3 rHkFj\@[?N9JH4~mHs Q 6nw;)m{a  A RU 3 u J ; 2 2 \ !>"LfVm]giBZy IDqAid2 <Ny+28 3`% t< Q/Ts\6-{?u3E5WcwcSE-~ 3%] +|(]Y:,B,  /$8?h`-=ETe/?|+T,g[bd(zgv_8?[%t3R#1,myQ=4,_|`u2oe#Ut_}QkDKI\Z]%0qcJGdmB_s o]OZ46*~ZBqA :":}L]92.->7ba P>pg$"v]6WEz <9+!T$QX-L6>=XwrW8"Eo3EF}FA%^^An-.sQGJe6!H3dc  ~  A + J,vXJ@g"nt & 0htfUIP)'m1mb#q{iBvYBZSc8(|S*1Ku+R@PS7 [j0xt$wC `v(qt.4I#?]pj:HK G@H*URL\qtqx-6kB Bm%kYu`mq4V3BCI8gI tTgOrqp(/t|,xvE755myBD{gSM2V}nU,)c;waRu o   g = ' w h v 4 U .0cE#lmw? \a3^|*mi+|?DU.K/173 IwK| Ag# [d9^,&k<{6SH|X9od!u2Ef/GCl_\, lZ;62F\UJMih^Qq'&nF>eTV!?KP%cC# OAp-y'a+\wUVO0 l p}p#"yn G8Ph:0qCl~620*z W!}% c{j`k2v^kqiK) ]N@Pnd`2@Pmv(s9n}`F>`=az&vJcOm/`"z%k(W'q D+,>25.k]Ymxt|)yS=h>W}Zvlq.2'Qb5+jj&7.H h. xt cAE1#B[2i"EdIu/`84=9igS5gj<pZ%RtRF81a2WU.e-wvY\d::[CI MXHtQ2rUzvjVU*`2lk"k\5`0!Tv> audS@fIk|0er!X%  nOs(>6Y3[q+:ic`H&(fNacp`; .SppM5dT_9k?9g"9'^j E V  { O n { C ] K> 8mnQm[f}I.V .d,@95D^#~gq`K #[C@~:TH1~4,5-8zfl!(AXIg";YYiWu;U%5}y"K-J8ama c ;w%uf-#) x) ,  % '9&l7$D1?d>5u"B3 @=H 3 t  SL;fuY [1U4I]-by> h7:`UhbkNB}p4\YKBMN!t`1QB:pDJJ4Qt6o2Mh;G_sf\zudAOGLA=6,e]DuLFTy/1L#BB/OI:Y! +m[=!*|$ 1;$;_jrH cr!~lQ>FnT(IXs.B|< ?H/91JJn ("JWo|7 Y2?\ wWX(RF?@w!)=J^3.[;; Y a K 7P p Q ? L @ D=S5nU4=0 .u!*iK4; E%G[?P4|X1>@W%y-lu;ua\=hY-ZASh@S `vR97%_9 d,; :'RuA [b`~mm7`dX/U'r$LH;lf Sq{N,gmeP*u |Wd]Kwz3+$"o,*Xn\0 ZwMb=QqG5 fJ\h\~ /tDdz-G<}-I, Tu\$ !=d`L% H:_FY5[6Sej,4=q6 bV! "Qol)!1i'2}I$`NA:G[`S2:?+  sIe]pTMo~#.a^ o~}(wsUM,nI$o[O*Q[JG8:- <]*;7(k_}fN'%@mDeca9(om0f6WafP~d=:%l)Z*C[< f XS D c@CS?+r x;N9ULZuD-7 " f D [  - < ( 6-HX~IF_G U=:;Ylbe}^ V@85 { Fk#@(/  j_~Tg0?2r.96XC-?Y,vz@ai# 8l1ERkfP9 !5- Q8i2g"P!BEsT+@+37x 9zdbkvBE? oSCI?fBTDN!hI Tn#kZX3o7"<5 _b?>o1xS\&j=JxQ ~(c, . B i4=n73` B  l [a;woh< `$hW"pO|TQ}o 5 \ E  N 3  ~o? s  A\^:TS\.!U]Jz@4kuct4W/{grFGd*5#(.FjxX}GSuiSOZkRdh43|5x(Mj&WsL&m(f!(<=a&spu^CvOId]8+158S|EvRf3K< t.<Gj@:mqc M%<U'aw}x 5xG+X *o |$?3Ml5lR\jWEG }H[dY)GszPGb"2D&v+P ,[#Fe.?dRc b^WNnfk+V:6'7sF6:f.7_EGF}_ g/HB'a@E'5BZ=mP kPr?RtTxC.Y hJJ/Ize fo>Q'B9D5JK*9%m{?_6LupX@$PuC.CPTi0>?,K/u1|}}1JjJFU] vo|I9}^6dk!>^vf56w/Xs/ew&Hd @m]Vx@xq`5sq7PbD2<;=9* .=>=<:;BVu}gf#8UrAG;4BdvT>>D: {q:  :Ytwz{aG, u0(K]I't,2 z750Z$nQZcI I>|vg+<Ex3 rF uzo> 0Riuto}9j% zM0)% i[r q k579'@`aJIaX*,Y n1mY_hcWU]P2W|=lD4I;dk1!(* .(a`XftW AF33* F < [ w X 3O FH%1GSN?FHBh60J\% { ]V( D6fUVG20e 8X8'8\%kgiuo 0a>AEwKZ@[$#X9@o+P!wy<lnn  ^ ',@ D'[;BH]   SzsB.pAe 6<P#H8 (^L  >%P!K23|[~mQl86dX8L I,cRQgJwqHaMO7HI iC&S!Y OjV  7 p[\@{Nx9o7b[ ?e72nnV:] J2_;JDA6)anG`9^Ema, KyX1JK(fK mOl tT' 3 s FdQ$ai+ 1J'.<yI X+80!De{>y1ud$/}ZK,  .=cz . ;qI,iocNP,OXb3 [V <Q^gE[ozzyzK;i{r_fQkyx( %$ =$/xR9t\Z [[z%D ;IMs=Yf6)0]G,  G - L d  jSo>Sz[FjrI ZO}2twa[=M'(MhwX Q<8PI[#ZY O :  { Q@jRo/Mb/[Cs01:[+NO,$w. &  hY0"?Y*6 p}LqXtIWy.L0d&6!S $ ,tTM ]=UhO&sCT " ;P/AI1E c9mMD1Wf|CK ( O ) A ; 6 (\!m 7ZnkH$3EZk P 7UnP}?5&&P&;R$gi`!~6]WWeKt^WwY&o<(P\2eej]LUVDv^d ZX ^:[%EW6z]>X#( 5 l y 2pE,   (&|K,%eeeLUPZu 0 F LBLXvs,5|;t&d;#mE_?G0V*?5!kA m  s + u N +)CUW?z+jl@YsM  #MCv 'r 52n15hR@~0kf4v9]p_k vG2 : Y S"S%t7nPn)NZL1^"6#rYF$ ^|"DNGVD`U- Q  ? b 4JKIWGx^A^p]S*-p1p $Wlt>.H$a=X?2id|Xsy2~x6@OJ9,ff}Vx _ 8vE9CH9'8)z&mck  H q 76Q b|fVL1ZKCa[?x( e}u3wy 8hbkf2,E 1-tx"F& U ?ceIkv P u  q of^d~IAGl YM c  A ;X0M`F8}6Ij4^nUmn}-5 gD/5=81{ hiU=\Z3jI-xaw _c o[H2j)+^8GPgIZ]\vQA @W^EV   - B WG' g \( T]r?\jl9 j x*yrD<" T ?6:~vQZ zh"  ]C3K;(Od =C0D8\$a;%  `rJ "Iw3rGs5'ob%@cc&4L=2QW^sG=2NsmacfsGX!5+BT?'<1,wPk`4G2{Z%Ma =N o,;RABG5]wLoK*W|oTY;<\HB/ Ig]r G.w8^z$uMI6MjQ   `   (l(MZVkBfZ+!Kaw'W' wr  +gd0S9z ux]6) 262 :DZV,8G 6{ k ?]B_MVZS[\kS,|)bK&"&$(9*gJ &+ * Ewox=#-QB-wx} s e U 3 *I B eZT<.;EMI 0# 61 YF;&B} Z+IICiDT&zJGeQn4w`o9Z '1 U ! 8{D=^aqK&p=n{!y~twAy0v: }\/J~ q4D7hX]~8#"sbmd^x.HCd&A(%AM3abtv78ug3:0"E/#'Vxvr,S8M6>V/)Yp5m0;RAO* Vq[Gg#MP'wB\J'DFVBA(W: G / 6 B ;z2./[j+vGut;* :sCdS< b<$\@]P^Cg;v3M`ybR&\5|8"c:( ObYc59 /P{3 D{ dzJ2H5qP[#>},/^hd  o / xe_ygfLFW udr/\3tn`O 3Bo xj MUjvi{hXpJ@cy=TIb]dp $U5i FSS/. ~_#9wOr9HLYnwi N 2 k y ] g|8B{A PO5:^(e[E>VlPWaa#z[x7?>iQ9)< uyfbNuX%"|%\MRn$zM4l+zh 98/s:ot Z/XA i]&{xi]3wb  T3T6).0K=24 "@*v7cSCN6PDN8m_^op L  FYbKPadHCeIG0Q[:k~D6pjU  + h[ { P > ~ 8Kb&3pR#Si85q( .KUmi1{=,4n ?  bAIQL`2(*` LugfI-N-z!?QCr?0ar +Gc V g*  +XdJQnad5}Xsj z%]b 6|&J^UA0f2'ts~7ViQ;FPX&BT , H n}npQY%|/i5MSU!zAd e U ; lpG%6Q7Mq7w\{OWurR, & ~B s9n\42bo!x31 ^QLp1mS6: =o O \  t w z,*Wsc"v|| Q U F ? S=J,Z_ 4 o}h1nbo5.7FQ3m~ p7* 9  f-aF?aERq52T84wZA 8suEz N  a % b/ /:'Bj/* ^.daAzkUD G2.VY0oY/*tLC39wHy]/3zb3DO5iYgG`z*n5B5;:77 LT s hd h1~v]-7stR4  . \ Vutw-5#o7|b>LLi5\egs8% (:/*eez>b]B"$-Y@xb* ] EhT qA8RV%>W U*`Y# .**v@I"IBLrq2x"=]{uZ;K,7*u3 /\V{ 6 : + 9iFy=D(IU/]  7 q |u~fp&/-4rMeR* !p\(,(*"gVp!zs;~7t  [ m2X[[U"WJK_YRqG dkq@Q3!T 'SdZJnw`a&55x9~B d\]3&znpr6aHp*%TBJHiQw 8xAg i~P78x 7 X p   : G^\ZsirKR; 5S '7.> 3#8f `#GF%kK .  ' X RCIOEV hI Wd{}8j>i0HD5g<<./L8TC J . 0 ( lf ={B pB@xeL Bcns <  e~c%Vw;vFI00 ^(A<n$&Y5exL(`E<2Qx?@PI>/?cu#4z jM i  u $_uH %H(@H^ U~r{QJ=N#LvQSPrOmX7.>Ed%P[P&Ra;DK(^%/D}q{~Z`'(I'NT,(O  5@dAN{g,)8=TGI`0k@ k\]gIdcsUeT0V}2l>hx{}zeC)(=OI7E@G >n7 `cmd$F=d$c` Zj+  t  ` 6]|p' Wzeavo\dkS:`!h{4:%1tA:AA1wC7CDHtE z9'f~ v4mf).9G+Bl dzur~WowU  RYQKBLqEDhCmv>wQkEYzd_$DnTrqHH9bl;)G*1Yl@]C_diTt5&2e<qopPCOH z0s98A4 @v{W$'<,mNFD $iz]T!bB/H3dguC)/suI1-r\qQ}wIRo0 2d~~|Y.4]nEEC][fIK6VUjs)/%&K07RULAfdK=EJ?"0vsuupny7nzlp  "W_[nV`yg5qQzg,x8w^54CxLtT .1'4bhb   kR^Ux,_b[`gYr (lFzNMTXx(}^:C:8f^(o8 Jq{uTF+wd;Tq ,Z9pD=c/j66C *6&]`b{S=?aK,@=@)$@bw <E:<MWJ+ uG..?MJ=59DJD5vq{rH  !SfH1.!Ff  yKI[N3*9T]@ G&'?D7~{znr 5@@?BGD:5?PW<iG>918lI"  g.|Z>?Xt{zl6.Q@>Q8#>0l\mH+eB?J? g;7CEE<Bi3~zpr^%i]l{ys( dO +1&,YW=N7Lm7nx KXG-$7Xr~{z.e|yh<4PlV?BMJ4 ;  )qb!,AQO7B9<42FslQf];7;;>`:H>Ajsns@ 5Wu=E?=DF0gz|xpvCsW<=D1;Luy{  N:>A21AA==@=52@\v{prx??"v\>!  ~ E N?FH1e=+2?9+vz$KtFL-->A5 pht}ut|zwz~yy|{wy~ws} "~z>T&6 ?rUC=?@68KLA89BHF<7=HKB-}}yqu|iLB=) >OM=27GOE3.>TV;&<?9?XvpN@Pok3rbplR:! 1h*I9|kokD8TUw~yK-ANM7~ts|qiv}qq}xrw~srrV?68=BA:& sud+ 1A;4J:8/7Vu{hI:<@-9?1+<\u}xxpj{ (:EID83?\x~mpw|{uwu{cF,  f `uvwutvufH3:]}wJ,n~s[xjktzxrrttpq0=84Ia8kvdH.0Nr{aUV[\X\nz>w>{M mQ:5AJ9wJ}hmcmvuST1)2/ ibjmcO6jG/#"%# -F`nnd\^flh`]bjkd^_eiedt%WgR,$9Oi2tn V1IQG4-<c.NTH@Q  "GfiI(+d-ls?):c,F[b_\[]YXZbe]LIeoA>YiPLx^MHLLA$4O +unnuj<cibke?}ifig]Yd|PzXj^`'6,+L$>o}{v)Wxwr4YJD|\_Au]QT^[=mIKYW'j"]DHK8~.j?LJGJXo  j-  ,{{zN|`5zjhs0^tshi  rlstlli1+4 1v!kaeg\Td2C-&lHs^R Hd{{Ua3DI]G$38 A =;!XN?/\O#5*s f/f(|FuswtdI/$,;A9-:r@?5N@W|!^TDT\; \Ru0-=h^~{x+ $7-pwZi#;tA%.5P* 3A  ;i38^  , k 1 YS=>/Cz(wiq% !4c+0J9)XROQ0_/l0'{{,w5\ ) @'kSzF|c_vZIYsEj(G7[Y;:-LIW;Z^i?9Rr(*!Tpmdv:c{5evrot1;(y),B"ksNr;&5pH z >   E / pzRkO[,h"^Mix)uj9!1:CLkc} IY6ASL&tlouoNg\m~ar-r23] Y N A  ~ h &  = L 2 + c, ${C+RXHz7 z g Z>H b ;@u !PR{F..94 ~i xoOP44Yk*F g  _  @.x Fx1R6{/CBJi2HL&~[|s"jGzaVx  r m 7&w"L1Sc~foi+4y) . !U(C^h5fG9G#lqe2>=tUj~Q!6^f7 Tn46bSra 5  ] s U(9R[NSMQbt8X;;4Eh"eaZld'0J(dy2 52#+Ifx\$Rhxl8,myQrDK4uw"4=7Ik F{ { ."@|cDYTu P  _ @  WHiQ) JW`WWAOGB La1la$2UqN#P/X7U [;mP e f ~ u@f c 3 u m  c V 9UNHym?`Cs@ m8 By*Dst.k65OWE=C12<6JYSRkQM^Ub$Xl dHe)&U v`~ H@A/CoTGV3U1!VdPQX/ g$kY N 2("_#~*;  0 _  7<>QMAGMsseT:W7`Z g?qjkOi}UL6,r'/  h - Ci}:nd@ " o .  PVJG+* hML ]Pv]y,+m/-LwUtZTzFYx0b'\Dy0u B jb08lOLr'u|%BdwZU9r:-o u/g@ gx+ MO0rG=<0hngq+JPQ~WI  r z<f"DO>~/Nd)[p)x CZD'pW;U==l(JXdth5SbI;# e:vX9aY?P/B~ w Yp /NsS5K9^T4 Nk`,hOiCnbq-( : } + 7 m`R!dDE1=RhM; < m s )9G7M21F%,(2|/}$o8D }wLEB?vJR8I>p)bR O a~]XJr2=M-vT:tP  V)s&%nTB=b 2 ( I :8 3is#_xOQIVLvNvWCx} < U[_3,zx?6g:%=KI}qlodNV$g!2/m}, ? :IO!UfbO,N-"Ie<a   9 ] $+>>A.)DY-U>t{-HUX96X3- Us3W ;LEHmY:LJ-JgQ lL]uW11}2 ~?j Q CB nQ [lw\p%L?;A@]8 J-.*`jyISvb+ J)M+5H9KZo?YbT2z9^S$L V  ) FwHQ$;N%Y$gM,| ^ z pjB  N qS\och".e{Dq #PM{i3I8.o73^%_  F 2;_KQu/7kt{U-f,*)'m)!1j*?LlBIHq>} & ) < C " P po)X'b?e~ u w I  a Cj(?dp;`~f&(sAEf6<[]Bm_rMEi}@og9'y9)t\t 3-  tmOvXTM]E>9tmI IoaR%f4bhP FE0W. rp(]Q'pVXC@I;y" OgrL"A[d7n}Y ?ts2% 9IxM, Y K   I,o/[*V ~K kh (FG&4 &V?h9lj#!NnDmUNGX#8c:d.A?j*coJ3cul  T  d3Zw 'PtVR{\2/<2-asXgB d!^DPq@ m( z  N s.JcKh-"Venv #m (.; q(  ,b\\Aj^9Az59cJ7[7 'Hbxpgo8ii*n'VE8:uh>  3 j-J`y$v?F rpLcex+ IafqI^G,jwdo:xr @wv_tKyk6bR8U#6xcq6u;B*6[eI)|"uZtM +7#qH7.tQx hV)oj Hg&/W3xMrpx[1I\_ew0!3+& ="^}+I; l z ) . > d VEWhfQR,2}&Rv2cU!b2!,Jx k9679GM0)P#:Wyb8 }vTm[T [ F    ( 'NxjU* @9i>8:]N43Ra$u-Ad}nMt{G<7}dXR FpVK>jHia8 B '.!Q$&^lI \5Lr" Hf r . q n\tN'z@GO/DoR$Rd ; f A /  ckpQRxqj~S2u \"=a Q}c 0 !$w"'~ID'== ahO# ZJ  K4?LVp*}^=xv G@z"~JOwq+QB''=>#TX@G7x#Av\8cg>nh0FBf( 8+BlFrMMLG3 vE2% L\l*]YP K H W _  BNpk{Ev,(>ln./I*P?UK1 2rYu/aKEA4^K)k=6>, WDA7='\x&t`S3ZY!\&^fR= j    5 za^= 2 Z%KPlJ^ NP9'vZ" %zIm"sx?8y-VnXL =\YFynq5w)`"&~1B x#F2X}J# P..,Z|aaX\!'=jdwO@?)M>OI(?DX[zE2?7:E>|u]e8F8@{ |x{ syjGld23}" FQWgOp7K48TH(BTn>McYl&8A<*[ ?A34ERI;Esfk} <B7WTAm5L\}(zR"kAA 8 T~k|fL =K-Kmu?1;8YCcw{N(f{yUACHA75BE'}]+1\kK%%AN-. /)$NbzTX[oC!\(v @MZDY\i.V^s /|iF^whex !@tIDKBj [~uyvq&;2*G =PN?15FRJ. oeu{Q,D;<^Y_vqxteK&C'>(! v7" '&Ru(rs|z_)AIC8YQc>:u;XR7",Mp~pT<25?Le%N^G5bjQ E=Brx:7/K.F;)(I- O{G!<<+-aiuk(!-|   HxnQBAD=)wt{xpw \(:"t4ugts]Z  )>9 micropolis-activity/res/sounds/com.wav0000775000076400007640000004127210724145723020445 0ustar simcitysimcityRIFFBWAVEfmt "VDdataB~M1-GgY#(nu>'7. 9G0:_Y,#) bEb#*:?ZkmT!2?% 6924=GC4& &1==3$!!!  &278<BHE7# !  "!  (<DGMYaS*65"  %()/>KH2(8CGB4  &00'%&$75% '@NI0 "7EMRNC2  ('E]o~jH& #Kjp_;eOU} Mum@}q\h;jE77<.{1F1JF 6Gnd{w8W`.t/ D~COak"%!7q l /k4Xs:/!9 @ L)qq!FziE"y7"\&SmZ4`rh>83%fX8-Uqc!z,{|:|N n. MM f\ reH_= L;7E)H@mo47w>jP 2\?&gX} = M <;  uJu[4Xd  M  22;HBg 0s9n@~HZk J Jv_M<<[ T_=~ tH_\(CY,\W?b$Mg=@hz)A_QSG-BR}z(Xfu=#" Q=0C Vj:t3{yN?`@lKG_f0NQ`'}#2L Kyx?S  <~L)ht{6  V r;G o`<T-3V4,hMOo&"N|LW Ax`}'Y3rg\:lz'P5A c_TUo 1 S " I:vJnvDw  m T  X s ZwK1 D[9J"@1O5( LvIK4SNNNOBT)a&VR"?D=0r8N"h:pH|mgjmlkmqo`G."%-$ze]ez 2/ 2GHlLjK%u%lyhwB%gSv RsuwdFZrsE C0SyHn_&DdmeL!QX?#$!Aj$d UH0MtO> ?Gx$\64Nok  bRcC1)W~vhU6'+ G' tZH;3,-:SjwyvrgR6"0.Osl}Em<wBl+Ql:et36>879+d|#Qt;KbTz(JW|1t]J 0^  F @  Q6<1cyUWgJt ]:/Qk->P_]0QV;$ ?\aDQ"~)UqM0$EvzI%JZWPXlw_(7j8*|:Ok*Y)3Eg/>@m m yUQJ0+M9Y-Gg t DK  yEziwt+y<[`)^?Dp&!5Q+q3'"/YZpTz?#Zn/i){Rf k A J  L W H ) W % <4JtRj o#.BMeSS0mRB! #  :F  6v \hU 1XW$ivH_F^kko0l1<%/:c3?rUyn=Ua&AM N6L v=gX* (G l 4 6 v S<S  a he-8|3v E:o@CFvcp M ~ Uud) o ;~y/T$/pt`lPB%r5RLPav:hzS We;Kq(u=P%kE lTN\da N &   5! KYFz,+s P/&Z.}pL"`@!Pq<c 6 & xS^m9TdswY2:yi VAEs7!@86[n30H$(Ya~Lv<bLd ~ 6 E  Kvuta(t GR_`!r&\5WDHV fl{ t B 5 \g<\8j@-3 Wu;MDe"> FL r\ % (cVi1urq>Ig^H>CSY?GUAi[4l d D D `e9 pzqc ٩mn= aO0ܫۍB7o ,,p >g`aK$~zN6'&X Y , g | : |'=Et5oW+g-Nk_.@(}n=pg k S-,!#%&\(o))-($ h}҄9(xэݶ8ٗΉ;]]!|j"%) +)&"X m[ R\b~tB1, !J[ 1  C7 # }C?~{s lrBi^y5" vU_8*/^!(K  y>n "$&')_,4..<-*'V"PXHĚe{iŠҏկ-ǙdIҲi|'F# )O,-+~)2'%O$"0 X3m5^n);zcB E~p"5-j ! # -rVn <[du  AZ q @@Y}$j?YNj.lw(CPz ` FK Ka- !T#$%P'(*,,,+K': I#צ6C_Ö#̿w Y0J]' $>*-/x0//-+1(" n] H r ,E*GݖIxک޴s %.W m%T' /;WkbxX 5 w{aw:]D0IA`h  6 -{&sBM!^"^"!   arzJƣD/uHĊŠSƃɿKTՋJV U*w!#$%:&&%r# Cd1Cmvvx}ok2 SvF@k^[S  $Fz7gNp '@,g>t:B0m . N  r R 3 [P = wZtG+]wviUW# u f w b @ X   r A<5݇Aݤ`Ƌaм {}p6GA}"v%$"* ( _g Ix%I#!/[ <&HO9 0 S a N   |v" u  WB/E2qB@@X2^:_&081R9}xm \==:/Qt0O+Ir5!L&s6Npz \ (nk Waz< UsT o o 6 L8C N `7 b  o IU0=,o[<m^z+_9MFdz|2) r^EnP'9IZC}L-S S;@V J {wa{\ $  WHeG cIa Y.6tGa, \2}pGs~"z1(zFky oQd,Xr  9 Q u (lZ M .BG?m !_cl8HT3+*hu%\BY)Z&-7~7N`A7k `NT^`)^uYwW9x pZ2 , 6cEP$stf \ !T e?,>)UKRvy} "  N4AGKZT-2YKa h%vQ);ySh ]d^N TB=sz O / (h&80 = 0Nr[w* ` < $h[#OF&k-D!]8;enUzKgWG ld9[ 9,|1qKVKT% lUX8  6bl@oEC!{Oh"x 3 @$pe= Y8([d9p_*! Oq3Y K@lKf7E.b3cUUM<KxFz#[kR#%PK~nVXIJ) y> ^ 8})KN(?fZ0Z_sGK ~]B? K3~xTm "_hx_ s\[U<'#g"jgn7M#tb+ZUwMS +}1 B4e8 )3 v 3 70X@]u*wOL  [ CU91!65f-!i777;z&`J <:C}+o>URoVJ`YW>=`7  B .CS^ ~ ( atYK]\tWDy9 =~j\1vFrmQKR6fZTrl :T>  [`O  E& gy 4${9owvou`KbR|.xh-fx WtJr7FfI'5 _)t-x=/y{ f>h;ba;aW/l7roxBct}(P,Wwle=Zi9150o]0#1:RLn#O!txkMYWfD)_Cp;=^XFW|XK#W e{7f$+)wT)slt@}G]oEk znYo#QfFy7jgH7[g6iT187QK |qfNdJ0_yg=I{)kiU8T1AS9[`'!<nDPEc v W \u[ CZ}bLXݴA26u ) >*5_C!=bfv4*5$ZsHQOmv(hsbg+caI@Tp"nfu FwSPk`MIdg:T1<98=CC50nuN& I - [ "`Q(N iTV8ʫѹԱ܇$ww Lyy\> Y Q|(v2&Fg" Kl   z\eI h siGmp  `* j,^!ˇM*i$- }Q Z W j  7~geORs 8 M fz;Z Z fQ0oVGp=B}uz* *  !r?}vD`k{s'H4xv67`Nw0ojvf{7k _)9u6+681w+ $Y  ^ rMj`%B?Q(`e@u8Bx|K#/kFi ~ p  ,+(Z0ؤԩӋԠZ&3j 6^r@ Q :E>;g:U{Bm27i 5 $R:!- i t\j99L{{k[ OWi&~+z$?Qq. 8Xc_l[!)WH\#6*m[y ]4| ,8AEB>AP`dO+ Wzc@kr%<=|R^\)yCYXq) "\mhS5guN?35w:Sf|  2GL9fO\wvXR1u S 5 u EjcNs&fi5 7 }n%e)ZNEt 6z  C o 6 Zb%+ qj }vJ.DTi*XGJ/ 1g_ ?Bp@]_{<q%Z'_XJ4+}qb} Aoi?d>x^ +(kyF /"M 84\ :[;(Zega2tr{|mk~qTd~{9DYN93;>'`\]v_u|2nAEk|k, V>q3:{cOjBasF"+j<V9J=IvM=36Y&{XVqYZ1:3'$~}9!P{[L $7 0W=. 7Eo=?*_[h` {LTP7*--DeTZPfg:6nyp X{lF3u4f01|*Y?o+d.9!`?M`nVk^mQF5n*a|*:8;5nl1f~8;Sp JnyVd^ >>pK8;a:V#mBjV PKU'm0pKIgs/xf",i tr4Rp3NXT%BRx[= Pj2\Wq ^phf(HHL$ IfX "8p"z<} I/1wh6y]"]bkZr'2[$'[7\K9 p.4L CWI+nHw#EQLEra8s& ojfYO &N$,[v)  >vdVw3qs_m+K{K?Nc!l|%E]n.FkuXj>VdZD9iXFG UH3uhC>(!~??MeC@_P]|DVnY{*.5"_>{hsDjE[  Q)}5X+3d u6?LA" E'\O?R#dj xd( ek0'TzZZ;S? q,pN]"G SX{<7>1ekj3o9,!k  G > \& Z]*kqz}@"~~&"veCj"u1)g@[.O(j d7PXcycU V?8z~H }hw.te^ y  u2$fsNdf'#vs.X]i|r!&va6mrW( e yZP 2yA3~rk, Qr3/Gtv 7\ gGzT 31 H j PH~Su6\=\/lkg~s +]VHy1-+|jMxv w OMv91C2EjI8b.EzGzRM%Y"tUd=Cb0wSkz_u)^A&H sUW .R ="l;*6|+  [.;Mja>8Yc}T,M\". W[Gy-jQ~1d[r0q*jFAV6JR/\=&'199Hdh X!:Of[?vL[,P/%VCj=<D7,xg`X7&9pF,C }ed@)lg~OzRe|Nld;F>$ % D&  B  5 = p~`z/ (UQWUoaNWo<keC< V ,]k|@4u.^c z [yC:bGnMfU p|`g='GHUtvw d7  . Rv( \tyY 1CxOB\#*5L_-4F7QH(7|  `@i2@'XsV* dCp)*= 0  _ t[n^;j G 9DJ$X wu4fSx!WAG . Rn`3Ay l:*NmJp?#?/=8{!]MC|t$>.".ep( ?3qnUru. I@6a/,H.rfXxE))Frtmqw/uz60Q!I T jzN e/^(/p/k$.)_yP1# 5 / C 3j`%lGHOs c.rm0jm]_}J# Lr 6qjH~K AVtL$ TnH[5!.|m+TR -2$t+9 #6=J _ $ 'Zmvj  @  Ft NxM-Rt/SF(O(s {V ^g(Ta}.A;Jw -  U .UWVR=R(u! ~ W{ wI}/s0;]:ym wYdeP27akQ H M E* av l a#bi  AP{.# "E_ \?{dX]E5rqj aUnM/U"Iv}ym* _  - *  | -sG) A&Di {s +V}? y7n9~o#DI q%P[J]@}*)9IP>!`a{my7Nk{32 D/% U Ov 0- | F Y/ S f$aS 7d&k09OPYm7g* b #C QaHM"ZaV<4.r6Hq[W # \m-yA$kYF<W_< n>aOR p  [Re`w GPfwHuW`]?r$O>^z M X # r% wk8>c)uXj2\t9{~  5 ]  ' | V.kRDAl "xJaHv{A$N8_XCQB%<%t?[/{+@A%; 3GPqFiT  + f \i m (wz+>hbDF#IC\[zV+  m!CM:s T rIp]":P~f~^uo^tT'ttR|[j!.0 _ z 1G_*`lIxN OCAem,% 5xn"q-'4.>Wp-r_@l{|nGMdN4-*E_%K'X2)M REl= u  VE4z# #  q XZ[E1pQR]dz8 G!-C5$9s?g?Ad{N._A #b"( L : yv{E.HICS_9vZml q  d>VB`_JBMdmn9b@bnRmB#Q K:91M!&wWrY'S)/  [ y $} 8q._?~b5nt--FL-zi|+2='PX$T[EN5o$Ru*>$5V{ hkxIxwy LmVs{)L~t  ;=6*(c 2 0t1@Q> (d1kUbP66Jn+_Sxl]V+)aL%Dzd-8_P~&UeQ^VM:G9x21Sid,O+A >bh4; | 2oK2ufE}ZDC@M   8P "=e;x0  &  , B;J0J 7  ]xlK&4 : Y~7nJS$=nVk A,d).KtO8~(7O c}^+7"}3#.u6_vc!}X C~{nh$ S = )*;{;1\Jz2I| L o&=6s]|`tWgn*MXd<(^Rlrfr_ep t=!b]6$:8?3nY gV6+^M_ c k 5Q#Nywc36G1 y Y h ,sT^o 1Czc o_\ (m@kqZ)_PD\CGQ&JcU{NVEr'$ &!bE'_?&Mr ~ Y 6f < @jAX,?U,v&M !"L =hX=j *vV:}`AsQ a aY "aTY14A/>Y-6^ R[AQ ii#w>l vRlGz#M_Yz x P5T H[c{o-X ;   =  b  d1[1(j  kq [wy8T2/liEwnY84.0sI|J1erR &-ocH%eatjr@C  Q @RZP. 4 2 RKbZf9$sCmOJV|EiSX? ]%lW Qq  rd2Yp%"qp[p\J?[8/$l#c rs9a \:&(KJ,Na$nIxKVRJps2b P - -  M F#'pWs$V v -x5 sOgzFRd6So}*9I{X>yG9Y) .K;-dt_sPb5v?vH~+ (rP0X3," x4 AZ+#7v-&S)P5LdA{ZCt3nKG a & lHM:[ cl]F g : H.9@M \=\G WE9j"[? ]1],:Z&Ovy fz&`hp}$Md0VWOYE C QWK[&.~Dx.Pm9 *:g(^ = Q 9ahHNw\P]!o' =*KLM 6Y Qd|<3U )zG*azZ~ M2O LUvw$G /" 0 q }o%=fx~iBIZzS},Bj Z]}vr|lVl?7 @  M8 h2RY\u 817TK  g Ke ` t@N8 W 7 FS#Nx{( Nu3CT1TGb6@-kl-#j|55 c .1} %1|`$RgR<&Mls" \bc*=(?J/!  o 8eElu%!L|=Pf gA0ibdNx> zh{mRq6][tQ1@|$=8XRg"Sqd^UB;dgOz]QWP$L> % %/K4# 4 u ] \~ SjJqS*T'P'Jph5?T&]PT#,V2X9=Ti[5d<-1lGuGa T/Q 4 ( ( =  7dm)`r|Y(ze!~YNTn aY,K02nk#Xdh#@a ( W_D nOB@#SP4Myhm+"d    [4T)8)/m>Vqn$)"gm~#NnH,`X&)zCN5.' -6Tz1vc4u[Eer$!%~eOyqt#) P P d (X| 9py,#DY=k%V5Lsa$;S//M5 L s e   NP+@,, o l0h)-!K`0tn5qw^: r0 "S0A,IFI?Z]WsS`lQw^aH R8;Z`OZDS`oZ-^ .1d0.O;S _ \ H +V3E7aJ z`v ;  u B = w U 7/ Y >@ Y&   R  %!d _Q?vW2d(YW8~({XtUfy`VSgEt$E2CvFyPj&*g>y~(=w\zc{u iD/ZfsYyD P ?J @x1?IxY2?)7 A  + L 8 B TV03,+D P^ m|0C*KBI N<KI%^P(k/` %;Hx"o Sb-4+1FtPCv<0J^nZ;eYw;LwU b  w!(GLf%cSdwtvWg!8*Xu?<JM $MP1?Cw&H   X _  ;p_ nD=Ew"8Gni chkFZ@63{kVe~ Qq)3v5Y;i"$~epKeRP'KwoJo  e@"!e<my "K:N )'0(Z3BvkrxQ vv {rV\-$L/:pz)?$G x()z5VbN'V5!,-"PB c Hl FPIXTt xK#z Z@sRq^xw,!/gE;>-}ng\]5cr,s\\ff *aCh\Qn )` f.7>]gsI+Nu{:TJ|R 1 s } L>sDlU/N`_ ! : s`Ca6 3 q : f Y -}rm $V2=zSD{O-T7:9=u{l8evq7R<1@%zp Y47L/c j .  ;X>6YA7&JS.>n,.r!A 5;xIl*){gnzIgM{hg(5B1.V&g`]8t5r<[[pH"Dl5 Ff>wa%m`?  F^ ^yrOExr6T> 9 q { h3 %C9WQA~^&o,?, FQ8={veAM^j9ewM+0)]5`D.]#z#=CTWO&pdd8ZZk&] FMOG#H ;Z  d }d-~JHB3iHYj=O/)4\!>q[q"~m043?nT4ajx3N=f8r&!b"^!>ftvaQ/7 u) Qz,nEe1&q*/R?<-0 z~vUf* Ci0/D4P ZDh1cFxJEgB@> :a&l6I   W , Lc fr>6\-|GJOOc86qdEm<(M~UrtsNa?H~ ^n > oVAK*Zn | ~_OR6ej*B=@ ,ncn&dQ'K ljq u4XN Z/$ZUhEkd' Mykui"maKE V#T=Nc.3g>jt+4 | ] {  =u:cT/X- ZV v+Vme|2H'_X O % & j=M% O7uO.rLH"(]L#WK c9 Z07z)7oymnFW*j^$  ~WcX z_[ IMWSajFy;kJ*;6xY(I=Z< e A~nC;&#i4$16"XmU.osxP+MBBb ,p ; B V=R@XKvQB1B,9a)m`5*p,5RWQ 3g\xtggI,K]{:6_oG"VD-WDS$Eg+0=0)mKkmWDf E>s|rkZCDG m: P ; M5W77:K}BX &(4s6ht<f1% H@j 8 +  (yJ[2oMCV" J 4  =oIvTX7/2jvQ:{ 5O~e|Cc,)&Q#jA&)  H 71  E9!:[iMqX23@P y Z * c %]cx[yNR|  ADfx*]-en)x Kh5+ U 0doa~i9! * A i M m{1O0P5d6 5 b  DG5J JMi2?k {T=,;}-$? Thk_V~v8O&yvV9]e](Vyo(~}l<}E:  e 5 < kc ?1`) U F + /@.*VdpGZAaa*)Z*%G CjBf-3T8 6 IF1D_92Xccyh?Gs*VXdV tN 9  ,MCJ briW 9 nVI*W1gN(( ]  E{]Sp|h.9k![8Kdw@$:$+8;&M> 3v!"gZ O\ O n}G:~#; + 60/ZJ|#", Z n= e y $ ~)y=e/8~y|:, OT/Z|3wiXc\zv &j'-oz NL @K  `eYvf{ ^i>Xi0Y$g;l 7g7nI_PFcF=t!M*huU C E ST*`Bz k@r8<I2:x)#qpA^ !%o3` z[W a   MK%mV80by=- ) 'K0+@j Xn5L 2 k%j59@ _/df (  % -amFWR,PENttF'  nP@)=d0#V$yroPz(/(>t6V c aJlq {6f8A}c"IxGAs~,6eX~!   Z-^36 s|:P  & A s)\vN<g h  "oC=4=s #H=/ L  !SZX1!6@Gh;+t05YrH Kx`\M 6 ?t=\ [SdCy{Hm> E !hp>jw 6_mPn^ 6M  O -lj OH::^IK@@  ,,7]26y e Q/F c1-#LoE)`[)0~S F w>+98vZFd$;#mJ = tWuN Q $"  h VfK3Tqa8j Lr/W%yXcw_O-FWlYSH6l"kr@BEO] v`h WhipZ_OSV*I O X  W9_,l }<0Q fPmhX MG`orbGgMPtiqgCw4@k4Ve T[!Ml%1jCE_vI(YS^k}N|'\5fHd9L8x +"=UJvHI 5#?Xm5H ]v{=@_0Ky\%@G#)$o'ZeoLEQf!|= !Q"TE?sqm @A Kf  &MK`d<N| ]/1WRmP Y !t S< o 3 p B +c<}XBL]p(DR4)Mi04B4$ov'Y[&U^l!>}0/   2K@0! Q$" ZG=ye)wk/ivL^/z3r*j,sx3(CB[1ix zZ+;P7L{.QT@L|(E {na5 fY-{hEqVPb3|fxhJMR _&-#e4p,  $_uOM *)AH#9{NY3|E#zvO;}-P}GhJauC[&9SXd ABaccTL"lg8 < H a  I ^Z,]l %r`rj q6^aui| _HV6OJ_-%YF'vD!2Z "fr8x78C  b " > O((m)l^P)fa\gJ\!R 8asp}xo&z C~r A. 01R| g ~>l^3/N@ -TV4G#r8Z8z 9 YB"h6n1x  %  we ~r>xU6My9bHN"x>^_9qH=UAcY-Q0: wb:  w;6HK=,rtZ5.hKnAG J ^  z NY]G]qWV{$o.sETS/1zwX  8 x x{F JN / MV X `FA6:9Hc{eZs."45wqZr+`@Nze 0 tJ / !i)(E0^$+ ?  {a]Z5d7pS(gn]dSzl 4 F@ ~ | dbC-dxB %5LS8b_{LU\  {8[g| !x$i~x/-FRT9[E:vLCL3'0MZtv2bT . Y e *S)#*b1pk + ,cFUOC? wM  r;Cz% 2dJS 3`sG\pgBDu } +LU$/slf q jN  Hl'"|\*M;R?I( 8Hs,E` 1 W wV M=d0I$ Dp  @ ["}W)c6I, , V~ W , b I F L3^S8'< m%G.3K ' w { v J US~T&S  {` )hYSMi\hbw"Y 2@T(dsm2H RN6qp'f0.3J|z{Px}5>?KhlMWE7dKW6 ]fq)|W1g0\<P\8m+2vXb{7iWno/WQo Rm" V np!  2mJD0?!4*JdKADz'Dl~26.,Wcmm ' V 2  . JeV%>> _Mx"OW9{bi,s\Nki+X Zu2P[5YEm$ pCBpN/ Ff'"W?! )   K >|[4:A)V#28:Ai'0tcgkd'}\27K<px={F.!e{@)tbBqOb!i,>c}F8WR  e E^e0 + r y +e=wOCkw8l;E#P4hP=Q-W/U]hN$hx|h8D|_< Z| i ~ d !:fB~bYNuR g C w   qk0 uX {o: O  n1sn2sd T]5 :%U%Up%`bC U ) $]v{$eF1ey&n> DP/OqMN)5P9*VSJe j%O D    D .)>9Qj,07/q,N@` IhX VcS>"D "MV/_UMgP2:{B'oy>@1P""]imXeSb$%d   MSrG -  E8s-, Ama ;X_( W(z@@Yi # pc#Ybw]C S-[  }bA Oq,OLteKfzwZ1e x J F[z5V / \ e+>)^`BsY33:!usfs rDlBst\#dJdSPxdl5QoKH!+<@PO!,z-/b5GCu+T/K L WlY /4(m =?~H>'rN!Tz7dg'|HZjfgo`YiAy:llHC [I }x<CzA.)Z2/ iV*b})3Y/9lZVhnZExFV|9"2'TG{r6g^u1h9Tji jyks fb $ O \ a ZAa2 - /Q.r[U8NkBY."*4a<6%7<9E^e'OrIHFvw&`9{- wh*m4\7w$|F-+gH;Fc !E% ` 4Cc fEf:9J5x :  dVj w1k@Vx@2KsZl R2zu[+qEJl}o4YlM2}eT;7_^X+@4vK}"rTwBJb:%[>fl%U/XQkGI 'CqXqvF`j&0(/auPE+b[5_}VlT.[l5u*=_ kG$ ="*drh vH 3lqd![ gWl' +:7Rc1%^5g&1,d:N)D# M0{#OTO;)3D:x|:Lta~'N s<i EG sz`5%\OwqV  F3aElXsXcb:?%&s0s iE#848;`iBJ   6 NfVQ K\?{'SCxJ}S]qe?-Yt7  SCi]/:\8dXgex :?~4"'%PxV M & 3jrj8{qMsC 3,u# aR p$>e>-&!{ U $Bai=M .)9 4g+hQB/dW' @F>$FC r>\Oc'GpzOR=T -  G! 0b}Cx?E#+k { /t [ : y 2j4L`f=:^Axvz!  }o`,76VBkR4 zVHtMLtzdA3lC AMK/6Y5N>rPe uH M\Lefx~ ZH -~$J}s~A 3 MV5^=m09g]\& *  :&Q&Y -E iatXET~]D+K_{`v #gf`4qKDR3J8s(4feP| " " "TIb:`R/+ Ia g, ]|hupNv) 8N ]4(v0gX!oXc$(W|Yal;KbA]Am_5rmDW;c-G $ 1@tg sd-x?{S(4MA'6k`!:]PC\HAb6>^fT ] _s0d6 ;\EC.AT'V  F *n?M7b:`Xz$L64rt C_xsh(2 I v q@@g RsgIOo A $#u0kwPb&&oMI#U e \&*#) ; 6   Y0f]Y($O<({~<TV{oV0J8_ ?1]BV$=i[8v+ $ :H YA4.* 'q>#/#8 DFQ7O~$=P f]@1L"6"P]s4/B $Z@$G'e4W!j;ov z=-CZ{R%}g%1Z.L~!p ofb!#6( xkh|P$- Ml|'S$+ X9,d)  % i=!*0UYOQVe(e/ Lqs6~/~;b3!OT52oi 8@T<>N1@BcipUj] y`}(=ru6ES dKwyL 4 " oD KDB.N3 Ub8_]k[fDn+hfqw"^f32/8i$q/R*Bk -#!O|!{#" Ej} A7 v K]gB5.?4y 0mYJ>{LO+9Y P& NQ7H f 7 iCGo^rY}f"1E!su7/P;0Dj{H!9vK=pYjQOfh@yvCQlQ4* PT0f9^4'+FL]tW@8ec -y`j!2,1(Kn K,B  %<ptp nX hbj.um^ewr]N if>ktiq % S }LGT'T [Mau @2;<m U1i/|} RAv   Q  K]tUlG&F_Aafon; \ Kki4@> %8=+/ O/ WKR n  | 0c'2QktR?A6w=ViRV %Z >r  i d r  Z jU ]}:}UpE#o># Z>l7*}6yx3Yo> $ \ \   u # D/U0SC(,3$@]Rc@}":xb NFAc  4D NpTt g ?@rUd!  u   \  T jd6s(h{"ipq C g3|qF La4^x]SjJ!RC%!n v>:mZn?V(fS9GA)qONooy:J&@ \) : | N[Q! &qz8FY@nst5yBRMd5Xu[a ve x c~kHhk6~Fz%G.#X!,68fA^,s)+OAzFJ=L !C ' 3V_!9NM1hmrC0B{ p 8.\ {<MzE-e$  i . Q *jB nF8JG\*h u=k<: 3*q>\'={PR I*2XHxRBgxz: v- w3%6dcx}a\u]-Sx =j*3DMO}GJ- C5">?H#5B! mV^i &Jh!,mQ  I>&P kd  'DTF`f8m8z~r'346dZ4Q  $ 4  ,?J,ME-*V/\ _" 0^[]:7?6s~vG/O;Yx2O;5Ji  4 Cp[Y=g1FSZDG  K2JF^MkXHc &  b HH$=10}vkvqFRT/h8?f|GNl^,&|"  0(;qb@n $ A!mU  UOv=8:UB&zu.]+tg]-R/Cj5l=-Jk#8.1Lh`vKy XK8F{F9UDc n`^ok,NtedeTEap~Nu^KN$J jXwoRuETlQf<b7IuD?|B>Mtop\7';$NLmJUfiq63fq}?%8}`-Z[$eRd%/g[of.,mfi}(cx+st=7'*%" J7Q@{)mU;R7^U!{j}HhfAe =Y3SFOVA{?4l" `pH}EY0XvDSe h 0TY iI[e3mE@BKN![Dq49T$S{5m45PuE.S=Q`=y& .H P L/ n<pOn$ r'bT . X u ],M !Ha.{^gt584[ !{@v}`3A-Q d s 6OBX4Lt a (}m7,  i-c(>~[7.Q%-[7JYDI+y!4{  B+L 7K lFVYt'dP,~I>hKgbu0mP&20[^P o ;RZ)UN1a2th%nv6ny|<R W "  /eWg<;_(_H:   vZ 8)eFN ,.[c/w&JyI\ ~ @6r:/]m OZYlwOQ ) f%^@?bSvCDu{q-{($5sGTI %=LA K 2  /DBG{6E:|dS~ y ] }E XtFY;V/A9CKn '-vlT&/|4"aObR\bxqanv99h,,Pr?Jb h(#;!qU cD)anf6k | SVz c;|Wcu&Nxl],5(D<%dOWw&^.P. -edkgIw s~P}t4L a L;L39ZCKam I 0- (c.qqI3U7  _ p G R hj[vUP } '3 xZo" H D,KLOE Id_rr%, ]  /  pT\n[ bq[i` ] J @ ` 0l#g W@mz((  ] Q  x75`P*%_~VDl;tX^%UE T2$pofA 0 N'XD |EbmN[fpO7`^Q)d3k'z[KEf0ETnX,pUh3oyk8 r c Rd3 4&0S m ; UThi^k10V %U"3=u6yB2muS$tuQ~+M.ov#6B v0Lboy! ;Nj  =:,z@|\O4EYw.iG   > S oMB)R!<  H 9s^N'x-q+bPFI1WI@=J6%{YD  } ! #^jNzO:Qs3eII |K  fa]4 dA naQ=f^L7BN05W@w0~pGzy<0UU?d`q_n7 ep Kj.5',s${? hu1E&0\uP;?wPt|{|UN( wE _W$y& V;tJ,a U e y  JP5dSi/3#`yF } 5 _MrYH 5*4^SRk $'Wr|ln\JE\qm]r?/$ak-<idj _rl,6wd: Js:"+7X~f{TRc} bz>7iVa=4CXx }bTx 0K etI"+T N VQ! m!d8 mY6*? ,LFa.xQWCTp"+nCGpFBm< Qk>l``P9 b f + =-V,+=W,scM~{7e8LSe'@vf3 ' ]?qj TyGfX3=;18Xd'E m[[ 6CeMz`|oHG S )GSnJmT=OEU,`>"lnbH LUP02<w1 Ya8OnQ~8O ])Z( :|FBwLAFz*Eq{f_+I5-.)T b t _<7 x t a%0z1 5a k ns9l67LTw/#7G_}_4 dC1<NFtyWe+oX)KT^$WqW`DAk`  QUu q(EiF"iTBn, ){~EVf>4+>q1:%u  i W26^{%dE)/EY8bn`oadi`b)<~-Y;cp`p{OqkhtCX)Hu^^M`r$=Hc.`_QCQ F k'-u k o 8 9v2 > y 4 > 1 V*HL30 :/W<>Kh{ @i'j}&zb0i*v4lXdfre]xa;$er$P2]>gd\ld"0o-Cc/k . T> _TGP@sR5} *xu\i[07NwZn_o2~;W]/M0v@=@sGk`[F+S%oY5TKwudWuhE'c*v C()1Q9+l#lJDQK'x*sTw0oZe{Rj@RU8+-:VOyw2xb5ZoeCU1Z<g 9 0PO4eJ H_\w_7csL3VC; JHP  4 n7Vrb>+gEW5}*u 1I'.xiI!bL"0 HB68w[,ti&?;s<:N8l7F.0,K?g]S' ! /*?P= ` {9e%c O#Tm]T$7\Uv*s:g5z*)8)M*p'uDq xQ^}=* ^15!AN PdX;~S . N  3 6 |rf6&o?<%8-BtvTpV{~pc)k u  x I qbxm{'hc 01O2~>3mU@ 1?o^ma= {i eW,wpPJQ~@w}|S}9jpV7A4< JR~=\lGQLG_PE1xdZoz@6( a U 1B(W7wPo:+BCf&A@d!BH# ,H7PcT)6/  V F `O*qVW@>X6)'%XzDG-3wDT3b?u; |yY2TC,k8T4' Dg K%+g^>CeA : )B\M 7 O@?5In%x>E+U9%&~ P3 TE U3}@|t8}V nH3  u;/PMD?TK](j'  | ] sNA;E)UrZoz KYW=VY<lBZ.]1h}|kB>8S`z![t~1R=ta*T."< C  t }$v;f3EZlpwo]* lyp _q]"bq& iyjp5cj5aO&{ F w.{FRhLj}/Jb!k6_9h V7wh)nKaZS=d;Rk&4_/  P A,ju 1EG)*W?^wCExuCmty1sCym<+W 9 &  V B% (D0+$~ID S It^ u{m,ShL$[XyeplY{it : }Jro&iXZ M o~} 6/_XN8Xboir C6 BY@):\lCi5aP_A8_^%[.Dc e? $jj_GheE L G B <  S 1/ ^W47>X=/y7fbOTE7(tk*7#Q ZE^{Ze}j_?e )H w+:*Tn`r.`-p^`eRC&JfX " "   k7_OMaAw2[ij-) e p .:l/r%d>`$Vws>5oW :2$R 9" @ % U dg(@     O "(\x>@/% :$FnT\k;y^;XF}X"6SJJZKT$o&(Vh% 2l78)7#D k;klM3l0s2"X6 WQ  +V]^=_Rf?MC#6@ r~5~c37D=!@}>RQos=Fy1IaCHgx=7weBM o 7t)h(e^VZ9) I 5 ['v?4bjb_wBItG_ ,vlQEE'Fn1\i1ltVS{pEy+REl*AkvSia 4eQRYs$l:= ai"tnaA&p%qqE7) F C& Pn [ 6 5 r }bhy=Eg*%7Uq,b!#EGrISS,3fqrm<|31f2cW=LE$ @ . : _ { y0z S1/W0Om*)P];-V3lC]f&;i)-8( ic ps0swvQHsN m  nY .)?I\OdXTe|._6_d DS<~\+%J^v=/Q@8?kOA -^ nO}4T>6] "$)?9n`gQ),R" HlYBn$!!crm\6 W Xrj[M^i&>* \ f  H #4.w?-fCY_O=}50Jmefp"f);A2X!s`!({gQ?Nzq@yxz@Z6IAX luUc! g  ' x`~ W. c 0\nO M %0;SYvFUwKB0U~+uz*%^EQ[(?mFl[:a XmwsX",T h\e"J%>,9E  ]zVH &3>:gvBw/}UsdH$(/y\AcM R9;Q[7Y>)"kH22q+fnW [|bOVWo0h7akft(nk TM^/PpW{73C]< 4I#%5bOjS/~i:yK\ p  9N|oXQ|6 3=U.iu_ 9;V 16#H.rwN6I 9Y^%[*G\u3C.rIo;A =y  ;Tt7c8YR%{g;T%I%D7avn(CT 1_X [  j e8kf;AVWq]D*%*1QpA#(dCrYqS<}$xOnsDL1SY&OMJh$tYNP]c (|kg1) U>_  .& $$15M3 2  ~HW=vO  YuSR~$}-UD|K~F@MG'f) s<+V8 $%z F%Ckz o]<bDh!5byV @  {/KdL!%4K?bMyghhz ( ! _@sZ,r0ufKTkK\W=x\=&7 +;r{iFe&|4kLCOK%>h}w74?t > ~O#"   OVtt5 & > %pUq'HV6n|[ P ^y y cf/<epY"3wwY:}Ue}~F_Hu! WK2r`;xn!'~" lF$ n 5_ j & 0| ]  < jPF+=(L,/; Lt0Ff8Kqu'R 3 qVfe}:1a9PC8v&6BR=99[R(FXP YW x(q!Dplw6G|LA;/r0r'AWkUB,S|_^@BHyc[o0ro& # W \*x% L 6}R>-bvJ  Q6s{xGoxYDZd] _sfWrodW?:BvNR.e O[2:z8- j( F[IDe $$IYis U 7D Gnb#7]> VBf,4; |81Nwovw0VPQ F F a\*NzU,FiI:HPm] h {Zp$L h&XEO1:/kwu#X/M8!B?nz3 en!OGB41Q]ZN~YHL=r7ITlqP]OR&:iE*V{hvPg*;:| z5$ 8))2]<N " ctomfyS{^&v(' hCnzBRs*@[ZxSH2,~4#h=1"eq9v-ttn!klUYX%/OZcfz8W(X[:sBO47)t_TI Tj ?`Zy(7P'Yg`qw:2  !{g6kx3'vV$dN44|KqXGe bSl%wH LI0w7#U;qjU\?/(12 }4)!S1* $zH!7p3&4$$q-G L /  )2&n D j@O)gEv mo.HX,h8p$^<zU9s.Z;YNq"B:3s[n,N~L/w#oY.5_8;O3o VhZ[T`t'^mTm,HhZtE0 & ^lU*]Z)W ,(P n$}k8 CzhTF\Z((AUa4Zkw"PmY0yn$j-`OOsg-&dj<f? M U  Wdo({s~w4Kb`WHAGP^oD]won7T$* (  <"5kI vdL amx95m']Ks~JoD `CI,G$SbHj<UxpmEB;\~ d T_lJ  ! C e   Z 5zNReb:k~h5h1u,.0<Z!$%-Whm$\0&]t>)UkMii D ~o|b_?Hj.[z?*T~.q^. 53YO3|IOF}f?B >nt%6PT60 KWhR1;^`?@_;XVr5QB .1_J|37'x03 M[1' n.m},Cn*~_L~ b,1N!nB?t r}xWHWemUzU& D_a&#IiHzu@ }:` v_JzFj'tj7t!]0z><?(Pi8Mg*X> m+h)6_F{4}%bLW$a)fkBl1>:W!oU+Vi roV7M2V3/X*c5R e){ [%5'w%]w`M\$u*fQ6uY eT+uf{@:Z"bpxGS%xi|[ D5c-1-Mpy7Rv$lL)R7 8\^Hw(y W'(fY:77 O,AR7  *] %S5uH8U, @Wx2g[`in".!~u;4A>/06Q *;P>  G1c_0 D#E&@Q\+s.W.^*pdF{&O?(@-HMOg @J.*5qBm_* A`aX"`LMAQFlY #&t]NyG 5K >nl#lKUeM3^:&|Mh3b0pawt|CDt:< A njC V& qyU3' t'4jv_6U@n~}dGWLR edYS,ahcv2/qX E~r p]}_ CJ3CX3)<DH3IofHe;D(*</yU}^KMc&Lu/u xSK^FxxZ(Dw%O&Kd(' /?`G% 6(o/ge=AX?,LznH|f-*~ $q8*K'X17Ie\m;P& Z>g#r"Q #!w"^j<4]<{S$!Imd15:7/>(CI<h rj`hXg{"S\ul~~M[mWEB+ 5opCF>T -<Fr5?#pjnQ <m6 jvTyuG@ 7{hcva(V  (l;.>?(Ch 1auDRz_1:1 *g5T<;NFG { {W^}^ G\f < [ H 7  ' D e B<zRh RdQ7.lC 6 iO'3De4r$KF^!<lY*+6 {vdq4Iz9B yW j=w1skC 1~?mjB5(M`\[ s:waRRJxfg_{o Dl$63Va D!-+%p(D6&s ' ) ENEQIZo!zxl}=_C'+x2O;I T[U6]u2oe!{h)FxjRvb'),qv\8mEfSpr*R"4~@. DC!&iqiN["YFwMM}9m~Do7 K|e/N*%$mN>oa3u&,-Ra9V4kZ%iTc"beo>,G/f E[KkW^_a\Vg] O"Il}z;x]tj6s#s#iP ?M!Z+0&":I)& e?s+G'T4/U_#z"#Tox?u2=j5k\>~_IoOJX~cqaCCZ:- >@4O"0.O`73BKSYU7O:*UJm%@k$,D:KdWT@KLI=bW=< {NFYb4//$~<!!9E4M-mY[{+I Q 3:4t*;6|6w.Nj Sh0+r![M}Q\)]5yz"d )b:*HV:0gMfRXo0*[rN#Uv /& OQ L dPe@ <>I*DDlf'jyU<*G@PW;k`]`xy C1m .fzg^sP( &Ytm5QD3m}irHUYl0Ua# XL18g#R4-{ 1LAwT XZQ.E{0(/=)oi&?ipt<`\yjJ30I"0nBG({FO|.6mxdh%,F l[kh*Wv|1`U>G0:Y1 aA !Gw!.u$="Kfr![L2zP`{H+I& 00WV[DE:hct@?](mBfMXR53 I!n%1 G~qX ?};$ a*%nR&' uKHc6_}  -1ix)-k9%_F+w*;WUl:vQ!~c*a[@sSOsYA6DGs]ab;c`;hL@9~Sm4O?/}}|-\j|"7i;!C`Zr#c~B?0.nqdd-lmk@6K d8{N^L)Rd53:[.Lq^-&6 s-.17J{ R%y?Kt?JW)jHyt=B@2A2;dM4-2,sl HY|+l`{sP3n  qbF/\M`%T>5M u@s39E\F-b"L9 i I=bhFs9.DuC6?y#mw)3c2r~);FwMb Kj5". D+ w9[<0:)icwo,sHB0sejmPYy 4ki;E2:yHHu90~ s6JlsjU'JS_p3afD`yETc{WQKx.Dek\<~QCiY(P~{Dk\g_8*`s5)<)5s sYV}.B0S_dS62+v@zGG~ `o6 E=XvY]P3dJvIybd.#$CG}pl7-RZ~}|l]bCu#D&Q+be&GeMa;FdVbtFeD '$s4FTUrL2Mu6S7BBjdTvbjJp YNk_ji1}j8ZH (C+%~ 8u'?D9b,k'!V_?1B[z@^l]9(tAfO[O%U:+'OIav)\:swu]Os W]wtPq OcK@{,]B3#'#Ggn8DBU(Fk(QmA(!AO )u\ uuFb^5B hj!;n5_9D|7k1'ajYK!Bl|~ot!&gbDBkv r E7mA@YT?F,Ulk4gm`Cl2 {2Vlx BKw'JuPfCL[ @f'$e%oF8XKg3X?TO-p'y_+_S 79aR }],dt:.4ZEB"1pDlD+r=KP&6OQ. mHOcKJ[5bVMD=nlQ_O9#p%3#LU&@nw "@ha9'4A$.  # qv1R`s zat1p"d$ y|?btk~F)fg5zi*2MUyzwqxr}|D*;=.V)>~/NTk-Oh>=EO<(+!,}~HxBfjAaJ"Uu+i7.;|2/(?Tv{2> z>9(% &fG lvd 7+>Ta"[aU<lfz;)BXK8h nM4IG&  !Hlcl1&@!K]Rha)0_~t {3/YVMPTL;9Tvl#*vP>-, 3FJ$)dl.|,.~m @W}=%B!a 8hp;?%"s5%eTKg(Q0?=s6~ <&4 iKUmYC<F^xhNFMB kZ<[5D.ES7 WacD>]|Qhet0nl%BIy8Lv_Zjl,orBJ #F_dugVQV83:<>ep=$0 ,> "'[,z9 /nF^[] 2af 73BkqKKcH#l3_GB8$!` GW;L=C+3Eehqxy3 5st"8;(^tqf9e.9=2_Ar/'(N# b#P>l@zDI&7|vhplg}H<0?2ewjpVoC4E5/j\C8:3-c9MS,[  }< ;N[+Q0-7UYB OFCk,W\W ) Q|SF*Xs" 2@o_IF9S75~zmHe:KW=7VgM 2G?$en}~C\!|hJ=,*;Pl{rpQ##ws{jQrB:q"r [J>f t7vZ3Z $&' t(!%O8E|uqncKJ44.cz`$_1 79YW B,P-c")>IiJ. *&P.*8S2C@<Gbt@ [ 4-"A7D=U?^),c;m7c;-5<&0h~J`R%[KL#m#Z8Zn?.HG(=hPn11G}/ {xio @@U* :1 )>;micropolis-activity/res/sounds/police.wav0000775000076400007640000010746610724145723021152 0ustar simcitysimcityRIFF.WAVEfmt "VDdata +',76)&(kY]t|ZCIc%-7>EP^igO/(DRPE=AHIFHZr~j8EM4 6JK<+0F[U)!@ahU6 -}RDPWK)5[mfUKRblq c|3R}o\`q43WcH #=\ki^M8")9:-!*'" +77%?U>GiA}|% {e0Y_9`GGgN ' 8B#!dh`rpbi|mXJEKPURE/ #2- &DX[N6  .. *83!  +1. @XT: -- -94' &7LZYE#S_D26" *@A3 '2=EHD7(  -8;97:>B@5# !293$ %375/)%!#"  *  "*)! 8qS 1D7($  /[c4!5ewK**;@)/8, q`^t8sfOpgG*#('  5^|vE8( *^oP!;:" K]L_:-QfeK& y| 29#',# '.),0      "  /=;* 15)   ,+#   280#+?MI4    $" !  !*#   &3) (:7 #)0   #&     zQe3YHll]j*[Gp"6shQl[~XBcD#J&)8pI=hgn:GS>08),@/Tb x HiX9c(dF<, '6z + aA1RR QDy1(M'c%dN[\q[;i6j Z+i!PxU$s&V U|ZJE:i ! j 5 S2&Xx(Q / K x mLwN`p|bLNUKdtfG0*& i|tkg.lY9GCSssoxx;^CP=*Sq_ {N'p1vwV*Wf{*/N:L@(Pmrhq_LmB5Tn&[T 3!5.i_>:RL4!H5)C;+y]d?s t-j-+.[ [HCbrmDx_MUt8cj.<,3PhK5g.N`|; +6!>M1})S5][:p^yNlr2w#MzK"`{FYr/l,k'U$DC)hk2M b 9RH CU*f[TUF Y|I0a 0\_ [ lL| UG J^%}VqG*m } VR V Q 5 8  P&V[m4R r=#  =   R \Jt L2^q!r01`|n[z(;oC 0duyrF EWlJKBC+pPy%A4}_4!bO!o/ @ G : C q  =  i5 )T0U%1ތhEH?/ l t M@5p   c?fiigHW7&D:of0 9  C8`/x9L_BZEtL*a [TNjF=&i7l{C]?_xqNk L ; c o  d,sP KX&  ^  X0Y>&ychX {4OlFCGDOQ5k.S.<hxi8l ,}xrg `)P ~ABk$P2S"-FrtAnG9 Lt&^#FDyo`2L 8hX Tqjf o / 4xGiWR'(QhQB[[jUd'v2L[kn  7Eg6S:% s(dvdF2,25- dn\/-fuOhP"6oCXGDr)ZL+]gI{Q!i" j ScJwM8Lh* 4Br%m1h? g{?j rpO/,|Tgt&YO>\06G+,Q~u7C1{'e:2?9S,X2{s73k%% 0*mtu=Rt{|X#p`#BeJ9xdvE{$ $sVj[z } L Oz1N>[mAkzqDf\TI,^SUFC|:  + } Le@MQB_I  WOEYaRF%n&n1AAdB./A t BUF]#:ibztHVZ6myvL<+#ewc+k AI{5  OR; ^ 9 < e H ' O  $ Sw( C  % > Xu=gN:{+߹ݲ/  m 57gEfZ8e,  ul`0svK I^vV7 VgT>PH y 5 ; ~  ;Vj[YH6Vh2sQ43hi = ^ /  ( N , a z * 5 _ 4 @ 5 = n 4  e & f 9 q ~ B$Dw8(5h{ Zyx *hw<> 'v(7grnmhS%wGL 1  OqYrl4Z%"M Hh(h;uHNb 8 /n"3L!_Q{ xX&zB >pxIHIQp|n&   .$8.gE+.5x8  ( 7) }  A msGNj(#(|@?>Lb:X%M|9WFa5Nfr@kR|#  DY D 3Q}D{.:Q5  {B4%m"h7V,FS7Ypz v*K , 8}Ldc(o 7w_kt%V U g Vx(,o2iM(EM E fRhVbLs&q1I޶A x=ް_Emc%J = ! ':Q&|Si:p) , . Yh \C3Vl/^7x>$DHt&k/ @ 58&PmIG?i\)H7n8N17 o [u G&:!tKeI83t%  }7^hn݀G}EGBL :;4[= v$WmrN\u 'J &  J}-J\' .c?+Ckvo-Rg/rZ Twn}wToW8!g^5w)LkH4 : s &   /Tq E  v - q  i-_CSZ a`DGM^B2߿5)\q*lXs')  S  xoB b T crMp44kz!}<IN0Ya)tYR7iO- FHBs918EeTgkM8Bwi%}3&lRofyIqw{[Z:Rj'7y 1p8X[xP~`X qiZ*dG[dL)*9Y8-n{% g nbQgmjMYZ JW[|n6Ruqahb(UKa <{ZC 6?7VR,6=?>1<PJ]iC1`$YGFg7?DER`mng}<mJ@&N%,Lu0y{2#C!j(0 ygSt'>twaR,th RCkNu/|7F*jcGQ3pb4mcM##6+/p 7^+&Z TNu _H\wp2iwCoUFi_PHt/[;|J ( .u;!/ oZgq T>A4Fbees|+Ok0qUG23#)zZ\"K$H^"Z;26N}EiMfrpB A \@M01 hnp(|fb;f8bsz+7^V\\N'!j?#qz9Xh~a8han1QO5!FoS}g myB' r?_?F(>v gIrkkrNNl\p5r|`5< kQyf4XWQ(gXL <L5q/|_-V&_qbx akO<#6'mE Q8x;QWZ5=3h4A~Rocw{''2k{/ o`+pGf$}6eWikp 7 y ? v n Y @}l^HX`mXHNRU'J Vc\_M=/P)o<ErA,N=0yJ+%` @s)  B u [ A   n b > fq   Sq{ ;Q#?szIE93 C[7baz:e(vz LpHu$m U/y*6 aE(/q,y.KpO$$;l8[= F b y  dP +P,  T 9 / X>z>m?';mFR,=`UEkDn?)2Bsg!G{w|Jd hg8w~X!V%bR#^&X^w ( ; - [i@Dt{Ur :Npi{W-I\}:DdYNa$`V|1 . %   %8c"]f 2-fkDv Zw284]%A%Rt`GF@M#@p2>32p|Y;aE{g1P+ y3BQDhg&OhA:|W4{\/Q u:1+'Lal"kIGoMy\kcV".Wmh Nl{Zd72\sZWRj.wU,yZ)V.'4H _ g ? H U @ y S A]?Fl}5/$Q:o [W_Op<.V~aF`%'k^S;Q^ 7,H}2qM &`iS{] SOJk`R[7EG!eL3<Q@SN1`=-Z8OVK=U" k*WA&;L9~0#WH~jQ0R8~X_']sA(&Lg{1M,Z y+%A7okL:s 2L g+.UsRH{u+@:$ j*iuWxOnTC$L1V'8~  ; Ot;'%9y:Hu|W*d>F.yXKNxN!XYtVO|<1==R+vNuD+s)Gth|'6TP,SM P;2|HkC_\7`!w#>'\Bs=CRY^8E[ n*>`3Y|v>Vk6a"Nxhk4 (oiq-Ha#Q$NN` lDQX>&9- l}<'T. ;h?{K|h^ HLp+;=-c^{z>X~y+- ~p3@Mjk.eAcy z:&tRc{W` (y9R .`.2;>isIY," L`q;Cd<@p+=Z3|l%*!1r; zqgdWM{G :YId0[6c$ai:{\?@R{pfck|5GB,/HC%mj>-?\\1 -,8eZ8VG$%BP?7HA,;Zhg_VM@0#'9GNH=- 2a}J/OB +/ 11#.320*#nLig4};Kc^K8+ .9<3  (71,7=8*)# $SvtR%Dn{f8"N^B4&xcdp|@G )Rf^> );=0 FzxO( 6dd425$"L_?:ZMgc1N~qKO0ntf}Y~y   3F>3Bl]3':XidK.#19<:5.!2`@l&J[O1  !  #(!  "  !.0" !"!"#   &1, %  ,50 !  *CB, !'   $,11-% &900H;"*!#*#%!WNp_CIXAG <uyNSpVN+ucX1'*0kl%HNyo@%IJKClR|_76`sK5quX>2O%(I-: " L=}-O) &CktI]vnkttI:0yo^ObD l aTFh)9Y2sq"NP{sS=#Z ~E=<_,V9VR1ie5qGL})MRruyjdM=y7o-c'.z   N=MzMrnr^\+XN|pyB^J{Vk 5s Ns_ ]4!+4C4#^ih.SVU>MRF 2 } Z# 6 n%h\p H p)Nlq`> 'R fxlT[A?FM8MpbD,jZ`ARCRa  | | a X  L[M >Xc~J|` Tu O<.b G q , B 3 ^/p,Vv#v֋ȫu[v$oa ` n5 ] 'A#'#kA Zj2d0uE+vJzQN]f f3 }, ,]s X 21# F(m+er ;^%W|Z!}Y 8r`Y0 W z.J&``=sL(O=x)zDf[0 n  h *   00$]Vj6C(On[S+XLN|nQb  ۛfц`mue & H &>Y)(? $ ;(AN3J\>)N J M"{ 6Ou= 8e  } d8m[L$O5w# m@?Vx^R$Ua-zF1;u9M*Nv7J~hF $F l  @ 4 Q  +   { +5DYb5j(mJpX4k;; q }x&Ѐ# gԈdeB  N`"ybq ([ ?  -E}C U# i Y g !b&|tX ]Tq%#Q  }E  ;h,}b|gxNVl%< D"x>t |G,3P$rp'iOd[4g;8>M0 : , D Q u ^ ! #c:C';!N :h 62|I28W CKn-rx4IM߱ѢҤT}KNfHx= $ _    ' b >,rQ 1 g!;N8a*df}O e8XaL_p~%$N`u |6m^xm4/m-'HAs=}hAU6/D@(""9}I@Gg *io#;FN MNkJ*0*Wu'=$_k_["d&Wm6~: )vsF" +  w  9 -I|?! ALw4&@Y<rpm& t& . ~k=|~OB*"Kz67\DotFFm!s}7<0s[ V%4`O`sf<C`0  T|4rj(A*#a>Z[BqZ=AJH fMJ|kto(u+<$'pOyO0Q#|a|E- 0vaT e[}Zw[ S>8H.e#!,E[~B ! -, Q_kQOp#V)y(f@uh-^b]-P tkPZ7@ol(?Ijj3i/4x6; x78>a,Mx(&f)qH`u+7.S!7iUS2C( 7a|8Lw7H*Ml$U gAEC$]R0=>Z_$z".l,&Fmq]Sc. /B#C %5 V>OE,YD"^56r!]:{;o&`+?N\\,?rM1 < o Hs=Etb ^0;T2&ex$L?DwV 2 Fu^&0nTFRY n(ka./5FeBqPA  `$k f>/[sE%sUCyW;": %nt"<t:3L;-, iIZOi ?Qd |! Q6lbaZVRL"]F3I3A\B>bMa(>FGw6""3EP(Bm\Crpv N4BP!oRH'7YI+n&ENs/b6XBV"qv[HgwqPiS}>s&{toi8x1n>6;MHBy NM2lOEOg@m>WCJXIZ^G881,&6-|)k \pddy R9 # 6T w O^Q`oC86!sB9>]wu 5QE / iu.Nq-Dj9d1guNeKbZo.iwQeVLzcoN/4xA n-&2:Rx] k6^7Pwjs[p'!O7rpb.]G11)u,E<YP`?O5)~ClrvkLg`z *{ &QTxpih/i.*G@llh{ZlrMY7^^,( m`zs1/dlc1D,; 6*)7.4S/s$U*pxiA3OTk2%~^'ReyLgSbn Ihpi|;/^Bqjk)cS Z 1^;[[Jq_Q C9cVDHEW@EC)r0*$n,G=uwRSi>K$@)a ;[pr%LU'r0 Jufl',:*V!Yc5W/cLS5w 2z@<+:%@iS` |7&mM\m#EE5\;r ,b4>!z?^6%|g5<E{w [T=:Ai!ho{W"i$F[@)8,o[\=jj$}Y:HI %- }Ho2Q4)<9clbkW0k1k4 EA`)>6T%]ok] ro~M$Mn)X_,&Z+c)(GA^`&if0cuxtrVd(> Toi$P_WD(~-H9no1,;3(<j-8_  cA2[p#;0Rj , "fl]'W^z1|F)n*w.H<k hg<E./zgG.gY 12VMX; 7 O_j b!Tk, G80@H{UF0lo|E{ef`%8HU> s8&oh1@f`'$g&& MfFwE=<$+SAgt_mYPqf O.Harc#GII`% ZoBt&:mI&@\]GgBcgdSOj .P&2 UY!50@ BQ,h N %Qzd2 5KPA"[xkC'OvJ>h*dV#A:E77iWcEh?s~%oK}G */7+Dvm1gx=g@cQ'H>S,A@RS45YNK : 2,i_{nHBc}#4WUL^!)'~ujhjmeU94vB^:# }rs"Hakr-DPL<16MmtW?7AXsq`TVbrzqaXbx|\>;]Y.hvI "( ~t|}*WtrS'+UnhI#?h|oF+/rE7O`9MuP|BC53P3JM5 fC' D}\PXcc\SL?'wk_?K}T04hRVh{hfz>e CgO\O=?[cIR0`mct.wN_;J!LbH%\3{X&.gzd9'MaoKt+]d/|*cqzN9Y`$*LOV +NS!^)7 X8i6^;|yqK _:Qu5~ZIb Y_/v+fFFaJ'5oA.qn[^IaDo|;`?* J>Q6"WfU@C]||ka]^fu7@5$+E[aZU_{tN75EW`XF5.6H[glmostnf_alvyvpotyxobZXYVI6!&( .ESTLGLYcaVOR\c[J:7AJ@$(' !"%&!,LUF*  `!Qp_uOOf$Jemir<r]{[TcslF seZSI;$  +L_[J:;KangO1 0CQ[a`Q6#~uZ4 &GS*+9>4 wF&) FGur(o:";}[*f/]7ZI{ mX\py^>-08. qY< '8=(,5+ `= v`F02GMC/)9@CL^wr^OGD=2%$171  8e%@4 BerfTN^$y`/"8^w|tklxS$ ~\!FZG}!**!%0'mpw=Z_L2%,65$  g1?K 0rZ19m.FJ?1(*?bg:/N~a, nI<<5'Uyv]A$ /P"#XO :VR*=0@}'M564c|neWKOk9'(,8EF4!zj]V[oR*/\z_V^lw tP NnrcQHE=-(=IB3(,?S`^SIJazd`bY>3KD$k[##V}rjubCMI`3w22Pow[JL\eY79uYBHX\L4$ 7Xly^ AV< glB&54+;P. lo B`l4/b-#Kws"QmYtj/!4@<8;A<& %Dh|`?$ # xUJZ|X* ',%(7=8/*4Jex|sc[`sp\Yo$' !'AZY?%Khqj_`ph=.RfY7#K~nTHIUckhW@-$sD5Egzk\I4!(Q'' !  "(%#6M`kpoeS@6<M`h`N=34=K\f`D  tvtjkvzdI84:<2  $7JRPKMT^fknsy +7;1"$:Sj ,?B/~[?*'6CHGDGPXWF$1Tc_SG=0  ,=E?.lXOLKLWlufSCP[YK6 2;0 vmmicropolis-activity/res/sounds/heavytraffic.wav0000775000076400007640000026277010724145723022352 0ustar simcitysimcityRIFFeWAVEfmt "VDdataeH m<(.?HB739??:;@:u::l7RM:06?A=:;=83Ai   "@VS8"=JIA0,1)AD?<<;:9>CB6-4U!C: ~M4/7=@>=<:;=?=;8:=BC5@Rh'pt2+C3J+;$9Y:`'% C > 8 > H A  K_2"T`l-?Veo{YMoeVT@r[=Cdj%0y[3ze Lzf\*`T?[UQ.4mnA27</ 5OTE0.Cl=C>Ens-1`nL JD_?I_4?3 5DD>>CC5  {K0/9@@>AB2I)%0;<4++6BA' 7F=.*19;50/5971/2784./4:82/29;4**4AA0$I A[P1 .[3IPF- $APJ<38FND2,BrlEMwK9;?@=>BC?:;CKE. 'HVK0+DOF94<HJ?45CNK5T1,9<t>7DC)d-]Z<#$K'FAl >F>@KOF87DSO>1<T`IR!O#y.lYcb@Fm{nVK^"zcQS;DJ!S/[])e]ovD Ken.4Mn  #:LP?!4PVD) ":JJB89AJH9.7]O>AC1bg/1T`G5DE@>?AA?>=?DGC5 '"] SsU 82 5EA==<88=BA949CG>10=ML0s\a'fLVfgco']uslx`j:C@>Ks$I[VH@DWo"#}|~8>f:5;=>?ED<8;EKD74>LL?26FPH4+;SX@ (c99?0j6BzD+/3*$LG2'4\[3>XF(+DJ6>w1HH?889;<@C=0+;?8!)?GFBB@80=hp1.Q\I.*>TS8b:06AC=889NA]V5)a2B\4/<>#HaU22c]3'7LPB34BMI;4;DD?OZ;WQ20>HF>;=AAA@AA@??@A@??AC@==AGI<% +@FC??A:$ J"AN@Al !:FFAAD?)-?8  &=JL@(T77@2VgI8ce.sv{znK~dp{] F .0'#9l[`_ F#%?RM6#,S?m#CC9Hxk@N RBfU/*@[_@ m>+4CE>GsR?AB=9?IK?24ETM0 *?FBADC6,DLF<:?>(.B82EKF6 T>AD3 l<7o 4DB=??;47EMB(;zV0/990;o # ]. 1IO?0/9<<'cw .so!u[?&9  z m    = ;F0tEo */)5$= !'opT]W[X0K 0?EO^%}]nvD2mhsiH9g7X K;E71MU !DPF-]b=A7*&6]79/:l6B@=>=:>ZyJ33@LK=# 0?6=OK?9<ABB@@?<>DHF5nE8><S'+EO9 ;K@,+R 5>8>_  &;;%7ILC3,>kq) &mk:*6GMD77AKK>02N8_cEsA(0ERK41B6 E_R3#4U_E ElLb2o$4iu`_~ a u $BmE_Y;)j5geOOll:%<j|bF^BDK=hD35@A&N*+<; Am je|R="27!9nvfl:jz9C)9zT,*;6 vF2-/5<; BY,iS8VWF8:FMJA<@FHEAABEFDDDCBDLN?e9(BOK<49GNC1+DtxH/0@IG>9<BDC@@>0-1-?<;DL? 8:'C#3 c<38;98CMC?JC:9:;;=BD;-.L[.#3GJ?43=@>+-Z$,]}/d]$    |<)@V;g[%+AJF=:=EJE5$<='vI7;>-P/%ExK wi+3,/;@8,*3=<3+-7<70-286349/ 3526>:+ ,Wn1_^@      OL_'[0=JF-G[9J?{{9s ;G9:S[B<0{h55  50"A; &*PUl;;=XgB3/&$F^v',|jI0H]O81=;"q]#>;9=*J|c"#t SrE04?A<IwN Dwj(7\:DJ4(WwOl05C(15!5H32d\ozU{"Ywpc:O  nv 6D=.'/=B7!7XR%65pr_W\]Hu2"I\p^;LB;Y)r?5b8;C(Sc0+60.nT^b2;7s;L9 ; gp0fjxz$8a* pO;B\8=r=297#pCl;_D4#F6M>5hvOJ e7$Y  g3d{K/QDK9F;gE1"}a2u  ]R0CEJ:gU!Xq$~E{ A0-i!`^HmY%6.bnLI(7>dVV .%UC`v EVvbD/#yTt^U4_$/Hm(}Dc 8  3  o  : ? , SMF6Co\8XT9P W   9 $ L*F5(M_TWI,j2>4!iOnC 3x a 2 _ [ * [ 7T8h(I_LrYk j m  Cj>S)\CMyE&.%.S??N?f*Bqi;ZJW!!!K{^ z # W T eo}B}{M "sx K = r X vG1Xi\4>5>$eaf$eZGX4D-~O=eqdOcd nU J  <+# 74#mzX4 y z B < 3_vxr;:|kC@}3zVT\+-WP08v*r}Z[|#lW W +`f Y (-Km pme_PgW Z N g M LW Wnpc+DMoU1HE6Hs(Q885;\fF~#Z!(\4bH]- &'f Lz (p (Be2k+ L k] 3F>gF8u+ Q 87>(\IDGwy j3(9[z 3 N& UBF/u l  { N6F dj J^d"aXjB5u3j\pR|w0o LBV):e { E \' goPES-N!k ff  s 7% j#q}XZOC6OEIJh/"nXRZCf.v$ #+gru ?s (~I eP.!8 H @ZLi.pW$DA^ns@6Ur-UMqr=ZO N  S`aH w}_58&*/  6 y N=-c}&? P 0 ;q[@;iw7a!J6]Xn|.-r6o%d<HX- -VL8:^^8Xd(_'.5  a b 'pX&Ef'n 3  E ,  ! &\`,*QnRAeJ3;|E` Y #E  x1,xYbic p =2! P)1cjQ[;0~ Z k X UdaN9(r{OO<*:Wr a {v{R>R)2D 1 Q | !z  d@X~}li0J v  EOJj/|d!oF'm,mQ.q  O w'{$Sp~M=UI2   V4  ]3GLS4gD5& {' . w   c5e!cRu%%DQ&FS%":[# cfX( 5XL'G{kvF;4*cGi\.{gw:*Y| K@/0 T   M 8w? 53> G08vNU 4 Q l L+y9mXi +izm0 =LN~gb%`4'VCWuK9U Ojqg, VS8, z F  J k wcdOF.90)9H> Pb*E:\R|3!@j>dBf=PZ wmE y}<" X_]+{`j ? l-@ f X o ,^>O}jj@Ix U , % m  V`JV|R~o ?8*)6]doC;)   Z+. & 4;* ;H>l/b : p r45 8 ?m4$qN K ? f 9 :67rc{KD1'M3ht;]8!?,C/d$?XdKF  >_}ZBF DArM"## hO.-`bmURq*]S/ dHn%&7cyGR  J ? f e (ZCLj7]g.9 `39<}T"jJ 2 H[|/R?P8pJ *^8LYu  _<=+WP\;LmOB)") m\0:/fpt j z 1 I  1d|2+E$G*\Cr6xBLd[7>(}sj?$  I XPV,[CY\T"ns;XX1zqEc5j5:VPH2H~.F ; W C  iQEUE2f:! ONcA.+?gd*OFJ..;/ @UwsxHJ+ed: S" ,I 1 D P F  Ev1xN~J(6+@K: & [ P   QTM P V<|.w 4er(I,^A:8[M1)0^^ |]~uv!@!Gl!p94{/ Y Q 9 ) . H f \ 'D\5R~;I5r R 7 - rV{ ,{=4LCv q%D(Z7MGF4W !G)!sCp 5  QcN|) UwQh B G + I ; : 9 1 m*k$6 \8{ +D * 5 L+BTJPjl&\h4~H<@/:' j1&~J`eLjk F- "zm^w5~MeQ)j@!sp | ' U V Q B k > JD}-Bv:|z6! `  N 1 H J:SJrOx<NmHzhM`G' Iq]qq[dvt}p8Qczl<< S, 6%Gd5Tw; Q'_/ 4Q8 ! ca(e ]"aUP  6 } B\4 On>uXSyCz- o A oB=() [1=BAS#tE[ g%BN70]V2dka _  NziF H{GbY]B0f7^ q=] h<NCrcG*> n 3 MkY'}^7P{Y N  E #0`z5H?cskRg[_nX>J)oQmo IZ?kC\gq`~#l+ ' 4 |{g !)t hDy#6=y u 6C=Kf V]/{[0' td d4  >?a :YJ-t T!2c{ tY& h2gA @BU&[lWj:;"WZlVFld0  sg=Ch ^  74Ps.Y9O(F35k- F  c qYB qzdZl. P,!   A F F [ +O . j 2;.ONi)kqVq O .  A g )x!I",~xUlZEr2YBXtgq Qq * =:_ _ H G 4RQT{,/? 6EM s XX@I#S W ;=^yyI;*<!)`1h?$-0 j`\1jT#y;A4t_ iX n  w2K  i%o :w { G - fd*o %SgNo&1r R esa-ROz0mHqyud0EsP-[EP/DP_z sLW eLc ')v  Y^ !<-oI"| H>r!B& aEbs)m(MC\rsCV{`%%}kK8 D NsCMM :17F%#h[nD <CvbOuuZR\UbTeM2zKE9Q-IWZC\QD^ X=17EKE;7>GG@.P9fi,Z,U&BA8C}J"YmF;>AA@>??A@???ABA?=>BGE9#   ?\Y9&\.C!p!2LIATL""A[V5  Y=&!3V/@=:P |b3QH. )@K<BuLRbVjbhhO2<*-+G(<]pH>BA. '=C>?\<IGCCFDA@EMM5!B</E^b H&2E3aC@@??C@/ $CQGA\5E95G^[3p< )?<! (<BA@@A@>>ACB>;>EG@55FXSTx@!$4;46Ym?277,(3CE-LCQvC('3863374-.Ev-DE?:9;==<::?FB'h=./333796/,19:4.25myi0+51/I|%U[u8aLn"E-x*|M   V 4 2D<f 4 `$A%FM}^%"] 5\K[1Q 8   T o 6TXTe%>st`Y4B&:hzo~t\=e+R>r?P"Y~|mtw&GvL HKMEHMF,w+ ,S,6wh8IS_:C/ cU[T@]uH6;A:2Byw}i 'Z%5Wuy8Wnw kt$Z`,mOw( eoZ   s3RY=$'A}d= ceuaN^0_jK7YF5K6=U?Ip /|n7d/]+$8b/b\v;=L3m/ lyik@GdKQ,:W9!vv  ! ~8g=,R2O8 EMB+>V.!611@I7 z6B4?sS.3<$ K[DA;=B(i=FT<!<6.Bb\@6ty=D20@E(8uDJ~ JFo&3SazQ$e: D2LF1?5B)9bg.~+/uN%gC639T:A. CV;:@?7:ZV/5IIA=@@2 .MUG2/?PP91X`   ;xsV>L`aC5.kjIV 0ne/  &K. ?r.~IAl>|vb7Df5"R'}]evU>;#61LWez|R)19K<Hmglf_ehGez""67 5[fYO`z_1.A4"nsZ B`s==ON1bS+$($ #Kh2>-1^a<@[-=27cR0# byy<'6('WVeYTez|XdPYfd^xB8gywuvyummx{mbmw?HY8_J ? 30l[[{xeFl0!+% sB5zOA4_  O,\m)bcucbHV Y{IJ|V<5, %>b; u  ! L  UYAC6JsO8U3J/-BV%B&ON7@5&l NE8a.A[C!k`{ vD/,EfsosXuIk#1&j$3P%L2 JX{5 !1PdE!w5De(H33T:Q)ms> 3PCAh9]i7+%aJ|X2,?@v1.Vy{IiaK. 9AaLl^&{,Cd /{ -aG8 ;  # 8 n `8h$}F?c Q\>(CrG \+"3njKI\w>Pk ]\:{u|o`N"frY{Nn+,vR` V ' -b /kd2*}g-bn X8y[`Z.\t+99-8^4LN'y?ugj\l'Q&*a4Gdz-I+d~h)iEujDcZg'S977&z  / T rt! Ld' znjm$a. g'0WvU+!-#QQB_EK %aq\Xq1l[U|\M/8] JN|}2unL<38F9dTa67p)!: h`:a$ATK_ D [ w   LJe# -OEs)=h(TrWPZ!`ag*\*stF(b!_X  TrEOyN}g|NP6J)4WeWB?IPPKCAu*8GnSeDLiXe Qf*;@. 2l6e _ Ch#(_`0FJ\RF<;GD vJ<+KFKF{c@NT9%[Iy(4[Ed?HS6 A7zBAOBY(*4##aooB5cJ E hY4y O Z W | r  TZ{U}\'+xk*c+ak 0?RU4  IKIa`FHBc%Y295+g.o-P,=dVvJN}WL;ZmBp@75 R}z [ I B m  6kA$$DdoJ$/:%y@|nP'b>sS7JK@V!H $-HA,-Z+HQJV~fc@-"}}R4*0,r52-jwhfvl![[\ 1{!6- FV2Zx >g}JLA+Gmfg%!tzuS(=>wBHT H2,wy}L@NC}(Y08A8 =XE*=w{30:Ga'= t:.XuJh3Nk0Ct 7IE<=A5 H(!9lFGt\B %H^7%1<x (_W fy^bt}vw{4QN;,.AQK) *<  TT/&K}}4`8>G0a*R.59~6 jU[dPffphK+";[cOKW[v8&IAOC/NBG];&9%u6mV>>+DM@Ih ,0V:^ {v9&4PRA6:BB>@KL0'hlrScrf1/-'mSEc}v~%?9/Ez"I>U'V3!>*%Yq{V/^YKT`3JE`FWM>GOL%n/{n>%4LSJDGA-$VR^?LLWj4v}B;DB::?6&b+,\z; .:CJJ;X{fE/2LZpCpp;}=RIMcaB7DP3Z]vfY+GqxemX}On3DCB92rd ^IogE1<SH] /S!4e&r$8;69[$*"nsGCRFtRE,FZ < x~Tdh@tz>CiaG4Lw<x4(=0^.a`+|imwh1 S7`S* b1[O:H4=EK=KG"AbP Y), "i1T> NqdILl{O Te+ *&\<$DabeL%.H6p>gWk0wV|qvwCh7HdO ]MqW7C@9>IJ; 2fF;G ,p?ShE2)ph{{peogG'+} hDC1;?dmaVlVPs,Aj*HsYrcORoOrvlvGn  0rTkM/6@;6Gt]J(9D %&bf}I''PMX Jc92arL3PT@VbL)K2kOo~{ihsyyx|weXr 4,"U d?zayZ+(Mt$5Cy:1B/\Aul2h@x "N%IMbB ~ ~29 ?:]xve[`]:Z$/WfH2ghII  :EBN*(5lmd(9+r *ul/CbL9U)>;6Cxu u -E22k%#IS;J[% 5~IOiOY)DqN | P G C w*:B1R ^ F KmuI H=H/O B t X ! ! >  h = !(+z=2,?%sC_,Ei >C`Fqb `%6rhhZcgW714%/iH.6FK"s%Cnu`Jr7hQ9I6*&pNRZw8"/gk,"$7KqA b cZnt00gpWbx3FqeHCP:h@6r{7_3CtyK?\vKjHz"ygn#E.`$RG5Qaiiwf%59$F_-E@:<AFE;' *~S:_enEv >@dHV&m0{>Z7;]wpW I[q F  4S!Wpg|jIu?@5pNlSZ CxcNu-G yK(mG+n<[ =~ ~"D)9>]frp{Bfi\afcadjkbY^jsfI-#),rP1&hAygOJ,IcOx:2"\pELGDFE@=BR[D)=x' CR>*JGS[vsi=`@PR>~I.+2676#k-y>@#'RcDNJ90,b= <  ^ C H  F @ 8 I = _ 7|+S +*w@D?+dOLy= *T 4b\nsC&`5?29zyW16@"?}uY+P*!,7(a.$O^0#)) v?u)_UGl;B^7x>T~0$041l42H<>kW_aJIQA}E8?A,5 OmR, R,IMGCGG1pH1 1E6w2(K_M 4=Je!L6%hZaH`2|j rr?<[I3'H<I<  8RU@)*L"L[P;5@NOC9;HRK;4>PWF/-NI[VKDHMNLLOM7S@CF9W?<A>,l#c3'9A;-(1@E4 ,?>4.0697313785/06=;. (_6:?&5GNG5-=hm:$/IM n>?N7t!JW< }qrtnen6YL,)>D8+*262:`9+' XO:ZpItL9N[LH,cjR"2 ! V Uei5\ OiwOseA69"_#OB"sGB_b k h  : : 8 = -"IM>;pF:=<42>QP/_7C/DB=97/'+Cp&;74Gtt2(HYI\1!*:?80-27549;+@~[Xaf^`~7 EB5Q>]R )4$G}]v{KD2A<s2|Dr 7V=IECJOAyN4/=LM@25GWN(,~-HMGDFD<6DnR\+7T[AT,2Q[? ;)i:"$5@=/%+AL; tpsson~,=64S)]d?I 5DDA?@@@?ABB?<>DEA::@JJ9 \\'%FS=5HO>G7UA!!O w7kmN5Nz\P% yd<PS xa35>96R*>4,>jS1 5 6F?0*/9>6*%4Y.FJ@0*HG-LYE,(9LK9+1DMC0*8LN9!&Oc=L+@FCACD8>TN;/6HQG2*?nB[U?17N]Q&yF),BSL7'1[ Ekf57]^E W]F2RQ-Y'RMabKH\BOaMK9?B,]:W/7GA {hzbrtLQ X=NIABD:!M]L2*:QT?&(PU?_/HMH?8>^tk[cDMQ-TgYEAJNJKV^CuE05@?:GtI#&BVO9,7KRD30@NK:/7JRF( e>04IH/o)IbG02'5.!!')&#""#%#6t/caGE{LAH:,+3:;4,-=dkP*1o xHvga@R[9-:0V&1Wn  { B>)M y Z ! LWN$tCoqxHW^/i?biL-nB6,hX1sXf>/o;4 F5N GH7eP^8:!&#E3E.?&F)3`f6 f9E+5x74M9F<>;?s!`uevyVU=/o05\,pC QtV%b*= -2d9$ML6PZu&~$Va \vkm;@6Q o_|m5qCQ. WwlQw YCfvzENM^hfhqqQ l1X6h0 ? |9. >  }xN Y36O?P"#q\L p~'K-ZqK 7hi)VN?0<?T@N' !}pMQR\zst|IeHF<:ZKV-] c ^\`91 |Y+2vckB~-NWB@H>Ayw5 ! f | P P {D5A @9B, :  u a a la)B!)S*8)-=5 ` - P aBFp"'N@=.eP>g*x1\yzsu!Ka'AWBeL""/XJ LKw; aiBWD\t(kW 5 7 8w#C3#W6)$#0#Dw A ( cGYuEi{m WL,.6}{mHZ6f7KBm0&RK[\ X I $ s!w] ]'~RycX [^SR25rdt&8 ^ ~ l qIa$n,1a5E:  n4Bu1Hb/97C *$^|cv _UfT]\'(7T5qZe2e7VC 5 v d F Ge+,_ZGj<|/'FEn&u@$sMcSH~gl )Tp}(fpZKc-KnB7  y ; 3 K  0>[&JMia7#V ,mt& :> RW%Agi>=l> D{;E| (5x&|JSxpsFYtU*zV,2I8MF6YZM]:EJ#b4e`am)]S'p!qMn7$8h<"`R#~C&}- L 2\ZEdT@nz8?}\s,2cr^"@r%DvYZzk3, {wB,N^$d+5!/fvC :!~A$9*wGTE'  S:4iw{Pd4BXJ`CqYG83 7Q&a_7 g:JU4}"mxgMlxd|~Y|}6B-1/ z>! msTt@,qw: A  O ? b  +9B 00(,}2;$K ;p`w>3d(hy?T8-9zz 2xl(2.1)x>54JMN-gU%horcSVjlHF^2o) ]Q6bq K|1 Kv=%  + {,'$=-ipxA,G9%D%(=39wKL5JO/U2[Da9l +dOWhnWG](5X&i$hA!@A5k ffxVZE|=L#K$M) B r t !y ) %  X<,m8h0|spQ^uW$X@K7Ws~A. ]M ?~Koao~*|&W/Orx>;y#iM% o4 ~}(Hr3`pkdkpT3!W\]n<)g[(*va_E+C6+u8') W s5Dn.N :A39g6opK#&I}9L)d\]"1^n;a.L=W :pm+P5O6+~#_Z@X%6$B* & St 6^fvg5 L3caBk7PrU&-r+ dX;HV3f (HM6fth!!D8$@c10fkl+(AJq:if'$LQfAn#S6lajIpJ;D#U gN2\{Q!LP;So\aD4>z W\C6\SZ~^'1JjaI:@Xs|]?5FV:65!5>,U1 \0#1IPA g`e%dIThmhcdc`^ert[;AM {w5:ZB N+X\BHjhARW h8TT67^26D)@LJ=04Rhk =!<Mw6 6h=EU3e/2lx~mcmx%*-qRe{K6%ePXdQRjW4WXQY=`$rqOzn'E% L_O+ ,<82L [WwI3|R19_]E68ELJFEB0|J:AG5hBKz\-.QcG8w`fJ0pY6*3K  zAGPR{H)u|^0jC:$[R=[p63.Rp:QL:;w   > Y 9 i p i tc+o[l+Kg<5*$m=gRp}]*37;$Gf;`u6{@EuB:hTYdrFKn6N/RA|:b  eN6<B>:@II</5VVw)2 ,'D`yI9DE:@mZ {w{*hegdcga)9;xB>+^p + < ' A Of7OE]hgeW*5R7K BI_^l+1Zc#"Xz9 HC?l:C>k M~+0qN~vb GbS^i4dY4 H#c k ~"&6L3A A o5 u # X _ ?n pNJT,rqu@B(?^L[11;  X(.;aT,|>BR:BEb.Kv_Fq"F2WmAr.3)Kb`]gqkax)u &QK9-q] { y& sd gS~8 W<) l-<GXHD8tNJd_MX #TA2y(xl, ^?1cM[SrF;Z4a6D|JUANJ & Fm;sz#d Z0-7;vp4FH d d2Jy6Jm(3 V Hj"bf3fYlaHSOhQFK()"Tr}wJ   O : p  <A>FEJ-E]1~k1 I:hP9 6e,V\HDHC*E7?P$f5TnS Is)2/_&"}xcSj hps^FNvz8|bL.uZ;<(27 | s k  6QD4 GI$ "00, Tf!_Uxnk|mQ owG`/`,$Uc!. |@GzfOc{VRyvnx|unojHq_lq].lZ[_E{0v[45 ]RBH`&|$:Suf1|K]\ aysje:VST-5/8 5E=8PMQCak~+* xx/&BS.NJ$'BYS6 -]T;<@2M?cSz] o$yi_>5(*{]~_1tgw3AjBM3a_Ws4 4.0[56?1=lr$uoosst#_z$Q sH=DG3n:vSf?f8Emf}~W0ArfPn;tj$%w;7}bm2va-,[xl~FhM}I_RzPd~NAPD1&QbM$* 3ZH.4aKKG]! :QF]XLV-`5|qZxR='BQ?s^>>cw5\lOA6l "{G'*rE{sI3X[ >?1H# /A6 k bxrxyuposD%ua:/8FLF7%|2PpV9,4wvOldkeURgP mUw!q}C2c*C2qwHIra[TS?DtF7$'d <z9=% 9W59?7.49o9K>sXcbPNtD,4NR:V4CkJK% H d P +  6 A Mg[l}"$ xX2I*)|0,@QeRI6}\yTK4.o3{gwsRv D"vKkO!>9-G4{b_]k{'MAQJ|>^~fmS}#9):QG=><3)9enD>H8"sL<0]Y/M:Pi,O$qHiE7aKG| olf.96r5*hW^j|(cvy+ Zw).Z_h##:+yt%r1$#Kx evX<I   O[G7CDJ'($0Lb`B 3Qdiecbefgda`ejlcO7"'+&/|O}AfEii8 \ ; >q$h~FxP" iTl2n^IU>{OdD?PX{d)ivFeUbO%A~l8PO9f.W, R8T1lsp 4> 72B%9$Ivw,EAxn~P+mh!*Z/`?FEFFBFia=|c(Fg; & 1n| @Gux=C}@-[|Jd.P]YszI'$,"s vj}]OM;T3{P|3Ue^ .5@>X8H#, @s&b&G!@"<4~A,A:Y L3TeN P Su#(Q`ivyHF[JgzD)~.pm3t^SwGZ'Ay3+y]ly0/O.  )?d%VzwEwUFW9nk1:e["PMYd)G4^t6ztwhVb&uW< )lkR#?hr{SM:T|l C[5W6C*#t^HzRp $&O"uvWl!@HroQ3s-1VA"5\WB=m]L\POJHH:l @zL+<7c  u3GA?Y7LOB)*CMF<, {>)64z:R9TujFy_x"admr_\ba]dv{[+/} #o^EHMOg w{I+E0 764ZrB'J\ZB7NF@cl<i0s- &KuwES%"9HC=UU=CK9 V qJdP[e`]s0_rstt{U7;/9j :F;28S,EF@Lx|N?EF/S96=?.W" AKC6/6S-><4?gAb`;X74><% *FJC<<ACB?>?AA@@CB6 lX4&+7>:,"-UTgJ9 &=DA?CG=' *DLG<:>B??T;:V1<32Gv/@A:FqcA8=A>?EJC0 8?-6$!=>4Cx(<8JJ;,-Gy(GNF<8=CFB<;@JH5CZS5 c=Jd?5:>=;;99Gm}F6dW0NxlKb:dLLKex vgFda8MdL =i j >4+CvH :LJFKO; +biJ)*G`Y8!2hWL48B:   .@]TDBE8R40=JMA)vH35:99@KJ,j1#:G>,'/=@5++7B?$'0 okrvsufXj#NU8;wE"RGk`6*jtA1:GIEFMI+6G@@]+_nX5,Gou@s/ 9V_HXy_FMEEOM0}(4;g%"$-E^nndg5n)=.*R1>_(D8*L S/5JyI8>DA>GVP+b6*8FE@DO?$[tN0TTO% )xb[ULEfdZ{jUd-b0'lm,kKl2."^%vd: Q^rg'W,~ke8- UBFIB9>LUI3,Fjm*S=tB2{J>w>*_h1*6>BBCD)v9A?d  PS:reC=H08-#FZc\TC mg*EU34=7)'5EC&$BjnRy]UL$^oSdDBUx-'0HsTFGgX(U.8`yy6n/ o#:9Q?+IN|7?,+B[P% ,-E7a]CQ,&k.p @USONLIFKRRKJcaoC5FL!6  F")*` i@j:^8K9D~I7@;u<9VTywp8]2o+xyw[M{d6`9/('Y<nO @1%VKBbW7#1X pzP.#aoO*)DE vDL(C'JJ|J?HG/!=_F'5E*HT25?.lsS*yDIm 1B5}K:=@6-6Z -F5  =QO=39B7U6Q'muzfTk6:08LGzitta['5%8"%K.Y5:C9(*5 YNnrjBhW(DDEG4leGTN, W{AJld,nY2,9A:7Pi@" FlE@F?*#=td)&hyL>=;31>OP4j+NR1(,36985/+1kAdQ@E^[[q}xi\ _ . R O 3 . Ib4] `$t * aZ.OX-t F" Z "  p' >  F O[d670c%  F _T C>HV99v.   / M 7wsF}vZah]30*3[QL:|D|h?%g<j O+ f h  wjQ8q vA>#s > g p ,; jF5k(Q-bA1i?&*y? P x q wWVp`mlX_WuoVW!a0gq 41X>7.#.=ss DAKV& &| 9(/=Ats^ Ni   ( D mgz>C2; G   I T-m)w#X  .j \ K k4c;~Q`>{09P+F/TVx>'*YuS( YQkCP@GSDmR 2V|6 O{xdRxNM\ " 0 =Y #21b ryf:C " I k I+&BVB%2PV E^iSS+~X4>5Udk'L(  8 /Iy kI1P=r 8  D :u9<3 r,6 }d( Q  | LYvFozFW @ * z-u; < DE>Hy0@*9=0dN  \N G k |&Wx)g 0 p 7 C5!H;/\0= J  -CI3F~ E r 6 A#v:ZB'LcE~O/0GBw<[;zI~9x y  x6#} b:\$i.5g ] q cV 8 8 G Z.Q920- \  0M|bDgwTD*Auf f OFpT&b&?|9mPD8~<,yU{8\Z_*u&w?t]H ~ K/{Q= N-_3-efC` eQVQGW;by1{"DA`#l<1UNaQo>wn# m~{$<^ 7Ry+:1 $=PoG#=FPsvF  Ek=R i8@Y$n5.s I  S < < *%I30cxd = K24sa` ! & < [F(}Yk$2 h{3  ^ 7\w1c^\d+LD~L9w k"j)Mvw]B9W-_:{vc\): '   [ ?=+ -E B [ l e% 2weSSQJ  9  6. B/ZX? yVJ:;jCfb(9D`~n eiE~]Og31( {"PiH(dTLN7#l&y>|L#T4Onq i"Kl041 eT~_V~Fkp`, \F\k }Vz=l[MnD6rNTgp@:99#_ qFG()(^`u{&} K'ebCRQT`Z*e,0?A`?Oq\$kY0PT"%-!`Y[#R_>JYzB># }mj>I\zW#oE!z`yR#USCGWI1-K1F>IH8+2FOA-&:c*KQC?c#Q6:E9< ,@9-9in4 1MXH) K>f b[Z?B45Oi[I&CTL:19JQE& -FOF96=HI?89B>F,2=+b;5<8xtuussuvusrru+A@4,.6;8203774125545660*1S9EB=;<<;<=><;;=;<>=65Bj!:>,4A5   l@,1=BA;8:>@>72>c6??>DKE1lC,)=e V%D/=vo7=tS+=>8Fr)LNER@_w[d,HCTD$h=.4;;7Iwi/wxxx9NVHY{Egsm_Y`jngYUg Cj}~vpptvuuyxe8ho5dwkjs}}oeithluvsxMGE;L~7@. &N_N+9r7B)\dK23DQMA>C>S?BD?7:FMD3,?nB_Z=%.]i_<" 4PUB10CTN6'4VhJ8&GYK"JwI6F   `8,3@D?86>'!7@BBA@?>?BA@?>AA@?AEB/W=;=8/2P?IxZ]yT:4a"U[Z;D^GBD@5Gzy?#0OaR)m<$.IYJ1';W\=Tl 4Ula-KTKQgf ~<E@@EHDEID&rC &=HE?@A@<>FJA.(F_>(MCC<T[> yH/jf:+`Zd].Rx m,?& 2 @ * O 7 X R %De" "-@-?aX)N>B:V&^Cmd,+ q A&   3  4  :b;3O.UAK<yggt{rx_r 87-D}: ?} E~ '>8!BQJ=9?<' d."c/V3MPG@@CFDFHJ:a@69BIG8 Ci:=saF{-7olz[^oxVKPSMDFNSOL]ru~N?QG/fAB@>>@BA??@@@?ACB:4>c6#<>(#:?>>CF@88BLJ:*2ZW1+;JJ@;>>0lJ2SU)ganzyt}0LJ0N_gCA|  u&~sf+OF=:8;=><:9=>=:9:??=97;'G!1>:5PR45<4$$@wFWI.3f  7S`F08,k*(Fn1VKBeAii8{-8Lm2f g d ;G0 * D _ :oov8__0[BH d`Kejr6P^eTnXijV6 +knr!cF ]81A ;b+#2/ob(>23kS>JE><>AA@AAAAB?2q4]2!*8>70/3525O9:07Y f2(T #>MI>7:CFC;:@DD@=>AA?@CA3b@68<<<=><98;A@;68=B>74;DG;,+Hz9OO@36DNG82;MSA"2@39LQA-+FyKj^2-u)-y'.mD2!@b5n877Ru\j ed(F4aBPDn 24t;6"~qtG>C|-MA7T.BdIa8eQIlS LQ*(y5k4QLY(5B.ZjJ:8~`5CA 7QGTI>U(K9ATONX`A}% 0fxK5)V0[dJ)$IFgdI28[t,EIj7a@VhM&*;@9Aiq4&IXG*!8VY6$bT%5U[9n<&(58538:)#33:5598/%+Nn1 G-D@:ON !::V3:I= /GbP/.b&"vb=x{ ;}x#-"Y hGIQ;gp@?F:!<A9?gk ,uwJ69@@>@FE8S3.::o96OR!gXTg,)983673./6=:,#-R?~E?kn4"RzB"%?QK2#2N[C 6GD==?8.1RV&3SZ=n5@{QdKh8!&6?:2.2423K~ 3=56M #9DC@CD>( /OWE/,@WT6%n:PMtC)1MbX+h8(4HOD75>JK>/2Q.NVK<7AQUApEM] 4_6-:GI@;=BEA>=@BC@>>BCB?=?CEB1_X5,04437;8*$3^7q,x}LBg#COOA qH8=B3nB@QLD 6VM(VGVG/&6S^:u$&7 dnzWB ",,"*BYhfbzYX5SXB# BYR6!.^Q =I"HK,,@SQ87JMB86ALI:+2^Z*W  4GOF1 IdV* ?5c.C<7T&>85S " zAB`X#:SL7.6BE=55N@ *>RDAo=Y>E U;7Cn K;TYE)#Ocx].i@5>C(; m:",BMD4.9EG<24?FA729CF=23?GC5-6KS= Gulnuywrqrvxtnmv4(EKB1*8a   @ZT8 -\P:=A4"GYO3/JUH0$<tf.4QXD,*C[W1 K-!64  bB:$TEWT|N w^0<D//sE3015<:#WEn_`daL* 'B=*Wuv\1>04a7F;08KUF#`#T%[{gp{v  X"D4W>AG="~L.+9FF;14AKC1%4a.EOH7*7b~J@ouI>BB;9?GH?89DJE<7=HI?69DKF93=MP> tE14<@=<=?;79AE=.*Aq .?B>@HH9 :B(k*wx9 JfP&/k  ]E]nZ- 4)*V(0+T`TFBIPRNJJKMNLIISm^LVpn=F\ Y}I/.2.'3Z[|rsuvtrsrv}@M?$-a$IQB209CB=89<=>>=:67AJG*&CC;L}.GPH94<GI@8:AGE>;>DDA<<@CBA@@<8Bd&FLFBDFC@BGKE=;FSQ31tF:>@;89>@=8887?>@BC@>>@BD@<<AEC?:=EKE2L//;@8:Y $F8C;LwefhZ2dTXj 7v.?F9?fQg%Ki8Bv 9JMB31Gu.FHFHKF96DYY;$q=Jl/6ZeI[5)7JOC65?HF>9<BDB@A>+-U_G  P*$8QT9 \-&>G;&!2KM,"X`7AM<(%1??3(,7@9-(2@B2 D}AXM2!.X (DTN55EE?@DD0(N\K* <UT<*0JZM-9a\B##> BMe-Jb)IU]($Kt F -  B  ; F 0_@QdBs1HYHIl@[Ut?`.;3 { J   > ( `5|\rGe*1&e-RDp S A.@+1p>_ HDPR"5gfvx y9DGB82AhzK% sF+*;MO4;QL7$)T)FA.(Jm}IR;<A:!j=*0@FA74:AB<67=B@85:EF=/+CqDNDBa1D<7Ha_)^!;VW=")) "yz}~k5    aH17;G}ckoZ9$-Iae]eT RG*8"eyY |Yr5 xZ_wkT=!su~~mR:-,2:<3%#C{+{|~u_C/-;HG8,0Hgz|y{.g   ~|z{]E>@@<;AHH;06QswZ@9?=+    micropolis-activity/res/sounds/chalk.wav0000775000076400007640000003706010724145723020751 0ustar simcitysimcityRIFF(>WAVEfmt "VDdata>BNQRRX^dd^QF@H[lo\7s <LG7(! '6>?AIVfnomihaO9*.HkvvlZXjfSR`plMkhnlaV`{DX- (!%$*bxg; !Iv{hjyqJ$ #JXJ-Ft>.GirX0/( ("  $(/:FPPKHKTZXL<109GT`ktzzsfWG5%%02,  &3BNRMHIQYWL<5:JX_`_`cb_\^epwxsi^UNI@0 &FXS3Z #\_E3zGW%WPl\.);|wo )Q(-F\cS+HLkMHdS4B qNf9VQ6!'%hiH12&f0]@_Fr${/@EV ml0' Y8(+"6OihHSv#Jf2YIt.m0tn&xJ?&N^ej8)z+5f(w*AP19Qov&%R]9)_<V p:Ox4`kLCfZ? :^{:Yddn1\Vy0aRS}58~O6H?u>n~mf"`Q8_$chGY)b*d;|R*w5)B3#/"^V+2}fl<F&GMnI3OdFzTo?E[3 Mk .Xn0q0YtUVUQums3H/yzD5!Z:ILlk~O@^'B N.zW{>g $BE'yX/[H|MLL$;RXbRcF.Q2l AV@F#Ew+(+Uu-uNq7IxF.AVN5oaJ> ?QQ CC%^`VjnU&*l`r%OR>VS`@6IOE& K)XO@!z_ FO/z k's57,M8;<^Z#qYO[:7e,(@_-. FUn EhH6 AyW2BHyY02Xyrp>5yfTj ]A\!9&[1Gi8! 4%Mx;d.LTI1(e7 (0vwSp'7=6+UC#BXQr7s8[$z[_t# 8VT"fbeu,ZX|v>|#B;&$:Z19LWRNl_`!EaX{A"<s/ XI7PHkk`Do}be"Opgi0Gv5lLnoxE}~! R2&>(-cV7*9Uvj)rd&.:X+(BX|{ uVk:n[PE>xrw=m{)UY2{9 0RT+|YYDgc KQq8R,`<W # 7lgS[5Od(mg H ? l!;fVO 43Lyw!:Ia Ik*Y}:%8(m ? Ey_ ? >Mv8U1</f" -J1CFX{z Nf29o  -%eg ٪ųL7=NɖӞ^% !&*$,Z)!f ^8 V+E,8 miX^ 5-I31 E F(5diVÊ?׳  $S,0N1.)c! Y-$!_4 u,>abJKt  ;Kz/ L3q:*5*SoN^ F 0 3 ee (<X -O xCL!]:2qq/$=#6 V + JYQ  f z " 7 C 3hO:(ߎLmu;hfx`ZHC<t] - K Eg/^x:  .a 9 r@t#0yw4V\&"{q baoPVY}[Bbd.@3*R=Ze1:s::z:@g`05Oo,IxlJ')b.e.8zCX'_D z#C 6_0\,u9XpsX=zm?n &(7q)F>^:|i<h IAYf'XK-38CW/,aw:'nujlwJk\gq{I W+Ectb!:Z*(WrwiB*:\A54>Uz8 !Hyy-Q~i$u>)h!Z X"7m{wnZ>hL=7*5O#8=1'[zL A[}(m2lX+qF&"6GPRZqp9 !@_|B\[H2 shjlhel1<@?>Hcwu~}gM@DXlxzuojbVA&<QARxbQ# *Ih Z~Nzfhmk`Y`wJr~#$h)P[L( 2$xUzds!oD6!tt^TZh Fr\B#mgs^ f5B4\e 9; L oz"&sPKO- dq.qWU: r)R{p y;RfHmg|]q7tM* &G_jklr@xd){jk ~yrT:&2^sL5-2Cg{;BuI&tT>AUhqzM:X}otbZWXd'P_#.i qeX=:zM*bKFJN\{Ez8iF>/ J 6TT?0<fJ{ogjyl4 "+Dlu67I7+E}T>ISNMh=\=/XXTm]'Fn{rb[WI).6"&ScN!  gm2ND!  %01( 09_pusXjqYQLC82584+'-66$ znio~)0-$ '7K\gmtx|tbUPPLG@>FVkzxk_WQLB;7<GQPE5% 'I[`bhsywiYPRXYPC4*##('%;PXQA1+-0- /AHA6//2-"   )+#"*,&"3@C?7/)'**$    "0Gcvxpm|W""  *38<;744?O`lneXMFBA=611:JY`]UJCBA>:7<HTXN;*!"" ,Heq;?WP>8FTWNL`qA+7Xsv\5+@B/ GCKJ|p|brdh.BWR4rVLiavB,nq; =}EC4Khc;"CAET+sF Tb/q`~>'|RJ }nTW>F, !>9H*DS5]f(59*!7m?*dF{.@ 62>XR.9=1&+C`qfA *ESZZZVTWaifWD?MdsqggwqN0" %%;0fQYUI\zzmm{7t[!">IFADReqwxxyuk]PG>0 ,:3GtA$';Ralqqkfdij_F+!($UR}np@9 #RwoYTeztZA35>ILG?;:5+0SpnQ.%:X^E!  #.+!'9=9(_ 82Jimm^rnN" ,B(c M,qds|_EFqa}B/npB3Ch>Q U$~Uk&\@xZ7CNB"(gHfYGJ#!I@S3;lc#~P5;?'2`_ks#{Yd;tgP5{,Zpt< ")@i 7{{h4ae/?K aFF3[w^ <*>.}(\@*:#Y6BzE;IshclpZL>K-vQLo$*[ NpjL2(w}zO-47hba6ik{0kC]CCu%VN? D~`smaME_!K{PY.3,%(]tjUOZ\C ~AN6E&7EDI_jD=cr8*Ls]N9>O3!Y{zQ-,O{zA7@4xO;8<=>CSgxfE7Ecy}uz$B0".8'5F22BXj*5]B8[tzxzwU,IOGAA7zM^QuubN8"_tUhno[i X]&(_s? *FUVPIIOQI5.HZcdc\O78ON86SgdD".c7'6W|<H7) ?b{S$:giTNVfongivvJvje`\Yc}%1)!':LOB24KjuaRG<-,G[]H-(0'#7IL?25JbhW9&'37)=SYP<$ ;]eGtjo!/<@:/!0LZVLEHScwulrxjoj<);DHMUWH+  !{%;. 0eg4%8TcX@14HXZSRd];)3gqJ--@ID7,/:>7)! 0/^f?  /IXQ: (+" 7LXWPIGMU[ZQF>APeu~{pcYRVc{wgQ6-/#   /?IPSUXZYXY`pjXWbop`I::J^lqonnprqprw}~weRC>EPYXL4  +:GPY`ed]WV]gppjgqcK???:) yw 3GMA&&3.(& :Ueh]I3"%.0(  $&'% &FZU8micropolis-activity/res/sounds/wire.wav0000775000076400007640000004026410724145723020635 0ustar simcitysimcityRIFF@WAVEfmt "VDdata@ )22,  .5/&(6GKC<F`|[@23<GJB87Gawwa@#":6$*JdcE1DB*wnzmnCQ4-/.," 4coL)0QW>6*  ?L?$5je94_v+8)%DTET'|}'GZ#4"S tGR$W<Xp&Jdx&7ELE,U Yj?~w~nV@3-' 1GMF>=I^t ;N[adoO**?J2b]kpZ1 )#1X:Sgw*:J[n}{om&pyB#N_@y4y0D=3 1(;U/!lfmW"h7p2Jw/R&dIzy5l;4>=1r!J06=cBG^[H/y5<ktODR9`(H#Io ?q0Uw\074/.4;BEC:$_4Y<* nWD93, $Jn F:^x=WpjXRSVQ?&  )N~33c(=8x,Of!4s: =,{9Iwy#<AM]*mAKlR:%*Ly2m=jZYQ~V(p;~]5yR- ppX8X\\s-Mj.<Wmd\FgG%zjZLHIOUZgz A5t;[m&'8[?/[ *Fz.? {t g. > < 8 A O H FbKkdWcaX"7"'"'E|E'htu%LpFoX9 ~4e/'iQSn_kdJM1R>LtoU61mD{#yV5 /Qm{KS\Zk<O --$M6h&'x01W5,sOS/  9 d /  I Q / =DCeV+#p+;T;k+of9 8nw!1)>10\\+m(R,,6c%[0_#O-2_@Ujs6-*>OT{29" A G > c \ a dZ+nOna> 8[] J h9B GQnPYݓ2լ F֢mܻ/)66 9&{p {Cf/tTMT1TPq|u 9!+;^ Gj=AqFxc gF , M Q  W7Y$R%>Xu4 4Q, KrfJ43o=^JL| ^ , -iL$k+ U o Ewo]-͎kj.< Df$4(*8+A*'v# MITEk ' c 9g  [ , / mGXi {*( .OVTw`:+S) jsRI;xn#H;'QWQ ]  T%~ { S<&σ*l v!+$i%%^$!M#^Ix"?AX  {`mbQ] 7oSnc| N   *_|[@@hHrp+WoGKH\$wted*MD;&7:nB l  Q{L P ކ6΋0AZdqn " '(8'#da `%^mo - q Hqb{RhFK j G p !NW 4 )!_8=G^Rqp&l^o,FZ%jkmihp{luyI@Z ~ S Dz] 8~Zܜ +1 mتL$)[,+' %^e.@i}E X > M NpB_fv  ? T3mpPXG - ^ Q:7ogC R ` ^ b&IDuF 0e_I*% E 4 $ \  z &o{?:yG:{z`]\ l =9LlRtлƘSpˏ H$()u'!o] =iA D ^ @37r466 u>f z%e,0 5n#/ `+F  0Qs'=y: GC`gRV+\STgZ]S ] Zr<0? tnܣֿI Çwۙ50  "D$! 8w[yi5aT,/Y@: i RIK08 E B.fo gw j '?1MyA6LdriSQEi K i ('([K YH)&u@PA u (N * GӗYd hֈ'^ o} fv\Gs!tXC9I s bP{En  r"a= Y  T,q !  2 ^5qP5n|*3V/,auh  R a 0A`<u _ζ') { . %'Rt ` /5ߢp;= \ kC5f  :UL (*/Zd ' "J$p=%B$#jY\Uy1 ]O^('=CA ] B6I GҿP6pKA5?N@[r1E:aH  ^ z1Y%?c%4F~*e@tF tmP Gf|SY  ( 5iajce 8wP׷\YpSH#.#q8Tu|4Q[Y  3F7C l1 &FjE|q U "vL U'VZt+jfJh.ko;&5^ 46oV"@!uj   q@p~!Os ~D_#f؊6Mۻ֊ُQ UT3  Bd  n F|'7f/2u MbO w\9 .#, >  yo, cG=];Z  [ 4 m T1,eu4 #l|{niB@. q  <.gX 9;fbKމxݍٌy ݂  ?c=/z< V:`1 =RkKpv RB  4 q ,g, 5a8[!(a9 j 7e%* {SCa]?RW=NEeWmM ; b RD3Vi 72@~i6r<hI >r 8<VQ @8 2NF314;V8   u`Fh JBVr3C8oM!Sz 4&o nU*AgGY(Lj. z(CAU-cnU 0 Q. [ p Yg(5`=KRx~V , E r.  QC8l*eDrd/  { bO d3w?DLWqs#W_ D x < dF.8xiA#S^gC7)q -*8JHD[hD } N 5  ) y < a   /))P ;xJ]H  R{Y>)Wtn=kNJZ.  AU" K G_UaK}Bvebm5     xm p4!6r} Ej!=B[W<gx~Yu G-#vg}8(tp*!? !CYg*]\k<F1 Z9D 3S S/w@ Jj ^xA3X%cX2]c 1: [  = D8od~TS%tcbTX, YvU -Zq4%];>I92er$xGbC%/YBO@9i#;6T .y{=pY cpGy8-'l . 0 d t C N  p{+#s[dwu]UJxo<f% 3 ^6 ? 1 b&Q-Sqp2i{+(^pTQg_^g[1Q?:.\ Ow1IZ ihW%dS <lI{hu  a  xd@1b^O%X 2 6P<.:-EQ:ewzsK,2e >)wyxOB8P  - n * vG,dP>6[r 5Oe U  Q $  S/b a&j!lZ !*% s1vo3O`w\rz .#rCFSVwqU1 BAuoC WLT(QP5,^gi%4oCj)'[ %d/A/C]V8zR0;M5P m. %sF)+c3  , y P ii y w df[x NDRo[a ?  q%"dVR4h}GMSFt6^R#ZcTL<yV'f]()G7V=]} 2gKxs|Todt[+1Y`mXbkjVc[R@TgHCHJ66m+Djc'[$JD |@QB{  ) '   i OMa T Y  Jjq Tu,_=g= < cG"e"s3ZEfLY}u+xjAs]}hNqjT+|_a4{)>Tl@U4cZ-c C0SpD}Y7 {61mB@W"RN[2, 0Ao"RX@O<HDyjl}qIJ)!, =CCSx\[ " ; {-\F_aTy4Y5~_ozNC ld47Pgqre=WV iah46E|J4T/g_LYI>[Eyq-j7*uU P8@ {>s2Y_T =t}$T2q5.vqZM?'XZ7"!9sF,y(_uGFfe'A'KN`6I[!;,rx tRq/ D y{S$|lrbNLWgt|p3 o-D"QJU'N  v ` &*b6L=k]?cNIo7dQ~E z@mq#7>$}nf~~/o#yEIH`BI  )a|tu^~*:9x`aWbh0t b(s~A88oPRx] `nC ,_"| 5qld_% 2n>j{gD}5 #DV[eM 8Qdt 2dMEejOHWbT Q#}p.==H%i\`m-JUzjt)_ 2L_wRA%-t+~8""+t'BJ/w-2Z#bK{JSD tnV)bMzu4oA$IvcCKyBm pH).[:jkODJTUK;)a" a4|-Or~nX:LbYFIp " (F2yj9Yl0Jhex6Of,lW81vB. ^~K3[lN2@zdR'<KL?#8JY-I wS;2=^ =XN$fH"8WqQy\eQQe%r *?ZvBX``aX:lB49JgT'T 9M?wjntqbWSSF|=-_6Zn(eG&2(LTmicropolis-activity/res/sounds/airport.wav0000775000076400007640000004047010724145723021346 0ustar simcitysimcityRIFF0AWAVEfmt "VDdata A!(#    4IRH1   LhLz6K-4A0+:5'"-<>) $," /85'  #    $$,;9% 31-4,& -/+%)196+  :fgEkV#!(83$ '-231&&AC0-81  %5><1!  3:+  %*SUm]`9JDP-K)yr"[3>~[Db>.$]QXY ^ n W   _ u_߿R?XDff_Iv @ T tJt _{dpbY'pekp_ *~ b _> ijP G SGG$A](Cu XOQfbCZQjABI> S (R Ji3 RkFץѥԅ1*L%JOI) b | [V!$ %!) tvI8 M1o + >  `S,>z#DRBEEO$o p ( T wz8N:hd#)^,    z)eB3&Bx? `ntcF X'ۅq@ihU8!gb ^Oer c  [{S  8)KS;91B@-/O / q "\"z S,ziiu%~\JF+;hvSX?^hW;<Lo^EnO'(ZOe?8H BhZ)  D :  Q.*7UH k Wh 2? VvӄM'ǧʴޥ*j(T0ٶ'i%x(0(x$/, 4 Y#zJ Z /F1s|ci # r  ? rI}HHP ^_LS6Fs:Y)\:;@{gME^eA)"Jn{g4D R J n .!{ }   FhHjop^  {ZpÏŵ%V![ߣf e$2(A(%j"8#1+ s [:x+^v] j5 L96J<  _>T  S v39dRg9Ri`ei2+j ! < UcAKj.s   L  " K  c $ \ D <  { V| oE ŋ6\HͽX0 jD5h7,!#%y&8&$!i`   xQ47AbH- L0jJ^XkWm(Z.hU|S-?e+&V=]~ ! }?I  qN j/5b_ 9>8kxϏЅ׾ܺgo#ixa H  ='lQZ rg$X``d  : R sA,$83|@ z)~-sK ex".W+$vk{i &c<)<.y=L&"3FRUSL<%4)?s[0NnC 2 vaiXZMhS 5[pa9 4:0$`}e>g%rI3?s e3ooF  1M[UD0r^F* @m@XV5tP( &:WwkT>.0K}2[omN=zxXPnslAFA ZMVr !=myP::<926P~$?UeeN"0cuhTRj<67E9  )%@OO#,_9(k|`!Ts090euCD33r2(y& !p-]cmwP<91 [HKWj!s|rgbjY-oP=8LXfwaJDILA1&+@a]-  #qXT]injc\\bjs(M]a\YWVYbs=)=W_P=6ep_?! )?NOD86@PZWJ<7<ENQONMQUUI. 0?>+f?-.7=99Ik`NUk6JQRU[``]XX\clt~f5j1;d6NQOXpmfmurf_oa= 94piVTc 5TdlqnZ9w{'1B^zlpvkO1&-84!Xym4h ]1`QK/T!#4DYq}ibt4JDyQ* ',)$^5Riwt`F2kg)2 -!o,(HXy 1Hi.$[p; e@Hb`$'CujY5G6r!h|4 f#Py'X g  $ ; & 0  B'>DIj%2,'&#c("H  ! F o8BGfSf+I U $:!tZ#;GػSSElM߼r]!R%(s ! dA6!$5&/()***D*)( (M'&%%p$##!" ,A%O p FEB; Gi?5tB=FBxU 9I jD%3 0 (h*FNY+  I P*]\jR]\_41f:6]yu cmIP*f2C%HWC M c 0 <#Z[ (Qw!eJ_B|j9+`HwJ\Nc'I1hAX M ! Yh  t I 6 < 6 q 7 \ > mESJ( )*+>chE) 18\<VV$)Bhz'r/}^cqlT7% 8s3ZEpn="i<7'AAsck$;_cMKv@bM3f\& CsF5=mT>vNHBF;  -fC\s? 4Jr8 [ S 6  & Q G .]/ ,*yOI+}RrTFVS!YDZRBL?6JJBHU 9 I o f ^ = # H ~ # h `   qvM%,7xh&>fE\,)T)TeCV1R04xkW%X9 ` , < 7 4 J } E  _ H    A9<"h5"01fy~7bBLo:45*6|A`6y"6K4y ' G " + A  4  AZ40HrV=x1=Yup:y+WW{yM#NggR+L8N0gk?Bm,=D5 vz9v+8,T^ZZcw*<Ix +j kzlޝ,ۜ_܏\(&\6- K.X n9+h`2@+:cT~gL o{j y N P9k .G_>9p[sE d # y &T&SN)i<M`)(Ohkgt htv${b rECWw 6Y;E4p'M i|P1K{W e  , Z } }Y^ٱBW4΋U.۔(4 l|56@ Bh#[%bu/z n]N ` LD=7 i$-3|3L O k &M @ @ ,OU o}AM2@<XYvNC\~5y:;,[nD wVfII{dqTbi%)S l M 4 H   z < P 7 } 1 )I߰%҅|I;8Y3 Mb\T Y WM+ C~ 2Y>$#} Ylg_ z:8$ t s&K ,L^2  @ Y r C(o?HVDn]*p9*}K   F = I~ur)<R5y([{,@eB1U=;XJ":A!uY&`i o!|:Y*x_ ^-jObGZln3jb1 X w  { 9 }  W  F + `~ӸϻͰ͓-ت}2M\ov, < e 6 v D E RS PGm|Xv h m v E % U ! , i ] 8  7 ~#LT=d[i vxkq;9)f^]*`bOm P0J`U\FC[!Nx-*Xi s s,aofG5 f*Zi^E*IG9x> $ U.{n-E%hd,A&/Z7lL: 3 kB~s)>zgNg\ } @  I F p  : 1 Qq"Pס[%G.pb2  ."^@ Y YyG\Vr?BJ~B)Y +Um4 t  0Q LTJCT7o*eJcP$  V ^ %aQ\Ci 5.U=2= a|TD%0)+ pPy>q6wX.'0Z:9rlD5p34h u 53RN*K0G 6K^$SAo}hQCIc`&vBIwqh1 (Irj;CQ{7E'mQba `n" F5DV Qc b { iY[ j{3`tb5:[ 86 @" z h=>/ZX8PT (  M & X*Ls.z"\{]w]EXXK 5 .B$Si2 * Icv 7!3bUk]^|0I IOHE+R-!1\!]\+:G?k}UJ()Fw-PwqE [Z^o8mKv!wlX=#N&oP*(<MK>:Je|tV2 aNJLI@;AMN< Z  *:Trb6 3UuY Z6J!\d1 ]y@']TQ~s|9nqDyI=_t`1S n  @ue=*g\O k*T*B:S!U8n!qe3+T7@2@u'Cxa!pVUG<L%2eyQ0\ M"F?@/Zs #=u 9-^vE B}4ek(  dNEP1#L^yGetzu6t9JQS$0d! |J83{^'%2$16_]Anl[dD~@#ed[<G{YUsE'E{"z$P05{<:Aa4L1i<uv`/-h_a'mZe1)D[[@Hb!k)@jpTEo7] # 2sg&JZDPPZ=5+4 y"#s9GnlLcl=YLc0r{wGrOjCd$V:"S#V>THNnC)=GfAGi (6oAxzT_aew#3wVf sc)h:`Z|cUNU|s@\R-kKcOVZ)A 'GwDquLGn ON_"O;h{CNdm//SqnL*L\& lg6d(=VTCRC&% @6yWbM zI)*T3mn5 vEE;jm? NA DE#\^6 .dva^kwyu~) uz4ED,iMXI1Bl^On:)_i23wIWnM>ko]85&5G8dKpNN$micropolis-activity/res/sounds/nuclear.wav0000775000076400007640000011322410724145723021315 0ustar simcitysimcityRIFFWAVEfmt "VDdatah.'9]k`L</|obppg%A6YO/.92)?V]L+*ax;$J\WE5$ 38bFKp '% %)& |qu~w`J><><4.-6EQX[ak{}x +Nl~rkf_ZWTJ9$4O]XF4/7AA2$=S[YV]il]A% .LR1$2?HVqnbi}udUOYovf__a^XM@.+Rvn``n|wjb`\P<)!!sW5 yysWZznSN\r&7Mh*Ss2awJ)*/DIE@DB/7UM'qZNSbpn]KGR`cUD@FE+`56hP FYVqsmyAIFI\u !4/oC{L{3sCp[U_s 7oHr)S:y9Wp)=WnzvfTMMPMC7,#pH# zR@ERXL2;PP<" xWTkkN?BO[`XK?;AKQOKN^uummq}.EX__hRr Bzc[wiK=5)MI[CyxJsbR:J,bM+s!*dT|"FOJQg pQ5a=tB]9}_C/& wsqs{2Vw ?e| =c !8Sh{$+.8HZhkeWIBETemcI,"zez= Q zfLX;7@KLE84JO ElB#jd{L)9`-R\ZY[`a[N6n_S=a*^`/yY9wc\V@{X. #>Vl+Vu*f$A]~2Kbu 8Nf}a9r-Wg4sk9>G)S 2)P!k,&U[GVo}C 6u-coNJ/K"|#|I&KS!!)$Tc7WSM#q=)B~UaV!kq.c" ed|5:7tb:9DD:&w`DF!P`KFQ c,qM 5o &d[TO <el z  G73 j{zI}U`L g,s 8S kNS0@7{ R*Mz?\MH DBn={#'UN# I,+ F 0 H V / , 0 Y S$unve*Hp@AEExݵBކߞ,&jo^l p "D@O " Q{?6H= ` 4 [ ,  ! h f )iG+?7rWFbx U?c }DZ/":S_n7,\"  T  5 QZV !  4v)}3-v@Ku[wT܃EXۚ'޻߂j}e?\:j=I r @h4h  \29GN+*91l*/.0 q ;  I G " J99f, eL Q2}lo+l3e#H {  [\."/  ' . A P<  i 7~w&(wBb=Tviwۗݬ_[aiL ` Ry hR.8s F U>" r[gFp}h"#L6zZgK E 7 F ; h  5lJYDx,8VYGK~9Vn2W 1<N6g "^& "AWyX]*[ l=Z  ^ u " | hS&gz Q^s Y0|v) C(Y*(Eua{} > #k<) r -gbkCVH| |/+Rqz_#>aHAJ6Cui_I.(UeB&#o5CIKF2 *k<0\bch'X}z,$*Teu.Z\co*tY&I ^,>T~`misnZ@!# e g  +LtLAyNS&4[kKo@p/m|FtR4+=WbP.qLMj~pv+:=;R|qtzg\Y[][[]biqsmZF:D[x&:@DL[fid`fuweQC:8?M^koj_UQL@'|}|wx~ytz&" &)-:Snrc^`]QB>LcrmV=0272 ($ %1870("(4AD8  6N\P3&K`R+",6+  $4CMKA600-# 1?FA:8@LRPE>DQ^^O8&!" )%);HB+%Hdj[C2+.0*|{}}|%,.5Hdtr`MM^uxqrvxvzwaK=89=FPYXJ1   &@b~~{p[PK@HW\P"_Y)u*wkE: Qo"2BTEk4N<MQHWz\D;Ff ;^yb11\w^A9OG<CTX;  gT{Y(wPD"g)}6I7gO`$gR|Pk vifv<A2cPD=9=Oo n2WpcE-!$,00-'!!.EWO%oVLd  +@U_\SF5$2BB99NorU99;]`(Ez7HDM[v_[k&AK<  =m}|yx*Rf| XL4f ,Fbqu~GAeR8m@:QGpK74AYvLHy ew/HFX +T~rA=\V"(s+-pZ_ G{ljA4=\Nok+a $PRXnAh $yfee"=y<# sW">c,&n L `^0a.Y 8z ]/e{kU,*+&T @qi\P4^}}~e?-KAT< "G|W(M1BTti!4|4W{y 2xy7Z 2`\/ a dyrwrV*FuW>"(($%0HZMAPhpo\K(~mjSS`cP)n;mSIY~V-#3=5$)Oz}MvUKY{3//icG+Edow@^wwwoRDMam`?!Avh,`_J}R;;KXR=#yZRe{ AVJ% (7$~||\NcoE=ZW69\d\i 3C<;Xv@$P^-nx9hmL**S}C*3HN=! 2:2%#5[5a#BZec]\p-,  |bVF#&40# mRHG@%3_lcP>/6LKFS{!FealO5&mZpLR0_\DF{>+LV9kqK!*ui38 \(  +a)6{Q<&#97'&UWX0 X)W6vrgN/D]Fbp${6+Y qB8g,O`imkZ6  ogwtDupu=y8=n$qJS~   QDZSXJ! 1)xtJh7 ~  % _ . 0 4 . 5Rf[&s8+f9m&.R|dg|l$;C+ 1EYgH=Zvg*P7SL'N{'kx(lC')ud<ip!8}joF M s=.Hk z`~2 6 @ 5  (3wG]7iFKW% {5m yE NG;a$E% 7M-%M[C!e( } . V ] > ) s ]cfaf2FO&y# , @ 9  X 1ec7?]^*ok*c=Y+ |^nox, j_:)|.:)@P>z|5kko E NzwT x  o#'zaY.2aJ g|3`[ < a d % 5K1)%s \ }L8w W - 7 z ._dXo&h-gaC & G ' ed 0 7$!-4[ߌۜ؈ן؁T(_ Sg 5h* -O2 R.^"%J.Sb@'z  S [D51  H %yyf[!jULszuM/, 0 F ,  j naC&]O;mmlo0 < ;  h =O?$Xa& ;kFkw=80 +  S u  M  )"~_ZnAd>n$nITqidx / e 9Dope  byW 8Z(dE# $?BS;PR=~ s V  M @ U  Z ;/9 ]Mg $lR5lz,5z| v 0 g n 6 h){FKBA!VKfPYUVm=Hmt)nPQ`M!"9k-:dF</E 0 x o  q#d(h#*MlbLqݫ9 h TeO !v ' H] RK!PG6so< S $ O  c r H { Z ri|`D};7WH@N.0HY{; F i ` gf@8nIaMr%DpRUk/2 i&:{?x[x~?W\5QV6X<F_qrm{qMbYbwi^p{*(mn=p4wW()ޟ ,. 8xKS!  *er;A4Q1Yqek1Ou@B l C  +in[SPdIX,=vi = o 6 1pM }|W 4.Fo=6`YAa _'mqSVTl.YRv|zN xhw<xw.IraI'#ny=6= E  N ]$L z$+ntj߶cB"2N&X33&h lWU'gEC * 5 d e[KxJE5q5 ~Vc )  e 9  L"E)<@kzs g n  k  : 4 %oYWV0&o^R3rOj=X$m-"a"6pX W"h&sBXT{;j?e4V O.oU>a 9l . + L (  8 N|5Ci ;- ^d"B  .1IW#U^ lO5V(=[xY4A-P$S|9%<= 7 46CW | "8CV#46|9"D  ! s \ p q9D2)kfKFa7}u@1=6M061#(~CSO e~0eorB*/^.  6 PJX \N&y(+s#H0}}6 Z P P s  ^|*8Uu/U#^c,# Cc7{_W l^(P3z?)? E- F 7 o   M  u T/.FY $@; .vlsv^Jr%4 1>#g\^$A"g? h@.E:b9~Z@#2PVeT`H(9s B vBe!z|IYodu J ! #M4 G|(l9N(P4d ' % T ( + Z F B ~ U p#.@H#@O:s; tL LyG<4ppWWpAEl$C_hgNER!EOe]-Af~~ ff?@`RR8.8RmH7BMlyt^C18[ $=P`q&nA0nq>PJ}/ mg+H pTRBf@w f B O B ; @ B & S ,B+m>"D nSk9u 3Jd}^B-\b4 -[~wdcw %BYhj^N<*Hy6i$U^:-/4/cD%sX:# nP:)vM 7ENZm2C^ #B\mu #$!5IW`ky~o`RG@<5*jO6d7~uqpt )@Q^l~ -NkyrnnvnR:03;?:34@P\T>$|vqkd]\cv &+% %5?A>=EZyxulYS]muo]B% }{{BG&#./*$ &BUVF9=QedN- #.64)/IYM- +9.pkr{~vi^Z^gmjb\at +04CU`YF8Ba{hT94:, @rX|lhxzolu|rW;04=;1+5HSPLa>YknkizCH- ZPv[7#G`Ku^D37W]HMctlS5,>avw8Vjw~yyxo`M;6AVjog[VZ_[O?0'"!*?\tzp[PRYWAxj\X_o~|~5A@::DT^_XUXcotkYE9;HSSD-    )6:70*'$  .C?qiv{%;3"*:@92:VuxeVI>:AWnyq^Ua~w\MGHJJHD6%472/7GSXX[jywzvyzc^caN+  }plv;IA0%*<MO@'%;Rbiigd`__`^XOGEKU^`ZRNPY_]TKHKV_a_XQLGB;4+  !.GVR@.'.3+)40& '-241&*H\^O;03ANPC..61  ,0( )77, .GXemooi`WK;))81 !  |szuc[]gqvz 0@JOQNGCA?>7('?T[VJBAGOQPOXh}tZC1'" 2NSMD@CJU^`XJ@ANXUB,#-BMF2&-6@ILGI[|1$* "0, ;J@17Rj^-(=%0>0*B/&K\T?, 0b[#PV; $$ c<,?ah2AFot^C0,22aFP-dvc_6pn6'vc~~@W(ERyA}Y7[E 8[&QvUL r N a }sE!?nU/[*!4=u,>ssG+cw<Ww]N}1Xc!7: NP<\sqv3acp,wh6QpG$q;*\_B)6$E/<g]4u`')P#4Q:RI?@t3P~5: +?7LZ@ ^ ; f Mjh> 3 knO*  O ( H} <Zcm&!qp^ (d:Vi #xsS  W<q>=rh! \4 O Z< n : I i'O BK3=T/ W  R B  "v`xI9sB}lb9^[KO^P d`qXVXcv*( ~$ b7~VNlzXb4M'fSVcj13%71>qWY!mp;|./Ttv 3 = , [ m ; 2 C / #\&}>9 _L,mK$e0Ak n%b0E4K!NE@ `h1]..XLoTzY!q!+?{l^555 D"`z`[4 8 Te(l;L4J5i@jjbV7E^PRHf@|.1y.GDmIC/s;Ab!WU 1c<PKrORV:+bhr9=04`(%9!L|U_Ky v Vdb3fOxv%M\aV;kGjN72Rged ZCB6rI;Dh(?~Ra7 qq$2i<)c+9I|X M]XIcgSQh7 ~&)&!-YWQp)r1`b*902W6i7:Mcw1.*sYxVmVNzOyD,F;>|iEx^iKOIlPVtN[2$wq6rc\0x\(a:~iQ ^T2X*wK^P4 =oj`RkzlgdYF1+?n4Lu Uyo>sF|cO:.@Ri{yY!w\MJQ`lupS FxI +(S}oorqaDn #Ucny L6*j$( XTpDj/D!d9JA[|]s,|Xg c?<' aCXJGkfe;>"  C3H}@]zc>.,]G XrW"D0:+lg50]FO>5JE\b]UOI=(![x9okp67fKcKQh,Ov9qarR /Tse0dPZw@gWm5f&5W+5h6d<Gp$8$~m>*)19GcR!3[KAbWEL]`>?@W5t!m\ !=t/ & "6OS4q|q{Qu]$wskS OR9Ta U^K'nZwdFvD"_u\=05JnyR)c3McgT$.cH5RN4"*F[R'UG]:yu~*# ^;"&9N_ny~ZLWv@_mhV@*ymft0yf$Q{}5zpZn#s8 "')#!?psC;a ~MvN;GrrDz#0-+6Ok|zfRIV{ i]i z&[F~wDts^  C C4C4t?!{v(/xH  k hnrk4_9PB`QTyaYAAXI_9E:T!grqd|t]>hT>|*Rdlvv%"X-f|&4UAUDPIIT <w |,Dzu}(sBTP:F{Bk;zbK@MzawU1iD3<["7cyqO?qO|kuY Pq5u*-4]xeG) w\_$?1ffKu+wW@Dtx_[Qn 7 yEjR8/'jo$l A @x"-8&<Rb_EpU P~9n: R(4"lcE}S*a]LlzyfP! #|*E*R)~.^xuL+Q1 Qz:>Uj '>Wk~n(YqxB$eo6CtEZT: WZzC2bBB D_[ hnM)}nV32cQ` jP_ET'W5y4mcvw;2c:4rqR  ; ,  M4o ,+ v R1|bZ !}F5  .  4 C Qh%k w@pn)VR`/[KIn-rQ;z3[S=uh fQsa 9i:x.K6.8;-!N )Q5.e7=VL5,!VBK|$m`fPt?~L/;E{9c0"VW"=OEp\@:Mz^-I>=k_Re$x 38c8)6[ RQ"8Y.9/;vw =fHkud<pVWz[O.f9'X  * F c Z r!8{yssRR4s6 7 4  ~ QN }ZD;_", U 4 ]!\]%U{; U5b 1   ^q9O`KY#. ^!}WRho7o{ 9zWST4G ~& xcf xvpG187zP9`pgN,N2kJ:hW +l K1t)~ ;`tyq[9 EDUQ34qr&eJ|9/pi&J#NN{I?avsW1 eFRka fP_@f~Cjj>9122=JD>9{\A:PGF[o/_cD L  d  }߷-mf'bS\YXcnu?F5f<j  *llmlcE_]BRLf2\fQn w $ l^vD#gB~G:j7Kl[ Ne,VEOGbN*QY ub m!)&*`PmfyKp8kW0q2?el^H19_Rmd8~EW ]cU`7O>T C{4N@yEys>&FUZ\T; 1c3IF-S] @]f#-i\ .(ZIv&{3;Ci9&dhAM[0W~ZX91E#r:?OMB"gsT8F G i % d y0N.$bj % y 0Dl2fI6m`~"lUI  =  X Id.yq xZ]q07~[8_2O,8:-  O:`XYD-:d:,8LC9(\AFgTiyD=;DX0,j L]{.%^;}!#iY 7k4ZlqmaL4"2bZm+F5L$WvyD _qu*2Lj!oq7zYxsZ9N"Ytr_E*|L_W$'W_2 -;DNb{`!g&4(fPb <Tir\$Z>!J0!(5FF(}%L h<.jI&80ER W K8KE>:q U99bDy s&8r i3Oo z_E  w jS\}e gl9C i5oH(RpW:q%nE_O%[Do;t"vn/`[ !@yrH]Vr6mv\_ h/Uwh?_3<P; Wb#vF?`B@[khO,C9qWaX@F[^') w-v!$h{NH._ ps } G z .U\- r]Rr#[pjez>c.Xsb(RH h{C- V}K-/E`jZ> RtLY<D:\\ x]c 3tY /@NgZ:Gf Hc1hB8?C7w{}{wqks,O`_WL>+ {uzw\C=Ptg98Vm'CI<'%18KpkH( :a  'w8xD_lmdVB0" ,Ix'u: 1AHJLS[jk\uK<O>cD+H!_<xp5=\mmdVG7(Tb?GCt[[q C[`N#QBK_5>RK( DS>3TU=+nE l ]Li>l*jl)5W kAV#&Y{<  -@RZXH.| TvF)7W)u#;_f1ol ~UH]"$"JaVde ;z$H<_bJ-8&v"'4^)j'4%4Ao@@dL\ nv!bQzjnuG_=j|iP;.3Mr}OL H$EH3J+H.RZ,AQ\sZ2Yf[@((:ILIGKT\afo}zWcC:Js=rY&c`{Y[s|I~s? (g |%<zJJ,9jQ}b'&JWP:zA7oS d!m[ h5)B>TC!at"emE}'^xlDI}eD<Nr_pis| AS2.+N;*[wj10@7T!y6j/,`a@r ^YQkuzzmJ rI\59b1*J-]{sEuXb@F0`]n=7X (.( l7:% ^O_(aTN^{Lh_ 9~7QehY2 %"{xJ4iHT b!fCYHR^kx~oD@en`<`LSp (#tC1>e.@<% 6]l^; 8UjqfL'/CJF:& 4W_I %=LNC%OdV/&[g$==znR]`ETQiQuOQn)<61`qU!/0'm9"0`>aR}TSv!LbbTC;>C@97Fd}a'~zR^DsNM| VdT/ :DC<( KqtQ( !-32*+:=- :bxvbL?97;CSdhX8 %>?"Jb8aQ!$#)>w yw8OI, "*&BK>* ")+()4HZ^YSTXUE0'0EWYRKQ`lpkc\UJ?88<<5-,4<4 '$%36%   &2* !45#  ,467>GI=& micropolis-activity/res/sounds/res.wav0000775000076400007640000005362210724145723020462 0ustar simcitysimcityRIFFWWAVEfmt "VDdatafWN)c~. /K&+C_F  : 3E"dV00Qj/Pd  J;* SP}2!8+U;+rD.jR$1 u t 0 au'WT>F>3iG*o%=BqDHe jN#Dl\/\0If9bml}O,89=  ?  ms^? ANTNC>LL&V<_0`  y} } KN0 > wjyFcS08ѫ מE ?3Dd ^i c~ + emXI ]v< B:!h . `4 S^do] 7'/c! [ f * U  > X \q 8s# s@,KJ=@.hII~,!lhWPS3  J ) R Z n4HgB)Z@+*  N g +KiuwI Uo(FӄuC΂ϥΧo˘~>ޛ $'&"*!F"d7@ s_]qheE:/n|.# U y%, :#$# W )"+xm= NZOa 0` F  '/(a q9yRPtB1"`@D^u2({-J{PvXPL l 9  T +  h A v , p#9 U t & C * $ ; 8  @ _fΧϵa71~\ !* !);Qe. @a{wD#`T W3< ^Q rS  f iAp?.V,n6kho`oF  ?  | e /0F*TeFI d TH!{rI B e ~ T-$H@@r`p;(Bdy~ $   m x g   =dXѐ!Ȱו!)MԒkKޑ'#dMrk'.k2 c)l0%V'CF,9k  \W&/M@3 TqMI/Gg"q>u  xfHb){7dVbIN * n J o = : , LH6r,!MeUJlm 3 e w k qY_'IIq=gc@mj%& ] Ag(+v f  e)0vj-6Ho2G\>=bTI7Ws8k Y; 9+] R!OqU3-t5&KYe@*t,\4YvO2yZ=Zj ?V< >q* E  ! A [ 9 G  { u U  DocCR31oriS[?6J:  8+Z#,5,]5Tvadz5GjG_Ds$( w :wT.zH(4[y+QA2M:$GK #M^ yQa9_3cR[3syqr:ah $ " l 5L V~rH=y>wylJB)KqTJsLL>t9wdH|9Q'@VkM8* : TK ZP'? n C (  ]g]@s3ITSQ+hm WEs1vC.U*('W4;q1UaS7Ga-Dj1Z6 jm>'khxI%JQ=CghwV^G BDcTA\\6BPZ$mV9V^k)S)%(}g& M)`Qh fQJ+t>StV W nhRFf<%$| 12#BE1l6_N6Edp\EpjLzPeV^5Y/S RzD_E*i9s>ts'u(x}A^5>F biVb[l0&8qO]q[$\K oF3 @]+M0E*3EdQ70XW/@v1us[6.{ZdPByzi2)$vtC>EHliQXQaz| oR(%kCZjf*(Y/&i7M'H^0+JWI@V}K-^_ZP W<(>@9(GF-pE}zzM rqMiI6 +3''x$3@wA @\"}hu4`ECMF/z@|%g!e`@/op e %@zsH & p ,  '  |\yptPD+<z:SzXm:y~- kkS8+ g6H<*1ZdDvA "U527&$V6ik m!=#]3hv<|a[chW{XqFBfz&@(/2niySJZnm[Rr.o vC* REn`,,݅s\s68 6: Gz}(W> J7N@~E4N:R C##A 8(]@ _%/AL|- Q" # E `[ _%$ N Q p{e)X#F/O/~d}2ZyA(4([hp Z o`A b  q ; M  F B zj3U0?pk;:֜܈ymkˋ2ֶBpL9LD}nm 5$ oc voN@>/Q S 2:R ) S{V1  ~ M.EF7\O.xfm;lQh\w9I=:W <USg)T9n71n5 S  z  < 9 r < 0[_U=m EZbړ ɫ.M٠װ׌g5L|l3I   )  T4PN  ,.wJM6dPX?LkGsvRL <!mM p E  O 4 gO8:V(6e"9(;ZJNs"AJ\o>jtOY -0AC   ( @*nZM c!.ܬ|Z_vg̥ۓt֒DoJ Y gZB |P [L 4 -1Y qj, 5 # l b   O b yE?5+'-@[fHqVn!QRu0 |7)uf1 j{Dse<SK>O : S\9I s@vn۽iW'Nc!N^{Gw#f / :sS n] r  J _RJI]S "cn 9 4g e e(n=^F%f9[=dLxykq [\'< $#C1C*%d@^v3N7):dF @ m6HY#M0> PYek&Q='_(hh[  M IY B O H  " K7II D  0 jx\M~5gCV [W>a?m-U>/\#4.(e`/xSs8] +G_Q/ <3UbQ'3U 7(MT@%7\]>:@{[>/ |9Sh&p/#F1h53Gj|vCY) fFLdJB+1o< 5!^W'0 hIn65 1_mX5+TfxV  H#4at]?NaLn&f<&&05- N 5X^TNMEh] (eY=Jb2G2CVg=0!% 8IPftt87H/1YDRMT-rK*{.&kq(l xP`NB l:lY`,i,uO}Hcm0 n#+!3JV0*H//(d] \OF]pRYDFl2 ,NEIr\?!l tS\of;'sa :$Ymk*K;QK?[E94ZzPSP'nJ1 xi=y4~Pb`j;-SS4LR%g`,swdOCN|6N86+3$b"Yk/ QrefCJEp]y5W>JNP`|/xKlJ5?`P.l@T2,sY!JLM+L+U@Qw'yI =x0Ar~_`m>-o  {vo"U<CO2 41v( o Ue=\NL C & 6+&JQ{I=%C`JXK;=X#/JH$zn  #y#WAdMK)c/Dxihlx9"$DZ+SVL;PtQcsPl,Hik*$*67mc=!oC6K } s b + XD r k . ]}u:T<-h'o`fZ"yA#*zc39W7r[A!LU65'/]`g`Py*T;nBIC}f2@,DJg$9]]<;*.b5N| lh  0 ; J W + {:rw*rݑ&{>S B z g%#G  2  grd6Hy"Iu& MjS| F = R C = H J  GWV/5Olp}dc(<|7A*F}}?R_K_T7/U}y/y{f{0b}UwI(%rRKE+CA0>VuiF.:tRV@4O*HMPZ`R:6muNdB8C[t>O?u^LDFH<"Bj`*p`&+:j.d.NNGTw]-1CljO^0+Lrv@!B- Z  Z q N =  JYlasZe kV 6}_NB<@LQAXCxm&\,0^S{#Pt _=Jsz%BbNsp9PC'C B2c9x [F9OOD6-" s> *g4FH'-2;EF/kH2 dJ#  LsLusP&|i^k*j#PV$o<<^xn@jchmhX=!)NhlS. sv|oC #ct(  N  K E K h _ LB=7#S?IYRx$ A%|IsH#=mAc*:E_x m` R*9yB f< /fvouDN#2@a]!cI-Fl%Vu9D=45=>(Z9'k> $Kyi5<_yXZoMbDou~rWBAJQS]h"#6{)H .vX 2_--#rN1MoA/*z }dSHA9-JpByWG":IO]{ YYz~j X4dd7hVCYu8c~ 9 =  +_bWI'sI7LSgxAeS[~]A* aABV`FX1+$u DaP)*_pP=7=Pj{USo~cD3=^.0 .\uM3/1*4FIB>@HR^jphWF@GPQC2)0CVZL,Xx\^HS~htf( nmG@8Z 6-otffH}v8|3H>\Z *?[pa%'IUKAMqb?,3RBZ)>wc-  2Uhko"$78 ut{|ns4fnX<+&#,DQF#<D3#T|wc^owv|_6*9:-"4CE7wT?:>7#HxInP=8;<0 /k|nW:" 18(qjy(,,'  /876=O_`M,micropolis-activity/res/sounds/ind.wav0000775000076400007640000005222410724145723020440 0ustar simcitysimcityRIFFTWAVEfmt "VDdatahT4>=2 =>0; $* $49/ !/2% %'" 7MN=$(, '284$ ,HK;&  $0?E84MWO3 !2;4 +''383'  *<?. +9:,/GdmJ. 5DD8GnzjJ+ 26+!((! (?HB. )3$-E@!  +8B@4  &97%  *8?:' /0$v)R&9ha;?A k:Wt *(z0 X;G)p*9)2}Sg'Km`JZOp^$X$9em _UQ3Cde*yr`Vcd:dH Ew\VqI&V\ KK=4?),a#v ZKry#`FR>tc(   xe>l#O\852rn\vrZm^8!7aL&L05KT5*[;'#1W#QcfsFz}P6r!fx)Fo~;%Aik6T7mt5a*Owmiz:{yVyo2.`^F]&\.kg?YxWh80C64n" 2 vp I:9HbPC\LK@*)E\_VNMB.<PZG\c3 J 2~![nljgAVg?v7Y~ ukryoY@-]6(6G?`m.n[KA66hN5a2\N'Tu N+xSMT#g$D :b[\u_n7S!'#YMjhL>*k)]4 ~fRB3! yN!rb[K)b\15/2@NUVa}Cl.S5R|z+JiCNN ^3w'wo22`j<'wlg,?B QE{)?.<;q@Y%Wc\V 4 g y99o ~VLҘXvYéz=.ɤR dB<Zm!1%''%$$:$"4%*Q t )X aY 7 |0f,I~ Jt6~\ ~P62 B  ~ c }}ScIOvq U 8 D>  + M X ;  _<V08Ol 9>+=W _g'-̖ɪʴ͈͊|׻,ȓɾ͢ՖH +M#']))(S'%$"Z s &y&M73$| j"#$<$ #|!:J 2fQbTv *Y 4Dc8 h>0"Ee?Y&v]Ork d @ U 1 L P o Q = }- Tv^'% r .vmr YS۔}ǺʠuQj*{M̜[҈;%Z!""B ]LT2fO VjW0iy><]Z<$b {x=4$``th\"fB+d3sP[SAPG$ GC" jEz x`y5FzG6=eXj&^<6;4>mZzB)@\EQ$:B _;B{P%z,O54B&%3{*,UzjRyY4$N a,"C~'Fpka\cpn@% iqm1Ihy&nN00Lt2(nz4U/W>nVal92-#(15( jFD_ms*pp'cL(NLT]#u\l2CU_&V'N0 r!G^F!$jq_10#DwFlKm(jf_DWZe ybAqsz`xc|q 'yLylVI? N6]/>Q~`DK}m O9]Opg/ U/G Ebn-s5}7=(n w[ ky ][#uNrp_x64N6v/R$a^{%esKS5oz$7V.[=x=Z=.Q?1i`x?CYD^LnGj0lyK+K C+"z}W!!3/  ?|@9@#&H/qu50zSi#8j}vOuz+Te.1e JeLI|om]Bw7-TuGSwCra!gKe/e, h}.0JQtv]8Eqz uf3  :XlqhX@Gtm/w5s*if+|z-wNA=9Bh:H0 EejXABf0%X_):V1o4{X_FW}hZM?@aM*B%)z^i/!|z)?4+?86CK~_rBQ-K@|_8Ac q- Ph3z \p;^cl|am}2]s[ZwIx5;Z-b{ cLnhUz:e%CN5AM?A( w=,7IwPleT1v~ ?dg}%p9} p9@=Hqiq{:7a &V,+ ~ |QLuC =R.Rf(<C+pS rHq1Xw&cx8hzr K>a[Udpq&R2]CG<x5 w/Hv>Jp[?TLexd'C\%:&K'4[WNkV9Z;G)[8WT#=-n(StGwT.m5Pd/ypOm `KY e<}q!fiJJ>,#;3LnN{\ti JCb(\R%]ef !'U9Q%COh8ndw{ޔݨCL!|V]e[y26 i w[F,\K ~GLVJ.#NdNIsNOIy n * Y? =Cu~9Ql!Ip]y}h/[VDn-K,v,pVtjMw@'rC - Z JAerr `Q% cĐ ˼1؁ՐYg!,7^aϛ^$, aV P#&5+/3v6650v+$Kc q^%re5Ggc.-xr$ gb9S,t|r"@$$#"=  fr.B[#Hm:_\Q"?8 C slo4iXq?k<o L > + ` .  s Y + 7 * [ V   Qc26ad ` l8bӡɕ_HI6vp`?)߉=u2 7#(7-02220,d'X \w!T{tb ldA!\$ &&&$#Mq g`h#_|=`^_ G h [#w  fB`qaz#W, ` bG4 ` zF2^_64< VS\b(+FWHhlإ^G.ׂ0NyRh.ˍFQq tpW"'+/121@/e+%G3kat1CT6|K R@: 9vi@!$$%$#!kY3Mfc |P+$^jU?\zDUT)X ] D fv >  J ^yC/?p, aP@D" * a  -?`U\ V`hdw7_ &h\7?x w mZZTmL BGҧD0`ؙedHD,  $e(+"..t-*&! !  4 Wri=xY| 2 ]i-8E C!D!\ U* { ,*a}0 ':4%  p Z !$ ~ X  `Z8s<td}~7g"uJ    0 WGBClhH(V7? $p^3 f c 3C=X+  9-Pέ!i+:IvǓȇ&ͥ(QXB *3&!>&)*0)%! 8-=  kU%4U({0 ./=`mRI{ X$ vW'+y*)Ts u j"3e ! ZR'fC/L(]P* zXhfd Z 8 ? P  mY Fi[1Jqi W  w G Y A \ f  O  g?G-V AZD bbޤ5SN  J:. P#x# ' 7  P^d& j xCTv * _^8!RMv7dT,*t/E q k  > VCn*{Cx4fJE3m ZhHoCTa(pB3q&t33 o=G{kmOEYd)" R  <  6  a~T}F6;;L/cc@ 6GX/[ 6n2 @ 6 4 %t<*3\-8*` 3[S ] 5xj)-G-]V=:OA$], < jg]8%oa 4C-il_&+lj)O% oS= ^2ph,sYX:l# ~w=q@971Jz*SGvOd<;A2'&zSK@jrc[7J*@n|J: CitW%c7CrU J:`w#;%x WY|@Wg߿،w8Pd2 q5oB? ~)T68z:&qi ` GsB:FW%3wC < 7D[*VSaQ|yf@/yr `h6Z'(ws0#'N,eiu-}HvOV[.j/NB?Ph I(e+)Q~x!o9bEc7Z>n_hH]T\9yk\H9^?64=bjJ+0xsdin])U?Nsq>,g67$  sVG KvO$ l  S U %   @ e&~]-\(T"=]oL ~4  F~0-d$pR) ]y'o# RM+#D#p_0y5k\)04+uR&X_G& N6~0GW*(06 X:ru Kg'Y\}3Z.I&67gbj4 %J`fl~rs X'jhohD O   C_3p3kpz&RD%  d *h)T*WAwJG"&  : K )0Vc.", _ppc^)C5i=FHg0TIAxp96|LgF rM:y Gim"ta` 1a%A Ota)'0)h\#y u4z5$wZH(+k"XO :|"}nFt6YS0 Ddw|5 yVKMSR@!.m5`PhaLY.3- U]b8Na'b%CE;r-  ' M " '  O"<1=|F 3&s@5,A[7bT;t-A'v1uoYSN6a.oEhGE:t|lS&MQ) #>*vE5DW<" C - 80,w3|B"N~}x#9n vV{95%%tMl<KKlvkoa6<]ibANnFxfo^):P:^U3I_X>hrrky1V7b*%q$1I*c/iQlB@WuyGF{l|j[DU8T`)oZl6Z_\tM-F7B{xCu/G _YK[ls7G`UI8!c,!e( *8"JS(KY * $Xn=It 184)'$*c3f5)2-RgTuW5l*Zd`Ya5xy:l8? sB&.Sf{C 3lIk3#h&+ v4P^108[.eL~8EB*:"(:,qvU ]kiS{%h'@lYX#sZozOf 4rCjX8 .QG8&0~VJL.7$`{_( 4iz. MTSfN/#x1tY7`tEQ"##'Y[YY'} # g'P\\_sOHMj8(!jXA8R^d+.{sKc$ Z2B5-Be(k iKy Juw_JIYgeap$Of{'?evO8hgN-5yoR\\5J7gw> O|Xh aM= lHu9%%D*>8$8A,Cn<RH $nM^Ki!E `Hr3T VAu-w8#[`gzWX7Jr4 bl ?G*?+89(\+O^N*qPY GBwt,-SyD4D[A2A)w><, \ Gp1Zkh`+b-:|l hpW{F+S(n~wx62@yL X @T[7zgB64it-Ju#J;AY4oYWUum`jSz:k1'r QLzXR;'HG't5,2Mj?jZ)ht//1!I,_a?~r.%:L!2v.RDpeF&pUwQ*3XsultuIDkmN6t MmkWF4 D V sMwm; :4=Vb P`5]RZc?ikHx'hN{r8_@ lN jRMd*f.~{zzB_?3*i@tC P ,X34F|7CV W*n0xUG!G~rnm_Oy84p AjTTUS]'K6U)>0 0AAOYu>& ch[rqi2`^f#wt$TB>YNd7f*3 jBR\a)o9Q vA7M@"jG *&x;_iZ^]xHs3 6Kf.0 ,cK?|;8A2z,*9Z7RDvy}x]oDS2?lh9*&!+7!2"Sf4 f_Xkb&tsGYI3ZHaw;vp!UT^}*AszQ:Lz[Y8V,||wM=w0sac~/B~ ^Vp0U=L~a3 XW%0Fu":U:!/<^XD SUZRix@%:$nix&N.?M61XX+d[ndu/[`2od3 1*O BoE;P:u)n_S<uiYFOdx|iK* e$oY:{.E125[RKy[5\^O0Hz{=!8 L$Op\suRK^lX Ar48*)9@59i.P(S1r7TlZ+$G#NzCk|k4H ]3z;bx :+BjwhC<`%z1dO- Z4+g-dM ss8}svwtv0yzy=QjpyhJl{nw3!<;^`J;InyhFjn@/*hB $FZbfmtvgK0#)=OXWTW^cW,grmoaFAs_v%y[E09NNGV+ 6zC.Qz*s0"UB  gAc.VC "%wHJS(tDzF*(+KtK9XV6p1teNi2tb]@&_;h-!Z(#V&_ @%d|^xV[{*(8MBnm=N |9U*kAV$B20}3^eYl);9i8d^.jaUB27VSm[V ~)Ph :iMvO,MI{&V QnNgtP9>WhR$0,XJe UspDg`'b!\$r>.zT>AB yaOIkuF  <L&Kt $?m0UQ=qea\TQ`G[J&~|,2sy6#<@^CB\o2|>|DeH!oNj+pq`COtm;r[eh3XbEeAt/?B:,}ZC9>U{&Z *?C,k%2 ^KSvQ*5f>N?QZ,Ok<r^. DVMCOnrK,yWO`MtcegZ_1f3\&"W;HC@@7zS9--9Pm|Uk6C6# zgp`>W&Xk_/_7o~3vEj)|3XA:6/+7X<qD(4;I0mCUPj86y==67ma!fMMBz"{=ea(9O_d@a Ja\^2APqhB~) Q2Jo6~O(F]okZ;I @x,9DLXkp8gA-;h(B6 7)otb''oLb |lb?>U)?IP-pT@@>7;^<fv}p? n6"]~\@6;FLNI9k[hzvS $kmNdT#$t:"-VP\RT4MI0p=Z:u{W*"aMU6ERC6^jUVozLg#(p/NA3 $Fv*jm.<7TRQhFF _OjFy^ F2 V~T,"P![;o[v u1pJ8WJd`;yH5Iwz'R3+=q) 4.`#M2:Dh67Q^IujcNA3`]p_Y[]R4bnOoj1]3 9DuyuN $ IdSUe38HB1r|%]r<"Hv M`cfvVr!b:pO=/*QeZ6+DY[CFtr: :d$FKc &^E 8m'x >nx6wR0?hsV2hON`}Z6)'J x ~>/JUWe<]iG?HQH0 (U&\~LtaK2(YOsxFry EB\b\W^sQ wL0.Gs&jH!DQI7-8Rt[(zK,+Hz4Lcuy\-xbRWm61 vQ+83fzvcG'R&'S#CeH Eym#lVc  My[<jdJIZhdL51Jr[?5B]u~xtsm]KGVnwc35;%+\mR|vsbP@6<[, ,MVQF_Qy]nyA=n3JQPQb-4335.P#&S.Wsj9zfH/&.9:* &6?Mgg0yjhr #)$ Pr{r`K64dyc+bSF.txp`\nnS?=R{_ &?=2eB[[L8'@bVA=g4 t^]t9 7cO&$Bm"%YN pu.1yryzS;cBn`2TK'v2jZl|6T?>v80k]Y4+uk3AMa{w?fCU%VTiS= 6eR"+?HE:-'/E`ogI!=QVH&{wpjmrmvj\| brH[, HVh}vUjO^Hn~qP+"Gu|dC% !70kre,=muB2B^h]FCc7C@/N#5-J",E\pw8 /*<de.V.'>eto ,@JMPPLGGHHB7-*)$q03qlF"5YzYiqD%jE%ATi +=J ;H}14yDwJ3,1>Z\}2sc/P_^N3hOGRq<F*a,/X )@JF9% EupH"XLr721~I-''6dC&{{MaR6*?t  xY;:JPRZaU,$&_80S,\wzR b,)L{r]OKfnj5?L6V,/`ylQ%5eBx/?A?3 4@EB4x~+Vkni]H,1VdJ hQLiswyt^; LE" '/*?,]Hp>%:)sg_VML[ >:(pV^aYk( L~ziN&:qsX6kl)Zigoj _Nk( #18* !54 hQM_/2)-VU{J%-77?_e#&iJ<"% ,9%(YxulmwrB| /L 1(01C<% rC%(1/ #cS{|Y%aK5A'C(_KWxTZ7T\VP\z_,  8afB*"*<KRPOZt|LzzwG*%5Z:\~\|`]i}. 7]' 4m AOOLMUahcXPYq_#JacXK:&0N[N5-?^jP!! 6vg  ;j[dXz_e-O/ a~]#_p0pwXv,45((BjtKaE93.*+6Pq#KZJ* Ha;gNSw2\dP(;S`da`fr}z`0vD&'O-Udhkqo[9-?Rbi_D $&cYf{NPjZdujK1 -|%Lgzr`TNB#{*<P`hg^QA1$vq+;:* wx8oI; C3Xda`h|k]XUH&yWLQe&o+~sXGNj=UYDb#FAi n^J- 9rN7@.#8K]_H#?867&1" $PS.$1 +LZD}a]]PBOC|s`cxl0(E77QE)EVbtsE!XuoN( E%0^ "0q` <}wK-d\o#/Fhj1)awqvtQ3# ! #/>E>, 8SfohL^Le&?:$ |$HO; !5CILS]fh`J')K`jmoqvzynV5  |+E`x}Y$   2I[`WA!-FXekj]= 6JQNF<0)+9M_g_I(g]^i/O_ba^[XUROK@(K+-SCmzTR WZROWei]>?`pmcXRNC* %8P`\@7dX}@RG# &BVXA,QZM:+(.77%$%3QseL@A>, &.19EYjpeJ1  %/-  8Yhd]YWUOGDJSSG3!):A;* 4M[_dq{E,'$-<?){lms*WnlU1 .Z}zY3uL,#FNheN5 bpMh\=)(/3/,4G^lqpj_N7--=v%j!u{4gs`\cY-^O`K{nV8|jrBk_7@co]@+(/1! .@MRTQH9('@]mogaa]O6/PM*}mn58'1``-a`CR; zz:k`R<&"# 6QnqL'R|^sD BOC":Q^jw71lu8 @o":2`fQ9/1-o`XUZjJpuj`WF.4@6)"|<gqN#(3CXo}{hK-PyoU7zhm5L]gh^Ew!?JF9,$w:hyU)_WoJfqw}] %,'"?c|\* 7IZhphI*CRM/xfl2;>?@:)%/;GNNF7%Hpw^B##DTWWZ_aYJ6! #ehSA.\Sj*?B0.]zrL  8OYN4!5FLG=3/15?U{gD* {"B\eW8ysw"+495&/JcnmaVOC- $0& 292%$2AQ_kwpD ,'$*(?H;%" !ED+! %$ !..% "2G\jgWA.)1<?,#0Ijpaf\%! <J?)&316JJ409, A\[>0@:"  ,,% ZSy1CLciTL@(-MO>6M~_umu&*$ +;?EPdvvV:R&6GOD+.Z{O"#=LK>.$   =I;~yplu *DQX]cinjbO2 8HF8#  !)84$+;KOF1!(!+?LA!lo $,(!".96$HupZF5*   ':QeomaQB1     #4DOVTNB1##3CH>-" %&)3DVXE"($ +GPG4 ~+)""<Xc]M@>CEB:0(!!.9:3)  )6Gc[2$*)$ |&('%"1:>DPaowr`OB98?HRVX^iy{k`ZUM@."  'C]i`H+4P`^RE<5* "9GQWYWPIC?8107ERVPFABD>/!$}~ -76+""3S~]8" #0CU\XOG>4'(FYP. =X^UHA??6!$$*6;6)+@OPC/#3@B8(&&%@VYK903?GE6! }VY&2887882&,74' .AD:-.;NXTH?>@>- )DYdouynQ) ++  (Hna)7JRNF>EZs{bD3//!$),$  .76'$Ptp[H9( /OkqaD+!!!"6IY`\L9(-. $24*#0XT' !)!,90Ef3'OoqT,!/$ #6UwveSB/",)$+29CIE7& !* 6^bG% 6@6# .I+&(!;RQ.>^V1 -ESL5#()+//$2OhvrX*&i|O \wL}ojft$6:6.)'%!!-CcgA&".>B<36KmoYQOI5 'MebL3%'.30 ~ }~k)X;~ %2:8(;MTM?3-$ U\4%'('.6<8+#48$16& ,?>2)'! `IV]*+G${<ue/n30GG,5dp(8\U2&82 14& *$  295( 4?CA@AC=0 041..00,&"#,5=AA<88;?@8, ""! %)'0DH:#'681*'*034/*(),0237?B?-*7>DJPROJHHJP\qyM  06jj} " -8/  '7DD42YeJ/'?0'9:>PguxwlB++596+ >4{z~p7; #*   *@EA?EOSG+ IdRWekaH-!'#.7 " $Z\+BfPIxO-.B`gZE<DT[O:*)294* ".9:.     !!"-CUU@#   +:4" %060$ 3FNH8+)-- E`R 5]tvma_`_VH>;>A?4! ,^pB$#48 ?Q;Oa8]c+B@(-0.#1N\XF/ +0%$!$)&<.31 RhG  $93! =\h`N7$ '!4MXO5 .DH6?^cF 2W_A 39( #'&&\U-msL,'9RcaQB@N^\> @dk\I=84% %$)(|,'Hv{Y=108?A:( )@@/3=4  (<KQPLB2     +BKC2'/IetnU6     +7<9339AD;+"7Tt~`;#".7.  ")''+11-%!%.59769;;5.(*1793(  ,FWT<25!     "AUWL=7;DJIA=?GT^a`[TH<-  HrZ+ "29878>CEB:-(4<@?><71' $4<7+  !   (    +7A@<8;CKLD6))3ERP=$ ,1&Oyg3 $! D`V43LM7 6Vii_XXQ;$$ #eS aVn *8HUYP@2+5GZgnkgda^XL<+ &3?FIKHC8)!7EB*   ",*#"(25.#:LPI=78=;3$$/2' $)  &077+(0  -KVI2%BPOMUhwR%&2' ;I1 ,73$ #($ ",69630-& 0FQM?34;:)):ADJPRLC:2%%"   p -GOF?EVdbP;36;2 -M`ZD1/:JTXWRJD<78994-$#)     3]tkL& $",2,'.<HH7#3KWVL@9782&*?F0CI, 3gKJZaVB56;9+(:?3 %3<9<#-79/!   /=D@8.)&$!!$,:JYb]H& "68(,4' %19F\r|pN)   z *CYbW>$1;;7C`jOOd{}fE02AT[VG/YZRN%#L|o*5w~Q&$-C`od=&FO: %!+DVP2  -(Nla2 I`- A[]F+ )9@5"#13)   &@PXd}d '1% +34' '   2HSO:$N[C77&-87*  ".;GG+ErHN!)'&84   "&($ $*)#'14.%$/GcvxkVF<6*! /?LXfvmH"  1HYdhe]P<*! /87.$  (-39=?@>?BJUbnpj\L@:851,'(+0/&  -G@\0>  ##,9:1$$)("",6998;DPYXL<106>CA7* "   !   .@HB6) "(/39EWko`= -2! CjjD" ,O`]G%   &8A:%)>,>@& +Re]KI\wzeXZdgX="  } '/''Fi|rWBAJI.((/786/  <fh?.=EA8/-19;4&(-,'"!&6AA6*&+494*       lv -9:>DF<(5A6  2GH5'+ 5PWJ3$ ! *<B>4*%WvnM33CG.}rkhjo<w]GUB(+S_QMHB?@GG9#"2& %:Sfh[I?CLPE.%3:6(w}NT~|# FhV #%'1?IG?65<CC:24BPVL1%*" w>W`ZK<8:>@9(+582%!(62# ,.$ 9UgiV:#!3.);M]^I9?5(!+/.%",0& %082#.=HI@/"!'*"   !++&#+8GI?.! !!  '('"09602<LWYP@* !  7B@:541)/?@4("%)' /;DIH?0# ",  &* !3=4  "&((&(,39=7)#  ./#*63 ")    (57, 4>8(#+262&$59/ !*( $3=5")) )$ .2+'2Gkv7'599631-*('$"$ $8PW< %   2>8) #4GOL=-$&/698669=;0 2)  #;QUG2#-I[]SB+ &% ov\;/2 %Vh3 #<JG6 "08:<8( Clu`?"    5QO5 3CMOF0  *' -<=/"%;SV;%.d`$,6+2RO/6Ylpj_O>2+-9L\`UA.&',*  .87201670 ,% #+ !&##((()0;CD;.!)8GYk|h25XJ# ?a[4 &$.LYJ"";I=$&D\Z<! !45!-9-!$,BOKBIeR  ;}l;1@4 XnT'0T_P4#'9MVR@)  3GnFd(z <NOoK8(2B 0$#    &'   &.-'#%++$&>RXPA2%" $:\ud"x    +6989@CEA6)#+0/+'+289-->?7) $ ".2.$#)) 1@B;3/.)       #(./0-)% &294&*.('*& #)-/0,$$@hNeg+T\H! &8;8:GUU<2:* C^_H$  -12<SkxsdUQU[]_guwX8)*53 <=IQ%tk)/qr{6@7 0>>77E[hfUC5$SR!$/*!#2>A7)#.EXV8   )'VV.`X"'.`Y*-4(+50   #5VjdB"7.! (8CEB=@RnU& 0LSC,!'48) %'7XPGX88# CR;!AQF% (57-'-'3FK=$#179559;<625@NX[XOE9).1/KWO:$  0*)/6>@:0$"*8BA5  !('!1PbaO4 !* 4@:-&4==1 .AKH<3/22* ;C6#!-/"4A?6/177/"%9JJ:( &283%"'))''$   14-&"?ouO*-3 !)(*29:5/0:EF;,! '.1/*'$ !'16- 0JJ2(%$/77/%#.:EQZab^TE2+8:2%#*(  #/,"#'  )7?@9," !  4HQJ<0+.10+$(;?-  %.//5=6/gvQ@`b)i_"T|S" /-'22@-   $!*+(,:LRE+-:9,$+>NM=,$'(/KUG.!*&&0*6G= 37%+:4 0M_`Q=.&" 7WL*%$?PO@0$ ( .Jdw~u`E*   1IWP;' +0+      ! &&".<B@83/*$%+&") $.$!# $+7H\hhX< !=R[YRKGGKRZ`\N;*&.78)y#6) 8dtN" 0/!'+ &"!Cl`, CVP<,!9? #07:98889:>BHHEDHS]_WF811/)    $  &-1-$%6HYfnpfS<+(0=HNQ\jrhFAG&Con=  ?[aL/#7FC4+3OlxlS@5, !.6(,d_sv.9+ #9@2$8@;. .=@@CKOE0 #3AKOJC;8<>6#    0%06& <YU-NL (!,TbQ2&32&%1- %-( !-<B4x{ "KS@)#-6741/+'$$*25* ,90&A[cW>#5HNF7,&%*N7  )"[b=sl908+)FF3!%=SXJ;8<</$8A1 /'1]5c?q,VcD X}#w07B*:\bL. +;2   "(4=?8,$00 %00( !&#8RYN:.3@KI=, $6IL>  '!.=OYP5*@IHEGHHB;773'('@WO. E_Y9%-! ;Y_P1*>F:'&)Wtu`@#"!!&19:5.)+.0('  -micropolis-activity/res/sounds/bop.wav0000775000076400007640000001462410724145723020450 0ustar simcitysimcityRIFFWAVEfmt "VDdatahSxwPp#iWG:M'*<P{/q_ # Z(O) AvFM65p5KUTJ6kE~vqt!%%*;Sc_H&  2JW[`s0T SF~^i`(x]s D [Q- W d w#99=^xrp e$cB^oTWW&s*j<%~+iO4$2fG|P_G^w "MM>d94Z?KDa7Zsx]I>7"U|[>*+CP]u "'/4413Ea{w DzL5P2IWC NxK 6Z uI1 K l >ue! :sG/bVj`8^z ?|"Rtu`J2 kMl\,Og2<}ci)8L@4PZL]?s*MVV0\14('=_e9{/ {VGB4 !a+?-  $#'By%5W0jf1CdF |#)VcXS 3D] \'EF I w&J_FWw7_I;-AQ5.f1vtT0 z>`4~= HOeQoswB[Zbk{z=>b_r!c,1--8HH.T&vV,4Yu,U0BGPj'BPK!1go[+R ^ rb$Jn i  <WX  ' gK!M7-2.Qf+R|(RliQ7+( )o vZ2"+LL^XApK  \ldU5Ca(kPUs=)@\or^;s9T( #)2Fe  8c&CM^EVZL~H p Z}WI< e 52   86j5 2mF^J#c9rh.e$Mi{rE JC=/xY2$,JA_ z2<K ez0&H}O $onJ/86h~jQ9&QqA4?DIUk 3GU]fx $:Oi:m)zGuT3E}81gf$ 5 Z+-? T bo3&J=gP[`5q J~"DavJm0|6h;"0e3z<sB[![K1;b<}""Z("ZOsZ>Ln;9i)3203<DC>=Ke6X~fVx~`"r314J]C67T   8; {  F:| W!CHy$cg "K*32*"3fM ~b=)%V3)\Fr3oGC=>(8Vlv }k9tIo 7J0#t_ixzmV='&Fp>hBakaLAMo'/>]" K$j~^UQ,#9} F9   w {$_j' \ !L4326Yp^db[lKwp!RdF.CQ[fz b`794OFjjg{    ;tg$y6+T^3#+KF~5X@i>k{pqF`e;3BQTS_i|tSP`,o&j5c[ac]OIN\gr:S_l "K}Y.OM'jyQb@ 0it= Z B T ~%< U D3^1 _. i"%wE~-J^q,SltsiU,*I6=7gH5:{d= Bv.- XT%]BU _3 xyp3lb8Hp>vVWpx$9Y0>9+*Bk 2c %8@/(])AU # {  63 Q oSF8WlusiXA%q](1g{sL$3PgY39;NT)AkRVRxlJ-9I!5f$lvJ8?F9"6XPmicropolis-activity/res/sounds/quack.wav0000775000076400007640000001721210724145723020770 0ustar simcitysimcityRIFFWAVEfmt @@factPdataP|}uyx{~}~}}~}}~~x||~y~}xtz}x|sz|}|zyzx~|{~}~}|zz}{{}yxxzy}}yw}|t~t|y~p|~ztz~z~zxx{{{}~z{|x~{|y|~z{}{z}{vv}~{~{~~|xsuja\iZGHW_NMLPXLL[{UKLSysRMSg^RRaeZX`yh__q{nlkjqz~urzpnzysqzmflq}smozulnu|wrmqtvq{vrsx{}{wwvzmloidfnsty~zz~~xr{yxs~}w{|v|z{ukry||or}ywts|}|thu{wv|xlpovldholimrz~oojgos{pintqfcikhcrtmnulilqwmot}pjckuuo^[fxbYZem\fiw{xu~mjo~~td]con^Z[dzolj|lZIA>?I]wjy~caboon˿f,(<;.-6T~ZXrH@@JȼL;45:,)-CįfWb]ED\¼B44ARBBKrŽOEENƸ9.ͭ8*-E»KIպJ@KmñJ69G迺B=ETg_OIMĿ^mлZ5/<뼷Uծ <;&+ﭯ<@򿹽q4.I;7Cθ::C55Oļ;7OöƿE=Oʲ$Ţ66Y]73ר]*,KD쾷;6_>>[N>FKTPWNúM=IOLCiTVksG?Q|mJ9bc"ƛ-140LyLePzCNbKOEJOKOǮ/M)ϛ'-/-:D>@gXF^SRACacTʻCUȻ.+>+㰴<,N:Q7zNL]uNJHkuSmKN*ɗ(44LXºU=PRXRfPmMao^cLKTVX`RR0ϴ&-5ElHrݻHNB`QUU_Zwc]oQRVMR^r>Eļ>+]'6CI>XѾ^qJm]ZWn\o_vfSVUOcXVK4W0/OZ{UL\om\_oTms]lumZP[[YkwNZoB:=PkT|esfqn_qlm}td^`jbao{yvzs{rvvgpklp|rs{|}zyyx{{yxqtz{yotyv~{y~|x|y|qy{zu{~~yz{rz~}}zxv~{t~zyouwsnw~}vw}wxwwx|}v~|v{yrqosxyy||{vzvv{{x|}xv}}~{|}}|ytwuy{|{}|~~}}~}~}tyv~upmvst{tz~}z{z{{yww{y{zxz|||{~{|rwxx{}~}xpvt}~}{y}rwuvv{~xxyyyw~x{zxzyx||~z|{{y~{}~vy{s}~yx}{y|~~}|{y~|~{y~|}{{sz}}~|{|wv{wtuux{z}|}stqpwtxw}|}||}z~~{wxyvw{|y{y{}~~~xwxzqs||{~vq~wz}~px|www|}{~}|}wz}wv{}~{z~}}~}{}{{|~y|{}~z}{|y{}xzqusx||~~xx}ttw{}~~||}{}y|{{y}yx}|xs|{~vw}ypwz{zvyw}~~}zv}{}|||{sy||}{}{ux~{}xxy{~wsxx~yz{|t~xus|{}}z{~y}}szxznuw|{t|~z~}~~~~x}}{xx{~~yyux|x}x}txs|tysv{}onvywo[OTccUR`m][`uaXV[kiYZj`VUau]Y^}l[X]pyeelmaan{mnz|{vv~xwstynmqtzqtm{xyy~}t{|mkwsk}|ouz|~xrt|vljvsoprqgmzmw}ojiv{~we]gx]RS[}ye^kmcnywsnwzwypqromuolj|tihxufchwcae}xhemxuomn}~~x||||rov}ighp{h_d~zjK>89=IkWHGOaPOa_XdĿ1"$.chG:=iijA:=IeG>Hg]YSK]'/JAZwE7>ֶH26M׿@64nfg*+ӫ>.9CFDW6-JA@tǹ% <4+k)MLE4+n'CVEHGR,2_RE>T>\~ε%  *۰+"=N6IH7.FVTd?ijHMRQӾĔBм2sM>0d;N=IoCNfR^Ƚ# ˑ3W3\8*?(CmXMaOMOHM;Ku½. . :*)8¬74KּfT\ϾvU^TXclP;\zUc{Ǽ 5(.JwYTۼV]WVdiW>YpR|ɾ ,-OM_Ѿ][UdHaeZnR\jɿöN 5N"(<=9:Y6سH=OHQYNJ[f:[jQ޿ȯ!$#aO6FFHFCɸ?iFGZO}IOfIBnJ;ȹL--:67=1Vl_BNμkH˽DUNL\P[pMIW|ĸF%?("5>\;h[K_YJgYV`hOSymc|~V=EJ85Dmtnng_V`a\fxxuuoepkhoofaelgdkmkgk~yyvp~zvxzz|{s~mnwomjklnvyto{wwwttnsnsvpvxxq|~uz~v|swzzzxxwvx}~w~y{~zs}sx{~r~xxvxwy~wwvzy~}}z|zx|~ysz|xx{xyv{zz}uzuqrsxzwwwzv||{}~y}|{{~}{~}{zrv{{x}y{xuuxy{vz|w}z~t{{uy|~{vw||}~{z{|z{}|}w~wvyz~}uvy{uw}~~z|z~|z}|||v||~{}v~|{vw|rz~|~~}}zvzw}}}w|wrwt|~zu}~~}|}|}||}}xqxww|x||z~~|wstvsuvzyy}zx{~~~ywva\LfI_>e9>fOVL]N=ŹmRBSU<мFTKvO]`{^s~obvzsjo{wuzyootyoyvuwxo}|}ys{sw|}yzs{yxzy{~|zyx}|{{{oyvs|{rvvvtwto{|~}}|{}}{}~~}xsuwxwz{}|{z{vxyy~}{{|x}y|~~||ywyy|y{}v{~wvz{{{{z}x~~w||yxrzxy}swst~y|x}|}||w|}|wv{~|}|}{xx|s||z|~}}}}{{}~{||zz|}y}w~~micropolis-activity/res/sounds/explosion-high.wav0000775000076400007640000021241410724145723022622 0ustar simcitysimcityRIFFWAVEfmt "VDdataJ,)7FH<23>E@6:Sywktok{yhm"@ 7n=?8) lyPS- &J&Yg*c'!%|u'nexc6n zgFK& )   @ [ im/HGu=6q+tvqs:oj*p@ 9 >&L.sMx?6  p P[1@  9%,Pq2VGg!|%D}z)g , ?  GT"_ ucz#Bx }U+ g xb^Fo"E{Arc$C9y8^+ #1+ C;H&~0RGV { $ Dfp-,0Bxe'0hD|Me 7~a@ Q  et Ds$]8B9 ?xU*/ZUJyxmRx t1L = z x  Q \ H j N + A a _  G/4V If*] <k{J!"1zanq(w M2>DwTWq- R)(}RNx N %M}5 ` p` y[XmMc?~+goZk0;|P5(5`xN-QCSRNyp}hQA@$b~o,.  Z M_5 0 ~ p `\-G;b_>yMnzMQ[ d? L DGj  (  a S VL y Ad! PyZH9WblYJ*lU_|91yX(6  <I\`X2%o-2w8=l vG+u0wC#C*e% YY 0WT {S9n`ocfK> d + w[$TLgk$.a!P|UuaB  i$;Ngi1BEP8+v n <E 1 D+M F#] 8cm.Yr,V\qymh' C,y5 ;34}imhm"Q] a :qM'WMw|RBDR/G{ <_{ W 4 S z h Y } ` x \~xSD]pTqnT``9n *!=XgpRBmA&)MNx3%Qe^6F4M$ua d e 8=FY.Qx*U+j "q} Xlu~Ja 4cjq m 8]; DA+ 1=  IkL> !P9o (ZX VoQ^V_ q%z*.N<=u+++)Dr L _ 6 k6Fm^ku:fV?\A-M,0O"bf;chp  ;  KH),Lva0?@>.y{_v}[SDdqMA?aEA1_='=3s "P  p OZ3"![0NO}:Az>A|KH0Ij%wDzm9IA smf! RO3e+gQ*f,D1 &TG|6[ln jsAOZ>XD~  # >  H | - . u`MD0.G  ? t 8 I j  0 - j*Mg|L@FZ 8Fn?"p%[>SJZ;gt\u4nx")GB3f*DI0}cZ=8(\n ( S 1 "dr <1 B)";IAVN  s 4_Q?\3    myr,4y7CeMx72^ 1Z;$ |}b D1:Fy$dWio(wsq@e0$PmmB:jKig)4yojIR$  r 0 i, _ e-]eBR0 >v {u uo Q ] o W d   pgD-e"o iha0ZzI PP ? G/?iXot?jDJ+;c4jWzI 'TGe,.= "(|T)T[ g  f!#'^"2 cq# u i )^cM9| r 7 RB9[Q5$24S5VD<"N=bJi08S9%TG(ULo$eaN D Q r  `P_Btrk%$`rQ.!U @ }\ - D=P_l D G L i T E Wyzz&2[|jd2KRU\H^-ohW;n|=!a[Jx m) 2e$DC nH !T?S> /_ X p-jkpkp h @ r  ['KzY['^RUQNE9_@L F ,E.@8M8d #>WJ+b(J\.8U]P+wcA]^8%XeZ[cqH Lq^cf(mjok0 at #  b g h  ;t U y  (c v Lob F JGmZ*.'& >}/TycpdN`lR\>aVr} T $ Q J:<(|e* # cGI [{xn|x \m[:9UNXcih(5x-u EZ%z>2d m2Hb N -#,!9%r(~Ld_INFDE" ; X - . w $   !} : h @ . ?Y 6Xp]JrfN> tgnM/oH Xl"C7R1n)2 l ~ %0Y\R V-A9 afVG9v9F?w+#t%W}YdKm,9%y Iw>i| lnF5R h.%0u.  `(i?z (* 0Z`>y&% NP*+QZ*W0o;}y4.7KP&CN82 JXa Z>[{ f<CpvYg6(^|g{#aLGIqCA h2+7<_#UWkLiO40.dT8>COJA F h  >V54< WV/ s]f|~EoX[c*:u#r* 9 nRF$_} K 0 u  ^n@;n 4{R"Z#kE:l jc}pD  e  }Bj%2[% jP9/Y t 6\,w[8d*A'^)"_>6v\0`?:CI#noH:;|@gwmo p JST1Q < w{/32'{u$_-Y>cftx O  E KC 4v ] cq3 '  / XDFwQ^  VvlD~ , T/ ?cWn% ߥ8%dK6%_.$'mz5P`m:1JX9y,|4c=0.}Bc6GgUCm?a$gPIk2~mH.K @ Ce +pKAT/CxgAX4pST)i=O% QI e   'T!^NQf3[#H' x#K|;f H 'Z%IawT531Qm =5m1L E 8r'App%4n 2 }  * ? r m5kX:Lk^OS_g2M*2&?u-=1oPtSo8O9uBC RU0 f  FC=7xNGfxPf}?w  P%pM_U7 d+QgMa qywOh1ZEYFi, %.t.+:? n #<W#G6{aGq-.MnIu4Q}"d) 5 X  ? _)Yl  !1  N f)_ _(nM(kT"Zn1v l iUs 9Cn]'U[7 /z,L~ _Cwh@{>J2Y_e8[Eq,Q A l  n@ / 6 =P[Mz Z2,!"%itT)!RVFNDEZ 9VpqA:M / 8n8,y<pQ?ynjF>/%"!iSF@ *b\~^ ja9jz /| 8@E+ 6 F}>9D)O)0UYVB%vQ?  !  3 ezz ARXe[Wc<} yIo2!Vl'~xJN\ {27Z'siqxg ~ [ 4x(364Z`.G4+w0 O h Y r 5@^(@/r 0aM1>%Zg30)[.Cs\fZ62PHT"K] #Zi"4]w|,z #5r.8!mV<0GEg2a#vne1q~yWD $`"6Jxf3]wr' oMV [ w-5f-bU* t4rS* kbKh9g_6/^cZ $a - j | 5 r A R S ;  g R  K 4Kc3 3HMn'>H!Zco y i 7 | _]C*! Z   c e:Zn0d:74xKJ;F})>B` s  k) t"(ys"V , 8    Tr~Bd X<?={2>u.Y!gx>4t#!< ?"84-  /.9  D N t M/z |<"AB ^8}ng.jt3/K4G\rr2]l6J*JtkMxbb2LS +q(53\z W& Y c S  i v  V  : %.:vQ?1-V|&\(y*&#wJ 3:V0^a X .0q4TTRFU2Mk 6 ;  M;puas'o zi%LQ  a w F WgsNAiG?t=3=DrLue E |lHOE%I (NMKfx # = n D  jeD4-%T >h^VNZXwX%sc-dc@UJbfiW([^ n "`f | J* .p n 0y8:B= wx`S%7-.Z?3|lcW~clSvfp6Dq }C 6V;T70@-ANN#-u|iG^f !k# bD $/^$t"`A:Gc\SJ&7EpZ}~ jh062[P# q BCamX^shdP< ^ r;V l  #s:\ dA,X  S~Y0m8J F V=]y0dMz>]D b?=O'Wq:"X$ Z:Lgy WTK&v-](b mf\ /H^5/ wTk+^3Q`Vrnv3 b<Bx ;X # K- V# y iIo2Jy M-@E8w8pu'\QM!  k*XEs${V@A*x-TL9!]0 -WK)C>?\jgm8+RX#fhH f2%kc7\   h  3    3 k 6o|<;jQQ(Q3oRnqxo3crl iX F '`K. C  k ' 3Z+uu(bO`J#A"`mVQ~ >m~H[,||Cvy U V T 2  : : ku ^  ( A{XsNLPk,mJb MOu"^Y,E N> U a q 4 m J 9 ny.2E\~[~ ( auY|Y&}*>a[MIIc`dHo+26p4jqSJQTJurv2 pzi { \n:")MKe#AA~)/TT "  F `i8c ] R A e    70p~[W(B"iQ!m( J0[g>Qv;E!z=Jt=`bB W&eweW(L6&R(UC~HE]W2:$~<*PRtjdZ  ( D |I&Q2Y!c %Z&~`J " UO Q G<nEjhCRilX;b =Acf d f,zCn'o| [O/ wv S_ku6'8|m U Xx G   O7rm-E'$n R {Owx) U|!P+ P)>D9}[_!~92{\S7oVy2{-^$d,uE'!u[uj_msG}9k0Jeb   vv;c B n}k[UTa#XDg^b^BY" L _)i( ` `R %O.y !%C[^-G!Xz6 "}k7ip [ )Phek10d )R 3i:1~4^/;u]Bn/d@7L|+8Abkv_%^E 8^Y9 )  H j D }!pQ yH[^WyJZBl dIw oBv^e1 N\FS*F!=pjz@7y&jZ]P"V:3r$xg_o"s 7"eu!W+- ,8QKj=A&w &+ 69fI],>W!>edb50+\bsOZpS[f?>a~+D]^`@N*RN5> | m.=S [ wN%4F[]GMT #| 1 egd4.!_o ~*iDhRN *+/Bo$Y;_pd,A*2j@?FC^<{T3|=AM K $'f~O W =NsKu  i= ,Xu`At< V[IKfCKDLZiUM{Ip$#TdQ_) (= \>8F ~vu0HA3U uh L _ ? mP C Pm ' g 2~ ) 3Ai9i%xb74i&TJ?]g8WD "}0Wo)* 8 Q t AjNN&.RQwS?5S|NU8 C=dlfw  j3S+  y ,*Y yI Vo\.K- /]~xm#geD}2_tF-FUm`#}YL .CgM~JP4M-#L|X'1m* + (U^qn\   =G _*  zp#Ih4#Ub5x8sa D Cu} ) _ &X ab%paKi2"&>{ p_w7LKDO<\ : C C " s943Q]GA;P!]TUa3+&N[ZjI m d y P (_Hzzu = }g N  [ R  =QX,i8a!Dv(5JAG!aL"pO5CIGQZA-:XIs] QeiI G l ie`ZfzE g `1pRN" `72Odb]cy99a Xq=]Y.`&\lUWPcy6kIJ{|ozCT3( i : r . 4 q \|jN/7, ~Hl@u~]5X&>h^{UshA%v !APv\Tr>2 9 + ~ z =vzZfTvnguiq+DaHM `8OOP~GV2gS5!6)@|R  ,  p  n{6S"X]zLJ&~ vIJ[=FlUU>c e , 2 H  o . a l y Xrw6\Th[IQNzKz9n{)Es@ 7_1  jH F R i; = @ & @  2 tf N:yQ ZsY3M;c86(Sa=YR 7nFt@ A K  G x < 7 acYpr < i u ; 8W1m?)-n 5'7;+ aB~3DRH) # GIX/ { 1tW 7hx]=Mdl_0Y;&t%Y2]LIc8s)op@~5$H&# `   u S   X x7G V:9{t_KGiD5&L[X1ch?4K5 (`y5)     y u  % k D X\ID8Om $= %R{&-tq9 L u3SS?mod C W x=lV4q$#pVi  fLJ<7=bFm2TURQCC ~ ! f t <  u H :)0tJ \& G LUWG7%Q0%l0Lm'uc jV^! $cnf D  r7Oe+F0:{Dl]bP B>o<i,F_KqSjk$]QV(= ': #v  ; 1 C ; ! &   n{Eh\QI H[5bc7g`Q]_rU/ C@  ~  ] * g= _ w Tqi5FSWX#M/hzRY{/zHP+n<] =0y < p aV3$ p 6 t < 7 \Q }(v / `  ai`  YVw{Us UI%iG%#Kroj>f;9mNx <{TA\[YK] SW#  % .y  J 2g  U   } $ 0|H197RN')zgv QN #i  ]&ZYPz-w2w8zixQ.t+?M ^$25.;*h{Bf z_KSfF  l Uk ( + ` ,\ # Wh13Z4A&xlcoAy   d L f L]Q$O b2]^m  $:3py4`E& z e >  L @ z WWL.tekXvmOu_a CTX]ni~@|<p3< }3>1tY 6zZ $ , 0UnAEOms | .G@xM%_%"3$`O L t>PW+G^| E3,y a < DZ U  YG80G[X(CY vGhb3 xeu>v df / j $ k]^U0~IIzV)cf1Ul38SHB;+E%,]8?V4 y   m , O Dr z _ E *  +a(Z   :mjVz,e )  g)}.&0t+Z)KBB/0{sS0<d-h Ab5qk8J#+[Y_+ Z^<7 U|MQZWa7 9 Sv  AN kJ oo S d&; +8+!h+7tmVete[4{~|gf/y'npJC 2 ]vZ{# l1>GuAPBIZ?+\p}~]wU X     " kI+<35sy\ J8ut'W  % yvZ>7\tB4V3"U>    N,^ \ a F",UC.t6F uC>. YG\~DX*Q[r1Q !jg" & yOTM  u O&e Rf NOYLa-/3G<48/ISm@2nCe%c])^n m s Z h * X # f  ^ b cA*6Z*(\fK < z ` 2 d  2e+5Ow5t7*Rq^%9[JY{n%'~$S7_Cp$)EoErxit; 3r F Z ~ 8(%(h0ozAWg@W/:R{R hkyUI \qV H t I I o 04*GN"/s6d@.vl"M=.Sk:09G5`\ rcpfYdapieZn3k~w* O R U + J  /@A n [ 7 !fCXsNv.a8O*7Evf,d;6IE9 ,(QJJ>KpBkY<%* Q  3 Ya % } b  7 H )|^hah6-1!wxN"T~DrS|Btwq- w$r [0(;JiXu)| KEC 4}] gC1 ; 6X ! i@ 7sp ] R w S s A )Ah TX%7fo_<-R' b![y$!F,X^ *~ k T  m24 }p7U!46j{)?[Q":6/acd89  Z8g S(@l ezgA90wh/1 V)^ BPE9luHQ5O3lSL\wg_  NY] di 6jZ>s m  E+ v\{]cV =1!d % ;fJs$<{ P7>k-@1d6uNj"'R 3X;R2D 5.RwRvnxL\.HI 8  M  { m ?AaVmaM~??1NdVtPJ $$r6XT 7 9 Q bGv= t X  >{A oW=a](* ;m,6-gz9B}>h@b ]   6A 0 > A= + `_ eJ 66 <_~H  (@'H$gZ~jU " HL>.%%Hp0v.5*P  4 }  C / 3z# 2s !~t&JdiKnyUM(/4h0Pr,5Qs TfT/I;L b]  @";5_k 1 h //YQ>((v$6 q bu+f:<f {R pPhXE1v/k9>R1O@_NvF3N(5UlP`3c =a }X C IuEk `[l 9F   :k@yLjmMdY0kaI&H8meX/(7XUXX<8w'+|n^l=H?(> r 2.RuHlk}W2d NkrOYte~C/s' [ >%` PN-@yC]i)\qYLiV#bf%/+ l Mf'zW9AT131yQ]?SNR.GPkF&;bd?K3 x   JS3|0{X0Et4A5"  x PTy  r X os:$S4k hl i;]0 n!d]kA Ks&xVJ/dBi$2 d R-($.g9Z )A j_wS({OO :cOL R .'u5Zpe~Q%,L7B[  Kt > 8 Z ^ 4 Dpj&GK0\}|XfG"/ B !Z ) nF,t~obgdWyqaW6wR.1{r"Tk*7p~} u l?/'La!_a``5%5! 7 A ~8s8-S-}'+B>b%yR5ADp|2D2#{) ;x ! .  V  n8}1# # YuYF0j C2Gf^{ W -, 2*+L@E=PgaiGu]\ N  W#ae{.2\ t M-3O;C gxt\CCCyV-)vRku :me]I}" >G=^`su u Z G  xU1: [   y *B5 t {G!z Nie(Ls4m ?%vxi X<9Cco*F6 }`w{. mw\sh$[' V dlx;84XI8V )/" # .>"3bfiP'gh{m q;|$2G{+! oJ^Q z}/5i 9m C5;5Rx8\ g _  - 8+QUpi)*>\hGU9cw roUr08py$iB ELZ9'=- 4Nsm  ?  >54s  q n 1 :2r\ Rh Ufhj7FM}:]G lw l ( $ cfm'` L v"Qk*b$Y +g , < X* C $ {zz (x]P:\J>6Tk)+j8V9;o f pJm   $;,9d ~ Y * &n =>1 YE<k.=/EWH?d0@=1(+8Jc*Ku;>h F ? , ? = =)%=w.}4;U!$_xZS:mZ?x x M E H&5%jks7Xm wd26/e'Q$BjK|U[; qt L t G N%2(W & 4 n  1b/X= #  TtE  \@A( 2Db3} _ rX7 m\ZC\ty   ,l5s]  -J%:of5Kt-ts;"%qi/Y3=~ m[<  i(fs6Y 7 6 [ 8 8  Oj ?`_4{gf?;C 2o%JYtm# }EED'[n6B!V%*eN%Y5*!mSy C y2x` o 7)pXCJ@ xI_Z  G  S s #  ]% "kj >  $ xn%y0ctoA4Lx +,T! -Ze7 _AjTW)v~Fuho}US~gHz6 %TK khM8pQ)}k`&(84F"(  V w 'X @$. =BRqLT0H^b])*e`,#W^rZLV`tG7dM.n?v(F1nZrT (  A g ? Z ~ T= 4L  S C 2 o Z  <J ^*: lHa6|fV|W,<i7dM~R 1nc)S'04zjBl{6wN?6   > U W6;w  ? 0 <  Z '  * @/ 6g{`[8- Vrube4AM>~8<*G-VP o 5;klt;/Rt8Dx]#|c`NS0+R"e(.l @d$iA+j:%_6TxqK`FIa&g1w @ F Q ^ q 1 :  2 ]J & /cy 0fB lv 2 b!  Dr;xuD" T MLpuq.I7mp%[q_o}*1[ . < ^  uF^o Ik.Z|Zy2O%Y!83yWHrp{OQ^.nyE S u _ j J Q V 5 ( \5Wa+ ;)_:]]Pm=+ {!i\6r8JY  K {q-X r  jsNuXZfV?CGas,;Xi-kd&  z,5TDtJ*2t Gw k 5uO Z8A'TFr",l~ m{c5P*#/f:(Gt$*& U . q}EqbXw$7Bo3Q=8AU<0 z>$1>I M'``fd?811RN dk('Z_baI> H -7  4 E  y??  ; J[;E"h=)6AMS2P+JVhky!\"f]w~^> @0bGjx'Ri&^:('E]=Q/!?JIs _  "#$ u M t  s$&G [ @ ) 8 S 9 B~*T/QH ~dil]i)f`U#$YC/i<b8eHkWwI  @I0 SD?K] i= p0 6x!h 7 ' {WMe$R vBmR7*3s:1[Y"0"Re 3IB'~rb%-"7Xfl_ W}Rd8 GjB#&M &{C e?~3V'bBdC]o2 'U=Sq[  u  C 3  $ . wLHQ"sF)   2NE T H E.Xj(g\mUh[_&  /Tmq| q 6r J/ - &EGW0GG;mPnz"6-(M'`R=-=p-8'y O'*n$4  & b O  - acCT_ Y0P s ns[Y2A%Z<#m76r.k* 1h'  0 0  4 G  b};PWG"=4PLUw)h-aUUQRVD&ClP;$i| g63602 =~je]Dux>I %  U llm Fx `a;( PR*a|"Ym,!rYNatxT;urRa)N$o=KC V ' 131 % G  lY_Rc|(e6k%8tSeRtc* yF {'  U u ? b & %FdU6/fS_R_3>(g *^Vwm ) ] P QUB,?=Q2^bL !  V De5^`sAw1. /t  'oAoM%d -KQwU1 v z\`d4-_xL n *,T-t~. ^y3iv. 4 *5BG8RxG" 9}-.^(- G ( RhLBsM!f KvG8*V^zB;$m CdL8J>$SA  0x[ x~CQ\"5RdF[mn}uiPMcF35:gU7k^w9;K D 7&Rw I czj-G1ij'"B T WGCVD$gH:2J/=nJEVV &N0& O Q ]iAd{cs, 4-]"wL "  ' h*n Y # }Cb$0M mS}'= B46ouvj 0 O qh_IzH@. ' $   b _ r4,m%:=>UV.&qm) p Jm)6$YC&wbWRKD7=_ZIB:o M Q #/(2_rx(?7jk8rdz{o\$N` ,T]I XEZ|-dZ"{^7?Sg T+`BD8ITUn K[1o=6KyJC ij4xu `n 2%m)^k~%FgqnG f @cbEqh& PUM{fY(&=kLaIdNxAcO P~#1n!J|_wH:tK4W-4  uWk#DXNe}D0;E!li*-Xc,'y];Gsf# & jVuC6 R}   @xx":@Ld5j4\C qXB ^ ! G z [ ADl&Rw6Zq%`F?,Zvt3"h81/* 'KokI"rD!j{ r mhX \B By o I }}wb*w(_!nV+<tcJ\ R |ps,0/5p=G tn#Zi>&J%|St2/ : }s(tl9  <%fGGYJp>. }B F i}"x*T|jl^ { f! tit}Lk!>4s?u=Vh9wDsylQaEbx.D/5+m uk9; 3&C@6<|`&<a Fd:!#"3-Mk3)( UDg q&/^7*0pE; &}l8l_: S ] q_f D% PEBK9+'CIkp*hP \ S(0wWL;$!1m,-W$bLfqwM0EY_%fg< 3 Tgbv%sNiX;s~BK0bg>}WgH<Q(/+n^m I#\r$ q@wB U%UnE;<'fzg h 5 fOM~n n ;U)Y` ( F &t_H-;G3ud 3 dfHE"6 6k%z@nzlT?54) [   ~Tc- 2gFo/?* U7GnQ2:$YTn=[Mi2$  q%s.x 3ZB  -2Om^m*L$H8;[qmhC./,#E}<)(^ 3 ?b6I'(/y} lWC3$Z^<&^?>"l\~L>xo *  U D A D c D s k cPg={ c.EeJMA0a > 0^STmB /(\V -Hpvol ?z  ih 6 x~J6D15*syP.i;ljO@NvBfLq\4MR~^B~^St0-];?0 (eC/b$3 \E;/Q]kN+Reb3P%_e>nQj3=\bqcpTbpX>m{ (I&Y x v Ok @R\| ? F1s`{>qVhz%,8(Q3zo 1? ]{N?5c4<NPjw n }AY=g<{4| cN;H*E`9z~1 +PZX.r@ OH);iSW#GA.[T< [ +.^S & C u  W s DNP=T2I(E`tLL6Z\#Qj I6xPQ{9RK>ezXGJW* @ I  ^aO q r  $o2hGd"h/$lSB3 ]aqX)+ \G|b{gf5$7+S+aw6ES^`:fcUPH6<  W $    0iU|K i H)@- Inarr9{MOiE F+"=Pdxwq=D?A"`Kne5trRk6 u -f~^zU#4oY h N GmMTe0"u)|9>V;;k @ oo lG2u. ?oWGLD, -g 6qoq==_$:loXbLlyJc]USh%A+DeZb%euMC1W e1T&@y<Q=0Nhv#EK ;6c07"Z$,dq4kA[>!i]C_TQoD?~~OD \M{,!)T=v H  VyX1|7 cm*2 1;3 7 k    z g=k=O " 8 _XH9u&=iw~Raee.7`}G!WMJ{+>v7lY!s/)s$deD9[T_fdg=~ " >v 3 j J g mX B RZI +~[p@@0l9!gn)FZ;1]< w" .VjSg'={SbXUEpl7 2 v f ^ 2svA@IP_DX'};w>BmBM<1>c ?L2,F'0A&cx.{:l5b f#'G5u}q W^A8,a]z ] Jv%X)nc+ pKO+y9lLdQ 6 8IN 2 4WGh: .+D(""dWgaK-m 5-nI3A.d66Mjsa+gXXv )*gP:#g|]`^W'o"~e[dc8. . * ")lkIsaQk &;J$?$%!fg{V|IY(m}jk;AF4p1 pk =6{@jH |< {P~(Z4;AbO +=n /9`Atx ('!&kDVp4HFg"(0z32v`q/jGgc!747\.-V]k0dCm,63W:#2  }a}mv7 n"- z]TTmuD[6_sjJ[GpYQ1q{ 9q|(JR1z+T"[|X[@}Wm' Z;s(9^c  pI6)_a\ @ *Vfb l|x;zN1%^M@nh7'h~~{qj<)\WdWSa2IR]y#C8Yr! :5cn=gJfF  Hrt(+C J|8A a0SM 61ps6G`_ayz&g67&H(s8{uLsi@U"n4q5.Y +BEG8 $[K4rZ p3>N!tw1 rf7#RcWRyQ#?a@x@WGACpL*\^UF*9D~1oYSbJy48J'rpn3(!DlIsZ / U Sys. \ %M2~+m_bL7zp49%3ui|~?0s 6p3A *J%3%4:TaIQ$r 2p_M%>#Jo 6FW(hH`BL+X[Cx:I.&`AD8I4n|;U %QY }Q|rvqV9YD/'HW4OlI!}{aK@(VK1ICg:BGJ;IF?3-OJ2$9g'#E HW?/| dO.Y+>Yq}Q8dx'  ;nCjK6a>M+`(3IX[]BpSha3)({V|PpFn|CI\? G  Q|lo;[U 3gmLTAoA q Hcj cmlgr@3A  QN3F^c(%naIm 0u9f%A#$^M$P/$|" %B(1"kliI+LI.F_^[ua,Pa ZO$bYsS07u*G/F)\jEF9wFfCB,  r1, %0Y,"~3nC`wCtX~,`S6BDD $&k`d9Q6dFGjQ ~ \Pk6+gp%#CX1&%.7^24yJ,p{5sA@P*7T EP;v~a'nIi &=$k("EdPGH0O:hKm_z|46p%xX9^sd ?V71ZEN[t])R}@Jj1si9O i[Q[2S T_"@mwq{sh<aM&/\,4(hR * }z@`f QckN^iBU-)e5>Fq tR/58hn"^kbST';oRk]6N [?_[7~Ll=3g@E;~Y:0%"IbD/|s%r)Y vxjt$V o_A3lgC^DVG~&4XOpgeVr R~kn ^0B}{Lzp Wlcak4rC1BOB:h CDLB3_}EF7J;,r2nr|Vxq^ZYx_jL*pq>0,.A,!<{)>O:.WGh_>p;g&7/FnT6;l=|grX v! ,:] b9*zUKhV0SeFGb  J1-u/z""0gk`b p^5;?|gq=k,A5xwn_^c"!WJNN\4`Ccnp$=.2[fLqIVC,55&R<dzN$C,V7!,   oP3 9(x$$JhJIJCUr?%R=!%ru{ v[#M8ov^ ts}7{HBu<>dn 5w4(Bdk=~j@1(2F0 M#Qx10ZMI[(=Yjb[ ~slx$6E8Ay*,6.H+ V`0bQc ~%~92yVK!^[wW@P_3j*E]rblS3AH_j3JO5D<>unB5v Qo+65hwt0=+ $SVdig]yY=(1 \C;2t F?$U'z`#E5E] DqMz?0>}Y :]>*gUR{9aRDUyqy>>&"U;[<?\(oJ0"M&QAdF^9 e9~XNyODZQ[ggv1WPGlrp"Mc?Y_)l"y4/}x8ohZf ~{{@ bu6,>6lw6W (Eh,XJ~dP&? 8!9Zgr y8Zu:HF3*yC\gxh$pV3 gJeX|5^9} 4 XS4aDHk__ .08EPOb}]*&62QjeejT$Wxp9nXi,mre.^}PV)3.5Ur~^6P,#o:?enqK* EqLnvsY]qc;$ thD'rn3/ s{Q4xyoifOeqd69i>T^8BW?"lk6@wm<=-?'MmZtGA5YR}hKY4l//FX6F(C R%%sia 'DQI9$ i/J:-}kn5x.k_s-kK*umt2B%7s?MK S!bI| d"6iW'&1PB6_W~_uJ0%O==LjMp:s$nXWi!c *|8.Pa2bG* _1j?")ZL..|v[w r"5qa8P)/8,,_dcS/QPe|38 |+3\`&+(cNv"mqOel<$x#g;G&=BRo#H{akWCz1Ng/8*"sK( G)(}15&l~j}Ab=.8>oMlg?>prkMJyTR &jGC&aXKQozV?uEiL$M ]3?s; l/I~E[B{T]{v Ad*RR0x[* 6bpvF.:-bo$!NA[Uk{5\VK. P/>*.:sB$Qg}e~0zV`%{Q-Zbc8ihGkw0z! $5G^6xqP]Jm2>&H,|(wM`1Pc291| *W~#0 &LUov+s}c:J;uf43P?p}2^j h`zfD&oyEswWc}7n.1%ix-'}}(E dbDBI9 ?Sg?+VE`3R4 FC/Cv| _*C/U_QYd1ypO"8X\VvTW*3lj]-G;<sYR;3HD zi$z"x/ Gx@IH,9H]cK 9NIfX1 otsa(B!!S"d39&"IN0 @=+Ub*bAZ)qL 3ASxr{\X1E;OGSH'Gq -p|!%,m>o_>La%v!F93)C-H>IGYF|zbYCtXc07k[]  _X>J4{"C$,?4R5@M;rK91*-Er 'DO<74*dpyB ]+il_;H 2& #JQY-Q4f3$m9We%6NCQ'(?TS: vJ,[:S'Eoa kis,-8IKA2-E;F?Z7 E1gozc>?}#o-/S7'1L3GR.Z+n}@"d4Zmv4GC!gBlf;a% a):u MJ9d a$Nq>M4(GG G {}fzbwp$G&/2#8q)p4FjB *u ,HK,h$KpkaaXl2lsQ<=A3N~z{N  #   x|! /c-;=0bn6 4o^" !Yf+*VAy =H+3A@;>BCA@A9&  S37<'<>}TV \()j'8?AADSu}J37@; \ag0!0G]w  sZg 8k6UIv  P2@|fH@GF5{mH:Kj|vp Sf<(1HTJ0  &>>#  +>GG?* 8lx_B$$9EJF=,micropolis-activity/res/sounds/coal.wav0000775000076400007640000010575410724145723020613 0ustar simcitysimcityRIFFWAVEfmt "VDdataNeaWWbjdULQ`g\E2)'  '$ !BK@* */('3BSZWJCENVQC2'',147851+*1:=3!!"'  #/& .N^]SB-.::7:CHC/3INC. #3ENJ@9:CNVZXRH;/(#   1QlupcUKD>87;@A4 .4/'&*23( "(:GHA88?JQNA1#  (\yn<~|umy76 29* 2Uon[GCOYWB-);Ue_L;9FYee\NFHYqlYW][H*6LM2xlzl17& YhVLFCMgolql[JI[hU!(MJ)ftO@ |s{ (9EG</,<_}^GH_wy_4 =PYSC-!17+ 3C5%Pv{^6 )G_`J+ KnkP99C=<tizjyouz~ +^Z !HZI+6]yxbI?IYdd\QJA4# +j|=(GSJ, #*!'BE&k[e|#8920<P\WB*/GQOGELRL<+(1?IKJHEA=;82& .59?GKA-{}u[3E6YhS|\"TaNAbl;QfyDk+uc :9k?o$U:"wb lJK YJ7C-'#$ DzYShszea(Z5yIMPacCFL)=!; h#SaJ Chdk)$W@)O\q9>u.a{uI0rw!f7]dMU26>!Kr8~}7FL+v f?-/@f#IC r|09139VvB):fxf Mj},yI6 l^5r?f|kNb!-G39Kg?g&osr'Ya %PPIyHkk382p62}f A<U $' Ni_}-L"uc(Ry .~ !PAYsqMn8)y_k3e `,"fNM>vO\ +" 5IF2(^qV HzB4. \fs$Ov m 35{-d+T?io!ujsJh]"bTN$Mq^dF3lb;r@5!y/fXs&%T0V s  (aBRZd["/LNQ ZmC)\r&cE3?h}B* w oy \37we4%0 zA(@)X]$7) ~g7 /lR !@1/^u!y!1a p7P uYzBEtOZ' {Gt[o9h n{@& x6 X5O@!^2(0886Dl ~$'c'[te1M"zo~-SMP J| 94%!+1[t[8Fs'~6o#&#Cvh9B |5v,|V7# ;i~_ =hN:1=eXj4Y`PINqDO-}G $"7E7\% {`+: 4ze10%S4(}1sC0g#]A@(qd6}Ml6'wB\KyMmViSU@M>j.C6-P 9([f j a &r3 ~'Gw֭ΠftE֒| q } e zxB - E- m /,]bK & = >mo5  B hnYEY*H DwuH3A6%y} &_C %x2U`[^jkOq,v ?k$U1~: f \ / @ N~S _&Pwb hNY *$J󭑳Lޮ%$(**)'H%"1 Yjx>&+l04/-,'`#H&'(p('$ # _U" r+ `JUy^yv   .[-zR827W[6O p n  7cgo',lf W 8M  ?5E]!2 x.eځHùگ1`9hשV  %L+//00D/I-*;'"W <8;9L#D`fCsN~ &U $')*)(&$   Z7,c1Kz4 4`Z6 " % ] Y0P^]/tB "C,߈7Fb\+?CI D > E7 ML;>FiQ@/ d BeO-+ ys D <LاЌ"TֱѶ='@PK6&n,004788'6W2-)$] [{0(]]V ! 'm #l%Z&}&%$"d|x w V[ZKG Ho|] -w3ls@W/} WXH W]6 lr/qldG9 O *f"z&JU]T .}nUG鶍O"u{8᳍%h4^'/6 q"T$ %Z$!"ahd xo߁ j#Dp=k Q1 itxt @,+nmz'/um1 ^,j 5=  Yy}Gk+toMW`@E  Y v w2S* zqg{Ϊ'Ywӻ{&͊0 )2L:?CEFkF>D?80_( #M zi})!5OY/3-E Y-| 3$3m{  d6pيܙq|)+p yu/LF VpKt`P Oy>Fy 4q9# n <Qu &_P |)8u^9 4H:լͭȿ(iiڱiP5 ! #+2i8F=ADED+@:4 /H)#9 r-vVV"LbSt P{ TCu }2n޼݀ݙP (b 4 [5*TCQ,9-9P z[/s tFeuV/qAC X z 6JhcN*0 9ek udܔyȬ7NM;\-j˼ߙt ; )06A?M=093l.()<$ = SS'h$$|p10;4=sk B<FNr7*$ _G9uH=`xxW\/O) p:lj}x 204@=dK[75pr5w: kXJ<[ md6UGgZ=H"Z "!DUj1q |fx۳͉nӾdx ڻϭ֌U$0I$*e/k2468W9741/&-*&  3hEs:3bD&k 8]/G;5 p`PT# w +ak}fA)o7[ E !.o i d" j!S}wa6f7X2[ 1O3  kVC<+#|\XSw7%? h `o lSd &huzFN&mDMϗ@۹ E2!l%)?.264s432 2110,'"H% "dW yx DZ . mq:  [UU.4[  #=  ,ziT>CXcNc^Gl RV<ntU9  \ 5 5]k5.I)1V1T[B ^ 5 8w aGS)ԓ{ƓŤłƢB?YDd8(;r#E  nXe,&@T v t1XPuAG%sT#J|< D y6 O %!e1_{ ruE& U B1 C&{ J _~t?kp _W"4 l A  1 = B A 7  z R 3 \ Cs>pAOٱ.Ӻ%Ѓ]0!:ޯ$o ;!$g'j*-o.W.-f+)'f%!4+ qX7] !l{|elt("U  t[&   7mr[J-g|KEd{Ksf y = F  ? %-zfNz@&%]g".GAm%  MD5k e2,SEKu cy&T:W]JJ6-g(Ma>M?,`kh,<&W`7: pb  \$  li?WOdyO S 'g'm;&N,LHA@IRRB+(EcpeO@AKQI6% %-0.-28:4& #2:90%   " $ASRB1(&%  4@=*#( ?JG;47@HJHEFIKNT^hi[E1(((  | #0/$ 0GH4/<;.!!4Nfsn^PP^muod[WVSKA92-(# (' || ->>96;BGJLPVYVRPRX_dc`YNC91-*(+3BQYUKA?DHB2Fnn;{Rvg@%)?NJ6 "4FPOF?;6+)781'%.<HJE:1++1;EH@0   (AV_]RG?9752,! !"  $(),/259;;5(  00   3FPQOQV]`_YQE;7>M^aU?/,22("&) (;=0! + sgskjYI9`fD\BTHDnt-Cw#9LX=5[|@)j>@{z~t=PpQ}=. +Tr v u E O I8f+@ >B>01D?h"7E k}U<3vM ݏݶ7+؞WOmLgܑLmۂVAۙ>6Eb\J\  6s% "o$%&&&|&&&%#c }z s  ; ( < "gtaV[8O W?0<4QZI;%(K{ixtr 0<2{ b&-u,tZ $FLNQ%>[Bya@3LCT{h ^ H  u 5 ,D26  -%RO ( v8fJxHnARtjO%UPZLu}@o 3 D J B w z }AfE4XT@m5{[56x]|n T E Y q  ;  !XqSp,Ui~m}< ^uj6HLI2r#W)aA#%<9$`]vHtD$y9?[.hGIeG+g%G/JeB;+Fa}JG%YJj\RKb,a&"~r<Z( *jo{Nc^b^KDl(" W-*COJ  Cu6y2*=v\\q*Q"8o1~ ;|G?aZ[7pmT:0kqn9SL &Fk}id]A a1D7Zi2 YqDu8rr61G^)EA\C.hOK#3X] yY:N9@#GVV&l|UDW$jY7N]N/DPjL}d4 a!b_"E9)B6Kt:*'C; *@&z4Iy mM7-4&S9}w]Iw/I.%2ge}uY@ ^YQRf'%4m_Ql!DE/p  nGS31o <'TP ENl+ 1r"+jcW\fu]g<3g7UA#"l {rf\,$ 8Pt`i IU\qdAeUu $/OwL[e0n42A]o` >PnPCA1n\J0W >RJ%d8Q 3[G$Y\gxt* .mSkPrSo 1qLY"_i7?Qs_G[N[n [ : Q߯mpQiBk_kYI^{y .?F,+;wG~yr.?YcvZPGwf&#Qmg0./"6B:4S gxOd;T S f P&L ^(.hPz' c2uOZq_Pkh8`iDT*fDfmcP?$N][2s5y|4' f$hnD=ڑ$_JG{POdcUg9l.n c"]0 |*d4H %X} ;# UWw;&]ykWE>GYim]9OB#3nRr=dj^O<leUh-.% (,3@^o 7.!5xzWJ0;7Abl7\UNrhQO "n 4)q@9^Ew@#u"L]EKHۯ"M :  t h kem:HkN t,= ) < 2]-[{-RV|>y`qOux0] HR{;F'Wm tsZ:M1kV (yvt ]uO/j\ B9QjP~dqwVN|O,fs)bLK^|U(:g46L/1q\HoMlm 0EMF&"PEeI 8  J  ܔڂ]'+Jk >e\2: >fFy;dEWbjs  , 4 aC}XjM(t  \{dT] d&I9wuw3l# L*k#s'1RGR y:k'2B#!'qRMji~$ai42h] 2vaRJHA,R:3?*i(X :  =8#z(ۣ5[fFPK do Z^(g?O7&"a,h[n( % V > T <  IEt %nV HjwvK%;Aap1Mb3'*(j#&w|VES Wbf."cz[Oi`f5x8u;O E a*O[mgDcPT,J.K U I<r;M[M t ; /DX;#B#ۋۑ+ݑ]R(M {"q9 MUwnDmqHdP F o Z  J $us9 ;h_  E q  z`/bW\^},=z9Oni,2zQ02clr>c;H BV:sGwei\(i"6l7$ u [ >\ Wk{N2)Tyc6: gSrs{ v@*  S ?  '$(J[^^R_Df }bxZ tw)vBN@{4cNw ] W  p O ~ : ) 8 7 @Ij]k'=t=]g x  t(+e ?6uXZ/SmgVLKE(Px_ }v#:axnLoc/6JrdZ+n"CW% 9 R ~%{txi*'%s\ _TAYcF,;DuokllaNI l " T@ 'hrvS{ڤք'iSۼ'm=Z^ '\[ $EFOBMhlZj1!<mY gz.p jj%( IY:$< ^ t V +  Tqrt14i]ce_YkM?SA'[MIA,-bo}9~g/7s~Ve:_>* pAI/1QsrjG1- [ m ^2'DUG*)u-Z Ws&g,Le u cfO TN(_% A 6 O   E"ݼpՙ&HG6CV2A>   *EsFAJ= g? hxsq _ MtE 0 DF\ce5p,y  i o%M$#~T){GCDjSv R v o Y6Y.v2^OLO{ j_ w W`8Cs]X`z]SVG?z4Dwd6c s% &]DFaogE0|f,C]~]o3;yfu + `mYmO dQDbӓ/.gm?hOM < '9oG E byu{yX > 0  # W  k w D F v 5 P PmgMx{'  7 jYS2^>6hCM" x u,~Xz UaCR3; rHvb&=/zEA 95 8}%]I5tg, 8#p8PjBvLvi(5 7~C.1s)m6&PfFx$9rk1\PED!7nuJTYYm';S:MY'koApjz`Ulu8<M&_wK!TSTjZ|/%s #u qNۄ۰P b{.?: #u 0 P_H+5 'I<eiU35E#& ^6 ) 1dvWA*G g  T U F{hP|` xXklkZBa}zSY$d>A[v^N`qd)d`ShNWg'!DjuCywK:,~",BBDQt7R8cZLC ;Uh<<Go5qu1p*Dn8t}9Hd^*2 r Kq-T `eAHWC' ;@#C-[zC~xO#g8&|(nvTIBw=k R) ulEFjn/1 J 8 ? 0 p #5I@^W?&OW   #O#?3yKD]* g=>gZ36aE[o a@v\v } r)f8rrp,` K #8[7E=r9PX\blstkW8 V g 7]4KbzCj{vhZOD/ c1vllry}~}}+<1  `K?959K`mlbXLISAq&}Sr&1KX}#1s!0TSY\a6J8a53eY}w'rFJF:'lUWhx}zx|x`?# Dpc#~ [s^>%2X ':FPZ`dbZTXprJ$#Z6 '29:537<;"aSF- #V{R;Iu7t$ |iI4gc(.a.z-wT SNPT hSSw~=LC)ubI*#$e1 }lmy )8:1#{_NJYwwbG& 2So~gL4+9\ 4^xT5%-Ik{dE'"E_xY0sj (4+|?wnhb\WX_nz`H3 @]hlt<P]caK> 3_qYKW~{y6_ Z+0mB -Qv~JMM, Ze#5nrcTH?83,' s/-]$-yt~}}K{f/HQld<z[Xesxz~ta?y`UT]nzcM7;r ,V|Z>/& #@a7F;~p[w=ib eQEpK)f]]eo("{)22.)'-@bvM0"!'298*(& ~}lH&.Vf<$'Bk:SVB!7lxW,D-a<M8gu_P Nh9@xyKxk|C]gaK# %)QUGe\^o yedr,njE&9?+,=IF6#!7]w\*Bo|kG @K%WDUy@*d+K/!4gSd *J]_P1q^]cvdwhZUm{5EK~aT_UoXH5%'Lx:tM;GnAx' .Xz]J:,"#2BH;yce^4=eqV@8A\BaT$<\{cF1*2DYm_7@npbR=+,M{_A,+#%*!pm~ sF05Ki4FD4xZYx 0[m6,OgpgS8$Qp~f=1IG1.<=0)41)+%"<MYdkjcUPT_imnsy]?'+E\dT;)(5=2HiqdRC:41*  u`TNLNV]`U@$ ;[|  '/)&;PbrhLLd|wz}cI85?Pdu~x_<sit.;5& x{#qP@=AM^mtlW;"#5>0/,  ,CIB4(!!+>Sbjg]L<0(# 190 !6O]\L9,'#}{y{olv{tc\i1@=-@bwhN?BQblpvyaG509DNQPU\eibTB42:GPNC4)$  '2.Hml:XTm~gOKYpmMR{ (6' )FQB)$s|dgtqS0#<mh6>WU;/>>2$ -<?0&& !ol@1 opB(  0HQI4,NhlY;"+<JSRF5%$' !T|U/$195) ,5#) ~ZGSzcIOl2F[n}lRCI`z~bG=NmqXIA?CN`qviO=<N`^F))>D1 8B. 3B*yljkg[NPgkY^s=_P"">IB4,-0*/)?dd=micropolis-activity/res/sounds/explosion-hi.wav0000775000076400007640000003116410724145723022304 0ustar simcitysimcityRIFFl2WAVEfmt @@fact:2data:2kkkkkooooooowwwwwwwwwwwwwwwwwkSSC@@=553///33:ټMM?LL[KoWW6../++/@@H@@SEJJ=B005kkKDDLL;M11*%%G[[[ƿ__IA--,00644>cwMM=77-..666688cλcc[oo;4KK<88FMAAAGGOMMokkƾ;886@@566-**200*)33;YYkʷϮGG9++/++.JJ655?99O22Ѳ????;QQߺ̵SSM??wYYgWWYWWO,,M?EE:::/--NggoA]]ggDDBOO]KKw[[cggMӻ[99:118::6''2Cg??622Ccc9ϽwwYFFYM??wwϻGBBO//0//999>;;6@@W::wSSg˻__oww>>__UggEEȹ׫JJQ__K<<1??I;??SNDD7444775KKݲEECFFANNUǹII?KK?;;LcFMMMGG_WWc77055../FF922MSSYYcIMMwwoEE>DDB??L==BYY/..:66/445998SKKOɴ[[ݱ_11λY>>3>>:IINOOo]]LSSL[[L66,--I,,;WWD]]QNNoJJ߻FFMo̿NNE++))).::GGGQQ۲WMMKUUFKKC;GGNG::??/wwQQ?WW8//c۽NNE::<>>ŮoJJFIIL϶BBǭFBB/AA9BB:++/448997ͲBBk]__44ٸgUUgϱYYFF11/?DD-DD@)IUUkgMM=99w66WooF::AMMkѾ+0gg'W@@5224<]]@OKKC<>7<>N===..K77U>]UUIHH9>>822>FFc//ȾĵoKKkkkwwS::S__?>>BkkwwOGGA_NNc,,SSgYYkEIINII5SSȹż]]D55/--+,,-88AKK[YYӽw[[Skk]HH299E334--,AA--kFKKȿooλ׾==9ٻNվB++! )--;ggooogN;;81991;;77[㬬N..HH;22O۫]]Ccc;;g)44*BB0..399CCNʴE997>>NNοUQQ=77cCCWW=88BL缶AA/66oHHA>>GHHSSSQMMD㿿UU>YY,BB)wwc]]YYUoo__wW===:99w@66<88:@@999ﻴõDoo6///77k@@OccͮNNSSk<<5==G::oAA_QQNOOA׺߻;;Q66]]OJJ:YYLWWN͹OO33D..)00:44U«88]:FFC66LLɻ??c>>>CCJ[[J885///OOwĽѵQQAGG5...77A綶F>>;88377<>>IYY[kkH::8??I__wNccgѱcEEk22;;;><<7CCkooc.FF=88----.//.22MGGJJJ<22-,,300Y__ͽ?66<<5ECCC799*SSO>>YWWYYٿccD//,88/33D˿OOB>>wkk>8;;:ggL纺ĽYQQgOO]::g--+''Q..*55:AAwU<11/,,+**G;;BSSFFUǶEE//OggWWOMMDDIooʿoSSQ_ww]>>NwwŸ>>SQQ]WW377M==GG*>>H;;F@[[1۽QQ祥ϦSSDJ))FF][[HWWWYYw__MM<;;>[[kYY888AQQIwɵ;c]<<_ӹQȿggW??/44655*55<==WW99cUUwSSE==kkLŬYY=]];--DDAGGUFF]??EE]<__S;;52EEggUAA=::[UOO]˽kk]__@..3551==8SS;AAg߽WijH;;7224556777==θǽ÷=wwSggwC>>?IIKKK??LQKKkYYo>>goo0ggUCC>]]g::<==6FFw_oIIG::Q==AUUowwǯϴY__YSSJIIOKK4,--1555;;HDDOQQ_¿_oo__L]]վʻ__w200+/--33=DDA[[>WWO44+::JAA=kkYYG..LwwQOOWww_GG)''1--*995WW-JJc﫰ϾǾFF>IDDMooӲSS?339::>;;ww[[1YYY6<<<88=//::ɳȼ뽷ooww>FF--U>>088WEECQQFooYYMM]ǿGII?55MݹJ33_NNcooQ__kggL__UU_kkE==A==<;;]22o[>>>>>DD]]wooWWC;;633511588AJJ]ȿľS55-,,6((7>>;W??cY55299]SSNWWYCCN˾>>/../<<>;;?==G66O;oŶJJAHH[[[_YYUUMﹹGG/99<00/66NSS[[??ĵkk8OOO_[::HHC@@BLLo]AA/77/--/22/cWʷcMįooSAAA..4++>>4??J00Y__νo0:wwMCC6==MOKKAkߴ·Ļ۽QQY>>J<<@KK_]]U==5..5??<>>DkkϫccשּׁccWMBB[FF@??E??;::;667<<9FFgöĭkk?HH]EE6550++/MM::]̺__I11AEQQžĿW[[WW833/--+00/::[ȺY??>@@===HMMLUUϿ˿YYNN900)&&!++4--699=wwF::IٻSSJ>116<<ͯO_337>>EK[[Kwww11.<<;NNո==HWWKGIIF]]kõ7//,-----),,/88:;;E߾GG>;;955:224;;ǶFFA66+,,/441//4FFMĴJ99>223kkCC_>>/..(,,-11SDDIƯǴAA>766EE1??__S??CGGS=88L1044.//6S߾WW<@@I..0,,000.@@ǾYYUQQ-AAJ>>_>66B>::ű͸wwg55UMM;;;KIIooǯ[[E**;!!6::OggξNN]LL3;;;OOgggSS<;;Goo˱ȹY+DDFFgJJEEEWɸ۾DD?::ANNF0..;++2776;;_ggپkMMSS_LL33&*889488G==Y__ɹLLL::8//-)),..8>>HγƻD_WWYYWJJ577?MMI>>wwO==D==QEDKKkk5__/11/885AALNNU__ѮBͿ6FFQ6..+//+kkYkk˾׺ww>=;;)//,,,/22SMMGݾӸۭ((76;;=[[Y663..6==EQQ]˾?4UU55kkkH));://=>>JJ?OOΫ==4]];--H??NEESooN?EEMFF?FF9??Y<>??];;[OOckFFoU_AA2<<@YMMNþSS__++66YYNKKggcϼkkSLL7440;;7UUƹSKKkgg==MϾ??NWW@@HHIGGg<;;HGGDBBQooκGYY>__FF>YYCOO11<<<4//8??MS۵ᄚOIIOCC__L<<..2;;cӿ11]FF0=@@ACCżݶ88;::<++;DD<>>/++CcIIS??¾GooL]ĺɿoOO=EEI**7661-->==;==Hӱ]FF?665///:MMc̼oNN?770..;??:ɰݿSSkkggW33@ȲGGYCCNH88662<<@44OɸwwLSS߾ûBBooI--,//)..244/88HMMEƬμ۴ͿG55<<-AAWW5NN˺//WѻYY8NNSGGO>>;773445DD;==gʶYOWW3;;2GG9]YYUGG<99H;;6558ºDDJ׷w__JɿɻCCFAAQS++g::,,,9<>::.22;;Egg77]IIN[[DSSJ۶ƺwGIIGoooK::0wwJ<<6??N55DBB]556??_SSɲϲ??3<>6Q--7__>DD2<AAkkkkOO۷@@-'..5**;226::kƳYOOwFF?@@?;;B--SGGG::S㸶Ŀ==oIDD9//>--6--9FFAA455??ߵͻ4+**g<>kCCEսcc[ȿʺUFF_//6JJS4**52>>CJ11@UUMM;;˾DDYYNN<33;,,*,,,7LLUooNcc__OccSccWWM[[ǹS22>OO__kkcGGYS33w]]7ggO[QQϹٷ?N99<==,;;799w̾U77LAUU˿__Q>>6FF_666;;8<<@ſ@@S]]FF>>FFJ>>@HHKNNUBB0,,0--6LOO[wwoJJYYoYYQ<446///)),>>'OO[[̾kkEE3--J--F8μ˵QQ99SOO[ľ>>F::=442441//+cc̺[GGww233AKK7//cQQýѹ9--QQ<99CIIUNNյWW6AA4..-77C;;AL99EüAJJk>>[SݽccUUUU4ww>66>>Eoѹ__:++77/ݹkk˾==Y[[H::66DD__MMUULLQ[[KKLUU__JkkAIIE_SSJEEULL558UUH22پIK>>O_WWOUUʼĵLLo==.066U??2@@=_??QYYK[o]]9WW_UUη>H]]gg9,,?ooE00,88>DD8kkͮ¬YYHwJJH??IKKw[[OLLK@@@MM<>>Ioo<>>gwwHH̼w99:KKC==;8<<.22G..0ww]221CCgDDo㾻HHooAA>-//3wwggĩkJYYMMBSSg?ϺN//EIID889>ĽCgg]SS4,,,77W99J=JJĮɽ;;:/OOEE[[EEEY뮮A==EOO<::=__NNNJggȽǶ_kkHNNUNN;;7@@N??][[ߺFcDNNWwwN778??J<@@B˼KKCFFOFF<44755>;;GWWgg__SS=__KѽkII=gg_LL+,,@HH;55@ٹ׷˾occ]IJJLKK>>FSSMSoo=kkONN_NNӻUUEE:99IM=AAFʾ[ww[[F66C===wwWWWKKwwӾIIIC__kOO5SSSCC9@@:NN__IIQSSN_KIIQwwM__]@@EESww[ggJJDMM?QQ?<MM_SS__SSCCABBN;;6>>?99BKKQggSgg߹k@@_kk_LL[BBLLL[]]BNNYccc]WLL=AAJAA?GGW̿DD:BB?DDFYYKIIcLccHHwwGccw[[÷gCKK:CCkKKD__CHHINNQSS_˿UCCIƾICCCNNcDDGEEGo]]U]]OYYggWWLI̹kooYFF;FF>==AgQQQQOogg]YYgIINNQUUFkkkYUU_SSYݿKgg__@YY?HHDDQKKgggYYgg@HHGkk=MMNDDDUUHDDkUUĽQQg[[g[[oY]SSk::[OccggQkkk[[[oogNNk]WWWW;<<>HHEEEFWW_[[]]gg̽ûkkIMM_=DDQAAQULL]kk]]SNNkggYYkѿQSSWNQQI??YBBHWW>BBNQQO˾wokYYYYS__HYYcSSULL_gNNkccoWMMYOO]]kkookWW_YYS]]occSSMWWSQQO__WcckkY__ggSkSooHDDYMM_ww]YMMkUWW___BEE_QHH_kk[ggoocgggNNQ__DQQEJJ_JJ_ggwYYkkcccJ]]_SSMMM[YKKGUU_JJWwwkwwggoQMM[K__cc[[occo]EE[SSN]]wQkk__]FFooHJJ[OOkk]g[[gJJGGG]MDDoooYQQ?HHO@@]YYgFF[M]]cwwBBgQQcg]]kkJJkkU[[W]]GooKwwFFFgggLWWC__EE_kooccgwwYMMNJJJUU_UUY]]kHHFYYNJJ]>>QMMJNoIkkSSwMMWYYWJJNSSJWW__k_wwkwwOOSNNkooKkkk==FkkNUUU__owccNNowoo_ww_OO[]MoUUc_YYOYYKkc__Qo__UQooYYOo]]ckkUQQcooKKUOOOOS[[OODUUkkYkkk]]ccoUYYo[[YkYWWoYBBH[[gWo]]YQQg_kkoOO[YYkggckk[ccYYoccYSS_wwgggQQ_wwUUUgJJcc]WwwYggwWWWUUUUwkkgwSSQUUOJJU]]wk]]OGGIFFLQQYggYYYMKKSIIKkwwU]]kKKK[[WccJg[[oJJQUU]kk__g]]o[[]oog[[Sooggg_SSwwgg__oWWc[[SMMOOOwFFHUU]__gNNNoo_ww_SSSSS___kWW[SS]SSSoowwcc[[[UQQUcc_oggSNNSHHHHHYwwkkk____ckk_o]]WWkkkkggwccccYYUYYWYYkwUUckwwccWUggW]]wooYoowwoYYg[[[[[woo]wwckkYYYWWWccwwggg[UUg___kkwokccUkkkUUUcckowwwwcowwwwwkkc]]WUUY[[]]]wwgcc[ww__cg__kwkkcggwgg_ggkookww[cwwkggkccgwwoo[okkkk_kk__]wwooo_]]wwwkgg_wwwowwww_ggcwwwkkkgwoowkkwwkkooooowwowookoowwwmicropolis-activity/res/sounds/road.wav0000775000076400007640000003126610724145723020616 0ustar simcitysimcityRIFF2WAVEfmt "VDdata2Vy !*@lCMtR,}Y?+wMz&]Y# I)knzup\ &1/  &9<'~#99+ 3N^a]]dmqgQ5)(qd[ZbqBSRPWj~sowlC**7:+  #Gss\RZnr^TWfpn`K<7;@>4$ 4h`aq.k\h "8Ph0l= "=@<o^$m6_h!cb{eSP_Q75:<0%(Do/BWq}}{mXKNbv|oV8'Ol#=Vq+k|W^E/6VqoMxyEms,0+.Fq  d7@~mMnIHq;B>s0o$r]b{e;(&Uz=qG1@moYB*W"RV #)6Pyo:c+]QS}Uz@%1^cdJQV=y4Z.}]Y BUbtg=a<1cIvdf} ;I>k9\`F1@+P>)KWYJ  ? EeF   #7t8mH0noAE+o{lgES4I=XH`p3hr(,E5n{#^tHC%Sam)F aB  Z  AI+'/ED>p9#&~ G e .> h v 4 Z(0VOXbD99`*  U #u8! 7|SG! % lZGz4@<quo* = V :  4 X 3%OH4UE>G-uH  d-;w!)  G n Dj U5? aYc;V2Czj$ST  ? ) e ~ 5  q  <  ~ _,`vI\~]Yߐ*k# _7( # <T[!2 ~z!0jj5:,JFlUz u |!. 9#W2lh3_$~hp1'#7 y ' ~{A+k] h  * < b ^ ( ' @D d V | 3 `/> )KJ.Ψ1$ՑjԘnӬ֦wqklvU7  $"?$%Y$8"\_U'; g/ut")rZ.t   V/W|LW Z YOGu 8:RT'_B9pRvm _|5 aAz R=+q#u`}Yi'S=R |6@ |'   ce)3T^0h 6  (S84 gͶCAǭƛŹ˷ս-! Oym "(-/A0.D,')X&Q$#9" P VHZ_ݻܧ܇a@]W:b U+!Z! %^(A* *'$!ZZ\ 6y@=H?.{[ tF 6(@ "t>+Qq7 Kg>iRa(cs @' Z;f: q 4 ,C)TGaK$NJ c2DY)!^0 9ސԺ} @_:Ŕ͎ӆ:A32 hp#z)-C0F0 .l*&#&"4!e #w`[iލ/lR 7XV>;72"t%'((-&+##wv P@uWVN]9:  Ns}Q73 uPc~c+k4nwwDb'qNM& A xr"UJq98U,-0OJ y g ^=/pbq(pz Cf3߶P/Ôń?§tkzىۖuhr&f"\&#)*;+*"*p)(~'$ d3^e! r8atJ߅&o}{U=| f!3""#a$$L$4"[= 3 L1~.5tF=vR VE  t bumzxa"X2*IqW:%  XqS F   Du[%xs'5E<-S  0 /GxxTRn+& o ^Σ+gʞ\ĪLEОFӃBD۳$!6M6 #+%&+()* +{)+&!K% k Ia7eSTR/cw85 6 e""#A$~$$v"m $!f X KeQ/#VgM!nJ/Z C [M m qEBj3bTrC_$c]Ls  M r y # D 1 #fd)hH`b(U ``{l%9ZYe v *G`ӖBκ~DŽ͇иҔӨ&0؄K) Jj,!p%'s(&U$!K 7 X! vu[ ^o$9v6xLa8* 13 ,y>3 a*#LNCrPg X}G   > Mta qyT 7!"! T !p"V#2#B">! T ! / \tS` /c^ B~ a*-0g } |(H n4 [ukKjw \ [ Qhgv 0    X0CdGmU*ky`M8@"/J?  U a H o  " J utFp}>9N   8 8ko) 2%p~QiH ؑڍ~%8ۢywGߕUH@R ayZ  8(r 7qUZ,0O-J%!77**h x 3x.l.k_R e h n~"Zc&Yk^n;v~-BFv\3;xC p % 6EsCn*^wMz~QEb"AG@CZW&q {o$j=N&m4oS5Tmo@>p)2% 7k=/_WVry;'Fp : * ;9[}3 =ce|b xR#,yUg &A$HO^Ba X>|W%A LBvL:Y{ <LAxxs <  ] K U U`AD 1 .NB8~P!|>[L!h3.>3 =4!{p?Lw)/u IPz@Aw9s>mvhXmK|'BJ1m2RdB 3CKQZh*\w7)Qo 72g;2U/Wl~6 Ye8>-93 k ? $?4q   HG`TfsiDVn8(5Z oc])~/Q0+DE>2ASE/^xZ*_5"w, $DqIuj(sC>NU=4WZJ=4*~oJc=% n{;gR7L ORodB,6Vk^4R,Qt*:<?C2ijUDoI ?%$%$3QqzjXdt^A}}7Zy0Nw@lY$h|\ZjwnIBV(.v)n*|W&[( CvWYq#1; 9a}7ZXA7R8*~D&8f~N<$C^qwtv0' X rE=|$J?w|PCE96lxP?Oro(UQ`?["RP7(&4iF4WP"P$  +dA*`jCwN7,%j  K]zI!+]l9 T}hS=#9m%Xy}hULKLKTr?xfD# %Pf`o/CD*8^qV;'37V,EdhU8 z{sfP44Sqqlkq0DJ; GP/=NzOJOOMWv["qt~I3AmG)}"@swX8!mK"qT7\97Pn~tprsl\NHP`t/Lap~2Nj %%!"1J_bWHCGG6jP:' ylb]]_\ZWZbjkd\_o %HjynU@?TulWG@CNXVG,~uw}{rhehotnd[]ft8QR@& 05/% !)3ARgz}yz~o`_n~o5 # 3:rg?3Z4Gj`=)4y3Y$3g>v9  UF0C%vmg)ym6:OBgKND&x bqQ*!K20x-)eo{N\PA,xw.;Q@|7rHqpGK i FD#V,hVhfz:~uq2bc$,+1Lz,H\dk{x/~|S MwK>ZHB:4q DN OEyfA61#IJ, I6 Iu{S@afU5 ,[0JX<.erAQ"cco^7 ||Z + /{| RC~zx*jkSZippxh(!y>y;c0  -U)gLlkH] ;xu+[NKE>B/micropolis-activity/res/sounds/o.wav0000775000076400007640000001036210724145723020121 0ustar simcitysimcityRIFFWAVEfmt "VDdata "" "*6>:-$))'+4?A8'+;C=-8U`Q-rm(/& .<=0 )0   %"%3DTi Gvj~H/Y%a1mZGX QJ  x* 0C{nms|.Qh}:~] R_{82Nl/Z}3suKYoF$8Pbs4_ \'c:%$0B,Y m'lF$._2:82+%(7Ncllv .&{wqfP3%Nr'q}4 :=*%r$?aTK+ Rl=QDuRW~xwVuSI96?ql4{[!p/{A$:}s= Q@ CrFT z8l?>t'#2Hzd!/o PxhzKHv1U/t%u1PpV9XOh-)`,ej3UT;L7\$ ?bJpuIl|JFq  >  I  Rz!w8 R3!b|6|ya>E|&[q.T =`F2p) b+)$x7hw~ C  o 9 ; < &i:wXM+RwU+)\SuOBMA@)/Zf9SJGqOI  pdc2Xzt}9Ewug&vONsPymjll\4]'Nq/g| SdP\L;?PR,e Q2Ej6`:R+nKgBC:nLvEh|7r>t)&AgJs ;JDx7 SFFGoxsrz|bKI[v"v>DmA"/jdG<nmI, |Y6{os8i? /^~bC>`oK;73)OriB`SeO3Wp3TzyiInZZXK8/9Sl{zmZA 62 ;tmHd0#Y3HB' *EfjSB91'/>B<+4^m_OSpO#YxnA &,6B<2-) eTd micropolis-activity/res/sounds/stadium.wav0000775000076400007640000007033210724145723021334 0ustar simcitysimcityRIFFpWAVEfmt "VDdatapLb}a/4X#$Pic? dVh"7+;@f\ .SkeE 36/% !{C6]'#[pRS%0MOIM`m]-}=l~\+z)m 09!2YkaH/%1Mj|y`:-@4dLg)6,,gXs$'ms_f9M^D88=:* C\jvx_=.KXY\bgY2Vs@ BRSPQPK>**?HIIP^ii^K6 ;|J$"4?@CStr</A?@N_\5^?Mr(1I-$5NhujR?<GNOPZok\XZXQF@EWvm@Bpo_gmhorfK2&1Jkn^Zft{mI ,$1@>0"$=fo``cV76OZWK?537;5!3ELH:#OsnU9 ;OQKPm^DGbu`au}n\F,!*E[R]jt>Z ".~o'hXSo[| 2'5ca4(4@\h* \{U>;EG<4Gy7}}j^[]W>(>>2&ytudA47H]v'1*#@j$Ij1@>3-6Mg}pcN:,& CHCao{ FW 9B|lf0K:HjEH]qusosq0o{yo?(wVwo(%kc~XIQWCTcYugUkm0&1 3(2_VyP?FTak|mQQp 2T`R4)=H> 3jzgE01?JIGK]mmV1aK (!4W>1-5L|\}f|V@!y= </ BmjF,Au]58W`.V\m1 cx7S/ kv-6\Q 8 _c5$dDk^Ldr(Awb!.2s2vy6H{r1GC`=!A,$ J>KPM^-+ N`>EhKRh{3 A_Y<% Gs_0rx (9' &&l:*9TjpcRKTfmY4Butg}}s55 ',Y?:;.b;5sh& 51.a$S;922yHQkZ`6*7 ![^44XvnF! BO8JY'[%qRF,#Z<tt9 2J:<fX,3cp;05:Wu@ItYY5@,'^r*{%f[ &Rd? R_A 2z{ @!3sy2A&1U& q,269*7l!%xI-`mW#M R\Z#JoVW~9GWk\chk&aZF`<9eS4C xC\jm(3gjv=c5^ tvzaLUahiZVSRqvJ"$R@}gZIm0i/&Lm^1&X8[XWn7`$ q^by*.i?ls!A @>'2N[R=% " A?c~(i]{t{iA2zZ<CHLA# /]iC s \Oy>HdEj yH_c0Nw^_`/8qTAXah3pU\;q6s; n5EQGn\O#=pc-  1ae*YRTno%B1]@b=VRb@$vgNu| X v@RBN ]L=/f `Ll`ci/Kd?NsjA)5eKATRW[OZ|8]][\M`LN 4Wu4W-/08|G`rj`V/K8&^8H65-z`]vy_b|6cxp^[z=Va(L~"D;-V}9j<%A|"_$H[M Br'h5@`A% !~S`?C|g?Yr!#@QbZb!Z}wDfA SO^{W(.Gs  EGdsmw-a2xouvHxF^I[IE* Zenc$?wt|P*L4dd"an5Ubx=wPboMWAanIPJ^7[ fbTav8MbFFUaEY5pM;V\K&02$}]uI{ H@_iRs ;5F [5vb*&i d/ gbbh{9+l1=v8Sm`fpCQu8(&I8 7d %igu;Mx{O<B W`bo0D/1ctA[\! .^Oh5 (Y{w_NVnuS,5iUA>wx{ko2BA0+77*z~u`e|e?*3Rsw`NM_sxi\]n!;EB?BGE:./B^wzod]YXXTPP[rjH36Lbj`QHGMRV]a^N9'   2NH{=-O&:+ %&11&!!   (=VbZG9>Q_X5 65 #@G8#     &&  #%'))(&&(.-$  !  %51  (4DcP6 4;),QD  *<.  #VW*#AizfTG:)$,  {j-IiA7A(AB98DPJ/!0ALH2 9W[G%(61"( /0QgNZ0,`ynG$#   $&39.   #>Xkrpjc``baU?(.Mfa= 6;* vzab <_bSD?B?5+(($   'CL:#WD*Zw_2s^ :ac: />5",Nhb: 6L= <I6 $.q=lpM%C(!f|]$+;7&@5 ,KYI$!kb''HH-"<HA7:LaaJ($;HD:.%#+&"Yb?X([?:6$=;"  /)   !2/ @@E}ENl6f'L_$HPgH<{> krw5%O Q{@uh>OuCfKkRL'iV9\3L:k>XpQ IQ`n?OWBv J"%25Zj6 4wr _U[VbM] rShy}W-}s{Wfe"xB5Q}gq 3%!AzK?%LBxC0 ZZ9no#MsY=<- `7IU$080G l \ 5 O .H}G:Svkhv.Iy5S E > X XaM_eXQ3wT$QM`.:P#yVg   D p 9  ?xD p /ݔL/PN*76Ap0; .O 4GAMxD"|f_r7:S! u #.9  x}`+#  w ;,7~N_#IU S&zttj'm7V4s[Xm3B   !  w(/ Q % F r   Ca zEgϷ́3 =);B"P>D3= by 2h1_ M o >NLrtd HCYy1{ I=s b D S }MU jez>t[-$U2[Aj!4h|ZPF?^AYX&(" '^ 2  y     a ! > p o h 7  ?E TfeUT 17@2@qhUoRyVs b8 ".W |  U3lbp6=eH" UXz R bh   i!HZySU@%LwT&/#^bzr2n_e~'"5x|Uj( > x  I B $   } C T+- 5 W4#\LoOڦN@ϚiHU*R _bwS"!   7L }wH&@ MtBjuCpK%rU  7 mP H}{M` 9 ! h=4 lAfaEY"vh\{J)&#* b-=c y2A&sV n% H f_4 ? C  # J F89 80 BWLqcդiH+@ o3&|Q#~y6 I7 TqI!f$# 5W<>p-Y L?B:S}*" 5 x{ =i 6 J # (z  4I? RM~ [GmE oi{rQ@y29@!Yr$g3ndx > #    ; R z  ,pD #3YѮ ԯv˔ϙ>gzz,v *c> d#$r!K*^ Se"8BM]REm_g1,j{,o7ek G  U z*O 4785T!w >o^ceeFa 9xp ZT [ } $ hxG1 : ^ >DZ9 (  V K q {E Yޠ:7r&VyPx;=OlF)miEo>A   ' >?B"  ( b  *2>]\ )dV*t#(8j&,6W  "U*|H@Yacbmm]L"BC+bDt+vD TNdhmO36cg## 'iO\Nv%z|E>D[y\$Q,Hjjgf~Hov/($1#[b'l7"-tk wj??2d&53aJa9wCk0,OQ26G#O{$XP}Y4kSN'X=~pE/3(,Uf36`pEWO4G3Df,(5W9jILr4\)?Xmt[j XsTB)CuS$Z  rrrGz\K_H`h;6 Qf\Qx!3{Hqrs}Y 2_Mlk!?`^t- |h N(=/!*fX')NgSYvVLQ5^E!<{|E*"[()ugw: ^$8S n,kDd '`X Z 2ozj K T%2+ 1iTRo\W#Z "0r0GGSKypI#*HQ8]JUt =Z}_jB?clz "J-'gW)]~ 6:p82GTIX0U5a\&kr?Ke7 (Z{8tJOY;!IDn^119&0[_gV1* .?A"@kR0~kqQ#:Kh)d2(n=O4c6   % Y  p (  E  A 3 t f(F uX n'E%AQ Q)+:<&O NV3s@ UYh=nASN-Q)'W$So<Qjwsz6i)?^4i)'/Z u//&zi 6| 4 nVM* d`fK|S'j-D"0%a0-!@ LfN 5T I f7 ~  Aue(]Y(Y*X m]}gLp-@IK-%RHE<_m9_  !h*9t;kAZ$_~j,,X`Ll]h.%zO)fCad|:"=:TM7 ,jcmd P/`= Fn Fn,M ^  5 a C >-1i+/@ K OR+{-4}IvJVo?U>Ov2vues^KOuX,}MM|6csMLZoU1oO;Gr|I T$\ LiP; vzW_2o];r:;\1s2e^@!PKXU*3]d"b1"{_2dECV  E5n$FZ.`y=#YW'  $ =tuXvsM9#H90@.zNTP`;/mK]W8atTFef&Z>ct} 5dC*uu#an(Pe@W|w _-9X [6r$5Koz>  a   ? D -'84YppE/Y .^.7#V*kbT:;ufE~d% / 15~;W d <~7 #|8a8%sKWf{f ;B\ C J `LzBr`'qIRH)P.Lm'^ECEGKN? yV=}CT~~xVo' w1?CP"4u&Nz H @  ` r : l Vf\62=kpO6Uu:or[~e~c$Mi]\S+-l;U  :  \ j G_Jh*b i : k Z M;Z:UT&m\d} 8lV%  n  l 5mxCbG!)quFBh$uUV).24cqYUbrKu `M0JX9O_3%Ric~y_Ge1ADHe_Q'[n/|WpVMUbI[s`j%kb bYT?0wontk)YLFtr> d  8]zX kv,RsRR "kC# >nJ_/}$S# a@dnnskG bp=O8>mj2 -"FBm?fIaW3 1$/WSCXu( 74+H':ch(q<( ;bG ]-I?},Nervtt#BcDpQR'z>Xd ,tXk _L!  NqV?n_LeE CE }1 aC]wR2 `Io&L6Ae*j+5C(J[s-mpL|KeIv( 7i^P 'Ufxq7 *Mqz34jz^\'-S<''p`X>jw9DcWV0gMp/ Dwvy?:}pt)1mfoy*9=Lx9Fqs@0aywlHS)7*1q`"o 7gZ)  IsR0 K (/<Y1sv6!sasHa'yZrw 0P]F|}"C7K|dGCZsrOuaVVSD!*r> _B54;>0tu)5/*1O Q)]|}b8,as ;zSc8jIY^JB>(>|)318\_=!hrG +Ofe[c6*B'gLh.\[**& K5C)i3!af,0`gR"^I^hFg%)A_B77@FIN`e: 1ZR h!yeP9qcop>p7Euj#:N B{yuEmE(pJ~M~ggM/v^>.SHDUTTc6[zw3y; 3- x #(7IQH=A]w.A{7J5ydJ(?jCOE L3 bDP=Qz^PZP>g:Z#q*l9{QGZsqbUH=>Ry v^O@g:"#)c4-?N> 2TjstuX#0Or~g.<\`P@BXia/fUTN;#6l#)'+@j%3Ru}- %EYQ+Tx_H3 3K\\J1$4BLXi_"#_]gOJhIx2`?E{Nt'p}Q VI&ulrk}wE"(1Jj^\cowvlXG4AM6 (85-2Ijz]:#$Cs[k' !]Umtv EM,ZGn"q|^Xh~(SgnomZ4_()b9#\ E~L2=h_6$(57,_5 >j{lQ=9:97Eg%,{d+FK@1@D4W$R ?CWklwZ8:]uoQD$ :@WK#!!*Y|`H:78/sQ( /,vJHe{P&:czYEFU^O&rk_Lu2j\a 8JH9,.CceF9KqtOBRqqB  ~mWIK_{z^F8,)UvuZ5 ,-)/39DJD96C\qrcU_ P$8R%iD'5k UB.GCX.H'iK\UW?dC=o8&8RWKCYf?9HEJ7;HSP=H3Nibnvfgwa.*w 2vu?7l .l-BB9?bmS>53.rqoeP9!  S#jo+eqP++ZWq@X 4D59w|+t;zq0RdQtQXSkr-[*p|VN_|{Y/o7zcM?6'{I5)] 2tz`:gUSWYUPPUQA'!;Sg{0>?Po];mH\a"{{k0?q|pu1JD"l'YdT:$.a!{S*8 J,3NcbP3|okk_>+SvhM6%(385#{fUG>3$,0&&9Mc "0.!6\rb^fv}dI2.6FME0  || $. "8>-1Ys{oX?+!0Mnl_Z\bjorspke_R8j\h}_POK5 Xvs=Zlu~lYYlsg[STbtkT@404@NQB"&@OSSOG:+!"5TvlP<8=<- &AI3 !JT/!)/, "<CDMTO3 <VR1=M5 6XQ#DTRG9&IQ If=/Aaxx^6 8W^F! nC[5+y4+Lrg59ptx  &1:;79Kn|yzcf^**Zo)MzwP.$2?3 :B3   Ig?iEB4CE:}]K\6:(  ';=2"".HD%#1* )8GMJ?1$ '6MapxsX>5>NRC00PyLb!}cOOk>\t~}q`N?=FYro_RI>1 ') &6:3%#9LPB)$A[faWSZfkaM:7BQRC*&.% *CNI8$ ".>MPG<9BNPA%  0:8* 7[p^)[xi5 (# !+;GUagbN43=;2&|wx}}z|,=@?FUk~shgp~vf][YQD99ESVK7)!+596+%' #-81%2(">;#  !,0) %<7&$ 0NccQ5"   1>?0 ,9. *=@9, (47+     )2+micropolis-activity/res/sounds/a.wav0000775000076400007640000001036210724145723020103 0ustar simcitysimcityRIFFWAVEfmt "VDdata $#3><1"  '=LQF- '7-lx@XbegiiihieZI:5:ENQRV]gh`REA@?6+&1H\hgk  5FP`A;x?!j+%4M4#K&v-Cm!7{iT$,c"6@Z)5*>,t^clDR|3']Z| 78?r[bO*hC`N4[ x3vT wQ")YWb9UlRzZ]y3w,K<MD^9& "P_$r#"g=\C&e8<9f]#iK1yP1 !J {*hjQ.r'c5 (Fey{n^Xe0d i*D 4_6LZiyr`H)oQ>9D[z'Tv[9'%Q{}f`irfC9 \c'k/Ly9es:m0o! O~8N:qWNM_h9z cNG#J A h5y- @ t+DU]'Xw g 2  9 | x,T!`&9Qh Y  ) hB%aVT=}8'?NuW5kd F2W@A%m,5MA(p|~iZ y |?_qWfE:,i;u4V/O+*n ]:E- $h.Y}=B2hE eYn tV G ? f B h aF4a vM`09eYK(Mm Q cv"DEEq+QTt <  W8?4p"19.R5"3i! ,JR]|: Z@'RKwgcUl$pGL8?'T\.UywUBQ ]7I^hp<?^(?iF1| 1 & p N q w8A ~'hyKoZ (q$ i J Zeytm\Rs) Y g Y Jnk!gQW+43eG3k4oTL: D:c;(i6}<rj{IEw(e6cJ R n ,iv 18BwQ%q>I"#܎R"D`vuL 6 x Y 8 {M >i3?TY <',  =& "Mlhrsgr  Ss0(y:NiA.vG2x>o3(~tj[EX4`">1"Z\9C[WT'Tn*;?Y6Zm '&H|E7OU]{y IyM=u 8pb3ygJ?Y0c{}`?ki%G>*Fk~`Xkk4y~7fg> !MX/jU;Oyg}X=H;(+Il}pULI=*'N6CF9zGv~ '4@HJG>,Z<;KY[RJRj+IQF4))2766=PegT0micropolis-activity/res/sounds/whip.wav0000775000076400007640000022504610724145723020641 0ustar simcitysimcityRIFF*WAVEfmt "VDdata)  #  %&    ,   $1+              #         +' +$  %&' .5) 17(      !-=5  &!"   '"    # #  ,*%$       "-    *  !((      &%#3:' (&" *-!" # %0 #5&#twR-f4/P/}*n)C}Xwf] FA2V$EBo5c.5#g9U^)$;. f !Z5OCWx3S*t i@VH c>P$> Va=udM!<3qD7xs4x.i0<0e}K IH(cq9HYSK0_62[oM?~3* W&C  K:<oXV1PKCrXK dtTF1; ; s]l*36j8[# 9>o zWt!}k ` fL! 3nm7;?v?TBAX N7}x < C&HE&:C  vJG>B9R85Y1)$< {EH 7 VnZja{#. KBQP-j0y~<0;LIyK H S` q< P3JGF LIb ?UiO7 'D^Va,`*2 r66L!] $  W!% n 2*,,$QC u"  Uu77qn}ޖ~<]}[B'Q+ & X (  t q{ 4 j q qLaKkߖ֜D2_!j'#1hn.k;zaw߃vXNX AoN *+?  ȣ/\c.;a[% !,:8?g8<," '&3:l8|*(47=~'Ņؔ^ͪeaB) 4;A /ڕy`hf )c=O$\^Ti@d(lFi^zŇѲں?道̋\{3.t+yWmwL}7iI2.@\v+tqZ,=#( xQLG⴪ ʅTb0;I^MMPOOG3!*" 0 mPsjZ Nj·Qiԧ̼:3YP psgo_C[>oB  %J)kZyrd]fv}o6VCCTT^M#rw<PʮžGًj!yŅޯлl?֥*DXH78X"0/ir$;";P;#1" ?:BU6 t_ཿ$b^-ÖX h❿u*) JJ"CE{dY4/jG3-Cs7V /-BkB/=e&m{1 ˮ1Á:'IؘG#5.TV]K'(w X,MY>H9!!lĝ_dS 7MQMeQ bwR}1hkO;6*$F͘ˀ3+:M E,@Vbcag-w'lH,$V*)Yyḅf6ZULc/ETY)Zl[/_a]P? 2*!&^) : h 1?=`-^esOO-=%Ac OƯe-(ƪŵw Ua2]ky"B +f^h?rqB ۱ޫި(fT 6~.)&!*C\>1 $*+$ )E9A;+g!46Vu#upJ=P۾P)yJh 5&[Yuc)⤮R2_kL``GM_>Ja%y~|sPzL/ނ i BgnL:ԫr1PK&a!ۂڊSݸB6(fT5t|oZMMReS{Sni>U#OЯ (!ki)R3=TqvbO#A1>绩-uvN3zA\CERh{{:fF-'>/54 (K A>y}/Pez@HW\TG?cBQNi~qgc\@1҆8C\ AEے& u0 FEo_|tg\cFl?z~&qNU8&L@A|MgB>U CG j ~u`e PY:*K]竡j9@1DN.eaqAR2-ڏȩE3X #UR9_N=u?LMH'Wj.S~q NRE-E/XgI[L3 !K[h>U#f|<ƠѹvB!JnxwiRHRdhP gB@Eve47Uafnu{ygD!RpZt.Ol{zlW Xߡ PH8):JT_djid^Z\YAX0RCB)'O#{E*k$yѸފ-Jex~DreW: (&,.,'=蚴܌@ $W.%.E\oe_;O?78?FG|M6QN?혿9/x՛ϩ֖y=m' =AǾ7."GĈ )#$A{B[0&9az"Mom JHؤجӠ' cV 6PdVMK7!ӽ:T^ r3`Vj0!?XEB:0&C) Z"$6󲙸.o' B*0/e-|)"&z0(Q1ږڗ RSG ,2̿6EnFM/@KO >7$",NDS!UN D4. l+x!ϮG9˗9<#4.f6;>P>;4/+$?PJ9zj=3))##/[@H3>#;  7oa)Fw 6 6y-;N>5'! !(+"'F^k>6rѬh: 4 ,&>KGW-UVoF)6&|ޮ23gFW]W|I 2XI?8E.¯ʗ&O}4\ śƔLV{9 ? =9K4SNaC7139;3Z"Ma]̭sFBmzO06jKnXZ"Q>*DU! hZѨ`,N9,.d:1, @&IRan2m|ܘkeڑM cx l!~8D\>M0i*5mKWhIw$\ISyZo̢ q:=!R"*) p =$&zr.;]T&B - ET5`i !Kq%  [! 2@ *7XA"r-,,$/55y/`'1 n3 &%۵&}06[ J8(9'M[R\Ox:% 7bz(T,rW_`*(u X# R4)kBhڢ/!Rr& z^J0U8@s GJ !w%*.J-Z% s w  )ܰ8K^wH <,&5Z/ -Y # GɄ?yO5&#nJ iJwY][  _kG>JT a T t ?P$Vr O RY+n# (4hv, ^0ٚܲzGi"z"&&-)+MiJAs#kK%B \|G%8-1Qo3c'g.r}'$+$n GV ]O ]Rߴח޷X, v [b x;F>C*gAh U !Y)DfLn{' KqC*/Igca["`F^V &xUn^Jԫ0%&7.!& u) m6%c,AOh_ s% Q @ MPWsv uz ~K<8N?0Xf{s nb~"k8=m |BR7/!Z$b=?B2d!1W 7 Xa #)'L@ k j$'! 8SS۽ۮ-1D 3 I2=V& {B m>$X9k c =6  Y`U$) c F8&9 ztD-p_Cw31  NqU* ,\QK TQ+ BOchr3% -@=]_LL"nb v8=iE 3bMhLE G Kz  ?e  `8# (EI~i ~/ M"_ p] 1q l 8W% un+ \A + m  "(Y(&)D8(NK X%q [<4M*&r{ uw p srsL+R9Q 2 ^ 9Y "O yG8LId0D h 0X1 mt29 ~PG,\ r+2q09 m R y8`P< >bw+   & 6d \9HSbkv x 0.$"r|U[4o   'WFTJ!E8Y n<T`Z. a>  BPuw{V5 O %4'-WA q ^A # PH -JT} B h"D .Gb o#y X\~5LKLyY VQd ; ^:`:cc$VtI&4& gm / , UEL}Q]$  % aGsgw?k+C  @-W}&|A :ddm d9 XBr[ )N[ ieYVLj\_z(e=Ry+ N 1' qA3"T_/SEm8tOQ: ,  wK=BHb5\b= m] )  pDfqLYH`CtHp. P x[%omXhPVo 2q%^\=rA'm@ &* [ {lHT/ u 2n7N<G vd;j$U  Y 6 vk T[nM ? h p fLV  \<p^*W5D i  29 oZ\VN "4+V  [ _7]jAKMO |Jbneb5hk1- W5VO/@- L n wB#KqO \{ >hkSfA@s` o|7Qn8Y&>z 2 *)!I|yS\d&i`V1 ix5Rb+ b  s l^p T` ? 3hz7h p  C X*jhx~; L v T |JaH#{ P{;0UPg 4kgr ]'[y~2+h  ZY} h +J% Lm^:!Ne_5BK S= \;&P@idwq + Cy z c Kk4T q; O/a `]g_:=e K }3  w 9VyfX<1?J_ Q;R LI EMJ  f /M(>f^Iv9t  JXDxBa\\K _xUF ( /  ( Y r PQ qS5=x\ WK2t  m[KzNub!h 3v |!pGwu-Xhu i  , <'AhR=5Kbf < >; XpsD*KA ;{ Qg= #i*"IlZz`-4Zh^8{ n ? # R 5. o^/X{<[vxCI-Z wW 2 BrQ0l3a.? 1GOoh / 0ppMp6 d?EI=  /H.x~4"8Le@ L- ~ > 1 /zO(_ߣ8ypM  l %  a &XQgM1P \R%i1/]v;l9b<g OkT8K) w)4 s{[S8E$ |.AQR7o3 ^S (' b}I&-E{Jc'*<}`b\1KH < ^ &I {pK>L]_gP 1 I  l5{ 5 { <dB]8xCYW S : JrYw]E6 % { 9Kk=a z#^7iUL6=*o+q m  bu| fF*/3U/m{mW- ; ~U wE;Bvw  k 20}E  fZ -Djf L}UB7 !<Uwo1i  5" fM  rFrN69&7S B$- 1  9 }b vOy#nazVv6  M 0 2 9Ii v 'T['<h5 "qJ[a  k@09@@* + N M,g6(ZK #B Ep7\v Z T! n PfNT>'c ifh>#j S  :%' $8z   Q7 bGg`=?`ut  g Gh g!#?(P b{y =i c[,a&tEi;YY (QI }p; r_4a'^ d$jrF !j4U 8 N x  ZL y;S@8fmJC' RlT ' Tgv=Ao MV \ c!gx 4[?_l-{ xu Y y ,7W4r ahk@yu QM$;G wtqP.)-pX s $ y29ncqZ LP!5uG5![>VOtRz :mg Nq *Rc8 ` uOGbLfN_UM0 1tf xa)M FnF y1/Kxz/  D t  *E<+5b=A{$\vmRhZ^;/7c|xX ]M\m7 a?/ a z B' r w {q_ 4 mRvlq`& h  N^:aj!DW}  D7 @w !Z f K L?&w*I }I C:7K  d Zs[ (2JG2 r'8y}|q v 3YIbj/w'1j SXIjLM|\SEF Lo C_ ] ) F z  L T4p$ ![Y2bp}ox t+1x V  & pu()o=M3'D4#16) O5kq  H_# J ."FCaW?:[9[; ! M` %KWj|  N m?S9jO#3Q I<5w > ? 36<VbEB tByS t  _M  \'|A@ }  A(vSXn=  "QI pZ [4 7?!Cp-e ^,oLC a ])E. OWN _uH:FN9u_  e Q)Mp_nJ<+f} Jva}?<hk(h %L9Q G eA v\\.I5L89`Wg j*i  Y qhm%fuP&l/7LE>$Uu(I%oZtdjD#DtQ41a : * x{ AV=>}*Z<  ~G7h' p !1_a%/ EEu\&dCfNq%Fw 4@i R . $D5r6U$"]Q~f _ .nd ^ u )#llzI.Fj~Pjx P 5p dnI^51|\Z ; pC;-+7>!~Z#`k { tG~$ ,H=k;U4 0tQ0M*o tO,tNy@r $s _WO_.N A Y U'r. {t= ` S]BL t/? _ 0Bh_*}*/W,U  w TG Y KtrZ(.:h s ) * |)wR =pu:JPw]1  m i t V $ T n OA{Fw [= K gt@"8'mavEpy}VEgMz | { 9 ^_^KR"zEr#KF=sje6tP X n3^(*hjNHf -ynU#^7\~rs  { ln" pi}>u1f u r  @n4kEtRc  moL]"MZrG f2cO  fc _I@ofC`107I+'9V f  l e|0gCvR`tV $ f1vq#?8@GS ~ [  e duL  `A)bNnz3!;Z1r  s'Gyz\ 3>8^-uH]cdc^Awp/.cSo`iBk`!e   V=wXf*oz_d -  , M{.k/|3FKvm>1Y9  ~0r:U* fZ2 qE~G`p9Q;02jP~`7 L ZnL]t+#?]sqI#&i , / < N : } %Ei6dXgrq ]S+2y :VDYe$]$^iw`6ykJz  <     6%?B!?hG&,@2G.A%6iNZ p ];?PCiU r V G > `/=E G v##1D;oy.ss 5 MzIF .Ur nGd^=&}x%cC%:&~Eo^%'4  RL D4;e5D^ul~Nw : q.g=o`U[9< /De|8U4 j wyu,  F]Ut"f$[}\L.  % Bkw8  U OR!DQ|h$tmJf_a@.z%649 q LVvFMN\ x gVW Tc I^.d#kh0?S< /   s z!CYYmt<Ca,EQ9{G|j w 7 % rI PG@E]9dglQNg@48%9oT4(Z  ;\Wxtpiy}\CE$5"-*nX:v U ~5(i-8%;XhQ O C x7k&:"&*8 %<~ )  \ ZaB&TUM#OY < QCX KV3B@O!!Q F dIe4)DZ1 h&6%Rw >  3k26g!syM<RHOI'd#j <m!&f> m z !  O`? +0 .A8 wD7fIW ! Uy  lQ n|RI  DM+H:| K hYk4xxPbFlRp<$8_  SC\H$KD2.sUsDR %={f.vxt/lTR xKnj.m  c }N GI>d#AF#:bP[/ '&9B+1{QX[; 08[hj{?V3XH"WznC MPbln;~9 / += ,Zw+r !DG ! v9W2- C v Ca #d2Zad3;qa nLCs+yd g  g+,fmIVD4i*l  8 m ]  T%~n +=/yoPDw)# p fm =VIW #h!,#}Mv 8 u = #MgejQw8]XKjN+m+.;zFyWJc6vF < {@;n%7"Q z. p 4C7gW{ w RBme#'tbduQ g"b ,| X'1Ur;9HY Fff N oPHh=Z@&JYH >bs%A~ZTxA{zz # DtVm(DYzK;ma;Y*J _KZ 69OY<6 * K2 h v  jIPBs*h;qRPb{:3 / NAK)ac`kwc?E9bxxaj%76*7/q.H9 l+h&r^[,"%1=`#  #  d -W`QwdX} A  b7q'qVDdS-$97]&i7 N0q52Trw9 _|e_^|IU1*S>-xp8 {$Mhfsp  W`|r,Lg!;6  l  )g/g<9?)Qh]ILYE 50VwD?b3]1SKB   kfEa= -Bb @ G fqzhX{zT &@< L * G^'A8p,0= \  bi< [omr}s8n$7#V Z#L2 p=\sX}MrBuA]]}6k+6pz<3I] O {PY7s VJG6zv8EFb:KgDL*'Wf:^P ?Y5$63@T ^ y%*!=| GvnN.g=K~b[  Gyj ] N " # . nRy[X4Nd=    t |i8BMb}7u[Pxj3']'@`M)xh|>_!iN AkO+M t]|]ZSMEC2 9 < |j` C>t3cwEh|a  Wi}%@Zc%BR15MJ,P( H = y}iYPpPYMZ B " ^  _XJ )Hr5yKl\AjY4Lp/OEX  3p\/@eU2& m ,MQ9 R=e@ (>; s> VZ s &,l 2,%~z -Ayc]Di1W ?  (c g  *l, ^e.  k `/N[vOV'Y RI N0kF g _6@}nU_ =(jDCE&263J8'D/[,|}f M WP G 6}KDF`o='pck$7R& <} , "Tj, 7gPڷ.[ k]|s0/ ~'=&V L-"P (NWhNb G a! ~)}j<]H& : lZ_ 4NT (Z+[q  S?@[,&\0"i/]7b$" מ&" o ' Eߊjqr DKFr m+(i1(67*+*     E>b &+A!eQ* WF IG ET9 @8ڼA3dYtG`BgP E$  Jo+8%Yvq-?p " 1$*ek: #)!GgUw Yc l :A# RvÕ3)ʜ"aRg - Xj,QS:,2!1D.( BU . Fu3fz$ni !%yKv{F&X*,+F!ހ&'{! ; O*t%.# 9jޠ`pEZ Gb W\F/@ЯֹG  7/Q J- DTph2 c 5Ab=, 4srS !{λ `!# T l h&WK7G1TC 0P-&b.iߩ E T  V h  6 $ 0$!*} @ _wl  &B"Rb RR|/d z%#R-!/7T [W;! )c$4S_D)'3G7_m.Y0 <չHkx5Vu&ܙ?*D'g/!w?ƻ ? "ySM eCv*u $ wЀQ+"H$& 7 Krߗk3=g 3o TQ]&~ gHgIEt G O/oL#-!$ 7= gb(XT'< }bQ9"K I jߤޚ79  8b\w&( p  Q V{ JIQ ~ ) xΚո X u8  /W$3&*$o!yd[#lw1k'&n3Sߵ" orYg!/`W UG ^Hc nm 'chkH:Oui  k9 ; -\w0%u v0QM6N|9   z YCF@l7;0 }_  nn q$* L sK?oE,xDmF ݘ| s!* y, KG5+vK}~T*F8bZ On LZ4w<f U341 o IRR&/ ߚH  KBGtOk i|t 4LC3D   yS0'Gѳ۶n26 60` MO Sq@\eun Fv6\ltjJdGLF2m, 9 b s0*_6?* U pMoliݾ/~ #$  : jFn b"xD4- ZONOd{ `/\$n/\wV _ v 6    Q o DP "qa1. 3P"!u*/i 4.BCp  X^$\6 QP  @ @&R*D9;z61 MnZ t{g\b~gHH3  )6. A > c7L / |xekb~ %Ro  '[Jr^'rl$D Y[ R6 k# (   QfQRMkkD,m R7Xz adlNcf{ " B'  P 1kvQA^5Op ;8%8 p GMv=mV/n_@ Ue'U> 2(l ] ol]v&^@97) Jx8HwWXT ozRlxI% 1 zApX vnX PMx !83}ib 6V[<X{1C-6,MZ c,^a lS5I|{  n G (Ur<N -e  U I L y%ow>7NaQKE\yGX [ U b % blL>@ C Cy u,R 43 YX7?e IR76 Z ;e4 sJ9qd G 25 3k4kr N5^12R eU.at l bX u gmA l[Jv C Y ( H * `n^lFV) F4 x2  v/  ]8d<b d ;r -\ g -AEnDa@nxwmVjY5 S 'hzbNPj_l *W'p}Y%G- X t vz Q\5 [[>(*0ik(6m o WeT.f)CZk)d 6q4 h/? sM9 y?bUp 6BXx+ E qMBlt$) >{ hZuxb |W ).V&^  %_LmrhE)* c_pi `hgp)h/q.j } } )m1~!r>9** ;9c' 7S_  w8Tc$ub3f <bX} _ >yf 9])<Z?>i_}gwL  SK Z cMxZ&ed$%d>7\^]u  tyx$g +>%TQ${  tK~qRV ;6 AB _(G-OZt (^N%G8w +?!`TW CX~+ bK9(V% wkGG 2 (_j/7XUQ94E eq"yp~h[Q 6 0 (Q# VRk |SXVbp%Lq!fG }g bmxKIN] ? K sc ff bhA}<~ / J?'x0 +qLX  qJ.F : vf'f;66ki%bK!(/>5*uE:C8%A  & q 9U#aF b< 6 4b `  t7fQ^"v @M7?=O Q`%n}s: ~C^y]S}    i 8il7.gB j$'7&!llj KT P<HDLCQ?AqM SFEzZQ g :1)sK]L+2cBn59 v Z6ekIl MnHjJiCa-lv=qIOg /q rW (5 &U(m2 hb* axc1r& 4 C:G ?}  L'LI  RHWs  ; +*nO 6 !_K~*f %  FE.t  xX`syqbh,FH+R0 eSIZ_@,z  X. 3 4f%)@M z l7ibC}U3g8Qs3 #/H$2o87;7-&%'Qb/  PZV*z5Vn = 2 T /E1ymwTEqi]Z^B No+j2s`,NDz F )_}t GFWgq-A  n8Z2=  X S 3~.`7b^ ~ OpwjQI  3|\=: 2aDl }c)*}=( q. Lk ?<6 "G_pl/ dcm.%{~#uzh)Z8Y9L&dF R #D6I   Y mL |$5#N8 % so^oh" 8 Rc{p>j$sm6{n?]o   W$z@PxL Bz=!Y5 ^>8`W 6 ],2?o@'nlZ< n< vN (`0 I A K*_ 0~Dul 1`mFq{ ct[- ;SZN  ?y`#Z)Iv \ 9($^ < 1SN}hl3[3)(@\cW1 ~ y ;-`oxv`([%w"xq\6oDX)O cBy:m" bhPs5_ `_x A +-G] Z =+G*oNrfyh@yQ& &$3^v u5R`q@qA'4T<A9/LANk QIWc nJ 1'kGE'c3GV"p Mrr?:}@IsP (; 9r5$c%H$F"OmG  #90h7WO n-|G!/;|%E#Y 8 )1p-O mQiJ`  q}.9ExDk_@8"i I ~_~)p-:;n <d>>@  -ZOTli Xm S AqADe'0dSB@e}8 s:^1 ~O_j<(tx jR f+]pF3gA7}J T } #pRJ Ju@JLl}%{kQFh ?H}v[ gu*X>gK m2*:Cap &n] 3 # g ]n"K(%hZreV$= (k ) 4#74v/y /Ow;j@WX#gw~  $sD{   Z?VyoMX By=;8@B7 A R|L$a,`k aOz Mq `!`q;\}Z}Xf9]P598 ;N\ C;N6["9H ua91 #SG7o @_2H4KON<.ooH g zovvpZ{ Uyb> R s+9l=[9vG yC O"u'# W1c\(]CE^eZ(CKXNj[{)bx\M Ua4 ,D+R pTa9Umds}V\prPDhW@U5v u 5nq.6m= XMA=<#E[T*1PV!S - z > CE..!1"T){^]"3Bv#, { ;HOo0&mHxrF C 2E664zb C{ 1a}c  fH {8!+O- EdJ  @] Jxa(Q>\w B _ }c"0 yUwt;\V ,SZm:(GQE0\rV{  p}rd;9(E( p nDC  d7Nb/LQ ~y'xh-<H,=x E9y$&>tYUvll&}99hjn [:jCoZ* b+UE $Kfh|w]n6 m(l.:;11\;3;DW4N3 R. j K `s{lO7(N  *^vJ#?UG{_2  5g*g h D ':=&3*3 (H{|[ RX_a0bT;/NSm0/bN P5x } Oy.Gx 4]p E ZPBA}p P M3D"! , `#]sh%#:T PM  m cs?j|*|0A- D n u~< X u <6wv$"FF($8vj $ ~_pIVV;5/`nKCU(2358  XeEq4f M l Gp9Z> = &GQ`1 r-0e]eY  &t  `~p*}7Z`ulK|T$|  ;^|B SWhii.yC6yopT!fUm`:7"x-:I.[ q`#>|c"!*e[jjT ]pK9n Hc2r= A`gp/c~.[%a CQUpPzU) Vx(XIHND nO a  oP@E;rTzuj >QD..nE&sGvr`f 3% .}S) VWGJr4F6|4 .-2o-p6hauFbR pqR7^/) N hidgwP2V Yv%]|I"[UY gjP !IAf]EzAg,.wn|f`aCT C.xk!$M9D b c 3Et8ZPH0d|5 3 L w ==9 dj5IAY.I_m | Wu+}=sf! 9 b>~ )0Y"Qb:!3x 8:{ES Z wz* M$`t%}NAy]M{$ uTE=mittNi_Ec8XxS Nelr4T,X \A9@H` nXRF$= j Mj6 5k=(;Q ' #{xlTy`a,  9U/o 8/ D 2 3!6tk 6 @'\_^ >> q, SXL ^!cZvNI5BJbkY>y[m5'-b k4@u2:tP  BSq]7}-4}}KIxn`/>RUhH9jATlZ K8"}@RLEI&O2 GZ ~ =h8e,/$q@y8Lm3AQ.4K IZQEq1^3wSyw: 0Ir|bJT jLVsrL//VYiu5_9 KnMkYjBd%D{NF*7+yf$S V_X91D#a |59n'5%h}&~C9q2N\z( Z 8ceDk] i%L$8{,1T.} g 7Z{s%|IF'3qoyx g1Om;_ H ol"@86h->L1bC?w87sZJJD.hP n m nUH !gwB)m/ h :Hv +/).0nxl{70G" x M z8#V D hp7/|'ELc(KYJpc +.P{  3 +^NsD 3c+H99P J$ eN U?>C)CE/.V3v9fX bC 8b-Eq:(Sfgu!<*, ) F 5jhUb<R_hV+e%[qh+ej&= 6H g)7-ag[0 hO@1^M6 =:PXfR|JiOMv*QflONH *> ^&Zec8Ifk6*1cF}#7@ /5g_*s P bg$Nf7 iljv EdfLc |E!YUC`2Dx!K +b{O5vl%5 v\jy*,Bv \V02EU*58&b4&nxH' V ` 6lSh1R;  ! |8_ g*|] t aN,ly)]8;{1=DU: xMJ&P |9v? B` jFjz8nOq3?_'"k  1' ; XN?:i3_NRj 5_F `(!0:S-,{^B(|-Z_j8u,9J+'HB HTv0+ qm%oV#Sj+H#O5, E R9Ta]DZd=E BD JYBY+ _X}!`ha9>~ CF,Wr/F A ye +Dx"1W~G$[ G@.1}Wz T },Yhhs&,/Btf -lu10jHo\@i85#4akC6:T~e!\za'djj9!/=j  A5 {2RfRl_TPty ; `$ ,F;f<aW'dv *wtk1n8!/;=HuN l,\ Bb`d[6 8 E!`h2^'oI3m[) R 2~SS ]F^*~ONU)"}wkQ1Nv9ym-oy 7- tT$ G\b_C$n6H ]4tLax94vugH1"`o 0KzE;qtzUP,}e,#!]qFR;WF E Y#pkz]V$ Qp'{1g:Ju~B,-QJYlcB^(/a>/[8lpl!7mIxjHke [ZI ,2 {#&iV>  7k[Db>`j  &du4'zo. F^/k)k;z{7WGQ5g({z>bU''$c8>f={*$WvS2`{VWwV 4Ym7`V ck>& RP6RyN67E}P.8%q99]I:5L'r9PJKI|lcVSJ`&s_#hyAz^l.hT5 1 0eVgQ3'5uHp-H"Vp3lGbKl Ly)|!min~b=gke5f<"i|*| HC}t ]ySC+b=M.lj5Y_KT0:[4! ?bmV%cf5'?6w5=FQO2 &% JP#eo& Y}8:|_=&I\Gpt]WHeaRJe)K@ `w?qJ6>bWsu*,EZq[_u6I5:J{` k ) p VS .Zu5 {*%u)')6~;Q%IU,Ja^'fU3bqB \4{ V'idGAt \!0A=S@T^ @= 3k[B7 Sq q e% o k@gps(I\m GQ9Ek^4dccq;yYl[1wN@Uk]]JHVC 9ZXzd(:WV V ;m LE#{}HY/`V+pBF TmvRYoae}#.8o7U1(&  :N/zbXjFN/ HLKj%twtep~tULF2NT>QOz')D#/{+&Vt6er^: C}02fwq,q]iwj_`zqrk_Pi ' ]-0- []}1yBCkp4Tu[XdxQY64!HX).OpX6f@)Z=,Z .M+kgAtUF}<Mj m0)ra,9!ltHz~%T!To2)7^K=7A<%R6K Vk/m4K  ;]EIrT %Y l}h'n$>-"{hMR g<^^^Z/c.WBn/R@^!fizuwb|{/-4;(7h6A>uck5rIn#Nike&zx=  }ohoYhAFN}i.e2@--i>Gvue8u= -/y6L&En,"}_h2JG'|t%DdM?Cd(6K\ 1q]1Mb[yn?NJ9\FfY\   ^5wmo8.h sM+&2GxZdyS*Xn>9_2,eN~#&z1X;{{ B A[og4q8(n(Zz^}2)fS3mIdB=RkW60]NWYkRY9$t&Hbxt|9u-K%")?aD[NA Qs ,A^K*JxwdyqDKsr#tNx@JE+Set"J75Q|S>4W/F~mfVw=Q fYN%gvbTQ1{dqj/o53iR*fjH)E aix0"s%FYJWc0,sn]:vZF3(ZOZJyS s$h:]QF2wQz= %^Z=@[h 6x!O0V|}}r *Q$YxWyi,s1KQHlNQ Rc;rdt+ 9I W49?%|2P-I'OT;]`p:gz[iv%-TWiR5X^i3Z&X $Xd->0 Q.R,+gMF5apTCNe I:ygM U*V7$6J)*G.M8 A(G4HHDr36EvZA,*IUB"J cSFtM`gs|c# GqXk*r` ] ;9e]o 8wI(d!1~Fvi &Avc32R:<JfnS,=BAQL0o:zMG|K'#48 V/WPso9N9"1]rZf-/#u1 _SjK*u)ZR@hLJd,:D ,j=i=,CGoVYg&V7UsVWc_ ,v' cv2 YPTJHD.p<~\[a'X= 1l__#n?6 Z16#1xXu}M:'j* 'kKBnss\+._WB?!~m)Rg76HC7l]PvZ>I@iH*+9o@4jbblR&U[RMPijd h  >@gR %,u:Jc`c}e3I='+=mq]i~25[JnZ2OY|#O o f 'np'~*(Yp eMOo,mMoS"'K>we twR(V `ui<'l_yOvvgSB1p  Y5HZ! Tn$d/IWTKM ' 7bd% e#zZhd;`nVXv]NDs=AcaL #2'|.uF"k3< VLVe,3qqf ?CLnk+/SIj7SshEz`clu`3L`JN(*3w,;h\Lja_ trlEnBs pa,b)K]v`_Z 3wKTyt`b91F[zd`]z%vo$=EdB?5CnoQ*''(BP^> sH*C+}H^"hokFKMZ`$R*U9 m/Rx( +@a!ggpZi<]hrRS]T\Y%fA 8~2N Mc_^:kf[&o3fS.4.oULp/7;y+@h(p2,v|BDnZ"<hM`/,(]+,cP.Zv't 4^wXMSVYYLa&@m[w=; 3~zp|U>h|}7YDs2&+Rn F ,:$5`>;Y\'f.%[o+ r= 81p mq)~tGL= Jds MLigQe ~u6++N'X5o ^>*`stn' :[o*Eho{#0aje{cQ'`75u7IX{q8#xd`[\|D+8=o mv.3Yq,(PYzQ: l~+u5y5&0 J 6+b Rs#\j+&Q[g!nm&9?SV >%PUO=sFXf<&}aI1 UB58IC*Uj;#"OTZ2 '[ &<Th&Hib^Kb?S(g-G*i hf~,MHK1 im/!l3.U#A,Lf*nB#7l??ie1HAjfU8o<117b7nFc@# )53JBcj6'-=X,oM72 I##J kDgG=}sS+/=ky&Fw'a7Q.HFcu\IM8` :d34yK38 *o@Rv+q>PB G9nt kR;#PjmQ[as[x:gF?`,L0,amAZnz]r'Li5s{LzQ|7L/"VFbqv{(":Z"IxA0R K?cku\&8z91xzP=@9'W6O5([C#N8{F0na/fbhS=8|h5`'R@5: m ;#-.je)uR5M4#Gp Ja3]u]VZ1=#|3A#3KGO[Q~*7ByJ4tX/&Zb g3x%Qg!DO{eL# }Fe%#c\'js-EOZ!ll*.b-9xAx8b*Ntep"~/ t0C-IY-CV$YLV'\?fSs9#*CgM^%7Dc?*%Pa!a{s|_D/s}oUa9I[!l/_.d|THDuq|j89]v{r5:hzijs. b8 #*P6d_W=:> ?0l<9FS8~}g72]j[6n#I42y <4E%5LQ$eMBAaoMxNxpV2O!j mg)-K{S]!3y;x#$L\*.7iPFZ9z iSg<Xo|p;eQ:x]].#[a_pxFh\s4{TF,-m0| hdF,q1\-AY|K/0?AsNv}j!+v8-Sc0pk!1X[7{Jkq,?N]>-Y:Pmg[Qb$c!(n%GC?|Qx965E`zY{r8?.I;&9p&8($- +JMtfW4h'Kk.`/- [y dGTx mCb|Pw9IG<|2kt[6+Ce8c]ZS_ib6.*=@`9.BC6kCy9l.rM _5G3Mf8|=X~kqo=H[=Z-@#W bS^c[3=tx=w!ThEK#)cu^ wl%T$ :|3=:u 45-_QD5:4FQ  1YD8xI${)1yH',*TZz$G37J4[m?WWir5AaJOu=9rQ!Huw4t%lB"mB:{rmRtwfH<7 ]V.6]loU;YDC1\4Riw=hOuIV6U9(Ge7E-[VS1L%/y]3rtXhL1$}~ril S[):mE Gx(85g*Dj3fneRx, ~R J t;_[C1 (v&_5 PQF/zX4@@f+r+ ,>6k9S=O^;-@&60`s[x5P[_<5_0&IWcQxz\Rgi{,_%r~]j%' s 0lmn VyAoP?(0\Ht{ _{M!#k6*JKI/vw8#~{GtnTz+HN&}>5'A+z:$=hd18x3}83fnl^\n &=lVD"mRFn v8)k(QKSOKYn$:KFv-og]R~JF}' \fNa^!-zW$Lh6OsTKTp!yC>$!xxSgMDp:E~+`eUD~TmNj8 't;=1BB+/P*nfK*}1-b{kJK:]}>#z.E 4#A[%:!Q+EPQ9kq M< y^VI^?Kuq%-jmJqSCMHOZ\"LS,<6_Y2zHA.Ko!;q`!99FJ<C5bX5x9<K]) )cvV> g*qC'C7])N!{Hkyd)"a,Y_{|tk2`7/iw_%E%GoJA4%+*/%6 l Cr/ymSU1>oR, E *j): ]m1{X[ zWR}\KxGo<S+Z"OueJwW3W*%u57#< .j?WsRd#[xtHi?f 0 Ldn[zZW2_YW;s[rHo+cxI[*n~;A\XJ_.tJ [^fO8&oU<C:]oAR'cBrDwO.x=N[(%,Y+LD_>zoM`5,AR\X1>>v$jG-2?{k{S>P <3t2z GPHP V|$[5+=![S;7-Hj>10 d? V+X0,_8uOM L$pB`{RKa][("LqAPe*==y <i`e)M8BaC%s{J?DGcZ]kA -znyGxs/ kH[F{a^u6[$, u;s,UCsV6qSr>an}_LrJBX9|8;BsP+i^A qT DrxcMZJ&H)HCvFAv~@rb37Pn70MPJ8^j)xDSeb$, WPiJPc+ jqB kP(PWeyjQDbVx1NM/`mc@-OR[GO  !v,OL$bG!gu#;n`.6}*7 W->GgA8)w'a-;pl S/p2^-s\7XG9c6,cVndO3C7&,M<"2Q1 ,d!$hIqvj5DC\qKkL /8 .#5&%Yx:I :yw cNwCy_^B\bLwf#'=duib;[o8DLk>abV\$F S5h;Ov&TAe 9.$@,vrk3 e"f0D-T6&x18vX< Npr [V!N>J.xya0(RdRh2wi`'7Z*D9ky;qmt5hnOivJwK wgH6UJN~] I~6i>*k'"q_vAb]#Diy=\pu61R$f)pcRQs 9CRx5 (;1P&B}RPgN<3Ra[|a_VjXfzD8*Y6HSam%Nb6i22x 5Z&C,u}H;FKmu@=lE xAgE=Sd8&Cvc'*:1hp<-s_uJu3FUQ,H!--50(}(\oC7>}LZ )#*+#  ttS@ M[3G  ^P.4I{in/TqQyr8T*E^]z?5;7@ySw<ISuQ'+-JDVI8 M@oz4Q: &Ii@??'b=-C,yRY;y?St}&\=C*`%)zz% jKwvxb}_ 7/fw/3]4/Zro_DK 3\bZ a~SQgn(vC d<(76jz\$vKGuue <?XNBs$z_p$QS;uU3YRD@Y:6VbIt+9nf#CD@ ?eXsgU!s8f"pV1Ut2V}ADI% @"4"3%j |GbJ"o^i:^d*u{ae]KbF sVWM$w(micropolis-activity/res/sounds/oop.wav0000775000076400007640000001157410724145723020466 0ustar simcitysimcityRIFFtWAVEfmt "VDdataP $* /KJ, )TlbD,)8EF>8:BA6%  ($!&;JE802:<>DMRE%#+4=B:) ;A (v;) {9m~\8'+<MX\^bixY32Qxy^PMQNJHIJB1$*Ky]9($)<$ }8F-/pDWH pqxP*)BUXH*Shr{/m.&1.;k)W<,KW=]'R)WD_Tlv&L[>Q#2+N/e JN0R 8kVWbkiS S 9j+F-EiyhNM){ g 6 A )  8 ?   N  R  MN >njb|{W,7qAg ~H 9C/ vKJZ]GUEZ]:& O~vWPk1y:Fo{(Y\ 3{"]xX!r9DL)U' >Mzr@ * ( !>;M4Bj b  #xcgdP1#4l6= ;A<R_"RcuHczQ&&pY: (GL[Y%y"d4RN~%~6arHw&Su "XE!5 i7 < 5}eK[<9WbXtct'' D]!% ` ] >  tG<\b % A b ; E B &:ef-;ruQ4_!h9}#HrM# )0D/ C/J  < / I35+g7eYYH>5`]YN R `  r } +ur C3Td.8knN'!!@ysW AV/ 5:O@M<# b  P y]KgA3Fg=rK|' T2l G2 J B Z~L:sߜߍ߅UB!b#/ - 5elfbm0<\4/fwx  <. 6m{p~sCzD5N " [$ S  j6XziG;IHc4{IRr~7k%  ] %  L|a Tpqu?*  & N,k(PEU [ 8 F &$8@Uj5 $.r , L2w>dn{ vp/RTY ! w ^:CMA m @ V R3m~>_f+5iaY{Nv!KD*w7iZ`D )  1 E M ~ %9 \C.' ) X i ? 1 5 : > > G h  c * x |_-T 8 bJy+~w51F -efrHYM b a Sn9U2Jk=  ^ # : M 0 s  d H@5R d @&;[RhNT-}b \sU8:$ ^  O    * 9V 'Gg5 e ' s ]*I 0  Eq=oD&J8+l3+e.xd5[?iI  PrWZN0 H r >8w> ` M = l ? 6 l u wg?L }A29dv"@>2dlP$ {N%$_xtkZpz`ax /^f(8=*7bu]PPY`bdkv{oYINi|fVG906GYZE& MrDw>++ 'C*?<{c(S:h.,+|F@cOdQF/P` 9 {s;7z: }MAv6u  4 3 S"5 ' o r Z{PD)]dr.TKώ6L\ܗCy*D9pt @x  ~  0 Z#i=HFD"&+*,u,,-0v3566y66665142 1/.8+'"%%  Y>.fȩqھkD@[7 T̡0d4ӯEk us }e!3! ee]jA b-NuV?&Az{J]>Is%]7jS55!TG*.cv][WD> a 4 8Z`bR"M A!!"$%')',-`/01T2x2&2"2c3=69>=;::;}?DJ uuWunC0( <D}X As'/"Cڗ׋GOߝ0SUCmF  S Q~( z$M&/$x& A@,II "r'ME+, + ^YB']O r4g./7 TF!a >C&F 1 jD74H(m/r\s Y    @ g_|(vFp!D)4-A;BR>2 / zk i6"3R8euq  -[: ܌ڸݝ !DX,D ~^`=# , ! a GVe4IuQujM I Hyj? "<eD>2iIE6ps6%TQ>edZ@V { = *Mto"nqUYQ t`1rHDMA)#%t.)`e>og7"U i8ZZK' v8<n    O`^(=8UGrH [  Q' = iLyS>d$RQ'  5 n QkK a ! q -D~Ij5mZ C * L a H-6CpXA/c JNGc[m*xx=1V`2dPhCe_O, T0o\NDg^h->w/ hfG6P9\dMb I y 0 C YL.(Fv " p^ s ] A!Z &ZNz[' 42YI  @V W J aFKEu `Ig@D3 VPMR#lpg n0EkwcfuD%lJRx X?)K;?!k9U<}6 E1 JY]jw:rLCi" n+m7;)"$T @C u 6RT5m ; _Lo$h LlkOgM2=? c 1  J  E S0LRV9OM;9+ D!JIwX2 ) ^3'q'2UZaM/y3t!$[,+}7]**Pd_r4% )(^ rkxh[X=n>|wG?~;eO/8*"*X $h=DNXA!  ! vF { "YZ@G| :>#U  ! J B 6 qe@9 r5sJ=)nV3b$u*VGec="GK#]rADcb^PU\?Yi[>B[_KH)"YGWY4Pzd10-Ag06H5r cLI ? =e* A  3 A @T,hO[,BL ` m & S  ' 4 #2x\Zap,R\QOmoYtV8B/B[ 1h]RPd`x.1}R*{- 6ztrXM[)nq[gJPn1a z  ~%4C hiM I-ߚrj)O9S1 L@= mjM@<bj6E:7fbVL: 1H*x],RP`qf;i[DI <݈N+ݥ=Z/% i7A! 1)UQ 9 / XqY >'n f+9DN.aX-$ % Lp!p  \FEw Wr P&5y[:7kDlwEgfES o[8j&r50& X d / efa."ր N7 ~L F-,;90Ck(l} U  O%N y%iNy9I8 y tF]D  x@ )xZB_pzF8h 0 n b 8   8Gu?(n99 + e Z 0<-RxښE~֗ڔP]a wIx]3G  4bFV!/|>O);*;k9WI#t   i CLd.A54:GXeL'g.L  6 9 p G : c ? N Q  R ' ' 7 ] f S E r > 3 f #!/ݰؗs-Ճ~ۥ$snAm c5#sLdtQ f w @,Ma#'PJ"x E~>8t~eA ?KZ BL,3OaO g $3#!Ks S ` QwJ  N m7FCb{׶ԃ\vѢtԏؒ}N'  <KYworrEMlg fa50~+9L$*"K:m8 2 [ w  S SSj_[ =Ho=b! C 9gQVpk*  G>w5 W jW)Du93<$ ` ?)>P!E U . pfBmg?!C&Nt  = .S8!-; {  @ a`W$fG 4 " *  h  r?"(p\َ.fߨnQk;! x L urQSLiG  rBi[jt*HY::<-*UeJ>w-E#Y/hv:yoJ Y ) l N <  C ! @ M  3g<QZv\~ 3E-)K HC k#rU\5D"#j ~ L z < A m w6Gw^p"RxR8T=hl` \E [ ' O @ * IXn b  M g + 1{7Aqi# ypH %ShIds 0 3'   &  N,'7jP OD`;dN#g.H56;-SGa,80#@N3 (';6!cOqR0J:'1K7zt_6?H&)ntoD e s7-M(eu:% )} [UA&&3)#.!F&#Gg?o jnLqlYe1TJ89esx0%&v,2g{?wLQcQ)tbb:8`lI ,! 2Ai+I@2Zh7 ti ' &0f3Sh*3/lCK fX)>jjJMgfLP}1   :6fbZ4%!{m:{t1WH,{e $[n Z:(pmvsTc^>9$H7S-tnt\B9L<NI%dK$&VQ%aU6Zg]L^;ih}t@#"\ln+$u.@eQb:zh_X,GZVb]2N>=F#&-W _3p5Zf)s0$OR{;""d5c$;##u<=+gP nt~&MoNU~,c< gfr2,Lw,SES}cmON[12(G"w;^dwr#5fXj$>tr~VR qN \ d5.fJZSFg=tu - Xj@=Wn0)( 7Bg{TacZSe*\}2F$=,rD;c Q ) { W_pV^L'f-&F Q@xRfGbD8oK3qI$#dfIK" <%c-X\oQr@J7I T 4 yV9*7Aw3;]Z8V?hzQC 4MZn{QF8$7Iv[ p0 qLEm v=b@"F m|R`^,TL,.R&@f;6e5'JR*||*yFvs)]16!9n _o!RMT435u!Or83  5_;U#9U\KL+pqyN},aqBe/VYHO/ :ONX*FX1E>  D Rz H F ; y k b # ; H ~@`'ffMZV1^%qQl^4,T y[v, p  "  < o`I^u L  ^ M a ] P  !  Oy \ q_T:JrBjcp } DTn[vDI.x<.t6"2!lB &jeby<s u x /Qq; u) M H fq-  ,x29`+,[To.Y+kP6Qp< Id?z|y!z"F  A C p  { oFo Q5Bax0^ ]  5h/vxL8(Q"KO  B]96uA`&Z+)F. G) DGW>  } ~   O- K > -gYkYgq]O&=Ow DjW\){Fl| ssH~r"-vN   =%[C! < _7@ZU aaBZD\2m:BXm"(0]>lQ<-AdR>*={ | ' 1 8 dlypFW!!)Eg8 [%J|_fMOmnwi`2t]}= [ZmmGKj \/u `@r]VtmQZ,)7>}K!0eh$Z}r\0*Fu5v Inm@<=bpcH49U{m@"'M1]@f\uc ytb(g2jvI  NPU>N}.t]}!JK~PWHlT!tmrP-D\e rZ>1:OV;pRPWN3ARDq}.%Jfw`_O.=s'KaX+,nv@\SN}FNxl k?l_!{<lYLQr7UM)JnD:6A ##&C[bQ(ywLJo^/(;A-Z-tFpZC):QWPGNd~YOK?n0i n^k}~gAg@Y1 hYTG%rH% !*>`&/Ab (F^f[NUunLE\vys     Pmicropolis-activity/res/sounds/beep.wav0000775000076400007640000001137010724145723020576 0ustar simcitysimcityRIFFWAVEfmt "VDdataBZy\,9oNzD%QgWDQ-jw_!N;&2>/_,Keu532S<XB {y B5|s<a])2D&+D{*s3uM5 ~Zs#Ua0"qOC<(m9-JZT9 8i/U ''$IfxG'@@lkg b|$p-j>" &D((nY~G?<8nsGw O{ n D^l=ZR5z>x M(oY_#FtP$ZC=NZ<]jH7b^<iEJ` ( ;c {-Z . {21RamIl&e,h  3 . ` pt`,u h{!-4 X , V?H'll0'0E}82r`3f/ln\X"<E G V Hy}E]`SO;_z&&*=O$/d "V l ; ?tJ f ti$# #2L#p7#,@l `b^~NFKbr\zI/AP"D h qt6+` ~5 6avSJvf)Q0&B+q-XQ|F4?$r%Uw K _?0 h   {3KePVZkfTP5w5KZ B;Hf\U1d=$  _ #  ;9  v'*"w90N|3pDM#=7 q S-  @aj+jMfCA,JRhrc/#45DdiJJ#jqSy,j}w7>:P 7\IfUZ ei$b(7! [ T ' 7bk Lz. y |RT}o^WyX hgv|(n /;.6)0 o 5s9{k8Vv_GZ{7aw9w'xD)QU09s<jWM , % o ? #@,zxOZ/`O ?   1.lr{ \ ldUHGkCj_a9P{QHBcB'kX\*=JtLc(<@/ \s+~W~S K S YD\!-  Zw0(8?Xo_d$g,<m|7(;jiE]. # # ADDITIONAL TERMS per GNU GPL Section 7 # # No trademark or publicity rights are granted. This license does NOT # give you any right, title or interest in the trademark SimCity or any # other Electronic Arts trademark. You may not distribute any # modification of this program using the trademark SimCity or claim any # affliation or association with Electronic Arts Inc. or its employees. # # Any propagation or conveyance of this program must include this # copyright notice and these terms. # # If you convey this program (or any modifications of it) and assume # contractual liability for the program to recipients of it, you agree # to indemnify Electronic Arts for any liability that those contractual # assumptions impose on Electronic Arts. # # You may not misrepresent the origins of this program; modified # versions of the program must be marked as such and not identified as # the original program. # # This disclaimer supplements the one included in the General Public # License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS # PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY # OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF # SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS # DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, # INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, # FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY # RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, # USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST # INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL # MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE # UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE # WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE # CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR # ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME # JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED # WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A # CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY # NOT APPLY TO YOU. global HeadWindows set n [Unique] set win .head$n catch "destroy $win" if {[catch "toplevel $win -screen $display"]} { puts stderr "Couldn't open X11 display \"$display\"." set win "" return "" } global HeadPanelWidth global HeadPanelHeight global MapPanelWidth global MapPanelHeight global NoticePanelWidth global NoticePanelHeight set visual [winfo screenvisual $win] set depth [winfo screendepth $win] #set screenwidth [winfo screenwidth $win] #set screenheight [winfo screenheight $win] set screenwidth 1200 set screenheight 900 if {!(("$visual" == "pseudocolor") || ("$visual" == "truecolor") || (("$visual" == "staticgray") && ($depth == 1)))} { catch "destroy $win" puts stderr "Micropolis can't find an appropriate visual on display \"$display\"." set win "" return "" } set HeadWindows [linsert $HeadWindows 0 $win] SetHelp $win Head LinkWindow $win.head $win LinkWindow $win.editor {} LinkWindow $win.map {} LinkWindow $win.graph {} LinkWindow $win.budget {} LinkWindow $win.evaluation {} LinkWindow $win.splash {} LinkWindow $win.scenario {} LinkWindow $win.file {} LinkWindow $win.config {} LinkWindow $win.notice {} LinkWindow $win.ask {} tk_bindForTraversal $win bind $win {tk_firstMenu %W} bind $win {tk_traverseToMenu %W %A} wm title $win "Micropolis Controls" wm iconname $win {Micropolis Controls} wm geometry $win 1200x900+0+0 #wm positionfrom $win user wm withdraw $win #wm maxsize $win $screenwidth $screenheight #wm minsize $win 100 100 wm protocol $win delete "DeleteHeadWindow $win ;" wm fullscreen $win on global $win.postedMenu global $win.Sound frame $win.col1 tk_bindForTraversal $win.col1 LinkWindow $win.col1 $win.col1 frame $win.col1.w1\ -width $HeadPanelWidth\ -height $HeadPanelHeight tk_bindForTraversal $win.col1.w1 frame $win.col1.w1.f1\ -borderwidth 1\ -relief raised tk_bindForTraversal $win.col1.w1.f1 bind $win.col1.w1.f1 {tk_firstMenu %W} bind $win.col1.w1.f1 {tk_traverseToMenu %W %A} SetHelp $win.col1.w1.f1.micropolis Head.MicropolisMenu menubutton $win.col1.w1.f1.micropolis\ -menu $win.col1.w1.f1.micropolis.m\ -text {Micropolis}\ -font [Font $win Medium]\ -variable $win.postedMenu tk_bindForTraversal $win.col1.w1.f1.micropolis bind $win.col1.w1.f1.micropolis {tk_firstMenu %W} bind $win.col1.w1.f1.micropolis {tk_traverseToMenu %W %A} tk_menus $win $win.col1.w1.f1.micropolis menu $win.col1.w1.f1.micropolis.m\ -font [Font $win Medium] tk_bindForTraversal $win.col1.w1.f1.micropolis.m bind $win.col1.w1.f1.micropolis.m {tk_firstMenu %W} bind $win.col1.w1.f1.micropolis.m {tk_traverseToMenu %W %A} $win.col1.w1.f1.micropolis.m add command\ -label {About...}\ -command "UIShowPicture 300" $win.col1.w1.f1.micropolis.m add command\ -label {Save City}\ -command "UISaveCity $win" $win.col1.w1.f1.micropolis.m add command\ -label {Save City as...}\ -command "UISaveCityAs $win" if {[sim MultiPlayerMode]} { $win.col1.w1.f1.micropolis.m add command\ -label {Add Player...}\ -command "UIShowPlayer $win" } $win.col1.w1.f1.micropolis.m add command\ -label {Choose City!}\ -command "UISelectCity $win" $win.col1.w1.f1.micropolis.m add command\ -label {Quit Playing!}\ -command "UIQuit $win" SetHelp $win.col1.w1.f1.options Head.OptionsMenu menubutton $win.col1.w1.f1.options\ -menu $win.col1.w1.f1.options.m\ -text {Options}\ -font [Font $win Medium]\ -variable $win.postedMenu tk_bindForTraversal $win.col1.w1.f1.options bind $win.col1.w1.f1.options {tk_firstMenu %W} bind $win.col1.w1.f1.options {tk_traverseToMenu %W %A} tk_menus $win $win.col1.w1.f1.options menu $win.col1.w1.f1.options.m\ -font [Font $win Medium] tk_bindForTraversal $win.col1.w1.f1.options.m bind $win.col1.w1.f1.options.m {tk_firstMenu %W} bind $win.col1.w1.f1.options.m {tk_traverseToMenu %W %A} $win.col1.w1.f1.options.m add checkbutton\ -label {Auto Budget}\ -variable AutoBudget\ -command {sim AutoBudget $AutoBudget} $win.col1.w1.f1.options.m add checkbutton\ -label {Auto Bulldoze}\ -variable AutoBulldoze\ -command {sim AutoBulldoze $AutoBulldoze} $win.col1.w1.f1.options.m add checkbutton\ -label {Disasters}\ -variable Disasters\ -command {sim Disasters $Disasters} $win.col1.w1.f1.options.m add checkbutton\ -label {Sound}\ -variable Sound\ -command {sim Sound $Sound} $win.col1.w1.f1.options.m add checkbutton\ -label {Animation}\ -variable DoAnimation\ -command {sim DoAnimation $DoAnimation} $win.col1.w1.f1.options.m add checkbutton\ -label {Messages}\ -variable DoMessages\ -command {sim DoMessages $DoMessages} $win.col1.w1.f1.options.m add checkbutton\ -label {Notices}\ -variable DoNotices\ -command {sim DoNotices $DoNotices} SetHelp $win.col1.w1.f1.disasters Head.DisastersMenu menubutton $win.col1.w1.f1.disasters\ -menu $win.col1.w1.f1.disasters.m\ -text {Disasters}\ -font [Font $win Medium]\ -variable $win.postedMenu tk_bindForTraversal $win.col1.w1.f1.disasters bind $win.col1.w1.f1.disasters {tk_firstMenu %W} bind $win.col1.w1.f1.disasters {tk_traverseToMenu %W %A} tk_menus $win $win.col1.w1.f1.disasters menu $win.col1.w1.f1.disasters.m\ -font [Font $win Medium] tk_bindForTraversal $win.col1.w1.f1.disasters.m bind $win.col1.w1.f1.disasters.m {tk_firstMenu %W} bind $win.col1.w1.f1.disasters.m {tk_traverseToMenu %W %A} $win.col1.w1.f1.disasters.m add command\ -label {Monster}\ -command "UIDisaster $win \"UIMakeMonster\" \"release a monster?\"" $win.col1.w1.f1.disasters.m add command\ -label {Fire}\ -command "UIDisaster $win \"sim MakeFire\" \"start a fire?\"" $win.col1.w1.f1.disasters.m add command\ -label {Flood}\ -command "UIDisaster $win \"sim MakeFlood\" \"bring on a flood?\"" $win.col1.w1.f1.disasters.m add command\ -label {Meltdown}\ -command "UIDisaster $win \"sim MakeMeltdown\" \"have a nuclear meltdown?\"" $win.col1.w1.f1.disasters.m add command\ -label {Tornado}\ -command "UIDisaster $win \"sim MakeTornado\" \"spin up a tornado?\"" $win.col1.w1.f1.disasters.m add command\ -label {Earthquake}\ -command "UIDisaster $win \"sim MakeEarthquake\" \"cause an earthquake?\"" SetHelp $win.col1.w1.f1.priority Head.PriorityMenu menubutton $win.col1.w1.f1.priority\ -menu $win.col1.w1.f1.priority.m\ -text {Priority}\ -font [Font $win Medium]\ -variable $win.postedMenu tk_bindForTraversal $win.col1.w1.f1.priority bind $win.col1.w1.f1.priority {tk_firstMenu %W} bind $win.col1.w1.f1.priority {tk_traverseToMenu %W %A} tk_menus $win $win.col1.w1.f1.priority menu $win.col1.w1.f1.priority.m\ -font [Font $win Medium] tk_bindForTraversal $win.col1.w1.f1.priority.m bind $win.col1.w1.f1.priority.m {tk_firstMenu %W} bind $win.col1.w1.f1.priority.m {tk_traverseToMenu %W %A} $win.col1.w1.f1.priority.m add radiobutton\ -label {Super Fast}\ -command {SetPriority 4}\ -value {4}\ -variable Priority $win.col1.w1.f1.priority.m add radiobutton\ -label {Fast}\ -command {SetPriority 3}\ -value {3}\ -variable Priority $win.col1.w1.f1.priority.m add radiobutton\ -label {Normal}\ -command {SetPriority 2}\ -value {2}\ -variable Priority $win.col1.w1.f1.priority.m add radiobutton\ -label {Slow}\ -command {SetPriority 1}\ -value {1}\ -variable Priority $win.col1.w1.f1.priority.m add radiobutton\ -label {Super Slow}\ -command {SetPriority 0}\ -value {0}\ -variable Priority SetHelp $win.col1.w1.f1.windows Head.WindowsMenu menubutton $win.col1.w1.f1.windows\ -menu $win.col1.w1.f1.windows.m\ -text {Windows}\ -font [Font $win Medium]\ -variable $win.postedMenu tk_bindForTraversal $win.col1.w1.f1.windows bind $win.col1.w1.f1.windows {tk_firstMenu %W} bind $win.col1.w1.f1.windows {tk_traverseToMenu %W %A} tk_menus $win $win.col1.w1.f1.windows menu $win.col1.w1.f1.windows.m\ -font [Font $win Medium] tk_bindForTraversal $win.col1.w1.f1.windows.m bind $win.col1.w1.f1.windows.m {tk_firstMenu %W} bind $win.col1.w1.f1.windows.m {tk_traverseToMenu %W %A} $win.col1.w1.f1.windows.m add command\ -label {Budget}\ -command "UIShowBudgetAndWait" $win.col1.w1.f1.windows.m add command\ -label {Evaluation}\ -command "ShowEvaluationOf $win" $win.col1.w1.f1.windows.m add command\ -label {Graph}\ -command "ShowGraphOf $win" #$win.col1.w1.f1.windows.m add command\ # -label {Map}\ # -command "ShowMapOf $win" #$win.col1.w1.f1.windows.m add command\ # -label {Editor}\ # -command "ShowEditorOf $win" #$win.col1.w1.f1.windows.m add command\ # -label {Frob}\ # -command "ShowFrobOf $win" #$win.col1.w1.f1.windows.m add command\ # -label {New Map}\ # -command "NewMapOf $win" #$win.col1.w1.f1.windows.m add command\ # -label {New Editor}\ # -command "NewEditorOf $win" LinkWindow $win.m0 $win.col1.w1.f1.micropolis.m LinkWindow $win.m1 $win.col1.w1.f1.options.m LinkWindow $win.m2 $win.col1.w1.f1.disasters.m LinkWindow $win.m3 $win.col1.w1.f1.priority.m LinkWindow $win.m4 $win.col1.w1.f1.windows.m LinkWindow $win.b0 $win.col1.w1.f1.micropolis LinkWindow $win.b1 $win.col1.w1.f1.options LinkWindow $win.b2 $win.col1.w1.f1.disasters LinkWindow $win.b3 $win.col1.w1.f1.priority LinkWindow $win.b4 $win.col1.w1.f1.windows pack append $win.col1.w1.f1\ $win.col1.w1.f1.micropolis {left frame nw} \ $win.col1.w1.f1.options {left frame nw} \ $win.col1.w1.f1.disasters {left frame nw} \ $win.col1.w1.f1.priority {left frame nw} \ $win.col1.w1.f1.windows {left frame nw} frame $win.col1.w1.f2\ -background #BFBFBF \ -borderwidth 1\ -relief raised frame $win.col1.w1.f2.f1\ -background #BFBFBF \ -borderwidth 1\ -relief flat frame $win.col1.w1.f2.f1.frame \ -background #BFBFBF \ -borderwidth 0\ -relief flat canvas $win.col1.w1.f2.f1.frame.demand\ -scrollincrement 0 \ -borderwidth 0 \ -background #BFBFBF \ -width 80 -height 55 LinkWindow $win.demand $win.col1.w1.f2.f1.frame.demand $win.col1.w1.f2.f1.frame.demand create bitmap 41 4 \ -tags picture \ -bitmap "@images/demandg.xpm" \ -anchor nw $win.col1.w1.f2.f1.frame.demand create rectangle -10 -10 1 1 \ -tags r \ -fill [Color $win #00ff00 #000000] $win.col1.w1.f2.f1.frame.demand create rectangle -10 -10 1 1 \ -tags c \ -fill [Color $win #0000ff #000000] $win.col1.w1.f2.f1.frame.demand create rectangle -10 -10 1 1 \ -tags i \ -fill [Color $win #ffff00 #000000] $win.col1.w1.f2.f1.frame.demand create bitmap 0 4 \ -tags micropolis \ -bitmap "@images/micropoliss.xpm" \ -anchor nw $win.col1.w1.f2.f1.frame.demand bind micropolis <1> {TogglePause} $win.col1.w1.f2.f1.frame.demand bind micropolis <2> {TogglePause} $win.col1.w1.f2.f1.frame.demand bind micropolis <3> {TogglePause} $win.col1.w1.f2.f1.frame.demand bind picture <1> "ToggleEvaluationOf $win" $win.col1.w1.f2.f1.frame.demand bind picture <2> "ToggleEvaluationOf $win" $win.col1.w1.f2.f1.frame.demand bind picture <3> "ToggleEvaluationOf $win" $win.col1.w1.f2.f1.frame.demand bind r <1> "ToggleEvaluationOf $win" $win.col1.w1.f2.f1.frame.demand bind r <2> "ToggleEvaluationOf $win" $win.col1.w1.f2.f1.frame.demand bind r <3> "ToggleEvaluationOf $win" $win.col1.w1.f2.f1.frame.demand bind c <1> "ToggleEvaluationOf $win" $win.col1.w1.f2.f1.frame.demand bind c <2> "ToggleEvaluationOf $win" $win.col1.w1.f2.f1.frame.demand bind c <3> "ToggleEvaluationOf $win" $win.col1.w1.f2.f1.frame.demand bind i <1> "ToggleEvaluationOf $win" $win.col1.w1.f2.f1.frame.demand bind i <2> "ToggleEvaluationOf $win" $win.col1.w1.f2.f1.frame.demand bind i <3> "ToggleEvaluationOf $win" SetHelp $win.col1.w1.f2.f1.frame.demand Head.Demand frame $win.col1.w1.f2.f1.frame.graphframe \ -background #BFBFBF \ -borderwidth 1\ -relief sunken graphview $win.col1.w1.f2.f1.frame.graphframe.graph\ -background #BFBFBF \ -font [Font $win Tiny] $win.col1.w1.f2.f1.frame.graphframe.graph Range 10 $win.col1.w1.f2.f1.frame.graphframe.graph Mask 7 LinkWindow $win.graphview $win.col1.w1.f2.f1.frame.graphframe.graph bind $win.col1.w1.f2.f1.frame.graphframe.graph "ToggleGraphOf $win" SetHelp $win.col1.w1.f2.f1.frame.graphframe.graph Head.Graph pack append $win.col1.w1.f2.f1.frame.graphframe \ $win.col1.w1.f2.f1.frame.graphframe.graph {left expand fill} pack append $win.col1.w1.f2.f1.frame \ $win.col1.w1.f2.f1.frame.demand {left frame sw padx 4} \ $win.col1.w1.f2.f1.frame.graphframe {right frame center expand fill} frame $win.col1.w1.f2.f1.info\ -background #BFBFBF \ -borderwidth 1\ -relief flat dateview $win.col1.w1.f2.f1.info.date\ -background #BFBFBF \ -width 20 \ -font [Font $win Medium] LinkWindow $win.date $win.col1.w1.f2.f1.info.date SetHelp $win.col1.w1.f2.f1.info.date Head.Date label $win.col1.w1.f2.f1.info.fundslabel\ -background #BFBFBF \ -relief flat\ -font [Font $win Medium]\ -text {}\ -anchor w\ -width 20 LinkWindow $win.funds $win.col1.w1.f2.f1.info.fundslabel bind $win.col1.w1.f2.f1.info.fundslabel "UIShowBudgetAndWait" SetHelp $win.col1.w1.f2.f1.info.fundslabel Head.Funds label $win.col1.w1.f2.f1.info.rate\ -background #BFBFBF \ -relief flat\ -font [Font $win Medium]\ -text {Tax Rate: 7%} \ -anchor w\ -width 20 LinkWindow $win.taxlabel $win.col1.w1.f2.f1.info.rate bind $win.col1.w1.f2.f1.info.rate "UIShowBudgetAndWait" scale $win.col1.w1.f2.f1.info.scale\ -background #BFBFBF \ -command {SetTaxRate}\ -orient horizontal\ -showvalue false\ -font [Font $win Medium]\ -sliderlength 15\ -to 20 $win.col1.w1.f2.f1.info.scale set 7 LinkWindow $win.taxrate $win.col1.w1.f2.f1.info.scale pack append $win.col1.w1.f2.f1.info \ $win.col1.w1.f2.f1.info.date {top frame nw} \ $win.col1.w1.f2.f1.info.fundslabel {top frame nw} \ $win.col1.w1.f2.f1.info.rate {top frame nw} \ $win.col1.w1.f2.f1.info.scale {top frame nw fill expand} pack append $win.col1.w1.f2.f1 \ $win.col1.w1.f2.f1.frame {left frame nw expand fill} \ $win.col1.w1.f2.f1.info {left frame nw} frame $win.col1.w1.f2.f2\ -borderwidth 1 \ -relief flat tk_bindForTraversal $win.col1.w1.f2.f2 bind $win.col1.w1.f2.f2 {tk_firstMenu %W} bind $win.col1.w1.f2.f2 {tk_traverseToMenu %W %A} SetHelp $win.col1.w1.f2.f2 Head.Log scrollbar $win.col1.w1.f2.f2.scroll\ -command "$win.col1.w1.f2.f2.text yview" \ -borderwidth 1 SetHelp $win.col1.w1.f2.f2.scroll Head.Scrollbar text $win.col1.w1.f2.f2.text \ -yscroll "$win.col1.w1.f2.f2.scroll set" \ -borderwidth 1 \ -relief sunken \ -wrap word \ -state disabled \ -height 5 \ -font [Font $win Text] LinkWindow $win.text $win.col1.w1.f2.f2.text $win.col1.w1.f2.f2.text tag configure status \ -font [Font $win Message] $win.col1.w1.f2.f2.text tag configure message \ -font [Font $win Message] \ -foreground #ffffff \ -background #3f3f3f $win.col1.w1.f2.f2.text tag configure alert \ -font [Font $win Alert] \ -foreground [Color $win #ff3f3f #000000] pack append $win.col1.w1.f2.f2 \ $win.col1.w1.f2.f2.scroll {left frame center filly} \ $win.col1.w1.f2.f2.text {right frame center fill expand} if {[sim MultiPlayerMode]} { frame $win.col1.w1.f2.f3 \ -borderwidth 1 \ -relief flat tk_bindForTraversal $win.col1.w1.f2.f3 bind $win.col1.w1.f2.f3 {tk_firstMenu %W} bind $win.col1.w1.f2.f3 {tk_traverseToMenu %W %A} button $win.col1.w1.f2.f3.chat \ -font [Font $win Large] \ -relief flat \ -text {Chat:} LinkWindow $win.chat $win.col1.w1.f2.f3.chat bind $win.col1.w1.f2.f3.chat <1> {ChatDown %W} bind $win.col1.w1.f2.f3.chat {ChatUp %W} SetHelp $win.col1.w1.f2.f3.chat Head.Chat entry $win.col1.w1.f2.f3.entry \ -relief sunken\ -text {}\ -foreground #ffffff\ -background #4f4f4f\ -textvariable $win.col1.w1.f2.f3.entry.value\ -font [Font $win Message] global $win.col1.w1.f2.f3.entry.value set $win.col1.w1.f2.f3.entry.value "" tk_bindForTraversal $win.col1.w1.f2.f3.entry bind $win.col1.w1.f2.f3.entry {tk_firstMenu %W} bind $win.col1.w1.f2.f3.entry {tk_traverseToMenu %W %A} bind $win.col1.w1.f2.f3.entry "DoEnterMessage %W %W.value" bind $win.col1.w1.f2.f3.entry "DoEvalMessage %W %W.value" bind $win.col1.w1.f2.f3.entry {focus %W} LinkWindow $win.entry $win.col1.w1.f2.f3.entry SetHelp $win.col1.w1.f2.f3.entry Head.Entry } frame $win.col1.w2 tk_bindForTraversal $win.col1.w2 LinkWindow $win.w2 $win.col1.w2 frame $win.col1.w3 tk_bindForTraversal $win.col1.w3 LinkWindow $win.w3 $win.col1.w3 frame $win.col2 tk_bindForTraversal $win.col2 LinkWindow $win.col2 $win.col2 #frame $win.col2.x1 -width 400 -height 400 #tk_bindForTraversal $win.col2.x1 #LinkWindow $win.x1 $win.col2.x1 #frame $win.col2.x2 #tk_bindForTraversal $win.col2.x2 #LinkWindow $win.x2 $win.col2.x2 #frame $win.col2.x3 #tk_bindForTraversal $win.col2.x3 #LinkWindow $win.x3 $win.col2.x3 #frame $win.col2.x4 #tk_bindForTraversal $win.col2.x4 #LinkWindow $win.x4 $win.col2.x4 if {[sim MultiPlayerMode]} { pack append $win.col1.w1.f2.f3 \ $win.col1.w1.f2.f3.chat {left frame center padx 4} \ $win.col1.w1.f2.f3.entry {left frame center fillx expand padx 4} pack append $win.col1.w1.f2 \ $win.col1.w1.f2.f1 {top frame center fillx} \ $win.col1.w1.f2.f2 {top frame center expand fill} \ $win.col1.w1.f2.f3 {top frame center fillx} } else { pack append $win.col1.w1.f2 \ $win.col1.w1.f2.f1 {top frame center fillx} \ $win.col1.w1.f2.f2 {top frame center expand fill} } pack append $win.col1.w1\ $win.col1.w1.f1 {top frame center fillx} \ $win.col1.w1.f2 {top frame center expand fill} #pack append $win\ # $win.col1 {left frame center filly} \ # $win.col2 {left frame center expand fill} place configure $win.col1\ -x 0\ -y 0\ -width $HeadPanelWidth\ -height $screenheight pack append $win.col1\ $win.col1.w1 {top frame nw fillx} \ $win.col1.w2 {top frame nw fillx} \ $win.col1.w3 {bottom frame sw fillx} #place configure $win.col1.w1\ # -x 0\ # -y 0\ # -width $HeadPanelWidth\ # -height $HeadPanelHeight #place configure $win.col1.w2\ # -x 0\ # -y $HeadPanelHeight\ # -width $MapPanelWidth\ # -height $MapPanelHeight #place configure $win.col1.w3\ # -x 0\ # -y [expr "$HeadPanelHeight + $MapPanelHeight"]\ # -width $NoticePanelWidth\ # -height [expr "$screenheight - ($HeadPanelHeight + $MapPanelHeight)"] place configure $win.col2\ -x [expr "$HeadPanelWidth + 5"]\ -y 0\ -width [expr "($screenwidth - $HeadPanelWidth) - 5"]\ -height $screenheight #pack append $win.col2\ # $win.col2.x1 {top frame nw fillx} \ # $win.col2.x2 {top frame nw fillx} \ # $win.col2.x3 {top frame nw expand fill} \ # $win.col2.x4 {top frame nw fillx} SetupSoundServer $win InitHead $win InitHeadMenus $win update idletasks micropolis-activity/res/mkindex.tcl0000664000076400007640000000310310724145723017764 0ustar simcitysimcity# auto_mkindex: # Given a directory and a glob-style specification for files in that # directory, generate a "tclIndex" file in the directory that is suitable # for use in auto-loading. Returns a null string. # # $Header: /user6/ouster/tcl/scripts/RCS/mkindex.tcl,v 1.2 91/12/16 08:29:25 ouster Exp $ SPRITE (Berkeley) # # Copyright 1991 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # proc auto_mkindex {dir files} { global errorCode errorInfo set oldDir [pwd] cd $dir set dir [pwd] append index "# Tcl autoload index file: each line identifies a Tcl\n" append index "# procedure and the file where that procedure is\n" append index "# defined. Generated by the \"auto_mkindex\" command.\n" append index "\n" foreach file [glob $files] { set f "" set error [catch { set f [open $file] while {[gets $f line] >= 0} { if [regexp {^proc[ ]+([^ ]*)} $line match procName] { append index "[list $procName $file]\n" } } close $f } msg] if $error { set code $errorCode set info $errorInfo catch [close $f] cd $oldDir error $msg $info $code } } set f [open tclindex w] puts $f $index nonewline close $f cd $oldDir } micropolis-activity/res/snro.1110000664000076400007640000006476010724145723017046 0ustar simcitysimcity88888888888888888888888888888888888888776666666555555555555555555555554444444444444445544444444444444444444444444444444488855444444333333210000/...-,,-./122111+$""!"""""     \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ZYXXXXXXXXXXXXXXXXX\\\\\[[[XXXXXXXXWWWVUUTMMMMQUVVXXl|uujMA:<EhHHHf}}{zm_lttm0i]VJB&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&((((((()))))))))))))))))'''&&&&(())++++*&+++)(*)*+$\&j\)W@ =@0.@ =@0.@=@HnܨHn䨡Hn n /(v n;Yq/. NXJ@f n h PC nHn?. # # ADDITIONAL TERMS per GNU GPL Section 7 # # No trademark or publicity rights are granted. This license does NOT # give you any right, title or interest in the trademark SimCity or any # other Electronic Arts trademark. You may not distribute any # modification of this program using the trademark SimCity or claim any # affliation or association with Electronic Arts Inc. or its employees. # # Any propagation or conveyance of this program must include this # copyright notice and these terms. # # If you convey this program (or any modifications of it) and assume # contractual liability for the program to recipients of it, you agree # to indemnify Electronic Arts for any liability that those contractual # assumptions impose on Electronic Arts. # # You may not misrepresent the origins of this program; modified # versions of the program must be marked as such and not identified as # the original program. # # This disclaimer supplements the one included in the General Public # License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS # PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY # OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF # SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS # DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, # INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, # FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY # RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, # USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST # INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL # MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE # UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE # WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE # CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR # ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME # JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED # WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A # CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY # NOT APPLY TO YOU. global GraphWindows set n [Unique] set parent [WindowLink $head.col2] set win $parent.graph$n set GraphWindows [linsert $GraphWindows 0 $win] LinkWindow $head.graph $win LinkWindow $win.head $head LinkWindow $win.parent $parent LinkWindow $win.top $win catch "destroy $win" frame $win SetHelp $win Graph bind $win {[WindowLink %W.graphview] Visible [string compare %s FullyObscured]} bind $win {[WindowLink %W.graphview] Visible 1} bind $win {[WindowLink %W.graphview] Visible 0} #wm title $win {Micropolis Graph} #wm iconname $win {Micropolis Graph} #wm group $win $head #wm geometry $win 550x200+440+730 #wm positionfrom $win user #wm withdraw $win #wm maxsize $win 1000 500 #wm minsize $win 150 85 #wm protocol $win delete "DeleteWindow graph GraphWindows" frame $win.centerframe\ -borderwidth 1\ -relief raised SetHelp $win.centerframe Graph.View graphview $win.centerframe.graph\ -font [Font $win Small] LinkWindow $win.centerframe.graph.pallet $win.leftframe LinkWindow $win.graphview $win.centerframe.graph pack append $win.centerframe\ $win.centerframe.graph {top frame center fill expand} frame $win.leftframe\ -borderwidth 1\ -relief raised frame $win.leftframe.left\ -borderwidth 0 button $win.leftframe.left.res\ -bitmap "@images/grres.xpm"\ -font [Font $win Medium]\ -borderwidth 0\ -relief flat\ -padx 0\ -pady 0\ -text {}\ -command "GraphPallet $win 0" SetHelp $win.leftframe.left.res Graph.Res button $win.leftframe.left.com\ -bitmap "@images/grcom.xpm"\ -font [Font $win Medium]\ -borderwidth 0\ -relief flat\ -padx 0\ -pady 0\ -text {}\ -command "GraphPallet $win 1" SetHelp $win.leftframe.left.com Graph.Com button $win.leftframe.left.ind\ -bitmap "@images/grind.xpm"\ -font [Font $win Medium]\ -borderwidth 0\ -relief flat\ -padx 0\ -pady 0\ -text {}\ -command "GraphPallet $win 2" SetHelp $win.leftframe.left.ind Graph.Ind pack append $win.leftframe.left\ $win.leftframe.left.res {top frame center padx 2 pady 2} \ $win.leftframe.left.com {top frame center padx 2 pady 2} \ $win.leftframe.left.ind {top frame center padx 2 pady 2} frame $win.leftframe.right\ -borderwidth 0 button $win.leftframe.right.money\ -bitmap "@images/grmony.xpm"\ -font [Font $win Medium]\ -borderwidth 0\ -relief flat\ -padx 0\ -pady 0\ -text {}\ -command "GraphPallet $win 3" SetHelp $win.leftframe.right.money Graph.Money button $win.leftframe.right.crime\ -bitmap "@images/grcrim.xpm"\ -font [Font $win Medium]\ -borderwidth 0\ -relief flat\ -padx 0\ -pady 0\ -text {}\ -command "GraphPallet $win 4" SetHelp $win.leftframe.right.crime Graph.Crime button $win.leftframe.right.pollution\ -bitmap "@images/grpoll.xpm"\ -font [Font $win Medium]\ -borderwidth 0\ -relief flat\ -padx 0\ -pady 0\ -text {}\ -command "GraphPallet $win 5" SetHelp $win.leftframe.right.pollution Graph.Pollution pack append $win.leftframe.right\ $win.leftframe.right.money {top frame center padx 2 pady 2} \ $win.leftframe.right.crime {top frame center padx 2 pady 2} \ $win.leftframe.right.pollution {top frame center padx 2 pady 2} frame $win.leftframe.year\ -borderwidth 0 button $win.leftframe.year.year10\ -bitmap "@images/gr10.xpm"\ -font [Font $win Medium]\ -borderwidth 0\ -relief flat\ -padx 0\ -pady 0\ -text {}\ -command "GraphYearPallet $win 0" SetHelp $win.leftframe.year.year10 Graph.10Years button $win.leftframe.year.year120\ -bitmap "@images/gr120.xpm"\ -font [Font $win Medium]\ -borderwidth 0\ -relief flat\ -padx 0\ -pady 0\ -text {}\ -command "GraphYearPallet $win 1" SetHelp $win.leftframe.year.year120 Graph.120Years pack append $win.leftframe.year\ $win.leftframe.year.year10 {top frame center} \ $win.leftframe.year.year120 {top frame center} \ pack append $win.leftframe\ $win.leftframe.year {top frame center padx 2 pady 2} \ $win.leftframe.left {left frame center} \ $win.leftframe.right {right frame center} \ frame $win.bottomframe\ -borderwidth 0 SetHelp $win.bottomframe Graph.Dismiss button $win.bottomframe.button\ -font [Font $win Large]\ -text {Dismiss Graph}\ -borderwidth 1 \ -command "pack unpack $win" pack append $win.bottomframe\ $win.bottomframe.button {top frame center expand fillx} pack append $win\ $win.bottomframe {bottom frame center fillx}\ $win.leftframe {left frame center filly} \ $win.centerframe {right frame center expand fill} InitGraph $win update idletasks micropolis-activity/res/text.tcl0000664000076400007640000001106110724145723017313 0ustar simcitysimcity# text.tcl -- # # This file contains Tcl procedures used to manage Tk entries. # # $Header: /user6/ouster/wish/scripts/RCS/text.tcl,v 1.2 92/07/16 16:26:33 ouster Exp $ SPRITE (Berkeley) # # Copyright 1992 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # # $tk_priv(selectMode@$w) holds one of "char", "word", or "line" to # indicate which selection mode is active. # The procedure below is invoked when dragging one end of the selection. # The arguments are the text window name and the index of the character # that is to be the new end of the selection. proc tk_textSelectTo {w x {y ""}} { global tk_priv if {$y != ""} { set index @$x,$y } else { set index $x } if {![info exists tk_priv(selectMode@$w)]} { set tk_priv(selectMode@$w) "char" } case $tk_priv(selectMode@$w) { char { if [$w compare $index < anchor] { set first $index set last anchor } else { set first anchor set last [$w index $index+1c] } } word { if [$w compare $index < anchor] { set first [$w index "$index wordstart"] set last [$w index "anchor wordend"] } else { set first [$w index "anchor wordstart"] set last [$w index "$index wordend"] } } line { if [$w compare $index < anchor] { set first [$w index "$index linestart"] set last [$w index "anchor lineend + 1c"] } else { set first [$w index "anchor linestart"] set last [$w index "$index lineend + 1c"] } } } $w tag remove sel 0.0 $first $w tag add sel $first $last $w tag remove sel $last end } # The procedure below is invoked to backspace over one character in # a text widget. The name of the widget is passed as argument. proc tk_textBackspace w { catch {$w delete insert-1c insert} } # The procedure below compares three indices, a, b, and c. Index b must # be less than c. The procedure returns 1 if a is closer to b than to c, # and 0 otherwise. The "w" argument is the name of the text widget in # which to do the comparison. proc tk_textIndexCloser {w a b c} { set a [$w index $a] set b [$w index $b] set c [$w index $c] if [$w compare $a <= $b] { return 1 } if [$w compare $a >= $c] { return 0 } scan $a "%d.%d" lineA chA scan $b "%d.%d" lineB chB scan $c "%d.%d" lineC chC if {$chC == 0} { incr lineC -1 set chC [string length [$w get $lineC.0 $lineC.end]] } if {$lineB != $lineC} { return [expr {($lineA-$lineB) < ($lineC-$lineA)}] } return [expr {($chA-$chB) < ($chC-$chA)}] } # The procedure below is called to reset the selection anchor to # whichever end is FARTHEST from the index argument. proc tk_textResetAnchor {w x y} { global tk_priv set index @$x,$y if {[$w tag ranges sel] == ""} { set tk_priv(selectMode@$w) char $w mark set anchor $index return } if [tk_textIndexCloser $w $index sel.first sel.last] { if {![info exists tk_priv(selectMode@$w)]} { set tk_priv(selectMode@$w) "char" } if {$tk_priv(selectMode@$w) == "char"} { $w mark set anchor sel.last } else { $w mark set anchor sel.last-1c } } else { $w mark set anchor sel.first } } proc tk_textDown {w x y} { global tk_priv set tk_priv(selectMode@$w) char $w mark set insert @$x,$y $w mark set anchor insert if {[lindex [$w config -state] 4] == "normal"} {focus $w} } proc tk_textDoubleDown {w x y} { global tk_priv set tk_priv(selectMode@$w) word $w mark set insert "@$x,$y wordstart" tk_textSelectTo $w insert } proc tk_textTripleDown {w x y} { global tk_priv set tk_priv(selectMode@$w) line $w mark set insert "@$x,$y linestart" tk_textSelectTo $w insert } proc tk_textAdjustTo {w x y} { tk_textResetAnchor $w $x $y tk_textSelectTo $w $x $y } proc tk_textKeyPress {w a} { if {"$a" != ""} { $w insert insert $a $w yview -pickplace insert } } proc tk_textReturnPress {w} { $w insert insert \n $w yview -pickplace insert } proc tk_textDelPress {w} { tk_textBackspace $w $w yview -pickplace insert } proc tk_textCutPress {w} { catch {$w delete sel.first sel.last} } proc tk_textCopyPress {w} { set sel "" catch {set sel [selection -window $w get]} $w insert $sel $w yview -pickplace insert } micropolis-activity/res/buildidx.tcl0000664000076400007640000000617710724145723020147 0ustar simcitysimcity# # buildidx.tcl -- # # Code to build Tcl package library. Defines the proc `buildpackageindex'. # #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: buildidx.tcl,v 2.0 1992/10/16 04:51:38 markd Rel $ #------------------------------------------------------------------------------ # proc TCHSH:PutLibLine {outfp package where endwhere autoprocs} { puts $outfp [concat $package $where [expr {$endwhere - $where - 1}] \ $autoprocs] } proc TCLSH:CreateLibIndex {libName} { if {[file extension $libName] != ".tlb"} { error "Package library `$libName' does not have the extension `.tlb'"} set idxName "[file root $libName].tndx" unlink -nocomplain $idxName set libFH [open $libName r] set idxFH [open $idxName w] set contectHdl [scancontext create] scanmatch $contectHdl "^#@package: " { set size [llength $matchInfo(line)] if {$size < 2} { error [format "invalid package header \"%s\"" $matchInfo(line)] } if $inPackage { TCHSH:PutLibLine $idxFH $pkgDefName $pkgDefWhere \ $matchInfo(offset) $pkgDefProcs } set pkgDefName [lindex $matchInfo(line) 1] set pkgDefWhere [tell $matchInfo(handle)] set pkgDefProcs [lrange $matchInfo(line) 2 end] set inPackage 1 } scanmatch $contectHdl "^#@packend" { if !$inPackage { error "#@packend without #@package in $libName } TCHSH:PutLibLine $idxFH $pkgDefName $pkgDefWhere $matchInfo(offset) \ $pkgDefProcs set inPackage 0 } set inPackage 0 if {[catch { scanfile $contectHdl $libFH } msg] != 0} { global errorInfo errorCode close libFH close idxFH error $msg $errorInfo $errorCode } if {![info exists pkgDefName]} { error "No #@package definitions found in $libName" } if $inPackage { TCHSH:PutLibLine $idxFH $pkgDefName $pkgDefWhere [tell $libFH] \ $pkgDefProcs } close $libFH close $idxFH scancontext delete $contectHdl # Set mode and ownership of the index to be the same as the library. file stat $libName statInfo chmod $statInfo(mode) $idxName chown [list $statInfo(uid) $statInfo(gid)] $idxName } proc buildpackageindex {libfile} { set status [catch {TCLSH:CreateLibIndex $libfile} errmsg] if {$status != 0} { global errorInfo errorCode error "building package index for `$libfile' failed: $errmsg" \ $errorInfo $errorCode } } micropolis-activity/res/wfile.tcl0000664000076400007640000001465010724145723017444 0ustar simcitysimcity# Window: File Chooser, for Unix Micropolis # # Micropolis, Unix Version. This game was released for the Unix platform # in or about 1990 and has been modified for inclusion in the One Laptop # Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If # you need assistance with this program, you may contact: # http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or (at # your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. You should have received a # copy of the GNU General Public License along with this program. If # not, see . # # ADDITIONAL TERMS per GNU GPL Section 7 # # No trademark or publicity rights are granted. This license does NOT # give you any right, title or interest in the trademark SimCity or any # other Electronic Arts trademark. You may not distribute any # modification of this program using the trademark SimCity or claim any # affliation or association with Electronic Arts Inc. or its employees. # # Any propagation or conveyance of this program must include this # copyright notice and these terms. # # If you convey this program (or any modifications of it) and assume # contractual liability for the program to recipients of it, you agree # to indemnify Electronic Arts for any liability that those contractual # assumptions impose on Electronic Arts. # # You may not misrepresent the origins of this program; modified # versions of the program must be marked as such and not identified as # the original program. # # This disclaimer supplements the one included in the General Public # License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS # PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY # OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF # SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS # DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, # INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, # FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY # RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, # USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST # INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL # MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE # UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE # WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE # CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR # ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME # JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED # WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A # CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY # NOT APPLY TO YOU. global FileWindows set n [Unique] set win .file$n set FileWindows [linsert $FileWindows 0 $win] LinkWindow $head.file $win LinkWindow $win.head $head catch "destroy $win" toplevel $win -screen $display SetHelp $win File wm title $win {File Chooser} wm iconname $win {File Chooser} wm geometry $win 350x480+5+5 wm positionfrom $win user wm sizefrom $win user wm maxsize $win 700 700 wm minsize $win 100 100 wm protocol $win delete "DeleteWindow file FileWindows" wm transient $win $head # Based on xf file selection box code by: # garfield@cs.tu-berlin.de # svoboda@transam.ece.cmu.edu (David Svoboda) message $win.message1 \ -aspect 1500 \ -anchor n \ -justify center \ -relief flat \ -font [Font $win Large] \ -text "" frame $win.frame1 \ -borderwidth 0 button $win.frame1.ok -text {OK} -font [Font $win Large] SetHelp $win.frame1.ok File.OK button $win.frame1.rescan -text {Rescan} -font [Font $win Large] SetHelp $win.frame1.rescan File.Rescan button $win.frame1.cancel -text {Cancel} -font [Font $win Large] SetHelp $win.frame1.cancel File.Cancel frame $win.path \ -borderwidth 2 \ -relief flat SetHelp $win.path File.Directory label $win.path.pathlabel -text {Directory:} -font [Font $win Large] entry $win.path.path -relief sunken -font [Font $win Large] frame $win.files \ -borderwidth 2 \ -relief flat SetHelp $win.files File.List scrollbar $win.files.vscroll \ -command "$win.files.files yview" scrollbar $win.files.hscroll \ -orient horizontal \ -command "$win.files.files xview" listbox $win.files.files \ -exportselection false \ -font [Font $win Large] \ -xscrollcommand "$win.files.hscroll set" \ -yscrollcommand "$win.files.vscroll set" pack append $win.files \ $win.files.vscroll {left filly} \ $win.files.hscroll {bottom fillx} \ $win.files.files {left fill expand} frame $win.file \ -borderwidth 2 \ -relief flat SetHelp $win.file File.File label $win.file.labelfile \ -relief flat \ -font [Font $win Large] \ -text "File:" entry $win.file.file \ -font [Font $win Large] \ -relief sunken pack append $win.file \ $win.file.labelfile {left} \ $win.file.file {left fill expand} bind $win.files.files "FileSelect $win %W %y" bind $win.files.files "FileSelect $win %W %y" bind $win.files.files "FileSelect $win %W %y" bind $win.files.files "FileSelect $win %W %y" bind $win.path.path "NameComplete $win path" catch "bind $win.path.path {}" bind $win.path.path " $win.file.file cursor 0 focus $win.file.file" bind $win.file.file "NameComplete $win file" bind $win.file.file " $win.path.path cursor 0 focus $win.path.path" catch "bind $win.path.path {}" pack append $win.frame1 \ $win.frame1.ok {left fill expand} \ $win.frame1.rescan {left fill expand} \ $win.frame1.cancel {left fill expand} pack append $win.path \ $win.path.pathlabel {left} \ $win.path.path {left fill expand} pack append $win \ $win.message1 {top fill} \ $win.frame1 {bottom fill} \ $win.file {bottom fill} \ $win.path {bottom fill} \ $win.files {left fill expand} update idletasks micropolis-activity/res/hexa.3850000664000076400007640000001750010724145723017015 0ustar simcitysimcity303030f`f`f`f`f`f`f`f`f`f`f`f`f`kfkffffffffkfkf`f`f`f```````````````UPVPUPUPVPUPUPVPUPUPVPUP003003030003003030003003030003003030f`f`f`>0f`f`f`f`f`f`>0f`f`f`f`f`f`>0f`f`f`f`f`f`>0f`f`f`f`f`f`o`o`o`f`f`񰿰񰻰񰿰f`f`࿰𾰻ྰ밾ྰ࿰࿰𻰈۰𪠪ڠڠݰPP00P00030```۰۰]mU0;۰````PPUPU[ݐ``03`P0U`PUP[Pۀۀ[PP݀P0`6``U08 ``3 03`30U05P``U``UPXUPh``UPUP̀h؀؀0>0> f`````fЙпِm0``mm0030U`````U`PUPUP[000000030P^[``𪀪``U>308PUʰ؀ِؐڠ۰`n`nePU`PUPUP]`&0annf`f`݀nnnnf`nn`nn```n`n`n`nnn`PU`PU meP[ 00л 𪰪мм໰۰배 лUP^^UPUPUPPP^^^PPP^\\PPP^^UPUPUPPPUP" +#" " " 0" " ; ... #+-ݰݰ --+໰Ͱ ---нݰͰ -+" " " ˰0" " ; " " +- ʠ" ---ʠ ---0 --" " " " 03330333330330>0330`n`n`f`f`PPn`n`n`PPPnPUPUPUPUPUPН۰ ːНН ȀННȀʠʠЛЙސ됙Ж0۰`ːГ`;00À<0Г`0Ơ0=-ЛЙސ됙" ++ " ,-+ް +--0 --" " " " ``f`fnfm" " " " " " " " 0000000000000000" " " " " " " " " " " " ʠ ʠ ʠ ʠ" " " " ʠʠʠʠ 00À00Ȁ0À00000À0Ơ0ȀƠ0ȀƠ0ȀƠ0ÀƠ0ȀƠ0ȀƠ0Ơ0``f`fn``0000fmicropolis-activity/res/hexa.2320000664000076400007640000006140010724145723017002 0ustar simcitysimcity  l l l l l llll00l l l l l=l0lll    0 m  =      < fooooooooof <0        00  0 l l  l l l l l l 0 l l   ```=`0 ` ` ` `` 00``` ` ` ` ` ` `          m        <   ooooooooofn  < 0        0 l  0       0  <  fooof < 0  0   <   ooo` < 0  0     0micropolis-activity/res/hexa.1120000664000076400007640000011000010724145723016766 0ustar simcitysimcity""0"!""#" "!2"" ""#"""#22"/"""3# """"""2" """#0 """"3"""""#0" """20""""# """"20 """"###"""""222" """"###" """""222""""""##3#"""""""23322"""""##03#"""""""330" """"#33"""""##0"""""23""2## """"220 """"###0""""#3220"""33#" ""#023"""""330" ""#03330"""""#333302""""30333"""#33"#3033"""""!""2"!# ""2 " """# """"""""2""""""# """""""30"" """#3""""""30"""""#3" """220"""""####0""""2222""" """"#3##""""""""""3323""" """"#3330"""""""""33330""""""""##03"""""""""3"""""""##"""#223""""3##3""##2230"""2?3#3""##22""203#""##333""2033"##30""20"##"20"# 2"0#""#0333" """!""""2"""#""20"""""0"""# """"3""""""#0""" """"2" """""# #3" """"""22220"2""""#####0###"""""3223333"""#33#30 """"33330""""#303"""""23"""""###0" """"2220"""""""#### " """"22223 """""##3##3""""""233233"##"""##333302232""2333333""##303""230""##3"""""23"""""##0""33330" 33" 3"2 2""""#0""""3""3"#0###"3322"3"220#032"#0"## "33""320#03""#0#3#2""33302""#"23003"""2##0 ""#"30""""2#0" ""#33" """330"""""#3#""""""330"2"""""#0#3"#""""""2233"22""""###"##""""""23#32"""##3#3"""""230" ""##3""""30"""#0 " ""20""""02"""#3"#3"""3"#32""#0"?3#"#3"313#10"33"0##02""0332#033" ""32#30"##""0""#"""03""#230"""0##0"""#220""0##0"""#230"""3##3"""#3330"""3330 """#330""" """330""""""""#3320""""2 ""##33##""32""""232"3"#33"""####30" 32""""2223033"""####032 """2233"""##3"""""30""""#3"#""""30"#2"""#3""#3""""3""#32"""#0"#""""3"#2#30##1010### 220 0#"0"#""" 2""""""33"" """333" "" """""0""## """2220"" ""##### """"""22222""#""""##### ""#2""""32220"#22"""#3330"333"""""3330332 """#333""""""33"" """#0""""""320" """####"/"""""2222 """"""#### """"" """2322""""2""""#333"""3"""""30333""""" 032"""""3""""" """"" """""2"2"##"102110#33 22203#"" "0##" 22" ""###"""2220""##3##""33"""#3"" ""30""""""#32""0""" ""#22""0""""""""3"230"22 """#####0##""""2222322""""####333"""""233202"""##33 """233"""""##3""" """230"""""""33" """ """#33""0##"""""#""## "#30""""22222# """"#####0""""22230""""##30""""23"""##3"""203"2###12033"230"#333"" #3"#32"0"#0""0"#0""#00""2#"##"30"20"#""##"3""20""/""## """""22#" ""## 32"""223 """# # """"22223#"""""######"#3""""222222#2""""####3#0""""""2223330#"""""##33032""""233333""""##333""""230"""###""""2220"""#####""""22223"""##3####"""333223#2##3330213030!#3""30"#333" """"""" #3""###"""20""#322 "##"""3# "0""#023"#0 ""3320"""#030"#" ""3030""""#30"""""300"""#300""""""300"""""#0"0""""""23"0""""###0"0 """"2230""3"""""####0"#2""""2323" """##3#3""""""23230""""##033"""""230"""##0"""23""##330""22220"""####0"""23230""##3#3"""23303"##0#30"1333#033"233033"""##"10#3"2202""##2"""20""##""""232"""#"#0"""2"""0 2"""""2""0"" """""#"##""""2 """#2220#"##"""""33# 22222"""330##33""""#033""""32""""32"#"""#"""""""""2""0 """""""""#""#""""""""2###2""""3"## 2223""""#2220###322""#3## 3333#"""33303322"" 33#"""22"""222""""33#"""" 33333"230##22# 20#"#""3##0121312"2020#"""3## """#32223""""####2""""2223"""#3332 """330""""#3" """30 """""#33""""""3##"#2""""#2203"23"""######0###2 """3222202333""""#33###332 """33323#"""33333"""""030""2""##""32""20"233""####?2""2023""# ##2""2230""# 332""230""#2"20"# "20## 2202"##330""""3"30"2!3!""#!3"" "2022"""# """"222"""### 2""##220 ""2330"""##30"""2""""# """""2 "2 ""# """#2""""2"" "32""""""2##3"""""""#"233""""2220##0#""""###02022""#330303#"""#33032""""303#""""#022"""200###""# 2322""2 ##3#""# 2022022"200##0#"##32022"20####3#"##20223022"2###03332222223#### 3222330"#30"#2"1"""12"30""23"""3" ""0" """3"""""" "/"""2#2""""#320""""""#"#0"""""#"#"0 """"#33330 " """#3330""""""#3""""#30"""#3"""##"""##0"""3#""""#""""""#30""""""#""" ""##230"""""##2300" """#3"33"""""3333"""""#330 ""333"""330""#3""#"3"3"#3""3"3""3 ""0" ""#""""""#"""""0"230  " " """"" """"""""""""""" """" "" "" """"""""""""" "" """""""""""" " """""""""""""0" """""""""""#"" """""""""""""""2#""" """""""""""233330""""""""""""""##200 2""""""""""""""""323"""""2""##23#033#23""""3#23303333323#333# 3#23#3#3"""03032#3033333333 3300303330"""""""" #"33"""302""03"#"03"02"02"0""032"03""0""0#"""0# ""0#2 """"02320""""""""#""#" """33"#""""2#3"#"""2#0#3"""""3033""""2333""""30""""30""""30"""3""""0" """03""""##"""""#"3"#""""2333"#"""#2333"32"#"300"32""#33#02""300#02""#32"#03"#032#012101"1"33"303300 """" """  """""" " """ """" " " """" """""""""""""" "0"""""""""""""" "0"""""""""""""""" """""""""""""" "0#3"""""""""""""""""""033333"""""""""""" ""#0#33#2"""""""""""""""0""""""""""""""""##2#23"""2""""3"30#3323#"""#23#330"23333#3303333233#2#0333""#32302#3302333333333003303330micropolis-activity/res/tclinit.tcl0000664000076400007640000000544210724145723020003 0ustar simcitysimcity#----------------------------------------------------------------------------- # TclInit.tcl -- Extended Tcl initialization. #----------------------------------------------------------------------------- # $Id: TclInit.tcl,v 2.0 1992/10/16 04:51:37 markd Rel $ #----------------------------------------------------------------------------- global env TCLENV set TCLENV(inUnknown) 0 # # Unknown command trap handler. # proc unknown {cmdName args} { global TCLENV if $TCLENV(inUnknown) { error "recursive unknown command trap: \"$cmdName\""} set TCLENV(inUnknown) 1 set stat [catch {demand_load $cmdName} ret] if {$stat == 0 && $ret} { set TCLENV(inUnknown) 0 return [uplevel 1 [list eval $cmdName $args]] } if {$stat != 0} { global errorInfo errorCode set TCLENV(inUnknown) 0 error $ret $errorInfo $errorCode } global env interactiveSession noAutoExec if {$interactiveSession && ([info level] == 1) && ([info script] == "") && (!([info exists noAutoExec] && [set noAutoExec]))} { if {[file rootname $cmdName] == "$cmdName"} { if [info exists env(PATH)] { set binpath [searchpath [split $env(PATH) :] $cmdName] } else { set binpath [searchpath "." $cmdName] } } else { set binpath $cmdName } if {[file executable $binpath]} { set TCLENV(inUnknown) 0 uplevel 1 [list system [concat $cmdName $args]] return } } set TCLENV(inUnknown) 0 error "invalid command name: \"$cmdName\"" } # # Search a path list for a file. (catch is for bad ~user) # proc searchpath {pathlist file} { foreach dir $pathlist { if {$dir == ""} {set dir .} if {[catch {file exists $dir/$file} result] == 0 && $result} { return $dir/$file } } return {} } # # Define a proc to be available for demand_load. # proc autoload {filenam args} { global TCLENV foreach i $args { set TCLENV(PROC:$i) [list F $filenam] } } # # Search TCLPATH for a file to source. # proc load {name} { global TCLPATH errorCode if {[string first / $name] >= 0} { return [uplevel #0 source $name] } set where [searchpath $TCLPATH $name] if [lempty $where] { error "couldn't find $name in Tcl search path" "" "TCLSH FILE_NOT_FOUND" } uplevel #0 source $where } autoload buildidx.tcl buildpackageindex # == Put any code you want all Tcl programs to include here. == if !$interactiveSession return # == Interactive Tcl session initialization == set TCLENV(topLevelPromptHook) {global programName; concat "$programName>" } set TCLENV(downLevelPromptHook) {concat "=>"} if [file readable ~/.tclrc] {source ~/.tclrc} micropolis-activity/res/menu.tcl0000664000076400007640000003257710724145723017312 0ustar simcitysimcity# menu.tcl -- # # This file contains Tcl procedures used to manage Tk menus and # menubuttons. Most of the code here is dedicated to support for # menu traversal via the keyboard. # # $Header: /user6/ouster/wish/scripts/RCS/menu.tcl,v 1.11 92/08/08 14:49:55 ouster Exp $ SPRITE (Berkeley) # # Copyright 1992 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # # The procedure below is publically available. It is used to indicate # the menus associated with a particular top-level window, for purposes # of keyboard menu traversal. Its first argument is the path name of # a top-level window, and any additional arguments are the path names of # the menu buttons associated with that top-level window, in the order # they should be traversed. If no menu buttons are named, the procedure # returns the current list of menus for w. If a single empty string is # supplied, then the menu list for w is cancelled. Otherwise, tk_menus # sets the menu list for w to the menu buttons. # Variables used by menu buttons: # $tk_priv(posted@$screen) - keeps track of the menubutton whose menu is # currently posted (or empty string, if none). # $tk_priv(inMenuButton@$screen)- # if non-null, identifies menu button # containing mouse pointer. # $tk_priv(relief@$screen) - keeps track of original relief of posted # menu button, so it can be restored later. # $tk_priv(dragging@$screen) - if non-null, identifies menu button whose # menu is currently being dragged in a tear-off # operation. # $tk_priv(focus@$screen) - records old focus window so focus can be # returned there after keyboard traversal # to menu. # # Variables used by menus: # $tk_priv(x@$screen) and $tk_priv(y@$screen) are used to keep # track of the position of the mouse cursor in the menu window # during dragging of tear-off menus. $tk_priv(window) keeps track # of the menu containing the mouse, if any. proc tk_menus {w args} { global tk_priv if {$args == ""} { if [catch {set result [set tk_priv(menusFor$w)]}] { return "" } return $result } if {$args == "{}"} { catch {unset tk_priv(menusFor$w)} return "" } append tk_priv(menusFor$w) " $args" } # The procedure below is publically available. It takes any number of # arguments taht are names of widgets or classes. It sets up bindings # for the widgets or classes so that keyboard menu traversal is possible # when the input focus is in those widgets or classes. proc tk_bindForTraversal args { foreach w $args { bind $w {tk_traverseToMenu %W %A} bind $w {tk_firstMenu %W} } } # The procedure below does all of the work of posting a menu (including # unposting any other menu that might currently be posted). The "w" # argument is the name of the menubutton for the menu to be posted. # Note: if $w is disabled then the procedure does nothing. proc tk_mbPost {w} { global tk_priv if {[lindex [$w config -state] 4] == "disabled"} { return } set screen [winfo screen $w] if {![info exists tk_priv(posted@$screen)]} { set tk_priv(posted@$screen) {} } if {![info exists tk_priv(focus@$screen)]} { set tk_priv(focus@$screen) {} } set cur $tk_priv(posted@$screen) if {$cur == $w} { return } if {$cur != ""} {tk_mbUnpost $w} set tk_priv(relief@$screen) [lindex [$w config -relief] 4] $w config -relief raised set tk_priv(cursor@$screen) [lindex [$w config -cursor] 4] $w config -cursor arrow $w post catch {grab -global $w} set tk_priv(posted@$screen) $w if {$tk_priv(focus@$screen) == ""} { set tk_priv(focus@$screen) [focus -query $w] } set menu [lindex [$w config -menu] 4] focus $menu } # The procedure below does all the work of unposting the menubutton that's # currently posted. It takes no arguments. proc tk_mbUnpost {w} { global tk_priv set screen [winfo screen $w] if {![info exists tk_priv(posted@$screen)]} { set tk_priv(posted@$screen) {} } if {![info exists tk_priv(focus@$screen)]} { set tk_priv(focus@$screen) {} } set mb $tk_priv(posted@$screen) if {$mb != ""} { $mb config -relief $tk_priv(relief@$screen) $mb config -cursor $tk_priv(cursor@$screen) $mb unpost catch {grab -off $mb} set menu [lindex [$mb config -menu] 4] focus $tk_priv(focus@$screen) set tk_priv(focus@$screen) "" set tk_priv(posted@$screen) {} } } # The procedure below is invoked to implement keyboard traversal to # a menu button. It takes two arguments: the name of a window where # a keystroke originated, and the ascii character that was typed. # This procedure finds a menu bar by looking upward for a top-level # window, then looking for a window underneath that named "menu". # Then it searches through all the subwindows of "menu" for a menubutton # with an underlined character matching char. If one is found, it # posts that menu. proc tk_traverseToMenu {w char} { if {$char == ""} { return } set char [string tolower $char] foreach mb [tk_getMenuButtons $w] { if {[winfo class $mb] == "Menubutton"} { set char2 [string index [lindex [$mb config -text] 4] \ [lindex [$mb config -underline] 4]] if {[string compare $char [string tolower $char2]] == 0} { tk_mbPost $mb [lindex [$mb config -menu] 4] activate 0 return } } } } # The procedure below is used to implement keyboard traversal within # the posted menu. It takes two arguments: the name of the menu to # be traversed within, and an ASCII character. It searches for an # entry in the menu that has that character underlined. If such an # entry is found, it is invoked and the menu is unposted. proc tk_traverseWithinMenu {w char} { if {$char == ""} { return } set char [string tolower $char] set last [$w index last] for {set i 0} {$i <= $last} {incr i} { if [catch {set char2 [string index \ [lindex [$w entryconfig $i -label] 4] \ [lindex [$w entryconfig $i -underline] 4]]}] { continue } if {[string compare $char [string tolower $char2]] == 0} { tk_mbUnpost $w $w invoke $i return } } } # The procedure below takes a single argument, which is the name of # a window. It returns a list containing path names for all of the # menu buttons associated with that window's top-level window, or an # empty list if there are none. proc tk_getMenuButtons {w} { global tk_priv set top [winfo toplevel $w] if [catch {set buttons [set tk_priv(menusFor$top)]}] { return "" } return $buttons } # The procedure below is used to traverse to the next or previous # menu in a menu bar. It takes one argument, which is a count of # how many menu buttons forward or backward (if negative) to move. # If there is no posted menu then this procedure has no effect. proc tk_nextMenu {w count} { global tk_priv set screen [winfo screen $w] if {![info exists tk_priv(posted@$screen)]} { set tk_priv(posted@$screen) {} } if {$tk_priv(posted@$screen) == ""} { return } set buttons [tk_getMenuButtons $tk_priv(posted@$screen)] set length [llength $buttons] for {set i 0} 1 {incr i} { if {$i >= $length} { return } if {[lindex $buttons $i] == $tk_priv(posted@$screen)} { break } } incr i $count while 1 { while {$i < 0} { incr i $length } while {$i >= $length} { incr i -$length } set mb [lindex $buttons $i] if {[lindex [$mb configure -state] 4] != "disabled"} { break } incr i $count } tk_mbUnpost $w tk_mbPost $mb [lindex [$mb config -menu] 4] activate 0 } # The procedure below is used to traverse to the next or previous entry # in the posted menu. It takes one argument, which is 1 to go to the # next entry or -1 to go to the previous entry. Disabled entries are # skipped in this process. proc tk_nextMenuEntry {w count} { global tk_priv set screen [winfo screen $w] if {![info exists tk_priv(posted@$screen)]} { set tk_priv(posted@$screen) {} } if {$tk_priv(posted@$screen) == ""} { return } set menu [lindex [$tk_priv(posted@$screen) config -menu] 4] set length [expr [$menu index last]+1] set i [$menu index active] if {$i == "none"} { set i 0 } else { incr i $count } while 1 { while {$i < 0} { incr i $length } while {$i >= $length} { incr i -$length } if {[catch {$menu entryconfigure $i -state} state] == 0} { if {[lindex $state 4] != "disabled"} { break } } incr i $count } $menu activate $i } # The procedure below invokes the active entry in the posted menu, # if there is one. Otherwise it does nothing. proc tk_invokeMenu {w} { set i [$w index active] if {$i != "none"} { tk_mbUnpost $w update idletasks $w invoke $i } } # The procedure below is invoked to keyboard-traverse to the first # menu for a given source window. The source window is passed as # parameter. proc tk_firstMenu {w} { set mb [lindex [tk_getMenuButtons $w] 0] if {$mb != ""} { tk_mbPost $mb [lindex [$mb config -menu] 4] activate 0 } } # The procedure below is invoked when a button-1-down event is # received by a menu button. If the mouse is in the menu button # then it posts the button's menu. If the mouse isn't in the # button's menu, then it deactivates any active entry in the menu. # Remember, event-sharing can cause this procedure to be invoked # for two different menu buttons on the same event. proc tk_mbButtonDown {w x y} { global tk_priv set screen [winfo screen $w] if {![info exists tk_priv(inMenuButton@$screen)]} { set tk_priv(inMenuButton@$screen) {} } if {![info exists tk_priv(posted@$screen)]} { set tk_priv(posted@$screen) {} } if {[lindex [$w config -state] 4] == "disabled"} { return } if {$tk_priv(inMenuButton@$screen) == $w} { tk_mbPost $w } if {$tk_priv(posted@$screen) != ""} then { set menu [lindex [$tk_priv(posted@$screen) config -menu] 4] if {![info exists tk_priv(window@$screen)]} { set tk_priv(window@$screen) {} } if {$tk_priv(window@$screen) != $menu} { $menu activate none } } } proc tk_mbButtonUp {w x y} { global tk_priv set screen [winfo screen $w] if {![info exists tk_priv(inMenuButton@$screen)]} { set tk_priv(inMenuButton@$screen) {} } if {![info exists tk_priv(posted@$screen)]} { set tk_priv(posted@$screen) {} } if {($tk_priv(inMenuButton@$screen) != "") && ($tk_priv(posted@$screen) != "")} { [lindex [$tk_priv(posted@$screen) config -menu] 4] activate 0 } else { tk_mbUnpost $w } } proc tk_mbButtonEnter {w m} { global tk_priv set screen [winfo screen $w] set tk_priv(inMenuButton@$screen) $w if {[lindex [$w config -state] 4] != "disabled"} { $w config -state active } } proc tk_mbButtonLeave {w} { global tk_priv set screen [winfo screen $w] set tk_priv(inMenuButton@$screen) {} if {[lindex [$w config -state] 4] != "disabled"} { $w config -state normal } } # In the binding below, it's important to ignore grab-related entries # and exits because they lag reality and can cause menus to chase # their own tail, repeatedly posting and unposting. proc tk_mbButton1Enter {w m} { global tk_priv set screen [winfo screen $w] set tk_priv(inMenuButton@$screen) $w if {([lindex [$w config -state] 4] != "disabled") && ("$m" != "NotifyGrab") && ("$m" != "NotifyUngrab")} { $w config -state active tk_mbPost $w } } proc tk_mbButton2Down {w x y} { global tk_priv set screen [winfo screen $w] if {![info exists tk_priv(inMenuButton@$screen)]} { set tk_priv(inMenuButton@$screen) {} } if {![info exists tk_priv(posted@$screen)]} { set tk_priv(posted@$screen) {} } if {($tk_priv(posted@$screen) == "") && ([lindex [$w config -state] 4] != "disabled")} { set tk_priv(dragging@$screen) $w [lindex [$w config -menu] 4] post $x $y } } proc tk_mbButton2Motion {w x y} { global tk_priv set screen [winfo screen $w] if {![info exists tk_priv(dragging@$screen)]} { set tk_priv(dragging@$screen) {} } if {$tk_priv(dragging@$screen) != ""} { [lindex [$tk_priv(dragging@$screen) config -menu] 4] post $x $y } } proc tk_mbButton2Up {w x y} { global tk_priv set screen [winfo screen $w] set tk_priv(dragging@$screen) "" } proc tk_menuEnter {w y} { global tk_priv set screen [winfo screen $w] set tk_priv(window@$screen) $w $w activate @$y } proc tk_menuLeave {w} { global tk_priv set screen [winfo screen $w] set tk_priv(window@$screen) {} $w activate none } proc tk_menuMotion {w y} { global tk_priv set screen [winfo screen $w] if {![info exists tk_priv(window@$screen)]} { set tk_priv(window@$screen) {} } if {$tk_priv(window@$screen) != ""} { $w activate @$y } } proc tk_menuUp {w y} { tk_menuMotion $w $y tk_invokeMenu $w } proc tk_menu2Down {w x y} { global tk_priv set screen [winfo screen $w] set tk_priv(x@$screen) $x set tk_priv(y@$screen) $y } proc tk_menu2Motion {w x y} { global tk_priv set screen [winfo screen $w] if {$tk_priv(posted@$screen) == ""} { $w post [expr $x-$tk_priv(x@$screen)] [expr $y-$tk_priv(y@$screen)] } } micropolis-activity/res/wnotice.tcl0000664000076400007640000001327610724145723020011 0ustar simcitysimcity# Window: Notices, for Unix Micropolis. # # Micropolis, Unix Version. This game was released for the Unix platform # in or about 1990 and has been modified for inclusion in the One Laptop # Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If # you need assistance with this program, you may contact: # http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or (at # your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. You should have received a # copy of the GNU General Public License along with this program. If # not, see . # # ADDITIONAL TERMS per GNU GPL Section 7 # # No trademark or publicity rights are granted. This license does NOT # give you any right, title or interest in the trademark SimCity or any # other Electronic Arts trademark. You may not distribute any # modification of this program using the trademark SimCity or claim any # affliation or association with Electronic Arts Inc. or its employees. # # Any propagation or conveyance of this program must include this # copyright notice and these terms. # # If you convey this program (or any modifications of it) and assume # contractual liability for the program to recipients of it, you agree # to indemnify Electronic Arts for any liability that those contractual # assumptions impose on Electronic Arts. # # You may not misrepresent the origins of this program; modified # versions of the program must be marked as such and not identified as # the original program. # # This disclaimer supplements the one included in the General Public # License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS # PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY # OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF # SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS # DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, # INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, # FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY # RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, # USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST # INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL # MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE # UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE # WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE # CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR # ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME # JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED # WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A # CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY # NOT APPLY TO YOU. global NoticeWindows set n [Unique] set parent [WindowLink $head.w3] set win $parent.notice$n set NoticeWindows [linsert $NoticeWindows 0 $win] LinkWindow $head.notice $win LinkWindow $win.head $head LinkWindow $win.parent $parent catch "destroy $win" frame $win SetHelp $win Notice bind $win {[WindowLink %W.view] Visible [string compare %s FullyObscured]} bind $win {[WindowLink %W.view] Visible 1} bind $win {[WindowLink %W.view] Visible 0} frame $win.top \ -relief raised \ -borderwidth 1 LinkWindow $win.background $win.top label $win.top.title \ -borderwidth 2 \ -relief raised \ -font [Font $win Big] LinkWindow $win.title $win.top.title SetHelp $win.top.title Notice.Title text $win.top.text \ -borderwidth 2 \ -relief flat \ -wrap word \ -state disabled \ -font [Font $win Large] LinkWindow $win.text $win.top.text SetHelp $win.top.text Notice.Text global ResourceDir button $win.top.text.left \ -command "UIMakeSound fancy HeavyTraffic" \ -font [Font $win Large]\ -borderwidth 1 \ -relief flat LinkWindow $win.left $win.top.text.left button $win.top.text.middle \ -command "UIMakeSound fancy Computer" \ -font [Font $win Large]\ -borderwidth 1 \ -relief flat LinkWindow $win.middle $win.top.text.middle button $win.top.text.right \ -command "UIMakeSound fancy QuackQuack" \ -font [Font $win Large]\ -borderwidth 1 \ -relief flat LinkWindow $win.right $win.top.text.right frame $win.top.viewframe\ -borderwidth 4\ -relief flat LinkWindow $win.viewframe $win.top.viewframe SetHelp $win.top.viewframe Notice.View frame $win.top.viewframe.f\ -cursor hand2\ -borderwidth 1\ -relief sunken pack append $win.top.viewframe\ $win.top.viewframe.f \ {top frame center expand fill} editorview $win.top.viewframe.f.view \ -font [Font $win Big]\ -width 128 -height 32 LinkWindow $win.view $win.top.viewframe.f.view $win.top.viewframe.f.view ShowMe 0 bind $win.top.viewframe.f.view \ "ComeToMe %W" pack append $win.top.viewframe.f\ $win.top.viewframe.f.view \ {top frame center expand fill} pack append $win.top\ $win.top.title {top frame center fillx} \ $win.top.text {right frame center expand fill} button $win.dismiss\ -font [Font $win Large]\ -text {Dismiss}\ -command "pack unpack $win" SetHelp $win.dismiss Notice.Dismiss pack append $win\ $win.dismiss {bottom frame center fillx} \ $win.top {left frame center expand fill} update idletasks micropolis-activity/res/wscen_old.tcl0000664000076400007640000002751110724145723020313 0ustar simcitysimcity# Window: Scenarios, for Unix Micropolis. # # Micropolis, Unix Version. This game was released for the Unix platform # in or about 1990 and has been modified for inclusion in the One Laptop # Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If # you need assistance with this program, you may contact: # http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or (at # your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. You should have received a # copy of the GNU General Public License along with this program. If # not, see . # # ADDITIONAL TERMS per GNU GPL Section 7 # # No trademark or publicity rights are granted. This license does NOT # give you any right, title or interest in the trademark SimCity or any # other Electronic Arts trademark. You may not distribute any # modification of this program using the trademark SimCity or claim any # affliation or association with Electronic Arts Inc. or its employees. # # Any propagation or conveyance of this program must include this # copyright notice and these terms. # # If you convey this program (or any modifications of it) and assume # contractual liability for the program to recipients of it, you agree # to indemnify Electronic Arts for any liability that those contractual # assumptions impose on Electronic Arts. # # You may not misrepresent the origins of this program; modified # versions of the program must be marked as such and not identified as # the original program. # # This disclaimer supplements the one included in the General Public # License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS # PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY # OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF # SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS # DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, # INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, # FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY # RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, # USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST # INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL # MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE # UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE # WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE # CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR # ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME # JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED # WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A # CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY # NOT APPLY TO YOU. # global ScenarioWindows set n [Unique] set parent [WindowLink $head.col2] set win $parent.scenario$n set ScenarioWindows [linsert $ScenarioWindows 0 $win] global ScenarioPanelWidth global ScenarioPanelHeight LinkWindow $head.scenario $win LinkWindow $win.head $head LinkWindow $win.parent $parent catch "destroy $win" frame $win \ -width $ScenarioPanelWidth \ -height $ScenarioPanelHeight SetHelp $win Scenario frame $win.scen\ -borderwidth 0 -geometry 100x470 label $win.scen.micropolis\ -bitmap "@images/micropolisl.xpm" \ -font [Font $win Medium] button $win.scen.newcity\ -command "UIGenerateNewCity" \ -relief flat \ -borderwidth 0 \ -bitmap "@images/scncty.xpm" \ -font [Font $win Medium] SetHelp $win.scen.newcity Scenario.NewCity button $win.scen.loadcity\ -command "UILoadCity $head" \ -relief flat \ -borderwidth 0 \ -bitmap "@images/sclcty.xpm" \ -font [Font $win Medium] SetHelp $win.scen.loadcity Scenario.LoadCity button $win.scen.dullsville\ -command {UILoadScenario 1} \ -relief flat \ -borderwidth 0 \ -bitmap "@images/scdull.xpm" \ -font [Font $win Medium] SetHelp $win.scen.dullsville Scenario.Dullsville button $win.scen.sanfrancisco\ -command {UILoadScenario 2} \ -relief flat \ -borderwidth 0 \ -bitmap "@images/scsfo.xpm" \ -font [Font $win Medium] SetHelp $win.scen.sanfrancisco Scenario.SanFran button $win.scen.hamburg\ -command {UILoadScenario 3} \ -relief flat \ -borderwidth 0 \ -bitmap "@images/scham.xpm" \ -font [Font $win Medium] SetHelp $win.scen.hamburg Scenario.Hamburg button $win.scen.bern\ -command {UILoadScenario 4} \ -relief flat \ -borderwidth 0 \ -bitmap "@images/scbern.xpm" \ -font [Font $win Medium] SetHelp $win.scen.bern Scenario.Bern button $win.scen.tokyo\ -command {UILoadScenario 5} \ -relief flat \ -borderwidth 0 \ -bitmap "@images/sctkyo.xpm" \ -font [Font $win Medium] SetHelp $win.scen.tokyo Scenario.Tokyo button $win.scen.rio\ -command {UILoadScenario 8} \ -relief flat \ -borderwidth 0 \ -bitmap "@images/scrio.xpm" \ -font [Font $win Medium] SetHelp $win.scen.rio Scenario.Rio button $win.scen.boston\ -command {UILoadScenario 7} \ -relief flat \ -borderwidth 0 \ -bitmap "@images/scbos.xpm" \ -font [Font $win Medium] SetHelp $win.scen.boston Scenario.Boston button $win.scen.detroit\ -command {UILoadScenario 6} \ -relief flat \ -borderwidth 0 \ -bitmap "@images/scdet.xpm" \ -font [Font $win Medium] SetHelp $win.scen.detroit Scenario.Detroit message $win.scen.labeldullville\ -aspect 1500\ -font [Font $win Small] \ -justify center \ -text {Dullsville 1900 Boredom} SetHelp $win.scen.labeldullville Scenario.Dullsville message $win.scen.labelsanfrancisco\ -aspect 1500\ -font [Font $win Small] \ -justify center \ -text {San Francisco 1906 Earthquake} SetHelp $win.scen.labelsanfrancisco Scenario.SanFran message $win.scen.labelhamburg\ -aspect 1500\ -font [Font $win Small] \ -justify center \ -text {Hamburg 1944 Bombing} SetHelp $win.scen.labelhamburg Scenario.Hamburg message $win.scen.labelbern\ -aspect 1500\ -font [Font $win Small] \ -justify center \ -text {Bern 1965 Traffic} SetHelp $win.scen.labelbern Scenario.Bern message $win.scen.labeltokyo\ -aspect 1500\ -font [Font $win Small] \ -justify center \ -text {Tokyo 1957 Monster Attack} SetHelp $win.scen.labeltokyo Scenario.Tokyo message $win.scen.labelrio\ -aspect 1500\ -font [Font $win Small] \ -justify center \ -text {Rio de Janeiro 2047 Coastal Flooding} SetHelp $win.scen.labelrio Scenario.Rio message $win.scen.labelboston\ -aspect 1500\ -font [Font $win Small] \ -justify center \ -text {Boston 2010 Nuclear Meltdown} SetHelp $win.scen.labelboston Scenario.Boston message $win.scen.labeldetroit\ -aspect 1500\ -font [Font $win Small] \ -justify center \ -text {Detroit 1972 Crime} SetHelp $win.scen.labeldetroit Scenario.Detroit place $win.scen.micropolis -anchor n -x 265 -y 25 place $win.scen.newcity -x 160 -y 120 place $win.scen.loadcity -x 300 -y 120 place $win.scen.dullsville -x 20 -y 230 place $win.scen.sanfrancisco -x 160 -y 230 place $win.scen.hamburg -x 300 -y 230 place $win.scen.bern -x 440 -y 230 place $win.scen.tokyo -x 20 -y 350 place $win.scen.rio -x 160 -y 350 place $win.scen.boston -x 300 -y 350 place $win.scen.detroit -x 440 -y 350 place $win.scen.labeldullville -anchor n -x 54 -y 290 place $win.scen.labelsanfrancisco -anchor n -x 194 -y 290 place $win.scen.labelhamburg -anchor n -x 334 -y 290 place $win.scen.labelbern -anchor n -x 474 -y 290 place $win.scen.labeltokyo -anchor n -x 54 -y 410 place $win.scen.labelrio -anchor n -x 194 -y 410 place $win.scen.labelboston -anchor n -x 334 -y 410 place $win.scen.labeldetroit -anchor n -x 474 -y 410 BindSimButton $win.scen.newcity BindSimButton $win.scen.loadcity BindSimButton $win.scen.dullsville BindSimButton $win.scen.sanfrancisco BindSimButton $win.scen.hamburg BindSimButton $win.scen.bern BindSimButton $win.scen.tokyo BindSimButton $win.scen.rio BindSimButton $win.scen.boston BindSimButton $win.scen.detroit frame $win.name \ -borderwidth 2\ -relief flat SetHelp $win.name Scenario.Name label $win.name.namelabel \ -text {City Name:} \ -font [Font $win Text] entry $win.name.cityname \ -text {}\ -textvariable CityName \ -font [Font $win Text] \ -width 50 bind $win.name.cityname "DoEnterCityName $win" bind $win.name.cityname {focus %W} LinkWindow $win.cityname $win.name.cityname pack append $win.name \ $win.name.namelabel {left frame e}\ $win.name.cityname {left frame e} frame $win.level \ -borderwidth 2\ -relief flat SetHelp $win.level Scenario.Level label $win.level.levellabel \ -text {Game Level:} \ -font [Font $win Text] frame $win.level.radio \ -borderwidth 0\ -relief flat radiobutton $win.level.radio.easy \ -text "Easy" -variable GameLevel -value 0 \ -command "DoSetGameLevel 0" \ -font [Font $win Large] radiobutton $win.level.radio.medium \ -text "Medium" -variable GameLevel -value 1 \ -command "DoSetGameLevel 1" \ -font [Font $win Large] radiobutton $win.level.radio.hard \ -text "Hard" -variable GameLevel -value 2 \ -command "DoSetGameLevel 2" \ -font [Font $win Large] pack append $win.level.radio \ $win.level.radio.easy {top frame e expand fillx}\ $win.level.radio.medium {top frame e expand fillx}\ $win.level.radio.hard {top frame e expand fillx} frame $win.level.label \ -borderwidth 0\ -relief flat label $win.level.label.easylabel \ -text {Initial Funds: $20,000} \ -font [Font $win Large] \ -anchor w label $win.level.label.mediumlabel \ -text {Initial Funds: $10,000} \ -font [Font $win Large] \ -anchor w label $win.level.label.hardlabel \ -text {Initial Funds: $5,000} \ -font [Font $win Large] \ -anchor w pack append $win.level.label \ $win.level.label.easylabel {top frame e expand fillx} \ $win.level.label.mediumlabel {top frame e expand fillx} \ $win.level.label.hardlabel {top frame e expand fillx} pack append $win.level \ $win.level.levellabel {left frame ne} \ $win.level.radio {left frame ne} \ $win.level.label {left frame ne expand fillx} frame $win.buttons \ -borderwidth 0\ -relief flat -borderwidth 2 button $win.buttons.previous \ -text {Previous Map}\ -font [Font $win Large]\ -command "PrevHistory"\ -relief raised \ -width 20 LinkWindow $win.previous $win.buttons.previous SetHelp $win.buttons.previous Scenario.Previous frame $win.buttons.voteframe \ -borderwidth 0 \ -relief raised LinkWindow $win.voteframe $win.buttons.voteframe SetHelp $win.buttons.voteframe Scenario.Use button $win.buttons.voteframe.vote \ -font [Font $win Large]\ -text { Use This Map }\ -command "DoVote $win UseThisMap UIUseThisMap {}"\ -relief raised \ -borderwidth 1\ -width 20 LinkWindow $win.vote $win.buttons.voteframe.vote pack append $win.buttons.voteframe\ $win.buttons.voteframe.vote {top frame center} BindVotingButton $win $win.buttons.voteframe.vote UseThisMap button $win.buttons.next \ -font [Font $win Large]\ -text {Next Map}\ -command "NextHistory"\ -width 20 LinkWindow $win.next $win.buttons.next SetHelp $win.buttons.next Scenario.Next pack append $win.buttons\ $win.buttons.previous {left frame nw}\ $win.buttons.voteframe {left frame nw}\ $win.buttons.next {left frame nw} pack append $win\ $win.scen {top frame center fillx}\ $win.buttons {top frame center fillx}\ $win.name {top frame center fillx}\ $win.level {top frame center fillx}\ #place configure $win -x 0 -y 0 -width $ScenarioPanelWidth -height $ScenarioPanelHeight InitScenario $win update idletasks micropolis-activity/res/snro.8880000664000076400007640000006476010724145723017073 0ustar simcitysimcityylbvznVA>.#   %" 6-.( zyyxxzxyxxxxxyxxxxxyxxxxxxxxxxxyxxxxyxyxxxxxxxxyxxyxxxxxxyyxxxyxxzxyxyxxxxxxywwvsqkg_d]\\ZZ[Y       [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ZZZZZZZZZZZZZYYYYYYYYYYYYYYYYYYYYYYYYYYYXXXXWWWWWVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV[[ZZYYWVVVVVY^[XWWVURRRRRPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMMMMMMLKLO?````````(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''!((((((((jjjjjjjjiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjeeeeeeeeeeeeeeeeeeeeeeeeddddddddddddeeeeeeeeeeeebbbbbbbbbbbbhhhhhhhhhhhhhhhhiijeedebhhjiovdjrxv}||}~~|{}}}|}}~{z}~{{y|~~{~~|z|~|~|z|{|~}~~}{z}{{~}{~|{|}|{~~|{z{}{x{~|yy|v|+oss/[(6^(6CNTLPICT"CURSMENUBPAT rSTR#WDEF   =  J  (   bbbbbbbbbbbbbbbbbbb0$00#00#00#00#00#00"0$00#00#00#00#00000000000000000000000```k|bpMbbk~bbbbbbjb0$0%0%0%0%0%0%0%0%0%0%0%0%0%0#000%0%0%0%0%0%0%0%0!00aaa``p0B```0E0C0C0C0C0C0C0D`` kbb0Bkkbkbbktkxbkkb˔˜bb00%0%0%000%0%0%0%0%0%0%000 00%0%0%0000%0%00bbb0Baa``pM``pMaaa`pp0B```0E0K0C0C0I0CpN0C0I0C0CpN0C0C˘ˠbb00%0%000%0%0%0%0%0!0$0%0%0%0 00%0!0bb0Baaa``p0B```0Baa``0F0CpN0Daaaaaa bbb0Baaa0Bbbb0Baaabbbp00%000%0%0%0%0%000%0%0!0$00#0%0%0%0"0kkb0J0C0C0I0C0C0C0K0C0I0C0Gaaapppqqp0BaaaapbbpMaa0Bk}bpMaabbbbb00%0!00%0%0%0%0%0%0%00#00%0%0%000%0%0%0%0%0000p0E0G0B00"aaa0Bppppp0Baaaaaaahakankkb0Baaa0Bkbb0Baaakkbk~b00%000%0%0%0%0%0%0%0%0%0%0%0%0%0%0%00%0%0%0%0%0%0!0bbb0Baaa0B00aapMppqqp0F0C0I0C0C0C0Dailao0E0C0C0K0CpN0C0L0CpN0C0L0C0C0C0C0C0Ckbb00%0!00%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%00bbpMaa0J0C0Caaa0J0Cpp qpq0Baaa0Bajamapp0Bbbbbbb0Bbbb0B0Bp00%0%0#0%0%0%0%0%000%0%0%0%0%0%0%0%0%0%0%0%00%0%0%0!0kkb0Baaa0Baaa0E0Gqp0Baa8V0C0DaDaGaJ0BbbkbpMbb0B0E0C0C0C0Gp00%0%0%0%0%0%0%0!00%0%0%0%0%0%0%0%0%0%0!00%0%000p00aaa0Baa0E0Gpqq0Baaa;J0(0BaEHaK0Bkkbkbb0Bkkb0B0Bbbbbbb00%0%0%0%0%0%000%0%0%00%0%0%0%0%0%0%0%0#00%0%0%00bbb0Baa0Baaa0Bpaaa;K0*0)8RaFaIaLp0J0C0CpN0IpN0C0KpN0C0C0L0C0C0Gbbbb00%0%0%0%0%000%0%000%0%0%0%0%0%0%000%0%0!0bb0Baaa0J0C0C0I0Gaa0C0C8S8[0C0C0Daaa0Bbbb0Bbbbbbb0Bbbbkkbkkb00%0%0%0%0%0!00%0%0%0000%0%0%0%0%0%000%00kkb0F8S8S8S8X0$00Baaaa_abaeccc0Baa0Bk}b0Bbbbb0Bbbaaaaaa00%000%0%0%0"00%0%0%0%00!00%0%0%0%0%0!00%0!00p0bbb8R00 0Bpa`cafcc 0Baaa0Bkbb0Bkkbkkb0Bkkbaaaa0000%0%0%0#0%0%0%0%0%0%0%0"00%0%0%0%000%0000p0bb0J8Y8S0Gaaadagccc 0J0I0CpN0C0D0J0CpN0C0L0CpN0C0C0C0C0L0C0C0Daaaaaa00!0$0%0%0%0%0%0%0%0%0%0%0%0%0%0"00%0%0%0%00%0%0!0bbbpMkkb0J8X0C880CpN0K0Haaa0B0Bbbb0Bbbbbbb0B0F0I0CpN0C0C0C0C0000%0%0%0%0%0%0%0%0%0%0%0%0%000%0%0%0%0%0%0%00bb0F0I0CpN0K0H0Ba;a>aA0Baa0B0) 0Bbb0Bbbbb0Bbvbyb|0Bbbbbbb00%00%0%0%0%0%0%0%0%0%0%0%0%0%0%0%000%0%0%0%0%0%0%0!0kkb0Bp0BbbbbppaaAa2a5a800%0!0Baa0B00B0+8U8Sx^8S8S8S0C8Rcc 0Bpp0B00Baaax]aaa0Bbb0B00000%0%0%0%0%0%0#00#00%000%0!p00p000880HaaA0Bqq00Bbbbbbbbbb000000000%0%0%08Rahakanaaaahakan8aaaqajamapqp8V8aDaGaJ8Rajamap0B0000E0G0008U8Sx^8S8Xbbc0Ba*-a0aaAp0Bcc 80C0DaaaaDaGaJpppk~b0E00Gbbb0000p000Bb'b*b-0Bqqq0aVaYa\ppp8aDaGaJa_abae8x8qqq88Xppp88pN0C8W08R00B00 08RaaA8R0$0qqq0aXa[a^ppp0BaFaIaLpMaaadagpMa*-a08ccc0Bqqq0b&)b,00E888aaaaaaaaa0F0C0Cpp8ppp80F0C0I0C0CpN0C0K0C0I0C0CAbehbkk~b8V8T000008RaaapMaaA0Bb%b(b+p0Bbc00J0C08S8S0C0C8Y8[0kbb0Bb b#aaa 0Bqqqpp0B aaaajamap0C0C80```80(8Raa0Bpp8p`p0BaaApMaDaGaJ0aEHaK0J0C0Cx80Gqqppp8V08Y8S8S8S8aaa0Baa0Bailao0Bqqaaa0J0Cp aaa0J0I0I0I0Gpccc;K0BaaapMaaapMaaA8R0*0(0+ahakan0C0C0C0G0+0+;H0+ 0B0(aaa0BaEHaKccc 8Vx^0C0Haaa;Kaa0J0CpN880I0CpN0K0C0C8S8[8i8c00Da4a7a:0B0aaa8Raaa8RaaApM0+0(0*0+0)0(0)0Bqq bbpMaax]aaa0F0D0(bc0*p;I0B;K0)0B000p0pppaa0Baaa0Bahakan0+0Ba>>>=====<<<<<<<<<<<<<<<<<<<<<=>>>?@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA@@@@@????>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<AAA?>>>@EO@@@@@CCGGGORSTUzPPR[`jzzzzzzzzzzzzzyyywvvvuuttttttrrrrrqpppnlkjjjjjjjjjjjjjjjiiiiiikkkkkkkkjgfffffeedddddd***********************************************************************************************************************************(***********+++++))))))))))))))))*******&&&&&&&&&%%%%%%%%%%$########################$$$$$$$$$$$$$$$$$$$$$$$]]]]]]]]]]]QQQQQQQQQQQQEEEEEEEEEEEEBBBBBBBBBBBBOOOOOOOOOOOO````````````[[[[[[[[[[[[bbbbbbbbbbbbYYYYYYYYYYYYQQQQQQQQQQQQQEBO`[bYQOZbisqn~sr} s;+T) <HH,HH0$00$00"00#00#00"c ccc0Bbbb0000000000000000000000000bbbbbbb0Bbvbyb|bbb0$0%0%00#00#0%0%0%0#00#00%0%00%0%0%0#00"c ccbbb0Bk|b0bbb0Bbbbbbbbdbgbj0bjbbb0J0C0C0C0C0Dbwzb}pbb00%0%00%0%0%0%00%0%0%0%0%0%0!00%0%0%0%0c ccck|bpMkbbppkbpMbbbbbehbk0˔˜bbpPPPPPPPPPPPbbbpMbbbbpMbxb{b~kkb00%0!00%0%0000%0%0%0%0%0#0%0%0%0%0%0!ccccpkbb0B0kbb0Bktkxbbbb0E0C0CpN0Dbfbibl0˘ˠbb,Pbbb0J0C0C0C0C0C0C0D00%000%0%0%00!00%0%0%0%0%0%0%0%0%0%0p0E0CpN0C0C0I0K0C0C0C0C00CpN0C0K0C0C0I0CpN0C0C0C0C0C0Hppp0F0C0CpN0C00DbbbbPbbbb0Bbbbbbb0B00%0%00%0%0%00%0%0"00%0%0%0%0%0%0%0%0%0!p0Bbbb0B000bbbbbb0Bcccaaa0Bp`ppppp00Bbjb0BbbbPbbbbpMbbbb0B00%00%0%0%000%000%0%0%0%0%0%0%0%0%0p0Bbb0B00bbbb0Bcc aapMppp``ppM˔˜bbpMbbPbbbkkb0B0000%0%0%000%0!00%0%0%0%0%0%0%0%0%0%0p0Bkkb0B0ktkxbkkb0Bccc aaa0Bpp`00B˘ˠbb0BkkbP0B00%0%0%0%0!00%0#0%0%0%0%0%0%0%0%0%0%0%0 p0FpN0C0C0C0L0D000E0C0C0CpN0C0C0C0C0L0CpN0C0I0C0C0C0L0C0C0C0C0CpN0C0C00K0I8S8S880CpN0Cbbb0B0$00%00%0%0%0%0#0%0%0%0%0%0%0%0%0%0%0%0%0%0!pbbb0J0K00C0Gpppppaaa0Baaa0Bppp0Bpppppp000(0Baaa8bbbkb@00%000%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0"pbbpppMpppppppaapMaax]p`pMppppp00)0+0BaapMbbkbb0@0000%0%0%0%0%0%00%0%0%0%0%0%0%0%0%0%0%0%0pppktkxb0B00pppppaaa0Baaa8Rp`p0Bpppppp00*0)0Baaa0Bkkbbbb0000000@00%0%0%0%0%0!00%0%0%0%0%0%0%0%0%0%0%0!0B0aaa0E0CpN0C0C0C0C0C0Haaa8Z8Sx^8S8\8S8S8S0C0C0C0D00(0)0F0C0C0C0Hbbbk|bbbbbbb0000000000000%0%0%0%0%000%0%0%0%0%0%0%0%0%0%00B0aa0Ba2a5a8aDaGaJ0Baa8Rp8R0$00#00#00B0aaaccc0Bbbkbbbbk|b0E0C0C0C0C0C0C0H00$000%0%0%0%0%0!00%0%0%0%0%0%0%0%0%0%0!00#00"aaapMpaaapMa36a9aEHaK0Baaa0Bp0B00%0%0%0%0!8R0aacc 0Bbbbbbbkbb0B0B000!00%0%0%0%0%0#00%0%0%0%0%0%0%0%0%0%0%0%0#00%0%0%0aa0J00C8S8S0Ha4a7a:aFaIaL0Baaa0BaDaGaJ0B00%0%0%0%08R0aaaccc pMbbbP0C0C0G0B000000%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0!aaa0B00J0Cx^8S0I0CpN0C0Haa0BaEHaK0B00%0%0%0%0!0J00C8S8S0C0C0C0HkbP0B000%00%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"p0B00Baaa0BaDaGaJ0Baaa8RaFaIaL0B00%0%0%000B0a;a>aAaaa0BkbbP 0F00D00%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%0p0B0ccc0Baa0BaEHaK0Bppp8Rp0B00%0%0!;K0B0aaAaFaIaLpMppp0kkb0Bbxb{b~0Bk|b0CpN0C0Haaappaaa0B00!0000p0Bbbbbwzb}0B0$00#00"00B00%0%0%0%0%0%0%0%0%0#00%00BaEHaK0BaaPaaApMpaNQaTpailao0Bktkxb0J0C0CpN0C0C0CpN0C0G00%0%0%000B00%0%0%00Bp`p0Baaa0(0B00%0%088S8Sx^8S0I0HaOaRaU8R00#00"0B0000%0#0;I00000000 0B0(paaA0Bppp0J0CpN0CQ8S0C0C0C0Cx^8S0H0+ailaoaDaGaJaDaGaJ000$000!000Baaapppbdbgbjbbb0Bccc0Baaa000%0!00;I00%08V8Tbbaa0J0CpN0C8[Q8S8Xa<<=>????<<<;;:99<;;9534677874665655410/-+*((&,(*'%&'%$#")(''!     >97-'  ~]7))+IKUbu0|xxvtqmihijnsuy{v{wlT]?O$(%&4,:Li~ #'ch. /+-.M<MjIJLNOOOOOOOOOOOOOOOOOOOOOOOOOOOPQRSTVYUPIKJJJJJJJIHGEDB@=:6GCCCCCCCBBBBBAA@?>>>>>=======================>?@BDDDDEEEEFGFOOOJBC>==EEEFFFFHEDDCCCD>8=;:+%%000MU116>JWY-------------------------------./0135863/******************)))))))))))))))))))))))))))))))))************++,-.0123444456---**)))*43333333333622//////.''*,'%%%%&&&&%EEEEEEHHHHHHHHHHHH3,,,,,,''''''KKKKKK$$$$$$$$$$$$&&&&&&&&&&&&H'$&J   -CT X >3CNTLPICT"CURSMENUBPAT rSTR#WDEF   =  J  (   bbbbbb0C0C0C0C0C0C0C0000000000000000pppbbbbbpbbbbbb0bbbbbb0(0B;H0*0(0)0*0*0pp bbbbbbbbbpk|bbb0*0B0)0+0+0(0(;I0ppp  bbbbbbkkbkkb0kbbktkxb0(0B0+0+0)0*0*0+0p00aaabbbbbbp0)0bbbaaa0*0B0*0+0)0)pppp;J0aabbbbbbbbbbbb0bbaa0*0Bppp0pp0(0)0aaa00"bbkb0bbbaaa0(0Bpp0ppp0*0+0ahakan00%0%0"bbbkbb0,0B0+0)0+0Bppp0ppp0)0(0ailao00%0%0%0#00#00"0C0CpN0C00J0C0C0C0L0CpN0C0pp0)0)0ajamap00%0%0%0%0%0%0%0aaa0bdbgbj0Baaa0Bccc0p`p0*0)0ahakan00%0%0%0%0%0%0%0!aa0behbkpMaa0Bcc paaa0)0)0ailao00%0%0%0%0%0%0%0aaa0bfbibl0BaaapMccc 0aa0*0+0ajamap00%0%0%0%0%0%0p00CpN0C0L0CpN0C0L0CpN0C0aaa0+0)0aDaGaJ0(00%0%0%0%0%0bbbbbb0aaa0Baaa0Bpp`0aaa0+0+0aEHaK00%0%0%0%0%0!k|bk|bpaa0Baa0B``0aa000aFaIaL00%0%0%0%0kbbkbb0aaa0Baaa0Bp``0aaa0pqq0)00000pN0C0C0C00CpN0C0L0CpN0C0H0+0(0(00000qq0*bbbbbbbbbbccc0bbb0Baaa0B0+0+0(0aaapMpqqbjbbbbbcc 0bbpMaa0B;J0+0(0aa8R0)0*;J˔˜bbkkbkkbccc 0bbb0Baaa0B0*0+0*0aaa8R0)0*0* ˘ˠbb0C0C000000000CpN0C0L0CpN0C0H0+0+0)00CpN8S8Xppp   pbbbbbb0aaa0Bbbb0Bppp0aaax]pp00#0bbbbbbk|bpaa0Bbc0Bpppaa0Bppp 00%0%0!bjbppkkbpkbb0aaa0BbbcpMppp0aaa0B0( 000%0˔˜bb0C0C0C0C0000000CpN0C0L0CpN0C0L0CpN0C00CpN0C0H0( 00 ˘ˠbb00#000#00Bppp0Baaa0B```0ppp0B0)  0$0p0$00%0%0%00%0%0!0BpppMaa0B``0pp0B0)0)    00 p00%0%0%0%0%0%0%00Bppp0BaaapM```0ppp0B0)0+0+0E0C   00"bbbb00%0%0%0%000J0C0C0C0L0C0C0C0LpN0C0C00CpN0C0L0C0C0C0Haaabbb"00bjb00%0%0!ppppMp``0B```0Baaa0ppp0Ba2a5a80Baab b#00 ˔˜bb0B000pp0B``0B``pMaa0`ppMa36a9x]aaabb!b$     ˘ˠbb0B00!ppp0Bp`p0B```0Baaa0``p0Ba4a7a:8Rp0 00#00"0$0p0B00%0#00"0C0C0L0CpN0C0L0CpN0C0L0CpN0C0000000000p00 00%0%000 p0B00%0%0%0%0#00Ba2a5a80Bccc0Baaa0a)a,a/0BaDaGaJ0Bccc0bbb00%0%0!bbbb0B00%0%0%0%0%0!0Ba36a90Bcc 0Baa0a*-a08RaEHaK0Bcc 0bb000bjb0B00000000Ba4a7a:0Bccc 0Baaa0a+a.a18RaFaIaL0Bccc 0ktkxb˔˜bb0J0C0C0C0C0C0C0C0C0K0C0Cx^8\8Sx^0C0L0C0C0C08Sx^8S8\0CpN0C0L0CpN0C00CpN0C0D      ˘ˠbb0B0$00#0c cccaaax]ppppMppp0aaa8Raaa0Baaa0bbb0B  00"bbbb0B00%0%0!c ccaa8Rpp0BpppaapMaa0Baapbb0B 0$00%0bjb0B0000c cccaaa8Rppp0Bppp0aaa0Baaa0Baaa0bbb0Bbbbb00%0%0 ˔˜bb0Bcccc0CpN880CpN880CpN0C00CpN0C0L0CpN0C0L0CpN0C00CpN0C0L0Cbbb 00%0!˘ˠbb0B0+0)0+0(0+;K0(aDaGaJ8aaa8ppp0a a#a&0Baaa0Baaa0aaa0Bbbbb000kTbpbs 0$00"0+0(0)0(0*0)0+aEHaK8aa8Rpp0a!$a'0Baa0Baa0aapMpbbbbbnqbt 00%00*0*0+0*0(0)0*aFaIaL8aaa8Rppp0a"a%a(0Baaa0Baaa0aaa0B bobrbu  000 0+0*0*0*0*0(0);I0CpN8S8\8Sx^880CpN0C08Sx^8S8\0CpN0C0L0CpN0C00CpN0C0H   0E0C0CpN0D     0)0)0(0+;I0(0(0*ahakan8Ra)a,a/8a2a5a80aaa8Raaa0Bbbb0bbb0Bbbb 0+0)0*0( 0BkUbpbs0J0C0C0C0D 0(0*0+0)0*0+0)0)ailao0Ba*-a08Ra36a90aa0Baa0Bbc0kb0Bbb 0$00(pqqPppPpppMbnqbtpMbbb0B   0$00"0)0(0*0+0)0+0(0(ajamap0Ba+a.a18Ra4a7a:0aaa0Baaa0Bbbc0kbb8Rktkzb00 0(qq@bobrbu0Bbb0B 0$0%0%00(0*0(0+0)0*0)00p00000000000p000CpN0C0L0CpN0C08Sx^8S8\8Sx~8s8y0C0C0C0I0Cqqq@0Bkkb0B/   00%0%0!0+0)0+0*0+0(0(0ahakan0*;H0$00+0)0*0*0aDaGaJ0BaVaYa\0Bbbb0aDaGaJ8Rbbb8rbbb0Bccc0);J@0F0C0CpN0KAAAAA0C0Dbbb0bvbyb|bbb  00000*0)0)0+;H0+0(0ailao0(0*00 0+0*0)0*0aEHaKx]aWZa]0Bbb0aEHaK0Bbbx}k~bpMcc 0)0*@p0Bk~b0bwzb}bb 0)0(0)0+0+0)0+0ajamap0+0)0)0+0+;I0(0*0aFaIaL8RaXa[a^0Bbbb0aFaIaL0Bkkb8rkbb0Bccc 0)0*;K@p0Bkbb0bxb{b~kkb    0*0)0)0);Hc ccc0)0(0+0)0)0)0(0)000000p000p0000p000008Sx^8S8h0)0+0(;K0)0+b@bCbF@P  0J0CpN0C00CpN0C0C0CpN0C0I0C0C0C0C0Dahakanc cc0)00"0(0*00"0+0b%b(b+0Bbbb"0BaaapMahakan0Bbbb0bbb8R0(0);I0+0+0(bADbG@aaa0*0Baaa0Bbdbgbj0aaabbb0Bbbb0B//ailaoc ccc0+000(0)000)0b&)b,0Bb b#pMaa0Bailao0Bk|bpbb8R;J0*;J0);J0+bBbEbH0B aa;H0BaapMbehbkpaapbbpMpbb0B/,ajamapcccc0)0)0*0*;K0+0*0(0b'b*b-0Bbb!b$0Baaa0Bajamap0Bkbb0kkb8V0D0(0+;J0*0*p0*0B0Baaa0)0Baaa0Bbfbibl0aaakkb0Bktkxb0B,-00000p0000)0*0+0)0)0+00CpN0C0L0C0C0C0LpN0C0C0L0C0C0C0G0+0);I00p008V8S8S8Y0C0CpN0C0L0C0K0CAAAAA0C0CpN0C0H0Bp0pp0B0Baaa0Baaa 0B00+0+0$00(0+0b.b1b40Bb%b(b+0Bb.b1b40B0Baaa0bbb8Rbvbyb|00Bbbb0(;Ip0+0J0C0C0C0L0CpN0C00CpN0C0I0CpN0C0G0Baa0Ba a 0B00)0(00 0)0(0b/2b5pMb&)b,pMb/2b50B00#00#00Baa0bb0Bbwzb}00Bbbb%b(b+ppMaaa0Bbbb0ccc0BkTbpbs0B00#00#0aaa0Baa a 0B00000000b0b3b60Bb'b*b-0Bb0b3b60B00%00%0!0Baaa0kwk{b0Bbxb{b~00Bbbbb&)b,0+0BaapMkbpcc pMbnqbt0B00%0%0%0!0CpN8S8\8Sx^8S8\0C0C0C0I0C0C0C00CpN0C0L0C0C0C0K0C0C0C0G00!;K000J8Sx^0C00CpN0C00p000FpN0C0Db'b*b-0)0Baaa0Bkbb0ccc 0Bbobrbu0B00%0%0a;a>aA8Raaa8Raaa0Bbbb"0b%b(b+0B 000+00!0BbRbUbX0bbb0bbb0Bbbb0J_A0C0C0C0L0CpN0C0L0C0C0C00C0C0C0H0F0C0C0C0D00%0%0%0aaA0Baaa0Baaa0Bbbb8RaDaGaJ0aDaGaJ0Bahakan0Baaa0aaa0Bbbb0Bbbbaa0Baa0B0)0(0+0);K00F0C0C0Haaa0BaaapMpp000$00#00#0%0%0pqpMcc 0aaA0BaDaGaJ0a;a>aA8Rccc0Baaa0aaa0Baaa0Bbbb0Bbbb8R ppp00000B0(p0)0B0)0)0)0+0+0*0+00%0%00%00*0)0+0*0Bailao0Baa0BpppMpp0Ba. # # ADDITIONAL TERMS per GNU GPL Section 7 # # No trademark or publicity rights are granted. This license does NOT # give you any right, title or interest in the trademark SimCity or any # other Electronic Arts trademark. You may not distribute any # modification of this program using the trademark SimCity or claim any # affliation or association with Electronic Arts Inc. or its employees. # # Any propagation or conveyance of this program must include this # copyright notice and these terms. # # If you convey this program (or any modifications of it) and assume # contractual liability for the program to recipients of it, you agree # to indemnify Electronic Arts for any liability that those contractual # assumptions impose on Electronic Arts. # # You may not misrepresent the origins of this program; modified # versions of the program must be marked as such and not identified as # the original program. # # This disclaimer supplements the one included in the General Public # License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS # PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY # OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF # SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS # DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, # INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, # FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY # RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, # USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST # INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL # MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE # UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE # WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE # CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR # ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME # JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED # WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A # CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY # NOT APPLY TO YOU. global FrobWindows set n [Unique] set win .frob$n set FrobWindows [linsert $FrobWindows 0 $win] LinkWindow $head.frob $win LinkWindow $head.frob $win LinkWindow $win.head $head catch "destroy $win" toplevel $win -screen $display SetHelp $win Frob wm title $win {Micropolis Dynamic Zone Filter} wm iconname $win {Micropolis Frob} wm geometry $win 350x480+5+5 wm positionfrom $win user wm sizefrom $win user wm maxsize $win 700 700 wm minsize $win 100 100 wm protocol $win delete "DeleteWindow frob FrobWindows" wm transient $win $head frame $win.top \ -relief raised \ -borderwidth 1 LinkWindow $win.background $win.top label $win.top.title \ -text {Frob-O-Matic Dynamic Zone Filter} \ -borderwidth 1 \ -relief raised \ -font [Font $win Big] LinkWindow $win.title $win.top.title # SetHelp $win.top.title Frob.Title frame $win.top.border \ -relief flat \ -borderwidth 4 label $win.top.border.l0 \ -text {Population Density} \ -borderwidth 1 \ -font [Font $win Small] SetHelp $win.top.border.l0 Frob.PopulationDensity interval $win.top.border.i0\ -font [Font $win Medium]\ -borderwidth 1 \ -orient horizontal \ -from 0 -to 255 \ -command "UISetDynamic 0" SetHelp $win.top.border.i0 Frob.PopulationDensity label $win.top.border.l1 \ -text {Rate Of Growth} \ -borderwidth 2 \ -font [Font $win Small] SetHelp $win.top.border.l0 Frob.RateOfGrowth interval $win.top.border.i1\ -font [Font $win Medium]\ -borderwidth 1 \ -orient horizontal \ -from 0 -to 255 \ -command "UISetDynamic 1" SetHelp $win.top.border.i0 Frob.RateOfGrowth label $win.top.border.l2 \ -text {Traffic Density} \ -borderwidth 2 \ -font [Font $win Small] SetHelp $win.top.border.l0 Frob.TrafficDensity interval $win.top.border.i2\ -font [Font $win Medium]\ -borderwidth 1 \ -orient horizontal \ -from 0 -to 255 \ -command "UISetDynamic 2" SetHelp $win.top.border.i0 Frob.TrafficDensity label $win.top.border.l3 \ -text {Pollution Rate} \ -borderwidth 2 \ -font [Font $win Small] SetHelp $win.top.border.l0 Frob.PollutionRate interval $win.top.border.i3\ -font [Font $win Medium]\ -borderwidth 1 \ -orient horizontal \ -from 0 -to 255 \ -command "UISetDynamic 3" SetHelp $win.top.border.i0 Frob.PollutionRate label $win.top.border.l4 \ -text {Crime Rate} \ -borderwidth 2 \ -font [Font $win Small] SetHelp $win.top.border.l0 Frob.CrimeRate interval $win.top.border.i4\ -font [Font $win Medium]\ -borderwidth 1 \ -orient horizontal \ -from 0 -to 255 \ -command "UISetDynamic 4" SetHelp $win.top.border.i0 Frob.CrimeRate label $win.top.border.l5 \ -text {Land Value} \ -borderwidth 2 \ -font [Font $win Small] SetHelp $win.top.border.l0 Frob.LandValue interval $win.top.border.i5\ -font [Font $win Medium]\ -borderwidth 1 \ -orient horizontal \ -from 0 -to 255 \ -command "UISetDynamic 5" SetHelp $win.top.border.i0 Frob.LandValue label $win.top.border.l6 \ -text {Police Effect} \ -borderwidth 2 \ -font [Font $win Small] SetHelp $win.top.border.l0 Frob.PoliceEffect interval $win.top.border.i6\ -font [Font $win Medium]\ -borderwidth 1 \ -orient horizontal \ -from 0 -to 255 \ -command "UISetDynamic 6" SetHelp $win.top.border.i0 Frob.PoliceEffect label $win.top.border.l7 \ -text {Fire Effect} \ -borderwidth 2 \ -font [Font $win Small] SetHelp $win.top.border.l0 Frob.FireEffect interval $win.top.border.i7\ -font [Font $win Medium]\ -borderwidth 1 \ -orient horizontal \ -from 0 -to 255 \ -command "UISetDynamic 7" SetHelp $win.top.border.i0 Frob.FireEffect pack append $win.top.border\ $win.top.border.l0 {top frame center fillx} \ $win.top.border.i0 {top frame center fillx} \ $win.top.border.l1 {top frame center fillx} \ $win.top.border.i1 {top frame center fillx} \ $win.top.border.l2 {top frame center fillx} \ $win.top.border.i2 {top frame center fillx} \ $win.top.border.l3 {top frame center fillx} \ $win.top.border.i3 {top frame center fillx} \ $win.top.border.l4 {top frame center fillx} \ $win.top.border.i4 {top frame center fillx} \ $win.top.border.l5 {top frame center fillx} \ $win.top.border.i5 {top frame center fillx} \ $win.top.border.l6 {top frame center fillx} \ $win.top.border.i6 {top frame center fillx} \ $win.top.border.l7 {top frame center fillx} \ $win.top.border.i7 {top frame center fillx} pack append $win.top\ $win.top.title {top frame center fillx} \ $win.top.border {top frame center fill} button $win.dismiss\ -font [Font $win Large]\ -text {Dismiss}\ -command "wm withdraw $win" SetHelp $win.dismiss Frob.Dismiss pack append $win\ $win.dismiss {bottom frame center fillx}\ $win.top {left frame center expand fill} update idletasks micropolis-activity/micropolisactivity.py0000664000076400007640000002527110724145723021351 0ustar simcitysimcity# -*- mode: python; tab-width: 4 -*- # # Micropolis, Unix Version. This game was released for the Unix platform # in or about 1990 and has been modified for inclusion in the One Laptop # Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If # you need assistance with this program, you may contact: # http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or (at # your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. You should have received a # copy of the GNU General Public License along with this program. If # not, see . # # ADDITIONAL TERMS per GNU GPL Section 7 # # No trademark or publicity rights are granted. This license does NOT # give you any right, title or interest in the trademark SimCity or any # other Electronic Arts trademark. You may not distribute any # modification of this program using the trademark SimCity or claim any # affliation or association with Electronic Arts Inc. or its employees. # # Any propagation or conveyance of this program must include this # copyright notice and these terms. # # If you convey this program (or any modifications of it) and assume # contractual liability for the program to recipients of it, you agree # to indemnify Electronic Arts for any liability that those contractual # assumptions impose on Electronic Arts. # # You may not misrepresent the origins of this program; modified # versions of the program must be marked as such and not identified as # the original program. # # This disclaimer supplements the one included in the General Public # License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS # PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY # OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF # SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS # DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, # INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, # FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY # RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, # USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST # INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL # MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE # UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE # WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE # CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR # ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME # JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED # WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A # CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY # NOT APPLY TO YOU. import gtk import os import signal import tempfile import logging import sys import time import subprocess import thread import fcntl from sugar.activity import activity from sugar.activity.activity import get_bundle_path from sugar import profile from gettext import gettext as _ from glob import glob try: import pygame.mixer pygame.mixer.init() except: pass try: from sugar.presence import presenceservice except ImportError: from sugar.presence import PresenceService as presenceservice def QuoteTCL(s): return s.replace('"', '\\"') class MicropolisActivity(activity.Activity): def __init__(self, handle): activity.Activity.__init__(self, handle) self.set_title(_('Micropolis Activity')) self.connect('destroy', self._destroy_cb) self.connect('focus-in-event', self._focus_in_cb) self.connect('focus-out-event', self._focus_out_cb) signal.signal(signal.SIGCHLD, self._sigchild_handler) self._bundle_path = get_bundle_path() if False: # FIXME: Plug Micropolis's window into a gtk socket. # Doesn't work yet, but it would be cool if it did. socket = gtk.Socket() try: self.set_canvas(socket) except AttributeError: self.add(socket) socket.show() socket.connect('plug-added', self._plug_added_cb) socket.connect('plug-removed', self._plug_removed_cb) win = socket.get_id() command = os.path.join( self._bundle_path, 'Micropolis') args = [ command, #'-R', str(win), # Set root window to socket window id '-t', # Interactive tty mode, so we can send it commands. ] logging.debug("CWD: " + self._bundle_path) logging.debug("Micropolis ARGS: " + repr(args)) self._process = subprocess.Popen( args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, close_fds=True, cwd=self._bundle_path, preexec_fn=lambda: os.chdir(self._bundle_path)) logging.debug("STARTING THREAD... " + str(self._stdout_thread_function)) t = None try: t = thread.start_new( self._stdout_thread_function, ()) except Exception, e: logging.debug("EXCEPTION " + str(e)) self._stdout_thread = t logging.debug("STARTED THREAD. " + str(t)) uri = handle.uri or '' logging.debug("Micropolis SUGARSTARTUP URI " + repr(uri)) self.send_process( 'SugarStartUp "' + QuoteTCL(uri) + '"\n') nick = profile.get_nick_name() or '' logging.debug("Micropolis SUGARNICKNAME NICK " + repr(nick)) self.send_process( 'SugarNickName "' + QuoteTCL(nick) + '"\n') #logging.debug("started Micropolis, pid " + repr(self._pid)) ps = presenceservice.get_instance() for buddy in ps.get_buddies(): self._buddy_appeared_cb(ps, buddy) ps.connect("buddy-appeared", self._buddy_appeared_cb) ps.connect("buddy-disappeared", self._buddy_disappeared_cb) def _stdout_thread_function(self, *args, **keys): logging.debug("_stdout_thread_function BEGIN " + repr(args) + " " + repr(keys)) f = self._process.stdout fcntl.fcntl(f.fileno(), fcntl.F_SETFD, 0) while True: line = 'XXX' try: line = f.readline() except Exception, e: logging.debug("READLINE EXCEPTION " + str(e)) break logging.debug("LINE: " + repr(line)) line = line.strip() if not line: continue words = line.strip().split(' ') command = words[0] if command == 'PlaySound': logging.debug("PLAYSOUND " + " ".join(words[1:])) self.play_sound(words[1]) else: pass # logging.debug(">>> " + line) logging.debug("_stdout_thread_function END") def play_sound(self, name): fileName = os.path.join( self._bundle_path, 'res/sounds', name.lower() + '.wav') print "PLAY_SOUND " + fileName try: sound = pygame.mixer.Sound(fileName) sound.play() except Exception, e: print "Can't play sound: " + fileName + " " + str(e) pass def send_process(self, message): logging.debug("SEND_PROCESS " + message) self._process.stdin.write(message) def share(self): logging.debug("SHARE") Activity.share(self) self.send_process( 'SugarShare\n') def quit_process(self): logging.debug("QUIT_PROCESS") self.send_process( 'SugarQuit\n') time.sleep(10) def _plug_added_cb(self, sock): logging.debug("Micropolis window opened") return False def _plug_removed_cb(self, sock): logging.debug("Micropolis window closed") self.destroy() return False def _destroy_cb(self, window): logging.debug("Micropolis activity destroyed %r" % window) self.quit_process() def _focus_in_cb(self, window, event): logging.debug("Micropolis activated %r %r" % (window, event)) self.send_process( 'SugarActivate\n') def _focus_out_cb(self, window, event): logging.debug("Micropolis deactivated %r %r" % (window, event)) self.send_process( 'SugarDeactivate\n') def _buddy_appeared_cb(self, ps, buddy): try: key = buddy.props.key or '' nick = buddy.props.nick or '' color = buddy.props.color or '' address = buddy.props.ip4_address or '' except AttributeError: key = buddy.get_name() or '' nick = buddy.get_name() or '' color = buddy.get_color() or '' address = buddy.get_ip4_address() or '' logging.debug("Micropolis _BUDDY_APPEARED_CB KEY " + repr(key) + " NICK " + repr(nick) + " COLOR " + repr(color) + " ADDRESS " + repr(address)) logging.debug("Buddy appeared " + repr(buddy.props.nick)) self.send_process( 'SugarBuddyAdd "' + QuoteTCL(key) + '" "' + QuoteTCL(nick) + '" "' + QuoteTCL(color) + '" "' + QuoteTCL(address) + '"\n') def _buddy_disappeared_cb(self, ps, buddy): try: key = buddy.props.key or '' nick = buddy.props.nick or '' color = buddy.props.color or '' address = buddy.props.ip4_address or '' except AttributeError: key = buddy.get_name() or '' nick = buddy.get_name() or '' color = buddy.get_color() or '' address = buddy.get_ip4_address() or '' logging.debug("Micropolis _BUDDY_DISAPPEARED_CB KEY " + repr(key) + " NICK " + repr(nick) + " COLOR " + repr(color) + " ADDRESS " + repr(address)) logging.debug("Buddy disappeared " + repr(buddy.props.nick)) self.send_process( 'SugarBuddyDel "' + QuoteTCL(key) + '" "' + QuoteTCL(nick) + '" "' + QuoteTCL(color) + '" "' + QuoteTCL(address) + '"\n') def _sigchild_handler(self, signum, frame): logging.debug("got signal %i %r %r" % (signum, frame, self._process)) sys.exit(0) micropolis-activity/src/0000775000076400007640000000000010735230432015614 5ustar simcitysimcitymicropolis-activity/src/ROADMAP.txt0000664000076400007640000001641310724145723017453 0ustar simcitysimcity======================================================================== Roadmap of the Micropolis source code. ======================================================================== Micropolis designed and implemented by Will Wright, Unix porting, optimization and multi player user interface design by Don Hopkins (dhopkins@DonHopkins.com), for DUX Software. ======================================================================== Documentation: manual User manual and help page templates. src/notes Notes, to-do lists, lists of potential bugs to work on, and screen snapshots. Resources: res Resources, data, TCL code, etc. Modified standard TCL/Tk widget libraries to support multiple displays, by removing uses of global variables, and instead storing screen-specific data in tk_priv map, keyed by "@" where screen is "[winfo screen $w]", the screen identifier. Data files: hexa.112 hexa.232 hexa.384 hexa.385 hexa.386 hexa.387 hexa.388 hexa.456 hexa.544 hexa.563 hexa.999 Scenarios: snro.111 snro.222 snro.333 snro.444 snro.555 snro.666 snro.777 snro.888 String resources: stri.202 stri.219 stri.301 stri.356 Audio files: aaah.au a.au airport.au beep.au boing.au bop.au build.au bulldoze.au chalk.au coal.au com.au computer.au cuckoo.au e.au eraser.au expl-hi.au expl-low.au fire.au honk-hi.au honk-low.au honk-med.au ignition.au ind.au monster.au nuclear.au o.au oop.au park.au police.au quack.au query.au rail.au res.au road.au rumble.au seaport.au siren.au skid.au sorry.au stadium.au traffic.au uhuh.au unix.au whip.au wire.au woosh.au zone.au Modified TCL/Tk standard library code: button.tcl Modified to support multiple displays. menu.tcl Modified to support multiple displays. text.tcl Modified to support multiple displays. tk.tcl Modified to support multiple displays. buildidx.tcl entry.tcl init.tcl listbox.tcl mkindex.tcl parray.tcl tclinit.tcl tkerror.tcl wish.tcl wishx.tcl tclindex tcl.tdx tcl.tlb tk.tdx tk.tlb Micropolis user interface code: micropolis.tcl Micropolis utilities and shared interface code. help.tcl Micropolis help messages. wask.tcl Ask question window. wbudget.tcl Budget window. weditor.tcl Map editor window. weval.tcl Evaluation window. wfile.tcl File open window. wfrob.tcl Frob window (dynamic zone finder sliders). wgraph.tcl Graph window. whead.tcl Head main application window. whelp.tcl Help window. wmap.tcl Map overview window. wnotice.tcl Notice message window. wplayer.tcl Add player window. wscen.tcl Choose scenario window. Micropolis sound server code: sound.tcl Code loaded by sound server, which runs in another process, and is controlled via the TCL "send" command. No longer used. Sound should be built into Micropolis, using a modern standard sound library (and file formats). Base Libraries: src/tcl TCL language interpreter. Free software. Modified for unix porting. src/tk Tk user interface toolkit. Free software. Modified for unix porting, multiple display support, various extensions and bug fixes. See src/notes/to.ouster (message about multiple display support), src/notes/TkVersion (description of origin and changes in tk) src/tclx Useful extensions to TCL/Tk. Free software. Modified for unix porting. Micropolis source code: src/sim src/sim/terrain ======================================================================== Micropolis, Unix Version. This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If you need assistance with this program, you may contact: http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . ADDITIONAL TERMS per GNU GPL Section 7 No trademark or publicity rights are granted. This license does NOT give you any right, title or interest in the trademark SimCity or any other Electronic Arts trademark. You may not distribute any modification of this program using the trademark SimCity or claim any affliation or association with Electronic Arts Inc. or its employees. Any propagation or conveyance of this program must include this copyright notice and these terms. If you convey this program (or any modifications of it) and assume contractual liability for the program to recipients of it, you agree to indemnify Electronic Arts for any liability that those contractual assumptions impose on Electronic Arts. You may not misrepresent the origins of this program; modified versions of the program must be marked as such and not identified as the original program. This disclaimer supplements the one included in the General Public License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU. micropolis-activity/src/sim/0000775000076400007640000000000010735230433016405 5ustar simcitysimcitymicropolis-activity/src/sim/s_msg.c0000664000076400007640000002442110724145723017671 0ustar simcitysimcity/* s_msg.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" QUAD LastCityPop; short LastCategory; short LastPicNum; short autoGo; short HaveLastMessage = 0; char LastMessage[256]; int DoAutoGoto(short x, short y, char *msg); int DoShowPicture(short id); /* comefrom: Simulate */ SendMessages(void) { register z; short PowerPop; float TM; if ((ScenarioID) && (ScoreType) && (ScoreWait)) { ScoreWait--; if (!ScoreWait) DoScenarioScore(ScoreType); } CheckGrowth(); TotalZPop = ResZPop + ComZPop + IndZPop; PowerPop = NuclearPop + CoalPop; z = CityTime & 63; switch(z) { case 1: if ((TotalZPop >>2) >= ResZPop) SendMes(1); /* need Res */ break; case 5: if ((TotalZPop >>3) >= ComZPop) SendMes(2); /* need Com */ break; case 10: if ((TotalZPop >>3) >= IndZPop) SendMes(3); /* need Ind */ break; case 14: if ((TotalZPop > 10) && ((TotalZPop <<1) > RoadTotal)) SendMes(4); break; case 18: if ((TotalZPop > 50) && (TotalZPop > RailTotal)) SendMes(5); break; case 22: if ((TotalZPop > 10) && (PowerPop == 0)) SendMes(6); /* need Power */ break; case 26: if ((ResPop > 500) && (StadiumPop == 0)) { SendMes(7); /* need Stad */ ResCap = 1; } else ResCap = 0; break; case 28: if ((IndPop > 70) && (PortPop == 0)) { SendMes(8); IndCap = 1; } else IndCap = 0; break; case 30: if ((ComPop > 100) && (APortPop == 0)) { SendMes(9); ComCap = 1; } else ComCap = 0; break; case 32: TM = unPwrdZCnt + PwrdZCnt; /* dec score for unpowered zones */ if (TM) if ((PwrdZCnt / TM) < .7) SendMes(15); break; case 35: if (PolluteAverage > /* 80 */ 60) SendMes(-10); break; case 42: if (CrimeAverage > 100) SendMes(-11); break; case 45: if ((TotalPop > 60) && (FireStPop == 0)) SendMes(13); break; case 48: if ((TotalPop > 60) && (PolicePop == 0)) SendMes(14); break; case 51: if (CityTax > 12) SendMes(16); break; case 54: if ((RoadEffect < 20) && (RoadTotal > 30)) SendMes(17); break; case 57: if ((FireEffect < 700) && (TotalPop > 20)) SendMes(18); break; case 60: if ((PoliceEffect < 700) && (TotalPop > 20)) SendMes(19); break; case 63: if (TrafficAverage > 60) SendMes(-12); break; } } /* comefrom: SendMessages */ CheckGrowth(void) { QUAD ThisCityPop; short z; if (!(CityTime & 3)) { z = 0; ThisCityPop = ((ResPop) + (ComPop * 8L) + (IndPop * 8L)) * 20L; if (LastCityPop) { if ((LastCityPop < 2000) && (ThisCityPop >= 2000)) z = 35; if ((LastCityPop < 10000) && (ThisCityPop >= 10000)) z = 36; if ((LastCityPop < 50000L) && (ThisCityPop >= 50000L)) z = 37; if ((LastCityPop < 100000L) && (ThisCityPop >= 100000L)) z = 38; if ((LastCityPop < 500000L) && (ThisCityPop >= 500000L)) z = 39; } if (z) if (z != LastCategory) { SendMes(-z); LastCategory = z; } LastCityPop = ThisCityPop; } } /* comefrom: SendMessages */ DoScenarioScore(int type) { short z; z = -200; /* you lose */ switch(type) { case 1: /* Dullsville */ if (CityClass >= 4) z = -100; break; case 2: /* San Francisco */ if (CityClass >= 4) z = -100; break; case 3: /* Hamburg */ if (CityClass >= 4) z = -100; break; case 4: /* Bern */ if (TrafficAverage < 80) z = -100; break; case 5: /* Tokyo */ if (CityScore > 500) z = -100; break; case 6: /* Detroit */ if (CrimeAverage < 60) z = -100; break; case 7: /* Boston */ if (CityScore > 500) z = -100; break; case 8: /* Rio de Janeiro */ if (CityScore > 500) z = -100; break; } ClearMes(); SendMes(z); if (z == -200) DoLoseGame(); } ClearMes(void) { MessagePort = 0; MesX = 0; MesY = 0; LastPicNum = 0; } /* comefrom: MakeEarthquake MakeFire MakeFire MakeFlood SendMessages CheckGrowth DoScenarioScore DoPowerScan */ SendMes(int Mnum) { if (Mnum < 0) { if (Mnum != LastPicNum) { MessagePort = Mnum; MesX = 0; MesY = 0; LastPicNum = Mnum; return (1); } } else { if (!(MessagePort)) { MessagePort = Mnum; MesX = 0; MesY = 0; return(1); } } return(0); } /* comefrom: DoExplosion DoCopter ExplodeObject */ void SendMesAt(short Mnum, short x, short y) { if (SendMes(Mnum)) { MesX = x; MesY = y; } } doMessage(void) { char messageStr[256]; short pictId; short firstTime; messageStr[0] = 0; if (MessagePort) { MesNum = MessagePort; MessagePort = 0; LastMesTime = TickCount(); firstTime = 1; } else { firstTime = 0; if (MesNum == 0) return; if (MesNum < 0) { MesNum = -MesNum; LastMesTime = TickCount(); } else if ((TickCount() - LastMesTime) > (60 * 30)) { MesNum = 0; return; } } if (firstTime) { switch ((MesNum < 0) ? -MesNum : MesNum) { case 12: if (Rand(5) == 1) { MakeSound("city", "HonkHonk-Med"); } else if (Rand(5) == 1) { MakeSound("city", "HonkHonk-Low"); } else if (Rand(5) == 1) { MakeSound("city", "HonkHonk-High"); } break; case 11: case 20: case 22: case 23: case 24: case 25: case 26: case 27: MakeSound("city", "Siren"); break; case 21: MakeSound("city", "Monster -speed [MonsterSpeed]"); break; case 30: MakeSound("city", "Explosion-Low"); MakeSound("city", "Siren"); break; case 43: MakeSound("city", "Explosion-High"); MakeSound("city", "Explosion-Low"); MakeSound("city", "Siren"); break; case 44: MakeSound("city", "Siren"); break; } } if (MesNum >= 0) { if (MesNum == 0) return; if (MesNum > 60) { MesNum = 0; return; } GetIndString(messageStr, 301, MesNum); if (MesX || MesY) { /* TODO: draw goto button */ } if (autoGo && (MesX || MesY)) { DoAutoGoto(MesX, MesY, messageStr); MesX = 0; MesY = 0; } else { SetMessageField(messageStr); } } else { /* picture message */ pictId = -(MesNum); if (pictId < 43) GetIndString(messageStr, 301, pictId); else messageStr[0] = '\0'; DoShowPicture(pictId); MessagePort = pictId; /* resend text message */ if (autoGo && (MesX || MesY)) { DoAutoGoto(MesX, MesY, messageStr); MesX = 0; MesY = 0; } } } DoAutoGoto(short x, short y, char *msg) { char buf[256]; SetMessageField(msg); sprintf(buf, "UIAutoGoto %d %d", x, y); Eval(buf); } SetMessageField(char *str) { char buf[256]; if (!HaveLastMessage || strcmp(LastMessage, str)) { strcpy(LastMessage, str); HaveLastMessage = 1; sprintf(buf, "UISetMessage {%s}", str); Eval(buf); } } DoShowPicture(short id) { char buf[256]; sprintf(buf, "UIShowPicture %d", id); Eval(buf); } DoLoseGame() { Eval("UILoseGame"); } DoWinGame() { Eval("UIWinGame"); } micropolis-activity/src/sim/s_disast.c0000664000076400007640000002010110724145723020361 0ustar simcitysimcity/* s_disast.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" /* Disasters */ short ShakeNow; short FloodCnt; short FloodX, FloodY; /* comefrom: Simulate */ DoDisasters(void) { /* Chance of disasters at lev 0 1 2 */ static short DisChance[3] = { 10*48, 5*48, 60}; register short x; if (FloodCnt) FloodCnt--; if (DisasterEvent) ScenarioDisaster(); x = GameLevel; if (x > 2) x = 0; if (NoDisasters) return; /*post*/ if (!Rand(DisChance[x])) { x = Rand(8); switch (x) { case 0: case 1: SetFire(); break; case 2: case 3: MakeFlood(); break; case 4: break; case 5: MakeTornado(); break; case 6: MakeEarthquake(); break; case 7: case 8: if (PolluteAverage > /* 80 */ 60) MakeMonster(); break; } } } /* comefrom: DoDisasters */ ScenarioDisaster(void) { int x, y; switch (DisasterEvent) { case 1: /* Dullsville */ break; case 2: /* San Francisco */ if (DisasterWait == 1) MakeEarthquake(); break; case 3: /* Hamburg */ DropFireBombs(); break; case 4: /* Bern */ break; case 5: /* Tokyo */ if (DisasterWait == 1) MakeMonster(); break; case 6: /* Detroit */ break; case 7: /* Boston */ if (DisasterWait == 1) MakeMeltdown(); break; case 8: /* Rio */ if ((DisasterWait % 24) == 0) MakeFlood(); break; } if (DisasterWait) DisasterWait--; else DisasterEvent = 0; } /* comefrom: ScenarioDisaster */ MakeMeltdown(void) { short x, y; for (x = 0; x < (WORLD_X - 1); x ++) { for (y = 0; y < (WORLD_Y - 1); y++) { /* TILE_IS_NUCLEAR(Map[x][y]) */ if ((Map[x][y] & LOMASK) == NUCLEAR) { DoMeltdown(x, y); return; } } } } FireBomb() { CrashX = Rand(WORLD_X - 1); CrashY = Rand(WORLD_Y - 1); MakeExplosion(CrashX, CrashY); ClearMes(); SendMesAt(-30, CrashX, CrashY); } /* comefrom: DoDisasters ScenarioDisaster */ MakeEarthquake(void) { register short x, y, z; short time; DoEarthQuake(); SendMesAt(-23, CCx, CCy); time = Rand(700) + 300; for (z = 0; z < time; z++) { x = Rand(WORLD_X - 1); y = Rand(WORLD_Y - 1); if ((x < 0) || (x > (WORLD_X - 1)) || (y < 0) || (y > (WORLD_Y - 1))) continue; /* TILE_IS_VULNERABLE(Map[x][y]) */ if (Vunerable(Map[x][y])) { if (z & 0x3) Map[x][y] = (RUBBLE + BULLBIT) + (Rand16() & 3); else Map[x][y] = (FIRE + ANIMBIT) + (Rand16() & 7); } } } /* comefrom: DoDisasters */ SetFire(void) { register short x, y, z; x = Rand(WORLD_X - 1); y = Rand(WORLD_Y - 1); z = Map[x][y]; /* TILE_IS_ARSONABLE(z) */ if (!(z & ZONEBIT)) { z = z & LOMASK; if ((z > LHTHR) && (z < LASTZONE)) { Map[x][y] = FIRE + ANIMBIT + (Rand16() & 7); CrashX = x; CrashY = y; SendMesAt(-20, x, y); } } } /* comefrom: DoDisasters */ MakeFire(void) { short t, x, y, z; for (t = 0; t < 40; t++) { x = Rand(WORLD_X - 1); y = Rand(WORLD_Y - 1); z = Map[x][y]; /* !(z & BURNBIT) && TILE_IS_ARSONABLE(z) */ if ((!(z & ZONEBIT)) && (z & BURNBIT)) { z = z & LOMASK; if ((z > 21) && (z < LASTZONE)) { Map[x][y] = FIRE + ANIMBIT + (Rand16() & 7); SendMesAt(20, x, y); return; } } } } /* comefrom: MakeEarthquake */ Vunerable(int tem) { register int tem2; tem2 = tem & LOMASK; if ((tem2 < RESBASE) || (tem2 > LASTZONE) || (tem & ZONEBIT)) return(FALSE); return(TRUE); } /* comefrom: DoDisasters ScenarioDisaster */ MakeFlood(void) { static short Dx[4] = { 0, 1, 0,-1}; static short Dy[4] = {-1, 0, 1, 0}; register short xx, yy, c; short z, t, x, y; for (z = 0; z < 300; z++) { x = Rand(WORLD_X - 1); y = Rand(WORLD_Y - 1); c = Map[x][y] & LOMASK; /* XXX: & LOMASK */ /* TILE_IS_RIVER_EDGE(c) */ if ((c > 4) && (c < 21)) /* if riveredge */ for (t = 0; t < 4; t++) { xx = x + Dx[t]; yy = y + Dy[t]; if (TestBounds(xx, yy)) { c = Map[xx][yy]; /* TILE_IS_FLOODABLE(c) */ if ((c == 0) || ((c & BULLBIT) && (c & BURNBIT))) { Map[xx][yy] = FLOOD; FloodCnt = 30; SendMesAt(-42, xx, yy); FloodX = xx; FloodY = yy; return; } } } } } /* comefrom: MapScan */ DoFlood(void) { static short Dx[4] = { 0, 1, 0,-1}; static short Dy[4] = {-1, 0, 1, 0}; register short z, c, xx, yy, t; if (FloodCnt) for (z = 0; z < 4; z++) { if (!(Rand16() & 7)) { xx = SMapX + Dx[z]; yy = SMapY + Dy[z]; if (TestBounds(xx, yy)) { c = Map[xx][yy]; t = c & LOMASK; /* TILE_IS_FLOODABLE2(c) */ if ((c & BURNBIT) || (c == 0) || ((t >= WOODS5 /* XXX */) && (t < FLOOD))) { if (c & ZONEBIT) FireZone(xx, yy, c); Map[xx][yy] = FLOOD + Rand(2); } } } } else if (!(Rand16() & 15)) Map[SMapX][SMapY] = 0; } micropolis-activity/src/sim/w_map.c0000664000076400007640000003503510726077706017676 0ustar simcitysimcity/* w_map.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" Tcl_HashTable MapCmds; extern Tk_ConfigSpec TileViewConfigSpecs[]; Ink *NewInk(); MapCmdconfigure(VIEW_ARGS) { int result = TCL_OK; if (argc == 2) { result = Tk_ConfigureInfo(interp, view->tkwin, TileViewConfigSpecs, (char *) view, (char *) NULL, 0); } else if (argc == 3) { result = Tk_ConfigureInfo(interp, view->tkwin, TileViewConfigSpecs, (char *) view, argv[2], 0); } else { result = ConfigureTileView(interp, view, argc-2, argv+2, TK_CONFIG_ARGV_ONLY); } return result; } MapCmdposition(VIEW_ARGS) { if ((argc != 2) && (argc != 4)) { return TCL_ERROR; } if (argc == 4) { if ((Tcl_GetInt(interp, argv[2], &view->w_x) != TCL_OK) || (Tcl_GetInt(interp, argv[3], &view->w_y) != TCL_OK)) { return TCL_ERROR; } } sprintf(interp->result, "%d %d", view->w_x, view->w_y); return TCL_OK; } MapCmdsize(VIEW_ARGS) { if ((argc != 2) && (argc != 4)) { return TCL_ERROR; } if (argc == 4) { int w, h; if (Tcl_GetInt(interp, argv[2], &w) != TCL_OK) { return TCL_ERROR; } if (Tcl_GetInt(interp, argv[3], &h) != TCL_OK) { return TCL_ERROR; } view->w_width = w; view->w_height = h; } sprintf(interp->result, "%d %d", view->w_width, view->w_height); return TCL_OK; } MapCmdMapState(VIEW_ARGS) { int state; if ((argc != 2) && (argc != 3)) { return TCL_ERROR; } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &state) != TCL_OK) || (state < 0) || (state >= NMAPS)) { return TCL_ERROR; } DoSetMapState(view, state); Kick(); } sprintf(interp->result, "%d", view->map_state); return TCL_OK; } MapCmdShowEditors(VIEW_ARGS) { int val; if ((argc != 2) && (argc != 3)) { return TCL_ERROR; } if (argc == 3) { if (Tcl_GetInt(interp, argv[2], &val) != TCL_OK) { return TCL_ERROR; } view->show_editors = val; } sprintf(interp->result, "%d", view->show_editors); return TCL_OK; } MapCmdPanStart(VIEW_ARGS) { int x, y, left, right, top, bottom, width, height; SimView *ed; if (argc != 4) { return TCL_ERROR; } if ((Tcl_GetInt(interp, argv[2], &x) != TCL_OK) || (Tcl_GetInt(interp, argv[3], &y) != TCL_OK)) { return TCL_ERROR; } for (ed = sim->editor; ed != NULL; ed = ed->next) { if ((ed->x != view->x) || (ed->show_me == 0)) continue; width = ed->w_width; height = ed->w_height; left = ed->pan_x - (width / 2); top = ed->pan_y - (height / 2); right = left + width; bottom = top + height; left = left * 3 / 16 - 4; top = top * 3 / 16 - 4; right = right * 3 / 16 + 4; bottom = bottom * 3 / 16 + 4; if ((x >= left) && (x <= right) && (y >= top) && (y <= bottom)) { goto gotit; } } gotit: view->last_x = x; view->last_y = y; view->track_info = (char *)ed; return TCL_OK; } MapCmdPanTo(VIEW_ARGS) { int x, y, dx, dy; SimView *ed; if (argc != 4) { return TCL_ERROR; } if ((Tcl_GetInt(interp, argv[2], &x) != TCL_OK) || (Tcl_GetInt(interp, argv[3], &y) != TCL_OK)) { return TCL_ERROR; } if ((ed = (SimView *)view->track_info) != NULL) { dx = x - view->last_x; dy = y - view->last_y; if (dx || dy) { view->last_x = x; view->last_y = y; dx = dx * 16 / 3; dy = dy * 16 / 3; ed->skip = 0; DoPanBy(ed, dx, dy); Kick(); } } return TCL_OK; } MapCmdVisible(VIEW_ARGS) { int visible; if ((argc != 2) && (argc != 3)) { return TCL_ERROR; } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &visible) != TCL_OK) || (visible < 0) || (visible > 1)) { return TCL_ERROR; } visible = visible && Tk_IsMapped(view->tkwin); view->visible = visible; } sprintf(interp->result, "%d", view->visible); return TCL_OK; } MapCmdViewAt(VIEW_ARGS) { int x, y; if (argc != 4) { return TCL_ERROR; } if ((Tcl_GetInt(interp, argv[2], &x) != TCL_OK) || (x < 0) || (x >= WORLD_X) || (Tcl_GetInt(interp, argv[3], &y) != TCL_OK) || (y < 0) || (y >= WORLD_Y)) { return TCL_ERROR; } sprintf(interp->result, "Sorry Not Implemented Yet"); /* XXX */ return TCL_OK; } map_command_init() { int new; extern int TileViewCmd(CLIENT_ARGS); Tcl_CreateCommand(tk_mainInterp, "mapview", TileViewCmd, (ClientData)MainWindow, (void (*)()) NULL); Tcl_InitHashTable(&MapCmds, TCL_STRING_KEYS); #define MAP_CMD(name) HASHED_CMD(Map, name) MAP_CMD(configure); MAP_CMD(position); MAP_CMD(size); MAP_CMD(MapState); MAP_CMD(ShowEditors); MAP_CMD(PanStart); MAP_CMD(PanTo); MAP_CMD(Visible); MAP_CMD(ViewAt); } int DoMapCmd(CLIENT_ARGS) { SimView *view = (SimView *) clientData; Tcl_HashEntry *ent; int result = TCL_OK; int (*cmd)(); if (argc < 2) { return TCL_ERROR; } if (ent = Tcl_FindHashEntry(&MapCmds, argv[1])) { cmd = (int (*)())ent->clientData; Tk_Preserve((ClientData) view); result = cmd(view, interp, argc, argv); Tk_Release((ClientData) view); } else { Tcl_AppendResult(interp, "unknown command name: \"", argv[0], " ", argv[1], "\".", (char *) NULL); result = TCL_ERROR; } return result; } /*************************************************************************/ DoNewMap(SimView *view) { sim->maps++; view->next = sim->map; sim->map = view; /* NewMap = 1; */ view->invalid = 1; } int DoUpdateMap(SimView *view) { int dx, dy, i; view->updates++; // fprintf(stderr, "UpdateMaps sim_skips %d skips %d skip %d visible %d\n", sim_skips, view->skips, view->skip, view->visible); if (!view->visible) { return 0; } if ((!ShakeNow) && (!view->update) && (sim_skips || view->skips)) { if (sim_skips) { if (sim_skip > 0) { return 0; } } else { if (view->skip > 0) { --view->skip; return 0; } else { view->skip = view->skips; } } } view->update = 0; view->skip = 0; // view->invalid = 1; if (view->invalid || NewMap || ShakeNow) { view->invalid = 0; switch (view->type) { case X_Mem_View: MemDrawMap(view); break; case X_Wire_View: WireDrawMap(view); break; } } /* XXX: don't do this stuff if just redrawing overlay */ for (dx = dy = i = 0; i < ShakeNow; i++) { dx += Rand(16) - 8; dy += Rand(16) - 8; } XCopyArea(view->x->dpy, view->pixmap, view->pixmap2, view->x->gc, dx, dy, view->w_width, view->w_height, 0, 0); DrawMapInk(view); /* XXX: do this if just redrawing overlay */ XCopyArea(view->x->dpy, view->pixmap2, Tk_WindowId(view->tkwin), view->x->gc, 0, 0, view->w_width, view->w_height, 0, 0); if (view->show_editors) { DrawMapEditorViews(view); } return 1; } DrawMapEditorViews(SimView *view) { Pixmap pm = Tk_WindowId(view->tkwin); struct SimView *ed; int left, right, top, bottom, width, height; int mine; XSetLineAttributes(view->x->dpy, view->x->gc, 1, LineSolid, CapButt, JoinBevel); for (ed = sim->editor; ed != NULL; ed = ed->next) { if ((ed->x != view->x) || (ed->show_me == 0)) continue; width = ed->w_width; height = ed->w_height; left = ed->pan_x - (width / 2); top = ed->pan_y - (height / 2); right = left + width; bottom = top + height; left = left * 3 / 16; top = top * 3 / 16; right = right * 3 / 16; bottom = bottom * 3 / 16; width = right - left; height = bottom - top; XSetForeground(view->x->dpy, view->x->gc, view->pixels[COLOR_WHITE]); XDrawRectangle(view->x->dpy, pm, view->x->gc, left - 3, top - 3, width + 3, height + 3); XSetForeground(view->x->dpy, view->x->gc, view->pixels[COLOR_BLACK]); XDrawRectangle(view->x->dpy, pm, view->x->gc, left - 1, top - 1, width + 3, height + 3); XSetForeground(view->x->dpy, view->x->gc, view->pixels[COLOR_YELLOW]); XDrawRectangle(view->x->dpy, pm, view->x->gc, left - 2, top - 2, width + 3, height + 3); } } /* * Sending the whole image is 108108 bytes. * Sending points is 4.4 bytes per point. * One image is as big as 24570 points. * But we have to sort these dang things. */ #define MAX_PIX 256 int max_pix = MAX_PIX; struct Pix { long color; short x, y; }; struct Pix pix[MAX_PIX]; CompareColor(struct Pix *p1, struct Pix *p2) { register char c1 = p1->color, c2 = p2->color; if (c1 == c2) return (0); return ((c1 < c2) ? -1 : 1); } WireDrawMap(SimView *view) { int different, x, y, i, last, pts; unsigned char *old, *new; XPoint *points; if (!view->x->color) { MemDrawMap(view); return; } memcpy(view->other_data, view->data, view->line_bytes * view->m_height); /* XXX: handle depth */ MemDrawMap(view); old = view->other_data; new = view->data; /* XXX: handle depth */ different = 0; /* Scan the pixels that have changed */ for (y = 0; y < view->m_height; y++) { for (x = 0; x < view->m_width; x++) { if (old[x] != new[x]) { if (different >= max_pix) { /* Wow, lots of the pixels have changed. Maybe we ought to just do it the hard way. */ XPutImage(view->x->dpy, view->pixmap, view->x->gc, view->image, 0, 0, 0, 0, view->m_width, view->m_height); return; } pix[different].color = new[x]; pix[different].x = x; pix[different].y = y; different++; } } old += view->line_bytes; new += view->line_bytes; /* XXX: handle depth */ } /* Whew, the images are identical! */ if (different == 0) return; #if 1 /* Always draw the whole pixmap, for now. */ XPutImage(view->x->dpy, view->pixmap, view->x->gc, view->image, 0, 0, 0, 0, view->m_width, view->m_height); #else /* TODO: Fix this. I disabled this incremental drawing code for now since it seems to be buggy. */ /* Sort the changed pixels by their color */ qsort(pix, different, sizeof (struct Pix), (int (*)())CompareColor); /* Draw the points of each color that have changed */ points = (XPoint *)malloc(sizeof (XPoint) * different); last = 0; pts = 0; for (i = 0; i <= different; i++) { if ((i == different) || (pix[i].color != pix[last].color)) { XSetForeground(view->x->dpy, view->x->gc, pix[last].color); XDrawPoints(view->x->dpy, view->pixmap, view->x->gc, points, pts, CoordModeOrigin); if (i == different) break; pts = 0; last = i; } points[pts].x = pix[i].x; points[pts].y = pix[i].y; pts++; } free(points); #endif } DrawMapInk(SimView *view) { Pixmap pm = view->pixmap2; SimView *v; Ink *ink, *ink2 = NewInk(); int i, X, Y, x, y; XSetLineAttributes(view->x->dpy, view->x->gc, 0, LineSolid, CapButt, JoinBevel); for (ink = sim->overlay; ink != NULL; ink = ink->next) { X = ink->x; x = (X * 3) >>4; Y = ink->y; y = (Y * 3) >>4; if (ink->length <= 1) { XSetForeground(view->x->dpy, view->x->gc, view->pixels[ink->color]); XFillArc(view->x->dpy, pm, view->x->gc, ink->x - 1, ink->y - 1, 1, 1, 0, 360 * 64); } else { StartInk(ink2, x, y); for (i = 1; i < ink->length; i++) { X += ink->points[i].x; x = (X * 3) >>4; Y += ink->points[i].y; y = (Y * 3) >>4; AddInk(ink2, x, y); } XSetForeground(view->x->dpy, view->x->gc, view->pixels[ink->color]); XDrawLines(view->x->dpy, pm, view->x->gc, ink2->points, ink2->length, CoordModePrevious); } } FreeInk(ink2); } micropolis-activity/src/sim/s_eval.c0000664000076400007640000002114410724145723020031 0ustar simcitysimcity/* s_eval.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" /* City Evaluation */ short EvalValid; short CityYes, CityNo; short ProblemTable[PROBNUM]; short ProblemTaken[PROBNUM]; short ProblemVotes[PROBNUM]; /* these are the votes for each */ short ProblemOrder[4]; /* sorted index to above */ QUAD CityPop, deltaCityPop; QUAD CityAssValue; short CityClass; /* 0..5 */ short CityScore, deltaCityScore, AverageCityScore; short TrafficAverage; /* comefrom: SpecialInit Simulate */ CityEvaluation(void) { EvalValid = 0; if (TotalPop) { GetAssValue(); DoPopNum(); DoProblems(); GetScore(); DoVotes(); ChangeEval(); } else { EvalInit(); ChangeEval(); } EvalValid = 1; } /* comefrom: CityEvaluation SetCommonInits */ EvalInit(void) { register short x, z; z = 0; CityYes = z; CityNo = z; CityPop = z; deltaCityPop = z; CityAssValue = z; CityClass = z; CityScore = 500; deltaCityScore = z; EvalValid = 1; for (x = 0; x < PROBNUM; x++) ProblemVotes[x] = z; for (x = 0; x < 4; x++) ProblemOrder[x] = z; } /* comefrom: CityEvaluation */ GetAssValue(void) { QUAD z; z = RoadTotal * 5; z += RailTotal * 10; z += PolicePop * 1000; z += FireStPop * 1000; z += HospPop * 400; z += StadiumPop * 3000; z += PortPop * 5000; z += APortPop * 10000; z += CoalPop * 3000; z += NuclearPop * 6000; CityAssValue = z * 1000; } /* comefrom: CityEvaluation */ DoPopNum(void) { QUAD OldCityPop; OldCityPop = CityPop; CityPop = ((ResPop) + (ComPop * 8L) + (IndPop *8L)) * 20L; if (OldCityPop == -1) { OldCityPop = CityPop; } deltaCityPop = CityPop - OldCityPop; CityClass = 0; /* village */ if (CityPop > 2000) CityClass++; /* town */ if (CityPop > 10000) CityClass++; /* city */ if (CityPop > 50000) CityClass++; /* capital */ if (CityPop > 100000) CityClass++; /* metropolis */ if (CityPop > 500000) CityClass++; /* megalopolis */ } /* comefrom: CityEvaluation */ DoProblems(void) { register short x, z; short ThisProb, Max; for (z = 0; z < PROBNUM; z++) ProblemTable[z] = 0; ProblemTable[0] = CrimeAverage; /* Crime */ ProblemTable[1] = PolluteAverage; /* Pollution */ ProblemTable[2] = LVAverage * .7; /* Housing */ ProblemTable[3] = CityTax * 10; /* Taxes */ ProblemTable[4] = AverageTrf(); /* Traffic */ ProblemTable[5] = GetUnemployment(); /* Unemployment */ ProblemTable[6] = GetFire(); /* Fire */ VoteProblems(); for (z = 0; z < PROBNUM; z++) ProblemTaken[z] = 0; for (z = 0; z < 4; z++) { Max = 0; for (x = 0; x < 7; x++) { if ((ProblemVotes[x] > Max) && (!ProblemTaken[x])) { ThisProb = x; Max = ProblemVotes[x]; } } if (Max) { ProblemTaken[ThisProb] = 1; ProblemOrder[z] = ThisProb; } else { ProblemOrder[z] = 7; ProblemTable[7] = 0; } } } /* comefrom: DoProblems */ VoteProblems(void) { register x, z, count; for (z = 0; z < PROBNUM; z++) ProblemVotes[z] = 0; x = 0; z = 0; count = 0; while ((z < 100) && (count < 600)) { if (Rand(300) < ProblemTable[x]) { ProblemVotes[x]++; z++; } x++; if (x > PROBNUM) x = 0; count++; } } /* comefrom: DoProblems */ AverageTrf(void) { QUAD TrfTotal; register short x, y, count; TrfTotal = 0; count = 1; for (x=0; x < HWLDX; x++) for (y=0; y < HWLDY; y++) if (LandValueMem[x][y]) { TrfTotal += TrfDensity[x][y]; count++; } TrafficAverage = (TrfTotal / count) * 2.4; return(TrafficAverage); } /* comefrom: DoProblems */ GetUnemployment(void) { float r; short b; b = (ComPop + IndPop) << 3; if (b) r = ((float)ResPop) / b; else return(0); b = (r - 1) * 255; if (b > 255) b = 255; return (b); } /* comefrom: DoProblems GetScore */ GetFire(void) { short z; z = FirePop * 5; if (z > 255) return(255); else return(z); } /* comefrom: CityEvaluation */ GetScore(void) { register x, z; short OldCityScore; float SM, TM; OldCityScore = CityScore; x = 0; for (z = 0; z < 7; z++) x += ProblemTable[z]; /* add 7 probs */ x = x / 3; /* 7 + 2 average */ if (x > 256) x = 256; z = (256 - x) * 4; if (z > 1000) z = 1000; if (z < 0 ) z = 0; if (ResCap) z = z * .85; if (ComCap) z = z * .85; if (IndCap) z = z * .85; if (RoadEffect < 32) z = z - (32 - RoadEffect); if (PoliceEffect < 1000) z = z * (.9 + (PoliceEffect / 10000.1)); if (FireEffect < 1000) z = z * (.9 + (FireEffect / 10000.1)); if (RValve < -1000) z = z * .85; if (CValve < -1000) z = z * .85; if (IValve < -1000) z = z * .85; SM = 1.0; if ((CityPop == 0) || (deltaCityPop == 0)) SM = 1.0; else if (deltaCityPop == CityPop) SM = 1.0; else if (deltaCityPop > 0) SM = ((float)deltaCityPop/CityPop) + 1.0; else if (deltaCityPop < 0) SM = .95 + ((float) deltaCityPop/(CityPop - deltaCityPop)); z = z * SM; z = z - GetFire(); /* dec score for fires */ z = z - (CityTax); TM = unPwrdZCnt + PwrdZCnt; /* dec score for unpowered zones */ if (TM) SM = PwrdZCnt / TM; else SM = 1.0; z = z * SM; if (z > 1000) z = 1000; if (z < 0 ) z = 0; CityScore = (CityScore + z) / 2; deltaCityScore = CityScore - OldCityScore; } /* comefrom: CityEvaluation */ DoVotes(void) { register z; CityYes = 0; CityNo = 0; for (z = 0; z < 100; z++) { if (Rand(1000) < CityScore) CityYes++; else CityNo++; } } micropolis-activity/src/sim/s_alloc.c0000664000076400007640000001466010724145723020201 0ustar simcitysimcity/* s_alloc.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" /* Allocate Stuff */ short SMapX, SMapY; short CChr, CChr9; short RoadTotal, RailTotal, FirePop; short ResPop, ComPop, IndPop, TotalPop, LastTotalPop; short ResZPop, ComZPop, IndZPop, TotalZPop; short HospPop, ChurchPop, StadiumPop; short PolicePop, FireStPop; short CoalPop, NuclearPop, PortPop, APortPop; short NeedHosp, NeedChurch; short CrimeAverage, PolluteAverage, LVAverage; QUAD CityTime; short StartingYear; short *Map[WORLD_X]; short ResHisMax, Res2HisMax; short ComHisMax, Com2HisMax; short IndHisMax, Ind2HisMax; short CensusChanged; short MessagePort; short MesX, MesY; QUAD RoadSpend, PoliceSpend, FireSpend; QUAD RoadFund, PoliceFund, FireFund; short RoadEffect, PoliceEffect, FireEffect; QUAD TaxFund; short CityTax, TaxFlag; unsigned char tileSynch = 0x01; Byte *PopDensity[HWLDX]; Byte *TrfDensity[HWLDX]; Byte *PollutionMem[HWLDX]; Byte *LandValueMem[HWLDX]; Byte *CrimeMem[HWLDX]; Byte *tem[HWLDX]; Byte *tem2[HWLDX]; Byte *TerrainMem[QWX]; Byte *Qtem[QWX]; short RateOGMem[SmX][SmY]; short FireStMap[SmX][SmY]; short PoliceMap[SmX][SmY]; short PoliceMapEffect[SmX][SmY]; short FireRate[SmX][SmY]; short ComRate[SmX][SmY]; short STem[SmX][SmY]; Ptr terrainBase; Ptr qTemBase; Ptr tem1Base; Ptr tem2Base; Ptr popPtr; Ptr trfPtr; Ptr polPtr; Ptr landPtr; Ptr crimePtr; Ptr auxPopPtr; Ptr auxTrfPtr; Ptr auxPolPtr; Ptr auxLandPtr; Ptr auxCrimePtr; Ptr brettPtr; unsigned short *mapPtr; short *ResHis; short *ComHis; short *IndHis; short *MoneyHis; short *PollutionHis; short *CrimeHis; short *MiscHis; short *PowerMap; int initMapArrays(void) { short i; unsigned short *auxPtr, *temp1; if (!mapPtr) mapPtr = (unsigned short *)NewPtr(sizeof(unsigned short) * WORLD_X * WORLD_Y); auxPtr = mapPtr; for (i = 0; i < WORLD_X; i++) { temp1 = auxPtr + i * WORLD_Y; Map[i] = (short *)temp1; } popPtr = NewPtr(HWLDX * HWLDY); trfPtr = NewPtr(HWLDX * HWLDY); polPtr = NewPtr(HWLDX * HWLDY); landPtr = NewPtr(HWLDX * HWLDY); crimePtr = NewPtr(HWLDX * HWLDY); tem1Base = NewPtr(HWLDX * HWLDY); tem2Base = NewPtr(HWLDX * HWLDY); auxPopPtr = popPtr; auxTrfPtr = trfPtr; auxPolPtr = polPtr; auxLandPtr = landPtr; auxCrimePtr = crimePtr; for (i = 0; i < HWLDX; i++) { PopDensity[i] = (Byte *) auxPopPtr + (i * HWLDY); TrfDensity[i] = (Byte *) auxTrfPtr + (i * HWLDY); PollutionMem[i] = (Byte *) auxPolPtr + (i * HWLDY); LandValueMem[i] = (Byte *) auxLandPtr + (i * HWLDY); CrimeMem[i] = (Byte *) auxCrimePtr + (i * HWLDY); tem[i] = (Byte *)tem1Base + (i * HWLDY); tem2[i] = (Byte *) tem2Base + (i * HWLDY); } brettPtr = (Ptr) &PopDensity[0][0]; terrainBase = NewPtr(QWX * QWY); qTemBase = NewPtr(QWX * QWY); for (i = 0; i < QWX; i++) { TerrainMem[i] = (Byte *)terrainBase + (i * QWY); Qtem[i] = (Byte *)qTemBase + (i * QWY); } ResHis = (short *)NewPtr(HISTLEN); ComHis = (short *)NewPtr(HISTLEN); IndHis = (short *)NewPtr(HISTLEN); MoneyHis = (short *)NewPtr(HISTLEN); PollutionHis = (short *)NewPtr(HISTLEN); CrimeHis = (short *)NewPtr(HISTLEN); MiscHis = (short *)NewPtr(MISCHISTLEN); PowerMap = (short *)NewPtr(POWERMAPLEN); /* power alloc */ } micropolis-activity/src/sim/g_cam.c0000664000076400007640000006252710724145723017640 0ustar simcitysimcity/* g_cam.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" #ifdef CAM Can * new_can(int w, int h, Byte *mem, int line_bytes) { Can *can = (Can *)malloc(sizeof(Can)); can->width = w; can->height = h; can->line_bytes = line_bytes; can->mem = mem; return (can); } Cam * new_cam(SimCam *scam, int x, int y, int w, int h, int dx, int dy, vf func) { Cam *cam = (Cam *)malloc(sizeof(Cam)); int ww, hh; cam->x = x; cam->y = y; cam->ideal_width = w; cam->ideal_height = h; w = (w + 1) & ~1; h = (h + 1) & ~1; ww = w + 2; hh = h + 2; cam->width = w; cam->height = h; cam->back = new_can(ww, hh, (Byte *)malloc(ww * hh), ww); cam->front = new_can(w, h, (Byte *)scam->data + x + (y * scam->line_bytes), scam->line_bytes); cam->neighborhood = func; cam->rule = NULL; cam->rule_size = 0; cam->phase = 0; cam->wrap = 3; cam->frob = -1; cam->steps = 1; cam->dx = dx; cam->dy = dy; cam->gx = 0; cam->gy = 0; cam->dragging = 0; cam->set_x = -1; cam->set_y = -1; cam->set_width = -1; cam->set_height = -1; cam->set_x0 = -1; cam->set_y0 = -1; cam->set_x1 = -1; cam->set_y1 = -1; cam->name = NULL; cam->next = scam->cam_list; scam->cam_list = cam; scam->cam_count++; return (cam); } scam_randomize(SimCam *scam) { u_char *data = scam->data; int line_bytes = scam->line_bytes; int pixels = line_bytes * scam->w_height; int i; for (i = 0; i < pixels; i++) { *data = (char)(Rand16() >>4); data++; } } cam_randomize(Cam *cam) { int x, y, w, h, lb; Byte *image; w = cam->width; h = cam->height; lb = cam->front->line_bytes; image = cam->front->mem; for (y = 0; y < h; y++, image += lb) { for (x = 0; x < w; x++) { image[x] = (char)(Rand16() >> 4); } } } cam_do_rule(SimCam *scam, Cam *cam) { Byte *back, *front; int frontline, backline; int w, h; int steps = cam->steps; int step; back = cam->back->mem; backline = cam->back->line_bytes; front = cam->front->mem; frontline = cam->front->line_bytes; w = cam->width; h = cam->height; for (step=0; step < steps; step++) { int x, y; Byte *p = back + backline + 1, *f = front; /* * Copy wrapping edges from front=>back: * * 0 ff f0 f1 ... fe ff f0 * * 1 0f 00 01 ... 0e 0f 00 * 2 1f 10 11 ... 1e 1f 10 * .. .. .. .. .. .. * ef e0 e1 ... ee ef e0 * h ff f0 f1 ... fe ff f0 * * h+1 0f 00 01 ... 0e 0f 00 * * wrap value: effect: * 0 no effect * 1 copy front=>back, no wrap * 2 no copy, wrap edges * 3 copy front=>back, wrap edges * 4 copy front=>back, same edges * 5 copy edges from screen */ switch (cam->wrap) { case 0: break; case 1: for (y=0; yx == 0) ? 1 : 0; int right = (cam->x + cam->front->width == scam->w_width) ? 1 : 0; int top = (cam->y == 0) ? 1 : 0; int bottom = (cam->y + cam->front->height == scam->w_height) ? 1 : 0; if (!left && !right && !top && !bottom) { p = back; f = front - 1 - frontline; for (y=-1; y<=h; y++) { memcpy(p, f, w + 2); p += backline; f += frontline; } } else { p = back + backline + 1; f = front; p[-1 - backline] = f[left - 1 - (top ? 0 : frontline)]; memcpy(p - backline, f, w); p[w - backline] = f[w - right - (top ? 0 : frontline)]; for (y=0; yneighborhood)(cam); cam->phase = !cam->phase; cam_update(scam, cam); cam_adjust(scam, cam); } /* for step */ } cam_slide(SimCam *scam, Cam *cam) { int x = cam->x; int y = cam->y; int last_x = x; int last_y = y; int width = cam->width; int height = cam->height; int dx = cam->dx; int dy = cam->dy; int dragging = cam->dragging; int bounce = 0; int dagnabit = 0; if (dragging || (cam->set_x >= 0) || (cam->set_y >= 0)) { if (cam->set_x >= 0) { x = cam->set_x; cam->set_x = -1; } if (cam->set_y >= 0) { y = cam->set_y; cam->set_y = -1; } } else { x += dx; y += dy; } if (x < 0) { x = 0; if (!dragging) { dx = ABS(dx); bounce = 1; } } else if ((x + width) > scam->w_width) { x = scam->w_width - width; if (!dragging) { dx = -ABS(dx); bounce = 1; } } if (y < 0) { y = 0; if (!dragging) { dy = ABS(dy); bounce = 1; } else { dagnabit = 1; printf("dagnabit\n"); } } else if ((y + height) > scam->w_height) { y = scam->w_height - height; if (!dragging) { dy = -ABS(dy); bounce = 1; } } if (dragging) { dx = x - last_x; dy = y - last_y; } else { if (bounce) { cam->frob = (Rand16() & 15) * ((cam->frob > 0) ? -1 : 1); } } cam->x = x; cam->y = y; cam->front->mem = (Byte *)scam->data + x + (scam->line_bytes * y); cam->dx = dx + cam->gx; cam->dy = dy + cam->gy; if (dagnabit) { printf("x %d y %d dx %d dy %d\n", cam->x, cam->y, cam->dx, cam->dy); } } cam_update(SimCam *scam, Cam *cam) { if (scam->x->shared) { XShmPutImage(scam->x->dpy, Tk_WindowId(scam->tkwin), scam->x->gc, scam->image, cam->x, cam->y, cam->x, cam->y, cam->width, cam->height, False); } else { XPutImage(scam->x->dpy, Tk_WindowId(scam->tkwin), scam->x->gc, scam->image, cam->x, cam->y, cam->x, cam->y, cam->width, cam->height); } } cam_adjust(SimCam *scam, Cam *cam) { int x0 = cam->set_x0; int y0 = cam->set_y0; int x1 = cam->set_x1; int y1 = cam->set_y1; int width = cam->set_width; int height = cam->set_height; int min_size = 8; int tmp; if ((x0 >= 0) || (y0 >= 0) || (x1 >= 0) || (y1 >= 0) || (width > 0) || (height > 0)) { if (x0 < 0) x0 = cam->x; if (y0 < 0) y0 = cam->y; if (x1 < 0) x1 = cam->x + cam->ideal_width; if (y1 < 0) y1 = cam->y + cam->ideal_height; if (width > 0) x1 = x0 + width; if (height > 0) y1 = y0 + height; cam->set_width = cam->set_height = cam->set_x0 = cam->set_y0 = cam->set_x1 = cam->set_y1 = -1; if (x0 > x1) { tmp = x0; x0 = x1; x1 = tmp; } if (y0 > y1) { tmp = y0; y0 = y1; y1 = tmp; } if (x0 < 0) x0 = 0; if (y0 < 0) y0 = 0; if (x0 > scam->w_width - min_size) x0 = scam->w_width - min_size; if (y0 > scam->w_height - min_size) x0 = scam->w_height - min_size; if (x1 < x0 + min_size) x1 = x0 + min_size; if (y1 < y0 + min_size) y1 = y0 + min_size; if (x1 > scam->w_width) x1 = scam->w_width; if (y1 > scam->w_height) y1 = scam->w_height; cam->x = x0; cam->y = y0; cam->ideal_width = x1 - x0; cam->ideal_height = y1 - y0; cam->width = cam->ideal_width & ~1; cam->height = cam->ideal_height & ~1; cam->front->mem = (Byte *)scam->data + x0 + (y0 * scam->line_bytes); cam->front->width = cam->width; cam->front->height = cam->height; free(cam->back->mem); cam->back->mem = (Byte *)malloc((cam->width + 2) * (cam->height + 2)); cam->back->width = cam->width + 2; cam->back->height = cam->height + 2; cam->back->line_bytes = cam->back->width; } } void n_moore_a(Cam *cam) { /* 0 1 2 3 4 5 6 7 8 9 */ /* c c' se sw ne nw e w s n */ /* 0x1 0x2 0x4 0x8 0x10 0x20 0x40 0x80 0x100 0x200 */ #define MOORE_A ( \ ((NORTHWEST&1)<<5) | ((NORTH&1)<<9) |((NORTHEAST&1)<<4) | \ ((WEST&1)<<7) | (CENTER&3) | ((EAST&1)<<6) | \ ((SOUTHWEST&1)<<3) | ((SOUTH&1)<<8) |((SOUTHEAST&1)<<2) \ ) CAM_TABLE_LOOP(MOORE_A) } void n_moore_ab(Cam *cam) { /* 0 1 2 3 4 5 6 7 8 9 10 11 */ /* c c' se sw ne nw e w s n &c &c' */ /* 0x1 0x2 0x4 0x8 0x10 0x20 0x40 0x80 0x100 0x200 0x400 0x800 */ #define MOORE_AB (MOORE_A | ((CENTER&12)<<8)) CAM_TABLE_LOOP(MOORE_AB) } void n_vonn_neumann(Cam *cam) { /* 0 1 2 3 4 5 6 7 8 9 */ /* c c' e' w' s' n' e w s n */ /* 0x1 0x2 0x4 0x8 0x10 0x20 0x40 0x80 0x100 0x200 */ #define VON_NEUMANN ( \ (CENTER&3) | \ ((EAST&1)<<6) | ((EAST&2)<<1) | \ ((WEST&1)<<7) | ((WEST&2)<<2) | \ ((SOUTH&1)<<8) | ((SOUTH&2)<<3) | \ ((NORTH&1)<<9) | ((NORTH&2)<<4) \ ) CAM_TABLE_LOOP(VON_NEUMANN) } void n_margolis(Cam *cam) { register Byte i; /* 0 1 2 3 4 5 6 7 8 9 */ /* c c' cw ccw opp cw' ccw' opp' */ /* 0x1 0x2 0x4 0x8 0x10 0x20 0x40 0x80 0x100 0x200 */ #define MARGOLIS_ODD ( \ (CENTER & 3) | \ (i=(x&1 ? (y&1 ? (EAST) : (NORTH)) \ : (y&1 ? (SOUTH) : (WEST))), \ (((i&1)<<2) | ((i&2)<<4))) | \ (i=(x&1 ? (y&1 ? (SOUTH) : (EAST)) \ : (y&1 ? (WEST) : (NORTH))), \ (((i&1)<<3) | ((i&2)<<5))) | \ (i=(x&1 ? (y&1 ? (SOUTHEAST):(NORTHEAST)) \ : (y&1 ? (SOUTHWEST):(NORTHWEST))), \ (((i&1)<<4) | ((i&2)<<6))) \ ) #define MARGOLIS_EVEN ( \ (CENTER & 3) | \ (i=(x&1 ? (y&1 ? (WEST) : (SOUTH)) \ : (y&1 ? (NORTH) : (EAST))), \ (((i&1)<<2) | ((i&2)<<4))) | \ (i=(x&1 ? (y&1 ? (NORTH) : (WEST)) \ : (y&1 ? (EAST) : (SOUTH))), \ (((i&1)<<3) | ((i&2)<<5))) | \ (i=(x&1 ? (y&1 ? (NORTHWEST) : (SOUTHWEST)) \ : (y&1 ? (NORTHEAST) : (SOUTHEAST))), \ (((i&1)<<4) | ((i&2)<<6))) \ ) if (cam->phase) { CAM_TABLE_LOOP(MARGOLIS_ODD) } else { CAM_TABLE_LOOP(MARGOLIS_EVEN) } } void n_margolis_ph(Cam *cam) { register Byte i; /* 0 1 2 3 4 5 6 7 8 9 */ /* c c' cw ccw opp cw' ccw' opp' pha pha' */ /* 0x1 0x2 0x4 0x8 0x10 0x20 0x40 0x80 0x100 0x200 */ #define MARGOLIS_ODD_PH (MARGOLIS_ODD | 0x100) #define MARGOLIS_EVEN_PH (MARGOLIS_EVEN | 0x200) if (cam->phase) { CAM_TABLE_LOOP(MARGOLIS_ODD_PH) } else { CAM_TABLE_LOOP(MARGOLIS_EVEN_PH) } } void n_margolis_hv(Cam *cam) { register Byte i; /* 0 1 2 3 4 5 6 7 8 9 */ /* c c' cw ccw opp cw' ccw' opp' horz vert */ /* 0x1 0x2 0x4 0x8 0x10 0x20 0x40 0x80 0x100 0x200 */ #define MARGOLIS_ODD_HV (MARGOLIS_ODD | ((x&1)<<8) | ((y&1)<<9)) #define MARGOLIS_EVEN_HV (MARGOLIS_EVEN | ((x&1)<<8) | ((y&1)<<9)) if (cam->phase) { CAM_TABLE_LOOP(MARGOLIS_ODD_HV) } else { CAM_TABLE_LOOP(MARGOLIS_EVEN_HV) } } void n_life(Cam *cam) { int s; #define LIFE ( \ ((CENTER&1) ? (((s = SUM8) == 2) || (s == 3)) \ : (SUM8 == 3)) | \ (CENTER<<1) \ ) CAM_LOOP(LIFE) } void n_brain(Cam *cam) { int s; #define BRAIN ( \ (((((s = CENTER)&3) == 0) && (SUM8 == 2)) ? 1 : 0) | \ (s<<1) \ ) CAM_LOOP(BRAIN) } void n_heat(Cam *cam) { int frob = cam->frob; #define HEAT ( \ ((QUAD)(NORTHWEST + NORTH + NORTHEAST + \ WEST + EAST + \ SOUTHWEST + SOUTH + SOUTHEAST + frob)) >> 3 \ ) CAM_LOOP(HEAT) } void n_dheat(Cam *cam) { int frob = cam->frob; int last = 0; #define DHEAT \ last += NORTHWEST + NORTH + NORTHEAST + \ WEST + frob + EAST + \ SOUTHWEST + SOUTH + SOUTHEAST; \ *front = last >> 3; \ last &= 7; CAM_LOOP_BODY(DHEAT) } void n_lheat(Cam *cam) { int frob = cam->frob; #define LHEAT ( \ ((QUAD)(NORTH + WEST + EAST + SOUTH + frob)) >> 2 \ ) CAM_LOOP(LHEAT) } void n_ldheat(Cam *cam) { int frob = cam->frob; int last; /* I meant to do that! */ #define LDHEAT ( \ ((last = (QUAD)(NORTH + WEST + EAST + SOUTH + frob \ + (last&0x03))), last >> 2) \ ) CAM_LOOP(LDHEAT) } void n_abdheat(Cam *cam) { int frob = cam->frob; int lasta = 0, lastb = 0; /* I meant to do that! */ #define YUM(x) (((QUAD)(x))&0x0f) #define YUK(x) (((QUAD)(x))&0xf0) #define ABDHEAT ( \ (lasta = (QUAD)(YUM(NORTHWEST) + YUM(NORTH) + YUM(NORTHEAST) + \ YUM(WEST) + YUM(EAST) + \ YUM(SOUTHWEST) + YUM(SOUTH) + YUM(SOUTHEAST) + \ frob + (lasta&0x07))), \ (lastb = (QUAD)(YUK(NORTHWEST) + YUK(NORTH) + YUK(NORTHEAST) + \ YUK(WEST) + YUK(EAST) + \ YUK(SOUTHWEST) + YUK(SOUTH) + YUK(SOUTHEAST) + \ (frob<<4) + (lastb&0x70))), \ (((lasta>>3)&0x0f) | ((lastb>>3)&0xf0)) \ ) CAM_LOOP(ABDHEAT) } void n_abcdheat(Cam *cam) { int last; int frob = cam->frob; CAM_LOOP(HEAT) } void n_edheat(Cam *cam) { int frob = cam->frob; int last = 0; #define EDHEAT ( \ (last = (QUAD)(YUM(NORTHWEST) + YUM(NORTH) + YUM(NORTHEAST) + \ YUM(WEST) + YUM(EAST) + \ YUM(SOUTHWEST) + YUM(SOUTH) + YUM(SOUTHEAST) + \ frob + (last&0x07))), \ (((last>>3)&0x0f) | ((CENTER<<4)&0xf0)) \ ) CAM_LOOP(EDHEAT) } int ranch(QUAD l0, QUAD l1, QUAD l2) { int s = SUM8; int v = SUM9p(1); int o = 0; o = (CENTER&4)<<1; if (v < 4 || v == 5) { o |= 0x04; } else { } return (o); } void n_ranch(Cam *cam) { #define RANCH ranch(l0, l1, l2) CAM_LOOP(RANCH) } void n_anneal(Cam *cam) { int s; #define ANNEAL ( \ ((s = SUM9) > 5) || (s == 4) \ ) CAM_LOOP(ANNEAL) } void n_anneal4(Cam *cam) { int s; #define ANNEAL4 ( \ ((((s = SUM9p(0)) > 5) || (s == 4)) ? 1 : 0) | \ ((((s = SUM9p(1)) > 5) || (s == 4)) ? 2 : 0) | \ ((((s = SUM9p(2)) > 5) || (s == 4)) ? 4 : 0) | \ ((((s = SUM9p(3)) > 5) || (s == 4)) ? 8 : 0) | \ (CENTER << 4) \ ) CAM_LOOP(ANNEAL4) } void n_anneal8(Cam *cam) { int s; #define ANNEAL8 ( \ ((((s = SUM9p(0)) > 5) || (s == 4)) ? 1 : 0) | \ ((((s = SUM9p(1)) > 5) || (s == 4)) ? 2 : 0) | \ ((((s = SUM9p(2)) > 5) || (s == 4)) ? 4 : 0) | \ ((((s = SUM9p(3)) > 5) || (s == 4)) ? 8 : 0) | \ ((((s = SUM9p(4)) > 5) || (s == 4)) ? 16 : 0) | \ ((((s = SUM9p(5)) > 5) || (s == 4)) ? 32 : 0) | \ ((((s = SUM9p(6)) > 5) || (s == 4)) ? 64 : 0) | \ ((((s = SUM9p(7)) > 5) || (s == 4)) ? 128 : 0) \ ) CAM_LOOP(ANNEAL8) } void n_eco(Cam *cam) { int s; #define ANTILIFE ( \ ((CENTER&1) ? (SUM8 != 5) \ : (((s = SUM8) != 5) && (s != 6))) | \ (CENTER<<1) \ ) #define ECO ( \ (((s = SUM9p(7)) > 5) || (s == 4) ? 128 : 0) | \ ((CENTER&128) ? ((ANTILIFE)&127) : ((BRAIN)&127)) \ ) CAM_LOOP(ECO) } void n_torben(Cam *cam) { int s; /* 0 0 0 1 0 1 0 1 1 1 */ #define TORBEN ( \ (CENTER << 1) | ((((s = SUM9) > 6) || (s == 5) || (s == 3)) ? 1 : 0) \ ) CAM_LOOP(TORBEN) } void n_torben2(Cam *cam) { int s; /* 0 0 0 1 0 1 0 1 1 1 */ /* 0 0 1 0 1 0 1 0 1 1 */ #define TORBEN2 ( \ TORBEN | (CENTER <<1) \ ) CAM_LOOP(TORBEN2) } void n_torben3(Cam *cam) { int s; /* 0 0 0 1 1 0 0 1 1 1 */ #define TORBEN3 ( \ ((s = SUM9) > 6) || (s == 3) || (s == 4) \ ) CAM_LOOP(TORBEN3) } void n_torben4(Cam *cam) { int s; /* 0 0 0 1 0 1 0 1 1 1 */ /* 0 0 1 0 1 0 1 0 1 1 */ #define TORBEN4 ( \ TORBEN3 | (CENTER <<1) \ ) CAM_LOOP(TORBEN4) } void n_ball(Cam *cam) { char p = (cam->phase ? 1 : 0); int x, y, r = Rand16(); int backline = cam->back->line_bytes, frontline = cam->front->line_bytes; Byte *back = cam->back->mem, *front = cam->front->mem; if (!p) { back += 1 + backline; } for (y = p + (cam->height >>1); y > 0; y--) { for (x = p + (cam->width >>1); x > 0; x--) { Byte nw = back[0], ne = back[1], sw = back[backline], se = back[backline+1]; r += nw + ne + sw + sw; r >>= 1; switch ((nw&1) + (ne&1) + (sw&1) + (se&1)) { case 0: case 3: case 4: /* same */ back[0] = nw; back[1] = ne; back[backline] = sw; back[backline+1] = se; break; case 1: /* reflect */ back[0] = se; back[1] = sw; back[backline] = ne; back[backline+1] = nw; break; case 2: /* turn */ switch (((nw&1) <<3) | ((ne&1) <<2) | ((sw&1) <<1) | (se&1)) { case 6: case 9: if (r&1) { /* clockwise */ back[0] = sw; back[1] = nw; back[backline] = se; back[backline+1] = ne; } else { /* counterclockwise */ back[0] = ne; back[1] = se; back[backline] = nw; back[backline+1] = sw; } default: back[0] = nw; back[1] = ne; back[backline] = sw; back[backline+1] = se; break; } break; } back += 2; } back += backline + backline - cam->width - (2*p); } back = cam->back->mem + backline + 1, front = cam->front->mem; for (y = cam->height; y > 0; y--) { memcpy(front, back, cam->width); back += backline; front += frontline; } } void n_logic(Cam *cam) { char p = (cam->phase ? 1 : 0); int x, y; int backline = cam->back->line_bytes, frontline = cam->front->line_bytes; Byte tmp; Byte *back = cam->back->mem, *front = cam->front->mem; /* bit 8 is center' */ /* bit 7 is center */ if (cam->phase) { back += 1 + backline; front += 1 + frontline; } for (y = cam->height >>1; y > 0; y--) { for (x = cam->width >>1; x > 0; x--) { Byte nw = back[0], ne = back[1], sw = back[backline], se = back[backline+1]; switch (((nw&128) >>4) | ((ne&128) >>5) | ((sw&128) >>6) | ((se&128) >>7)) { case 0: break; case 1: break; case 2: break; case 3: break; case 4: break; case 5: break; case 6: break; case 7: break; case 8: break; case 9: break; case 10: break; case 11: break; case 12: break; case 13: break; case 14: break; case 15: tmp = nw; nw = se; se = tmp; tmp = sw; ne = sw; sw = tmp; break; } back += 2; front += 2; } back += backline + backline - cam->width; front += frontline + frontline - cam->width; } back = cam->back->mem + backline + 1, front = cam->front->mem; for (y = cam->height; y > 0; y--) { memcpy(front, back, cam->width); back += backline; front += frontline; } } void n_party(Cam *cam) { #define PARTY (CENTER ^ NORTH ^ SOUTH ^ EAST ^ WEST) CAM_LOOP(PARTY) } vf neighborhoods[] = { /* 0 1 2 3 */ &n_moore_a, &n_moore_a, &n_moore_ab, &n_vonn_neumann, /* 4 5 6 */ &n_margolis, &n_margolis_ph, &n_margolis_hv, /* 7 8 9 10 11 12 */ &n_life, &n_brain, &n_heat, &n_dheat, &n_lheat, &n_ldheat, /* 13 14 15 16 17 */ &n_ranch, &n_anneal, &n_anneal4, &n_anneal8, &n_eco, /* 18 19 20 21 22 */ &n_abdheat, &n_edheat, &n_abcdheat, &n_torben, &n_torben2, /* 23 24 25 26 27 */ &n_torben3, &n_torben4, &n_ball, &n_logic, &n_party }; cam_set_neighborhood(Cam *cam, int code) { cam->neighborhood = neighborhoods[code]; } cam_load_rule(Cam *cam, char *filename) { FILE *fp; QUAD magic, neighborhood, rule_size; Byte *rule; if ((fp = fopen(filename, "r")) == NULL) { fprintf(stderr, "cam: Can't open rule file \"%s\"\n", filename); return; } /* XXX: Make this byte order independent!!! */ #if defined(MSDOS) || defined(OSF1) || defined(IS_INTEL) #define SWAPQUAD(x) ((x = ((x <<24) & 0xff000000) | \ ((x <<8) & 0x00ff0000) | \ ((x >>8) & 0x0000ff00) | \ ((x >>24) & 0x000000ff)), 0) #else #define SWAPQUAD(x) 0 #endif if ((fread(&magic, 1, sizeof(QUAD), fp) != sizeof(QUAD)) || SWAPQUAD(magic) || (magic != 0xcac0cac0) || (fread(&neighborhood, 1, sizeof(QUAD), fp) != sizeof(QUAD)) || SWAPQUAD(neighborhood) || (fread(&rule_size, 1, sizeof(QUAD), fp) != sizeof(QUAD)) || SWAPQUAD(rule_size) || ((rule = (Byte *)malloc(rule_size)) == NULL) || (fread(rule, 1, rule_size, fp) != rule_size)) { fprintf(stderr, "cam: Bad rule file \"%s\"\n", filename); fclose(fp); return; } fclose(fp); if (cam->rule != NULL) free(cam->rule); cam->rule = rule; cam->rule_size = rule_size; cam_set_neighborhood(cam, neighborhood); } Cam * find_cam(SimCam *scam, int x, int y) { Cam *cam; for (cam = scam->cam_list; cam != NULL; cam = cam->next) { if ((x >= cam->x) && (y >= cam->y) && (x < cam->x + cam->width) && (y < cam->y + cam->height)) { break; } } return cam; } Cam * find_cam_by_name(SimCam *scam, char *name) { Cam *cam; for (cam = scam->cam_list; cam != NULL; cam = cam->next) { if ((cam->name != NULL) && (strcmp(name, cam->name) == 0)) { return cam; } } return NULL; } Cam * get_cam_number(SimCam *scam, int i) { Cam *cam; for (cam = scam->cam_list; (i != 0) && (cam != NULL); (i--), (cam = cam->next)) ; return cam; } cam_layout(SimCam *scam) { int x, y, gap, border, maxwidth, lastmax; Cam *cam; border = 8; gap = 8; x = border; y = border; maxwidth = lastmax = gap; for (cam = scam->cam_list; cam != NULL; cam = cam->next) { cam->dx = 0; cam->dy = 0; if (cam->width > maxwidth) { lastmax = maxwidth; maxwidth = cam->width; } if (y + cam->height + border > scam->w_height) { y = border; x = x + maxwidth + gap; maxwidth = lastmax = gap; } if ((x + cam->width > scam->w_width) || (y + cam->height > scam->w_height)) { cam->x = 0; cam->y = 0; cam->front->mem = (Byte *)scam->data; maxwidth = lastmax; } else { cam->x = x; cam->y = y; cam->front->mem = scam->data + x + (scam->line_bytes * y); y = y + cam->height + gap; } } } init_scam(SimCam *scam) { scam_randomize(scam); } handle_scam(SimCam *scam) { Cam *cam; for (cam = scam->cam_list; cam != NULL; cam = cam->next) { cam_do_rule(scam, cam); } } #endif /* CAM */ micropolis-activity/src/sim/s_zone.c0000664000076400007640000003432310724145723020060 0ustar simcitysimcity/* s_zone.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" /* Zone Stuff */ DoZone(void) { short ZonePwrFlg; ZonePwrFlg = SetZPower(); /* Set Power Bit in Map from PowerMap */ if (ZonePwrFlg) PwrdZCnt++; else unPwrdZCnt++; if (CChr9 > PORTBASE) { /* do Special Zones */ DoSPZone(ZonePwrFlg); return; } if (CChr9 < HOSPITAL) { DoResidential(ZonePwrFlg); return; } if (CChr9 < COMBASE) { DoHospChur(); return; } if (CChr9 < INDBASE) { DoCommercial(ZonePwrFlg); return; } DoIndustrial(ZonePwrFlg); return; } DoHospChur(void) { if (CChr9 == HOSPITAL) { HospPop++; if (!(CityTime & 15)) RepairZone (HOSPITAL, 3); /*post*/ if (NeedHosp == -1) if (!Rand(20)) ZonePlop(RESBASE); } if (CChr9 == CHURCH) { ChurchPop++; if (!(CityTime & 15)) RepairZone (CHURCH, 3); /*post*/ if (NeedChurch == -1) if (!Rand(20)) ZonePlop(RESBASE); } } #define T 1 #define F 0 #define ASCBIT (ANIMBIT | CONDBIT | BURNBIT) #define REGBIT (CONDBIT | BURNBIT) SetSmoke(int ZonePower) { static short AniThis[8] = { T, F, T, T, F, F, T, T }; static short DX1[8] = { -1, 0, 1, 0, 0, 0, 0, 1 }; static short DY1[8] = { -1, 0, -1, -1, 0, 0, -1, -1 }; static short DX2[8] = { -1, 0, 1, 1, 0, 0, 1, 1 }; static short DY2[8] = { -1, 0, 0, -1, 0, 0, -1, 0 }; static short AniTabA[8] = { 0, 0, 32, 40, 0, 0, 48, 56 }; static short AniTabB[8] = { 0, 0, 36, 44, 0, 0, 52, 60 }; static short AniTabC[8] = { IND1, 0, IND2, IND4, 0, 0, IND6, IND8 }; static short AniTabD[8] = { IND1, 0, IND3, IND5, 0, 0, IND7, IND9 }; register short z; if (CChr9 < IZB) return; z = (CChr9 - IZB) >>3; z = z & 7; if (AniThis[z]) { int xx = SMapX + DX1[z]; int yy = SMapY + DY1[z]; if (TestBounds(xx, yy)) { if (ZonePower) { if ((Map[xx][yy] & LOMASK) == AniTabC[z]) { Map[xx][yy] = ASCBIT | (SMOKEBASE + AniTabA[z]); Map[xx][yy] = ASCBIT | (SMOKEBASE + AniTabB[z]); } } else { if ((Map[xx][yy] & LOMASK) > AniTabC[z]) { Map[xx][yy] = REGBIT | AniTabC[z]; Map[xx][yy] = REGBIT | AniTabD[z]; } } } } } DoIndustrial(int ZonePwrFlg) { short tpop, zscore, TrfGood; IndZPop++; SetSmoke(ZonePwrFlg); tpop = IZPop(CChr9); IndPop += tpop; if (tpop > Rand(5)) TrfGood = MakeTraf(2); else TrfGood = TRUE; if (TrfGood == -1) { DoIndOut(tpop, Rand16() & 1); return; } if (!(Rand16() & 7)) { zscore = IValve + EvalInd(TrfGood); if (!ZonePwrFlg) zscore = -500; if ((zscore > -350) && (((short)(zscore - 26380)) > ((short)Rand16Signed()))) { DoIndIn(tpop, Rand16() & 1); return; } if ((zscore < 350) && (((short)(zscore + 26380)) < ((short)Rand16Signed()))) DoIndOut(tpop, Rand16() & 1); } } DoCommercial(int ZonePwrFlg) { register short tpop, TrfGood; short zscore, locvalve,value; ComZPop++; tpop = CZPop(CChr9); ComPop += tpop; if (tpop > Rand(5)) TrfGood = MakeTraf(1); else TrfGood = TRUE; if (TrfGood == -1) { value = GetCRVal(); DoComOut(tpop, value); return; } if (!(Rand16() & 7)) { locvalve = EvalCom(TrfGood); zscore = CValve + locvalve; if (!ZonePwrFlg) zscore = -500; if (TrfGood && (zscore > -350) && (((short)(zscore - 26380)) > ((short)Rand16Signed()))) { value = GetCRVal(); DoComIn(tpop, value); return; } if ((zscore < 350) && (((short)(zscore + 26380)) < ((short)Rand16Signed()))) { value = GetCRVal(); DoComOut(tpop, value); } } } DoResidential(int ZonePwrFlg) { short tpop, zscore, locvalve, value, TrfGood; ResZPop++; if (CChr9 == FREEZ) tpop = DoFreePop(); else tpop = RZPop(CChr9); ResPop += tpop; if (tpop > Rand(35)) TrfGood = MakeTraf(0); else TrfGood = TRUE; if (TrfGood == -1) { value = GetCRVal(); DoResOut(tpop, value); return; } if ((CChr9 == FREEZ) || (!(Rand16() & 7))) { locvalve = EvalRes(TrfGood); zscore = RValve + locvalve; if (!ZonePwrFlg) zscore = -500; if ((zscore > -350) && (((short)(zscore - 26380)) > ((short)Rand16Signed()))) { if ((!tpop) && (!(Rand16() & 3))) { MakeHosp(); return; } value = GetCRVal(); DoResIn(tpop, value); return; } if ((zscore < 350) && (((short)(zscore + 26380)) < ((short)Rand16Signed()))) { value = GetCRVal(); DoResOut(tpop, value); } } } MakeHosp(void) { if (NeedHosp > 0) { ZonePlop(HOSPITAL - 4); NeedHosp = FALSE; return; } if (NeedChurch > 0) { ZonePlop(CHURCH - 4); NeedChurch = FALSE; return; } } GetCRVal(void) { register short LVal; LVal = LandValueMem[SMapX >>1][SMapY >>1]; LVal -= PollutionMem[SMapX >>1][SMapY >>1]; if (LVal < 30) return (0); if (LVal < 80) return (1); if (LVal < 150) return (2); return (3); } DoResIn(int pop, int value) { short z; z = PollutionMem[SMapX >>1][SMapY >>1]; if (z > 128) return; if (CChr9 == FREEZ) { if (pop < 8) { BuildHouse(value); IncROG(1); return; } if (PopDensity[SMapX >>1][SMapY >>1] > 64) { ResPlop(0, value); IncROG(8); return; } return; } if (pop < 40) { ResPlop((pop / 8) - 1, value); IncROG(8); } } DoComIn(int pop, int value) { register short z; z = LandValueMem[SMapX >>1][SMapY >>1]; z = z >>5; if (pop > z) return; if (pop < 5) { ComPlop(pop, value); IncROG(8); } } DoIndIn(int pop, int value) { if (pop < 4) { IndPlop(pop, value); IncROG(8); } } IncROG(int amount) { RateOGMem[SMapX>>3][SMapY>>3] += amount<<2; } DoResOut(int pop, int value) { static short Brdr[9] = {0,3,6,1,4,7,2,5,8}; register short x, y, loc, z; if (!pop) return; if (pop > 16) { ResPlop(((pop - 24) / 8), value); IncROG(-8); return; } if (pop == 16) { IncROG(-8); Map[SMapX][SMapY] = (FREEZ | BLBNCNBIT | ZONEBIT); for (x = SMapX - 1; x <= SMapX + 1; x++) for (y = SMapY - 1; y <= SMapY + 1; y++) if (x >= 0 && x < WORLD_X && y >= 0 && y < WORLD_Y) { if ((Map[x][y] & LOMASK) != FREEZ) Map[x][y] = LHTHR + value + Rand(2) + BLBNCNBIT; } } if (pop < 16) { IncROG(-1); z = 0; for (x = SMapX - 1; x <= SMapX + 1; x++) for (y = SMapY - 1; y <= SMapY + 1; y++) { if (x >= 0 && x < WORLD_X && y >= 0 && y < WORLD_Y) { loc = Map[x][y] & LOMASK; if ((loc >= LHTHR) && (loc <= HHTHR)) { Map[x][y] = Brdr[z] + BLBNCNBIT + FREEZ - 4; return; } } z++; } } } DoComOut(int pop, int value) { if (pop > 1) { ComPlop(pop - 2, value); IncROG(-8); return; } if (pop == 1) { ZonePlop(COMBASE); IncROG(-8); } } DoIndOut(int pop, int value) { if (pop > 1) { IndPlop(pop - 2, value); IncROG(-8); return; } if (pop == 1) { ZonePlop(INDCLR - 4); IncROG(-8); } } RZPop(int Ch9) { short CzDen; CzDen = (((Ch9 - RZB) / 9) % 4); return ((CzDen * 8) + 16); } CZPop(int Ch9) { short CzDen; if (Ch9 == COMCLR) return (0); CzDen = (((Ch9 - CZB) / 9) % 5) + 1; return (CzDen); } IZPop(int Ch9) { short CzDen; if (Ch9 == INDCLR) return (0); CzDen = (((Ch9 - IZB) / 9) % 4) + 1; return (CzDen); } BuildHouse(int value) { short z, score, hscore, BestLoc; static short ZeX[9] = { 0,-1, 0, 1,-1, 1,-1, 0, 1}; static short ZeY[9] = { 0,-1,-1,-1, 0, 0, 1, 1, 1}; BestLoc = 0; hscore = 0; for (z = 1; z < 9; z++) { int xx = SMapX + ZeX[z]; int yy = SMapY + ZeY[z]; if (TestBounds(xx, yy)) { score = EvalLot(xx, yy); if (score != 0) { if (score > hscore) { hscore = score; BestLoc = z; } if ((score == hscore) && !(Rand16() & 7)) BestLoc = z; } } } if (BestLoc) { int xx = SMapX + ZeX[BestLoc]; int yy = SMapY + ZeY[BestLoc]; if (TestBounds(xx, yy)) { Map[xx][yy] = HOUSE + BLBNCNBIT + Rand(2) + (value * 3); } } } ResPlop (int Den, int Value) { short base; base = (((Value * 4) + Den) * 9) + RZB - 4; ZonePlop(base); } ComPlop (int Den, int Value) { short base; base = (((Value * 5) + Den) * 9) + CZB - 4; ZonePlop(base); } IndPlop (int Den, int Value) { short base; base = (((Value * 4) + Den) * 9) + (IZB - 4); ZonePlop (base); } EvalLot (int x, int y) { short z, score; static short DX[4] = { 0, 1, 0,-1}; static short DY[4] = {-1, 0, 1, 0}; /* test for clear lot */ z = Map[x][y] & LOMASK; if (z && ((z < RESBASE) || (z > RESBASE + 8))) return (-1); score = 1; for (z = 0; z < 4; z++) { int xx = x + DX[z]; int yy = y + DY[z]; if (TestBounds(xx, yy) && Map[xx][yy] && ((Map[xx][yy] & LOMASK) <= LASTROAD)) { score++; /* look for road */ } } return (score); } ZonePlop (int base) { short z, x; static short Zx[9] = {-1, 0, 1,-1, 0, 1,-1, 0, 1}; static short Zy[9] = {-1,-1,-1, 0, 0, 0, 1, 1, 1}; for (z = 0; z < 9; z++) { /* check for fire */ int xx = SMapX + Zx[z]; int yy = SMapY + Zy[z]; if (TestBounds(xx, yy)) { x = Map[xx][yy] & LOMASK; if ((x >= FLOOD) && (x < ROADBASE)) return (FALSE); } } for (z = 0; z < 9; z++) { int xx = SMapX + Zx[z]; int yy = SMapY + Zy[z]; if (TestBounds(xx, yy)) { Map[xx][yy] = base + BNCNBIT; } base++; } CChr = Map[SMapX][SMapY]; SetZPower(); Map[SMapX][SMapY] |= ZONEBIT + BULLBIT; } EvalRes (int traf) { register short Value; if (traf < 0) return (-3000); Value = LandValueMem[SMapX >>1][SMapY >>1]; Value -= PollutionMem[SMapX >>1][SMapY >>1]; if (Value < 0) Value = 0; /* Cap at 0 */ else Value = Value <<5; if (Value > 6000) Value = 6000; /* Cap at 6000 */ Value = Value - 3000; return (Value); } EvalCom (int traf) { short Value; if (traf < 0) return (-3000); Value = ComRate[SMapX >>3][SMapY >>3]; return (Value); } EvalInd (int traf) { if (traf < 0) return (-1000); return (0); } DoFreePop (void) { short count; register short loc, x, y; count = 0; for (x = SMapX - 1; x <= SMapX + 1; x++) for (y = SMapY - 1; y <= SMapY + 1; y++) { if (x >= 0 && x < WORLD_X && y >= 0 && y < WORLD_Y) { loc = Map[x][y] & LOMASK; if ((loc >= LHTHR) && (loc <= HHTHR)) count++; } } return (count); } SetZPower(void) /* set bit in MapWord depending on powermap */ { short z; QUAD PowerWrd; /* TestPowerBit was taking alot of time so I inlined it. -Don */ #if 0 if (z = TestPowerBit()) Map[SMapX][SMapY] = CChr | PWRBIT; else Map[SMapX][SMapY] = CChr & (~PWRBIT); return (z); #else if ((CChr9 == NUCLEAR) || (CChr9 == POWERPLANT) || ( #if 1 (PowerWrd = POWERWORD(SMapX, SMapY)), #else (PowerWrd = (SMapX >>4) + (SMapY <<3)), #endif ((PowerWrd < PWRMAPSIZE) && (PowerMap[PowerWrd] & (1 << (SMapX & 15)))))) { Map[SMapX][SMapY] = CChr | PWRBIT; return 1; } else { Map[SMapX][SMapY] = CChr & (~PWRBIT); return 0; } #endif } micropolis-activity/src/sim/s_scan.c0000664000076400007640000003240710724145723020032 0ustar simcitysimcity/* s_scan.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" /* Map Updates */ short NewMap; short NewMapFlags[NMAPS]; short CCx, CCy, CCx2, CCy2; short PolMaxX, PolMaxY; short CrimeMaxX, CrimeMaxY; QUAD DonDither = 0; /* comefrom: Simulate SpecialInit */ FireAnalysis(void) /* Make firerate map from firestation map */ { register x,y; SmoothFSMap(); SmoothFSMap(); SmoothFSMap(); for (x = 0; x < SmX; x++) for (y = 0; y < SmY; y++) FireRate[x][y] = FireStMap[x][y]; NewMapFlags[DYMAP] = NewMapFlags[FIMAP] = 1; } /* comefrom: Simulate SpecialInit */ PopDenScan(void) /* sets: PopDensity, , , ComRate */ { QUAD Xtot, Ytot, Ztot; register short x, y, z; ClrTemArray(); Xtot = 0; Ytot = 0; Ztot = 0; for (x = 0; x < WORLD_X; x++) for (y = 0; y < WORLD_Y; y++) { z = Map[x][y]; if (z & ZONEBIT) { z = z & LOMASK; SMapX = x; SMapY = y; z = GetPDen(z) <<3; if (z > 254) z = 254; tem[x >>1][y >>1] = z; Xtot += x; Ytot += y; Ztot++; } } DoSmooth(); /* T1 -> T2 */ DoSmooth2(); /* T2 -> T1 */ DoSmooth(); /* T1 -> T2 */ for (x = 0; x < HWLDX; x++) for (y = 0; y < HWLDY; y++) PopDensity[x][y] = tem2[x][y] <<1; DistIntMarket(); /* set ComRate w/ (/ComMap) */ if (Ztot) { /* Find Center of Mass for City */ CCx = Xtot / Ztot; CCy = Ytot / Ztot; } else { CCx = HWLDX; /* if pop=0 center of Map is CC */ CCy = HWLDY; } CCx2 = CCx >>1; CCy2 = CCy >>1; NewMapFlags[DYMAP] = NewMapFlags[PDMAP] = NewMapFlags[RGMAP] = 1; } /* comefrom: PopDenScan */ GetPDen(int Ch9) { register int pop; if (Ch9 == FREEZ) { pop = DoFreePop(Ch9); return (pop); } if (Ch9 < COMBASE) { pop = RZPop(Ch9); return (pop); } if (Ch9 < INDBASE) { pop = (CZPop(Ch9) <<3); return (pop); } if (Ch9 < PORTBASE) { pop = (IZPop(Ch9) <<3); return (pop); } return (0); } /* comefrom: Simulate SpecialInit */ PTLScan(void) /* Does pollution, terrain, land value */ { QUAD ptot, LVtot; register int x, y, z, dis; int Plevel, LVflag, loc, zx, zy, Mx, My, pnum, LVnum, pmax; for (x = 0; x < QWX; x++) for (y = 0; y < QWY; y++) Qtem[x][y] = 0; LVtot = 0; LVnum = 0; for (x = 0; x < HWLDX; x++) for (y = 0; y < HWLDY; y++) { Plevel = 0; LVflag = 0; zx = x <<1; zy = y <<1; for (Mx = zx; Mx <= zx + 1; Mx++) for (My = zy; My <= zy + 1; My++) { if (loc = (Map[Mx][My] & LOMASK)) { if (loc < RUBBLE) { Qtem[x >>1][y >>1] += 15; /* inc terrainMem */ continue; } Plevel += GetPValue(loc); if (loc >= ROADBASE) LVflag++; } } /* XXX ??? if (Plevel < 0) Plevel = 250; */ if (Plevel > 255) Plevel = 255; tem[x][y] = Plevel; if (LVflag) { /* LandValue Equation */ dis = 34 - GetDisCC(x, y); dis = dis <<2; dis += (TerrainMem[x >>1][y >>1] ); dis -= (PollutionMem[x][y]); if (CrimeMem[x][y] > 190) dis -= 20; if (dis > 250) dis = 250; if (dis < 1) dis = 1; LandValueMem[x][y] = dis; LVtot += dis; LVnum++; } else LandValueMem[x][y] = 0; } if (LVnum) LVAverage = LVtot / LVnum; else LVAverage = 0; DoSmooth(); DoSmooth2(); pmax = 0; pnum = 0; ptot = 0; for (x = 0; x < HWLDX; x++) { for (y = 0; y < HWLDY; y++) { z = tem[x][y]; PollutionMem[x][y] = z; if (z) { /* get pollute average */ pnum++; ptot += z; /* find max pol for monster */ if ((z > pmax) || ((z == pmax) && (!(Rand16() & 3)))) { pmax = z; PolMaxX = x <<1; PolMaxY = y <<1; } } } } if (pnum) PolluteAverage = ptot / pnum; else PolluteAverage = 0; SmoothTerrain(); NewMapFlags[DYMAP] = NewMapFlags[PLMAP] = NewMapFlags[LVMAP] = 1; } /* comefrom: PTLScan */ GetPValue(int loc) { if (loc < POWERBASE) { if (loc >= HTRFBASE) return (/* 25 */ 75); /* heavy traf */ if (loc >= LTRFBASE) return (/* 10 */ 50); /* light traf */ if (loc < ROADBASE) { if (loc > FIREBASE) return (/* 60 */ 90); /* XXX: Why negative pollution from radiation? */ if (loc >= RADTILE) return (/* -40 */ 255); /* radioactivity */ } return (0); } if (loc <= LASTIND) return (0); if (loc < PORTBASE) return (50); /* Ind */ if (loc <= LASTPOWERPLANT) return (/* 60 */ 100); /* prt, aprt, cpp */ return (0); } /* comefrom: PTLScan DistIntMarket */ GetDisCC(int x, int y) { short xdis, ydis, z; if (x > CCx2) xdis = x - CCx2; else xdis = CCx2 - x; if (y > CCy2) ydis = y - CCy2; else ydis = CCy2 - y; z = (xdis + ydis); if (z > 32) return (32); else return (z); } /* comefrom: Simulate SpecialInit */ CrimeScan(void) { short numz; QUAD totz; register short x, y, z; short cmax; SmoothPSMap(); SmoothPSMap(); SmoothPSMap(); totz = 0; numz = 0; cmax = 0; for (x = 0; x < HWLDX; x++) for (y = 0; y < HWLDY; y++) { if (z = LandValueMem[x][y]) { ++numz; z = 128 - z; z += PopDensity[x][y]; if (z > 300) z = 300; z -= PoliceMap[x >>2][y >>2]; if (z > 250) z = 250; if (z < 0) z = 0; CrimeMem[x][y] = z; totz += z; if ((z > cmax) || ((z == cmax) && (!(Rand16() & 3)))) { cmax = z; CrimeMaxX = x <<1; CrimeMaxY = y <<1; } } else { CrimeMem[x][y] = 0; } } if (numz) CrimeAverage = totz / numz; else CrimeAverage = 0; for (x = 0; x < SmX; x++) for (y = 0; y < SmY; y++) PoliceMapEffect[x][y] = PoliceMap[x][y]; NewMapFlags[DYMAP] = NewMapFlags[CRMAP] = NewMapFlags[POMAP] = 1; } /* comefrom: PTLScan */ SmoothTerrain(void) { if (DonDither & 1) { register int x, y = 0, z = 0, dir = 1; for (x = 0; x < QWX; x++) { for (; y != QWY && y != -1; y += dir) { z += Qtem[(x == 0) ? x : (x - 1)][y] + Qtem[(x == (QWX - 1)) ? x : (x + 1)][y] + Qtem[x][(y == 0) ? (0) : (y - 1)] + Qtem[x][(y == (QWY - 1)) ? y : (y + 1)] + (Qtem[x][y] <<2); TerrainMem[x][y] = (unsigned char)(((unsigned)z) >>3); z &= 0x7; } dir = -dir; y += dir; } } else { register short x,y,z; for (x = 0; x < QWX; x++) for (y = 0; y < QWY; y++) { z = 0; if (x > 0) z += Qtem[x - 1][y]; if (x < (QWX - 1)) z += Qtem[x + 1][y]; if (y > 0) z += Qtem[x][y - 1]; if (y < (QWY - 1)) z += Qtem[x][y + 1]; TerrainMem[x][y] = (unsigned char)((z >>2) + Qtem[x][y]) >>1; } } } /* comefrom: PopDenScan */ DoSmooth (void) /* smooths data in tem[x][y] into tem2[x][y] */ { if (DonDither & 2) { register int x, y = 0, z = 0, dir = 1; for (x = 0; x < HWLDX; x++) { for (; y != HWLDY && y != -1; y += dir) { /* z += tem[(x == 0) ? x : (x - 1)][y] + tem[(x == (HWLDX - 1)) ? x : (x + 1)][y] + tem[x][(y == 0) ? (0) : (y - 1)] + tem[x][(y == (HWLDY - 1)) ? y : (y + 1)] + tem[x][y]; tem2[x][y] = (unsigned char)(((unsigned int)z) >>2); z &= 0x3; */ z += tem[(x == 0) ? x : (x - 1)][y] + tem[(x == (HWLDX - 1)) ? x : (x + 1)][y] + tem[x][(y == 0) ? (0) : (y - 1)] + tem[x][(y == (HWLDY - 1)) ? y : (y + 1)] + tem[x][y]; tem2[x][y] = (unsigned char)(((unsigned int)z) >>2); z &= 3; } dir = -dir; y += dir; } } else { register short x,y,z; for (x = 0; x < HWLDX; x++) { for (y = 0; y < HWLDY; y++) { z = 0; if (x > 0) z += tem[x - 1][y]; if (x < (HWLDX - 1)) z += tem[x + 1][y]; if (y > 0) z += tem[x][y - 1]; if (y < (HWLDY - 1)) z += tem[x][y + 1]; z = (z + tem[x][y]) >>2; if (z > 255) z = 255; tem2[x][y] = (unsigned char)z; } } } } /* comefrom: PopDenScan */ DoSmooth2 (void) /* smooths data in tem2[x][y] into tem[x][y] */ { if (DonDither & 4) { register int x, y = 0, z = 0, dir = 1; for (x = 0; x < HWLDX; x++) { for (; y != HWLDY && y != -1; y += dir) { /* z += tem2[(x == 0) ? x : (x - 1)][y] + tem2[(x == (HWLDX - 1)) ? x : (x + 1)][y] + tem2[x][(y == 0) ? (0) : (y - 1)] + tem2[x][(y == (HWLDY - 1)) ? y : (y + 1)] + tem2[x][y]; tem[x][y] = (unsigned char)(z >>2); z &= 0x3; */ z += tem2[(x == 0) ? x : (x - 1)][y] + tem2[(x == (HWLDX - 1)) ? x : (x + 1)][y] + tem2[x][(y == 0) ? (0) : (y - 1)] + tem2[x][(y == (HWLDY - 1)) ? y : (y + 1)] + tem2[x][y]; tem[x][y] = (unsigned char)(((unsigned char)z) >>2); z &= 3; } dir = -dir; y += dir; } } else { register short x,y,z; for (x = 0; x < HWLDX; x++) { for (y = 0; y < HWLDY; y++) { z = 0; if (x > 0) z += tem2[x - 1][y]; if (x < (HWLDX - 1)) z += tem2[x + 1][y]; if (y > 0) z += tem2[x][y - 1]; if (y < (HWLDY - 1)) z += tem2[x][y + 1]; z = (z + tem2[x][y]) >>2; if (z > 255) z = 255; tem[x][y] = (unsigned char)z; } } } } /* comefrom: PopDenScan */ ClrTemArray(void) { register short x, y, z; z = 0; for (x = 0; x < HWLDX; x++) for (y = 0; y < HWLDY; y++) tem[x][y] = z; } /* comefrom: FireAnalysis */ SmoothFSMap(void) { register short x, y, edge; for (x = 0; x < SmX; x++) for (y = 0; y < SmY; y++) { edge = 0; if (x) edge += FireStMap[x - 1][y]; if (x < (SmX - 1)) edge += FireStMap[x + 1][y]; if (y) edge += FireStMap[x][y - 1]; if (y < (SmY - 1)) edge += FireStMap[x][y + 1]; edge = (edge >>2) + FireStMap[x][y]; STem[x][y] = edge >>1; } for (x = 0; x < SmX; x++) for (y = 0; y < SmY; y++) FireStMap[x][y] = STem[x][y]; } /* comefrom: CrimeScan */ SmoothPSMap(void) { register x, y, edge; for (x = 0; x < SmX; x++) for (y = 0; y < SmY; y++) { edge = 0; if (x) edge += PoliceMap[x - 1][y]; if (x < (SmX - 1)) edge += PoliceMap[x + 1][y]; if (y) edge += PoliceMap[x][y - 1]; if (y < (SmY - 1)) edge += PoliceMap[x][y + 1]; edge = (edge >>2) + PoliceMap[x][y]; STem[x][y] = edge >>1; } for (x = 0; x < SmX; x++) for (y = 0; y < SmY; y++) PoliceMap[x][y] = STem[x][y]; } /* comefrom: PopDenScan */ DistIntMarket(void) { register short x, y, z; for (x = 0; x < SmX; x++) for (y = 0; y < SmY; y++) { z = GetDisCC(x <<2,y <<2); z = z <<2; z = 64 - z; ComRate[x][y] = z; } } micropolis-activity/src/sim/w_resrc.c0000664000076400007640000001372110724145723020226 0ustar simcitysimcity/* w_resrc.c: Get resources (from files) * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" #ifdef MSDOS #define PATHSTR "%s\\%c%c%c%c.%d" #define PERMSTR "rb" #else #define PATHSTR "%s/%c%c%c%c.%d" #define PERMSTR "r" #endif char *HomeDir, *ResourceDir, *KeyDir, *HostName; struct Resource *Resources = NULL; struct StringTable { QUAD id; int lines; char **strings; struct StringTable *next; } *StringTables; Handle GetResource(char *name, QUAD id) { struct Resource *r = Resources; char fname[256]; struct stat st; FILE *fp = NULL; while (r != NULL) { if ((r->id == id) && (strncmp(r->name, name, 4) == 0)) { return ((Handle)&r->buf); } r = r->next; } r = (struct Resource *)ckalloc(sizeof(struct Resource)); r->name[0] = name[0]; r->name[1] = name[1]; r->name[2] = name[2]; r->name[3] = name[3]; r->id = id; sprintf(fname, PATHSTR, ResourceDir, r->name[0], r->name[1], r->name[2], r->name[3], r->id); if ((stat(fname, &st) < 0) || ((r->size = st.st_size) == 0) || ((r->buf = (char *)ckalloc(r->size)) == NULL) || ((fp = fopen(fname, PERMSTR)) == NULL) || (fread(r->buf, sizeof(char), r->size, fp) != r->size)) { if (fp) fclose(fp); r->buf = NULL; r->size = 0; fprintf(stderr, "Can't find resource file \"%s\"!\n", fname); perror("GetResource"); return(NULL); } fclose(fp); r->next = Resources; Resources = r; return ((Handle)&r->buf); } void ReleaseResource(Handle r) { } QUAD ResourceSize(Handle h) { struct Resource *r = (struct Resource *)h; return (r->size); } char * ResourceName(Handle h) { struct Resource *r = (struct Resource *)h; return (r->name); } QUAD ResourceID(Handle h) { struct Resource *r = (struct Resource *)h; return (r->id); } GetIndString(char *str, int id, short num) { struct StringTable **tp, *st = NULL; Handle h; tp = &StringTables; while (*tp) { if ((*tp)->id == id) { st = *tp; break; } tp = &((*tp)->next); } if (!st) { QUAD i, lines, size; char *buf; st = (struct StringTable *)ckalloc(sizeof (struct StringTable)); st->id = id; h = GetResource("stri", id); size = ResourceSize(h); buf = (char *)*h; for (i=0, lines=0; ilines = lines; st->strings = (char **)ckalloc(size * sizeof(char *)); for (i=0; istrings[i] = buf; buf += strlen(buf) + 1; } st->next = StringTables; StringTables = st; } if ((num < 1) || (num > st->lines)) { fprintf(stderr, "Out of range string index: %d\n", num); strcpy(str, "Well I'll be a monkey's uncle!"); } { strcpy(str, st->strings[num-1]); } } micropolis-activity/src/sim/w_eval.c0000664000076400007640000001436110724145723020040 0ustar simcitysimcity/* w_eval.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" char *cityClassStr[6] = { "VILLAGE", "TOWN", "CITY", "CAPITAL", "METROPOLIS", "MEGALOPOLIS" }; char *cityLevelStr[3] = { "Easy", "Medium", "Hard" }; char *probStr[10] = { "CRIME", "POLLUTION", "HOUSING COSTS", "TAXES", "TRAFFIC", "UNEMPLOYMENT", "FIRES" }; /* comefrom: DoSubUpDate scoreDoer */ doScoreCard(void) { char title[256], goodyes[32], goodno[32], prob0[32], prob1[32], prob2[32], prob3[32], pop[32], delta[32], assessed[32], assessed_dollars[32], score[32], changed[32]; /* send /EvaluationTitle /SetValue [ (titleStr year) ] */ /* send /GoodJobPercents /SetValue [ (CityYes%) (CityNo%) ] */ /* send /WorstProblemPercents /SetValue [ (ProblemVotes[0]%) ... ] */ /* send /WorstProblemNames /SetValue [ (probStr[ProblemOrder[0]) ... ] */ /* put ^chars around first problem name to make it bold */ /* send /Statistics /SetValue [ (CityPop) (deltaCityPop) () (CityAssValue) (cityClassStr[CityClass]) (cityLevelStr[GameLevel]) ] */ /* send /CurrentScore /SetValue [ (CityScore) ] */ /* send /AnnualChange /SetValue [ (deltaCityScore) ] */ sprintf(title, "City Evaluation %d", CurrentYear()); sprintf(goodyes, "%d%%", CityYes); sprintf(goodno, "%d%%", CityNo); sprintf(prob0, "%d%%", ProblemVotes[ProblemOrder[0]]); sprintf(prob1, "%d%%", ProblemVotes[ProblemOrder[1]]); sprintf(prob2, "%d%%", ProblemVotes[ProblemOrder[2]]); sprintf(prob3, "%d%%", ProblemVotes[ProblemOrder[3]]); sprintf(pop, "%d", CityPop); sprintf(delta, "%d", deltaCityPop); sprintf(assessed, "%d", CityAssValue); makeDollarDecimalStr(assessed, assessed_dollars); sprintf(score, "%d", CityScore); sprintf(changed, "%d", deltaCityScore); SetEvaluation(changed, score, ProblemVotes[ProblemOrder[0]] ? probStr[ProblemOrder[0]] : " ", ProblemVotes[ProblemOrder[1]] ? probStr[ProblemOrder[1]] : " ", ProblemVotes[ProblemOrder[2]] ? probStr[ProblemOrder[2]] : " ", ProblemVotes[ProblemOrder[3]] ? probStr[ProblemOrder[3]] : " ", ProblemVotes[ProblemOrder[0]] ? prob0 : " ", ProblemVotes[ProblemOrder[1]] ? prob1 : " ", ProblemVotes[ProblemOrder[2]] ? prob2 : " ", ProblemVotes[ProblemOrder[3]] ? prob3 : " ", pop, delta, assessed_dollars, cityClassStr[CityClass], cityLevelStr[GameLevel], goodyes, goodno, title); } ChangeEval() { EvalChanged = 1; } scoreDoer(void) { if (EvalChanged) { doScoreCard(); EvalChanged = 0; } } SetEvaluation(char *changed, char *score, char *ps0, char *ps1, char *ps2, char *ps3, char *pv0, char *pv1, char *pv2, char *pv3, char *pop, char *delta, char *assessed_dollars, char *cityclass, char *citylevel, char *goodyes, char *goodno, char *title) { char buf[2048]; sprintf(buf, "UISetEvaluation {%s} {%s} {%s} {%s} {%s} {%s} {%s} {%s} {%s} {%s} {%s} {%s} {%s} {%s} {%s} {%s} {%s} {%s}", changed, score, ps0, ps1, ps2, ps3, pv0, pv1, pv2, pv3, pop, delta, assessed_dollars, cityclass, citylevel, goodyes, goodno, title); Eval(buf); } micropolis-activity/src/sim/w_date.c0000664000076400007640000004342010724145723020024 0ustar simcitysimcity/* w_date.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" short NewDate = 0; Tcl_HashTable DateCmds; int DateUpdateTime = 200; #define DEF_DATE_FONT "-Adobe-Helvetica-Bold-R-Normal-*-140-*" #define DEF_DATE_BG_COLOR "#b0b0b0" #define DEF_DATE_BG_MONO "#ffffff" #define DEF_DATE_BORDER_WIDTH "2" #define DEF_DATE_PADY "1" #define DEF_DATE_PADX "1" #define DEF_DATE_WIDTH "0" #define DEF_DATE_MONTHTAB "7" #define DEF_DATE_YEARTAB "13" Tk_ConfigSpec DateConfigSpecs[] = { {TK_CONFIG_FONT, "-font", (char *) NULL, (char *) NULL, DEF_DATE_FONT, Tk_Offset(SimDate, fontPtr), 0}, {TK_CONFIG_BORDER, "-background", "background", "Background", DEF_DATE_BG_COLOR, Tk_Offset(SimDate, border), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-background", "background", "Background", DEF_DATE_BG_MONO, Tk_Offset(SimDate, border), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", DEF_DATE_BORDER_WIDTH, Tk_Offset(SimDate, borderWidth), 0}, {TK_CONFIG_PIXELS, "-padx", "padX", "Pad", DEF_DATE_PADX, Tk_Offset(SimDate, padX), 0}, {TK_CONFIG_PIXELS, "-pady", "padY", "Pad", DEF_DATE_PADY, Tk_Offset(SimDate, padY), 0}, {TK_CONFIG_INT, "-width", "width", "Width", DEF_DATE_WIDTH, Tk_Offset(SimDate, width), 0}, {TK_CONFIG_INT, "-monthtab", "monthtab", "MonthTab", DEF_DATE_MONTHTAB, Tk_Offset(SimDate, monthTab), 0}, {TK_CONFIG_INT, "-yeartab", "yeartab", "YearTab", DEF_DATE_YEARTAB, Tk_Offset(SimDate, yearTab), 0}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; XDisplay *FindXDisplay(); static void DisplaySimDate(ClientData clientData) { SimDate *date = (SimDate *) clientData; Tk_Window tkwin = date->tkwin; Pixmap pm = None; Drawable d; date->flags &= ~VIEW_REDRAW_PENDING; //fprintf(stderr, "DisplaySimDate cleared VIEW_REDRAW_PENDING\n"); assert(date->draw_date_token != 0); if (date->draw_date_token != 0) { // Tk_DeleteTimerHandler(date->draw_date_token); date->draw_date_token = 0; } if (date->visible && (tkwin != NULL) && Tk_IsMapped(tkwin)) { DoUpdateDate(date); } } void DestroySimDate(ClientData clientData) { SimDate *date = (SimDate *) clientData; DestroyDate(date); } EventuallyRedrawDate(SimDate *date) { if (!(date->flags & VIEW_REDRAW_PENDING)) { assert(date->draw_date_token == 0); if (date->draw_date_token == 0) { date->draw_date_token = Tk_CreateTimerHandler( DateUpdateTime, DisplaySimDate, (ClientData) date); date->flags |= VIEW_REDRAW_PENDING; //fprintf(stderr, "EventuallyRedrawDate set VIEW_REDRAW_PENDING\n"); } } } void SimDateEventProc(ClientData clientData, XEvent *eventPtr) { SimDate *date = (SimDate *) clientData; if ((eventPtr->type == Expose) && (eventPtr->xexpose.count == 0)) { date->visible = 1; EventuallyRedrawDate(date); } else if (eventPtr->type == MapNotify) { date->visible = 1; } else if (eventPtr->type == UnmapNotify) { date->visible = 0; } else if (eventPtr->type == VisibilityNotify) { if (eventPtr->xvisibility.state == VisibilityFullyObscured) date->visible = 0; else date->visible = 1; } else if (eventPtr->type == ConfigureNotify) { DoResizeDate(date, eventPtr->xconfigure.width, eventPtr->xconfigure.height); EventuallyRedrawDate(date); } else if (eventPtr->type == DestroyNotify) { Tcl_DeleteCommand(date->interp, Tk_PathName(date->tkwin)); date->tkwin = NULL; if (date->flags & VIEW_REDRAW_PENDING) { assert(date->draw_date_token != 0); if (date->draw_date_token != 0) { Tk_DeleteTimerHandler(date->draw_date_token); date->draw_date_token = 0; } date->flags &= ~VIEW_REDRAW_PENDING; //fprintf(stderr, "SimDateEventProc cleared VIEW_REDRAW_PENDING\n"); } Tk_EventuallyFree((ClientData) date, DestroySimDate); } } static void ComputeDateGeometry(SimDate *date) { XCharStruct bbox; int dummy; unsigned int width, height; int charWidth; XTextExtents(date->fontPtr, "0", 1, &dummy, &dummy, &dummy, &bbox); charWidth = (bbox.lbearing + bbox.rbearing); if (date->width == 0) { char *maxString = "Date: MMM 1000000"; int maxStringLength = strlen(maxString); XTextExtents(date->fontPtr, maxString, maxStringLength, &dummy, &dummy, &dummy, &bbox); width = bbox.lbearing + bbox.rbearing; } else { width = date->width * charWidth; } height = date->fontPtr->ascent + date->fontPtr->descent; width += 2 * date->padX; height += 2 * date->padY; Tk_GeometryRequest( date->tkwin, (int) (width + (2 * date->borderWidth) + 2), (int) (height + (2 * date->borderWidth) + 2)); Tk_SetInternalBorder( date->tkwin, date->borderWidth); date->yearTabX = date->yearTab * charWidth; date->monthTabX = date->monthTab * charWidth; } int DateCmdconfigure(DATE_ARGS) { int result = TCL_OK; if (argc == 2) { result = Tk_ConfigureInfo(interp, date->tkwin, DateConfigSpecs, (char *) date, (char *) NULL, 0); } else if (argc == 3) { result = Tk_ConfigureInfo(interp, date->tkwin, DateConfigSpecs, (char *) date, argv[2], 0); } else { result = ConfigureSimDate(interp, date, argc-2, argv+2, TK_CONFIG_ARGV_ONLY); } return TCL_OK; } int DateCmdposition(DATE_ARGS) { int result = TCL_OK; if ((argc != 2) && (argc != 4)) { return TCL_ERROR; } if (argc == 4) { if ((Tcl_GetInt(interp, argv[2], &date->w_x) != TCL_OK) || (Tcl_GetInt(interp, argv[3], &date->w_y) != TCL_OK)) { return TCL_ERROR; } } sprintf(interp->result, "%d %d", date->w_x, date->w_y); return TCL_OK; } int DateCmdsize(DATE_ARGS) { if ((argc != 2) && (argc != 4)) { return TCL_ERROR; } if (argc == 4) { int w, h; if (Tcl_GetInt(interp, argv[2], &w) != TCL_OK) { return TCL_ERROR; } if (Tcl_GetInt(interp, argv[3], &h) != TCL_OK) { return TCL_ERROR; } date->w_width = w; date->w_height = h; } sprintf(interp->result, "%d %d", date->w_width, date->w_height); return TCL_OK; } int DateCmdVisible(DATE_ARGS) { int visible; if ((argc != 2) && (argc != 3)) { Tcl_AppendResult(interp, "wrong # args", (char *) NULL); return TCL_ERROR; } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &visible) != TCL_OK) || (visible < 0) || (visible > 1)) { Tcl_AppendResult(interp, " bogus args", (char *) NULL); return TCL_ERROR; } date->visible = visible; } sprintf(interp->result, "%d", date->visible); return TCL_OK; } int DateCmdReset(DATE_ARGS) { int range; if (argc != 2) { Tcl_AppendResult(interp, "wrong # args", (char *) NULL); return TCL_ERROR; } date->reset = 1; // ComputeDateGeometry(date); // ??? EventuallyRedrawDate(date); return TCL_OK; } int DateCmdSet(DATE_ARGS) { int range; if (argc != 4) { Tcl_AppendResult(interp, "wrong # args", (char *) NULL); return TCL_ERROR; } if ((Tcl_GetInt(interp, argv[2], &date->month) != TCL_OK) || (date->month < 0) || (date->month >= 12)) { Tcl_AppendResult(interp, " bogus args", (char *) NULL); return TCL_ERROR; } if ((Tcl_GetInt(interp, argv[3], &date->year) != TCL_OK) || (date->year < 0)) { Tcl_AppendResult(interp, " bogus args", (char *) NULL); return TCL_ERROR; } // ComputeDateGeometry(date); // ??? EventuallyRedrawDate(date); return TCL_OK; } int DoDateCmd(CLIENT_ARGS) { SimDate *date = (SimDate *) clientData; Tcl_HashEntry *ent; int result = TCL_OK; int (*cmd)(); if (argc < 2) { return TCL_ERROR; } if (ent = Tcl_FindHashEntry(&DateCmds, argv[1])) { cmd = (int (*)())ent->clientData; Tk_Preserve((ClientData) date); result = cmd(date, interp, argc, argv); Tk_Release((ClientData) date); } else { Tcl_AppendResult(interp, "unknown command name: \"", argv[0], " ", argv[1], "\".", (char *) NULL); result = TCL_ERROR; } return result; } int DateViewCmd(CLIENT_ARGS) { SimDate *date; Tk_Window tkwin = (Tk_Window) clientData; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " pathName ?options?\"", (char *) NULL); return TCL_ERROR; } tkwin = Tk_CreateWindowFromPath(interp, tkwin, argv[1], (char *) NULL); if (tkwin == NULL) { return TCL_ERROR; } date = (SimDate *)ckalloc(sizeof (SimDate)); date->tkwin = tkwin; date->interp = interp; date->flags = 0; date->reset = 1; date->month = 0; date->year = 0; date->lastmonth = 0; date->lastyear = 0; Tk_SetClass(date->tkwin, "DateView"); Tk_CreateEventHandler(date->tkwin, VisibilityChangeMask | ExposureMask | StructureNotifyMask, SimDateEventProc, (ClientData) date); Tcl_CreateCommand(interp, Tk_PathName(date->tkwin), DoDateCmd, (ClientData) date, (void (*)()) NULL); /* Tk_MakeWindowExist(date->tkwin); */ if (getenv("XSYNCHRONIZE") != NULL) { XSynchronize(Tk_Display(tkwin), 1); } InitNewDate(date); DoNewDate(date); if (ConfigureSimDate(interp, date, argc-2, argv+2, 0) != TCL_OK) { /* XXX: destroy date */ Tk_DestroyWindow(date->tkwin); return TCL_ERROR; } interp->result = Tk_PathName(date->tkwin); return TCL_OK; } int ConfigureSimDate(Tcl_Interp *interp, SimDate *date, int argc, char **argv, int flags) { if (Tk_ConfigureWidget(interp, date->tkwin, DateConfigSpecs, argc, argv, (char *) date, flags) != TCL_OK) { return TCL_ERROR; } Tk_SetBackgroundFromBorder(date->tkwin, date->border); ComputeDateGeometry(date); EventuallyRedrawDate(date); return TCL_OK; } date_command_init() { int new; Tcl_CreateCommand(tk_mainInterp, "dateview", DateViewCmd, (ClientData)MainWindow, (void (*)()) NULL); Tcl_InitHashTable(&DateCmds, TCL_STRING_KEYS); #define DATE_CMD(name) HASHED_CMD(Date, name) DATE_CMD(configure); DATE_CMD(position); DATE_CMD(size); DATE_CMD(Visible); DATE_CMD(Reset); DATE_CMD(Set); } InitNewDate(SimDate *date) { int d = 8; struct XDisplay *xd; date->next = NULL; /* This stuff was initialized in our caller (DateCmd) */ /* date->tkwin = NULL; */ /* date->interp = NULL; */ /* date->flags = 0; */ date->x = NULL; date->visible = 0; date->w_x = date->w_y = 0; date->w_width = date->w_height = 0; date->pixmap = None; date->pixels = NULL; date->fontPtr = NULL; date->border = NULL; date->borderWidth = 0; date->padX = 0; date->padY = 0; date->width = 0; date->monthTab = 0; date->monthTabX = 0; date->yearTab = 0; date->yearTabX = 0; date->draw_date_token = 0; date->reset = 1; date->year = 0; date->month = 0; date->lastyear = 0; date->lastmonth = 0; date->x = FindXDisplay(date->tkwin); IncRefDisplay(date->x); date->pixels = date->x->pixels; date->fontPtr = NULL; DoResizeDate(date, 16, 16); } DestroyDate(SimDate *date) { SimDate **gp; for (gp = &sim->date; (*gp) != NULL; gp = &((*gp)->next)) { if ((*gp) == date) { (*gp) = date->next; sim->dates--; break; } } if (date->pixmap != None) { XFreePixmap(date->x->dpy, date->pixmap); date->pixmap = None; } DecRefDisplay(date->x); ckfree((char *) date); } DoResizeDate(SimDate *date, int w, int h) { int resize = 0; date->w_width = w; date->w_height = h; if (date->pixmap != None) { XFreePixmap(date->x->dpy, date->pixmap); date->pixmap = None; } date->pixmap = XCreatePixmap(date->x->dpy, date->x->root, w, h, date->x->depth); if (date->pixmap == None) { fprintf(stderr, "Sorry, Micropolis can't create a pixmap on X display \"%s\".\n", date->x->display); sim_exit(1); // Just sets tkMustExit and ExitReturn return; } } DoNewDate(SimDate *date) { sim->dates++; date->next = sim->date; sim->date = date; NewDate = 1; } #define BORDER 1 DoUpdateDate(SimDate *date) { Display *dpy; GC gc; Pixmap pm; int *pix; int w, h, i, j, x, y; int tx, ty; float sx, sy; if (!date->visible) { return; } dpy = date->x->dpy; gc = date->x->gc; pm = date->pixmap; pix = date->pixels; w = date->w_width; h = date->w_height; XSetFont(date->x->dpy, date->x->gc, date->fontPtr->fid); #if 0 if (date->x->color) { XSetForeground(dpy, gc, pix[COLOR_LIGHTGRAY]); } else { XSetForeground(dpy, gc, pix[COLOR_WHITE]); } #else XSetForeground(dpy, gc, Tk_3DBorderColor(date->border)->pixel); #endif XFillRectangle(dpy, pm, gc, 0, 0, w, h); tx = BORDER; ty = BORDER; if ((w -= (2 * BORDER)) < 1) w = 1; if ((h -= (2 * BORDER)) < 1) h = 1; x = date->borderWidth + date->padX + 1; y = date->borderWidth + date->padY + date->fontPtr->ascent; if (date->reset) { date->reset = 0; date->lastyear = date->year; date->lastmonth = date->month; } { char *dateString = "Date:"; char yearString[256]; int month = date->month; int year = date->year; int lastmonth = date->lastmonth; int lastyear = date->lastyear; int yearsPassed; int monthsPassed; yearsPassed = (year - lastyear); if (yearsPassed < 0) yearsPassed = 1; if (yearsPassed > 9) yearsPassed = 9; monthsPassed = (month - lastmonth) + (12 * yearsPassed); if (monthsPassed > 11) monthsPassed = 11; if (monthsPassed == 1) monthsPassed = 0; if (monthsPassed) { int m = lastmonth; int i; XSetForeground(dpy, gc, pix[COLOR_DARKGRAY]); for (i = 0; i < monthsPassed; i++) { XDrawString(date->x->dpy, pm, date->x->gc, x + date->monthTabX, y, dateStr[m], strlen(dateStr[date->month])); m++; if (m == 12) m = 0; } if (year != lastyear) { int yy = lastyear; if ((year - yy) > 10) { yy = year - 10; } for (i = yy; i < year; i++) { sprintf( yearString, "%d", i); XDrawString(date->x->dpy, pm, date->x->gc, x + date->yearTabX, y, yearString, strlen(yearString)); } } EventuallyRedrawDate(date); } date->lastmonth = month; date->lastyear = year; XSetForeground(dpy, gc, pix[COLOR_BLACK]); XDrawString(date->x->dpy, pm, date->x->gc, x, y, dateString, strlen(dateString)); XDrawString(date->x->dpy, pm, date->x->gc, x + date->monthTabX, y, dateStr[date->month], strlen(dateStr[date->month])); sprintf( yearString, "%d", year); XDrawString(date->x->dpy, pm, date->x->gc, x + date->yearTabX, y, yearString, strlen(yearString)); } XCopyArea(date->x->dpy, date->pixmap, Tk_WindowId(date->tkwin), date->x->gc, 0, 0, date->w_width, date->w_height, 0, 0); } micropolis-activity/src/sim/w_tool.c0000664000076400007640000010712510724145723020067 0ustar simcitysimcity/* w_tool.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" short specialBase = CHURCH; int OverRide = 0; int Expensive = 1000; int Players = 1; int Votes = 0; int PendingTool = -1; int PendingX; int PendingY; QUAD CostOf[] = { 100, 100, 100, 500, 0, 500, 5, 1, 20, 10, 0, 0, 5000, 10, 3000, 3000, 5000, 10000, 100, 0, }; short toolSize[] = { 3, 3, 3, 3, 1, 3, 1, 1, 1, 1, 0, 0, 4, 1, 4, 4, 4, 6, 1, 0, }; short toolOffset[] = { 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, }; QUAD toolColors[] = { COLOR_LIGHTGREEN | (COLOR_LIGHTGREEN << 8), /* residentialState */ COLOR_LIGHTBLUE | (COLOR_LIGHTBLUE << 8), /* commercialState */ COLOR_YELLOW | (COLOR_YELLOW << 8), /* industrialState */ COLOR_LIGHTGREEN | (COLOR_RED << 8), /* fireState */ COLOR_ORANGE | (COLOR_ORANGE << 8), /* queryState */ COLOR_LIGHTGREEN | (COLOR_LIGHTBLUE << 8), /* policeState */ COLOR_DARKGRAY | (COLOR_YELLOW << 8), /* wireState */ COLOR_LIGHTBROWN | (COLOR_LIGHTBROWN << 8), /* dozeState */ COLOR_DARKGRAY | (COLOR_OLIVE << 8), /* rrState */ COLOR_DARKGRAY | (COLOR_WHITE << 8), /* roadState */ COLOR_LIGHTGRAY | (COLOR_LIGHTGRAY << 8), /* chalkState */ COLOR_DARKGRAY | (COLOR_DARKGRAY << 8), /* eraserState */ COLOR_LIGHTGRAY | (COLOR_LIGHTGREEN << 8), /* stadiumState */ COLOR_LIGHTBROWN | (COLOR_LIGHTGREEN << 8), /* parkState */ COLOR_LIGHTGRAY | (COLOR_LIGHTBLUE << 8), /* seaportState */ COLOR_LIGHTGRAY | (COLOR_YELLOW << 8), /* powerState */ COLOR_LIGHTGRAY | (COLOR_YELLOW << 8), /* nuclearState */ COLOR_LIGHTGRAY | (COLOR_LIGHTBROWN << 8), /* airportState */ COLOR_LIGHTGRAY | (COLOR_RED << 8), /* networkState */ }; Ink *NewInk(); short tally(short tileValue); int DoSetWandState(SimView *view, short state); /*************************************************************************/ /* UTILITIES */ setWandState(SimView *view, short state) { #if 0 if (state < 0) { specialBase = -state; state = specialState; } #endif view->tool_state = state; DoUpdateHeads(); DoSetWandState(view, state); } int putDownPark(SimView *view, short mapH, short mapV) { short value, tile; if (TotalFunds - CostOf[parkState] >= 0) { value = Rand(4); if (value == 4) tile = FOUNTAIN | BURNBIT | BULLBIT | ANIMBIT; else tile = (value + WOODS2) | BURNBIT | BULLBIT; if (Map[mapH][mapV] == 0) { Spend(CostOf[parkState]); UpdateFunds(); Map[mapH][mapV] = tile; return 1; } return -1; } return -2; } int putDownNetwork(SimView *view, short mapH, short mapV) { int tile = Map[mapH][mapV] & LOMASK; if ((TotalFunds > 0) && tally(tile)) { Map[mapH][mapV] = tile = 0; Spend(1); } if (tile == 0) { if ((TotalFunds - CostOf[view->tool_state]) >= 0) { Map[mapH][mapV] = TELEBASE | CONDBIT | BURNBIT | BULLBIT | ANIMBIT; Spend(CostOf[view->tool_state]); return 1; } else { return -2; } } else { return -1; } } short checkBigZone(short id, short *deltaHPtr, short *deltaVPtr) { switch (id) { case POWERPLANT: /* check coal plant */ case PORT: /* check sea port */ case NUCLEAR: /* check nuc plant */ case STADIUM: /* check stadium */ *deltaHPtr = 0; *deltaVPtr = 0; return (4); case POWERPLANT + 1: /* check coal plant */ case COALSMOKE3: /* check coal plant, smoke */ case COALSMOKE3 + 1: /* check coal plant, smoke */ case COALSMOKE3 + 2: /* check coal plant, smoke */ case PORT + 1: /* check sea port */ case NUCLEAR + 1: /* check nuc plant */ case STADIUM + 1: /* check stadium */ *deltaHPtr = -1; *deltaVPtr = 0; return (4); case POWERPLANT + 4: /* check coal plant */ case PORT + 4: /* check sea port */ case NUCLEAR + 4: /* check nuc plant */ case STADIUM + 4: /* check stadium */ *deltaHPtr = 0; *deltaVPtr = -1; return (4); case POWERPLANT + 5: /* check coal plant */ case PORT + 5: /* check sea port */ case NUCLEAR + 5: /* check nuc plant */ case STADIUM + 5: /* check stadium */ *deltaHPtr = -1; *deltaVPtr = -1; return (4); /* check airport */ /*** first row ***/ case AIRPORT: *deltaHPtr = 0; *deltaVPtr = 0; return (6); case AIRPORT + 1: *deltaHPtr = -1; *deltaVPtr = 0; return (6); case AIRPORT + 2: *deltaHPtr = -2; *deltaVPtr = 0; return (6); case AIRPORT + 3: *deltaHPtr = -3; *deltaVPtr = 0; return (6); /*** second row ***/ case AIRPORT + 6: *deltaHPtr = 0; *deltaVPtr = -1; return (6); case AIRPORT + 7: *deltaHPtr = -1; *deltaVPtr = -1; return (6); case AIRPORT + 8: *deltaHPtr = -2; *deltaVPtr = -1; return (6); case AIRPORT + 9: *deltaHPtr = -3; *deltaVPtr = -1; return (6); /*** third row ***/ case AIRPORT + 12: *deltaHPtr = 0; *deltaVPtr = -2; return (6); case AIRPORT + 13: *deltaHPtr = -1; *deltaVPtr = -2; return (6); case AIRPORT + 14: *deltaHPtr = -2; *deltaVPtr = -2; return (6); case AIRPORT + 15: *deltaHPtr = -3; *deltaVPtr = -2; return (6); /*** fourth row ***/ case AIRPORT + 18: *deltaHPtr = 0; *deltaVPtr = -3; return (6); case AIRPORT + 19: *deltaHPtr = -1; *deltaVPtr = -3; return (6); case AIRPORT + 20: *deltaHPtr = -2; *deltaVPtr = -3; return (6); case AIRPORT + 21: *deltaHPtr = -3; *deltaVPtr = -3; return (6); default: *deltaHPtr = 0; *deltaVPtr = 0; return (0); } } short tally(short tileValue) { /* can we autobulldoze this tile? */ if (((tileValue >= FIRSTRIVEDGE) && (tileValue <= LASTRUBBLE)) || ((tileValue >= (POWERBASE + 2)) && (tileValue <= (POWERBASE + 12))) || ((tileValue >= TINYEXP) && (tileValue <= (LASTTINYEXP + 2)))) { /* ??? */ return (1); } else { return (0); } } short checkSize(short temp) { /* check for the normal com, resl, ind 3x3 zones & the fireDept & PoliceDept */ if (((temp >= (RESBASE - 1)) && (temp <= (PORTBASE - 1))) || ((temp >= (LASTPOWERPLANT + 1)) && (temp <= (POLICESTATION + 4)))) { return (3); } else if (((temp >= PORTBASE) && (temp <= LASTPORT)) || ((temp >= COALBASE) && (temp <= LASTPOWERPLANT)) || ((temp >= STADIUMBASE) && (temp <= LASTZONE))) { return (4); } return (0); } /* 3x3 */ void check3x3border(short xMap, short yMap) { short xPos, yPos; short cnt; xPos = xMap; yPos = yMap - 1; for (cnt = 0; cnt < 3; cnt++) { /*** this will do the upper bordering row ***/ ConnecTile(xPos, yPos, &Map[xPos][yPos], 0); xPos++; } xPos = xMap - 1; yPos = yMap; for (cnt = 0; cnt < 3; cnt++) { /*** this will do the left bordering row ***/ ConnecTile(xPos, yPos, &Map[xPos][yPos], 0); yPos++; } xPos = xMap; yPos = yMap + 3; for (cnt = 0; cnt < 3; cnt++) { /*** this will do the bottom bordering row ***/ ConnecTile(xPos, yPos, &Map[xPos][yPos], 0); xPos++; } xPos = xMap + 3; yPos = yMap; for (cnt = 0; cnt < 3; cnt++) { /*** this will do the right bordering row ***/ ConnecTile(xPos, yPos, &Map[xPos][yPos], 0); yPos++; } } int check3x3(SimView *view, short mapH, short mapV, short base, short tool) { register short rowNum, columnNum; register short holdMapH, holdMapV; short xPos, yPos; short cost = 0; short tileValue; short flag; mapH--; mapV--; if ((mapH < 0) || (mapH > (WORLD_X - 3)) || (mapV < 0) || (mapV > (WORLD_Y - 3))) { return -1; } xPos = holdMapH = mapH; yPos = holdMapV = mapV; flag = 1; for (rowNum = 0; rowNum <= 2; rowNum++) { mapH = holdMapH; for (columnNum = 0; columnNum <= 2; columnNum++) { tileValue = Map[mapH++][mapV] & LOMASK; if (autoBulldoze) { /* if autoDoze is enabled, add up the cost of bulldozed tiles */ if (tileValue != 0) { if (tally(tileValue)) { cost++; } else { flag = 0; } } } else { /* check and see if the tile is clear or not */ if (tileValue != 0) { flag = 0; } } } mapV++; } if (flag == 0) { return -1; } cost += CostOf[tool]; if ((TotalFunds - cost) < 0) { return -2; } if ((Players > 1) && (OverRide == 0) && (cost >= Expensive) && (view != NULL) && (view->super_user == 0)) { return -3; } /* take care of the money situtation here */ Spend(cost); UpdateFunds(); mapV = holdMapV; for (rowNum = 0; rowNum <= 2; rowNum++) { mapH = holdMapH; for (columnNum = 0; columnNum <= 2; columnNum++) { if (columnNum == 1 && rowNum == 1) { Map[mapH++][mapV] = base + BNCNBIT + ZONEBIT; } else { Map[mapH++][mapV] = base + BNCNBIT; } base++; } mapV++; } check3x3border(xPos, yPos); return 1; } /* 4x4 */ void check4x4border(short xMap, short yMap) { Ptr tilePtr; short xPos, yPos; short cnt; xPos = xMap; yPos = yMap - 1; for (cnt = 0; cnt < 4; cnt++) { /* this will do the upper bordering row */ tilePtr = (Ptr) &Map[xPos][yPos]; ConnecTile(xPos, yPos, tilePtr, 0); xPos++; } xPos = xMap - 1; yPos = yMap; for (cnt = 0; cnt < 4; cnt++) { /* this will do the left bordering row */ tilePtr = (Ptr) &Map[xPos][yPos]; ConnecTile(xPos, yPos, tilePtr, 0); yPos++; } xPos = xMap; yPos = yMap + 4; for (cnt = 0; cnt < 4;cnt++) { /* this will do the bottom bordering row */ tilePtr = (Ptr) &Map[xPos][yPos]; ConnecTile(xPos, yPos, tilePtr, 0); xPos++; } xPos = xMap + 4; yPos = yMap; for (cnt = 0; cnt < 4; cnt++) { /* this will do the right bordering row */ tilePtr = (Ptr) &Map[xPos][yPos]; ConnecTile(xPos, yPos, tilePtr, 0); yPos++; } } short check4x4(SimView *view, short mapH, short mapV, short base, short aniFlag, short tool) { register short rowNum, columnNum; short h, v; short holdMapH; short xMap, yMap; short tileValue; short flag; short cost = 0; mapH--; mapV--; if ((mapH < 0) || (mapH > (WORLD_X - 4)) || (mapV < 0) || (mapV > (WORLD_Y - 4))) { return -1; } h = xMap = holdMapH = mapH; v = yMap = mapV; flag = 1; for (rowNum = 0; rowNum <= 3; rowNum++) { mapH = holdMapH; for (columnNum = 0; columnNum <= 3; columnNum++) { tileValue = Map[mapH++][mapV] & LOMASK; if (autoBulldoze) { /* if autoDoze is enabled, add up the cost of bulldozed tiles */ if (tileValue != 0) { if (tally(tileValue)) { cost++; } else { flag = 0; } } } else { /* check and see if the tile is clear or not */ if (tileValue != 0) { flag = 0; } } } mapV++; } if (flag == 0) { return -1; } cost += CostOf[tool]; if ((TotalFunds - cost) < 0) { return -2; } if ((Players > 1) && (OverRide == 0) && (cost >= Expensive) && (view != NULL) && (view->super_user == 0)) { return -3; } /* take care of the money situtation here */ Spend(cost); UpdateFunds(); mapV = v; holdMapH = h; for (rowNum = 0; rowNum <= 3; rowNum++) { mapH = holdMapH; for (columnNum = 0; columnNum <= 3; columnNum++) { if (columnNum == 1 && rowNum == 1) Map[mapH++][mapV] = base + BNCNBIT + ZONEBIT; else if (columnNum == 1 && rowNum == 2 && aniFlag) Map[mapH++][mapV] = base + BNCNBIT + ANIMBIT; else Map[mapH++][mapV] = base + BNCNBIT; base++; } mapV++; } check4x4border(xMap, yMap); return 1; } /* 6x6 */ void check6x6border(short xMap, short yMap) { short xPos, yPos; short cnt; xPos = xMap; yPos = yMap - 1; for (cnt = 0; cnt < 6; cnt++) { /* this will do the upper bordering row */ ConnecTile(xPos, yPos, &Map[xPos][yPos], 0); xPos++; } xPos = xMap - 1; yPos = yMap; for (cnt=0; cnt < 6; cnt++) { /* this will do the left bordering row */ ConnecTile(xPos, yPos, &Map[xPos][yPos], 0); yPos++; } xPos = xMap; yPos = yMap + 6; for (cnt = 0; cnt < 6; cnt++) { /* this will do the bottom bordering row */ ConnecTile(xPos, yPos, &Map[xPos][yPos], 0); xPos++; } xPos = xMap + 6; yPos = yMap; for (cnt = 0; cnt < 6; cnt++) { /* this will do the right bordering row */ ConnecTile(xPos, yPos, &Map[xPos][yPos], 0); yPos++; } } short check6x6(SimView *view, short mapH, short mapV, short base, short tool) { register short rowNum, columnNum; short h, v; short holdMapH; short xMap, yMap; short flag; short tileValue; short cost = 0; mapH--; mapV--; if ((mapH < 0) || (mapH > (WORLD_X - 6)) || (mapV < 0) || (mapV > (WORLD_Y - 6))) return -1; h = xMap = holdMapH = mapH; v = yMap = mapV; flag = 1; for (rowNum = 0; rowNum <= 5; rowNum++) { mapH = holdMapH; for (columnNum = 0; columnNum <= 5; columnNum++) { tileValue = Map[mapH++][mapV] & LOMASK; if (autoBulldoze) { /* if autoDoze is enabled, add up the cost of bulldozed tiles */ if (tileValue != 0) if (tally(tileValue)) { cost++; } else { flag = 0; } } else { /* check and see if the tile is clear or not */ if (tileValue != 0) { flag = 0; } } } mapV++; } if (flag == 0) { return -1; } cost += CostOf[tool]; if ((TotalFunds - cost) < 0) { return -2; } if ((Players > 1) && (OverRide == 0) && (cost >= Expensive) && (view != NULL) && (view->super_user == 0)) { return -3; } /* take care of the money situtation here */ Spend(cost); UpdateFunds(); mapV = v; holdMapH = h; for (rowNum = 0; rowNum <= 5; rowNum++) { mapH = holdMapH; for (columnNum = 0; columnNum <= 5; columnNum++) { if (columnNum == 1 && rowNum == 1) { Map[mapH++][mapV] = base + BNCNBIT + ZONEBIT; } else { Map[mapH++][mapV] = base + BNCNBIT; } base++; } mapV++; } check6x6border(xMap, yMap); return 1; } /* QUERY */ /* search table for zone status string match */ static short idArray[28] = { DIRT, RIVER, TREEBASE, RUBBLE, FLOOD, RADTILE, FIRE, ROADBASE, POWERBASE, RAILBASE, RESBASE, COMBASE, INDBASE, PORTBASE, AIRPORTBASE, COALBASE, FIRESTBASE, POLICESTBASE, STADIUMBASE, NUCLEARBASE, 827, 832, FOUNTAIN, INDBASE2, FOOTBALLGAME1, VBRDG0, 952, 956 }; /* 0, 2, 21, 44, 48, 52, 53, 64, 208, 224, 240, 423, 612, 693, 709, 745, 761, 770, 779, 811, 827, 832, 840, 844, 932, 948, 952, 956 Clear, Water, Trees, Rubble, Flood, Radioactive Waste, Fire, Road, Power, Rail, Residential, Commercial, Industrial, Port, AirPort, Coal Power, Fire Department, Police Department, Stadium, Nuclear Power, Draw Bridge, Radar Dish, Fountain, Industrial, 49er's 38 Bears 3, Draw Bridge, Ur 238 */ int getDensityStr(short catNo, short mapH, short mapV) { int z; switch(catNo) { case 0: z = PopDensity[mapH >>1][mapV >>1]; z = z >> 6; z = z & 3; return (z); case 1: z = LandValueMem[mapH >>1][mapV >>1]; if (z < 30) return (4); if (z < 80) return (5); if (z < 150) return (6); return (7); case 2: z = CrimeMem[mapH >>1][mapV >>1]; z = z >> 6; z = z & 3; return (z + 8); case 3: z = PollutionMem[mapH >>1][mapV >>1]; if ((z < 64) && (z > 0)) return (13); z = z >> 6; z = z & 3; return (z + 12); case 4: z = RateOGMem[mapH >>3][mapV >>3]; if (z < 0) return (16); if (z == 0) return (17); if (z > 100) return (19); return (18); } } doZoneStatus(short mapH, short mapV) { char localStr[256]; char statusStr[5][256]; short id; short x; short tileNum; short found; tileNum = Map[mapH][mapV] & LOMASK; if (tileNum >= COALSMOKE1 && tileNum < FOOTBALLGAME1) tileNum = COALBASE; found = 1; for (x = 1; x < 29 && found; x++) { if (tileNum < idArray[x]) { found = 0; } } x--; if (x < 1 || x > 28) x = 28; GetIndString(localStr, 219, x); for (x = 0; x < 5; x++) { id = getDensityStr(x, mapH, mapV); id++; if (id <= 0) id = 1; if (id > 20) id = 20; GetIndString(statusStr[x], 202, id); } DoShowZoneStatus(localStr, statusStr[0], statusStr[1], statusStr[2], statusStr[3], statusStr[4], mapH, mapV); } DoShowZoneStatus(char *str, char *s0, char *s1, char *s2, char *s3, char *s4, int x, int y) { char buf[1024]; sprintf(buf, "UIShowZoneStatus {%s} {%s} {%s} {%s} {%s} {%s} %d %d", str, s0, s1, s2, s3, s4, x, y); Eval(buf); } /* comefrom: processWand */ put3x3Rubble(short x, short y) { register xx, yy, zz; for (xx = x - 1; xx < x + 2; xx++) { for (yy = y - 1; yy < y + 2; yy++) { if (TestBounds(xx, yy)) { zz = Map[xx][yy] & LOMASK; if ((zz != RADTILE) && (zz != 0)) { Map[xx][yy] = (DoAnimation ? (TINYEXP + Rand(2)) : SOMETINYEXP) | ANIMBIT | BULLBIT; } } } } } /* comefrom: processWand */ put4x4Rubble(short x, short y) { register xx, yy, zz; for (xx = x - 1; xx < x + 3; xx++) { for (yy = y - 1; yy < y + 3; yy++) { if (TestBounds(xx, yy)) { zz = Map[xx][yy] & LOMASK; if ((zz != RADTILE) && (zz != 0)) { Map[xx][yy] = (DoAnimation ? (TINYEXP + Rand(2)) : SOMETINYEXP) | ANIMBIT | BULLBIT; } } } } } /* comefrom: processWand */ put6x6Rubble(short x, short y) { register xx, yy, zz; for (xx = x - 1; xx < x + 5; xx++) { for (yy = y - 1; yy < y + 5; yy++) { if (TestBounds(xx, yy)) { zz = Map[xx][yy] & LOMASK; if ((zz != RADTILE) && (zz != 0)) { Map[xx][yy] = (DoAnimation ? (TINYEXP + Rand(2)) : SOMETINYEXP) | ANIMBIT | BULLBIT; } } } } } DidTool(SimView *view, char *name, short x, short y) { char buf[256]; if (view != NULL) { sprintf(buf, "UIDidTool%s %s %d %d", name, Tk_PathName(view->tkwin), x, y); Eval(buf); } } DoSetWandState(SimView *view, short state) { char buf[256]; sprintf(buf, "UISetToolState %s %d", Tk_PathName(view->tkwin), state); Eval(buf); } /************************************************************************/ /* TOOLS */ int query_tool(SimView *view, short x, short y) { if ((x < 0) || (x > (WORLD_X - 1)) || (y < 0) || (y > (WORLD_Y - 1))) { return -1; } doZoneStatus(x, y); DidTool(view, "Qry", x, y); return 1; } int bulldozer_tool(SimView *view, short x, short y) { unsigned short currTile, temp; short zoneSize, deltaH, deltaV; int result = 1; if ((x < 0) || (x > (WORLD_X - 1)) || (y < 0) || (y > (WORLD_Y - 1))) { return -1; } currTile = Map[x][y]; temp = currTile & LOMASK; if (currTile & ZONEBIT) { /* zone center bit is set */ if (TotalFunds > 0) { Spend(1); switch (checkSize(temp)) { case 3: MakeSound("city", "Explosion-High"); put3x3Rubble(x, y); break; case 4: put4x4Rubble(x, y); MakeSound("city", "Explosion-Low"); break; case 6: MakeSound("city", "Explosion-High"); MakeSound("city", "Explosion-Low"); put6x6Rubble(x, y); break; default: break; } } } else if ((zoneSize = checkBigZone(temp, &deltaH, &deltaV))) { if (TotalFunds > 0) { Spend(1); switch (zoneSize) { case 3: MakeSound("city", "Explosion-High"); break; case 4: MakeSound("city", "Explosion-Low"); put4x4Rubble(x + deltaH, y + deltaV); break; case 6: MakeSound("city", "Explosion-High"); MakeSound("city", "Explosion-Low"); put6x6Rubble(x + deltaH, y + deltaV); break; } } } else { if (temp == RIVER || temp == REDGE || temp == CHANNEL) { if (TotalFunds >= 6) { result = ConnecTile(x, y, &Map[x][y], 1); if (temp != (Map[x][y] & LOMASK)) { Spend(5); } } else { result = 0; } } else { result = ConnecTile(x, y, &Map[x][y], 1); } } UpdateFunds(); if (result == 1) { DidTool(view, "Dozr", x, y); } return result; } int road_tool(SimView *view, short x, short y) { int result; if ((x < 0) || (x > (WORLD_X - 1)) || (y < 0) || (y > (WORLD_Y - 1))) { return -1; } result = ConnecTile(x, y, &Map[x][y], 2); UpdateFunds(); if (result == 1) { DidTool(view, "Road", x, y); } return result; } int rail_tool(SimView *view, short x, short y) { int result; if ((x < 0) || (x > (WORLD_X - 1)) || (y < 0) || (y > (WORLD_Y - 1))) { return -1; } result = ConnecTile(x, y, &Map[x][y], 3); UpdateFunds(); if (result == 1) { DidTool(view, "Rail", x, y); } return result; } int wire_tool(SimView *view, short x, short y) { int result; if ((x < 0) || (x > (WORLD_X - 1)) || (y < 0) || (y > (WORLD_Y - 1))) { return -1; } result = ConnecTile(x, y, &Map[x][y], 4); UpdateFunds(); if (result == 1) { DidTool(view, "Wire", x, y); } return result; } int park_tool(SimView *view, short x, short y) { int result; if ((x < 0) || (x > (WORLD_X - 1)) || (y < 0) || (y > (WORLD_Y - 1))) return -1; result = putDownPark(view, x, y); if (result == 1) { DidTool(view, "Park", x, y); } return result; } int residential_tool(SimView *view, short x, short y) { int result; if ((x < 0) || (x > (WORLD_X - 1)) || (y < 0) || (y > (WORLD_Y - 1))) { return -1; } result = check3x3(view, x, y, RESBASE, residentialState); if (result == 1) { DidTool(view, "Res", x, y); } return result; } int commercial_tool(SimView *view, short x, short y) { int result; if ((x < 0) || (x > (WORLD_X - 1)) || (y < 0) || (y > (WORLD_Y - 1))) { return -1; } result = check3x3(view, x, y, COMBASE, commercialState); if (result == 1) { DidTool(view, "Com", x, y); } return result; } int industrial_tool(SimView *view, short x, short y) { int result; if ((x < 0) || (x > (WORLD_X - 1)) || (y < 0) || (y > (WORLD_Y - 1))) { return -1; } result = check3x3(view, x, y, INDBASE, industrialState); if (result == 1) { DidTool(view, "Ind", x, y); } return result; } int police_dept_tool(SimView *view, short x, short y) { int result; if ((x < 0) || (x > (WORLD_X - 1)) || (y < 0) || (y > (WORLD_Y - 1))) { return -1; } result = check3x3(view, x, y, POLICESTBASE, policeState); if (result == 1) { DidTool(view, "Pol", x, y); } return result; } int fire_dept_tool(SimView *view, short x, short y) { int result; if ((x < 0) || (x > (WORLD_X - 1)) || (y < 0) || (y > (WORLD_Y - 1))) { return -1; } result = check3x3(view, x, y, FIRESTBASE, fireState); if (result == 1) { DidTool(view, "Fire", x, y); } return result; } int stadium_tool(SimView *view, short x, short y) { int result; if ((x < 0) || (x > (WORLD_X - 1)) || (y < 0) || (y > (WORLD_Y - 1))) { return -1; } result = check4x4(view, x, y, STADIUMBASE, 0, stadiumState); if (result == 1) { DidTool(view, "Stad", x, y); } return result; } int coal_power_plant_tool(SimView *view, short x, short y) { int result; if ((x < 0) || (x > (WORLD_X - 1)) || (y < 0) || (y > (WORLD_Y - 1))) { return -1; } result = check4x4(view, x, y, COALBASE, 1, powerState); if (result == 1) { DidTool(view, "Coal", x, y); } return result; } int nuclear_power_plant_tool(SimView *view, short x, short y) { int result; if ((x < 0) || (x > (WORLD_X - 1)) || (y < 0) || (y > (WORLD_Y - 1))) { return -1; } result = check4x4(view, x, y, NUCLEARBASE, 1, nuclearState); if (result == 1) { DidTool(view, "Nuc", x, y); } return result; } int seaport_tool(SimView *view, short x, short y) { int result; if ((x < 0) || (x > (WORLD_X - 1)) || (y < 0) || (y > (WORLD_Y - 1))) { return -1; } result = check4x4(view, x, y, PORTBASE, 0, seaportState); if (result == 1) { DidTool(view, "Seap", x, y); } return result; } int airport_tool(SimView *view, short x, short y) { int result; if ((x < 0) || (x > (WORLD_X - 1)) || (y < 0) || (y > (WORLD_Y - 1))) { return -1; } result = check6x6(view, x, y, AIRPORTBASE, airportState); if (result == 1) { DidTool(view, "Airp", x, y); } return result; } int network_tool(SimView *view, short x, short y) { int result; if ((x < 0) || (x > (WORLD_X - 1)) || (y < 0) || (y > (WORLD_Y - 1))) { return -1; } result = putDownNetwork(view, x, y); if (result == 1) { DidTool(view, "Net", x, y); } return result; } #if 0 int special_tool(SimView *view, short x, short y) { int result; if ((x < 0) || (x > (WORLD_X - 1)) || (y < 0) || (y > (WORLD_Y - 1))) { return -1; } result = check3x3(view, x, y, specialBase, specialState); if (result == 1) { DidTool(view, "Special", x, y); } return result; } #endif int ChalkTool(SimView *view, short x, short y, short color, short first) { if (first) { ChalkStart(view, x, y, color); } else { ChalkTo(view, x, y); } DidTool(view, "Chlk", x, y); return 1; } ChalkStart(SimView *view, int x, int y, int color) { Ink *ink; Ink **ip; for (ip = &sim->overlay; *ip != NULL; ip = &((*ip)->next)) ; *ip = ink = NewInk(); ink->x = x; ink->y = y; ink->color = color; StartInk(ink, x, y); view->track_info = (char *)ink; view->last_x = x; view->last_y = y; view->tool_event_time = view->tool_last_event_time = ((TkWindow *)view->tkwin)->dispPtr->lastEventTime; } ChalkTo(SimView *view, int x, int y) { int x0, y0, lx, ly; Ink *ink = (Ink *)view->track_info; #ifdef MOTIONBUFFER if (view->x->dpy->motion_buffer) { XTimeCoord *coords = NULL, *coord; int n = 0, i; view->tool_last_event_time = view->tool_event_time; view->tool_event_time = ((TkWindow *)view->tkwin)->dispPtr->lastEventTime; coords = XGetMotionEvents(view->x->dpy, Tk_WindowId(view->tkwin), view->tool_last_event_time, view->tool_event_time, &n); #if 0 printf("got %d events at %x from %d to %d (%d elapsed)\n", n, coords, view->tool_last_event_time, view->tool_event_time, view->tool_event_time - view->tool_last_event_time); #endif if (n) { lx = ink->last_x; ly = ink->last_y; for (i = 0, coord = coords; i < n; i++, coord++) { ViewToPixelCoords(view, coord->x, coord->y, &x0, &y0); lx = (lx + lx + lx + x0) >>2; ly = (ly + ly + ly + y0) >>2; #if 0 printf("adding %d %d => %d %d => %d %d\n", coord->x, coord->y, x0, y0, lx, ly); #endif AddInk(ink, lx, ly); } } if (coords) { XFree((char *)coords); } } #endif AddInk(ink, x, y); view->last_x = x; view->last_y = y; } int EraserTool(SimView *view, short x, short y, short first) { if (first) { EraserStart(view, x, y); } else { EraserTo(view, x, y); } DidTool(view, "Eraser", x, y); return 1; } InkInBox(Ink *ink, int left, int top, int right, int bottom) { if ((left <= ink->right) && (right >= ink->left) && (top <= ink->bottom) && (bottom >= ink->top)) { int x, y, lx, ly, i; if (ink->length == 1) { return 1; } x = ink->x; y = ink->y; for (i = 1; i < ink->length; i++) { int ileft, iright, itop, ibottom; lx = x; ly = y; x += ink->points[i].x; y += ink->points[i].y; if (x < lx) { ileft = x; iright = lx; } else { ileft = lx; iright = x; } if (y < ly) { itop = y; ibottom = ly; } else { itop = ly; ibottom = y; } if ((left <= iright) && (right >= ileft) && (top <= ibottom) && (bottom >= itop)) { return 1; } } } return 0; } EraserStart(SimView *view, int x, int y) { EraserTo(view, x, y); } EraserTo(SimView *view, int x, int y) { SimView *v; Ink **ip, *ink; for (ip = &sim->overlay; *ip != NULL;) { ink = *ip; if (InkInBox(ink, x - 8, y - 8, x + 8, y + 8)) { for (view = sim->editor; view != NULL; view = view->next) { int vleft, vtop; if ((ink->right >= (vleft = (view->pan_x - (view->w_width / 2)))) && (ink->left <= (vleft + view->w_width)) && (ink->bottom >= (vtop = (view->pan_y - (view->w_height / 2)))) && (ink->top <= (vtop + view->w_height))) { view->overlay_mode = 0; EventuallyRedrawView(view); } } *ip = ink->next; FreeInk(ink); } else { ip = &((*ip)->next); } } } int do_tool(SimView *view, short state, short x, short y, short first) { int result = 0; switch (state) { case residentialState: result = residential_tool(view, x >>4, y >>4); break; case commercialState: result = commercial_tool(view, x >>4, y >>4); break; case industrialState: result = industrial_tool(view, x >>4, y >>4); break; case fireState: result = fire_dept_tool(view, x >>4, y >>4); break; case queryState: result = query_tool(view, x >>4, y >>4); break; case policeState: result = police_dept_tool(view, x >>4, y >>4); break; case wireState: result = wire_tool(view, x >>4, y >>4); break; case dozeState: result = bulldozer_tool(view, x >>4, y >>4); break; case rrState: result = rail_tool(view, x >>4, y >>4); break; case roadState: result = road_tool(view, x >>4, y >>4); break; case chalkState: result = ChalkTool(view, x - 5, y + 11, COLOR_WHITE, first); break; case eraserState: result = EraserTool(view, x, y, first); break; case stadiumState: result = stadium_tool(view, x >>4, y >>4); break; case parkState: result = park_tool(view, x >>4, y >>4); break; case seaportState: result = seaport_tool(view, x >>4, y >>4); break; case powerState: result = coal_power_plant_tool(view, x >>4, y >>4); break; case nuclearState: result = nuclear_power_plant_tool(view, x >>4, y >>4); break; case airportState: result = airport_tool(view, x >>4, y >>4); break; case networkState: result = network_tool(view, x >>4, y >>4); break; default: result = 0; break; } return result; } int current_tool(SimView *view, short x, short y, short first) { return do_tool(view, view->tool_state, x, y, first); } DoTool(SimView *view, short tool, short x, short y) { int result; result = do_tool(view, tool, x <<4, y <<4, 1); if (result == -1) { ClearMes(); SendMes(34); MakeSoundOn(view, "edit", "UhUh"); } else if (result == -2) { ClearMes(); SendMes(33); MakeSoundOn(view, "edit", "Sorry"); } sim_skip = 0; view->skip = 0; InvalidateEditors(); } ToolDown(SimView *view, int x, int y) { int result; ViewToPixelCoords(view, x, y, &x, &y); view->last_x = x; view->last_y = y; result = current_tool(view, x, y, 1); if (result == -1) { ClearMes(); SendMes(34); MakeSoundOn(view, "edit", "UhUh"); } else if (result == -2) { ClearMes(); SendMes(33); MakeSoundOn(view, "edit", "Sorry"); } else if (result == -3) { DoPendTool(view, view->tool_state, x >>4, y >>4); } sim_skip = 0; view->skip = 0; view->invalid = 1; } ToolUp(SimView *view, int x, int y) { int result; result = ToolDrag(view, x, y); return (result); } ToolDrag(SimView *view, int px, int py) { int x, y, dx, dy, adx, ady, lx, ly, dist; float i, step, tx, ty, dtx, dty, rx, ry; ViewToPixelCoords(view, px, py, &x, &y); view->tool_x = x; view->tool_y = y; if ((view->tool_state == chalkState) || (view->tool_state == eraserState)) { current_tool(view, x, y, 0); view->last_x = x; view->last_y = y; } else { dist = toolSize[view->tool_state]; x >>= 4; y >>= 4; lx = view->last_x >> 4; ly = view->last_y >> 4; reset: dx = x - lx; dy = y - ly; if (dx == 0 && dy == 0) { return; } adx = ABS(dx); ady = ABS(dy); if (adx > ady) { step = .3 / adx; } else { step = .3 / ady; } rx = (dx < 0 ? 1 : 0); ry = (dy < 0 ? 1 : 0); if (dist == 1) { for (i = 0.0; i <= 1 + step; i += step) { tx = (view->last_x >>4) + i * dx; ty = (view->last_y >>4) + i * dy; dtx = ABS(tx - lx); dty = ABS(ty - ly); if (dtx >= 1 || dty >= 1) { /* fill in corners */ if ((dtx >= 1) && (dty >= 1)) { if (dtx > dty) { current_tool(view, ((int)(tx + rx)) <<4, ly <<4, 0); } else { current_tool(view, lx <<4, ((int)(ty + ry)) <<4, 0); } } lx = (int)(tx + rx); ly = (int)(ty + ry); current_tool(view, lx <<4, ly <<4, 0); } } } else { for (i = 0.0; i <= 1 + step; i += step) { tx = (view->last_x >>4) + i * dx; ty = (view->last_y >>4) + i * dy; dtx = ABS(tx - lx); dty = ABS(ty - ly); lx = (int)(tx + rx); ly = (int)(ty + ry); current_tool(view, lx <<4, ly <<4, 0); } } view->last_x = (lx <<4) + 8; view->last_y = (ly <<4) + 8; } sim_skip = 0; /* update editors overlapping this one */ view->skip = 0; view->invalid = 1; } DoPendTool(SimView *view, int tool, int x, int y) { char buf[256]; sprintf(buf, "DoPendTool %s %d %d %d", Tk_PathName(view->tkwin), tool, x, y); Eval(buf); } micropolis-activity/src/sim/headers/0000775000076400007640000000000010724145723020025 5ustar simcitysimcitymicropolis-activity/src/sim/headers/animtab.h0000664000076400007640000003776710724145723021635 0ustar simcitysimcity/* animtab.h * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ short aniTile[ 1024 ] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, /* Fire */ 57, 58, 59, 60, 61, 62, 63, 56, /* No Traffic */ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, /* Light Traffic */ #if 0 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, #else 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, #endif /* Heavy Traffic */ #if 0 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, #else 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, #endif /* Wires & Rails */ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, /* Residential */ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, /* Commercial */ 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, /* Industrial */ 612, 613, 614, 615, 616, 617, 618, 619, 852, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 884, 642, 643, 888, 645, 646, 647, 648, 892, 896, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 900, 904, 678, 679, 680, 681, 682, 683, 684, 685, 908, 687, 688, 912, 690, 691, 692, /* SeaPort */ 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, /* AirPort */ 709, 710, 832, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, /* Coal power */ 745, 746, 916, 920, 749, 750, 924, 928, 753, 754, 755, 756, 757, 758, 759, 760, /* Fire Dept */ 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, /* Stadium */ 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, /* Stadium Anims */ 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, /* Nuclear Power */ 811, 812, 813, 814, 815, 816, 817, 818, 819, 952, 821, 822, 823, 824, 825, 826, /* Power out + Bridges */ 827, 828, 829, 830, 831, /* Radar dish */ 833, 834, 835, 836, 837, 838, 839, 832, /* Fountain / Flag */ 841, 842, 843, 840, 845, 846, 847, 848, 849, 850, 851, 844, 853, 854, 855, 856, 857, 858, 859, 852, /* zone destruct & rubblize */ 861, 862, 863, 864, 865, 866, 867, 867, /* totally unsure */ 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, /* Smoke stacks */ 885, 886, 887, 884, 889, 890, 891, 888, 893, 894, 895, 892, 897, 898, 899, 896, 901, 902, 903, 900, 905, 906, 907, 904, 909, 910, 911, 908, 913, 914, 915, 912, 917, 918, 919, 916, 921, 922, 923, 920, 925, 926, 927, 924, 929, 930, 931, 928, /* Stadium Playfield */ 933, 934, 935, 936, 937, 938, 939, 932, 941, 942, 943, 944, 945, 946, 947, 940, /* Bridge up chars */ 948, 949, 950, 951, /* Nuclear swirl */ 953, 954, 955, 952, /* */ }; unsigned char aniSynch[1024] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* Fire */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* No Traffic */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* Light Traffic */ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, /* Heavy Traffic */ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, /* Wires and Rails */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* Residential */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* Commercial */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* Industrial */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x11, 0xff, 0xff, 0x11, 0xff, 0xff, 0xff, 0xff, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x11, 0xff, 0xff, 0x11, 0xff, 0xff, 0xff, /* SeaPort */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* AirPort */ 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* Coal Power */ 0xff, 0xff, 0x11, 0x11, 0xff, 0xff, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* Fire/Police Department */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* Stadium */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* Full Stadium */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* Nuclear Power */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x11, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* Power out/Bridges */ 0xff, 0xff, 0xff, 0xff, 0xff, /* Radar Dish */ 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, /* Fountain/Flag */ 0x11, 0x22, 0x44, 0x88, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, /* Zone Destruct + Rubblize */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* Totally Unsure */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* Smoke Stacks */ 0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88, /* Stadium Playfield */ 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, /* Bridge Up */ 0xff, 0xff, 0xff, 0xff, /* Nuclear swirl */ 0x11, 0x22, 0x44, 0x88, }; micropolis-activity/src/sim/headers/cam.h0000664000076400007640000001440410724145723020741 0ustar simcitysimcity/* cam.h * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include #include #include #include #ifndef HPUX #include #endif #include #include #ifndef IS_LINUX #include #endif #include #include #include #include #include #include #include #include #include #include #include #define CAM_ARGS \ SimCam *scam, ARGS struct Can { Byte *mem; int line_bytes; int width; int height; }; typedef struct Can Can; struct Cam { struct Cam *next; Can *back, *front; void (*neighborhood)(); Byte *rule; int rule_size; int width; int height; int ideal_width; int ideal_height; int phase; int wrap; int steps; int frob; int x; int y; int dx; int dy; int gx; int gy; int dragging; int set_x; int set_y; int set_width; int set_height; int set_x0; int set_y0; int set_x1; int set_y1; char *name; }; typedef struct Cam Cam; struct SimCam { struct SimCam *next; int w_x, w_y, w_width, w_height; int visible; int invalid; int skips; int skip; Tk_Window tkwin; Tcl_Interp *interp; int flags; XDisplay *x; XImage *image; XShmSegmentInfo *shminfo; int line_bytes; u_char *data; int cam_count; Cam *cam_list; }; typedef struct SimCam SimCam; #define NORTHWEST ((Byte)((l0>>16) & 0xff)) #define NORTH ((Byte)((l0>>8) & 0xff)) #define NORTHEAST ((Byte)(l0 & 0xff)) #define WEST ((Byte)((l1>>16) & 0xff)) #define CENTER ((Byte)((l1>>8) & 0xff)) #define EAST ((Byte)(l1 & 0xff)) #define SOUTHWEST ((Byte)((l2>>16) & 0xff)) #define SOUTH ((Byte)((l2>>8) & 0xff)) #define SOUTHEAST ((Byte)(l2 & 0xff)) #define SUM8 ((l0&1) + ((l0>>8)&1) + ((l0>>16)&1) + \ (l1&1) + ((l1>>16)&1) + \ (l2&1) + ((l2>>8)&1) + ((l2>>16)&1)) #define SUM9 (SUM8 + ((l1>>8)&1)) #define SUM8p(p) (((l0>>p)&1) + ((l0>>(p+8))&1) + ((l0>>(p+16))&1) + \ ((l1>>p)&1) + ((l1>>(p+16))&1) + \ ((l2>>p)&1) + ((l2>>(p+8))&1) + ((l2>>(p+16))&1)) #define SUM9p(p) (SUM8p(p) + ((l1>>(p+8))&1)) #define CAM_LOOP_BODY(BODY) \ { int y; \ int backline = cam->back->line_bytes, \ frontline = cam->front->line_bytes; \ Byte *back = cam->back->mem, \ *front = cam->front->mem; \ Byte *rule = cam->rule; \ for (y=0; yheight; y++) { \ QUAD l0 = (back[0]<<8) + \ back[1], \ l1 = (back[backline]<<8) + \ back[backline+1], \ l2 = (back[backline+backline]<<8) + \ back[backline+backline+1]; \ int x, w = cam->width; \ for (x=0; x. * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #define X_Mem_View 1 #define X_Wire_View 2 #define Editor_Class 0 #define Map_Class 1 #define Button_Press 0 #define Button_Move 1 #define Button_Release 2 #define VIEW_REDRAW_PENDING 1 typedef struct Ink { struct Ink *next; int x, y; int color; int length; int maxlength; XPoint *points; int left, top, right, bottom; int last_x, last_y; } Ink; typedef struct XDisplay { struct XDisplay *next; int references; char *display; TkDisplay *tkDisplay; Display *dpy; Screen *screen; Window root; Visual *visual; int depth; int color; Colormap colormap; int *pixels; GC gc; int shared; unsigned long last_request_read; unsigned long request; XImage *big_tile_image; XImage *small_tile_image; Pixmap big_tile_pixmap; Pixmap **objects; GC overlay_gc; Pixmap gray25_stipple; Pixmap gray50_stipple; Pixmap gray75_stipple; Pixmap vert_stipple; Pixmap horiz_stipple; Pixmap diag_stipple; } XDisplay; typedef struct SimView { struct SimView *next; char *title; int type; int class; /* graphics stuff */ int *pixels; int line_bytes; int pixel_bytes; int depth; unsigned char *data; int line_bytes8; unsigned char *data8; int visible; int invalid; int skips; int skip; int update; /* map stuff */ unsigned char *smalltiles; short map_state; int show_editors; /* editor stuff */ unsigned char *bigtiles; short power_type; short tool_showing; short tool_mode; short tool_x, tool_y; short tool_x_const, tool_y_const; short tool_state; short tool_state_save; short super_user; short show_me; short dynamic_filter; Tk_TimerToken auto_scroll_token; Time tool_event_time; Time tool_last_event_time; /* scrolling */ int w_x, w_y; /* view window position */ int w_width, w_height; /* view window size */ int m_width, m_height; /* memory buffer size */ int i_width, i_height; /* ideal whole size */ int pan_x, pan_y; /* centered in window */ int tile_x, tile_y, tile_width, tile_height; /* visible tiles */ int screen_x, screen_y, screen_width, screen_height; /* visible pixels */ /* tracking */ int orig_pan_x, orig_pan_y; int last_x, last_y; int last_button; char *track_info; char *message_var; /* window system */ Tk_Window tkwin; Tcl_Interp *interp; int flags; XDisplay *x; XShmSegmentInfo *shminfo; short **tiles; short **other_tiles; XImage *image; XImage *other_image; unsigned char *other_data; Pixmap pixmap; Pixmap pixmap2; Pixmap overlay_pixmap; Pixmap overlay_valid; XFontStruct *fontPtr; /* timing */ int updates; double update_real; double update_user; double update_system; int update_context; /* auto goto */ int auto_goto; int auto_going; int auto_x_goal, auto_y_goal; int auto_speed; struct SimSprite *follow; /* sound */ int sound; /* configuration */ int width, height; /* overlay */ int show_overlay; int overlay_mode; struct timeval overlay_time; } SimView; typedef struct SimGraph { struct SimGraph *next; int range; int mask; Tk_Window tkwin; Tcl_Interp *interp; int flags; XDisplay *x; int visible; int w_x, w_y; int w_width, w_height; Pixmap pixmap; int *pixels; XFontStruct *fontPtr; Tk_3DBorder border; int borderWidth; int relief; Tk_TimerToken draw_graph_token; } SimGraph; typedef struct SimDate { struct SimDate *next; int reset; int month; int year; int lastmonth; int lastyear; Tk_Window tkwin; Tcl_Interp *interp; int flags; XDisplay *x; int visible; int w_x, w_y; int w_width, w_height; Pixmap pixmap; int *pixels; XFontStruct *fontPtr; Tk_3DBorder border; int borderWidth; int padX; int padY; int width; int monthTab; int monthTabX; int yearTab; int yearTabX; Tk_TimerToken draw_date_token; } SimDate; typedef struct SimSprite { struct SimSprite *next; char *name; int type; int frame; int x, y; int width, height; int x_offset, y_offset; int x_hot, y_hot; int orig_x, orig_y; int dest_x, dest_y; int count, sound_count; int dir, new_dir; int step, flag, control; int turn; int accel; int speed; } SimSprite; #ifdef CAM #include "cam.h" #endif typedef struct Person { int id; char *name; } Person; typedef struct Sim { int editors; SimView *editor; int maps; SimView *map; int graphs; SimGraph *graph; int dates; SimDate *date; int sprites; SimSprite *sprite; #ifdef CAM int scams; SimCam *scam; #endif Ink *overlay; } Sim; typedef struct Cmd { char *name; int (*cmd)(); } Cmd; micropolis-activity/src/sim/headers/mac.h0000664000076400007640000000731510724145723020744 0ustar simcitysimcity/* mac.h: minor league Macintosh emulation * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #ifndef _Mac_ #define _Mac_ 1 #ifdef OSF1 #define QUAD int #else #define QUAD long #endif typedef unsigned char Byte; typedef Byte * Ptr; typedef char **Handle; extern Ptr NewPtr(); extern Handle GetResource(); extern QUAD ResourceSize(); extern char *ResourceName(); extern QUAD ResourceID(); struct Resource { char *buf; QUAD size; char name[4]; QUAD id; struct Resource *next; }; #endif micropolis-activity/src/sim/headers/macros.h0000664000076400007640000001117410724145723021466 0ustar simcitysimcity/* macros.h * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #define ABS(x) (((x) < 0) ? (-(x)) : (x)) #define HASHED_CMD(scope, name) \ { int new; \ Tcl_CreateHashEntry(&scope##Cmds, #name, &new)->clientData = \ (ClientData)scope##Cmd##name; \ } #define ARGS \ Tcl_Interp *interp, int argc, char **argv #define CLIENT_ARGS \ ClientData clientData, ARGS #define VIEW_ARGS \ SimView *view, ARGS #define GRAPH_ARGS \ SimGraph *graph, ARGS #define DATE_ARGS \ SimDate *date, ARGS #define SPRITE_ARGS \ SimSprite *sprite, ARGS /* tile bounds */ #define TestBounds(x, y) \ (((x) >= 0) && ((x) < WORLD_X) && ((y) >= 0) && ((y) < WORLD_Y)) /* For s_disasters.c */ #define TILE_IS_NUCLEAR(tile) \ ((tile & LOMASK) == NUCLEAR) #define TILE_IS_VULNERABLE(tile) \ (!(tile & ZONEBIT) && \ ((tile & LOMASK) >= RBRDR) && \ ((tile & LOMASK) <= LASTZONE)) #define TILE_IS_ARSONABLE(tile) \ (!(tile & ZONEBIT) && \ ((tile & LOMASK) >= RBRDR) && \ ((tile & LOMASK) <= LASTZONE)) #define TILE_IS_RIVER_EDGE(tile) \ (((tile & LOMASK) >= FIRSTRIVEDGE) && \ ((tile & LOMASK) <= LASTRIVEDGE)) #define TILE_IS_FLOODABLE(tile) \ ((tile == DIRT) || \ ((tile & BULLBIT) && \ (tile & BURNBIT))) #define TILE_IS_RUBBLE(tile) \ (((tile & LOMASK) >= RUBBLE) && \ ((tile & LOMASK) <= LASTRUBBLE))) #define TILE_IS_FLOODABLE2(tile) \ ((tile == 0) || \ (tile & BURNBIT) || \ TILE_IS_RUBBLE(tile)) micropolis-activity/src/sim/headers/sim.h0000664000076400007640000004332010724145723020770 0ustar simcitysimcity/* sim.h: Main include file * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ /* workaround sun c compiler junk */ #ifdef sun #define _TTYCHARS_ #define CTRL(c) (#c[0]&037) #ifndef SOLARIS2 #define __sys_ioccom_h #define _IOCPARM_MASK 0xff /* parameters must be < 256 bytes */ #define _IOC_VOID 0x20000000 /* no parameters */ #define _IOC_OUT 0x40000000 /* copy out parameters */ #define _IOC_IN 0x80000000 /* copy in parameters */ #define _IOC_INOUT (_IOC_IN|_IOC_OUT) #define _IO(x,y) (_IOC_VOID|(#x[0]<<8)|y) #define _IOR(x,y,t) (_IOC_OUT|((sizeof(t)&_IOCPARM_MASK)<<16)|(#x[0]<<8)|y) #define _IORN(x,y,t) (_IOC_OUT|(((t)&_IOCPARM_MASK)<<16)|(#x[0]<<8)|y) #define _IOW(x,y,t) (_IOC_IN|((sizeof(t)&_IOCPARM_MASK)<<16)|(#x[0]<<8)|y) #define _IOWN(x,y,t) (_IOC_IN|(((t)&_IOCPARM_MASK)<<16)|(#x[0]<<8)|y) #define _IOWR(x,y,t) (_IOC_INOUT|((sizeof(t)&_IOCPARM_MASK)<<16)|(#x[0]<<8)|y) #define _IOWRN(x,y,t) (_IOC_INOUT|(((t)&_IOCPARM_MASK)<<16)|(#x[0]<<8)|y) #endif #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifndef MSDOS #ifndef HPUX #include #endif #include #include #include #endif #ifdef sun #ifdef SOLARIS2 #include #else #include #endif #endif #ifdef sgi #if 0 #include #endif #endif #include #include #include #include #include #include //#include #include /* gcc compat workaround! */ #define _STDDEF_H #include "tclxtend.h" #include "tclint.h" #include "tclunix.h" #include "tkconfig.h" #include "tkint.h" #include "mac.h" #include "view.h" #include "macros.h" /* Constants */ #define TRUE 1 #define FALSE 0 #ifdef MEGA #define SimWidth (120 * MEGA) #define SimHeight (100 * MEGA) #else #define SimWidth 120 #define SimHeight 100 #endif #define WORLD_X SimWidth #define WORLD_Y SimHeight #define HWLDX (SimWidth >>1) #define HWLDY (SimHeight >>1) #define QWX (SimWidth >>2) #define QWY (SimHeight >>2) #define SmX (SimWidth >>3) #define SmY ((SimHeight + 7) >>3) #define EDITOR_W (WORLD_X * 16) #define EDITOR_H (WORLD_Y * 16) #define MAP_W (WORLD_X * 3) #define MAP_H (WORLD_Y * 3) #define NIL 0 #define HORIZ 1 #define VERT 0 #define PROBNUM 10 #define HISTLEN 480 #define MISCHISTLEN 240 #define POWERMAPROW ((WORLD_X + 15) / 16) #ifdef MEGA #define POWERMAPLEN ((QUAD)(2 * POWERMAPROW * WORLD_Y)) #define POWERWORD(x, y) ((((QUAD)(x)) >>4) + (((QUAD)(y)) * POWERMAPROW)) #else #define POWERMAPLEN 1700 /* ??? PWRMAPSIZE */ #define POWERWORD(x, y) (((x) >>4) + ((y) <<3)) #endif #define SETPOWERBIT(x, y) PowerMap[POWERWORD((x), (y))] |= 1 << ((x) & 15) #define PWRMAPSIZE (POWERMAPROW * WORLD_Y) #define PWRSTKSIZE ((WORLD_X * WORLD_Y) / 4) #define ALMAP 0 /* all */ #define REMAP 1 /* residential */ #define COMAP 2 /* commercial */ #define INMAP 3 /* industrial */ #define PRMAP 4 /* power */ #define RDMAP 5 /* road */ #define PDMAP 6 /* population density */ #define RGMAP 7 /* rate of growth */ #define TDMAP 8 /* traffic density */ #define PLMAP 9 /* pollution */ #define CRMAP 10 /* crime */ #define LVMAP 11 /* land value */ #define FIMAP 12 /* fire radius */ #define POMAP 13 /* police radius */ #define DYMAP 14 /* dynamic */ #define NMAPS 15 /* These adjust frequency in Simulate() */ #define VALVERATE 2 #define CENSUSRATE 4 #define TAXFREQ 48 /* These are names of the 16 colors */ #define COLOR_WHITE 0 #define COLOR_YELLOW 1 #define COLOR_ORANGE 2 #define COLOR_RED 3 #define COLOR_DARKRED 4 #define COLOR_DARKBLUE 5 #define COLOR_LIGHTBLUE 6 #define COLOR_BROWN 7 #define COLOR_LIGHTGREEN 8 #define COLOR_DARKGREEN 9 #define COLOR_OLIVE 10 #define COLOR_LIGHTBROWN 11 #define COLOR_LIGHTGRAY 12 #define COLOR_MEDIUMGRAY 13 #define COLOR_DARKGRAY 14 #define COLOR_BLACK 15 /* Status Bits */ #define PWRBIT 32768 /*20 bit 15 */ #define CONDBIT 16384 /*10 bit 14 */ #define BURNBIT 8192 /*8 bit 13 */ #define BULLBIT 4096 /*4 bit 12 */ #define ANIMBIT 2048 /*2 bit 11 */ #define ZONEBIT 1024 /*1 bit 10 */ #define ALLBITS 64512 /* mask for upper 6 bits */ #define LOMASK 1023 /* mask for low 10 bits */ #define BLBNBIT (BULLBIT+BURNBIT) #define BLBNCNBIT (BULLBIT+BURNBIT+CONDBIT) #define BNCNBIT (BURNBIT+CONDBIT) /* Object & Sound Numbers */ #define TRA 1 #define COP 2 #define AIR 3 #define SHI 4 #define GOD 5 #define TOR 6 #define EXP 7 #define BUS 8 /* Max # of Objects */ #define OBJN 9 /* Graph Histories */ #define RES_HIST 0 #define COM_HIST 1 #define IND_HIST 2 #define MONEY_HIST 3 #define CRIME_HIST 4 #define POLLUTION_HIST 5 #define HISTORIES 6 #define ALL_HISTORIES ((1 <. * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" #if defined(MSDOS) || defined(OSF1) || defined(IS_INTEL) #define SWAP_SHORTS(a,b) _swap_shorts(a,b) #define SWAP_LONGS(a,b) _swap_longs(a,b) #define HALF_SWAP_LONGS(a,b) _half_swap_longs(a,b) static void _swap_shorts(short *buf, int len) { int i; /* Flip bytes in each short! */ for (i = 0; i < len; i++) { *buf = ((*buf & 0xFF) <<8) | ((*buf &0xFF00) >>8); buf++; } } static void _swap_longs(long *buf, int len) { int i; /* Flip bytes in each long! */ for (i = 0; i < len; i++) { long l = *buf; *buf = ((l & 0x000000ff) << 24) | ((l & 0x0000ff00) << 8) | ((l & 0x00ff0000) >> 8) | ((l & 0xff000000) >> 24); buf++; } } static void _half_swap_longs(long *buf, int len) { int i; /* Flip bytes in each long! */ for (i = 0; i < len; i++) { long l = *buf; *buf = ((l & 0x0000ffff) << 16) | ((l & 0xffff0000) >> 16); buf++; } } #else #define SWAP_SHORTS(a, b) #define SWAP_LONGS(a, b) #define HALF_SWAP_LONGS(a, b) #endif static int _load_short(short *buf, int len, FILE *f) { if (fread(buf, sizeof(short), len, f) != len) return 0; SWAP_SHORTS(buf, len); /* to intel */ return 1; } static int _load_long(long *buf, int len, FILE *f) { if (fread(buf, sizeof(long), len, f) != len) return 0; SWAP_LONGS(buf, len); /* to intel */ return 1; } static int _save_short(short *buf, int len, FILE *f) { SWAP_SHORTS(buf, len); /* to MAC */ if (fwrite(buf, sizeof(short), len, f) != len) return 0; SWAP_SHORTS(buf, len); /* back to intel */ return 1; } static int _save_long(long *buf, int len, FILE *f) { SWAP_LONGS(buf, len); /* to MAC */ if (fwrite(buf, sizeof(long), len, f) != len) return 0; SWAP_LONGS(buf, len); /* back to intel */ return 1; } static int _load_file(char *filename, char *dir) { FILE *f; char path[512]; QUAD size; #ifdef MSDOS if (dir != NULL) { sprintf(path, "%s\\%s", dir, filename); filename = path; } if ((f = fopen(filename, "rb")) == NULL) { return 0; } #else if (dir != NULL) { sprintf(path, "%s/%s", dir, filename); filename = path; } if ((f = fopen(filename, "r")) == NULL) { return (0); } #endif fseek(f, 0L, SEEK_END); size = ftell(f); fseek(f, 0L, SEEK_SET); switch (size) { case 27120: /* Normal city */ break; case 99120: /* 2x2 city */ break; case 219120: /* 3x3 city */ break; default: return (0); } if ((_load_short(ResHis, HISTLEN / 2, f) == 0) || (_load_short(ComHis, HISTLEN / 2, f) == 0) || (_load_short(IndHis, HISTLEN / 2, f) == 0) || (_load_short(CrimeHis, HISTLEN / 2, f) == 0) || (_load_short(PollutionHis, HISTLEN / 2, f) == 0) || (_load_short(MoneyHis, HISTLEN / 2, f) == 0) || (_load_short(MiscHis, MISCHISTLEN / 2, f) == 0) || (_load_short((&Map[0][0]), WORLD_X * WORLD_Y, f) < 0)) { /* TODO: report error */ fclose(f); return(0); } fclose(f); return(1); } int loadFile(char *filename) { long l; if (_load_file(filename, NULL) == 0) return(0); /* total funds is a long..... MiscHis is array of shorts */ /* total funds is being put in the 50th & 51th word of MiscHis */ /* find the address, cast the ptr to a lontPtr, take contents */ l = *(QUAD *)(MiscHis + 50); HALF_SWAP_LONGS(&l, 1); SetFunds(l); l = *(QUAD *)(MiscHis + 8); HALF_SWAP_LONGS(&l, 1); CityTime = l; autoBulldoze = MiscHis[52]; /* flag for autoBulldoze */ autoBudget = MiscHis[53]; /* flag for autoBudget */ autoGo = MiscHis[54]; /* flag for autoGo */ UserSoundOn = MiscHis[55]; /* flag for the sound on/off */ CityTax = MiscHis[56]; SimSpeed = MiscHis[57]; // sim_skips = sim_skip = 0; ChangeCensus(); MustUpdateOptions = 1; /* yayaya */ l = *(QUAD *)(MiscHis + 58); HALF_SWAP_LONGS(&l, 1); policePercent = l / 65536.0; l = *(QUAD *)(MiscHis + 60); HALF_SWAP_LONGS(&l, 1); firePercent = l / 65536.0; l = *(QUAD *)(MiscHis + 62); HALF_SWAP_LONGS(&l, 1); roadPercent = l / 65536.0; policePercent = (*(QUAD*)(MiscHis + 58)) / 65536.0; /* and 59 */ firePercent = (*(QUAD*)(MiscHis + 60)) / 65536.0; /* and 61 */ roadPercent =(*(QUAD*)(MiscHis + 62)) / 65536.0; /* and 63 */ if (CityTime < 0) CityTime = 0; if ((CityTax > 20) || (CityTax < 0)) CityTax = 7; if ((SimSpeed < 0) || (SimSpeed > 3)) SimSpeed = 3; setSpeed(SimSpeed); setSkips(0); InitFundingLevel(); /* set the scenario id to 0 */ InitWillStuff(); ScenarioID = 0; InitSimLoad = 1; DoInitialEval = 0; DoSimInit(); InvalidateEditors(); InvalidateMaps(); return (1); } int saveFile(char *filename) { long l; FILE *f; #ifdef MSDOS if ((f = fopen(filename, "wb")) == NULL) { #else if ((f = fopen(filename, "w")) == NULL) { #endif /* TODO: report error */ return(0); } /* total funds is a long..... MiscHis is array of ints */ /* total funds is bien put in the 50th & 51th word of MiscHis */ /* find the address, cast the ptr to a lontPtr, take contents */ l = TotalFunds; HALF_SWAP_LONGS(&l, 1); (*(QUAD *)(MiscHis + 50)) = l; l = CityTime; HALF_SWAP_LONGS(&l, 1); (*(QUAD *)(MiscHis + 8)) = l; MiscHis[52] = autoBulldoze; /* flag for autoBulldoze */ MiscHis[53] = autoBudget; /* flag for autoBudget */ MiscHis[54] = autoGo; /* flag for autoGo */ MiscHis[55] = UserSoundOn; /* flag for the sound on/off */ MiscHis[57] = SimSpeed; MiscHis[56] = CityTax; /* post release */ /* yayaya */ l = (int)(policePercent * 65536); HALF_SWAP_LONGS(&l, 1); (*(QUAD *)(MiscHis + 58)) = l; l = (int)(firePercent * 65536); HALF_SWAP_LONGS(&l, 1); (*(QUAD *)(MiscHis + 60)) = l; l = (int)(roadPercent * 65536); HALF_SWAP_LONGS(&l, 1); (*(QUAD *)(MiscHis + 62)) = l; if ((_save_short(ResHis, HISTLEN / 2, f) == 0) || (_save_short(ComHis, HISTLEN / 2, f) == 0) || (_save_short(IndHis, HISTLEN / 2, f) == 0) || (_save_short(CrimeHis, HISTLEN / 2, f) == 0) || (_save_short(PollutionHis, HISTLEN / 2, f) == 0) || (_save_short(MoneyHis, HISTLEN / 2, f) == 0) || (_save_short(MiscHis, MISCHISTLEN / 2, f) == 0) || (_save_short((&Map[0][0]), WORLD_X * WORLD_Y, f) < 0)) { /* TODO: report error */ fclose(f); return(0); } fclose(f); return(1); } LoadScenario(short s) { char *name, *fname; if (CityFileName != NULL) { ckfree(CityFileName); CityFileName = NULL; } SetGameLevel(0); if ((s < 1) || (s > 8)) s = 1; switch (s) { case 1: name = "Dullsville"; fname = "snro.111"; ScenarioID = 1; CityTime = ((1900 - 1900) * 48) + 2; SetFunds(5000); break; case 2: name = "San Francisco"; fname = "snro.222"; ScenarioID = 2; CityTime = ((1906 - 1900) * 48) + 2; SetFunds(20000); break; case 3: name = "Hamburg"; fname = "snro.333"; ScenarioID = 3; CityTime = ((1944 - 1900) * 48) + 2; SetFunds(20000); break; case 4: name = "Bern"; fname = "snro.444"; ScenarioID = 4; CityTime = ((1965 - 1900) * 48) + 2; SetFunds(20000); break; case 5: name = "Tokyo"; fname = "snro.555"; ScenarioID = 5; CityTime = ((1957 - 1900) * 48) + 2; SetFunds(20000); break; case 6: name = "Detroit"; fname = "snro.666"; ScenarioID = 6; CityTime = ((1972 - 1900) * 48) + 2; SetFunds(20000); break; case 7: name = "Boston"; fname = "snro.777"; ScenarioID = 7; CityTime = ((2010 - 1900) * 48) + 2; SetFunds(20000); break; case 8: name = "Rio de Janeiro"; fname = "snro.888"; ScenarioID = 8; CityTime = ((2047 - 1900) * 48) + 2; SetFunds(20000); break; } setAnyCityName(name); // sim_skips = sim_skip = 0; InvalidateMaps(); InvalidateEditors(); setSpeed(3); CityTax = 7; gettimeofday(&start_time, NULL); _load_file(fname, ResourceDir); InitWillStuff(); InitFundingLevel(); UpdateFunds(); InvalidateEditors(); InvalidateMaps(); InitSimLoad = 1; DoInitialEval = 0; DoSimInit(); DidLoadScenario(); Kick(); } DidLoadScenario() { Eval("UIDidLoadScenario"); } int LoadCity(char *filename) { char *cp; char msg[256]; if (loadFile(filename)) { if (CityFileName != NULL) ckfree(CityFileName); CityFileName = (char *)ckalloc(strlen(filename) + 1); strcpy(CityFileName, filename); if (cp = (char *)rindex(filename, '.')) *cp = 0; #ifdef MSDOS if (cp = (char *)rindex(filename, '\\')) #else if (cp = (char *)rindex(filename, '/')) #endif cp++; else cp = filename; filename = (char *)ckalloc(strlen(cp) + 1); strcpy(filename, cp); setCityName(filename); gettimeofday(&start_time, NULL); InvalidateMaps(); InvalidateEditors(); DidLoadCity(); return (1); } else { sprintf(msg, "Unable to load a city from the file named \"%s\". %s", filename ? filename : "(null)", errno ? strerror(errno) : ""); DidntLoadCity(msg); return (0); } } DidLoadCity() { Eval("UIDidLoadCity"); } DidntLoadCity(char *msg) { char buf[1024]; sprintf(buf, "UIDidntLoadCity {%s}", msg); Eval(buf); } SaveCity() { char msg[256]; if (CityFileName == NULL) { DoSaveCityAs(); } else { if (saveFile(CityFileName)) DidSaveCity(); else { sprintf(msg, "Unable to save the city to the file named \"%s\". %s", CityFileName ? CityFileName : "(null)", errno ? strerror(errno) : ""); DidntSaveCity(msg); } } } DoSaveCityAs() { Eval("UISaveCityAs"); } DidSaveCity() { Eval("UIDidSaveCity"); } DidntSaveCity(char *msg) { char buf[1024]; sprintf(buf, "UIDidntSaveCity {%s}", msg); Eval(buf); } SaveCityAs(char *filename) { char msg[256]; char *cp; if (CityFileName != NULL) ckfree(CityFileName); CityFileName = (char *)ckalloc(strlen(filename) + 1); strcpy(CityFileName, filename); if (saveFile(CityFileName)) { if (cp = (char *)rindex(filename, '.')) *cp = 0; #ifdef MSDOS if (cp = (char *)rindex(filename, '\\')) #else if (cp = (char *)rindex(filename, '/')) #endif cp++; else cp = filename; filename = (char *)ckalloc(strlen(cp) + 1); strcpy(filename, cp); setCityName(cp); DidSaveCity(); } else { sprintf(msg, "Unable to save the city to the file named \"%s\". %s", CityFileName ? CityFileName : "(null)", errno ? strerror(errno) : ""); DidntSaveCity(msg); } } micropolis-activity/src/sim/makefile0000664000076400007640000000271110724145723020113 0ustar simcitysimcityXINCLUDE = /usr/include/X11 TCLHOME = ../tcl TKHOME = ../tk TCLXHOME = ../tclx TCLLIBRARY = /usr/local/lib/tcl TKLIBRARY = /usr/local/lib/tk CC = gcc OPTFLAGS = -O3 #OPTFLAGS = -g #DEFINES = -DIS_LINUX -DIS_INTEL -DCAM -DNET DEFINES = -DIS_LINUX -DIS_INTEL CFLAGS = $(OPTFLAGS) $(DEFINES) #LDFLAGS = -Bstatic INSTALL = install -s INCLUDES = \ -Iheaders \ -I$(XPMHOME) \ -I$(XINCLUDE) \ -I$(TCLHOME) \ -I$(TCLXHOME)/src \ -I$(TKHOME) CPPFLAGS = $(INCLUDES) LIBS = $(TCLXHOME)/libtk.a \ $(TCLXHOME)/libtcl.a \ -lm \ -lX11 \ -lXext \ -lXpm SRCS = \ sim.c \ s_alloc.c \ s_disast.c \ s_eval.c \ s_gen.c \ s_init.c \ s_msg.c \ s_power.c \ s_scan.c \ s_sim.c \ s_traf.c \ s_zone.c \ s_fileio.c \ g_setup.c \ g_ani.c \ g_bigmap.c \ g_map.c \ g_smmaps.c \ w_stubs.c \ w_sound.c \ w_resrc.c \ w_keys.c \ w_util.c \ w_con.c \ w_eval.c \ w_budget.c \ w_graph.c \ w_date.c \ w_update.c \ w_tool.c \ w_x.c \ w_tk.c \ w_sim.c \ w_editor.c \ w_map.c \ w_sprite.c \ w_piem.c \ w_inter.c \ w_cam.c \ g_cam.c \ w_net.c \ rand.c \ random.c HEADERS = \ headers/mac.h \ headers/macros.h \ headers/sim.h \ headers/view.h \ headers/animtab.h OBJS = $(SRCS:.c=.o) ALLOBJS = $(OBJS) all: sim lint: alint $(INCLUDES) $(SRCS) > LINT sim: $(ALLOBJS) $(CC) $(CFLAGS) $(LDFLAGS) $(INCLUDES) $(ALLOBJS) $(LIBS) -o sim clean: rm -f $(OBJS) \ sim a.out core gmon.out *~ *.BAK Headers/*~ etags: etags $(SRCS) $(HEADERS) micropolis-activity/src/sim/w_util.c0000664000076400007640000001574610724145723020076 0ustar simcitysimcity/* w_util.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" /* comefrom: drawTaxesCollected incBoxValue decBoxValue drawCurrentFunds drawActualBox UpdateFunds updateCurrentCost */ makeDollarDecimalStr(char *numStr, char *dollarStr) { register short leftMostSet; short numOfDigits; short numOfChars; register short numOfCommas; register short dollarIndex = 0; register short numIndex = 0; register short x; numOfDigits = strlen(numStr); if (numOfDigits == 1) { dollarStr[0] = '$'; dollarStr[1] = numStr[ 0 ]; dollarStr[2] = 0; return; } else if (numOfDigits == 2) { dollarStr[0] = '$'; dollarStr[1] = numStr[0]; dollarStr[2] = numStr[1]; dollarStr[3] = 0; return; } else if (numOfDigits == 3) { dollarStr[0] = '$'; dollarStr[1] = numStr[0]; dollarStr[2] = numStr[1]; dollarStr[3] = numStr[2]; dollarStr[4] = 0; } else { leftMostSet = numOfDigits % 3; if (leftMostSet == 0) leftMostSet = 3; numOfCommas = (numOfDigits - 1) / 3; /* add 1 for the dollar sign */ numOfChars = numOfDigits + numOfCommas + 1; dollarStr[numOfChars] = 0; dollarStr[dollarIndex++] = '$'; for (x = 1; x <= leftMostSet; x++) { dollarStr[dollarIndex++] = numStr[numIndex++]; } for (x = 1; x <= numOfCommas; x++) { dollarStr[dollarIndex++] = ','; dollarStr[dollarIndex++] = numStr[numIndex++]; dollarStr[dollarIndex++] = numStr[numIndex++]; dollarStr[dollarIndex++] = numStr[numIndex++]; } } } Pause() { if (!sim_paused) { sim_paused_speed = SimMetaSpeed; setSpeed(0); sim_paused = 1; } } Resume() { if (sim_paused) { sim_paused = 0; setSpeed(sim_paused_speed); } } setSpeed(short speed) { if (speed < 0) speed = 0; else if (speed > 3) speed = 3; SimMetaSpeed = speed; if (sim_paused) { sim_paused_speed = SimMetaSpeed; speed = 0; } SimSpeed = speed; if (speed == 0) { StopMicropolisTimer(); } else { StartMicropolisTimer(); } { char buf[256]; sprintf(buf, "UISetSpeed %d", sim_paused ? 0 : SimMetaSpeed); Eval(buf); } } setSkips(int skips) { sim_skips = skips; sim_skip = 0; } SetGameLevelFunds(short level) { switch (level) { default: case 0: SetFunds(20000); SetGameLevel(0); break; case 1: SetFunds(10000); SetGameLevel(1); break; case 2: SetFunds(5000); SetGameLevel(2); break; } } SetGameLevel(short level) { GameLevel = level; UpdateGameLevel(); } UpdateGameLevel() { char buf[256]; sprintf(buf, "UISetGameLevel %d", GameLevel); Eval(buf); } setCityName(char *name) { char *cp = name; while (*cp) { if (!isalnum(*cp)) *cp = '_'; cp++; } setAnyCityName(name); } setAnyCityName(char *name) { char buf[1024]; CityName = name; sprintf(buf, "UISetCityName {%s}", CityName); Eval(buf); } SetYear(int year) { // Must prevent year from going negative, since it screws up the non-floored modulo arithmetic. if (year < StartingYear) { year = StartingYear; } year = (year - StartingYear) - (CityTime / 48); CityTime += year * 48; doTimeStuff(); } int CurrentYear() { return (CityTime/48 + StartingYear); } DoSetMapState(SimView *view, short state) { char buf[256]; view->map_state = state; view->invalid = 1; EventuallyRedrawView(view); sprintf(buf, "UISetMapState %s %d", Tk_PathName(view->tkwin), state); Eval(buf); } DoNewGame() { Eval("UINewGame"); } DoGeneratedCityImage(char *name, int time, int pop, char *class, int score) { /* XXX: TODO: print city */ } DoStartElmd() { /* XXX: TODO: start elm daemon */ } DoPopUpMessage(char *msg) { char buf[1024]; sprintf(buf, "UIPopUpMessage {%s}", msg); Eval(buf); } micropolis-activity/src/sim/g_ani.c0000664000076400007640000001007210724145723017633 0ustar simcitysimcity/* g_ani.c: Animate Tiles, for Unix Micropolis. * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" #include "animtab.h" /* comefrom: moveWorld doEditWindow scoreDoer doMapInFront graphDoer */ animateTiles(void) { unsigned short tilevalue, tileflags; unsigned short *tMapPtr; int i; /* Animate whole world */ tMapPtr = (unsigned short *)&(Map[0][0]); for (i = WORLD_X * WORLD_Y; i > 0; i--) { tilevalue = (*tMapPtr); if (tilevalue & ANIMBIT) { tileflags = tilevalue & ALLBITS; tilevalue &= LOMASK; #if 0 do { tilevalue = aniTile[tilevalue]; } while (!(tileSynch & aniSynch[tilevalue])); #else tilevalue = aniTile[tilevalue]; #endif tilevalue |= tileflags; (*tMapPtr) = tilevalue; } tMapPtr++; } #if 0 tileSynch = (tileSynch == 0x80) ? 0x01 : (tileSynch << 1); #endif } micropolis-activity/src/sim/w_print.c0000664000076400007640000000767110724145723020253 0ustar simcitysimcity/* w_print.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" PrintRect (int x, int y, int w, int h) { int xx, yy; char tally[TILE_COUNT]; PrintHeader(x, y, w, h); for (xx = 0; XX < TILE_COUNT; xx++) { tally[xx] = 0; } for (yy = y; yy < (y + h); yy++) { for (xx = ; xx < (x + w); xx++) { tally[TILE_COUNT]++; } } for (xx = 0; XX < TILE_COUNT; xx++) { if (tally[xx]) { PrintDefTile(xx); } } FirstRow(); for (yy = y; yy < (y + h); yy++) { for (xx = x; xx < (x + w); xx++) { PrintTile(Map[x][y] & LOMASK); } PrintNextRow(); } PrintFinish(x, y, w, h); PrintTrailer(x, y, w, h); } DefTile(int tile) { } PrintTile(int tile) { } micropolis-activity/src/sim/w_x.c0000664000076400007640000011250410724145723017356 0ustar simcitysimcity/* w_x.c: X Window System support * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" struct XDisplay *XDisplays = NULL; int DisplayCount = 0; #ifdef IS_LINUX int FlushStyle = 3; #else int FlushStyle = 4; #endif int GotXError; unsigned char ColorIntensities[] = { /* COLOR_WHITE */ 255, /* COLOR_YELLOW */ 170, /* COLOR_ORANGE */ 127, /* COLOR_RED */ 85, /* COLOR_DARKRED */ 63, /* COLOR_DARKBLUE */ 76, /* COLOR_LIGHTBLUE */ 144, /* COLOR_BROWN */ 118, /* COLOR_LIGHTGREEN */ 76, /* COLOR_DARKGREEN */ 42, /* COLOR_OLIVE */ 118, /* COLOR_LIGHTBROWN */ 144, /* COLOR_LIGHTGRAY */ 191, /* COLOR_MEDIUMGRAY */ 127, /* COLOR_DARKGRAY */ 63, /* COLOR_BLACK */ 0, }; ViewToTileCoords(SimView *view, int x, int y, int *outx, int *outy) { x = (view->pan_x - ((view->w_width >>1) - x)) >>4; y = (view->pan_y - ((view->w_height >>1) - y)) >>4; if (x < 0) x = 0; if (x >= WORLD_X) x = WORLD_X - 1; if (y < 0) y = 0; if (y >= WORLD_Y) y = WORLD_Y - 1; if (x < view->tile_x) x = view->tile_x; if (x >= view->tile_x + view->tile_width) x = view->tile_x + view->tile_width - 1; if (y < view->tile_y) y = view->tile_y; if (y >= view->tile_y + view->tile_height) y = view->tile_y + view->tile_height - 1; if (view->tool_x_const != -1) x = view->tool_x_const; if (view->tool_y_const != -1) y = view->tool_y_const; *outx = x; *outy = y; } ViewToPixelCoords(SimView *view, int x, int y, int *outx, int *outy) { x = view->pan_x - ((view->w_width >>1) - x); y = view->pan_y - ((view->w_height >>1) - y); if (x < 0) x = 0; if (x >= (WORLD_X <<4)) x = (WORLD_X <<4) - 1; if (y < 0) y = 0; if (y >= (WORLD_Y <<4)) y = (WORLD_Y <<4) - 1; if (x < (view->tile_x <<4)) x = (view->tile_x <<4); if (x >= ((view->tile_x + view->tile_width) <<4)) x = ((view->tile_x + view->tile_width) <<4) - 1; if (y < (view->tile_y <<4)) y = (view->tile_y <<4); if (y >= ((view->tile_y + view->tile_height) <<4)) y = ((view->tile_y + view->tile_height) <<4) - 1; if (view->tool_x_const != -1) x = (view->tool_x_const <<4) + 8; if (view->tool_y_const != -1) y = (view->tool_y_const <<4) + 8; *outx = x; *outy = y; } UpdateFlush() { struct XDisplay *xd; if (sim_skips > 0) { if (sim_skip > 0) { sim_skip--; return; } sim_skip = sim_skips; } switch (FlushStyle) { case 0: break; case 1: for (xd = XDisplays; xd != NULL; xd = xd->next) XFlush(xd->dpy); break; case 2: for (xd = XDisplays; xd != NULL; xd = xd->next) XSync(xd->dpy, False); break; case 3: if (XDisplays && XDisplays->next) { for (xd = XDisplays; xd != NULL; xd = xd->next) { XFlush(xd->dpy); } } for (xd = XDisplays; xd != NULL; xd = xd->next) { XSync(xd->dpy, False); } break; case 4: for (xd = XDisplays; xd != NULL; xd = xd->next) { #ifndef IS_LINUX /* XXX TODO: figure this out for linux and new x libs */ if ((xd->request != xd->dpy->request) || (xd->last_request_read != xd->dpy->last_request_read)) { XSync(xd->dpy, False); xd->request = xd->dpy->request; xd->last_request_read = xd->dpy->last_request_read; } #endif } break; } } int CatchXError(Display *dpy, XErrorEvent *err) { GotXError = 1; #if 0 printf("GOT X ERROR code %d request code %d %d\n", err->error_code, err->request_code, err->minor_code); #endif return (0); } DoStopMicropolis() { (void)XSetErrorHandler(CatchXError); StopToolkit(); if (sim) { while (sim->editor != NULL) { DestroyView(sim->editor); } while (sim->map != NULL) { DestroyView(sim->map); } while (sim->graph != NULL) { DestroyGraph(sim->graph); } #ifdef CAM while (sim->scam != NULL) { DestroyCam(sim->scam); } #endif } } DoTimeoutListen() { while (Tk_DoOneEvent(TK_DONT_WAIT)) ; } Sim * MakeNewSim() { Sim *sim; sim = (Sim *)ckalloc(sizeof(Sim)); sim->editors = 0; sim->editor = NULL; sim->maps = 0; sim->map = NULL; sim->graphs = 0; sim->graph = NULL; sim->sprites = 0; sim->sprite = NULL; #ifdef CAM sim->scams = 0; sim->scam = NULL; #endif sim->overlay = NULL; return (sim); } XDisplay * FindXDisplay(Tk_Window tkwin) { XDisplay *xd; int d = 8; unsigned long valuemask = 0; XGCValues values; XColor rgb, *color; Display *dpy = Tk_Display(tkwin); Screen *screen = Tk_Screen(tkwin); #ifdef IS_LINUX char *display = ":0"; /* XXX TODO: fix this for new x libs */ #else char *display = dpy->display_name; #endif for (xd = XDisplays; xd && (xd->screen != screen); xd = xd->next) ; if (xd != NULL) { return (xd); } else { xd = (struct XDisplay *)ckalloc(sizeof (struct XDisplay)); xd->references = 0; xd->dpy = dpy; xd->display = (char *)ckalloc(strlen(display) + 1); xd->tkDisplay = ((TkWindow *)tkwin)->dispPtr; strcpy(xd->display, display); xd->screen = screen; xd->root = RootWindowOfScreen(xd->screen); xd->visual = Tk_DefaultVisual(xd->screen); xd->depth = Tk_DefaultDepth(xd->screen); xd->colormap = Tk_DefaultColormap(xd->screen); xd->color = (xd->depth != 1); xd->pixels = (int *)ckalloc(16 * sizeof(int)); if (xd->color) { /* Color screen */ int GotColor = 1; #define GETCOLOR(i, name) \ if (!GotColor) { \ xd->pixels[i] = Rand16() & 255; \ } else { \ if ((color = Tk_GetColor(tk_mainInterp, tkwin, \ None, name)) == NULL) { \ xd->pixels[i] = Rand16() & 255; \ GotColor = 0; \ } else { \ switch (xd->depth) { \ case 8: \ xd->pixels[i] = \ color->pixel; \ break; \ case 15: \ xd->pixels[i] = \ (((color->red >> (8 + 3)) & 0x1f) << (5 + 5)) | \ (((color->green >> (8 + 2)) & 0x1f) << (5)) | \ (((color->blue >> (8 + 3)) & 0x1f) << (0)); \ break; \ case 16: \ xd->pixels[i] = \ (((color->red >> (8 + 3)) & 0x1f) << (6 + 5)) | \ (((color->green >> (8 + 2)) & 0x3f) << (5)) | \ (((color->blue >> (8 + 3)) & 0x1f) << (0)); \ break; \ case 24: \ xd->pixels[i] = \ ((color->red & 0xff) << 16) | \ ((color->green & 0xff) << 8) | \ ((color->blue & 0xff) << 0); \ break; \ case 32: \ xd->pixels[i] = \ ((color->red & 0xff) << 16) | \ ((color->green & 0xff) << 8) | \ ((color->blue & 0xff) << 0); \ break; \ } \ } \ } if ((xd->depth == 8) && (Tk_DefaultColormap(xd->screen) == DefaultColormapOfScreen(xd->screen))) { xd->pixels[COLOR_WHITE] = WhitePixelOfScreen(xd->screen); xd->pixels[COLOR_BLACK] = BlackPixelOfScreen(xd->screen); } else { GETCOLOR(COLOR_WHITE, "#ffffff"); GETCOLOR(COLOR_BLACK, "#000000"); } GETCOLOR(COLOR_YELLOW, "#ffff00"); GETCOLOR(COLOR_ORANGE, "#ff7f00"); GETCOLOR(COLOR_RED, "#ff0000"); GETCOLOR(COLOR_DARKRED, "#bf0000"); GETCOLOR(COLOR_DARKBLUE, "#0000e6"); GETCOLOR(COLOR_LIGHTBLUE, "#6666e6"); GETCOLOR(COLOR_BROWN, "#cc4c4c"); GETCOLOR(COLOR_LIGHTGREEN, "#00e600"); GETCOLOR(COLOR_DARKGREEN, "#007f00"); GETCOLOR(COLOR_OLIVE, "#997f4c"); GETCOLOR(COLOR_LIGHTBROWN, "#cc7f66"); GETCOLOR(COLOR_LIGHTGRAY, "#bfbfbf"); GETCOLOR(COLOR_MEDIUMGRAY, "#7f7f7f"); GETCOLOR(COLOR_DARKGRAY, "#3f3f3f"); if (!GotColor) { fprintf(stderr, "Oh, dear. There don't seem to be enough free colors on X display \"%s\".\n", xd->display); fprintf(stderr, "Micropolis will try to run anyway, but might look pretty weird!\n"); } } else { /* Black and white screen */ int white = WhitePixelOfScreen(xd->screen); int black = BlackPixelOfScreen(xd->screen); xd->pixels[COLOR_WHITE] = white; xd->pixels[COLOR_BLACK] = black; xd->pixels[COLOR_YELLOW] = white; xd->pixels[COLOR_ORANGE] = white; xd->pixels[COLOR_RED] = white; xd->pixels[COLOR_DARKRED] = black; xd->pixels[COLOR_DARKBLUE] = black; xd->pixels[COLOR_LIGHTBLUE] = white; xd->pixels[COLOR_BROWN] = black; xd->pixels[COLOR_LIGHTGREEN] = white; xd->pixels[COLOR_DARKGREEN] = black; xd->pixels[COLOR_OLIVE] = black; xd->pixels[COLOR_LIGHTBROWN] = white; xd->pixels[COLOR_LIGHTGRAY] = white; xd->pixels[COLOR_MEDIUMGRAY] = white; xd->pixels[COLOR_DARKGRAY] = black; } xd->gc = Tk_DefaultGC(xd->screen); XSetForeground(xd->dpy, xd->gc, xd->pixels[COLOR_BLACK]); XSetBackground(xd->dpy, xd->gc, xd->pixels[COLOR_WHITE]); XSetLineAttributes(xd->dpy, xd->gc, 1, LineSolid, CapButt, JoinMiter); XSetGraphicsExposures(xd->dpy, xd->gc, False); #ifndef MSDOS { int major, minor, event, error, pixmaps; if (WireMode || (XQueryExtension(xd->dpy, "MIT-SHM", /* Jeez! */ &major, &event, &error) != True) || (XShmQueryVersion(xd->dpy, &major, &minor, &pixmaps) != True)) { fprintf(stderr, "Darn, X display \"%s\" doesn't support the shared memory extension.\n", xd->display); xd->shared = 0; } else { if (!pixmaps) { fprintf(stderr, "Darn, X display \"%s\" claims to support the shared memory extension,\n", xd->display); fprintf(stderr, "but is too lame to support shared memory pixmaps, so Micropolis will run slower.\n"); fprintf(stderr, "Please complain to your X server vendor, %s\n", XServerVendor(xd->dpy)); xd->shared = -1; } else { fprintf(stderr, "Cool, I found the shared memory extension!\n"); xd->shared = 1; } } } #else xd->shared = 0; #endif xd->request = -1; xd->last_request_read = -1; xd->big_tile_pixmap = None; xd->objects = NULL; xd->overlay_gc = NULL; xd->gray25_stipple = None; xd->gray50_stipple = None; xd->gray75_stipple = None; xd->vert_stipple = None; xd->horiz_stipple = None; xd->diag_stipple = None; xd->big_tile_image = xd->small_tile_image = NULL; xd->next = XDisplays; XDisplays = xd; } return (xd); } IncRefDisplay(XDisplay *xd) { xd->references++; } DecRefDisplay(XDisplay *xd) { if ((--xd->references) == 0) { /* I'd blow it away, but tk may still be using the display */ } } SimView * InitNewView(SimView *view, char *title, int class, int w, int h) { int type, i; int d = 8; unsigned long valuemask = 0; char *t; struct XDisplay *xd; XGCValues values; XColor rgb, *color; t = (char *)ckalloc(strlen(title) + 1); strcpy(t, title); view->next = NULL; view->title = t; view->type = -1; view->class = class; view->bigtiles = view->smalltiles = NULL; view->pixels = NULL; view->line_bytes = 0; view->line_bytes8 = 0; view->pixel_bytes = 0; view->depth = 0; view->data = NULL; view->data8 = NULL; view->visible = 0; view->invalid = 0; view->skips = view->skip = 0; view->update = 0; view->map_state = ALMAP; view->show_editors = 1; view->tool_showing = 0; view->tool_mode = 0; view->tool_x = view->tool_y = 0; view->tool_x_const = view->tool_y_const = -1; view->tool_state = dozeState; view->tool_state_save = -1; view->super_user = 0; view->show_me = 1; view->dynamic_filter = 0; view->auto_scroll_token = 0; view->tool_event_time = 0; view->tool_last_event_time = 0; view->w_x = view->w_y = 0; view->w_width = view->w_height = 16; view->m_width = view->m_height = 0; view->i_width = w; view->i_height = h; view->pan_x = view->pan_y = 0; view->tile_x = view->tile_y = 0; view->tile_width = view->tile_height = 0; view->screen_x = view->screen_y = 0; view->screen_width = view->screen_height = 0; view->last_x = view->last_y = view->last_button = 0; view->track_info = NULL; view->message_var = NULL; /* This stuff was initialized in our caller (SimViewCmd) */ /* view->tkwin = NULL; */ /* view->interp = NULL; */ /* view->flags = 0; */ view->x = NULL; view->shminfo = NULL; view->tiles = NULL; view->other_tiles = NULL; view->image = NULL; view->other_image = NULL; view->other_data = NULL; view->pixmap = None; view->pixmap2 = None; view->overlay_pixmap = None; view->overlay_valid = 0; view->fontPtr = NULL; view->updates = 0; view->update_real = view->update_user = view->update_system = 0.0; view->update_context = 0; view->auto_goto = 0; view->auto_going = 0; view->auto_x_goal = view->auto_x_goal = 0; view->auto_speed = 75; view->follow = NULL; view->sound = 1; view->width = 0; view->height = 0; view->show_overlay = 1; view->overlay_mode = 0; view->x = FindXDisplay(view->tkwin); IncRefDisplay(view->x); /* view->x->shared is 1 if the shared memory extension is present and supports shared memory pixmaps, and -1 if it is present but doesn't. */ if (view->x->shared != 1) { view->type = X_Wire_View; } else { view->type = X_Mem_View; } GetPixmaps(view->x); view->pixels = view->x->pixels; if (w == EDITOR_W) w = 256; /* XXX */ if (h == EDITOR_H) h = 256; /* XXX */ view->pan_x = w / 2; view->pan_y = h / 2; DoResizeView(view, w, h); GetViewTiles(view); return (view); } DestroyView(SimView *view) { SimView **vp; CancelRedrawView(view); for (vp = ((view->class == Editor_Class) ? (&sim->editor) : (&sim->map)); (*vp) != NULL; vp = &((*vp)->next)) { if ((*vp) == view) { (*vp) = view->next; if (view->class == Editor_Class) sim->editors--; else sim->maps--; break; } } if (view->title != NULL) { ckfree (view->title); view->title = NULL; } if (view->pixmap != None) { XFreePixmap(view->x->dpy, view->pixmap); view->pixmap = None; } if (view->pixmap2 != None) { XFreePixmap(view->x->dpy, view->pixmap2); view->pixmap2 = None; } if (view->overlay_pixmap != None) { XFreePixmap(view->x->dpy, view->overlay_pixmap); view->overlay_pixmap = None; } if (view->auto_scroll_token) { Tk_DeleteTimerHandler(view->auto_scroll_token); view->auto_scroll_token = 0; } #ifndef MSDOS if (view->shminfo) { XShmDetach(view->x->dpy, view->shminfo); shmdt(view->shminfo->shmaddr); shmctl(view->shminfo->shmid, IPC_RMID, 0); ckfree(view->shminfo); view->shminfo = NULL; if (view->image) { view->image->data = NULL; view->data = NULL; XDestroyImage(view->image); view->image = NULL; } } else { #endif if (view->image) { if (view->image->data) { ckfree(view->image->data); view->image->data = NULL; } view->data = NULL; XDestroyImage(view->image); view->image = NULL; } #ifndef MSDOS } #endif if (view->other_image) { if (view->other_image->data) { ckfree(view->other_image->data); view->other_image->data = NULL; } view->other_data = NULL; XDestroyImage(view->other_image); view->other_image = NULL; } if (view->tiles) FreeTiles(view); DecRefDisplay(view->x); ckfree((char *) view); } unsigned char * AllocPixels(int len, unsigned char pixel) { int i; unsigned char *data, *cp; cp = data = (unsigned char *)ckalloc(len); for (i = len; i > 0; i--) { *(cp++) = pixel; } return (data); } DoResizeView(SimView *view, int w, int h) { int resize = 0; view->w_width = w; view->w_height = h; if (view->class == Map_Class) { /* Map_Class */ view->m_width = w; view->m_height = h; if (view->pixmap2 == None) { view->pixmap2 = XCreatePixmap(view->x->dpy, view->x->root, w, h, view->x->depth); if (view->pixmap2 == None) { fprintf(stderr, "Sorry, Micropolis can't create a pixmap on X display \"%s\"!\n", view->x->display); sim_exit(1); // Just sets tkMustExit and ExitReturn return; } } } else { /* Editor_Class */ if ((w = (w + 31) & (~15)) > view->m_width) view->m_width = w, resize++; if ((h = (h + 31) & (~15)) > view->m_height) view->m_height = h, resize++; if (resize || (view->pixmap2 == None)) { if (view->pixmap2 != None) { XFreePixmap(view->x->dpy, view->pixmap2); view->pixmap2 = None; } view->pixmap2 = XCreatePixmap(view->x->dpy, view->x->root, view->m_width, view->m_height, view->x->depth); if (view->pixmap2 == None) { fprintf(stderr, "Sorry, Micropolis couldn't create a pixmap on X display \"%s\"!\n", view->x->display); sim_exit(1); // Just sets tkMustExit and ExitReturn return; } } if (resize || (view->overlay_pixmap == None)) { view->overlay_mode = 0; if (view->overlay_pixmap != None) { XFreePixmap(view->x->dpy, view->overlay_pixmap); view->overlay_pixmap = None; } view->overlay_pixmap = XCreatePixmap(view->x->dpy, view->x->root, view->m_width, view->m_height, 1); if (view->overlay_pixmap == None) { fprintf(stderr, "Sorry, Micropolis couldn't create another pixmap on X display \"%s\".\n", view->x->display); sim_exit(1); // Just sets tkMustExit and ExitReturn return; } if (view->x->overlay_gc == NULL) { unsigned long valuemask = 0; XGCValues values; view->x->overlay_gc = XCreateGC(view->x->dpy, view->overlay_pixmap, valuemask, &values); XSetForeground(view->x->dpy, view->x->overlay_gc, 0); XSetBackground(view->x->dpy, view->x->overlay_gc, 1); XSetLineAttributes(view->x->dpy, view->x->overlay_gc, 1, LineSolid, CapButt, JoinMiter); XSetGraphicsExposures(view->x->dpy, view->x->overlay_gc, False); } } } #ifndef MSDOS if (view->type != X_Mem_View) { goto SPRING_FORWARD; } if (resize || (view->image == NULL)) { if (view->shminfo && view->image) { if (view->pixmap != None) { XFreePixmap(view->x->dpy, view->pixmap); view->pixmap = None; } XShmDetach(view->x->dpy, view->shminfo); shmdt(view->shminfo->shmaddr); shmctl(view->shminfo->shmid, IPC_RMID, 0); view->image->data = NULL; if (view->data == view->data8) view->data8 = NULL; view->data = NULL; XDestroyImage(view->image); view->image = NULL; } #if 0 /* XShmPixmapFormat is documented but does not exist !!! */ if (XShmPixmapFormat(view->x->dpy) != ZPixmap) { fprintf(stderr, "Darn, display \"%s\" has the wrong shared memory format.\n", view->x->display); goto FALL_BACK; } #endif if (!view->shminfo) { view->shminfo = (XShmSegmentInfo *)ckalloc(sizeof (XShmSegmentInfo)); } view->image = XShmCreateImage(view->x->dpy, view->x->visual, view->x->depth, view->x->color ? ZPixmap : XYBitmap, NULL, view->shminfo, view->m_width, view->m_height); view->line_bytes = view->image->bytes_per_line; switch (view->x->depth) { case 1: view->pixel_bytes = 0; view->depth = 1; break; case 8: view->pixel_bytes = 1; view->depth = 8; break; case 15: view->pixel_bytes = 2; view->depth = 15; break; case 16: view->pixel_bytes = 2; view->depth = 16; break; case 24: /* XXX: TODO: 24 and 32 bit support */ view->pixel_bytes = 4; //view->pixel_bytes = 3; view->depth = 24; break; case 32: /* XXX: TODO: 24 and 32 bit support */ view->pixel_bytes = 4; view->depth = 32; break; default: view->pixel_bytes = 0; view->depth = 0; break; } // switch view->shminfo->shmid = shmget(IPC_PRIVATE, (view->line_bytes * view->m_height), (IPC_CREAT | 0777)); if (view->shminfo->shmid < 0) { perror("shmget"); fprintf(stderr, "Darn, Micropolis can't share memory with X display \"%s\".\n", view->x->display); goto FALL_BACK; } view->data = (unsigned char *)shmat(view->shminfo->shmid, 0, 0); if ((int)view->data == -1) { perror("shmat"); fprintf(stderr, "Darn, Micropolis can't find any memory to share with display \"%s\".\n", view->x->display); goto FALL_BACK; } view->image->data = (char *)view->data; view->shminfo->shmaddr = (char *)view->data; view->shminfo->readOnly = False; { int (*old)(); int result; int attached = 0; GotXError = 0; old = XSetErrorHandler(CatchXError); result = XShmAttach(view->x->dpy, view->shminfo); if (result == 0) { fprintf(stderr, "Darn, the X display \"%s\" can't access Micropolis's shared memory.\n", view->x->display); GotXError = 1; } XSync(view->x->dpy, False); if (!GotXError) { attached = 1; view->pixmap = XShmCreatePixmap(view->x->dpy, view->x->root, view->data, view->shminfo, view->m_width, view->m_height, view->x->depth); XSync(view->x->dpy, False); if (GotXError || (view->pixmap == None)) { fprintf(stderr, "Darn, Micropolis couldn't get a shared memory pixmap on X display \"%s\".\n", view->x->display); GotXError = 1; } } XSetErrorHandler(old); if (GotXError) { view->pixmap = None; if (attached) { XShmDetach(view->x->dpy, view->shminfo); } // if result = shmdt(view->shminfo->shmaddr); result = shmctl(view->shminfo->shmid, IPC_RMID, 0); ckfree(view->shminfo); view->shminfo = NULL; if (view->image) { view->image->data = NULL; view->data = NULL; XDestroyImage(view->image); view->image = NULL; } goto FALL_BACK; } if (view->x->color) { XSetForeground(view->x->dpy, view->x->gc, view->pixels[COLOR_LIGHTBROWN]); } else { XSetForeground(view->x->dpy, view->x->gc, view->pixels[COLOR_WHITE]); } XFillRectangle(view->x->dpy, view->pixmap, view->x->gc, 0, 0, view->m_width, view->m_height); } } goto FINISH; FALL_BACK: fprintf(stderr, "Falling back to the X network protocol on display \"%s\"...\n", view->x->display); #endif view->x->shared = 0; view->type = X_Wire_View; if (view->pixmap != None) { XFreePixmap(view->x->dpy, view->pixmap); view->pixmap = None; } #ifndef MSDOS if (view->shminfo) { if (view->shminfo->shmid >= 0) { if (view->shminfo->shmaddr) { shmdt(view->shminfo->shmaddr); } shmctl(view->shminfo->shmid, IPC_RMID, 0); } ckfree((char *)view->shminfo); view->shminfo = NULL; } #endif if (view->image) { view->image->data = NULL; XDestroyImage(view->image); view->image = NULL; } view->data = NULL; view->line_bytes = 0; view->pixel_bytes = 0; view->depth = 0; SPRING_FORWARD: if (resize || (view->pixmap == None)) { if (view->pixmap != None) { XFreePixmap(view->x->dpy, view->pixmap); view->pixmap = None; } view->pixmap = XCreatePixmap(view->x->dpy, view->x->root, view->m_width, view->m_height, view->x->depth); if (view->pixmap == None) { fprintf(stderr, "Sorry, Micropolis can't create pixmap on X display \"%s\".\n", view->x->display); sim_exit(1); // Just sets tkMustExit and ExitReturn return; } if (view->x->color) { XSetForeground(view->x->dpy, view->x->gc, view->pixels[COLOR_LIGHTBROWN]); } else { XSetForeground(view->x->dpy, view->x->gc, view->pixels[COLOR_WHITE]); } XFillRectangle(view->x->dpy, view->pixmap, view->x->gc, 0, 0, view->m_width, view->m_height); } FINISH: if (view->class == Editor_Class) { AllocTiles(view); DoAdjustPan(view); } else if (view->class == Map_Class) { if (view->type == X_Mem_View) { /* Memory Map */ if (view->x->color) { /* Color, Shared Memory */ view->data8 = view->data; view->line_bytes8 = view->line_bytes; /* XXX: ??? */ switch (view->x->depth) { case 8: view->pixel_bytes = 1; view->depth = 8; break; case 15: view->pixel_bytes = 2; view->depth = 15; break; case 16: view->pixel_bytes = 2; view->depth = 16; break; case 24: /* XXX: TODO: 24 and 32 bit support */ view->pixel_bytes = 4; //view->pixel_bytes = 3; view->depth = 24; break; case 32: /* XXX: TODO: 24 and 32 bit support */ view->pixel_bytes = 4; view->depth = 32; break; default: view->pixel_bytes = 0; view->depth = 0; break; } // switch } else { /* Black and White, Shared Memory */ if (view->other_image != NULL) { XDestroyImage(view->other_image); } view->line_bytes8 = view->m_width; /* XXX: fix depth */ view->pixel_bytes = 0; view->depth = 1; view->other_data = view->data8 = AllocPixels(view->m_height * view->line_bytes8, /* XXX: fix depth */ view->pixels[COLOR_WHITE]); view->other_image = XCreateImage(view->x->dpy, view->x->visual, 8, /* XXX: fix depth */ ZPixmap, 0, (char *)view->other_data, view->m_width, view->m_height, 8, view->line_bytes8); /* XXX: fix depth */ } } else { /* Wire Map */ int bitmap_pad; int bitmap_depth; if (view->image != NULL) { XDestroyImage(view->image); view->image = NULL; } if (view->other_image != NULL) { XDestroyImage(view->other_image); view->other_image = NULL; } if (view->x->color) { /* Color, Wire */ switch (view->x->depth) { case 8: view->pixel_bytes = 1; view->depth = 8; bitmap_pad = 8; bitmap_depth = 8; view->line_bytes8 = ((view->m_width * view->pixel_bytes) + 3) & (~3); break; case 15: view->pixel_bytes = 2; view->depth = 15; bitmap_pad = 16; bitmap_depth = 16; view->line_bytes8 = ((view->m_width * view->pixel_bytes) + 3) & (~3); break; case 16: view->pixel_bytes = 2; view->depth = 16; bitmap_pad = 16; bitmap_depth = 16; view->line_bytes8 = ((view->m_width * view->pixel_bytes) + 3) & (~3); break; case 24: view->pixel_bytes = 4; //view->pixel_bytes = 3; view->depth = 24; bitmap_depth = 32; bitmap_pad = 32; view->line_bytes8 = ((view->m_width * 4) + 3) & (~3); break; case 32: view->pixel_bytes = 4; view->depth = 32; bitmap_pad = 32; bitmap_depth = 32; view->line_bytes8 = ((view->m_width * 4) + 3) & (~3); break; default: assert(0); /* Unknown depth */ break; } // switch view->line_bytes = view->line_bytes8; } else { /* Black and White, Wire */ view->pixel_bytes = 0; view->depth = 1; view->line_bytes8 = (view->m_width + 3) & (~3); /* XXX: handle depth */ view->line_bytes = (view->m_width + 7) >>3; bitmap_pad = 8; bitmap_depth = 8; } view->data = AllocPixels(view->m_height * view->line_bytes, 0); view->image = XCreateImage(view->x->dpy, view->x->visual, bitmap_depth, view->x->color ? ZPixmap : XYBitmap, 0, (char *)view->data, view->m_width, view->m_height, bitmap_pad, view->line_bytes); view->other_data = AllocPixels(view->m_height * view->line_bytes8, 0); view->other_image = XCreateImage(view->x->dpy, view->x->visual, bitmap_depth, ZPixmap, 0, (char *)view->other_data, view->m_width, view->m_height, bitmap_pad, view->line_bytes); if (view->x->color) { view->data8 = view->data; } else { view->data8 = view->other_data; } } } } DoPanBy(struct SimView *view, int dx, int dy) { DoPanTo(view, view->pan_x + dx, view->pan_y + dy); } DoPanTo(struct SimView *view, int x, int y) { if (view->class != Editor_Class) { return; } if (x < 0) x = 0; if (y < 0) y = 0; if (x > view->i_width) x = view->i_width - 1; if (y > view->i_height) y = view->i_height - 1; if ((view->pan_x != x) || (view->pan_y != y)) { view->pan_x = x; view->pan_y = y; DoAdjustPan(view); } } /* #define DEBUG_PAN */ DoAdjustPan(struct SimView *view) { int ww2 = view->w_width >>1, wh2 = view->w_height >>1; int px = view->pan_x, py = view->pan_y; int last_tile_x = view->tile_x, last_tile_y = view->tile_y; int last_tile_width = view->tile_width, last_tile_height = view->tile_height; int total_width = view->m_width >>4, total_height = view->m_height >>4; //fprintf(stderr, "DoAdjustPan\n"); #ifdef DEBUG_PAN printf("AdjustPan window %d %d ww2 %d wh2 %d pan %d %d\n", view->w_width, view->w_height, ww2, wh2, px, py); printf(" last tile %d %d %d %d\n", last_tile_x, last_tile_y, last_tile_width, last_tile_height); #endif if ((view->tile_x = ((px - ww2) >>4)) < 0) view->tile_x = 0; if ((view->tile_y = ((py - wh2) >>4)) < 0) view->tile_y = 0; #ifdef DEBUG_PAN printf(" now tile %d %d\n", view->tile_x, view->tile_y); #endif view->tile_width = ((15 + px + ww2) >>4); view->tile_height = ((15 + py + wh2) >>4); #ifdef DEBUG_PAN printf(" outer tile %d %d\n", view->tile_width, view->tile_height); #endif if (view->tile_width > (view->i_width >>4)) view->tile_width = (view->i_width >>4); view->tile_width -= view->tile_x; if (view->tile_height > (view->i_height >>4)) view->tile_height = (view->i_height >>4); view->tile_height -= view->tile_y; #ifdef DEBUG_PAN printf(" tile size %d %d\n", view->tile_width, view->tile_height); #endif if (view->tile_width > (view->m_width >>4)) view->tile_width = (view->m_width >>4); if (view->tile_height > (view->m_height >>4)) view->tile_height = (view->m_height >>4); #ifdef DEBUG_PAN printf(" clipped size %d %d\n", view->tile_width, view->tile_height); printf(" maximum size %d %d\n", view->m_width >>4, view->m_height >>4); #endif view->screen_x = (ww2 - px) + (view->tile_x <<4); view->screen_y = (wh2 - py) + (view->tile_y <<4); view->screen_width = (view->tile_width <<4); view->screen_height = (view->tile_height <<4); #ifdef DEBUG_PAN printf(" screen %d %d %d %d\n", view->screen_x, view->screen_y, view->screen_width, view->screen_height); #endif view->overlay_mode = 0; // view->skip = 0; view->invalid = 1; if (SimSpeed == 0) { EventuallyRedrawView(view); } /* InvalidateEditors(); */ if (view->show_me) { RedrawMaps(); } /* FixMicropolisTimer(); */ { int dx = last_tile_x - view->tile_x, dy = last_tile_y - view->tile_y; short **want = view->other_tiles, **have = view->tiles; #ifdef DEBUG_PAN printf("scrolling %d %d\n", dx, dy); #endif if ((dx != 0) || (dy != 0)) { int row, col, x, y, width = view->tile_width, height = view->tile_height; for (col = 0; col < width; col++) memcpy(want[col], have[col], (height * sizeof(short))); for (col = 0; col < total_width; col++) { x = col - dx; for (row = 0; row < total_height; row++) { y = row - dy; if ((x >= 0) && (x < width) && (y >= 0) && (y < height)) { have[col][row] = want[x][y]; } else { have[col][row] = -1; } } } XCopyArea(view->x->dpy, view->pixmap, view->pixmap, view->x->gc, 0, 0, view->tile_width <<4, view->tile_height <<4, dx <<4, dy <<4); if (view->type == X_Mem_View) { XSync(view->x->dpy, False); } } } } AllocTiles(SimView *view) { int row, col; short **have, **want; int w = view->m_width / 16, h = view->m_height / 16; int n = (w + 1) * sizeof (short *); if (view->tiles) FreeTiles(view); have = view->tiles = (short **)ckalloc(n); want = view->other_tiles = (short **)ckalloc(n); have[w] = want[w] = NULL; n = h * sizeof(short); for (col = 0; col < w; col++) { have[col] = (short *)ckalloc(n); want[col] = (short *)ckalloc(n); for (row = 0; row < h; row++) { have[col][row] = -1; want[col][row] = -1; } } } FreeTiles(SimView *view) { int col; for (col = 0; view->tiles[col] != NULL; col++) { ckfree ((char *)view->tiles[col]); ckfree ((char *)view->other_tiles[col]); } ckfree ((char *)view->tiles); view->tiles = NULL; ckfree ((char *)view->other_tiles); view->other_tiles = NULL; } #define POINT_BATCH 32 Ink *OldInk = NULL; /* XXX: todo: ink locking so someone doesn't erase ink that's being drawn */ Ink * NewInk() { Ink *ink; if (OldInk) { ink = OldInk; OldInk = OldInk->next; } else { ink = (Ink *)ckalloc(sizeof(Ink)); ink->maxlength = POINT_BATCH; ink->points = (XPoint *)ckalloc(POINT_BATCH * sizeof(XPoint)); } ink->length = 0; ink->color = COLOR_WHITE; ink->next = NULL; ink->left = ink->right = ink->top = ink->bottom = ink->last_x = ink->last_y = -1; return (ink); } FreeInk(Ink *ink) { ink->next = OldInk; OldInk = ink; } StartInk(Ink *ink, int x, int y) { ink->length = 1; ink->left = ink->right = ink->last_x = ink->points[0].x = x; ink->top = ink->bottom = ink->last_y = ink->points[0].y = y; } AddInk(Ink *ink, int x, int y) { int dx = x - ink->last_x; int dy = y - ink->last_y; if ((dx != 0) || (dy != 0)) { /* if (ink->length > 1) { if ((dx == 0) && (ink->points[ink->length - 1].x == 0) && ((ink->points[ink->length - 1].y < 0) ? (dy < 0) : (dy > 0))) { ink->points[ink->length - 1].y += dy; goto ADJUST; } else if ((dy == 0) && (ink->points[ink->length - 1].y == 0) && ((ink->points[ink->length - 1].x < 0) ? (dx < 0) : (dx > 0))) { ink->points[ink->length - 1].x += dx; goto ADJUST; } } */ if (ink->length >= ink->maxlength) { ink->maxlength += POINT_BATCH; ink->points = (XPoint *)realloc((void *)ink->points, ink->maxlength * sizeof(XPoint)); } ink->points[ink->length].x = dx; ink->points[ink->length].y = dy; ink->length++; ADJUST: if (x < ink->left) ink->left = x; if (x > ink->right) ink->right = x; if (y < ink->top) ink->top = y; if (y > ink->bottom) ink->bottom = y; { int left, right, top, bottom; SimView *view; if (ink->last_x < x) { left = ink->last_x; right = x; } else { left = x; right = ink->last_x; } if (ink->last_y < y) { top = ink->last_y; bottom = y; } else { top = y; bottom = ink->last_y; } left -= 5; right += 5; top -= 5; bottom += 5; for (view = sim->editor; view != NULL; view = view->next) { int vleft, vtop; if ((right >= (vleft = view->pan_x - (view->w_width / 2))) && (left <= vleft + view->w_width) && (bottom >= (vtop = view->pan_y - (view->w_height / 2))) && (top <= vtop + view->w_height)) { /* XXX: do studly incremental update instead */ view->overlay_mode = 0; EventuallyRedrawView(view); } } } ink->last_x = x; ink->last_y = y; } } EraseOverlay() { Ink *ink; while (sim->overlay) { ink = sim->overlay; sim->overlay = ink->next; FreeInk(ink); } } micropolis-activity/src/sim/g_map.c0000664000076400007640000002745210724145723017653 0ustar simcitysimcity/* g_map.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" #define VAL_NONE 0 #define VAL_LOW 1 #define VAL_MEDIUM 2 #define VAL_HIGH 3 #define VAL_VERYHIGH 4 #define VAL_PLUS 5 #define VAL_VERYPLUS 6 #define VAL_MINUS 7 #define VAL_VERYMINUS 8 short valMap[] = { -1, COLOR_LIGHTGRAY, COLOR_YELLOW, COLOR_ORANGE, COLOR_RED, COLOR_DARKGREEN, COLOR_LIGHTGREEN, COLOR_ORANGE, COLOR_YELLOW }; short valGrayMap[] = { -1, 31, 127, 191, 255, 223, 255, 31, 0 }; int (*mapProcs[NMAPS])(); int drawAll(SimView *view); int drawRes(SimView *view); int drawCom(SimView *view); int drawInd(SimView *view); int drawPower(SimView *view); int drawLilTransMap(SimView *view); int drawPopDensity(SimView *view); int drawRateOfGrowth(SimView *view); int drawTrafMap(SimView *view); int drawPolMap(SimView *view); int drawCrimeMap(SimView *view); int drawLandMap(SimView *view); int drawFireRadius(SimView *view); int drawPoliceRadius(SimView *view); int drawDynamic(SimView *view); short GetCI(short x) { if (x < 50) return(VAL_NONE); if (x < 100) return(VAL_LOW); if (x < 150) return(VAL_MEDIUM); if (x < 200) return(VAL_HIGH); return(VAL_VERYHIGH); } drawPopDensity(SimView *view) { short x, y; drawAll(view); for (x = 0; x < HWLDX; x++) { for (y = 0; y < HWLDY; y++) { maybeDrawRect(view, GetCI(PopDensity[x][y]), x * 6, y * 6, 6, 6); } } } drawRateOfGrowth(SimView *view) { short x, y; drawAll(view); for (x = 0; x < SmX; x++) { for (y = 0; y < SmY; y++) { short val, z = RateOGMem[x][y]; if (z > 100) val = VAL_VERYPLUS; else { if (z > 20) val = VAL_PLUS; else { if (z < -100) val = VAL_VERYMINUS; else { if (z < -20) val = VAL_MINUS; else val = VAL_NONE; } } } maybeDrawRect(view, val, x * 24, y * 24, 24, 24); } } } drawTrafMap(SimView *view) { short x; short y; drawLilTransMap(view); for (x = 0; x < HWLDX; x++) { for (y = 0; y < HWLDY; y++) { maybeDrawRect(view, GetCI(TrfDensity[x][y]), x * 6, y * 6, 6, 6); } } } drawPolMap(SimView *view) { short x, y; drawAll(view); for (x = 0; x < HWLDX; x++) { for (y = 0; y < HWLDY; y++) { maybeDrawRect(view, GetCI(10 + PollutionMem[x][y]), x * 6, y * 6, 6, 6); } } } drawCrimeMap(SimView *view) { short x, y; drawAll(view); for (x = 0; x < HWLDX; x++) { for (y = 0; y < HWLDY; y++) { maybeDrawRect(view, GetCI(CrimeMem[x][y]), x * 6, y * 6, 6, 6); } } } drawLandMap(SimView *view) { short x, y; drawAll(view); for (x = 0; x < HWLDX; x++) { for (y = 0; y < HWLDY; y++) { maybeDrawRect(view, GetCI(LandValueMem[x][y]), x * 6, y * 6, 6, 6); } } } drawFireRadius(SimView *view) { short x, y; drawAll(view); for (x = 0; x < SmY; x++) { for (y = 0; y < SmY; y++) { maybeDrawRect(view, GetCI(FireRate[x][y]), x * 24, y * 24, 24, 24); } } } drawPoliceRadius(SimView *view) { short x, y; drawAll(view); for (x = 0; x < SmX; x++) { for (y = 0; y < SmY; y++) { maybeDrawRect(view, GetCI(PoliceMapEffect[x][y]), x * 24, y * 24, 24, 24); } } } setUpMapProcs(void) { mapProcs[ALMAP] = drawAll; mapProcs[REMAP] = drawRes; mapProcs[COMAP] = drawCom; mapProcs[INMAP] = drawInd; mapProcs[PRMAP] = drawPower; mapProcs[RDMAP] = drawLilTransMap; mapProcs[PDMAP] = drawPopDensity; mapProcs[RGMAP] = drawRateOfGrowth; mapProcs[TDMAP] = drawTrafMap; mapProcs[PLMAP] = drawPolMap; mapProcs[CRMAP] = drawCrimeMap; mapProcs[LVMAP] = drawLandMap; mapProcs[FIMAP] = drawFireRadius; mapProcs[POMAP] = drawPoliceRadius; mapProcs[DYMAP] = drawDynamic; } MemDrawMap(SimView *view) { (*mapProcs[view->map_state])(view); if (!view->x->color) { ditherMap(view); XSetForeground(view->x->dpy, view->x->gc, view->pixels[COLOR_BLACK]); XSetBackground(view->x->dpy, view->x->gc, view->pixels[COLOR_WHITE]); XPutImage(view->x->dpy, view->pixmap, view->x->gc, view->image, 0, 0, 0, 0, view->m_width, view->m_height); } } ditherMap(SimView *view) { int i, x, y, width, height; int err, pixel1, pixel8; int line_bytes1 = view->line_bytes; int line_bytes8 = view->line_bytes8; unsigned char *image1 = view->data; unsigned char *image8 = view->data8; int *errors; width = view->m_width; height = view->m_height; errors = (int *)malloc(sizeof(int) * (width)); for (i = 0; i < width; i++) errors[i] = (Rand16() & 15) - 7; err = (Rand16() & 15) - 7; for (y = 0; y < height; y += 2) { unsigned char *i1 = image1; unsigned char *i8 = image8; image1 += line_bytes1; image8 += line_bytes8; for (x = 0; x < width; x += 8) { pixel1 = 0; for (i = 0; i < 8; i++) { pixel1 <<= 1; pixel8 = *(i8++) + err + errors[x + i]; if (pixel8 > 127) { err = pixel8 - 255; } else { pixel1 |= 1; err = pixel8; } errors[x + i] = err/2; err = err/2; } *(i1++) = pixel1; } i1 = image1 + (width / 8) - 1; i8 = image8 + width - 1; image1 += line_bytes1; image8 += line_bytes8; for (x = width - 8; x >= 0; x -= 8) { pixel1 = 0; for (i = 7; i >= 0; i--) { pixel1 >>= 1; pixel8 = *(i8--) + err + errors[x + i]; if (pixel8 > 127) { err = pixel8 - 255; } else { pixel1 |= 128; err = pixel8; } errors[x + i] = err/2; err = err/2; } *(i1--) = pixel1; } } free(errors); } maybeDrawRect(SimView *view, int val, int x, int y, int w, int h) { if (val == VAL_NONE) return; if (view->x->color) { drawRect(view, view->pixels[valMap[val]], 0, x, y, w, h); } else { drawRect(view, valGrayMap[val], 1, x, y, w, h); } } drawRect(SimView *view, int pixel, int solid, int x, int y, int w, int h) { int W = view->m_width, H = view->m_height; if (x < 0) { if ((w += x) < 0) w = 0; x = 0; } else if (x > W) { x = 0; w = 0; } if (x + w > W) { w = W - x; } if (y < 0) { if ((h += y) < 0) h = 0; y = 0; } else if (y > H) { y = 0; h = 0; } if (y + h > H) { h = H - y; } if (w && h) { int i, j, stipple = (x ^ y) & 1; unsigned char *data = view->x->color ? view->data : view->data8; /* In the case of black and white, we use an 8 bit buffer and dither it. */ int pixelBytes = view->x->color ? view->pixel_bytes : 1; QUAD line = view->x->color ? view->line_bytes : view->line_bytes8; unsigned char *image = &(data[(line * y) + (x * pixelBytes)]); switch (pixelBytes) { case 1: { unsigned char *data = view->data8; unsigned char *image = &data[(line * y) + (x * pixelBytes)]; if (solid) { for (i = h; i > 0; i--) { for (j = w; j > 0; j--) { *image = pixel; image++; } image += line - w; } } else { for (i = h; i > 0; i--) { for (j = w; j > 0; j--) { if (stipple++ & 1) *image = pixel; image++; } if (!(w & 1)) stipple++; image += line - w; } } } break; case 2: { unsigned short *data = (unsigned short *)view->data; unsigned short *image; line >>= 1; /* Convert from byte offset to short offset */ image = &data[(line * y) + x]; if (solid) { for (i = h; i > 0; i--) { for (j = w; j > 0; j--) { *image = pixel; image++; } image += line - w; } } else { for (i = h; i > 0; i--) { for (j = w; j > 0; j--) { if (stipple++ & 1) *image = pixel; image++; } if (!(w & 1)) stipple++; image += line - w; } } } break; case 3: case 4: { unsigned char *data = (unsigned char *)view->data; unsigned char *image; int bitmapPad = view->x->small_tile_image->bitmap_pad; int rowBytes = view->x->small_tile_image->bytes_per_line; line = rowBytes >> 1; /* Convert from byte offset to short offset */ image = &data[(line * y) + x]; if (solid) { for (i = h; i > 0; i--) { for (j = w; j > 0; j--) { *(image++) = (pixel >> 0) & 0xff; *(image++) = (pixel >> 8) & 0xff; *(image++) = (pixel >> 16) & 0xff; if (bitmapPad == 32) { image++; } } image += line - w; } } else { for (i = h; i > 0; i--) { for (j = w; j > 0; j--) { if (stipple++ & 1) { *(image++) = (pixel >> 0) & 0xff; *(image++) = (pixel >> 8) & 0xff; *(image++) = (pixel >> 16) & 0xff; if (bitmapPad == 32) { image++; } } } if (!(w & 1)) { stipple++; } image += line - w; } } } break; default: assert(0); /* Undefined depth */ break; } } } micropolis-activity/src/sim/w_con.c0000664000076400007640000003553110724145723017672 0ustar simcitysimcity/* w_con.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" short _RoadTable[16] = { 66, 67, 66, 68, 67, 67, 69, 73, 66, 71, 66, 72, 70, 75, 74, 76 }; short _RailTable[16] = { 226, 227, 226, 228, 227, 227, 229, 233, 226, 231, 226, 232, 230, 235, 234, 236 }; short _WireTable[16] = { 210, 211, 210, 212, 211, 211, 213, 217, 210, 215, 210, 216, 214, 219, 218, 220 }; #define NeutralizeRoad(Tile) \ if (((Tile &= LOMASK) >= 64) && \ ((Tile & LOMASK) <= 207)) { \ Tile = (Tile & 0x000F) + 64; \ } /* comefrom: check3Border check4Border check5Border processWand */ int ConnecTile(short x, short y, short *TileAdrPtr, short Command) { short Tile; int result = 1; /* make sure the array subscripts are in bounds */ if (!TestBounds(x, y)) { return (0); } /* AutoDoze */ if ((Command >= 2) && (Command <= 4)) { if ((autoBulldoze != 0) && (TotalFunds > 0) && ((Tile = (*TileAdrPtr)) & BULLBIT)) { NeutralizeRoad(Tile); /* Maybe this should check BULLBIT instead of checking tile values? */ if (((Tile >= TINYEXP) && (Tile <= LASTTINYEXP)) || ((Tile < 64) && (Tile != 0))) { Spend(1); (*TileAdrPtr) = 0; } } } switch (Command) { case 0: /* Fix zone */ _FixZone(x, y, TileAdrPtr); break; case 1: /* Doze zone */ result = _LayDoze(x, y, TileAdrPtr); _FixZone(x, y, TileAdrPtr); break; case 2: /* Lay Road */ result = _LayRoad(x, y, TileAdrPtr); _FixZone(x, y, TileAdrPtr); break; case 3: /* Lay Rail */ result = _LayRail(x, y, TileAdrPtr); _FixZone(x, y, TileAdrPtr); break; case 4: /* Lay Wire */ result = _LayWire(x, y, TileAdrPtr); _FixZone(x, y, TileAdrPtr); break; } return result; } /* comefrom: ConnecTile */ int _LayDoze(int x, int y, short *TileAdrPtr) { short Tile; if (!(TotalFunds)) { return -2; /* no mas dinero. */ } Tile = (*TileAdrPtr); if (!(Tile & BULLBIT)) { return 0; /* Check dozeable bit. */ } NeutralizeRoad(Tile); switch (Tile) { case HBRIDGE: case VBRIDGE: case BRWV: case BRWH: case HBRDG0: case HBRDG1: case HBRDG2: case HBRDG3: case VBRDG0: case VBRDG1: case VBRDG2: case VBRDG3: case HPOWER: case VPOWER: case HRAIL: case VRAIL: /* Dozing over water, replace with water. */ (*TileAdrPtr) = RIVER; break; default: /* Dozing on land, replace with land. Simple, eh? */ (*TileAdrPtr) = DIRT; break; } Spend(1); /* Costs $1.00....*/ return 1; } /* comefrom: ConnecTile */ int _LayRoad(int x, int y, short *TileAdrPtr) { short Tile; int cost = 10; if (TotalFunds < 10) { return -2; } Tile = (*TileAdrPtr) & LOMASK; switch (Tile) { case DIRT: (*TileAdrPtr) = ROADS | BULLBIT | BURNBIT; break; case RIVER: /* Road on Water */ case REDGE: case CHANNEL: /* Check how to build bridges, if possible. */ if (TotalFunds < 50) { return -2; } cost = 50; if (x < (WORLD_X - 1)) { Tile = TileAdrPtr[WORLD_Y]; NeutralizeRoad(Tile); if ((Tile == VRAILROAD) || (Tile == HBRIDGE) || ((Tile >= ROADS) && (Tile <= HROADPOWER))) { (*TileAdrPtr) = HBRIDGE | BULLBIT; break; } } if (x > 0) { Tile = TileAdrPtr[-WORLD_Y]; NeutralizeRoad(Tile); if ((Tile == VRAILROAD) || (Tile == HBRIDGE) || ((Tile >= ROADS) && (Tile <= INTERSECTION))) { (*TileAdrPtr) = HBRIDGE | BULLBIT; break; } } if (y < (WORLD_Y - 1)) { Tile = TileAdrPtr[1]; NeutralizeRoad(Tile); if ((Tile == HRAILROAD) || (Tile == VROADPOWER) || ((Tile >= VBRIDGE) && (Tile <= INTERSECTION))) { (*TileAdrPtr) = VBRIDGE | BULLBIT; break; } } if (y > 0) { Tile = TileAdrPtr[-1]; NeutralizeRoad(Tile); if ((Tile == HRAILROAD) || (Tile == VROADPOWER) || ((Tile >= VBRIDGE) && (Tile <= INTERSECTION))) { (*TileAdrPtr) = VBRIDGE | BULLBIT; break; } } /* Can't do road... */ return 0; case LHPOWER: /* Road on power */ (*TileAdrPtr) = VROADPOWER | CONDBIT | BURNBIT | BULLBIT; break; case LVPOWER: /* Road on power #2 */ (*TileAdrPtr) = HROADPOWER | CONDBIT | BURNBIT | BULLBIT; break; case LHRAIL: /* Road on rail */ (*TileAdrPtr) = HRAILROAD | BURNBIT | BULLBIT; break; case LVRAIL: /* Road on rail #2 */ (*TileAdrPtr) = VRAILROAD | BURNBIT | BULLBIT; break; default: /* Can't do road */ return 0; } Spend(cost); return 1; } /* comefrom: ConnecTile */ int _LayRail(int x, int y, short *TileAdrPtr) { short Tile; int cost = 20; if (TotalFunds < 20) { return -2; } Tile = (*TileAdrPtr) & LOMASK; NeutralizeRoad(Tile); switch (Tile) { case 0: /* Rail on Dirt */ (*TileAdrPtr) = 226 | BULLBIT | BURNBIT; break; case 2: /* Rail on Water */ case 3: case 4: /* Check how to build underwater tunnel, if possible. */ if (TotalFunds < 100) { return -2; } cost = 100; if (x < (WORLD_X - 1)) { Tile = TileAdrPtr[WORLD_Y]; NeutralizeRoad(Tile); if ((Tile == 221) || (Tile == 224) || ((Tile >= 226) && (Tile <= 237))) { (*TileAdrPtr) = 224 | BULLBIT; break; } } if (x > 0) { Tile = TileAdrPtr[-WORLD_Y]; NeutralizeRoad(Tile); if ((Tile == 221) || (Tile == 224) || ((Tile > 225) && (Tile < 238))) { (*TileAdrPtr) = 224 | BULLBIT; break; } } if (y < (WORLD_Y - 1)) { Tile = TileAdrPtr[1]; NeutralizeRoad(Tile); if ((Tile == 222) || (Tile == 238) || ((Tile > 224) && (Tile < 237))) { (*TileAdrPtr) = 225 | BULLBIT; break; } } if (y > 0) { Tile = TileAdrPtr[-1]; NeutralizeRoad(Tile); if ((Tile == 222) || (Tile == 238) || ((Tile > 224) && (Tile < 237))) { (*TileAdrPtr) = 225 | BULLBIT; break; } } /* Can't do rail... */ return 0; case 210: /* Rail on power */ (*TileAdrPtr) = 222 | CONDBIT | BURNBIT | BULLBIT; break; case 211: /* Rail on power #2 */ (*TileAdrPtr) = 221 | CONDBIT | BURNBIT | BULLBIT; break; case 66: /* Rail on road */ (*TileAdrPtr) = 238 | BURNBIT | BULLBIT; break; case 67: /* Rail on road #2 */ (*TileAdrPtr) = 237 | BURNBIT | BULLBIT; break; default: /* Can't do rail */ return 0; } Spend(cost); return 1; } /* comefrom: ConnecTile */ int _LayWire(int x, int y, short *TileAdrPtr) { short Tile; int cost = 5; if (TotalFunds < 5) { return -2; } Tile = (*TileAdrPtr) & LOMASK; NeutralizeRoad(Tile); switch (Tile) { case 0: /* Wire on Dirt */ (*TileAdrPtr) = 210 | CONDBIT | BURNBIT | BULLBIT; break; case 2: /* Wire on Water */ case 3: case 4: /* Check how to lay underwater wire, if possible. */ if (TotalFunds < 25) return -2; cost = 25; if (x < (WORLD_X - 1)) { Tile = TileAdrPtr[WORLD_Y]; if (Tile & CONDBIT) { NeutralizeRoad(Tile); if ((Tile != 77) && (Tile != 221) && (Tile != 208)) { (*TileAdrPtr) = 209 | CONDBIT | BULLBIT; break; } } } if (x > 0) { Tile = TileAdrPtr[-WORLD_Y]; if (Tile & CONDBIT) { NeutralizeRoad(Tile); if ((Tile != 77) && (Tile != 221) && (Tile != 208)) { (*TileAdrPtr) = 209 | CONDBIT | BULLBIT; break; } } } if (y < (WORLD_Y - 1)) { Tile = TileAdrPtr[1]; if (Tile & CONDBIT) { NeutralizeRoad(Tile); if ((Tile != 78) && (Tile != 222) && (Tile != 209)) { (*TileAdrPtr) = 208 | CONDBIT | BULLBIT; break; } } } if (y > 0) { Tile = TileAdrPtr[-1]; if (Tile & CONDBIT) { NeutralizeRoad(Tile); if ((Tile != 78) && (Tile != 222) && (Tile != 209)) { (*TileAdrPtr) = 208 | CONDBIT | BULLBIT; break; } } } /* Can't do wire... */ return 0; case 66: /* Wire on Road */ (*TileAdrPtr) = 77 | CONDBIT | BURNBIT | BULLBIT; break; case 67: /* Wire on Road #2 */ (*TileAdrPtr) = 78 | CONDBIT | BURNBIT | BULLBIT; break; case 226: /* Wire on rail */ (*TileAdrPtr) = 221 | CONDBIT | BURNBIT | BULLBIT; break; case 227: /* Wire on rail #2 */ (*TileAdrPtr) = 222 | CONDBIT | BURNBIT | BULLBIT; break; default: /* Can't do wire */ return 0; } Spend(cost); return 1; } /* comefrom: ConnecTile */ _FixZone(int x, int y, short *TileAdrPtr) { _FixSingle(x,y, &TileAdrPtr[0]); if (y > 0) { _FixSingle(x, y-1, &TileAdrPtr[-1]); } if (x < (WORLD_X - 1)) { _FixSingle(x+1, y, &TileAdrPtr[WORLD_Y]); } if (y < (WORLD_Y - 1)) { _FixSingle(x, y+1, &TileAdrPtr[1]); } if (x > 0) { _FixSingle(x-1, y, &TileAdrPtr[-WORLD_Y]); } } /* comefrom: _FixZone */ _FixSingle(int x, int y, short *TileAdrPtr) { short Tile; short adjTile = 0; Tile = (*TileAdrPtr) & LOMASK; NeutralizeRoad(Tile); if ((Tile >= 66) && (Tile <= 76)) { /* Cleanup Road */ if (y > 0) { Tile = TileAdrPtr[-1]; NeutralizeRoad(Tile); if (((Tile == 237) || ((Tile >= 64) && (Tile <= 78))) && (Tile != 77) && (Tile != 238) && (Tile != 64)) adjTile |= 0x0001; } if (x < (WORLD_X - 1)) { Tile = TileAdrPtr[WORLD_Y]; NeutralizeRoad(Tile); if (((Tile == 238) || ((Tile >= 64) && (Tile <= 78))) && (Tile != 78) && (Tile != 237) && (Tile != 65)) adjTile |= 0x0002; } if (y < (WORLD_Y - 1)) { Tile = TileAdrPtr[1]; NeutralizeRoad(Tile); if (((Tile == 237) || ((Tile >= 64) && (Tile <= 78))) && (Tile != 77) && (Tile != 238) && (Tile != 64)) adjTile |= 0x0004; } if (x > 0) { Tile = TileAdrPtr[-WORLD_Y]; NeutralizeRoad(Tile); if (((Tile == 238) || ((Tile >= 64) && (Tile <= 78))) && (Tile != 78) && (Tile != 237) && (Tile != 65)) adjTile |= 0x0008; } (*TileAdrPtr) = _RoadTable[adjTile] | BULLBIT | BURNBIT; return; } if ((Tile >= 226) && (Tile <= 236)) { /* Cleanup Rail */ if (y > 0) { Tile = TileAdrPtr[-1]; NeutralizeRoad(Tile); if ((Tile >= 221) && (Tile <= 238) && (Tile != 221) && (Tile != 237) && (Tile != 224)) adjTile |= 0x0001; } if (x < (WORLD_X - 1)) { Tile = TileAdrPtr[WORLD_Y]; NeutralizeRoad(Tile); if ((Tile >= 221) && (Tile <= 238) && (Tile != 222) && (Tile != 238) && (Tile != 225)) adjTile |= 0x0002; } if (y < (WORLD_Y - 1)) { Tile = TileAdrPtr[1]; NeutralizeRoad(Tile); if ((Tile >= 221) && (Tile <= 238) && (Tile != 221) && (Tile != 237) && (Tile != 224)) adjTile |= 0x0004; } if (x > 0) { Tile = TileAdrPtr[-WORLD_Y]; NeutralizeRoad(Tile); if ((Tile >= 221) && (Tile <= 238) && (Tile != 222) && (Tile != 238) && (Tile != 225)) adjTile |= 0x0008; } (*TileAdrPtr) = _RailTable[adjTile] | BULLBIT | BURNBIT; return; } if ((Tile >= 210) && (Tile <= 220)) { /* Cleanup Wire */ if (y > 0) { Tile = TileAdrPtr[-1]; if (Tile & CONDBIT) { NeutralizeRoad(Tile); if ((Tile != 209) && (Tile != 78) && (Tile != 222)) adjTile |= 0x0001; } } if (x < (WORLD_X - 1)) { Tile = TileAdrPtr[WORLD_Y]; if (Tile & CONDBIT) { NeutralizeRoad(Tile); if ((Tile != 208) && (Tile != 77) && (Tile != 221)) adjTile |= 0x0002; } } if (y < (WORLD_Y - 1)) { Tile = TileAdrPtr[1]; if (Tile & CONDBIT) { NeutralizeRoad(Tile); if ((Tile != 209) && (Tile != 78) && (Tile != 222)) adjTile |= 0x0004; } } if (x > 0) { Tile = TileAdrPtr[-WORLD_Y]; if (Tile & CONDBIT) { NeutralizeRoad(Tile); if ((Tile != 208) && (Tile != 77) && (Tile != 221)) adjTile |= 0x0008; } } (*TileAdrPtr) = _WireTable[adjTile] | BULLBIT | BURNBIT | CONDBIT; return; } } micropolis-activity/src/sim/w_piem.c0000664000076400007640000020252210724145723020041 0ustar simcitysimcity/* w_piem.c: Pie Menus */ /* * * Pie Menus for Tk. * Copyright (C) 1992 by Don Hopkins. * * This program is provided for unrestricted use, provided that this * copyright message is preserved. There is no warranty, and no author * or distributer accepts responsibility for any damage caused by this * program. * * This code and the ideas behind it were developed over time by Don Hopkins * with the support of the University of Maryland, UniPress Software, Sun * Microsystems, DUX Software, the Turing Institute, and Carnegie Mellon * University. Pie menus are NOT patented or restricted, and the interface * and algorithms may be freely copied and improved upon. * */ #if 0 /* workaround to make gcc work on suns */ #ifndef SOLARIS2 #define _PTRDIFF_T #define _SIZE_T #ifndef sgi typedef unsigned int size_t; #endif #endif #endif #include "tkconfig.h" #include "default.h" #include "tkint.h" #include #define PI 3.1415926535897932 #define TWO_PI 6.2831853071795865 #define DEG_TO_RAD(d) (((d) * TWO_PI) / 360.0) #define RAD_TO_DEG(d) (((d) * 360.0) / TWO_PI) #define PIE_SPOKE_INSET 6 #define PIE_BG_COLOR "#bfbfbf" #define PIE_BG_MONO WHITE #define PIE_ACTIVE_FG_COLOR BLACK #define PIE_ACTIVE_FG_MONO BLACK #define PIE_ACTIVE_BG_COLOR "#bfbfbf" #define PIE_ACTIVE_BG_MONO WHITE #define PIE_FG BLACK #define PIE_FONT "-Adobe-Helvetica-Bold-R-Normal-*-120-*" #define PIE_ACTIVE_BORDER_WIDTH "2" #define PIE_INACTIVE_RADIUS "8" #define PIE_INACTIVE_RADIUS_NUM 8 #define PIE_MIN_RADIUS "16" #define PIE_MIN_RADIUS_NUM 16 #define PIE_EXTRA_RADIUS "2" #define PIE_EXTRA_RADIUS_NUM 2 #define PIE_BORDER_WIDTH "2" #define PIE_POPUP_DELAY "250" #define PIE_POPUP_DELAY_NUM 250 #define PIE_ENTRY_ACTIVE_BG ((char *) NULL) #define PIE_ENTRY_BG ((char *) NULL) #define PIE_ENTRY_FONT ((char *) NULL) #ifndef MAX #define MAX(x,y) ((x)>(y)?(x):(y)) #define MIN(x,y) ((x)<(y)?(x):(y)) #endif #define ABS(x) (((x)<0)?(-(x)):(x)) static int HaveShape = -1; /* * One of the following data structures is kept for each entry of each * pie menu managed by this file: */ typedef struct PieMenuEntry { int type; struct PieMenu *piemenuPtr; char *label; int labelLength; Pixmap bitmap; /* * Information related to displaying entry: */ int width, height; int x, y; int x_offset, y_offset; int label_x, label_y; Tk_3DBorder border; Tk_3DBorder activeBorder; XFontStruct *fontPtr; GC textGC; GC activeGC; /* * Information used for pie menu layout & tracking: */ int slice; /* Desired relative slice size */ float angle; /* Angle through center of slice */ float dx, dy; /* Cosine and sine of angle */ float subtend; /* Angle subtended by slice */ int quadrant; /* Quadrant of leading edge */ float slope; /* Slope of leading edge */ /* * Information used to implement this entry's action: */ char *command; char *preview; char *name; /* * Miscellaneous information: */ int flags; /* Various flags. See below for definitions. */ } PieMenuEntry; /* * Flag values defined for menu entries: * * ENTRY_NEEDS_REDISPLAY: Non-zero means the entry should be redisplayed. */ #define ENTRY_NEEDS_REDISPLAY 1 /* * Types defined for PieMenuEntries: */ #define COMMAND_ENTRY 0 #define PIEMENU_ENTRY 1 /* * Mask bits for above types: */ #define COMMAND_MASK TK_CONFIG_USER_BIT #define PIEMENU_MASK (TK_CONFIG_USER_BIT << 1) #define ALL_MASK (COMMAND_MASK | PIEMENU_MASK) /* * Configuration specs for individual menu entries: */ static Tk_ConfigSpec entryConfigSpecs[] = { {TK_CONFIG_BORDER, "-activebackground", (char *) NULL, (char *) NULL, PIE_ENTRY_ACTIVE_BG, Tk_Offset(PieMenuEntry, activeBorder), ALL_MASK|TK_CONFIG_NULL_OK}, {TK_CONFIG_BORDER, "-background", (char *) NULL, (char *) NULL, PIE_ENTRY_BG, Tk_Offset(PieMenuEntry, border), ALL_MASK|TK_CONFIG_NULL_OK}, {TK_CONFIG_PIXMAP, "-bitmap", (char *) NULL, (char *) NULL, (char *) NULL, Tk_Offset(PieMenuEntry, bitmap), ALL_MASK|TK_CONFIG_NULL_OK}, {TK_CONFIG_STRING, "-command", (char *) NULL, (char *) NULL, (char *) NULL, Tk_Offset(PieMenuEntry, command), COMMAND_MASK}, {TK_CONFIG_STRING, "-preview", (char *) NULL, (char *) NULL, (char *) NULL, Tk_Offset(PieMenuEntry, preview), ALL_MASK}, {TK_CONFIG_FONT, "-font", (char *) NULL, (char *) NULL, PIE_ENTRY_FONT, Tk_Offset(PieMenuEntry, fontPtr), ALL_MASK|TK_CONFIG_NULL_OK}, {TK_CONFIG_STRING, "-label", (char *) NULL, (char *) NULL, (char *) NULL, Tk_Offset(PieMenuEntry, label), ALL_MASK}, {TK_CONFIG_STRING, "-piemenu", (char *) NULL, (char *) NULL, (char *) NULL, Tk_Offset(PieMenuEntry, name), ALL_MASK}, {TK_CONFIG_INT, "-xoffset", "xOffset", "XOffset", "0", Tk_Offset(PieMenuEntry, x_offset), ALL_MASK}, {TK_CONFIG_INT, "-yoffset", "yOffset", "YOffset", "0", Tk_Offset(PieMenuEntry, y_offset), ALL_MASK}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; /* * A data structure of the following type is kept for each * pie menu managed by this file: */ typedef struct PieMenu { Tk_Window tkwin; Tcl_Interp *interp; char *title; int titleLength; char *preview; PieMenuEntry **entries; int numEntries; int active; Tk_Uid group; int root_x, root_y; int dx, dy; /* * Information used when displaying widget: */ Tk_3DBorder border; int borderWidth; Tk_3DBorder activeBorder; int activeBorderWidth; XFontStruct *fontPtr; XFontStruct *titlefontPtr; XColor *fg; GC textGC; XColor *activeFg; GC activeGC; /* * Information used to layout pie menu: */ int width, height; /* size of the pie menu */ int title_x, title_y; /* position of menu title */ int title_width, title_height; /* size of menu title */ int initial_angle; /* pie menu initial angle in radians */ int inactive_radius; /* inactive inner radius */ int min_radius; /* minimum label radius */ int fixed_radius; /* fixed label radius */ int extra_radius; /* extra label radius pad */ int label_radius; /* Radius of labels from menu center */ int center_x, center_y; /* Menu center */ XSegment *segments; /* Line segments to draw */ /* * Miscellaneous information: */ Tk_TimerToken popup_timer_token; Cursor cursor; PieMenuEntry *postedPie; int flags; int phase; int popup_delay; /* Delay before popup */ int shaped; /* Use SHAPE extension */ } PieMenu; /* * Flag bits for menus: * * REDRAW_PENDING: Non-zero means a DoWhenIdle handler * has already been queued to redraw * this window. * UPDATE_PENDING: Non-zero means a DoWhenIdle handler * has already been queued to update * this window. * RESIZE_PENDING: Non-zero means a call to ComputeMenuGeometry * has already been scheduled. * POPUP_PENDING: Non-zero means a call to PopupPieMenu has * already been scheduled. */ #define REDRAW_PENDING 1 #define UPDATE_PENDING 2 #define RESIZE_PENDING 4 #define POPUP_PENDING 8 /* * Configuration specs valid for the menu as a whole: */ static Tk_ConfigSpec configSpecs[] = { {TK_CONFIG_BORDER, "-activebackground", "activeBackground", "Foreground", PIE_ACTIVE_BG_COLOR, Tk_Offset(PieMenu, activeBorder), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-activebackground", "activeBackground", "Foreground", PIE_ACTIVE_BG_MONO, Tk_Offset(PieMenu, activeBorder), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_PIXELS, "-activeborderwidth", "activeBorderWidth", "BorderWidth", PIE_ACTIVE_BORDER_WIDTH, Tk_Offset(PieMenu, activeBorderWidth), 0}, {TK_CONFIG_COLOR, "-activeforeground", "activeForeground", "Background", PIE_ACTIVE_FG_COLOR, Tk_Offset(PieMenu, activeFg), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_COLOR, "-activeforeground", "activeForeground", "Background", PIE_ACTIVE_FG_MONO, Tk_Offset(PieMenu, activeFg), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_BORDER, "-background", "background", "Background", PIE_BG_COLOR, Tk_Offset(PieMenu, border), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-background", "background", "Background", PIE_BG_MONO, Tk_Offset(PieMenu, border), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_SYNONYM, "-bd", "borderWidth", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_SYNONYM, "-bg", "background", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", PIE_BORDER_WIDTH, Tk_Offset(PieMenu, borderWidth), 0}, {TK_CONFIG_ACTIVE_CURSOR, "-cursor", "cursor", "Cursor", "circle", Tk_Offset(PieMenu, cursor), TK_CONFIG_NULL_OK}, {TK_CONFIG_SYNONYM, "-fg", "foreground", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_COLOR, "-foreground", "foreground", "Foreground", PIE_FG, Tk_Offset(PieMenu, fg), 0}, {TK_CONFIG_FONT, "-font", "font", "Font", PIE_FONT, Tk_Offset(PieMenu, fontPtr), 0}, {TK_CONFIG_STRING, "-title", (char *) NULL, (char *) NULL, "", Tk_Offset(PieMenu, title), 0}, {TK_CONFIG_STRING, "-preview", (char *) NULL, (char *) NULL, "", Tk_Offset(PieMenu, preview), 0}, {TK_CONFIG_FONT, "-titlefont", "font", "Font", PIE_FONT, Tk_Offset(PieMenu, titlefontPtr), 0}, {TK_CONFIG_INT, "-initialangle", "initialAngle", "InitialAngle", "0", Tk_Offset(PieMenu, initial_angle), 0}, {TK_CONFIG_INT, "-inactiveradius", "inactiveRadius", "InactiveRadius", PIE_INACTIVE_RADIUS, Tk_Offset(PieMenu, inactive_radius), 0}, {TK_CONFIG_INT, "-minradius", "minRadius", "MinRadius", PIE_MIN_RADIUS, Tk_Offset(PieMenu, min_radius), 0}, {TK_CONFIG_INT, "-extraradius", "extraRadius", "ExtraRadius", PIE_EXTRA_RADIUS, Tk_Offset(PieMenu, extra_radius), 0}, {TK_CONFIG_INT, "-fixedradius", "fixedRadius", "FixedRadius", "0", Tk_Offset(PieMenu, fixed_radius), 0}, {TK_CONFIG_INT, "-active", "active", "Active", "-1", Tk_Offset(PieMenu, active), 0}, {TK_CONFIG_INT, "-popupdelay", "popupDelay", "PopupDelay", PIE_POPUP_DELAY, Tk_Offset(PieMenu, popup_delay), 0}, {TK_CONFIG_INT, "-shaped", "shaped", "Shaped", "1", Tk_Offset(PieMenu, shaped), 0}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; /* * Forward declarations for procedures defined later in this file: */ int Tk_PieMenuCmd(ClientData clientData, Tcl_Interp *interp, int argc, char **argv); static int ActivatePieMenuEntry _ANSI_ARGS_((PieMenu *menuPtr, int index, int preview)); static void ComputePieMenuGeometry _ANSI_ARGS_(( ClientData clientData)); static int ConfigurePieMenu _ANSI_ARGS_((Tcl_Interp *interp, PieMenu *menuPtr, int argc, char **argv, int flags)); static int ConfigurePieMenuEntry _ANSI_ARGS_((Tcl_Interp *interp, PieMenu *menuPtr, PieMenuEntry *mePtr, int index, int argc, char **argv, int flags)); static void DestroyPieMenu _ANSI_ARGS_((ClientData clientData)); static void DestroyPieMenuEntry _ANSI_ARGS_((ClientData clientData)); static void DisplayPieMenu _ANSI_ARGS_((ClientData clientData)); static void UpdatePieMenu _ANSI_ARGS_((ClientData clientData)); static void PopupPieMenu _ANSI_ARGS_((ClientData clientData)); static void EventuallyRedrawPieMenu _ANSI_ARGS_((PieMenu *menuPtr, int index)); static int GetPieMenuIndex _ANSI_ARGS_((Tcl_Interp *interp, PieMenu *menuPtr, char *string, int *indexPtr)); static void PieMenuEventProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); static int PieMenuWidgetCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); static int UnpostSubPieMenu _ANSI_ARGS_((Tcl_Interp *interp, PieMenu *menuPtr)); static void PopupPieMenu _ANSI_ARGS_((ClientData clientData)); static void NowPopupPieMenu _ANSI_ARGS_((PieMenu *menuPtr)); static void NeverPopupPieMenu _ANSI_ARGS_((PieMenu *menuPtr)); static void EventuallyPopupPieMenu _ANSI_ARGS_((PieMenu *menuPtr)); static void DeferPopupPieMenu _ANSI_ARGS_((PieMenu *menuPtr)); static void ShapePieMenu _ANSI_ARGS_((PieMenu *menuPtr)); /* *-------------------------------------------------------------- * * Tk_PieMenuCmd -- * * This procedure is invoked to process the "piemenu" Tcl * command. Read the code and write some user documentation for * details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation for "menu", which this was based on. * *-------------------------------------------------------------- */ int Tk_PieMenuCmd(clientData, interp, argc, argv) ClientData clientData; /* Main window associated with * interpreter. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { Tk_Window tkwin = (Tk_Window) clientData; Tk_Window new; register PieMenu *menuPtr; XSetWindowAttributes atts; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " pathName ?options?\"", (char *) NULL); return TCL_ERROR; } /* * Create the new window. Set override-redirect so the window * manager won't add a border or argue about placement, and set * save-under so that the window can pop up and down without a * lot of re-drawing. */ new = Tk_CreateWindowFromPath(interp, tkwin, argv[1], ""); if (new == NULL) { return TCL_ERROR; } atts.override_redirect = True; atts.save_under = True; Tk_ChangeWindowAttributes(new, CWOverrideRedirect|CWSaveUnder, &atts); /* * Initialize the data structure for the menu. */ menuPtr = (PieMenu *) ckalloc(sizeof(PieMenu)); menuPtr->tkwin = new; menuPtr->interp = interp; menuPtr->title = NULL; menuPtr->titleLength = 0; menuPtr->preview = NULL; menuPtr->entries = NULL; menuPtr->numEntries = 0; menuPtr->active = -1; menuPtr->group = NULL; menuPtr->root_x = 0; menuPtr->root_y = 0; menuPtr->border = NULL; menuPtr->activeBorder = NULL; menuPtr->fontPtr = NULL; menuPtr->titlefontPtr = NULL; menuPtr->fg = NULL; menuPtr->textGC = None; menuPtr->activeFg = NULL; menuPtr->activeGC = None; menuPtr->width = 0; menuPtr->height = 0; menuPtr->title_x = 0; menuPtr->title_y = 0; menuPtr->title_width = 0; menuPtr->title_height = 0; menuPtr->initial_angle = 0; menuPtr->inactive_radius = PIE_INACTIVE_RADIUS_NUM; menuPtr->min_radius = PIE_MIN_RADIUS_NUM; menuPtr->extra_radius = PIE_EXTRA_RADIUS_NUM; menuPtr->fixed_radius = 0; menuPtr->label_radius = 0; menuPtr->center_x = 0; menuPtr->center_y = 0; menuPtr->segments = NULL; menuPtr->cursor = None; menuPtr->postedPie = NULL; menuPtr->flags = 0; menuPtr->phase = 0; menuPtr->shaped = 1; menuPtr->popup_delay = PIE_POPUP_DELAY_NUM; Tk_SetClass(new, "PieMenu"); Tk_CreateEventHandler(menuPtr->tkwin, ExposureMask | StructureNotifyMask | ButtonPressMask | ButtonReleaseMask | PointerMotionMask, PieMenuEventProc, (ClientData) menuPtr); Tcl_CreateCommand(interp, Tk_PathName(menuPtr->tkwin), PieMenuWidgetCmd, (ClientData) menuPtr, (void (*)()) NULL); if (ConfigurePieMenu(interp, menuPtr, argc-2, argv+2, 0) != TCL_OK) { goto error; } interp->result = Tk_PathName(menuPtr->tkwin); return TCL_OK; error: Tk_DestroyWindow(menuPtr->tkwin); return TCL_ERROR; } /* *-------------------------------------------------------------- * * PieMenuWidgetCmd -- * * This procedure is invoked to process the Tcl command * that corresponds to a widget managed by this module. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ static int PieMenuWidgetCmd(clientData, interp, argc, argv) ClientData clientData; /* Information about menu widget. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { register PieMenu *menuPtr = (PieMenu *) clientData; register PieMenuEntry *mePtr; int result = TCL_OK; int length, type; char c; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " option ?arg arg ...?\"", (char *) NULL); return TCL_ERROR; } Tk_Preserve((ClientData) menuPtr); c = argv[1][0]; length = strlen(argv[1]); if ((c == 'a') && (strncmp(argv[1], "activate", length) == 0) && (length >= 2)) { int index; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " activate index\"", (char *) NULL); goto error; } if (GetPieMenuIndex(interp, menuPtr, argv[2], &index) != TCL_OK) { goto error; } if (menuPtr->active == index) { goto done; } result = ActivatePieMenuEntry(menuPtr, index, 1); DeferPopupPieMenu(menuPtr); } else if ((c == 's') && (strncmp(argv[1], "show", length) == 0) && (length >= 2)) { int index; if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " show\"", (char *) NULL); goto error; } NowPopupPieMenu(menuPtr); } else if ((c == 'p') && (strncmp(argv[1], "pending", length) == 0) && (length >= 2)) { int index; if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " pending\"", (char *) NULL); goto error; } sprintf(interp->result, "%d", (menuPtr->flags & POPUP_PENDING) ? 1 : 0); } else if ((c == 'd') && (strncmp(argv[1], "defer", length) == 0) && (length >= 2)) { int index; if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " defer\"", (char *) NULL); goto error; } DeferPopupPieMenu(menuPtr); } else if ((c == 'a') && (strncmp(argv[1], "add", length) == 0) && (length >= 2)) { PieMenuEntry **newEntries; if (argc < 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " add type ?options?\"", (char *) NULL); goto error; } /* * Figure out the type of the new entry. */ c = argv[2][0]; length = strlen(argv[2]); if ((c == 'c') && (strncmp(argv[2], "command", length) == 0)) { type = COMMAND_ENTRY; } else if ((c == 'p') && (strncmp(argv[2], "piemenu", length) == 0)) { type = PIEMENU_ENTRY; } else { Tcl_AppendResult(interp, "bad menu entry type \"", argv[2], "\": must be command or piemenu", (char *) NULL); goto error; } /* * Add a new entry to the end of the menu's array of entries, * and process options for it. */ mePtr = (PieMenuEntry *) ckalloc(sizeof(PieMenuEntry)); newEntries = (PieMenuEntry **) ckalloc((unsigned) ((menuPtr->numEntries+1)*sizeof(PieMenuEntry *))); if (menuPtr->numEntries != 0) { memcpy((VOID *) newEntries, (VOID *) menuPtr->entries, menuPtr->numEntries*sizeof(PieMenuEntry *)); ckfree((char *) menuPtr->entries); } menuPtr->entries = newEntries; menuPtr->entries[menuPtr->numEntries] = mePtr; menuPtr->numEntries++; mePtr->type = type; mePtr->piemenuPtr = menuPtr; mePtr->label = NULL; mePtr->labelLength = 0; mePtr->bitmap = None; mePtr->width = 0; mePtr->height = 0; mePtr->x_offset = 0; mePtr->y_offset = 0; mePtr->label_x = 0; mePtr->label_y = 0; mePtr->border = NULL; mePtr->activeBorder = NULL; mePtr->fontPtr = NULL; mePtr->textGC = None; mePtr->activeGC = None; mePtr->slice = 1.0; mePtr->angle = 0.0; mePtr->dx = 0.0; mePtr->dy = 0.0; mePtr->subtend = 0.0; mePtr->quadrant = 0; mePtr->slope = 0.0; mePtr->command = NULL; mePtr->preview = NULL; mePtr->name = NULL; mePtr->flags = 0; if (ConfigurePieMenuEntry(interp, menuPtr, mePtr, menuPtr->numEntries-1, argc-3, argv+3, 0) != TCL_OK) { DestroyPieMenuEntry((ClientData) mePtr); menuPtr->numEntries--; goto error; } if (!(menuPtr->flags & RESIZE_PENDING)) { menuPtr->flags |= RESIZE_PENDING; Tk_DoWhenIdle(ComputePieMenuGeometry, (ClientData) menuPtr); } } else if ((c == 'c') && (strncmp(argv[1], "configure", length) == 0)) { if (argc == 2) { result = Tk_ConfigureInfo(interp, menuPtr->tkwin, configSpecs, (char *) menuPtr, (char *) NULL, 0); } else if (argc == 3) { result = Tk_ConfigureInfo(interp, menuPtr->tkwin, configSpecs, (char *) menuPtr, argv[2], 0); } else { result = ConfigurePieMenu(interp, menuPtr, argc-2, argv+2, TK_CONFIG_ARGV_ONLY); } } else if ((c == 'd') && (strncmp(argv[1], "delete", length) == 0) && (length >= 2)) { int index, i; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " delete index\"", (char *) NULL); goto error; } if (GetPieMenuIndex(interp, menuPtr, argv[2], &index) != TCL_OK) { goto error; } if (index < 0) { goto done; } Tk_EventuallyFree((ClientData) menuPtr->entries[index], DestroyPieMenuEntry); for (i = index; i < menuPtr->numEntries-1; i++) { menuPtr->entries[i] = menuPtr->entries[i+1]; } menuPtr->numEntries -= 1; if (menuPtr->active == index) { menuPtr->active = -1; } else if (menuPtr->active > index) { menuPtr->active -= 1; } if (!(menuPtr->flags & RESIZE_PENDING)) { menuPtr->flags |= RESIZE_PENDING; Tk_DoWhenIdle(ComputePieMenuGeometry, (ClientData) menuPtr); } } else if ((c == 'e') && (length >= 3) && (strncmp(argv[1], "entryconfigure", length) == 0)) { int index; if (argc < 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " entryconfigure index ?option value ...?\"", (char *) NULL); goto error; } if (GetPieMenuIndex(interp, menuPtr, argv[2], &index) != TCL_OK) { goto error; } if (index < 0) { goto done; } mePtr = menuPtr->entries[index]; Tk_Preserve((ClientData) mePtr); if (argc == 3) { result = Tk_ConfigureInfo(interp, menuPtr->tkwin, entryConfigSpecs, (char *) mePtr, (char *) NULL, COMMAND_MASK << mePtr->type); } else if (argc == 4) { result = Tk_ConfigureInfo(interp, menuPtr->tkwin, entryConfigSpecs, (char *) mePtr, argv[3], COMMAND_MASK << mePtr->type); } else { result = ConfigurePieMenuEntry(interp, menuPtr, mePtr, index, argc-3, argv+3, TK_CONFIG_ARGV_ONLY | COMMAND_MASK << mePtr->type); } Tk_Release((ClientData) mePtr); } else if ((c == 'i') && (strncmp(argv[1], "index", length) == 0) && (length >= 3)) { int index; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " index string\"", (char *) NULL); goto error; } if (GetPieMenuIndex(interp, menuPtr, argv[2], &index) != TCL_OK) { goto error; } if (index < 0) { interp->result = "none"; } else { sprintf(interp->result, "%d", index); } } else if ((c == 'i') && (strncmp(argv[1], "invoke", length) == 0) && (length >= 3)) { int index; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " invoke index\"", (char *) NULL); goto error; } if (GetPieMenuIndex(interp, menuPtr, argv[2], &index) != TCL_OK) { goto error; } if (index < 0) { goto done; } mePtr = menuPtr->entries[index]; Tk_Preserve((ClientData) mePtr); if (mePtr->command != NULL) { result = Tcl_GlobalEval(interp, mePtr->command); } Tk_Release((ClientData) mePtr); } else if ((c == 'p') && (strncmp(argv[1], "post", length) == 0)) { int x, y, ix, iy, tmp, err; Tk_Uid group; if ((argc != 4) && (argc != 5)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " post x y ?group?\"", (char *) NULL); goto error; } if ((Tcl_GetInt(interp, argv[2], &x) != TCL_OK) || (Tcl_GetInt(interp, argv[3], &y) != TCL_OK)) { goto error; } if (argc == 5) { group = Tk_GetUid(argv[4]); } else { group = Tk_GetUid("default"); } /* * Adjust the position of the menu if necessary to keep it * on-screen. */ x -= menuPtr->center_x; y -= menuPtr->center_y; #if 0 ix = x; iy = y; tmp = WidthOfScreen(Tk_Screen(menuPtr->tkwin)) - Tk_Width(menuPtr->tkwin); if (x > tmp) { x = tmp; } if (x < 0) { x = 0; } tmp = HeightOfScreen(Tk_Screen(menuPtr->tkwin)) - Tk_Height(menuPtr->tkwin); if (y > tmp) { y = tmp; } if (y < 0) { y = 0; } /* XXX: warp pointer by (x-ix, y-iy) upon popup */ #endif Tk_MakeWindowExist(menuPtr->tkwin); XRaiseWindow(Tk_Display(menuPtr->tkwin), Tk_WindowId(menuPtr->tkwin)); Tk_MoveWindow(menuPtr->tkwin, x, y); menuPtr->root_x = x + menuPtr->center_x; menuPtr->root_y = y + menuPtr->center_y; if (Tk_IsMapped(menuPtr->tkwin)) { if (group != menuPtr->group) { Tk_UnshareEvents(menuPtr->tkwin, menuPtr->group); Tk_ShareEvents(menuPtr->tkwin, group); } } else { Tk_ShareEvents(menuPtr->tkwin, group); EventuallyPopupPieMenu(menuPtr); result = ActivatePieMenuEntry(menuPtr, -1, 1); } menuPtr->group = group; } else if ((c == 'u') && (strncmp(argv[1], "unpost", length) == 0)) { if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " unpost\"", (char *) NULL); goto error; } NeverPopupPieMenu(menuPtr); Tk_UnshareEvents(menuPtr->tkwin, menuPtr->group); Tk_UnmapWindow(menuPtr->tkwin); result = ActivatePieMenuEntry(menuPtr, -1, 0); if (result == TCL_OK) { result = UnpostSubPieMenu(interp, menuPtr); } } else if ((c == 'g') && (strncmp(argv[1], "grab", length) == 0)) { Tk_Window tkwin; int err; if ((argc != 3) || ((tkwin = Tk_NameToWindow(interp, argv[2], menuPtr->tkwin)) == NULL)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " grab window\"", (char *) NULL); goto error; } err = XGrabPointer(Tk_Display(tkwin), Tk_WindowId(tkwin), False, ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | PointerMotionMask, GrabModeAsync, GrabModeAsync, None, None, TkCurrentTime(((TkWindow *)tkwin)->dispPtr)); if (err != 0) { if (err == GrabNotViewable) { interp->result = "grab failed: window not viewable"; } else if (err == AlreadyGrabbed) { interp->result = "grab failed: another application has grab"; } else if (err == GrabFrozen) { interp->result = "grab failed: keyboard or pointer frozen"; } else if (err == GrabInvalidTime) { interp->result = "grab failed: invalid time"; } else { char msg[100]; sprintf(msg, "grab failed for unknown reason (code %d)", err); Tcl_AppendResult(interp, msg, (char *) NULL); } return TCL_ERROR; } } else if ((c == 'u') && (strncmp(argv[1], "ungrab", length) == 0)) { Tk_Window tkwin; if ((argc != 3) || ((tkwin = Tk_NameToWindow(interp, argv[2], menuPtr->tkwin)) == NULL)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ungrab window\"", (char *) NULL); goto error; } XUngrabPointer(Tk_Display(tkwin), TkCurrentTime(((TkWindow *)tkwin)->dispPtr)); } else if ((c == 'd') && (strncmp(argv[1], "distance", length) == 0) && (length >= 3)) { int distance; if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " distance\"", (char *) NULL); goto error; } distance = (int)(sqrt((menuPtr->dx * menuPtr->dx) + (menuPtr->dy * menuPtr->dy)) + 0.499); sprintf(interp->result, "%d", distance); } else if ((c == 'd') && (strncmp(argv[1], "direction", length) == 0) && (length >= 3)) { int direction; if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " direction\"", (char *) NULL); goto error; } direction = (int)(RAD_TO_DEG(atan2(menuPtr->dy, menuPtr->dx)) + 0.499); if (direction < 0) direction += 360; sprintf(interp->result, "%d", direction); } else { Tcl_AppendResult(interp, "bad option \"", argv[1], "\": must be activate, show, add, configure, delete, ", "entryconfigure, index, invoke, post, unpost, pending, ", "defer, grab, or ungrab", (char *) NULL); goto error; } done: Tk_Release((ClientData) menuPtr); return result; error: Tk_Release((ClientData) menuPtr); return TCL_ERROR; } /* *---------------------------------------------------------------------- * * DestroyPieMenu -- * * This procedure is invoked by Tk_EventuallyFree or Tk_Release * to clean up the internal structure of a pie menu at a safe time * (when no-one is using it anymore). * * Results: * None. * * Side effects: * Everything associated with the pie menu is freed up. * *---------------------------------------------------------------------- */ static void DestroyPieMenu(clientData) ClientData clientData; /* Info about menu widget. */ { register PieMenu *menuPtr = (PieMenu *) clientData; int i; /* Should we delete the event handler? */ for (i = 0; i < menuPtr->numEntries; i++) { DestroyPieMenuEntry((ClientData) menuPtr->entries[i]); } if (menuPtr->entries != NULL) { ckfree((char *) menuPtr->entries); } if (menuPtr->border != NULL) { Tk_Free3DBorder(menuPtr->border); } if (menuPtr->activeBorder != NULL) { Tk_Free3DBorder(menuPtr->activeBorder); } if (menuPtr->fontPtr != NULL) { Tk_FreeFontStruct(menuPtr->fontPtr); } if (menuPtr->fg != NULL) { Tk_FreeColor(menuPtr->fg); } if (menuPtr->textGC != None) { Tk_FreeGC(menuPtr->textGC); } if (menuPtr->activeFg != NULL) { Tk_FreeColor(menuPtr->activeFg); } if (menuPtr->activeGC != None) { Tk_FreeGC(menuPtr->activeGC); } if (menuPtr->cursor != None) { Tk_FreeCursor(menuPtr->cursor); } ckfree((char *) menuPtr); } /* *---------------------------------------------------------------------- * * DestroyPieMenuEntry -- * * This procedure is invoked by Tk_EventuallyFree or Tk_Release * to clean up the internal structure of a pie menu entry at a safe * time (when no-one is using it anymore). * * Results: * None. * * Side effects: * Everything associated with the pie menu entry is freed up. * *---------------------------------------------------------------------- */ static void DestroyPieMenuEntry(clientData) ClientData clientData; /* Pointer to entry to be freed. */ { register PieMenuEntry *mePtr = (PieMenuEntry *) clientData; PieMenu *menuPtr = mePtr->piemenuPtr; if (menuPtr->postedPie == mePtr) { if (UnpostSubPieMenu(menuPtr->interp, menuPtr) != TCL_OK) { TkBindError(menuPtr->interp); } } if (mePtr->label != NULL) { ckfree(mePtr->label); } if (mePtr->bitmap != None) { Tk_FreePixmap(mePtr->bitmap); } if (mePtr->border != NULL) { Tk_Free3DBorder(mePtr->border); } if (mePtr->activeBorder != NULL) { Tk_Free3DBorder(mePtr->activeBorder); } if (mePtr->fontPtr != NULL) { Tk_FreeFontStruct(mePtr->fontPtr); } if (mePtr->textGC != NULL) { Tk_FreeGC(mePtr->textGC); } if (mePtr->activeGC != NULL) { Tk_FreeGC(mePtr->activeGC); } if (mePtr->command != NULL) { ckfree(mePtr->command); } if (mePtr->name != NULL) { ckfree(mePtr->name); } ckfree((char *) mePtr); } /* *---------------------------------------------------------------------- * * ConfigurePieMenu -- * * This procedure is called to process an argv/argc list, plus * the Tk option database, in order to configure (or * reconfigure) a menu widget. * * Results: * The return value is a standard Tcl result. If TCL_ERROR is * returned, then interp->result contains an error message. * * Side effects: * Configuration information, such as colors, font, etc. get set * for menuPtr; old resources get freed, if there were any. * *---------------------------------------------------------------------- */ static int ConfigurePieMenu(interp, menuPtr, argc, argv, flags) Tcl_Interp *interp; /* Used for error reporting. */ register PieMenu *menuPtr; /* Information about widget; may or may * not already have values for some fields. */ int argc; /* Number of valid entries in argv. */ char **argv; /* Arguments. */ int flags; /* Flags to pass to Tk_ConfigureWidget. */ { XGCValues gcValues; GC newGC; int i; if (Tk_ConfigureWidget(interp, menuPtr->tkwin, configSpecs, argc, argv, (char *) menuPtr, flags) != TCL_OK) { return TCL_ERROR; } /* * A few options need special processing, such as setting the * background from a 3-D border, or filling in complicated * defaults that couldn't be specified to Tk_ConfigureWidget. */ if (menuPtr->title == NULL) { menuPtr->titleLength = 0; } else { menuPtr->titleLength = strlen(menuPtr->title); } Tk_SetBackgroundFromBorder(menuPtr->tkwin, menuPtr->border); gcValues.font = menuPtr->fontPtr->fid; gcValues.foreground = menuPtr->fg->pixel; gcValues.background = Tk_3DBorderColor(menuPtr->border)->pixel; newGC = Tk_GetGC(menuPtr->tkwin, GCForeground|GCBackground|GCFont, &gcValues); if (menuPtr->textGC != None) { Tk_FreeGC(menuPtr->textGC); } menuPtr->textGC = newGC; gcValues.font = menuPtr->fontPtr->fid; gcValues.foreground = menuPtr->activeFg->pixel; gcValues.background = Tk_3DBorderColor(menuPtr->activeBorder)->pixel; newGC = Tk_GetGC(menuPtr->tkwin, GCForeground|GCBackground|GCFont, &gcValues); if (menuPtr->activeGC != None) { Tk_FreeGC(menuPtr->activeGC); } menuPtr->activeGC = newGC; /* * After reconfiguring a menu, we need to reconfigure all of the * entries in the menu, since some of the things in the children * (such as graphics contexts) may have to change to reflect changes * in the parent. */ for (i = 0; i < menuPtr->numEntries; i++) { PieMenuEntry *mePtr; mePtr = menuPtr->entries[i]; ConfigurePieMenuEntry(interp, menuPtr, mePtr, i, 0, (char **) NULL, TK_CONFIG_ARGV_ONLY | COMMAND_MASK << mePtr->type); } if (!(menuPtr->flags & RESIZE_PENDING)) { menuPtr->flags |= RESIZE_PENDING; Tk_DoWhenIdle(ComputePieMenuGeometry, (ClientData) menuPtr); } return TCL_OK; } /* *---------------------------------------------------------------------- * * ConfigurePieMenuEntry -- * * This procedure is called to process an argv/argc list, plus * the Tk option database, in order to configure (or * reconfigure) one entry in a menu. * * Results: * The return value is a standard Tcl result. If TCL_ERROR is * returned, then interp->result contains an error message. * * Side effects: * Configuration information such as label and accelerator get * set for mePtr; old resources get freed, if there were any. * *---------------------------------------------------------------------- */ static int ConfigurePieMenuEntry(interp, menuPtr, mePtr, index, argc, argv, flags) Tcl_Interp *interp; /* Used for error reporting. */ PieMenu *menuPtr; /* Information about whole menu. */ register PieMenuEntry *mePtr; /* Information about menu entry; may * or may not already have values for * some fields. */ int index; /* Index of mePtr within menuPtr's * entries. */ int argc; /* Number of valid entries in argv. */ char **argv; /* Arguments. */ int flags; /* Additional flags to pass to * Tk_ConfigureWidget. */ { XGCValues gcValues; GC newGC, newActiveGC; /* * If this entry is a piemenu and the piemenu is posted, then unpost * it before reconfiguring the entry (otherwise the reconfigure might * change the name of the piemenu entry, leaving a posted menu * high and dry). */ if (menuPtr->postedPie == mePtr) { if (UnpostSubPieMenu(menuPtr->interp, menuPtr) != TCL_OK) { TkBindError(menuPtr->interp); } } if (Tk_ConfigureWidget(interp, menuPtr->tkwin, entryConfigSpecs, argc, argv, (char *) mePtr, flags | (COMMAND_MASK << mePtr->type)) != TCL_OK) { return TCL_ERROR; } /* * The code below handles special configuration stuff not taken * care of by Tk_ConfigureWidget, such as special processing for * defaults, sizing strings, graphics contexts, etc. */ if (mePtr->label == NULL) { mePtr->labelLength = 0; } else { mePtr->labelLength = strlen(mePtr->label); } if (index != menuPtr->active) { ActivatePieMenuEntry(menuPtr, index, 0); } if ((mePtr->fontPtr != NULL) || (mePtr->type == PIEMENU_ENTRY)) { gcValues.foreground = menuPtr->fg->pixel; gcValues.background = Tk_3DBorderColor( (mePtr->border != NULL) ? mePtr->border : menuPtr->border) ->pixel; if (mePtr->fontPtr != NULL) { gcValues.font = mePtr->fontPtr->fid; } else { if (menuPtr->titlefontPtr != NULL) gcValues.font = menuPtr->titlefontPtr->fid; else gcValues.font = menuPtr->fontPtr->fid; } /* * Note: disable GraphicsExpose events; we know there won't be * obscured areas when copying from an off-screen pixmap to the * screen and this gets rid of unnecessary events. */ gcValues.graphics_exposures = False; newGC = Tk_GetGC(menuPtr->tkwin, GCForeground|GCBackground|GCFont|GCGraphicsExposures, &gcValues); gcValues.foreground = menuPtr->activeFg->pixel; gcValues.background = Tk_3DBorderColor( (mePtr->activeBorder != NULL) ? mePtr->activeBorder : menuPtr->activeBorder)->pixel; newActiveGC = Tk_GetGC(menuPtr->tkwin, GCForeground|GCBackground|GCFont|GCGraphicsExposures, &gcValues); } else { newGC = NULL; newActiveGC = NULL; } if (mePtr->textGC != NULL) { Tk_FreeGC(mePtr->textGC); } mePtr->textGC = newGC; if (mePtr->activeGC != NULL) { Tk_FreeGC(mePtr->activeGC); } mePtr->activeGC = newActiveGC; if (!(menuPtr->flags & RESIZE_PENDING)) { menuPtr->flags |= RESIZE_PENDING; Tk_DoWhenIdle(ComputePieMenuGeometry, (ClientData) menuPtr); } return TCL_OK; } /* *-------------------------------------------------------------- * * ComputePieMenuGeometry -- * * This procedure is invoked to recompute the size and * layout of a menu. It is called as a when-idle handler so * that it only gets done once, even if a group of changes is * made to the menu. * * Results: * None. * * Side effects: * Fields of menu entries are changed to reflect their * current positions, and the size of the menu window * itself may be changed. * *-------------------------------------------------------------- */ static void ComputePieMenuGeometry(clientData) ClientData clientData; /* Structure describing menu. */ { PieMenu *menuPtr = (PieMenu *) clientData; if (menuPtr->tkwin == NULL) { return; } LayoutPieMenu(menuPtr); if ((menuPtr->width != Tk_ReqWidth(menuPtr->tkwin)) || (menuPtr->height != Tk_ReqHeight(menuPtr->tkwin))) { Tk_GeometryRequest(menuPtr->tkwin, menuPtr->width, menuPtr->height); } else { /* * Must always force a redisplay here if the window is mapped * (even if the size didn't change, something else might have * changed in the menu, such as a label or accelerator). The * resize will force a redisplay above. */ EventuallyRedrawPieMenu(menuPtr, -1); } menuPtr->flags &= ~RESIZE_PENDING; } /* *---------------------------------------------------------------------- * * DisplayPieMenu -- * * This procedure is invoked to display a pie menu widget. * * Results: * None. * * Side effects: * Commands are output to X to display the pie menu in its * current mode. * *---------------------------------------------------------------------- */ static void DisplayPieMenu(clientData) ClientData clientData; /* Information about widget. */ { register PieMenu *menuPtr = (PieMenu *) clientData; register Tk_Window tkwin = menuPtr->tkwin; XFontStruct *fontPtr; int index; menuPtr->flags &= ~REDRAW_PENDING; if ((menuPtr->tkwin == NULL) || !Tk_IsMapped(menuPtr->tkwin)) { return; } if (menuPtr->titlefontPtr != NULL) { fontPtr = menuPtr->titlefontPtr; } else { fontPtr = menuPtr->fontPtr; } if (menuPtr->titleLength != 0) { Tk_Draw3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), menuPtr->border, menuPtr->borderWidth, menuPtr->borderWidth, Tk_Width(tkwin) - 2*menuPtr->borderWidth, menuPtr->title_height + 2*menuPtr->borderWidth, menuPtr->borderWidth, TK_RELIEF_RAISED); TkDisplayChars(Tk_Display(tkwin), Tk_WindowId(tkwin), menuPtr->textGC, fontPtr, menuPtr->title, menuPtr->titleLength, menuPtr->title_x, menuPtr->title_y, TK_NEWLINES_NOT_SPECIAL); } if (menuPtr->segments) { XSetLineAttributes(Tk_Display(tkwin), menuPtr->textGC, 0, LineSolid, CapButt, JoinMiter); XDrawSegments(Tk_Display(tkwin), Tk_WindowId(tkwin), menuPtr->textGC, menuPtr->segments, menuPtr->numEntries); } Tk_Draw3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), menuPtr->border, 0, 0, Tk_Width(tkwin), Tk_Height(tkwin), menuPtr->borderWidth, TK_RELIEF_RAISED); UpdatePieMenuEntries(menuPtr); } /* *---------------------------------------------------------------------- * * UpdatePieMenu -- * * This procedure is invoked to update a pie menu widget. * * Results: * None. * * Side effects: * Commands are output to X to update the pie menu in its * current mode. * *---------------------------------------------------------------------- */ static void UpdatePieMenu(clientData) ClientData clientData; /* Information about widget. */ { register PieMenu *menuPtr = (PieMenu *) clientData; menuPtr->flags &= ~UPDATE_PENDING; if ((menuPtr->tkwin == NULL) || !Tk_IsMapped(menuPtr->tkwin)) { return; } UpdatePieMenuEntries(menuPtr); } UpdatePieMenuEntries(menuPtr) PieMenu *menuPtr; { register PieMenuEntry *mePtr; register Tk_Window tkwin = menuPtr->tkwin; XFontStruct *fontPtr; int index; GC gc; for (index = 0; index < menuPtr->numEntries; index++) { mePtr = menuPtr->entries[index]; if (!(mePtr->flags & ENTRY_NEEDS_REDISPLAY)) { continue; } mePtr->flags &= ~ENTRY_NEEDS_REDISPLAY; /* * Background. */ Tk_Fill3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), ((mePtr->activeBorder != NULL) ? mePtr->activeBorder : menuPtr->activeBorder), mePtr->x, mePtr->y, mePtr->width, mePtr->height, menuPtr->activeBorderWidth, ((index == menuPtr->active) ? TK_RELIEF_SUNKEN : ((HaveShape && menuPtr->shaped) ? TK_RELIEF_RAISED : TK_RELIEF_FLAT))); gc = mePtr->textGC; if (gc == NULL) { gc = menuPtr->textGC; } /* * Draw label or bitmap for entry. */ fontPtr = mePtr->fontPtr; if (fontPtr == NULL) { fontPtr = menuPtr->fontPtr; } if (mePtr->bitmap != None) { unsigned int width, height; Tk_SizeOfPixmap(mePtr->bitmap, &width, &height); XCopyArea(Tk_Display(tkwin), mePtr->bitmap, Tk_WindowId(tkwin), gc, 0, 0, width, height, mePtr->label_x, mePtr->label_y); } else { if (mePtr->label != NULL) { TkDisplayChars(Tk_Display(tkwin), Tk_WindowId(tkwin), gc, fontPtr, mePtr->label, mePtr->labelLength, mePtr->label_x, mePtr->label_y, TK_NEWLINES_NOT_SPECIAL); } } } } /* *-------------------------------------------------------------- * * GetPieMenuIndex -- * * Parse a textual index into a pie menu and return the numerical * index of the indicated entry. * * Results: * A standard Tcl result. If all went well, then *indexPtr is * filled in with the entry index corresponding to string * (ranges from -1 to the number of entries in the pie menu minus * one). Otherwise an error message is left in interp->result. * * Side effects: * None. * *-------------------------------------------------------------- */ static int GetPieMenuIndex(interp, menuPtr, string, indexPtr) Tcl_Interp *interp; /* For error messages. */ PieMenu *menuPtr; /* Menu for which the index is being * specified. */ char *string; /* Specification of an entry in menu. See * manual entry for valid .*/ int *indexPtr; /* Where to store converted relief. */ { int i, y; if ((string[0] == 'a') && (strcmp(string, "active") == 0)) { *indexPtr = menuPtr->active; return TCL_OK; } if ((string[0] == 'l') && (strcmp(string, "last") == 0)) { *indexPtr = menuPtr->numEntries-1; return TCL_OK; } if ((string[0] == 'n') && (strcmp(string, "none") == 0)) { *indexPtr = -1; return TCL_OK; } if (string[0] == '@') { char xstr[32], ystr[32]; int x, y; if ((sscanf(&string[1], "%31[^,],%31[^,]", xstr, ystr) == 2) && (Tcl_GetInt(interp, xstr, &x) == TCL_OK) && (Tcl_GetInt(interp, ystr, &y) == TCL_OK)) { *indexPtr = CalcPieMenuItem(menuPtr, x, y); return TCL_OK; } else { Tcl_SetResult(interp, (char *) NULL, TCL_STATIC); } } if (isdigit(string[0])) { if (Tcl_GetInt(interp, string, &i) == TCL_OK) { if ((i < menuPtr->numEntries) && (i >= 0)) { *indexPtr = i; return TCL_OK; } } else { Tcl_SetResult(interp, (char *) NULL, TCL_STATIC); } } for (i = 0; i < menuPtr->numEntries; i++) { char *label; label = menuPtr->entries[i]->label; if ((label != NULL) && (Tcl_StringMatch(menuPtr->entries[i]->label, string))) { *indexPtr = i; return TCL_OK; } } Tcl_AppendResult(interp, "bad menu entry index \"", string, "\"", (char *) NULL); return TCL_ERROR; } /* *-------------------------------------------------------------- * * PieMenuEventProc -- * * This procedure is invoked by the Tk dispatcher for various * events on pie menus. * * Results: * None. * * Side effects: * When the window gets deleted, internal structures get * cleaned up. When it gets exposed, it is redisplayed. * *-------------------------------------------------------------- */ static void PieMenuEventProc(clientData, eventPtr) ClientData clientData; /* Information about window. */ XEvent *eventPtr; /* Information about event. */ { PieMenu *menuPtr = (PieMenu *) clientData; switch (eventPtr->type) { case Expose: if (eventPtr->xexpose.count == 0) { EventuallyRedrawPieMenu(menuPtr, -1); } break; case DestroyNotify: Tcl_DeleteCommand(menuPtr->interp, Tk_PathName(menuPtr->tkwin)); /* * Careful! Must delete the event-sharing information here * rather than in DestroyPieMenu. By the time that procedure * is called the tkwin may have been reused, resulting in some * other window accidentally being cut off from shared events. */ Tk_UnshareEvents(menuPtr->tkwin, menuPtr->group); menuPtr->tkwin = NULL; if (menuPtr->flags & REDRAW_PENDING) { Tk_CancelIdleCall(DisplayPieMenu, (ClientData) menuPtr); } if (menuPtr->flags & UPDATE_PENDING) { Tk_CancelIdleCall(UpdatePieMenu, (ClientData) menuPtr); } if (menuPtr->flags & RESIZE_PENDING) { Tk_CancelIdleCall(ComputePieMenuGeometry, (ClientData) menuPtr); } if (menuPtr->flags & POPUP_PENDING) { Tk_CancelIdleCall(PopupPieMenu, (ClientData) menuPtr); } Tk_EventuallyFree((ClientData) menuPtr, DestroyPieMenu); break; case MotionNotify: break; case ButtonPress: break; case ButtonRelease: break; } } /* *---------------------------------------------------------------------- * * EventuallyRedrawPieMenu -- * * Arrange for an entry of a pie menu, or the whole pie menu, * to be redisplayed at some point in the future. * * Results: * None. * * Side effects: * A when-idle hander is scheduled to do the redisplay, if there * isn't one already scheduled. * *---------------------------------------------------------------------- */ static void EventuallyRedrawPieMenu(menuPtr, index) register PieMenu *menuPtr; /* Information about menu to redraw. */ int index; /* Which entry to redraw. If -1, then * all the entries in the menu are redrawn. */ { if (menuPtr->tkwin == NULL) { return; } if (index != -1) { menuPtr->entries[index]->flags |= ENTRY_NEEDS_REDISPLAY; } else { for (index = 0; index < menuPtr->numEntries; index++) { menuPtr->entries[index]->flags |= ENTRY_NEEDS_REDISPLAY; } index = -1; } if ((menuPtr->tkwin == NULL) || !Tk_IsMapped(menuPtr->tkwin) || (menuPtr->flags & REDRAW_PENDING)) { return; } if (index == -1) { if (menuPtr->flags & UPDATE_PENDING) { Tk_CancelIdleCall(UpdatePieMenu, (ClientData) menuPtr); } Tk_DoWhenIdle(DisplayPieMenu, (ClientData) menuPtr); menuPtr->flags |= REDRAW_PENDING; } else { Tk_DoWhenIdle(UpdatePieMenu, (ClientData) menuPtr); menuPtr->flags |= UPDATE_PENDING; } } static void PopupPieMenu(clientData) ClientData clientData; /* Information about widget. */ { register PieMenu *menuPtr = (PieMenu *) clientData; NeverPopupPieMenu(menuPtr); if (Tk_IsMapped(menuPtr->tkwin)) { return; } ShapePieMenu(menuPtr); Tk_MapWindow(menuPtr->tkwin); } static void NowPopupPieMenu(menuPtr) register PieMenu *menuPtr; { PopupPieMenu((ClientData)menuPtr); } static void NeverPopupPieMenu(menuPtr) register PieMenu *menuPtr; { if (menuPtr->flags & POPUP_PENDING) { Tk_DeleteTimerHandler(menuPtr->popup_timer_token); menuPtr->popup_timer_token = 0; menuPtr->flags &= ~POPUP_PENDING; } } static void EventuallyPopupPieMenu(menuPtr) register PieMenu *menuPtr; { NeverPopupPieMenu(menuPtr); if (Tk_IsMapped(menuPtr->tkwin)) { return; } menuPtr->popup_timer_token = Tk_CreateTimerHandler(menuPtr->popup_delay, PopupPieMenu, (ClientData) menuPtr); menuPtr->flags |= POPUP_PENDING; } static void DeferPopupPieMenu(menuPtr) register PieMenu *menuPtr; { if (menuPtr->flags & POPUP_PENDING) { EventuallyPopupPieMenu(menuPtr); } } /* *-------------------------------------------------------------- * * UnpostSubPieMenu -- * * This procedure unposts any submenu. * * Results: * A standard Tcl return result. Errors may occur in the * Tcl commands generated to unpost submenus. * * Side effects: * If there is already a submenu posted, it is unposted. * *-------------------------------------------------------------- */ static int UnpostSubPieMenu(interp, menuPtr) Tcl_Interp *interp; /* Used for invoking sub-commands and * reporting errors. */ register PieMenu *menuPtr; /* Information about menu as a whole. */ { char string[30]; int result, x, y, win_x, win_y; unsigned int key_buttons; Window root, child; if (menuPtr->postedPie == NULL) { return TCL_OK; } result = Tcl_VarEval(interp, menuPtr->postedPie->name, " unpost", (char *) NULL); menuPtr->postedPie = NULL; return result; } /* *---------------------------------------------------------------------- * * ActivatePieMenuEntry -- * * This procedure is invoked to make a particular pie menu * entry the active one, deactivating any other entry that * might currently be active. * * Results: * The return value is a standard Tcl result (errors can occur * while posting and unposting submenus). * * Side effects: * Pie menu entries get redisplayed, and the active entry * changes. Submenus may get posted and unposted. * *---------------------------------------------------------------------- */ static int ActivatePieMenuEntry(menuPtr, index, preview) register PieMenu *menuPtr; /* Menu in which to activate. */ int index; /* Index of entry to activate, or * -1 to deactivate all entries. */ int preview; /* 1 to execute previewer */ { register PieMenuEntry *mePtr; int result = TCL_OK; if (menuPtr->active >= 0) { mePtr = menuPtr->entries[menuPtr->active]; EventuallyRedrawPieMenu(menuPtr, menuPtr->active); } menuPtr->active = index; if (index >= 0) { mePtr = menuPtr->entries[index]; EventuallyRedrawPieMenu(menuPtr, index); if (preview) { Tk_Preserve((ClientData) mePtr); if (mePtr->preview != NULL) { result = Tcl_GlobalEval(menuPtr->interp, mePtr->preview); } Tk_Release((ClientData) mePtr); } } else { /* We're doing this in tcl these days, for finer control. */ #if 0 if (preview && menuPtr->preview) { result = Tcl_GlobalEval(menuPtr->interp, menuPtr->preview); } #endif } return result; } /* * This pie menu tracking code determines the slice the cursor * is in by representing slice edge angles as (quadrant, slope) * pairs that can be quickly computed and compared. * * The slope is defined such that it is greater than or equal to zero, * less than infinity, and increasing counter-clockwise around the menu. * Each of the four quadrants encompasses one range of slope. * * Y * ^ * | x>0, y>=0 * x<=0, y>0 <--+ y/x * -x/y | ^ * quad 1 | quad 0 | X * -----+--------+--------+----> * | quad 2 | quad 3 * V | -x/y * x<0, y<=0 +--> x>=0, y<0 * y/x | * | * * The quadrants and slopes of the item edges are all precalculated, * during menu layout. * The quadrant and slope of the cursor must be calculated frequently * during menu tracking, so we just calculate the numerator and * denominator of the slope, and avoid an unnecessary division. * Instead of calculating "slope = numerator / denominator" then * testing "slope < it->slope", every time the cursor moves, we can * just test "numerator < (denominator * it->slope)". * * This algorithm works in a right-side-up coordinate space, but the final * results are tranformed into X-windows's up-side-down coordinate system * by subtracting the y values from the window height. */ #define CALC_QUADRANT_SLOPE(x, y, quadrant, numerator, denominator) \ if ((y) > 0) (quadrant) = ((x) > 0 ? 0 : 1); \ else if ((y) < 0) (quadrant) = ((x) < 0 ? 2 : 3); \ else (quadrant) = ((x) > 0 ? 0 : 2); \ if ((quadrant) & 1) { \ (numerator) = ABS((x)); (denominator) = ABS((y)); \ } else { \ (numerator) = ABS((y)); (denominator) = ABS((x)); \ } int CalcPieMenuItem(menu, x, y) PieMenu *menu; int x, y; { register PieMenuEntry *it, *last_it; int i, j, order, quadrant; int numerator, denominator; int first, last_i, last_order; /* * Translate x and y from root window coordinates so they are * relative to the menu center, in right side up coordinates. */ menu->dx = x = (x - menu->root_x) + 1; menu->dy = y = (menu->root_y - y) - 1; /* * If there are no menu items, * or we are within the inactive region in the menu center, * then there is no item selected. */ if ((menu->numEntries == 0) || ((x * x) + (y * y) < (menu->inactive_radius * menu->inactive_radius))) { return(-1); } /* * If there's only one item, then that must be it. */ if (menu->numEntries == 1) { return(0); } /* * Calculate the quadrant, slope numerator, and slope denominator of * the cursor slope, to be used for comparisons. */ CALC_QUADRANT_SLOPE(x, y, quadrant, numerator, denominator); /* * In most cases, during cursor tracking, the menu item that the * cursor is over will be the same as it was before (almost all * of the time), or one of the neighboring items (most of the * rest of the time). So we check those items first. But to keep * things simple, instead of actually checking the items in order of * frequency (the current, the two neighbors, then the rest), we just * start our loop around the menu items at the item *before* the * last selected menu item, so we still check the three most common * cases first (neighbor, current, neighbor, rest), without having * to complicate the code with special cases. Another strategy, that * might be good for menus with ridiculously many items, would be * [to check the current item first, then the two neighbors, then] * to do a binary search of the menu items (since they are ordered). * But that's more complicated and you shouldn't have that many menu * items anyway. */ /* * Start at the item before current one. */ first = menu->active - 1; if (first < 0) first = menu->numEntries - 1; /* * Initialize last_order such that we will go through the loop * at least once, validating last_i, last_order, and last_it for * the next time through the loop. */ last_i = last_order = -1; i = first; it = menu->entries[i]; while (1) { /* Legend: c = cursor, e = edge , quad 1 | quad 0 -------+------- quad 2 | quad 3 */ /* Set order = 1, if shortest direction from edge to cursor is ccw */ switch ((quadrant - it->quadrant) & 3) { case 0: /* 0,0 1,1 2,2 3,3 |ce ce| | | --+-- --+-- --+-- --+-- | | ce| |ce */ /* slope >= it->slope */ order = ((float)numerator >= (float)(denominator * it->slope)); break; case 1: /* 1,0 2,1 3,2 0,3 c|e e| | |c --+-- --+-- --+-- --+-- | c| e|c |e */ order = 1; break; case 2: /* 2,0 3,1 0,2 1,3 |e e| |c c| --+-- --+-- --+-- --+-- c| |c e| |e */ /* slope < it->slope */ order = ((float)numerator < (float)(denominator * it->slope)); break; case 3: /* 3,0 0,1 1,2 2,3 |e e|c c| | --+-- --+-- --+-- --+-- |c | e| c|e */ order = 0; break; } /* * If we were counter-clockwise of the last leading edge, * and we're clockwise of this leading edge, * then we were in the last menu item. * (Note: first time through this loop last_order = -1 so we'll * go back through the loop at least once, after validating * last_order, last_i, and last_it.) */ if ((last_order == 1) && (order == 0)) { return(last_i); } last_order = order; /* * Remember this menu item index, and move on to the next one * counter-clockwise around the circle. */ last_i = i; last_it = it; if (++i >= menu->numEntries) { i = 0; } it = menu->entries[i]; /* * If we've checked all the others, then that must have been it. * This saves us from checking the leading edge of the first * item again (It's also insurance against layout bugs.) */ if (i == first) { return(last_i); } } } LayoutPieMenu(menu) PieMenu *menu; { int i; int total_slice, radius; int minx, miny, maxx, maxy; float angle; PieMenuEntry *it, *last; XFontStruct *font, *titlefont; /* * Calculate the sum of the menu item slice sizes. * Each menu item will get a (slice / total_slice) sized slice of the pie. */ total_slice = 0; for (i = 0; i < menu->numEntries; i++) { total_slice += menu->entries[i]->slice; } if ((titlefont = menu->titlefontPtr) == NULL) titlefont = menu->fontPtr; /* * Calculate the subtend, angle, cosine, sine, quadrant, slope, * and size of each menu item. */ angle = DEG_TO_RAD(menu->initial_angle); for (i = 0; i < menu->numEntries; i++) { register float edge_dx, edge_dy, numerator, denominator, twist; register int quadrant; it = menu->entries[i]; if ((font = it->fontPtr) == NULL) font = menu->fontPtr; if (it->bitmap != None) { unsigned int bitmapWidth, bitmapHeight; Tk_SizeOfPixmap(it->bitmap, &bitmapWidth, &bitmapHeight); it->height = bitmapHeight; it->width = bitmapWidth; } else { it->height = font->ascent + font->descent; if (it->label != NULL) { (void) TkMeasureChars(font, it->label, it->labelLength, 0, (int) 100000, TK_NEWLINES_NOT_SPECIAL, &it->width); } else { it->width = 0; } } it->height += 2*menu->activeBorderWidth + 2; it->width += 2*menu->activeBorderWidth + 2; it->subtend = TWO_PI * it->slice / total_slice; twist = it->subtend / 2.0; if (i != 0) angle += twist; it->angle = angle; it->dx = cos(angle); it->dy = sin(angle); edge_dx = cos(angle - twist); edge_dy = sin(angle - twist); CALC_QUADRANT_SLOPE(edge_dx, edge_dy, quadrant, numerator, denominator); it->quadrant = quadrant; it->slope = (float)numerator / (float)denominator; angle += twist; } if ((radius = menu->fixed_radius) == 0) { radius = menu->min_radius; if (menu->numEntries > 1) { last = menu->entries[menu->numEntries - 1]; for (i = 0; i < menu->numEntries; i++) { float dx, dy, ldx, ldy; int width, height, lwidth, lheight; it = menu->entries[i]; dx = it->dx; dy = it->dy; width = it->width; height = it->height; ldx = last->dx; ldy = last->dy; lwidth = last->width; lheight = last->height; while (1) { register int x, y, lx, ly, x0max, y0max, x1min, y1min; x = dx * radius + it->x_offset; y = dy * radius + it->y_offset; lx = ldx * radius + last->x_offset; ly = ldy * radius + last->y_offset; /* Translate x y with respect to label size and position */ if (ABS(x) <= 2) { x -= width/2; if (y < 0) y -= height; } else { if (x < 0) x -= width; y -= height/2; } if (ABS(lx) <= 2) { lx -= lwidth/2; if (ly < 0) ly -= lheight; } else { if (lx < 0) lx -= lwidth; ly -= lheight/2; } /* Do rects (x y width height) and (lx ly lwidth lheight) overlap? */ x0max = x > lx ? x : lx; y0max = y > ly ? y : ly; x1min = x+width < lx+lwidth ? x+width : lx+lwidth; y1min = y+height < ly+lheight ? y+height : ly+lheight; if (!((x0max < x1min) && (y0max < y1min))) { /* If they don't overlap */ /* They are far enough out, so move on. */ break; } /* Push the menu radius out a step and try again */ radius++; } /* Loop on to next menu item */ last = it; } } radius += menu->extra_radius; } menu->label_radius = radius; /* Finally position all the menu labels at the same radius. Figure out the bounding box of the labels. */ minx = miny = maxx = maxy = 0; for (i = 0; i < menu->numEntries; i++) { it = menu->entries[i]; it->x = radius * it->dx + it->x_offset; it->y = radius * it->dy + it->y_offset; /* Translate x y with respect to label size and position */ if (ABS(it->x) <= 2) { it->x -= it->width/2; if (it->y < 0) it->y -= it->height; } else { if (it->x < 0) it->x -= it->width; it->y -= it->height/2; } it->label_x = it->x + menu->activeBorderWidth + 1; it->label_y = it->y - menu->activeBorderWidth - 1; if (it->bitmap == None) { it->label_y -= (it->fontPtr ? it->fontPtr : menu->fontPtr)->ascent; } if (it->x < minx) minx = it->x; if ((it->x + it->width) > maxx) maxx = (it->x + it->width); if (it->y < miny) miny = it->y; if ((it->y + it->height) > maxy) maxy = (it->y + it->height); } if (menu->titleLength != 0) { menu->title_height = titlefont->ascent + titlefont->descent + 2; (void) TkMeasureChars(titlefont, menu->title, menu->titleLength, 0, (int) 100000, TK_NEWLINES_NOT_SPECIAL, &menu->title_width); menu->title_width += 2; if (-(menu->title_width / 2) < minx) minx = -(menu->title_width / 2); if ((menu->title_width / 2) > maxx) maxx = (menu->title_width / 2); maxy += (2 * menu->borderWidth) + menu->title_height; } else { menu->title_width = menu->title_height = 0; } minx -= 2*menu->borderWidth; miny -= 2*menu->borderWidth; maxx += 2*menu->borderWidth; maxy += 2*menu->borderWidth; menu->center_x = -minx; menu->center_y = maxy; /* y flip */ menu->width = maxx - minx; menu->height = maxy - miny; /* menu->title_x = (menu->width - menu->title_width) / 2 + 1; */ menu->title_x = menu->center_x - menu->title_width/2 + 1; menu->title_y = 2*menu->borderWidth + titlefont->ascent + 1; /* Translate the menu items to the center of the menu, in X coordinates. */ for (i = 0; i < menu->numEntries; i++) { it = menu->entries[i]; it->x = menu->center_x + it->x; it->y = (menu->center_y - it->y) - it->height; /* y flip */ it->label_x = menu->center_x + it->label_x; it->label_y = (menu->center_y - it->label_y) - it->height; /* y flip */ } if (menu->segments != NULL) { ckfree((char *)menu->segments); } menu->segments = (XSegment *) ckalloc(menu->numEntries * sizeof(XSegment)); if (menu->numEntries > 1) { XSegment *seg = menu->segments; angle = DEG_TO_RAD(menu->initial_angle) - (menu->entries[0]->subtend / 2.0); for (i = 0; i < menu->numEntries; i++) { it = menu->entries[i]; seg->x1 = menu->center_x + (cos(angle) * menu->inactive_radius); seg->y1 = menu->center_y - (sin(angle) * menu->inactive_radius); seg->x2 = menu->center_x + (cos(angle) * (menu->label_radius - PIE_SPOKE_INSET)); seg->y2 = menu->center_y - (sin(angle) * (menu->label_radius - PIE_SPOKE_INSET)); seg++; angle += it->subtend; } } } static void ShapePieMenu(menuPtr) PieMenu *menuPtr; { Display *dpy; Window win, shape; GC gc; XGCValues values; PieMenuEntry *it; int i; if (HaveShape == 0) return; if (menuPtr->shaped == 0) { return; } dpy = Tk_Display(menuPtr->tkwin); if (HaveShape == -1) { int t1, t2; if (XShapeQueryExtension(dpy, &t1, &t2)) { HaveShape = 1; } else { HaveShape = 0; return; } } Tk_MakeWindowExist(menuPtr->tkwin); win = Tk_WindowId(menuPtr->tkwin); shape = XCreatePixmap(dpy, RootWindowOfScreen(Tk_Screen(menuPtr->tkwin)), menuPtr->width, menuPtr->height, 1); gc = XCreateGC(dpy, shape, 0, &values); XSetForeground(dpy, gc, 0); XFillRectangle(dpy, shape, gc, 0, 0, menuPtr->width, menuPtr->height); XSetForeground(dpy, gc, 1); if (menuPtr->titleLength != 0) { int bw = menuPtr->borderWidth; XFillRectangle(dpy, shape, gc, bw, bw, menuPtr->width - bw*2, menuPtr->title_height + bw*2); } for (i = 0; i < menuPtr->numEntries; i++) { it = menuPtr->entries[i]; XFillRectangle(dpy, shape, gc, it->x, it->y, it->width, it->height); } XFreeGC(dpy, gc); XShapeCombineMask(dpy, win, ShapeBounding, 0, 0, shape, ShapeSet); } micropolis-activity/src/sim/g_smmaps.c0000664000076400007640000002404010724145723020364 0ustar simcitysimcity/* g_smmaps.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" int DynamicData[32]; #define DRAW_BEGIN \ int col, row; \ unsigned short tile; \ short *mp; \ unsigned char *imageBase; \ unsigned char *image; \ unsigned QUAD *mem; \ unsigned QUAD l; \ int lineBytes = view->line_bytes8; \ int pixelBytes = view->pixel_bytes; \ mp = &Map[0][0]; \ imageBase = view->x->color ? view->data : view->data8; \ for (col = 0; col < WORLD_X; col++) { \ image = imageBase + (3 * pixelBytes * col); \ for (row = 0; row < WORLD_Y; row++) { \ tile = *(mp++) & LOMASK; \ if (tile >= TILE_COUNT) tile -= TILE_COUNT; #if defined(MSDOS) || defined(OSF1) || defined(IS_INTEL) #define ROW1_8(n) \ l = mem[n]; \ image[0] = l; \ image[1] = l >>8; \ image[2] = l >>16; \ image += lineBytes; #define ROW1_16(n) \ memcpy((char *)image, ((char *)mem) + (n * 4 * 2), (3 * 2)); \ image += lineBytes; #define ROW1_24(n) \ memcpy((char *)image, ((char *)mem) + (n * 4 * 3), (3 * 3)); \ image += lineBytes; #define ROW1_32(n) \ memcpy((char *)image, ((char *)mem) + (n * 4 * 4), (3 * 4)); \ image += lineBytes; #else #define ROW1_8(n) \ l = mem[n]; \ image[0] = l >>24; \ image[1] = l >>16; \ image[2] = l >>8; \ image += lineBytes; #define ROW1_16(n) \ l = mem[n]; /* XXX: WRONG. handle depth */ \ image[0] = l >>24; \ image[1] = l >>16; \ image[2] = l >>8; \ image += lineBytes; #define ROW1_24(n) \ l = mem[n]; /* XXX: WRONG. handle depth */ \ image[0] = l >>24; \ image[1] = l >>16; \ image[2] = l >>8; \ image += lineBytes; #define ROW1_32(n) \ l = mem[n]; /* XXX: WRONG. handle depth */ \ image[0] = l >>24; \ image[1] = l >>16; \ image[2] = l >>8; \ image += lineBytes; #endif #define ROW3_8 ROW1_8(0) ROW1_8(1) ROW1_8(2) #define ROW3_16 ROW1_16(0) ROW1_16(1) ROW1_16(2) #define ROW3_24 ROW1_24(0) ROW1_24(1) ROW1_24(2) #define ROW3_32 ROW1_32(0) ROW1_32(1) ROW1_32(2) #define ROW3 \ switch (view->x->depth) { \ case 1: \ case 8: \ ROW3_8 \ break; \ case 15: \ case 16: \ ROW3_16 \ break; \ case 24: \ ROW3_24 \ break; \ case 32: \ ROW3_32 \ break; \ default: \ assert(0); /* Undefined depth */ \ break; \ } #define DRAW_END \ mem = (unsigned QUAD *)&view->smalltiles[tile * 4 * 4 * pixelBytes]; \ ROW3 \ } \ } void drawAll(SimView *view) { DRAW_BEGIN DRAW_END } void drawRes(SimView *view) { DRAW_BEGIN if (tile > 422) tile = 0; DRAW_END } void drawCom(SimView *view) { DRAW_BEGIN if ((tile > 609) || ((tile >= 232) && (tile < 423))) tile = 0; DRAW_END } void drawInd(SimView *view) { DRAW_BEGIN if (((tile >= 240) && (tile <= 611)) || ((tile >= 693) && (tile <= 851)) || ((tile >= 860) && (tile <= 883)) || (tile >= 932)) tile = 0; DRAW_END } void drawLilTransMap(SimView *view) { DRAW_BEGIN if ((tile >= 240) || ((tile >= 207) && tile <= 220) || (tile == 223)) tile = 0; DRAW_END } /* color pixel values */ #define UNPOWERED COLOR_LIGHTBLUE #define POWERED COLOR_RED #define CONDUCTIVE COLOR_LIGHTGRAY void drawPower(SimView *view) { short col, row; unsigned short tile; short *mp; unsigned char *image, *imageBase; unsigned QUAD *mem; unsigned QUAD l; int lineBytes = view->line_bytes8; int pixelBytes = view->pixel_bytes; int pix; int powered, unpowered, conductive; if (view->x->color) { powered = view->pixels[POWERED]; unpowered = view->pixels[UNPOWERED]; conductive = view->pixels[CONDUCTIVE]; } else { powered = 255; unpowered = 0; conductive = 127; } mp = &Map[0][0]; imageBase = view->x->color ? view->data : view->data8; for (col = 0; col < WORLD_X; col++) { image = imageBase + (3 * pixelBytes * col); for (row = 0; row < WORLD_Y; row++) { tile = *(mp++); if ((tile & LOMASK) >= TILE_COUNT) tile -= TILE_COUNT; if ((unsigned short)(tile & LOMASK) <= (unsigned short)63) { tile &= LOMASK; pix = -1; } else if (tile & ZONEBIT) { pix = (tile & PWRBIT) ? powered : unpowered; } else { if (tile & CONDBIT) { pix = conductive; } else { tile = 0; pix = -1; } } if (pix < 0) { mem = (unsigned QUAD *)&view->smalltiles[tile * 4 * 4 * pixelBytes]; ROW3 } else { switch (view->x->depth) { case 1: case 8: image[0] = image[1] = image[2] = pix; image += lineBytes; image[0] = image[1] = image[2] = pix; image += lineBytes; image[0] = image[1] = image[2] = pix; image += lineBytes; break; case 15: case 16: { unsigned short *p; p = (short *)image; p[0] = p[1] = p[2] = pix; image += lineBytes; p = (short *)image; p[0] = p[1] = p[2] = pix; image += lineBytes; p = (short *)image; p[0] = p[1] = p[2] = pix; image += lineBytes; } break; case 24: case 32: { int x, y; for (y = 0; y < 3; y++) { unsigned char *img = image; for (x = 0; x < 4; x++) { *(img++) = (pix >> 0) & 0xff; *(img++) = (pix >> 8) & 0xff; *(img++) = (pix >> 16) & 0xff; if (pixelBytes == 4) { img++; } // if } // for x image += lineBytes; } // for y } break; default: assert(0); /* Undefined depth */ break; } } } } } int dynamicFilter(int col, int row) { int r, c, x; r = row >>1; c = col >>1; if (((DynamicData[0] > DynamicData[1]) || ((x = PopDensity[c][r]) >= DynamicData[0]) && (x <= DynamicData[1])) && ((DynamicData[2] > DynamicData[3]) || ((x = RateOGMem[c>>2][r>>2]) >= ((2 * DynamicData[2]) - 256)) && (x <= ((2 * DynamicData[3]) - 256))) && ((DynamicData[4] > DynamicData[5]) || ((x = TrfDensity[c][r]) >= DynamicData[4]) && (x <= DynamicData[5])) && ((DynamicData[6] > DynamicData[7]) || ((x = PollutionMem[c][r]) >= DynamicData[6]) && (x <= DynamicData[7])) && ((DynamicData[8] > DynamicData[9]) || ((x = CrimeMem[c][r]) >= DynamicData[8]) && (x <= DynamicData[9])) && ((DynamicData[10] > DynamicData[11]) || ((x = LandValueMem[c][r]) >= DynamicData[10]) && (x <= DynamicData[11])) && ((DynamicData[12] > DynamicData[13]) || ((x = PoliceMapEffect[c>>2][r>>2]) >= DynamicData[12]) && (x <= DynamicData[13])) && ((DynamicData[14] > DynamicData[15]) || ((x = FireRate[c>>2][r>>2]) >= DynamicData[14]) && (x <= DynamicData[15]))) { return 1; } else { return 0; } // if } void drawDynamic(SimView *view) { DRAW_BEGIN if (tile > 63) { if (!dynamicFilter(col, row)) { tile = 0; } // if } // if DRAW_END } micropolis-activity/src/sim/w_stubs.c0000664000076400007640000001176410724145723020255 0ustar simcitysimcity/* w_stubs.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" /* Stubs */ QUAD TotalFunds; short PunishCnt; short autoBulldoze, autoBudget; QUAD LastMesTime; short GameLevel; short InitSimLoad; short ScenarioID; short SimSpeed; short SimMetaSpeed; short UserSoundOn; char *CityName; short NoDisasters; short MesNum; short EvalChanged; short flagBlink; Spend(int dollars) { SetFunds(TotalFunds - dollars); } SetFunds(int dollars) { TotalFunds = dollars; UpdateFunds(); } /* Mac */ QUAD TickCount() { struct timeval time; gettimeofday(&time, 0); return (QUAD)((time.tv_sec / 60) + (time.tv_usec * 1000000 / 60)); } Ptr NewPtr(size) int size; { return ((Ptr)calloc(size, sizeof(Byte))); } /* w_hlhandlers.c */ GameStarted() { InvalidateMaps(); InvalidateEditors(); gettimeofday(&start_time, NULL); switch (Startup) { case -2: /* Load a city */ if (LoadCity(StartupName)) { DoStartLoad(); StartupName = NULL; break; } StartupName = NULL; case -1: if (StartupName != NULL) { setCityName(StartupName); StartupName = NULL; } else { setCityName("NowHere"); } DoPlayNewCity(); break; case 0: DoReallyStartGame(); break; default: /* scenario number */ DoStartScenario(Startup); break; } } DoPlayNewCity() { Eval("UIPlayNewCity"); } DoReallyStartGame() { Eval("UIReallyStartGame"); } DoStartLoad() { Eval("UIStartLoad"); } DoStartScenario(int scenario) { char buf[256]; sprintf(buf, "UIStartScenario %d", scenario); Eval(buf); } DropFireBombs() { Eval("DropFireBombs"); } InitGame() { sim_skips = sim_skip = sim_paused = sim_paused_speed = heat_steps = 0; setSpeed(0); } ReallyQuit() { sim_exit(0); // Just sets tkMustExit and ExitReturn } micropolis-activity/src/sim/w_graph.c0000664000076400007640000005370310724145723020215 0ustar simcitysimcity/* w_graph.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" short NewGraph = 0; short AllMax; unsigned char *History10[HISTORIES]; unsigned char *History120[HISTORIES]; int HistoryInitialized = 0; short Graph10Max, Graph120Max; Tcl_HashTable GraphCmds; int GraphUpdateTime = 100; #define DEF_GRAPH_FONT "-Adobe-Helvetica-Bold-R-Normal-*-140-*" #define DEF_GRAPH_BG_COLOR "#b0b0b0" #define DEF_GRAPH_BG_MONO "#ffffff" #define DEF_GRAPH_BORDER_WIDTH "0" #define DEF_GRAPH_RELIEF "flat" Tk_ConfigSpec GraphConfigSpecs[] = { {TK_CONFIG_FONT, "-font", (char *) NULL, (char *) NULL, DEF_GRAPH_FONT, Tk_Offset(SimGraph, fontPtr), 0}, {TK_CONFIG_BORDER, "-background", "background", "Background", DEF_GRAPH_BG_COLOR, Tk_Offset(SimGraph, border), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-background", "background", "Background", DEF_GRAPH_BG_MONO, Tk_Offset(SimGraph, border), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", DEF_GRAPH_BORDER_WIDTH, Tk_Offset(SimGraph, borderWidth), 0}, {TK_CONFIG_RELIEF, "-relief", "relief", "Relief", DEF_GRAPH_RELIEF, Tk_Offset(SimGraph, relief), 0}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; XDisplay *FindXDisplay(); static void DisplaySimGraph(ClientData clientData) { SimGraph *graph = (SimGraph *) clientData; Tk_Window tkwin = graph->tkwin; Pixmap pm = None; Drawable d; graph->flags &= ~VIEW_REDRAW_PENDING; //fprintf(stderr, "DisplaySimGraph token %d\n", graph->draw_graph_token); assert(graph->draw_graph_token != 0); if (graph->draw_graph_token != 0) { // Tk_DeleteTimerHandler(graph->draw_graph_token); graph->draw_graph_token = 0; } if (graph->visible && (tkwin != NULL) && Tk_IsMapped(tkwin)) { DoUpdateGraph(graph); } } void DestroySimGraph(ClientData clientData) { SimGraph *graph = (SimGraph *) clientData; DestroyGraph(graph); } EventuallyRedrawGraph(SimGraph *graph) { if (!(graph->flags & VIEW_REDRAW_PENDING)) { assert(graph->draw_graph_token == 0); if (graph->draw_graph_token == 0) { graph->draw_graph_token = Tk_CreateTimerHandler( GraphUpdateTime, DisplaySimGraph, (ClientData) graph); graph->flags |= VIEW_REDRAW_PENDING; //fprintf(stderr, "EventuallyRedrawGraph token %d\n", graph->draw_graph_token); } } } void SimGraphEventProc(ClientData clientData, XEvent *eventPtr) { SimGraph *graph = (SimGraph *) clientData; if ((eventPtr->type == Expose) && (eventPtr->xexpose.count == 0)) { graph->visible = 1; EventuallyRedrawGraph(graph); } else if (eventPtr->type == MapNotify) { graph->visible = 1; } else if (eventPtr->type == UnmapNotify) { graph->visible = 0; } else if (eventPtr->type == VisibilityNotify) { if (eventPtr->xvisibility.state == VisibilityFullyObscured) graph->visible = 0; else graph->visible = 1; } else if (eventPtr->type == ConfigureNotify) { DoResizeGraph(graph, eventPtr->xconfigure.width, eventPtr->xconfigure.height); EventuallyRedrawGraph(graph); } else if (eventPtr->type == DestroyNotify) { Tcl_DeleteCommand(graph->interp, Tk_PathName(graph->tkwin)); graph->tkwin = NULL; if (graph->flags & VIEW_REDRAW_PENDING) { //fprintf(stderr, "SimGraphEventProc Destroy token %d\n", graph->draw_graph_token); assert(graph->draw_graph_token != 0); if (graph->draw_graph_token != 0) { Tk_DeleteTimerHandler(graph->draw_graph_token); graph->draw_graph_token = 0; } graph->flags &= ~VIEW_REDRAW_PENDING; } Tk_EventuallyFree((ClientData) graph, DestroySimGraph); } } int GraphCmdconfigure(GRAPH_ARGS) { int result = TCL_OK; if (argc == 2) { result = Tk_ConfigureInfo(interp, graph->tkwin, GraphConfigSpecs, (char *) graph, (char *) NULL, 0); } else if (argc == 3) { result = Tk_ConfigureInfo(interp, graph->tkwin, GraphConfigSpecs, (char *) graph, argv[2], 0); } else { result = ConfigureSimGraph(interp, graph, argc-2, argv+2, TK_CONFIG_ARGV_ONLY); } return TCL_OK; } int GraphCmdposition(GRAPH_ARGS) { int result = TCL_OK; if ((argc != 2) && (argc != 4)) { return TCL_ERROR; } if (argc == 4) { if ((Tcl_GetInt(interp, argv[2], &graph->w_x) != TCL_OK) || (Tcl_GetInt(interp, argv[3], &graph->w_y) != TCL_OK)) { return TCL_ERROR; } } sprintf(interp->result, "%d %d", graph->w_x, graph->w_y); return TCL_OK; } int GraphCmdsize(GRAPH_ARGS) { if ((argc != 2) && (argc != 4)) { return TCL_ERROR; } if (argc == 4) { int w, h; if (Tcl_GetInt(interp, argv[2], &w) != TCL_OK) { return TCL_ERROR; } if (Tcl_GetInt(interp, argv[3], &h) != TCL_OK) { return TCL_ERROR; } graph->w_width = w; graph->w_height = h; } sprintf(interp->result, "%d %d", graph->w_width, graph->w_height); return TCL_OK; } int GraphCmdVisible(GRAPH_ARGS) { int visible; if ((argc != 2) && (argc != 3)) { Tcl_AppendResult(interp, "wrong # args", (char *) NULL); return TCL_ERROR; } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &visible) != TCL_OK) || (visible < 0) || (visible > 1)) { Tcl_AppendResult(interp, " bogus args", (char *) NULL); return TCL_ERROR; } graph->visible = visible; } sprintf(interp->result, "%d", graph->visible); return TCL_OK; } int GraphCmdRange(GRAPH_ARGS) { int range; if ((argc != 2) && (argc != 3)) { Tcl_AppendResult(interp, "wrong # args", (char *) NULL); return TCL_ERROR; } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &range) != TCL_OK) || ((range != 10) && (range != 120))) { Tcl_AppendResult(interp, " bogus args", (char *) NULL); return TCL_ERROR; } graph->range = range; NewGraph = 1; } sprintf(interp->result, "%d", graph->range); return TCL_OK; } int GraphCmdMask(GRAPH_ARGS) { int mask; if ((argc != 2) && (argc != 3)) { Tcl_AppendResult(interp, "wrong # args", (char *) NULL); return TCL_ERROR; } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &mask) != TCL_OK) || (mask < 0) || (mask > 63)) { Tcl_AppendResult(interp, " bogus args", (char *) NULL); return TCL_ERROR; } graph->mask = mask; NewGraph = 1; } sprintf(interp->result, "%d", graph->mask); return TCL_OK; } int DoGraphCmd(CLIENT_ARGS) { SimGraph *graph = (SimGraph *) clientData; Tcl_HashEntry *ent; int result = TCL_OK; int (*cmd)(); if (argc < 2) { return TCL_ERROR; } if (ent = Tcl_FindHashEntry(&GraphCmds, argv[1])) { cmd = (int (*)())ent->clientData; Tk_Preserve((ClientData) graph); result = cmd(graph, interp, argc, argv); Tk_Release((ClientData) graph); } else { Tcl_AppendResult(interp, "unknown command name: \"", argv[0], " ", argv[1], "\".", (char *) NULL); result = TCL_ERROR; } return result; } int GraphViewCmd(CLIENT_ARGS) { SimGraph *graph; Tk_Window tkwin = (Tk_Window) clientData; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " pathName ?options?\"", (char *) NULL); return TCL_ERROR; } tkwin = Tk_CreateWindowFromPath(interp, tkwin, argv[1], (char *) NULL); if (tkwin == NULL) { return TCL_ERROR; } graph = (SimGraph *)ckalloc(sizeof (SimGraph)); graph->tkwin = tkwin; graph->interp = interp; graph->flags = 0; Tk_SetClass(graph->tkwin, "GraphView"); Tk_CreateEventHandler(graph->tkwin, VisibilityChangeMask | ExposureMask | StructureNotifyMask, SimGraphEventProc, (ClientData) graph); Tcl_CreateCommand(interp, Tk_PathName(graph->tkwin), DoGraphCmd, (ClientData) graph, (void (*)()) NULL); /* Tk_MakeWindowExist(graph->tkwin); */ if (getenv("XSYNCHRONIZE") != NULL) { XSynchronize(Tk_Display(tkwin), 1); } InitNewGraph(graph); DoNewGraph(graph); if (ConfigureSimGraph(interp, graph, argc-2, argv+2, 0) != TCL_OK) { /* XXX: destroy graph */ Tk_DestroyWindow(graph->tkwin); return TCL_ERROR; } interp->result = Tk_PathName(graph->tkwin); return TCL_OK; } int ConfigureSimGraph(Tcl_Interp *interp, SimGraph *graph, int argc, char **argv, int flags) { if (Tk_ConfigureWidget(interp, graph->tkwin, GraphConfigSpecs, argc, argv, (char *) graph, flags) != TCL_OK) { return TCL_ERROR; } Tk_SetBackgroundFromBorder(graph->tkwin, graph->border); EventuallyRedrawGraph(graph); return TCL_OK; } char *HistName[] = { "Residential", "Commercial", "Industrial", "Cash Flow", "Crime", "Pollution" }; unsigned char HistColor[] = { COLOR_LIGHTGREEN, COLOR_DARKBLUE, COLOR_YELLOW, COLOR_DARKGREEN, COLOR_RED, COLOR_OLIVE }; graph_command_init() { int new; Tcl_CreateCommand(tk_mainInterp, "graphview", GraphViewCmd, (ClientData)MainWindow, (void (*)()) NULL); Tcl_InitHashTable(&GraphCmds, TCL_STRING_KEYS); #define GRAPH_CMD(name) HASHED_CMD(Graph, name) GRAPH_CMD(configure); GRAPH_CMD(position); GRAPH_CMD(size); GRAPH_CMD(Visible); GRAPH_CMD(Range); GRAPH_CMD(Mask); } void drawMonth(short *hist, unsigned char *s, float scale) { register short val; register short x; for (x = 0; x < 120; x++) { val = hist[x] * scale; if (val < 0) val = 0; if (val > 255) val = 255; s[119 - x] = val; } } void doAllGraphs(void) { float scaleValue; AllMax = 0; if (ResHisMax > AllMax) AllMax = ResHisMax; if (ComHisMax > AllMax) AllMax = ComHisMax; if (IndHisMax > AllMax) AllMax = IndHisMax; if (AllMax <= 128) AllMax = 0; if (AllMax) { scaleValue = 128.0 / AllMax; } else { scaleValue = 1.0; } // scaleValue = 0.5; // XXX drawMonth(ResHis, History10[RES_HIST], scaleValue); drawMonth(ComHis, History10[COM_HIST], scaleValue); drawMonth(IndHis, History10[IND_HIST], scaleValue); drawMonth(MoneyHis, History10[MONEY_HIST], 1.0); drawMonth(CrimeHis, History10[CRIME_HIST], 1.0); drawMonth(PollutionHis, History10[POLLUTION_HIST], 1.0); AllMax = 0; if (Res2HisMax > AllMax) AllMax = Res2HisMax; if (Com2HisMax > AllMax) AllMax = Com2HisMax; if (Ind2HisMax > AllMax) AllMax = Ind2HisMax; if (AllMax <= 128) AllMax = 0; if (AllMax) { scaleValue = 128.0 / AllMax; } else { scaleValue = 1.0; } // scaleValue = 0.5; // XXX drawMonth(ResHis + 120, History120[RES_HIST], scaleValue); drawMonth(ComHis + 120, History120[COM_HIST], scaleValue); drawMonth(IndHis + 120, History120[IND_HIST], scaleValue); drawMonth(MoneyHis + 120, History120[MONEY_HIST], 1.0); drawMonth(CrimeHis + 120, History120[CRIME_HIST], 1.0); drawMonth(PollutionHis + 120, History120[POLLUTION_HIST], 1.0); } void ChangeCensus(void) { CensusChanged = 1; } void graphDoer(void) { SimGraph *graph; if (CensusChanged) { doAllGraphs(); NewGraph = 1; CensusChanged = 0; } if (NewGraph) { for (graph = sim->graph; graph != NULL; graph = graph->next) { EventuallyRedrawGraph(graph); } NewGraph = 0; } } void initGraphs(void) { int i; SimGraph *graph; for (graph = sim->graph; graph != NULL; graph = graph->next) { graph->range = 10; graph->mask = ALL_HISTORIES; } if (!HistoryInitialized) { HistoryInitialized = 1; for (i = 0; i < HISTORIES; i++) { History10[i] = (unsigned char *)ckalloc(120); History120[i] = (unsigned char *)ckalloc(120); } } } /* comefrom: InitWillStuff */ InitGraphMax(void) { register x; ResHisMax = 0; ComHisMax = 0; IndHisMax = 0; for (x = 118; x >= 0; x--) { if (ResHis[x] > ResHisMax) ResHisMax = ResHis[x]; if (ComHis[x] > ComHisMax) ComHisMax = ComHis[x]; if (IndHis[x] > IndHisMax) IndHisMax = IndHis[x]; if (ResHis[x] < 0) ResHis[x] = 0; if (ComHis[x] < 0) ComHis[x] = 0; if (IndHis[x] < 0) IndHis[x] = 0; } Graph10Max = ResHisMax; if (ComHisMax > Graph10Max) Graph10Max = ComHisMax; if (IndHisMax > Graph10Max) Graph10Max = IndHisMax; Res2HisMax = 0; Com2HisMax = 0; Ind2HisMax = 0; for (x = 238; x >= 120; x--) { if (ResHis[x] > Res2HisMax) Res2HisMax = ResHis[x]; if (ComHis[x] > Com2HisMax) Com2HisMax = ComHis[x]; if (IndHis[x] > Ind2HisMax) Ind2HisMax = IndHis[x]; if (ResHis[x] < 0) ResHis[x] = 0; if (ComHis[x] < 0) ComHis[x] = 0; if (IndHis[x] < 0) IndHis[x] = 0; } Graph120Max = Res2HisMax; if (Com2HisMax > Graph120Max) Graph120Max = Com2HisMax; if (Ind2HisMax > Graph120Max) Graph120Max = Ind2HisMax; } InitNewGraph(SimGraph *graph) { int d = 8; struct XDisplay *xd; graph->next = NULL; graph->range = 10; graph->mask = ALL_HISTORIES; /* This stuff was initialized in our caller (GraphCmd) */ /* graph->tkwin = NULL; */ /* graph->interp = NULL; */ /* graph->flags = 0; */ graph->x = NULL; graph->visible = 0; graph->w_x = graph->w_y = 0; graph->w_width = graph->w_height = 0; graph->pixmap = None; graph->pixels = NULL; graph->fontPtr = NULL; graph->border = NULL; graph->borderWidth = 0; graph->relief = TK_RELIEF_FLAT; graph->draw_graph_token = 0; //fprintf(stderr, "InitNewGraph token %d\n", graph->draw_graph_token); graph->x = FindXDisplay(graph->tkwin); IncRefDisplay(graph->x); graph->pixels = graph->x->pixels; graph->fontPtr = NULL; DoResizeGraph(graph, 16, 16); } DestroyGraph(SimGraph *graph) { SimGraph **gp; for (gp = &sim->graph; (*gp) != NULL; gp = &((*gp)->next)) { if ((*gp) == graph) { (*gp) = graph->next; sim->graphs--; break; } } if (graph->pixmap != None) { XFreePixmap(graph->x->dpy, graph->pixmap); graph->pixmap = None; } DecRefDisplay(graph->x); ckfree((char *) graph); } DoResizeGraph(SimGraph *graph, int w, int h) { int resize = 0; graph->w_width = w; graph->w_height = h; if (graph->pixmap != None) { XFreePixmap(graph->x->dpy, graph->pixmap); graph->pixmap = None; } graph->pixmap = XCreatePixmap(graph->x->dpy, graph->x->root, w, h, graph->x->depth); if (graph->pixmap == None) { fprintf(stderr, "Sorry, Micropolis can't create a pixmap on X display \"%s\".\n", graph->x->display); sim_exit(1); // Just sets tkMustExit and ExitReturn return; } } DoNewGraph(SimGraph *graph) { sim->graphs++; graph->next = sim->graph; sim->graph = graph; NewGraph = 1; } #define BORDER 5 DoUpdateGraph(SimGraph *graph) { Display *dpy; GC gc; Pixmap pm; int *pix; unsigned char **hist; int w, h, mask, i, j, x, y; XPoint points[121]; int year = (CityTime / 48) + StartingYear; int month = (CityTime / 4) % 12; int do_top_labels = 0; int do_right_labels = 0; int top_label_height = 30; int right_label_width = 65; int tx, ty; float sx, sy; if (!graph->visible) { return; } if (graph->range == 10) { hist = History10; } else { hist = History120; } dpy = graph->x->dpy; gc = graph->x->gc; pm = graph->pixmap; pix = graph->pixels; w = graph->w_width; h = graph->w_height; XSetFont(graph->x->dpy, graph->x->gc, graph->fontPtr->fid); XSetLineAttributes(dpy, gc, 3, LineSolid, CapButt, JoinBevel); if (graph->x->color) { XSetForeground(dpy, gc, pix[COLOR_LIGHTGRAY]); } else { XSetForeground(dpy, gc, pix[COLOR_WHITE]); } XFillRectangle(dpy, pm, gc, 0, 0, w, h); tx = BORDER; ty = BORDER; if ((w -= (2 * BORDER)) < 1) w = 1; if ((h -= (2 * BORDER)) < 1) h = 1; if (w > (4 * right_label_width)) { w -= right_label_width; do_right_labels = 1; } if (do_right_labels && (h > (3 * top_label_height))) { ty += top_label_height; h -= top_label_height; do_top_labels = 1; } sx = ((float)w) / 120.0; sy = ((float)h) / 256.0; mask = graph->mask; for (i = 0; i < HISTORIES; i++, mask >>= 1, hist++) { if (mask & 1) { int fg = COLOR_WHITE; int bg = COLOR_BLACK; Pixmap stipple = None; for (j = 0; j < 120; j++) { x = tx + (j * sx); y = ty + ((int)(h - (((float)(*hist)[j]) * sy))); points[j].x = x; points[j].y = y; } x = tx + (j * sx); points[j].x = x; points[j].y = y; if (graph->x->color) { XSetForeground(dpy, gc, pix[HistColor[i]]); } else { switch (i) { case 0: /* res */ stipple = graph->x->gray50_stipple; break; case 1: /* com */ stipple = graph->x->gray25_stipple; break; case 2: /* ind */ stipple = graph->x->gray75_stipple; break; case 3: /* cash */ fg = COLOR_BLACK; break; case 4: /* crime */ stipple = graph->x->horiz_stipple; break; case 5: /* pol */ stipple = graph->x->vert_stipple; break; } if (stipple != None) { XSetStipple(graph->x->dpy, gc, stipple); XSetTSOrigin(graph->x->dpy, gc, 0, 0); XSetForeground(graph->x->dpy, gc, pix[fg]); XSetBackground(graph->x->dpy, gc, pix[bg]); XSetFillStyle(graph->x->dpy, gc, FillOpaqueStippled); } else { XSetForeground(graph->x->dpy, gc, pix[fg]); } } XDrawLines(dpy, pm, gc, points, 121, CoordModeOrigin); if (!graph->x->color && (stipple != None)) { XSetFillStyle(graph->x->dpy, gc, FillSolid); } if (do_right_labels) { if (graph->x->color) { XSetForeground(dpy, gc, pix[HistColor[i]]); XDrawString(graph->x->dpy, pm, graph->x->gc, x + 4, y + 5, HistName[i], strlen(HistName[i])); XDrawString(graph->x->dpy, pm, graph->x->gc, x + 5, y + 4, HistName[i], strlen(HistName[i])); XSetForeground(dpy, gc, pix[COLOR_BLACK]); XDrawString(graph->x->dpy, pm, graph->x->gc, x + 5, y + 5, HistName[i], strlen(HistName[i])); } else { XSetForeground(dpy, gc, pix[COLOR_BLACK]); XDrawString(graph->x->dpy, pm, graph->x->gc, x + 5, y + 5, HistName[i], strlen(HistName[i])); } } } } XSetLineAttributes(dpy, gc, 1, LineSolid, CapButt, JoinMiter); XSetForeground(dpy, gc, pix[COLOR_BLACK]); XDrawLine(dpy, pm, gc, tx, ty - 1, tx + w, ty - 1); XDrawLine(dpy, pm, gc, tx, ty + h, tx + w, ty + h); if (graph->range == 10) { for (x = 120 - month; x >= 0; x -= 12) { int xx, yy; xx = tx + (x * sx); XDrawLine(dpy, pm, gc, xx, ty - 1, xx, ty + h); if (do_top_labels) { char buf[256]; sprintf(buf, "%d", year--); xx = tx + (x * sx) + 2; yy = ty - ((year & 1) ? 4 : 20); XDrawString(graph->x->dpy, pm, graph->x->gc, xx, yy, buf, strlen(buf)); } } } else { int past; sx /= 10; past = 10 * (year % 10); year /= 10; for (x = 1200 - past; x >= 0; x -= 120) { int xx, yy; xx = tx + (x * sx); XDrawLine(dpy, pm, gc, xx, ty - 1, xx, ty + h); if (do_top_labels) { char buf[256]; sprintf(buf, "%d0", year--); xx = tx + (x * sx) + 2; yy = ty - ((year & 1) ? 4 : 20); XDrawString(graph->x->dpy, pm, graph->x->gc, xx, yy, buf, strlen(buf)); } } } XCopyArea(graph->x->dpy, graph->pixmap, Tk_WindowId(graph->tkwin), graph->x->gc, 0, 0, graph->w_width, graph->w_height, 0, 0); } micropolis-activity/src/sim/w_inter.c0000664000076400007640000014676010724145723020243 0ustar simcitysimcity/* * tkInterval.c -- * * This module implements a interval widgets for the Tk toolkit. * A interval displays a slider that can be adjusted to change a * value; it also displays numeric labels and a textual label, * if desired. * * Copyright 1990 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ /* Improvements in the version used for Micropolis are copyrighted and * licensed under these copyright terms. * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "tkconfig.h" #include "default.h" #include "tkint.h" /* * A data structure of the following type is kept for each interval * widget managed by this file: */ typedef struct { Tk_Window tkwin; /* Window that embodies the interval. NULL * means that the window has been destroyed * but the data structures haven't yet been * cleaned up.*/ Tcl_Interp *interp; /* Interpreter associated with interval. */ Tk_Uid orientUid; /* Orientation for window ("vertical" or * "horizontal"). */ int vertical; /* Non-zero means vertical orientation, * zero means horizontal. */ int minValue; /* Value corresponding to minimum of interval. */ int maxValue; /* Value corresponding to maximum of interval. */ int fromValue; /* Value corresponding to left or top of * interval. */ int toValue; /* Value corresponding to right or bottom * of interval. */ int tickInterval; /* Distance between tick marks; 0 means * don't display any tick marks. */ int trackValue; /* Value of mouse at start of tracking. */ int trackWidth; /* Value of max-min at start of tracking. */ int trackState; /* Tracking state. */ char *command; /* Command prefix to use when invoking Tcl * commands because the interval value changed. * NULL means don't invoke commands. * Malloc'ed. */ int commandLength; /* Number of non-NULL bytes in command. */ char *label; /* Label to display above or to right of * interval; NULL means don't display a * label. Malloc'ed. */ int labelLength; /* Number of non-NULL chars. in label. */ Tk_Uid state; /* Normal or disabled. Value cannot be * changed when interval is disabled. */ /* * Information used when displaying widget: */ int borderWidth; /* Width of 3-D border around window. */ Tk_3DBorder bgBorder; /* Used for drawing background. */ Tk_3DBorder sliderBorder; /* Used for drawing slider in normal mode. */ Tk_3DBorder activeBorder; /* Used for drawing slider when active (i.e. * when mouse is in window). */ XFontStruct *fontPtr; /* Information about text font, or NULL. */ XColor *textColorPtr; /* Color for drawing text. */ GC textGC; /* GC for drawing text in normal mode. */ int width; /* Desired narrow dimension of interval, * in pixels. */ int length; /* Desired long dimension of interval, * in pixels. */ int relief; /* Indicates whether window as a whole is * raised, sunken, or flat. */ int offset; /* Zero if relief is TK_RELIEF_FLAT, * borderWidth otherwise. Indicates how * much interior stuff must be offset from * outside edges to leave room for border. */ int showValue; /* Non-zero means to display the interval value * below or to the left of the slider; zero * means don't display the value. */ int tickPixels; /* Number of pixels required for widest tick * mark. 0 means don't display ticks.*/ int valuePixels; /* Number of pixels required for value text. */ int labelPixels; /* Number of pixels required for label. 0 * means don't display label. */ /* * Miscellaneous information: */ Cursor cursor; /* Current cursor for window, or None. */ int flags; /* Various flags; see below for * definitions. */ } Interval; /* * Flag bits for intervals: * * REDRAW_SLIDER - 1 means slider (and numerical readout) need * to be redrawn. * REDRAW_OTHER - 1 means other stuff besides slider and value * need to be redrawn. * REDRAW_ALL - 1 means the entire widget needs to be redrawn. * ACTIVE - 1 means the widget is active (the mouse is * in its window). * BUTTON_PRESSED - 1 means a button press is in progress, so * slider should appear depressed and should be * draggable. */ #define REDRAW_SLIDER 1 #define REDRAW_OTHER 2 #define REDRAW_ALL 3 #define ACTIVE 4 #define BUTTON_PRESSED 8 /* * Space to leave between interval area and text. */ #define SPACING 2 /* * Information used for argv parsing. */ static Tk_ConfigSpec configSpecs[] = { {TK_CONFIG_BORDER, "-activeforeground", "activeForeground", "Background", DEF_SCALE_ACTIVE_FG_COLOR, Tk_Offset(Interval, activeBorder), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-activeforeground", "activeForeground", "Background", DEF_SCALE_ACTIVE_FG_MONO, Tk_Offset(Interval, activeBorder), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_BORDER, "-background", "background", "Background", DEF_SCALE_BG_COLOR, Tk_Offset(Interval, bgBorder), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-background", "background", "Background", DEF_SCALE_BG_MONO, Tk_Offset(Interval, bgBorder), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_SYNONYM, "-bd", "borderWidth", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_SYNONYM, "-bg", "background", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", DEF_SCALE_BORDER_WIDTH, Tk_Offset(Interval, borderWidth), 0}, {TK_CONFIG_STRING, "-command", "command", "Command", (char *) NULL, Tk_Offset(Interval, command), 0}, {TK_CONFIG_ACTIVE_CURSOR, "-cursor", "cursor", "Cursor", DEF_SCALE_CURSOR, Tk_Offset(Interval, cursor), TK_CONFIG_NULL_OK}, {TK_CONFIG_SYNONYM, "-fg", "foreground", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_FONT, "-font", "font", "Font", DEF_SCALE_FONT, Tk_Offset(Interval, fontPtr), 0}, {TK_CONFIG_COLOR, "-foreground", "foreground", "Foreground", DEF_SCALE_FG_COLOR, Tk_Offset(Interval, textColorPtr), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_COLOR, "-foreground", "foreground", "Foreground", DEF_SCALE_FG_MONO, Tk_Offset(Interval, textColorPtr), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_INT, "-from", "from", "From", DEF_SCALE_FROM, Tk_Offset(Interval, fromValue), 0}, {TK_CONFIG_STRING, "-label", "label", "Label", DEF_SCALE_LABEL, Tk_Offset(Interval, label), 0}, {TK_CONFIG_PIXELS, "-length", "length", "Length", DEF_SCALE_LENGTH, Tk_Offset(Interval, length), 0}, {TK_CONFIG_UID, "-orient", "orient", "Orient", DEF_SCALE_ORIENT, Tk_Offset(Interval, orientUid), 0}, {TK_CONFIG_RELIEF, "-relief", "relief", "Relief", DEF_SCALE_RELIEF, Tk_Offset(Interval, relief), 0}, {TK_CONFIG_BOOLEAN, "-showvalue", "showValue", "ShowValue", DEF_SCALE_SHOW_VALUE, Tk_Offset(Interval, showValue), 0}, {TK_CONFIG_BORDER, "-sliderforeground", "sliderForeground", "Background", DEF_SCALE_SLIDER_FG_COLOR, Tk_Offset(Interval, sliderBorder), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-sliderforeground", "sliderForeground", "Background", DEF_SCALE_SLIDER_FG_MONO, Tk_Offset(Interval, sliderBorder), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_PIXELS, "-min", "min", "Min", "0", Tk_Offset(Interval, minValue), 0}, {TK_CONFIG_PIXELS, "-max", "max", "Max", "9999", Tk_Offset(Interval, maxValue), 0}, {TK_CONFIG_UID, "-state", "state", "State", DEF_SCALE_STATE, Tk_Offset(Interval, state), 0}, {TK_CONFIG_INT, "-tickinterval", "tickInterval", "TickInterval", DEF_SCALE_TICK_INTERVAL, Tk_Offset(Interval, tickInterval), 0}, {TK_CONFIG_INT, "-to", "to", "To", DEF_SCALE_TO, Tk_Offset(Interval, toValue), 0}, {TK_CONFIG_PIXELS, "-width", "width", "Width", DEF_SCALE_WIDTH, Tk_Offset(Interval, width), 0}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; /* * Forward declarations for procedures defined later in this file: */ static void ComputeIntervalGeometry _ANSI_ARGS_((Interval *intervalPtr)); static int ConfigureInterval _ANSI_ARGS_((Tcl_Interp *interp, Interval *intervalPtr, int argc, char **argv, int flags)); static void DestroyInterval _ANSI_ARGS_((ClientData clientData)); static void DisplayHorizontalInterval _ANSI_ARGS_(( ClientData clientData)); static void DisplayHorizontalValue _ANSI_ARGS_((Interval *intervalPtr, int value, int bottom)); static void DisplayVerticalInterval _ANSI_ARGS_(( ClientData clientData)); static void DisplayVerticalValue _ANSI_ARGS_((Interval *intervalPtr, int value, int rightEdge)); static void EventuallyRedrawInterval _ANSI_ARGS_((Interval *intervalPtr, int what)); static int PixelToValue _ANSI_ARGS_((Interval *intervalPtr, int x, int y)); static void IntervalEventProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); static void IntervalMouseProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); static int IntervalWidgetCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); static void SetInterval _ANSI_ARGS_((Interval *intervalPtr, int minValue, int maxValue, int notify)); static void TrackInterval _ANSI_ARGS_((Interval *intervalPtr, int value)); static void StartTrackInterval _ANSI_ARGS_((Interval *intervalPtr, int value)); static int ValueToPixel _ANSI_ARGS_((Interval *intervalPtr, int value)); /* *-------------------------------------------------------------- * * Tk_IntervalCmd -- * * This procedure is invoked to process the "interval" Tcl * command. See the user documentation for details on what * it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ int Tk_IntervalCmd(clientData, interp, argc, argv) ClientData clientData; /* Main window associated with * interpreter. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { Tk_Window tkwin = (Tk_Window) clientData; register Interval *intervalPtr; Tk_Window new; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " pathName ?options?\"", (char *) NULL); return TCL_ERROR; } new = Tk_CreateWindowFromPath(interp, tkwin, argv[1], (char *) NULL); if (new == NULL) { return TCL_ERROR; } /* * Initialize fields that won't be initialized by ConfigureInterval, * or which ConfigureInterval expects to have reasonable values * (e.g. resource pointers). */ intervalPtr = (Interval *) ckalloc(sizeof(Interval)); intervalPtr->tkwin = new; intervalPtr->interp = interp; intervalPtr->minValue = 0; intervalPtr->maxValue = 0; intervalPtr->command = NULL; intervalPtr->label = NULL; intervalPtr->state = tkNormalUid; intervalPtr->bgBorder = NULL; intervalPtr->sliderBorder = NULL; intervalPtr->activeBorder = NULL; intervalPtr->fontPtr = NULL; intervalPtr->textColorPtr = NULL; intervalPtr->textGC = None; intervalPtr->cursor = None; intervalPtr->flags = 0; Tk_SetClass(intervalPtr->tkwin, "Interval"); Tk_CreateEventHandler(intervalPtr->tkwin, ExposureMask|StructureNotifyMask, IntervalEventProc, (ClientData) intervalPtr); Tk_CreateEventHandler(intervalPtr->tkwin, EnterWindowMask|LeaveWindowMask |PointerMotionMask|ButtonPressMask|ButtonReleaseMask, IntervalMouseProc, (ClientData) intervalPtr); Tcl_CreateCommand(interp, Tk_PathName(intervalPtr->tkwin), IntervalWidgetCmd, (ClientData) intervalPtr, (void (*)()) NULL); if (ConfigureInterval(interp, intervalPtr, argc-2, argv+2, 0) != TCL_OK) { goto error; } interp->result = Tk_PathName(intervalPtr->tkwin); return TCL_OK; error: Tk_DestroyWindow(intervalPtr->tkwin); return TCL_ERROR; } /* *-------------------------------------------------------------- * * IntervalWidgetCmd -- * * This procedure is invoked to process the Tcl command * that corresponds to a widget managed by this module. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ static int IntervalWidgetCmd(clientData, interp, argc, argv) ClientData clientData; /* Information about interval * widget. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { register Interval *intervalPtr = (Interval *) clientData; int result = TCL_OK; int length; char c; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " option ?arg arg ...?\"", (char *) NULL); return TCL_ERROR; } Tk_Preserve((ClientData) intervalPtr); c = argv[1][0]; length = strlen(argv[1]); if ((c == 'c') && (strncmp(argv[1], "configure", length) == 0)) { if (argc == 2) { result = Tk_ConfigureInfo(interp, intervalPtr->tkwin, configSpecs, (char *) intervalPtr, (char *) NULL, 0); } else if (argc == 3) { result = Tk_ConfigureInfo(interp, intervalPtr->tkwin, configSpecs, (char *) intervalPtr, argv[2], 0); } else { result = ConfigureInterval(interp, intervalPtr, argc-2, argv+2, TK_CONFIG_ARGV_ONLY); } } else if ((c == 'g') && (strncmp(argv[1], "get", length) == 0)) { if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " get\"", (char *) NULL); goto error; } sprintf(interp->result, "%d %d", intervalPtr->minValue, intervalPtr->maxValue); } else if ((c == 's') && (strncmp(argv[1], "set", length) == 0)) { int minValue, maxValue; if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " set minValue maxValue\"", (char *) NULL); goto error; } if (Tcl_GetInt(interp, argv[2], &minValue) != TCL_OK) { goto error; } if (Tcl_GetInt(interp, argv[3], &maxValue) != TCL_OK) { goto error; } if (minValue > maxValue) { int temp = minValue; minValue = maxValue; maxValue = temp; } if (intervalPtr->state == tkNormalUid) { if ((minValue < intervalPtr->fromValue) ^ (intervalPtr->toValue < intervalPtr->fromValue)) { minValue = intervalPtr->fromValue; } if ((minValue > intervalPtr->toValue) ^ (intervalPtr->toValue < intervalPtr->fromValue)) { minValue = intervalPtr->toValue; } if ((maxValue < intervalPtr->fromValue) ^ (intervalPtr->toValue < intervalPtr->fromValue)) { maxValue = intervalPtr->fromValue; } if ((maxValue > intervalPtr->toValue) ^ (intervalPtr->toValue < intervalPtr->fromValue)) { maxValue = intervalPtr->toValue; } SetInterval(intervalPtr, minValue, maxValue, 1); } } else if ((c == 'r') && (strncmp(argv[1], "reset", length) == 0)) { if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " reset\"", (char *) NULL); goto error; } SetInterval(intervalPtr, intervalPtr->fromValue, intervalPtr->toValue, 0); } else { Tcl_AppendResult(interp, "bad option \"", argv[1], "\": must be configure, get, or set", (char *) NULL); goto error; } Tk_Release((ClientData) intervalPtr); return result; error: Tk_Release((ClientData) intervalPtr); return TCL_ERROR; } /* *---------------------------------------------------------------------- * * DestroyInterval -- * * This procedure is invoked by Tk_EventuallyFree or Tk_Release * to clean up the internal structure of a button at a safe time * (when no-one is using it anymore). * * Results: * None. * * Side effects: * Everything associated with the interval is freed up. * *---------------------------------------------------------------------- */ static void DestroyInterval(clientData) ClientData clientData; /* Info about interval widget. */ { register Interval *intervalPtr = (Interval *) clientData; if (intervalPtr->command != NULL) { ckfree(intervalPtr->command); } if (intervalPtr->label != NULL) { ckfree(intervalPtr->label); } if (intervalPtr->bgBorder != NULL) { Tk_Free3DBorder(intervalPtr->bgBorder); } if (intervalPtr->sliderBorder != NULL) { Tk_Free3DBorder(intervalPtr->sliderBorder); } if (intervalPtr->activeBorder != NULL) { Tk_Free3DBorder(intervalPtr->activeBorder); } if (intervalPtr->fontPtr != NULL) { Tk_FreeFontStruct(intervalPtr->fontPtr); } if (intervalPtr->textColorPtr != NULL) { Tk_FreeColor(intervalPtr->textColorPtr); } if (intervalPtr->textGC != None) { Tk_FreeGC(intervalPtr->textGC); } if (intervalPtr->cursor != None) { Tk_FreeCursor(intervalPtr->cursor); } ckfree((char *) intervalPtr); } /* *---------------------------------------------------------------------- * * ConfigureInterval -- * * This procedure is called to process an argv/argc list, plus * the Tk option database, in order to configure (or * reconfigure) a interval widget. * * Results: * The return value is a standard Tcl result. If TCL_ERROR is * returned, then interp->result contains an error message. * * Side effects: * Configuration information, such as colors, border width, * etc. get set for intervalPtr; old resources get freed, * if there were any. * *---------------------------------------------------------------------- */ static int ConfigureInterval(interp, intervalPtr, argc, argv, flags) Tcl_Interp *interp; /* Used for error reporting. */ register Interval *intervalPtr; /* Information about widget; may or may * not already have values for some fields. */ int argc; /* Number of valid entries in argv. */ char **argv; /* Arguments. */ int flags; /* Flags to pass to Tk_ConfigureWidget. */ { XGCValues gcValues; GC newGC; int length; if (Tk_ConfigureWidget(interp, intervalPtr->tkwin, configSpecs, argc, argv, (char *) intervalPtr, flags) != TCL_OK) { return TCL_ERROR; } /* * A few options need special processing, such as parsing the * orientation or setting the background from a 3-D border. */ length = strlen(intervalPtr->orientUid); if (strncmp(intervalPtr->orientUid, "vertical", length) == 0) { intervalPtr->vertical = 1; } else if (strncmp(intervalPtr->orientUid, "horizontal", length) == 0) { intervalPtr->vertical = 0; } else { Tcl_AppendResult(interp, "bad orientation \"", intervalPtr->orientUid, "\": must be vertical or horizontal", (char *) NULL); return TCL_ERROR; } if ((intervalPtr->state != tkNormalUid) && (intervalPtr->state != tkDisabledUid)) { Tcl_AppendResult(interp, "bad state value \"", intervalPtr->state, "\": must be normal or disabled", (char *) NULL); intervalPtr->state = tkNormalUid; return TCL_ERROR; } /* * Make sure that the tick interval has the right sign so that * addition moves from fromValue to toValue. */ if ((intervalPtr->tickInterval < 0) ^ ((intervalPtr->toValue - intervalPtr->fromValue) < 0)) { intervalPtr->tickInterval = -intervalPtr->tickInterval; } /* * Set the interval mix and max values to themselves; all this does is * to make sure that the interval's value is within the new acceptable * range for the interval. */ SetInterval(intervalPtr, intervalPtr->minValue, intervalPtr->maxValue, 0); if (intervalPtr->command != NULL) { intervalPtr->commandLength = strlen(intervalPtr->command); } else { intervalPtr->commandLength = 0; } if (intervalPtr->label != NULL) { intervalPtr->labelLength = strlen(intervalPtr->label); } else { intervalPtr->labelLength = 0; } Tk_SetBackgroundFromBorder(intervalPtr->tkwin, intervalPtr->bgBorder); gcValues.font = intervalPtr->fontPtr->fid; gcValues.foreground = intervalPtr->textColorPtr->pixel; newGC = Tk_GetGC(intervalPtr->tkwin, GCForeground|GCFont, &gcValues); if (intervalPtr->textGC != None) { Tk_FreeGC(intervalPtr->textGC); } intervalPtr->textGC = newGC; if (intervalPtr->relief != TK_RELIEF_FLAT) { intervalPtr->offset = intervalPtr->borderWidth; } else { intervalPtr->offset = 0; } /* * Recompute display-related information, and let the geometry * manager know how much space is needed now. */ ComputeIntervalGeometry(intervalPtr); EventuallyRedrawInterval(intervalPtr, REDRAW_ALL); return TCL_OK; } /* *---------------------------------------------------------------------- * * ComputeIntervalGeometry -- * * This procedure is called to compute various geometrical * information for a interval, such as where various things get * displayed. It's called when the window is reconfigured. * * Results: * None. * * Side effects: * Display-related numbers get changed in *scrollPtr. The * geometry manager gets told about the window's preferred size. * *---------------------------------------------------------------------- */ static void ComputeIntervalGeometry(intervalPtr) register Interval *intervalPtr; /* Information about widget. */ { XCharStruct bbox; char valueString[30]; int dummy, lineHeight; /* * Horizontal intervals are simpler than vertical ones because * all sizes are the same (the height of a line of text); * handle them first and then quit. */ if (!intervalPtr->vertical) { lineHeight = intervalPtr->fontPtr->ascent + intervalPtr->fontPtr->descent; if (intervalPtr->tickInterval != 0) { intervalPtr->tickPixels = lineHeight; } else { intervalPtr->tickPixels = 0; } if (intervalPtr->showValue) { intervalPtr->valuePixels = lineHeight + SPACING; } else { intervalPtr->valuePixels = 0; } if (intervalPtr->labelLength != 0) { intervalPtr->labelPixels = lineHeight; } else { intervalPtr->labelPixels = 0; } Tk_GeometryRequest(intervalPtr->tkwin, intervalPtr->length + 2*intervalPtr->offset, intervalPtr->tickPixels + intervalPtr->valuePixels + intervalPtr->width + 2*intervalPtr->borderWidth + intervalPtr->labelPixels + 2*intervalPtr->offset); Tk_SetInternalBorder(intervalPtr->tkwin, intervalPtr->borderWidth); return; } /* * Vertical interval: compute the amount of space needed for tick marks * and current value by formatting strings for the two end points; * use whichever length is longer. */ sprintf(valueString, "%d", intervalPtr->fromValue); XTextExtents(intervalPtr->fontPtr, valueString, strlen(valueString), &dummy, &dummy, &dummy, &bbox); intervalPtr->tickPixels = bbox.rbearing + bbox.lbearing; sprintf(valueString, "%d", intervalPtr->toValue); XTextExtents(intervalPtr->fontPtr, valueString, strlen(valueString), &dummy, &dummy, &dummy, &bbox); if (intervalPtr->tickPixels < bbox.rbearing + bbox.lbearing) { intervalPtr->tickPixels = bbox.rbearing + bbox.lbearing; } /* * Pad the value with a bit of extra space for prettier printing. */ intervalPtr->tickPixels += intervalPtr->fontPtr->ascent/2; intervalPtr->valuePixels = intervalPtr->tickPixels; if (intervalPtr->tickInterval == 0) { intervalPtr->tickPixels = 0; } if (!intervalPtr->showValue) { intervalPtr->valuePixels = 0; } if (intervalPtr->labelLength == 0) { intervalPtr->labelPixels = 0; } else { XTextExtents(intervalPtr->fontPtr, intervalPtr->label, intervalPtr->labelLength, &dummy, &dummy, &dummy, &bbox); intervalPtr->labelPixels = bbox.rbearing + bbox.lbearing + intervalPtr->fontPtr->ascent; } Tk_GeometryRequest(intervalPtr->tkwin, 2*intervalPtr->borderWidth + intervalPtr->tickPixels + intervalPtr->valuePixels + SPACING + intervalPtr->width + intervalPtr->labelPixels, intervalPtr->length); Tk_SetInternalBorder(intervalPtr->tkwin, intervalPtr->borderWidth); } /* *-------------------------------------------------------------- * * DisplayVerticalInterval -- * * This procedure redraws the contents of a vertical interval * window. It is invoked as a do-when-idle handler, so it only * runs when there's nothing else for the application to do. * * Results: * None. * * Side effects: * Information appears on the screen. * *-------------------------------------------------------------- */ static void DisplayVerticalInterval(clientData) ClientData clientData; /* Information about widget. */ { register Interval *intervalPtr = (Interval *) clientData; register Tk_Window tkwin = intervalPtr->tkwin; int tickRightEdge, valueRightEdge, labelLeftEdge, intervalLeftEdge; int totalPixels, x, y, width, height, tickValue, min, max; int relief; Tk_3DBorder sliderBorder; if ((intervalPtr->tkwin == NULL) || !Tk_IsMapped(tkwin)) { goto done; } /* * Scanning from left to right across the window, the window * will contain four columns: ticks, value, interval, and label. * Compute the x-coordinate for each of the columns. */ totalPixels = intervalPtr->tickPixels + intervalPtr->valuePixels + 2*intervalPtr->borderWidth + intervalPtr->width + 2*SPACING + intervalPtr->labelPixels; tickRightEdge = (Tk_Width(tkwin) - totalPixels)/2 + intervalPtr->tickPixels; valueRightEdge = tickRightEdge + intervalPtr->valuePixels; intervalLeftEdge = valueRightEdge + SPACING; labelLeftEdge = intervalLeftEdge + 2*intervalPtr->borderWidth + intervalPtr->width + intervalPtr->fontPtr->ascent/2; /* * Display the information from left to right across the window. */ if (intervalPtr->flags & REDRAW_OTHER) { XClearWindow(Tk_Display(tkwin), Tk_WindowId(tkwin)); /* * Display the tick marks. */ if (intervalPtr->tickPixels != 0) { for (tickValue = intervalPtr->fromValue; ; tickValue += intervalPtr->tickInterval) { if (intervalPtr->toValue > intervalPtr->fromValue) { if (tickValue > intervalPtr->toValue) { break; } } else { if (tickValue < intervalPtr->toValue) { break; } } DisplayVerticalValue(intervalPtr, tickValue, tickRightEdge); } } } /* * Display the values, if they are desired. If not redisplaying the * entire window, clear the area of the value to get rid of the * old value displayed there. */ if (intervalPtr->showValue) { if (!(intervalPtr->flags & REDRAW_OTHER)) { XClearArea(Tk_Display(tkwin), Tk_WindowId(tkwin), valueRightEdge-intervalPtr->valuePixels, intervalPtr->offset, intervalPtr->valuePixels, Tk_Height(tkwin) - 2*intervalPtr->offset, False); } DisplayVerticalValue(intervalPtr, intervalPtr->minValue, valueRightEdge); DisplayVerticalValue(intervalPtr, intervalPtr->maxValue, valueRightEdge); } /* * Display the interval and the slider. If not redisplaying the * entire window, must clear the trench area to erase the old * slider, but don't need to redraw the border. */ if (intervalPtr->flags & REDRAW_OTHER) { Tk_Draw3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), intervalPtr->bgBorder, intervalLeftEdge, intervalPtr->offset, intervalPtr->width + 2*intervalPtr->borderWidth, Tk_Height(tkwin) - 2*intervalPtr->offset, intervalPtr->borderWidth, TK_RELIEF_SUNKEN); } else { XClearArea(Tk_Display(tkwin), Tk_WindowId(tkwin), intervalLeftEdge + intervalPtr->borderWidth, intervalPtr->offset + intervalPtr->borderWidth, intervalPtr->width, Tk_Height(tkwin) - 2*intervalPtr->offset - 2*intervalPtr->borderWidth, False); } if (intervalPtr->flags & ACTIVE) { sliderBorder = intervalPtr->activeBorder; } else { sliderBorder = intervalPtr->sliderBorder; } width = intervalPtr->width; min = ValueToPixel(intervalPtr, intervalPtr->minValue); max = ValueToPixel(intervalPtr, intervalPtr->maxValue); height = (max - min) + (2 * intervalPtr->borderWidth); x = intervalLeftEdge + intervalPtr->borderWidth; relief = (intervalPtr->flags & BUTTON_PRESSED) ? TK_RELIEF_SUNKEN : TK_RELIEF_RAISED; Tk_Fill3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), sliderBorder, x, min, width, height, intervalPtr->borderWidth, relief); /* * Draw the label to the right of the interval. */ if ((intervalPtr->flags & REDRAW_OTHER) && (intervalPtr->labelPixels != 0)) { XDrawString(Tk_Display(intervalPtr->tkwin), Tk_WindowId(intervalPtr->tkwin), intervalPtr->textGC, labelLeftEdge, intervalPtr->offset + (3*intervalPtr->fontPtr->ascent)/2, intervalPtr->label, intervalPtr->labelLength); } /* * Draw the window border. */ if ((intervalPtr->flags & REDRAW_OTHER) && (intervalPtr->relief != TK_RELIEF_FLAT)) { Tk_Draw3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), intervalPtr->bgBorder, 0, 0, Tk_Width(tkwin), Tk_Height(tkwin), intervalPtr->borderWidth, intervalPtr->relief); } done: intervalPtr->flags &= ~REDRAW_ALL; } /* *---------------------------------------------------------------------- * * DisplayVerticalValue -- * * This procedure is called to display values (interval readings) * for vertically-oriented intervals. * * Results: * None. * * Side effects: * The numerical value corresponding to value is displayed with * its right edge at "rightEdge", and at a vertical position in * the interval that corresponds to "value". * *---------------------------------------------------------------------- */ static void DisplayVerticalValue(intervalPtr, value, rightEdge) register Interval *intervalPtr; /* Information about widget in which to * display value. */ int value; /* Y-coordinate of number to display, * specified in application coords, not * in pixels (we'll compute pixels). */ int rightEdge; /* X-coordinate of right edge of text, * specified in pixels. */ { register Tk_Window tkwin = intervalPtr->tkwin; int y, dummy, length; char valueString[30]; XCharStruct bbox; y = ValueToPixel(intervalPtr, value) + intervalPtr->fontPtr->ascent/2; sprintf(valueString, "%d", value); length = strlen(valueString); XTextExtents(intervalPtr->fontPtr, valueString, length, &dummy, &dummy, &dummy, &bbox); /* * Adjust the y-coordinate if necessary to keep the text entirely * inside the window. */ if ((y - bbox.ascent) < intervalPtr->offset) { y = intervalPtr->offset + bbox.ascent; } if ((y + bbox.descent) > (Tk_Height(tkwin) - intervalPtr->offset)) { y = Tk_Height(tkwin) - intervalPtr->offset - bbox.descent; } XDrawString(Tk_Display(tkwin), Tk_WindowId(tkwin), intervalPtr->textGC, rightEdge - bbox.rbearing, y, valueString, length); } /* *-------------------------------------------------------------- * * DisplayHorizontalInterval -- * * This procedure redraws the contents of a horizontal interval * window. It is invoked as a do-when-idle handler, so it only * runs when there's nothing else for the application to do. * * Results: * None. * * Side effects: * Information appears on the screen. * *-------------------------------------------------------------- */ static void DisplayHorizontalInterval(clientData) ClientData clientData; /* Information about widget. */ { register Interval *intervalPtr = (Interval *) clientData; register Tk_Window tkwin = intervalPtr->tkwin; int tickBottom, valueBottom, labelBottom, intervalBottom; int totalPixels, x, y, width, height, tickValue, min, max; int relief; Tk_3DBorder sliderBorder; if ((intervalPtr->tkwin == NULL) || !Tk_IsMapped(tkwin)) { goto done; } /* * Scanning from bottom to top across the window, the window * will contain four rows: ticks, value, interval, and label. * Compute the y-coordinate for each of the rows. */ totalPixels = intervalPtr->tickPixels + intervalPtr->valuePixels + 2*intervalPtr->borderWidth + intervalPtr->width + intervalPtr->labelPixels; tickBottom = (Tk_Height(tkwin) + totalPixels)/2 - 1; valueBottom = tickBottom - intervalPtr->tickPixels; intervalBottom = valueBottom - intervalPtr->valuePixels; labelBottom = intervalBottom - 2*intervalPtr->borderWidth - intervalPtr->width; /* * Display the information from bottom to top across the window. */ if (intervalPtr->flags & REDRAW_OTHER) { XClearWindow(Tk_Display(tkwin), Tk_WindowId(tkwin)); /* * Display the tick marks. */ if (intervalPtr->tickPixels != 0) { for (tickValue = intervalPtr->fromValue; ; tickValue += intervalPtr->tickInterval) { if (intervalPtr->toValue > intervalPtr->fromValue) { if (tickValue > intervalPtr->toValue) { break; } } else { if (tickValue < intervalPtr->toValue) { break; } } DisplayHorizontalValue(intervalPtr, tickValue, tickBottom); } } } /* * Display the values, if they are desired. If not redisplaying the * entire window, clear the area of the value to get rid of the * old value displayed there. */ if (intervalPtr->showValue) { if (!(intervalPtr->flags & REDRAW_OTHER)) { XClearArea(Tk_Display(tkwin), Tk_WindowId(tkwin), intervalPtr->offset, intervalBottom + 1, Tk_Width(tkwin) - 2*intervalPtr->offset, valueBottom - intervalBottom, False); } DisplayHorizontalValue(intervalPtr, intervalPtr->minValue, valueBottom); DisplayHorizontalValue(intervalPtr, intervalPtr->maxValue, valueBottom); } /* * Display the interval and the slider. If not redisplaying the * entire window, must clear the trench area to erase the old * slider, but don't need to redraw the border. */ y = intervalBottom - 2*intervalPtr->borderWidth - intervalPtr->width + 1; if (intervalPtr->flags & REDRAW_OTHER) { Tk_Draw3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), intervalPtr->bgBorder, intervalPtr->offset, y, Tk_Width(tkwin) - 2*intervalPtr->offset, intervalPtr->width + 2*intervalPtr->borderWidth, intervalPtr->borderWidth, TK_RELIEF_SUNKEN); } else { XClearArea(Tk_Display(tkwin), Tk_WindowId(tkwin), intervalPtr->offset + intervalPtr->borderWidth, y + intervalPtr->borderWidth, Tk_Width(tkwin) - 2*intervalPtr->offset - 2*intervalPtr->borderWidth, intervalPtr->width, False); } if (intervalPtr->flags & ACTIVE) { sliderBorder = intervalPtr->activeBorder; } else { sliderBorder = intervalPtr->sliderBorder; } height = intervalPtr->width; min = ValueToPixel(intervalPtr, intervalPtr->minValue); max = ValueToPixel(intervalPtr, intervalPtr->maxValue); width = (max - min) + (2 * intervalPtr->borderWidth); y += intervalPtr->borderWidth; relief = (intervalPtr->flags & BUTTON_PRESSED) ? TK_RELIEF_SUNKEN : TK_RELIEF_RAISED; Tk_Fill3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), sliderBorder, min, y, width, height, intervalPtr->borderWidth, relief); /* * Draw the label to the top of the interval. */ if ((intervalPtr->flags & REDRAW_OTHER) && (intervalPtr->labelPixels != 0)) { XDrawString(Tk_Display(intervalPtr->tkwin), Tk_WindowId(intervalPtr->tkwin), intervalPtr->textGC, intervalPtr->offset + intervalPtr->fontPtr->ascent/2, labelBottom - intervalPtr->fontPtr->descent, intervalPtr->label, intervalPtr->labelLength); } /* * Draw the window border. */ if ((intervalPtr->flags & REDRAW_OTHER) && (intervalPtr->relief != TK_RELIEF_FLAT)) { Tk_Draw3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), intervalPtr->bgBorder, 0, 0, Tk_Width(tkwin), Tk_Height(tkwin), intervalPtr->borderWidth, intervalPtr->relief); } done: intervalPtr->flags &= ~REDRAW_ALL; } /* *---------------------------------------------------------------------- * * DisplayHorizontalValue -- * * This procedure is called to display values (interval readings) * for horizontally-oriented intervals. * * Results: * None. * * Side effects: * The numerical value corresponding to value is displayed with * its bottom edge at "bottom", and at a horizontal position in * the interval that corresponds to "value". * *---------------------------------------------------------------------- */ static void DisplayHorizontalValue(intervalPtr, value, bottom) register Interval *intervalPtr; /* Information about widget in which to * display value. */ int value; /* Y-coordinate of number to display, * specified in application coords, not * in pixels (we'll compute pixels). */ int bottom; /* Y-coordinate of bottom edge of text, * specified in pixels. */ { register Tk_Window tkwin = intervalPtr->tkwin; int x, y, dummy, length; char valueString[30]; XCharStruct bbox; x = ValueToPixel(intervalPtr, value); y = bottom - intervalPtr->fontPtr->descent; sprintf(valueString, "%d", value); length = strlen(valueString); XTextExtents(intervalPtr->fontPtr, valueString, length, &dummy, &dummy, &dummy, &bbox); /* * Adjust the x-coordinate if necessary to keep the text entirely * inside the window. */ x -= (bbox.lbearing + bbox.rbearing)/2; if ((x - bbox.lbearing) < intervalPtr->offset) { x = intervalPtr->offset + bbox.lbearing; } if ((x + bbox.rbearing) > (Tk_Width(tkwin) - intervalPtr->offset)) { x = Tk_Width(tkwin) - intervalPtr->offset - bbox.rbearing; } XDrawString(Tk_Display(tkwin), Tk_WindowId(tkwin), intervalPtr->textGC, x, y, valueString, length); } /* *---------------------------------------------------------------------- * * PixelToValue -- * * Given a pixel within a interval window, return the interval * reading corresponding to that pixel. * * Results: * An integer interval reading. * * Side effects: * None. * *---------------------------------------------------------------------- */ static int PixelToValue(intervalPtr, x, y) register Interval *intervalPtr; /* Information about widget. */ int x, y; /* Coordinates of point within * window. */ { int value, pixelRange; if (intervalPtr->vertical) { pixelRange = Tk_Height(intervalPtr->tkwin) - 2*intervalPtr->offset - 4*intervalPtr->borderWidth; value = y; } else { pixelRange = Tk_Width(intervalPtr->tkwin) - 2*intervalPtr->offset - 4*intervalPtr->borderWidth; value = x; } if (pixelRange <= 0) { /* * Not enough room for the slider to actually slide: just return * a constant. */ return (0); } value -= intervalPtr->offset + intervalPtr->borderWidth; #if 0 if (value < 0) { value = 0; } if (value > pixelRange) { value = pixelRange; } #endif if (intervalPtr->toValue > intervalPtr->fromValue) { value = intervalPtr->fromValue + ((value * (intervalPtr->toValue - intervalPtr->fromValue)) + pixelRange/2)/pixelRange; } else { value = intervalPtr->toValue + (((pixelRange - value) * (intervalPtr->fromValue - intervalPtr->toValue)) + pixelRange/2)/pixelRange; } return value; } /* *---------------------------------------------------------------------- * * ValueToPixel -- * * Given a reading of the interval, return the x-coordinate or * y-coordinate corresponding to that reading, depending on * whether the interval is vertical or horizontal, respectively. * * Results: * An integer value giving the pixel location corresponding * to reading. The value is restricted to lie within the * defined range for the interval. * * Side effects: * None. * *---------------------------------------------------------------------- */ static int ValueToPixel(intervalPtr, value) register Interval *intervalPtr; /* Information about widget. */ int value; /* Reading of the widget. */ { int y, pixelRange, valueRange; valueRange = intervalPtr->toValue - intervalPtr->fromValue; pixelRange = (intervalPtr->vertical ? Tk_Height(intervalPtr->tkwin) : Tk_Width(intervalPtr->tkwin)) - 2*intervalPtr->offset - 4*intervalPtr->borderWidth; y = ((value - intervalPtr->fromValue) * pixelRange + valueRange/2) / valueRange; if (y < 0) { y = 0; } else if (y > pixelRange) { y = pixelRange; } y += intervalPtr->offset + intervalPtr->borderWidth; return y; } /* *-------------------------------------------------------------- * * IntervalEventProc -- * * This procedure is invoked by the Tk dispatcher for various * events on intervals. * * Results: * None. * * Side effects: * When the window gets deleted, internal structures get * cleaned up. When it gets exposed, it is redisplayed. * *-------------------------------------------------------------- */ static void IntervalEventProc(clientData, eventPtr) ClientData clientData; /* Information about window. */ XEvent *eventPtr; /* Information about event. */ { Interval *intervalPtr = (Interval *) clientData; if ((eventPtr->type == Expose) && (eventPtr->xexpose.count == 0)) { EventuallyRedrawInterval(intervalPtr, REDRAW_ALL); } else if (eventPtr->type == DestroyNotify) { Tcl_DeleteCommand(intervalPtr->interp, Tk_PathName(intervalPtr->tkwin)); intervalPtr->tkwin = NULL; if (intervalPtr->flags & REDRAW_ALL) { if (intervalPtr->vertical) { Tk_CancelIdleCall(DisplayVerticalInterval, (ClientData) intervalPtr); } else { Tk_CancelIdleCall(DisplayHorizontalInterval, (ClientData) intervalPtr); } } Tk_EventuallyFree((ClientData) intervalPtr, DestroyInterval); } else if (eventPtr->type == ConfigureNotify) { ComputeIntervalGeometry(intervalPtr); } } /* *-------------------------------------------------------------- * * IntervalMouseProc -- * * This procedure is called back by Tk in response to * mouse events such as window entry, window exit, mouse * motion, and button presses. * * Results: * None. * * Side effects: * This procedure implements the "feel" of the interval by * issuing commands in response to button presses and mouse * motion. * *-------------------------------------------------------------- */ static void IntervalMouseProc(clientData, eventPtr) ClientData clientData; /* Information about window. */ register XEvent *eventPtr; /* Information about event. */ { register Interval *intervalPtr = (Interval *) clientData; if (intervalPtr->state != tkNormalUid) { return; } Tk_Preserve((ClientData) intervalPtr); if (eventPtr->type == EnterNotify) { intervalPtr->flags |= ACTIVE; EventuallyRedrawInterval(intervalPtr, REDRAW_SLIDER); } else if (eventPtr->type == LeaveNotify) { intervalPtr->flags &= ~ACTIVE; EventuallyRedrawInterval(intervalPtr, REDRAW_SLIDER); } else if ((eventPtr->type == MotionNotify) && (intervalPtr->flags & BUTTON_PRESSED)) { TrackInterval(intervalPtr, PixelToValue(intervalPtr, eventPtr->xmotion.x, eventPtr->xmotion.y)); } else if ((eventPtr->type == ButtonPress) /* && (eventPtr->xbutton.button == Button1) */ && (eventPtr->xbutton.state == 0)) { intervalPtr->flags |= BUTTON_PRESSED; StartTrackInterval(intervalPtr, PixelToValue(intervalPtr, eventPtr->xbutton.x, eventPtr->xbutton.y)); /* NotifyInterval(intervalPtr); */ EventuallyRedrawInterval(intervalPtr, REDRAW_SLIDER); } else if ((eventPtr->type == ButtonRelease) /* && (eventPtr->xbutton.button == Button1) */ && (intervalPtr->flags & BUTTON_PRESSED)) { intervalPtr->flags &= ~BUTTON_PRESSED; TrackInterval(intervalPtr, PixelToValue(intervalPtr, eventPtr->xmotion.x, eventPtr->xmotion.y)); /* NotifyInterval(intervalPtr); */ EventuallyRedrawInterval(intervalPtr, REDRAW_SLIDER); } Tk_Release((ClientData) intervalPtr); } /* *-------------------------------------------------------------- * * TrackInterval -- * * This procedure changes the value of a interval and invokes * a Tcl command to reflect the current position of a interval * * Results: * None. * * Side effects: * A Tcl command is invoked, and an additional error-processing * command may also be invoked. The interval's slider is redrawn. * *-------------------------------------------------------------- */ static void StartTrackInterval(intervalPtr, value) register Interval *intervalPtr; /* Info about widget. */ int value; /* New value for interval. Gets * adjusted if it's off the interval. */ { int result; char string[20]; if ((value < intervalPtr->fromValue) ^ (intervalPtr->toValue < intervalPtr->fromValue)) { value = intervalPtr->fromValue; } if ((value > intervalPtr->toValue) ^ (intervalPtr->toValue < intervalPtr->fromValue)) { value = intervalPtr->toValue; } intervalPtr->trackValue = value; intervalPtr->trackWidth = intervalPtr->maxValue - intervalPtr->minValue; if (value <= intervalPtr->minValue) { intervalPtr->trackState = -1; } else if (value >= intervalPtr->maxValue) { intervalPtr->trackState = 1; } else { intervalPtr->trackState = 0; } SetInterval(intervalPtr, intervalPtr->minValue, intervalPtr->maxValue, 1); } static void TrackInterval(intervalPtr, value) register Interval *intervalPtr; /* Info about widget. */ int value; { int result; char string[20]; int min, max, delta, lastmin, lastmax; delta = value - intervalPtr->trackValue; if (delta == 0) return; intervalPtr->trackValue = value; min = intervalPtr->minValue; max = intervalPtr->maxValue; switch (intervalPtr->trackState) { case -1: /* left trench */ min += delta; if (min > max) max = min; break; case 1: /* right trench */ max += delta; if (min > max) min = max; break; case 0: /* center slider */ lastmin = min; lastmax = max; min += delta; max += delta; if ((max - min) != intervalPtr->trackWidth) { /* squished */ if (lastmin == intervalPtr->fromValue) { min = max - intervalPtr->trackWidth; } else if (lastmax == intervalPtr->toValue) { max = min + intervalPtr->trackWidth; } } break; } SetInterval(intervalPtr, min, max, 1); } static void SetInterval(intervalPtr, min, max, notify) register Interval *intervalPtr; /* Info about widget. */ int min, max, notify; { if (min > max) { int temp = min; min = max; max = temp; } if ((min < intervalPtr->fromValue) ^ (intervalPtr->toValue < intervalPtr->fromValue)) { min = intervalPtr->fromValue; } if ((min > intervalPtr->toValue) ^ (intervalPtr->toValue < intervalPtr->fromValue)) { min = intervalPtr->toValue; } if ((max < intervalPtr->fromValue) ^ (intervalPtr->toValue < intervalPtr->fromValue)) { max = intervalPtr->fromValue; } if ((max > intervalPtr->toValue) ^ (intervalPtr->toValue < intervalPtr->fromValue)) { max = intervalPtr->toValue; } if ((min == intervalPtr->minValue) && (max == intervalPtr->maxValue)) { return; } intervalPtr->minValue = min; intervalPtr->maxValue = max; EventuallyRedrawInterval(intervalPtr, REDRAW_SLIDER); if (notify) NotifyInterval(intervalPtr); } NotifyInterval(intervalPtr) register Interval *intervalPtr; /* Info about widget. */ { int result; char string[256]; sprintf(string, " %d %d", intervalPtr->minValue, intervalPtr->maxValue); result = Tcl_VarEval(intervalPtr->interp, intervalPtr->command, string, (char *) NULL); if (result != TCL_OK) { TkBindError(intervalPtr->interp); } } /* *-------------------------------------------------------------- * * EventuallyRedrawInterval -- * * Arrange for part or all of a interval widget to redrawn at * the next convenient time in the future. * * Results: * None. * * Side effects: * If "what" is REDRAW_SLIDER then just the slider and the * value readout will be redrawn; if "what" is REDRAW_ALL * then the entire widget will be redrawn. * *-------------------------------------------------------------- */ static void EventuallyRedrawInterval(intervalPtr, what) register Interval *intervalPtr; /* Information about widget. */ int what; /* What to redraw: REDRAW_SLIDER * or REDRAW_ALL. */ { if ((what == 0) || (intervalPtr->tkwin == NULL) || !Tk_IsMapped(intervalPtr->tkwin)) { return; } if ((intervalPtr->flags & REDRAW_ALL) == 0) { if (intervalPtr->vertical) { Tk_DoWhenIdle(DisplayVerticalInterval, (ClientData) intervalPtr); } else { Tk_DoWhenIdle(DisplayHorizontalInterval, (ClientData) intervalPtr); } } intervalPtr->flags |= what; } micropolis-activity/src/sim/g_setup.c0000664000076400007640000002576310724145723020241 0ustar simcitysimcity/* g_setup.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" #define SIM_SMTILE 385 #define SIM_BWTILE 386 #define SIM_GSMTILE 388 #define SIM_LGTILE 544 #define gray25_width 16 #define gray25_height 16 static unsigned char gray25_bits[] = { 0x77, 0x77, 0xdd, 0xdd, 0x77, 0x77, 0xdd, 0xdd, 0x77, 0x77, 0xdd, 0xdd, 0x77, 0x77, 0xdd, 0xdd, 0x77, 0x77, 0xdd, 0xdd, 0x77, 0x77, 0xdd, 0xdd, 0x77, 0x77, 0xdd, 0xdd, 0x77, 0x77, 0xdd, 0xdd, }; #define gray50_width 16 #define gray50_height 16 static unsigned char gray50_bits[] = { 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, }; #define gray75_width 16 #define gray75_height 16 static unsigned char gray75_bits[] = { 0x88, 0x88, 0x22, 0x22, 0x88, 0x88, 0x22, 0x22, 0x88, 0x88, 0x22, 0x22, 0x88, 0x88, 0x22, 0x22, 0x88, 0x88, 0x22, 0x22, 0x88, 0x88, 0x22, 0x22, 0x88, 0x88, 0x22, 0x22, 0x88, 0x88, 0x22, 0x22, }; #define vert_width 16 #define vert_height 16 static unsigned char vert_bits[] = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, }; #define horiz_width 16 #define horiz_height 16 static unsigned char horiz_bits[] = { 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, }; #define diag_width 16 #define diag_height 16 static unsigned char diag_bits[] = { 0x55, 0x55, 0xee, 0xee, 0x55, 0x55, 0xba, 0xbb, 0x55, 0x55, 0xee, 0xee, 0x55, 0x55, 0xba, 0xbb, 0x55, 0x55, 0xee, 0xee, 0x55, 0x55, 0xba, 0xbb, 0x55, 0x55, 0xee, 0xee, 0x55, 0x55, 0xba, 0xbb, }; Ptr MickGetHexa(short theID) { Handle theData; theData = GetResource("hexa", theID); return ((Ptr)*theData); } Pixmap * GetObjectXpms(XDisplay *xd, int id, int frames) { int i; Pixmap *pixmaps = (Pixmap *)ckalloc(2 * frames * sizeof (Pixmap)); XpmAttributes attributes; char name[256]; attributes.visual = Tk_DefaultVisual(xd->screen); attributes.colormap = Tk_DefaultColormap(xd->screen); attributes.depth = Tk_DefaultDepth(xd->screen); attributes.valuemask = XpmVisual | XpmColormap | XpmDepth; for (i = 0; i < frames; i++) { sprintf(name, "%s/images/obj%d-%d.xpm", HomeDir, id, i); if (XpmReadFileToPixmap(xd->dpy, RootWindowOfScreen(xd->screen), name, &pixmaps[i + i], &pixmaps[i + i + 1], &attributes) < 0) { fprintf(stderr, "Uh oh, Micropolis couldn't read the pixmap file \"%s\".\n", name); sim_exit(1); // Just sets tkMustExit and ExitReturn return NULL; } } return (pixmaps); } GetPixmaps(XDisplay *xd) { if (xd->gray25_stipple == None) { xd->gray25_stipple = XCreatePixmapFromBitmapData(xd->dpy, xd->root, gray25_bits, gray25_width, gray25_height, 1, 0, 1); xd->gray50_stipple = XCreatePixmapFromBitmapData(xd->dpy, xd->root, gray50_bits, gray50_width, gray50_height, 1, 0, 1); xd->gray75_stipple = XCreatePixmapFromBitmapData(xd->dpy, xd->root, gray75_bits, gray75_width, gray75_height, 1, 0, 1); xd->vert_stipple = XCreatePixmapFromBitmapData(xd->dpy, xd->root, vert_bits, vert_width, vert_height, 1, 0, 1); xd->horiz_stipple = XCreatePixmapFromBitmapData(xd->dpy, xd->root, horiz_bits, horiz_width, horiz_height, 1, 0, 1); xd->diag_stipple = XCreatePixmapFromBitmapData(xd->dpy, xd->root, diag_bits, diag_width, diag_height, 1, 0, 1); } if (xd->objects == NULL) { Pixmap **pm; xd->objects = pm = (Pixmap **)ckalloc(OBJN * sizeof (Pixmap *)); pm[0] = NULL; /* no object number 0 */ pm[TRA] = GetObjectXpms(xd, TRA, 5); pm[COP] = GetObjectXpms(xd, COP, 8); pm[AIR] = GetObjectXpms(xd, AIR, 11); pm[SHI] = GetObjectXpms(xd, SHI, 8); pm[GOD] = GetObjectXpms(xd, GOD, 16); pm[TOR] = GetObjectXpms(xd, TOR, 3); pm[EXP] = GetObjectXpms(xd, EXP, 6); pm[BUS] = GetObjectXpms(xd, BUS, 4); } } GetViewTiles(SimView *view) { char name[256]; XpmAttributes attributes; attributes.visual = Tk_DefaultVisual(view->x->screen); attributes.colormap = Tk_DefaultColormap(view->x->screen); attributes.depth = Tk_DefaultDepth(view->x->screen); attributes.valuemask = XpmVisual | XpmColormap | XpmDepth; if (view->class == Editor_Class) { sprintf(name, "%s/images/%s", HomeDir, view->x->color ? "tiles.xpm" : "tilesbw.xpm"); switch (view->type) { case X_Mem_View: if (view->x->big_tile_image == NULL) { if (XpmReadFileToImage(view->x->dpy, name, &view->x->big_tile_image, NULL, &attributes) < 0) { fprintf(stderr, "Uh oh, Micropolis couldn't read the pixmap file \"%s\".\n", name); sim_exit(1); // Just sets tkMustExit and ExitReturn return; } } view->bigtiles = (unsigned char *)view->x->big_tile_image->data; break; case X_Wire_View: if (view->x->big_tile_pixmap == None) { if (XpmReadFileToPixmap(view->x->dpy, RootWindowOfScreen(view->x->screen), name, &view->x->big_tile_pixmap, NULL, &attributes) < 0) { fprintf(stderr, "Uh oh, Micropolis couldn't read the pixmap file \"%s\".\n", name); sim_exit(1); // Just sets tkMustExit and ExitReturn return; } } break; } } else if (view->class == Map_Class) { if (view->x->small_tile_image == NULL) { if (view->x->color) { sprintf(name, "%s/images/%s", HomeDir, "tilessm.xpm"); if (XpmReadFileToImage(view->x->dpy, name, &view->x->small_tile_image, NULL, &attributes) < 0) { fprintf(stderr, "Uh oh, Micropolis couldn't read the pixmap file \"%s\".\n", name); sim_exit(1); // Just sets tkMustExit and ExitReturn return; } } else { view->x->small_tile_image = XCreateImage(view->x->dpy, view->x->visual, 8, ZPixmap, 0, (char *)MickGetHexa(SIM_GSMTILE), 4, 3 * TILE_COUNT, 8, 4); } } { int x, y, b, tile; unsigned char *from, *to; int pixelBytes = view->pixel_bytes; int rowBytes = view->x->small_tile_image->bytes_per_line; if (pixelBytes == 0) { /* handle the case of monochrome display (8 bit map) */ pixelBytes = 1; } /* from is 4 pixels wide per 3 pixel wide tile */ from = (unsigned char *)view->x->small_tile_image->data; to = (unsigned char *)ckalloc(4 * 4 * TILE_COUNT * pixelBytes); view->smalltiles = to; switch (pixelBytes) { case 1: for (tile = 0; tile < TILE_COUNT; tile++) { for (y = 0; y < 3; y++) { for (x = 0; x < 4; x++) { *to++ = *from++; } } for (x = 0; x < 4; x++) { *to++ = 0; } } break; case 2: for (tile = 0; tile < TILE_COUNT; tile++) { for (y = 0; y < 3; y++) { for (x = 0; x < 4; x++) { *to++ = *from++; *to++ = *from++; } } for (x = 0; x < 4; x++) { *to++ = 0; *to++ = 0; } } break; case 3: case 4: for (tile = 0; tile < TILE_COUNT; tile++) { for (y = 0; y < 3; y++) { for (x = 0; x < 4; x++) { *to++ = *from++; *to++ = *from++; *to++ = *from++; if (pixelBytes == 4) { *to++ = *from++; } } } for (x = 0; x < 4; x++) { *to++ = 0; *to++ = 0; *to++ = 0; if (pixelBytes == 4) { *to++ = 0; } } } break; default: assert(0); /* Undefined depth */ break; } } } } micropolis-activity/src/sim/rand.c0000664000076400007640000000407010724145723017503 0ustar simcitysimcity/*- * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the University of * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "sim.h" #include #include #define SIM_RAND_MAX 0xffff static unsigned QUAD next = 1; int sim_rand() { next = next * 1103515245 + 12345; return ((next % ((SIM_RAND_MAX + 1) <<8)) >>8); } void sim_srand(seed) u_int seed; { next = seed; } micropolis-activity/src/sim/w_editor.c0000664000076400007640000011442510724145723020401 0ustar simcitysimcity/* w_editor.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" Tcl_HashTable EditorCmds; int DoOverlay = 2; int BobHeight = 8; extern Tk_ConfigSpec TileViewConfigSpecs[]; int EditorCmdconfigure(VIEW_ARGS) { int result = TCL_OK; if (argc == 2) { result = Tk_ConfigureInfo(interp, view->tkwin, TileViewConfigSpecs, (char *) view, (char *) NULL, 0); } else if (argc == 3) { result = Tk_ConfigureInfo(interp, view->tkwin, TileViewConfigSpecs, (char *) view, argv[2], 0); } else { result = ConfigureTileView(interp, view, argc-2, argv+2, TK_CONFIG_ARGV_ONLY); } return TCL_OK; } int EditorCmdposition(VIEW_ARGS) { if ((argc != 2) && (argc != 4)) { return TCL_ERROR; } if (argc == 4) { if ((Tcl_GetInt(interp, argv[2], &view->w_x) != TCL_OK) || (Tcl_GetInt(interp, argv[3], &view->w_y) != TCL_OK)) { return TCL_ERROR; } } sprintf(interp->result, "%d %d", view->w_x, view->w_y); return TCL_OK; } int EditorCmdsize(VIEW_ARGS) { if ((argc != 2) && (argc != 4)) { return TCL_ERROR; } if (argc == 4) { int w, h; if (Tcl_GetInt(interp, argv[2], &w) != TCL_OK) { return TCL_ERROR; } if (Tcl_GetInt(interp, argv[3], &h) != TCL_OK) { return TCL_ERROR; } view->w_width = w; view->w_height = h; } sprintf(interp->result, "%d %d", view->w_width, view->w_height); return TCL_OK; } int EditorCmdAutoGoto(VIEW_ARGS) { if ((argc != 2) && (argc != 3)) { return TCL_ERROR; } if (argc == 3) { int val; if (Tcl_GetInt(interp, argv[2], &val) != TCL_OK) { return TCL_ERROR; } view->auto_goto = val; view->auto_going = view->auto_x_goal = view->auto_y_goal = 0; } sprintf(interp->result, "%d", view->auto_goto); return TCL_OK; } int EditorCmdSound(VIEW_ARGS) { if ((argc != 2) && (argc != 3)) { return TCL_ERROR; } if (argc == 3) { int val; if (Tcl_GetInt(interp, argv[2], &val) != TCL_OK) { return TCL_ERROR; } view->sound = val; view->auto_going = view->auto_x_goal = view->auto_y_goal = 0; } sprintf(interp->result, "%d", view->sound); return TCL_OK; } int EditorCmdSkip(VIEW_ARGS) { if ((argc != 2) && (argc != 3)) { return TCL_ERROR; } if (argc == 3) { int val; if (Tcl_GetInt(interp, argv[2], &val) != TCL_OK) { return TCL_ERROR; } view->skip = view->skips = val; // XXX? why setting skips too? } sprintf(interp->result, "%d", view->skips); return TCL_OK; } int EditorCmdUpdate(VIEW_ARGS) { if (argc != 2) { return TCL_ERROR; } view->skip = 0; return TCL_OK; } int EditorCmdPan(VIEW_ARGS) { if ((argc != 2) && (argc != 4)) { return TCL_ERROR; } if (argc == 4) { int x, y; if (Tcl_GetInt(interp, argv[2], &x) != TCL_OK) { return TCL_ERROR; } if (Tcl_GetInt(interp, argv[3], &y) != TCL_OK) { return TCL_ERROR; } DoPanTo(view, x, y); Kick(); } sprintf(interp->result, "%d %d", view->pan_x, view->pan_y); return TCL_OK; } int EditorCmdToolConstrain(VIEW_ARGS) { int x = -1, y = -1, tx, ty; if (argc != 4) { return TCL_ERROR; } if (Tcl_GetInt(interp, argv[2], &x) != TCL_OK) { return TCL_ERROR; } if (Tcl_GetInt(interp, argv[3], &y) != TCL_OK) { return TCL_ERROR; } view->tool_x_const = -1; view->tool_y_const = -1; ViewToTileCoords(view, x, y, &tx, &ty); view->tool_x_const = (x == -1) ? -1 : tx; view->tool_y_const = (y == -1) ? -1 : ty; return TCL_OK; } int EditorCmdToolState(VIEW_ARGS) { if ((argc != 2) && (argc != 3)) { return TCL_ERROR; } if (argc == 3) { int state; if (Tcl_GetInt(interp, argv[2], &state) != TCL_OK) { return TCL_ERROR; } setWandState(view, state); } sprintf(interp->result, "%d", view->tool_state); return TCL_OK; } int EditorCmdToolMode(VIEW_ARGS) { if ((argc != 2) && (argc != 3)) { return TCL_ERROR; } if (argc == 3) { int mode; if (Tcl_GetInt(interp, argv[2], &mode) != TCL_OK) { return TCL_ERROR; } view->tool_mode = mode; } sprintf(interp->result, "%d", view->tool_mode); return TCL_OK; } int EditorCmdDoTool(VIEW_ARGS) { int tool, x, y; if (argc != 5) { return TCL_ERROR; } if ((Tcl_GetInt(interp, argv[2], &tool) != TCL_OK) || (tool < 0) || (tool > lastState) || (Tcl_GetInt(interp, argv[3], &x) != TCL_OK) || (Tcl_GetInt(interp, argv[4], &y) != TCL_OK)) { return TCL_ERROR; } DoTool(view, tool, x, y); Kick(); return TCL_OK; } int EditorCmdToolDown(VIEW_ARGS) { int x, y; if (argc != 4) { return TCL_ERROR; } if ((Tcl_GetInt(interp, argv[2], &x) != TCL_OK) || (Tcl_GetInt(interp, argv[3], &y) != TCL_OK)) { return TCL_ERROR; } ToolDown(view, x, y); Kick(); return TCL_OK; } int EditorCmdToolDrag(VIEW_ARGS) { int x, y; if (argc != 4) { return TCL_ERROR; } if ((Tcl_GetInt(interp, argv[2], &x) != TCL_OK) || (Tcl_GetInt(interp, argv[3], &y) != TCL_OK)) { return TCL_ERROR; } ToolDrag(view, x, y); Kick(); return TCL_OK; } int EditorCmdToolUp(VIEW_ARGS) { int x, y; if (argc != 4) { return TCL_ERROR; } if ((Tcl_GetInt(interp, argv[2], &x) != TCL_OK) || (Tcl_GetInt(interp, argv[3], &y) != TCL_OK)) { return TCL_ERROR; } ToolUp(view, x, y); Kick(); return TCL_OK; } int EditorCmdPanStart(VIEW_ARGS) { int x, y; if (argc != 4) { return TCL_ERROR; } if ((Tcl_GetInt(interp, argv[2], &x) != TCL_OK) || (Tcl_GetInt(interp, argv[3], &y) != TCL_OK)) { return TCL_ERROR; } view->last_x = x; view->last_y = y; return TCL_OK; } int EditorCmdPanTo(VIEW_ARGS) { int x, y, dx, dy; if (argc != 4) { return TCL_ERROR; } if ((Tcl_GetInt(interp, argv[2], &x) != TCL_OK) || (Tcl_GetInt(interp, argv[3], &y) != TCL_OK)) { return TCL_ERROR; } dx = (view->tool_x_const == -1) ? (view->last_x - x) : 0; dy = (view->tool_y_const == -1) ? (view->last_y - y) : 0; if (dx || dy) { view->last_x = x; view->last_y = y; DoPanBy(view, dx, dy); Kick(); } return TCL_OK; } int EditorCmdPanBy(VIEW_ARGS) { int dx, dy; if (argc != 4) { return TCL_ERROR; } if ((Tcl_GetInt(interp, argv[2], &dx) != TCL_OK) || (Tcl_GetInt(interp, argv[3], &dy) != TCL_OK)) { return TCL_ERROR; } DoPanBy(view, dx, dy); Kick(); return TCL_OK; } int EditorCmdTweakCursor(VIEW_ARGS) { int x, y; XWarpPointer (view->x->dpy, None, None, 0, 0, 0, 0, 0, 0); return TCL_OK; } int EditorCmdVisible(VIEW_ARGS) { int visible; if ((argc != 2) && (argc != 3)) { return TCL_ERROR; } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &visible) != TCL_OK) || (visible < 0) || (visible > 1)) { return TCL_ERROR; } visible = visible && Tk_IsMapped(view->tkwin); view->visible = visible; } sprintf(interp->result, "%d", view->visible); return TCL_OK; } int EditorCmdKeyDown(VIEW_ARGS) { if (argc != 3) { return TCL_ERROR; } doKeyDown(view, argv[2][0]); return TCL_OK; } int EditorCmdKeyUp(VIEW_ARGS) { if (argc != 3) { return TCL_ERROR; } doKeyUp(view, argv[2][0]); return TCL_OK; } int EditorCmdTileCoord(VIEW_ARGS) { int x, y; if ((argc != 2) && (argc != 4)) { return TCL_ERROR; } if (Tcl_GetInt(interp, argv[2], &x) != TCL_OK) { return TCL_ERROR; } if (Tcl_GetInt(interp, argv[3], &y) != TCL_OK) { return TCL_ERROR; } ViewToTileCoords(view, x, y, &x, &y); sprintf(interp->result, "%d %d", x, y); return TCL_OK; } int EditorCmdChalkStart(VIEW_ARGS) { int x, y; if (argc != 4) { return TCL_ERROR; } if ((Tcl_GetInt(interp, argv[2], &x) != TCL_OK) || (Tcl_GetInt(interp, argv[3], &y) != TCL_OK)) { return TCL_ERROR; } ChalkStart(view, x, y, COLOR_WHITE); return TCL_OK; } int EditorCmdChalkTo(VIEW_ARGS) { int x, y; if (argc != 4) { return TCL_ERROR; } if ((Tcl_GetInt(interp, argv[2], &x) != TCL_OK) || (Tcl_GetInt(interp, argv[3], &y) != TCL_OK)) { return TCL_ERROR; } ChalkTo(view, x, y); return TCL_OK; } int EditorCmdAutoGoing(VIEW_ARGS) { int flag; if ((argc != 2) && (argc != 3)) { return TCL_ERROR; } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &flag) != TCL_OK)) { return TCL_ERROR; } view->auto_going = flag; if (view->auto_goto == -1) view->auto_goto = 0; } sprintf(interp->result, "%d", view->auto_going); return TCL_OK; } int EditorCmdAutoSpeed(VIEW_ARGS) { int speed; if ((argc != 2) && (argc != 3)) { return TCL_ERROR; } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &speed) != TCL_OK) || (speed < 1)) { return TCL_ERROR; } view->auto_speed = speed; } sprintf(interp->result, "%d", view->auto_speed); return TCL_OK; } int EditorCmdAutoGoal(VIEW_ARGS) { if ((argc != 2) && (argc != 4)) { return TCL_ERROR; } if (argc == 4) { int x, y, dx, dy; if (Tcl_GetInt(interp, argv[2], &x) != TCL_OK) { return TCL_ERROR; } if (Tcl_GetInt(interp, argv[3], &y) != TCL_OK) { return TCL_ERROR; } view->auto_x_goal = x; view->auto_y_goal = y; /* actually go there if more than a block away */ dx = view->pan_x - x; dy = view->pan_y - y; view->auto_going = (((dx * dx) + (dy * dy)) > (64 * 64)); if ((view->auto_going != 0) && (view->auto_goto == 0)) view->auto_goto = -1; } sprintf(interp->result, "%d %d", view->auto_x_goal, view->auto_y_goal); return TCL_OK; } int EditorCmdSU(VIEW_ARGS) { int su; if ((argc != 2) && (argc != 4)) { return TCL_ERROR; } if (argc == 4) { if ((strcmp(argv[3], "xyzzy") != 0) || (Tcl_GetInt(interp, argv[2], &su) != TCL_OK)) { return TCL_ERROR; } view->super_user = su; } sprintf(interp->result, "%d", view->super_user); return TCL_OK; } int EditorCmdShowMe(VIEW_ARGS) { int flag; if ((argc != 2) && (argc != 3)) { return TCL_ERROR; } if (argc == 3) { if (Tcl_GetInt(interp, argv[2], &flag) != TCL_OK) { return TCL_ERROR; } view->show_me = flag; } sprintf(interp->result, "%d", view->show_me); return TCL_OK; } int EditorCmdFollow(VIEW_ARGS) { int id; SimSprite *sprite; if ((argc != 2) && (argc != 3)) { return TCL_ERROR; } if (argc == 3) { view->follow = NULL; if (argv[2][0] != '\0') { for (sprite = sim->sprite; sprite != NULL; sprite = sprite->next) { if (strcmp(sprite->name, argv[2]) == 0) { view->follow = sprite; break; } } } if (view->follow != NULL) { HandleAutoGoto(view); } } sprintf(interp->result, "%s", (view->follow == NULL) ? "" : view->follow->name); return TCL_OK; } int EditorCmdShowOverlay(VIEW_ARGS) { int flag; if ((argc != 2) && (argc != 3)) { return TCL_ERROR; } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &flag) != TCL_OK)) { return TCL_ERROR; } view->show_overlay = flag; } sprintf(interp->result, "%d", view->show_overlay); return TCL_OK; } int EditorCmdOverlayMode(VIEW_ARGS) { int flag; if ((argc != 2) && (argc != 3)) { return TCL_ERROR; } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &flag) != TCL_OK)) { return TCL_ERROR; } view->overlay_mode = flag; } sprintf(interp->result, "%d", view->overlay_mode); return TCL_OK; } int EditorCmdDynamicFilter(VIEW_ARGS) { int val; if ((argc != 2) && (argc != 3)) { return TCL_ERROR; } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &val) != TCL_OK)) { return TCL_ERROR; } view->dynamic_filter = val; } sprintf(interp->result, "%d", view->dynamic_filter); return TCL_OK; } int EditorCmdWriteJpeg(VIEW_ARGS) { int val; char *fileName = argv[2]; if (argc != 3) { return TCL_ERROR; } // Write a jpeg file of this view. return TCL_OK; } editor_command_init() { int new; extern int TileViewCmd(CLIENT_ARGS); Tcl_CreateCommand(tk_mainInterp, "editorview", TileViewCmd, (ClientData)MainWindow, (void (*)()) NULL); Tcl_InitHashTable(&EditorCmds, TCL_STRING_KEYS); #define EDITOR_CMD(name) HASHED_CMD(Editor, name) EDITOR_CMD(configure); EDITOR_CMD(position); EDITOR_CMD(size); EDITOR_CMD(AutoGoto); EDITOR_CMD(Sound); EDITOR_CMD(Skip); EDITOR_CMD(Update); EDITOR_CMD(Pan); EDITOR_CMD(ToolConstrain); EDITOR_CMD(ToolState); EDITOR_CMD(ToolMode); EDITOR_CMD(DoTool); EDITOR_CMD(ToolDown); EDITOR_CMD(ToolDrag); EDITOR_CMD(ToolUp); EDITOR_CMD(PanStart); EDITOR_CMD(PanTo); EDITOR_CMD(PanBy); EDITOR_CMD(TweakCursor); EDITOR_CMD(Visible); EDITOR_CMD(KeyDown); EDITOR_CMD(KeyUp); EDITOR_CMD(TileCoord); EDITOR_CMD(ChalkStart); EDITOR_CMD(ChalkTo); EDITOR_CMD(AutoGoing); EDITOR_CMD(AutoSpeed); EDITOR_CMD(AutoGoal); EDITOR_CMD(SU); EDITOR_CMD(ShowMe); EDITOR_CMD(Follow); EDITOR_CMD(ShowOverlay); EDITOR_CMD(OverlayMode); EDITOR_CMD(DynamicFilter); } int DoEditorCmd(CLIENT_ARGS) { SimView *view = (SimView *) clientData; Tcl_HashEntry *ent; int result = TCL_OK; int (*cmd)(); if (argc < 2) { return TCL_ERROR; } if (ent = Tcl_FindHashEntry(&EditorCmds, argv[1])) { cmd = (int (*)())ent->clientData; Tk_Preserve((ClientData) view); result = cmd(view, interp, argc, argv); Tk_Release((ClientData) view); } else { Tcl_AppendResult(interp, "unknown command name: \"", argv[0], " ", argv[1], "\".", (char *) NULL); result = TCL_ERROR; } return result; } /*************************************************************************/ DoNewEditor(SimView *view) { sim->editors++; view->next = sim->editor; sim->editor = view; view->invalid = 1; } DoUpdateEditor(SimView *view) { int dx, dy, i; view->updates++; if (!view->visible) { return; } if ((!ShakeNow) && // (!view->invalid) && (!view->update) && (sim_skips || view->skips)) { if (sim_skips) { if (sim_skip > 0) { return 0; } } else { if (view->skip > 0) { --view->skip; return 0; } else { view->skip = view->skips; } } } view->skips = 0; view->update = 0; HandleAutoGoto(view); if (DoAnimation && SimSpeed && !heat_steps && !TilesAnimated) { TilesAnimated = 1; animateTiles(); } if (view->invalid) { switch (view->type) { case X_Mem_View: MemDrawBeegMapRect(view, view->tile_x, view->tile_y, view->tile_width, view->tile_height); break; case X_Wire_View: WireDrawBeegMapRect(view, view->tile_x, view->tile_y, view->tile_width, view->tile_height); break; } XCopyArea(view->x->dpy, view->pixmap, view->pixmap2, view->x->gc, 0, 0, view->screen_width, view->screen_height, view->screen_x, view->screen_y); DrawOutside(view); if (PendingTool != -1) { DrawPending(view); } DrawObjects(view); if (view->show_overlay) { DrawOverlay(view); } } for (dx = dy = i = 0; i < ShakeNow; i++) { dx += Rand(16) - 8; dy += Rand(16) - 8; } XCopyArea(view->x->dpy, view->pixmap2, Tk_WindowId(view->tkwin), view->x->gc, 0, 0, view->w_width, view->w_height, dx, dy); DrawCursor(view); view->invalid = 0; } HandleAutoGoto(SimView *view) { if (view->follow != NULL) { int x = view->follow->x + view->follow->x_hot, y = view->follow->y + view->follow->y_hot; if ((x != view->pan_x) || (y != view->pan_y)) { DoPanTo(view, x, y); } } else if (view->auto_goto && view->auto_going && (view->tool_mode == 0)) { int dx, dy; int panx, pany, speed; double dist, sloth; speed = view->auto_speed; if (view->auto_going < 5) { sloth = ((double)view->auto_going) / 5.0; } else { sloth = 1.0; } dx = view->auto_x_goal - view->pan_x; dy = view->auto_y_goal - view->pan_y; dist = sqrt((double)((dx * dx) + (dy * dy))); if (dist < (speed * sloth)) { view->auto_going = 0; if (view->auto_goto == -1) view->auto_goto = 0; DoPanTo(view, view->auto_x_goal, view->auto_y_goal); NewMap = 1; DidStopPan(view); } else { double atan2(), cos(), sin(); double direction, vx, vy; double co, si; direction = (double)atan2((double)dy, (double)dx); co = (double)cos(direction); si = (double)sin(direction); vx = co * (double)speed; vy = si * (double)speed; vx *= sloth; vy *= sloth; speed *= sloth; vx += 0.5; vy += 0.5; DoPanBy(view, (int)(vx), (int)(vy)); view->auto_going++; } } } DrawOutside(SimView *view) { Pixmap pm = view->pixmap2; int left = (view->w_width / 2) - view->pan_x; int right = left + view->i_width; int top = (view->w_height / 2) - view->pan_y; int bottom = top + view->i_height; if ((top > 0) || (bottom < view->w_height) || (left > 0) || (right < view->w_width)) { if (view->x->color) { XSetForeground(view->x->dpy, view->x->gc, view->pixels[COLOR_BLACK]); } else { XSetForeground(view->x->dpy, view->x->gc, view->pixels[COLOR_WHITE]); } if (top > 0) XFillRectangle(view->x->dpy, pm, view->x->gc, 0, 0, view->w_width, top); if (bottom < view->w_height) XFillRectangle(view->x->dpy, pm, view->x->gc, 0, bottom, view->w_width, view->w_height - bottom); if (left > 0) XFillRectangle(view->x->dpy, pm, view->x->gc, 0, top, left, bottom - top); if (right < view->w_width) XFillRectangle(view->x->dpy, pm, view->x->gc, right, top, view->w_width - right, bottom - top); } } char CursorDashes[] = { 4, 4 }; DrawPending(SimView *view) { Pixmap pm = view->pixmap2; int left = (view->w_width / 2) - view->pan_x; int top = (view->w_height / 2) - view->pan_y; int x, y, size; char *iconname = NULL; x = (PendingX - toolOffset[PendingTool]) <<4; y = (PendingY - toolOffset[PendingTool]) <<4; size = toolSize[PendingTool] <<4; x += left; y += top; XSetStipple(view->x->dpy, view->x->gc, view->x->gray50_stipple); XSetTSOrigin(view->x->dpy, view->x->gc, 0, 0); XSetForeground(view->x->dpy, view->x->gc, view->x->pixels[COLOR_BLACK]); XSetFillStyle(view->x->dpy, view->x->gc, FillStippled); XFillRectangle(view->x->dpy, pm, view->x->gc, x, y, size, size); XSetFillStyle(view->x->dpy, view->x->gc, FillSolid); switch (PendingTool) { case residentialState: iconname = "@images/res.xpm"; break; case commercialState: iconname = "@images/com.xpm"; break; case industrialState: iconname = "@images/ind.xpm"; break; case fireState: iconname = "@images/fire.xpm"; break; case policeState: iconname = "@images/police.xpm"; break; case stadiumState: iconname = "@images/stadium.xpm"; break; case seaportState: iconname = "@images/seaport.xpm"; break; case powerState: iconname = "@images/coal.xpm"; break; case nuclearState: iconname = "@images/nuclear.xpm"; break; case airportState: iconname = "@images/airport.xpm"; break; default: break; } if (iconname != NULL) { Pixmap icon = Tk_GetPixmap(view->interp, view->tkwin, iconname); float f; int i; gettimeofday(&now_time, NULL); f = (2 * now_time.tv_usec / 1000000.0); if (f > 1.0) f = 2.0 - f; i = (int)(f * BobHeight * (Players - Votes)); if (icon != None) { XCopyArea(view->x->dpy, icon, pm, view->x->gc, 0, 0, size, size, x + i, y - i); } } } DrawCursor(SimView *view) { Pixmap pm = Tk_WindowId(view->tkwin); int left = (view->w_width / 2) - view->pan_x; int top = (view->w_height / 2) - view->pan_y; int x, y, mode, size, offset, fg, bg, light, dark; SimView *v; for (v = sim->editor; v != NULL; v = v->next) { mode = v->tool_mode; if ((v->show_me != 0) && ((mode == -1) || v->tool_showing)) { x = v->tool_x; y = v->tool_y; if (mode == -1) { /* pan cursor */ x += left; y += top; XSetLineAttributes(view->x->dpy, view->x->gc, 3, LineSolid, CapRound, JoinMiter); XSetForeground(view->x->dpy, view->x->gc, view->pixels[COLOR_BLACK]); XDrawLine(view->x->dpy, pm, view->x->gc, x - 6, y - 6, x + 6, y + 6); XDrawLine(view->x->dpy, pm, view->x->gc, x - 6, y + 6, x + 6, y - 6); XDrawLine(view->x->dpy, pm, view->x->gc, x - 8, y, x + 8, y); XDrawLine(view->x->dpy, pm, view->x->gc, x, y + 8, x, y - 8); XSetLineAttributes(view->x->dpy, view->x->gc, 1, LineSolid, CapRound, JoinMiter); XSetForeground(view->x->dpy, view->x->gc, view->pixels[COLOR_WHITE]); XDrawLine(view->x->dpy, pm, view->x->gc, x - 6, y - 6, x + 6, y + 6); XDrawLine(view->x->dpy, pm, view->x->gc, x - 6, y + 6, x + 6, y - 6); XDrawLine(view->x->dpy, pm, view->x->gc, x - 8, y, x + 8, y); XDrawLine(view->x->dpy, pm, view->x->gc, x, y + 8, x, y - 8); XSetLineAttributes(view->x->dpy, view->x->gc, 1, LineSolid, CapButt, JoinMiter); } else { /* edit cursor */ size = toolSize[v->tool_state]; fg = toolColors[v->tool_state] & 0xff; light = COLOR_WHITE; dark = COLOR_BLACK; if (mode == 1) { int temp = dark; dark = light; light = temp; } switch (v->tool_state) { case chalkState: x += left; y += top; if (mode == 1) { offset = 2; } else { offset = 0; if (view->x->color) { XSetForeground(view->x->dpy, view->x->gc, view->pixels[COLOR_MEDIUMGRAY]); XFillArc(view->x->dpy, pm, view->x->gc, x - 8, y + 7, 7, 7, 0, 360 * 64); } else { XSetStipple(view->x->dpy, view->x->gc, view->x->gray50_stipple); XSetTSOrigin(view->x->dpy, view->x->gc, 0, 0); XSetForeground(view->x->dpy, view->x->gc, view->x->pixels[COLOR_BLACK]); XSetBackground(view->x->dpy, view->x->gc, view->x->pixels[COLOR_WHITE]); XSetFillStyle(view->x->dpy, view->x->gc, FillOpaqueStippled); XFillArc(view->x->dpy, pm, view->x->gc, x - 8, y + 7, 7, 7, 0, 360 * 64); XSetFillStyle(view->x->dpy, view->x->gc, FillSolid); } } if (view->x->color) { XSetLineAttributes(view->x->dpy, view->x->gc, 3, LineSolid, CapRound, JoinMiter); XSetForeground(view->x->dpy, view->x->gc, view->pixels[COLOR_LIGHTGRAY]); XFillArc(view->x->dpy, pm, view->x->gc, x - 6 - offset, y + 5 + offset, 7, 7, 0, 360 * 64); XDrawLine(view->x->dpy, pm, view->x->gc, x + 13 - offset, y - 5 + offset, x - 1 - offset, y + 9 + offset); XSetForeground(view->x->dpy, view->x->gc, view->pixels[COLOR_WHITE]); XDrawLine(view->x->dpy, pm, view->x->gc, x + 11 - offset, y - 7 + offset, x - 3 - offset, y + 7 + offset); XFillArc(view->x->dpy, pm, view->x->gc, x + 8 - offset, y - 9 + offset, 7, 7, 0, 360 * 64); XSetLineAttributes(view->x->dpy, view->x->gc, 1, LineSolid, CapButt, JoinMiter); } else { XSetLineAttributes(view->x->dpy, view->x->gc, 3, LineSolid, CapRound, JoinMiter); XSetStipple(view->x->dpy, view->x->gc, view->x->gray25_stipple); XSetTSOrigin(view->x->dpy, view->x->gc, 0, 0); XSetForeground(view->x->dpy, view->x->gc, view->x->pixels[COLOR_BLACK]); XSetBackground(view->x->dpy, view->x->gc, view->x->pixels[COLOR_WHITE]); XSetFillStyle(view->x->dpy, view->x->gc, FillOpaqueStippled); XFillArc(view->x->dpy, pm, view->x->gc, x - 6 - offset, y + 5 + offset, 7, 7, 0, 360 * 64); XDrawLine(view->x->dpy, pm, view->x->gc, x + 13 - offset, y - 5 + offset, x - 1 - offset, y + 9 + offset); XSetStipple(view->x->dpy, view->x->gc, view->x->gray75_stipple); XDrawLine(view->x->dpy, pm, view->x->gc, x + 11 - offset, y - 7 + offset, x - 3 - offset, y + 7 + offset); XFillArc(view->x->dpy, pm, view->x->gc, x + 8 - offset, y - 9 + offset, 7, 7, 0, 360 * 64); XSetLineAttributes(view->x->dpy, view->x->gc, 1, LineSolid, CapButt, JoinMiter); XSetFillStyle(view->x->dpy, view->x->gc, FillSolid); } break; case eraserState: x += left; y += top; if (mode == 1) { offset = 0; } else { offset = 2; if (view->x->color) { XSetForeground(view->x->dpy, view->x->gc, view->pixels[COLOR_MEDIUMGRAY]); XFillRectangle(view->x->dpy, pm, view->x->gc, x - 8, y - 8, 16, 16); } else { XSetStipple(view->x->dpy, view->x->gc, view->x->gray50_stipple); XSetTSOrigin(view->x->dpy, view->x->gc, 0, 0); XSetForeground(view->x->dpy, view->x->gc, view->x->pixels[COLOR_BLACK]); XSetBackground(view->x->dpy, view->x->gc, view->x->pixels[COLOR_WHITE]); XSetFillStyle(view->x->dpy, view->x->gc, FillOpaqueStippled); XFillRectangle(view->x->dpy, pm, view->x->gc, x - 8, y - 8, 16, 16); XSetFillStyle(view->x->dpy, view->x->gc, FillSolid); } } if (view->x->color) { XSetForeground(view->x->dpy, view->x->gc, view->pixels[COLOR_LIGHTGRAY]); } else { XSetStipple(view->x->dpy, view->x->gc, view->x->gray75_stipple); XSetTSOrigin(view->x->dpy, view->x->gc, 0, 0); XSetForeground(view->x->dpy, view->x->gc, view->x->pixels[COLOR_BLACK]); XSetBackground(view->x->dpy, view->x->gc, view->x->pixels[COLOR_WHITE]); XSetFillStyle(view->x->dpy, view->x->gc, FillOpaqueStippled); } /* top */ XDrawLine(view->x->dpy, pm, view->x->gc, x - 8 + offset, y - 8 - offset, x + 8 + offset, y - 8 - offset); XDrawLine(view->x->dpy, pm, view->x->gc, x - 7 + offset, y - 7 - offset, x + 7 + offset, y - 7 - offset); XDrawLine(view->x->dpy, pm, view->x->gc, x - 6 + offset, y - 6 - offset, x + 6 + offset, y - 6 - offset); /* left */ XDrawLine(view->x->dpy, pm, view->x->gc, x - 8 + offset, y - 8 - offset, x - 8 + offset, y + 8 - offset); XDrawLine(view->x->dpy, pm, view->x->gc, x - 7 + offset, y - 7 - offset, x - 7 + offset, y + 7 - offset); XDrawLine(view->x->dpy, pm, view->x->gc, x - 6 + offset, y - 6 - offset, x - 6 + offset, y + 6 - offset); if (view->x->color) { XSetForeground(view->x->dpy, view->x->gc, view->pixels[COLOR_BLACK]); } else { XSetFillStyle(view->x->dpy, view->x->gc, FillSolid); } /* bottom */ XDrawLine(view->x->dpy, pm, view->x->gc, x - 7 + offset, y + 7 - offset, x + 8 + offset, y + 7 - offset); XDrawLine(view->x->dpy, pm, view->x->gc, x - 6 + offset, y + 6 - offset, x + 7 + offset, y + 6 - offset); XDrawLine(view->x->dpy, pm, view->x->gc, x - 5 + offset, y + 5 - offset, x + 6 + offset, y + 5 - offset); /* right */ XDrawLine(view->x->dpy, pm, view->x->gc, x + 7 + offset, y + 8 - offset, x + 7 + offset, y - 7 - offset); XDrawLine(view->x->dpy, pm, view->x->gc, x + 6 + offset, y + 7 - offset, x + 6 + offset, y - 6 - offset); XDrawLine(view->x->dpy, pm, view->x->gc, x + 5 + offset, y + 6 - offset, x + 5 + offset, y - 5 - offset); if (view->x->color) { XSetForeground(view->x->dpy, view->x->gc, view->pixels[COLOR_DARKGRAY]); XFillRectangle(view->x->dpy, pm, view->x->gc, x - 5 + offset, y - 5 - offset, 10, 10); } else { XSetStipple(view->x->dpy, view->x->gc, view->x->gray50_stipple); XSetForeground(view->x->dpy, view->x->gc, view->x->pixels[COLOR_BLACK]); XSetBackground(view->x->dpy, view->x->gc, view->x->pixels[COLOR_WHITE]); XSetFillStyle(view->x->dpy, view->x->gc, FillOpaqueStippled); XFillRectangle(view->x->dpy, pm, view->x->gc, x - 5 + offset, y - 5 - offset, 10, 10); XSetFillStyle(view->x->dpy, view->x->gc, FillSolid); } break; default: offset = toolOffset[v->tool_state]; bg = (toolColors[v->tool_state] >> 8) & 0xff; x = (x & ~15) - (offset <<4); y = (y & ~15) - (offset <<4); size <<= 4; x += left; y += top; XSetForeground(view->x->dpy, view->x->gc, view->pixels[dark]); XDrawRectangle(view->x->dpy, pm, view->x->gc, x - 1, y - 1, size + 4, size + 4); XDrawLine(view->x->dpy, pm, view->x->gc, x - 3, y + size + 3, x - 1, y + size + 3); XDrawLine(view->x->dpy, pm, view->x->gc, x + size + 3, y - 3, x + size + 3, y - 1); XSetForeground(view->x->dpy, view->x->gc, view->pixels[light]); XDrawRectangle(view->x->dpy, pm, view->x->gc, x - 4, y - 4, size + 4, size + 4); XDrawLine(view->x->dpy, pm, view->x->gc, x - 4, y + size + 1, x - 4, y + size + 3); XDrawLine(view->x->dpy, pm, view->x->gc, x + size + 1, y - 4, x + size + 3, y - 4); if (view->x->color) { if (fg == bg) { XSetForeground(view->x->dpy, view->x->gc, view->x->pixels[fg]); XSetLineAttributes(view->x->dpy, view->x->gc, 2, LineSolid, CapButt, JoinMiter); } else { XSetForeground(view->x->dpy, view->x->gc, view->x->pixels[fg]); XSetBackground(view->x->dpy, view->x->gc, view->pixels[bg]); XSetLineAttributes(view->x->dpy, view->x->gc, 2, LineDoubleDash, CapButt, JoinMiter); XSetDashes(view->x->dpy, view->x->gc, 0, CursorDashes, 2); } } else { XSetStipple(view->x->dpy, view->x->gc, view->x->gray50_stipple); XSetForeground(view->x->dpy, view->x->gc, view->x->pixels[COLOR_BLACK]); XSetBackground(view->x->dpy, view->x->gc, view->x->pixels[COLOR_WHITE]); XSetFillStyle(view->x->dpy, view->x->gc, FillOpaqueStippled); XSetLineAttributes(view->x->dpy, view->x->gc, 2, LineSolid, CapButt, JoinMiter); } XDrawLine(view->x->dpy, pm, view->x->gc, x - 2, y - 1, x - 2, y + size + 3); XDrawLine(view->x->dpy, pm, view->x->gc, x - 1, y + size + 2, x + size + 3, y + size + 2); XDrawLine(view->x->dpy, pm, view->x->gc, x + size + 2, y + size + 1, x + size + 2, y - 3); XDrawLine(view->x->dpy, pm, view->x->gc, x + size + 1, y - 2, x - 3, y - 2); if (!view->x->color) { XSetFillStyle(view->x->dpy, view->x->gc, FillSolid); } XSetLineAttributes(view->x->dpy, view->x->gc, 1, LineSolid, CapButt, JoinMiter); break; } } } } } TimeElapsed(struct timeval *elapsed, struct timeval *start, struct timeval *finish) { int usec = finish->tv_usec - start->tv_usec; int sec = finish->tv_sec - start->tv_sec; while (usec < 0) { usec += 1000000; sec--; } elapsed->tv_usec = usec; elapsed->tv_sec = sec; } DrawOverlay(SimView *view) { int width = view->w_width; int height = view->w_height; int left = view->pan_x - (width / 2); int top = view->pan_y - (height / 2); int right = left + width; int bottom = top + height; int showing = 0; Ink *ink; struct timeval start, finished, elapsed; for (ink = sim->overlay; ink != NULL; ink = ink->next) { if ((ink->bottom >= top) && (ink->top <= bottom) && (ink->right >= left) && (ink->left <= right)) { showing = 1; break; } } if (!showing) return; /* overlay_mode state machine: 0 => overlay invalid: draw lines to pm => 1 1 => overlay stable: sync, time draw lines to pm => 2 2 => overlay stable: draw lines to ol, sync, time clip ol to pm, lines faster? => 3, clipping faster? => 4 3 => lines faster: draw lines to pm => 3 4 => clipping faster: clip ol to pm => 4 */ switch (view->overlay_mode) { case 0: DrawTheOverlay(view, view->x->gc, view->pixmap2, view->pixels[COLOR_WHITE], top, bottom, left, right, 0); view->overlay_mode = 1; break; case 1: XSync(view->x->dpy, False); gettimeofday(&start, NULL); DrawTheOverlay(view, view->x->gc, view->pixmap2, view->pixels[COLOR_WHITE], top, bottom, left, right, 0); XSync(view->x->dpy, False); gettimeofday(&finished, NULL); TimeElapsed(&view->overlay_time, &start, &finished); view->overlay_mode = 2; break; case 2: XSetForeground(view->x->dpy, view->x->overlay_gc, 0); XFillRectangle(view->x->dpy, view->overlay_pixmap, view->x->overlay_gc, 0, 0, view->m_width, view->m_height); DrawTheOverlay(view, view->x->overlay_gc, view->overlay_pixmap, 1, top, bottom, left, right, 1); XSync(view->x->dpy, False); gettimeofday(&start, NULL); ClipTheOverlay(view); XSync(view->x->dpy, False); gettimeofday(&finished, NULL); TimeElapsed(&elapsed, &start, &finished); if ((elapsed.tv_sec > view->overlay_time.tv_sec) || ((elapsed.tv_sec == view->overlay_time.tv_sec) && ((elapsed.tv_usec > view->overlay_time.tv_usec)))) { view->overlay_mode = 3; } else { view->overlay_mode = 4; } break; case 3: DrawTheOverlay(view, view->x->gc, view->pixmap2, view->pixels[COLOR_WHITE], top, bottom, left, right, 0); break; case 4: ClipTheOverlay(view); break; } } DrawTheOverlay(SimView *view, GC gc, Pixmap pm, int color, int top, int bottom, int left, int right, int onoverlay) { Ink *ink; if (view->x->color) { XSetForeground(view->x->dpy, gc, color); XSetLineAttributes(view->x->dpy, gc, 3, LineSolid, CapButt, JoinBevel); } else { if (!onoverlay) { XSetStipple(view->x->dpy, gc, view->x->gray50_stipple); XSetTSOrigin(view->x->dpy, gc, view->updates & 1, 0); XSetBackground(view->x->dpy, gc, 0); XSetFillStyle(view->x->dpy, gc, FillOpaqueStippled); } XSetForeground(view->x->dpy, gc, 1); XSetLineAttributes(view->x->dpy, gc, 3, LineSolid, CapButt, JoinBevel); } for (ink = sim->overlay; ink != NULL; ink = ink->next) { if ((ink->bottom >= top) && (ink->top <= bottom) && (ink->right >= left) && (ink->left <= right)) { if (ink->length <= 1) { XFillArc(view->x->dpy, pm, gc, ink->x - 3, ink->y - 3, 6, 6, 0, 360 * 64); } else { ink->points[0].x = ink->x - left; ink->points[0].y = ink->y - top; XDrawLines(view->x->dpy, pm, gc, ink->points, ink->length, CoordModePrevious); } } } if (!view->x->color) { XSetFillStyle(view->x->dpy, gc, FillSolid); } XSetLineAttributes(view->x->dpy, gc, 1, LineSolid, CapButt, JoinMiter); } ClipTheOverlay(SimView *view) { if (view->x->color) { XSetForeground(view->x->dpy, view->x->gc, view->pixels[COLOR_WHITE]); XSetFillStyle(view->x->dpy, view->x->gc, FillStippled); XSetStipple(view->x->dpy, view->x->gc, view->overlay_pixmap); XSetTSOrigin(view->x->dpy, view->x->gc, 0, 0); XFillRectangle(view->x->dpy, view->pixmap2, view->x->gc, 0, 0, view->w_width, view->w_height); XSetFillStyle(view->x->dpy, view->x->gc, FillSolid); } else { XSetStipple(view->x->dpy, view->x->gc, view->x->gray50_stipple); XSetTSOrigin(view->x->dpy, view->x->gc, view->updates & 1, 0); XSetForeground(view->x->dpy, view->x->gc, view->pixels[COLOR_WHITE]); XSetBackground(view->x->dpy, view->x->gc, view->pixels[COLOR_BLACK]); XSetFillStyle(view->x->dpy, view->x->gc, FillOpaqueStippled); XSetLineAttributes(view->x->dpy, view->x->gc, 3, LineSolid, CapButt, JoinBevel); XSetClipOrigin(view->x->dpy, view->x->gc, 0, 0); XSetClipMask(view->x->dpy, view->x->gc, view->overlay_pixmap); XFillRectangle(view->x->dpy, view->pixmap2, view->x->gc, 0, 0, view->w_width, view->w_height); XSetFillStyle(view->x->dpy, view->x->gc, FillSolid); XSetClipMask(view->x->dpy, view->x->gc, None); } } micropolis-activity/src/sim/s_sim.c0000664000076400007640000007102310724145723017673 0ustar simcitysimcity/* s_sim.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" /* Simulation */ short ValveFlag; short CrimeRamp, PolluteRamp ; short RValve, CValve, IValve; short ResCap, ComCap, IndCap; short CashFlow; float EMarket = 4.0; short DisasterEvent; short DisasterWait; short ScoreType; short ScoreWait; short PwrdZCnt; short unPwrdZCnt; short NewPower; /* post */ short AvCityTax; short Scycle = 0; short Fcycle = 0; short Spdcycle = 0; short DoInitialEval = 0; short MeltX, MeltY; /* comefrom: doEditWindow scoreDoer doMapInFront graphDoer doNilEvent */ SimFrame(void) { short i; if (SimSpeed == 0) return; if (++Spdcycle > 1023) Spdcycle = 0; if (SimSpeed == 1 && Spdcycle % 5) return; if (SimSpeed == 2 && Spdcycle % 3) return; if (++Fcycle > 1023) Fcycle = 0; /* if (InitSimLoad) Fcycle = 0; */ Simulate(Fcycle & 15); } /* comefrom: SimFrame */ Simulate(int mod16) { static short SpdPwr[4] = { 1, 2, 4, 5 }; static short SpdPtl[4] = { 1, 2, 7, 17 }; static short SpdCri[4] = { 1, 1, 8, 18 }; static short SpdPop[4] = { 1, 1, 9, 19 }; static short SpdFir[4] = { 1, 1, 10, 20 }; short x; x = SimSpeed; if (x > 3) x = 3; switch (mod16) { case 0: if (++Scycle > 1023) Scycle = 0; /* this is cosmic */ if (DoInitialEval) { DoInitialEval = 0; CityEvaluation(); } CityTime++; AvCityTax += CityTax; /* post */ if (!(Scycle & 1)) SetValves(); ClearCensus(); break; case 1: MapScan(0, 1 * WORLD_X / 8); break; case 2: MapScan(1 * WORLD_X / 8, 2 * WORLD_X / 8); break; case 3: MapScan(2 * WORLD_X / 8, 3 * WORLD_X / 8); break; case 4: MapScan(3 * WORLD_X / 8, 4 * WORLD_X / 8); break; case 5: MapScan(4 * WORLD_X / 8, 5 * WORLD_X / 8); break; case 6: MapScan(5 * WORLD_X / 8, 6 * WORLD_X / 8); break; case 7: MapScan(6 * WORLD_X / 8, 7 * WORLD_X / 8); break; case 8: MapScan(7 * WORLD_X / 8, WORLD_X); break; case 9: if (!(CityTime % CENSUSRATE)) TakeCensus(); if (!(CityTime % (CENSUSRATE * 12))) Take2Census(); if (!(CityTime % TAXFREQ)) { CollectTax(); CityEvaluation(); } break; case 10: if (!(Scycle % 5)) DecROGMem(); DecTrafficMem(); NewMapFlags[TDMAP] = 1; NewMapFlags[RDMAP] = 1; NewMapFlags[ALMAP] = 1; NewMapFlags[REMAP] = 1; NewMapFlags[COMAP] = 1; NewMapFlags[INMAP] = 1; NewMapFlags[DYMAP] = 1; SendMessages(); break; case 11: if (!(Scycle % SpdPwr[x])) { DoPowerScan(); NewMapFlags[PRMAP] = 1; NewPower = 1; /* post-release change */ } break; case 12: if (!(Scycle % SpdPtl[x])) PTLScan(); break; case 13: if (!(Scycle % SpdCri[x])) CrimeScan(); break; case 14: if (!(Scycle % SpdPop[x])) PopDenScan(); break; case 15: if (!(Scycle % SpdFir[x])) FireAnalysis(); DoDisasters(); break; } } /* comefrom: Simulate */ DoSimInit(void) { Fcycle = 0; Scycle = 0; if (InitSimLoad == 2) /* if new city */ InitSimMemory(); if (InitSimLoad == 1) /* if city just loaded */ SimLoadInit(); SetValves(); ClearCensus(); #if 1 MapScan(0, WORLD_X); /* XXX are you sure ??? */ #endif DoPowerScan(); NewPower = 1; /* post rel */ PTLScan(); CrimeScan(); PopDenScan(); FireAnalysis(); NewMap = 1; doAllGraphs(); NewGraph = 1; TotalPop = 1; DoInitialEval = 1; } /* comefrom: SimLoadInit */ DoNilPower(void) { register short x, y, z; for (x = 0; x < WORLD_X; x++) for (y = 0; y < WORLD_Y; y++) { z = Map[x][y]; if (z & ZONEBIT) { SMapX = x; SMapY = y; CChr = z; SetZPower(); } } } /* comefrom: Simulate */ DecTrafficMem(void) /* tends to empty TrfDensity */ { register short x, y, z; for (x = 0; x < HWLDX; x++) for (y = 0; y < HWLDY; y++) if (z = TrfDensity[x][y]) { if (z > 24) { if (z > 200) TrfDensity[x][y] = z - 34; else TrfDensity[x][y] = z - 24; } else TrfDensity[x][y] = 0; } } /* comefrom: Simulate */ DecROGMem(void) /* tends to empty RateOGMem */ { register short x, y, z; for (x = 0; x < SmX; x++) for (y = 0; y < SmY; y++) { z = RateOGMem[x][y]; if (z == 0) continue; if (z > 0) { --RateOGMem[x][y]; if (z > 200) RateOGMem[x][y] = 200; /* prevent overflow */ continue; } if (z < 0) { ++RateOGMem[x][y]; if (z < -200) RateOGMem[x][y] = -200; } } } /* comefrom: DoSimInit */ InitSimMemory(void) { register short x, z; z = 0; SetCommonInits(); for (x = 0; x < 240; x++) { ResHis[x] = z; ComHis[x] = z; IndHis[x] = z; MoneyHis[x] = 128; CrimeHis[x] = z; PollutionHis[x] = z; } CrimeRamp = z; PolluteRamp = z; TotalPop = z; RValve = z; CValve = z; IValve = z; ResCap = z; ComCap = z; IndCap = z; EMarket = 6.0; DisasterEvent = 0; ScoreType = 0; /* This clears powermem */ PowerStackNum = z; DoPowerScan(); NewPower = 1; /* post rel */ InitSimLoad = 0; } /* comefrom: DoSimInit */ SimLoadInit(void) { static short DisTab[9] = { 0, 2, 10, 5, 20, 3, 5, 5, 2 * 48}; static short ScoreWaitTab[9] = { 0, 30 * 48, 5 * 48, 5 * 48, 10 * 48, 5 * 48, 10 * 48, 5 * 48, 10 * 48 }; register int z; z = 0; EMarket = (float)MiscHis[1]; ResPop = MiscHis[2]; ComPop = MiscHis[3]; IndPop = MiscHis[4]; RValve = MiscHis[5]; CValve = MiscHis[6]; IValve = MiscHis[7]; CrimeRamp = MiscHis[10]; PolluteRamp = MiscHis[11]; LVAverage = MiscHis[12]; CrimeAverage = MiscHis[13]; PolluteAverage = MiscHis[14]; GameLevel = MiscHis[15]; if (CityTime < 0) CityTime = 0; if (!EMarket) EMarket = 4.0; if ((GameLevel > 2) || (GameLevel < 0)) GameLevel = 0; SetGameLevel(GameLevel); SetCommonInits(); CityClass = MiscHis[16]; CityScore = MiscHis[17]; if ((CityClass > 5) || (CityClass < 0)) CityClass = 0; if ((CityScore > 999) || (CityScore < 1)) CityScore = 500; ResCap = 0; ComCap = 0; IndCap = 0; AvCityTax = (CityTime % 48) * 7; /* post */ for (z = 0; z < PWRMAPSIZE; z++) PowerMap[z] = ~0; /* set power Map */ DoNilPower(); if (ScenarioID > 8) ScenarioID = 0; if (ScenarioID) { DisasterEvent = ScenarioID; DisasterWait = DisTab[DisasterEvent]; ScoreType = DisasterEvent; ScoreWait = ScoreWaitTab[DisasterEvent]; } else { DisasterEvent = 0; ScoreType = 0; } RoadEffect = 32; PoliceEffect = 1000; /*post*/ FireEffect = 1000; InitSimLoad = 0; } /* comefrom: InitSimMemory SimLoadInit */ SetCommonInits(void) { EvalInit(); RoadEffect = 32; PoliceEffect = 1000; FireEffect = 1000; TaxFlag = 0; TaxFund = 0; /* if ((GameLevel > 2) || (GameLevel < 0)) GameLevel = 0; setGameLevel(GameLevel); */ } /* comefrom: Simulate DoSimInit */ SetValves(void) { static short TaxTable[21] = { 200, 150, 120, 100, 80, 50, 30, 0, -10, -40, -100, -150, -200, -250, -300, -350, -400, -450, -500, -550, -600 }; float Employment, Migration, Births, LaborBase, IntMarket; float Rratio, Cratio, Iratio, temp; float NormResPop, PjResPop, PjComPop, PjIndPop; register short z; MiscHis[1] = (short)EMarket; MiscHis[2] = ResPop; MiscHis[3] = ComPop; MiscHis[4] = IndPop; MiscHis[5] = RValve; MiscHis[6] = CValve; MiscHis[7] = IValve; MiscHis[10] = CrimeRamp; MiscHis[11] = PolluteRamp; MiscHis[12] = LVAverage; MiscHis[13] = CrimeAverage; MiscHis[14] = PolluteAverage; MiscHis[15] = GameLevel; MiscHis[16] = CityClass; MiscHis[17] = CityScore; NormResPop = ResPop / 8; LastTotalPop = TotalPop; TotalPop = NormResPop + ComPop + IndPop; if (NormResPop) Employment = ((ComHis[1] + IndHis[1]) / NormResPop); else Employment = 1; Migration = NormResPop * (Employment - 1); Births = NormResPop * (.02); /* Birth Rate */ PjResPop = NormResPop + Migration + Births; /* Projected Res.Pop */ if (temp = (ComHis[1] + IndHis[1])) LaborBase = (ResHis[1] / temp); else LaborBase = 1; if (LaborBase > 1.3) LaborBase = 1.3; if (LaborBase < 0) LaborBase = 0; /* LB > 1 - .1 */ for (z = 0; z < 2; z++) temp = ResHis[z] + ComHis[z] + IndHis[z]; IntMarket = (NormResPop + ComPop + IndPop) / 3.7; PjComPop = IntMarket * LaborBase; z = GameLevel; /* New ExtMarket */ temp = 1; switch (z) { case 0: temp = 1.2; break; case 1: temp = 1.1; break; case 2: temp = .98; break; } PjIndPop = IndPop * LaborBase * temp; if (PjIndPop < 5) PjIndPop = 5; if (NormResPop) Rratio = (PjResPop / NormResPop); /* projected -vs- actual */ else Rratio = 1.3; if (ComPop) Cratio = (PjComPop / ComPop); else Cratio = PjComPop; if (IndPop) Iratio = (PjIndPop / IndPop); else Iratio = PjIndPop; if (Rratio > 2) Rratio = 2; if (Cratio > 2) Cratio = 2; if (Iratio > 2) Iratio = 2; z = CityTax + GameLevel; if (z > 20) z = 20; Rratio = ((Rratio -1) * 600) + TaxTable[z]; /* global tax/Glevel effects */ Cratio = ((Cratio -1) * 600) + TaxTable[z]; Iratio = ((Iratio -1) * 600) + TaxTable[z]; if (Rratio > 0) /* ratios are velocity changes to valves */ if (RValve < 2000) RValve += Rratio; if (Rratio < 0) if (RValve > -2000) RValve += Rratio; if (Cratio > 0) if (CValve < 1500) CValve += Cratio; if (Cratio < 0) if (CValve > -1500) CValve += Cratio; if (Iratio > 0) if (IValve < 1500) IValve += Iratio; if (Iratio < 0) if (IValve > -1500) IValve += Iratio; if (RValve > 2000) RValve = 2000; if (RValve < -2000) RValve = -2000; if (CValve > 1500) CValve = 1500; if (CValve < -1500) CValve = -1500; if (IValve > 1500) IValve = 1500; if (IValve < -1500) IValve = -1500; if ((ResCap) && (RValve > 0)) RValve = 0; /* Stad, Prt, Airprt */ if ((ComCap) && (CValve > 0)) CValve = 0; if ((IndCap) && (IValve > 0)) IValve = 0; ValveFlag = 1; } /* comefrom: Simulate DoSimInit */ ClearCensus(void) { register short x, y, z; z = 0; PwrdZCnt = z; unPwrdZCnt = z; FirePop = z; RoadTotal = z; RailTotal = z; ResPop = z; ComPop = z; IndPop = z; ResZPop = z; ComZPop = z; IndZPop = z; HospPop = z; ChurchPop = z; PolicePop = z; FireStPop = z; StadiumPop = z; CoalPop = z; NuclearPop = z; PortPop = z; APortPop = z; PowerStackNum = z; /* Reset before Mapscan */ for (x = 0; x < SmX; x++) for (y = 0; y < SmY; y++) { FireStMap[x][y] = z; PoliceMap[x][y] = z; } } /* comefrom: Simulate */ TakeCensus(void) { short x; /* put census#s in Historical Graphs and scroll data */ ResHisMax = 0; ComHisMax = 0; IndHisMax = 0; for (x = 118; x >= 0; x--) { if ((ResHis[x + 1] = ResHis[x]) > ResHisMax) ResHisMax = ResHis[x]; if ((ComHis[x + 1] = ComHis[x]) > ComHisMax) ComHisMax = ComHis[x]; if ((IndHis[x + 1] = IndHis[x]) > IndHisMax) IndHisMax = IndHis[x]; CrimeHis[x + 1] = CrimeHis[x]; PollutionHis[x + 1] = PollutionHis[x]; MoneyHis[x + 1] = MoneyHis[x]; } Graph10Max = ResHisMax; if (ComHisMax > Graph10Max) Graph10Max = ComHisMax; if (IndHisMax > Graph10Max) Graph10Max = IndHisMax; ResHis[0] = ResPop / 8; ComHis[0] = ComPop; IndHis[0] = IndPop; CrimeRamp += (CrimeAverage - CrimeRamp) / 4; CrimeHis[0] = CrimeRamp; PolluteRamp += (PolluteAverage - PolluteRamp) / 4; PollutionHis[0] = PolluteRamp; x = (CashFlow / 20) + 128; /* scale to 0..255 */ if (x < 0) x = 0; if (x > 255) x = 255; MoneyHis[0] = x; if (CrimeHis[0] > 255) CrimeHis[0] = 255; if (PollutionHis[0] > 255) PollutionHis[0] = 255; ChangeCensus(); /* XXX: if 10 year graph view */ if (HospPop < (ResPop >>8)) NeedHosp = TRUE; if (HospPop > (ResPop >>8)) NeedHosp = -1; if (HospPop == (ResPop >>8)) NeedHosp = FALSE; if (ChurchPop < (ResPop >>8)) NeedChurch = TRUE; if (ChurchPop > (ResPop >>8)) NeedChurch = -1; if (ChurchPop == (ResPop >>8)) NeedChurch = FALSE; } /* comefrom: Simulate */ Take2Census(void) /* Long Term Graphs */ { short x; Res2HisMax = 0; Com2HisMax = 0; Ind2HisMax = 0; for (x = 238; x >= 120; x--) { if ((ResHis[x + 1] = ResHis[x]) > Res2HisMax) Res2HisMax = ResHis[x]; if ((ComHis[x + 1] = ComHis[x]) > Com2HisMax) Com2HisMax = ComHis[x]; if ((IndHis[x + 1] = IndHis[x]) > Ind2HisMax) Ind2HisMax = IndHis[x]; CrimeHis[x + 1] = CrimeHis[x]; PollutionHis[x + 1] = PollutionHis[x]; MoneyHis[x + 1] = MoneyHis[x]; } Graph120Max = Res2HisMax; if (Com2HisMax > Graph120Max) Graph120Max = Com2HisMax; if (Ind2HisMax > Graph120Max) Graph120Max = Ind2HisMax; ResHis[120] = ResPop / 8; ComHis[120] = ComPop; IndHis[120] = IndPop; CrimeHis[120] = CrimeHis[0] ; PollutionHis[120] = PollutionHis[0]; MoneyHis[120] = MoneyHis[0]; ChangeCensus(); /* XXX: if 120 year graph view */ } /* comefrom: Simulate */ CollectTax(void) { static float RLevels[3] = { 0.7, 0.9, 1.2 }; static float FLevels[3] = { 1.4, 1.2, 0.8 }; short z; CashFlow = 0; if (!TaxFlag) { /* if the Tax Port is clear */ /* XXX: do something with z */ z = AvCityTax / 48; /* post */ AvCityTax = 0; PoliceFund = PolicePop * 100; FireFund = FireStPop * 100; RoadFund = (RoadTotal + (RailTotal * 2)) * RLevels[GameLevel]; TaxFund = (((QUAD)TotalPop * LVAverage) / 120) * CityTax * FLevels[GameLevel]; if (TotalPop) { /* if there are people to tax */ CashFlow = TaxFund - (PoliceFund + FireFund + RoadFund); DoBudget(); } else { RoadEffect = 32; PoliceEffect = 1000; FireEffect = 1000; } } } UpdateFundEffects(void) { if (RoadFund) RoadEffect = (short)(((float)RoadSpend / (float)RoadFund) * 32.0); else RoadEffect = 32; if (PoliceFund) PoliceEffect = (short)(((float)PoliceSpend / (float)PoliceFund) * 1000.0); else PoliceEffect = 1000; if (FireFund) FireEffect = (short)(((float)FireSpend / (float)FireFund) * 1000.0); else FireEffect = 1000; drawCurrPercents(); } /* comefrom: Simulate DoSimInit */ MapScan(int x1, int x2) { register short x, y; for (x = x1; x < x2; x++) { for (y = 0; y < WORLD_Y; y++) { if (CChr = Map[x][y]) { CChr9 = CChr & LOMASK; /* Mask off status bits */ if (CChr9 >= FLOOD) { SMapX = x; SMapY = y; if (CChr9 < ROADBASE) { if (CChr9 >= FIREBASE) { FirePop++; if (!(Rand16() & 3)) DoFire(); /* 1 in 4 times */ continue; } if (CChr9 < RADTILE) DoFlood(); else DoRadTile(); continue; } if (NewPower && (CChr & CONDBIT)) SetZPower(); if ((CChr9 >= ROADBASE) && (CChr9 < POWERBASE)) { DoRoad(); continue; } if (CChr & ZONEBIT) { /* process Zones */ DoZone(); continue; } if ((CChr9 >= RAILBASE) && (CChr9 < RESBASE)) { DoRail(); continue; } if ((CChr9 >= SOMETINYEXP) && (CChr9 <= LASTTINYEXP)) /* clear AniRubble */ Map[x][y] = RUBBLE + (Rand16() & 3) + BULLBIT; } } } } } /* comefrom: MapScan */ DoRail(void) { RailTotal++; GenerateTrain(SMapX, SMapY); if (RoadEffect < 30) /* Deteriorating Rail */ if (!(Rand16() & 511)) if (!(CChr & CONDBIT)) if (RoadEffect < (Rand16() & 31)) { if (CChr9 < (RAILBASE + 2)) Map[SMapX][SMapY] = RIVER; else Map[SMapX][SMapY] = RUBBLE + (Rand16() & 3) + BULLBIT; return; } } /* comefrom: MapScan */ DoRadTile(void) { if (!(Rand16() & 4095)) Map[SMapX][SMapY] = 0; /* Radioactive decay */ } /* comefrom: MapScan */ DoRoad(void) { register short Density, tden, z; static short DenTab[3] = { ROADBASE, LTRFBASE, HTRFBASE }; RoadTotal++; /* GenerateBus(SMapX, SMapY); */ if (RoadEffect < 30) /* Deteriorating Roads */ if (!(Rand16() & 511)) if (!(CChr & CONDBIT)) if (RoadEffect < (Rand16() & 31)) { if (((CChr9 & 15) < 2) || ((CChr9 & 15) == 15)) Map[SMapX][SMapY] = RIVER; else Map[SMapX][SMapY] = RUBBLE + (Rand16() & 3) + BULLBIT; return; } if (!(CChr & BURNBIT)) { /* If Bridge */ RoadTotal += 4; if (DoBridge()) return; } if (CChr9 < LTRFBASE) tden = 0; else if (CChr9 < HTRFBASE) tden = 1; else { RoadTotal++; tden = 2; } Density = (TrfDensity[SMapX >>1][SMapY >>1]) >>6; /* Set Traf Density */ if (Density > 1) Density--; if (tden != Density) { /* tden 0..2 */ z = ((CChr9 - ROADBASE) & 15) + DenTab[Density]; z += CChr & (ALLBITS - ANIMBIT); if (Density) z += ANIMBIT; Map[SMapX][SMapY] = z; } } /* comefrom: MapScan */ DoBridge(void) { static short HDx[7] = { -2, 2, -2, -1, 0, 1, 2 }; static short HDy[7] = { -1, -1, 0, 0, 0, 0, 0 }; static short HBRTAB[7] = { HBRDG1 | BULLBIT, HBRDG3 | BULLBIT, HBRDG0 | BULLBIT, RIVER, BRWH | BULLBIT, RIVER, HBRDG2 | BULLBIT }; static short HBRTAB2[7] = { RIVER, RIVER, HBRIDGE | BULLBIT, HBRIDGE | BULLBIT, HBRIDGE | BULLBIT, HBRIDGE | BULLBIT, HBRIDGE | BULLBIT }; static short VDx[7] = { 0, 1, 0, 0, 0, 0, 1 }; static short VDy[7] = { -2, -2, -1, 0, 1, 2, 2 }; static short VBRTAB[7] = { VBRDG0 | BULLBIT, VBRDG1 | BULLBIT, RIVER, BRWV | BULLBIT, RIVER, VBRDG2 | BULLBIT, VBRDG3 | BULLBIT }; static short VBRTAB2[7] = { VBRIDGE | BULLBIT, RIVER, VBRIDGE | BULLBIT, VBRIDGE | BULLBIT, VBRIDGE | BULLBIT, VBRIDGE | BULLBIT, RIVER }; register z, x, y, MPtem; if (CChr9 == BRWV) { /* Vertical bridge close */ if ((!(Rand16() & 3)) && (GetBoatDis() > 340)) for (z = 0; z < 7; z++) { /* Close */ x = SMapX + VDx[z]; y = SMapY + VDy[z]; if (TestBounds(x, y)) if ((Map[x][y] & LOMASK) == (VBRTAB[z] & LOMASK)) Map[x][y] = VBRTAB2[z]; } return (TRUE); } if (CChr9 == BRWH) { /* Horizontal bridge close */ if ((!(Rand16() & 3)) && (GetBoatDis() > 340)) for (z = 0; z < 7; z++) { /* Close */ x = SMapX + HDx[z]; y = SMapY + HDy[z]; if (TestBounds(x, y)) if ((Map[x][y] & LOMASK) == (HBRTAB[z] & LOMASK)) Map[x][y] = HBRTAB2[z]; } return (TRUE); } if ((GetBoatDis() < 300) || (!(Rand16() & 7))) { if (CChr9 & 1) { if (SMapX < (WORLD_X - 1)) if (Map[SMapX + 1][SMapY] == CHANNEL) { /* Vertical open */ for (z = 0; z < 7; z++) { x = SMapX + VDx[z]; y = SMapY + VDy[z]; if (TestBounds(x, y)) { MPtem = Map[x][y]; if ((MPtem == CHANNEL) || ((MPtem & 15) == (VBRTAB2[z] & 15))) Map[x][y] = VBRTAB[z]; } } return (TRUE); } return (FALSE); } else { if (SMapY > 0) if (Map[SMapX][SMapY - 1] == CHANNEL) { /* Horizontal open */ for (z = 0; z < 7; z++) { x = SMapX + HDx[z]; y = SMapY + HDy[z]; if (TestBounds(x, y)) { MPtem = Map[x][y]; if (((MPtem & 15) == (HBRTAB2[z] & 15)) || (MPtem == CHANNEL)) Map[x][y] = HBRTAB[z]; } } return (TRUE); } return (FALSE); } } return (FALSE); } int GetBoatDis(void) { register int dist, mx, my, dx, dy; SimSprite *sprite; dist = 99999; mx = (SMapX <<4) + 8; my = (SMapY <<4) + 8; for (sprite = sim->sprite; sprite != NULL; sprite = sprite->next) { if ((sprite->type == SHI) && (sprite->frame != 0)) { if ((dx = sprite->x + sprite->x_hot - mx) < 0) dx = -dx; if ((dy = sprite->y + sprite->y_hot - my) < 0) dy = -dy; dx += dy; if (dx < dist) dist = dx; } } return (dist); } /* comefrom: MapScan */ DoFire(void) { static short DX[4] = { -1, 0, 1, 0 }; static short DY[4] = { 0, -1, 0, 1 }; register short z, Xtem, Ytem, Rate, c; for (z = 0; z < 4; z++) { if (!(Rand16() & 7)) { Xtem = SMapX + DX[z]; Ytem = SMapY + DY[z]; if (TestBounds(Xtem, Ytem)) { c = Map[Xtem][Ytem]; if (c & BURNBIT) { if (c & ZONEBIT) { FireZone(Xtem, Ytem, c); if ((c & LOMASK) > IZB) { /* Explode */ MakeExplosionAt((Xtem <<4) + 8, (Ytem <<4) + 8); } } Map[Xtem][Ytem] = FIRE + (Rand16() & 3) + ANIMBIT; } } } } z = FireRate[SMapX >>3][SMapY >>3]; Rate = 10; if (z) { Rate = 3; if (z > 20) Rate = 2; if (z > 100) Rate = 1; } if (!Rand(Rate)) Map[SMapX][SMapY] = RUBBLE + (Rand16() & 3) + BULLBIT; } /* comefrom: DoFire MakeFlood */ FireZone(int Xloc, int Yloc, int ch) { register short Xtem, Ytem; short x, y, XYmax; RateOGMem[Xloc >>3][Yloc >>3] -= 20; ch = ch & LOMASK; if (ch < PORTBASE) XYmax = 2; else if (ch == AIRPORT) XYmax = 5; else XYmax = 4; for (x = -1; x < XYmax; x++) for (y = -1; y < XYmax; y++) { Xtem = Xloc + x; Ytem = Yloc + y; if ((Xtem < 0) || (Xtem > (WORLD_X - 1)) || (Ytem < 0) || (Ytem > (WORLD_Y - 1))) continue; if ((short)(Map[Xtem][Ytem] & LOMASK) >= ROADBASE) /* post release */ Map[Xtem][Ytem] |= BULLBIT; } } /* comefrom: DoSPZone DoHospChur */ RepairZone(short ZCent, short zsize) { short cnt; register short x, y, ThCh; zsize--; cnt = 0; for (y = -1; y < zsize; y++) for (x = -1; x < zsize; x++) { int xx = SMapX + x; int yy = SMapY + y; cnt++; if (TestBounds(xx, yy)) { ThCh = Map[xx][yy]; if (ThCh & ZONEBIT) continue; if (ThCh & ANIMBIT) continue; ThCh = ThCh & LOMASK; if ((ThCh < RUBBLE) || (ThCh >= ROADBASE)) { Map[xx][yy] = ZCent - 3 - zsize + cnt + CONDBIT + BURNBIT; } } } } /* comefrom: DoZone */ DoSPZone(short PwrOn) { static short MltdwnTab[3] = { 30000, 20000, 10000 }; /* simadj */ register z; switch (CChr9) { case POWERPLANT: CoalPop++; if (!(CityTime & 7)) RepairZone(POWERPLANT, 4); /* post */ PushPowerStack(); CoalSmoke(SMapX, SMapY); return; case NUCLEAR: if (!NoDisasters && !Rand(MltdwnTab[GameLevel])) { DoMeltdown(SMapX, SMapY); return; } NuclearPop++; if (!(CityTime & 7)) RepairZone(NUCLEAR, 4); /* post */ PushPowerStack(); return; case FIRESTATION: FireStPop++; if (!(CityTime & 7)) RepairZone(FIRESTATION, 3); /* post */ if (PwrOn) z = FireEffect; /* if powered get effect */ else z = FireEffect >>1; /* from the funding ratio */ if (!FindPRoad()) z = z >>1; /* post FD's need roads */ FireStMap[SMapX >>3][SMapY >>3] += z; return; case POLICESTATION: PolicePop++; if (!(CityTime & 7)) RepairZone(POLICESTATION, 3); /* post */ if (PwrOn) z = PoliceEffect; else z = PoliceEffect >>1; if (!FindPRoad()) z = z >>1; /* post PD's need roads */ PoliceMap[SMapX >>3][SMapY >>3] += z; return; case STADIUM: StadiumPop++; if (!(CityTime & 15)) RepairZone(STADIUM, 4); if (PwrOn) if (!((CityTime + SMapX + SMapY) & 31)) { /* post release */ DrawStadium(FULLSTADIUM); Map[SMapX + 1][SMapY] = FOOTBALLGAME1 + ANIMBIT; Map[SMapX + 1][SMapY + 1] = FOOTBALLGAME2 + ANIMBIT; } return; case FULLSTADIUM: StadiumPop++; if (!((CityTime + SMapX + SMapY) & 7)) /* post release */ DrawStadium(STADIUM); return; case AIRPORT: APortPop++; if (!(CityTime & 7)) RepairZone(AIRPORT, 6); if (PwrOn) { /* post */ if ((Map[SMapX + 1][SMapY - 1] & LOMASK) == RADAR) Map[SMapX + 1][SMapY - 1] = RADAR + ANIMBIT + CONDBIT + BURNBIT; } else Map[SMapX + 1][SMapY - 1] = RADAR + CONDBIT + BURNBIT; if (PwrOn) DoAirport(); return; case PORT: PortPop++; if ((CityTime & 15) == 0) { RepairZone(PORT, 4); } if (PwrOn && (GetSprite(SHI) == NULL)) { GenerateShip(); } return; } } /* comefrom: DoSPZone */ DrawStadium(int z) { register int x, y; z = z - 5; for (y = (SMapY - 1); y < (SMapY + 3); y++) for (x = (SMapX - 1); x < (SMapX + 3); x++) Map[x][y] = (z++) | BNCNBIT; Map[SMapX][SMapY] |= ZONEBIT | PWRBIT; } /* comefrom: DoSPZone */ DoAirport(void) { if (!(Rand(5))) { GeneratePlane(SMapX, SMapY); return; } if (!(Rand(12))) GenerateCopter(SMapX, SMapY); } /* comefrom: DoSPZone */ CoalSmoke(int mx, int my) { static short SmTb[4] = { COALSMOKE1, COALSMOKE2, COALSMOKE3, COALSMOKE4 }; static short dx[4] = { 1, 2, 1, 2 }; static short dy[4] = { -1, -1, 0, 0 }; register short x; for (x = 0; x < 4; x++) Map[mx + dx[x]][my + dy[x]] = SmTb[x] | ANIMBIT | CONDBIT | PWRBIT | BURNBIT; } /* comefrom: DoSPZone MakeMeltdown */ DoMeltdown(int SX, int SY) { register x, y, z, t; MeltX = SX; MeltY = SY; MakeExplosion(SX - 1, SY - 1); MakeExplosion(SX - 1, SY + 2); MakeExplosion(SX + 2, SY - 1); MakeExplosion(SX + 2, SY + 2); for (x = (SX - 1); x < (SX + 3); x++) for (y = (SY - 1); y < (SY + 3); y++) Map[x][y] = FIRE + (Rand16() & 3) + ANIMBIT; for (z = 0; z < 200; z++) { x = SX - 20 + Rand(40); y = SY - 15 + Rand(30); if ((x < 0) || (x >= WORLD_X) || (y < 0) || (y >= WORLD_Y)) continue; t = Map[x][y]; if (t & ZONEBIT) continue; if ((t & BURNBIT) || (t == 0)) Map[x][y] = RADTILE; } ClearMes(); SendMesAt(-43, SX, SY); } #define RANDOM_RANGE 0xffff short Rand(short range) { int maxMultiple, rnum; range++; maxMultiple = RANDOM_RANGE / range; maxMultiple *= range; while ((rnum = Rand16()) >= maxMultiple) continue; return (rnum % range); } int Rand16(void) { return (sim_rand()); } int Rand16Signed(void) { int i = sim_rand(); if (i > 32767) { i = 32767 - i; } return (i); } RandomlySeedRand() { struct timeval time; gettimeofday(&time, NULL); SeedRand(time.tv_usec ^ time.tv_sec ^ sim_rand()); } SeedRand(int seed) { sim_srand(seed); } micropolis-activity/src/sim/w_update.c0000664000076400007640000001466510724145723020402 0ustar simcitysimcity/* w_update.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" short MustUpdateFunds; short MustUpdateOptions; QUAD LastCityTime; QUAD LastCityYear; QUAD LastCityMonth; QUAD LastFunds; QUAD LastR, LastC, LastI; char *dateStr[12] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; void DoUpdateHeads() { showValves(); doTimeStuff(); ReallyUpdateFunds(); updateOptions(); } void UpdateEditors() { InvalidateEditors(); DoUpdateHeads(); } void UpdateMaps() { InvalidateMaps(); } void UpdateGraphs() { ChangeCensus(); } void UpdateEvaluation() { ChangeEval(); } void UpdateHeads() { MustUpdateFunds = ValveFlag = 1; LastCityTime = LastCityYear = LastCityMonth = LastFunds = LastR = -999999; DoUpdateHeads(); } UpdateFunds(void) { MustUpdateFunds = 1; // Kick(); } ReallyUpdateFunds(void) { char localStr[256], dollarStr[256], buf[256]; if (!MustUpdateFunds) return; MustUpdateFunds = 0; if (TotalFunds < 0) TotalFunds = 0; if (TotalFunds != LastFunds) { LastFunds = TotalFunds; sprintf(localStr, "%d", TotalFunds); makeDollarDecimalStr(localStr, dollarStr); sprintf(localStr, "Funds: %s", dollarStr); sprintf(buf, "UISetFunds {%s}", localStr); Eval(buf); } } doTimeStuff(void) { // if ((CityTime >> 2) != LastCityTime) { updateDate(); // } } updateDate(void) { int y; int m; char str[256], buf[256]; int megalinium = 1000000; LastCityTime = CityTime >> 2; y = ((int)CityTime / 48) + (int)StartingYear; m = ((int)CityTime % 48) >> 2; if (y >= megalinium) { SetYear(StartingYear); y = StartingYear; SendMes(-40); } doMessage(); if ((LastCityYear != y) || (LastCityMonth != m)) { LastCityYear = y; LastCityMonth = m; sprintf(str, "%s %d", dateStr[m], y); sprintf(buf, "UISetDate {%s} %d %d", str, m, y); Eval(buf); } } showValves(void) { if (ValveFlag) { drawValve(); ValveFlag = 0; } } drawValve(void) { double r, c, i; r = RValve; if (r < -1500) r = -1500; if (r > 1500) r = 1500; c = CValve; if (c < -1500) c = -1500; if (c > 1500) c = 1500; i = IValve; if (i < -1500) i = -1500; if (i > 1500) i = 1500; if ((r != LastR) || (c != LastC) || (i != LastI)) { LastR = r; LastC = c; LastI = i; SetDemand(r, c, i); } } SetDemand(double r, double c, double i) { char buf[256]; sprintf(buf, "UISetDemand %d %d %d", (int)(r / 100), (int)(c / 100), (int)(i / 100)); Eval(buf); } updateOptions() { int options; if (MustUpdateOptions) { options = 0; if (autoBudget) options |= 1; if (autoGo) options |= 2; if (autoBulldoze) options |= 4; if (!NoDisasters) options |= 8; if (UserSoundOn) options |= 16; if (DoAnimation) options |= 32; if (DoMessages) options |= 64; if (DoNotices) options |= 128; MustUpdateOptions = 0; UpdateOptionsMenu(options); } } UpdateOptionsMenu(int options) { char buf[256]; sprintf(buf, "UISetOptions %d %d %d %d %d %d %d %d", (options&1)?1:0, (options&2)?1:0, (options&4)?1:0, (options&8)?1:0, (options&16)?1:0, (options&32)?1:0, (options&64)?1:0, (options&128)?1:0); Eval(buf); } micropolis-activity/src/sim/w_sim.c0000664000076400007640000007306510724145723017707 0ustar simcitysimcity/* w_sim.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" Tcl_HashTable SimCmds; #define SIMCMD_CALL(proc) \ int SimCmd##proc(ARGS) { proc(); return (TCL_OK); } #define SIMCMD_CALL_KICK(proc) \ int SimCmd##proc(ARGS) { proc(); Kick(); return (TCL_OK); } #define SIMCMD_CALL_INT(proc) \ int SimCmd##proc(ARGS) { \ int val; \ if (argc != 3) return (TCL_ERROR); \ if ((Tcl_GetInt(interp, argv[2], &val) != TCL_OK)) return (TCL_ERROR); \ proc(val); \ return (TCL_OK); \ } #define SIMCMD_CALL_STR(proc) \ int SimCmd##proc(ARGS) { \ if (argc != 3) return (TCL_ERROR); \ proc(argv[2]); \ return (TCL_OK); \ } #define SIMCMD_CALL_TILEXY(proc) \ int SimCmd##proc(ARGS) { \ int x, y; \ if (argc != 4) return (TCL_ERROR); \ if ((Tcl_GetInt(interp, argv[2], &x) != TCL_OK) || \ (x < 0) || (x >= WORLD_X)) return (TCL_ERROR); \ if ((Tcl_GetInt(interp, argv[3], &y) != TCL_OK) || \ (y < 0) || (y >= WORLD_Y)) return (TCL_ERROR); \ proc(x, y); \ return (TCL_OK); \ } #define SIMCMD_ACCESS_INT(var) \ int SimCmd##var(ARGS) { \ int val; \ if ((argc != 2) && (argc != 3)) return (TCL_ERROR); \ if (argc == 3) { \ if (Tcl_GetInt(interp, argv[2], &val) != TCL_OK) return (TCL_ERROR); \ var = val; \ } \ sprintf(interp->result, "%d", var); \ return (TCL_OK); \ } #define SIMCMD_GET_INT(var) \ int SimCmd##var(ARGS) { \ sprintf(interp->result, "%d", var); \ return (TCL_OK); \ } #define SIMCMD_GET_STR(var) \ int SimCmd##var(ARGS) { \ sprintf(interp->result, "%s", var); \ return (TCL_OK); \ } SIMCMD_CALL_KICK(GameStarted) SIMCMD_CALL_KICK(InitGame) SIMCMD_CALL(SaveCity) SIMCMD_CALL(ReallyQuit) SIMCMD_CALL_KICK(UpdateHeads) SIMCMD_CALL_KICK(UpdateMaps) SIMCMD_CALL_KICK(UpdateEditors) SIMCMD_CALL_KICK(RedrawMaps) SIMCMD_CALL_KICK(RedrawEditors) SIMCMD_CALL_KICK(UpdateGraphs) SIMCMD_CALL_KICK(UpdateEvaluation) SIMCMD_CALL_KICK(UpdateBudget) SIMCMD_CALL_KICK(UpdateBudgetWindow) SIMCMD_CALL_KICK(DoBudget) SIMCMD_CALL_KICK(DoBudgetFromMenu) SIMCMD_CALL_KICK(Pause) SIMCMD_CALL_KICK(Resume) SIMCMD_CALL(StartBulldozer) SIMCMD_CALL(StopBulldozer) SIMCMD_CALL(MakeFire) SIMCMD_CALL(MakeFlood) SIMCMD_CALL(MakeTornado) SIMCMD_CALL(MakeEarthquake) SIMCMD_CALL(MakeMonster) SIMCMD_CALL(MakeMeltdown) SIMCMD_CALL(FireBomb) SIMCMD_CALL(SoundOff) SIMCMD_CALL(GenerateNewCity) SIMCMD_CALL_INT(GenerateSomeCity) SIMCMD_ACCESS_INT(LakeLevel) SIMCMD_ACCESS_INT(TreeLevel) SIMCMD_ACCESS_INT(CurveLevel) SIMCMD_ACCESS_INT(CreateIsland) SIMCMD_CALL_KICK(SmoothTrees) SIMCMD_CALL_KICK(SmoothWater) SIMCMD_CALL_KICK(SmoothRiver) SIMCMD_CALL_KICK(ClearMap) SIMCMD_CALL_KICK(ClearUnnatural) SIMCMD_CALL_INT(LoadScenario) SIMCMD_CALL_STR(LoadCity) SIMCMD_CALL_STR(SaveCityAs) SIMCMD_CALL_TILEXY(MakeExplosion) SIMCMD_CALL(EraseOverlay) SIMCMD_ACCESS_INT(OverRide) SIMCMD_ACCESS_INT(Expensive) SIMCMD_ACCESS_INT(Players) SIMCMD_ACCESS_INT(Votes) SIMCMD_ACCESS_INT(BobHeight) SIMCMD_ACCESS_INT(PendingTool) SIMCMD_ACCESS_INT(PendingX) SIMCMD_ACCESS_INT(PendingY) SIMCMD_GET_STR(Displays) int SimCmdCityName(ARGS) { if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { setCityName(argv[2]); } sprintf(interp->result, "%s", CityName); return (TCL_OK); } int SimCmdCityFileName(ARGS) { if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if (CityFileName != NULL) { ckfree(CityFileName); CityFileName = NULL; } if (argv[2][0] != '\0') { CityFileName = (char *)ckalloc(strlen(argv[0]) + 1); strcpy(CityFileName, argv[2]); } } sprintf(interp->result, "%s", CityFileName ? CityFileName : ""); return (TCL_OK); } int SimCmdGameLevel(ARGS) { int level; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &level) != TCL_OK) || (level < 0) || (level > 2)) { return (TCL_ERROR); } SetGameLevelFunds(level); } sprintf(interp->result, "%d", GameLevel); return (TCL_OK); } int SimCmdSpeed(ARGS) { int speed; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &speed) != TCL_OK) || (speed < 0) || (speed > 7)) { return (TCL_ERROR); } setSpeed(speed); Kick(); } sprintf(interp->result, "%d", SimSpeed); return (TCL_OK); } int SimCmdSkips(ARGS) { int skips; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &skips) != TCL_OK) || (skips < 0)) { return (TCL_ERROR); } setSkips(skips); Kick(); } sprintf(interp->result, "%d", sim_skips); return (TCL_OK); } int SimCmdSkip(ARGS) { int skip; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &skip) != TCL_OK) || (skip < 0)) { return (TCL_ERROR); } sim_skip = skip; } sprintf(interp->result, "%d", sim_skip); return (TCL_OK); } int SimCmdDelay(ARGS) { int delay; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &delay) != TCL_OK) || (delay < 0)) { return (TCL_ERROR); } sim_delay = delay; Kick(); } sprintf(interp->result, "%d", sim_delay); return (TCL_OK); } int SimCmdWorldX(ARGS) { int val; if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", WORLD_X); return (TCL_OK); } int SimCmdWorldY(ARGS) { int val; if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", WORLD_Y); return (TCL_OK); } int SimCmdHeatSteps(ARGS) { int steps; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &steps) != TCL_OK) || (steps < 0)) { return (TCL_ERROR); } heat_steps = steps; Kick(); } sprintf(interp->result, "%d", heat_steps); return (TCL_OK); } int SimCmdHeatFlow(ARGS) { int flow; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if (Tcl_GetInt(interp, argv[2], &flow) != TCL_OK) { return (TCL_ERROR); } heat_flow = flow; } sprintf(interp->result, "%d", heat_flow); return (TCL_OK); } int SimCmdHeatRule(ARGS) { int rule; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if (Tcl_GetInt(interp, argv[2], &rule) != TCL_OK) { return (TCL_ERROR); } heat_rule = rule; } sprintf(interp->result, "%d", heat_rule); return (TCL_OK); } #ifdef CAM int SimCmdJustCam(ARGS) { int cam; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if (Tcl_GetInt(interp, argv[2], &cam) != TCL_OK) { return (TCL_ERROR); } sim_just_cam = cam; } sprintf(interp->result, "%d", sim_just_cam); return (TCL_OK); } #endif #ifdef NET int SimCmdListenTo(ARGS) { int port, sock; if (argc != 3) { return (TCL_ERROR); } if (Tcl_GetInt(interp, argv[2], &port) != TCL_OK) { return (TCL_ERROR); } #ifdef NET sock = udp_listen(port); #endif sprintf(interp->result, "%d", sock); return (TCL_OK); } int SimCmdHearFrom(ARGS) { int sock; if (argc != 3) { return (TCL_ERROR); } if ((argv[2][0] != 'f') || (argv[2][1] != 'i') || (argv[2][2] != 'l') || (argv[2][3] != 'e') || (Tcl_GetInt(interp, argv[2] + 4, &sock) != TCL_OK)) { return (TCL_ERROR); } #ifdef NET udp_hear(sock); #endif return (TCL_OK); } #endif /* NET */ int SimCmdFunds(ARGS) { int funds; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &funds) != TCL_OK) || (funds < 0)) { return (TCL_ERROR); } TotalFunds = funds; MustUpdateFunds = 1; Kick(); } sprintf(interp->result, "%d", TotalFunds); return (TCL_OK); } int SimCmdTaxRate(ARGS) { int tax; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &tax) != TCL_OK) || (tax < 0) || (tax > 20)) { return (TCL_ERROR); } CityTax = tax; drawBudgetWindow(); Kick(); } sprintf(interp->result, "%d", CityTax); return (TCL_OK); } int SimCmdFireFund(ARGS) { int percent; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &percent) != TCL_OK) || (percent < 0) || (percent > 100)) { return (TCL_ERROR); } firePercent = percent / 100.0; FireSpend = (fireMaxValue * percent) / 100; UpdateFundEffects(); Kick(); } sprintf(interp->result, "%d", (int)(firePercent * 100.0)); return (TCL_OK); } int SimCmdPoliceFund(ARGS) { int percent; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &percent) != TCL_OK) || (percent < 0) || (percent > 100)) { return (TCL_ERROR); } policePercent = percent / 100.0; PoliceSpend = (policeMaxValue * percent) / 100; UpdateFundEffects(); Kick(); } sprintf(interp->result, "%d", (int)(policePercent * 100.0)); return (TCL_OK); } int SimCmdRoadFund(ARGS) { int percent; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &percent) != TCL_OK) || (percent < 0) || (percent > 100)) { return (TCL_ERROR); } roadPercent = percent / 100.0; RoadSpend = (roadMaxValue * percent) / 100; UpdateFundEffects(); Kick(); } sprintf(interp->result, "%d", (int)(roadPercent * 100.0)); return (TCL_OK); } int SimCmdYear(ARGS) { int year; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &year) != TCL_OK)) { return (TCL_ERROR); } SetYear(year); } sprintf(interp->result, "%d", CurrentYear()); return (TCL_OK); } int SimCmdAutoBudget(ARGS) { int val; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &val) != TCL_OK) || (val < 0) || (val > 1)) { return (TCL_ERROR); } autoBudget = val; MustUpdateOptions = 1; Kick(); UpdateBudget(); } sprintf(interp->result, "%d", autoBudget); return (TCL_OK); } int SimCmdAutoGoto(ARGS) { int val; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &val) != TCL_OK) || (val < 0) || (val > 1)) { return (TCL_ERROR); } autoGo = val; MustUpdateOptions = 1; Kick(); } sprintf(interp->result, "%d", autoGo); return (TCL_OK); } int SimCmdAutoBulldoze(ARGS) { int val; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &val) != TCL_OK) || (val < 0) || (val > 1)) { return (TCL_ERROR); } autoBulldoze = val; MustUpdateOptions = 1; Kick(); } sprintf(interp->result, "%d", autoBulldoze); return (TCL_OK); } int SimCmdDisasters(ARGS) { int val; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &val) != TCL_OK) || (val < 0) || (val > 1)) { return (TCL_ERROR); } NoDisasters = val ? 0 : 1; MustUpdateOptions = 1; Kick(); } sprintf(interp->result, "%d", NoDisasters ? 0 : 1); return (TCL_OK); } int SimCmdSound(ARGS) { int val; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &val) != TCL_OK) || (val < 0) || (val > 1)) { return (TCL_ERROR); } UserSoundOn = val; MustUpdateOptions = 1; Kick(); } sprintf(interp->result, "%d", UserSoundOn); return (TCL_OK); } int SimCmdFlush(ARGS) { int style; if (argc != 2) { return (TCL_ERROR); } return (TCL_OK); } int SimCmdFlushStyle(ARGS) { int style; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &style) != TCL_OK) || (style < 0)) { return (TCL_ERROR); } FlushStyle = style; } sprintf(interp->result, "%d", FlushStyle); return (TCL_OK); } int SimCmdDonDither(ARGS) { int dd; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &dd) != TCL_OK) || (dd < 0)) { return (TCL_ERROR); } DonDither = dd; } sprintf(interp->result, "%d", DonDither); return (TCL_OK); } int SimCmdDoOverlay(ARGS) { int dd; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &dd) != TCL_OK) || (dd < 0)) { return (TCL_ERROR); } DoOverlay = dd; } sprintf(interp->result, "%d", DoOverlay); return (TCL_OK); } int SimCmdMonsterGoal(ARGS) { SimSprite *sprite; int x, y; if (argc != 4) { return (TCL_ERROR); } if (Tcl_GetInt(interp, argv[2], &x) != TCL_OK) { return (TCL_ERROR); } if (Tcl_GetInt(interp, argv[3], &y) != TCL_OK) { return (TCL_ERROR); } if ((sprite = GetSprite(GOD)) == NULL) { MakeMonster(); if ((sprite = GetSprite(GOD)) == NULL) return (TCL_ERROR); } sprite->dest_x = x; sprite->dest_y = y; sprite->control = -2; sprite->count = -1; return (TCL_OK); } int SimCmdHelicopterGoal(ARGS) { int x, y; SimSprite *sprite; if (argc != 4) { return (TCL_ERROR); } if (Tcl_GetInt(interp, argv[2], &x) != TCL_OK) { return (TCL_ERROR); } if (Tcl_GetInt(interp, argv[3], &y) != TCL_OK) { return (TCL_ERROR); } if ((sprite = GetSprite(COP)) == NULL) { GenerateCopter(x, y); if ((sprite = GetSprite(COP)) == NULL) { return (TCL_ERROR); } } sprite->dest_x = x; sprite->dest_y = y; return (TCL_OK); } int SimCmdMonsterDirection(ARGS) { int dir; SimSprite *sprite; if (argc != 3) { return (TCL_ERROR); } if ((Tcl_GetInt(interp, argv[2], &dir) != TCL_OK) || (dir < -1) || (dir > 7)) { return (TCL_ERROR); } if ((sprite = GetSprite(GOD)) == NULL) { MakeMonster(); if ((sprite = GetSprite(GOD)) == NULL) { return (TCL_ERROR); } } sprite->control = dir; return (TCL_OK); } int SimCmdTile(ARGS) { int x, y, tile; if ((argc != 4) && (argc != 5)) { return (TCL_ERROR); } if ((Tcl_GetInt(interp, argv[2], &x) != TCL_OK) || (x < 0) || (x >= WORLD_X) || (Tcl_GetInt(interp, argv[3], &y) != TCL_OK) || (y < 0) || (y >= WORLD_Y)) { return (TCL_ERROR); } if (argc == 5) { if (Tcl_GetInt(interp, argv[4], &tile) != TCL_OK) { return (TCL_ERROR); } Map[x][y] = tile; } sprintf(interp->result, "%d", Map[x][y]); return (TCL_OK); } int SimCmdFill(ARGS) { int tile, x, y; if (argc != 3) { return (TCL_ERROR); } if (Tcl_GetInt(interp, argv[2], &tile) != TCL_OK) { return (TCL_ERROR); } for (x = 0; x < WORLD_X; x++) { for (y = 0; y < WORLD_Y; y++) { Map[x][y] = tile; } } sprintf(interp->result, "%d", tile); return (TCL_OK); } int SimCmdDynamicData(ARGS) { int index, val; if ((argc != 3) && (argc != 4)) { return (TCL_ERROR); } if ((Tcl_GetInt(interp, argv[2], &index) != TCL_OK) || (index < 0) || (index >= 32)) { return (TCL_ERROR); } if (argc == 4) { int val; if (Tcl_GetInt(interp, argv[3], &val) != TCL_OK) { return (TCL_ERROR); } DynamicData[index] = val; NewMapFlags[DYMAP] = 1; Kick(); } sprintf(interp->result, "%d", DynamicData[index]); return (TCL_OK); } int SimCmdResetDynamic(ARGS) { int i; for (i = 0; i < 16; i++) { DynamicData[i] = (i & 1) ? 99999 : -99999; } NewMapFlags[DYMAP] = 1; Kick(); return (TCL_OK); } int SimCmdPerformance(ARGS) { SimView *view; PerformanceTiming = 1; FlushTime = 0.0; for (view = sim->editor; view != NULL; view = view->next) { view->updates = 0; view->update_real = view->update_user = view->update_system = 0.0; } return (TCL_OK); } int SimCmdCollapseMotion(ARGS) { int val; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &val) != TCL_OK)) { return (TCL_ERROR); } tkCollapseMotion = val; } sprintf(interp->result, "%d", tkCollapseMotion); return (TCL_OK); } int SimCmdUpdate(ARGS) { sim_update(); return (TCL_OK); } int SimCmdLandValue(ARGS) { int val; if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", LVAverage); return (TCL_OK); } int SimCmdTraffic(ARGS) { int val; if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", AverageTrf()); return (TCL_OK); } int SimCmdCrime(ARGS) { int val; if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", CrimeAverage); return (TCL_OK); } int SimCmdUnemployment(ARGS) { int val; if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", GetUnemployment()); return (TCL_OK); } int SimCmdFires(ARGS) { int val; if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", GetFire()); return (TCL_OK); } int SimCmdPollution(ARGS) { int val; if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", PolluteAverage); return (TCL_OK); } int SimCmdPolMaxX(ARGS) { int val; if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", (PolMaxX <<4) + 8); return (TCL_OK); } int SimCmdPolMaxY(ARGS) { int val; if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", (PolMaxY <<4) + 8); return (TCL_OK); } int SimCmdTrafMaxX(ARGS) { int val; if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", TrafMaxX); return (TCL_OK); } int SimCmdTrafMaxY(ARGS) { int val; if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", TrafMaxY); return (TCL_OK); } int SimCmdMeltX(ARGS) { int val; if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", (MeltX <<4) + 8); return (TCL_OK); } int SimCmdMeltY(ARGS) { int val; if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", (MeltY <<4) + 8); return (TCL_OK); } int SimCmdCrimeMaxX(ARGS) { int val; if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", (CrimeMaxX <<4) + 8); return (TCL_OK); } int SimCmdCrimeMaxY(ARGS) { int val; if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", (CrimeMaxY <<4) + 8); return (TCL_OK); } int SimCmdCenterX(ARGS) { int val; if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", (CCx <<4) + 8); return (TCL_OK); } int SimCmdCenterY(ARGS) { int val; if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", (CCy <<4) + 8); return (TCL_OK); } int SimCmdFloodX(ARGS) { int val; if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", (FloodX <<4) + 8); return (TCL_OK); } int SimCmdFloodY(ARGS) { int val; if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", (FloodY <<4) + 8); return (TCL_OK); } int SimCmdCrashX(ARGS) { int val; if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", (CrashX <<4) + 8); return (TCL_OK); } int SimCmdCrashY(ARGS) { int val; if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", (CrashY <<4) + 8); return (TCL_OK); } int SimCmdDollars(ARGS) { int val; if (argc != 2) { return (TCL_ERROR); } makeDollarDecimalStr(argv[1], interp->result); return (TCL_OK); } int SimCmdDoAnimation(ARGS) { int val; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &val) != TCL_OK)) { return (TCL_ERROR); } DoAnimation = val; MustUpdateOptions = 1; Kick(); } sprintf(interp->result, "%d", DoAnimation); return (TCL_OK); } int SimCmdDoMessages(ARGS) { int val; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &val) != TCL_OK)) { return (TCL_ERROR); } DoMessages = val; MustUpdateOptions = 1; Kick(); } sprintf(interp->result, "%d", DoMessages); return (TCL_OK); } int SimCmdDoNotices(ARGS) { int val; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &val) != TCL_OK)) { return (TCL_ERROR); } DoNotices = val; MustUpdateOptions = 1; Kick(); } sprintf(interp->result, "%d", DoNotices); return (TCL_OK); } int SimCmdRand(ARGS) { int val, r; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &val) != TCL_OK)) { return (TCL_ERROR); } r = Rand(val); } else { r = Rand16(); } sprintf(interp->result, "%d", r); return (TCL_OK); } int SimCmdPlatform(ARGS) { #ifdef MSDOS sprintf(interp->result, "msdos"); #else sprintf(interp->result, "unix"); #endif return (TCL_OK); } int SimCmdVersion(ARGS) { sprintf(interp->result, MicropolisVersion); return (TCL_OK); } int SimCmdOpenWebBrowser(ARGS) { int result = 1; char buf[512]; if ((argc != 3) || (strlen(argv[2]) > 255)) { return (TCL_ERROR); } sprintf(buf, "netscape -no-about-splash '%s' &", argv[2]); result = system(buf); sprintf(interp->result, "%d", result); return (TCL_OK); } int SimCmdQuoteURL(ARGS) { int result = 1; char buf[2048]; char *from, *to; int ch; static char *hexDigits = "0123456789ABCDEF"; if ((argc != 3) || (strlen(argv[2]) > 255)) { return (TCL_ERROR); } from = argv[2]; to = buf; while ((ch = *(from++)) != '\0') { if ((ch < 32) || (ch >= 128) || (ch == '+') || (ch == '%') || (ch == '&') || (ch == '<') || (ch == '>') || (ch == '"') || (ch == '\'')) { *to++ = '%'; *to++ = hexDigits[(ch >> 4) & 0x0f]; *to++ = hexDigits[ch & 0x0f]; } else if (ch == 32) { *to++ = '+'; } else { *to++ = ch; } // if } // while *to = '\0'; sprintf(interp->result, "%s", buf); return (TCL_OK); } int SimCmdNeedRest(ARGS) { int needRest; if ((argc != 2) && (argc != 3)) { return (TCL_ERROR); } if (argc == 3) { if (Tcl_GetInt(interp, argv[2], &needRest) != TCL_OK) { return (TCL_ERROR); } NeedRest = needRest; } sprintf(interp->result, "%d", NeedRest); return (TCL_OK); } int SimCmdMultiPlayerMode(ARGS) { /* This is read-only because it's specified on the command line and effects how the user interface is initialized. */ if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", MultiPlayerMode); return (TCL_OK); } int SimCmdSugarMode(ARGS) { /* This is read-only because it's specified on the command line and effects how the user interface is initialized. */ if (argc != 2) { return (TCL_ERROR); } sprintf(interp->result, "%d", SugarMode); return (TCL_OK); } /************************************************************************/ int SimCmd(CLIENT_ARGS) { Tcl_HashEntry *ent; int result = TCL_OK; int (*cmd)(); if (argc < 2) { return TCL_ERROR; } if (ent = Tcl_FindHashEntry(&SimCmds, argv[1])) { cmd = (int (*)())ent->clientData; result = cmd(interp, argc, argv); } else { result = TCL_ERROR; } return result; } sim_command_init() { int new; Tcl_CreateCommand(tk_mainInterp, "sim", SimCmd, (ClientData)MainWindow, (void (*)()) NULL); Tcl_InitHashTable(&SimCmds, TCL_STRING_KEYS); #define SIM_CMD(name) HASHED_CMD(Sim, name) SIM_CMD(GameStarted); SIM_CMD(InitGame); SIM_CMD(SaveCity); SIM_CMD(ReallyQuit); SIM_CMD(UpdateHeads); SIM_CMD(UpdateMaps); SIM_CMD(RedrawEditors); SIM_CMD(RedrawMaps); SIM_CMD(UpdateEditors); SIM_CMD(UpdateGraphs); SIM_CMD(UpdateEvaluation); SIM_CMD(UpdateBudget); SIM_CMD(UpdateBudgetWindow); SIM_CMD(DoBudget); SIM_CMD(DoBudgetFromMenu); SIM_CMD(Pause); SIM_CMD(Resume); SIM_CMD(StartBulldozer); SIM_CMD(StopBulldozer); SIM_CMD(MakeFire); SIM_CMD(MakeFlood); SIM_CMD(MakeTornado); SIM_CMD(MakeEarthquake); SIM_CMD(MakeMonster); SIM_CMD(MakeMeltdown); SIM_CMD(FireBomb); SIM_CMD(SoundOff); SIM_CMD(GenerateNewCity); SIM_CMD(GenerateSomeCity); SIM_CMD(TreeLevel); SIM_CMD(LakeLevel); SIM_CMD(CurveLevel); SIM_CMD(CreateIsland); SIM_CMD(ClearMap); SIM_CMD(ClearUnnatural); SIM_CMD(SmoothTrees); SIM_CMD(SmoothWater); SIM_CMD(SmoothRiver); SIM_CMD(LoadScenario); SIM_CMD(LoadCity); SIM_CMD(SaveCityAs); SIM_CMD(MakeExplosion); SIM_CMD(CityName); SIM_CMD(CityFileName); SIM_CMD(GameLevel); SIM_CMD(Speed); SIM_CMD(Skips); SIM_CMD(Skip); SIM_CMD(WorldX); SIM_CMD(WorldY); SIM_CMD(Delay); SIM_CMD(HeatSteps); SIM_CMD(HeatFlow); SIM_CMD(HeatRule); #ifdef CAM SIM_CMD(JustCam); #endif #ifdef NET SIM_CMD(ListenTo); SIM_CMD(HearFrom); #endif SIM_CMD(Funds); SIM_CMD(TaxRate); SIM_CMD(FireFund); SIM_CMD(PoliceFund); SIM_CMD(RoadFund); SIM_CMD(Year); SIM_CMD(AutoBudget); SIM_CMD(AutoGoto); SIM_CMD(AutoBulldoze); SIM_CMD(Disasters); SIM_CMD(Sound); SIM_CMD(Flush); SIM_CMD(FlushStyle); SIM_CMD(DonDither); SIM_CMD(DoOverlay); SIM_CMD(MonsterGoal); SIM_CMD(HelicopterGoal); SIM_CMD(MonsterDirection); SIM_CMD(EraseOverlay); SIM_CMD(Tile); SIM_CMD(Fill); SIM_CMD(DynamicData); SIM_CMD(ResetDynamic); SIM_CMD(Performance); SIM_CMD(CollapseMotion); SIM_CMD(Update); SIM_CMD(OverRide); SIM_CMD(Expensive); SIM_CMD(Players); SIM_CMD(Votes); SIM_CMD(BobHeight); SIM_CMD(PendingTool); SIM_CMD(PendingX); SIM_CMD(PendingY); SIM_CMD(Displays); SIM_CMD(LandValue); SIM_CMD(Traffic); SIM_CMD(Crime); SIM_CMD(Unemployment); SIM_CMD(Fires); SIM_CMD(Pollution); SIM_CMD(PolMaxX); SIM_CMD(PolMaxY); SIM_CMD(TrafMaxX); SIM_CMD(TrafMaxY); SIM_CMD(MeltX); SIM_CMD(MeltY); SIM_CMD(CrimeMaxX); SIM_CMD(CrimeMaxY); SIM_CMD(CenterX); SIM_CMD(CenterY); SIM_CMD(FloodX); SIM_CMD(FloodY); SIM_CMD(CrashX); SIM_CMD(CrashY); SIM_CMD(Dollars); SIM_CMD(DoAnimation); SIM_CMD(DoMessages); SIM_CMD(DoNotices); SIM_CMD(Rand); SIM_CMD(Platform); SIM_CMD(Version); SIM_CMD(OpenWebBrowser); SIM_CMD(QuoteURL); SIM_CMD(NeedRest); SIM_CMD(MultiPlayerMode); SIM_CMD(SugarMode); } micropolis-activity/src/sim/sim.c0000664000076400007640000004522210724145723017353 0ustar simcitysimcity/* sim.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" /* Sim City */ char *MicropolisVersion = "4.0"; Sim *sim = NULL; int sim_loops = 0; int sim_delay = 50; int sim_skips = 0; int sim_skip = 0; int sim_paused = 0; int sim_paused_speed = 3; int sim_tty = 0; #ifdef CAM int sim_just_cam = 0; #endif int heat_steps = 0; int heat_flow = -7; int heat_rule = 0; int heat_wrap = 3; struct timeval start_time, now_time, beat_time, last_now_time; char *CityFileName = NULL; int Startup = 0; int StartupGameLevel = 0; char *StartupName = NULL; int WireMode = 0; int MultiPlayerMode = 0; int SugarMode = 0; int TilesAnimated = 0; int DoAnimation = 1; int DoMessages = 1; int DoNotices = 1; char *Displays = NULL; char *FirstDisplay = NULL; int ExitReturn = 0; sim_exit(int val) { tkMustExit = 1; ExitReturn = val; } sim_really_exit(int val) { DoStopMicropolis(); exit(val); } #define COPY(FROM, TO) \ TO = ckalloc(strlen(FROM) + 1); \ strcpy(TO, FROM); #define TESTDIR(DIR, NAME) \ if ((stat(DIR, &statbuf) == -1) || \ !(S_ISDIR(statbuf.st_mode))) { \ fprintf(stderr, \ "Can't find the directory \"%s\"!\n", DIR); \ fprintf(stderr, \ "The environment variable \"%s\" should name a directory.\n", \ NAME); \ lost = 1; \ } void env_init(void) { char dir[256]; char *s; struct stat statbuf; int lost = 0; if ((s = getenv("SIMHOME")) == NULL) { s = "."; } COPY(s, HomeDir); TESTDIR(HomeDir, "$SIMHOME"); sprintf(dir, "%s/res/", HomeDir); COPY(dir, ResourceDir); TESTDIR(ResourceDir, "$SIMHOME/res"); { extern char *TCL_Library, *TK_Library; TCL_Library = TK_Library = ResourceDir; } if (lost) { fprintf(stderr, "Please check the environment or reinstall Micropolis and try again! Sorry!\n"); sim_exit(1); // Just sets tkMustExit and ExitReturn return; } gettimeofday(&now_time, NULL); last_now_time = now_time; } void sim_init(void) { gettimeofday(&start_time, NULL); gettimeofday(&beat_time, NULL); signal_init(); UserSoundOn = 1; MustUpdateOptions = 1; HaveLastMessage = 0; ScenarioID = 0; StartingYear = 1900; tileSynch = 0x01; sim_skips = sim_skip = 0; autoGo = 1; CityTax = 7; CityTime = 50; NoDisasters = 0; PunishCnt = 0; autoBulldoze = 1; autoBudget = 1; MesNum = 0; LastMesTime = 0; flagBlink = 1; SimSpeed = 3; ChangeEval(); MessagePort = 0; MesX = 0; MesY = 0; sim_paused = 0; sim_loops = 0; InitSimLoad = 2; tkMustExit = 0; ExitReturn = 0; InitializeSound(); initMapArrays(); initGraphs(); InitFundingLevel(); #if 0 loadObjectData(); #endif setUpMapProcs(); StopEarthquake(); ResetMapState(); ResetEditorState(); ClearMap(); InitWillStuff(); SetFunds(5000); SetGameLevelFunds(StartupGameLevel); setSpeed(0); setSkips(0); } int triedToBailOnce = 0; void SignalExitHandler() { if (triedToBailOnce) { exit(-1); } else { triedToBailOnce = 1; fprintf(stderr, "\nMicropolis has been terminated by a signal.\n"); fprintf(stderr, "Pick a window -- you're leaving!\n\n"); fflush(stderr); sim_really_exit(-1); } } signal_init() { signal(SIGHUP, (void (*)())SignalExitHandler); signal(SIGINT, (void (*)())SignalExitHandler); signal(SIGQUIT, (void (*)())SignalExitHandler); signal(SIGTERM, (void (*)())SignalExitHandler); } void sim_update() { gettimeofday(&now_time, NULL); flagBlink = (now_time.tv_usec < 500000) ? 1 : -1; if (SimSpeed && !heat_steps) { TilesAnimated = 0; } sim_update_editors(); sim_update_maps(); sim_update_graphs(); sim_update_budgets(); sim_update_evaluations(); UpdateFlush(); } sim_update_editors(void) { SimView *view; for (view = sim->editor; view != NULL; view = view->next) { #if 1 CancelRedrawView(view); view->invalid = 1; DoUpdateEditor(view); #else EventuallyRedrawView(view); #endif } DoUpdateHeads(); } sim_update_maps(void) { SimView *view; int i; for (view = sim->map; view != NULL; view = view->next) { int mustUpdateMap = NewMapFlags[view->map_state] || NewMap || ShakeNow; if (mustUpdateMap) { view->invalid = 1; } if (view->invalid) { #if 1 if (mustUpdateMap) { //fprintf(stderr, "sim_update_maps mustUpdateMap\n"); // view->skip = 0; } if (DoUpdateMap(view)) { // CancelRedrawView(view); // view->invalid = 1; } #else EventuallyRedrawView(view); #endif } } NewMap = 0; for (i = 0; i < NMAPS; i++) { NewMapFlags[i] = 0; } } sim_update_graphs(void) { graphDoer(); } sim_update_budgets(void) { if ((sim_skips != 0) && (sim_skip != 0)) { return; } UpdateBudgetWindow(); } sim_update_evaluations(void) { if ((sim_skips != 0) && (sim_skip != 0)) { return; } scoreDoer(); } #ifdef CAM sim_update_cams(void) { SimCam *scam; if ((sim_skips != 0) && (sim_skip != 0)) { return; } for (scam = sim->scam; scam != NULL; scam = scam->next) { CancelRedrawView(scam); scam->invalid = 1; handle_scam(scam); } } #endif /* CAM */ short *CellSrc = NULL; short *CellDst = NULL; #define SRCCOL (WORLD_Y + 2) #define DSTCOL WORLD_Y #define CLIPPER_LOOP_BODY(CODE) \ src = CellSrc; dst = CellDst; \ for (x = 0; x < WORLD_X;) { \ short nw, n, ne, w, c, e, sw, s, se; \ \ src = CellSrc + (x * SRCCOL); dst = CellDst + (x * DSTCOL); \ w = src[0]; c = src[SRCCOL]; e = src[2 * SRCCOL]; \ sw = src[1]; s = src[SRCCOL + 1]; se = src[(2 * SRCCOL) + 1]; \ \ for (y = 0; y < WORLD_Y; y++) { \ nw = w; w = sw; sw = src[2]; \ n = c; c = s; s = src[SRCCOL + 2]; \ ne = e; e = se; se = src[(2 * SRCCOL) + 2]; \ { CODE } \ src++; dst++; \ } \ x++; /* src += SRCCOL - 3; dst += DSTCOL - 1; */ \ src = CellSrc + ((x + 1) * SRCCOL) - 3; dst = CellDst + ((x + 1) * DSTCOL) - 1; \ \ nw = src[1]; n = src[SRCCOL + 1]; ne = src[(2 * SRCCOL) + 1]; \ w = src[2]; c = src[SRCCOL + 2]; e = src[(2 * SRCCOL) + 2]; \ \ for (y = WORLD_Y - 1; y >= 0; y--) { \ sw = w; w = nw; nw = src[0]; \ s = c; c = n; n = src[SRCCOL]; \ se = e; e = ne; ne = src[2 * SRCCOL]; \ { CODE } \ src--; dst--; \ } \ x++; /* src += SRCCOL + 3; dst += DSTCOL + 1; */ \ } void sim_heat(void) { int x, y, l, r, u, d; static int a = 0; short *src, *dst; register int fl = heat_flow; if (CellSrc == NULL) { CellSrc = (short *)ckalloc((WORLD_X + 2) * (WORLD_Y + 2) * sizeof (short)); CellDst = &Map[0][0]; } src = CellSrc + SRCCOL + 1; dst = CellDst; /* * Copy wrapping edges: * * 0 ff f0 f1 ... fe ff f0 * * 1 0f 00 01 ... 0e 0f 00 * 2 1f 10 11 ... 1e 1f 10 * .. .. .. .. .. .. * ef e0 e1 ... ee ef e0 * h ff f0 f1 ... fe ff f0 * * h+1 0f 00 01 ... 0e 0f 00 * * wrap value: effect: * 0 no effect * 1 copy future=>past, no wrap * 2 no copy, wrap edges * 3 copy future=>past, wrap edges * 4 copy future=>past, same edges */ switch (heat_wrap) { case 0: break; case 1: for (x = 0; x < WORLD_X; x++) { memcpy(src, dst, WORLD_Y * sizeof (short)); src += SRCCOL; dst += DSTCOL; } break; case 2: for (x = 0; x < WORLD_X; x++) { src[-1] = src[WORLD_Y - 1]; src[WORLD_Y] = src[0]; src += SRCCOL; dst += DSTCOL; } memcpy(CellSrc,CellSrc + (SRCCOL * WORLD_X), SRCCOL * sizeof (short)); memcpy(CellSrc + SRCCOL * (WORLD_X + 1), CellSrc + SRCCOL, SRCCOL * sizeof (short)); break; case 3: for (x = 0; x < WORLD_X; x++) { memcpy(src, dst, WORLD_Y * sizeof (short)); src[-1] = src[WORLD_Y - 1]; src[WORLD_Y] = src[0]; src += SRCCOL; dst += DSTCOL; } memcpy(CellSrc, CellSrc + (SRCCOL * WORLD_X), SRCCOL * sizeof (short)); memcpy(CellSrc + SRCCOL * (WORLD_X + 1), CellSrc + SRCCOL, SRCCOL * sizeof (short)); break; case 4: src[0] = dst[0]; src[1 + WORLD_Y] = dst[WORLD_Y - 1]; src[(1 + WORLD_X) * SRCCOL] = dst[(WORLD_X - 1) * DSTCOL]; src[((2 + WORLD_X) * SRCCOL) - 1] = dst[(WORLD_X * WORLD_Y) - 1]; for (x = 0; x < WORLD_X; x++) { memcpy(src, dst, WORLD_Y * sizeof (short)); src[-1] = src[0]; src[WORLD_Y] = src[WORLD_Y - 1]; src += SRCCOL; dst += DSTCOL; } memcpy(CellSrc + (SRCCOL * (WORLD_X + 1)), CellSrc + (SRCCOL * WORLD_X), SRCCOL * sizeof (short)); memcpy(CellSrc, CellSrc + SRCCOL, SRCCOL * sizeof (short)); break; } switch (heat_rule) { case 0: #define HEAT \ a += nw + n + ne + w + e + sw + s + se + fl; \ dst[0] = ((a >> 3) & LOMASK) | \ (ANIMBIT | BURNBIT | BULLBIT); \ a &= 7; CLIPPER_LOOP_BODY(HEAT); break; case 1: #define ECOMASK 0x3fc #define ECO \ c -= fl; n -= fl; s -= fl; e -= fl; w -= fl; \ ne -= fl; nw -= fl; se -= fl; sw -= fl; \ \ /* anneal */ \ { int sum = (c&1) + (n&1) + (s&1) + (e&1) + (w&1) + \ (ne&1) + (nw&1) + (se&1) + (sw&1), cell; \ if (((sum > 5) || (sum == 4))) { \ /* brian's brain */ \ cell = ((c <<1) & (0x3fc)) | \ (((((c >>1)&3) == 0) && \ (((n&2) + (s&2) + (e&2) + (w&2) + \ (ne&2) + (nw&2) + (se&2) + (sw&2)) == (2 <<1)) \ ) ? 2 : 0) | \ 1; \ } else { \ /* anti-life */ \ sum = ((n&2) + (s&2) + (e&2) + (w&2) + \ (ne&2) + (nw&2) + (se&2) + (sw&2)) >>1; \ cell = (((c ^ 2) <<1) & ECOMASK) | \ ((c&2) ? ((sum != 5) ? 2 : 0) \ : (((sum != 5) && (sum != 6)) ? 2 : 0)); \ } \ dst[0] = ((fl + cell) & LOMASK) | \ (ANIMBIT | BURNBIT | BULLBIT); \ } \ c += fl; n += fl; s += fl; e += fl; w += fl; \ ne += fl; nw += fl; se += fl; sw += fl; CLIPPER_LOOP_BODY(ECO); break; } } void sim_timeout_loop(short doSim) { if (SimSpeed) { sim_loop(doSim); } DoTimeoutListen(); } sim_loop(int doSim) { #ifdef CAM if (!sim_just_cam) { #endif if (heat_steps) { int j; for (j = 0; j < heat_steps; j++) { sim_heat(); } MoveObjects(); /* InvalidateMaps(); */ NewMap = 1; } else { if (doSim) { SimFrame(); } MoveObjects(); } sim_loops++; sim_update(); #ifdef CAM } else { sim_update_cams(); UpdateFlush(); DoTimeoutListen(); } #endif } int MatchArg(char *arg, char *pat) { while (*pat && *arg) { if (tolower(*arg) != tolower(*pat)) { if (*pat == '_') { pat++; continue; } return (0); } arg++; pat++; } return (*arg == '\0'); } int main(int argc, char *argv[]) { int c, errflg = 0; extern int isatty(); printf("Welcome to X11 Multi Player Micropolis version %s by Will Wright, Don Hopkins.\n", MicropolisVersion); printf("Copyright (C) 2002 by Electronic Arts, Maxis. All rights reserved.\n"); while (!errflg && !tkMustExit && (c = getopt(argc, argv, "tcwmSR:gs:l:")) != -1) { switch (c) { case 't': /* TTY mode */ sim_tty = isatty(0); break; case 'c': /* Create Own Colormap */ { extern int TK_CreateColormap; TK_CreateColormap = 1; } break; case 'w': /* Wire Mode (don't use shared memory) */ WireMode = 1; break; case 'm': /* Multi Player Mode */ MultiPlayerMode = 1; break; case 'S': /* Sugar Mode */ SugarMode = 1; break; case 'R': /* Root Window ID */ c = atoi(optarg); if (c) { tk_RootWindow = c; } else { errflg = 1; } break; case 'g': /* Generate New Terrain */ if (Startup) { errflg = 1; } else { Startup = -1; } break; case 'l': /* Level */ c = atoi(optarg); if (!c) { if (MatchArg(optarg, "easy")) { c = 1; } else if (MatchArg(optarg, "medium")) { c = 2; } else if (MatchArg(optarg, "hard")) { c = 3; } } if ((c < 1) || (c > 3)) { errflg = 1; } else { StartupGameLevel = c - 1; } break; case 's': /* Scenario */ if (Startup) errflg++; else { c = atoi(optarg); if (!c) { if (MatchArg(optarg, "Dullsville")) { c = 1; } else if (MatchArg(optarg, "San_Francisco")) { c = 2; } else if (MatchArg(optarg, "Hamburg")) { c = 3; } else if (MatchArg(optarg, "Bern")) { c = 4; } else if (MatchArg(optarg, "Tokyo")) { c = 5; } else if (MatchArg(optarg, "Detroit")) { c = 6; } else if (MatchArg(optarg, "Boston")) { c = 7; } else if (MatchArg(optarg, "Rio_de_Janeiro")) { c = 8; } } if ((c < 1) || (c > 8)) { errflg = 1; } else { Startup = c; } } break; case 'd': /* Display */ { char *d = Displays; if (d == NULL) { Displays = malloc(strlen(optarg) + 3); sprintf(Displays, "{%s}", optarg); if (strchr(optarg, ':') != NULL) { FirstDisplay = malloc(strlen(optarg) + 1); strcpy(FirstDisplay, optarg); } else { FirstDisplay = malloc(strlen(optarg) + 3); sprintf(FirstDisplay, "%s:0", optarg); } } else { /* Implicitly set multi player mode if multiple displays given. */ MultiPlayerMode = 1; Displays = malloc(strlen(Displays) + strlen(optarg) + 4); sprintf(Displays, "%s {%s}", d, optarg); free(d); } } break; case '?': errflg++; break; } } if (!errflg && !tkMustExit) { if ((Startup == -1) || (Startup == -2)) { /* Generate New City */ if ((optind != argc) && (optind != argc - 1)) { errflg = 1; } else { if (optind == argc - 1) StartupName = argv[optind]; } } else if (Startup > 0) { /* Scenario */ } else if (optind == argc - 1) { /* Load City */ Startup = -2; StartupName = argv[optind]; } else if (optind == argc) { /* No arguments */ } else { errflg = 1; } } if (errflg) { fprintf(stderr, "usage: %s\n", argv[0]); fprintf(stderr, " [-s(cenario) number|name]\n"); fprintf(stderr, " [-g(enerate random map and start playing)\n"); fprintf(stderr, " [-l(evel) number|name]\n"); fprintf(stderr, " [-w(ire mode: use X11 networking without shared memory)]\n"); fprintf(stderr, " [-t(ty mode: interactive TCL session on stdin/stdout)]\n"); fprintf(stderr, " [-c(olormap mode: create own X11 colormap on 8 bit screens)]\n"); fprintf(stderr, " [-S(ugar mode: enable OLPC Sugar user interface integration)]\n"); fprintf(stderr, " [-m(ulti player mode: enable adding multiple players via X11)]\n"); fprintf(stderr, " [NewCityName]\n"); fprintf(stderr, " [SavedFileName.city]\n"); fprintf(stderr, "The game level and NewCityName argument are optional, and only apply when\n"); fprintf(stderr, "starting a new city or generating new terrain.\n"); fprintf(stderr, "Game levels include: 1: Easy, 2: Medium, 3: Hard\n"); fprintf(stderr, "Scenarios include: 1: Dullsville, 2: San_Francisco, 3: Hamburg, 4: Bern,\n"); fprintf(stderr, " 5: Tokyo, 6: Detroit, 7: Boston, 8: Rio_de_Janeiro\n"); fflush(stderr); sim_exit(0); // Just sets tkMustExit and ExitReturn } if ((!tkMustExit) && (Displays == NULL)) { char *d = getenv("DISPLAY"); if (d == NULL) d = ":0"; Displays = malloc(strlen(d) + 3); sprintf(Displays, "{%s}", d); if (strchr(d, ':') != NULL) { FirstDisplay = malloc(strlen(d) + 1); strcpy(FirstDisplay, d); } else { FirstDisplay = malloc(strlen(d) + 3); sprintf(FirstDisplay, "%s:0", d); } } if (!tkMustExit) { env_init(); } if (!tkMustExit) { tk_main(); } exit (ExitReturn); } micropolis-activity/src/sim/w_tk.c0000664000076400007640000004760110724145723017532 0ustar simcitysimcity/* w_tk.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" #ifdef MSDOS #define filename2UNIX(name) \ { char *p; for (p = name; *p; p++) if (*p == '\\') *p = '/'; } #else #define filename2UNIX(name) /**/ #endif Tcl_Interp *tk_mainInterp = NULL; Tcl_CmdBuf buffer = NULL; Tk_TimerToken sim_timer_token = 0; int sim_timer_idle = 0; int sim_timer_set = 0; Tk_Window MainWindow; int UpdateDelayed = 0; int AutoScrollEdge = 16; int AutoScrollStep = 16; int AutoScrollDelay = 10; Tk_TimerToken earthquake_timer_token; int earthquake_timer_set = 0; int earthquake_delay = 3000; int PerformanceTiming; double FlushTime; int NeedRest = 0; #define DEF_VIEW_FONT "-Adobe-Helvetica-Bold-R-Normal-*-140-*" Tk_ConfigSpec TileViewConfigSpecs[] = { {TK_CONFIG_FONT, "-font", (char *) NULL, (char *) NULL, DEF_VIEW_FONT, Tk_Offset(SimView, fontPtr), 0}, {TK_CONFIG_STRING, "-messagevar", (char *) NULL, (char *) NULL, NULL, Tk_Offset(SimView, message_var), 0}, {TK_CONFIG_PIXELS, "-width", "width", "Width", 0, Tk_Offset(SimView, width), 0}, {TK_CONFIG_PIXELS, "-height", "height", "Height", 0, Tk_Offset(SimView, height), 0}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; int TileViewCmd(CLIENT_ARGS); int ConfigureTileView(Tcl_Interp *interp, SimView *view, int argc, char **argv, int flags); static void TileViewEventProc(ClientData clientData, XEvent *eventPtr); static void DestroyTileView(ClientData clientData); int ConfigureSimGraph(Tcl_Interp *interp, SimGraph *graph, int argc, char **argv, int flags); static void MicropolisTimerProc(ClientData clientData); int SimCmd(CLIENT_ARGS); int DoEditorCmd(CLIENT_ARGS); int DoMapCmd(CLIENT_ARGS); int GraphViewCmd(CLIENT_ARGS); int DoGraphCmd(CLIENT_ARGS); int SpriteCmd(CLIENT_ARGS); extern int Tk_PieMenuCmd(); extern int Tk_IntervalCmd(); int TileViewCmd(CLIENT_ARGS) { Tk_Window tkwin = (Tk_Window) clientData; SimView *view; int viewclass; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " pathName ?options?\"", (char *) NULL); return TCL_ERROR; } if (strcmp(argv[0], "editorview") == 0) viewclass = Editor_Class; else if (strcmp(argv[0], "mapview") == 0) viewclass = Map_Class; else { return TCL_ERROR; } tkwin = Tk_CreateWindowFromPath(interp, tkwin, argv[1], (char *) NULL); if (tkwin == NULL) { return TCL_ERROR; } view = (SimView *)ckalloc(sizeof (SimView)); view->tkwin = tkwin; view->interp = interp; view->flags = 0; if (viewclass == Editor_Class) { Tk_SetClass(view->tkwin, "EditorView"); Tk_CreateEventHandler(view->tkwin, VisibilityChangeMask | ExposureMask | StructureNotifyMask | EnterWindowMask | LeaveWindowMask | PointerMotionMask, TileViewEventProc, (ClientData) view); Tcl_CreateCommand(interp, Tk_PathName(view->tkwin), DoEditorCmd, (ClientData) view, (void (*)()) NULL); } else { Tk_SetClass(view->tkwin, "MapView"); Tk_CreateEventHandler(view->tkwin, VisibilityChangeMask | ExposureMask | StructureNotifyMask /* | EnterWindowMask | LeaveWindowMask | PointerMotionMask */ , TileViewEventProc, (ClientData) view); Tcl_CreateCommand(interp, Tk_PathName(view->tkwin), DoMapCmd, (ClientData) view, (void (*)()) NULL); } Tk_MakeWindowExist(view->tkwin); if (getenv("XSYNCHRONIZE") != NULL) { XSynchronize(Tk_Display(tkwin), 1); } if (viewclass == Editor_Class) { InitNewView(view, "MicropolisEditor", Editor_Class, EDITOR_W, EDITOR_H); DoNewEditor(view); } else { InitNewView(view, "MicropolisMap", Map_Class, MAP_W, MAP_H); DoNewMap(view); } if (ConfigureTileView(interp, view, argc-2, argv+2, 0) != TCL_OK) { /* XXX: destroy view */ Tk_DestroyWindow(view->tkwin); return TCL_ERROR; } switch (view->class) { case Editor_Class: break; case Map_Class: view->invalid = 1; view->update = 1; DoUpdateMap(view); break; } interp->result = Tk_PathName(view->tkwin); return TCL_OK; } int ConfigureTileView(Tcl_Interp *interp, SimView *view, int argc, char **argv, int flags) { if (Tk_ConfigureWidget(interp, view->tkwin, TileViewConfigSpecs, argc, argv, (char *) view, flags) != TCL_OK) { return TCL_ERROR; } if (view->class == Map_Class) { Tk_GeometryRequest(view->tkwin, MAP_W, MAP_H); } else { if (view->width || view->height) { Tk_GeometryRequest(view->tkwin, view->width, view->height); } } EventuallyRedrawView(view); return TCL_OK; } InvalidateMaps() { SimView *view; //fprintf(stderr, "InvalidateMaps\n"); for (view = sim->map; view != NULL; view = view->next) { view->invalid = 1; view->skip = 0; EventuallyRedrawView(view); } sim_skip = 0; } InvalidateEditors() { SimView *view; //fprintf(stderr, "InvalidateEditors\n"); for (view = sim->editor; view != NULL; view = view->next) { view->invalid = 1; view->skip = 0; EventuallyRedrawView(view); } sim_skip = 0; } RedrawMaps() { SimView *view; //fprintf(stderr, "RedrawMaps\n"); for (view = sim->map; view != NULL; view = view->next) { view->skip = 0; EventuallyRedrawView(view); } sim_skip = 0; } RedrawEditors() { SimView *view; //fprintf(stderr, "RedrawEditors\n"); for (view = sim->editor; view != NULL; view = view->next) { view->skip = 0; EventuallyRedrawView(view); } sim_skip = 0; } static void DisplayTileView(ClientData clientData) { SimView *view = (SimView *) clientData; Tk_Window tkwin = view->tkwin; Pixmap pm = None; Drawable d; view->flags &= ~VIEW_REDRAW_PENDING; if (view->visible && (tkwin != NULL) && Tk_IsMapped(tkwin)) { switch (view->class) { case Editor_Class: view->skip = 0; view->update = 1; DoUpdateEditor(view); break; case Map_Class: //fprintf(stderr, "DisplayTileView\n"); view->skip = 0; view->update = 1; DoUpdateMap(view); break; } } } /* comefrom: ConfigureTileView TileViewEventProc expose configure motion InvalidateMaps EraserTo DoSetMapState AddInk EraserTo */ EventuallyRedrawView(SimView *view) { if (!(view->flags & VIEW_REDRAW_PENDING)) { Tk_DoWhenIdle(DisplayTileView, (ClientData) view); view->flags |= VIEW_REDRAW_PENDING; } } CancelRedrawView(SimView *view) { if (view->flags & VIEW_REDRAW_PENDING) { Tk_CancelIdleCall(DisplayTileView, (ClientData) view); } view->flags &= ~VIEW_REDRAW_PENDING; } static void TileAutoScrollProc(ClientData clientData) { SimView *view = (SimView *)clientData; char buf[256]; if (view->tool_mode != 0) { int dx = 0, dy = 0; int result, root_x, root_y, x, y; unsigned int key_buttons; Window root, child; XQueryPointer(Tk_Display(view->tkwin), Tk_WindowId(view->tkwin), &root, &child, &root_x, &root_y, &x, &y, &key_buttons); if (x < AutoScrollEdge) dx = -AutoScrollStep; else if (x > (view->w_width - AutoScrollEdge)) dx = AutoScrollStep; if (y < AutoScrollEdge) dy = -AutoScrollStep; else if (y > (view->w_height - AutoScrollEdge)) dy = AutoScrollStep; if (dx || dy) { int px = view->pan_x, py = view->pan_y; if (view->tool_mode == -1) { dx = -dx; dy = -dy; } DoPanBy(view, dx, dy); view->tool_x += view->pan_x - px; view->tool_y += view->pan_y - py; view->auto_scroll_token = Tk_CreateTimerHandler(AutoScrollDelay, TileAutoScrollProc, (ClientData) view); sprintf(buf, "UIDidPan %s %d %d", Tk_PathName(view->tkwin), x, y); Eval(buf); } } } static void TileViewEventProc(ClientData clientData, XEvent *eventPtr) { SimView *view = (SimView *) clientData; if ((eventPtr->type == Expose) && (eventPtr->xexpose.count == 0)) { view->visible = 1; EventuallyRedrawView(view); } else if (eventPtr->type == MapNotify) { view->visible = 1; } else if (eventPtr->type == UnmapNotify) { view->visible = 0; } else if (eventPtr->type == VisibilityNotify) { if (eventPtr->xvisibility.state == VisibilityFullyObscured) view->visible = 0; else view->visible = 1; } else if (eventPtr->type == ConfigureNotify) { if (view->class == Editor_Class) DoResizeView(view, eventPtr->xconfigure.width, eventPtr->xconfigure.height); EventuallyRedrawView(view); } else if (eventPtr->type == DestroyNotify) { Tcl_DeleteCommand(view->interp, Tk_PathName(view->tkwin)); view->tkwin = NULL; CancelRedrawView(view); Tk_EventuallyFree((ClientData) view, DestroyTileView); } else if ((view->class == Editor_Class) && (view->show_me != 0) && ((eventPtr->type == EnterNotify) || (eventPtr->type == LeaveNotify) || (eventPtr->type == MotionNotify))) { int last_x = view->tool_x, last_y = view->tool_y, last_showing = view->tool_showing; int x, y, showing, autoscroll; if (eventPtr->type == EnterNotify) { showing = 1; x = eventPtr->xcrossing.x; y = eventPtr->xcrossing.y; } else if (eventPtr->type == LeaveNotify) { showing = 0; x = eventPtr->xcrossing.x; y = eventPtr->xcrossing.y; } else { showing = 1; x = eventPtr->xmotion.x; y = eventPtr->xmotion.y; } if (view->tool_mode != 0) { if ((x < AutoScrollEdge) || (x > (view->w_width - AutoScrollEdge)) || (y < AutoScrollEdge) || (y > (view->w_height - AutoScrollEdge))) { if (!view->auto_scroll_token) { view->auto_scroll_token = Tk_CreateTimerHandler(AutoScrollDelay, TileAutoScrollProc, (ClientData) view); } } else { if (view->auto_scroll_token) { Tk_DeleteTimerHandler(view->auto_scroll_token); view->auto_scroll_token = 0; } } } ViewToPixelCoords(view, x, y, &x, &y); view->tool_showing = showing; if (view->tool_mode != -1) { view->tool_x = x; view->tool_y = y; } /* XXX: redraw all views showing cursor */ /* XXX: also, make sure switching tools works w/out moving */ if (((view->tool_showing != last_showing) || (view->tool_x != last_x) || (view->tool_y != last_y))) { #if 1 EventuallyRedrawView(view); #else RedrawEditors(); #endif } } } static void DestroyTileView(ClientData clientData) { SimView *view = (SimView *) clientData; DestroyView(view); } void StdinProc(ClientData clientData, int mask) { char line[200]; static int gotPartial = 0; char *cmd; int result; if (mask & TK_READABLE) { if (fgets(line, 200, stdin) == NULL) { if (!gotPartial) { if (sim_tty) { sim_exit(0); // Just sets tkMustExit and ExitReturn return; } else { Tk_DeleteFileHandler(0); } return; } else { line[0] = 0; } } cmd = Tcl_AssembleCmd(buffer, line); if (cmd == NULL) { gotPartial = 1; return; } gotPartial = 0; result = Tcl_RecordAndEval(tk_mainInterp, cmd, 0); if (*tk_mainInterp->result != 0) { if ((result != TCL_OK) || sim_tty) { printf("%s\n", tk_mainInterp->result); } } if (sim_tty) { printf("sim:\n"); fflush(stdout); } } } static void StructureProc(ClientData clientData, XEvent *eventPtr) { if (eventPtr->type == DestroyNotify) { MainWindow = NULL; } } static void DelayedMap(ClientData clientData) { while (Tk_DoOneEvent(TK_IDLE_EVENTS) != 0) { /* Empty loop body. */ } if (MainWindow == NULL) { return; } Tk_MapWindow(MainWindow); } DidStopPan(SimView *view) { char buf[256]; sprintf(buf, "UIDidStopPan %s", Tk_PathName(view->tkwin)); Eval(buf); } static void MicropolisTimerProc(ClientData clientData) { sim_timer_token = NULL; sim_timer_set = 0; if (NeedRest > 0) { NeedRest--; } if (SimSpeed) { sim_loop(1); StartMicropolisTimer(); } else { StopMicropolisTimer(); } } void ReallyStartMicropolisTimer(ClientData clientData) { int delay = sim_delay; XDisplay *xd = XDisplays; StopMicropolisTimer(); while (xd != NULL) { if ((NeedRest > 0) || ShakeNow || (xd->tkDisplay->buttonWinPtr != NULL) || (xd->tkDisplay->grabWinPtr != NULL)) { if (ShakeNow || NeedRest) { if (delay < 50000) delay = 50000; } else { } break; } xd = xd->next; } sim_timer_token = Tk_CreateMicroTimerHandler( 0, delay, MicropolisTimerProc, (ClientData)0); sim_timer_set = 1; } StartMicropolisTimer() { if (sim_timer_idle == 0) { sim_timer_idle = 1; Tk_DoWhenIdle( ReallyStartMicropolisTimer, NULL); } } StopMicropolisTimer() { if (sim_timer_idle != 0) { sim_timer_idle = 0; Tk_CancelIdleCall( ReallyStartMicropolisTimer, NULL); } if (sim_timer_set) { if (sim_timer_token != 0) { Tk_DeleteTimerHandler(sim_timer_token); sim_timer_token = 0; } sim_timer_set = 0; } } FixMicropolisTimer() { if (sim_timer_set) { StartMicropolisTimer(NULL); } } static void DelayedUpdate(ClientData clientData) { //fprintf(stderr, "DelayedUpdate\n"); UpdateDelayed = 0; sim_skip = 0; sim_update(); } Kick() { if (!UpdateDelayed) { UpdateDelayed = 1; Tk_DoWhenIdle(DelayedUpdate, (ClientData) NULL); } } void StopEarthquake() { ShakeNow = 0; if (earthquake_timer_set) { Tk_DeleteTimerHandler(earthquake_timer_token); } earthquake_timer_set = 0; } DoEarthQuake(void) { MakeSound("city", "Explosion-Low"); Eval("UIEarthQuake"); ShakeNow++; if (earthquake_timer_set) { Tk_DeleteTimerHandler(earthquake_timer_token); } Tk_CreateTimerHandler(earthquake_delay, (void (*)())StopEarthquake, (ClientData) 0); earthquake_timer_set = 1; } StopToolkit() { if (tk_mainInterp != NULL) { Eval("catch {DoStopMicropolis}"); } } Eval(char *buf) { int result = Tcl_Eval(tk_mainInterp, buf, 0, (char **) NULL); if (result != TCL_OK) { char *errorinfo = Tcl_GetVar(tk_mainInterp, "errorInfo", TCL_GLOBAL_ONLY); if (errorinfo == NULL) errorinfo = ""; fprintf(stderr, "Micropolis: error in TCL code: %s\n%s\n", tk_mainInterp->result, errorinfo); } return (result); } tk_main() { char *p, *msg; char buf[20]; char initCmd[256]; Tk_3DBorder border; tk_mainInterp = Tcl_CreateExtendedInterp(); #if 0 /* XXX: Figure out Extended TCL */ tclAppName = "Wish"; tclAppLongname = "Wish - Tk Shell"; tclAppVersion = TK_VERSION; Tcl_ShellEnvInit (interp, TCLSH_ABORT_STARTUP_ERR, name, 0, NULL, /* argv var already set */ fileName == NULL, /* interactive? */ NULL); /* Standard default file */ #endif MainWindow = Tk_CreateMainWindow(tk_mainInterp, FirstDisplay, "Micropolis"); if (MainWindow == NULL) { fprintf(stderr, "%s\n", tk_mainInterp->result); sim_really_exit(1); // Just sets tkMustExit and ExitReturn } Tk_SetClass(MainWindow, "Tk"); Tk_CreateEventHandler(MainWindow, StructureNotifyMask, StructureProc, (ClientData) NULL); /* Tk_DoWhenIdle(DelayedMap, (ClientData) NULL); */ Tk_GeometryRequest(MainWindow, 256, 256); border = Tk_Get3DBorder(tk_mainInterp, MainWindow, None, "gray75"); if (border == NULL) { Tcl_SetResult(tk_mainInterp, (char *) NULL, TCL_STATIC); Tk_SetWindowBackground(MainWindow, WhitePixelOfScreen(Tk_Screen(MainWindow))); } else { Tk_SetBackgroundFromBorder(MainWindow, border); } XSetForeground(Tk_Display(MainWindow), DefaultGCOfScreen(Tk_Screen(MainWindow)), BlackPixelOfScreen(Tk_Screen(MainWindow))); sim_command_init(); map_command_init(); editor_command_init(); graph_command_init(); date_command_init(); sprite_command_init(); #ifdef CAM cam_command_init(); #endif Tcl_CreateCommand(tk_mainInterp, "piemenu", Tk_PieMenuCmd, (ClientData)MainWindow, (void (*)()) NULL); Tcl_CreateCommand(tk_mainInterp, "interval", Tk_IntervalCmd, (ClientData)MainWindow, (void (*)()) NULL); sim = MakeNewSim(); sprintf(initCmd, "source %s/micropolis.tcl", ResourceDir); filename2UNIX(initCmd); if (Eval(initCmd)) { sim_exit(1); // Just sets tkMustExit and ExitReturn goto bail; } sim_init(); buffer = Tcl_CreateCmdBuf(); if (sim_tty) { Tk_CreateFileHandler(0, TK_READABLE, StdinProc, (ClientData) 0); } { char buf[1024]; sprintf(buf, "UIStartMicropolis {%s} {%s} {%s}", HomeDir, ResourceDir, HostName); filename2UNIX(buf); if (Eval(buf) != TCL_OK) { sim_exit(1); // Just sets tkMustExit and ExitReturn goto bail; } } if (sim_tty) { printf("sim:\n"); } fflush(stdout); Tk_MainLoop(); sim_exit(0); // Just sets tkMustExit and ExitReturn bail: if (buffer != NULL) { Tcl_DeleteCmdBuf(buffer); } Tcl_DeleteInterp(tk_mainInterp); } micropolis-activity/src/sim/w_keys.c0000664000076400007640000002130410724145723020057 0ustar simcitysimcity/* w_keys.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" static char LastKeys[5]; /* TODO: new city load city save city quit autobulldoze <0><1><2><3>... game speed map window graph window budget window evaluation window */ ResetLastKeys() { LastKeys[0] = ' '; LastKeys[1] = ' '; LastKeys[2] = ' '; LastKeys[3] = ' '; LastKeys[4] = '\0'; PunishCnt = 0; } /* comefrom: processEvent */ doKeyDown(SimView *view, short charCode) { LastKeys[0] = LastKeys[1]; LastKeys[1] = LastKeys[2]; LastKeys[2] = LastKeys[3]; LastKeys[3] = tolower(charCode); if (strcmp(LastKeys, "fund") == 0) { Spend(-10000); PunishCnt++; /* punish for cheating */ if (PunishCnt == 5) { PunishCnt = 0; MakeEarthquake(); } LastKeys[0] = '\0'; } else if (strcmp(LastKeys, "fart") == 0) { MakeSound("city", "Explosion-High"); MakeSound("city", "Explosion-Low"); MakeFire(); MakeFlood(); MakeTornado(); MakeEarthquake(); MakeMonster(); LastKeys[0] = '\0'; } else if (strcmp(LastKeys, "nuke") == 0) { int i, j; MakeSound("city", "Explosion-High"); MakeSound("city", "Explosion-Low"); for (i = 0; i < WORLD_X; i++) { for (j = 0; j < WORLD_Y; j++) { short tile = Map[i][j] & LOMASK; if ((tile >= RUBBLE) && ((tile < CHURCH - 4) || (tile > CHURCH + 4))) { if ((tile >= HBRIDGE && tile <= VBRIDGE) || (tile >= BRWH && tile <= LTRFBASE + 1) || (tile >= BRWV && tile <= BRWV + 2) || (tile >= BRWXXX1 && tile <= BRWXXX1 + 2) || (tile >= BRWXXX2 && tile <= BRWXXX2 + 2) || (tile >= BRWXXX3 && tile <= BRWXXX3 + 2) || (tile >= BRWXXX4 && tile <= BRWXXX4 + 2) || (tile >= BRWXXX5 && tile <= BRWXXX5 + 2) || (tile >= BRWXXX6 && tile <= BRWXXX6 + 2) || (tile >= BRWXXX7 && tile <= BRWXXX7 + 2)) { Map[i][j] = RIVER; } else { Map[i][j] = TINYEXP + ANIMBIT + BULLBIT + Rand(2); } } } } LastKeys[0] = '\0'; } else if (strcmp(LastKeys, "stop") == 0) { heat_steps = 0; LastKeys[0] = '\0'; Kick(); } else if (strcmp(LastKeys, "will") == 0) { int i; int n = 500; for (i = 0; i < n; i++) { int x1 = Rand(WORLD_X - 1); int y1 = Rand(WORLD_Y - 1); int x2 = Rand(WORLD_X - 1); int y2 = Rand(WORLD_Y - 1); short temp = Map[x1][y1]; Map[x1][y1] = Map[x2][y2]; Map[x2][y2] = temp; } Kick(); } else if (strcmp(LastKeys, "bobo") == 0) { heat_steps = 1; heat_flow = -1; heat_rule = 0; LastKeys[0] = '\0'; Kick(); } else if (strcmp(LastKeys, "boss") == 0) { heat_steps = 1; heat_flow = 1; heat_rule = 0; LastKeys[0] = '\0'; Kick(); } else if (strcmp(LastKeys, "mack") == 0) { heat_steps = 1; heat_flow = 0; heat_rule = 0; LastKeys[0] = '\0'; Kick(); } else if (strcmp(LastKeys, "donh") == 0) { heat_steps = 1; heat_flow = -1; heat_rule = 1; LastKeys[0] = '\0'; Kick(); } else if (strcmp(LastKeys, "patb") == 0) { heat_steps = 1; heat_flow = Rand(40) - 20; heat_rule = 0; LastKeys[0] = '\0'; Kick(); } else if (strcmp(LastKeys, "lucb") == 0) { heat_steps = 1; heat_flow = Rand(1000) - 500; heat_rule = 0; LastKeys[0] = '\0'; Kick(); } else if (strcmp(LastKeys, "olpc") == 0) { Spend(-1000000); } switch (charCode) { case 'X': case 'x': { short s = view->tool_state; if (++s > lastState) { s = firstState; } setWandState(view, s); break; } case 'Z': case 'z': { short s = view->tool_state; if (--s < firstState) { s = lastState; } setWandState(view, s); break; } /***** shift wand state to bull dozer *****/ case 'B': case 'b': case 'B'-'@': { if (view->tool_state_save == -1) { view->tool_state_save = view->tool_state; } setWandState(view, dozeState); break; } /***** shift wand state to roads *****/ case 'R': case 'r': case 'R'-'@': { if (view->tool_state_save == -1) { view->tool_state_save = view->tool_state; } setWandState(view, roadState); break; } /***** shift wand state to power *****/ case 'P': case 'p': case 'P'-'@': { if (view->tool_state_save == -1) { view->tool_state_save = view->tool_state; } setWandState(view, wireState); break; } /***** shift wand state to transit *****/ case 'T': case 't': case 'T'-'@': { if (view->tool_state_save == -1) { view->tool_state_save = view->tool_state; } setWandState(view, rrState); break; } #if 0 /***** shift wand state to query *****/ case 'Q': case 'q': case 'Q'-'@': { if (view->tool_state_save == -1) view->tool_state_save = view->tool_state; setWandState(view, queryState); break; } #endif case 27: { SoundOff(); break; } } } /* comefrom: processEvent */ doKeyUp(SimView *view, short charCode) { switch(charCode) { case 'b': case 'B': case 'B'-'@': case 'R': case 'r': case 'R'-'@': case 'P': case 'p': case 'P'-'@': case 'T': case 't': case 'T'-'@': case 'q': case 'Q': case 'Q'-'@': { if (view->tool_state_save != -1) { setWandState(view, view->tool_state_save); } view->tool_state_save = -1; break; } default: { break; } } } micropolis-activity/src/sim/w_sprite.c0000664000076400007640000010750110724145723020416 0ustar simcitysimcity/* w_sprite.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" Tcl_HashTable SpriteCmds; short CrashX, CrashY; int absDist; short Cycle; SimSprite *GlobalSprites[OBJN]; SimSprite *NewSprite(char *name, int type, int x, int y); #define TRA_GROOVE_X -39 #define TRA_GROOVE_Y 6 #define BUS_GROOVE_X -39 #define BUS_GROOVE_Y 6 #define SPRITECMD_ACCESS_INT(var) \ int SpriteCmd##var(SPRITE_ARGS) { \ int val; \ if ((argc != 2) && (argc != 3)) return (TCL_ERROR); \ if (argc == 3) { \ if (Tcl_GetInt(interp, argv[2], &val) != TCL_OK) return (TCL_ERROR); \ sprite->var = val; \ } \ sprintf(interp->result, "%d", sprite->var); \ return (TCL_OK); \ } #define SPRITECMD_GET_STR(var) \ int SpriteCmd##var(SPRITE_ARGS) { \ sprintf(interp->result, "%s", sprite->var); \ return (TCL_OK); \ } int DoSpriteCmd(CLIENT_ARGS) { SimSprite *sprite = (SimSprite *) clientData; Tcl_HashEntry *ent; int result = TCL_OK; int (*cmd)(); if (argc < 2) { return TCL_ERROR; } if (ent = Tcl_FindHashEntry(&SpriteCmds, argv[1])) { cmd = (int (*)())ent->clientData; Tk_Preserve((ClientData) sprite); result = cmd(sprite, interp, argc, argv); Tk_Release((ClientData) sprite); } else { Tcl_AppendResult(interp, "unknown command name: \"", argv[0], " ", argv[1], "\".", (char *) NULL); result = TCL_ERROR; } return result; } int SpriteCmd(CLIENT_ARGS) { SimSprite *sprite; int type; if ((argc != 3) || (Tcl_GetInt(interp, argv[2], &type) != TCL_OK) || (type < 1) || (type >= OBJN)) { return TCL_ERROR; } sprite = NewSprite(argv[1], type, 0, 0); sprite->frame = 0; Tcl_CreateCommand(interp, sprite->name, DoSpriteCmd, (ClientData) sprite, (void (*)()) NULL); interp->result = sprite->name; return TCL_OK; } SPRITECMD_GET_STR(name) SPRITECMD_ACCESS_INT(type) SPRITECMD_ACCESS_INT(frame) SPRITECMD_ACCESS_INT(x) SPRITECMD_ACCESS_INT(y) SPRITECMD_ACCESS_INT(width) SPRITECMD_ACCESS_INT(height) SPRITECMD_ACCESS_INT(x_offset) SPRITECMD_ACCESS_INT(y_offset) SPRITECMD_ACCESS_INT(x_hot) SPRITECMD_ACCESS_INT(y_hot) SPRITECMD_ACCESS_INT(orig_x) SPRITECMD_ACCESS_INT(orig_y) SPRITECMD_ACCESS_INT(dest_x) SPRITECMD_ACCESS_INT(dest_y) SPRITECMD_ACCESS_INT(count) SPRITECMD_ACCESS_INT(sound_count) SPRITECMD_ACCESS_INT(dir) SPRITECMD_ACCESS_INT(new_dir) SPRITECMD_ACCESS_INT(step) SPRITECMD_ACCESS_INT(flag) SPRITECMD_ACCESS_INT(control) SPRITECMD_ACCESS_INT(turn) SPRITECMD_ACCESS_INT(accel) SPRITECMD_ACCESS_INT(speed) int SpriteCmdExplode(SPRITE_ARGS) { ExplodeSprite(sprite); return TCL_OK; } int SpriteCmdInit(SPRITE_ARGS) { int x, y; if (argc != 4) { return (TCL_ERROR); } if ((Tcl_GetInt(interp, argv[2], &x) != TCL_OK) || (x < 0) || (x >= (WORLD_X <<4)) || (Tcl_GetInt(interp, argv[3], &y) != TCL_OK) || (y < 0) || (y >= (WORLD_Y <<4))) { return (TCL_ERROR); } InitSprite(sprite, x, y); return TCL_OK; } sprite_command_init() { int i; Tcl_CreateCommand(tk_mainInterp, "sprite", SpriteCmd, (ClientData)NULL, (void (*)()) NULL); Tcl_InitHashTable(&SpriteCmds, TCL_STRING_KEYS); #define SPRITE_CMD(cmd) HASHED_CMD(Sprite, cmd) SPRITE_CMD(name); SPRITE_CMD(type); SPRITE_CMD(frame); SPRITE_CMD(x); SPRITE_CMD(y); SPRITE_CMD(width); SPRITE_CMD(height); SPRITE_CMD(x_offset); SPRITE_CMD(y_offset); SPRITE_CMD(x_hot); SPRITE_CMD(y_hot); SPRITE_CMD(orig_x); SPRITE_CMD(orig_y); SPRITE_CMD(dest_x); SPRITE_CMD(dest_y); SPRITE_CMD(count); SPRITE_CMD(sound_count); SPRITE_CMD(dir); SPRITE_CMD(new_dir); SPRITE_CMD(step); SPRITE_CMD(flag); SPRITE_CMD(control); SPRITE_CMD(turn); SPRITE_CMD(accel); SPRITE_CMD(speed); SPRITE_CMD(Explode); SPRITE_CMD(Init); for (i = 0; i < OBJN; i++) { GlobalSprites[i] = NULL; } } SimSprite *FreeSprites = NULL; SimSprite * NewSprite(char *name, int type, int x, int y) { SimSprite *sprite; if (FreeSprites) { sprite = FreeSprites; FreeSprites = sprite->next; } else { sprite = (SimSprite *)ckalloc(sizeof (SimSprite)); } sprite->name = (char *)ckalloc(strlen(name) + 1); strcpy(sprite->name, name); sprite->type = type; InitSprite(sprite, x, y); sim->sprites++; sprite->next = sim->sprite; sim->sprite = sprite; return sprite; } InitSprite(SimSprite *sprite, int x, int y) { sprite->x = x; sprite->y = y; sprite->frame = 0; sprite->orig_x = sprite->orig_y = 0; sprite->dest_x = sprite->dest_y = 0; sprite->count = sprite->sound_count = 0; sprite->dir = sprite->new_dir = 0; sprite->step = sprite->flag = 0; sprite->control = -1; sprite->turn = 0; sprite->accel = 0; sprite->speed = 100; if (GlobalSprites[sprite->type] == NULL) { GlobalSprites[sprite->type] = sprite; } switch (sprite->type) { case TRA: sprite->width = sprite->height = 32; sprite->x_offset = 32; sprite->y_offset = -16; sprite->x_hot = 40; sprite->y_hot = -8; sprite->frame = 1; sprite->dir = 4; break; case SHI: sprite->width = sprite->height = 48; sprite->x_offset = 32; sprite->y_offset = -16; sprite->x_hot = 48; sprite->y_hot = 0; if (x < (4 <<4)) sprite->frame = 3; else if (x >= ((WORLD_X - 4) <<4)) sprite->frame = 7; else if (y < (4 <<4)) sprite->frame = 5; else if (y >= ((WORLD_Y - 4) <<4)) sprite->frame = 1; else sprite->frame = 3; sprite->new_dir = sprite->frame; sprite->dir = 10; sprite->count = 1; break; case GOD: sprite->width = sprite->height = 48; sprite->x_offset = 24; sprite->y_offset = 0; sprite->x_hot = 40; sprite->y_hot = 16; if (x > ((WORLD_X <<4) / 2)) { if (y > ((WORLD_Y <<4) / 2)) sprite->frame = 10; else sprite->frame = 7; } else if (y > ((WORLD_Y <<4) / 2)) sprite->frame = 1; else sprite->frame = 4; sprite->count = 1000; sprite->dest_x = PolMaxX <<4; sprite->dest_y = PolMaxY <<4; sprite->orig_x = sprite->x; sprite->orig_y = sprite->y; break; case COP: sprite->width = sprite->height = 32; sprite->x_offset = 32; sprite->y_offset = -16; sprite->x_hot = 40; sprite->y_hot = -8; sprite->frame = 5; sprite->count = 1500; sprite->dest_x = Rand((WORLD_X <<4) - 1); sprite->dest_y = Rand((WORLD_Y <<4) - 1); sprite->orig_x = x - 30; sprite->orig_y = y; break; case AIR: sprite->width = sprite->height = 48; sprite->x_offset = 24; sprite->y_offset = 0; sprite->x_hot = 48; sprite->y_hot = 16; if (x > ((WORLD_X - 20) <<4)) { sprite->x -= 100 + 48; sprite->dest_x = sprite->x - 200; sprite->frame = 7; } else { sprite->dest_x = sprite->x + 200; sprite->frame = 11; } sprite->dest_y = sprite->y; break; case TOR: sprite->width = sprite->height = 48; sprite->x_offset = 24; sprite->y_offset = 0; sprite->x_hot = 40; sprite->y_hot = 36; sprite->frame = 1; sprite->count = 200; break; case EXP: sprite->width = sprite->height = 48; sprite->x_offset = 24; sprite->y_offset = 0; sprite->x_hot = 40; sprite->y_hot = 16; sprite->frame = 1; break; case BUS: sprite->width = sprite->height = 32; sprite->x_offset = 30; sprite->y_offset = -18; sprite->x_hot = 40; sprite->y_hot = -8; sprite->frame = 1; sprite->dir = 1; break; } } DestroyAllSprites() { SimSprite *sprite; for (sprite = sim->sprite; sprite != NULL; sprite = sprite->next) { sprite->frame = 0; } } DestroySprite(SimSprite *sprite) { SimView *view; SimSprite **sp; for (view = sim->editor; view != NULL; view = view->next) if (view->follow == sprite) view->follow = NULL; if (GlobalSprites[sprite->type] == sprite) { GlobalSprites[sprite->type] = (SimSprite *)NULL; } if (sprite->name != NULL) { ckfree(sprite->name); sprite->name = NULL; } for (sp = &sim->sprite; *sp != NULL; sp = &((*sp)->next)) { if (sprite == (*sp)) { *sp = sprite->next; break; } } sprite->next = FreeSprites; FreeSprites = sprite; } SimSprite * GetSprite(int type) { SimSprite *sprite; if (((sprite = GlobalSprites[type]) == NULL) || (sprite->frame == 0)) return (SimSprite *)NULL; else return sprite; } SimSprite * MakeSprite(int type, int x, int y) { SimSprite *sprite; if ((sprite = GlobalSprites[type]) == NULL) { sprite = NewSprite("", type, x, y); } else { InitSprite(sprite, x, y); } return sprite; } SimSprite * MakeNewSprite(int type, int x, int y) { SimSprite *sprite; sprite = NewSprite("", type, x, y); return sprite; } DrawObjects(SimView *view) { SimSprite *sprite; /* XXX: sort these by layer */ /* if (z = Oframe[TRA]) DrawTrain(view, z); if (z = Oframe[SHI]) DrawBoat(view, z); if (z = Oframe[GOD]) DrawMonster(view, z); if (z = Oframe[COP]) DrawCopter(view, z); if (z = Oframe[AIR]) DrawPlane(view, z); if (z = Oframe[TOR]) DrawTor(view, z); if (z = Oframe[EXP]) DrawExp(view, z); */ for (sprite = sim->sprite; sprite != NULL; sprite = sprite->next) { DrawSprite(view, sprite); } } DrawSprite(SimView *view, SimSprite *sprite) { Pixmap pict, mask; int x, y, i; if (sprite->frame == 0) return; i = (sprite->frame - 1) * 2; pict = view->x->objects[sprite->type][i]; mask = view->x->objects[sprite->type][i + 1]; x = sprite->x - ((view->tile_x <<4) - view->screen_x) + sprite->x_offset; y = sprite->y - ((view->tile_y <<4) - view->screen_y) + sprite->y_offset; XSetClipMask(view->x->dpy, view->x->gc, mask); XSetClipOrigin(view->x->dpy, view->x->gc, x, y); XCopyArea(view->x->dpy, pict, view->pixmap2, view->x->gc, 0, 0, sprite->width, sprite->height, x, y); XSetClipMask(view->x->dpy, view->x->gc, None); XSetClipOrigin(view->x->dpy, view->x->gc, 0, 0); } short GetChar(int x, int y) { x >>= 4; y >>= 4; if (!TestBounds(x, y)) return(-1); else return(Map[x][y] & LOMASK); } short TurnTo(int p, int d) { if (p == d) return(p); if (p < d) if ((d - p) < 4) p++; else p--; else if ((p - d) < 4) p--; else p++; if (p > 8) p = 1; if (p < 1) p = 8; return(p); } TryOther(int Tpoo, int Told, int Tnew) { register short z; z = Told + 4; if (z > 8) z -= 8; if (Tnew != z) return(0); if ((Tpoo == POWERBASE) || (Tpoo == POWERBASE + 1) || (Tpoo == RAILBASE) || (Tpoo == RAILBASE + 1)) return(1); return(0); } short SpriteNotInBounds(SimSprite *sprite) { int x = sprite->x + sprite->x_hot; int y = sprite->y + sprite->y_hot; if ((x < 0) || (y < 0) || (x >= (WORLD_X <<4)) || (y >= (WORLD_Y <<4))) { return (1); } return (0); } short GetDir(int orgX, int orgY, int desX, int desY) { static short Gdtab[13] = { 0, 3, 2, 1, 3, 4, 5, 7, 6, 5, 7, 8, 1 }; int dispX, dispY, z; dispX = desX - orgX; dispY = desY - orgY; if (dispX < 0) if (dispY < 0) z = 11; else z = 8; else if (dispY < 0) z = 2; else z = 5; if (dispX < 0) dispX = -dispX; if (dispY < 0) dispY = -dispY; absDist = dispX + dispY; if ((dispX <<1) < dispY) z++; else if ((dispY <<1) < dispY) z--; if ((z < 0) || (z > 12)) z = 0; return (Gdtab[z]); } GetDis(int x1, int y1, int x2, int y2) { register short dispX, dispY; if (x1 > x2) dispX = x1 - x2; else dispX = x2 - x1; if (y1 > y2) dispY = y1 - y2; else dispY = y2 - y1; return (dispX + dispY); } int CheckSpriteCollision(SimSprite *s1, SimSprite *s2) { if ((s1->frame != 0) && (s2->frame != 0) && GetDis(s1->x + s1->x_hot, s1->y + s1->y_hot, s2->x + s2->x_hot, s2->y + s2->y_hot) < 30) return(1); return(0); } MoveObjects() { SimSprite *sprite; if (!SimSpeed) return; Cycle++; for (sprite = sim->sprite; sprite != NULL;) { if (sprite->frame) { switch (sprite->type) { case TRA: DoTrainSprite(sprite); break; case COP: DoCopterSprite(sprite); break; case AIR: DoAirplaneSprite(sprite); break; case SHI: DoShipSprite(sprite); break; case GOD: DoMonsterSprite(sprite); break; case TOR: DoTornadoSprite(sprite); break; case EXP: DoExplosionSprite(sprite); break; case BUS: DoBusSprite(sprite); break; } sprite = sprite->next; } else { if (sprite->name[0] == '\0') { SimSprite *s = sprite; sprite = sprite->next; DestroySprite(s); } else { sprite = sprite->next; } } } } DoTrainSprite(SimSprite *sprite) { static short Cx[4] = { 0, 16, 0, -16 }; static short Cy[4] = { -16, 0, 16, 0 }; static short Dx[5] = { 0, 4, 0, -4, 0 }; static short Dy[5] = { -4, 0, 4, 0, 0 }; static short TrainPic2[5] = { 1, 2, 1, 2, 5 }; register short z, dir, dir2; short c; if ((sprite->frame == 3) || (sprite->frame == 4)) sprite->frame = TrainPic2[sprite->dir]; sprite->x += Dx[sprite->dir]; sprite->y += Dy[sprite->dir]; if (!(Cycle & 3)) { dir = Rand16() & 3; for (z = dir; z < (dir + 4); z++) { dir2 = z & 3; if (sprite->dir != 4) { if (dir2 == ((sprite->dir + 2) & 3)) continue; } c = GetChar(sprite->x + Cx[dir2] + 48, sprite->y + Cy[dir2]); if (((c >= RAILBASE) && (c <= LASTRAIL)) || /* track? */ (c == RAILVPOWERH) || (c == RAILHPOWERV)) { if ((sprite->dir != dir2) && (sprite->dir != 4)) { if ((sprite->dir + dir2) == 3) sprite->frame = 3; else sprite->frame = 4; } else sprite->frame = TrainPic2[dir2]; if ((c == RAILBASE) || (c == (RAILBASE + 1))) sprite->frame = 5; sprite->dir = dir2; return; } } if (sprite->dir == 4) { sprite->frame = 0; return; } sprite->dir = 4; } } DoCopterSprite(SimSprite *sprite) { static short CDx[9] = { 0, 0, 3, 5, 3, 0, -3, -5, -3 }; static short CDy[9] = { 0, -5, -3, 0, 3, 5, 3, 0, -3 }; register short z, d, x, y; if (sprite->sound_count > 0) sprite->sound_count--; if (sprite->control < 0) { if (sprite->count > 0) sprite->count--; if (!sprite->count) { /* Attract copter to monster and tornado so it blows up more often */ SimSprite *s = GetSprite(GOD); if (s != NULL) { sprite->dest_x = s->x; sprite->dest_y = s->y; } else { s = GetSprite(TOR); if (s != NULL) { sprite->dest_x = s->x; sprite->dest_y = s->y; } else { sprite->dest_x = sprite->orig_x; sprite->dest_y = sprite->orig_y; } } } if (!sprite->count) { /* land */ GetDir(sprite->x, sprite->y, sprite->orig_x, sprite->orig_y); if (absDist < 30) { sprite->frame = 0; return; } } } else { GetDir(sprite->x, sprite->y, sprite->dest_x, sprite->dest_y); if (absDist < 16) { sprite->dest_x = sprite->orig_x; sprite->dest_y = sprite->orig_y; sprite->control = -1; } } if (!sprite->sound_count) { /* send report */ x = (sprite->x + 48) >>5; y = sprite->y >>5; if ((x >= 0) && (x < (WORLD_X >>1)) && (y >= 0) && (y < (WORLD_Y >>1))) { /* Don changed from 160 to 170 to shut the #$%#$% thing up! */ if ((TrfDensity[x][y] > 170) && ((Rand16() & 7) == 0)) { SendMesAt(-41, (x <<1) + 1, (y <<1) + 1); MakeSound("city", "HeavyTraffic"); /* chopper */ sprite->sound_count = 200; } } } z = sprite->frame; if (!(Cycle & 3)) { d = GetDir(sprite->x, sprite->y, sprite->dest_x, sprite->dest_y); z = TurnTo(z, d); sprite->frame = z; } sprite->x += CDx[z]; sprite->y += CDy[z]; } DoAirplaneSprite(SimSprite *sprite) { static short CDx[12] = { 0, 0, 6, 8, 6, 0, -6, -8, -6, 8, 8, 8 }; static short CDy[12] = { 0, -8, -6, 0, 6, 8, 6, 0, -6, 0, 0, 0 }; register short z, d; z = sprite->frame; if (!(Cycle % 5)) { if (z > 8) { /* TakeOff */ z--; if (z < 9) z = 3; sprite->frame = z; } else { /* goto destination */ d = GetDir(sprite->x, sprite->y, sprite->dest_x, sprite->dest_y); z = TurnTo(z, d); sprite->frame = z; } } if (absDist < 50) { /* at destination */ sprite->dest_x = Rand((WORLD_X * 16) + 100) - 50; sprite->dest_y = Rand((WORLD_Y * 16) + 100) - 50; } /* deh added test for !Disasters */ if (!NoDisasters) { SimSprite *s; int explode = 0; for (s = sim->sprite; s != NULL; s = s->next) { if ((s->frame != 0) && ((s->type == COP) || ((sprite != s) && (s->type == AIR))) && CheckSpriteCollision(sprite, s)) { ExplodeSprite(s); explode = 1; } } if (explode) ExplodeSprite(sprite); } sprite->x += CDx[z]; sprite->y += CDy[z]; if (SpriteNotInBounds(sprite)) sprite->frame = 0; } DoShipSprite(SimSprite *sprite) { static short BDx[9] = { 0, 0, 1, 1, 1, 0, -1, -1, -1 }; static short BDy[9] = { 0, -1, -1, 0, 1, 1, 1, 0, -1 }; static short BPx[9] = { 0, 0, 2, 2, 2, 0, -2, -2, -2 }; static short BPy[9] = { 0, -2, -2, 0, 2, 2, 2, 0, -2 }; static short BtClrTab[8] = { RIVER, CHANNEL, POWERBASE, POWERBASE + 1, RAILBASE, RAILBASE + 1, BRWH, BRWV }; register short x, y, z, t = RIVER; short tem, pem; if (sprite->sound_count > 0) sprite->sound_count--; if (!sprite->sound_count) { if ((Rand16() & 3) == 1) { if ((ScenarioID == 2) && /* San Francisco */ (Rand(10) < 5)) { MakeSound("city", "HonkHonk-Low -speed 80"); } else { MakeSound("city", "HonkHonk-Low"); } } sprite->sound_count = 200; } if (sprite->count > 0) sprite->count--; if (!sprite->count) { sprite->count = 9; if (sprite->frame != sprite->new_dir) { sprite->frame = TurnTo(sprite->frame, sprite->new_dir); return; } tem = Rand16() & 7; for (pem = tem; pem < (tem + 8); pem++) { z = (pem & 7) + 1; if (z == sprite->dir) continue; x = ((sprite->x + (48 - 1)) >>4) + BDx[z]; y = (sprite->y >>4) + BDy[z]; if (TestBounds(x, y)) { t = Map[x][y] & LOMASK; if ((t == CHANNEL) || (t == BRWH) || (t == BRWV) || TryOther(t, sprite->dir, z)) { sprite->new_dir = z; sprite->frame = TurnTo(sprite->frame, sprite->new_dir); sprite->dir = z + 4; if (sprite->dir > 8) sprite->dir -= 8; break; } } } if (pem == (tem + 8)) { sprite->dir = 10; sprite->new_dir = (Rand16() & 7) + 1; } } else { z = sprite->frame; if (z == sprite->new_dir) { sprite->x += BPx[z]; sprite->y += BPy[z]; } } if (SpriteNotInBounds(sprite)) { sprite->frame = 0; return; } for (z = 0; z < 8; z++) { if (t == BtClrTab[z]) break; if (z == 7) { ExplodeSprite(sprite); Destroy(sprite->x + 48, sprite->y); } } } DoMonsterSprite(SimSprite *sprite) { static short Gx[5] = { 2, 2, -2, -2, 0 }; static short Gy[5] = { -2, 2, 2, -2, 0 }; static short ND1[4] = { 0, 1, 2, 3 }; static short ND2[4] = { 1, 2, 3, 0 }; static short nn1[4] = { 2, 5, 8, 11 }; static short nn2[4] = { 11, 2, 5, 8 }; register short d, z, c; if (sprite->sound_count > 0) sprite->sound_count--; if (sprite->control < 0) { /* business as usual */ if (sprite->control == -2) { d = (sprite->frame - 1) / 3; z = (sprite->frame - 1) % 3; if (z == 2) sprite->step = 0; if (z == 0) sprite->step = 1; if (sprite->step) z++; else z--; c = GetDir(sprite->x, sprite->y, sprite->dest_x, sprite->dest_y); if (absDist < 18) { sprite->control = -1; sprite->count = 1000; sprite->flag = 1; sprite->dest_x = sprite->orig_x; sprite->dest_y = sprite->orig_y; } else { c = (c - 1) / 2; if (((c != d) && (!Rand(5))) || (!Rand(20))) { int diff = (c - d) & 3; if ((diff == 1) || (diff == 3)) { d = c; } else { if (Rand16() & 1) d++; else d--; d &= 3; } } else { if (!Rand(20)) { if (Rand16() & 1) d++; else d--; d &= 3; } } } } else { d = (sprite->frame - 1) / 3; if (d < 4) { /* turn n s e w */ z = (sprite->frame - 1) % 3; if (z == 2) sprite->step = 0; if (z == 0) sprite->step = 1; if (sprite->step) z++; else z--; GetDir(sprite->x, sprite->y, sprite->dest_x, sprite->dest_y); if (absDist < 60) { if (sprite->flag == 0) { sprite->flag = 1; sprite->dest_x = sprite->orig_x; sprite->dest_y = sprite->orig_y; } else { sprite->frame = 0; return; } } c = GetDir(sprite->x, sprite->y, sprite->dest_x, sprite->dest_y); c = (c - 1) / 2; if ((c != d) && (!Rand(10))) { if (Rand16() & 1) z = ND1[d]; else z = ND2[d]; d = 4; if (!sprite->sound_count) { MakeSound("city", "Monster -speed [MonsterSpeed]"); /* monster */ sprite->sound_count = 50 + Rand(100); } } } else { d = 4; c = sprite->frame; z = (c - 13) & 3; if (!(Rand16() & 3)) { if (Rand16() & 1) z = nn1[z]; else z = nn2[z]; d = (z - 1) / 3; z = (z - 1) % 3; } } } } else { /* somebody's taken control of the monster */ d = sprite->control; z = (sprite->frame - 1) % 3; if (z == 2) sprite->step = 0; if (z == 0) sprite->step = 1; if (sprite->step) z++; else z--; } z = (((d * 3) + z) + 1); if (z > 16) z = 16; sprite->frame = z; sprite->x += Gx[d]; sprite->y += Gy[d]; if (sprite->count > 0) sprite->count--; c = GetChar(sprite->x + sprite->x_hot, sprite->y + sprite->y_hot); if ((c == -1) || ((c == RIVER) && (sprite->count != 0) && (sprite->control == -1))) { sprite->frame = 0; /* kill zilla */ } { SimSprite *s; for (s = sim->sprite; s != NULL; s = s->next) { if ((s->frame != 0) && ((s->type == AIR) || (s->type == COP) || (s->type == SHI) || (s->type == TRA)) && CheckSpriteCollision(sprite, s)) { ExplodeSprite(s); } } } Destroy(sprite->x + 48, sprite->y + 16); } DoTornadoSprite(SimSprite *sprite) { static short CDx[9] = { 2, 3, 2, 0, -2, -3 }; static short CDy[9] = { -2, 0, 2, 3, 2, 0 }; register short z; z = sprite->frame; if (z == 2) /* cycle animation... post Rel */ if (sprite->flag) z = 3; else z = 1; else { if (z == 1) sprite->flag = 1; else sprite->flag = 0; z = 2; } if (sprite->count > 0) sprite->count--; sprite->frame = z; { SimSprite *s; for (s = sim->sprite; s != NULL; s = s->next) { if ((s->frame != 0) && ((s->type == AIR) || (s->type == COP) || (s->type == SHI) || (s->type == TRA)) && CheckSpriteCollision(sprite, s)) { ExplodeSprite(s); } } } z = Rand(5); sprite->x += CDx[z]; sprite->y += CDy[z]; if (SpriteNotInBounds(sprite)) sprite->frame = 0; if ((sprite->count != 0) && (!Rand(500))) sprite->frame = 0; Destroy(sprite->x + 48, sprite->y + 40); } DoExplosionSprite(SimSprite *sprite) { short x, y; if (!(Cycle & 1)) { if (sprite->frame == 1) { MakeSound("city", "Explosion-High"); /* explosion */ x = (sprite->x >>4) + 3; y = (sprite->y >>4); SendMesAt(32, x, y); } sprite->frame++; } if (sprite->frame > 6) { sprite->frame = 0; StartFire(sprite->x + 48 - 8, sprite->y + 16); StartFire(sprite->x + 48 - 24, sprite->y); StartFire(sprite->x + 48 + 8, sprite->y); StartFire(sprite->x + 48 - 24, sprite->y + 32); StartFire(sprite->x + 48 + 8, sprite->y + 32); return; } } DoBusSprite(SimSprite *sprite) { static short Dx[5] = { 0, 1, 0, -1, 0 }; static short Dy[5] = { -1, 0, 1, 0, 0 }; static short Dir2Frame[4] = { 1, 2, 1, 2 }; register int dir, dir2; int c, dx, dy, crossed, tx, ty, otx, oty; int turned = 0; int speed, z; #ifdef DEBUGBUS printf("Bus dir %d turn %d frame %d\n", sprite->dir, sprite->turn, sprite->frame); #endif if (sprite->turn) { if (sprite->turn < 0) { /* ccw */ if (sprite->dir & 1) { /* up or down */ sprite->frame = 4; } else { /* left or right */ sprite->frame = 3; } sprite->turn++; sprite->dir = (sprite->dir - 1) & 3; } else { /* cw */ if (sprite->dir & 1) { /* up or down */ sprite->frame = 3; } else { /* left or right */ sprite->frame = 4; } sprite->turn--; sprite->dir = (sprite->dir + 1) & 3; } turned = 1; } else { /* finish turn */ if ((sprite->frame == 3) || (sprite->frame == 4)) { turned = 1; sprite->frame = Dir2Frame[sprite->dir]; } } if (sprite->speed == 0) { /* brake */ dx = 0; dy = 0; } else { /* cruise at traffic speed */ tx = (sprite->x + sprite->x_hot) >>5; ty = (sprite->y + sprite->y_hot) >>5; if ((tx >= 0) && (tx < (WORLD_X >>1)) && (ty >= 0) && (ty < (WORLD_Y >>1))) { z = TrfDensity[tx][ty] >>6; if (z > 1) z--; } else z = 0; switch (z) { case 0: speed = 8; break; case 1: speed = 4; break; case 2: speed = 1; break; } /* govern speed */ if (speed > sprite->speed) speed = sprite->speed; if (turned) { #ifdef DEBUGBUS printf("turned\n"); #endif if (speed > 1) speed = 1; dx = Dx[sprite->dir] * speed; dy = Dy[sprite->dir] * speed; } else { dx = Dx[sprite->dir] * speed; dy = Dy[sprite->dir] * speed; tx = (sprite->x + sprite->x_hot) >>4; ty = (sprite->y + sprite->y_hot) >>4; /* drift into the right lane */ switch (sprite->dir) { case 0: /* up */ z = ((tx <<4) + 4) - (sprite->x + sprite->x_hot); if (z < 0) dx = -1; else if (z > 0) dx = 1; #ifdef DEBUGBUS printf("moving up x %x z %d dx %d\n", sprite->x + sprite->x_hot, z, dx); #endif break; case 1: /* right */ z = ((ty <<4) + 4) - (sprite->y + sprite->y_hot); if (z < 0) dy = -1; else if (z > 0) dy = 1; #ifdef DEBUGBUS printf("moving right y %x z %d dy %d\n", sprite->y + sprite->y_hot, z, dy); #endif break; case 2: /* down */ z = ((tx <<4)) - (sprite->x + sprite->x_hot); if (z < 0) dx = -1; else if (z > 0) dx = 1; #ifdef DEBUGBUS printf("moving down x %x z %d dx %d\n", sprite->x + sprite->x_hot, z, dx); #endif break; case 3: /* left */ z = ((ty <<4)) - (sprite->y + sprite->y_hot); if (z < 0) dy = -1; else if (z > 0) dy = 1; #ifdef DEBUGBUS printf("moving left y %x z %d dy %d\n", sprite->y + sprite->y_hot, z, dy); #endif break; } } } #ifdef DEBUGBUS printf("speed dx %d dy %d\n", dx, dy); #endif #define AHEAD 8 otx = (sprite->x + sprite->x_hot + (Dx[sprite->dir] * AHEAD)) >>4; oty = (sprite->y + sprite->y_hot + (Dy[sprite->dir] * AHEAD)) >>4; if (otx < 0) otx = 0; else if (otx >= WORLD_X) otx = WORLD_X - 1; if (oty < 0) oty = 0; else if (oty >= WORLD_Y) oty = WORLD_Y - 1; tx = (sprite->x + sprite->x_hot + dx + (Dx[sprite->dir] * AHEAD)) >>4; ty = (sprite->y + sprite->y_hot + dy + (Dy[sprite->dir] * AHEAD)) >>4; if (tx < 0) tx = 0; else if (tx >= WORLD_X) tx = WORLD_X - 1; if (ty < 0) ty = 0; else if (ty >= WORLD_Y) ty = WORLD_Y - 1; if ((tx != otx) || (ty != oty)) { #ifdef DEBUGBUS printf("drive from tile %d %d to %d %d\n", otx, oty, tx, ty); #endif z = CanDriveOn(tx, ty); if (z == 0) { /* can't drive forward into a new tile */ if (speed == 8) { bulldozer_tool(NULL, tx, ty); } else { } } else { /* drive forward into a new tile */ if (z > 0) { /* smooth */ } else { /* bumpy */ dx /= 2; dy /= 2; } } } tx = (sprite->x + sprite->x_hot + dx) >>4; ty = (sprite->y + sprite->y_hot + dy) >>4; z = CanDriveOn(tx, ty); if (z > 0) { /* cool, cruise along */ } else { if (z < 0) { /* bumpy */ } else { /* something in the way */ } } sprite->x += dx; sprite->y += dy; if (!NoDisasters) { SimSprite *s; int explode = 0; for (s = sim->sprite; s != NULL; s = s->next) { if ((sprite != s) && (s->frame != 0) && ((s->type == BUS) || ((s->type == TRA) && (s->frame != 5))) && CheckSpriteCollision(sprite, s)) { ExplodeSprite(s); explode = 1; } } if (explode) ExplodeSprite(sprite); } } int CanDriveOn(int x, int y) { int tile; if (!TestBounds(x, y)) return 0; tile = Map[x][y] & LOMASK; if (((tile >= ROADBASE) && (tile <= LASTROAD) && (tile != BRWH) && (tile != BRWV)) || (tile == HRAILROAD) || (tile == VRAILROAD)) return 1; if ((tile == DIRT) || tally(tile)) return -1; return 0; } ExplodeSprite(SimSprite *sprite) { int x, y; sprite->frame = 0; x = sprite->x + sprite->x_hot; y = sprite->y + sprite->y_hot; MakeExplosionAt(x, y); x = (x >>4); y = (y >>4); switch (sprite->type) { case AIR: CrashX = x; CrashY = y; SendMesAt(-24, x, y); break; case SHI: CrashX = x; CrashY = y; SendMesAt(-25, x, y); break; case TRA: CrashX = x; CrashY = y; SendMesAt(-26, x, y); break; case COP: CrashX = x; CrashY = y; SendMesAt(-27, x, y); break; case BUS: CrashX = x; CrashY = y; SendMesAt(-26, x, y); /* XXX for now */ break; } MakeSound("city", "Explosion-High"); /* explosion */ return; } int checkWet(int x) { if ((x == POWERBASE) || (x == POWERBASE + 1) || (x == RAILBASE) || (x == RAILBASE + 1) || (x == BRWH) || (x == BRWV)) return(1); else return(0); } Destroy(int ox, int oy) { short t, z, x, y; x = ox >>4; y = oy >>4; if (!TestBounds(x, y)) return; z = Map[x][y]; t = z & LOMASK; if (t >= TREEBASE) { /* TILE_IS_BRIDGE(t) */ if (!(z & BURNBIT)) { if ((t >= ROADBASE) && (t <= LASTROAD)) Map[x][y] = RIVER; return; } if (z & ZONEBIT) { OFireZone(x, y, z); if (t > RZB) { MakeExplosionAt(ox, oy); } } if (checkWet(t)) Map[x][y] = RIVER; else Map[x][y] = (DoAnimation ? TINYEXP : (LASTTINYEXP - 3)) | BULLBIT | ANIMBIT; } } OFireZone(int Xloc, int Yloc, int ch) { register short Xtem, Ytem; short x, y, XYmax; RateOGMem[Xloc >>3][Yloc >>3] -= 20; ch &= LOMASK; if (ch < PORTBASE) XYmax = 2; else if (ch == AIRPORT) XYmax = 5; else XYmax = 4; for (x = -1; x < XYmax; x++) for (y = -1; y < XYmax; y++) { Xtem = Xloc + x; Ytem = Yloc + y; if ((Map[Xtem][Ytem] & LOMASK) >= ROADBASE) Map[Xtem][Ytem] |= BULLBIT; } } StartFire(int x, int y) { register t, z; x >>= 4; y >>= 4; if ((x >= WORLD_X) || (y >= WORLD_Y) || (x < 0) || (y < 0)) return; z = Map[x][y]; t = z & LOMASK; if ((!(z & BURNBIT)) && (t != 0)) return; if (z & ZONEBIT) return; Map[x][y] = FIRE + (Rand16() & 3) + ANIMBIT; } GenerateTrain(int x, int y) { if ((TotalPop > 20) && (GetSprite(TRA) == NULL) && (!Rand(25))) { MakeSprite(TRA, (x <<4) + TRA_GROOVE_X, (y <<4) + TRA_GROOVE_Y); } } GenerateBus(int x, int y) { if ((GetSprite(BUS) == NULL) && (!Rand(25))) { MakeSprite(BUS, (x <<4) + BUS_GROOVE_X, (y <<4) + BUS_GROOVE_Y); } } GenerateShip(void) { register short x, y; if (!(Rand16() & 3)) for (x = 4; x < WORLD_X - 2; x++) if (Map[x][0] == CHANNEL) { MakeShipHere(x, 0); return; } if (!(Rand16() & 3)) for (y = 1; y < WORLD_Y - 2; y++) if (Map[0][y] == CHANNEL) { MakeShipHere(0, y); return; } if (!(Rand16() & 3)) for (x = 4; x < WORLD_X - 2; x++) if (Map[x][WORLD_Y - 1] == CHANNEL) { MakeShipHere(x, WORLD_Y - 1); return; } if (!(Rand16() & 3)) for (y = 1; y < WORLD_Y - 2; y++) if (Map[WORLD_X - 1][y] == CHANNEL) { MakeShipHere(WORLD_X - 1, y); return; } } MakeShipHere(int x, int y, int z) { MakeSprite(SHI, (x <<4) - (48 - 1), (y <<4)); } MakeMonster(void) { register x, y, z, done = 0; SimSprite *sprite; if ((sprite = GetSprite(GOD)) != NULL) { sprite->sound_count = 1; sprite->count = 1000; sprite->dest_x = PolMaxX <<4; sprite->dest_y = PolMaxY <<4; return; } for (z = 0; z < 300; z++) { x = Rand(WORLD_X - 20) + 10; y = Rand(WORLD_Y - 10) + 5; if ((Map[x][y] == RIVER) || (Map[x][y] == RIVER + BULLBIT)) { MonsterHere(x, y); done = 1; break; } } if (!done == 0) MonsterHere(60, 50); } MonsterHere(int x, int y) { short z; MakeSprite(GOD, (x <<4) + 48, (y <<4)); ClearMes(); SendMesAt(-21, x + 5, y); } GenerateCopter(int x, int y) { if (GetSprite(COP) != NULL) return; MakeSprite(COP, (x <<4), (y <<4) + 30); } GeneratePlane(int x, int y) { if (GetSprite(AIR) != NULL) return; MakeSprite(AIR, (x <<4) + 48, (y <<4) + 12); } MakeTornado(void) { short x, y; SimSprite *sprite; if ((sprite = GetSprite(TOR)) != NULL) { sprite->count = 200; return; } x = Rand((WORLD_X <<4) - 800) + 400; y = Rand((WORLD_Y <<4) - 200) + 100; MakeSprite(TOR, x, y); ClearMes(); SendMesAt(-22, (x >>4) + 3, (y >>4) + 2); } MakeExplosion(int x, int y) { if ((x >= 0) && (x < WORLD_X) && (y >= 0) && (y < WORLD_Y)) { MakeExplosionAt((x << 4) + 8, (y << 4) + 8); } } MakeExplosionAt(int x, int y) { MakeNewSprite(EXP, x - 40, y - 16); } micropolis-activity/src/sim/s_traf.c0000664000076400007640000002103610724145723020036 0ustar simcitysimcity/* s_traf.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" /* Traffic Generation */ #define MAXDIS 30 short PosStackN, SMapXStack[MAXDIS+1], SMapYStack[MAXDIS+1]; short LDir; short Zsource; short TrafMaxX, TrafMaxY; /* comefrom: DoIndustrial DoCommercial DoResidential */ MakeTraf(int Zt) { short xtem, ytem; xtem = SMapX; ytem = SMapY; Zsource = Zt; PosStackN = 0; #if 0 if ((!Rand(2)) && FindPTele()) { /* printf("Telecommute!\n"); */ return (TRUE); } #endif if (FindPRoad()) { /* look for road on zone perimeter */ if (TryDrive()) { /* attempt to drive somewhere */ SetTrafMem(); /* if sucessful, inc trafdensity */ SMapX = xtem; SMapY = ytem; return (TRUE); /* traffic passed */ } SMapX = xtem; SMapY = ytem; return (FALSE); /* traffic failed */ } else return (-1); /* no road found */ } /* comefrom: MakeTraf */ SetTrafMem(void) { register short x, z; for (x = PosStackN; x > 0; x--) { PullPos(); if (TestBounds(SMapX, SMapY)) { z = Map[SMapX][SMapY] & LOMASK; if ((z >= ROADBASE) && (z < POWERBASE)) { SimSprite *sprite; /* check for rail */ z = TrfDensity[SMapX >>1][SMapY >>1]; z += 50; if ((z > 240) && (!Rand(5))) { z = 240; TrafMaxX = SMapX <<4; TrafMaxY = SMapY <<4; if (((sprite = GetSprite(COP)) != NULL) && (sprite->control == -1)) { sprite->dest_x = TrafMaxX; sprite->dest_y = TrafMaxY; } } TrfDensity[SMapX >>1][SMapY >>1] = z; } } } } /* comefrom: TryGo */ PushPos(void) { PosStackN++; SMapXStack[PosStackN] = SMapX; SMapYStack[PosStackN] = SMapY; } /* comefrom: SetTrafMem */ PullPos(void) { SMapX = SMapXStack[PosStackN]; SMapY = SMapYStack[PosStackN]; PosStackN--; } /* comefrom: DoSPZone MakeTraf */ FindPRoad(void) /* look for road on edges of zone */ { static short PerimX[12] = {-1, 0, 1, 2, 2, 2, 1, 0,-1,-2,-2,-2}; static short PerimY[12] = {-2,-2,-2,-1, 0, 1, 2, 2, 2, 1, 0,-1}; register short tx, ty, z; for (z = 0; z < 12; z++) { tx = SMapX + PerimX[z]; ty = SMapY + PerimY[z]; if (TestBounds(tx, ty)) { if (RoadTest(Map[tx][ty])) { SMapX = tx; SMapY = ty; return (TRUE); } } } return (FALSE); } FindPTele(void) /* look for telecommunication on edges of zone */ { static short PerimX[12] = {-1, 0, 1, 2, 2, 2, 1, 0,-1,-2,-2,-2}; static short PerimY[12] = {-2,-2,-2,-1, 0, 1, 2, 2, 2, 1, 0,-1}; register short tx, ty, z, tile; for (z = 0; z < 12; z++) { tx = SMapX + PerimX[z]; ty = SMapY + PerimY[z]; if (TestBounds(tx, ty)) { tile = Map[tx][ty] & LOMASK; if ((tile >= TELEBASE) && (tile <= TELELAST)) { return (TRUE); } } } return (FALSE); } /* comefrom: MakeTraf */ TryDrive(void) { short z; LDir = 5; for (z = 0; z < MAXDIS; z++) { /* Maximum distance to try */ if (TryGo(z)) { /* if it got a road */ if (DriveDone()) /* if destination is reached */ return (TRUE); /* pass */ } else { if (PosStackN) { /* deadend , backup */ PosStackN--; z += 3; } else return (FALSE); /* give up at start */ } } return (FALSE); /* gone maxdis */ } /* comefrom: TryDrive */ TryGo(int z) { short x, rdir, realdir; #if 0 rdir = Rand(3); /* XXX: Heaviest user of Rand */ #else rdir = Rand16() & 3; #endif for (x = rdir; x < (rdir + 4); x++) { /* for the 4 directions */ realdir = x & 3; if (realdir == LDir) continue; /* skip last direction */ if (RoadTest(GetFromMap(realdir))) { MoveMapSim(realdir); LDir = (realdir + 2) & 3; if (z & 1) /* save pos every other move */ PushPos(); return (TRUE); } } return (FALSE); } /* comefrom: TryGo DriveDone */ GetFromMap(int x) { switch (x) { case 0: if (SMapY > 0) return (Map[SMapX][SMapY - 1] & LOMASK); return (FALSE); case 1: if (SMapX < (WORLD_X - 1)) return (Map[SMapX + 1][SMapY] & LOMASK); return (FALSE); case 2: if (SMapY < (WORLD_Y - 1)) return (Map[SMapX][SMapY + 1] & LOMASK); return (FALSE); case 3: if (SMapX > 0) return (Map[SMapX - 1][SMapY] & LOMASK); return (FALSE); default: return (FALSE); } } /* comefrom: TryDrive */ DriveDone(void) { static short TARGL[3] = {COMBASE, LHTHR, LHTHR}; static short TARGH[3] = {NUCLEAR, PORT, COMBASE}; /* for destinations */ register short x, z, l, h; /* unwound -Don */ #if 0 for (x = 0; x < 4; x++) { /* R>C C>I I>R */ z = GetFromMap(x); if ((z >= TARGL[Zsource]) && (z <= TARGH[Zsource])) return (TRUE); } #else l = TARGL[Zsource]; h = TARGH[Zsource]; if (SMapY > 0) { z = Map[SMapX][SMapY - 1] & LOMASK; if ((z >= l) && (z <= h)) return (TRUE); } if (SMapX < (WORLD_X - 1)) { z = Map[SMapX + 1][SMapY] & LOMASK; if ((z >= l) && (z <= h)) return (TRUE); } if (SMapY < (WORLD_Y - 1)) { z = Map[SMapX][SMapY + 1] & LOMASK; if ((z >= l) && (z <= h)) return (TRUE); } if (SMapX > 0) { z = Map[SMapX - 1][SMapY] & LOMASK; if ((z >= l) && (z <= h)) return (TRUE); } #endif return (FALSE); } /* comefrom: TryGo FindPRoad */ RoadTest(int x) { x = x & LOMASK; if (x < ROADBASE) return (FALSE); if (x > LASTRAIL) return (FALSE); if ((x >= POWERBASE) && (x < RAILHPOWERV)) return (FALSE); return (TRUE); } micropolis-activity/src/sim/w_net.c0000664000076400007640000001167510724145723017704 0ustar simcitysimcity/* w_net.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" #ifdef NET #define NET_BUFFER_SIZE 1024 int net_listen_port; int net_listen_socket; int udp_listen(int port) { struct sockaddr_in addr; int flags; net_listen_port = port; net_listen_socket = socket(AF_INET, SOCK_DGRAM, 0); if (net_listen_socket < 0) { perror("socket()"); return 0; } flags = 1; if (setsockopt(net_listen_socket, SOL_SOCKET, SO_REUSEADDR, (char *)&flags, sizeof(flags)) == -1) { perror("setsockopt SO_REUSEADDR"); return 0; } addr.sin_family = AF_INET; addr.sin_port = net_listen_port; addr.sin_addr.s_addr = INADDR_ANY; if (bind(net_listen_socket, (struct sockaddr *)&addr, sizeof(addr)) < 0) { perror("bind()"); return 0; } if ((flags = fcntl(net_listen_socket, F_GETFL)) < 0) { perror("fcntl F_GETFL"); return 0; } if (fcntl(net_listen_socket, F_SETFL, flags|O_NDELAY) < 0) { perror("fcntl F_SETFL"); return 0; } Tcp_MakeOpenFile(tk_mainInterp, net_listen_socket, 1, 1); return (net_listen_socket); } udp_hear(int sock) { struct sockaddr_in addr; int addr_len; int len, i; unsigned char buf[NET_BUFFER_SIZE]; char cmd[NET_BUFFER_SIZE * 4 + 256]; char *cp; while (1) { len = recvfrom(sock, buf, NET_BUFFER_SIZE, 0, (struct sockaddr *)&addr, &addr_len); if (len < 0) { if (errno == EINTR) continue; if (errno == EWOULDBLOCK) break; perror("recvfrom"); return; } sprintf(cmd, "HandlePacket %d {%s} {", sock, inet_ntoa(addr.sin_addr)); cp = cmd + strlen(cmd); for (i = 0; i < len; i++) { sprintf(cp, "%3d ", buf[i]); cp += 4; } sprintf(cp, "}"); Eval(cmd); } } #endif micropolis-activity/src/sim/random.c0000664000076400007640000003200510724145723020036 0ustar simcitysimcity/* * Copyright (c) 1983 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the University of * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "sim.h" #include #include /* * random.c: * * An improved random number generation package. In addition to the standard * rand()/srand() like interface, this package also has a special state info * interface. The initstate() routine is called with a seed, an array of * bytes, and a count of how many bytes are being passed in; this array is * then initialized to contain information for random number generation with * that much state information. Good sizes for the amount of state * information are 32, 64, 128, and 256 bytes. The state can be switched by * calling the setstate() routine with the same array as was initiallized * with initstate(). By default, the package runs with 128 bytes of state * information and generates far better random numbers than a linear * congruential generator. If the amount of state information is less than * 32 bytes, a simple linear congruential R.N.G. is used. * * Internally, the state information is treated as an array of longs; the * zeroeth element of the array is the type of R.N.G. being used (small * integer); the remainder of the array is the state information for the * R.N.G. Thus, 32 bytes of state information will give 7 longs worth of * state information, which will allow a degree seven polynomial. (Note: * the zeroeth word of state information also has some other information * stored in it -- see setstate() for details). * * The random number generation technique is a linear feedback shift register * approach, employing trinomials (since there are fewer terms to sum up that * way). In this approach, the least significant bit of all the numbers in * the state table will act as a linear feedback shift register, and will * have period 2^deg - 1 (where deg is the degree of the polynomial being * used, assuming that the polynomial is irreducible and primitive). The * higher order bits will have longer periods, since their values are also * influenced by pseudo-random carries out of the lower bits. The total * period of the generator is approximately deg*(2**deg - 1); thus doubling * the amount of state information has a vast influence on the period of the * generator. Note: the deg*(2**deg - 1) is an approximation only good for * large deg, when the period of the shift register is the dominant factor. * With deg equal to seven, the period is actually much longer than the * 7*(2**7 - 1) predicted by this formula. */ /* * For each of the currently supported random number generators, we have a * break value on the amount of state information (you need at least this * many bytes of state info to support this random number generator), a degree * for the polynomial (actually a trinomial) that the R.N.G. is based on, and * the separation between the two lower order coefficients of the trinomial. */ #define TYPE_0 0 /* linear congruential */ #define BREAK_0 8 #define DEG_0 0 #define SEP_0 0 #define TYPE_1 1 /* x**7 + x**3 + 1 */ #define BREAK_1 32 #define DEG_1 7 #define SEP_1 3 #define TYPE_2 2 /* x**15 + x + 1 */ #define BREAK_2 64 #define DEG_2 15 #define SEP_2 1 #define TYPE_3 3 /* x**31 + x**3 + 1 */ #define BREAK_3 128 #define DEG_3 31 #define SEP_3 3 #define TYPE_4 4 /* x**63 + x + 1 */ #define BREAK_4 256 #define DEG_4 63 #define SEP_4 1 /* * Array versions of the above information to make code run faster -- * relies on fact that TYPE_i == i. */ #define MAX_TYPES 5 /* max number of types above */ static int degrees[MAX_TYPES] = { DEG_0, DEG_1, DEG_2, DEG_3, DEG_4 }; static int seps [MAX_TYPES] = { SEP_0, SEP_1, SEP_2, SEP_3, SEP_4 }; QUAD sim_random(); void sim_srandom(); char *sim_initstate(); char *sim_setstate(); /* * Initially, everything is set up as if from: * * initstate(1, &randtbl, 128); * * Note that this initialization takes advantage of the fact that srandom() * advances the front and rear pointers 10*rand_deg times, and hence the * rear pointer which starts at 0 will also end up at zero; thus the zeroeth * element of the state information, which contains info about the current * position of the rear pointer is just * * MAX_TYPES * (rptr - state) + TYPE_3 == TYPE_3. */ static QUAD randtbl[DEG_3 + 1] = { TYPE_3, 0x9a319039, 0x32d9c024, 0x9b663182, 0x5da1f342, 0xde3b81e0, 0xdf0a6fb5, 0xf103bc02, 0x48f340fb, 0x7449e56b, 0xbeb1dbb0, 0xab5c5918, 0x946554fd, 0x8c2e680f, 0xeb3d799f, 0xb11ee0b7, 0x2d436b86, 0xda672e2a, 0x1588ca88, 0xe369735d, 0x904f35f7, 0xd7158fd6, 0x6fa6f051, 0x616e6b96, 0xac94efdc, 0x36413f93, 0xc622c298, 0xf5a42ab8, 0x8a88d77b, 0xf5ad9d0e, 0x8999220b, 0x27fb47b9, }; /* * fptr and rptr are two pointers into the state info, a front and a rear * pointer. These two pointers are always rand_sep places aparts, as they * cycle cyclically through the state information. (Yes, this does mean we * could get away with just one pointer, but the code for random() is more * efficient this way). The pointers are left positioned as they would be * from the call * * initstate(1, randtbl, 128); * * (The position of the rear pointer, rptr, is really 0 (as explained above * in the initialization of randtbl) because the state table pointer is set * to point to randtbl[1] (as explained below). */ static QUAD *fptr = &randtbl[SEP_3 + 1]; static QUAD *rptr = &randtbl[1]; /* * The following things are the pointer to the state information table, the * type of the current generator, the degree of the current polynomial being * used, and the separation between the two pointers. Note that for efficiency * of random(), we remember the first location of the state information, not * the zeroeth. Hence it is valid to access state[-1], which is used to * store the type of the R.N.G. Also, we remember the last location, since * this is more efficient than indexing every time to find the address of * the last element to see if the front and rear pointers have wrapped. */ static QUAD *state = &randtbl[1]; static int rand_type = TYPE_3; static int rand_deg = DEG_3; static int rand_sep = SEP_3; static QUAD *end_ptr = &randtbl[DEG_3 + 1]; /* * srandom: * * Initialize the random number generator based on the given seed. If the * type is the trivial no-state-information type, just remember the seed. * Otherwise, initializes state[] based on the given "seed" via a linear * congruential generator. Then, the pointers are set to known locations * that are exactly rand_sep places apart. Lastly, it cycles the state * information a given number of times to get rid of any initial dependencies * introduced by the L.C.R.N.G. Note that the initialization of randtbl[] * for default usage relies on values produced by this routine. */ void sim_srandom(x) unsigned int x; { register int i, j; if (rand_type == TYPE_0) state[0] = x; else { j = 1; state[0] = x; for (i = 1; i < rand_deg; i++) state[i] = 1103515245 * state[i - 1] + 12345; fptr = &state[rand_sep]; rptr = &state[0]; for (i = 0; i < 10 * rand_deg; i++) (void)sim_random(); } } /* * initstate: * * Initialize the state information in the given array of n bytes for future * random number generation. Based on the number of bytes we are given, and * the break values for the different R.N.G.'s, we choose the best (largest) * one we can and set things up for it. srandom() is then called to * initialize the state information. * * Note that on return from srandom(), we set state[-1] to be the type * multiplexed with the current value of the rear pointer; this is so * successive calls to initstate() won't lose this information and will be * able to restart with setstate(). * * Note: the first thing we do is save the current state, if any, just like * setstate() so that it doesn't matter when initstate is called. * * Returns a pointer to the old state. */ char * sim_initstate(seed, arg_state, n) unsigned int seed; /* seed for R.N.G. */ char *arg_state; /* pointer to state array */ int n; /* # bytes of state info */ { register char *ostate = (char *)(&state[-1]); if (rand_type == TYPE_0) state[-1] = rand_type; else state[-1] = MAX_TYPES * (rptr - state) + rand_type; if (n < BREAK_0) { (void)fprintf(stderr, "random: not enough state (%d bytes); ignored.\n", n); return(0); } if (n < BREAK_1) { rand_type = TYPE_0; rand_deg = DEG_0; rand_sep = SEP_0; } else if (n < BREAK_2) { rand_type = TYPE_1; rand_deg = DEG_1; rand_sep = SEP_1; } else if (n < BREAK_3) { rand_type = TYPE_2; rand_deg = DEG_2; rand_sep = SEP_2; } else if (n < BREAK_4) { rand_type = TYPE_3; rand_deg = DEG_3; rand_sep = SEP_3; } else { rand_type = TYPE_4; rand_deg = DEG_4; rand_sep = SEP_4; } state = &(((QUAD *)arg_state)[1]); /* first location */ end_ptr = &state[rand_deg]; /* must set end_ptr before srandom */ sim_srandom(seed); if (rand_type == TYPE_0) state[-1] = rand_type; else state[-1] = MAX_TYPES*(rptr - state) + rand_type; return(ostate); } /* * setstate: * * Restore the state from the given state array. * * Note: it is important that we also remember the locations of the pointers * in the current state information, and restore the locations of the pointers * from the old state information. This is done by multiplexing the pointer * location into the zeroeth word of the state information. * * Note that due to the order in which things are done, it is OK to call * setstate() with the same state as the current state. * * Returns a pointer to the old state information. */ char * sim_setstate(arg_state) char *arg_state; { register QUAD *new_state = (QUAD *)arg_state; register int type = new_state[0] % MAX_TYPES; register int rear = new_state[0] / MAX_TYPES; char *ostate = (char *)(&state[-1]); if (rand_type == TYPE_0) state[-1] = rand_type; else state[-1] = MAX_TYPES * (rptr - state) + rand_type; switch(type) { case TYPE_0: case TYPE_1: case TYPE_2: case TYPE_3: case TYPE_4: rand_type = type; rand_deg = degrees[type]; rand_sep = seps[type]; break; default: (void)fprintf(stderr, "random: state info corrupted; not changed.\n"); } state = &new_state[1]; if (rand_type != TYPE_0) { rptr = &state[rear]; fptr = &state[(rear + rand_sep) % rand_deg]; } end_ptr = &state[rand_deg]; /* set end_ptr too */ return(ostate); } /* * random: * * If we are using the trivial TYPE_0 R.N.G., just do the old linear * congruential bit. Otherwise, we do our fancy trinomial stuff, which is * the same in all the other cases due to all the global variables that have * been set up. The basic operation is to add the number at the rear pointer * into the one at the front pointer. Then both pointers are advanced to * the next location cyclically in the table. The value returned is the sum * generated, reduced to 31 bits by throwing away the "least random" low bit. * * Note: the code takes advantage of the fact that both the front and * rear pointers can't wrap on the same call by not testing the rear * pointer if the front one has wrapped. * * Returns a 31-bit random number. */ QUAD sim_random() { QUAD i; if (rand_type == TYPE_0) i = state[0] = (state[0] * 1103515245 + 12345) & 0x7fffffff; else { *fptr += *rptr; i = (*fptr >> 1) & 0x7fffffff; /* chucking least random bit */ if (++fptr >= end_ptr) { fptr = state; ++rptr; } else if (++rptr >= end_ptr) rptr = state; } return(i); } micropolis-activity/src/sim/terrain/0000775000076400007640000000000010724145723020056 5ustar simcitysimcitymicropolis-activity/src/sim/terrain/terragen.c0000664000076400007640000003171710724145723022042 0ustar simcitysimcity/* terragen.c: Terrain generator * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ /* Micropolis simulator code. Copyright 1988, 1989 Maxis, Will Wright */ /* modified by Paul Schmidt 10-89 to implement terrain editor quickly... - rax */ #include "..\sim\sim.h" #define TRUE 1 #define FALSE 0 #define WORLD_X 120 #define WORLD_Y 100 #define RIVER 2 #define REDGE 3 #define CHANNEL 4 #define WOODS 37 #define BL 4096 #define BN 8192 #define BLN BL+BN #define WATER_LOW 2 /* range for water */ #define WATER_HIGH 20 #define WOODS_LOW 21 /* range for woods */ #define WOODS_HIGH 39 static int XStart, YStart; static int Dir, LastDir; /* trash values for GRand() */ static int GRanArray[5] = { 1018,4521,202,419,3 }; extern int treeLevel; /* level for tree creation (terra.c) */ extern int lakeLevel; /* level for lake creation (terra.c) */ extern int curvLevel; /* level for river curviness (terra.c) */ rax_ClearMap() { register int x, y; for (x=0; x= WATER_LOW && (Map[x][y]&LOMASK) <= WATER_HIGH) { /* if water */ if(x > 0) { if((Map[x-1][y]&LOMASK) < WATER_LOW || (Map[x-1][y]&LOMASK) > WATER_HIGH) { /* if nearest object is not water */ goto edge; } } if(x < WORLD_X-1) { if((Map[x+1][y]&LOMASK) < WATER_LOW || (Map[x+1][y]&LOMASK) > WATER_HIGH) { /* if nearest object is not water */ goto edge; } } if(y > 0) { if((Map[x][y-1]&LOMASK) < WATER_LOW || (Map[x][y-1]&LOMASK) > WATER_HIGH) { /* if nearest object is not water */ goto edge; } } if(y < WORLD_Y-1) { if((Map[x][y+1]&LOMASK) < WATER_LOW || (Map[x][y+1]&LOMASK) > WATER_HIGH) { /* if nearest object is not water */ edge: Map[x][y]=REDGE; /* set river edge */ continue; } } } } } for(x=0;x < WORLD_X;x++) { for(y=0;y < WORLD_Y;y++) { if((Map[x][y]&LOMASK) != CHANNEL && (Map[x][y]&LOMASK) >= WATER_LOW && (Map[x][y]&LOMASK) <= WATER_HIGH) { /* if water which is not a channel */ if(x > 0) { if((Map[x-1][y]&LOMASK) < WATER_LOW || (Map[x-1][y]&LOMASK) > WATER_HIGH) { /* if nearest object is not water */ continue; } } if(x < WORLD_X-1) { if((Map[x+1][y]&LOMASK) < WATER_LOW || (Map[x+1][y]&LOMASK) > WATER_HIGH) { /* if nearest object is not water */ continue; } } if(y > 0) { if((Map[x][y-1]&LOMASK) < WATER_LOW || (Map[x][y-1]&LOMASK) > WATER_HIGH) { /* if nearest object is not water */ continue; } } if(y < WORLD_Y-1) { if((Map[x][y+1]&LOMASK) < WATER_LOW || (Map[x][y+1]&LOMASK) > WATER_HIGH) { /* if nearest object is not water */ continue; } } Map[x][y]=RIVER; /* make it a river */ } } } for(x=0;x < WORLD_X;x++) { for(y=0;y < WORLD_Y;y++) { if((Map[x][y]&LOMASK) >= WOODS_LOW && (Map[x][y]&LOMASK) <= WOODS_HIGH) { /* if woods */ if(x > 0) { if(Map[x-1][y] == RIVER || Map[x-1][y] == CHANNEL) { /* if nearest object is water */ Map[x][y]=REDGE; /* make it water's edge */ continue; } } if(x < WORLD_X-1) { if(Map[x+1][y] == RIVER || Map[x+1][y] == CHANNEL) { /* if nearest object is water */ Map[x][y]=REDGE; /* make it water's edge */ continue; } } if(y > 0) { if(Map[x][y-1] == RIVER || Map[x][y-1] == CHANNEL) { /* if nearest object is water */ Map[x][y]=REDGE; /* make it water's edge */ continue; } } if(y < WORLD_Y-1) { if(Map[x][y+1] == RIVER || Map[x][y+1] == CHANNEL) { /* if nearest object is water */ Map[x][y]=REDGE; /* make it water's edge */ continue; } } } } } } #define RADIUS 18 rax_MakeIsland() { register int x,y,z; for (x=0; x WOODS_HIGH)) bitindex++; /* new code - rax */ } temp = REdTab[bitindex & 15]; if ((temp != 2) && (rax_GRand(1))) temp++; Map[MapX][MapY] = temp; } } IsTree(cell) /* return TRUE or FALSE if cell value is a tree cell */ register int cell; { if((cell&LOMASK) >= WOODS_LOW && (cell&LOMASK) <= WOODS_HIGH) return TRUE; else return FALSE; } rax_SmoothTrees() { static int DX[4] = {-1, 0, 1, 0}; static int DY[4] = { 0, 1, 0,-1}; static int TEdTab[16] = {0,0,0,34,0,0,36,35,0,32,0,33,30,31,29,37}; int bitindex, z,Xtem,Ytem; register int temp,MapX,MapY; for (MapX = 0; MapX < WORLD_X; MapX++) for (MapY = 0; MapY < WORLD_Y; MapY++) if (IsTree(Map[MapX][MapY])) { bitindex = 0; for (z=0; z<4; z++) { bitindex = bitindex << 1; Xtem = MapX + DX[z]; Ytem = MapY + DY[z]; if (rax_TestBounds(Xtem, Ytem)) if(IsTree(Map[Xtem][Ytem])) bitindex++; } temp = TEdTab[bitindex & 15]; if (temp) { if (temp != 37) if ((MapX+MapY) & 1) temp = temp-8; Map[MapX][MapY] = temp+BLN; } else Map[MapX][MapY] = temp; } } rax_DoRivers() { LastDir = rax_GRand(3); Dir = LastDir; rax_DoBRiv(); MapX = XStart; MapY = YStart; LastDir = LastDir ^ 4; Dir = LastDir; rax_DoBRiv(); MapX = XStart; MapY = YStart; LastDir = rax_GRand(3); rax_DoSRiv(); } rax_DoBRiv() { while(rax_TestBounds (MapX+4, MapY+4)) { rax_BRivPlop(); if(rax_GRand(curvLevel+10) < 10) { Dir=LastDir; } else { if(rax_GRand(curvLevel+100) > 90) { Dir++; } if(rax_GRand(curvLevel+100) > 90) { Dir--; } } rax_MoveMap(Dir); } } rax_DoSRiv() { while(rax_TestBounds (MapX+3, MapY+3)) { rax_SRivPlop(); if(rax_GRand(curvLevel+10) < 10) { Dir=LastDir; } else { if(rax_GRand(curvLevel+100) > 90) { Dir++; } if(rax_GRand(curvLevel+100) > 90) { Dir--; } } rax_MoveMap(Dir); } } rax_MoveMap (dir) int dir; { static int DirTab[2][8] ={ { 0, 1, 1, 1, 0, -1, -1, -1}, {-1,-1, 0, 1, 1, 1, 0, -1} }; dir = dir & 7; MapX += DirTab[0][dir]; MapY += DirTab[1][dir]; } rax_BRivPlop() { static int BRMatrix[9][9] ={ {0,0,0,3,3,3,0,0,0}, {0,0,3,2,2,2,3,0,0}, {0,3,2,2,2,2,2,3,0}, {3,2,2,2,2,2,2,2,3}, {3,2,2,2,4,2,2,2,3}, {3,2,2,2,2,2,2,2,3}, {0,3,2,2,2,2,2,3,0}, {0,0,3,2,2,2,3,0,0}, {0,0,0,3,3,3,0,0,0} }; int x, y; for (x=0; x<9; x++) for (y=0; y<9; y++) rax_PutOnMap (BRMatrix[y][x], x, y); } rax_SRivPlop() { static int SRMatrix[6][6] ={ {0,0,3,3,0,0}, {0,3,2,2,3,0}, {3,2,2,2,2,3}, {3,2,2,2,2,3}, {0,3,2,2,3,0}, {0,0,3,3,0,0} }; int x, y; for (x=0; x<6; x++) for (y=0; y<6; y++) rax_PutOnMap (SRMatrix[y][x], x, y); } rax_PutOnMap (Mchar, Xoff, Yoff) int Mchar, Xoff, Yoff; { register int Xloc, Yloc, temp; if (Mchar == 0) return; Xloc = MapX + Xoff; Yloc = MapY + Yoff; if (rax_TestBounds (Xloc, Yloc) == FALSE) return (FALSE); if (temp = Map [Xloc][Yloc]) { temp = temp & 1023; if (temp == RIVER) if (Mchar != CHANNEL) return (FALSE); if (temp == CHANNEL) return (FALSE); } Map [Xloc][Yloc] = Mchar; } rax_TestBounds(x, y) register int x, y; { if ((( x >= 0) && (x < WORLD_X)) && (( y >= 0) && (y < WORLD_Y))) return (TRUE); return (FALSE); } rax_EGRand(limit) int limit; { int x,z; z= rax_GRand(limit); x= rax_GRand(limit); if (z < x) return(z); return(x); } #define RANMASK 32767 rax_GRand(range) /* stupid but works */ int range; { register x, newv, divisor; divisor = RANMASK/ (range+1); newv = 0; for (x=4; x!=0; x--) newv += (GRanArray[x] = GRanArray[x-1]); GRanArray[0] = newv; x = (newv & RANMASK) / divisor; if (x > range) return(range); return(x); } micropolis-activity/src/sim/terrain/mapgener.c0000664000076400007640000002275210724145723022030 0ustar simcitysimcity/* mapgener.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ /* Micropolis simulator code. Copyright 1988, 1989 Maxis, Will Wright */ #include "sim.h" #define TRUE 1 #define FALSE 0 #define WORLD_X 120 #define WORLD_Y 100 #define RIVER 2 #define REDGE 3 #define CHANNEL 4 #define WOODS 37 #define BL 4096 #define BN 8192 #define BLN BL+BN static int XStart, YStart; static int Dir, LastDir; /* trash values for GRand() */ static int GRanArray[5] = { 1018,4521,202,419,3 }; far GenerateMap() { GRanArray[0] = TickCount(); /* This is the only machine-specific call */ /* It inits GRand() w/ clockcount(long) */ if (!(GRand(10))) { /* 1 in 3 chance that island is generated */ MakeIsland(); return; } ClearMap(); /* else make river map */ GetRandStart(); DoRivers(); MakeLakes(); SmoothRiver(); DoTrees(); } near ClearMap() { register int x, y; for (x=0; x 4) Dir++; if (GRand(10) > 4) Dir--; if (!(GRand(10))) Dir = LastDir; MoveMap (Dir); } } near DoSRiv() { int temp; while (TestBounds (MapX+3, MapY+3)) { SRivPlop(); if (GRand(10) > 5) Dir++; if (GRand(10) > 5) Dir--; if (!(GRand(12))) Dir = LastDir; MoveMap (Dir); } } near MoveMap (dir) int dir; { static int DirTab[2][8] ={ { 0, 1, 1, 1, 0, -1, -1, -1}, {-1,-1, 0, 1, 1, 1, 0, -1} }; dir = dir & 7; MapX += DirTab[0][dir]; MapY += DirTab[1][dir]; } near BRivPlop() { static int BRMatrix[9][9] ={ {0,0,0,3,3,3,0,0,0}, {0,0,3,2,2,2,3,0,0}, {0,3,2,2,2,2,2,3,0}, {3,2,2,2,2,2,2,2,3}, {3,2,2,2,4,2,2,2,3}, {3,2,2,2,2,2,2,2,3}, {0,3,2,2,2,2,2,3,0}, {0,0,3,2,2,2,3,0,0}, {0,0,0,3,3,3,0,0,0} }; int x, y; for (x=0; x<9; x++) for (y=0; y<9; y++) PutOnMap (BRMatrix[y][x], x, y); } near SRivPlop() { static int SRMatrix[6][6] ={ {0,0,3,3,0,0}, {0,3,2,2,3,0}, {3,2,2,2,2,3}, {3,2,2,2,2,3}, {0,3,2,2,3,0}, {0,0,3,3,0,0} }; int x, y; for (x=0; x<6; x++) for (y=0; y<6; y++) PutOnMap (SRMatrix[y][x], x, y); } near PutOnMap (Mchar, Xoff, Yoff) int Mchar, Xoff, Yoff; { register int Xloc, Yloc, temp; if (Mchar == 0) return; Xloc = MapX + Xoff; Yloc = MapY + Yoff; if (TestBounds (Xloc, Yloc) == FALSE) return (FALSE); if (temp = Map [Xloc][Yloc]) { temp = temp & 1023; if (temp == RIVER) if (Mchar != CHANNEL) return (FALSE); if (temp == CHANNEL) return (FALSE); } Map [Xloc][Yloc] = Mchar; } far TestBounds(x, y) register int x, y; { if ((( x >= 0) && (x < WORLD_X)) && (( y >= 0) && (y < WORLD_Y))) return (TRUE); return (FALSE); } near EGRand(limit) int limit; { int x,z; z= GRand(limit); x= GRand(limit); if (z < x) return(z); return(x); } #define RANMASK 32767 near GRand(range) /* stupid but works */ int range; { register x, newv, divisor; divisor = RANMASK/ (range+1); newv = 0; for (x=4; x!=0; x--) newv += (GRanArray[x] = GRanArray[x-1]); GRanArray[0] = newv; x = (newv & RANMASK) / divisor; if (x > range) return(range); return(x); } micropolis-activity/src/sim/terrain/terra.c0000664000076400007640000006251710724145723021352 0ustar simcitysimcity/* terra.c: Terrain editor * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ /* terra.c - terrain editor for Sim City by Paul Schmidt, 1989 Raxsoft, Inc. 1194 Spring Valley Commons Livermore, CA 94550 (415) 449-9079 */ #include "..\sim\sim.h" #include "..\gr\menu.h" #include "..\gr\grdef.h" #include "..\terra\tmenu.h" #include "..\ed\eddef.h" #include "..\ed\edext.h" #include #include #include #include #include #include #include char *GSaveRect(); extern MOUSESTATE near mouse_state; extern FILE *demoFP; extern char realMouseFlag; extern long lastEvent, TickCount(); /* from ..\sim\main.c */ extern long policeFund, fireFund, transFund; char CreateWithIsland; #define UMaps 4 #define URecs 5000 int UndoMapBuffer1[WORLD_X*WORLD_Y]; int UndoMapBuffer2[WORLD_X*WORLD_Y]; int UndoMapBuffer3[WORLD_X*WORLD_Y]; int UndoMapBuffer4[WORLD_X*WORLD_Y]; int *UndoMap[UMaps]={UndoMapBuffer1,UndoMapBuffer2,UndoMapBuffer3,UndoMapBuffer4}; /* maps for fill undos */ int UndoMaps; /* number of occupied undo maps */ struct { char x,y; /* coordinate of undo */ int val; /* cell value */ } UndoRec[URecs]; /* putdown undos */ int UndoHead=0,UndoTail=0; char fillState=0; /* flag telling if fill mode is on or off */ int treeLevel=50; /* level for tree creation */ int lakeLevel=50; /* level for lake creation */ int curvLevel=50; /* level for river curviness */ /* ========================================================== */ void ClearUndo() /* clear all undo records */ { UndoMaps=UndoHead=UndoTail=0; /* kill undo pointers */ DrawAllEdIcons(UPDATE); /* update undo icon */ } void AddUndo(pos) /* add undo record */ Point pos; /* position to add to undo */ { if(pos.h != -1 || pos.v != -1) { /* if they're not setting to undo the entire map */ if(pos.h > WORLD_X || pos.v > WORLD_Y || pos.h < 0 || pos.v < 0) { /* if out of bounds */ return; /* do nothing */ } } if(pos.h == -1 && pos.v == -1) { /* if undo entire map */ register int tem; /* temporary counter */ register int x,y; /* temporary coordinates */ if(UndoMaps == UMaps) { /* if there are already five undo maps */ while(UndoRec[UndoTail].x != -1 || UndoRec[UndoTail].y != -1) { /* until we find the last map undo */ UndoTail=Bound(0,UndoTail+1,URecs-1); /* move tail */ } UndoTail=Bound(0,UndoTail+1,URecs-1); /* move tail to kill the last map */ UndoMaps--; for(tem=0;tem < UndoMaps;tem++) { /* for each map */ for(x=0;x < WORLD_X*WORLD_Y;x++) { *(UndoMap[tem]+x)=*(UndoMap[tem+1]+x); } } } for(x=0;x < WORLD_X*WORLD_Y;x++) { *(UndoMap[UndoMaps]+x)=*((int*)Map+x); /* save current map */ } UndoMaps++; /* one more map saved */ } UndoRec[UndoHead].x=pos.h; /* set x and y position */ UndoRec[UndoHead].y=pos.v; UndoRec[UndoHead].val=Map[pos.h][pos.v]; /* set map value */ UndoHead=Bound(0,UndoHead+1,URecs-1); /* move head */ if(UndoHead == UndoTail) { /* if we pushed the tail up */ UndoTail=Bound(0,UndoTail+1,URecs-1); /* move tail */ } } void Undo() /* undo one map operation */ { register int x,y; if(UndoHead == UndoTail) { /* if there's nothing to undo */ MakeSound(7); /* bad sound */ return; /* do nothing */ } UndoHead=Bound(0,UndoHead-1,URecs-1); /* set new head */ if(UndoRec[UndoHead].x == -1) { /* if the entire map changed */ register int tem; /* temporary counter */ register int x,y; /* temporary coordinates */ for(x=0;x < WORLD_X*WORLD_Y;x++) { *((int*)Map+x)=*(UndoMap[UndoMaps-1]+x); /* set undo map */ } UndoMaps--; /* one less map */ } else { Map[UndoRec[UndoHead].x][UndoRec[UndoHead].y]=UndoRec[UndoHead].val; /* set old value */ } UpdateOurMaps(); /* update big and small maps */ } /* ======================================================================== */ DoEvent() { int object; EVENT event; #if DEBUG && 0 PrintLock("DoEvent - get event "); #endif GetMouseEvent(&event); object=event.object; #if DEBUG && 0 PrintLock("DoEvent "); #endif switch(object&0xff00) { case 0: DoMenu(object); break; case 0x100: DoEdEvent(&event); break; case 0x200: DoKeyDown(object); break; case 0x300: MenuEvent(&event); break; case 0x400: DoMapEvent(&event); break; case 0x600: DoScreen(&event); break; } } UpdateOurSmallMap() /* update small map */ { register int tem; /* temporary counter */ MouseHide(); /* hide mouse */ DrawSmallMap(); /* updates small map */ for(tem=0;tem < WORLD_X*WORLD_Y;tem++) { *((int*)lastSmallMap+tem)=(*((int*)Map+tem))&LOMASK; /* copy map */ } MouseShow(); /* show mouse */ } UpdateOurMaps() /* update edit and map widnows */ { UpdateMapCursorOff(); /* turn off map cursor */ MouseHide(); /* hide mouse */ DrawBigMap(); /* updates large map */ MouseShow(); /* show mouse */ UpdateOurSmallMap(); DrawAllEdIcons(UPDATE); /* update icons */ UpdateMapCursorOn(); /* turn map cursor on */ } /* ======================================================================== */ DoMenu(itemNum) int itemNum; { static char far *popGameLevelStrs[]={"Easy","Medium","Hard",NULL}; int cur_windowActive; /* current active window */ register int x,y; /* temporary integers */ Rect msgBox; Rect msgRect; char *savePtr; /* pointer to saved rectangle */ int smoothFlag; long tmpFunds; int virginCity=YES; switch(itemNum) { /* case MNUSCNO: /* /* Load a scenario - if it fails we need to redraw the */ /* /* screen */ /* if (!LoadScenario()) { /* InitWindows(); /* } else { /* ClearUndo(); /* clear undo records */ /* } /* SelectNewWindow(EDWINDOW); /* enable edit window */ /* SelectNewWindow(MAPWINDOW); /* enable map window */ /* break; /**/ case MNUQUIT: if (Verify("EXIT")) Quit("Micropolis Terrain Editor"); break; case MNU_SoundToggle: /* sound on/off */ userSoundOn^=YES; sso: ShowSelectedOptions(); break; case MNUABOUT: DoAbout(); break; case MNULOAD: if (LoadGame(NULL,NO)) virginCity=NO; SelectNewWindow(EDWINDOW); /* enable edit window */ SelectNewWindow(MAPWINDOW); /* enable map window */ ClearUndo(); /* clear undo records */ break; case MNUSAVE: SaveGame(lastFileName); break; case MNUSVAS: SaveGame(NULL); break; case MNUNEW: /* Start new game */ if (Verify("NEW GAME")) { totalFunds=20000L; NewGame(NO); transFund=policeFund=fireFund=65535L; CityTax=7; virginCity=YES; ClearUndo(); /* clear undo records */ } SelectNewWindow(EDWINDOW); /* enable edit window */ SelectNewWindow(MAPWINDOW); /* enable map window */ break; case MNUPRINT: PrintCity(); break; case MNU_SmoothTrees: smoothFlag=1; goto dosmooth; case MNU_ClearMap: /* if map is to be cleared */ AddUndo(-1,-1); /* save map */ rax_ClearMap(); /* clear map (..\sim\mapgener.c) */ GameLevel=0; /* assume game is easy */ goto updateBoth; break; case MNU_ClearUnnatural: /* if unnatural objects are to be cleared */ AddUndo(-1,-1); /* save map */ for(x=0;x < WORLD_X;x++) { for(y=0;y < WORLD_Y;y++) { if((Map[x][y]&LOMASK) > 37) { /* get rid of everything unnatural */ Map[x][y]=0; /* turn it into dirt */ } } } updateBoth: UpdateOurMaps(); /* update both windows */ break; case MNU_GenerateRandom: /* if random map is to be generated */ if(SetTerrainParameters()) { /* allow user to set terrain generation parameters */ CenterRect(&msgBox, 20, 5); msgRect=*AdjRect(&msgBox); savePtr=GSaveRect(&msgRect); /* save rectangle */ GRectFill(&msgRect, WHITE|PWHITE); GSetAttrib(DGREEN, DGREEN, PBLACK); GRectOutline(&msgRect, 4); GSetAttrib(LGREEN, LGREEN, PMGREY); GRectOutline(&msgRect, 2); GSetAttrib(DBLUE, WHITE, PWHITE|PINV); CenterPrint(&msgBox, msgBox.top+2, "Now terraforming"); AddUndo(-1,-1); /* save map */ rax_ClearMap(); /* make river map */ rax_GetRandStart(); if(CreateWithIsland) { /* if we're creating an island */ rax_MakeIsland(); /* make an island */ } if(curvLevel) { /* if we're supposedly creating an island */ rax_DoRivers(); /* create river */ } if(lakeLevel) { /* if there are to be lakes */ rax_MakeLakes(); /* add lakes */ } rax_SmoothRiver(); /* smooth out river */ if(treeLevel) { /* if we're creating a woodsy terrain */ rax_DoTrees(); /* add trees */ } rax_SmoothTrees(); /* smooth trees */ rax_SmoothTrees(); /* smooth trees */ GRestoreRect(&msgRect,savePtr); /* restore rectangle */ MapX=MapY=0; goto updateBoth; } break; case MNU_SmoothRiver: /* if water is to be smoothed */ smoothFlag=2; goto dosmooth; case MNU_SmoothBoth: /* if both are to be smoothed */ smoothFlag=3; /* Both */ dosmooth: CenterRect(&msgBox, 16, 5); msgRect=*AdjRect(&msgBox); savePtr=GSaveRect(&msgRect); /* save rectangle */ GRectFill(&msgRect, WHITE|PWHITE); GSetAttrib(DGREEN, DGREEN, PBLACK); GRectOutline(&msgRect, 4); GSetAttrib(LGREEN, LGREEN, PMGREY); GRectOutline(&msgRect, 2); GSetAttrib(DBLUE, WHITE, PWHITE|PINV); CenterPrint(&msgBox, msgBox.top+2, "Smoothing..."); AddUndo(-1,-1); /* save map */ if (smoothFlag & 2) /* If water smooth flag set */ { rax_WaterEdges(); /* make sure water edges are ok */ rax_SmoothRiver(); } if (smoothFlag & 1) { rax_SmoothTrees(); rax_SmoothTrees(); } GRestoreRect(&msgRect,savePtr); /* restore rectangle */ goto updateBoth; case MNU_RandomIsland: /* if random Island toggle */ CreateWithIsland^=1; /* toggle state of flag */ ShowSelectedOptions(); /* update menu flag status */ break; case MNU_GameLevel: /* if game level */ /* GameLevel++; /* add one for PopUpMenuBox */ /* PopUpMenuBox(&GameLevel, popGameLevelStrs); /* GameLevel--; /**/ tmpFunds=totalFunds; /* Don't alter the amount of funds! */ ChooseGameLevel(); /* get city name & level from user */ if (!virginCity) totalFunds=tmpFunds; NewName(); /* set the name of the city */ break; case MNU_GameYear: /* if game year */ SetGameYear(); /* allow user to set the game year */ break; case MNU_EditWindow: /* if edit window */ SelectNewWindow(EDWINDOW); /* bring the edit window to the foreground */ break; case MNU_MapWindow: /* if map window */ SelectNewWindow(MAPWINDOW); /* bring the map window to the foreground */ break; default: /* unimplemented option */ break; } } long messageTime; DoEdEvent(ePtr) EVENT *ePtr; { int object; object=ePtr->object&0xff; if (object & 0xf0) { /* Must be an icon */ SetWandState(object&0xf, YES); } switch (object) { case 0: DoEdMapEvent(ePtr); break; case 2: DoMoveWindow(ePtr, edWinList); break; case 8: ResizeEdWindow(ePtr); break; } } /* ======================================================================== */ DoMapEvent(ePtr) EVENT *ePtr; { int object; object=ePtr->object&0xff; { switch (object) { case 0: DoMapWindowEvent(ePtr); /* move locus of edit window */ break; case 2: DoMoveMap(ePtr); /* move window */ break; } } } void EditTerra() /* main program entry point */ { int updateWait=0, updateWait2=0; CreateWithIsland=0; ShowSelectedOptions(); /* update menu flag status */ GameLevel=0; /* assume game is easy */ totalFunds=20000L; transFund=policeFund=fireFund=65535L; CityTax=7; EnableMenus(); /* make sure menus are enabled */ for (;;) { long lastMapCursor; /* time value for map window cursor flashing */ if (WaitedEnough(&lastMapCursor,2)) { /* if we should flash the map cursor */ UpdateMapCursor(); /* update the map cursor */ } if (!menuActive) /* if no menus are active */ { char moveFlag; if (CheckKeyState(CNTRLSCAN)) /* Is the control key hit? */ { int dx, dy; dx=joyMoveX; dy=joyMoveY; if (CheckKeyState(HOMESCAN)) /* Home arrow */ { dx--; dy--; } if (CheckKeyState(PGUPSCAN)) /* PgUp arrow */ { dx++; dy--; } if (CheckKeyState(ENDSCAN)) /* End arrow */ { dx--; dy++; } if (CheckKeyState(PGDNSCAN)) /* PgDn arrow */ { dx++; dy++; } if (CheckKeyState(RIGHTSCAN)) /* Right arrow */ dx++; if (CheckKeyState(LEFTSCAN)) /* Left arrow */ dx--; if (CheckKeyState(UPSCAN)) /* Up arrow */ dy--; if (CheckKeyState(DOWNSCAN)) /* Down arrow */ dy++; if (dx || dy) { DisableMenus(); freeze=YES; EdScroll(dx,dy); freeze=NO; } } if (!ScrollLock()) { moveagn: moveFlag=NO; if (mouse_state.x <= 1) { if (MapX > 0) { MapX--; moveFlag=YES; } } else if (mouse_state.x >= screenWidth-6) { if (MapX+edWinWid < WORLD_X) { MapX++; moveFlag=YES; } } if (mouse_state.y < 1 ) { if (MapY > 0) { MapY--; moveFlag=YES; } } else if (mouse_state.y >= screenHeight-6) { if (MapY+edWinLen < WORLD_Y) { MapY++; moveFlag=YES; } } if (moveFlag == YES) { DisableMenus(); /* locks to current process */ newMapFlags[CYMAP]=0; DrawBigMap(); #if 0 DrawObjects(); #endif EnableMenus(); goto moveagn; } } /* End of "if (!ScrollLock" */ } /* End if if (!menuActive) */ if (KBHit() || CheckMouseEvents()) /* if an event happened */ { DisableMenus(); while(KBHit()) { DoKey(); } while (CheckMouseEvents()) { DoEvent(); } lastEvent=TickCount(); } if (simSpeed == 0) { if (WaitedEnough(&updateWait, 18*3)) { DisableMenus(); UpdateEdWindow(); } } #if DEBUGINI OutStr("\nMAIN: re-enable"); #endif EnableMenus(); /* Make sure the menus are enabled */ copyOK=YES; #if DEBUGINI OutStr("\nMAIN: copyok, pass"); #endif Pass(); copyOK=NO; #if DEBUGINI OutStr("\nMAIN: copy not OK"); #endif } } SetGameYear() /* get game year */ { Rect verBox; static char *label="Enter Game Year:"; /* label for window */ char dateBuffer[10]; /* buffer for date */ EVENT event; char *savePtr; int len, x, y, i,c, optLens[8]; Rect tmpBox; Size strSize; const char **optPtr; int posIndex=(-1); long tmpTime; FlushKeys(); CenterRect(&verBox,18,5); tmpBox=*AdjRect(&verBox); savePtr=GSaveRect(&tmpBox); GRectFill(&tmpBox,BUDGFC+PMGREY); GSetAttrib(BUDGBC,BUDGBC,PWHITE); GRectOutline(&tmpBox, 4); /* Outline outline in BLACK */ GSetAttrib(BLACK,BLACK,PBLACK); GRectOutline(&tmpBox,1); GSetAttrib(BUDGBC,BUDGFC,PINV|PWHITE); PrintRectLines(&verBox,verBox.top,label); i=20; x=verBox.left+i; y=verBox.bottom-2; GSetAttrib(BUDGBC,BUDBOXC,PINV|PWHITE); /* GSetAttrib(BUDGBC,BUDBOXC,0); */ /* TempFullScreenCursor(); */ sprintf(dateBuffer,"%4d",(CityTime/48)+1900); /* set date */ GetStrSetNum(); /* Numbers only */ GetStrn(verBox.left+6,verBox.top+3,dateBuffer,5,1); /* allow user to edit the date and set eos */ GetStrSetAll(); /* allow any alphnum input */ if(strlen(dateBuffer) == 4) { /* if they entered a good date */ tmpTime=(atoi(dateBuffer)-1900)*48L; /* set new date */ if (tmpTime > 0) CityTime=tmpTime; } else { /* if not the correct length */ MakeSound(7); /* this should be CANTSND for bad date */ } for(i=0;i < 100;i++) { /* kill any and all events */ GetMouseEvent(&event); /* get event */ } /* RemoveTempCursor(); */ GRestoreRect(&tmpBox,savePtr); DoDate(); /* update the date in the edit window */ } int PSBound(a,n,b) /* return number between a and b */ { if(n < a) n=a; if(n > b) n=b; return n; } /* here is the concept for SetTerrainParameters(): ZDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD? 3 3 3 Terrain Creation Parameters 3 3 3 3 Number Number River 3 3 of Trees of Lakes Curviness 3 3 3 3  xxx%   xxx%   xxx%  3 3 3 3 ZDDDDDDDD? ZDDDDDDDD? 3 3 3 Go 3 3 Cancel 3 3 3 @DDDDDDDDY @DDDDDDDDY 3 @DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDY */ SetTerrainParameters() /* allow user to set up terrain grneration parameters */ { char *savePtr; /* pointer to saved screen data */ char temStr[20]; /* temporary string for percentages */ EVENT event; /* temporary event */ int atButton=0; /* current button we're at */ int buttonDown=0; /* flag telling if mouse button is down */ int goFlag=0; /* flag telling if terrain is to be generated */ long startTime; /* temporary timer value */ int tem; /* temporary counter */ int x,y; /* temporary positions */ Rect wRect; /* rectangle showing extents of window */ Rect tmpRect; /* temporary rectangle for adjusted window rectangle */ Point buttonPos[8]; /* positions of buttons */ FlushKeys(); /* do something...flush keyboard buffer? */ CenterRect(&wRect,36,10); /* center our window */ tmpRect=*AdjRect(&wRect); savePtr=GSaveRect(&tmpRect); GRectFill(&tmpRect,BUDGFC+PMGREY); GSetAttrib(BUDGBC,BUDGBC,PWHITE); GRectOutline(&tmpRect,4); /* Outline outline in BLACK */ GSetAttrib(BLACK,BLACK,PBLACK); GRectOutline(&tmpRect,1); GSetAttrib(BUDGBC,BUDGFC,PINV|PWHITE); PrintRectLines(&wRect,wRect.top,"Terrain Creation Parameters"); x=(wRect.left+2)*8; y=(wRect.top+2)*fontHeight; GPPrintf(x+(1*8),y+(1*fontHeight)-3," Number Number River "); GPPrintf(x+(1*8),y+(2*fontHeight)-3,"of Trees of Lakes Curviness"); buttonPos[0].h=wRect.left+3; /* positions of buttons */ buttonPos[1].h=wRect.left+10; buttonPos[2].h=wRect.left+14; buttonPos[3].h=wRect.left+21; buttonPos[4].h=wRect.left+25; buttonPos[5].h=wRect.left+32; for(tem=0;tem < 6;tem++) { buttonPos[tem].v=wRect.top+5; /* set vertical position */ } buttonPos[6].h=wRect.left+3; buttonPos[7].h=wRect.left+25; buttonPos[6].v=buttonPos[7].v=wRect.top+8; GSetAttrib(BUDGBC,BUDBOXC,PINV|PWHITE); for(tem=0;tem < 3;tem++) { /* for each set of value buttons */ AddTextButton(buttonPos[tem*2],"",0x800+tem*2); /* add button */ AddTextButton(buttonPos[tem*2+1],"",0x801+tem*2); /* add button */ } AddTextButton(buttonPos[6]," Go ",0x806); /* add 'go' button */ AddTextButton(buttonPos[7]," Cancel ",0x807); /* add 'cancel' button */ /* output initial values */ GSetAttrib(BUDGBC,BUDGFC,PINV|PWHITE); sprintf(temStr,"%3d%%%%",treeLevel); /* get string for tree level */ GPPrintf(x+(3*8),y+(3*fontHeight),temStr); /* output string */ sprintf(temStr,"%3d%%%%",lakeLevel); /* get string for lake level */ GPPrintf(x+(14*8),y+(3*fontHeight),temStr); /* output string */ sprintf(temStr,"%3d%%%%",curvLevel); /* get string for curviness level */ GPPrintf(x+(25*8),y+(3*fontHeight),temStr); /* output string */ /* GSetAttrib(BUDGBC,BUDBOXC,0); */ TempFullScreenCursor(); /* give us a cursor */ while(1) { /* until break */ if(0) { /* never unless below code calls it */ repos: SetMouseAtButton(atButton+0x800); } while (KBHit()) /* Clear any keys pressed */ { switch (GetECH()) { case 27: /* if escape */ case 'C': /* (or 'cancel') */ case 'c': goFlag=0; /* don't create random terrain */ goto xit; case 13: /* if carriage return */ case 'G': /* (or 'go') */ case 'g': goFlag=1; /* create random terrain */ goto xit; case '+': atButton=((atButton+1) % 8); /* for each button */ goto repos; case '-': atButton=(atButton)?(atButton-1):7; goto repos; } } if(CheckMouseEvents()) { /* if there's an activity */ GetMouseEvent(&event); /* get event */ downAgain: switch(event.object) { /* get event id */ case 0x800: /* if - trees */ treeLevel=PSBound(0,treeLevel-1,100); goto updateValues; /* update values */ case 0x801: /* if + trees */ treeLevel=PSBound(0,treeLevel+1,100); goto updateValues; /* update values */ case 0x802: /* if - lakes */ lakeLevel=PSBound(0,lakeLevel-1,100); goto updateValues; /* update values */ case 0x803: /* if + lakes */ lakeLevel=PSBound(0,lakeLevel+1,100); goto updateValues; /* update values */ case 0x804: /* if - curviness */ curvLevel=PSBound(0,curvLevel-1,100); goto updateValues; /* update values */ case 0x805: /* if + curviness */ curvLevel=PSBound(0,curvLevel+1,100); goto updateValues; /* update values */ case 0x806: /* if 'go' */ goFlag=1; /* return flag telling to create terrain */ break; case 0x807: /* if 'cancel' */ goFlag=0; /* return flag telling to create terrain */ break; } if(0) { /* only if above code calls us */ updateValues: RemoveTempCursor(); /* remove cursor from screen */ GSetAttrib(BUDGBC,BUDGFC,PINV|PWHITE); sprintf(temStr,"%3d%%%%",treeLevel); /* get string for tree level */ GPPrintf(x+(3*8),y+(3*fontHeight),temStr); /* output string */ sprintf(temStr,"%3d%%%%",lakeLevel); /* get string for lake level */ GPPrintf(x+(14*8),y+(3*fontHeight),temStr); /* output string */ sprintf(temStr,"%3d%%%%",curvLevel); /* get string for curviness level */ GPPrintf(x+(25*8),y+(3*fontHeight),temStr); /* output string */ TempFullScreenCursor(); /* put cursor back */ if(!buttonDown) { /* if button was not down */ buttonDown=1; /* set button down flag */ startTime=TickCount(); /* get current time */ while(StillDown()) { /* while a button is down */ if(TickCount()-startTime > 5) { /* if autorepeat is up */ goto downAgain; } } buttonDown=0; /* button is no longer down */ } else { /* if button is already down */ if(StillDown()) { /* if button is still down */ startTime=TickCount(); /* get current time */ while(startTime == TickCount()) ; /* wait for 1/18th of a second */ goto downAgain; } buttonDown=0; /* no button is down */ } } if(event.object == 0x806 || event.object == 0x807) { /* if one of the exit buttons */ xit: break; /* exit loop */ } } } for(tem=0x800;tem <= 0x809;tem++) { /* remove buttons from hot list */ DelButtonHot(tem); } RemoveTempCursor(); /* remove our cursor */ GRestoreRect(&tmpRect,savePtr); return goFlag; /* return flag telling if terrain is to be created */ } micropolis-activity/src/sim/terrain/messages0000664000076400007640000002140410724145723021611 0ustar simcitysimcity/* messages * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ struct msgpr popMsgs[]={ {"TRAFFIC WARNING-Traffic in this" "\ncity is expanding. The commuters" "\nare getting militant. Highway" "\nshootings are on the rise. Either" "\nbuild more roads and rails or get" "\na bulletproof limo.",-12}, {"CRIME ALERT- Crime in your city is" "\nout of hand. Angry mobs are looting" "\nand vandalizing the central city. The" "\npresident will send in the national" "\nguard soon if you cannot control the" "\nproblem.",-11}, {"NUCLEAR MELTDOWN-A nuclear meltdown" "\nhas occurred at your power plant." "\nYou are advised to avoid the area" "\nuntil the radioactive isotopes decay." "\nMany generations will confront this" "\nproblem before it goes away so don't" "\nhold your breath.",-43}, {"YOU'RE A WINNER- Your mayorial skill" "\nand city planning expertise have" "\nearned you the KEY TO THE CITY. Local" "\nresidents will erect monuments to" "\nyour glory and name their first-born" "\nchildren after you. Why not run for" "\ngovernor?",-100}, {"IMPEACHMENT NOTICE- The entire" "\npopulation of this city has finally" "\nhad enough of your inept planning " "\nand incompetant management. An angry" "\nmob - lead by your mother - has been" "\nspotted in the vicinity of city hall." "\nYou should seriously consider taking" "\nan extended vacation - NOW. (Or read" "\nthe manual and try again).",-200}, {"MONSTER ATTACK- A large reptilian" "\ncreature has been spotted in the" "\nwater. It seems to be attracted to " "\nareas of high pollution. There is a" "\ntrail of destruction wherever it" "\n goes. As a last resort try calling" "\n(Kanji) " "\nOther than that wait till it leaves" "\nthen rebuild from the rubble.",-21}, {"POLLUTION ALERT- Pollution in your" "\ncity has exceeded the maximum" "\nallowable amounts established by" "\nthe Micropolis pollution agency. You" "\nare running the risk of grave" "\necological consequences. Either" "\nclean up your act or open a gas" "\nmask concession at city hall.",-10}, {"MEGALOPOLIS - Congratulations, you" "\nhave reached the highest category" "\nof urban development, the mega-" "\nlopolis. If you manage to reach" "\nthis level send us email at micropolis@laptop.org" "\nor send us a copy of your city. We " "\nmight do something interesting with" "\nit.",-39}, {"METROPOLIS - Your capital city has" "\nnow achieved the status of metro-" "\npolis. The current population is" "\n100,000. With your planning skills," "\nyou should consider running for" "\ngovernor, or maybe VLSI design.",-38}, {"CAPITAL- Your current city has" "\nbecome a capital. The current" "\npopulation here is 50,000. Your" "\npolitical future looks bright.",-37}, {"CITY- Your town has grown into a" "\nfull sized city, with a current" "\npopulation of 10,000. Keep up the" "\ngood work!",-36}, {"TOWN- Congratulations, your village" "\nhas grown to town status. You now" "\nhave 2,000 citizens.",-35}, {"Detroit, MI. 1972-" "\nBy 1970, competition from overseas" "\nand other economic factors pushed the" "\nonce automobile capital of the world" "\ninto recession. Plummeting land" "\nvalues and unemployment then" "\nincreased crime in the inner-city" "\nto chronic levels. You have 10 years" "\nto reduce crime and rebuild the" "\nindustrial base of the city. ",-6}, {"Rio de Janiero, Brazil 2047 -" "\nBy the mid-21st century, the green-" "\nhouse effect increased global tem-" "\nperatures about 4 degrees F. Polar" "\nicecaps melted and raised sea levels" "\nworldwide. Coastal areas were" "\ndevastated by flood and erosion. You" "\nhave 10 years to turn this swamp back" "\ninto a city again.",-8}, {"Tokyo, Japan 1957-" "\nA large reptilian creature has been" "\nspotted heading for Tokyo bay. It" "\nseems to be attracted to the heavy" "\nlevels of industrial pollution. Try" "\nto control the fires, then rebuild" "\nthe industrial center. You have five" "\nyears.",-5}, {"Hamburg, Germany 1944-" "\nAllied fire-bombing of German cities" "\nin WWII caused tremendous damage and" "\nloss of life. People living in the" "\ninner cities were at greatest risk." "\nYou must control the firestorms" "\nduring the bombing and then rebuild" "\nthe city after the war. You have" "\nfive years.",-3}, {"San Francisco, CA. 1906-" "\nDamage from the earthquake was minor" "\ncompared to that of the ensuing" "\nfires, which took days to control." "\n1500 people died. Controlling the" "\nfires should be your initial concern." "\nThen clear the rubble and start re-" "\nbuilding. You have five years.",-2}, {"Dullsville, USA 1900-" "\nThings haven't changed much around" "\nhere in the last hundred years or" "\nso and the residents are beginning" "\nto get bored. They think Dullsville" "\ncould be the next great city with" "\nthe right leader. It is your job to" "\nattract new growth and development," "\nturning Dullsville into a" "\nMetropolis within 30 years.",-1}, {"Boston, MA. 2010-" "\nA major meltdown is about to occur" "\nat one of the new downtown nuclear" "\nreactors. The area in the vicinity" "\nof the reactor will be severely " "\ncontaminated by radiation, forcing" "\nyou to restructure the city around" "\nit. You have 5 years to get the" "\nsituation under control.",-7}, {"Bern, Switzerland 1965-" "\nThe roads here are becoming more" "\ncongested every day, and the" "\nresidents are upset. They demand" "\nthat you do something about it." "\nSome have suggested a mass transit" "\nsystem as the answer, but this" "\nwould require major rezoning in" "\nthe downtown area. You have" "\nten years.",-4}, {NULL, 0}}; micropolis-activity/src/sim/s_power.c0000664000076400007640000001517110724145723020241 0ustar simcitysimcity/* s_power.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" /* Power Scan */ int PowerStackNum; char PowerStackX[PWRSTKSIZE], PowerStackY[PWRSTKSIZE]; QUAD MaxPower, NumPower; /* comefrom: TestForCond DoPowerScan TryGo */ MoveMapSim (short MDir) { switch (MDir) { case 0: if (SMapY > 0) { SMapY--; return (TRUE); } if (SMapY < 0) SMapY = 0; return (FALSE); case 1: if (SMapX < (WORLD_X - 1)) { SMapX++; return (TRUE); } if (SMapX > (WORLD_X - 1)) SMapX = WORLD_X - 1; return (FALSE); case 2: if (SMapY < (WORLD_Y - 1)) { SMapY++; return (TRUE); } if (SMapY > (WORLD_Y - 1)) SMapY = WORLD_Y - 1; return (FALSE); case 3: if (SMapX > 0) { SMapX--; return (TRUE); } if (SMapX < 0) SMapX = 0; return (FALSE); case 4: return (TRUE); } return (FALSE); } /* inlined -Don */ #if 0 /* comefrom: DoPowerScan */ SetPowerBit(void) { register int PowerWrd; /* XXX: assumes 120x100 */ PowerWrd = (SMapX >>4) + (SMapY <<3); PowerMap[PowerWrd] |= 1 << (SMapX & 15); } #endif /* inlined */ #if 0 /* comefrom: TestForCond */ int TestPowerBit(void) { register int PowerWrd; if ((CChr9 == NUCLEAR) || (CChr9 == POWERPLANT)) return(1); /* XXX: assumes 120x100 */ PowerWrd = (SMapX >>4) + (SMapY <<3); if (PowerWrd >= PWRMAPSIZE) return(0); return ((PowerMap[PowerWrd] & (1 << (SMapX & 15))) ? 1 : 0); } #endif /* comefrom: DoPowerScan */ short TestForCond(short TFDir) { register int xsave, ysave, PowerWrd; xsave = SMapX; ysave = SMapY; if (MoveMapSim(TFDir)) { /* TestPowerBit was taking a lot of time so I swapped the & order -Don */ #if 0 if ((Map[SMapX][SMapY] & CONDBIT) && (!TestPowerBit())) #else if ((Map[SMapX][SMapY] & CONDBIT) && (CChr9 != NUCLEAR) && (CChr9 != POWERPLANT) && ( #if 0 (PowerWrd = (SMapX >>4) + (SMapY <<3)), #else (PowerWrd = POWERWORD(SMapX, SMapY)), #endif ((PowerWrd > PWRMAPSIZE) || ((PowerMap[PowerWrd] & (1 << (SMapX & 15))) == 0)))) #endif { SMapX = xsave; SMapY = ysave; return (TRUE); } } SMapX = xsave; SMapY = ysave; return (FALSE); } /* comefrom: Simulate SpecialInit InitSimMemory */ DoPowerScan() { short ADir; register int ConNum, Dir, x; for (x = 0; x < PWRMAPSIZE; x++) PowerMap[x] = 0; /* ClearPowerMem */ MaxPower = (CoalPop * 700L) + (NuclearPop * 2000L); /* post release */ NumPower = 0; while (PowerStackNum) { PullPowerStack(); ADir = 4; do { if (++NumPower > MaxPower) { SendMes(40); return; } MoveMapSim(ADir); /* inlined -Don */ #if 0 SetPowerBit(); #else #if 1 SETPOWERBIT(SMapX, SMapY); #else PowerMap[(SMapX >>4) + (SMapY <<3)] |= 1 << (SMapX & 15); #endif #endif ConNum = 0; Dir = 0; while ((Dir < 4) && (ConNum < 2)) { if (TestForCond(Dir)) { ConNum++; ADir = Dir; } Dir++; } if (ConNum > 1) PushPowerStack(); } while (ConNum); } } /* comefrom: DoPowerScan DoSPZone */ PushPowerStack(void) { if (PowerStackNum < (PWRSTKSIZE - 2)) { PowerStackNum++; PowerStackX[PowerStackNum] = SMapX; PowerStackY[PowerStackNum] = SMapY; } } /* comefrom: DoPowerScan */ PullPowerStack(void) { if (PowerStackNum > 0) { SMapX = PowerStackX[PowerStackNum]; SMapY = PowerStackY[PowerStackNum]; PowerStackNum--; } } micropolis-activity/src/sim/s_gen.c0000664000076400007640000003443410724145723017661 0ustar simcitysimcity/* s_gen.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" /* Generate Map */ #define WATER_LOW RIVER /* 2 */ #define WATER_HIGH LASTRIVEDGE /* 20 */ #define WOODS_LOW TREEBASE /* 21 */ #define WOODS_HIGH UNUSED_TRASH2 /* 39 */ short XStart, YStart, MapX, MapY; short Dir, LastDir; int TreeLevel = -1; /* level for tree creation */ int LakeLevel = -1; /* level for lake creation */ int CurveLevel = -1; /* level for river curviness */ int CreateIsland = -1; /* -1 => 10%, 0 => never, 1 => always */ GenerateNewCity(void) { GenerateSomeCity(Rand16()); } GenerateSomeCity(int r) { if (CityFileName != NULL) { ckfree(CityFileName); CityFileName = NULL; } gettimeofday(&start_time, NULL); GenerateMap(r); ScenarioID = 0; CityTime = 0; InitSimLoad = 2; DoInitialEval = 0; InitWillStuff(); ResetMapState(); ResetEditorState(); InvalidateEditors(); InvalidateMaps(); UpdateFunds(); DoSimInit(); Eval("UIDidGenerateNewCity"); Kick(); } ERand(short limit) { short x, z; z = Rand(limit); x = Rand(limit); if (z < x) return (z); return (x); } GenerateMap(int r) { SeedRand(r); if (CreateIsland < 0) { if (Rand(100) < 10) { /* chance that island is generated */ MakeIsland(); return; } } if (CreateIsland == 1) { MakeNakedIsland(); } else { ClearMap(); } GetRandStart(); if (CurveLevel != 0) { DoRivers(); } if (LakeLevel != 0) { MakeLakes(); } SmoothRiver(); if (TreeLevel != 0) { DoTrees(); } RandomlySeedRand(); } ClearMap(void) { register short x, y; for (x = 0; x < WORLD_X; x++) for (y = 0; y < WORLD_Y; y++) Map[x][y] = DIRT; } ClearUnnatural(void) { register short x, y; for (x = 0; x < WORLD_X; x++) { for (y = 0; y < WORLD_Y; y++) { if (Map[x][y] > WOODS) { Map[x][y] = DIRT; } } } } #define RADIUS 18 MakeNakedIsland() { register int x, y; for (x = 0; x < WORLD_X; x++) for (y = 0; y < WORLD_Y; y++) Map[x][y] = RIVER; for (x = 5; x < WORLD_X - 5; x++) for (y = 5; y < WORLD_Y - 5; y++) Map[x][y] = DIRT; for (x = 0; x < WORLD_X - 5; x += 2) { MapX = x ; MapY = ERand(RADIUS); BRivPlop(); MapY = (WORLD_Y - 10) - ERand(RADIUS); BRivPlop(); MapY = 0; SRivPlop(); MapY = (WORLD_Y - 6); SRivPlop(); } for (y = 0; y < WORLD_Y - 5; y += 2) { MapY = y ; MapX = ERand(RADIUS); BRivPlop(); MapX = (WORLD_X - 10) - ERand(RADIUS); BRivPlop(); MapX = 0; SRivPlop(); MapX = (WORLD_X - 6); SRivPlop(); } } MakeIsland(void) { MakeNakedIsland(); SmoothRiver(); DoTrees(); } MakeLakes(void) { short Lim1, Lim2, t, z; register short x, y; if (LakeLevel < 0) { Lim1 = Rand(10); } else { Lim1 = LakeLevel / 2; } for (t = 0; t < Lim1; t++) { x = Rand(WORLD_X - 21) + 10; y = Rand(WORLD_Y - 20) + 10; Lim2 = Rand(12) + 2; for (z = 0; z < Lim2; z++) { MapX = x - 6 + Rand(12); MapY = y - 6 + Rand(12); if (Rand(4)) SRivPlop(); else BRivPlop(); } } } GetRandStart(void) { XStart = 40 + Rand(WORLD_X - 80); YStart = 33 + Rand(WORLD_Y - 67); MapX = XStart; MapY = YStart; } MoveMap(short dir) { static short DirTab[2][8] = { { 0, 1, 1, 1, 0, -1, -1, -1}, {-1,-1, 0, 1, 1, 1, 0, -1} }; dir = dir & 7; MapX += DirTab[0][dir]; MapY += DirTab[1][dir]; } TreeSplash(short xloc, short yloc) { short dis, dir; register short xoff, yoff, z; if (TreeLevel < 0) { dis = Rand(150) + 50; } else { dis = Rand(100 + (TreeLevel * 2)) + 50; } MapX = xloc; MapY = yloc; for (z = 0; z < dis; z++) { dir = Rand(7); MoveMap(dir); if (!(TestBounds(MapX, MapY))) return; if ((Map[MapX][MapY] & LOMASK) == DIRT) Map[MapX][MapY] = WOODS + BLBNBIT; } } DoTrees(void) { short Amount, x, xloc, yloc; if (TreeLevel < 0) { Amount = Rand(100) + 50; } else { Amount = TreeLevel + 3; } for(x = 0; x < Amount; x++) { xloc = Rand(WORLD_X - 1); yloc = Rand(WORLD_Y - 1); TreeSplash(xloc, yloc); } SmoothTrees(); SmoothTrees(); } SmoothRiver(void) { static short DX[4] = {-1, 0, 1, 0}; static short DY[4] = { 0, 1, 0,-1}; static short REdTab[16] = { 13+BULLBIT, 13+BULLBIT, 17+BULLBIT, 15+BULLBIT, 5+BULLBIT, 2, 19+BULLBIT, 17+BULLBIT, 9+BULLBIT, 11+BULLBIT, 2, 13+BULLBIT, 7+BULLBIT, 9+BULLBIT, 5+BULLBIT, 2 }; short bitindex, z, Xtem, Ytem; register short temp, MapX, MapY; for (MapX = 0; MapX < WORLD_X; MapX++) { for (MapY = 0; MapY < WORLD_Y; MapY++) { if (Map[MapX][MapY] == REDGE) { bitindex = 0; for (z = 0; z < 4; z++) { bitindex = bitindex << 1; Xtem = MapX + DX[z]; Ytem = MapY + DY[z]; if (TestBounds(Xtem, Ytem) && ((Map[Xtem][Ytem] & LOMASK) != DIRT) && (((Map[Xtem][Ytem]&LOMASK) < WOODS_LOW) || ((Map[Xtem][Ytem]&LOMASK) > WOODS_HIGH))) bitindex++; } temp = REdTab[bitindex & 15]; if ((temp != RIVER) && (Rand(1))) temp++; Map[MapX][MapY] = temp; } } } } IsTree(int cell) { if (((cell & LOMASK) >= WOODS_LOW) && ((cell & LOMASK) <= WOODS_HIGH)) return TRUE; return FALSE; } SmoothTrees(void) { static short DX[4] = {-1, 0, 1, 0}; static short DY[4] = { 0, 1, 0,-1}; static short TEdTab[16] = { 0, 0, 0, 34, 0, 0, 36, 35, 0, 32, 0, 33, 30, 31, 29, 37 }; short bitindex, z, Xtem, Ytem; register short temp, MapX, MapY; for (MapX = 0; MapX < WORLD_X; MapX++) { for (MapY = 0; MapY < WORLD_Y; MapY++) { if (IsTree(Map[MapX][MapY])) { bitindex = 0; for (z = 0; z < 4; z++) { bitindex = bitindex << 1; Xtem = MapX + DX[z]; Ytem = MapY + DY[z]; if (TestBounds(Xtem, Ytem) && IsTree(Map[Xtem][Ytem])) { bitindex++; } } temp = TEdTab[bitindex & 15]; if (temp) { if (temp != WOODS) if ((MapX + MapY) & 1) temp = temp - 8; Map[MapX][MapY] = temp + BLBNBIT; } else Map[MapX][MapY] = temp; } } } } DoRivers(void) { LastDir = Rand(3); Dir = LastDir; DoBRiv(); MapX = XStart; MapY = YStart; LastDir = LastDir ^ 4; Dir = LastDir; DoBRiv(); MapX = XStart; MapY = YStart; LastDir = Rand(3); DoSRiv(); } DoBRiv(void) { int r1, r2; if (CurveLevel < 0) { r1 = 100; r2 = 200; } else { r1 = CurveLevel + 10; r2 = CurveLevel + 100; } while (TestBounds (MapX + 4, MapY + 4)) { BRivPlop(); if (Rand(r1) < 10) { Dir = LastDir; } else { if (Rand(r2) > 90) Dir++; if (Rand(r2) > 90) Dir--; } MoveMap(Dir); } } DoSRiv(void) { int r1, r2; if (CurveLevel < 0) { r1 = 100; r2 = 200; } else { r1 = CurveLevel + 10; r2 = CurveLevel + 100; } while (TestBounds (MapX + 3, MapY + 3)) { SRivPlop(); if (Rand(r1) < 10) { Dir = LastDir; } else { if (Rand(r2) > 90) Dir++; if (Rand(r2) > 90) Dir--; } MoveMap(Dir); } } PutOnMap(short Mchar, short Xoff, short Yoff) { register short Xloc, Yloc, temp; if (Mchar == 0) return; Xloc = MapX + Xoff; Yloc = MapY + Yoff; if (TestBounds(Xloc, Yloc) == FALSE) return; if (temp = Map[Xloc][Yloc]) { temp = temp & LOMASK; if (temp == RIVER) if (Mchar != CHANNEL) return; if (temp == CHANNEL) return; } Map[Xloc][Yloc] = Mchar; } BRivPlop(void) { static short BRMatrix[9][9] = { { 0, 0, 0, 3, 3, 3, 0, 0, 0 }, { 0, 0, 3, 2, 2, 2, 3, 0, 0 }, { 0, 3, 2, 2, 2, 2, 2, 3, 0 }, { 3, 2, 2, 2, 2, 2, 2, 2, 3 }, { 3, 2, 2, 2, 4, 2, 2, 2, 3 }, { 3, 2, 2, 2, 2, 2, 2, 2, 3 }, { 0, 3, 2, 2, 2, 2, 2, 3, 0 }, { 0, 0, 3, 2, 2, 2, 3, 0, 0 }, { 0, 0, 0, 3, 3, 3, 0, 0, 0 } }; short x, y; for (x = 0; x < 9; x++) for (y = 0; y < 9; y++) PutOnMap(BRMatrix[y][x], x, y); } SRivPlop(void) { static short SRMatrix[6][6] = { { 0, 0, 3, 3, 0, 0 }, { 0, 3, 2, 2, 3, 0 }, { 3, 2, 2, 2, 2, 3 }, { 3, 2, 2, 2, 2, 3 }, { 0, 3, 2, 2, 3, 0 }, { 0, 0, 3, 3, 0, 0 } }; short x, y; for (x = 0; x < 6; x++) for (y = 0; y < 6; y++) PutOnMap(SRMatrix[y][x], x, y); } SmoothWater() { int x, y; for(x = 0; x < WORLD_X; x++) { for(y = 0; y < WORLD_Y; y++) { /* If water: */ if (((Map[x][y] & LOMASK) >= WATER_LOW) && ((Map[x][y] & LOMASK) <= WATER_HIGH)) { if (x > 0) { /* If nearest object is not water: */ if (((Map[x - 1][y] & LOMASK) < WATER_LOW) || ((Map[x - 1][y] & LOMASK) > WATER_HIGH)) { goto edge; } } if (x < (WORLD_X - 1)) { /* If nearest object is not water: */ if (((Map[x+1][y]&LOMASK) < WATER_LOW) || ((Map[x+1][y]&LOMASK) > WATER_HIGH)) { goto edge; } } if (y > 0) { /* If nearest object is not water: */ if (((Map[x][y - 1] & LOMASK) < WATER_LOW) || ((Map[x][y-1]&LOMASK) > WATER_HIGH)) { goto edge; } } if (y < (WORLD_Y - 1)) { /* If nearest object is not water: */ if (((Map[x][y + 1] & LOMASK) < WATER_LOW) || ((Map[x][y + 1] & LOMASK) > WATER_HIGH)) { edge: Map[x][y]=REDGE; /* set river edge */ continue; } } } } } for (x = 0; x < WORLD_X; x++) { for (y = 0; y < WORLD_Y; y++) { /* If water which is not a channel: */ if (((Map[x][y] & LOMASK) != CHANNEL) && ((Map[x][y] & LOMASK) >= WATER_LOW) && ((Map[x][y] & LOMASK) <= WATER_HIGH)) { if (x > 0) { /* If nearest object is not water; */ if (((Map[x - 1][y] & LOMASK) < WATER_LOW) || ((Map[x - 1][y] & LOMASK) > WATER_HIGH)) { continue; } } if (x < (WORLD_X - 1)) { /* If nearest object is not water: */ if (((Map[x + 1][y] & LOMASK) < WATER_LOW) || ((Map[x + 1][y] & LOMASK) > WATER_HIGH)) { continue; } } if (y > 0) { /* If nearest object is not water: */ if (((Map[x][y - 1] & LOMASK) < WATER_LOW) || ((Map[x][y - 1] & LOMASK) > WATER_HIGH)) { continue; } } if (y < (WORLD_Y - 1)) { /* If nearest object is not water: */ if (((Map[x][y + 1] & LOMASK) < WATER_LOW) || ((Map[x][y + 1] & LOMASK) > WATER_HIGH)) { continue; } } Map[x][y] = RIVER; /* make it a river */ } } } for (x = 0; x < WORLD_X; x++) { for (y = 0; y < WORLD_Y; y++) { /* If woods: */ if (((Map[x][y] & LOMASK) >= WOODS_LOW) && ((Map[x][y] & LOMASK) <= WOODS_HIGH)) { if (x > 0) { /* If nearest object is water: */ if ((Map[x - 1][y] == RIVER) || (Map[x - 1][y] == CHANNEL)) { Map[x][y] = REDGE; /* make it water's edge */ continue; } } if (x < (WORLD_X - 1)) { /* If nearest object is water: */ if ((Map[x + 1][y] == RIVER) || (Map[x + 1][y] == CHANNEL)) { Map[x][y] = REDGE; /* make it water's edge */ continue; } } if (y > 0) { /* If nearest object is water: */ if ((Map[x][y - 1] == RIVER) || (Map[x][y - 1] == CHANNEL)) { Map[x][y] = REDGE; /* make it water's edge */ continue; } } if (y < (WORLD_Y - 1)) { /* If nearest object is water; */ if ((Map[x][y + 1] == RIVER) || (Map[x][y + 1] == CHANNEL)) { Map[x][y] = REDGE; /* make it water's edge */ continue; } } } } } } micropolis-activity/src/sim/w_budget.c0000664000076400007640000002230410724145723020357 0ustar simcitysimcity/* w_budget.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" float roadPercent = 0.0; float policePercent = 0.0; float firePercent = 0.0; QUAD roadValue; QUAD policeValue; QUAD fireValue; QUAD roadMaxValue; QUAD policeMaxValue; QUAD fireMaxValue; int MustDrawCurrPercents = 0; int MustDrawBudgetWindow = 0; int SetBudget(char *flowStr, char *previousStr, char *currentStr, char *collectedStr, short tax); void InitFundingLevel(void) { firePercent = 1.0; /* 1.0 */ fireValue = 0; policePercent = 1.0; /* 1.0 */ policeValue = 0; roadPercent = 1.0; /* 1.0 */ roadValue = 0; drawBudgetWindow(); drawCurrPercents(); } DoBudget() { DoBudgetNow(0); } DoBudgetFromMenu() { DoBudgetNow(1); } DoBudgetNow(int fromMenu) { QUAD yumDuckets; QUAD total; QUAD moreDough; QUAD fireInt, policeInt, roadInt; fireInt = (int)(((float)FireFund) * firePercent); policeInt = (int)(((float)PoliceFund) * policePercent); roadInt = (int)(((float)RoadFund) * roadPercent); total = fireInt + policeInt + roadInt; yumDuckets = TaxFund + TotalFunds; if (yumDuckets > total) { fireValue = fireInt; policeValue = policeInt; roadValue = roadInt; } else if (total > 0) { if (yumDuckets > roadInt) { roadValue = roadInt; yumDuckets -= roadInt; if (yumDuckets > fireInt) { fireValue = fireInt; yumDuckets -= fireInt; if (yumDuckets > policeInt) { policeValue = policeInt; yumDuckets -= policeInt; } else { policeValue = yumDuckets; if (yumDuckets > 0) policePercent = ((float)yumDuckets) / ((float)PoliceFund); else policePercent = 0.0; } } else { fireValue = yumDuckets; policeValue = 0; policePercent = 0.0; if (yumDuckets > 0) firePercent = ((float)yumDuckets) / ((float)FireFund); else firePercent = 0.0; } } else { roadValue = yumDuckets; if (yumDuckets > 0) roadPercent = ((float)yumDuckets) / ((float)RoadFund); else roadPercent = 0.0; fireValue = 0; policeValue = 0; firePercent = 0.0; policePercent = 0.0; } } else { fireValue = 0; policeValue = 0; roadValue = 0; firePercent = 1.0; policePercent = 1.0; roadPercent = 1.0; } fireMaxValue = FireFund; policeMaxValue = PoliceFund; roadMaxValue = RoadFund; drawCurrPercents(); noMoney: if ((!autoBudget) || fromMenu) { if (!autoBudget) { /* TODO: append the the current year to the budget string */ } ShowBudgetWindowAndStartWaiting(); if (!fromMenu) { FireSpend = fireValue; PoliceSpend = policeValue; RoadSpend = roadValue; total = FireSpend + PoliceSpend + RoadSpend; moreDough = (QUAD)(TaxFund - total); Spend(-moreDough); } drawBudgetWindow(); drawCurrPercents(); DoUpdateHeads(); } else { /* autoBudget & !fromMenu */ if ((yumDuckets) > total) { moreDough = (QUAD)(TaxFund - total); Spend(-moreDough); FireSpend = FireFund; PoliceSpend = PoliceFund; RoadSpend = RoadFund; drawBudgetWindow(); drawCurrPercents(); DoUpdateHeads(); } else { autoBudget = 0; /* XXX: force autobudget */ MustUpdateOptions = 1; ClearMes(); SendMes(29); goto noMoney; } } } drawBudgetWindow(void) { MustDrawBudgetWindow = 1; } ReallyDrawBudgetWindow(void) { short cashFlow, cashFlow2; char numStr[256], dollarStr[256], collectedStr[256], flowStr[256], previousStr[256], currentStr[256]; cashFlow = TaxFund - fireValue - policeValue - roadValue; cashFlow2 = cashFlow; if (cashFlow < 0) { cashFlow = -cashFlow; sprintf(numStr, "%d", cashFlow); makeDollarDecimalStr(numStr, dollarStr); sprintf(flowStr, "-%s", dollarStr); } else { sprintf(numStr, "%d", cashFlow); makeDollarDecimalStr(numStr, dollarStr); sprintf(flowStr, "+%s", dollarStr); } sprintf(numStr, "%d", TotalFunds); makeDollarDecimalStr(numStr, previousStr); sprintf(numStr, "%d", cashFlow2 + TotalFunds); makeDollarDecimalStr(numStr, currentStr); sprintf(numStr, "%d", TaxFund); makeDollarDecimalStr(numStr, collectedStr); SetBudget(flowStr, previousStr, currentStr, collectedStr, CityTax); } drawCurrPercents(void) { MustDrawCurrPercents = 1; } ReallyDrawCurrPercents(void) { char num[256]; char fireWant[256], policeWant[256], roadWant[256]; char fireGot[256], policeGot[256], roadGot[256]; sprintf(num, "%d", fireMaxValue); makeDollarDecimalStr(num, fireWant); sprintf(num, "%d", policeMaxValue); makeDollarDecimalStr(num, policeWant); sprintf(num, "%d", roadMaxValue); makeDollarDecimalStr(num, roadWant); sprintf(num, "%d", (int)(fireMaxValue * firePercent)); makeDollarDecimalStr(num, fireGot); sprintf(num, "%d", (int)(policeMaxValue * policePercent)); makeDollarDecimalStr(num, policeGot); sprintf(num, "%d", (int)(roadMaxValue * roadPercent)); makeDollarDecimalStr(num, roadGot); SetBudgetValues(roadGot, roadWant, policeGot, policeWant, fireGot, fireWant); } UpdateBudgetWindow() { if (MustDrawCurrPercents) { ReallyDrawCurrPercents(); MustDrawCurrPercents = 0; } if (MustDrawBudgetWindow) { ReallyDrawBudgetWindow(); MustDrawBudgetWindow = 0; } } UpdateBudget() { drawCurrPercents(); drawBudgetWindow(); Eval("UIUpdateBudget"); } ShowBudgetWindowAndStartWaiting() { Eval("UIShowBudgetAndWait"); Pause(); } SetBudget(char *flowStr, char *previousStr, char *currentStr, char *collectedStr, short tax) { char buf[256]; sprintf(buf, "UISetBudget {%s} {%s} {%s} {%s} {%d}", flowStr, previousStr, currentStr, collectedStr, tax); Eval(buf); } SetBudgetValues(char *roadGot, char *roadWant, char *policeGot, char *policeWant, char *fireGot, char *fireWant) { char buf[256]; sprintf(buf, "UISetBudgetValues {%s} {%s} %d {%s} {%s} %d {%s} {%s} %d", roadGot, roadWant, (int)(roadPercent * 100), policeGot, policeWant, (int)(policePercent * 100), fireGot, fireWant, (int)(firePercent * 100)); Eval(buf); } micropolis-activity/src/sim/s_init.c0000664000076400007640000001143710724145723020051 0ustar simcitysimcity/* s_init.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" /* Initialize Stuff */ /* comefrom: loadFile bootUp main doMessage */ InitWillStuff() { register short x, y, z; RandomlySeedRand(); InitGraphMax(); RoadEffect = 32; PoliceEffect = 1000; /*added*/ FireEffect = 1000; CityScore = 500; CityPop = -1; LastCityTime = -1; LastCityYear = -1; LastCityMonth = -1; LastFunds = -1; LastR = LastC = LastI = -999999; OverRide = 0; PendingTool = -1; MesNum = 0; MessagePort = 0; RoadFund = 0; PoliceFund = 0; FireFund = 0; UpdateDelayed = 0; ValveFlag = 1; DestroyAllSprites(); DisasterEvent = 0; TaxFlag = 0; for (x = 0; x < HWLDX; x++) { for (y = 0; y < HWLDY; y++) { PopDensity[x][y] = 0; TrfDensity[x][y] = 0; PollutionMem[x][y] = 0; LandValueMem[x][y] = 0; CrimeMem[x][y] = 0; } } for (x = 0; x < QWX; x++) { for (y = 0; y < QWY; y++) { TerrainMem[x][y] = 0; } } for (x = 0; x < SmX; x++) { for (y = 0; y < SmY; y++) { RateOGMem[x][y] = 0; FireRate[x][y] = 0; ComRate[x][y] = 0; PoliceMap[x][y] = 0; PoliceMapEffect[x][y] = 0; FireRate[x][y] = 0; } } ResetLastKeys(); DoNewGame(); DoUpdateHeads(); } ResetMapState() { SimView *view; for (view = sim->map; view != NULL; view = view->next) { view->map_state = ALMAP; } } ResetEditorState() { SimView *view; for (view = sim->editor; view != NULL; view = view->next) { view->tool_state = dozeState; view->tool_state_save = -1; } } micropolis-activity/src/sim/w_sound.c0000664000076400007640000001122210724145723020232 0ustar simcitysimcity/* w_sound.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" /* Sound routines */ int SoundInitialized = 0; short Dozing; InitializeSound() { char cmd[256]; SoundInitialized = 1; if (!UserSoundOn) return; Eval("UIInitializeSound"); } ShutDownSound() { if (SoundInitialized) { SoundInitialized = 0; Eval("UIShutDownSound"); } } MakeSound(char *channel, char *id) { char buf[256]; if (!UserSoundOn) return; if (!SoundInitialized) InitializeSound(); sprintf(buf, "UIMakeSound \"%s\" \"%s\"", channel, id); Eval(buf); } MakeSoundOn(SimView *view, char *channel, char *id) { char buf[256]; if (!UserSoundOn) return; if (!SoundInitialized) InitializeSound(); sprintf(buf, "UIMakeSoundOn %s \"%s\" \"%s\"", Tk_PathName(view->tkwin), channel, id); Eval(buf); } StartBulldozer(void) { if (!UserSoundOn) return; if (!SoundInitialized) InitializeSound(); if (!Dozing) { DoStartSound("edit", "1"); Dozing = 1; } } StopBulldozer(void) { if ((!UserSoundOn) || (!SoundInitialized)) return; DoStopSound("1"); Dozing = 0; } /* comefrom: doKeyEvent */ SoundOff(void) { if (!SoundInitialized) InitializeSound(); Eval("UISoundOff"); Dozing = 0; } DoStartSound(char *channel, char *id) { char buf[256]; sprintf(buf, "UIStartSound %s %s", channel, id); Eval(buf); } DoStopSound(char *id) { char buf[256]; sprintf(buf, "UIStopSound %s", id); Eval(buf); } micropolis-activity/src/sim/g_bigmap.c0000664000076400007640000002165310724145723020332 0ustar simcitysimcity/* g_bigmap.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" int dynamicFilter(int c, int r); int WireDrawBeegMapRect(SimView *view, short x, short y, short w, short h); drawBeegMaps() { sim_update_editors(); } MemDrawBeegMapRect(SimView *view, int x, int y, int w, int h) { int lineBytes = view->line_bytes; int pixelBytes = view->pixel_bytes; QUAD ii, mm; unsigned short *map; unsigned short tile; unsigned char blink = (flagBlink <= 0), *bt = view->bigtiles; short col, row; short **have, *ha; if (x < view->tile_x) { if ((w -= (view->tile_x - x)) <= 0) return; x = view->tile_x; } if (y < view->tile_y) { if ((h -= (view->tile_y - y)) <= 0) return; y = view->tile_y; } if ((x + w) > (view->tile_x + view->tile_width)) { if ((w -= ((x + w) - (view->tile_x + view->tile_width))) <= 0) return; } if ((y + h) > (view->tile_y + view->tile_height)) { if ((h -= ((y + h) - (view->tile_y + view->tile_height))) <= 0) return; } if (view->x->color) { register unsigned QUAD *image, *mem; image = (unsigned QUAD *)view->data; ii = ((lineBytes * h * 16) - 16) / sizeof(unsigned QUAD); map = (unsigned short *)&Map[x][y]; mm = WORLD_Y - h; have = view->tiles; /* * Huge Berserk Rebel Warthog */ for (col = 0; col < w; col++) { ha = &have[col][0]; image = (unsigned QUAD *)(view->data + (col * 16 * pixelBytes)); for (row = 0; row < h; row++, ha++) { tile = *(map++); if ((tile & LOMASK) >= TILE_COUNT) tile -= TILE_COUNT; /* Blink lightning bolt in unpowered zone center */ if (blink && (tile & ZONEBIT) && !(tile & PWRBIT)) { tile = LIGHTNINGBOLT; } else { tile &= LOMASK; } // if if ( (tile > 63) && (view->dynamic_filter != 0) && (dynamicFilter(col + x, row + y) == 0) ) { tile = 0; } // if /* XXX */ if (tile == *ha) { image = (unsigned QUAD *)(((unsigned char *)image) + (lineBytes * 16)); } else { *ha = tile; mem = (unsigned QUAD *)&(bt[tile * 256 * pixelBytes]); /* XXX: handle depth for big tiles */ #if 1 /* Very un-rolled loop. */ #define ROW1_8(n) \ image[0] = mem[0+n]; \ image[1] = mem[1+n]; \ image[2] = mem[2+n]; \ image[3] = mem[3+n]; \ image = (unsigned QUAD *)(((unsigned char *)image) + lineBytes); #define ROW2_8(n) ROW1_8(n) ROW1_8(n+4) #define ROW4_8(n) ROW2_8(n) ROW2_8(n+8) #define ROW8_8(n) ROW4_8(n) ROW4_8(n+16) #define ROW16_8() ROW8_8(0) ROW8_8(32) #define ROW1_16(n) \ memcpy((char *)image, (char *)mem + (2 * 16 * (n)), 2 * 16); \ image = (unsigned QUAD *)(((unsigned char *)image) + lineBytes); #define ROW2_16(n) ROW1_16(n) ROW1_16(n+1) #define ROW4_16(n) ROW2_16(n) ROW2_16(n+2) #define ROW8_16(n) ROW4_16(n) ROW4_16(n+4) #define ROW16_16() ROW8_16(0) ROW8_16(8) switch (view->x->depth) { case 8: ROW16_8(); break; case 15: case 16: ROW16_16(); break; case 24: case 32: default: /* XXX: handle different depths */ break; } // switch #else /* Not so un-rolled loop. */ { int i; for (i = 16; i > 0; i--) { image[0] = mem[0]; image[1] = mem[1]; image[2] = mem[2]; image[3] = mem[3]; image = (unsigned QUAD *)(((unsigned char *)image) + lineBytes); mem += 4; } } // scope #endif } // if } // for row image -= ii; map += mm; } // for col } else { register unsigned short *image, *mem; image = (unsigned short *)view->data; ii = ((lineBytes * h * 16) - 2) / sizeof(unsigned short); map = (unsigned short *)&Map[x][y]; mm = WORLD_Y - h; have = view->tiles; for (col = 0; col < w; col++) { ha = &have[col][0]; image = (unsigned short *)(view->data + (col * 2)); for (row = 0; row < h; row++, ha++) { tile = *(map++); if ((tile & LOMASK) >= TILE_COUNT) tile -= TILE_COUNT; /* Blink lightning bolt in unpowered zone center */ if (blink && (tile & ZONEBIT) && !(tile & PWRBIT)) tile = LIGHTNINGBOLT; else tile &= LOMASK; if (tile == *ha) { image = (unsigned short *) (((unsigned char *)image) + (lineBytes * 16)); } else { *ha = tile; mem = (unsigned short *)&(bt[tile * 32]); { char i; for (i = 16; i > 0; i--) { *image = *mem; image = (unsigned short *)(((unsigned char *)image) + lineBytes); mem++; } } } } image -= ii; map += mm; } } } WireDrawBeegMapRect(SimView *view, short x, short y, short w, short h) { unsigned short *map; unsigned short tile; unsigned char blink = (flagBlink <= 0); short col, row; QUAD mm; short **have, *ha; if (x < view->tile_x) { if ((w -= (view->tile_x - x)) <= 0) return; x = view->tile_x; } if (y < view->tile_y) { if ((h -= (view->tile_y - y)) <= 0) return; y = view->tile_y; } if ((x + w) > (view->tile_x + view->tile_width)) { if ((w -= ((x + w) - (view->tile_x + view->tile_width))) <= 0) return; } if ((y + h) > (view->tile_y + view->tile_height)) { if ((h -= ((y + h) - (view->tile_y + view->tile_height))) <= 0) return; } map = (unsigned short *)&Map[x][y]; mm = WORLD_Y - h; have = view->tiles; for (col = 0; col < w; col++) { ha = &have[col][0]; for (row = 0; row < h; row++, ha++) { tile = *(map++); if ((tile & LOMASK) >= TILE_COUNT) tile -= TILE_COUNT; /* Blink lightning bolt in unpowered zone center */ if (blink && (tile & ZONEBIT) && !(tile & PWRBIT)) tile = LIGHTNINGBOLT; else tile &= LOMASK; if (tile != *ha) { *ha = tile; XCopyArea(view->x->dpy, view->x->big_tile_pixmap, view->pixmap, view->x->gc, 0, tile * 16, 16, 16, col * 16, row * 16); } } map += mm; } } micropolis-activity/src/sim/w_cam.c0000664000076400007640000005143010724145723017647 0ustar simcitysimcity/* w_cam.c * * Micropolis, Unix Version. This game was released for the Unix platform * in or about 1990 and has been modified for inclusion in the One Laptop * Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If * you need assistance with this program, you may contact: * http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. You should have received a * copy of the GNU General Public License along with this program. If * not, see . * * ADDITIONAL TERMS per GNU GPL Section 7 * * No trademark or publicity rights are granted. This license does NOT * give you any right, title or interest in the trademark SimCity or any * other Electronic Arts trademark. You may not distribute any * modification of this program using the trademark SimCity or claim any * affliation or association with Electronic Arts Inc. or its employees. * * Any propagation or conveyance of this program must include this * copyright notice and these terms. * * If you convey this program (or any modifications of it) and assume * contractual liability for the program to recipients of it, you agree * to indemnify Electronic Arts for any liability that those contractual * assumptions impose on Electronic Arts. * * You may not misrepresent the origins of this program; modified * versions of the program must be marked as such and not identified as * the original program. * * This disclaimer supplements the one included in the General Public * License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS * PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY * OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF * SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS * DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, * INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, * FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY * RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, * USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST * INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL * MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE * UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE * WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE * CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR * ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME * JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED * WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A * CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY * NOT APPLY TO YOU. */ #include "sim.h" #ifdef CAM Tk_ConfigSpec SimCamConfigSpecs[] = { {TK_CONFIG_PIXELS, "-width", "width", "Width", 0, Tk_Offset(SimCam, w_width), 0}, {TK_CONFIG_PIXELS, "-height", "height", "Height", 0, Tk_Offset(SimCam, w_height), 0}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; Tk_ConfigSpec CamConfigSpecs[] = { {TK_CONFIG_PIXELS, "-wrap", "wrap", "Wrap", 0, Tk_Offset(Cam, wrap), 0}, {TK_CONFIG_PIXELS, "-steps", "steps", "Steps", 0, Tk_Offset(Cam, steps), 0}, {TK_CONFIG_PIXELS, "-frob", "frob", "Frob", 0, Tk_Offset(Cam, frob), 0}, {TK_CONFIG_PIXELS, "-x", "x", "X", 0, Tk_Offset(Cam, x), 0}, {TK_CONFIG_PIXELS, "-y", "y", "Y", 0, Tk_Offset(Cam, y), 0}, {TK_CONFIG_PIXELS, "-width", "width", "Width", 0, Tk_Offset(Cam, width), 0}, {TK_CONFIG_PIXELS, "-height", "height", "Height", 0, Tk_Offset(Cam, height), 0}, {TK_CONFIG_PIXELS, "-dx", "dx", "Dx", 0, Tk_Offset(Cam, dx), 0}, {TK_CONFIG_PIXELS, "-dy", "dy", "Dy", 0, Tk_Offset(Cam, dy), 0}, {TK_CONFIG_PIXELS, "-gx", "gx", "Gx", 0, Tk_Offset(Cam, gx), 0}, {TK_CONFIG_PIXELS, "-gy", "gy", "Gy", 0, Tk_Offset(Cam, gy), 0}, {TK_CONFIG_PIXELS, "-dragging", "dragging", "Dragging", 0, Tk_Offset(Cam, dragging), 0}, {TK_CONFIG_PIXELS, "-setx", "setx", "SetX", "-1", Tk_Offset(Cam, set_x), 0}, {TK_CONFIG_PIXELS, "-sety", "sety", "SetY", "-1", Tk_Offset(Cam, set_y), 0}, {TK_CONFIG_PIXELS, "-setwidth", "setwidth", "SetWidth", "-1", Tk_Offset(Cam, set_width), 0}, {TK_CONFIG_PIXELS, "-setheight", "setheight", "SetHeight", "-1", Tk_Offset(Cam, set_height), 0}, {TK_CONFIG_PIXELS, "-setx0", "setx0", "SetX0", "-1", Tk_Offset(Cam, set_x0), 0}, {TK_CONFIG_PIXELS, "-sety0", "sety0", "SetY0", "-1", Tk_Offset(Cam, set_y0), 0}, {TK_CONFIG_PIXELS, "-setx1", "setx1", "SetX1", "-1", Tk_Offset(Cam, set_x1), 0}, {TK_CONFIG_PIXELS, "-sety1", "sety1", "SetY1", "-1", Tk_Offset(Cam, set_y1), 0}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; Tcl_HashTable CamCmds; int next_cam_id = 1; static void DisplaySimCam(ClientData clientData) { SimCam *scam = (SimCam *) clientData; Tk_Window tkwin = scam->tkwin; Pixmap pm = None; Drawable d; scam->flags &= ~VIEW_REDRAW_PENDING; if (scam->visible && (tkwin != NULL) && Tk_IsMapped(tkwin)) { DoUpdateCam(scam); } } void DestroyCam(SimCam *scam, Cam *cam) { Cam **cp; for (cp = &scam->cam_list; (*cp) != NULL; cp = &((*cp)->next)) { if ((*cp) == cam) { (*cp) = cam->next; scam->cam_count--; if (cam->front != NULL) { ckfree(cam->front); } if (cam->back != NULL) { if (cam->back->mem != NULL) { ckfree(cam->back->mem); } ckfree(cam->back); } if (cam->rule != NULL) { ckfree(cam->rule); } if (cam->name != NULL) { ckfree(cam->name); } ckfree(cam); break; } } } void DestroyScam(ClientData cdata) { SimCam *scam = (SimCam *)cdata; SimCam **cp; CancelRedrawView(scam); while (scam->cam_list) { DestroyCam(scam, scam->cam_list); } for (cp = &sim->scam; (*cp) != NULL; cp = &((*cp)->next)) { if ((*cp) == scam) { (*cp) = scam->next; sim->scams--; break; } } if (scam->shminfo != NULL) { XShmDetach(scam->x->dpy, scam->shminfo); shmdt(scam->shminfo->shmaddr); shmctl(scam->shminfo->shmid, IPC_RMID, 0); ckfree(scam->shminfo); scam->shminfo = NULL; if (scam->image) { scam->image->data = NULL; scam->data = NULL; XDestroyImage(scam->image); scam->image = NULL; } } else { if (scam->image) { if (scam->image->data) { ckfree(scam->image->data); scam->image->data = NULL; } scam->data = NULL; XDestroyImage(scam->image); scam->image = NULL; } } DecRefDisplay(scam->x); ckfree((char *) scam); } void CamEventProc(ClientData clientData, XEvent *eventPtr) { SimCam *scam = (SimCam *) clientData; if ((eventPtr->type == Expose) && (eventPtr->xexpose.count == 0)) { scam->visible = 1; EventuallyRedrawCam(scam); } else if (eventPtr->type == MapNotify) { scam->visible = 1; } else if (eventPtr->type == UnmapNotify) { scam->visible = 0; } else if (eventPtr->type == VisibilityNotify) { if (eventPtr->xvisibility.state == VisibilityFullyObscured) scam->visible = 0; else scam->visible = 1; } else if (eventPtr->type == ConfigureNotify) { DoResizeCam(scam, eventPtr->xconfigure.width, eventPtr->xconfigure.height); EventuallyRedrawCam(scam); } else if (eventPtr->type == DestroyNotify) { Tcl_DeleteCommand(scam->interp, Tk_PathName(scam->tkwin)); scam->tkwin = NULL; if (scam->flags & VIEW_REDRAW_PENDING) { Tk_CancelIdleCall(DisplaySimCam, (ClientData) scam); } Tk_EventuallyFree((ClientData) scam, DestroyScam); } } int DoCamCmd(CLIENT_ARGS) { SimCam *scam = (SimCam *) clientData; Tcl_HashEntry *ent; int result = TCL_OK; int (*cmd)(); if (argc < 2) { return TCL_ERROR; } if (ent = Tcl_FindHashEntry(&CamCmds, argv[1])) { cmd = (int (*)())ent->clientData; Tk_Preserve((ClientData) scam); result = cmd(scam, interp, argc, argv); Tk_Release((ClientData) scam); } else { Tcl_AppendResult(interp, "unknown command name: \"", argv[0], " ", argv[1], "\".", (char *) NULL); result = TCL_ERROR; } return result; } int CamCmd(CLIENT_ARGS) { Tk_Window tkwin = (Tk_Window) clientData; SimCam *scam; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " pathName ?options?\"", (char *) NULL); return TCL_ERROR; } tkwin = Tk_CreateWindowFromPath(interp, tkwin, argv[1], (char *) NULL); if (tkwin == NULL) { return TCL_ERROR; } scam = (SimCam *)ckalloc(sizeof (SimCam)); scam->w_x = 0; scam->w_y = 0; scam->w_width = 0; scam->w_height = 0; scam->visible = 0; scam->invalid = 1; scam->skips = 0; scam->skip = 0; scam->tkwin = tkwin; scam->interp = interp; scam->flags = 0; scam->x = NULL; scam->image = NULL; scam->shminfo = NULL; scam->line_bytes = 0; scam->data = NULL; scam->cam_count = 0; scam->cam_list = NULL; Tk_SetClass(scam->tkwin, "Cam"); Tk_CreateEventHandler(scam->tkwin, VisibilityChangeMask | ExposureMask | StructureNotifyMask | EnterWindowMask | LeaveWindowMask | PointerMotionMask, CamEventProc, (ClientData) scam); Tcl_CreateCommand(interp, Tk_PathName(scam->tkwin), DoCamCmd, (ClientData) scam, (void (*)()) NULL); Tk_MakeWindowExist(scam->tkwin); if (getenv("XSYNCHRONIZE") != NULL) { XSynchronize(Tk_Display(tkwin), 1); } InitNewCam(scam); DoNewCam(scam); if (ConfigureCam(interp, scam, argc-2, argv+2, 0) != TCL_OK) { /* XXX: destroy scam */ Tk_DestroyWindow(scam->tkwin); return TCL_ERROR; } scam->invalid = 1; interp->result = Tk_PathName(scam->tkwin); return TCL_OK; } int ConfigureCam(Tcl_Interp *interp, SimCam *scam, int argc, char **argv, int flags) { if (Tk_ConfigureWidget(interp, scam->tkwin, SimCamConfigSpecs, argc, argv, (char *) scam, flags) != TCL_OK) { return TCL_ERROR; } if (scam->w_width || scam->w_height) { Tk_GeometryRequest(scam->tkwin, scam->w_width, scam->w_height); } EventuallyRedrawCam(scam); return TCL_OK; } EventuallyRedrawCam(SimCam *scam) { if (!(scam->flags & VIEW_REDRAW_PENDING)) { Tk_DoWhenIdle(DisplaySimCam, (ClientData) scam); scam->flags |= VIEW_REDRAW_PENDING; } } CamCmdconfigure(CAM_ARGS) { int result = TCL_OK; if (argc == 2) { result = Tk_ConfigureInfo(interp, scam->tkwin, SimCamConfigSpecs, (char *) scam, (char *) NULL, 0); } else if (argc == 3) { result = Tk_ConfigureInfo(interp, scam->tkwin, SimCamConfigSpecs, (char *) scam, argv[2], 0); } else { result = ConfigureCam(interp, scam, argc-2, argv+2, TK_CONFIG_ARGV_ONLY); } return result; } CamCmdposition(CAM_ARGS) { if ((argc != 2) && (argc != 4)) { return TCL_ERROR; } if (argc == 4) { int x, y; if ((Tcl_GetInt(interp, argv[2], &x) != TCL_OK) || (Tcl_GetInt(interp, argv[3], &y) != TCL_OK)) { return TCL_ERROR; } scam->w_x = x; scam->w_y = y; } sprintf(interp->result, "%d %d", scam->w_x, scam->w_y); return TCL_OK; } CamCmdsize(CAM_ARGS) { if ((argc != 2) && (argc != 4)) { return TCL_ERROR; } if (argc == 4) { int w, h; if (Tcl_GetInt(interp, argv[2], &w) != TCL_OK) { return TCL_ERROR; } if (Tcl_GetInt(interp, argv[3], &h) != TCL_OK) { return TCL_ERROR; } scam->w_width = w; scam->w_height = h; } sprintf(interp->result, "%d %d", scam->w_width, scam->w_height); return TCL_OK; } CamCmdVisible(CAM_ARGS) { int visible; if ((argc != 2) && (argc != 3)) { return TCL_ERROR; } if (argc == 3) { if ((Tcl_GetInt(interp, argv[2], &visible) != TCL_OK) || (visible < 0) || (visible > 1)) { return TCL_ERROR; } visible = visible && Tk_IsMapped(scam->tkwin); scam->visible = visible; } sprintf(interp->result, "%d", scam->visible); return TCL_OK; } CamCmdStoreColor(CAM_ARGS) { int index, r, g, b, err; XColor color; if (argc != 6) { return TCL_ERROR; } if ((Tcl_GetInt(interp, argv[2], &index) != TCL_OK) || (Tcl_GetInt(interp, argv[2], &r) != TCL_OK) || (Tcl_GetInt(interp, argv[2], &g) != TCL_OK) || (Tcl_GetInt(interp, argv[2], &b) != TCL_OK)) { return TCL_ERROR; } color.pixel = index; color.red = r; color.green = g; color.blue = b; color.flags = DoRed | DoGreen | DoBlue; err = XStoreColor(scam->x->dpy, scam->x->colormap, &color); sprintf(interp->result, "%d", err); return TCL_OK; } CamCmdNewCam(CAM_ARGS) { Cam *cam; char *name; char *rule_name = NULL; int rule_number = 0; int x, y, w, h; if (argc < 8) { return TCL_ERROR; } name = argv[2]; if ((Tcl_GetInt(interp, argv[3], &rule_number) != TCL_OK) || (rule_number == 0)) { rule_name = argv[3]; } if ((Tcl_GetInt(interp, argv[4], &x) != TCL_OK) || (Tcl_GetInt(interp, argv[5], &y) != TCL_OK) || (Tcl_GetInt(interp, argv[6], &w) != TCL_OK) || (Tcl_GetInt(interp, argv[7], &h) != TCL_OK)) { return TCL_ERROR; } cam = (Cam *)find_cam_by_name(scam, name); if (cam != NULL) { DestroyCam(scam, cam); } cam = (Cam *)new_cam(scam, x, y, w, h, 0, 0, NULL); cam->name = (char *)malloc(strlen(name) + 1); strcpy(cam->name, name); if (rule_name != NULL) { cam_load_rule(cam, rule_name); } else { cam_set_neighborhood(cam, rule_number); } return Tk_ConfigureWidget(interp, scam->tkwin, CamConfigSpecs, argc - 8, argv + 8, (char *) cam, 0); } CamCmdDeleteCam(CAM_ARGS) { Cam *cam; char *name; if (argc != 3) { return TCL_ERROR; } name = argv[2]; cam = (Cam *)find_cam_by_name(scam, name); if (cam != NULL) { DestroyCam(scam, cam); } return TCL_OK; } CamCmdRandomizeCam(CAM_ARGS) { Cam *cam; char *name; if (argc != 3) { return TCL_ERROR; } name = argv[2]; cam = (Cam *)find_cam_by_name(scam, name); if (cam != NULL) { cam_randomize(cam); } return TCL_OK; } CamCmdConfigCam(CAM_ARGS) { Cam *cam; int result = TCL_OK; if (argc < 3) { return TCL_ERROR; } cam = (Cam *)find_cam_by_name(scam, argv[2]); if (cam == NULL) { return TCL_ERROR; } if (argc == 3) { result = Tk_ConfigureInfo(interp, scam->tkwin, CamConfigSpecs, (char *) cam, (char *) NULL, 0); } else if (argc == 4) { result = Tk_ConfigureInfo(interp, scam->tkwin, CamConfigSpecs, (char *) cam, argv[3], 0); } else { result = Tk_ConfigureWidget(interp, scam->tkwin, CamConfigSpecs, argc - 3, argv + 3, (char *) cam, 0); } return result; } CamCmdFindCam(CAM_ARGS) { Cam *cam; int x, y; if (argc != 4) { return TCL_ERROR; } if ((Tcl_GetInt(interp, argv[2], &x) != TCL_OK) || (Tcl_GetInt(interp, argv[3], &y) != TCL_OK)) { return TCL_ERROR; } cam = (Cam *)find_cam(scam, x, y); sprintf(interp->result, "%s", (cam == NULL) ? "" : cam->name); return TCL_OK; } CamCmdFindSomeCam(CAM_ARGS) { Cam *cam; int x, y; if (argc != 4) { return TCL_ERROR; } if ((Tcl_GetInt(interp, argv[2], &x) != TCL_OK) || (Tcl_GetInt(interp, argv[3], &y) != TCL_OK)) { return TCL_ERROR; } cam = (Cam *)find_cam(scam, x, y); if (cam == NULL) { cam = scam->cam_list; } sprintf(interp->result, "%s", (cam == NULL) ? "" : cam->name); return TCL_OK; } /*************************************************************************/ InitNewCam(SimCam *scam) { scam->x = (XDisplay *)FindXDisplay(scam->tkwin); IncRefDisplay(scam->x); DoResizeCam(scam, 512, 512); init_scam(scam); } DoResizeCam(SimCam *scam, int w, int h) { Cam *cam; for (cam = scam->cam_list; cam != NULL; cam = cam->next) { if (cam->front->width > w) w = cam->front->width; if (cam->front->height > h) h = cam->front->height; } scam->w_width = w; scam->w_height = h; if (scam->shminfo != NULL) { XShmDetach(scam->x->dpy, scam->shminfo); shmdt(scam->shminfo->shmaddr); shmctl(scam->shminfo->shmid, IPC_RMID, 0); ckfree(scam->shminfo); scam->shminfo = NULL; if (scam->image) { scam->image->data = NULL; scam->data = NULL; XDestroyImage(scam->image); scam->image = NULL; } } else { if (scam->image) { if (scam->image->data) { ckfree(scam->image->data); scam->image->data = NULL; } scam->data = NULL; XDestroyImage(scam->image); scam->image = NULL; } } if (scam->x->shared) { scam->shminfo = (XShmSegmentInfo *)ckalloc(sizeof (XShmSegmentInfo)); scam->image = XShmCreateImage(scam->x->dpy, scam->x->visual, scam->x->depth, scam->x->color ? ZPixmap : XYBitmap, NULL, scam->shminfo, scam->w_width, scam->w_height); scam->line_bytes = scam->image->bytes_per_line; scam->shminfo->readOnly = False; scam->shminfo->shmid = shmget(IPC_PRIVATE, (scam->line_bytes * scam->w_height), (IPC_CREAT | 0777)); if (scam->shminfo->shmid < 0) { perror("shmget"); fprintf(stderr, "Drat, Micropolis can't share memory with X display \"%s\".\n", scam->x->display); goto FALL_BACK; } scam->data = (unsigned char *)shmat(scam->shminfo->shmid, 0, 0); scam->image->data = (char *)scam->data; if ((int)scam->data == -1) { perror("shmat"); fprintf(stderr, "Drat, Micropolis can't find any memory to share with display \"%s\".\n", scam->x->display); goto FALL_BACK; } scam->shminfo->shmaddr = (char *)scam->data; scam->shminfo->readOnly = False; { int (*old)(); int CatchXError(); GotXError = 0; old = XSetErrorHandler(CatchXError); if (XShmAttach(scam->x->dpy, scam->shminfo) == 0) { fprintf(stderr, "Drat, the X display \"%s\" can't access Micropolis's shared memory.\n", scam->x->display); GotXError = 1; } XSync(scam->x->dpy, False); XSetErrorHandler(old); if (GotXError) { goto FALL_BACK; } } } else { goto SPRING_FORWARD; FALL_BACK: fprintf(stderr, "Falling back to the X network protocol on display \"%s\"...\n", scam->x->display); SPRING_FORWARD: scam->x->shared = 0; if (scam->shminfo) { if (scam->shminfo->shmid >= 0) { if (scam->shminfo->shmaddr) { shmdt(scam->shminfo->shmaddr); } shmctl(scam->shminfo->shmid, IPC_RMID, 0); } ckfree((char *)scam->shminfo); scam->shminfo = NULL; } if (scam->image) { scam->image->data = NULL; XDestroyImage(scam->image); scam->image = NULL; } scam->data = NULL; scam->line_bytes = scam->w_width; scam->data = (Byte *)ckalloc(scam->line_bytes * scam->w_height); scam->image = XCreateImage(scam->x->dpy, scam->x->visual, scam->x->depth, scam->x->color ? ZPixmap : XYBitmap, 0, (char *)scam->data, scam->w_width, scam->w_height, 8, scam->line_bytes); /* XXX: handle other depths */ } for (cam = scam->cam_list; cam != NULL; cam = cam->next) { if (cam->x + cam->front->width > scam->w_width) { cam->x = scam->w_width - cam->front->width; } if (cam->y + cam->front->height > scam->w_height) { cam->y = scam->w_height - cam->front->height; } cam->front->line_bytes = scam->line_bytes; cam->front->mem = /* XXX: handle other depths */ (Byte *)scam->data + cam->x + (scam->line_bytes * cam->y); } } DoNewCam(SimCam *scam) { sim->scams++; scam->next = sim->scam; sim->scam = scam; scam->invalid = 1; } DoUpdateCam(SimCam *scam) { if (!scam->visible) { return; } if (scam->invalid) { scam->invalid = 0; } if (scam->x->shared) { XShmPutImage(scam->x->dpy, Tk_WindowId(scam->tkwin), scam->x->gc, scam->image, 0, 0, 0, 0, scam->w_width, scam->w_height, False); } else { XPutImage(scam->x->dpy, Tk_WindowId(scam->tkwin), scam->x->gc, scam->image, 0, 0, 0, 0, scam->w_width, scam->w_height); } } cam_command_init() { int new; extern int TileCamCmd(CLIENT_ARGS); Tcl_CreateCommand(tk_mainInterp, "camview", CamCmd, (ClientData)MainWindow, (void (*)()) NULL); Tcl_InitHashTable(&CamCmds, TCL_STRING_KEYS); #define CAM_CMD(name) HASHED_CMD(Cam, name) CAM_CMD(configure); CAM_CMD(position); CAM_CMD(size); CAM_CMD(Visible); CAM_CMD(StoreColor); CAM_CMD(NewCam); CAM_CMD(DeleteCam); CAM_CMD(RandomizeCam); CAM_CMD(ConfigCam); CAM_CMD(FindCam); CAM_CMD(FindSomeCam); } #endif /* CAM */ micropolis-activity/src/tclx/0000775000076400007640000000000010735230433016567 5ustar simcitysimcitymicropolis-activity/src/tclx/ucbsrc/0000775000076400007640000000000010735230433020050 5ustar simcitysimcitymicropolis-activity/src/tclx/ucbsrc/tclexpr.dif0000664000076400007640000000131410724145723022221 0ustar simcitysimcity*** ../../tcl6.4/tclExpr.c Mon Mar 23 09:54:06 1992 --- tclExpr.c Tue Oct 6 17:20:10 1992 *************** *** 1318,1324 if (value.type == TYPE_INT) { sprintf(interp->result, "%ld", value.intValue); } else if (value.type == TYPE_DOUBLE) { ! sprintf(interp->result, "%g", value.doubleValue); } else { if (value.pv.buffer != value.staticSpace) { interp->result = value.pv.buffer; --- 1318,1324 ----- if (value.type == TYPE_INT) { sprintf(interp->result, "%ld", value.intValue); } else if (value.type == TYPE_DOUBLE) { ! Tcl_ReturnDouble (interp, value.doubleValue); } else { if (value.pv.buffer != value.staticSpace) { interp->result = value.pv.buffer; micropolis-activity/src/tclx/ucbsrc/makefile0000664000076400007640000000335110724145723021557 0ustar simcitysimcity# # Makefile -- # # Makefile for Extended Tcl updates to the standard UCB Tcl. # #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: Makefile,v 2.0 1992/10/16 04:51:44 markd Rel $ #------------------------------------------------------------------------------ # include ../config.mk include ../config/$(TCL_CONFIG_FILE) SHELL=/bin/sh #------------------------------------------------------------------------------ CFLAGS=$(OPTIMIZE_FLAG) $(XCFLAGS) -I../$(TCL_UCB_DIR) $(MEM_DEBUG_FLAGS) \ $(SYS_DEP_FLAGS) #------------------------------------------------------------------------------ OBJS=tclbasic.o tclexpr.o #------------------------------------------------------------------------------ all: made.tmp made.tmp: $(OBJS) -$(AR) d ../libtcl.a $(OBJS) $(AR) cr ../libtcl.a $(OBJS) touch made.tmp tclbasic.c: ../$(TCL_UCB_DIR)/tclbasic.c rm -f tclbasic.c sed -f tclbasic.sed <../$(TCL_UCB_DIR)/tclbasic.c >tclbasic.c tclexpr.c: ../$(TCL_UCB_DIR)/tclexpr.c rm -f tclexpr.c sed -f tclexpr.sed <../$(TCL_UCB_DIR)/tclexpr.c >tclexpr.c #------------------------------------------------------------------------------ clean: touch junk~ -rm -f *~ made.tmp tclbasic.c tclexpr.c -rm -f $(OBJS) micropolis-activity/src/tclx/ucbsrc/tclbasic.sed0000664000076400007640000000023410724145723022335 0ustar simcitysimcity/(\*cmdPtr->proc)/a\ \ /*\ \ * Signal handling added for Extended Tcl.\ \ */\ \ result = Tcl_CheckForSignal (interp, result); micropolis-activity/src/tclx/ucbsrc/tclexpr.sed0000664000076400007640000000015610724145723022235 0ustar simcitysimcity/ sprintf(interp->result, "%g", value.doubleValue);/c\ Tcl_ReturnDouble (interp, value.doubleValue); micropolis-activity/src/tclx/ucbsrc/tclbasic.dif0000664000076400007640000000117610724145723022332 0ustar simcitysimcity*** ../../tcl6.4/tclBasic.c Sun Jun 21 14:09:46 1992 --- tclBasic.c Tue Oct 6 17:19:52 1992 *************** *** 705,710 iPtr->result = iPtr->resultSpace; iPtr->resultSpace[0] = 0; result = (*cmdPtr->proc)(cmdPtr->clientData, interp, argc, argv); if (result != TCL_OK) { break; } --- 705,714 ----- iPtr->result = iPtr->resultSpace; iPtr->resultSpace[0] = 0; result = (*cmdPtr->proc)(cmdPtr->clientData, interp, argc, argv); + /* + * Signal handling added for Extended Tcl. + */ + result = Tcl_CheckForSignal (interp, result); if (result != TCL_OK) { break; } micropolis-activity/src/tclx/makefile0000664000076400007640000001330210724145723020273 0ustar simcitysimcity# # Makefile -- # # Makefile for Extended Tcl. This requires Tcl 6.1 or Tcl 6.2 from Berkeley, # which should be compiled before running this makefile. Its location is # configured below. # #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: Makefile,v 2.0 1992/10/16 04:54:45 markd Rel $ #------------------------------------------------------------------------------ # include config.mk include config/$(TCL_CONFIG_FILE) SHELL=/bin/sh #------------------------------------------------------------------------------ # List of files that are touched by secondary makefiles when something changes. MADE.FILES=ucbsrc/made.tmp ossupp/made.tmp src/made.tmp TKMADE.FILES=tkucbsrc/made.tmp CFLAGS= $(OPTIMIZE_FLAG) $(XCFLAGS) -I$(TCL_UCB_DIR) $(MEM_DEBUG_FLAGS) \ $(SYS_DEP_FLAGS) #------------------------------------------------------------------------------ all: tcl tcldef runtcl $(TCL_TK_SHELL) #------------------------------------------------------------------------------ # Compile the Extended Tcl library and link the Tcl shell. # tcl: TCLX_MAKES TCLX_MAKES: libtcl.a cd ucbsrc; $(MAKE) -$(MAKEFLAGS) all cd ossupp; $(MAKE) -$(MAKEFLAGS) all cd tclsrc; $(MAKE) -$(MAKEFLAGS) all cd src; $(MAKE) -$(MAKEFLAGS) all # Copy the UCB libtcl.a file from where it was built. Force the other # Makefiles to add their .o files to the library by nuking their made.tmp file. libtcl.a: $(TCL_UCB_DIR)/libtcl.a cp $(TCL_UCB_DIR)/libtcl.a . rm -f $(MADE.FILES) #------------------------------------------------------------------------------ # Generate a libtk.a with extensions and a wish shell with Extended Tcl # commands. # wish: TKX_MAKES runwish TKX_MAKES: libtk.a cd tkucbsrc; $(MAKE) -$(MAKEFLAGS) all cd tksrc; $(MAKE) -$(MAKEFLAGS) all # Copy the UCB libtk.a file. Force the other Makefiles to add their # .o files to the library by nuking their made.tmp file. libtk.a: $(TCL_TK_DIR)/libtk.a cp $(TCL_TK_DIR)/libtk.a libtk.a rm -f $(TKMADE.FILES) #------------------------------------------------------------------------------ # Generate a temporary TCLDEFAULT file so Tcl can be run in this directory. # Also generate a script to point the TCLDEFAULT environment variable # at this file for testing Tcl before its installed. tcldef: @echo " - Generating temporary TCLDEFAULT file. -" @echo " - Use runtcl script to test Tcl before installing -" @echo " - Use runwish script to test Tk before installing -" @echo '# Temporary TCLDEFAULT file for debugging' >tcldef @echo "set TCLPATH `pwd`/tcllib" >>tcldef @echo "set TCLINIT `pwd`/tcllib/tclinit.tcl" >>tcldef runtcl: @echo ':' >runtcl @echo '# script for testing Tcl before installation' >>runtcl @echo "TCLDEFAULT=`pwd`/tcldef" >>runtcl @echo "export TCLDEFAULT" >>runtcl @echo "if [ \$$# = 0 ]" >>runtcl @echo "then" >>runtcl @echo " exec `pwd`/tcl" >>runtcl @echo "else" >>runtcl @echo " exec `pwd`/tcl \"\$$@\"" >>runtcl @echo "fi" >>runtcl chmod a+rx runtcl runwish: @echo ':' >runwish @echo '# script for testing wish before installation' >>runwish @echo "TCLDEFAULT=`pwd`/tcldef" >>runwish @echo "export TCLDEFAULT" >>runwish @echo "if [ \$$# = 0 ]" >>runwish @echo "then" >>runwish @echo " exec `pwd`/wish" >>runwish @echo "else" >>runwish @echo " exec `pwd`/wish \"\$$@\"" >>runwish @echo "fi" >>runwish chmod a+rx runwish #------------------------------------------------------------------------------ # # just test to see if the C++ include file compiles and links tclplus: cd src;$(MAKE) -$(MAKEFLAGS) tclplus #------------------------------------------------------------------------------ # # Run the UCB and Extended Tcl tests. test: ucbtests extdtests ucbtests: all @echo "" @echo "**************************************************" @echo "* Ignore failures in tests: expr-2.2 & expr-2.6 *" @echo "**************************************************" @echo "" ./runtcl -c "cd $(TCL_UCB_DIR)/tests;source all" extdtests: all ./runtcl -c "cd tests;source all" #------------------------------------------------------------------------------ # Install Tcl. install: all ./runtcl tclsrc/install.tcl #------------------------------------------------------------------------------ # Clean up the mess we made. clean: cd ucbsrc; $(MAKE) -$(MAKEFLAGS) clean cd ossupp; $(MAKE) -$(MAKEFLAGS) clean cd src; $(MAKE) -$(MAKEFLAGS) clean cd tclsrc; $(MAKE) -$(MAKEFLAGS) clean cd tkucbsrc; $(MAKE) -$(MAKEFLAGS) clean cd tksrc; $(MAKE) -$(MAKEFLAGS) clean touch junk~ config/junk~ -rm -f *~ config/*~ libtcl.a tcldef libtk.a runtcl runwish micropolis-activity/src/tclx/src/0000775000076400007640000000000010735230433017356 5ustar simcitysimcitymicropolis-activity/src/tclx/src/tclxid.c0000664000076400007640000002272510724145723021026 0ustar simcitysimcity/* * tclXid.c -- * * Tcl commands to access getuid, setuid, getgid, setgid and friends. *--------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXid.c,v 2.0 1992/10/16 04:50:51 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclxint.h" /* * Prototypes of internal functions. */ static int UseridToUsernameResult _ANSI_ARGS_((Tcl_Interp *interp, int userId)); static int UsernameToUseridResult _ANSI_ARGS_((Tcl_Interp *interp, char *userName)); static int GroupidToGroupnameResult _ANSI_ARGS_((Tcl_Interp *interp, int groupId)); static int GroupnameToGroupidResult _ANSI_ARGS_((Tcl_Interp *interp, char *groupName)); /* *----------------------------------------------------------------------------- * * Tcl_IdCmd -- * Implements the TCL id command: * * id user [name] * id convert user * * id userid [uid] * id convert userid * * id group [name] * id convert group * * id groupid [gid] * id convert groupid * * id process * id process parent * id process group * id process group set * * id effective user * id effective userid * * id effective group * id effective groupid * * Results: * Standard TCL results, may return the UNIX system error message. * *----------------------------------------------------------------------------- */ static int UseridToUsernameResult (interp, userId) Tcl_Interp *interp; int userId; { struct passwd *pw = getpwuid (userId); if (pw == NULL) { char numBuf [32]; sprintf (numBuf, "%d", userId); Tcl_AppendResult (interp, "unknown user id: ", numBuf, (char *) NULL); return TCL_ERROR; } strcpy (interp->result, pw->pw_name); return TCL_OK; } static int UsernameToUseridResult (interp, userName) Tcl_Interp *interp; char *userName; { struct passwd *pw = getpwnam (userName); if (pw == NULL) { Tcl_AppendResult (interp, "unknown user id: ", userName, (char *) NULL); return TCL_ERROR; } sprintf (interp->result, "%d", pw->pw_uid); return TCL_OK; } static int GroupidToGroupnameResult (interp, groupId) Tcl_Interp *interp; int groupId; { struct group *grp = getgrgid (groupId); if (grp == NULL) { char numBuf [32]; sprintf (numBuf, "%d", groupId); Tcl_AppendResult (interp, "unknown group id: ", numBuf, (char *) NULL); return TCL_ERROR; } strcpy (interp->result, grp->gr_name); return TCL_OK; } static int GroupnameToGroupidResult (interp, groupName) Tcl_Interp *interp; char *groupName; { struct group *grp = getgrnam (groupName); if (grp == NULL) { Tcl_AppendResult (interp, "unknown group id: ", groupName, (char *) NULL); return TCL_ERROR; } sprintf (interp->result, "%d", grp->gr_gid); return TCL_OK; } int Tcl_IdCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { struct passwd *pw; struct group *grp; int uid, gid; if (argc < 2) goto bad_args; /* * If the first argument is "convert", handle the conversion. */ if (STREQU (argv[1], "convert")) { if (argc != 4) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " convert arg arg", (char *) NULL); return TCL_ERROR; } if (STREQU (argv[2], "user")) return UsernameToUseridResult (interp, argv[3]); if (STREQU (argv[2], "userid")) { if (Tcl_GetInt (interp, argv[3], &uid) != TCL_OK) return TCL_ERROR; return UseridToUsernameResult (interp, uid); } if (STREQU (argv[2], "group")) return GroupnameToGroupidResult (interp, argv[3]); if (STREQU (argv[2], "groupid")) { if (Tcl_GetInt (interp, argv[3], &gid) != TCL_OK) return TCL_ERROR; return GroupidToGroupnameResult (interp, gid); } goto bad_three_arg; } /* * If the first argument is "effective", return the effective user ID, * name, group ID or name. */ if (STREQU (argv[1], "effective")) { if (argc != 3) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " effective arg", (char *) NULL); return TCL_ERROR; } if (STREQU (argv[2], "user")) return UseridToUsernameResult (interp, geteuid ()); if (STREQU (argv[2], "userid")) { sprintf (interp->result, "%d", geteuid ()); return TCL_OK; } if (STREQU (argv[2], "group")) return GroupidToGroupnameResult (interp, getegid ()); if (STREQU (argv[2], "groupid")) { sprintf (interp->result, "%d", getegid ()); return TCL_OK; } goto bad_three_arg; } /* * If the first argument is "process", return the process ID, parent's * process ID, process group or set the process group depending on args. */ if (STREQU (argv[1], "process")) { if (argc == 2) { sprintf (interp->result, "%d", getpid ()); return TCL_OK; } if (STREQU (argv[2], "parent")) { if (argc != 3) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " process parent", (char *) NULL); return TCL_ERROR; } sprintf (interp->result, "%d", getppid ()); return TCL_OK; } if (STREQU (argv[2], "group")) { if (argc == 3) { sprintf (interp->result, "%d", getpgrp ()); return TCL_OK; } if ((argc != 4) || !STREQU (argv[3], "set")) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " process group [set]", (char *) NULL); return TCL_ERROR; } setpgrp (); return TCL_OK; } Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " process [parent|group|group set]", (char *) NULL); return TCL_ERROR; } /* * Handle setting or returning the user ID or group ID (by name or number). */ if (argc > 3) goto bad_args; if (STREQU (argv[1], "user")) { if (argc == 2) { return UseridToUsernameResult (interp, getuid ()); } else { pw = getpwnam (argv[2]); if (pw == NULL) goto name_doesnt_exist; if (setuid (pw->pw_uid) < 0) goto cannot_set_name; return TCL_OK; } } if (STREQU (argv[1], "userid")) { if (argc == 2) { sprintf (interp->result, "%d", getuid ()); return TCL_OK; } else { if (Tcl_GetInt (interp, argv[2], &uid) != TCL_OK) return TCL_ERROR; if (setuid (uid) < 0) goto cannot_set_name; return TCL_OK; } } if (STREQU (argv[1], "group")) { if (argc == 2) { return GroupidToGroupnameResult (interp, getgid ()); } else { grp = getgrnam (argv[2]); if (grp == NULL) goto name_doesnt_exist; if (setgid (grp->gr_gid) < 0) goto cannot_set_name; return TCL_OK; } } if (STREQU (argv[1], "groupid")) { if (argc == 2) { sprintf (interp->result, "%d", getgid ()); return TCL_OK; } else { if (Tcl_GetInt (interp, argv[2], &gid) != TCL_OK) return TCL_ERROR; if (setgid (gid) < 0) goto cannot_set_name; return TCL_OK; } } Tcl_AppendResult (interp, "bad arg: ", argv [0], " second arg must be convert, effective, process, ", "user, userid, group or groupid", (char *) NULL); return TCL_ERROR; bad_three_arg: Tcl_AppendResult (interp, "bad arg: ", argv [0], ": ", argv[1], ": third arg must be user, userid, group or groupid", (char *) NULL); return TCL_ERROR; bad_args: Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " arg [arg..]", (char *) NULL); return TCL_ERROR; name_doesnt_exist: Tcl_AppendResult (interp, " \"", argv[2], "\" does not exists", (char *) NULL); return TCL_ERROR; cannot_set_name: interp->result = Tcl_UnixError (interp); return TCL_ERROR; } micropolis-activity/src/tclx/src/tclxfsca.c0000664000076400007640000004343210724145723021344 0ustar simcitysimcity/* * tclXfilescan.c -- * * Tcl file scanning: regular expression matching on lines of a file. * Implements awk. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXfilescan.c,v 2.0 1992/10/16 04:50:43 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclxint.h" #include "regexp.h" /* * A scan context describes a collection of match patterns and commands, * along with a match default command to apply to a file on a scan. */ #define CONTEXT_A_CASE_INSENSITIVE_FLAG 2 #define MATCH_CASE_INSENSITIVE_FLAG 4 typedef struct matchDef_t { regexp_t regExpInfo; char *command; struct matchDef_t *nextMatchDefPtr; short matchflags; } matchDef_t; typedef struct matchDef_t *matchDef_pt; typedef struct scanContext_t { matchDef_pt matchListHead; matchDef_pt matchListTail; char *defaultAction; short flags; } scanContext_t; typedef struct scanContext_t *scanContext_pt; /* * Global data structure, pointer to by clientData. */ typedef struct { int useCount; /* Commands that current share globals */ void_pt tblHdrPtr; /* Scan context handle table */ char curName [16]; /* Current context name. */ } scanGlob_t; typedef scanGlob_t *scanGlob_pt; /* * Prototypes of internal functions. */ static int CleanUpContext _ANSI_ARGS_((scanGlob_pt scanGlobPtr, scanContext_pt contextPtr)); static int CreateScanContext _ANSI_ARGS_((Tcl_Interp *interp, scanGlob_pt scanGlobPtr)); static int SelectScanContext _ANSI_ARGS_((Tcl_Interp *interp, scanGlob_pt scanGlobPtr, char *contextHandle)); static int Tcl_Delete_scancontextCmd _ANSI_ARGS_((Tcl_Interp *interp, scanGlob_pt scanGlobPtr, char *contextHandle)); static int SetMatchVar _ANSI_ARGS_((Tcl_Interp *interp, char *fileLine, long fileOffset, long scanLineNum, char *fileHandle)); static void FileScanCleanUp _ANSI_ARGS_((ClientData clientData)); /* *----------------------------------------------------------------------------- * * CleanUpContext * Release all resources allocated to the specified scan context * entry. The entry itself is not released. *----------------------------------------------------------------------------- */ static int CleanUpContext (scanGlobPtr, contextPtr) scanGlob_pt scanGlobPtr; scanContext_pt contextPtr; { matchDef_pt matchPtr, oldMatchPtr; for (matchPtr = contextPtr->matchListHead; matchPtr != NULL;) { Tcl_RegExpClean (&matchPtr->regExpInfo); if (matchPtr->command != NULL) ckfree(matchPtr->command); oldMatchPtr = matchPtr; matchPtr = matchPtr->nextMatchDefPtr; ckfree ((char *) oldMatchPtr); } contextPtr->matchListHead = NULL; contextPtr->matchListTail = NULL; if (contextPtr->defaultAction != NULL) { ckfree(contextPtr->defaultAction); contextPtr->defaultAction = NULL; } } /* *----------------------------------------------------------------------------- * * CreateScanContext -- * Create a new scan context, implements the subcommand: * scancontext create * *----------------------------------------------------------------------------- */ static int CreateScanContext (interp, scanGlobPtr) Tcl_Interp *interp; scanGlob_pt scanGlobPtr; { scanContext_pt contextPtr; contextPtr = (scanContext_pt)Tcl_HandleAlloc (scanGlobPtr->tblHdrPtr, scanGlobPtr->curName); contextPtr->flags = 0; contextPtr->matchListHead = NULL; contextPtr->matchListTail = NULL; contextPtr->defaultAction = NULL; Tcl_SetResult (interp, scanGlobPtr->curName, TCL_STATIC); return TCL_OK; } /* *----------------------------------------------------------------------------- * * DeleteScanContext -- * Deletes the specified scan context, implements the subcommand: * scancontext delete contexthandle * *----------------------------------------------------------------------------- */ static int DeleteScanContext (interp, scanGlobPtr, contextHandle) Tcl_Interp *interp; scanGlob_pt scanGlobPtr; char *contextHandle; { scanContext_pt contextPtr; if ((contextPtr = Tcl_HandleXlate (interp, scanGlobPtr->tblHdrPtr, contextHandle)) == NULL) return TCL_ERROR; CleanUpContext (scanGlobPtr, contextPtr); Tcl_HandleFree (scanGlobPtr->tblHdrPtr, contextPtr); return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_ScancontextCmd -- * Implements the TCL scancontext Tcl command, which has the * following forms. * scancontext create * scancontext delete * * Results: * Standard TCL results. * *----------------------------------------------------------------------------- */ static int Tcl_ScancontextCmd (clientData, interp, argc, argv) char *clientData; Tcl_Interp *interp; int argc; char **argv; { scanGlob_pt scanGlobPtr = (scanGlob_pt) clientData; if (argc < 2) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " option", (char *) NULL); return TCL_ERROR; } /* * Create a new scan context. */ if (STREQU (argv [1], "create")) { if (argc != 2) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " create", (char *) NULL); return TCL_ERROR; } return CreateScanContext (interp, scanGlobPtr); } /* * Delete a scan context. */ if (STREQU (argv [1], "delete")) { if (argc != 3) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], "delete contexthandle", (char *) NULL); return TCL_ERROR; } return DeleteScanContext (interp, scanGlobPtr, argv [2]); } Tcl_AppendResult (interp, "invalid argument, expected one of: ", "create or delete", (char *) NULL); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * Tcl_ScanmatchCmd -- * Implements the TCL command: * scanmatch [-nocase] contexthandle [regexp] commands * This uses both Boyer_Moore and regular expressions matching. * * Results: * Standard TCL results. * *----------------------------------------------------------------------------- */ static int Tcl_ScanmatchCmd (clientData, interp, argc, argv) char *clientData; Tcl_Interp *interp; int argc; char **argv; { scanGlob_pt scanGlobPtr = (scanGlob_pt) clientData; scanContext_pt contextPtr; char *result; matchDef_pt newmatch; int compFlags = REXP_BOTH_ALGORITHMS; int firstArg = 1; if (argc < 3) goto argError; if (STREQU (argv[1], "-nocase")) { compFlags |= REXP_NO_CASE; firstArg = 2; } /* * If firstArg == 2 (-nocase), the both a regular expression and a command * string must be specified, otherwise the regular expression is optional. */ if (((firstArg == 2) && (argc != 5)) || ((firstArg == 1) && (argc > 4))) goto argError; if ((contextPtr = Tcl_HandleXlate (interp, scanGlobPtr->tblHdrPtr, argv [firstArg])) == NULL) return TCL_ERROR; /* * Handle the default case (no regular expression). */ if (argc == 3) { if (contextPtr->defaultAction) { Tcl_AppendResult (interp, argv [0], ": default match already ", "specified in this scan context", (char *) NULL); return TCL_ERROR; } contextPtr->defaultAction = ckalloc (strlen (argv [2]) + 1); strcpy (contextPtr->defaultAction, argv [2]); return TCL_OK; } /* * Add a regular expression to the context. */ newmatch = (matchDef_pt) ckalloc(sizeof (matchDef_t)); newmatch->matchflags = 0; if (compFlags & REXP_NO_CASE) { newmatch->matchflags |= MATCH_CASE_INSENSITIVE_FLAG; contextPtr->flags |= CONTEXT_A_CASE_INSENSITIVE_FLAG; } if (Tcl_RegExpCompile (interp, &newmatch->regExpInfo, argv [firstArg + 1], compFlags) != TCL_OK) { ckfree ((char *) newmatch); return (TCL_ERROR); } newmatch->command = ckalloc (strlen (argv[firstArg + 2]) + 1); strcpy(newmatch->command, argv [firstArg + 2]); /* * Link in the new match. */ newmatch->nextMatchDefPtr = NULL; if (contextPtr->matchListHead == NULL) contextPtr->matchListHead = newmatch; else contextPtr->matchListTail->nextMatchDefPtr = newmatch; contextPtr->matchListTail = newmatch; return TCL_OK; argError: Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " [-nocase] contexthandle [regexp] command", (char *) NULL); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * SetMatchVar -- * Sets the TCL array variable matchInfo to contain information * about the line that is matched. * Results: * TCL_OK if all is ok, TCL_ERROR if an error occures setting the * variables. * Side effects: * A TCL array variable is created or altered. * *----------------------------------------------------------------------------- */ static int SetMatchVar (interp, fileLine, fileOffset, scanLineNum, fileHandle) Tcl_Interp *interp; char *fileLine; long fileOffset; long scanLineNum; char *fileHandle; { char numBuf [20]; if (Tcl_SetVar2 (interp, "matchInfo", "line", fileLine, TCL_LEAVE_ERR_MSG) == NULL) return TCL_ERROR; sprintf (numBuf, "%ld", fileOffset); if (Tcl_SetVar2 (interp, "matchInfo", "offset", numBuf, TCL_LEAVE_ERR_MSG) == NULL) return TCL_ERROR; sprintf (numBuf, "%ld", scanLineNum); if (Tcl_SetVar2 (interp, "matchInfo", "linenum", numBuf, TCL_LEAVE_ERR_MSG) == NULL) return TCL_ERROR; if (Tcl_SetVar2 (interp, "matchInfo", "handle", fileHandle, TCL_LEAVE_ERR_MSG) == NULL) return TCL_ERROR; return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_ScanfileCmd -- * Implements the TCL command: * scanfile contexthandle filehandle * * Results: * Standard TCL results. * *----------------------------------------------------------------------------- */ static int Tcl_ScanfileCmd (clientData, interp, argc, argv) char *clientData; Tcl_Interp *interp; int argc; char **argv; { scanGlob_pt scanGlobPtr = (scanGlob_pt) clientData; scanContext_pt contextPtr; dynamicBuf_t dynBuf, lowerDynBuf; OpenFile *filePtr; matchDef_pt matchPtr; int result; int matchedAtLeastOne; long fileOffset; long matchOffset; long scanLineNum = 0; char *fileHandle; if ((argc < 2) || (argc > 3)) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " contexthandle filehandle", (char *) NULL); return TCL_ERROR; } if ((contextPtr = Tcl_HandleXlate (interp, scanGlobPtr->tblHdrPtr, argv [1])) == NULL) return TCL_ERROR; if (TclGetOpenFile (interp, argv [2], &filePtr) != TCL_OK) return TCL_ERROR; if (contextPtr->matchListHead == NULL) { Tcl_AppendResult (interp, "no patterns in current scan context", (char *) NULL); return TCL_ERROR; } Tcl_DynBufInit (&dynBuf); Tcl_DynBufInit (&lowerDynBuf); result = TCL_OK; /* Assume the best */ fileOffset = ftell (filePtr->f); /* Get starting offset */ while ((result == TCL_OK)) { int storedThisLine = FALSE; switch (Tcl_DynamicFgets (&dynBuf, filePtr->f, FALSE)) { case -1: /* Error */ interp->result = Tcl_UnixError (interp); goto scanExit; case 0: /* EOF */ goto scanExit; } scanLineNum++; matchOffset = fileOffset; fileOffset += strlen(dynBuf.ptr) + 1; storedThisLine = 0; matchedAtLeastOne = 0; if (contextPtr->flags & CONTEXT_A_CASE_INSENSITIVE_FLAG) { lowerDynBuf.len = 0; Tcl_DynBufAppend (&lowerDynBuf, dynBuf.ptr); Tcl_DownShift (lowerDynBuf.ptr, lowerDynBuf.ptr); } for (matchPtr = contextPtr->matchListHead; matchPtr != NULL; matchPtr = matchPtr->nextMatchDefPtr) { if (!Tcl_RegExpExecute (interp, &matchPtr->regExpInfo, dynBuf.ptr, lowerDynBuf.ptr)) continue; /* Try next match pattern */ matchedAtLeastOne = TRUE; if (!storedThisLine) { result = SetMatchVar (interp, dynBuf.ptr, matchOffset, scanLineNum, argv[2]); if (result != TCL_OK) goto scanExit; storedThisLine = TRUE; } result = Tcl_Eval(interp, matchPtr->command, 0, (char **)NULL); if (result == TCL_ERROR) { Tcl_AddErrorInfo (interp, "\n while executing a match command"); goto scanExit; } if (result == TCL_CONTINUE) { /* * Don't process any more matches for this line. */ result = TCL_OK; goto matchLineExit; } if (result == TCL_BREAK) { /* * Terminate scan. */ result = TCL_OK; goto scanExit; } } matchLineExit: /* * Process default action if required. */ if ((contextPtr->defaultAction != NULL) && (!matchedAtLeastOne)) { result = SetMatchVar (interp, dynBuf.ptr, matchOffset, scanLineNum, argv[2]); if (result != TCL_OK) goto scanExit; result = Tcl_Eval (interp, contextPtr->defaultAction, 0, (char **)NULL); if (result == TCL_CONTINUE) result = TCL_OK; /* This doesn't mean anything, but */ /* don't break the user. */ if (result == TCL_ERROR) Tcl_AddErrorInfo (interp, "\n while executing a match default command"); } } scanExit: Tcl_DynBufFree (&dynBuf); Tcl_DynBufFree (&lowerDynBuf); if (result == TCL_RETURN) result = TCL_OK; return result; } /* *----------------------------------------------------------------------------- * * FileScanCleanUp -- * Decrements the use count on the globals when a command is deleted. * If it goes to zero, all resources are released. * *----------------------------------------------------------------------------- */ static void FileScanCleanUp (clientData) ClientData clientData; { scanGlob_pt scanGlobPtr = (scanGlob_pt) clientData; scanContext_pt contextPtr; int walkKey; scanGlobPtr->useCount--; if (scanGlobPtr->useCount > 0) return; walkKey = -1; while ((contextPtr = Tcl_HandleWalk (scanGlobPtr->tblHdrPtr, &walkKey)) != NULL) CleanUpContext (scanGlobPtr, contextPtr); Tcl_HandleTblRelease (scanGlobPtr->tblHdrPtr); ckfree ((char *) scanGlobPtr); } /* *----------------------------------------------------------------------------- * * Tcl_InitFilescan -- * Initialize the TCL file scanning facility.. * *----------------------------------------------------------------------------- */ void Tcl_InitFilescan (interp) Tcl_Interp *interp; { scanGlob_pt scanGlobPtr; void_pt fileCbTblPtr; scanGlobPtr = (scanGlob_pt) ckalloc (sizeof (scanGlob_t)); scanGlobPtr->tblHdrPtr = Tcl_HandleTblInit ("context", sizeof (scanContext_t), 5); /* * Initialize the commands. */ scanGlobPtr->useCount = 3; /* Number of commands */ Tcl_CreateCommand (interp, "scanfile", Tcl_ScanfileCmd, (ClientData)scanGlobPtr, FileScanCleanUp); Tcl_CreateCommand (interp, "scanmatch", Tcl_ScanmatchCmd, (ClientData)scanGlobPtr, FileScanCleanUp); Tcl_CreateCommand (interp, "scancontext", Tcl_ScancontextCmd, (ClientData)scanGlobPtr, FileScanCleanUp); } micropolis-activity/src/tclx/src/tclxbsrc.c0000664000076400007640000002477210724145723021367 0ustar simcitysimcity/* * tclXbsearch.c * * Extended Tcl binary file search command. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXbsearch.c,v 2.0 1992/10/16 04:50:24 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclxint.h" /* * Control block used to pass data used by the binary search routines. */ typedef struct binSearchCB_t { Tcl_Interp *interp; /* Pointer to the interpreter. */ char *fileHandle; /* Handle of file. */ char *key; /* The key to search for. */ FILE *fileCBPtr; /* Open file structure. */ dynamicBuf_t dynBuf; /* Dynamic buffer to hold a line of file. */ long lastRecOffset; /* Offset of last record read. */ int cmpResult; /* -1, 0 or 1 result of string compare. */ char *tclProc; /* Name of Tcl comparsion proc, or NULL. */ } binSearchCB_t; /* * Prototypes of internal functions. */ static int StandardKeyCompare _ANSI_ARGS_((char *key, char *line)); static int TclProcKeyCompare _ANSI_ARGS_((binSearchCB_t *searchCBPtr)); static int ReadAndCompare _ANSI_ARGS_((long fileOffset, binSearchCB_t *searchCBPtr)); static int BinSearch _ANSI_ARGS_((binSearchCB_t *searchCBPtr)); /* *----------------------------------------------------------------------------- * * StandardKeyCompare -- * Standard comparison routine for BinSearch, compares the key to the * first white-space seperated field in the line. * * Parameters: * o key (I) - The key to search for. * o line (I) - The line to compare the key to. * * Results: * o < 0 if key < line-key * o = 0 if key == line-key * o > 0 if key > line-key. *----------------------------------------------------------------------------- */ static int StandardKeyCompare (key, line) char *key; char *line; { int cmpResult, fieldLen; char saveChar; fieldLen = strcspn (line, " \t\r\n\v\f"); saveChar = line [fieldLen]; line [fieldLen] = 0; cmpResult = strcmp (key, line); line [fieldLen] = saveChar; return cmpResult; } /* *----------------------------------------------------------------------------- * * TclProcKeyCompare -- * Comparison routine for BinSearch that runs a Tcl procedure to, * compare the key to a line from the file. * * Parameters: * o searchCBPtr (I/O) - The search control block, the line should be in * dynBuf, the comparsion result is returned in cmpResult. * * Results: * TCL_OK or TCL_ERROR. *----------------------------------------------------------------------------- */ static int TclProcKeyCompare (searchCBPtr) binSearchCB_t *searchCBPtr; { char *cmdArgv [3]; char *command; int result; cmdArgv [0] = searchCBPtr->tclProc; cmdArgv [1] = searchCBPtr->key; cmdArgv [2] = searchCBPtr->dynBuf.ptr; command = Tcl_Merge (3, cmdArgv); result = Tcl_Eval (searchCBPtr->interp, command, 0, (char **) NULL); ckfree (command); if (result == TCL_ERROR) return TCL_ERROR; if (!Tcl_StrToInt (searchCBPtr->interp->result, 0, &searchCBPtr->cmpResult)) { char *oldResult = ckalloc (strlen (searchCBPtr->interp->result + 1)); strcpy (oldResult, searchCBPtr->interp->result); Tcl_ResetResult (searchCBPtr->interp); Tcl_AppendResult (searchCBPtr->interp, "invalid integer \"", oldResult, "\" returned from compare proc \"", searchCBPtr->tclProc, "\"", (char *) NULL); ckfree (oldResult); return TCL_ERROR; } Tcl_ResetResult (searchCBPtr->interp); return TCL_OK; } /* *----------------------------------------------------------------------------- * * ReadAndCompare -- * Search for the next line in the file starting at the specified * offset. Read the line into the dynamic buffer and compare it to * the key using the specified comparison method. The start of the * last line read is saved in the control block, and if the start of * the same line is found in the search, then it will not be recompared. * This is needed since the search algorithm has to hit the same line * a couple of times before failing, due to the fact that the records are * not fixed length. * * Parameters: * o fileOffset (I) - The offset of the next byte of the search, not * necessarly the start of a record. * o searchCBPtr (I/O) - The search control block, the comparsion result * is returned in cmpResult. If the EOF is hit, a less-than result is * returned. * * Results: * TCL_OK or TCL_ERROR. *----------------------------------------------------------------------------- */ static int ReadAndCompare (fileOffset, searchCBPtr) long fileOffset; binSearchCB_t *searchCBPtr; { int recChar, status; if (fseek (searchCBPtr->fileCBPtr, fileOffset, SEEK_SET) != 0) goto unixError; /* * Go to beginning of next line. */ if (fileOffset != 0) { while (((recChar = getc (searchCBPtr->fileCBPtr)) != EOF) && (recChar != '\n')) fileOffset++; if ((recChar == EOF) && ferror (searchCBPtr->fileCBPtr)) goto unixError; } /* * If this is the same line as before, then just leave the comparison * result unchanged. */ if (fileOffset == searchCBPtr->lastRecOffset) return TCL_OK; searchCBPtr->lastRecOffset = fileOffset; status = Tcl_DynamicFgets (&searchCBPtr->dynBuf, searchCBPtr->fileCBPtr, FALSE); if (status < 0) goto unixError; /* * Only compare if EOF was not hit, otherwise, treat as if we went * above the key we are looking for. */ if (status == 0) { searchCBPtr->cmpResult = -1; return TCL_OK; } if (searchCBPtr->tclProc == NULL) { searchCBPtr->cmpResult = StandardKeyCompare (searchCBPtr->key, searchCBPtr->dynBuf.ptr); } else { if (TclProcKeyCompare (searchCBPtr) != TCL_OK) return TCL_ERROR; } return TCL_OK; unixError: Tcl_AppendResult (searchCBPtr->interp, searchCBPtr->fileHandle, ": ", Tcl_UnixError (searchCBPtr->interp), (char *) NULL); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * BinSearch -- * Binary search a sorted ASCII file. * * Parameters: * o searchCBPtr (I/O) - The search control block, if the line is found, * it is returned in dynBuf. * Results: * TCL_OK - If the key was found. * TCL_BREAK - If it was not found. * TCL_ERROR - If there was an error. * * based on getpath.c from smail 2.5 (9/15/87) * *----------------------------------------------------------------------------- */ static int BinSearch (searchCBPtr) binSearchCB_t *searchCBPtr; { OpenFile *filePtr; long middle, high, low; struct stat statBuf; if (TclGetOpenFile (searchCBPtr->interp, searchCBPtr->fileHandle, &filePtr) != TCL_OK) return TCL_ERROR; searchCBPtr->fileCBPtr = filePtr->f; searchCBPtr->lastRecOffset = -1; if (fstat (fileno (searchCBPtr->fileCBPtr), &statBuf) < 0) goto unixError; low = 0; high = statBuf.st_size; /* * "Binary search routines are never written right the first time around." * - Robert G. Sheldon. */ while (TRUE) { middle = (high + low + 1) / 2; if (ReadAndCompare (middle, searchCBPtr) != TCL_OK) return TCL_ERROR; if (searchCBPtr->cmpResult == 0) return TCL_OK; /* Found */ if (low >= middle) return TCL_BREAK; /* Failure */ /* * Close window. */ if (searchCBPtr->cmpResult > 0) { low = middle; } else { high = middle - 1; } } unixError: Tcl_AppendResult (searchCBPtr->interp, searchCBPtr->fileHandle, ": ", Tcl_UnixError (searchCBPtr->interp), (char *) NULL); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * Tcl_BsearchCmd -- * Implements the TCL bsearch command: * bsearch filehandle key [retvar] * * Results: * Standard TCL results. * *----------------------------------------------------------------------------- */ int Tcl_BsearchCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { int status; binSearchCB_t searchCB; if ((argc < 3) || (argc > 5)) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " handle key [retvar] [compare_proc]" , (char *) NULL); return TCL_ERROR; } searchCB.interp = interp; searchCB.fileHandle = argv [1]; searchCB.key = argv [2]; searchCB.tclProc = (argc == 5) ? argv [4] : NULL; Tcl_DynBufInit (&searchCB.dynBuf); status = BinSearch (&searchCB); if (status == TCL_ERROR) { Tcl_DynBufFree (&searchCB.dynBuf); return TCL_ERROR; } if (status == TCL_BREAK) { Tcl_DynBufFree (&searchCB.dynBuf); if ((argc >= 4) && (argv [3][0] != '\0')) interp->result = "0"; return TCL_OK; } if ((argc == 3) || (argv [3][0] == '\0')) { Tcl_DynBufReturn (interp, &searchCB.dynBuf); } else { char *varPtr; varPtr = Tcl_SetVar (interp, argv[3], searchCB.dynBuf.ptr, TCL_LEAVE_ERR_MSG); Tcl_DynBufFree (&searchCB.dynBuf); if (varPtr == NULL) return TCL_ERROR; interp->result = "1"; } return TCL_OK; } micropolis-activity/src/tclx/src/tclxgdat.y0000664000076400007640000004310410724145723021371 0ustar simcitysimcity/* * tclXgetdate.y -- * * Contains yacc grammer for parsing date and time strings.. *--------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *--------------------------------------------------------------------------- * This code is a slightly modified version of getdate.y by: * Steven M. Bellovin (unc!smb) * Dept. of Computer Science * University of North Carolina at Chapel Hill * getdate.y 2.13 9/16/86 *----------------------------------------------------------------------------- * $Id: tclXgetdate.y,v 2.0 1992/10/16 04:51:34 markd Rel $ *----------------------------------------------------------------------------- */ %token ID MONTH DAY MERIDIAN NUMBER UNIT MUNIT SUNIT ZONE DAYZONE AGO %{ #include #include #include #include #include #ifndef NULL # define NULL 0 #endif #define daysec (24L*60L*60L) static int timeflag, zoneflag, dateflag, dayflag, relflag; static time_t relsec, relmonth; static int hh, mm, ss, merid, dayLight; static int dayord, dayreq; static int month, day, year; static int ourzone; #if 0 static time_t timeconv(int hh, int mm, int ss, int mer); static time_t daylcorr(time_t future, time_t now); static lookup(char *id); #else static time_t timeconv(); static time_t daylcorr(); static lookup(); #endif #define AM 1 #define PM 2 #define DAYLIGHT 1 #define STANDARD 2 #define MAYBE 3 %} %% timedate: /* empty */ | timedate item; item: tspec = {timeflag++;} | zone = {zoneflag++;} | dtspec = {dateflag++;} | dyspec = {dayflag++;} | rspec = {relflag++;} | nspec; nspec: NUMBER = {if (timeflag && dateflag && !relflag) year = $1; else {timeflag++;hh = $1/100;mm = $1%100;ss = 0;merid = 24;}}; tspec: NUMBER MERIDIAN = {hh = $1; mm = 0; ss = 0; merid = $2;} | NUMBER ':' NUMBER = {hh = $1; mm = $3; merid = 24;} | NUMBER ':' NUMBER MERIDIAN = {hh = $1; mm = $3; merid = $4;} | NUMBER ':' NUMBER NUMBER = {hh = $1; mm = $3; merid = 24; dayLight = STANDARD; ourzone = -($4%100 + 60*$4/100);} | NUMBER ':' NUMBER ':' NUMBER = {hh = $1; mm = $3; ss = $5; merid = 24;} | NUMBER ':' NUMBER ':' NUMBER MERIDIAN = {hh = $1; mm = $3; ss = $5; merid = $6;} | NUMBER ':' NUMBER ':' NUMBER NUMBER = {hh = $1; mm = $3; ss = $5; merid = 24; dayLight = STANDARD; ourzone = -($6%100 + 60*$6/100);}; zone: ZONE = {ourzone = $1; dayLight = STANDARD;} | DAYZONE = {ourzone = $1; dayLight = DAYLIGHT;}; dyspec: DAY = {dayord = 1; dayreq = $1;} | DAY ',' = {dayord = 1; dayreq = $1;} | NUMBER DAY = {dayord = $1; dayreq = $2;}; dtspec: NUMBER '/' NUMBER = {month = $1; day = $3;} | NUMBER '/' NUMBER '/' NUMBER = {month = $1; day = $3; year = $5;} | MONTH NUMBER = {month = $1; day = $2;} | MONTH NUMBER ',' NUMBER = {month = $1; day = $2; year = $4;} | NUMBER MONTH = {month = $2; day = $1;} | NUMBER MONTH NUMBER = {month = $2; day = $1; year = $3;}; rspec: NUMBER UNIT = {relsec += 60L * $1 * $2;} | NUMBER MUNIT = {relmonth += $1 * $2;} | NUMBER SUNIT = {relsec += $1;} | UNIT = {relsec += 60L * $1;} | MUNIT = {relmonth += $1;} | SUNIT = {relsec++;} | rspec AGO = {relsec = -relsec; relmonth = -relmonth;}; %% static int mdays[12] = {31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; #define epoch 1970 extern struct tm *localtime(); static time_t dateconv(mm, dd, yy, h, m, s, mer, zone, dayflag) int mm, dd, yy, h, m, s, mer, zone, dayflag; { time_t tod, jdate; register int i; time_t timeconv(); if (yy < 0) yy = -yy; if (yy < 100) yy += 1900; mdays[1] = 28 + (yy%4 == 0 && (yy%100 != 0 || yy%400 == 0)); if (yy < epoch || yy > 1999 || mm < 1 || mm > 12 || dd < 1 || dd > mdays[--mm]) return (-1); jdate = dd-1; for (i=0; itm_isdst)) jdate += -1*60*60; return (jdate); } static time_t dayconv(ord, day, now) int ord, day; time_t now; { register struct tm *loctime; time_t tod; time_t daylcorr(); tod = now; loctime = localtime(&tod); tod += daysec * ((day - loctime->tm_wday + 7) % 7); tod += 7*daysec*(ord<=0?ord:ord-1); return daylcorr(tod, now); } static time_t timeconv(hh, mm, ss, mer) register int hh, mm, ss, mer; { if (mm < 0 || mm > 59 || ss < 0 || ss > 59) return (-1); switch (mer) { case AM: if (hh < 1 || hh > 12) return(-1); return (60L * ((hh%12)*60L + mm)+ss); case PM: if (hh < 1 || hh > 12) return(-1); return (60L * ((hh%12 +12)*60L + mm)+ss); case 24: if (hh < 0 || hh > 23) return (-1); return (60L * (hh*60L + mm)+ss); default: return (-1); } } static time_t monthadd(sdate, relmonth) time_t sdate, relmonth; { struct tm *ltime; time_t dateconv(); time_t daylcorr(); int mm, yy; if (relmonth == 0) return 0; ltime = localtime(&sdate); mm = 12*ltime->tm_year + ltime->tm_mon + relmonth; yy = mm/12; mm = mm%12 + 1; return daylcorr(dateconv(mm, ltime->tm_mday, yy, ltime->tm_hour, ltime->tm_min, ltime->tm_sec, 24, ourzone, MAYBE), sdate); } static time_t daylcorr(future, now) time_t future, now; { int fdayl, nowdayl; nowdayl = (localtime(&now)->tm_hour+1) % 24; fdayl = (localtime(&future)->tm_hour+1) % 24; return (future-now) + 60L*60L*(nowdayl-fdayl); } static char *lptr; static yylex() { #ifndef YYSTYPE //#define YYSTYPE extern int #define YYSTYPE int #endif YYSTYPE yylval; int sign; register char c; register char *p; char idbuf[20]; int pcnt; for (;;) { while (isspace(*lptr)) lptr++; if (isdigit(c = *lptr) || c == '-' || c == '+') { if (c== '-' || c == '+') { if (c=='-') sign = -1; else sign = 1; if (!isdigit(*++lptr)) { /* yylval = sign; return (NUMBER); */ return yylex(); /* skip the '-' sign */ } } else sign = 1; yylval = 0; while (isdigit(c = *lptr++)) yylval = 10*yylval + c - '0'; yylval *= sign; lptr--; return (NUMBER); } else if (isalpha(c)) { p = idbuf; while (isalpha(c = *lptr++) || c=='.') if (p < &idbuf[sizeof(idbuf)-1]) *p++ = c; *p = '\0'; lptr--; return (lookup(idbuf)); } else if (c == '(') { pcnt = 0; do { c = *lptr++; if (c == '\0') return(c); else if (c == '(') pcnt++; else if (c == ')') pcnt--; } while (pcnt > 0); } else return (*lptr++); } } //static struct table { char *name; int type, value; }; static struct table mdtab[] = { {"January", MONTH, 1}, {"February", MONTH, 2}, {"March", MONTH, 3}, {"April", MONTH, 4}, {"May", MONTH, 5}, {"June", MONTH, 6}, {"July", MONTH, 7}, {"August", MONTH, 8}, {"September", MONTH, 9}, {"Sept", MONTH, 9}, {"October", MONTH, 10}, {"November", MONTH, 11}, {"December", MONTH, 12}, {"Sunday", DAY, 0}, {"Monday", DAY, 1}, {"Tuesday", DAY, 2}, {"Tues", DAY, 2}, {"Wednesday", DAY, 3}, {"Wednes", DAY, 3}, {"Thursday", DAY, 4}, {"Thur", DAY, 4}, {"Thurs", DAY, 4}, {"Friday", DAY, 5}, {"Saturday", DAY, 6}, {0, 0, 0}}; #define HRS *60 #define HALFHR 30 static struct table mztab[] = { {"a.m.", MERIDIAN, AM}, {"am", MERIDIAN, AM}, {"p.m.", MERIDIAN, PM}, {"pm", MERIDIAN, PM}, {"nst", ZONE, 3 HRS + HALFHR}, /* Newfoundland */ {"n.s.t.", ZONE, 3 HRS + HALFHR}, {"ast", ZONE, 4 HRS}, /* Atlantic */ {"a.s.t.", ZONE, 4 HRS}, {"adt", DAYZONE, 4 HRS}, {"a.d.t.", DAYZONE, 4 HRS}, {"est", ZONE, 5 HRS}, /* Eastern */ {"e.s.t.", ZONE, 5 HRS}, {"edt", DAYZONE, 5 HRS}, {"e.d.t.", DAYZONE, 5 HRS}, {"cst", ZONE, 6 HRS}, /* Central */ {"c.s.t.", ZONE, 6 HRS}, {"cdt", DAYZONE, 6 HRS}, {"c.d.t.", DAYZONE, 6 HRS}, {"mst", ZONE, 7 HRS}, /* Mountain */ {"m.s.t.", ZONE, 7 HRS}, {"mdt", DAYZONE, 7 HRS}, {"m.d.t.", DAYZONE, 7 HRS}, {"pst", ZONE, 8 HRS}, /* Pacific */ {"p.s.t.", ZONE, 8 HRS}, {"pdt", DAYZONE, 8 HRS}, {"p.d.t.", DAYZONE, 8 HRS}, {"yst", ZONE, 9 HRS}, /* Yukon */ {"y.s.t.", ZONE, 9 HRS}, {"ydt", DAYZONE, 9 HRS}, {"y.d.t.", DAYZONE, 9 HRS}, {"hst", ZONE, 10 HRS}, /* Hawaii */ {"h.s.t.", ZONE, 10 HRS}, {"hdt", DAYZONE, 10 HRS}, {"h.d.t.", DAYZONE, 10 HRS}, {"gmt", ZONE, 0 HRS}, {"g.m.t.", ZONE, 0 HRS}, {"bst", DAYZONE, 0 HRS}, /* British Summer Time */ {"b.s.t.", DAYZONE, 0 HRS}, {"eet", ZONE, 0 HRS}, /* European Eastern Time */ {"e.e.t.", ZONE, 0 HRS}, {"eest", DAYZONE, 0 HRS}, /* European Eastern Summer Time */ {"e.e.s.t.", DAYZONE, 0 HRS}, {"met", ZONE, -1 HRS}, /* Middle European Time */ {"m.e.t.", ZONE, -1 HRS}, {"mest", DAYZONE, -1 HRS}, /* Middle European Summer Time */ {"m.e.s.t.", DAYZONE, -1 HRS}, {"wet", ZONE, -2 HRS }, /* Western European Time */ {"w.e.t.", ZONE, -2 HRS }, {"west", DAYZONE, -2 HRS}, /* Western European Summer Time */ {"w.e.s.t.", DAYZONE, -2 HRS}, {"jst", ZONE, -9 HRS}, /* Japan Standard Time */ {"j.s.t.", ZONE, -9 HRS}, /* Japan Standard Time */ /* No daylight savings time */ {"aest", ZONE, -10 HRS}, /* Australian Eastern Time */ {"a.e.s.t.", ZONE, -10 HRS}, {"aesst", DAYZONE, -10 HRS}, /* Australian Eastern Summer Time */ {"a.e.s.s.t.", DAYZONE, -10 HRS}, {"acst", ZONE, -(9 HRS + HALFHR)}, /* Australian Central Time */ {"a.c.s.t.", ZONE, -(9 HRS + HALFHR)}, {"acsst", DAYZONE, -(9 HRS + HALFHR)}, /* Australian Central Summer */ {"a.c.s.s.t.", DAYZONE, -(9 HRS + HALFHR)}, {"awst", ZONE, -8 HRS}, /* Australian Western Time */ {"a.w.s.t.", ZONE, -8 HRS}, /* (no daylight time there, I'm told */ {0, 0, 0}}; static struct table unittb[] = { {"year", MUNIT, 12}, {"month", MUNIT, 1}, {"fortnight", UNIT, 14*24*60}, {"week", UNIT, 7*24*60}, {"day", UNIT, 1*24*60}, {"hour", UNIT, 60}, {"minute", UNIT, 1}, {"min", UNIT, 1}, {"second", SUNIT, 1}, {"sec", SUNIT, 1}, {0, 0, 0}}; static struct table othertb[] = { {"tomorrow", UNIT, 1*24*60}, {"yesterday", UNIT, -1*24*60}, {"today", UNIT, 0}, {"now", UNIT, 0}, {"last", NUMBER, -1}, {"this", UNIT, 0}, {"next", NUMBER, 2}, {"first", NUMBER, 1}, /* {"second", NUMBER, 2}, */ {"third", NUMBER, 3}, {"fourth", NUMBER, 4}, {"fifth", NUMBER, 5}, {"sixth", NUMBER, 6}, {"seventh", NUMBER, 7}, {"eigth", NUMBER, 8}, {"ninth", NUMBER, 9}, {"tenth", NUMBER, 10}, {"eleventh", NUMBER, 11}, {"twelfth", NUMBER, 12}, {"ago", AGO, 1}, {0, 0, 0}}; static struct table milzone[] = { {"a", ZONE, 1 HRS}, {"b", ZONE, 2 HRS}, {"c", ZONE, 3 HRS}, {"d", ZONE, 4 HRS}, {"e", ZONE, 5 HRS}, {"f", ZONE, 6 HRS}, {"g", ZONE, 7 HRS}, {"h", ZONE, 8 HRS}, {"i", ZONE, 9 HRS}, {"k", ZONE, 10 HRS}, {"l", ZONE, 11 HRS}, {"m", ZONE, 12 HRS}, {"n", ZONE, -1 HRS}, {"o", ZONE, -2 HRS}, {"p", ZONE, -3 HRS}, {"q", ZONE, -4 HRS}, {"r", ZONE, -5 HRS}, {"s", ZONE, -6 HRS}, {"t", ZONE, -7 HRS}, {"u", ZONE, -8 HRS}, {"v", ZONE, -9 HRS}, {"w", ZONE, -10 HRS}, {"x", ZONE, -11 HRS}, {"y", ZONE, -12 HRS}, {"z", ZONE, 0 HRS}, {0, 0, 0}}; static lookup(id) char *id; { #define gotit (yylval=i->value, i->type) #define getid for(j=idvar, k=id; *j++ = *k++; ) char idvar[20]; register char *j, *k; register struct table *i; int abbrev; getid; if (strlen(idvar) == 3) abbrev = 1; else if (strlen(idvar) == 4 && idvar[3] == '.') { abbrev = 1; idvar[3] = '\0'; } else abbrev = 0; if (islower(*idvar)) *idvar = toupper(*idvar); for (i = mdtab; i->name; i++) { k = idvar; for (j = i->name; *j++ == *k++;) { if (abbrev && j==i->name+3) return gotit; if (j[-1] == 0) return gotit; } } getid; for (i = mztab; i->name; i++) if (strcmp(i->name, idvar) == 0) return gotit; for (j = idvar; *j; j++) if (isupper(*j)) *j = tolower(*j); for (i=mztab; i->name; i++) if (strcmp(i->name, idvar) == 0) return gotit; getid; for (i=unittb; i->name; i++) if (strcmp(i->name, idvar) == 0) return gotit; if (idvar[strlen(idvar)-1] == 's') idvar[strlen(idvar)-1] = '\0'; for (i=unittb; i->name; i++) if (strcmp(i->name, idvar) == 0) return gotit; getid; for (i = othertb; i->name; i++) if (strcmp(i->name, idvar) == 0) return gotit; getid; if (strlen(idvar) == 1 && isalpha(*idvar)) { if (isupper(*idvar)) *idvar = tolower(*idvar); for (i = milzone; i->name; i++) if (strcmp(i->name, idvar) == 0) return gotit; } return(ID); } time_t Tcl_GetDate (p, now, zone) char *p; time_t now; long zone; { #define mcheck(f) if (f>1) err++ time_t monthadd(); int err; struct tm *lt; time_t sdate, tod; lptr = p; if (now <= 0) (void) time(&now); lt = localtime(&now); year = lt->tm_year; month = lt->tm_mon+1; day = lt->tm_mday; relsec = 0; relmonth = 0; timeflag=zoneflag=dateflag=dayflag=relflag=0; dayLight = MAYBE; hh = mm = ss = 0; merid = 24; ourzone = zone; if (err = yyparse()) return (-1); mcheck(timeflag); mcheck(zoneflag); mcheck(dateflag); mcheck(dayflag); if (err) return (-1); if (dateflag || timeflag || dayflag) { sdate = dateconv(month,day,year,hh,mm,ss,merid,ourzone, dayLight); if (sdate < 0) return -1; } else { sdate = now; if (relflag == 0) sdate -= (lt->tm_sec + lt->tm_min*60 + lt->tm_hour*(60L*60L)); } sdate += relsec; sdate += monthadd(sdate, relmonth); if (dayflag && !dateflag) { tod = dayconv(dayord, dayreq, sdate); sdate += tod; } return sdate; } /* * Error message are not used, so discard with dummy function. */ void yyerror(msg) char *msg; { } micropolis-activity/src/tclx/src/tclxklst.c0000664000076400007640000006367410724145723021417 0ustar simcitysimcity/* * tclXkeylist.c -- * * Extended Tcl keyed list commands and interfaces. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXkeylist.c,v 2.0 1992/10/16 04:50:53 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclxint.h" /* * Type used to return information about a field that was found in a keyed * list. */ typedef struct fieldInfo_t { int argc; char **argv; int foundIdx; char *valuePtr; int valueSize; } fieldInfo_t; /* * Prototypes of internal functions. */ static int CompareKeyListField _ANSI_ARGS_((Tcl_Interp *interp, CONST char *fieldName, CONST char *field, char **valuePtr, int *valueSizePtr)); static int SplitAndFindField _ANSI_ARGS_((Tcl_Interp *interp, CONST char *fieldName, CONST char *keyedList, fieldInfo_t *fieldInfoPtr)); /* *----------------------------------------------------------------------------- * * CompareKeyListField -- * Compare a field name to a field (keyword/value pair) to determine if * the field names match. * * Parameters: * o interp (I/O) - Error message will be return in result if there is an * error. * o fieldName (I) - Field name to compare against field. * o field (I) - Field to see if its name matches. * o valuePtr (O) - If the field names match, a pointer to value part is * returned. * o valueSizePtr (O) - If the field names match, the length of the value * part is returned here. * Returns: * TCL_OK - If the field names match. * TCL_BREAK - If the fields names don't match. * TCL_ERROR - If the list has an invalid format. *----------------------------------------------------------------------------- */ static int CompareKeyListField (interp, fieldName, field, valuePtr, valueSizePtr) Tcl_Interp *interp; CONST char *fieldName; CONST char *field; char **valuePtr; int *valueSizePtr; { char *elementPtr, *nextPtr; int fieldNameSize, elementSize; if (field [0] == '\0') { interp->result = "invalid keyed list format: list contains an empty field entry"; return TCL_ERROR; } if (TclFindElement (interp, (char *) field, &elementPtr, &nextPtr, &elementSize, NULL) != TCL_OK) return TCL_ERROR; if (elementSize == 0) { interp->result = "invalid keyed list format: list contains an empty field name"; return TCL_ERROR; } if (nextPtr[0] == '\0') { Tcl_AppendResult (interp, "invalid keyed list format or inconsistent ", "field name scoping: no value associated with ", "field \"", elementPtr, "\"", (char *) NULL); return TCL_ERROR; } fieldNameSize = strlen ((char *) fieldName); if (!((elementSize == fieldNameSize) && STRNEQU (elementPtr, ((char *) fieldName), fieldNameSize))) return TCL_BREAK; /* Names do not match */ /* * Extract the value from the list. */ if (TclFindElement (interp, nextPtr, &elementPtr, &nextPtr, &elementSize, NULL) != TCL_OK) return TCL_ERROR; if (nextPtr[0] != '\0') { Tcl_AppendResult (interp, "invalid keyed list format: ", "trailing data following value in field: \"", elementPtr, "\"", (char *) NULL); return TCL_ERROR; } *valuePtr = elementPtr; *valueSizePtr = elementSize; return TCL_OK; } /* *----------------------------------------------------------------------------- * * SplitAndFindField -- * Split a keyed list into an argv and locate a field (key/value pair) * in the list. * * Parameters: * o interp (I/O) - Error message will be return in result if there is an * error. * o fieldName (I) - The name of the field to find. Will validate that the * name is not empty. If the name has a sub-name (seperated by "."), * search for the top level name. * o fieldInfoPtr (O) - The following fields are filled in: * o argc - The number of elements in the keyed list. * o argv - The keyed list argv is returned here, even if the key was * not found. Client must free. Will be NULL is an error occurs. * o foundIdx - The argv index containing the list entry that matches * the field name, or -1 if the key was not found. * o valuePtr - Pointer to the value part of the found element. NULL * in not found. * o valueSize - The size of the value part. * Returns: * Standard Tcl result. *----------------------------------------------------------------------------- */ static int SplitAndFindField (interp, fieldName, keyedList, fieldInfoPtr) Tcl_Interp *interp; CONST char *fieldName; CONST char *keyedList; fieldInfo_t *fieldInfoPtr; { int idx, result; if (fieldName == '\0') { interp->result = "null key not allowed"; return TCL_ERROR; } fieldInfoPtr->argv = NULL; if (Tcl_SplitList (interp, (char *) keyedList, &fieldInfoPtr->argc, &fieldInfoPtr->argv) != TCL_OK) goto errorExit; result = TCL_BREAK; for (idx = 0; idx < fieldInfoPtr->argc; idx++) { result = CompareKeyListField (interp, fieldName, fieldInfoPtr->argv [idx], &fieldInfoPtr->valuePtr, &fieldInfoPtr->valueSize); if (result != TCL_BREAK) break; /* Found or error, exit before idx is incremented. */ } if (result == TCL_ERROR) goto errorExit; if (result == TCL_BREAK) { fieldInfoPtr->foundIdx = -1; /* Not found */ fieldInfoPtr->valuePtr = NULL; } else { fieldInfoPtr->foundIdx = idx; } return TCL_OK; errorExit: if (fieldInfoPtr->argv != NULL) ckfree (fieldInfoPtr->argv); fieldInfoPtr->argv = NULL; return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * Tcl_GetKeyedListKeys -- * Retrieve a list of keyes from a keyed list. The list is walked rather * than converted to a argv for increased performance. * * Parameters: * o interp (I/O) - Error message will be return in result if there is an * error. * o subFieldName (I) - If "" or NULL, then the keys are retreved for * the top level of the list. If specified, it is name of the field who's * subfield keys are to be retrieve. * o keyedList (I) - The list to search for the field. * o keyesArgcPtr (O) - The number of keys in the keyed list is returned * here. * o keyesArgvPtr (O) - An argv containing the key names. It is dynamically * allocated, containing both the array and the strings. A single call * to ckfree will release it. * Returns: * TCL_OK - If the field was found. * TCL_BREAK - If the field was not found. * TCL_ERROR - If an error occured. *----------------------------------------------------------------------------- */ int Tcl_GetKeyedListKeys (interp, subFieldName, keyedList, keyesArgcPtr, keyesArgvPtr) Tcl_Interp *interp; CONST char *subFieldName; CONST char *keyedList; int *keyesArgcPtr; char ***keyesArgvPtr; { char *scanPtr, *subFieldList; int result, keyCount, totalKeySize, idx; char *fieldPtr, *keyPtr, *nextByte, *dummyPtr; int fieldSize, keySize; char **keyArgv; /* * If the keys of a subfield are requested, the dig out that field's * list and then rummage through in getting the keys. */ subFieldList = NULL; if ((subFieldName != NULL) && (subFieldName [0] != '\0')) { result = Tcl_GetKeyedListField (interp, subFieldName, keyedList, &subFieldList); if (result != TCL_OK) return result; keyedList = subFieldList; } /* * Walk the list count the number of field names and their length. */ keyCount = 0; totalKeySize = 0; scanPtr = (char *) keyedList; while (*scanPtr != '\0') { result = TclFindElement (interp, scanPtr, &fieldPtr, &scanPtr, &fieldSize, NULL); if (result != TCL_OK) goto errorExit; result = TclFindElement (interp, fieldPtr, &keyPtr, &dummyPtr, &keySize, NULL); if (result != TCL_OK) goto errorExit; keyCount++; totalKeySize += keySize + 1; } /* * Allocate a structure to hold both the argv and strings. */ keyArgv = (char **) ckalloc (((keyCount + 1) * sizeof (char *)) + totalKeySize); keyArgv [keyCount] = NULL; nextByte = ((char *) keyArgv) + ((keyCount + 1) * sizeof (char *)); /* * Walk the list once more, copying in the strings and building up the * argv. */ scanPtr = (char *) keyedList; idx = 0; while (*scanPtr != '\0') { TclFindElement (interp, scanPtr, &fieldPtr, &scanPtr, &fieldSize, NULL); TclFindElement (interp, fieldPtr, &keyPtr, &dummyPtr, &keySize, NULL); keyArgv [idx++] = nextByte; strncpy (nextByte, keyPtr, keySize); nextByte [keySize] = '\0'; nextByte += keySize + 1; } *keyesArgcPtr = keyCount; *keyesArgvPtr = keyArgv; if (subFieldList != NULL) ckfree (subFieldList); return TCL_OK; errorExit: if (subFieldList != NULL) ckfree (subFieldList); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * Tcl_GetKeyedListField -- * Retrieve a field value from a keyed list. The list is walked rather than * converted to a argv for increased performance. This if the name contains * sub-fields, this function recursive. * * Parameters: * o interp (I/O) - Error message will be return in result if there is an * error. * o fieldName (I) - The name of the field to extract. Will recusively * process sub-field names seperated by `.'. * o keyedList (I) - The list to search for the field. * o fieldValuePtr (O) - If the field is found, a pointer to a dynamicly * allocated string containing the value is returned here. If NULL is * specified, then only the presence of the field is validated, the * value is not returned. * Returns: * TCL_OK - If the field was found. * TCL_BREAK - If the field was not found. * TCL_ERROR - If an error occured. *----------------------------------------------------------------------------- */ int Tcl_GetKeyedListField (interp, fieldName, keyedList, fieldValuePtr) Tcl_Interp *interp; CONST char *fieldName; CONST char *keyedList; char **fieldValuePtr; { char *nameSeparPtr, *scanPtr, *valuePtr; int valueSize, result; if (fieldName == '\0') { interp->result = "null key not allowed"; return TCL_ERROR; } /* * Check for sub-names, temporarly delimit the top name with a '\0'. */ nameSeparPtr = strchr ((char *) fieldName, '.'); if (nameSeparPtr != NULL) *nameSeparPtr = '\0'; /* * Walk the list looking for a field name that matches. */ scanPtr = (char *) keyedList; result = TCL_BREAK; /* Assume not found */ while (*scanPtr != '\0') { char *fieldPtr; int fieldSize; char saveChar; result = TclFindElement (interp, scanPtr, &fieldPtr, &scanPtr, &fieldSize, NULL); if (result != TCL_OK) break; saveChar = fieldPtr [fieldSize]; fieldPtr [fieldSize] = '\0'; result = CompareKeyListField (interp, (char *) fieldName, fieldPtr, &valuePtr, &valueSize); fieldPtr [fieldSize] = saveChar; if (result != TCL_BREAK) break; /* Found or an error */ } if (result != TCL_OK) goto exitPoint; /* Not found or an error */ /* * If a subfield is requested, recurse to get the value otherwise allocate * a buffer to hold the value. */ if (nameSeparPtr != NULL) { char saveChar; saveChar = valuePtr [valueSize]; valuePtr [valueSize] = '\0'; result = Tcl_GetKeyedListField (interp, nameSeparPtr+1, valuePtr, fieldValuePtr); valuePtr [valueSize] = saveChar; } else { if (fieldValuePtr != NULL) { char *fieldValue; fieldValue = ckalloc (valueSize + 1); strncpy (fieldValue, valuePtr, valueSize); fieldValue [valueSize] = '\0'; *fieldValuePtr = fieldValue; } } exitPoint: if (nameSeparPtr != NULL) *nameSeparPtr = '.'; return result; } /* *----------------------------------------------------------------------------- * * Tcl_SetKeyedListField -- * Set a field value in keyed list. * * Parameters: * o interp (I/O) - Error message will be return in result if there is an * error. * o fieldName (I) - The name of the field to extract. Will recusively * process sub-field names seperated by `.'. * o fieldValue (I) - The value to set for the field. * o keyedList (I) - The keyed list to set a field value in, may be an * NULL or an empty list to create a new keyed list. * Returns: * A pointer to a dynamically allocated string, or NULL if an error * occured. *----------------------------------------------------------------------------- */ char * Tcl_SetKeyedListField (interp, fieldName, fieldValue, keyedList) Tcl_Interp *interp; CONST char *fieldName; CONST char *fieldValue; CONST char *keyedList; { char *nameSeparPtr; char *newField = NULL, *newList; fieldInfo_t fieldInfo; char *elemArgv [2]; if (keyedList == NULL) keyedList = ""; /* * Check for sub-names, temporarly delimit the top name with a '\0'. */ nameSeparPtr = strchr ((char *) fieldName, '.'); if (nameSeparPtr != NULL) *nameSeparPtr = '\0'; if (SplitAndFindField (interp, fieldName, keyedList, &fieldInfo) != TCL_OK) goto errorExit; /* * Either recursively retrieve build the field value or just use the * supplied value. */ elemArgv [0] = (char *) fieldName; if (nameSeparPtr != NULL) { char saveChar; if (fieldInfo.valuePtr != NULL) { saveChar = fieldInfo.valuePtr [fieldInfo.valueSize]; fieldInfo.valuePtr [fieldInfo.valueSize] = '\0'; } elemArgv [1] = Tcl_SetKeyedListField (interp, nameSeparPtr+1, fieldValue, fieldInfo.valuePtr); if (fieldInfo.valuePtr != NULL) fieldInfo.valuePtr [fieldInfo.valueSize] = saveChar; if (elemArgv [1] == NULL) goto errorExit; newField = Tcl_Merge (2, elemArgv); ckfree (elemArgv [1]); } else { elemArgv [1] = (char *) fieldValue; newField = Tcl_Merge (2, elemArgv); } /* * If the field does not current exist in the keyed list, append it, * otherwise replace it. */ if (fieldInfo.foundIdx == -1) { fieldInfo.foundIdx = fieldInfo.argc; fieldInfo.argc++; } fieldInfo.argv [fieldInfo.foundIdx] = newField; newList = Tcl_Merge (fieldInfo.argc, fieldInfo.argv); if (nameSeparPtr != NULL) *nameSeparPtr = '.'; ckfree ((char *) newField); ckfree ((char *) fieldInfo.argv); return newList; errorExit: if (nameSeparPtr != NULL) *nameSeparPtr = '.'; if (newField != NULL) ckfree ((char *) newField); if (fieldInfo.argv != NULL) ckfree ((char *) fieldInfo.argv); return NULL; } /* *----------------------------------------------------------------------------- * * Tcl_DeleteKeyedListField -- * Delete a field value in keyed list. * * Parameters: * o interp (I/O) - Error message will be return in result if there is an * error. * o fieldName (I) - The name of the field to extract. Will recusively * process sub-field names seperated by `.'. * o fieldValue (I) - The value to set for the field. * o keyedList (I) - The keyed list to delete the field from. * Returns: * A pointer to a dynamically allocated string containing the new list, or * NULL if an error occured. *----------------------------------------------------------------------------- */ char * Tcl_DeleteKeyedListField (interp, fieldName, keyedList) Tcl_Interp *interp; CONST char *fieldName; CONST char *keyedList; { char *nameSeparPtr; char *newList; int idx; fieldInfo_t fieldInfo; char *elemArgv [2]; char *newElement; /* * Check for sub-names, temporarly delimit the top name with a '\0'. */ nameSeparPtr = strchr ((char *) fieldName, '.'); if (nameSeparPtr != NULL) *nameSeparPtr = '\0'; if (SplitAndFindField (interp, fieldName, keyedList, &fieldInfo) != TCL_OK) goto errorExit; if (fieldInfo.foundIdx == -1) { Tcl_AppendResult (interp, "field name not found: \"", fieldName, "\"", (char *) NULL); goto errorExit; } /* * If sub-field, recurse down to find the field to delete. If empty field * returned or no sub-field, delete the found entry by moving everything * up in the argv. */ elemArgv [0] = (char *) fieldName; if (nameSeparPtr != NULL) { char saveChar; if (fieldInfo.valuePtr != NULL) { saveChar = fieldInfo.valuePtr [fieldInfo.valueSize]; fieldInfo.valuePtr [fieldInfo.valueSize] = '\0'; } elemArgv [1] = Tcl_DeleteKeyedListField (interp, nameSeparPtr+1, fieldInfo.valuePtr); if (fieldInfo.valuePtr != NULL) fieldInfo.valuePtr [fieldInfo.valueSize] = saveChar; if (elemArgv [1] == NULL) goto errorExit; if (elemArgv [1][0] == '\0') newElement = NULL; else newElement = Tcl_Merge (2, elemArgv); ckfree (elemArgv [1]); } else newElement = NULL; if (newElement == NULL) { for (idx = fieldInfo.foundIdx; idx < fieldInfo.argc; idx++) fieldInfo.argv [idx] = fieldInfo.argv [idx + 1]; fieldInfo.argc--; } else fieldInfo.argv [fieldInfo.foundIdx] = newElement; newList = Tcl_Merge (fieldInfo.argc, fieldInfo.argv); if (nameSeparPtr != NULL) *nameSeparPtr = '.'; if (newElement != NULL) ckfree (newElement); ckfree ((char *) fieldInfo.argv); return newList; errorExit: if (nameSeparPtr != NULL) *nameSeparPtr = '.'; if (fieldInfo.argv != NULL) ckfree ((char *) fieldInfo.argv); return NULL; } /* *----------------------------------------------------------------------------- * * Tcl_KeyldelCmd -- * Implements the TCL keyldel command: * keyldel listvar key * * Results: * Standard TCL results. * *---------------------------------------------------------------------------- */ int Tcl_KeyldelCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { char *keyedList, *newList; int listArgc, fieldIdx, idx; char **listArgv; char *varPtr; if (argc != 3) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " listvar key", (char *) NULL); return TCL_ERROR; } keyedList = Tcl_GetVar (interp, argv[1], TCL_LEAVE_ERR_MSG); if (keyedList == NULL) return TCL_ERROR; newList = Tcl_DeleteKeyedListField (interp, argv [2], keyedList); if (newList == NULL) return TCL_ERROR; varPtr = Tcl_SetVar (interp, argv [1], newList, TCL_LEAVE_ERR_MSG); ckfree ((char *) newList); return (varPtr == NULL) ? TCL_ERROR : TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_KeylgetCmd -- * Implements the TCL keylget command: * keylget listvar [key] [retvar | {}] * * Results: * Standard TCL results. * *----------------------------------------------------------------------------- */ int Tcl_KeylgetCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { char *keyedList; char *fieldValue; char **fieldValuePtr; int result; if ((argc < 2) || (argc > 4)) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " listvar [key] [retvar | {}]", (char *) NULL); return TCL_ERROR; } keyedList = Tcl_GetVar (interp, argv[1], TCL_LEAVE_ERR_MSG); if (keyedList == NULL) return TCL_ERROR; /* * Handle request for list of keys, use keylkeys command. */ if (argc == 2) return Tcl_KeylkeysCmd (clientData, interp, argc, argv); /* * Handle retrieving a value for a specified key. */ if (argv [2] == '\0') { interp->result = "null key not allowed"; return TCL_ERROR; } if ((argc == 4) && (argv [3][0] == '\0')) fieldValuePtr = NULL; else fieldValuePtr = &fieldValue; result = Tcl_GetKeyedListField (interp, argv [2], keyedList, fieldValuePtr); if (result == TCL_ERROR) return TCL_ERROR; /* * Handle field name not found. */ if (result == TCL_BREAK) { if (argc == 3) { Tcl_AppendResult (interp, "key \"", argv [2], "\" not found in keyed list", (char *) NULL); return TCL_ERROR; } else { interp->result = "0"; return TCL_OK; } } /* * Handle field name found and return in the result. */ if (argc == 3) { Tcl_SetResult (interp, fieldValue, TCL_DYNAMIC); return TCL_OK; } /* * Handle null return variable specified and key was found. */ if (argv [3][0] == '\0') { interp->result = "1"; return TCL_OK; } /* * Handle returning the value to the variable. */ if (Tcl_SetVar (interp, argv [3], fieldValue, TCL_LEAVE_ERR_MSG) == NULL) result = TCL_ERROR; else result = TCL_OK; ckfree (fieldValue); interp->result = "1"; return result; } /* *----------------------------------------------------------------------------- * * Tcl_KeylkeysCmd -- * Implements the TCL keylkeys command: * keylkeys listvar [key] * * Results: * Standard TCL results. * *----------------------------------------------------------------------------- */ int Tcl_KeylkeysCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { char *keyedList, **keyesArgv; int result, keyesArgc; if ((argc < 2) || (argc > 3)) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " listvar [key]", (char *) NULL); return TCL_ERROR; } keyedList = Tcl_GetVar (interp, argv[1], TCL_LEAVE_ERR_MSG); if (keyedList == NULL) return TCL_ERROR; /* * If key argument is not specified, then argv [2] is NULL, meaning get * top level keys. */ result = Tcl_GetKeyedListKeys (interp, argv [2], keyedList, &keyesArgc, &keyesArgv); if (result == TCL_ERROR) return TCL_ERROR; if (result == TCL_BREAK) { Tcl_AppendResult (interp, "field name not found: \"", argv [2], "\"", (char *) NULL); return TCL_ERROR; } Tcl_SetResult (interp, Tcl_Merge (keyesArgc, keyesArgv), TCL_DYNAMIC); ckfree (keyesArgv); return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_KeylsetCmd -- * Implements the TCL keylset command: * keylset listvar key value [key value...] * * Results: * Standard TCL results. * *----------------------------------------------------------------------------- */ int Tcl_KeylsetCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { char *keyedList, *newList, *prevList; char *varPtr; int idx; if ((argc < 4) || ((argc % 2) != 0)) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " listvar key value [key value...]", (char *) NULL); return TCL_ERROR; } keyedList = Tcl_GetVar (interp, argv[1], 0); newList = keyedList; for (idx = 2; idx < argc; idx += 2) { prevList = newList; newList = Tcl_SetKeyedListField (interp, argv [idx], argv [idx + 1], prevList); if (prevList != keyedList) ckfree (prevList); if (newList == NULL) return TCL_ERROR; } varPtr = Tcl_SetVar (interp, argv [1], newList, TCL_LEAVE_ERR_MSG); ckfree ((char *) newList); return (varPtr == NULL) ? TCL_ERROR : TCL_OK; } micropolis-activity/src/tclx/src/tclxcclk.c0000664000076400007640000000562310724145723021344 0ustar simcitysimcity/* * tclXcnvclock.c -- * * Contains the TCL convertclock command. This is in a module seperate * from clock so that it can be excluded, along with the yacc generated code, * since its rather large. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXcnvclock.c,v 2.1 1992/11/07 22:23:03 markd Exp $ *----------------------------------------------------------------------------- */ #include "tclxint.h" #include /* *----------------------------------------------------------------------------- * * Tcl_ConvertclockCmd -- * Implements the TCL convertclock command: * convertclock dateString [GMT|{}] * * Results: * Standard TCL results. * *----------------------------------------------------------------------------- */ int Tcl_ConvertclockCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { long clockVal; time_t baseClock; struct tm *timeDataPtr; long zone; if ((argc < 2) || (argc > 4)) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " dateString [GMT|{}] [baseclock]", (char *) NULL); return TCL_ERROR; } if (argc == 4) { if (Tcl_GetLong (interp, argv [3], &baseClock) != TCL_OK) return TCL_ERROR; } else time (&baseClock); if ((argc > 2) && (argv [2][0] != '\0')) { if (!STREQU (argv [2], "GMT")) { Tcl_AppendResult (interp, "invalid argument: expected `GMT', ", "got : `", argv [2], "'", (char *) NULL); return TCL_ERROR; } zone = 0; /* Zero minutes from GMT */ } else { timeDataPtr = localtime (&baseClock); /* * Get the minutes east of GMT. */ #ifdef TCL_TM_GMTOFF zone = -(timeDataPtr->tm_gmtoff / 60); #endif #ifdef TCL_TIMEZONE_VAR zone = timezone / 60; #endif #if !defined(TCL_TM_GMTOFF) && !defined(TCL_TIMEZONE_VAR) zone = timeDataPtr->tm_tzadj / 60; #endif } clockVal = Tcl_GetDate (argv [1], baseClock, zone); if (clockVal == -1) { Tcl_AppendResult (interp, "Unable to convert date-time string \"", argv [1], "\"", (char *) NULL); return TCL_ERROR; } sprintf (interp->result, "%ld", clockVal); return TCL_OK; } micropolis-activity/src/tclx/src/tclxtend.h0000664000076400007640000001576210724145723021374 0ustar simcitysimcity/* * tclExtend.h * * External declarations for the extended Tcl library. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclExtend.h,v 2.0 1992/10/16 04:51:29 markd Rel $ *----------------------------------------------------------------------------- */ #ifndef TCLEXTEND_H #define TCLEXTEND_H #include #include "tcl.h" /* * Version suffix for extended Tcl, this is appended to the standard Tcl * version to form the actual extended Tcl version. */ #define TCL_EXTD_VERSION_SUFFIX "c" /* 6.1c, 6.2c or 6.3c */ #ifdef MSDOS #define TCL_NO_ITIMER #define TCL_NO_FILE_LOCKING #define TCL_IEEE_FP_MATH #define TCL_32_BIT_RANDOM #define TCL_POSIX_SIG #define TCL_TM_GMTOFF #endif typedef void *void_pt; /* * Flags for Tcl shell startup. */ #define TCLSH_QUICK_STARTUP 1 /* Don't process default & init files. */ #define TCLSH_ABORT_STARTUP_ERR 2 /* Abort on an error. */ #define TCLSH_NO_INIT_FILE 4 /* Don't process the init file. */ /* * These globals are used by the infox command. Should be set by main. */ extern char *tclxVersion; /* Extended Tcl version number. */ extern int tclxPatchlevel; /* Extended Tcl patch level. */ extern char *tclAppName; /* Application name */ extern char *tclAppLongname; /* Long, natural language application name */ extern char *tclAppVersion; /* Version number of the application */ /* * If set to be a pointer to the procedure Tcl_RecordAndEval, will link in * history. Should be set by main. */ extern int (*tclShellCmdEvalProc) (); /* * If non-zero, a signal was received. Normally signals are handled in * Tcl_Eval, but if an application does not return to eval for some period * of time, then this should be checked and Tcl_CheckForSignal called if * this is set. */ extern int tclReceivedSignal; /* * Exported Extended Tcl functions. */ EXTERN int Tcl_CheckForSignal _ANSI_ARGS_((Tcl_Interp *interp, int cmdResultCode)); EXTERN void Tcl_CommandLoop _ANSI_ARGS_((Tcl_Interp *interp, FILE *inFile, FILE *outFile, int (*evalProc) (), unsigned options)); EXTERN Tcl_Interp * Tcl_CreateExtendedInterp (); EXTERN char * Tcl_DeleteKeyedListField _ANSI_ARGS_((Tcl_Interp *interp, CONST char *fieldName, CONST char *keyedList)); EXTERN char * Tcl_DownShift _ANSI_ARGS_((char *targetStr, CONST char *sourceStr)); EXTERN void Tcl_ErrorAbort _ANSI_ARGS_((Tcl_Interp *interp, int exitCode)); EXTERN char * Tcl_UpShift _ANSI_ARGS_((char *targetStr, CONST char *sourceStr)); EXTERN int Tcl_GetKeyedListField _ANSI_ARGS_((Tcl_Interp *interp, CONST char *fieldName, CONST char *keyedList, char **fieldValuePtr)); int Tcl_GetKeyedListKeys _ANSI_ARGS_((Tcl_Interp *interp, CONST char *subFieldName, CONST char *keyedList, int *keyesArgcPtr, char ***keyesArgvPtr)); EXTERN int Tcl_GetLong _ANSI_ARGS_((Tcl_Interp *interp, CONST char *string, long *longPtr)); EXTERN int Tcl_GetUnsigned _ANSI_ARGS_((Tcl_Interp *interp, CONST char *string, unsigned *unsignedPtr)); EXTERN char * Tcl_SetKeyedListField _ANSI_ARGS_((Tcl_Interp *interp, CONST char *fieldName, CONST char *fieldvalue, CONST char *keyedList)); EXTERN int Tcl_StrToLong _ANSI_ARGS_((CONST char *string, int base, long *longPtr)); EXTERN int Tcl_StrToInt _ANSI_ARGS_((CONST char *string, int base, int *intPtr)); EXTERN int Tcl_StrToUnsigned _ANSI_ARGS_((CONST char *string, int base, unsigned *unsignedPtr)); EXTERN int Tcl_StrToDouble _ANSI_ARGS_((CONST char *string, double *doublePtr)); EXTERN void_pt Tcl_HandleAlloc _ANSI_ARGS_((void_pt headerPtr, char *handlePtr)); EXTERN void Tcl_HandleFree _ANSI_ARGS_((void_pt headerPtr, void_pt entryPtr)); EXTERN void_pt Tcl_HandleTblInit _ANSI_ARGS_((CONST char *handleBase, int entrySize, int initEntries)); EXTERN void Tcl_HandleTblRelease _ANSI_ARGS_((void_pt headerPtr)); EXTERN int Tcl_HandleTblUseCount _ANSI_ARGS_((void_pt headerPtr, int amount)); EXTERN void_pt Tcl_HandleWalk _ANSI_ARGS_((void_pt headerPtr, int *walkKeyPtr)); EXTERN void Tcl_WalkKeyToHandle _ANSI_ARGS_((void_pt headerPtr, int walkKey, char *handlePtr)); EXTERN void_pt Tcl_HandleXlate _ANSI_ARGS_((Tcl_Interp *interp, void_pt headerPtr, CONST char *handle)); EXTERN int Tcl_MathError _ANSI_ARGS_((char *functionName, int errorType)); EXTERN void Tcl_Startup _ANSI_ARGS_((Tcl_Interp *interp, int argc, CONST char **argv, CONST char *defaultFile, unsigned options)); EXTERN int Tcl_ShellEnvInit _ANSI_ARGS_((Tcl_Interp *interp, unsigned options, CONST char *programName, int argc, CONST char **argv, int interactive, CONST char *defaultFile)); EXTERN int Tcl_System _ANSI_ARGS_((Tcl_Interp *interp, char *command)); #endif micropolis-activity/src/tclx/src/tclxrexp.c0000664000076400007640000004003610724145723021403 0ustar simcitysimcity/* * tclXregexp.c -- * * Tcl regular expression pattern matching utilities. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * Boyer-Moore code from: * torek-boyer-moore/27-Aug-90 by * chris@mimsy.umd.edu (Chris Torek) *----------------------------------------------------------------------------- * $Id: tclXregexp.c,v 2.0 1992/10/16 04:51:08 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclxint.h" #include "regexp.h" /* * This is declared in tclUtil.c. Must be set to NULL before compiling * a regular expressions. */ extern char *tclRegexpError; /* * Meta-characters for regular expression */ #define REXP_META "^$.[()|?+*\\" #define REXP_META_NO_BRACKET_NO_OR "^$.()?+*\\" #ifndef CHAR_MAX # define CHAR_MAX 255 #endif /* * Prototypes of internal functions. */ static char * BoyerMooreCompile _ANSI_ARGS_((char *pat, int patlen)); static char * BoyerMooreExecute _ANSI_ARGS_((char *text, unsigned textlen, char *compPtr, unsigned *patLenP)); static int FindNonRegExpSubStr _ANSI_ARGS_((char *expression, char **subStrPtrPtr)); /* * Boyer-Moore search: input is `text' (a string) and its length, * and a `pattern' (another string) and its length. * * The linear setup cost of this function is approximately 256 + patlen. * Afterwards, however, the average cost is O(textlen/patlen), and the * worst case is O(textlen+patlen). * * The Boyer-Moore algorithm works by observing that, for each position * in the text, if the character there does *not* occur somewhere in the * search pattern, no comparisons including that character will match. * That is, given the text "hello world..." and the pattern "goodbye", the * `w' in `world' means that none of `hello w', `ello wo', `llo wor', * `lo worl', `o world', ` world.', and `world..' can match. In fact, * exactly patlen strings are certain not to match. We can discover this * simply by looking at the patlen'th character. Furthermore, even if * the text character does occur, it may be that it rules out some number * of other matches. Again, we can discover this by doing the match * `backwards'. * * We set up a table of deltas for each possible character, with * delta[character] being patlen for characters not in the pattern, * less for characters in the pattern, growing progressively smaller * as we near the end of the pattern. Matching then works as follows: * * 0 1 2 3 * 01234567890123456789012345678901234567 * "Here is the string being searched into" (text) * ------ (pos = [0..5]) * "string" (pat) * 654321- (deltas) * * (the delta for `-' will be derived below). * * Positions 0..5 end with `i', which is not the `g' we want. `i' does * appear in `string', but two characters before the end. We skip * forward so as to make the `i's match up: * * "Here is the string being searched into" (text) * "string" (pos = [2..7]) * * Next we find that ` ' and `g' do not match. Since ` ' does not appear * in the pattern at all, we can skip forward 6: * * "Here is the string being searched into" (text) * "string" (pos = [8..13]) * * Comparing `t' vs `g', we again find no match, and so we obtain the * delta for `t', which is 4. We skip to position 17: * * "Here is the string being searched into" (text) * "string" (pos = [12..17]) * * It thus takes only four steps to move the search point forward to the * match, in this case. * * If the pattern has a recurring character, we must set the delta for * that character to the distance of the one closest to the end: * * "befuddle the cat" (text) * "fuddle" (pos = [0..5]) * 654321- (delta) * * We want the next search to line the `d's up like this: * * "befuddle the cat" (text) * "fuddle" (pos = [2..7]) * * and not like this: * * "befuddle the cat" (text) * "fuddle" (pos = [3..8]) * * so we take the smaller delta for d, i.e., 2. * * The last task is computing the delta we have noted above as `-': * * "candlesticks" (text) * "hand" (pos = [0..3]) * 4321- (delta) * * Here the `d' in `hand' matches the `d' in `candlesticks', but the * strings differ. Since there are no other `d's in `hand', we know * that none of (cand,andl,ndle,dles) can match, and thus we want this * delta to be 4 (the length of the pattern). But if we had, e.g.: * * "candlesticks" (text) * "deed" (pos = [0..3]) * 4321- (delta) * * then we should advance to line up the other `d': * * "candlesticks" (text) * "deed" (pos = [3..6]) * * As this suggests, the delta should be that for the `d' nearest the * end, but not including the end. This is easily managed by setting up * a delta table as follows: * * for int:c in [0..255] { delta[c] = patlen; }; * for int:x in [0..patlen-1) { delta[pat[x]] = patlen - (x + 1); }; * * delta[pat[patlen-1]] is never written, so the last letter inherits the * delta from an earlier iteration or from the previous loop. * * NB: the nonsense with `deltaspace' below exists merely because gcc * does a horrible job of common subexpression elimination (it does not * notice that the array is at a constant stack address). */ struct compiled_search_struct { unsigned patlen; unsigned deltaspace[CHAR_MAX + 1]; }; static char * BoyerMooreCompile (pat, patlen) char *pat; int patlen; { register unsigned char *p, *t; register unsigned i, p1, j, *delta; struct compiled_search_struct *cp; int alloc_len; /* * Algorithm fails if pattern is empty. */ if ((p1 = patlen) == 0) return (NULL); alloc_len = sizeof(struct compiled_search_struct) + patlen + 1; cp = (struct compiled_search_struct *) ckalloc (alloc_len); strncpy((char *)cp+sizeof(struct compiled_search_struct), pat, patlen); *((char *)cp+alloc_len-1) = '\0'; /* set up deltas */ delta = cp->deltaspace; for (i = 0; i <= CHAR_MAX; i++) delta[i] = p1; for (p = (unsigned char *)pat, i = p1; --i > 0;) delta[*p++] = i; cp->patlen = patlen; return((char*) cp); } static char * BoyerMooreExecute (text, textlen, compPtr, patLenP) char *text; unsigned textlen; char *compPtr; unsigned *patLenP; { register unsigned char *p, *t; struct compiled_search_struct *csp = (struct compiled_search_struct*) compPtr; register unsigned i, p1, j, *delta = csp->deltaspace; char *pat; unsigned patlen; *patLenP = p1 = patlen = csp->patlen; /* code below fails (whenever i is unsigned) if pattern too long */ if (p1 > textlen) return (NULL); pat = (char *)csp + sizeof(struct compiled_search_struct); /* * From now on, we want patlen - 1. * In the loop below, p points to the end of the pattern, * t points to the end of the text to be tested against the * pattern, and i counts the amount of text remaining, not * including the part to be tested. */ p1--; p = (unsigned char *)pat + p1; t = (unsigned char *)text + p1; i = textlen - patlen; for (;;) { if (*p == *t && memcmp((p - p1), (t - p1), p1) == 0) return ((char *)t - p1); j = delta[*t]; if (i < j) break; i -= j; t += j; } return (NULL); } /* *----------------------------------------------------------------------------- * * Tcl_RegExpClean -- * Free all resources associated with a regular expression info * structure.. * *----------------------------------------------------------------------------- */ void Tcl_RegExpClean (regExpPtr) regexp_pt regExpPtr; { if (regExpPtr->progPtr != NULL) ckfree ((char *) regExpPtr->progPtr); if (regExpPtr->boyerMoorePtr != NULL) ckfree ((char *) regExpPtr->boyerMoorePtr); } /* *----------------------------------------------------------------------------- * * FindNonRegExpSubStr * Find the largest substring that does not have any regular * expression meta-characters and is not located within `[...]'. * If the regexp contains an or (|), zero is returned, as the * Boyer-Moore optimization does not work, since there are actually * multiple patterns. The real solution is to build the Boyer-Moore * into the regular expression code. *----------------------------------------------------------------------------- */ static int FindNonRegExpSubStr (expression, subStrPtrPtr) char *expression; char **subStrPtrPtr; { register char *subStrPtr = NULL; register char subStrLen = 0; register char *scanPtr = expression; register int len; while (*scanPtr != '\0') { len = strcspn (scanPtr, REXP_META); /* * If we are at a meta-character, by-pass till non-meta. If we hit * a `[' then by-pass the entire `[...]' range, but be careful, could * have omitted `]'. In a `|' is encountered (except in brackets),' * we are through. */ if (len == 0) { scanPtr += strspn (scanPtr, REXP_META_NO_BRACKET_NO_OR); if (*scanPtr == '|') return 0; if (*scanPtr == '[') { scanPtr += strcspn (scanPtr, "]"); if (*scanPtr == ']') scanPtr++; } } else { if (len > subStrLen) { subStrPtr = scanPtr; subStrLen = len; } scanPtr += len; } } *subStrPtrPtr = subStrPtr; return subStrLen; } /* *----------------------------------------------------------------------------- * * Tcl_RegExpCompile -- * Compile a regular expression. * * Parameters: * o regExpPtr - Used to hold info on this regular expression. If the * structure is being reused, it Tcl_RegExpClean should be called first. * o expression - Regular expression to compile. * o flags - The following flags are recognized: * o REXP_NO_CASE - Comparison will be regardless of case. * o REXP_BOTH_ALGORITHMS - If specified, a Boyer-Moore expression is * compiled for the largest substring of the expression that does * not contain any meta-characters. This is slows compiling, but * speeds up large searches. * * Results: * Standard TCL results. *----------------------------------------------------------------------------- */ int Tcl_RegExpCompile (interp, regExpPtr, expression, flags) Tcl_Interp *interp; regexp_pt regExpPtr; char *expression; int flags; { char *expBuf; int anyMeta; if (*expression == '\0') { Tcl_AppendResult (interp, "Null regular expression", (char *) NULL); return TCL_ERROR; } regExpPtr->progPtr = NULL; regExpPtr->boyerMoorePtr = NULL; regExpPtr->noCase = flags & REXP_NO_CASE; if (flags & REXP_NO_CASE) { expBuf = ckalloc (strlen (expression) + 1); Tcl_DownShift (expBuf, expression); } else expBuf = expression; anyMeta = strpbrk (expBuf, REXP_META) != NULL; /* * If no meta-characters, use Boyer-Moore string matching only. */ if (!anyMeta) { regExpPtr->boyerMoorePtr = BoyerMooreCompile (expBuf, strlen (expBuf)); goto okExitPoint; } /* * Build a Boyer-Moore on the largest non-meta substring, if requested, * and the reg-exp does not contain a `|' (or). If less that three * characters in the string, don't use B-M, as it seems not optimal at * this point. */ if (flags & REXP_BOTH_ALGORITHMS) { char *subStrPtr; int subStrLen; subStrLen = FindNonRegExpSubStr (expBuf, &subStrPtr); if (subStrLen > 2) regExpPtr->boyerMoorePtr = BoyerMooreCompile (subStrPtr, subStrLen); } /* * Compile meta-character containing regular expression. */ tclRegexpError = NULL; regExpPtr->progPtr = regcomp (expBuf); if (tclRegexpError != NULL) { if (flags & REXP_NO_CASE) ckfree (expBuf); Tcl_AppendResult (interp, "error in regular expression: ", tclRegexpError, (char *) NULL); if (flags & REXP_NO_CASE) ckfree (expBuf); Tcl_RegExpClean (regExpPtr); } okExitPoint: if (flags & REXP_NO_CASE) ckfree (expBuf); return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_RegExpExecute -- * Execute a regular expression compiled with Boyer-Moore and/or * regexp. * * Parameters: * o regExpPtr - Used to hold info on this regular expression. * o matchStrIn - String to match against the regular expression. * o matchStrLower - Optional lower case version of the string. If * multiple no case matches are being done, time can be saved by * down shifting the string in advance. NULL if not a no-case * match or this procedure is to do the down shifting. * * Results: * TRUE if a match, FALSE if it does not match. * *----------------------------------------------------------------------------- */ int Tcl_RegExpExecute (interp, regExpPtr, matchStrIn, matchStrLower) Tcl_Interp *interp; regexp_pt regExpPtr; char *matchStrIn; char *matchStrLower; { char *matchStr; int result; if (regExpPtr->noCase) { if (matchStrLower == NULL) { matchStr = ckalloc (strlen (matchStrIn) + 1); Tcl_DownShift (matchStr, matchStrIn); } else matchStr = matchStrLower; } else matchStr = matchStrIn; /* * If a Boyer-Moore pattern has been compiled, use that algorithm to test * against the text. If that passes, then test with the regexp if we have * it. */ if (regExpPtr->boyerMoorePtr != NULL) { char *startPtr; unsigned matchLen; startPtr = BoyerMooreExecute (matchStr, strlen (matchStr), regExpPtr->boyerMoorePtr, &matchLen); if (startPtr == NULL) { result = FALSE; goto exitPoint; } if (regExpPtr->progPtr == NULL) { result = TRUE; /* No regexp, its a match! */ goto exitPoint; } } /* * Give it a go with full regular expressions */ result = regexec (regExpPtr->progPtr, matchStr); /* * Clean up and return status here. */ exitPoint: if ((regExpPtr->noCase) && (matchStrLower == NULL)) ckfree (matchStr); return result; } micropolis-activity/src/tclx/src/tclxproc.c0000664000076400007640000002012310724145723021363 0ustar simcitysimcity/* * tclXprocess.c -- * * Tcl command to create and manage processes. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXprocess.c,v 2.2 1992/10/30 03:53:30 markd Exp $ *----------------------------------------------------------------------------- */ #include "tclxint.h" /* * These are needed for wait command even if waitpid is not available. */ #ifndef WNOHANG # define WNOHANG 1 #endif #ifndef WUNTRACED # define WUNTRACED 2 #endif /* *----------------------------------------------------------------------------- * * Tcl_ExeclCmd -- * Implements the TCL execl command: * execl prog [argList] * * Results: * Standard TCL results, may return the UNIX system error message. * *----------------------------------------------------------------------------- */ int Tcl_ExeclCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { #define STATIC_ARG_SIZE 12 char *staticArgv [STATIC_ARG_SIZE]; char **argInList = NULL; char **argList = staticArgv; int argInCnt, idx; if ((argc < 2) || (argc > 3)) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " prog [argList]", (char *) NULL); return TCL_ERROR; } /* * If arg list is supplied, split it and build up the arguments to pass. * otherwise, just supply argv[0]. Must be NULL terminated. */ if (argc > 2) { if (Tcl_SplitList (interp, argv [2], &argInCnt, &argInList) != TCL_OK) return TCL_ERROR; if (argInCnt > STATIC_ARG_SIZE - 2) argList = (char **) ckalloc ((argInCnt + 1) * sizeof (char **)); for (idx = 0; idx < argInCnt; idx++) argList [idx + 1] = argInList [idx]; argList [argInCnt + 1] = NULL; } else { argList [1] = NULL; } argList [0] = argv [1]; /* Program name */ if (execvp (argv[1], argList) < 0) { if (argInList != NULL) ckfree (argInList); if (argList != staticArgv) ckfree (argList); interp->result = Tcl_UnixError (interp); return TCL_ERROR; } } /* *----------------------------------------------------------------------------- * * Tcl_ForkCmd -- * Implements the TCL fork command: * fork * * Results: * Standard TCL results, may return the UNIX system error message. * *----------------------------------------------------------------------------- */ int Tcl_ForkCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { int pid; if (argc != 1) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], (char *) NULL); return TCL_ERROR; } pid = Tcl_Fork (); if (pid < 0) { interp->result = Tcl_UnixError (interp); return TCL_ERROR; } sprintf(interp->result, "%d", pid); return TCL_OK; } #ifndef TCL_HAVE_WAITPID /* *----------------------------------------------------------------------------- * * Tcl_WaitCmd -- * Implements the TCL wait command: * wait pid * * This version is for Tcl 6.4 that does not have the waitpid changes (which * have not yet been released). * * Results: * Standard TCL results, may return the UNIX system error message. * *----------------------------------------------------------------------------- */ int Tcl_WaitCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { WAIT_STATUS_TYPE status; int pid, returnedPid; if (argc != 2) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " pid", (char *) NULL); return TCL_ERROR; } if (Tcl_GetInt (interp, argv [1], &pid) != TCL_OK) return TCL_ERROR; returnedPid = Tcl_WaitPids (1, &pid, (WAIT_STATUS_TYPE *) &status); if (returnedPid < 0) { interp->result = Tcl_UnixError (interp); return TCL_ERROR; } if (WIFEXITED (status)) sprintf (interp->result, "%d %s %d", returnedPid, "EXIT", WEXITSTATUS (status)); else if (WIFSIGNALED (status)) sprintf (interp->result, "%d %s %s", returnedPid, "SIG", Tcl_SignalId (WTERMSIG (status))); else if (WIFSTOPPED (status)) sprintf (interp->result, "%d %s %s", returnedPid, "STOP", Tcl_SignalId (WSTOPSIG (status))); return TCL_OK; } #else /* *----------------------------------------------------------------------------- * * Tcl_WaitCmd -- * Implements the TCL wait command: * wait [-nohang] [-untraced] [-pgroup] [pid] * * Results: * Standard TCL results, may return the UNIX system error message. * *----------------------------------------------------------------------------- */ int Tcl_WaitCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { int pid, returnedPid, status, idx; int options = 0, pgroup = FALSE; for (idx = 1; idx < argc; idx++) { if (argv [idx][0] != '-') break; if (STREQU ("-nohang", argv [idx])) { if (options & WNOHANG) goto usage; options |= WNOHANG; continue; } if (STREQU ("-untraced", argv [idx])) { if (options & WUNTRACED) goto usage; options |= WUNTRACED; continue; } if (STREQU ("-pgroup", argv [idx])) { if (pgroup) goto usage; pgroup = TRUE; continue; } goto usage; /* None match */ } /* * Check for more than one non-minus argument. If ok, convert pid, * if supplied. */ if (idx < argc - 1) goto usage; if (idx < argc) { if (Tcl_GetInt (interp, argv [idx], &pid) != TCL_OK) return TCL_ERROR; if (pid <= 0) { Tcl_AppendResult (interp, "pid or process group must be greater ", "than zero", (char *) NULL); return TCL_ERROR; } } else { pid = -1; /* pid not supplied */ } #if !TCL_HAVE_WAITPID /* * Versions that don't have real waitpid have limited functionality. */ if ((options != 0) || pgroup) { Tcl_AppendResult (interp, "The \"-nohang\", \"-untraced\" and ", "\"-pgroup\" options are not available on this ", "system", (char *) NULL); return TCL_ERROR; } #endif if (pgroup) { if (pid > 0) pid = -pgroup; else pid = 0; } returnedPid = waitpid (pid, &status, options); if (returnedPid < 0) { interp->result = Tcl_UnixError (interp); return TCL_ERROR; } if (WIFEXITED (status)) sprintf (interp->result, "%d %s %d", returnedPid, "EXIT", WEXITSTATUS (status)); else if (WIFSIGNALED (status)) sprintf (interp->result, "%d %s %s", returnedPid, "SIG", Tcl_SignalId (WTERMSIG (status))); else if (WIFSTOPPED (status)) sprintf (interp->result, "%d %s %s", returnedPid, "STOP", Tcl_SignalId (WSTOPSIG (status))); return TCL_OK; usage: Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " ", "[-nohang] [-untraced] [-pgroup] [pid]", (char *) NULL); return TCL_ERROR; } #endif micropolis-activity/src/tclx/src/tclxclp.c0000664000076400007640000002737010724145723021211 0ustar simcitysimcity/* * tclXcmdloop -- * * Interactive command loop, C and Tcl callable. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXcmdloop.c,v 2.0 1992/10/16 04:50:29 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclxint.h" /* * Pointer to eval procedure to use. This way bring in the history module * from a library can be made optional. This only works because the calling * sequence of Tcl_Eval is a superset of Tcl_RecordAndEval. This defaults * to no history, set this variable to Tcl_RecordAndEval to use history. */ int (*tclShellCmdEvalProc) () = Tcl_Eval; /* * Prototypes of internal functions. */ static int IsSetVarCmd _ANSI_ARGS_((Tcl_Interp *interp, char *command)); static void OutFlush _ANSI_ARGS_((FILE *filePtr)); static void Tcl_PrintResult _ANSI_ARGS_((FILE *fp, int returnval, char *resultText)); static void OutputPrompt _ANSI_ARGS_((Tcl_Interp *interp, FILE *outFP, int topLevel)); static int SetPromptVar _ANSI_ARGS_((Tcl_Interp *interp, char *hookVarName, char *newHookValue, char **oldHookValuePtr)); /* *----------------------------------------------------------------------------- * * IsSetVarCmd -- * * Determine if the current command is a `set' command that set * a variable (i.e. two arguments). This routine should only be * called if the command returned TCL_OK. * *----------------------------------------------------------------------------- */ static int IsSetVarCmd (interp, command) Tcl_Interp *interp; char *command; { char *nextPtr; if ((!STRNEQU (command, "set", 3)) || (!isspace (command [3]))) return FALSE; /* Quick check */ nextPtr = TclWordEnd (command, FALSE); if (*nextPtr == '\0') return FALSE; nextPtr = TclWordEnd (nextPtr, FALSE); if (*nextPtr == '\0') return FALSE; while (*nextPtr != '\0') { if (!isspace (*nextPtr)) return TRUE; nextPtr++; } return FALSE; } /* *----------------------------------------------------------------------------- * * OutFlush -- * * Flush a stdio file and check for errors. * *----------------------------------------------------------------------------- */ static void OutFlush (filePtr) FILE *filePtr; { int stat; stat = fflush (filePtr); if (ferror (filePtr)) { if (errno != EINTR) panic ("command loop: error writing to output file: %s\n", strerror (errno)); clearerr (filePtr); } } /* *----------------------------------------------------------------------------- * * Tcl_PrintResult -- * * Print a Tcl result * * Results: * * Takes an open file pointer, a return value and some result * text. Prints the result text if the return value is TCL_OK, * prints "Error:" and the result text if it's TCL_ERROR, * else prints "Bad return code:" and the result text. * *----------------------------------------------------------------------------- */ static void Tcl_PrintResult (fp, returnval, resultText) FILE *fp; int returnval; char *resultText; { if (returnval == TCL_OK) { if (resultText [0] != '\0') { fputs (resultText, fp); fputs ("\n", fp); } } else { OutFlush (fp); fputs ((returnval == TCL_ERROR) ? "Error" : "Bad return code", stderr); fputs (": ", stderr); fputs (resultText, stderr); fputs ("\n", stderr); OutFlush (stderr); } } /* *----------------------------------------------------------------------------- * * OutputPromp -- * Outputs a prompt by executing either the command string in * TCLENV(topLevelPromptHook) or TCLENV(downLevelPromptHook). * *----------------------------------------------------------------------------- */ static void OutputPrompt (interp, outFP, topLevel) Tcl_Interp *interp; FILE *outFP; int topLevel; { char *hookName; char *promptHook; int result; int promptDone = FALSE; hookName = topLevel ? "topLevelPromptHook" : "downLevelPromptHook"; promptHook = Tcl_GetVar2 (interp, "TCLENV", hookName, 1); if ((promptHook != NULL) && (promptHook [0] != '\0')) { result = Tcl_Eval (interp, promptHook, 0, (char **)NULL); if (!((result == TCL_OK) || (result == TCL_RETURN))) { fputs ("Error in prompt hook: ", stderr); fputs (interp->result, stderr); fputs ("\n", stderr); Tcl_PrintResult (outFP, result, interp->result); } else { fputs (interp->result, outFP); promptDone = TRUE; } } if (!promptDone) { if (topLevel) fputs ("%", outFP); else fputs (">", outFP); } OutFlush (outFP); } /* *----------------------------------------------------------------------------- * * Tcl_CommandLoop -- * * Run a Tcl command loop. The command loop interactively prompts for, * reads and executes commands. Two entries in the global array TCLENV * contain prompt hooks. A prompt hook is Tcl code that is executed and * its result is used as the prompt string. The element `topLevelPromptHook' * is the hook that generates the main prompt. The element * `downLevelPromptHook' is the hook to generate the prompt for reading * continuation lines for incomplete commands. If a signal occurs while * in the command loop, it is reset and ignored. EOF terminates the loop. * * Parameters: * o interp (I) - A pointer to the interpreter * o inFile (I) - The file to read commands from. * o outFile (I) - The file to write the prompts to. * o evalProc (I) - The function to call to evaluate a command. * Should be either Tcl_Eval or Tcl_RecordAndEval if history is desired. * o options (I) - Currently unused. *----------------------------------------------------------------------------- */ void Tcl_CommandLoop (interp, inFile, outFile, evalProc, options) Tcl_Interp *interp; FILE *inFile; FILE *outFile; int (*evalProc) (); unsigned options; { Tcl_CmdBuf cmdBuf; char inputBuf[256]; int topLevel = TRUE; int result; char *cmd; cmdBuf = Tcl_CreateCmdBuf(); while (TRUE) { /* * If a signal came in, process it and drop any pending command. */ if (tclReceivedSignal) { Tcl_CheckForSignal (interp, TCL_OK); Tcl_DeleteCmdBuf(cmdBuf); cmdBuf = Tcl_CreateCmdBuf(); topLevel = TRUE; } /* * Output a prompt and input a command. */ clearerr (inFile); clearerr (outFile); OutputPrompt (interp, outFile, topLevel); errno = 0; if (fgets (inputBuf, sizeof (inputBuf), inFile) == NULL) { if (!feof(inFile) && (errno == EINTR)) { putchar('\n'); continue; /* Next command */ } if (ferror (inFile)) panic ("command loop: error on input file: %s\n", strerror (errno)); goto endOfFile; } cmd = Tcl_AssembleCmd(cmdBuf, inputBuf); if (cmd == NULL) { topLevel = FALSE; continue; /* Next line */ } /* * Finally have a complete command, go eval it and maybe output the * result. */ result = (*evalProc) (interp, cmd, 0, (char **)NULL); if (result != TCL_OK || !IsSetVarCmd (interp, cmd)) Tcl_PrintResult (outFile, result, interp->result); topLevel = TRUE; } endOfFile: Tcl_DeleteCmdBuf(cmdBuf); } /* *----------------------------------------------------------------------------- * * SetPromptVar -- * Set one of the prompt hook variables, saving a copy of the old * value, if it exists. * * Parameters: * o hookVarName (I) - The name of the prompt hook, which is an element * of the TCLENV array. One of topLevelPromptHook or downLevelPromptHook. * o newHookValue (I) - The new value for the prompt hook. * o oldHookValuePtr (O) - If not NULL, then a pointer to a copy of the * old prompt value is returned here. NULL is returned if there was not * old value. This is a pointer to a malloc-ed string that must be * freed when no longer needed. * Result: * TCL_OK if the hook variable was set ok, TCL_ERROR if an error occured. *----------------------------------------------------------------------------- */ static int SetPromptVar (interp, hookVarName, newHookValue, oldHookValuePtr) Tcl_Interp *interp; char *hookVarName; char *newHookValue; char **oldHookValuePtr; { char *hookValue; char *oldHookPtr = NULL; if (oldHookValuePtr != NULL) { hookValue = Tcl_GetVar2 (interp, "TCLENV", hookVarName, TCL_GLOBAL_ONLY); if (hookValue != NULL) { oldHookPtr = ckalloc (strlen (hookValue) + 1); strcpy (oldHookPtr, hookValue); } } if (Tcl_SetVar2 (interp, "TCLENV", hookVarName, newHookValue, TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG) == NULL) { if (oldHookPtr != NULL) ckfree (oldHookPtr); return TCL_ERROR; } if (oldHookValuePtr != NULL) *oldHookValuePtr = oldHookPtr; return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_CommandloopCmd -- * Implements the TCL commandloop command: * commandloop prompt prompt2 * * Results: * Standard TCL results. * *----------------------------------------------------------------------------- */ int Tcl_CommandloopCmd(clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { char *oldTopLevelHook = NULL; char *oldDownLevelHook = NULL; int result = TCL_ERROR; if (argc > 3) { Tcl_AppendResult (interp, tclXWrongArgs, argv[0], " [prompt] [prompt2]", (char *) NULL); return TCL_ERROR; } if (argc > 1) { if (SetPromptVar (interp, "topLevelPromptHook", argv[1], &oldTopLevelHook) != TCL_OK) goto exitPoint; } if (argc > 2) { if (SetPromptVar (interp, "downLevelPromptHook", argv[2], &oldDownLevelHook) != TCL_OK) goto exitPoint; } Tcl_CommandLoop (interp, stdin, stdout, tclShellCmdEvalProc, 0); if (oldTopLevelHook != NULL) SetPromptVar (interp, "topLevelPromptHook", oldTopLevelHook, NULL); if (oldDownLevelHook != NULL) SetPromptVar (interp, "downLevelPromptHook", oldDownLevelHook, NULL); result = TCL_OK; exitPoint: if (oldTopLevelHook != NULL) ckfree (oldTopLevelHook); if (oldDownLevelHook != NULL) ckfree (oldDownLevelHook); return result; } micropolis-activity/src/tclx/src/makefile0000664000076400007640000000613110724145723021064 0ustar simcitysimcity# # Makefile -- # # Makefile for Extended Tcl C sources. This will compile all of Extended Tcl # and add it to the libtcl.a in the parent directory. Generates a Tcl shell # in the parent directory. # #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: Makefile,v 2.0 1992/10/16 04:51:22 markd Rel $ #------------------------------------------------------------------------------ # include ../config.mk include ../config/$(TCL_CONFIG_FILE) SHELL=/bin/sh #------------------------------------------------------------------------------ CFLAGS= $(OPTIMIZE_FLAG) $(XCFLAGS) -I../$(TCL_UCB_DIR) $(MEM_DEBUG_FLAGS) \ $(SYS_DEP_FLAGS) #------------------------------------------------------------------------------ OBJS= main.o tclxbsrc.o tclxcclk.o tclxchmd.o \ tclxclck.o tclxclp.o tclxcret.o tclxdebg.o \ tclxdup.o tclxfcmd.o tclxfctl.o tclxfmat.o \ tclxfsca.o tclxgdat.o tclxgenl.o tclxhndl.o \ tclxid.o tclxklst.o tclxlib.o tclxlist.o \ tclxmath.o tclxmerr.o tclxmsgc.o tclxproc.o \ tclxprof.o tclxrexp.o tclxsel.o tclxsig.o \ tclxstr.o tclxstup.o tclxunix.o tclxutil.o #------------------------------------------------------------------------------ all: made.tmp ../tcl made.tmp: $(OBJS) $(CPLUSOBJS) $(AR) cr ../libtcl.a $(OBJS) $(CPLUSOBJS) touch made.tmp tclxstup.o: patchlvl.h tclxstup.c $(CC) -c $(CFLAGS) -DTCL_DEFAULT=\"$(TCL_DEFAULT)\" tclxstup.c main.o: patchlvl.h main.c $(CC) -c $(CFLAGS) $(HISTORY_FLAG) main.c tclxgdat.c: tclxgdat.y $(YACC) tclxgdat.y mv y.tab.c tclxgdat.c ../tcl: ../libtcl.a made.tmp $(RANLIB_CMD) ../libtcl.a $(CC) $(CFLAGS) main.o ../libtcl.a $(LIBS) $(XLDFLAGS) -o ../tcl if $(DO_STRIPPING) ; then \ strip ../tcl; \ $(MCS_CMD) ../tcl; fi #------------------------------------------------------------------------------ # This is a painful situation. The file tcl++.h requires string.h, which is # redefined in the UCB Tcl directory. We force the compiler to search the # C++ directories first. tclplus.o: tclplus.c tclplus.h $(CCPLUS) -c -I $(CCPLUSINCL) $(CFLAGS) $(HISTORY_FLAG) tclplus.cc #------------------------------------------------------------------------------ # This is just to test if it compiles. tclplus: ../tclplus ../tclplus: mainplus.o $(CCPLUS) $(CFLAGS) main++.o ../libtcl.a $(LIBS) $(XLDFLAGS) \ -o ../tcl++ mainplus.o: tclplus.h mainplus.c $(CCPLUS) -c -I /usr/include/CC $(CFLAGS) $(HISTORY_FLAG) mainplus.C #------------------------------------------------------------------------------ clean: touch junk~ -rm -f made.tmp tclxgdat.c -rm -f *~ *.o ../tcl ../tclplus micropolis-activity/src/tclx/src/main.c0000664000076400007640000000465410724145723020464 0ustar simcitysimcity/* * main.c -- * * Main to run the Tcl shell. This file is a useful template for custom * applications that wish to have Tcl as the top level command language. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: main.c,v 2.1 1992/11/10 03:54:12 markd Exp $ *----------------------------------------------------------------------------- */ #include #include "tclxtend.h" int main(argc, argv) int argc; CONST char **argv; { Tcl_Interp *interp; /* * If history is to be used, then set the eval procedure pointer that * Tcl_CommandLoop so that history will be recorded. This reference * also brings in history from libtcl.a. */ #ifndef TCL_NOHISTORY tclShellCmdEvalProc = Tcl_RecordAndEval; #endif /* * Create a Tcl interpreter for the session, with all extended commands * initialized. This can be replaced with Tcl_CreateInterp followed * by a subset of the extended command initializaton procedures if * desired. */ interp = Tcl_CreateExtendedInterp(); /* * >>>>>> INITIALIZE APPLICATION SPECIFIC COMMANDS HERE <<<<<< */ /* * Load the tcl startup code, this should pull in all of the tcl * procs, paths, command line processing, autoloads, packages, etc. * If Tcl was invoked interactively, Tcl_Startup will give it * a command loop. */ Tcl_Startup (interp, argc, argv, NULL, 0); /* * Delete the interpreter (not neccessary under Unix, but we do * it if TCL_MEM_DEBUG is set to better enable us to catch memory * corruption problems) */ #ifdef TCL_MEM_DEBUG Tcl_DeleteInterp(interp); #endif #ifdef TCL_SHELL_MEM_LEAK printf (" >>> Dumping active memory list to mem.lst <<<\n"); if (Tcl_DumpActiveMemory ("mem.lst") != TCL_OK) panic ("error accessing `mem.lst': %s", strerror (errno)); #endif _exit(0); } micropolis-activity/src/tclx/src/tclxmath.c0000664000076400007640000001216510724145723021360 0ustar simcitysimcity/* * tclXmath.c -- * * Mathematical Tcl commands. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXmath.c,v 2.0 1992/10/16 04:50:59 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclxint.h" extern int rand(); /* * Prototypes of internal functions. */ int really_random _ANSI_ARGS_((int my_range)); /* *----------------------------------------------------------------------------- * * Tcl_MaxCmd -- * Implements the TCL max command: * max num1 num2 [..numN] * * Results: * Standard TCL results. * *----------------------------------------------------------------------------- */ int Tcl_MaxCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { double value, maxValue = -MAXDOUBLE; int idx, maxIdx = 1; if (argc < 3) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " num1 num2 [..numN]", (char *) NULL); return TCL_ERROR; } for (idx = 1; idx < argc; idx++) { if (Tcl_GetDouble (interp, argv [idx], &value) != TCL_OK) return TCL_ERROR; if (value > maxValue) { maxValue = value; maxIdx = idx; } } strcpy (interp->result, argv [maxIdx]); return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_MinCmd -- * Implements the TCL min command: * min num1 num2 [..numN] * * Results: * Standard TCL results. * *----------------------------------------------------------------------------- */ int Tcl_MinCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { double value, minValue = MAXDOUBLE; int idx, minIdx = 1; if (argc < 3) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " num1 num2 [..numN]", (char *) NULL); return TCL_ERROR; } for (idx = 1; idx < argc; idx++) { if (Tcl_GetDouble (interp, argv [idx], &value) != TCL_OK) return TCL_ERROR; if (value < minValue) { minValue = value; minIdx = idx; } } strcpy (interp->result, argv [minIdx]); return TCL_OK; } /* *----------------------------------------------------------------------------- * * ReallyRandom -- * Insure a good random return for a range, unlike an arbitrary * random() % n, thanks to Ken Arnold, Unix Review, October 1987. * *----------------------------------------------------------------------------- */ #ifdef TCL_32_BIT_RANDOM # define RANDOM_RANGE 0x7FFFFFFF #else # define RANDOM_RANGE 0x7FFF #endif static int ReallyRandom (myRange) int myRange; { int maxMultiple, rnum; maxMultiple = (int)( RANDOM_RANGE / myRange); maxMultiple *= myRange; while ((rnum = rand()) >= maxMultiple) { continue; } return (rnum % myRange); } /* *----------------------------------------------------------------------------- * * Tcl_RandomCmd -- * Implements the TCL random command: * random limit * * Results: * Standard TCL results. * *----------------------------------------------------------------------------- */ int Tcl_RandomCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { unsigned range; if ((argc < 2) || (argc > 3)) goto invalidArgs; if (STREQU (argv [1], "seed")) { long seed; if (argc == 3) { if (Tcl_GetLong (interp, argv[2], &seed) != TCL_OK) return TCL_ERROR; } else seed = (unsigned) (getpid() + time((time_t *)NULL)); srand(seed); } else { if (argc != 2) goto invalidArgs; if (Tcl_GetUnsigned (interp, argv[1], &range) != TCL_OK) return TCL_ERROR; if ((range == 0) || (range > (int)RANDOM_RANGE)) goto outOfRange; sprintf (interp->result, "%d", ReallyRandom (range)); } return TCL_OK; invalidArgs: Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " limit | seed [seedval]", (char *) NULL); return TCL_ERROR; outOfRange: { char buf [18]; sprintf (buf, "%d", (int)RANDOM_RANGE); Tcl_AppendResult (interp, "range must be > 0 and <= ", buf, (char *) NULL); return TCL_ERROR; } } micropolis-activity/src/tclx/src/tclxutil.c0000664000076400007640000005145610724145723021412 0ustar simcitysimcity/* * tclXutil.c * * Utility functions for Extended Tcl. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXutil.c,v 2.0 1992/10/16 04:51:21 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclxint.h" #ifndef _tolower # define _tolower tolower # define _toupper toupper #endif /* * Used to return argument messages by most commands. */ char *tclXWrongArgs = "wrong # args: "; extern double pow (); /* *----------------------------------------------------------------------------- * * Tcl_StrToLong -- * Convert an Ascii string to an long number of the specified base. * * Parameters: * o string (I) - String containing a number. * o base (I) - The base to use for the number 8, 10 or 16 or zero to decide * based on the leading characters of the number. Zero to let the number * determine the base. * o longPtr (O) - Place to return the converted number. Will be * unchanged if there is an error. * * Returns: * Returns 1 if the string was a valid number, 0 invalid. *----------------------------------------------------------------------------- */ int Tcl_StrToLong (string, base, longPtr) CONST char *string; int base; long *longPtr; { char *end; long num; num = strtol(string, &end, base); while ((*end != '\0') && isspace(*end)) { end++; } if ((end == string) || (*end != 0)) return FALSE; *longPtr = num; return TRUE; } /* Tcl_StrToLong */ /* *----------------------------------------------------------------------------- * * Tcl_StrToInt -- * Convert an Ascii string to an number of the specified base. * * Parameters: * o string (I) - String containing a number. * o base (I) - The base to use for the number 8, 10 or 16 or zero to decide * based on the leading characters of the number. Zero to let the number * determine the base. * o intPtr (O) - Place to return the converted number. Will be * unchanged if there is an error. * * Returns: * Returns 1 if the string was a valid number, 0 invalid. *----------------------------------------------------------------------------- */ int Tcl_StrToInt (string, base, intPtr) CONST char *string; int base; int *intPtr; { char *end; int num; num = strtol(string, &end, base); while ((*end != '\0') && isspace(*end)) { end++; } if ((end == string) || (*end != 0)) return FALSE; *intPtr = num; return TRUE; } /* Tcl_StrToInt */ /* *----------------------------------------------------------------------------- * * Tcl_StrToUnsigned -- * Convert an Ascii string to an unsigned int of the specified base. * * Parameters: * o string (I) - String containing a number. * o base (I) - The base to use for the number 8, 10 or 16 or zero to decide * based on the leading characters of the number. Zero to let the number * determine the base. * o unsignedPtr (O) - Place to return the converted number. Will be * unchanged if there is an error. * * Returns: * Returns 1 if the string was a valid number, 0 invalid. *----------------------------------------------------------------------------- */ int Tcl_StrToUnsigned (string, base, unsignedPtr) CONST char *string; int base; unsigned *unsignedPtr; { char *end; unsigned long num; num = strtoul (string, &end, base); while ((*end != '\0') && isspace(*end)) { end++; } if ((end == string) || (*end != 0)) return FALSE; *unsignedPtr = num; return TRUE; } /* Tcl_StrToUnsigned */ /* *----------------------------------------------------------------------------- * * Tcl_StrToDouble -- * Convert a string to a double percision floating point number. * * Parameters: * string (I) - Buffer containing double value to convert. * doublePtr (O) - The convert floating point number. * Returns: * TRUE if the number is ok, FALSE if it is illegal. *----------------------------------------------------------------------------- */ int Tcl_StrToDouble (string, doublePtr) CONST char *string; double *doublePtr; { char *end; double num; num = strtod (string, &end); while ((*end != '\0') && isspace(*end)) { end++; } if ((end == string) || (*end != 0)) return FALSE; *doublePtr = num; return TRUE; } /* Tcl_StrToDouble */ /* *----------------------------------------------------------------------------- * * Tcl_DownShift -- * Utility procedure to down-shift a string. It is written in such * a way as that the target string maybe the same as the source string. * * Parameters: * o targetStr (I) - String to store the down-shifted string in. Must * have enough space allocated to store the string. If NULL is specified, * then the string will be dynamicly allocated and returned as the * result of the function. May also be the same as the source string to * shift in place. * o sourceStr (I) - The string to down-shift. * * Returns: * A pointer to the down-shifted string *----------------------------------------------------------------------------- */ char * Tcl_DownShift (targetStr, sourceStr) char *targetStr; CONST char *sourceStr; { register char theChar; if (targetStr == NULL) targetStr = ckalloc (strlen ((char *) sourceStr) + 1); for (; (theChar = *sourceStr) != '\0'; sourceStr++) { if (isupper (theChar)) theChar = _tolower (theChar); *targetStr++ = theChar; } *targetStr = '\0'; return targetStr; } /* *----------------------------------------------------------------------------- * * Tcl_UpShift -- * Utility procedure to up-shift a string. * * Parameters: * o targetStr (I) - String to store the up-shifted string in. Must * have enough space allocated to store the string. If NULL is specified, * then the string will be dynamicly allocated and returned as the * result of the function. May also be the same as the source string to * shift in place. * o sourceStr (I) - The string to up-shift. * * Returns: * A pointer to the up-shifted string *----------------------------------------------------------------------------- */ char * Tcl_UpShift (targetStr, sourceStr) char *targetStr; CONST char *sourceStr; { register char theChar; if (targetStr == NULL) targetStr = ckalloc (strlen ((char *) sourceStr) + 1); for (; (theChar = *sourceStr) != '\0'; sourceStr++) { if (islower (theChar)) theChar = _toupper (theChar); *targetStr++ = theChar; } *targetStr = '\0'; return targetStr; } /* *----------------------------------------------------------------------------- * * Tcl_ExpandDynBuf -- * * Expand a dynamic buffer so that it will have room to hold the * specified additional space. If `appendSize' is zero, the buffer * size will just be doubled. * *----------------------------------------------------------------------------- */ void Tcl_ExpandDynBuf (dynBufPtr, appendSize) dynamicBuf_t *dynBufPtr; int appendSize; { int newSize, minSize; char *oldBufPtr; newSize = dynBufPtr->size * 2; minSize = dynBufPtr->len + 1 + appendSize; if (newSize < minSize) newSize = minSize; oldBufPtr = dynBufPtr->ptr; dynBufPtr->ptr = ckalloc (newSize); memcpy (dynBufPtr->ptr, oldBufPtr, dynBufPtr->len + 1); if (oldBufPtr != dynBufPtr->buf) ckfree ((char *) oldBufPtr); dynBufPtr->size = newSize; } /* *----------------------------------------------------------------------------- * * Tcl_DynBufInit -- * * Initializes a dynamic buffer. * *----------------------------------------------------------------------------- */ void Tcl_DynBufInit (dynBufPtr) dynamicBuf_t *dynBufPtr; { dynBufPtr->buf [0] = '\0'; dynBufPtr->ptr = dynBufPtr->buf; dynBufPtr->size = INIT_DYN_BUFFER_SIZE; dynBufPtr->len = 0; } /* *----------------------------------------------------------------------------- * * Tcl_DynBufFree -- * * Clean up a dynamic buffer, release space if it was dynamicly * allocated. * *----------------------------------------------------------------------------- */ void Tcl_DynBufFree (dynBufPtr) dynamicBuf_t *dynBufPtr; { if (dynBufPtr->ptr != dynBufPtr->buf) ckfree (dynBufPtr->ptr); } /* *----------------------------------------------------------------------------- * * Tcl_DynBufReturn -- * * Return the contents of the dynamic buffer as an interpreter result. * Don't call DynBufFree after calling this procedure. The dynamic buffer * must be re-initialized to reuse it. * *----------------------------------------------------------------------------- */ void Tcl_DynBufReturn (interp, dynBufPtr) Tcl_Interp *interp; dynamicBuf_t *dynBufPtr; { if (dynBufPtr->ptr != dynBufPtr->buf) Tcl_SetResult (interp, dynBufPtr->ptr, TCL_DYNAMIC); else Tcl_SetResult (interp, dynBufPtr->ptr, TCL_VOLATILE); } /* *----------------------------------------------------------------------------- * * Tcl_DynBufAppend -- * * Append the specified string to the dynamic buffer, expanding if * necessary. Assumes the string in the buffer is zero terminated. * *----------------------------------------------------------------------------- */ void Tcl_DynBufAppend (dynBufPtr, newStr) dynamicBuf_t *dynBufPtr; char *newStr; { int newLen, currentUsed; newLen = strlen (newStr); if ((dynBufPtr->len + newLen + 1) > dynBufPtr->size) Tcl_ExpandDynBuf (dynBufPtr, newLen); strcpy (dynBufPtr->ptr + dynBufPtr->len, newStr); dynBufPtr->len += newLen; } /* *----------------------------------------------------------------------------- * * Tcl_DynamicFgets -- * * Reads a line from a file into a dynamic buffer. The buffer will be * expanded, if necessary and reads are done until EOL or EOF is reached. * Any data already in the buffer will be overwritten. if append is not * specified. Even if an error or EOF is encountered, the buffer should * be cleaned up, as storage may have still been allocated. * * Results: * If data was transfered, returns 1, if EOF was encountered without * transfering any data, returns 0. If an error occured, returns, -1. * *----------------------------------------------------------------------------- */ int Tcl_DynamicFgets (dynBufPtr, filePtr, append) dynamicBuf_t *dynBufPtr; FILE *filePtr; int append; { int readVal; if (!append) dynBufPtr->len = 0; while (TRUE) { if (dynBufPtr->len + 1 == dynBufPtr->size) Tcl_ExpandDynBuf (dynBufPtr, 0); readVal = getc (filePtr); if (readVal == '\n') /* Is it a new-line? */ break; if (readVal == EOF) { /* Is it an EOF or an error? */ if (feof (filePtr)) { break; } return -1; /* Error */ } dynBufPtr->ptr [dynBufPtr->len++] = readVal; } dynBufPtr->ptr [dynBufPtr->len] = '\0'; return (readVal == EOF) ? 0 : 1; } /* *----------------------------------------------------------------------------- * * Tcl_GetLong -- * * Given a string, produce the corresponding long value. * * Results: * The return value is normally TCL_OK; in this case *intPtr * will be set to the integer value equivalent to string. If * string is improperly formed then TCL_ERROR is returned and * an error message will be left in interp->result. * * Side effects: * None. * *----------------------------------------------------------------------------- */ int Tcl_GetLong(interp, string, longPtr) Tcl_Interp *interp; /* Interpreter to use for error reporting. */ CONST char *string; /* String containing a (possibly signed) * integer in a form acceptable to strtol. */ long *longPtr; /* Place to store converted result. */ { char *end; long i; i = strtol(string, &end, 0); while ((*end != '\0') && isspace(*end)) { end++; } if ((end == string) || (*end != 0)) { Tcl_AppendResult (interp, "expected integer but got \"", string, "\"", (char *) NULL); return TCL_ERROR; } *longPtr = i; return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_GetUnsigned -- * * Given a string, produce the corresponding unsigned integer value. * * Results: * The return value is normally TCL_OK; in this case *intPtr * will be set to the integer value equivalent to string. If * string is improperly formed then TCL_ERROR is returned and * an error message will be left in interp->result. * * Side effects: * None. * *----------------------------------------------------------------------------- */ int Tcl_GetUnsigned(interp, string, unsignedPtr) Tcl_Interp *interp; /* Interpreter to use for error reporting. */ CONST char *string; /* String containing a (possibly signed) * integer in a form acceptable to strtoul. */ unsigned *unsignedPtr; /* Place to store converted result. */ { char *end; unsigned long i; /* * Since some strtoul functions don't detect negative numbers, check * in advance. */ while (isspace(*string)) string++; if (string [0] == '-') goto badUnsigned; i = strtoul(string, &end, 0); while ((*end != '\0') && isspace(*end)) end++; if ((end == string) || (*end != '\0')) goto badUnsigned; *unsignedPtr = i; return TCL_OK; badUnsigned: Tcl_AppendResult (interp, "expected unsigned integer but got \"", string, "\"", (char *) NULL); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * Tcl_ConvertFileHandle -- * * Convert a file handle to its file number. The file handle maybe one * of "stdin", "stdout" or "stderr" or "fileNNN", were NNN is the file * number. If the handle is invalid, -1 is returned and a error message * will be returned in interp->result. This is used when the file may * not be currently open. * *----------------------------------------------------------------------------- */ int Tcl_ConvertFileHandle (interp, handle) Tcl_Interp *interp; char *handle; { int fileId = -1; if (handle [0] == 's') { if (STREQU (handle, "stdin")) fileId = 0; else if (STREQU (handle, "stdout")) fileId = 1; else if (STREQU (handle, "stderr")) fileId = 2; } else { if (STRNEQU (handle, "file", 4)) Tcl_StrToInt (&handle [4], 10, &fileId); } if (fileId < 0) Tcl_AppendResult (interp, "invalid file handle: ", handle, (char *) NULL); return fileId; } /* *----------------------------------------------------------------------------- * * Tcl_SetupFileEntry -- * * Set up an entry in the Tcl file table for a file number, including the stdio * FILE structure. * * Parameters: * o interp (I) - Current interpreter. * o fileNum (I) - File number to set up the entry for. * o readable (I) - TRUE if read access to the file. * o writable (I) - TRUE if write access to the file. * Returns: * TCL_OK or TCL_ERROR; *----------------------------------------------------------------------------- */ int Tcl_SetupFileEntry (interp, fileNum, readable, writable) Tcl_Interp *interp; int fileNum; int readable; int writable; { Interp *iPtr = (Interp *) interp; char *mode; FILE *fileCBPtr; OpenFile *filePtr; /* * Set up a stdio FILE control block for the new file. */ if (readable && writable) { mode = "r+"; } else if (writable) { mode = "w"; } else { mode = "r"; } fileCBPtr = fdopen (fileNum, mode); if (fileCBPtr == NULL) { iPtr->result = Tcl_UnixError (interp); return TCL_ERROR; } /* * Put the file in the Tcl table. */ TclMakeFileTable (iPtr, fileNum); if (iPtr->filePtrArray [fileno (fileCBPtr)] != NULL) panic ("file already open"); filePtr = (OpenFile *) ckalloc (sizeof (OpenFile)); iPtr->filePtrArray [fileno (fileCBPtr)] = filePtr; filePtr->f = fileCBPtr; filePtr->f2 = NULL; filePtr->readable = readable; filePtr->writable = writable; filePtr->numPids = 0; filePtr->pidPtr = NULL; filePtr->errorId = -1; return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_System -- * does the equivalent of the Unix "system" library call, but * uses waitpid to wait on the correct process, rather than * waiting on all processes and throwing the exit statii away * for the processes it isn't interested in, plus does it with * a Tcl flavor * * Results: * Standard TCL results, may return the UNIX system error message. * *----------------------------------------------------------------------------- */ int Tcl_System (interp, command) Tcl_Interp *interp; char *command; { int processID, waitStatus, processStatus; if ((processID = Tcl_Fork()) < 0) { interp->result = Tcl_UnixError (interp); return -1; } if (processID == 0) { if (execl ("/bin/sh", "sh", "-c", command, (char *) NULL) < 0) { interp->result = Tcl_UnixError (interp); return -1; } exit(256); } /* * Parent process. */ #ifndef TCL_HAVE_WAITPID if (Tcl_WaitPids(1, &processID, &processStatus) == -1) { interp->result = Tcl_UnixError (interp); return -1; } #else if (waitpid (processID, &processStatus, 0) == -1) { interp->result = Tcl_UnixError (interp); return -1; } #endif return (WEXITSTATUS(processStatus)); } /* *-------------------------------------------------------------- * * Tcl_ReturnDouble -- * * Format a double to the maximum precision supported on * this machine. If the number formats to an even integer, * a ".0" is append to assure that the value continues to * represent a floating point number. * * Results: * A standard Tcl result. If the result is TCL_OK, then the * interpreter's result is set to the string value of the * double. If the result is TCL_OK, then interp->result * contains an error message (If the number had the value of * "not a number" or "infinite"). * * Side effects: * None. * *-------------------------------------------------------------- */ int Tcl_ReturnDouble(interp, number) Tcl_Interp *interp; /* ->result gets converted number */ double number; /* Number to convert */ { static int precision = 0; register char *scanPtr; /* * On the first call, determine the number of decimal digits that represent * the precision of a double. */ if (precision == 0) { #ifdef IS_LINUX precision = 8; #else sprintf (interp->result, "%.0f", pow (2.0, (double) DSIGNIF)); precision = strlen (interp->result); #endif } sprintf (interp->result, "%.*g", precision, number); /* * Scan the number for "." or "e" to assure that the number has not been * converted to an integer. Also check for NaN on infinite */ scanPtr = interp->result; if (scanPtr [0] == '-') scanPtr++; for (; isdigit (*scanPtr); scanPtr++) continue; switch (*scanPtr) { case '.': case 'e': return TCL_OK; case 'n': case 'N': interp->result = "Floating point error, result is not a number"; return TCL_ERROR; case 'i': case 'I': interp->result = "Floating point error, result is infinite"; return TCL_ERROR; case '\0': scanPtr [0] = '.'; scanPtr [1] = '0'; scanPtr [2] = '\0'; return TCL_OK; } /* * If we made it here, this sprintf returned something we did not expect. */ Tcl_AppendResult (interp, ": unexpected floating point conversion result", (char *) NULL); return TCL_ERROR; } micropolis-activity/src/tclx/src/tclxlist.c0000664000076400007640000001633010724145723021400 0ustar simcitysimcity/* * tclXlist.c -- * * Extended Tcl list commands. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXlist.c,v 2.0 1992/10/16 04:50:57 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclxint.h" /* *----------------------------------------------------------------------------- * * Tcl_LvarcatCmd -- * Implements the TCL lvarpop command: * lvarcat var string string string * * Results: * Standard TCL results. * *----------------------------------------------------------------------------- */ int Tcl_LvarcatCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { int listArgc, idx, listIdx; char **listArgv; char *staticArgv [12]; char *varContents, *newStr, *result; if (argc < 3) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " var string [string...]", (char *) NULL); return TCL_ERROR; } varContents = Tcl_GetVar (interp, argv[1], 0); if (varContents != NULL) listArgc = argc - 1; else listArgc = argc - 2; if (listArgc < (sizeof (staticArgv) / sizeof (char *))) { listArgv = staticArgv; } else { listArgv = (char **) ckalloc (listArgc * sizeof (char *)); } if (varContents != NULL) { listArgv [0] = varContents; listIdx = 1; } else { listIdx = 0; } for (idx = 2; idx < argc; idx++, listIdx++) listArgv [listIdx] = argv [idx]; newStr = Tcl_Concat (listArgc, listArgv); result = Tcl_SetVar (interp, argv [1], newStr, TCL_LEAVE_ERR_MSG); ckfree (newStr); if (listArgv != staticArgv) ckfree ((char *) listArgv); /* * If all is ok, return the variable contents as a "static" result. */ if (result != NULL) { interp->result = result; return TCL_OK; } else { return TCL_ERROR; } } /* *----------------------------------------------------------------------------- * * Tcl_LvarpopCmd -- * Implements the TCL lvarpop command: * lvarpop var [index [string]] * * Results: * Standard TCL results. * *----------------------------------------------------------------------------- */ int Tcl_LvarpopCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { int listArgc, listIdx, idx; char **listArgv; char *varContents, *resultList, *returnElement; if ((argc < 2) || (argc > 4)) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " var [index [string]]", (char *) NULL); return TCL_ERROR; } varContents = Tcl_GetVar (interp, argv[1], TCL_LEAVE_ERR_MSG); if (varContents == NULL) return TCL_ERROR; if (Tcl_SplitList (interp, varContents, &listArgc, &listArgv) == TCL_ERROR) return TCL_ERROR; if (argc == 2) listIdx = 0; else { if (Tcl_GetInt (interp, argv[2], &listIdx) != TCL_OK) goto errorExit; } /* * Just ignore out-of bounds requests, like standard Tcl. */ if ((listIdx < 0) || (listIdx >= listArgc)) { goto okExit; } returnElement = listArgv [listIdx]; if (argc == 4) listArgv [listIdx] = argv [3]; else { listArgc--; for (idx = listIdx; idx < listArgc; idx++) listArgv [idx] = listArgv [idx+1]; } resultList = Tcl_Merge (listArgc, listArgv); if (Tcl_SetVar (interp, argv [1], resultList, TCL_LEAVE_ERR_MSG) == NULL) { ckfree (resultList); goto errorExit; } ckfree (resultList); Tcl_SetResult (interp, returnElement, TCL_VOLATILE); okExit: ckfree((char *) listArgv); return TCL_OK; errorExit: ckfree((char *) listArgv); return TCL_ERROR;; } /* *----------------------------------------------------------------------------- * * Tcl_LvarpushCmd -- * Implements the TCL lvarpush command: * lvarpush var string [index] * * Results: * Standard TCL results. * *----------------------------------------------------------------------------- */ int Tcl_LvarpushCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { int listArgc, listIdx, idx; char **listArgv; char *varContents, *resultList; if ((argc < 3) || (argc > 4)) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " var string [index]", (char *) NULL); return TCL_ERROR; } varContents = Tcl_GetVar (interp, argv[1], TCL_LEAVE_ERR_MSG); if (varContents == NULL) varContents = ""; if (Tcl_SplitList (interp, varContents, &listArgc, &listArgv) == TCL_ERROR) return TCL_ERROR; if (argc == 3) listIdx = 0; else { if (Tcl_GetInt (interp, argv[3], &listIdx) != TCL_OK) goto errorExit; } /* * Out-of-bounds request go to the start or end, as with most of Tcl. */ if (listIdx < 0) listIdx = 0; else if (listIdx > listArgc) listIdx = listArgc; /* * This code takes advantage of the fact that a NULL entry is always * returned by Tcl_SplitList, but not required by Tcl_Merge. */ for (idx = listArgc; idx > listIdx; idx--) listArgv [idx] = listArgv [idx - 1]; listArgv [listIdx] = argv [2]; resultList = Tcl_Merge (listArgc + 1, listArgv); if (Tcl_SetVar (interp, argv [1], resultList, TCL_LEAVE_ERR_MSG) == NULL) { ckfree (resultList); goto errorExit; } ckfree (resultList); ckfree((char *) listArgv); return TCL_OK; errorExit: ckfree((char *) listArgv); return TCL_ERROR;; } /* *----------------------------------------------------------------------------- * * Tcl_LemptyCmd -- * Implements the strcat TCL command: * lempty list * * Results: * Standard TCL result. * *----------------------------------------------------------------------------- */ int Tcl_LemptyCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { char *scanPtr; if (argc != 2) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " list", (char *) NULL); return TCL_ERROR; } scanPtr = argv [1]; while ((*scanPtr != '\0') && (isspace (*scanPtr))) scanPtr++; sprintf (interp->result, "%d", (*scanPtr == '\0')); return TCL_OK; } /* Tcl_LemptyCmd */ micropolis-activity/src/tclx/src/tclxint.h0000664000076400007640000003144710724145723021232 0ustar simcitysimcity/* * tclExtdInt.h * * Standard internal include file for Extended Tcl library.. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclExtdInt.h,v 2.0 1992/10/16 04:51:27 markd Rel $ *----------------------------------------------------------------------------- */ #ifndef TCLEXTDINT_H #define TCLEXTDINT_H #include "tclxtend.h" #include "tclint.h" #include "tclunix.h" #include #include #ifdef TCL_NEED_SYS_SELECT_H # include "sys/select.h" #endif /* * If tclUnix.h has already included time.h, don't include it again, some * systems don't #ifdef inside of the file. On some systems, undef * CLK_TCK (defined in tclUnix.h) to avoid an annoying warning about * redefinition. */ #ifdef TCL_NEED_TIME_H # if TCL_SYS_TIME_H # ifdef TCL_DUP_CLK_TCK # undef CLK_TCK # endif # include # endif #endif /* * Precompute milliseconds-per-tick, the " + CLK_TCK / 2" bit gets it to * round off instead of truncate. Take care of defining CLK_TCK if its not * defined. */ #ifndef CLK_TCK # ifdef HZ # define CLK_TCK HZ # else # define CLK_TCK 60 # endif #endif #define MS_PER_TICK ((1000 + CLK_TCK/2) / CLK_TCK) /* * If tclUnix.h did not bring times.h, bring it in here. */ #if TCL_GETTOD # include #endif #include #include /* * On some systems this is not included by tclUnix.h. */ /* * These should be take from an include file, but it got to be such a mess * to get the include files right that they are here for good measure. */ struct tm *gmtime (); struct tm *localtime (); #ifndef MAXINT # define BITSPERBYTE 8 # define BITS(type) (BITSPERBYTE * (int)sizeof(type)) # define HIBITI ((unsigned int)(1 << BITS(int) - 1)) # define MAXINT ((int)(~HIBITI)) #endif #ifndef MININT # define MININT (-MAXINT)-1 #endif #ifndef TRUE # define TRUE (1) # define FALSE (0) #endif /* * Structure to hold a regular expression, plus a Boyer-Moore compiled * pattern. */ typedef struct regexp_t { regexp *progPtr; char *boyerMoorePtr; int noCase; } regexp_t; typedef regexp_t *regexp_pt; /* * Flags used by RegExpCompile: */ #define REXP_NO_CASE 1 /* Do matching regardless of case */ #define REXP_BOTH_ALGORITHMS 2 /* Use boyer-moore along with regexp */ /* * Data structure to control a dynamic buffer. These buffers are primarly * used for reading things from files, were the maximum size is not known * in advance, and the buffer must grow. These are used in the case were * the value is not to be returned as the interpreter result. */ #define INIT_DYN_BUFFER_SIZE 256 typedef struct dynamicBuf_t { char buf [INIT_DYN_BUFFER_SIZE]; /* Initial buffer area. */ char *ptr; /* Pointer to buffer area. */ int size; /* Current size of buffer. */ int len; /* Current string length (less '\0') */ } dynamicBuf_t; /* * Used to return argument messages by most commands. */ extern char *tclXWrongArgs; /* * Macros to do string compares. They pre-check the first character before * checking of the strings are equal. */ #define STREQU(str1, str2) \ (((str1) [0] == (str2) [0]) && (strcmp (str1, str2) == 0)) #define STRNEQU(str1, str2, cnt) \ (((str1) [0] == (str2) [0]) && (strncmp (str1, str2, cnt) == 0)) /* * Prototypes for utility procedures. */ void Tcl_DynBufInit _ANSI_ARGS_((dynamicBuf_t *dynBufPtr)); void Tcl_DynBufFree _ANSI_ARGS_((dynamicBuf_t *dynBufPtr)); void Tcl_DynBufReturn _ANSI_ARGS_((Tcl_Interp *interp, dynamicBuf_t *dynBufPtr)); void Tcl_DynBufAppend _ANSI_ARGS_((dynamicBuf_t *dynBufPtr, char *newStr)); void Tcl_ExpandDynBuf _ANSI_ARGS_((dynamicBuf_t *dynBufPtr, int appendSize)); int Tcl_DynamicFgets _ANSI_ARGS_((dynamicBuf_t *dynBufPtr, FILE *filePtr, int append)); int Tcl_ConvertFileHandle _ANSI_ARGS_((Tcl_Interp *interp, char *handle)); time_t Tcl_GetDate _ANSI_ARGS_((char *p, time_t now, long zone)); int Tcl_ProcessSignal _ANSI_ARGS_((Tcl_Interp *interp, int cmdResultCode)); void Tcl_RegExpClean _ANSI_ARGS_((regexp_pt regExpPtr)); int Tcl_RegExpCompile _ANSI_ARGS_((Tcl_Interp *interp, regexp_pt regExpPtr, char *expression, int flags)); int Tcl_RegExpExecute _ANSI_ARGS_((Tcl_Interp *interp, regexp_pt regExpPtr, char *matchStrIn, char *matchStrLower)); void Tcl_ResetSignals (); int Tcl_ReturnDouble _ANSI_ARGS_((Tcl_Interp *interp, double number)); int Tcl_SetupFileEntry _ANSI_ARGS_((Tcl_Interp *interp, int fileNum, int readable, int writable)); /* * Definitions required to initialize all extended commands. These are either * the command executors or initialization routines that do the command * initialization. The initialization routines are used when there is more * to initializing the command that just binding the command name to the * executor. Usually, this means initializing some command local data via * the ClientData mechanism. The command executors should be declared to be of * type `Tcl_CmdProc', but this blows up some compilers, so they are declared * with an ANSI prototype. */ /* * from tclXbsearch.c */ extern int Tcl_BsearchCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); /* * from tclXchmod.c */ extern int Tcl_ChmodCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_ChownCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_ChgrpCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); /* * from tclXclock.c */ extern int Tcl_GetclockCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_FmtclockCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); /* * from tclXcnvclock.c */ extern int Tcl_ConvertclockCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); /* * from tclXcmdloop.c */ extern int Tcl_CommandloopCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); /* * from tclXdebug.c */ extern void Tcl_InitDebug _ANSI_ARGS_((Tcl_Interp *interp)); /* * from tclXdup.c */ extern int Tcl_DupCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); /* * from tclXfcntl.c */ extern int Tcl_FcntlCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); /* * from tclXfilecmds.c */ extern int Tcl_PipeCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_CopyfileCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_FstatCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_LgetsCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_FlockCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_FunlockCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); /* * from tclXfilescan.c */ extern void Tcl_InitFilescan _ANSI_ARGS_((Tcl_Interp *interp)); /* * from tclXfmath.c */ extern int Tcl_AcosCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_AsinCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_AtanCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_CosCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_SinCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_TanCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_CoshCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_SinhCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_TanhCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_ExpCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_LogCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_Log10Cmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_SqrtCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_FabsCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_FloorCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_CeilCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_FmodCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_PowCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); /* * from tclXgeneral.c */ extern int Tcl_EchoCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_InfoxCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_LoopCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); /* * from tclXid.c */ extern int Tcl_IdCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); /* * from tclXkeylist.c */ extern int Tcl_KeyldelCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_KeylgetCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_KeylkeysCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_KeylsetCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); /* * from tclXlist.c */ extern int Tcl_LvarpopCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_LvarcatCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_LvarpushCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_LemptyCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); /* * from tclXmath.c */ extern int Tcl_MaxCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_MinCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_RandomCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); /* * from tclXmsgcat.c */ extern void Tcl_InitMsgCat _ANSI_ARGS_((Tcl_Interp *interp)); /* * from tclXprocess.c */ extern int Tcl_ExeclCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_ForkCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_WaitCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); /* * from tclXprofile.c */ void Tcl_InitProfile _ANSI_ARGS_((Tcl_Interp *interp)); /* * from tclXselect.c */ extern int Tcl_SelectCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); /* * from tclXsignal.c */ extern void Tcl_InitSignalHandling _ANSI_ARGS_((Tcl_Interp *interp)); /* * from tclXstring.c */ extern int Tcl_CindexCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_ClengthCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_CrangeCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_ReplicateCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_TranslitCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_CtypeCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); /* * from tclXlib.c */ extern int Tcl_Demand_loadCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_LoadlibindexCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); /* * from tclXunixcmds.c */ extern int Tcl_AlarmCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_SleepCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_SystemCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_TimesCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_UmaskCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_LinkCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_UnlinkCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_MkdirCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); extern int Tcl_RmdirCmd _ANSI_ARGS_((ClientData, Tcl_Interp*, int, char**)); #endif micropolis-activity/src/tclx/src/tclxsig.c0000664000076400007640000007407210724145723021216 0ustar simcitysimcity/* * tclXsignal.c -- * * Tcl Unix signal support routines and the signal and commands. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXsignal.c,v 2.0 1992/10/16 04:51:12 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclxint.h" #ifndef SIGCLD # define SIGCLD SIGCHLD #endif #ifndef SIGCHLD # define SIGCHLD SIGCLD #endif #ifndef MAXSIG # define MAXSIG 32 #endif /* * Signal name table maps name to number. */ #define SIG_NAME_MAX 7 static struct {char *name; short num; } sigNameTable [] = { "HUP", SIGHUP, "INT", SIGINT, "QUIT", SIGQUIT, "ILL", SIGILL, "TRAP", SIGTRAP, "IOT", SIGIOT, #ifdef SIGABRT "ABRT", SIGABRT, #endif #ifdef SIGEMT "EMT", SIGEMT, #endif #ifdef SIGSYS "SYS", SIGSYS, #endif "FPE", SIGFPE, "KILL", SIGKILL, "BUS", SIGBUS, "SEGV", SIGSEGV, "PIPE", SIGPIPE, "ALRM", SIGALRM, "TERM", SIGTERM, "USR1", SIGUSR1, "USR2", SIGUSR2, "CLD", SIGCLD, "CHLD", SIGCHLD, #ifdef SIGPWR "PWR", SIGPWR, #endif #ifdef SIGPOLL "POLL", SIGPOLL, #endif #ifdef SIGSTOP "STOP", SIGSTOP, #endif #ifdef SIGTSTP "TSTP", SIGTSTP, #endif #ifdef SIGCONT "CONT", SIGCONT, #endif #ifdef SIGTTIN "TTIN", SIGTTIN, #endif #ifdef SIGTTOU "TTOU", SIGTTOU, #endif NULL, -1}; #ifdef TCL_SIG_PROC_INT # define SIG_PROC_RET_TYPE int #else # define SIG_PROC_RET_TYPE void #endif typedef SIG_PROC_RET_TYPE (*signalProcPtr_t) _ANSI_ARGS_((int)); /* * Class of actions that can be set by the signal command. */ #define SIGACT_SET 1 /* Set the signal */ #define SIGACT_GET 2 /* Get the signal */ #define SIGACT_BLOCK 3 /* Block the signal */ #define SIGACT_UNBLOCK 4 /* Unblock the signal */ /* * Defines if this is not Posix. */ #ifndef SIG_BLOCK # define SIG_BLOCK 1 # define SIG_UNBLOCK 2 #endif /* * Messages. */ static char *noPosix = "Posix signals are not available on this system"; /* * Globals that indicate that some signal was received and how many of each * signal type has not yet been processed. */ int tclReceivedSignal = FALSE; /* A signal was received */ static unsigned signalsReceived [MAXSIG]; /* Counters of signals */ /* * Table of commands to evaluate when a signal occurs. If the command is * NULL and the signal is received, an error is returned. */ static char *signalTrapCmds [MAXSIG]; /* * Prototypes of internal functions. */ static int SigNameToNum _ANSI_ARGS_((char *sigName)); static signalProcPtr_t GetSignalState _ANSI_ARGS_((int signalNum)); static int SetSignalAction _ANSI_ARGS_((int signalNum, signalProcPtr_t sigFunc)); static SIG_PROC_RET_TYPE TclSignalTrap _ANSI_ARGS_((int signalNum)); static int EvalTrapCode _ANSI_ARGS_((Tcl_Interp *interp, int signalNum, char *command)); static int ParseSignalList _ANSI_ARGS_((Tcl_Interp *interp, char *signalListStr, int signalList [])); static char * SignalBlocked _ANSI_ARGS_((Tcl_Interp *interp, int signalNum)); static int GetSignalStates _ANSI_ARGS_((Tcl_Interp *interp, int signalListSize, int signalList [MAXSIG])); static int SetSignalStates _ANSI_ARGS_((Tcl_Interp *interp, int signalListSize, int signalList [MAXSIG], signalProcPtr_t actionFunc, char *command)); static int BlockSignals _ANSI_ARGS_((Tcl_Interp *interp, int action, int signalListSize, int signalList [MAXSIG])); static void SignalCmdCleanUp _ANSI_ARGS_((ClientData clientData)); /* *----------------------------------------------------------------------------- * * SigNameToNum -- * Converts a UNIX signal name to its number, returns -1 if not found. * the name may be upper or lower case and may optionally have the * leading "SIG" omitted. * *----------------------------------------------------------------------------- */ static int SigNameToNum (sigName) char *sigName; { char sigNameUp [SIG_NAME_MAX+1]; /* Upshifted signal name */ char *sigNamePtr; int idx; /* * Copy and upshift requested name. */ if (strlen (sigName) > SIG_NAME_MAX) return -1; /* Name too long */ Tcl_UpShift (sigNameUp, sigName); if (STRNEQU (sigNameUp, "SIG", 3)) sigNamePtr = &sigNameUp [3]; else sigNamePtr = sigNameUp; for (idx = 0; sigNameTable [idx].num != -1; idx++) if (STREQU (sigNamePtr, sigNameTable [idx].name)) break; return sigNameTable [idx].num; } /* *----------------------------------------------------------------------------- * * Tcl_KillCmd -- * Implements the TCL kill command: * kill [signal] proclist * * Results: * Standard TCL results, may return the UNIX system error message. * *----------------------------------------------------------------------------- */ int Tcl_KillCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { int signalNum, idx, procId, procArgc, result = TCL_ERROR; char **procArgv; if ((argc < 2) || (argc > 3)) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " [signal] processlist", (char *) NULL); return TCL_ERROR; } if (argc == 2) signalNum = SIGTERM; else { if (!Tcl_StrToInt (argv[1], 0, &signalNum)) { signalNum = SigNameToNum (argv[1]); } if ((signalNum < 0) || (signalNum > NSIG)) { Tcl_AppendResult (interp, "invalid signal", (char *) NULL); return TCL_ERROR; } } if (Tcl_SplitList (interp, argv [argc - 1], &procArgc, &procArgv) != TCL_OK) return TCL_ERROR; for (idx = 0; idx < procArgc; idx++) { if (Tcl_GetInt (interp, procArgv [idx], &procId) != TCL_OK) goto exitPoint; if (kill ((pid_t) procId, signalNum) < 0) { Tcl_AppendResult (interp, "pid ", procArgv [idx], ": ", Tcl_UnixError (interp), (char *) NULL); goto exitPoint; } } result = TCL_OK; exitPoint: ckfree ((char *) procArgv); return result; } /* *----------------------------------------------------------------------------- * * GetSignalState -- * Get the current state of the specified signal. * Parameters: * o signalNum (I) - Signal number to query. * Results * The signal function or SIG_DFL or SIG_IGN. If an error occures, * SIG_ERR is returned (check errno); *----------------------------------------------------------------------------- */ static signalProcPtr_t GetSignalState (signalNum) int signalNum; { #ifdef TCL_POSIX_SIG struct sigaction currentState; if (sigaction (signalNum, NULL, ¤tState) < 0) return SIG_ERR; return currentState.sa_handler; #else signalProcPtr_t actionFunc; if (signalNum == SIGKILL) return SIG_DFL; actionFunc = signal (signalNum, SIG_DFL); if (actionFunc == SIG_ERR) return SIG_ERR; if (actionFunc != SIG_DFL) signal (signalNum, actionFunc); /* reset */ return actionFunc; #endif } /* *----------------------------------------------------------------------------- * * SetSignalAction -- * Set the action to occur when a signal is received. * Parameters: * o signalNum (I) - Signal number to query. * o sigFunc (O) - The signal function or SIG_DFL or SIG_IGN. * Results * TRUE if ok, FALSE if an error (check errno). *----------------------------------------------------------------------------- */ static int SetSignalAction (signalNum, sigFunc) int signalNum; signalProcPtr_t sigFunc; { #ifdef TCL_POSIX_SIG struct sigaction newState; newState.sa_handler = sigFunc; sigfillset (&newState.sa_mask); newState.sa_flags = 0; if (sigaction (signalNum, &newState, NULL) < 0) return FALSE; return TRUE; #else if (signal (signalNum, sigFunc) == SIG_ERR) return FALSE; else return TRUE; #endif } /* *----------------------------------------------------------------------------- * * TclSignalTrap -- * Trap handler for UNIX signals. Sets a flag indicating that the * trap has occured, saves the name and rearms the trap. The flag * will be seen by the interpreter when its safe to trap. * Globals: * o tclReceivedSignal (O) - Set to TRUE, to indicate a signal was received. * o signalsReceived (O) - The count of each signal that was received. *----------------------------------------------------------------------------- */ static SIG_PROC_RET_TYPE TclSignalTrap (signalNum) int signalNum; { /* * Set flags that are checked by the eval loop. */ signalsReceived [signalNum]++; tclReceivedSignal = TRUE; #ifndef TCL_POSIX_SIG /* * For old-style Unix signals, the signal must be explictly re-enabled. * Not done for SIGCHLD, as we would continue to the signal until the * wait is done. This is fixed by Posix signals and is not necessary under * BSD, but it done this way for consistency. */ if (signalNum != SIGCHLD) { if (SetSignalAction (signalNum, TclSignalTrap) < 0) panic ("TclSignalTrap bug"); } #endif } /* *----------------------------------------------------------------------------- * * EvalTrapCode -- * Run code as the result of a signal. The code will be run in the * global context, with the symbolic signal name in a global variable. * signalReceived. If an error occured, then the result will be * left in the interp, if no error occured, the result will be reset. * Parameters: * o interp (I/O) - The interpreter to run the signal in. * o signalNum (I) - The signal number of the signal that occured. * o command (I) - The command string to execute. * Return: * TCL_OK or TCL_ERROR. *----------------------------------------------------------------------------- */ static int EvalTrapCode (interp, signalNum, command) Tcl_Interp *interp; int signalNum; char *command; { Interp *iPtr = (Interp *) interp; char *signalName; int result; CallFrame *savedVarFramePtr; Tcl_ResetResult (interp); /* * Modify the interpreter state to execute in the global frame. */ savedVarFramePtr = iPtr->varFramePtr; iPtr->varFramePtr = NULL; /* * Force name to always be SIGCHLD, even if system defines only SIGCLD. */ if (signalNum == SIGCHLD) signalName = "SIGCHLD"; else signalName = Tcl_SignalId (signalNum); if (Tcl_SetVar (interp, "signalReceived", signalName, TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG) == NULL) result = TCL_ERROR; else result = TCL_OK; if (result == TCL_OK); result = Tcl_Eval (interp, signalTrapCmds [signalNum], 0, NULL); /* * Restore the frame pointer and return the result (only OK or ERROR). */ iPtr->varFramePtr = savedVarFramePtr; if (result == TCL_ERROR) { char errorInfo [TCL_RESULT_SIZE]; sprintf (errorInfo, "\n while executing signal trap code for %s%s", signalName, " signal"); Tcl_AddErrorInfo (interp, errorInfo); return TCL_ERROR; } else { Tcl_ResetResult (interp); return TCL_OK; } } /* *----------------------------------------------------------------------------- * * Tcl_ResetSignals -- * * Reset all of the signal flags to indicate that no signals have * occured. This is used by the shell at the beginning of each interactive * command * * Globals: * o tclReceivedSignal (O) - Will be cleared. * o signalsReceived (O) - The count of each signal that was received. *----------------------------------------------------------------------------- */ void Tcl_ResetSignals () { int signalNum; tclReceivedSignal = 0; for (signalNum = 0; signalNum < MAXSIG; signalNum++) signalsReceived [signalNum] = 0; } /* *----------------------------------------------------------------------------- * * Tcl_CheckForSignal -- * * Called by Tcl_Eval to check if a signal was received when Tcl_Eval is in * a safe state. If the signal was received, this handles processing the * signal prehaps recursively eval-ing some code. This is called just after a * command completes. The results of the command are passed to this procedure * and may be altered by it. If trap code is specified for the signal that * was received, then the trap will be executed, otherwise an error result * will be returned indicating that the signal occured. If an error is * returned, clear the errorInfo variable. This makes sure it exists and * that it is empty, otherwise bogus or non-existant information will be * returned if this routine was called somewhere besides Tcl_Eval. If a * signal was received multiple times and a trap is set on it, then that * trap will be executed for each time the signal was received. * * Parameters: * o interp (I/O) - interp->result should contain the result for * the command that just executed. This will either be restored or * replaced with a new result. * o cmdResultCode (I) - The integer result returned by the command that * Tcl_Eval just completed. Should be TCL_OK if not called from * Tcl_Eval. * Globals: * o tclReceivedSignal (I/O) - Will be cleared. * o signalsReceived (I/O) - The count of each signal that was received. * Returns: * Either the original result code, an error result if one of the * trap commands returned an error, or an error indicating the * a signal occured. *----------------------------------------------------------------------------- */ int Tcl_CheckForSignal (interp, cmdResultCode) Tcl_Interp *interp; int cmdResultCode; { char *savedResult; int signalNum, result, sigCnt, retErrorForSignal = -1; if (!tclReceivedSignal) return cmdResultCode; /* No signal received */ savedResult = ckalloc (strlen (interp->result) + 1); strcpy (savedResult, interp->result); Tcl_ResetResult (interp); for (signalNum = 1; signalNum < MAXSIG; signalNum++) { if (signalsReceived [signalNum] == 0) continue; if (signalTrapCmds [signalNum] == NULL) { retErrorForSignal = signalNum; signalsReceived [signalNum] = 0; } else { sigCnt = signalsReceived [signalNum]; signalsReceived [signalNum] = 0; while (sigCnt-- > 0) { result = EvalTrapCode (interp, signalNum, signalTrapCmds [signalNum]); if (result == TCL_ERROR) goto exitPoint; } } } if (retErrorForSignal >= 0) { char *signalName; /* * Force name to always be SIGCHLD, even if system defines only SIGCLD. */ if (retErrorForSignal == SIGCHLD) signalName = "SIGCHLD"; else signalName = Tcl_SignalId (retErrorForSignal); Tcl_SetErrorCode (interp, "UNIX", "SIG", signalName, (char*) NULL); Tcl_AppendResult (interp, signalName, " signal received", (char *)NULL); Tcl_SetVar (interp, "errorInfo", "", TCL_GLOBAL_ONLY); result = TCL_ERROR; } else { Tcl_SetResult (interp, savedResult, TCL_DYNAMIC); savedResult = NULL; result = cmdResultCode; } exitPoint: if (savedResult != NULL) ckfree (savedResult); /* * An error might have caused clearing of some signal flags to be missed. */ Tcl_ResetSignals (); return result; } /* *----------------------------------------------------------------------------- * * ParseSignalList -- * * Parse a list of signal names or numbers. * * Parameters: * o interp (O) - Interpreter for returning errors. * o signalListStr (I) - The Tcl list of signals to convert. * o signalList (O) - The list of converted signal numbers, must be * big enough to hold MAXSIG signals. * Tcl_Eval just completed. * Returns: * The number of signals converted, or -1 if an error occures. *----------------------------------------------------------------------------- */ static int ParseSignalList (interp, signalListStr, signalList) Tcl_Interp *interp; char *signalListStr; int signalList []; { char **signalListArgv; int signalListSize, signalNum, idx; int result = -1; char *signalName; if (Tcl_SplitList (interp, signalListStr, &signalListSize, &signalListArgv) != TCL_OK) return -1; if (signalListSize > MAXSIG) { Tcl_AppendResult (interp, "too many signals supplied in list", (char *) NULL); goto exitPoint; } if (signalListSize == 0) { Tcl_AppendResult (interp, "signal list may not be empty", (char *) NULL); goto exitPoint; } for (idx = 0; idx < signalListSize; idx++) { signalName = signalListArgv [idx]; if (Tcl_StrToInt (signalName, 0, &signalNum)) signalName = Tcl_SignalId (signalNum); else signalNum = SigNameToNum (signalName); if (signalName == NULL) { char numBuf [20]; sprintf (numBuf, "%d", signalNum); Tcl_AppendResult (interp, "invalid signal number: ", numBuf, (char *) NULL); goto exitPoint; } if ((signalNum < 1) || (signalNum > NSIG)) { Tcl_AppendResult (interp, "invalid signal name: ", signalName, (char *) NULL); goto exitPoint; } signalList [idx] = signalNum; } result = signalListSize; exitPoint: ckfree ((char *) signalListArgv); return result; } /* *----------------------------------------------------------------------------- * * SignalBlocked -- * * Determine if a signal is blocked. On non-Posix systems, always returns * "0". * * Parameters:: * o interp (O) - Error messages are returned in result. * o signalNum (I) - The signal to determine the state for. * Returns: * NULL if an error occured, or a pointer to a static string of "1" if the * signal is block, and a static string of "0" if it is not blocked. *----------------------------------------------------------------------------- */ static char * SignalBlocked (interp, signalNum) Tcl_Interp *interp; int signalNum; { #ifdef TCL_POSIX_SIG int idx; sigset_t sigBlockSet; if (sigprocmask (SIG_BLOCK, NULL, &sigBlockSet)) { interp->result = Tcl_UnixError (interp); return NULL; } return sigismember (&sigBlockSet, signalNum) ? "1" : "0"; #else return "0"; #endif } /* *----------------------------------------------------------------------------- * * GetSignalStates -- * * Return a keyed list containing the signal states for the specified * signals. * * Parameters:: * o interp (O) - The list is returned in the result. * o signalListSize (I) - Number of signals in the signal list. * o signalList (I) - List of signals of requested signals. * Returns: * TCL_OK or TCL_ERROR, with error message in interp. *----------------------------------------------------------------------------- */ static int GetSignalStates (interp, signalListSize, signalList) Tcl_Interp *interp; int signalListSize; int signalList [MAXSIG]; { int idx, signalNum, actuallyDone = -1; char *stateKeyedList [MAXSIG]; char *sigState [3], *sigEntry [2]; signalProcPtr_t actionFunc; for (idx = 0; idx < signalListSize; idx ++) { signalNum = signalList [idx]; actionFunc = GetSignalState (signalNum); if (actionFunc == SIG_ERR) goto unixSigError; sigState [2] = NULL; if (actionFunc == SIG_DFL) sigState [0] = "default"; else if (actionFunc == SIG_IGN) sigState [0] = "ignore"; else if (actionFunc == TclSignalTrap) { if (signalTrapCmds [signalNum] == NULL) sigState [0] = "error"; else { sigState [0] = "trap"; sigState [2] = signalTrapCmds [signalNum]; } } sigState [1] = SignalBlocked (interp, signalNum); if (sigState [1] == NULL) goto unixSigError; sigEntry [0] = Tcl_SignalId (signalNum); sigEntry [1] = Tcl_Merge ((sigState [2] == NULL) ? 2 : 3, sigState); stateKeyedList [idx] = Tcl_Merge (2, sigEntry); ckfree (sigEntry [1]); actuallyDone = idx; } Tcl_SetResult (interp, Tcl_Merge (signalListSize, stateKeyedList), TCL_DYNAMIC); for (idx = 0; idx <= actuallyDone; idx++) ckfree (stateKeyedList [idx]); return TCL_OK; unixSigError: for (idx = 0; idx <= actuallyDone; idx++) ckfree (stateKeyedList [idx]); interp->result = Tcl_UnixError (interp); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * SetSignalStates -- * * Set the signal state for the specified signals. * * Parameters:: * o interp (O) - The list is returned in the result. * o signalListSize (I) - Number of signals in the signal list. * o signalList (I) - List of signals of requested signals. * o actionFunc (I) - The function to run when the signal is received. * o command (I) - If the function is the "trap" function, this is the * Tcl command to run when the trap occurs. Otherwise, NULL. * Returns: * TCL_OK or TCL_ERROR, with error message in interp. *----------------------------------------------------------------------------- */ static int SetSignalStates (interp, signalListSize, signalList, actionFunc, command) Tcl_Interp *interp; int signalListSize; int signalList [MAXSIG]; signalProcPtr_t actionFunc; char *command; { int idx, signalNum, commandLen; if (command != NULL) commandLen = strlen (command); for (idx = 0; idx < signalListSize; idx ++) { signalNum = signalList [idx]; if (signalTrapCmds [signalNum] != NULL) { ckfree (signalTrapCmds [signalNum]); signalTrapCmds [signalNum] = NULL; } if (!SetSignalAction (signalNum, actionFunc)) goto unixSigError; if (command != NULL) { signalTrapCmds [signalNum] = ckalloc (commandLen + 1); strcpy (signalTrapCmds [signalNum], command); } } return TCL_OK; unixSigError: interp->result = Tcl_UnixError (interp); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * BlockSignals -- * * Block or unblock the specified signals. Returns an error if not a Posix * system. * * Parameters:: * o interp (O) - Error messages are returned in result. * o action (I) - SIG_BLOCK or SIG_UNBLOCK. * o signalListSize (I) - Number of signals in the signal list. * o signalList (I) - List of signals of requested signals. * Returns: * TCL_OK or TCL_ERROR, with error message in interp. *----------------------------------------------------------------------------- */ static int BlockSignals (interp, action, signalListSize, signalList) Tcl_Interp *interp; int action; int signalListSize; int signalList [MAXSIG]; { #ifdef TCL_POSIX_SIG int idx; sigset_t sigBlockSet; sigemptyset (&sigBlockSet); for (idx = 0; idx < signalListSize; idx ++) sigaddset (&sigBlockSet, signalList [idx]); if (sigprocmask (action, &sigBlockSet, NULL)) { interp->result = Tcl_UnixError (interp); return TCL_ERROR; } return TCL_OK; #else interp->result = noPosix; return TCL_ERROR; #endif } /* *----------------------------------------------------------------------------- * * Tcl_SignalCmd -- * Implements the TCL signal command: * signal action siglist [command] * * Results: * Standard TCL results, may return the UNIX system error message. * * Side effects: * Signal handling states may be changed. *----------------------------------------------------------------------------- */ static int Tcl_SignalCmd (clientData, interp, argc, argv) char *clientData; Tcl_Interp *interp; int argc; char **argv; { int signalListSize, signalNum, idx; int signalList [MAXSIG], actionClass; char *signalName; signalProcPtr_t actionFunc; char *command = NULL; if ((argc < 3) || (argc > 4)) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " action signalList [commands]", (char *) NULL); return TCL_ERROR; } signalListSize = ParseSignalList (interp, argv [2], signalList); if (signalListSize < 0) return TCL_ERROR; /* * Determine the action to take on all of the signals. */ if (STREQU (argv [1], "trap")) { actionFunc = TclSignalTrap; actionClass = SIGACT_SET; if (argc != 4) { Tcl_AppendResult (interp, "command required for ", "trapping signals", (char *) NULL); return TCL_ERROR; } command = argv [3]; } else { if (STREQU (argv [1], "default")) { actionFunc = SIG_DFL; actionClass = SIGACT_SET; } else if (STREQU (argv [1], "ignore")) { actionFunc = SIG_IGN; actionClass = SIGACT_SET; } else if (STREQU (argv [1], "error")) { actionFunc = TclSignalTrap; actionClass = SIGACT_SET; } else if (STREQU (argv [1], "get")) { actionClass = SIGACT_GET; } else if (STREQU (argv [1], "block")) { actionClass = SIGACT_BLOCK; } else if (STREQU (argv [1], "unblock")) { actionClass = SIGACT_UNBLOCK; } else { Tcl_AppendResult (interp, "invalid signal action specified: ", argv [1], ": expected one of \"default\", ", "\"ignore\", \"error\", \"trap\", or \"get\", ", "\"block\", \"unblock\"", (char *) NULL); return TCL_ERROR; } if (argc != 3) { Tcl_AppendResult (interp, "command may not be ", "specified for \"", argv [1], "\" action", (char *) NULL); return TCL_ERROR; } } /* * Process the specified action class. */ switch (actionClass) { case SIGACT_SET: return SetSignalStates (interp, signalListSize, signalList, actionFunc, command); case SIGACT_GET: return GetSignalStates (interp, signalListSize, signalList); case SIGACT_BLOCK: return BlockSignals (interp, SIG_BLOCK, signalListSize, signalList); case SIGACT_UNBLOCK: return BlockSignals (interp, SIG_UNBLOCK, signalListSize, signalList); } } /* *----------------------------------------------------------------------------- * * SignalCmdCleanUp -- * Clean up the signal table when the interpreter is deleted. This * is actually when the signal command is deleted. It releases the * all signal commands that have been allocated. * *----------------------------------------------------------------------------- */ static void SignalCmdCleanUp (clientData) ClientData clientData; { int idx; for (idx = 0; idx < MAXSIG; idx++) if (signalTrapCmds [idx] != NULL) { ckfree (signalTrapCmds [idx]); signalTrapCmds [idx] = NULL; } } /* *----------------------------------------------------------------------------- * * Tcl_InitSignalHandling -- * Initializes the TCL unix commands. * * Side effects: * A catch trap is armed for the SIGINT signal. * *----------------------------------------------------------------------------- */ void Tcl_InitSignalHandling (interp) Tcl_Interp *interp; { int idx; for (idx = 0; idx < MAXSIG; idx++) { signalsReceived [idx] = 0; signalTrapCmds [idx] = NULL; } Tcl_CreateCommand (interp, "kill", Tcl_KillCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "signal", Tcl_SignalCmd, (ClientData)NULL, SignalCmdCleanUp); /* * If interrupt is currently being trapped, enabled it. Other wise * leave it off, or if this process is running as a background job it will * get its parent's (shell's) signals. */ if (GetSignalState (SIGINT) != SIG_IGN) SetSignalAction (SIGINT, TclSignalTrap); } micropolis-activity/src/tclx/src/tclxfmat.c0000664000076400007640000004531410724145723021360 0ustar simcitysimcity/* * tclXfmath.c -- * * Contains the TCL trig and floating point math functions. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXfmath.c,v 2.5 1992/11/09 07:58:13 markd Exp $ *----------------------------------------------------------------------------- */ #include "tclxint.h" #include /* * Flag used to indicate if a floating point math routine is currently being * executed. Used to determine if a matherr belongs to Tcl. */ static int G_inTclFPMath = FALSE; /* * Flag indicating if a floating point math error occured during the execution * of a library routine called by a Tcl command. Will not be set by the trap * handler if the error did not occur while the `G_inTclFPMath' flag was * set. If the error did occur the error type and the name of the function * that got the error are save here. */ static int G_gotTclFPMathErr = FALSE; static int G_errorType; /* * Prototypes of internal functions. */ #ifdef TCL_IEEE_FP_MATH static int ReturnIEEEMathError _ANSI_ARGS_((Tcl_Interp *interp, double dbResult)); #else static int ReturnFPMathError _ANSI_ARGS_((Tcl_Interp *interp)); #endif static int Tcl_UnaryFloatFunction _ANSI_ARGS_((Tcl_Interp *interp, int argc, char **argv, double (*function)())); #ifdef TCL_IEEE_FP_MATH /* *----------------------------------------------------------------------------- * * ReturnIEEEMathError -- * Handle return of floating point errors on machines that use IEEE 745-1985 * error reporting instead of Unix matherr. Some machines support both and * on these, either option may be used. * Various tests are used to determine if a number is one of the special * values. Not-a-number is tested by comparing the number against itself * (x != x if x is NaN). Infinity is tested for by comparing against MAXDOUBLE. * * Parameters: * o interp (I) - Error is returned in result. * o dbResult (I) - Result of a function call that returned a special value. * Returns: * Always returns the value TCL_ERROR, so if can be called as the * argument to `return'. *----------------------------------------------------------------------------- */ static int ReturnIEEEMathError (interp, dbResult) Tcl_Interp *interp; double dbResult; { char *errorMsg; if (dbResult != dbResult) errorMsg = "domain"; else if (dbResult > MAXDOUBLE) errorMsg = "overflow"; else if (dbResult < -MAXDOUBLE) errorMsg = "underflow"; Tcl_AppendResult (interp, "floating point ", errorMsg, " error", (char *) NULL); return TCL_ERROR; } #else /* *----------------------------------------------------------------------------- * * ReturnFPMathError -- * Routine to set an interpreter result to contain a floating point * math error message. Will clear the `G_gotTclFPMathErr' flag. * This routine always returns the value TCL_ERROR, so if can be called * as the argument to `return'. * * Parameters: * o interp (I) - Error is returned in result. * Globals: * o G_gotTclFPMathErr (O) - Flag indicating an error occured, will be * cleared. * o G_errorType (I) - Type of error that occured. * Returns: * Always returns the value TCL_ERROR, so if can be called as the * argument to `return'. *----------------------------------------------------------------------------- */ static int ReturnFPMathError (interp) Tcl_Interp *interp; { char *errorMsg; switch (G_errorType) { case DOMAIN: errorMsg = "domain"; break; case SING: errorMsg = "singularity"; break; case OVERFLOW: errorMsg = "overflow"; break; case UNDERFLOW: errorMsg = "underflow"; break; case TLOSS: case PLOSS: errorMsg = "loss of significance"; break; } Tcl_AppendResult (interp, "floating point ", errorMsg, " error", (char *) NULL); G_gotTclFPMathErr = FALSE; /* Clear the flag. */ return TCL_ERROR; } #endif /* NO_MATH_ERR */ /* *----------------------------------------------------------------------------- * * Tcl_MathError -- * Tcl math error handler, should be called by an application `matherr' * routine to determine if an error was caused by Tcl code or by other * code in the application. If the error occured in Tcl code, flags will * be set so that a standard Tcl interpreter error can be returned. * * Paramenter: * o functionName (I) - The name of the function that got the error. From * the exception structure supplied to matherr. * o errorType (I) - The type of error that occured. From the exception * structure supplied to matherr. * Results: * Returns TRUE if the error was in Tcl code, in which case the * matherr routine calling this function should return non-zero so no * error message will be generated. FALSE if the error was not in Tcl * code, in which case the matherr routine can handle the error in any * manner it choses. * *----------------------------------------------------------------------------- */ int Tcl_MathError (functionName, errorType) char *functionName; int errorType; { if (G_inTclFPMath) { G_gotTclFPMathErr = TRUE; G_errorType = errorType; return TRUE; } else return FALSE; } /* *----------------------------------------------------------------------------- * * Tcl_UnaryFloatFunction -- * Helper routine that implements Tcl unary floating point * functions by validating parameters, converting the * argument, applying the function (the address of which * is passed as an argument), and converting the result to * a string and storing it in the result buffer * * Results: * Returns TCL_OK if number is present, conversion succeeded, * the function was performed, etc. * Return TCL_ERROR for any error; an appropriate error message * is placed in the result string in this case. * *----------------------------------------------------------------------------- */ static int Tcl_UnaryFloatFunction(interp, argc, argv, function) Tcl_Interp *interp; int argc; char **argv; double (*function)(); { double dbVal, dbResult; if (argc != 2) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " expr", (char *) NULL); return TCL_ERROR; } if (Tcl_ExprDouble (interp, argv [1], &dbVal) != TCL_OK) return TCL_ERROR; G_inTclFPMath = TRUE; dbResult = (*function)(dbVal); G_inTclFPMath = FALSE; #ifdef TCL_IEEE_FP_MATH if ((dbResult != dbResult) || (dbResult < -MAXDOUBLE) || (dbResult > MAXDOUBLE)) return ReturnIEEEMathError (interp, dbResult); #else if (G_gotTclFPMathErr) return ReturnFPMathError (interp); #endif Tcl_ReturnDouble (interp, dbResult); return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_AcosCmd -- * Implements the TCL arccosine command: * acos num * * Results: * Returns TCL_OK if number is present and conversion succeeds. * *----------------------------------------------------------------------------- */ int Tcl_AcosCmd(clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { return Tcl_UnaryFloatFunction(interp, argc, argv, acos); } /* *----------------------------------------------------------------------------- * * Tcl_AsinCmd -- * Implements the TCL arcsin command: * asin num * * Results: * Returns TCL_OK if number is present and conversion succeeds. * *----------------------------------------------------------------------------- */ int Tcl_AsinCmd(clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { return Tcl_UnaryFloatFunction(interp, argc, argv, asin); } /* *----------------------------------------------------------------------------- * * Tcl_AtanCmd -- * Implements the TCL arctangent command: * atan num * * Results: * Returns TCL_OK if number is present and conversion succeeds. * *----------------------------------------------------------------------------- */ int Tcl_AtanCmd(clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { return Tcl_UnaryFloatFunction(interp, argc, argv, atan); } /* *----------------------------------------------------------------------------- * * Tcl_CosCmd -- * Implements the TCL cosine command: * cos num * * Results: * Returns TCL_OK if number is present and conversion succeeds. * *----------------------------------------------------------------------------- */ int Tcl_CosCmd(clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { return Tcl_UnaryFloatFunction(interp, argc, argv, cos); } /* *----------------------------------------------------------------------------- * * Tcl_SinCmd -- * Implements the TCL sin command: * sin num * * Results: * Returns TCL_OK if number is present and conversion succeeds. * *----------------------------------------------------------------------------- */ int Tcl_SinCmd(clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { return Tcl_UnaryFloatFunction(interp, argc, argv, sin); } /* *----------------------------------------------------------------------------- * * Tcl_TanCmd -- * Implements the TCL tangent command: * tan num * * Results: * Returns TCL_OK if number is present and conversion succeeds. * *----------------------------------------------------------------------------- */ int Tcl_TanCmd(clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { return Tcl_UnaryFloatFunction(interp, argc, argv, tan); } /* *----------------------------------------------------------------------------- * * Tcl_CoshCmd -- * Implements the TCL hyperbolic cosine command: * cosh num * * Results: * Returns TCL_OK if number is present and conversion succeeds. * *----------------------------------------------------------------------------- */ int Tcl_CoshCmd(clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { return Tcl_UnaryFloatFunction(interp, argc, argv, cosh); } /* *----------------------------------------------------------------------------- * * Tcl_SinhCmd -- * Implements the TCL hyperbolic sin command: * sinh num * * Results: * Returns TCL_OK if number is present and conversion succeeds. * *----------------------------------------------------------------------------- */ int Tcl_SinhCmd(clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { return Tcl_UnaryFloatFunction(interp, argc, argv, sinh); } /* *----------------------------------------------------------------------------- * * Tcl_TanhCmd -- * Implements the TCL hyperbolic tangent command: * tanh num * * Results: * Returns TCL_OK if number is present and conversion succeeds. * *----------------------------------------------------------------------------- */ int Tcl_TanhCmd(clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { return Tcl_UnaryFloatFunction(interp, argc, argv, tanh); } /* *----------------------------------------------------------------------------- * * Tcl_ExpCmd -- * Implements the TCL exponent command: * exp num * * Results: * Returns TCL_OK if number is present and conversion succeeds. * *----------------------------------------------------------------------------- */ int Tcl_ExpCmd(clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { return Tcl_UnaryFloatFunction(interp, argc, argv, exp); } /* *----------------------------------------------------------------------------- * * Tcl_LogCmd -- * Implements the TCL logarithm command: * log num * * Results: * Returns TCL_OK if number is present and conversion succeeds. * *----------------------------------------------------------------------------- */ int Tcl_LogCmd(clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { return Tcl_UnaryFloatFunction(interp, argc, argv, log); } /* *----------------------------------------------------------------------------- * * Tcl_Log10Cmd -- * Implements the TCL base-10 logarithm command: * log10 num * * Results: * Returns TCL_OK if number is present and conversion succeeds. * *----------------------------------------------------------------------------- */ int Tcl_Log10Cmd(clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { return Tcl_UnaryFloatFunction(interp, argc, argv, log10); } /* *----------------------------------------------------------------------------- * * Tcl_SqrtCmd -- * Implements the TCL square root command: * sqrt num * * Results: * Returns TCL_OK if number is present and conversion succeeds. * *----------------------------------------------------------------------------- */ int Tcl_SqrtCmd(clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { return Tcl_UnaryFloatFunction(interp, argc, argv, sqrt); } /* *----------------------------------------------------------------------------- * * Tcl_FabsCmd -- * Implements the TCL floating point absolute value command: * fabs num * * Results: * Returns TCL_OK if number is present and conversion succeeds. * *----------------------------------------------------------------------------- */ int Tcl_FabsCmd(clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { return Tcl_UnaryFloatFunction(interp, argc, argv, fabs); } /* *----------------------------------------------------------------------------- * * Tcl_FloorCmd -- * Implements the TCL floor command: * floor num * * Results: * Returns TCL_OK if number is present and conversion succeeds. * *----------------------------------------------------------------------------- */ int Tcl_FloorCmd(clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { return Tcl_UnaryFloatFunction(interp, argc, argv, floor); } /* *----------------------------------------------------------------------------- * * Tcl_CeilCmd -- * Implements the TCL ceil command: * ceil num * * Results: * Returns TCL_OK if number is present and conversion succeeds. * *----------------------------------------------------------------------------- */ int Tcl_CeilCmd(clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { return Tcl_UnaryFloatFunction(interp, argc, argv, ceil); } /* *----------------------------------------------------------------------------- * * Tcl_FmodCmd -- * Implements the TCL floating modulo command: * fmod num1 num2 * * Results: * Returns TCL_OK if number is present and conversion succeeds. * *----------------------------------------------------------------------------- */ int Tcl_FmodCmd(clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { double dbVal, dbDivisor, dbResult; if (argc != 3) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " expr divisor", (char *) NULL); return TCL_ERROR; } if (Tcl_ExprDouble (interp, argv [1], &dbVal) != TCL_OK) return TCL_ERROR; if (Tcl_ExprDouble (interp, argv [2], &dbDivisor) != TCL_OK) return TCL_ERROR; G_inTclFPMath = TRUE; dbResult = fmod (dbVal, dbDivisor); G_inTclFPMath = FALSE; #ifdef TCL_IEEE_FP_MATH if ((dbResult != dbResult) || (dbResult < -MAXDOUBLE) || (dbResult > MAXDOUBLE)) return ReturnIEEEMathError (interp, dbResult); #else if (G_gotTclFPMathErr) return ReturnFPMathError (interp); #endif Tcl_ReturnDouble (interp, dbResult); return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_PowCmd -- * Implements the TCL power (exponentiation) command: * pow num1 num2 * * Results: * Returns TCL_OK if number is present and conversion succeeds. * *----------------------------------------------------------------------------- */ int Tcl_PowCmd(clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { double dbVal, dbExp, dbResult; if (argc != 3) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " expr exp", (char *) NULL); return TCL_ERROR; } if (Tcl_ExprDouble (interp, argv [1], &dbVal) != TCL_OK) return TCL_ERROR; if (Tcl_ExprDouble (interp, argv [2], &dbExp) != TCL_OK) return TCL_ERROR; G_inTclFPMath = TRUE; dbResult = pow (dbVal,dbExp); G_inTclFPMath = FALSE; #ifdef TCL_IEEE_FP_MATH if ((dbResult != dbResult) || (dbResult < -MAXDOUBLE) || (dbResult > MAXDOUBLE)) return ReturnIEEEMathError (interp, dbResult); #else if (G_gotTclFPMathErr) return ReturnFPMathError (interp); #endif Tcl_ReturnDouble (interp, dbResult); return TCL_OK; } micropolis-activity/src/tclx/src/tclxunix.c0000664000076400007640000003346410724145723021417 0ustar simcitysimcity/* * tclXunixcmds.c -- * * Tcl commands to access unix library calls. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXunixcmds.c,v 2.0 1992/10/16 04:51:18 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclxint.h" /* * A million microsecondss per seconds. */ #define TCL_USECS_PER_SEC (1000L * 1000L) extern double floor (); extern double ceil (); /* *----------------------------------------------------------------------------- * * Tcl_AlarmCmd -- * Implements the TCL Alarm command: * alarm seconds * * Results: * Standard TCL results, may return the UNIX system error message. * *----------------------------------------------------------------------------- */ int Tcl_AlarmCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { #ifdef TCL_NO_ITIMER double seconds; unsigned useconds; if (argc != 2) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " seconds", (char *) NULL); return TCL_ERROR; } if (Tcl_GetDouble (interp, argv[1], &seconds) != TCL_OK) return TCL_ERROR; useconds = ceil (seconds); #ifdef MSDOS sprintf (interp->result, "%d", sleep (useconds)); #else sprintf (interp->result, "%d", alarm (useconds)); #endif return TCL_OK; #else double seconds, secFloor; struct itimerval timer, oldTimer; if (argc != 2) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " seconds", (char *) NULL); return TCL_ERROR; } if (Tcl_GetDouble (interp, argv[1], &seconds) != TCL_OK) return TCL_ERROR; secFloor = floor (seconds); timer.it_value.tv_sec = secFloor; timer.it_value.tv_usec = (long) ((seconds - secFloor) * (double) TCL_USECS_PER_SEC); timer.it_interval.tv_sec = 0; timer.it_interval.tv_usec = 0; if (setitimer (ITIMER_REAL, &timer, &oldTimer) < 0) { interp->result = Tcl_UnixError (interp); return TCL_ERROR; } seconds = oldTimer.it_value.tv_sec; seconds += ((double) oldTimer.it_value.tv_usec) / ((double) TCL_USECS_PER_SEC); sprintf (interp->result, "%g", seconds); return TCL_OK; #endif } /* *----------------------------------------------------------------------------- * * Tcl_SleepCmd -- * Implements the TCL sleep command: * sleep seconds * * Results: * Standard TCL results, may return the UNIX system error message. * *----------------------------------------------------------------------------- */ int Tcl_SleepCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { unsigned time; if (argc != 2) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " seconds", (char *) NULL); return TCL_ERROR; } if (Tcl_GetUnsigned (interp, argv[1], &time) != TCL_OK) return TCL_ERROR; sleep (time); return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_SystemCmd -- * Implements the TCL system command: * system command * * Results: * Standard TCL results, may return the UNIX system error message. * *----------------------------------------------------------------------------- */ int Tcl_SystemCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { int exitCode; if (argc != 2) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " command", (char *) NULL); return TCL_ERROR; } exitCode = Tcl_System (interp, argv[1]); if (exitCode == -1) return TCL_ERROR; sprintf (interp->result, "%d", exitCode); return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_TimesCmd -- * Implements the TCL times command: * times * * Results: * Standard TCL results. * *----------------------------------------------------------------------------- */ int Tcl_TimesCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { struct tms tm; if (argc != 1) { Tcl_AppendResult (interp, tclXWrongArgs, argv[0], (char *) NULL); return TCL_ERROR; } times(&tm); sprintf(interp->result, "%ld %ld %ld %ld", #ifdef MSDOS tm.tms_utime * MS_PER_TICK, tm.tms_utime2 * MS_PER_TICK, tm.tms_stime * MS_PER_TICK, tm.tms_stime2 * MS_PER_TICK); #else tm.tms_utime * MS_PER_TICK, tm.tms_stime * MS_PER_TICK, tm.tms_cutime * MS_PER_TICK, tm.tms_cstime * MS_PER_TICK); #endif return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_UmaskCmd -- * Implements the TCL umask command: * umask [octalmask] * * Results: * Standard TCL results, may return the UNIX system error message. * *----------------------------------------------------------------------------- */ int Tcl_UmaskCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { int mask; if ((argc < 1) || (argc > 2)) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " octalmask", (char *) NULL); return TCL_ERROR; } if (argc == 1) { mask = umask (0); umask ((unsigned short) mask); sprintf (interp->result, "%o", mask); } else { if (!Tcl_StrToInt (argv [1], 8, &mask)) { Tcl_AppendResult (interp, "Expected octal number got: ", argv [1], (char *) NULL); return TCL_ERROR; } umask ((unsigned short) mask); } return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_LinkCmd -- * Implements the TCL link command: * link [-sym] srcpath destpath * * Results: * Standard TCL results, may return the UNIX system error message. * *----------------------------------------------------------------------------- */ int Tcl_LinkCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { char *tmppath, *srcpath, *destpath; if ((argc < 3) || (argc > 4)) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " [-sym] srcpath destpath", (char *) NULL); return TCL_ERROR; } if (argc == 4) { if (!STREQU (argv [1], "-sym")) { Tcl_AppendResult (interp, "invalid option, expected: \"-sym\", ", "got: ", argv [1], (char *) NULL); return TCL_ERROR; } #ifndef S_IFLNK Tcl_AppendResult (interp, "symbolic links are not supported on this", " system", (char *) NULL); return TCL_ERROR; #endif } tmppath = Tcl_TildeSubst (interp, argv [argc - 2]); if (tmppath == NULL) return TCL_ERROR; srcpath = ckalloc (strlen (tmppath) + 1); strcpy (srcpath, tmppath); destpath = Tcl_TildeSubst (interp, argv [argc - 1]); if (destpath == NULL) goto errorExit; if (argc == 4) { #ifdef S_IFLNK if (symlink (srcpath, destpath) != 0) goto unixError; #endif } else { if (link (srcpath, destpath) != 0) goto unixError; } ckfree (srcpath); return TCL_OK; unixError: interp->result = Tcl_UnixError (interp); errorExit: ckfree (srcpath); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * Tcl_UnlinkCmd -- * Implements the TCL unlink command: * unlink [-nocomplain] fileList * * Results: * Standard TCL results, may return the UNIX system error message. * *----------------------------------------------------------------------------- */ int Tcl_UnlinkCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { int idx, fileArgc; char **fileArgv, *fileName; int noComplain; if ((argc < 2) || (argc > 3)) goto badArgs; if (argc == 3) { if (!STREQU (argv [1], "-nocomplain")) goto badArgs; noComplain = TRUE; } else { noComplain = FALSE; } if (Tcl_SplitList (interp, argv [argc - 1], &fileArgc, &fileArgv) != TCL_OK) return TCL_ERROR; for (idx = 0; idx < fileArgc; idx++) { fileName = Tcl_TildeSubst (interp, fileArgv [idx]); if (fileName == NULL) { if (!noComplain) goto errorExit; continue; } if ((unlink (fileName) != 0) && !noComplain) { Tcl_AppendResult (interp, fileArgv [idx], ": ", Tcl_UnixError (interp), (char *) NULL); goto errorExit; } } ckfree ((char *) fileArgv); return TCL_OK; errorExit: ckfree ((char *) fileArgv); return TCL_ERROR; badArgs: Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " [-nocomplain] filelist", (char *) NULL); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * Tcl_MkdirCmd -- * Implements the TCL Mkdir command: * mkdir [-path] dirList * * Results: * Standard TCL results, may return the UNIX system error message. * *----------------------------------------------------------------------------- */ int Tcl_MkdirCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { int idx, dirArgc, result; char **dirArgv, *scanPtr; struct stat statBuf; if ((argc < 2) || (argc > 3)) goto usageError; if ((argc == 3) && !STREQU (argv [1], "-path")) goto usageError; if (Tcl_SplitList (interp, argv [argc - 1], &dirArgc, &dirArgv) != TCL_OK) return TCL_ERROR; /* * Make all the directories, optionally making directories along the path. */ for (idx = 0; idx < dirArgc; idx++) { /* * Make leading directories, if requested. */ if (argc == 3) { scanPtr = dirArgv [idx]; result = 0; /* Start out ok, for dirs that are skipped */ while (*scanPtr != '\0') { scanPtr = strchr (scanPtr+1, '/'); if ((scanPtr == NULL) || (*(scanPtr+1) == '\0')) break; *scanPtr = '\0'; if (stat (dirArgv [idx], &statBuf) < 0) result = mkdir (dirArgv [idx], S_IFDIR | 0777); *scanPtr = '/'; if (result < 0) goto mkdirError; } } /* * Make final directory in the path. */ if (mkdir (dirArgv [idx], S_IFDIR | 0777) != 0) goto mkdirError; } ckfree ((char *) dirArgv); return TCL_OK; mkdirError: Tcl_AppendResult (interp, dirArgv [idx], ": ", Tcl_UnixError (interp), (char *) NULL); ckfree ((char *) dirArgv); return TCL_ERROR; usageError: Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " [-path] dirlist", (char *) NULL); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * Tcl_RmdirCmd -- * Implements the TCL Rmdir command: * rmdir [-nocomplain] dirList * * Results: * Standard TCL results, may return the UNIX system error message. * *----------------------------------------------------------------------------- */ int Tcl_RmdirCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { int idx, dirArgc; char **dirArgv, *dirName; int noComplain; if ((argc < 2) || (argc > 3)) goto badArgs; if (argc == 3) { if (!STREQU (argv [1], "-nocomplain")) goto badArgs; noComplain = TRUE; } else { noComplain = FALSE; } if (Tcl_SplitList (interp, argv [argc - 1], &dirArgc, &dirArgv) != TCL_OK) return TCL_ERROR; for (idx = 0; idx < dirArgc; idx++) { dirName = Tcl_TildeSubst (interp, dirArgv [idx]); if (dirName == NULL) { if (!noComplain) goto errorExit; continue; } if ((rmdir (dirName) != 0) && !noComplain) { Tcl_AppendResult (interp, dirArgv [idx], ": ", Tcl_UnixError (interp), (char *) NULL); goto errorExit; } } ckfree ((char *) dirArgv); return TCL_OK; errorExit: ckfree ((char *) dirArgv); return TCL_ERROR;; badArgs: Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " [-nocomplain] dirlist", (char *) NULL); return TCL_ERROR; } micropolis-activity/src/tclx/src/tclxmerr.c0000664000076400007640000000405310724145723021371 0ustar simcitysimcity/* * tclXmatherr.c -- * * Extended Tcl default matherr routine, may be replace by an application * specified version. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXmatherr.c,v 2.1 1992/11/09 07:33:02 markd Exp $ *----------------------------------------------------------------------------- */ #include "tclxtend.h" #ifndef TCL_IEEE_FP_MATH #include /* *----------------------------------------------------------------------------- * * matherr -- * Default matherr routine for extended Tcl. If the error does not * belong to Tcl, standard math error processing is done. An * aplication may replace this routine with their own, however it must * call \fBTcl_MathError\fR to check if the error belongs to tcl. * *----------------------------------------------------------------------------- */ int matherr (except) struct exception *except; { if (Tcl_MathError (except->name, except->type)) return 1; else return 0; } #else /* *----------------------------------------------------------------------------- * * matherr -- * Dummy matherr for systems wanting to use IEEE 745-1985 floating point * math error reporting. This just disables standard Unix matherr message * printing by returning 1. Except parameter not specified, since some systems * don't define it or even use matherr. * *----------------------------------------------------------------------------- */ int matherr () { return 1; } #endif /* TCL_IEEE_FP_MATH */ micropolis-activity/src/tclx/src/tclxsel.c0000664000076400007640000003312410724145723021210 0ustar simcitysimcity/* * tclXselect.c * * Extended Tcl file I/O commands. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXselect.c,v 2.0 1992/10/16 04:51:10 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclxint.h" #ifdef MSDOS typedef struct { long fds_bits[1]; } fd_set; /* GRB for Micropolis */ #endif extern double floor (); #ifdef TCL_USE_BZERO_MACRO # define bzero(to,length) memset(to,'\0',length) #endif /* * Macro to probe the stdio buffer to see if any data is pending in the * buffer. Different versions are provided for System V and BSD stdio. */ #ifdef __SLBF # define READ_DATA_PENDING(fp) (fp->_r > 0) #else # define READ_DATA_PENDING(fp) (fp->_cnt != 0) #endif /* * A few systems (A/UX 2.0) have select but no macros, define em in this case. */ #if !defined(TCL_NO_SELECT) && !defined(FD_SET) # define FD_SET(fd,fdset) (fdset)->fds_bits[0] |= (1<<(fd)) # define FD_CLR(fd,fdset) (fdset)->fds_bits[0] &= ~(1<<(fd)) # define FD_ZERO(fdset) (fdset)->fds_bits[0] = 0 # define FD_ISSET(fd,fdset) (((fdset)->fds_bits[0]) & (1<<(fd))) #endif /* * Prototypes of internal functions. */ static int ParseSelectFileList _ANSI_ARGS_((Tcl_Interp *interp, char *handleList, fd_set *fileDescSetPtr, FILE ***fileDescListPtr, int *maxFileIdPtr)); static int FindPendingData _ANSI_ARGS_((int fileDescCnt, FILE **fileDescList, fd_set *fileDescSetPtr)); static char * ReturnSelectedFileList _ANSI_ARGS_((fd_set *fileDescSetPtr, fd_set *fileDescSet2Ptr, int fileDescCnt, FILE **fileDescList)); #ifndef TCL_NO_SELECT /* *----------------------------------------------------------------------------- * * ParseSelectFileList -- * * Parse a list of file handles for select. * * Parameters: * o interp (O) - Error messages are returned in the result. * o handleList (I) - The list of file handles to parse, may be empty. * o fileDescSetPtr (O) - The select fd_set for the parsed handles is * filled in. Should be cleared before this procedure is called. * o fileDescListPtr (O) - A pointer to a dynamically allocated list of * the FILE ptrs that are in the set. If the list is empty, NULL is * returned. * o maxFileIdPtr (I/O) - If a file id greater than the current value is * encountered, it will be set to that file id. * Returns: * The number of files in the list, or -1 if an error occured. *----------------------------------------------------------------------------- */ static int ParseSelectFileList (interp, handleList, fileDescSetPtr, fileDescListPtr, maxFileIdPtr) Tcl_Interp *interp; char *handleList; fd_set *fileDescSetPtr; FILE ***fileDescListPtr; int *maxFileIdPtr; { int handleCnt, idx; char **handleArgv; FILE **fileDescList; /* * Optimize empty list handling. */ if (handleList [0] == '\0') { *fileDescListPtr = NULL; return 0; } if (Tcl_SplitList (interp, handleList, &handleCnt, &handleArgv) != TCL_OK) return -1; /* * Handle case of an empty list. */ if (handleCnt == 0) { *fileDescListPtr = NULL; ckfree ((char *) handleArgv); return 0; } fileDescList = (FILE **) ckalloc (sizeof (FILE *) * handleCnt); for (idx = 0; idx < handleCnt; idx++) { OpenFile *filePtr; int fileId; if (TclGetOpenFile (interp, handleArgv [idx], &filePtr) != TCL_OK) { ckfree ((char *) handleArgv); ckfree ((char *) fileDescList); return -1; } fileId = fileno (filePtr->f); fileDescList [idx] = filePtr->f; FD_SET (fileId, fileDescSetPtr); if (fileId > *maxFileIdPtr) *maxFileIdPtr = fileId; } *fileDescListPtr = fileDescList; ckfree ((char *) handleArgv); return handleCnt; } /* *----------------------------------------------------------------------------- * * FindPendingData -- * * Scan a list of read file descriptors to determine if any of them * have data pending in their stdio buffers. * * Parameters: * o fileDescCnt (I) - Number of descriptors in the list. * o fileDescListPtr (I) - A pointer to a list of the FILE pointers for * files that are in the set. * o fileDescSetPtr (I) - A select fd_set with will have a bit set for * every file that has data pending it its buffer. * Returns: * TRUE if any where found that had pending data, FALSE if none were found. *----------------------------------------------------------------------------- */ static int FindPendingData (fileDescCnt, fileDescList, fileDescSetPtr) int fileDescCnt; FILE **fileDescList; fd_set *fileDescSetPtr; { int idx, found = FALSE; FD_ZERO (fileDescSetPtr); #ifndef IS_LINUX for (idx = 0; idx < fileDescCnt; idx++) { if (READ_DATA_PENDING (fileDescList [idx])) { FD_SET (fileno (fileDescList [idx]), fileDescSetPtr); found = TRUE; } } #endif return found; } /* *----------------------------------------------------------------------------- * * ReturnSelectedFileList -- * * Take the resulting file descriptor sets from a select, and the * list of file descritpors and build up a list of Tcl file handles. * * Parameters: * o fileDescSetPtr (I) - The select fd_set. * o fileDescSet2Ptr (I) - Pointer to a second descriptor to also check * (their may be overlap). NULL if no second set. * o fileDescCnt (I) - Number of descriptors in the list. * o fileDescListPtr (I) - A pointer to a list of the FILE pointers for * files that are in the set. If the list is empty, NULL is returned. * Returns: * A dynamicly allocated list of file handles. If the handles are empty, * it still returns a NULL list to make clean up easy. *----------------------------------------------------------------------------- */ static char * ReturnSelectedFileList (fileDescSetPtr, fileDescSet2Ptr, fileDescCnt, fileDescList) fd_set *fileDescSetPtr; fd_set *fileDescSet2Ptr; int fileDescCnt; FILE **fileDescList; { int idx, handleCnt, fileNum; char *fileHandleList; char **fileHandleArgv, *nextByte; /* * Special case the empty list. */ if (fileDescCnt == 0) { fileHandleList = ckalloc (1); fileHandleList [0] = '\0'; return fileHandleList; } /* * Allocate enough room to hold the argv plus all the `fileNNN' strings */ fileHandleArgv = (char **) ckalloc ((fileDescCnt * sizeof (char *)) + (9 * fileDescCnt)); nextByte = ((char *) fileHandleArgv) + (fileDescCnt * sizeof (char *)); handleCnt = 0; for (idx = 0; idx < fileDescCnt; idx++) { fileNum = fileno (fileDescList [idx]); if (FD_ISSET (fileNum, fileDescSetPtr) || (fileDescSet2Ptr != NULL && FD_ISSET (fileNum, fileDescSet2Ptr))) { fileHandleArgv [handleCnt] = nextByte; /* Allocate storage */ nextByte += 8; sprintf (fileHandleArgv [handleCnt], "file%d", fileNum); handleCnt++; } } fileHandleList = Tcl_Merge (handleCnt, fileHandleArgv); ckfree ((char *) fileHandleArgv); return fileHandleList; } /* *----------------------------------------------------------------------------- * * Tcl_SelectCmd -- * Implements the select TCL command: * select readhandles [writehandles] [excepthandles] [timeout] * * This command is extra smart in the fact that it checks for read data * pending in the stdio buffer first before doing a select. * * Results: * A list in the form: * {readhandles writehandles excepthandles} * or {} it the timeout expired. *----------------------------------------------------------------------------- */ int Tcl_SelectCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { fd_set readFdSet, writeFdSet, exceptFdSet; int readDescCnt = 0, writeDescCnt = 0, exceptDescCnt = 0; FILE **readDescList = NULL,**writeDescList = NULL,**exceptDescList = NULL; fd_set readFdSet2; char *retListArgv [3]; int numSelected, maxFileId = 0, pending; int result = TCL_ERROR; struct timeval timeoutRec; struct timeval *timeoutRecPtr; if (argc < 2) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " readhandles [writehandles] [excepthandles]", " [timeout]", (char *) NULL); return TCL_ERROR; } /* * Parse the file handles and set everything up for the select call. */ FD_ZERO (&readFdSet); FD_ZERO (&writeFdSet); FD_ZERO (&exceptFdSet); readDescCnt = ParseSelectFileList (interp, argv [1], &readFdSet, &readDescList, &maxFileId); if (readDescCnt < 0) goto exitPoint; if (argc > 2) { writeDescCnt = ParseSelectFileList (interp, argv [2], &writeFdSet, &writeDescList, &maxFileId); if (writeDescCnt < 0) goto exitPoint; } if (argc > 3) { exceptDescCnt = ParseSelectFileList (interp, argv [3], &exceptFdSet, &exceptDescList, &maxFileId); if (exceptDescCnt < 0) goto exitPoint; } /* * Get the time out. Zero is different that not specified. */ timeoutRecPtr = NULL; if ((argc > 4) && (argv [4][0] != '\0')) { double timeout, seconds, microseconds; if (Tcl_GetDouble (interp, argv [4], &timeout) != TCL_OK) goto exitPoint; if (timeout < 0) { Tcl_AppendResult (interp, "timeout must be greater than or equal", " to zero", (char *) NULL); goto exitPoint; } seconds = floor (timeout); microseconds = (timeout - seconds) * 1000000.0; timeoutRec.tv_sec = seconds; timeoutRec.tv_usec = microseconds; timeoutRecPtr = &timeoutRec; } /* * Check if any data is pending in the read stdio buffers. If there is, * then do the select, but don't block in it. */ pending = FindPendingData (readDescCnt, readDescList, &readFdSet2); if (pending) { timeoutRec.tv_sec = 0; timeoutRec.tv_usec = 0; timeoutRecPtr = &timeoutRec; } /* * All set, do the select. */ numSelected = select (maxFileId + 1, &readFdSet, &writeFdSet, &exceptFdSet, timeoutRecPtr); if (numSelected < 0) { interp->result = Tcl_UnixError (interp); goto exitPoint; } /* * Return the result, either a 3 element list, or leave the result * empty if the timeout occured. */ if (numSelected > 0) { retListArgv [0] = ReturnSelectedFileList (&readFdSet, &readFdSet2, readDescCnt, readDescList); retListArgv [1] = ReturnSelectedFileList (&writeFdSet, NULL, writeDescCnt, writeDescList); retListArgv [2] = ReturnSelectedFileList (&exceptFdSet, NULL, exceptDescCnt, exceptDescList); Tcl_SetResult (interp, Tcl_Merge (3, retListArgv), TCL_DYNAMIC); ckfree ((char *) retListArgv [0]); ckfree ((char *) retListArgv [1]); ckfree ((char *) retListArgv [2]); } result = TCL_OK; exitPoint: if (readDescList != NULL) ckfree ((char *) readDescList); if (writeDescList != NULL) ckfree ((char *) writeDescList); if (exceptDescList != NULL) ckfree ((char *) exceptDescList); return result; } #else /* *----------------------------------------------------------------------------- * * Tcl_SelectCmd -- * Dummy select command that returns an error for systems that don't * have select. *----------------------------------------------------------------------------- */ int Tcl_SelectCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { Tcl_AppendResult (interp, "select is not available on this version of Unix", (char *) NULL); return TCL_ERROR; } #endif micropolis-activity/src/tclx/src/tclxmsgc.c0000664000076400007640000002263110724145723021357 0ustar simcitysimcity/* * tclXmsgcat.c -- * * Contains commands for accessing XPG/3 message catalogs. If real XPG/3 * message catalogs are not available, the default string is returned. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXmsgcat.c,v 2.0 1992/10/16 04:51:02 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclxint.h" #ifdef TCL_HAVE_CATGETS #include #else typedef int nl_catd; #endif /* TCL_HAVE_CATGETS */ static int ParseFailOption _ANSI_ARGS_((Tcl_Interp *interp, CONST char *optionStr, int *failPtr)); static int CatOpFailed _ANSI_ARGS_((Tcl_Interp *interp, CONST char *errorMsg)); /* * Message catalog table is global, so it is shared between all interpreters * in the same process. */ static void_pt msgCatTblPtr = NULL; #ifndef TCL_HAVE_CATGETS /* *----------------------------------------------------------------------------- * * catopen -- * A stub to use when message catalogs are not available. * * Results: * Always returns the default string. * *----------------------------------------------------------------------------- */ static nl_catd catopen (name, oflag) char *name; int oflag; { return (nl_catd) -1; } /* *----------------------------------------------------------------------------- * * catgets -- * A stub to use when message catalogs are not available. * * Results: * Always returns -1. * *----------------------------------------------------------------------------- */ static char * catgets (catd, set_num, msg_num, defaultStr) nl_catd catd; int set_num, msg_num; char *defaultStr; { return defaultStr; } /* *----------------------------------------------------------------------------- * * catclose -- * A stub to use when message catalogs are not available. * * Results: * Always returns -1. * *----------------------------------------------------------------------------- */ static int catclose (catd) nl_catd catd; { return -1; } #endif /* TCL_HAVE_CATGETS */ /* *----------------------------------------------------------------------------- * * ParseFailOption -- * Parse the -fail/-nofail option, if specified. * * Results: * Standard Tcl results. * *----------------------------------------------------------------------------- */ static int ParseFailOption (interp, optionStr, failPtr) Tcl_Interp *interp; CONST char *optionStr; int *failPtr; { if (STREQU ("-fail", ((char *) optionStr))) *failPtr = TRUE; else if (STREQU ("-nofail", ((char *) optionStr))) *failPtr = FALSE; else { Tcl_AppendResult (interp, "Expected option of `-fail' or ", "`-nofail', got: `", optionStr, "'", (char *) NULL); return TCL_ERROR; } return TCL_OK; } /* *----------------------------------------------------------------------------- * * CatOpFailed -- * Handles failures of catopen and catclose. If message catalogs are * available, if returns the supplied message. If message are not * available, it returns a message indicating that message stubs are used. * It is not specified by XPG/3 how to get the details of a message catalog * open or close failure. * * Results: * Always returns TCL_ERROR; * *----------------------------------------------------------------------------- */ static int CatOpFailed (interp, errorMsg) Tcl_Interp *interp; CONST char *errorMsg; { #ifdef TCL_HAVE_CATGETS Tcl_AppendResult (interp, errorMsg, (char *) NULL); #else Tcl_AppendResult (interp, "the message catalog facility is not available,", " default string is always returned", (char *) NULL); #endif /* TCL_HAVE_CATGETS */ return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * Tcl_CatopenCmd -- * Implements the TCL echo command: * catopen [-fail|-nofail] catname * * Results: * Standard Tcl results. * *----------------------------------------------------------------------------- */ static int Tcl_CatopenCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { int fail; nl_catd catDesc; nl_catd *catDescPtr; if ((argc < 2) || (argc > 3)) { Tcl_AppendResult (interp, argv [0], " [-fail|-nofail] catname", (char *) NULL); return TCL_ERROR; } if (argc == 3) { if (ParseFailOption (interp, argv [1], &fail) != TCL_OK) return TCL_ERROR; } else fail = FALSE; catDesc = catopen (argv [argc - 1], 0); if ((catDesc == (nl_catd) -1) && fail) return CatOpFailed (interp, "open of message catalog failed"); catDescPtr = Tcl_HandleAlloc (msgCatTblPtr, interp->result); *catDescPtr = catDesc; return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_CatgetsCmd -- * Implements the TCL echo command: * catgets catHandle setnum msgnum defaultstr * * Results: * Standard Tcl results. * *----------------------------------------------------------------------------- */ static int Tcl_CatgetsCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { nl_catd *catDescPtr; int msgSetNum, msgNum; char *localMsg; if (argc != 5) { Tcl_AppendResult (interp, argv [0], " catHandle setnum msgnum ", "defaultstr", (char *) NULL); return TCL_ERROR; } catDescPtr = Tcl_HandleXlate (interp, msgCatTblPtr, argv [1]); if (catDescPtr == NULL) return TCL_ERROR; if (Tcl_GetInt (interp, argv [2], &msgSetNum) != TCL_OK) return TCL_ERROR; if (Tcl_GetInt (interp, argv [3], &msgNum) != TCL_OK) return TCL_ERROR; localMsg = catgets (*catDescPtr, msgSetNum, msgNum, argv [4]); Tcl_SetResult (interp, localMsg, TCL_VOLATILE); return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_CatcloseCmd -- * Implements the TCL echo command: * catclose [-fail|-nofail] catHandle * * Results: * Standard Tcl results. * *----------------------------------------------------------------------------- */ static int Tcl_CatcloseCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { int fail; nl_catd *catDescPtr; if ((argc < 2) || (argc > 3)) { Tcl_AppendResult (interp, argv [0], " [-fail|-nofail] catHandle", (char *) NULL); return TCL_ERROR; } if (argc == 3) { if (ParseFailOption (interp, argv [1], &fail) != TCL_OK) return TCL_ERROR; } else fail = FALSE; catDescPtr = Tcl_HandleXlate (interp, msgCatTblPtr, argv [argc - 1]); if (catDescPtr == NULL) return TCL_ERROR; if ((catclose (*catDescPtr) < 0) && fail) return CatOpFailed (interp, "close of message catalog failed"); Tcl_HandleFree (msgCatTblPtr, catDescPtr); return TCL_OK; } /* *----------------------------------------------------------------------------- * * MsgCatCleanUp -- * Decrements the use count on the globals when a command is deleted. * If it goes to zero, all resources are released. * *----------------------------------------------------------------------------- */ static void MsgCatCleanUp (clientData) ClientData clientData; { nl_catd *catDescPtr; int walkKey; if (Tcl_HandleTblUseCount (msgCatTblPtr, -1) > 0) return; walkKey = -1; while ((catDescPtr = Tcl_HandleWalk (msgCatTblPtr, &walkKey)) != NULL) catclose (*catDescPtr); Tcl_HandleTblRelease (msgCatTblPtr); } /* *----------------------------------------------------------------------------- * * Tcl_InitMsgCat -- * Initialize the Tcl XPG/3 message catalog support faility. * *----------------------------------------------------------------------------- */ void Tcl_InitMsgCat (interp) Tcl_Interp *interp; { if (msgCatTblPtr == NULL) msgCatTblPtr = Tcl_HandleTblInit ("msgcat", sizeof (nl_catd), 6); (void) Tcl_HandleTblUseCount (msgCatTblPtr, 2); /* 3 commands total */ /* * Initialize the commands. */ Tcl_CreateCommand (interp, "catopen", Tcl_CatopenCmd, (ClientData)NULL, MsgCatCleanUp); Tcl_CreateCommand (interp, "catgets", Tcl_CatgetsCmd, (ClientData)NULL, MsgCatCleanUp); Tcl_CreateCommand (interp, "catclose", Tcl_CatcloseCmd, (ClientData)NULL, MsgCatCleanUp); } micropolis-activity/src/tclx/src/tclxlib.c0000664000076400007640000013275310724145723021203 0ustar simcitysimcity/* * tclXlib.c -- * * Tcl commands to load libraries of Tcl code. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXlib.c,v 2.0 1992/10/16 04:50:55 markd Rel $ *----------------------------------------------------------------------------- */ /*----------------------------------------------------------------------------- * * The following data structures are used by the Tcl library code. All * structures are kept in the global array TCLENV, so that Tcl procs may be * written to access them. * * o fileId - This is a small string used to uniquely identify a file, it is * in the form "@$dev:$inode", where dev and inode are the values obtained * from stat. * * o TCLENV(fileId} filePath - This entry translates a file id to an * file name, which may be an absolute path to a file or the name of * a file to find by searching a path. * * o TCLENV(PKG:$packageName) {$fileId $offset $length} - This entry * translates a package name into a fileId of the file containing the * package and the byte and offset length of the package within the file. * * o TCLENV(PROC:$proc) {P $packageName} - This form of a procedure entry * translates a procedure into a package name. * * o TCLENV(PROC:$proc) {F $fileName} 0 - This form of a procedure entry * translates a procedure into a file name. The file name may be an * absolute path to the file or a file to be found by searching TCLPATH * or auto_path. *----------------------------------------------------------------------------- */ #include "tclxint.h" typedef char fileId_t [64]; /* * Prototypes of internal functions. */ static int EvalFilePart _ANSI_ARGS_((Tcl_Interp *interp, char *fileName, long offset, unsigned length)); static char * MakeAbsFile _ANSI_ARGS_((Tcl_Interp *interp, char *fileName, char *buffer, int bufferSize)); static int GenerateFileId _ANSI_ARGS_((Tcl_Interp *interp, char *filePath, fileId_t fileId)); static int SetTCLENVFileIdEntry _ANSI_ARGS_((Tcl_Interp *interp, fileId_t fileId, char *filePath)); static int CheckTCLENVFileIdEntry _ANSI_ARGS_((Tcl_Interp *interp, char *filePath)); static char * GetTCLENVFileIdEntry _ANSI_ARGS_((Tcl_Interp *interp, fileId_t fileId)); static int SetTCLENVPkgEntry _ANSI_ARGS_((Tcl_Interp *interp, char *packageName, fileId_t fileId, char *offset, char *length)); static int GetTCLENVPkgEntry _ANSI_ARGS_((Tcl_Interp *interp, char *packageName, char *fileId, long *offsetPtr, unsigned *lengthPtr)); static int SetTCLENVProcEntry _ANSI_ARGS_((Tcl_Interp *interp, char *procName, char *type, char *location)); static int GetTCLENVProcEntry _ANSI_ARGS_((Tcl_Interp *interp, char *procName, char *typePtr, char **locationPtr)); static int ProcessIndexFile _ANSI_ARGS_((Tcl_Interp *interp, char *tlibFilePath, char *tndxFilePath)); static int BuildPackageIndex _ANSI_ARGS_((Tcl_Interp *interp, char *tlibFilePath)); static int LoadPackageIndex _ANSI_ARGS_((Tcl_Interp *interp, char *tlibFilePath, int pathLen, int dirLen)); static int LoadOusterIndex _ANSI_ARGS_((Tcl_Interp *interp, char *indexFilePath, int dirLen)); static int LoadDirIndexes _ANSI_ARGS_((Tcl_Interp *interp, char *dirName)); static int LoadPackageIndexes _ANSI_ARGS_((Tcl_Interp *interp, char *path)); static int LoadProc _ANSI_ARGS_((Tcl_Interp *interp, char *procName, int *foundPtr)); /* *----------------------------------------------------------------------------- * * EvalFilePart -- * * Read in a byte range of a file and evaulate it. * * Parameters: * o interp (I) - A pointer to the interpreter, error returned in result. * o fileName (I) - The file to evaulate. * o offset (I) - Byte offset into the file of the area to evaluate * o length (I) - Number of bytes to evaulate.. * * Results: * A standard Tcl result. *----------------------------------------------------------------------------- */ static int EvalFilePart (interp, fileName, offset, length) Tcl_Interp *interp; char *fileName; long offset; unsigned length; { Interp *iPtr = (Interp *) interp; int fileNum, result; struct stat statBuf; char *oldScriptFile, *cmdBuffer; if (fileName [0] == '~') if ((fileName = Tcl_TildeSubst (interp, fileName)) == NULL) return TCL_ERROR; fileNum = open (fileName, O_RDONLY, 0); if (fileNum < 0) { Tcl_AppendResult (interp, "open failed on: ", fileName, ": ", Tcl_UnixError (interp), (char *) NULL); return TCL_ERROR; } if (fstat (fileNum, &statBuf) == -1) goto accessError; if ((statBuf.st_size < offset + length) || (offset < 0)) { Tcl_AppendResult (interp, "range to eval outside of file bounds \"", fileName, "\"", (char *) NULL); close (fileNum); return TCL_ERROR; } if (lseek (fileNum, offset, 0) < 0) goto accessError; cmdBuffer = ckalloc (length + 1); if (read (fileNum, cmdBuffer, length) != length) goto accessError; cmdBuffer [length] = '\0'; if (close (fileNum) != 0) goto accessError; oldScriptFile = iPtr->scriptFile; iPtr->scriptFile = fileName; result = Tcl_Eval (interp, cmdBuffer, 0, (char **) NULL); iPtr->scriptFile = oldScriptFile; ckfree (cmdBuffer); if (result != TCL_ERROR) return TCL_OK; /* * An error occured. Record information telling where it came from. */ { char buf [100]; sprintf (buf, "\n (file \"%.50s\" line %d)", fileName, interp->errorLine); Tcl_AddErrorInfo(interp, buf); } return TCL_ERROR; /* * Errors accessing the file once its opened are handled here. */ accessError: Tcl_AppendResult (interp, "error accessing: ", fileName, ": ", Tcl_UnixError (interp), (char *) NULL); close (fileNum); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * MakeAbsFile -- * * Convert a file name to an absolute path. This handles tilde substitution * and preappend the current directory name if the path is relative. * * Parameters * o interp (I) - A pointer to the interpreter, error returned in result. * o fileName (I) - File name (should not start with a "/"). * o buffer (O) - Buffer to store string in, if it will fit. * o bufferSize (I) - Size of buffer. * Returns: * A pointer to the file name. If the string would fit in buffer, then * a pointer to buffer is returned, otherwise a dynamicaly allocated file * name. NULL is returned if an error occured. *----------------------------------------------------------------------------- */ static char * MakeAbsFile (interp, fileName, buffer, bufferSize) Tcl_Interp *interp; char *fileName; char *buffer; int bufferSize; { char curDir [MAXPATHLEN+1]; char *pathName; int pathLen; if (fileName [0] == '~') { fileName = Tcl_TildeSubst (interp, fileName); if (fileName == NULL) return NULL; pathLen = strlen (fileName); if (pathLen < bufferSize) pathName = buffer; else pathName = ckalloc (pathLen + 1); strcpy (pathName, fileName); return pathName; } #if TCL_GETWD if (getwd (curDir) == NULL) { Tcl_AppendResult (interp, "error getting working directory name: ", curDir, (char *) NULL); } #else if (getcwd (curDir, MAXPATHLEN) == 0) { Tcl_AppendResult (interp, "error getting working directory name: ", Tcl_UnixError (interp), (char *) NULL); } #endif pathLen = strlen (curDir) + strlen (fileName) + 1; /* For `/' */ if (pathLen < bufferSize) pathName = buffer; else pathName = ckalloc (pathLen + 1); strcpy (pathName, curDir); strcat (pathName, "/"); strcat (pathName, fileName); return pathName; } /* *----------------------------------------------------------------------------- * * GenerateFileId -- * * Given a path to a file, generate its file Id, in the form: * * "@dev:inode" * * Parameters * o interp (I) - A pointer to the interpreter, error returned in result. * o filepath (I) - Absolute path to the file. * o fileId (O) - File id is returned here. * Returns: * TCL_OK or TCL_ERROR. *----------------------------------------------------------------------------- */ static int GenerateFileId (interp, filePath, fileId) Tcl_Interp *interp; char *filePath; fileId_t fileId; { struct stat statInfo; if (stat (filePath, &statInfo) < 0) { Tcl_AppendResult (interp, "stat of \"", filePath, "\" failed: ", Tcl_UnixError (interp), (char *) NULL); return TCL_ERROR; } sprintf (fileId, "@%d:%d", statInfo.st_dev, statInfo.st_ino); return TCL_OK; } /* *----------------------------------------------------------------------------- * * SetTCLENVFileIdEntry -- * * Set a file entry in the TCLENV array for a file path in the form: * * TCLENV(@dev:inode) filepath * * This entry translates a dev:info into a full file path. * * Parameters * o interp (I) - A pointer to the interpreter, error returned in result. * o fileId (I) - The file Id for the file. * o filepath (I) - Absolute path to the file. * Returns: * TCL_OK or TCL_ERROR. *----------------------------------------------------------------------------- */ static int SetTCLENVFileIdEntry (interp, fileId, filePath) Tcl_Interp *interp; fileId_t fileId; char *filePath; { if (Tcl_SetVar2 (interp, "TCLENV", fileId, filePath, TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG) == NULL) return TCL_ERROR; return TCL_OK; } /* *----------------------------------------------------------------------------- * * CheckTCLENVFileIdEntry -- * * Check if there is a file entry in for the specified file. * * Parameters * o interp (I) - A pointer to the interpreter. * o filePath (I) - Absolute path to the library file. * Returns: * TRUE is returned if the entry exists, FALSE if it doesn't. *----------------------------------------------------------------------------- */ static int CheckTCLENVFileIdEntry (interp, filePath) Tcl_Interp *interp; char *filePath; { fileId_t fileId; /* * If we can't generate the Id (stat failed), then just say it doesn't * exists, other, complain later when an attempt is made to process it. */ if (GenerateFileId (interp, filePath, fileId) != TCL_OK) { Tcl_ResetResult (interp); return FALSE; } if (Tcl_GetVar2 (interp, "TCLENV", fileId, TCL_GLOBAL_ONLY) == NULL) return FALSE; return TRUE; } /* *----------------------------------------------------------------------------- * * GetTCLENVFileIdEntry -- * * Translate a file id into a file path. * * Parameters * o interp (I) - A pointer to the interpreter. * o fileId (I) - The file identifier, in the form: "@$dev:$inode" * Returns: * A pointer to the absolute path to the library file is returned * here. This pointer remains valid until the TCLENV entry is changed, * do not free. *----------------------------------------------------------------------------- */ static char * GetTCLENVFileIdEntry (interp, fileId) Tcl_Interp *interp; fileId_t fileId; { char *filePath; filePath = Tcl_GetVar2 (interp, "TCLENV", fileId, TCL_GLOBAL_ONLY); if (filePath == NULL) { Tcl_AppendResult (interp, "TCLENV file id entry not found for: \"", fileId, "\"", (char *) NULL); return NULL; } return filePath; } /* *----------------------------------------------------------------------------- * * SetTCLENVPkgEntry -- * * Set the package entry in the TCLENV array for a package in the form: * * TCLENV(PKG:$packageName) [list $fileId $offset $length] * * Duplicate package names are rejected. * * Parameters * o interp (I) - A pointer to the interpreter, error returned in result. * o packageName (I) - Package name. * o fileId (I) - File id for the file. * o offset (I) - String containing the numeric start of the package. * o length (I) - Strign containing the numeric length of the package. * Returns: * TCL_OK,r TCL_ERROR of TCL_CONTINUE if the package name is already defined * and should be skipped. *----------------------------------------------------------------------------- */ static int SetTCLENVPkgEntry (interp, packageName, fileId, offset, length) Tcl_Interp *interp; char *packageName; fileId_t fileId; char *offset; char *length; { int nameLen; char indexBuffer [64], *indexPtr; char *pkgDataArgv [3], *dataStr, *setResult; nameLen = strlen (packageName) + 5; /* includes "PKG:" and '\0' */ if (nameLen <= sizeof (indexBuffer)) indexPtr = indexBuffer; else indexPtr = ckalloc (nameLen); strcpy (indexPtr, "PKG:"); strcpy (indexPtr + 4, packageName); /* * Check for duplicate package name. */ if (Tcl_GetVar2 (interp, "TCLENV", indexPtr, TCL_GLOBAL_ONLY) != NULL) { if (indexPtr != indexBuffer) ckfree (indexPtr); return TCL_CONTINUE; } pkgDataArgv [0] = fileId; pkgDataArgv [1] = offset; pkgDataArgv [2] = length; dataStr = Tcl_Merge (3, pkgDataArgv); setResult = Tcl_SetVar2 (interp, "TCLENV", indexPtr, dataStr, TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG); ckfree (dataStr); if (indexPtr != indexBuffer) ckfree (indexPtr); return (setResult == NULL) ? TCL_ERROR : TCL_OK; } /* *----------------------------------------------------------------------------- * * GetTCLENVPkgEntry -- * * Get the package entry in the TCLENV array for a package. * * Parameters * o interp (I) - A pointer to the interpreter, error returned in result. * o packageName (I) - Package name to find. * o fileId (O) - The fileId for the library file is returned here. * o offsetPtr (O) - Start of the package in the library. * o lengthPtr (O) - Length of the package in the library. * Returns: * TCL_OK or TCL_ERROR. *----------------------------------------------------------------------------- */ static int GetTCLENVPkgEntry (interp, packageName, fileId, offsetPtr, lengthPtr) Tcl_Interp *interp; char *packageName; fileId_t fileId; long *offsetPtr; unsigned *lengthPtr; { int nameLen, pkgDataArgc; char indexBuffer [64], *indexPtr; char *dataStr, **pkgDataArgv = NULL; register char *srcPtr, *destPtr; nameLen = strlen (packageName) + 5; /* includes "PKG:" and '\0' */ if (nameLen <= sizeof (indexBuffer)) indexPtr = indexBuffer; else indexPtr = ckalloc (nameLen); strcpy (indexPtr, "PKG:"); strcpy (indexPtr + 4, packageName); dataStr = Tcl_GetVar2 (interp, "TCLENV", indexPtr, TCL_GLOBAL_ONLY); if (dataStr == NULL) { Tcl_AppendResult (interp, "entry not found in TCLENV for package \"", packageName, "\"", (char *) NULL); if (indexPtr != indexBuffer) ckfree (indexPtr); return TCL_ERROR; } /* * Extract the data from the array entry. */ if (Tcl_SplitList (interp, dataStr, &pkgDataArgc, &pkgDataArgv) != TCL_OK) goto invalidEntry; if (pkgDataArgc != 3) goto invalidEntry; if (strlen (pkgDataArgv [0]) >= sizeof (fileId_t)) goto invalidEntry; strcpy (fileId, pkgDataArgv [0]); if (!Tcl_StrToLong (pkgDataArgv [1], 0, offsetPtr)) goto invalidEntry; if (!Tcl_StrToUnsigned (pkgDataArgv [2], 0, lengthPtr)) goto invalidEntry; ckfree (pkgDataArgv); if (indexPtr != indexBuffer) ckfree (indexPtr); return TCL_OK; /* * Exit point when an invalid entry is found. */ invalidEntry: if (pkgDataArgv != NULL) ckfree (pkgDataArgv); Tcl_ResetResult (interp); Tcl_AppendResult (interp, "invalid entry for package library: TCLENV(", indexPtr,") is \"", dataStr, "\"", (char *) NULL); if (indexPtr != indexBuffer) ckfree (indexPtr); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * SetTCLENVProcEntry -- * * Set the proc entry in the TCLENV array for a package in the form: * * TCLENV(PROC:$proc) [list P $packageName] * or * TCLENV(PROC:$proc) [list F $fileId] * * Parameters * o interp (I) - A pointer to the interpreter, error returned in result. * o procName (I) - The Tcl proc name. * o type (I) - "P" for a package entry or "F" for a file entry. * o location (I) - Either the package name or file name containing the * procedure. * Returns: * TCL_OK or TCL_ERROR. *----------------------------------------------------------------------------- */ static int SetTCLENVProcEntry (interp, procName, type, location) Tcl_Interp *interp; char *procName; char *type; char *location; { int nameLen; char indexBuffer [64], *indexPtr; char *procDataArgv [2], *dataStr, *setResult; nameLen = strlen (procName) + 6; /* includes "PROC:" and '\0' */ if (nameLen <= sizeof (indexBuffer)) indexPtr = indexBuffer; else indexPtr = ckalloc (nameLen); strcpy (indexPtr, "PROC:"); strcpy (indexPtr + 5, procName); procDataArgv [0] = type; procDataArgv [1] = location; dataStr = Tcl_Merge (2, procDataArgv); setResult = Tcl_SetVar2 (interp, "TCLENV", indexPtr, dataStr, TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG); ckfree (dataStr); if (indexPtr != indexBuffer) ckfree (indexPtr); return (setResult == NULL) ? TCL_ERROR : TCL_OK; } /* *----------------------------------------------------------------------------- * * GetTCLENVProcEntry -- * * Get the proc entry in the TCLENV array for a package. * * Parameters * o interp (I) - A pointer to the interpreter, error returned in result. * o procName (I) - The Tcl proc name. * o typePtr (O) - 'P' for a package entry or 'F' for a file entry. This * is a single character result. * o location (O) - Either the package name or the file name. It is * dynamically allocated and must be freed when finished. NULL is * return if the procedure is not found. * Returns: * TCL_OK or TCL_ERROR. *----------------------------------------------------------------------------- */ static int GetTCLENVProcEntry (interp, procName, typePtr, locationPtr) Tcl_Interp *interp; char *procName; char *typePtr; char **locationPtr; { int nameLen, procDataArgc; char indexBuffer [64], *indexPtr; char *dataStr, *setResult, **procDataArgv; register char *srcPtr, *destPtr; nameLen = strlen (procName) + 6; /* includes "PROC:" and '\0' */ if (nameLen <= sizeof (indexBuffer)) indexPtr = indexBuffer; else indexPtr = ckalloc (nameLen); strcpy (indexPtr, "PROC:"); strcpy (indexPtr + 5, procName); dataStr = Tcl_GetVar2 (interp, "TCLENV", indexPtr, TCL_GLOBAL_ONLY); if (dataStr == NULL) { if (indexPtr != indexBuffer) ckfree (indexPtr); *locationPtr = NULL; return TCL_OK; } /* * Extract the data from the array entry. */ if (Tcl_SplitList (interp, dataStr, &procDataArgc, &procDataArgv) != TCL_OK) goto invalidEntry; if ((procDataArgc != 2) || (procDataArgv [0][1] != '\0')) goto invalidEntry; if (!((procDataArgv [0][0] == 'F') || (procDataArgv [0][0] == 'P'))) goto invalidEntry; *typePtr = procDataArgv [0][0]; /* * Now do a nasty trick to save a malloc. Since procDataArgv contains * the string, just move the string to the top and type cast. */ destPtr = (char *) procDataArgv; srcPtr = procDataArgv [1]; while (*srcPtr != '\0') *(destPtr++) = *(srcPtr++); *destPtr = '\0'; *locationPtr = (char *) procDataArgv; if (indexPtr != indexBuffer) ckfree (indexPtr); return TCL_OK; /* * Exit point when an invalid entry is found. */ invalidEntry: if (procDataArgv != NULL) ckfree (procDataArgv); Tcl_ResetResult (interp); Tcl_AppendResult (interp, "invalid entry for procedure: TCLENV(", indexPtr,") is \"", dataStr, "\"", (char *) NULL); if (indexPtr != indexBuffer) ckfree (indexPtr); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * ProcessIndexFile -- * * Open and process a package library index file (.tndx). Creates an * entry in the form: * * TCLENV(PKG:$packageName) [list $fileId $start $len] * * for each package and a entry in the from * * TCLENV(PROC:$proc) [list P $packageName] * * for each entry procedure in a package. If the package is already defined, * it it skipped. * * Parameters * o interp (I) - A pointer to the interpreter, error returned in result. * o tlibFilePath (I) - Absolute path name to the library file. * o tndxFilePath (I) - Absolute path name to the library file index. * Returns: * TCL_OK or TCL_ERROR. *----------------------------------------------------------------------------- */ static int ProcessIndexFile (interp, tlibFilePath, tndxFilePath) Tcl_Interp *interp; char *tlibFilePath; char *tndxFilePath; { fileId_t fileId; FILE *indexFilePtr; dynamicBuf_t lineBuffer; int lineArgc, idx, result; char **lineArgv = NULL; if (GenerateFileId (interp, tlibFilePath, fileId) != TCL_OK) return TCL_ERROR; indexFilePtr = fopen (tndxFilePath, "r"); if (indexFilePtr == NULL) { Tcl_AppendResult (interp, "open failed on: ", tndxFilePath, ": ", Tcl_UnixError (interp), (char *) NULL); return TCL_ERROR; } Tcl_DynBufInit (&lineBuffer); while (TRUE) { switch (Tcl_DynamicFgets (&lineBuffer, indexFilePtr, FALSE)) { case 0: /* EOF */ goto reachedEOF; case -1: /* Error */ Tcl_AppendResult (interp, Tcl_UnixError (interp), (char *) NULL); goto errorExit; } if ((Tcl_SplitList (interp, lineBuffer.ptr, &lineArgc, &lineArgv) != TCL_OK) || (lineArgc < 4)) goto formatError; /* * lineArgv [0] is the package name. * lineArgv [1] is the package offset in the library. * lineArgv [2] is the package length in the library. * lineArgv [3-n] are the entry procedures for the package. */ result = SetTCLENVPkgEntry (interp, lineArgv [0], fileId, lineArgv [1], lineArgv [2]); if (result == TCL_ERROR) goto errorExit; /* * If the package is not duplicated, add the procedures. */ if (result != TCL_CONTINUE) { for (idx = 3; idx < lineArgc; idx++) { if (SetTCLENVProcEntry (interp, lineArgv [idx], "P", lineArgv [0]) != TCL_OK) goto errorExit; } } ckfree (lineArgv); lineArgv = NULL; } reachedEOF: fclose (indexFilePtr); Tcl_DynBufFree (&lineBuffer); if (SetTCLENVFileIdEntry (interp, fileId, tlibFilePath) != TCL_OK) return TCL_ERROR; return TCL_OK; /* * Handle format error in library input line. */ formatError: Tcl_ResetResult (interp); Tcl_AppendResult (interp, "format error in library index \"", tndxFilePath, "\" (", lineBuffer.ptr, ")", (char *) NULL); goto errorExit; /* * Error exit here, releasing resources and closing the file. */ errorExit: if (lineArgv != NULL) ckfree (lineArgv); Tcl_DynBufFree (&lineBuffer); fclose (indexFilePtr); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * BuildPackageIndex -- * * Call the "buildpackageindex" Tcl procedure to rebuild a package index. * If the procedure has not been loaded, then load it. It MUST have an * proc record setup by autoload. * * Parameters * o interp (I) - A pointer to the interpreter, error returned in result. * o tlibFilePath (I) - Absolute path name to the library file. * Returns: * TCL_OK or TCL_ERROR. *----------------------------------------------------------------------------- */ static int BuildPackageIndex (interp, tlibFilePath) Tcl_Interp *interp; char *tlibFilePath; { char *cmdPtr, *initCmd; /* * Load buildpackageindex if it is not loaded */ if (TclFindProc ((Interp *) interp, "buildpackageindex") == NULL) { cmdPtr = "demand_load buildpackageindex"; if (Tcl_Eval (interp, cmdPtr, 0, (char **) NULL) != TCL_OK) return TCL_ERROR; if (!STREQU (interp->result, "1")) { Tcl_ResetResult (interp); interp->result = "can not find \"buildpackageindex\" on \"TCLPATH\""; return TCL_ERROR; } Tcl_ResetResult (interp); } /* * Build the package index. */ initCmd = "buildpackageindex "; cmdPtr = ckalloc (strlen (initCmd) + strlen (tlibFilePath) + 1); strcpy (cmdPtr, initCmd); strcat (cmdPtr, tlibFilePath); if (Tcl_Eval (interp, cmdPtr, 0, (char **) NULL) != TCL_OK) { ckfree (cmdPtr); return TCL_ERROR; } ckfree (cmdPtr); Tcl_ResetResult (interp); return TCL_OK; } /* *----------------------------------------------------------------------------- * * LoadPackageIndex -- * * Load a package .tndx file. Rebuild .tlib if non-existant or out of * date. An entry is made in the TCLENV array indicating that this file * has been loaded. * * Parameters * o interp (I) - A pointer to the interpreter, error returned in result. * o tlibFilePath (I) - Absolute path name to the library file. * o pathLen (I) - Length of tlibFilePath. * o dirLen (I) - The length of the leading directory path in the name. * Returns: * TCL_OK or TCL_ERROR. *----------------------------------------------------------------------------- */ static int LoadPackageIndex (interp, tlibFilePath, pathLen, dirLen) Tcl_Interp *interp; char *tlibFilePath; int pathLen; int dirLen; { char *tndxFilePath, tndxPathBuf [64], *msg; struct stat tlibStat; struct stat tndxStat; if (pathLen < sizeof (tndxPathBuf)) tndxFilePath = tndxPathBuf; else tndxFilePath = ckalloc (pathLen + 1); strcpy (tndxFilePath, tlibFilePath); tndxFilePath [pathLen - 3] = 'n'; tndxFilePath [pathLen - 2] = 'd'; tndxFilePath [pathLen - 1] = 'x'; /* * Get library's modification time. If the file can't be accessed, set * time so the library does not get built. Other code will report the * error. */ if (stat (tlibFilePath, &tlibStat) < 0) tlibStat.st_mtime = MAXINT; /* * Get the time for the index. If the file does not exists or is * out of date, rebuild it. */ if ((stat (tndxFilePath, &tndxStat) < 0) || (tndxStat.st_mtime < tlibStat.st_mtime)) { if (BuildPackageIndex (interp, tlibFilePath) != TCL_OK) goto errorExit; } if (ProcessIndexFile (interp, tlibFilePath, tndxFilePath) != TCL_OK) goto errorExit; if (tndxFilePath != tndxPathBuf) ckfree (tndxFilePath); return TCL_OK; errorExit: if (tndxFilePath != tndxPathBuf) ckfree (tndxFilePath); msg = ckalloc (strlen (tlibFilePath) + 60); strcpy (msg, "\n while loading Tcl package library index \""); strcat (msg, tlibFilePath); strcat (msg, "\""); Tcl_AddErrorInfo (interp, msg); ckfree (msg); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * LoadOusterIndex -- * * Load a standard Tcl index (tclIndex). An entry is made in the TCLENV * array indicating that this file has been loaded. * * Parameters * o interp (I) - A pointer to the interpreter, error returned in result. * o indexFilePath (I) - Absolute path name to the tclIndex file. * o dirLen (I) - The length of the directory component of indexFilePath. * Returns: * TCL_OK or TCL_ERROR. *----------------------------------------------------------------------------- */ static int LoadOusterIndex (interp, indexFilePath, dirLen) Tcl_Interp *interp; char *indexFilePath; int dirLen; { FILE *indexFilePtr; fileId_t fileId; dynamicBuf_t lineBuffer; int lineArgc, result, filePathLen; char **lineArgv = NULL, *filePath, filePathBuf [64], *msg; indexFilePtr = fopen (indexFilePath, "r"); if (indexFilePtr == NULL) { Tcl_AppendResult (interp, "open failed on: ", indexFilePath, ": ", Tcl_UnixError (interp), (char *) NULL); return TCL_ERROR; } Tcl_DynBufInit (&lineBuffer); while (TRUE) { switch (Tcl_DynamicFgets (&lineBuffer, indexFilePtr, FALSE)) { case 0: /* EOF */ goto reachedEOF; case -1: /* Error */ Tcl_AppendResult (interp, "read filed on: ", indexFilePath, ": ", Tcl_UnixError (interp), (char *) NULL); goto errorExit; } if ((lineBuffer.ptr [0] == '\0') || (lineBuffer.ptr [0] == '#')) continue; if (Tcl_SplitList (interp, lineBuffer.ptr, &lineArgc, &lineArgv) != TCL_OK) goto formatError; if (! ((lineArgc == 0) || (lineArgc == 2))) goto formatError; if (lineArgc != 0) { filePathLen = strlen (lineArgv [1]) + dirLen + 1; if (filePathLen < sizeof (filePathBuf)) filePath = filePathBuf; else filePath = ckalloc (filePathLen + 1); strncpy (filePath, indexFilePath, dirLen + 1); strcpy (filePath + dirLen + 1, lineArgv [1]); result = SetTCLENVProcEntry (interp, lineArgv [0], "F", filePath); if (filePath != filePathBuf) ckfree (filePath); if (result != TCL_OK) goto errorExit; } ckfree (lineArgv); lineArgv = NULL; } reachedEOF: Tcl_DynBufFree (&lineBuffer); fclose (indexFilePtr); if (GenerateFileId (interp, indexFilePath, fileId) != TCL_OK) return TCL_ERROR; if (SetTCLENVFileIdEntry (interp, fileId, indexFilePath) != TCL_OK) return TCL_ERROR; return TCL_OK; /* * Handle format error in library input line. If data is already in the * result, its assumed to be the error that brought us here. */ formatError: if (interp->result [0] != '\0') Tcl_AppendResult (interp, "\n", (char *) NULL); Tcl_AppendResult (interp, "format error in library index \"", indexFilePath, "\" (", lineBuffer.ptr, ")", (char *) NULL); /* * Error exit here, releasing resources and closing the file. */ errorExit: if (lineArgv != NULL) ckfree (lineArgv); Tcl_DynBufFree (&lineBuffer); fclose (indexFilePtr); msg = ckalloc (strlen (indexFilePath) + 45); strcpy (msg, "\n while loading Tcl procedure index \""); strcat (msg, indexFilePath); strcat (msg, "\""); Tcl_AddErrorInfo (interp, msg); ckfree (msg); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * LoadDirIndexes -- * * Load the indexes for all package library (.tlib) or a Ousterhout * "tclIndex" file in a directory. Nonexistent or unreadable directories * are skipped. * * Parameters * o interp (I) - A pointer to the interpreter, error returned in result. * o dirName (I) - The absolute path name of the directory to search for * libraries. * Results: * A standard Tcl result. *----------------------------------------------------------------------------- */ static int LoadDirIndexes (interp, dirName) Tcl_Interp *interp; char *dirName; { DIR *dirPtr; struct dirent *entryPtr; int dirLen, nameLen; char *filePath = NULL; int filePathSize = 0; dirLen = strlen (dirName); dirPtr = opendir (dirName); if (dirPtr == NULL) return TCL_OK; /* Skip directory */ while (TRUE) { entryPtr = readdir (dirPtr); if (entryPtr == NULL) break; nameLen = strlen (entryPtr->d_name); if ((nameLen > 5) && ((STREQU (entryPtr->d_name + nameLen - 5, ".tlib")) || (STREQU (entryPtr->d_name, "tclIndex")))) { /* * Expand the filePath buffer if necessary (always allow extra). */ if ((nameLen + dirLen + 2) > filePathSize) { if (filePath != NULL) ckfree (filePath); filePathSize = nameLen + dirLen + 2 + 16; filePath = ckalloc (filePathSize); strcpy (filePath, dirName); filePath [dirLen] = '/'; } strcpy (filePath + dirLen + 1, entryPtr->d_name); /* * Skip index if it has been loaded before or if it can't be * accessed. */ if (CheckTCLENVFileIdEntry (interp, filePath) || (access (filePath, R_OK) < 0)) continue; if (entryPtr->d_name [nameLen - 5] == '.') { if (LoadPackageIndex (interp, filePath, dirLen + nameLen + 1, dirLen) != TCL_OK) goto errorExit; } else { if (LoadOusterIndex (interp, filePath, dirLen) != TCL_OK) goto errorExit; } } } if (filePath != NULL) ckfree (filePath); closedir (dirPtr); return TCL_OK; errorExit: if (filePath != NULL) ckfree (filePath); closedir (dirPtr); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * LoadPackageIndexes -- * * Loads the all indexes for all package libraries (.tlib)* or a * Ousterhout "tclIndex" files found in all directories in the path. * If an index has already been loaded, it will not be reloaded. * Non-existent or unreadable directories are skipped. * * Results: * A standard Tcl result. Tcl array variable TCLENV is updated to * indicate the procedures that were defined in the library. * *----------------------------------------------------------------------------- */ static int LoadPackageIndexes (interp, path) Tcl_Interp *interp; char *path; { char *dirName, dirNameBuf [64]; int idx, dirLen, pathArgc, status; char **pathArgv; if (Tcl_SplitList (interp, path, &pathArgc, &pathArgv) != TCL_OK) return TCL_OK; for (idx = 0; idx < pathArgc; idx++) { /* * Get the absolute dir name. if the conversion fails (most likely * invalid "~") or thje directory cann't be read, skip it. */ dirName = pathArgv [idx]; if (dirName [0] != '/') { dirName = MakeAbsFile (interp, dirName, dirNameBuf, sizeof (dirNameBuf)); if (dirName == NULL) continue; } if (access (dirName, X_OK) == 0) status = LoadDirIndexes (interp, dirName); else status = TCL_OK; if ((dirName != pathArgv [idx]) && (dirName != dirNameBuf)) ckfree (dirName); if (status != TCL_OK) goto errorExit; } ckfree (pathArgv); return TCL_OK; errorExit: ckfree (pathArgv); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * LoadProc -- * * Attempt to load a procedure (or command) by checking the TCLENV * array for its location (either in a file or package library). * * Parameters * o interp (I) - A pointer to the interpreter, error returned in result. * o procName (I) - The name of the procedure (or command) to load * libraries. * o foundPtr (O) - TRUE is returned if the procedure or command was * loaded, FALSE if it was not. * Results: * A standard Tcl result. * *----------------------------------------------------------------------------- */ static int LoadProc (interp, procName, foundPtr) Tcl_Interp *interp; char *procName; int *foundPtr; { Interp *iPtr = (Interp *) interp; char type, *location, *filePath, *cmdPtr, cmdBuf [80]; int cmdLen, result; long offset; unsigned length; fileId_t fileId; Tcl_HashEntry *cmdEntryPtr; if (GetTCLENVProcEntry (interp, procName, &type, &location) != TCL_OK) return TCL_ERROR; if (location == NULL) { *foundPtr = FALSE; return TCL_OK; } /* * If this is a file entry (type = 'F'), location is a file name or * absolute file path. If it's an absolute path, just eval it, otherwise * load the source using the "load" procdure (still in Tcl). If this is a * package entry, location is a package name. Source part of the package * library (Must look up the file, offset and length in the package entry * in TCLENV). */ if (type == 'F') { if (location [0] == '/') { result = Tcl_EvalFile (interp, location); } else { cmdLen = strlen (location) + 5; if (cmdLen < sizeof (cmdBuf)) cmdPtr = cmdBuf; else cmdPtr = ckalloc (cmdLen + 1); strcpy (cmdPtr, "load "); strcat (cmdPtr, location); result = Tcl_Eval (interp, cmdPtr, 0, NULL); if (cmdPtr != cmdBuf) ckfree (cmdPtr); } } else { result = GetTCLENVPkgEntry (interp, location, fileId, &offset, &length); if (result == TCL_OK) { filePath = GetTCLENVFileIdEntry (interp, fileId); if (filePath == NULL) result = TCL_ERROR; } if (result == TCL_OK) result = EvalFilePart (interp, filePath, offset, length); } ckfree (location); /* * If we are ok to this point, make sure that the procedure or command is * actually loaded. */ if (result == TCL_OK) { cmdEntryPtr = Tcl_FindHashEntry (&iPtr->commandTable, procName); *foundPtr = (cmdEntryPtr != NULL); } return result; } /* *----------------------------------------------------------------------------- * * Tcl_LoadlibindexCmd -- * * This procedure is invoked to process the "Loadlibindex" Tcl command: * * loadlibindex libfile * * which loads the index for a package library (.tlib) or a Ousterhout * "tclIndex" file. * * Results: * A standard Tcl result. Tcl array variable TCLENV is updated to * indicate the procedures that were defined in the library. * *----------------------------------------------------------------------------- */ int Tcl_LoadlibindexCmd (dummy, interp, argc, argv) ClientData dummy; Tcl_Interp *interp; int argc; char **argv; { char *pathName, pathNameBuf [64]; int pathLen, dirLen; if (argc != 2) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " libFile", (char *) NULL); return TCL_ERROR; } pathName = argv [1]; if (pathName [0] != '/') { pathName = MakeAbsFile (interp, pathName, pathNameBuf, sizeof (pathNameBuf)); if (pathName == NULL) return TCL_ERROR; } /* * Find the length of the directory name. Validate that we have a .tlib * extension or file name is "tclIndex" and call the routine to process * the specific type of index. */ pathLen = strlen (pathName); for (dirLen = pathLen - 1; pathName [dirLen] != '/'; dirLen--) continue; if ((pathLen > 5) && (pathName [pathLen - 5] == '.')) { if (!STREQU (pathName + pathLen - 5, ".tlib")) goto invalidName; if (LoadPackageIndex (interp, pathName, pathLen, dirLen) != TCL_OK) goto errorExit; } else { if (!STREQU (pathName + dirLen, "/tclIndex")) goto invalidName; if (LoadOusterIndex (interp, pathName, dirLen) != TCL_OK) goto errorExit; } if ((pathName != argv [1]) && (pathName != pathNameBuf)) ckfree (pathName); return TCL_OK; invalidName: Tcl_AppendResult (interp, "invalid library name, must have an extension ", "of \".tlib\" or the name \"tclIndex\", got \"", argv [1], "\"", (char *) NULL); errorExit: if ((pathName != argv [1]) && (pathName != pathNameBuf)) ckfree (pathName); return TCL_ERROR;; } /* *----------------------------------------------------------------------------- * * Tcl_Demand_loadCmd -- * * This procedure is invoked to process the "demand_load" Tcl command: * * demand_load proc * * which searchs the TCLENV tables for the specified procedure. If it * is not found, an attempt is made to load unloaded libraries, first * the variable "TCLPATH" is searched. If the procedure is not defined * after that, then "auto_path" is searched. * * Results: * A standard Tcl result. * *----------------------------------------------------------------------------- */ int Tcl_Demand_loadCmd (dummy, interp, argc, argv) ClientData dummy; Tcl_Interp *interp; int argc; char **argv; { int found; char *path, *msg; if (argc != 2) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " procedure", (char *) NULL); return TCL_ERROR; } if (LoadProc (interp, argv [1], &found) != TCL_OK) goto errorExit; if (found) { interp->result = "1"; return TCL_OK; } /* * Slow path, load the libraries indices on "TCLPATH". */ path = Tcl_GetVar (interp, "TCLPATH", TCL_GLOBAL_ONLY); if (path != NULL) { if (LoadPackageIndexes (interp, path) != TCL_OK) goto errorExit; if (LoadProc (interp, argv [1], &found) != TCL_OK) goto errorExit; if (found) { interp->result = "1"; return TCL_OK; } } /* * Final gasp, check the "auto_path" */ path = Tcl_GetVar (interp, "auto_path", TCL_GLOBAL_ONLY); if (path != NULL) { if (LoadPackageIndexes (interp, path) != TCL_OK) goto errorExit; if (LoadProc (interp, argv [1], &found) != TCL_OK) goto errorExit; if (found) { interp->result = "1"; return TCL_OK; } } /* * Procedure or command was not found. */ interp->result = "0"; return TCL_OK; errorExit: msg = ckalloc (strlen (argv [1]) + 35); strcpy (msg, "\n while demand loading \""); strcat (msg, argv [1]); strcat (msg, "\""); Tcl_AddErrorInfo (interp, msg); ckfree (msg); return TCL_ERROR; } micropolis-activity/src/tclx/src/tclxstup.c0000664000076400007640000004157110724145723021425 0ustar simcitysimcity/* * tclXstartup.c -- * * Startup code for the Tcl shell and other interactive applications. Also * create special commands used just by Tcl shell features. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXstartup.c,v 2.1 1992/11/10 04:02:06 markd Exp $ *----------------------------------------------------------------------------- */ #include "tclxint.h" #include "patchlvl.h" extern char * etenv (); extern char *optarg; extern int optind, opterr; typedef struct tclParms_t { int execFile; /* Run the specified file. (no searching) */ int execCommand; /* Execute the specified command. */ unsigned options; /* Quick startup option. */ char *execStr; /* Command file or command to execute. */ char **tclArgv; /* Arguments to pass to tcl script. */ int tclArgc; /* Count of arguments to pass to tcl script. */ char *programName; /* Name of program (less path). */ } tclParms_t; /* * Prototypes of internal functions. */ static void ParseCmdArgs _ANSI_ARGS_((int argc, char **argv, tclParms_t *tclParmsPtr)); static int FindDefaultFile _ANSI_ARGS_((Tcl_Interp *interp, char *defaultFile)); static int ProcessDefaultFile _ANSI_ARGS_((Tcl_Interp *interp, char *defaultFile)); static int ProcessInitFile _ANSI_ARGS_((Tcl_Interp *interp)); /* *----------------------------------------------------------------------------- * * Tcl_ErrorAbort -- * * Display error information and abort when an error is returned in the * interp->result. * * Parameters: * o interp - A pointer to the interpreter, should contain the * error message in `result'. * o exitCode - The code to pass to exit. *----------------------------------------------------------------------------- */ void Tcl_ErrorAbort (interp, exitCode) Tcl_Interp *interp; int exitCode; { char *errorStack; fflush (stdout); fprintf (stderr, "Error: %s\n", interp->result); errorStack = Tcl_GetVar (interp, "errorInfo", 1); if (errorStack != NULL) fprintf (stderr, "%s\n", errorStack); exit (exitCode); } /* *----------------------------------------------------------------------------- * * ParseCmdArgs -- * * Parse the arguments passed to the Tcl shell * * Parameters: * o argc, argv - Arguments passed to main. * o tclParmsPtr - Results of the parsed Tcl shell command line. *----------------------------------------------------------------------------- */ static void ParseCmdArgs (argc, argv, tclParmsPtr) int argc; char **argv; tclParms_t *tclParmsPtr; { char *scanPtr, *programName; int programNameLen; int option; tclParmsPtr->execFile = FALSE; tclParmsPtr->execCommand = FALSE; tclParmsPtr->options = 0; tclParmsPtr->execStr = NULL; /* * Determine file name (less directories) that the Tcl interpreter is * being run under. */ scanPtr = programName = argv[0]; while (*scanPtr != '\0') { if (*scanPtr == '/') programName = scanPtr + 1; scanPtr++; } tclParmsPtr->programName = programName; programNameLen = strlen (programName); /* * Scan arguments looking for flags to process here rather than to pass * on to the scripts. The '-c' or '-f' must also be the last option to * allow for script arguments starting with `-'. */ while ((option = getopt (argc, argv, "qc:f:u")) != -1) { switch (option) { case 'q': if (tclParmsPtr->options & TCLSH_QUICK_STARTUP) goto usageError; tclParmsPtr->options |= TCLSH_QUICK_STARTUP; break; case 'c': tclParmsPtr->execCommand = TRUE; tclParmsPtr->execStr = optarg; goto exitParse; case 'f': tclParmsPtr->execFile = TRUE; tclParmsPtr->execStr = optarg; goto exitParse; case 'u': default: goto usageError; } } exitParse: /* * If neither `-c' nor `-f' were specified and at least one parameter * is supplied, then if is the file to execute. The rest of the arguments * are passed to the script. Check for '--' as the last option, this also * is a terminator for the file to execute. */ if ((!tclParmsPtr->execCommand) && (!tclParmsPtr->execFile) && (optind != argc) && !STREQU (argv [optind-1], "--")) { tclParmsPtr->execFile = TRUE; tclParmsPtr->execStr = argv [optind]; optind++; } tclParmsPtr->tclArgv = &argv [optind]; tclParmsPtr->tclArgc = argc - optind; return; usageError: fprintf (stderr, "usage: %s %s\n", argv [0], "[-qu] [[-f] script]|[-c command] [args]"); exit (1); } /* *----------------------------------------------------------------------------- * FindDefaultFile -- * * Find the Tcl default file. If is looked for in the following order: * o A environment variable named `TCLDEFAULT'. * o The specified defaultFile (which normally has an version number * appended. * A tcl variable `TCLDEFAULT', will contain the path of the default file * to use after this procedure is executed, or a null string if it is not * found. * Parameters * o interp (I) - A pointer to the interpreter. * o defaultFile (I) - The file name of the default file to use, it * normally contains a version number. * Returns: * TCL_OK if all is ok, TCL_ERROR if a error occured. *----------------------------------------------------------------------------- */ static int FindDefaultFile (interp, defaultFile) Tcl_Interp *interp; char *defaultFile; { char *defaultFileToUse; struct stat statBuf; if ((defaultFileToUse = getenv ("TCLDEFAULT")) == NULL) defaultFileToUse = defaultFile; if (stat (defaultFileToUse, &statBuf) < 0) defaultFileToUse = ""; if (Tcl_SetVar (interp, "TCLDEFAULT", defaultFileToUse, TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG) == NULL) return TCL_ERROR; else return TCL_OK; } /* *----------------------------------------------------------------------------- * ProcessDefaultFile -- * * Process the Tcl default file and TclInit files. The default file * is the only file at a fixed path. It is a script file that usaually * defines a variable "TCLINIT", which has the path of the full * initialization file. The default file can also set things such as path * variables. If the TCLINIT variable is set, that file is then evaluated. * If usually does the full Tcl initialization. * * Parameters * o interp (I) - A pointer to the interpreter. * o defaultFile (I) - The file name of the default file to use, it * normally contains a version number. * Returns: * TCL_OK if all is ok, TCL_ERROR if an error occured. *----------------------------------------------------------------------------- */ static int ProcessDefaultFile (interp, defaultFile) Tcl_Interp *interp; char *defaultFile; { char *defaultFileToUse; defaultFileToUse = Tcl_GetVar (interp, "TCLDEFAULT", 1); if (*defaultFileToUse == '\0') { Tcl_AppendResult (interp, "Can't access Tcl default file,\n", " Located in one of the following ways:\n", " Environment variable: `TCLDEFAULT' or,\n", " File `", defaultFile, "'.\n", (char *) NULL); return TCL_ERROR; } if (Tcl_EvalFile (interp, defaultFileToUse) != TCL_OK) return TCL_ERROR; Tcl_ResetResult (interp); return TCL_OK; } /* *----------------------------------------------------------------------------- * ProcessInitFile -- * * Process the Tcl init file, its abolute patch should be contained in * a Tcl variable "TCLINIT". If the variable is not found, the file will * not be evaulated. * * Parameters * o interp (I) - A pointer to the interpreter. * Returns: * TCL_OK if all is ok, TCL_ERROR if an error occured. *----------------------------------------------------------------------------- */ static int ProcessInitFile (interp) Tcl_Interp *interp; { char *initFile; initFile = Tcl_GetVar (interp, "TCLINIT", 1); if (initFile != NULL) { if (Tcl_EvalFile (interp, initFile) != TCL_OK) return TCL_ERROR; } Tcl_ResetResult (interp); return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_ShellEnvInit -- * * Process the Tcl default file. The default file is the only file at a * fixed path. It is a script file that usaually defines a variable "TCLINIT", * which has the path of the full initialization file. The default file can * also set things such as path variables. * * Parameters * o interp - A pointer to the interpreter. * o options - Flags to control the behavior of this routine, the following * option is supported: * o TCLSH_QUICK_STARTUP - Don't source the default file or Tcl init * file. * o TCLSH_ABORT_STARTUP_ERR - If set, abort the process if an error * occurs. * o TCLSH_NO_INIT_FILE - If set, process the default file, but not the * init file. This can be used to make the default file do all * initialization. * o programName (I) - The name of the program being executed, usually * taken from the main argv [0]. Used to set the Tcl variable. If NULL * then the variable will not be set. * o argc, argv (I) - Arguments to pass to the program in a Tcl list variable * `argv'. Argv [0] should contain the first argument not the program * name. If argv is NULL, then the variable will not be set. * o interactive (I) - The value to assign to the `interactiveSession' Tcl * variable. TRUE if an interactive Tcl command loop will be entered, * FALSE if a script will be executed . The function does not enter the * command loop, it just sets the variable. * o defaultFile (I) - The file name of the default file to use. If NULL, * then the standard Tcl default file is used, which is formed from a * location specified at compile time and the Extended Tcl version * number. * Notes: * The variables tclAppName, tclAppLongName, tclAppVersion * must be set before calling thus routine if special values are desired. * * Returns: * TCL_OK if all is ok, TCL_ERROR if an error occured. *----------------------------------------------------------------------------- */ int Tcl_ShellEnvInit (interp, options, programName, argc, argv, interactive, defaultFile) Tcl_Interp *interp; unsigned options; CONST char *programName; int argc; CONST char **argv; int interactive; CONST char *defaultFile; { int result = TCL_OK; char *defaultFilePath; /* * Setup patch to default file, if not specified. */ if (defaultFile == NULL) { defaultFilePath = ckalloc (strlen (TCL_DEFAULT) + strlen (TCL_VERSION) + strlen (TCL_EXTD_VERSION_SUFFIX) + 1); strcpy (defaultFilePath, TCL_DEFAULT); strcat (defaultFilePath, TCL_VERSION); strcat (defaultFilePath, TCL_EXTD_VERSION_SUFFIX); } else { defaultFilePath = (char *) defaultFile; } if (programName != NULL) { if (Tcl_SetVar (interp, "programName", (char *) programName, TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG) == NULL) goto errorExit; } if (argv != NULL) { char *args; args = Tcl_Merge (argc, (char **) argv); if (Tcl_SetVar (interp, "argv", args, TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG) == NULL) result = TCL_ERROR; ckfree (args); if (result != TCL_OK) goto errorExit; } if (Tcl_SetVar (interp, "interactiveSession", interactive ? "1" : "0", TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG) == NULL) goto errorExit; tclxVersion = ckalloc (strlen (TCL_VERSION) + strlen (TCL_EXTD_VERSION_SUFFIX) + 1); strcpy (tclxVersion, TCL_VERSION); strcat (tclxVersion, TCL_EXTD_VERSION_SUFFIX); #ifdef PATCHLEVEL tclxPatchlevel = PATCHLEVEL; #else tclxPatchlevel = 0; #endif /* * Set application specific values to return from the infox if they * have not been set. */ if (tclAppName == NULL) tclAppName = "TclX"; if (tclAppLongname == NULL) tclAppLongname = "Extended Tcl"; if (tclAppVersion == NULL) tclAppVersion = tclxVersion; /* * Locate the default file and save in Tcl var TCLDEFAULT. If not quick * startup, process the Tcl default file and execute the Tcl * initialization file. */ if (FindDefaultFile (interp, (char *) defaultFilePath) != TCL_OK) goto errorExit; if (!(options & TCLSH_QUICK_STARTUP)) { if (ProcessDefaultFile (interp, defaultFilePath) != TCL_OK) goto errorExit; if (!(options & TCLSH_NO_INIT_FILE)) { if (ProcessInitFile (interp) != TCL_OK) goto errorExit; } } if (defaultFilePath != defaultFile) ckfree (defaultFilePath); return TCL_OK; errorExit: if (defaultFilePath != defaultFile) ckfree (defaultFilePath); if (options & TCLSH_ABORT_STARTUP_ERR) Tcl_ErrorAbort (interp, 255); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * Tcl_Startup -- * * Initializes the Tcl extended environment. This function processes the * standard command line arguments and locates the Tcl default file. It then * sources the default file and initialization file pointed to by the default * file. Either an interactive command loop is created or a Tcl script file * is executed depending on the command line. This functions calls * Tcl_ShellEnvInit, so it should not be called separately. * * Parameters * o interp - A pointer to the interpreter. * o argc, argv - Arguments passed to main for the command line. * o defaultFile (I) - The file name of the default file to use. If NULL, * then the standard Tcl default file is used, which is formed from a * location specified at compile time and the Extended Tcl version * number. * o options (I) - Options that control startup behavior. None are * currently defined. * Notes: * The variables tclAppName, tclAppLongName, tclAppVersion * must be set before calling thus routine if special values are desired. *----------------------------------------------------------------------------- */ void Tcl_Startup (interp, argc, argv, defaultFile, options) Tcl_Interp *interp; int argc; CONST char **argv; CONST char *defaultFile; unsigned options; { char *cmdBuf; tclParms_t tclParms; int result; /* * Process the arguments. */ ParseCmdArgs (argc, (char **) argv, &tclParms); if (Tcl_ShellEnvInit (interp, tclParms.options, (CONST char *)tclParms.programName, tclParms.tclArgc, (CONST char **)tclParms.tclArgv, (tclParms.execStr == NULL), (CONST char *)defaultFile) != TCL_OK) goto errorAbort; /* * If the invoked tcl interactively, give the user an interactive session, * otherwise, source the command file or execute the specified command. */ if (tclParms.execFile) { result = Tcl_EvalFile (interp, tclParms.execStr); if (result != TCL_OK) goto errorAbort; } else if (tclParms.execCommand) { result = Tcl_Eval (interp, tclParms.execStr, 0, NULL); if (result != TCL_OK) goto errorAbort; } else Tcl_CommandLoop (interp, stdin, stdout, tclShellCmdEvalProc, 0); Tcl_ResetResult (interp); return; errorAbort: Tcl_ErrorAbort (interp, 255); } micropolis-activity/src/tclx/src/tclxdup.c0000664000076400007640000001770510724145723021224 0ustar simcitysimcity/* * tclXdup.c * * Extended Tcl dup command. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXdup.c,v 2.0 1992/10/16 04:50:36 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclxint.h" /* * Prototypes of internal functions. */ static OpenFile * DoNormalDup _ANSI_ARGS_((Tcl_Interp *interp, OpenFile *oldFilePtr)); static OpenFile * DoSpecialDup _ANSI_ARGS_((Tcl_Interp *interp, OpenFile *oldFilePtr, char *newHandleName)); /* *----------------------------------------------------------------------------- * * DoNormalDup -- * Process a normal dup command (i.e. the new file is not specified). * * Parameters: * o interp (I) - If an error occures, the error message is in result, * otherwise the file handle is in result. * o oldFilePtr (I) - Tcl file control block for the file to dup. * Returns: * A pointer to the open file structure for the new file, or NULL if an * error occured. *----------------------------------------------------------------------------- */ static OpenFile * DoNormalDup (interp, oldFilePtr) Tcl_Interp *interp; OpenFile *oldFilePtr; { Interp *iPtr = (Interp *) interp; int newFileId; FILE *newFileCbPtr; char *mode; newFileId = dup (fileno (oldFilePtr->f)); if (newFileId < 0) goto unixError; if (Tcl_SetupFileEntry (interp, newFileId, oldFilePtr->readable, oldFilePtr->writable) != TCL_OK) return NULL; sprintf (interp->result, "file%d", newFileId); return iPtr->filePtrArray [newFileId]; unixError: interp->result = Tcl_UnixError (interp); return NULL;; } /* *----------------------------------------------------------------------------- * * DoSpecialDup -- * Process a special dup command. This is the case were the file is * dup-ed to stdin, stdout or stderr. The new file may or be open or * closed * Parameters: * o interp (I) - If an error occures, the error message is in result, * otherwise nothing is returned. * o oldFilePtr (I) - Tcl file control block for the file to dup. * o newFileHandle (I) - The handle name for the new file. * Returns: * A pointer to the open file structure for the new file, or NULL if an * error occured. *----------------------------------------------------------------------------- */ static OpenFile * DoSpecialDup (interp, oldFilePtr, newHandleName) Tcl_Interp *interp; OpenFile *oldFilePtr; char *newHandleName; { Interp *iPtr = (Interp *) interp; int newFileId; FILE *newFileCbPtr; OpenFile *newFilePtr; /* * Duplicate the old file to the specified file id. */ newFileId = Tcl_ConvertFileHandle (interp, newHandleName); if (newFileId < 0) return NULL; if (newFileId > 2) { Tcl_AppendResult (interp, "target handle must be one of stdin, ", "stdout, stderr, file0, file1, or file2: got \"", newHandleName, "\"", (char *) NULL); return NULL; } switch (newFileId) { case 0: newFileCbPtr = stdin; break; case 1: newFileCbPtr = stdout; break; case 2: newFileCbPtr = stderr; break; } /* * If the specified id is not open, set up a stdio file descriptor. */ TclMakeFileTable (iPtr, newFileId); if (iPtr->filePtrArray [newFileId] == NULL) { char *mode; /* * Set up a stdio FILE control block for the new file. */ if (oldFilePtr->readable && oldFilePtr->writable) { mode = "r+"; } else if (oldFilePtr->writable) { mode = "w"; } else { mode = "r"; } if (freopen ("/dev/null", mode, newFileCbPtr) == NULL) goto unixError; } /* * This functionallity may be obtained with dup2 on most systems. Being * open is optional. */ close (newFileId); #ifndef MSDOS if (fcntl (fileno (oldFilePtr->f), F_DUPFD, newFileId) < 0) goto unixError; #endif /* * Set up a Tcl OpenFile structure for the new file handle. */ newFilePtr = iPtr->filePtrArray [fileno (newFileCbPtr)]; if (newFilePtr == NULL) { newFilePtr = (OpenFile*) ckalloc (sizeof (OpenFile)); iPtr->filePtrArray [fileno (newFileCbPtr)] = newFilePtr; } newFilePtr->f = newFileCbPtr; newFilePtr->f2 = NULL; newFilePtr->readable = oldFilePtr->readable; newFilePtr->writable = oldFilePtr->writable; newFilePtr->numPids = 0; newFilePtr->pidPtr = NULL; newFilePtr->errorId = -1; return newFilePtr; unixError: iPtr->result = Tcl_UnixError (interp); return NULL; } /* *----------------------------------------------------------------------------- * * Tcl_DupCmd -- * Implements the dup TCL command: * dup filehandle [stdhandle] * * Results: * Returns TCL_OK and interp->result containing a filehandle * if the requested file or pipe was successfully duplicated. * * Return TCL_ERROR and interp->result containing an * explanation of what went wrong if an error occured. * * Side effects: * Locates and creates an entry in the handles table * *----------------------------------------------------------------------------- */ int Tcl_DupCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { OpenFile *oldFilePtr, *newFilePtr; long seekOffset = -1; if ((argc < 2) || (argc > 3)) { Tcl_AppendResult (interp, tclXWrongArgs, argv[0], " filehandle [stdhandle]", (char *) NULL); return TCL_ERROR; } if (TclGetOpenFile(interp, argv[1], &oldFilePtr) != TCL_OK) return TCL_ERROR; if (oldFilePtr->numPids > 0) { /*??????*/ Tcl_AppendResult (interp, "can not `dup' a pipeline", (char *) NULL); return TCL_ERROR; } /* * If writable, flush out the buffer. If readable, remember were we are * so the we can set it up for the next stdio read to come from the same * place. The location is only recorded if the file is a reqular file, * since you cann't seek on other types of files. */ if (oldFilePtr->writable) { if (fflush (oldFilePtr->f) != 0) goto unixError; } if (oldFilePtr->readable) { struct stat statBuf; if (fstat (fileno (oldFilePtr->f), &statBuf) < 0) goto unixError; if ((statBuf.st_mode & S_IFMT) == S_IFREG) { seekOffset = ftell (oldFilePtr->f); if (seekOffset < 0) goto unixError; } } /* * Process the dup depending on if dup-ing to a new file or a target * file handle. */ if (argc == 2) newFilePtr = DoNormalDup (interp, oldFilePtr); else newFilePtr = DoSpecialDup (interp, oldFilePtr, argv [2]); if (newFilePtr == NULL) return TCL_ERROR; if (seekOffset >= 0) { if (fseek (newFilePtr->f, seekOffset, SEEK_SET) != 0) goto unixError; } return TCL_OK; unixError: Tcl_ResetResult (interp); interp->result = Tcl_UnixError (interp); return TCL_ERROR; } micropolis-activity/src/tclx/src/tclxchmd.c0000664000076400007640000002742410724145723021346 0ustar simcitysimcity/* * tclXchmod.c -- * * Chmod, chown and chgrp Tcl commands. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXchmod.c,v 2.0 1992/10/16 04:50:26 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclxint.h" /* * Prototypes of internal functions. */ static int ConvSymMode _ANSI_ARGS_((Tcl_Interp *interp, char *symMode, int modeVal)); /* *----------------------------------------------------------------------------- * * ConvSymMode -- * Parse and convert symbolic file permissions as specified by chmod(C). * * Parameters: * o interp - Pointer to the current interpreter, error messages will be * returned in the result. * o symMode - The symbolic permissions to parse. * o modeVal - The existing permissions value on a file. * * Results: * The new permissions, or -1 if invalid permissions where supplied. * *----------------------------------------------------------------------------- */ static int ConvSymMode (interp, symMode, modeVal) Tcl_Interp *interp; char *symMode; int modeVal; { int user, group, other; char operator, *scanPtr; int rwxMask, ugoMask, setUID, sticky, locking; int newMode; scanPtr = symMode; while (*scanPtr != '\0') { user = group = other = FALSE; /* * Scan who field. */ while (! ((*scanPtr == '+') || (*scanPtr == '-') || (*scanPtr == '='))) { switch (*scanPtr) { case 'a': user = group = other = TRUE; break; case 'u': user = TRUE; break; case 'g': group = TRUE; break; case 'o': other = TRUE; break; default: goto invalidMode; } scanPtr++; } /* * If none where specified, that means all. */ if (! (user || group || other)) user = group = other = TRUE; operator = *scanPtr++; /* * Decode the permissions */ rwxMask = 0; setUID = sticky = locking = FALSE; /* * Scan permissions field */ while (! ((*scanPtr == ',') || (*scanPtr == 0))) { switch (*scanPtr) { case 'r': rwxMask |= 4; break; case 'w': rwxMask |= 2; break; case 'x': rwxMask |= 1; break; case 's': setUID = TRUE; break; case 't': sticky = TRUE; break; case 'l': locking = TRUE; break; default: goto invalidMode; } scanPtr++; } /* * Build mode map of specified values. */ newMode = 0; ugoMask = 0; if (user) { newMode |= rwxMask << 6; ugoMask |= 0700; } if (group) { newMode |= rwxMask << 3; ugoMask |= 0070; } if (other) { newMode |= rwxMask; ugoMask |= 0007; } if (setUID && user) newMode |= 04000; if ((setUID || locking) && group) newMode |= 02000; if (sticky) newMode |= 01000; /* * Add to cumulative mode based on operator. */ if (operator == '+') modeVal |= newMode; else if (operator == '-') modeVal &= ~newMode; else if (operator == '=') modeVal |= (modeVal & ugoMask) | newMode; if (*scanPtr == ',') scanPtr++; } return modeVal; invalidMode: Tcl_AppendResult (interp, "invalid file mode \"", symMode, "\"", (char *) NULL); return -1; } /* *----------------------------------------------------------------------------- * * Tcl_ChmodCmd -- * Implements the TCL chmod command: * chmod mode filelist * * Results: * Standard TCL results, may return the UNIX system error message. * *----------------------------------------------------------------------------- */ int Tcl_ChmodCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { int idx, modeVal, fileArgc, absMode; char **fileArgv; struct stat fileStat; if (argc != 3) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " mode filelist", (char *) NULL); return TCL_ERROR; } if (isdigit (argv [1][0])) { if (Tcl_GetInt (interp, argv [1], &modeVal) != TCL_OK) return TCL_ERROR; absMode = TRUE; } else absMode = FALSE; if (Tcl_SplitList (interp, argv [2], &fileArgc, &fileArgv) != TCL_OK) return TCL_ERROR; for (idx = 0; idx < fileArgc; idx++) { if (!absMode) { if (stat (fileArgv [idx], &fileStat) != 0) goto fileError; modeVal = ConvSymMode (interp, argv [1], fileStat.st_mode & 07777); if (modeVal < 0) goto errorExit; } if (chmod (fileArgv [idx], (unsigned short) modeVal) < 0) goto fileError; } exitPoint: ckfree ((char *) fileArgv); return TCL_OK; fileError: /* * Error accessing file, assumes file name is fileArgv [idx]. */ Tcl_AppendResult (interp, fileArgv [idx], ": ", Tcl_UnixError (interp), (char *) NULL); errorExit: ckfree ((char *) fileArgv); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * Tcl_ChownCmd -- * Implements the TCL chown command: * chown owner filelist * chown {owner group} filelist * * Results: * Standard TCL results, may return the UNIX system error message. * *----------------------------------------------------------------------------- */ int Tcl_ChownCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { int idx, ownArgc, fileArgc; char **ownArgv, **fileArgv = NULL; struct stat fileStat; int useOwnerGrp, chGroup, ownerId, groupId; struct passwd *passwdPtr; struct group *groupPtr; int result = TCL_ERROR; if (argc != 3) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " owner|{owner group} filelist", (char *) NULL); return TCL_ERROR; } if (Tcl_SplitList (interp, argv[1], &ownArgc, &ownArgv) != TCL_OK) return TCL_ERROR; if ((ownArgc < 1) || (ownArgc > 2)) { interp->result = "owner arg should be: owner or {owner group}"; goto exitPoint; } if (ownArgc == 2) { useOwnerGrp = (ownArgv [1][0] == '\0'); chGroup = TRUE; } else chGroup = FALSE; /* * Get the owner id, either convert the name or use it as an integer. */ passwdPtr = getpwnam (ownArgv [0]); if (passwdPtr != NULL) ownerId = passwdPtr->pw_uid; else { if (!Tcl_StrToInt (ownArgv [0], 10, &ownerId)) { Tcl_AppendResult (interp, "unknown user id: ", ownArgv [0], (char *) NULL); goto exitPoint; } } /* * Get the group id, this is either the specified id or name, or the * if associated with the specified user. */ if (chGroup) { if (useOwnerGrp) { if (passwdPtr == NULL) { passwdPtr = getpwuid (ownerId); if (passwdPtr != NULL) { Tcl_AppendResult (interp, "unknown user id: ", ownArgv [0], (char *) NULL); goto exitPoint; } } groupId = passwdPtr->pw_gid; } else { groupPtr = getgrnam (ownArgv [1]); if (groupPtr != NULL) groupId = groupPtr->gr_gid; else { if (!Tcl_StrToInt (ownArgv [1], 10, &groupId)) { Tcl_AppendResult (interp, "unknown group id: ", ownArgv [1], (char *) NULL); goto exitPoint; } } } } if (Tcl_SplitList (interp, argv [2], &fileArgc, &fileArgv) != TCL_OK) goto exitPoint; for (idx = 0; idx < fileArgc; idx++) { if (!chGroup) { if (stat (fileArgv [idx], &fileStat) != 0) { Tcl_AppendResult (interp, fileArgv [idx], ": ", Tcl_UnixError (interp), (char *) NULL); goto exitPoint; } groupId = fileStat.st_gid; } if (chown (fileArgv[idx], ownerId, groupId) < 0) { Tcl_AppendResult (interp, fileArgv [idx], ": ", Tcl_UnixError (interp), (char *) NULL); goto exitPoint; } } /* Modify each file */ result = TCL_OK; exitPoint: ckfree ((char *) ownArgv); if (fileArgv != NULL) ckfree ((char *) fileArgv); return result; } /* *----------------------------------------------------------------------------- * * Tcl_ChgrpCmd -- * Implements the TCL chgrp command: * chgrp group filelist * * Results: * Standard TCL results, may return the UNIX system error message. * *----------------------------------------------------------------------------- */ int Tcl_ChgrpCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { int idx, fileArgc, groupId, result = TCL_ERROR; char **fileArgv; struct stat fileStat; struct group *groupPtr; if (argc < 3) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " group filelist", (char *) NULL); return TCL_ERROR; } groupPtr = getgrnam (argv [1]); if (groupPtr != NULL) groupId = groupPtr->gr_gid; else { if (!Tcl_StrToInt (argv [1], 10, &groupId)) { Tcl_AppendResult (interp, "unknown group id: ", argv [1], (char *) NULL); return TCL_ERROR; } } if (Tcl_SplitList (interp, argv [2], &fileArgc, &fileArgv) != TCL_OK) return TCL_ERROR; for (idx = 0; idx < fileArgc; idx++) { if ((stat (fileArgv [idx], &fileStat) != 0) || (chown (fileArgv[idx], fileStat.st_uid, groupId) < 0)) { Tcl_AppendResult (interp, fileArgv [idx], ": ", Tcl_UnixError (interp), (char *) NULL); goto exitPoint; } } /* Modify each file */ result = TCL_OK; exitPoint: ckfree ((char *) fileArgv); return result; } micropolis-activity/src/tclx/src/tclxfctl.c0000664000076400007640000002355710724145723021366 0ustar simcitysimcity/* * tclXfcntl.c * * Extended Tcl fcntl command. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXfcntl.c,v 2.0 1992/10/16 04:50:38 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclxint.h" /* * Macro to enable line buffering mode on a file. Macros assure that the * resulting expression returns zero if the function call does not return * a value. */ #ifdef TCL_HAVE_SETLINEBUF # define SET_LINE_BUF(fp) (setlinebuf (fp),0) #else # define SET_LINE_BUF(fp) setvbuf (fp, NULL, _IOLBF, BUFSIZ) #endif /* * If we don't have O_NONBLOCK, use O_NDELAY. */ #ifndef O_NONBLOCK # define O_NONBLOCK O_NDELAY #endif /* * Attributes used by fcntl command and the maximum length of any attribute * name. */ #define ATTR_CLOEXEC 1 #define ATTR_NOBUF 2 #define ATTR_LINEBUF 4 #define MAX_ATTR_NAME_LEN 20 /* * Prototypes of internal functions. */ static int XlateFcntlAttr _ANSI_ARGS_((Tcl_Interp *interp, char *attrName, int *fcntlAttrPtr, int *otherAttrPtr)); static int GetFcntlAttr _ANSI_ARGS_((Tcl_Interp *interp, OpenFile *filePtr, char *attrName)); static int SetFcntlAttr _ANSI_ARGS_((Tcl_Interp *interp, OpenFile *filePtr, char *attrName, char *valueStr)); /* *----------------------------------------------------------------------------- * * XlateFcntlAttr -- * Translate an fcntl attribute. * * Parameters: * o interp (I) - Tcl interpreter. * o attrName (I) - The attrbute name to translate, maybe upper or lower * case. * o fcntlAttrPtr (O) - If the attr specified is one of the standard * fcntl attrs, it is returned here, otherwise zero is returned. * o otherAttrPtr (O) - If the attr specified is one of the additional * attrs supported by the Tcl command, it is returned here, otherwise * zero is returned. * Result: * Returns TCL_OK if all is well, TCL_ERROR if there is an error. *----------------------------------------------------------------------------- */ static int XlateFcntlAttr (interp, attrName, fcntlAttrPtr, otherAttrPtr) Tcl_Interp *interp; char *attrName; int *fcntlAttrPtr; int *otherAttrPtr; { char attrNameUp [MAX_ATTR_NAME_LEN]; *fcntlAttrPtr = 0; *otherAttrPtr = 0; if (strlen (attrName) >= MAX_ATTR_NAME_LEN) goto invalidAttrName; Tcl_UpShift (attrNameUp, attrName); if (STREQU (attrNameUp, "RDONLY")) { *fcntlAttrPtr = O_RDONLY; return TCL_OK; } if (STREQU (attrNameUp, "WRONLY")) { *fcntlAttrPtr = O_WRONLY; return TCL_OK; } if (STREQU (attrNameUp, "RDWR")) { *fcntlAttrPtr = O_RDWR; return TCL_OK; } if (STREQU (attrNameUp, "READ")) { *fcntlAttrPtr = O_RDONLY | O_RDWR; return TCL_OK; } if (STREQU (attrNameUp, "WRITE")) { *fcntlAttrPtr = O_WRONLY | O_RDWR; return TCL_OK; } if (STREQU (attrNameUp, "NONBLOCK")) { *fcntlAttrPtr = O_NONBLOCK; return TCL_OK; } if (STREQU (attrNameUp, "APPEND")) { *fcntlAttrPtr = O_APPEND; return TCL_OK; } if (STREQU (attrNameUp, "CLOEXEC")) { *otherAttrPtr = ATTR_CLOEXEC; return TCL_OK; } if (STREQU (attrNameUp, "NOBUF")) { *otherAttrPtr = ATTR_NOBUF; return TCL_OK; } if (STREQU (attrNameUp, "LINEBUF")) { *otherAttrPtr = ATTR_LINEBUF; return TCL_OK; } /* * Error return code. */ invalidAttrName: Tcl_AppendResult (interp, "unknown attribute name \"", attrName, "\", expected one of APPEND, CLOEXEC, LINEBUF, ", "NONBLOCK, NOBUF, READ, RDONLY, RDWR, WRITE, WRONLY", (char *) NULL); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * GetFcntlAttr -- * Return the value of a specified fcntl attribute. * * Parameters: * o interp (I) - Tcl interpreter, value is returned in the result * o filePtr (I) - Pointer to the file descriptor. * o attrName (I) - The attrbute name to translate, maybe upper or lower * case. * Result: * Returns TCL_OK if all is well, TCL_ERROR if fcntl returns an error. *----------------------------------------------------------------------------- */ static int GetFcntlAttr (interp, filePtr, attrName) Tcl_Interp *interp; OpenFile *filePtr; char *attrName; { int fcntlAttr, otherAttr, current; if (XlateFcntlAttr (interp, attrName, &fcntlAttr, &otherAttr) != TCL_OK) return TCL_ERROR; if (fcntlAttr != 0) { current = fcntl (fileno (filePtr->f), F_GETFL, 0); if (current == -1) goto unixError; interp->result = (current & fcntlAttr) ? "1" : "0"; return TCL_OK; } if (otherAttr & ATTR_CLOEXEC) { current = fcntl (fileno (filePtr->f), F_GETFD, 0); if (current == -1) goto unixError; interp->result = (current & 1) ? "1" : "0"; return TCL_OK; } /* * Poke the stdio FILE structure to determine the buffering status. */ #ifndef IS_LINUX #ifdef _IONBF if (otherAttr & ATTR_NOBUF) { interp->result = (filePtr->f->_flag & _IONBF) ? "1" : "0"; return TCL_OK; } if (otherAttr & ATTR_LINEBUF) { interp->result = (filePtr->f->_flag & _IOLBF) ? "1" : "0"; return TCL_OK; } #else if (otherAttr & ATTR_NOBUF) { interp->result = (filePtr->f->_flags & _SNBF) ? "1" : "0"; return TCL_OK; } if (otherAttr & ATTR_LINEBUF) { interp->result = (filePtr->f->_flags & _SLBF) ? "1" : "0"; return TCL_OK; } #endif #endif unixError: interp->result = Tcl_UnixError (interp); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * SetFcntlAttr -- * Set the specified fcntl attr to the given value. * * Parameters: * o interp (I) - Tcl interpreter, value is returned in the result * o filePtr (I) - Pointer to the file descriptor. * o attrName (I) - The attrbute name to translate, maybe upper or lower * case. * o valueStr (I) - The string value to set the attribiute to. * * Result: * Returns TCL_OK if all is well, TCL_ERROR if there is an error. *----------------------------------------------------------------------------- */ static int SetFcntlAttr (interp, filePtr, attrName, valueStr) Tcl_Interp *interp; OpenFile *filePtr; char *attrName; char *valueStr; { int fcntlAttr, otherAttr, current, setValue; if (Tcl_GetBoolean (interp, valueStr, &setValue) != TCL_OK) return TCL_ERROR; if (XlateFcntlAttr (interp, attrName, &fcntlAttr, &otherAttr) != TCL_OK) return TCL_ERROR; /* * Validate that this the attribute may be set (or cleared). */ if (fcntlAttr & (O_RDONLY | O_WRONLY | O_RDWR)) { Tcl_AppendResult (interp, "Attribute \"", attrName, "\" may not be ", "altered after open", (char *) NULL); return TCL_ERROR; } if ((otherAttr & (ATTR_NOBUF | ATTR_LINEBUF)) && !setValue) { Tcl_AppendResult (interp, "Attribute \"", attrName, "\" may not be ", "cleared once set", (char *) NULL); return TCL_ERROR; } if (otherAttr == ATTR_CLOEXEC) { if (fcntl (fileno (filePtr->f), F_SETFD, setValue) == -1) goto unixError; return TCL_OK; } if (otherAttr == ATTR_NOBUF) { setbuf (filePtr->f, NULL); return TCL_OK; } if (otherAttr == ATTR_LINEBUF) { if (SET_LINE_BUF (filePtr->f) != 0) goto unixError; return TCL_OK; } /* * Handle standard fcntl attrs. */ current = fcntl (fileno (filePtr->f), F_GETFL, 0); if (current == -1) goto unixError; current &= ~fcntlAttr; if (setValue) current |= fcntlAttr; if (fcntl (fileno (filePtr->f), F_SETFL, current) == -1) goto unixError; return TCL_OK; unixError: interp->result = Tcl_UnixError (interp); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * Tcl_FcntlCmd -- * Implements the fcntl TCL command: * fcntl handle [attribute value] *----------------------------------------------------------------------------- */ int Tcl_FcntlCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { OpenFile *filePtr; if ((argc < 3) || (argc > 4)) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " handle attribute [value]", (char *) NULL); return TCL_ERROR; } if (TclGetOpenFile (interp, argv[1], &filePtr) != TCL_OK) return TCL_ERROR; if (argc == 3) { if (GetFcntlAttr (interp, filePtr, argv [2]) != TCL_OK) return TCL_ERROR; } else { if (SetFcntlAttr (interp, filePtr, argv [2], argv [3]) != TCL_OK) return TCL_ERROR; } return TCL_OK; } micropolis-activity/src/tclx/src/tclxdebg.c0000664000076400007640000002645510724145723021337 0ustar simcitysimcity/* * tclXdebug.c -- * * Tcl command execution trace command. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXdebug.c,v 2.0 1992/10/16 04:50:34 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclxint.h" /* * Client data structure for the cmdtrace command. */ #define ARG_TRUNCATE_SIZE 40 #define CMD_TRUNCATE_SIZE 60 typedef struct traceInfo_t { Tcl_Interp *interp; Tcl_Trace traceHolder; int noEval; int noTruncate; int procCalls; int flush; int depth; FILE *filePtr; /* File to output trace to. */ } traceInfo_t, *traceInfo_pt; /* * Prototypes of internal functions. */ void PrintStr _ANSI_ARGS_((FILE *filePtr, char *string, int numChars)); void PrintArg _ANSI_ARGS_((FILE *filePtr, char *argStr, int noTruncate)); void TraceCode _ANSI_ARGS_((traceInfo_pt traceInfoPtr, int level, char *command, int argc, char **argv)); void CmdTraceRoutine _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int level, char *command, Tcl_CmdProc *cmdProc, ClientData cmdClientData, int argc, char **argv)); void CleanUpDebug _ANSI_ARGS_((ClientData clientData)); /* *----------------------------------------------------------------------------- * * PrintStr -- * Print an string, truncating it to the specified number of characters. * If the string contains newlines, \n is substituted. * *----------------------------------------------------------------------------- */ void PrintStr (filePtr, string, numChars) FILE *filePtr; char *string; int numChars; { int idx; for (idx = 0; idx < numChars; idx++) { if (string [idx] == '\n') { putc ('\\', filePtr); putc ('n', filePtr); } else putc (string [idx], filePtr); } if (numChars < strlen (string)) fprintf (filePtr, "..."); } /* *----------------------------------------------------------------------------- * * PrintArg -- * Print an argument string, truncating and adding "..." if its longer * then ARG_TRUNCATE_SIZE. If the string contains white spaces, quote * it with angle brackets. * *----------------------------------------------------------------------------- */ void PrintArg (filePtr, argStr, noTruncate) FILE *filePtr; char *argStr; int noTruncate; { int idx, argLen, printLen; int quote_it; argLen = strlen (argStr); printLen = argLen; if ((!noTruncate) && (printLen > ARG_TRUNCATE_SIZE)) printLen = ARG_TRUNCATE_SIZE; quote_it = (printLen == 0); for (idx = 0; idx < printLen; idx++) if (isspace (argStr [idx])) { quote_it = TRUE; break; } if (quote_it) putc ('{', filePtr); PrintStr (filePtr, argStr, printLen); if (quote_it) putc ('}', filePtr); } /* *----------------------------------------------------------------------------- * * TraceCode -- * Print out a trace of a code line. Level is used for indenting * and marking lines and may be eval or procedure level. * *----------------------------------------------------------------------------- */ void TraceCode (traceInfoPtr, level, command, argc, argv) traceInfo_pt traceInfoPtr; int level; char *command; int argc; char **argv; { int idx, cmdLen, printLen; fprintf (traceInfoPtr->filePtr, "%2d:", level); if (level > 20) level = 20; for (idx = 0; idx < level; idx++) fprintf (traceInfoPtr->filePtr, " "); if (traceInfoPtr->noEval) { cmdLen = printLen = strlen (command); if ((!traceInfoPtr->noTruncate) && (printLen > CMD_TRUNCATE_SIZE)) printLen = CMD_TRUNCATE_SIZE; PrintStr (traceInfoPtr->filePtr, command, printLen); } else { for (idx = 0; idx < argc; idx++) { if (idx > 0) putc (' ', traceInfoPtr->filePtr); PrintArg (traceInfoPtr->filePtr, argv[idx], traceInfoPtr->noTruncate); } } putc ('\n', traceInfoPtr->filePtr); if (traceInfoPtr->flush) fflush (traceInfoPtr->filePtr); } /* *----------------------------------------------------------------------------- * * CmdTraceRoutine -- * Routine called by Tcl_Eval to trace a command. * *----------------------------------------------------------------------------- */ void CmdTraceRoutine (clientData, interp, level, command, cmdProc, cmdClientData, argc, argv) ClientData clientData; Tcl_Interp *interp; int level; char *command; Tcl_CmdProc *cmdProc; ClientData cmdClientData; int argc; char **argv; { Interp *iPtr = (Interp *) interp; traceInfo_pt traceInfoPtr = (traceInfo_pt) clientData; int procLevel; if (!traceInfoPtr->procCalls) { TraceCode (traceInfoPtr, level, command, argc, argv); } else { if (TclFindProc (iPtr, argv [0]) != NULL) { procLevel = (iPtr->varFramePtr == NULL) ? 0 : iPtr->varFramePtr->level; TraceCode (traceInfoPtr, procLevel, command, argc, argv); } } } /* *----------------------------------------------------------------------------- * * Tcl_CmdtraceCmd -- * Implements the TCL trace command: * cmdtrace level|on [noeval] [notruncate] [flush] [procs] [filehdl] * cmdtrace off * cmdtrace depth * * Results: * Standard TCL results. * *----------------------------------------------------------------------------- */ static int Tcl_CmdtraceCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { Interp *iPtr = (Interp *) interp; traceInfo_pt infoPtr = (traceInfo_pt) clientData; int idx; char *fileHandle; if (argc < 2) goto argumentError; /* * Handle `depth' sub-command. */ if (STREQU (argv[1], "depth")) { if (argc != 2) goto argumentError; sprintf(interp->result, "%d", infoPtr->depth); return TCL_OK; } /* * If a trace is in progress, delete it now. */ if (infoPtr->traceHolder != NULL) { Tcl_DeleteTrace(interp, infoPtr->traceHolder); infoPtr->depth = 0; infoPtr->traceHolder = NULL; } /* * Handle off sub-command. */ if (STREQU (argv[1], "off")) { if (argc != 2) goto argumentError; return TCL_OK; } infoPtr->noEval = FALSE; infoPtr->noTruncate = FALSE; infoPtr->procCalls = FALSE; infoPtr->flush = FALSE; infoPtr->filePtr = stdout; fileHandle = NULL; for (idx = 2; idx < argc; idx++) { if (STREQU (argv[idx], "notruncate")) { if (infoPtr->noTruncate) goto argumentError; infoPtr->noTruncate = TRUE; continue; } if (STREQU (argv[idx], "noeval")) { if (infoPtr->noEval) goto argumentError; infoPtr->noEval = TRUE; continue; } if (STREQU (argv[idx], "flush")) { if (infoPtr->flush) goto argumentError; infoPtr->flush = TRUE; continue; } if (STREQU (argv[idx], "procs")) { if (infoPtr->procCalls) goto argumentError; infoPtr->procCalls = TRUE; continue; } if (STRNEQU (argv [idx], "std", 3) || STRNEQU (argv [idx], "file", 4)) { if (fileHandle != NULL) goto argumentError; fileHandle = argv [idx]; continue; } goto invalidOption; } if (STREQU (argv[1], "on")) { infoPtr->depth = MAXINT; } else { if (Tcl_GetInt (interp, argv[1], &(infoPtr->depth)) != TCL_OK) return TCL_ERROR; } if (fileHandle != NULL) { OpenFile *tclFilePtr; if (TclGetOpenFile (interp, fileHandle, &tclFilePtr) != TCL_OK) return TCL_ERROR; if (!tclFilePtr->writable) { Tcl_AppendResult (interp, "file not writable: ", fileHandle, (char *) NULL); return TCL_ERROR; } infoPtr->filePtr = tclFilePtr->f; } infoPtr->traceHolder = Tcl_CreateTrace (interp, infoPtr->depth, CmdTraceRoutine, (ClientData) infoPtr); return TCL_OK; argumentError: Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " level | on [noeval] [notruncate] [flush] [procs]", "[handle] | off | depth", (char *) NULL); return TCL_ERROR; invalidOption: Tcl_AppendResult (interp, "invalid option: expected ", "one of \"noeval\", \"notruncate\", \"procs\", ", "\"flush\" or a file handle", (char *) NULL); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * CleanUpDebug -- * * Release the client data area when the trace command is deleted. * *----------------------------------------------------------------------------- */ void CleanUpDebug (clientData) ClientData clientData; { traceInfo_pt infoPtr = (traceInfo_pt) clientData; if (infoPtr->traceHolder != NULL) Tcl_DeleteTrace (infoPtr->interp, infoPtr->traceHolder); ckfree ((char *) infoPtr); } /* *----------------------------------------------------------------------------- * * Tcl_InitDebug -- * * Initialize the TCL debugging commands. * *----------------------------------------------------------------------------- */ void Tcl_InitDebug (interp) Tcl_Interp *interp; { traceInfo_pt infoPtr; infoPtr = (traceInfo_pt) ckalloc (sizeof (traceInfo_t)); infoPtr->interp = interp; infoPtr->traceHolder = NULL; infoPtr->noEval = FALSE; infoPtr->noTruncate = FALSE; infoPtr->procCalls = FALSE; infoPtr->flush = FALSE; infoPtr->depth = 0; Tcl_CreateCommand (interp, "cmdtrace", Tcl_CmdtraceCmd, (ClientData)infoPtr, CleanUpDebug); } micropolis-activity/src/tclx/src/tclplus.cc0000664000076400007640000000773410724145723021373 0ustar simcitysimcity/* * tcl++.C -- * * It also defines C++ classes that can be used to access a Tcl interpreter. * If tcl.h is not already included, it includes it. Tcl.h has macros that * allow it to work with K&R C, ANSI C and C++. *--------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *--------------------------------------------------------------------------- * Based on Tcl C++ classes developed by Parag Patel. *----------------------------------------------------------------------------- * $Id: tcl++.C,v 2.0 1992/10/16 04:51:32 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclplus.h" /* *---------------------------------------------------------------------- * * TclInterp_cl::CatVarArgs -- * * Concatenate all of the strings passed via varargs into a single string. * * Parameters: * o argPtr (I) - A pointer to the first argument, as returned by va_start. * Should be terminate by a NULL. * * Returns: * A dynamically allocated string. *---------------------------------------------------------------------- */ char * TclInterp_cl::CatVarArgs (va_list argPtr) { int len = 0; char *parmPtr, *ptr; va_list nextArgPtr = argPtr; while (1) { parmPtr = va_arg (nextArgPtr, char *); if (parmPtr == NULL) break; len += strlen (parmPtr); } ptr = (char *) ckalloc (len + 1); ptr [0] = '\0'; nextArgPtr = argPtr; while (1) { parmPtr = va_arg (nextArgPtr, char *); if (parmPtr == NULL) break; strcat (ptr, parmPtr); } return ptr; } /* *---------------------------------------------------------------------- * * TclInterp_cl::AppendResult -- * * Class interface to Tcl_AppendResult (see Tcl documentation for * details). Not inlined since varargs and inline don't work on some C++ * compilers. *---------------------------------------------------------------------- */ void TclInterp_cl::AppendResult (const char *p, ...) { va_list argPtr; char *strPtr; va_start (argPtr, p); strPtr = CatVarArgs (argPtr); Tcl_AppendResult (interp, p, strPtr, (char *) NULL); ckfree (strPtr) va_end (argPtr); } /* *---------------------------------------------------------------------- * * TclInterp_cl::SetErrorCode -- * * Class interface to Tcl_SetErrorCode (see Tcl documentation for * details). Not inlined since varargs and inline don't work on some C++ * compilers. *---------------------------------------------------------------------- */ void TclInterp_cl::SetErrorCode (char *p, ...) { va_list argPtr; char *strPtr; va_start (argPtr, p); strPtr = CatVarArgs (argPtr); Tcl_SetErrorCode (interp, p, strPtr, (char *) NULL); ckfree (strPtr) va_end (argPtr); } /* *---------------------------------------------------------------------- * * TclInterp_cl::VarEval -- * * Class interface to Tcl_VarEval (see Tcl documentation for details). * Not inlined since varargs and inline don't work on some C++ compilers. *---------------------------------------------------------------------- */ int TclInterp_cl::VarEval (const char *p, ...) { int intResult; va_list argPtr; char *strPtr; va_start (argPtr, p); strPtr = CatVarArgs (argPtr); intResult = Tcl_VarEval (interp, (char *) p, strPtr, (char *) NULL); ckfree (strPtr); va_end (argPtr); return intResult; } micropolis-activity/src/tclx/src/tclxfcmd.c0000664000076400007640000006125410724145723021343 0ustar simcitysimcity/* * tclXfilecmds.c * * Extended Tcl pipe, copyfile and fstat commands. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXfilecmds.c,v 2.0 1992/10/16 04:50:41 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclxint.h" /* * Prototypes of internal functions. */ static char * GetFileType _ANSI_ARGS_((struct stat *statBufPtr)); static void ReturnStatList _ANSI_ARGS_((Tcl_Interp *interp, OpenFile *filePtr, struct stat *statBufPtr)); static int ReturnStatArray _ANSI_ARGS_((Tcl_Interp *interp, OpenFile *filePtr, struct stat *statBufPtr, char *arrayName)); static int ReturnStatItem _ANSI_ARGS_((Tcl_Interp *interp, OpenFile *filePtr, struct stat *statBufPtr, char *itemName)); static int ParseLockUnlockArgs _ANSI_ARGS_((Tcl_Interp *interp, int argc, char **argv, int argIdx, OpenFile **filePtrPtr, struct flock *lockInfoPtr)); /* *----------------------------------------------------------------------------- * * Tcl_PipeCmd -- * Implements the pipe TCL command: * pipe [handle_var_r handle_var_w] * * Results: * Standard TCL result. * * Side effects: * Locates and creates entries in the handles table * *----------------------------------------------------------------------------- */ int Tcl_PipeCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { Interp *iPtr = (Interp *) interp; int fileIds [2]; char fHandle [12]; if (!((argc == 1) || (argc == 3))) { Tcl_AppendResult (interp, tclXWrongArgs, argv[0], " [handle_var_r handle_var_w]", (char*) NULL); return TCL_ERROR; } if (pipe (fileIds) < 0) { interp->result = Tcl_UnixError (interp); return TCL_ERROR; } if (Tcl_SetupFileEntry (interp, fileIds [0], TRUE, FALSE) != TCL_OK) goto errorExit; if (Tcl_SetupFileEntry (interp, fileIds [1], FALSE, TRUE) != TCL_OK) goto errorExit; if (argc == 1) sprintf (interp->result, "file%d file%d", fileIds [0], fileIds [1]); else { sprintf (fHandle, "file%d", fileIds [0]); if (Tcl_SetVar (interp, argv[1], fHandle, TCL_LEAVE_ERR_MSG) == NULL) goto errorExit; sprintf (fHandle, "file%d", fileIds [1]); if (Tcl_SetVar (interp, argv[2], fHandle, TCL_LEAVE_ERR_MSG) == NULL) goto errorExit; } return TCL_OK; errorExit: close (fileIds [0]); close (fileIds [1]); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * Tcl_CopyfileCmd -- * Implements the copyfile TCL command: * copyfile handle1 handle2 [lines] * * Results: * Nothing if it worked, else an error. * *----------------------------------------------------------------------------- */ int Tcl_CopyfileCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { OpenFile *fromFilePtr, *toFilePtr; char transferBuffer [2048]; int bytesRead; if (argc != 3) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " fromfilehandle tofilehandle", (char *) NULL); return TCL_ERROR; } if (TclGetOpenFile (interp, argv[1], &fromFilePtr) != TCL_OK) return TCL_ERROR; if (TclGetOpenFile (interp, argv[2], &toFilePtr) != TCL_OK) return TCL_ERROR; if (!fromFilePtr->readable) { interp->result = "Source file is not open for read access"; return TCL_ERROR; } if (!toFilePtr->writable) { interp->result = "Target file is not open for write access"; return TCL_ERROR; } while (TRUE) { bytesRead = fread (transferBuffer, sizeof (char), sizeof (transferBuffer), fromFilePtr->f); if (bytesRead <= 0) { if (feof (fromFilePtr->f)) break; else goto unixError; } if (fwrite (transferBuffer, sizeof (char), bytesRead, toFilePtr->f) != bytesRead) goto unixError; } return TCL_OK; unixError: interp->result = Tcl_UnixError (interp); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * GetFileType -- * * Looks at stat mode and returns a text string indicating what type of * file it is. * * Parameters: * o statBufPtr (I) - Pointer to a buffer initialized by stat or fstat. * Returns: * A pointer static text string representing the type of the file. *----------------------------------------------------------------------------- */ static char * GetFileType (statBufPtr) struct stat *statBufPtr; { char *typeStr; /* * Get a string representing the type of the file. */ if (S_ISREG (statBufPtr->st_mode)) { typeStr = "file"; } else if (S_ISDIR (statBufPtr->st_mode)) { typeStr = "directory"; } else if (S_ISCHR (statBufPtr->st_mode)) { typeStr = "characterSpecial"; } else if (S_ISBLK (statBufPtr->st_mode)) { typeStr = "blockSpecial"; } else if (S_ISFIFO (statBufPtr->st_mode)) { typeStr = "fifo"; } else if (S_ISLNK (statBufPtr->st_mode)) { typeStr = "link"; } else if (S_ISSOCK (statBufPtr->st_mode)) { typeStr = "socket"; } else { typeStr = "unknown"; } return typeStr; } /* *----------------------------------------------------------------------------- * * ReturnStatList -- * * Return file stat infomation as a keyed list. * * Parameters: * o interp (I) - The list is returned in result. * o filePtr (I) - Pointer to the Tcl open file structure. * o statBufPtr (I) - Pointer to a buffer initialized by stat or fstat. *----------------------------------------------------------------------------- */ static void ReturnStatList (interp, filePtr, statBufPtr) Tcl_Interp *interp; OpenFile *filePtr; struct stat *statBufPtr; { char statList [200]; sprintf (statList, "{atime %d} {ctime %d} {dev %d} {gid %d} {ino %d} {mode %d} ", statBufPtr->st_atime, statBufPtr->st_ctime, statBufPtr->st_dev, statBufPtr->st_gid, statBufPtr->st_ino, statBufPtr->st_mode); Tcl_AppendResult (interp, statList, (char *) NULL); sprintf (statList, "{mtime %d} {nlink %d} {size %d} {uid %d} {tty %d} {type %s}", statBufPtr->st_mtime, statBufPtr->st_nlink, statBufPtr->st_size, statBufPtr->st_uid, isatty (fileno (filePtr->f)), GetFileType (statBufPtr)); Tcl_AppendResult (interp, statList, (char *) NULL); } /* *----------------------------------------------------------------------------- * * ReturnStatArray -- * * Return file stat infomation in an array. * * Parameters: * o interp (I) - Current interpreter, error return in result. * o filePtr (I) - Pointer to the Tcl open file structure. * o statBufPtr (I) - Pointer to a buffer initialized by stat or fstat. * o arrayName (I) - The name of the array to return the info in. * Returns: * TCL_OK or TCL_ERROR. *----------------------------------------------------------------------------- */ static int ReturnStatArray (interp, filePtr, statBufPtr, arrayName) Tcl_Interp *interp; OpenFile *filePtr; struct stat *statBufPtr; char *arrayName; { char numBuf [30]; sprintf (numBuf, "%d", statBufPtr->st_dev); if (Tcl_SetVar2 (interp, arrayName, "dev", numBuf, TCL_LEAVE_ERR_MSG) == NULL) return TCL_ERROR; sprintf (numBuf, "%d", statBufPtr->st_ino); if (Tcl_SetVar2 (interp, arrayName, "ino", numBuf, TCL_LEAVE_ERR_MSG) == NULL) return TCL_ERROR; sprintf (numBuf, "%d", statBufPtr->st_mode); if (Tcl_SetVar2 (interp, arrayName, "mode", numBuf, TCL_LEAVE_ERR_MSG) == NULL) return TCL_ERROR; sprintf (numBuf, "%d", statBufPtr->st_nlink); if (Tcl_SetVar2 (interp, arrayName, "nlink", numBuf, TCL_LEAVE_ERR_MSG) == NULL) return TCL_ERROR; sprintf (numBuf, "%d", statBufPtr->st_uid); if (Tcl_SetVar2 (interp, arrayName, "uid", numBuf, TCL_LEAVE_ERR_MSG) == NULL) return TCL_ERROR; sprintf (numBuf, "%d", statBufPtr->st_gid); if (Tcl_SetVar2 (interp, arrayName, "gid", numBuf, TCL_LEAVE_ERR_MSG) == NULL) return TCL_ERROR; sprintf (numBuf, "%d", statBufPtr->st_size); if (Tcl_SetVar2 (interp, arrayName, "size", numBuf, TCL_LEAVE_ERR_MSG) == NULL) return TCL_ERROR; sprintf (numBuf, "%d", statBufPtr->st_atime); if (Tcl_SetVar2 (interp, arrayName, "atime", numBuf, TCL_LEAVE_ERR_MSG) == NULL) return TCL_ERROR; sprintf (numBuf, "%d", statBufPtr->st_mtime); if (Tcl_SetVar2 (interp, arrayName, "mtime", numBuf, TCL_LEAVE_ERR_MSG) == NULL) return TCL_ERROR; sprintf (numBuf, "%d", statBufPtr->st_ctime); if (Tcl_SetVar2 (interp, arrayName, "ctime", numBuf, TCL_LEAVE_ERR_MSG) == NULL) return TCL_ERROR; if (Tcl_SetVar2 (interp, arrayName, "tty", isatty (fileno (filePtr->f)) ? "1" : "0", TCL_LEAVE_ERR_MSG) == NULL) return TCL_ERROR; if (Tcl_SetVar2 (interp, arrayName, "type", GetFileType (statBufPtr), TCL_LEAVE_ERR_MSG) == NULL) return TCL_ERROR; return TCL_OK; } /* *----------------------------------------------------------------------------- * * ReturnStatItem -- * * Return a single file status item. * * Parameters: * o interp (I) - Item or error returned in result. * o filePtr (I) - Pointer to the Tcl open file structure. * o statBufPtr (I) - Pointer to a buffer initialized by stat or fstat. * o itemName (I) - The name of the desired item. * Returns: * TCL_OK or TCL_ERROR. *----------------------------------------------------------------------------- */ static int ReturnStatItem (interp, filePtr, statBufPtr, itemName) Tcl_Interp *interp; OpenFile *filePtr; struct stat *statBufPtr; char *itemName; { if (STREQU (itemName, "dev")) sprintf (interp->result, "%d", statBufPtr->st_dev); else if (STREQU (itemName, "ino")) sprintf (interp->result, "%d", statBufPtr->st_ino); else if (STREQU (itemName, "mode")) sprintf (interp->result, "%d", statBufPtr->st_mode); else if (STREQU (itemName, "nlink")) sprintf (interp->result, "%d", statBufPtr->st_nlink); else if (STREQU (itemName, "uid")) sprintf (interp->result, "%d", statBufPtr->st_uid); else if (STREQU (itemName, "gid")) sprintf (interp->result, "%d", statBufPtr->st_gid); else if (STREQU (itemName, "size")) sprintf (interp->result, "%d", statBufPtr->st_size); else if (STREQU (itemName, "atime")) sprintf (interp->result, "%d", statBufPtr->st_atime); else if (STREQU (itemName, "mtime")) sprintf (interp->result, "%d", statBufPtr->st_mtime); else if (STREQU (itemName, "ctime")) sprintf (interp->result, "%d", statBufPtr->st_ctime); else if (STREQU (itemName, "type")) interp->result = GetFileType (statBufPtr); else if (STREQU (itemName, "tty")) interp->result = isatty (fileno (filePtr->f)) ? "1" : "0"; else { Tcl_AppendResult (interp, "Got \"", itemName, "\", expected one of ", "\"atime\", \"ctime\", \"dev\", \"gid\", \"ino\", ", "\"mode\", \"mtime\", \"nlink\", \"size\", ", "\"tty\", \"type\", \"uid\"", (char *) NULL); return TCL_ERROR; } return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_FstatCmd -- * Implements the fstat TCL command: * fstat handle [item]|[stat arrayvar] * *----------------------------------------------------------------------------- */ int Tcl_FstatCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { OpenFile *filePtr; struct stat statBuf; if ((argc < 2) || (argc > 4)) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " handle [item]|[stat arrayVar]", (char *) NULL); return TCL_ERROR; } if (TclGetOpenFile (interp, argv[1], &filePtr) != TCL_OK) return TCL_ERROR; if (fstat (fileno (filePtr->f), &statBuf)) { interp->result = Tcl_UnixError (interp); return TCL_ERROR; } /* * Return data in the requested format. */ if (argc == 4) { if (!STREQU (argv [2], "stat")) { Tcl_AppendResult (interp, "expected item name of \"stat\" when ", "using array name", (char *) NULL); return TCL_ERROR; } return ReturnStatArray (interp, filePtr, &statBuf, argv [3]); } if (argc == 3) return ReturnStatItem (interp, filePtr, &statBuf, argv [2]); ReturnStatList (interp, filePtr, &statBuf); return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_LgetsCmd -- * * Implements the `lgets' Tcl command: * lgets fileId [varName] * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *----------------------------------------------------------------------------- */ int Tcl_LgetsCmd (notUsed, interp, argc, argv) ClientData notUsed; Tcl_Interp *interp; int argc; char **argv; { dynamicBuf_t dynBuf; char prevChar; int bracesDepth, inQuotes, inChar; OpenFile *filePtr; if ((argc != 2) && (argc != 3)) { Tcl_AppendResult (interp, tclXWrongArgs, argv[0], " fileId [varName]", (char *) NULL); return TCL_ERROR; } if (TclGetOpenFile(interp, argv[1], &filePtr) != TCL_OK) { return TCL_ERROR; } if (!filePtr->readable) { Tcl_AppendResult (interp, "\"", argv[1], "\" wasn't opened for reading", (char *) NULL); return TCL_ERROR; } Tcl_DynBufInit (&dynBuf); prevChar = '\0'; bracesDepth = 0; inQuotes = FALSE; /* * Read in characters, keeping trace of if we are in the middle of a {} * or "" part of the list. */ while (TRUE) { if (dynBuf.len + 1 == dynBuf.size) Tcl_ExpandDynBuf (&dynBuf, 0); inChar = getc (filePtr->f); if (inChar == EOF) { if (ferror (filePtr->f)) goto readError; break; } if (prevChar != '\\') { switch (inChar) { case '{': bracesDepth++; break; case '}': if (bracesDepth == 0) break; bracesDepth--; break; case '"': if (bracesDepth == 0) inQuotes = !inQuotes; break; } } prevChar = inChar; if ((inChar == '\n') && (bracesDepth == 0) && !inQuotes) break; dynBuf.ptr [dynBuf.len++] = inChar; } dynBuf.ptr [dynBuf.len] = '\0'; if ((bracesDepth != 0) || inQuotes) { Tcl_AppendResult (interp, "miss-matched ", (bracesDepth != 0) ? "braces" : "quote", " in inputed list: ", dynBuf.ptr, (char *) NULL); goto errorExit; } if (argc == 2) { Tcl_DynBufReturn (interp, &dynBuf); } else { if (Tcl_SetVar (interp, argv[2], dynBuf.ptr, TCL_LEAVE_ERR_MSG) == NULL) goto errorExit; if (feof (filePtr->f) && (dynBuf.len == 0)) interp->result = "-1"; else sprintf (interp->result, "%d", dynBuf.len); Tcl_DynBufFree (&dynBuf); } return TCL_OK; readError: Tcl_ResetResult (interp); interp->result = Tcl_UnixError (interp); clearerr (filePtr->f); goto errorExit; errorExit: Tcl_DynBufFree (&dynBuf); return TCL_ERROR; } #ifndef TCL_NO_FILE_LOCKING /* *----------------------------------------------------------------------------- * * ParseLockUnlockArgs -- * * Parse the positional arguments common to both the flock and funlock * commands: * ... handle [start] [length] [origin] * * Parameters: * o interp (I) - Pointer to the interpreter, errors returned in result. * o argc (I) - Count of arguments supplied to the comment. * o argv (I) - Commant argument vector. * o argIdx (I) - Index of the first common agument to parse. * o filePtrPtr (O) - Pointer to the open file structure returned here. * o lockInfoPtr (O) - Fcntl info structure, start, length and whence * are initialized by this routine. * Returns: * TCL_OK if all is OK, TCL_ERROR and an error message is result. * *----------------------------------------------------------------------------- */ static int ParseLockUnlockArgs (interp, argc, argv, argIdx, filePtrPtr, lockInfoPtr) Tcl_Interp *interp; int argc; char **argv; int argIdx; OpenFile **filePtrPtr; struct flock *lockInfoPtr; { lockInfoPtr->l_start = 0; lockInfoPtr->l_len = 0; lockInfoPtr->l_whence = 0; if (TclGetOpenFile (interp, argv [argIdx], filePtrPtr) != TCL_OK) return TCL_ERROR; argIdx++; if ((argIdx < argc) && (argv [argIdx][0] != '\0')) { if (Tcl_GetLong (interp, argv [argIdx], &lockInfoPtr->l_start) != TCL_OK) return TCL_ERROR; } argIdx++; if ((argIdx < argc) && (argv [argIdx][0] != '\0')) { if (Tcl_GetLong (interp, argv [argIdx], &lockInfoPtr->l_len) != TCL_OK) return TCL_ERROR; } argIdx++; if (argIdx < argc) { if (STREQU (argv [argIdx], "start")) lockInfoPtr->l_whence = 0; else if (STREQU (argv [argIdx], "current")) lockInfoPtr->l_whence = 1; else if (STREQU (argv [argIdx], "end")) lockInfoPtr->l_whence = 2; else goto badOrgin; } return TCL_OK; badOrgin: Tcl_AppendResult(interp, "bad origin \"", argv [argIdx], "\": should be \"start\", \"current\", or \"end\"", (char *) NULL); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * Tcl_FlockCmd -- * * Implements the `flock' Tcl command: * flock [-read|-write] [-nowait] handle [start] [length] [origin] * * Results: * A standard Tcl result. * *----------------------------------------------------------------------------- */ int Tcl_FlockCmd (notUsed, interp, argc, argv) ClientData notUsed; Tcl_Interp *interp; int argc; char **argv; { int argIdx, stat; int readLock = FALSE, writeLock = FALSE, noWaitLock = FALSE; OpenFile *filePtr; struct flock lockInfo; if (argc < 2) goto invalidArgs; /* * Parse off the options. */ for (argIdx = 1; (argIdx < argc) && (argv [argIdx][0] == '-'); argIdx++) { if (STREQU (argv [argIdx], "-read")) { readLock = TRUE; continue; } if (STREQU (argv [argIdx], "-write")) { writeLock = TRUE; continue; } if (STREQU (argv [argIdx], "-nowait")) { noWaitLock = TRUE; continue; } goto invalidOption; } if (readLock && writeLock) goto bothReadAndWrite; if (!(readLock || writeLock)) writeLock = TRUE; /* * Make sure there are enough arguments left and then parse the * positional ones. */ if ((argIdx > argc - 1) || (argIdx < argc - 4)) goto invalidArgs; if (ParseLockUnlockArgs (interp, argc, argv, argIdx, &filePtr, &lockInfo) != TCL_OK) return TCL_ERROR; if (readLock && !filePtr->readable) goto notReadable; if (writeLock && !filePtr->writable) goto notWritable; lockInfo.l_type = writeLock ? F_WRLCK : F_RDLCK; stat = fcntl (fileno (filePtr->f), noWaitLock ? F_SETLK : F_SETLKW, &lockInfo); if ((stat < 0) && (errno != EACCES)) { interp->result = Tcl_UnixError (interp); return TCL_ERROR; } if (noWaitLock) interp->result = (stat < 0) ? "0" : "1"; return TCL_OK; /* * Code to return error messages. */ invalidArgs: Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " [-read|-write] ", "[-nowait] handle [start] [length] [origin]", (char *) NULL); return TCL_ERROR; /* * Invalid option found at argv [argIdx]. */ invalidOption: Tcl_AppendResult (interp, "invalid option \"", argv [argIdx], "\" expected one of \"-read\", \"-write\", or ", "\"-nowait\"", (char *) NULL); return TCL_ERROR; bothReadAndWrite: interp->result = "can not specify both \"-read\" and \"-write\""; return TCL_ERROR; notReadable: interp->result = "file not open for reading"; return TCL_ERROR; notWritable: interp->result = "file not open for writing"; return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * Tcl_FunlockCmd -- * * Implements the `funlock' Tcl command: * funlock handle [start] [length] [origin] * * Results: * A standard Tcl result. * *----------------------------------------------------------------------------- */ int Tcl_FunlockCmd (notUsed, interp, argc, argv) ClientData notUsed; Tcl_Interp *interp; int argc; char **argv; { OpenFile *filePtr; struct flock lockInfo; if ((argc < 2) || (argc > 5)) goto invalidArgs; if (ParseLockUnlockArgs (interp, argc, argv, 1, &filePtr, &lockInfo) != TCL_OK) return TCL_ERROR; lockInfo.l_type = F_UNLCK; if (fcntl (fileno(filePtr->f), F_SETLK, &lockInfo) < 0) { interp->result = Tcl_UnixError (interp); return TCL_ERROR; } return TCL_OK; invalidArgs: Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " handle [start] [length] [origin]", (char *) NULL); return TCL_ERROR; } #else /* *----------------------------------------------------------------------------- * * Tcl_FlockCmd -- * * Version of the command that always returns an error on systems that * don't have file locking. * *----------------------------------------------------------------------------- */ int Tcl_FlockCmd (notUsed, interp, argc, argv) ClientData notUsed; Tcl_Interp *interp; int argc; char **argv; { interp->result = "File locking is not available on this system"; return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * Tcl_FunlockCmd -- * * Version of the command that always returns an error on systems that * don't have file locking/ * *----------------------------------------------------------------------------- */ int Tcl_FunlockCmd (notUsed, interp, argc, argv) ClientData notUsed; Tcl_Interp *interp; int argc; char **argv; { return Tcl_FlockCmd (notUsed, interp, argc, argv); } #endif micropolis-activity/src/tclx/src/mainplus.cc0000664000076400007640000000515310724145723021526 0ustar simcitysimcity/* * main++.C -- * * C++ based main. It is an alternative to the existing main.c to set up * the Tcl shell and may be used as a example on how to use tcl++.h * *--------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer, * Mark Diekhans, and Peter da Silva make no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. *--------------------------------------------------------------------------- * Based on Tcl C++ classes developed by Parag Patel. *----------------------------------------------------------------------------- * $Id: main++.C,v 2.0 1992/10/16 04:51:31 markd Rel $ *----------------------------------------------------------------------------- */ #include #include "tcl++.h" /* * This file is optional. */ #include "patchlevel.h" int main (int argc, char **argv) { TclInterp_cl *interpPtr; /* * If history is to be used, then set the eval procedure pointer that * Tcl_CommandLoop so that history will be recorded. This reference * also brings in history from Tcl.a. */ #ifndef TCL_NOHISTORY tclShellCmdEvalProc = (int (*)())Tcl_RecordAndEval; #endif /* * Create a Tcl interpreter for the session, with all extended commands * initialized. This can be replaced with Tcl_CreateInterp followed * by a subset of the extended command initializaton procedures if * desired. */ interpPtr = new TclInterp_cl; /* * >>>>>> INITIALIZE APPLICATION SPECIFIC COMMANDS HERE <<<<<< */ /* * Load the tcl startup code, this should pull in all of the tcl * procs, paths, command line processing, autoloads, packages, etc. * If Tcl was invoked interactively, Tcl_Startup will give it * a command loop. */ interpPtr->Startup (argc, argv, NULL, 0); /* * Delete the interpreter (not neccessary under Unix, but we do * it if TCL_MEM_DEBUG is set to better enable us to catch memory * corruption problems) */ #ifdef TCL_MEM_DEBUG delete interpPtr; #endif #ifdef TCL_SHELL_MEM_LEAK printf (" >>> Dumping active memory list to mem.lst <<<\n"); if (Tcl_DumpActiveMemory ("mem.lst") != TCL_OK) panic ("error accessing `mem.lst': %s", strerror (errno)); #endif exit(0); } micropolis-activity/src/tclx/src/tclxcret.c0000664000076400007640000002566410724145723021374 0ustar simcitysimcity/* * tclXcreate.c * * Contains a routine to create an interpreter and initialize all the Extended * Tcl commands. It is is a seperate file so that an application may create * the interpreter and add in only a subset of the Extended Tcl commands. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXcreate.c,v 2.0 1992/10/16 04:50:33 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclxint.h" int matherr (); /* * This is a little kludge to make sure matherr is brought in from the Tcl * library if it is not already defined. This could be done on the link line, * but this makes sure it happens. This is a global so optimizers don't thow * away the assignment to it. */ static int (*bringInMathErr)() = matherr; /* *----------------------------------------------------------------------------- * * Tcl_CreateExtendedInterp -- * * Create a new TCL command interpreter and initialize all of the * extended Tcl commands.. * * Results: * The return value is a token for the interpreter. *----------------------------------------------------------------------------- */ Tcl_Interp * Tcl_CreateExtendedInterp () { Tcl_Interp *interp; interp = Tcl_CreateInterp (); /* * from tclCkalloc.c (now part of the UCB Tcl). */ #ifdef TCL_MEM_DEBUG Tcl_InitMemory (interp); #endif /* * from tclXbsearch.c */ Tcl_CreateCommand (interp, "bsearch", Tcl_BsearchCmd, (ClientData)NULL, (void (*)())NULL); /* * from tclXchmod.c */ Tcl_CreateCommand (interp, "chgrp", Tcl_ChgrpCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "chmod", Tcl_ChmodCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "chown", Tcl_ChownCmd, (ClientData)NULL, (void (*)())NULL); /* * from tclXclock.c */ Tcl_CreateCommand (interp, "getclock", Tcl_GetclockCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "fmtclock", Tcl_FmtclockCmd, (ClientData)NULL, (void (*)())NULL); /* * from tclXcnvdate.c */ Tcl_CreateCommand (interp, "convertclock", Tcl_ConvertclockCmd, (ClientData)NULL, (void (*)())NULL); /* * from tclXcmdloop.c */ Tcl_CreateCommand (interp, "commandloop", Tcl_CommandloopCmd, (ClientData)NULL, (void (*)())NULL); /* * from tclXdebug.c */ Tcl_InitDebug (interp); /* * from tclXdup.c */ Tcl_CreateCommand (interp, "dup", Tcl_DupCmd, (ClientData) NULL, (void (*)())NULL); /* * from tclXtclXfcntl.c */ Tcl_CreateCommand (interp, "fcntl", Tcl_FcntlCmd, (ClientData) NULL, (void (*)())NULL); /* * from tclXfilecmds.c */ Tcl_CreateCommand (interp, "pipe", Tcl_PipeCmd, (ClientData) NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "copyfile", Tcl_CopyfileCmd, (ClientData) NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "fstat", Tcl_FstatCmd, (ClientData) NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "lgets", Tcl_LgetsCmd, (ClientData) NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "flock", Tcl_FlockCmd, (ClientData) NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "funlock", Tcl_FunlockCmd, (ClientData) NULL, (void (*)())NULL); /* * from tclXfilescan.c */ Tcl_InitFilescan (interp); /* * from tclXfmath.c */ Tcl_CreateCommand(interp, "acos", Tcl_AcosCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "asin", Tcl_AsinCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "atan", Tcl_AtanCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "cos", Tcl_CosCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "sin", Tcl_SinCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "tan", Tcl_TanCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "cosh", Tcl_CoshCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "sinh", Tcl_SinhCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "tanh", Tcl_TanhCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "exp", Tcl_ExpCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "log", Tcl_LogCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "log10", Tcl_Log10Cmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "sqrt", Tcl_SqrtCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "fabs", Tcl_FabsCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "floor", Tcl_FloorCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "ceil", Tcl_CeilCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "fmod", Tcl_FmodCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "pow", Tcl_PowCmd, (ClientData)NULL, (void (*)())NULL); /* * from tclXgeneral.c */ Tcl_CreateCommand(interp, "echo", Tcl_EchoCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "infox", Tcl_InfoxCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "loop", Tcl_LoopCmd, (ClientData)NULL, (void (*)())NULL); /* * from tclXid.c */ Tcl_CreateCommand (interp, "id", Tcl_IdCmd, (ClientData)NULL, (void (*)())NULL); /* * from tclXkeylist.c */ Tcl_CreateCommand(interp, "keyldel", Tcl_KeyldelCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "keylget", Tcl_KeylgetCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "keylkeys", Tcl_KeylkeysCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "keylset", Tcl_KeylsetCmd, (ClientData)NULL, (void (*)())NULL); /* * from tclXlist.c */ Tcl_CreateCommand(interp, "lvarcat", Tcl_LvarcatCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "lvarpop", Tcl_LvarpopCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "lvarpush", Tcl_LvarpushCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "lempty", Tcl_LemptyCmd, (ClientData)NULL, (void (*)())NULL); /* * from tclXmath.c */ Tcl_CreateCommand (interp, "max", Tcl_MaxCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "min", Tcl_MinCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "random", Tcl_RandomCmd, (ClientData)NULL, (void (*)())NULL); /* * from tclXmsgcat.c */ Tcl_InitMsgCat (interp); /* * from tclXprocess.c */ Tcl_CreateCommand (interp, "execl", Tcl_ExeclCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "fork", Tcl_ForkCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "wait", Tcl_WaitCmd, (ClientData)NULL, (void (*)())NULL); /* * from tclXprofile.c */ Tcl_InitProfile (interp); /* * from tclXselect.c */ Tcl_CreateCommand (interp, "select", Tcl_SelectCmd, (ClientData) NULL, (void (*)())NULL); /* * from tclXsignal.c */ Tcl_InitSignalHandling (interp); /* * from tclXstring.c */ Tcl_CreateCommand(interp, "cindex", Tcl_CindexCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "clength", Tcl_ClengthCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "crange", Tcl_CrangeCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "csubstr", Tcl_CrangeCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand(interp, "replicate", Tcl_ReplicateCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "translit", Tcl_TranslitCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "ctype", Tcl_CtypeCmd, (ClientData)NULL, (void (*)())NULL); /* * from tclXlib.c */ Tcl_CreateCommand (interp, "demand_load", Tcl_Demand_loadCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "loadlibindex", Tcl_LoadlibindexCmd, (ClientData)NULL, (void (*)())NULL); /* * from tclXunixcmds.c */ Tcl_CreateCommand (interp, "system", Tcl_SystemCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "times", Tcl_TimesCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "umask", Tcl_UmaskCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "link", Tcl_LinkCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "unlink", Tcl_UnlinkCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "mkdir", Tcl_MkdirCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "rmdir", Tcl_RmdirCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "alarm", Tcl_AlarmCmd, (ClientData)NULL, (void (*)())NULL); Tcl_CreateCommand (interp, "sleep", Tcl_SleepCmd, (ClientData)NULL, (void (*)())NULL); return interp; } micropolis-activity/src/tclx/src/tclxclck.c0000664000076400007640000000627010724145723021343 0ustar simcitysimcity/* * tclXclock.c -- * * Contains the TCL time and date related commands. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXclock.c,v 2.0 1992/10/16 04:50:28 markd Rel $ *----------------------------------------------------------------------------- */ #include #include "tclxint.h" /* *----------------------------------------------------------------------------- * * Tcl_GetclockCmd -- * Implements the TCL getclock command: * getclock * * Results: * Standard TCL results. * *----------------------------------------------------------------------------- */ int Tcl_GetclockCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { if (argc != 1) { Tcl_AppendResult (interp, tclXWrongArgs, argv[0], (char *) NULL); return TCL_ERROR; } sprintf (interp->result, "%ld", time ((long *) NULL)); return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_FmtclockCmd -- * Implements the TCL fmtclock command: * fmtclock clockval [format] [GMT|{}] * * Results: * Standard TCL results. * *----------------------------------------------------------------------------- */ int Tcl_FmtclockCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { int useGMT = FALSE; long clockVal; char *format; struct tm *timeDataPtr; int fmtError; if ((argc < 2) || (argc > 4)) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " clockval [format] [GMT|{}]", (char *) NULL); return TCL_ERROR; } if (Tcl_GetLong (interp, argv[1], &clockVal) != TCL_OK) return TCL_ERROR; if ((argc == 4) && (argv [3][0] != '\0')) { if (!STREQU (argv [3], "GMT")) { Tcl_AppendResult (interp, "expected \"GMT\" or {} got \"", argv [3], "\"", (char *) NULL); return TCL_ERROR; } useGMT = TRUE; } if ((argc >= 3) && (argv [2][0] != '\0')) format = argv[2]; else format = "%a %b %d %X %Z %Y"; if (useGMT) timeDataPtr = gmtime (&clockVal); else timeDataPtr = localtime (&clockVal); fmtError = strftime (interp->result, TCL_RESULT_SIZE, format, timeDataPtr) < 0; if (fmtError) { Tcl_AppendResult (interp, "error formating time", (char *) NULL); return TCL_ERROR; } return TCL_OK; } micropolis-activity/src/tclx/src/tclxgenl.c0000664000076400007640000001316110724145723021351 0ustar simcitysimcity/* * tclXgeneral.c -- * * Contains general extensions to the basic TCL command set. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXgeneral.c,v 2.0 1992/10/16 04:50:47 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclxint.h" /* * These globals must be set by main for the information to be defined. */ char *tclxVersion = "?"; /* Extended Tcl version number. */ int tclxPatchlevel = 0; /* Extended Tcl patch level. */ char *tclAppName = NULL; /* Application name */ char *tclAppLongname = NULL; /* Long, natural language application name */ char *tclAppVersion = NULL; /* Version number of the application */ /* *----------------------------------------------------------------------------- * * Tcl_EchoCmd -- * Implements the TCL echo command: * echo str1 [str2..] * * Results: * Always returns TCL_OK. * *----------------------------------------------------------------------------- */ int Tcl_EchoCmd(clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { int idx; for (idx = 1; idx < argc; idx++) { fputs (argv [idx], stdout); if (idx < (argc - 1)) printf(" "); } printf("\n"); return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_InfoxCmd -- * Implements the TCL infox command: * infox option * *----------------------------------------------------------------------------- */ int Tcl_InfoxCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { if (argc != 2) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " option", (char *) NULL); return TCL_ERROR; } if (STREQU ("version", argv [1])) { Tcl_SetResult (interp, tclxVersion, TCL_STATIC); } else if (STREQU ("patchlevel", argv [1])) { char numBuf [32]; sprintf (numBuf, "%d", tclxPatchlevel); Tcl_SetResult (interp, numBuf, TCL_VOLATILE); } else if (STREQU ("appname", argv [1])) { if (tclAppName != NULL) Tcl_SetResult (interp, tclAppName, TCL_STATIC); } else if (STREQU ("applongname", argv [1])) { if (tclAppLongname != NULL) Tcl_SetResult (interp, tclAppLongname, TCL_STATIC); } else if (STREQU ("appversion", argv [1])) { if (tclAppVersion != NULL) Tcl_SetResult (interp, tclAppVersion, TCL_STATIC); } else { Tcl_AppendResult (interp, "illegal option \"", argv [1], "\" expect one of: version, patchlevel, appname, ", "applongname, or appversion", (char *) NULL); return TCL_ERROR; } return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_LoopCmd -- * Implements the TCL loop command: * loop var start end [increment] command * * Results: * Standard TCL results. * *----------------------------------------------------------------------------- */ int Tcl_LoopCmd (dummy, interp, argc, argv) ClientData dummy; Tcl_Interp *interp; int argc; char **argv; { int result = TCL_OK; long i, first, limit, incr = 1; char *command; char itxt [12]; if ((argc < 5) || (argc > 6)) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " var first limit [incr] command", (char *) NULL); return TCL_ERROR; } if (Tcl_GetLong (interp, argv[2], &first) != TCL_OK) return TCL_ERROR; if (Tcl_GetLong (interp, argv[3], &limit) != TCL_OK) return TCL_ERROR; if (argc == 5) command = argv[4]; else { if (Tcl_GetLong (interp, argv[4], &incr) != TCL_OK) return TCL_ERROR; command = argv[5]; } for (i = first; (((i < limit) && (incr > 0)) || ((i > limit) && (incr < 0))); i += incr) { sprintf (itxt,"%ld",i); if (Tcl_SetVar (interp, argv [1], itxt, TCL_LEAVE_ERR_MSG) == NULL) return TCL_ERROR; result = Tcl_Eval(interp, command, 0, (char **) NULL); if (result != TCL_OK) { if (result == TCL_CONTINUE) { result = TCL_OK; } else if (result == TCL_BREAK) { result = TCL_OK; break; } else if (result == TCL_ERROR) { char buf [64]; sprintf (buf, "\n (\"loop\" body line %d)", interp->errorLine); Tcl_AddErrorInfo (interp, buf); break; } else { break; } } } /* * Set variable to its final value. */ sprintf (itxt,"%ld",i); if (Tcl_SetVar (interp, argv [1], itxt, TCL_LEAVE_ERR_MSG) == NULL) return TCL_ERROR; return result; } micropolis-activity/src/tclx/src/patchlvl.h0000664000076400007640000000002610724145723021347 0ustar simcitysimcity #define PATCHLEVEL 1 micropolis-activity/src/tclx/src/tclxstr.c0000664000076400007640000003244110724145723021236 0ustar simcitysimcity/* * tclXstring.c -- * * Extended TCL string and character manipulation commands. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXstring.c,v 2.0 1992/10/16 04:51:16 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclxint.h" /* * Prototypes of internal functions. */ static unsigned int ExpandString _ANSI_ARGS_((unsigned char *s, unsigned char buf[])); /* *----------------------------------------------------------------------------- * * Tcl_CindexCmd -- * Implements the cindex TCL command: * cindex string indexExpr * * Results: * Returns the character indexed by index (zero based) from * string. * *----------------------------------------------------------------------------- */ int Tcl_CindexCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { long index; if (argc != 3) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " string indexExpr", (char *) NULL); return TCL_ERROR; } if (Tcl_ExprLong (interp, argv[2], &index) != TCL_OK) return TCL_ERROR; if (index >= strlen (argv [1])) return TCL_OK; interp->result [0] = argv[1][index]; interp->result [1] = 0; return TCL_OK; } /* Tcl_CindexCmd */ /* *----------------------------------------------------------------------------- * * Tcl_ClengthCmd -- * Implements the clength TCL command: * clength string * * Results: * Returns the length of string in characters. * *----------------------------------------------------------------------------- */ int Tcl_ClengthCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { if (argc != 2) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " string", (char *) NULL); return TCL_ERROR; } sprintf (interp->result, "%d", strlen (argv[1])); return TCL_OK; } /* Tcl_ClengthCmd */ /* *----------------------------------------------------------------------------- * * Tcl_CrangeCmd -- * Implements the crange and csubstr TCL commands: * crange string firstExpr lastExpr * csubstr string firstExpr lengthExpr * * Results: * Standard Tcl result. *----------------------------------------------------------------------------- */ int Tcl_CrangeCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { long fullLen, first; long subLen; char *strPtr; char holdChar; int isRange = (argv [0][1] == 'r'); /* csubstr or crange */ if (argc != 4) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " string firstExpr ", (isRange) ? "lastExpr" : "lengthExpr", (char *) NULL); return TCL_ERROR; } if (Tcl_ExprLong (interp, argv[2], &first) != TCL_OK) return TCL_ERROR; fullLen = strlen (argv [1]); if (first >= fullLen) return TCL_OK; if (STREQU (argv[3], "end")) subLen = fullLen - first; else { if (Tcl_ExprLong (interp, argv[3], &subLen) != TCL_OK) return TCL_ERROR; if (isRange) { if (subLen < first) { Tcl_AppendResult (interp, "last is before first", (char *) NULL); return TCL_ERROR; } subLen = subLen - first +1; } if (first + subLen > fullLen) subLen = fullLen - first; } strPtr = argv [1] + first; holdChar = strPtr [subLen]; strPtr [subLen] = '\0'; Tcl_SetResult (interp, strPtr, TCL_VOLATILE); strPtr [subLen] = holdChar; return TCL_OK; } /* Tcl_CrangeCmd */ /* *----------------------------------------------------------------------------- * * Tcl_ReplicateCmd -- * Implements the replicate TCL command: * replicate string countExpr * See the string(TCL) manual page. * * Results: * Returns string replicated count times. * *----------------------------------------------------------------------------- */ int Tcl_ReplicateCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { long repCount; register char *srcPtr, *scanPtr, *newPtr; register long newLen, cnt; if (argc != 3) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " string countExpr", (char *) NULL); return TCL_ERROR; } if (Tcl_ExprLong (interp, argv[2], &repCount) != TCL_OK) return TCL_ERROR; srcPtr = argv [1]; newLen = strlen (srcPtr) * repCount; if (newLen >= TCL_RESULT_SIZE) Tcl_SetResult (interp, ckalloc ((unsigned) newLen + 1), TCL_DYNAMIC); newPtr = interp->result; for (cnt = 0; cnt < repCount; cnt++) { for (scanPtr = srcPtr; *scanPtr != 0; scanPtr++) *newPtr++ = *scanPtr; } *newPtr = 0; return TCL_OK; } /* Tcl_ReplicateCmd */ /* *----------------------------------------------------------------------------- * * ExpandString -- * Build an expand version of a translit range specification. * * Results: * TRUE it the expansion is ok, FALSE it its too long. * *----------------------------------------------------------------------------- */ #define MAX_EXPANSION 255 static unsigned int ExpandString (s, buf) unsigned char *s; unsigned char buf[]; { int i, j; i = 0; while((*s !=0) && i < MAX_EXPANSION) { if(s[1] == '-' && s[2] > s[0]) { for(j = s[0]; j <= s[2]; j++) buf[i++] = j; s += 3; } else buf[i++] = *s++; } buf[i] = 0; return (i < MAX_EXPANSION); } /* *----------------------------------------------------------------------------- * * Tcl_TranslitCmd -- * Implements the TCL translit command: * translit inrange outrange string * * Results: * Standard TCL results. * *----------------------------------------------------------------------------- */ int Tcl_TranslitCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { unsigned char from [MAX_EXPANSION+1]; unsigned char to [MAX_EXPANSION+1]; unsigned char map [MAX_EXPANSION+1]; unsigned char *s, *t; int idx; if (argc != 4) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " from to string", (char *) NULL); return TCL_ERROR; } if (!ExpandString ((unsigned char *) argv[1], from)) { interp->result = "inrange expansion too long"; return TCL_ERROR; } if (!ExpandString ((unsigned char *) argv[2], to)) { interp->result = "outrange expansion too long"; return TCL_ERROR; } for (idx = 0; idx <= MAX_EXPANSION; idx++) map [idx] = idx; for (idx = 0; to [idx] != '\0'; idx++) { if (from [idx] != '\0') map [from [idx]] = to [idx]; else break; } if (to [idx] != '\0') { interp->result = "inrange longer than outrange"; return TCL_ERROR; } for (; from [idx] != '\0'; idx++) map [from [idx]] = 0; for (s = t = (unsigned char *) argv[3]; *s != '\0'; s++) { if (map[*s] != '\0') *t++ = map [*s]; } *t = '\0'; Tcl_SetResult (interp, argv[3], TCL_VOLATILE); return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_CtypeCmd -- * * This function implements the 'ctype' command: * ctype class string * * Where class is one of the following: * digit, xdigit, lower, upper, alpha, alnum, * space, cntrl, punct, print, graph, ascii, char or ord. * * Results: * One or zero: Depending if all the characters in the string are of * the desired class. Char and ord provide conversions and return the * converted value. * *----------------------------------------------------------------------------- */ int Tcl_CtypeCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { register char *class; register char *scanPtr = argv [2]; if (argc != 3) { Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " class string", (char *) NULL); return TCL_ERROR; } class = argv [1]; /* * Handle conversion requests. */ if (STREQU (class, "char")) { int number; if (Tcl_GetInt (interp, argv [2], &number) != TCL_OK) return TCL_ERROR; if ((number < 0) || (number > 255)) { Tcl_AppendResult (interp, "number must be in the range 0..255", (char *) NULL); return TCL_ERROR; } interp->result [0] = number; interp->result [1] = 0; return TCL_OK; } if (STREQU (class, "ord")) { if (strlen (argv [2]) != 1) { Tcl_AppendResult (interp, "string to convert must be only one", " character", (char *) NULL); return TCL_ERROR; } sprintf(interp->result, "%d", (int)(*argv[2])); return TCL_OK; } /* * Select based on the first letter of the 'class' argument to chose the * macro to test characters with. In some cases another character must be * switched on to determine which macro to use. This is gross, but better * we only have to do a string compare once to test if class is correct. */ if ((class [2] == 'n') && STREQU (class, "alnum")) { for (; *scanPtr != 0; scanPtr++) { if (!isalnum (*scanPtr)) break; } goto returnResult; } if ((class [2] == 'p') && STREQU (class, "alpha")) { for (; *scanPtr != 0; scanPtr++) { if (! isalpha (*scanPtr)) break; } goto returnResult; } if ((class [1] == 's') && STREQU (class, "ascii")) { for (; *scanPtr != 0; scanPtr++) { if (!isascii (*scanPtr)) break; } goto returnResult; } if (STREQU (class, "cntrl")) { for (; *scanPtr != 0; scanPtr++) { if (!iscntrl (*scanPtr)) break; } goto returnResult; } if (STREQU (class, "digit")) { for (; *scanPtr != 0; scanPtr++) { if (!isdigit (*scanPtr)) break; } goto returnResult; } if (STREQU (class, "graph")) { for (; *scanPtr != 0; scanPtr++) { if (!isgraph (*scanPtr)) break; } goto returnResult; } if (STREQU (class, "lower")) { for (; *scanPtr != 0; scanPtr++) { if (!islower (*scanPtr)) break; } goto returnResult; } if ((class [1] == 'r') && STREQU (class, "print")) { for (; *scanPtr != 0; scanPtr++) { if (!isprint (*scanPtr)) break; } goto returnResult; } if ((class [1] == 'u') && STREQU (class, "punct")) { for (; *scanPtr != 0; scanPtr++) { if (!ispunct (*scanPtr)) break; } goto returnResult; } if (STREQU (class, "space")) { for (; *scanPtr != 0; scanPtr++) { if (!isspace (*scanPtr)) break; } goto returnResult; } if (STREQU (class, "upper")) { for (; *scanPtr != 0; scanPtr++) { if (!isupper (*scanPtr)) break; } goto returnResult; } if (STREQU (class, "xdigit")) { for (; *scanPtr != 0; scanPtr++) { if (!isxdigit (*scanPtr)) break; } goto returnResult; } /* * No match on subcommand. */ Tcl_AppendResult (interp, "unrecognized class specification: \"", class, "\", expected one of: alnum, alpha, ascii, char, ", "cntrl, digit, graph, lower, ord, print, punct, space, ", "upper or xdigit", (char *) NULL); return TCL_ERROR; /* * Return true or false, depending if the end was reached. Always return * false for a null string. */ returnResult: if ((*scanPtr == 0) && (scanPtr != argv [2])) interp->result = "1"; else interp->result = "0"; return TCL_OK; } micropolis-activity/src/tclx/src/tclxprof.c0000664000076400007640000005401610724145723021376 0ustar simcitysimcity/* * tclXprofile.c -- * * Tcl performance profile monitor. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXprofile.c,v 2.0 1992/10/16 04:51:05 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclhash.h" #include "tclxint.h" /* * Stack entry used to keep track of an profiling information for active * procedure. Handling uplevels is tricky. The eval level and procedure call * level are kept track of. These are used to distinguish between an uplevel * and exiting a procedure. During an uplevel, the invisible part of the * profile stack is saved on another stack until the uplevel completes. */ typedef struct profStackEntry_t { long realTime; /* Real time at procedure entry. */ long cpuTime; /* CPU time at procedure entry. */ int procLevel; /* Call level of this procedure */ int evalLevel; /* Eval level of this prodecure */ struct profStackEntry_t *prevEntryPtr; /* Previous stack entry. */ char procName [1]; /* Procedure name. MUST BE LAST! */ } profStackEntry_t; /* * Save stack entry used to hold profile stack entries during an uplevel. */ typedef struct saveStackEntry_t { profStackEntry_t *topPtr; /* Top of saved stack section */ profStackEntry_t *bottomPtr; /* Bottom of saved stack */ struct saveStackEntry_t *prevEntryPtr; /* Previous saved stack section */ } saveStackEntry_t; /* * Data keeped on a stack snapshot. */ typedef struct profDataEntry_t { long count; long realTime; long cpuTime; } profDataEntry_t; /* * Client data structure for profile command. A count of real and CPU time * spent outside of the profiling routines is kept to factor out the variable * overhead. */ typedef struct profInfo_t { Tcl_Interp *interp; /* Interpreter this is for. */ Tcl_Trace traceHolder; /* Handle to current trace. */ int allCommands; /* Prof all commands, not just procs*/ long realTime; /* Real and CPU time counter. */ long cpuTime; long lastRealTime; /* Real and CPU time of last exit */ long lastCpuTime; /* from profiling routines. */ profStackEntry_t *stackPtr; /* Pointer to the top of prof stack */ saveStackEntry_t *saveStackPtr; /* Frames saved during an uplevel */ Tcl_HashTable profDataTable; /* Cumulative time table, Keyed by */ /* call stack list. */ } profInfo_t; /* * Prototypes of internal functions. */ static void ProcEntry _ANSI_ARGS_((profInfo_t *infoPtr, char *procName, int procLevel, int evalLevel)); static void ProcPopEntry _ANSI_ARGS_((profInfo_t *infoPtr)); static void StackSync _ANSI_ARGS_((profInfo_t *infoPtr, int procLevel, int evalLevel)); static void DoUplevel _ANSI_ARGS_((profInfo_t *infoPtr, int procLevel)); static void ProfTraceRoutine _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int evalLevel, char *command, int (*cmdProc)(), ClientData cmdClientData, int argc, char **argv)); static void CleanDataTable _ANSI_ARGS_((profInfo_t *infoPtr)); static void DeleteProfTrace _ANSI_ARGS_((profInfo_t *infoPtr)); static int DumpTableData _ANSI_ARGS_((Tcl_Interp *interp, profInfo_t *infoPtr, char *varName)); static int Tcl_ProfileCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); static void CleanUpProfMon _ANSI_ARGS_((ClientData clientData)); /* *----------------------------------------------------------------------------- * * ProcEntry -- * Push a procedure entry onto the stack. * * Parameters: * o infoPtr (I/O) - The global profiling info. * o procName (I) The procedure name. * o procLevel (I) - The procedure call level that the procedure will * execute at. * o evalLevel (I) - The eval level that the procedure will start * executing at. *----------------------------------------------------------------------------- */ static void ProcEntry (infoPtr, procName, procLevel, evalLevel) profInfo_t *infoPtr; char *procName; int procLevel; int evalLevel; { profStackEntry_t *entryPtr; /* * Calculate the size of an entry. One byte for name is in the entry. */ entryPtr = (profStackEntry_t *) ckalloc (sizeof (profStackEntry_t) + strlen (procName)); /* * Fill it in and push onto the stack. Note that the procedures frame has * not yet been layed down or the procedure body eval execute, so the value * they will be in the procedure is recorded. */ entryPtr->realTime = infoPtr->realTime; entryPtr->cpuTime = infoPtr->cpuTime; entryPtr->procLevel = procLevel; entryPtr->evalLevel = evalLevel; strcpy (entryPtr->procName, procName); entryPtr->prevEntryPtr = infoPtr->stackPtr; infoPtr->stackPtr = entryPtr; } /* *----------------------------------------------------------------------------- * * ProcPopEntry -- * Pop the procedure entry from the top of the stack and record its * times in the data table. * * Parameters: * o infoPtr (I/O) - The global profiling info. *----------------------------------------------------------------------------- */ static void ProcPopEntry (infoPtr) profInfo_t *infoPtr; { profStackEntry_t *entryPtr = infoPtr->stackPtr; profStackEntry_t *scanPtr; int idx, newEntry; char *stackListPtr; Tcl_HashEntry *hashEntryPtr; profDataEntry_t *dataEntryPtr; char *stackArgv [MAX_NESTING_DEPTH]; /* * Build up a stack list. Entry [0] is the top of the stack. */ idx= 0; scanPtr = entryPtr; while (scanPtr != NULL) { stackArgv [idx] = scanPtr->procName; idx++; scanPtr = scanPtr->prevEntryPtr; } stackListPtr = Tcl_Merge (idx, stackArgv); /* * Check the hash table for this entry, either finding an existing or * creating a new hash entry. */ hashEntryPtr = Tcl_CreateHashEntry (&infoPtr->profDataTable, stackListPtr, &newEntry); ckfree (stackListPtr); /* * Fill in or increment the entry. */ if (newEntry) { dataEntryPtr = (profDataEntry_t *) ckalloc (sizeof (profDataEntry_t)); Tcl_SetHashValue (hashEntryPtr, dataEntryPtr); dataEntryPtr->count = 0; dataEntryPtr->realTime = 0; dataEntryPtr->cpuTime = 0;; } else dataEntryPtr = (profDataEntry_t *) Tcl_GetHashValue (hashEntryPtr); dataEntryPtr->count++; dataEntryPtr->realTime += (infoPtr->realTime - entryPtr->realTime); dataEntryPtr->cpuTime += (infoPtr->cpuTime - entryPtr->cpuTime); infoPtr->stackPtr = entryPtr->prevEntryPtr; ckfree ((char *) entryPtr); } /* *----------------------------------------------------------------------------- * * StackSync -- * Synchronize the profile stack with the interpreter procedure stack. * This is done once return from uplevels, exits and error unwinds are * detected (the command after). Saved profile stack entries may be * restored and procedure entries popped from the stack. When entries * are popped, their statistics is saved in stack. * * Parameters: * o infoPtr (I/O) - The global profiling info. * o procLevel (I) - Procedure call level to return to (zero to clear stack). * o evalLevel (I) - Eval call level to return to (zero to clear stack). *----------------------------------------------------------------------------- */ static void StackSync (infoPtr, procLevel, evalLevel) profInfo_t *infoPtr; int procLevel; int evalLevel; { saveStackEntry_t *saveEntryPtr; while (TRUE) { /* * Move top of saved stack to standard stack if stack is empty or * saved eval level is greater than the top of the standard stack. */ saveEntryPtr = infoPtr->saveStackPtr; if ((saveEntryPtr != NULL) && ((infoPtr->stackPtr == NULL) || (saveEntryPtr->topPtr->evalLevel > infoPtr->stackPtr->evalLevel))) { infoPtr->stackPtr = saveEntryPtr->topPtr; infoPtr->saveStackPtr = saveEntryPtr->prevEntryPtr; ckfree ((char *) saveEntryPtr); } else { if ((infoPtr->stackPtr == NULL) || ((procLevel >= infoPtr->stackPtr->procLevel) && (evalLevel >= infoPtr->stackPtr->evalLevel))) break; /* Done */ ProcPopEntry (infoPtr); } } } /* *----------------------------------------------------------------------------- * * DoUplevel -- * * Do processing required when an uplevel is detected. Builds and * pushes a save stack containing all of the save entrys that have been * hiden by the uplevel. * * Parameters: * o infoPtr (I/O) - The global profiling info. * o procLevel (I) - The upleveled procedure call level. *----------------------------------------------------------------------------- */ static void DoUplevel (infoPtr, procLevel) profInfo_t *infoPtr; int procLevel; { profStackEntry_t *scanPtr, *bottomPtr; saveStackEntry_t *saveEntryPtr; /* * Find the stack area to save. */ bottomPtr = NULL; scanPtr = infoPtr->stackPtr; while ((scanPtr != NULL) && (scanPtr->procLevel > procLevel)) { bottomPtr = scanPtr; scanPtr = scanPtr->prevEntryPtr; } if (bottomPtr == NULL) panic ("uplevel stack confusion"); /* * Save the stack entries in the save stack. */ saveEntryPtr = (saveStackEntry_t *) ckalloc (sizeof (saveStackEntry_t)); saveEntryPtr->topPtr = infoPtr->stackPtr; saveEntryPtr->bottomPtr = bottomPtr; saveEntryPtr->prevEntryPtr = infoPtr->saveStackPtr;; infoPtr->saveStackPtr = saveEntryPtr; /* * Hide the stack entries. */ infoPtr->stackPtr = bottomPtr->prevEntryPtr; } /* *----------------------------------------------------------------------------- * * ProfTraceRoutine -- * Routine called by Tcl_Eval to do profiling. * *----------------------------------------------------------------------------- */ static void ProfTraceRoutine (clientData, interp, evalLevel, command, cmdProc, cmdClientData, argc, argv) ClientData clientData; Tcl_Interp *interp; int evalLevel; char *command; int (*cmdProc)(); ClientData cmdClientData; int argc; char **argv; { Interp *iPtr = (Interp *) interp; struct tms cpuTimes; profInfo_t *infoPtr = (profInfo_t *) clientData; int procLevel = (iPtr->varFramePtr == NULL) ? 0 : iPtr->varFramePtr->level; /* * Calculate the time spent since the last trace. */ infoPtr->realTime += times (&cpuTimes) - infoPtr->lastRealTime; infoPtr->cpuTime += (cpuTimes.tms_utime + cpuTimes.tms_stime) - infoPtr->lastCpuTime; /* * If the procedure level has changed, then something is up. Its not a * procedure call, as we head them off before they happen. Its one of * four events. * * o A uplevel command was executed. * o Returned from an uplevel. * o A procedure exit has occured. * o An error unwind has occured. * * Eval level must be tested as well as proc level to cover upleveled * proc calls that don't execute any commands. */ if ((infoPtr->stackPtr != NULL) && ((procLevel != infoPtr->stackPtr->procLevel) || (evalLevel < infoPtr->stackPtr->evalLevel))) { if ((procLevel < infoPtr->stackPtr->procLevel) && (evalLevel > infoPtr->stackPtr->evalLevel)) DoUplevel (infoPtr, procLevel); else StackSync (infoPtr, procLevel, evalLevel); } /* * If this is level zero and the stack is empty, add an entry for the * global level. This takes care of the first command at the global level * after profiling has been enabled or the case where profiling was * enabled in a proc and we have returned to the global level. */ if ((infoPtr->stackPtr == NULL) && (procLevel == 0)) ProcEntry (infoPtr, "", 0, evalLevel); /* * If this command is a procedure or if all commands are being traced, * handle the entry. */ if (infoPtr->allCommands || (TclFindProc (iPtr, argv [0]) != NULL)) ProcEntry (infoPtr, argv [0], procLevel + 1, evalLevel + 1); /* * Save the exit time of the profiling trace handler. */ infoPtr->lastRealTime = times (&cpuTimes); infoPtr->lastCpuTime = cpuTimes.tms_utime + cpuTimes.tms_stime; } /* *----------------------------------------------------------------------------- * * CleanDataTable -- * * Clean up the hash data table, releasing all resources and setting it * to the empty state. * * Parameters: * o infoPtr (I/O) - The global profiling info. *----------------------------------------------------------------------------- */ static void CleanDataTable (infoPtr) profInfo_t *infoPtr; { Tcl_HashEntry *hashEntryPtr; Tcl_HashSearch searchCookie; hashEntryPtr = Tcl_FirstHashEntry (&infoPtr->profDataTable, &searchCookie); while (hashEntryPtr != NULL) { ckfree ((char *) Tcl_GetHashValue (hashEntryPtr)); Tcl_DeleteHashEntry (hashEntryPtr); hashEntryPtr = Tcl_NextHashEntry (&searchCookie); } } /* *----------------------------------------------------------------------------- * * DeleteProfTrace -- * * Delete the profile trace and clean up the stack, logging all procs * as if they had exited. Data table must still be available. * * Parameters: * o infoPtr (I/O) - The global profiling info. *----------------------------------------------------------------------------- */ static void DeleteProfTrace (infoPtr) profInfo_t *infoPtr; { Tcl_DeleteTrace (infoPtr->interp, infoPtr->traceHolder); infoPtr->traceHolder = NULL; StackSync (infoPtr, 0, 0); } /* *----------------------------------------------------------------------------- * * DumpTableData -- * * Dump the table data to an array variable. Entries will be deleted * as they are dumped to limit memory utilization. * * Parameters: * o interp (I) - Pointer to the interprer. * o infoPtr (I/O) - The global profiling info. * o varName (I) - The name of the variable to save the data in. * Returns: * Standard Tcl command results *----------------------------------------------------------------------------- */ static int DumpTableData (interp, infoPtr, varName) Tcl_Interp *interp; profInfo_t *infoPtr; char *varName; { Tcl_HashEntry *hashEntryPtr; Tcl_HashSearch searchCookie; profDataEntry_t *dataEntryPtr; char *dataArgv [3], *dataListPtr; char countBuf [32], realTimeBuf [32], cpuTimeBuf [32]; dataArgv [0] = countBuf; dataArgv [1] = realTimeBuf; dataArgv [2] = cpuTimeBuf; Tcl_UnsetVar (interp, varName, 0); hashEntryPtr = Tcl_FirstHashEntry (&infoPtr->profDataTable, &searchCookie); while (hashEntryPtr != NULL) { dataEntryPtr = (profDataEntry_t *) Tcl_GetHashValue (hashEntryPtr); sprintf (countBuf, "%ld", dataEntryPtr->count); sprintf (realTimeBuf, "%ld", dataEntryPtr->realTime * MS_PER_TICK); sprintf (cpuTimeBuf, "%ld", dataEntryPtr->cpuTime * MS_PER_TICK); dataListPtr = Tcl_Merge (3, dataArgv); if (Tcl_SetVar2 (interp, varName, Tcl_GetHashKey (&infoPtr->profDataTable, hashEntryPtr), dataListPtr, TCL_LEAVE_ERR_MSG) == NULL) { ckfree (dataListPtr); return TCL_ERROR; } ckfree (dataListPtr); ckfree ((char *) dataEntryPtr); Tcl_DeleteHashEntry (hashEntryPtr); hashEntryPtr = Tcl_NextHashEntry (&searchCookie); } return TCL_OK; } /* *----------------------------------------------------------------------------- * * Tcl_ProfileCmd -- * Implements the TCL profile command: * profile on * profile off arrayvar * * Results: * Standard TCL results. * *----------------------------------------------------------------------------- */ static int Tcl_ProfileCmd (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; int argc; char **argv; { Interp *iPtr = (Interp *) interp; profInfo_t *infoPtr = (profInfo_t *) clientData; int idx; int cmdArgc, optionsArgc = 0; char **cmdArgv, **optionsArgv = &(argv [1]); /* * Scan for options (currently only one is supported). Set cmdArgv to * contain the rest of the command following the options. */ for (idx = 1; (idx < argc) && (argv [idx][0] == '-'); idx++) optionsArgc++; cmdArgc = argc - idx; cmdArgv = &(argv [idx]); if (cmdArgc < 1) goto wrongArgs; /* * Handle the on command. */ if (STREQU (cmdArgv [0], "on")) { int allCommands = FALSE; struct tms cpuTimes; if ((cmdArgc != 1) || (optionsArgc > 1)) goto wrongArgs; if (optionsArgc == 1) { if (!STREQU (optionsArgv [0], "-commands")) { Tcl_AppendResult (interp, "expected option of \"-commands\", ", "got \"", optionsArgv [0], "\"", (char *) NULL); return TCL_ERROR; } allCommands = TRUE; } if (infoPtr->traceHolder != NULL) { Tcl_AppendResult (interp, "profiling is already enabled", (char *) NULL); return TCL_ERROR; } CleanDataTable (infoPtr); infoPtr->traceHolder = Tcl_CreateTrace (interp, MAXINT, ProfTraceRoutine, (ClientData) infoPtr); infoPtr->realTime = 0; infoPtr->cpuTime = 0; infoPtr->lastRealTime = times (&cpuTimes); infoPtr->lastCpuTime = cpuTimes.tms_utime + cpuTimes.tms_stime; infoPtr->allCommands = allCommands; return TCL_OK; } /* * Handle the off command. Dump the hash table to a variable. */ if (STREQU (cmdArgv [0], "off")) { if ((cmdArgc != 2) || (optionsArgc > 0)) goto wrongArgs; if (infoPtr->traceHolder == NULL) { Tcl_AppendResult (interp, "profiling is not currently enabled", (char *) NULL); return TCL_ERROR; } DeleteProfTrace (infoPtr); if (DumpTableData (interp, infoPtr, argv [2]) != TCL_OK) return TCL_ERROR; return TCL_OK; } /* * Not a valid subcommand. */ Tcl_AppendResult (interp, "expected one of \"on\" or \"off\", got \"", argv [1], "\"", (char *) NULL); return TCL_ERROR; wrongArgs: Tcl_AppendResult (interp, tclXWrongArgs, argv [0], " [-commands] on|off arrayVar", (char *) NULL); return TCL_ERROR; } /* *----------------------------------------------------------------------------- * * CleanUpProfMon -- * * Release the client data area when the profile command is deleted. * *----------------------------------------------------------------------------- */ static void CleanUpProfMon (clientData) ClientData clientData; { profInfo_t *infoPtr = (profInfo_t *) clientData; if (infoPtr->traceHolder != NULL) DeleteProfTrace (infoPtr); CleanDataTable (infoPtr); Tcl_DeleteHashTable (&infoPtr->profDataTable); ckfree ((char *) infoPtr); } /* *----------------------------------------------------------------------------- * * Tcl_InitProfile -- * * Initialize the Tcl profiling command. * *----------------------------------------------------------------------------- */ void Tcl_InitProfile (interp) Tcl_Interp *interp; { profInfo_t *infoPtr; infoPtr = (profInfo_t *) ckalloc (sizeof (profInfo_t)); infoPtr->interp = interp; infoPtr->traceHolder = NULL; infoPtr->stackPtr = NULL; infoPtr->saveStackPtr = NULL; Tcl_InitHashTable (&infoPtr->profDataTable, TCL_STRING_KEYS); Tcl_CreateCommand (interp, "profile", Tcl_ProfileCmd, (ClientData)infoPtr, CleanUpProfMon); } micropolis-activity/src/tclx/src/tclxhndl.c0000664000076400007640000003602410724145723021354 0ustar simcitysimcity/* * * tclXhandles.c -- * * Tcl handles. Provides a mechanism for managing expandable tables that are * addressed by textual handles. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * $Id: tclXhandles.c,v 2.0 1992/10/16 04:50:49 markd Rel $ *----------------------------------------------------------------------------- */ #include "tclxint.h" /* * This is the table header. It is separately allocated from the table body, * since it must keep track of a table body that might move. Each entry in the * table is preceded with a header which has the free list link, which is a * entry index of the next free entry. Special values keep track of allocated * entries. */ #define NULL_IDX -1 #define ALLOCATED_IDX -2 typedef unsigned char ubyte_t; typedef ubyte_t *ubyte_pt; typedef struct { int useCount; /* Keeps track of the number sharing */ int entrySize; /* Entry size in bytes, including overhead */ int tableSize; /* Current number of entries in the table */ int freeHeadIdx; /* Index of first free entry in the table */ ubyte_pt bodyP; /* Pointer to table body */ int baseLength; /* Length of handleBase. */ char handleBase [1]; /* Base handle name. MUST BE LAST FIELD! */ } tblHeader_t; typedef tblHeader_t *tblHeader_pt; typedef struct { int freeLink; } entryHeader_t; typedef entryHeader_t *entryHeader_pt; /* * This macro is used to return a pointer to an entry, given its index. */ #define TBL_INDEX(hdrP, idx) \ ((entryHeader_pt) (hdrP->bodyP + (hdrP->entrySize * idx))) /* * This macros to convert between pointers to the user and header area of * an table entry. */ #define USER_AREA(entryPtr) \ (void_pt) (((ubyte_pt) entryPtr) + sizeof (entryHeader_t)); #define HEADER_AREA(entryPtr) \ (entryHeader_pt) (((ubyte_pt) entryPtr) - sizeof (entryHeader_t)); /* * Prototypes of internal functions. */ static void LinkInNewEntries _ANSI_ARGS_((tblHeader_pt tblHdrPtr, int newIdx, int numEntries)); static void ExpandTable _ANSI_ARGS_((tblHeader_pt tblHdrPtr, int neededIdx)); static entryHeader_pt AllocEntry _ANSI_ARGS_((tblHeader_pt tblHdrPtr, int *entryIdxPtr)); static int HandleDecode _ANSI_ARGS_((Tcl_Interp *interp, tblHeader_pt tblHdrPtr, CONST char *handle)); /*============================================================================= * LinkInNewEntries -- * Build free links through the newly allocated part of a table. * * Parameters: * o tblHdrPtr (I) - A pointer to the table header. * o newIdx (I) - Index of the first new entry. * o numEntries (I) - The number of new entries. *----------------------------------------------------------------------------- */ static void LinkInNewEntries (tblHdrPtr, newIdx, numEntries) tblHeader_pt tblHdrPtr; int newIdx; int numEntries; { int entIdx, lastIdx; entryHeader_pt entryPtr; lastIdx = newIdx + numEntries - 1; for (entIdx = newIdx; entIdx < lastIdx; entIdx++) { entryPtr = TBL_INDEX (tblHdrPtr, entIdx); entryPtr->freeLink = entIdx + 1; } entryPtr = TBL_INDEX (tblHdrPtr, lastIdx); entryPtr->freeLink = tblHdrPtr->freeHeadIdx; tblHdrPtr->freeHeadIdx = newIdx; } /* LinkInNewEntries */ /*============================================================================= * ExpandTable -- * Expand a handle table, doubling its size. * Parameters: * o tblHdrPtr (I) - A pointer to the table header. * o neededIdx (I) - If positive, then the table will be expanded so that * this entry is available. If -1, then just expand by the number of * entries specified on table creation. MUST be smaller than this size. *----------------------------------------------------------------------------- */ static void ExpandTable (tblHdrPtr, neededIdx) tblHeader_pt tblHdrPtr; int neededIdx; { ubyte_pt oldBodyP = tblHdrPtr->bodyP; int numNewEntries; int newSize; if (neededIdx < 0) numNewEntries = tblHdrPtr->tableSize; else numNewEntries = (neededIdx - tblHdrPtr->tableSize) + 1; newSize = (tblHdrPtr->tableSize + numNewEntries) * tblHdrPtr->entrySize; tblHdrPtr->bodyP = (ubyte_pt) ckalloc (newSize); memcpy (tblHdrPtr->bodyP, oldBodyP, newSize); LinkInNewEntries (tblHdrPtr, tblHdrPtr->tableSize, numNewEntries); tblHdrPtr->tableSize += numNewEntries; ckfree (oldBodyP); } /* ExpandTable */ /*============================================================================= * AllocEntry -- * Allocate a table entry, expanding if necessary. * * Parameters: * o tblHdrPtr (I) - A pointer to the table header. * o entryIdxPtr (O) - The index of the table entry is returned here. * Returns: * The a pointer to the entry. *----------------------------------------------------------------------------- */ static entryHeader_pt AllocEntry (tblHdrPtr, entryIdxPtr) tblHeader_pt tblHdrPtr; int *entryIdxPtr; { int entryIdx; entryHeader_pt entryPtr; if (tblHdrPtr->freeHeadIdx == NULL_IDX) ExpandTable (tblHdrPtr, -1); entryIdx = tblHdrPtr->freeHeadIdx; entryPtr = TBL_INDEX (tblHdrPtr, entryIdx); tblHdrPtr->freeHeadIdx = entryPtr->freeLink; entryPtr->freeLink = ALLOCATED_IDX; *entryIdxPtr = entryIdx; return entryPtr; } /* AllocEntry */ /*============================================================================= * HandleDecode -- * Decode handle into an entry number. * * Parameters: * o interp (I) - A error message may be returned in result. * o tblHdrPtr (I) - A pointer to the table header. * o handle (I) - Handle to decode. * Returns: * The entry index decoded from the handle, or a negative number if an error * occured. *----------------------------------------------------------------------------- */ static int HandleDecode (interp, tblHdrPtr, handle) Tcl_Interp *interp; tblHeader_pt tblHdrPtr; CONST char *handle; { unsigned entryIdx; if ((strncmp (tblHdrPtr->handleBase, (char *) handle, tblHdrPtr->baseLength) != 0) || !Tcl_StrToUnsigned (&handle [tblHdrPtr->baseLength], 10, &entryIdx)) { Tcl_AppendResult (interp, "invalid ", tblHdrPtr->handleBase, " handle: ", handle, (char *) NULL); return -1; } return entryIdx; } /* HandleDecode */ /*============================================================================= * Tcl_HandleTblInit -- * Create and initialize a Tcl dynamic handle table. The use count on the * table is set to one. * Parameters: * o handleBase(I) - The base name of the handle, the handle will be returned * in the form "baseNN", where NN is the table entry number. * o entrySize (I) - The size of an entry, in bytes. * o initEntries (I) - Initial size of the table, in entries. * Returns: * A pointer to the table header. *----------------------------------------------------------------------------- */ void_pt Tcl_HandleTblInit (handleBase, entrySize, initEntries) CONST char *handleBase; int entrySize; int initEntries; { tblHeader_pt tblHdrPtr; int baseLength = strlen ((char *) handleBase); tblHdrPtr = (tblHeader_pt) ckalloc (sizeof (tblHeader_t) + baseLength + 1); tblHdrPtr->useCount = 1; tblHdrPtr->baseLength = baseLength; strcpy (tblHdrPtr->handleBase, (char *) handleBase); /* * Calculate entry size, including header, rounded up to sizeof (int). */ tblHdrPtr->entrySize = entrySize + sizeof (entryHeader_t); tblHdrPtr->entrySize = ((tblHdrPtr->entrySize + sizeof (int) - 1) / sizeof (int)) * sizeof (int); tblHdrPtr->freeHeadIdx = NULL_IDX; tblHdrPtr->tableSize = initEntries; tblHdrPtr->bodyP = (ubyte_pt) ckalloc (initEntries * tblHdrPtr->entrySize); LinkInNewEntries (tblHdrPtr, 0, initEntries); return (void_pt) tblHdrPtr; } /* Tcl_HandleTblInit */ /*============================================================================= * Tcl_HandleTblUseCount -- * Alter the handle table use count by the specified amount, which can be * positive or negative. Amount may be zero to retrieve the use count. * Parameters: * o headerPtr (I) - Pointer to the table header. * o amount (I) - The amount to alter the use count by. * Returns: * The resulting use count. *----------------------------------------------------------------------------- */ int Tcl_HandleTblUseCount (headerPtr, amount) void_pt headerPtr; int amount; { tblHeader_pt tblHdrPtr = (tblHeader_pt)headerPtr; tblHdrPtr->useCount += amount; return tblHdrPtr->useCount; } /*============================================================================= * Tcl_HandleTblRelease -- * Decrement the use count on a Tcl dynamic handle table. If the count * goes to zero or negative, then release the table. It is designed to be * called when a command is released. * Parameters: * o headerPtr (I) - Pointer to the table header. *----------------------------------------------------------------------------- */ void Tcl_HandleTblRelease (headerPtr) void_pt headerPtr; { tblHeader_pt tblHdrPtr = (tblHeader_pt)headerPtr; tblHdrPtr->useCount--; if (tblHdrPtr->useCount <= 0) { ckfree (tblHdrPtr->bodyP); ckfree ((char *) tblHdrPtr); } } /*============================================================================= * Tcl_HandleAlloc -- * Allocate an entry and associate a handle with it. * * Parameters: * o headerPtr (I) - A pointer to the table header. * o handlePtr (O) - Buffer to return handle in. It must be big enough to * hold the name. * Returns: * A pointer to the allocated entry (user part). *----------------------------------------------------------------------------- */ void_pt Tcl_HandleAlloc (headerPtr, handlePtr) void_pt headerPtr; char *handlePtr; { tblHeader_pt tblHdrPtr = (tblHeader_pt)headerPtr; entryHeader_pt entryPtr; int entryIdx; entryPtr = AllocEntry ((tblHeader_pt) headerPtr, &entryIdx); sprintf (handlePtr, "%s%d", tblHdrPtr->handleBase, entryIdx); return USER_AREA (entryPtr); } /* Tcl_HandleAlloc */ /*============================================================================= * Tcl_HandleXlate -- * Translate a handle to a entry pointer. * * Parameters: * o interp (I) - A error message may be returned in result. * o headerPtr (I) - A pointer to the table header. * o handle (I) - The handle assigned to the entry. * Returns: * A pointer to the entry, or NULL if an error occured. *----------------------------------------------------------------------------- */ void_pt Tcl_HandleXlate (interp, headerPtr, handle) Tcl_Interp *interp; void_pt headerPtr; CONST char *handle; { tblHeader_pt tblHdrPtr = (tblHeader_pt)headerPtr; entryHeader_pt entryPtr; int entryIdx; if ((entryIdx = HandleDecode (interp, tblHdrPtr, handle)) < 0) return NULL; entryPtr = TBL_INDEX (tblHdrPtr, entryIdx); if ((entryIdx >= tblHdrPtr->tableSize) || (entryPtr->freeLink != ALLOCATED_IDX)) { Tcl_AppendResult (interp, tblHdrPtr->handleBase, " is not open", (char *) NULL); return NULL; } return USER_AREA (entryPtr); } /* Tcl_HandleXlate */ /*============================================================================= * Tcl_HandleWalk -- * Walk through and find every allocated entry in a table. Entries may * be deallocated during a walk, but should not be allocated. * * Parameters: * o headerPtr (I) - A pointer to the table header. * o walkKeyPtr (I/O) - Pointer to a variable to use to keep track of the * place in the table. The variable should be initialized to -1 before * the first call. * Returns: * A pointer to the next allocated entry, or NULL if there are not more. *----------------------------------------------------------------------------- */ void_pt Tcl_HandleWalk (headerPtr, walkKeyPtr) void_pt headerPtr; int *walkKeyPtr; { tblHeader_pt tblHdrPtr = (tblHeader_pt)headerPtr; int entryIdx; entryHeader_pt entryPtr; if (*walkKeyPtr == -1) entryIdx = 0; else entryIdx = *walkKeyPtr + 1; while (entryIdx < tblHdrPtr->tableSize) { entryPtr = TBL_INDEX (tblHdrPtr, entryIdx); if (entryPtr->freeLink == ALLOCATED_IDX) { *walkKeyPtr = entryIdx; return USER_AREA (entryPtr); } entryIdx++; } return NULL; } /* Tcl_HandleWalk */ /*============================================================================= * Tcl_WalkKeyToHandle -- * Convert a walk key, as returned from a call to Tcl_HandleWalk into a * handle. The Tcl_HandleWalk must have succeeded. * Parameters: * o headerPtr (I) - A pointer to the table header. * o walkKey (I) - The walk key. * o handlePtr (O) - Buffer to return handle in. It must be big enough to * hold the name. *----------------------------------------------------------------------------- */ void Tcl_WalkKeyToHandle (headerPtr, walkKey, handlePtr) void_pt headerPtr; int walkKey; char *handlePtr; { tblHeader_pt tblHdrPtr = (tblHeader_pt)headerPtr; sprintf (handlePtr, "%s%d", tblHdrPtr->handleBase, walkKey); } /* Tcl_WalkKeyToHandle */ /*============================================================================= * Tcl_HandleFree -- * Frees a handle table entry. * * Parameters: * o headerPtr (I) - A pointer to the table header. * o entryPtr (I) - Entry to free. *----------------------------------------------------------------------------- */ void Tcl_HandleFree (headerPtr, entryPtr) void_pt headerPtr; void_pt entryPtr; { tblHeader_pt tblHdrPtr = (tblHeader_pt)headerPtr; entryHeader_pt freeentryPtr; freeentryPtr = HEADER_AREA (entryPtr); freeentryPtr->freeLink = tblHdrPtr->freeHeadIdx; tblHdrPtr->freeHeadIdx = (((ubyte_pt) entryPtr) - tblHdrPtr->bodyP) / tblHdrPtr->entrySize; } /* Tcl_HandleFree */ micropolis-activity/src/tclx/src/tclplus.h0000664000076400007640000003411310724145723021224 0ustar simcitysimcity/* * tcl++.h -- * * This file defines a C++ classes that can be used to access a Tcl * interpreter. If tcl.h is not already included, it includes it. Tcl.h has * macros that allow it to work with K&R C, ANSI C and C++. *----------------------------------------------------------------------------- * Copyright 1992 Karl Lehenbauer and Mark Diekhans. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies. Karl Lehenbauer and * Mark Diekhans make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. *----------------------------------------------------------------------------- * Based on Tcl C++ classes developed by Parag Patel. *----------------------------------------------------------------------------- * $Id: tcl++.h,v 2.0 1992/10/16 04:51:25 markd Rel $ *----------------------------------------------------------------------------- */ #ifndef _TCL_PLUS_PLUS_H #define _TCL_PLUS_PLUS_H #include #include #include #include #ifndef TCLEXTEND_H # include "tclxtend.h" #endif class TclInterp_cl { Tcl_Interp *interp; friend class TclTrace_cl; private: char * CatVarArgs (va_list argPtr); public: inline TclInterp_cl () { interp = Tcl_CreateExtendedInterp (); } inline ~TclInterp_cl () { Tcl_DeleteInterp (interp); } inline char * Result () { return interp->result; } inline int ErrorLine () { return interp->errorLine; } inline Tcl_Interp * GetInterp () { return interp; } /* * Exported Tcl procedures (from standard baseline): */ inline void AppendElement (const char *string, int noSep) { Tcl_AppendElement (interp, (char *) string, noSep); } void AppendResult (const char *p, ...); inline void AddErrorInfo (const char *message) { Tcl_AddErrorInfo (interp, (char *)message); } inline void CreateCommand (const char *cmdName, Tcl_CmdProc *proc, ClientData data, Tcl_CmdDeleteProc *deleteProc) { Tcl_CreateCommand (interp, (char*) cmdName, proc, data, deleteProc); } inline int CreatePipeline (int argc, char **argv, int **pidArrayPtr, int *inPipePtr, int *outPipePtr, int *errFilePtr) { return Tcl_CreatePipeline (interp, argc, argv, pidArrayPtr, inPipePtr, outPipePtr, errFilePtr); } inline Tcl_Trace CreateTrace (int level, Tcl_CmdTraceProc *proc, ClientData data) { return Tcl_CreateTrace (interp, level, proc, data); } inline void DeleteCommand (const char *cmdName) { Tcl_DeleteCommand (interp, (char *)cmdName); } inline void DeleteTrace (Tcl_Trace trace) { Tcl_DeleteTrace(interp, trace); } inline void DetachPids (int numPids, int *pidPtr) { Tcl_DetachPids (numPids, pidPtr); } inline int Eval (const char *cmd, char flags = 0, char **termPtr = NULL) { return Tcl_Eval (interp, (char *) cmd, flags, termPtr); } inline int EvalFile (const char *fileName) { return Tcl_EvalFile (interp, (char *) fileName); } inline int ExprBoolean (const char *string, int *ptr) { return Tcl_ExprBoolean (interp, (char *) string, ptr); } inline int ExprDouble (const char *string, double *ptr) { return Tcl_ExprDouble (interp, (char *) string, ptr); } inline int ExprLong (const char *string, long *ptr) { return Tcl_ExprLong (interp, (char *) string, ptr); } inline int ExprString (const char *string) { return Tcl_ExprString (interp, (char *) string); } inline int GetBoolean (Tcl_Interp *interp, const char *string, int *boolPtr) { return Tcl_GetBoolean (interp, (char *) string, boolPtr); } inline int GetDouble (Tcl_Interp *interp, const char *string, double *doublePtr) { return Tcl_GetDouble (interp, (char *) string, doublePtr); } inline int GetInt (Tcl_Interp *interp, const char *string, int *intPtr) { return Tcl_GetInt (interp, (char *) string, intPtr); } inline const char * GetVar (const char *varName, int flags = 0) { return Tcl_GetVar (interp, (char *) varName, flags); } inline const char * GetVar2 (const char *name1, const char *name2, int flags = 0) { return Tcl_GetVar2 (interp, (char *) name1, (char *) name2, flags); } inline void InitMemory () { Tcl_InitMemory (interp); } inline char * ParseVar (const char *string, char **termPtr) { return Tcl_ParseVar (interp, (char *) string, termPtr); } inline int RecordAndEval (const char *cmd, char flags) { return Tcl_RecordAndEval (interp, (char *) cmd, flags); } inline void ResetResult () { Tcl_ResetResult (interp); } void SetErrorCode (char *p, ...); inline void SetResult (const char *string) { Tcl_SetResult (interp, (char *) string, TCL_VOLATILE); } inline void SetResult (const char *string, Tcl_FreeProc *freeProc) { Tcl_SetResult (interp, (char *) string, freeProc); } inline const char * SetVar (const char *varName, const char *newValue, int global = 0) { return Tcl_SetVar (interp, (char *) varName, (char *) newValue, global); } inline const char * SetVar2 (const char *name1, const char *name2, const char *newValue, int global) { return Tcl_SetVar2 (interp, (char *) name1, (char *) name2, (char *) newValue, global); } inline int SplitList (const char *list, int &argcP, char **&argvP) { return Tcl_SplitList (interp, (char *) list, &argcP, &argvP); } inline char * TildeSubst (Tcl_Interp *interp, const char *name) { return Tcl_TildeSubst (interp, (char *) name); } int TraceVar (const char *varName, int flags, Tcl_VarTraceProc *proc, ClientData clientData) { return Tcl_TraceVar (interp, (char *) varName, flags, proc, clientData); } inline int TraceVar2 (const char *name1, const char *name2, int flags, Tcl_VarTraceProc *proc, ClientData clientData) { return Tcl_TraceVar2 (interp, (char *) name1, (char *) name2, flags, proc, clientData); } inline const char * UnixError () { return Tcl_UnixError (interp); } inline void UnsetVar (Tcl_Interp *interp, const char *varName, int global) { Tcl_UnsetVar (interp, (char *) varName, global); } inline void UnsetVar2 (Tcl_Interp *interp, const char *name1, const char *name2, int global) { Tcl_UnsetVar2 (interp, (char *) name1, (char *) name2, global); } inline void UntraceVar (const char *varName, int flags, Tcl_VarTraceProc *proc, ClientData clientData) { Tcl_UntraceVar (interp, (char *) varName, flags, proc, clientData); } inline void UntraceVar2 (Tcl_Interp *interp, const char *name1, const char *name2, int flags, Tcl_VarTraceProc *proc, ClientData clientData) { Tcl_UntraceVar2 (interp, (char *) name1, (char *) name2, flags, proc, clientData); } int VarEval (const char *p, ...); inline ClientData VarTraceInfo (const char *varName, int flags, Tcl_VarTraceProc *procPtr, ClientData prevClientData) { return Tcl_VarTraceInfo (interp, (char *) varName, flags, procPtr, prevClientData); } inline ClientData VarTraceInfo2 (const char *name1, const char *name2, int flags, Tcl_VarTraceProc *procPtr, ClientData prevClientData) { return Tcl_VarTraceInfo2 (interp, (char *) name1, (char *) name2, flags, procPtr, prevClientData); } /* * Exported Tcl functions added to baseline Tcl by the Extended Tcl * implementation. */ inline void CommandLoop (FILE *inFile, FILE *outFile, int (*evalProc) (), unsigned options) { Tcl_CommandLoop (interp, inFile, outFile, evalProc, options); } inline char * DeleteKeyedListField (const char *fieldName, const char *keyedList) { return Tcl_DeleteKeyedListField (interp, fieldName, keyedList); } inline void ErrorAbort (int exitCode) { Tcl_ErrorAbort (interp, exitCode); } inline int GetKeyedListField (const char *fieldName, const char *keyedList, char **fieldValuePtr) { return Tcl_GetKeyedListField (interp, fieldName, keyedList, fieldValuePtr); } inline int GetKeyedListKeys (const char *subFieldName, const char *keyedList, int *keyesArgcPtr, char ***keyesArgvPtr) { return Tcl_GetKeyedListKeys (interp, subFieldName, keyedList, keyesArgcPtr, keyesArgvPtr); } inline int GetLong (Tcl_Interp *interp, const char *string, long *longPtr) { return Tcl_GetLong (interp, string, longPtr); } inline int GetUnsigned (Tcl_Interp *interp, const char *string, unsigned *unsignedPtr) { return Tcl_GetUnsigned (interp, string, unsignedPtr); } inline char * SetKeyedListField (const char *fieldName, const char *fieldvalue, const char *keyedList) { return Tcl_SetKeyedListField (interp, fieldName, fieldvalue, keyedList); } inline int ShellEnvInit (unsigned options, const char *programName, int argc, const char **argv, int interactive, const char *defaultFile) { return Tcl_ShellEnvInit (interp, options, programName, argc, argv, interactive, defaultFile); } inline void Startup (int argc, const char **argv, const char *defaultFile, unsigned options = 0) { Tcl_Startup (interp, argc, argv, defaultFile, options); } inline int System (const char *command) { return Tcl_System (interp, (char*) command); } }; class TclTrace_cl { Tcl_Trace trace; Tcl_Interp *interp; public: inline TclTrace_cl (TclInterp_cl &interpCl, int level, Tcl_CmdTraceProc *proc, ClientData data) { trace = Tcl_CreateTrace (interp = interpCl.interp, level, proc, data); } inline ~TclTrace_cl () { Tcl_DeleteTrace (interp, trace); } }; class TclCmdBuf_cl { Tcl_CmdBuf buf; public: inline TclCmdBuf_cl () { buf = Tcl_CreateCmdBuf (); } inline ~TclCmdBuf_cl () { Tcl_DeleteCmdBuf (buf); } inline const char * AssembleCmd (const char *string) { return Tcl_AssembleCmd (buf, (char *) string); } }; class TclHandleTbl_cl { void_pt headerPtr; public: inline TclHandleTbl_cl (const char *handleBase, int entrySize, int initEntries) { headerPtr = Tcl_HandleTblInit (handleBase, entrySize, initEntries); } inline ~TclHandleTbl_cl () { Tcl_HandleTblRelease (headerPtr); } inline void_pt HandleAlloc (char *handlePtr) { return Tcl_HandleAlloc (headerPtr, handlePtr); } inline void HandleFree (void_pt entryPtr) { Tcl_HandleFree (headerPtr, entryPtr); } inline int HandleTblUseCount (int amount) { return Tcl_HandleTblUseCount (headerPtr, amount); } inline void_pt HandleWalk (int *walkKeyPtr) { return Tcl_HandleWalk (headerPtr, walkKeyPtr); } inline void_pt HandleXlate (Tcl_Interp *interp, const char *handle) { return Tcl_HandleXlate (interp, headerPtr, handle); } }; #endif /* _TCL_PLUS_PLUS_H */ micropolis-activity/src/tclx/readme0000664000076400007640000003442310724145723017762 0ustar simcitysimcity *** README.EXTD - README file for Extended Tcl *** EXTENDED TCL ============ Extended Tcl (TclX), defines a set of extensions to Tcl 6.4, the Tool Command Language invented by Dr. John Ousterhout of the University of California at Berkeley. Tcl is a powerful, yet simple embeddable programming language. Extended Tcl is oriented towards system programming tasks, with many additional interfaces to the Unix operating system, It is upwardly compatible with Tcl 6.4. You take the Extended Tcl package, add it to Tcl 6.4, and from that you get Extended Tcl. (Berkeley Tcl is not included in this distribution, obtain it from sprite.berkeley.edu). Support is also included for building a Tk wish shell with the Extended Tcl command set. Extended Tcl was designed and implemented by Karl Lehenbauer (karl@NeoSoft.com) and Mark Diekhans (markd@Grizzly.com), with help in the early stages from Peter da Silva (peter@NeoSoft.com). As with Berkeley Tcl, all of Extended Tcl is freely redistributable, including for commercial use and resale. FEATURES ADDED BY EXTENDED TCL ============================== Here is a summary of the features added by Extended Tcl. For more details on the commands and functionality provided by Extended Tcl, see the manual page man/TclX.man. o A shell, which provides an environment for developing and executing Tcl programs. o Advanced Tcl code library facility. o General purpose commands which define new programming constructs, debugging and profiling facilities. o Unix access commands provide access to many Unix system calls, including process management. o File I/O commands provided added facilities for accessing and manipulating open files. o File scanning facility that provides awk-like functionality. o Math commands (random, sin, cos, etc). o Extended list manipulation commands o Keyed lists, a type of list that provided functionality similar to C structures. o Extended string and character manipulation commands. NEW FEATURES IN THIS RELEASE ============================ o All known bugs are fixed. o Configuration has been simplified. o Improved support for Tk. Including building a wish with signal support and building a Tk package library. o All floating point functions (sin, cos, etc). Now take expressions as arguments. Floating point numbers will not be demoted to integers or lose precision. o The standard Tcl expr command is patched so that floating point numbers do not get demoted to integers or lose precision. This patch has been submitted to John Ousterhout. o The character string manipulation commands take integer expressions for positions and lengths. o The performance of the loading of package library indices and the loading of packages from the libraries has been improved. o A performance profiling facility has been added. o The alarm command will take fractions of a second on systems with the setitimer system call. o Fcntl and fstat are easier to use. o Better signal handling on systems with Posix signals. o And more. Review "TclX.man" and "CHANGES" for full details. ON-LINE HELP ============ There is a help system included with Extended Tcl. It contains some documentation on every command in Berkeley Tcl, and Extended Tcl. You can invoke it interactively from within Extended Tcl by typing "help". Once you bring Tcl up and have gotten it to pass all the tests, try typing "help help" to learn how to use help. MANUAL PAGES ============ Man pages in nroff/troff format are provided for all of Tcl and the extensions in the directory tclX6.4c/man. Start with the TclX.man manual. EXTENDED TCL VERSION NAMING =========================== Extended Tcl takes its version number from the corresponding version of Berkeley (Ousterhout) Tcl upon which it is based, with the addition of a trailing letter in case there are multiple releases of Extended Tcl within a single release of Berkeley Tcl. This release is TclX 6.4c. INTERFACING TCL AND C++ ======================= C++ programmers can include the file "tcl++.h" to define C++ classes that can be used to access a Tcl interpreter. This is based on Tcl C++ classes originally developed by Parag Patel. TCL DIRECTORY HIERARCHY ======================= Here is an overview of the directory hierarchy: top_level_directory tcl6.4 tclX6.4c tk2.3 The tcl6.4 directory contains Berkeley Tcl, unmodified and tk2.3 contains unmodified tk2.3, if you plan to use Tk These locations are only suggested, they maybe changed by editing tclX6.4c/Config.mk. The following directories are included under the tclX6.4c directory: o config - Configuration files for various Unix versions. o man - Unformated manual pages for TclX. o src - The main source for TclX. o osSupport - Library routines required by TclX that may not be available on all Unix versions. o ucbsrc - A makefile and sed scripts used to modify source files that are supplied with UCB Tcl. The files are modified with sed so you don't have to have patch to build Tcl, however context diffs are provided if problems occur porting to a new version of Tcl. o tclsrc - Tcl source that is built into the Tcl package library. o tcllib - Tcl source and runtime environment that is required to run TclX. o tcllib/help - Help files for Tcl and TclX. o tests - Tests for TclX. o tkucbsrc - A makefile and sed scripts used to modify source files that are supplied with Tk to add in TclX functionality. Context diffs are also provided. o tksrc - A makefile that builds a version of the Tk wish shell containing Extended Tcl. o experimental - An directory of expermintal and contributed Tcl source. The code is not normally built as part of TclX. HOW TO BUILD IT =============== Please read TclX.man in the tclX6.4c/man directory before starting the engine or working under the hood. Configure and build Berkeley Tcl as described in that distribution. Don't forget to do a "csh config" before running make for the first time. Cd to the "tclX6.4c" directory, which contains this distribution. Edit the file "Config.mk" to configure Extended Tcl for your Unix version and your preferences. The first part of this file contains user preference options, including the location of the Berkeley Tcl source and, optionally, the Tk 2.3 source. A macro TCL_CONFIG_FILE is also defined that points to a Unix system configuration file in the "config" directory. There should be one there for your system. If not, you will have to develop one based on the documentation in "Config.mk". If you develop or fix problems in a configuration file, please send it to us at the address below. Now do a "make". If all goes well, this will augment the tcl.a library will all of the functions defined by both Berkeley and Extended Tcl, and create an executable version of tcl in the "tclX6.4c" directory called, simply enough, "tcl". A "wish" executable will be also built if it was requested. Until the Extended Tcl runtime files are installed, "tcl" and "wish" can't be run directly. To run them before installation, use "runtcl" or "runwish". Next enter the command "runtcl" and, if everything worked, you should be greeted by a tcl prompt: tcl> Note that until Extended Tcl is installed, it will only run while in the tclX6.4c directory. RUN TESTS TO INSURE THAT TCL IS WORKING PROPERLY ================================================ Tcl and TclX come with over 1400 tests that you can run to insure that it is working properly. These tests have greatly helped us while working on Tcl by detecting bugs that get introduced accidentally as side-effects of changes. Consequently, we have found Tcl to be very reliable, and have had very few cases where a new release has regressed by introducing new bugs in old functions, or reintroducing old bugs in old functions. There are two sets of tests: the tests from Berkeley Tcl, and tests for Extended Tcl, which test both the new commands added by Extended Tcl and the procedures defined in the Tcl procedure library. Run both the Berkeley and TclX tests by typing "make test" in the Extended directory. If a test fails, please dig into the test and the C source for the function being tested, fix the bug and mail us the change. If you're not inclined to do this, please report the problem, including the output of the test, to tcl-project@neosoft.com. Sometimes tests fail due to problems in the system environment or bugs in that test rather than problems with TclX. Even if a few of the tests fail, you probably still have a working TclX. If you're having trouble with the Berkeley tests, and you suspect that the extensions might be involved, you can build a special minimal version of Berkeley Tcl by cd'ing to the tcl6.4 directory and doing a "make tclTest". You can then invoke "tclTest", where you should be greeted by a "%" prompt. Next, cd to the tests directory and do a "source all". Note that the Berkeley tests turn off tcl's ability to autoload procedures from the Tcl source library, so after running the tests, you should usually exit Tcl and restart it. INSTALLING EXTENDED TCL ======================= To install Extended Tcl, edit the tclX6.4c/Config.mk installation configuration section to match your preferences. Read the information in the Makefile carefully before configuring it. Cd to the tclX6.4c directory and do a "make install" (normally as root). This will install include files and manual pages for Berkeley Tcl and TclX, as well as the TclX binary and library. The Tcl default file may be used to install more than one version of TclX on a system. MAKING EXECUTABLE TCL SCRIPTS ============================= It is common to want to write Tcl scripts, put them in a directory along your search path, and execute them just like you do with shell scripts. On systems that support the "#!" convention, you can put a #!/usr/local/bin/tcl as the first line of your script, and executing the script will automatically invoke tcl to process it. Of course if you install Tcl somewhere else, you'll use a different path. For systems that don't support this convention (most System V systems, for example), it is probably best to create a shell script that does something like: exec tcl commandfile.tcl PACKAGE LIBRARIES ================= Package Libraries are a Tcl source code management tool included in this release. Package libraries allow you to group Tcl procedures into logical bundles and create single files, libraries, that contain multiple packages. The package code provides a low-overhead means of automatically demand-loading a package on the first attempt to execute one of the procedures defined within it. As such, package libraries provide a mechanism to accommodate the creation of Tcl applications and libraries of a substantial size. SUPPORT FOR EXTENDED TCL ======================== We are committed to providing continuing support for Extended Tcl. Please send questions, bug reports, and bug fixes to: tcl-project@NeoSoft.com (uupsi!sugar!tcl-project) Or leave a note on our BBS at (713) 684-5900 SEND US YOUR LIBRARY ROUTINES ============================= If you write a useful Tcl procedure and would like to share it with everyone, send us a copy and we'll consider it for the Tcl library! COMPATIBILITY WITH TCLX 6.2b ============================ We have attempted to main backwards-compatibility with older versions of TclX. A few changes were made to enhance usability or fix problems that have introduced a few incompatibilities, these are listed below. Remember that multiple versions of Tcl may be installed on a system using the Tcl default file. This is useful when converting applications to the new version. o The "wait" command only takes one pid. This is in anticipation of supporting full waitpid functionallity in the wait command. This will be available as soon as it is supported in UCB Tcl. o The -i flag has been dropped from the "chmod" command. It now assumes that the number is decimal unless prefixed by a 0. o The "fcntl" command has been changed to use Posix defined flag names. NDELAY has been renamed NONBLOCK and CLEXEC is now CLOEXEC. The command no longer returns a list of current values, instead individule values may be queried. o The format of the data returned by "signal get" has changed. Enough information is now returned to be able to reset signals. o The "fstat" command has changed to make it easier to get single values, consequently the syntax to return stat data in an array has changed. o A parameter has been added to the Tcl_GetKeyedListKeys C function. o The format of package library index files (.tndx) has changed. These should be purged and rebuilt. o Added an options argument to Tcl_Startup. It is not currrently used. CAVEATS ======= Although Extended Tcl compiles and executes the tests properly on SCO Unix System V/3.2.4, Xenix System V/386, and SunOS, it has not had much use under Xenix System V/386. comp Previous versions of Extended Tcl have also run under Berkeley BSD, HP-UX and Xenix/286. This release, however, has not been tested on these machines, although there is configuration information in the makefile for BSD and HP-UX, and Extended Tcl should come up fairly easily on these machines. Do not create any set-user-id versions of Tcl yet. There are holes in the startup sequence involving shell variables and default files that need to be plugged first. MAILING LISTS AND NEWSGROUPS FOR TCL ==================================== A Usenet newsgroup, comp.lang.tcl, is dedicated to discussing Tcl, Tk and the applications that embed it. WHERE TO GET IT =============== Tcl 6.4 is available via anonymous ftp from: sprite.berkeley.edu:tcl/tcl6.4.tar.Z or ftp.uu.net:languages/tcl/tcl6.4.tar.Z Extended Tcl 6.4c can be downloaded by anonymous FTP from: sprite.berkeley.edu:tcl/tclX6.4c.tar.Z or barkley.berkeley.edu:tcl/extensions/tclX6.4c.tar.Z or ftp.uu.net:languages/tcl/tclX6.4c.tar.Z A contributed sources archive resides on barkley.berkeley.edu. micropolis-activity/src/tclx/config.mk0000664000076400007640000003135410724145723020400 0ustar simcitysimcity# # Config.mk -- # # Master configuration file for Extended Tcl. This should be the only # file you have to modify to get Extended Tcl to work. # #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: Config.mk,v 2.3 1992/11/09 07:33:02 markd Exp $ #------------------------------------------------------------------------------ # #============================================================================== # Configuration file specification. Set the macro TCL_CONFIG_FILE to the # name of the file to use in the config directory (don't include the directory # name). If you find problems with these files or have new onces please send # them to us (tcl-project@neosoft.com). At the end of this file is a # description of all the flags that can be set in the config file. # TCL_CONFIG_FILE=linux #============================================================================== # # Configuration section. Modify this section to set some general options and # selecting a config file for a specific Unix implementation. # #============================================================================== #------------------------------------------------------------------------------ # Location of the UCB Tcl distribution relative to this directory. TclX works # with Tcl 6.3 and Tcl 6.4. # TCL_UCB_DIR=../tcl #------------------------------------------------------------------------------ # If you are a Tk user and would like to build a version "wish", the Tk shell, # that includes the TclX command set, define TCL_TK_SHELL=wish and the # location of your Tk directory in TCL_TK_DIR relative to this directory. If # you do not want a "wish" compiled, don't define TCL_TK_SHELL. The libraries # required to link Tk are defined in the system specific sections below. # TK_LIBRARY must be set to the same value specified in the compile of the Tk # source. If TCL_TK_SHELL is define, Tk manual pages will be installed by the # install script. # TCL_TK_SHELL=wish TCL_TK_DIR=../tk TK_LIBRARY=/usr/local/lib/tk XPM_LIBS=-L/usr/X11R6/lib -lXpm #------------------------------------------------------------------------------ # Compiler debug/optimization/profiling flag to use. Not that if debugging or # profiling is enabled, the DO_STRIPPING option below must be disabled. # CC=gcc OPTIMIZE_FLAG=-O3 -DIS_LINUX #OPTIMIZE_FLAG=-g -DIS_LINUX #------------------------------------------------------------------------------ # Stripping of the final tclshell binary. Specify `true' if the binary is to # be stripped (optimized case) or specify `false' if the binary is not to be # stripped (debugging case). # DO_STRIPPING=false #DO_STRIPPING=true #------------------------------------------------------------------------------ # Definition of the compiler you want to use, as well as extra flags for the # compiler and linker. Also the yacc program you wish to use. # AR=ar XCFLAGS= XLDFLAGS= YACC=yacc #YACC=bison -b y #------------------------------------------------------------------------------ # If C++ is to be used these should be used. Specifying CPLUSOBJS includes the # C++ support code in the Tcl library. CCPLUS is the command to run your C++ # compiler. CPLUSINCL is the location of your standard C++ include files. # #CPLUSOBJS=tcl++.o CCPLUS=CC CPLUSINCL=/usr/include/CC #------------------------------------------------------------------------------ # Enable or disable Tcl history in the Tcl flag. If this macro is set to # '-DTCL_NOHISTORY', the `history' command will not be available in the Tcl # shell. Many people do not find the history command useful and its rather # large, so this way it can be excluded from the standard shell. It will # still be in the library and will be available in other applications if they # use `Tcl_RecordAndEval'. # HISTORY_FLAG= #------------------------------------------------------------------------------ # Memory debugging defines. These are only of interest if you are adding C # code to Tcl or debugging Tcl C code. You probably don't need this unless it # seems like you have memory problems. They help find memory overwrites and # leaks. One or more of the following flags may be specified (in the form # -DFLAGNAME). # # o TCL_MEM_DEBUG - Turn on memory debugging. # o TCL_SHELL_MEM_LEAK - Dump a list of active memory blocks when the # shell exits an eof (requires TCL_MEM_DEBUG). # # NOTE: If TCL_MEM_DEBUG is enabled, the Berkeley Tcl distribution must be # recompiled with this option as well, or it will not link or may fail # with some mysterious memory problems. Same goes for Tk if you are using # Tk. If this option is to be used, all code being tested MUST be compiled # with TCL_MEM_DEBUG and use ckalloc and ckfree for all memory passed between # the application and Tcl. # # An addition a flag MEM_VALIDATE may be specified in the Berkeley Tcl # compilation to do validation of all memory blocks on each allocation or # deallocation (very slow). # MEM_DEBUG_FLAGS= #============================================================================== # Install options sections. This sections describes the installation options. # Your might want to change some of these values before installing. #.............................................................................. # # o TCL_OWNER - The user that will own all Tcl files after installation. # o TCL_GROUP - The group that all Tcl files will belong to after installation. # TCL_OWNER=bin TCL_GROUP=bin # o TCL_DEFAULT - Base name of Tcl default file. This name will have a # version number appended. # #TCL_DEFAULT=/etc/default/tcl TCL_DEFAULT=/usr/local/lib/tcldefault # # The directory to install Tcl binary into. # TCL_BINDIR=/usr/local/bin # # The directory tcl.a library goes into. # TCL_LIBDIR=/usr/local/lib # # The directory the Tcl .h files go into. # TCL_INCLUDEDIR=/usr/local/include # # The directory .tcl files and the .tlib library goes into. # TCL_TCLDIR=/usr/local/lib/tcl #============================================================================== # These defines specify where and how the manual pages are to be installed. # They are actually defined in the system specific configuration file in the # config directory. Install manual pages is somewhat problematic, so a global # option not to install manual pages is provided. Since there are so many # manual pages provided, they are placed together in one Tcl manual page # directory, rather than splitting into the standard manual pages directories. # The actual definitions of these variables are set for in the system # dependent file. You might want to modify these values. #.............................................................................. # # Set to 1 to install manual files, to 0 to not install manual files. # TCL_MAN_INSTALL=1 # # o TCL_MAN_BASEDIR - Base manual directory where all of the man.* and cat.* # directories live. # TCL_MAN_BASEDIR=/usr/local/man # # o TCL_MAN_CMD_SECTION - Section for Tcl command manual pages. Normal `1' or # `C'. You might perfer TCL since there are some many. # # o TCL_MAN_FUNC_SECTION - Section for Tcl C level function manual pages. # In some cases it might be desirable install all manual pages in one # section, in this case, the value should be the same as TCL_MAN_CMD_SECTION. # #TCL_MAN_CMD_SECTION=TCL #TCL_MAN_FUNC_SECTION=TCL TCL_MAN_CMD_SECTION=1 TCL_MAN_FUNC_SECTION=3 # # o TK_MAN_CMD_SECTION - Section for Tk command manual pages. Normal `1' or # `C'. You might perfer TK since there are some many. # # o TK_MAN_FUNC_SECTION - Section for Tk C level function manual pages. # In some cases it might be desirable install all manual pages in one # section, in this case, the value should be the same as TK_MAN_CMD_SECTION. # #TK_MAN_CMD_SECTION=TK #TK_MAN_FUNC_SECTION=TK TK_MAN_CMD_SECTION=1 TK_MAN_FUNC_SECTION=3 #.............................................................................. # The rest of the manual page install options are set in the system dependent # configuration file (config/*) # # o TCL_MAN_SEPARATOR - The separator character used in the directory name # of the cat* and man* manual directories. This is usually empty or # a period. # # o TCL_MAN_STYLE - The style of manual management the system has.It is # a string with one of the following values: # o SHORT - Short file name installation (an index can be generated). # o LONG - Long file name installation, a link will be made for each # name the manual page is to be available under. # This flag is optional, if omitted LONG is assumed. # # o TCL_MAN_INDEX - If 1, then a manual page index will be build in the manual # base directory named index.TCL. Not useful if TCL_MAN_STYLE is LONG. Each # line in the file has the form: # mansubject manfile section # This flag is optional, if omitted 0 is assumed. # #============================================================================== # System specific configuration. A system configuration file in the config # directory defines the following mactos required for your version of Unix. # In addition to the options defined in the Berkeley source the following # options can be defined here. This information will help you build your own # system configuration if one is not supplied here. The configuration file # name is specified an the end of this section. # # o SYS_DEP_FLAGS - The system dependency flags. The following options are # available, these should be defined using -Dflag. # # o TCL_HAVE_SETLINEBUF - Define if the `setlinebuf' is available as part # of stdio. # # o TCL_32_BIT_RANDOM - Define if the `rand' function returns a value in # the range 0..(2^31)-1, leave undefined if `rand' returns a value # in the range 0..(2^15)-1. # # o TCL_NO_SELECT - The select call is not available. # # o TCL_NEED_SYS_SELECT_H - Define if is required. May not # need it, even if it is there. # # o TCL_USE_BZERO_MACRO - Use a macro to define bzero for the select # FD_ZERO macro. # # o TCL_POSIX_SIG - Set if posix signals are available (sigaction, etc). # # o TCL_HAVE_CATGETS - Set if XPG/3 message catalogs are available # (catopen, catgets, etc). # # o TCL_TM_GMTOFF - Set if the seconds east of GMT field in struct tm is # names 'tm_gmtoff'. Not set if its is names 'tm_tzadj'. # # o TCL_TIMEZONE_VAR - If the timezone varaible is used in place of # one of the fields from struct tm. # # o TCL_NEED_TIME_H - Set if time.h is required. # # o TCL_SIG_PROC_INT - Set if signal functions return int rather than # void. # # o TCL_NO_ITIMER - Set if setitimer is not available. # # o TCL_IEEE_FP_MATH - Set if IEEE 745-1985 error reporting via the value # a function returns is to be used instead of the standard matherr # mechanism. # # o TCL_NO_FILE_LOCKING - Set if the fcntl system call does not support # file locking. # # o TCL_DUP_CLK_TCK - On some systems that have both time.h and # sys/time.h, tclUnix.h defines CLK_TCK then tclExtdInt.h includes # time.h and you get a redefiniton warning. Set this flag to prevent # the warning (its not safe to just unset it). # # o LIBS - The flags to specify when linking the tclshell. # # o TCL_TK_LIBS - The libraries to link the TK wish program. This should # also include libraries specified for LIBS, as both values may not be # used together due to library ordering constraints. # # o RANLIB_CMD - Either `ranlib' if ranlib is required or `true' if ranlib # should not be used. # # o MCS_CMD - Command to delete comments from the object file comment # section, if available. The command `true' if it's not available. This # makes the object file even smaller after its stipped. # # o SUPPORT_FLAGS - The flags for SUPPORT_OBJS code. The following options # are available, these should be defined using -Dflag. # # o TCL_HAS_TM_ZONE - If if 'struct tm' has the 'tm_zone' field. Used # by strftime. # # o SUPPORT_OBJS - The object files to compile to implement library # functions that are not available on this particular version of Unix or # do not function correctly. The following are available: # o strftime.o # #.............................................................................. micropolis-activity/src/tclx/config/0000775000076400007640000000000010735230433020034 5ustar simcitysimcitymicropolis-activity/src/tclx/config/bsd-4.30000664000076400007640000000075510724145723021045 0ustar simcitysimcity#------------------------------------------------------------------------------ # BSD 4.3 #------------------------------------------------------------------------------ # $Id: bsd-4.3,v 2.2 1992/11/08 17:24:26 markd Exp $ #------------------------------------------------------------------------------ # SYS_DEP_FLAGS=-DTCL_HAVE_SETLINEBUF -DTCL_32_BIT_RANDOM -DTCL_POSIX_SIG LIBS=-lm RANLIB_CMD=ranlib MCS_CMD=true SUPPORT_FLAGS=-DTCL_HAS_TM_ZONE TCL_TK_LIBS= -lX11 -lm TCL_MAN_SEPARATOR= micropolis-activity/src/tclx/config/hpux0000664000076400007640000000104110724145723020744 0ustar simcitysimcity#------------------------------------------------------------------------------ # HPUX - Hewlett-Packard HP/UX #------------------------------------------------------------------------------ # $Id: hpux,v 2.3 1992/11/08 17:24:26 markd Exp $ #------------------------------------------------------------------------------ # SYS_DEP_FLAGS= -DTCL_32_BIT_RANDOM -DTCL_POSIX_SIG -DTCL_TIMEZONE_VAR LIBS=-lBSD -lPW -lm RANLIB_CMD=true MCS_CMD=true SUPPORT_FLAGS=-DTCL_HAS_TM_ZONE TCL_TK_LIBS= -L/usr/lib/X11R5 -lX11 -lBSD -lPW -lm TCL_MAN_SEPARATOR= micropolis-activity/src/tclx/config/scoodt1.10000664000076400007640000000112010724145723021471 0ustar simcitysimcity#------------------------------------------------------------------------------ # SCO ODT 1.1 - System V 3.2.2 #------------------------------------------------------------------------------ # $Id: scoodt1.1,v 2.2 1992/11/08 17:24:26 markd Exp $ #------------------------------------------------------------------------------ # SYS_DEP_FLAGS=-DTCL_USE_BZERO_MACRO -DTCL_POSIX_SIG -DTCL_NEED_TIME_H -DTCL_DUP_CLK_TCK LIBS= -lm -lintl -lmalloc -lc_s RANLIB_CMD=true MCS_CMD=mcs -d TCL_TK_LIBS= -lX11 -lsocket -lm -lintl -lmalloc -lc_s TCL_MAN_SEPARATOR=. TCL_MAN_STYLE=SHORT TCL_MAN_INDEX=1 micropolis-activity/src/tclx/config/aux0000664000076400007640000000077710724145723020574 0ustar simcitysimcity#------------------------------------------------------------------------------ # A/UX 2.0.1 - System V.2 derivative with BSD extensions #------------------------------------------------------------------------------ # $Id: aux,v 2.2 1992/11/08 17:23:40 markd Exp $ #------------------------------------------------------------------------------ # SYS_DEP_FLAGS= -DTCL_USE_BZERO_MACRO -DTCL_SIG_PROC_INT LIBS=-lc_s -lm RANLIB_CMD=true MCS_CMD=true TCL_TK_LIBS= -lX11 -lm TCL_MAN_SEPARATOR=. TCL_MAN_STYLE=LONG micropolis-activity/src/tclx/config/bsd0000664000076400007640000000075510724145723020543 0ustar simcitysimcity#------------------------------------------------------------------------------ # BSD #------------------------------------------------------------------------------ # $Id: bsd,v 2.1 1992/11/08 17:24:26 markd Exp $ #------------------------------------------------------------------------------ # SYS_DEP_FLAGS=-DTCL_HAVE_SETLINEBUF -DTCL_32_BIT_RANDOM LIBS=-lm RANLIB_CMD=ranlib MCS_CMD=true SUPPORT_FLAGS=-DTCL_HAS_TM_ZONE SUPPORT_OBJS=strftime.o TCL_TK_LIBS= -lX11 -lm TCL_MAN_SEPARATOR= micropolis-activity/src/tclx/config/sysv.3.2.00000664000076400007640000000104410724145723021426 0ustar simcitysimcity#------------------------------------------------------------------------------ # System V 3.2.0 (tested on Bell-Tech or Intel Unix for the Intel 386) #------------------------------------------------------------------------------ # $Id: sysv.3.2.0,v 2.2 1992/11/08 17:24:26 markd Exp $ #------------------------------------------------------------------------------ # SYS_DEP_FLAGS=-DTCL_NO_SELECT -DTCL_NO_ITIMER -DTCL_NO_FILE_LOCKING LIBS=-lform -lm -lc_s RANLIB_CMD=true MCS_CMD=mcs -d TCL_MAN_SEPARATOR=. TCL_MAN_STYLE=SHORT TCL_MAN_INDEX=1 micropolis-activity/src/tclx/config/sunos4.10000664000076400007640000000103010724145723021350 0ustar simcitysimcity#------------------------------------------------------------------------------ # SUN OS newer versions (~4.1, let us know which ones works for you) #------------------------------------------------------------------------------ # $Id: sunos4.1,v 2.3 1992/11/08 17:24:26 markd Exp $ #------------------------------------------------------------------------------ # SYS_DEP_FLAGS=-DTCL_HAVE_SETLINEBUF -DTCL_32_BIT_RANDOM -DTCL_POSIX_SIG -DTCL_TM_GMTOFF LIBS=-lm RANLIB_CMD=ranlib MCS_CMD=true TCL_TK_LIBS= -lX11 -lm TCL_MAN_SEPARATOR= micropolis-activity/src/tclx/config/dos0000664000076400007640000000125710724145723020556 0ustar simcitysimcity#------------------------------------------------------------------------------ # Microsoft DOS newer versions (~3.3, let us know which ones works for you) #------------------------------------------------------------------------------ # $Id: dos v 1.0 1993/06/27 17:24:26 markd Exp $ #------------------------------------------------------------------------------ # #SYS_DEP_FLAGS=-DTCL_HAVE_SETLINEBUF -DTCL_IEEE_FP_MATH -DTCL_32_BIT_RANDOM -DTCL_POSIX_SIG -DTCL_TM_GMTOFF SYS_DEP_FLAGS=-DTCL_NO_ITIMER -DTCL_NO_FILE_LOCKING -DTCL_IEEE_FP_MATH -DTCL_32_BIT_RANDOM -DTCL_POSIX_SIG -DTCL_TM_GMTOFF LIBS=-lsys -lm RANLIB_CMD=ranlib MCS_CMD=true TCL_TK_LIBS= -lX11 -lm TCL_MAN_SEPARATOR= micropolis-activity/src/tclx/config/rs60000000664000076400007640000000123410724145723020716 0ustar simcitysimcity#------------------------------------------------------------------------------ # IBM RS6000 (AIX 3.2.2) # o very troublesome system. NO_SELECT since select is non-standard. #------------------------------------------------------------------------------ # $Id: rs6000,v 2.3 1992/11/08 17:24:26 markd Exp $ #------------------------------------------------------------------------------ # SYS_DEP_FLAGS=-DTCL_HAVE_SETLINEBUF -DTCL_32_BIT_RANDOM \ -DTCL_NO_SELECT -DTCL_TIMEZONE_VAR -D_NO_PROTO -U__STR__ -D_BSD_INCLUDES LIBS=-lm RANLIB_CMD=ranlib MCS_CMD=true SUPPORT_FLAGS=-DTCL_HAS_TM_ZONE SUPPORT_OBJS=strftime.o TCL_TK_LIBS= -lX11 -lm TCL_MAN_SEPARATOR= micropolis-activity/src/tclx/config/scoodt2.00000664000076400007640000000102210724145723021472 0ustar simcitysimcity#------------------------------------------------------------------------------ # SCO ODT 2.0 - System V 3.2.4 #------------------------------------------------------------------------------ # $Id: scoodt2.0,v 2.2 1992/11/08 17:24:26 markd Exp $ #------------------------------------------------------------------------------ # SYS_DEP_FLAGS=-DTCL_POSIX_SIG -DTCL_NEED_TIME_H -DTCL_DUP_CLK_TCK LIBS= -lm -lintl -lmalloc -lc_s RANLIB_CMD=true MCS_CMD=mcs -d TCL_TK_LIBS= -lX11_s -lsocket -lm -lintl -lmalloc TCL_MAN_SEPARATOR=. micropolis-activity/src/tclx/config/linux0000664000076400007640000000105510724145723021124 0ustar simcitysimcity#------------------------------------------------------------------------------ # SUN OS newer versions (~4.1, let us know which ones works for you) #------------------------------------------------------------------------------ # $Id: sunos4.1,v 2.3 1992/11/08 17:24:26 markd Exp $ #------------------------------------------------------------------------------ # SYS_DEP_FLAGS=-DTCL_HAVE_SETLINEBUF -DTCL_32_BIT_RANDOM -DTCL_POSIX_SIG -DTCL_TM_GMTOFF LIBS=-lm RANLIB_CMD=ranlib MCS_CMD=true TCL_TK_LIBS= -L/usr/X11/lib -lX11 -lm -lXpm TCL_MAN_SEPARATOR= micropolis-activity/src/tclx/config/solaris20000664000076400007640000000126110724145723021522 0ustar simcitysimcity#------------------------------------------------------------------------------ # SUN OS newer versions (~4.1, let us know which ones works for you) #------------------------------------------------------------------------------ # $Id: sunos4.1,v 2.3 1992/11/08 17:24:26 markd Exp $ #------------------------------------------------------------------------------ # #SYS_DEP_FLAGS=-DTCL_HAVE_SETLINEBUF -DTCL_32_BIT_RANDOM -DTCL_POSIX_SIG -DTCL_TM_GMTOFF SYS_DEP_FLAGS=-DTCL_32_BIT_RANDOM -DTCL_POSIX_SIG -DTCL_TIMEZONE_VAR -I/usr/openwin/include LIBS=-lm -lsocket -lnsl RANLIB_CMD=echo MCS_CMD=true SUPPORT_FLAGS=-DTCL_HAS_TM_ZONE TCL_TK_LIBS= -lX11 -lm -lsocket -lnsl TCL_MAN_SEPARATOR= micropolis-activity/src/tclx/config/xenix0000664000076400007640000000103610724145723021117 0ustar simcitysimcity#------------------------------------------------------------------------------ # XENIX-386 - SCO Xenix 2.3.3 for the 80386 #------------------------------------------------------------------------------ # $Id: xenix,v 2.2 1992/11/08 17:24:26 markd Exp $ #------------------------------------------------------------------------------ # SYS_DEP_FLAGS= -DTCL_NEED_SYS_SELECT_H -DTCL_USE_BZERO_MACRO -DTCL_SIG_PROC_INT -DTCL_NO_ITIMER LIBS=-ldir -lm RANLIB_CMD=ranlib MCS_CMD=true TCL_MAN_STYLE=SHORT TCL_MAN_INDEX=1 TCL_MAN_INDEX_MERGE=1 micropolis-activity/src/tclx/config/ultrix0000664000076400007640000000100710724145723021311 0ustar simcitysimcity#------------------------------------------------------------------------------ # DEC Ultrix #------------------------------------------------------------------------------ # $Id: ultrix,v 2.1 1992/11/08 17:24:26 markd Exp $ #------------------------------------------------------------------------------ # SYS_DEP_FLAGS=-DTCL_HAVE_SETLINEBUF -DTCL_32_BIT_RANDOM -DTCL_TM_GMTOFF LIBS=-lm RANLIB_CMD=ranlib MCS_CMD=true SUPPORT_FLAGS=-DTCL_HAS_TM_ZONE SUPPORT_OBJS=strftime.o TCL_TK_LIBS= -lX11 -lm TCL_MAN_SEPARATOR= micropolis-activity/src/tclx/config/sgi0000664000076400007640000000143310724145723020547 0ustar simcitysimcity#------------------------------------------------------------------------------ # SGI IRIX 4.0 #------------------------------------------------------------------------------ # The strftime function supplied with IRIX 4.0.5 is broken, when a time # is 12:00 AM, %I and %r return times of 00:00, as if it was 24-hour time. # We substitute in our own version of strftime to fix this problem. #------------------------------------------------------------------------------ # $Id: sgi,v 2.7 1992/11/09 07:18:22 markd Exp $ #------------------------------------------------------------------------------ # SYS_DEP_FLAGS=-DTCL_HAVE_SETLINEBUF -DTCL_POSIX_SIG -DTCL_IEEE_FP_MATH -DTCL_TIMEZONE_VAR LIBS=-lm RANLIB_CMD=true MCS_CMD=true TCL_TK_LIBS= -lX11 -lm SUPPORT_OBJS=strftime.o TCL_MAN_SEPARATOR= micropolis-activity/src/tclx/config/osf10000664000076400007640000000117610724145723020641 0ustar simcitysimcity#------------------------------------------------------------------------------ # SUN OS newer versions (~4.1, let us know which ones works for you) #------------------------------------------------------------------------------ # $Id: sunos4.1,v 2.3 1992/11/08 17:24:26 markd Exp $ #------------------------------------------------------------------------------ # #SYS_DEP_FLAGS=-DTCL_HAVE_SETLINEBUF -DTCL_32_BIT_RANDOM -DTCL_POSIX_SIG -DTCL_TM_GMTOFF SYS_DEP_FLAGS=-DTCL_32_BIT_RANDOM -DTCL_POSIX_SIG -DTCL_TIMEZONE_VAR LIBS=-lm RANLIB_CMD=ranlib MCS_CMD=true SUPPORT_FLAGS=-DTCL_HAS_TM_ZONE TCL_TK_LIBS= -lX11 -lm TCL_MAN_SEPARATOR= micropolis-activity/src/tclx/config/ultrix4.20000664000076400007640000000072710724145723021545 0ustar simcitysimcity#------------------------------------------------------------------------------ # DEC Ultrix 4.2 #------------------------------------------------------------------------------ # $Id: ultrix4.2,v 1.3 1992/11/08 17:24:26 markd Exp $ #------------------------------------------------------------------------------ # SYS_DEP_FLAGS=-DTCL_HAVE_SETLINEBUF -DTCL_32_BIT_RANDOM -DTCL_TM_GMTOFF LIBS=-lm RANLIB_CMD=ranlib MCS_CMD=true TCL_TK_LIBS= -lX11 -lm TCL_MAN_SEPARATOR= micropolis-activity/src/tclx/config/sunos4.00000664000076400007640000000105710724145723021360 0ustar simcitysimcity#------------------------------------------------------------------------------ # SUN OS older versions (~4.0, let us know which one works for you) #------------------------------------------------------------------------------ # $Id: sunos4.0,v 2.1 1992/11/08 17:24:26 markd Exp $ #------------------------------------------------------------------------------ # SYS_DEP_FLAGS=-DTCL_HAVE_SETLINEBUF -DTCL_32_BIT_RANDOM LIBS=-lm RANLIB_CMD=ranlib MCS_CMD=true SUPPORT_FLAGS=-DTCL_HAS_TM_ZONE SUPPORT_OBJS=strftime.o TCL_TK_LIBS= -lX11 -lm TCL_MAN_SEPARATOR= micropolis-activity/src/tclx/tcllib/0000775000076400007640000000000010735230433020040 5ustar simcitysimcitymicropolis-activity/src/tclx/tcllib/8queens.tcl0000664000076400007640000000171410724145723022144 0ustar simcitysimcity# # Eight Queens in Tcl # # by Karl Lehenbauer, 23 Nov 1990 # #----------------------------------------------------------------------------- # $Id: 8queens.tcl,v 2.0 1992/10/16 04:51:36 markd Rel $ #----------------------------------------------------------------------------- # proc none_attacking {rank position} { global queens loop i 1 $rank { set j $queens([expr {$rank - $i}]) if {($j==$position-$i) || ($j==$position) || ($j==$position+$i)} { return 0 } } return 1 } proc solution {} { global queens echo $queens(1) $queens(2) $queens(3) $queens(4) $queens(5) $queens(6) $queens(7) $queens(8) } proc x8queens {rank} { global queens set queens($rank) 1 loop i 1 9 { if [none_attacking $rank $i] { set queens($rank) $i if {$rank != 8} { x8queens [expr $rank+1] } else { solution return } } } } proc 8queens {} { x8queens 1 } global interactiveSession if !$interactiveSession 8queens micropolis-activity/src/tclx/tcllib/buildidx.tcl0000664000076400007640000000617610724145723022367 0ustar simcitysimcity# # buildidx.tcl -- # # Code to build Tcl package library. Defines the proc `buildpackageindex'. # #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: buildidx.tcl,v 2.0 1992/10/16 04:51:38 markd Rel $ #------------------------------------------------------------------------------ # proc TCHSH:PutLibLine {outfp package where endwhere autoprocs} { puts $outfp [concat $package $where [expr {$endwhere - $where - 1}] \ $autoprocs] } proc TCLSH:CreateLibIndex {libName} { if {[file extension $libName] != ".tlb"} { error "Package library `$libName' does not have the extension `.tlb'"} set idxName "[file root $libName].tdx" unlink -nocomplain $idxName set libFH [open $libName r] set idxFH [open $idxName w] set contectHdl [scancontext create] scanmatch $contectHdl "^#@package: " { set size [llength $matchInfo(line)] if {$size < 2} { error [format "invalid package header \"%s\"" $matchInfo(line)] } if $inPackage { TCHSH:PutLibLine $idxFH $pkgDefName $pkgDefWhere \ $matchInfo(offset) $pkgDefProcs } set pkgDefName [lindex $matchInfo(line) 1] set pkgDefWhere [tell $matchInfo(handle)] set pkgDefProcs [lrange $matchInfo(line) 2 end] set inPackage 1 } scanmatch $contectHdl "^#@packend" { if !$inPackage { error "#@packend without #@package in $libName } TCHSH:PutLibLine $idxFH $pkgDefName $pkgDefWhere $matchInfo(offset) \ $pkgDefProcs set inPackage 0 } set inPackage 0 if {[catch { scanfile $contectHdl $libFH } msg] != 0} { global errorInfo errorCode close libFH close idxFH error $msg $errorInfo $errorCode } if {![info exists pkgDefName]} { error "No #@package definitions found in $libName" } if $inPackage { TCHSH:PutLibLine $idxFH $pkgDefName $pkgDefWhere [tell $libFH] \ $pkgDefProcs } close $libFH close $idxFH scancontext delete $contectHdl # Set mode and ownership of the index to be the same as the library. file stat $libName statInfo chmod $statInfo(mode) $idxName chown [list $statInfo(uid) $statInfo(gid)] $idxName } proc buildpackageindex {libfile} { set status [catch {TCLSH:CreateLibIndex $libfile} errmsg] if {$status != 0} { global errorInfo errorCode error "building package index for `$libfile' failed: $errmsg" \ $errorInfo $errorCode } } micropolis-activity/src/tclx/tcllib/tclinit.tcl0000664000076400007640000000544210724145723022224 0ustar simcitysimcity#----------------------------------------------------------------------------- # TclInit.tcl -- Extended Tcl initialization. #----------------------------------------------------------------------------- # $Id: TclInit.tcl,v 2.0 1992/10/16 04:51:37 markd Rel $ #----------------------------------------------------------------------------- global env TCLENV set TCLENV(inUnknown) 0 # # Unknown command trap handler. # proc unknown {cmdName args} { global TCLENV if $TCLENV(inUnknown) { error "recursive unknown command trap: \"$cmdName\""} set TCLENV(inUnknown) 1 set stat [catch {demand_load $cmdName} ret] if {$stat == 0 && $ret} { set TCLENV(inUnknown) 0 return [uplevel 1 [list eval $cmdName $args]] } if {$stat != 0} { global errorInfo errorCode set TCLENV(inUnknown) 0 error $ret $errorInfo $errorCode } global env interactiveSession noAutoExec if {$interactiveSession && ([info level] == 1) && ([info script] == "") && (!([info exists noAutoExec] && [set noAutoExec]))} { if {[file rootname $cmdName] == "$cmdName"} { if [info exists env(PATH)] { set binpath [searchpath [split $env(PATH) :] $cmdName] } else { set binpath [searchpath "." $cmdName] } } else { set binpath $cmdName } if {[file executable $binpath]} { set TCLENV(inUnknown) 0 uplevel 1 [list system [concat $cmdName $args]] return } } set TCLENV(inUnknown) 0 error "invalid command name: \"$cmdName\"" } # # Search a path list for a file. (catch is for bad ~user) # proc searchpath {pathlist file} { foreach dir $pathlist { if {$dir == ""} {set dir .} if {[catch {file exists $dir/$file} result] == 0 && $result} { return $dir/$file } } return {} } # # Define a proc to be available for demand_load. # proc autoload {filenam args} { global TCLENV foreach i $args { set TCLENV(PROC:$i) [list F $filenam] } } # # Search TCLPATH for a file to source. # proc load {name} { global TCLPATH errorCode if {[string first / $name] >= 0} { return [uplevel #0 source $name] } set where [searchpath $TCLPATH $name] if [lempty $where] { error "couldn't find $name in Tcl search path" "" "TCLSH FILE_NOT_FOUND" } uplevel #0 source $where } autoload buildidx.tcl buildpackageindex # == Put any code you want all Tcl programs to include here. == if !$interactiveSession return # == Interactive Tcl session initialization == set TCLENV(topLevelPromptHook) {global programName; concat "$programName>" } set TCLENV(downLevelPromptHook) {concat "=>"} if [file readable ~/.tclrc] {source ~/.tclrc} micropolis-activity/src/tclx/tcllib/buildhelp.tcl0000664000076400007640000003464410724145723022534 0ustar simcitysimcity# # buildhelp.tcl -- # # Program to extract help files from TCL manual pages or TCL script files. # The help directories are built as a hierarchical tree of subjects and help # files. # #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: buildhelp.tcl,v 2.1 1992/10/25 17:07:40 markd Exp $ #------------------------------------------------------------------------------ # # For nroff man pages, the areas of text to extract are delimited with: # # '@help: subjectdir/helpfile # '@endhelp # # start in column one. The text between these markers is extracted and stored # in help/subjectdir/help. The file must not exists, this is done to enforced # cleaning out the directories before help file generation is started, thus # removing any stale files. The extracted text is run through: # # nroff -man|col -xb {col -b on BSD derived systems} # # If there is other text to include in the helpfile, but not in the manual # page, the text, along with nroff formatting commands, may be included using: # # '@:Other text to include in the help page. # # A entry in the brief file, used by apropos my be included by: # # '@brief: Short, one line description # # These brief request must occur with in the bounds of a help section. # # If some header text, such as nroff macros, need to be preappended to the # text streem before it is run through nroff, then that text can be bracketed # with: # # '@header # '@endheader # # If multiple header blocks are encountered, they will all be preappended. # # For TCL script files, which are indentified because they end in ".tcl", # the text to be extracted is delimited by: # # #@help: subjectdir/helpfile # #@endhelp # # And brief lines are in the form: # # #@brief: Short, one line description # # The only processing done on text extracted from .tcl files it to replace # the # in column one with a space. # # #----------------------------------------------------------------------------- # # To run this program: # # tcl buildhelp.tcl [-m mergeTree] -b brief.brf helpDir file-1 file-2 ... # # o -m mergeTree is a tree of help code, plus a brief file to merge with the # help files that are to be extracted. This will become part of the new # help tree. Used to merge in the documentation from UCB Tcl. # o -b specified the name of the brief file to create form the @brief entries. # It must have an extension of ".brf". # o helpDir is the help tree root directory. helpDir should exists, but any # subdirectories that don't exists will be created. helpDir should be # cleaned up before the start of manual page generation, as this program # will not overwrite existing files. # o file-n are the nroff manual pages (.man) or .tcl or .tlib files to extract # the help files from. # #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # Truncate a file name of a help file if the system does not support long # file names. If the name starts with `Tcl_', then this prefix is removed. # If the name is then over 14 characters, it is truncated to 14 charactes # proc TruncFileName {pathName} { global G_truncFileNames if {!$G_truncFileNames} { return $pathName} set fileName [file tail $pathName] if {"[crange $fileName 0 3]" == "Tcl_"} { set fileName [crange $fileName 4 end]} set fileName [crange $fileName 0 13] return "[file dirname $pathName]/$fileName" } #----------------------------------------------------------------------------- # Proc to ensure that all directories for the specified file path exists, # and if they don't create them. Don't use -path so we can set the # permissions. proc EnsureDirs {filePath} { set dirPath [file dirname $filePath] if [file exists $dirPath] return foreach dir [split $dirPath /] { lappend dirList $dir set partPath [join $dirList /] if [file exists $partPath] continue mkdir $partPath chmod u=rwx,go=rx $partPath } } #----------------------------------------------------------------------------- # # Proc to extract nroff text to use as a header to all pass to nroff when # processing a help file. # manPageFH - The file handle of the manual page. # proc ExtractNroffHeader {manPageFH} { global nroffHeader while {[gets $manPageFH manLine] >= 0} { if {[string first "'@endheader" $manLine] == 0} { break; } if {[string first "'@:" $manLine] == 0} { set manLine [csubstr manLine 3 end] } append nroffHeader "$manLine\n" } } #----------------------------------------------------------------------------- # # Proc to extract a nroff help file when it is located in the text. # manPageFH - The file handle of the manual page. # manLine - The '@help: line starting the data to extract. # proc ExtractNroffHelp {manPageFH manLine} { global G_helpDir nroffHeader G_briefHelpFH G_colArgs set helpName [string trim [csubstr $manLine 7 end]] set helpFile [TruncFileName "$G_helpDir/$helpName"] if {[file exists $helpFile]} { error "Help file already exists: $helpFile"} EnsureDirs $helpFile set helpFH [open "| nroff -man | col $G_colArgs > $helpFile" w] echo " creating help file $helpName" # Nroff commands from .TH macro to get the formatting right. The `\n' # are newline separators to output, the `\\n' become `\n' in the text. puts $helpFH ".ad b\n.PD\n.nrIN \\n()Mu\n.nr)R 0\n.nr)I \\n()Mu" puts $helpFH ".nr)R 0\n.\}E\n.DT\n.na\n.nh" puts $helpFH $nroffHeader set foundBrief 0 while {[gets $manPageFH manLine] >= 0} { if {[string first "'@endhelp" $manLine] == 0} { break; } if {[string first "'@brief:" $manLine] == 0} { if $foundBrief { error {Duplicate "'@brief" entry"} } set foundBrief 1 puts $G_briefHelpFH "$helpName\t[csubstr $manLine 8 end]" continue; } if {[string first "'@:" $manLine] == 0} { set manLine [csubstr $manLine 3 end] } if {[string first "'@help" $manLine] == 0} { error {"'@help" found within another help section"} } puts $helpFH $manLine } close $helpFH chmod a-w,a+r $helpFile } #----------------------------------------------------------------------------- # # Proc to extract a tcl script help file when it is located in the text. # ScriptPageFH - The file handle of the .tcl file. # ScriptLine - The #@help: line starting the data to extract. # proc ExtractScriptHelp {ScriptPageFH ScriptLine} { global G_helpDir G_briefHelpFH set helpName [string trim [csubstr $ScriptLine 7 end]] set helpFile "$G_helpDir/$helpName" if {[file exists $helpFile]} { error "Help file already exists: $helpFile"} EnsureDirs $helpFile set helpFH [open $helpFile w] echo " creating help file $helpName" set foundBrief 0 while {[gets $ScriptPageFH ScriptLine] >= 0} { if {[string first "#@endhelp" $ScriptLine] == 0} { break; } if {[string first "#@brief:" $ScriptLine] == 0} { if $foundBrief { error {Duplicate "#@brief" entry"} } set foundBrief 1 puts $G_briefHelpFH "$helpName\t[csubstr $ScriptLine 8 end]" continue; } if {[string first "#@help" $ScriptLine] == 0} { error {"#@help" found within another help section"} } if {[clength $ScriptLine] > 1} { set ScriptLine " [csubstr $ScriptLine 1 end]" } else { set ScriptLine "" } puts $helpFH $ScriptLine } close $helpFH chmod a-w,a+r $helpFile } #----------------------------------------------------------------------------- # # Proc to scan a nroff manual file looking for the start of a help text # sections and extracting those sections. # pathName - Full path name of file to extract documentation from. # proc ProcessNroffFile {pathName} { global G_nroffScanCT G_scriptScanCT nroffHeader set fileName [file tail $pathName] set nroffHeader {} set manPageFH [open $pathName r] echo " scanning $pathName" set matchInfo(fileName) [file tail $pathName] scanfile $G_nroffScanCT $manPageFH close $manPageFH } #----------------------------------------------------------------------------- # # Proc to scan a Tcl script file looking for the start of a # help text sections and extracting those sections. # pathName - Full path name of file to extract documentation from. # proc ProcessTclScript {pathName} { global G_scriptScanCT nroffHeader set scriptFH [open "$pathName" r] echo " scanning $pathName" set matchInfo(fileName) [file tail $pathName] scanfile $G_scriptScanCT $scriptFH close $scriptFH } #----------------------------------------------------------------------------- # Proc to copy the help merge tree, excluding the brief file and RCS files # proc CopyMergeTree {helpDirPath mergeTree} { if {"[cindex $helpDirPath 0]" != "/"} { set helpDirPath "[pwd]/$helpDirPath" } set oldDir [pwd] cd $mergeTree set curHelpDir "." for_recursive_glob mergeFile {.} { if [string match "*/RCS/*" $mergeFile] continue set helpFile "$helpDirPath/$mergeFile" if [file isdirectory $mergeFile] continue if {[file exists $helpFile]} { error "Help file already exists: $helpFile"} EnsureDirs $helpFile set inFH [open $mergeFile r] set outFH [open $helpFile w] copyfile $inFH $outFH close $outFH close $inFH chmod a-w,a+r $helpFile } cd $oldDir } #----------------------------------------------------------------------------- # GenerateHelp: main procedure. Generates help from specified files. # helpDirPath - Directory were the help files go. # mergeTree - Help file tree to merge with the extracted help files. # briefFile - The name of the brief file to create. # sourceFiles - List of files to extract help files from. proc GenerateHelp {helpDirPath briefFile mergeTree sourceFiles} { global G_helpDir G_truncFileNames G_nroffScanCT global G_scriptScanCT G_briefHelpFH G_colArgs echo "" echo "Begin building help tree" # Determine version of col command to use (no -x on BSD) if {[system {col -bx /dev/null 2>&1}] != 0} { set G_colArgs {-b} } else { set G_colArgs {-bx} } set G_helpDir [glob $helpDirPath] if {![file isdirectory $G_helpDir]} { error [concat "$G_helpDir is not a directory or does not exist. " "This should be the help root directory"] } set status [catch {set tmpFH [open $G_helpDir/AVeryVeryBigFileName w]}] if {$status != 0} { set G_truncFileNames 1 } else { close $tmpFH unlink $G_helpDir/AVeryVeryBigFileName set G_truncFileNames 0 } set G_nroffScanCT [scancontext create] scanmatch $G_nroffScanCT "^'@help:" { ExtractNroffHelp $matchInfo(handle) $matchInfo(line) continue } scanmatch $G_nroffScanCT "^'@header" { ExtractNroffHeader $matchInfo(handle) continue } scanmatch $G_nroffScanCT "^'@endhelp" { error [concat {"'@endhelp" without corresponding "'@help:"} \ ", offset = $matchInfo(offset)"] } scanmatch $G_nroffScanCT "^'@brief" { error [concat {"'@brief" without corresponding "'@help:"} ", offset = $matchInfo(offset)"] } set G_scriptScanCT [scancontext create] scanmatch $G_scriptScanCT "^#@help:" { ExtractScriptHelp $matchInfo(handle) $matchInfo(line) } if ![lempty $mergeTree] { echo " Merging tree: $mergeTree" CopyMergeTree $helpDirPath $mergeTree } if {[file extension $briefFile] != ".brf"} { puts stderr "Brief file \"$briefFile\" must have an extension \".brf\"" exit 1 } if [file exists $G_helpDir/$briefFile] { puts stderr "Brief file \"$G_helpDir/$briefFile\" already exists" exit 1 } set G_briefHelpFH [open "|sort > $G_helpDir/$briefFile" w] foreach manFile $sourceFiles { set manFile [glob $manFile] set ext [file extension $manFile] if {"$ext" == ".man"} { set status [catch {ProcessNroffFile $manFile} msg] } else { set status [catch {ProcessTclScript $manFile} msg] } if {$status != 0} { echo "Error extracting help from: $manFile" echo $msg global errorInfo interactiveSession if {!$interactiveSession} { echo $errorInfo exit 1 } } } close $G_briefHelpFH chmod a-w,a+r $G_helpDir/$briefFile echo "*** completed extraction of all help files" } #----------------------------------------------------------------------------- # Print a usage message and exit the program proc Usage {} { puts stderr {Wrong args: [-m mergetree] -b briefFile helpdir manfile1 [manfile2..]} exit 1 } #----------------------------------------------------------------------------- # Main program body, decides if help is interactive or batch. if {$interactiveSession} { echo "To extract help, use the command:" echo {GenerateHelp helpdir -m mergetree file-1 file-2 ...} } else { set mergeTree {} set briefFile {} while {[string match "-*" [lindex $argv 0]]} { set flag [lvarpop argv 0] case $flag in { "-m" {set mergeTree [lvarpop argv]} "-b" {set briefFile [lvarpop argv]} default Usage } } if {[llength $argv] < 2} { Usage } if [lempty $briefFile] { puts stderr {must specify -b argument} Usage } GenerateHelp [lindex $argv 0] $briefFile $mergeTree [lrange $argv 1 end] } micropolis-activity/src/tclx/ossupp/0000775000076400007640000000000010735230433020120 5ustar simcitysimcitymicropolis-activity/src/tclx/ossupp/sigs.c0000664000076400007640000000173210724145723021241 0ustar simcitysimcity/* * sigs.c * * Public-domain relatively quick-and-dirty implemenation of * ANSI library routine for System V Unix systems. * * It's written in old-style C for maximal portability. * * Arnold Robbins * January, February, 1991 * * Fixes from ado@elsie.nci.nih.gov * February 1991 *----------------------------------------------------------------------------- * $Id: sigs.c,v 2.0 1992/10/16 04:52:16 markd Rel $ *----------------------------------------------------------------------------- */ /* * To avoid Unix version problems, this code has been simplified to avoid * const and size_t, however this can cause an incompatible definition on * ansi-C systems, so a game is played with defines to ignore a strftime * declaration in time.h */ #include /* sigprocmask --- examines or changes the calling processes' signal mask */ int sigprocmask(how, set, oset) int how; sigset_t *set; sigset_t *oset; { int rc = 0; return rc; } micropolis-activity/src/tclx/ossupp/ids.c0000664000076400007640000000305210724145723021050 0ustar simcitysimcity/* * ids.c * * Public-domain relatively quick-and-dirty implemenation of * ANSI library routine for System V Unix systems. * * It's written in old-style C for maximal portability. * * Arnold Robbins * January, February, 1991 * * Fixes from ado@elsie.nci.nih.gov * February 1991 *----------------------------------------------------------------------------- * $Id: ids.c,v 2.0 1992/10/16 04:52:16 markd Rel $ *----------------------------------------------------------------------------- */ /* * To avoid Unix version problems, this code has been simplified to avoid * const and size_t, however this can cause an incompatible definition on * ansi-C systems, so a game is played with defines to ignore a strftime * declaration in time.h */ #include static uid_t usrID = 100; static gid_t grpID = 10; static int procID = 12345; static int pgrpID = 10; /* getppid --- returns the process ID of the parent process */ int getppid() { return procID; } /* getpgrp --- returns the process group of the process indicated by pid */ int getpgrp(pid) int pid; { return pgrpID; } /* setpgrp --- sets the process group of the process indicated by pid */ int setpgrp(pid, pgrp) int pid; int pgrp; { pgrpID = pgrp; return pgrp; } /* setuid --- sets the real and effective user ID of the current process */ int setuid(uid) uid_t uid; { usrID = uid; return 0; } /* getgid --- gets the effective group ID of the current process */ uid_t setgid(gid) gid_t gid; { grpID = gid; return 0; } micropolis-activity/src/tclx/ossupp/strftime.c0000664000076400007640000001536010724145723022133 0ustar simcitysimcity/* * strftime.c * * Public-domain relatively quick-and-dirty implemenation of * ANSI library routine for System V Unix systems. * * It's written in old-style C for maximal portability. * * The code for %c, %x, and %X is my best guess as to what's "appropriate". * This version ignores LOCALE information. * It also doesn't worry about multi-byte characters. * So there. * * Arnold Robbins * January, February, 1991 * * Fixes from ado@elsie.nci.nih.gov * February 1991 *----------------------------------------------------------------------------- * $Id: strftime.c,v 2.0 1992/10/16 04:52:16 markd Rel $ *----------------------------------------------------------------------------- */ /* * To avoid Unix version problems, this code has been simplified to avoid * const and size_t, however this can cause an incompatible definition on * ansi-C systems, so a game is played with defines to ignore a strftime * declaration in time.h */ #define strftime ___srtftime #include #include #include #include #undef strftime extern char *strchr(); static int weeknumber(); #ifndef TCL_HAS_TM_ZONE extern char *tzname[2]; extern int daylight; #endif /* strftime --- produce formatted time */ int strftime(s, maxsize, format, timeptr) char *s; int maxsize; char *format; struct tm *timeptr; { char *endp = s + maxsize; char *start = s; char tbuf[100]; int i; /* various tables, useful in North America */ static char *days_a[] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", }; static char *days_l[] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", }; static char *months_a[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", }; static char *months_l[] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", }; static char *ampm[] = { "AM", "PM", }; if (s == NULL || format == NULL || timeptr == NULL || maxsize == 0) return 0; if (strchr(format, '%') == NULL && strlen(format) + 1 >= maxsize) return 0; for (; *format && s < endp - 1; format++) { tbuf[0] = '\0'; if (*format != '%') { *s++ = *format; continue; } switch (*++format) { case '\0': *s++ = '%'; goto out; case '%': *s++ = '%'; continue; case 'a': /* abbreviated weekday name */ if (timeptr->tm_wday < 0 || timeptr->tm_wday > 6) strcpy(tbuf, "?"); else strcpy(tbuf, days_a[timeptr->tm_wday]); break; case 'A': /* full weekday name */ if (timeptr->tm_wday < 0 || timeptr->tm_wday > 6) strcpy(tbuf, "?"); else strcpy(tbuf, days_l[timeptr->tm_wday]); break; case 'h': /* abbreviated month name */ case 'b': /* abbreviated month name */ if (timeptr->tm_mon < 0 || timeptr->tm_mon > 11) strcpy(tbuf, "?"); else strcpy(tbuf, months_a[timeptr->tm_mon]); break; case 'B': /* full month name */ if (timeptr->tm_mon < 0 || timeptr->tm_mon > 11) strcpy(tbuf, "?"); else strcpy(tbuf, months_l[timeptr->tm_mon]); break; case 'c': /* appropriate date and time representation */ sprintf(tbuf, "%s %s %2d %02d:%02d:%02d %d", days_a[timeptr->tm_wday], months_a[timeptr->tm_mon], timeptr->tm_mday, timeptr->tm_hour, timeptr->tm_min, timeptr->tm_sec, timeptr->tm_year + 1900); break; case 'd': /* day of the month, 01 - 31 */ sprintf(tbuf, "%02d", timeptr->tm_mday); break; case 'H': /* hour, 24-hour clock, 00 - 23 */ sprintf(tbuf, "%02d", timeptr->tm_hour); break; case 'I': /* hour, 12-hour clock, 01 - 12 */ i = timeptr->tm_hour; if (i == 0) i = 12; else if (i > 12) i -= 12; sprintf(tbuf, "%02d", i); break; case 'j': /* day of the year, 001 - 366 */ sprintf(tbuf, "%03d", timeptr->tm_yday + 1); break; case 'm': /* month, 01 - 12 */ sprintf(tbuf, "%02d", timeptr->tm_mon + 1); break; case 'M': /* minute, 00 - 59 */ sprintf(tbuf, "%02d", timeptr->tm_min); break; case 'p': /* am or pm based on 12-hour clock */ if (timeptr->tm_hour < 12) strcpy(tbuf, ampm[0]); else strcpy(tbuf, ampm[1]); break; case 'S': /* second, 00 - 61 */ sprintf(tbuf, "%02d", timeptr->tm_sec); break; case 'U': /* week of year, Sunday is first day of week */ sprintf(tbuf, "%d", weeknumber(timeptr, 0)); break; case 'w': /* weekday, Sunday == 0, 0 - 6 */ sprintf(tbuf, "%d", timeptr->tm_wday); break; case 'W': /* week of year, Monday is first day of week */ sprintf(tbuf, "%d", weeknumber(timeptr, 1)); break; case 'x': /* appropriate date representation */ sprintf(tbuf, "%s %s %2d %d", days_a[timeptr->tm_wday], months_a[timeptr->tm_mon], timeptr->tm_mday, timeptr->tm_year + 1900); break; case 'X': /* appropriate time representation */ sprintf(tbuf, "%02d:%02d:%02d", timeptr->tm_hour, timeptr->tm_min, timeptr->tm_sec); break; case 'y': /* year without a century, 00 - 99 */ i = timeptr->tm_year % 100; sprintf(tbuf, "%d", i); break; case 'Y': /* year with century */ sprintf(tbuf, "%d", 1900 + timeptr->tm_year); break; case 'Z': /* time zone name or abbrevation */ #ifdef TCL_HAS_TM_ZONE strcpy(tbuf, timeptr->tm_zone); #else i = 0; if (daylight && timeptr->tm_isdst) i = 1; strcpy(tbuf, tzname[i]); #endif break; case 'n': /* same as \n */ tbuf[0] = '\n'; tbuf[1] = '\0'; break; case 't': /* same as \t */ tbuf[0] = '\t'; tbuf[1] = '\0'; break; case 'D': /* date as %m/%d/%y */ strftime(tbuf, sizeof tbuf, "%m/%d/%y", timeptr); break; case 'e': /* day of month, blank padded */ sprintf(tbuf, "%2d", timeptr->tm_mday); break; case 'r': /* time as %I:%M:%S %p */ strftime(tbuf, sizeof tbuf, "%I:%M:%S %p", timeptr); break; case 'R': /* time as %H:%M */ strftime(tbuf, sizeof tbuf, "%H:%M", timeptr); break; case 'T': /* time as %H:%M:%S */ strftime(tbuf, sizeof tbuf, "%H:%M:%S", timeptr); break; default: tbuf[0] = '%'; tbuf[1] = *format; tbuf[2] = '\0'; break; } i = strlen(tbuf); if (i) if (s + i < endp - 1) { strcpy(s, tbuf); s += i; } else return 0; } out: if (s < endp && *format == '\0') { *s = '\0'; return (s - start); } else return 0; } /* weeknumber --- figure how many weeks into the year */ /* With thanks and tip of the hatlo to ado@elsie.nci.nih.gov */ static int weeknumber(timeptr, firstweekday) struct tm *timeptr; int firstweekday; { if (firstweekday == 0) return (timeptr->tm_yday + 7 - timeptr->tm_wday) / 7; else return (timeptr->tm_yday + 7 - (timeptr->tm_wday ? (timeptr->tm_wday - 1) : 6)) / 7; } micropolis-activity/src/tclx/ossupp/makefile0000664000076400007640000000254110724145723021627 0ustar simcitysimcity# # Makefile -- # # Makefile for Extended Tcl ossupport code. #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: Makefile,v 2.1 1992/11/07 22:33:46 markd Exp $ #------------------------------------------------------------------------------ # include ../config.mk include ../config/$(TCL_CONFIG_FILE) SHELL=/bin/sh #------------------------------------------------------------------------------ CFLAGS=$(OPTIMIZE_FLAG) $(XCFLAGS) -I../$(TCL_UCB_DIR) $(MEM_DEBUG_FLAGS) \ $(SYS_DEP_FLAGS) $(SUPPORT_FLAGS) #------------------------------------------------------------------------------ all: made.tmp made.tmp: $(SUPPORT_OBJS) $(AR) cr ../libtcl.a $(SUPPORT_OBJS) touch made.tmp #------------------------------------------------------------------------------ clean: touch junk~ -rm -f *~ made.tmp -rm -f *.o micropolis-activity/src/tclx/ossupp/makefile.dvx0000664000076400007640000000263710724145723022435 0ustar simcitysimcity# # Makefile -- # # Makefile for Extended Tcl ossupport code. #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: Makefile,v 2.1 1992/11/07 22:33:46 markd Exp $ #------------------------------------------------------------------------------ # include ..\Config.mk include ..\config\$(TCL_CONFIG_FILE) #SHELL=/bin/sh #------------------------------------------------------------------------------ CFLAGS=$(OPTIMIZE_FLAG) $(XCFLAGS) -I../$(TCL_UCB_DIR) $(MEM_DEBUG_FLAGS) \ -DTCL_HAS_TM_ZONE $(SUPPORT_FLAGS) #------------------------------------------------------------------------------ .c.o: $(CC) $(CFLAGS) <@< -c $< $(SYS_DEP_FLAGS) < all: made.tmp made.tmp: $(SUPPORT_OBJS) $(AR) cr ..\libtcl.a $(SUPPORT_OBJS) $(RANLIB) ..\libtcl.a touch made.tmp #------------------------------------------------------------------------------ clean: -rm -f made.tmp -rm -f *.o micropolis-activity/src/tclx/ossupp/times.c0000664000076400007640000000215710724145723021417 0ustar simcitysimcity/* * times.c * * Public-domain relatively quick-and-dirty implemenation of * ANSI library routine for System V Unix systems. * * It's written in old-style C for maximal portability. * * Arnold Robbins * January, February, 1991 * * Fixes from ado@elsie.nci.nih.gov * February 1991 *----------------------------------------------------------------------------- * $Id: times.c,v 2.0 1992/10/16 04:52:16 markd Rel $ *----------------------------------------------------------------------------- */ /* * To avoid Unix version problems, this code has been simplified to avoid * const and size_t, however this can cause an incompatible definition on * ansi-C systems, so a game is played with defines to ignore a strftime * declaration in time.h */ #include #include #include /* times --- produce process times */ clock_t times(buffer) struct tms *buffer; { clock_t clk_time; clk_time = clock(); buffer->tms_utime = clk_time; buffer->tms_utime2 = clk_time; buffer->tms_stime = clk_time; buffer->tms_stime2 = clk_time; return clk_time; } micropolis-activity/src/tclx/ossupp/fcntl.c0000664000076400007640000000166210724145723021404 0ustar simcitysimcity/* * fcntl.c * * Public-domain relatively quick-and-dirty implemenation of * ANSI library routine for System V Unix systems. * * It's written in old-style C for maximal portability. * * Arnold Robbins * January, February, 1991 * * Fixes from ado@elsie.nci.nih.gov * February 1991 *----------------------------------------------------------------------------- * $Id: fcntl.c,v 2.0 1992/10/16 04:52:16 markd Rel $ *----------------------------------------------------------------------------- */ /* * To avoid Unix version problems, this code has been simplified to avoid * const and size_t, however this can cause an incompatible definition on * ansi-C systems, so a game is played with defines to ignore a strftime * declaration in time.h */ #include /* fcntl --- performs open file attribute access */ int fcntl(fd, cmd, arg) int fd; int cmd; int arg; { int rc = 0; return rc; } micropolis-activity/src/tclx/tkucbsrc/0000775000076400007640000000000010735230433020407 5ustar simcitysimcitymicropolis-activity/src/tclx/tkucbsrc/tkevent.sed0000664000076400007640000000027410724145723022574 0ustar simcitysimcity/#include /a\ extern Tcl_Interp *tk_mainInterp; /numFound = select(numFds/i\ if (Tcl_CheckForSignal (tk_mainInterp, TCL_OK) == TCL_ERROR)\ TkBindError(tk_mainInterp);\ micropolis-activity/src/tclx/tkucbsrc/main.dif0000664000076400007640000000546110724145723022032 0ustar simcitysimcity*** ../../tk2.3/main.c Wed Aug 19 08:10:32 1992 --- main.c Tue Oct 6 17:27:56 1992 *************** *** 19,24 #include "tkConfig.h" #include "tkInt.h" /* * Declarations for library procedures: --- 19,29 ----- #include "tkConfig.h" #include "tkInt.h" + #define TK_EXTENDED + #ifdef TK_EXTENDED + # include "tclExtend.h" + Tcl_Interp *tk_mainInterp; /* Need to process signals */ + #endif /* * Declarations for library procedures: *************** *** 30,35 * Command used to initialize wish: */ char initCmd[] = "source $tk_library/wish.tcl"; Tk_Window w; /* NULL means window has been deleted. */ --- 35,43 ----- * Command used to initialize wish: */ + #ifdef TK_EXTENDED + char initCmd[] = "load wishx.tcl"; + #else char initCmd[] = "source $tk_library/wish.tcl"; #endif *************** *** 31,36 */ char initCmd[] = "source $tk_library/wish.tcl"; Tk_Window w; /* NULL means window has been deleted. */ Tk_TimerToken timeToken = 0; --- 39,45 ----- char initCmd[] = "load wishx.tcl"; #else char initCmd[] = "source $tk_library/wish.tcl"; + #endif Tk_Window w; /* NULL means window has been deleted. */ Tk_TimerToken timeToken = 0; *************** *** 219,224 int result; Tk_3DBorder border; interp = Tcl_CreateInterp(); #ifdef TCL_MEM_DEBUG Tcl_InitMemory(interp); --- 228,236 ----- int result; Tk_3DBorder border; + #ifdef TK_EXTENDED + tk_mainInterp = interp = Tcl_CreateExtendedInterp(); + #else interp = Tcl_CreateInterp(); #endif #ifdef TCL_MEM_DEBUG *************** *** 220,225 Tk_3DBorder border; interp = Tcl_CreateInterp(); #ifdef TCL_MEM_DEBUG Tcl_InitMemory(interp); #endif --- 232,238 ----- tk_mainInterp = interp = Tcl_CreateExtendedInterp(); #else interp = Tcl_CreateInterp(); + #endif #ifdef TCL_MEM_DEBUG Tcl_InitMemory(interp); #endif *************** *** 284,289 if (geometry != NULL) { Tcl_SetVar(interp, "geometry", geometry, TCL_GLOBAL_ONLY); } result = Tcl_Eval(interp, initCmd, 0, (char **) NULL); if (result != TCL_OK) { goto error; --- 297,312 ----- if (geometry != NULL) { Tcl_SetVar(interp, "geometry", geometry, TCL_GLOBAL_ONLY); } + #ifdef TK_EXTENDED + tclAppName = "Wish"; + tclAppLongname = "Wish - Tk Shell"; + tclAppVersion = TK_VERSION; + Tcl_ShellEnvInit (interp, TCLSH_ABORT_STARTUP_ERR, + name, + 0, NULL, /* argv var already set */ + fileName == NULL, /* interactive? */ + NULL); /* Standard default file */ + #endif result = Tcl_Eval(interp, initCmd, 0, (char **) NULL); if (result != TCL_OK) { goto error; micropolis-activity/src/tclx/tkucbsrc/makefile0000664000076400007640000000522210724145723022115 0ustar simcitysimcity# # Makefile -- # # Makefile for building special version of tk source to support Extended Tcl. # #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: Makefile,v 2.0 1992/10/16 04:54:52 markd Rel $ #------------------------------------------------------------------------------ # include ../config.mk include ../config/$(TCL_CONFIG_FILE) SHELL=/bin/sh #------------------------------------------------------------------------------ CFLAGS= $(OPTIMIZE_FLAG) $(XCFLAGS) -I../src -I../$(TCL_TK_DIR) \ -I../$(TCL_UCB_DIR) -I$(XHOME)/include \ $(MEM_DEBUG_FLAGS) $(SYS_DEP_FLAGS) \ -DTK_VERSION=\"2.2/\" #------------------------------------------------------------------------------ # # Targets to build: LIBOBJS = tkevent.o OBJS = main.o $(LIBOBJS) WISHX_TCL = ../tcllib/wishx.tcl TK_TCL = ../tcllib/tk.tcl TK_TLIB = ../tcllib/tk.tlib #------------------------------------------------------------------------------ # # Original UCB Sources to build them from: MAIN_SRC = ../$(TCL_TK_DIR)/main.c EVENT_SRC = ../$(TCL_TK_DIR)/tkevent.c WISHX_SRC = ../$(TCL_TK_DIR)/library/wish.tcl TK_TCL_SRC= ../$(TCL_TK_DIR)/library/tk.tcl #------------------------------------------------------------------------------ #all: made.tmp $(WISHX_TCL) $(TK_TLIB) $(TK_TCL) all: made.tmp $(WISHX_TCL) $(TK_TCL) made.tmp: $(OBJS) -$(AR) d ../libtk.a $(LIBOBJS) $(AR) cr ../libtk.a $(LIBOBJS) touch made.tmp main.c: $(MAIN_SRC) main.sed rm -f main.c sed -f main.sed <$(MAIN_SRC) >main.c tkevent.c: $(EVENT_SRC) tkevent.sed rm -f tkevent.c sed -f tkevent.sed <$(EVENT_SRC) >tkevent.c $(WISHX_TCL): $(WISHX_SRC) wishx.sed rm -f $(WISHX_TCL) sed -f wishx.sed <$(WISHX_SRC) >$(WISHX_TCL) $(TK_TCL): $(TK_TCL_SRC) rm -f $(TK_TCL) cp $(TK_TCL_SRC) $(TK_TCL) $(TK_TLIB): ../$(TCL_TK_DIR)/library/tclindex TCLDEFAULT=../tcldef;export TCLDEFAULT ;\ ../tcl "-c convert_lib ../$(TCL_TK_DIR)/library/tclindex $(TK_TLIB)" #------------------------------------------------------------------------------ clean: touch junk~ rm -f *~ $(OBJS) made.tmp rm -f tkevent.c main.c rm -f $(WISHX_TCL) $(TK_TCL) $(TK_TLIB) ../tcllib/tk.tdx micropolis-activity/src/tclx/tkucbsrc/main.sed0000664000076400007640000000164210724145723022040 0ustar simcitysimcity/#include "tkint.h"/a\ #define TK_EXTENDED\ #ifdef TK_EXTENDED\ # include "tclxtend.h"\ Tcl_Interp *tk_mainInterp; /* Need to process signals */\ #endif /^char initCmd/c\ #ifdef TK_EXTENDED\ char initCmd[] = "load wishx.tcl";\ #else\ char initCmd[] = "source $tk_library/wish.tcl";\ #endif / interp = Tcl_CreateInterp();/c\ #ifdef TK_EXTENDED\ tk_mainInterp = interp = Tcl_CreateExtendedInterp();\ #else\ interp = Tcl_CreateInterp();\ #endif /result = Tcl_Eval(interp, initCmd/i\ #ifdef TK_EXTENDED\ tclAppName = "Wish";\ tclAppLongname = "Wish - Tk Shell";\ tclAppVersion = TK_VERSION;\ Tcl_ShellEnvInit (interp, TCLSH_ABORT_STARTUP_ERR,\ name,\ 0, NULL, /* argv var already set */\ fileName == NULL, /* interactive? */\ NULL); /* Standard default file */\ #endif micropolis-activity/src/tclx/tkucbsrc/tkevent.dif0000664000076400007640000000325310724145723022563 0ustar simcitysimcity*** ../../tk2.3/tkEvent.c Fri Aug 21 16:16:16 1992 --- tkEvent.c Tue Oct 6 17:28:21 1992 *************** *** 23,28 #include "tkInt.h" #include #include /* * For each timer callback that's pending, there is one record --- 23,29 ----- #include "tkInt.h" #include #include + extern Tcl_Interp *tk_mainInterp; /* * For each timer callback that's pending, there is one record *************** *** 1321,1326 memcpy((VOID *) ready, (VOID *) masks, 3*MASK_SIZE*sizeof(int)); timeout.tv_sec = timeout.tv_usec = 0; do { numFound = select(numFds, (SELECT_MASK *) readPtr, (SELECT_MASK *) writePtr, (SELECT_MASK *) exceptPtr, &timeout); --- 1322,1330 ----- memcpy((VOID *) ready, (VOID *) masks, 3*MASK_SIZE*sizeof(int)); timeout.tv_sec = timeout.tv_usec = 0; do { + if (Tcl_CheckForSignal (tk_mainInterp, TCL_OK) == TCL_ERROR) + TkBindError(tk_mainInterp); + numFound = select(numFds, (SELECT_MASK *) readPtr, (SELECT_MASK *) writePtr, (SELECT_MASK *) exceptPtr, &timeout); *************** *** 1384,1389 } memcpy((VOID *) ready, (VOID *) masks, 3*MASK_SIZE*sizeof(int)); do { numFound = select(numFds, (SELECT_MASK *) readPtr, (SELECT_MASK *) writePtr, (SELECT_MASK *) exceptPtr, timeoutPtr); --- 1388,1396 ----- } memcpy((VOID *) ready, (VOID *) masks, 3*MASK_SIZE*sizeof(int)); do { + if (Tcl_CheckForSignal (tk_mainInterp, TCL_OK) == TCL_ERROR) + TkBindError(tk_mainInterp); + numFound = select(numFds, (SELECT_MASK *) readPtr, (SELECT_MASK *) writePtr, (SELECT_MASK *) exceptPtr, timeoutPtr); micropolis-activity/src/tclx/tkucbsrc/wishx.sed0000664000076400007640000000007010724145723022250 0ustar simcitysimcity/source.*init\.tcl/d /source.*tk_library/c\ load tk.tcl micropolis-activity/src/tclx/tclsrc/0000775000076400007640000000000010735230433020061 5ustar simcitysimcitymicropolis-activity/src/tclx/tclsrc/forfile.tcl0000664000076400007640000000176110724145723022225 0ustar simcitysimcity# # forfile.tcl -- # # Proc to execute code on every line of a file. #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: forfile.tcl,v 2.0 1992/10/16 04:51:58 markd Rel $ #------------------------------------------------------------------------------ # #@package: TclX-forfile for_file proc for_file {var filename code} { upvar $var line set fp [open $filename r] while {[gets $fp line] >= 0} { uplevel $code } close $fp } micropolis-activity/src/tclx/tclsrc/convlib.tcl0000664000076400007640000000361310724145723022231 0ustar simcitysimcity# # convlib.tcl -- # # Convert Ousterhout style tclIndex files and associated libraries to a # package library. # #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: convlib.tcl,v 2.0 1992/10/16 04:51:53 markd Rel $ #------------------------------------------------------------------------------ # #@package: TclX-convertlib convert_lib proc convert_lib {tclIndex packageLib {ignore {}}} { if {[file tail $tclIndex] != "tclindex"} { error "Tail file name numt be `tclindex': $tclIndex"} set srcDir [file dirname $tclIndex] if {[file extension $packageLib] != ".tlib"} { append packageLib ".tlib"} # Build an array addressed by file name containing all of the procs # defined in that file. set tclIndexFH [open $tclIndex r] while {[gets $tclIndexFH line] >= 0} { if {([cindex $line 0] == "#") || ([llength $line] != 2)} { continue} if {[lsearch $ignore [lindex $line 1]] >= 0} { continue} lappend entryTable([lindex $line 1]) [lindex $line 0] } close $tclIndexFH set libFH [open $packageLib w] foreach srcFile [array names entryTable] { set srcFH [open $srcDir/$srcFile r] puts $libFH "#@package: $srcFile $entryTable($srcFile)\n" copyfile $srcFH $libFH close $srcFH } close $libFH buildpackageindex $packageLib } micropolis-activity/src/tclx/tclsrc/forrec.tcl0000664000076400007640000000231710724145723022055 0ustar simcitysimcity# # forrecur.tcl -- # # Proc to execute code on every file in a recursive directory glob. #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: forrecur.tcl,v 2.0 1992/10/16 04:52:00 markd Rel $ #------------------------------------------------------------------------------ # #@package: TclX-forrecur for_recursive_glob proc for_recursive_glob {var globlist code {depth 1}} { upvar $depth $var myVar foreach globpat $globlist { foreach file [glob -nocomplain $globpat] { if [file isdirectory $file] { for_recursive_glob $var $file/* $code [expr {$depth + 1}] } set myVar $file uplevel $depth $code } } } micropolis-activity/src/tclx/tclsrc/makefile0000664000076400007640000000316610724145723021574 0ustar simcitysimcity# # Makefile -- # # Makefile for Extended Tcl package library. # #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: Makefile,v 2.0 1992/10/16 04:51:50 markd Rel $ #------------------------------------------------------------------------------ # include ../config.mk include ../config/$(TCL_CONFIG_FILE) SHELL=/bin/sh #------------------------------------------------------------------------------ TCL.TLIB=../tcllib/tcl.tlb TCL.TNDX=../tcllib/tcl.tdx #------------------------------------------------------------------------------ TCL_SRCS=array.tcl assign.tcl edprocs.tcl forfile.tcl \ forrec.tcl globrec.tcl help.tcl packages.tcl \ pushd.tcl setfuncs.tcl showproc.tcl strfile.tcl \ compat.tcl convlib.tcl profrep.tcl #------------------------------------------------------------------------------ all: made.tmp made.tmp: $(TCL.TLIB) touch made.tmp $(TCL.TLIB): $(TCL_SRCS) cat $(TCL_SRCS) | egrep -v '^#$$|^# *|^#-|^#=|^ *#' > $@ #------------------------------------------------------------------------------ clean: touch junk~ -rm -f *~ made.tmp $(TCL.TLIB) $(TCL.TNDX) micropolis-activity/src/tclx/tclsrc/compat.tcl0000664000076400007640000000164410724145723022062 0ustar simcitysimcity# # compat -- # # This file provides commands compatible with older versions of Extended Tcl. # #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: compat.tcl,v 2.0 1992/10/16 04:51:51 markd Rel $ #------------------------------------------------------------------------------ # #@package: TclX-Compatibility execvp proc execvp {progname args} { execl $progname $args } micropolis-activity/src/tclx/tclsrc/help.tcl0000664000076400007640000001736010724145723021531 0ustar simcitysimcity# # help.tcl -- # # Tcl help command. (see TclX manual) # #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: help.tcl,v 2.0 1992/10/16 04:52:01 markd Rel $ #------------------------------------------------------------------------------ # #@package: TclX-help help helpcd helppwd apropos #------------------------------------------------------------------------------ # Take a path name which might have . and .. elements and flatten them out. proc help:flattenPath {pathName} { set newPath {} foreach element [split $pathName /] { if {"$element" == "."} { continue } if {"$element" == ".."} { if {[llength [join $newPath /]] == 0} { error "Help: name goes above subject directory root"} lvarpop newPath [expr [llength $newPath]-1] continue } lappend newPath $element } set newPath [join $newPath /] # Take care of the case where we started with something line "/" or "/." if {("$newPath" == "") && [string match "/*" $pathName]} { set newPath "/"} return $newPath } #------------------------------------------------------------------------------ # Take the help current directory and a path and evaluate it into a help root- # based path name. proc help:EvalPath {pathName} { global TCLENV if {![string match "/*" $pathName]} { if {"$pathName" == ""} { return $TCLENV(help:curDir)} if {"$TCLENV(help:curDir)" == "/"} { set pathName "/$pathName" } else { set pathName "$TCLENV(help:curDir)/$pathName" } } set pathName [help:flattenPath $pathName] if {[string match "*/" $pathName] && ($pathName != "/")} { set pathName [csubstr $pathName 0 [expr [length $pathName]-1]]} return $pathName } #------------------------------------------------------------------------------ # Display a line of output, pausing waiting for input before displaying if the # screen size has been reached. Return 1 if output is to continue, return # 0 if no more should be outputed, indicated by input other than return. # proc help:Display {line} { global TCLENV if {$TCLENV(help:lineCnt) >= 23} { set TCLENV(help:lineCnt) 0 puts stdout ":" nonewline flush stdout gets stdin response if {![lempty $response]} { return 0} } puts stdout $line incr TCLENV(help:lineCnt) } #------------------------------------------------------------------------------ # Display a file. proc help:DisplayFile {filepath} { set inFH [open $filepath r] while {[gets $inFH fileBuf] >= 0} { if {![help:Display $fileBuf]} { break} } close $inFH } #------------------------------------------------------------------------------ # Procedure to return contents of a directory. A list is returned, consisting # of two lists. The first list are all the directories (subjects) in the # specified directory. The second is all of the help files. Eash sub-list # is sorted in alphabetical order. # proc help:ListDir {dirPath} { set dirList {} set fileList {} if {[catch {set dirFiles [glob $dirPath/*]}] != 0} { error "No files in subject directory: $dirPath"} foreach fileName $dirFiles { if [file isdirectory $fileName] { lappend dirList "[file tail $fileName]/" } else { lappend fileList [file tail $fileName] } } return [list [lsort $dirList] [lsort $fileList]] } #------------------------------------------------------------------------------ # Display a list of file names in a column format. This use columns of 14 # characters 3 blanks. proc help:DisplayColumns {nameList} { set count 0 set outLine "" foreach name $nameList { if {$count == 0} { append outLine " "} append outLine $name if {[incr count] < 4} { set padLen [expr 17-[clength $name]] if {$padLen < 3} { set padLen 3} append outLine [replicate " " $padLen] } else { if {![help:Display $outLine]} { return} set outLine "" set count 0 } } if {$count != 0} { help:Display $outLine} return } #------------------------------------------------------------------------------ # Help command main. proc help {{subject {}}} { global TCLENV set TCLENV(help:lineCnt) 0 # Special case "help help", so we can get it at any level. if {($subject == "help") || ($subject == "?")} { help:DisplayFile "$TCLENV(help:root)/help" return } set request [help:EvalPath $subject] set requestPath "$TCLENV(help:root)$request" if {![file exists $requestPath]} { error "Help:\"$request\" does not exist"} if [file isdirectory $requestPath] { set dirList [help:ListDir $requestPath] set subList [lindex $dirList 0] set fileList [lindex $dirList 1] if {[llength $subList] != 0} { help:Display "\nSubjects available in $request:" help:DisplayColumns $subList } if {[llength $fileList] != 0} { help:Display "\nHelp files available in $request:" help:DisplayColumns $fileList } } else { help:DisplayFile $requestPath } return } #------------------------------------------------------------------------------ # Helpcd main. # # The name of the new current directory is assembled from the current # directory and the argument. The name will be flatten and any trailing # "/" will be removed, unless the name is just "/". proc helpcd {{dir /}} { global TCLENV set request [help:EvalPath $dir] set requestPath "$TCLENV(help:root)$request" if {![file exists $requestPath]} { error "Helpcd: \"$request\" does not exist"} if {![file isdirectory $requestPath]} { error "Helpcd: \"$request\" is not a directory"} set TCLENV(help:curDir) $request return } #------------------------------------------------------------------------------ # Helpcd main. proc helppwd {} { global TCLENV echo "Current help subject directory: $TCLENV(help:curDir)" } #============================================================================== # Tcl apropos command. (see Tcl shell manual) #------------------------------------------------------------------------------ proc apropos {name} { global TCLENV set TCLENV(help:lineCnt) 0 set aproposCT [scancontext create] scanmatch -nocase $aproposCT $name { set path [lindex $matchInfo(line) 0] set desc [lrange $matchInfo(line) 1 end] if {![help:Display [format "%s - %s" $path $desc]]} { return} } foreach brief [glob -nocomplain $TCLENV(help:root)/*.brf] { set briefFH [open $brief] scanfile $aproposCT $briefFH close $briefFH } scancontext delete $aproposCT } #------------------------------------------------------------------------------ # One time initialization done when the file is sourced. # global TCLENV TCLPATH set TCLENV(help:root) [searchpath $TCLPATH help] set TCLENV(help:curDir) "/" set TCLENV(help:outBuf) {} micropolis-activity/src/tclx/tclsrc/globrec.tcl0000664000076400007640000000223210724145723022206 0ustar simcitysimcity# # globrecur.tcl -- # # Build up a directory list recursively. #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: globrecur.tcl,v 2.0 1992/10/16 04:52:04 markd Rel $ #------------------------------------------------------------------------------ # #@package: TclX-globrecur recursive_glob proc recursive_glob {globlist} { set result "" foreach pattern $globlist { foreach file [glob -nocomplain $pattern] { lappend result $file if [file isdirectory $file] { set result [concat $result [recursive_glob $file/*]] } } } return $result } micropolis-activity/src/tclx/tclsrc/install.tcl0000664000076400007640000004726210724145723022253 0ustar simcitysimcity# # installTcl.tcl -- # # Tcl program to install Tcl onto the system. # #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: installTcl.tcl,v 2.0 1992/10/16 04:52:08 markd Rel $ #------------------------------------------------------------------------------ # # It is run in the following manner: # # tcl installTcl.tcl # # This script reads the Extended Tcl Makefile confiugation file (Config.mk) # and converts the Makefile macros in Tcl variables that control the # installation. The following variables are currently used: # # TCL_UCB_DIR TCL_DEFAULT TCL_OWNER # TCL_GROUP TCL_BINDIR TCL_LIBDIR # TCL_INCLUDEDIR TCL_TCLDIR TCL_MAN_INSTALL # TCL_MAN_BASEDIR TCL_MAN_CMD_SECTION TCL_MAN_FUNC_SECTION # TK_MAN_CMD_SECTION TK_MAN_FUNC_SECTION TCL_MAN_STYLE* # TCL_MAN_INDEX* TCL_TK_SHELL* # # (ones marked with * are optional) # # Notes: # o Must be run in the Extended Tcl top level directory. # o The routine InstallManPages has code to determine if a manual page # belongs to a command or function. For Tcl the commands are assumed # to be in "Tcl.man", for TclX functions are in TclX.man. All others # are assumed to be functions. For Tk, all manuals starting with Tk_ # are assumed to be functions, all others are assumed to be commands. #:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: #------------------------------------------------------------------------------ # ParseConfigFile -- # # Parse a configure file in the current directory and convert all make # macros to global Tcl variables. proc ParseConfigFile {configFile} { set cfgFH [open $configFile] while {[gets $cfgFH line] >= 0} { if {[string match {[A-Za-z]*} $line]} { set idx [string first "=" $line] if {$idx < 0} { error "no `=' in: $line"} set name [string trim [csubstr $line 0 $idx]] set value [string trim [crange $line [expr $idx+1] end]] global $name set $name $value } } close $cfgFH } #------------------------------------------------------------------------------ # GiveAwayFile -- # Give away a file to the Tcl owner and group and set its permissions. # # Globals: # TCL_OWNER - Owner name for Tcl files. # TCL_GROUP - Group nmae for Tcl file. #------------------------------------------------------------------------------ proc GiveAwayFile {file} { global TCL_OWNER TCL_GROUP if {[file isdirectory $file]} { chmod a+rx,go-w $file } else { chmod a+r,go-w $file } chown [list $TCL_OWNER $TCL_GROUP] $file } ;# GiveAwayFile #------------------------------------------------------------------------------ # MakePath -- # # Make sure all directories in a directory path exists, if not, create them. #------------------------------------------------------------------------------ proc MakePath {pathlist} { foreach path $pathlist { set exploded_path [split $path /] set thisdir {} foreach element $exploded_path { append thisdir $element if {![file isdirectory $thisdir]} { mkdir $thisdir GiveAwayFile $thisdir } append thisdir / } } } #------------------------------------------------------------------------------ # CopyFile -- # # Copy the specified file and change the ownership. If target is a directory, # then the file is copied to it, otherwise target is a new file name. #------------------------------------------------------------------------------ proc CopyFile {sourceFile target} { if {[file isdirectory $target]} { set targetFile "$target/[file tail $sourceFile]" } else { set targetFile $target } unlink -nocomplain $targetFile set sourceFH [open $sourceFile r] set targetFH [open $targetFile w] copyfile $sourceFH $targetFH close $sourceFH close $targetFH GiveAwayFile $targetFile } ;# CopyFile #------------------------------------------------------------------------------ # CopyManPage -- # # Copy the specified manual page and change the ownership. The manual page # is edited to remove change bars (.VS and .VE macros). If target is a # directory, then the file is copied to it, otherwise target is a new file # name. #------------------------------------------------------------------------------ proc CopyManPage {sourceFile target} { if {[file isdirectory $target]} { set targetFile "$target/[file tail $sourceFile]" } else { set targetFile $target } unlink -nocomplain $targetFile set sourceFH [open $sourceFile r] set targetFH [open $targetFile w] while {[gets $sourceFH line] >= 0} { if [string match {.V[SE]*} $line] continue puts $targetFH $line } close $sourceFH close $targetFH GiveAwayFile $targetFile } ;# CopyManPage #------------------------------------------------------------------------------ # CopySubDir -- # # Recursively copy part of a directory tree, changing ownership and # permissions. This is a utility routine that actually does the copying. #------------------------------------------------------------------------------ proc CopySubDir {sourceDir destDir} { foreach sourceFile [glob -nocomplain $sourceDir/*] { if [file isdirectory $sourceFile] { set destFile $destDir/[file tail $sourceFile] if {![file exists $destFile]} { mkdir $destFile} GiveAwayFile $destFile CopySubDir $sourceFile $destFile } else { CopyFile $sourceFile $destDir } } } ;# CopySubDir #------------------------------------------------------------------------------ # CopyDir -- # # Recurisvely copy a directory tree. #------------------------------------------------------------------------------ proc CopyDir {sourceDir destDir} { set cwd [pwd] if ![file exists $sourceDir] { error "\"$sourceDir\" does not exist" } if ![file isdirectory $sourceDir] { error "\"$sourceDir\" isn't a directory" } if {![file exists $destDir]} { mkdir $destDir GiveAwayFile $destDir } if ![file isdirectory $destDir] { error "\"$destDir\" isn't a directory" } cd $sourceDir set status [catch {CopySubDir . $destDir} msg] cd $cwd if {$status != 0} { global errorInfo errorCode error $msg $errorInfo $errorCode } } #------------------------------------------------------------------------------ # GenDefaultFile -- # # Generate the tcl defaults file. #------------------------------------------------------------------------------ proc GenDefaultFile {defaultFileBase sourceDir} { set defaultFile "$defaultFileBase[infox version]" if ![file writable [file dirname $defaultFile]] { puts stderr "Can't create $defaultFile -- directory is not writable" puts stderr "Please reinstall with correct permissions or rebuild" puts stderr "Tcl to select a default file where the directory path" puts stderr "you specify is writable by you." puts stderr "" exit 1 } set fp [open $defaultFile w] puts $fp "# Extended Tcl [infox version] default file" puts $fp "" puts $fp "set TCLINIT $sourceDir/TclInit.tcl" puts $fp "" puts $fp "set TCLPATH $sourceDir" close $fp GiveAwayFile $defaultFile } ;# GenDefaultFile #------------------------------------------------------------------------------ # GetManNames -- # # Search a manual page (nroff source) for the name line. Parse the name # line into all of the functions or commands that it references. This isn't # comprehensive, but it works for all of the Tcl, TclX and Tk man pages. # # Parameters: # o manFile (I) - The path to the manual page file. # Returns: # A list contain the functions or commands or {} if the name line can't be # found or parsed. #------------------------------------------------------------------------------ proc GetManNames {manFile} { set manFH [open $manFile] # # Search for name line. Once found, grab the next line that is not a # nroff macro. If we end up with a blank line, we didn't find it. # while {[gets $manFH line] >= 0} { if [regexp {^.SH NAME.*$} $line] { break } } while {[gets $manFH line] >= 0} { if {![string match ".*" $line]} break } close $manFH set line [string trim $line] if {$line == ""} return # # Lets try and parse the name list out of the line # if {![regexp {^(.*)(\\-)} $line {} namePart]} { if {![regexp {^(.*)(-)} $line {} namePart]} return } # # This magic converts the name line into a list # if {[catch {join [split $namePart ,] " "} namePart] != 0} return return $namePart } #------------------------------------------------------------------------------ # SetUpManIndex -- # Setup generation of manual page index for short manual pages, if required. # Globals: # o TCL_MAN_INDEX - Boolean indicating if a manual page is to be created. # If it does not exists, false is assumed. # o TCL_MAN_BASEDIR - Base manual directory where all of the man.* and cat.* # directories live. # Returns: # The manual index file handle, or {} if the manual index is not to be # generated. #------------------------------------------------------------------------------ proc SetUpManIndex {} { global TCL_MAN_BASEDIR TCL_MAN_INDEX if {!([info exists TCL_MAN_INDEX] && [set TCL_MAN_INDEX])} { return {} } set tclIndexFile $TCL_MAN_BASEDIR/index.TCL return [open $tclIndexFile w] } #------------------------------------------------------------------------------ # FinishUpManIndex -- # Finish generation of manual page index for short manual pages, if required. # Parameters: # o indexFileHdl - The file handle returned by SetUpManIndex, maybe {}. # Globals: # o TCL_MAN_BASEDIR - Base manual directory where all of the man.* and cat.* # directories live. #------------------------------------------------------------------------------ proc FinishUpManIndex {indexFileHdl} { global TCL_MAN_BASEDIR TCL_MAN_INDEX_MERGE if [lempty $indexFileHdl] return set tclIndexFile $TCL_MAN_BASEDIR/index.TCL close $indexFileHdl GiveAwayFile $tclIndexFile } #------------------------------------------------------------------------------ # InstallShortMan -- # Install a manual page on a system that does not have long file names, # optionally adding an entry to the man index. # # Parameters: # o sourceFile - Manual page source file path. # o section - Section to install the manual page in. # o indexFileHdl - File handle of the current index file being created, or # empty if no index is to be created. # Globals: # o TCL_MAN_BASEDIR - Base manual directory where all of the man.* and cat.* # directories live. # o TCL_MAN_SEPARATOR - The name separator between the directory and the # section. #------------------------------------------------------------------------------ proc InstallShortMan {sourceFile section indexFileHdl} { global TCL_MAN_BASEDIR TCL_MAN_SEPARATOR set manNames [GetManNames $sourceFile] if [lempty $manNames] { set baseName [file tail [file root $sourceFile]] puts stderr "Warning: can't parse NAME line for man page: $sourceFile." puts stderr " Manual page only available as: $baseName" } set manFileBase [file tail [file root $sourceFile]] set manFileName "$manFileBase.$section" set destManDir "$TCL_MAN_BASEDIR/man$TCL_MAN_SEPARATOR$section" set destCatDir "$TCL_MAN_BASEDIR/cat$TCL_MAN_SEPARATOR$section" CopyManPage $sourceFile "$destManDir/$manFileName" unlink -nocomplain "$destCatDir/$manFileName" if {![lempty $indexFileHdl]} { foreach name $manNames { puts $indexFileHdl "$name\t$manFileBase\t$section" } } } #------------------------------------------------------------------------------ # InstallLongMan -- # Install a manual page on a system that does have long file names. # # Parameters: # o sourceFile - Manual page source file path. # o section - Section to install the manual page in. # Globals: # o TCL_MAN_BASEDIR - Base manual directory where all of the man.* and cat.* # directories live. # o TCL_MAN_SEPARATOR - The name separator between the directory and the # section. #------------------------------------------------------------------------------ proc InstallLongMan {sourceFile section} { global TCL_MAN_BASEDIR TCL_MAN_SEPARATOR set manNames [GetManNames $sourceFile] if [lempty $manNames] { set baseName [file tail [file root $sourceFile]] puts stderr "Warning: can't parse NAME line for man page: $sourceFile." puts stderr " Manual page only available as: $baseName" set manNames $baseName } set destManDir "$TCL_MAN_BASEDIR/man$TCL_MAN_SEPARATOR$section" set destCatDir "$TCL_MAN_BASEDIR/cat$TCL_MAN_SEPARATOR$section" # Copy file to the first name in the list. set firstFile [lvarpop manNames] set firstFilePath "$destManDir/$firstFile.$section" CopyManPage $sourceFile $firstFilePath unlink -nocomplain "$destCatDir/$firstFile.$section" # Link it to the rest of the names in the list. foreach manEntry $manNames { set destFilePath "$destManDir/$manEntry.$section" unlink -nocomplain $destFilePath if {[catch { link $firstFilePath $destFilePath } msg] != 0} { puts stderr "error from: link $firstFilePath $destFilePath" puts stderr " $msg" } unlink -nocomplain "$destCatDir/$manEntry.$section" } } #------------------------------------------------------------------------------ # InstallManPage -- # Install a manual page on a system. # # Parameters: # o sourceFile - Manual page source file path. # o section - Section to install the manual page in. # o indexFileHdl - File handle of the current index file being created, or # empty if no index is to be created. # Globals # o TCL_MAN_STYLE - SHORT if short manual page names are being used, # LONG if long manual pages are being used. #------------------------------------------------------------------------------ proc InstallManPage {sourceFile section indexFileHdl} { global TCL_MAN_STYLE if {"$TCL_MAN_STYLE" == "SHORT"} { InstallShortMan $sourceFile $section $indexFileHdl } else { InstallLongMan $sourceFile $section } } #------------------------------------------------------------------------------ # InstallManPages -- # Install the manual pages. #------------------------------------------------------------------------------ proc InstallManPages {} { global TCL_UCB_DIR TCL_TK_SHELL TCL_TK_DIR global TCL_MAN_BASEDIR TCL_MAN_SEPARATOR TCL_MAN_STYLE global TCL_MAN_CMD_SECTION TCL_MAN_FUNC_SECTION global TK_MAN_CMD_SECTION TK_MAN_FUNC_SECTION if {![info exists TCL_MAN_STYLE]} { set TCL_MAN_STYLE LONG } set TCL_MAN_STYLE [string toupper $TCL_MAN_STYLE] case $TCL_MAN_STYLE in { {SHORT} {} {LONG} {} default {error "invalid value for TCL_MAN_STYLE: `$TCL_MAN_STYLE'"} } MakePath $TCL_MAN_BASEDIR MakePath "$TCL_MAN_BASEDIR/man$TCL_MAN_SEPARATOR$TCL_MAN_CMD_SECTION" MakePath "$TCL_MAN_BASEDIR/cat$TCL_MAN_SEPARATOR$TCL_MAN_CMD_SECTION" MakePath "$TCL_MAN_BASEDIR/man$TCL_MAN_SEPARATOR$TCL_MAN_FUNC_SECTION" MakePath "$TCL_MAN_BASEDIR/cat$TCL_MAN_SEPARATOR$TCL_MAN_FUNC_SECTION" set indexFileHdl [SetUpManIndex] # Install all of the actual files. echo " Installing Tcl [info tclversion] man files" foreach fileName [glob $TCL_UCB_DIR/doc/*.man] { if {[file root $fileName] == "Tcl.man"} { set section $TCL_MAN_CMD_SECTION } else { set section $TCL_MAN_FUNC_SECTION } InstallManPage $fileName $section $indexFileHdl } echo " Installing Extended Tcl [infox version] man files" foreach fileName [glob man/*.man] { if {[file root $fileName] == "TclX.man"} { set section $TCL_MAN_CMD_SECTION } else { set section $TCL_MAN_FUNC_SECTION } InstallManPage $fileName $section $indexFileHdl } if {![info exists TCL_TK_SHELL]} { FinishUpManIndex $indexFileHdl return } MakePath "$TCL_MAN_BASEDIR/man$TCL_MAN_SEPARATOR$TK_MAN_CMD_SECTION" MakePath "$TCL_MAN_BASEDIR/cat$TCL_MAN_SEPARATOR$TK_MAN_CMD_SECTION" MakePath "$TCL_MAN_BASEDIR/man$TCL_MAN_SEPARATOR$TK_MAN_FUNC_SECTION" MakePath "$TCL_MAN_BASEDIR/cat$TCL_MAN_SEPARATOR$TK_MAN_FUNC_SECTION" echo " Installing Tk man files" foreach fileName [glob $TCL_TK_DIR/doc/*.man] { if {![string match "Tk_*" [file root $fileName]]} { set section $TK_MAN_CMD_SECTION } else { set section $TK_MAN_FUNC_SECTION } InstallManPage $fileName $section $indexFileHdl } FinishUpManIndex $indexFileHdl } ;# InstallLongManPages #------------------------------------------------------------------------------ # Main program code. #------------------------------------------------------------------------------ echo "" echo ">>> Installing Extended Tcl [infox version] <<<" set argc [llength $argv] if {$argc != 0} { puts stderr "usage: tcl installTcl.tcl" exit 1 } # # Bring in all of the macros defined bu the configuration file. # ParseConfigFile Config.mk ParseConfigFile config/$TCL_CONFIG_FILE # # Make sure all directories exists that we will be installing in. # MakePath [list $TCL_TCLDIR [file dirname $TCL_DEFAULT] $TCL_BINDIR] MakePath [list $TCL_LIBDIR $TCL_INCLUDEDIR $TCL_TCLDIR] echo " Creating default file: $TCL_DEFAULT[infox version]" GenDefaultFile $TCL_DEFAULT $TCL_TCLDIR echo " Installing `tcl' program in: $TCL_BINDIR" CopyFile tcl $TCL_BINDIR chmod +rx $TCL_BINDIR/tcl echo " Installing `libtcl.a' library in: $TCL_LIBDIR" CopyFile libtcl.a $TCL_LIBDIR echo " Installing Tcl .h files in: $TCL_INCLUDEDIR" CopyFile $TCL_UCB_DIR/tcl.h $TCL_INCLUDEDIR CopyFile $TCL_UCB_DIR/tclHash.h $TCL_INCLUDEDIR CopyFile src/tclExtend.h $TCL_INCLUDEDIR CopyFile src/tcl++.h $TCL_INCLUDEDIR echo " Installing Tcl run-time files in: $TCL_TCLDIR" foreach srcFile [glob tcllib/*] { if {![file isdirectory $srcFile]} { CopyFile $srcFile $TCL_TCLDIR } } echo " Installing Tcl help files in: $TCL_TCLDIR/help" if [file exists $TCL_TCLDIR/help] { echo " Purging old help tree" exec rm -rf $TCL_TCLDIR/help } CopyDir tcllib/help $TCL_TCLDIR/help if [info exists TCL_TK_SHELL] { echo " Installing `wish' program in: $TCL_BINDIR" CopyFile wish $TCL_BINDIR chmod +rx $TCL_BINDIR/wish echo " Installing `libtk.a' library in: $TCL_LIBDIR" CopyFile libtk.a $TCL_LIBDIR echo " Installing `tk.h' in: $TCL_INCLUDEDIR" CopyFile $TCL_TK_DIR/tk.h $TCL_INCLUDEDIR } foreach file [glob $TCL_TCLDIR/*.tlib] { buildpackageindex $file } if {$TCL_MAN_INSTALL} { InstallManPages } echo " *** TCL IS NOW INSTALLED ***" micropolis-activity/src/tclx/tclsrc/assign.tcl0000664000076400007640000000175710724145723022070 0ustar simcitysimcity# # asgnfields.tcl -- # # Procedure to assign list fields to variables. #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: asgnfields.tcl,v 2.0 1992/10/16 04:51:55 markd Rel $ #------------------------------------------------------------------------------ # #@package: TclX-assign_fields assign_fields proc assign_fields {list args} { foreach varName $args { set value [lvarpop list] uplevel "set $varName [list $value]" } } micropolis-activity/src/tclx/tclsrc/showproc.tcl0000664000076400007640000000266310724145723022445 0ustar simcitysimcity# # showprocs.tcl -- # # Display procedure headers and bodies. #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: showprocs.tcl,v 2.0 1992/10/16 04:52:11 markd Rel $ #------------------------------------------------------------------------------ # #@package: TclX-show_procedures showproc showprocs proc showproc {procname} { if [lempty [info procs $procname]] {demand_load $procname} set arglist [info args $procname] set nargs {} while {[llength $arglist] > 0} { set varg [lvarpop arglist 0] if [info default $procname $varg defarg] { lappend nargs [list $varg $defarg] } else { lappend nargs $varg } } format "proc %s \{%s\} \{%s\}\n" $procname $nargs [info body $procname] } proc showprocs {args} { if [lempty $args] { set args [info procs] } set out "" foreach i $args { foreach j $i { append out [showproc $j] "\n"} } return $out } micropolis-activity/src/tclx/tclsrc/array.tcl0000664000076400007640000000235110724145723021711 0ustar simcitysimcity# # arrayprocs.tcl -- # # Extended Tcl array procedures. # #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: arrayprocs.tcl,v 2.0 1992/10/16 04:51:54 markd Rel $ #------------------------------------------------------------------------------ # #@package: TclX-ArrayProcedures for_array_keys proc for_array_keys {varName arrayName codeFragment} { upvar $varName enumVar $arrayName enumArray if ![info exists enumArray] { error "\"$arrayName\" isn't an array" } set searchId [array startsearch enumArray] while {[array anymore enumArray $searchId]} { set enumVar [array nextelement enumArray $searchId] uplevel $codeFragment } array donesearch enumArray $searchId } micropolis-activity/src/tclx/tclsrc/pushd.tcl0000664000076400007640000000261410724145723021720 0ustar simcitysimcity# # pushd.tcl -- # # C-shell style directory stack procs. # #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: pushd.tcl,v 2.0 1992/10/16 04:52:06 markd Rel $ #------------------------------------------------------------------------------ # #@package: TclX-directory_stack pushd popd dirs global TCLENV(dirPushList) set TCLENV(dirPushList) "" proc pushd {args} { global TCLENV if {[llength $args] > 1} { error "bad # args: pushd [dir_to_cd_to]" } set TCLENV(dirPushList) [linsert $TCLENV(dirPushList) 0 [pwd]] if {[llength $args] != 0} { cd [glob $args] } } proc popd {} { global TCLENV if [llength $TCLENV(dirPushList)] { cd [lvarpop TCLENV(dirPushList)] pwd } else { error "directory stack empty" } } proc dirs {} { global TCLENV echo [pwd] $TCLENV(dirPushList) } micropolis-activity/src/tclx/tclsrc/packages.tcl0000664000076400007640000000345110724145723022353 0ustar simcitysimcity# # packages.tcl -- # # Command to retrieve a list of packages or information about the packages. #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: packages.tcl,v 2.0 1992/10/16 04:52:02 markd Rel $ #------------------------------------------------------------------------------ # #@package: TclX-packages packages autoprocs proc packages {{option {}}} { global TCLENV set packList {} foreach key [array names TCLENV] { if {[string match "PKG:*" $key]} { lappend packList [string range $key 4 end] } } if [lempty $option] { return $packList } else { if {$option != "-location"} { error "Unknow option \"$option\", expected \"-location\"" } set locList {} foreach pack $packList { set fileId [lindex $TCLENV(PKG:$pack) 0] lappend locList [list $pack [concat $TCLENV($fileId) \ [lrange $TCLENV(PKG:$pack) 1 2]]] } return $locList } } proc autoprocs {} { global TCLENV set procList {} foreach key [array names TCLENV] { if {[string match "PROC:*" $key]} { lappend procList [string range $key 5 end] } } return $procList } micropolis-activity/src/tclx/tclsrc/edprocs.tcl0000664000076400007640000000325610724145723022237 0ustar simcitysimcity# # edprocs.tcl -- # # Tools for Tcl developers. Procedures to save procs to a file and to edit # a proc in memory. #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: edprocs.tcl,v 2.0 1992/10/16 04:51:57 markd Rel $ #------------------------------------------------------------------------------ # #@package: TclX-developer_utils saveprocs edprocs proc saveprocs {fileName args} { set fp [open $fileName w] puts $fp "# tcl procs saved on [fmtclock [getclock]]\n" puts $fp [eval "showprocs $args"] close $fp } proc edprocs {args} { global env set tmpFilename /tmp/tcldev.[id process] set fp [open $tmpFilename w] puts $fp "\n# TEMP EDIT BUFFER -- YOUR CHANGES ARE FOR THIS SESSION ONLY\n" puts $fp [eval "showprocs $args"] close $fp if [info exists env(EDITOR)] { set editor $env(EDITOR) } else { set editor vi } set startMtime [file mtime $tmpFilename] system "$editor $tmpFilename" if {[file mtime $tmpFilename] != $startMtime} { source $tmpFilename echo "Procedures were reloaded." } else { echo "No changes were made." } unlink $tmpFilename return } micropolis-activity/src/tclx/tclsrc/strfile.tcl0000664000076400007640000000235510724145723022247 0ustar simcitysimcity# # string_file -- # # Functions to read and write strings from a file that has not been opened. #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: stringfile.tcl,v 2.0 1992/10/16 04:52:13 markd Rel $ #------------------------------------------------------------------------------ # #@package: TclX-stringfile_functions read_file write_file proc read_file {fileName {numBytes {}}} { set fp [open $fileName] if {$numBytes != ""} { set result [read $fp $numBytes] } else { set result [read $fp] } close $fp return $result } proc write_file {fileName args} { set fp [open $fileName w] foreach string $args { puts $fp $string } close $fp } micropolis-activity/src/tclx/tclsrc/profrep.tcl0000664000076400007640000001176410724145723022260 0ustar simcitysimcity# # profrep -- # # Generate Tcl profiling reports. #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: profrep.tcl,v 2.0 1992/10/16 04:52:05 markd Rel $ #------------------------------------------------------------------------------ # #@package: TclX-profrep profrep # # Summarize the data from the profile command to the specified significant # stack depth. Returns the maximum number of characters of any significant # stack. (useful in columnizing reports). # proc profrep:summarize {profDataVar stackDepth sumProfDataVar} { upvar $profDataVar profData $sumProfDataVar sumProfData if {(![info exists profData]) || ([catch {array size profData}] != 0)} { error "`profDataVar' must be the name of an array returned by the `profile off' command" } set maxNameLen 0 foreach procStack [array names profData] { if {[llength $procStack] < $stackDepth} { set sigProcStack $procStack } else { set sigProcStack [lrange $procStack 0 [expr {$stackDepth - 1}]] } set maxNameLen [max $maxNameLen [clength $sigProcStack]] if [info exists sumProfData($sigProcStack)] { set cur $sumProfData($sigProcStack) set add $profData($procStack) set new [expr [lindex $cur 0]+[lindex $add 0]] lappend new [expr [lindex $cur 1]+[lindex $add 1]] lappend new [expr [lindex $cur 2]+[lindex $add 2]] set $sumProfData($sigProcStack) $new } else { set sumProfData($sigProcStack) $profData($procStack) } } return $maxNameLen } # # Generate a list, sorted in descending order by the specified key, contain # the indices into the summarized data. # proc profrep:sort {sumProfDataVar sortKey} { upvar $sumProfDataVar sumProfData case $sortKey { {calls} {set keyIndex 0} {real} {set keyIndex 1} {cpu} {set keyIndex 2} default { error "Expected a sort of: `calls', `cpu' or ` real'"} } # Build a list to sort cosisting of a fix-length string containing the # key value and proc stack. Then sort it. foreach procStack [array names sumProfData] { set key [format "%016d" [lindex $sumProfData($procStack) $keyIndex]] lappend keyProcList [list $key $procStack] } set keyProcList [lsort $keyProcList] # Convert the assending sorted list into a descending list of proc stacks. for {set idx [expr [llength $keyProcList]-1]} {$idx >= 0} {incr idx -1} { lappend sortedProcList [lindex [lindex $keyProcList $idx] 1] } return $sortedProcList } # # Print the sorted report # proc profrep:print {sumProfDataVar sortedProcList maxNameLen outFile userTitle} { upvar $sumProfDataVar sumProfData if {$outFile == ""} { set outFH stdout } else { set outFH [open $outFile w] } # Output a header. set stackTitle "Procedure Call Stack" set maxNameLen [max $maxNameLen [clength $stackTitle]] set hdr [format "%-${maxNameLen}s %10s %10s %10s" $stackTitle \ "Calls" "Real Time" "CPU Time"] if {$userTitle != ""} { puts $outFH [replicate - [clength $hdr]] puts $outFH $userTitle } puts $outFH [replicate - [clength $hdr]] puts $outFH $hdr puts $outFH [replicate - [clength $hdr]] # Output the data in sorted order. foreach procStack $sortedProcList { set data $sumProfData($procStack) puts $outFH [format "%-${maxNameLen}s %10d %10d %10d" $procStack \ [lindex $data 0] [lindex $data 1] [lindex $data 2]] } if {$outFile != ""} { close $outFH } } #------------------------------------------------------------------------------ # Generate a report from data collect from the profile command. # o profDataVar (I) - The name of the array containing the data from profile. # o sortKey (I) - Value to sort by. One of "calls", "cpu" or "real". # o stackDepth (I) - The stack depth to consider significant. # o outFile (I) - Name of file to write the report to. If omitted, stdout # is assumed. # o userTitle (I) - Title line to add to output. proc profrep {profDataVar sortKey stackDepth {outFile {}} {userTitle {}}} { upvar $profDataVar profData set maxNameLen [profrep:summarize profData $stackDepth sumProfData] set sortedProcList [profrep:sort sumProfData $sortKey] profrep:print sumProfData $sortedProcList $maxNameLen $outFile $userTitle } micropolis-activity/src/tclx/tclsrc/setfuncs.tcl0000664000076400007640000000671210724145723022432 0ustar simcitysimcity# # setfuncs -- # # Perform set functions on lists. Also has a procedure for removing duplicate # list entries. #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: setfuncs.tcl,v 2.0 1992/10/16 04:52:10 markd Rel $ #------------------------------------------------------------------------------ # #@package: TclX-set_functions union intersect intersect3 lrmdups # # return the logical union of two lists, removing any duplicates # proc union {lista listb} { set full_list [lsort [concat $lista $listb]] set check_element [lindex $full_list 0] set outlist $check_element foreach element [lrange $full_list 1 end] { if {$check_element == $element} continue lappend outlist $element set check_element $element } return $outlist } # # sort a list, returning the sorted version minus any duplicates # proc lrmdups {list} { set list [lsort $list] set result [lvarpop list] lappend last $result foreach element $list { if {$last != $element} { lappend result $element set last $element } } return $result } # # intersect3 - perform the intersecting of two lists, returning a list # containing three lists. The first list is everything in the first # list that wasn't in the second, the second list contains the intersection # of the two lists, the third list contains everything in the second list # that wasn't in the first. # proc intersect3 {list1 list2} { set list1Result "" set list2Result "" set intersectList "" set list1 [lrmdups $list1] set list2 [lrmdups $list2] while {1} { if [lempty $list1] { if ![lempty $list2] { set list2Result [concat $list2Result $list2] } break } if [lempty $list2] { set list1Result [concat $list1Result $list1] break } set compareResult [string compare [lindex $list1 0] [lindex $list2 0]] if {$compareResult < 0} { lappend list1Result [lvarpop list1] continue } if {$compareResult > 0} { lappend list2Result [lvarpop list2] continue } lappend intersectList [lvarpop list1] lvarpop list2 } return [list $list1Result $intersectList $list2Result] } # # intersect - perform an intersection of two lists, returning a list # containing every element that was present in both lists # proc intersect {list1 list2} { set intersectList "" set list1 [lsort $list1] set list2 [lsort $list2] while {1} { if {[lempty $list1] || [lempty $list2]} break set compareResult [string compare [lindex $list1 0] [lindex $list2 0]] if {$compareResult < 0} { lvarpop list1 continue } if {$compareResult > 0} { lvarpop list2 continue } lappend intersectList [lvarpop list1] lvarpop list2 } return $intersectList } micropolis-activity/src/tclx/tksrc/0000775000076400007640000000000010735230433017715 5ustar simcitysimcitymicropolis-activity/src/tclx/tksrc/makefile0000664000076400007640000000273510724145723021431 0ustar simcitysimcity# # Makefile -- # # Makefile for to build Extended wish. # #------------------------------------------------------------------------------ # Copyright 1992 Karl Lehenbauer and Mark Diekhans. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, provided # that the above copyright notice appear in all copies. Karl Lehenbauer and # Mark Diekhans make no representations about the suitability of this # software for any purpose. It is provided "as is" without express or # implied warranty. #------------------------------------------------------------------------------ # $Id: Makefile,v 2.0 1992/10/16 04:54:30 markd Rel $ #------------------------------------------------------------------------------ # include ../config.mk include ../config/$(TCL_CONFIG_FILE) SHELL=/bin/sh #------------------------------------------------------------------------------ CFLAGS= $(OPTIMIZE_FLAG) $(XCFLAGS) -I$(TCL_UCB_DIR) $(MEM_DEBUG_FLAGS) #------------------------------------------------------------------------------ all: ../wish ../wish: ../libtk.a ../libtcl.a $(RANLIB_CMD) ../libtk.a $(CC) $(CFLAGS) ../tkucbsrc/main.o ../libtk.a ../libtcl.a \ $(XLDFLAGS) $(XPM_LIBS) $(TCL_TK_LIBS) -o ../wish if $(DO_STRIPPING) ; then \ strip ../wish; \ $(MCS_CMD) ../wish; fi #------------------------------------------------------------------------------ clean: touch junk~ -rm -f *~ ../wish micropolis-activity/src/makefile0000664000076400007640000001225310724145723017325 0ustar simcitysimcity# Makefile for Micropolis # # Micropolis, Unix Version. This game was released for the Unix platform # in or about 1990 and has been modified for inclusion in the One Laptop # Per Child program. Copyright (C) 1989 - 2007 Electronic Arts Inc. If # you need assistance with this program, you may contact: # http://wiki.laptop.org/go/Micropolis or email micropolis@laptop.org. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or (at # your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. You should have received a # copy of the GNU General Public License along with this program. If # not, see . # # ADDITIONAL TERMS per GNU GPL Section 7 # # No trademark or publicity rights are granted. This license does NOT # give you any right, title or interest in the trademark SimCity or any # other Electronic Arts trademark. You may not distribute any # modification of this program using the trademark SimCity or claim any # affliation or association with Electronic Arts Inc. or its employees. # # Any propagation or conveyance of this program must include this # copyright notice and these terms. # # If you convey this program (or any modifications of it) and assume # contractual liability for the program to recipients of it, you agree # to indemnify Electronic Arts for any liability that those contractual # assumptions impose on Electronic Arts. # # You may not misrepresent the origins of this program; modified # versions of the program must be marked as such and not identified as # the original program. # # This disclaimer supplements the one included in the General Public # License. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, THIS # PROGRAM IS PROVIDED TO YOU "AS IS," WITH ALL FAULTS, WITHOUT WARRANTY # OF ANY KIND, AND YOUR USE IS AT YOUR SOLE RISK. THE ENTIRE RISK OF # SATISFACTORY QUALITY AND PERFORMANCE RESIDES WITH YOU. ELECTRONIC ARTS # DISCLAIMS ANY AND ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES, # INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, # FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY # RIGHTS, AND WARRANTIES (IF ANY) ARISING FROM A COURSE OF DEALING, # USAGE, OR TRADE PRACTICE. ELECTRONIC ARTS DOES NOT WARRANT AGAINST # INTERFERENCE WITH YOUR ENJOYMENT OF THE PROGRAM; THAT THE PROGRAM WILL # MEET YOUR REQUIREMENTS; THAT OPERATION OF THE PROGRAM WILL BE # UNINTERRUPTED OR ERROR-FREE, OR THAT THE PROGRAM WILL BE COMPATIBLE # WITH THIRD PARTY SOFTWARE OR THAT ANY ERRORS IN THE PROGRAM WILL BE # CORRECTED. NO ORAL OR WRITTEN ADVICE PROVIDED BY ELECTRONIC ARTS OR # ANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME # JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED # WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A # CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY # NOT APPLY TO YOU. RES = ../res TARFILES = \ micropolis-activity/Micropolis \ micropolis-activity/README \ micropolis-activity/COPYING \ micropolis-activity/cities \ micropolis-activity/images \ micropolis-activity/res \ micropolis-activity/manual \ micropolis-activity/activity \ micropolis-activity/__init__.py \ micropolis-activity/micropolisactivity.py \ micropolis-activity/Micropolis.png all: cd tcl ; make all cd tk ; make all cd tclx ; make all cd sim ; make all clean: rm -f Micropolis.tgz (cd $(RES) ; touch junk~ ; rm -f sim *~) (cd .. ; touch junk~ ; rm -f *~) touch junk~ ; rm -f *~ rm -rf BUILDIT cd tcl ; make clean cd tk ; make clean cd tclx ; make clean cd sim ; make clean install: all (cd $(RES) ; rm -f sim) cp sim/sim $(RES)/sim ; strip $(RES)/sim tar: touch $(RES)/junk~ ../images/junk~ rm -f ../../micropolis-activity.tgz $(RES)/*~ ../images/*~ (cd ../.. ; tar cfvz micropolis-activity.tgz $(TARFILES)) xo: install touch $(RES)/junk~ ../images/junk~ rm -f ../../micropolis.xo $(RES)/*~ ../images/*~ rm -rf BUILDIT mkdir BUILDIT tar cf - -C ../.. $(TARFILES) | (cd BUILDIT; tar xf -) # The DejaVu fonts are not needed on the XO, only other platforms. rm -rf BUILDIT/micropolis-activity/res/dejavu-lgc mv BUILDIT/micropolis-activity BUILDIT/micropolis.activity (cd BUILDIT; zip -r ../../../micropolis.xo micropolis.activity) rm -rf BUILDIT # # To cut a release: # Edit activity/activity.info and increment the version number. # In what follows, replace "3" with the latest version number # vi activity/activity.info # git commit activity/activity.info # Now make the source tar file: # git-archive --format=tar --prefix=micropolis-activity-3/ HEAD >../micropolis-activity-3-src.tar # gzip -9 ../micropolis-activity-3-src.tar # chmod a-w ../micropolis-activity-3-src.tar.gz # Now make the binary: # (cd src; make xo) # mv ../micropolis.xo ../micropolis-3.xo # chmod a-w ../micropolis-3.xo # You're done. Publish them. # micropolis-activity/src/tk/0000775000076400007640000000000010735230432016232 5ustar simcitysimcitymicropolis-activity/src/tk/tkcvbmap.c0000664000076400007640000004341010724145723020215 0ustar simcitysimcity/* * tkCanvBmap.c -- * * This file implements bitmap items for canvas widgets. * * Copyright 1992 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkCanvBmap.c,v 1.4 92/08/24 09:24:11 ouster Exp $ SPRITE (Berkeley)"; #endif #include #include #include "tkint.h" #include "tkcanvas.h" /* * The structure below defines the record for each rectangle/oval item. */ typedef struct BitmapItem { Tk_Item header; /* Generic stuff that's the same for all * types. MUST BE FIRST IN STRUCTURE. */ double x, y; /* Coordinates of positioning point for * bitmap. */ Tk_Anchor anchor; /* Where to anchor bitmap relative to * (x,y). */ Pixmap bitmap; /* Bitmap to display in window. */ XColor *fgColor; /* Foreground color to use for bitmap. */ XColor *bgColor; /* Background color to use for bitmap. */ GC gc; /* Graphics context to use for drawing * bitmap on screen. */ } BitmapItem; /* * Information used for parsing configuration specs: */ static Tk_ConfigSpec configSpecs[] = { {TK_CONFIG_ANCHOR, "-anchor", (char *) NULL, (char *) NULL, "center", Tk_Offset(BitmapItem, anchor), TK_CONFIG_DONT_SET_DEFAULT}, {TK_CONFIG_COLOR, "-background", (char *) NULL, (char *) NULL, (char *) NULL, Tk_Offset(BitmapItem, bgColor), TK_CONFIG_NULL_OK}, #if defined(USE_XPM3) {TK_CONFIG_PIXMAP, "-bitmap", (char *) NULL, (char *) NULL, (char *) NULL, Tk_Offset(BitmapItem, bitmap), TK_CONFIG_NULL_OK}, #else {TK_CONFIG_BITMAP, "-bitmap", (char *) NULL, (char *) NULL, (char *) NULL, Tk_Offset(BitmapItem, bitmap), TK_CONFIG_NULL_OK}, #endif {TK_CONFIG_COLOR, "-foreground", (char *) NULL, (char *) NULL, "black", Tk_Offset(BitmapItem, fgColor), 0}, {TK_CONFIG_CUSTOM, "-tags", (char *) NULL, (char *) NULL, (char *) NULL, 0, TK_CONFIG_NULL_OK, &tkCanvasTagsOption}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; /* * Prototypes for procedures defined in this file: */ static int BitmapCoords _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, int argc, char **argv)); static int BitmapToArea _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double *rectPtr)); static double BitmapToPoint _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double *coordPtr)); static void ComputeBitmapBbox _ANSI_ARGS_((Tk_Canvas *canvasPtr, BitmapItem *bmapPtr)); static int ConfigureBitmap _ANSI_ARGS_(( Tk_Canvas *canvasPtr, Tk_Item *itemPtr, int argc, char **argv, int flags)); static int CreateBitmap _ANSI_ARGS_((Tk_Canvas *canvasPtr, struct Tk_Item *itemPtr, int argc, char **argv)); static void DeleteBitmap _ANSI_ARGS_((Tk_Item *itemPtr)); static void DisplayBitmap _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, Drawable dst)); static void ScaleBitmap _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double originX, double originY, double scaleX, double scaleY)); static void TranslateBitmap _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double deltaX, double deltaY)); /* * The structures below defines the rectangle and oval item types * by means of procedures that can be invoked by generic item code. */ Tk_ItemType TkBitmapType = { "bitmap", /* name */ sizeof(BitmapItem), /* itemSize */ CreateBitmap, /* createProc */ configSpecs, /* configSpecs */ ConfigureBitmap, /* configureProc */ BitmapCoords, /* coordProc */ DeleteBitmap, /* deleteProc */ DisplayBitmap, /* displayProc */ 0, /* alwaysRedraw */ BitmapToPoint, /* pointProc */ BitmapToArea, /* areaProc */ (Tk_ItemPostscriptProc *) NULL, /* postscriptProc */ ScaleBitmap, /* scaleProc */ TranslateBitmap, /* translateProc */ (Tk_ItemIndexProc *) NULL, /* indexProc */ (Tk_ItemCursorProc *) NULL, /* cursorProc */ (Tk_ItemSelectionProc *) NULL, /* selectionProc */ (Tk_ItemInsertProc *) NULL, /* insertProc */ (Tk_ItemDCharsProc *) NULL, /* dTextProc */ (Tk_ItemType *) NULL /* nextPtr */ }; /* *-------------------------------------------------------------- * * CreateBitmap -- * * This procedure is invoked to create a new bitmap * item in a canvas. * * Results: * A standard Tcl return value. If an error occurred in * creating the item, then an error message is left in * canvasPtr->interp->result; in this case itemPtr is * left uninitialized, so it can be safely freed by the * caller. * * Side effects: * A new bitmap item is created. * *-------------------------------------------------------------- */ static int CreateBitmap(canvasPtr, itemPtr, argc, argv) register Tk_Canvas *canvasPtr; /* Canvas to hold new item. */ Tk_Item *itemPtr; /* Record to hold new item; header * has been initialized by caller. */ int argc; /* Number of arguments in argv. */ char **argv; /* Arguments describing rectangle. */ { register BitmapItem *bmapPtr = (BitmapItem *) itemPtr; if (argc < 2) { Tcl_AppendResult(canvasPtr->interp, "wrong # args: should be \"", Tk_PathName(canvasPtr->tkwin), "\" create ", itemPtr->typePtr->name, " x y ?options?", (char *) NULL); return TCL_ERROR; } /* * Initialize item's record. */ bmapPtr->anchor = TK_ANCHOR_CENTER; bmapPtr->bitmap = None; bmapPtr->fgColor = NULL; bmapPtr->bgColor = NULL; bmapPtr->gc = None; /* * Process the arguments to fill in the item record. */ if ((TkGetCanvasCoord(canvasPtr, argv[0], &bmapPtr->x) != TCL_OK) || (TkGetCanvasCoord(canvasPtr, argv[1], &bmapPtr->y) != TCL_OK)) { return TCL_ERROR; } if (ConfigureBitmap(canvasPtr, itemPtr, argc-2, argv+2, 0) != TCL_OK) { DeleteBitmap(itemPtr); return TCL_ERROR; } return TCL_OK; } /* *-------------------------------------------------------------- * * BitmapCoords -- * * This procedure is invoked to process the "coords" widget * command on bitmap items. See the user documentation for * details on what it does. * * Results: * Returns TCL_OK or TCL_ERROR, and sets canvasPtr->interp->result. * * Side effects: * The coordinates for the given item may be changed. * *-------------------------------------------------------------- */ static int BitmapCoords(canvasPtr, itemPtr, argc, argv) register Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item whose coordinates are to be * read or modified. */ int argc; /* Number of coordinates supplied in * argv. */ char **argv; /* Array of coordinates: x1, y1, * x2, y2, ... */ { register BitmapItem *bmapPtr = (BitmapItem *) itemPtr; if (argc == 0) { sprintf(canvasPtr->interp->result, "%g %g", bmapPtr->x, bmapPtr->y); } else if (argc == 2) { if ((TkGetCanvasCoord(canvasPtr, argv[0], &bmapPtr->x) != TCL_OK) || (TkGetCanvasCoord(canvasPtr, argv[1], &bmapPtr->y) != TCL_OK)) { return TCL_ERROR; } ComputeBitmapBbox(canvasPtr, bmapPtr); } else { sprintf(canvasPtr->interp->result, "wrong # coordinates: expected 0 or 2, got %d", argc); return TCL_ERROR; } return TCL_OK; } /* *-------------------------------------------------------------- * * ConfigureBitmap -- * * This procedure is invoked to configure various aspects * of a bitmap item, such as its anchor position. * * Results: * A standard Tcl result code. If an error occurs, then * an error message is left in canvasPtr->interp->result. * * Side effects: * Configuration information may be set for itemPtr. * *-------------------------------------------------------------- */ static int ConfigureBitmap(canvasPtr, itemPtr, argc, argv, flags) Tk_Canvas *canvasPtr; /* Canvas containing itemPtr. */ Tk_Item *itemPtr; /* Bitmap item to reconfigure. */ int argc; /* Number of elements in argv. */ char **argv; /* Arguments describing things to configure. */ int flags; /* Flags to pass to Tk_ConfigureWidget. */ { register BitmapItem *bmapPtr = (BitmapItem *) itemPtr; XGCValues gcValues; GC newGC; if (Tk_ConfigureWidget(canvasPtr->interp, canvasPtr->tkwin, configSpecs, argc, argv, (char *) bmapPtr, flags) != TCL_OK) { return TCL_ERROR; } /* * A few of the options require additional processing, such as those * that determine the graphics context. */ gcValues.foreground = bmapPtr->fgColor->pixel; if (bmapPtr->bgColor != NULL) { gcValues.background = bmapPtr->bgColor->pixel; } else { gcValues.background = canvasPtr->bgColor->pixel; } newGC = Tk_GetGC(canvasPtr->tkwin, GCForeground|GCBackground, &gcValues); if (bmapPtr->gc != None) { Tk_FreeGC(bmapPtr->gc); } bmapPtr->gc = newGC; ComputeBitmapBbox(canvasPtr, bmapPtr); return TCL_OK; } /* *-------------------------------------------------------------- * * DeleteBitmap -- * * This procedure is called to clean up the data structure * associated with a bitmap item. * * Results: * None. * * Side effects: * Resources associated with itemPtr are released. * *-------------------------------------------------------------- */ static void DeleteBitmap(itemPtr) Tk_Item *itemPtr; /* Item that is being deleted. */ { register BitmapItem *bmapPtr = (BitmapItem *) itemPtr; if (bmapPtr->bitmap != None) { #if defined(USE_XPM3) Tk_FreePixmap(bmapPtr->bitmap); #else Tk_FreeBitmap(bmapPtr->bitmap); #endif } if (bmapPtr->fgColor != NULL) { Tk_FreeColor(bmapPtr->fgColor); } if (bmapPtr->bgColor != NULL) { Tk_FreeColor(bmapPtr->bgColor); } if (bmapPtr->gc != NULL) { Tk_FreeGC(bmapPtr->gc); } } /* *-------------------------------------------------------------- * * ComputeBitmapBbox -- * * This procedure is invoked to compute the bounding box of * all the pixels that may be drawn as part of a bitmap item. * This procedure is where the child bitmap's placement is * computed. * * Results: * None. * * Side effects: * The fields x1, y1, x2, and y2 are updated in the header * for itemPtr. * *-------------------------------------------------------------- */ /* ARGSUSED */ static void ComputeBitmapBbox(canvasPtr, bmapPtr) Tk_Canvas *canvasPtr; /* Canvas that contains item. */ register BitmapItem *bmapPtr; /* Item whose bbox is to be * recomputed. */ { unsigned int width, height; int x, y; x = bmapPtr->x + 0.5; y = bmapPtr->y + 0.5; if (bmapPtr->bitmap == None) { bmapPtr->header.x1 = bmapPtr->header.x2 = x; bmapPtr->header.y1 = bmapPtr->header.y2 = y; return; } /* * Compute location and size of bitmap, using anchor information. */ #if defined(USE_XPM3) Tk_SizeOfPixmap(bmapPtr->bitmap, &width, &height); #else Tk_SizeOfBitmap(bmapPtr->bitmap, &width, &height); #endif switch (bmapPtr->anchor) { case TK_ANCHOR_N: x -= width/2; break; case TK_ANCHOR_NE: x -= width; break; case TK_ANCHOR_E: x -= width; y -= height/2; break; case TK_ANCHOR_SE: x -= width; y -= height; break; case TK_ANCHOR_S: x -= width/2; y -= height; break; case TK_ANCHOR_SW: y -= height; break; case TK_ANCHOR_W: y -= height/2; break; case TK_ANCHOR_NW: break; case TK_ANCHOR_CENTER: x -= width/2; y -= height/2; break; } /* * Store the information in the item header. */ bmapPtr->header.x1 = x; bmapPtr->header.y1 = y; bmapPtr->header.x2 = x + width; bmapPtr->header.y2 = y + height; } /* *-------------------------------------------------------------- * * DisplayBitmap -- * * This procedure is invoked to draw a bitmap item in a given * drawable. * * Results: * None. * * Side effects: * ItemPtr is drawn in drawable using the transformation * information in canvasPtr. * *-------------------------------------------------------------- */ static void DisplayBitmap(canvasPtr, itemPtr, drawable) register Tk_Canvas *canvasPtr; /* Canvas that contains item. */ Tk_Item *itemPtr; /* Item to be displayed. */ Drawable drawable; /* Pixmap or window in which to draw * item. */ { register BitmapItem *bmapPtr = (BitmapItem *) itemPtr; if (bmapPtr->bitmap != None) { #if defined(USE_XPM3) XCopyArea(Tk_Display(canvasPtr->tkwin), bmapPtr->bitmap, drawable, bmapPtr->gc, 0, 0, (unsigned int) bmapPtr->header.x2 - bmapPtr->header.x1, (unsigned int) bmapPtr->header.y2 - bmapPtr->header.y1, bmapPtr->header.x1 - canvasPtr->drawableXOrigin, bmapPtr->header.y1 - canvasPtr->drawableYOrigin); #else XCopyPlane(Tk_Display(canvasPtr->tkwin), bmapPtr->bitmap, drawable, bmapPtr->gc, 0, 0, (unsigned int) bmapPtr->header.x2 - bmapPtr->header.x1, (unsigned int) bmapPtr->header.y2 - bmapPtr->header.y1, bmapPtr->header.x1 - canvasPtr->drawableXOrigin, bmapPtr->header.y1 - canvasPtr->drawableYOrigin, 1); #endif } } /* *-------------------------------------------------------------- * * BitmapToPoint -- * * Computes the distance from a given point to a given * rectangle, in canvas units. * * Results: * The return value is 0 if the point whose x and y coordinates * are coordPtr[0] and coordPtr[1] is inside the bitmap. If the * point isn't inside the bitmap then the return value is the * distance from the point to the bitmap. * * Side effects: * None. * *-------------------------------------------------------------- */ /* ARGSUSED */ static double BitmapToPoint(canvasPtr, itemPtr, coordPtr) Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item to check against point. */ double *coordPtr; /* Pointer to x and y coordinates. */ { register BitmapItem *bmapPtr = (BitmapItem *) itemPtr; double x1, x2, y1, y2, xDiff, yDiff; x1 = bmapPtr->header.x1; y1 = bmapPtr->header.y1; x2 = bmapPtr->header.x2; y2 = bmapPtr->header.y2; /* * Point is outside rectangle. */ if (coordPtr[0] < x1) { xDiff = x1 - coordPtr[0]; } else if (coordPtr[0] > x2) { xDiff = coordPtr[0] - x2; } else { xDiff = 0; } if (coordPtr[1] < y1) { yDiff = y1 - coordPtr[1]; } else if (coordPtr[1] > y2) { yDiff = coordPtr[1] - y2; } else { yDiff = 0; } return hypot(xDiff, yDiff); } /* *-------------------------------------------------------------- * * BitmapToArea -- * * This procedure is called to determine whether an item * lies entirely inside, entirely outside, or overlapping * a given rectangle. * * Results: * -1 is returned if the item is entirely outside the area * given by rectPtr, 0 if it overlaps, and 1 if it is entirely * inside the given area. * * Side effects: * None. * *-------------------------------------------------------------- */ /* ARGSUSED */ static int BitmapToArea(canvasPtr, itemPtr, rectPtr) Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item to check against rectangle. */ double *rectPtr; /* Pointer to array of four coordinates * (x1, y1, x2, y2) describing rectangular * area. */ { register BitmapItem *bmapPtr = (BitmapItem *) itemPtr; if ((rectPtr[2] <= bmapPtr->header.x1) || (rectPtr[0] >= bmapPtr->header.x2) || (rectPtr[3] <= bmapPtr->header.y1) || (rectPtr[1] >= bmapPtr->header.y2)) { return -1; } if ((rectPtr[0] <= bmapPtr->header.x1) && (rectPtr[1] <= bmapPtr->header.y1) && (rectPtr[2] >= bmapPtr->header.x2) && (rectPtr[3] >= bmapPtr->header.y2)) { return 1; } return 0; } /* *-------------------------------------------------------------- * * ScaleBitmap -- * * This procedure is invoked to rescale a rectangle or oval * item. * * Results: * None. * * Side effects: * The rectangle or oval referred to by itemPtr is rescaled * so that the following transformation is applied to all * point coordinates: * x' = originX + scaleX*(x-originX) * y' = originY + scaleY*(y-originY) * *-------------------------------------------------------------- */ static void ScaleBitmap(canvasPtr, itemPtr, originX, originY, scaleX, scaleY) Tk_Canvas *canvasPtr; /* Canvas containing rectangle. */ Tk_Item *itemPtr; /* Rectangle to be scaled. */ double originX, originY; /* Origin about which to scale rect. */ double scaleX; /* Amount to scale in X direction. */ double scaleY; /* Amount to scale in Y direction. */ { register BitmapItem *bmapPtr = (BitmapItem *) itemPtr; bmapPtr->x = originX + scaleX*(bmapPtr->x - originX); bmapPtr->y = originY + scaleY*(bmapPtr->y - originY); ComputeBitmapBbox(canvasPtr, bmapPtr); } /* *-------------------------------------------------------------- * * TranslateBitmap -- * * This procedure is called to move a rectangle or oval by a * given amount. * * Results: * None. * * Side effects: * The position of the rectangle or oval is offset by * (xDelta, yDelta), and the bounding box is updated in the * generic part of the item structure. * *-------------------------------------------------------------- */ static void TranslateBitmap(canvasPtr, itemPtr, deltaX, deltaY) Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item that is being moved. */ double deltaX, deltaY; /* Amount by which item is to be * moved. */ { register BitmapItem *bmapPtr = (BitmapItem *) itemPtr; bmapPtr->x += deltaX; bmapPtr->y += deltaY; ComputeBitmapBbox(canvasPtr, bmapPtr); } micropolis-activity/src/tk/tk3d.c0000664000076400007640000006710610724145723017263 0ustar simcitysimcity/* * tk3D.c -- * * This module provides procedures to draw borders in * the three-dimensional Motif style. * * Copyright 1990 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tk3d.c,v 1.30 92/06/15 14:28:18 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tkconfig.h" #include "tk.h" /* * One of the following data structures is allocated for * each 3-D border currently in use. Structures of this * type are indexed by borderTable, so that a single * structure can be shared for several uses. */ typedef struct { Display *display; /* Display for which the resources * below are allocated. */ int refCount; /* Number of different users of * this border. */ XColor *bgColorPtr; /* Background color (intensity * between lightColorPtr and * darkColorPtr). */ XColor *lightColorPtr; /* Color used for lighter areas of * border (must free this when * deleting structure). */ XColor *darkColorPtr; /* Color for darker areas (must * free when deleting structure). */ Pixmap shadow; /* Stipple pattern to use for drawing * lighter-shadow-ed areas. Only used on * monochrome displays; on color displays * this is None. */ GC lightGC; /* Used to draw lighter parts of * the border. */ GC darkGC; /* Used to draw darker parts of the * border. */ GC bgGC; /* Used (if necessary) to draw areas in * the background color. */ Tcl_HashEntry *hashPtr; /* Entry in borderTable (needed in * order to delete structure). */ } Border; /* * Hash table to map from a border's values (color, etc.) to a * Border structure for those values. */ static Tcl_HashTable borderTable; typedef struct { Tk_Uid colorName; /* Color for border. */ Colormap colormap; /* Colormap used for allocating border * colors. */ Screen *screen; /* Screen on which border will be drawn. */ } BorderKey; /* * Maximum intensity for a color: */ #define MAX_INTENSITY 65535 static int initialized = 0; /* 0 means static structures haven't * been initialized yet. */ /* * Forward declarations for procedures defined in this file: */ static void BorderInit _ANSI_ARGS_((void)); static int Intersect _ANSI_ARGS_((XPoint *a1Ptr, XPoint *a2Ptr, XPoint *b1Ptr, XPoint *b2Ptr, XPoint *iPtr)); static void ShiftLine _ANSI_ARGS_((XPoint *p1Ptr, XPoint *p2Ptr, int distance, XPoint *p3Ptr)); /* *-------------------------------------------------------------- * * Tk_Get3DBorder -- * * Create a data structure for displaying a 3-D border. * * Results: * The return value is a token for a data structure * describing a 3-D border. This token may be passed * to Tk_Draw3DRectangle and Tk_Free3DBorder. If an * error prevented the border from being created then * NULL is returned and an error message will be left * in interp->result. * * Side effects: * Data structures, graphics contexts, etc. are allocated. * It is the caller's responsibility to eventually call * Tk_Free3DBorder to release the resources. * *-------------------------------------------------------------- */ Tk_3DBorder Tk_Get3DBorder(interp, tkwin, colormap, colorName) Tcl_Interp *interp; /* Place to store an error message. */ Tk_Window tkwin; /* Token for window in which * border will be drawn. */ Colormap colormap; /* Colormap to use for allocating border * colors. None means use default colormap * for screen. */ Tk_Uid colorName; /* String giving name of color * for window background. */ { BorderKey key; Tcl_HashEntry *hashPtr; register Border *borderPtr; int new; unsigned long light, dark; XGCValues gcValues; unsigned long mask; if (!initialized) { BorderInit(); } /* * First, check to see if there's already a border that will work * for this request. */ key.colorName = colorName; if (colormap == None) { colormap = Tk_DefaultColormap(Tk_Screen(tkwin)); } key.colormap = colormap; key.screen = Tk_Screen(tkwin); hashPtr = Tcl_CreateHashEntry(&borderTable, (char *) &key, &new); if (!new) { borderPtr = (Border *) Tcl_GetHashValue(hashPtr); borderPtr->refCount++; } else { /* * No satisfactory border exists yet. Initialize a new one. */ borderPtr = (Border *) ckalloc(sizeof(Border)); borderPtr->display = Tk_Display(tkwin); borderPtr->refCount = 1; borderPtr->bgColorPtr = NULL; borderPtr->lightColorPtr = NULL; borderPtr->darkColorPtr = NULL; borderPtr->shadow = None; borderPtr->lightGC = None; borderPtr->darkGC = None; borderPtr->bgGC = None; borderPtr->hashPtr = hashPtr; Tcl_SetHashValue(hashPtr, borderPtr); /* * Figure out what colors and GC's to use for the light * and dark areas and set up the graphics contexts. * Monochrome displays get handled differently than * color displays. */ borderPtr->bgColorPtr = Tk_GetColor(interp, tkwin, key.colormap, colorName); if (borderPtr->bgColorPtr == NULL) { goto error; } if (Tk_DefaultDepth(Tk_Screen(tkwin)) == 1) { /* * Monochrome display. */ light = borderPtr->bgColorPtr->pixel; if (light == WhitePixelOfScreen(Tk_Screen(tkwin))) { dark = BlackPixelOfScreen(Tk_Screen(tkwin)); } else { dark = WhitePixelOfScreen(Tk_Screen(tkwin)); } borderPtr->shadow = Tk_GetBitmap(interp, tkwin, Tk_GetUid("gray50")); if (borderPtr->shadow == None) { goto error; } } else { XColor lightColor, darkColor; int tmp; /* * Color display. Compute the colors for the illuminated * and shaded portions of the border. */ tmp = (14*(int)borderPtr->bgColorPtr->red)/10; if (tmp > MAX_INTENSITY) { tmp = MAX_INTENSITY; } lightColor.red = tmp; tmp = (14*(int)borderPtr->bgColorPtr->green)/10; if (tmp > MAX_INTENSITY) { tmp = MAX_INTENSITY; } lightColor.green = tmp; tmp = (14*(int)borderPtr->bgColorPtr->blue)/10; if (tmp > MAX_INTENSITY) { tmp = MAX_INTENSITY; } lightColor.blue = tmp; darkColor.red = (60*(int)borderPtr->bgColorPtr->red)/100; darkColor.green = (60*(int)borderPtr->bgColorPtr->green)/100; darkColor.blue = (60*(int)borderPtr->bgColorPtr->blue)/100; borderPtr->lightColorPtr = Tk_GetColorByValue(interp, tkwin, key.colormap, &lightColor); if (borderPtr->lightColorPtr == NULL) { goto error; } borderPtr->darkColorPtr = Tk_GetColorByValue(interp, tkwin, key.colormap, &darkColor); if (borderPtr->darkColorPtr == NULL) { goto error; } light = borderPtr->lightColorPtr->pixel; dark = borderPtr->darkColorPtr->pixel; } gcValues.foreground = light; gcValues.background = dark; mask = GCForeground|GCBackground; if (borderPtr->shadow != None) { gcValues.stipple = borderPtr->shadow; gcValues.fill_style = FillOpaqueStippled; mask |= GCStipple|GCFillStyle; } borderPtr->lightGC = Tk_GetGC(tkwin, mask, &gcValues); gcValues.foreground = dark; gcValues.background = light; borderPtr->darkGC = Tk_GetGC(tkwin, GCForeground|GCBackground, &gcValues); gcValues.foreground = borderPtr->bgColorPtr->pixel; borderPtr->bgGC = Tk_GetGC(tkwin, GCForeground, &gcValues); } return (Tk_3DBorder) borderPtr; error: Tk_Free3DBorder((Tk_3DBorder) borderPtr); return NULL; } /* *-------------------------------------------------------------- * * Tk_Draw3DRectangle -- * * Draw a 3-D border at a given place in a given window. * * Results: * None. * * Side effects: * A 3-D border will be drawn in the indicated drawable. * The outside edges of the border will be determined by x, * y, width, and height. The inside edges of the border * will be determined by the borderWidth argument. * *-------------------------------------------------------------- */ void Tk_Draw3DRectangle(display, drawable, border, x, y, width, height, borderWidth, relief) Display *display; /* X display in which to draw. */ Drawable drawable; /* X window or pixmap in which to draw. */ Tk_3DBorder border; /* Token for border to draw. */ int x, y, width, height; /* Outside area of region in * which border will be drawn. */ int borderWidth; /* Desired width for border, in * pixels. */ int relief; /* Should be either TK_RELIEF_RAISED * or TK_RELIEF_SUNKEN; indicates * position of interior of window relative * to exterior. */ { register Border *borderPtr = (Border *) border; GC top, bottom; XPoint points[7]; if ((width < 2*borderWidth) || (height < 2*borderWidth)) { return; } if (relief == TK_RELIEF_RAISED) { top = borderPtr->lightGC; bottom = borderPtr->darkGC; } else if (relief == TK_RELIEF_SUNKEN) { top = borderPtr->darkGC; bottom = borderPtr->lightGC; } else { top = bottom = borderPtr->bgGC; } XFillRectangle(display, drawable, bottom, x, y+height-borderWidth, (unsigned int) width, (unsigned int) borderWidth); XFillRectangle(display, drawable, bottom, x+width-borderWidth, y, (unsigned int) borderWidth, (unsigned int) height); points[0].x = points[1].x = points[6].x = x; points[0].y = points[6].y = y + height; points[1].y = points[2].y = y; points[2].x = x + width; points[3].x = x + width - borderWidth; points[3].y = points[4].y = y + borderWidth; points[4].x = points[5].x = x + borderWidth; points[5].y = y + height - borderWidth; XFillPolygon(display, drawable, top, points, 7, Nonconvex, CoordModeOrigin); } /* *-------------------------------------------------------------- * * Tk_NameOf3DBorder -- * * Given a border, return a textual string identifying the * border's color. * * Results: * The return value is the string that was used to create * the border. * * Side effects: * None. * *-------------------------------------------------------------- */ char * Tk_NameOf3DBorder(border) Tk_3DBorder border; /* Token for border. */ { Border *borderPtr = (Border *) border; return ((BorderKey *) borderPtr->hashPtr->key.words)->colorName; } /* *-------------------------------------------------------------------- * * Tk_3DBorderColor -- * * Given a 3D border, return the X color used for the "flat" * surfaces. * * Results: * Returns the color used drawing flat surfaces with the border. * * Side effects: * None. * *-------------------------------------------------------------------- */ XColor * Tk_3DBorderColor(border) Tk_3DBorder border; { return(((Border *) border)->bgColorPtr); } /* *-------------------------------------------------------------- * * Tk_Free3DBorder -- * * This procedure is called when a 3D border is no longer * needed. It frees the resources associated with the * border. After this call, the caller should never again * use the "border" token. * * Results: * None. * * Side effects: * Resources are freed. * *-------------------------------------------------------------- */ void Tk_Free3DBorder(border) Tk_3DBorder border; /* Token for border to be released. */ { register Border *borderPtr = (Border *) border; borderPtr->refCount--; if (borderPtr->refCount == 0) { if (borderPtr->bgColorPtr != NULL) { Tk_FreeColor(borderPtr->bgColorPtr); } if (borderPtr->lightColorPtr != NULL) { Tk_FreeColor(borderPtr->lightColorPtr); } if (borderPtr->darkColorPtr != NULL) { Tk_FreeColor(borderPtr->darkColorPtr); } if (borderPtr->shadow != None) { Tk_FreeBitmap(borderPtr->shadow); } if (borderPtr->lightGC != None) { Tk_FreeGC(borderPtr->lightGC); } if (borderPtr->darkGC != None) { Tk_FreeGC(borderPtr->darkGC); } if (borderPtr->bgGC != None) { Tk_FreeGC(borderPtr->bgGC); } Tcl_DeleteHashEntry(borderPtr->hashPtr); ckfree((char *) borderPtr); } } /* *---------------------------------------------------------------------- * * Tk_SetBackgroundFromBorder -- * * Change the background of a window to one appropriate for a given * 3-D border. * * Results: * None. * * Side effects: * Tkwin's background gets modified. * *---------------------------------------------------------------------- */ void Tk_SetBackgroundFromBorder(tkwin, border) Tk_Window tkwin; /* Window whose background is to be set. */ Tk_3DBorder border; /* Token for border. */ { register Border *borderPtr = (Border *) border; Tk_SetWindowBackground(tkwin, borderPtr->bgColorPtr->pixel); } /* *---------------------------------------------------------------------- * * Tk_GetRelief -- * * Parse a relief description and return the corresponding * relief value, or an error. * * Results: * A standard Tcl return value. If all goes well then * *reliefPtr is filled in with one of the values * TK_RELIEF_RAISED, TK_RELIEF_FLAT, or TK_RELIEF_SUNKEN. * * Side effects: * None. * *---------------------------------------------------------------------- */ int Tk_GetRelief(interp, name, reliefPtr) Tcl_Interp *interp; /* For error messages. */ char *name; /* Name of a relief type. */ int *reliefPtr; /* Where to store converted relief. */ { char c; int length; c = name[0]; length = strlen(name); if ((c == 'f') && (strncmp(name, "flat", length) == 0)) { *reliefPtr = TK_RELIEF_FLAT; } else if ((c == 'r') && (strncmp(name, "raised", length) == 0)) { *reliefPtr = TK_RELIEF_RAISED; } else if ((c == 's') && (strncmp(name, "sunken", length) == 0)) { *reliefPtr = TK_RELIEF_SUNKEN; } else { sprintf(interp->result, "bad relief type \"%.50s\": must be %s", name, "flat, raised, or sunken"); return TCL_ERROR; } return TCL_OK; } /* *-------------------------------------------------------------- * * Tk_NameOfRelief -- * * Given a relief value, produce a string describing that * relief value. * * Results: * The return value is a static string that is equivalent * to relief. * * Side effects: * None. * *-------------------------------------------------------------- */ char * Tk_NameOfRelief(relief) int relief; /* One of TK_RELIEF_FLAT, TK_RELIEF_RAISED, * or TK_RELIEF_SUNKEN. */ { if (relief == TK_RELIEF_FLAT) { return "flat"; } else if (relief == TK_RELIEF_SUNKEN) { return "sunken"; } else if (relief == TK_RELIEF_RAISED) { return "raised"; } else { return "unknown relief"; } } /* *-------------------------------------------------------------- * * Tk_Draw3DPolygon -- * * Draw a border with 3-D appearance around the edge of a * given polygon. * * Results: * None. * * Side effects: * Information is drawn in "drawable" in the form of a * 3-D border borderWidth units width wide on the left * of the trajectory given by pointPtr and numPoints (or * -borderWidth units wide on the right side, if borderWidth * is negative. * *-------------------------------------------------------------- */ void Tk_Draw3DPolygon(display, drawable, border, pointPtr, numPoints, borderWidth, leftRelief) Display *display; /* X display in which to draw polygon. */ Drawable drawable; /* X window or pixmap in which to draw. */ Tk_3DBorder border; /* Token for border to draw. */ XPoint *pointPtr; /* Array of points describing * polygon. All points must be * absolute (CoordModeOrigin). */ int numPoints; /* Number of points at *pointPtr. */ int borderWidth; /* Width of border, measured in * pixels to the left of the polygon's * trajectory. May be negative. */ int leftRelief; /* TK_RELIEF_RAISED or * TK_RELIEF_SUNKEN: indicates how * stuff to left of trajectory looks * relative to stuff on right. */ { XPoint poly[4], b1, b2, newB1, newB2; XPoint perp, c, shift1, shift2; /* Used for handling parallel lines. */ register XPoint *p1Ptr, *p2Ptr; Border *borderPtr = (Border *) border; GC gc; int i, lightOnLeft, dx, dy, parallel, pointsSeen; /* * If the polygon is already closed, drop the last point from it * (we'll close it automatically). */ p1Ptr = &pointPtr[numPoints-1]; p2Ptr = &pointPtr[0]; if ((p1Ptr->x == p2Ptr->x) && (p1Ptr->y == p2Ptr->y)) { numPoints--; } /* * The loop below is executed once for each vertex in the polgon. * At the beginning of each iteration things look like this: * * poly[1] / * * / * | / * b1 * poly[0] (pointPtr[i-1]) * | | * | | * | | * | | * | | * | | *p1Ptr *p2Ptr * b2 *--------------------* * | * | * x------------------------- * * The job of this iteration is to do the following: * (a) Compute x (the border corner corresponding to * pointPtr[i]) and put it in poly[2]. As part of * this, compute a new b1 and b2 value for the next * side of the polygon. * (b) Put pointPtr[i] into poly[3]. * (c) Draw the polygon given by poly[0..3]. * (d) Advance poly[0], poly[1], b1, and b2 for the * next side of the polygon. */ /* * The above situation doesn't first come into existence until * two points have been processed; the first two points are * used to "prime the pump", so some parts of the processing * are ommitted for these points. The variable "pointsSeen" * keeps track of the priming process; it has to be separate * from i in order to be able to ignore duplicate points in the * polygon. */ pointsSeen = 0; for (i = -2, p1Ptr = &pointPtr[numPoints-2], p2Ptr = p1Ptr+1; i < numPoints; i++, p1Ptr = p2Ptr, p2Ptr++) { if ((i == -1) || (i == numPoints-1)) { p2Ptr = pointPtr; } if ((p2Ptr->x == p1Ptr->x) && (p2Ptr->y == p1Ptr->y)) { /* * Ignore duplicate points (they'd cause core dumps in * ShiftLine calls below). */ continue; } ShiftLine(p1Ptr, p2Ptr, borderWidth, &newB1); newB2.x = newB1.x + (p2Ptr->x - p1Ptr->x); newB2.y = newB1.y + (p2Ptr->y - p1Ptr->y); poly[3] = *p1Ptr; parallel = 0; if (pointsSeen >= 1) { parallel = Intersect(&newB1, &newB2, &b1, &b2, &poly[2]); /* * If two consecutive segments of the polygon are parallel, * then things get more complex. Consider the following * diagram: * * poly[1] * *----b1-----------b2------a * \ * \ * *---------*----------* b * poly[0] *p2Ptr *p1Ptr / * / * --*--------*----c * newB1 newB2 * * Instead of using x and *p1Ptr for poly[2] and poly[3], as * in the original diagram, use a and b as above. Then instead * of using x and *p1Ptr for the new poly[0] and poly[1], use * b and c as above. * * Do the computation in three stages: * 1. Compute a point "perp" such that the line p1Ptr-perp * is perpendicular to p1Ptr-p2Ptr. * 2. Compute the points a and c by intersecting the lines * b1-b2 and newB1-newB2 with p1Ptr-perp. * 3. Compute b by shifting p1Ptr-perp to the right and * intersecting it with p1Ptr-p2Ptr. */ if (parallel) { perp.x = p1Ptr->x + (p2Ptr->y - p1Ptr->y); perp.y = p1Ptr->y - (p2Ptr->x - p1Ptr->x); (void) Intersect(p1Ptr, &perp, &b1, &b2, &poly[2]); (void) Intersect(p1Ptr, &perp, &newB1, &newB2, &c); ShiftLine(p1Ptr, &perp, borderWidth, &shift1); shift2.x = shift1.x + (perp.x - p1Ptr->x); shift2.y = shift1.y + (perp.y - p1Ptr->y); (void) Intersect(p1Ptr, p2Ptr, &shift1, &shift2, &poly[3]); } } if (pointsSeen >= 2) { dx = poly[3].x - poly[0].x; dy = poly[3].y - poly[0].y; if (dx > 0) { lightOnLeft = (dy <= dx); } else { lightOnLeft = (dy < dx); } if (lightOnLeft ^ (leftRelief == TK_RELIEF_RAISED)) { gc = borderPtr->lightGC; } else { gc = borderPtr->darkGC; } XFillPolygon(display, drawable, gc, poly, 4, Convex, CoordModeOrigin); } b1.x = newB1.x; b1.y = newB1.y; b2.x = newB2.x; b2.y = newB2.y; poly[0].x = poly[3].x; poly[0].y = poly[3].y; if (parallel) { poly[1].x = c.x; poly[1].y = c.y; } else if (pointsSeen >= 1) { poly[1].x = poly[2].x; poly[1].y = poly[2].y; } pointsSeen++; } } /* *---------------------------------------------------------------------- * * Tk_Fill3DRectangle -- * * Fill a rectangular area, supplying a 3D border if desired. * * Results: * None. * * Side effects: * Information gets drawn on the screen. * *---------------------------------------------------------------------- */ void Tk_Fill3DRectangle(display, drawable, border, x, y, width, height, borderWidth, relief) Display *display; /* X display in which to draw rectangle. */ Drawable drawable; /* X window or pixmap in which to draw. */ Tk_3DBorder border; /* Token for border to draw. */ int x, y, width, height; /* Outside area of rectangular region. */ int borderWidth; /* Desired width for border, in * pixels. Border will be *inside* region. */ int relief; /* Indicates 3D effect: TK_RELIEF_FLAT, * TK_RELIEF_RAISED, or TK_RELIEF_SUNKEN. */ { register Border *borderPtr = (Border *) border; XFillRectangle(display, drawable, borderPtr->bgGC, x, y, (unsigned int) width, (unsigned int) height); if (relief != TK_RELIEF_FLAT) { Tk_Draw3DRectangle(display, drawable, border, x, y, width, height, borderWidth, relief); } } /* *---------------------------------------------------------------------- * * Tk_Fill3DPolygon -- * * Fill a polygonal area, supplying a 3D border if desired. * * Results: * None. * * Side effects: * Information gets drawn on the screen. * *---------------------------------------------------------------------- */ void Tk_Fill3DPolygon(display, drawable, border, pointPtr, numPoints, borderWidth, leftRelief) Display *display; /* X display in which to draw polygon. */ Drawable drawable; /* X window or pixmap in which to draw. */ Tk_3DBorder border; /* Token for border to draw. */ XPoint *pointPtr; /* Array of points describing * polygon. All points must be * absolute (CoordModeOrigin). */ int numPoints; /* Number of points at *pointPtr. */ int borderWidth; /* Width of border, measured in * pixels to the left of the polygon's * trajectory. May be negative. */ int leftRelief; /* Indicates 3D effect of left side of * trajectory relative to right: * TK_RELIEF_FLAT, TK_RELIEF_RAISED, * or TK_RELIEF_SUNKEN. */ { register Border *borderPtr = (Border *) border; XFillPolygon(display, drawable, borderPtr->bgGC, pointPtr, numPoints, Complex, CoordModeOrigin); if (leftRelief != TK_RELIEF_FLAT) { Tk_Draw3DPolygon(display, drawable, border, pointPtr, numPoints, borderWidth, leftRelief); } } /* *-------------------------------------------------------------- * * BorderInit -- * * Initialize the structures used for border management. * * Results: * None. * * Side effects: * Read the code. * *------------------------------------------------------------- */ static void BorderInit() { initialized = 1; Tcl_InitHashTable(&borderTable, sizeof(BorderKey)/sizeof(int)); } /* *-------------------------------------------------------------- * * ShiftLine -- * * Given two points on a line, compute a point on a * new line that is parallel to the given line and * a given distance away from it. * * Results: * None. * * Side effects: * None. * *-------------------------------------------------------------- */ static void ShiftLine(p1Ptr, p2Ptr, distance, p3Ptr) XPoint *p1Ptr; /* First point on line. */ XPoint *p2Ptr; /* Second point on line. */ int distance; /* New line is to be this many * units to the left of original * line, when looking from p1 to * p2. May be negative. */ XPoint *p3Ptr; /* Store coords of point on new * line here. */ { int dx, dy, dxNeg, dyNeg; /* * The table below is used for a quick approximation in * computing the new point. An index into the table * is 128 times the slope of the original line (the slope * must always be between 0 and 1). The value of the table * entry is 128 times the amount to displace the new line * in y for each unit of perpendicular distance. In other * words, the table maps from the tangent of an angle to * the inverse of its cosine. If the slope of the original * line is greater than 1, then the displacement is done in * x rather than in y. */ static int shiftTable[129]; /* * Initialize the table if this is the first time it is * used. */ if (shiftTable[0] == 0) { int i; double tangent, cosine; for (i = 0; i <= 128; i++) { tangent = i/128.0; cosine = 128/cos(atan(tangent)) + .5; shiftTable[i] = cosine; } } *p3Ptr = *p1Ptr; dx = p2Ptr->x - p1Ptr->x; dy = p2Ptr->y - p1Ptr->y; if (dy < 0) { dyNeg = 1; dy = -dy; } else { dyNeg = 0; } if (dx < 0) { dxNeg = 1; dx = -dx; } else { dxNeg = 0; } if (dy <= dx) { dy = ((distance * shiftTable[(dy<<7)/dx]) + 64) >> 7; if (!dxNeg) { dy = -dy; } p3Ptr->y += dy; } else { dx = ((distance * shiftTable[(dx<<7)/dy]) + 64) >> 7; if (dyNeg) { dx = -dx; } p3Ptr->x += dx; } } /* *-------------------------------------------------------------- * * Intersect -- * * Find the intersection point between two lines. * * Results: * Under normal conditions 0 is returned and the point * at *iPtr is filled in with the intersection between * the two lines. If the two lines are parallel, then * -1 is returned and *iPtr isn't modified. * * Side effects: * None. * *-------------------------------------------------------------- */ static int Intersect(a1Ptr, a2Ptr, b1Ptr, b2Ptr, iPtr) XPoint *a1Ptr; /* First point of first line. */ XPoint *a2Ptr; /* Second point of first line. */ XPoint *b1Ptr; /* First point of second line. */ XPoint *b2Ptr; /* Second point of second line. */ XPoint *iPtr; /* Filled in with intersection point. */ { int dxadyb, dxbdya, dxadxb, dyadyb, p, q; /* * The code below is just a straightforward manipulation of two * equations of the form y = (x-x1)*(y2-y1)/(x2-x1) + y1 to solve * for the x-coordinate of intersection, then the y-coordinate. */ dxadyb = (a2Ptr->x - a1Ptr->x)*(b2Ptr->y - b1Ptr->y); dxbdya = (b2Ptr->x - b1Ptr->x)*(a2Ptr->y - a1Ptr->y); dxadxb = (a2Ptr->x - a1Ptr->x)*(b2Ptr->x - b1Ptr->x); dyadyb = (a2Ptr->y - a1Ptr->y)*(b2Ptr->y - b1Ptr->y); if (dxadyb == dxbdya) { return -1; } p = (a1Ptr->x*dxbdya - b1Ptr->x*dxadyb + (b1Ptr->y - a1Ptr->y)*dxadxb); q = dxbdya - dxadyb; if (q < 0) { p = -p; q = -q; } if (p < 0) { iPtr->x = - ((-p + q/2)/q); } else { iPtr->x = (p + q/2)/q; } p = (a1Ptr->y*dxadyb - b1Ptr->y*dxbdya + (b1Ptr->x - a1Ptr->x)*dyadyb); q = dxadyb - dxbdya; if (q < 0) { p = -p; q = -q; } if (p < 0) { iPtr->y = - ((-p + q/2)/q); } else { iPtr->y = (p + q/2)/q; } return 0; } micropolis-activity/src/tk/tkfont.c0000664000076400007640000005335410724145723017723 0ustar simcitysimcity/* * tkFont.c -- * * This file maintains a database of looked-up fonts for the Tk * toolkit, in order to avoid round-trips to the server to map * font names to XFontStructs. * * Copyright 1990 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkFont.c,v 1.21 92/06/15 14:00:19 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tkconfig.h" #include "tkint.h" /* * This module caches extra information about fonts in addition to * what X already provides. The extra information is used by the * TkMeasureChars procedure, and consists of two parts: a type and * a width. The type is one of the following: * * NORMAL: Standard character. * TAB: Tab character: output enough space to * get to next tab stop. * NEWLINE: Newline character: don't output anything more * on this line (character has infinite width). * REPLACE: This character doesn't print: instead of * displaying character, display a replacement * sequence of the form "\xdd" where dd is the * hex equivalent of the character. * SKIP: Don't display anything for this character. This * is only used where the font doesn't contain * all the characters needed to generate * replacement sequences. * The width gives the total width of the displayed character or * sequence: for replacement sequences, it gives the width of the * sequence. */ #define NORMAL 1 #define TAB 2 #define NEWLINE 3 #define REPLACE 4 #define SKIP 5 /* * One of the following data structures exists for each font that is * currently active. The structure is indexed with two hash tables, * one based on font name and one based on XFontStruct address. */ typedef struct { XFontStruct *fontStructPtr; /* X information about font. */ Display *display; /* Display to which font belongs. */ int refCount; /* Number of active uses of this font. */ char *types; /* Malloc'ed array giving types of all * chars in the font (may be NULL). */ unsigned char *widths; /* Malloc'ed array giving widths of all * chars in the font (may be NULL). */ int tabWidth; /* Width of tabs in this font. */ Tcl_HashEntry *nameHashPtr; /* Entry in name-based hash table (needed * when deleting this structure). */ } TkFont; /* * Hash table for name -> TkFont mapping, and key structure used to * index into that table: */ static Tcl_HashTable nameTable; typedef struct { Tk_Uid name; /* Name of font. */ Display *display; /* Display for which font is valid. */ } NameKey; /* * Hash table for font struct -> TkFont mapping. This table is * indexed by the XFontStruct address. */ static Tcl_HashTable fontTable; static int initialized = 0; /* 0 means static structures haven't been * initialized yet. */ /* * To speed up TkMeasureChars, the variables below keep the last * mapping from (XFontStruct *) to (TkFont *). */ static TkFont *lastFontPtr = NULL; static XFontStruct *lastFontStructPtr = NULL; /* * Characters used when displaying control sequences as their * hex equivalents. */ static char hexChars[] = "0123456789abcdefx\\"; /* * Forward declarations for procedures defined in this file: */ static void FontInit _ANSI_ARGS_((void)); static void SetFontMetrics _ANSI_ARGS_((TkFont *fontPtr)); /* *---------------------------------------------------------------------- * * Tk_GetFontStruct -- * * Given a string name for a font, map the name to an XFontStruct * describing the font. * * Results: * The return value is normally a pointer to the font description * for the desired font. If an error occurs in mapping the string * to a font, then an error message will be left in interp->result * and NULL will be returned. * * Side effects: * The font is added to an internal database with a reference count. * For each call to this procedure, there should eventually be a call * to Tk_FreeFontStruct, so that the database is cleaned up when fonts * aren't in use anymore. * *---------------------------------------------------------------------- */ XFontStruct * Tk_GetFontStruct(interp, tkwin, name) Tcl_Interp *interp; /* Place to leave error message if * font can't be found. */ Tk_Window tkwin; /* Window in which font will be used. */ Tk_Uid name; /* Name of font (in form suitable for * passing to XLoadQueryFont). */ { NameKey nameKey; Tcl_HashEntry *nameHashPtr, *fontHashPtr; int new; register TkFont *fontPtr; XFontStruct *fontStructPtr; if (!initialized) { FontInit(); } /* * First, check to see if there's already a mapping for this font * name. */ nameKey.name = name; nameKey.display = Tk_Display(tkwin); nameHashPtr = Tcl_CreateHashEntry(&nameTable, (char *) &nameKey, &new); if (!new) { fontPtr = (TkFont *) Tcl_GetHashValue(nameHashPtr); fontPtr->refCount++; return fontPtr->fontStructPtr; } /* * The name isn't currently known. Map from the name to a font, and * add a new structure to the database. */ fontStructPtr = XLoadQueryFont(nameKey.display, name); if (fontStructPtr == NULL) { Tcl_DeleteHashEntry(nameHashPtr); Tcl_AppendResult(interp, "font \"", name, "\" doesn't exist", (char *) NULL); return NULL; } fontPtr = (TkFont *) ckalloc(sizeof(TkFont)); fontPtr->display = nameKey.display; fontPtr->fontStructPtr = fontStructPtr; fontPtr->refCount = 1; fontPtr->types = NULL; fontPtr->widths = NULL; fontPtr->nameHashPtr = nameHashPtr; fontHashPtr = Tcl_CreateHashEntry(&fontTable, (char *) fontStructPtr, &new); if (!new) { panic("XFontStruct already registered in Tk_GetFontStruct"); } Tcl_SetHashValue(nameHashPtr, fontPtr); Tcl_SetHashValue(fontHashPtr, fontPtr); return fontPtr->fontStructPtr; } /* *-------------------------------------------------------------- * * Tk_NameOfFontStruct -- * * Given a font, return a textual string identifying it. * * Results: * If font was created by Tk_GetFontStruct, then the return * value is the "string" that was used to create it. * Otherwise the return value is a string giving the X * identifier for the font. The storage for the returned * string is only guaranteed to persist up until the next * call to this procedure. * * Side effects: * None. * *-------------------------------------------------------------- */ char * Tk_NameOfFontStruct(fontStructPtr) XFontStruct *fontStructPtr; /* Font whose name is desired. */ { Tcl_HashEntry *fontHashPtr; TkFont *fontPtr; static char string[20]; if (!initialized) { printid: sprintf(string, "font id 0x%x", fontStructPtr->fid); return string; } fontHashPtr = Tcl_FindHashEntry(&fontTable, (char *) fontStructPtr); if (fontHashPtr == NULL) { goto printid; } fontPtr = (TkFont *) Tcl_GetHashValue(fontHashPtr); return ((NameKey *) fontPtr->nameHashPtr->key.words)->name; } /* *---------------------------------------------------------------------- * * Tk_FreeFontStruct -- * * This procedure is called to release a font allocated by * Tk_GetFontStruct. * * Results: * None. * * Side effects: * The reference count associated with font is decremented, and * the font is officially deallocated if no-one is using it * anymore. * *---------------------------------------------------------------------- */ void Tk_FreeFontStruct(fontStructPtr) XFontStruct *fontStructPtr; /* Font to be released. */ { Tcl_HashEntry *fontHashPtr; register TkFont *fontPtr; if (!initialized) { panic("Tk_FreeFontStruct called before Tk_GetFontStruct"); } fontHashPtr = Tcl_FindHashEntry(&fontTable, (char *) fontStructPtr); if (fontHashPtr == NULL) { panic("Tk_FreeFontStruct received unknown font argument"); } fontPtr = (TkFont *) Tcl_GetHashValue(fontHashPtr); fontPtr->refCount--; if (fontPtr->refCount == 0) { XFreeFont(fontPtr->display, fontPtr->fontStructPtr); Tcl_DeleteHashEntry(fontPtr->nameHashPtr); Tcl_DeleteHashEntry(fontHashPtr); if (fontPtr->types != NULL) { ckfree(fontPtr->types); } if (fontPtr->widths != NULL) { ckfree((char *) fontPtr->widths); } ckfree((char *) fontPtr); lastFontStructPtr = NULL; } } /* *---------------------------------------------------------------------- * * FontInit -- * * Initialize the structure used for font management. * * Results: * None. * * Side effects: * Read the code. * *---------------------------------------------------------------------- */ static void FontInit() { initialized = 1; Tcl_InitHashTable(&nameTable, sizeof(NameKey)/sizeof(int)); Tcl_InitHashTable(&fontTable, TCL_ONE_WORD_KEYS); } /* *-------------------------------------------------------------- * * SetFontMetrics -- * * This procedure is called to fill in the "widths" and "types" * arrays for a font. * * Results: * None. * * Side effects: * FontPtr gets modified to hold font metric information. * *-------------------------------------------------------------- */ static void SetFontMetrics(fontPtr) register TkFont *fontPtr; /* Font structure in which to * set metrics. */ { int i, replaceOK, baseWidth; register XFontStruct *fontStructPtr = fontPtr->fontStructPtr; char *p; /* * Pass 1: initialize the arrays. */ fontPtr->types = (char *) ckalloc(256); fontPtr->widths = (unsigned char *) ckalloc(256); for (i = 0; i < 256; i++) { fontPtr->types[i] = REPLACE; } /* * Pass 2: for all characters that exist in the font and are * not control characters, fill in the type and width * information. */ for (i = ' '; i < 256; i++) { if ((i == 0177) || (i < fontStructPtr->min_char_or_byte2) || (i > fontStructPtr->max_char_or_byte2)) { continue; } fontPtr->types[i] = NORMAL; if (fontStructPtr->per_char == NULL) { fontPtr->widths[i] = fontStructPtr->min_bounds.width; } else { fontPtr->widths[i] = fontStructPtr->per_char[i - fontStructPtr->min_char_or_byte2].width; } } /* * Pass 3: fill in information for characters that have to * be replaced with "\xhh" strings. If the font doesn't * have the characters needed for this, then just use the * font's default character. */ replaceOK = 1; baseWidth = fontPtr->widths['\\'] + fontPtr->widths['x']; for (p = hexChars; *p != 0; p++) { if (fontPtr->types[*p] != NORMAL) { replaceOK = 0; break; } } for (i = 0; i < 256; i++) { if (fontPtr->types[i] != REPLACE) { continue; } if (replaceOK) { fontPtr->widths[i] = baseWidth + fontPtr->widths[hexChars[i & 0xf]] + fontPtr->widths[hexChars[(i>>4) & 0xf]]; } else { fontPtr->types[i] = SKIP; fontPtr->widths[i] = 0; } } /* * Lastly, fill in special information for newline and tab. */ fontPtr->types['\n'] = NEWLINE; fontPtr->widths['\n'] = 0; fontPtr->types['\t'] = TAB; fontPtr->widths['\t'] = 0; if (fontPtr->types['0'] == NORMAL) { fontPtr->tabWidth = 8*fontPtr->widths['0']; } else { fontPtr->tabWidth = 8*fontStructPtr->max_bounds.width; } /* * Make sure the tab width isn't zero (some fonts may not have enough * information to set a reasonable tab width). */ if (fontPtr->tabWidth == 0) { fontPtr->tabWidth = 1; } } /* *-------------------------------------------------------------- * * TkMeasureChars -- * * Measure the number of characters from a string that * will fit in a given horizontal span. The measurement * is done under the assumption that TkDisplayChars will * be used to actually display the characters. * * Results: * The return value is the number of characters from source * that fit in the span given by startX and maxX. *nextXPtr * is filled in with the x-coordinate at which the first * character that didn't fit would be drawn, if it were to * be drawn. * * Side effects: * None. * *-------------------------------------------------------------- */ int TkMeasureChars(fontStructPtr, source, maxChars, startX, maxX, flags, nextXPtr) XFontStruct *fontStructPtr; /* Font in which to draw characters. */ char *source; /* Characters to be displayed. Need not * be NULL-terminated. */ int maxChars; /* Maximum # of characters to consider from * source. */ int startX; /* X-position at which first character will * be drawn. */ int maxX; /* Don't consider any character that would * cross this x-position. */ int flags; /* Various flag bits OR-ed together. * TK_WHOLE_WORDS means stop on a word boundary * (just before a space character) if * possible. TK_AT_LEAST_ONE means always * return a value of at least one, even * if the character doesn't fit. * TK_PARTIAL_OK means it's OK to display only * a part of the last character in the line. * TK_NEWLINES_NOT_SPECIAL means that newlines * are treated just like other control chars: * they don't terminate the line,*/ int *nextXPtr; /* Return x-position of terminating * character here. */ { register TkFont *fontPtr; register char *p; /* Current character. */ register int c; char *term; /* Pointer to most recent character that * may legally be a terminating character. */ int termX; /* X-position just after term. */ int curX; /* X-position corresponding to p. */ int newX; /* X-position corresponding to p+1. */ int type; /* * Find the TkFont structure for this font, and make sure its * font metrics exist. */ if (lastFontStructPtr == fontStructPtr) { fontPtr = lastFontPtr; } else { Tcl_HashEntry *fontHashPtr; if (!initialized) { badArg: panic("TkMeasureChars received unknown font argument"); } fontHashPtr = Tcl_FindHashEntry(&fontTable, (char *) fontStructPtr); if (fontHashPtr == NULL) { goto badArg; } fontPtr = (TkFont *) Tcl_GetHashValue(fontHashPtr); lastFontStructPtr = fontPtr->fontStructPtr; lastFontPtr = fontPtr; } if (fontPtr->types == NULL) { SetFontMetrics(fontPtr); } /* * Scan the input string one character at a time, until a character * is found that crosses maxX. */ newX = curX = startX; termX = 0; /* Not needed, but eliminates compiler warning. */ term = source; for (p = source, c = *p & 0xff; maxChars > 0; p++, maxChars--) { type = fontPtr->types[c]; if (type == NORMAL) { newX += fontPtr->widths[c]; } else if (type == TAB) { newX += fontPtr->tabWidth; newX -= newX % fontPtr->tabWidth; } else if (type == REPLACE) { replaceType: newX += fontPtr->widths['\\'] + fontPtr->widths['x'] + fontPtr->widths[hexChars[(c >> 4) & 0xf]] + fontPtr->widths[hexChars[c & 0xf]]; } else if (type == NEWLINE) { if (flags & TK_NEWLINES_NOT_SPECIAL) { goto replaceType; } break; } else if (type != SKIP) { panic("Unknown type %d in TkMeasureChars", type); } if (newX > maxX) { break; } c = p[1] & 0xff; if (isspace(c) || (c == 0)) { term = p+1; termX = newX; } curX = newX; } /* * P points to the first character that doesn't fit in the desired * span. Use the flags to figure out what to return. */ if ((flags & TK_PARTIAL_OK) && (curX < maxX)) { curX = newX; p++; } if ((flags & TK_AT_LEAST_ONE) && (term == source) && (maxChars > 0) & !isspace(*term)) { term = p; termX = curX; if (term == source) { term++; termX = newX; } } else if ((maxChars == 0) || !(flags & TK_WHOLE_WORDS)) { term = p; termX = curX; } *nextXPtr = termX; return term-source; } /* *-------------------------------------------------------------- * * TkDisplayChars -- * * Draw a string of characters on the screen, converting * tabs to the right number of spaces and control characters * to sequences of the form "\xhh" where hh are two hex * digits. * * Results: * None. * * Side effects: * Information gets drawn on the screen. * *-------------------------------------------------------------- */ void TkDisplayChars(display, drawable, gc, fontStructPtr, string, numChars, x, y, flags) Display *display; /* Display on which to draw. */ Drawable drawable; /* Window or pixmap in which to draw. */ GC gc; /* Graphics context for actually drawing * characters. */ XFontStruct *fontStructPtr; /* Font used in GC; must have been allocated * by Tk_GetFontStruct. Used to compute sizes * of tabs, etc. */ char *string; /* Characters to be displayed. */ int numChars; /* Number of characters to display from * string. */ int x, y; /* Coordinates at which to draw string. */ int flags; /* Flags to control display. Only * TK_NEWLINES_NOT_SPECIAL is supported right * now. See TkMeasureChars for information * about it. */ { register TkFont *fontPtr; register char *p; /* Current character being scanned. */ register int c; int type; char *start; /* First character waiting to be displayed. */ int startX; /* X-coordinate corresponding to start. */ int curX; /* X-coordinate corresponding to p. */ char replace[10]; /* * Find the TkFont structure for this font, and make sure its * font metrics exist. */ if (lastFontStructPtr == fontStructPtr) { fontPtr = lastFontPtr; } else { Tcl_HashEntry *fontHashPtr; if (!initialized) { badArg: panic("TkDisplayChars received unknown font argument"); } fontHashPtr = Tcl_FindHashEntry(&fontTable, (char *) fontStructPtr); if (fontHashPtr == NULL) { goto badArg; } fontPtr = (TkFont *) Tcl_GetHashValue(fontHashPtr); lastFontStructPtr = fontPtr->fontStructPtr; lastFontPtr = fontPtr; } if (fontPtr->types == NULL) { SetFontMetrics(fontPtr); } /* * Scan the string one character at a time. Display control * characters immediately, but delay displaying normal characters * in order to pass many characters to the server all together. */ startX = curX = x; start = string; for (p = string; numChars > 0; numChars--, p++) { c = *p & 0xff; type = fontPtr->types[c]; if (type == NORMAL) { curX += fontPtr->widths[c]; continue; } if (p != start) { XDrawString(display, drawable, gc, startX, y, start, p - start); startX = curX; } if (type == TAB) { curX += fontPtr->tabWidth; curX -= curX % fontPtr->tabWidth; } else if (type == REPLACE) { doReplace: replace[0] = '\\'; replace[1] = 'x'; replace[2] = hexChars[(c >> 4) & 0xf]; replace[3] = hexChars[c & 0xf]; XDrawString(display, drawable, gc, startX, y, replace, 4); curX += fontPtr->widths[replace[0]] + fontPtr->widths[replace[1]] + fontPtr->widths[replace[2]] + fontPtr->widths[replace[3]]; } else if (type == NEWLINE) { if (flags & TK_NEWLINES_NOT_SPECIAL) { goto doReplace; } y += fontStructPtr->ascent + fontStructPtr->descent; curX = x; } else if (type != SKIP) { panic("Unknown type %d in TkDisplayChars", type); } startX = curX; start = p+1; } /* * At the very end, there may be one last batch of normal characters * to display. */ if (p != start) { XDrawString(display, drawable, gc, startX, y, start, p - start); } } /* *---------------------------------------------------------------------- * * TkUnderlineChars -- * * This procedure draws an underline for a given range of characters * in a given string, using appropriate information for the string's * font. It doesn't draw the characters (which are assumed to have * been displayed previously); it just draws the underline. * * Results: * None. * * Side effects: * Information gets displayed in "drawable". * *---------------------------------------------------------------------- */ void TkUnderlineChars(display, drawable, gc, fontStructPtr, string, x, y, flags, firstChar, lastChar) Display *display; /* Display on which to draw. */ Drawable drawable; /* Window or pixmap in which to draw. */ GC gc; /* Graphics context for actually drawing * underline. */ XFontStruct *fontStructPtr; /* Font used in GC; must have been allocated * by Tk_GetFontStruct. Used to character * dimensions, etc. */ char *string; /* String containing characters to be * underlined. */ int x, y; /* Coordinates at which first character of * string is drawn. */ int flags; /* Flags that were passed to TkDisplayChars. */ int firstChar; /* Index of first character to underline. */ int lastChar; /* Index of last character to underline. */ { int xUnder, yUnder, width, height; unsigned long value; /* * First compute the vertical span of the underline, using font * properties if they exist. */ if (XGetFontProperty(fontStructPtr, XA_UNDERLINE_POSITION, &value)) { yUnder = y + value; } else { yUnder = y + fontStructPtr->max_bounds.descent/2; } if (XGetFontProperty(fontStructPtr, XA_UNDERLINE_THICKNESS, &value)) { height = value; } else { height = 2; } /* * Now compute the horizontal span of the underline. */ TkMeasureChars(fontStructPtr, string, firstChar, x, (int) 1000000, flags, &xUnder); TkMeasureChars(fontStructPtr, string+firstChar, lastChar+1-firstChar, xUnder, (int) 1000000, flags, &width); width -= xUnder; XFillRectangle(display, drawable, gc, xUnder, yUnder, (unsigned int) width, (unsigned int) height); } micropolis-activity/src/tk/tkint.h0000664000076400007640000004445310724145723017554 0ustar simcitysimcity/* * tkInt.h -- * * Declarations for things used internally by the Tk * procedures but not exported outside the module. * * Copyright 1990-1992 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. * * $Header: /user6/ouster/wish/RCS/tkInt.h,v 1.65 92/08/21 11:42:27 ouster Exp $ SPRITE (Berkeley) */ #ifndef _TKINT #define _TKINT #ifndef _XLIB_H_ #include #ifdef IS_LINUX #include #endif #endif #ifndef _XUTIL_H #include #endif #ifndef _TK #include "tk.h" #endif #ifndef _TCL #include "tcl.h" #endif #ifndef _TCLHASH #include "tclhash.h" #endif /* * One of the following structures is maintained for each display * containing a window managed by Tk: */ typedef struct TkDisplay { Display *display; /* Xlib's info about display. */ struct TkDisplay *nextPtr; /* Next in list of all displays. */ char *name; /* Name of display (with any screen * identifier removed). Malloc-ed. */ Time lastEventTime; /* Time of last event received for this * display. */ /* * Information used by tkEvent.c only: */ struct TkWindow *mouseMainPtr; /* Pointer to the main window of this * display that currently contains the * mouse pointer. NULL means the pointer * isn't in a main window managed by * this process. */ /* * Information used by tkBind.c only: */ int firstKeycode; /* First keycode supported by * display. */ int lastKeycode; /* Last keycode supported by * display. */ int symsPerCode; /* Number of KeySyms in "keySyms" * for each keycode. 0 means the * keysym information hasn't been * retrieved from the server yet. */ KeySym *keySyms; /* Array of KeySyms, returned by * XGetKeyboardMapping. */ /* * Information used by tkError.c only: */ struct TkErrorHandler *errorPtr; /* First in list of error handlers * for this display. NULL means * no handlers exist at present. */ int deleteCount; /* Counts # of handlers deleted since * last time inactive handlers were * garbage-collected. When this number * gets big, handlers get cleaned up. */ /* * Information used by tkSend.c only: */ Tk_Window commWindow; /* Window used for communication * between interpreters during "send" * commands. NULL means send info hasn't * been initialized yet. */ Atom commProperty; /* X's name for comm property. */ Atom registryProperty; /* X's name for property containing * registry of interpreter names. */ /* * Information used by tkSelect.c only: */ Tk_Window selectionOwner; /* Current owner of selection, or * NULL if selection isn't owned by * a window in this process. */ int selectionSerial; /* Serial number of last XSelectionSetOwner * request we made to server (used to * filter out redundant SelectionClear * events. */ Time selectionTime; /* Timestamp used to acquire selection. */ Atom multipleAtom; /* Atom for MULTIPLE. None means * selection stuff isn't initialized. */ Atom incrAtom; /* Atom for INCR. */ Atom targetsAtom; /* Atom for TARGETS. */ Atom timestampAtom; /* Atom for TIMESTAMP. */ Atom textAtom; /* Atom for TEXT. */ Atom compoundTextAtom; /* Atom for COMPOUND_TEXT. */ /* * Information used by tkAtom.c only: */ int atomInit; /* 0 means stuff below hasn't been * initialized yet. */ Tcl_HashTable nameTable; /* Maps from names to Atom's. */ Tcl_HashTable atomTable; /* Maps from Atom's back to names. */ /* * Information used by tkCursor.c only: */ Font cursorFont; /* Font to use for standard cursors. * None means font not loaded yet. */ /* * Information used by tkGrab.c only: */ struct TkWindow *grabWinPtr; /* Window in which the pointer is currently * grabbed, or NULL if none. */ struct TkWindow *ungrabWinPtr; /* Window to which pointer should be returned * when the current grab ends (i.e. the * window that the mouse is really on top * of). */ struct TkWindow *buttonWinPtr; /* Window in which first mouse button was * pressed while grab was in effect, or NULL * if no such press in effect. */ struct TkWindow *pointerWinPtr; /* The window that officially contains the * pointer, as far as this application is * concerned. If a grab is in effect then * this may not be the window that's underneath * the pointer. NULL means the application * doesn't consider the pointer to be in any * window. */ struct TkWindow *serverWinPtr; /* The window that contains the pointer, as * far as the X server is concerned. This * field gets set on every Enter or Leave * event even if the grab code eventually * discards the event. NULL means the server * thinks the pointer is outside any window * of any application on this screen. */ int grabFlags; /* Miscellaneous flag values. See definitions * in tkGrab.c. */ /* XXX: FOCUS */ struct TkWindow *focusPtr; /* Identifies window that currently has the * focus (or that will get the focus the next * time the pointer enters any of the top-level * windows associated with this display). * NULL means nobody has the focus. * Managed by tkEvent.c. */ } TkDisplay; /* * One of the following structures exists for each error handler * created by a call to Tk_CreateErrorHandler. The structure * is managed by tkError.c. */ typedef struct TkErrorHandler { TkDisplay *dispPtr; /* Display to which handler applies. */ unsigned long firstRequest; /* Only errors with serial numbers * >= to this are considered. */ unsigned long lastRequest; /* Only errors with serial numbers * <= to this are considered. This * field is filled in when XUnhandle * is called. -1 means XUnhandle * hasn't been called yet. */ int error; /* Consider only errors with this * error_code (-1 means consider * all errors). */ int request; /* Consider only errors with this * major request code (-1 means * consider all major codes). */ int minorCode; /* Consider only errors with this * minor request code (-1 means * consider all minor codes). */ Tk_ErrorProc *errorProc; /* Procedure to invoke when a matching * error occurs. NULL means just ignore * errors. */ ClientData clientData; /* Arbitrary value to pass to * errorProc. */ struct TkErrorHandler *nextPtr; /* Pointer to next older handler for * this display, or NULL for end of * list. */ } TkErrorHandler; /* * One of the following structures exists for each event handler * created by calling Tk_CreateEventHandler. This information * is used by tkEvent.c only. */ typedef struct TkEventHandler { unsigned long mask; /* Events for which to invoke * proc. */ Tk_EventProc *proc; /* Procedure to invoke when an event * in mask occurs. */ ClientData clientData; /* Argument to pass to proc. */ struct TkEventHandler *nextPtr; /* Next in list of handlers * associated with window (NULL means * end of list). */ } TkEventHandler; /* * One of the following structures exists for each selection * handler created by calling Tk_CreateSelHandler. This * information is used by tkSelect.c only. */ typedef struct TkSelHandler { Atom target; /* Target type for selection * conversion, such as TARGETS or * STRING. */ Atom format; /* Format in which selection * info will be returned, such * as STRING or ATOM. */ Tk_SelectionProc *proc; /* Procedure to generate selection * in this format. */ ClientData clientData; /* Argument to pass to proc. */ int size; /* Size of units returned by proc * (8 for STRING, 32 for almost * anything else). */ struct TkSelHandler *nextPtr; /* Next selection handler associated * with same window (NULL for end of * list). */ } TkSelHandler; /* * Tk keeps one of the following data structures for each main * window (created by a call to Tk_CreateMainWindow). It stores * information that is shared by all of the windows associated * with a particular main window. */ typedef struct TkMainInfo { struct TkWindow *winPtr; /* Pointer to main window. */ Tcl_Interp *interp; /* Interpreter associated with application. */ Tcl_HashTable nameTable; /* Hash table mapping path names to TkWindow * structs for all windows related to this * main window. Managed by tkWindow.c. */ Tk_BindingTable bindingTable; /* Used in conjunction with "bind" command * to bind events to Tcl commands. */ /* XXX: FOCUS */ /* struct TkWindow *focusPtr; */ /* Identifies window that currently has the * focus (or that will get the focus the next * time the pointer enters any of the top-level * windows associated with this display). * NULL means nobody has the focus. * Managed by tkEvent.c. */ struct ElArray *optionRootPtr; /* Top level of option hierarchy for this * main window. NULL means uninitialized. * Managed by tkOption.c. */ } TkMainInfo; /* * Tk keeps one of the following structures for each window. * Some of the information (like size and location) is a shadow * of information managed by the X server, and some is special * information used here, such as event and geometry management * information. This information is (mostly) managed by tkWindow.c. * WARNING: the declaration below must be kept consistent with the * Tk_ClientWindow structure in tk.h. If you change one, be sure to * change the other!! */ typedef struct TkWindow { /* * Structural information: */ Display *display; /* Display containing window. */ TkDisplay *dispPtr; /* Tk's information about display * for window. */ int screenNum; /* Index of screen for window, among all * those for dispPtr. */ Window window; /* X's id for window. NULL means window * hasn't actually been created yet, or it's * been deleted. */ struct TkWindow *childList; /* First in list of child windows, * or NULL if no children. */ struct TkWindow *parentPtr; /* Pointer to parent window (logical * parent, not necessarily X parent), or * NULL if this is a main window. */ struct TkWindow *nextPtr; /* Next in list of children with * same parent (NULL if end of * list). */ TkMainInfo *mainPtr; /* Information shared by all windows * associated with a particular main * window. NULL means this window is * a rogue that isn't associated with * any application (at present, there * should never be any rogues). */ /* * Name and type information for the window: */ char *pathName; /* Path name of window (concatenation * of all names between this window and * its top-level ancestor). This is a * pointer into an entry in * mainPtr->nameTable or NULL if mainPtr * is NULL. */ Tk_Uid nameUid; /* Name of the window within its parent * (unique within the parent). */ Tk_Uid classUid; /* Class of the window. NULL means window * hasn't been given a class yet. */ /* * Geometry and other attributes of window. This information * may not be updated on the server immediately; stuff that * hasn't been reflected in the server yet is called "dirty". * At present, information can be dirty only if the window * hasn't yet been created. */ XWindowChanges changes; /* Geometry and other info about * window. */ unsigned int dirtyChanges; /* Bits indicate fields of "changes" * that are dirty. */ XSetWindowAttributes atts; /* Current attributes of window. */ unsigned long dirtyAtts; /* Bits indicate fields of "atts" * that are dirty. */ unsigned int flags; /* Various flag values: these are all * defined in tk.h (confusing, but they're * needed there for some query macros). */ /* * Information kept by the event manager (tkEvent.c): */ TkEventHandler *handlerList;/* First in list of event handlers * declared for this window, or * NULL if none. */ /* * Information related to input focussing (tkEvent.c): */ Tk_FocusProc *focusProc; /* Procedure to invoke when this window * gets or loses the input focus. NULL * means this window is not prepared to * receive the focus. */ ClientData focusData; /* Arbitrary value to pass to focusProc. */ /* * Information used by tkOption.c to manage options for the * window. */ int optionLevel; /* -1 means no option information is * currently cached for this window. * Otherwise this gives the level in * the option stack at which info is * cached. */ /* * Information used by tkSelect.c to manage the selection. */ TkSelHandler *selHandlerList; /* First in list of handlers for * returning the selection in various * forms. */ Tk_LostSelProc *selClearProc; ClientData selClearData; /* Info to pass to selClearProc. */ /* * Information used by tkGeometry.c for geometry management. */ Tk_GeometryProc *geomProc; /* Procedure to handle geometry * requests (NULL means no window is * unmanaged). */ ClientData geomData; /* Argument for geomProc. */ int reqWidth, reqHeight; /* Arguments from last call to * Tk_GeometryRequest, or 0's if * Tk_GeometryRequest hasn't been * called. */ int internalBorderWidth; /* Width of internal border of window * (0 means no internal border). Geom. * mgr. should not place children on top * of the border. */ /* * Information maintained by tkWm.c for window manager communication. */ struct TkWmInfo *wmInfoPtr; /* For top-level windows, points to * structure with wm-related info (see * tkWm.c). For other windows, this * is NULL. */ } TkWindow; /* * The context below is used to map from an X window id to * the TkWindow structure associated with the window. */ extern XContext tkWindowContext; /* * Pointer to first entry in list of all displays currently known. */ extern TkDisplay *tkDisplayList; /* * Flags passed to TkMeasureChars: */ #define TK_WHOLE_WORDS 1 #define TK_AT_LEAST_ONE 2 #define TK_PARTIAL_OK 4 #define TK_NEWLINES_NOT_SPECIAL 8 /* * Location of library directory containing Tk scripts. This value * is put in the $tkLibrary variable for each application. */ #ifndef TK_LIBRARY #ifdef MSDOS #define TK_LIBRARY "res/tk" #else #define TK_LIBRARY "/usr/local/lib/tk" #endif #endif /* * See tkShare.c for explanation of following disgusting variable: */ extern XEvent *tkShareEventPtr; /* * Secret way to inhibit event collapsing. -deh */ extern int tkCollapseMotion; /* * Secret way to break out to Tk_MainLoop. -deh */ extern int tkMustExit; /* * Miscellaneous variables shared among Tk modules but not exported * to the outside world: */ extern Tk_Uid tkActiveUid; extern Tk_Uid tkDisabledUid; extern Tk_Uid tkNormalUid; /* * Internal procedures shared among Tk modules but not exported * to the outside world: */ extern int TkAreaToPolygon _ANSI_ARGS_((double *polyPtr, int numPoints, double *rectPtr)); extern void TkBezierPoints _ANSI_ARGS_((double control[], int numSteps, double *coordPtr)); extern void TkBindError _ANSI_ARGS_((Tcl_Interp *interp)); extern void TkBindEventProc _ANSI_ARGS_((TkWindow *winPtr, XEvent *eventPtr)); extern Time TkCurrentTime _ANSI_ARGS_((TkDisplay *dispPtr)); extern int TkDeadAppCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern void TkDisplayChars _ANSI_ARGS_((Display *display, Drawable drawable, GC gc, XFontStruct *fontStructPtr, char *string, int numChars, int x, int y, int flags)); extern void TkEventDeadWindow _ANSI_ARGS_((TkWindow *winPtr)); extern void TkFocusEventProc _ANSI_ARGS_((TkWindow *winPtr, XEvent *eventPtr)); extern void TkGetButtPoints _ANSI_ARGS_((double p1[], double p2[], double width, int project, double m1[], double m2[])); extern int TkGetInterpNames _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin)); extern int TkGetMiterPoints _ANSI_ARGS_((double p1[], double p2[], double p3[], double width, double m1[], double m2[])); extern void TkGrabDeadWindow _ANSI_ARGS_((TkWindow *winPtr)); extern int TkLineToArea _ANSI_ARGS_((double end1Ptr[2], double end2Ptr[2], double rectPtr[4])); extern double TkLineToPoint _ANSI_ARGS_((double end1Ptr[2], double end2Ptr[2], double pointPtr[2])); extern int TkMeasureChars _ANSI_ARGS_((XFontStruct *fontStructPtr, char *source, int maxChars, int startX, int maxX, int flags, int *nextXPtr)); extern void TkOptionDeadWindow _ANSI_ARGS_((TkWindow *winPtr)); extern int TkOvalToArea _ANSI_ARGS_((double *ovalPtr, double *rectPtr)); extern double TkOvalToPoint _ANSI_ARGS_((double ovalPtr[4], double width, int filled, double pointPtr[2])); extern int TkPointerEvent _ANSI_ARGS_((XEvent *eventPtr, TkWindow *winPtr)); extern int TkPolygonToArea _ANSI_ARGS_((double *polyPtr, int numPoints, double *rectPtr)); extern double TkPolygonToPoint _ANSI_ARGS_((double *polyPtr, int numPoints, double *pointPtr)); extern void TkSelDeadWindow _ANSI_ARGS_((TkWindow *winPtr)); extern void TkSelEventProc _ANSI_ARGS_((Tk_Window tkwin, XEvent *eventPtr)); extern void TkSelPropProc _ANSI_ARGS_((XEvent *eventPtr)); extern void TkUnderlineChars _ANSI_ARGS_((Display *display, Drawable drawable, GC gc, XFontStruct *fontStructPtr, char *string, int x, int y, int flags, int firstChar, int lastChar)); extern void TkWmDeadWindow _ANSI_ARGS_((TkWindow *winPtr)); extern int TkWmMapWindow _ANSI_ARGS_((TkWindow *winPtr)); extern void TkWmSetClass _ANSI_ARGS_((TkWindow *winPtr)); extern void TkWmNewWindow _ANSI_ARGS_((TkWindow *winPtr)); #endif /* _TKINT */ micropolis-activity/src/tk/default.h0000664000076400007640000002552210724145723020043 0ustar simcitysimcity/* * default.h -- * * This file defines the defaults for all options for all of * the Tk widgets. * * Copyright 1991-1992 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that this copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. * * $Header: /user6/ouster/wish/RCS/default.h,v 1.31 92/08/21 11:45:19 ouster Exp $ SPRITE (Berkeley) */ #ifndef _DEFAULT #define _DEFAULT /* * The definitions below provide the absolute values for certain colors. * The values should be the same as in the color database, but hard-coding * them here allows Tk to run smoothly at sites that have an incomplete * or non-standard color database. */ #define BLACK "Black" #define WHITE "White" #define GRAY "#b0b0b0" #define BISQUE1 "#ffe4c4" #define BISQUE2 "#eed5b7" #define BISQUE3 "#cdb79e" #define LIGHTBLUE2 "#b2dfee" #define LIGHTPINK1 "#ffaeb9" #define MAROON "#b03060" /* * Defaults for labels, buttons, checkbuttons, and radiobuttons: */ #define DEF_BUTTON_ANCHOR "center" #define DEF_BUTTON_ACTIVE_BG_COLOR BISQUE2 #define DEF_BUTTON_ACTIVE_BG_MONO BLACK #define DEF_BUTTON_ACTIVE_FG_COLOR BLACK #define DEF_BUTTON_ACTIVE_FG_MONO WHITE #define DEF_BUTTON_BG_COLOR BISQUE1 #define DEF_BUTTON_BG_MONO WHITE #define DEF_BUTTON_BITMAP ((char *) NULL) #define DEF_BUTTON_BORDER_WIDTH "2" #define DEF_BUTTON_CURSOR ((char *) NULL) #define DEF_BUTTON_COMMAND ((char *) NULL) #define DEF_BUTTON_DISABLED_FG_COLOR GRAY #define DEF_BUTTON_DISABLED_FG_MONO ((char *) NULL) #define DEF_BUTTON_FONT "-Adobe-Helvetica-Bold-R-Normal-*-120-*" #define DEF_BUTTON_FG BLACK #define DEF_BUTTON_HEIGHT "0" #define DEF_BUTTON_OFF_VALUE "0" #define DEF_BUTTON_ON_VALUE "1" #define DEF_BUTTON_PADX "1" #define DEF_BUTTON_PADY "1" #define DEF_BUTTON_RELIEF "raised" #define DEF_LABEL_RELIEF "flat" #define DEF_BUTTON_SELECTOR_COLOR MAROON #define DEF_BUTTON_SELECTOR_MONO BLACK #define DEF_BUTTON_STATE "normal" #define DEF_BUTTON_TEXT " " #define DEF_BUTTON_TEXT_VARIABLE ((char *) NULL) #define DEF_BUTTON_VALUE ((char *) NULL) #define DEF_BUTTON_WIDTH "0" #define DEF_RADIOBUTTON_VARIABLE "selectedButton" #define DEF_CHECKBUTTON_VARIABLE ((char *) NULL) /* * Defaults for canvases: */ #define DEF_CANVAS_BG_COLOR BISQUE1 #define DEF_CANVAS_BG_MONO WHITE #define DEF_CANVAS_BORDER_WIDTH "2" #define DEF_CANVAS_CLOSE_ENOUGH "1" #define DEF_CANVAS_CONFINE "1" #define DEF_CANVAS_CURSOR ((char *) NULL) #define DEF_CANVAS_CURSOR_BG BLACK #define DEF_CANVAS_CURSOR_BD_COLOR "0" #define DEF_CANVAS_CURSOR_BD_MONO "0" #define DEF_CANVAS_CURSOR_OFF_TIME "300" #define DEF_CANVAS_CURSOR_ON_TIME "600" #define DEF_CANVAS_CURSOR_WIDTH "2" #define DEF_CANVAS_HEIGHT "7c" #define DEF_CANVAS_RELIEF "flat" #define DEF_CANVAS_SCROLL_INCREMENT "10" #define DEF_CANVAS_SCROLL_REGION ((char *) NULL) #define DEF_CANVAS_SELECT_COLOR LIGHTBLUE2 #define DEF_CANVAS_SELECT_MONO BLACK #define DEF_CANVAS_SELECT_BD_COLOR "1" #define DEF_CANVAS_SELECT_BD_MONO "0" #define DEF_CANVAS_SELECT_FG_COLOR BLACK #define DEF_CANVAS_SELECT_FG_MONO WHITE #define DEF_CANVAS_WIDTH "10c" #define DEF_CANVAS_X_SCROLL_CMD ((char *) NULL) #define DEF_CANVAS_Y_SCROLL_CMD ((char *) NULL) /* * Defaults for entries: */ #define DEF_ENTRY_BG_COLOR BISQUE1 #define DEF_ENTRY_BG_MONO WHITE #define DEF_ENTRY_BORDER_WIDTH "2" #define DEF_ENTRY_CURSOR "xterm" #define DEF_ENTRY_CURSOR_BG BLACK #define DEF_ENTRY_CURSOR_BD_COLOR "0" #define DEF_ENTRY_CURSOR_BD_MONO "0" #define DEF_ENTRY_CURSOR_OFF_TIME "300" #define DEF_ENTRY_CURSOR_ON_TIME "600" #define DEF_ENTRY_CURSOR_WIDTH "2" #define DEF_ENTRY_EXPORT_SELECTION "yes" #define DEF_ENTRY_FONT "-Adobe-Helvetica-Medium-R-Normal-*-120-*" #define DEF_ENTRY_FG BLACK #define DEF_ENTRY_RELIEF "flat" #define DEF_ENTRY_SCROLL_COMMAND ((char *) NULL) #define DEF_ENTRY_SELECT_COLOR LIGHTBLUE2 #define DEF_ENTRY_SELECT_MONO BLACK #define DEF_ENTRY_SELECT_BD_COLOR "1" #define DEF_ENTRY_SELECT_BD_MONO "0" #define DEF_ENTRY_SELECT_FG_COLOR BLACK #define DEF_ENTRY_SELECT_FG_MONO WHITE #define DEF_ENTRY_STATE "normal" #define DEF_ENTRY_TEXT_VARIABLE ((char *) NULL) #define DEF_ENTRY_WIDTH "20" /* * Defaults for frames: */ #define DEF_FRAME_BG_COLOR BISQUE1 #define DEF_FRAME_BG_MONO WHITE #define DEF_FRAME_BORDER_WIDTH "0" #define DEF_FRAME_CURSOR ((char *) NULL) #define DEF_FRAME_GEOMETRY ((char *) NULL) #define DEF_FRAME_HEIGHT "0" #define DEF_FRAME_RELIEF "flat" #define DEF_FRAME_WIDTH "0" /* * Defaults for listboxes: */ #define DEF_LISTBOX_BG_COLOR BISQUE1 #define DEF_LISTBOX_BG_MONO WHITE #define DEF_LISTBOX_BORDER_WIDTH "2" #define DEF_LISTBOX_CURSOR ((char *) NULL) #define DEF_LISTBOX_EXPORT_SELECTION "yes" #define DEF_LISTBOX_FONT "-Adobe-Helvetica-Bold-R-Normal-*-120-*" #define DEF_LISTBOX_FG BLACK #define DEF_LISTBOX_GEOMETRY "20x10" #define DEF_LISTBOX_RELIEF "flat" #define DEF_LISTBOX_SCROLL_COMMAND ((char *) NULL) #define DEF_LISTBOX_SELECT_COLOR LIGHTBLUE2 #define DEF_LISTBOX_SELECT_MONO BLACK #define DEF_LISTBOX_SELECT_BD "1" #define DEF_LISTBOX_SELECT_FG_COLOR BLACK #define DEF_LISTBOX_SELECT_FG_MONO WHITE /* * Defaults for individual entries of menus: */ #define DEF_MENU_ENTRY_ACTIVE_BG ((char *) NULL) #define DEF_MENU_ENTRY_ACCELERATOR ((char *) NULL) #define DEF_MENU_ENTRY_BG ((char *) NULL) #define DEF_MENU_ENTRY_BITMAP ((char *) NULL) #define DEF_MENU_ENTRY_COMMAND ((char *) NULL) #define DEF_MENU_ENTRY_FONT ((char *) NULL) #define DEF_MENU_ENTRY_LABEL "" #define DEF_MENU_ENTRY_MENU ((char *) NULL) #define DEF_MENU_ENTRY_OFF_VALUE "0" #define DEF_MENU_ENTRY_ON_VALUE "1" #define DEF_MENU_ENTRY_VALUE ((char *) NULL) #define DEF_MENU_ENTRY_CHECK_VARIABLE ((char *) NULL) #define DEF_MENU_ENTRY_RADIO_VARIABLE "selectedButton" #define DEF_MENU_ENTRY_STATE "normal" #define DEF_MENU_ENTRY_UNDERLINE "-1" /* * Defaults for menus overall: */ #define DEF_MENU_ACTIVE_BG_COLOR BISQUE2 #define DEF_MENU_ACTIVE_BG_MONO BLACK #define DEF_MENU_ACTIVE_BORDER_WIDTH "1" #define DEF_MENU_ACTIVE_FG_COLOR BLACK #define DEF_MENU_ACTIVE_FG_MONO WHITE #define DEF_MENU_BG_COLOR BISQUE1 #define DEF_MENU_BG_MONO WHITE #define DEF_MENU_BORDER_WIDTH "2" #define DEF_MENU_CURSOR "arrow" #define DEF_MENU_DISABLED_FG_COLOR GRAY #define DEF_MENU_DISABLED_FG_MONO ((char *) NULL) #define DEF_MENU_FONT "-Adobe-Helvetica-Bold-R-Normal-*-120-*" #define DEF_MENU_FG BLACK #define DEF_MENU_SELECTOR_COLOR MAROON #define DEF_MENU_SELECTOR_MONO BLACK /* * Defaults for menubuttons: */ #define DEF_MENUBUTTON_ANCHOR "center" #define DEF_MENUBUTTON_ACTIVE_BG_COLOR BISQUE2 #define DEF_MENUBUTTON_ACTIVE_BG_MONO BLACK #define DEF_MENUBUTTON_ACTIVE_FG_COLOR BLACK #define DEF_MENUBUTTON_ACTIVE_FG_MONO WHITE #define DEF_MENUBUTTON_BG_COLOR BISQUE1 #define DEF_MENUBUTTON_BG_MONO WHITE #define DEF_MENUBUTTON_BITMAP ((char *) NULL) #define DEF_MENUBUTTON_BORDER_WIDTH "2" #define DEF_MENUBUTTON_CURSOR ((char *) NULL) #define DEF_MENUBUTTON_DISABLED_FG_COLOR GRAY #define DEF_MENUBUTTON_DISABLED_FG_MONO ((char *) NULL) #define DEF_MENUBUTTON_FONT "-Adobe-Helvetica-Bold-R-Normal-*-120-*" #define DEF_MENUBUTTON_FG BLACK #define DEF_MENUBUTTON_HEIGHT "0" #define DEF_MENUBUTTON_MENU ((char *) NULL) #define DEF_MENUBUTTON_PADX "2" #define DEF_MENUBUTTON_PADY "2" #define DEF_MENUBUTTON_RELIEF "flat" #define DEF_MENUBUTTON_STATE "normal" #define DEF_MENUBUTTON_TEXT " " #define DEF_MENUBUTTON_TEXT_VARIABLE ((char *) NULL) #define DEF_MENUBUTTON_VARIABLE "postedMenu" #define DEF_MENUBUTTON_UNDERLINE "-1" #define DEF_MENUBUTTON_WIDTH "0" /* * Defaults for messages: */ #define DEF_MESSAGE_ANCHOR "center" #define DEF_MESSAGE_ASPECT "150" #define DEF_MESSAGE_BG_COLOR BISQUE1 #define DEF_MESSAGE_BG_MONO WHITE #define DEF_MESSAGE_BORDER_WIDTH "2" #define DEF_MESSAGE_CURSOR ((char *) NULL) #define DEF_MESSAGE_FONT "-Adobe-Helvetica-Bold-R-Normal-*-120-*" #define DEF_MESSAGE_FG BLACK #define DEF_MESSAGE_JUSTIFY ((char *) NULL) #define DEF_MESSAGE_PADX "-1" #define DEF_MESSAGE_PADY "-1" #define DEF_MESSAGE_RELIEF "flat" #define DEF_MESSAGE_TEXT " " #define DEF_MESSAGE_TEXT_VARIABLE ((char *) NULL) #define DEF_MESSAGE_WIDTH "0" /* * Defaults for scales: */ #define DEF_SCALE_ACTIVE_FG_COLOR LIGHTPINK1 #define DEF_SCALE_ACTIVE_FG_MONO WHITE #define DEF_SCALE_BG_COLOR BISQUE2 #define DEF_SCALE_BG_MONO WHITE #define DEF_SCALE_BORDER_WIDTH "2" #define DEF_SCALE_CURSOR ((char *) NULL) #define DEF_SCALE_FONT "-Adobe-Helvetica-Bold-R-Normal-*-120-*" #define DEF_SCALE_FG_COLOR BLACK #define DEF_SCALE_FG_MONO BLACK #define DEF_SCALE_FROM "0" #define DEF_SCALE_LABEL ((char *) NULL) #define DEF_SCALE_LENGTH "100" #define DEF_SCALE_ORIENT "vertical" #define DEF_SCALE_RELIEF "flat" #define DEF_SCALE_SHOW_VALUE "1" #define DEF_SCALE_SLIDER_FG_COLOR BISQUE3 #define DEF_SCALE_SLIDER_FG_MONO WHITE #define DEF_SCALE_SLIDER_LENGTH "30" #define DEF_SCALE_STATE "normal" #define DEF_SCALE_TICK_INTERVAL "0" #define DEF_SCALE_TO "100" #define DEF_SCALE_WIDTH "15" /* * Defaults for scrollbars: */ #define DEF_SCROLLBAR_ACTIVE_FG_COLOR LIGHTPINK1 #define DEF_SCROLLBAR_ACTIVE_FG_MONO BLACK #define DEF_SCROLLBAR_BG_COLOR BISQUE3 #define DEF_SCROLLBAR_BG_MONO WHITE #define DEF_SCROLLBAR_BORDER_WIDTH "2" #define DEF_SCROLLBAR_COMMAND ((char *) NULL) #define DEF_SCROLLBAR_CURSOR ((char *) NULL) #define DEF_SCROLLBAR_FG_COLOR BISQUE1 #define DEF_SCROLLBAR_FG_MONO WHITE #define DEF_SCROLLBAR_ORIENT "vertical" #define DEF_SCROLLBAR_RELIEF "flat" #define DEF_SCROLLBAR_REPEAT_DELAY "300" #define DEF_SCROLLBAR_REPEAT_INTERVAL "100" #define DEF_SCROLLBAR_WIDTH "15" /* * Defaults for texts: */ #define DEF_TEXT_BG_COLOR BISQUE1 #define DEF_TEXT_BG_MONO WHITE #define DEF_TEXT_BORDER_WIDTH "0" #define DEF_TEXT_CURSOR "xterm" #define DEF_TEXT_FG BLACK #define DEF_TEXT_EXPORT_SELECTION "yes" #define DEF_TEXT_FONT "*-Courier-Medium-R-Normal-*-120-*" #define DEF_TEXT_FOREGROUND BLACK #define DEF_TEXT_HEIGHT "24" #define DEF_TEXT_INSERT_BG BLACK #define DEF_TEXT_INSERT_BD_COLOR "0" #define DEF_TEXT_INSERT_BD_MONO "0" #define DEF_TEXT_INSERT_OFF_TIME "300" #define DEF_TEXT_INSERT_ON_TIME "600" #define DEF_TEXT_INSERT_WIDTH "2" #define DEF_TEXT_PADX "1" #define DEF_TEXT_PADY "1" #define DEF_TEXT_RELIEF "flat" #define DEF_TEXT_SELECT_COLOR LIGHTBLUE2 #define DEF_TEXT_SELECT_MONO BLACK #define DEF_TEXT_SELECT_BD_COLOR "1" #define DEF_TEXT_SELECT_BD_MONO "0" #define DEF_TEXT_SELECT_FG_COLOR BLACK #define DEF_TEXT_SELECT_FG_MONO WHITE #define DEF_TEXT_SET_GRID "false" #define DEF_TEXT_STATE "normal" #define DEF_TEXT_WIDTH "80" #define DEF_TEXT_WRAP "char" #define DEF_TEXT_YSCROLL_COMMAND ((char *) NULL) #endif /* _DEFAULT */ micropolis-activity/src/tk/tkgeo.c0000664000076400007640000001116410724145723017520 0ustar simcitysimcity/* * tkGeometry.c -- * * This file contains code generic Tk code for geometry * management, plus code to manage the geometry of top-level * windows (by reflecting information up to the window * manager). * * Copyright 1990 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkGeometry.c,v 1.18 92/05/13 16:51:17 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tkconfig.h" #include "tkint.h" /* *-------------------------------------------------------------- * * Tk_ManageGeometry -- * * Arrange for a particular procedure to handle geometry * requests for a given window. * * Results: * None. * * Side effects: * Proc becomes the new geometry manager for tkwin, replacing * any previous geometry manager. In the future, whenever * Tk_GeometryRequest is called for tkwin, proc will be * invoked to handle the request. Proc should have the * following structure: * * void * proc(clientData, tkwin) * { * } * * The clientData argument will be the same as the clientData * argument to this procedure, and the tkwin arguments will * be the same as the corresponding argument to * Tk_GeometryRequest. Information about the desired * geometry for tkwin is avilable to proc using macros such * as Tk_ReqWidth. Proc should do the best it can to meet * the request within the constraints of its geometry-management * algorithm, but it is not obligated to meet the request. * *-------------------------------------------------------------- */ void Tk_ManageGeometry(tkwin, proc, clientData) Tk_Window tkwin; /* Window whose geometry is to * be managed by proc. */ Tk_GeometryProc *proc; /* Procedure to manage geometry. * NULL means make tkwin unmanaged. */ ClientData clientData; /* Arbitrary one-word argument to * pass to proc. */ { register TkWindow *winPtr = (TkWindow *) tkwin; winPtr->geomProc = proc; winPtr->geomData = clientData; } /* *-------------------------------------------------------------- * * Tk_GeometryRequest -- * * This procedure is invoked by widget code to indicate * its preferences about the size of a window it manages. * In general, widget code should call this procedure * rather than Tk_ResizeWindow. * * Results: * None. * * Side effects: * The geometry manager for tkwin (if any) is invoked to * handle the request. If possible, it will reconfigure * tkwin and/or other windows to satisfy the request. The * caller gets no indication of success or failure, but it * will get X events if the window size was actually * changed. * *-------------------------------------------------------------- */ void Tk_GeometryRequest(tkwin, reqWidth, reqHeight) Tk_Window tkwin; /* Window that geometry information * pertains to. */ int reqWidth, reqHeight; /* Minimum desired dimensions for * window, in pixels. */ { register TkWindow *winPtr = (TkWindow *) tkwin; if ((reqWidth == winPtr->reqWidth) && (reqHeight == winPtr->reqHeight)) { return; } winPtr->reqWidth = reqWidth; winPtr->reqHeight = reqHeight; if (winPtr->geomProc != NULL) { (*winPtr->geomProc)(winPtr->geomData, tkwin); } } /* *---------------------------------------------------------------------- * * Tk_SetInternalBorder -- * * Notify relevant geometry managers that a window has an internal * border of a given width and that child windows should not be * placed on that border. * * Results: * None. * * Side effects: * The border width is recorded for the window, and all geometry * managers of all children are notified so that can re-layout, if * necessary. * *---------------------------------------------------------------------- */ void Tk_SetInternalBorder(tkwin, width) Tk_Window tkwin; /* Window that will have internal border. */ int width; /* Width of internal border, in pixels. */ { register TkWindow *winPtr = (TkWindow *) tkwin; if (width == winPtr->internalBorderWidth) { return; } if (width < 0) { width = 0; } winPtr->internalBorderWidth = width; for (winPtr = winPtr->childList; winPtr != NULL; winPtr = winPtr->nextPtr) { if (winPtr->geomProc != NULL) { (*winPtr->geomProc)(winPtr->geomData, (Tk_Window) winPtr); } } } micropolis-activity/src/tk/tklist.c0000664000076400007640000015005010724145723017717 0ustar simcitysimcity/* * tkListbox.c -- * * This module implements listbox widgets for the Tk * toolkit. A listbox displays a collection of strings, * one per line, and provides scrolling and selection. * * Copyright 1990-1992 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkListbox.c,v 1.56 92/05/13 09:05:20 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tkconfig.h" #include "default.h" #include "tkint.h" /* * One record of the following type is kept for each element * associated with a listbox widget: */ typedef struct Element { int textLength; /* # non-NULL characters in text. */ int lBearing; /* Distance from first character's * origin to left edge of character. */ int pixelWidth; /* Total width of element in pixels (including * left bearing and right bearing). */ struct Element *nextPtr; /* Next in list of all elements of this * listbox, or NULL for last element. */ char text[4]; /* Characters of this element, NULL- * terminated. The actual space allocated * here will be as large as needed (> 4, * most likely). Must be the last field * of the record. */ } Element; #define ElementSize(stringLength) \ ((unsigned) (sizeof(Element) - 3 + stringLength)) /* * A data structure of the following type is kept for each listbox * widget managed by this file: */ typedef struct { Tk_Window tkwin; /* Window that embodies the listbox. NULL * means that the window has been destroyed * but the data structures haven't yet been * cleaned up.*/ Tcl_Interp *interp; /* Interpreter associated with listbox. */ int numElements; /* Total number of elements in this listbox. */ Element *elementPtr; /* First in list of elements (NULL if no * elements. */ /* * Information used when displaying widget: */ Tk_3DBorder normalBorder; /* Used for drawing border around whole * window, plus used for background. */ int borderWidth; /* Width of 3-D border around window. */ int relief; /* 3-D effect: TK_RELIEF_RAISED, etc. */ XFontStruct *fontPtr; /* Information about text font, or NULL. */ XColor *fgColorPtr; /* Text color in normal mode. */ GC textGC; /* For drawing normal text. */ Tk_3DBorder selBorder; /* Borders and backgrounds for selected * elements. */ int selBorderWidth; /* Width of border around selection. */ XColor *selFgColorPtr; /* Foreground color for selected elements. */ GC selTextGC; /* For drawing selected text. */ char *geometry; /* Desired geometry for window. Malloc'ed. */ int lineHeight; /* Number of pixels allocated for each line * in display. */ int topIndex; /* Index of top-most element visible in * window. */ int numLines; /* Number of lines (elements) that fit * in window at one time. */ /* * Information to support horizontal scrolling: */ int maxWidth; /* Width (in pixels) of widest string in * listbox. */ int xScrollUnit; /* Number of pixels in one "unit" for * horizontal scrolling (window scrolls * horizontally in increments of this size). * This is an average character size. */ int xOffset; /* The left edge of each string in the * listbox is offset to the left by this * many pixels (0 means no offset, positive * means there is an offset). */ /* * Information about what's selected, if any. */ int selectFirst; /* Index of first selected element (-1 means * nothing selected. */ int selectLast; /* Index of last selected element. */ int selectAnchor; /* Fixed end of selection (i.e. element * at which selection was started.) */ int exportSelection; /* Non-zero means tie internal listbox * to X selection. */ /* * Information for scanning: */ int scanMarkX; /* X-position at which scan started (e.g. * button was pressed here). */ int scanMarkY; /* Y-position at which scan started (e.g. * button was pressed here). */ int scanMarkXOffset; /* Value of "xOffset" field when scan * started. */ int scanMarkYIndex; /* Index of line that was at top of window * when scan started. */ /* * Miscellaneous information: */ Cursor cursor; /* Current cursor for window, or None. */ char *yScrollCmd; /* Command prefix for communicating with * vertical scrollbar. NULL means no command * to issue. Malloc'ed. */ char *xScrollCmd; /* Command prefix for communicating with * horizontal scrollbar. NULL means no command * to issue. Malloc'ed. */ int flags; /* Various flag bits: see below for * definitions. */ } Listbox; /* * Flag bits for buttons: * * REDRAW_PENDING: Non-zero means a DoWhenIdle handler * has already been queued to redraw * this window. * UPDATE_V_SCROLLBAR: Non-zero means vertical scrollbar needs * to be updated. * UPDATE_H_SCROLLBAR: Non-zero means horizontal scrollbar needs * to be updated. */ #define REDRAW_PENDING 1 #define UPDATE_V_SCROLLBAR 2 #define UPDATE_H_SCROLLBAR 4 /* * Information used for argv parsing: */ static Tk_ConfigSpec configSpecs[] = { {TK_CONFIG_BORDER, "-background", "background", "Background", DEF_LISTBOX_BG_COLOR, Tk_Offset(Listbox, normalBorder), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-background", "background", "Background", DEF_LISTBOX_BG_MONO, Tk_Offset(Listbox, normalBorder), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_SYNONYM, "-bd", "borderWidth", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_SYNONYM, "-bg", "background", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", DEF_LISTBOX_BORDER_WIDTH, Tk_Offset(Listbox, borderWidth), 0}, {TK_CONFIG_ACTIVE_CURSOR, "-cursor", "cursor", "Cursor", DEF_LISTBOX_CURSOR, Tk_Offset(Listbox, cursor), TK_CONFIG_NULL_OK}, {TK_CONFIG_BOOLEAN, "-exportselection", "exportSelection", "ExportSelection", DEF_LISTBOX_EXPORT_SELECTION, Tk_Offset(Listbox, exportSelection), 0}, {TK_CONFIG_SYNONYM, "-fg", "foreground", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_FONT, "-font", "font", "Font", DEF_LISTBOX_FONT, Tk_Offset(Listbox, fontPtr), 0}, {TK_CONFIG_COLOR, "-foreground", "foreground", "Foreground", DEF_LISTBOX_FG, Tk_Offset(Listbox, fgColorPtr), 0}, {TK_CONFIG_STRING, "-geometry", "geometry", "Geometry", DEF_LISTBOX_GEOMETRY, Tk_Offset(Listbox, geometry), 0}, {TK_CONFIG_RELIEF, "-relief", "relief", "Relief", DEF_LISTBOX_RELIEF, Tk_Offset(Listbox, relief), 0}, {TK_CONFIG_BORDER, "-selectbackground", "selectBackground", "Foreground", DEF_LISTBOX_SELECT_COLOR, Tk_Offset(Listbox, selBorder), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-selectbackground", "selectBackground", "Foreground", DEF_LISTBOX_SELECT_MONO, Tk_Offset(Listbox, selBorder), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_PIXELS, "-selectborderwidth", "selectBorderWidth", "BorderWidth", DEF_LISTBOX_SELECT_BD, Tk_Offset(Listbox, selBorderWidth), 0}, {TK_CONFIG_COLOR, "-selectforeground", "selectForeground", "Background", DEF_LISTBOX_SELECT_FG_COLOR, Tk_Offset(Listbox, selFgColorPtr), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_COLOR, "-selectforeground", "selectForeground", "Background", DEF_LISTBOX_SELECT_FG_MONO, Tk_Offset(Listbox, selFgColorPtr), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_STRING, "-xscrollcommand", "xScrollCommand", "ScrollCommand", DEF_LISTBOX_SCROLL_COMMAND, Tk_Offset(Listbox, xScrollCmd), 0}, {TK_CONFIG_STRING, "-yscrollcommand", "yScrollCommand", "ScrollCommand", DEF_LISTBOX_SCROLL_COMMAND, Tk_Offset(Listbox, yScrollCmd), 0}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; /* * Forward declarations for procedures defined later in this file: */ static void ChangeListboxOffset _ANSI_ARGS_((Listbox *listPtr, int offset)); static void ChangeListboxView _ANSI_ARGS_((Listbox *listPtr, int index)); static int ConfigureListbox _ANSI_ARGS_((Tcl_Interp *interp, Listbox *listPtr, int argc, char **argv, int flags)); static void DeleteEls _ANSI_ARGS_((Listbox *listPtr, int first, int last)); static void DestroyListbox _ANSI_ARGS_((ClientData clientData)); static void DisplayListbox _ANSI_ARGS_((ClientData clientData)); static int GetListboxIndex _ANSI_ARGS_((Tcl_Interp *interp, Listbox *listPtr, char *string, int *indexPtr)); static void InsertEls _ANSI_ARGS_((Listbox *listPtr, int index, int argc, char **argv)); static void ListboxComputeWidths _ANSI_ARGS_((Listbox *listPtr, int fontChanged)); static void ListboxEventProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); static int ListboxFetchSelection _ANSI_ARGS_(( ClientData clientData, int offset, char *buffer, int maxBytes)); static void ListboxLostSelection _ANSI_ARGS_(( ClientData clientData)); static void ListboxRedrawRange _ANSI_ARGS_((Listbox *listPtr, int first, int last)); static void ListboxScanTo _ANSI_ARGS_((Listbox *listPtr, int x, int y)); static void ListboxSelectFrom _ANSI_ARGS_((Listbox *listPtr, int index)); static void ListboxSelectTo _ANSI_ARGS_((Listbox *listPtr, int index)); static void ListboxUpdateHScrollbar _ANSI_ARGS_((Listbox *listPtr)); static void ListboxUpdateVScrollbar _ANSI_ARGS_((Listbox *listPtr)); static int ListboxWidgetCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); static int NearestListboxElement _ANSI_ARGS_((Listbox *listPtr, int y)); /* *-------------------------------------------------------------- * * Tk_ListboxCmd -- * * This procedure is invoked to process the "listbox" Tcl * command. See the user documentation for details on what * it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ int Tk_ListboxCmd(clientData, interp, argc, argv) ClientData clientData; /* Main window associated with * interpreter. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { register Listbox *listPtr; Tk_Window new; Tk_Window tkwin = (Tk_Window) clientData; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " pathName ?options?\"", (char *) NULL); return TCL_ERROR; } new = Tk_CreateWindowFromPath(interp, tkwin, argv[1], (char *) NULL); if (new == NULL) { return TCL_ERROR; } /* * Initialize the fields of the structure that won't be initialized * by ConfigureListbox, or that ConfigureListbox requires to be * initialized already (e.g. resource pointers). */ listPtr = (Listbox *) ckalloc(sizeof(Listbox)); listPtr->tkwin = new; listPtr->interp = interp; listPtr->numElements = 0; listPtr->elementPtr = NULL; listPtr->normalBorder = NULL; listPtr->fontPtr = NULL; listPtr->fgColorPtr = NULL; listPtr->textGC = None; listPtr->selBorder = NULL; listPtr->selFgColorPtr = NULL; listPtr->selTextGC = NULL; listPtr->geometry = NULL; listPtr->topIndex = 0; listPtr->xOffset = 0; listPtr->selectFirst = -1; listPtr->selectLast = -1; listPtr->exportSelection = 1; listPtr->cursor = None; listPtr->yScrollCmd = NULL; listPtr->xScrollCmd = NULL; listPtr->flags = 0; Tk_SetClass(listPtr->tkwin, "Listbox"); Tk_CreateEventHandler(listPtr->tkwin, ExposureMask|StructureNotifyMask, ListboxEventProc, (ClientData) listPtr); Tk_CreateSelHandler(listPtr->tkwin, XA_STRING, ListboxFetchSelection, (ClientData) listPtr, XA_STRING); Tcl_CreateCommand(interp, Tk_PathName(listPtr->tkwin), ListboxWidgetCmd, (ClientData) listPtr, (void (*)()) NULL); if (ConfigureListbox(interp, listPtr, argc-2, argv+2, 0) != TCL_OK) { goto error; } interp->result = Tk_PathName(listPtr->tkwin); return TCL_OK; error: Tk_DestroyWindow(listPtr->tkwin); return TCL_ERROR; } /* *-------------------------------------------------------------- * * ListboxWidgetCmd -- * * This procedure is invoked to process the Tcl command * that corresponds to a widget managed by this module. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ static int ListboxWidgetCmd(clientData, interp, argc, argv) ClientData clientData; /* Information about listbox widget. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { register Listbox *listPtr = (Listbox *) clientData; int result = TCL_OK; int length; char c; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " option ?arg arg ...?\"", (char *) NULL); return TCL_ERROR; } Tk_Preserve((ClientData) listPtr); c = argv[1][0]; length = strlen(argv[1]); if ((c == 'c') && (strncmp(argv[1], "configure", length) == 0) && (length >= 2)) { if (argc == 2) { result = Tk_ConfigureInfo(interp, listPtr->tkwin, configSpecs, (char *) listPtr, (char *) NULL, 0); } else if (argc == 3) { result = Tk_ConfigureInfo(interp, listPtr->tkwin, configSpecs, (char *) listPtr, argv[2], 0); } else { result = ConfigureListbox(interp, listPtr, argc-2, argv+2, TK_CONFIG_ARGV_ONLY); } } else if ((c == 'c') && (strncmp(argv[1], "curselection", length) == 0) && (length >= 2)) { int i; char index[20]; if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " curselection\"", (char *) NULL); goto error; } if (listPtr->selectFirst != -1) { for (i = listPtr->selectFirst; i <= listPtr->selectLast; i++) { sprintf(index, "%d", i); Tcl_AppendElement(interp, index, 0); } } } else if ((c == 'd') && (strncmp(argv[1], "delete", length) == 0)) { int first, last; if ((argc < 3) || (argc > 4)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " delete firstIndex ?lastIndex?\"", (char *) NULL); goto error; } if (GetListboxIndex(interp, listPtr, argv[2], &first) != TCL_OK) { goto error; } if (argc == 3) { last = first; } else { if (GetListboxIndex(interp, listPtr, argv[3], &last) != TCL_OK) { goto error; } } DeleteEls(listPtr, first, last); } else if ((c == 'g') && (strncmp(argv[1], "get", length) == 0)) { int index; register Element *elPtr; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " get index\"", (char *) NULL); goto error; } if (GetListboxIndex(interp, listPtr, argv[2], &index) != TCL_OK) { goto error; } if (index < 0) { index = 0; } if (index >= listPtr->numElements) { index = listPtr->numElements-1; } for (elPtr = listPtr->elementPtr; index > 0; index--, elPtr = elPtr->nextPtr) { /* Empty loop body. */ } if (elPtr != NULL) { interp->result = elPtr->text; } } else if ((c == 'i') && (strncmp(argv[1], "insert", length) == 0)) { int index; if (argc < 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " insert index ?element? ?element ...?\"", (char *) NULL); goto error; } if (argc > 3) { if (GetListboxIndex(interp, listPtr, argv[2], &index) != TCL_OK) { goto error; } InsertEls(listPtr, index, argc-3, argv+3); } } else if ((c == 'n') && (strncmp(argv[1], "nearest", length) == 0)) { int index, y; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " nearest y\"", (char *) NULL); goto error; } if (Tcl_GetInt(interp, argv[2], &y) != TCL_OK) { goto error; } index = NearestListboxElement(listPtr, y); sprintf(interp->result, "%d", index); } else if ((c == 's') && (length >= 2) && (strncmp(argv[1], "scan", length) == 0)) { int x, y; if (argc != 5) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " scan mark|dragto x y\"", (char *) NULL); goto error; } if ((Tcl_GetInt(interp, argv[3], &x) != TCL_OK) || (Tcl_GetInt(interp, argv[4], &y) != TCL_OK)) { goto error; } if ((argv[2][0] == 'm') && (strncmp(argv[2], "mark", strlen(argv[2])) == 0)) { listPtr->scanMarkX = x; listPtr->scanMarkY = y; listPtr->scanMarkXOffset = listPtr->xOffset; listPtr->scanMarkYIndex = listPtr->topIndex; } else if ((argv[2][0] == 'd') && (strncmp(argv[2], "dragto", strlen(argv[2])) == 0)) { ListboxScanTo(listPtr, x, y); } else { Tcl_AppendResult(interp, "bad scan option \"", argv[2], "\": must be mark or dragto", (char *) NULL); goto error; } } else if ((c == 's') && (length >= 2) && (strncmp(argv[1], "select", length) == 0)) { int index; if (argc < 3) { Tcl_AppendResult(interp, "too few args: should be \"", argv[0], " select option ?index?\"", (char *) NULL); goto error; } length = strlen(argv[2]); c = argv[2][0]; if ((c == 'c') && (argv[2] != NULL) && (strncmp(argv[2], "clear", length) == 0)) { if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " select clear\"", (char *) NULL); goto error; } if (listPtr->selectFirst != -1) { ListboxRedrawRange(listPtr, listPtr->selectFirst, listPtr->selectLast); listPtr->selectFirst = -1; } goto done; } if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " select option index\"", (char *) NULL); goto error; } if (GetListboxIndex(interp, listPtr, argv[3], &index) != TCL_OK) { goto error; } if ((c == 'a') && (strncmp(argv[2], "adjust", length) == 0)) { if (index < (listPtr->selectFirst + listPtr->selectLast)/2) { listPtr->selectAnchor = listPtr->selectLast; } else { listPtr->selectAnchor = listPtr->selectFirst; } ListboxSelectTo(listPtr, index); } else if ((c == 'f') && (strncmp(argv[2], "from", length) == 0)) { ListboxSelectFrom(listPtr, index); } else if ((c == 't') && (strncmp(argv[2], "to", length) == 0)) { ListboxSelectTo(listPtr, index); } else { Tcl_AppendResult(interp, "bad select option \"", argv[2], "\": must be adjust, clear, from, or to", (char *) NULL); goto error; } } else if ((c == 's') && (length >= 2) && (strncmp(argv[1], "size", length) == 0)) { sprintf(interp->result, "%d", listPtr->numElements); } else if ((c == 'x') && (strncmp(argv[1], "xview", length) == 0)) { int index; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " xview index\"", (char *) NULL); goto error; } if (Tcl_GetInt(interp, argv[2], &index) != TCL_OK) { goto error; } ChangeListboxOffset(listPtr, index*listPtr->xScrollUnit); } else if ((c == 'y') && (strncmp(argv[1], "yview", length) == 0)) { int index; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " yview index\"", (char *) NULL); goto error; } if (GetListboxIndex(interp, listPtr, argv[2], &index) != TCL_OK) { goto error; } ChangeListboxView(listPtr, index); } else { Tcl_AppendResult(interp, "bad option \"", argv[1], "\": must be configure, curselection, delete, get, ", "insert, nearest, scan, select, size, ", "xview, or yview", (char *) NULL); goto error; } done: Tk_Release((ClientData) listPtr); return result; error: Tk_Release((ClientData) listPtr); return TCL_ERROR; } /* *---------------------------------------------------------------------- * * DestroyListbox -- * * This procedure is invoked by Tk_EventuallyFree or Tk_Release * to clean up the internal structure of a listbox at a safe time * (when no-one is using it anymore). * * Results: * None. * * Side effects: * Everything associated with the listbox is freed up. * *---------------------------------------------------------------------- */ static void DestroyListbox(clientData) ClientData clientData; /* Info about listbox widget. */ { register Listbox *listPtr = (Listbox *) clientData; register Element *elPtr, *nextPtr; for (elPtr = listPtr->elementPtr; elPtr != NULL; ) { nextPtr = elPtr->nextPtr; ckfree((char *) elPtr); elPtr = nextPtr; } if (listPtr->normalBorder != NULL) { Tk_Free3DBorder(listPtr->normalBorder); } if (listPtr->fontPtr != NULL) { Tk_FreeFontStruct(listPtr->fontPtr); } if (listPtr->fgColorPtr != NULL) { Tk_FreeColor(listPtr->fgColorPtr); } if (listPtr->textGC != None) { Tk_FreeGC(listPtr->textGC); } if (listPtr->selBorder != NULL) { Tk_Free3DBorder(listPtr->selBorder); } if (listPtr->selFgColorPtr != NULL) { Tk_FreeColor(listPtr->selFgColorPtr); } if (listPtr->selTextGC != None) { Tk_FreeGC(listPtr->selTextGC); } if (listPtr->geometry != NULL) { ckfree(listPtr->geometry); } if (listPtr->cursor != None) { Tk_FreeCursor(listPtr->cursor); } if (listPtr->yScrollCmd != NULL) { ckfree(listPtr->yScrollCmd); } if (listPtr->xScrollCmd != NULL) { ckfree(listPtr->xScrollCmd); } ckfree((char *) listPtr); } /* *---------------------------------------------------------------------- * * ConfigureListbox -- * * This procedure is called to process an argv/argc list, plus * the Tk option database, in order to configure (or reconfigure) * a listbox widget. * * Results: * The return value is a standard Tcl result. If TCL_ERROR is * returned, then interp->result contains an error message. * * Side effects: * Configuration information, such as colors, border width, * etc. get set for listPtr; old resources get freed, * if there were any. * *---------------------------------------------------------------------- */ static int ConfigureListbox(interp, listPtr, argc, argv, flags) Tcl_Interp *interp; /* Used for error reporting. */ register Listbox *listPtr; /* Information about widget; may or may * not already have values for some fields. */ int argc; /* Number of valid entries in argv. */ char **argv; /* Arguments. */ int flags; /* Flags to pass to Tk_ConfigureWidget. */ { XGCValues gcValues; GC new; int width, height, fontHeight, oldExport; oldExport = listPtr->exportSelection; if (Tk_ConfigureWidget(interp, listPtr->tkwin, configSpecs, argc, argv, (char *) listPtr, flags) != TCL_OK) { return TCL_ERROR; } /* * A few options need special processing, such as parsing the * geometry and setting the background from a 3-D border. */ Tk_SetBackgroundFromBorder(listPtr->tkwin, listPtr->normalBorder); gcValues.foreground = listPtr->fgColorPtr->pixel; gcValues.font = listPtr->fontPtr->fid; gcValues.graphics_exposures = False; new = Tk_GetGC(listPtr->tkwin, GCForeground|GCFont|GCGraphicsExposures, &gcValues); if (listPtr->textGC != None) { Tk_FreeGC(listPtr->textGC); } listPtr->textGC = new; gcValues.foreground = listPtr->selFgColorPtr->pixel; gcValues.font = listPtr->fontPtr->fid; new = Tk_GetGC(listPtr->tkwin, GCForeground|GCFont, &gcValues); if (listPtr->selTextGC != None) { Tk_FreeGC(listPtr->selTextGC); } listPtr->selTextGC = new; /* * Claim the selection if we've suddenly started exporting it. */ if (listPtr->exportSelection && (!oldExport) && (listPtr->selectFirst !=-1)) { Tk_OwnSelection(listPtr->tkwin, ListboxLostSelection, (ClientData) listPtr); } /* * Register the desired geometry for the window, and arrange for * the window to be redisplayed. */ if ((sscanf(listPtr->geometry, "%dx%d", &width, &height) != 2) || (width <= 0) || (height <= 0)) { Tcl_AppendResult(interp, "bad geometry \"", listPtr->geometry, "\"", (char *) NULL); return TCL_ERROR; } fontHeight = listPtr->fontPtr->ascent + listPtr->fontPtr->descent; listPtr->lineHeight = fontHeight + 1 + 2*listPtr->selBorderWidth; listPtr->numLines = (Tk_Height(listPtr->tkwin) - 2*listPtr->borderWidth) / listPtr->lineHeight; if (listPtr->numLines < 0) { listPtr->numLines = 0; } ListboxComputeWidths(listPtr, 1); width = (width+1)*listPtr->xScrollUnit + 2*listPtr->borderWidth + 2*listPtr->selBorderWidth; height = height*listPtr->lineHeight + 2*listPtr->borderWidth; Tk_GeometryRequest(listPtr->tkwin, width, height); Tk_SetInternalBorder(listPtr->tkwin, listPtr->borderWidth); listPtr->flags |= UPDATE_V_SCROLLBAR|UPDATE_H_SCROLLBAR; ListboxRedrawRange(listPtr, 0, listPtr->numElements-1); return TCL_OK; } /* *-------------------------------------------------------------- * * DisplayListbox -- * * This procedure redraws the contents of a listbox window. * * Results: * None. * * Side effects: * Information appears on the screen. * *-------------------------------------------------------------- */ static void DisplayListbox(clientData) ClientData clientData; /* Information about window. */ { register Listbox *listPtr = (Listbox *) clientData; register Tk_Window tkwin = listPtr->tkwin; register Element *elPtr; GC gc; int i, limit, x, y, margin; Pixmap pixmap; listPtr->flags &= ~REDRAW_PENDING; if (listPtr->flags & UPDATE_V_SCROLLBAR) { ListboxUpdateVScrollbar(listPtr); } if (listPtr->flags & UPDATE_H_SCROLLBAR) { ListboxUpdateHScrollbar(listPtr); } listPtr->flags &= ~(REDRAW_PENDING|UPDATE_V_SCROLLBAR|UPDATE_H_SCROLLBAR); if ((listPtr->tkwin == NULL) || !Tk_IsMapped(tkwin)) { return; } /* * Redrawing is done in a temporary pixmap that is allocated * here and freed at the end of the procedure. All drawing is * done to the pixmap, and the pixmap is copied to the screen * at the end of the procedure. This provides the smoothest * possible visual effects (no flashing on the screen). */ pixmap = XCreatePixmap(Tk_Display(tkwin), Tk_WindowId(tkwin), Tk_Width(tkwin), Tk_Height(tkwin), Tk_DefaultDepth(Tk_Screen(tkwin))); Tk_Fill3DRectangle(Tk_Display(tkwin), pixmap, listPtr->normalBorder, 0, 0, Tk_Width(tkwin), Tk_Height(tkwin), listPtr->borderWidth, listPtr->relief); /* * Iterate through all of the elements of the listbox, displaying each * in turn. Selected elements use a different GC and have a raised * background. */ limit = listPtr->topIndex + listPtr->numLines - 1; if (limit >= listPtr->numElements) { limit = listPtr->numElements-1; } margin = listPtr->selBorderWidth + listPtr->xScrollUnit/2; for (elPtr = listPtr->elementPtr, i = 0; (elPtr != NULL) && (i <= limit); elPtr = elPtr->nextPtr, i++) { if (i < listPtr->topIndex) { continue; } x = listPtr->borderWidth; y = ((i - listPtr->topIndex) * listPtr->lineHeight) + listPtr->borderWidth; gc = listPtr->textGC; if ((listPtr->selectFirst >= 0) && (i >= listPtr->selectFirst) && (i <= listPtr->selectLast)) { gc = listPtr->selTextGC; Tk_Fill3DRectangle(Tk_Display(tkwin), pixmap, listPtr->selBorder, x, y, Tk_Width(tkwin) - 2*listPtr->borderWidth, listPtr->lineHeight, listPtr->selBorderWidth, TK_RELIEF_RAISED); } y += listPtr->fontPtr->ascent + listPtr->selBorderWidth; x += margin - elPtr->lBearing - listPtr->xOffset; XDrawString(Tk_Display(tkwin), pixmap, gc, x, y, elPtr->text, elPtr->textLength); } /* * Redraw the border for the listbox to make sure that it's on top * of any of the text of the listbox entries. */ Tk_Draw3DRectangle(Tk_Display(tkwin), pixmap, listPtr->normalBorder, 0, 0, Tk_Width(tkwin), Tk_Height(tkwin), listPtr->borderWidth, listPtr->relief); XCopyArea(Tk_Display(tkwin), pixmap, Tk_WindowId(tkwin), listPtr->textGC, 0, 0, Tk_Width(tkwin), Tk_Height(tkwin), 0, 0); XFreePixmap(Tk_Display(tkwin), pixmap); } /* *---------------------------------------------------------------------- * * InsertEls -- * * Add new elements to a listbox widget. * * Results: * None. * * Side effects: * New information gets added to listPtr; it will be redisplayed * soon, but not immediately. * *---------------------------------------------------------------------- */ static void InsertEls(listPtr, index, argc, argv) register Listbox *listPtr; /* Listbox that is to get the new * elements. */ int index; /* Add the new elements before this * element. */ int argc; /* Number of new elements to add. */ char **argv; /* New elements (one per entry). */ { register Element *prevPtr, *newPtr; int length, dummy, i, oldMaxWidth; XCharStruct bbox; /* * Find the element before which the new ones will be inserted. */ if (index <= 0) { index = 0; } if (index > listPtr->numElements) { index = listPtr->numElements; } if (index == 0) { prevPtr = NULL; } else { for (prevPtr = listPtr->elementPtr, i = index - 1; i > 0; i--) { prevPtr = prevPtr->nextPtr; } } /* * For each new element, create a record, initialize it, and link * it into the list of elements. */ oldMaxWidth = listPtr->maxWidth; for (i = argc ; i > 0; i--, argv++, prevPtr = newPtr) { length = strlen(*argv); newPtr = (Element *) ckalloc(ElementSize(length)); newPtr->textLength = length; strcpy(newPtr->text, *argv); XTextExtents(listPtr->fontPtr, newPtr->text, newPtr->textLength, &dummy, &dummy, &dummy, &bbox); newPtr->lBearing = bbox.lbearing; newPtr->pixelWidth = bbox.lbearing + bbox.rbearing; if (newPtr->pixelWidth > listPtr->maxWidth) { listPtr->maxWidth = newPtr->pixelWidth; } if (prevPtr == NULL) { newPtr->nextPtr = listPtr->elementPtr; listPtr->elementPtr = newPtr; } else { newPtr->nextPtr = prevPtr->nextPtr; prevPtr->nextPtr = newPtr; } } listPtr->numElements += argc; /* * Update the selection to account for the renumbering that has just * occurred. Then arrange for the new information to be displayed. */ if (index <= listPtr->selectFirst) { listPtr->selectFirst += argc; } if (index <= listPtr->selectLast) { listPtr->selectLast += argc; } listPtr->flags |= UPDATE_V_SCROLLBAR; if (listPtr->maxWidth != oldMaxWidth) { listPtr->flags |= UPDATE_H_SCROLLBAR; } ListboxRedrawRange(listPtr, index, listPtr->numElements-1); } /* *---------------------------------------------------------------------- * * DeleteEls -- * * Remove one or more elements from a listbox widget. * * Results: * None. * * Side effects: * Memory gets freed, the listbox gets modified and (eventually) * redisplayed. * *---------------------------------------------------------------------- */ static void DeleteEls(listPtr, first, last) register Listbox *listPtr; /* Listbox widget to modify. */ int first; /* Index of first element to delete. */ int last; /* Index of last element to delete. */ { register Element *prevPtr, *elPtr; int count, i, widthChanged; /* * Adjust the range to fit within the existing elements of the * listbox, and make sure there's something to delete. */ if (first < 0) { first = 0; } if (last >= listPtr->numElements) { last = listPtr->numElements-1; } count = last + 1 - first; if (count <= 0) { return; } /* * Find the element just before the ones to delete. */ if (first == 0) { prevPtr = NULL; } else { for (i = first-1, prevPtr = listPtr->elementPtr; i > 0; i--) { prevPtr = prevPtr->nextPtr; } } /* * Delete the requested number of elements. */ widthChanged = 0; for (i = count; i > 0; i--) { if (prevPtr == NULL) { elPtr = listPtr->elementPtr; listPtr->elementPtr = elPtr->nextPtr; } else { elPtr = prevPtr->nextPtr; prevPtr->nextPtr = elPtr->nextPtr; } if (elPtr->pixelWidth == listPtr->maxWidth) { widthChanged = 1; } ckfree((char *) elPtr); } listPtr->numElements -= count; /* * Update the selection and viewing information to reflect the change * in the element numbering, and redisplay to slide information up over * the elements that were deleted. */ if (first <= listPtr->selectFirst) { listPtr->selectFirst -= count; if (listPtr->selectFirst < first) { listPtr->selectFirst = first; } } if (first <= listPtr->selectLast) { listPtr->selectLast -= count; if (listPtr->selectLast < first) { listPtr->selectLast = first-1; } } if (listPtr->selectLast < listPtr->selectFirst) { listPtr->selectFirst = -1; } if (first <= listPtr->topIndex) { listPtr->topIndex -= count; if (listPtr->topIndex < first) { listPtr->topIndex = first; } } listPtr->flags |= UPDATE_V_SCROLLBAR; if (widthChanged) { ListboxComputeWidths(listPtr, 0); listPtr->flags |= UPDATE_H_SCROLLBAR; } ListboxRedrawRange(listPtr, first, listPtr->numElements-1); } /* *-------------------------------------------------------------- * * ListboxEventProc -- * * This procedure is invoked by the Tk dispatcher for various * events on listboxes. * * Results: * None. * * Side effects: * When the window gets deleted, internal structures get * cleaned up. When it gets exposed, it is redisplayed. * *-------------------------------------------------------------- */ static void ListboxEventProc(clientData, eventPtr) ClientData clientData; /* Information about window. */ XEvent *eventPtr; /* Information about event. */ { Listbox *listPtr = (Listbox *) clientData; if (eventPtr->type == Expose) { ListboxRedrawRange(listPtr, NearestListboxElement(listPtr, eventPtr->xexpose.y), NearestListboxElement(listPtr, eventPtr->xexpose.y + eventPtr->xexpose.height)); } else if (eventPtr->type == DestroyNotify) { Tcl_DeleteCommand(listPtr->interp, Tk_PathName(listPtr->tkwin)); listPtr->tkwin = NULL; if (listPtr->flags & REDRAW_PENDING) { Tk_CancelIdleCall(DisplayListbox, (ClientData) listPtr); } Tk_EventuallyFree((ClientData) listPtr, DestroyListbox); } else if (eventPtr->type == ConfigureNotify) { Tk_Preserve((ClientData) listPtr); listPtr->numLines = (Tk_Height(listPtr->tkwin) - 2*listPtr->borderWidth) / listPtr->lineHeight; listPtr->flags |= UPDATE_V_SCROLLBAR|UPDATE_H_SCROLLBAR; ListboxRedrawRange(listPtr, 0, listPtr->numElements-1); Tk_Release((ClientData) listPtr); } } /* *-------------------------------------------------------------- * * GetListboxIndex -- * * Parse an index into a listbox and return either its value * or an error. * * Results: * A standard Tcl result. If all went well, then *indexPtr is * filled in with the index (into listPtr) corresponding to * string. Otherwise an error message is left in interp->result. * * Side effects: * None. * *-------------------------------------------------------------- */ static int GetListboxIndex(interp, listPtr, string, indexPtr) Tcl_Interp *interp; /* For error messages. */ Listbox *listPtr; /* Listbox for which the index is being * specified. */ char *string; /* Numerical index into listPtr's element * list, or "end" to refer to last element. */ int *indexPtr; /* Where to store converted index. */ { if (string[0] == 'e') { if (strncmp(string, "end", strlen(string)) != 0) { badIndex: Tcl_AppendResult(interp, "bad listbox index \"", string, "\"", (char *) NULL); return TCL_ERROR; } *indexPtr = listPtr->numElements; if (listPtr->numElements <= 0) { *indexPtr = 0; } } else { if (Tcl_GetInt(interp, string, indexPtr) != TCL_OK) { Tcl_ResetResult(interp); goto badIndex; } } return TCL_OK; } /* *---------------------------------------------------------------------- * * ChangeListboxView -- * * Change the view on a listbox widget. * * Results: * None. * * Side effects: * What's displayed on the screen is changed. If there is a * scrollbar associated with this widget, then the scrollbar * is instructed to change its display too. * *---------------------------------------------------------------------- */ static void ChangeListboxView(listPtr, index) register Listbox *listPtr; /* Information about widget. */ int index; /* Index of element in listPtr. */ { if (listPtr->tkwin == NULL) { return; } if (index >= listPtr->numElements) { index = listPtr->numElements-1; } if (index < 0) { index = 0; } if (listPtr->topIndex != index) { if (!(listPtr->flags & REDRAW_PENDING)) { Tk_DoWhenIdle(DisplayListbox, (ClientData) listPtr); listPtr->flags |= REDRAW_PENDING; } listPtr->topIndex = index; ListboxUpdateVScrollbar(listPtr); } } /* *---------------------------------------------------------------------- * * ChangListboxOffset -- * * Change the horizontal offset for a listbox. * * Results: * None. * * Side effects: * The listbox may be redrawn to reflect its new horizontal * offset. * *---------------------------------------------------------------------- */ static void ChangeListboxOffset(listPtr, offset) register Listbox *listPtr; /* Information about widget. */ int offset; /* Desired new "xOffset" for * listbox. */ { int maxOffset; if (listPtr->tkwin == NULL) { return; } /* * Make sure that the new offset is within the allowable range, and * round it off to an even multiple of xScrollUnit. */ maxOffset = listPtr->maxWidth + (listPtr->xScrollUnit-1) - (Tk_Width(listPtr->tkwin) - 2*listPtr->borderWidth - 2*listPtr->selBorderWidth - listPtr->xScrollUnit); if (offset > maxOffset) { offset = maxOffset; } if (offset < 0) { offset = 0; } offset -= offset%listPtr->xScrollUnit; if (offset != listPtr->xOffset) { listPtr->xOffset = offset; listPtr->flags |= UPDATE_H_SCROLLBAR; ListboxRedrawRange(listPtr, 0, listPtr->numElements); } } /* *---------------------------------------------------------------------- * * ListboxScanTo -- * * Given a point (presumably of the curent mouse location) * drag the view in the window to implement the scan operation. * * Results: * None. * * Side effects: * The view in the window may change. * *---------------------------------------------------------------------- */ static void ListboxScanTo(listPtr, x, y) register Listbox *listPtr; /* Information about widget. */ int x; /* X-coordinate to use for scan * operation. */ int y; /* Y-coordinate to use for scan * operation. */ { int newTopIndex, newOffset; /* * Compute new top line for screen by amplifying the difference * between the current position and the place where the scan * started (the "mark" position). If we run off the top or bottom * of the list, then reset the mark point so that the current * position continues to correspond to the edge of the window. * This means that the picture will start dragging as soon as the * mouse reverses direction (without this reset, might have to slide * mouse a long ways back before the picture starts moving again). */ newTopIndex = listPtr->scanMarkYIndex - (10*(y - listPtr->scanMarkY))/listPtr->lineHeight; if (newTopIndex >= listPtr->numElements) { newTopIndex = listPtr->scanMarkYIndex = listPtr->numElements-1; listPtr->scanMarkY = y; } else if (newTopIndex < 0) { newTopIndex = listPtr->scanMarkYIndex = 0; listPtr->scanMarkY = y; } ChangeListboxView(listPtr, newTopIndex); /* * Compute new left edge for display in a similar fashion by amplifying * the difference between the current position and the place where the * scan started. */ newOffset = listPtr->scanMarkXOffset - (10*(x - listPtr->scanMarkX)); if (newOffset >= listPtr->maxWidth) { newOffset = listPtr->scanMarkXOffset = listPtr->maxWidth; listPtr->scanMarkX = x; } else if (newOffset < 0) { newOffset = listPtr->scanMarkXOffset = 0; listPtr->scanMarkX = x; } ChangeListboxOffset(listPtr, newOffset); } /* *---------------------------------------------------------------------- * * NearestListboxElement -- * * Given a y-coordinate inside a listbox, compute the index of * the element under that y-coordinate (or closest to that * y-coordinate). * * Results: * The return value is an index of an element of listPtr. If * listPtr has no elements, then 0 is always returned. * * Side effects: * None. * *---------------------------------------------------------------------- */ static int NearestListboxElement(listPtr, y) register Listbox *listPtr; /* Information about widget. */ int y; /* Y-coordinate in listPtr's window. */ { int index; index = (y - listPtr->borderWidth)/listPtr->lineHeight; if (index >= listPtr->numLines) { index = listPtr->numLines-1; } if (index < 0) { index = 0; } index += listPtr->topIndex; if (index >= listPtr->numElements) { index = listPtr->numElements-1; } return index; } /* *---------------------------------------------------------------------- * * ListboxSelectFrom -- * * Start a new selection in a listbox. * * Results: * None. * * Side effects: * ListPtr claims the selection, and the selection becomes the * single element given by index. * *---------------------------------------------------------------------- */ static void ListboxSelectFrom(listPtr, index) register Listbox *listPtr; /* Information about widget. */ int index; /* Index of element that is to * become the new selection. */ { /* * Make sure the index is within the proper range for the listbox. */ if (index <= 0) { index = 0; } if (index >= listPtr->numElements) { index = listPtr->numElements-1; } if (listPtr->selectFirst != -1) { ListboxRedrawRange(listPtr, listPtr->selectFirst, listPtr->selectLast); } else if (listPtr->exportSelection) { Tk_OwnSelection(listPtr->tkwin, ListboxLostSelection, (ClientData) listPtr); } listPtr->selectFirst = listPtr->selectLast = index; listPtr->selectAnchor = index; ListboxRedrawRange(listPtr, index, index); } /* *---------------------------------------------------------------------- * * ListboxSelectTo -- * * Modify the selection by moving its un-anchored end. This could * make the selection either larger or smaller. * * Results: * None. * * Side effects: * The selection changes. * *---------------------------------------------------------------------- */ static void ListboxSelectTo(listPtr, index) register Listbox *listPtr; /* Information about widget. */ int index; /* Index of element that is to * become the "other" end of the * selection. */ { int newFirst, newLast; /* * Make sure the index is within the proper range for the listbox. */ if (index <= 0) { index = 0; } if (index >= listPtr->numElements) { index = listPtr->numElements-1; } /* * We should already own the selection, but grab it if we don't. */ if (listPtr->selectFirst == -1) { ListboxSelectFrom(listPtr, index); } if (listPtr->selectAnchor < index) { newFirst = listPtr->selectAnchor; newLast = index; } else { newFirst = index; newLast = listPtr->selectAnchor; } if ((listPtr->selectFirst == newFirst) && (listPtr->selectLast == newLast)) { return; } if (listPtr->selectFirst != newFirst) { if (listPtr->selectFirst < newFirst) { ListboxRedrawRange(listPtr, listPtr->selectFirst, newFirst-1); } else { ListboxRedrawRange(listPtr, newFirst, listPtr->selectFirst-1); } listPtr->selectFirst = newFirst; } if (listPtr->selectLast != newLast) { if (listPtr->selectLast < newLast) { ListboxRedrawRange(listPtr, listPtr->selectLast+1, newLast); } else { ListboxRedrawRange(listPtr, newLast+1, listPtr->selectLast); } listPtr->selectLast = newLast; } } /* *---------------------------------------------------------------------- * * ListboxFetchSelection -- * * This procedure is called back by Tk when the selection is * requested by someone. It returns part or all of the selection * in a buffer provided by the caller. * * Results: * The return value is the number of non-NULL bytes stored * at buffer. Buffer is filled (or partially filled) with a * NULL-terminated string containing part or all of the selection, * as given by offset and maxBytes. The selection is returned * as a Tcl list with one list element for each element in the * listbox. * * Side effects: * None. * *---------------------------------------------------------------------- */ static int ListboxFetchSelection(clientData, offset, buffer, maxBytes) ClientData clientData; /* Information about listbox widget. */ int offset; /* Offset within selection of first * byte to be returned. */ char *buffer; /* Location in which to place * selection. */ int maxBytes; /* Maximum number of bytes to place * at buffer, not including terminating * NULL character. */ { register Listbox *listPtr = (Listbox *) clientData; register Element *elPtr; char **argv, *selection; int src, dst, length, count, argc; if ((listPtr->selectFirst == -1) || !listPtr->exportSelection) { return -1; } /* * Use Tcl_Merge to format the listbox elements into a suitable * Tcl list. */ argc = listPtr->selectLast - listPtr->selectFirst + 1; argv = (char **) ckalloc((unsigned) (argc*sizeof(char *))); for (src = 0, dst = 0, elPtr = listPtr->elementPtr; ; src++, elPtr = elPtr->nextPtr) { if (src < listPtr->selectFirst) { continue; } if (src > listPtr->selectLast) { break; } argv[dst] = elPtr->text; dst++; } selection = Tcl_Merge(argc, argv); /* * Copy the requested portion of the selection to the buffer. */ length = strlen(selection); count = length - offset; if (count <= 0) { count = 0; goto done; } if (count > maxBytes) { count = maxBytes; } memcpy((VOID *) buffer, (VOID *) (selection + offset), count); done: buffer[count] = '\0'; ckfree(selection); ckfree((char *) argv); return count; } /* *---------------------------------------------------------------------- * * ListboxLostSelection -- * * This procedure is called back by Tk when the selection is * grabbed away from a listbox widget. * * Results: * None. * * Side effects: * The existing selection is unhighlighted, and the window is * marked as not containing a selection. * *---------------------------------------------------------------------- */ static void ListboxLostSelection(clientData) ClientData clientData; /* Information about listbox widget. */ { register Listbox *listPtr = (Listbox *) clientData; if ((listPtr->selectFirst >= 0) && listPtr->exportSelection) { ListboxRedrawRange(listPtr, listPtr->selectFirst, listPtr->selectLast); listPtr->selectFirst = -1; } } /* *---------------------------------------------------------------------- * * ListboxRedrawRange -- * * Ensure that a given range of elements is eventually redrawn on * the display (if those elements in fact appear on the display). * * Results: * None. * * Side effects: * Information gets redisplayed. * *---------------------------------------------------------------------- */ /* ARGSUSED */ static void ListboxRedrawRange(listPtr, first, last) register Listbox *listPtr; /* Information about widget. */ int first; /* Index of first element in list * that needs to be redrawn. */ int last; /* Index of last element in list * that needs to be redrawn. May * be less than first; * these just bracket a range. */ { if ((listPtr->tkwin == NULL) || !Tk_IsMapped(listPtr->tkwin) || (listPtr->flags & REDRAW_PENDING)) { return; } Tk_DoWhenIdle(DisplayListbox, (ClientData) listPtr); listPtr->flags |= REDRAW_PENDING; } /* *---------------------------------------------------------------------- * * ListboxUpdateVScrollbar -- * * This procedure is invoked whenever information has changed in * a listbox in a way that would invalidate a vertical scrollbar * display. If there is an associated scrollbar, then this command * updates it by invoking a Tcl command. * * Results: * None. * * Side effects: * A Tcl command is invoked, and an additional command may be * invoked to process errors in the command. * *---------------------------------------------------------------------- */ static void ListboxUpdateVScrollbar(listPtr) register Listbox *listPtr; /* Information about widget. */ { char string[60]; int result, last; if (listPtr->yScrollCmd == NULL) { return; } last = listPtr->topIndex + listPtr->numLines - 1; if (last >= listPtr->numElements) { last = listPtr->numElements-1; } if (last < listPtr->topIndex) { last = listPtr->topIndex; } sprintf(string, " %d %d %d %d", listPtr->numElements, listPtr->numLines, listPtr->topIndex, last); result = Tcl_VarEval(listPtr->interp, listPtr->yScrollCmd, string, (char *) NULL); if (result != TCL_OK) { TkBindError(listPtr->interp); } } /* *---------------------------------------------------------------------- * * ListboxUpdateHScrollbar -- * * This procedure is invoked whenever information has changed in * a listbox in a way that would invalidate a horizontal scrollbar * display. If there is an associated horizontal scrollbar, then * this command updates it by invoking a Tcl command. * * Results: * None. * * Side effects: * A Tcl command is invoked, and an additional command may be * invoked to process errors in the command. * *---------------------------------------------------------------------- */ static void ListboxUpdateHScrollbar(listPtr) register Listbox *listPtr; /* Information about widget. */ { char string[60]; int result, totalUnits, windowUnits, first, last; if (listPtr->xScrollCmd == NULL) { return; } totalUnits = 1 + (listPtr->maxWidth-1)/listPtr->xScrollUnit; windowUnits = 1 + (Tk_Width(listPtr->tkwin) - 2*(listPtr->borderWidth + listPtr->selBorderWidth)-1) /listPtr->xScrollUnit; first = listPtr->xOffset/listPtr->xScrollUnit; last = first + windowUnits - 1; if (last < first) { last = first; } sprintf(string, " %d %d %d %d", totalUnits, windowUnits, first, last); result = Tcl_VarEval(listPtr->interp, listPtr->xScrollCmd, string, (char *) NULL); if (result != TCL_OK) { TkBindError(listPtr->interp); } } /* *---------------------------------------------------------------------- * * ListboxComputeWidths -- * * This procedure is invoked to completely recompute width * information used for displaying listboxes and for horizontal * scrolling. * * Results: * None. * * Side effects: * If "fontChanged" is non-zero then the widths of the individual * elements are all recomputed. In addition, listPtr->maxWidth is * recomputed. * *---------------------------------------------------------------------- */ static void ListboxComputeWidths(listPtr, fontChanged) Listbox *listPtr; /* Listbox whose geometry is to be * recomputed. */ int fontChanged; /* Non-zero means the font may have changed * so per-element width information also * has to be computed. */ { register Element *elPtr; int dummy; XCharStruct bbox; listPtr->xScrollUnit = XTextWidth(listPtr->fontPtr, "0", 1); listPtr->maxWidth = 0; for (elPtr = listPtr->elementPtr; elPtr != NULL; elPtr = elPtr->nextPtr) { if (fontChanged) { XTextExtents(listPtr->fontPtr, elPtr->text, elPtr->textLength, &dummy, &dummy, &dummy, &bbox); elPtr->lBearing = bbox.lbearing; elPtr->pixelWidth = bbox.lbearing + bbox.rbearing; } if (elPtr->pixelWidth > listPtr->maxWidth) { listPtr->maxWidth = elPtr->pixelWidth; } } } micropolis-activity/src/tk/tkcvline.c0000664000076400007640000012521510724145723020231 0ustar simcitysimcity/* * tkCanvLine.c -- * * This file implements line items for canvas widgets. * * Copyright 1991-1992 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkCanvLine.c,v 1.7 92/07/28 15:40:08 ouster Exp $ SPRITE (Berkeley)"; #endif #include #include #include "tkint.h" #include "tkcanvas.h" #include "tkconfig.h" /* * The structure below defines the record for each line item. */ typedef struct LineItem { Tk_Item header; /* Generic stuff that's the same for all * types. MUST BE FIRST IN STRUCTURE. */ Tk_Canvas *canvasPtr; /* Canvas containing item. Needed for * parsing arrow shapes. */ int numPoints; /* Number of points in line (always >= 2). */ double *coordPtr; /* Pointer to malloc-ed array containing * x- and y-coords of all points in line. * X-coords are even-valued indices, y-coords * are corresponding odd-valued indices. */ int width; /* Width of line. */ XColor *fg; /* Foreground color for line. */ Pixmap fillStipple; /* Stipple bitmap for filling line. */ int capStyle; /* Cap style for line. */ int joinStyle; /* Join style for line. */ GC gc; /* Graphics context for filling line. */ Tk_Uid arrow; /* Indicates whether or not to draw arrowheads: * "none", "first", "last", or "both". */ float arrowShapeA; /* Distance from tip of arrowhead to center. */ float arrowShapeB; /* Distance from tip of arrowhead to trailing * point, measured along shaft. */ float arrowShapeC; /* Distance of trailing points from outside * edge of shaft. */ double *firstArrowPtr; /* Points to array of 5 points describing * polygon for arrowhead at first point in * line. First point of arrowhead is tip. * Malloc'ed. NULL means no arrowhead at * first point. */ double *lastArrowPtr; /* Points to polygon for arrowhead at last * point in line (5 points, first of which * is tip). Malloc'ed. NULL means no * arrowhead at last point. */ int smooth; /* Non-zero means draw line smoothed (i.e. * with Bezier splines). */ int splineSteps; /* Number of steps in each spline segment. */ } LineItem; /* * Number of points in an arrowHead: */ #define PTS_IN_ARROW 6 /* * Prototypes for procedures defined in this file: */ static void ComputeLineBbox _ANSI_ARGS_((Tk_Canvas *canvasPtr, LineItem *linePtr)); static int ConfigureLine _ANSI_ARGS_(( Tk_Canvas *canvasPtr, Tk_Item *itemPtr, int argc, char **argv, int flags)); static int ConfigureArrows _ANSI_ARGS_((Tk_Canvas *canvasPtr, LineItem *linePtr)); static int CreateLine _ANSI_ARGS_((Tk_Canvas *canvasPtr, struct Tk_Item *itemPtr, int argc, char **argv)); static void DeleteLine _ANSI_ARGS_((Tk_Item *itemPtr)); static void DisplayLine _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, Drawable dst)); static int LineCoords _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, int argc, char **argv)); static int LineToArea _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double *rectPtr)); static double LineToPoint _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double *coordPtr)); static int ParseArrowShape _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, Tk_Window tkwin, char *value, char *recordPtr, int offset)); static char * PrintArrowShape _ANSI_ARGS_((ClientData clientData, Tk_Window tkwin, char *recordPtr, int offset, Tcl_FreeProc **freeProcPtr)); static void ScaleLine _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double originX, double originY, double scaleX, double scaleY)); static void TranslateLine _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double deltaX, double deltaY)); /* * Information used for parsing configuration specs. If you change any * of the default strings, be sure to change the corresponding default * values in CreateLine. */ static Tk_CustomOption arrowShapeOption = {ParseArrowShape, PrintArrowShape, (ClientData) NULL}; static Tk_ConfigSpec configSpecs[] = { {TK_CONFIG_UID, "-arrow", (char *) NULL, (char *) NULL, "none", Tk_Offset(LineItem, arrow), TK_CONFIG_DONT_SET_DEFAULT}, {TK_CONFIG_CUSTOM, "-arrowshape", (char *) NULL, (char *) NULL, "8 10 3", Tk_Offset(LineItem, arrowShapeA), TK_CONFIG_DONT_SET_DEFAULT, &arrowShapeOption}, {TK_CONFIG_CAP_STYLE, "-capstyle", (char *) NULL, (char *) NULL, "butt", Tk_Offset(LineItem, capStyle), TK_CONFIG_DONT_SET_DEFAULT}, {TK_CONFIG_COLOR, "-fill", (char *) NULL, (char *) NULL, "black", Tk_Offset(LineItem, fg), 0}, {TK_CONFIG_JOIN_STYLE, "-joinstyle", (char *) NULL, (char *) NULL, "round", Tk_Offset(LineItem, joinStyle), TK_CONFIG_DONT_SET_DEFAULT}, {TK_CONFIG_BOOLEAN, "-smooth", (char *) NULL, (char *) NULL, "no", Tk_Offset(LineItem, smooth), TK_CONFIG_DONT_SET_DEFAULT}, {TK_CONFIG_INT, "-splinesteps", (char *) NULL, (char *) NULL, "12", Tk_Offset(LineItem, splineSteps), TK_CONFIG_DONT_SET_DEFAULT}, {TK_CONFIG_BITMAP, "-stipple", (char *) NULL, (char *) NULL, (char *) NULL, Tk_Offset(LineItem, fillStipple), TK_CONFIG_NULL_OK}, {TK_CONFIG_CUSTOM, "-tags", (char *) NULL, (char *) NULL, (char *) NULL, 0, TK_CONFIG_NULL_OK, &tkCanvasTagsOption}, {TK_CONFIG_PIXELS, "-width", (char *) NULL, (char *) NULL, "1", Tk_Offset(LineItem, width), TK_CONFIG_DONT_SET_DEFAULT}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; /* * The structures below defines the line item type by means * of procedures that can be invoked by generic item code. */ Tk_ItemType TkLineType = { "line", /* name */ sizeof(LineItem), /* itemSize */ CreateLine, /* createProc */ configSpecs, /* configSpecs */ ConfigureLine, /* configureProc */ LineCoords, /* coordProc */ DeleteLine, /* deleteProc */ DisplayLine, /* displayProc */ 0, /* alwaysRedraw */ LineToPoint, /* pointProc */ LineToArea, /* areaProc */ (Tk_ItemPostscriptProc *) NULL, /* postscriptProc */ ScaleLine, /* scaleProc */ TranslateLine, /* translateProc */ (Tk_ItemIndexProc *) NULL, /* indexProc */ (Tk_ItemCursorProc *) NULL, /* cursorProc */ (Tk_ItemSelectionProc *) NULL, /* selectionProc */ (Tk_ItemInsertProc *) NULL, /* insertProc */ (Tk_ItemDCharsProc *) NULL, /* dTextProc */ (Tk_ItemType *) NULL /* nextPtr */ }; /* * The Tk_Uid's below refer to uids for the various arrow types: */ static Tk_Uid noneUid = NULL; static Tk_Uid firstUid = NULL; static Tk_Uid lastUid = NULL; static Tk_Uid bothUid = NULL; /* * The definition below determines how large are static arrays * used to hold spline points (splines larger than this have to * have their arrays malloc-ed). */ #define MAX_STATIC_POINTS 200 /* *-------------------------------------------------------------- * * CreateLine -- * * This procedure is invoked to create a new line item in * a canvas. * * Results: * A standard Tcl return value. If an error occurred in * creating the item, then an error message is left in * canvasPtr->interp->result; in this case itemPtr is * left uninitialized, so it can be safely freed by the * caller. * * Side effects: * A new line item is created. * *-------------------------------------------------------------- */ static int CreateLine(canvasPtr, itemPtr, argc, argv) register Tk_Canvas *canvasPtr; /* Canvas to hold new item. */ Tk_Item *itemPtr; /* Record to hold new item; header * has been initialized by caller. */ int argc; /* Number of arguments in argv. */ char **argv; /* Arguments describing line. */ { register LineItem *linePtr = (LineItem *) itemPtr; int i; if (argc < 4) { Tcl_AppendResult(canvasPtr->interp, "wrong # args: should be \"", Tk_PathName(canvasPtr->tkwin), "\" create x1 y1 x2 y2 ?x3 y3 ...? ?options?", (char *) NULL); return TCL_ERROR; } /* * Carry out initialization that is needed to set defaults and to * allow proper cleanup after errors during the the remainder of * this procedure. */ linePtr->canvasPtr = canvasPtr; linePtr->numPoints = 0; linePtr->coordPtr = NULL; linePtr->width = 1; linePtr->fg = None; linePtr->fillStipple = None; linePtr->capStyle = CapButt; linePtr->joinStyle = JoinRound; linePtr->gc = None; if (noneUid == NULL) { noneUid = Tk_GetUid("none"); firstUid = Tk_GetUid("first"); lastUid = Tk_GetUid("last"); bothUid = Tk_GetUid("both"); } linePtr->arrow = noneUid; linePtr->arrowShapeA = 8.0; linePtr->arrowShapeB = 10.0; linePtr->arrowShapeC = 3.0; linePtr->firstArrowPtr = NULL; linePtr->lastArrowPtr = NULL; linePtr->smooth = 0; linePtr->splineSteps = 12; /* * Count the number of points and then parse them into a point * array. Leading arguments are assumed to be points if they * start with a digit or a minus sign followed by a digit. */ for (i = 4; i < (argc-1); i+=2) { if ((!isdigit(argv[i][0])) && ((argv[i][0] != '-') || (!isdigit(argv[i][1])))) { break; } } if (LineCoords(canvasPtr, itemPtr, i, argv) != TCL_OK) { goto error; } if (ConfigureLine(canvasPtr, itemPtr, argc-i, argv+i, 0) == TCL_OK) { return TCL_OK; } error: DeleteLine(itemPtr); return TCL_ERROR; } /* *-------------------------------------------------------------- * * LineCoords -- * * This procedure is invoked to process the "coords" widget * command on lines. See the user documentation for details * on what it does. * * Results: * Returns TCL_OK or TCL_ERROR, and sets canvasPtr->interp->result. * * Side effects: * The coordinates for the given item may be changed. * *-------------------------------------------------------------- */ static int LineCoords(canvasPtr, itemPtr, argc, argv) register Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item whose coordinates are to be * read or modified. */ int argc; /* Number of coordinates supplied in * argv. */ char **argv; /* Array of coordinates: x1, y1, * x2, y2, ... */ { register LineItem *linePtr = (LineItem *) itemPtr; char buffer[300]; int i, numPoints; if (argc == 0) { for (i = 0; i < 2*linePtr->numPoints; i++) { sprintf(buffer, "%g", linePtr->coordPtr[i]); Tcl_AppendElement(canvasPtr->interp, buffer, 0); } } else if (argc < 4) { Tcl_AppendResult(canvasPtr->interp, "too few coordinates for line: must have at least 4", (char *) NULL); return TCL_ERROR; } else if (argc & 1) { Tcl_AppendResult(canvasPtr->interp, "odd number of coordinates specified for line", (char *) NULL); return TCL_ERROR; } else { numPoints = argc/2; if (linePtr->numPoints != numPoints) { if (linePtr->coordPtr != NULL) { ckfree((char *) linePtr->coordPtr); } linePtr->coordPtr = (double *) ckalloc((unsigned) (sizeof(double) * argc)); linePtr->numPoints = numPoints; } for (i = argc-1; i >= 0; i--) { if (TkGetCanvasCoord(canvasPtr, argv[i], &linePtr->coordPtr[i]) != TCL_OK) { return TCL_ERROR; } } ComputeLineBbox(canvasPtr, linePtr); } return TCL_OK; } /* *-------------------------------------------------------------- * * ConfigureLine -- * * This procedure is invoked to configure various aspects * of a line item such as its background color. * * Results: * A standard Tcl result code. If an error occurs, then * an error message is left in canvasPtr->interp->result. * * Side effects: * Configuration information, such as colors and stipple * patterns, may be set for itemPtr. * *-------------------------------------------------------------- */ static int ConfigureLine(canvasPtr, itemPtr, argc, argv, flags) Tk_Canvas *canvasPtr; /* Canvas containing itemPtr. */ Tk_Item *itemPtr; /* Line item to reconfigure. */ int argc; /* Number of elements in argv. */ char **argv; /* Arguments describing things to configure. */ int flags; /* Flags to pass to Tk_ConfigureWidget. */ { register LineItem *linePtr = (LineItem *) itemPtr; XGCValues gcValues; GC newGC; unsigned long mask; if (Tk_ConfigureWidget(canvasPtr->interp, canvasPtr->tkwin, configSpecs, argc, argv, (char *) linePtr, flags) != TCL_OK) { return TCL_ERROR; } /* * A few of the options require additional processing, such as * graphics contexts. */ if (linePtr->fg == NULL) { newGC = None; } else { gcValues.foreground = linePtr->fg->pixel; gcValues.join_style = linePtr->joinStyle; if (linePtr->width < 0) { linePtr->width = 1; } gcValues.line_width = linePtr->width; mask = GCForeground|GCJoinStyle|GCLineWidth; if (linePtr->fillStipple != None) { gcValues.stipple = linePtr->fillStipple; gcValues.fill_style = FillStippled; mask |= GCStipple|GCFillStyle; } if (linePtr->arrow == noneUid) { gcValues.cap_style = linePtr->capStyle; mask |= GCCapStyle; } newGC = Tk_GetGC(canvasPtr->tkwin, mask, &gcValues); } if (linePtr->gc != None) { Tk_FreeGC(linePtr->gc); } linePtr->gc = newGC; /* * Keep spline parameters within reasonable limits. */ if (linePtr->splineSteps < 1) { linePtr->splineSteps = 1; } else if (linePtr->splineSteps > 100) { linePtr->splineSteps = 100; } /* * Setup arrowheads, if needed. If arrowheads are turned off, * restore the line's endpoints (they were shortened when the * arrowheads were added). */ if ((linePtr->firstArrowPtr != NULL) && (linePtr->arrow != firstUid) && (linePtr->arrow != bothUid)) { linePtr->coordPtr[0] = linePtr->firstArrowPtr[0]; linePtr->coordPtr[1] = linePtr->firstArrowPtr[1]; ckfree((char *) linePtr->firstArrowPtr); linePtr->firstArrowPtr = NULL; } if ((linePtr->lastArrowPtr != NULL) && (linePtr->arrow != lastUid) && (linePtr->arrow != bothUid)) { int index; index = 2*(linePtr->numPoints-1); linePtr->coordPtr[index] = linePtr->lastArrowPtr[0]; linePtr->coordPtr[index+1] = linePtr->lastArrowPtr[1]; ckfree((char *) linePtr->lastArrowPtr); linePtr->lastArrowPtr = NULL; } if (linePtr->arrow != noneUid) { if ((linePtr->arrow != firstUid) && (linePtr->arrow != lastUid) && (linePtr->arrow != bothUid)) { Tcl_AppendResult(canvasPtr->interp, "bad arrow spec \"", linePtr->arrow, "\": must be none, first, last, or both", (char *) NULL); linePtr->arrow = noneUid; return TCL_ERROR; } ConfigureArrows(canvasPtr, linePtr); } /* * Recompute bounding box for line. */ ComputeLineBbox(canvasPtr, linePtr); return TCL_OK; } /* *-------------------------------------------------------------- * * DeleteLine -- * * This procedure is called to clean up the data structure * associated with a line item. * * Results: * None. * * Side effects: * Resources associated with itemPtr are released. * *-------------------------------------------------------------- */ static void DeleteLine(itemPtr) Tk_Item *itemPtr; /* Item that is being deleted. */ { register LineItem *linePtr = (LineItem *) itemPtr; if (linePtr->coordPtr != NULL) { ckfree((char *) linePtr->coordPtr); } if (linePtr->fg != NULL) { Tk_FreeColor(linePtr->fg); } if (linePtr->fillStipple != None) { Tk_FreeBitmap(linePtr->fillStipple); } if (linePtr->gc != None) { Tk_FreeGC(linePtr->gc); } if (linePtr->firstArrowPtr != NULL) { ckfree((char *) linePtr->firstArrowPtr); } if (linePtr->lastArrowPtr != NULL) { ckfree((char *) linePtr->lastArrowPtr); } } /* *-------------------------------------------------------------- * * ComputeLineBbox -- * * This procedure is invoked to compute the bounding box of * all the pixels that may be drawn as part of a line. * * Results: * None. * * Side effects: * The fields x1, y1, x2, and y2 are updated in the header * for itemPtr. * *-------------------------------------------------------------- */ static void ComputeLineBbox(canvasPtr, linePtr) register Tk_Canvas *canvasPtr; /* Canvas that contains item. */ LineItem *linePtr; /* Item whose bbos is to be * recomputed. */ { register double *coordPtr; int i; coordPtr = linePtr->coordPtr; linePtr->header.x1 = linePtr->header.x2 = *coordPtr; linePtr->header.y1 = linePtr->header.y2 = coordPtr[1]; /* * Compute the bounding box of all the points in the line, * then expand in all directions by the line's width to take * care of butting or rounded corners and projecting or * rounded caps. This expansion is an overestimate (worst-case * is square root of two over two) but it's simple. Don't do * anything special for curves. This causes an additional * overestimate in the bounding box, but is faster. */ for (i = 1, coordPtr = linePtr->coordPtr+2; i < linePtr->numPoints; i++, coordPtr += 2) { TkIncludePoint(canvasPtr, (Tk_Item *) linePtr, coordPtr); } linePtr->header.x1 -= linePtr->width; linePtr->header.x2 += linePtr->width; linePtr->header.y1 -= linePtr->width; linePtr->header.y2 += linePtr->width; /* * For mitered lines, make a second pass through all the points. * Compute the locations of the two miter vertex points and add * those into the bounding box. */ if (linePtr->joinStyle == JoinMiter) { for (i = linePtr->numPoints, coordPtr = linePtr->coordPtr; i >= 3; i--, coordPtr += 2) { double miter[4]; int j; if (TkGetMiterPoints(coordPtr, coordPtr+2, coordPtr+4, (double) linePtr->width, miter, miter+2)) { for (j = 0; j < 4; j += 2) { TkIncludePoint(canvasPtr, (Tk_Item *) linePtr, miter+j); } } } } /* * Add in the sizes of arrowheads, if any. */ if (linePtr->arrow != noneUid) { if (linePtr->arrow != lastUid) { for (i = 0, coordPtr = linePtr->firstArrowPtr; i < PTS_IN_ARROW; i++, coordPtr += 2) { TkIncludePoint(canvasPtr, (Tk_Item *) linePtr, coordPtr); } } if (linePtr->arrow != firstUid) { for (i = 0, coordPtr = linePtr->lastArrowPtr; i < PTS_IN_ARROW; i++, coordPtr += 2) { TkIncludePoint(canvasPtr, (Tk_Item *) linePtr, coordPtr); } } } /* * Add one more pixel of fudge factor just to be safe (e.g. * X may round differently than we do). */ linePtr->header.x1 -= 1; linePtr->header.x2 += 1; linePtr->header.y1 -= 1; linePtr->header.y2 += 1; } /* *-------------------------------------------------------------- * * DisplayLine -- * * This procedure is invoked to draw a line item in a given * drawable. * * Results: * None. * * Side effects: * ItemPtr is drawn in drawable using the transformation * information in canvasPtr. * *-------------------------------------------------------------- */ static void DisplayLine(canvasPtr, itemPtr, drawable) register Tk_Canvas *canvasPtr; /* Canvas that contains item. */ Tk_Item *itemPtr; /* Item to be displayed. */ Drawable drawable; /* Pixmap or window in which to draw * item. */ { register LineItem *linePtr = (LineItem *) itemPtr; XPoint staticPoints[MAX_STATIC_POINTS]; XPoint *pointPtr; register XPoint *pPtr; register double *coordPtr; int i, numPoints; if (linePtr->gc == None) { return; } /* * Build up an array of points in screen coordinates. Use a * static array unless the line has an enormous number of points; * in this case, dynamically allocate an array. For smoothed lines, * generate the curve points on each redisplay. */ if ((linePtr->smooth) && (linePtr->numPoints > 2)) { numPoints = 1 + linePtr->numPoints*linePtr->splineSteps; } else { numPoints = linePtr->numPoints; } if (numPoints <= MAX_STATIC_POINTS) { pointPtr = staticPoints; } else { pointPtr = (XPoint *) ckalloc((unsigned) (numPoints * sizeof(XPoint))); } if (linePtr->smooth) { numPoints = TkMakeBezierCurve(canvasPtr, linePtr->coordPtr, linePtr->numPoints, linePtr->splineSteps, pointPtr, (double *) NULL); } else { for (i = 0, coordPtr = linePtr->coordPtr, pPtr = pointPtr; i < linePtr->numPoints; i += 1, coordPtr += 2, pPtr++) { pPtr->x = SCREEN_X(canvasPtr, *coordPtr); pPtr->y = SCREEN_Y(canvasPtr, coordPtr[1]); } } /* * Display line, the free up line storage if it was dynamically * allocated. */ XDrawLines(Tk_Display(canvasPtr->tkwin), drawable, linePtr->gc, pointPtr, numPoints, CoordModeOrigin); if (pointPtr != staticPoints) { ckfree((char *) pointPtr); } /* * Display arrowheads, if they are wanted. */ if (linePtr->arrow != noneUid) { if (linePtr->arrow != lastUid) { TkFillPolygon(canvasPtr, linePtr->firstArrowPtr, PTS_IN_ARROW, drawable, linePtr->gc); } if (linePtr->arrow != firstUid) { TkFillPolygon(canvasPtr, linePtr->lastArrowPtr, PTS_IN_ARROW, drawable, linePtr->gc); } } } /* *-------------------------------------------------------------- * * LineToPoint -- * * Computes the distance from a given point to a given * line, in canvas units. * * Results: * The return value is 0 if the point whose x and y coordinates * are pointPtr[0] and pointPtr[1] is inside the line. If the * point isn't inside the line then the return value is the * distance from the point to the line. * * Side effects: * None. * *-------------------------------------------------------------- */ /* ARGSUSED */ static double LineToPoint(canvasPtr, itemPtr, pointPtr) Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item to check against point. */ double *pointPtr; /* Pointer to x and y coordinates. */ { register LineItem *linePtr = (LineItem *) itemPtr; register double *coordPtr, *linePoints; double staticSpace[2*MAX_STATIC_POINTS]; double poly[10]; double bestDist, dist; int numPoints, count; int changedMiterToBevel; /* Non-zero means that a mitered corner * had to be treated as beveled after all * because the angle was < 11 degrees. */ bestDist = 1.0e40; /* * Handle smoothed lines by generating an expanded set of points * against which to do the check. */ if ((linePtr->smooth) && (linePtr->numPoints > 2)) { numPoints = 1 + linePtr->numPoints*linePtr->splineSteps; if (numPoints <= MAX_STATIC_POINTS) { linePoints = staticSpace; } else { linePoints = (double *) ckalloc((unsigned) (2*numPoints*sizeof(double))); } numPoints = TkMakeBezierCurve(canvasPtr, linePtr->coordPtr, linePtr->numPoints, linePtr->splineSteps, (XPoint *) NULL, linePoints); } else { numPoints = linePtr->numPoints; linePoints = linePtr->coordPtr; } /* * The overall idea is to iterate through all of the edges of * the line, computing a polygon for each edge and testing the * point against that polygon. In addition, there are additional * tests to deal with rounded joints and caps. */ changedMiterToBevel = 0; for (count = numPoints, coordPtr = linePoints; count >= 2; count--, coordPtr += 2) { /* * If rounding is done around the first point then compute * the distance between the point and the point. */ if (((linePtr->capStyle == CapRound) && (count == numPoints)) || ((linePtr->joinStyle == JoinRound) && (count != numPoints))) { dist = hypot(coordPtr[0] - pointPtr[0], coordPtr[1] - pointPtr[1]) - linePtr->width/2.0; if (dist <= 0.0) { bestDist = 0.0; goto done; } else if (dist < bestDist) { bestDist = dist; } } /* * Compute the polygonal shape corresponding to this edge, * consisting of two points for the first point of the edge * and two points for the last point of the edge. */ if (count == numPoints) { TkGetButtPoints(coordPtr+2, coordPtr, (double) linePtr->width, linePtr->capStyle == CapProjecting, poly, poly+2); } else if ((linePtr->joinStyle == JoinMiter) && !changedMiterToBevel) { poly[0] = poly[6]; poly[1] = poly[7]; poly[2] = poly[4]; poly[3] = poly[5]; } else { TkGetButtPoints(coordPtr+2, coordPtr, (double) linePtr->width, 0, poly, poly+2); /* * If this line uses beveled joints, then check the distance * to a polygon comprising the last two points of the previous * polygon and the first two from this polygon; this checks * the wedges that fill the mitered joint. */ if ((linePtr->joinStyle == JoinBevel) || changedMiterToBevel) { poly[8] = poly[0]; poly[9] = poly[1]; dist = TkPolygonToPoint(poly, 5, pointPtr); if (dist <= 0.0) { bestDist = 0.0; goto done; } else if (dist < bestDist) { bestDist = dist; } changedMiterToBevel = 0; } } if (count == 2) { TkGetButtPoints(coordPtr, coordPtr+2, (double) linePtr->width, linePtr->capStyle == CapProjecting, poly+4, poly+6); } else if (linePtr->joinStyle == JoinMiter) { if (TkGetMiterPoints(coordPtr, coordPtr+2, coordPtr+4, (double) linePtr->width, poly+4, poly+6) == 0) { changedMiterToBevel = 1; TkGetButtPoints(coordPtr, coordPtr+2, (double) linePtr->width, 0, poly+4, poly+6); } } else { TkGetButtPoints(coordPtr, coordPtr+2, (double) linePtr->width, 0, poly+4, poly+6); } poly[8] = poly[0]; poly[9] = poly[1]; dist = TkPolygonToPoint(poly, 5, pointPtr); if (dist <= 0.0) { bestDist = 0.0; goto done; } else if (dist < bestDist) { bestDist = dist; } } /* * If caps are rounded, check the distance to the cap around the * final end point of the line. */ if (linePtr->capStyle == CapRound) { dist = hypot(coordPtr[0] - pointPtr[0], coordPtr[1] - pointPtr[1]) - linePtr->width/2.0; if (dist <= 0.0) { bestDist = 0.0; goto done; } else if (dist < bestDist) { bestDist = dist; } } /* * If there are arrowheads, check the distance to the arrowheads. */ if (linePtr->arrow != noneUid) { if (linePtr->arrow != lastUid) { dist = TkPolygonToPoint(linePtr->firstArrowPtr, PTS_IN_ARROW, pointPtr); if (dist <= 0.0) { bestDist = 0.0; goto done; } else if (dist < bestDist) { bestDist = dist; } } if (linePtr->arrow != firstUid) { dist = TkPolygonToPoint(linePtr->lastArrowPtr, PTS_IN_ARROW, pointPtr); if (dist <= 0.0) { bestDist = 0.0; goto done; } else if (dist < bestDist) { bestDist = dist; } } } done: if ((linePoints != staticSpace) && (linePoints != linePtr->coordPtr)) { ckfree((char *) linePoints); } return bestDist; } /* *-------------------------------------------------------------- * * LineToArea -- * * This procedure is called to determine whether an item * lies entirely inside, entirely outside, or overlapping * a given rectangular area. * * Results: * -1 is returned if the item is entirely outside the * area, 0 if it overlaps, and 1 if it is entirely * inside the given area. * * Side effects: * None. * *-------------------------------------------------------------- */ /* ARGSUSED */ static int LineToArea(canvasPtr, itemPtr, rectPtr) Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item to check against line. */ double *rectPtr; { register LineItem *linePtr = (LineItem *) itemPtr; register double *coordPtr; double staticSpace[2*MAX_STATIC_POINTS]; double *linePoints, poly[10]; double radius; int numPoints, count; int changedMiterToBevel; /* Non-zero means that a mitered corner * had to be treated as beveled after all * because the angle was < 11 degrees. */ int inside; /* Tentative guess about what to return, * based on all points seen so far: one * means everything seen so far was * inside the area; -1 means everything * was outside the area. 0 means overlap * has been found. */ radius = linePtr->width/2.0; inside = -1; /* * Handle smoothed lines by generating an expanded set of points * against which to do the check. */ if ((linePtr->smooth) && (linePtr->numPoints > 2)) { numPoints = 1 + linePtr->numPoints*linePtr->splineSteps; if (numPoints <= MAX_STATIC_POINTS) { linePoints = staticSpace; } else { linePoints = (double *) ckalloc((unsigned) (2*numPoints*sizeof(double))); } numPoints = TkMakeBezierCurve(canvasPtr, linePtr->coordPtr, linePtr->numPoints, linePtr->splineSteps, (XPoint *) NULL, linePoints); } else { numPoints = linePtr->numPoints; linePoints = linePtr->coordPtr; } coordPtr = linePoints; if ((coordPtr[0] >= rectPtr[0]) && (coordPtr[0] <= rectPtr[2]) && (coordPtr[1] >= rectPtr[1]) && (coordPtr[1] <= rectPtr[3])) { inside = 1; } /* * Iterate through all of the edges of the line, computing a polygon * for each edge and testing the area against that polygon. In * addition, there are additional tests to deal with rounded joints * and caps. */ changedMiterToBevel = 0; for (count = numPoints; count >= 2; count--, coordPtr += 2) { /* * If rounding is done around the first point of the edge * then test a circular region around the point with the * area. */ if (((linePtr->capStyle == CapRound) && (count == numPoints)) || ((linePtr->joinStyle == JoinRound) && (count != numPoints))) { poly[0] = coordPtr[0] - radius; poly[1] = coordPtr[1] - radius; poly[2] = coordPtr[0] + radius; poly[3] = coordPtr[1] + radius; if (TkOvalToArea(poly, rectPtr) != inside) { inside = 0; goto done; } } /* * Compute the polygonal shape corresponding to this edge, * consisting of two points for the first point of the edge * and two points for the last point of the edge. */ if (count == numPoints) { TkGetButtPoints(coordPtr+2, coordPtr, (double) linePtr->width, linePtr->capStyle == CapProjecting, poly, poly+2); } else if ((linePtr->joinStyle == JoinMiter) && !changedMiterToBevel) { poly[0] = poly[6]; poly[1] = poly[7]; poly[2] = poly[4]; poly[3] = poly[5]; } else { TkGetButtPoints(coordPtr+2, coordPtr, (double) linePtr->width, 0, poly, poly+2); /* * If the last joint was beveled, then also check a * polygon comprising the last two points of the previous * polygon and the first two from this polygon; this checks * the wedges that fill the beveled joint. */ if ((linePtr->joinStyle == JoinBevel) || changedMiterToBevel) { poly[8] = poly[0]; poly[9] = poly[1]; if (TkPolygonToArea(poly, 5, rectPtr) != inside) { inside = 0; goto done; } changedMiterToBevel = 0; } } if (count == 2) { TkGetButtPoints(coordPtr, coordPtr+2, (double) linePtr->width, linePtr->capStyle == CapProjecting, poly+4, poly+6); } else if (linePtr->joinStyle == JoinMiter) { if (TkGetMiterPoints(coordPtr, coordPtr+2, coordPtr+4, (double) linePtr->width, poly+4, poly+6) == 0) { changedMiterToBevel = 1; TkGetButtPoints(coordPtr, coordPtr+2, (double) linePtr->width, 0, poly+4, poly+6); } } else { TkGetButtPoints(coordPtr, coordPtr+2, (double) linePtr->width, 0, poly+4, poly+6); } poly[8] = poly[0]; poly[9] = poly[1]; if (TkPolygonToArea(poly, 5, rectPtr) != inside) { inside = 0; goto done; } } /* * If caps are rounded, check the cap around the final point * of the line. */ if (linePtr->capStyle == CapRound) { poly[0] = coordPtr[0] - radius; poly[1] = coordPtr[1] - radius; poly[2] = coordPtr[0] + radius; poly[3] = coordPtr[1] + radius; if (TkOvalToArea(poly, rectPtr) != inside) { inside = 0; goto done; } } /* * Check arrowheads, if any. */ if (linePtr->arrow != noneUid) { if (linePtr->arrow != lastUid) { if (TkPolygonToArea(linePtr->firstArrowPtr, PTS_IN_ARROW, rectPtr) != inside) { inside = 0; goto done; } } if (linePtr->arrow != firstUid) { if (TkPolygonToArea(linePtr->lastArrowPtr, PTS_IN_ARROW, rectPtr) != inside) { inside = 0; goto done; } } } done: if ((linePoints != staticSpace) && (linePoints != linePtr->coordPtr)) { ckfree((char *) linePoints); } return inside; } /* *-------------------------------------------------------------- * * ScaleLine -- * * This procedure is invoked to rescale a line item. * * Results: * None. * * Side effects: * The line referred to by itemPtr is rescaled so that the * following transformation is applied to all point * coordinates: * x' = originX + scaleX*(x-originX) * y' = originY + scaleY*(y-originY) * *-------------------------------------------------------------- */ static void ScaleLine(canvasPtr, itemPtr, originX, originY, scaleX, scaleY) Tk_Canvas *canvasPtr; /* Canvas containing line. */ Tk_Item *itemPtr; /* Line to be scaled. */ double originX, originY; /* Origin about which to scale rect. */ double scaleX; /* Amount to scale in X direction. */ double scaleY; /* Amount to scale in Y direction. */ { LineItem *linePtr = (LineItem *) itemPtr; register double *coordPtr; int i; for (i = 0, coordPtr = linePtr->coordPtr; i < linePtr->numPoints; i++, coordPtr += 2) { coordPtr[0] = originX + scaleX*(*coordPtr - originX); coordPtr[1] = originY + scaleY*(coordPtr[1] - originY); } if (linePtr->firstArrowPtr != NULL) { for (i = 0, coordPtr = linePtr->firstArrowPtr; i < PTS_IN_ARROW; i++, coordPtr += 2) { coordPtr[0] = originX + scaleX*(coordPtr[0] - originX); coordPtr[1] = originY + scaleY*(coordPtr[1] - originY); } } if (linePtr->lastArrowPtr != NULL) { for (i = 0, coordPtr = linePtr->lastArrowPtr; i < PTS_IN_ARROW; i++, coordPtr += 2) { coordPtr[0] = originX + scaleX*(coordPtr[0] - originX); coordPtr[1] = originY + scaleY*(coordPtr[1] - originY); } } ComputeLineBbox(canvasPtr, linePtr); } /* *-------------------------------------------------------------- * * TranslateLine -- * * This procedure is called to move a line by a given amount. * * Results: * None. * * Side effects: * The position of the line is offset by (xDelta, yDelta), and * the bounding box is updated in the generic part of the item * structure. * *-------------------------------------------------------------- */ static void TranslateLine(canvasPtr, itemPtr, deltaX, deltaY) Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item that is being moved. */ double deltaX, deltaY; /* Amount by which item is to be * moved. */ { LineItem *linePtr = (LineItem *) itemPtr; register double *coordPtr; int i; for (i = 0, coordPtr = linePtr->coordPtr; i < linePtr->numPoints; i++, coordPtr += 2) { coordPtr[0] += deltaX; coordPtr[1] += deltaY; } if (linePtr->firstArrowPtr != NULL) { for (i = 0, coordPtr = linePtr->firstArrowPtr; i < PTS_IN_ARROW; i++, coordPtr += 2) { coordPtr[0] += deltaX; coordPtr[1] += deltaY; } } if (linePtr->lastArrowPtr != NULL) { for (i = 0, coordPtr = linePtr->lastArrowPtr; i < PTS_IN_ARROW; i++, coordPtr += 2) { coordPtr[0] += deltaX; coordPtr[1] += deltaY; } } ComputeLineBbox(canvasPtr, linePtr); } /* *-------------------------------------------------------------- * * ParseArrowShape -- * * This procedure is called back during option parsing to * parse arrow shape information. * * Results: * The return value is a standard Tcl result: TCL_OK means * that the arrow shape information was parsed ok, and * TCL_ERROR means it couldn't be parsed. * * Side effects: * Arrow information in recordPtr is updated. * *-------------------------------------------------------------- */ /* ARGSUSED */ static int ParseArrowShape(clientData, interp, tkwin, value, recordPtr, offset) ClientData clientData; /* Not used. */ Tcl_Interp *interp; /* Used for error reporting. */ Tk_Window tkwin; /* Not used. */ char *value; /* Textual specification of arrow shape. */ char *recordPtr; /* Pointer to item record in which to * store arrow information. */ int offset; /* Offset of shape information in widget * record. */ { LineItem *linePtr = (LineItem *) recordPtr; double a, b, c; int argc; char **argv = NULL; if (offset != Tk_Offset(LineItem, arrowShapeA)) { panic("ParseArrowShape received bogus offset"); } if (Tcl_SplitList(interp, value, &argc, &argv) != TCL_OK) { syntaxError: Tcl_ResetResult(interp); Tcl_AppendResult(interp, "bad arrow shape \"", value, "\": must be list with three numbers", (char *) NULL); if (argv != NULL) { ckfree((char *) argv); } return TCL_ERROR; } if (argc != 3) { goto syntaxError; } if ((TkGetCanvasCoord(linePtr->canvasPtr, argv[0], &a) != TCL_OK) || (TkGetCanvasCoord(linePtr->canvasPtr, argv[1], &b) != TCL_OK) || (TkGetCanvasCoord(linePtr->canvasPtr, argv[2], &c) != TCL_OK)) { goto syntaxError; } linePtr->arrowShapeA = a; linePtr->arrowShapeB = b; linePtr->arrowShapeC = c; ckfree((char *) argv); return TCL_OK; } /* *-------------------------------------------------------------- * * PrintArrowShape -- * * This procedure is a callback invoked by the configuration * code to return a printable value describing an arrow shape. * * Results: * None. * * Side effects: * None. * *-------------------------------------------------------------- */ /* ARGSUSED */ static char * PrintArrowShape(clientData, tkwin, recordPtr, offset, freeProcPtr) ClientData clientData; /* Not used. */ Tk_Window tkwin; /* Window associated with linePtr's widget. */ char *recordPtr; /* Pointer to item record containing current * shape information. */ int offset; /* Offset of arrow information in record. */ Tcl_FreeProc **freeProcPtr; /* Store address of procedure to call to * free string here. */ { LineItem *linePtr = (LineItem *) recordPtr; char *buffer; buffer = ckalloc(120); sprintf(buffer, "%.5g %.5g %.5g", linePtr->arrowShapeA, linePtr->arrowShapeB, linePtr->arrowShapeC); *freeProcPtr = (Tcl_FreeProc *) free; return buffer; } /* *-------------------------------------------------------------- * * ConfigureArrows -- * * If arrowheads have been requested for a line, this * procedure makes arrangements for the arrowheads. * * Results: * A standard Tcl return value. If an error occurs, then * an error message is left in canvasPtr->interp->result. * * Side effects: * Information in linePtr is set up for one or two arrowheads. * the firstArrowPtr and lastArrowPtr polygons are allocated * and initialized, if need be, and the end points of the line * are adjusted so that a thick line doesn't stick out past * the arrowheads. * *-------------------------------------------------------------- */ /* ARGSUSED */ static int ConfigureArrows(canvasPtr, linePtr) Tk_Canvas *canvasPtr; /* Canvas in which arrows will be * displayed (interp and tkwin * fields are needed). */ register LineItem *linePtr; /* Item to configure for arrows. */ { double *poly, *coordPtr; double dx, dy, length, sinTheta, cosTheta, temp, shapeC; double fracHeight; /* Line width as fraction of * arrowhead width. */ double backup; /* Distance to backup end points * so the line ends in the middle * of the arrowhead. */ double vertX, vertY; /* Position of arrowhead vertex. */ /* * If there's an arrowhead on the first point of the line, compute * its polygon and adjust the first point of the line so that the * line doesn't stick out past the leading edge of the arrowhead. */ shapeC = linePtr->arrowShapeC + linePtr->width/2.0; fracHeight = (linePtr->width/2.0)/shapeC; backup = fracHeight*linePtr->arrowShapeB + linePtr->arrowShapeA*(1.0 - fracHeight)/2.0; if (linePtr->arrow != lastUid) { poly = linePtr->firstArrowPtr; if (poly == NULL) { poly = (double *) ckalloc((unsigned) (2*PTS_IN_ARROW*sizeof(double))); poly[0] = poly[10] = linePtr->coordPtr[0]; poly[1] = poly[11] = linePtr->coordPtr[1]; linePtr->firstArrowPtr = poly; } dx = poly[0] - linePtr->coordPtr[2]; dy = poly[1] - linePtr->coordPtr[3]; length = hypot(dx, dy); if (length == 0) { sinTheta = cosTheta = 0.0; } else { sinTheta = dy/length; cosTheta = dx/length; } vertX = poly[0] - linePtr->arrowShapeA*cosTheta; vertY = poly[1] - linePtr->arrowShapeA*sinTheta; temp = shapeC*sinTheta; poly[2] = poly[0] - linePtr->arrowShapeB*cosTheta + temp; poly[8] = poly[2] - 2*temp; temp = shapeC*cosTheta; poly[3] = poly[1] - linePtr->arrowShapeB*sinTheta - temp; poly[9] = poly[3] + 2*temp; poly[4] = poly[2]*fracHeight + vertX*(1.0-fracHeight); poly[5] = poly[3]*fracHeight + vertY*(1.0-fracHeight); poly[6] = poly[8]*fracHeight + vertX*(1.0-fracHeight); poly[7] = poly[9]*fracHeight + vertY*(1.0-fracHeight); /* * Polygon done. Now move the first point towards the second so * that the corners at the end of the line are inside the * arrowhead. */ linePtr->coordPtr[0] = poly[0] - backup*cosTheta; linePtr->coordPtr[1] = poly[1] - backup*sinTheta; } /* * Similar arrowhead calculation for the last point of the line. */ if (linePtr->arrow != firstUid) { coordPtr = linePtr->coordPtr + 2*(linePtr->numPoints-2); poly = linePtr->lastArrowPtr; if (poly == NULL) { poly = (double *) ckalloc((unsigned) (2*PTS_IN_ARROW*sizeof(double))); poly[0] = poly[10] = coordPtr[2]; poly[1] = poly[11] = coordPtr[3]; linePtr->lastArrowPtr = poly; } dx = poly[0] - coordPtr[0]; dy = poly[1] - coordPtr[1]; length = hypot(dx, dy); if (length == 0) { sinTheta = cosTheta = 0.0; } else { sinTheta = dy/length; cosTheta = dx/length; } vertX = poly[0] - linePtr->arrowShapeA*cosTheta; vertY = poly[1] - linePtr->arrowShapeA*sinTheta; temp = shapeC*sinTheta; poly[2] = poly[0] - linePtr->arrowShapeB*cosTheta + temp; poly[8] = poly[2] - 2*temp; temp = shapeC*cosTheta; poly[3] = poly[1] - linePtr->arrowShapeB*sinTheta - temp; poly[9] = poly[3] + 2*temp; poly[4] = poly[2]*fracHeight + vertX*(1.0-fracHeight); poly[5] = poly[3]*fracHeight + vertY*(1.0-fracHeight); poly[6] = poly[8]*fracHeight + vertX*(1.0-fracHeight); poly[7] = poly[9]*fracHeight + vertY*(1.0-fracHeight); coordPtr[2] = poly[0] - backup*cosTheta; coordPtr[3] = poly[1] - backup*sinTheta; } return TCL_OK; } micropolis-activity/src/tk/makefile.hpux0000664000076400007640000000657210724145723020735 0ustar simcitysimcity# # This is a simplified Makefile for use in Tk distributions. Before using # it to compile Tk, you may wish to reset some of the following variables: # # TCL_DIR - Name of directory holding tcl.h and tcl.a. # XLIB - Name of archive containing Xlib binaries. # # You may also wish to add some of the following switches to the CFLAGS # variable: # # -DX11R3 Causes code that depends on R4 facilities not to # be compiled. I haven't tested Tk with R3 in quite # a while, so this switch may not be enough to # generate a working R3 version of Tk. Furthermore, # use of this switch will disable some of the facilities # of Tk related to window managers. # -DNO_PROTOTYPE Turns off ANSI-style procedure prototypes and the # corresponding compile-time checks. Without this # defininition, prototypes will be turned on if the # compiler supports ANSI C by defining __STDC__. # -DTK_LIBRARY=\"dir\" Arranges for dir, which must be the name of a # directory, to be the library directory for Tk scripts. # This value gets put into the variable $tk_library # when a new application is created. The library # defaults to /usr/local/lib/tk, so you don't need the # switch unless your library is in a non-standard place. # CC = cc -Aa \ -D_INCLUDE_AES_SOURCE \ -D_INCLUDE_POSIX_SOURCE \ -D_INCLUDE_XOPEN_SOURCE \ -D_INCLUDE_HPUX_SOURCE CFLAGS = -I. -I$(TCL_DIR) -O -DTK_VERSION=\"2.3\" -DUSE_XPM3 -I$(XPM_DIR) #CC = gcc #CFLAGS = -I. -I$(TCL_DIR) -g -DTK_VERSION=\"2.3\" -DUSE_XPM3 -I$(XPM_DIR) TCL_DIR = ../tcl XPM_DIR = ../xpm XLIB = -L/usr/lib/X11R5 -lX11 #LIBS = libtk.a $(TCL_DIR)/libtcl.a $(XPM_DIR)/libxpm.a LIBS = libtk.a $(TCL_DIR)/libtcl.a $(XPM_DIR)/libxpm.a #LINKS = $(LIBS) -lsocket -lnsl LINKS = $(LIBS) WIDGOBJS = tkbutton.o tkentry.o tkframe.o tklist.o \ tkmenu.o tkmnbut.o tkmsg.o tkscale.o \ tkscrbar.o CANVOBJS = tkcanvas.o tkcvarc.o tkcvbmap.o tkcvline.o \ tkcvpoly.o tkcvtext.o tkcvwind.o tkrectov.o \ tktrig.o TEXTOBJS = tktext.o tktxbtre.o tktxdisp.o tktxidx.o tktxtag.o OBJS = tk3d.o tkargv.o tkatom.o tkbind.o tkbitmap.o \ tkcmds.o tkcolor.o tkconfig.o tkcursor.o tkerror.o \ tkevent.o tkfont.o tkget.o tkgc.o tkgeo.o tkgrab.o \ tkoption.o tkpack.o tkpixmap.o tkplace.o tkpresrv.o \ tkselect.o tksend.o tkshare.o tkwindow.o tkwm.o tkrawtcp.o \ $(WIDGOBJS) $(CANVOBJS) $(TEXTOBJS) WIDGSRCS = tkbutton.c tkentry.c tkframe.c tklist.c \ tkmenu.c tkmnbut.c tkmessage.c tkscale.c \ tkscrbar.c tktext.c tktxbtre.c tktxdisp.c \ tktextindex.c CANVSRCS = tkcanvas.c tkcvarc.c tkcvbmap.c tkcvline.c \ tkcvpoly.c tkcvtext.c tkcvwind.c tkrectov.c \ tktrig.c TEXTSRCS = tktext.c tktxbtre.c tktxdisp.c tktxidx.c tktxtag.c SRCS = tk3d.c tkargv.c tkatom.c tkbind.c tkbitmap.c \ tkcmds.c tkcolor.c tkconfig.c tkcursor.c tkerror.c \ tkevent.c tkfont.c tkget.c tkgc.c tkgeo.c tkgrab.c \ tkoption.c tkpack.c tkplace.c tkpresrv.c tkselect.c \ tksend.c tkshare.c tkwindow.c tkwm.c tkrawtcp.c $(widgsrcs) \ $(CANVSRCS) $(TEXTSRCS) all: wish wish: main.o $(LIBS) $(CC) $(CFLAGS) main.o $(LINKS) $(XLIB) -lm -o wish libtk.a: $(OBJS) rm -f libtk.a ar cr libtk.a $(OBJS) # ranlib libtk.a $(TCL_DIR)/libtcl.a: cd $(TCL_DIR); make libtcl.a clean: touch junk~ rm -f $(OBJS) main.o libtk.a wish *~ $(OBJS): tk.h tkint.h tkconfig.h $(WIDGOBJS): default.h $(CANVOBJS): default.h tkcanvas.h main.o: tk.h tkint.h micropolis-activity/src/tk/tkcursor.c0000664000076400007640000004541010724145723020264 0ustar simcitysimcity/* * tkCursor.c -- * * This file maintains a database of read-only cursors for the Tk * toolkit. This allows cursors to be shared between widgets and * also avoids round-trips to the X server. * * Copyright 1990 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkCursor.c,v 1.12 91/10/31 11:40:41 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include "tkconfig.h" #include "tkint.h" /* * One of the following data structures exists for each cursor that is * currently active. Each structure is indexed with two hash tables * defined below. One of the tables is idTable, and the other is either * nameTable or dataTable, also defined below. * . */ typedef struct { Cursor cursor; /* X identifier for cursor. */ Display *display; /* Display for which cursor is valid. */ int refCount; /* Number of active uses of cursor. */ Tcl_HashTable *otherTable; /* Second table (other than idTable) used * to index this entry. */ Tcl_HashEntry *hashPtr; /* Entry in otherTable for this structure * (needed when deleting). */ } TkCursor; /* * Hash table to map from a textual description of a cursor to the * TkCursor record for the cursor, and key structure used in that * hash table: */ static Tcl_HashTable nameTable; typedef struct { Tk_Uid name; /* Textual name for desired cursor. */ Display *display; /* Display for which cursor will be used. */ } NameKey; /* * Hash table to map from a collection of in-core data about a * cursor (bitmap contents, etc.) to a TkCursor structure: */ static Tcl_HashTable dataTable; typedef struct { char *source; /* Cursor bits. */ char *mask; /* Mask bits. */ unsigned int width, height; /* Dimensions of cursor (and data * and mask). */ int xHot, yHot; /* Location of cursor hot-spot. */ Tk_Uid fg, bg; /* Colors for cursor. */ Display *display; /* Display on which cursor will be used. */ } DataKey; /* * Hash table that maps from Cursor identifiers to the TkCursor structure * for the cursor. This table is indexed by Cursor ids, and is used by * Tk_FreeCursor. */ static Tcl_HashTable idTable; static int initialized = 0; /* 0 means static structures haven't been * initialized yet. */ /* * The table below is used to map from the name of a cursor to its * index in the official cursor font: */ static struct CursorName { char *name; unsigned int shape; } cursorNames[] = { {"X_cursor", XC_X_cursor}, {"arrow", XC_arrow}, {"based_arrow_down", XC_based_arrow_down}, {"based_arrow_up", XC_based_arrow_up}, {"boat", XC_boat}, {"bogosity", XC_bogosity}, {"bottom_left_corner", XC_bottom_left_corner}, {"bottom_right_corner", XC_bottom_right_corner}, {"bottom_side", XC_bottom_side}, {"bottom_tee", XC_bottom_tee}, {"box_spiral", XC_box_spiral}, {"center_ptr", XC_center_ptr}, {"circle", XC_circle}, {"clock", XC_clock}, {"coffee_mug", XC_coffee_mug}, {"cross", XC_cross}, {"cross_reverse", XC_cross_reverse}, {"crosshair", XC_crosshair}, {"diamond_cross", XC_diamond_cross}, {"dot", XC_dot}, {"dotbox", XC_dotbox}, {"double_arrow", XC_double_arrow}, {"draft_large", XC_draft_large}, {"draft_small", XC_draft_small}, {"draped_box", XC_draped_box}, {"exchange", XC_exchange}, {"fleur", XC_fleur}, {"gobbler", XC_gobbler}, {"gumby", XC_gumby}, {"hand1", XC_hand1}, {"hand2", XC_hand2}, {"heart", XC_heart}, {"icon", XC_icon}, {"iron_cross", XC_iron_cross}, {"left_ptr", XC_left_ptr}, {"left_side", XC_left_side}, {"left_tee", XC_left_tee}, {"leftbutton", XC_leftbutton}, {"ll_angle", XC_ll_angle}, {"lr_angle", XC_lr_angle}, {"man", XC_man}, {"middlebutton", XC_middlebutton}, {"mouse", XC_mouse}, {"pencil", XC_pencil}, {"pirate", XC_pirate}, {"plus", XC_plus}, {"question_arrow", XC_question_arrow}, {"right_ptr", XC_right_ptr}, {"right_side", XC_right_side}, {"right_tee", XC_right_tee}, {"rightbutton", XC_rightbutton}, {"rtl_logo", XC_rtl_logo}, {"sailboat", XC_sailboat}, {"sb_down_arrow", XC_sb_down_arrow}, {"sb_h_double_arrow", XC_sb_h_double_arrow}, {"sb_left_arrow", XC_sb_left_arrow}, {"sb_right_arrow", XC_sb_right_arrow}, {"sb_up_arrow", XC_sb_up_arrow}, {"sb_v_double_arrow", XC_sb_v_double_arrow}, {"shuttle", XC_shuttle}, {"sizing", XC_sizing}, {"spider", XC_spider}, {"spraycan", XC_spraycan}, {"star", XC_star}, {"target", XC_target}, {"tcross", XC_tcross}, {"top_left_arrow", XC_top_left_arrow}, {"top_left_corner", XC_top_left_corner}, {"top_right_corner", XC_top_right_corner}, {"top_side", XC_top_side}, {"top_tee", XC_top_tee}, {"trek", XC_trek}, {"ul_angle", XC_ul_angle}, {"umbrella", XC_umbrella}, {"ur_angle", XC_ur_angle}, {"watch", XC_watch}, {"xterm", XC_xterm}, {NULL, 0} }; /* * Font to use for cursors: */ #ifndef CURSORFONT #define CURSORFONT "cursor" #endif /* * Forward declarations for procedures defined in this file: */ static void CursorInit _ANSI_ARGS_((void)); /* *---------------------------------------------------------------------- * * Tk_GetCursor -- * * Given a string describing a cursor, locate (or create if necessary) * a cursor that fits the description. * * Results: * The return value is the X identifer for the desired cursor, * unless string couldn't be parsed correctly. In this case, * None is returned and an error message is left in interp->result. * The caller should never modify the cursor that is returned, and * should eventually call Tk_FreeCursor when the cursor is no longer * needed. * * Side effects: * The cursor is added to an internal database with a reference count. * For each call to this procedure, there should eventually be a call * to Tk_FreeCursor, so that the database can be cleaned up when cursors * aren't needed anymore. * *---------------------------------------------------------------------- */ Cursor Tk_GetCursor(interp, tkwin, string) Tcl_Interp *interp; /* Interpreter to use for error reporting. */ Tk_Window tkwin; /* Window in which cursor will be used. */ Tk_Uid string; /* Description of cursor. See manual entry * for details on legal syntax. */ { NameKey key; Tcl_HashEntry *nameHashPtr, *idHashPtr; register TkCursor *cursorPtr; int new; Cursor cursor; int argc; char **argv = NULL; Pixmap source = None; Pixmap mask = None; if (!initialized) { CursorInit(); } key.name = string; key.display = Tk_Display(tkwin); nameHashPtr = Tcl_CreateHashEntry(&nameTable, (char *) &key, &new); if (!new) { cursorPtr = (TkCursor *) Tcl_GetHashValue(nameHashPtr); cursorPtr->refCount++; return cursorPtr->cursor; } /* * No suitable cursor exists. Parse the cursor name into fields * and create a cursor, either from the standard cursor font or * from bitmap files. */ if (Tcl_SplitList(interp, string, &argc, &argv) != TCL_OK) { goto error; } if (argc == 0) { badString: Tcl_AppendResult(interp, "bad cursor spec \"", string, "\"", (char *) NULL); goto error; } if (argv[0][0] != '@') { XColor fg, bg; int maskIndex; register struct CursorName *namePtr; TkDisplay *dispPtr; /* * The cursor is to come from the standard cursor font. If one * arg, it is cursor name (use black and white for fg and bg). * If two args, they are name and fg color (ignore mask). If * three args, they are name, fg, bg. Some of the code below * is stolen from the XCreateFontCursor Xlib procedure. */ if (argc > 3) { goto badString; } for (namePtr = cursorNames; ; namePtr++) { if (namePtr->name == NULL) { goto badString; } if ((namePtr->name[0] == argv[0][0]) && (strcmp(namePtr->name, argv[0]) == 0)) { break; } } maskIndex = namePtr->shape + 1; if (argc == 1) { fg.red = fg.green = fg.blue = 0; bg.red = bg.green = bg.blue = 65535; } else { if (XParseColor(key.display, Tk_DefaultColormap(Tk_Screen(tkwin)), argv[1], &fg) == 0) { Tcl_AppendResult(interp, "invalid color name \"", argv[1], "\"", (char *) NULL); goto error; } if (argc == 2) { bg.red = bg.green = bg.blue = 0; maskIndex = namePtr->shape; } else { if (XParseColor(key.display, Tk_DefaultColormap(Tk_Screen(tkwin)), argv[2], &bg) == 0) { Tcl_AppendResult(interp, "invalid color name \"", argv[2], "\"", (char *) NULL); goto error; } } } dispPtr = ((TkWindow *) tkwin)->dispPtr; if (dispPtr->cursorFont == None) { dispPtr->cursorFont = XLoadFont(key.display, CURSORFONT); if (dispPtr->cursorFont == None) { interp->result = "couldn't load cursor font"; goto error; } } cursor = XCreateGlyphCursor(key.display, dispPtr->cursorFont, dispPtr->cursorFont, namePtr->shape, maskIndex, &fg, &bg); } else { unsigned int width, height, maskWidth, maskHeight; int xHot, yHot, dummy1, dummy2; XColor fg, bg; /* * The cursor is to be created by reading bitmap files. There * should be either two elements in the list (source, color) or * four (source mask fg bg). */ if ((argc != 2) && (argc != 4)) { goto badString; } if (XReadBitmapFile(key.display, RootWindowOfScreen(Tk_Screen(tkwin)), &argv[0][1], &width, &height, &source, &xHot, &yHot) != BitmapSuccess) { Tcl_AppendResult(interp, "error reading bitmap file \"", &argv[0][1], "\"", (char *) NULL); goto error; } if ((xHot < 0) || (yHot < 0) || (xHot >= width) || (yHot >= height)) { Tcl_AppendResult(interp, "bad hot spot in bitmap file \"", &argv[0][1], "\"", (char *) NULL); goto error; } if (argc == 2) { if (XParseColor(key.display, Tk_DefaultColormap(Tk_Screen(tkwin)), argv[1], &fg) == 0) { Tcl_AppendResult(interp, "invalid color name \"", argv[1], "\"", (char *) NULL); goto error; } cursor = XCreatePixmapCursor(key.display, source, source, &fg, &fg, xHot, yHot); } else { if (XReadBitmapFile(key.display, RootWindowOfScreen(Tk_Screen(tkwin)), argv[1], &maskWidth, &maskHeight, &mask, &dummy1, &dummy2) != BitmapSuccess) { Tcl_AppendResult(interp, "error reading bitmap file \"", argv[1], "\"", (char *) NULL); goto error; } if ((maskWidth != width) && (maskHeight != height)) { interp->result = "source and mask bitmaps have different sizes"; goto error; } if (XParseColor(key.display, Tk_DefaultColormap(Tk_Screen(tkwin)), argv[2], &fg) == 0) { Tcl_AppendResult(interp, "invalid color name \"", argv[2], "\"", (char *) NULL); goto error; } if (XParseColor(key.display, Tk_DefaultColormap(Tk_Screen(tkwin)), argv[3], &bg) == 0) { Tcl_AppendResult(interp, "invalid color name \"", argv[3], "\"", (char *) NULL); goto error; } cursor = XCreatePixmapCursor(key.display, source, mask, &fg, &bg, xHot, yHot); } } ckfree((char *) argv); /* * Add information about this cursor to our database. */ cursorPtr = (TkCursor *) ckalloc(sizeof(TkCursor)); cursorPtr->cursor = cursor; cursorPtr->display = key.display; cursorPtr->refCount = 1; cursorPtr->otherTable = &nameTable; cursorPtr->hashPtr = nameHashPtr; idHashPtr = Tcl_CreateHashEntry(&idTable, (char *) cursorPtr->cursor, &new); if (!new) { /* deh patched to support multiple displays */ /* panic("cursor already registered in Tk_GetCursor"); */ cursorPtr->refCount = 1000; } Tcl_SetHashValue(nameHashPtr, cursorPtr); Tcl_SetHashValue(idHashPtr, cursorPtr); return cursorPtr->cursor; error: Tcl_DeleteHashEntry(nameHashPtr); if (argv != NULL) { ckfree((char *) argv); } if (source != None) { XFreePixmap(key.display, source); } if (mask != None) { XFreePixmap(key.display, mask); } return None; } /* *---------------------------------------------------------------------- * * Tk_GetCursorFromData -- * * Given a description of the bits and colors for a cursor, * make a cursor that has the given properties. * * Results: * The return value is the X identifer for the desired cursor, * unless it couldn't be created properly. In this case, None is * returned and an error message is left in interp->result. The * caller should never modify the cursor that is returned, and * should eventually call Tk_FreeCursor when the cursor is no * longer needed. * * Side effects: * The cursor is added to an internal database with a reference count. * For each call to this procedure, there should eventually be a call * to Tk_FreeCursor, so that the database can be cleaned up when cursors * aren't needed anymore. * *---------------------------------------------------------------------- */ Cursor Tk_GetCursorFromData(interp, tkwin, source, mask, width, height, xHot, yHot, fg, bg) Tcl_Interp *interp; /* Interpreter to use for error reporting. */ Tk_Window tkwin; /* Window in which cursor will be used. */ char *source; /* Bitmap data for cursor shape. */ char *mask; /* Bitmap data for cursor mask. */ unsigned int width, height; /* Dimensions of cursor. */ int xHot, yHot; /* Location of hot-spot in cursor. */ Tk_Uid fg; /* Foreground color for cursor. */ Tk_Uid bg; /* Background color for cursor. */ { DataKey key; Tcl_HashEntry *dataHashPtr, *idHashPtr; register TkCursor *cursorPtr; int new; XColor fgColor, bgColor; Pixmap sourcePixmap, maskPixmap; if (!initialized) { CursorInit(); } key.source = source; key.mask = mask; key.width = width; key.height = height; key.xHot = xHot; key.yHot = yHot; key.fg = fg; key.bg = bg; key.display = Tk_Display(tkwin); dataHashPtr = Tcl_CreateHashEntry(&dataTable, (char *) &key, &new); if (!new) { cursorPtr = (TkCursor *) Tcl_GetHashValue(dataHashPtr); cursorPtr->refCount++; return cursorPtr->cursor; } /* * No suitable cursor exists yet. Make one using the data * available and add it to the database. */ if (XParseColor(key.display, Tk_DefaultColormap(Tk_Screen(tkwin)), fg, &fgColor) == 0) { Tcl_AppendResult(interp, "invalid color name \"", fg, "\"", (char *) NULL); goto error; } if (XParseColor(key.display, Tk_DefaultColormap(Tk_Screen(tkwin)), bg, &bgColor) == 0) { Tcl_AppendResult(interp, "invalid color name \"", bg, "\"", (char *) NULL); goto error; } cursorPtr = (TkCursor *) ckalloc(sizeof(TkCursor)); sourcePixmap = XCreateBitmapFromData(key.display, RootWindowOfScreen(Tk_Screen(tkwin)), source, width, height); maskPixmap = XCreateBitmapFromData(key.display, RootWindowOfScreen(Tk_Screen(tkwin)), mask, width, height); cursorPtr->cursor = XCreatePixmapCursor(key.display, sourcePixmap, maskPixmap, &fgColor, &bgColor, xHot, yHot); XFreePixmap(key.display, sourcePixmap); XFreePixmap(key.display, maskPixmap); cursorPtr->display = key.display; cursorPtr->refCount = 1; cursorPtr->otherTable = &dataTable; cursorPtr->hashPtr = dataHashPtr; idHashPtr = Tcl_CreateHashEntry(&idTable, (char *) cursorPtr->cursor, &new); if (!new) { /* deh patched to support multiple displays */ /* panic("cursor already registered in Tk_GetCursorFromData"); */ cursorPtr->refCount = 1000; } Tcl_SetHashValue(dataHashPtr, cursorPtr); Tcl_SetHashValue(idHashPtr, cursorPtr); return cursorPtr->cursor; error: Tcl_DeleteHashEntry(dataHashPtr); return None; } /* *-------------------------------------------------------------- * * Tk_NameOfCursor -- * * Given a cursor, return a textual string identifying it. * * Results: * If cursor was created by Tk_GetCursor, then the return * value is the "string" that was used to create it. * Otherwise the return value is a string giving the X * identifier for the cursor. The storage for the returned * string is only guaranteed to persist up until the next * call to this procedure. * * Side effects: * None. * *-------------------------------------------------------------- */ char * Tk_NameOfCursor(cursor) Cursor cursor; /* Cursor to be released. */ { Tcl_HashEntry *idHashPtr; TkCursor *cursorPtr; static char string[20]; if (!initialized) { printid: sprintf(string, "cursor id 0x%x", cursor); return string; } idHashPtr = Tcl_FindHashEntry(&idTable, (char *) cursor); if (idHashPtr == NULL) { goto printid; } cursorPtr = (TkCursor *) Tcl_GetHashValue(idHashPtr); if (cursorPtr->otherTable != &nameTable) { goto printid; } return ((NameKey *) cursorPtr->hashPtr->key.words)->name; } /* *---------------------------------------------------------------------- * * Tk_FreeCursor -- * * This procedure is called to release a cursor allocated by * Tk_GetCursor or TkGetCursorFromData. * * Results: * None. * * Side effects: * The reference count associated with cursor is decremented, and * it is officially deallocated if no-one is using it anymore. * *---------------------------------------------------------------------- */ void Tk_FreeCursor(cursor) Cursor cursor; /* Cursor to be released. */ { Tcl_HashEntry *idHashPtr; register TkCursor *cursorPtr; if (!initialized) { panic("Tk_FreeCursor called before Tk_GetCursor"); } idHashPtr = Tcl_FindHashEntry(&idTable, (char *) cursor); if (idHashPtr == NULL) { panic("Tk_FreeCursor received unknown cursor argument"); } cursorPtr = (TkCursor *) Tcl_GetHashValue(idHashPtr); cursorPtr->refCount--; if (cursorPtr->refCount == 0) { XFreeCursor(cursorPtr->display, cursorPtr->cursor); Tcl_DeleteHashEntry(cursorPtr->hashPtr); Tcl_DeleteHashEntry(idHashPtr); ckfree((char *) cursorPtr); } } /* *---------------------------------------------------------------------- * * CursorInit -- * * Initialize the structures used for cursor management. * * Results: * None. * * Side effects: * Read the code. * *---------------------------------------------------------------------- */ static void CursorInit() { initialized = 1; Tcl_InitHashTable(&nameTable, sizeof(NameKey)/sizeof(long)); Tcl_InitHashTable(&dataTable, sizeof(DataKey)/sizeof(long)); Tcl_InitHashTable(&idTable, TCL_ONE_WORD_KEYS); } micropolis-activity/src/tk/tkentry.c0000664000076400007640000015423410724145723020115 0ustar simcitysimcity/* * tkEntry.c -- * * This module implements entry widgets for the Tk * toolkit. An entry displays a string and allows * the string to be edited. * * Copyright 1990 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkEntry.c,v 1.37 92/08/21 16:09:15 ouster Exp $ SPRITE (Berkeley)"; #endif #include "default.h" #include "tkconfig.h" #include "tkint.h" /* * A data structure of the following type is kept for each entry * widget managed by this file: */ typedef struct { Tk_Window tkwin; /* Window that embodies the entry. NULL * means that the window has been destroyed * but the data structures haven't yet been * cleaned up.*/ Tcl_Interp *interp; /* Interpreter associated with entry. */ int numChars; /* Number of non-NULL characters in * string (may be 0). */ char *string; /* Pointer to storage for string; * NULL-terminated; malloc-ed. */ char *textVarName; /* Name of variable (malloc'ed) or NULL. * If non-NULL, entry's string tracks the * contents of this variable and vice versa. */ Tk_Uid state; /* Normal or disabled. Entry is read-only * when disabled. */ /* * Information used when displaying widget: */ Tk_3DBorder normalBorder; /* Used for drawing border around whole * window, plus used for background. */ int borderWidth; /* Width of 3-D border around window. */ int relief; /* 3-D effect: TK_RELIEF_RAISED, etc. */ XFontStruct *fontPtr; /* Information about text font, or NULL. */ XColor *fgColorPtr; /* Text color in normal mode. */ GC textGC; /* For drawing normal text. */ Tk_3DBorder selBorder; /* Border and background for selected * characters. */ int selBorderWidth; /* Width of border around selection. */ XColor *selFgColorPtr; /* Foreground color for selected text. */ GC selTextGC; /* For drawing selected text. */ Tk_3DBorder cursorBorder; /* Used to draw vertical bar for insertion * cursor. */ int cursorWidth; /* Total width of insert cursor. */ int cursorBorderWidth; /* Width of 3-D border around insert cursor. */ int cursorOnTime; /* Number of milliseconds cursor should spend * in "on" state for each blink. */ int cursorOffTime; /* Number of milliseconds cursor should spend * in "off" state for each blink. */ Tk_TimerToken cursorBlinkHandler; /* Timer handler used to blink cursor on and * off. */ int avgWidth; /* Width of average character. */ int prefWidth; /* Desired width of window, measured in * average characters. */ int offset; /* 0 if window is flat, or borderWidth if * raised or sunken. */ int leftIndex; /* Index of left-most character visible in * window. */ int cursorPos; /* Index of character before which next * typed character will be inserted. */ /* * Information about what's selected, if any. */ int selectFirst; /* Index of first selected character (-1 means * nothing selected. */ int selectLast; /* Index of last selected character (-1 means * nothing selected. */ int selectAnchor; /* Fixed end of selection (i.e. "select to" * operation will use this as one end of the * selection). */ int exportSelection; /* Non-zero means tie internal entry selection * to X selection. */ /* * Information for scanning: */ int scanMarkX; /* X-position at which scan started (e.g. * button was pressed here). */ int scanMarkIndex; /* Index of character that was at left of * window when scan started. */ /* * Miscellaneous information: */ Cursor cursor; /* Current cursor for window, or None. */ char *scrollCmd; /* Command prefix for communicating with * scrollbar(s). Malloc'ed. NULL means * no command to issue. */ int flags; /* Miscellaneous flags; see below for * definitions. */ } Entry; /* * Assigned bits of "flags" fields of Entry structures, and what those * bits mean: * * REDRAW_PENDING: Non-zero means a DoWhenIdle handler has * already been queued to redisplay the entry. * BORDER_NEEDED: Non-zero means 3-D border must be redrawn * around window during redisplay. Normally * only text portion needs to be redrawn. * CURSOR_ON: Non-zero means cursor is displayed at * present. 0 means it isn't displayed. * GOT_FOCUS: Non-zero means this window has the input * focus. */ #define REDRAW_PENDING 1 #define BORDER_NEEDED 2 #define CURSOR_ON 4 #define GOT_FOCUS 8 /* * Information used for argv parsing. */ static Tk_ConfigSpec configSpecs[] = { {TK_CONFIG_BORDER, "-background", "background", "Background", DEF_ENTRY_BG_COLOR, Tk_Offset(Entry, normalBorder), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-background", "background", "Background", DEF_ENTRY_BG_MONO, Tk_Offset(Entry, normalBorder), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_SYNONYM, "-bd", "borderWidth", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_SYNONYM, "-bg", "background", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", DEF_ENTRY_BORDER_WIDTH, Tk_Offset(Entry, borderWidth), 0}, {TK_CONFIG_ACTIVE_CURSOR, "-cursor", "cursor", "Cursor", DEF_ENTRY_CURSOR, Tk_Offset(Entry, cursor), TK_CONFIG_NULL_OK}, {TK_CONFIG_BORDER, "-cursorbackground", "cursorBackground", "Foreground", DEF_ENTRY_CURSOR_BG, Tk_Offset(Entry, cursorBorder), 0}, {TK_CONFIG_PIXELS, "-cursorborderwidth", "cursorBorderWidth", "BorderWidth", DEF_ENTRY_CURSOR_BD_COLOR, Tk_Offset(Entry, cursorBorderWidth), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_PIXELS, "-cursorborderwidth", "cursorBorderWidth", "BorderWidth", DEF_ENTRY_CURSOR_BD_MONO, Tk_Offset(Entry, cursorBorderWidth), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_INT, "-cursorofftime", "cursorOffTime", "OffTime", DEF_ENTRY_CURSOR_OFF_TIME, Tk_Offset(Entry, cursorOffTime), 0}, {TK_CONFIG_INT, "-cursorontime", "cursorOnTime", "OnTime", DEF_ENTRY_CURSOR_ON_TIME, Tk_Offset(Entry, cursorOnTime), 0}, {TK_CONFIG_PIXELS, "-cursorwidth", "cursorWidth", "CursorWidth", DEF_ENTRY_CURSOR_WIDTH, Tk_Offset(Entry, cursorWidth), 0}, {TK_CONFIG_BOOLEAN, "-exportselection", "exportSelection", "ExportSelection", DEF_ENTRY_EXPORT_SELECTION, Tk_Offset(Entry, exportSelection), 0}, {TK_CONFIG_SYNONYM, "-fg", "foreground", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_FONT, "-font", "font", "Font", DEF_ENTRY_FONT, Tk_Offset(Entry, fontPtr), 0}, {TK_CONFIG_COLOR, "-foreground", "foreground", "Foreground", DEF_ENTRY_FG, Tk_Offset(Entry, fgColorPtr), 0}, {TK_CONFIG_RELIEF, "-relief", "relief", "Relief", DEF_ENTRY_RELIEF, Tk_Offset(Entry, relief), 0}, {TK_CONFIG_STRING, "-scrollcommand", "scrollCommand", "ScrollCommand", DEF_ENTRY_SCROLL_COMMAND, Tk_Offset(Entry, scrollCmd), 0}, {TK_CONFIG_BORDER, "-selectbackground", "selectBackground", "Foreground", DEF_ENTRY_SELECT_COLOR, Tk_Offset(Entry, selBorder), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-selectbackground", "selectBackground", "Foreground", DEF_ENTRY_SELECT_MONO, Tk_Offset(Entry, selBorder), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_PIXELS, "-selectborderwidth", "selectBorderWidth", "BorderWidth", DEF_ENTRY_SELECT_BD_COLOR, Tk_Offset(Entry, selBorderWidth), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_PIXELS, "-selectborderwidth", "selectBorderWidth", "BorderWidth", DEF_ENTRY_SELECT_BD_MONO, Tk_Offset(Entry, selBorderWidth), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_COLOR, "-selectforeground", "selectForeground", "Background", DEF_ENTRY_SELECT_FG_COLOR, Tk_Offset(Entry, selFgColorPtr), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_COLOR, "-selectforeground", "selectForeground", "Background", DEF_ENTRY_SELECT_FG_MONO, Tk_Offset(Entry, selFgColorPtr), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_UID, "-state", "state", "State", DEF_ENTRY_STATE, Tk_Offset(Entry, state), 0}, {TK_CONFIG_STRING, "-textvariable", "textVariable", "Variable", DEF_ENTRY_TEXT_VARIABLE, Tk_Offset(Entry, textVarName), TK_CONFIG_NULL_OK}, {TK_CONFIG_INT, "-width", "width", "Width", DEF_ENTRY_WIDTH, Tk_Offset(Entry, prefWidth), 0}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; /* * Flags for GetEntryIndex procedure: */ #define ZERO_OK 1 #define LAST_PLUS_ONE_OK 2 /* * Forward declarations for procedures defined later in this file: */ static int ConfigureEntry _ANSI_ARGS_((Tcl_Interp *interp, Entry *entryPtr, int argc, char **argv, int flags)); static void DeleteChars _ANSI_ARGS_((Entry *entryPtr, int index, int count)); static void DestroyEntry _ANSI_ARGS_((ClientData clientData)); static void DisplayEntry _ANSI_ARGS_((ClientData clientData)); static int GetEntryIndex _ANSI_ARGS_((Tcl_Interp *interp, Entry *entryPtr, char *string, int *indexPtr)); static void InsertChars _ANSI_ARGS_((Entry *entryPtr, int index, char *string)); static void EntryBlinkProc _ANSI_ARGS_((ClientData clientData)); static void EntryEventProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); static void EntryFocusProc _ANSI_ARGS_ ((ClientData clientData, int gotFocus)); static int EntryFetchSelection _ANSI_ARGS_((ClientData clientData, int offset, char *buffer, int maxBytes)); static void EntryLostSelection _ANSI_ARGS_(( ClientData clientData)); static void EventuallyRedraw _ANSI_ARGS_((Entry *entryPtr)); static void EntryScanTo _ANSI_ARGS_((Entry *entryPtr, int y)); static void EntrySetValue _ANSI_ARGS_((Entry *entryPtr, char *value)); static void EntrySelectTo _ANSI_ARGS_(( Entry *entryPtr, int index)); static char * EntryTextVarProc _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, char *name1, char *name2, int flags)); static void EntryUpdateScrollbar _ANSI_ARGS_((Entry *entryPtr)); static int EntryWidgetCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); /* *-------------------------------------------------------------- * * Tk_EntryCmd -- * * This procedure is invoked to process the "entry" Tcl * command. See the user documentation for details on what * it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ int Tk_EntryCmd(clientData, interp, argc, argv) ClientData clientData; /* Main window associated with * interpreter. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { Tk_Window tkwin = (Tk_Window) clientData; register Entry *entryPtr; Tk_Window new; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " pathName ?options?\"", (char *) NULL); return TCL_ERROR; } new = Tk_CreateWindowFromPath(interp, tkwin, argv[1], (char *) NULL); if (new == NULL) { return TCL_ERROR; } /* * Initialize the fields of the structure that won't be initialized * by ConfigureEntry, or that ConfigureEntry requires to be * initialized already (e.g. resource pointers). */ entryPtr = (Entry *) ckalloc(sizeof(Entry)); entryPtr->tkwin = new; entryPtr->interp = interp; entryPtr->numChars = 0; entryPtr->string = (char *) ckalloc(1); entryPtr->string[0] = '\0'; entryPtr->textVarName = NULL; entryPtr->state = tkNormalUid; entryPtr->normalBorder = NULL; entryPtr->fontPtr = NULL; entryPtr->fgColorPtr = NULL; entryPtr->textGC = None; entryPtr->selBorder = NULL; entryPtr->selFgColorPtr = NULL; entryPtr->selTextGC = NULL; entryPtr->cursorBorder = NULL; entryPtr->cursorBlinkHandler = (Tk_TimerToken) NULL; entryPtr->leftIndex = 0; entryPtr->cursorPos = 0; entryPtr->selectFirst = -1; entryPtr->selectLast = -1; entryPtr->selectAnchor = 0; entryPtr->exportSelection = 1; entryPtr->scanMarkX = 0; entryPtr->cursor = None; entryPtr->scrollCmd = NULL; entryPtr->flags = 0; Tk_SetClass(entryPtr->tkwin, "Entry"); Tk_CreateEventHandler(entryPtr->tkwin, ExposureMask|StructureNotifyMask, EntryEventProc, (ClientData) entryPtr); Tk_CreateSelHandler(entryPtr->tkwin, XA_STRING, EntryFetchSelection, (ClientData) entryPtr, XA_STRING); Tcl_CreateCommand(interp, Tk_PathName(entryPtr->tkwin), EntryWidgetCmd, (ClientData) entryPtr, (void (*)()) NULL); if (ConfigureEntry(interp, entryPtr, argc-2, argv+2, 0) != TCL_OK) { goto error; } Tk_CreateFocusHandler(entryPtr->tkwin, EntryFocusProc, (ClientData) entryPtr); interp->result = Tk_PathName(entryPtr->tkwin); return TCL_OK; error: Tk_DestroyWindow(entryPtr->tkwin); return TCL_ERROR; } /* *-------------------------------------------------------------- * * EntryWidgetCmd -- * * This procedure is invoked to process the Tcl command * that corresponds to a widget managed by this module. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ static int EntryWidgetCmd(clientData, interp, argc, argv) ClientData clientData; /* Information about entry widget. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { register Entry *entryPtr = (Entry *) clientData; int result = TCL_OK; int length; char c; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " option ?arg arg ...?\"", (char *) NULL); return TCL_ERROR; } Tk_Preserve((ClientData) entryPtr); c = argv[1][0]; length = strlen(argv[1]); if ((c == 'c') && (strncmp(argv[1], "configure", length) == 0) && (length >= 2)) { if (argc == 2) { result = Tk_ConfigureInfo(interp, entryPtr->tkwin, configSpecs, (char *) entryPtr, (char *) NULL, 0); } else if (argc == 3) { result = Tk_ConfigureInfo(interp, entryPtr->tkwin, configSpecs, (char *) entryPtr, argv[2], 0); } else { result = ConfigureEntry(interp, entryPtr, argc-2, argv+2, TK_CONFIG_ARGV_ONLY); } } else if ((c == 'c') && (strncmp(argv[1], "cursor", length) == 0) && (length >= 2)) { if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " cursor pos\"", (char *) NULL); goto error; } if (GetEntryIndex(interp, entryPtr, argv[2], &entryPtr->cursorPos) != TCL_OK) { goto error; } EventuallyRedraw(entryPtr); } else if ((c == 'd') && (strncmp(argv[1], "delete", length) == 0)) { int first, last; if ((argc < 3) || (argc > 4)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " delete firstIndex ?lastIndex?\"", (char *) NULL); goto error; } if (GetEntryIndex(interp, entryPtr, argv[2], &first) != TCL_OK) { goto error; } if (argc == 3) { last = first; } else { if (GetEntryIndex(interp, entryPtr, argv[3], &last) != TCL_OK) { goto error; } } if ((last >= first) && (entryPtr->state == tkNormalUid)) { DeleteChars(entryPtr, first, last+1-first); } } else if ((c == 'g') && (strncmp(argv[1], "get", length) == 0)) { if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " get\"", (char *) NULL); goto error; } interp->result = entryPtr->string; } else if ((c == 'i') && (strncmp(argv[1], "index", length) == 0) && (length >= 2)) { int index; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " index string\"", (char *) NULL); goto error; } if (GetEntryIndex(interp, entryPtr, argv[2], &index) != TCL_OK) { goto error; } sprintf(interp->result, "%d", index); } else if ((c == 'i') && (strncmp(argv[1], "insert", length) == 0) && (length >= 2)) { int index; if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " insert index text\"", (char *) NULL); goto error; } if (GetEntryIndex(interp, entryPtr, argv[2], &index) != TCL_OK) { goto error; } if (entryPtr->state == tkNormalUid) { InsertChars(entryPtr, index, argv[3]); } } else if ((c == 's') && (length >= 2) && (strncmp(argv[1], "scan", length) == 0)) { int x; if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " scan mark|dragto x\"", (char *) NULL); goto error; } if (Tcl_GetInt(interp, argv[3], &x) != TCL_OK) { goto error; } if ((argv[2][0] == 'm') && (strncmp(argv[2], "mark", strlen(argv[2])) == 0)) { entryPtr->scanMarkX = x; entryPtr->scanMarkIndex = entryPtr->leftIndex; } else if ((argv[2][0] == 'd') && (strncmp(argv[2], "dragto", strlen(argv[2])) == 0)) { EntryScanTo(entryPtr, x); } else { Tcl_AppendResult(interp, "bad scan option \"", argv[2], "\": must be mark or dragto", (char *) NULL); goto error; } } else if ((c == 's') && (length >= 2) && (strncmp(argv[1], "select", length) == 0)) { int index; if (argc < 3) { Tcl_AppendResult(interp, "too few args: should be \"", argv[0], " select option ?index?\"", (char *) NULL); goto error; } length = strlen(argv[2]); c = argv[2][0]; if ((c == 'c') && (argv[2] != NULL) && (strncmp(argv[2], "clear", length) == 0)) { if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " select clear\"", (char *) NULL); goto error; } if (entryPtr->selectFirst != -1) { entryPtr->selectFirst = entryPtr->selectLast = -1; EventuallyRedraw(entryPtr); } goto done; } if (argc >= 4) { if (GetEntryIndex(interp, entryPtr, argv[3], &index) != TCL_OK) { goto error; } } if ((c == 'a') && (strncmp(argv[2], "adjust", length) == 0)) { if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " select adjust index\"", (char *) NULL); goto error; } if (entryPtr->selectFirst >= 0) { if (index < (entryPtr->selectFirst + entryPtr->selectLast)/2) { entryPtr->selectAnchor = entryPtr->selectLast + 1; } else { entryPtr->selectAnchor = entryPtr->selectFirst; } } EntrySelectTo(entryPtr, index); } else if ((c == 'f') && (strncmp(argv[2], "from", length) == 0)) { if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " select from index\"", (char *) NULL); goto error; } entryPtr->selectAnchor = index; } else if ((c == 't') && (strncmp(argv[2], "to", length) == 0)) { if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " select to index\"", (char *) NULL); goto error; } EntrySelectTo(entryPtr, index); } else { Tcl_AppendResult(interp, "bad select option \"", argv[2], "\": must be adjust, clear, from, or to", (char *) NULL); goto error; } } else if ((c == 'v') && (strncmp(argv[1], "view", length) == 0)) { int index; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " view index\"", (char *) NULL); goto error; } if (GetEntryIndex(interp, entryPtr, argv[2], &index) != TCL_OK) { goto error; } if ((index >= entryPtr->numChars) && (index > 0)) { index = entryPtr->numChars-1; } entryPtr->leftIndex = index; EventuallyRedraw(entryPtr); EntryUpdateScrollbar(entryPtr); } else { Tcl_AppendResult(interp, "bad option \"", argv[1], "\": must be configure, cursor, delete, get, index, ", "insert, scan, select, or view", (char *) NULL); goto error; } done: Tk_Release((ClientData) entryPtr); return result; error: Tk_Release((ClientData) entryPtr); return TCL_ERROR; } /* *---------------------------------------------------------------------- * * DestroyEntry -- * * This procedure is invoked by Tk_EventuallyFree or Tk_Release * to clean up the internal structure of an entry at a safe time * (when no-one is using it anymore). * * Results: * None. * * Side effects: * Everything associated with the entry is freed up. * *---------------------------------------------------------------------- */ static void DestroyEntry(clientData) ClientData clientData; /* Info about entry widget. */ { register Entry *entryPtr = (Entry *) clientData; ckfree(entryPtr->string); if (entryPtr->normalBorder != NULL) { Tk_Free3DBorder(entryPtr->normalBorder); } if (entryPtr->textVarName != NULL) { Tcl_UntraceVar(entryPtr->interp, entryPtr->textVarName, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, EntryTextVarProc, (ClientData) entryPtr); ckfree(entryPtr->textVarName); } if (entryPtr->fontPtr != NULL) { Tk_FreeFontStruct(entryPtr->fontPtr); } if (entryPtr->fgColorPtr != NULL) { Tk_FreeColor(entryPtr->fgColorPtr); } if (entryPtr->textGC != None) { Tk_FreeGC(entryPtr->textGC); } if (entryPtr->selBorder != NULL) { Tk_Free3DBorder(entryPtr->selBorder); } if (entryPtr->selFgColorPtr != NULL) { Tk_FreeColor(entryPtr->selFgColorPtr); } if (entryPtr->selTextGC != None) { Tk_FreeGC(entryPtr->selTextGC); } if (entryPtr->cursorBorder != NULL) { Tk_Free3DBorder(entryPtr->cursorBorder); } if (entryPtr->cursorBlinkHandler != NULL) { Tk_DeleteTimerHandler(entryPtr->cursorBlinkHandler); entryPtr->cursorBlinkHandler = NULL; } if (entryPtr->cursor != None) { Tk_FreeCursor(entryPtr->cursor); } if (entryPtr->scrollCmd != NULL) { ckfree(entryPtr->scrollCmd); } ckfree((char *) entryPtr); } /* *---------------------------------------------------------------------- * * ConfigureEntry -- * * This procedure is called to process an argv/argc list, plus * the Tk option database, in order to configure (or reconfigure) * an entry widget. * * Results: * The return value is a standard Tcl result. If TCL_ERROR is * returned, then interp->result contains an error message. * * Side effects: * Configuration information, such as colors, border width, * etc. get set for entryPtr; old resources get freed, * if there were any. * *---------------------------------------------------------------------- */ static int ConfigureEntry(interp, entryPtr, argc, argv, flags) Tcl_Interp *interp; /* Used for error reporting. */ register Entry *entryPtr; /* Information about widget; may or may * not already have values for some fields. */ int argc; /* Number of valid entries in argv. */ char **argv; /* Arguments. */ int flags; /* Flags to pass to Tk_ConfigureWidget. */ { XGCValues gcValues; GC new; int width, height, fontHeight, oldExport; /* * Eliminate any existing trace on a variable monitored by the entry. */ if (entryPtr->textVarName != NULL) { Tcl_UntraceVar(interp, entryPtr->textVarName, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, EntryTextVarProc, (ClientData) entryPtr); } oldExport = entryPtr->exportSelection; if (Tk_ConfigureWidget(interp, entryPtr->tkwin, configSpecs, argc, argv, (char *) entryPtr, flags) != TCL_OK) { return TCL_ERROR; } /* * If the entry is tied to the value of a variable, then set up * a trace on the variable's value, create the variable if it doesn't * exist, and set the entry's value from the variable's value. */ if (entryPtr->textVarName != NULL) { char *value; value = Tcl_GetVar(interp, entryPtr->textVarName, TCL_GLOBAL_ONLY); if (value == NULL) { Tcl_SetVar(interp, entryPtr->textVarName, entryPtr->string, TCL_GLOBAL_ONLY); } else { EntrySetValue(entryPtr, value); } Tcl_TraceVar(interp, entryPtr->textVarName, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, EntryTextVarProc, (ClientData) entryPtr); } /* * A few other options also need special processing, such as parsing * the geometry and setting the background from a 3-D border. */ if ((entryPtr->state != tkNormalUid) && (entryPtr->state != tkDisabledUid)) { Tcl_AppendResult(interp, "bad state value \"", entryPtr->state, "\": must be normal or disabled", (char *) NULL); entryPtr->state = tkNormalUid; return TCL_ERROR; } Tk_SetBackgroundFromBorder(entryPtr->tkwin, entryPtr->normalBorder); gcValues.foreground = entryPtr->fgColorPtr->pixel; gcValues.font = entryPtr->fontPtr->fid; gcValues.graphics_exposures = False; new = Tk_GetGC(entryPtr->tkwin, GCForeground|GCFont|GCGraphicsExposures, &gcValues); if (entryPtr->textGC != None) { Tk_FreeGC(entryPtr->textGC); } entryPtr->textGC = new; gcValues.foreground = entryPtr->selFgColorPtr->pixel; gcValues.font = entryPtr->fontPtr->fid; new = Tk_GetGC(entryPtr->tkwin, GCForeground|GCFont, &gcValues); if (entryPtr->selTextGC != None) { Tk_FreeGC(entryPtr->selTextGC); } entryPtr->selTextGC = new; if (entryPtr->cursorWidth > 2*entryPtr->fontPtr->min_bounds.width) { entryPtr->cursorWidth = 2*entryPtr->fontPtr->min_bounds.width; if (entryPtr->cursorWidth == 0) { entryPtr->cursorWidth = 2; } } if (entryPtr->cursorBorderWidth > entryPtr->cursorWidth/2) { entryPtr->cursorBorderWidth = entryPtr->cursorWidth/2; } /* * Restart the cursor timing sequence in case the on-time or off-time * just changed. */ if (entryPtr->flags & GOT_FOCUS) { EntryFocusProc((ClientData) entryPtr, 1); } /* * Claim the selection if we've suddenly started exporting it. */ if (entryPtr->exportSelection && (!oldExport) && (entryPtr->selectFirst != -1)) { Tk_OwnSelection(entryPtr->tkwin, EntryLostSelection, (ClientData) entryPtr); } /* * Register the desired geometry for the window, and arrange for * the window to be redisplayed. */ fontHeight = entryPtr->fontPtr->ascent + entryPtr->fontPtr->descent; entryPtr->avgWidth = XTextWidth(entryPtr->fontPtr, "0", 1); width = entryPtr->prefWidth*entryPtr->avgWidth + (15*fontHeight)/10; height = fontHeight + 2*entryPtr->borderWidth + 2; Tk_GeometryRequest(entryPtr->tkwin, width, height); Tk_SetInternalBorder(entryPtr->tkwin, entryPtr->borderWidth); if (entryPtr->relief != TK_RELIEF_FLAT) { entryPtr->offset = entryPtr->borderWidth; } else { entryPtr->offset = 0; } EventuallyRedraw(entryPtr); EntryUpdateScrollbar(entryPtr); return TCL_OK; } /* *-------------------------------------------------------------- * * DisplayEntry -- * * This procedure redraws the contents of an entry window. * * Results: * None. * * Side effects: * Information appears on the screen. * *-------------------------------------------------------------- */ static void DisplayEntry(clientData) ClientData clientData; /* Information about window. */ { register Entry *entryPtr = (Entry *) clientData; register Tk_Window tkwin = entryPtr->tkwin; int startX, baseY, selStartX, selEndX, index, cursorX; int xBound, count; Pixmap pixmap; entryPtr->flags &= ~REDRAW_PENDING; if ((entryPtr->tkwin == NULL) || !Tk_IsMapped(tkwin)) { return; } /* * In order to avoid screen flashes, this procedure redraws the * textual area of the entry into off-screen memory, then copies * it back on-screen in a single operation. This means there's * no point in time where the on-screen image has been cleared. */ pixmap = XCreatePixmap(Tk_Display(tkwin), Tk_WindowId(tkwin), Tk_Width(tkwin), Tk_Height(tkwin), Tk_DefaultDepth(Tk_Screen(tkwin))); /* * Compute x-coordinate of the "leftIndex" character, plus limit * of visible x-coordinates (actually, pixel just after last visible * one), plus vertical position of baseline of text. */ startX = entryPtr->offset; xBound = Tk_Width(tkwin) - entryPtr->offset; baseY = (Tk_Height(tkwin) + entryPtr->fontPtr->ascent - entryPtr->fontPtr->descent)/2; /* * Draw the background in three layers. From bottom to top the * layers are: normal background, selection background, and * insertion cursor background. */ Tk_Fill3DRectangle(Tk_Display(tkwin), pixmap, entryPtr->normalBorder, 0, 0, Tk_Width(tkwin), Tk_Height(tkwin), 0, TK_RELIEF_FLAT); if (entryPtr->selectLast >= entryPtr->leftIndex) { if (entryPtr->selectFirst <= entryPtr->leftIndex) { selStartX = startX; index = entryPtr->leftIndex; } else { (void) TkMeasureChars(entryPtr->fontPtr, entryPtr->string+entryPtr->leftIndex, entryPtr->selectFirst - entryPtr->leftIndex, startX, xBound, TK_PARTIAL_OK|TK_NEWLINES_NOT_SPECIAL, &selStartX); index = entryPtr->selectFirst; } if (selStartX < xBound) { (void) TkMeasureChars(entryPtr->fontPtr, entryPtr->string + index, entryPtr->selectLast +1 - index, selStartX, xBound, TK_PARTIAL_OK|TK_NEWLINES_NOT_SPECIAL, &selEndX); Tk_Fill3DRectangle(Tk_Display(tkwin), pixmap, entryPtr->selBorder, selStartX - entryPtr->selBorderWidth, baseY - entryPtr->fontPtr->ascent - entryPtr->selBorderWidth, (selEndX - selStartX) + 2*entryPtr->selBorderWidth, entryPtr->fontPtr->ascent + entryPtr->fontPtr->descent + 2*entryPtr->selBorderWidth, entryPtr->selBorderWidth, TK_RELIEF_RAISED); } else { selEndX = xBound; } } /* * Draw a special background for the insertion cursor, overriding * even the selection background. As a special workaround to keep the * cursor visible on mono displays, write background in the cursor * area (instead of nothing) when the cursor isn't on. Otherwise * the selection would hide the cursor. */ if ((entryPtr->cursorPos >= entryPtr->leftIndex) && (entryPtr->state == tkNormalUid) && (entryPtr->flags & GOT_FOCUS)) { (void) TkMeasureChars(entryPtr->fontPtr, entryPtr->string + entryPtr->leftIndex, entryPtr->cursorPos - entryPtr->leftIndex, startX, xBound, TK_PARTIAL_OK|TK_NEWLINES_NOT_SPECIAL, &cursorX); if (cursorX < xBound) { if (entryPtr->flags & CURSOR_ON) { Tk_Fill3DRectangle(Tk_Display(tkwin), pixmap, entryPtr->cursorBorder, cursorX - (entryPtr->cursorWidth)/2, baseY - entryPtr->fontPtr->ascent, entryPtr->cursorWidth, entryPtr->fontPtr->ascent + entryPtr->fontPtr->descent, entryPtr->cursorBorderWidth, TK_RELIEF_RAISED); } else if (Tk_DefaultDepth(Tk_Screen(tkwin)) == 1) { Tk_Fill3DRectangle(Tk_Display(tkwin), pixmap, entryPtr->normalBorder, cursorX - (entryPtr->cursorWidth)/2, baseY - entryPtr->fontPtr->ascent, entryPtr->cursorWidth, entryPtr->fontPtr->ascent + entryPtr->fontPtr->descent, 0, TK_RELIEF_FLAT); } } } /* * Draw the text in three pieces: first the piece to the left of * the selection, then the selection, then the piece to the right * of the selection. */ if (entryPtr->selectLast < entryPtr->leftIndex) { TkDisplayChars(Tk_Display(tkwin), pixmap, entryPtr->textGC, entryPtr->fontPtr, entryPtr->string + entryPtr->leftIndex, entryPtr->numChars - entryPtr->leftIndex, startX, baseY, TK_NEWLINES_NOT_SPECIAL); } else { count = entryPtr->selectFirst - entryPtr->leftIndex; if (count > 0) { TkDisplayChars(Tk_Display(tkwin), pixmap, entryPtr->textGC, entryPtr->fontPtr, entryPtr->string + entryPtr->leftIndex, count, startX, baseY, TK_NEWLINES_NOT_SPECIAL); index = entryPtr->selectFirst; } else { index = entryPtr->leftIndex; } count = entryPtr->selectLast + 1 - index; if ((selStartX < xBound) && (count > 0)) { TkDisplayChars(Tk_Display(tkwin), pixmap, entryPtr->selTextGC, entryPtr->fontPtr, entryPtr->string + index, count, selStartX, baseY, TK_NEWLINES_NOT_SPECIAL); } count = entryPtr->numChars - entryPtr->selectLast - 1; if ((selEndX < xBound) && (count > 0)) { TkDisplayChars(Tk_Display(tkwin), pixmap, entryPtr->textGC, entryPtr->fontPtr, entryPtr->string + entryPtr->selectLast + 1, count, selEndX, baseY, TK_NEWLINES_NOT_SPECIAL); } } /* * Draw the border last, so it will overwrite any text that extends * past the viewable part of the window. */ if (entryPtr->relief != TK_RELIEF_FLAT) { Tk_Draw3DRectangle(Tk_Display(tkwin), pixmap, entryPtr->normalBorder, 0, 0, Tk_Width(tkwin), Tk_Height(tkwin), entryPtr->borderWidth, entryPtr->relief); } /* * Everything's been redisplayed; now copy the pixmap onto the screen * and free up the pixmap. */ XCopyArea(Tk_Display(tkwin), pixmap, Tk_WindowId(tkwin), entryPtr->textGC, 0, 0, Tk_Width(tkwin), Tk_Height(tkwin), 0, 0); XFreePixmap(Tk_Display(tkwin), pixmap); entryPtr->flags &= ~BORDER_NEEDED; } /* *---------------------------------------------------------------------- * * InsertChars -- * * Add new characters to an entry widget. * * Results: * None. * * Side effects: * New information gets added to entryPtr; it will be redisplayed * soon, but not necessarily immediately. * *---------------------------------------------------------------------- */ static void InsertChars(entryPtr, index, string) register Entry *entryPtr; /* Entry that is to get the new * elements. */ int index; /* Add the new elements before this * element. */ char *string; /* New characters to add (NULL-terminated * string). */ { int length; char *new; length = strlen(string); if (length == 0) { return; } new = (char *) ckalloc((unsigned) (entryPtr->numChars + length + 1)); strncpy(new, entryPtr->string, index); strcpy(new+index, string); strcpy(new+index+length, entryPtr->string+index); ckfree(entryPtr->string); entryPtr->string = new; entryPtr->numChars += length; /* * Inserting characters invalidates all indexes into the string. * Touch up the indexes so that they still refer to the same * characters (at new positions). */ if (entryPtr->selectFirst >= index) { entryPtr->selectFirst += length; } if (entryPtr->selectLast >= index) { entryPtr->selectLast += length; } if (entryPtr->selectAnchor >= index) { entryPtr->selectAnchor += length; } if (entryPtr->leftIndex > index) { entryPtr->leftIndex += length; } if (entryPtr->cursorPos >= index) { entryPtr->cursorPos += length; } if (entryPtr->textVarName != NULL) { Tcl_SetVar(entryPtr->interp, entryPtr->textVarName, entryPtr->string, TCL_GLOBAL_ONLY); } EventuallyRedraw(entryPtr); EntryUpdateScrollbar(entryPtr); } /* *---------------------------------------------------------------------- * * DeleteChars -- * * Remove one or more characters from an entry widget. * * Results: * None. * * Side effects: * Memory gets freed, the entry gets modified and (eventually) * redisplayed. * *---------------------------------------------------------------------- */ static void DeleteChars(entryPtr, index, count) register Entry *entryPtr; /* Entry widget to modify. */ int index; /* Index of first character to delete. */ int count; /* How many characters to delete. */ { char *new; if ((index + count) > entryPtr->numChars) { count = entryPtr->numChars - index; } if (count <= 0) { return; } new = (char *) ckalloc((unsigned) (entryPtr->numChars + 1 - count)); strncpy(new, entryPtr->string, index); strcpy(new+index, entryPtr->string+index+count); ckfree(entryPtr->string); entryPtr->string = new; entryPtr->numChars -= count; /* * Deleting characters results in the remaining characters being * renumbered. Update the various indexes into the string to reflect * this change. */ if (entryPtr->selectFirst >= index) { if (entryPtr->selectFirst >= (index+count)) { entryPtr->selectFirst -= count; } else { entryPtr->selectFirst = index; } } if (entryPtr->selectLast >= index) { if (entryPtr->selectLast >= (index+count)) { entryPtr->selectLast -= count; } else { entryPtr->selectLast = index-1; } } if (entryPtr->selectLast < entryPtr->selectFirst) { entryPtr->selectFirst = entryPtr->selectLast = -1; } if (entryPtr->selectAnchor >= index) { if (entryPtr->selectAnchor >= (index+count)) { entryPtr->selectAnchor -= count; } else { entryPtr->selectAnchor = index; } } if (entryPtr->leftIndex > index) { if (entryPtr->leftIndex >= (index+count)) { entryPtr->leftIndex -= count; } else { entryPtr->leftIndex = index; } } if (entryPtr->cursorPos >= index) { if (entryPtr->cursorPos >= (index+count)) { entryPtr->cursorPos -= count; } else { entryPtr->cursorPos = index; } } if (entryPtr->textVarName != NULL) { Tcl_SetVar(entryPtr->interp, entryPtr->textVarName, entryPtr->string, TCL_GLOBAL_ONLY); } EventuallyRedraw(entryPtr); EntryUpdateScrollbar(entryPtr); } /* *---------------------------------------------------------------------- * * EntrySetValue -- * * Replace the contents of a text entry with a given value. This * procedure is invoked when updating the entry from the entry's * associated variable. * * Results: * None. * * Side effects: * The string displayed in the entry will change. Any selection * in the entry is lost and the insertion point gets set to the * end of the entry. Note: this procedure does *not* update the * entry's associated variable, since that could result in an * infinite loop. * *---------------------------------------------------------------------- */ static void EntrySetValue(entryPtr, value) register Entry *entryPtr; /* Entry whose value is to be * changed. */ char *value; /* New text to display in entry. */ { ckfree(entryPtr->string); entryPtr->numChars = strlen(value); entryPtr->string = (char *) ckalloc((unsigned) (entryPtr->numChars + 1)); strcpy(entryPtr->string, value); entryPtr->selectFirst = entryPtr->selectLast = -1; entryPtr->leftIndex = 0; entryPtr->cursorPos = entryPtr->numChars; EventuallyRedraw(entryPtr); EntryUpdateScrollbar(entryPtr); } /* *-------------------------------------------------------------- * * EntryEventProc -- * * This procedure is invoked by the Tk dispatcher for various * events on entryes. * * Results: * None. * * Side effects: * When the window gets deleted, internal structures get * cleaned up. When it gets exposed, it is redisplayed. * *-------------------------------------------------------------- */ static void EntryEventProc(clientData, eventPtr) ClientData clientData; /* Information about window. */ XEvent *eventPtr; /* Information about event. */ { Entry *entryPtr = (Entry *) clientData; if (eventPtr->type == Expose) { EventuallyRedraw(entryPtr); entryPtr->flags |= BORDER_NEEDED; } else if (eventPtr->type == DestroyNotify) { Tcl_DeleteCommand(entryPtr->interp, Tk_PathName(entryPtr->tkwin)); entryPtr->tkwin = NULL; if (entryPtr->flags & REDRAW_PENDING) { Tk_CancelIdleCall(DisplayEntry, (ClientData) entryPtr); } Tk_EventuallyFree((ClientData) entryPtr, DestroyEntry); } else if (eventPtr->type == ConfigureNotify) { Tk_Preserve((ClientData) entryPtr); EventuallyRedraw(entryPtr); EntryUpdateScrollbar(entryPtr); Tk_Release((ClientData) entryPtr); } } /* *-------------------------------------------------------------- * * GetEntryIndex -- * * Parse an index into an entry and return either its value * or an error. * * Results: * A standard Tcl result. If all went well, then *indexPtr is * filled in with the index (into entryPtr) corresponding to * string. The index value is guaranteed to lie between 0 and * the number of characters in the string, inclusive. If an * error occurs then an error message is left in interp->result. * * Side effects: * None. * *-------------------------------------------------------------- */ static int GetEntryIndex(interp, entryPtr, string, indexPtr) Tcl_Interp *interp; /* For error messages. */ Entry *entryPtr; /* Entry for which the index is being * specified. */ char *string; /* Specifies character in entryPtr. */ int *indexPtr; /* Where to store converted index. */ { int length; length = strlen(string); if (string[0] == 'e') { if (strncmp(string, "end", length) == 0) { *indexPtr = entryPtr->numChars; } else { badIndex: /* * Some of the paths here leave messages in interp->result, * so we have to clear it out before storing our own message. */ Tcl_SetResult(interp, (char *) NULL, TCL_STATIC); Tcl_AppendResult(interp, "bad entry index \"", string, "\"", (char *) NULL); return TCL_ERROR; } } else if (string[0] == 'c') { if (strncmp(string, "cursor", length) == 0) { *indexPtr = entryPtr->cursorPos; } else { goto badIndex; } } else if (string[0] == 's') { if (entryPtr->selectFirst == -1) { interp->result = "selection isn't in entry"; return TCL_ERROR; } if (length < 5) { goto badIndex; } if (strncmp(string, "sel.first", length) == 0) { *indexPtr = entryPtr->selectFirst; } else if (strncmp(string, "sel.last", length) == 0) { *indexPtr = entryPtr->selectLast; } else { goto badIndex; } } else if (string[0] == '@') { int x, dummy; if (Tcl_GetInt(interp, string+1, &x) != TCL_OK) { goto badIndex; } if (entryPtr->numChars == 0) { *indexPtr = 0; } else { *indexPtr = entryPtr->leftIndex + TkMeasureChars(entryPtr->fontPtr, entryPtr->string + entryPtr->leftIndex, entryPtr->numChars - entryPtr->leftIndex, entryPtr->offset, x, TK_NEWLINES_NOT_SPECIAL, &dummy); } } else { if (Tcl_GetInt(interp, string, indexPtr) != TCL_OK) { goto badIndex; } if (*indexPtr < 0){ *indexPtr = 0; } else if (*indexPtr > entryPtr->numChars) { *indexPtr = entryPtr->numChars; } } return TCL_OK; } /* *---------------------------------------------------------------------- * * EntryScanTo -- * * Given a y-coordinate (presumably of the curent mouse location) * drag the view in the window to implement the scan operation. * * Results: * None. * * Side effects: * The view in the window may change. * *---------------------------------------------------------------------- */ static void EntryScanTo(entryPtr, x) register Entry *entryPtr; /* Information about widget. */ int x; /* X-coordinate to use for scan * operation. */ { int newLeftIndex; /* * Compute new leftIndex for entry by amplifying the difference * between the current position and the place where the scan * started (the "mark" position). If we run off the left or right * side of the entry, then reset the mark point so that the current * position continues to correspond to the edge of the window. * This means that the picture will start dragging as soon as the * mouse reverses direction (without this reset, might have to slide * mouse a long ways back before the picture starts moving again). */ newLeftIndex = entryPtr->scanMarkIndex - (10*(x - entryPtr->scanMarkX))/entryPtr->avgWidth; if (newLeftIndex >= entryPtr->numChars) { newLeftIndex = entryPtr->scanMarkIndex = entryPtr->numChars-1; entryPtr->scanMarkX = x; } if (newLeftIndex < 0) { newLeftIndex = entryPtr->scanMarkIndex = 0; entryPtr->scanMarkX = x; } if (newLeftIndex != entryPtr->leftIndex) { entryPtr->leftIndex = newLeftIndex; EventuallyRedraw(entryPtr); EntryUpdateScrollbar(entryPtr); } } /* *---------------------------------------------------------------------- * * EntrySelectTo -- * * Modify the selection by moving its un-anchored end. This could * make the selection either larger or smaller. * * Results: * None. * * Side effects: * The selection changes. * *---------------------------------------------------------------------- */ static void EntrySelectTo(entryPtr, index) register Entry *entryPtr; /* Information about widget. */ int index; /* Index of element that is to * become the "other" end of the * selection. */ { int newFirst, newLast; /* * Grab the selection if we don't own it already. */ if ((entryPtr->selectFirst == -1) && (entryPtr->exportSelection)) { Tk_OwnSelection(entryPtr->tkwin, EntryLostSelection, (ClientData) entryPtr); } if (index < 0) { index = 0; } if (index >= entryPtr->numChars) { index = entryPtr->numChars-1; } if (entryPtr->selectAnchor > entryPtr->numChars) { entryPtr->selectAnchor = entryPtr->numChars; } if (entryPtr->selectAnchor <= index) { newFirst = entryPtr->selectAnchor; newLast = index; } else { newFirst = index; newLast = entryPtr->selectAnchor - 1; if (newLast < 0) { newFirst = newLast = -1; } } if ((entryPtr->selectFirst == newFirst) && (entryPtr->selectLast == newLast)) { return; } entryPtr->selectFirst = newFirst; entryPtr->selectLast = newLast; EventuallyRedraw(entryPtr); } /* *---------------------------------------------------------------------- * * EntryFetchSelection -- * * This procedure is called back by Tk when the selection is * requested by someone. It returns part or all of the selection * in a buffer provided by the caller. * * Results: * The return value is the number of non-NULL bytes stored * at buffer. Buffer is filled (or partially filled) with a * NULL-terminated string containing part or all of the selection, * as given by offset and maxBytes. * * Side effects: * None. * *---------------------------------------------------------------------- */ static int EntryFetchSelection(clientData, offset, buffer, maxBytes) ClientData clientData; /* Information about entry widget. */ int offset; /* Offset within selection of first * character to be returned. */ char *buffer; /* Location in which to place * selection. */ int maxBytes; /* Maximum number of bytes to place * at buffer, not including terminating * NULL character. */ { Entry *entryPtr = (Entry *) clientData; int count; if ((entryPtr->selectFirst < 0) || !(entryPtr->exportSelection)) { return -1; } count = entryPtr->selectLast + 1 - entryPtr->selectFirst - offset; if (count > maxBytes) { count = maxBytes; } if (count <= 0) { return 0; } strncpy(buffer, entryPtr->string + entryPtr->selectFirst + offset, count); buffer[count] = '\0'; return count; } /* *---------------------------------------------------------------------- * * EntryLostSelection -- * * This procedure is called back by Tk when the selection is * grabbed away from an entry widget. * * Results: * None. * * Side effects: * The existing selection is unhighlighted, and the window is * marked as not containing a selection. * *---------------------------------------------------------------------- */ static void EntryLostSelection(clientData) ClientData clientData; /* Information about entry widget. */ { Entry *entryPtr = (Entry *) clientData; if ((entryPtr->selectFirst != -1) && entryPtr->exportSelection) { entryPtr->selectFirst = -1; entryPtr->selectLast = -1; EventuallyRedraw(entryPtr); } } /* *---------------------------------------------------------------------- * * EventuallyRedraw -- * * Ensure that an entry is eventually redrawn on the display. * * Results: * None. * * Side effects: * Information gets redisplayed. Right now we don't do selective * redisplays: the whole window will be redrawn. This doesn't * seem to hurt performance noticeably, but if it does then this * could be changed. * *---------------------------------------------------------------------- */ static void EventuallyRedraw(entryPtr) register Entry *entryPtr; /* Information about widget. */ { if ((entryPtr->tkwin == NULL) || !Tk_IsMapped(entryPtr->tkwin)) { return; } /* * Right now we don't do selective redisplays: the whole window * will be redrawn. This doesn't seem to hurt performance noticeably, * but if it does then this could be changed. */ if (!(entryPtr->flags & REDRAW_PENDING)) { entryPtr->flags |= REDRAW_PENDING; Tk_DoWhenIdle(DisplayEntry, (ClientData) entryPtr); } } /* *---------------------------------------------------------------------- * * EntryUpdateScrollbar -- * * This procedure is invoked whenever information has changed in * an entry in a way that would invalidate a scrollbar display. * If there is an associated scrollbar, then this command updates * it by invoking a Tcl command. * * Results: * None. * * Side effects: * A Tcl command is invoked, and an additional command may be * invoked to process errors in the command. * *---------------------------------------------------------------------- */ static void EntryUpdateScrollbar(entryPtr) register Entry *entryPtr; /* Information about widget. */ { char args[100]; int result, last, charsInWindow, endX; if (entryPtr->scrollCmd == NULL) { return; } /* * The most painful part here is guessing how many characters * actually fit in the window. This is only an estimate in the * case where the window isn't completely filled with characters. */ charsInWindow = TkMeasureChars(entryPtr->fontPtr, entryPtr->string + entryPtr->leftIndex, entryPtr->numChars - entryPtr->leftIndex, entryPtr->offset, Tk_Width(entryPtr->tkwin), TK_AT_LEAST_ONE|TK_NEWLINES_NOT_SPECIAL, &endX); if (charsInWindow == 0) { last = entryPtr->leftIndex; } else { last = entryPtr->leftIndex + charsInWindow - 1; } if (endX < Tk_Width(entryPtr->tkwin)) { charsInWindow += (Tk_Width(entryPtr->tkwin) - endX)/entryPtr->avgWidth; } sprintf(args, " %d %d %d %d", entryPtr->numChars, charsInWindow, entryPtr->leftIndex, last); result = Tcl_VarEval(entryPtr->interp, entryPtr->scrollCmd, args, (char *) NULL); if (result != TCL_OK) { TkBindError(entryPtr->interp); } Tcl_SetResult(entryPtr->interp, (char *) NULL, TCL_STATIC); } /* *---------------------------------------------------------------------- * * EntryBlinkProc -- * * This procedure is called as a timer handler to blink the * insertion cursor off and on. * * Results: * None. * * Side effects: * The cursor gets turned on or off, redisplay gets invoked, * and this procedure reschedules itself. * *---------------------------------------------------------------------- */ static void EntryBlinkProc(clientData) ClientData clientData; /* Pointer to record describing entry. */ { register Entry *entryPtr = (Entry *) clientData; if (!(entryPtr->flags & GOT_FOCUS) || (entryPtr->cursorOffTime == 0)) { return; } if (entryPtr->flags & CURSOR_ON) { entryPtr->flags &= ~CURSOR_ON; entryPtr->cursorBlinkHandler = Tk_CreateTimerHandler( entryPtr->cursorOffTime, EntryBlinkProc, (ClientData) entryPtr); } else { entryPtr->flags |= CURSOR_ON; entryPtr->cursorBlinkHandler = Tk_CreateTimerHandler( entryPtr->cursorOnTime, EntryBlinkProc, (ClientData) entryPtr); } EventuallyRedraw(entryPtr); } /* *---------------------------------------------------------------------- * * EntryFocusProc -- * * This procedure is called whenever the entry gets or loses the * input focus. It's also called whenever the window is reconfigured * while it has the focus. * * Results: * None. * * Side effects: * The cursor gets turned on or off. * *---------------------------------------------------------------------- */ static void EntryFocusProc(clientData, gotFocus) ClientData clientData; /* Pointer to structure describing entry. */ int gotFocus; /* 1 means window is getting focus, 0 means * it's losing it. */ { register Entry *entryPtr = (Entry *) clientData; if (entryPtr->cursorBlinkHandler != NULL) { Tk_DeleteTimerHandler(entryPtr->cursorBlinkHandler); entryPtr->cursorBlinkHandler = NULL; } if (gotFocus) { entryPtr->flags |= GOT_FOCUS | CURSOR_ON; if (entryPtr->cursorOffTime != 0) { entryPtr->cursorBlinkHandler = Tk_CreateTimerHandler( entryPtr->cursorOnTime, EntryBlinkProc, (ClientData) entryPtr); } } else { entryPtr->flags &= ~(GOT_FOCUS | CURSOR_ON); entryPtr->cursorBlinkHandler = (Tk_TimerToken) NULL; } EventuallyRedraw(entryPtr); } /* *-------------------------------------------------------------- * * EntryTextVarProc -- * * This procedure is invoked when someone changes the variable * whose contents are to be displayed in an entry. * * Results: * NULL is always returned. * * Side effects: * The text displayed in the entry will change to match the * variable. * *-------------------------------------------------------------- */ /* ARGSUSED */ static char * EntryTextVarProc(clientData, interp, name1, name2, flags) ClientData clientData; /* Information about button. */ Tcl_Interp *interp; /* Interpreter containing variable. */ char *name1; /* Name of variable. */ char *name2; /* Second part of variable name. */ int flags; /* Information about what happened. */ { register Entry *entryPtr = (Entry *) clientData; char *value; /* * If the variable is unset, then immediately recreate it unless * the whole interpreter is going away. */ if (flags & TCL_TRACE_UNSETS) { if ((flags & TCL_TRACE_DESTROYED) && !(flags & TCL_INTERP_DESTROYED)) { Tcl_SetVar2(interp, name1, name2, entryPtr->string, flags & TCL_GLOBAL_ONLY); Tcl_TraceVar2(interp, name1, name2, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, EntryTextVarProc, clientData); } return (char *) NULL; } /* * Update the entry's text with the value of the variable, unless * the entry already has that value (this happens when the variable * changes value because we changed it because someone typed in * the entry). */ value = Tcl_GetVar2(interp, name1, name2, flags & TCL_GLOBAL_ONLY); if (value == NULL) { value = ""; } if (strcmp(value, entryPtr->string) != 0) { EntrySetValue(entryPtr, value); } return (char *) NULL; } micropolis-activity/src/tk/makefile.linux0000664000076400007640000000654010724145723021103 0ustar simcitysimcity# # This is a simplified Makefile for use in Tk distributions. Before using # it to compile Tk, you may wish to reset some of the following variables: # # TCL_DIR - Name of directory holding tcl.h and tcl.a. # XLIB - Name of archive containing Xlib binaries. # # You may also wish to add some of the following switches to the CFLAGS # variable: # # -DX11R3 Causes code that depends on R4 facilities not to # be compiled. I haven't tested Tk with R3 in quite # a while, so this switch may not be enough to # generate a working R3 version of Tk. Furthermore, # use of this switch will disable some of the facilities # of Tk related to window managers. # -DNO_PROTOTYPE Turns off ANSI-style procedure prototypes and the # corresponding compile-time checks. Without this # defininition, prototypes will be turned on if the # compiler supports ANSI C by defining __STDC__. # -DTK_LIBRARY=\"dir\" Arranges for dir, which must be the name of a # directory, to be the library directory for Tk scripts. # This value gets put into the variable $tk_library # when a new application is created. The library # defaults to /usr/local/lib/tk, so you don't need the # switch unless your library is in a non-standard place. # CC = gcc #CFLAGS = -I/usr/openwin/include -I. -I$(TCL_DIR) -O2 -DTK_VERSION=\"2.3\" -DUSE_XPM3 -I$(XPM_DIR) CFLAGS = -I/usr/openwin/include -I. -I$(TCL_DIR) -O -DTK_VERSION=\"2.3\" -DUSE_XPM3 -I$(XPM_DIR) #CC = gcc #CFLAGS = -I. -I$(TCL_DIR) -g -DTK_VERSION=\"2.3\" -DUSE_XPM3 -I$(XPM_DIR) TCL_DIR = ../tcl XPM_DIR = ../xpm XLIB = -lX11 #LIBS = libtk.a $(TCL_DIR)/libtcl.a $(XPM_DIR)/libxpm.a LIBS = libtk.a $(TCL_DIR)/libtcl.a $(XPM_DIR)/libxpm.a #LINKS = $(LIBS) -lsocket -lnsl LINKS = $(LIBS) WIDGOBJS = tkbutton.o tkentry.o tkframe.o tklist.o \ tkmenu.o tkmnbut.o tkmsg.o tkscale.o \ tkscrbar.o CANVOBJS = tkcanvas.o tkcvarc.o tkcvbmap.o tkcvline.o \ tkcvpoly.o tkcvtext.o tkcvwind.o tkrectov.o \ tktrig.o TEXTOBJS = tktext.o tktxbtre.o tktxdisp.o tktxidx.o tktxtag.o OBJS = tk3d.o tkargv.o tkatom.o tkbind.o tkbitmap.o \ tkcmds.o tkcolor.o tkconfig.o tkcursor.o tkerror.o \ tkevent.o tkfont.o tkget.o tkgc.o tkgeo.o tkgrab.o \ tkoption.o tkpack.o tkpixmap.o tkplace.o tkpresrv.o \ tkselect.o tksend.o tkshare.o tkwindow.o tkwm.o tkrawtcp.o \ $(WIDGOBJS) $(CANVOBJS) $(TEXTOBJS) WIDGSRCS = tkbutton.c tkentry.c tkframe.c tklist.c \ tkmenu.c tkmnbut.c tkmessage.c tkscale.c \ tkscrbar.c tktext.c tktxbtre.c tktxdisp.c \ tktextindex.c CANVSRCS = tkcanvas.c tkcvarc.c tkcvbmap.c tkcvline.c \ tkcvpoly.c tkcvtext.c tkcvwind.c tkrectov.c \ tktrig.c TEXTSRCS = tktext.c tktxbtre.c tktxdisp.c tktxidx.c tktxtag.c SRCS = tk3d.c tkargv.c tkatom.c tkbind.c tkbitmap.c \ tkcmds.c tkcolor.c tkconfig.c tkcursor.c tkerror.c \ tkevent.c tkfont.c tkget.c tkgc.c tkgeo.c tkgrab.c \ tkoption.c tkpack.c tkplace.c tkpresrv.c tkselect.c \ tksend.c tkshare.c tkwindow.c tkwm.c tkrawtcp.c $(widgsrcs) \ $(CANVSRCS) $(TEXTSRCS) all: wish wish: main.o $(LIBS) $(CC) $(CFLAGS) main.o $(LINKS) $(XLIB) -lm -o wish libtk.a: $(OBJS) rm -f libtk.a ar cr libtk.a $(OBJS) ranlib libtk.a $(TCL_DIR)/libtcl.a: cd $(TCL_DIR); make libtcl.a clean: touch junk~ rm -f $(OBJS) main.o libtk.a wish *~ $(OBJS): tk.h tkint.h tkconfig.h $(WIDGOBJS): default.h $(CANVOBJS): default.h tkcanvas.h main.o: tk.h tkint.h micropolis-activity/src/tk/tkcmds.c0000664000076400007640000005712510724145723017703 0ustar simcitysimcity/* * tkCmds.c -- * * This file contains a collection of Tk-related Tcl commands * that didn't fit in any particular file of the toolkit. * * Copyright 1990-1992 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkCmds.c,v 1.32 92/06/03 14:21:14 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include "tkconfig.h" #include "tkint.h" /* * The data structure below is used by the "after" command to remember * the command to be executed later. */ typedef struct { Tcl_Interp *interp; /* Interpreter in which to execute command. */ char *command; /* Command to execute. Malloc'ed, so must * be freed when structure is deallocated. * NULL means nothing to execute. */ int *donePtr; /* If non-NULL indicates address of word to * set to 1 when command has finally been * executed. */ } AfterInfo; /* * Forward declarations for procedures defined later in this file: */ static void AfterProc _ANSI_ARGS_((ClientData clientData)); static char * WaitVariableProc _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, char *name1, char *name2, int flags)); static void WaitWindowProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); /* *---------------------------------------------------------------------- * * Tk_AfterCmd -- * * This procedure is invoked to process the "after" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tk_AfterCmd(clientData, interp, argc, argv) ClientData clientData; /* Main window associated with * interpreter. Not used.*/ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int ms; AfterInfo *afterPtr; int done; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " milliseconds ?command? ?arg arg ...?\"", (char *) NULL); return TCL_ERROR; } if ((Tcl_GetInt(interp, argv[1], &ms) != TCL_OK) || (ms <= 0)) { Tcl_AppendResult(interp, "bad milliseconds value \"", argv[1], "\"", (char *) NULL); return TCL_ERROR; } afterPtr = (AfterInfo *) ckalloc((unsigned) (sizeof(AfterInfo))); afterPtr->interp = interp; if (argc == 2) { afterPtr->command = (char *) NULL; done = 0; afterPtr->donePtr = &done; } else if (argc == 3) { afterPtr->command = (char *) ckalloc((unsigned) (strlen(argv[2]) + 1)); strcpy(afterPtr->command, argv[2]); afterPtr->donePtr = (int *) NULL; } else { afterPtr->command = Tcl_Concat(argc-2, argv+2); afterPtr->donePtr = (int *) NULL; } Tk_CreateTimerHandler(ms, AfterProc, (ClientData) afterPtr); if (argc == 2) { while (!done) { Tk_DoOneEvent(0); } } /* * Must reset interpreter result because it could have changed as * part of events processed by Tk_DoOneEvent. */ Tcl_ResetResult(interp); return TCL_OK; } /* *---------------------------------------------------------------------- * * AfterProc -- * * Timer callback to execute commands registered with the * "after" command. * * Results: * None. * * Side effects: * Executes whatever command was specified. If the command * returns an error, then the command "tkerror" is invoked * to process the error; if tkerror fails then information * about the error is output on stderr. * *---------------------------------------------------------------------- */ static void AfterProc(clientData) ClientData clientData; /* Describes command to execute. */ { AfterInfo *afterPtr = (AfterInfo *) clientData; int result; if (afterPtr->command != NULL) { result = Tcl_GlobalEval(afterPtr->interp, afterPtr->command); if (result != TCL_OK) { TkBindError(afterPtr->interp); } ckfree(afterPtr->command); } if (afterPtr->donePtr != NULL) { *afterPtr->donePtr = 1; } ckfree((char *) afterPtr); } /* *---------------------------------------------------------------------- * * Tk_BindCmd -- * * This procedure is invoked to process the "bind" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ int Tk_BindCmd(clientData, interp, argc, argv) ClientData clientData; /* Main window associated with * interpreter. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { Tk_Window tkwin = (Tk_Window) clientData; TkWindow *winPtr; ClientData object; if ((argc < 2) || (argc > 4)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " window ?pattern? ?command?\"", (char *) NULL); return TCL_ERROR; } if (argv[1][0] == '.') { winPtr = (TkWindow *) Tk_NameToWindow(interp, argv[1], tkwin); if (winPtr == NULL) { return TCL_ERROR; } object = (ClientData) winPtr->pathName; } else { winPtr = (TkWindow *) clientData; object = (ClientData) Tk_GetUid(argv[1]); } if (argc == 4) { int append = 0; unsigned long mask; if (argv[3][0] == 0) { return Tk_DeleteBinding(interp, winPtr->mainPtr->bindingTable, object, argv[2]); } if (argv[3][0] == '+') { argv[3]++; append = 1; } mask = Tk_CreateBinding(interp, winPtr->mainPtr->bindingTable, object, argv[2], argv[3], append); if (mask == 0) { return TCL_ERROR; } } else if (argc == 3) { char *command; command = Tk_GetBinding(interp, winPtr->mainPtr->bindingTable, object, argv[2]); if (command == NULL) { Tcl_ResetResult(interp); return TCL_OK; } interp->result = command; } else { Tk_GetAllBindings(interp, winPtr->mainPtr->bindingTable, object); } return TCL_OK; } /* *---------------------------------------------------------------------- * * TkBindEventProc -- * * This procedure is invoked by Tk_HandleEvent for each event; it * causes any appropriate bindings for that event to be invoked. * * Results: * None. * * Side effects: * Depends on what bindings have been established with the "bind" * command. * *---------------------------------------------------------------------- */ void TkBindEventProc(winPtr, eventPtr) TkWindow *winPtr; /* Pointer to info about window. */ XEvent *eventPtr; /* Information about event. */ { ClientData objects[3]; static Tk_Uid allUid = NULL; if ((winPtr->mainPtr == NULL) || (winPtr->mainPtr->bindingTable == NULL)) { return; } objects[0] = (ClientData) winPtr->pathName; objects[1] = (ClientData) winPtr->classUid; if (allUid == NULL) { allUid = Tk_GetUid("all"); } objects[2] = (ClientData) allUid; Tk_BindEvent(winPtr->mainPtr->bindingTable, eventPtr, (Tk_Window) winPtr, 3, objects); } /* *---------------------------------------------------------------------- * * Tk_DestroyCmd -- * * This procedure is invoked to process the "destroy" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ int Tk_DestroyCmd(clientData, interp, argc, argv) ClientData clientData; /* Main window associated with * interpreter. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { Tk_Window window; Tk_Window tkwin = (Tk_Window) clientData; if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " pathName\"", (char *) NULL); return TCL_ERROR; } window = Tk_NameToWindow(interp, argv[1], tkwin); if (window == NULL) { return TCL_ERROR; } Tk_DestroyWindow(window); return TCL_OK; } /* *---------------------------------------------------------------------- * * Tk_UpdateCmd -- * * This procedure is invoked to process the "update" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tk_UpdateCmd(clientData, interp, argc, argv) ClientData clientData; /* Main window associated with * interpreter. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { Tk_Window tkwin = (Tk_Window) clientData; int flags; if (argc == 1) { flags = TK_DONT_WAIT; } else if (argc == 2) { if (strncmp(argv[1], "idletasks", strlen(argv[1])) != 0) { Tcl_AppendResult(interp, "bad argument \"", argv[1], "\": must be idletasks", (char *) NULL); return TCL_ERROR; } flags = TK_IDLE_EVENTS; } else { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ?idletasks?\"", (char *) NULL); return TCL_ERROR; } /* * Handle all pending events, sync the display, and repeat over * and over again until all pending events have been handled. */ while (1) { while (Tk_DoOneEvent(flags) != 0) { /* Empty loop body */ } XSync(Tk_Display(tkwin), False); if (Tk_DoOneEvent(flags) == 0) { break; } } /* * Must clear the interpreter's result because event handlers could * have executed commands. */ Tcl_ResetResult(interp); return TCL_OK; } /* *---------------------------------------------------------------------- * * Tk_TkwaitCmd -- * * This procedure is invoked to process the "wait" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tk_TkwaitCmd(clientData, interp, argc, argv) ClientData clientData; /* Main window associated with * interpreter. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { Tk_Window tkwin = (Tk_Window) clientData; int c, length; int done; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " variable|window name\"", (char *) NULL); return TCL_ERROR; } c = argv[1][0]; length = strlen(argv[1]); if ((c == 'v') && (strncmp(argv[1], "variable", length) == 0)) { Tcl_TraceVar(interp, argv[2], TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, WaitVariableProc, (ClientData) &done); done = 0; while (!done) { Tk_DoOneEvent(0); } Tcl_UntraceVar(interp, argv[2], TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, WaitVariableProc, (ClientData) &done); } else if ((c == 'w') && (strncmp(argv[1], "window", length) == 0)) { Tk_Window window; window = Tk_NameToWindow(interp, argv[2], tkwin); if (window == NULL) { return TCL_ERROR; } Tk_CreateEventHandler(window, StructureNotifyMask, WaitWindowProc, (ClientData) &done); done = 0; while (!done) { Tk_DoOneEvent(0); } Tk_DeleteEventHandler(window, StructureNotifyMask, WaitWindowProc, (ClientData) &done); } else { Tcl_AppendResult(interp, "bad option \"", argv[1], "\": must be variable or window", (char *) NULL); return TCL_ERROR; } /* * Clear out the interpreter's result, since it may have been set * by event handlers. */ Tcl_ResetResult(interp); return TCL_OK; } /* ARGSUSED */ static char * WaitVariableProc(clientData, interp, name1, name2, flags) ClientData clientData; /* Pointer to integer to set to 1. */ Tcl_Interp *interp; /* Interpreter containing variable. */ char *name1; /* Name of variable. */ char *name2; /* Second part of variable name. */ int flags; /* Information about what happened. */ { int *donePtr = (int *) clientData; *donePtr = 1; return (char *) NULL; } static void WaitWindowProc(clientData, eventPtr) ClientData clientData; /* Pointer to integer to set to 1. */ XEvent *eventPtr; /* Information about event. */ { int *donePtr = (int *) clientData; if (eventPtr->type == DestroyNotify) { *donePtr = 1; } } /* *---------------------------------------------------------------------- * * Tk_WinfoCmd -- * * This procedure is invoked to process the "winfo" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ int Tk_WinfoCmd(clientData, interp, argc, argv) ClientData clientData; /* Main window associated with * interpreter. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { Tk_Window tkwin = (Tk_Window) clientData; int length; char c, *argName; Tk_Window window; register TkWindow *winPtr; #define SETUP(name) \ if (argc != 3) {\ argName = name; \ goto wrongArgs; \ } \ window = Tk_NameToWindow(interp, argv[2], tkwin); \ if (window == NULL) { \ return TCL_ERROR; \ } if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " option ?arg?\"", (char *) NULL); return TCL_ERROR; } c = argv[1][0]; length = strlen(argv[1]); if ((c == 'a') && (strcmp(argv[1], "atom") == 0)) { if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " atom name\"", (char *) NULL); return TCL_ERROR; } sprintf(interp->result, "%d", Tk_InternAtom(tkwin, argv[2])); } else if ((c == 'a') && (strncmp(argv[1], "atomname", length) == 0) && (length >= 5)) { Atom atom; char *name; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " atomname id\"", (char *) NULL); return TCL_ERROR; } if (Tcl_GetInt(interp, argv[2], (int *) &atom) != TCL_OK) { return TCL_ERROR; } name = Tk_GetAtomName(tkwin, atom); if (strcmp(name, "?bad atom?") == 0) { Tcl_AppendResult(interp, "no atom exists with id \"", argv[2], "\"", (char *) NULL); return TCL_ERROR; } interp->result = name; } else if ((c == 'c') && (strncmp(argv[1], "children", length) == 0) && (length >= 2)) { char *separator, *childName; SETUP("children"); separator = ""; for (winPtr = ((TkWindow *) window)->childList; winPtr != NULL; winPtr = winPtr->nextPtr) { childName = Tcl_Merge(1, &winPtr->pathName); Tcl_AppendResult(interp, separator, childName, (char *) NULL); ckfree(childName); separator = " "; } } else if ((c == 'c') && (strncmp(argv[1], "class", length) == 0) && (length >= 2)) { SETUP("class"); interp->result = Tk_Class(window); } else if ((c == 'c') && (strncmp(argv[1], "containing", length) == 0) && (length >= 2)) { int rootX, rootY; if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " containing rootX rootY\"", (char *) NULL); return TCL_ERROR; } if ((Tk_GetPixels(interp, tkwin, argv[2], &rootX) != TCL_OK) || (Tk_GetPixels(interp, tkwin, argv[3], &rootY) != TCL_OK)) { return TCL_ERROR; } window = Tk_CoordsToWindow(rootX, rootY, tkwin); if (window != NULL) { interp->result = Tk_PathName(window); } } else if ((c == 'f') && (strncmp(argv[1], "fpixels", length) == 0) && (length >= 2)) { double mm, pixels; if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " fpixels window number\"", (char *) NULL); return TCL_ERROR; } window = Tk_NameToWindow(interp, argv[2], tkwin); if (window == NULL) { return TCL_ERROR; } if (Tk_GetScreenMM(interp, window, argv[3], &mm) != TCL_OK) { return TCL_ERROR; } pixels = mm * WidthOfScreen(Tk_Screen(window)) / WidthMMOfScreen(Tk_Screen(window)); sprintf(interp->result, "%g", pixels); } else if ((c == 'g') && (strncmp(argv[1], "geometry", length) == 0)) { SETUP("geometry"); sprintf(interp->result, "%dx%d+%d+%d", Tk_Width(window), Tk_Height(window), Tk_X(window), Tk_Y(window)); } else if ((c == 'h') && (strncmp(argv[1], "height", length) == 0)) { SETUP("height"); sprintf(interp->result, "%d", Tk_Height(window)); } else if ((c == 'i') && (strcmp(argv[1], "id") == 0)) { SETUP("id"); sprintf(interp->result, "0x%x", Tk_WindowId(window)); } else if ((c == 'i') && (strncmp(argv[1], "interps", length) == 0) && (length >= 2)) { if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[1], " interps\"", (char *) NULL); return TCL_ERROR; } return TkGetInterpNames(interp, tkwin); } else if ((c == 'i') && (strncmp(argv[1], "ismapped", length) == 0) && (length >= 2)) { SETUP("ismapped"); interp->result = Tk_IsMapped(window) ? "1" : "0"; } else if ((c == 'n') && (strncmp(argv[1], "name", length) == 0)) { SETUP("geometry"); interp->result = Tk_Name(window); } else if ((c == 'p') && (strncmp(argv[1], "parent", length) == 0)) { SETUP("geometry"); winPtr = (TkWindow *) window; if (winPtr->parentPtr != NULL) { interp->result = winPtr->parentPtr->pathName; } } else if ((c == 'p') && (strncmp(argv[1], "pathname", length) == 0) && (length >= 2)) { Window id; if (argc != 3) { argName = "pathname"; goto wrongArgs; } if (Tcl_GetInt(interp, argv[2], (int *) &id) != TCL_OK) { return TCL_ERROR; } if ((XFindContext(Tk_Display(tkwin), id, tkWindowContext, (void *) &window) != 0) || (((TkWindow *) window)->mainPtr != ((TkWindow *) tkwin)->mainPtr)) { Tcl_AppendResult(interp, "window id \"", argv[2], "\" doesn't exist in this application", (char *) NULL); return TCL_ERROR; } interp->result = Tk_PathName(window); } else if ((c == 'p') && (strncmp(argv[1], "pixels", length) == 0) && (length >= 2)) { int pixels; if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " pixels window number\"", (char *) NULL); return TCL_ERROR; } window = Tk_NameToWindow(interp, argv[2], tkwin); if (window == NULL) { return TCL_ERROR; } if (Tk_GetPixels(interp, window, argv[3], &pixels) != TCL_OK) { return TCL_ERROR; } sprintf(interp->result, "%d", pixels); } else if ((c == 'r') && (strncmp(argv[1], "reqheight", length) == 0) && (length >= 4)) { SETUP("reqheight"); sprintf(interp->result, "%d", Tk_ReqHeight(window)); } else if ((c == 'r') && (strncmp(argv[1], "reqwidth", length) == 0) && (length >= 4)) { SETUP("reqwidth"); sprintf(interp->result, "%d", Tk_ReqWidth(window)); } else if ((c == 'r') && (strcmp(argv[1], "rootx") == 0)) { int x, y; SETUP("rootx"); Tk_GetRootCoords(window, &x, &y); sprintf(interp->result, "%d", x); } else if ((c == 'r') && (strcmp(argv[1], "rooty") == 0)) { int x, y; SETUP("rooty"); Tk_GetRootCoords(window, &x, &y); sprintf(interp->result, "%d", y); } else if ((c == 's') && (strcmp(argv[1], "screen") == 0)) { char string[20]; SETUP("screen"); sprintf(string, "%d", Tk_ScreenNumber(window)); Tcl_AppendResult(interp, Tk_DisplayName(window), ".", string, (char *) NULL); } else if ((c == 's') && (strncmp(argv[1], "screencells", length) == 0) && (length >= 7)) { SETUP("screencells"); sprintf(interp->result, "%d", Tk_DefaultVisual(Tk_Screen(window))->map_entries); } else if ((c == 's') && (strncmp(argv[1], "screendepth", length) == 0) && (length >= 7)) { SETUP("screendepth"); sprintf(interp->result, "%d", Tk_DefaultDepth(Tk_Screen(window))); } else if ((c == 's') && (strncmp(argv[1], "screenheight", length) == 0) && (length >= 7)) { SETUP("screenheight"); sprintf(interp->result, "%d", HeightOfScreen(Tk_Screen(window))); } else if ((c == 's') && (strncmp(argv[1], "screenmmheight", length) == 0) && (length >= 9)) { SETUP("screenmmheight"); sprintf(interp->result, "%d", HeightMMOfScreen(Tk_Screen(window))); } else if ((c == 's') && (strncmp(argv[1], "screenmmwidth", length) == 0) && (length >= 9)) { SETUP("screenmmwidth"); sprintf(interp->result, "%d", WidthMMOfScreen(Tk_Screen(window))); } else if ((c == 's') && (strncmp(argv[1], "screenvisual", length) == 0) && (length >= 7)) { SETUP("screenvisual"); switch (Tk_DefaultVisual(Tk_Screen(window))->class) { case PseudoColor: interp->result = "pseudocolor"; break; case GrayScale: interp->result = "grayscale"; break; case DirectColor: interp->result = "directcolor"; break; case TrueColor: interp->result = "truecolor"; break; case StaticColor: interp->result = "staticcolor"; break; case StaticGray: interp->result = "staticgray"; break; default: interp->result = "unknown"; break; } } else if ((c == 's') && (strncmp(argv[1], "screenwidth", length) == 0) && (length >= 7)) { SETUP("screenwidth"); sprintf(interp->result, "%d", WidthOfScreen(Tk_Screen(window))); } else if ((c == 's') && (strcmp(argv[1], "server") == 0)) { SETUP("server"); Tcl_AppendResult(interp, Tk_DisplayName(window), (char *) NULL); } else if ((c == 't') && (strncmp(argv[1], "toplevel", length) == 0)) { SETUP("toplevel"); for (winPtr = (TkWindow *) window; !(winPtr->flags & TK_TOP_LEVEL); winPtr = winPtr->parentPtr) { /* Empty loop body. */ } interp->result = winPtr->pathName; } else if ((c == 'w') && (strncmp(argv[1], "width", length) == 0)) { SETUP("width"); sprintf(interp->result, "%d", Tk_Width(window)); } else if ((c == 'x') && (argv[1][1] == '\0')) { SETUP("x"); sprintf(interp->result, "%d", Tk_X(window)); } else if ((c == 'y') && (argv[1][1] == '\0')) { SETUP("y"); sprintf(interp->result, "%d", Tk_Y(window)); } else { Tcl_AppendResult(interp, "bad option \"", argv[1], "\": must be atom, atomname, children, class, fpixels, geometry, height, ", "id, interps, ismapped, name, parent, pathname, ", "pixels, reqheight, reqwidth, rootx, rooty, ", "screen, screencells, screendepth, screenheight, ", "screenmmheight, screenmmwidth, screenvisual, ", "screenwidth, toplevel, width, x, or y", (char *) NULL); return TCL_ERROR; } return TCL_OK; wrongArgs: Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], " ", argName, " window\"", (char *) NULL); return TCL_ERROR; } /* *---------------------------------------------------------------------- * * TkDeadAppCmd -- * * If an application has been deleted then all Tk commands will be * re-bound to this procedure. * * Results: * A standard Tcl error is reported to let the user know that * the application is dead. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int TkDeadAppCmd(clientData, interp, argc, argv) ClientData clientData; /* Dummy. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { Tcl_AppendResult(interp, "can't invoke \"", argv[0], "\" command: application has been destroyed", (char *) NULL); return TCL_ERROR; } micropolis-activity/src/tk/ks_names.h0000664000076400007640000005245710724145723020226 0ustar simcitysimcity/* * This file is generated from $(INCLUDESRC)/keysymdef.h. Do not edit. */ { "BackSpace", 0xFF08 }, { "Tab", 0xFF09 }, { "Linefeed", 0xFF0A }, { "Clear", 0xFF0B }, { "Return", 0xFF0D }, { "Pause", 0xFF13 }, { "Escape", 0xFF1B }, { "Delete", 0xFFFF }, { "Multi_key", 0xFF20 }, { "Kanji", 0xFF21 }, { "Home", 0xFF50 }, { "Left", 0xFF51 }, { "Up", 0xFF52 }, { "Right", 0xFF53 }, { "Down", 0xFF54 }, { "Prior", 0xFF55 }, { "Next", 0xFF56 }, { "End", 0xFF57 }, { "Begin", 0xFF58 }, { "Select", 0xFF60 }, { "Print", 0xFF61 }, { "Execute", 0xFF62 }, { "Insert", 0xFF63 }, { "Undo", 0xFF65 }, { "Redo", 0xFF66 }, { "Menu", 0xFF67 }, { "Find", 0xFF68 }, { "Cancel", 0xFF69 }, { "Help", 0xFF6A }, { "Break", 0xFF6B }, { "Mode_switch", 0xFF7E }, { "script_switch", 0xFF7E }, { "Num_Lock", 0xFF7F }, { "KP_Space", 0xFF80 }, { "KP_Tab", 0xFF89 }, { "KP_Enter", 0xFF8D }, { "KP_F1", 0xFF91 }, { "KP_F2", 0xFF92 }, { "KP_F3", 0xFF93 }, { "KP_F4", 0xFF94 }, { "KP_Equal", 0xFFBD }, { "KP_Multiply", 0xFFAA }, { "KP_Add", 0xFFAB }, { "KP_Separator", 0xFFAC }, { "KP_Subtract", 0xFFAD }, { "KP_Decimal", 0xFFAE }, { "KP_Divide", 0xFFAF }, { "KP_0", 0xFFB0 }, { "KP_1", 0xFFB1 }, { "KP_2", 0xFFB2 }, { "KP_3", 0xFFB3 }, { "KP_4", 0xFFB4 }, { "KP_5", 0xFFB5 }, { "KP_6", 0xFFB6 }, { "KP_7", 0xFFB7 }, { "KP_8", 0xFFB8 }, { "KP_9", 0xFFB9 }, { "F1", 0xFFBE }, { "F2", 0xFFBF }, { "F3", 0xFFC0 }, { "F4", 0xFFC1 }, { "F5", 0xFFC2 }, { "F6", 0xFFC3 }, { "F7", 0xFFC4 }, { "F8", 0xFFC5 }, { "F9", 0xFFC6 }, { "F10", 0xFFC7 }, { "F11", 0xFFC8 }, { "L1", 0xFFC8 }, { "F12", 0xFFC9 }, { "L2", 0xFFC9 }, { "F13", 0xFFCA }, { "L3", 0xFFCA }, { "F14", 0xFFCB }, { "L4", 0xFFCB }, { "F15", 0xFFCC }, { "L5", 0xFFCC }, { "F16", 0xFFCD }, { "L6", 0xFFCD }, { "F17", 0xFFCE }, { "L7", 0xFFCE }, { "F18", 0xFFCF }, { "L8", 0xFFCF }, { "F19", 0xFFD0 }, { "L9", 0xFFD0 }, { "F20", 0xFFD1 }, { "L10", 0xFFD1 }, { "F21", 0xFFD2 }, { "R1", 0xFFD2 }, { "F22", 0xFFD3 }, { "R2", 0xFFD3 }, { "F23", 0xFFD4 }, { "R3", 0xFFD4 }, { "F24", 0xFFD5 }, { "R4", 0xFFD5 }, { "F25", 0xFFD6 }, { "R5", 0xFFD6 }, { "F26", 0xFFD7 }, { "R6", 0xFFD7 }, { "F27", 0xFFD8 }, { "R7", 0xFFD8 }, { "F28", 0xFFD9 }, { "R8", 0xFFD9 }, { "F29", 0xFFDA }, { "R9", 0xFFDA }, { "F30", 0xFFDB }, { "R10", 0xFFDB }, { "F31", 0xFFDC }, { "R11", 0xFFDC }, { "F32", 0xFFDD }, { "R12", 0xFFDD }, { "R13", 0xFFDE }, { "F33", 0xFFDE }, { "F34", 0xFFDF }, { "R14", 0xFFDF }, { "F35", 0xFFE0 }, { "R15", 0xFFE0 }, { "Shift_L", 0xFFE1 }, { "Shift_R", 0xFFE2 }, { "Control_L", 0xFFE3 }, { "Control_R", 0xFFE4 }, { "Caps_Lock", 0xFFE5 }, { "Shift_Lock", 0xFFE6 }, { "Meta_L", 0xFFE7 }, { "Meta_R", 0xFFE8 }, { "Alt_L", 0xFFE9 }, { "Alt_R", 0xFFEA }, { "Super_L", 0xFFEB }, { "Super_R", 0xFFEC }, { "Hyper_L", 0xFFED }, { "Hyper_R", 0xFFEE }, { "space", 0x020 }, { "exclam", 0x021 }, { "quotedbl", 0x022 }, { "numbersign", 0x023 }, { "dollar", 0x024 }, { "percent", 0x025 }, { "ampersand", 0x026 }, { "quoteright", 0x027 }, { "parenleft", 0x028 }, { "parenright", 0x029 }, { "asterisk", 0x02a }, { "plus", 0x02b }, { "comma", 0x02c }, { "minus", 0x02d }, { "period", 0x02e }, { "slash", 0x02f }, { "0", 0x030 }, { "1", 0x031 }, { "2", 0x032 }, { "3", 0x033 }, { "4", 0x034 }, { "5", 0x035 }, { "6", 0x036 }, { "7", 0x037 }, { "8", 0x038 }, { "9", 0x039 }, { "colon", 0x03a }, { "semicolon", 0x03b }, { "less", 0x03c }, { "equal", 0x03d }, { "greater", 0x03e }, { "question", 0x03f }, { "at", 0x040 }, { "A", 0x041 }, { "B", 0x042 }, { "C", 0x043 }, { "D", 0x044 }, { "E", 0x045 }, { "F", 0x046 }, { "G", 0x047 }, { "H", 0x048 }, { "I", 0x049 }, { "J", 0x04a }, { "K", 0x04b }, { "L", 0x04c }, { "M", 0x04d }, { "N", 0x04e }, { "O", 0x04f }, { "P", 0x050 }, { "Q", 0x051 }, { "R", 0x052 }, { "S", 0x053 }, { "T", 0x054 }, { "U", 0x055 }, { "V", 0x056 }, { "W", 0x057 }, { "X", 0x058 }, { "Y", 0x059 }, { "Z", 0x05a }, { "bracketleft", 0x05b }, { "backslash", 0x05c }, { "bracketright", 0x05d }, { "asciicircum", 0x05e }, { "underscore", 0x05f }, { "quoteleft", 0x060 }, { "a", 0x061 }, { "b", 0x062 }, { "c", 0x063 }, { "d", 0x064 }, { "e", 0x065 }, { "f", 0x066 }, { "g", 0x067 }, { "h", 0x068 }, { "i", 0x069 }, { "j", 0x06a }, { "k", 0x06b }, { "l", 0x06c }, { "m", 0x06d }, { "n", 0x06e }, { "o", 0x06f }, { "p", 0x070 }, { "q", 0x071 }, { "r", 0x072 }, { "s", 0x073 }, { "t", 0x074 }, { "u", 0x075 }, { "v", 0x076 }, { "w", 0x077 }, { "x", 0x078 }, { "y", 0x079 }, { "z", 0x07a }, { "braceleft", 0x07b }, { "bar", 0x07c }, { "braceright", 0x07d }, { "asciitilde", 0x07e }, { "nobreakspace", 0x0a0 }, { "exclamdown", 0x0a1 }, { "cent", 0x0a2 }, { "sterling", 0x0a3 }, { "currency", 0x0a4 }, { "yen", 0x0a5 }, { "brokenbar", 0x0a6 }, { "section", 0x0a7 }, { "diaeresis", 0x0a8 }, { "copyright", 0x0a9 }, { "ordfeminine", 0x0aa }, { "guillemotleft", 0x0ab }, { "notsign", 0x0ac }, { "hyphen", 0x0ad }, { "registered", 0x0ae }, { "macron", 0x0af }, { "degree", 0x0b0 }, { "plusminus", 0x0b1 }, { "twosuperior", 0x0b2 }, { "threesuperior", 0x0b3 }, { "acute", 0x0b4 }, { "mu", 0x0b5 }, { "paragraph", 0x0b6 }, { "periodcentered", 0x0b7 }, { "cedilla", 0x0b8 }, { "onesuperior", 0x0b9 }, { "masculine", 0x0ba }, { "guillemotright", 0x0bb }, { "onequarter", 0x0bc }, { "onehalf", 0x0bd }, { "threequarters", 0x0be }, { "questiondown", 0x0bf }, { "Agrave", 0x0c0 }, { "Aacute", 0x0c1 }, { "Acircumflex", 0x0c2 }, { "Atilde", 0x0c3 }, { "Adiaeresis", 0x0c4 }, { "Aring", 0x0c5 }, { "AE", 0x0c6 }, { "Ccedilla", 0x0c7 }, { "Egrave", 0x0c8 }, { "Eacute", 0x0c9 }, { "Ecircumflex", 0x0ca }, { "Ediaeresis", 0x0cb }, { "Igrave", 0x0cc }, { "Iacute", 0x0cd }, { "Icircumflex", 0x0ce }, { "Idiaeresis", 0x0cf }, { "Eth", 0x0d0 }, { "Ntilde", 0x0d1 }, { "Ograve", 0x0d2 }, { "Oacute", 0x0d3 }, { "Ocircumflex", 0x0d4 }, { "Otilde", 0x0d5 }, { "Odiaeresis", 0x0d6 }, { "multiply", 0x0d7 }, { "Ooblique", 0x0d8 }, { "Ugrave", 0x0d9 }, { "Uacute", 0x0da }, { "Ucircumflex", 0x0db }, { "Udiaeresis", 0x0dc }, { "Yacute", 0x0dd }, { "Thorn", 0x0de }, { "ssharp", 0x0df }, { "agrave", 0x0e0 }, { "aacute", 0x0e1 }, { "acircumflex", 0x0e2 }, { "atilde", 0x0e3 }, { "adiaeresis", 0x0e4 }, { "aring", 0x0e5 }, { "ae", 0x0e6 }, { "ccedilla", 0x0e7 }, { "egrave", 0x0e8 }, { "eacute", 0x0e9 }, { "ecircumflex", 0x0ea }, { "ediaeresis", 0x0eb }, { "igrave", 0x0ec }, { "iacute", 0x0ed }, { "icircumflex", 0x0ee }, { "idiaeresis", 0x0ef }, { "eth", 0x0f0 }, { "ntilde", 0x0f1 }, { "ograve", 0x0f2 }, { "oacute", 0x0f3 }, { "ocircumflex", 0x0f4 }, { "otilde", 0x0f5 }, { "odiaeresis", 0x0f6 }, { "division", 0x0f7 }, { "oslash", 0x0f8 }, { "ugrave", 0x0f9 }, { "uacute", 0x0fa }, { "ucircumflex", 0x0fb }, { "udiaeresis", 0x0fc }, { "yacute", 0x0fd }, { "thorn", 0x0fe }, { "ydiaeresis", 0x0ff }, { "Aogonek", 0x1a1 }, { "breve", 0x1a2 }, { "Lstroke", 0x1a3 }, { "Lcaron", 0x1a5 }, { "Sacute", 0x1a6 }, { "Scaron", 0x1a9 }, { "Scedilla", 0x1aa }, { "Tcaron", 0x1ab }, { "Zacute", 0x1ac }, { "Zcaron", 0x1ae }, { "Zabovedot", 0x1af }, { "aogonek", 0x1b1 }, { "ogonek", 0x1b2 }, { "lstroke", 0x1b3 }, { "lcaron", 0x1b5 }, { "sacute", 0x1b6 }, { "caron", 0x1b7 }, { "scaron", 0x1b9 }, { "scedilla", 0x1ba }, { "tcaron", 0x1bb }, { "zacute", 0x1bc }, { "doubleacute", 0x1bd }, { "zcaron", 0x1be }, { "zabovedot", 0x1bf }, { "Racute", 0x1c0 }, { "Abreve", 0x1c3 }, { "Cacute", 0x1c6 }, { "Ccaron", 0x1c8 }, { "Eogonek", 0x1ca }, { "Ecaron", 0x1cc }, { "Dcaron", 0x1cf }, { "Nacute", 0x1d1 }, { "Ncaron", 0x1d2 }, { "Odoubleacute", 0x1d5 }, { "Rcaron", 0x1d8 }, { "Uring", 0x1d9 }, { "Udoubleacute", 0x1db }, { "Tcedilla", 0x1de }, { "racute", 0x1e0 }, { "abreve", 0x1e3 }, { "cacute", 0x1e6 }, { "ccaron", 0x1e8 }, { "eogonek", 0x1ea }, { "ecaron", 0x1ec }, { "dcaron", 0x1ef }, { "nacute", 0x1f1 }, { "ncaron", 0x1f2 }, { "odoubleacute", 0x1f5 }, { "udoubleacute", 0x1fb }, { "rcaron", 0x1f8 }, { "uring", 0x1f9 }, { "tcedilla", 0x1fe }, { "abovedot", 0x1ff }, { "Hstroke", 0x2a1 }, { "Hcircumflex", 0x2a6 }, { "Iabovedot", 0x2a9 }, { "Gbreve", 0x2ab }, { "Jcircumflex", 0x2ac }, { "hstroke", 0x2b1 }, { "hcircumflex", 0x2b6 }, { "idotless", 0x2b9 }, { "gbreve", 0x2bb }, { "jcircumflex", 0x2bc }, { "Cabovedot", 0x2c5 }, { "Ccircumflex", 0x2c6 }, { "Gabovedot", 0x2d5 }, { "Gcircumflex", 0x2d8 }, { "Ubreve", 0x2dd }, { "Scircumflex", 0x2de }, { "cabovedot", 0x2e5 }, { "ccircumflex", 0x2e6 }, { "gabovedot", 0x2f5 }, { "gcircumflex", 0x2f8 }, { "ubreve", 0x2fd }, { "scircumflex", 0x2fe }, { "kappa", 0x3a2 }, { "Rcedilla", 0x3a3 }, { "Itilde", 0x3a5 }, { "Lcedilla", 0x3a6 }, { "Emacron", 0x3aa }, { "Gcedilla", 0x3ab }, { "Tslash", 0x3ac }, { "rcedilla", 0x3b3 }, { "itilde", 0x3b5 }, { "lcedilla", 0x3b6 }, { "emacron", 0x3ba }, { "gacute", 0x3bb }, { "tslash", 0x3bc }, { "ENG", 0x3bd }, { "eng", 0x3bf }, { "Amacron", 0x3c0 }, { "Iogonek", 0x3c7 }, { "Eabovedot", 0x3cc }, { "Imacron", 0x3cf }, { "Ncedilla", 0x3d1 }, { "Omacron", 0x3d2 }, { "Kcedilla", 0x3d3 }, { "Uogonek", 0x3d9 }, { "Utilde", 0x3dd }, { "Umacron", 0x3de }, { "amacron", 0x3e0 }, { "iogonek", 0x3e7 }, { "eabovedot", 0x3ec }, { "imacron", 0x3ef }, { "ncedilla", 0x3f1 }, { "omacron", 0x3f2 }, { "kcedilla", 0x3f3 }, { "uogonek", 0x3f9 }, { "utilde", 0x3fd }, { "umacron", 0x3fe }, { "overline", 0x47e }, { "kana_fullstop", 0x4a1 }, { "kana_openingbracket", 0x4a2 }, { "kana_closingbracket", 0x4a3 }, { "kana_comma", 0x4a4 }, { "kana_middledot", 0x4a5 }, { "kana_WO", 0x4a6 }, { "kana_a", 0x4a7 }, { "kana_i", 0x4a8 }, { "kana_u", 0x4a9 }, { "kana_e", 0x4aa }, { "kana_o", 0x4ab }, { "kana_ya", 0x4ac }, { "kana_yu", 0x4ad }, { "kana_yo", 0x4ae }, { "kana_tu", 0x4af }, { "prolongedsound", 0x4b0 }, { "kana_A", 0x4b1 }, { "kana_I", 0x4b2 }, { "kana_U", 0x4b3 }, { "kana_E", 0x4b4 }, { "kana_O", 0x4b5 }, { "kana_KA", 0x4b6 }, { "kana_KI", 0x4b7 }, { "kana_KU", 0x4b8 }, { "kana_KE", 0x4b9 }, { "kana_KO", 0x4ba }, { "kana_SA", 0x4bb }, { "kana_SHI", 0x4bc }, { "kana_SU", 0x4bd }, { "kana_SE", 0x4be }, { "kana_SO", 0x4bf }, { "kana_TA", 0x4c0 }, { "kana_TI", 0x4c1 }, { "kana_TU", 0x4c2 }, { "kana_TE", 0x4c3 }, { "kana_TO", 0x4c4 }, { "kana_NA", 0x4c5 }, { "kana_NI", 0x4c6 }, { "kana_NU", 0x4c7 }, { "kana_NE", 0x4c8 }, { "kana_NO", 0x4c9 }, { "kana_HA", 0x4ca }, { "kana_HI", 0x4cb }, { "kana_HU", 0x4cc }, { "kana_HE", 0x4cd }, { "kana_HO", 0x4ce }, { "kana_MA", 0x4cf }, { "kana_MI", 0x4d0 }, { "kana_MU", 0x4d1 }, { "kana_ME", 0x4d2 }, { "kana_MO", 0x4d3 }, { "kana_YA", 0x4d4 }, { "kana_YU", 0x4d5 }, { "kana_YO", 0x4d6 }, { "kana_RA", 0x4d7 }, { "kana_RI", 0x4d8 }, { "kana_RU", 0x4d9 }, { "kana_RE", 0x4da }, { "kana_RO", 0x4db }, { "kana_WA", 0x4dc }, { "kana_N", 0x4dd }, { "voicedsound", 0x4de }, { "semivoicedsound", 0x4df }, { "kana_switch", 0xFF7E }, { "Arabic_comma", 0x5ac }, { "Arabic_semicolon", 0x5bb }, { "Arabic_question_mark", 0x5bf }, { "Arabic_hamza", 0x5c1 }, { "Arabic_maddaonalef", 0x5c2 }, { "Arabic_hamzaonalef", 0x5c3 }, { "Arabic_hamzaonwaw", 0x5c4 }, { "Arabic_hamzaunderalef", 0x5c5 }, { "Arabic_hamzaonyeh", 0x5c6 }, { "Arabic_alef", 0x5c7 }, { "Arabic_beh", 0x5c8 }, { "Arabic_tehmarbuta", 0x5c9 }, { "Arabic_teh", 0x5ca }, { "Arabic_theh", 0x5cb }, { "Arabic_jeem", 0x5cc }, { "Arabic_hah", 0x5cd }, { "Arabic_khah", 0x5ce }, { "Arabic_dal", 0x5cf }, { "Arabic_thal", 0x5d0 }, { "Arabic_ra", 0x5d1 }, { "Arabic_zain", 0x5d2 }, { "Arabic_seen", 0x5d3 }, { "Arabic_sheen", 0x5d4 }, { "Arabic_sad", 0x5d5 }, { "Arabic_dad", 0x5d6 }, { "Arabic_tah", 0x5d7 }, { "Arabic_zah", 0x5d8 }, { "Arabic_ain", 0x5d9 }, { "Arabic_ghain", 0x5da }, { "Arabic_tatweel", 0x5e0 }, { "Arabic_feh", 0x5e1 }, { "Arabic_qaf", 0x5e2 }, { "Arabic_kaf", 0x5e3 }, { "Arabic_lam", 0x5e4 }, { "Arabic_meem", 0x5e5 }, { "Arabic_noon", 0x5e6 }, { "Arabic_heh", 0x5e7 }, { "Arabic_waw", 0x5e8 }, { "Arabic_alefmaksura", 0x5e9 }, { "Arabic_yeh", 0x5ea }, { "Arabic_fathatan", 0x5eb }, { "Arabic_dammatan", 0x5ec }, { "Arabic_kasratan", 0x5ed }, { "Arabic_fatha", 0x5ee }, { "Arabic_damma", 0x5ef }, { "Arabic_kasra", 0x5f0 }, { "Arabic_shadda", 0x5f1 }, { "Arabic_sukun", 0x5f2 }, { "Arabic_switch", 0xFF7E }, { "Serbian_dje", 0x6a1 }, { "Macedonia_gje", 0x6a2 }, { "Cyrillic_io", 0x6a3 }, { "Ukranian_je", 0x6a4 }, { "Macedonia_dse", 0x6a5 }, { "Ukranian_i", 0x6a6 }, { "Ukranian_yi", 0x6a7 }, { "Serbian_je", 0x6a8 }, { "Serbian_lje", 0x6a9 }, { "Serbian_nje", 0x6aa }, { "Serbian_tshe", 0x6ab }, { "Macedonia_kje", 0x6ac }, { "Byelorussian_shortu", 0x6ae }, { "Serbian_dze", 0x6af }, { "numerosign", 0x6b0 }, { "Serbian_DJE", 0x6b1 }, { "Macedonia_GJE", 0x6b2 }, { "Cyrillic_IO", 0x6b3 }, { "Ukranian_JE", 0x6b4 }, { "Macedonia_DSE", 0x6b5 }, { "Ukranian_I", 0x6b6 }, { "Ukranian_YI", 0x6b7 }, { "Serbian_JE", 0x6b8 }, { "Serbian_LJE", 0x6b9 }, { "Serbian_NJE", 0x6ba }, { "Serbian_TSHE", 0x6bb }, { "Macedonia_KJE", 0x6bc }, { "Byelorussian_SHORTU", 0x6be }, { "Serbian_DZE", 0x6bf }, { "Cyrillic_yu", 0x6c0 }, { "Cyrillic_a", 0x6c1 }, { "Cyrillic_be", 0x6c2 }, { "Cyrillic_tse", 0x6c3 }, { "Cyrillic_de", 0x6c4 }, { "Cyrillic_ie", 0x6c5 }, { "Cyrillic_ef", 0x6c6 }, { "Cyrillic_ghe", 0x6c7 }, { "Cyrillic_ha", 0x6c8 }, { "Cyrillic_i", 0x6c9 }, { "Cyrillic_shorti", 0x6ca }, { "Cyrillic_ka", 0x6cb }, { "Cyrillic_el", 0x6cc }, { "Cyrillic_em", 0x6cd }, { "Cyrillic_en", 0x6ce }, { "Cyrillic_o", 0x6cf }, { "Cyrillic_pe", 0x6d0 }, { "Cyrillic_ya", 0x6d1 }, { "Cyrillic_er", 0x6d2 }, { "Cyrillic_es", 0x6d3 }, { "Cyrillic_te", 0x6d4 }, { "Cyrillic_u", 0x6d5 }, { "Cyrillic_zhe", 0x6d6 }, { "Cyrillic_ve", 0x6d7 }, { "Cyrillic_softsign", 0x6d8 }, { "Cyrillic_yeru", 0x6d9 }, { "Cyrillic_ze", 0x6da }, { "Cyrillic_sha", 0x6db }, { "Cyrillic_e", 0x6dc }, { "Cyrillic_shcha", 0x6dd }, { "Cyrillic_che", 0x6de }, { "Cyrillic_hardsign", 0x6df }, { "Cyrillic_YU", 0x6e0 }, { "Cyrillic_A", 0x6e1 }, { "Cyrillic_BE", 0x6e2 }, { "Cyrillic_TSE", 0x6e3 }, { "Cyrillic_DE", 0x6e4 }, { "Cyrillic_IE", 0x6e5 }, { "Cyrillic_EF", 0x6e6 }, { "Cyrillic_GHE", 0x6e7 }, { "Cyrillic_HA", 0x6e8 }, { "Cyrillic_I", 0x6e9 }, { "Cyrillic_SHORTI", 0x6ea }, { "Cyrillic_KA", 0x6eb }, { "Cyrillic_EL", 0x6ec }, { "Cyrillic_EM", 0x6ed }, { "Cyrillic_EN", 0x6ee }, { "Cyrillic_O", 0x6ef }, { "Cyrillic_PE", 0x6f0 }, { "Cyrillic_YA", 0x6f1 }, { "Cyrillic_ER", 0x6f2 }, { "Cyrillic_ES", 0x6f3 }, { "Cyrillic_TE", 0x6f4 }, { "Cyrillic_U", 0x6f5 }, { "Cyrillic_ZHE", 0x6f6 }, { "Cyrillic_VE", 0x6f7 }, { "Cyrillic_SOFTSIGN", 0x6f8 }, { "Cyrillic_YERU", 0x6f9 }, { "Cyrillic_ZE", 0x6fa }, { "Cyrillic_SHA", 0x6fb }, { "Cyrillic_E", 0x6fc }, { "Cyrillic_SHCHA", 0x6fd }, { "Cyrillic_CHE", 0x6fe }, { "Cyrillic_HARDSIGN", 0x6ff }, { "Greek_ALPHAaccent", 0x7a1 }, { "Greek_EPSILONaccent", 0x7a2 }, { "Greek_ETAaccent", 0x7a3 }, { "Greek_IOTAaccent", 0x7a4 }, { "Greek_IOTAdiaeresis", 0x7a5 }, { "Greek_IOTAaccentdiaeresis", 0x7a6 }, { "Greek_OMICRONaccent", 0x7a7 }, { "Greek_UPSILONaccent", 0x7a8 }, { "Greek_UPSILONdieresis", 0x7a9 }, { "Greek_UPSILONaccentdieresis", 0x7aa }, { "Greek_OMEGAaccent", 0x7ab }, { "Greek_alphaaccent", 0x7b1 }, { "Greek_epsilonaccent", 0x7b2 }, { "Greek_etaaccent", 0x7b3 }, { "Greek_iotaaccent", 0x7b4 }, { "Greek_iotadieresis", 0x7b5 }, { "Greek_iotaaccentdieresis", 0x7b6 }, { "Greek_omicronaccent", 0x7b7 }, { "Greek_upsilonaccent", 0x7b8 }, { "Greek_upsilondieresis", 0x7b9 }, { "Greek_upsilonaccentdieresis", 0x7ba }, { "Greek_omegaaccent", 0x7bb }, { "Greek_ALPHA", 0x7c1 }, { "Greek_BETA", 0x7c2 }, { "Greek_GAMMA", 0x7c3 }, { "Greek_DELTA", 0x7c4 }, { "Greek_EPSILON", 0x7c5 }, { "Greek_ZETA", 0x7c6 }, { "Greek_ETA", 0x7c7 }, { "Greek_THETA", 0x7c8 }, { "Greek_IOTA", 0x7c9 }, { "Greek_KAPPA", 0x7ca }, { "Greek_LAMBDA", 0x7cb }, { "Greek_MU", 0x7cc }, { "Greek_NU", 0x7cd }, { "Greek_XI", 0x7ce }, { "Greek_OMICRON", 0x7cf }, { "Greek_PI", 0x7d0 }, { "Greek_RHO", 0x7d1 }, { "Greek_SIGMA", 0x7d2 }, { "Greek_TAU", 0x7d4 }, { "Greek_UPSILON", 0x7d5 }, { "Greek_PHI", 0x7d6 }, { "Greek_CHI", 0x7d7 }, { "Greek_PSI", 0x7d8 }, { "Greek_OMEGA", 0x7d9 }, { "Greek_alpha", 0x7e1 }, { "Greek_beta", 0x7e2 }, { "Greek_gamma", 0x7e3 }, { "Greek_delta", 0x7e4 }, { "Greek_epsilon", 0x7e5 }, { "Greek_zeta", 0x7e6 }, { "Greek_eta", 0x7e7 }, { "Greek_theta", 0x7e8 }, { "Greek_iota", 0x7e9 }, { "Greek_kappa", 0x7ea }, { "Greek_lambda", 0x7eb }, { "Greek_mu", 0x7ec }, { "Greek_nu", 0x7ed }, { "Greek_xi", 0x7ee }, { "Greek_omicron", 0x7ef }, { "Greek_pi", 0x7f0 }, { "Greek_rho", 0x7f1 }, { "Greek_sigma", 0x7f2 }, { "Greek_finalsmallsigma", 0x7f3 }, { "Greek_tau", 0x7f4 }, { "Greek_upsilon", 0x7f5 }, { "Greek_phi", 0x7f6 }, { "Greek_chi", 0x7f7 }, { "Greek_psi", 0x7f8 }, { "Greek_omega", 0x7f9 }, { "Greek_switch", 0xFF7E }, { "leftradical", 0x8a1 }, { "topleftradical", 0x8a2 }, { "horizconnector", 0x8a3 }, { "topintegral", 0x8a4 }, { "botintegral", 0x8a5 }, { "vertconnector", 0x8a6 }, { "topleftsqbracket", 0x8a7 }, { "botleftsqbracket", 0x8a8 }, { "toprightsqbracket", 0x8a9 }, { "botrightsqbracket", 0x8aa }, { "topleftparens", 0x8ab }, { "botleftparens", 0x8ac }, { "toprightparens", 0x8ad }, { "botrightparens", 0x8ae }, { "leftmiddlecurlybrace", 0x8af }, { "rightmiddlecurlybrace", 0x8b0 }, { "topleftsummation", 0x8b1 }, { "botleftsummation", 0x8b2 }, { "topvertsummationconnector", 0x8b3 }, { "botvertsummationconnector", 0x8b4 }, { "toprightsummation", 0x8b5 }, { "botrightsummation", 0x8b6 }, { "rightmiddlesummation", 0x8b7 }, { "lessthanequal", 0x8bc }, { "notequal", 0x8bd }, { "greaterthanequal", 0x8be }, { "integral", 0x8bf }, { "therefore", 0x8c0 }, { "variation", 0x8c1 }, { "infinity", 0x8c2 }, { "nabla", 0x8c5 }, { "approximate", 0x8c8 }, { "similarequal", 0x8c9 }, { "ifonlyif", 0x8cd }, { "implies", 0x8ce }, { "identical", 0x8cf }, { "radical", 0x8d6 }, { "includedin", 0x8da }, { "includes", 0x8db }, { "intersection", 0x8dc }, { "union", 0x8dd }, { "logicaland", 0x8de }, { "logicalor", 0x8df }, { "partialderivative", 0x8ef }, { "function", 0x8f6 }, { "leftarrow", 0x8fb }, { "uparrow", 0x8fc }, { "rightarrow", 0x8fd }, { "downarrow", 0x8fe }, { "blank", 0x9df }, { "soliddiamond", 0x9e0 }, { "checkerboard", 0x9e1 }, { "ht", 0x9e2 }, { "ff", 0x9e3 }, { "cr", 0x9e4 }, { "lf", 0x9e5 }, { "nl", 0x9e8 }, { "vt", 0x9e9 }, { "lowrightcorner", 0x9ea }, { "uprightcorner", 0x9eb }, { "upleftcorner", 0x9ec }, { "lowleftcorner", 0x9ed }, { "crossinglines", 0x9ee }, { "horizlinescan1", 0x9ef }, { "horizlinescan3", 0x9f0 }, { "horizlinescan5", 0x9f1 }, { "horizlinescan7", 0x9f2 }, { "horizlinescan9", 0x9f3 }, { "leftt", 0x9f4 }, { "rightt", 0x9f5 }, { "bott", 0x9f6 }, { "topt", 0x9f7 }, { "vertbar", 0x9f8 }, { "emspace", 0xaa1 }, { "enspace", 0xaa2 }, { "em3space", 0xaa3 }, { "em4space", 0xaa4 }, { "digitspace", 0xaa5 }, { "punctspace", 0xaa6 }, { "thinspace", 0xaa7 }, { "hairspace", 0xaa8 }, { "emdash", 0xaa9 }, { "endash", 0xaaa }, { "signifblank", 0xaac }, { "ellipsis", 0xaae }, { "doubbaselinedot", 0xaaf }, { "onethird", 0xab0 }, { "twothirds", 0xab1 }, { "onefifth", 0xab2 }, { "twofifths", 0xab3 }, { "threefifths", 0xab4 }, { "fourfifths", 0xab5 }, { "onesixth", 0xab6 }, { "fivesixths", 0xab7 }, { "careof", 0xab8 }, { "figdash", 0xabb }, { "leftanglebracket", 0xabc }, { "decimalpoint", 0xabd }, { "rightanglebracket", 0xabe }, { "marker", 0xabf }, { "oneeighth", 0xac3 }, { "threeeighths", 0xac4 }, { "fiveeighths", 0xac5 }, { "seveneighths", 0xac6 }, { "trademark", 0xac9 }, { "signaturemark", 0xaca }, { "trademarkincircle", 0xacb }, { "leftopentriangle", 0xacc }, { "rightopentriangle", 0xacd }, { "emopencircle", 0xace }, { "emopenrectangle", 0xacf }, { "leftsinglequotemark", 0xad0 }, { "rightsinglequotemark", 0xad1 }, { "leftdoublequotemark", 0xad2 }, { "rightdoublequotemark", 0xad3 }, { "prescription", 0xad4 }, { "minutes", 0xad6 }, { "seconds", 0xad7 }, { "latincross", 0xad9 }, { "hexagram", 0xada }, { "filledrectbullet", 0xadb }, { "filledlefttribullet", 0xadc }, { "filledrighttribullet", 0xadd }, { "emfilledcircle", 0xade }, { "emfilledrect", 0xadf }, { "enopencircbullet", 0xae0 }, { "enopensquarebullet", 0xae1 }, { "openrectbullet", 0xae2 }, { "opentribulletup", 0xae3 }, { "opentribulletdown", 0xae4 }, { "openstar", 0xae5 }, { "enfilledcircbullet", 0xae6 }, { "enfilledsqbullet", 0xae7 }, { "filledtribulletup", 0xae8 }, { "filledtribulletdown", 0xae9 }, { "leftpointer", 0xaea }, { "rightpointer", 0xaeb }, { "club", 0xaec }, { "diamond", 0xaed }, { "heart", 0xaee }, { "maltesecross", 0xaf0 }, { "dagger", 0xaf1 }, { "doubledagger", 0xaf2 }, { "checkmark", 0xaf3 }, { "ballotcross", 0xaf4 }, { "musicalsharp", 0xaf5 }, { "musicalflat", 0xaf6 }, { "malesymbol", 0xaf7 }, { "femalesymbol", 0xaf8 }, { "telephone", 0xaf9 }, { "telephonerecorder", 0xafa }, { "phonographcopyright", 0xafb }, { "caret", 0xafc }, { "singlelowquotemark", 0xafd }, { "doublelowquotemark", 0xafe }, { "cursor", 0xaff }, { "leftcaret", 0xba3 }, { "rightcaret", 0xba6 }, { "downcaret", 0xba8 }, { "upcaret", 0xba9 }, { "overbar", 0xbc0 }, { "downtack", 0xbc2 }, { "upshoe", 0xbc3 }, { "downstile", 0xbc4 }, { "underbar", 0xbc6 }, { "jot", 0xbca }, { "quad", 0xbcc }, { "uptack", 0xbce }, { "circle", 0xbcf }, { "upstile", 0xbd3 }, { "downshoe", 0xbd6 }, { "rightshoe", 0xbd8 }, { "leftshoe", 0xbda }, { "lefttack", 0xbdc }, { "righttack", 0xbfc }, { "hebrew_aleph", 0xce0 }, { "hebrew_beth", 0xce1 }, { "hebrew_gimmel", 0xce2 }, { "hebrew_daleth", 0xce3 }, { "hebrew_he", 0xce4 }, { "hebrew_waw", 0xce5 }, { "hebrew_zayin", 0xce6 }, { "hebrew_het", 0xce7 }, { "hebrew_teth", 0xce8 }, { "hebrew_yod", 0xce9 }, { "hebrew_finalkaph", 0xcea }, { "hebrew_kaph", 0xceb }, { "hebrew_lamed", 0xcec }, { "hebrew_finalmem", 0xced }, { "hebrew_mem", 0xcee }, { "hebrew_finalnun", 0xcef }, { "hebrew_nun", 0xcf0 }, { "hebrew_samekh", 0xcf1 }, { "hebrew_ayin", 0xcf2 }, { "hebrew_finalpe", 0xcf3 }, { "hebrew_pe", 0xcf4 }, { "hebrew_finalzadi", 0xcf5 }, { "hebrew_zadi", 0xcf6 }, { "hebrew_kuf", 0xcf7 }, { "hebrew_resh", 0xcf8 }, { "hebrew_shin", 0xcf9 }, { "hebrew_taf", 0xcfa }, { "Hebrew_switch", 0xFF7E }, micropolis-activity/src/tk/tkrectov.c0000664000076400007640000006372410724145723020261 0ustar simcitysimcity/* * tkRectOval.c -- * * This file implements rectangle and oval items for canvas * widgets. * * Copyright 1991-1992 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkRectOval.c,v 1.15 92/08/24 09:23:58 ouster Exp $ SPRITE (Berkeley)"; #endif #include #include #include "tkconfig.h" #include "tkint.h" #include "tkcanvas.h" /* * The structure below defines the record for each rectangle/oval item. */ typedef struct RectOvalItem { Tk_Item header; /* Generic stuff that's the same for all * types. MUST BE FIRST IN STRUCTURE. */ double bbox[4]; /* Coordinates of bounding box for rectangle * or oval (x1, y1, x2, y2). Item includes * x1 and x2 but not y1 and y2. */ int width; /* Width of outline. */ XColor *outlineColor; /* Color for outline. */ XColor *fillColor; /* Color for filling rectangle/oval. */ Pixmap fillStipple; /* Stipple bitmap for filling item. */ GC outlineGC; /* Graphics context for outline. */ GC fillGC; /* Graphics context for filling item. */ } RectOvalItem; /* * Information used for parsing configuration specs: */ static Tk_ConfigSpec configSpecs[] = { {TK_CONFIG_COLOR, "-fill", (char *) NULL, (char *) NULL, (char *) NULL, Tk_Offset(RectOvalItem, fillColor), TK_CONFIG_NULL_OK}, {TK_CONFIG_COLOR, "-outline", (char *) NULL, (char *) NULL, "black", Tk_Offset(RectOvalItem, outlineColor), TK_CONFIG_NULL_OK}, {TK_CONFIG_BITMAP, "-stipple", (char *) NULL, (char *) NULL, (char *) NULL, Tk_Offset(RectOvalItem, fillStipple), TK_CONFIG_NULL_OK}, {TK_CONFIG_CUSTOM, "-tags", (char *) NULL, (char *) NULL, (char *) NULL, 0, TK_CONFIG_NULL_OK, &tkCanvasTagsOption}, {TK_CONFIG_PIXELS, "-width", (char *) NULL, (char *) NULL, "1", Tk_Offset(RectOvalItem, width), TK_CONFIG_DONT_SET_DEFAULT}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; /* * Prototypes for procedures defined in this file: */ static void ComputeRectOvalBbox _ANSI_ARGS_((Tk_Canvas *canvasPtr, RectOvalItem *rectOvalPtr)); static int ConfigureRectOval _ANSI_ARGS_(( Tk_Canvas *canvasPtr, Tk_Item *itemPtr, int argc, char **argv, int flags)); static int CreateRectOval _ANSI_ARGS_((Tk_Canvas *canvasPtr, struct Tk_Item *itemPtr, int argc, char **argv)); static void DeleteRectOval _ANSI_ARGS_((Tk_Item *itemPtr)); static void DisplayRectOval _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, Drawable dst)); static int OvalToArea _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double *areaPtr)); static double OvalToPoint _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double *pointPtr)); static int RectOvalCoords _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, int argc, char **argv)); static int RectToArea _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double *areaPtr)); static double RectToPoint _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double *pointPtr)); static void ScaleRectOval _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double originX, double originY, double scaleX, double scaleY)); static void TranslateRectOval _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double deltaX, double deltaY)); /* * The structures below defines the rectangle and oval item types * by means of procedures that can be invoked by generic item code. */ Tk_ItemType TkRectangleType = { "rectangle", /* name */ sizeof(RectOvalItem), /* itemSize */ CreateRectOval, /* createProc */ configSpecs, /* configSpecs */ ConfigureRectOval, /* configureProc */ RectOvalCoords, /* coordProc */ DeleteRectOval, /* deleteProc */ DisplayRectOval, /* displayProc */ 0, /* alwaysRedraw */ RectToPoint, /* pointProc */ RectToArea, /* areaProc */ (Tk_ItemPostscriptProc *) NULL, /* postscriptProc */ ScaleRectOval, /* scaleProc */ TranslateRectOval, /* translateProc */ (Tk_ItemIndexProc *) NULL, /* indexProc */ (Tk_ItemCursorProc *) NULL, /* cursorProc */ (Tk_ItemSelectionProc *) NULL, /* selectionProc */ (Tk_ItemInsertProc *) NULL, /* insertProc */ (Tk_ItemDCharsProc *) NULL, /* dTextProc */ (Tk_ItemType *) NULL /* nextPtr */ }; Tk_ItemType TkOvalType = { "oval", /* name */ sizeof(RectOvalItem), /* itemSize */ CreateRectOval, /* createProc */ configSpecs, /* configSpecs */ ConfigureRectOval, /* configureProc */ RectOvalCoords, /* coordProc */ DeleteRectOval, /* deleteProc */ DisplayRectOval, /* displayProc */ 0, /* alwaysRedraw */ OvalToPoint, /* pointProc */ OvalToArea, /* areaProc */ (Tk_ItemPostscriptProc *) NULL, /* postscriptProc */ ScaleRectOval, /* scaleProc */ TranslateRectOval, /* translateProc */ (Tk_ItemIndexProc *) NULL, /* indexProc */ (Tk_ItemCursorProc *) NULL, /* cursorProc */ (Tk_ItemSelectionProc *) NULL, /* selectionProc */ (Tk_ItemInsertProc *) NULL, /* insertProc */ (Tk_ItemDCharsProc *) NULL, /* dTextProc */ (Tk_ItemType *) NULL /* nextPtr */ }; /* *-------------------------------------------------------------- * * CreateRectOval -- * * This procedure is invoked to create a new rectangle * or oval item in a canvas. * * Results: * A standard Tcl return value. If an error occurred in * creating the item, then an error message is left in * canvasPtr->interp->result; in this case itemPtr is * left uninitialized, so it can be safely freed by the * caller. * * Side effects: * A new rectangle or oval item is created. * *-------------------------------------------------------------- */ static int CreateRectOval(canvasPtr, itemPtr, argc, argv) register Tk_Canvas *canvasPtr; /* Canvas to hold new item. */ Tk_Item *itemPtr; /* Record to hold new item; header * has been initialized by caller. */ int argc; /* Number of arguments in argv. */ char **argv; /* Arguments describing rectangle. */ { register RectOvalItem *rectOvalPtr = (RectOvalItem *) itemPtr; if (argc < 4) { Tcl_AppendResult(canvasPtr->interp, "wrong # args: should be \"", Tk_PathName(canvasPtr->tkwin), "\" create ", itemPtr->typePtr->name, " x1 y1 x2 y2 ?options?", (char *) NULL); return TCL_ERROR; } /* * Carry out initialization that is needed in order to clean * up after errors during the the remainder of this procedure. */ rectOvalPtr->width = 1; rectOvalPtr->outlineColor = NULL; rectOvalPtr->fillColor = NULL; rectOvalPtr->fillStipple = None; rectOvalPtr->outlineGC = None; rectOvalPtr->fillGC = None; /* * Process the arguments to fill in the item record. */ if ((TkGetCanvasCoord(canvasPtr, argv[0], &rectOvalPtr->bbox[0]) != TCL_OK) || (TkGetCanvasCoord(canvasPtr, argv[1], &rectOvalPtr->bbox[1]) != TCL_OK) || (TkGetCanvasCoord(canvasPtr, argv[2], &rectOvalPtr->bbox[2]) != TCL_OK) || (TkGetCanvasCoord(canvasPtr, argv[3], &rectOvalPtr->bbox[3]) != TCL_OK)) { return TCL_ERROR; } if (ConfigureRectOval(canvasPtr, itemPtr, argc-4, argv+4, 0) != TCL_OK) { DeleteRectOval(itemPtr); return TCL_ERROR; } return TCL_OK; } /* *-------------------------------------------------------------- * * RectOvalCoords -- * * This procedure is invoked to process the "coords" widget * command on rectangles and ovals. See the user documentation * for details on what it does. * * Results: * Returns TCL_OK or TCL_ERROR, and sets canvasPtr->interp->result. * * Side effects: * The coordinates for the given item may be changed. * *-------------------------------------------------------------- */ static int RectOvalCoords(canvasPtr, itemPtr, argc, argv) register Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item whose coordinates are to be * read or modified. */ int argc; /* Number of coordinates supplied in * argv. */ char **argv; /* Array of coordinates: x1, y1, * x2, y2, ... */ { register RectOvalItem *rectOvalPtr = (RectOvalItem *) itemPtr; char buffer[500]; if (argc == 0) { sprintf(buffer, "%g %g %g %g", rectOvalPtr->bbox[0], rectOvalPtr->bbox[1], rectOvalPtr->bbox[2], rectOvalPtr->bbox[3]); Tcl_SetResult(canvasPtr->interp, buffer, TCL_VOLATILE); } else if (argc == 4) { if ((TkGetCanvasCoord(canvasPtr, argv[0], &rectOvalPtr->bbox[0]) != TCL_OK) || (TkGetCanvasCoord(canvasPtr, argv[1], &rectOvalPtr->bbox[1]) != TCL_OK) || (TkGetCanvasCoord(canvasPtr, argv[2], &rectOvalPtr->bbox[2]) != TCL_OK) || (TkGetCanvasCoord(canvasPtr, argv[3], &rectOvalPtr->bbox[3]) != TCL_OK)) { return TCL_ERROR; } ComputeRectOvalBbox(canvasPtr, rectOvalPtr); } else { sprintf(canvasPtr->interp->result, "wrong # coordinates: expected 0 or 4, got %d", argc); return TCL_ERROR; } return TCL_OK; } /* *-------------------------------------------------------------- * * ConfigureRectOval -- * * This procedure is invoked to configure various aspects * of a rectangle or oval item, such as its border and * background colors. * * Results: * A standard Tcl result code. If an error occurs, then * an error message is left in canvasPtr->interp->result. * * Side effects: * Configuration information, such as colors and stipple * patterns, may be set for itemPtr. * *-------------------------------------------------------------- */ static int ConfigureRectOval(canvasPtr, itemPtr, argc, argv, flags) Tk_Canvas *canvasPtr; /* Canvas containing itemPtr. */ Tk_Item *itemPtr; /* Rectangle item to reconfigure. */ int argc; /* Number of elements in argv. */ char **argv; /* Arguments describing things to configure. */ int flags; /* Flags to pass to Tk_ConfigureWidget. */ { register RectOvalItem *rectOvalPtr = (RectOvalItem *) itemPtr; XGCValues gcValues; GC newGC; unsigned long mask; if (Tk_ConfigureWidget(canvasPtr->interp, canvasPtr->tkwin, configSpecs, argc, argv, (char *) rectOvalPtr, flags) != TCL_OK) { return TCL_ERROR; } /* * A few of the options require additional processing, such as * graphics contexts. */ if (rectOvalPtr->outlineColor == NULL) { newGC = None; } else { gcValues.foreground = rectOvalPtr->outlineColor->pixel; gcValues.cap_style = CapProjecting; if (rectOvalPtr->width < 0) { rectOvalPtr->width = 1; } gcValues.line_width = rectOvalPtr->width; mask = GCForeground|GCCapStyle|GCLineWidth; newGC = Tk_GetGC(canvasPtr->tkwin, mask, &gcValues); } if (rectOvalPtr->outlineGC != None) { Tk_FreeGC(rectOvalPtr->outlineGC); } rectOvalPtr->outlineGC = newGC; if (rectOvalPtr->fillColor == NULL) { newGC = None; } else { gcValues.foreground = rectOvalPtr->fillColor->pixel; if (rectOvalPtr->fillStipple != None) { gcValues.stipple = rectOvalPtr->fillStipple; gcValues.fill_style = FillStippled; mask = GCForeground|GCStipple|GCFillStyle; } else { mask = GCForeground; } newGC = Tk_GetGC(canvasPtr->tkwin, mask, &gcValues); } if (rectOvalPtr->fillGC != None) { Tk_FreeGC(rectOvalPtr->fillGC); } rectOvalPtr->fillGC = newGC; ComputeRectOvalBbox(canvasPtr, rectOvalPtr); return TCL_OK; } /* *-------------------------------------------------------------- * * DeleteRectOval -- * * This procedure is called to clean up the data structure * associated with a rectangle or oval item. * * Results: * None. * * Side effects: * Resources associated with itemPtr are released. * *-------------------------------------------------------------- */ static void DeleteRectOval(itemPtr) Tk_Item *itemPtr; /* Item that is being deleted. */ { register RectOvalItem *rectOvalPtr = (RectOvalItem *) itemPtr; if (rectOvalPtr->outlineColor != NULL) { Tk_FreeColor(rectOvalPtr->outlineColor); } if (rectOvalPtr->fillColor != NULL) { Tk_FreeColor(rectOvalPtr->fillColor); } if (rectOvalPtr->fillStipple != None) { Tk_FreeBitmap(rectOvalPtr->fillStipple); } if (rectOvalPtr->outlineGC != None) { Tk_FreeGC(rectOvalPtr->outlineGC); } if (rectOvalPtr->fillGC != None) { Tk_FreeGC(rectOvalPtr->fillGC); } } /* *-------------------------------------------------------------- * * ComputeRectOvalBbox -- * * This procedure is invoked to compute the bounding box of * all the pixels that may be drawn as part of a rectangle * or oval. * * Results: * None. * * Side effects: * The fields x1, y1, x2, and y2 are updated in the header * for itemPtr. * *-------------------------------------------------------------- */ /* ARGSUSED */ static void ComputeRectOvalBbox(canvasPtr, rectOvalPtr) Tk_Canvas *canvasPtr; /* Canvas that contains item. */ register RectOvalItem *rectOvalPtr; /* Item whose bbox is to be * recomputed. */ { int bloat; /* * Make sure that the first coordinates are the lowest ones. */ if (rectOvalPtr->bbox[1] > rectOvalPtr->bbox[3]) { double tmp; tmp = rectOvalPtr->bbox[3]; rectOvalPtr->bbox[3] = rectOvalPtr->bbox[1]; rectOvalPtr->bbox[1] = tmp; } if (rectOvalPtr->bbox[0] > rectOvalPtr->bbox[2]) { double tmp; tmp = rectOvalPtr->bbox[2]; rectOvalPtr->bbox[2] = rectOvalPtr->bbox[0]; rectOvalPtr->bbox[0] = tmp; } bloat = (rectOvalPtr->width+1)/2 + 1; rectOvalPtr->header.x1 = rectOvalPtr->bbox[0] - bloat; rectOvalPtr->header.y1 = rectOvalPtr->bbox[1] - bloat; rectOvalPtr->header.x2 = rectOvalPtr->bbox[2] + bloat; rectOvalPtr->header.y2 = rectOvalPtr->bbox[3] + bloat; } /* *-------------------------------------------------------------- * * DisplayRectOval -- * * This procedure is invoked to draw a rectangle or oval * item in a given drawable. * * Results: * None. * * Side effects: * ItemPtr is drawn in drawable using the transformation * information in canvasPtr. * *-------------------------------------------------------------- */ static void DisplayRectOval(canvasPtr, itemPtr, drawable) register Tk_Canvas *canvasPtr; /* Canvas that contains item. */ Tk_Item *itemPtr; /* Item to be displayed. */ Drawable drawable; /* Pixmap or window in which to draw * item. */ { register RectOvalItem *rectOvalPtr = (RectOvalItem *) itemPtr; Display *display = Tk_Display(canvasPtr->tkwin); int x1, y1, x2, y2; /* * Compute the screen coordinates of the bounding box for the item. * Make sure that the bbox is at least one pixel large, since some * X servers will die if it isn't. */ x1 = SCREEN_X(canvasPtr, rectOvalPtr->bbox[0]); y1 = SCREEN_Y(canvasPtr, rectOvalPtr->bbox[1]); x2 = SCREEN_X(canvasPtr, rectOvalPtr->bbox[2]); y2 = SCREEN_Y(canvasPtr, rectOvalPtr->bbox[3]); if (x2 <= x1) { x2 = x1+1; } if (y2 <= y1) { y2 = y1+1; } /* * Display filled box first (if wanted), then outline. */ if (rectOvalPtr->fillGC != None) { if (rectOvalPtr->header.typePtr == &TkRectangleType) { XFillRectangle(display, drawable, rectOvalPtr->fillGC, x1, y1, (unsigned int) (x2-x1), (unsigned int) (y2-y1)); } else { XFillArc(display, drawable, rectOvalPtr->fillGC, x1, y1, (x2-x1), (y2-y1), 0, 360*64); } } if (rectOvalPtr->outlineGC != None) { if (rectOvalPtr->header.typePtr == &TkRectangleType) { XDrawRectangle(display, drawable, rectOvalPtr->outlineGC, x1, y1, (x2-x1-1), (y2-y1-1)); } else { XDrawArc(display, drawable, rectOvalPtr->outlineGC, x1, y1, (x2-x1-1), (y2-y1-1), 0, 360*64); } } } /* *-------------------------------------------------------------- * * RectToPoint -- * * Computes the distance from a given point to a given * rectangle, in canvas units. * * Results: * The return value is 0 if the point whose x and y coordinates * are coordPtr[0] and coordPtr[1] is inside the rectangle. If the * point isn't inside the rectangle then the return value is the * distance from the point to the rectangle. If itemPtr is filled, * then anywhere in the interior is considered "inside"; if * itemPtr isn't filled, then "inside" means only the area * occupied by the outline. * * Side effects: * None. * *-------------------------------------------------------------- */ /* ARGSUSED */ static double RectToPoint(canvasPtr, itemPtr, pointPtr) Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item to check against point. */ double *pointPtr; /* Pointer to x and y coordinates. */ { register RectOvalItem *rectPtr = (RectOvalItem *) itemPtr; double xDiff, yDiff, x1, y1, x2, y2, inc, tmp; /* * Generate a new larger rectangle that includes the border * width, if there is one. */ x1 = rectPtr->bbox[0]; y1 = rectPtr->bbox[1]; x2 = rectPtr->bbox[2]; y2 = rectPtr->bbox[3]; if (rectPtr->outlineGC != None) { inc = rectPtr->width/2.0; x1 -= inc; y1 -= inc; x2 += inc; y2 += inc; } /* * If the point is inside the rectangle, handle specially: * distance is 0 if rectangle is filled, otherwise compute * distance to nearest edge of rectangle and subtract width * of edge. */ if ((pointPtr[0] >= x1) && (pointPtr[0] < x2) && (pointPtr[1] >= y1) && (pointPtr[1] < y2)) { if ((rectPtr->fillGC != None) || (rectPtr->outlineGC == None)) { return 0.0; } xDiff = pointPtr[0] - x1; tmp = x2 - pointPtr[0]; if (tmp < xDiff) { xDiff = tmp; } yDiff = pointPtr[1] - y1; tmp = y2 - pointPtr[1]; if (tmp < yDiff) { yDiff = tmp; } if (yDiff < xDiff) { xDiff = yDiff; } xDiff -= rectPtr->width; if (xDiff < 0.0) { return 0.0; } return xDiff; } /* * Point is outside rectangle. */ if (pointPtr[0] < x1) { xDiff = x1 - pointPtr[0]; } else if (pointPtr[0] > x2) { xDiff = pointPtr[0] - x2; } else { xDiff = 0; } if (pointPtr[1] < y1) { yDiff = y1 - pointPtr[1]; } else if (pointPtr[1] > y2) { yDiff = pointPtr[1] - y2; } else { yDiff = 0; } return hypot(xDiff, yDiff); } /* *-------------------------------------------------------------- * * OvalToPoint -- * * Computes the distance from a given point to a given * oval, in canvas units. * * Results: * The return value is 0 if the point whose x and y coordinates * are coordPtr[0] and coordPtr[1] is inside the oval. If the * point isn't inside the oval then the return value is the * distance from the point to the oval. If itemPtr is filled, * then anywhere in the interior is considered "inside"; if * itemPtr isn't filled, then "inside" means only the area * occupied by the outline. * * Side effects: * None. * *-------------------------------------------------------------- */ /* ARGSUSED */ static double OvalToPoint(canvasPtr, itemPtr, pointPtr) Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item to check against point. */ double *pointPtr; /* Pointer to x and y coordinates. */ { register RectOvalItem *ovalPtr = (RectOvalItem *) itemPtr; double width; int filled; width = ovalPtr->width; filled = ovalPtr->fillGC != None; if (ovalPtr->outlineGC == None) { width = 0.0; filled = 1; } return TkOvalToPoint(ovalPtr->bbox, width, filled, pointPtr); } /* *-------------------------------------------------------------- * * RectToArea -- * * This procedure is called to determine whether an item * lies entirely inside, entirely outside, or overlapping * a given rectangle. * * Results: * -1 is returned if the item is entirely outside the area * given by rectPtr, 0 if it overlaps, and 1 if it is entirely * inside the given area. * * Side effects: * None. * *-------------------------------------------------------------- */ /* ARGSUSED */ static int RectToArea(canvasPtr, itemPtr, areaPtr) Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item to check against rectangle. */ double *areaPtr; /* Pointer to array of four coordinates * (x1, y1, x2, y2) describing rectangular * area. */ { register RectOvalItem *rectPtr = (RectOvalItem *) itemPtr; double halfWidth; halfWidth = rectPtr->width/2.0; if (rectPtr->outlineGC == None) { halfWidth = 0.0; } if ((areaPtr[2] <= (rectPtr->bbox[0] - halfWidth)) || (areaPtr[0] >= (rectPtr->bbox[2] + halfWidth)) || (areaPtr[3] <= (rectPtr->bbox[1] - halfWidth)) || (areaPtr[1] >= (rectPtr->bbox[3] + halfWidth))) { return -1; } if ((rectPtr->fillGC == None) && (rectPtr->outlineGC != None) && (areaPtr[0] >= (rectPtr->bbox[0] + halfWidth)) && (areaPtr[1] >= (rectPtr->bbox[1] + halfWidth)) && (areaPtr[2] <= (rectPtr->bbox[2] - halfWidth)) && (areaPtr[3] <= (rectPtr->bbox[3] - halfWidth))) { return -1; } if ((areaPtr[0] <= (rectPtr->bbox[0] - halfWidth)) && (areaPtr[1] <= (rectPtr->bbox[1] - halfWidth)) && (areaPtr[2] >= (rectPtr->bbox[2] + halfWidth)) && (areaPtr[3] >= (rectPtr->bbox[3] + halfWidth))) { return 1; } return 0; } /* *-------------------------------------------------------------- * * OvalToArea -- * * This procedure is called to determine whether an item * lies entirely inside, entirely outside, or overlapping * a given rectangular area. * * Results: * -1 is returned if the item is entirely outside the area * given by rectPtr, 0 if it overlaps, and 1 if it is entirely * inside the given area. * * Side effects: * None. * *-------------------------------------------------------------- */ /* ARGSUSED */ static int OvalToArea(canvasPtr, itemPtr, areaPtr) Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item to check against oval. */ double *areaPtr; /* Pointer to array of four coordinates * (x1, y1, x2, y2) describing rectangular * area. */ { register RectOvalItem *ovalPtr = (RectOvalItem *) itemPtr; double oval[4], halfWidth; int result; /* * Expand the oval to include the width of the outline, if any. */ halfWidth = ovalPtr->width/2.0; if (ovalPtr->outlineGC == None) { halfWidth = 0.0; } oval[0] = ovalPtr->bbox[0] - halfWidth; oval[1] = ovalPtr->bbox[1] - halfWidth; oval[2] = ovalPtr->bbox[2] + halfWidth; oval[3] = ovalPtr->bbox[3] + halfWidth; result = TkOvalToArea(oval, areaPtr); /* * If the rectangle appears to overlap the oval and the oval * isn't filled, do one more check to see if perhaps all four * of the rectangle's corners are totally inside the oval's * unfilled center, in which case we should return "outside". */ if ((result == 0) && (ovalPtr->outlineGC != NULL) && (ovalPtr->fillGC == NULL)) { double centerX, centerY, width, height; double xDelta1, yDelta1, xDelta2, yDelta2; centerX = (ovalPtr->bbox[0] + ovalPtr->bbox[2])/2.0; centerY = (ovalPtr->bbox[1] + ovalPtr->bbox[3])/2.0; width = (ovalPtr->bbox[2] - ovalPtr->bbox[0])/2.0 - halfWidth; height = (ovalPtr->bbox[3] - ovalPtr->bbox[1])/2.0 - halfWidth; xDelta1 = (areaPtr[0] - centerX)/width; xDelta1 *= xDelta1; yDelta1 = (areaPtr[1] - centerY)/height; yDelta1 *= yDelta1; xDelta2 = (areaPtr[2] - centerX)/width; xDelta2 *= xDelta2; yDelta2 = (areaPtr[3] - centerY)/height; yDelta2 *= yDelta2; if (((xDelta1 + yDelta1) < 1.0) && ((xDelta1 + yDelta2) < 1.0) && ((xDelta2 + yDelta1) < 1.0) && ((xDelta2 + yDelta2) < 1.0)) { return -1; } } return result; } /* *-------------------------------------------------------------- * * ScaleRectOval -- * * This procedure is invoked to rescale a rectangle or oval * item. * * Results: * None. * * Side effects: * The rectangle or oval referred to by itemPtr is rescaled * so that the following transformation is applied to all * point coordinates: * x' = originX + scaleX*(x-originX) * y' = originY + scaleY*(y-originY) * *-------------------------------------------------------------- */ static void ScaleRectOval(canvasPtr, itemPtr, originX, originY, scaleX, scaleY) Tk_Canvas *canvasPtr; /* Canvas containing rectangle. */ Tk_Item *itemPtr; /* Rectangle to be scaled. */ double originX, originY; /* Origin about which to scale rect. */ double scaleX; /* Amount to scale in X direction. */ double scaleY; /* Amount to scale in Y direction. */ { register RectOvalItem *rectOvalPtr = (RectOvalItem *) itemPtr; rectOvalPtr->bbox[0] = originX + scaleX*(rectOvalPtr->bbox[0] - originX); rectOvalPtr->bbox[1] = originY + scaleY*(rectOvalPtr->bbox[1] - originY); rectOvalPtr->bbox[2] = originX + scaleX*(rectOvalPtr->bbox[2] - originX); rectOvalPtr->bbox[3] = originY + scaleY*(rectOvalPtr->bbox[3] - originY); ComputeRectOvalBbox(canvasPtr, rectOvalPtr); } /* *-------------------------------------------------------------- * * TranslateRectOval -- * * This procedure is called to move a rectangle or oval by a * given amount. * * Results: * None. * * Side effects: * The position of the rectangle or oval is offset by * (xDelta, yDelta), and the bounding box is updated in the * generic part of the item structure. * *-------------------------------------------------------------- */ static void TranslateRectOval(canvasPtr, itemPtr, deltaX, deltaY) Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item that is being moved. */ double deltaX, deltaY; /* Amount by which item is to be * moved. */ { register RectOvalItem *rectOvalPtr = (RectOvalItem *) itemPtr; rectOvalPtr->bbox[0] += deltaX; rectOvalPtr->bbox[1] += deltaY; rectOvalPtr->bbox[2] += deltaX; rectOvalPtr->bbox[3] += deltaY; ComputeRectOvalBbox(canvasPtr, rectOvalPtr); } micropolis-activity/src/tk/makefile0000664000076400007640000000666610724145723017756 0ustar simcitysimcity# # This is a simplified Makefile for use in Tk distributions. Before using # it to compile Tk, you may wish to reset some of the following variables: # # TCL_DIR - Name of directory holding tcl.h and tcl.a. # XLIB - Name of archive containing Xlib binaries. # # You may also wish to add some of the following switches to the CFLAGS # variable: # # -DX11R3 Causes code that depends on R4 facilities not to # be compiled. I haven't tested Tk with R3 in quite # a while, so this switch may not be enough to # generate a working R3 version of Tk. Furthermore, # use of this switch will disable some of the facilities # of Tk related to window managers. # -DNO_PROTOTYPE Turns off ANSI-style procedure prototypes and the # corresponding compile-time checks. Without this # defininition, prototypes will be turned on if the # compiler supports ANSI C by defining __STDC__. # -DTK_LIBRARY=\"dir\" Arranges for dir, which must be the name of a # directory, to be the library directory for Tk scripts. # This value gets put into the variable $tk_library # when a new application is created. The library # defaults to /usr/local/lib/tk, so you don't need the # switch unless your library is in a non-standard place. # CC = gcc CFLAGS = -I. -I$(XINCLUDE) -I$(TCL_DIR) -O3 -DTK_VERSION=\"2.3\" -DUSE_XPM3 -DIS_LINUX #CFLAGS = -I. -I$(XINCLUDE) -I$(TCL_DIR) -g -DTK_VERSION=\"2.3\" -DUSE_XPM3 -DIS_LINUX TCL_DIR = ../tcl XINCLUDE = /usr/include/X11 XLIB = -L/usr/X11R6/lib -lX11 -lXpm LIBS = libtk.a $(TCL_DIR)/libtcl.a LINKS = $(LIBS) WIDGOBJS = \ tkbutton.o \ tkentry.o \ tkframe.o \ tklist.o \ tkmenu.o \ tkmnbut.o \ tkmsg.o \ tkscale.o \ tkscrbar.o CANVOBJS = \ tkcanvas.o \ tkcvarc.o \ tkcvbmap.o \ tkcvline.o \ tkcvpoly.o \ tkcvtext.o \ tkcvwind.o \ tkrectov.o \ tktrig.o TEXTOBJS = \ tktext.o \ tktxbtre.o \ tktxdisp.o \ tktxidx.o \ tktxtag.o OBJS = \ tk3d.o \ tkargv.o \ tkatom.o \ tkbind.o \ tkbitmap.o \ tkcmds.o \ tkcolor.o \ tkconfig.o \ tkcursor.o \ tkerror.o \ tkevent.o \ tkfont.o \ tkget.o \ tkgc.o \ tkgeo.o \ tkgrab.o \ tkoption.o \ tkpack.o \ tkpixmap.o \ tkplace.o \ tkpresrv.o \ tkselect.o \ tksend.o \ tkshare.o \ tkwindow.o \ tkwm.o \ tkrawtcp.o \ $(WIDGOBJS) \ $(CANVOBJS) \ $(TEXTOBJS) WIDGSRCS = \ tkbutton.c \ tkentry.c \ tkframe.c \ tklist.c \ tkmenu.c \ tkmnbut.c \ tkmessage.c \ tkscale.c \ tkscrbar.c \ tktext.c \ tktxbtre.c \ tktxdisp.c \ tktextindex.c CANVSRCS = \ tkcanvas.c \ tkcvarc.c \ tkcvbmap.c \ tkcvline.c \ tkcvpoly.c \ tkcvtext.c \ tkcvwind.c \ tkrectov.c \ tktrig.c TEXTSRCS = \ tktext.c \ tktxbtre.c \ tktxdisp.c \ tktxidx.c \ tktxtag.c SRCS = \ tk3d.c \ tkargv.c \ tkatom.c \ tkbind.c \ tkbitmap.c \ tkcmds.c \ tkcolor.c \ tkconfig.c \ tkcursor.c \ tkerror.c \ tkevent.c \ tkfont.c \ tkget.c \ tkgc.c \ tkgeo.c \ tkgrab.c \ tkoption.c \ tkpack.c \ tkplace.c \ tkpresrv.c \ tkselect.c \ tksend.c \ tkshare.c \ tkwindow.c \ tkwm.c \ tkrawtcp.c \ $(widgsrcs) \ $(CANVSRCS) \ $(TEXTSRCS) all: wish wish: main.o $(LIBS) $(CC) $(CFLAGS) main.o $(LINKS) $(XLIB) -lm -o wish libtk.a: $(OBJS) rm -f libtk.a ar cr libtk.a $(OBJS) ranlib libtk.a $(TCL_DIR)/libtcl.a: cd $(TCL_DIR); make libtcl.a clean: touch junk~ rm -f $(OBJS) main.o libtk.a wish *~ $(OBJS): tk.h tkint.h tkconfig.h $(WIDGOBJS): default.h $(CANVOBJS): default.h tkcanvas.h main.o: tk.h tkint.h micropolis-activity/src/tk/makefile.sun0000664000076400007640000000654010724145723020551 0ustar simcitysimcity# # This is a simplified Makefile for use in Tk distributions. Before using # it to compile Tk, you may wish to reset some of the following variables: # # TCL_DIR - Name of directory holding tcl.h and tcl.a. # XLIB - Name of archive containing Xlib binaries. # # You may also wish to add some of the following switches to the CFLAGS # variable: # # -DX11R3 Causes code that depends on R4 facilities not to # be compiled. I haven't tested Tk with R3 in quite # a while, so this switch may not be enough to # generate a working R3 version of Tk. Furthermore, # use of this switch will disable some of the facilities # of Tk related to window managers. # -DNO_PROTOTYPE Turns off ANSI-style procedure prototypes and the # corresponding compile-time checks. Without this # defininition, prototypes will be turned on if the # compiler supports ANSI C by defining __STDC__. # -DTK_LIBRARY=\"dir\" Arranges for dir, which must be the name of a # directory, to be the library directory for Tk scripts. # This value gets put into the variable $tk_library # when a new application is created. The library # defaults to /usr/local/lib/tk, so you don't need the # switch unless your library is in a non-standard place. # CC = gcc #CFLAGS = -I/usr/openwin/include -I. -I$(TCL_DIR) -O2 -DTK_VERSION=\"2.3\" -DUSE_XPM3 -I$(XPM_DIR) CFLAGS = -I/usr/openwin/include -I. -I$(TCL_DIR) -O -DTK_VERSION=\"2.3\" -DUSE_XPM3 -I$(XPM_DIR) #CC = gcc #CFLAGS = -I. -I$(TCL_DIR) -g -DTK_VERSION=\"2.3\" -DUSE_XPM3 -I$(XPM_DIR) TCL_DIR = ../tcl XPM_DIR = ../xpm XLIB = -lX11 #LIBS = libtk.a $(TCL_DIR)/libtcl.a $(XPM_DIR)/libxpm.a LIBS = libtk.a $(TCL_DIR)/libtcl.a $(XPM_DIR)/libxpm.a #LINKS = $(LIBS) -lsocket -lnsl LINKS = $(LIBS) WIDGOBJS = tkbutton.o tkentry.o tkframe.o tklist.o \ tkmenu.o tkmnbut.o tkmsg.o tkscale.o \ tkscrbar.o CANVOBJS = tkcanvas.o tkcvarc.o tkcvbmap.o tkcvline.o \ tkcvpoly.o tkcvtext.o tkcvwind.o tkrectov.o \ tktrig.o TEXTOBJS = tktext.o tktxbtre.o tktxdisp.o tktxidx.o tktxtag.o OBJS = tk3d.o tkargv.o tkatom.o tkbind.o tkbitmap.o \ tkcmds.o tkcolor.o tkconfig.o tkcursor.o tkerror.o \ tkevent.o tkfont.o tkget.o tkgc.o tkgeo.o tkgrab.o \ tkoption.o tkpack.o tkpixmap.o tkplace.o tkpresrv.o \ tkselect.o tksend.o tkshare.o tkwindow.o tkwm.o tkrawtcp.o \ $(WIDGOBJS) $(CANVOBJS) $(TEXTOBJS) WIDGSRCS = tkbutton.c tkentry.c tkframe.c tklist.c \ tkmenu.c tkmnbut.c tkmessage.c tkscale.c \ tkscrbar.c tktext.c tktxbtre.c tktxdisp.c \ tktextindex.c CANVSRCS = tkcanvas.c tkcvarc.c tkcvbmap.c tkcvline.c \ tkcvpoly.c tkcvtext.c tkcvwind.c tkrectov.c \ tktrig.c TEXTSRCS = tktext.c tktxbtre.c tktxdisp.c tktxidx.c tktxtag.c SRCS = tk3d.c tkargv.c tkatom.c tkbind.c tkbitmap.c \ tkcmds.c tkcolor.c tkconfig.c tkcursor.c tkerror.c \ tkevent.c tkfont.c tkget.c tkgc.c tkgeo.c tkgrab.c \ tkoption.c tkpack.c tkplace.c tkpresrv.c tkselect.c \ tksend.c tkshare.c tkwindow.c tkwm.c tkrawtcp.c $(widgsrcs) \ $(CANVSRCS) $(TEXTSRCS) all: wish wish: main.o $(LIBS) $(CC) $(CFLAGS) main.o $(LINKS) $(XLIB) -lm -o wish libtk.a: $(OBJS) rm -f libtk.a ar cr libtk.a $(OBJS) ranlib libtk.a $(TCL_DIR)/libtcl.a: cd $(TCL_DIR); make libtcl.a clean: touch junk~ rm -f $(OBJS) main.o libtk.a wish *~ $(OBJS): tk.h tkint.h tkconfig.h $(WIDGOBJS): default.h $(CANVOBJS): default.h tkcanvas.h main.o: tk.h tkint.h micropolis-activity/src/tk/main.c0000664000076400007640000002041010724145723017325 0ustar simcitysimcity/* * main.c -- * * A simple program to test the toolkit facilities. * * Copyright 1990-1992 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/main.c,v 1.68 92/05/07 08:52:02 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tkconfig.h" #include "tkint.h" /* * Declarations for library procedures: */ extern int isatty(); /* * Command used to initialize wish: */ char initCmd[] = "source $tk_library/wish.tcl"; Tk_Window w; /* NULL means window has been deleted. */ Tk_TimerToken timeToken = 0; int idleHandler = 0; Tcl_Interp *interp; int x, y; Tcl_CmdBuf buffer; int tty; extern int Tk_SquareCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); /* * Information for testing out command-line options: */ int synchronize = 0; char *fileName = NULL; char *name = NULL; char *display = NULL; char *geometry = NULL; Tk_ArgvInfo argTable[] = { {"-file", TK_ARGV_STRING, (char *) NULL, (char *) &fileName, "File from which to read commands"}, {"-geometry", TK_ARGV_STRING, (char *) NULL, (char *) &geometry, "Initial geometry for window"}, {"-display", TK_ARGV_STRING, (char *) NULL, (char *) &display, "Display to use"}, {"-name", TK_ARGV_STRING, (char *) NULL, (char *) &name, "Name to use for application"}, {"-sync", TK_ARGV_CONSTANT, (char *) 1, (char *) &synchronize, "Use synchronous mode for display server"}, {(char *) NULL, TK_ARGV_END, (char *) NULL, (char *) NULL, (char *) NULL} }; /* ARGSUSED */ void StdinProc(clientData, mask) ClientData clientData; /* Not used. */ int mask; { char line[200]; static int gotPartial = 0; char *cmd; int result; if (mask & TK_READABLE) { if (fgets(line, 200, stdin) == NULL) { if (!gotPartial) { if (tty) { Tcl_Eval(interp, "destroy .", 0, (char **) NULL); exit(0); } else { Tk_DeleteFileHandler(0); } return; } else { line[0] = 0; } } cmd = Tcl_AssembleCmd(buffer, line); if (cmd == NULL) { gotPartial = 1; return; } gotPartial = 0; result = Tcl_RecordAndEval(interp, cmd, 0); if (*interp->result != 0) { if ((result != TCL_OK) || (tty)) { printf("%s\n", interp->result); } } if (tty) { printf("wish: "); fflush(stdout); } } } /* ARGSUSED */ static void StructureProc(clientData, eventPtr) ClientData clientData; /* Information about window. */ XEvent *eventPtr; /* Information about event. */ { if (eventPtr->type == DestroyNotify) { w = NULL; } } /* * Procedure to map initial window. This is invoked as a do-when-idle * handler. Wait for all other when-idle handlers to be processed * before mapping the window, so that the window's correct geometry * has been determined. */ /* ARGSUSED */ static void DelayedMap(clientData) ClientData clientData; /* Not used. */ { while (Tk_DoOneEvent(TK_IDLE_EVENTS) != 0) { /* Empty loop body. */ } if (w == NULL) { return; } Tk_MapWindow(w); } /* ARGSUSED */ int DotCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int x, y; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " x y\"", (char *) NULL); return TCL_ERROR; } x = strtol(argv[1], (char **) NULL, 0); y = strtol(argv[2], (char **) NULL, 0); Tk_MakeWindowExist(w); XDrawPoint(Tk_Display(w), Tk_WindowId(w), DefaultGCOfScreen(Tk_Screen(w)), x, y); return TCL_OK; } /* ARGSUSED */ int MovetoCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " x y\"", (char *) NULL); return TCL_ERROR; } x = strtol(argv[1], (char **) NULL, 0); y = strtol(argv[2], (char **) NULL, 0); return TCL_OK; } /* ARGSUSED */ int LinetoCmd(dummy, interp, argc, argv) ClientData dummy; /* Not used. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { int newX, newY; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " x y\"", (char *) NULL); return TCL_ERROR; } newX = strtol(argv[1], (char **) NULL, 0); newY = strtol(argv[2], (char **) NULL, 0); Tk_MakeWindowExist(w); XDrawLine(Tk_Display(w), Tk_WindowId(w), DefaultGCOfScreen(Tk_Screen(w)), x, y, newX, newY); x = newX; y = newY; return TCL_OK; } int main(argc, argv) int argc; char **argv; { char *args, *p, *msg; char buf[20]; int result; Tk_3DBorder border; { extern char *TCL_Library, *TK_Library; extern int TK_CreateColormap; char *tcllib = getenv("TCL_LIBRARY"); char *tklib = getenv("TK_LIBRARY"); char *create = getenv("CREATE_COLORMAP"); if (tklib != NULL) TK_Library = tklib; if (tcllib != NULL) TCL_Library = tcllib; if (create != NULL) TK_CreateColormap = 1; } interp = Tcl_CreateInterp(); #ifdef TCL_MEM_DEBUG Tcl_InitMemory(interp); #endif if (Tk_ParseArgv(interp, (Tk_Window) NULL, &argc, argv, argTable, 0) != TCL_OK) { fprintf(stderr, "%s\n", interp->result); exit(1); } if (name == NULL) { if (fileName != NULL) { p = fileName; } else { p = argv[0]; } name = strrchr(p, '/'); if (name != NULL) { name++; } else { name = p; } } w = Tk_CreateMainWindow(interp, display, name); if (w == NULL) { fprintf(stderr, "%s\n", interp->result); exit(1); } Tk_SetClass(w, "Tk"); Tk_CreateEventHandler(w, StructureNotifyMask, StructureProc, (ClientData) NULL); Tk_DoWhenIdle(DelayedMap, (ClientData) NULL); tty = isatty(0); args = Tcl_Merge(argc-1, argv+1); Tcl_SetVar(interp, "argv", args, TCL_GLOBAL_ONLY); ckfree(args); sprintf(buf, "%d", argc-1); Tcl_SetVar(interp, "argc", buf, TCL_GLOBAL_ONLY); if (synchronize) { XSynchronize(Tk_Display(w), True); } Tk_GeometryRequest(w, 200, 200); border = Tk_Get3DBorder(interp, w, None, "#4eee94"); if (border == NULL) { Tcl_SetResult(interp, (char *) NULL, TCL_STATIC); Tk_SetWindowBackground(w, WhitePixelOfScreen(Tk_Screen(w))); } else { Tk_SetBackgroundFromBorder(w, border); } XSetForeground(Tk_Display(w), DefaultGCOfScreen(Tk_Screen(w)), BlackPixelOfScreen(Tk_Screen(w))); Tcl_CreateCommand(interp, "dot", DotCmd, (ClientData) w, (void (*)()) NULL); Tcl_CreateCommand(interp, "lineto", LinetoCmd, (ClientData) w, (void (*)()) NULL); Tcl_CreateCommand(interp, "moveto", MovetoCmd, (ClientData) w, (void (*)()) NULL); #ifdef SQUARE_DEMO Tcl_CreateCommand(interp, "square", Tk_SquareCmd, (ClientData) w, (void (*)()) NULL); #endif if (geometry != NULL) { Tcl_SetVar(interp, "geometry", geometry, TCL_GLOBAL_ONLY); } result = Tcl_Eval(interp, initCmd, 0, (char **) NULL); if (result != TCL_OK) { goto error; } if (fileName != NULL) { result = Tcl_VarEval(interp, "source ", fileName, (char *) NULL); if (result != TCL_OK) { goto error; } tty = 0; } else { tty = isatty(0); Tk_CreateFileHandler(0, TK_READABLE, StdinProc, (ClientData) 0); if (tty) { printf("wish: "); } } fflush(stdout); buffer = Tcl_CreateCmdBuf(); (void) Tcl_Eval(interp, "update", 0, (char **) NULL); Tk_MainLoop(); Tcl_DeleteInterp(interp); Tcl_DeleteCmdBuf(buffer); exit(0); error: msg = Tcl_GetVar(interp, "errorInfo", TCL_GLOBAL_ONLY); if (msg == NULL) { msg = interp->result; } fprintf(stderr, "%s\n", msg); Tcl_Eval(interp, "destroy .", 0, (char **) NULL); exit(1); } micropolis-activity/src/tk/tkcvpoly.c0000664000076400007640000005366410724145723020275 0ustar simcitysimcity/* * tkCanvPoly.c -- * * This file implements polygon items for canvas widgets. * * Copyright 1991-1992 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkCanvPoly.c,v 1.6 92/07/28 15:40:10 ouster Exp $ SPRITE (Berkeley)"; #endif #include #include #include "tkint.h" #include "tkcanvas.h" #include "tkconfig.h" /* * The structure below defines the record for each polygon item. */ typedef struct PolygonItem { Tk_Item header; /* Generic stuff that's the same for all * types. MUST BE FIRST IN STRUCTURE. */ int numPoints; /* Number of points in polygon (always >= 3). * Polygon is always closed. */ double *coordPtr; /* Pointer to malloc-ed array containing * x- and y-coords of all points in polygon. * X-coords are even-valued indices, y-coords * are corresponding odd-valued indices. */ XColor *fg; /* Foreground color for polygon. */ Pixmap fillStipple; /* Stipple bitmap for filling polygon. */ GC gc; /* Graphics context for filling polygon. */ int smooth; /* Non-zero means draw shape smoothed (i.e. * with Bezier splines). */ int splineSteps; /* Number of steps in each spline segment. */ } PolygonItem; /* * Information used for parsing configuration specs: */ static Tk_ConfigSpec configSpecs[] = { {TK_CONFIG_COLOR, "-fill", (char *) NULL, (char *) NULL, "black", Tk_Offset(PolygonItem, fg), TK_CONFIG_NULL_OK}, {TK_CONFIG_BOOLEAN, "-smooth", (char *) NULL, (char *) NULL, "no", Tk_Offset(PolygonItem, smooth), TK_CONFIG_DONT_SET_DEFAULT}, {TK_CONFIG_INT, "-splinesteps", (char *) NULL, (char *) NULL, "12", Tk_Offset(PolygonItem, splineSteps), TK_CONFIG_DONT_SET_DEFAULT}, {TK_CONFIG_BITMAP, "-stipple", (char *) NULL, (char *) NULL, (char *) NULL, Tk_Offset(PolygonItem, fillStipple), TK_CONFIG_NULL_OK}, {TK_CONFIG_CUSTOM, "-tags", (char *) NULL, (char *) NULL, (char *) NULL, 0, TK_CONFIG_NULL_OK, &tkCanvasTagsOption}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; /* * Prototypes for procedures defined in this file: */ static void ComputePolygonBbox _ANSI_ARGS_((Tk_Canvas *canvasPtr, PolygonItem *polyPtr)); static int ConfigurePolygon _ANSI_ARGS_(( Tk_Canvas *canvasPtr, Tk_Item *itemPtr, int argc, char **argv, int flags)); static int CreatePolygon _ANSI_ARGS_((Tk_Canvas *canvasPtr, struct Tk_Item *itemPtr, int argc, char **argv)); static void DeletePolygon _ANSI_ARGS_((Tk_Item *itemPtr)); static void DisplayPolygon _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, Drawable dst)); static int PolygonCoords _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, int argc, char **argv)); static int PolygonToArea _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double *rectPtr)); static double PolygonToPoint _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double *pointPtr)); static void ScalePolygon _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double originX, double originY, double scaleX, double scaleY)); static void TranslatePolygon _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double deltaX, double deltaY)); /* * The structures below defines the polygon item type by means * of procedures that can be invoked by generic item code. */ Tk_ItemType TkPolygonType = { "polygon", /* name */ sizeof(PolygonItem), /* itemSize */ CreatePolygon, /* createProc */ configSpecs, /* configSpecs */ ConfigurePolygon, /* configureProc */ PolygonCoords, /* coordProc */ DeletePolygon, /* deleteProc */ DisplayPolygon, /* displayProc */ 0, /* alwaysRedraw */ PolygonToPoint, /* pointProc */ PolygonToArea, /* areaProc */ (Tk_ItemPostscriptProc *) NULL, /* postscriptProc */ ScalePolygon, /* scaleProc */ TranslatePolygon, /* translateProc */ (Tk_ItemIndexProc *) NULL, /* indexProc */ (Tk_ItemCursorProc *) NULL, /* cursorProc */ (Tk_ItemSelectionProc *) NULL, /* selectionProc */ (Tk_ItemInsertProc *) NULL, /* insertProc */ (Tk_ItemDCharsProc *) NULL, /* dTextProc */ (Tk_ItemType *) NULL /* nextPtr */ }; /* * The definition below determines how large are static arrays * used to hold spline points (splines larger than this have to * have their arrays malloc-ed). */ #define MAX_STATIC_POINTS 200 /* *-------------------------------------------------------------- * * CreatePolygon -- * * This procedure is invoked to create a new polygon item in * a canvas. * * Results: * A standard Tcl return value. If an error occurred in * creating the item, then an error message is left in * canvasPtr->interp->result; in this case itemPtr is * left uninitialized, so it can be safely freed by the * caller. * * Side effects: * A new polygon item is created. * *-------------------------------------------------------------- */ static int CreatePolygon(canvasPtr, itemPtr, argc, argv) register Tk_Canvas *canvasPtr; /* Canvas to hold new item. */ Tk_Item *itemPtr; /* Record to hold new item; header * has been initialized by caller. */ int argc; /* Number of arguments in argv. */ char **argv; /* Arguments describing polygon. */ { register PolygonItem *polyPtr = (PolygonItem *) itemPtr; int i; if (argc < 6) { Tcl_AppendResult(canvasPtr->interp, "wrong # args: should be \"", Tk_PathName(canvasPtr->tkwin), "\" create x1 y1 x2 y2 x3 y3 ?x4 y4 ...? ?options?", (char *) NULL); return TCL_ERROR; } /* * Carry out initialization that is needed in order to clean * up after errors during the the remainder of this procedure. */ polyPtr->numPoints = 0; polyPtr->coordPtr = NULL; polyPtr->fg = None; polyPtr->fillStipple = None; polyPtr->gc = None; polyPtr->smooth = 0; polyPtr->splineSteps = 12; /* * Count the number of points and then parse them into a point * array. Leading arguments are assumed to be points if they * start with a digit or a minus sign followed by a digit. */ for (i = 4; i < (argc-1); i+=2) { if ((!isdigit(argv[i][0])) && ((argv[i][0] != '-') || (!isdigit(argv[i][1])))) { break; } } if (PolygonCoords(canvasPtr, itemPtr, i, argv) != TCL_OK) { goto error; } if (ConfigurePolygon(canvasPtr, itemPtr, argc-i, argv+i, 0) == TCL_OK) { return TCL_OK; } error: DeletePolygon(itemPtr); return TCL_ERROR; } /* *-------------------------------------------------------------- * * PolygonCoords -- * * This procedure is invoked to process the "coords" widget * command on polygons. See the user documentation for details * on what it does. * * Results: * Returns TCL_OK or TCL_ERROR, and sets canvasPtr->interp->result. * * Side effects: * The coordinates for the given item may be changed. * *-------------------------------------------------------------- */ static int PolygonCoords(canvasPtr, itemPtr, argc, argv) register Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item whose coordinates are to be * read or modified. */ int argc; /* Number of coordinates supplied in * argv. */ char **argv; /* Array of coordinates: x1, y1, * x2, y2, ... */ { register PolygonItem *polyPtr = (PolygonItem *) itemPtr; char buffer[300]; int i, numPoints; if (argc == 0) { for (i = 0; i < 2*polyPtr->numPoints; i++) { sprintf(buffer, "%g", polyPtr->coordPtr[i]); Tcl_AppendElement(canvasPtr->interp, buffer, 0); } } else if (argc < 6) { Tcl_AppendResult(canvasPtr->interp, "too few coordinates for polygon: must have at least 6", (char *) NULL); return TCL_ERROR; } else if (argc & 1) { Tcl_AppendResult(canvasPtr->interp, "odd number of coordinates specified for polygon", (char *) NULL); return TCL_ERROR; } else { numPoints = argc/2; if (polyPtr->numPoints != numPoints) { if (polyPtr->coordPtr != NULL) { ckfree((char *) polyPtr->coordPtr); } /* * One extra point gets allocated here, just in case we have * to add another point to close the polygon. */ polyPtr->coordPtr = (double *) ckalloc((unsigned) (sizeof(double) * (argc+2))); polyPtr->numPoints = numPoints; } for (i = argc-1; i >= 0; i--) { if (TkGetCanvasCoord(canvasPtr, argv[i], &polyPtr->coordPtr[i]) != TCL_OK) { return TCL_ERROR; } } /* * Close the polygon if it isn't already closed. */ if ((polyPtr->coordPtr[argc-2] != polyPtr->coordPtr[0]) || (polyPtr->coordPtr[argc-1] != polyPtr->coordPtr[1])) { polyPtr->numPoints++; polyPtr->coordPtr[argc] = polyPtr->coordPtr[0]; polyPtr->coordPtr[argc+1] = polyPtr->coordPtr[1]; } ComputePolygonBbox(canvasPtr, polyPtr); } return TCL_OK; } /* *-------------------------------------------------------------- * * ConfigurePolygon -- * * This procedure is invoked to configure various aspects * of a polygon item such as its background color. * * Results: * A standard Tcl result code. If an error occurs, then * an error message is left in canvasPtr->interp->result. * * Side effects: * Configuration information, such as colors and stipple * patterns, may be set for itemPtr. * *-------------------------------------------------------------- */ static int ConfigurePolygon(canvasPtr, itemPtr, argc, argv, flags) Tk_Canvas *canvasPtr; /* Canvas containing itemPtr. */ Tk_Item *itemPtr; /* Polygon item to reconfigure. */ int argc; /* Number of elements in argv. */ char **argv; /* Arguments describing things to configure. */ int flags; /* Flags to pass to Tk_ConfigureWidget. */ { register PolygonItem *polyPtr = (PolygonItem *) itemPtr; XGCValues gcValues; GC newGC; unsigned long mask; if (Tk_ConfigureWidget(canvasPtr->interp, canvasPtr->tkwin, configSpecs, argc, argv, (char *) polyPtr, flags) != TCL_OK) { return TCL_ERROR; } /* * A few of the options require additional processing, such as * graphics contexts. */ if (polyPtr->fg == NULL) { newGC = None; } else { gcValues.foreground = polyPtr->fg->pixel; mask = GCForeground; if (polyPtr->fillStipple != None) { gcValues.stipple = polyPtr->fillStipple; gcValues.fill_style = FillStippled; mask |= GCStipple|GCFillStyle; } newGC = Tk_GetGC(canvasPtr->tkwin, mask, &gcValues); } if (polyPtr->gc != None) { Tk_FreeGC(polyPtr->gc); } polyPtr->gc = newGC; /* * Keep spline parameters within reasonable limits. */ if (polyPtr->splineSteps < 1) { polyPtr->splineSteps = 1; } else if (polyPtr->splineSteps > 100) { polyPtr->splineSteps = 100; } ComputePolygonBbox(canvasPtr, polyPtr); return TCL_OK; } /* *-------------------------------------------------------------- * * DeletePolygon -- * * This procedure is called to clean up the data structure * associated with a polygon item. * * Results: * None. * * Side effects: * Resources associated with itemPtr are released. * *-------------------------------------------------------------- */ static void DeletePolygon(itemPtr) Tk_Item *itemPtr; /* Item that is being deleted. */ { register PolygonItem *polyPtr = (PolygonItem *) itemPtr; if (polyPtr->coordPtr != NULL) { ckfree((char *) polyPtr->coordPtr); } if (polyPtr->fg != NULL) { Tk_FreeColor(polyPtr->fg); } if (polyPtr->fillStipple != None) { Tk_FreeBitmap(polyPtr->fillStipple); } if (polyPtr->gc != None) { Tk_FreeGC(polyPtr->gc); } } /* *-------------------------------------------------------------- * * ComputePolygonBbox -- * * This procedure is invoked to compute the bounding box of * all the pixels that may be drawn as part of a polygon. * * Results: * None. * * Side effects: * The fields x1, y1, x2, and y2 are updated in the header * for itemPtr. * *-------------------------------------------------------------- */ static void ComputePolygonBbox(canvasPtr, polyPtr) register Tk_Canvas *canvasPtr; /* Canvas that contains item. */ PolygonItem *polyPtr; /* Item whose bbox is to be * recomputed. */ { register double *coordPtr; int i; coordPtr = polyPtr->coordPtr; polyPtr->header.x1 = polyPtr->header.x2 = *coordPtr; polyPtr->header.y1 = polyPtr->header.y2 = coordPtr[1]; for (i = 1, coordPtr = polyPtr->coordPtr+2; i < polyPtr->numPoints; i++, coordPtr += 2) { TkIncludePoint(canvasPtr, (Tk_Item *) polyPtr, coordPtr); } /* * Add one more pixel of fudge factor just to be safe (e.g. * X may round differently than we do). */ polyPtr->header.x1 -= 1; polyPtr->header.x2 += 1; polyPtr->header.y1 -= 1; polyPtr->header.y2 += 1; } /* *-------------------------------------------------------------- * * TkFillPolygon -- * * This procedure is invoked to convert a polygon to screen * coordinates and display it using a particular GC. * * Results: * None. * * Side effects: * ItemPtr is drawn in drawable using the transformation * information in canvasPtr. * *-------------------------------------------------------------- */ void TkFillPolygon(canvasPtr, coordPtr, numPoints, drawable, gc) register Tk_Canvas *canvasPtr; /* Canvas whose coordinate system * is to be used for drawing. */ double *coordPtr; /* Array of coordinates for polygon: * x1, y1, x2, y2, .... */ int numPoints; /* Twice this many coordinates are * present at *coordPtr. */ Drawable drawable; /* Pixmap or window in which to draw * polygon. */ GC gc; /* Graphics context for drawing. */ { XPoint staticPoints[MAX_STATIC_POINTS]; XPoint *pointPtr; register XPoint *pPtr; int i; /* * Build up an array of points in screen coordinates. Use a * static array unless the polygon has an enormous number of points; * in this case, dynamically allocate an array. */ if (numPoints <= MAX_STATIC_POINTS) { pointPtr = staticPoints; } else { pointPtr = (XPoint *) ckalloc((unsigned) (numPoints * sizeof(XPoint))); } for (i = 0, pPtr = pointPtr; i < numPoints; i += 1, coordPtr += 2, pPtr++) { pPtr->x = SCREEN_X(canvasPtr, coordPtr[0]); pPtr->y = SCREEN_Y(canvasPtr, coordPtr[1]); } /* * Display polygon, then free up polygon storage if it was dynamically * allocated. */ XFillPolygon(Tk_Display(canvasPtr->tkwin), drawable, gc, pointPtr, numPoints, Complex, CoordModeOrigin); if (pointPtr != staticPoints) { ckfree((char *) pointPtr); } } /* *-------------------------------------------------------------- * * DisplayPolygon -- * * This procedure is invoked to draw a polygon item in a given * drawable. * * Results: * None. * * Side effects: * ItemPtr is drawn in drawable using the transformation * information in canvasPtr. * *-------------------------------------------------------------- */ static void DisplayPolygon(canvasPtr, itemPtr, drawable) register Tk_Canvas *canvasPtr; /* Canvas that contains item. */ Tk_Item *itemPtr; /* Item to be displayed. */ Drawable drawable; /* Pixmap or window in which to draw * item. */ { register PolygonItem *polyPtr = (PolygonItem *) itemPtr; if (polyPtr->gc == None) { return; } if (!polyPtr->smooth) { TkFillPolygon(canvasPtr, polyPtr->coordPtr, polyPtr->numPoints, drawable, polyPtr->gc); } else { int numPoints; XPoint staticPoints[MAX_STATIC_POINTS]; XPoint *pointPtr; /* * This is a smoothed polygon. Display using a set of generated * spline points rather than the original points. */ numPoints = 1 + polyPtr->numPoints*polyPtr->splineSteps; if (numPoints <= MAX_STATIC_POINTS) { pointPtr = staticPoints; } else { pointPtr = (XPoint *) ckalloc((unsigned) (numPoints * sizeof(XPoint))); } numPoints = TkMakeBezierCurve(canvasPtr, polyPtr->coordPtr, polyPtr->numPoints, polyPtr->splineSteps, pointPtr, (double *) NULL); XFillPolygon(Tk_Display(canvasPtr->tkwin), drawable, polyPtr->gc, pointPtr, numPoints, Complex, CoordModeOrigin); if (pointPtr != staticPoints) { ckfree((char *) pointPtr); } } } /* *-------------------------------------------------------------- * * PolygonToPoint -- * * Computes the distance from a given point to a given * polygon, in canvas units. * * Results: * The return value is 0 if the point whose x and y coordinates * are pointPtr[0] and pointPtr[1] is inside the polygon. If the * point isn't inside the polygon then the return value is the * distance from the point to the polygon. * * Side effects: * None. * *-------------------------------------------------------------- */ /* ARGSUSED */ static double PolygonToPoint(canvasPtr, itemPtr, pointPtr) Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item to check against point. */ double *pointPtr; /* Pointer to x and y coordinates. */ { PolygonItem *polyPtr = (PolygonItem *) itemPtr; double *coordPtr, distance; double staticSpace[2*MAX_STATIC_POINTS]; int numPoints; if (!polyPtr->smooth) { return TkPolygonToPoint(polyPtr->coordPtr, polyPtr->numPoints, pointPtr); } /* * Smoothed polygon. Generate a new set of points and use them * for comparison. */ numPoints = 1 + polyPtr->numPoints*polyPtr->splineSteps; if (numPoints <= MAX_STATIC_POINTS) { coordPtr = staticSpace; } else { coordPtr = (double *) ckalloc((unsigned) (2*numPoints*sizeof(double))); } numPoints = TkMakeBezierCurve(canvasPtr, polyPtr->coordPtr, polyPtr->numPoints, polyPtr->splineSteps, (XPoint *) NULL, coordPtr); distance = TkPolygonToPoint(coordPtr, numPoints, pointPtr); if (coordPtr != staticSpace) { ckfree((char *) coordPtr); } return distance; } /* *-------------------------------------------------------------- * * PolygonToArea -- * * This procedure is called to determine whether an item * lies entirely inside, entirely outside, or overlapping * a given rectangular area. * * Results: * -1 is returned if the item is entirely outside the area * given by rectPtr, 0 if it overlaps, and 1 if it is entirely * inside the given area. * * Side effects: * None. * *-------------------------------------------------------------- */ /* ARGSUSED */ static int PolygonToArea(canvasPtr, itemPtr, rectPtr) Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item to check against polygon. */ double *rectPtr; /* Pointer to array of four coordinates * (x1, y1, x2, y2) describing rectangular * area. */ { PolygonItem *polyPtr = (PolygonItem *) itemPtr; double *coordPtr; double staticSpace[2*MAX_STATIC_POINTS]; int numPoints, result; if (!polyPtr->smooth) { return TkPolygonToArea(polyPtr->coordPtr, polyPtr->numPoints, rectPtr); } /* * Smoothed polygon. Generate a new set of points and use them * for comparison. */ numPoints = 1 + polyPtr->numPoints*polyPtr->splineSteps; if (numPoints <= MAX_STATIC_POINTS) { coordPtr = staticSpace; } else { coordPtr = (double *) ckalloc((unsigned) (2*numPoints*sizeof(double))); } numPoints = TkMakeBezierCurve(canvasPtr, polyPtr->coordPtr, polyPtr->numPoints, polyPtr->splineSteps, (XPoint *) NULL, coordPtr); result = TkPolygonToArea(coordPtr, numPoints, rectPtr); if (coordPtr != staticSpace) { ckfree((char *) coordPtr); } return result; } /* *-------------------------------------------------------------- * * ScalePolygon -- * * This procedure is invoked to rescale a polygon item. * * Results: * None. * * Side effects: * The polygon referred to by itemPtr is rescaled so that the * following transformation is applied to all point * coordinates: * x' = originX + scaleX*(x-originX) * y' = originY + scaleY*(y-originY) * *-------------------------------------------------------------- */ static void ScalePolygon(canvasPtr, itemPtr, originX, originY, scaleX, scaleY) Tk_Canvas *canvasPtr; /* Canvas containing polygon. */ Tk_Item *itemPtr; /* Polygon to be scaled. */ double originX, originY; /* Origin about which to scale rect. */ double scaleX; /* Amount to scale in X direction. */ double scaleY; /* Amount to scale in Y direction. */ { PolygonItem *polyPtr = (PolygonItem *) itemPtr; register double *coordPtr; int i; for (i = 0, coordPtr = polyPtr->coordPtr; i < polyPtr->numPoints; i++, coordPtr += 2) { *coordPtr = originX + scaleX*(*coordPtr - originX); coordPtr[1] = originY + scaleY*(coordPtr[1] - originY); } ComputePolygonBbox(canvasPtr, polyPtr); } /* *-------------------------------------------------------------- * * TranslatePolygon -- * * This procedure is called to move a polygon by a given * amount. * * Results: * None. * * Side effects: * The position of the polygon is offset by (xDelta, yDelta), * and the bounding box is updated in the generic part of the * item structure. * *-------------------------------------------------------------- */ static void TranslatePolygon(canvasPtr, itemPtr, deltaX, deltaY) Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item that is being moved. */ double deltaX, deltaY; /* Amount by which item is to be * moved. */ { PolygonItem *polyPtr = (PolygonItem *) itemPtr; register double *coordPtr; int i; for (i = 0, coordPtr = polyPtr->coordPtr; i < polyPtr->numPoints; i++, coordPtr += 2) { *coordPtr += deltaX; coordPtr[1] += deltaY; } ComputePolygonBbox(canvasPtr, polyPtr); } micropolis-activity/src/tk/tkwindow.c0000664000076400007640000013066610724145723020266 0ustar simcitysimcity/* * tkWindow.c -- * * This file provides basic window-manipulation procedures, * which are equivalent to procedures in Xlib (and even * invoke them) but also maintain the local Tk_Window * structure. * * Copyright 1989-1992 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkWindow.c,v 1.92 92/08/21 11:42:44 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tkconfig.h" #include "tkint.h" /* * Global absolute file name: */ char *TK_Library = TK_LIBRARY; /* * Count of open displays. */ int tk_Displays; /* * Count of number of main windows currently open in this process. */ int tk_NumMainWindows; /* * Added by dhopkins for OLPC Micropolis gtk.Socket integration. */ Window tk_RootWindow = 0; /* * List of all displays currently in use. */ TkDisplay *tkDisplayList = NULL; /* * Have statics in this module been initialized? */ static initialized = 0; /* * Context information used to map from X window id's to * TkWindow structures (during event handling, for example): */ XContext tkWindowContext; /* * The variables below hold several uid's that are used in many places * in the toolkit. */ Tk_Uid tkDisabledUid = NULL; Tk_Uid tkActiveUid = NULL; Tk_Uid tkNormalUid = NULL; /* * Default values for "changes" and "atts" fields of TkWindows. Note * that Tk always requests all events for all windows, except StructureNotify * events on internal windows: these events are generated internally. */ static XWindowChanges defChanges = { 0, 0, 1, 1, 0, 0, Above }; #define ALL_EVENTS_MASK \ KeyPressMask|KeyReleaseMask|ButtonPressMask|ButtonReleaseMask| \ EnterWindowMask|LeaveWindowMask|PointerMotionMask|ExposureMask| \ VisibilityChangeMask|SubstructureNotifyMask| \ FocusChangeMask|PropertyChangeMask|ColormapChangeMask static XSetWindowAttributes defAtts= { None, /* background_pixmap */ 0, /* background_pixel */ CopyFromParent, /* border_pixmap */ 0, /* border_pixel */ ForgetGravity, /* bit_gravity */ NorthWestGravity, /* win_gravity */ NotUseful, /* backing_store */ ~0, /* backing_planes */ 0, /* backing_pixel */ False, /* save_under */ ALL_EVENTS_MASK, /* event_mask */ 0, /* do_not_propagate_mask */ False, /* override_redirect */ CopyFromParent, /* colormap */ None /* cursor */ }; /* * The following structure defines all of the commands supported by * Tk, and the C procedures that execute them. */ typedef struct { char *name; /* Name of command. */ int (*cmdProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); /* Command procedure. */ } TkCmd; TkCmd commands[] = { /* * Commands that are part of the intrinsics: */ {"after", Tk_AfterCmd}, {"bind", Tk_BindCmd}, {"destroy", Tk_DestroyCmd}, {"focus", Tk_FocusCmd}, {"grab", Tk_GrabCmd}, {"option", Tk_OptionCmd}, {"pack", Tk_PackCmd}, {"place", Tk_PlaceCmd}, {"selection", Tk_SelectionCmd}, {"tkwait", Tk_TkwaitCmd}, {"update", Tk_UpdateCmd}, {"winfo", Tk_WinfoCmd}, {"wm", Tk_WmCmd}, {"accept", Tcp_AcceptCmd}, {"shutdown", Tcp_ShutdownCmd}, {"connect", Tcp_ConnectCmd}, {"filehandler", Tcp_FileHandlerCmd}, /* * Widget-creation commands. */ {"button", Tk_ButtonCmd}, {"canvas", Tk_CanvasCmd}, {"checkbutton", Tk_ButtonCmd}, {"entry", Tk_EntryCmd}, {"frame", Tk_FrameCmd}, {"label", Tk_ButtonCmd}, {"listbox", Tk_ListboxCmd}, {"menu", Tk_MenuCmd}, {"menubutton", Tk_MenubuttonCmd}, {"message", Tk_MessageCmd}, {"radiobutton", Tk_ButtonCmd}, {"scale", Tk_ScaleCmd}, {"scrollbar", Tk_ScrollbarCmd}, {"text", Tk_TextCmd}, {"toplevel", Tk_FrameCmd}, {(char *) NULL, (int (*)()) NULL} }; /* * Forward declarations to procedures defined later in this file: */ static Tk_Window CreateTopLevelWindow _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window parent, char *name, char *screenName)); static void DoConfigureNotify _ANSI_ARGS_((TkWindow *winPtr)); static TkDisplay * GetScreen _ANSI_ARGS_((Tcl_Interp *interp, char *screenName, int *screenPtr)); static int NameWindow _ANSI_ARGS_((Tcl_Interp *interp, TkWindow *winPtr, TkWindow *parentPtr, char *name)); static TkWindow * NewWindow _ANSI_ARGS_((TkDisplay *dispPtr, int screenNum)); /* *---------------------------------------------------------------------- * * CreateTopLevelWindow -- * * Make a new window that will be at top-level (its parent will * be the root window of a screen). * * Results: * The return value is a token for the new window, or NULL if * an error prevented the new window from being created. If * NULL is returned, an error message will be left in * interp->result. * * Side effects: * A new window structure is allocated locally. An X * window is NOT initially created, but will be created * the first time the window is mapped. * *---------------------------------------------------------------------- */ static Tk_Window CreateTopLevelWindow(interp, parent, name, screenName) Tcl_Interp *interp; /* Interpreter to use for error reporting. */ Tk_Window parent; /* Token for logical parent of new window * (used for naming, options, etc.). May * be NULL. */ char *name; /* Name for new window; if parent is * non-NULL, must be unique among parent's * children. */ char *screenName; /* Name of screen on which to create * window. NULL means use DISPLAY environment * variable to determine. Empty string means * use parent's screen, or DISPLAY if no * parent. */ { register TkWindow *winPtr; register TkDisplay *dispPtr; int screenId; if (!initialized) { initialized = 1; tkWindowContext = XUniqueContext(); tkActiveUid = Tk_GetUid("active"); tkDisabledUid = Tk_GetUid("disabled"); tkNormalUid = Tk_GetUid("normal"); } if ((parent != NULL) && (screenName != NULL) && (screenName[0] == '\0')) { dispPtr = ((TkWindow *) parent)->dispPtr; screenId = Tk_ScreenNumber(parent); } else { dispPtr = GetScreen(interp, screenName, &screenId); if (dispPtr == NULL) { return (Tk_Window) NULL; } } winPtr = NewWindow(dispPtr, screenId); /* * Internal windows don't normally ask for StructureNotify events, * since we can generate them internally. However, for top-level * windows we need to as for the events because the window could * be manipulated externally. */ winPtr->atts.event_mask |= StructureNotifyMask; /* * (Need to set the TK_TOP_LEVEL flag immediately here; otherwise * Tk_DestroyWindow will core dump if it is called before the flag * has been set.) */ winPtr->flags |= TK_TOP_LEVEL; if (parent != NULL) { if (NameWindow(interp, winPtr, (TkWindow *) parent, name) != TCL_OK) { Tk_DestroyWindow((Tk_Window) winPtr); return (Tk_Window) NULL; } } TkWmNewWindow(winPtr); return (Tk_Window) winPtr; } /* *---------------------------------------------------------------------- * * GetScreen -- * * Given a string name for a display-plus-screen, find the * TkDisplay structure for the display and return the screen * number too. * * Results: * The return value is a pointer to information about the display, * or NULL if the display couldn't be opened. In this case, an * error message is left in interp->result. The location at * *screenPtr is overwritten with the screen number parsed from * screenName. * * Side effects: * A new connection is opened to the display if there is no * connection already. A new TkDisplay data structure is also * setup, if necessary. * *---------------------------------------------------------------------- */ static TkDisplay * GetScreen(interp, screenName, screenPtr) Tcl_Interp *interp; /* Place to leave error message. */ char *screenName; /* Name for screen. NULL or empty means * use DISPLAY envariable. */ int *screenPtr; /* Where to store screen number. */ { register TkDisplay *dispPtr; char *p; int length, screenId; /* * Separate the screen number from the rest of the display * name. ScreenName is assumed to have the syntax * . with the dot and the screen being * optional. */ if ((screenName == NULL) || (screenName[0] == '\0')) { screenName = getenv("DISPLAY"); if (screenName == NULL) { interp->result = "no display name and no $DISPLAY environment variable"; return (TkDisplay *) NULL; } } length = strlen(screenName); screenId = 0; p = screenName+length-1; while (isdigit(*p) && (p != screenName)) { p--; } if ((*p == '.') && (p[1] != '\0')) { length = p - screenName; screenId = strtoul(p+1, (char **) NULL, 10); } /* * See if we already have a connection to this display. If not, * then open a new connection. */ for (dispPtr = tkDisplayList; ; dispPtr = dispPtr->nextPtr) { if (dispPtr == NULL) { Display *display = NULL; display = XOpenDisplay(screenName); if (display == NULL) { Tcl_AppendResult(interp, "couldn't connect to display \"", screenName, "\"", (char *) NULL); return (TkDisplay *) NULL; } if (getenv("XSYNCHRONIZE") != NULL) { XSynchronize(display, 1); } tk_Displays++; dispPtr = (TkDisplay *) ckalloc(sizeof(TkDisplay)); dispPtr->display = display; dispPtr->nextPtr = tkDisplayList; dispPtr->name = (char *) ckalloc((unsigned) (length+1)); dispPtr->lastEventTime = CurrentTime; strncpy(dispPtr->name, screenName, length); dispPtr->mouseMainPtr = NULL; dispPtr->name[length] = '\0'; dispPtr->symsPerCode = 0; dispPtr->errorPtr = NULL; dispPtr->deleteCount = 0; dispPtr->commWindow = NULL; dispPtr->selectionOwner = NULL; dispPtr->selectionSerial = 0; dispPtr->multipleAtom = None; dispPtr->atomInit = 0; dispPtr->cursorFont = None; dispPtr->grabWinPtr = NULL; dispPtr->ungrabWinPtr = NULL; dispPtr->buttonWinPtr = NULL; dispPtr->pointerWinPtr = NULL; dispPtr->serverWinPtr = NULL; dispPtr->grabFlags = 0; dispPtr->focusPtr = NULL; tkDisplayList = dispPtr; Tk_CreateFileHandler(ConnectionNumber(display), TK_READABLE, (void (*)()) NULL, (ClientData) display); break; } if ((strncmp(dispPtr->name, screenName, length) == 0) && (dispPtr->name[length] == '\0')) { break; } } if (screenId >= ScreenCount(dispPtr->display)) { sprintf(interp->result, "bad screen number \"%d\"", screenId); return (TkDisplay *) NULL; } *screenPtr = screenId; return dispPtr; } /* *-------------------------------------------------------------- * * NewWindow -- * * This procedure creates and initializes a TkWindow structure. * * Results: * The return value is a pointer to the new window. * * Side effects: * A new window structure is allocated and all its fields are * initialized. * *-------------------------------------------------------------- */ static TkWindow * NewWindow(dispPtr, screenNum) TkDisplay *dispPtr; /* Display associated with new window. */ int screenNum; /* Index of screen for new window. */ { register TkWindow *winPtr; winPtr = (TkWindow *) ckalloc(sizeof(TkWindow)); winPtr->display = dispPtr->display; winPtr->dispPtr = dispPtr; winPtr->screenNum = screenNum; winPtr->window = None; winPtr->childList = NULL; winPtr->parentPtr = NULL; winPtr->nextPtr = NULL; winPtr->mainPtr = NULL; winPtr->pathName = NULL; winPtr->nameUid = NULL; winPtr->classUid = NULL; winPtr->changes = defChanges; winPtr->dirtyChanges = CWX|CWY|CWWidth|CWHeight|CWBorderWidth; winPtr->atts = defAtts; winPtr->dirtyAtts = CWEventMask; winPtr->flags = 0; winPtr->handlerList = NULL; winPtr->focusProc = NULL; winPtr->focusData = NULL; winPtr->optionLevel = -1; winPtr->selHandlerList = NULL; winPtr->selClearProc = NULL; winPtr->selClearData = NULL; winPtr->geomProc = NULL; winPtr->geomData = NULL; winPtr->reqWidth = winPtr->reqHeight = 0; winPtr->internalBorderWidth = 0; winPtr->wmInfoPtr = NULL; return winPtr; } /* *---------------------------------------------------------------------- * * NameWindow -- * * This procedure is invoked to give a window a name and insert * the window into the hierarchy associated with a particular * application. * * Results: * A standard Tcl return value. * * Side effects: * See above. * *---------------------------------------------------------------------- */ static int NameWindow(interp, winPtr, parentPtr, name) Tcl_Interp *interp; /* Interpreter to use for error reporting. */ register TkWindow *winPtr; /* Window that is to be named and inserted. */ TkWindow *parentPtr; /* Pointer to logical parent for winPtr * (used for naming, options, etc.). */ char *name; /* Name for winPtr; must be unique among * parentPtr's children. */ { #define FIXED_SIZE 200 char staticSpace[FIXED_SIZE]; char *pathName; int new; Tcl_HashEntry *hPtr; int length1, length2; /* * Setup all the stuff except name right away, then do the name stuff * last. This is so that if the name stuff fails, everything else * will be properly initialized (needed to destroy the window cleanly * after the naming failure). */ winPtr->parentPtr = parentPtr; winPtr->nextPtr = parentPtr->childList; parentPtr->childList = winPtr; winPtr->mainPtr = parentPtr->mainPtr; winPtr->nameUid = Tk_GetUid(name); /* * To permit names of arbitrary length, must be prepared to malloc * a buffer to hold the new path name. To run fast in the common * case where names are short, use a fixed-size buffer on the * stack. */ length1 = strlen(parentPtr->pathName); length2 = strlen(name); if ((length1+length2+2) <= FIXED_SIZE) { pathName = staticSpace; } else { pathName = (char *) ckalloc((unsigned) (length1+length2+2)); } if (length1 == 1) { pathName[0] = '.'; strcpy(pathName+1, name); } else { strcpy(pathName, parentPtr->pathName); pathName[length1] = '.'; strcpy(pathName+length1+1, name); } hPtr = Tcl_CreateHashEntry(&parentPtr->mainPtr->nameTable, pathName, &new); if (pathName != staticSpace) { ckfree(pathName); } if (!new) { Tcl_AppendResult(interp, "window name \"", name, "\" already exists in parent", (char *) NULL); return TCL_ERROR; } Tcl_SetHashValue(hPtr, winPtr); winPtr->pathName = Tcl_GetHashKey(&parentPtr->mainPtr->nameTable, hPtr); return TCL_OK; } /* *---------------------------------------------------------------------- * * Tk_CreateMainWindow -- * * Make a new main window. A main window is a special kind of * top-level window used as the outermost window in an * application. * * Results: * The return value is a token for the new window, or NULL if * an error prevented the new window from being created. If * NULL is returned, an error message will be left in * interp->result. * * Side effects: * A new window structure is allocated locally; "interp" is * associated with the window and registered for "send" commands * under "baseName". BaseName may be extended with an instance * number in the form "#2" if necessary to make it globally * unique. Tk-related commands are bound into interp. An X * window is NOT initially created, but will be created the * first time the window is mapped. * *---------------------------------------------------------------------- */ Tk_Window Tk_CreateMainWindow(interp, screenName, baseName) Tcl_Interp *interp; /* Interpreter to use for error reporting. */ char *screenName; /* Name of screen on which to create * window. Empty or NULL string means * use DISPLAY environment variable. */ char *baseName; /* Base name for application; usually of the * form "prog instance". */ { Tk_Window tkwin; int result, dummy; Tcl_HashEntry *hPtr; register TkMainInfo *mainPtr; register TkWindow *winPtr; register TkCmd *cmdPtr; /* * Create the basic TkWindow structure. */ tkwin = CreateTopLevelWindow(interp, (Tk_Window) NULL, baseName, screenName); if (tkwin == NULL) { return NULL; } /* * Create the TkMainInfo structure for this application, and set * up name-related information for the new window. */ winPtr = (TkWindow *) tkwin; mainPtr = (TkMainInfo *) ckalloc(sizeof(TkMainInfo)); mainPtr->winPtr = winPtr; mainPtr->interp = interp; Tcl_InitHashTable(&mainPtr->nameTable, TCL_STRING_KEYS); mainPtr->bindingTable = Tk_CreateBindingTable(interp); /* XXX: FOCUS */ /* mainPtr->focusPtr = NULL; */ mainPtr->optionRootPtr = NULL; winPtr->mainPtr = mainPtr; hPtr = Tcl_CreateHashEntry(&mainPtr->nameTable, ".", &dummy); Tcl_SetHashValue(hPtr, winPtr); winPtr->pathName = Tcl_GetHashKey(&mainPtr->nameTable, hPtr); /* * Register the interpreter for "send" purposes. If baseName isn't * already unique, find a unique suffix to add to it to make it * unique. Change the window's name to contain the suffix. */ result = Tk_RegisterInterp(interp, baseName, tkwin); if (result == TCL_OK) { winPtr->nameUid = Tk_GetUid(baseName); } else { char newName[110]; int i; for (i = 2; ; i++) { sprintf(newName, "%.100s #%d", baseName, i); Tcl_SetResult(interp, (char *) NULL, TCL_STATIC); result = Tk_RegisterInterp(interp, newName, tkwin); if (result == TCL_OK) { break; } if (i >= 100) { Tcl_SetResult(interp, "couldn't generate unique name to register application", TCL_STATIC); Tk_DestroyWindow(tkwin); } } winPtr->nameUid = Tk_GetUid(newName); } /* * Bind in Tk's commands. */ for (cmdPtr = commands; cmdPtr->name != NULL; cmdPtr++) { Tcl_CreateCommand(interp, cmdPtr->name, cmdPtr->cmdProc, (ClientData) tkwin, (void (*)()) NULL); } /* * Set variables for the intepreter. */ Tcl_SetVar(interp, "tk_library", TK_Library, TCL_GLOBAL_ONLY); Tcl_SetVar(interp, "tk_version", TK_VERSION, TCL_GLOBAL_ONLY); Tcl_SetVar(interp, "tkVersion", TK_VERSION, TCL_GLOBAL_ONLY); tk_NumMainWindows++; return tkwin; } /* *-------------------------------------------------------------- * * Tk_CreateWindow -- * * Create a new internal or top-level window as a child of an * existing window. * * Results: * The return value is a token for the new window. This * is not the same as X's token for the window. If an error * occurred in creating the window (e.g. no such display or * screen), then an error message is left in interp->result and * NULL is returned. * * Side effects: * A new window structure is allocated locally. An X * window is not initially created, but will be created * the first time the window is mapped. * *-------------------------------------------------------------- */ Tk_Window Tk_CreateWindow(interp, parent, name, screenName) Tcl_Interp *interp; /* Interpreter to use for error reporting. * Interp->result is assumed to be * initialized by the caller. */ Tk_Window parent; /* Token for parent of new window. */ char *name; /* Name for new window. Must be unique * among parent's children. */ char *screenName; /* If NULL, new window will be internal on * same screen as its parent. If non-NULL, * gives name of screen on which to create * new window; window will be a top-level * window. */ { TkWindow *parentPtr = (TkWindow *) parent; TkWindow *winPtr; if (screenName == NULL) { winPtr = NewWindow(parentPtr->dispPtr, parentPtr->screenNum); if (NameWindow(interp, winPtr, parentPtr, name) != TCL_OK) { Tk_DestroyWindow((Tk_Window) winPtr); return NULL; } else { return (Tk_Window) winPtr; } } else { /* * This is a fix for dvx XOpenDisplay... display name conformalization * bugs... */ char dsp[256]; int len; strcpy(dsp, screenName); len = strlen(dsp); if (len && (dsp[len -1] == '.')) dsp[len -1] = '\0'; return CreateTopLevelWindow(interp, parent, name, dsp); } } /* *---------------------------------------------------------------------- * * Tk_CreateWindowFromPath -- * * This procedure is similar to Tk_CreateInternalWindow except * that it uses a path name to create the window, rather than * a parent and a child name. * * Results: * The return value is a token for the new window. This * is not the same as X's token for the window. If an error * occurred in creating the window (e.g. no such display or * screen), then an error message is left in interp->result and * NULL is returned. * * Side effects: * A new window structure is allocated locally. An X * window is not initially created, but will be created * the first time the window is mapped. * *---------------------------------------------------------------------- */ Tk_Window Tk_CreateWindowFromPath(interp, tkwin, pathName, screenName) Tcl_Interp *interp; /* Interpreter to use for error reporting. * Interp->result is assumed to be * initialized by the caller. */ Tk_Window tkwin; /* Token for any window in application * that is to contain new window. */ char *pathName; /* Path name for new window within the * application of tkwin. The parent of * this window must already exist, but * the window itself must not exist. */ char *screenName; /* If NULL, new window will be on same * screen as its parent. If non-NULL, * gives name of screen on which to create * new window; window will be a top-level * window. */ { #define FIXED_SPACE 5 char fixedSpace[FIXED_SPACE+1]; char *p; Tk_Window parent; int numChars; /* * Strip the parent's name out of pathName (it's everything up * to the last dot). There are two tricky parts: (a) must * copy the parent's name somewhere else to avoid modifying * the pathName string (for large names, space for the copy * will have to be malloc'ed); (b) must special-case the * situation where the parent is ".". */ p = strrchr(pathName, '.'); if (p == NULL) { Tcl_AppendResult(interp, "bad window path name \"", pathName, "\"", (char *) NULL); return NULL; } numChars = p-pathName; if (numChars > FIXED_SPACE) { p = (char *) ckalloc((unsigned) (numChars+1)); } else { p = fixedSpace; } if (numChars == 0) { *p = '.'; p[1] = '\0'; } else { strncpy(p, pathName, numChars); p[numChars] = '\0'; } /* * Find the parent window. */ parent = Tk_NameToWindow(interp, p, tkwin); if (p != fixedSpace) { ckfree(p); } if (parent == NULL) { return NULL; } /* * Create the window. */ if (screenName == NULL) { TkWindow *parentPtr = (TkWindow *) parent; TkWindow *winPtr; winPtr = NewWindow(parentPtr->dispPtr, parentPtr->screenNum); if (NameWindow(interp, winPtr, parentPtr, pathName+numChars+1) != TCL_OK) { Tk_DestroyWindow((Tk_Window) winPtr); return NULL; } else { return (Tk_Window) winPtr; } } else { return CreateTopLevelWindow(interp, parent, pathName+numChars+1, screenName); } } /* *-------------------------------------------------------------- * * Tk_DestroyWindow -- * * Destroy an existing window. After this call, the caller * should never again use the token. * * Results: * None. * * Side effects: * The window is deleted, along with all of its children. * Relevant callback procedures are invoked. * *-------------------------------------------------------------- */ void Tk_DestroyWindow(tkwin) Tk_Window tkwin; /* Window to destroy. */ { register TkWindow *winPtr = (TkWindow *) tkwin; XEvent event; /* * Recursively destroy children. The TK_RECURSIVE_DESTROY * flags means that the child's window needn't be explicitly * destroyed (the destroy of the parent already did it), nor * does it need to be removed from its parent's child list, * since the parent is being destroyed too. */ while (winPtr->childList != NULL) { winPtr->childList->flags |= TK_RECURSIVE_DESTROY; Tk_DestroyWindow((Tk_Window) winPtr->childList); } /* * Generate a DestroyNotify event. In order for the DestroyNotify * event to be processed correctly, need to make sure the window * exists. This is a bit of a kludge, and may be unnecessarily * expensive, but without it no event handlers will get called for * windows that don't exist yet. */ if (winPtr->window == None) { Tk_MakeWindowExist(tkwin); } winPtr->flags |= TK_ALREADY_DEAD; event.type = DestroyNotify; event.xdestroywindow.serial = LastKnownRequestProcessed(winPtr->display); event.xdestroywindow.send_event = False; event.xdestroywindow.display = winPtr->display; event.xdestroywindow.event = winPtr->window; event.xdestroywindow.window = winPtr->window; Tk_HandleEvent(&event); /* * Cleanup the data structures associated with this window. * No need to destroy windows during recursive destroys, since * that will happen automatically when the parent window is * destroyed (not true for top-level windows: must destroy * them explicitly). */ if (winPtr->window != None) { if (!(winPtr->flags & TK_RECURSIVE_DESTROY) || (winPtr->flags & TK_TOP_LEVEL)) { XDestroyWindow(winPtr->display, winPtr->window); } XDeleteContext(winPtr->display, winPtr->window, tkWindowContext); winPtr->window = None; } if (winPtr->parentPtr != NULL) { if (winPtr->parentPtr->childList == winPtr) { winPtr->parentPtr->childList = winPtr->nextPtr; } else { register TkWindow *winPtr2; for (winPtr2 = winPtr->parentPtr->childList; ; winPtr2 = winPtr2->nextPtr) { if (winPtr2 == NULL) { panic("Tk_DestroyWindow couldn't find child in parent (deleted twice?)"); break; } if (winPtr2->nextPtr == winPtr) { winPtr2->nextPtr = winPtr->nextPtr; break; } } } } TkEventDeadWindow(winPtr); TkOptionDeadWindow(winPtr); TkSelDeadWindow(winPtr); if (winPtr->flags & TK_TOP_LEVEL) { TkWmDeadWindow(winPtr); } TkGrabDeadWindow(winPtr); if (winPtr->mainPtr != NULL) { Tk_DeleteAllBindings(winPtr->mainPtr->bindingTable, (ClientData) winPtr->pathName); if (winPtr->pathName != NULL) { Tcl_DeleteHashEntry(Tcl_FindHashEntry(&winPtr->mainPtr->nameTable, winPtr->pathName)); } if (winPtr->mainPtr->winPtr == winPtr) { register TkCmd *cmdPtr; /* * Deleting a main window. Delete the TkMainInfo structure too * and replace all of Tk's commands with dummy commands that * return errors. Also delete the "send" command to unregister * the interpreter. */ for (cmdPtr = commands; cmdPtr->name != NULL; cmdPtr++) { Tcl_CreateCommand(winPtr->mainPtr->interp, cmdPtr->name, TkDeadAppCmd, (ClientData) NULL, (void (*)()) NULL); } Tcl_CreateCommand(winPtr->mainPtr->interp, "send", TkDeadAppCmd, (ClientData) NULL, (void (*)()) NULL); Tcl_DeleteHashTable(&winPtr->mainPtr->nameTable); Tk_DeleteBindingTable(winPtr->mainPtr->bindingTable); ckfree((char *) winPtr->mainPtr); tk_NumMainWindows--; } } ckfree((char *) winPtr); } /* *-------------------------------------------------------------- * * Tk_MapWindow -- * * Map a window within its parent. This may require the * window and/or its parents to actually be created. * * Results: * None. * * Side effects: * The given window will be mapped. Windows may also * be created. * *-------------------------------------------------------------- */ void Tk_MapWindow(tkwin) Tk_Window tkwin; /* Token for window to map. */ { register TkWindow *winPtr = (TkWindow *) tkwin; if (winPtr->flags & TK_MAPPED) { return; } if (winPtr->window == None) { Tk_MakeWindowExist(tkwin); } if (winPtr->flags & TK_TOP_LEVEL) { if (!TkWmMapWindow(winPtr)) { return; } } else { /* * Don't set the mapped flag for top-level windows: TkWmMapWindow * does it if appropriate (e.g. if the window is going to be non- * iconic). */ winPtr->flags |= TK_MAPPED; } XMapWindow(winPtr->display, winPtr->window); if (!(winPtr->flags & TK_TOP_LEVEL)) { XEvent event; event.type = MapNotify; event.xmap.serial = LastKnownRequestProcessed(winPtr->display); event.xmap.send_event = False; event.xmap.display = winPtr->display; event.xmap.event = winPtr->window; event.xmap.window = winPtr->window; event.xmap.override_redirect = winPtr->atts.override_redirect; Tk_HandleEvent(&event); } } /* *-------------------------------------------------------------- * * Tk_MakeWindowExist -- * * Ensure that a particular window actually exists. This * procedure shouldn't normally need to be invoked from * outside the Tk package, but may be needed if someone * wants to manipulate a window before mapping it. * * Results: * None. * * Side effects: * When the procedure returns, the X window associated with * tkwin is guaranteed to exist. This may require the * window's ancestors to be created also. * *-------------------------------------------------------------- */ void Tk_MakeWindowExist(tkwin) Tk_Window tkwin; /* Token for window. */ { register TkWindow *winPtr = (TkWindow *) tkwin; Window parent; if (winPtr->window != None) { return; } if (winPtr->flags & TK_TOP_LEVEL) { /* * workaround by dhopkins for OLPC Micropolis gtk.Socket integration. */ if (tk_RootWindow) { parent = tk_RootWindow; } else { parent = XRootWindow(winPtr->display, winPtr->screenNum); } } else { if (winPtr->parentPtr->window == None) { Tk_MakeWindowExist((Tk_Window) winPtr->parentPtr); } parent = winPtr->parentPtr->window; } /* workaround to support non-default colormaps */ #if 0 winPtr->window = XCreateWindow(winPtr->display, parent, winPtr->changes.x, winPtr->changes.y, winPtr->changes.width, winPtr->changes.height, winPtr->changes.border_width, CopyFromParent, InputOutput, CopyFromParent, winPtr->dirtyAtts, &winPtr->atts); #else { Screen *scr = ScreenOfDisplay(winPtr->display, winPtr->screenNum); winPtr->dirtyAtts |= CWColormap | CWBorderPixmap; winPtr->atts.colormap = Tk_DefaultColormap(scr); winPtr->atts.border_pixmap = Tk_DefaultPixmap(scr); winPtr->window = XCreateWindow(winPtr->display, parent, winPtr->changes.x, winPtr->changes.y, winPtr->changes.width, winPtr->changes.height, winPtr->changes.border_width, Tk_DefaultDepth(scr), InputOutput, Tk_DefaultVisual(scr), winPtr->dirtyAtts, &winPtr->atts); } #endif XSaveContext(winPtr->display, winPtr->window, tkWindowContext, (void *) winPtr); winPtr->dirtyAtts = 0; winPtr->dirtyChanges &= ~(CWX|CWY|CWWidth|CWHeight|CWBorderWidth); if (winPtr->dirtyChanges != 0) { XConfigureWindow(winPtr->display, winPtr->window, winPtr->dirtyChanges, &winPtr->changes); winPtr->dirtyChanges = 0; } /* * Issue a ConfigureNotify event if there were deferred configuration * changes. */ if (winPtr->flags & TK_NEED_CONFIG_NOTIFY) { winPtr->flags &= ~TK_NEED_CONFIG_NOTIFY; DoConfigureNotify(winPtr); } } /* *-------------------------------------------------------------- * * Tk_UnmapWindow, etc. -- * * There are several procedures under here, each of which * mirrors an existing X procedure. In addition to performing * the functions of the corresponding procedure, each * procedure also updates the local window structure and * synthesizes an X event (if the window's structure is being * managed internally). * * Results: * See the manual entries. * * Side effects: * See the manual entries. * *-------------------------------------------------------------- */ void Tk_UnmapWindow(tkwin) Tk_Window tkwin; /* Token for window to unmap. */ { register TkWindow *winPtr = (TkWindow *) tkwin; if (!(winPtr->flags & TK_MAPPED)) { return; } winPtr->flags &= ~TK_MAPPED; XUnmapWindow(winPtr->display, winPtr->window); if (!(winPtr->flags & TK_TOP_LEVEL)) { XEvent event; event.type = UnmapNotify; event.xunmap.serial = LastKnownRequestProcessed(winPtr->display); event.xunmap.send_event = False; event.xunmap.display = winPtr->display; event.xunmap.event = winPtr->window; event.xunmap.window = winPtr->window; event.xunmap.from_configure = False; Tk_HandleEvent(&event); } } void Tk_ConfigureWindow(tkwin, valueMask, valuePtr) Tk_Window tkwin; /* Window to re-configure. */ unsigned int valueMask; /* Mask indicating which parts of * *valuePtr are to be used. */ XWindowChanges *valuePtr; /* New values. */ { register TkWindow *winPtr = (TkWindow *) tkwin; if ((winPtr->window == None) || !(winPtr->flags & TK_TOP_LEVEL)) { if (valueMask & CWX) { winPtr->changes.x = valuePtr->x; } if (valueMask & CWY) { winPtr->changes.y = valuePtr->y; } if (valueMask & CWWidth) { winPtr->changes.width = valuePtr->width; } if (valueMask & CWHeight) { winPtr->changes.height = valuePtr->height; } if (valueMask & CWBorderWidth) { winPtr->changes.border_width = valuePtr->border_width; } if (valueMask & CWSibling) { winPtr->changes.sibling = valuePtr->sibling; } if (valueMask & CWStackMode) { winPtr->changes.stack_mode = valuePtr->stack_mode; } } if (winPtr->window != None) { XConfigureWindow(winPtr->display, winPtr->window, valueMask, valuePtr); if (!(winPtr->flags & TK_TOP_LEVEL)) { DoConfigureNotify(winPtr); } } else { winPtr->dirtyChanges |= valueMask; winPtr->flags |= TK_NEED_CONFIG_NOTIFY; } } void Tk_MoveWindow(tkwin, x, y) Tk_Window tkwin; /* Window to move. */ int x, y; /* New location for window (within * parent). */ { register TkWindow *winPtr = (TkWindow *) tkwin; if (winPtr->window != None) { XMoveWindow(winPtr->display, winPtr->window, x, y); if (!(winPtr->flags & TK_TOP_LEVEL)) { winPtr->changes.x = x; winPtr->changes.y = y; DoConfigureNotify(winPtr); } } else { winPtr->changes.x = x; winPtr->changes.y = y; winPtr->dirtyChanges |= CWX|CWY; winPtr->flags |= TK_NEED_CONFIG_NOTIFY; } } void Tk_ResizeWindow(tkwin, width, height) Tk_Window tkwin; /* Window to resize. */ unsigned int width, height; /* New dimensions for window. */ { register TkWindow *winPtr = (TkWindow *) tkwin; if (winPtr->window != None) { XResizeWindow(winPtr->display, winPtr->window, width, height); if (!(winPtr->flags & TK_TOP_LEVEL)) { winPtr->changes.width = width; winPtr->changes.height = height; DoConfigureNotify(winPtr); } } else { winPtr->changes.width = width; winPtr->changes.height = height; winPtr->dirtyChanges |= CWWidth|CWHeight; winPtr->flags |= TK_NEED_CONFIG_NOTIFY; } } void Tk_MoveResizeWindow(tkwin, x, y, width, height) Tk_Window tkwin; /* Window to move and resize. */ int x, y; /* New location for window (within * parent). */ unsigned int width, height; /* New dimensions for window. */ { register TkWindow *winPtr = (TkWindow *) tkwin; if (winPtr->window != None) { XMoveResizeWindow(winPtr->display, winPtr->window, x, y, width, height); if (!(winPtr->flags & TK_TOP_LEVEL)) { winPtr->changes.x = x; winPtr->changes.y = y; winPtr->changes.width = width; winPtr->changes.height = height; DoConfigureNotify(winPtr); } } else { winPtr->changes.x = x; winPtr->changes.y = y; winPtr->changes.width = width; winPtr->changes.height = height; winPtr->dirtyChanges |= CWX|CWY|CWWidth|CWHeight; winPtr->flags |= TK_NEED_CONFIG_NOTIFY; } } void Tk_SetWindowBorderWidth(tkwin, width) Tk_Window tkwin; /* Window to modify. */ int width; /* New border width for window. */ { register TkWindow *winPtr = (TkWindow *) tkwin; winPtr->changes.border_width = width; if (winPtr->window != None) { XSetWindowBorderWidth(winPtr->display, winPtr->window, width); if (!(winPtr->flags & TK_TOP_LEVEL)) { DoConfigureNotify(winPtr); } } else { winPtr->dirtyChanges |= CWBorderWidth; winPtr->flags |= TK_NEED_CONFIG_NOTIFY; } } void Tk_ChangeWindowAttributes(tkwin, valueMask, attsPtr) Tk_Window tkwin; /* Window to manipulate. */ unsigned long valueMask; /* OR'ed combination of bits, * indicating which fields of * *attsPtr are to be used. */ register XSetWindowAttributes *attsPtr; /* New values for some attributes. */ { register TkWindow *winPtr = (TkWindow *) tkwin; if (valueMask & CWBackPixmap) { winPtr->atts.background_pixmap = attsPtr->background_pixmap; } if (valueMask & CWBackPixel) { winPtr->atts.background_pixel = attsPtr->background_pixel; } if (valueMask & CWBorderPixmap) { winPtr->atts.border_pixmap = attsPtr->border_pixmap; } if (valueMask & CWBorderPixel) { winPtr->atts.border_pixel = attsPtr->border_pixel; } if (valueMask & CWBitGravity) { winPtr->atts.bit_gravity = attsPtr->bit_gravity; } if (valueMask & CWWinGravity) { winPtr->atts.win_gravity = attsPtr->win_gravity; } if (valueMask & CWBackingStore) { winPtr->atts.backing_store = attsPtr->backing_store; } if (valueMask & CWBackingPlanes) { winPtr->atts.backing_planes = attsPtr->backing_planes; } if (valueMask & CWBackingPixel) { winPtr->atts.backing_pixel = attsPtr->backing_pixel; } if (valueMask & CWOverrideRedirect) { winPtr->atts.override_redirect = attsPtr->override_redirect; } if (valueMask & CWSaveUnder) { winPtr->atts.save_under = attsPtr->save_under; } if (valueMask & CWEventMask) { winPtr->atts.event_mask = attsPtr->event_mask; } if (valueMask & CWDontPropagate) { winPtr->atts.do_not_propagate_mask = attsPtr->do_not_propagate_mask; } if (valueMask & CWColormap) { winPtr->atts.colormap = attsPtr->colormap; } if (valueMask & CWCursor) { winPtr->atts.cursor = attsPtr->cursor; } if (winPtr->window != None) { XChangeWindowAttributes(winPtr->display, winPtr->window, valueMask, attsPtr); } else { winPtr->dirtyAtts |= valueMask; } } void Tk_SetWindowBackground(tkwin, pixel) Tk_Window tkwin; /* Window to manipulate. */ unsigned long pixel; /* Pixel value to use for * window's background. */ { register TkWindow *winPtr = (TkWindow *) tkwin; winPtr->atts.background_pixel = pixel; if (winPtr->window != None) { XSetWindowBackground(winPtr->display, winPtr->window, pixel); } else { winPtr->dirtyAtts = (winPtr->dirtyAtts & ~CWBackPixmap) | CWBackPixel; } } void Tk_SetWindowBackgroundPixmap(tkwin, pixmap) Tk_Window tkwin; /* Window to manipulate. */ Pixmap pixmap; /* Pixmap to use for window's * background. */ { register TkWindow *winPtr = (TkWindow *) tkwin; winPtr->atts.background_pixmap = pixmap; if (winPtr->window != None) { XSetWindowBackgroundPixmap(winPtr->display, winPtr->window, pixmap); } else { winPtr->dirtyAtts = (winPtr->dirtyAtts & ~CWBackPixel) | CWBackPixmap; } } void Tk_SetWindowBorder(tkwin, pixel) Tk_Window tkwin; /* Window to manipulate. */ unsigned long pixel; /* Pixel value to use for * window's border. */ { register TkWindow *winPtr = (TkWindow *) tkwin; winPtr->atts.border_pixel = pixel; if (winPtr->window != None) { XSetWindowBorder(winPtr->display, winPtr->window, pixel); } else { winPtr->dirtyAtts = (winPtr->dirtyAtts & ~CWBorderPixmap) | CWBorderPixel; } } void Tk_SetWindowBorderPixmap(tkwin, pixmap) Tk_Window tkwin; /* Window to manipulate. */ Pixmap pixmap; /* Pixmap to use for window's * border. */ { register TkWindow *winPtr = (TkWindow *) tkwin; winPtr->atts.border_pixmap = pixmap; if (winPtr->window != None) { XSetWindowBorderPixmap(winPtr->display, winPtr->window, pixmap); } else { winPtr->dirtyAtts = (winPtr->dirtyAtts & ~CWBorderPixel) | CWBorderPixmap; } } void Tk_DefineCursor(tkwin, cursor) Tk_Window tkwin; /* Window to manipulate. */ Cursor cursor; /* Cursor to use for window (may be None). */ { register TkWindow *winPtr = (TkWindow *) tkwin; winPtr->atts.cursor = cursor; if (winPtr->window != None) { XDefineCursor(winPtr->display, winPtr->window, cursor); } else { winPtr->dirtyAtts = winPtr->dirtyAtts | CWCursor; } } void Tk_UndefineCursor(tkwin) Tk_Window tkwin; /* Window to manipulate. */ { Tk_DefineCursor(tkwin, None); } /* *---------------------------------------------------------------------- * * DoConfigureNotify -- * * Generate a ConfigureNotify event describing the current * configuration of a window. * * Results: * None. * * Side effects: * An event is generated and processed by Tk_HandleEvent. * *---------------------------------------------------------------------- */ static void DoConfigureNotify(winPtr) register TkWindow *winPtr; /* Window whose configuration * was just changed. */ { XEvent event; event.type = ConfigureNotify; event.xconfigure.serial = LastKnownRequestProcessed(winPtr->display); event.xconfigure.send_event = False; event.xconfigure.display = winPtr->display; event.xconfigure.event = winPtr->window; event.xconfigure.window = winPtr->window; event.xconfigure.x = winPtr->changes.x; event.xconfigure.y = winPtr->changes.y; event.xconfigure.width = winPtr->changes.width; event.xconfigure.height = winPtr->changes.height; event.xconfigure.border_width = winPtr->changes.border_width; if (winPtr->changes.stack_mode == Above) { event.xconfigure.above = winPtr->changes.sibling; } else { event.xconfigure.above = None; } event.xconfigure.override_redirect = winPtr->atts.override_redirect; Tk_HandleEvent(&event); } /* *---------------------------------------------------------------------- * * Tk_SetClass -- * * This procedure is used to give a window a class. * * Results: * None. * * Side effects: * A new class is stored for tkwin, replacing any existing * class for it. * *---------------------------------------------------------------------- */ void Tk_SetClass(tkwin, className) Tk_Window tkwin; /* Token for window to assign class. */ char *className; /* New class for tkwin. */ { register TkWindow *winPtr = (TkWindow *) tkwin; winPtr->classUid = Tk_GetUid(className); if (winPtr->flags & TK_TOP_LEVEL) { TkWmSetClass(winPtr); } } /* *---------------------------------------------------------------------- * * Tk_NameToWindow -- * * Given a string name for a window, this procedure * returns the token for the window, if there exists a * window corresponding to the given name. * * Results: * The return result is either a token for the window corresponding * to "name", or else NULL to indicate that there is no such * window. In this case, an error message is left in interp->result. * * Side effects: * None. * *---------------------------------------------------------------------- */ Tk_Window Tk_NameToWindow(interp, pathName, tkwin) Tcl_Interp *interp; /* Where to report errors. */ char *pathName; /* Path name of window. */ Tk_Window tkwin; /* Token for window: name is assumed to * belong to the same main window as tkwin. */ { Tcl_HashEntry *hPtr; hPtr = Tcl_FindHashEntry(&((TkWindow *) tkwin)->mainPtr->nameTable, pathName); if (hPtr == NULL) { Tcl_AppendResult(interp, "bad window path name \"", pathName, "\"", (char *) NULL); return NULL; } return (Tk_Window) Tcl_GetHashValue(hPtr); } /* *---------------------------------------------------------------------- * * Tk_DisplayName -- * * Return the textual name of a window's display. * * Results: * The return value is the string name of the display associated * with tkwin. * * Side effects: * None. * *---------------------------------------------------------------------- */ char * Tk_DisplayName(tkwin) Tk_Window tkwin; /* Window whose display name is desired. */ { return ((TkWindow *) tkwin)->dispPtr->name; } micropolis-activity/src/tk/tkbitmap.c0000664000076400007640000003422410724145723020224 0ustar simcitysimcity/* * tkBitmap.c -- * * This file maintains a database of read-only bitmaps for the Tk * toolkit. This allows bitmaps to be shared between widgets and * also avoids interactions with the X server. * * Copyright 1990-1992 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkBitmap.c,v 1.16 92/08/24 09:45:43 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include "tkconfig.h" #include "tk.h" /* * The includes below are for pre-defined bitmaps. */ #include "bitmaps/gray50" #include "bitmaps/gray25" /* * One of the following data structures exists for each bitmap that is * currently in use. Each structure is indexed with both "idTable" and * "nameTable". */ typedef struct { Pixmap bitmap; /* X identifier for bitmap. None means this * bitmap was created by Tk_DefineBitmap * and it isn't currently in use. */ unsigned int width, height; /* Dimensions of bitmap. */ Display *display; /* Display for which bitmap is valid. */ int refCount; /* Number of active uses of bitmap. */ Tcl_HashEntry *hashPtr; /* Entry in nameTable for this structure * (needed when deleting). */ } TkBitmap; /* * Hash table to map from a textual description of a bitmap to the * TkBitmap record for the bitmap, and key structure used in that * hash table: */ static Tcl_HashTable nameTable; typedef struct { Tk_Uid name; /* Textual name for desired bitmap. */ Screen *screen; /* Screen for which bitmap will be used. */ } NameKey; /* * Hash table that maps from bitmap identifiers to the TkBitmap structure * for the bitmap. This table is indexed by Bitmap ids, and is used by * Tk_FreeBitmap. */ static Tcl_HashTable idTable; /* * For each call to Tk_DefineBitmap one of the following structures is * created to hold information about the bitmap. */ typedef struct { char *source; /* Bits for bitmap. */ unsigned int width, height; /* Dimensions of bitmap. */ } PredefBitmap; /* * Hash table create by Tk_DefineBitmap to map from a name to a * collection of in-core data about a bitmap. The table is * indexed by the address of the data for the bitmap, and the entries * contain pointers to PredefBitmap structures. */ static Tcl_HashTable predefTable; /* * Hash table used by Tk_GetBitmapFromData to map from a collection * of in-core data about a bitmap to a Tk_Uid giving an automatically- * generated name for the bitmap: */ static Tcl_HashTable dataTable; typedef struct { char *source; /* Bitmap bits. */ unsigned int width, height; /* Dimensions of bitmap. */ } DataKey; static int initialized = 0; /* 0 means static structures haven't been * initialized yet. */ /* * Forward declarations for procedures defined in this file: */ static void BitmapInit _ANSI_ARGS_((void)); /* *---------------------------------------------------------------------- * * Tk_GetBitmap -- * * Given a string describing a bitmap, locate (or create if necessary) * a bitmap that fits the description. * * Results: * The return value is the X identifer for the desired bitmap * (i.e. a Pixmap with a single plane), unless string couldn't be * parsed correctly. In this case, None is returned and an error * message is left in interp->result. The caller should never * modify the bitmap that is returned, and should eventually call * Tk_FreeBitmap when the bitmap is no longer needed. * * Side effects: * The bitmap is added to an internal database with a reference count. * For each call to this procedure, there should eventually be a call * to Tk_FreeBitmap, so that the database can be cleaned up when bitmaps * aren't needed anymore. * *---------------------------------------------------------------------- */ Pixmap Tk_GetBitmap(interp, tkwin, string) Tcl_Interp *interp; /* Interpreter to use for error reporting. */ Tk_Window tkwin; /* Window in which bitmap will be used. */ Tk_Uid string; /* Description of bitmap. See manual entry * for details on legal syntax. */ { NameKey key; Tcl_HashEntry *nameHashPtr, *idHashPtr, *predefHashPtr; register TkBitmap *bitmapPtr; PredefBitmap *predefPtr; int new; Pixmap bitmap; unsigned int width, height; int dummy2; if (!initialized) { BitmapInit(); } key.name = string; key.screen = Tk_Screen(tkwin); nameHashPtr = Tcl_CreateHashEntry(&nameTable, (char *) &key, &new); if (!new) { bitmapPtr = (TkBitmap *) Tcl_GetHashValue(nameHashPtr); bitmapPtr->refCount++; return bitmapPtr->bitmap; } /* * No suitable bitmap exists. Create a new bitmap from the * information contained in the string. If the string starts * with "@" then the rest of the string is a file name containing * the bitmap. Otherwise the string must refer to a bitmap * defined by a call to Tk_DefineBitmap. */ if (*string == '@') { string = Tcl_TildeSubst(interp, string + 1); if (string == NULL) { goto error; } if (XReadBitmapFile(Tk_Display(tkwin), RootWindowOfScreen(Tk_Screen(tkwin)), string, &width, &height, &bitmap, &dummy2, &dummy2) != BitmapSuccess) { Tcl_AppendResult(interp, "error reading bitmap file \"", string, "\"", (char *) NULL); goto error; } } else { predefHashPtr = Tcl_FindHashEntry(&predefTable, string); if (predefHashPtr == NULL) { Tcl_AppendResult(interp, "bitmap \"", string, "\" not defined", (char *) NULL); goto error; } predefPtr = (PredefBitmap *) Tcl_GetHashValue(predefHashPtr); width = predefPtr->width; height = predefPtr->height; bitmap = XCreateBitmapFromData(Tk_Display(tkwin), RootWindowOfScreen(Tk_Screen(tkwin)), predefPtr->source, width, height); } /* * Add information about this bitmap to our database. */ bitmapPtr = (TkBitmap *) ckalloc(sizeof(TkBitmap)); bitmapPtr->bitmap = bitmap; bitmapPtr->width = width; bitmapPtr->height = height; bitmapPtr->display = Tk_Display(tkwin); bitmapPtr->refCount = 1; bitmapPtr->hashPtr = nameHashPtr; idHashPtr = Tcl_CreateHashEntry(&idTable, (char *) bitmapPtr->bitmap, &new); if (!new) { /* deh patched to support multiple displays */ /* panic("bitmap already registered in Tk_GetBitmap"); */ bitmapPtr->refCount = 1000; } Tcl_SetHashValue(nameHashPtr, bitmapPtr); Tcl_SetHashValue(idHashPtr, bitmapPtr); return bitmapPtr->bitmap; error: Tcl_DeleteHashEntry(nameHashPtr); return None; } /* *---------------------------------------------------------------------- * * Tk_DefineBitmap -- * * This procedure associates a textual name with a binary bitmap * description, so that the name may be used to refer to the * bitmap in future calls to Tk_GetBitmap. * * Results: * A standard Tcl result. If an error occurs then TCL_ERROR is * returned and a message is left in interp->result. * * Side effects: * "Name" is entered into the bitmap table and may be used from * here on to refer to the given bitmap. * *---------------------------------------------------------------------- */ int Tk_DefineBitmap(interp, name, source, width, height) Tcl_Interp *interp; /* Interpreter to use for error reporting. */ Tk_Uid name; /* Name to use for bitmap. Must not already * be defined as a bitmap. */ char *source; /* Address of bits for bitmap. */ unsigned int width; /* Width of bitmap. */ unsigned int height; /* Height of bitmap. */ { int new; Tcl_HashEntry *predefHashPtr; PredefBitmap *predefPtr; if (!initialized) { BitmapInit(); } predefHashPtr = Tcl_CreateHashEntry(&predefTable, name, &new); if (!new) { Tcl_AppendResult(interp, "bitmap \"", name, "\" is already defined", (char *) NULL); return TCL_ERROR; } predefPtr = (PredefBitmap *) malloc(sizeof(PredefBitmap)); predefPtr->source = source; predefPtr->width = width; predefPtr->height = height; Tcl_SetHashValue(predefHashPtr, predefPtr); return TCL_OK; } /* *-------------------------------------------------------------- * * Tk_NameOfBitmap -- * * Given a bitmap, return a textual string identifying the * bitmap. * * Results: * The return value is the string name associated with bitmap. * * Side effects: * None. * *-------------------------------------------------------------- */ Tk_Uid Tk_NameOfBitmap(bitmap) Pixmap bitmap; /* Bitmap whose name is wanted. */ { Tcl_HashEntry *idHashPtr; TkBitmap *bitmapPtr; if (!initialized) { unknown: panic("Tk_NameOfBitmap received unknown bitmap argument"); } idHashPtr = Tcl_FindHashEntry(&idTable, (char *) bitmap); if (idHashPtr == NULL) { goto unknown; } bitmapPtr = (TkBitmap *) Tcl_GetHashValue(idHashPtr); return ((NameKey *) bitmapPtr->hashPtr->key.words)->name; } /* *-------------------------------------------------------------- * * Tk_SizeOfBitmap -- * * Given a bitmap managed by this module, returns the width * and height of the bitmap.. * * Results: * The words at *widthPtr and *heightPtr are filled in with * the dimenstions of bitmap. * * Side effects: * If bitmap isn't managed by this module then the procedure * panics.. * *-------------------------------------------------------------- */ void Tk_SizeOfBitmap(bitmap, widthPtr, heightPtr) Pixmap bitmap; /* Bitmap whose size is wanted. */ unsigned int *widthPtr; /* Store bitmap width here. */ unsigned int *heightPtr; /* Store bitmap height here. */ { Tcl_HashEntry *idHashPtr; TkBitmap *bitmapPtr; if (!initialized) { unknownBitmap: panic("Tk_SizeOfBitmap received unknown bitmap argument"); } idHashPtr = Tcl_FindHashEntry(&idTable, (char *) bitmap); if (idHashPtr == NULL) { goto unknownBitmap; } bitmapPtr = (TkBitmap *) Tcl_GetHashValue(idHashPtr); *widthPtr = bitmapPtr->width; *heightPtr = bitmapPtr->height; } /* *---------------------------------------------------------------------- * * Tk_FreeBitmap -- * * This procedure is called to release a bitmap allocated by * Tk_GetBitmap or TkGetBitmapFromData. * * Results: * None. * * Side effects: * The reference count associated with bitmap is decremented, and * it is officially deallocated if no-one is using it anymore. * *---------------------------------------------------------------------- */ void Tk_FreeBitmap(bitmap) Pixmap bitmap; /* Bitmap to be released. */ { Tcl_HashEntry *idHashPtr; register TkBitmap *bitmapPtr; if (!initialized) { panic("Tk_FreeBitmap called before Tk_GetBitmap"); } idHashPtr = Tcl_FindHashEntry(&idTable, (char *) bitmap); if (idHashPtr == NULL) { panic("Tk_FreeBitmap received unknown bitmap argument"); } bitmapPtr = (TkBitmap *) Tcl_GetHashValue(idHashPtr); bitmapPtr->refCount--; if (bitmapPtr->refCount == 0) { XFreePixmap(bitmapPtr->display, bitmapPtr->bitmap); Tcl_DeleteHashEntry(idHashPtr); Tcl_DeleteHashEntry(bitmapPtr->hashPtr); ckfree((char *) bitmapPtr); } } /* *---------------------------------------------------------------------- * * Tk_GetBitmapFromData -- * * Given a description of the bits for a bitmap, make a bitmap that * has the given properties. * * Results: * The return value is the X identifer for the desired bitmap * (a one-plane Pixmap), unless it couldn't be created properly. * In this case, None is returned and an error message is left in * interp->result. The caller should never modify the bitmap that * is returned, and should eventually call Tk_FreeBitmap when the * bitmap is no longer needed. * * Side effects: * The bitmap is added to an internal database with a reference count. * For each call to this procedure, there should eventually be a call * to Tk_FreeBitmap, so that the database can be cleaned up when bitmaps * aren't needed anymore. * *---------------------------------------------------------------------- */ /* ARGSUSED */ Pixmap Tk_GetBitmapFromData(interp, tkwin, source, width, height) Tcl_Interp *interp; /* Interpreter to use for error reporting. */ Tk_Window tkwin; /* Window in which bitmap will be used. */ char *source; /* Bitmap data for bitmap shape. */ unsigned int width, height; /* Dimensions of bitmap. */ { DataKey key; Tcl_HashEntry *dataHashPtr; Tk_Uid name = NULL; /* Initialization need only to prevent * compiler warning. */ int new; static autoNumber = 0; char string[20]; if (!initialized) { BitmapInit(); } key.source = source; key.width = width; key.height = height; dataHashPtr = Tcl_CreateHashEntry(&dataTable, (char *) &key, &new); if (!new) { name = (Tk_Uid) Tcl_GetHashValue(dataHashPtr); } else { autoNumber++; sprintf(string, "_tk%d", autoNumber); name = Tk_GetUid(string); Tcl_SetHashValue(dataHashPtr, name); if (Tk_DefineBitmap(interp, name, source, width, height) != TCL_OK) { Tcl_DeleteHashEntry(dataHashPtr); return TCL_ERROR; } } return Tk_GetBitmap(interp, tkwin, name); } /* *---------------------------------------------------------------------- * * BitmapInit -- * * Initialize the structures used for bitmap management. * * Results: * None. * * Side effects: * Read the code. * *---------------------------------------------------------------------- */ static void BitmapInit() { Tcl_Interp *dummy; dummy = Tcl_CreateInterp(); initialized = 1; Tcl_InitHashTable(&nameTable, sizeof(NameKey)/sizeof(int)); Tcl_InitHashTable(&dataTable, sizeof(DataKey)/sizeof(int)); Tcl_InitHashTable(&predefTable, TCL_ONE_WORD_KEYS); Tcl_InitHashTable(&idTable, TCL_ONE_WORD_KEYS); Tk_DefineBitmap(dummy, Tk_GetUid("gray50"), (char *)gray50_bits, gray50_width, gray50_height); Tk_DefineBitmap(dummy, Tk_GetUid("gray25"), (char *)gray25_bits, gray25_width, gray25_height); Tcl_DeleteInterp(dummy); } micropolis-activity/src/tk/tkcvwind.c0000664000076400007640000005337210724145723020247 0ustar simcitysimcity/* * tkCanvWind.c -- * * This file implements window items for canvas widgets. * * Copyright 1992 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkCanvWind.c,v 1.4 92/08/24 09:24:22 ouster Exp $ SPRITE (Berkeley)"; #endif #include #include #include "tkint.h" #include "tkcanvas.h" /* * The structure below defines the record for each window item. */ typedef struct WindowItem { Tk_Item header; /* Generic stuff that's the same for all * types. MUST BE FIRST IN STRUCTURE. */ double x, y; /* Coordinates of positioning point for * window. */ Tk_Window tkwin; /* Window associated with item. NULL means * window has been destroyed. */ int width; /* Width to use for window (<= 0 means use * window's requested width). */ int height; /* Width to use for window (<= 0 means use * window's requested width). */ Tk_Anchor anchor; /* Where to anchor window relative to * (x,y). */ Tk_Canvas *canvasPtr; /* Canvas containing this item. */ } WindowItem; /* * Information used for parsing configuration specs: */ static Tk_ConfigSpec configSpecs[] = { {TK_CONFIG_ANCHOR, "-anchor", (char *) NULL, (char *) NULL, "center", Tk_Offset(WindowItem, anchor), TK_CONFIG_DONT_SET_DEFAULT}, {TK_CONFIG_PIXELS, "-height", (char *) NULL, (char *) NULL, "0", Tk_Offset(WindowItem, height), TK_CONFIG_DONT_SET_DEFAULT}, {TK_CONFIG_CUSTOM, "-tags", (char *) NULL, (char *) NULL, (char *) NULL, 0, TK_CONFIG_NULL_OK, &tkCanvasTagsOption}, {TK_CONFIG_PIXELS, "-width", (char *) NULL, (char *) NULL, "0", Tk_Offset(WindowItem, width), TK_CONFIG_DONT_SET_DEFAULT}, {TK_CONFIG_WINDOW, "-window", (char *) NULL, (char *) NULL, (char *) NULL, Tk_Offset(WindowItem, tkwin), TK_CONFIG_NULL_OK}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; /* * Prototypes for procedures defined in this file: */ static void ComputeWindowBbox _ANSI_ARGS_((Tk_Canvas *canvasPtr, WindowItem *winItemPtr)); static int ConfigureWinItem _ANSI_ARGS_(( Tk_Canvas *canvasPtr, Tk_Item *itemPtr, int argc, char **argv, int flags)); static int CreateWinItem _ANSI_ARGS_((Tk_Canvas *canvasPtr, struct Tk_Item *itemPtr, int argc, char **argv)); static void DeleteWinItem _ANSI_ARGS_((Tk_Item *itemPtr)); static void DisplayWinItem _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, Drawable dst)); static void ScaleWinItem _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double originX, double originY, double scaleX, double scaleY)); static void TranslateWinItem _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double deltaX, double deltaY)); static int WinItemCoords _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, int argc, char **argv)); static void WinItemRequestProc _ANSI_ARGS_((ClientData clientData, Tk_Window tkwin)); static void WinItemStructureProc _ANSI_ARGS_(( ClientData clientData, XEvent *eventPtr)); static int WinItemToArea _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double *rectPtr)); static double WinItemToPoint _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double *pointPtr)); /* * The structures below defines the rectangle and oval item types * by means of procedures that can be invoked by generic item code. */ Tk_ItemType TkWindowType = { "window", /* name */ sizeof(WindowItem), /* itemSize */ CreateWinItem, /* createProc */ configSpecs, /* configSpecs */ ConfigureWinItem, /* configureProc */ WinItemCoords, /* coordProc */ DeleteWinItem, /* deleteProc */ DisplayWinItem, /* displayProc */ 1, /* alwaysRedraw */ WinItemToPoint, /* pointProc */ WinItemToArea, /* areaProc */ (Tk_ItemPostscriptProc *) NULL, /* postscriptProc */ ScaleWinItem, /* scaleProc */ TranslateWinItem, /* translateProc */ (Tk_ItemIndexProc *) NULL, /* indexProc */ (Tk_ItemCursorProc *) NULL, /* cursorProc */ (Tk_ItemSelectionProc *) NULL, /* selectionProc */ (Tk_ItemInsertProc *) NULL, /* insertProc */ (Tk_ItemDCharsProc *) NULL, /* dTextProc */ (Tk_ItemType *) NULL /* nextPtr */ }; /* *-------------------------------------------------------------- * * CreateWinItem -- * * This procedure is invoked to create a new window * item in a canvas. * * Results: * A standard Tcl return value. If an error occurred in * creating the item, then an error message is left in * canvasPtr->interp->result; in this case itemPtr is * left uninitialized, so it can be safely freed by the * caller. * * Side effects: * A new window item is created. * *-------------------------------------------------------------- */ static int CreateWinItem(canvasPtr, itemPtr, argc, argv) register Tk_Canvas *canvasPtr; /* Canvas to hold new item. */ Tk_Item *itemPtr; /* Record to hold new item; header * has been initialized by caller. */ int argc; /* Number of arguments in argv. */ char **argv; /* Arguments describing rectangle. */ { register WindowItem *winItemPtr = (WindowItem *) itemPtr; if (argc < 2) { Tcl_AppendResult(canvasPtr->interp, "wrong # args: should be \"", Tk_PathName(canvasPtr->tkwin), "\" create ", itemPtr->typePtr->name, " x y ?options?", (char *) NULL); return TCL_ERROR; } /* * Initialize item's record. */ winItemPtr->tkwin = NULL; winItemPtr->width = 0; winItemPtr->height = 0; winItemPtr->anchor = TK_ANCHOR_CENTER; winItemPtr->canvasPtr = canvasPtr; /* * Process the arguments to fill in the item record. */ if ((TkGetCanvasCoord(canvasPtr, argv[0], &winItemPtr->x) != TCL_OK) || (TkGetCanvasCoord(canvasPtr, argv[1], &winItemPtr->y) != TCL_OK)) { return TCL_ERROR; } if (ConfigureWinItem(canvasPtr, itemPtr, argc-2, argv+2, 0) != TCL_OK) { DeleteWinItem(itemPtr); return TCL_ERROR; } return TCL_OK; } /* *-------------------------------------------------------------- * * WinItemCoords -- * * This procedure is invoked to process the "coords" widget * command on window items. See the user documentation for * details on what it does. * * Results: * Returns TCL_OK or TCL_ERROR, and sets canvasPtr->interp->result. * * Side effects: * The coordinates for the given item may be changed. * *-------------------------------------------------------------- */ static int WinItemCoords(canvasPtr, itemPtr, argc, argv) register Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item whose coordinates are to be * read or modified. */ int argc; /* Number of coordinates supplied in * argv. */ char **argv; /* Array of coordinates: x1, y1, * x2, y2, ... */ { register WindowItem *winItemPtr = (WindowItem *) itemPtr; if (argc == 0) { sprintf(canvasPtr->interp->result, "%g %g", winItemPtr->x, winItemPtr->y); } else if (argc == 2) { if ((TkGetCanvasCoord(canvasPtr, argv[0], &winItemPtr->x) != TCL_OK) || (TkGetCanvasCoord(canvasPtr, argv[1], &winItemPtr->y) != TCL_OK)) { return TCL_ERROR; } ComputeWindowBbox(canvasPtr, winItemPtr); } else { sprintf(canvasPtr->interp->result, "wrong # coordinates: expected 0 or 2, got %d", argc); return TCL_ERROR; } return TCL_OK; } /* *-------------------------------------------------------------- * * ConfigureWinItem -- * * This procedure is invoked to configure various aspects * of a window item, such as its anchor position. * * Results: * A standard Tcl result code. If an error occurs, then * an error message is left in canvasPtr->interp->result. * * Side effects: * Configuration information may be set for itemPtr. * *-------------------------------------------------------------- */ static int ConfigureWinItem(canvasPtr, itemPtr, argc, argv, flags) Tk_Canvas *canvasPtr; /* Canvas containing itemPtr. */ Tk_Item *itemPtr; /* Window item to reconfigure. */ int argc; /* Number of elements in argv. */ char **argv; /* Arguments describing things to configure. */ int flags; /* Flags to pass to Tk_ConfigureWidget. */ { register WindowItem *winItemPtr = (WindowItem *) itemPtr; Tk_Window oldWindow; oldWindow = winItemPtr->tkwin; if (Tk_ConfigureWidget(canvasPtr->interp, canvasPtr->tkwin, configSpecs, argc, argv, (char *) winItemPtr, flags) != TCL_OK) { return TCL_ERROR; } /* * A few of the options require additional processing. */ if (oldWindow != winItemPtr->tkwin) { if (oldWindow != NULL) { Tk_DeleteEventHandler(oldWindow, StructureNotifyMask, WinItemStructureProc, (ClientData) winItemPtr); Tk_ManageGeometry(oldWindow, (Tk_GeometryProc *) NULL, (ClientData) NULL); Tk_UnmapWindow(oldWindow); } if (winItemPtr->tkwin != NULL) { Tk_Window ancestor, parent; /* * Make sure that the canvas is either the parent of the * window associated with the item or a descendant of that * parent. Also, don't allow a top-level window to be * managed inside a canvas. */ parent = Tk_Parent(winItemPtr->tkwin); for (ancestor = canvasPtr->tkwin; ; ancestor = Tk_Parent(ancestor)) { if (ancestor == parent) { break; } if (((Tk_FakeWin *) (ancestor))->flags & TK_TOP_LEVEL) { badWindow: Tcl_AppendResult(canvasPtr->interp, "can't use ", Tk_PathName(winItemPtr->tkwin), " in a window item of this canvas", (char *) NULL); winItemPtr->tkwin = NULL; return TCL_ERROR; } } if (((Tk_FakeWin *) (winItemPtr->tkwin))->flags & TK_TOP_LEVEL) { goto badWindow; } if (winItemPtr->tkwin == canvasPtr->tkwin) { goto badWindow; } Tk_CreateEventHandler(winItemPtr->tkwin, StructureNotifyMask, WinItemStructureProc, (ClientData) winItemPtr); Tk_ManageGeometry(winItemPtr->tkwin, WinItemRequestProc, (ClientData) winItemPtr); } } ComputeWindowBbox(canvasPtr, winItemPtr); return TCL_OK; } /* *-------------------------------------------------------------- * * DeleteWinItem -- * * This procedure is called to clean up the data structure * associated with a window item. * * Results: * None. * * Side effects: * Resources associated with itemPtr are released. * *-------------------------------------------------------------- */ static void DeleteWinItem(itemPtr) Tk_Item *itemPtr; /* Item that is being deleted. */ { register WindowItem *winItemPtr = (WindowItem *) itemPtr; if (winItemPtr->tkwin != NULL) { Tk_DeleteEventHandler(winItemPtr->tkwin, StructureNotifyMask, WinItemStructureProc, (ClientData) winItemPtr); Tk_ManageGeometry(winItemPtr->tkwin, (Tk_GeometryProc *) NULL, (ClientData) NULL); Tk_UnmapWindow(winItemPtr->tkwin); } } /* *-------------------------------------------------------------- * * ComputeWindowBbox -- * * This procedure is invoked to compute the bounding box of * all the pixels that may be drawn as part of a window item. * This procedure is where the child window's placement is * computed. * * Results: * None. * * Side effects: * The fields x1, y1, x2, and y2 are updated in the header * for itemPtr. * *-------------------------------------------------------------- */ /* ARGSUSED */ static void ComputeWindowBbox(canvasPtr, winItemPtr) Tk_Canvas *canvasPtr; /* Canvas that contains item. */ register WindowItem *winItemPtr; /* Item whose bbox is to be * recomputed. */ { int width, height, x, y; x = winItemPtr->x + 0.5; y = winItemPtr->y + 0.5; if (winItemPtr->tkwin == NULL) { winItemPtr->header.x1 = winItemPtr->header.x2 = x; winItemPtr->header.y1 = winItemPtr->header.y2 = y; return; } /* * Compute dimensions of window. */ width = winItemPtr->width; if (width <= 0) { width = Tk_ReqWidth(winItemPtr->tkwin); if (width <= 0) { width = 1; } } height = winItemPtr->height; if (height <= 0) { height = Tk_ReqHeight(winItemPtr->tkwin); if (height <= 0) { height = 1; } } /* * Compute location of window, using anchor information. */ switch (winItemPtr->anchor) { case TK_ANCHOR_N: x -= width/2; break; case TK_ANCHOR_NE: x -= width; break; case TK_ANCHOR_E: x -= width; y -= height/2; break; case TK_ANCHOR_SE: x -= width; y -= height; break; case TK_ANCHOR_S: x -= width/2; y -= height; break; case TK_ANCHOR_SW: y -= height; break; case TK_ANCHOR_W: y -= height/2; break; case TK_ANCHOR_NW: break; case TK_ANCHOR_CENTER: x -= width/2; y -= height/2; break; } /* * Store the information in the item header. */ winItemPtr->header.x1 = x; winItemPtr->header.y1 = y; winItemPtr->header.x2 = x + width; winItemPtr->header.y2 = y + height; } /* *-------------------------------------------------------------- * * DisplayWinItem -- * * This procedure is invoked to "draw" a window item in a given * drawable. Since the window draws itself, we needn't do any * actual redisplay here. However, this procedure takes care * of actually repositioning the child window so that it occupies * the correct screen position. * * Results: * None. * * Side effects: * The child window's position may get changed. * *-------------------------------------------------------------- */ /* ARGSUSED */ static void DisplayWinItem(canvasPtr, itemPtr, drawable) register Tk_Canvas *canvasPtr; /* Canvas that contains item. */ Tk_Item *itemPtr; /* Item to be displayed. */ Drawable drawable; /* Pixmap or window in which to draw * item. */ { register WindowItem *winItemPtr = (WindowItem *) itemPtr; int x,y, width, height; Tk_Window ancestor, parent; if (winItemPtr->tkwin == NULL) { return; } x = winItemPtr->header.x1 - canvasPtr->xOrigin; y = winItemPtr->header.y1 - canvasPtr->yOrigin; width = winItemPtr->header.x2 - winItemPtr->header.x1; height = winItemPtr->header.y2 - winItemPtr->header.y1; /* * If the canvas isn't the parent of the window, then translate the * coordinates from those of the canvas to those of the window's * parent. */ parent = Tk_Parent(winItemPtr->tkwin); for (ancestor = canvasPtr->tkwin; ancestor != parent; ancestor = Tk_Parent(ancestor)) { x += Tk_X(ancestor) + Tk_Changes(ancestor)->border_width; y += Tk_Y(ancestor) + Tk_Changes(ancestor)->border_width; } /* * Reconfigure the window if it isn't already in the correct place. */ if ((x != Tk_X(winItemPtr->tkwin)) || (y != Tk_Y(winItemPtr->tkwin)) || (width != Tk_Width(winItemPtr->tkwin)) || (height != Tk_Height(winItemPtr->tkwin))) { Tk_MoveResizeWindow(winItemPtr->tkwin, x, y, (unsigned int) width, (unsigned int) height); } if (!Tk_IsMapped(winItemPtr->tkwin)) { Tk_MapWindow(winItemPtr->tkwin); } } /* *-------------------------------------------------------------- * * WinItemToPoint -- * * Computes the distance from a given point to a given * rectangle, in canvas units. * * Results: * The return value is 0 if the point whose x and y coordinates * are coordPtr[0] and coordPtr[1] is inside the window. If the * point isn't inside the window then the return value is the * distance from the point to the window. * * Side effects: * None. * *-------------------------------------------------------------- */ /* ARGSUSED */ static double WinItemToPoint(canvasPtr, itemPtr, pointPtr) Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item to check against point. */ double *pointPtr; /* Pointer to x and y coordinates. */ { register WindowItem *winItemPtr = (WindowItem *) itemPtr; double x1, x2, y1, y2, xDiff, yDiff; x1 = winItemPtr->header.x1; y1 = winItemPtr->header.y1; x2 = winItemPtr->header.x2; y2 = winItemPtr->header.y2; /* * Point is outside rectangle. */ if (pointPtr[0] < x1) { xDiff = x1 - pointPtr[0]; } else if (pointPtr[0] > x2) { xDiff = pointPtr[0] - x2; } else { xDiff = 0; } if (pointPtr[1] < y1) { yDiff = y1 - pointPtr[1]; } else if (pointPtr[1] > y2) { yDiff = pointPtr[1] - y2; } else { yDiff = 0; } return hypot(xDiff, yDiff); } /* *-------------------------------------------------------------- * * WinItemToArea -- * * This procedure is called to determine whether an item * lies entirely inside, entirely outside, or overlapping * a given rectangle. * * Results: * -1 is returned if the item is entirely outside the area * given by rectPtr, 0 if it overlaps, and 1 if it is entirely * inside the given area. * * Side effects: * None. * *-------------------------------------------------------------- */ /* ARGSUSED */ static int WinItemToArea(canvasPtr, itemPtr, rectPtr) Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item to check against rectangle. */ double *rectPtr; /* Pointer to array of four coordinates * (x1, y1, x2, y2) describing rectangular * area. */ { register WindowItem *winItemPtr = (WindowItem *) itemPtr; if ((rectPtr[2] <= winItemPtr->header.x1) || (rectPtr[0] >= winItemPtr->header.x2) || (rectPtr[3] <= winItemPtr->header.y1) || (rectPtr[1] >= winItemPtr->header.y2)) { return -1; } if ((rectPtr[0] <= winItemPtr->header.x1) && (rectPtr[1] <= winItemPtr->header.y1) && (rectPtr[2] >= winItemPtr->header.x2) && (rectPtr[3] >= winItemPtr->header.y2)) { return 1; } return 0; } /* *-------------------------------------------------------------- * * ScaleWinItem -- * * This procedure is invoked to rescale a rectangle or oval * item. * * Results: * None. * * Side effects: * The rectangle or oval referred to by itemPtr is rescaled * so that the following transformation is applied to all * point coordinates: * x' = originX + scaleX*(x-originX) * y' = originY + scaleY*(y-originY) * *-------------------------------------------------------------- */ static void ScaleWinItem(canvasPtr, itemPtr, originX, originY, scaleX, scaleY) Tk_Canvas *canvasPtr; /* Canvas containing rectangle. */ Tk_Item *itemPtr; /* Rectangle to be scaled. */ double originX, originY; /* Origin about which to scale rect. */ double scaleX; /* Amount to scale in X direction. */ double scaleY; /* Amount to scale in Y direction. */ { register WindowItem *winItemPtr = (WindowItem *) itemPtr; winItemPtr->x = originX + scaleX*(winItemPtr->x - originX); winItemPtr->y = originY + scaleY*(winItemPtr->y - originY); if (winItemPtr->width > 0) { winItemPtr->width = scaleY*winItemPtr->width; } if (winItemPtr->height > 0) { winItemPtr->height = scaleY*winItemPtr->height; } ComputeWindowBbox(canvasPtr, winItemPtr); } /* *-------------------------------------------------------------- * * TranslateWinItem -- * * This procedure is called to move a rectangle or oval by a * given amount. * * Results: * None. * * Side effects: * The position of the rectangle or oval is offset by * (xDelta, yDelta), and the bounding box is updated in the * generic part of the item structure. * *-------------------------------------------------------------- */ static void TranslateWinItem(canvasPtr, itemPtr, deltaX, deltaY) Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item that is being moved. */ double deltaX, deltaY; /* Amount by which item is to be * moved. */ { register WindowItem *winItemPtr = (WindowItem *) itemPtr; winItemPtr->x += deltaX; winItemPtr->y += deltaY; ComputeWindowBbox(canvasPtr, winItemPtr); } /* *-------------------------------------------------------------- * * WinItemStructureProc -- * * This procedure is invoked whenever StructureNotify events * occur for a window that's managed as part of a canvas window * item. This procudure's only purpose is to clean up when * windows are deleted. * * Results: * None. * * Side effects: * The window is disassociated from the window item when it is * deleted. * *-------------------------------------------------------------- */ static void WinItemStructureProc(clientData, eventPtr) ClientData clientData; /* Pointer to record describing window item. */ XEvent *eventPtr; /* Describes what just happened. */ { register WindowItem *winItemPtr = (WindowItem *) clientData; if (eventPtr->type == DestroyNotify) { winItemPtr->tkwin = NULL; } } /* *-------------------------------------------------------------- * * WinItemRequestProc -- * * This procedure is invoked whenever a window that's associated * with a window canvas item changes its requested dimensions. * * Results: * None. * * Side effects: * The size and location on the screen of the window may change, * depending on the options specified for the window item. * *-------------------------------------------------------------- */ /* ARGSUSED */ static void WinItemRequestProc(clientData, tkwin) ClientData clientData; /* Pointer to record for window item. */ Tk_Window tkwin; /* Window that changed its desired * size. */ { WindowItem *winItemPtr = (WindowItem *) clientData; ComputeWindowBbox(winItemPtr->canvasPtr, winItemPtr); DisplayWinItem(winItemPtr->canvasPtr, (Tk_Item *) winItemPtr, (Drawable) None); } micropolis-activity/src/tk/tkbutton.c0000664000076400007640000014113210724145723020260 0ustar simcitysimcity/* * tkButton.c -- * * This module implements a collection of button-like * widgets for the Tk toolkit. The widgets implemented * include labels, buttons, check buttons, and radio * buttons. * * Copyright 1990-1992 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkButton.c,v 1.69 92/08/21 11:42:47 ouster Exp $ SPRITE (Berkeley)"; #endif #include "default.h" #include "tkconfig.h" #include "tkint.h" #include /* * A data structure of the following type is kept for each * widget managed by this file: */ typedef struct { Tk_Window tkwin; /* Window that embodies the button. NULL * means that the window has been destroyed. */ Tcl_Interp *interp; /* Interpreter associated with button. */ int type; /* Type of widget: restricts operations * that may be performed on widget. See * below for possible values. */ /* * Information about what's in the button. */ char *text; /* Text to display in button (malloc'ed) * or NULL. */ int textLength; /* # of characters in text. */ char *textVarName; /* Name of variable (malloc'ed) or NULL. * If non-NULL, button displays the contents * of this variable. */ Pixmap bitmap; /* Bitmap to display or None. If not None * then text and textVar are ignored. */ /* * Information used when displaying widget: */ Tk_Uid state; /* State of button for display purposes: * normal, active, or disabled. */ Tk_3DBorder normalBorder; /* Structure used to draw 3-D * border and background when window * isn't active. NULL means no such * border exists. */ Tk_3DBorder activeBorder; /* Structure used to draw 3-D * border and background when window * is active. NULL means no such * border exists. */ int borderWidth; /* Width of border. */ int relief; /* 3-d effect: TK_RELIEF_RAISED, etc. */ XFontStruct *fontPtr; /* Information about text font, or NULL. */ XColor *normalFg; /* Foreground color in normal mode. */ XColor *activeFg; /* Foreground color in active mode. NULL * means use normalFg instead. */ XColor *disabledFg; /* Foreground color when disabled. NULL * means use normalFg with a 50% stipple * instead. */ GC normalTextGC; /* GC for drawing text in normal mode. Also * used to copy from off-screen pixmap onto * screen. */ GC activeTextGC; /* GC for drawing text in active mode (NULL * means use normalTextGC). */ Pixmap gray; /* Pixmap for displaying disabled text if * disabledFg is NULL. */ GC disabledGC; /* Used to produce disabled effect. If * disabledFg isn't NULL, this GC is used to * draw button text or icon. Otherwise * text or icon is drawn with normalGC and * this GC is used to stipple background * across it. */ int leftBearing; /* Amount text sticks left from its origin, * in pixels. */ int rightBearing; /* Amount text sticks right from its origin. */ int width, height; /* If > 0, these specify dimensions to request * for window, in characters for text and in * pixels for bitmaps. In this case the actual * size of the text string or bitmap is * ignored in computing desired window size. */ int padX, padY; /* Extra space around text or bitmap (pixels * on each side). */ Tk_Anchor anchor; /* Where text/bitmap should be displayed * inside button region. */ XColor *selectorFg; /* Color for selector. */ GC selectorGC; /* For drawing highlight when this button * is in selected state. */ int selectorSpace; /* Horizontal space (in pixels) allocated for * display of selector. */ int selectorDiameter; /* Diameter of selector, in pixels. */ /* * For check and radio buttons, the fields below are used * to manage the variable indicating the button's state. */ char *selVarName; /* Name of variable used to control selected * state of button. Malloc'ed (if * not NULL). */ char *onValue; /* Value to store in variable when * this button is selected. Malloc'ed (if * not NULL). */ char *offValue; /* Value to store in variable when this * button isn't selected. Malloc'ed * (if not NULL). Valid only for check * buttons. */ /* * Miscellaneous information: */ Cursor cursor; /* Current cursor for window, or None. */ char *command; /* Command to execute when button is * invoked; valid for buttons only. * If not NULL, it's malloc-ed. */ int flags; /* Various flags; see below for * definitions. */ Tk_TimerToken updateTimerToken; /* Added by Don to optimize rapid * updates. */ } Button; /* * Possible "type" values for buttons. These are the kinds of * widgets supported by this file. The ordering of the type * numbers is significant: greater means more features and is * used in the code. */ #define TYPE_LABEL 0 #define TYPE_BUTTON 1 #define TYPE_CHECK_BUTTON 2 #define TYPE_RADIO_BUTTON 3 /* * Class names for buttons, indexed by one of the type values above. */ static char *classNames[] = {"Label", "Button", "CheckButton", "RadioButton"}; /* * Flag bits for buttons: * * REDRAW_PENDING: Non-zero means a DoWhenIdle handler * has already been queued to redraw * this window. * SELECTED: Non-zero means this button is selected, * so special highlight should be drawn. */ #define REDRAW_PENDING 1 #define SELECTED 2 /* * Mask values used to selectively enable entries in the * configuration specs: */ #define LABEL_MASK TK_CONFIG_USER_BIT #define BUTTON_MASK TK_CONFIG_USER_BIT << 1 #define CHECK_BUTTON_MASK TK_CONFIG_USER_BIT << 2 #define RADIO_BUTTON_MASK TK_CONFIG_USER_BIT << 3 #define ALL_MASK (LABEL_MASK | BUTTON_MASK \ | CHECK_BUTTON_MASK | RADIO_BUTTON_MASK) static int configFlags[] = {LABEL_MASK, BUTTON_MASK, CHECK_BUTTON_MASK, RADIO_BUTTON_MASK}; /* * Information used for parsing configuration specs: */ static Tk_ConfigSpec configSpecs[] = { {TK_CONFIG_BORDER, "-activebackground", "activeBackground", "Foreground", DEF_BUTTON_ACTIVE_BG_COLOR, Tk_Offset(Button, activeBorder), BUTTON_MASK|CHECK_BUTTON_MASK|RADIO_BUTTON_MASK |TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-activebackground", "activeBackground", "Foreground", DEF_BUTTON_ACTIVE_BG_MONO, Tk_Offset(Button, activeBorder), BUTTON_MASK|CHECK_BUTTON_MASK|RADIO_BUTTON_MASK |TK_CONFIG_MONO_ONLY}, {TK_CONFIG_COLOR, "-activeforeground", "activeForeground", "Background", DEF_BUTTON_ACTIVE_FG_COLOR, Tk_Offset(Button, activeFg), BUTTON_MASK|CHECK_BUTTON_MASK|RADIO_BUTTON_MASK |TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_COLOR, "-activeforeground", "activeForeground", "Background", DEF_BUTTON_ACTIVE_FG_MONO, Tk_Offset(Button, activeFg), BUTTON_MASK|CHECK_BUTTON_MASK|RADIO_BUTTON_MASK |TK_CONFIG_MONO_ONLY}, {TK_CONFIG_ANCHOR, "-anchor", "anchor", "Anchor", DEF_BUTTON_ANCHOR, Tk_Offset(Button, anchor), ALL_MASK}, {TK_CONFIG_BORDER, "-background", "background", "Background", DEF_BUTTON_BG_COLOR, Tk_Offset(Button, normalBorder), ALL_MASK | TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-background", "background", "Background", DEF_BUTTON_BG_MONO, Tk_Offset(Button, normalBorder), ALL_MASK | TK_CONFIG_MONO_ONLY}, {TK_CONFIG_SYNONYM, "-bd", "borderWidth", (char *) NULL, (char *) NULL, 0, ALL_MASK}, {TK_CONFIG_SYNONYM, "-bg", "background", (char *) NULL, (char *) NULL, 0, ALL_MASK}, #if defined(USE_XPM3) {TK_CONFIG_PIXMAP, "-bitmap", "bitmap", "Bitmap", DEF_BUTTON_BITMAP, Tk_Offset(Button, bitmap), ALL_MASK|TK_CONFIG_NULL_OK}, #else {TK_CONFIG_BITMAP, "-bitmap", "bitmap", "Bitmap", DEF_BUTTON_BITMAP, Tk_Offset(Button, bitmap), ALL_MASK|TK_CONFIG_NULL_OK}, #endif {TK_CONFIG_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", DEF_BUTTON_BORDER_WIDTH, Tk_Offset(Button, borderWidth), ALL_MASK}, {TK_CONFIG_STRING, "-command", "command", "Command", DEF_BUTTON_COMMAND, Tk_Offset(Button, command), BUTTON_MASK|CHECK_BUTTON_MASK|RADIO_BUTTON_MASK}, {TK_CONFIG_ACTIVE_CURSOR, "-cursor", "cursor", "Cursor", DEF_BUTTON_CURSOR, Tk_Offset(Button, cursor), ALL_MASK|TK_CONFIG_NULL_OK}, {TK_CONFIG_COLOR, "-disabledforeground", "disabledForeground", "DisabledForeground", DEF_BUTTON_DISABLED_FG_COLOR, Tk_Offset(Button, disabledFg), BUTTON_MASK|CHECK_BUTTON_MASK |RADIO_BUTTON_MASK|TK_CONFIG_COLOR_ONLY|TK_CONFIG_NULL_OK}, {TK_CONFIG_COLOR, "-disabledforeground", "disabledForeground", "DisabledForeground", DEF_BUTTON_DISABLED_FG_MONO, Tk_Offset(Button, disabledFg), BUTTON_MASK|CHECK_BUTTON_MASK |RADIO_BUTTON_MASK|TK_CONFIG_MONO_ONLY|TK_CONFIG_NULL_OK}, {TK_CONFIG_SYNONYM, "-fg", "foreground", (char *) NULL, (char *) NULL, 0, ALL_MASK}, {TK_CONFIG_FONT, "-font", "font", "Font", DEF_BUTTON_FONT, Tk_Offset(Button, fontPtr), ALL_MASK}, {TK_CONFIG_COLOR, "-foreground", "foreground", "Foreground", DEF_BUTTON_FG, Tk_Offset(Button, normalFg), ALL_MASK}, {TK_CONFIG_INT, "-height", "height", "Height", DEF_BUTTON_HEIGHT, Tk_Offset(Button, height), ALL_MASK}, {TK_CONFIG_STRING, "-offvalue", "offValue", "Value", DEF_BUTTON_OFF_VALUE, Tk_Offset(Button, offValue), CHECK_BUTTON_MASK}, {TK_CONFIG_STRING, "-onvalue", "onValue", "Value", DEF_BUTTON_ON_VALUE, Tk_Offset(Button, onValue), CHECK_BUTTON_MASK}, {TK_CONFIG_PIXELS, "-padx", "padX", "Pad", DEF_BUTTON_PADX, Tk_Offset(Button, padX), ALL_MASK}, {TK_CONFIG_PIXELS, "-pady", "padY", "Pad", DEF_BUTTON_PADY, Tk_Offset(Button, padY), ALL_MASK}, {TK_CONFIG_RELIEF, "-relief", "relief", "Relief", DEF_BUTTON_RELIEF, Tk_Offset(Button, relief), BUTTON_MASK|CHECK_BUTTON_MASK|RADIO_BUTTON_MASK}, {TK_CONFIG_RELIEF, "-relief", "relief", "Relief", DEF_LABEL_RELIEF, Tk_Offset(Button, relief), LABEL_MASK}, {TK_CONFIG_COLOR, "-selector", "selector", "Foreground", DEF_BUTTON_SELECTOR_COLOR, Tk_Offset(Button, selectorFg), CHECK_BUTTON_MASK|RADIO_BUTTON_MASK|TK_CONFIG_COLOR_ONLY |TK_CONFIG_NULL_OK}, {TK_CONFIG_COLOR, "-selector", "selector", "Foreground", DEF_BUTTON_SELECTOR_MONO, Tk_Offset(Button, selectorFg), CHECK_BUTTON_MASK|RADIO_BUTTON_MASK|TK_CONFIG_MONO_ONLY |TK_CONFIG_NULL_OK}, {TK_CONFIG_UID, "-state", "state", "State", DEF_BUTTON_STATE, Tk_Offset(Button, state), BUTTON_MASK|CHECK_BUTTON_MASK|RADIO_BUTTON_MASK}, {TK_CONFIG_STRING, "-text", "text", "Text", DEF_BUTTON_TEXT, Tk_Offset(Button, text), ALL_MASK}, {TK_CONFIG_STRING, "-textvariable", "textVariable", "Variable", DEF_BUTTON_TEXT_VARIABLE, Tk_Offset(Button, textVarName), ALL_MASK|TK_CONFIG_NULL_OK}, {TK_CONFIG_STRING, "-value", "value", "Value", DEF_BUTTON_VALUE, Tk_Offset(Button, onValue), RADIO_BUTTON_MASK}, {TK_CONFIG_STRING, "-variable", "variable", "Variable", DEF_RADIOBUTTON_VARIABLE, Tk_Offset(Button, selVarName), RADIO_BUTTON_MASK}, {TK_CONFIG_STRING, "-variable", "variable", "Variable", DEF_CHECKBUTTON_VARIABLE, Tk_Offset(Button, selVarName), CHECK_BUTTON_MASK}, {TK_CONFIG_INT, "-width", "width", "Width", DEF_BUTTON_WIDTH, Tk_Offset(Button, width), ALL_MASK}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; /* * String to print out in error messages, identifying options for * widget commands for different types of labels or buttons: */ static char *optionStrings[] = { "configure", "activate, configure, deactivate, flash, or invoke", "activate, configure, deactivate, deselect, flash, invoke, select, or toggle", "activate, configure, deactivate, deselect, flash, invoke, or select" }; static int ButtonUpdateTime = 200; // Added by Don. /* * Forward declarations for procedures defined later in this file: */ static void ButtonEventProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); static char * ButtonTextVarProc _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, char *name1, char *name2, int flags)); static char * ButtonVarProc _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, char *name1, char *name2, int flags)); static int ButtonWidgetCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); static void ComputeButtonGeometry _ANSI_ARGS_((Button *butPtr)); static int ConfigureButton _ANSI_ARGS_((Tcl_Interp *interp, Button *butPtr, int argc, char **argv, int flags)); static void DestroyButton _ANSI_ARGS_((ClientData clientData)); static void DisplayButton _ANSI_ARGS_((ClientData clientData)); static int InvokeButton _ANSI_ARGS_((Button *butPtr)); /* *-------------------------------------------------------------- * * Tk_ButtonCmd -- * * This procedure is invoked to process the "button", "label", * "radiobutton", and "checkbutton" Tcl commands. See the * user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ int Tk_ButtonCmd(clientData, interp, argc, argv) ClientData clientData; /* Main window associated with * interpreter. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { register Button *butPtr; int type; Tk_Window tkwin = (Tk_Window) clientData; Tk_Window new; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " pathName ?options?\"", (char *) NULL); return TCL_ERROR; } switch (argv[0][0]) { case 'l': type = TYPE_LABEL; break; case 'b': type = TYPE_BUTTON; break; case 'c': type = TYPE_CHECK_BUTTON; break; case 'r': type = TYPE_RADIO_BUTTON; break; default: sprintf(interp->result, "unknown button-creation command \"%.50s\""); return TCL_ERROR; } /* * Create the new window. */ new = Tk_CreateWindowFromPath(interp, tkwin, argv[1], (char *) NULL); if (new == NULL) { return TCL_ERROR; } /* * Initialize the data structure for the button. */ butPtr = (Button *) ckalloc(sizeof(Button)); butPtr->tkwin = new; butPtr->interp = interp; butPtr->type = type; butPtr->text = NULL; butPtr->textVarName = NULL; butPtr->bitmap = None; butPtr->state = tkNormalUid; butPtr->normalBorder = NULL; butPtr->activeBorder = NULL; butPtr->borderWidth = 0; butPtr->relief = TK_RELIEF_FLAT; butPtr->fontPtr = NULL; butPtr->normalFg = NULL; butPtr->activeFg = NULL; butPtr->disabledFg = NULL; butPtr->normalTextGC = None; butPtr->activeTextGC = None; butPtr->gray = None; butPtr->disabledGC = None; butPtr->selectorFg = NULL; butPtr->selectorGC = None; butPtr->selVarName = NULL; butPtr->onValue = NULL; butPtr->offValue = NULL; butPtr->cursor = None; butPtr->command = NULL; butPtr->flags = 0; butPtr->updateTimerToken = 0; Tk_SetClass(new, classNames[type]); //fprintf(stderr, "ButtonWidgetCmd Made %s %s\n", Tk_Class(butPtr->tkwin), Tk_PathName(butPtr->tkwin)); Tk_CreateEventHandler(butPtr->tkwin, ExposureMask|StructureNotifyMask, ButtonEventProc, (ClientData) butPtr); Tcl_CreateCommand(interp, Tk_PathName(butPtr->tkwin), ButtonWidgetCmd, (ClientData) butPtr, (void (*)()) NULL); if (ConfigureButton(interp, butPtr, argc-2, argv+2, configFlags[type]) != TCL_OK) { Tk_DestroyWindow(butPtr->tkwin); return TCL_ERROR; } interp->result = Tk_PathName(butPtr->tkwin); return TCL_OK; } /* *-------------------------------------------------------------- * * ButtonWidgetCmd -- * * This procedure is invoked to process the Tcl command * that corresponds to a widget managed by this module. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ static int ButtonWidgetCmd(clientData, interp, argc, argv) ClientData clientData; /* Information about button widget. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { register Button *butPtr = (Button *) clientData; int result = TCL_OK; int length; char c; if (argc < 2) { sprintf(interp->result, "wrong # args: should be \"%.50s option [arg arg ...]\"", argv[0]); return TCL_ERROR; } Tk_Preserve((ClientData) butPtr); c = argv[1][0]; length = strlen(argv[1]); if ((c == 'a') && (strncmp(argv[1], "activate", length) == 0) && (butPtr->type != TYPE_LABEL)) { if (argc > 2) { sprintf(interp->result, "wrong # args: should be \"%.50s activate\"", argv[0]); goto error; } if (butPtr->state != tkDisabledUid) { butPtr->state = tkActiveUid; Tk_SetBackgroundFromBorder(butPtr->tkwin, butPtr->activeBorder); goto redisplay; } } else if ((c == 'c') && (strncmp(argv[1], "configure", length) == 0)) { if (argc == 2) { result = Tk_ConfigureInfo(interp, butPtr->tkwin, configSpecs, (char *) butPtr, (char *) NULL, configFlags[butPtr->type]); } else if (argc == 3) { result = Tk_ConfigureInfo(interp, butPtr->tkwin, configSpecs, (char *) butPtr, argv[2], configFlags[butPtr->type]); } else { result = ConfigureButton(interp, butPtr, argc-2, argv+2, configFlags[butPtr->type] | TK_CONFIG_ARGV_ONLY); } } else if ((c == 'd') && (strncmp(argv[1], "deactivate", length) == 0) && (length > 2) && (butPtr->type != TYPE_LABEL)) { if (argc > 2) { sprintf(interp->result, "wrong # args: should be \"%.50s deactivate\"", argv[0]); goto error; } if (butPtr->state != tkDisabledUid) { butPtr->state = tkNormalUid; Tk_SetBackgroundFromBorder(butPtr->tkwin, butPtr->normalBorder); goto redisplay; } } else if ((c == 'd') && (strncmp(argv[1], "deselect", length) == 0) && (length > 2) && (butPtr->type >= TYPE_CHECK_BUTTON)) { if (argc > 2) { sprintf(interp->result, "wrong # args: should be \"%.50s deselect\"", argv[0]); goto error; } if (butPtr->type == TYPE_CHECK_BUTTON) { Tcl_SetVar(interp, butPtr->selVarName, butPtr->offValue, TCL_GLOBAL_ONLY); } else if (butPtr->flags & SELECTED) { Tcl_SetVar(interp, butPtr->selVarName, "", TCL_GLOBAL_ONLY); } } else if ((c == 'f') && (strncmp(argv[1], "flash", length) == 0) && (butPtr->type != TYPE_LABEL)) { int i; if (argc > 2) { sprintf(interp->result, "wrong # args: should be \"%.50s flash\"", argv[0]); goto error; } if (butPtr->state != tkDisabledUid) { for (i = 0; i < 4; i++) { butPtr->state = (butPtr->state == tkNormalUid) ? tkActiveUid : tkNormalUid; Tk_SetBackgroundFromBorder(butPtr->tkwin, (butPtr->state == tkActiveUid) ? butPtr->activeBorder : butPtr->normalBorder); DisplayButton((ClientData) butPtr); XFlush(Tk_Display(butPtr->tkwin)); Tk_Sleep(50); } } } else if ((c == 'i') && (strncmp(argv[1], "invoke", length) == 0) && (butPtr->type > TYPE_LABEL)) { if (argc > 2) { sprintf(interp->result, "wrong # args: should be \"%.50s invoke\"", argv[0]); goto error; } if (butPtr->state != tkDisabledUid) { result = InvokeButton(butPtr); } } else if ((c == 's') && (strncmp(argv[1], "select", length) == 0) && (butPtr->type >= TYPE_CHECK_BUTTON)) { if (argc > 2) { sprintf(interp->result, "wrong # args: should be \"%.50s select\"", argv[0]); goto error; } Tcl_SetVar(interp, butPtr->selVarName, butPtr->onValue, TCL_GLOBAL_ONLY); } else if ((c == 't') && (strncmp(argv[1], "toggle", length) == 0) && (length >= 2) && (butPtr->type == TYPE_CHECK_BUTTON)) { if (argc > 2) { sprintf(interp->result, "wrong # args: should be \"%.50s select\"", argv[0]); goto error; } if (butPtr->flags & SELECTED) { Tcl_SetVar(interp, butPtr->selVarName, butPtr->offValue, TCL_GLOBAL_ONLY); } else { Tcl_SetVar(interp, butPtr->selVarName, butPtr->onValue, TCL_GLOBAL_ONLY); } } else { sprintf(interp->result, "bad option \"%.50s\": must be %s", argv[1], optionStrings[butPtr->type]); goto error; } Tk_Release((ClientData) butPtr); return result; redisplay: if (Tk_IsMapped(butPtr->tkwin) && !(butPtr->flags & REDRAW_PENDING)) { //Tk_TimerToken last = butPtr->updateTimerToken; butPtr->flags |= REDRAW_PENDING; // Tk_DoWhenIdle(DisplayButton, (ClientData) butPtr); assert(butPtr->updateTimerToken == 0); if (butPtr->updateTimerToken == 0) { butPtr->updateTimerToken = Tk_CreateTimerHandler( ButtonUpdateTime, DisplayButton, (ClientData) butPtr); } //fprintf(stderr, "ButtonWidgetCmd Set Timer %s %s was %d now %d\n", Tk_Class(butPtr->tkwin), Tk_PathName(butPtr->tkwin), last, butPtr->updateTimerToken); } Tk_Release((ClientData) butPtr); return TCL_OK; error: Tk_Release((ClientData) butPtr); return TCL_ERROR; } /* *---------------------------------------------------------------------- * * DestroyButton -- * * This procedure is invoked by Tk_EventuallyFree or Tk_Release * to clean up the internal structure of a button at a safe time * (when no-one is using it anymore). * * Results: * None. * * Side effects: * Everything associated with the widget is freed up. * *---------------------------------------------------------------------- */ static void DestroyButton(clientData) ClientData clientData; /* Info about entry widget. */ { register Button *butPtr = (Button *) clientData; if (butPtr->text != NULL) { ckfree(butPtr->text); } if (butPtr->textVarName != NULL) { Tcl_UntraceVar(butPtr->interp, butPtr->textVarName, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, ButtonTextVarProc, (ClientData) butPtr); ckfree(butPtr->textVarName); } if (butPtr->bitmap != None) { #if defined(USE_XPM3) Tk_FreePixmap(butPtr->bitmap); #else Tk_FreeBitmap(butPtr->bitmap); #endif } if (butPtr->normalBorder != NULL) { Tk_Free3DBorder(butPtr->normalBorder); } if (butPtr->activeBorder != NULL) { Tk_Free3DBorder(butPtr->activeBorder); } if (butPtr->fontPtr != NULL) { Tk_FreeFontStruct(butPtr->fontPtr); } if (butPtr->normalFg != NULL) { Tk_FreeColor(butPtr->normalFg); } if (butPtr->disabledFg != NULL) { Tk_FreeColor(butPtr->disabledFg); } if (butPtr->activeFg != NULL) { Tk_FreeColor(butPtr->activeFg); } if (butPtr->normalTextGC != None) { Tk_FreeGC(butPtr->normalTextGC); } if (butPtr->activeTextGC != None) { Tk_FreeGC(butPtr->activeTextGC); } if (butPtr->gray != None) { Tk_FreeBitmap(butPtr->gray); } if (butPtr->disabledGC != None) { Tk_FreeGC(butPtr->disabledGC); } if (butPtr->selectorFg != NULL) { Tk_FreeColor(butPtr->selectorFg); } if (butPtr->selectorGC != None) { Tk_FreeGC(butPtr->selectorGC); } if (butPtr->selVarName != NULL) { Tcl_UntraceVar(butPtr->interp, butPtr->selVarName, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, ButtonVarProc, (ClientData) butPtr); ckfree(butPtr->selVarName); } if (butPtr->onValue != NULL) { ckfree(butPtr->onValue); } if (butPtr->offValue != NULL) { ckfree(butPtr->offValue); } if (butPtr->cursor != None) { Tk_FreeCursor(butPtr->cursor); } if (butPtr->command != NULL) { ckfree(butPtr->command); } if (butPtr->updateTimerToken != NULL) { Tk_DeleteTimerHandler(butPtr->updateTimerToken); //fprintf(stderr, "DestroyButton Delete Timer was %d now 0\n", butPtr->updateTimerToken); butPtr->updateTimerToken = 0; } ckfree((char *) butPtr); } /* *---------------------------------------------------------------------- * * ConfigureButton -- * * This procedure is called to process an argv/argc list, plus * the Tk option database, in order to configure (or * reconfigure) a button widget. * * Results: * The return value is a standard Tcl result. If TCL_ERROR is * returned, then interp->result contains an error message. * * Side effects: * Configuration information, such as text string, colors, font, * etc. get set for butPtr; old resources get freed, if there * were any. The button is redisplayed. * *---------------------------------------------------------------------- */ static int ConfigureButton(interp, butPtr, argc, argv, flags) Tcl_Interp *interp; /* Used for error reporting. */ register Button *butPtr; /* Information about widget; may or may * not already have values for some fields. */ int argc; /* Number of valid entries in argv. */ char **argv; /* Arguments. */ int flags; /* Flags to pass to Tk_ConfigureWidget. */ { XGCValues gcValues; GC newGC; unsigned long mask; /* * Eliminate any existing trace on variables monitored by the button. */ if (butPtr->textVarName != NULL) { Tcl_UntraceVar(interp, butPtr->textVarName, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, ButtonTextVarProc, (ClientData) butPtr); } if (butPtr->selVarName != NULL) { Tcl_UntraceVar(interp, butPtr->selVarName, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, ButtonVarProc, (ClientData) butPtr); } if (Tk_ConfigureWidget(interp, butPtr->tkwin, configSpecs, argc, argv, (char *) butPtr, flags) != TCL_OK) { return TCL_ERROR; } /* * A few options need special processing, such as setting the * background from a 3-D border, or filling in complicated * defaults that couldn't be specified to Tk_ConfigureWidget. */ if (butPtr->state == tkActiveUid) { Tk_SetBackgroundFromBorder(butPtr->tkwin, butPtr->activeBorder); } else { Tk_SetBackgroundFromBorder(butPtr->tkwin, butPtr->normalBorder); if ((butPtr->state != tkNormalUid) && (butPtr->state != tkDisabledUid)) { Tcl_AppendResult(interp, "bad state value \"", butPtr->state, "\": must be normal, active, or disabled", (char *) NULL); butPtr->state = tkNormalUid; return TCL_ERROR; } } gcValues.font = butPtr->fontPtr->fid; gcValues.foreground = butPtr->normalFg->pixel; gcValues.background = Tk_3DBorderColor(butPtr->normalBorder)->pixel; /* * Note: GraphicsExpose events are disabled in normalTextGC because it's * used to copy stuff from an off-screen pixmap onto the screen (we know * that there's no problem with obscured areas). */ gcValues.graphics_exposures = False; newGC = Tk_GetGC(butPtr->tkwin, GCForeground|GCBackground|GCFont|GCGraphicsExposures, &gcValues); if (butPtr->normalTextGC != None) { Tk_FreeGC(butPtr->normalTextGC); } butPtr->normalTextGC = newGC; if (butPtr->activeFg != NULL) { gcValues.font = butPtr->fontPtr->fid; gcValues.foreground = butPtr->activeFg->pixel; gcValues.background = Tk_3DBorderColor(butPtr->activeBorder)->pixel; newGC = Tk_GetGC(butPtr->tkwin, GCForeground|GCBackground|GCFont, &gcValues); if (butPtr->activeTextGC != None) { Tk_FreeGC(butPtr->activeTextGC); } butPtr->activeTextGC = newGC; } gcValues.font = butPtr->fontPtr->fid; gcValues.background = Tk_3DBorderColor(butPtr->normalBorder)->pixel; if (butPtr->disabledFg != NULL) { gcValues.foreground = butPtr->disabledFg->pixel; mask = GCForeground|GCBackground|GCFont; } else { gcValues.foreground = gcValues.background; if (butPtr->gray == None) { butPtr->gray = Tk_GetBitmap(interp, butPtr->tkwin, Tk_GetUid("gray50")); if (butPtr->gray == None) { return TCL_ERROR; } } gcValues.fill_style = FillStippled; gcValues.stipple = butPtr->gray; mask = GCForeground|GCFillStyle|GCStipple; } newGC = Tk_GetGC(butPtr->tkwin, mask, &gcValues); if (butPtr->disabledGC != None) { Tk_FreeGC(butPtr->disabledGC); } butPtr->disabledGC = newGC; if (butPtr->padX < 0) { butPtr->padX = 0; } if (butPtr->padY < 0) { butPtr->padY = 0; } if (butPtr->type >= TYPE_CHECK_BUTTON) { char *value; if (butPtr->selectorFg != NULL) { gcValues.foreground = butPtr->selectorFg->pixel; newGC = Tk_GetGC(butPtr->tkwin, GCForeground, &gcValues); } else { newGC = None; } if (butPtr->selectorGC != None) { Tk_FreeGC(butPtr->selectorGC); } butPtr->selectorGC = newGC; if (butPtr->selVarName == NULL) { butPtr->selVarName = (char *) ckalloc((unsigned) (strlen(Tk_Name(butPtr->tkwin)) + 1)); strcpy(butPtr->selVarName, Tk_Name(butPtr->tkwin)); } if (butPtr->onValue == NULL) { butPtr->onValue = (char *) ckalloc((unsigned) (strlen(Tk_Name(butPtr->tkwin)) + 1)); strcpy(butPtr->onValue, Tk_Name(butPtr->tkwin)); } /* * Select the button if the associated variable has the * appropriate value, initialize the variable if it doesn't * exist, then set a trace on the variable to monitor future * changes to its value. */ value = Tcl_GetVar(interp, butPtr->selVarName, TCL_GLOBAL_ONLY); butPtr->flags &= ~SELECTED; if (value != NULL) { if (strcmp(value, butPtr->onValue) == 0) { butPtr->flags |= SELECTED; } } else { Tcl_SetVar(interp, butPtr->selVarName, (butPtr->type == TYPE_CHECK_BUTTON) ? butPtr->offValue : "", TCL_GLOBAL_ONLY); } Tcl_TraceVar(interp, butPtr->selVarName, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, ButtonVarProc, (ClientData) butPtr); } /* * If the button is to display the value of a variable, then set up * a trace on the variable's value, create the variable if it doesn't * exist, and fetch its current value. */ if ((butPtr->bitmap == None) && (butPtr->textVarName != NULL)) { char *value; value = Tcl_GetVar(interp, butPtr->textVarName, TCL_GLOBAL_ONLY); if (value == NULL) { Tcl_SetVar(interp, butPtr->textVarName, butPtr->text, TCL_GLOBAL_ONLY); } else { if (butPtr->text != NULL) { ckfree(butPtr->text); } butPtr->text = ckalloc((unsigned) (strlen(value) + 1)); strcpy(butPtr->text, value); } Tcl_TraceVar(interp, butPtr->textVarName, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, ButtonTextVarProc, (ClientData) butPtr); } ComputeButtonGeometry(butPtr); /* * Lastly, arrange for the button to be redisplayed. */ if (Tk_IsMapped(butPtr->tkwin) && !(butPtr->flags & REDRAW_PENDING)) { //Tk_TimerToken last = butPtr->updateTimerToken; butPtr->flags |= REDRAW_PENDING; // Tk_DoWhenIdle(DisplayButton, (ClientData) butPtr); assert(butPtr->updateTimerToken == 0); if (butPtr->updateTimerToken == 0) { butPtr->updateTimerToken = Tk_CreateTimerHandler( ButtonUpdateTime, DisplayButton, (ClientData) butPtr); } //fprintf(stderr, "ConfigureButton Set Timer %s %s was %d now %d\n", Tk_Class(butPtr->tkwin), Tk_PathName(butPtr->tkwin), last, butPtr->updateTimerToken); } return TCL_OK; } /* *---------------------------------------------------------------------- * * DisplayButton -- * * This procedure is invoked to display a button widget. * * Results: * None. * * Side effects: * Commands are output to X to display the button in its * current mode. * *---------------------------------------------------------------------- */ static void DisplayButton(clientData) ClientData clientData; /* Information about widget. */ { register Button *butPtr = (Button *) clientData; GC gc; Tk_3DBorder border; Pixmap pixmap; int x = 0; /* Initialization only needed to stop * compiler warning. */ int y; register Tk_Window tkwin = butPtr->tkwin; //fprintf(stderr, "DisplayButton Handled Timer %s %s was %d now 0\n", Tk_Class(butPtr->tkwin), Tk_PathName(butPtr->tkwin), butPtr->updateTimerToken); assert(butPtr->updateTimerToken != 0); butPtr->updateTimerToken = 0; butPtr->flags &= ~REDRAW_PENDING; if ((butPtr->tkwin == NULL) || !Tk_IsMapped(tkwin)) { return; } if ((butPtr->state == tkDisabledUid) && (butPtr->disabledFg != NULL)) { gc = butPtr->disabledGC; border = butPtr->normalBorder; } else if (butPtr->state == tkActiveUid) { gc = butPtr->activeTextGC; border = butPtr->activeBorder; } else { gc = butPtr->normalTextGC; border = butPtr->normalBorder; } /* * In order to avoid screen flashes, this procedure redraws * the button in a pixmap, then copies the pixmap to the * screen in a single operation. This means that there's no * point in time where the on-sreen image has been cleared. */ pixmap = XCreatePixmap(Tk_Display(tkwin), Tk_WindowId(tkwin), Tk_Width(tkwin), Tk_Height(tkwin), Tk_DefaultDepth(Tk_Screen(tkwin))); Tk_Fill3DRectangle(Tk_Display(tkwin), pixmap, border, 0, 0, Tk_Width(tkwin), Tk_Height(tkwin), 0, TK_RELIEF_FLAT); /* * Display bitmap or text for button. */ if (butPtr->bitmap != None) { unsigned int width, height; #if defined(USE_XPM3) Tk_SizeOfPixmap(butPtr->bitmap, &width, &height); #else Tk_SizeOfBitmap(butPtr->bitmap, &width, &height); #endif switch (butPtr->anchor) { case TK_ANCHOR_NW: case TK_ANCHOR_W: case TK_ANCHOR_SW: x = butPtr->borderWidth + butPtr->selectorSpace + butPtr->padX + 1; break; case TK_ANCHOR_N: case TK_ANCHOR_CENTER: case TK_ANCHOR_S: x = (Tk_Width(tkwin) + butPtr->selectorSpace - width)/2; break; default: x = Tk_Width(tkwin) - butPtr->borderWidth - butPtr->padX - width - 1; break; } switch (butPtr->anchor) { case TK_ANCHOR_NW: case TK_ANCHOR_N: case TK_ANCHOR_NE: y = butPtr->borderWidth + butPtr->padY + 1; break; case TK_ANCHOR_W: case TK_ANCHOR_CENTER: case TK_ANCHOR_E: y = (Tk_Height(tkwin) - height)/2; break; default: y = Tk_Height(tkwin) - butPtr->borderWidth - butPtr->padY - height - 1; break; } if (butPtr->relief == TK_RELIEF_RAISED) { x -= 1; y -= 1; } else if (butPtr->relief == TK_RELIEF_SUNKEN) { x += 1; y += 1; } #if defined(USE_XPM3) XCopyArea(Tk_Display(tkwin), butPtr->bitmap, pixmap, gc, 0, 0, width, height, x, y); #else XCopyPlane(Tk_Display(tkwin), butPtr->bitmap, pixmap, gc, 0, 0, width, height, x, y, 1); #endif y += height/2; } else { switch (butPtr->anchor) { case TK_ANCHOR_NW: case TK_ANCHOR_W: case TK_ANCHOR_SW: x = butPtr->borderWidth + butPtr->padX + butPtr->selectorSpace + butPtr->leftBearing + 1; break; case TK_ANCHOR_N: case TK_ANCHOR_CENTER: case TK_ANCHOR_S: x = (Tk_Width(tkwin) + butPtr->selectorSpace + butPtr->leftBearing - butPtr->rightBearing)/2; break; default: x = Tk_Width(tkwin) - butPtr->borderWidth - butPtr->padX - butPtr->rightBearing - 1; break; } switch (butPtr->anchor) { case TK_ANCHOR_NW: case TK_ANCHOR_N: case TK_ANCHOR_NE: y = butPtr->borderWidth + butPtr->fontPtr->ascent + butPtr->padY + 1; break; case TK_ANCHOR_W: case TK_ANCHOR_CENTER: case TK_ANCHOR_E: y = (Tk_Height(tkwin) + butPtr->fontPtr->ascent - butPtr->fontPtr->descent)/2; break; default: y = Tk_Height(tkwin) - butPtr->borderWidth - butPtr->padY - butPtr->fontPtr->descent - 1; break; } if (butPtr->relief == TK_RELIEF_RAISED) { x -= 1; y -= 1; } else if (butPtr->relief == TK_RELIEF_SUNKEN) { x += 1; y += 1; } XDrawString(Tk_Display(tkwin), pixmap, gc, x, y, butPtr->text, butPtr->textLength); y -= (butPtr->fontPtr->ascent - butPtr->fontPtr->descent)/2; x -= butPtr->leftBearing; } /* * Draw the selector for check buttons and radio buttons. At this * point x and y refer to the top-left corner of the text or bitmap. */ if ((butPtr->type == TYPE_CHECK_BUTTON) && (butPtr->selectorGC != None)) { int dim; dim = butPtr->selectorDiameter; x -= (butPtr->selectorSpace + butPtr->padX + dim)/2; y -= dim/2; Tk_Draw3DRectangle(Tk_Display(tkwin), pixmap, border, x, y, dim, dim, butPtr->borderWidth, TK_RELIEF_SUNKEN); x += butPtr->borderWidth; y += butPtr->borderWidth; dim -= 2*butPtr->borderWidth; if (dim > 0) { if (butPtr->flags & SELECTED) { XFillRectangle(Tk_Display(tkwin), pixmap, butPtr->selectorGC, x, y, (unsigned int) dim, (unsigned int) dim); } else { Tk_Fill3DRectangle(Tk_Display(tkwin), pixmap, butPtr->normalBorder, x, y, dim, dim, butPtr->borderWidth, TK_RELIEF_FLAT); } } } else if ((butPtr->type == TYPE_RADIO_BUTTON) && (butPtr->selectorGC != None)) { XPoint points[4]; int radius; radius = butPtr->selectorDiameter/2; points[0].x = x - (butPtr->selectorSpace + butPtr->padX + butPtr->selectorDiameter)/2; points[0].y = y; points[1].x = points[0].x + radius; points[1].y = points[0].y + radius; points[2].x = points[1].x + radius; points[2].y = points[0].y; points[3].x = points[1].x; points[3].y = points[0].y - radius; if (butPtr->flags & SELECTED) { XFillPolygon(Tk_Display(tkwin), pixmap, butPtr->selectorGC, points, 4, Convex, CoordModeOrigin); } else { Tk_Fill3DPolygon(Tk_Display(tkwin), pixmap, butPtr->normalBorder, points, 4, butPtr->borderWidth, TK_RELIEF_FLAT); } Tk_Draw3DPolygon(Tk_Display(tkwin), pixmap, border, points, 4, butPtr->borderWidth, TK_RELIEF_RAISED); } /* * If the button is disabled with a stipple rather than a special * foreground color, generate the stippled effect. */ if ((butPtr->state == tkDisabledUid) && (butPtr->disabledFg == NULL)) { XFillRectangle(Tk_Display(tkwin), pixmap, butPtr->disabledGC, butPtr->borderWidth, butPtr->borderWidth, (unsigned) (Tk_Width(tkwin) - 2*butPtr->borderWidth), (unsigned) (Tk_Height(tkwin) - 2*butPtr->borderWidth)); } /* * Draw the border last. This way, if the button's contents * overflow onto the border they'll be covered up by the border. */ if (butPtr->relief != TK_RELIEF_FLAT) { Tk_Draw3DRectangle(Tk_Display(tkwin), pixmap, border,0, 0, Tk_Width(tkwin), Tk_Height(tkwin), butPtr->borderWidth, butPtr->relief); } /* * Copy the information from the off-screen pixmap onto the screen, * then delete the pixmap. */ XCopyArea(Tk_Display(tkwin), pixmap, Tk_WindowId(tkwin), butPtr->normalTextGC, 0, 0, Tk_Width(tkwin), Tk_Height(tkwin), 0, 0); XFreePixmap(Tk_Display(tkwin), pixmap); } /* *-------------------------------------------------------------- * * ButtonEventProc -- * * This procedure is invoked by the Tk dispatcher for various * events on buttons. * * Results: * None. * * Side effects: * When the window gets deleted, internal structures get * cleaned up. When it gets exposed, it is redisplayed. * *-------------------------------------------------------------- */ static void ButtonEventProc(clientData, eventPtr) ClientData clientData; /* Information about window. */ XEvent *eventPtr; /* Information about event. */ { Button *butPtr = (Button *) clientData; if ((eventPtr->type == Expose) && (eventPtr->xexpose.count == 0)) { if ((butPtr->tkwin != NULL) && !(butPtr->flags & REDRAW_PENDING)) { //Tk_TimerToken last = butPtr->updateTimerToken; butPtr->flags |= REDRAW_PENDING; // Tk_DoWhenIdle(DisplayButton, (ClientData) butPtr); assert(butPtr->updateTimerToken == NULL); if (butPtr->updateTimerToken == NULL) { butPtr->updateTimerToken = Tk_CreateTimerHandler( ButtonUpdateTime, DisplayButton, (ClientData) butPtr); } // if //fprintf(stderr, "ButtonEventProc Expose Set Timer %s %s was %d now %d\n", Tk_Class(butPtr->tkwin), Tk_PathName(butPtr->tkwin), last, butPtr->updateTimerToken); } } else if (eventPtr->type == DestroyNotify) { Tcl_DeleteCommand(butPtr->interp, Tk_PathName(butPtr->tkwin)); butPtr->tkwin = NULL; if (butPtr->flags & REDRAW_PENDING) { //fprintf(stderr, "ButtonEventProc Destroy Timer was %d now 0\n", butPtr->updateTimerToken); // Tk_CancelIdleCall(DisplayButton, (ClientData) butPtr); butPtr->flags &= ~REDRAW_PENDING; assert(butPtr->updateTimerToken != NULL); if (butPtr->updateTimerToken != NULL) { Tk_DeleteTimerHandler(butPtr->updateTimerToken); butPtr->updateTimerToken = 0; } } Tk_EventuallyFree((ClientData) butPtr, DestroyButton); } } /* *---------------------------------------------------------------------- * * ComputeButtonGeometry -- * * After changes in a button's text or bitmap, this procedure * recomputes the button's geometry and passes this information * along to the geometry manager for the window. * * Results: * None. * * Side effects: * The button's window may change size. * *---------------------------------------------------------------------- */ static void ComputeButtonGeometry(butPtr) register Button *butPtr; /* Button whose geometry may have changed. */ { XCharStruct bbox; int dummy; unsigned int width, height; butPtr->selectorSpace = 0; if (butPtr->bitmap != None) { #if defined(USE_XPM3) Tk_SizeOfPixmap(butPtr->bitmap, &width, &height); #else Tk_SizeOfBitmap(butPtr->bitmap, &width, &height); #endif if (butPtr->width > 0) { width = butPtr->width; } if (butPtr->height > 0) { height = butPtr->height; } if ((butPtr->type >= TYPE_CHECK_BUTTON) && (butPtr->selectorGC != None)) { butPtr->selectorSpace = (14*height)/10; if (butPtr->type == TYPE_CHECK_BUTTON) { butPtr->selectorDiameter = (65*height)/100; } else { butPtr->selectorDiameter = (75*height)/100; } } } else { butPtr->textLength = strlen(butPtr->text); XTextExtents(butPtr->fontPtr, butPtr->text, butPtr->textLength, &dummy, &dummy, &dummy, &bbox); butPtr->leftBearing = bbox.lbearing; butPtr->rightBearing = bbox.rbearing; width = bbox.lbearing + bbox.rbearing; height = butPtr->fontPtr->ascent + butPtr->fontPtr->descent; if (butPtr->width > 0) { width = butPtr->width * XTextWidth(butPtr->fontPtr, "0", 1); } if (butPtr->height > 0) { height *= butPtr->height; } if ((butPtr->type >= TYPE_CHECK_BUTTON) && (butPtr->selectorGC != None)) { butPtr->selectorDiameter = butPtr->fontPtr->ascent + butPtr->fontPtr->descent; if (butPtr->type == TYPE_CHECK_BUTTON) { butPtr->selectorDiameter = (80*butPtr->selectorDiameter)/100; } butPtr->selectorSpace = butPtr->selectorDiameter + butPtr->padX; } } /* * When issuing the geometry request, add extra space for the selector, * if any, and for the border and padding, plus two extra pixels so the * display can be offset by 1 pixel in either direction for the raised * or lowered effect. */ width += 2*butPtr->padX; height += 2*butPtr->padY; Tk_GeometryRequest(butPtr->tkwin, (int) (width + butPtr->selectorSpace + 2*butPtr->borderWidth + 2), (int) (height + 2*butPtr->borderWidth + 2)); Tk_SetInternalBorder(butPtr->tkwin, butPtr->borderWidth); } /* *---------------------------------------------------------------------- * * InvokeButton -- * * This procedure is called to carry out the actions associated * with a button, such as invoking a Tcl command or setting a * variable. This procedure is invoked, for example, when the * button is invoked via the mouse. * * Results: * A standard Tcl return value. Information is also left in * interp->result. * * Side effects: * Depends on the button and its associated command. * *---------------------------------------------------------------------- */ static int InvokeButton(butPtr) register Button *butPtr; /* Information about button. */ { if (butPtr->type == TYPE_CHECK_BUTTON) { if (butPtr->flags & SELECTED) { Tcl_SetVar(butPtr->interp, butPtr->selVarName, butPtr->offValue, TCL_GLOBAL_ONLY); } else { Tcl_SetVar(butPtr->interp, butPtr->selVarName, butPtr->onValue, TCL_GLOBAL_ONLY); } } else if (butPtr->type == TYPE_RADIO_BUTTON) { Tcl_SetVar(butPtr->interp, butPtr->selVarName, butPtr->onValue, TCL_GLOBAL_ONLY); } if ((butPtr->type != TYPE_LABEL) && (butPtr->command != NULL)) { return Tcl_GlobalEval(butPtr->interp, butPtr->command); } return TCL_OK; } /* *-------------------------------------------------------------- * * ButtonVarProc -- * * This procedure is invoked when someone changes the * state variable associated with a radio button. Depending * on the new value of the button's variable, the button * may be selected or deselected. * * Results: * NULL is always returned. * * Side effects: * The button may become selected or deselected. * *-------------------------------------------------------------- */ /* ARGSUSED */ static char * ButtonVarProc(clientData, interp, name1, name2, flags) ClientData clientData; /* Information about button. */ Tcl_Interp *interp; /* Interpreter containing variable. */ char *name1; /* Name of variable. */ char *name2; /* Second part of variable name. */ int flags; /* Information about what happened. */ { register Button *butPtr = (Button *) clientData; char *value; /* * If the variable is being unset, then just re-establish the * trace unless the whole interpreter is going away. */ if (flags & TCL_TRACE_UNSETS) { butPtr->flags &= ~SELECTED; if ((flags & TCL_TRACE_DESTROYED) && !(flags & TCL_INTERP_DESTROYED)) { Tcl_TraceVar2(interp, name1, name2, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, ButtonVarProc, clientData); } goto redisplay; } /* * Use the value of the variable to update the selected status of * the button. */ value = Tcl_GetVar2(interp, name1, name2, flags & TCL_GLOBAL_ONLY); if (strcmp(value, butPtr->onValue) == 0) { if (butPtr->flags & SELECTED) { return (char *) NULL; } butPtr->flags |= SELECTED; } else if (butPtr->flags & SELECTED) { butPtr->flags &= ~SELECTED; } else { return (char *) NULL; } redisplay: if ((butPtr->tkwin != NULL) && Tk_IsMapped(butPtr->tkwin) && !(butPtr->flags & REDRAW_PENDING)) { //Tk_TimerToken last = butPtr->updateTimerToken; butPtr->flags |= REDRAW_PENDING; // Tk_DoWhenIdle(DisplayButton, (ClientData) butPtr); assert(butPtr->updateTimerToken == NULL); if (butPtr->updateTimerToken == NULL) { butPtr->updateTimerToken = Tk_CreateTimerHandler( ButtonUpdateTime, DisplayButton, (ClientData) butPtr); } //fprintf(stderr, "ButtonVarProc Set Timer %s %s was %d now %d\n", Tk_Class(butPtr->tkwin), Tk_PathName(butPtr->tkwin), last, butPtr->updateTimerToken); } return (char *) NULL; } /* *-------------------------------------------------------------- * * ButtonTextVarProc -- * * This procedure is invoked when someone changes the variable * whose contents are to be displayed in a button. * * Results: * NULL is always returned. * * Side effects: * The text displayed in the button will change to match the * variable. * *-------------------------------------------------------------- */ /* ARGSUSED */ static char * ButtonTextVarProc(clientData, interp, name1, name2, flags) ClientData clientData; /* Information about button. */ Tcl_Interp *interp; /* Interpreter containing variable. */ char *name1; /* Name of variable. */ char *name2; /* Second part of variable name. */ int flags; /* Information about what happened. */ { register Button *butPtr = (Button *) clientData; char *value; /* * If the variable is unset, then immediately recreate it unless * the whole interpreter is going away. */ if (flags & TCL_TRACE_UNSETS) { if ((flags & TCL_TRACE_DESTROYED) && !(flags & TCL_INTERP_DESTROYED)) { Tcl_SetVar2(interp, name1, name2, butPtr->text, flags & TCL_GLOBAL_ONLY); Tcl_TraceVar2(interp, name1, name2, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, ButtonTextVarProc, clientData); } return (char *) NULL; } value = Tcl_GetVar2(interp, name1, name2, flags & TCL_GLOBAL_ONLY); if (value == NULL) { value = ""; } if (butPtr->text != NULL) { ckfree(butPtr->text); } butPtr->text = ckalloc((unsigned) (strlen(value) + 1)); strcpy(butPtr->text, value); ComputeButtonGeometry(butPtr); if ((butPtr->tkwin != NULL) && Tk_IsMapped(butPtr->tkwin) && !(butPtr->flags & REDRAW_PENDING)) { //Tk_TimerToken last = butPtr->updateTimerToken; butPtr->flags |= REDRAW_PENDING; // Tk_DoWhenIdle(DisplayButton, (ClientData) butPtr); assert(butPtr->updateTimerToken == NULL); if (butPtr->updateTimerToken == NULL) { butPtr->updateTimerToken = Tk_CreateTimerHandler( ButtonUpdateTime, DisplayButton, (ClientData) butPtr); } //fprintf(stderr, "ButtonTextVarProc Set Timer %s %s was %d now %d\n", Tk_Class(butPtr->tkwin), Tk_PathName(butPtr->tkwin), last, butPtr->updateTimerToken); } return (char *) NULL; } micropolis-activity/src/tk/makefile.osf0000664000076400007640000000634510724145723020536 0ustar simcitysimcity# # This is a simplified Makefile for use in Tk distributions. Before using # it to compile Tk, you may wish to reset some of the following variables: # # TCL_DIR - Name of directory holding tcl.h and tcl.a. # XLIB - Name of archive containing Xlib binaries. # # You may also wish to add some of the following switches to the CFLAGS # variable: # # -DX11R3 Causes code that depends on R4 facilities not to # be compiled. I haven't tested Tk with R3 in quite # a while, so this switch may not be enough to # generate a working R3 version of Tk. Furthermore, # use of this switch will disable some of the facilities # of Tk related to window managers. # -DNO_PROTOTYPE Turns off ANSI-style procedure prototypes and the # corresponding compile-time checks. Without this # defininition, prototypes will be turned on if the # compiler supports ANSI C by defining __STDC__. # -DTK_LIBRARY=\"dir\" Arranges for dir, which must be the name of a # directory, to be the library directory for Tk scripts. # This value gets put into the variable $tk_library # when a new application is created. The library # defaults to /usr/local/lib/tk, so you don't need the # switch unless your library is in a non-standard place. # CC = cc CFLAGS = -I. -I$(TCL_DIR) -O2 -DTK_VERSION=\"2.3\" -DUSE_XPM3 -I$(XPM_DIR) #CC = gcc #CFLAGS = -I. -I$(TCL_DIR) -g -DTK_VERSION=\"2.3\" -DUSE_XPM3 -I$(XPM_DIR) TCL_DIR = ../tcl XPM_DIR = ../xpm XLIB = -lX11 #LIBS = libtk.a $(TCL_DIR)/libtcl.a $(XPM_DIR)/libxpm.a LIBS = libtk.a $(TCL_DIR)/libtcl.a $(XPM_DIR)/libxpm.a #LINKS = $(LIBS) -lsocket -lnsl LINKS = $(LIBS) WIDGOBJS = tkbutton.o tkentry.o tkframe.o tklist.o \ tkmenu.o tkmnbut.o tkmsg.o tkscale.o \ tkscrbar.o CANVOBJS = tkcanvas.o tkcvarc.o tkcvbmap.o tkcvline.o \ tkcvpoly.o tkcvtext.o tkcvwind.o tkrectov.o \ tktrig.o TEXTOBJS = tktext.o tktxbtre.o tktxdisp.o tktxidx.o tktxtag.o OBJS = tk3d.o tkargv.o tkatom.o tkbind.o tkbitmap.o \ tkcmds.o tkcolor.o tkconfig.o tkcursor.o tkerror.o \ tkevent.o tkfont.o tkget.o tkgc.o tkgeo.o tkgrab.o \ tkoption.o tkpack.o tkpixmap.o tkplace.o tkpresrv.o \ tkselect.o tksend.o tkshare.o tkwindow.o tkwm.o tkrawtcp.o \ $(WIDGOBJS) $(CANVOBJS) $(TEXTOBJS) WIDGSRCS = tkbutton.c tkentry.c tkframe.c tklist.c \ tkmenu.c tkmnbut.c tkmessage.c tkscale.c \ tkscrbar.c tktext.c tktxbtre.c tktxdisp.c \ tktextindex.c CANVSRCS = tkcanvas.c tkcvarc.c tkcvbmap.c tkcvline.c \ tkcvpoly.c tkcvtext.c tkcvwind.c tkrectov.c \ tktrig.c TEXTSRCS = tktext.c tktxbtre.c tktxdisp.c tktxidx.c tktxtag.c SRCS = tk3d.c tkargv.c tkatom.c tkbind.c tkbitmap.c \ tkcmds.c tkcolor.c tkconfig.c tkcursor.c tkerror.c \ tkevent.c tkfont.c tkget.c tkgc.c tkgeo.c tkgrab.c \ tkoption.c tkpack.c tkplace.c tkpresrv.c tkselect.c \ tksend.c tkshare.c tkwindow.c tkwm.c tkrawtcp.c $(widgsrcs) \ $(CANVSRCS) $(TEXTSRCS) all: wish wish: main.o $(LIBS) $(CC) $(CFLAGS) main.o $(LINKS) $(XLIB) -lm -o wish libtk.a: $(OBJS) rm -f libtk.a ar cr libtk.a $(OBJS) # ranlib libtk.a $(TCL_DIR)/libtcl.a: cd $(TCL_DIR); make libtcl.a clean: touch junk~ rm -f $(OBJS) main.o libtk.a wish *~ $(OBJS): tk.h tkint.h tkconfig.h $(WIDGOBJS): default.h $(CANVOBJS): default.h tkcanvas.h main.o: tk.h tkint.h micropolis-activity/src/tk/tkoption.c0000664000076400007640000011116610724145723020261 0ustar simcitysimcity/* * tkOption.c -- * * This module contains procedures to manage the option * database, which allows various strings to be associated * with windows either by name or by class or both. * * Copyright 1990 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkOption.c,v 1.25 92/03/16 08:46:14 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tkconfig.h" #include "tkint.h" /* * The option database is stored as one tree for each main window. * Each name or class field in an option is associated with a node or * leaf of the tree. For example, the options "x.y.z" and "x.y*a" * each correspond to three nodes in the tree; they share the nodes * "x" and "x.y", but have different leaf nodes. One of the following * structures exists for each node or leaf in the option tree. It is * actually stored as part of the parent node, and describes a particular * child of the parent. */ typedef struct Element { Tk_Uid nameUid; /* Name or class from one element of * an option spec. */ union { struct ElArray *arrayPtr; /* If this is an intermediate node, * a pointer to a structure describing * the remaining elements of all * options whose prefixes are the * same up through this element. */ Tk_Uid valueUid; /* For leaf nodes, this is the string * value of the option. */ } child; int priority; /* Used to select among matching * options. Includes both the * priority level and a serial #. * Greater value means higher * priority. Irrelevant except in * leaf nodes. */ int flags; /* OR-ed combination of bits. See * below for values. */ } Element; /* * Flags in NodeElement structures: * * CLASS - Non-zero means this element refers to a class, * Zero means this element refers to a name. * NODE - Zero means this is a leaf element (the child * field is a value, not a pointer to another node). * One means this is a node element. * WILDCARD - Non-zero means this there was a star in the * original specification just before this element. * Zero means there was a dot. */ #define TYPE_MASK 0x7 #define CLASS 0x1 #define NODE 0x2 #define WILDCARD 0x4 #define EXACT_LEAF_NAME 0x0 #define EXACT_LEAF_CLASS 0x1 #define EXACT_NODE_NAME 0x2 #define EXACT_NODE_CLASS 0x3 #define WILDCARD_LEAF_NAME 0x4 #define WILDCARD_LEAF_CLASS 0x5 #define WILDCARD_NODE_NAME 0x6 #define WILDCARD_NODE_CLASS 0x7 /* * The following structure is used to manage a dynamic array of * Elements. These structures are used for two purposes: to store * the contents of a node in the option tree, and for the option * stacks described below. */ typedef struct ElArray { int arraySize; /* Number of elements actually * allocated in the "els" array. */ int numUsed; /* Number of elements currently in * use out of els. */ Element *nextToUse; /* Pointer to &els[numUsed]. */ Element els[1]; /* Array of structures describing * children of this node. The * array will actually contain enough * elements for all of the children * (and even a few extras, perhaps). * This must be the last field in * the structure. */ } ElArray; #define EL_ARRAY_SIZE(numEls) ((unsigned) (sizeof(ElArray) \ + ((numEls)-1)*sizeof(Element))) #define INITIAL_SIZE 5 /* * In addition to the option tree, which is a relatively static structure, * there are eight additional structures called "stacks", which are used * to speed up queries into the option database. The stack structures * are designed for the situation where an individual widget makes repeated * requests for its particular options. The requests differ only in * their last name/class, so during the first request we extract all * the options pertaining to the particular widget and save them in a * stack-like cache; subsequent requests for the same widget can search * the cache relatively quickly. In fact, the cache is a hierarchical * one, storing a list of relevant options for this widget and all of * its ancestors up to the application root; hence the name "stack". * * Each of the eight stacks consists of an array of Elements, ordered in * terms of levels in the window hierarchy. All the elements relevant * for the top-level widget appear first in the array, followed by all * those from the next-level widget on the path to the current widget, * etc. down to those for the current widget. * * Cached information is divided into eight stacks according to the * CLASS, NODE, and WILDCARD flags. Leaf and non-leaf information is * kept separate to speed up individual probes (non-leaf information is * only relevant when building the stacks, but isn't relevant when * making probes; similarly, only non-leaf information is relevant * when the stacks are being extended to the next widget down in the * widget hierarchy). Wildcard elements are handled separately from * "exact" elements because once they appear at a particular level in * the stack they remain active for all deeper levels; exact elements * are only relevant at a particular level. For example, when searching * for options relevant in a particular window, the entire wildcard * stacks get checked, but only the portions of the exact stacks that * pertain to the window's parent. Lastly, name and class stacks are * kept separate because different search keys are used when searching * them; keeping them separate speeds up the searches. */ #define NUM_STACKS 8 static ElArray *stacks[NUM_STACKS]; static TkWindow *cachedWindow = NULL; /* Lowest-level window currently * loaded in stacks at present. * NULL means stacks have never * been used, or have been * invalidated because of a change * to the database. */ /* * One of the following structures is used to keep track of each * level in the stacks. */ typedef struct StackLevel { TkWindow *winPtr; /* Window corresponding to this stack * level. */ int bases[NUM_STACKS]; /* For each stack, index of first * element on stack corresponding to * this level (used to restore "numUsed" * fields when popping out of a level. */ } StackLevel; /* * Information about all of the stack levels that are currently * active. This array grows dynamically to become as large as needed. */ static StackLevel *levels = NULL; /* Array describing current stack. */ static int numLevels = 0; /* Total space allocated. */ static int curLevel = 0; /* Highest level currently in use. */ /* * The variable below is a serial number for all options entered into * the database so far. It increments on each addition to the option * database. It is used in computing option priorities, so that the * most recent entry wins when choosing between options at the same * priority level. */ static int serial = 0; /* * Special "no match" Element to use as default for searches. */ static Element defaultMatch; /* * Forward declarations for procedures defined in this file: */ static int AddFromString _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, char *string, int priority)); static void ClearOptionTree _ANSI_ARGS_((ElArray *arrayPtr)); static ElArray * ExtendArray _ANSI_ARGS_((ElArray *arrayPtr, Element *elPtr)); static void ExtendStacks _ANSI_ARGS_((ElArray *arrayPtr, int leaf)); static int GetDefaultOptions _ANSI_ARGS_((Tcl_Interp *interp, TkWindow *winPtr)); static ElArray * NewArray _ANSI_ARGS_((int numEls)); static void OptionInit _ANSI_ARGS_((TkMainInfo *mainPtr)); static int ParsePriority _ANSI_ARGS_((Tcl_Interp *interp, char *string)); static int ReadOptionFile _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, char *fileName, int priority)); static void SetupStacks _ANSI_ARGS_((TkWindow *winPtr, int leaf)); /* *-------------------------------------------------------------- * * Tk_AddOption -- * * Add a new option to the option database. * * Results: * None. * * Side effects: * Information is added to the option database. * *-------------------------------------------------------------- */ void Tk_AddOption(tkwin, name, value, priority) Tk_Window tkwin; /* Window token; option will be associated * with main window for this window. */ char *name; /* Multi-element name of option. */ char *value; /* String value for option. */ int priority; /* Overall priority level to use for * this option, such as TK_USER_DEFAULT_PRIO * or TK_INTERACTIVE_PRIO. Must be between * 0 and TK_MAX_PRIO. */ { TkWindow *winPtr = ((TkWindow *) tkwin)->mainPtr->winPtr; register ElArray **arrayPtrPtr; register Element *elPtr; Element newEl; register char *p; char *field; int count, firstField, length; #define TMP_SIZE 100 char tmp[TMP_SIZE+1]; if (winPtr->mainPtr->optionRootPtr == NULL) { OptionInit(winPtr->mainPtr); } cachedWindow = NULL; /* Invalidate the cache. */ /* * Compute the priority for the new element, including both the * overall level and the serial number (to disambiguate with the * level). */ if (priority < 0) { priority = 0; } else if (priority > TK_MAX_PRIO) { priority = TK_MAX_PRIO; } newEl.priority = (priority << 24) + serial; serial++; /* * Parse the option one field at a time. */ arrayPtrPtr = &(((TkWindow *) tkwin)->mainPtr->optionRootPtr); p = name; for (firstField = 1; ; firstField = 0) { /* * Scan the next field from the name and convert it to a Tk_Uid. * Must copy the field before calling Tk_Uid, so that a terminating * NULL may be added without modifying the source string. */ if (*p == '*') { newEl.flags = WILDCARD; p++; } else { newEl.flags = 0; } field = p; while ((*p != 0) && (*p != '.') && (*p != '*')) { p++; } length = p - field; if (length > TMP_SIZE) { length = TMP_SIZE; } strncpy(tmp, field, length); tmp[length] = 0; newEl.nameUid = Tk_GetUid(tmp); if (isupper(*field)) { newEl.flags |= CLASS; } if (*p != 0) { /* * New element will be a node. If this option can't possibly * apply to this main window, then just skip it. Otherwise, * add it to the parent, if it isn't already there, and descend * into it. */ newEl.flags |= NODE; if (firstField && !(newEl.flags & WILDCARD) && (newEl.nameUid != winPtr->nameUid) && (newEl.nameUid != winPtr->classUid)) { return; } for (elPtr = (*arrayPtrPtr)->els, count = (*arrayPtrPtr)->numUsed; ; elPtr++, count--) { if (count == 0) { newEl.child.arrayPtr = NewArray(5); *arrayPtrPtr = ExtendArray(*arrayPtrPtr, &newEl); arrayPtrPtr = &((*arrayPtrPtr)->nextToUse[-1].child.arrayPtr); break; } if ((elPtr->nameUid == newEl.nameUid) && (elPtr->flags == newEl.flags)) { arrayPtrPtr = &(elPtr->child.arrayPtr); break; } } if (*p == '.') { p++; } } else { /* * New element is a leaf. Add it to the parent, if it isn't * already there. If it exists already, keep whichever value * has highest priority. */ newEl.child.valueUid = Tk_GetUid(value); for (elPtr = (*arrayPtrPtr)->els, count = (*arrayPtrPtr)->numUsed; ; elPtr++, count--) { if (count == 0) { *arrayPtrPtr = ExtendArray(*arrayPtrPtr, &newEl); return; } if ((elPtr->nameUid == newEl.nameUid) && (elPtr->flags == newEl.flags)) { if (elPtr->priority < newEl.priority) { elPtr->priority = newEl.priority; elPtr->child.valueUid = newEl.child.valueUid; } return; } } } } } /* *-------------------------------------------------------------- * * Tk_GetOption -- * * Retrieve an option from the option database. * * Results: * The return value is the value specified in the option * database for the given name and class on the given * window. If there is nothing specified in the database * for that option, then NULL is returned. * * Side effects: * The internal caches used to speed up option mapping * may be modified, if this tkwin is different from the * last tkwin used for option retrieval. * *-------------------------------------------------------------- */ Tk_Uid Tk_GetOption(tkwin, name, className) Tk_Window tkwin; /* Token for window that option is * associated with. */ char *name; /* Name of option. */ char *className; /* Class of option. NULL means there * is no class for this option: just * check for name. */ { Tk_Uid nameId, classId; register Element *elPtr, *bestPtr; register int count; /* * Note: no need to call OptionInit here: it will be done by * the SetupStacks call below (squeeze out those nanoseconds). */ if (tkwin != (Tk_Window) cachedWindow) { SetupStacks((TkWindow *) tkwin, 1); } nameId = Tk_GetUid(name); bestPtr = &defaultMatch; for (elPtr = stacks[EXACT_LEAF_NAME]->els, count = stacks[EXACT_LEAF_NAME]->numUsed; count > 0; elPtr++, count--) { if ((elPtr->nameUid == nameId) && (elPtr->priority > bestPtr->priority)) { bestPtr = elPtr; } } for (elPtr = stacks[WILDCARD_LEAF_NAME]->els, count = stacks[WILDCARD_LEAF_NAME]->numUsed; count > 0; elPtr++, count--) { if ((elPtr->nameUid == nameId) && (elPtr->priority > bestPtr->priority)) { bestPtr = elPtr; } } if (className != NULL) { classId = Tk_GetUid(className); for (elPtr = stacks[EXACT_LEAF_CLASS]->els, count = stacks[EXACT_LEAF_CLASS]->numUsed; count > 0; elPtr++, count--) { if ((elPtr->nameUid == classId) && (elPtr->priority > bestPtr->priority)) { bestPtr = elPtr; } } for (elPtr = stacks[WILDCARD_LEAF_CLASS]->els, count = stacks[WILDCARD_LEAF_CLASS]->numUsed; count > 0; elPtr++, count--) { if ((elPtr->nameUid == classId) && (elPtr->priority > bestPtr->priority)) { bestPtr = elPtr; } } } return bestPtr->child.valueUid; } /* *-------------------------------------------------------------- * * Tk_OptionCmd -- * * This procedure is invoked to process the "option" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ int Tk_OptionCmd(clientData, interp, argc, argv) ClientData clientData; /* Main window associated with * interpreter. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { Tk_Window tkwin = (Tk_Window) clientData; int length; char c; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " cmd arg ?arg ...?\"", (char *) NULL); return TCL_ERROR; } c = argv[1][0]; length = strlen(argv[1]); if ((c == 'a') && (strncmp(argv[1], "add", length) == 0)) { int priority; if ((argc != 4) && (argc != 5)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " add pattern value ?priority?\"", (char *) NULL); return TCL_ERROR; } if (argc == 4) { priority = TK_INTERACTIVE_PRIO; } else { priority = ParsePriority(interp, argv[4]); if (priority < 0) { return TCL_ERROR; } } Tk_AddOption(tkwin, argv[2], argv[3], priority); return TCL_OK; } else if ((c == 'c') && (strncmp(argv[1], "clear", length) == 0)) { TkMainInfo *mainPtr; if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " clear\"", (char *) NULL); return TCL_ERROR; } mainPtr = ((TkWindow *) tkwin)->mainPtr; if (mainPtr->optionRootPtr != NULL) { ClearOptionTree(mainPtr->optionRootPtr); mainPtr->optionRootPtr = NULL; } cachedWindow = NULL; return TCL_OK; } else if ((c == 'g') && (strncmp(argv[1], "get", length) == 0)) { Tk_Window window; Tk_Uid value; if (argc != 5) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " get window name class\"", (char *) NULL); return TCL_ERROR; } window = Tk_NameToWindow(interp, argv[2], tkwin); if (window == NULL) { return TCL_ERROR; } value = Tk_GetOption(window, argv[3], argv[4]); if (value != NULL) { interp->result = value; } return TCL_OK; } else if ((c == 'r') && (strncmp(argv[1], "readfile", length) == 0)) { int priority; if ((argc != 3) && (argc != 4)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " readfile fileName ?priority?\"", (char *) NULL); return TCL_ERROR; } if (argc == 4) { priority = ParsePriority(interp, argv[3]); if (priority < 0) { return TCL_ERROR; } } else { priority = TK_INTERACTIVE_PRIO; } return ReadOptionFile(interp, tkwin, argv[2], priority); } else { Tcl_AppendResult(interp, "bad option \"", argv[1], "\": must be add, clear, get, or readfile", (char *) NULL); return TCL_ERROR; } } /* *-------------------------------------------------------------- * * TkOptionDeadWindow -- * * This procedure is called whenever a window is deleted. * It cleans up any option-related stuff associated with * the window. * * Results: * None. * * Side effects: * Option-related resources are freed. See code below * for details. * *-------------------------------------------------------------- */ void TkOptionDeadWindow(winPtr) register TkWindow *winPtr; /* Window to be cleaned up. */ { /* * If this window is in the option stacks, then clear the stacks. */ if (winPtr->optionLevel != -1) { int i; for (i = 1; i <= curLevel; i++) { levels[curLevel].winPtr->optionLevel = -1; } curLevel = 0; cachedWindow = NULL; } /* * If this window was a main window, then delete its option * database. */ if ((winPtr->mainPtr->winPtr == winPtr) && (winPtr->mainPtr->optionRootPtr != NULL)) { ClearOptionTree(winPtr->mainPtr->optionRootPtr); winPtr->mainPtr->optionRootPtr = NULL; } } /* *---------------------------------------------------------------------- * * ParsePriority -- * * Parse a string priority value. * * Results: * The return value is the integer priority level corresponding * to string, or -1 if string doesn't point to a valid priority level. * In this case, an error message is left in interp->result. * * Side effects: * None. * *---------------------------------------------------------------------- */ static int ParsePriority(interp, string) Tcl_Interp *interp; /* Interpreter to use for error reporting. */ char *string; /* Describes a priority level, either * symbolically or numerically. */ { char c; int length, priority; c = string[0]; length = strlen(string); if ((c == 'w') && (strncmp(string, "widgetDefault", length) == 0)) { return TK_WIDGET_DEFAULT_PRIO; } else if ((c == 's') && (strncmp(string, "startupFile", length) == 0)) { return TK_STARTUP_FILE_PRIO; } else if ((c == 'u') && (strncmp(string, "userDefault", length) == 0)) { return TK_USER_DEFAULT_PRIO; } else if ((c == 'i') && (strncmp(string, "interactive", length) == 0)) { return TK_INTERACTIVE_PRIO; } else { char *end; priority = strtoul(string, &end, 0); if ((end == string) || (*end != 0) || (priority < 0) || (priority > 100)) { Tcl_AppendResult(interp, "bad priority level \"", string, "\": must be widgetDefault, startupFile, userDefault, ", "interactive, or a number between 0 and 100", (char *) NULL); return -1; } } return priority; } /* *---------------------------------------------------------------------- * * AddFromString -- * * Given a string containing lines in the standard format for * X resources (see other documentation for details on what this * is), parse the resource specifications and enter them as options * for tkwin's main window. * * Results: * The return value is a standard Tcl return code. In the case of * an error in parsing string, TCL_ERROR will be returned and an * error message will be left in interp->result. The memory at * string is totally trashed by this procedure. If you care about * its contents, make a copy before calling here. * * Side effects: * None. * *---------------------------------------------------------------------- */ static int AddFromString(interp, tkwin, string, priority) Tcl_Interp *interp; /* Interpreter to use for reporting results. */ Tk_Window tkwin; /* Token for window: options are entered * for this window's main window. */ char *string; /* String containing option specifiers. */ int priority; /* Priority level to use for options in * this string, such as TK_USER_DEFAULT_PRIO * or TK_INTERACTIVE_PRIO. Must be between * 0 and TK_MAX_PRIO. */ { register char *src, *dst; char *name, *value; int lineNum; src = string; lineNum = 1; while (1) { /* * Skip leading white space and empty lines and comment lines, and * check for the end of the spec. */ while ((*src == ' ') || (*src == '\t')) { src++; } if ((*src == '#') || (*src == '!')) { do { src++; if ((src[0] == '\\') && (src[1] == '\n')) { src += 2; lineNum++; } } while ((*src != '\n') && (*src != 0)); } if (*src == '\n') { src++; lineNum++; continue; } if (*src == '\0') { break; } /* * Parse off the option name, collapsing out backslash-newline * sequences of course. */ dst = name = src; while (*src != ':') { if ((*src == '\0') || (*src == '\n')) { sprintf(interp->result, "missing colon on line %d", lineNum); return TCL_ERROR; } if ((src[0] == '\\') && (src[1] == '\n')) { src += 2; lineNum++; } else { *dst = *src; dst++; src++; } } /* * Eliminate trailing white space on the name, and null-terminate * it. */ while ((dst != name) && ((dst[-1] == ' ') || (dst[-1] == '\t'))) { dst--; } *dst = '\0'; /* * Skip white space between the name and the value. */ src++; while ((*src == ' ') || (*src == '\t')) { src++; } if (*src == '\0') { sprintf(interp->result, "missing value on line %d", lineNum); return TCL_ERROR; } /* * Parse off the value, squeezing out backslash-newline sequences * along the way. */ dst = value = src; while (*src != '\n') { if (*src == '\0') { sprintf(interp->result, "missing newline on line %d", lineNum); return TCL_ERROR; } if ((src[0] == '\\') && (src[1] == '\n')) { src += 2; lineNum++; } else { *dst = *src; dst++; src++; } } *dst = 0; /* * Enter the option into the database. */ Tk_AddOption(tkwin, name, value, priority); src++; lineNum++; } return TCL_OK; } /* *---------------------------------------------------------------------- * * ReadOptionFile -- * * Read a file of options ("resources" in the old X terminology) * and load them into the option database. * * Results: * The return value is a standard Tcl return code. In the case of * an error in parsing string, TCL_ERROR will be returned and an * error message will be left in interp->result. * * Side effects: * None. * *---------------------------------------------------------------------- */ static int ReadOptionFile(interp, tkwin, fileName, priority) Tcl_Interp *interp; /* Interpreter to use for reporting results. */ Tk_Window tkwin; /* Token for window: options are entered * for this window's main window. */ char *fileName; /* Name of file containing options. */ int priority; /* Priority level to use for options in * this file, such as TK_USER_DEFAULT_PRIO * or TK_INTERACTIVE_PRIO. Must be between * 0 and TK_MAX_PRIO. */ { char *realName, *buffer; int fileId, result; struct stat statBuf; realName = Tcl_TildeSubst(interp, fileName); if (fileName == NULL) { return TCL_ERROR; } #ifdef MSDOS fileId = open(realName, O_RDONLY | O_BINARY, 0); #else fileId = open(realName, O_RDONLY, 0); #endif if (fileId < 0) { Tcl_AppendResult(interp, "couldn't read file \"", fileName, "\"", (char *) NULL); return TCL_ERROR; } if (fstat(fileId, &statBuf) == -1) { Tcl_AppendResult(interp, "couldn't stat file \"", fileName, "\"", (char *) NULL); close(fileId); return TCL_ERROR; } buffer = (char *) ckalloc((unsigned) statBuf.st_size+1); #ifdef MSDOS if (read(fileId, buffer, (int) statBuf.st_size) < 0) { #else if (read(fileId, buffer, (int) statBuf.st_size) != statBuf.st_size) { #endif Tcl_AppendResult(interp, "error reading file \"", fileName, "\"", (char *) NULL); close(fileId); return TCL_ERROR; } close(fileId); buffer[statBuf.st_size] = 0; result = AddFromString(interp, tkwin, buffer, priority); ckfree(buffer); return result; } /* *-------------------------------------------------------------- * * NewArray -- * * Create a new ElArray structure of a given size. * * Results: * The return value is a pointer to a properly initialized * element array with "numEls" space. The array is marked * as having no active elements. * * Side effects: * Memory is allocated. * *-------------------------------------------------------------- */ static ElArray * NewArray(numEls) int numEls; /* How many elements of space to allocate. */ { register ElArray *arrayPtr; arrayPtr = (ElArray *) ckalloc(EL_ARRAY_SIZE(numEls)); arrayPtr->arraySize = numEls; arrayPtr->numUsed = 0; arrayPtr->nextToUse = arrayPtr->els; return arrayPtr; } /* *-------------------------------------------------------------- * * ExtendArray -- * * Add a new element to an array, extending the array if * necessary. * * Results: * The return value is a pointer to the new array, which * will be different from arrayPtr if the array got expanded. * * Side effects: * Memory may be allocated or freed. * *-------------------------------------------------------------- */ static ElArray * ExtendArray(arrayPtr, elPtr) register ElArray *arrayPtr; /* Array to be extended. */ register Element *elPtr; /* Element to be copied into array. */ { /* * If the current array has filled up, make it bigger. */ if (arrayPtr->numUsed >= arrayPtr->arraySize) { register ElArray *newPtr; newPtr = (ElArray *) ckalloc(EL_ARRAY_SIZE(2*arrayPtr->arraySize)); newPtr->arraySize = 2*arrayPtr->arraySize; newPtr->numUsed = arrayPtr->numUsed; newPtr->nextToUse = &newPtr->els[newPtr->numUsed]; memcpy((VOID *) newPtr->els, (VOID *) arrayPtr->els, (arrayPtr->arraySize*sizeof(Element))); ckfree((char *) arrayPtr); arrayPtr = newPtr; } *arrayPtr->nextToUse = *elPtr; arrayPtr->nextToUse++; arrayPtr->numUsed++; return arrayPtr; } /* *-------------------------------------------------------------- * * SetupStacks -- * * Arrange the stacks so that they cache all the option * information for a particular window. * * Results: * None. * * Side effects: * The stacks are modified to hold information for tkwin * and all its ancestors in the window hierarchy. * *-------------------------------------------------------------- */ static void SetupStacks(winPtr, leaf) TkWindow *winPtr; /* Window for which information is to * be cached. */ int leaf; /* Non-zero means this is the leaf * window being probed. Zero means this * is an ancestor of the desired leaf. */ { int level, i, *iPtr; register StackLevel *levelPtr; register ElArray *arrayPtr; /* * The following array defines the order in which the current * stacks are searched to find matching entries to add to the * stacks. Given the current priority-based scheme, the order * below is no longer relevant; all that matters is that an * element is on the list *somewhere*. The ordering is a relic * of the old days when priorities were determined differently. */ static int searchOrder[] = {WILDCARD_NODE_CLASS, WILDCARD_NODE_NAME, EXACT_NODE_CLASS, EXACT_NODE_NAME, -1}; if (winPtr->mainPtr->optionRootPtr == NULL) { OptionInit(winPtr->mainPtr); } /* * Step 1: make sure that options are cached for this window's * parent. */ if (winPtr->parentPtr != NULL) { level = winPtr->parentPtr->optionLevel; if ((level == -1) || (cachedWindow == NULL)) { SetupStacks(winPtr->parentPtr, 0); level = winPtr->parentPtr->optionLevel; } level++; } else { level = 1; } /* * Step 2: pop extra unneeded information off the stacks and * mark those windows as no longer having cached information. */ if (curLevel >= level) { while (curLevel >= level) { levels[curLevel].winPtr->optionLevel = -1; curLevel--; } levelPtr = &levels[level]; for (i = 0; i < NUM_STACKS; i++) { arrayPtr = stacks[i]; arrayPtr->numUsed = levelPtr->bases[i]; arrayPtr->nextToUse = &arrayPtr->els[arrayPtr->numUsed]; } } curLevel = winPtr->optionLevel = level; /* * Step 3: if the root database information isn't loaded or * isn't valid, initialize level 0 of the stack from the * database root (this only happens if winPtr is a main window). */ if ((curLevel == 1) && ((cachedWindow == NULL) || (cachedWindow->mainPtr != winPtr->mainPtr))) { for (i = 0; i < NUM_STACKS; i++) { arrayPtr = stacks[i]; arrayPtr->numUsed = 0; arrayPtr->nextToUse = arrayPtr->els; } ExtendStacks(winPtr->mainPtr->optionRootPtr, 0); } /* * Step 4: create a new stack level; grow the level array if * we've run out of levels. Clear the stacks for EXACT_LEAF_NAME * and EXACT_LEAF_CLASS (anything that was there is of no use * any more). */ if (curLevel >= numLevels) { StackLevel *newLevels; newLevels = (StackLevel *) ckalloc((unsigned) (numLevels*2*sizeof(StackLevel))); memcpy((VOID *) newLevels, (VOID *) levels, (numLevels*sizeof(StackLevel))); ckfree((char *) levels); numLevels *= 2; levels = newLevels; } levelPtr = &levels[curLevel]; levelPtr->winPtr = winPtr; arrayPtr = stacks[EXACT_LEAF_NAME]; arrayPtr->numUsed = 0; arrayPtr->nextToUse = arrayPtr->els; arrayPtr = stacks[EXACT_LEAF_CLASS]; arrayPtr->numUsed = 0; arrayPtr->nextToUse = arrayPtr->els; levelPtr->bases[EXACT_LEAF_NAME] = stacks[EXACT_LEAF_NAME]->numUsed; levelPtr->bases[EXACT_LEAF_CLASS] = stacks[EXACT_LEAF_CLASS]->numUsed; levelPtr->bases[EXACT_NODE_NAME] = stacks[EXACT_NODE_NAME]->numUsed; levelPtr->bases[EXACT_NODE_CLASS] = stacks[EXACT_NODE_CLASS]->numUsed; levelPtr->bases[WILDCARD_LEAF_NAME] = stacks[WILDCARD_LEAF_NAME]->numUsed; levelPtr->bases[WILDCARD_LEAF_CLASS] = stacks[WILDCARD_LEAF_CLASS]->numUsed; levelPtr->bases[WILDCARD_NODE_NAME] = stacks[WILDCARD_NODE_NAME]->numUsed; levelPtr->bases[WILDCARD_NODE_CLASS] = stacks[WILDCARD_NODE_CLASS]->numUsed; /* * Step 5: scan the current stack level looking for matches to this * window's name or class; where found, add new information to the * stacks. */ for (iPtr = searchOrder; *iPtr != -1; iPtr++) { register Element *elPtr; int count; Tk_Uid id; i = *iPtr; if (i & CLASS) { id = winPtr->classUid; } else { id = winPtr->nameUid; } elPtr = stacks[i]->els; count = levelPtr->bases[i]; /* * For wildcard stacks, check all entries; for non-wildcard * stacks, only check things that matched in the parent. */ if (!(i & WILDCARD)) { elPtr += levelPtr[-1].bases[i]; count -= levelPtr[-1].bases[i]; } for ( ; count > 0; elPtr++, count--) { if (elPtr->nameUid != id) { continue; } ExtendStacks(elPtr->child.arrayPtr, leaf); } } cachedWindow = winPtr; } /* *-------------------------------------------------------------- * * ExtendStacks -- * * Given an element array, copy all the elements from the * array onto the system stacks (except for irrelevant leaf * elements). * * Results: * None. * * Side effects: * The option stacks are extended. * *-------------------------------------------------------------- */ static void ExtendStacks(arrayPtr, leaf) ElArray *arrayPtr; /* Array of elements to copy onto stacks. */ int leaf; /* If zero, then don't copy exact leaf * elements. */ { register int count; register Element *elPtr; for (elPtr = arrayPtr->els, count = arrayPtr->numUsed; count > 0; elPtr++, count--) { if (!(elPtr->flags & (NODE|WILDCARD)) && !leaf) { continue; } stacks[elPtr->flags] = ExtendArray(stacks[elPtr->flags], elPtr); } } /* *-------------------------------------------------------------- * * OptionInit -- * * Initialize data structures for option handling. * * Results: * None. * * Side effects: * Option-related data structures get initialized. * *-------------------------------------------------------------- */ static void OptionInit(mainPtr) register TkMainInfo *mainPtr; /* Top-level information about * window that isn't initialized * yet. */ { int i; Tcl_Interp *interp; /* * First, once-only initialization. */ if (numLevels == 0) { numLevels = 5; levels = (StackLevel *) ckalloc((unsigned) (5*sizeof(StackLevel))); for (i = 0; i < NUM_STACKS; i++) { stacks[i] = NewArray(10); levels[0].bases[i] = 0; } defaultMatch.nameUid = NULL; defaultMatch.child.valueUid = NULL; defaultMatch.priority = -1; defaultMatch.flags = 0; } /* * Then, per-main-window initialization. Create and delete dummy * interpreter for message logging. */ mainPtr->optionRootPtr = NewArray(20); interp = Tcl_CreateInterp(); (void) GetDefaultOptions(interp, mainPtr->winPtr); Tcl_DeleteInterp(interp); } /* *-------------------------------------------------------------- * * ClearOptionTree -- * * This procedure is called to erase everything in a * hierarchical option database. * * Results: * None. * * Side effects: * All the options associated with arrayPtr are deleted, * along with all option subtrees. The space pointed to * by arrayPtr is freed. * *-------------------------------------------------------------- */ static void ClearOptionTree(arrayPtr) ElArray *arrayPtr; /* Array of options; delete everything * referred to recursively by this. */ { register Element *elPtr; int count; for (count = arrayPtr->numUsed, elPtr = arrayPtr->els; count > 0; count--, elPtr++) { if (elPtr->flags & NODE) { ClearOptionTree(elPtr->child.arrayPtr); } } ckfree((char *) arrayPtr); } /* *-------------------------------------------------------------- * * GetDefaultOptions -- * * This procedure is invoked to load the default set of options * for a window. * * Results: * None. * * Side effects: * Options are added to those for winPtr's main window. If * there exists a RESOURCE_MANAGER proprety for winPtr's * display, that is used. Otherwise, the .Xdefaults file in * the user's home directory is used. * *-------------------------------------------------------------- */ static int GetDefaultOptions(interp, winPtr) Tcl_Interp *interp; /* Interpreter to use for error reporting. */ TkWindow *winPtr; /* Fetch option defaults for main window * associated with this. */ { char *regProp, *home, *fileName; int result, actualFormat; unsigned long numItems, bytesAfter; Atom actualType; /* * Try the RESOURCE_MANAGER property on the root window first. */ regProp = NULL; result = XGetWindowProperty(winPtr->display, Tk_DefaultRootWindow(winPtr->display), XA_RESOURCE_MANAGER, 0, 100000, False, XA_STRING, &actualType, &actualFormat, &numItems, &bytesAfter, (unsigned char **) ®Prop); if ((result == Success) && (actualType == XA_STRING) && (actualFormat == 8)) { result = AddFromString(interp, (Tk_Window) winPtr, regProp, TK_USER_DEFAULT_PRIO); XFree(regProp); return result; } /* * No luck there. Try a .Xdefaults file in the user's home * directory. */ if (regProp != NULL) { XFree(regProp); } home = getenv("HOME"); if (home == NULL) { sprintf(interp->result, "no RESOURCE_MANAGER property and no HOME envariable"); return TCL_ERROR; } fileName = (char *) ckalloc((unsigned) (strlen(home) + 20)); sprintf(fileName, "%s/.Xdefaults", home); result = ReadOptionFile(interp, (Tk_Window) winPtr, fileName, TK_USER_DEFAULT_PRIO); ckfree(fileName); return result; } micropolis-activity/src/tk/tk.h0000664000076400007640000007101010724145723017026 0ustar simcitysimcity/* * tk.h -- * * Declarations for Tk-related things that are visible * outside of the Tk module itself. * * Copyright 1989-1992 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. * * $Header: /user6/ouster/wish/RCS/tk.h,v 1.90 92/08/20 16:36:30 ouster Exp $ SPRITE (Berkeley) */ #ifndef _TK #define _TK #ifndef _TCL #include #endif #ifndef _XLIB_H #include #endif #ifdef __STDC__ /* This is so gcc's stddef.h doesn't clash with sunos4.1.1's stdtypes.h */ #ifdef __sys_stdtypes_h #define _PTRDIFF_T #define _SIZE_T #define _WCHAR_T #endif #include #endif /* * Dummy types that are used by clients: */ typedef struct Tk_ErrorHandler_ *Tk_ErrorHandler; typedef struct Tk_TimerToken_ *Tk_TimerToken; typedef struct Tk_Window_ *Tk_Window; typedef struct Tk_3DBorder_ *Tk_3DBorder; typedef struct Tk_BindingTable_ *Tk_BindingTable; /* * Additional types exported to clients. */ typedef char *Tk_Uid; /* * Structure used to specify how to handle argv options. */ typedef struct { char *key; /* The key string that flags the option in the * argv array. */ int type; /* Indicates option type; see below. */ char *src; /* Value to be used in setting dst; usage * depends on type. */ char *dst; /* Address of value to be modified; usage * depends on type. */ char *help; /* Documentation message describing this option. */ } Tk_ArgvInfo; /* * Legal values for the type field of a Tk_ArgvInfo: see the user * documentation for details. */ #define TK_ARGV_CONSTANT 15 #define TK_ARGV_INT 16 #define TK_ARGV_STRING 17 #define TK_ARGV_UID 18 #define TK_ARGV_REST 19 #define TK_ARGV_FLOAT 20 #define TK_ARGV_FUNC 21 #define TK_ARGV_GENFUNC 22 #define TK_ARGV_HELP 23 #define TK_ARGV_CONST_OPTION 24 #define TK_ARGV_OPTION_VALUE 25 #define TK_ARGV_OPTION_NAME_VALUE 26 #define TK_ARGV_END 27 /* * Flag bits for passing to Tk_ParseArgv: */ #define TK_ARGV_NO_DEFAULTS 0x1 #define TK_ARGV_NO_LEFTOVERS 0x2 #define TK_ARGV_NO_ABBREV 0x4 #define TK_ARGV_DONT_SKIP_FIRST_ARG 0x8 /* * Structure used to describe application-specific configuration * options: indicates procedures to call to parse an option and * to return a text string describing an option. */ typedef int (Tk_OptionParseProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, Tk_Window tkwin, char *value, char *widgRec, int offset)); typedef char *(Tk_OptionPrintProc) _ANSI_ARGS_((ClientData clientData, Tk_Window tkwin, char *widgRec, int offset, Tcl_FreeProc **freeProcPtr)); typedef struct Tk_CustomOption { Tk_OptionParseProc *parseProc; /* Procedure to call to parse an * option and store it in converted * form. */ Tk_OptionPrintProc *printProc; /* Procedure to return a printable * string describing an existing * option. */ ClientData clientData; /* Arbitrary one-word value used by * option parser: passed to * parseProc and printProc. */ } Tk_CustomOption; /* * Structure used to specify information for Tk_ConfigureWidget. Each * structure gives complete information for one option, including * how the option is specified on the command line, where it appears * in the option database, etc. */ typedef struct Tk_ConfigSpec { int type; /* Type of option, such as TK_CONFIG_COLOR; * see definitions below. Last option in * table must have type TK_CONFIG_END. */ char *argvName; /* Switch used to specify option in argv. * NULL means this spec is part of a group. */ char *dbName; /* Name for option in option database. */ char *dbClass; /* Class for option in database. */ char *defValue; /* Default value for option if not * specified in command line or database. */ int offset; /* Where in widget record to store value; * use Tk_Offset macro to generate values * for this. */ int specFlags; /* Any combination of the values defined * below; other bits are used internally * by tkConfig.c. */ Tk_CustomOption *customPtr; /* If type is TK_CONFIG_CUSTOM then this is * a pointer to info about how to parse and * print the option. Otherwise it is * irrelevant. */ } Tk_ConfigSpec; /* * Type values for Tk_ConfigSpec structures. See the user * documentation for details. */ #define TK_CONFIG_BOOLEAN 1 #define TK_CONFIG_INT 2 #define TK_CONFIG_DOUBLE 3 #define TK_CONFIG_STRING 4 #define TK_CONFIG_UID 5 #define TK_CONFIG_COLOR 6 #define TK_CONFIG_FONT 7 #define TK_CONFIG_BITMAP 8 #define TK_CONFIG_BORDER 9 #define TK_CONFIG_RELIEF 10 #define TK_CONFIG_CURSOR 11 #define TK_CONFIG_ACTIVE_CURSOR 12 #define TK_CONFIG_JUSTIFY 13 #define TK_CONFIG_ANCHOR 14 #define TK_CONFIG_SYNONYM 15 #define TK_CONFIG_CAP_STYLE 16 #define TK_CONFIG_JOIN_STYLE 17 #define TK_CONFIG_PIXELS 18 #define TK_CONFIG_MM 19 #define TK_CONFIG_WINDOW 20 #define TK_CONFIG_CUSTOM 21 #define TK_CONFIG_END 22 #define TK_CONFIG_PIXMAP 30 /* * Macro to use to fill in "offset" fields of Tk_ConfigInfos. * Computes number of bytes from beginning of structure to a * given field. */ #ifdef offsetof #define Tk_Offset(type, field) ((int) offsetof(type, field)) #else #define Tk_Offset(type, field) ((int) ((char *) &((type *) 0)->field)) #endif /* * Possible values for flags argument to Tk_ConfigureWidget: */ #define TK_CONFIG_ARGV_ONLY 1 /* * Possible flag values for Tk_ConfigInfo structures. Any bits at * or above TK_CONFIG_USER_BIT may be used by clients for selecting * certain entries. Before changing any values here, coordinate with * tkConfig.c (internal-use-only flags are defined there). */ #define TK_CONFIG_COLOR_ONLY 1 #define TK_CONFIG_MONO_ONLY 2 #define TK_CONFIG_NULL_OK 4 #define TK_CONFIG_DONT_SET_DEFAULT 8 #define TK_CONFIG_OPTION_SPECIFIED 0x10 #define TK_CONFIG_USER_BIT 0x100 /* * Bits to pass to Tk_CreateFileHandler to indicate what sorts * of events are of interest: */ #define TK_READABLE 1 #define TK_WRITABLE 2 #define TK_EXCEPTION 4 /* * Flag values to pass to Tk_DoOneEvent to disable searches * for some kinds of events: */ #define TK_DONT_WAIT 1 #define TK_X_EVENTS 2 #define TK_FILE_EVENTS 4 #define TK_TIMER_EVENTS 8 #define TK_IDLE_EVENTS 0x10 #define TK_ALL_EVENTS 0x1e /* * Priority levels to pass to Tk_AddOption: */ #define TK_WIDGET_DEFAULT_PRIO 20 #define TK_STARTUP_FILE_PRIO 40 #define TK_USER_DEFAULT_PRIO 60 #define TK_INTERACTIVE_PRIO 80 #define TK_MAX_PRIO 100 /* * Relief values returned by Tk_GetRelief: */ #define TK_RELIEF_RAISED 1 #define TK_RELIEF_FLAT 2 #define TK_RELIEF_SUNKEN 4 /* * Special EnterNotify/LeaveNotify "mode" for use in events * generated by tkShare.c. Pick a high enough value that it's * unlikely to conflict with existing values (like NotifyNormal) * or any new values defined in the future. */ #define TK_NOTIFY_SHARE 20 /* * Enumerated type for describing a point by which to anchor something: */ typedef enum { TK_ANCHOR_N, TK_ANCHOR_NE, TK_ANCHOR_E, TK_ANCHOR_SE, TK_ANCHOR_S, TK_ANCHOR_SW, TK_ANCHOR_W, TK_ANCHOR_NW, TK_ANCHOR_CENTER } Tk_Anchor; /* * Enumerated type for describing a style of justification: */ typedef enum { TK_JUSTIFY_LEFT, TK_JUSTIFY_RIGHT, TK_JUSTIFY_CENTER, TK_JUSTIFY_FILL } Tk_Justify; /* *-------------------------------------------------------------- * * Macros for querying Tk_Window structures. See the * manual entries for documentation. * *-------------------------------------------------------------- */ #define Tk_Display(tkwin) (((Tk_FakeWin *) (tkwin))->display) #define Tk_ScreenNumber(tkwin) (((Tk_FakeWin *) (tkwin))->screenNum) #define Tk_Screen(tkwin) (ScreenOfDisplay(Tk_Display(tkwin), \ Tk_ScreenNumber(tkwin))) #define Tk_WindowId(tkwin) (((Tk_FakeWin *) (tkwin))->window) #define Tk_PathName(tkwin) (((Tk_FakeWin *) (tkwin))->pathName) #define Tk_Name(tkwin) (((Tk_FakeWin *) (tkwin))->nameUid) #define Tk_Class(tkwin) (((Tk_FakeWin *) (tkwin))->classUid) #define Tk_X(tkwin) (((Tk_FakeWin *) (tkwin))->changes.x) #define Tk_Y(tkwin) (((Tk_FakeWin *) (tkwin))->changes.y) #define Tk_Width(tkwin) (((Tk_FakeWin *) (tkwin))->changes.width) #define Tk_Height(tkwin) \ (((Tk_FakeWin *) (tkwin))->changes.height) #define Tk_Changes(tkwin) (&((Tk_FakeWin *) (tkwin))->changes) #define Tk_Attributes(tkwin) (&((Tk_FakeWin *) (tkwin))->atts) #define Tk_IsMapped(tkwin) \ (((Tk_FakeWin *) (tkwin))->flags & TK_MAPPED) #define Tk_ReqWidth(tkwin) (((Tk_FakeWin *) (tkwin))->reqWidth) #define Tk_ReqHeight(tkwin) (((Tk_FakeWin *) (tkwin))->reqHeight) #define Tk_InternalBorderWidth(tkwin) \ (((Tk_FakeWin *) (tkwin))->internalBorderWidth) #define Tk_Parent(tkwin) (((Tk_FakeWin *) (tkwin))->parentPtr) /* * The structure below is needed by the macros above so that they can * access the fields of a Tk_Window. The fields not needed by the macros * are declared as "dummyX". The structure has its own type in order to * prevent applications from accessing Tk_Window fields except using * official macros. WARNING!! The structure definition must be kept * consistent with the TkWindow structure in tkInt.h. If you change one, * then change the other. See the declaration in tkInt.h for * documentation on what the fields are used for internally. */ typedef struct Tk_FakeWin { Display *display; char *dummy1; int screenNum; Window window; char *dummy2; Tk_Window parentPtr; char *dummy4; char *dummy5; char *pathName; Tk_Uid nameUid; Tk_Uid classUid; XWindowChanges changes; unsigned int dummy6; XSetWindowAttributes atts; unsigned long dummy7; unsigned int flags; char *dummy8; char *dummy9; ClientData dummy10; int dummy12; char *dummy13; char *dummy14; ClientData dummy15; char *dummy16; ClientData dummy17; int reqWidth, reqHeight; int internalBorderWidth; char *dummyX; } Tk_FakeWin; /* * Flag values for TkWindow (and Tk_FakeWin) structures are: * * TK_MAPPED: 1 means window is currently mapped, * 0 means unmapped. * TK_RECURSIVE_DESTROY: 1 means a recursive destroy is in * progress, so some cleanup operations * can be omitted. * TK_TOP_LEVEL: 1 means this is a top-level window (it * was or will be created as a child of * a root window). * TK_ALREADY_DEAD: 1 means the window is in the process of * being destroyed already. * TK_NEED_CONFIG_NOTIFY: 1 means that the window has been reconfigured * before it was made to exist. At the time of * making it exist a ConfigureNotify event needs * to be generated. * TK_GRAB_FLAG: Used to manage grabs. See tkGrab.c for * details. */ #define TK_MAPPED 1 #define TK_RECURSIVE_DESTROY 2 #define TK_TOP_LEVEL 4 #define TK_ALREADY_DEAD 8 #define TK_NEED_CONFIG_NOTIFY 0x10 #define TK_GRAB_FLAG 0x20 /* *-------------------------------------------------------------- * * Additional procedure types defined by Tk. * *-------------------------------------------------------------- */ typedef int (Tk_ErrorProc) _ANSI_ARGS_((ClientData clientData, XErrorEvent *errEventPtr)); typedef void (Tk_EventProc) _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); typedef void (Tk_FileProc) _ANSI_ARGS_((ClientData clientData, int mask)); typedef void (Tk_FocusProc) _ANSI_ARGS_((ClientData clientData, int gotFocus)); typedef void (Tk_FreeProc) _ANSI_ARGS_((ClientData clientData)); typedef int (Tk_GenericProc) _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); typedef void (Tk_GeometryProc) _ANSI_ARGS_((ClientData clientData, Tk_Window tkwin)); typedef int (Tk_GetSelProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, char *portion)); typedef void (Tk_IdleProc) _ANSI_ARGS_((ClientData clientData)); typedef void (Tk_LostSelProc) _ANSI_ARGS_((ClientData clientData)); typedef Bool (Tk_RestrictProc) _ANSI_ARGS_((Display *display, XEvent *eventPtr, char *arg)); typedef int (Tk_SelectionProc) _ANSI_ARGS_((ClientData clientData, int offset, char *buffer, int maxBytes)); typedef void (Tk_TimerProc) _ANSI_ARGS_((ClientData clientData)); /* *-------------------------------------------------------------- * * Exported procedures and variables. * *-------------------------------------------------------------- */ extern XColor * Tk_3DBorderColor _ANSI_ARGS_((Tk_3DBorder border)); extern void Tk_AddOption _ANSI_ARGS_((Tk_Window tkwin, char *name, char *value, int priority)); extern void Tk_BindEvent _ANSI_ARGS_((Tk_BindingTable bindingTable, XEvent *eventPtr, Tk_Window tkwin, int numObjects, ClientData *objectPtr)); extern void Tk_CancelIdleCall _ANSI_ARGS_((Tk_IdleProc *idleProc, ClientData clientData)); extern void Tk_ChangeWindowAttributes _ANSI_ARGS_((Tk_Window tkwin, unsigned long valueMask, XSetWindowAttributes *attsPtr)); extern int Tk_ConfigureInfo _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, Tk_ConfigSpec *specs, char *widgRec, char *argvName, int flags)); extern int Tk_ConfigureWidget _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, Tk_ConfigSpec *specs, int argc, char **argv, char *widgRec, int flags)); extern Tk_Window Tk_CoordsToWindow _ANSI_ARGS_((int rootX, int rootY, Tk_Window tkwin)); extern unsigned long Tk_CreateBinding _ANSI_ARGS_((Tcl_Interp *interp, Tk_BindingTable bindingTable, ClientData object, char *eventString, char *command, int append)); extern Tk_BindingTable Tk_CreateBindingTable _ANSI_ARGS_((Tcl_Interp *interp)); extern Tk_ErrorHandler Tk_CreateErrorHandler _ANSI_ARGS_((Display *display, int error, int request, int minorCode, Tk_ErrorProc *errorProc, ClientData clientData)); extern void Tk_CreateEventHandler _ANSI_ARGS_((Tk_Window token, unsigned long mask, Tk_EventProc *proc, ClientData clientData)); extern void Tk_CreateFileHandler _ANSI_ARGS_((int fd, int mask, Tk_FileProc *proc, ClientData clientData)); extern void Tk_CreateFocusHandler _ANSI_ARGS_((Tk_Window tkwin, Tk_FocusProc *proc, ClientData clientData)); extern void Tk_CreateGenericHandler _ANSI_ARGS_(( Tk_GenericProc *proc, ClientData clientData)); extern Tk_Window Tk_CreateMainWindow _ANSI_ARGS_((Tcl_Interp *interp, char *screenName, char *baseName)); extern void Tk_CreateSelHandler _ANSI_ARGS_((Tk_Window tkwin, Atom target, Tk_SelectionProc *proc, ClientData clientData, Atom format)); extern Tk_TimerToken Tk_CreateTimerHandler _ANSI_ARGS_((int milliseconds, Tk_TimerProc *proc, ClientData clientData)); // Added by Don to support finer timer resolution. extern Tk_TimerToken Tk_CreateMicroTimerHandler _ANSI_ARGS_((int seconds, int microseconds, Tk_TimerProc *proc, ClientData clientData)); extern Tk_Window Tk_CreateWindow _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window parent, char *name, char *screenName)); extern Tk_Window Tk_CreateWindowFromPath _ANSI_ARGS_(( Tcl_Interp *interp, Tk_Window tkwin, char *pathName, char *screenName)); extern int Tk_DefineBitmap _ANSI_ARGS_((Tcl_Interp *interp, Tk_Uid name, char *source, unsigned int width, unsigned int height)); extern int Tk_DefinePixmap _ANSI_ARGS_((Tcl_Interp *interp, Tk_Uid name, Tk_Window, Pixmap pixmap, char *source, unsigned int width, unsigned int height)); extern void Tk_DefineCursor _ANSI_ARGS_((Tk_Window window, Cursor cursor)); extern void Tk_DeleteAllBindings _ANSI_ARGS_(( Tk_BindingTable bindingTable, ClientData object)); extern int Tk_DeleteBinding _ANSI_ARGS_((Tcl_Interp *interp, Tk_BindingTable bindingTable, ClientData object, char *eventString)); extern void Tk_DeleteBindingTable _ANSI_ARGS_(( Tk_BindingTable bindingTable)); extern void Tk_DeleteErrorHandler _ANSI_ARGS_(( Tk_ErrorHandler handler)); extern void Tk_DeleteEventHandler _ANSI_ARGS_((Tk_Window token, unsigned long mask, Tk_EventProc *proc, ClientData clientData)); extern void Tk_DeleteFileHandler _ANSI_ARGS_((int fd)); extern void Tk_DeleteGenericHandler _ANSI_ARGS_(( Tk_GenericProc *proc, ClientData clientData)); extern void Tk_DeleteTimerHandler _ANSI_ARGS_(( Tk_TimerToken token)); extern void Tk_DestroyWindow _ANSI_ARGS_((Tk_Window tkwin)); extern char * Tk_DisplayName _ANSI_ARGS_((Tk_Window tkwin)); extern int Tk_DoOneEvent _ANSI_ARGS_((int flags)); extern void Tk_DoWhenIdle _ANSI_ARGS_((Tk_IdleProc *proc, ClientData clientData)); extern void Tk_Draw3DPolygon _ANSI_ARGS_((Display *display, Drawable drawable, Tk_3DBorder border, XPoint *pointPtr, int numPoints, int borderWidth, int leftRelief)); extern void Tk_Draw3DRectangle _ANSI_ARGS_((Display *display, Drawable drawable, Tk_3DBorder border, int x, int y, int width, int height, int borderWidth, int relief)); extern void Tk_EventuallyFree _ANSI_ARGS_((ClientData clientData, Tk_FreeProc *freeProc)); extern void Tk_Fill3DPolygon _ANSI_ARGS_((Display *display, Drawable drawable, Tk_3DBorder border, XPoint *pointPtr, int numPoints, int borderWidth, int leftRelief)); extern void Tk_Fill3DRectangle _ANSI_ARGS_((Display *display, Drawable drawable, Tk_3DBorder border, int x, int y, int width, int height, int borderWidth, int relief)); extern void Tk_Free3DBorder _ANSI_ARGS_((Tk_3DBorder border)); extern void Tk_FreeBitmap _ANSI_ARGS_((Pixmap bitmap)); extern void Tk_FreePixmap _ANSI_ARGS_((Pixmap bitmap)); extern void Tk_FreeColor _ANSI_ARGS_((XColor *colorPtr)); extern int Tk_IndexOfScreen _ANSI_ARGS_((Screen *screen)); extern int Tk_DefaultDepth _ANSI_ARGS_((Screen *screen)); extern Visual *Tk_DefaultVisual _ANSI_ARGS_((Screen *screen)); extern Colormap Tk_DefaultColormap _ANSI_ARGS_((Screen *screen)); extern Window Tk_DefaultRootWindow _ANSI_ARGS_((Display *dpy)); extern GC Tk_DefaultGC _ANSI_ARGS_((Screen *screen)); extern Pixmap Tk_DefaultPixmap _ANSI_ARGS_((Screen *screen)); extern void Tk_FreeCursor _ANSI_ARGS_((Cursor cursor)); extern void Tk_FreeFontStruct _ANSI_ARGS_(( XFontStruct *fontStructPtr)); extern void Tk_FreeGC _ANSI_ARGS_((GC gc)); extern void Tk_GeometryRequest _ANSI_ARGS_((Tk_Window tkwin, int reqWidth, int reqHeight)); extern Tk_3DBorder Tk_Get3DBorder _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, Colormap colormap, Tk_Uid colorName)); extern void Tk_GetAllBindings _ANSI_ARGS_((Tcl_Interp *interp, Tk_BindingTable bindingTable, ClientData object)); extern int Tk_GetAnchor _ANSI_ARGS_((Tcl_Interp *interp, char *string, Tk_Anchor *anchorPtr)); extern char * Tk_GetAtomName _ANSI_ARGS_((Tk_Window tkwin, Atom atom)); extern char * Tk_GetBinding _ANSI_ARGS_((Tcl_Interp *interp, Tk_BindingTable bindingTable, ClientData object, char *eventString)); extern Pixmap Tk_GetBitmap _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, Tk_Uid string)); extern Pixmap Tk_GetPixmap _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, Tk_Uid string)); extern Pixmap Tk_GetBitmapFromData _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, char *source, unsigned int width, unsigned int height)); extern Pixmap Tk_GetPixmapFromData _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, char *source, unsigned int width, unsigned int height)); extern int Tk_GetCapStyle _ANSI_ARGS_((Tcl_Interp *interp, char *string, int *capPtr)); extern XColor * Tk_GetColor _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, Colormap colormap, Tk_Uid name)); extern XColor * Tk_GetColorByValue _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, Colormap colormap, XColor *colorPtr)); extern Cursor Tk_GetCursor _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, Tk_Uid string)); extern Cursor Tk_GetCursorFromData _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, char *source, char *mask, unsigned int width, unsigned int height, int xHot, int yHot, Tk_Uid fg, Tk_Uid bg)); extern XFontStruct * Tk_GetFontStruct _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, Tk_Uid name)); extern GC Tk_GetGC _ANSI_ARGS_((Tk_Window tkwin, unsigned long valueMask, XGCValues *valuePtr)); extern int Tk_GetJoinStyle _ANSI_ARGS_((Tcl_Interp *interp, char *string, int *joinPtr)); extern int Tk_GetJustify _ANSI_ARGS_((Tcl_Interp *interp, char *string, Tk_Justify *justifyPtr)); extern Tk_Uid Tk_GetOption _ANSI_ARGS_((Tk_Window tkwin, char *name, char *className)); extern int Tk_GetPixels _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, char *string, int *intPtr)); extern int Tk_GetRelief _ANSI_ARGS_((Tcl_Interp *interp, char *name, int *reliefPtr)); extern void Tk_GetRootCoords _ANSI_ARGS_ ((Tk_Window tkwin, int *xPtr, int *yPtr)); extern int Tk_GetScreenMM _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, char *string, double *doublePtr)); extern int Tk_GetSelection _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, Atom target, Tk_GetSelProc *proc, ClientData clientData)); extern Tk_Uid Tk_GetUid _ANSI_ARGS_((char *string)); extern int Tk_Grab _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, int grabGlobal)); extern void Tk_HandleEvent _ANSI_ARGS_((XEvent *eventPtr)); extern Atom Tk_InternAtom _ANSI_ARGS_((Tk_Window tkwin, char *name)); extern void Tk_MainLoop _ANSI_ARGS_((void)); extern void Tk_MakeWindowExist _ANSI_ARGS_((Tk_Window tkwin)); extern void Tk_ManageGeometry _ANSI_ARGS_((Tk_Window tkwin, Tk_GeometryProc *proc, ClientData clientData)); extern void Tk_MapWindow _ANSI_ARGS_((Tk_Window tkwin)); extern void Tk_MoveResizeWindow _ANSI_ARGS_((Tk_Window tkwin, int x, int y, unsigned int width, unsigned int height)); extern void Tk_MoveWindow _ANSI_ARGS_((Tk_Window tkwin, int x, int y)); extern char * Tk_NameOf3DBorder _ANSI_ARGS_((Tk_3DBorder border)); extern char * Tk_NameOfAnchor _ANSI_ARGS_((Tk_Anchor anchor)); extern char * Tk_NameOfBitmap _ANSI_ARGS_((Pixmap bitmap)); extern char * Tk_NameOfPixmap _ANSI_ARGS_((Pixmap bitmap)); extern char * Tk_NameOfCapStyle _ANSI_ARGS_((int cap)); extern char * Tk_NameOfColor _ANSI_ARGS_((XColor *colorPtr)); extern char * Tk_NameOfCursor _ANSI_ARGS_((Cursor cursor)); extern char * Tk_NameOfFontStruct _ANSI_ARGS_(( XFontStruct *fontStructPtr)); extern char * Tk_NameOfJoinStyle _ANSI_ARGS_((int join)); extern char * Tk_NameOfJustify _ANSI_ARGS_((Tk_Justify justify)); extern char * Tk_NameOfRelief _ANSI_ARGS_((int relief)); extern Tk_Window Tk_NameToWindow _ANSI_ARGS_((Tcl_Interp *interp, char *pathName, Tk_Window tkwin)); extern void Tk_OwnSelection _ANSI_ARGS_((Tk_Window tkwin, Tk_LostSelProc *proc, ClientData clientData)); extern int Tk_ParseArgv _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, int *argcPtr, char **argv, Tk_ArgvInfo *argTable, int flags)); extern void Tk_Preserve _ANSI_ARGS_((ClientData clientData)); extern int Tk_RegisterInterp _ANSI_ARGS_((Tcl_Interp *interp, char *name, Tk_Window tkwin)); extern void Tk_Release _ANSI_ARGS_((ClientData clientData)); extern void Tk_ResizeWindow _ANSI_ARGS_((Tk_Window tkwin, unsigned int width, unsigned int height)); extern Tk_RestrictProc *Tk_RestrictEvents _ANSI_ARGS_((Tk_RestrictProc *proc, char *arg, char **prevArgPtr)); extern void Tk_SetBackgroundFromBorder _ANSI_ARGS_(( Tk_Window tkwin, Tk_3DBorder border)); extern void Tk_SetClass _ANSI_ARGS_((Tk_Window tkwin, char *className)); extern void Tk_SetGrid _ANSI_ARGS_((Tk_Window tkwin, int reqWidth, int reqHeight, int gridWidth, int gridHeight)); extern void Tk_SetInternalBorder _ANSI_ARGS_((Tk_Window tkwin, int width)); extern void Tk_SetWindowBackground _ANSI_ARGS_((Tk_Window tkwin, unsigned long pixel)); extern void Tk_SetWindowBackgroundPixmap _ANSI_ARGS_(( Tk_Window tkwin, Pixmap pixmap)); extern void Tk_SetWindowBorder _ANSI_ARGS_((Tk_Window tkwin, unsigned long pixel)); extern void Tk_SetWindowBorderWidth _ANSI_ARGS_((Tk_Window tkwin, int width)); extern void Tk_SetWindowBorderPixmap _ANSI_ARGS_((Tk_Window tkwin, Pixmap pixmap)); extern void Tk_ShareEvents _ANSI_ARGS_((Tk_Window tkwin, Tk_Uid groupId)); extern void Tk_SizeOfBitmap _ANSI_ARGS_((Pixmap bitmap, unsigned int *widthPtr, unsigned int *heightPtr)); extern void Tk_SizeOfPixmap _ANSI_ARGS_((Pixmap bitmap, unsigned int *widthPtr, unsigned int *heightPtr)); extern void Tk_Sleep _ANSI_ARGS_((int ms)); extern void Tk_UndefineCursor _ANSI_ARGS_((Tk_Window window)); extern int Tk_UndefinePixmap _ANSI_ARGS_((Tcl_Interp *interp, Tk_Uid name, Tk_Window tkwin)); extern void Tk_Ungrab _ANSI_ARGS_((Tk_Window tkwin)); extern void Tk_UnmapWindow _ANSI_ARGS_((Tk_Window tkwin)); extern void Tk_UnshareEvents _ANSI_ARGS_((Tk_Window tkwin, Tk_Uid groupId)); extern int tk_NumMainWindows; /* * Added by dhopkins for OLPC Micropolis gtk.Socket integration. */ extern Window tk_RootWindow; /* * Tcl commands exported by Tk: */ extern int Tk_AfterCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_ApplicationCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_BindCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_ButtonCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_CanvasCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_DestroyCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_EntryCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_FrameCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_FocusCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_GrabCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_ListboxCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_MenuCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_MenubuttonCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_MessageCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_OptionCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_PackCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_PlaceCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_ScaleCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_ScrollbarCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_SelectionCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_SendCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_TextCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_TkwaitCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_UpdateCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_WinfoCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tk_WmCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcp_AcceptCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcp_ConnectCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcp_ShutdownCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); extern int Tcp_FileHandlerCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); #endif /* _TK */ micropolis-activity/src/tk/tktxidx.c0000664000076400007640000004104510724145723020107 0ustar simcitysimcity/* * tkTextIndex.c -- * * This module provides procedures that manipulate indices for * text widgets. * * Copyright 1992 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkTextIndex.c,v 1.2 92/07/16 16:32:26 ouster Exp $ SPRITE (Berkeley)"; #endif #include "default.h" #include "tkconfig.h" #include "tk.h" #include "tktext.h" /* * Forward declarations for procedures defined later in this file: */ static void BackwardChars _ANSI_ARGS_((TkText *textPtr, TkTextLine *linePtr, int *lineIndexPtr, int *chPtr, int count)); static char * ForwBack _ANSI_ARGS_((TkText *textPtr, char *string, int *lineIndexPtr, int *chPtr)); static void ForwardChars _ANSI_ARGS_((TkText *textPtr, TkTextLine *linePtr, int *lineIndexPtr, int *chPtr, int count)); static char * StartEnd _ANSI_ARGS_((TkText *textPtr, char *string, int *lineIndexPtr, int *chPtr)); /* *---------------------------------------------------------------------- * * TkTextGetIndex -- * * Given a string, return the line and character indices that * it describes. * * Results: * The return value is a standard Tcl return result. If * TCL_OK is returned, then everything went well and information * is stored at *lineIndexPtr and *chPtr; otherwise TCL_ERROR * is returned and an error message is left in interp->result. * * Side effects: * None. * *---------------------------------------------------------------------- */ int TkTextGetIndex(interp, textPtr, string, lineIndexPtr, chPtr) Tcl_Interp *interp; /* Use this for error reporting. */ TkText *textPtr; /* Information about text widget. */ char *string; /* Textual description of position. */ int *lineIndexPtr; /* Store line number here. */ int *chPtr; /* Store character position here. */ { register char *p; char *end, *endOfBase; TkTextLine *linePtr; Tcl_HashEntry *hPtr; TkAnnotation *markPtr; TkTextTag *tagPtr; TkTextSearch search; int first; char c; /* *------------------------------------------------ * Stage 1: parse the base index. *------------------------------------------------ */ if (string[0] == '@') { /* * Find character at a given x,y location in the window. */ int x, y; p = string+1; x = strtol(p, &end, 0); if ((end == p) || (*end != ',')) { goto error; } p = end+1; y = strtol(p, &end, 0); if (end == p) { goto error; } *lineIndexPtr = TkBTreeLineIndex(TkTextCharAtLoc(textPtr, x, y, chPtr)); endOfBase = end; goto gotBase; } else if (isdigit(string[0]) || (string[0] == '-')) { /* * Base is identified with line and character indices. */ *lineIndexPtr = strtol(string, &end, 0) - 1; if ((end == string) || (*end != '.')) { goto error; } p = end+1; if ((*p == 'e') && (strncmp(p, "end", 3) == 0)) { linePtr = TkBTreeFindLine(textPtr->tree, *lineIndexPtr); if (linePtr == NULL) { Tcl_AppendResult(interp, "bad text index \"", string, "\": no such line in text", (char *) NULL); return TCL_ERROR; } *chPtr = linePtr->numBytes - 1; endOfBase = p+3; goto gotBase; } else { *chPtr = strtol(p, &end, 0); if (end == p) { goto error; } endOfBase = end; goto gotBase; } } for (p = string; *p != 0; p++) { if (isspace(*p) || (*p == '+') || (*p == '-')) { break; } } endOfBase = p; if ((string[0] == 'e') && (strncmp(string, "end", endOfBase-string) == 0)) { /* * Base position is end of text. */ *lineIndexPtr = TkBTreeNumLines(textPtr->tree) - 1; linePtr = TkBTreeFindLine(textPtr->tree, *lineIndexPtr); *chPtr = linePtr->numBytes - 1; goto gotBase; } else { /* * See if the base position is the name of a mark. */ c = *endOfBase; *endOfBase = 0; hPtr = Tcl_FindHashEntry(&textPtr->markTable, string); *endOfBase = c; if (hPtr != NULL) { markPtr = (TkAnnotation *) Tcl_GetHashValue(hPtr); *lineIndexPtr = TkBTreeLineIndex(markPtr->linePtr); *chPtr = markPtr->ch; goto gotBase; } } /* * Nothing has worked so far. See if the base has the form * "tag.first" or "tag.last" where "tag" is the name of a valid * tag. */ p = strchr(string, '.'); if (p == NULL) { goto error; } if ((p[1] == 'f') && (endOfBase == (p+6)) && (strncmp(p+1, "first", endOfBase - (p+1)) == 0)) { first = 1; } else if ((p[1] == 'l') && (endOfBase == (p+5)) && (strncmp(p+1, "last", endOfBase - (p+1)) == 0)) { first = 0; } else { goto error; } *p = 0; hPtr = Tcl_FindHashEntry(&textPtr->tagTable, string); *p = '.'; if (hPtr == NULL) { goto error; } tagPtr = (TkTextTag *) Tcl_GetHashValue(hPtr); TkBTreeStartSearch(textPtr->tree, 0, 0, TkBTreeNumLines(textPtr->tree), 0, tagPtr, &search); if (!TkBTreeNextTag(&search)) { Tcl_AppendResult(interp, "text doesn't contain any characters tagged with \"", Tcl_GetHashKey(&textPtr->tagTable, hPtr), "\"", (char *) NULL); return TCL_ERROR; } if (first) { *lineIndexPtr = search.line1; *chPtr = search.ch1; } else { while (TkBTreeNextTag(&search)) { *lineIndexPtr = search.line1; *chPtr = search.ch1; } } /* *------------------------------------------------------------------- * Stage 2: process zero or more modifiers. Each modifier is either * a keyword like "wordend" or "linestart", or it has the form * "op count units" where op is + or -, count is a number, and units * is "chars" or "lines". *------------------------------------------------------------------- */ gotBase: p = endOfBase; while (1) { while (isspace(*p)) { p++; } if (*p == 0) { return TCL_OK; } if ((*p == '+') || (*p == '-')) { p = ForwBack(textPtr, p, lineIndexPtr, chPtr); } else { p = StartEnd(textPtr, p, lineIndexPtr, chPtr); } if (p == NULL) { goto error; } } error: Tcl_AppendResult(interp, "bad text index \"", string, "\"", (char *) NULL); return TCL_ERROR; } /* *---------------------------------------------------------------------- * * TkTextPrintIndex -- * * Given a line number and a character index, this procedure * generates a string description of the position, which is * suitable for reading in again later. * * Results: * The characters pointed to by string are modified. * * Side effects: * None. * *---------------------------------------------------------------------- */ void TkTextPrintIndex(line, ch, string) int line; /* Line number. */ int ch; /* Character position within line. */ char *string; /* Place to store the position. Must have * at least POS_CHARS characters. */ { sprintf(string, "%d.%d", line+1, ch); } /* *---------------------------------------------------------------------- * * TkTextRoundIndex -- * * Given a line index and a character index, this procedure * adjusts those positions if necessary to correspond to the * nearest actual character within the text. * * Results: * The return value is a pointer to the line structure for * the line of the text's B-tree that contains the indicated * character. In addition, *lineIndexPtr and *chPtr are * modified if necessary to refer to an existing character * in the file. * * Side effects: * None. * *---------------------------------------------------------------------- */ TkTextLine * TkTextRoundIndex(textPtr, lineIndexPtr, chPtr) TkText *textPtr; /* Information about text widget. */ int *lineIndexPtr; /* Points to initial line index, * which is overwritten with actual * line index. */ int *chPtr; /* Points to initial character index, * which is overwritten with actual * character index. */ { int line, ch, lastLine; TkTextLine *linePtr; line = *lineIndexPtr; ch = *chPtr; if (line < 0) { line = 0; ch = 0; } lastLine = TkBTreeNumLines(textPtr->tree) - 1; if (line > lastLine) { line = lastLine; linePtr = TkBTreeFindLine(textPtr->tree, line); ch = linePtr->numBytes - 1; } else { linePtr = TkBTreeFindLine(textPtr->tree, line); if (ch < 0) { ch = 0; } if (ch >= linePtr->numBytes) { if (line == lastLine) { ch = linePtr->numBytes - 1; } else { line++; linePtr = TkBTreeNextLine(linePtr); ch = 0; } } } *lineIndexPtr = line; *chPtr = ch; return linePtr; } /* *---------------------------------------------------------------------- * * ForwBack -- * * This procedure handles +/- modifiers for indices to adjust * the index forwards or backwards. * * Results: * If the modifier is successfully parsed then the return value * is the address of the first character after the modifier, and * *lineIndexPtr and *chPtr are updated to reflect the modifier. * If there is a syntax error in the modifier then NULL is returned. * * Side effects: * None. * *---------------------------------------------------------------------- */ static char * ForwBack(textPtr, string, lineIndexPtr, chPtr) TkText *textPtr; /* Information about widget that index * refers to. */ char *string; /* String to parse for additional info * about modifier (count and units). * Points to "+" or "-" that starts * modifier. */ int *lineIndexPtr; /* Points to current line index, which will * be updated to reflect modifier. */ int *chPtr; /* Points to current character index, which * will be updated to reflect modifier. */ { register char *p; char *end, *units; int count, length, lastLine; TkTextLine *linePtr; /* * Get the count (how many units forward or backward). */ p = string+1; while (isspace(*p)) { p++; } count = strtoul(p, &end, 0); if (end == p) { return NULL; } p = end; while (isspace(*p)) { p++; } /* * Find the end of this modifier (next space or + or - character), * then parse the unit specifier and update the position * accordingly. */ units = p; while ((*p != 0) && !isspace(*p) && (*p != '+') && (*p != '-')) { p++; } length = p - units; if ((*units == 'c') && (strncmp(units, "chars", length) == 0)) { linePtr = TkTextRoundIndex(textPtr, lineIndexPtr, chPtr); if (*string == '+') { ForwardChars(textPtr, linePtr, lineIndexPtr, chPtr, count); } else { BackwardChars(textPtr, linePtr, lineIndexPtr, chPtr, count); } } else if ((*units == 'l') && (strncmp(units, "lines", length) == 0)) { if (*string == '+') { *lineIndexPtr += count; lastLine = TkBTreeNumLines(textPtr->tree) - 1; if (*lineIndexPtr > lastLine) { *lineIndexPtr = lastLine; } } else { *lineIndexPtr -= count; if (*lineIndexPtr < 0) { *lineIndexPtr = 0; } } linePtr = TkBTreeFindLine(textPtr->tree, *lineIndexPtr); if (*chPtr >= linePtr->numBytes) { *chPtr = linePtr->numBytes - 1; } if (*chPtr < 0) { *chPtr = 0; } } else { return NULL; } return p; } /* *---------------------------------------------------------------------- * * ForwardChars -- * * Given a position in a text widget, this procedure computes * a new position that is "count" characters ahead of the given * position. * * Results: * *LineIndexPtr and *chPtr are overwritten with new values * corresponding to the new position. * * Side effects: * None. * *---------------------------------------------------------------------- */ /* ARGSUSED */ static void ForwardChars(textPtr, linePtr, lineIndexPtr, chPtr, count) TkText *textPtr; /* Information about text widget. */ register TkTextLine *linePtr; /* Text line corresponding to * *lineIndexPtr. */ int *lineIndexPtr; /* Points to initial line index, * which is overwritten with final * line index. */ int *chPtr; /* Points to initial character index, * which is overwritten with final * character index. */ int count; /* How many characters forward to * move. Must not be negative. */ { TkTextLine *nextPtr; int bytesInLine; while (count > 0) { bytesInLine = linePtr->numBytes - *chPtr; if (bytesInLine > count) { *chPtr += count; return; } nextPtr = TkBTreeNextLine(linePtr); if (nextPtr == NULL) { *chPtr = linePtr->numBytes - 1; return; } *chPtr = 0; *lineIndexPtr += 1; linePtr = nextPtr; count -= bytesInLine; } } /* *---------------------------------------------------------------------- * * BackwardChars -- * * Given a position in a text widget, this procedure computes * a new position that is "count" characters earlier than the given * position. * * Results: * *LineIndexPtr and *chPtr are overwritten with new values * corresponding to the new position. * * Side effects: * None. * *---------------------------------------------------------------------- */ static void BackwardChars(textPtr, linePtr, lineIndexPtr, chPtr, count) TkText *textPtr; /* Information about text widget. */ register TkTextLine *linePtr; /* Text line corresponding to * *lineIndexPtr. */ int *lineIndexPtr; /* Points to initial line index, * which is overwritten with final * line index. */ int *chPtr; /* Points to initial character index, * which is overwritten with final * character index. */ int count; /* How many characters backward to * move. Must not be negative. */ { int bytesInLine; while (count > 0) { bytesInLine = *chPtr; if (bytesInLine >= count) { *chPtr -= count; return; } if (*lineIndexPtr <= 0) { *chPtr = 0; return; } *lineIndexPtr -= 1; linePtr = TkBTreeFindLine(textPtr->tree, *lineIndexPtr); count -= bytesInLine; *chPtr = linePtr->numBytes; } } /* *---------------------------------------------------------------------- * * StartEnd -- * * This procedure handles modifiers like "wordstart" and "lineend" * to adjust indices forwards or backwards. * * Results: * If the modifier is successfully parsed then the return value * is the address of the first character after the modifier, and * *lineIndexPtr and *chPtr are updated to reflect the modifier. * If there is a syntax error in the modifier then NULL is returned. * * Side effects: * None. * *---------------------------------------------------------------------- */ static char * StartEnd(textPtr, string, lineIndexPtr, chPtr) TkText *textPtr; /* Information about widget that index * refers to. */ char *string; /* String to parse for additional info * about modifier (count and units). * Points to first character of modifer * word. */ int *lineIndexPtr; /* Points to current line index, which will * be updated to reflect modifier. */ int *chPtr; /* Points to current character index, which * will be updated to reflect modifier. */ { char *p, c; int length; register TkTextLine *linePtr; /* * Find the end of the modifier word. */ for (p = string; isalnum(*p); p++) { /* Empty loop body. */ } length = p-string; linePtr = TkTextRoundIndex(textPtr, lineIndexPtr, chPtr); if ((*string == 'l') && (strncmp(string, "lineend", length) == 0) && (length >= 5)) { *chPtr = linePtr->numBytes - 1; } else if ((*string == 'l') && (strncmp(string, "linestart", length) == 0) && (length >= 5)) { *chPtr = 0; } else if ((*string == 'w') && (strncmp(string, "wordend", length) == 0) && (length >= 5)) { c = linePtr->bytes[*chPtr]; if (!isalnum(c) && (c != '_')) { if (*chPtr >= (linePtr->numBytes - 1)) { /* * End of line: go to start of next line unless this is the * last line in the text. */ if (TkBTreeNextLine(linePtr) != NULL) { *lineIndexPtr += 1; *chPtr = 0; } } else { *chPtr += 1; } } else { do { *chPtr += 1; c = linePtr->bytes[*chPtr]; } while (isalnum(c) || (c == '_')); } } else if ((*string == 'w') && (strncmp(string, "wordstart", length) == 0) && (length >= 5)) { c = linePtr->bytes[*chPtr]; if (isalnum(c) || (c == '_')) { while (*chPtr > 0) { c = linePtr->bytes[(*chPtr) - 1]; if (!isalnum(c) && (c != '_')) { break; } *chPtr -= 1; } } } else { return NULL; } return p; } micropolis-activity/src/tk/makefile.sgi0000664000076400007640000000615710724145723020532 0ustar simcitysimcity# # This is a simplified Makefile for use in Tk distributions. Before using # it to compile Tk, you may wish to reset some of the following variables: # # TCL_DIR - Name of directory holding tcl.h and tcl.a. # XLIB - Name of archive containing Xlib binaries. # # You may also wish to add some of the following switches to the CFLAGS # variable: # # -DX11R3 Causes code that depends on R4 facilities not to # be compiled. I haven't tested Tk with R3 in quite # a while, so this switch may not be enough to # generate a working R3 version of Tk. Furthermore, # use of this switch will disable some of the facilities # of Tk related to window managers. # -DNO_PROTOTYPE Turns off ANSI-style procedure prototypes and the # corresponding compile-time checks. Without this # defininition, prototypes will be turned on if the # compiler supports ANSI C by defining __STDC__. # -DTK_LIBRARY=\"dir\" Arranges for dir, which must be the name of a # directory, to be the library directory for Tk scripts. # This value gets put into the variable $tk_library # when a new application is created. The library # defaults to /usr/local/lib/tk, so you don't need the # switch unless your library is in a non-standard place. # TCL_DIR = ../tcl XPM_DIR = ../xpm XLIB = -lX11 CC = cc CFLAGS = -I. -I$(TCL_DIR) -O2 -DTK_VERSION=\"2.3\" -DUSE_XPM3 -I$(XPM_DIR) #CFLAGS = -I. -I$(TCL_DIR) -g -DTK_VERSION=\"2.3\" -DUSE_XPM3 -I$(XPM_DIR) LIBS = libtk.a $(TCL_DIR)/libtcl.a $(XPM_DIR)/libxpm.a WIDGOBJS = tkbutton.o tkentry.o tkframe.o tklist.o \ tkmenu.o tkmnbut.o tkmsg.o tkscale.o \ tkscrbar.o CANVOBJS = tkcanvas.o tkcvarc.o tkcvbmap.o tkcvline.o \ tkcvpoly.o tkcvtext.o tkcvwind.o tkrectov.o \ tktrig.o TEXTOBJS = tktext.o tktxbtre.o tktxdisp.o tktxidx.o tktxtag.o OBJS = tk3d.o tkargv.o tkatom.o tkbind.o tkbitmap.o \ tkcmds.o tkcolor.o tkconfig.o tkcursor.o tkerror.o \ tkevent.o tkfont.o tkget.o tkgc.o tkgeo.o tkgrab.o \ tkoption.o tkpack.o tkpixmap.o tkplace.o tkpresrv.o \ tkselect.o tksend.o tkshare.o tkwindow.o tkwm.o tkrawtcp.o \ $(WIDGOBJS) $(CANVOBJS) $(TEXTOBJS) WIDGSRCS = tkbutton.c tkentry.c tkframe.c tklist.c \ tkmenu.c tkmnbut.c tkmessage.c tkscale.c \ tkscrbar.c tktext.c tktxbtre.c tktxdisp.c \ tktextindex.c CANVSRCS = tkcanvas.c tkcvarc.c tkcvbmap.c tkcvline.c \ tkcvpoly.c tkcvtext.c tkcvwind.c tkrectov.c \ tktrig.c TEXTSRCS = tktext.c tktxbtre.c tktxdisp.c tktxidx.c tktxtag.c SRCS = tk3d.c tkargv.c tkatom.c tkbind.c tkbitmap.c \ tkcmds.c tkcolor.c tkconfig.c tkcursor.c tkerror.c \ tkevent.c tkfont.c tkget.c tkgc.c tkgeo.c tkgrab.c \ tkoption.c tkpack.c tkplace.c tkpresrv.c tkselect.c \ tksend.c tkshare.c tkwindow.c tkwm.c tkrawtcp.c $(widgsrcs) \ $(CANVSRCS) $(TEXTSRCS) all: wish wish: main.o $(LIBS) $(CC) $(CFLAGS) main.o $(LIBS) $(XLIB) -lm -o wish libtk.a: $(OBJS) rm -f libtk.a ar cr libtk.a $(OBJS) # ranlib libtk.a $(TCL_DIR)/libtcl.a: cd $(TCL_DIR); make libtcl.a clean: touch junk~ rm -f $(OBJS) main.o libtk.a wish *~ $(OBJS): tk.h tkint.h tkconfig.h $(WIDGOBJS): default.h $(CANVOBJS): default.h tkcanvas.h main.o: tk.h tkint.h micropolis-activity/src/tk/tktcp.h0000664000076400007640000000341710724145723017543 0ustar simcitysimcity/* tkTCP.h -- * * This file provides declarations needed by the TCP server * implementation for Tcl interpreters. * * $Header: /cluster21/kennykb/src/tclTCP.1.0beta/RCS/tclTCP.h,v 1.1 1992/02/14 19:57:51 kennykb Exp $ * $Source: /cluster21/kennykb/src/tclTCP.1.0beta/RCS/tclTCP.h,v $ * $Log: tclTCP.h,v $ * Revision 1.1 1992/02/14 19:57:51 kennykb * Initial revision * * * * Copyright (C) 1992 General Electric. * All rights reserved. * * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of General Electric not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * General Electric makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. * * This work was supported by the DARPA Initiative in Concurrent * Engineering (DICE) through DARPA Contract MDA972-88-C-0047. * */ #ifndef _TCLTCP #define _TCLTCP 1 #ifndef _TCL #include "tcl.h" #endif /* Definitions of the functions */ EXTERN int tcpCommand _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int argc, char * * argv)); extern void simpleCreateFileHandler _ANSI_ARGS_((int fd, int mask, Tk_FileProc * proc, ClientData clientData)); extern void simpleDeleteFileHandler _ANSI_ARGS_((int fd)); extern void simpleReportBackgroundError _ANSI_ARGS_((Tcl_Interp * interp)); #endif /* _TCLTCP */ micropolis-activity/src/tk/tkgrab.c0000664000076400007640000010327610724145723017667 0ustar simcitysimcity/* * tkGrab.c -- * * This file provides procedures that implement grabs for Tk. * * Copyright 1992 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkGrab.c,v 1.18 92/08/07 09:55:31 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tkconfig.h" #include "tkint.h" /* *------------------------------------------------------------------- * Problems with current grab implementation (8/7/92): * * 1. In a local grab the synthesized events are always placed at the * front of the event queue. If there are several grabs and ungrabs * in a row, the groups of events for the different grabs/ungrabs * end up in backwards order. * 2. The variables serverWinPtr and pointerWinPtr are hardly used at * all and should probably be eliminated. * 3. The fact that grabWinPtr is set at the time a grab is set or * released, rather than when its events are processed, means that * it can get out of sync with the event queue if there's a rapid * sequence of grabs or ungrabs. The only solution I can think of * is to keep a parallel queue to the event queue to update grabWinPtr * (or, synthesize an event to change the pointer?). *------------------------------------------------------------------- */ /* * Bit definitions for grabFlags field of TkDisplay structures: * * GRAB_GLOBAL 1 means this is a global grab (we grabbed via * the server so all applications are locked out. * 0 means this is a local grab that affects * only this application. * GRAB_BUTTON_RELEASE 1 means that a button-release event just * occurred and we're in the middle of a sequence * of Enter and Leave events with NotifyUngrab * mode. */ #define GRAB_GLOBAL 1 #define GRAB_BUTTON_RELEASE 2 /* * Forward declarations for procedures declared later in this file: */ static void ChangeEventWindow _ANSI_ARGS_((XEvent *eventPtr, TkWindow *winPtr)); static void MovePointer _ANSI_ARGS_((XEvent *eventPtr, TkWindow *sourcePtr, TkWindow *destPtr)); static void MovePointer2 _ANSI_ARGS_((TkWindow *sourcePtr, TkWindow *destPtr, int mode)); /* *---------------------------------------------------------------------- * * Tk_GrabCmd -- * * This procedure is invoked to process the "grab" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tk_GrabCmd(clientData, interp, argc, argv) ClientData clientData; /* Main window associated with * interpreter. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { TkWindow *winPtr = (TkWindow *) clientData; int length, lockScreen; char *window; if (argc > 3) { badArgs: Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ?-global? ?window?\"", (char *) NULL); return TCL_ERROR; } if (argc == 1) { if ((winPtr->dispPtr->grabWinPtr != NULL) && (winPtr->dispPtr->grabWinPtr->mainPtr == winPtr->mainPtr)) { interp->result = Tk_PathName(winPtr->dispPtr->grabWinPtr); } else { interp->result = "none"; } return TCL_OK; } if (argc == 3) { length = strlen(argv[1]); if (strncmp(argv[1], "-off", length) == 0) { lockScreen = -1; } else { if ((strncmp(argv[1], "-global", length) != 0) || (length < 2)) { goto badArgs; } lockScreen = 1; } window = argv[2]; } else { lockScreen = 0; window = argv[1]; } if ((window[0] == '\0') || (strncmp(window, "none", strlen(window)) == 0)) { Tk_Ungrab((Tk_Window) winPtr); } else { Tk_Window tkwin; tkwin = Tk_NameToWindow(interp, window, (Tk_Window) winPtr); if (tkwin == NULL) { return TCL_ERROR; } if (lockScreen < 0) { Tk_Ungrab(tkwin); } else { return Tk_Grab(interp, tkwin, lockScreen); } } return TCL_OK; } /* *---------------------------------------------------------------------- * * Tk_Grab -- * * Grabs the pointer and keyboard, so that mouse-related events are * only reported relative to a given window and its descendants. * * Results: * A standard Tcl result is returned. TCL_OK is the normal return * value; if the grab could not be set then TCL_ERROR is returned * and interp->result will hold an error message. * * Side effects: * Once this call completes successfully, no window outside the * tree rooted at tkwin will receive pointer- or keyboard-related * events until the next call to Tk_Ungrab. If a previous grab was * in effect within this application, then it is replaced with a new * one. * *---------------------------------------------------------------------- */ int Tk_Grab(interp, tkwin, grabGlobal) Tcl_Interp *interp; /* Used for error reporting. */ Tk_Window tkwin; /* Window on whose behalf the pointer * is to be grabbed. */ int grabGlobal; /* Non-zero means issue a grab to the * server so that no other application * gets mouse or keyboard events. * Zero means the grab only applies * within this application. */ { int grabResult; TkWindow *winPtr = (TkWindow *) tkwin; TkDisplay *dispPtr = winPtr->dispPtr; int grabRequest, inSequence, ignoring, numEvents, i, diff; XEvent *events, *eventPtr; TkWindow *winPtr2; if (dispPtr->grabWinPtr != NULL) { if ((dispPtr->grabWinPtr == winPtr) && (grabGlobal == ((dispPtr->grabFlags & GRAB_GLOBAL) != 0))) { return TCL_OK; } if (dispPtr->grabWinPtr->mainPtr != winPtr->mainPtr) { alreadyGrabbed: interp->result = "grab failed: another application has grab"; return TCL_ERROR; } Tk_Ungrab(tkwin); } if (grabGlobal) { grabRequest = NextRequest(dispPtr->display); grabResult = XGrabPointer(dispPtr->display, Tk_WindowId(tkwin), True, ButtonPressMask|ButtonReleaseMask|ButtonMotionMask|PointerMotionMask, GrabModeAsync, GrabModeAsync, None, None, TkCurrentTime(dispPtr)); if (grabResult != 0) { grabError: if (grabResult == GrabNotViewable) { interp->result = "grab failed: window not viewable"; } else if (grabResult == AlreadyGrabbed) { goto alreadyGrabbed; } else if (grabResult == GrabFrozen) { interp->result = "grab failed: keyboard or pointer frozen"; } else if (grabResult == GrabInvalidTime) { interp->result = "grab failed: invalid time"; } else { char msg[100]; sprintf(msg, "grab failed for unknown reason (code %d)", grabResult); Tcl_AppendResult(interp, msg, (char *) NULL); } return TCL_ERROR; } grabResult = XGrabKeyboard(dispPtr->display, Tk_WindowId(tkwin), False, GrabModeAsync, GrabModeAsync, TkCurrentTime(dispPtr)); if (grabResult != 0) { XUngrabPointer(dispPtr->display, TkCurrentTime(dispPtr)); goto grabError; } dispPtr->grabFlags |= GRAB_GLOBAL; } else { /* * The call to XUngrabPointer below is needed to release any * existing auto-grab due to a button press. This is needed * so that local grabs behave the same as global grabs (the * button grab is released by the X server in a global grab). */ XUngrabPointer(dispPtr->display, TkCurrentTime(dispPtr)); grabRequest = LastKnownRequestProcessed(dispPtr->display); dispPtr->grabFlags &= ~GRAB_GLOBAL; /* * Since we're not telling the server about the grab, we have * to generate Leave and Enter events to move the pointer from * its current window to the grab window. */ MovePointer2(dispPtr->pointerWinPtr, winPtr, NotifyGrab); } dispPtr->grabWinPtr = winPtr; /* * When a grab occurs, X generates Enter and Leave events to move * the pointer from its current window to the grab window, even if * the current window is in the grab tree. We don't want these * events getting through to the application if the current window * is in the grab tree. In order to eliminate the bogus events, * process all pending events and filter out the bogus ones. * * Also, filter out the final enter event into the grab window in * any case: this event shouldn't be delivered until the mouse really * moves into that window. * * The code below reads in all the pending events, filters out the bad * ones, and then pushes back all the events that weren't filtered. * Another alternative would be to simply process the events * immediately rather than pushing them back again. However, this * tends to interfere with scripts since it causes pending events * to be processed during the "grab" command. The "grab" command * might have been invoked in the middle of some computation where * it's a bad idea to process new events. */ XSync(dispPtr->display, False); numEvents = QLength(dispPtr->display); if (numEvents == 0) { return TCL_OK; } events = (XEvent *) ckalloc((unsigned) (numEvents * sizeof(XEvent))); for (i = 0; i < numEvents; i++) { XNextEvent(dispPtr->display, &events[i]); } inSequence = ignoring = 0; for (i = numEvents-1, eventPtr = events; i >= 0; i--, eventPtr++) { if (((eventPtr->type != EnterNotify) && (eventPtr->type != LeaveNotify)) || (eventPtr->xcrossing.mode != NotifyGrab)) { continue; } /* * The diff caculcation below is trickier than you might think, * due to the fact that the event serial number is unsigned and * serial numbers can wrap around. */ diff = eventPtr->xcrossing.serial; diff -= grabRequest; if (!inSequence && (diff >= 0)) { /* * This is the first event of the grab sequence. See if its * window is in the grab tree and ignore the sequence if it is. */ inSequence = 1; if (XFindContext(dispPtr->display, eventPtr->xcrossing.window, tkWindowContext, (void *) &winPtr2) == 0) { for ( ; winPtr2 != NULL; winPtr2 = winPtr2->parentPtr) { if (winPtr2 == dispPtr->grabWinPtr) { ignoring = 1; break; } } } } if (ignoring) { eventPtr->type = 0; } if (inSequence && (eventPtr->type == EnterNotify) && (dispPtr->grabWinPtr->window == eventPtr->xcrossing.window)) { eventPtr->type = 0; break; } } for (i = numEvents-1, eventPtr = &events[i]; i >= 0; i--, eventPtr--) { if (eventPtr->type != 0) { XPutBackEvent(dispPtr->display, eventPtr); } } ckfree((char *) events); return TCL_OK; } /* *---------------------------------------------------------------------- * * Tk_Ungrab -- * * Releases a grab on the mouse pointer and keyboard. * * Results: * None. * * Side effects: * Pointer and keyboard events will start being delivered to other * windows again. * *---------------------------------------------------------------------- */ void Tk_Ungrab(tkwin) Tk_Window tkwin; /* Window that identifies display * for grab to be released. */ { TkDisplay *dispPtr = ((TkWindow *) tkwin)->dispPtr; int inSequence, ignoring, ungrabRequest, numEvents, i, j, diff; TkWindow *grabWinPtr, *winPtr; XEvent *events, *eventPtr, *eventPtr2; grabWinPtr = dispPtr->grabWinPtr; if (grabWinPtr == NULL) { return; } dispPtr->grabWinPtr = NULL; dispPtr->buttonWinPtr = NULL; if (dispPtr->grabFlags & GRAB_GLOBAL) { ungrabRequest = NextRequest(dispPtr->display); XUngrabPointer(dispPtr->display, TkCurrentTime(dispPtr)); XUngrabKeyboard(dispPtr->display, TkCurrentTime(dispPtr)); XSync(dispPtr->display, False); } else { ungrabRequest = LastKnownRequestProcessed(dispPtr->display); if ((dispPtr->ungrabWinPtr != NULL) && (dispPtr->ungrabWinPtr->mainPtr != grabWinPtr->mainPtr)) { /* * Don't report entries down into a window of a different * application, since it's already seen those entries earlier. */ dispPtr->ungrabWinPtr = NULL; } MovePointer2(grabWinPtr, dispPtr->ungrabWinPtr, NotifyUngrab); } /* * We have to filter all the pending events in a fashion similar to * Tk_Grab. As with grabs, the X server generates an Enter-Leave event * sequence to move the pointer from the grab window back to its * current window. We need to ignore this sequence if the pointer * is being moved to a window that's already in the grab tree. */ numEvents = QLength(dispPtr->display); if (numEvents == 0) { return; } events = (XEvent *) ckalloc((unsigned) (numEvents * sizeof(XEvent))); for (i = 0; i < numEvents; i++) { XNextEvent(dispPtr->display, &events[i]); } inSequence = ignoring = 0; for (i = numEvents-1, eventPtr = events; i >= 0; i--, eventPtr++) { if (((eventPtr->type != EnterNotify) && (eventPtr->type != LeaveNotify)) || (eventPtr->xcrossing.mode != NotifyUngrab)) { continue; } diff = eventPtr->xcrossing.serial; diff -= ungrabRequest; if (!inSequence && (diff >= 0)) { /* * This is the first event of the ungrab sequence. Scan forward * looking for the final Enter event in the sequence. Then see * if that event's window is in the grab tree. */ inSequence = 1; for (j = i, eventPtr2 = eventPtr; j >= 0; j--, eventPtr2++) { if (eventPtr2->type == EnterNotify) { if (eventPtr2->xcrossing.mode != NotifyUngrab) { break; } if ((eventPtr2->xcrossing.detail != NotifyAncestor) && (eventPtr2->xcrossing.detail != NotifyInferior) && (eventPtr2->xcrossing.detail != NotifyNonlinear)) { continue; } if (XFindContext(dispPtr->display, eventPtr2->xcrossing.window, tkWindowContext, (void *) &winPtr) == 0) { for ( ; winPtr != NULL; winPtr = winPtr->parentPtr) { if (winPtr == grabWinPtr) { ignoring = 1; break; } } } break; } else if ((eventPtr2->type != LeaveNotify) || (eventPtr2->xcrossing.mode != NotifyUngrab)) { break; } } } if (ignoring) { eventPtr->type = 0; } } for (i = numEvents-1, eventPtr = &events[i]; i >= 0; i--, eventPtr--) { if (eventPtr->type != 0) { XPutBackEvent(dispPtr->display, eventPtr); } } ckfree((char *) events); } /* *---------------------------------------------------------------------- * * TkPointerEvent -- * * This procedure is called for each pointer-related event, before * the event has been processed. It does various things to make * grabs work correctly. * * Results: * If the return value is 1 it means the event should be processed * (event handlers should be invoked). If the return value is 0 * it means the event should be ignored in order to make grabs * work correctly. Note: the event may be modified by this procedure. * * Side effects: * Grab state information may be updated. * *---------------------------------------------------------------------- */ int TkPointerEvent(eventPtr, winPtr) register XEvent *eventPtr; /* Pointer to the event. */ TkWindow *winPtr; /* Tk's information for window * where event was reported. */ { register TkWindow *winPtr2; TkDisplay *dispPtr = winPtr->dispPtr; int outsideGrabTree = 0; int originalFlags; int appGrabbed = 0; /* Non-zero means event is being * reported to an application that is * affected by the grab. */ #define ALL_BUTTONS \ (Button1Mask|Button2Mask|Button3Mask|Button4Mask|Button5Mask) static unsigned int state[] = { Button1Mask, Button2Mask, Button3Mask, Button4Mask, Button5Mask }; /* * Don't do any filtering on events generated by the event-sharing code. */ if (eventPtr == tkShareEventPtr) { return 1; } /* * If a grab is in effect, see if the event is being reported to * a window in the grab tree. Also see if the event is being reported * to an application that is affected by the grab. */ if (dispPtr->grabWinPtr != NULL) { if ((winPtr->mainPtr == dispPtr->grabWinPtr->mainPtr) || (dispPtr->grabFlags & GRAB_GLOBAL)) { appGrabbed = 1; } for (winPtr2 = winPtr; winPtr2 != dispPtr->grabWinPtr; winPtr2 = winPtr2->parentPtr) { if (winPtr2 == NULL) { outsideGrabTree = 1; break; } } } originalFlags = dispPtr->grabFlags; dispPtr->grabFlags &= ~GRAB_BUTTON_RELEASE; if ((eventPtr->type == EnterNotify) || (eventPtr->type == LeaveNotify)) { if ((eventPtr->type == EnterNotify) && (eventPtr->xcrossing.detail != NotifyVirtual) && (eventPtr->xcrossing.detail != NotifyNonlinearVirtual)) { if ((dispPtr->grabWinPtr == NULL) || (dispPtr->grabWinPtr->mainPtr == winPtr->mainPtr)) { dispPtr->ungrabWinPtr = winPtr; } dispPtr->serverWinPtr = winPtr; } else { dispPtr->serverWinPtr = NULL; } if (dispPtr->grabWinPtr != NULL) { if (eventPtr->xcrossing.mode == NotifyNormal) { /* * When a grab is active, X continues to report enter and * leave events for windows outside the tree of the grab * window. Detect these events and ignore them. */ if (outsideGrabTree && appGrabbed) { return 0; } /* * Make buttons have the same grab-like behavior inside a grab * as they do outside a grab: do this by ignoring enter and * leave events except for the window in which the button was * pressed. */ if ((dispPtr->buttonWinPtr != NULL) && (winPtr != dispPtr->buttonWinPtr)) { return 0; } } else if (eventPtr->xcrossing.mode == NotifyUngrab) { /* * Keep the GRAB_BUTTON_RELEASE flag on if it used to be on. */ dispPtr->grabFlags = originalFlags; if (outsideGrabTree && appGrabbed && (dispPtr->grabFlags & GRAB_BUTTON_RELEASE)) { /* * The only way we get here is if a button was pressed, * then moved to a different window and released. Enter * and leave events were deferred while the button was * down, but now we're getting them to move the pointer * back to the right window, and this particular event * is for a window outside the grab tree. Ignore it. */ return 0; } } } /* * Keep track of the window containing the mouse, in order to * detect various bogus event sequences. */ dispPtr->pointerWinPtr = dispPtr->serverWinPtr; return 1; } if ((dispPtr->grabWinPtr == NULL) || !appGrabbed) { return 1; } if (eventPtr->type == MotionNotify) { /* * When grabs are active, X reports motion events relative to the * window under the pointer. Instead, it should report the events * relative to the window the button went down in, if there is a * button down. Otherwise, if the pointer window is outside the * subtree of the grab window, the events should be reported * relative to the grab window. Otherwise, the event should be * reported to the pointer window. */ winPtr2 = winPtr; if (dispPtr->buttonWinPtr != NULL) { winPtr2 = dispPtr->buttonWinPtr; } else if (outsideGrabTree || (dispPtr->serverWinPtr == NULL)) { winPtr2 = dispPtr->grabWinPtr; } if (winPtr2 != winPtr) { XEvent newEvent; newEvent = *eventPtr; ChangeEventWindow(&newEvent, winPtr2); XPutBackEvent(winPtr2->display, &newEvent); return 0; } return 1; } /* * Process ButtonPress and ButtonRelease events: * 1. Keep track of whether a button is down and what window it * went down in. * 2. If the first button goes down outside the grab tree, pretend * it went down in the grab window. Note: it's important to * redirect events to the grab window like this in order to make * things like menus work, where button presses outside the * grabbed menu need to be seen. An application can always * ignore the events if they occur outside its window. * 3. If a button press or release occurs outside the window where * the first button was pressed, retarget the event so it's reported * to the window where the first button was pressed. * 4. If the last button is released in a window different than where * the first button was pressed, generate Enter/Leave events to * move the mouse from the button window to its current window. * 5. If the grab is set at a time when a button is already down, or * if the window where the button was pressed was deleted, then * dispPtr->buttonWinPtr will stay NULL. Just forget about the * auto-grab for the button press; events will go to whatever * window contains the pointer. If this window isn't in the grab * tree then redirect events to the grab window. */ if ((eventPtr->type == ButtonPress) || (eventPtr->type == ButtonRelease)) { winPtr2 = dispPtr->buttonWinPtr; if (winPtr2 == NULL) { if (outsideGrabTree) { winPtr2 = dispPtr->grabWinPtr; /* Note 5. */ } else { winPtr2 = winPtr; /* Note 5. */ } } if (eventPtr->type == ButtonPress) { if ((eventPtr->xbutton.state & ALL_BUTTONS) == 0) { if (outsideGrabTree) { XEvent newEvent; newEvent = *eventPtr; ChangeEventWindow(&newEvent, dispPtr->grabWinPtr); XPutBackEvent(dispPtr->display, &newEvent); return 0; /* Note 2. */ } dispPtr->buttonWinPtr = winPtr; return 1; } } else { if ((eventPtr->xbutton.state & ALL_BUTTONS) == state[eventPtr->xbutton.button - Button1]) { if ((dispPtr->buttonWinPtr != winPtr) && (dispPtr->buttonWinPtr != NULL)) { XEvent newEvent; /* Note 4. */ /* * If the button release is made with pointer outside * all applications, X reports it relative to the grab * window. Change the current window to NULL to * reflect that the pointer's outside everything. Do * the same if the pointer's in a window that's not * part of the grab tree. */ if (outsideGrabTree || (dispPtr->serverWinPtr == NULL)) { winPtr = NULL; } newEvent = *eventPtr; newEvent.xcrossing.mode = NotifyUngrab; newEvent.xcrossing.focus = False; newEvent.xcrossing.state = eventPtr->xbutton.state & ~ALL_BUTTONS; MovePointer(&newEvent, dispPtr->buttonWinPtr, winPtr); } dispPtr->buttonWinPtr = NULL; dispPtr->grabFlags |= GRAB_BUTTON_RELEASE; } } if (winPtr2 != winPtr) { XEvent newEvent; newEvent = *eventPtr; ChangeEventWindow(&newEvent, winPtr2); XPutBackEvent(dispPtr->display, &newEvent); return 0; /* Note 3. */ } } return 1; } /* *---------------------------------------------------------------------- * * ChangeEventWindow -- * * Given an event and a new window to which the event should be * retargeted, modify fields of the event so that the event is * properly retargeted to the new window. * * Results: * The following fields of eventPtr are modified: window, * subwindow, x, y, same_screen. * * Side effects: * None. * *---------------------------------------------------------------------- */ static void ChangeEventWindow(eventPtr, winPtr) register XEvent *eventPtr; /* Event to retarget. Must have * type ButtonPress, ButtonRelease, KeyPress, * KeyRelease, MotionNotify, EnterNotify, * or LeaveNotify. */ TkWindow *winPtr; /* New target window for event. */ { int x, y, sameScreen, bd; register TkWindow *childPtr; eventPtr->xmotion.window = Tk_WindowId(winPtr); if (eventPtr->xmotion.root == RootWindow(winPtr->display, winPtr->screenNum)) { Tk_GetRootCoords((Tk_Window) winPtr, &x, &y); eventPtr->xmotion.x = eventPtr->xmotion.x_root - x; eventPtr->xmotion.y = eventPtr->xmotion.y_root - y; eventPtr->xmotion.subwindow = None; for (childPtr = winPtr->childList; childPtr != NULL; childPtr = childPtr->nextPtr) { if (childPtr->flags & TK_TOP_LEVEL) { continue; } x = eventPtr->xmotion.x - childPtr->changes.x; y = eventPtr->xmotion.y - childPtr->changes.y; bd = childPtr->changes.border_width; if ((x >= -bd) && (y >= -bd) && (x < (childPtr->changes.width + bd)) && (y < (childPtr->changes.width + bd))) { eventPtr->xmotion.subwindow = childPtr->window; } } sameScreen = 1; } else { eventPtr->xmotion.x = 0; eventPtr->xmotion.y = 0; eventPtr->xmotion.subwindow = None; sameScreen = 0; } if (eventPtr->type == MotionNotify) { eventPtr->xmotion.same_screen = sameScreen; } else { eventPtr->xbutton.same_screen = sameScreen; } } /* *---------------------------------------------------------------------- * * MovePointer -- * * This procedure synthesizes EnterNotify and LeaveNotify events * to correctly transfer the pointer from one window to another. * * Results: * None. * * Side effects: * Synthesized events may be pushed back onto the event queue. * The event pointed to by eventPtr is modified. * *---------------------------------------------------------------------- */ static void MovePointer(eventPtr, sourcePtr, destPtr) XEvent *eventPtr; /* A template X event. Must have all fields * properly set for EnterNotify and LeaveNotify * events except window, subwindow, x, y, * detail, and same_screen. (x_root and y_root * must be valid, even though x and y needn't * be valid). */ TkWindow *sourcePtr; /* Window currently containing pointer (NULL * means it's not one managed by this * process). */ TkWindow *destPtr; /* Window that is to end up containing the * pointer (NULL means it's not one managed * by this process). */ { TkDisplay *dispPtr; register TkWindow *ancestorPtr; /* Lowest ancestor shared between * sourcePtr and destPtr, or * sourcePtr's top-level window if no * shared ancestor. */ register TkWindow *winPtr; int upLevels, downLevels, i, j; /* * There are four possible cases to deal with: * * 1. SourcePtr and destPtr are the same. There's nothing to do in * this case. * 2. SourcePtr is an ancestor of destPtr in the same top-level * window. Must generate events down the window tree from source * to dest. * 3. DestPtr is an ancestor of sourcePtr in the same top-level * window. Must generate events up the window tree from sourcePtr * to destPtr. * 4. All other cases. Must first generate events up the window tree * from sourcePtr to its top-level, then down from destPtr's * top-level to destPtr. This form is called "non-linear." * * The code below separates these four cases and decides how many levels * up and down events have to be generated for. */ if (sourcePtr == destPtr) { return; } /* * Mark destPtr and all of its ancestors with a special flag bit. */ if (destPtr != NULL) { dispPtr = destPtr->dispPtr; for (winPtr = destPtr; ; winPtr = winPtr->parentPtr) { winPtr->flags |= TK_GRAB_FLAG; if (winPtr->flags & TK_TOP_LEVEL) { break; } } } else { dispPtr = sourcePtr->dispPtr; } /* * Search upwards from sourcePtr until an ancestor of destPtr is * found or a top-level window is reached. Remember if we pass out * of the grab tree along the way, since this means we'll have to * skip some of the events that would otherwise be generated. */ ancestorPtr = sourcePtr; upLevels = 0; if (sourcePtr != NULL) { for (; ; upLevels++, ancestorPtr = ancestorPtr->parentPtr) { if (ancestorPtr->flags & TK_GRAB_FLAG) { break; } if (ancestorPtr->flags & TK_TOP_LEVEL) { upLevels++; break; } } } /* * Search upwards from destPtr again, clearing the flag bits and * remembering how many levels up we had to go. */ if (destPtr == NULL) { downLevels = 0; } else { downLevels = -1; for (i = 0, winPtr = destPtr; ; i++, winPtr = winPtr->parentPtr) { winPtr->flags &= ~TK_GRAB_FLAG; if (winPtr == ancestorPtr) { downLevels = i; } if (winPtr->flags & TK_TOP_LEVEL) { if (downLevels == -1) { downLevels = i+1; } break; } } } /* * Generate enter/leave events and push them back onto the event * queue. This has to be done backwards, since the last event * pushed will be the first one processed. */ #define PUSH_EVENT(w, t, d) \ if (w->window != None) { \ eventPtr->type = t; \ eventPtr->xcrossing.detail = d; \ ChangeEventWindow(eventPtr, w); \ XPutBackEvent(w->display, eventPtr); \ } if (downLevels == 0) { /* * SourcePtr is an inferior of destPtr. */ if (destPtr != NULL) { PUSH_EVENT(destPtr, EnterNotify, NotifyInferior); } for (i = upLevels-1; i > 0; i--) { for (winPtr = sourcePtr, j = 0; j < i; winPtr = winPtr->parentPtr, j++) { if (winPtr == dispPtr->grabWinPtr) { goto nextIteration; } } PUSH_EVENT(winPtr, LeaveNotify, NotifyVirtual); nextIteration: continue; } PUSH_EVENT(sourcePtr, LeaveNotify, NotifyAncestor); } else if (upLevels == 0) { /* * DestPtr is an inferior of sourcePtr. */ if (destPtr != NULL) { PUSH_EVENT(destPtr, EnterNotify, NotifyAncestor); } for (winPtr = destPtr->parentPtr, i = downLevels-1; i > 0; winPtr = winPtr->parentPtr, i--) { PUSH_EVENT(winPtr, EnterNotify, NotifyVirtual); } if (sourcePtr != NULL) { PUSH_EVENT(sourcePtr, LeaveNotify, NotifyInferior); } } else { /* * Non-linear: neither window is an inferior of the other. */ if (destPtr != NULL) { PUSH_EVENT(destPtr, EnterNotify, NotifyNonlinear); } if (destPtr != dispPtr->grabWinPtr) { for (winPtr = destPtr->parentPtr, i = downLevels-1; i > 0; winPtr = winPtr->parentPtr, i--) { PUSH_EVENT(winPtr, EnterNotify, NotifyNonlinearVirtual); if (winPtr == dispPtr->grabWinPtr) { break; } } } for (i = upLevels-1; i > 0; i--) { for (winPtr = sourcePtr, j = 0; j < i; winPtr = winPtr->parentPtr, j++) { if (winPtr == dispPtr->grabWinPtr) { goto nextWindow; } } PUSH_EVENT(winPtr, LeaveNotify, NotifyNonlinearVirtual); nextWindow: continue; } PUSH_EVENT(sourcePtr, LeaveNotify, NotifyNonlinear); } } /* *---------------------------------------------------------------------- * * MovePointer2 -- * * This procedure synthesizes EnterNotify and LeaveNotify events * to correctly transfer the pointer from one window to another. * It is different from MovePointer in that no template X event * needs to be supplied; this procedure generates the template * event and calls MovePointer. * * Results: * None. * * Side effects: * Synthesized events may be pushed back onto the event queue. * *---------------------------------------------------------------------- */ static void MovePointer2(sourcePtr, destPtr, mode) TkWindow *sourcePtr; /* Window currently containing pointer (NULL * means it's not one managed by this * process). */ TkWindow *destPtr; /* Window that is to end up containing the * pointer (NULL means it's not one managed * by this process). */ int mode; /* Mode for enter/leave events, such as * NotifyNormal or NotifyUngrab. */ { XEvent event; Window dummy1, dummy2; int dummy3, dummy4; TkWindow *winPtr; winPtr = sourcePtr; if ((winPtr == NULL) || (winPtr->window == None)) { winPtr = destPtr; if ((winPtr == NULL) || (winPtr->window == None)) { return; } } event.xcrossing.serial = LastKnownRequestProcessed(winPtr->display); event.xcrossing.send_event = False; event.xcrossing.display = winPtr->display; event.xcrossing.root = RootWindow(winPtr->display, winPtr->screenNum); event.xcrossing.time = TkCurrentTime(winPtr->dispPtr); XQueryPointer(winPtr->display, winPtr->window, &dummy1, &dummy2, &event.xcrossing.x_root, &event.xcrossing.y_root, &dummy3, &dummy4, &event.xcrossing.state); event.xcrossing.mode = mode; event.xcrossing.focus = False; MovePointer(&event, sourcePtr, destPtr); } /* *---------------------------------------------------------------------- * * TkGrabDeadWindow -- * * This procedure is invoked whenever a window is deleted, so that * grab-related cleanup can be performed. * * Results: * None. * * Side effects: * Various cleanups happen, such as generating events to move the * pointer back to its "natural" window as if an ungrab had been * done. See the code. * *---------------------------------------------------------------------- */ void TkGrabDeadWindow(winPtr) register TkWindow *winPtr; /* Window that is in the process * of being deleted. */ { TkDisplay *dispPtr = winPtr->dispPtr; if (dispPtr->grabWinPtr == winPtr) { dispPtr->grabWinPtr = NULL; if (!(dispPtr->grabFlags & GRAB_GLOBAL)) { /* * Must generate enter/leave events to move back to the window * that contains the mouse pointer. We needn't filter events * here like we do in Tk_Ungrab because there are no children * of the grab window left in existence. */ movePointerBack: if ((dispPtr->ungrabWinPtr != NULL) && (dispPtr->ungrabWinPtr->mainPtr != winPtr->mainPtr)) { dispPtr->ungrabWinPtr = NULL; } MovePointer2(winPtr, dispPtr->ungrabWinPtr, NotifyUngrab); } } else if (dispPtr->buttonWinPtr == winPtr) { /* * The window in which a button was pressed was deleted. Simulate * dropping the button auto-grab by generating Enter and Leave * events to move the pointer back to the window it's really on * top of. */ dispPtr->buttonWinPtr = NULL; goto movePointerBack; } if (dispPtr->ungrabWinPtr == winPtr) { dispPtr->ungrabWinPtr = NULL; } if (dispPtr->pointerWinPtr == winPtr) { dispPtr->pointerWinPtr = NULL; } if (dispPtr->serverWinPtr == winPtr) { dispPtr->serverWinPtr = NULL; } } micropolis-activity/src/tk/tktext.h0000664000076400007640000003727110724145723017746 0ustar simcitysimcity/* * tkText.h -- * * Declarations shared among the files that implement text * widgets. * * Copyright 1992 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. * * $Header: /user6/ouster/wish/RCS/tkText.h,v 1.13 92/07/31 13:43:26 ouster Exp $ SPRITE (Berkeley) */ #ifndef _TKTEXT #define _TKTEXT #ifndef _TK #include "tk.h" #endif /* * Opaque types for structures whose guts are only needed by a single * file: */ typedef struct TkTextBTree *TkTextBTree; /* * The data structure below defines a single line of text (from newline * to newline, not necessarily what appears on one line of the screen). */ typedef struct TkTextLine { struct Node *parentPtr; /* Pointer to parent node containing * line. */ struct TkTextLine *nextPtr; /* Next in linked list of lines with * same parent node in B-tree. NULL * means end of list. */ struct TkAnnotation *annotPtr; /* First in list of annotations for * this line. */ int numBytes; /* Number of bytes in line, including * newline but not terminating NULL. */ char bytes[4]; /* Contents of line, null-terminated. * The actual length of the array will * be as large as needed to hold the * line. THIS MUST BE THE LAST FIELD * OF THE STRUCT. */ } TkTextLine; /* * The structures below are used to describe annotations to the text * (such as marks and embedded windows). Annotations are placed at * a given place in the text and then float to keep their position * as text is inserted and deleted. Each actual annotation * contains a standard set of fields, plus a type-specific set of * fields. The types are as follows: * * TK_ANNOT_TOGGLE - Marks the beginning or end of a range of * characters that have a given tag. * TK_ANNOT_MARK - Holds information about a given "mark" (see * user doc. for information on marks). * TK_ANNOT_WINDOW - Holds information on a window embedded in the * text. Not implemented yet. */ typedef enum {TK_ANNOT_TOGGLE, TK_ANNOT_MARK, TK_ANNOT_WINDOW} TkAnnotType; typedef struct TkAnnotation { TkAnnotType type; /* Type of annotation. */ TkTextLine *linePtr; /* Pointer to line structure * containing this annotation. */ int ch; /* Index of character that annotation * is attached to (annotation is * considered to be just before this * character). */ struct TkAnnotation *nextPtr; /* Next in list of annotations for * same line of text, or NULL if * end of list. */ union { /* Type-specific information. */ struct TkTextTag *tagPtr; /* Type == TK_ANNOT_TOGGLE. */ Tcl_HashEntry *hPtr; /* Type == TK_ANNOT_MARK. */ } info; } TkAnnotation; /* * One data structure of the following type is used for each tag that * is currently being used in a text widget. These structures are kept * in textPtr->tagTable and referred to in other structures, like * TkTagToggles. */ typedef struct TkTextTag { char *name; /* Name of this tag. This field is actually * a pointer to the key from the entry in * textPtr->tagTable, so it needn't be freed * explicitly. */ int priority; /* Priority of this tag within widget. 0 * means lowest priority. Exactly one tag * has each integer value between 0 and * numTags-1. */ /* * Information for displaying text with this tag. The information * belows acts as an override on information specified by lower-priority * tags. If no value is specified, then the next-lower-priority tag * on the text determins the value. The text widget itself provides * defaults if no tag specifies an override. */ Tk_3DBorder border; /* Used for drawing background. NULL means * no value specified here. */ int borderWidth; /* Width of 3-D border for background. */ int relief; /* 3-D relief for background. */ Pixmap bgStipple; /* Stipple bitmap for background. None * means no value specified here. */ XColor *fgColor; /* Foreground color for text. NULL means * no value specified here. */ XFontStruct *fontPtr; /* Font for displaying text. NULL means * no value specified here. */ Pixmap fgStipple; /* Stipple bitmap for text and other * foreground stuff. None means no value * specified here.*/ int underline; /* Non-zero means draw underline underneath * text. */ } TkTextTag; /* * The macro below determines whether or not a particular tag affects * the way information is displayed on the screen. It's used, for * example, to determine when to redisplay in response to tag changes. */ #define TK_TAG_AFFECTS_DISPLAY(tagPtr) \ (((tagPtr)->border != NULL) || ((tagPtr)->bgStipple != None) \ || ((tagPtr)->fgColor != NULL) || ((tagPtr)->fontPtr != NULL) \ || ((tagPtr)->fgStipple != None) || ((tagPtr)->underline)) /* * The data structure below is used for searching a B-tree for transitions * on a single tag (or for all tag transitions). No code outside of * tkTextBTree.c should ever modify any of the fields in these structures, * but it's OK to use them for read-only information. */ typedef struct TkTextSearch { TkTextBTree tree; /* Tree being searched. */ int line1, ch1; /* Position of last tag returned * by TkBTreeNextTag. */ int line2, ch2; /* Stop search after all tags at this * character position have been * processed. */ TkTextTag *tagPtr; /* Tag to search for (or tag found, if * allTags is non-zero). */ int allTags; /* Non-zero means ignore tag check: * search for transitions on all * tags. */ TkTextLine *linePtr; /* Line currently being searched. NULL * means search is over. */ TkAnnotation *annotPtr; /* Pointer to next annotation to * consider. NULL means no annotations * left in current line; must go on * to next line. */ } TkTextSearch; /* * A data structure of the following type is kept for each text widget that * currently exists for this process: */ typedef struct TkText { Tk_Window tkwin; /* Window that embodies the text. NULL * means that the window has been destroyed * but the data structures haven't yet been * cleaned up.*/ Tcl_Interp *interp; /* Interpreter associated with widget. Used * to delete widget command. */ TkTextBTree tree; /* B-tree representation of text and tags for * widget. */ Tcl_HashTable tagTable; /* Hash table that maps from tag names to * pointers to TkTextTag structures. */ int numTags; /* Number of tags currently defined for * widget; needed to keep track of * priorities. */ Tcl_HashTable markTable; /* Hash table that maps from mark names to * pointer to TkAnnotation structures of * type TK_ANNOT_MARK. */ Tk_Uid state; /* Normal or disabled. Text is read-only * when disabled. */ /* * Default information for displaying (may be overridden by tags * applied to ranges of characters). */ Tk_3DBorder border; /* Structure used to draw 3-D border and * default background. */ int borderWidth; /* Width of 3-D border to draw around entire * widget. */ int padX, padY; /* Padding between text and window border. */ int relief; /* 3-d effect for border around entire * widget: TK_RELIEF_RAISED etc. */ Cursor cursor; /* Current cursor for window, or None. */ XColor *fgColor; /* Default foreground color for text. */ XFontStruct *fontPtr; /* Default font for displaying text. */ /* * Additional information used for displaying: */ Tk_Uid wrapMode; /* How to handle wrap-around. Must be * tkTextCharUid, tkTextNoneUid, or * tkTextWordUid. */ int width, height; /* Desired dimensions for window, measured * in characters. */ int setGrid; /* Non-zero means pass gridding information * to window manager. */ int prevWidth, prevHeight; /* Last known dimensions of window; used to * detect changes in size. */ TkTextLine *topLinePtr; /* Text line that is supposed to be displayed * at top of the window: set only by * tkTextDisp.c. */ struct DInfo *dInfoPtr; /* Additional information maintained by * tkTextDisp.c. */ Tk_TimerToken updateTimerToken; /* Added by Don to optimize rapid * updates. */ /* * Information related to selection. */ TkTextTag *selTagPtr; /* Pointer to "sel" tag. Used to tell when * a new selection has been made. */ Tk_3DBorder selBorder; /* Border and background for selected * characters. This is a copy of information * in *cursorTagPtr, so it shouldn't be * explicitly freed. */ int selBorderWidth; /* Width of border around selection. */ XColor *selFgColorPtr; /* Foreground color for selected text. * This is a copy of information in * *cursorTagPtr, so it shouldn't be * explicitly freed. */ int exportSelection; /* Non-zero means tie "sel" tag to X * selection. */ int selLine, selCh; /* Used during multi-pass selection retrievals. * These identify the next character to be * returned from the selection. */ int selOffset; /* Offset in selection corresponding to * selLine and selCh. -1 means neither * this information nor selLine or selCh * is of any use. */ /* * Information related to insertion cursor: */ TkAnnotation *insertAnnotPtr; /* Always points to annotation for "insert" * mark. */ Tk_3DBorder insertBorder; /* Used to draw vertical bar for insertion * cursor. */ int insertWidth; /* Total width of insert cursor. */ int insertBorderWidth; /* Width of 3-D border around insert cursor. */ int insertOnTime; /* Number of milliseconds cursor should spend * in "on" state for each blink. */ int insertOffTime; /* Number of milliseconds cursor should spend * in "off" state for each blink. */ Tk_TimerToken insertBlinkHandler; /* Timer handler used to blink cursor on and * off. */ /* * Information used for event bindings associated with tags: */ Tk_BindingTable bindingTable; /* Table of all bindings currently defined * for this widget. NULL means that no * bindings exist, so the table hasn't been * created. Each "object" used for this * table is the address of a tag. */ TkAnnotation *currentAnnotPtr; /* Pointer to annotation for "current" mark, * or NULL if none. */ XEvent pickEvent; /* The event from which the current character * was chosen. Must be saved so that we * can repick after insertions and deletions. */ /* * Miscellaneous additional information: */ char *yScrollCmd; /* Prefix of command to issue to update * vertical scrollbar when view changes. */ int scanMarkLine; /* Line that was at the top of the window * when the scan started. */ int scanMarkY; /* Y-position of mouse at time scan started. */ int flags; /* Miscellaneous flags; see below for * definitions. */ } TkText; /* * Flag values for TkText records: * * GOT_SELECTION: Non-zero means we've already claimed the * selection. * INSERT_ON: Non-zero means insertion cursor should be * displayed on screen. * GOT_FOCUS: Non-zero means this window has the input * focus. * BUTTON_DOWN: 1 means that a mouse button is currently * down; this is used to implement grabs * for the duration of button presses. * IN_CURRENT: 1 means that an EnterNotify event has been * delivered to the current character with * no matching LeaveNotify event yet. */ #define GOT_SELECTION 1 #define INSERT_ON 2 #define GOT_FOCUS 4 #define BUTTON_DOWN 8 #define IN_CURRENT 0x10 /* * The constant below is used to specify a line when what is really * wanted is the entire text. For now, just use a very big number. */ #define TK_END_OF_TEXT 1000000 /* * Declarations for variables shared among the text-related files: */ extern int tkBTreeDebug; extern Tk_Uid tkTextCharUid; extern Tk_Uid tkTextDisabledUid; extern Tk_Uid tkTextNoneUid; extern Tk_Uid tkTextNormalUid; extern Tk_Uid tkTextWordUid; /* * Declarations for procedures that are used by the text-related files * but shouldn't be used anywhere else in Tk (or by Tk clients): */ extern void TkBTreeAddAnnotation _ANSI_ARGS_(( TkAnnotation *annotPtr)); extern int TkBTreeCharTagged _ANSI_ARGS_((TkTextLine *linePtr, int index, TkTextTag *tagPtr)); extern void TkBTreeCheck _ANSI_ARGS_((TkTextBTree tree)); extern TkTextBTree TkBTreeCreate _ANSI_ARGS_((void)); extern void TkBTreeDestroy _ANSI_ARGS_((TkTextBTree tree)); extern void TkBTreeDeleteChars _ANSI_ARGS_((TkTextBTree tree, TkTextLine *line1Ptr, int ch1, TkTextLine *line2Ptr, int ch2)); extern TkTextLine * TkBTreeFindLine _ANSI_ARGS_((TkTextBTree tree, int line)); extern TkTextTag ** TkBTreeGetTags _ANSI_ARGS_((TkTextBTree tree, TkTextLine *linePtr, int ch, int *numTagsPtr)); extern void TkBTreeInsertChars _ANSI_ARGS_((TkTextBTree tree, TkTextLine *linePtr, int ch, char *string)); extern int TkBTreeLineIndex _ANSI_ARGS_((TkTextLine *linePtr)); extern TkTextLine * TkBTreeNextLine _ANSI_ARGS_((TkTextLine *linePtr)); extern int TkBTreeNextTag _ANSI_ARGS_((TkTextSearch *searchPtr)); extern int TkBTreeNumLines _ANSI_ARGS_((TkTextBTree tree)); extern void TkBTreeRemoveAnnotation _ANSI_ARGS_(( TkAnnotation *annotPtr)); extern void TkBTreeStartSearch _ANSI_ARGS_((TkTextBTree tree, int line1, int ch1, int line2, int ch2, TkTextTag *tagPtr, TkTextSearch *searchPtr)); extern void TkBTreeTag _ANSI_ARGS_((TkTextBTree tree, int line1, int ch1, int line2, int ch2, TkTextTag *tagPtr, int add)); extern void TkTextBindProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); extern TkTextLine * TkTextCharAtLoc _ANSI_ARGS_((TkText *textPtr, int x, int y, int *chPtr)); extern void TkTextCreateDInfo _ANSI_ARGS_((TkText *textPtr)); extern TkTextTag * TkTextCreateTag _ANSI_ARGS_((TkText *textPtr, char *tagName)); extern void TkTextFreeDInfo _ANSI_ARGS_((TkText *textPtr)); extern void TkTextFreeTag _ANSI_ARGS_((TkTextTag *tagPtr)); extern int TkTextGetIndex _ANSI_ARGS_((Tcl_Interp *interp, TkText *textPtr, char *string, int *lineIndexPtr, int *chPtr)); extern void TkTextLinesChanged _ANSI_ARGS_((TkText *textPtr, int first, int last)); extern void TkTextLostSelection _ANSI_ARGS_(( ClientData clientData)); extern void TkTextPickCurrent _ANSI_ARGS_((TkText *textPtr, XEvent *eventPtr)); extern void TkTextPrintIndex _ANSI_ARGS_((int line, int ch, char *string)); extern TkTextLine * TkTextRoundIndex _ANSI_ARGS_((TkText *textPtr, int *lineIndexPtr, int *chPtr)); extern void TkTextRedrawRegion _ANSI_ARGS_((TkText *textPtr, int x, int y, int width, int height)); extern void TkTextRedrawTag _ANSI_ARGS_((TkText *textPtr, int line1, int ch1, int line2, int ch2, TkTextTag *tagPtr, int withTag)); extern void TkTextRelayoutWindow _ANSI_ARGS_((TkText *textPtr)); extern TkAnnotation * TkTextSetMark _ANSI_ARGS_((TkText *textPtr, char *name, int line, int ch)); extern void TkTextSetView _ANSI_ARGS_((TkText *textPtr, int line, int pickPlace)); extern int TkTextTagCmd _ANSI_ARGS_((TkText *textPtr, Tcl_Interp *interp, int argc, char **argv)); extern void TkTextUnpickCurrent _ANSI_ARGS_((TkText *textPtr)); #endif /* _TKTEXT */ micropolis-activity/src/tk/makefile.dvx0000664000076400007640000000624510724145723020547 0ustar simcitysimcity# # This is a simplified Makefile for use in Tk distributions. Before using # it to compile Tk, you may wish to reset some of the following variables: # # TCL_DIR - Name of directory holding tcl.h and tcl.a. # XLIB - Name of archive containing Xlib binaries. # # You may also wish to add some of the following switches to the CFLAGS # variable: # # -DX11R3 Causes code that depends on R4 facilities not to # be compiled. I haven't tested Tk with R3 in quite # a while, so this switch may not be enough to # generate a working R3 version of Tk. Furthermore, # use of this switch will disable some of the facilities # of Tk related to window managers. # -DNO_PROTOTYPE Turns off ANSI-style procedure prototypes and the # corresponding compile-time checks. Without this # defininition, prototypes will be turned on if the # compiler supports ANSI C by defining __STDC__. # -DTK_LIBRARY=\"dir\" Arranges for dir, which must be the name of a # directory, to be the library directory for Tk scripts. # This value gets put into the variable $tk_library # when a new application is created. The library # defaults to /usr/local/lib/tk, so you don't need the # switch unless your library is in a non-standard place. # TCL_DIR = ..\tcl XPM_DIR = ..\xpm XLIB = -lX CC = gcc #CFLAGS = -g -I. -I$(TCL_DIR) -DTK_VERSION=\"2.3\" -DUSE_XPM3 -I$(XPM_DIR) CFLAGS = -O2 -I. -I$(TCL_DIR) -DTK_VERSION=\"2.3\" -DUSE_XPM3 -I$(XPM_DIR) LIBS = libtk.a $(TCL_DIR)/libtcl.a $(XPM_DIR)/libXpm.a WIDGOBJS = tkbutton.o tkentry.o tkframe.o tklist.o \ tkmenu.o tkmnbut.o tkmsg.o tkscale.o \ tkscrbar.o CANVOBJS = tkcanvas.o tkcvarc.o tkcvbmap.o tkcvline.o \ tkcvpoly.o tkcvtext.o tkcvwind.o tkrectov.o \ tktrig.o TEXTOBJS = tktext.o tktxbtre.o tktxdisp.o tktxidx.o tktxtag.o OBJS = tk3d.o tkargv.o tkatom.o tkbind.o tkbitmap.o \ tkcmds.o tkcolor.o tkconfig.o tkcursor.o tkerror.o \ tkevent.o tkfont.o tkget.o tkgc.o tkgeo.o tkgrab.o \ tkoption.o tkpack.o tkpixmap.o tkplace.o tkpresrv.o \ tkselect.o tksend.o tkshare.o tkwindow.o tkwm.o tkrawtcp.o \ $(WIDGOBJS) $(CANVOBJS) $(TEXTOBJS) WIDGSRCS = tkbutton.c tkentry.c tkframe.c tklist.c \ tkmenu.c tkmnbut.c tkmessage.c tkscale.c \ tkscrbar.c tktext.c tktxbtre.c tktxdisp.c \ tktextindex.c CANVSRCS = tkcanvas.c tkcvarc.c tkcvbmap.c tkcvline.c \ tkcvpoly.c tkcvtext.c tkcvwind.c tkrectov.c \ tktrig.c TEXTSRCS = tktext.c tktxbtre.c tktxdisp.c tktxidx.c tktxtag.c SRCS = tk3d.c tkargv.c tkatom.c tkbind.c tkbitmap.c \ tkcmds.c tkcolor.c tkconfig.c tkcursor.c tkerror.c \ tkevent.c tkfont.c tkget.c tkgc.c tkgeo.c tkgrab.c \ tkoption.c tkpack.c tkplace.c tkpresrv.c tkselect.c \ tksend.c tkshare.c tkwindow.c tkwm.c tkrawtcp.c $(WIDGSRCS) \ $(CANVSRCS) $(TEXTSRCS) .c.o: $(CC) $< -c $(CFLAGS) all: wish wish: main.o $(LIBS) $(CC) $(CFLAGS) main.o <@< $(LIBS) $(XLIB) -lsys -lm -o wish < aout2exe wish libtk.a: $(OBJS) rm -f libtk.a ar cr libtk.a <@< $(OBJS) < ranlib libtk.a $(TCL_DIR)/libtcl.a: cd $(TCL_DIR) pmake libtcl.a clean: rm -f $(OBJS) main.o libtk.a wish *.bak $(OBJS): tk.h tkint.h tkconfig.h $(WIDGOBJS): default.h $(CANVOBJS): default.h tkcanvas.h main.o: tk.h tkint.h micropolis-activity/src/tk/tkpresrv.c0000664000076400007640000001430010724145723020262 0ustar simcitysimcity/* * tkPreserve.c -- * * This file contains a collection of procedures that are used * to make sure that widget records and other data structures * aren't reallocated when there are nested procedures that * depend on their existence. * * Copyright 1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that this copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkPreserve.c,v 1.6 92/06/15 13:44:51 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include "tkconfig.h" #include "tk.h" /* * The following data structure is used to keep track of all the * Tk_Preserve calls that are still in effect. It grows as needed * to accommodate any number of calls in effect. */ typedef struct { ClientData clientData; /* Address of preserved block. */ int refCount; /* Number of Tk_Preserve calls in effect * for block. */ int mustFree; /* Non-zero means Tk_EventuallyFree was * called while a Tk_Preserve call was in * effect, so the structure must be freed * when refCount becomes zero. */ Tk_FreeProc *freeProc; /* Procedure to call to free. */ } Reference; static Reference *refArray; /* First in array of references. */ static int spaceAvl = 0; /* Total number of structures available * at *firstRefPtr. */ static int inUse = 0; /* Count of structures currently in use * in refArray. */ #define INITIAL_SIZE 2 /* *---------------------------------------------------------------------- * * Tk_Preserve -- * * This procedure is used by a procedure to declare its interest * in a particular block of memory, so that the block will not be * reallocated until a matching call to Tk_Release has been made. * * Results: * None. * * Side effects: * Information is retained so that the block of memory will * not be freed until at least the matching call to Tk_Release. * *---------------------------------------------------------------------- */ void Tk_Preserve(clientData) ClientData clientData; /* Pointer to malloc'ed block of memory. */ { register Reference *refPtr; int i; /* * See if there is already a reference for this pointer. If so, * just increment its reference count. */ for (i = 0, refPtr = refArray; i < inUse; i++, refPtr++) { if (refPtr->clientData == clientData) { refPtr->refCount++; return; } } /* * Make a reference array if it doesn't already exist, or make it * bigger if it is full. */ if (inUse == spaceAvl) { if (spaceAvl == 0) { refArray = (Reference *) ckalloc((unsigned) (INITIAL_SIZE*sizeof(Reference))); spaceAvl = INITIAL_SIZE; } else { Reference *new; new = (Reference *) ckalloc((unsigned) (2*spaceAvl*sizeof(Reference))); memcpy((VOID *) new, (VOID *) refArray, spaceAvl*sizeof(Reference)); ckfree((char *) refArray); refArray = new; spaceAvl *= 2; } } /* * Make a new entry for the new reference. */ refPtr = &refArray[inUse]; refPtr->clientData = clientData; refPtr->refCount = 1; refPtr->mustFree = 0; inUse += 1; } /* *---------------------------------------------------------------------- * * Tk_Release -- * * This procedure is called to cancel a previous call to * Tk_Preserve, thereby allowing a block of memory to be * freed (if no one else cares about it). * * Results: * None. * * Side effects: * If Tk_EventuallyFree has been called for clientData, and if * no other call to Tk_Preserve is still in effect, the block of * memory is freed. * *---------------------------------------------------------------------- */ void Tk_Release(clientData) ClientData clientData; /* Pointer to malloc'ed block of memory. */ { register Reference *refPtr; int i; for (i = 0, refPtr = refArray; i < inUse; i++, refPtr++) { if (refPtr->clientData != clientData) { continue; } refPtr->refCount--; if (refPtr->refCount == 0) { if (refPtr->mustFree) { if (refPtr->freeProc == (Tk_FreeProc *) free) { ckfree((char *) refPtr->clientData); } else { (*refPtr->freeProc)(refPtr->clientData); } } /* * Copy down all of the trailing reference in the array * to cover up the hole left by the unused reference. */ inUse--; if (i != inUse) { memcpy((VOID *) &refArray[i], (VOID *) &refArray[i+1], (inUse-i)*sizeof(Reference)); } } return; } /* * Reference not found. This is a bug in the caller. */ panic("Tk_Release couldn't find reference for 0x%x", clientData); } /* *---------------------------------------------------------------------- * * Tk_EventuallyFree -- * * Free up a block of memory, unless a call to Tk_Preserve is in * effect for that block. In this case, defer the free until all * calls to Tk_Preserve have been undone by matching calls to * Tk_Release. * * Results: * None. * * Side effects: * Ptr may be released by calling free(). * *---------------------------------------------------------------------- */ void Tk_EventuallyFree(clientData, freeProc) ClientData clientData; /* Pointer to malloc'ed block of memory. */ Tk_FreeProc *freeProc; /* Procedure to actually do free. */ { register Reference *refPtr; int i; /* * See if there is a reference for this pointer. If so, set its * "mustFree" flag (the flag had better not be set already!). */ for (i = 0, refPtr = refArray; i < inUse; i++, refPtr++) { if (refPtr->clientData != clientData) { continue; } if (refPtr->mustFree) { panic("Tk_EventuallyFree called twice for 0x%x\n", clientData); } refPtr->mustFree = 1; refPtr->freeProc = freeProc; return; } /* * No reference for this block. Free it now. */ if (freeProc == (Tk_FreeProc *) free) { ckfree((char *) clientData); } else { (*freeProc)(clientData); } } micropolis-activity/src/tk/readme0000664000076400007640000002256310724145723017430 0ustar simcitysimcityThe Tk Toolkit, Version 2.3 by John Ousterhout University of California at Berkeley 1. Introduction --------------- This directory contains the sources and documentation for Tk, which is an X11 toolkit that provides the Motif look and feel and is implemented using the Tcl command language. For an introduction to Tcl and Tk you may wish to read two papers: ``Tcl: An Embeddable Command Language'', in the Proceedings of the 1990 Winter USENIX Conference, and ``An X11 Toolkit Based on the Tcl Language'', in the Proceedings of the 1991 Winter USENIX Conference. A copy of the first paper is present in Postscript form in the file "tcl/usenix.ps"; Postscript for the second paper is in "doc/usenix.ps". Both Tcl and Tk have evolved quite a bit since these papers were written so the papers are no longer complete or correct, but they will give you an introduction to the systems. The following things are present in this directory and its subdirectories: 1. Tk, a toolkit for X11 windowing applications. 2. Tcl, an embeddable command language on which Tk is based. 3. Wish, a simple windowing shell that uses Tk and Tcl. 4. A collection of demonstration scripts to illustrate the use of various features of Tk. The enclosed code is known to run on most versions of SunOS and Ultrix in combination with the X11R4 and X11R5 window servers from MIT. It should also run with few or no changes on H-P and IBM workstations. 2. What's New In This Release ----------------------------- Tk 2.2 is a major new release with a number of new features relative to the 2.1 release. Here is a summary of some of the most significant improvements: - There is now a text widget. It will display multiple lines of text and allows the text to be edited (but the set of bindings for editing isn't very rich yet). It also includes a tagging mechanism that allows you to change the fonts, colors, etc. on a character- by-character basis, and you can associate bindings with tags to implement hypertext-like features. It handles large texts efficiently. - Canvases have been improved in many ways, including new item types (arcs, bitmaps, and subwindows), Bezier spline support for lines and polygons, "coords" and "bbox" widget commands, and many other improvements and bug fixes. - There is a new "grab" command that can be used to create modal dialog boxes. - There is a new "tkwait" command for waiting for particular events to occur (such as modal dialog box to complete its task). - The menu bindings have been completely reworked to have better Motif compliance, such as keyboard traversal. - Individual menu entries can now have their own colors and fonts. - Most widgets (e.g. buttons, entries, text) now have a "-state" option that can be set to "disabled" to make the widget insensitive. - A new "-disabledForeground" option allows you to request that disabled buttons and menu entries be displayed in a dimmer color rather than with a stippled version of the original color. - Entries and messages can now be tied to a variable so that either is updated if the other changes. A good way to try out the new features is to run the "widget" demo; there are a number of new demonstrations to illustrate the new features. This release also contains many bug fixes. For a complete description of the changes in this release, see the file "changes". As far as I know there should not be any compatibility problems with respect to the 2.1 release. 3. Documentation ---------------- Manual entries for Tk are in the "doc" subdirectory as a set of files with ".man" extensions. Man pages whose names start with capital letters are for the procedures in Tk's C library. All other man pages document Tcl commands provided by Tk. To print any of the man pages, cd to the "doc" directory and invoke your favorite variant of troff using the normal -man macros, for example ditroff -man where is the name of the man page you'd like to print. If you'd like a complete set of hardcopy manual entries, send me a message with your street address. Manual entries for Tcl are available in the subdirectory "tcl/doc"; see the README file in the "tcl" directory for more information. Unfortunately, there doesn't yet exist a tutorial-style introduction to the facilities of Tcl and Tk. The papers give a general introduction, but it may be difficult to make the transition from the papers to the manual entries. If you are familiar with the Xt toolkit then the Tk facilities will probably be easy to pick up from the manual entries. If you have no experience with X or Xt, you may wish to wait another 6-12 months to use Tk, until a more gentle introduction is available. 4. Compiling Tk --------------- Before attempting to compile Tk, personalize Makefile by following the directions at the beginning of the file. You should also configure Tcl by following the directions in the file "tcl/README". Then type "make" in the top-level directory (the one that contains this file). This will compile the Tk library and generate a simple windowing shell called "wish". It will also compile the Tcl library, which is in the "tcl" subdirectory. 5. Installing Scripts --------------------- Tk depends on a library of scripts that establish default behaviors for Tk widgets and do many other things. Tk normally expects the scripts to be in /usr/local/lib/tk. Create this directory and copy everything in the "library" subdirectory to it, including both files and subdirectories. Or, if you don't want to create a subdirectory of /usr/local/lib (or if you can't), you can either make a symbolic link from there to the library subdirectory or you can add a "-DTK_LIBRARY" switch to CFLAGS in Makefile; this will allow you to put the script library anywhere you like. I also recommend installing the wish binary in /usr/local. The demo scripts all work best when it is installed there. 6. Getting Started ------------------ Once wish is compiled you can use it to play around with the Tk facilities. If you run wish with no arguments, it will open a small window on the screen and read Tcl commands from standard input. Or, you can play with some of the pre-canned scripts in the subdirectory scripts/demos. See the README file in the directory for a description of what's available. The file scripts/demos/widget is a script that you can use to invoke many individual demostrations of Tk's facilities. If you want to start typing Tcl/Tk commands to wish, I'd suggest starting with the "bind" command. Then learn about a widget-creation command like "button", and also learn about the "pack" and "place" commands for geometry management. Note: when you create a widget, it won't appear on the screen until you tell a geometry manager about it. The only geometry managers at present are the packer and the placer. If you don't already know Tcl, read the Tcl paper and the Tcl.man manual entry in the tcl subdirectory. The easiest way to learn about writing new widgets is probably to look at existing widget implementations. The demos directory contains an example of a trivial widget, which you might find useful as a starting point for writing new widgets. You might also take a look at main.c, the main program for wish, to see how to write a main program that uses the facilities of Tk and Tcl. 7. Newsgroup ------------ There is a network news group "comp.lang.tcl" intended for the exchange of information about Tcl, Tk, and related applications. Feel free to use this newsgroup both for general information questions and for bug reports. I read the newsgroup and will attempt to fix bugs and problems reported to it. 8. Known Problems ----------------- There are still many imperfections with the system. Below is a list of some of the more serious omissions and bugs: 1. The widgets don't look very good on monochrome displays right now, because I haven't had a chance to figure out how to do the 3-D effects right without color. The widgets should look pretty good in color. The widgets aren't fully Motif-compliant yet. In particular, there is no keyboard navigation yet. The widgets will eventually become fully Motif-compatible (assuming I can figure out how Motif widgets are supposed to look and feel). 2. Tk doesn't work very well with virtual-root window managers such as tvtwm. The file ToDo contains a list of various smaller bugs and mis-features that haven't been fixed yet. 9. Feedback Wanted ------------------ I'm very interested in getting feedback from you both about bugs and about overall design issues. Send your comments to "ouster@sprite.berkeley.edu". I'll do my best to fix show-stopping bugs quickly, but most other things may not get fast turnaround, since I already have a zillion high-priority things to fix or implement. Before submitting requests for new features you may wish to check the file ToDo, which has a list of things I already know about and plan to implement soon. 7. The Future ------------- Tk is still young. I expect it to undergo substantial changes as I learn more about its strengths and weaknesses. Some of the changes will not be backward compatible: at this point I think it's more important to fix problems and improve Tk's structure than to maintain compatibility. At some point in the next year or so there will be a new release with major incompatibilities. My plan is to save up as many as possible of the incompatible changes that are needed and do them all at once. micropolis-activity/src/tk/tkgc.c0000664000076400007640000002150310724145723017335 0ustar simcitysimcity/* * tkGC.c -- * * This file maintains a database of read-only graphics contexts * for the Tk toolkit, in order to allow GC's to be shared. * * Copyright 1990 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkGC.c,v 1.9 92/05/13 08:48:45 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include "tkconfig.h" #include "tk.h" /* * One of the following data structures exists for each GC that is * currently active. The structure is indexed with two hash tables, * one based on font name and one based on XFontStruct address. */ typedef struct { GC gc; /* Graphics context. */ Display *display; /* Display to which gc belongs. */ int refCount; /* Number of active uses of gc. */ Tcl_HashEntry *valueHashPtr;/* Entry in valueTable (needed when deleting * this structure). */ } TkGC; /* * Hash table to map from a GC's values to a TkGC structure describing * a GC with those values (used by Tk_GetGC). */ static Tcl_HashTable valueTable; typedef struct { XGCValues values; /* Desired values for GC. */ Screen *screen; /* Screen for which GC is valid. */ } ValueKey; /* * Hash table for GC -> TkGC mapping. This table is indexed by the * GC identifier, and is used by Tk_FreeGC. */ static Tcl_HashTable idTable; static int initialized = 0; /* 0 means static structures haven't been * initialized yet. */ /* * Forward declarations for procedures defined in this file: */ static void GCInit _ANSI_ARGS_((void)); /* *---------------------------------------------------------------------- * * Tk_GetGC -- * * Given a desired set of values for a graphics context, find * a read-only graphics context with the desired values. * * Results: * The return value is the X identifer for the desired graphics * context. The caller should never modify this GC, and should * call Tk_FreeGC when the GC is no longer needed. * * Side effects: * The GC is added to an internal database with a reference count. * For each call to this procedure, there should eventually be a call * to Tk_FreeGC, so that the database can be cleaned up when GC's * aren't needed anymore. * *---------------------------------------------------------------------- */ GC Tk_GetGC(tkwin, valueMask, valuePtr) Tk_Window tkwin; /* Window in which GC will be used. */ register unsigned long valueMask; /* 1 bits correspond to values specified * in *valuesPtr; other values are set * from defaults. */ register XGCValues *valuePtr; /* Values are specified here for bits set * in valueMask. */ { ValueKey key; Tcl_HashEntry *valueHashPtr, *idHashPtr; register TkGC *gcPtr; int new; if (!initialized) { GCInit(); } /* * Must zero key at start to clear out pad bytes that may be * part of structure on some systems. */ memset((VOID *) &key, 0, sizeof(key)); /* * First, check to see if there's already a GC that will work * for this request (exact matches only, sorry). */ if (valueMask & GCFunction) { key.values.function = valuePtr->function; } else { key.values.function = GXcopy; } if (valueMask & GCPlaneMask) { key.values.plane_mask = valuePtr->plane_mask; } else { key.values.plane_mask = ~0; } if (valueMask & GCForeground) { key.values.foreground = valuePtr->foreground; } else { key.values.foreground = 0; } if (valueMask & GCBackground) { key.values.background = valuePtr->background; } else { key.values.background = 1; } if (valueMask & GCLineWidth) { key.values.line_width = valuePtr->line_width; } else { key.values.line_width = 0; } if (valueMask & GCLineStyle) { key.values.line_style = valuePtr->line_style; } else { key.values.line_style = LineSolid; } if (valueMask & GCCapStyle) { key.values.cap_style = valuePtr->cap_style; } else { key.values.cap_style = CapButt; } if (valueMask & GCJoinStyle) { key.values.join_style = valuePtr->join_style; } else { key.values.join_style = JoinMiter; } if (valueMask & GCFillStyle) { key.values.fill_style = valuePtr->fill_style; } else { key.values.fill_style = FillSolid; } if (valueMask & GCFillRule) { key.values.fill_rule = valuePtr->fill_rule; } else { key.values.fill_rule = EvenOddRule; } if (valueMask & GCArcMode) { key.values.arc_mode = valuePtr->arc_mode; } else { key.values.arc_mode = ArcPieSlice; } if (valueMask & GCTile) { key.values.tile = valuePtr->tile; } else { key.values.tile = None; } if (valueMask & GCStipple) { key.values.stipple = valuePtr->stipple; } else { key.values.stipple = None; } if (valueMask & GCTileStipXOrigin) { key.values.ts_x_origin = valuePtr->ts_x_origin; } else { key.values.ts_x_origin = 0; } if (valueMask & GCTileStipYOrigin) { key.values.ts_y_origin = valuePtr->ts_y_origin; } else { key.values.ts_y_origin = 0; } if (valueMask & GCFont) { key.values.font = valuePtr->font; } else { key.values.font = None; } if (valueMask & GCSubwindowMode) { key.values.subwindow_mode = valuePtr->subwindow_mode; } else { key.values.subwindow_mode = ClipByChildren; } if (valueMask & GCGraphicsExposures) { key.values.graphics_exposures = valuePtr->graphics_exposures; } else { key.values.graphics_exposures = True; } if (valueMask & GCClipXOrigin) { key.values.clip_x_origin = valuePtr->clip_x_origin; } else { key.values.clip_x_origin = 0; } if (valueMask & GCClipYOrigin) { key.values.clip_y_origin = valuePtr->clip_y_origin; } else { key.values.clip_y_origin = 0; } if (valueMask & GCClipMask) { key.values.clip_mask = valuePtr->clip_mask; } else { key.values.clip_mask = None; } if (valueMask & GCDashOffset) { key.values.dash_offset = valuePtr->dash_offset; } else { key.values.dash_offset = 0; } if (valueMask & GCDashList) { key.values.dashes = valuePtr->dashes; } else { key.values.dashes = 4; } key.screen = Tk_Screen(tkwin); valueHashPtr = Tcl_CreateHashEntry(&valueTable, (char *) &key, &new); if (!new) { gcPtr = (TkGC *) Tcl_GetHashValue(valueHashPtr); gcPtr->refCount++; return gcPtr->gc; } /* * No GC is currently available for this set of values. Allocate a * new GC and add a new structure to the database. */ gcPtr = (TkGC *) ckalloc(sizeof(TkGC)); #if 0 gcPtr->gc = XCreateGC(Tk_Display(tkwin), RootWindowOfScreen(Tk_Screen(tkwin)), valueMask, &key.values); #else gcPtr->gc = XCreateGC(Tk_Display(tkwin), Tk_DefaultPixmap(Tk_Screen(tkwin)), valueMask, &key.values); #endif gcPtr->display = Tk_Display(tkwin); gcPtr->refCount = 1; gcPtr->valueHashPtr = valueHashPtr; idHashPtr = Tcl_CreateHashEntry(&idTable, (char *) gcPtr->gc, &new); if (!new) { panic("GC already registered in Tk_GetGC"); } Tcl_SetHashValue(valueHashPtr, gcPtr); Tcl_SetHashValue(idHashPtr, gcPtr); return gcPtr->gc; } /* *---------------------------------------------------------------------- * * Tk_FreeGC -- * * This procedure is called to release a font allocated by * Tk_GetGC. * * Results: * None. * * Side effects: * The reference count associated with gc is decremented, and * gc is officially deallocated if no-one is using it anymore. * *---------------------------------------------------------------------- */ void Tk_FreeGC(gc) GC gc; /* Graphics context to be released. */ { Tcl_HashEntry *idHashPtr; register TkGC *gcPtr; if (!initialized) { panic("Tk_FreeGC called before Tk_GetGC"); } idHashPtr = Tcl_FindHashEntry(&idTable, (char *) gc); if (idHashPtr == NULL) { panic("Tk_FreeGC received unknown gc argument"); } gcPtr = (TkGC *) Tcl_GetHashValue(idHashPtr); gcPtr->refCount--; if (gcPtr->refCount == 0) { XFreeGC(gcPtr->display, gcPtr->gc); Tcl_DeleteHashEntry(gcPtr->valueHashPtr); Tcl_DeleteHashEntry(idHashPtr); ckfree((char *) gcPtr); } } /* *---------------------------------------------------------------------- * * GCInit -- * * Initialize the structures used for GC management. * * Results: * None. * * Side effects: * Read the code. * *---------------------------------------------------------------------- */ static void GCInit() { initialized = 1; Tcl_InitHashTable(&valueTable, sizeof(ValueKey)/sizeof(int)); Tcl_InitHashTable(&idTable, TCL_ONE_WORD_KEYS); } micropolis-activity/src/tk/tkscrbar.c0000664000076400007640000010751710724145723020232 0ustar simcitysimcity/* * tkScrollbar.c -- * * This module implements a scrollbar widgets for the Tk * toolkit. A scrollbar displays a slider and two arrows; * mouse clicks on features within the scrollbar cause * scrolling commands to be invoked. * * Copyright 1990-1992 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkScrollbar.c,v 1.35 92/05/22 16:57:27 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tkconfig.h" #include "default.h" #include "tkint.h" /* * A data structure of the following type is kept for each scrollbar * widget managed by this file: */ typedef struct { Tk_Window tkwin; /* Window that embodies the scrollbar. NULL * means that the window has been destroyed * but the data structures haven't yet been * cleaned up.*/ Tcl_Interp *interp; /* Interpreter associated with scrollbar. */ Tk_Uid orientUid; /* Orientation for window ("vertical" or * "horizontal"). */ int vertical; /* Non-zero means vertical orientation * requested, zero means horizontal. */ int width; /* Desired narrow dimension of scrollbar, * in pixels. */ char *command; /* Command prefix to use when invoking * scrolling commands. NULL means don't * invoke commands. Malloc'ed. */ int commandSize; /* Number of non-NULL bytes in command. */ int repeatDelay; /* How long to wait before auto-repeating * on scrolling actions (in ms). */ int repeatInterval; /* Interval between autorepeats (in ms). */ /* * Information used when displaying widget: */ int borderWidth; /* Width of 3-D borders. */ Tk_3DBorder bgBorder; /* Used for drawing background. */ Tk_3DBorder fgBorder; /* For drawing foreground shapes. */ Tk_3DBorder activeBorder; /* For drawing foreground shapes when * active (i.e. when mouse is positioned * over element). NULL means use fgBorder. */ GC copyGC; /* Used for copying from pixmap onto screen. */ int relief; /* Indicates whether window as a whole is * raised, sunken, or flat. */ int offset; /* Zero if relief is TK_RELIEF_FLAT, * borderWidth otherwise. Indicates how * much interior stuff must be offset from * outside edges to leave room for border. */ int arrowLength; /* Length of arrows along long dimension of * scrollbar. Recomputed on window size * changes. */ int sliderFirst; /* Pixel coordinate of top or left edge * of slider area, including border. */ int sliderLast; /* Coordinate of pixel just after bottom * or right edge of slider area, including * border. */ int mouseField; /* Indicates which scrollbar element is * under mouse (e.g. TOP_ARROW; see below * for possible values). */ int pressField; /* Field in which button was pressed, or -1 * if no button is down. */ int pressPos; /* Position of mouse when button was * pressed (y for vertical scrollbar, x * for horizontal). */ int pressFirstUnit; /* Value of "firstUnit" when mouse button * was pressed. */ /* * Information describing the application related to the scrollbar. * This information is provided by the application by invoking the * "set" widget command. */ int totalUnits; /* Total dimension of application, in * units. */ int windowUnits; /* Maximum number of units that can * be displayed in the window at * once. */ int firstUnit; /* Number of last unit visible in * application's window. */ int lastUnit; /* Index of last unit visible in window. */ /* * Miscellaneous information: */ Cursor cursor; /* Current cursor for window, or None. */ Tk_TimerToken autoRepeat; /* Token for auto-repeat that's * currently in progress. NULL means no * auto-repeat in progress. */ int flags; /* Various flags; see below for * definitions. */ } Scrollbar; /* * Legal values for "mouseField" field of Scrollbar structures. These * are also the return values from the ScrollbarPosition procedure. */ #define TOP_ARROW 1 #define TOP_GAP 2 #define SLIDER 3 #define BOTTOM_GAP 4 #define BOTTOM_ARROW 5 #define OUTSIDE 6 /* * Flag bits for scrollbars: * * REDRAW_PENDING: Non-zero means a DoWhenIdle handler * has already been queued to redraw * this window. */ #define REDRAW_PENDING 1 /* * Information used for argv parsing. */ static Tk_ConfigSpec configSpecs[] = { {TK_CONFIG_BORDER, "-activeforeground", "activeForeground", "Background", DEF_SCROLLBAR_ACTIVE_FG_COLOR, Tk_Offset(Scrollbar, activeBorder), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-activeforeground", "activeForeground", "Background", DEF_SCROLLBAR_ACTIVE_FG_MONO, Tk_Offset(Scrollbar, activeBorder), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_BORDER, "-background", "background", "Background", DEF_SCROLLBAR_BG_COLOR, Tk_Offset(Scrollbar, bgBorder), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-background", "background", "Background", DEF_SCROLLBAR_BG_MONO, Tk_Offset(Scrollbar, bgBorder), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_SYNONYM, "-bd", "borderWidth", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_SYNONYM, "-bg", "background", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", DEF_SCROLLBAR_BORDER_WIDTH, Tk_Offset(Scrollbar, borderWidth), 0}, {TK_CONFIG_STRING, "-command", "command", "Command", DEF_SCROLLBAR_COMMAND, Tk_Offset(Scrollbar, command), 0}, {TK_CONFIG_ACTIVE_CURSOR, "-cursor", "cursor", "Cursor", DEF_SCROLLBAR_CURSOR, Tk_Offset(Scrollbar, cursor), TK_CONFIG_NULL_OK}, {TK_CONFIG_SYNONYM, "-fg", "foreground", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_BORDER, "-foreground", "foreground", "Foreground", DEF_SCROLLBAR_FG_COLOR, Tk_Offset(Scrollbar, fgBorder), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-foreground", "foreground", "Foreground", DEF_SCROLLBAR_FG_MONO, Tk_Offset(Scrollbar, fgBorder), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_UID, "-orient", "orient", "Orient", DEF_SCROLLBAR_ORIENT, Tk_Offset(Scrollbar, orientUid), 0}, {TK_CONFIG_RELIEF, "-relief", "relief", "Relief", DEF_SCROLLBAR_RELIEF, Tk_Offset(Scrollbar, relief), 0}, {TK_CONFIG_INT, "-repeatdelay", "repeatDelay", "RepeatDelay", DEF_SCROLLBAR_REPEAT_DELAY, Tk_Offset(Scrollbar, repeatDelay), 0}, {TK_CONFIG_INT, "-repeatinterval", "repeatInterval", "RepeatInterval", DEF_SCROLLBAR_REPEAT_INTERVAL, Tk_Offset(Scrollbar, repeatInterval), 0}, {TK_CONFIG_PIXELS, "-width", "width", "Width", DEF_SCROLLBAR_WIDTH, Tk_Offset(Scrollbar, width), 0}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; /* * Forward declarations for procedures defined later in this file: */ static void ComputeScrollbarGeometry _ANSI_ARGS_(( Scrollbar *scrollPtr)); static int ConfigureScrollbar _ANSI_ARGS_((Tcl_Interp *interp, Scrollbar *scrollPtr, int argc, char **argv, int flags)); static void DestroyScrollbar _ANSI_ARGS_((ClientData clientData)); static void DisplayScrollbar _ANSI_ARGS_((ClientData clientData)); static void EventuallyRedraw _ANSI_ARGS_((Scrollbar *scrollPtr)); static void ScrollbarEventProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); static void ScrollbarMouseProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); static void ScrollbarNewField _ANSI_ARGS_((Scrollbar *scrollPtr, int field)); static int ScrollbarPosition _ANSI_ARGS_((Scrollbar *scrollPtr, int x, int y)); static void ScrollbarTimerProc _ANSI_ARGS_(( ClientData clientData)); static int ScrollbarWidgetCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *, int argc, char **argv)); static void ScrollCmd _ANSI_ARGS_((Scrollbar *scrollPtr, int unit)); /* *-------------------------------------------------------------- * * Tk_ScrollbarCmd -- * * This procedure is invoked to process the "scrollbar" Tcl * command. See the user documentation for details on what * it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ int Tk_ScrollbarCmd(clientData, interp, argc, argv) ClientData clientData; /* Main window associated with * interpreter. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { Tk_Window tkwin = (Tk_Window) clientData; register Scrollbar *scrollPtr; Tk_Window new; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " pathName ?options?\"", (char *) NULL); return TCL_ERROR; } new = Tk_CreateWindowFromPath(interp, tkwin, argv[1], (char *) NULL); if (new == NULL) { return TCL_ERROR; } /* * Initialize fields that won't be initialized by ConfigureScrollbar, * or which ConfigureScrollbar expects to have reasonable values * (e.g. resource pointers). */ scrollPtr = (Scrollbar *) ckalloc(sizeof(Scrollbar)); scrollPtr->tkwin = new; scrollPtr->interp = interp; scrollPtr->command = NULL; scrollPtr->bgBorder = NULL; scrollPtr->fgBorder = NULL; scrollPtr->activeBorder = NULL; scrollPtr->copyGC = None; scrollPtr->mouseField = OUTSIDE; scrollPtr->pressField = -1; scrollPtr->totalUnits = 0; scrollPtr->windowUnits = 0; scrollPtr->firstUnit = 0; scrollPtr->lastUnit = 0; scrollPtr->cursor = None; scrollPtr->autoRepeat = NULL; scrollPtr->flags = 0; Tk_SetClass(scrollPtr->tkwin, "Scrollbar"); Tk_CreateEventHandler(scrollPtr->tkwin, ExposureMask|StructureNotifyMask, ScrollbarEventProc, (ClientData) scrollPtr); Tk_CreateEventHandler(scrollPtr->tkwin, EnterWindowMask|LeaveWindowMask |PointerMotionMask|ButtonPressMask|ButtonReleaseMask, ScrollbarMouseProc, (ClientData) scrollPtr); Tcl_CreateCommand(interp, Tk_PathName(scrollPtr->tkwin), ScrollbarWidgetCmd, (ClientData) scrollPtr, (void (*)()) NULL); if (ConfigureScrollbar(interp, scrollPtr, argc-2, argv+2, 0) != TCL_OK) { goto error; } interp->result = Tk_PathName(scrollPtr->tkwin); return TCL_OK; error: Tk_DestroyWindow(scrollPtr->tkwin); return TCL_ERROR; } /* *-------------------------------------------------------------- * * ScrollbarWidgetCmd -- * * This procedure is invoked to process the Tcl command * that corresponds to a widget managed by this module. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ static int ScrollbarWidgetCmd(clientData, interp, argc, argv) ClientData clientData; /* Information about scrollbar * widget. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { register Scrollbar *scrollPtr = (Scrollbar *) clientData; int result = TCL_OK; int length; char c; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " option ?arg arg ...?\"", (char *) NULL); return TCL_ERROR; } Tk_Preserve((ClientData) scrollPtr); c = argv[1][0]; length = strlen(argv[1]); if ((c == 'c') && (strncmp(argv[1], "configure", length) == 0)) { if (argc == 2) { result = Tk_ConfigureInfo(interp, scrollPtr->tkwin, configSpecs, (char *) scrollPtr, (char *) NULL, 0); } else if (argc == 3) { result = Tk_ConfigureInfo(interp, scrollPtr->tkwin, configSpecs, (char *) scrollPtr, argv[2], 0); } else { result = ConfigureScrollbar(interp, scrollPtr, argc-2, argv+2, TK_CONFIG_ARGV_ONLY); } } else if ((c == 'g') && (strncmp(argv[1], "get", length) == 0)) { if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " get\"", (char *) NULL); goto error; } sprintf(interp->result, "%d %d %d %d", scrollPtr->totalUnits, scrollPtr->windowUnits, scrollPtr->firstUnit, scrollPtr->lastUnit); } else if ((c == 's') && (strncmp(argv[1], "set", length) == 0)) { int totalUnits, windowUnits, firstUnit, lastUnit; if (argc != 6) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " set totalUnits windowUnits firstUnit lastUnit\"", (char *) NULL); goto error; } if (Tcl_GetInt(interp, argv[2], &totalUnits) != TCL_OK) { goto error; } if (totalUnits < 0) { sprintf(interp->result, "illegal totalUnits %d", totalUnits); goto error; } if (Tcl_GetInt(interp, argv[3], &windowUnits) != TCL_OK) { goto error; } if (windowUnits < 0) { sprintf(interp->result, "illegal windowUnits %d", windowUnits); goto error; } if (Tcl_GetInt(interp, argv[4], &firstUnit) != TCL_OK) { goto error; } if (Tcl_GetInt(interp, argv[5], &lastUnit) != TCL_OK) { goto error; } if (totalUnits > 0) { if (lastUnit < firstUnit) { sprintf(interp->result, "illegal lastUnit %d", lastUnit); goto error; } } else { firstUnit = lastUnit = 0; } scrollPtr->totalUnits = totalUnits; scrollPtr->windowUnits = windowUnits; scrollPtr->firstUnit = firstUnit; scrollPtr->lastUnit = lastUnit; ComputeScrollbarGeometry(scrollPtr); EventuallyRedraw(scrollPtr); } else { Tcl_AppendResult(interp, "bad option \"", argv[1], "\": must be configure, get, or set", (char *) NULL); goto error; } Tk_Release((ClientData) scrollPtr); return result; error: Tk_Release((ClientData) scrollPtr); return TCL_ERROR; } /* *---------------------------------------------------------------------- * * DestroyScrollbar -- * * This procedure is invoked by Tk_EventuallyFree or Tk_Release * to clean up the internal structure of a scrollbar at a safe time * (when no-one is using it anymore). * * Results: * None. * * Side effects: * Everything associated with the scrollbar is freed up. * *---------------------------------------------------------------------- */ static void DestroyScrollbar(clientData) ClientData clientData; /* Info about scrollbar widget. */ { register Scrollbar *scrollPtr = (Scrollbar *) clientData; if (scrollPtr->command != NULL) { ckfree(scrollPtr->command); } if (scrollPtr->bgBorder != NULL) { Tk_Free3DBorder(scrollPtr->bgBorder); } if (scrollPtr->fgBorder != NULL) { Tk_Free3DBorder(scrollPtr->fgBorder); } if (scrollPtr->activeBorder != NULL) { Tk_Free3DBorder(scrollPtr->activeBorder); } if (scrollPtr->copyGC != None) { Tk_FreeGC(scrollPtr->copyGC); } if (scrollPtr->cursor != None) { Tk_FreeCursor(scrollPtr->cursor); } ckfree((char *) scrollPtr); } /* *---------------------------------------------------------------------- * * ConfigureScrollbar -- * * This procedure is called to process an argv/argc list, plus * the Tk option database, in order to configure (or * reconfigure) a scrollbar widget. * * Results: * The return value is a standard Tcl result. If TCL_ERROR is * returned, then interp->result contains an error message. * * Side effects: * Configuration information, such as colors, border width, * etc. get set for scrollPtr; old resources get freed, * if there were any. * *---------------------------------------------------------------------- */ static int ConfigureScrollbar(interp, scrollPtr, argc, argv, flags) Tcl_Interp *interp; /* Used for error reporting. */ register Scrollbar *scrollPtr; /* Information about widget; may or * may not already have values for * some fields. */ int argc; /* Number of valid entries in argv. */ char **argv; /* Arguments. */ int flags; /* Flags to pass to * Tk_ConfigureWidget. */ { int length; XGCValues gcValues; if (Tk_ConfigureWidget(interp, scrollPtr->tkwin, configSpecs, argc, argv, (char *) scrollPtr, flags) != TCL_OK) { return TCL_ERROR; } /* * A few options need special processing, such as parsing the * orientation or setting the background from a 3-D border. */ length = strlen(scrollPtr->orientUid); if (strncmp(scrollPtr->orientUid, "vertical", length) == 0) { scrollPtr->vertical = 1; } else if (strncmp(scrollPtr->orientUid, "horizontal", length) == 0) { scrollPtr->vertical = 0; } else { Tcl_AppendResult(interp, "bad orientation \"", scrollPtr->orientUid, "\": must be vertical or horizontal", (char *) NULL); return TCL_ERROR; } if (scrollPtr->command != NULL) { scrollPtr->commandSize = strlen(scrollPtr->command); } else { scrollPtr->commandSize = 0; } Tk_SetBackgroundFromBorder(scrollPtr->tkwin, scrollPtr->bgBorder); if (scrollPtr->copyGC == None) { gcValues.graphics_exposures = False; scrollPtr->copyGC = Tk_GetGC(scrollPtr->tkwin, GCGraphicsExposures, &gcValues); } /* * Register the desired geometry for the window (leave enough space * for the two arrows plus a minimum-size slider, plus border around * the whole window, if any). Then arrange for the window to be * redisplayed. */ ComputeScrollbarGeometry(scrollPtr); EventuallyRedraw(scrollPtr); return TCL_OK; } /* *-------------------------------------------------------------- * * DisplayScrollbar -- * * This procedure redraws the contents of a scrollbar window. * It is invoked as a do-when-idle handler, so it only runs * when there's nothing else for the application to do. * * Results: * None. * * Side effects: * Information appears on the screen. * *-------------------------------------------------------------- */ static void DisplayScrollbar(clientData) ClientData clientData; /* Information about window. */ { register Scrollbar *scrollPtr = (Scrollbar *) clientData; register Tk_Window tkwin = scrollPtr->tkwin; XPoint points[7]; Tk_3DBorder border; int relief, width, fieldLength; Pixmap pixmap; if ((scrollPtr->tkwin == NULL) || !Tk_IsMapped(tkwin)) { goto done; } if (scrollPtr->vertical) { width = Tk_Width(tkwin) - 2*scrollPtr->offset; } else { width = Tk_Height(tkwin) - 2*scrollPtr->offset; } /* * In order to avoid screen flashes, this procedure redraws * the scrollbar in a pixmap, then copies the pixmap to the * screen in a single operation. This means that there's no * point in time where the on-sreen image has been cleared. */ pixmap = XCreatePixmap(Tk_Display(tkwin), Tk_WindowId(tkwin), Tk_Width(tkwin), Tk_Height(tkwin), Tk_DefaultDepth(Tk_Screen(tkwin))); Tk_Fill3DRectangle(Tk_Display(tkwin), pixmap, scrollPtr->bgBorder, 0, 0, Tk_Width(tkwin), Tk_Height(tkwin), scrollPtr->borderWidth, scrollPtr->relief); /* * Draw the top or left arrow. The coordinates of the polygon * points probably seem odd, but they were carefully chosen with * respect to X's rules for filling polygons. These point choices * cause the arrows to just fill the narrow dimension of the * scrollbar and be properly centered. */ if (scrollPtr->mouseField == TOP_ARROW) { border = scrollPtr->activeBorder; relief = scrollPtr->pressField == TOP_ARROW ? TK_RELIEF_SUNKEN : TK_RELIEF_RAISED; } else { border = scrollPtr->fgBorder; relief = TK_RELIEF_RAISED; } if (scrollPtr->vertical) { points[0].x = scrollPtr->offset - 1; points[0].y = scrollPtr->arrowLength + scrollPtr->offset; points[1].x = width + scrollPtr->offset; points[1].y = points[0].y; points[2].x = width/2 + scrollPtr->offset; points[2].y = scrollPtr->offset - 1; Tk_Fill3DPolygon(Tk_Display(tkwin), pixmap, border, points, 3, scrollPtr->borderWidth, relief); } else { points[0].x = scrollPtr->arrowLength + scrollPtr->offset; points[0].y = scrollPtr->offset - 1; points[1].x = scrollPtr->offset; points[1].y = width/2 + scrollPtr->offset; points[2].x = points[0].x; points[2].y = width + scrollPtr->offset; Tk_Fill3DPolygon(Tk_Display(tkwin), pixmap, border, points, 3, scrollPtr->borderWidth, relief); } /* * Display the bottom or right arrow. */ if (scrollPtr->mouseField == BOTTOM_ARROW) { border = scrollPtr->activeBorder; relief = scrollPtr->pressField == BOTTOM_ARROW ? TK_RELIEF_SUNKEN : TK_RELIEF_RAISED; } else { border = scrollPtr->fgBorder; relief = TK_RELIEF_RAISED; } if (scrollPtr->vertical) { points[0].x = scrollPtr->offset; points[0].y = Tk_Height(tkwin) - scrollPtr->arrowLength - scrollPtr->offset; points[1].x = width/2 + scrollPtr->offset; points[1].y = Tk_Height(tkwin) - scrollPtr->offset; points[2].x = width + scrollPtr->offset; points[2].y = points[0].y; Tk_Fill3DPolygon(Tk_Display(tkwin), pixmap, border, points, 3, scrollPtr->borderWidth, relief); } else { points[0].x = Tk_Width(tkwin) - scrollPtr->arrowLength - scrollPtr->offset; points[0].y = scrollPtr->offset - 1; points[1].x = points[0].x; points[1].y = width + scrollPtr->offset; points[2].x = Tk_Width(tkwin) - scrollPtr->offset; points[2].y = width/2 + scrollPtr->offset; Tk_Fill3DPolygon(Tk_Display(tkwin), pixmap, border, points, 3, scrollPtr->borderWidth, relief); } /* * Display the slider. */ if (scrollPtr->mouseField == SLIDER) { border = scrollPtr->activeBorder; relief = scrollPtr->pressField == SLIDER ? TK_RELIEF_SUNKEN : TK_RELIEF_RAISED; } else { border = scrollPtr->fgBorder; relief = TK_RELIEF_RAISED; } fieldLength = (scrollPtr->vertical ? Tk_Height(tkwin) : Tk_Width(tkwin)) - 2*(scrollPtr->arrowLength + scrollPtr->offset); if (fieldLength < 0) { fieldLength = 0; } if (scrollPtr->vertical) { Tk_Fill3DRectangle(Tk_Display(tkwin), pixmap, border, 1 + scrollPtr->offset, scrollPtr->sliderFirst, width-2, scrollPtr->sliderLast - scrollPtr->sliderFirst, scrollPtr->borderWidth, relief); } else { Tk_Fill3DRectangle(Tk_Display(tkwin), pixmap, border, scrollPtr->sliderFirst, 1 + scrollPtr->offset, scrollPtr->sliderLast - scrollPtr->sliderFirst, width-2, scrollPtr->borderWidth, relief); } /* * Copy the information from the off-screen pixmap onto the screen, * then delete the pixmap. */ XCopyArea(Tk_Display(tkwin), pixmap, Tk_WindowId(tkwin), scrollPtr->copyGC, 0, 0, Tk_Width(tkwin), Tk_Height(tkwin), 0, 0); XFreePixmap(Tk_Display(tkwin), pixmap); done: scrollPtr->flags &= ~REDRAW_PENDING; } /* *-------------------------------------------------------------- * * ScrollbarEventProc -- * * This procedure is invoked by the Tk dispatcher for various * events on scrollbars. * * Results: * None. * * Side effects: * When the window gets deleted, internal structures get * cleaned up. When it gets exposed, it is redisplayed. * *-------------------------------------------------------------- */ static void ScrollbarEventProc(clientData, eventPtr) ClientData clientData; /* Information about window. */ XEvent *eventPtr; /* Information about event. */ { Scrollbar *scrollPtr = (Scrollbar *) clientData; if ((eventPtr->type == Expose) && (eventPtr->xexpose.count == 0)) { EventuallyRedraw(scrollPtr); } else if (eventPtr->type == DestroyNotify) { Tcl_DeleteCommand(scrollPtr->interp, Tk_PathName(scrollPtr->tkwin)); scrollPtr->tkwin = NULL; if (scrollPtr->flags & REDRAW_PENDING) { Tk_CancelIdleCall(DisplayScrollbar, (ClientData) scrollPtr); } Tk_EventuallyFree((ClientData) scrollPtr, DestroyScrollbar); } else if (eventPtr->type == ConfigureNotify) { ComputeScrollbarGeometry(scrollPtr); } } /* *---------------------------------------------------------------------- * * ComputeScrollbarGeometry -- * * After changes in a scrollbar's size or configuration, this * procedure recomputes various geometry information used in * displaying the scrollbar. * * Results: * None. * * Side effects: * The scrollbar will be displayed differently. * *---------------------------------------------------------------------- */ static void ComputeScrollbarGeometry(scrollPtr) register Scrollbar *scrollPtr; /* Scrollbar whose geometry may * have changed. */ { int width, fieldLength; if (scrollPtr->relief == TK_RELIEF_FLAT) { scrollPtr->offset = 0; } else { scrollPtr->offset = scrollPtr->borderWidth; } width = (scrollPtr->vertical) ? Tk_Width(scrollPtr->tkwin) : Tk_Height(scrollPtr->tkwin); scrollPtr->arrowLength = (((width - 2*scrollPtr->offset)*173) + 100) / 200; fieldLength = (scrollPtr->vertical ? Tk_Height(scrollPtr->tkwin) : Tk_Width(scrollPtr->tkwin)) - 2*(scrollPtr->arrowLength + scrollPtr->offset); if (fieldLength < 0) { fieldLength = 0; } if (scrollPtr->totalUnits <= 0) { scrollPtr->sliderFirst = 0; scrollPtr->sliderLast = fieldLength; } else { scrollPtr->sliderFirst = (fieldLength*scrollPtr->firstUnit + scrollPtr->totalUnits/2)/scrollPtr->totalUnits; scrollPtr->sliderLast = (fieldLength*(scrollPtr->lastUnit+1) + scrollPtr->totalUnits/2)/scrollPtr->totalUnits; /* * Adjust the slider so that some piece of it is always * displayed in the scrollbar and so that it has at least * a minimal width (so it can be grabbed with the mouse). */ if (scrollPtr->sliderFirst > (fieldLength - 2*scrollPtr->borderWidth)) { scrollPtr->sliderFirst = fieldLength - 2*scrollPtr->borderWidth; } if (scrollPtr->sliderFirst < 0) { scrollPtr->sliderFirst = 0; } if (scrollPtr->sliderLast < (scrollPtr->sliderFirst + 2*scrollPtr->borderWidth)) { scrollPtr->sliderLast = scrollPtr->sliderFirst + 2*scrollPtr->borderWidth; } if (scrollPtr->sliderLast > fieldLength) { scrollPtr->sliderLast = fieldLength; } } scrollPtr->sliderFirst += scrollPtr->arrowLength + scrollPtr->offset; scrollPtr->sliderLast += scrollPtr->arrowLength + scrollPtr->offset; /* * Register the desired geometry for the window (leave enough space * for the two arrows plus a minimum-size slider, plus border around * the whole window, if any). Then arrange for the window to be * redisplayed. */ if (scrollPtr->vertical) { Tk_GeometryRequest(scrollPtr->tkwin, scrollPtr->width + 2*scrollPtr->offset, 2*(scrollPtr->arrowLength + scrollPtr->borderWidth + scrollPtr->offset)); } else { Tk_GeometryRequest(scrollPtr->tkwin, 2*(scrollPtr->arrowLength + scrollPtr->borderWidth + scrollPtr->offset), scrollPtr->width + 2*scrollPtr->offset); } Tk_SetInternalBorder(scrollPtr->tkwin, scrollPtr->borderWidth); } /* *-------------------------------------------------------------- * * ScrollbarPosition -- * * Determine the scrollbar element corresponding to a * given position. * * Results: * One of TOP_ARROW, TOP_GAP, etc., indicating which element * of the scrollbar covers the position given by (x, y). If * (x,y) is outside the scrollbar entirely, then OUTSIDE is * returned. * * Side effects: * None. * *-------------------------------------------------------------- */ static int ScrollbarPosition(scrollPtr, x, y) register Scrollbar *scrollPtr; /* Scrollbar widget record. */ int x, y; /* Coordinates within scrollPtr's * window. */ { int length, width, tmp; if (scrollPtr->vertical) { length = Tk_Height(scrollPtr->tkwin); width = Tk_Width(scrollPtr->tkwin); } else { tmp = x; x = y; y = tmp; length = Tk_Width(scrollPtr->tkwin); width = Tk_Height(scrollPtr->tkwin); } if ((x < 0) || (x > width) || (y < 0)) { return OUTSIDE; } /* * All of the calculations in this procedure mirror those in * DisplayScrollbar. Be sure to keep the two consistent. */ if (y < (scrollPtr->offset + scrollPtr->arrowLength)) { return TOP_ARROW; } if (y < scrollPtr->sliderFirst) { return TOP_GAP; } if (y < scrollPtr->sliderLast) { return SLIDER; } if (y >= (length - (scrollPtr->arrowLength + scrollPtr->offset))) { return BOTTOM_ARROW; } return BOTTOM_GAP; } /* *-------------------------------------------------------------- * * ScrollbarMouseProc -- * * This procedure is called back by Tk in response to * mouse events such as window entry, window exit, mouse * motion, and button presses. * * Results: * None. * * Side effects: * This procedure implements the "feel" of the scrollbar * by issuing scrolling commands in response to button presses * and mouse motion. * *-------------------------------------------------------------- */ static void ScrollbarMouseProc(clientData, eventPtr) ClientData clientData; /* Information about window. */ register XEvent *eventPtr; /* Information about event. */ { register Scrollbar *scrollPtr = (Scrollbar *) clientData; Tk_Preserve((ClientData) scrollPtr); if (eventPtr->type == EnterNotify) { if (scrollPtr->pressField == -1) { ScrollbarNewField(scrollPtr, ScrollbarPosition(scrollPtr, eventPtr->xcrossing.x, eventPtr->xcrossing.y)); } } else if (eventPtr->type == LeaveNotify) { if (scrollPtr->pressField == -1) { ScrollbarNewField(scrollPtr, OUTSIDE); } } else if (eventPtr->type == MotionNotify) { if (scrollPtr->pressField == SLIDER) { int delta, length, newFirst; if (scrollPtr->vertical) { delta = eventPtr->xmotion.y - scrollPtr->pressPos; length = Tk_Height(scrollPtr->tkwin) - 2*(scrollPtr->arrowLength + scrollPtr->offset); } else { delta = eventPtr->xmotion.x - scrollPtr->pressPos; length = Tk_Width(scrollPtr->tkwin) - 2*(scrollPtr->arrowLength + scrollPtr->offset); } /* * Do the division with positive numbers to avoid * differences in negative-number truncation on different * machines. */ if (delta >= 0) { newFirst = scrollPtr->pressFirstUnit + ((delta * scrollPtr->totalUnits) + (length/2)) / length; } else { newFirst = scrollPtr->pressFirstUnit - (((-delta) * scrollPtr->totalUnits) + (length/2)) / length; } ScrollCmd(scrollPtr, newFirst); } else if (scrollPtr->pressField == -1) { ScrollbarNewField(scrollPtr, ScrollbarPosition(scrollPtr, eventPtr->xmotion.x, eventPtr->xmotion.y)); } } else if ((eventPtr->type == ButtonPress) && (eventPtr->xbutton.state == 0)) { scrollPtr->pressField = scrollPtr->mouseField; if (scrollPtr->pressField != SLIDER) { scrollPtr->autoRepeat = Tk_CreateTimerHandler( scrollPtr->repeatDelay, ScrollbarTimerProc, (ClientData) scrollPtr); } if (scrollPtr->vertical) { scrollPtr->pressPos = eventPtr->xbutton.y; } else { scrollPtr->pressPos = eventPtr->xbutton.x; } scrollPtr->pressFirstUnit = scrollPtr->firstUnit; if (scrollPtr->pressFirstUnit <= -scrollPtr->windowUnits) { scrollPtr->pressFirstUnit = 1-scrollPtr->windowUnits; } if (scrollPtr->pressFirstUnit >= scrollPtr->totalUnits) { scrollPtr->pressFirstUnit = scrollPtr->totalUnits-1; } EventuallyRedraw(scrollPtr); } else if (eventPtr->type == ButtonRelease) { if (scrollPtr->pressField == scrollPtr->mouseField) { switch (scrollPtr->pressField) { case TOP_ARROW: ScrollCmd(scrollPtr, scrollPtr->firstUnit-1); break; case TOP_GAP: if (scrollPtr->windowUnits <= 1) { ScrollCmd(scrollPtr, scrollPtr->firstUnit - 1); } else { ScrollCmd(scrollPtr, scrollPtr->firstUnit - (scrollPtr->windowUnits-1)); } break; case BOTTOM_GAP: { if (scrollPtr->windowUnits <= 1) { ScrollCmd(scrollPtr, scrollPtr->firstUnit + 1); } else { ScrollCmd(scrollPtr, scrollPtr->firstUnit + (scrollPtr->windowUnits-1)); } break; } case BOTTOM_ARROW: ScrollCmd(scrollPtr, scrollPtr->firstUnit+1); break; } } if (scrollPtr->autoRepeat != NULL) { Tk_DeleteTimerHandler(scrollPtr->autoRepeat); scrollPtr->autoRepeat = NULL; } EventuallyRedraw(scrollPtr); scrollPtr->pressField = -1; ScrollbarNewField(scrollPtr, ScrollbarPosition(scrollPtr, eventPtr->xbutton.x, eventPtr->xbutton.y)); } Tk_Release((ClientData) scrollPtr); } /* *-------------------------------------------------------------- * * ScrollCmd -- * * This procedure takes care of invoking a scrolling Tcl * command and reporting any error that occurs in it. * * Results: * None. * * Side effects: * A Tcl command is invoked, and an additional error-processing * command may also be invoked. * *-------------------------------------------------------------- */ static void ScrollCmd(scrollPtr, unit) register Scrollbar *scrollPtr; /* Scrollbar from which to issue * command. */ int unit; /* Unit position within thing being * being displayed that should appear * at top or right of screen. */ { char string[20]; int result; if ((unit == scrollPtr->firstUnit) || (scrollPtr->command == NULL)) { return; } sprintf(string, " %d", unit); result = Tcl_VarEval(scrollPtr->interp, scrollPtr->command, string, (char *) NULL); if (result != TCL_OK) { TkBindError(scrollPtr->interp); } } /* *-------------------------------------------------------------- * * EventuallyRedraw -- * * Arrange for one or more of the fields of a scrollbar * to be redrawn. * * Results: * None. * * Side effects: * None. * *-------------------------------------------------------------- */ static void EventuallyRedraw(scrollPtr) register Scrollbar *scrollPtr; /* Information about widget. */ { if ((scrollPtr->tkwin == NULL) || (!Tk_IsMapped(scrollPtr->tkwin))) { return; } if ((scrollPtr->flags & REDRAW_PENDING) == 0) { Tk_DoWhenIdle(DisplayScrollbar, (ClientData) scrollPtr); scrollPtr->flags |= REDRAW_PENDING; } } /* *-------------------------------------------------------------- * * ScrollbarNewField -- * * This procedure is called to declare that the mouse is in * a particular field of the scrollbar (e.g. top arrow), so * that the field can be highlighed and the previous field * can be returned to normal display. * * Results: * None. * * Side effects: * Fields may be redisplayed. * *-------------------------------------------------------------- */ static void ScrollbarNewField(scrollPtr, field) register Scrollbar *scrollPtr; /* Information about widget. */ int field; /* Identifies field under mouse, * e.g. TOP_ARROW. */ { if (field == scrollPtr->mouseField) { return; } EventuallyRedraw(scrollPtr); scrollPtr->mouseField = field; } /* *-------------------------------------------------------------- * * ScrollbarTimerProc -- * * This procedure is invoked as a Tk timer handler for actions * that auto-repeat (mouse presses in an arrow or gap). It * performs the auto-repeat action. * * Results: * None. * * Side effects: * Whatever action corresponds to the current mouse button * is repeated, and this procedure is rescheduled to execute * again later. * *-------------------------------------------------------------- */ static void ScrollbarTimerProc(clientData) ClientData clientData; /* Information about widget. */ { register Scrollbar *scrollPtr = (Scrollbar *) clientData; Tk_Preserve((ClientData) scrollPtr); switch(scrollPtr->pressField) { case TOP_ARROW: ScrollCmd(scrollPtr, scrollPtr->firstUnit-1); break; case TOP_GAP: ScrollCmd(scrollPtr, scrollPtr->firstUnit - (scrollPtr->windowUnits-1)); break; case BOTTOM_GAP: { ScrollCmd(scrollPtr, scrollPtr->firstUnit + (scrollPtr->windowUnits-1)); break; } case BOTTOM_ARROW: ScrollCmd(scrollPtr, scrollPtr->firstUnit+1); break; } if (scrollPtr->tkwin != NULL) { scrollPtr->autoRepeat = Tk_CreateTimerHandler( scrollPtr->repeatInterval, ScrollbarTimerProc, (ClientData) scrollPtr); } Tk_Release((ClientData) scrollPtr); } micropolis-activity/src/tk/tktxtag.c0000664000076400007640000007412210724145723020100 0ustar simcitysimcity/* * tkTextTag.c -- * * This module implements the "tag" subcommand of the widget command * for text widgets, plus most of the other high-level functions * related to tags. * * Copyright 1992 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkTextTag.c,v 1.3 92/07/28 15:38:59 ouster Exp $ SPRITE (Berkeley)"; #endif #include "default.h" #include "tkconfig.h" #include "tk.h" #include "tktext.h" /* * Information used for parsing tag configuration information: */ static Tk_ConfigSpec tagConfigSpecs[] = { {TK_CONFIG_BORDER, "-background", (char *) NULL, (char *) NULL, (char *) NULL, Tk_Offset(TkTextTag, border), TK_CONFIG_NULL_OK}, {TK_CONFIG_BITMAP, "-bgstipple", (char *) NULL, (char *) NULL, (char *) NULL, Tk_Offset(TkTextTag, bgStipple), TK_CONFIG_NULL_OK}, {TK_CONFIG_PIXELS, "-borderwidth", (char *) NULL, (char *) NULL, "0", Tk_Offset(TkTextTag, borderWidth), TK_CONFIG_DONT_SET_DEFAULT}, {TK_CONFIG_BITMAP, "-fgstipple", (char *) NULL, (char *) NULL, (char *) NULL, Tk_Offset(TkTextTag, fgStipple), TK_CONFIG_NULL_OK}, {TK_CONFIG_FONT, "-font", (char *) NULL, (char *) NULL, (char *) NULL, Tk_Offset(TkTextTag, fontPtr), TK_CONFIG_NULL_OK}, {TK_CONFIG_COLOR, "-foreground", (char *) NULL, (char *) NULL, (char *) NULL, Tk_Offset(TkTextTag, fgColor), TK_CONFIG_NULL_OK}, {TK_CONFIG_RELIEF, "-relief", (char *) NULL, (char *) NULL, "flat", Tk_Offset(TkTextTag, relief), TK_CONFIG_DONT_SET_DEFAULT}, {TK_CONFIG_BOOLEAN, "-underline", (char *) NULL, (char *) NULL, "false", Tk_Offset(TkTextTag, underline), TK_CONFIG_DONT_SET_DEFAULT}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; /* * The following definition specifies the maximum number of characters * needed in a string to hold a position specifier. */ #define POS_CHARS 30 /* * Forward declarations for procedures defined later in this file: */ static void ChangeTagPriority _ANSI_ARGS_((TkText *textPtr, TkTextTag *tagPtr, int prio)); static TkTextTag * FindTag _ANSI_ARGS_((Tcl_Interp *interp, TkText *textPtr, char *tagName)); static void SortTags _ANSI_ARGS_((int numTags, TkTextTag **tagArrayPtr)); static int TagSortProc _ANSI_ARGS_((CONST VOID *first, CONST VOID *second)); static void TextDoEvent _ANSI_ARGS_((TkText *textPtr, XEvent *eventPtr)); /* *-------------------------------------------------------------- * * TkTextTagCmd -- * * This procedure is invoked to process the "tag" options of * the widget command for text widgets. See the user documentation * for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ int TkTextTagCmd(textPtr, interp, argc, argv) register TkText *textPtr; /* Information about text widget. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. Someone else has already * parsed this command enough to know that * argv[1] is "tag". */ { int length, line1, ch1, line2, ch2, i, addTag; char c; char *fullOption; register TkTextTag *tagPtr; if (argc < 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " tag option ?arg arg ...?\"", (char *) NULL); return TCL_ERROR; } c = argv[2][0]; length = strlen(argv[2]); if ((c == 'a') && (strncmp(argv[2], "add", length) == 0)) { fullOption = "add"; addTag = 1; addAndRemove: if ((argc != 5) && (argc != 6)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " tag ", fullOption, " tagName index1 ?index2?\"", (char *) NULL); return TCL_ERROR; } tagPtr = TkTextCreateTag(textPtr, argv[3]); if (TkTextGetIndex(interp, textPtr, argv[4], &line1, &ch1) != TCL_OK) { return TCL_ERROR; } if (argc == 6) { if (TkTextGetIndex(interp, textPtr, argv[5], &line2, &ch2) != TCL_OK) { return TCL_ERROR; } } else { line2 = line1; ch2 = ch1+1; } if (TK_TAG_AFFECTS_DISPLAY(tagPtr)) { TkTextRedrawTag(textPtr, line1, ch1, line2, ch2, tagPtr, !addTag); } TkBTreeTag(textPtr->tree, line1, ch1, line2, ch2, tagPtr, addTag); /* * If the tag is "sel" then grab the selection if we're supposed * to export it and don't already have it. Also, invalidate * partially-completed selection retrievals. */ if (tagPtr == textPtr->selTagPtr) { if (addTag && textPtr->exportSelection && !(textPtr->flags & GOT_SELECTION)) { Tk_OwnSelection(textPtr->tkwin, TkTextLostSelection, (ClientData) textPtr); textPtr->flags |= GOT_SELECTION; } textPtr->selOffset = -1; } } else if ((c == 'b') && (strncmp(argv[2], "bind", length) == 0)) { if ((argc < 4) || (argc > 6)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " tag bind tagName ?sequence? ?command?\"", (char *) NULL); return TCL_ERROR; } tagPtr = TkTextCreateTag(textPtr, argv[3]); /* * Make a binding table if the widget doesn't already have * one. */ if (textPtr->bindingTable == NULL) { textPtr->bindingTable = Tk_CreateBindingTable(interp); } if (argc == 6) { int append = 0; unsigned long mask; if (argv[5][0] == 0) { return Tk_DeleteBinding(interp, textPtr->bindingTable, (ClientData) tagPtr, argv[4]); } if (argv[5][0] == '+') { argv[5]++; append = 1; } mask = Tk_CreateBinding(interp, textPtr->bindingTable, (ClientData) tagPtr, argv[4], argv[5], append); if (mask == 0) { return TCL_ERROR; } if (mask & ~(ButtonMotionMask|Button1MotionMask|Button2MotionMask |Button3MotionMask|Button4MotionMask|Button5MotionMask |ButtonPressMask|ButtonReleaseMask|EnterWindowMask |LeaveWindowMask|KeyPressMask|KeyReleaseMask |PointerMotionMask)) { Tk_DeleteBinding(interp, textPtr->bindingTable, (ClientData) tagPtr, argv[4]); Tcl_ResetResult(interp); Tcl_AppendResult(interp, "requested illegal events; ", "only key, button, motion, and enter/leave ", "events may be used", (char *) NULL); return TCL_ERROR; } } else if (argc == 5) { char *command; command = Tk_GetBinding(interp, textPtr->bindingTable, (ClientData) tagPtr, argv[4]); if (command == NULL) { return TCL_ERROR; } interp->result = command; } else { Tk_GetAllBindings(interp, textPtr->bindingTable, (ClientData) tagPtr); } } else if ((c == 'c') && (strncmp(argv[2], "configure", length) == 0)) { if (argc < 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " tag configure tagName ?option? ?value? ", "?option value ...?\"", (char *) NULL); return TCL_ERROR; } tagPtr = TkTextCreateTag(textPtr, argv[3]); if (argc == 4) { return Tk_ConfigureInfo(interp, textPtr->tkwin, tagConfigSpecs, (char *) tagPtr, (char *) NULL, 0); } else if (argc == 5) { return Tk_ConfigureInfo(interp, textPtr->tkwin, tagConfigSpecs, (char *) tagPtr, argv[4], 0); } else { int result; result = Tk_ConfigureWidget(interp, textPtr->tkwin, tagConfigSpecs, argc-4, argv+4, (char *) tagPtr, 0); /* * If the "sel" tag was changed, be sure to mirror information * from the tag back into the text widget record. NOTE: we * don't have to free up information in the widget record * before overwriting it, because it was mirrored in the tag * and hence freed when the tag field was overwritten. */ if (tagPtr == textPtr->selTagPtr) { textPtr->selBorder = tagPtr->border; textPtr->selBorderWidth = tagPtr->borderWidth; textPtr->selFgColorPtr = tagPtr->fgColor; } TkTextRedrawTag(textPtr, 0, 0, TkBTreeNumLines(textPtr->tree), 0, tagPtr, 1); return result; } } else if ((c == 'd') && (strncmp(argv[2], "delete", length) == 0)) { Tcl_HashEntry *hPtr; if (argc < 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " tag delete tagName tagName ...\"", (char *) NULL); return TCL_ERROR; } for (i = 3; i < argc; i++) { hPtr = Tcl_FindHashEntry(&textPtr->tagTable, argv[i]); if (hPtr == NULL) { continue; } tagPtr = (TkTextTag *) Tcl_GetHashValue(hPtr); if (tagPtr == textPtr->selTagPtr) { interp->result = "can't delete selection tag"; return TCL_ERROR; } if (TK_TAG_AFFECTS_DISPLAY(tagPtr)) { TkTextRedrawTag(textPtr, 0, 0, TkBTreeNumLines(textPtr->tree), 0, tagPtr, 1); } TkBTreeTag(textPtr->tree, 0, 0, TkBTreeNumLines(textPtr->tree), 0, tagPtr, 0); Tcl_DeleteHashEntry(hPtr); if (textPtr->bindingTable != NULL) { Tk_DeleteAllBindings(textPtr->bindingTable, (ClientData) tagPtr); } /* * Update the tag priorities to reflect the deletion of this tag. */ ChangeTagPriority(textPtr, tagPtr, textPtr->numTags-1); textPtr->numTags -= 1; TkTextFreeTag(tagPtr); } } else if ((c == 'l') && (strncmp(argv[2], "lower", length) == 0)) { TkTextTag *tagPtr2; int prio; if ((argc != 4) && (argc != 5)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " tag lower tagName ?belowThis?\"", (char *) NULL); return TCL_ERROR; } tagPtr = FindTag(interp, textPtr, argv[3]); if (tagPtr == NULL) { return TCL_ERROR; } if (argc == 5) { tagPtr2 = FindTag(interp, textPtr, argv[4]); if (tagPtr2 == NULL) { return TCL_ERROR; } if (tagPtr->priority < tagPtr2->priority) { prio = tagPtr2->priority - 1; } else { prio = tagPtr2->priority; } } else { prio = 0; } ChangeTagPriority(textPtr, tagPtr, prio); TkTextRedrawTag(textPtr, 0, 0, TkBTreeNumLines(textPtr->tree), 0, tagPtr, 1); } else if ((c == 'n') && (strncmp(argv[2], "names", length) == 0) && (length >= 2)) { TkTextTag **arrayPtr; int arraySize; TkTextLine *linePtr; if ((argc != 3) && (argc != 4)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " tag names ?index?\"", (char *) NULL); return TCL_ERROR; } if (argc == 3) { Tcl_HashSearch search; Tcl_HashEntry *hPtr; arrayPtr = (TkTextTag **) ckalloc((unsigned) (textPtr->numTags * sizeof(TkTextTag *))); for (i = 0, hPtr = Tcl_FirstHashEntry(&textPtr->tagTable, &search); hPtr != NULL; i++, hPtr = Tcl_NextHashEntry(&search)) { arrayPtr[i] = (TkTextTag *) Tcl_GetHashValue(hPtr); } arraySize = textPtr->numTags; } else { if (TkTextGetIndex(interp, textPtr, argv[3], &line1, &ch1) != TCL_OK) { return TCL_ERROR; } linePtr = TkBTreeFindLine(textPtr->tree, line1); if (linePtr == NULL) { return TCL_OK; } arrayPtr = TkBTreeGetTags(textPtr->tree, linePtr, ch1, &arraySize); if (arrayPtr == NULL) { return TCL_OK; } } SortTags(arraySize, arrayPtr); for (i = 0; i < arraySize; i++) { tagPtr = arrayPtr[i]; Tcl_AppendElement(interp, tagPtr->name, 0); } ckfree((char *) arrayPtr); } else if ((c == 'n') && (strncmp(argv[2], "nextrange", length) == 0) && (length >= 2)) { TkTextSearch tSearch; char position[POS_CHARS]; if ((argc != 5) && (argc != 6)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " tag nextrange tagName index1 ?index2?\"", (char *) NULL); return TCL_ERROR; } tagPtr = FindTag((Tcl_Interp *) NULL, textPtr, argv[3]); if (tagPtr == NULL) { return TCL_OK; } if (TkTextGetIndex(interp, textPtr, argv[4], &line1, &ch1) != TCL_OK) { return TCL_ERROR; } if (argc == 5) { line2 = TkBTreeNumLines(textPtr->tree); ch2 = 0; } else if (TkTextGetIndex(interp, textPtr, argv[5], &line2, &ch2) != TCL_OK) { return TCL_ERROR; } /* * The search below is a bit tricky. Rather than use the B-tree * facilities to stop the search at line2.ch2, let it search up * until the end of the file but check for a position past line2.ch2 * ourselves. The reason for doing it this way is that we only * care whether the *start* of the range is before line2.ch2; once * we find the start, we don't want TkBTreeNextTag to abort the * search because the end of the range is after line2.ch2. */ TkBTreeStartSearch(textPtr->tree, line1, ch1, TkBTreeNumLines(textPtr->tree), 0, tagPtr, &tSearch); if (!TkBTreeNextTag(&tSearch)) { return TCL_OK; } if (!TkBTreeCharTagged(tSearch.linePtr, tSearch.ch1, tagPtr)) { if (!TkBTreeNextTag(&tSearch)) { return TCL_OK; } } if ((tSearch.line1 > line2) || ((tSearch.line1 == line2) && (tSearch.ch1 >= ch2))) { return TCL_OK; } TkTextPrintIndex(tSearch.line1, tSearch.ch1, position); Tcl_AppendElement(interp, position, 0); TkBTreeNextTag(&tSearch); TkTextPrintIndex(tSearch.line1, tSearch.ch1, position); Tcl_AppendElement(interp, position, 0); } else if ((c == 'r') && (strncmp(argv[2], "raise", length) == 0) && (length >= 3)) { TkTextTag *tagPtr2; int prio; if ((argc != 4) && (argc != 5)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " tag raise tagName ?aboveThis?\"", (char *) NULL); return TCL_ERROR; } tagPtr = FindTag(interp, textPtr, argv[3]); if (tagPtr == NULL) { return TCL_ERROR; } if (argc == 5) { tagPtr2 = FindTag(interp, textPtr, argv[4]); if (tagPtr2 == NULL) { return TCL_ERROR; } if (tagPtr->priority <= tagPtr2->priority) { prio = tagPtr2->priority; } else { prio = tagPtr2->priority + 1; } } else { prio = textPtr->numTags-1; } ChangeTagPriority(textPtr, tagPtr, prio); TkTextRedrawTag(textPtr, 0, 0, TkBTreeNumLines(textPtr->tree), 0, tagPtr, 1); } else if ((c == 'r') && (strncmp(argv[2], "ranges", length) == 0) && (length >= 3)) { TkTextSearch tSearch; char position[POS_CHARS]; if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " tag ranges tagName\"", (char *) NULL); return TCL_ERROR; } tagPtr = FindTag((Tcl_Interp *) NULL, textPtr, argv[3]); if (tagPtr == NULL) { return TCL_OK; } TkBTreeStartSearch(textPtr->tree, 0, 0, TkBTreeNumLines(textPtr->tree), 0, tagPtr, &tSearch); while (TkBTreeNextTag(&tSearch)) { TkTextPrintIndex(tSearch.line1, tSearch.ch1, position); Tcl_AppendElement(interp, position, 0); } } else if ((c == 'r') && (strncmp(argv[2], "remove", length) == 0) && (length >= 2)) { fullOption = "remove"; addTag = 0; goto addAndRemove; } else { Tcl_AppendResult(interp, "bad tag option \"", argv[2], "\": must be add, bind, configure, delete, lower, ", "names, nextrange, raise, ranges, or remove", (char *) NULL); return TCL_ERROR; } return TCL_OK; } /* *---------------------------------------------------------------------- * * TkTextCreateTag -- * * Find the record describing a tag within a given text widget, * creating a new record if one doesn't already exist. * * Results: * The return value is a pointer to the TkTextTag record for tagName. * * Side effects: * A new tag record is created if there isn't one already defined * for tagName. * *---------------------------------------------------------------------- */ TkTextTag * TkTextCreateTag(textPtr, tagName) TkText *textPtr; /* Widget in which tag is being used. */ char *tagName; /* Name of desired tag. */ { register TkTextTag *tagPtr; Tcl_HashEntry *hPtr; int new; hPtr = Tcl_CreateHashEntry(&textPtr->tagTable, tagName, &new); if (!new) { return (TkTextTag *) Tcl_GetHashValue(hPtr); } /* * No existing entry. Create a new one, initialize it, and add a * pointer to it to the hash table entry. */ tagPtr = (TkTextTag *) ckalloc(sizeof(TkTextTag)); tagPtr->name = Tcl_GetHashKey(&textPtr->tagTable, hPtr); tagPtr->priority = textPtr->numTags; tagPtr->border = NULL; tagPtr->borderWidth = 1; tagPtr->relief = TK_RELIEF_FLAT; tagPtr->bgStipple = None; tagPtr->fgColor = NULL; tagPtr->fontPtr = NULL; tagPtr->fgStipple = None; tagPtr->underline = 0; textPtr->numTags++; Tcl_SetHashValue(hPtr, tagPtr); return tagPtr; } /* *---------------------------------------------------------------------- * * FindTag -- * * See if tag is defined for a given widget. * * Results: * If tagName is defined in textPtr, a pointer to its TkTextTag * structure is returned. Otherwise NULL is returned and an * error message is recorded in interp->result unless interp * is NULL. * * Side effects: * None. * *---------------------------------------------------------------------- */ static TkTextTag * FindTag(interp, textPtr, tagName) Tcl_Interp *interp; /* Interpreter to use for error message; * if NULL, then don't record an error * message. */ TkText *textPtr; /* Widget in which tag is being used. */ char *tagName; /* Name of desired tag. */ { Tcl_HashEntry *hPtr; hPtr = Tcl_FindHashEntry(&textPtr->tagTable, tagName); if (hPtr != NULL) { return (TkTextTag *) Tcl_GetHashValue(hPtr); } if (interp != NULL) { Tcl_AppendResult(interp, "tag \"", tagName, "\" isn't defined in text widget", (char *) NULL); } return NULL; } /* *---------------------------------------------------------------------- * * TkTextFreeTag -- * * This procedure is called when a tag is deleted to free up the * memory and other resources associated with the tag. * * Results: * None. * * Side effects: * Memory and other resources are freed. * *---------------------------------------------------------------------- */ void TkTextFreeTag(tagPtr) register TkTextTag *tagPtr; /* Tag being deleted. */ { if (tagPtr->border != None) { Tk_Free3DBorder(tagPtr->border); } if (tagPtr->bgStipple != None) { Tk_FreeBitmap(tagPtr->bgStipple); } if (tagPtr->fgColor != None) { Tk_FreeColor(tagPtr->fgColor); } if (tagPtr->fgStipple != None) { Tk_FreeBitmap(tagPtr->fgStipple); } ckfree((char *) tagPtr); } /* *---------------------------------------------------------------------- * * SortTags -- * * This procedure sorts an array of tag pointers in increasing * order of priority, optimizing for the common case where the * array is small. * * Results: * None. * * Side effects: * None. * *---------------------------------------------------------------------- */ static void SortTags(numTags, tagArrayPtr) int numTags; /* Number of tag pointers at *tagArrayPtr. */ TkTextTag **tagArrayPtr; /* Pointer to array of pointers. */ { int i, j, prio; register TkTextTag **tagPtrPtr; TkTextTag **maxPtrPtr, *tmp; if (numTags < 2) { return; } if (numTags < 20) { for (i = numTags-1; i > 0; i--, tagArrayPtr++) { maxPtrPtr = tagPtrPtr = tagArrayPtr; prio = tagPtrPtr[0]->priority; for (j = i, tagPtrPtr++; j > 0; j--, tagPtrPtr++) { if (tagPtrPtr[0]->priority < prio) { prio = tagPtrPtr[0]->priority; maxPtrPtr = tagPtrPtr; } } tmp = *maxPtrPtr; *maxPtrPtr = *tagArrayPtr; *tagArrayPtr = tmp; } } else { qsort((VOID *) tagArrayPtr, numTags, sizeof (TkTextTag *), TagSortProc); } } /* *---------------------------------------------------------------------- * * TagSortProc -- * * This procedure is called by qsort when sorting an array of * tags in priority order. * * Results: * The return value is -1 if the first argument should be before * the second element (i.e. it has lower priority), 0 if it's * equivalent (this should never happen!), and 1 if it should be * after the second element. * * Side effects: * None. * *---------------------------------------------------------------------- */ static int TagSortProc(first, second) CONST VOID *first, *second; /* Elements to be compared. */ { TkTextTag *tagPtr1, *tagPtr2; tagPtr1 = * (TkTextTag **) first; tagPtr2 = * (TkTextTag **) second; return tagPtr1->priority - tagPtr2->priority; } /* *---------------------------------------------------------------------- * * ChangeTagPriority -- * * This procedure changes the priority of a tag by modifying * its priority and all other ones whose priority is affected * by the change. * * Results: * None. * * Side effects: * Priorities may be changed for some or all of the tags in * textPtr. The tags will be arranged so that there is exactly * one tag at each priority level between 0 and textPtr->numTags-1, * with tagPtr at priority "prio". * *---------------------------------------------------------------------- */ static void ChangeTagPriority(textPtr, tagPtr, prio) TkText *textPtr; /* Information about text widget. */ TkTextTag *tagPtr; /* Tag whose priority is to be * changed. */ int prio; /* New priority for tag. */ { int low, high, delta; register TkTextTag *tagPtr2; Tcl_HashEntry *hPtr; Tcl_HashSearch search; if (prio < 0) { prio = 0; } if (prio >= textPtr->numTags) { prio = textPtr->numTags-1; } if (prio == tagPtr->priority) { return; } else if (prio < tagPtr->priority) { low = prio; high = tagPtr->priority-1; delta = 1; } else { low = tagPtr->priority+1; high = prio; delta = -1; } for (hPtr = Tcl_FirstHashEntry(&textPtr->tagTable, &search); hPtr != NULL; hPtr = Tcl_NextHashEntry(&search)) { tagPtr2 = (TkTextTag *) Tcl_GetHashValue(hPtr); if ((tagPtr2->priority >= low) && (tagPtr2->priority <= high)) { tagPtr2->priority += delta; } } tagPtr->priority = prio; } /* *-------------------------------------------------------------- * * TkTextBindProc -- * * This procedure is invoked by the Tk dispatcher to handle * events associated with bindings on items. * * Results: * None. * * Side effects: * Depends on the command invoked as part of the binding * (if there was any). * *-------------------------------------------------------------- */ void TkTextBindProc(clientData, eventPtr) ClientData clientData; /* Pointer to canvas structure. */ XEvent *eventPtr; /* Pointer to X event that just * happened. */ { TkText *textPtr = (TkText *) clientData; int repick = 0; Tk_Preserve((ClientData) textPtr); /* * This code simulates grabs for mouse buttons by refusing to * pick a new current character between the time a mouse button goes * down and the time when the last mouse button is released. */ if (eventPtr->type == ButtonPress) { textPtr->flags |= BUTTON_DOWN; } else if (eventPtr->type == ButtonRelease) { int mask; switch (eventPtr->xbutton.button) { case Button1: mask = Button1Mask; break; case Button2: mask = Button2Mask; break; case Button3: mask = Button3Mask; break; case Button4: mask = Button4Mask; break; case Button5: mask = Button5Mask; break; default: mask = 0; break; } if ((eventPtr->xbutton.state & (Button1Mask|Button2Mask |Button3Mask|Button4Mask|Button5Mask)) == mask) { textPtr->flags &= ~BUTTON_DOWN; repick = 1; } } else if ((eventPtr->type == EnterNotify) || (eventPtr->type == LeaveNotify)) { TkTextPickCurrent(textPtr, eventPtr); goto done; } else if (eventPtr->type == MotionNotify) { TkTextPickCurrent(textPtr, eventPtr); } TextDoEvent(textPtr, eventPtr); if (repick) { unsigned int oldState; oldState = eventPtr->xbutton.state; eventPtr->xbutton.state &= ~(Button1Mask|Button2Mask |Button3Mask|Button4Mask|Button5Mask); TkTextPickCurrent(textPtr, eventPtr); eventPtr->xbutton.state = oldState; } done: Tk_Release((ClientData) textPtr); } /* *-------------------------------------------------------------- * * TkTextPickCurrent -- * * Find the topmost item in a canvas that contains a given * location and mark the the current item. If the current * item has changed, generate a fake exit event on the old * current item and a fake enter event on the new current * item. * * Results: * None. * * Side effects: * The current item for textPtr may change. If it does, * then the commands associated with item entry and exit * could do just about anything. * *-------------------------------------------------------------- */ void TkTextPickCurrent(textPtr, eventPtr) register TkText *textPtr; /* Text widget in which to select * current character. */ XEvent *eventPtr; /* Event describing location of * mouse cursor. Must be EnterWindow, * LeaveWindow, ButtonRelease, or * MotionNotify. */ { TkTextLine *linePtr; int ch; /* * If a button is down, then don't do anything at all; we'll be * called again when all buttons are up, and we can repick then. * This implements a form of mouse grabbing. */ if (textPtr->flags & BUTTON_DOWN) { return; } /* * Save information about this event in the widget for use if we have * to synthesize more enter and leave events later (e.g. because a * character was deleting, causing a new character to be underneath * the mouse cursor). Also translate MotionNotify events into * EnterNotify events, since that's what gets reported to event * handlers when the current character changes. */ if (eventPtr != &textPtr->pickEvent) { if ((eventPtr->type == MotionNotify) || (eventPtr->type == ButtonRelease)) { textPtr->pickEvent.xcrossing.type = EnterNotify; textPtr->pickEvent.xcrossing.serial = eventPtr->xmotion.serial; textPtr->pickEvent.xcrossing.send_event = eventPtr->xmotion.send_event; textPtr->pickEvent.xcrossing.display = eventPtr->xmotion.display; textPtr->pickEvent.xcrossing.window = eventPtr->xmotion.window; textPtr->pickEvent.xcrossing.root = eventPtr->xmotion.root; textPtr->pickEvent.xcrossing.subwindow = None; textPtr->pickEvent.xcrossing.time = eventPtr->xmotion.time; textPtr->pickEvent.xcrossing.x = eventPtr->xmotion.x; textPtr->pickEvent.xcrossing.y = eventPtr->xmotion.y; textPtr->pickEvent.xcrossing.x_root = eventPtr->xmotion.x_root; textPtr->pickEvent.xcrossing.y_root = eventPtr->xmotion.y_root; textPtr->pickEvent.xcrossing.mode = NotifyNormal; textPtr->pickEvent.xcrossing.detail = NotifyNonlinear; textPtr->pickEvent.xcrossing.same_screen = eventPtr->xmotion.same_screen; textPtr->pickEvent.xcrossing.focus = False; textPtr->pickEvent.xcrossing.state = eventPtr->xmotion.state; } else { textPtr->pickEvent = *eventPtr; } } linePtr = NULL; if (textPtr->pickEvent.type != LeaveNotify) { linePtr = TkTextCharAtLoc(textPtr, textPtr->pickEvent.xcrossing.x, textPtr->pickEvent.xcrossing.y, &ch); } /* * Simulate a LeaveNotify event on the previous current character and * an EnterNotify event on the new current character. Also, move the * "current" mark to its new place. */ if (textPtr->flags & IN_CURRENT) { if ((linePtr == textPtr->currentAnnotPtr->linePtr) && (ch == textPtr->currentAnnotPtr->ch)) { return; } } else { if (linePtr == NULL) { return; } } if (textPtr->flags & IN_CURRENT) { XEvent event; event = textPtr->pickEvent; event.type = LeaveNotify; TextDoEvent(textPtr, &event); textPtr->flags &= ~IN_CURRENT; } if (linePtr != NULL) { XEvent event; TkBTreeRemoveAnnotation(textPtr->currentAnnotPtr); textPtr->currentAnnotPtr->linePtr = linePtr; textPtr->currentAnnotPtr->ch = ch; TkBTreeAddAnnotation(textPtr->currentAnnotPtr); event = textPtr->pickEvent; event.type = EnterNotify; TextDoEvent(textPtr, &event); textPtr->flags |= IN_CURRENT; } } /* *---------------------------------------------------------------------- * * TkTextUnpickCurrent -- * * This procedure is called when the "current" character is * deleted: it synthesizes a "leave" event for the character. * * Results: * None. * * Side effects: * A binding associated with one of the tags on the current * character may be triggered. * *---------------------------------------------------------------------- */ void TkTextUnpickCurrent(textPtr) TkText *textPtr; /* Text widget information. */ { if (textPtr->flags & IN_CURRENT) { XEvent event; event = textPtr->pickEvent; event.type = LeaveNotify; TextDoEvent(textPtr, &event); textPtr->flags &= ~IN_CURRENT; } } /* *-------------------------------------------------------------- * * TextDoEvent -- * * This procedure is called to invoke binding processing * for a new event that is associated with the current character * for a text widget. * * Results: * None. * * Side effects: * Depends on the bindings for the text. * *-------------------------------------------------------------- */ static void TextDoEvent(textPtr, eventPtr) TkText *textPtr; /* Text widget in which event * occurred. */ XEvent *eventPtr; /* Real or simulated X event that * is to be processed. */ { TkTextTag **tagArrayPtr, **p1, **p2, *tmp; int numTags; if (textPtr->bindingTable == NULL) { return; } /* * Set up an array containing all of the tags that are associated * with the current character. This array will be used to look * for bindings. If there are no tags then there can't be any * bindings. */ tagArrayPtr = TkBTreeGetTags(textPtr->tree, textPtr->currentAnnotPtr->linePtr, textPtr->currentAnnotPtr->ch, &numTags); if (numTags == 0) { return; } /* * Sort the array of tags. SortTags sorts it backwards, so after it * returns we have to reverse the order in the array. */ SortTags(numTags, tagArrayPtr); for (p1 = tagArrayPtr, p2 = tagArrayPtr + numTags - 1; p1 < p2; p1++, p2--) { tmp = *p1; *p1 = *p2; *p2 = tmp; } /* * Invoke the binding system, then free up the tag array. */ Tk_BindEvent(textPtr->bindingTable, eventPtr, textPtr->tkwin, numTags, (ClientData *) tagArrayPtr); ckfree((char *) tagArrayPtr); } micropolis-activity/src/tk/bitmaps/0000775000076400007640000000000010724145723017677 5ustar simcitysimcitymicropolis-activity/src/tk/bitmaps/gray250000664000076400007640000000044210724145723020733 0ustar simcitysimcity#define gray25_width 16 #define gray25_height 16 static unsigned char gray25_bits[] = { 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, 0x88, 0x88}; micropolis-activity/src/tk/bitmaps/gray500000664000076400007640000000044210724145723020731 0ustar simcitysimcity#define gray50_width 16 #define gray50_height 16 static unsigned char gray50_bits[] = { 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa}; micropolis-activity/src/tk/tkcanvas.c0000664000076400007640000033021010724145723020215 0ustar simcitysimcity/* * tkCanvas.c -- * * This module implements canvas widgets for the Tk toolkit. * A canvas displays a background and a collection of graphical * objects such as rectangles, lines, and texts. * * Copyright 1991-1992 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkCanvas.c,v 1.28 92/08/19 08:47:57 ouster Exp $ SPRITE (Berkeley)"; #endif #include #include #include #include #include "default.h" #include "tkint.h" #include "tkconfig.h" #include "tkcanvas.h" /* * See tkCanvas.h for key data structures used to implement canvases. */ /* * The structure defined below is used to keep track of a tag search * in progress. Only the "prevPtr" field should be accessed by anyone * other than StartTagSearch and NextItem. */ typedef struct TagSearch { Tk_Canvas *canvasPtr; /* Canvas widget being searched. */ Tk_Uid tag; /* Tag to search for. 0 means return * all items. */ Tk_Item *prevPtr; /* Item just before last one found (or NULL * if last one found was first in the item * list of canvasPtr). */ Tk_Item *currentPtr; /* Pointer to last item returned. */ int searchOver; /* Non-zero means NextItem should always * return NULL. */ } TagSearch; /* * Information used for argv parsing. */ static Tk_ConfigSpec configSpecs[] = { {TK_CONFIG_BORDER, "-background", "background", "Background", DEF_CANVAS_BG_COLOR, Tk_Offset(Tk_Canvas, bgBorder), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_COLOR, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, Tk_Offset(Tk_Canvas, bgColor), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-background", "background", "Background", DEF_CANVAS_BG_MONO, Tk_Offset(Tk_Canvas, bgBorder), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_COLOR, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, Tk_Offset(Tk_Canvas, bgColor), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_SYNONYM, "-bd", "borderWidth", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_SYNONYM, "-bg", "background", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", DEF_CANVAS_BORDER_WIDTH, Tk_Offset(Tk_Canvas, borderWidth), 0}, {TK_CONFIG_DOUBLE, "-closeenough", "closeEnough", "CloseEnough", DEF_CANVAS_CLOSE_ENOUGH, Tk_Offset(Tk_Canvas, closeEnough), 0}, {TK_CONFIG_BOOLEAN, "-confine", "confine", "Confine", DEF_CANVAS_CONFINE, Tk_Offset(Tk_Canvas, confine), 0}, {TK_CONFIG_ACTIVE_CURSOR, "-cursor", "cursor", "Cursor", DEF_CANVAS_CURSOR, Tk_Offset(Tk_Canvas, cursor), TK_CONFIG_NULL_OK}, {TK_CONFIG_BORDER, "-cursorbackground", "cursorBackground", "Foreground", DEF_CANVAS_CURSOR_BG, Tk_Offset(Tk_Canvas, cursorBorder), 0}, {TK_CONFIG_PIXELS, "-cursorborderwidth", "cursorBorderWidth", "BorderWidth", DEF_CANVAS_CURSOR_BD_COLOR, Tk_Offset(Tk_Canvas, cursorBorderWidth), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_PIXELS, "-cursorborderwidth", "cursorBorderWidth", "BorderWidth", DEF_CANVAS_CURSOR_BD_MONO, Tk_Offset(Tk_Canvas, cursorBorderWidth), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_INT, "-cursorofftime", "cursorOffTime", "OffTime", DEF_CANVAS_CURSOR_OFF_TIME, Tk_Offset(Tk_Canvas, cursorOffTime), 0}, {TK_CONFIG_INT, "-cursorontime", "cursorOnTime", "OnTime", DEF_CANVAS_CURSOR_ON_TIME, Tk_Offset(Tk_Canvas, cursorOnTime), 0}, {TK_CONFIG_PIXELS, "-cursorwidth", "cursorWidth", "CursorWidth", DEF_CANVAS_CURSOR_WIDTH, Tk_Offset(Tk_Canvas, cursorWidth), 0}, {TK_CONFIG_PIXELS, "-height", "height", "Height", DEF_CANVAS_HEIGHT, Tk_Offset(Tk_Canvas, height), 0}, {TK_CONFIG_RELIEF, "-relief", "relief", "Relief", DEF_CANVAS_RELIEF, Tk_Offset(Tk_Canvas, relief), 0}, {TK_CONFIG_PIXELS, "-scrollincrement", "scrollIncrement", "ScrollIncrement", DEF_CANVAS_SCROLL_INCREMENT, Tk_Offset(Tk_Canvas, scrollIncrement), 0}, {TK_CONFIG_STRING, "-scrollregion", "scrollRegion", "ScrollRegion", DEF_CANVAS_SCROLL_REGION, Tk_Offset(Tk_Canvas, regionString), 0}, {TK_CONFIG_BORDER, "-selectbackground", "selectBackground", "Foreground", DEF_CANVAS_SELECT_COLOR, Tk_Offset(Tk_Canvas, selBorder), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-selectbackground", "selectBackground", "Foreground", DEF_CANVAS_SELECT_MONO, Tk_Offset(Tk_Canvas, selBorder), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_PIXELS, "-selectborderwidth", "selectBorderWidth", "BorderWidth", DEF_CANVAS_SELECT_BD_COLOR, Tk_Offset(Tk_Canvas, selBorderWidth), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_PIXELS, "-selectborderwidth", "selectBorderWidth", "BorderWidth", DEF_CANVAS_SELECT_BD_MONO, Tk_Offset(Tk_Canvas, selBorderWidth), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_COLOR, "-selectforeground", "selectForeground", "Background", DEF_CANVAS_SELECT_FG_COLOR, Tk_Offset(Tk_Canvas, selFgColorPtr), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_COLOR, "-selectforeground", "selectForeground", "Background", DEF_CANVAS_SELECT_FG_MONO, Tk_Offset(Tk_Canvas, selFgColorPtr), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_PIXELS, "-width", "width", "Width", DEF_CANVAS_WIDTH, Tk_Offset(Tk_Canvas, width), 0}, {TK_CONFIG_STRING, "-xscrollcommand", "xScrollCommand", "ScrollCommand", DEF_CANVAS_X_SCROLL_CMD, Tk_Offset(Tk_Canvas, xScrollCmd), 0}, {TK_CONFIG_STRING, "-yscrollcommand", "yScrollCommand", "ScrollCommand", DEF_CANVAS_Y_SCROLL_CMD, Tk_Offset(Tk_Canvas, yScrollCmd), 0}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; /* * List of all the item types known at present: */ static Tk_ItemType *typeList = NULL; /* NULL means initialization hasn't * been done yet. */ /* * Standard item types provided by Tk: */ extern Tk_ItemType TkArcType, TkBitmapType, TkLineType; extern Tk_ItemType TkOvalType, TkPolygonType; extern Tk_ItemType TkRectangleType, TkTextType, TkWindowType; /* * Various Tk_Uid's used by this module (set up during initialization): */ static Tk_Uid allUid = NULL; static Tk_Uid currentUid = NULL; /* * Statistics counters: */ static int numIdSearches; static int numSlowSearches; static int CanvasUpdateTime = 200; // Added by Don. /* * Prototypes for procedures defined later in this file: */ static void CanvasBindProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); static void CanvasBlinkProc _ANSI_ARGS_((ClientData clientData)); static void CanvasDoEvent _ANSI_ARGS_((Tk_Canvas *canvasPtr, XEvent *eventPtr)); static void CanvasEventProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); static int CanvasFetchSelection _ANSI_ARGS_(( ClientData clientData, int offset, char *buffer, int maxBytes)); static void CanvasFocusProc _ANSI_ARGS_((ClientData clientData, int gotFocus)); static void CanvasLostSelection _ANSI_ARGS_(( ClientData clientData)); static void CanvasSelectTo _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, int index)); static void CanvasSetOrigin _ANSI_ARGS_((Tk_Canvas *canvasPtr, int xOrigin, int yOrigin)); static int CanvasTagsParseProc _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, Tk_Window tkwin, char *value, char *widgRec, int offset)); static char * CanvasTagsPrintProc _ANSI_ARGS_((ClientData clientData, Tk_Window tkwin, char *widgRec, int offset, Tcl_FreeProc **freeProcPtr)); static void CanvasUpdateScrollbars _ANSI_ARGS_(( Tk_Canvas *canvasPtr)); static int CanvasWidgetCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); static int ConfigureCanvas _ANSI_ARGS_((Tcl_Interp *interp, Tk_Canvas *canvasPtr, int argc, char **argv, int flags)); static void DestroyCanvas _ANSI_ARGS_((ClientData clientData)); static void DisplayCanvas _ANSI_ARGS_((ClientData clientData)); static void DoItem _ANSI_ARGS_((Tcl_Interp *interp, Tk_Item *itemPtr, Tk_Uid tag)); static void EventuallyRedrawArea _ANSI_ARGS_((Tk_Canvas *canvasPtr, int x1, int y1, int x2, int y2)); static int FindItems _ANSI_ARGS_((Tcl_Interp *interp, Tk_Canvas *canvasPtr, int argc, char **argv, char *newTag, char *cmdName, char *option)); static int FindArea _ANSI_ARGS_((Tcl_Interp *interp, Tk_Canvas *canvasPtr, char **argv, Tk_Uid uid, int enclosed)); static double GridAlign _ANSI_ARGS_((double coord, double spacing)); static void InitCanvas _ANSI_ARGS_((void)); static Tk_Item * NextItem _ANSI_ARGS_((TagSearch *searchPtr)); static void PickCurrentItem _ANSI_ARGS_((Tk_Canvas *canvasPtr, XEvent *eventPtr)); static void RelinkItems _ANSI_ARGS_((Tk_Canvas *canvasPtr, char *tag, Tk_Item *prevPtr)); #if defined(USE_XPM3) static int SaveCanvas _ANSI_ARGS_((Tcl_Interp *interp, Tk_Canvas *canvasPtr, char *fileName, int x, int y, unsigned int width, unsigned int height)); #endif static Tk_Item * StartTagSearch _ANSI_ARGS_((Tk_Canvas *canvasPtr, char *tag, TagSearch *searchPtr)); /* * Custom option for handling "-tags" options for canvas items: */ Tk_CustomOption tkCanvasTagsOption = { CanvasTagsParseProc, CanvasTagsPrintProc, (ClientData) NULL }; /* *-------------------------------------------------------------- * * Tk_CanvasCmd -- * * This procedure is invoked to process the "canvas" Tcl * command. See the user documentation for details on what * it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ int Tk_CanvasCmd(clientData, interp, argc, argv) ClientData clientData; /* Main window associated with * interpreter. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { Tk_Window tkwin = (Tk_Window) clientData; register Tk_Canvas *canvasPtr; Tk_Window new; if (typeList == NULL) { InitCanvas(); } if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " pathName ?options?\"", (char *) NULL); return TCL_ERROR; } new = Tk_CreateWindowFromPath(interp, tkwin, argv[1], (char *) NULL); if (new == NULL) { return TCL_ERROR; } /* * Initialize fields that won't be initialized by ConfigureCanvas, * or which ConfigureCanvas expects to have reasonable values * (e.g. resource pointers). */ canvasPtr = (Tk_Canvas *) ckalloc(sizeof(Tk_Canvas)); canvasPtr->tkwin = new; canvasPtr->interp = interp; canvasPtr->firstItemPtr = NULL; canvasPtr->lastItemPtr = NULL; canvasPtr->bgBorder = NULL; canvasPtr->bgColor = NULL; canvasPtr->pixmapGC = None; canvasPtr->selBorder = NULL; canvasPtr->selFgColorPtr = NULL; canvasPtr->selItemPtr = NULL; canvasPtr->selectFirst = -1; canvasPtr->selectLast = -1; canvasPtr->cursorBorder = NULL; canvasPtr->cursorBlinkHandler = (Tk_TimerToken) NULL; canvasPtr->focusItemPtr = NULL; canvasPtr->xOrigin = canvasPtr->yOrigin = 0; canvasPtr->drawableXOrigin = canvasPtr->drawableYOrigin = 0; canvasPtr->bindingTable = NULL; canvasPtr->currentItemPtr = NULL; canvasPtr->pickEvent.type = LeaveNotify; canvasPtr->xScrollCmd = NULL; canvasPtr->yScrollCmd = NULL; canvasPtr->regionString = NULL; canvasPtr->hotPtr = NULL; canvasPtr->cursor = None; canvasPtr->pixelsPerMM = WidthOfScreen(Tk_Screen(new)); canvasPtr->pixelsPerMM /= WidthMMOfScreen(Tk_Screen(new)); canvasPtr->flags = 0; canvasPtr->nextId = 1; canvasPtr->updateTimerToken = NULL; Tk_SetClass(canvasPtr->tkwin, "Canvas"); Tk_CreateEventHandler(canvasPtr->tkwin, ExposureMask|StructureNotifyMask, CanvasEventProc, (ClientData) canvasPtr); Tk_CreateEventHandler(canvasPtr->tkwin, KeyPressMask|KeyReleaseMask |ButtonPressMask|ButtonReleaseMask|EnterWindowMask |LeaveWindowMask|PointerMotionMask, CanvasBindProc, (ClientData) canvasPtr); Tk_CreateSelHandler(canvasPtr->tkwin, XA_STRING, CanvasFetchSelection, (ClientData) canvasPtr, XA_STRING); Tcl_CreateCommand(interp, Tk_PathName(canvasPtr->tkwin), CanvasWidgetCmd, (ClientData) canvasPtr, (void (*)()) NULL); if (ConfigureCanvas(interp, canvasPtr, argc-2, argv+2, 0) != TCL_OK) { goto error; } Tk_CreateFocusHandler(canvasPtr->tkwin, CanvasFocusProc, (ClientData) canvasPtr); interp->result = Tk_PathName(canvasPtr->tkwin); return TCL_OK; error: Tk_DestroyWindow(canvasPtr->tkwin); return TCL_ERROR; } /* *-------------------------------------------------------------- * * CanvasWidgetCmd -- * * This procedure is invoked to process the Tcl command * that corresponds to a widget managed by this module. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ static int CanvasWidgetCmd(clientData, interp, argc, argv) ClientData clientData; /* Information about canvas * widget. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { register Tk_Canvas *canvasPtr = (Tk_Canvas *) clientData; int length, result; char c; Tk_Item *itemPtr = NULL; /* Initialization needed only to * prevent compiler warning. */ TagSearch search; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " option ?arg arg ...?\"", (char *) NULL); return TCL_ERROR; } Tk_Preserve((ClientData) canvasPtr); result = TCL_OK; c = argv[1][0]; length = strlen(argv[1]); if ((c == 'a') && (strncmp(argv[1], "addtag", length) == 0)) { if (argc < 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " addtags tag searchCommand ?arg arg ...?\"", (char *) NULL); goto error; } result = FindItems(interp, canvasPtr, argc-3, argv+3, argv[2], argv[0], " addtag tag"); } else if ((c == 'b') && (strncmp(argv[1], "bbox", length) == 0) && (length >= 2)) { int i, gotAny; int x1 = 0, y1 = 0, x2 = 0, y2 = 0; /* Initializations needed * only to prevent compiler * warnings. */ if (argc < 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " bbox tagOrId ?tagOrId ...?\"", (char *) NULL); goto error; } gotAny = 0; for (i = 2; i < argc; i++) { for (itemPtr = StartTagSearch(canvasPtr, argv[i], &search); itemPtr != NULL; itemPtr = NextItem(&search)) { if (!gotAny) { x1 = itemPtr->x1; y1 = itemPtr->y1; x2 = itemPtr->x2; y2 = itemPtr->y2; gotAny = 1; } else { if (itemPtr->x1 < x1) { x1 = itemPtr->x1; } if (itemPtr->y1 < y1) { y1 = itemPtr->y1; } if (itemPtr->x2 > x2) { x2 = itemPtr->x2; } if (itemPtr->y2 > y2) { y2 = itemPtr->y2; } } } } if (gotAny) { sprintf(interp->result, "%d %d %d %d", x1, y1, x2, y2); } } else if ((c == 'b') && (strncmp(argv[1], "bind", length) == 0) && (length >= 2)) { ClientData object; if ((argc < 3) || (argc > 5)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " bind tagOrId ?sequence? ?command?\"", (char *) NULL); goto error; } /* * Figure out what object to use for the binding (individual * item vs. tag). */ object = 0; if (isdigit(argv[2][0])) { int id; char *end; id = strtoul(argv[2], &end, 0); if (*end != 0) { goto bindByTag; } for (itemPtr = canvasPtr->firstItemPtr; itemPtr != NULL; itemPtr = itemPtr->nextPtr) { if (itemPtr->id == id) { object = (ClientData) itemPtr; break; } } if (object == 0) { Tcl_AppendResult(interp, "item \"", argv[2], "\" doesn't exist", (char *) NULL); goto error; } } else { bindByTag: object = (ClientData) Tk_GetUid(argv[2]); } /* * Make a binding table if the canvas doesn't already have * one. */ if (canvasPtr->bindingTable == NULL) { canvasPtr->bindingTable = Tk_CreateBindingTable(interp); } if (argc == 5) { int append = 0; unsigned long mask; if (argv[4][0] == 0) { result = Tk_DeleteBinding(interp, canvasPtr->bindingTable, object, argv[3]); goto done; } if (argv[4][0] == '+') { argv[4]++; append = 1; } mask = Tk_CreateBinding(interp, canvasPtr->bindingTable, object, argv[3], argv[4], append); if (mask == 0) { goto error; } if (mask & ~(ButtonMotionMask|Button1MotionMask|Button2MotionMask |Button3MotionMask|Button4MotionMask|Button5MotionMask |ButtonPressMask|ButtonReleaseMask|EnterWindowMask |LeaveWindowMask|KeyPressMask|KeyReleaseMask |PointerMotionMask)) { Tk_DeleteBinding(interp, canvasPtr->bindingTable, object, argv[3]); Tcl_ResetResult(interp); Tcl_AppendResult(interp, "requested illegal events; ", "only key, button, motion, and enter/leave ", "events may be used", (char *) NULL); goto error; } } else if (argc == 4) { char *command; command = Tk_GetBinding(interp, canvasPtr->bindingTable, object, argv[3]); if (command == NULL) { goto error; } interp->result = command; } else { Tk_GetAllBindings(interp, canvasPtr->bindingTable, object); } } else if ((c == 'c') && (strcmp(argv[1], "canvasx") == 0)) { int x; double grid; if ((argc < 3) || (argc > 4)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " canvasx screenx ?gridspacing?\"", (char *) NULL); goto error; } if (Tk_GetPixels(interp, canvasPtr->tkwin, argv[2], &x) != TCL_OK) { goto error; } if (argc == 4) { if (TkGetCanvasCoord(canvasPtr, argv[3], &grid) != TCL_OK) { goto error; } } else { grid = 0.0; } x += canvasPtr->xOrigin; sprintf(interp->result, "%g", GridAlign((double) x, grid)); } else if ((c == 'c') && (strcmp(argv[1], "canvasy") == 0)) { int y; double grid; if ((argc < 3) || (argc > 4)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " canvasy screeny ?gridspacing?\"", (char *) NULL); goto error; } if (Tk_GetPixels(interp, canvasPtr->tkwin, argv[2], &y) != TCL_OK) { goto error; } if (argc == 4) { if (TkGetCanvasCoord(canvasPtr, argv[3], &grid) != TCL_OK) { goto error; } } else { grid = 0.0; } y += canvasPtr->yOrigin; sprintf(interp->result, "%g", GridAlign((double) y, grid)); } else if ((c == 'c') && (strncmp(argv[1], "configure", length) == 0) && (length >= 3)) { if (argc == 2) { result = Tk_ConfigureInfo(interp, canvasPtr->tkwin, configSpecs, (char *) canvasPtr, (char *) NULL, 0); } else if (argc == 3) { result = Tk_ConfigureInfo(interp, canvasPtr->tkwin, configSpecs, (char *) canvasPtr, argv[2], 0); } else { result = ConfigureCanvas(interp, canvasPtr, argc-2, argv+2, TK_CONFIG_ARGV_ONLY); } } else if ((c == 'c') && (strncmp(argv[1], "coords", length) == 0) && (length >= 3)) { if (argc < 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " coords tagOrId ?x y x y ...?\"", (char *) NULL); goto error; } itemPtr = StartTagSearch(canvasPtr, argv[2], &search); if (itemPtr != NULL) { if (argc != 3) { EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2); } if (itemPtr->typePtr->coordProc != NULL) { result = (*itemPtr->typePtr->coordProc)(canvasPtr, itemPtr, argc-3, argv+3); } if (argc != 3) { EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2); } } } else if ((c == 'c') && (strncmp(argv[1], "create", length) == 0) && (length >= 2)) { register Tk_ItemType *typePtr; Tk_ItemType *matchPtr = NULL; register Tk_Item *itemPtr; if (argc < 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " create type ?arg arg ...?\"", (char *) NULL); goto error; } c = argv[2][0]; length = strlen(argv[2]); for (typePtr = typeList; typePtr != NULL; typePtr = typePtr->nextPtr) { if ((c == typePtr->name[0]) && (strncmp(argv[2], typePtr->name, length) == 0)) { if (matchPtr != NULL) { badType: Tcl_AppendResult(interp, "unknown or ambiguous item type \"", argv[2], "\"", (char *) NULL); goto error; } matchPtr = typePtr; } } if (matchPtr == NULL) { goto badType; } typePtr = matchPtr; itemPtr = (Tk_Item *) ckalloc((unsigned) typePtr->itemSize); itemPtr->id = canvasPtr->nextId; canvasPtr->nextId++; itemPtr->tagPtr = itemPtr->staticTagSpace; itemPtr->tagSpace = TK_TAG_SPACE; itemPtr->numTags = 0; itemPtr->typePtr = typePtr; if ((*typePtr->createProc)(canvasPtr, itemPtr, argc-3, argv+3) != TCL_OK) { ckfree((char *) itemPtr); goto error; } itemPtr->nextPtr = NULL; canvasPtr->hotPtr = itemPtr; canvasPtr->hotPrevPtr = canvasPtr->lastItemPtr; if (canvasPtr->lastItemPtr == NULL) { canvasPtr->firstItemPtr = itemPtr; } else { canvasPtr->lastItemPtr->nextPtr = itemPtr; } canvasPtr->lastItemPtr = itemPtr; EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2); canvasPtr->flags |= REPICK_NEEDED; sprintf(interp->result, "%d", itemPtr->id); } else if ((c == 'c') && (strncmp(argv[1], "cursor", length) == 0) && (length >= 2)) { int index; if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " cursor tagOrId index\"", (char *) NULL); goto error; } for (itemPtr = StartTagSearch(canvasPtr, argv[2], &search); itemPtr != NULL; itemPtr = NextItem(&search)) { if ((itemPtr->typePtr->indexProc == NULL) || (itemPtr->typePtr->cursorProc == NULL)) { goto done; } if ((*itemPtr->typePtr->indexProc)(canvasPtr, itemPtr, argv[3], &index) != TCL_OK) { goto error; } (*itemPtr->typePtr->cursorProc)(canvasPtr, itemPtr, index); if ((itemPtr == canvasPtr->focusItemPtr) && (canvasPtr->flags & CURSOR_ON)) { EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2); } } } else if ((c == 'd') && (strncmp(argv[1], "dchars", length) == 0) && (length >= 2)) { int first, last; if ((argc != 4) && (argc != 5)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " dchars tagOrId first ?last?\"", (char *) NULL); goto error; } for (itemPtr = StartTagSearch(canvasPtr, argv[2], &search); itemPtr != NULL; itemPtr = NextItem(&search)) { if ((itemPtr->typePtr->indexProc == NULL) || (itemPtr->typePtr->dCharsProc == NULL)) { continue; } if ((*itemPtr->typePtr->indexProc)(canvasPtr, itemPtr, argv[3], &first) != TCL_OK) { goto error; } if (argc == 5) { if ((*itemPtr->typePtr->indexProc)(canvasPtr, itemPtr, argv[4], &last) != TCL_OK) { goto error; } } else { last = first; } /* * Redraw both item's old and new areas: it's possible * that a delete could result in a new area larger than * the old area. */ EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2); result = (*itemPtr->typePtr->dCharsProc)(canvasPtr, itemPtr, first, last); EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2); if (result != TCL_OK) { goto error; } } } else if ((c == 'd') && (strncmp(argv[1], "delete", length) == 0) && (length >= 2)) { if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " delete tagOrId\"", (char *) NULL); goto error; } for (itemPtr = StartTagSearch(canvasPtr, argv[2], &search); itemPtr != NULL; itemPtr = NextItem(&search)) { EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2); (*itemPtr->typePtr->deleteProc)(itemPtr); if (itemPtr->tagPtr != itemPtr->staticTagSpace) { ckfree((char *) itemPtr->tagPtr); } if (search.prevPtr == NULL) { canvasPtr->firstItemPtr = itemPtr->nextPtr; if (canvasPtr->firstItemPtr == NULL) { canvasPtr->lastItemPtr = NULL; } } else { search.prevPtr->nextPtr = itemPtr->nextPtr; } if (canvasPtr->lastItemPtr == itemPtr) { canvasPtr->lastItemPtr = search.prevPtr; } ckfree((char *) itemPtr); if (itemPtr == canvasPtr->currentItemPtr) { canvasPtr->currentItemPtr = NULL; canvasPtr->flags |= REPICK_NEEDED; } if (itemPtr == canvasPtr->focusItemPtr) { canvasPtr->focusItemPtr = NULL; } if (itemPtr == canvasPtr->selItemPtr) { canvasPtr->selItemPtr = NULL; } if ((itemPtr == canvasPtr->hotPtr) || (itemPtr = canvasPtr->hotPrevPtr)) { canvasPtr->hotPtr = NULL; } } } else if ((c == 'd') && (strncmp(argv[1], "dtag", length) == 0) && (length >= 2)) { Tk_Uid tag; int i; if ((argc != 3) && (argc != 4)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " dtag tagOrId ?tagToDelete?\"", (char *) NULL); goto error; } if (argc == 4) { tag = Tk_GetUid(argv[3]); } else { tag = Tk_GetUid(argv[2]); } for (itemPtr = StartTagSearch(canvasPtr, argv[2], &search); itemPtr != NULL; itemPtr = NextItem(&search)) { for (i = itemPtr->numTags-1; i >= 0; i--) { if (itemPtr->tagPtr[i] == tag) { itemPtr->tagPtr[i] = itemPtr->tagPtr[itemPtr->numTags-1]; itemPtr->numTags--; } } } } else if ((c == 'f') && (strncmp(argv[1], "find", length) == 0) && (length >= 2)) { if (argc < 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " find searchCommand ?arg arg ...?\"", (char *) NULL); goto error; } result = FindItems(interp, canvasPtr, argc-2, argv+2, (char *) NULL, argv[0]," find"); } else if ((c == 'f') && (strncmp(argv[1], "focus", length) == 0) && (length >= 2)) { if (argc > 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " focus ?tagOrId?\"", (char *) NULL); goto error; } itemPtr = canvasPtr->focusItemPtr; if (argc == 2) { if (itemPtr != NULL) { sprintf(interp->result, "%d", itemPtr->id); } goto done; } if ((itemPtr != NULL) && (canvasPtr->flags & GOT_FOCUS)) { EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2); } if (argv[2][0] == 0) { canvasPtr->focusItemPtr = NULL; goto done; } for (itemPtr = StartTagSearch(canvasPtr, argv[2], &search); itemPtr != NULL; itemPtr = NextItem(&search)) { if (itemPtr->typePtr->cursorProc != NULL) { break; } } if (itemPtr == NULL) { goto done; } canvasPtr->focusItemPtr = itemPtr; if (canvasPtr->flags & GOT_FOCUS) { EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2); } } else if ((c == 'g') && (strncmp(argv[1], "gettags", length) == 0)) { if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " gettags tagOrId\"", (char *) NULL); goto error; } itemPtr = StartTagSearch(canvasPtr, argv[2], &search); if (itemPtr != NULL) { int i; for (i = 0; i < itemPtr->numTags; i++) { Tcl_AppendElement(interp, (char *) itemPtr->tagPtr[i], 0); } } } else if ((c == 'i') && (strncmp(argv[1], "index", length) == 0) && (length >= 3)) { int index; if (argc != 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " index tagOrId string\"", (char *) NULL); goto error; } for (itemPtr = StartTagSearch(canvasPtr, argv[2], &search); itemPtr != NULL; itemPtr = NextItem(&search)) { if (itemPtr->typePtr->indexProc != NULL) { break; } } if (itemPtr == NULL) { Tcl_AppendResult(interp, "can't find an indexable item \"", argv[2], "\"", (char *) NULL); goto error; } if ((*itemPtr->typePtr->indexProc)(canvasPtr, itemPtr, argv[3], &index) != TCL_OK) { goto error; } sprintf(interp->result, "%d", index); } else if ((c == 'i') && (strncmp(argv[1], "insert", length) == 0) && (length >= 3)) { int beforeThis; if (argc != 5) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " insert tagOrId beforeThis string\"", (char *) NULL); goto error; } for (itemPtr = StartTagSearch(canvasPtr, argv[2], &search); itemPtr != NULL; itemPtr = NextItem(&search)) { if ((itemPtr->typePtr->indexProc == NULL) || (itemPtr->typePtr->insertProc == NULL)) { continue; } if ((*itemPtr->typePtr->indexProc)(canvasPtr, itemPtr, argv[3], &beforeThis) != TCL_OK) { goto error; } /* * Redraw both item's old and new areas: it's possible * that an insertion could result in a new area either * larger or smaller than the old area. */ EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2); result = (*itemPtr->typePtr->insertProc)(canvasPtr, itemPtr, beforeThis, argv[4]); EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2); if (result != TCL_OK) { goto error; } } } else if ((c == 'i') && (strncmp(argv[1], "itemconfigure", length) == 0) && (length >= 2)) { if (argc < 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " itemconfigure tagOrId ?option value ...?\"", (char *) NULL); goto error; } for (itemPtr = StartTagSearch(canvasPtr, argv[2], &search); itemPtr != NULL; itemPtr = NextItem(&search)) { if (argc == 3) { result = Tk_ConfigureInfo(canvasPtr->interp, canvasPtr->tkwin, itemPtr->typePtr->configSpecs, (char *) itemPtr, (char *) NULL, 0); } else if (argc == 4) { result = Tk_ConfigureInfo(canvasPtr->interp, canvasPtr->tkwin, itemPtr->typePtr->configSpecs, (char *) itemPtr, argv[3], 0); } else { EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2); result = (*itemPtr->typePtr->configProc)(canvasPtr, itemPtr, argc-3, argv+3, TK_CONFIG_ARGV_ONLY); EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2); canvasPtr->flags |= REPICK_NEEDED; } if ((result != TCL_OK) || (argc < 5)) { break; } } } else if ((c == 'l') && (strncmp(argv[1], "lower", length) == 0)) { Tk_Item *prevPtr; if ((argc != 3) && (argc != 4)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " lower tagOrId ?belowThis?\"", (char *) NULL); goto error; } /* * First find the item just after which we'll insert the * named items. */ if (argc == 3) { prevPtr = NULL; } else { prevPtr = StartTagSearch(canvasPtr, argv[3], &search); if (prevPtr != NULL) { prevPtr = search.prevPtr; } else { Tcl_AppendResult(interp, "tag \"", argv[3], "\" doesn't match any items", (char *) NULL); goto error; } } RelinkItems(canvasPtr, argv[2], prevPtr); } else if ((c == 'm') && (strncmp(argv[1], "move", length) == 0)) { double xAmount, yAmount; if (argc != 5) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " move tagOrId xAmount yAmount\"", (char *) NULL); goto error; } if ((TkGetCanvasCoord(canvasPtr, argv[3], &xAmount) != TCL_OK) || (TkGetCanvasCoord(canvasPtr, argv[4], &yAmount) != TCL_OK)) { goto error; } for (itemPtr = StartTagSearch(canvasPtr, argv[2], &search); itemPtr != NULL; itemPtr = NextItem(&search)) { EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2); (void) (*itemPtr->typePtr->translateProc)(canvasPtr, itemPtr, xAmount, yAmount); EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2); canvasPtr->flags |= REPICK_NEEDED; } } else if ((c == 'r') && (strncmp(argv[1], "raise", length) == 0)) { Tk_Item *prevPtr; if ((argc != 3) && (argc != 4)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " raise tagOrId ?aboveThis?\"", (char *) NULL); goto error; } /* * First find the item just after which we'll insert the * named items. */ if (argc == 3) { prevPtr = canvasPtr->lastItemPtr; } else { prevPtr = NULL; for (itemPtr = StartTagSearch(canvasPtr, argv[3], &search); itemPtr != NULL; itemPtr = NextItem(&search)) { prevPtr = itemPtr; } if (prevPtr == NULL) { Tcl_AppendResult(interp, "tagOrId \"", argv[3], "\" doesn't match any items", (char *) NULL); goto error; } } RelinkItems(canvasPtr, argv[2], prevPtr); #if defined(USE_XPM3) } else if ((c == 's') && (strncmp(argv[1], "save", length) == 0) && (length >= 3)) { if (argc != 3 && argc != 7) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " save fileName ?x y width height?\"", (char *) NULL); goto error; } if (argc == 3) { if (SaveCanvas(interp, canvasPtr, argv[2], 0, 0, 0, 0) != TCL_OK) { goto error; } } else { if (SaveCanvas(interp, canvasPtr, argv[2], atol(argv[3]), atol(argv[4]), atol(argv[5]), atol(argv[6]))) { goto error; } } #endif } else if ((c == 's') && (strncmp(argv[1], "scale", length) == 0) && (length >= 3)) { double xOrigin, yOrigin, xScale, yScale; if (argc != 7) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " scale tagOrId xOrigin yOrigin xScale yScale\"", (char *) NULL); goto error; } if ((TkGetCanvasCoord(canvasPtr, argv[3], &xOrigin) != TCL_OK) || (TkGetCanvasCoord(canvasPtr, argv[4], &yOrigin) != TCL_OK) || (Tcl_GetDouble(interp, argv[5], &xScale) != TCL_OK) || (Tcl_GetDouble(interp, argv[6], &yScale) != TCL_OK)) { goto error; } if ((xScale <= 0.0) || (yScale <= 0.0)) { interp->result = "scale factors must be greater than zero"; goto error; } for (itemPtr = StartTagSearch(canvasPtr, argv[2], &search); itemPtr != NULL; itemPtr = NextItem(&search)) { EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2); (void) (*itemPtr->typePtr->scaleProc)(canvasPtr, itemPtr, xOrigin, yOrigin, xScale, yScale); EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2); canvasPtr->flags |= REPICK_NEEDED; } } else if ((c == 's') && (strncmp(argv[1], "scan", length) == 0) && (length >= 3)) { int x, y; if (argc != 5) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " scan mark|dragto x y\"", (char *) NULL); goto error; } if ((Tcl_GetInt(interp, argv[3], &x) != TCL_OK) || (Tcl_GetInt(interp, argv[4], &y) != TCL_OK)){ goto error; } if ((argv[2][0] == 'm') && (strncmp(argv[2], "mark", strlen(argv[2])) == 0)) { canvasPtr->scanX = x; canvasPtr->scanXOrigin = canvasPtr->xOrigin; canvasPtr->scanY = y; canvasPtr->scanYOrigin = canvasPtr->yOrigin; } else if ((argv[2][0] == 'd') && (strncmp(argv[2], "dragto", strlen(argv[2])) == 0)) { int newXOrigin, newYOrigin, tmp; /* * Compute a new view origin for the canvas, amplifying the * mouse motion and rounding to the nearest multiple of the * scroll increment. */ tmp = canvasPtr->scanXOrigin - 10*(x - canvasPtr->scanX) - canvasPtr->scrollX1; if (tmp >= 0) { tmp = (tmp + canvasPtr->scrollIncrement/2) /canvasPtr->scrollIncrement; } else { tmp = -(((-tmp) + canvasPtr->scrollIncrement/2) /canvasPtr->scrollIncrement); } newXOrigin = canvasPtr->scrollX1 + tmp*canvasPtr->scrollIncrement; tmp = canvasPtr->scanYOrigin - 10*(y - canvasPtr->scanY) - canvasPtr->scrollY1; if (tmp >= 0) { tmp = (tmp + canvasPtr->scrollIncrement/2) /canvasPtr->scrollIncrement; } else { tmp = -(((-tmp) + canvasPtr->scrollIncrement/2) /canvasPtr->scrollIncrement); } newYOrigin = canvasPtr->scrollY1 + tmp*canvasPtr->scrollIncrement; CanvasSetOrigin(canvasPtr, newXOrigin, newYOrigin); } else { Tcl_AppendResult(interp, "bad scan option \"", argv[2], "\": must be mark or dragto", (char *) NULL); goto error; } } else if ((c == 's') && (strncmp(argv[1], "select", length) == 0) && (length >= 2)) { int index; if (argc < 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " select option ?tagOrId? ?arg?\"", (char *) NULL); goto error; } if (argc >= 4) { for (itemPtr = StartTagSearch(canvasPtr, argv[3], &search); itemPtr != NULL; itemPtr = NextItem(&search)) { if ((itemPtr->typePtr->indexProc != NULL) && (itemPtr->typePtr->selectionProc != NULL)){ break; } } if (itemPtr == NULL) { Tcl_AppendResult(interp, "can't find an indexable and selectable item \"", argv[3], "\"", (char *) NULL); goto error; } } if (argc == 5) { if ((*itemPtr->typePtr->indexProc)(canvasPtr, itemPtr, argv[4], &index) != TCL_OK) { goto error; } } length = strlen(argv[2]); c = argv[2][0]; if ((c == 'a') && (strncmp(argv[2], "adjust", length) == 0)) { if (argc != 5) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " select adjust tagOrId index\"", (char *) NULL); goto error; } if (canvasPtr->selItemPtr == itemPtr) { if (index < (canvasPtr->selectFirst + canvasPtr->selectLast)/2) { canvasPtr->selectAnchor = canvasPtr->selectLast + 1; } else { canvasPtr->selectAnchor = canvasPtr->selectFirst; } } CanvasSelectTo(canvasPtr, itemPtr, index); } else if ((c == 'c') && (argv[2] != NULL) && (strncmp(argv[2], "clear", length) == 0)) { if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " select clear\"", (char *) NULL); goto error; } if (canvasPtr->selItemPtr != NULL) { EventuallyRedrawArea(canvasPtr, canvasPtr->selItemPtr->x1, canvasPtr->selItemPtr->y1, canvasPtr->selItemPtr->x2, canvasPtr->selItemPtr->y2); canvasPtr->selItemPtr = NULL; } goto done; } else if ((c == 'f') && (strncmp(argv[2], "from", length) == 0)) { if (argc != 5) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " select from tagOrId index\"", (char *) NULL); goto error; } canvasPtr->anchorItemPtr = itemPtr; canvasPtr->selectAnchor = index; } else if ((c == 'i') && (strncmp(argv[2], "item", length) == 0)) { if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " select item\"", (char *) NULL); goto error; } if (canvasPtr->selItemPtr != NULL) { sprintf(interp->result, "%d", canvasPtr->selItemPtr->id); } } else if ((c == 't') && (strncmp(argv[2], "to", length) == 0)) { if (argc != 5) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " select to tagOrId index\"", (char *) NULL); goto error; } CanvasSelectTo(canvasPtr, itemPtr, index); } else { Tcl_AppendResult(interp, "bad select option \"", argv[2], "\": must be adjust, clear, from, item, or to", (char *) NULL); goto error; } } else if ((c == 't') && (strncmp(argv[1], "type", length) == 0)) { if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " type tag\"", (char *) NULL); goto error; } itemPtr = StartTagSearch(canvasPtr, argv[2], &search); if (itemPtr != NULL) { interp->result = itemPtr->typePtr->name; } } else if ((c == 'x') && (strncmp(argv[1], "xview", length) == 0)) { int index; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " xview index\"", (char *) NULL); goto error; } if (Tcl_GetInt(canvasPtr->interp, argv[2], &index) != TCL_OK) { goto error; } CanvasSetOrigin(canvasPtr, (canvasPtr->scrollX1 + index*canvasPtr->scrollIncrement), canvasPtr->yOrigin); } else if ((c == 'y') && (strncmp(argv[1], "yview", length) == 0)) { int index; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " yview index\"", (char *) NULL); goto error; } if (Tcl_GetInt(canvasPtr->interp, argv[2], &index) != TCL_OK) { goto error; } CanvasSetOrigin(canvasPtr, canvasPtr->xOrigin, (canvasPtr->scrollY1 + index*canvasPtr->scrollIncrement)); } else { Tcl_AppendResult(interp, "bad option \"", argv[1], "\": must be addtag, bbox, bind, ", "canvasx, canvasy, configure, coords, create, ", "cursor, dchars, delete, dtag, find, focus, ", "gettags, index, insert, itemconfigure, lower, ", "move, raise, scale, scan, select, type, xview, or yview", (char *) NULL); goto error; } done: Tk_Release((ClientData) canvasPtr); return result; error: Tk_Release((ClientData) canvasPtr); return TCL_ERROR; } /* *---------------------------------------------------------------------- * * DestroyCanvas -- * * This procedure is invoked by Tk_EventuallyFree or Tk_Release * to clean up the internal structure of a canvas at a safe time * (when no-one is using it anymore). * * Results: * None. * * Side effects: * Everything associated with the canvas is freed up. * *---------------------------------------------------------------------- */ static void DestroyCanvas(clientData) ClientData clientData; /* Info about canvas widget. */ { register Tk_Canvas *canvasPtr = (Tk_Canvas *) clientData; register Tk_Item *itemPtr; for (itemPtr = canvasPtr->firstItemPtr; itemPtr != NULL; itemPtr = canvasPtr->firstItemPtr) { canvasPtr->firstItemPtr = itemPtr->nextPtr; (*itemPtr->typePtr->deleteProc)(itemPtr); if (itemPtr->tagPtr != itemPtr->staticTagSpace) { ckfree((char *) itemPtr->tagPtr); } ckfree((char *) itemPtr); } if (canvasPtr->bgBorder != NULL) { Tk_Free3DBorder(canvasPtr->bgBorder); } if (canvasPtr->bgColor != NULL) { Tk_FreeColor(canvasPtr->bgColor); } if (canvasPtr->pixmapGC != None) { Tk_FreeGC(canvasPtr->pixmapGC); } if (canvasPtr->selBorder != NULL) { Tk_Free3DBorder(canvasPtr->selBorder); } if (canvasPtr->selFgColorPtr != NULL) { Tk_FreeColor(canvasPtr->selFgColorPtr); } if (canvasPtr->cursorBorder != NULL) { Tk_Free3DBorder(canvasPtr->cursorBorder); } Tk_DeleteTimerHandler(canvasPtr->cursorBlinkHandler); if (canvasPtr->bindingTable != NULL) { Tk_DeleteBindingTable(canvasPtr->bindingTable); } if (canvasPtr->xScrollCmd != NULL) { ckfree(canvasPtr->xScrollCmd); } if (canvasPtr->yScrollCmd != NULL) { ckfree(canvasPtr->yScrollCmd); } if (canvasPtr->regionString != NULL) { ckfree(canvasPtr->regionString); } if (canvasPtr->cursor != None) { Tk_FreeCursor(canvasPtr->cursor); } ckfree((char *) canvasPtr); } /* *---------------------------------------------------------------------- * * ConfigureCanvas -- * * This procedure is called to process an argv/argc list, plus * the Tk option database, in order to configure (or * reconfigure) a canvas widget. * * Results: * The return value is a standard Tcl result. If TCL_ERROR is * returned, then interp->result contains an error message. * * Side effects: * Configuration information, such as colors, border width, * etc. get set for canvasPtr; old resources get freed, * if there were any. * *---------------------------------------------------------------------- */ static int ConfigureCanvas(interp, canvasPtr, argc, argv, flags) Tcl_Interp *interp; /* Used for error reporting. */ register Tk_Canvas *canvasPtr; /* Information about widget; may or may * not already have values for some fields. */ int argc; /* Number of valid entries in argv. */ char **argv; /* Arguments. */ int flags; /* Flags to pass to Tk_ConfigureWidget. */ { XGCValues gcValues; GC new; if (Tk_ConfigureWidget(interp, canvasPtr->tkwin, configSpecs, argc, argv, (char *) canvasPtr, flags) != TCL_OK) { return TCL_ERROR; } /* * A few options need special processing, such as setting the * background from a 3-D border and creating a GC for copying * bits to the screen. */ Tk_SetBackgroundFromBorder(canvasPtr->tkwin, canvasPtr->bgBorder); gcValues.function = GXcopy; gcValues.foreground = canvasPtr->bgColor->pixel; gcValues.graphics_exposures = False; new = Tk_GetGC(canvasPtr->tkwin, GCFunction|GCForeground|GCGraphicsExposures, &gcValues); if (canvasPtr->pixmapGC != None) { Tk_FreeGC(canvasPtr->pixmapGC); } canvasPtr->pixmapGC = new; /* * Reset the desired dimensions for the window. */ Tk_GeometryRequest(canvasPtr->tkwin, canvasPtr->width, canvasPtr->height); /* * Restart the cursor timing sequence in case the on-time or off-time * just changed. */ if (canvasPtr->flags & GOT_FOCUS) { CanvasFocusProc((ClientData) canvasPtr, 1); } /* * Recompute the scroll region. */ canvasPtr->scrollX1 = 0; canvasPtr->scrollY1 = 0; canvasPtr->scrollX2 = 0; canvasPtr->scrollY2 = 0; if (canvasPtr->regionString != NULL) { int argc2; char **argv2; if (Tcl_SplitList(canvasPtr->interp, canvasPtr->regionString, &argc2, &argv2) != TCL_OK) { return TCL_ERROR; } if (argc2 != 4) { badRegion: Tcl_AppendResult(interp, "bad scrollRegion \"", canvasPtr->regionString, "\"", (char *) NULL); ckfree(canvasPtr->regionString); ckfree((char *) argv2); canvasPtr->regionString = NULL; return TCL_ERROR; } if ((Tk_GetPixels(canvasPtr->interp, canvasPtr->tkwin, argv2[0], &canvasPtr->scrollX1) != TCL_OK) || (Tk_GetPixels(canvasPtr->interp, canvasPtr->tkwin, argv2[1], &canvasPtr->scrollY1) != TCL_OK) || (Tk_GetPixels(canvasPtr->interp, canvasPtr->tkwin, argv2[2], &canvasPtr->scrollX2) != TCL_OK) || (Tk_GetPixels(canvasPtr->interp, canvasPtr->tkwin, argv2[3], &canvasPtr->scrollY2) != TCL_OK)) { goto badRegion; } ckfree((char *) argv2); } /* * Reset the canvases origin (this is a no-op unless confine * mode has just been turned on or the scroll region has changed). */ CanvasSetOrigin(canvasPtr, canvasPtr->xOrigin, canvasPtr->yOrigin); canvasPtr->flags |= UPDATE_SCROLLBARS; EventuallyRedrawArea(canvasPtr, canvasPtr->xOrigin, canvasPtr->yOrigin, canvasPtr->xOrigin + Tk_Width(canvasPtr->tkwin), canvasPtr->yOrigin + Tk_Height(canvasPtr->tkwin)); return TCL_OK; } #if defined(USE_XPM3) //#include "xpmtk.h" #include /* *-------------------------------------------------------------- * * SaveCanvas -- * * This procedure saves the contents of a canvas window. * * Results: * The return value is a standard Tcl result. If TCL_ERROR is * returned, then interp->result contains an error message. * * Side effects: * A pixmap is written to a file. * *-------------------------------------------------------------- */ static int SaveCanvas(interp, canvasPtr, fileName, x, y, width, height) Tcl_Interp *interp; /* Used for error reporting. */ register Tk_Canvas *canvasPtr; /* Information about widget */ char *fileName; /* the output file name. */ int x; /* upper left x coordinate. */ int y; /* upper left y coordinate. */ unsigned int width; /* width of pixmap area to save. */ unsigned int height; /* height of pixmap area to save. */ { register Tk_Window tkwin = canvasPtr->tkwin; register Tk_Item *itemPtr; Pixmap pixmap; Pixmap savePixmap; int screenX1, screenX2, screenY1, screenY2; XpmAttributes xpm_attributes; if (canvasPtr->tkwin == NULL) { return TCL_OK; } if (!Tk_IsMapped(tkwin)) { return TCL_OK; } if (!(fileName && *fileName)) { Tcl_ResetResult(interp); Tcl_AppendResult(interp, "no filename specified for canvas saving", (char *) NULL); return TCL_ERROR; } /* * Choose a new current item if that is needed (this could cause * event handlers to be invoked). */ while (canvasPtr->flags & REPICK_NEEDED) { Tk_Preserve((ClientData) canvasPtr); canvasPtr->flags &= ~REPICK_NEEDED; PickCurrentItem(canvasPtr, &canvasPtr->pickEvent); tkwin = canvasPtr->tkwin; Tk_Release((ClientData) canvasPtr); if (tkwin == NULL) { return TCL_OK; } } if(x == 0 && y == 0 && width == 0 && height == 0) { screenX1 = 0; screenY1 = 0; screenX2 = Tk_Width(tkwin); screenY2 = Tk_Height(tkwin); width = Tk_Width(tkwin); height = Tk_Height(tkwin); } else { if(width != 0 && height != 0) { screenX1 = x; screenY1 = y; screenX2 = x + width; screenY2 = y + height; } else { Tcl_ResetResult(interp); Tcl_AppendResult(interp, "no correct size specified for canvas saving", (char *) NULL); return TCL_ERROR; } } /* * Saving is done in a temporary pixmap that is allocated * here and freed at the end of the procedure. All drawing * is done to the pixmap, and the pixmap is saved to the * file at the end of the procedure. * * Some tricky points about the pixmap: * * 1. We only allocate a large enough pixmap to hold the * area that has to be saved. This saves time in * in the X server for large objects that cover much * more than the area being saved: only the area * of the pixmap will actually have to be saved. * 2. The origin of the pixmap is adjusted to an even multiple * of 32 bits. This is so that stipple patterns with a size * of 8 or 16 or 32 bits will always line up when information * is copied back to the screen. * 3. Some X servers (e.g. the one for DECstations) have troubles * with characters that overlap an edge of the pixmap (on the * DEC servers, as of 8/18/92, such characters are drawn one * pixel too far to the right). To handle this problem, * make the pixmap a bit larger than is absolutely needed * so that for normal-sized fonts the characters that ovelap * the edge of the pixmap will be outside the area we care * about. */ canvasPtr->drawableXOrigin = (screenX1 - 30) & ~0x1f; canvasPtr->drawableYOrigin = (screenY1 - 30) & ~0x1f; pixmap = XCreatePixmap(Tk_Display(tkwin), Tk_WindowId(tkwin), screenX2 + 30 - canvasPtr->drawableXOrigin, screenY2 + 30 - canvasPtr->drawableYOrigin, Tk_DefaultDepth(Tk_Screen(tkwin))); savePixmap = XCreatePixmap(Tk_Display(tkwin), Tk_WindowId(tkwin), width, height, Tk_DefaultDepth(Tk_Screen(tkwin))); /* * Clear the area to be redrawn. */ XFillRectangle(Tk_Display(tkwin), pixmap, canvasPtr->pixmapGC, screenX1 - canvasPtr->drawableXOrigin, screenY1 - canvasPtr->drawableYOrigin, (unsigned int) (screenX2 - screenX1), (unsigned int) (screenY2 - screenY1)); XFillRectangle(Tk_Display(tkwin), savePixmap, canvasPtr->pixmapGC, 0, 0, width, height); /* * Scan through the item list, redrawing those items that need it. * An item must be redraw if either (a) it intersects the smaller * on-screen area or (b) it intersects the full canvas area and its * type requests that it be redrawn always (e.g. so subwindows can * be unmapped when they move off-screen). */ for (itemPtr = canvasPtr->firstItemPtr; itemPtr != NULL; itemPtr = itemPtr->nextPtr) { if ((itemPtr->x1 >= screenX2) || (itemPtr->y1 >= screenY2) || (itemPtr->x2 < screenX1) || (itemPtr->y2 < screenY1)) { if (!itemPtr->typePtr->alwaysRedraw || (itemPtr->x1 >= canvasPtr->redrawX2) || (itemPtr->y1 >= canvasPtr->redrawY2) || (itemPtr->x2 < canvasPtr->redrawX1) || (itemPtr->y2 < canvasPtr->redrawY1)) { continue; } } (*itemPtr->typePtr->displayProc)(canvasPtr, itemPtr, pixmap); } /* * Copy from the temporary pixmap to the save pixmap. */ XCopyArea(Tk_Display(tkwin), pixmap, savePixmap, canvasPtr->pixmapGC, screenX1 - canvasPtr->drawableXOrigin, screenY1 - canvasPtr->drawableYOrigin, screenX2 - screenX1, screenY2 - screenY1, 0, 0); /* * Save temporary pixmap. */ xpm_attributes.width = width; xpm_attributes.height = height; xpm_attributes.visual = Tk_DefaultVisual(Tk_Screen(tkwin)); xpm_attributes.colormap = Tk_DefaultColormap(Tk_Screen(tkwin)); xpm_attributes.valuemask = XpmSize | XpmVisual | XpmColormap; if(XpmWriteFileFromPixmap(Tk_Display(tkwin), fileName, savePixmap, (Pixmap) NULL, &xpm_attributes) != XpmSuccess) { XFreePixmap(Tk_Display(tkwin), pixmap); XFreePixmap(Tk_Display(tkwin), savePixmap); Tcl_ResetResult(interp); Tcl_AppendResult(interp, "could not save pixmap for canvas", (char *) NULL); return TCL_ERROR; } XFreePixmap(Tk_Display(tkwin), pixmap); XFreePixmap(Tk_Display(tkwin), savePixmap); return TCL_OK; } #endif /* *-------------------------------------------------------------- * * DisplayCanvas -- * * This procedure redraws the contents of a canvas window. * It is invoked as a do-when-idle handler, so it only runs * when there's nothing else for the application to do. * * Results: * None. * * Side effects: * Information appears on the screen. * *-------------------------------------------------------------- */ static void DisplayCanvas(clientData) ClientData clientData; /* Information about widget. */ { register Tk_Canvas *canvasPtr = (Tk_Canvas *) clientData; register Tk_Window tkwin = canvasPtr->tkwin; register Tk_Item *itemPtr; Pixmap pixmap; int screenX1, screenX2, screenY1, screenY2; if (canvasPtr->tkwin == NULL) { return; } if (!Tk_IsMapped(tkwin)) { goto done; } /* * Choose a new current item if that is needed (this could cause * event handlers to be invoked). */ while (canvasPtr->flags & REPICK_NEEDED) { Tk_Preserve((ClientData) canvasPtr); canvasPtr->flags &= ~REPICK_NEEDED; PickCurrentItem(canvasPtr, &canvasPtr->pickEvent); tkwin = canvasPtr->tkwin; Tk_Release((ClientData) canvasPtr); if (tkwin == NULL) { return; } } /* * Compute the intersection between the area that needs redrawing * and the area that's visible on the screen. */ screenX1 = canvasPtr->xOrigin; screenY1 = canvasPtr->yOrigin; screenX2 = screenX1 + Tk_Width(tkwin); screenY2 = screenY1 + Tk_Height(tkwin); if (canvasPtr->redrawX1 > screenX1) { screenX1 = canvasPtr->redrawX1; } if (canvasPtr->redrawY1 > screenY1) { screenY1 = canvasPtr->redrawY1; } if (canvasPtr->redrawX2 < screenX2) { screenX2 = canvasPtr->redrawX2; } if (canvasPtr->redrawY2 < screenY2) { screenY2 = canvasPtr->redrawY2; } if ((screenX1 >= screenX2) || (screenY1 >= screenY2)) { goto done; } /* * Redrawing is done in a temporary pixmap that is allocated * here and freed at the end of the procedure. All drawing * is done to the pixmap, and the pixmap is copied to the * screen at the end of the procedure. The temporary pixmap * serves two purposes: * * 1. It provides a smoother visual effect (no clearing and * gradual redraw will be visible to users). * 2. It allows us to redraw only the objects that overlap * the redraw area. Otherwise incorrect results could * occur from redrawing things that stick outside of * the redraw area (we'd have to redraw everything in * order to make the overlaps look right). * * Some tricky points about the pixmap: * * 1. We only allocate a large enough pixmap to hold the * area that has to be redisplayed. This saves time in * in the X server for large objects that cover much * more than the area being redisplayed: only the area * of the pixmap will actually have to be redrawn. * 2. The origin of the pixmap is adjusted to an even multiple * of 32 bits. This is so that stipple patterns with a size * of 8 or 16 or 32 bits will always line up when information * is copied back to the screen. * 3. Some X servers (e.g. the one for DECstations) have troubles * with characters that overlap an edge of the pixmap (on the * DEC servers, as of 8/18/92, such characters are drawn one * pixel too far to the right). To handle this problem, * make the pixmap a bit larger than is absolutely needed * so that for normal-sized fonts the characters that ovelap * the edge of the pixmap will be outside the area we care * about. */ canvasPtr->drawableXOrigin = (screenX1 - 30) & ~0x1f; canvasPtr->drawableYOrigin = (screenY1 - 30) & ~0x1f; pixmap = XCreatePixmap(Tk_Display(tkwin), Tk_WindowId(tkwin), screenX2 + 30 - canvasPtr->drawableXOrigin, screenY2 + 30 - canvasPtr->drawableYOrigin, Tk_DefaultDepth(Tk_Screen(tkwin))); /* * Clear the area to be redrawn. */ XFillRectangle(Tk_Display(tkwin), pixmap, canvasPtr->pixmapGC, screenX1 - canvasPtr->drawableXOrigin, screenY1 - canvasPtr->drawableYOrigin, (unsigned int) (screenX2 - screenX1), (unsigned int) (screenY2 - screenY1)); /* * Scan through the item list, redrawing those items that need it. * An item must be redraw if either (a) it intersects the smaller * on-screen area or (b) it intersects the full canvas area and its * type requests that it be redrawn always (e.g. so subwindows can * be unmapped when they move off-screen). */ for (itemPtr = canvasPtr->firstItemPtr; itemPtr != NULL; itemPtr = itemPtr->nextPtr) { if ((itemPtr->x1 >= screenX2) || (itemPtr->y1 >= screenY2) || (itemPtr->x2 < screenX1) || (itemPtr->y2 < screenY1)) { if (!itemPtr->typePtr->alwaysRedraw || (itemPtr->x1 >= canvasPtr->redrawX2) || (itemPtr->y1 >= canvasPtr->redrawY2) || (itemPtr->x2 < canvasPtr->redrawX1) || (itemPtr->y2 < canvasPtr->redrawY1)) { continue; } } (*itemPtr->typePtr->displayProc)(canvasPtr, itemPtr, pixmap); } /* * Draw the window border. */ if (canvasPtr->relief != TK_RELIEF_FLAT) { Tk_Draw3DRectangle(Tk_Display(tkwin), pixmap, canvasPtr->bgBorder, canvasPtr->xOrigin - canvasPtr->drawableXOrigin, canvasPtr->yOrigin - canvasPtr->drawableYOrigin, Tk_Width(tkwin), Tk_Height(tkwin), canvasPtr->borderWidth, canvasPtr->relief); } /* * Copy from the temporary pixmap to the screen, then free up * the temporary pixmap. */ XCopyArea(Tk_Display(tkwin), pixmap, Tk_WindowId(tkwin), canvasPtr->pixmapGC, screenX1 - canvasPtr->drawableXOrigin, screenY1 - canvasPtr->drawableYOrigin, screenX2 - screenX1, screenY2 - screenY1, screenX1 - canvasPtr->xOrigin, screenY1 - canvasPtr->yOrigin); XFreePixmap(Tk_Display(tkwin), pixmap); done: canvasPtr->flags &= ~REDRAW_PENDING; assert(canvasPtr->updateTimerToken != NULL); canvasPtr->updateTimerToken = NULL; if (canvasPtr->flags & UPDATE_SCROLLBARS) { CanvasUpdateScrollbars(canvasPtr); } } /* *-------------------------------------------------------------- * * CanvasEventProc -- * * This procedure is invoked by the Tk dispatcher for various * events on canvases. * * Results: * None. * * Side effects: * When the window gets deleted, internal structures get * cleaned up. When it gets exposed, it is redisplayed. * *-------------------------------------------------------------- */ static void CanvasEventProc(clientData, eventPtr) ClientData clientData; /* Information about window. */ XEvent *eventPtr; /* Information about event. */ { Tk_Canvas *canvasPtr = (Tk_Canvas *) clientData; if (eventPtr->type == Expose) { int x, y; x = eventPtr->xexpose.x + canvasPtr->xOrigin; y = eventPtr->xexpose.y + canvasPtr->yOrigin; EventuallyRedrawArea(canvasPtr, x, y, x + eventPtr->xexpose.width, y + eventPtr->xexpose.height); } else if (eventPtr->type == DestroyNotify) { Tcl_DeleteCommand(canvasPtr->interp, Tk_PathName(canvasPtr->tkwin)); canvasPtr->tkwin = NULL; if (canvasPtr->flags & REDRAW_PENDING) { canvasPtr->flags &= ~REDRAW_PENDING; // Tk_CancelIdleCall(DisplayCanvas, (ClientData) canvasPtr); assert(canvasPtr->updateTimerToken != NULL); if (canvasPtr->updateTimerToken != NULL) { Tk_DeleteTimerHandler(canvasPtr->updateTimerToken); canvasPtr->updateTimerToken = 0; } } Tk_EventuallyFree((ClientData) canvasPtr, DestroyCanvas); } else if (eventPtr->type == ConfigureNotify) { canvasPtr->flags |= UPDATE_SCROLLBARS; /* * The call below is needed in order to recenter the canvas if * it's confined and its scroll region is smaller than the window. */ CanvasSetOrigin(canvasPtr, canvasPtr->xOrigin, canvasPtr->yOrigin); EventuallyRedrawArea(canvasPtr, 0, 0, Tk_Width(canvasPtr->tkwin), Tk_Height(canvasPtr->tkwin)); } } /* *-------------------------------------------------------------- * * EventuallyRedrawArea -- * * Arrange for part or all of a canvas widget to redrawn at * the next convenient time in the future. * * Results: * None. * * Side effects: * The screen will eventually be refreshed. * *-------------------------------------------------------------- */ static void EventuallyRedrawArea(canvasPtr, x1, y1, x2, y2) register Tk_Canvas *canvasPtr; /* Information about widget. */ int x1, y1; /* Upper left corner of area to * redraw. Pixels on edge are * redrawn. */ int x2, y2; /* Lower right corner of area to * redraw. Pixels on edge are * not redrawn. */ { if ((canvasPtr->tkwin == NULL) || !Tk_IsMapped(canvasPtr->tkwin)) { return; } if (canvasPtr->flags & REDRAW_PENDING) { if (x1 <= canvasPtr->redrawX1) { canvasPtr->redrawX1 = x1; } if (y1 <= canvasPtr->redrawY1) { canvasPtr->redrawY1 = y1; } if (x2 >= canvasPtr->redrawX2) { canvasPtr->redrawX2 = x2; } if (y2 >= canvasPtr->redrawY2) { canvasPtr->redrawY2 = y2; } } else { canvasPtr->redrawX1 = x1; canvasPtr->redrawY1 = y1; canvasPtr->redrawX2 = x2; canvasPtr->redrawY2 = y2; // Tk_DoWhenIdle(DisplayCanvas, (ClientData) canvasPtr); canvasPtr->flags |= REDRAW_PENDING; assert(canvasPtr->updateTimerToken == NULL); if (canvasPtr->updateTimerToken == 0) { canvasPtr->updateTimerToken = Tk_CreateTimerHandler( CanvasUpdateTime, DisplayCanvas, (ClientData) canvasPtr); } } } /* *-------------------------------------------------------------- * * Tk_CreateItemType -- * * This procedure may be invoked to add a new kind of canvas * element to the core item types supported by Tk. * * Results: * None. * * Side effects: * From now on, the new item type will be useable in canvas * widgets (e.g. typePtr->name can be used as the item type * in "create" widget commands). If there was already a * type with the same name as in typePtr, it is replaced with * the new type. * *-------------------------------------------------------------- */ void Tk_CreateItemType(typePtr) Tk_ItemType *typePtr; /* Information about item type; * storage must be statically * allocated (must live forever). */ { if (typeList == NULL) { InitCanvas(); } typePtr->nextPtr = typeList; typeList = typePtr; } /* *-------------------------------------------------------------- * * InitCanvas -- * * This procedure is invoked to perform once-only-ever * initialization for the module, such as setting up * the type table. * * Results: * None. * * Side effects: * None. * *-------------------------------------------------------------- */ static void InitCanvas() { if (typeList != NULL) { return; } typeList = &TkRectangleType; TkRectangleType.nextPtr = &TkTextType; TkTextType.nextPtr = &TkPolygonType; TkPolygonType.nextPtr = &TkOvalType; TkOvalType.nextPtr = &TkLineType; TkLineType.nextPtr = &TkWindowType; TkWindowType.nextPtr = &TkBitmapType; TkBitmapType.nextPtr = &TkArcType; TkArcType.nextPtr = NULL; allUid = Tk_GetUid("all"); currentUid = Tk_GetUid("current"); } /* *-------------------------------------------------------------- * * StartTagSearch -- * * This procedure is called to initiate an enumeration of * all items in a given canvas that contain a given tag. * * Results: * The return value is a pointer to the first item in * canvasPtr that matches tag, or NULL if there is no * such item. The information at *searchPtr is initialized * such that successive calls to NextItem will return * successive items that match tag. * * Side effects: * SearchPtr is linked into a list of searches in progress * on canvasPtr, so that elements can safely be deleted * while the search is in progress. EndTagSearch must be * called at the end of the search to unlink searchPtr from * this list. * *-------------------------------------------------------------- */ static Tk_Item * StartTagSearch(canvasPtr, tag, searchPtr) Tk_Canvas *canvasPtr; /* Canvas whose items are to be * searched. */ char *tag; /* String giving tag value. */ TagSearch *searchPtr; /* Record describing tag search; * will be initialized here. */ { int id; register Tk_Item *itemPtr, *prevPtr; register Tk_Uid *tagPtr; register Tk_Uid uid; register int count; /* * Initialize the search. */ searchPtr->canvasPtr = canvasPtr; searchPtr->searchOver = 0; /* * Find the first matching item in one of several ways. If the tag * is a number then it selects the single item with the matching * identifier. In this case see if the item being requested is the * hot item, in which case the search can be skipped. */ if (isdigit(*tag)) { char *end; numIdSearches++; id = strtoul(tag, &end, 0); if (*end == 0) { itemPtr = canvasPtr->hotPtr; prevPtr = canvasPtr->hotPrevPtr; if ((itemPtr == NULL) || (itemPtr->id != id) || (prevPtr == NULL) || (prevPtr->nextPtr != itemPtr)) { numSlowSearches++; for (prevPtr = NULL, itemPtr = canvasPtr->firstItemPtr; itemPtr != NULL; prevPtr = itemPtr, itemPtr = itemPtr->nextPtr) { if (itemPtr->id == id) { break; } } } searchPtr->prevPtr = prevPtr; searchPtr->searchOver = 1; canvasPtr->hotPtr = itemPtr; canvasPtr->hotPrevPtr = prevPtr; return itemPtr; } } searchPtr->tag = uid = Tk_GetUid(tag); if (uid == allUid) { /* * All items match. */ searchPtr->tag = NULL; searchPtr->prevPtr = NULL; searchPtr->currentPtr = canvasPtr->firstItemPtr; return canvasPtr->firstItemPtr; } /* * None of the above. Search for an item with a matching tag. */ for (prevPtr = NULL, itemPtr = canvasPtr->firstItemPtr; itemPtr != NULL; prevPtr = itemPtr, itemPtr = itemPtr->nextPtr) { for (tagPtr = itemPtr->tagPtr, count = itemPtr->numTags; count > 0; tagPtr++, count--) { if (*tagPtr == uid) { searchPtr->prevPtr = prevPtr; searchPtr->currentPtr = itemPtr; return itemPtr; } } } searchPtr->prevPtr = prevPtr; searchPtr->searchOver = 1; return NULL; } /* *-------------------------------------------------------------- * * NextItem -- * * This procedure returns successive items that match a given * tag; it should be called only after StartTagSearch has been * used to begin a search. * * Results: * The return value is a pointer to the next item that matches * the tag specified to StartTagSearch, or NULL if no such * item exists. *SearchPtr is updated so that the next call * to this procedure will return the next item. * * Side effects: * None. * *-------------------------------------------------------------- */ static Tk_Item * NextItem(searchPtr) TagSearch *searchPtr; /* Record describing search in * progress. */ { register Tk_Item *itemPtr, *prevPtr; register int count; register Tk_Uid uid; register Tk_Uid *tagPtr; /* * Find next item in list (this may not actually be a suitable * one to return), and return if there are no items left. */ prevPtr = searchPtr->prevPtr; if (prevPtr == NULL) { itemPtr = searchPtr->canvasPtr->firstItemPtr; } else { itemPtr = prevPtr->nextPtr; } if ((itemPtr == NULL) || (searchPtr->searchOver)) { searchPtr->searchOver = 1; return NULL; } if (itemPtr != searchPtr->currentPtr) { /* * The structure of the list has changed. Probably the * previously-returned item was removed from the list. * In this case, don't advance prevPtr; just return * its new successor (i.e. do nothing here). */ } else { prevPtr = itemPtr; itemPtr = prevPtr->nextPtr; } /* * Handle special case of "all" search by returning next item. */ uid = searchPtr->tag; if (uid == NULL) { searchPtr->prevPtr = prevPtr; searchPtr->currentPtr = itemPtr; return itemPtr; } /* * Look for an item with a particular tag. */ for ( ; itemPtr != NULL; prevPtr = itemPtr, itemPtr = itemPtr->nextPtr) { for (tagPtr = itemPtr->tagPtr, count = itemPtr->numTags; count > 0; tagPtr++, count--) { if (*tagPtr == uid) { searchPtr->prevPtr = prevPtr; searchPtr->currentPtr = itemPtr; return itemPtr; } } } searchPtr->prevPtr = prevPtr; searchPtr->searchOver = 1; return NULL; } /* *-------------------------------------------------------------- * * DoItem -- * * This is a utility procedure called by FindItems. It * either adds itemPtr's id to the result forming in interp, * or it adds a new tag to itemPtr, depending on the value * of tag. * * Results: * None. * * Side effects: * If tag is NULL then itemPtr's id is added as a list element * to interp->result; otherwise tag is added to itemPtr's * list of tags. * *-------------------------------------------------------------- */ static void DoItem(interp, itemPtr, tag) Tcl_Interp *interp; /* Interpreter in which to (possibly) * record item id. */ register Tk_Item *itemPtr; /* Item to (possibly) modify. */ Tk_Uid tag; /* Tag to add to those already * present for item, or NULL. */ { register Tk_Uid *tagPtr; register int count; /* * Handle the "add-to-result" case and return, if appropriate. */ if (tag == NULL) { char msg[30]; sprintf(msg, "%d", itemPtr->id); Tcl_AppendElement(interp, msg, 0); return; } for (tagPtr = itemPtr->tagPtr, count = itemPtr->numTags; count > 0; tagPtr++, count--) { if (tag == *tagPtr) { return; } } /* * Grow the tag space if there's no more room left in the current * block. */ if (itemPtr->tagSpace == itemPtr->numTags) { Tk_Uid *newTagPtr; itemPtr->tagSpace += 5; newTagPtr = (Tk_Uid *) ckalloc((unsigned) (itemPtr->tagSpace * sizeof(Tk_Uid))); memcpy((VOID *) newTagPtr, (VOID *) itemPtr->tagPtr, (itemPtr->numTags * sizeof(Tk_Uid))); if (itemPtr->tagPtr != itemPtr->staticTagSpace) { ckfree((char *) itemPtr->tagPtr); } itemPtr->tagPtr = newTagPtr; tagPtr = &itemPtr->tagPtr[itemPtr->numTags]; } /* * Add in the new tag. */ *tagPtr = tag; itemPtr->numTags++; } /* *-------------------------------------------------------------- * * FindItems -- * * This procedure does all the work of implementing the * "find" and "addtag" options of the canvas widget command, * which locate items that have certain features (location, * tags, position in display list, etc.). * * Results: * A standard Tcl return value. If newTag is NULL, then a * list of ids from all the items that match argc/argv is * returned in interp->result. If newTag is NULL, then * the normal interp->result is an empty string. If an error * occurs, then interp->result will hold an error message. * * Side effects: * If newTag is non-NULL, then all the items that match the * information in argc/argv have that tag added to their * lists of tags. * *-------------------------------------------------------------- */ static int FindItems(interp, canvasPtr, argc, argv, newTag, cmdName, option) Tcl_Interp *interp; /* Interpreter for error reporting. */ Tk_Canvas *canvasPtr; /* Canvas whose items are to be * searched. */ int argc; /* Number of entries in argv. Must be * greater than zero. */ char **argv; /* Arguments that describe what items * to search for (see user doc on * "find" and "addtag" options). */ char *newTag; /* If non-NULL, gives new tag to set * on all found items; if NULL, then * ids of found items are returned * in interp->result. */ char *cmdName; /* Name of original Tcl command, for * use in error messages. */ char *option; /* For error messages: gives option * from Tcl command and other stuff * up to what's in argc/argv. */ { char c; int length; TagSearch search; register Tk_Item *itemPtr; Tk_Uid uid; if (newTag != NULL) { uid = Tk_GetUid(newTag); } else { uid = NULL; } c = argv[0][0]; length = strlen(argv[0]); if ((c == 'a') && (strncmp(argv[0], "above", length) == 0) && (length >= 2)) { Tk_Item *lastPtr = NULL; if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: must be \"", cmdName, option, " above tagOrId", (char *) NULL); return TCL_ERROR; } for (itemPtr = StartTagSearch(canvasPtr, argv[1], &search); itemPtr != NULL; itemPtr = NextItem(&search)) { lastPtr = itemPtr; } if ((lastPtr != NULL) && (lastPtr->nextPtr != NULL)) { DoItem(interp, lastPtr->nextPtr, uid); } } else if ((c == 'a') && (strncmp(argv[0], "all", length) == 0) && (length >= 2)) { if (argc != 1) { Tcl_AppendResult(interp, "wrong # args: must be \"", cmdName, option, " all", (char *) NULL); return TCL_ERROR; } for (itemPtr = canvasPtr->firstItemPtr; itemPtr != NULL; itemPtr = itemPtr->nextPtr) { DoItem(interp, itemPtr, uid); } } else if ((c == 'b') && (strncmp(argv[0], "below", length) == 0)) { if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: must be \"", cmdName, option, " below tagOrId", (char *) NULL); return TCL_ERROR; } itemPtr = StartTagSearch(canvasPtr, argv[1], &search); if (search.prevPtr != NULL) { DoItem(interp, search.prevPtr, uid); } } else if ((c == 'c') && (strncmp(argv[0], "closest", length) == 0)) { double closestDist; Tk_Item *startPtr, *closestPtr; double coords[2], halo; int x1, y1, x2, y2; if ((argc < 3) || (argc > 5)) { Tcl_AppendResult(interp, "wrong # args: must be \"", cmdName, option, " closest x y ?halo? ?start?", (char *) NULL); return TCL_ERROR; } if ((TkGetCanvasCoord(canvasPtr, argv[1], &coords[0]) != TCL_OK) || (TkGetCanvasCoord(canvasPtr, argv[2], &coords[1]) != TCL_OK)) { return TCL_ERROR; } if (argc > 3) { if (TkGetCanvasCoord(canvasPtr, argv[3], &halo) != TCL_OK) { return TCL_ERROR; } if (halo < 0.0) { Tcl_AppendResult(interp, "can't have negative halo value \"", argv[3], "\"", (char *) NULL); return TCL_ERROR; } } else { halo = 0.0; } /* * Find the item at which to start the search. */ startPtr = canvasPtr->firstItemPtr; if (argc == 5) { itemPtr = StartTagSearch(canvasPtr, argv[4], &search); if (itemPtr != NULL) { startPtr = itemPtr; } } /* * The code below is optimized so that it can eliminate most * items without having to call their item-specific procedures. * This is done by keeping a bounding box (x1, y1, x2, y2) that * an item's bbox must overlap if the item is to have any * chance of being closer than the closest so far. */ itemPtr = startPtr; if (itemPtr == NULL) { return TCL_OK; } closestDist = (*itemPtr->typePtr->pointProc)(canvasPtr, itemPtr, coords) - halo; if (closestDist < 0.0) { closestDist = 0.0; } while (1) { double newDist; /* * Update the bounding box using itemPtr, which is the * new closest item. */ x1 = (coords[0] - closestDist - halo - 1); y1 = (coords[1] - closestDist - halo - 1); x2 = (coords[0] + closestDist + halo + 1); y2 = (coords[1] + closestDist + halo + 1); closestPtr = itemPtr; /* * Search for an item that beats the current closest one. * Work circularly through the canvas's item list until * getting back to the starting item. */ while (1) { itemPtr = itemPtr->nextPtr; if (itemPtr == NULL) { itemPtr = canvasPtr->firstItemPtr; } if (itemPtr == startPtr) { DoItem(interp, closestPtr, uid); return TCL_OK; } if ((itemPtr->x1 >= x2) || (itemPtr->x2 <= x1) || (itemPtr->y1 >= y2) || (itemPtr->y2 <= y1)) { continue; } newDist = (*itemPtr->typePtr->pointProc)(canvasPtr, itemPtr, coords) - halo; if (newDist < 0.0) { newDist = 0.0; } if (newDist <= closestDist) { closestDist = newDist; break; } } } } else if ((c == 'e') && (strncmp(argv[0], "enclosed", length) == 0)) { if (argc != 5) { Tcl_AppendResult(interp, "wrong # args: must be \"", cmdName, option, " enclosed x1 y1 x2 y2", (char *) NULL); return TCL_ERROR; } return FindArea(interp, canvasPtr, argv+1, uid, 1); } else if ((c == 'o') && (strncmp(argv[0], "overlapping", length) == 0)) { if (argc != 5) { Tcl_AppendResult(interp, "wrong # args: must be \"", cmdName, option, " overlapping x1 y1 x2 y2", (char *) NULL); return TCL_ERROR; } return FindArea(interp, canvasPtr, argv+1, uid, 0); } else if ((c == 'w') && (strncmp(argv[0], "withtag", length) == 0)) { if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: must be \"", cmdName, option, " withtag tagOrId", (char *) NULL); return TCL_ERROR; } for (itemPtr = StartTagSearch(canvasPtr, argv[1], &search); itemPtr != NULL; itemPtr = NextItem(&search)) { DoItem(interp, itemPtr, uid); } } else { Tcl_AppendResult(interp, "bad search command \"", argv[0], "\": must be above, all, below, closest, enclosed, ", "overlapping, or withtag", (char *) NULL); return TCL_ERROR; } return TCL_OK; } /* *-------------------------------------------------------------- * * FindArea -- * * This procedure implements area searches for the "find" * and "addtag" options. * * Results: * A standard Tcl return value. If newTag is NULL, then a * list of ids from all the items overlapping or enclosed * by the rectangle given by argc is returned in interp->result. * If newTag is NULL, then the normal interp->result is an * empty string. If an error occurs, then interp->result will * hold an error message. * * Side effects: * If uid is non-NULL, then all the items overlapping * or enclosed by the area in argv have that tag added to * their lists of tags. * *-------------------------------------------------------------- */ static int FindArea(interp, canvasPtr, argv, uid, enclosed) Tcl_Interp *interp; /* Interpreter for error reporting * and result storing. */ Tk_Canvas *canvasPtr; /* Canvas whose items are to be * searched. */ char **argv; /* Array of four arguments that * give the coordinates of the * rectangular area to search. */ Tk_Uid uid; /* If non-NULL, gives new tag to set * on all found items; if NULL, then * ids of found items are returned * in interp->result. */ int enclosed; /* 0 means overlapping or enclosed * items are OK, 1 means only enclosed * items are OK. */ { double rect[4], tmp; int x1, y1, x2, y2; register Tk_Item *itemPtr; if ((TkGetCanvasCoord(canvasPtr, argv[0], &rect[0]) != TCL_OK) || (TkGetCanvasCoord(canvasPtr, argv[1], &rect[1]) != TCL_OK) || (TkGetCanvasCoord(canvasPtr, argv[2], &rect[2]) != TCL_OK) || (TkGetCanvasCoord(canvasPtr, argv[3], &rect[3]) != TCL_OK)) { return TCL_ERROR; } if (rect[0] > rect[2]) { tmp = rect[0]; rect[0] = rect[2]; rect[2] = tmp; } if (rect[1] > rect[3]) { tmp = rect[1]; rect[1] = rect[3]; rect[3] = tmp; } /* * Use an integer bounding box for a quick test, to avoid * calling item-specific code except for items that are close. */ x1 = (rect[0]-1.0); y1 = (rect[1]-1.0); x2 = (rect[2]+1.0); y2 = (rect[3]+1.0); for (itemPtr = canvasPtr->firstItemPtr; itemPtr != NULL; itemPtr = itemPtr->nextPtr) { if ((itemPtr->x1 >= x2) || (itemPtr->x2 <= x1) || (itemPtr->y1 >= y2) || (itemPtr->y2 <= y1)) { continue; } if ((*itemPtr->typePtr->areaProc)(canvasPtr, itemPtr, rect) >= enclosed) { DoItem(interp, itemPtr, uid); } } return TCL_OK; } /* *-------------------------------------------------------------- * * RelinkItems -- * * Move one or more items to a different place in the * display order for a canvas. * * Results: * None. * * Side effects: * The items identified by "tag" are moved so that they * are all together in the display list and immediately * after prevPtr. The order of the moved items relative * to each other is not changed. * *-------------------------------------------------------------- */ static void RelinkItems(canvasPtr, tag, prevPtr) Tk_Canvas *canvasPtr; /* Canvas to be modified. */ char *tag; /* Tag identifying items to be moved * in the redisplay list. */ Tk_Item *prevPtr; /* Reposition the items so that they * go just after this item (NULL means * put at beginning of list). */ { register Tk_Item *itemPtr; TagSearch search; Tk_Item *firstMovePtr, *lastMovePtr; /* * Find all of the items to be moved and remove them from * the list, making an auxiliary list running from firstMovePtr * to lastMovePtr. Record their areas for redisplay. */ firstMovePtr = lastMovePtr = NULL; for (itemPtr = StartTagSearch(canvasPtr, tag, &search); itemPtr != NULL; itemPtr = NextItem(&search)) { if (itemPtr == prevPtr) { /* * Item after which insertion is to occur is being * moved! Switch to insert after its predecessor. */ prevPtr = search.prevPtr; } if (search.prevPtr == NULL) { canvasPtr->firstItemPtr = itemPtr->nextPtr; } else { search.prevPtr->nextPtr = itemPtr->nextPtr; } if (canvasPtr->lastItemPtr == itemPtr) { canvasPtr->lastItemPtr = search.prevPtr; } if (firstMovePtr == NULL) { firstMovePtr = itemPtr; } else { lastMovePtr->nextPtr = itemPtr; } lastMovePtr = itemPtr; EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2); canvasPtr->flags |= REPICK_NEEDED; } /* * Insert the list of to-be-moved items back into the canvas's * at the desired position. */ if (firstMovePtr == NULL) { return; } if (prevPtr == NULL) { lastMovePtr->nextPtr = canvasPtr->firstItemPtr; canvasPtr->firstItemPtr = firstMovePtr; } else { lastMovePtr->nextPtr = prevPtr->nextPtr; prevPtr->nextPtr = firstMovePtr; } if (canvasPtr->lastItemPtr == prevPtr) { canvasPtr->lastItemPtr = lastMovePtr; } } /* *-------------------------------------------------------------- * * CanvasBindProc -- * * This procedure is invoked by the Tk dispatcher to handle * events associated with bindings on items. * * Results: * None. * * Side effects: * Depends on the command invoked as part of the binding * (if there was any). * *-------------------------------------------------------------- */ static void CanvasBindProc(clientData, eventPtr) ClientData clientData; /* Pointer to canvas structure. */ XEvent *eventPtr; /* Pointer to X event that just * happened. */ { Tk_Canvas *canvasPtr = (Tk_Canvas *) clientData; int repick = 0; Tk_Preserve((ClientData) canvasPtr); /* * This code simulates grabs for mouse buttons by refusing to * pick a new current item between the time a mouse button goes * down and the time when the last mouse button is released is * released again. */ if (eventPtr->type == ButtonPress) { canvasPtr->flags |= BUTTON_DOWN; } else if (eventPtr->type == ButtonRelease) { int mask; switch (eventPtr->xbutton.button) { case Button1: mask = Button1Mask; break; case Button2: mask = Button2Mask; break; case Button3: mask = Button3Mask; break; case Button4: mask = Button4Mask; break; case Button5: mask = Button5Mask; break; default: mask = 0; break; } if ((eventPtr->xbutton.state & (Button1Mask|Button2Mask |Button3Mask|Button4Mask|Button5Mask)) == mask) { canvasPtr->flags &= ~BUTTON_DOWN; repick = 1; } } else if ((eventPtr->type == EnterNotify) || (eventPtr->type == LeaveNotify)) { PickCurrentItem(canvasPtr, eventPtr); goto done; } else if (eventPtr->type == MotionNotify) { PickCurrentItem(canvasPtr, eventPtr); } CanvasDoEvent(canvasPtr, eventPtr); if (repick) { unsigned int oldState; oldState = eventPtr->xbutton.state; eventPtr->xbutton.state &= ~(Button1Mask|Button2Mask |Button3Mask|Button4Mask|Button5Mask); PickCurrentItem(canvasPtr, eventPtr); eventPtr->xbutton.state = oldState; } done: Tk_Release((ClientData) canvasPtr); } /* *-------------------------------------------------------------- * * PickCurrentItem -- * * Find the topmost item in a canvas that contains a given * location and mark the the current item. If the current * item has changed, generate a fake exit event on the old * current item and a fake enter event on the new current * item. * * Results: * None. * * Side effects: * The current item for canvasPtr may change. If it does, * then the commands associated with item entry and exit * could do just about anything. * *-------------------------------------------------------------- */ static void PickCurrentItem(canvasPtr, eventPtr) register Tk_Canvas *canvasPtr; /* Canvas pointer in which to select * current item. */ XEvent *eventPtr; /* Event describing location of * mouse cursor. Must be EnterWindow, * LeaveWindow, ButtonRelease, or * MotionNotify. */ { Tk_Item *closestPtr = NULL; /* * If a button is down, then don't do anything at all; we'll be * called again when all buttons are up, and we can repick then. * This implements a form of mouse grabbing for canvases. */ if (canvasPtr->flags & BUTTON_DOWN) { return; } /* * Save information about this event in the canvas. The event in * the canvas is used for two purposes: * * 1. Event bindings: if the current item changes, fake events are * generated to allow item-enter and item-leave bindings to trigger. * 2. Reselection: if the current item gets deleted, can use the * saved event to find a new current item. * Translate MotionNotify events into EnterNotify events, since that's * what gets reported to item handlers. */ if (eventPtr != &canvasPtr->pickEvent) { if ((eventPtr->type == MotionNotify) || (eventPtr->type == ButtonRelease)) { canvasPtr->pickEvent.xcrossing.type = EnterNotify; canvasPtr->pickEvent.xcrossing.serial = eventPtr->xmotion.serial; canvasPtr->pickEvent.xcrossing.send_event = eventPtr->xmotion.send_event; canvasPtr->pickEvent.xcrossing.display = eventPtr->xmotion.display; canvasPtr->pickEvent.xcrossing.window = eventPtr->xmotion.window; canvasPtr->pickEvent.xcrossing.root = eventPtr->xmotion.root; canvasPtr->pickEvent.xcrossing.subwindow = None; canvasPtr->pickEvent.xcrossing.time = eventPtr->xmotion.time; canvasPtr->pickEvent.xcrossing.x = eventPtr->xmotion.x; canvasPtr->pickEvent.xcrossing.y = eventPtr->xmotion.y; canvasPtr->pickEvent.xcrossing.x_root = eventPtr->xmotion.x_root; canvasPtr->pickEvent.xcrossing.y_root = eventPtr->xmotion.y_root; canvasPtr->pickEvent.xcrossing.mode = NotifyNormal; canvasPtr->pickEvent.xcrossing.detail = NotifyNonlinear; canvasPtr->pickEvent.xcrossing.same_screen = eventPtr->xmotion.same_screen; canvasPtr->pickEvent.xcrossing.focus = False; canvasPtr->pickEvent.xcrossing.state = eventPtr->xmotion.state; } else { canvasPtr->pickEvent = *eventPtr; } } /* * A LeaveNotify event automatically means that there's no current * object, so the rest of the code below can be skipped. */ if (canvasPtr->pickEvent.type != LeaveNotify) { int x1, y1, x2, y2; double coords[2]; register Tk_Item *itemPtr; coords[0] = canvasPtr->pickEvent.xcrossing.x + canvasPtr->xOrigin; coords[1] = canvasPtr->pickEvent.xcrossing.y + canvasPtr->yOrigin; x1 = coords[0] - canvasPtr->closeEnough; y1 = coords[1] - canvasPtr->closeEnough; x2 = coords[0] + canvasPtr->closeEnough; y2 = coords[1] + canvasPtr->closeEnough; for (itemPtr = canvasPtr->firstItemPtr; itemPtr != NULL; itemPtr = itemPtr->nextPtr) { if ((itemPtr->x1 >= x2) || (itemPtr->x2 < x1) || (itemPtr->y1 >= y2) || (itemPtr->y2 < y1)) { continue; } if ((*itemPtr->typePtr->pointProc)(canvasPtr, itemPtr, coords) <= canvasPtr->closeEnough) { closestPtr = itemPtr; } } } /* * Simulate a LeaveNotify event on the previous current item and * an EnterNotify event on the new current item. Remove the "current" * tag from the previous current item and place it on the new current * item. */ if (closestPtr == canvasPtr->currentItemPtr) { return; } if (canvasPtr->currentItemPtr != NULL) { XEvent event; Tk_Item *itemPtr = canvasPtr->currentItemPtr; int i; event = canvasPtr->pickEvent; event.type = LeaveNotify; CanvasDoEvent(canvasPtr, &event); for (i = itemPtr->numTags-1; i >= 0; i--) { if (itemPtr->tagPtr[i] == currentUid) { itemPtr->tagPtr[i] = itemPtr->tagPtr[itemPtr->numTags-1]; itemPtr->numTags--; break; } } } canvasPtr->currentItemPtr = closestPtr; if (canvasPtr->currentItemPtr != NULL) { XEvent event; DoItem((Tcl_Interp *) NULL, closestPtr, currentUid); event = canvasPtr->pickEvent; event.type = EnterNotify; CanvasDoEvent(canvasPtr, &event); } } /* *-------------------------------------------------------------- * * CanvasDoEvent -- * * This procedure is called to invoke binding processing * for a new event that is associated with the current item * for a canvas. * * Results: * None. * * Side effects: * Depends on the bindings for the canvas. * *-------------------------------------------------------------- */ static void CanvasDoEvent(canvasPtr, eventPtr) Tk_Canvas *canvasPtr; /* Canvas widget in which event * occurred. */ XEvent *eventPtr; /* Real or simulated X event that * is to be processed. */ { #define NUM_STATIC 3 ClientData staticObjects[NUM_STATIC]; ClientData *objectPtr; int numObjects, i; register Tk_Item *itemPtr; if (canvasPtr->bindingTable == NULL) { return; } itemPtr = canvasPtr->currentItemPtr; if ((eventPtr->type == KeyPress) || (eventPtr->type == KeyRelease)) { itemPtr = canvasPtr->focusItemPtr; } if (itemPtr == NULL) { return; } /* * Set up an array with all the relevant objects for processing * this event. The relevant objects are (a) the event's item, * (b) the tags associated with the event's item, and (c) the * tag "all". If there are a lot of tags then malloc an array * to hold all of the objects. */ numObjects = itemPtr->numTags + 2; if (numObjects <= NUM_STATIC) { objectPtr = staticObjects; } else { objectPtr = (ClientData *) ckalloc((unsigned) (numObjects * sizeof(ClientData))); } objectPtr[0] = (ClientData) itemPtr; for (i = itemPtr->numTags-1; i >= 0; i--) { objectPtr[i+1] = (ClientData) itemPtr->tagPtr[i]; } objectPtr[itemPtr->numTags+1] = (ClientData) allUid; /* * Invoke the binding system, then free up the object array if * it was malloc-ed. */ Tk_BindEvent(canvasPtr->bindingTable, eventPtr, canvasPtr->tkwin, numObjects, objectPtr); if (objectPtr != staticObjects) { ckfree((char *) objectPtr); } } /* *---------------------------------------------------------------------- * * CanvasBlinkProc -- * * This procedure is called as a timer handler to blink the * insertion cursor off and on. * * Results: * None. * * Side effects: * The cursor gets turned on or off, redisplay gets invoked, * and this procedure reschedules itself. * *---------------------------------------------------------------------- */ static void CanvasBlinkProc(clientData) ClientData clientData; /* Pointer to record describing entry. */ { register Tk_Canvas *canvasPtr = (Tk_Canvas *) clientData; if (!(canvasPtr->flags & GOT_FOCUS) || (canvasPtr->cursorOffTime == 0)) { return; } if (canvasPtr->flags & CURSOR_ON) { canvasPtr->flags &= ~CURSOR_ON; canvasPtr->cursorBlinkHandler = Tk_CreateTimerHandler( canvasPtr->cursorOffTime, CanvasBlinkProc, (ClientData) canvasPtr); } else { canvasPtr->flags |= CURSOR_ON; canvasPtr->cursorBlinkHandler = Tk_CreateTimerHandler( canvasPtr->cursorOnTime, CanvasBlinkProc, (ClientData) canvasPtr); } if (canvasPtr->focusItemPtr != NULL) { EventuallyRedrawArea(canvasPtr, canvasPtr->focusItemPtr->x1, canvasPtr->focusItemPtr->y1, canvasPtr->focusItemPtr->x2, canvasPtr->focusItemPtr->y2); } } /* *---------------------------------------------------------------------- * * CanvasFocusProc -- * * This procedure is called whenever a canvas gets or loses the * input focus. It's also called whenever the window is * reconfigured while it has the focus. * * Results: * None. * * Side effects: * The cursor gets turned on or off. * *---------------------------------------------------------------------- */ static void CanvasFocusProc(clientData, gotFocus) ClientData clientData; /* Pointer to structure describing entry. */ int gotFocus; /* 1 means window is getting focus, 0 means * it's losing it. */ { register Tk_Canvas *canvasPtr = (Tk_Canvas *) clientData; Tk_DeleteTimerHandler(canvasPtr->cursorBlinkHandler); if (gotFocus) { canvasPtr->flags |= GOT_FOCUS | CURSOR_ON; if (canvasPtr->cursorOffTime != 0) { canvasPtr->cursorBlinkHandler = Tk_CreateTimerHandler( canvasPtr->cursorOnTime, CanvasBlinkProc, (ClientData) canvasPtr); } } else { canvasPtr->flags &= ~(GOT_FOCUS | CURSOR_ON); canvasPtr->cursorBlinkHandler = (Tk_TimerToken) NULL; } if (canvasPtr->focusItemPtr != NULL) { EventuallyRedrawArea(canvasPtr, canvasPtr->focusItemPtr->x1, canvasPtr->focusItemPtr->y1, canvasPtr->focusItemPtr->x2, canvasPtr->focusItemPtr->y2); } } /* *---------------------------------------------------------------------- * * CanvasSelectTo -- * * Modify the selection by moving its un-anchored end. This could * make the selection either larger or smaller. * * Results: * None. * * Side effects: * The selection changes. * *---------------------------------------------------------------------- */ static void CanvasSelectTo(canvasPtr, itemPtr, index) register Tk_Canvas *canvasPtr; /* Information about widget. */ register Tk_Item *itemPtr; /* Item that is to hold selection. */ int index; /* Index of element that is to * become the "other" end of the * selection. */ { int oldFirst, oldLast; Tk_Item *oldSelPtr; oldFirst = canvasPtr->selectFirst; oldLast = canvasPtr->selectLast; oldSelPtr = canvasPtr->selItemPtr; /* * Grab the selection if we don't own it already. */ if (canvasPtr->selItemPtr == NULL) { Tk_OwnSelection(canvasPtr->tkwin, CanvasLostSelection, (ClientData) canvasPtr); } else if (canvasPtr->selItemPtr != itemPtr) { EventuallyRedrawArea(canvasPtr, canvasPtr->selItemPtr->x1, canvasPtr->selItemPtr->y1, canvasPtr->selItemPtr->x2, canvasPtr->selItemPtr->y2); } canvasPtr->selItemPtr = itemPtr; if (canvasPtr->anchorItemPtr != itemPtr) { canvasPtr->anchorItemPtr = itemPtr; canvasPtr->selectAnchor = index; } if (canvasPtr->selectAnchor <= index) { canvasPtr->selectFirst = canvasPtr->selectAnchor; canvasPtr->selectLast = index; } else { canvasPtr->selectFirst = index; canvasPtr->selectLast = canvasPtr->selectAnchor - 1; } if ((canvasPtr->selectFirst != oldFirst) || (canvasPtr->selectLast != oldLast) || (itemPtr != oldSelPtr)) { EventuallyRedrawArea(canvasPtr, itemPtr->x1, itemPtr->y1, itemPtr->x2, itemPtr->y2); } } /* *-------------------------------------------------------------- * * CanvasFetchSelection -- * * This procedure is invoked by Tk to return part or all of * the selection, when the selection is in a canvas widget. * This procedure always returns the selection as a STRING. * * Results: * The return value is the number of non-NULL bytes stored * at buffer. Buffer is filled (or partially filled) with a * NULL-terminated string containing part or all of the selection, * as given by offset and maxBytes. * * Side effects: * None. * *-------------------------------------------------------------- */ static int CanvasFetchSelection(clientData, offset, buffer, maxBytes) ClientData clientData; /* Information about canvas widget. */ int offset; /* Offset within selection of first * character to be returned. */ char *buffer; /* Location in which to place * selection. */ int maxBytes; /* Maximum number of bytes to place * at buffer, not including terminating * NULL character. */ { register Tk_Canvas *canvasPtr = (Tk_Canvas *) clientData; if (canvasPtr->selItemPtr == NULL) { return -1; } if (canvasPtr->selItemPtr->typePtr->selectionProc == NULL) { return -1; } return (*canvasPtr->selItemPtr->typePtr->selectionProc)( canvasPtr, canvasPtr->selItemPtr, offset, buffer, maxBytes); } /* *---------------------------------------------------------------------- * * CanvasLostSelection -- * * This procedure is called back by Tk when the selection is * grabbed away from a canvas widget. * * Results: * None. * * Side effects: * The existing selection is unhighlighted, and the window is * marked as not containing a selection. * *---------------------------------------------------------------------- */ static void CanvasLostSelection(clientData) ClientData clientData; /* Information about entry widget. */ { Tk_Canvas *canvasPtr = (Tk_Canvas *) clientData; if (canvasPtr->selItemPtr != NULL) { EventuallyRedrawArea(canvasPtr, canvasPtr->selItemPtr->x1, canvasPtr->selItemPtr->y1, canvasPtr->selItemPtr->x2, canvasPtr->selItemPtr->y2); } canvasPtr->selItemPtr = NULL; } /* *-------------------------------------------------------------- * * TkGetCanvasCoord -- * * Given a string, returns a floating-point canvas coordinate * corresponding to that string. * * Results: * The return value is a standard Tcl return result. If * TCL_OK is returned, then everything went well and the * canvas coordinate is stored at *doublePtr; otherwise * TCL_ERROR is returned and an error message is left in * canvasPtr->interp->result. * * Side effects: * None. * *-------------------------------------------------------------- */ int TkGetCanvasCoord(canvasPtr, string, doublePtr) Tk_Canvas *canvasPtr; /* Canvas to which coordinate applies. */ char *string; /* Describes coordinate (any screen * coordinate form may be used here). */ double *doublePtr; /* Place to store converted coordinate. */ { if (Tk_GetScreenMM(canvasPtr->interp, canvasPtr->tkwin, string, doublePtr) != TCL_OK) { return TCL_ERROR; } *doublePtr *= canvasPtr->pixelsPerMM; return TCL_OK; } /* *-------------------------------------------------------------- * * GridAlign -- * * Given a coordinate and a grid spacing, this procedure * computes the location of the nearest grid line to the * coordinate. * * Results: * The return value is the location of the grid line nearest * to coord. * * Side effects: * None. * *-------------------------------------------------------------- */ static double GridAlign(coord, spacing) double coord; /* Coordinate to grid-align. */ double spacing; /* Spacing between grid lines. If <= 0 * then no alignment is done. */ { if (spacing <= 0.0) { return coord; } if (coord < 0) { return -((int) ((-coord)/spacing + 0.5)) * spacing; } return ((int) (coord/spacing + 0.5)) * spacing; } /* *-------------------------------------------------------------- * * CanvasUpdateScrollbars -- * * This procedure is invoked whenever a canvas has changed in * a way that requires scrollbars to be redisplayed (e.g. the * view in the canvas has changed). * * Results: * None. * * Side effects: * If there are scrollbars associated with the canvas, then * their scrolling commands are invoked to cause them to * redisplay. If errors occur, additional Tcl commands may * be invoked to process the errors. * *-------------------------------------------------------------- */ static void CanvasUpdateScrollbars(canvasPtr) register Tk_Canvas *canvasPtr; /* Information about canvas. */ { int result, size, first, last, page; char args[200]; #define ROUND(number) \ if (number >= 0) { \ number = (number + canvasPtr->scrollIncrement/2) \ /canvasPtr->scrollIncrement; \ } else { \ number = -(((-number) + canvasPtr->scrollIncrement/2) \ /canvasPtr->scrollIncrement); \ } canvasPtr->flags &= ~UPDATE_SCROLLBARS; if (canvasPtr->xScrollCmd != NULL) { size = ((canvasPtr->scrollX2 - canvasPtr->scrollX1) /canvasPtr->scrollIncrement) + 1; first = canvasPtr->xOrigin - canvasPtr->scrollX1; ROUND(first); last = canvasPtr->xOrigin + Tk_Width(canvasPtr->tkwin) - 1 - canvasPtr->scrollX1; ROUND(last); page = last - first - 1; if (page <= 0) { page = 1; } sprintf(args, " %d %d %d %d", size, page, first, last); result = Tcl_VarEval(canvasPtr->interp, canvasPtr->xScrollCmd, args, (char *) NULL); if (result != TCL_OK) { TkBindError(canvasPtr->interp); } Tcl_ResetResult(canvasPtr->interp); } if (canvasPtr->yScrollCmd != NULL) { size = ((canvasPtr->scrollY2 - canvasPtr->scrollY1) /canvasPtr->scrollIncrement) + 1; first = canvasPtr->yOrigin - canvasPtr->scrollY1; ROUND(first); last = canvasPtr->yOrigin + Tk_Height(canvasPtr->tkwin) - 1 - canvasPtr->scrollY1; ROUND(last); page = last - first - 1; if (page <= 0) { page = 1; } sprintf(args, " %d %d %d %d", size, page, first, last); result = Tcl_VarEval(canvasPtr->interp, canvasPtr->yScrollCmd, args, (char *) NULL); if (result != TCL_OK) { TkBindError(canvasPtr->interp); } Tcl_ResetResult(canvasPtr->interp); } } /* *-------------------------------------------------------------- * * CanvasSetOrigin -- * * This procedure is invoked to change the mapping between * canvas coordinates and screen coordinates in the canvas * window. * * Results: * None. * * Side effects: * The canvas will be redisplayed to reflect the change in * view. In addition, scrollbars will be updated if there * are any. * *-------------------------------------------------------------- */ static void CanvasSetOrigin(canvasPtr, xOrigin, yOrigin) register Tk_Canvas *canvasPtr; /* Information about canvas. */ int xOrigin; /* New X origin for canvas (canvas * x-coord corresponding to left edge * of canvas window). */ int yOrigin; /* New Y origin for canvas (canvas * y-coord corresponding to top edge * of canvas window). */ { /* * Adjust the origin if necessary to keep as much as possible of the * canvas in the view. */ if ((canvasPtr->confine) && (canvasPtr->regionString != NULL)) { int windowWidth, windowHeight, canvasWidth, canvasHeight; windowWidth = Tk_Width(canvasPtr->tkwin); windowHeight = Tk_Height(canvasPtr->tkwin); canvasWidth = canvasPtr->scrollX2 - canvasPtr->scrollX1; canvasHeight = canvasPtr->scrollY2 - canvasPtr->scrollY1; if (canvasWidth < windowWidth) { xOrigin = (canvasPtr->scrollX1) - (windowWidth-canvasWidth)/2; } else if (xOrigin < canvasPtr->scrollX1) { xOrigin = canvasPtr->scrollX1; } else if (xOrigin > (canvasPtr->scrollX2 - windowWidth)) { xOrigin = canvasPtr->scrollX2 - windowWidth; } if (canvasHeight < windowHeight) { yOrigin = (canvasPtr->scrollY1) - (windowHeight-canvasHeight)/2; } else if (yOrigin < canvasPtr->scrollY1) { yOrigin = canvasPtr->scrollY1; } else if (yOrigin > (canvasPtr->scrollY2 - windowHeight)) { yOrigin = canvasPtr->scrollY2 - windowHeight; } } if ((xOrigin == canvasPtr->xOrigin) && (yOrigin == canvasPtr->yOrigin)) { return; } /* * Tricky point: must redisplay not only everything that's visible * in the window's final configuration, but also everything that was * visible in the initial configuration. This is needed because some * item types, like windows, need to know when they move off-screen * so they can explicitly undisplay themselves. */ EventuallyRedrawArea(canvasPtr, canvasPtr->xOrigin, canvasPtr->yOrigin, canvasPtr->xOrigin + Tk_Width(canvasPtr->tkwin), canvasPtr->yOrigin + Tk_Height(canvasPtr->tkwin)); canvasPtr->xOrigin = xOrigin; canvasPtr->yOrigin = yOrigin; canvasPtr->flags |= UPDATE_SCROLLBARS; EventuallyRedrawArea(canvasPtr, canvasPtr->xOrigin, canvasPtr->yOrigin, canvasPtr->xOrigin + Tk_Width(canvasPtr->tkwin), canvasPtr->yOrigin + Tk_Height(canvasPtr->tkwin)); } /* *-------------------------------------------------------------- * * CanvasTagsParseProc -- * * This procedure is invoked during option processing to handle * "-tags" options for canvas items. * * Results: * A standard Tcl return value. * * Side effects: * The tags for a given item get replaced by those indicated * in the value argument. * *-------------------------------------------------------------- */ /* ARGSUSED */ static int CanvasTagsParseProc(clientData, interp, tkwin, value, widgRec, offset) ClientData clientData; /* Not used.*/ Tcl_Interp *interp; /* Used for reporting errors. */ Tk_Window tkwin; /* Window containing canvas widget. */ char *value; /* Value of option (list of tag * names). */ char *widgRec; /* Pointer to record for item. */ int offset; /* Offset into item (ignored). */ { register Tk_Item *itemPtr = (Tk_Item *) widgRec; int argc, i; char **argv; Tk_Uid *newPtr; /* * Break the value up into the individual tag names. */ if (Tcl_SplitList(interp, value, &argc, &argv) != TCL_OK) { return TCL_ERROR; } /* * Make sure that there's enough space in the item to hold the * tag names. */ if (itemPtr->tagSpace < argc) { newPtr = (Tk_Uid *) ckalloc((unsigned) (argc * sizeof(Tk_Uid))); for (i = itemPtr->numTags-1; i >= 0; i--) { newPtr[i] = itemPtr->tagPtr[i]; } if (itemPtr->tagPtr != itemPtr->staticTagSpace) { ckfree((char *) itemPtr->tagPtr); } itemPtr->tagPtr = newPtr; itemPtr->tagSpace = argc; } itemPtr->numTags = argc; for (i = 0; i < argc; i++) { itemPtr->tagPtr[i] = Tk_GetUid(argv[i]); } ckfree((char *) argv); return TCL_OK; } /* *-------------------------------------------------------------- * * CanvasTagsPrintProc -- * * This procedure is invoked by the Tk configuration code * to produce a printable string for the "-tags" configuration * option for canvas items. * * Results: * The return value is a string describing all the tags for * the item referred to by "widgRec". In addition, *freeProcPtr * is filled in with the address of a procedure to call to free * the result string when it's no longer needed (or NULL to * indicate that the string doesn't need to be freed). * * Side effects: * None. * *-------------------------------------------------------------- */ /* ARGSUSED */ static char * CanvasTagsPrintProc(clientData, tkwin, widgRec, offset, freeProcPtr) ClientData clientData; /* Ignored. */ Tk_Window tkwin; /* Window containing canvas widget. */ char *widgRec; /* Pointer to record for item. */ int offset; /* Ignored. */ Tcl_FreeProc **freeProcPtr; /* Pointer to variable to fill in with * information about how to reclaim * storage for return string. */ { register Tk_Item *itemPtr = (Tk_Item *) widgRec; if (itemPtr->numTags == 0) { *freeProcPtr = (Tcl_FreeProc *) NULL; return ""; } if (itemPtr->numTags == 1) { *freeProcPtr = (Tcl_FreeProc *) NULL; return (char *) itemPtr->tagPtr[0]; } *freeProcPtr = (Tcl_FreeProc *) free; return Tcl_Merge(itemPtr->numTags, (char **) itemPtr->tagPtr); } micropolis-activity/src/tk/tkcolor.c0000664000076400007640000003660710724145723020075 0ustar simcitysimcity/* * tkColor.c -- * * This file maintains a database of color values for the Tk * toolkit, in order to avoid round-trips to the server to * map color names to pixel values. * * Copyright 1990 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkColor.c,v 1.15 92/07/14 08:44:49 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include "tkconfig.h" #include "tk.h" /* * A two-level data structure is used to manage the color database. * The top level consists of one entry for each color name that is * currently active, and the bottom level contains one entry for each * pixel value that is still in use. The distinction between * levels is necessary because the same pixel may have several * different names. There are two hash tables, one used to index into * each of the data structures. The name hash table is used when * allocating colors, and the pixel hash table is used when freeing * colors. */ /* * One of the following data structures is used to keep track of * each color that this module has allocated from the X display * server. These entries are indexed by two hash tables defined * below: nameTable and valueTable. */ #define COLOR_MAGIC 0xc6140277 typedef struct TkColor { XColor color; /* Information about this color. */ int magic; /* Used for quick integrity check on this * structure. Must always have the * value COLOR_MAGIC. */ Screen *screen; /* Screen where this color is valid. Used * to delete it. */ Colormap colormap; /* Colormap from which this entry was * allocated. */ int refCount; /* Number of uses of this structure. */ Tcl_HashTable *tablePtr; /* Hash table that indexes this structure * (needed when deleting structure). */ Tcl_HashEntry *hashPtr; /* Pointer to hash table entry for this * structure. (for use in deleting entry). */ } TkColor; typedef struct VisInfo { Visual *visual; Screen *screen; Colormap colormap; int depth; Pixmap pixmap; GC gc; } VisInfo; /* * Hash table for name -> TkColor mapping, and key structure used to * index into that table: */ static Tcl_HashTable nameTable; typedef struct { Tk_Uid name; /* Name of desired color. */ Colormap colormap; /* Colormap from which color will be * allocated. */ Display *display; /* Display for colormap. */ } NameKey; /* * Hash table for value -> TkColor mapping, and key structure used to * index into that table: */ static Tcl_HashTable valueTable; typedef struct { int red, green, blue; /* Values for desired color. */ Colormap colormap; /* Colormap from which color will be * allocated. */ Display *display; /* Display for colormap. */ } ValueKey; /* * Global colormap creation flag */ char *TK_CreateColormap = 0; /* * Hash table for screen -> VisInfo mapping, and key structure used to * index into that table: */ static Tcl_HashTable screenTable; static int initialized = 0; /* 0 means static structures haven't been * initialized yet. */ /* * Forward declarations for procedures defined in this file: */ static void ColorInit _ANSI_ARGS_((void)); /* *---------------------------------------------------------------------- * * Tk_GetColor -- * * Given a string name for a color, map the name to a corresponding * XColor structure. * * Results: * The return value is a pointer to an XColor structure that * indicates the red, blue, and green intensities for the color * given by "name", and also specifies a pixel value to use to * draw in that color in window "tkwin". If an error occurs, * then NULL is returned and an error message will be left in * interp->result. * * Side effects: * The color is added to an internal database with a reference count. * For each call to this procedure, there should eventually be a call * to Tk_FreeColor, so that the database is cleaned up when colors * aren't in use anymore. * *---------------------------------------------------------------------- */ XColor * Tk_GetColor(interp, tkwin, colormap, name) Tcl_Interp *interp; /* Place to leave error message if * color can't be found. */ Tk_Window tkwin; /* Window in which color will be used. */ Colormap colormap; /* Map from which to allocate color. None * means use default. */ Tk_Uid name; /* Name of color to allocated (in form * suitable for passing to XParseColor). */ { NameKey nameKey; Tcl_HashEntry *nameHashPtr; int new; TkColor *tkColPtr; XColor color; if (!initialized) { ColorInit(); } /* * First, check to see if there's already a mapping for this color * name. */ nameKey.name = name; if (colormap == None) { colormap = Tk_DefaultColormap(Tk_Screen(tkwin)); } nameKey.colormap = colormap; nameKey.display = Tk_Display(tkwin); nameHashPtr = Tcl_CreateHashEntry(&nameTable, (char *) &nameKey, &new); if (!new) { tkColPtr = (TkColor *) Tcl_GetHashValue(nameHashPtr); tkColPtr->refCount++; return &tkColPtr->color; } /* * The name isn't currently known. Map from the name to a pixel * value. Be tricky here, and call XAllocNamedColor instead of * XParseColor for non-# names: this saves a server round-trip * for those names. */ if (*name != '#') { XColor screen; if (XAllocNamedColor(Tk_Display(tkwin), colormap, name, &screen, &color) == 0) { allocFailed: Tcl_AppendResult(interp, "couldn't allocate a color for \"", name, "\"", (char *) NULL); Tcl_DeleteHashEntry(nameHashPtr); return (XColor *) NULL; } } else { if (XParseColor(Tk_Display(tkwin), colormap, name, &color) == 0) { Tcl_AppendResult(interp, "invalid color name \"", name, "\"", (char *) NULL); Tcl_DeleteHashEntry(nameHashPtr); return (XColor *) NULL; } if (XAllocColor(Tk_Display(tkwin), colormap, &color) == 0) { goto allocFailed; } } /* * Now create a new TkColor structure and add it to nameTable. */ tkColPtr = (TkColor *) ckalloc(sizeof(TkColor)); tkColPtr->color = color; tkColPtr->magic = COLOR_MAGIC; tkColPtr->screen = Tk_Screen(tkwin); tkColPtr->colormap = colormap; tkColPtr->refCount = 1; tkColPtr->tablePtr = &nameTable; tkColPtr->hashPtr = nameHashPtr; Tcl_SetHashValue(nameHashPtr, tkColPtr); return &tkColPtr->color; } /* *---------------------------------------------------------------------- * * Tk_GetColorByValue -- * * Given a desired set of red-green-blue intensities for a color, * locate a pixel value to use to draw that color in a given * window. * * Results: * The return value is a pointer to an XColor structure that * indicates the closest red, blue, and green intensities available * to those specified in colorPtr, and also specifies a pixel * value to use to draw in that color in window "tkwin". If an * error occurs, then NULL is returned and an error message will * be left in interp->result. * * Side effects: * The color is added to an internal database with a reference count. * For each call to this procedure, there should eventually be a call * to Tk_FreeColor, so that the database is cleaned up when colors * aren't in use anymore. * *---------------------------------------------------------------------- */ XColor * Tk_GetColorByValue(interp, tkwin, colormap, colorPtr) Tcl_Interp *interp; /* Place to leave error message if * color can't be found. */ Tk_Window tkwin; /* Window in which color will be used. */ Colormap colormap; /* Map from which to allocate color. None * means use default. */ XColor *colorPtr; /* Red, green, and blue fields indicate * desired color. */ { ValueKey valueKey; Tcl_HashEntry *valueHashPtr; int new; TkColor *tkColPtr; if (!initialized) { ColorInit(); } /* * First, check to see if there's already a mapping for this color * name. */ valueKey.red = colorPtr->red; valueKey.green = colorPtr->green; valueKey.blue = colorPtr->blue; if (colormap == None) { colormap = Tk_DefaultColormap(Tk_Screen(tkwin)); } valueKey.colormap = colormap; valueKey.display = Tk_Display(tkwin); valueHashPtr = Tcl_CreateHashEntry(&valueTable, (char *) &valueKey, &new); if (!new) { tkColPtr = (TkColor *) Tcl_GetHashValue(valueHashPtr); tkColPtr->refCount++; return &tkColPtr->color; } /* * The name isn't currently known. Find a pixel value for this * color and add a new structure to valueTable. */ tkColPtr = (TkColor *) ckalloc(sizeof(TkColor)); tkColPtr->color.red = valueKey.red; tkColPtr->color.green = valueKey.green; tkColPtr->color.blue = valueKey.blue; if (XAllocColor(Tk_Display(tkwin), colormap, &tkColPtr->color) == 0) { sprintf(interp->result, "couldn't allocate color"); Tcl_DeleteHashEntry(valueHashPtr); ckfree((char *) tkColPtr); return (XColor *) NULL; } tkColPtr->magic = COLOR_MAGIC; tkColPtr->screen = Tk_Screen(tkwin); tkColPtr->colormap = colormap; tkColPtr->refCount = 1; tkColPtr->tablePtr = &valueTable; tkColPtr->hashPtr = valueHashPtr; Tcl_SetHashValue(valueHashPtr, tkColPtr); return &tkColPtr->color; } /* *-------------------------------------------------------------- * * Tk_NameOfColor -- * * Given a color, return a textual string identifying * the color. * * Results: * If colorPtr was created by Tk_GetColor, then the return * value is the "string" that was used to create it. * Otherwise the return value is a string that could have * been passed to Tk_GetColor to allocate that color. The * storage for the returned string is only guaranteed to * persist up until the next call to this procedure. * * Side effects: * None. * *-------------------------------------------------------------- */ char * Tk_NameOfColor(colorPtr) XColor *colorPtr; /* Color whose name is desired. */ { register TkColor *tkColPtr = (TkColor *) colorPtr; static char string[20]; if ((tkColPtr->magic == COLOR_MAGIC) && (tkColPtr->tablePtr == &nameTable)) { return ((NameKey *) tkColPtr->hashPtr->key.words)->name; } sprintf(string, "#%4x%4x%4x", colorPtr->red, colorPtr->green, colorPtr->blue); return string; } /* *---------------------------------------------------------------------- * * Tk_FreeColor -- * * This procedure is called to release a color allocated by * Tk_GetColor. * * Results: * None. * * Side effects: * The reference count associated with colorPtr is deleted, and * the color is released to X if there are no remaining uses * for it. * *---------------------------------------------------------------------- */ void Tk_FreeColor(colorPtr) XColor *colorPtr; /* Color to be released. Must have been * allocated by Tk_GetColor or * Tk_GetColorByValue. */ { register TkColor *tkColPtr = (TkColor *) colorPtr; Visual *visual; Screen *screen = tkColPtr->screen; /* * Do a quick sanity check to make sure this color was really * allocated by Tk_GetColor. */ if (tkColPtr->magic != COLOR_MAGIC) { panic("Tk_FreeColor called with bogus color"); } tkColPtr->refCount--; if (tkColPtr->refCount == 0) { /* * Careful! Don't free black or white, since this will * make some servers very unhappy. */ visual = Tk_DefaultVisual(screen); if ((visual->class != StaticGray) && (visual->class != StaticColor) && (tkColPtr->color.pixel != BlackPixelOfScreen(screen)) && (tkColPtr->color.pixel != WhitePixelOfScreen(screen))) { XFreeColors(DisplayOfScreen(screen), tkColPtr->colormap, &tkColPtr->color.pixel, 1, 0L); } Tcl_DeleteHashEntry(tkColPtr->hashPtr); tkColPtr->magic = 0; ckfree((char *) tkColPtr); } } /* *---------------------------------------------------------------------- * * ColorInit -- * * Initialize the structure used for color management. * * Results: * None. * * Side effects: * Read the code. * *---------------------------------------------------------------------- */ static void ColorInit() { initialized = 1; Tcl_InitHashTable(&nameTable, sizeof(NameKey)/sizeof(int)); Tcl_InitHashTable(&valueTable, sizeof(ValueKey)/sizeof(int)); Tcl_InitHashTable(&screenTable, TCL_ONE_WORD_KEYS); } int Tk_IndexOfScreen(Screen *screen) { Display *dpy = DisplayOfScreen(screen); int i, nscreens = ScreenCount(dpy); for (i = 0; i < nscreens; i++) { if (screen == ScreenOfDisplay(dpy, i)) return (i); } return (DefaultScreen(dpy)); } VisInfo * Tk_VisInfo(Screen *screen) { Tcl_HashEntry *hashPtr; VisInfo *info; XVisualInfo vTemplate; XVisualInfo *visualList; Visual *visual; XGCValues values; int visualsMatched, scrnum, new; if (!initialized) { ColorInit(); } hashPtr = Tcl_CreateHashEntry(&screenTable, (char *) screen, &new); if (!new) { info = (VisInfo *) Tcl_GetHashValue(hashPtr); } else { info = (VisInfo *) ckalloc(sizeof(VisInfo)); info->screen = screen; /* Workaround to support non-default visuals */ #if 0 info->visual = XDefaultVisualOfScreen(screen); info->depth = XDefaultDepthOfScreen(screen); info->colormap = XDefaultColormapOfScreen(screen); info->gc = DefaultGCOfScreen(screen); #else scrnum = Tk_IndexOfScreen(screen); vTemplate.screen = scrnum; vTemplate.depth = 8; vTemplate.class = PseudoColor; visualList = XGetVisualInfo(DisplayOfScreen(screen), VisualScreenMask | VisualDepthMask | VisualClassMask, &vTemplate, &visualsMatched); if (visualsMatched > 0) { info->visual = visualList[0].visual; info->depth = 8; info->pixmap = XCreatePixmap(screen->display, RootWindowOfScreen(screen), 1, 1, 8); //fprintf(stderr, "TK_CreateColormap %d\n", TK_CreateColormap); if ((TK_CreateColormap == 0) && (info->visual == DefaultVisualOfScreen(screen))) { info->colormap = DefaultColormapOfScreen(screen); info->gc = DefaultGCOfScreen(screen); } else { info->colormap = XCreateColormap(screen->display, RootWindowOfScreen(screen), info->visual, AllocNone); info->gc = XCreateGC(screen->display, info->pixmap, 0, &values); } } else { info->visual = XDefaultVisualOfScreen(screen); info->depth = XDefaultDepthOfScreen(screen); info->pixmap = XCreatePixmap(screen->display, RootWindowOfScreen(screen), 1, 1, info->depth); info->colormap = XDefaultColormapOfScreen(screen); info->gc = DefaultGCOfScreen(screen); } XFree((char *)visualList); #endif Tcl_SetHashValue(hashPtr, info); } return (info); } int Tk_DefaultDepth(Screen *screen) { return (Tk_VisInfo(screen)->depth); } Visual * Tk_DefaultVisual(Screen *screen) { return (Tk_VisInfo(screen)->visual); } Colormap Tk_DefaultColormap(Screen *screen) { return (Tk_VisInfo(screen)->colormap); } Window Tk_DefaultRootWindow(Display *dpy) { return (DefaultRootWindow(dpy)); } GC Tk_DefaultGC(Screen *screen) { return (Tk_VisInfo(screen)->gc); } Pixmap Tk_DefaultPixmap(Screen *screen) { return (Tk_VisInfo(screen)->pixmap); } micropolis-activity/src/tk/tkerror.c0000664000076400007640000002117010724145723020075 0ustar simcitysimcity/* * tkError.c -- * * This file provides a high-performance mechanism for * selectively dealing with errors that occur in talking * to the X server. This is useful, for example, when * communicating with a window that may not exist. * * Copyright 1990 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkError.c,v 1.10 92/04/12 17:02:08 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tkconfig.h" #include "tkint.h" static initialized = 0; /* * Forward references to procedures declared later in this file: */ static int ErrorProc _ANSI_ARGS_((Display *display, XErrorEvent *errEventPtr)); /* *-------------------------------------------------------------- * * Tk_CreateErrorHandler -- * * Arrange for all a given procedure to be invoked whenever * certain errors occur. * * Results: * The return value is a token identifying the handler; * it must be passed to Tk_DeleteErrorHandler to delete the * handler. * * Side effects: * If an X error occurs that matches the error, request, * and minor arguments, then errorProc will be invoked. * ErrorProc should have the following structure: * * int * errorProc(clientData, errorEventPtr) * caddr_t clientData; * XErrorEvent *errorEventPtr; * { * } * * The clientData argument will be the same as the clientData * argument to this procedure, and errorEvent will describe * the error. If errorProc returns 0, it means that it * completely "handled" the error: no further processing * should be done. If errorProc returns 1, it means that it * didn't know how to deal with the error, so we should look * for other error handlers, or invoke the default error * handler if no other handler returns zero. Handlers are * invoked in order of age: youngest handler first. * * Note: errorProc will only be called for errors associated * with X requests made AFTER this call, but BEFORE the handler * is deleted by calling Tk_DeleteErrorHandler. * *-------------------------------------------------------------- */ Tk_ErrorHandler Tk_CreateErrorHandler(display, error, request, minorCode, errorProc, clientData) Display *display; /* Display for which to handle * errors. */ int error; /* Consider only errors with this * error_code (-1 means consider * all errors). */ int request; /* Consider only errors with this * major request code (-1 means * consider all major codes). */ int minorCode; /* Consider only errors with this * minor request code (-1 means * consider all minor codes). */ Tk_ErrorProc *errorProc; /* Procedure to invoke when a * matching error occurs. NULL means * just ignore matching errors. */ ClientData clientData; /* Arbitrary value to pass to * errorProc. */ { register TkErrorHandler *errorPtr; register TkDisplay *dispPtr; /* * Make sure that X calls us whenever errors occur. */ if (!initialized) { XSetErrorHandler(ErrorProc); initialized = 1; } /* * Find the display. If Tk doesn't know about this display, * it's an error: panic. */ for (dispPtr = tkDisplayList; ; dispPtr = dispPtr->nextPtr) { if (dispPtr->display == display) { break; } if (dispPtr == NULL) { panic("Unknown display passed to Tk_CreateErrorHandler"); } } /* * Create the handler record. */ errorPtr = (TkErrorHandler *) ckalloc(sizeof(TkErrorHandler)); errorPtr->dispPtr = dispPtr; errorPtr->firstRequest = NextRequest(display); errorPtr->lastRequest = -1; errorPtr->error = error; errorPtr->request = request; errorPtr->minorCode = minorCode; errorPtr->errorProc = errorProc; errorPtr->clientData = clientData; errorPtr->nextPtr = dispPtr->errorPtr; dispPtr->errorPtr = errorPtr; return (Tk_ErrorHandler) errorPtr; } /* *-------------------------------------------------------------- * * Tk_DeleteErrorHandler -- * * Do not use an error handler anymore. * * Results: * None. * * Side effects: * The handler denoted by the "handler" argument will not * be invoked for any X errors associated with requests * made after this call. However, if errors arrive later * for requests made BEFORE this call, then the handler * will still be invoked. Call XSync if you want to be * sure that all outstanding errors have been received * and processed. * *-------------------------------------------------------------- */ void Tk_DeleteErrorHandler(handler) Tk_ErrorHandler handler; /* Token for handler to delete; * was previous return value from * Tk_CreateErrorHandler. */ { register TkErrorHandler *errorPtr = (TkErrorHandler *) handler; register TkDisplay *dispPtr = errorPtr->dispPtr; errorPtr->lastRequest = NextRequest(dispPtr->display) - 1; /* * Every once-in-a-while, cleanup handlers that are no longer * active. We probably won't be able to free the handler that * was just deleted (need to wait for any outstanding requests to * be processed by server), but there may be previously-deleted * handlers that are now ready for garbage collection. To reduce * the cost of the cleanup, let a few dead handlers pile up, then * clean them all at once. This adds a bit of overhead to errors * that might occur while the dead handlers are hanging around, * but reduces the overhead of scanning the list to clean up * (particularly if there are many handlers that stay around * forever). */ dispPtr->deleteCount += 1; if (dispPtr->deleteCount >= 10) { register TkErrorHandler *prevPtr; TkErrorHandler *nextPtr; int lastSerial; dispPtr->deleteCount = 0; lastSerial = LastKnownRequestProcessed(dispPtr->display); errorPtr = dispPtr->errorPtr; for (errorPtr = dispPtr->errorPtr, prevPtr = NULL; errorPtr != NULL; errorPtr = nextPtr) { nextPtr = errorPtr->nextPtr; if ((errorPtr->lastRequest != -1) && (errorPtr->lastRequest <= lastSerial)) { if (prevPtr == NULL) { dispPtr->errorPtr = nextPtr; } else { prevPtr->nextPtr = nextPtr; } ckfree((char *) errorPtr); continue; } prevPtr = errorPtr; } } } /* *-------------------------------------------------------------- * * ErrorProc -- * * This procedure is invoked by the X system when error * events arrive. * * Results: * If it returns, the return value is zero. However, * it is possible that one of the error handlers may * just exit. * * Side effects: * This procedure does two things. First, it uses the * serial # in the error event to eliminate handlers whose * expiration serials are now in the past. Second, it * invokes any handlers that want to deal with the error. * *-------------------------------------------------------------- */ static int ErrorProc(display, errEventPtr) Display *display; /* Display for which error * occurred. */ register XErrorEvent *errEventPtr; /* Information about error. */ { register TkDisplay *dispPtr; register TkErrorHandler *errorPtr; extern int _XDefaultError(); /* * See if we know anything about the display. If not, then * invoke the default error handler. */ for (dispPtr = tkDisplayList; ; dispPtr = dispPtr->nextPtr) { if (dispPtr == NULL) { goto couldntHandle; } if (dispPtr->display == display) { break; } } /* * Otherwise invoke any relevant handlers for the error, in order. */ for (errorPtr = dispPtr->errorPtr; errorPtr != NULL; errorPtr = errorPtr->nextPtr) { if ((errorPtr->firstRequest > errEventPtr->serial) || ((errorPtr->error != -1) && (errorPtr->error != errEventPtr->error_code)) || ((errorPtr->request != -1) && (errorPtr->request != errEventPtr->request_code)) || ((errorPtr->minorCode != -1) && (errorPtr->minorCode != errEventPtr->minor_code)) || ((errorPtr->lastRequest != -1) && (errorPtr->lastRequest < errEventPtr->serial))) { continue; } if (errorPtr->errorProc == NULL) { return 0; } else { if ((*errorPtr->errorProc)(errorPtr->clientData, errEventPtr) == 0) { return 0; } } } /* * We couldn't handle the error. Use the default handler. */ couldntHandle: return _XDefaultError(display, errEventPtr); } micropolis-activity/src/tk/tkwm.c0000664000076400007640000021504510724145723017375 0ustar simcitysimcity/* * tkWm.c -- * * This module takes care of the interactions between a Tk-based * application and the window manager. Among other things, it * implements the "wm" command and passes geometry information * to the window manager. * * Copyright 1991 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkWm.c,v 1.32 92/08/21 16:26:31 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tkconfig.h" #include "tkint.h" #include "tkwm.h" /* * The definitions below compensate for the lack of some definitions * under X11R3. */ #ifdef X11R3 #define PBaseSize (1L<<8) #endif /* * A data structure of the following type holds window-manager-related * information for each top-level window in an application. */ typedef struct TkWmInfo { TkWindow *winPtr; /* Pointer to main Tk information for * this window. */ Window reparent; /* If the window has been reparented, this * gives the ID of the ancestor of the window * that is a child of the root window (may * not be window's immediate parent). If * the window isn't reparented, this has the * value None. */ Tk_Uid titleUid; /* Title to display in window caption. If * NULL, use name of widget. */ Tk_Uid iconName; /* Name to display in icon. */ Window master; /* Master window for TRANSIENT_FOR property, * or None. */ XWMHints hints; /* Various pieces of information for * window manager. */ Tk_Uid leaderName; /* Path name of leader of window group * (corresponds to hints.window_group). * Note: this field doesn't get updated * if leader is destroyed. */ Tk_Uid iconWindowName; /* Path name of window specified as icon * window for this window, or NULL. Note: * this field doesn't get updated if * iconWindowName is destroyed. */ Tk_Uid masterWindowName; /* Path name of window specified as master * in "wm transient" command, or NULL. * Note: this field doesn't get updated if * masterWindowName is destroyed. */ /* * Information used to construct an XSizeHints structure for * the window manager: */ int sizeHintsFlags; /* Flags word for XSizeHints structure. * If the PBaseSize flag is set then the * window is gridded; otherwise it isn't * gridded. */ int minWidth, minHeight; /* Minimum dimensions of window, in * grid units, not pixels. */ int maxWidth, maxHeight; /* Maximum dimensions of window, in * grid units, not pixels. */ int widthInc, heightInc; /* Increments for size changes (# pixels * per step). */ struct { int x; /* numerator */ int y; /* denominator */ } minAspect, maxAspect; /* Min/max aspect ratios for window. */ int reqGridWidth, reqGridHeight; /* The dimensions of the window (in * grid units) requested through * the geometry manager. */ int gravity; /* Desired window gravity. */ /* * Information used to manage the size and location of a window. */ int prevReqWidth, prevReqHeight; /* Last known size preferences, as specified * to Tk_GeometryRequest. Used to tell when * the preferred dimensions have changed. */ int width, height; /* Desired dimensions of window, specified * in grid units. These values are * set by the "wm geometry" command and by * ConfigureNotify events (for when wm * resizes window). -1 means user hasn't * requested dimensions. */ int x, y; /* Desired X and Y coordinates for window. * These values are set by "wm geometry", * plus by ConfigureNotify events (when wm * moves window). These numbers are * different than the numbers stored in * winPtr->changes because (a) they could be * measured from the right or bottom edge * of the screen (see WM_NEGATIVE_X and * WM_NEGATIVE_Y flags) and (b) if the window * has been reparented then they refer to the * parent rather than the window itself. */ int parentWidth, parentHeight; /* Width and height of reparent, in pixels * *including border*. If window hasn't been * reparented then these will be the outer * dimensions of the window, including * border. */ int xInParent, yInParent; /* Offset of window within reparent, measured * from upper-left outer corner of parent's * border. If not reparented then these are * zero. */ unsigned long configRequest;/* Serial number of last request that we * issued to change geometry of window. * Used to discard configure events that * we know will be superceded. */ int configWidth, configHeight; /* Dimensions passed to last request that we * issued to change geometry of window. Used * to eliminate redundant resize operations. */ int flags; /* Miscellaneous flags, defined below. */ char *deleteCmd; /* Command to execute when a WM_DELETE_WINDOW * ICCCM ClientMessage arrives for this window. * * If it is the empty string "" or has never * been set (is char *)NULL) via the "wm" tcl * command the window is destroyed. * * If it is a non-empty string, the name of * the window is appended on to the end * of the string and it is executed * within the interpreter associated with * the top level window. */ struct TkWmInfo *nextPtr; /* Next in list of all top-level windows. */ } WmInfo; /* * Flag values for WmInfo structures: * * WM_NEVER_MAPPED - non-zero means window has never been * mapped; need to update all info when * window is first mapped. * WM_UPDATE_PENDING - non-zero means a call to UpdateGeometryInfo * has already been scheduled for this * window; no need to schedule another one. * WM_NEGATIVE_X - non-zero means x-coordinate is measured in * pixels from right edge of screen, rather * than from left edge. * WM_NEGATIVE_Y - non-zero means y-coordinate is measured in * pixels up from bottom of screen, rather than * down from top. * WM_UPDATE_SIZE_HINTS - non-zero means that new size hints need to be * propagated to window manager. * WM_NESTED_REPARENT - non-zero means that the window has been * reparented several levels deep in a hierarchy * (i.e. reparent isn't the window's immediate * parent). * WM_CONFIG_PENDING - non-zero means we've asked for the top-level * window to be resized but haven't seen a * ConfigureNotify event to indicate that the * resize occurred. * WM_CONFIG_AGAIN - non-zero means we need to reconfigure the * window again as soon as the current configure * request has been processed by the window * manager. * WM_FULL_SCREEN - non-zero means that the window is in full screen mode. */ #define WM_NEVER_MAPPED 1 #define WM_UPDATE_PENDING 2 #define WM_NEGATIVE_X 4 #define WM_NEGATIVE_Y 8 #define WM_UPDATE_SIZE_HINTS 0x10 #define WM_NESTED_REPARENT 0x20 #define WM_CONFIG_PENDING 0x40 #define WM_CONFIG_AGAIN 0x100 #define WM_FULL_SCREEN 0x200 /* * This module keeps a list of all top-level windows, primarily to * simplify the job of Tk_CoordsToWindow. */ static WmInfo *firstWmPtr = NULL; /* Points to first top-level window. */ #define IS_GRIDDED(wmPtr) ((wmPtr)->sizeHintsFlags & PBaseSize) /* * Forward declarations for procedures defined in this file: */ static int ParseGeometry _ANSI_ARGS_ ((Tcl_Interp *interp, char *string, TkWindow *winPtr)); static void TopLevelEventProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); static void TopLevelReqProc _ANSI_ARGS_((ClientData dummy, Tk_Window tkwin)); static void UpdateGeometryInfo _ANSI_ARGS_(( ClientData clientData)); static void UpdateHints _ANSI_ARGS_((TkWindow *winPtr)); static void UpdateSizeHints _ANSI_ARGS_((TkWindow *winPtr)); /* *-------------------------------------------------------------- * * TkWmNewWindow -- * * This procedure is invoked whenever a new top-level * window is created. Its job is to initialize the WmInfo * structure for the window. * * Results: * None. * * Side effects: * A WmInfo structure gets allocated and initialized. * *-------------------------------------------------------------- */ void TkWmNewWindow(winPtr) TkWindow *winPtr; /* Newly-created top-level window. */ { register WmInfo *wmPtr; wmPtr = (WmInfo *) ckalloc(sizeof(WmInfo)); wmPtr->winPtr = winPtr; wmPtr->reparent = None; wmPtr->titleUid = NULL; wmPtr->iconName = NULL; wmPtr->master = None; wmPtr->hints.flags = InputHint | StateHint; wmPtr->hints.input = True; wmPtr->hints.initial_state = NormalState; wmPtr->hints.icon_pixmap = None; wmPtr->hints.icon_window = None; wmPtr->hints.icon_x = wmPtr->hints.icon_y = 0; wmPtr->hints.icon_mask = None; wmPtr->hints.window_group = None; wmPtr->leaderName = NULL; wmPtr->iconWindowName = NULL; wmPtr->masterWindowName = NULL; wmPtr->sizeHintsFlags = 0; wmPtr->minWidth = wmPtr->minHeight = 0; wmPtr->maxWidth = wmPtr->maxHeight = 10000; wmPtr->widthInc = wmPtr->heightInc = 1; wmPtr->minAspect.x = wmPtr->minAspect.y = 1; wmPtr->maxAspect.x = wmPtr->maxAspect.y = 1; wmPtr->reqGridWidth = wmPtr->reqGridHeight = -1; wmPtr->prevReqWidth = wmPtr->prevReqHeight = -1; wmPtr->gravity = NorthWestGravity; wmPtr->width = -1; wmPtr->height = -1; wmPtr->x = winPtr->changes.x; wmPtr->y = winPtr->changes.y; wmPtr->parentWidth = winPtr->changes.width + 2*winPtr->changes.border_width; wmPtr->parentHeight = winPtr->changes.height + 2*winPtr->changes.border_width; wmPtr->xInParent = wmPtr->yInParent = 0; wmPtr->configRequest = 0; wmPtr->configWidth = -1; wmPtr->configHeight = -1; wmPtr->flags = WM_NEVER_MAPPED; wmPtr->deleteCmd = (char *)0; wmPtr->nextPtr = firstWmPtr; firstWmPtr = wmPtr; winPtr->wmInfoPtr = wmPtr; /* * Tk must monitor certain events for top-level windows: * (a) structure events, in order to detect size and position changes * caused by window managers. * (b) enter/level events, in order to perform focussing correctly. */ Tk_CreateEventHandler((Tk_Window) winPtr, StructureNotifyMask|EnterWindowMask|LeaveWindowMask, TopLevelEventProc, (ClientData) winPtr); /* * Arrange for geometry requests to be reflected from the window * to the window manager. */ Tk_ManageGeometry((Tk_Window) winPtr, TopLevelReqProc, (ClientData) 0); } /* *-------------------------------------------------------------- * * TkWmMapWindow -- * * This procedure is invoked just before a top-level window * is mapped. It gives this module a chance to update all * window-manager-related information in properties before * the window manager sees the map event and checks the * properties. * * Results: * Returns non-zero if it's OK for the window to be mapped, 0 * if the caller shouldn't map the window after all (e.g. because * it has been withdrawn). * * Side effects: * Properties of winPtr may get updated to provide up-to-date * information to the window manager. * *-------------------------------------------------------------- */ int TkWmMapWindow(winPtr) TkWindow *winPtr; /* Top-level window that's about to * be mapped. */ { register WmInfo *wmPtr = winPtr->wmInfoPtr; #ifndef X11R3 XTextProperty textProp; #endif /* * Set the MAPPED flag if the window is going to appear in its normal * state: if it's going to be iconified or withdrawn then it won't * ever be mapped. */ if (wmPtr->hints.initial_state == NormalState) { winPtr->flags |= TK_MAPPED; } if (!(wmPtr->flags & WM_NEVER_MAPPED)) { return 1; } wmPtr->flags &= ~WM_NEVER_MAPPED; /* * This is the first time this window has ever been mapped. * Store all the window-manager-related information for the * window. */ #ifndef X11R3 if (wmPtr->titleUid == NULL) { wmPtr->titleUid = winPtr->nameUid; } if (XStringListToTextProperty(&wmPtr->titleUid, 1, &textProp) != 0) { XSetWMName(winPtr->display, winPtr->window, &textProp); XFree((char *) textProp.value); } #endif TkWmSetClass(winPtr); TkWmSetWmProtocols(winPtr); if (wmPtr->iconName != NULL) { XSetIconName(winPtr->display, winPtr->window, wmPtr->iconName); } if (wmPtr->master != None) { XSetTransientForHint(winPtr->display, winPtr->window, wmPtr->master); } wmPtr->flags |= WM_UPDATE_SIZE_HINTS; UpdateGeometryInfo((ClientData) winPtr); UpdateHints(winPtr); if (wmPtr->hints.initial_state == WithdrawnState) { return 0; } return 1; } /* *-------------------------------------------------------------- * * TkWmDeadWindow -- * * This procedure is invoked when a top-level window is * about to be deleted. It cleans up the wm-related data * structures for the window. * * Results: * None. * * Side effects: * The WmInfo structure for winPtr gets freed up. * *-------------------------------------------------------------- */ void TkWmDeadWindow(winPtr) TkWindow *winPtr; /* Newly-created top-level window. */ { register WmInfo *wmPtr = winPtr->wmInfoPtr; if (wmPtr == NULL) { return; } if (firstWmPtr == wmPtr) { firstWmPtr = wmPtr->nextPtr; } else { register WmInfo *prevPtr; for (prevPtr = firstWmPtr; ; prevPtr = prevPtr->nextPtr) { if (prevPtr == NULL) { panic("couldn't unlink window in TkWmDeadWindow"); } if (prevPtr->nextPtr == wmPtr) { prevPtr->nextPtr = wmPtr->nextPtr; break; } } } if (wmPtr->hints.flags & IconPixmapHint) { Tk_FreeBitmap(wmPtr->hints.icon_pixmap); } if (wmPtr->hints.flags & IconMaskHint) { Tk_FreeBitmap(wmPtr->hints.icon_mask); } if (wmPtr->flags & WM_UPDATE_PENDING) { Tk_CancelIdleCall(UpdateGeometryInfo, (ClientData) winPtr); } if (wmPtr->deleteCmd) { ckfree(wmPtr->deleteCmd); } ckfree((char *) wmPtr); winPtr->wmInfoPtr = NULL; } /* *-------------------------------------------------------------- * * TkWmSetClass -- * * This procedure is invoked whenever a top-level window's * class is changed. If the window has been mapped then this * procedure updates the window manager property for the * class. If the window hasn't been mapped, the update is * deferred until just before the first mapping. * * Results: * None. * * Side effects: * A window property may get updated. * *-------------------------------------------------------------- */ void TkWmSetClass(winPtr) TkWindow *winPtr; /* Newly-created top-level window. */ { if (winPtr->wmInfoPtr->flags & WM_NEVER_MAPPED) { return; } #ifndef X11R3 if (winPtr->classUid != NULL) { XClassHint *classPtr; classPtr = XAllocClassHint(); classPtr->res_name = winPtr->nameUid; classPtr->res_class = winPtr->classUid; XSetClassHint(winPtr->display, winPtr->window, classPtr); XFree((char *) classPtr); } #endif } /* *---------------------------------------------------------------------- * * Tk_WmCmd -- * * This procedure is invoked to process the "wm" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *---------------------------------------------------------------------- */ /* ARGSUSED */ int Tk_WmCmd(clientData, interp, argc, argv) ClientData clientData; /* Main window associated with * interpreter. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { Tk_Window tkwin = (Tk_Window) clientData; TkWindow *winPtr; register WmInfo *wmPtr; char c; int length; if (argc < 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " option window ?arg ...?\"", (char *) NULL); return TCL_ERROR; } winPtr = (TkWindow *) Tk_NameToWindow(interp, argv[2], tkwin); if (winPtr == NULL) { return TCL_ERROR; } if (!(winPtr->flags & TK_TOP_LEVEL)) { Tcl_AppendResult(interp, "window \"", winPtr->pathName, "\" isn't a top-level window", (char *) NULL); return TCL_ERROR; } wmPtr = winPtr->wmInfoPtr; c = argv[1][0]; length = strlen(argv[1]); if ((c == 'a') && (strncmp(argv[1], "aspect", length) == 0)) { int numer1, denom1, numer2, denom2; if ((argc != 3) && (argc != 7)) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], " aspect window ?minNumer minDenom ", "maxNumer maxDenom?\"", (char *) NULL); return TCL_ERROR; } if (argc == 3) { if (wmPtr->sizeHintsFlags & PAspect) { sprintf(interp->result, "%d %d %d %d", wmPtr->minAspect.x, wmPtr->minAspect.y, wmPtr->maxAspect.x, wmPtr->maxAspect.y); } return TCL_OK; } if (*argv[3] == '\0') { wmPtr->sizeHintsFlags &= ~PAspect; } else { if ((Tcl_GetInt(interp, argv[3], &numer1) != TCL_OK) || (Tcl_GetInt(interp, argv[4], &denom1) != TCL_OK) || (Tcl_GetInt(interp, argv[5], &numer2) != TCL_OK) || (Tcl_GetInt(interp, argv[6], &denom2) != TCL_OK)) { return TCL_ERROR; } if ((numer1 <= 0) || (denom1 <= 0) || (numer2 <= 0) || (denom2 <= 0)) { interp->result = "aspect number can't be <= 0"; return TCL_ERROR; } wmPtr->minAspect.x = numer1; wmPtr->minAspect.y = denom1; wmPtr->maxAspect.x = numer2; wmPtr->maxAspect.y = denom2; wmPtr->sizeHintsFlags |= PAspect; } wmPtr->flags |= WM_UPDATE_SIZE_HINTS; goto updateGeom; } else if ((c == 'd') && (strncmp(argv[1], "deiconify", length) == 0)) { if (argc != 3) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], " deiconify window\"", (char *) NULL); return TCL_ERROR; } wmPtr->hints.initial_state = NormalState; if (wmPtr->flags & WM_NEVER_MAPPED) { return TCL_OK; } Tk_MapWindow((Tk_Window) winPtr); } else if ((c == 'f') && (strncmp(argv[1], "focusmodel", length) == 0)) { if ((argc != 3) && (argc != 4)) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], " focusmodel window ?active|passive?\"", (char *) NULL); return TCL_ERROR; } if (argc == 3) { interp->result = wmPtr->hints.input ? "passive" : "active"; return TCL_OK; } c = argv[3][0]; length = strlen(argv[3]); if ((c == 'a') && (strncmp(argv[3], "active", length) == 0)) { wmPtr->hints.input = False; } else if ((c == 'p') && (strncmp(argv[3], "passive", length) == 0)) { wmPtr->hints.input = True; } else { Tcl_AppendResult(interp, "bad argument \"", argv[3], "\": must be active or passive", (char *) NULL); return TCL_ERROR; } UpdateHints(winPtr); } else if ((c == 'f') && (strncmp(argv[1], "fullscreen", length) == 0)) { if (argc != 4) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], " fullscreen window on|off\"", (char *) NULL); return TCL_ERROR; } c = argv[3][0]; length = strlen(argv[3]); if (strncmp(argv[3], "on", length) == 0) { wmPtr->flags &= ~WM_FULL_SCREEN; } else if (strncmp(argv[3], "off", length) == 0) { wmPtr->flags |= WM_FULL_SCREEN; } else { Tcl_AppendResult(interp, "bad argument \"", argv[3], "\": must be on or off", (char *) NULL); return TCL_ERROR; } static Atom _NET_WM_STATE; static Atom _NET_WM_STATE_REMOVE; static Atom _NET_WM_STATE_ADD; static Atom _NET_WM_STATE_FULLSCREEN; if (!_NET_WM_STATE) { #define MAX_ATOMS 30 Atom *atom_ptr[MAX_ATOMS]; char *names[MAX_ATOMS]; int i = 0; #define atom(a,b) atom_ptr[i] = &a; names[i] = b; i++ atom(_NET_WM_STATE, "_NET_WM_STATE"); atom(_NET_WM_STATE_REMOVE, "_NET_WM_STATE_REMOVE"); atom(_NET_WM_STATE_ADD, "_NET_WM_STATE_ADD"); atom(_NET_WM_STATE_FULLSCREEN, "_NET_WM_STATE_FULLSCREEN"); #undef atom Atom atoms[MAX_ATOMS]; XInternAtoms(winPtr->display, names, i, 0, atoms); for (; i--;) { *atom_ptr[i] = atoms[i]; } } XEvent e; e.xany.type = ClientMessage; e.xany.window = winPtr->window; e.xclient.message_type = _NET_WM_STATE; e.xclient.format = 32; e.xclient.data.l[0] = (wmPtr->flags & WM_FULL_SCREEN) ? _NET_WM_STATE_ADD : _NET_WM_STATE_REMOVE; e.xclient.data.l[1] = (long)_NET_WM_STATE_FULLSCREEN; e.xclient.data.l[2] = (long)0; e.xclient.data.l[3] = (long)0; e.xclient.data.l[4] = (long)0; XSendEvent(winPtr->display, RootWindow(winPtr->display, winPtr->screenNum), 0, SubstructureNotifyMask|SubstructureRedirectMask, &e); } else if ((c == 'g') && (strncmp(argv[1], "geometry", length) == 0) && (length >= 2)) { char xSign, ySign; int width, height; if ((argc != 3) && (argc != 4)) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], " geometry window ?newGeometry?\"", (char *) NULL); return TCL_ERROR; } if (argc == 3) { xSign = (wmPtr->flags & WM_NEGATIVE_X) ? '-' : '+'; ySign = (wmPtr->flags & WM_NEGATIVE_Y) ? '-' : '+'; if (wmPtr->width != -1) { width = wmPtr->width; height = wmPtr->height; } else if (IS_GRIDDED(wmPtr)) { width = wmPtr->reqGridWidth; height = wmPtr->reqGridHeight; } else { width = winPtr->reqWidth; height = winPtr->reqHeight; } sprintf(interp->result, "%dx%d%c%d%c%d", width, height, xSign, wmPtr->x, ySign, wmPtr->y); return TCL_OK; } if (*argv[3] == '\0') { wmPtr->width = -1; wmPtr->height = -1; goto updateGeom; } return ParseGeometry(interp, argv[3], winPtr); } else if ((c == 'g') && (strncmp(argv[1], "grid", length) == 0) && (length >= 3)) { int reqWidth, reqHeight, widthInc, heightInc; if ((argc != 3) && (argc != 7)) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], " reqsize window ?baseWidth baseHeight ", "widthInc heightInc?\"", (char *) NULL); return TCL_ERROR; } if (argc == 3) { if (wmPtr->sizeHintsFlags & PBaseSize) { sprintf(interp->result, "%d %d %d %d", wmPtr->reqGridWidth, wmPtr->reqGridHeight, wmPtr->widthInc, wmPtr->heightInc); } return TCL_OK; } if (*argv[3] == '\0') { /* * Turn off gridding and reset the width and height * to make sense as ungridded numbers. */ wmPtr->sizeHintsFlags &= ~(PBaseSize|PResizeInc); wmPtr->widthInc = 1; wmPtr->heightInc = 1; if (wmPtr->width != -1) { wmPtr->width = winPtr->reqWidth + (wmPtr->width - wmPtr->reqGridWidth)*wmPtr->widthInc; wmPtr->height = winPtr->reqHeight + (wmPtr->height - wmPtr->reqGridHeight)*wmPtr->heightInc; } } else { if ((Tcl_GetInt(interp, argv[3], &reqWidth) != TCL_OK) || (Tcl_GetInt(interp, argv[4], &reqHeight) != TCL_OK) || (Tcl_GetInt(interp, argv[5], &widthInc) != TCL_OK) || (Tcl_GetInt(interp, argv[6], &heightInc) != TCL_OK)) { return TCL_ERROR; } if (reqWidth < 0) { interp->result = "baseWidth can't be < 0"; return TCL_ERROR; } if (reqHeight < 0) { interp->result = "baseHeight can't be < 0"; return TCL_ERROR; } if (widthInc < 0) { interp->result = "widthInc can't be < 0"; return TCL_ERROR; } if (heightInc < 0) { interp->result = "heightInc can't be < 0"; return TCL_ERROR; } Tk_SetGrid((Tk_Window) tkwin, reqWidth, reqHeight, widthInc, heightInc); } wmPtr->flags |= WM_UPDATE_SIZE_HINTS; goto updateGeom; } else if ((c == 'g') && (strncmp(argv[1], "group", length) == 0) && (length >= 3)) { Tk_Window tkwin2; if ((argc != 3) && (argc != 4)) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], " group window ?pathName?\"", (char *) NULL); return TCL_ERROR; } if (argc == 3) { if (wmPtr->hints.flags & WindowGroupHint) { interp->result = wmPtr->leaderName; } return TCL_OK; } if (*argv[3] == '\0') { wmPtr->hints.flags &= ~WindowGroupHint; wmPtr->leaderName = NULL; } else { tkwin2 = Tk_NameToWindow(interp, argv[3], tkwin); if (tkwin2 == NULL) { return TCL_ERROR; } Tk_MakeWindowExist(tkwin2); wmPtr->hints.window_group = Tk_WindowId(tkwin2); wmPtr->hints.flags |= WindowGroupHint; wmPtr->leaderName = Tk_PathName(tkwin2); } UpdateHints(winPtr); } else if ((c == 'i') && (strncmp(argv[1], "iconbitmap", length) == 0) && (length >= 5)) { Pixmap pixmap; if ((argc != 3) && (argc != 4)) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], " iconbitmap window ?bitmap?\"", (char *) NULL); return TCL_ERROR; } if (argc == 3) { if (wmPtr->hints.flags & IconPixmapHint) { interp->result = Tk_NameOfBitmap(wmPtr->hints.icon_pixmap); } return TCL_OK; } if (*argv[3] == '\0') { if (wmPtr->hints.icon_pixmap != None) { Tk_FreeBitmap(wmPtr->hints.icon_pixmap); } wmPtr->hints.flags &= ~IconPixmapHint; } else { pixmap = Tk_GetBitmap(interp, tkwin, Tk_GetUid(argv[3])); if (pixmap == None) { return TCL_ERROR; } wmPtr->hints.icon_pixmap = pixmap; wmPtr->hints.flags |= IconPixmapHint; } UpdateHints(winPtr); } else if ((c == 'i') && (strncmp(argv[1], "iconify", length) == 0) && (length >= 5)) { if (argc != 3) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], " iconify window\"", (char *) NULL); return TCL_ERROR; } wmPtr->hints.initial_state = IconicState; if (wmPtr->flags & WM_NEVER_MAPPED) { return TCL_OK; } #ifndef X11R3 if (XIconifyWindow(winPtr->display, winPtr->window, winPtr->screenNum) == 0) { interp->result = "couldn't send iconify message to window manager"; return TCL_ERROR; } #else interp->result = "can't iconify under X11R3"; return TCL_ERROR; #endif } else if ((c == 'i') && (strncmp(argv[1], "iconmask", length) == 0) && (length >= 5)) { Pixmap pixmap; if ((argc != 3) && (argc != 4)) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], " iconmask window ?bitmap?\"", (char *) NULL); return TCL_ERROR; } if (argc == 3) { if (wmPtr->hints.flags & IconMaskHint) { interp->result = Tk_NameOfBitmap(wmPtr->hints.icon_mask); } return TCL_OK; } if (*argv[3] == '\0') { if (wmPtr->hints.icon_mask != None) { Tk_FreeBitmap(wmPtr->hints.icon_mask); } wmPtr->hints.flags &= ~IconMaskHint; } else { pixmap = Tk_GetBitmap(interp, tkwin, Tk_GetUid(argv[3])); if (pixmap == None) { return TCL_ERROR; } wmPtr->hints.icon_mask = pixmap; wmPtr->hints.flags |= IconMaskHint; } UpdateHints(winPtr); } else if ((c == 'i') && (strncmp(argv[1], "iconname", length) == 0) && (length >= 5)) { if (argc > 4) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], " iconname window ?newName?\"", (char *) NULL); return TCL_ERROR; } if (argc == 3) { interp->result = (wmPtr->iconName != NULL) ? wmPtr->iconName : ""; return TCL_OK; } else { wmPtr->iconName = Tk_GetUid(argv[3]); if (!(wmPtr->flags & WM_NEVER_MAPPED)) { XSetIconName(winPtr->display, winPtr->window, wmPtr->iconName); } } } else if ((c == 'i') && (strncmp(argv[1], "iconposition", length) == 0) && (length >= 5)) { int x, y; if ((argc != 3) && (argc != 5)) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], " iconposition window ?x y?\"", (char *) NULL); return TCL_ERROR; } if (argc == 3) { if (wmPtr->hints.flags & IconPositionHint) { sprintf(interp->result, "%d %d", wmPtr->hints.icon_x, wmPtr->hints.icon_y); } return TCL_OK; } if (*argv[3] == '\0') { wmPtr->hints.flags &= ~IconPositionHint; } else { if ((Tcl_GetInt(interp, argv[3], &x) != TCL_OK) || (Tcl_GetInt(interp, argv[4], &y) != TCL_OK)){ return TCL_ERROR; } wmPtr->hints.icon_x = x; wmPtr->hints.icon_y = y; wmPtr->hints.flags |= IconPositionHint; } UpdateHints(winPtr); } else if ((c == 'i') && (strncmp(argv[1], "iconwindow", length) == 0) && (length >= 5)) { Tk_Window tkwin2; if ((argc != 3) && (argc != 4)) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], " iconwindow window ?pathName?\"", (char *) NULL); return TCL_ERROR; } if (argc == 3) { if (wmPtr->hints.flags & IconWindowHint) { interp->result = wmPtr->iconWindowName; } return TCL_OK; } if (*argv[3] == '\0') { wmPtr->hints.flags &= ~IconWindowHint; wmPtr->iconWindowName = NULL; } else { tkwin2 = Tk_NameToWindow(interp, argv[3], tkwin); if (tkwin2 == NULL) { return TCL_ERROR; } Tk_MakeWindowExist(tkwin2); wmPtr->hints.icon_window = Tk_WindowId(tkwin2); wmPtr->hints.flags |= IconWindowHint; wmPtr->iconWindowName = Tk_PathName(tkwin2); } UpdateHints(winPtr); } else if ((c == 'm') && (strncmp(argv[1], "maxsize", length) == 0) && (length >= 2)) { int width, height; if ((argc != 3) && (argc != 5)) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], " maxsize window ?width height?\"", (char *) NULL); return TCL_ERROR; } if (argc == 3) { if (wmPtr->sizeHintsFlags & PMaxSize) { sprintf(interp->result, "%d %d", wmPtr->maxWidth, wmPtr->maxHeight); } return TCL_OK; } if (*argv[3] == '\0') { wmPtr->sizeHintsFlags &= ~PMaxSize; } else { if ((Tcl_GetInt(interp, argv[3], &width) != TCL_OK) || (Tcl_GetInt(interp, argv[4], &height) != TCL_OK)) { return TCL_ERROR; } wmPtr->maxWidth = width; wmPtr->maxHeight = height; wmPtr->sizeHintsFlags |= PMaxSize; } wmPtr->flags |= WM_UPDATE_SIZE_HINTS; goto updateGeom; } else if ((c == 'm') && (strncmp(argv[1], "minsize", length) == 0) && (length >= 2)) { int width, height; if ((argc != 3) && (argc != 5)) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], " minsize window ?width height?\"", (char *) NULL); return TCL_ERROR; } if (argc == 3) { if (wmPtr->sizeHintsFlags & PMinSize) { sprintf(interp->result, "%d %d", wmPtr->minWidth, wmPtr->minHeight); } return TCL_OK; } if (*argv[3] == '\0') { wmPtr->sizeHintsFlags &= ~PMinSize; } else { if ((Tcl_GetInt(interp, argv[3], &width) != TCL_OK) || (Tcl_GetInt(interp, argv[4], &height) != TCL_OK)) { return TCL_ERROR; } wmPtr->minWidth = width; wmPtr->minHeight = height; wmPtr->sizeHintsFlags |= PMinSize; } wmPtr->flags |= WM_UPDATE_SIZE_HINTS; goto updateGeom; } else if ((c == 'p') && (strncmp(argv[1], "positionfrom", length) == 0)) { if ((argc != 3) && (argc != 4)) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], " positionfrom window ?user/program?\"", (char *) NULL); return TCL_ERROR; } if (argc == 3) { if (wmPtr->sizeHintsFlags & USPosition) { interp->result = "user"; } else if (wmPtr->sizeHintsFlags & PPosition) { interp->result = "program"; } return TCL_OK; } if (*argv[3] == '\0') { wmPtr->sizeHintsFlags &= ~(USPosition|PPosition); } else { c = argv[3][0]; length = strlen(argv[3]); if ((c == 'u') && (strncmp(argv[3], "user", length) == 0)) { wmPtr->sizeHintsFlags &= ~PPosition; wmPtr->sizeHintsFlags |= USPosition; } else if ((c == 'p') && (strncmp(argv[3], "program", length) == 0)) { wmPtr->sizeHintsFlags &= ~USPosition; wmPtr->sizeHintsFlags |= PPosition; } else { Tcl_AppendResult(interp, "bad argument \"", argv[3], "\": must be program or user", (char *) NULL); return TCL_ERROR; } } wmPtr->flags |= WM_UPDATE_SIZE_HINTS; goto updateGeom; } else if ((c == 'r') && (strncmp(argv[1], "raise", length) == 0)) { if (argc != 3) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], " raise window\"", (char *) NULL); return TCL_ERROR; } Tk_MakeWindowExist((Tk_Window) winPtr); XRaiseWindow(Tk_Display(winPtr), Tk_WindowId(winPtr)); } else if ((c == 's') && (strncmp(argv[1], "sizefrom", length) == 0)) { if ((argc != 3) && (argc != 4)) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], " sizefrom window ?user|program?\"", (char *) NULL); return TCL_ERROR; } if (argc == 3) { if (wmPtr->sizeHintsFlags & USSize) { interp->result = "user"; } else if (wmPtr->sizeHintsFlags & PSize) { interp->result = "program"; } return TCL_OK; } if (*argv[3] == '\0') { wmPtr->sizeHintsFlags &= ~(USSize|PSize); } else { c = argv[3][0]; length = strlen(argv[3]); if ((c == 'u') && (strncmp(argv[3], "user", length) == 0)) { wmPtr->sizeHintsFlags &= ~PSize; wmPtr->sizeHintsFlags |= USSize; } else if ((c == 'p') && (strncmp(argv[3], "program", length) == 0)) { wmPtr->sizeHintsFlags &= ~USSize; wmPtr->sizeHintsFlags |= PSize; } else { Tcl_AppendResult(interp, "bad argument \"", argv[3], "\": must be program or user", (char *) NULL); return TCL_ERROR; } } wmPtr->flags |= WM_UPDATE_SIZE_HINTS; goto updateGeom; } else if ((c == 't') && (strncmp(argv[1], "title", length) == 0) && (length >= 2)) { if (argc > 4) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], " title window ?newTitle?\"", (char *) NULL); return TCL_ERROR; } if (argc == 3) { interp->result = (wmPtr->titleUid != NULL) ? wmPtr->titleUid : winPtr->nameUid; return TCL_OK; } else { wmPtr->titleUid = Tk_GetUid(argv[3]); #ifndef X11R3 if (!(wmPtr->flags & WM_NEVER_MAPPED)) { XTextProperty textProp; if (XStringListToTextProperty(&wmPtr->titleUid, 1, &textProp) != 0) { XSetWMName(winPtr->display, winPtr->window, &textProp); XFree((char *) textProp.value); } } #endif } #ifndef X11R3 } else if ((c == 't') && (strncmp(argv[1], "transient", length) == 0) && (length >= 2)) { Tk_Window master; if ((argc != 3) && (argc != 4)) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], " transient window ?master?\"", (char *) NULL); return TCL_ERROR; } if (argc == 3) { if (wmPtr->master != None) { interp->result = wmPtr->masterWindowName; } return TCL_OK; } if (argv[3][0] == '\0') { wmPtr->master = None; wmPtr->masterWindowName = NULL; } else { master = Tk_NameToWindow(interp, argv[3], tkwin); if (master == NULL) { return TCL_ERROR; } Tk_MakeWindowExist(master); wmPtr->master = Tk_WindowId(master); wmPtr->masterWindowName = Tk_PathName(master); } if (!(wmPtr->flags & WM_NEVER_MAPPED)) { XSetTransientForHint(winPtr->display, winPtr->window, wmPtr->master); } } else if ((c == 'w') && (strncmp(argv[1], "withdraw", length) == 0)) { if (argc != 3) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], " withdraw window\"", (char *) NULL); return TCL_ERROR; } wmPtr->hints.initial_state = WithdrawnState; if (wmPtr->flags & WM_NEVER_MAPPED) { return TCL_OK; } if (XWithdrawWindow(winPtr->display, winPtr->window, winPtr->screenNum) == 0) { interp->result = "couldn't send withdraw message to window manager"; return TCL_ERROR; } winPtr->flags &= ~TK_MAPPED; } else if ((c == 'p') && (strncmp(argv[1], "protocol", length) == 0)) { /* * handle various ICCCM WM_PROTOCOL attributes */ if (argc < 4) { Tcl_AppendResult(interp, "wrong # arguments: must be \"", argv[0], " protocol window type..\"", (char *) NULL); return TCL_ERROR; } if (!strcmp(argv[3], "delete")) { return WmProtocolCmd(interp, &(wmPtr->deleteCmd), argc, argv); } else { Tcl_AppendResult(interp, argv[0], ": bad argument ", argv[3], " must be: ", "delete", (char *) NULL); return TCL_ERROR; } #endif } else { Tcl_AppendResult(interp, "unknown or ambiguous option \"", argv[1], "\": must be aspect, deiconify, focusmodel, ", "fullscreen, geometry, grid, group, iconbitmap, ", "iconify, iconmask, iconname, iconposition, ", "iconwindow, maxsize, minsize, positionfrom, raise, ", "sizefrom, title, transient, withdraw, or protocol", (char *) NULL); return TCL_ERROR; } return TCL_OK; updateGeom: if (!(wmPtr->flags & (WM_UPDATE_PENDING|WM_NEVER_MAPPED))) { Tk_DoWhenIdle(UpdateGeometryInfo, (ClientData) winPtr); wmPtr->flags |= WM_UPDATE_PENDING; } return TCL_OK; } /* *---------------------------------------------------------------------- * * Tk_SetGrid -- * * This procedure is invoked by a widget when it wishes to set a grid * coordinate system that controls the size of a top-level window. * It provides a C interface equivalent to the "wm grid" command and * is usually asscoiated with the -setgrid option. * * Results: * None. * * Side effects: * Grid-related information will be passed to the window manager, so * that the top-level window associated with tkwin will resize on * even grid units. * *---------------------------------------------------------------------- */ void Tk_SetGrid(tkwin, reqWidth, reqHeight, widthInc, heightInc) Tk_Window tkwin; /* Token for window. New window mgr info * will be posted for the top-level window * associated with this window. */ int reqWidth; /* Width (in grid units) corresponding to * the requested geometry for tkwin. */ int reqHeight; /* Height (in grid units) corresponding to * the requested geometry for tkwin. */ int widthInc, heightInc; /* Pixel increments corresponding to a * change of one grid unit. */ { TkWindow *winPtr = (TkWindow *) tkwin; register WmInfo *wmPtr; /* * Find the top-level window for tkwin, plus the window manager * information. */ while (!(winPtr->flags & TK_TOP_LEVEL)) { winPtr = winPtr->parentPtr; } wmPtr = winPtr->wmInfoPtr; if ((wmPtr->reqGridWidth == reqWidth) && (wmPtr->reqGridHeight != reqHeight) && (wmPtr->widthInc != widthInc) && (wmPtr->heightInc != heightInc) && ((wmPtr->sizeHintsFlags & (PBaseSize|PResizeInc)) == PBaseSize|PResizeInc)) { return; } /* * If gridding was previously off, then forget about any window * size requests made by the user or via "wm geometry": these are * in pixel units and there's no easy way to translate them to * grid units since the new requested size of the top-level window in * pixels may not yet have been registered yet (it may filter up * the hierarchy in DoWhenIdle handlers). */ if (!(wmPtr->sizeHintsFlags & PBaseSize)) { wmPtr->width = -1; wmPtr->height = -1; } /* * Set the new gridding information, and start the process of passing * all of this information to the window manager. */ wmPtr->reqGridWidth = reqWidth; wmPtr->reqGridHeight = reqHeight; wmPtr->widthInc = widthInc; wmPtr->heightInc = heightInc; wmPtr->sizeHintsFlags |= PBaseSize|PResizeInc; wmPtr->flags |= WM_UPDATE_SIZE_HINTS; if (!(wmPtr->flags & (WM_UPDATE_PENDING|WM_NEVER_MAPPED))) { Tk_DoWhenIdle(UpdateGeometryInfo, (ClientData) winPtr); wmPtr->flags |= WM_UPDATE_PENDING; } } /* *---------------------------------------------------------------------- * * TopLevelEventProc -- * * This procedure is invoked when a top-level (or other externally- * managed window) is restructured in any way. * * Results: * None. * * Side effects: * Tk's internal data structures for the window get modified to * reflect the structural change. * *---------------------------------------------------------------------- */ static void TopLevelEventProc(clientData, eventPtr) ClientData clientData; /* Window for which event occurred. */ XEvent *eventPtr; /* Event that just happened. */ { register TkWindow *winPtr = (TkWindow *) clientData; if (eventPtr->type == DestroyNotify) { if (!(winPtr->flags & TK_ALREADY_DEAD)) { Tk_DestroyWindow((Tk_Window) winPtr); } } else if (eventPtr->type == ConfigureNotify) { register WmInfo *wmPtr = winPtr->wmInfoPtr; int diff, x, y; /* * A top-level window has been reconfigured. Problem #1: * discard stale information. If the application has recently * tried to reconfigure itself, ignore all events until the * response to that reconfiguration arrives (the response is * assumed to be the first ConfigureNotify that arrives after * the server has seen the request; this suffers from potential * races with user actions, but it's the best I can think of * right now). */ diff = eventPtr->xconfigure.serial - wmPtr->configRequest; if (diff < 0) { return; } /* * Problem #2: reparenting window managers. If the window * manager reparents a top-level window then the x and y * information that comes in events for the window is wrong: * it gives the location of the window inside its decorative * parent, rather than the location of the window in root * coordinates, which is what we want. Window managers * are supposed to send synthetic events with the correct * information, but ICCCM doesn't require them to do this * under all conditions, and the information provided doesn't * include everything we need here. So, the code below * maintains a bunch of information about the parent window. * If the window hasn't been reparented, we pretend that * there is a parent shrink-wrapped around the window. */ if (wmPtr->reparent == None) { noReparent: winPtr->changes.x = eventPtr->xconfigure.x; winPtr->changes.y = eventPtr->xconfigure.y; wmPtr->parentWidth = eventPtr->xconfigure.width + 2*eventPtr->xconfigure.border_width; wmPtr->parentHeight = eventPtr->xconfigure.height + 2*eventPtr->xconfigure.border_width; } else { unsigned int width, height, bd, dummy; Window dummy2; Status status; Tk_ErrorHandler handler; handler = Tk_CreateErrorHandler(winPtr->display, BadDrawable, -1, -1, (Tk_ErrorProc *) NULL, (ClientData) NULL); status = XGetGeometry(winPtr->display, wmPtr->reparent, &dummy2, &x, &y, &width, &height, &bd, &dummy); Tk_DeleteErrorHandler(handler); if (status == 0) { /* * It appears that the reparented parent went away and * no-one told us. Reset the window to indicate that * it's not reparented, then handle it as a non-reparented * window. */ wmPtr->reparent = None; wmPtr->flags &= ~WM_NESTED_REPARENT; wmPtr->xInParent = wmPtr->yInParent = 0; goto noReparent; } wmPtr->parentWidth = width + 2*bd; wmPtr->parentHeight = height + 2*bd; winPtr->changes.x = x; winPtr->changes.y = y; if (wmPtr->flags & WM_NESTED_REPARENT) { int xOffset, yOffset; (void) XTranslateCoordinates(winPtr->display, winPtr->window, wmPtr->reparent, 0, 0, &xOffset, &yOffset, &dummy2); wmPtr->xInParent = xOffset + bd - winPtr->changes.border_width; wmPtr->yInParent = yOffset + bd - winPtr->changes.border_width; } else { if (!eventPtr->xconfigure.send_event) { wmPtr->xInParent = eventPtr->xconfigure.x + bd; wmPtr->yInParent = eventPtr->xconfigure.y + bd; } } winPtr->changes.x = x + wmPtr->xInParent; winPtr->changes.y = y + wmPtr->yInParent; } /* * Problem #3: if the window size or location was changed * externally, update the geometry information in wmPtr to make * it look just as if the user had typed a "wm geometry" command * to make the change. There are many tricky situations to deal * with: * (a) the event is simply a reflection of an internal geometry * request from the window's widgets (must leave width and * height alone in this case). * (b) the window manager might respond to a size request from * us with a different size than requested (e.g. it might * have a minimum allowable window size). Because of this, * can't just compare new size with requested size to determine * whether this event is a reflection of an internal request * from within the application. Use WM_CONFIG_PENDING flag * instead. * (c) ConfigureNotify events also arise if the window has been * moved, even if its size hasn't changed. Must distinguish * between the user moving the window and the user resizing * the window. */ if (wmPtr->flags & WM_CONFIG_PENDING) { int diff; /* * Size change is just a reflection of something coming from * application. */ diff = eventPtr->xconfigure.serial - wmPtr->configRequest; if (diff >= 0) { if (wmPtr->flags & WM_CONFIG_AGAIN) { if (!(wmPtr->flags & WM_UPDATE_PENDING)) { Tk_DoWhenIdle(UpdateGeometryInfo, (ClientData) winPtr); wmPtr->flags |= WM_UPDATE_PENDING; } } wmPtr->flags &= ~(WM_CONFIG_PENDING|WM_CONFIG_AGAIN); } } else if ((winPtr->changes.width != eventPtr->xconfigure.width) || (winPtr->changes.height != eventPtr->xconfigure.height)) { wmPtr->configWidth = -1; wmPtr->configHeight = -1; if (IS_GRIDDED(wmPtr)) { wmPtr->width = wmPtr->reqGridWidth + (eventPtr->xconfigure.width - winPtr->reqWidth)/wmPtr->widthInc; if (wmPtr->width < 0) { wmPtr->width = 0; } wmPtr->height = wmPtr->reqGridHeight + (eventPtr->xconfigure.height - winPtr->reqHeight)/wmPtr->heightInc; if (wmPtr->height < 0) { wmPtr->height = 0; } } else if ((eventPtr->xconfigure.width != winPtr->changes.width) || (eventPtr->xconfigure.height != winPtr->changes.height)) { /* * The check above is needed so we don't think the user * requested a new size when all he/she did was to move * the window. */ wmPtr->width = eventPtr->xconfigure.width; wmPtr->height = eventPtr->xconfigure.height; } } winPtr->changes.width = eventPtr->xconfigure.width; winPtr->changes.height = eventPtr->xconfigure.height; winPtr->changes.border_width = eventPtr->xconfigure.border_width; winPtr->changes.sibling = eventPtr->xconfigure.above; winPtr->changes.stack_mode = Above; x = winPtr->changes.x - wmPtr->xInParent; if (wmPtr->flags & WM_NEGATIVE_X) { x = DisplayWidth(winPtr->display, winPtr->screenNum) - (x + wmPtr->parentWidth); } y = winPtr->changes.y - wmPtr->yInParent; if (wmPtr->flags & WM_NEGATIVE_Y) { y = DisplayHeight(winPtr->display, winPtr->screenNum) - (y + wmPtr->parentHeight); } if ((x != wmPtr->x) || (y != wmPtr->y)) { wmPtr->x = x; wmPtr->y = y; } } else if (eventPtr->type == MapNotify) { winPtr->flags |= TK_MAPPED; } else if (eventPtr->type == UnmapNotify) { winPtr->flags &= ~TK_MAPPED; } else if (eventPtr->type == ReparentNotify) { WmInfo *wmPtr = winPtr->wmInfoPtr; Window root, *children, dummy2, *virtualRootPtr; Atom virtualRootAtom, actualType; int actualFormat; unsigned long numItems, bytesAfter; unsigned int dummy; /* * Locate the ancestor of this window that is just below the * root window for the screen (could be the window itself). * This code is a bit tricky because it allows for the * possibility of a virtual root window, which is identified * with a property named __SWM_VROOT. */ virtualRootAtom = Tk_InternAtom((Tk_Window) winPtr, "__SWM_VROOT"); wmPtr->flags &= ~WM_NESTED_REPARENT; wmPtr->reparent = None; root = eventPtr->xreparent.parent; while (root != RootWindow(winPtr->display, winPtr->screenNum)) { Tk_ErrorHandler handler1, handler2; int status; virtualRootPtr = NULL; handler1 = Tk_CreateErrorHandler(winPtr->display, BadDrawable, -1, -1, (Tk_ErrorProc *) NULL, (ClientData) NULL); handler2 = Tk_CreateErrorHandler(winPtr->display, BadWindow, -1, -1, (Tk_ErrorProc *) NULL, (ClientData) NULL); status = XGetWindowProperty(winPtr->display, root, virtualRootAtom, 0, (long) 1, False, XA_WINDOW, &actualType, &actualFormat, &numItems, &bytesAfter, (unsigned char **) &virtualRootPtr); Tk_DeleteErrorHandler(handler1); Tk_DeleteErrorHandler(handler2); if (status == Success) { if (virtualRootPtr != NULL) { if (*virtualRootPtr != root) { panic("TopLevelEventProc confused over virtual root"); } XFree((char *) virtualRootPtr); break; } } wmPtr->reparent = root; (void) XQueryTree(winPtr->display, root, &dummy2, &root, &children, &dummy); XFree((char *) children); } /* * The ancestor just below the (virtual) root is in wmPtr->reparent * now, and the (virtual) root is in root. */ if (eventPtr->xreparent.parent == root) { wmPtr->reparent = None; wmPtr->flags &= ~WM_NESTED_REPARENT; wmPtr->parentWidth = winPtr->changes.width + 2*winPtr->changes.border_width; wmPtr->parentHeight = winPtr->changes.height + 2*winPtr->changes.border_width; wmPtr->xInParent = wmPtr->yInParent = 0; winPtr->changes.x = eventPtr->xreparent.x; winPtr->changes.y = eventPtr->xreparent.y; } else { int x, y, xOffset, yOffset; unsigned int width, height, bd; if (wmPtr->reparent != eventPtr->xreparent.parent) { wmPtr->flags |= WM_NESTED_REPARENT; } else { wmPtr->flags &= ~WM_NESTED_REPARENT; } /* * Compute and save information about reparent and about * the window's position in reparent. */ (void) XGetGeometry(winPtr->display, wmPtr->reparent, &dummy2, &x, &y, &width, &height, &bd, &dummy); wmPtr->parentWidth = width + 2*bd; wmPtr->parentHeight = height + 2*bd; (void) XTranslateCoordinates(winPtr->display, winPtr->window, wmPtr->reparent, 0, 0, &xOffset, &yOffset, &dummy2); wmPtr->xInParent = xOffset + bd - winPtr->changes.border_width; wmPtr->yInParent = yOffset + bd - winPtr->changes.border_width; winPtr->changes.x = x + xOffset; winPtr->changes.y = y + yOffset; } } else if ((eventPtr->type == EnterNotify) || (eventPtr->type == LeaveNotify)) { TkFocusEventProc(winPtr, eventPtr); } } /* *---------------------------------------------------------------------- * * TopLevelReqProc -- * * This procedure is invoked by the geometry manager whenever * the requested size for a top-level window is changed. * * Results: * None. * * Side effects: * Arrange for the window to be resized to satisfy the request * (this happens as a when-idle action). * *---------------------------------------------------------------------- */ /* ARGSUSED */ static void TopLevelReqProc(dummy, tkwin) ClientData dummy; /* Not used. */ Tk_Window tkwin; /* Information about window. */ { TkWindow *winPtr = (TkWindow *) tkwin; WmInfo *wmPtr; wmPtr = winPtr->wmInfoPtr; if ((wmPtr->prevReqWidth == winPtr->reqWidth) && (wmPtr->prevReqHeight == winPtr->reqHeight)) { return; } wmPtr->prevReqWidth = winPtr->reqWidth; wmPtr->prevReqHeight = winPtr->reqHeight; wmPtr->flags |= WM_UPDATE_SIZE_HINTS; if (!(wmPtr->flags & (WM_UPDATE_PENDING|WM_NEVER_MAPPED))) { Tk_DoWhenIdle(UpdateGeometryInfo, (ClientData) winPtr); wmPtr->flags |= WM_UPDATE_PENDING; } } /* *---------------------------------------------------------------------- * * UpdateGeometryInfo -- * * This procedure is invoked when a top-level window is first * mapped, and also as a when-idle procedure, to bring the * geometry and/or position of a top-level window back into * line with what has been requested by the user and/or widgets. * * Results: * None. * * Side effects: * The window's size and location may change, unless the WM prevents * that from happening. * *---------------------------------------------------------------------- */ static void UpdateGeometryInfo(clientData) ClientData clientData; /* Pointer to the window's record. */ { register TkWindow *winPtr = (TkWindow *) clientData; register WmInfo *wmPtr = winPtr->wmInfoPtr; int x, y, width, height; /* * It isn't safe to issue a new reconfigure request while there is * another reconfigure request outstanding. If this happens, skip * the second reconfigure operation but set a flag so it will get * done with the first one finishes. */ wmPtr->flags &= ~WM_UPDATE_PENDING; if (wmPtr->flags & WM_CONFIG_PENDING) { wmPtr->flags |= WM_CONFIG_AGAIN; return; } /* * Compute the new size for the top-level window. See the * user documentation for details on this, but the size * requested depends on (a) the size requested internally * by the window's widgets, (b) the size requested by the * user in a "wm geometry" command or via wm-based interactive * resizing (if any), and (c) whether or not the window * gridded. Don't permit sizes <= 0 because this upsets * the X server. */ if (wmPtr->width == -1) { width = winPtr->reqWidth; height = winPtr->reqHeight; } else if (IS_GRIDDED(wmPtr)) { width = winPtr->reqWidth + (wmPtr->width - wmPtr->reqGridWidth)*wmPtr->widthInc; height = winPtr->reqHeight + (wmPtr->height - wmPtr->reqGridHeight)*wmPtr->heightInc; } else { width = wmPtr->width; height = wmPtr->height; } if (width <= 0) { width = 1; } if (height <= 0) { height = 1; } /* * Compute the new position for the window. This is tricky, because * we need to include the border widths supplied by a reparented * parent in this calculation, but can't use the parent's current * overall size since that may change as a result of this code. */ if (wmPtr->flags & WM_NEGATIVE_X) { x = DisplayWidth(winPtr->display, winPtr->screenNum) - wmPtr->x - (width + (wmPtr->parentWidth - winPtr->changes.width)) + wmPtr->xInParent; } else { x = wmPtr->x + wmPtr->xInParent; } if (wmPtr->flags & WM_NEGATIVE_Y) { y = DisplayHeight(winPtr->display, winPtr->screenNum) - wmPtr->y - (height + (wmPtr->parentHeight - winPtr->changes.height)) + wmPtr->yInParent; } else { y = wmPtr->y + wmPtr->yInParent; } /* * If the window's size is going to change and the window is * supposed to not be resizable by the user, then we have to * update the size hints. There may also be a size-hint-update * request pending from somewhere else, too. */ if (((width != winPtr->changes.width) || (width != winPtr->changes.width)) && !IS_GRIDDED(wmPtr) && ((wmPtr->sizeHintsFlags & (PMinSize|PMaxSize)) == 0)) { wmPtr->flags |= WM_UPDATE_SIZE_HINTS; } if (wmPtr->flags & WM_UPDATE_SIZE_HINTS) { UpdateSizeHints(winPtr); } /* * If the geometry hasn't changed, be careful to use only a * resize operation. This is because of bugs in some window * managers (e.g. twm, as of 4/24/91) where they don't interpret * coordinates according to ICCCM. */ if ((x != winPtr->changes.x) || (y != winPtr->changes.y)) { wmPtr->configRequest = XNextRequest(winPtr->display); wmPtr->configWidth = width; wmPtr->configHeight = height; Tk_MoveResizeWindow((Tk_Window) winPtr, x, y, (unsigned) width, (unsigned) height); wmPtr->flags |= WM_CONFIG_PENDING; } else if ((width != wmPtr->configWidth) || (height != wmPtr->configHeight)) { wmPtr->configRequest = XNextRequest(winPtr->display); wmPtr->configWidth = width; wmPtr->configHeight = height; Tk_ResizeWindow((Tk_Window) winPtr, (unsigned) width, (unsigned) height); wmPtr->flags |= WM_CONFIG_PENDING; } } /* *-------------------------------------------------------------- * * UpdateSizeHints -- * * This procedure is called to update the window manager's * size hints information from the information in a WmInfo * structure. * * Results: * None. * * Side effects: * Properties get changed for winPtr. * *-------------------------------------------------------------- */ static void UpdateSizeHints(winPtr) TkWindow *winPtr; { register WmInfo *wmPtr = winPtr->wmInfoPtr; XSizeHints *hintsPtr; wmPtr->flags &= ~WM_UPDATE_SIZE_HINTS; #ifndef X11R3 hintsPtr = XAllocSizeHints(); if (hintsPtr == NULL) { return; } /* * Compute the pixel-based sizes for the various fields in the * size hints structure, based on the grid-based sizes in * our structure. */ if (IS_GRIDDED(wmPtr)) { hintsPtr->base_width = winPtr->reqWidth - (wmPtr->reqGridWidth * wmPtr->widthInc); if (hintsPtr->base_width < 0) { hintsPtr->base_width = 0; } hintsPtr->base_height = winPtr->reqHeight - (wmPtr->reqGridHeight * wmPtr->heightInc); if (hintsPtr->base_height < 0) { hintsPtr->base_height = 0; } hintsPtr->min_width = hintsPtr->base_width + (wmPtr->minWidth * wmPtr->widthInc); hintsPtr->min_height = hintsPtr->base_height + (wmPtr->minHeight * wmPtr->heightInc); hintsPtr->max_width = hintsPtr->base_width + (wmPtr->maxWidth * wmPtr->widthInc); hintsPtr->max_height = hintsPtr->base_height + (wmPtr->maxHeight * wmPtr->heightInc); } else { hintsPtr->min_width = wmPtr->minWidth; hintsPtr->min_height = wmPtr->minHeight; hintsPtr->max_width = wmPtr->maxWidth; hintsPtr->max_height = wmPtr->maxHeight; hintsPtr->base_width = 0; hintsPtr->base_height = 0; } hintsPtr->width_inc = wmPtr->widthInc; hintsPtr->height_inc = wmPtr->heightInc; hintsPtr->min_aspect.x = wmPtr->minAspect.x; hintsPtr->min_aspect.y = wmPtr->minAspect.y; hintsPtr->max_aspect.x = wmPtr->maxAspect.x; hintsPtr->max_aspect.y = wmPtr->maxAspect.y; hintsPtr->win_gravity = wmPtr->gravity; hintsPtr->flags = wmPtr->sizeHintsFlags; /* * If a window is non-gridded and no minimum or maximum size has * been specified, don't let the window be resized at all. */ if (!IS_GRIDDED(wmPtr) && ((wmPtr->sizeHintsFlags & (PMinSize|PMaxSize)) == 0)) { int width, height; width = wmPtr->width; height = wmPtr->height; if (width < 0) { width = winPtr->reqWidth; height = winPtr->reqHeight; } hintsPtr->min_width = hintsPtr->max_width = width; hintsPtr->min_height = hintsPtr->max_height = height; hintsPtr->flags |= PMinSize|PMaxSize; } /* * If min or max size isn't specified, fill in with extreme values * rather than leaving unspecified. Otherwise window manager may * do someting counter-intuitive like the last value ever specified. */ if (!(hintsPtr->flags & PMinSize)) { hintsPtr->min_width = hintsPtr->min_height = 0; hintsPtr->flags |= PMinSize; } if (!(hintsPtr->flags & PMaxSize)) { hintsPtr->max_width = hintsPtr->max_height = 1000000; hintsPtr->flags |= PMaxSize; } XSetWMNormalHints(winPtr->display, winPtr->window, hintsPtr); XFree((char *) hintsPtr); #endif /* X11R3 */ } /* *-------------------------------------------------------------- * * UpdateHints -- * * This procedure is called to update the window manager's * hints information from the information in a WmInfo * structure. * * Results: * None. * * Side effects: * Properties get changed for winPtr. * *-------------------------------------------------------------- */ static void UpdateHints(winPtr) TkWindow *winPtr; { WmInfo *wmPtr = winPtr->wmInfoPtr; if (wmPtr->flags & WM_NEVER_MAPPED) { return; } XSetWMHints(winPtr->display, winPtr->window, &wmPtr->hints); } /* *-------------------------------------------------------------- * * ParseGeometry -- * * This procedure parses a geometry string and updates * information used to control the geometry of a top-level * window. * * Results: * A standard Tcl return value, plus an error message in * interp->result if an error occurs. * * Side effects: * The size and/or location of winPtr may change. * *-------------------------------------------------------------- */ static int ParseGeometry(interp, string, winPtr) Tcl_Interp *interp; /* Used for error reporting. */ char *string; /* String containing new geometry. Has the * standard form "=wxh+x+y". */ TkWindow *winPtr; /* Pointer to top-level window whose * geometry is to be changed. */ { register WmInfo *wmPtr = winPtr->wmInfoPtr; int x, y, width, height, flags; char *end; register char *p = string; /* * The leading "=" is optional. */ if (*p == '=') { p++; } /* * Parse the width and height, if they are present. Don't * actually update any of the fields of wmPtr until we've * successfully parsed the entire geometry string. */ width = wmPtr->width; height = wmPtr->height; x = wmPtr->x; y = wmPtr->y; flags = wmPtr->flags; if (isdigit(*p)) { width = strtoul(p, &end, 10); p = end; if (*p != 'x') { goto error; } p++; if (!isdigit(*p)) { goto error; } height = strtoul(p, &end, 10); p = end; } /* * Parse the X and Y coordinates, if they are present. */ if (*p != '\0') { flags &= ~(WM_NEGATIVE_X | WM_NEGATIVE_Y); if (*p == '-') { flags |= WM_NEGATIVE_X; } else if (*p != '+') { goto error; } x = strtol(p+1, &end, 10); p = end; if (*p == '-') { flags |= WM_NEGATIVE_Y; } else if (*p != '+') { goto error; } y = strtol(p+1, &end, 10); if (*end != '\0') { goto error; } /* * Assume that the geometry information came from the user, * unless an explicit source has been specified. Otherwise * most window managers assume that the size hints were * program-specified and they ignore them. */ if ((wmPtr->sizeHintsFlags & (USPosition|PPosition)) == 0) { wmPtr->sizeHintsFlags |= USPosition; wmPtr->flags |= WM_UPDATE_SIZE_HINTS; } } /* * Everything was parsed OK. Update the fields of *wmPtr and * arrange for the appropriate information to be percolated out * to the window manager at the next idle moment. */ wmPtr->width = width; wmPtr->height = height; wmPtr->x = x; wmPtr->y = y; wmPtr->flags = flags; if (!(wmPtr->flags & (WM_UPDATE_PENDING|WM_NEVER_MAPPED))) { Tk_DoWhenIdle(UpdateGeometryInfo, (ClientData) winPtr); wmPtr->flags |= WM_UPDATE_PENDING; } return TCL_OK; error: Tcl_AppendResult(interp, "bad geometry specifier \"", string, "\"", (char *) NULL); return TCL_ERROR; } /* *---------------------------------------------------------------------- * * Tk_GetRootCoords -- * * Given a token for a window, this procedure traces through the * window's lineage to find the root-window coordinates corresponding * to point (0,0) in the window. * * Results: * The locations pointed to by xPtr and yPtr are filled in with * the root coordinates of the (0,0) point in tkwin. * * Side effects: * None. * *---------------------------------------------------------------------- */ void Tk_GetRootCoords(tkwin, xPtr, yPtr) Tk_Window tkwin; /* Token for window. */ int *xPtr; /* Where to store x-displacement of (0,0). */ int *yPtr; /* Where to store y-displacement of (0,0). */ { int x, y; register TkWindow *winPtr = (TkWindow *) tkwin; /* * Search back through this window's parents all the way to a * top-level window, combining the offsets of each window within * its parent. */ x = y = 0; while (1) { x += winPtr->changes.x + winPtr->changes.border_width; y += winPtr->changes.y + winPtr->changes.border_width; if (winPtr->flags & TK_TOP_LEVEL) { break; } winPtr = winPtr->parentPtr; } *xPtr = x; *yPtr = y; } /* *-------------------------------------------------------------- * * TkWmSetWmProtocols -- * Set the ICCCM WM_PROTOCOLS to be honored by this window. * Currently, it is just WM_DELETE_WINDOW. * * Results: * None. * * Side effects: * A window property may get updated. * *-------------------------------------------------------------- */ void TkWmSetWmProtocols(winPtr) TkWindow *winPtr; /* Newly-created top-level window. */ { if (winPtr->wmInfoPtr->flags & WM_NEVER_MAPPED) { return; } #ifndef X11R3 else { /* assemble the WM_PROTOCOLS that we honor */ int count = 0; Atom atomlist[8]; atomlist[count++] = Tk_InternAtom((Tk_Window) winPtr, "WM_DELETE_WINDOW"); /* * other WM_PROTOCOLS go here -- e.g... * atomlist[count++] = Tk_InternAtom((Tk_Window) winPtr, * "WM_SAVE_YOURSELF"); */ /* * assign the honor list to the window not all X11R4's have * XSetWmProtocols() so use XChangeProperty() */ /* XSetWmProtocols(winPtr->display, winPtr->window, atomlist, count); */ XChangeProperty(winPtr->display, winPtr->window, Tk_InternAtom((Tk_Window) winPtr, "WM_PROTOCOLS"), XA_ATOM, 32, PropModeReplace, (unsigned char *)atomlist, count); } #endif return; } /* *---------------------------------------------------------------------- * * TkWmProtocolEventProc -- * * Handle a WM_PROTOCOL ICCCM event sent by the window manager to * top level window. * * The WM_PROTOCOL's currently handled are: * * WM_DELETE_PROTOCOL: * * Results: None * * Side effects: * for WM_DELETE_WINDOW: * - window may be deleted if specified earlier by a * wm tcl command * - a tcl command may be executed if sepcified earlier by a * wm tcl command * * */ void TkWmProtocolEventProc(winPtr, eventPtr) TkWindow *winPtr; XEvent *eventPtr; { if ((Atom)(eventPtr->xclient.data.l)[0] == Tk_InternAtom((Tk_Window) winPtr, "WM_DELETE_WINDOW")) { WmInfo *wmPtr = winPtr->wmInfoPtr; if (wmPtr->deleteCmd) { if (*(wmPtr->deleteCmd) == '\0') { /* callback is empty, just delete the window */ Tk_DestroyWindow((Tk_Window) winPtr); } else { /* there is a callback so run it */ (void) Tcl_Eval(winPtr->mainPtr->interp, wmPtr->deleteCmd, 0, (char **)0); } } else { Tk_DestroyWindow((Tk_Window) winPtr); } } /* * else { .. other WM_ cases go here ... } */ return; } /* *---------------------------------------------------------------------- * * WmProtocolCmd * * implements * * wm protocol delete [command_str] * * right now just delete is supported for OPTION * * Kind of artificial, But makes it easier to merge into new * versions of Stock Tk. */ int WmProtocolCmd(interp, CmdPtr, argc, argv) Tcl_Interp *interp; char **CmdPtr; int argc; char **argv; { #define Cmd (*CmdPtr) switch(argc) { case 4: /* * return current command */ if (!Cmd || *Cmd == '\0') { return TCL_OK; } else { /* * chop off the * and return just the cmd */ int x = strlen(Cmd) - strlen(argv[2]) - 1; char tmpc = Cmd[x]; Cmd[x] = '\0'; { /* maybe should just have them put the window in the cmd */ Tcl_AppendResult(interp, Cmd, (char *)NULL); } /* * tack the blank and window name back on */ Cmd[x] = tmpc; return TCL_OK; } case 5: /* * (re)set command */ if (Cmd) { ckfree(Cmd); Cmd = (char *)NULL; } if (*argv[4] != '\0') { int x = strlen(argv[4]) + strlen(argv[2]) + 2; if (!(Cmd = ckalloc(x))) { perror("wm protocol:"); } else { sprintf(Cmd, "%s %s", argv[4], argv[2]); } } return TCL_OK; default: Tcl_AppendResult(interp, "wrong # of arguments: must be \"", argv[0], " protocol window [cmd]\"", (char *) NULL); return TCL_ERROR; } #undef Cmd } /* *---------------------------------------------------------------------- * * Tk_CoordsToWindow -- * * Given the root coordinates of a point, this procedure * returns the token for the top-most window covering that point, * if there exists such a window in this application. * * Results: * The return result is either a token for the window corresponding * to rootX and rootY, or else NULL to indicate that there is no such * window. * * Side effects: * None. * *---------------------------------------------------------------------- */ Tk_Window Tk_CoordsToWindow(rootX, rootY, tkwin) int rootX, rootY; /* Coordinates of point in root window. */ Tk_Window tkwin; /* Token for any window in application; * used to identify the application. */ { Window rootChild, dummy3, dummy4; int i, dummy1, dummy2; register WmInfo *wmPtr; register TkWindow *winPtr, *childPtr; TkWindow *nextPtr; /* Coordinates of highest child found so * far that contains point. */ int x, y; /* Coordinates in winPtr. */ int tmpx, tmpy, bd; Window *children; /* Children of winPtr, or NULL. */ unsigned int numChildren; /* Size of children array. */ /* * Step 1: find the top-level window that contains the desired * coordinates. */ if (XTranslateCoordinates(Tk_Display(tkwin), RootWindowOfScreen(Tk_Screen(tkwin)), RootWindowOfScreen(Tk_Screen(tkwin)), rootX, rootY, &dummy1, &dummy2, &rootChild) == False) { panic("Tk_CoordsToWindow get False return from XTranslateCoordinates"); } for (wmPtr = firstWmPtr; ; wmPtr = wmPtr->nextPtr) { if (wmPtr == NULL) { return NULL; } if ((wmPtr->reparent == rootChild) || ((wmPtr->reparent == None) && (wmPtr->winPtr->window == rootChild))) { break; } } winPtr = wmPtr->winPtr; if (winPtr->mainPtr != ((TkWindow *) tkwin)->mainPtr) { return NULL; } /* * Step 2: work down through the hierarchy underneath this window. * At each level, scan through all the children to see if any contain * the point. If none do, then we're done. If one does, then do the * same thing on that child. If two or more do, then fetch enough * information from the window server to figure out which is on top, * and repeat on that child. */ x = rootX; y = rootY; while (1) { x -= winPtr->changes.x; y -= winPtr->changes.y; nextPtr = NULL; children = NULL; for (childPtr = winPtr->childList; childPtr != NULL; childPtr = childPtr->nextPtr) { if (!Tk_IsMapped(childPtr) || (childPtr->flags & TK_TOP_LEVEL)) { continue; } tmpx = x - childPtr->changes.x; tmpy = y - childPtr->changes.y; bd = childPtr->changes.border_width; if ((tmpx < -bd) || (tmpy < -bd) || (tmpx >= (childPtr->changes.width + bd)) || (tmpy >= (childPtr->changes.height + bd))) { continue; } if (nextPtr == NULL) { nextPtr = childPtr; continue; } /* * More than one child of same parent overlaps point. Must * figure out which is on top. Keep a cache of the stacking * order for winPtr to help with this, in case there are >2 * children overlapping. */ if (children == NULL) { if (XQueryTree(winPtr->display, winPtr->window, &dummy3, &dummy4, &children, &numChildren) == 0) { panic("Tk_CoordsToWindow get error return from XQueryTree"); } } for (i = 0; i < numChildren; i++) { if (children[i] == childPtr->window) { break; } if (children[i] == nextPtr->window) { nextPtr = childPtr; break; } } } if (children != NULL) { XFree((char *) children); } if (nextPtr == NULL) { break; } winPtr = nextPtr; } return (Tk_Window) winPtr; } micropolis-activity/src/tk/tkscale.c0000664000076400007640000012650110724145723020037 0ustar simcitysimcity/* * tkScale.c -- * * This module implements a scale widgets for the Tk toolkit. * A scale displays a slider that can be adjusted to change a * value; it also displays numeric labels and a textual label, * if desired. * * Copyright 1990 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkScale.c,v 1.28 92/08/21 11:45:25 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tkconfig.h" #include "default.h" #include "tkint.h" /* * A data structure of the following type is kept for each scale * widget managed by this file: */ typedef struct { Tk_Window tkwin; /* Window that embodies the scale. NULL * means that the window has been destroyed * but the data structures haven't yet been * cleaned up.*/ Tcl_Interp *interp; /* Interpreter associated with scale. */ Tk_Uid orientUid; /* Orientation for window ("vertical" or * "horizontal"). */ int vertical; /* Non-zero means vertical orientation, * zero means horizontal. */ int value; /* Current value of scale. */ int fromValue; /* Value corresponding to left or top of * scale. */ int toValue; /* Value corresponding to right or bottom * of scale. */ int tickInterval; /* Distance between tick marks; 0 means * don't display any tick marks. */ char *command; /* Command prefix to use when invoking Tcl * commands because the scale value changed. * NULL means don't invoke commands. * Malloc'ed. */ int commandLength; /* Number of non-NULL bytes in command. */ char *label; /* Label to display above or to right of * scale; NULL means don't display a * label. Malloc'ed. */ int labelLength; /* Number of non-NULL chars. in label. */ Tk_Uid state; /* Normal or disabled. Value cannot be * changed when scale is disabled. */ /* * Information used when displaying widget: */ int borderWidth; /* Width of 3-D border around window. */ Tk_3DBorder bgBorder; /* Used for drawing background. */ Tk_3DBorder sliderBorder; /* Used for drawing slider in normal mode. */ Tk_3DBorder activeBorder; /* Used for drawing slider when active (i.e. * when mouse is in window). */ XFontStruct *fontPtr; /* Information about text font, or NULL. */ XColor *textColorPtr; /* Color for drawing text. */ GC textGC; /* GC for drawing text in normal mode. */ int width; /* Desired narrow dimension of scale, * in pixels. */ int length; /* Desired long dimension of scale, * in pixels. */ int relief; /* Indicates whether window as a whole is * raised, sunken, or flat. */ int offset; /* Zero if relief is TK_RELIEF_FLAT, * borderWidth otherwise. Indicates how * much interior stuff must be offset from * outside edges to leave room for border. */ int sliderLength; /* Length of slider, measured in pixels along * long dimension of scale. */ int showValue; /* Non-zero means to display the scale value * below or to the left of the slider; zero * means don't display the value. */ int tickPixels; /* Number of pixels required for widest tick * mark. 0 means don't display ticks.*/ int valuePixels; /* Number of pixels required for value text. */ int labelPixels; /* Number of pixels required for label. 0 * means don't display label. */ /* * Miscellaneous information: */ Cursor cursor; /* Current cursor for window, or None. */ int flags; /* Various flags; see below for * definitions. */ } Scale; /* * Flag bits for scales: * * REDRAW_SLIDER - 1 means slider (and numerical readout) need * to be redrawn. * REDRAW_OTHER - 1 means other stuff besides slider and value * need to be redrawn. * REDRAW_ALL - 1 means the entire widget needs to be redrawn. * ACTIVE - 1 means the widget is active (the mouse is * in its window). * BUTTON_PRESSED - 1 means a button press is in progress, so * slider should appear depressed and should be * draggable. */ #define REDRAW_SLIDER 1 #define REDRAW_OTHER 2 #define REDRAW_ALL 3 #define ACTIVE 4 #define BUTTON_PRESSED 8 /* * Space to leave between scale area and text. */ #define SPACING 2 /* * Information used for argv parsing. */ static Tk_ConfigSpec configSpecs[] = { {TK_CONFIG_BORDER, "-activeforeground", "activeForeground", "Background", DEF_SCALE_ACTIVE_FG_COLOR, Tk_Offset(Scale, activeBorder), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-activeforeground", "activeForeground", "Background", DEF_SCALE_ACTIVE_FG_MONO, Tk_Offset(Scale, activeBorder), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_BORDER, "-background", "background", "Background", DEF_SCALE_BG_COLOR, Tk_Offset(Scale, bgBorder), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-background", "background", "Background", DEF_SCALE_BG_MONO, Tk_Offset(Scale, bgBorder), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_SYNONYM, "-bd", "borderWidth", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_SYNONYM, "-bg", "background", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", DEF_SCALE_BORDER_WIDTH, Tk_Offset(Scale, borderWidth), 0}, {TK_CONFIG_STRING, "-command", "command", "Command", (char *) NULL, Tk_Offset(Scale, command), 0}, {TK_CONFIG_ACTIVE_CURSOR, "-cursor", "cursor", "Cursor", DEF_SCALE_CURSOR, Tk_Offset(Scale, cursor), TK_CONFIG_NULL_OK}, {TK_CONFIG_SYNONYM, "-fg", "foreground", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_FONT, "-font", "font", "Font", DEF_SCALE_FONT, Tk_Offset(Scale, fontPtr), 0}, {TK_CONFIG_COLOR, "-foreground", "foreground", "Foreground", DEF_SCALE_FG_COLOR, Tk_Offset(Scale, textColorPtr), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_COLOR, "-foreground", "foreground", "Foreground", DEF_SCALE_FG_MONO, Tk_Offset(Scale, textColorPtr), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_INT, "-from", "from", "From", DEF_SCALE_FROM, Tk_Offset(Scale, fromValue), 0}, {TK_CONFIG_STRING, "-label", "label", "Label", DEF_SCALE_LABEL, Tk_Offset(Scale, label), 0}, {TK_CONFIG_PIXELS, "-length", "length", "Length", DEF_SCALE_LENGTH, Tk_Offset(Scale, length), 0}, {TK_CONFIG_UID, "-orient", "orient", "Orient", DEF_SCALE_ORIENT, Tk_Offset(Scale, orientUid), 0}, {TK_CONFIG_RELIEF, "-relief", "relief", "Relief", DEF_SCALE_RELIEF, Tk_Offset(Scale, relief), 0}, {TK_CONFIG_BOOLEAN, "-showvalue", "showValue", "ShowValue", DEF_SCALE_SHOW_VALUE, Tk_Offset(Scale, showValue), 0}, {TK_CONFIG_BORDER, "-sliderforeground", "sliderForeground", "Background", DEF_SCALE_SLIDER_FG_COLOR, Tk_Offset(Scale, sliderBorder), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-sliderforeground", "sliderForeground", "Background", DEF_SCALE_SLIDER_FG_MONO, Tk_Offset(Scale, sliderBorder), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_PIXELS, "-sliderlength", "sliderLength", "SliderLength", DEF_SCALE_SLIDER_LENGTH, Tk_Offset(Scale, sliderLength), 0}, {TK_CONFIG_UID, "-state", "state", "State", DEF_SCALE_STATE, Tk_Offset(Scale, state), 0}, {TK_CONFIG_INT, "-tickinterval", "tickInterval", "TickInterval", DEF_SCALE_TICK_INTERVAL, Tk_Offset(Scale, tickInterval), 0}, {TK_CONFIG_INT, "-to", "to", "To", DEF_SCALE_TO, Tk_Offset(Scale, toValue), 0}, {TK_CONFIG_PIXELS, "-width", "width", "Width", DEF_SCALE_WIDTH, Tk_Offset(Scale, width), 0}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; /* * Forward declarations for procedures defined later in this file: */ static void ComputeScaleGeometry _ANSI_ARGS_((Scale *scalePtr)); static int ConfigureScale _ANSI_ARGS_((Tcl_Interp *interp, Scale *scalePtr, int argc, char **argv, int flags)); static void DestroyScale _ANSI_ARGS_((ClientData clientData)); static void DisplayHorizontalScale _ANSI_ARGS_(( ClientData clientData)); static void DisplayHorizontalValue _ANSI_ARGS_((Scale *scalePtr, int value, int bottom)); static void DisplayVerticalScale _ANSI_ARGS_(( ClientData clientData)); static void DisplayVerticalValue _ANSI_ARGS_((Scale *scalePtr, int value, int rightEdge)); static void EventuallyRedrawScale _ANSI_ARGS_((Scale *scalePtr, int what)); static int PixelToValue _ANSI_ARGS_((Scale *scalePtr, int x, int y)); static void ScaleEventProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); static void ScaleMouseProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); static int ScaleWidgetCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); static void SetScaleValue _ANSI_ARGS_((Scale *scalePtr, int value)); static int ValueToPixel _ANSI_ARGS_((Scale *scalePtr, int value)); /* *-------------------------------------------------------------- * * Tk_ScaleCmd -- * * This procedure is invoked to process the "scale" Tcl * command. See the user documentation for details on what * it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ int Tk_ScaleCmd(clientData, interp, argc, argv) ClientData clientData; /* Main window associated with * interpreter. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { Tk_Window tkwin = (Tk_Window) clientData; register Scale *scalePtr; Tk_Window new; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " pathName ?options?\"", (char *) NULL); return TCL_ERROR; } new = Tk_CreateWindowFromPath(interp, tkwin, argv[1], (char *) NULL); if (new == NULL) { return TCL_ERROR; } /* * Initialize fields that won't be initialized by ConfigureScale, * or which ConfigureScale expects to have reasonable values * (e.g. resource pointers). */ scalePtr = (Scale *) ckalloc(sizeof(Scale)); scalePtr->tkwin = new; scalePtr->interp = interp; scalePtr->value = 0; scalePtr->command = NULL; scalePtr->label = NULL; scalePtr->state = tkNormalUid; scalePtr->bgBorder = NULL; scalePtr->sliderBorder = NULL; scalePtr->activeBorder = NULL; scalePtr->fontPtr = NULL; scalePtr->textColorPtr = NULL; scalePtr->textGC = None; scalePtr->cursor = None; scalePtr->flags = 0; Tk_SetClass(scalePtr->tkwin, "Scale"); Tk_CreateEventHandler(scalePtr->tkwin, ExposureMask|StructureNotifyMask, ScaleEventProc, (ClientData) scalePtr); Tk_CreateEventHandler(scalePtr->tkwin, EnterWindowMask|LeaveWindowMask |PointerMotionMask|ButtonPressMask|ButtonReleaseMask, ScaleMouseProc, (ClientData) scalePtr); Tcl_CreateCommand(interp, Tk_PathName(scalePtr->tkwin), ScaleWidgetCmd, (ClientData) scalePtr, (void (*)()) NULL); if (ConfigureScale(interp, scalePtr, argc-2, argv+2, 0) != TCL_OK) { goto error; } interp->result = Tk_PathName(scalePtr->tkwin); return TCL_OK; error: Tk_DestroyWindow(scalePtr->tkwin); return TCL_ERROR; } /* *-------------------------------------------------------------- * * ScaleWidgetCmd -- * * This procedure is invoked to process the Tcl command * that corresponds to a widget managed by this module. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ static int ScaleWidgetCmd(clientData, interp, argc, argv) ClientData clientData; /* Information about scale * widget. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { register Scale *scalePtr = (Scale *) clientData; int result = TCL_OK; int length; char c; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " option ?arg arg ...?\"", (char *) NULL); return TCL_ERROR; } Tk_Preserve((ClientData) scalePtr); c = argv[1][0]; length = strlen(argv[1]); if ((c == 'c') && (strncmp(argv[1], "configure", length) == 0)) { if (argc == 2) { result = Tk_ConfigureInfo(interp, scalePtr->tkwin, configSpecs, (char *) scalePtr, (char *) NULL, 0); } else if (argc == 3) { result = Tk_ConfigureInfo(interp, scalePtr->tkwin, configSpecs, (char *) scalePtr, argv[2], 0); } else { result = ConfigureScale(interp, scalePtr, argc-2, argv+2, TK_CONFIG_ARGV_ONLY); } } else if ((c == 'g') && (strncmp(argv[1], "get", length) == 0)) { if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " get\"", (char *) NULL); goto error; } sprintf(interp->result, "%d", scalePtr->value); } else if ((c == 's') && (strncmp(argv[1], "set", length) == 0)) { int value; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " set value\"", (char *) NULL); goto error; } if (Tcl_GetInt(interp, argv[2], &value) != TCL_OK) { goto error; } if (scalePtr->state == tkNormalUid) { if ((value < scalePtr->fromValue) ^ (scalePtr->toValue < scalePtr->fromValue)) { value = scalePtr->fromValue; } if ((value > scalePtr->toValue) ^ (scalePtr->toValue < scalePtr->fromValue)) { value = scalePtr->toValue; } SetScaleValue(scalePtr, value); } } else { Tcl_AppendResult(interp, "bad option \"", argv[1], "\": must be configure, get, or set", (char *) NULL); goto error; } Tk_Release((ClientData) scalePtr); return result; error: Tk_Release((ClientData) scalePtr); return TCL_ERROR; } /* *---------------------------------------------------------------------- * * DestroyScale -- * * This procedure is invoked by Tk_EventuallyFree or Tk_Release * to clean up the internal structure of a button at a safe time * (when no-one is using it anymore). * * Results: * None. * * Side effects: * Everything associated with the scale is freed up. * *---------------------------------------------------------------------- */ static void DestroyScale(clientData) ClientData clientData; /* Info about scale widget. */ { register Scale *scalePtr = (Scale *) clientData; if (scalePtr->command != NULL) { ckfree(scalePtr->command); } if (scalePtr->label != NULL) { ckfree(scalePtr->label); } if (scalePtr->bgBorder != NULL) { Tk_Free3DBorder(scalePtr->bgBorder); } if (scalePtr->sliderBorder != NULL) { Tk_Free3DBorder(scalePtr->sliderBorder); } if (scalePtr->activeBorder != NULL) { Tk_Free3DBorder(scalePtr->activeBorder); } if (scalePtr->fontPtr != NULL) { Tk_FreeFontStruct(scalePtr->fontPtr); } if (scalePtr->textColorPtr != NULL) { Tk_FreeColor(scalePtr->textColorPtr); } if (scalePtr->textGC != None) { Tk_FreeGC(scalePtr->textGC); } if (scalePtr->cursor != None) { Tk_FreeCursor(scalePtr->cursor); } ckfree((char *) scalePtr); } /* *---------------------------------------------------------------------- * * ConfigureScale -- * * This procedure is called to process an argv/argc list, plus * the Tk option database, in order to configure (or * reconfigure) a scale widget. * * Results: * The return value is a standard Tcl result. If TCL_ERROR is * returned, then interp->result contains an error message. * * Side effects: * Configuration information, such as colors, border width, * etc. get set for scalePtr; old resources get freed, * if there were any. * *---------------------------------------------------------------------- */ static int ConfigureScale(interp, scalePtr, argc, argv, flags) Tcl_Interp *interp; /* Used for error reporting. */ register Scale *scalePtr; /* Information about widget; may or may * not already have values for some fields. */ int argc; /* Number of valid entries in argv. */ char **argv; /* Arguments. */ int flags; /* Flags to pass to Tk_ConfigureWidget. */ { XGCValues gcValues; GC newGC; int length; if (Tk_ConfigureWidget(interp, scalePtr->tkwin, configSpecs, argc, argv, (char *) scalePtr, flags) != TCL_OK) { return TCL_ERROR; } /* * A few options need special processing, such as parsing the * orientation or setting the background from a 3-D border. */ length = strlen(scalePtr->orientUid); if (strncmp(scalePtr->orientUid, "vertical", length) == 0) { scalePtr->vertical = 1; } else if (strncmp(scalePtr->orientUid, "horizontal", length) == 0) { scalePtr->vertical = 0; } else { Tcl_AppendResult(interp, "bad orientation \"", scalePtr->orientUid, "\": must be vertical or horizontal", (char *) NULL); return TCL_ERROR; } if ((scalePtr->state != tkNormalUid) && (scalePtr->state != tkDisabledUid)) { Tcl_AppendResult(interp, "bad state value \"", scalePtr->state, "\": must be normal or disabled", (char *) NULL); scalePtr->state = tkNormalUid; return TCL_ERROR; } /* * Make sure that the tick interval has the right sign so that * addition moves from fromValue to toValue. */ if ((scalePtr->tickInterval < 0) ^ ((scalePtr->toValue - scalePtr->fromValue) < 0)) { scalePtr->tickInterval = -scalePtr->tickInterval; } /* * Set the scale value to itself; all this does is to make sure * that the scale's value is within the new acceptable range for * the scale. */ SetScaleValue(scalePtr, scalePtr->value); if (scalePtr->command != NULL) { scalePtr->commandLength = strlen(scalePtr->command); } else { scalePtr->commandLength = 0; } if (scalePtr->label != NULL) { scalePtr->labelLength = strlen(scalePtr->label); } else { scalePtr->labelLength = 0; } Tk_SetBackgroundFromBorder(scalePtr->tkwin, scalePtr->bgBorder); gcValues.font = scalePtr->fontPtr->fid; gcValues.foreground = scalePtr->textColorPtr->pixel; newGC = Tk_GetGC(scalePtr->tkwin, GCForeground|GCFont, &gcValues); if (scalePtr->textGC != None) { Tk_FreeGC(scalePtr->textGC); } scalePtr->textGC = newGC; if (scalePtr->relief != TK_RELIEF_FLAT) { scalePtr->offset = scalePtr->borderWidth; } else { scalePtr->offset = 0; } /* * Recompute display-related information, and let the geometry * manager know how much space is needed now. */ ComputeScaleGeometry(scalePtr); EventuallyRedrawScale(scalePtr, REDRAW_ALL); return TCL_OK; } /* *---------------------------------------------------------------------- * * ComputeScaleGeometry -- * * This procedure is called to compute various geometrical * information for a scale, such as where various things get * displayed. It's called when the window is reconfigured. * * Results: * None. * * Side effects: * Display-related numbers get changed in *scrollPtr. The * geometry manager gets told about the window's preferred size. * *---------------------------------------------------------------------- */ static void ComputeScaleGeometry(scalePtr) register Scale *scalePtr; /* Information about widget. */ { XCharStruct bbox; char valueString[30]; int dummy, lineHeight; /* * Horizontal scales are simpler than vertical ones because * all sizes are the same (the height of a line of text); * handle them first and then quit. */ if (!scalePtr->vertical) { lineHeight = scalePtr->fontPtr->ascent + scalePtr->fontPtr->descent; if (scalePtr->tickInterval != 0) { scalePtr->tickPixels = lineHeight; } else { scalePtr->tickPixels = 0; } if (scalePtr->showValue) { scalePtr->valuePixels = lineHeight + SPACING; } else { scalePtr->valuePixels = 0; } if (scalePtr->labelLength != 0) { scalePtr->labelPixels = lineHeight; } else { scalePtr->labelPixels = 0; } Tk_GeometryRequest(scalePtr->tkwin, scalePtr->length + 2*scalePtr->offset, scalePtr->tickPixels + scalePtr->valuePixels + scalePtr->width + 2*scalePtr->borderWidth + scalePtr->labelPixels + 2*scalePtr->offset); Tk_SetInternalBorder(scalePtr->tkwin, scalePtr->borderWidth); return; } /* * Vertical scale: compute the amount of space needed for tick marks * and current value by formatting strings for the two end points; * use whichever length is longer. */ sprintf(valueString, "%d", scalePtr->fromValue); XTextExtents(scalePtr->fontPtr, valueString, strlen(valueString), &dummy, &dummy, &dummy, &bbox); scalePtr->tickPixels = bbox.rbearing + bbox.lbearing; sprintf(valueString, "%d", scalePtr->toValue); XTextExtents(scalePtr->fontPtr, valueString, strlen(valueString), &dummy, &dummy, &dummy, &bbox); if (scalePtr->tickPixels < bbox.rbearing + bbox.lbearing) { scalePtr->tickPixels = bbox.rbearing + bbox.lbearing; } /* * Pad the value with a bit of extra space for prettier printing. */ scalePtr->tickPixels += scalePtr->fontPtr->ascent/2; scalePtr->valuePixels = scalePtr->tickPixels; if (scalePtr->tickInterval == 0) { scalePtr->tickPixels = 0; } if (!scalePtr->showValue) { scalePtr->valuePixels = 0; } if (scalePtr->labelLength == 0) { scalePtr->labelPixels = 0; } else { XTextExtents(scalePtr->fontPtr, scalePtr->label, scalePtr->labelLength, &dummy, &dummy, &dummy, &bbox); scalePtr->labelPixels = bbox.rbearing + bbox.lbearing + scalePtr->fontPtr->ascent; } Tk_GeometryRequest(scalePtr->tkwin, 4*scalePtr->borderWidth + scalePtr->tickPixels + scalePtr->valuePixels + SPACING + scalePtr->width + scalePtr->labelPixels, scalePtr->length); Tk_SetInternalBorder(scalePtr->tkwin, scalePtr->borderWidth); } /* *-------------------------------------------------------------- * * DisplayVerticalScale -- * * This procedure redraws the contents of a vertical scale * window. It is invoked as a do-when-idle handler, so it only * runs when there's nothing else for the application to do. * * Results: * None. * * Side effects: * Information appears on the screen. * *-------------------------------------------------------------- */ static void DisplayVerticalScale(clientData) ClientData clientData; /* Information about widget. */ { register Scale *scalePtr = (Scale *) clientData; register Tk_Window tkwin = scalePtr->tkwin; int tickRightEdge, valueRightEdge, labelLeftEdge, scaleLeftEdge; int totalPixels, x, y, width, height, shadowWidth, tickValue; int relief; Tk_3DBorder sliderBorder; if ((scalePtr->tkwin == NULL) || !Tk_IsMapped(tkwin)) { goto done; } /* * Scanning from left to right across the window, the window * will contain four columns: ticks, value, scale, and label. * Compute the x-coordinate for each of the columns. */ totalPixels = scalePtr->tickPixels + scalePtr->valuePixels + 2*scalePtr->borderWidth + scalePtr->width + 2*SPACING + scalePtr->labelPixels; tickRightEdge = (Tk_Width(tkwin) - totalPixels)/2 + scalePtr->tickPixels; valueRightEdge = tickRightEdge + scalePtr->valuePixels; scaleLeftEdge = valueRightEdge + SPACING; labelLeftEdge = scaleLeftEdge + 2*scalePtr->borderWidth + scalePtr->width + scalePtr->fontPtr->ascent/2; /* * Display the information from left to right across the window. */ if (scalePtr->flags & REDRAW_OTHER) { XClearWindow(Tk_Display(tkwin), Tk_WindowId(tkwin)); /* * Display the tick marks. */ if (scalePtr->tickPixels != 0) { for (tickValue = scalePtr->fromValue; ; tickValue += scalePtr->tickInterval) { if (scalePtr->toValue > scalePtr->fromValue) { if (tickValue > scalePtr->toValue) { break; } } else { if (tickValue < scalePtr->toValue) { break; } } DisplayVerticalValue(scalePtr, tickValue, tickRightEdge); } } } /* * Display the value, if it is desired. If not redisplaying the * entire window, clear the area of the value to get rid of the * old value displayed there. */ if (scalePtr->showValue) { if (!(scalePtr->flags & REDRAW_OTHER)) { XClearArea(Tk_Display(tkwin), Tk_WindowId(tkwin), valueRightEdge-scalePtr->valuePixels, scalePtr->offset, scalePtr->valuePixels, Tk_Height(tkwin) - 2*scalePtr->offset, False); } DisplayVerticalValue(scalePtr, scalePtr->value, valueRightEdge); } /* * Display the scale and the slider. If not redisplaying the * entire window, must clear the trench area to erase the old * slider, but don't need to redraw the border. */ if (scalePtr->flags & REDRAW_OTHER) { Tk_Draw3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), scalePtr->bgBorder, scaleLeftEdge, scalePtr->offset, scalePtr->width + 2*scalePtr->borderWidth, Tk_Height(tkwin) - 2*scalePtr->offset, scalePtr->borderWidth, TK_RELIEF_SUNKEN); } else { XClearArea(Tk_Display(tkwin), Tk_WindowId(tkwin), scaleLeftEdge + scalePtr->borderWidth, scalePtr->offset + scalePtr->borderWidth, scalePtr->width, Tk_Height(tkwin) - 2*scalePtr->offset - 2*scalePtr->borderWidth, False); } if (scalePtr->flags & ACTIVE) { sliderBorder = scalePtr->activeBorder; } else { sliderBorder = scalePtr->sliderBorder; } width = scalePtr->width; height = scalePtr->sliderLength/2; x = scaleLeftEdge + scalePtr->borderWidth; y = ValueToPixel(scalePtr, scalePtr->value) - height; shadowWidth = scalePtr->borderWidth/2; if (shadowWidth == 0) { shadowWidth = 1; } relief = (scalePtr->flags & BUTTON_PRESSED) ? TK_RELIEF_SUNKEN : TK_RELIEF_RAISED; Tk_Draw3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), sliderBorder, x, y, width, 2*height, shadowWidth, relief); x += shadowWidth; y += shadowWidth; width -= 2*shadowWidth; height -= shadowWidth; Tk_Fill3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), sliderBorder, x, y, width, height, shadowWidth, relief); Tk_Fill3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), sliderBorder, x, y+height, width, height, shadowWidth, relief); /* * Draw the label to the right of the scale. */ if ((scalePtr->flags & REDRAW_OTHER) && (scalePtr->labelPixels != 0)) { XDrawString(Tk_Display(scalePtr->tkwin), Tk_WindowId(scalePtr->tkwin), scalePtr->textGC, labelLeftEdge, scalePtr->offset + (3*scalePtr->fontPtr->ascent)/2, scalePtr->label, scalePtr->labelLength); } /* * Draw the window border. */ if ((scalePtr->flags & REDRAW_OTHER) && (scalePtr->relief != TK_RELIEF_FLAT)) { Tk_Draw3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), scalePtr->bgBorder, 0, 0, Tk_Width(tkwin), Tk_Height(tkwin), scalePtr->borderWidth, scalePtr->relief); } done: scalePtr->flags &= ~REDRAW_ALL; } /* *---------------------------------------------------------------------- * * DisplayVerticalValue -- * * This procedure is called to display values (scale readings) * for vertically-oriented scales. * * Results: * None. * * Side effects: * The numerical value corresponding to value is displayed with * its right edge at "rightEdge", and at a vertical position in * the scale that corresponds to "value". * *---------------------------------------------------------------------- */ static void DisplayVerticalValue(scalePtr, value, rightEdge) register Scale *scalePtr; /* Information about widget in which to * display value. */ int value; /* Y-coordinate of number to display, * specified in application coords, not * in pixels (we'll compute pixels). */ int rightEdge; /* X-coordinate of right edge of text, * specified in pixels. */ { register Tk_Window tkwin = scalePtr->tkwin; int y, dummy, length; char valueString[30]; XCharStruct bbox; y = ValueToPixel(scalePtr, value) + scalePtr->fontPtr->ascent/2; sprintf(valueString, "%d", value); length = strlen(valueString); XTextExtents(scalePtr->fontPtr, valueString, length, &dummy, &dummy, &dummy, &bbox); /* * Adjust the y-coordinate if necessary to keep the text entirely * inside the window. */ if ((y - bbox.ascent) < scalePtr->offset) { y = scalePtr->offset + bbox.ascent; } if ((y + bbox.descent) > (Tk_Height(tkwin) - scalePtr->offset)) { y = Tk_Height(tkwin) - scalePtr->offset - bbox.descent; } XDrawString(Tk_Display(tkwin), Tk_WindowId(tkwin), scalePtr->textGC, rightEdge - bbox.rbearing, y, valueString, length); } /* *-------------------------------------------------------------- * * DisplayHorizontalScale -- * * This procedure redraws the contents of a horizontal scale * window. It is invoked as a do-when-idle handler, so it only * runs when there's nothing else for the application to do. * * Results: * None. * * Side effects: * Information appears on the screen. * *-------------------------------------------------------------- */ static void DisplayHorizontalScale(clientData) ClientData clientData; /* Information about widget. */ { register Scale *scalePtr = (Scale *) clientData; register Tk_Window tkwin = scalePtr->tkwin; int tickBottom, valueBottom, labelBottom, scaleBottom; int totalPixels, x, y, width, height, shadowWidth, tickValue; int relief; Tk_3DBorder sliderBorder; if ((scalePtr->tkwin == NULL) || !Tk_IsMapped(tkwin)) { goto done; } /* * Scanning from bottom to top across the window, the window * will contain four rows: ticks, value, scale, and label. * Compute the y-coordinate for each of the rows. */ totalPixels = scalePtr->tickPixels + scalePtr->valuePixels + 2*scalePtr->borderWidth + scalePtr->width + scalePtr->labelPixels; tickBottom = (Tk_Height(tkwin) + totalPixels)/2 - 1; valueBottom = tickBottom - scalePtr->tickPixels; scaleBottom = valueBottom - scalePtr->valuePixels; labelBottom = scaleBottom - 2*scalePtr->borderWidth - scalePtr->width; /* * Display the information from bottom to top across the window. */ if (scalePtr->flags & REDRAW_OTHER) { XClearWindow(Tk_Display(tkwin), Tk_WindowId(tkwin)); /* * Display the tick marks. */ if (scalePtr->tickPixels != 0) { for (tickValue = scalePtr->fromValue; ; tickValue += scalePtr->tickInterval) { if (scalePtr->toValue > scalePtr->fromValue) { if (tickValue > scalePtr->toValue) { break; } } else { if (tickValue < scalePtr->toValue) { break; } } DisplayHorizontalValue(scalePtr, tickValue, tickBottom); } } } /* * Display the value, if it is desired. If not redisplaying the * entire window, clear the area of the value to get rid of the * old value displayed there. */ if (scalePtr->showValue) { if (!(scalePtr->flags & REDRAW_OTHER)) { XClearArea(Tk_Display(tkwin), Tk_WindowId(tkwin), scalePtr->offset, scaleBottom + 1, Tk_Width(tkwin) - 2*scalePtr->offset, valueBottom - scaleBottom, False); } DisplayHorizontalValue(scalePtr, scalePtr->value, valueBottom); } /* * Display the scale and the slider. If not redisplaying the * entire window, must clear the trench area to erase the old * slider, but don't need to redraw the border. */ y = scaleBottom - 2*scalePtr->borderWidth - scalePtr->width + 1; if (scalePtr->flags & REDRAW_OTHER) { Tk_Draw3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), scalePtr->bgBorder, scalePtr->offset, y, Tk_Width(tkwin) - 2*scalePtr->offset, scalePtr->width + 2*scalePtr->borderWidth, scalePtr->borderWidth, TK_RELIEF_SUNKEN); } else { XClearArea(Tk_Display(tkwin), Tk_WindowId(tkwin), scalePtr->offset + scalePtr->borderWidth, y + scalePtr->borderWidth, Tk_Width(tkwin) - 2*scalePtr->offset - 2*scalePtr->borderWidth, scalePtr->width, False); } if (scalePtr->flags & ACTIVE) { sliderBorder = scalePtr->activeBorder; } else { sliderBorder = scalePtr->sliderBorder; } width = scalePtr->sliderLength/2; height = scalePtr->width; x = ValueToPixel(scalePtr, scalePtr->value) - width; y += scalePtr->borderWidth; shadowWidth = scalePtr->borderWidth/2; if (shadowWidth == 0) { shadowWidth = 1; } relief = (scalePtr->flags & BUTTON_PRESSED) ? TK_RELIEF_SUNKEN : TK_RELIEF_RAISED; Tk_Draw3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), sliderBorder, x, y, 2*width, height, shadowWidth, relief); x += shadowWidth; y += shadowWidth; width -= shadowWidth; height -= 2*shadowWidth; Tk_Fill3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), sliderBorder, x, y, width, height, shadowWidth, relief); Tk_Fill3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), sliderBorder, x+width, y, width, height, shadowWidth, relief); /* * Draw the label to the top of the scale. */ if ((scalePtr->flags & REDRAW_OTHER) && (scalePtr->labelPixels != 0)) { XDrawString(Tk_Display(scalePtr->tkwin), Tk_WindowId(scalePtr->tkwin), scalePtr->textGC, scalePtr->offset + scalePtr->fontPtr->ascent/2, labelBottom - scalePtr->fontPtr->descent, scalePtr->label, scalePtr->labelLength); } /* * Draw the window border. */ if ((scalePtr->flags & REDRAW_OTHER) && (scalePtr->relief != TK_RELIEF_FLAT)) { Tk_Draw3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), scalePtr->bgBorder, 0, 0, Tk_Width(tkwin), Tk_Height(tkwin), scalePtr->borderWidth, scalePtr->relief); } done: scalePtr->flags &= ~REDRAW_ALL; } /* *---------------------------------------------------------------------- * * DisplayHorizontalValue -- * * This procedure is called to display values (scale readings) * for horizontally-oriented scales. * * Results: * None. * * Side effects: * The numerical value corresponding to value is displayed with * its bottom edge at "bottom", and at a horizontal position in * the scale that corresponds to "value". * *---------------------------------------------------------------------- */ static void DisplayHorizontalValue(scalePtr, value, bottom) register Scale *scalePtr; /* Information about widget in which to * display value. */ int value; /* Y-coordinate of number to display, * specified in application coords, not * in pixels (we'll compute pixels). */ int bottom; /* Y-coordinate of bottom edge of text, * specified in pixels. */ { register Tk_Window tkwin = scalePtr->tkwin; int x, y, dummy, length; char valueString[30]; XCharStruct bbox; x = ValueToPixel(scalePtr, value); y = bottom - scalePtr->fontPtr->descent; sprintf(valueString, "%d", value); length = strlen(valueString); XTextExtents(scalePtr->fontPtr, valueString, length, &dummy, &dummy, &dummy, &bbox); /* * Adjust the x-coordinate if necessary to keep the text entirely * inside the window. */ x -= (bbox.lbearing + bbox.rbearing)/2; if ((x - bbox.lbearing) < scalePtr->offset) { x = scalePtr->offset + bbox.lbearing; } if ((y + bbox.rbearing) > (Tk_Width(tkwin) - scalePtr->offset)) { x = Tk_Width(tkwin) - scalePtr->offset - bbox.rbearing; } XDrawString(Tk_Display(tkwin), Tk_WindowId(tkwin), scalePtr->textGC, x, y, valueString, length); } /* *---------------------------------------------------------------------- * * PixelToValue -- * * Given a pixel within a scale window, return the scale * reading corresponding to that pixel. * * Results: * An integer scale reading. * * Side effects: * None. * *---------------------------------------------------------------------- */ static int PixelToValue(scalePtr, x, y) register Scale *scalePtr; /* Information about widget. */ int x, y; /* Coordinates of point within * window. */ { int value, pixelRange; if (scalePtr->vertical) { pixelRange = Tk_Height(scalePtr->tkwin) - scalePtr->sliderLength - 2*scalePtr->offset - 2*scalePtr->borderWidth; value = y; } else { pixelRange = Tk_Width(scalePtr->tkwin) - scalePtr->sliderLength - 2*scalePtr->offset - 2*scalePtr->borderWidth; value = x; } if (pixelRange <= 0) { /* * Not enough room for the slider to actually slide: just return * the scale's current value. */ return scalePtr->value; } value -= scalePtr->sliderLength/2 + scalePtr->offset + scalePtr->borderWidth; if (value < 0) { value = 0; } if (value > pixelRange) { value = pixelRange; } if (scalePtr->toValue > scalePtr->fromValue) { value = scalePtr->fromValue + ((value * (scalePtr->toValue - scalePtr->fromValue)) + pixelRange/2)/pixelRange; } else { value = scalePtr->toValue + (((pixelRange - value) * (scalePtr->fromValue - scalePtr->toValue)) + pixelRange/2)/pixelRange; } return value; } /* *---------------------------------------------------------------------- * * ValueToPixel -- * * Given a reading of the scale, return the x-coordinate or * y-coordinate corresponding to that reading, depending on * whether the scale is vertical or horizontal, respectively. * * Results: * An integer value giving the pixel location corresponding * to reading. The value is restricted to lie within the * defined range for the scale. * * Side effects: * None. * *---------------------------------------------------------------------- */ static int ValueToPixel(scalePtr, value) register Scale *scalePtr; /* Information about widget. */ int value; /* Reading of the widget. */ { int y, pixelRange, valueRange; valueRange = scalePtr->toValue - scalePtr->fromValue; pixelRange = (scalePtr->vertical ? Tk_Height(scalePtr->tkwin) : Tk_Width(scalePtr->tkwin)) - scalePtr->sliderLength - 2*scalePtr->offset - 2*scalePtr->borderWidth; y = ((value - scalePtr->fromValue) * pixelRange + valueRange/2) / valueRange; if (y < 0) { y = 0; } else if (y > pixelRange) { y = pixelRange; } y += scalePtr->sliderLength/2 + scalePtr->offset + scalePtr->borderWidth; return y; } /* *-------------------------------------------------------------- * * ScaleEventProc -- * * This procedure is invoked by the Tk dispatcher for various * events on scales. * * Results: * None. * * Side effects: * When the window gets deleted, internal structures get * cleaned up. When it gets exposed, it is redisplayed. * *-------------------------------------------------------------- */ static void ScaleEventProc(clientData, eventPtr) ClientData clientData; /* Information about window. */ XEvent *eventPtr; /* Information about event. */ { Scale *scalePtr = (Scale *) clientData; if ((eventPtr->type == Expose) && (eventPtr->xexpose.count == 0)) { EventuallyRedrawScale(scalePtr, REDRAW_ALL); } else if (eventPtr->type == DestroyNotify) { Tcl_DeleteCommand(scalePtr->interp, Tk_PathName(scalePtr->tkwin)); scalePtr->tkwin = NULL; if (scalePtr->flags & REDRAW_ALL) { if (scalePtr->vertical) { Tk_CancelIdleCall(DisplayVerticalScale, (ClientData) scalePtr); } else { Tk_CancelIdleCall(DisplayHorizontalScale, (ClientData) scalePtr); } } Tk_EventuallyFree((ClientData) scalePtr, DestroyScale); } else if (eventPtr->type == ConfigureNotify) { ComputeScaleGeometry(scalePtr); } } /* *-------------------------------------------------------------- * * ScaleMouseProc -- * * This procedure is called back by Tk in response to * mouse events such as window entry, window exit, mouse * motion, and button presses. * * Results: * None. * * Side effects: * This procedure implements the "feel" of the scale by * issuing commands in response to button presses and mouse * motion. * *-------------------------------------------------------------- */ static void ScaleMouseProc(clientData, eventPtr) ClientData clientData; /* Information about window. */ register XEvent *eventPtr; /* Information about event. */ { register Scale *scalePtr = (Scale *) clientData; if (scalePtr->state != tkNormalUid) { return; } Tk_Preserve((ClientData) scalePtr); if (eventPtr->type == EnterNotify) { scalePtr->flags |= ACTIVE; EventuallyRedrawScale(scalePtr, REDRAW_SLIDER); } else if (eventPtr->type == LeaveNotify) { scalePtr->flags &= ~ACTIVE; EventuallyRedrawScale(scalePtr, REDRAW_SLIDER); } else if ((eventPtr->type == MotionNotify) && (scalePtr->flags & BUTTON_PRESSED)) { SetScaleValue(scalePtr, PixelToValue(scalePtr, eventPtr->xmotion.x, eventPtr->xmotion.y)); } else if ((eventPtr->type == ButtonPress) /* && (eventPtr->xbutton.button == Button1) */ && (eventPtr->xbutton.state == 0)) { scalePtr->flags |= BUTTON_PRESSED; SetScaleValue(scalePtr, PixelToValue(scalePtr, eventPtr->xbutton.x, eventPtr->xbutton.y)); EventuallyRedrawScale(scalePtr, REDRAW_SLIDER); } else if ((eventPtr->type == ButtonRelease) /* && (eventPtr->xbutton.button == Button1) */ && (scalePtr->flags & BUTTON_PRESSED)) { scalePtr->flags &= ~BUTTON_PRESSED; EventuallyRedrawScale(scalePtr, REDRAW_SLIDER); } Tk_Release((ClientData) scalePtr); } /* *-------------------------------------------------------------- * * SetScaleValue -- * * This procedure changes the value of a scale and invokes * a Tcl command to reflect the current position of a scale * * Results: * None. * * Side effects: * A Tcl command is invoked, and an additional error-processing * command may also be invoked. The scale's slider is redrawn. * *-------------------------------------------------------------- */ static void SetScaleValue(scalePtr, value) register Scale *scalePtr; /* Info about widget. */ int value; /* New value for scale. Gets * adjusted if it's off the scale. */ { int result; char string[20]; if ((value < scalePtr->fromValue) ^ (scalePtr->toValue < scalePtr->fromValue)) { value = scalePtr->fromValue; } if ((value > scalePtr->toValue) ^ (scalePtr->toValue < scalePtr->fromValue)) { value = scalePtr->toValue; } if (value == scalePtr->value) { return; } scalePtr->value = value; EventuallyRedrawScale(scalePtr, REDRAW_SLIDER); sprintf(string, " %d", scalePtr->value); result = Tcl_VarEval(scalePtr->interp, scalePtr->command, string, (char *) NULL); if (result != TCL_OK) { TkBindError(scalePtr->interp); } } /* *-------------------------------------------------------------- * * EventuallyRedrawScale -- * * Arrange for part or all of a scale widget to redrawn at * the next convenient time in the future. * * Results: * None. * * Side effects: * If "what" is REDRAW_SLIDER then just the slider and the * value readout will be redrawn; if "what" is REDRAW_ALL * then the entire widget will be redrawn. * *-------------------------------------------------------------- */ static void EventuallyRedrawScale(scalePtr, what) register Scale *scalePtr; /* Information about widget. */ int what; /* What to redraw: REDRAW_SLIDER * or REDRAW_ALL. */ { if ((what == 0) || (scalePtr->tkwin == NULL) || !Tk_IsMapped(scalePtr->tkwin)) { return; } if ((scalePtr->flags & REDRAW_ALL) == 0) { if (scalePtr->vertical) { Tk_DoWhenIdle(DisplayVerticalScale, (ClientData) scalePtr); } else { Tk_DoWhenIdle(DisplayHorizontalScale, (ClientData) scalePtr); } } scalePtr->flags |= what; } micropolis-activity/src/tk/tkget.c0000664000076400007640000003412010724145723017522 0ustar simcitysimcity/* * tkGet.c -- * * This file contains a number of "Tk_GetXXX" procedures, which * parse text strings into useful forms for Tk. This file has * the simpler procedures, like Tk_GetDirection and Tk_GetUid. * The more complex procedures like Tk_GetColor are in separate * files. * * Copyright 1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkGet.c,v 1.5 92/08/10 09:02:46 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include #include "tkconfig.h" /* * The hash table below is used to keep track of all the Tk_Uids created * so far. */ static Tcl_HashTable uidTable; static int initialized = 0; /* *-------------------------------------------------------------- * * Tk_GetAnchor -- * * Given a string, return the corresponding Tk_Anchor. * * Results: * The return value is a standard Tcl return result. If * TCL_OK is returned, then everything went well and the * position is stored at *anchorPtr; otherwise TCL_ERROR * is returned and an error message is left in * interp->result. * * Side effects: * None. * *-------------------------------------------------------------- */ int Tk_GetAnchor(interp, string, anchorPtr) Tcl_Interp *interp; /* Use this for error reporting. */ char *string; /* String describing a direction. */ Tk_Anchor *anchorPtr; /* Where to store Tk_Anchor corresponding * to string. */ { switch (string[0]) { case 'n': if (string[1] == 0) { *anchorPtr = TK_ANCHOR_N; return TCL_OK; } else if ((string[1] == 'e') && (string[2] == 0)) { *anchorPtr = TK_ANCHOR_NE; return TCL_OK; } else if ((string[1] == 'w') && (string[2] == 0)) { *anchorPtr = TK_ANCHOR_NW; return TCL_OK; } goto error; case 's': if (string[1] == 0) { *anchorPtr = TK_ANCHOR_S; return TCL_OK; } else if ((string[1] == 'e') && (string[2] == 0)) { *anchorPtr = TK_ANCHOR_SE; return TCL_OK; } else if ((string[1] == 'w') && (string[2] == 0)) { *anchorPtr = TK_ANCHOR_SW; return TCL_OK; } else { goto error; } case 'e': if (string[1] == 0) { *anchorPtr = TK_ANCHOR_E; return TCL_OK; } goto error; case 'w': if (string[1] == 0) { *anchorPtr = TK_ANCHOR_W; return TCL_OK; } goto error; case 'c': if (strncmp(string, "center", strlen(string)) == 0) { *anchorPtr = TK_ANCHOR_CENTER; return TCL_OK; } goto error; } error: Tcl_AppendResult(interp, "bad anchor position \"", string, "\": must be n, ne, e, se, s, sw, w, nw, or center", (char *) NULL); return TCL_ERROR; } /* *-------------------------------------------------------------- * * Tk_NameOfAnchor -- * * Given a Tk_Anchor, return the string that corresponds * to it. * * Results: * None. * * Side effects: * None. * *-------------------------------------------------------------- */ char * Tk_NameOfAnchor(anchor) Tk_Anchor anchor; /* Anchor for which identifying string * is desired. */ { switch (anchor) { case TK_ANCHOR_N: return "n"; case TK_ANCHOR_NE: return "ne"; case TK_ANCHOR_E: return "e"; case TK_ANCHOR_SE: return "se"; case TK_ANCHOR_S: return "s"; case TK_ANCHOR_SW: return "sw"; case TK_ANCHOR_W: return "w"; case TK_ANCHOR_NW: return "nw"; case TK_ANCHOR_CENTER: return "center"; } return "unknown anchor position"; } /* *-------------------------------------------------------------- * * Tk_GetJoinStyle -- * * Given a string, return the corresponding Tk_JoinStyle. * * Results: * The return value is a standard Tcl return result. If * TCL_OK is returned, then everything went well and the * justification is stored at *joinPtr; otherwise * TCL_ERROR is returned and an error message is left in * interp->result. * * Side effects: * None. * *-------------------------------------------------------------- */ int Tk_GetJoinStyle(interp, string, joinPtr) Tcl_Interp *interp; /* Use this for error reporting. */ char *string; /* String describing a justification style. */ int *joinPtr; /* Where to store join style corresponding * to string. */ { int c, length; c = string[0]; length = strlen(string); if ((c == 'b') && (strncmp(string, "bevel", length) == 0)) { *joinPtr = JoinBevel; return TCL_OK; } if ((c == 'm') && (strncmp(string, "miter", length) == 0)) { *joinPtr = JoinMiter; return TCL_OK; } if ((c == 'r') && (strncmp(string, "round", length) == 0)) { *joinPtr = JoinRound; return TCL_OK; } Tcl_AppendResult(interp, "bad join style \"", string, "\": must be bevel, miter, or round", (char *) NULL); return TCL_ERROR; } /* *-------------------------------------------------------------- * * Tk_NameOfJoinStyle -- * * Given a Tk_JoinStyle, return the string that corresponds * to it. * * Results: * None. * * Side effects: * None. * *-------------------------------------------------------------- */ char * Tk_NameOfJoinStyle(join) int join; /* Join style for which identifying string * is desired. */ { switch (join) { case JoinBevel: return "bevel"; case JoinMiter: return "miter"; case JoinRound: return "round"; } return "unknown join style"; } /* *-------------------------------------------------------------- * * Tk_GetCapStyle -- * * Given a string, return the corresponding Tk_CapStyle. * * Results: * The return value is a standard Tcl return result. If * TCL_OK is returned, then everything went well and the * justification is stored at *capPtr; otherwise * TCL_ERROR is returned and an error message is left in * interp->result. * * Side effects: * None. * *-------------------------------------------------------------- */ int Tk_GetCapStyle(interp, string, capPtr) Tcl_Interp *interp; /* Use this for error reporting. */ char *string; /* String describing a justification style. */ int *capPtr; /* Where to store cap style corresponding * to string. */ { int c, length; c = string[0]; length = strlen(string); if ((c == 'b') && (strncmp(string, "butt", length) == 0)) { *capPtr = CapButt; return TCL_OK; } if ((c == 'p') && (strncmp(string, "projecting", length) == 0)) { *capPtr = CapProjecting; return TCL_OK; } if ((c == 'r') && (strncmp(string, "round", length) == 0)) { *capPtr = CapRound; return TCL_OK; } Tcl_AppendResult(interp, "bad cap style \"", string, "\": must be butt, projecting, or round", (char *) NULL); return TCL_ERROR; } /* *-------------------------------------------------------------- * * Tk_NameOfCapStyle -- * * Given a Tk_CapStyle, return the string that corresponds * to it. * * Results: * None. * * Side effects: * None. * *-------------------------------------------------------------- */ char * Tk_NameOfCapStyle(cap) int cap; /* Cap style for which identifying string * is desired. */ { switch (cap) { case CapButt: return "butt"; case CapProjecting: return "projecting"; case CapRound: return "round"; } return "unknown cap style"; } /* *-------------------------------------------------------------- * * Tk_GetJustify -- * * Given a string, return the corresponding Tk_Justify. * * Results: * The return value is a standard Tcl return result. If * TCL_OK is returned, then everything went well and the * justification is stored at *justifyPtr; otherwise * TCL_ERROR is returned and an error message is left in * interp->result. * * Side effects: * None. * *-------------------------------------------------------------- */ int Tk_GetJustify(interp, string, justifyPtr) Tcl_Interp *interp; /* Use this for error reporting. */ char *string; /* String describing a justification style. */ Tk_Justify *justifyPtr; /* Where to store Tk_Justify corresponding * to string. */ { int c, length; c = string[0]; length = strlen(string); if ((c == 'l') && (strncmp(string, "left", length) == 0)) { *justifyPtr = TK_JUSTIFY_LEFT; return TCL_OK; } if ((c == 'r') && (strncmp(string, "right", length) == 0)) { *justifyPtr = TK_JUSTIFY_RIGHT; return TCL_OK; } if ((c == 'c') && (strncmp(string, "center", length) == 0)) { *justifyPtr = TK_JUSTIFY_CENTER; return TCL_OK; } if ((c == 'f') && (strncmp(string, "fill", length) == 0)) { *justifyPtr = TK_JUSTIFY_FILL; return TCL_OK; } Tcl_AppendResult(interp, "bad justification \"", string, "\": must be left, right, center, or fill", (char *) NULL); return TCL_ERROR; } /* *-------------------------------------------------------------- * * Tk_NameOfJustify -- * * Given a Tk_Justify, return the string that corresponds * to it. * * Results: * None. * * Side effects: * None. * *-------------------------------------------------------------- */ char * Tk_NameOfJustify(justify) Tk_Justify justify; /* Justification style for which * identifying string is desired. */ { switch (justify) { case TK_JUSTIFY_LEFT: return "left"; case TK_JUSTIFY_RIGHT: return "right"; case TK_JUSTIFY_CENTER: return "center"; case TK_JUSTIFY_FILL: return "fill"; } return "unknown justification style"; } /* *---------------------------------------------------------------------- * * Tk_GetUid -- * * Given a string, this procedure returns a unique identifier * for the string. * * Results: * This procedure returns a Tk_Uid corresponding to the "string" * argument. The Tk_Uid has a string value identical to string * (strcmp will return 0), but it's guaranteed that any other * calls to this procedure with a string equal to "string" will * return exactly the same result (i.e. can compare Tk_Uid * *values* directly, without having to call strcmp on what they * point to). * * Side effects: * New information may be entered into the identifier table. * *---------------------------------------------------------------------- */ Tk_Uid Tk_GetUid(string) char *string; /* String to convert. */ { int dummy; if (!initialized) { Tcl_InitHashTable(&uidTable, TCL_STRING_KEYS); initialized = 1; } return (Tk_Uid) Tcl_GetHashKey(&uidTable, Tcl_CreateHashEntry(&uidTable, string, &dummy)); } /* *-------------------------------------------------------------- * * Tk_GetScreenMM -- * * Given a string, returns the number of screen millimeters * corresponding to that string. * * Results: * The return value is a standard Tcl return result. If * TCL_OK is returned, then everything went well and the * screen distance is stored at *doublePtr; otherwise * TCL_ERROR is returned and an error message is left in * interp->result. * * Side effects: * None. * *-------------------------------------------------------------- */ int Tk_GetScreenMM(interp, tkwin, string, doublePtr) Tcl_Interp *interp; /* Use this for error reporting. */ Tk_Window tkwin; /* Window whose screen determines conversion * from centimeters and other absolute * units. */ char *string; /* String describing a screen distance. */ double *doublePtr; /* Place to store converted result. */ { char *end; double d; d = strtod(string, &end); if (end == string) { error: Tcl_AppendResult(interp, "bad screen distance \"", string, "\"", (char *) NULL); return TCL_ERROR; } while ((*end != '\0') && isspace(*end)) { end++; } switch (*end) { case 0: d /= WidthOfScreen(Tk_Screen(tkwin)); d *= WidthMMOfScreen(Tk_Screen(tkwin)); break; case 'c': d *= 10; end++; break; case 'i': d *= 25.4; end++; break; case 'm': end++; break; case 'p': d *= 25.4/72.0; end++; break; default: goto error; } while ((*end != '\0') && isspace(*end)) { end++; } if (*end != 0) { goto error; } *doublePtr = d; return TCL_OK; } /* *-------------------------------------------------------------- * * Tk_GetPixels -- * * Given a string, returns the number of pixels corresponding * to that string. * * Results: * The return value is a standard Tcl return result. If * TCL_OK is returned, then everything went well and the * rounded pixel distance is stored at *intPtr; otherwise * TCL_ERROR is returned and an error message is left in * interp->result. * * Side effects: * None. * *-------------------------------------------------------------- */ int Tk_GetPixels(interp, tkwin, string, intPtr) Tcl_Interp *interp; /* Use this for error reporting. */ Tk_Window tkwin; /* Window whose screen determines conversion * from centimeters and other absolute * units. */ char *string; /* String describing a justification style. */ int *intPtr; /* Place to store converted result. */ { char *end; double d; d = strtod(string, &end); if (end == string) { error: Tcl_AppendResult(interp, "bad screen distance \"", string, "\"", (char *) NULL); return TCL_ERROR; } while ((*end != '\0') && isspace(*end)) { end++; } switch (*end) { case 0: break; case 'c': d *= 10*WidthOfScreen(Tk_Screen(tkwin)); d /= WidthMMOfScreen(Tk_Screen(tkwin)); end++; break; case 'i': d *= 25.4*WidthOfScreen(Tk_Screen(tkwin)); d /= WidthMMOfScreen(Tk_Screen(tkwin)); end++; break; case 'm': d *= WidthOfScreen(Tk_Screen(tkwin)); d /= WidthMMOfScreen(Tk_Screen(tkwin)); end++; break; case 'p': d *= (25.4/72.0)*WidthOfScreen(Tk_Screen(tkwin)); d /= WidthMMOfScreen(Tk_Screen(tkwin)); end++; break; default: goto error; } while ((*end != '\0') && isspace(*end)) { end++; } if (*end != 0) { goto error; } if (d < 0) { *intPtr = (int) (d - 0.5); } else { *intPtr = (int) (d + 0.5); } return TCL_OK; } micropolis-activity/src/tk/tkcvarc.c0000664000076400007640000013153510724145723020051 0ustar simcitysimcity/* * tkCanvArc.c -- * * This file implements arc items for canvas widgets. * * Copyright 1992 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkCanvArc.c,v 1.5 92/08/16 15:42:20 ouster Exp $ SPRITE (Berkeley)"; #endif #include #include #include "tkint.h" #include "tkcanvas.h" /* * The structure below defines the record for each arc item. */ typedef struct ArcItem { Tk_Item header; /* Generic stuff that's the same for all * types. MUST BE FIRST IN STRUCTURE. */ double bbox[4]; /* Coordinates (x1, y1, x2, y2) of bounding * box for oval of which arc is a piece. */ double start; /* Angle at which arc begins, in degrees * between 0 and 360. */ double extent; /* Extent of arc (angular distance from * start to end of arc) in degrees between * -360 and 360. */ double *outlinePtr; /* Points to (x,y) coordinates for points * that define one or two closed polygons * representing the portion of the outline * that isn't part of the arc (the V-shape * for a pie slice or a line-like segment * for a chord). Malloc'ed. */ int numOutlinePoints; /* Number of points at outlinePtr. Zero * means no space allocated. */ int width; /* Width of outline (in pixels). */ XColor *outlineColor; /* Color for outline. NULL means don't * draw outline. */ XColor *fillColor; /* Color for filling arc (used for drawing * outline too when style is "arc"). NULL * means don't fill arc. */ Pixmap fillStipple; /* Stipple bitmap for filling item. */ Tk_Uid style; /* How to draw arc: arc, chord, or pieslice. */ GC outlineGC; /* Graphics context for outline. */ GC fillGC; /* Graphics context for filling item. */ double center1[2]; /* Coordinates of center of arc outline at * start (see ComputeArcOutline). */ double center2[2]; /* Coordinates of center of arc outline at * start+extent (see ComputeArcOutline). */ } ArcItem; /* * The definitions below define the sizes of the polygons used to * display outline information for various styles of arcs: */ #define CHORD_OUTLINE_PTS 7 #define PIE_OUTLINE1_PTS 6 #define PIE_OUTLINE2_PTS 7 /* * Information used for parsing configuration specs: */ static Tk_ConfigSpec configSpecs[] = { {TK_CONFIG_DOUBLE, "-extent", (char *) NULL, (char *) NULL, "90", Tk_Offset(ArcItem, extent), TK_CONFIG_DONT_SET_DEFAULT}, {TK_CONFIG_COLOR, "-fill", (char *) NULL, (char *) NULL, (char *) NULL, Tk_Offset(ArcItem, fillColor), TK_CONFIG_NULL_OK}, {TK_CONFIG_COLOR, "-outline", (char *) NULL, (char *) NULL, "black", Tk_Offset(ArcItem, outlineColor), TK_CONFIG_NULL_OK}, {TK_CONFIG_DOUBLE, "-start", (char *) NULL, (char *) NULL, "0", Tk_Offset(ArcItem, start), TK_CONFIG_DONT_SET_DEFAULT}, {TK_CONFIG_BITMAP, "-stipple", (char *) NULL, (char *) NULL, (char *) NULL, Tk_Offset(ArcItem, fillStipple), TK_CONFIG_NULL_OK}, {TK_CONFIG_UID, "-style", (char *) NULL, (char *) NULL, "pieslice", Tk_Offset(ArcItem, style), TK_CONFIG_DONT_SET_DEFAULT}, {TK_CONFIG_CUSTOM, "-tags", (char *) NULL, (char *) NULL, (char *) NULL, 0, TK_CONFIG_NULL_OK, &tkCanvasTagsOption}, {TK_CONFIG_PIXELS, "-width", (char *) NULL, (char *) NULL, "1", Tk_Offset(ArcItem, width), TK_CONFIG_DONT_SET_DEFAULT}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; /* * Prototypes for procedures defined in this file: */ static int ArcCoords _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, int argc, char **argv)); static int AngleInRange _ANSI_ARGS_((double x, double y, double start, double extent)); static int ArcToArea _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double *rectPtr)); static double ArcToPoint _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double *coordPtr)); static void ComputeArcBbox _ANSI_ARGS_((Tk_Canvas *canvasPtr, ArcItem *arcPtr)); static void ComputeArcOutline _ANSI_ARGS_((ArcItem *arcPtr)); static int ConfigureArc _ANSI_ARGS_(( Tk_Canvas *canvasPtr, Tk_Item *itemPtr, int argc, char **argv, int flags)); static int CreateArc _ANSI_ARGS_((Tk_Canvas *canvasPtr, struct Tk_Item *itemPtr, int argc, char **argv)); static void DeleteArc _ANSI_ARGS_((Tk_Item *itemPtr)); static void DisplayArc _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, Drawable dst)); static int HorizLineToArc _ANSI_ARGS_((double x1, double x2, double y, double rx, double ry, double start, double extent)); static void ScaleArc _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double originX, double originY, double scaleX, double scaleY)); static void TranslateArc _ANSI_ARGS_((Tk_Canvas *canvasPtr, Tk_Item *itemPtr, double deltaX, double deltaY)); static int VertLineToArc _ANSI_ARGS_((double x, double y1, double y2, double rx, double ry, double start, double extent)); /* * The structures below defines the arc item types by means of procedures * that can be invoked by generic item code. */ Tk_ItemType TkArcType = { "arc", /* name */ sizeof(ArcItem), /* itemSize */ CreateArc, /* createProc */ configSpecs, /* configSpecs */ ConfigureArc, /* configureProc */ ArcCoords, /* coordProc */ DeleteArc, /* deleteProc */ DisplayArc, /* displayProc */ 0, /* alwaysRedraw */ ArcToPoint, /* pointProc */ ArcToArea, /* areaProc */ (Tk_ItemPostscriptProc *) NULL, /* postscriptProc */ ScaleArc, /* scaleProc */ TranslateArc, /* translateProc */ (Tk_ItemIndexProc *) NULL, /* indexProc */ (Tk_ItemCursorProc *) NULL, /* cursorProc */ (Tk_ItemSelectionProc *) NULL, /* selectionProc */ (Tk_ItemInsertProc *) NULL, /* insertProc */ (Tk_ItemDCharsProc *) NULL, /* dTextProc */ (Tk_ItemType *) NULL /* nextPtr */ }; #define PI 3.14159265358979323846 /* * The uid's below comprise the legal values for the "-style" * option for arcs. */ static Tk_Uid arcUid = NULL; static Tk_Uid chordUid = NULL; static Tk_Uid pieSliceUid = NULL; /* *-------------------------------------------------------------- * * CreateArc -- * * This procedure is invoked to create a new arc item in * a canvas. * * Results: * A standard Tcl return value. If an error occurred in * creating the item, then an error message is left in * canvasPtr->interp->result; in this case itemPtr is * left uninitialized, so it can be safely freed by the * caller. * * Side effects: * A new arc item is created. * *-------------------------------------------------------------- */ static int CreateArc(canvasPtr, itemPtr, argc, argv) register Tk_Canvas *canvasPtr; /* Canvas to hold new item. */ Tk_Item *itemPtr; /* Record to hold new item; header * has been initialized by caller. */ int argc; /* Number of arguments in argv. */ char **argv; /* Arguments describing arc. */ { register ArcItem *arcPtr = (ArcItem *) itemPtr; if (argc < 4) { Tcl_AppendResult(canvasPtr->interp, "wrong # args: should be \"", Tk_PathName(canvasPtr->tkwin), "\" create ", itemPtr->typePtr->name, " x1 y1 x2 y2 ?options?", (char *) NULL); return TCL_ERROR; } /* * Carry out once-only initialization. */ if (arcUid == NULL) { arcUid = Tk_GetUid("arc"); chordUid = Tk_GetUid("chord"); pieSliceUid = Tk_GetUid("pieslice"); } /* * Carry out initialization that is needed in order to clean * up after errors during the the remainder of this procedure. */ arcPtr->start = 0; arcPtr->extent = 90; arcPtr->outlinePtr = NULL; arcPtr->numOutlinePoints = 0; arcPtr->width = 1; arcPtr->outlineColor = NULL; arcPtr->fillColor = NULL; arcPtr->fillStipple = None; arcPtr->style = pieSliceUid; arcPtr->outlineGC = None; arcPtr->fillGC = None; /* * Process the arguments to fill in the item record. */ if ((TkGetCanvasCoord(canvasPtr, argv[0], &arcPtr->bbox[0]) != TCL_OK) || (TkGetCanvasCoord(canvasPtr, argv[1], &arcPtr->bbox[1]) != TCL_OK) || (TkGetCanvasCoord(canvasPtr, argv[2], &arcPtr->bbox[2]) != TCL_OK) || (TkGetCanvasCoord(canvasPtr, argv[3], &arcPtr->bbox[3]) != TCL_OK)) { return TCL_ERROR; } if (ConfigureArc(canvasPtr, itemPtr, argc-4, argv+4, 0) != TCL_OK) { DeleteArc(itemPtr); return TCL_ERROR; } return TCL_OK; } /* *-------------------------------------------------------------- * * ArcCoords -- * * This procedure is invoked to process the "coords" widget * command on arcs. See the user documentation for details * on what it does. * * Results: * Returns TCL_OK or TCL_ERROR, and sets canvasPtr->interp->result. * * Side effects: * The coordinates for the given item may be changed. * *-------------------------------------------------------------- */ static int ArcCoords(canvasPtr, itemPtr, argc, argv) register Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item whose coordinates are to be * read or modified. */ int argc; /* Number of coordinates supplied in * argv. */ char **argv; /* Array of coordinates: x1, y1, * x2, y2, ... */ { register ArcItem *arcPtr = (ArcItem *) itemPtr; char buffer[500]; if (argc == 0) { sprintf(buffer, "%g %g %g %g", arcPtr->bbox[0], arcPtr->bbox[1], arcPtr->bbox[2], arcPtr->bbox[3]); Tcl_SetResult(canvasPtr->interp, buffer, TCL_VOLATILE); } else if (argc == 4) { if ((TkGetCanvasCoord(canvasPtr, argv[0], &arcPtr->bbox[0]) != TCL_OK) || (TkGetCanvasCoord(canvasPtr, argv[1], &arcPtr->bbox[1]) != TCL_OK) || (TkGetCanvasCoord(canvasPtr, argv[2], &arcPtr->bbox[2]) != TCL_OK) || (TkGetCanvasCoord(canvasPtr, argv[3], &arcPtr->bbox[3]) != TCL_OK)) { return TCL_ERROR; } ComputeArcBbox(canvasPtr, arcPtr); } else { sprintf(canvasPtr->interp->result, "wrong # coordinates: expected 0 or 4, got %d", argc); return TCL_ERROR; } return TCL_OK; } /* *-------------------------------------------------------------- * * ConfigureArc -- * * This procedure is invoked to configure various aspects * of a arc item, such as its outline and fill colors. * * Results: * A standard Tcl result code. If an error occurs, then * an error message is left in canvasPtr->interp->result. * * Side effects: * Configuration information, such as colors and stipple * patterns, may be set for itemPtr. * *-------------------------------------------------------------- */ static int ConfigureArc(canvasPtr, itemPtr, argc, argv, flags) Tk_Canvas *canvasPtr; /* Canvas containing itemPtr. */ Tk_Item *itemPtr; /* Arc item to reconfigure. */ int argc; /* Number of elements in argv. */ char **argv; /* Arguments describing things to configure. */ int flags; /* Flags to pass to Tk_ConfigureWidget. */ { register ArcItem *arcPtr = (ArcItem *) itemPtr; XGCValues gcValues; GC newGC; unsigned long mask; int i; if (Tk_ConfigureWidget(canvasPtr->interp, canvasPtr->tkwin, configSpecs, argc, argv, (char *) arcPtr, flags) != TCL_OK) { return TCL_ERROR; } /* * A few of the options require additional processing, such as * style and graphics contexts. */ i = arcPtr->start/360.0; arcPtr->start -= i*360.0; if (arcPtr->start < 0) { arcPtr->start += 360.0; } i = arcPtr->extent/360.0; arcPtr->extent -= i*360.0; if ((arcPtr->style != arcUid) && (arcPtr->style != chordUid) && (arcPtr->style != pieSliceUid)) { Tcl_AppendResult(canvasPtr->interp, "bad -style option \"", arcPtr->style, "\": must be arc, chord, or pieslice", (char *) NULL); arcPtr->style = pieSliceUid; return TCL_ERROR; } if (arcPtr->width < 0) { arcPtr->width = 1; } if (arcPtr->style == arcUid) { if (arcPtr->fillColor == NULL) { newGC = None; } else { gcValues.foreground = arcPtr->fillColor->pixel; gcValues.cap_style = CapButt; gcValues.line_width = arcPtr->width; mask = GCForeground|GCCapStyle|GCLineWidth; if (arcPtr->fillStipple != None) { gcValues.stipple = arcPtr->fillStipple; gcValues.fill_style = FillStippled; mask |= GCStipple|GCFillStyle; } newGC = Tk_GetGC(canvasPtr->tkwin, mask, &gcValues); } } else if (arcPtr->outlineColor == NULL) { newGC = None; } else { gcValues.foreground = arcPtr->outlineColor->pixel; gcValues.cap_style = CapButt; gcValues.line_width = arcPtr->width; mask = GCForeground|GCCapStyle|GCLineWidth; newGC = Tk_GetGC(canvasPtr->tkwin, mask, &gcValues); } if (arcPtr->outlineGC != None) { Tk_FreeGC(arcPtr->outlineGC); } arcPtr->outlineGC = newGC; if ((arcPtr->fillColor == NULL) || (arcPtr->style == arcUid)) { newGC = None; } else { gcValues.foreground = arcPtr->fillColor->pixel; if (arcPtr->style == chordUid) { gcValues.arc_mode = ArcChord; } else { gcValues.arc_mode = ArcPieSlice; } mask = GCForeground|GCArcMode; if (arcPtr->fillStipple != None) { gcValues.stipple = arcPtr->fillStipple; gcValues.fill_style = FillStippled; mask |= GCStipple|GCFillStyle; } newGC = Tk_GetGC(canvasPtr->tkwin, mask, &gcValues); } if (arcPtr->fillGC != None) { Tk_FreeGC(arcPtr->fillGC); } arcPtr->fillGC = newGC; ComputeArcBbox(canvasPtr, arcPtr); return TCL_OK; } /* *-------------------------------------------------------------- * * DeleteArc -- * * This procedure is called to clean up the data structure * associated with a arc item. * * Results: * None. * * Side effects: * Resources associated with itemPtr are released. * *-------------------------------------------------------------- */ static void DeleteArc(itemPtr) Tk_Item *itemPtr; /* Item that is being deleted. */ { register ArcItem *arcPtr = (ArcItem *) itemPtr; if (arcPtr->numOutlinePoints != 0) { ckfree((char *) arcPtr->outlinePtr); } if (arcPtr->outlineColor != NULL) { Tk_FreeColor(arcPtr->outlineColor); } if (arcPtr->fillColor != NULL) { Tk_FreeColor(arcPtr->fillColor); } if (arcPtr->fillStipple != None) { Tk_FreeBitmap(arcPtr->fillStipple); } if (arcPtr->outlineGC != None) { Tk_FreeGC(arcPtr->outlineGC); } if (arcPtr->fillGC != None) { Tk_FreeGC(arcPtr->fillGC); } } /* *-------------------------------------------------------------- * * ComputeArcBbox -- * * This procedure is invoked to compute the bounding box of * all the pixels that may be drawn as part of an arc. * * Results: * None. * * Side effects: * The fields x1, y1, x2, and y2 are updated in the header * for itemPtr. * *-------------------------------------------------------------- */ /* ARGSUSED */ static void ComputeArcBbox(canvasPtr, arcPtr) register Tk_Canvas *canvasPtr; /* Canvas that contains item. */ register ArcItem *arcPtr; /* Item whose bbox is to be * recomputed. */ { double tmp, center[2], point[2]; /* * Make sure that the first coordinates are the lowest ones. */ if (arcPtr->bbox[1] > arcPtr->bbox[3]) { double tmp; tmp = arcPtr->bbox[3]; arcPtr->bbox[3] = arcPtr->bbox[1]; arcPtr->bbox[1] = tmp; } if (arcPtr->bbox[0] > arcPtr->bbox[2]) { double tmp; tmp = arcPtr->bbox[2]; arcPtr->bbox[2] = arcPtr->bbox[0]; arcPtr->bbox[0] = tmp; } ComputeArcOutline(arcPtr); /* * To compute the bounding box, start with the the bbox formed * by the two endpoints of the arc. Then add in the center of * the arc's oval (if relevant) and the 3-o'clock, 6-o'clock, * 9-o'clock, and 12-o'clock positions, if they are relevant. */ arcPtr->header.x1 = arcPtr->header.x2 = arcPtr->center1[0]; arcPtr->header.y1 = arcPtr->header.y2 = arcPtr->center1[1]; TkIncludePoint(canvasPtr, (Tk_Item *) arcPtr, arcPtr->center2); center[0] = (arcPtr->bbox[0] + arcPtr->bbox[2])/2; center[1] = (arcPtr->bbox[1] + arcPtr->bbox[3])/2; if (arcPtr->style != arcUid) { TkIncludePoint(canvasPtr, (Tk_Item *) arcPtr, center); } tmp = -arcPtr->start; if (tmp < 0) { tmp += 360.0; } if ((tmp < arcPtr->extent) || ((tmp-360) > arcPtr->extent)) { point[0] = arcPtr->bbox[2]; point[1] = center[1]; TkIncludePoint(canvasPtr, (Tk_Item *) arcPtr, point); } tmp = 90.0 - arcPtr->start; if (tmp < 0) { tmp += 360.0; } if ((tmp < arcPtr->extent) || ((tmp-360) > arcPtr->extent)) { point[0] = center[0]; point[1] = arcPtr->bbox[1]; TkIncludePoint(canvasPtr, (Tk_Item *) arcPtr, point); } tmp = 180.0 - arcPtr->start; if (tmp < 0) { tmp += 360.0; } if ((tmp < arcPtr->extent) || ((tmp-360) > arcPtr->extent)) { point[0] = arcPtr->bbox[0]; point[1] = center[1]; TkIncludePoint(canvasPtr, (Tk_Item *) arcPtr, point); } tmp = 270.0 - arcPtr->start; if (tmp < 0) { tmp += 360.0; } if ((tmp < arcPtr->extent) || ((tmp-360) > arcPtr->extent)) { point[0] = center[0]; point[1] = arcPtr->bbox[3]; TkIncludePoint(canvasPtr, (Tk_Item *) arcPtr, point); } /* * Lastly, expand by the width of the arc (if the arc's outline is * being drawn) and add one extra pixel just for safety. */ if (arcPtr->outlineColor == NULL) { tmp = 1; } else { tmp = (arcPtr->width + 1)/2 + 1; } arcPtr->header.x1 -= tmp; arcPtr->header.y1 -= tmp; arcPtr->header.x2 += tmp; arcPtr->header.y2 += tmp; } /* *-------------------------------------------------------------- * * DisplayArc -- * * This procedure is invoked to draw an arc item in a given * drawable. * * Results: * None. * * Side effects: * ItemPtr is drawn in drawable using the transformation * information in canvasPtr. * *-------------------------------------------------------------- */ static void DisplayArc(canvasPtr, itemPtr, drawable) register Tk_Canvas *canvasPtr; /* Canvas that contains item. */ Tk_Item *itemPtr; /* Item to be displayed. */ Drawable drawable; /* Pixmap or window in which to draw * item. */ { register ArcItem *arcPtr = (ArcItem *) itemPtr; Display *display = Tk_Display(canvasPtr->tkwin); int x1, y1, x2, y2, start, extent; /* * Compute the screen coordinates of the bounding box for the item, * plus integer values for the angles. */ x1 = SCREEN_X(canvasPtr, arcPtr->bbox[0]); y1 = SCREEN_Y(canvasPtr, arcPtr->bbox[1]); x2 = SCREEN_X(canvasPtr, arcPtr->bbox[2]); y2 = SCREEN_Y(canvasPtr, arcPtr->bbox[3]); if (x2 <= x1) { x2 = x1+1; } if (y2 <= y1) { y2 = y1+1; } start = (64*arcPtr->start) + 0.5; extent = (64*arcPtr->extent) + 0.5; /* * Display filled arc first (if wanted), then outline. */ if (arcPtr->fillGC != None) { XFillArc(display, drawable, arcPtr->fillGC, x1, y1, (x2-x1), (y2-y1), start, extent); } if (arcPtr->outlineGC != None) { XDrawArc(display, drawable, arcPtr->outlineGC, x1, y1, (x2-x1), (y2-y1), start, extent); /* * If the outline width is very thin, don't use polygons to draw * the linear parts of the outline (this often results in nothing * being displayed); just draw lines instead. */ if (arcPtr->width <= 2) { x1 = SCREEN_X(canvasPtr, arcPtr->center1[0]); y1 = SCREEN_Y(canvasPtr, arcPtr->center1[1]); x2 = SCREEN_X(canvasPtr, arcPtr->center2[0]); y2 = SCREEN_Y(canvasPtr, arcPtr->center2[1]); if (arcPtr->style == chordUid) { XDrawLine(display, drawable, arcPtr->outlineGC, x1, y1, x2, y2); } else if (arcPtr->style == pieSliceUid) { int cx, cy; cx = SCREEN_X(canvasPtr, (arcPtr->bbox[0] + arcPtr->bbox[2])/2.0); cy = SCREEN_Y(canvasPtr, (arcPtr->bbox[1] + arcPtr->bbox[3])/2.0); XDrawLine(display, drawable, arcPtr->outlineGC, cx, cy, x1, y1); XDrawLine(display, drawable, arcPtr->outlineGC, cx, cy, x2, y2); } } else { if (arcPtr->style == chordUid) { TkFillPolygon(canvasPtr, arcPtr->outlinePtr, CHORD_OUTLINE_PTS, drawable, arcPtr->outlineGC); } else if (arcPtr->style == pieSliceUid) { TkFillPolygon(canvasPtr, arcPtr->outlinePtr, PIE_OUTLINE1_PTS, drawable, arcPtr->outlineGC); TkFillPolygon(canvasPtr, arcPtr->outlinePtr + 2*PIE_OUTLINE1_PTS, PIE_OUTLINE2_PTS, drawable, arcPtr->outlineGC); } } } } /* *-------------------------------------------------------------- * * ArcToPoint -- * * Computes the distance from a given point to a given * arc, in canvas units. * * Results: * The return value is 0 if the point whose x and y coordinates * are coordPtr[0] and coordPtr[1] is inside the arc. If the * point isn't inside the arc then the return value is the * distance from the point to the arc. If itemPtr is filled, * then anywhere in the interior is considered "inside"; if * itemPtr isn't filled, then "inside" means only the area * occupied by the outline. * * Side effects: * None. * *-------------------------------------------------------------- */ /* ARGSUSED */ static double ArcToPoint(canvasPtr, itemPtr, pointPtr) Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item to check against point. */ double *pointPtr; /* Pointer to x and y coordinates. */ { register ArcItem *arcPtr = (ArcItem *) itemPtr; double vertex[2], pointAngle, diff, dist, newDist; double poly[8], polyDist, width; int filled, angleInRange; if ((arcPtr->fillGC != None) || (arcPtr->outlineGC == None)) { filled = 1; } else { filled = 0; } /* * See if the point is within the angular range of the arc. * Remember, X angles are backwards from the way we'd normally * think of them. Also, compensate for any eccentricity of * the oval. */ vertex[0] = (arcPtr->bbox[0] + arcPtr->bbox[2])/2.0; vertex[1] = (arcPtr->bbox[1] + arcPtr->bbox[3])/2.0; pointAngle = -atan2((pointPtr[1] - vertex[1]) /(arcPtr->bbox[3] - arcPtr->bbox[1]), (pointPtr[0] - vertex[0])/(arcPtr->bbox[2] - arcPtr->bbox[0])); pointAngle *= 180/PI; diff = pointAngle - arcPtr->start; diff -= ((int) (diff/360.0) * 360.0); if (diff < 0) { diff += 360.0; } angleInRange = (diff <= arcPtr->extent) || ((arcPtr->extent < 0) && ((diff - 360.0) >= arcPtr->extent)); /* * Now perform different tests depending on what kind of arc * we're dealing with. */ if (arcPtr->style == arcUid) { if (angleInRange) { return TkOvalToPoint(arcPtr->bbox, (double) arcPtr->width, 0, pointPtr); } dist = hypot(pointPtr[0] - arcPtr->center1[0], pointPtr[1] - arcPtr->center1[1]); newDist = hypot(pointPtr[0] - arcPtr->center2[0], pointPtr[1] - arcPtr->center2[1]); if (newDist < dist) { return newDist; } return dist; } if ((arcPtr->fillGC != None) || (arcPtr->outlineGC == None)) { filled = 1; } else { filled = 0; } if (arcPtr->outlineGC == None) { width = 0.0; } else { width = arcPtr->width; } if (arcPtr->style == pieSliceUid) { if (width > 1.0) { dist = TkPolygonToPoint(arcPtr->outlinePtr, PIE_OUTLINE1_PTS, pointPtr); newDist = TkPolygonToPoint(arcPtr->outlinePtr + 2*PIE_OUTLINE1_PTS, PIE_OUTLINE2_PTS, pointPtr); } else { dist = TkLineToPoint(vertex, arcPtr->center1, pointPtr); newDist = TkLineToPoint(vertex, arcPtr->center2, pointPtr); } if (newDist < dist) { dist = newDist; } if (angleInRange) { newDist = TkOvalToPoint(arcPtr->bbox, width, filled, pointPtr); if (newDist < dist) { dist = newDist; } } return dist; } /* * This is a chord-style arc. We have to deal specially with the * triangular piece that represents the difference between a * chord-style arc and a pie-slice arc (for small angles this piece * is excluded here where it would be included for pie slices; * for large angles the piece is included here but would be * excluded for pie slices). */ if (width > 1.0) { dist = TkPolygonToPoint(arcPtr->outlinePtr, CHORD_OUTLINE_PTS, pointPtr); } else { dist = TkLineToPoint(arcPtr->center1, arcPtr->center2, pointPtr); } poly[0] = poly[6] = vertex[0]; poly[1] = poly[7] = vertex[1]; poly[2] = arcPtr->center1[0]; poly[3] = arcPtr->center1[1]; poly[4] = arcPtr->center2[0]; poly[5] = arcPtr->center2[1]; polyDist = TkPolygonToPoint(poly, 4, pointPtr); if (angleInRange) { if ((arcPtr->extent < -180.0) || (arcPtr->extent > 180.0) || (polyDist > 0.0)) { newDist = TkOvalToPoint(arcPtr->bbox, width, filled, pointPtr); if (newDist < dist) { dist = newDist; } } } else { if ((arcPtr->extent < -180.0) || (arcPtr->extent > 180.0)) { if (filled && (polyDist < dist)) { dist = polyDist; } } } return dist; } /* *-------------------------------------------------------------- * * ArcToArea -- * * This procedure is called to determine whether an item * lies entirely inside, entirely outside, or overlapping * a given area. * * Results: * -1 is returned if the item is entirely outside the area * given by rectPtr, 0 if it overlaps, and 1 if it is entirely * inside the given area. * * Side effects: * None. * *-------------------------------------------------------------- */ /* ARGSUSED */ static int ArcToArea(canvasPtr, itemPtr, rectPtr) Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item to check against arc. */ double *rectPtr; /* Pointer to array of four coordinates * (x1, y1, x2, y2) describing rectangular * area. */ { register ArcItem *arcPtr = (ArcItem *) itemPtr; double rx, ry; /* Radii for transformed oval: these define * an oval centered at the origin. */ double tRect[4]; /* Transformed version of x1, y1, x2, y2, * for coord. system where arc is centered * on the origin. */ double center[2], width, angle, tmp; double points[20], *pointPtr; int numPoints, filled; int inside; /* Non-zero means every test so far suggests * that arc is inside rectangle. 0 means * every test so far shows arc to be outside * of rectangle. */ int newInside; if ((arcPtr->fillGC != None) || (arcPtr->outlineGC == None)) { filled = 1; } else { filled = 0; } if (arcPtr->outlineGC == None) { width = 0.0; } else { width = arcPtr->width; } /* * Transform both the arc and the rectangle so that the arc's oval * is centered on the origin. */ center[0] = (arcPtr->bbox[0] + arcPtr->bbox[2])/2.0; center[1] = (arcPtr->bbox[1] + arcPtr->bbox[3])/2.0; tRect[0] = rectPtr[0] - center[0]; tRect[1] = rectPtr[1] - center[1]; tRect[2] = rectPtr[2] - center[0]; tRect[3] = rectPtr[3] - center[1]; rx = arcPtr->bbox[2] - center[0] + width/2.0; ry = arcPtr->bbox[3] - center[1] + width/2.0; /* * Find the extreme points of the arc and see whether these are all * inside the rectangle (in which case we're done), partly in and * partly out (in which case we're done), or all outside (in which * case we have more work to do). The extreme points include the * following, which are checked in order: * * 1. The outside points of the arc, corresponding to start and * extent. * 2. The center of the arc (but only in pie-slice mode). * 3. The 12, 3, 6, and 9-o'clock positions (but only if the arc * includes those angles). */ pointPtr = points; numPoints = 0; angle = -arcPtr->start*(PI/180.0); pointPtr[0] = rx*cos(angle); pointPtr[1] = ry*sin(angle); angle += -arcPtr->extent*(PI/180.0); pointPtr[2] = rx*cos(angle); pointPtr[3] = ry*sin(angle); numPoints = 2; pointPtr += 4; if ((arcPtr->style == pieSliceUid) && (arcPtr->extent < 180.0)) { pointPtr[0] = 0.0; pointPtr[1] = 0.0; numPoints++; pointPtr += 2; } tmp = -arcPtr->start; if (tmp < 0) { tmp += 360.0; } if ((tmp < arcPtr->extent) || ((tmp-360) > arcPtr->extent)) { pointPtr[0] = rx; pointPtr[1] = 0.0; numPoints++; pointPtr += 2; } tmp = 90.0 - arcPtr->start; if (tmp < 0) { tmp += 360.0; } if ((tmp < arcPtr->extent) || ((tmp-360) > arcPtr->extent)) { pointPtr[0] = 0.0; pointPtr[1] = -ry; numPoints++; pointPtr += 2; } tmp = 180.0 - arcPtr->start; if (tmp < 0) { tmp += 360.0; } if ((tmp < arcPtr->extent) || ((tmp-360) > arcPtr->extent)) { pointPtr[0] = -rx; pointPtr[1] = 0.0; numPoints++; pointPtr += 2; } tmp = 270.0 - arcPtr->start; if (tmp < 0) { tmp += 360.0; } if ((tmp < arcPtr->extent) || ((tmp-360) > arcPtr->extent)) { pointPtr[0] = 0.0; pointPtr[1] = ry; numPoints++; pointPtr += 2; } /* * Now that we've located the extreme points, loop through them all * to see which are inside the rectangle. */ inside = (points[0] > tRect[0]) && (points[0] < tRect[2]) && (points[1] > tRect[1]) && (points[1] < tRect[3]); for (pointPtr = points+2; numPoints > 1; pointPtr += 2, numPoints--) { newInside = (pointPtr[0] > tRect[0]) && (pointPtr[0] < tRect[2]) && (pointPtr[1] > tRect[1]) && (pointPtr[1] < tRect[3]); if (newInside != inside) { return 0; } } if (inside) { return 1; } /* * So far, oval appears to be outside rectangle, but can't yet tell * for sure. Next, test each of the four sides of the rectangle * against the bounding region for the arc. If any intersections * are found, then return "overlapping". First, test against the * polygon(s) forming the sides of a chord or pie-slice. */ if (arcPtr->style == pieSliceUid) { if (width >= 1.0) { if (TkPolygonToArea(arcPtr->outlinePtr, PIE_OUTLINE1_PTS, rectPtr) != -1) { return 0; } if (TkPolygonToArea(arcPtr->outlinePtr + 2*PIE_OUTLINE1_PTS, PIE_OUTLINE2_PTS, rectPtr) != -1) { return 0; } } else { if ((TkLineToArea(center, arcPtr->center1, rectPtr) != -1) || (TkLineToArea(center, arcPtr->center2, rectPtr) != -1)) { return 0; } } } else if (arcPtr->style == chordUid) { if (width >= 1.0) { if (TkPolygonToArea(arcPtr->outlinePtr, CHORD_OUTLINE_PTS, rectPtr) != -1) { return 0; } } else { if (TkLineToArea(arcPtr->center1, arcPtr->center2, rectPtr) != -1) { return 0; } } } /* * Next check for overlap between each of the four sides and the * outer perimiter of the arc. If the arc isn't filled, then also * check the inner perimeter of the arc. */ if (HorizLineToArc(tRect[0], tRect[2], tRect[1], rx, ry, arcPtr->start, arcPtr->extent) || HorizLineToArc(tRect[0], tRect[2], tRect[3], rx, ry, arcPtr->start, arcPtr->extent) || VertLineToArc(tRect[0], tRect[1], tRect[3], rx, ry, arcPtr->start, arcPtr->extent) || VertLineToArc(tRect[2], tRect[1], tRect[3], rx, ry, arcPtr->start, arcPtr->extent)) { return 0; } if ((width > 1.0) && !filled) { rx -= width; ry -= width; if (HorizLineToArc(tRect[0], tRect[2], tRect[1], rx, ry, arcPtr->start, arcPtr->extent) || HorizLineToArc(tRect[0], tRect[2], tRect[3], rx, ry, arcPtr->start, arcPtr->extent) || VertLineToArc(tRect[0], tRect[1], tRect[3], rx, ry, arcPtr->start, arcPtr->extent) || VertLineToArc(tRect[2], tRect[1], tRect[3], rx, ry, arcPtr->start, arcPtr->extent)) { return 0; } } /* * The arc still appears to be totally disjoint from the rectangle, * but it's also possible that the rectangle is totally inside the arc. * Do one last check, which is to check one point of the rectangle * to see if it's inside the arc. If it is, we've got overlap. If * it isn't, the arc's really outside the rectangle. */ if (ArcToPoint(canvasPtr, itemPtr, rectPtr) == 0.0) { return 0; } return -1; } /* *-------------------------------------------------------------- * * ScaleArc -- * * This procedure is invoked to rescale an arc item. * * Results: * None. * * Side effects: * The arc referred to by itemPtr is rescaled so that the * following transformation is applied to all point * coordinates: * x' = originX + scaleX*(x-originX) * y' = originY + scaleY*(y-originY) * *-------------------------------------------------------------- */ static void ScaleArc(canvasPtr, itemPtr, originX, originY, scaleX, scaleY) Tk_Canvas *canvasPtr; /* Canvas containing arc. */ Tk_Item *itemPtr; /* Arc to be scaled. */ double originX, originY; /* Origin about which to scale rect. */ double scaleX; /* Amount to scale in X direction. */ double scaleY; /* Amount to scale in Y direction. */ { register ArcItem *arcPtr = (ArcItem *) itemPtr; arcPtr->bbox[0] = originX + scaleX*(arcPtr->bbox[0] - originX); arcPtr->bbox[1] = originY + scaleY*(arcPtr->bbox[1] - originY); arcPtr->bbox[2] = originX + scaleX*(arcPtr->bbox[2] - originX); arcPtr->bbox[3] = originY + scaleY*(arcPtr->bbox[3] - originY); ComputeArcBbox(canvasPtr, arcPtr); } /* *-------------------------------------------------------------- * * TranslateArc -- * * This procedure is called to move an arc by a given amount. * * Results: * None. * * Side effects: * The position of the arc is offset by (xDelta, yDelta), and * the bounding box is updated in the generic part of the item * structure. * *-------------------------------------------------------------- */ static void TranslateArc(canvasPtr, itemPtr, deltaX, deltaY) Tk_Canvas *canvasPtr; /* Canvas containing item. */ Tk_Item *itemPtr; /* Item that is being moved. */ double deltaX, deltaY; /* Amount by which item is to be * moved. */ { register ArcItem *arcPtr = (ArcItem *) itemPtr; arcPtr->bbox[0] += deltaX; arcPtr->bbox[1] += deltaY; arcPtr->bbox[2] += deltaX; arcPtr->bbox[3] += deltaY; ComputeArcBbox(canvasPtr, arcPtr); } /* *-------------------------------------------------------------- * * ComputeArcOutline -- * * This procedure creates a polygon describing everything in * the outline for an arc except what's in the curved part. * For a "pie slice" arc this is a V-shaped chunk, and for * a "chord" arc this is a linear chunk (with cutaway corners). * For "arc" arcs, this stuff isn't relevant. * * Results: * None. * * Side effects: * The information at arcPtr->outlinePtr gets modified, and * storage for arcPtr->outlinePtr may be allocated or freed. * *-------------------------------------------------------------- */ static void ComputeArcOutline(arcPtr) register ArcItem *arcPtr; { double sin1, cos1, sin2, cos2, angle, halfWidth; double boxWidth, boxHeight; double vertex[2], corner1[2], corner2[2]; double *outlinePtr; /* * Make sure that the outlinePtr array is large enough to hold * either a chord or pie-slice outline. */ if (arcPtr->numOutlinePoints == 0) { arcPtr->outlinePtr = (double *) ckalloc((unsigned) (26 * sizeof(double))); arcPtr->numOutlinePoints = 22; } outlinePtr = arcPtr->outlinePtr; /* * First compute the two points that lie at the centers of * the ends of the curved arc segment, which are marked with * X's in the figure below: * * * * * * * * * * * * * * * * * * * * * * * * * X * * X * * The code is tricky because the arc can be ovular in shape. * It computes the position for a unit circle, and then * scales to fit the shape of the arc's bounding box. * * Also, watch out because angles go counter-clockwise like you * might expect, but the y-coordinate system is inverted. To * handle this, just negate the angles in all the computations. */ boxWidth = arcPtr->bbox[2] - arcPtr->bbox[0]; boxHeight = arcPtr->bbox[3] - arcPtr->bbox[1]; angle = -arcPtr->start*PI/180.0; sin1 = sin(angle); cos1 = cos(angle); angle -= arcPtr->extent*PI/180.0; sin2 = sin(angle); cos2 = cos(angle); vertex[0] = (arcPtr->bbox[0] + arcPtr->bbox[2])/2.0; vertex[1] = (arcPtr->bbox[1] + arcPtr->bbox[3])/2.0; arcPtr->center1[0] = vertex[0] + cos1*boxWidth/2.0; arcPtr->center1[1] = vertex[1] + sin1*boxHeight/2.0; arcPtr->center2[0] = vertex[0] + cos2*boxWidth/2.0; arcPtr->center2[1] = vertex[1] + sin2*boxHeight/2.0; /* * Next compute the "outermost corners" of the arc, which are * marked with X's in the figure below: * * * * * * * * * * * * * * * * * * * X * * X * * * * * The code below is tricky because it has to handle eccentricity * in the shape of the oval. The key in the code below is to * realize that the slope of the line from arcPtr->center1 to corner1 * is (boxWidth*sin1)/(boxHeight*cos1), and similarly for arcPtr->center2 * and corner2. These formulas can be computed from the formula for * the oval. */ halfWidth = arcPtr->width/2.0; angle = atan2(boxWidth*sin1, boxHeight*cos1); corner1[0] = arcPtr->center1[0] + cos(angle)*halfWidth; corner1[1] = arcPtr->center1[1] + sin(angle)*halfWidth; angle = atan2(boxWidth*sin2, boxHeight*cos2); corner2[0] = arcPtr->center2[0] + cos(angle)*halfWidth; corner2[1] = arcPtr->center2[1] + sin(angle)*halfWidth; /* * For a chord outline, generate a six-sided polygon with three * points for each end of the chord. The first and third points * for each end are butt points generated on either side of the * center point. The second point is the corner point. */ if (arcPtr->style == chordUid) { outlinePtr[0] = outlinePtr[12] = corner1[0]; outlinePtr[1] = outlinePtr[13] = corner1[1]; TkGetButtPoints(arcPtr->center2, arcPtr->center1, (double) arcPtr->width, 0, outlinePtr+10, outlinePtr+2); outlinePtr[4] = arcPtr->center2[0] + outlinePtr[2] - arcPtr->center1[0]; outlinePtr[5] = arcPtr->center2[1] + outlinePtr[3] - arcPtr->center1[1]; outlinePtr[6] = corner2[0]; outlinePtr[7] = corner2[1]; outlinePtr[8] = arcPtr->center2[0] + outlinePtr[10] - arcPtr->center1[0]; outlinePtr[9] = arcPtr->center2[1] + outlinePtr[11] - arcPtr->center1[1]; } else if (arcPtr->style == pieSliceUid) { /* * For pie slices, generate two polygons, one for each side * of the pie slice. The first arm has a shape like this, * where the center of the oval is X, arcPtr->center1 is at Y, and * corner1 is at Z: * * _____________________ * | \ * | \ * X Y Z * | / * |_____________________/ * */ TkGetButtPoints(arcPtr->center1, vertex, (double) arcPtr->width, 0, outlinePtr, outlinePtr+2); outlinePtr[4] = arcPtr->center1[0] + outlinePtr[2] - vertex[0]; outlinePtr[5] = arcPtr->center1[1] + outlinePtr[3] - vertex[1]; outlinePtr[6] = corner1[0]; outlinePtr[7] = corner1[1]; outlinePtr[8] = arcPtr->center1[0] + outlinePtr[0] - vertex[0]; outlinePtr[9] = arcPtr->center1[1] + outlinePtr[1] - vertex[1]; outlinePtr[10] = outlinePtr[0]; outlinePtr[11] = outlinePtr[1]; /* * The second arm has a shape like this: * * * ______________________ * / \ * / \ * Z Y X / * \ / * \______________________/ * * Similar to above X is the center of the oval/circle, Y is * arcPtr->center2, and Z is corner2. The extra jog out to the left * of X is needed in or to produce a butted joint with the * first arm; the corner to the right of X is one of the * first two points of the first arm, depending on extent. */ TkGetButtPoints(arcPtr->center2, vertex, (double) arcPtr->width, 0, outlinePtr+12, outlinePtr+16); if ((arcPtr->extent > 180) || ((arcPtr->extent < 0) && (arcPtr->extent > -180))) { outlinePtr[14] = outlinePtr[0]; outlinePtr[15] = outlinePtr[1]; } else { outlinePtr[14] = outlinePtr[2]; outlinePtr[15] = outlinePtr[3]; } outlinePtr[18] = arcPtr->center2[0] + outlinePtr[16] - vertex[0]; outlinePtr[19] = arcPtr->center2[1] + outlinePtr[17] - vertex[1]; outlinePtr[20] = corner2[0]; outlinePtr[21] = corner2[1]; outlinePtr[22] = arcPtr->center2[0] + outlinePtr[12] - vertex[0]; outlinePtr[23] = arcPtr->center2[1] + outlinePtr[13] - vertex[1]; outlinePtr[24] = outlinePtr[12]; outlinePtr[25] = outlinePtr[13]; } } /* *-------------------------------------------------------------- * * HorizLineToArc -- * * Determines whether a horizontal line segment intersects * a given arc. * * Results: * The return value is 1 if the given line intersects the * infinitely-thin arc section defined by rx, ry, start, * and extent, and 0 otherwise. Only the perimeter of the * arc is checked: interior areas (e.g. pie-slice or chord) * are not checked. * * Side effects: * None. * *-------------------------------------------------------------- */ static int HorizLineToArc(x1, x2, y, rx, ry, start, extent) double x1, x2; /* X-coords of endpoints of line segment. * X1 must be <= x2. */ double y; /* Y-coordinate of line segment. */ double rx, ry; /* These x- and y-radii define an oval * centered at the origin. */ double start, extent; /* Angles that define extent of arc, in * the standard fashion for this module. */ { double tmp; double tx, ty; /* Coordinates of intersection point in * transformed coordinate system. */ double x; /* * Compute the x-coordinate of one possible intersection point * between the arc and the line. Use a transformed coordinate * system where the oval is a unit circle centered at the origin. * Then scale back to get actual x-coordinate. */ ty = y/ry; tmp = 1 - ty*ty; if (tmp < 0) { return 0; } tx = sqrt(tmp); x = tx*rx; /* * Test both intersection points. */ if ((x >= x1) && (x <= x2) && AngleInRange(tx, ty, start, extent)) { return 1; } if ((-x >= x1) && (-x <= x2) && AngleInRange(-tx, ty, start, extent)) { return 1; } return 0; } /* *-------------------------------------------------------------- * * VertLineToArc -- * * Determines whether a vertical line segment intersects * a given arc. * * Results: * The return value is 1 if the given line intersects the * infinitely-thin arc section defined by rx, ry, start, * and extent, and 0 otherwise. Only the perimeter of the * arc is checked: interior areas (e.g. pie-slice or chord) * are not checked. * * Side effects: * None. * *-------------------------------------------------------------- */ static int VertLineToArc(x, y1, y2, rx, ry, start, extent) double x; /* X-coordinate of line segment. */ double y1, y2; /* Y-coords of endpoints of line segment. * Y1 must be <= y2. */ double rx, ry; /* These x- and y-radii define an oval * centered at the origin. */ double start, extent; /* Angles that define extent of arc, in * the standard fashion for this module. */ { double tmp; double tx, ty; /* Coordinates of intersection point in * transformed coordinate system. */ double y; /* * Compute the y-coordinate of one possible intersection point * between the arc and the line. Use a transformed coordinate * system where the oval is a unit circle centered at the origin. * Then scale back to get actual y-coordinate. */ tx = x/rx; tmp = 1 - tx*tx; if (tmp < 0) { return 0; } ty = sqrt(tmp); y = ty*ry; /* * Test both intersection points. */ if ((y > y1) && (y < y2) && AngleInRange(tx, ty, start, extent)) { return 1; } if ((-y > y1) && (-y < y2) && AngleInRange(tx, -ty, start, extent)) { return 1; } return 0; } /* *-------------------------------------------------------------- * * AngleInRange -- * * Determine whether the angle from the origin to a given * point is within a given range. * * Results: * The return value is 1 if the angle from (0,0) to (x,y) * is in the range given by start and extent, where angles * are interpreted in the standard way for ovals (meaning * backwards from normal interpretation). Otherwise the * return value is 0. * * Side effects: * None. * *-------------------------------------------------------------- */ static int AngleInRange(x, y, start, extent) double x, y; /* Coordinate of point; angle measured * from origin to here, relative to x-axis. */ double start; /* First angle, degrees, >=0, <=360. */ double extent; /* Size of arc in degrees >=-360, <=360. */ { double diff; diff = -atan2(y, x); diff = diff*(180.0/PI) - start; while (diff > 360.0) { diff -= 360.0; } while (diff < 0.0) { diff += 360.0; } if (extent >= 0) { return diff <= extent; } return (diff-360.0) >= extent; } micropolis-activity/src/tk/tkbind.c0000664000076400007640000017077210724145723017675 0ustar simcitysimcity/* * tkBind.c -- * * This file provides procedures that associate Tcl commands * with X events or sequences of X events. * * Copyright 1989-1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkBind.c,v 1.48 92/08/10 16:55:24 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include "tkconfig.h" #include "tkint.h" /* * The structure below represents a binding table. A binding table * represents a domain in which event bindings may occur. It includes * a space of objects relative to which events occur (usually windows, * but not always), a history of recent events in the domain, and * a set of mappings that associate particular Tcl commands with sequences * of events in the domain. Multiple binding tables may exist at once, * either because there are multiple applications open, or because there * are multiple domains within an application with separate event * bindings for each (for example, each canvas widget has a separate * binding table for associating events with the items in the canvas). */ #define EVENT_BUFFER_SIZE 10 typedef struct BindingTable { XEvent eventRing[EVENT_BUFFER_SIZE];/* Circular queue of recent events * (higher indices are for more recent * events). */ int detailRing[EVENT_BUFFER_SIZE]; /* "Detail" information (keySym or * button or 0) for each entry in * eventRing. */ int curEvent; /* Index in eventRing of most recent * event. Newer events have higher * indices. */ Tcl_HashTable patternTable; /* Used to map from an event to a list * of patterns that may match that * event. Keys are PatternTableKey * structs, values are (PatSeq *). */ Tcl_HashTable objectTable; /* Used to map from an object to a list * of patterns associated with that * object. Keys are ClientData, * values are (PatSeq *). */ Tcl_Interp *interp; /* Interpreter in which commands are * executed. */ } BindingTable; /* * Structures of the following form are used as keys in the patternTable * for a binding table: */ typedef struct PatternTableKey { ClientData object; /* Identifies object (or class of objects) * relative to which event occurred. For * example, in the widget binding table for * an application this is the path name of * a widget, or a widget class, or "all". */ int type; /* Type of event (from X). */ int detail; /* Additional information, such as * keysym or button, or 0 if nothing * additional.*/ } PatternTableKey; /* * The following structure defines a pattern, which is matched * against X events as part of the process of converting X events * into Tcl commands. */ typedef struct Pattern { int eventType; /* Type of X event, e.g. ButtonPress. */ int needMods; /* Mask of modifiers that must be * present (0 means no modifiers are * required). */ int hateMods; /* Mask of modifiers that must not be * present (0 means any modifiers are * OK). */ int detail; /* Additional information that must * match event. Normally this is 0, * meaning no additional information * must match. For KeyPress and * KeyRelease events, a keySym may * be specified to select a * particular keystroke (0 means any * keystrokes). For button events, * specifies a particular button (0 * means any buttons are OK). */ } Pattern; /* * The structure below defines a pattern sequence, which consists * of one or more patterns. In order to trigger, a pattern * sequence must match the most recent X events (first pattern * to most recent event, next pattern to next event, and so on). */ typedef struct PatSeq { int numPats; /* Number of patterns in sequence * (usually 1). */ char *command; /* Command to invoke when this * pattern sequence matches (malloc-ed). */ int flags; /* Miscellaneous flag values; see * below for definitions. */ struct PatSeq *nextSeqPtr; /* Next in list of all pattern * sequences that have the same * initial pattern. NULL means * end of list. */ Tcl_HashEntry *hPtr; /* Pointer to hash table entry for * the initial pattern. This is the * head of the list of which nextSeqPtr * forms a part. */ ClientData object; /* Identifies object with which event is * associated (e.g. window). */ struct PatSeq *nextObjPtr; /* Next in list of all pattern * sequences for the same object * (NULL for end of list). Needed to * implement Tk_DeleteAllBindings. */ Pattern pats[1]; /* Array of "numPats" patterns. Only * one element is declared here but * in actuality enough space will be * allocated for "numPats" patterns. * To match, pats[0] must match event * n, pats[1] must match event n-1, * etc. */ } PatSeq; /* * Flag values for PatSeq structures: * * PAT_NEARBY 1 means that all of the events matching * this sequence must occur with nearby X * and Y mouse coordinates and close in time. * This is typically used to restrict multiple * button presses. * PAT_PERCENTS 1 means that the command for this pattern * requires percent substitution. 0 means there * are no percents in the command. */ #define PAT_NEARBY 1 #define PAT_PERCENTS 2 /* * Constants that define how close together two events must be * in milliseconds or pixels to meet the PAT_NEARBY constraint: */ #define NEARBY_PIXELS 5 #define NEARBY_MS 500 /* * The data structure and hash table below are used to map from * textual keysym names to keysym numbers. This structure is * present here because the corresponding X procedures are * ridiculously slow. */ typedef struct { char *name; /* Name of keysym. */ KeySym value; /* Numeric identifier for keysym. */ } KeySymInfo; KeySymInfo keyArray[] = { #ifndef lint #include "ks_names.h" #endif (char *) NULL, 0 }; static Tcl_HashTable keySymTable; /* Hashed form of above structure. */ static int initialized = 0; /* * A hash table is kept to map from the string names of event * modifiers to information about those modifiers. The structure * for storing this information, and the hash table built at * initialization time, are defined below. */ typedef struct { char *name; /* Name of modifier. */ int mask; /* Button/modifier mask value, * such as Button1Mask. */ int flags; /* Various flags; see below for * definitions. */ } ModInfo; /* * Flags for ModInfo structures: * * DOUBLE - Non-zero means duplicate this event, * e.g. for double-clicks. * TRIPLE - Non-zero means triplicate this event, * e.g. for triple-clicks. * ANY - Non-zero means that this event allows * any unspecified modifiers. */ #define DOUBLE 1 #define TRIPLE 2 #define ANY 4 static ModInfo modArray[] = { "Control", ControlMask, 0, "Shift", ShiftMask, 0, "Lock", LockMask, 0, "B1", Button1Mask, 0, "Button1", Button1Mask, 0, "B2", Button2Mask, 0, "Button2", Button2Mask, 0, "B3", Button3Mask, 0, "Button3", Button3Mask, 0, "B4", Button4Mask, 0, "Button4", Button4Mask, 0, "B5", Button5Mask, 0, "Button5", Button5Mask, 0, "Mod1", Mod1Mask, 0, "M1", Mod1Mask, 0, "Meta", Mod1Mask, 0, "M", Mod1Mask, 0, "Mod2", Mod2Mask, 0, "M2", Mod2Mask, 0, "Alt", Mod2Mask, 0, "Mod3", Mod3Mask, 0, "M3", Mod3Mask, 0, "Mod4", Mod4Mask, 0, "M4", Mod4Mask, 0, "Mod5", Mod5Mask, 0, "M5", Mod5Mask, 0, "Double", 0, DOUBLE, "Triple", 0, TRIPLE, "Any", 0, ANY, NULL, 0, 0}; static Tcl_HashTable modTable; /* * This module also keeps a hash table mapping from event names * to information about those events. The structure, an array * to use to initialize the hash table, and the hash table are * all defined below. */ typedef struct { char *name; /* Name of event. */ int type; /* Event type for X, such as * ButtonPress. */ int eventMask; /* Mask bits (for XSelectInput) * for this event type. */ } EventInfo; /* * Note: some of the masks below are an OR-ed combination of * several masks. This is necessary because X doesn't report * up events unless you also ask for down events. Also, X * doesn't report button state in motion events unless you've * asked about button events. */ static EventInfo eventArray[] = { "Motion", MotionNotify, ButtonPressMask|PointerMotionMask, "Button", ButtonPress, ButtonPressMask, "ButtonPress", ButtonPress, ButtonPressMask, "ButtonRelease", ButtonRelease, ButtonPressMask|ButtonReleaseMask, "Colormap", ColormapNotify, ColormapChangeMask, "Enter", EnterNotify, EnterWindowMask, "Leave", LeaveNotify, LeaveWindowMask, "Expose", Expose, ExposureMask, "FocusIn", FocusIn, FocusChangeMask, "FocusOut", FocusOut, FocusChangeMask, "Keymap", KeymapNotify, KeymapStateMask, "Key", KeyPress, KeyPressMask, "KeyPress", KeyPress, KeyPressMask, "KeyRelease", KeyRelease, KeyPressMask|KeyReleaseMask, "Property", PropertyNotify, PropertyChangeMask, "ResizeRequest", ResizeRequest, ResizeRedirectMask, "Circulate", CirculateNotify, StructureNotifyMask, "Configure", ConfigureNotify, StructureNotifyMask, "Destroy", DestroyNotify, StructureNotifyMask, "Gravity", GravityNotify, StructureNotifyMask, "Map", MapNotify, StructureNotifyMask, "Reparent", ReparentNotify, StructureNotifyMask, "Unmap", UnmapNotify, StructureNotifyMask, "Visibility", VisibilityNotify, VisibilityChangeMask, "CirculateRequest", CirculateRequest, SubstructureRedirectMask, "ConfigureRequest", ConfigureRequest, SubstructureRedirectMask, "MapRequest", MapRequest, SubstructureRedirectMask, (char *) NULL, 0, 0}; static Tcl_HashTable eventTable; /* * The defines and table below are used to classify events into * various groups. The reason for this is that logically identical * fields (e.g. "state") appear at different places in different * types of events. The classification masks can be used to figure * out quickly where to extract information from events. */ #define KEY_BUTTON_MOTION 0x1 #define CROSSING 0x2 #define FOCUS 0x4 #define EXPOSE 0x8 #define VISIBILITY 0x10 #define CREATE 0x20 #define MAP 0x40 #define REPARENT 0x80 #define CONFIG 0x100 #define CONFIG_REQ 0x200 #define RESIZE_REQ 0x400 #define GRAVITY 0x800 #define PROP 0x0100 #define SEL_CLEAR 0x2000 #define SEL_REQ 0x4000 #define SEL_NOTIFY 0x8000 #define COLORMAP 0x10000 #define MAPPING 0x20000 static int flagArray[LASTEvent] = { /* Not used */ 0, /* Not used */ 0, /* KeyPress */ KEY_BUTTON_MOTION, /* KeyRelease */ KEY_BUTTON_MOTION, /* ButtonPress */ KEY_BUTTON_MOTION, /* ButtonRelease */ KEY_BUTTON_MOTION, /* MotionNotify */ KEY_BUTTON_MOTION, /* EnterNotify */ CROSSING, /* LeaveNotify */ CROSSING, /* FocusIn */ FOCUS, /* FocusOut */ FOCUS, /* KeymapNotify */ 0, /* Expose */ EXPOSE, /* GraphicsExpose */ EXPOSE, /* NoExpose */ 0, /* VisibilityNotify */ VISIBILITY, /* CreateNotify */ CREATE, /* DestroyNotify */ 0, /* UnmapNotify */ 0, /* MapNotify */ MAP, /* MapRequest */ 0, /* ReparentNotify */ REPARENT, /* ConfigureNotify */ CONFIG, /* ConfigureRequest */ CONFIG_REQ, /* GravityNotify */ 0, /* ResizeRequest */ RESIZE_REQ, /* CirculateNotify */ 0, /* CirculateRequest */ 0, /* PropertyNotify */ PROP, /* SelectionClear */ SEL_CLEAR, /* SelectionRequest */ SEL_REQ, /* SelectionNotify */ SEL_NOTIFY, /* ColormapNotify */ COLORMAP, /* ClientMessage */ 0, /* MappingNotify */ MAPPING }; /* * Forward declarations for procedures defined later in this * file: */ static char * ExpandPercents _ANSI_ARGS_((char *before, XEvent *eventPtr, KeySym keySym, char *after, int afterSize)); static PatSeq * FindSequence _ANSI_ARGS_((Tcl_Interp *interp, BindingTable *bindPtr, ClientData object, char *eventString, int create, unsigned long *maskPtr)); static char * GetField _ANSI_ARGS_((char *p, char *copy, int size)); static KeySym GetKeySym _ANSI_ARGS_((TkDisplay *dispPtr, XEvent *eventPtr)); static PatSeq * MatchPatterns _ANSI_ARGS_((BindingTable *bindPtr, PatSeq *psPtr)); /* *-------------------------------------------------------------- * * Tk_CreateBindingTable -- * * Set up a new domain in which event bindings may be created. * * Results: * The return value is a token for the new table, which must * be passed to procedures like Tk_CreatBinding. * * Side effects: * Memory is allocated for the new table. * *-------------------------------------------------------------- */ Tk_BindingTable Tk_CreateBindingTable(interp) Tcl_Interp *interp; /* Interpreter to associate with the binding * table: commands are executed in this * interpreter. */ { register BindingTable *bindPtr; int i; /* * If this is the first time a binding table has been created, * initialize the global data structures. */ if (!initialized) { register KeySymInfo *kPtr; register Tcl_HashEntry *hPtr; register ModInfo *modPtr; register EventInfo *eiPtr; int dummy; initialized = 1; Tcl_InitHashTable(&keySymTable, TCL_STRING_KEYS); for (kPtr = keyArray; kPtr->name != NULL; kPtr++) { hPtr = Tcl_CreateHashEntry(&keySymTable, kPtr->name, &dummy); Tcl_SetHashValue(hPtr, kPtr->value); } Tcl_InitHashTable(&modTable, TCL_STRING_KEYS); for (modPtr = modArray; modPtr->name != NULL; modPtr++) { hPtr = Tcl_CreateHashEntry(&modTable, modPtr->name, &dummy); Tcl_SetHashValue(hPtr, modPtr); } Tcl_InitHashTable(&eventTable, TCL_STRING_KEYS); for (eiPtr = eventArray; eiPtr->name != NULL; eiPtr++) { hPtr = Tcl_CreateHashEntry(&eventTable, eiPtr->name, &dummy); Tcl_SetHashValue(hPtr, eiPtr); } } /* * Create and initialize a new binding table. */ bindPtr = (BindingTable *) ckalloc(sizeof(BindingTable)); for (i = 0; i < EVENT_BUFFER_SIZE; i++) { bindPtr->eventRing[i].type = -1; } bindPtr->curEvent = 0; Tcl_InitHashTable(&bindPtr->patternTable, sizeof(PatternTableKey)/sizeof(int)); Tcl_InitHashTable(&bindPtr->objectTable, TCL_ONE_WORD_KEYS); bindPtr->interp = interp; return (Tk_BindingTable) bindPtr; } /* *-------------------------------------------------------------- * * Tk_DeleteBindingTable -- * * Destroy a binding table and free up all its memory. * The caller should not use bindingTable again after * this procedure returns. * * Results: * None. * * Side effects: * Memory is freed. * *-------------------------------------------------------------- */ void Tk_DeleteBindingTable(bindingTable) Tk_BindingTable bindingTable; /* Token for the binding table to * destroy. */ { BindingTable *bindPtr = (BindingTable *) bindingTable; PatSeq *psPtr, *nextPtr; Tcl_HashEntry *hPtr; Tcl_HashSearch search; /* * Find and delete all of the patterns associated with the binding * table. */ for (hPtr = Tcl_FirstHashEntry(&bindPtr->patternTable, &search); hPtr != NULL; hPtr = Tcl_NextHashEntry(&search)) { for (psPtr = (PatSeq *) Tcl_GetHashValue(hPtr); psPtr != NULL; psPtr = nextPtr) { nextPtr = psPtr->nextSeqPtr; Tk_EventuallyFree((ClientData) psPtr->command, (Tk_FreeProc *) free); ckfree((char *) psPtr); } } /* * Clean up the rest of the information associated with the * binding table. */ Tcl_DeleteHashTable(&bindPtr->patternTable); Tcl_DeleteHashTable(&bindPtr->objectTable); ckfree((char *) bindPtr); } /* *-------------------------------------------------------------- * * Tk_CreateBinding -- * * Add a binding to a binding table, so that future calls to * Tk_BindEvent may execute the command in the binding. * * Results: * The return value is 0 if an error occurred while setting * up the binding. In this case, an error message will be * left in interp->result. If all went well then the return * value is a mask of the event types that must be made * available to Tk_BindEvent in order to properly detect when * this binding triggers. This value can be used to determine * what events to select for in a window, for example. * * Side effects: * The new binding may cause future calls to Tk_BindEvent to * behave differently than they did previously. * *-------------------------------------------------------------- */ unsigned long Tk_CreateBinding(interp, bindingTable, object, eventString, command, append) Tcl_Interp *interp; /* Used for error reporting. */ Tk_BindingTable bindingTable; /* Table in which to create binding. */ ClientData object; /* Token for object with which binding * is associated. */ char *eventString; /* String describing event sequence * that triggers binding. */ char *command; /* Contains Tcl command to execute * when binding triggers. */ int append; /* 0 means replace any existing * binding for eventString; 1 means * append to that binding. */ { BindingTable *bindPtr = (BindingTable *) bindingTable; register PatSeq *psPtr; unsigned long eventMask; psPtr = FindSequence(interp, bindPtr, object, eventString, 1, &eventMask); if (psPtr == NULL) { return 0; } if (append && (psPtr->command != NULL)) { int length; char *new; length = strlen(psPtr->command) + strlen(command) + 3; new = (char *) ckalloc((unsigned) length); sprintf(new, "%s; %s", psPtr->command, command); Tk_EventuallyFree((ClientData) psPtr->command, (Tk_FreeProc *) free); psPtr->command = new; } else { if (psPtr->command != NULL) { Tk_EventuallyFree((ClientData) psPtr->command, (Tk_FreeProc *) free); } psPtr->command = (char *) ckalloc((unsigned) (strlen(command) + 1)); strcpy(psPtr->command, command); } /* * See if the command contains percents and thereby requires * percent substitution. */ if (strchr(psPtr->command, '%') != NULL) { psPtr->flags |= PAT_PERCENTS; } return eventMask; } /* *-------------------------------------------------------------- * * Tk_DeleteBinding -- * * Remove an event binding from a binding table. * * Results: * The result is a standard Tcl return value. If an error * occurs then interp->result will contain an error message. * * Side effects: * The binding given by object and eventString is removed * from bindingTable. * *-------------------------------------------------------------- */ int Tk_DeleteBinding(interp, bindingTable, object, eventString) Tcl_Interp *interp; /* Used for error reporting. */ Tk_BindingTable bindingTable; /* Table in which to delete binding. */ ClientData object; /* Token for object with which binding * is associated. */ char *eventString; /* String describing event sequence * that triggers binding. */ { BindingTable *bindPtr = (BindingTable *) bindingTable; register PatSeq *psPtr, *prevPtr; unsigned long eventMask; Tcl_HashEntry *hPtr; psPtr = FindSequence(interp, bindPtr, object, eventString, 0, &eventMask); if (psPtr == NULL) { Tcl_ResetResult(interp); return TCL_OK; } /* * Unlink the binding from the list for its object, then from the * list for its pattern. */ hPtr = Tcl_FindHashEntry(&bindPtr->objectTable, (char *) object); if (hPtr == NULL) { panic("Tk_DeleteBinding couldn't find object table entry"); } prevPtr = (PatSeq *) Tcl_GetHashValue(hPtr); if (prevPtr == psPtr) { Tcl_SetHashValue(hPtr, psPtr->nextObjPtr); } else { for ( ; ; prevPtr = prevPtr->nextObjPtr) { if (prevPtr == NULL) { panic("Tk_DeleteBinding couldn't find on object list"); } if (prevPtr->nextObjPtr == psPtr) { prevPtr->nextObjPtr = psPtr->nextObjPtr; break; } } } prevPtr = (PatSeq *) Tcl_GetHashValue(psPtr->hPtr); if (prevPtr == psPtr) { if (psPtr->nextSeqPtr == NULL) { Tcl_DeleteHashEntry(psPtr->hPtr); } else { Tcl_SetHashValue(psPtr->hPtr, psPtr->nextSeqPtr); } } else { for ( ; ; prevPtr = prevPtr->nextSeqPtr) { if (prevPtr == NULL) { panic("Tk_DeleteBinding couldn't find on hash chain"); } if (prevPtr->nextSeqPtr == psPtr) { prevPtr->nextSeqPtr = psPtr->nextSeqPtr; break; } } } Tk_EventuallyFree((ClientData) psPtr->command, (Tk_FreeProc *) free); ckfree((char *) psPtr); return TCL_OK; } /* *-------------------------------------------------------------- * * Tk_GetBinding -- * * Return the command associated with a given event string. * * Results: * The return value is a pointer to the command string * associated with eventString for object in the domain * given by bindingTable. If there is no binding for * eventString, or if eventString is improperly formed, * then NULL is returned and an error message is left in * interp->result. The return value is semi-static: it * will persist until the binding is changed or deleted. * * Side effects: * None. * *-------------------------------------------------------------- */ char * Tk_GetBinding(interp, bindingTable, object, eventString) Tcl_Interp *interp; /* Interpreter for error reporting. */ Tk_BindingTable bindingTable; /* Table in which to look for * binding. */ ClientData object; /* Token for object with which binding * is associated. */ char *eventString; /* String describing event sequence * that triggers binding. */ { BindingTable *bindPtr = (BindingTable *) bindingTable; register PatSeq *psPtr; unsigned long eventMask; psPtr = FindSequence(interp, bindPtr, object, eventString, 0, &eventMask); if (psPtr == NULL) { return NULL; } return psPtr->command; } /* *-------------------------------------------------------------- * * Tk_GetAllBindings -- * * Return a list of event strings for all the bindings * associated with a given object. * * Results: * There is no return value. Interp->result is modified to * hold a Tcl list with one entry for each binding associated * with object in bindingTable. Each entry in the list * contains the event string associated with one binding. * * Side effects: * None. * *-------------------------------------------------------------- */ void Tk_GetAllBindings(interp, bindingTable, object) Tcl_Interp *interp; /* Interpreter for error reporting. */ Tk_BindingTable bindingTable; /* Table in which to look for * bindings. */ ClientData object; /* Token for object. */ { BindingTable *bindPtr = (BindingTable *) bindingTable; register PatSeq *psPtr; register Pattern *patPtr; Tcl_HashEntry *hPtr; char string[200*EVENT_BUFFER_SIZE]; register char *p; int patsLeft, needMods; register ModInfo *modPtr; hPtr = Tcl_FindHashEntry(&bindPtr->objectTable, (char *) object); if (hPtr == NULL) { return; } for (psPtr = (PatSeq *) Tcl_GetHashValue(hPtr); psPtr != NULL; psPtr = psPtr->nextObjPtr) { p = string; /* * For each binding, output information about each of the * patterns in its sequence. The order of the patterns in * the sequence is backwards from the order in which they * must be output. */ for (patsLeft = psPtr->numPats, patPtr = &psPtr->pats[psPtr->numPats - 1]; patsLeft > 0; patsLeft--, patPtr--) { /* * Check for simple case of an ASCII character. */ if ((patPtr->eventType == KeyPress) && (patPtr->needMods == 0) && (patPtr->hateMods == ~ShiftMask) && isascii(patPtr->detail) && isprint(patPtr->detail) && (patPtr->detail != '<') && (patPtr->detail != ' ')) { *p = patPtr->detail; p++; continue; } /* * It's a more general event specification. First check * for "Double" or "Triple", then "Any", then modifiers, * the event type, then keysym or button detail. */ *p = '<'; p++; if ((patsLeft > 1) && (memcmp((char *) patPtr, (char *) (patPtr-1), sizeof(Pattern)) == 0)) { patsLeft--; patPtr--; if ((patsLeft > 1) && (memcmp((char *) patPtr, (char *) (patPtr-1), sizeof(Pattern)) == 0)) { patsLeft--; patPtr--; strcpy(p, "Triple-"); } else { strcpy(p, "Double-"); } p += strlen(p); } if (patPtr->hateMods == 0) { strcpy(p, "Any-"); p += strlen(p); } for (needMods = patPtr->needMods, modPtr = modArray; needMods != 0; modPtr++) { if (modPtr->mask & needMods) { needMods &= ~modPtr->mask; strcpy(p, modPtr->name); p += strlen(p); *p = '-'; p++; } } if ((patPtr->eventType != KeyPress) || (patPtr->detail == 0)) { register EventInfo *eiPtr; for (eiPtr = eventArray; eiPtr->name != NULL; eiPtr++) { if (eiPtr->type == patPtr->eventType) { strcpy(p, eiPtr->name); p += strlen(p); if (patPtr->detail != 0) { *p = '-'; p++; } break; } } } if (patPtr->detail != 0) { if ((patPtr->eventType == KeyPress) || (patPtr->eventType == KeyRelease)) { register KeySymInfo *kPtr; for (kPtr = keyArray; kPtr->name != NULL; kPtr++) { if (patPtr->detail == (int) kPtr->value) { sprintf(p, "%.100s", kPtr->name); p += strlen(p); break; } } } else { sprintf(p, "%d", patPtr->detail); p += strlen(p); } } *p = '>'; p++; } *p = 0; if ((p - string) >= sizeof(string)) { panic("Tk_GetAllBindings overflowed buffer"); } Tcl_AppendElement(interp, string, 0); } } /* *-------------------------------------------------------------- * * Tk_DeleteAllBindings -- * * Remove all bindings associated with a given object in a * given binding table. * * Results: * All bindings associated with object are removed from * bindingTable. * * Side effects: * None. * *-------------------------------------------------------------- */ void Tk_DeleteAllBindings(bindingTable, object) Tk_BindingTable bindingTable; /* Table in which to delete * bindings. */ ClientData object; /* Token for object. */ { BindingTable *bindPtr = (BindingTable *) bindingTable; register PatSeq *psPtr, *prevPtr; PatSeq *nextPtr; Tcl_HashEntry *hPtr; hPtr = Tcl_FindHashEntry(&bindPtr->objectTable, (char *) object); if (hPtr == NULL) { return; } for (psPtr = (PatSeq *) Tcl_GetHashValue(hPtr); psPtr != NULL; psPtr = nextPtr) { nextPtr = psPtr->nextObjPtr; /* * Be sure to remove each binding from its hash chain in the * pattern table. If this is the last pattern in the chain, * then delete the hash entry too. */ prevPtr = (PatSeq *) Tcl_GetHashValue(psPtr->hPtr); if (prevPtr == psPtr) { if (psPtr->nextSeqPtr == NULL) { Tcl_DeleteHashEntry(psPtr->hPtr); } else { Tcl_SetHashValue(psPtr->hPtr, psPtr->nextSeqPtr); } } else { for ( ; ; prevPtr = prevPtr->nextSeqPtr) { if (prevPtr == NULL) { panic("Tk_DeleteAllBindings couldn't find on hash chain"); } if (prevPtr->nextSeqPtr == psPtr) { prevPtr->nextSeqPtr = psPtr->nextSeqPtr; break; } } } Tk_EventuallyFree((ClientData) psPtr->command, (Tk_FreeProc *) free); ckfree((char *) psPtr); } Tcl_DeleteHashEntry(hPtr); } /* *-------------------------------------------------------------- * * Tk_BindEvent -- * * This procedure is invoked to process an X event. The * event is added to those recorded for the binding table. * Then each of the objects at *objectPtr is checked in * order to see if it has a binding that matches the recent * events. If so, that binding is invoked and the rest of * objects are skipped. * * Results: * None. * * Side effects: * Depends on the command associated with the matching * binding. * *-------------------------------------------------------------- */ void Tk_BindEvent(bindingTable, eventPtr, tkwin, numObjects, objectPtr) Tk_BindingTable bindingTable; /* Table in which to look for * bindings. */ XEvent *eventPtr; /* What actually happened. */ Tk_Window tkwin; /* Window on display where event * occurred (needed in order to * locate display information). */ int numObjects; /* Number of objects at *objectPtr. */ ClientData *objectPtr; /* Array of one or more objects * to check for a matching binding. */ { BindingTable *bindPtr = (BindingTable *) bindingTable; TkDisplay *dispPtr = ((TkWindow *) tkwin)->dispPtr; XEvent *ringPtr; PatSeq *matchPtr; PatternTableKey key; Tcl_HashEntry *hPtr; int detail; /* * Add the new event to the ring of saved events for the * binding table. Consecutive MotionNotify events get combined: * if both the new event and the previous event are MotionNotify, * then put the new event *on top* of the previous event. */ if ((eventPtr->type != MotionNotify) || (bindPtr->eventRing[bindPtr->curEvent].type != MotionNotify)) { bindPtr->curEvent++; if (bindPtr->curEvent >= EVENT_BUFFER_SIZE) { bindPtr->curEvent = 0; } } ringPtr = &bindPtr->eventRing[bindPtr->curEvent]; memcpy((VOID *) ringPtr, (VOID *) eventPtr, sizeof(XEvent)); detail = 0; bindPtr->detailRing[bindPtr->curEvent] = 0; if ((ringPtr->type == KeyPress) || (ringPtr->type == KeyRelease)) { detail = (int) GetKeySym(dispPtr, ringPtr); if (detail == NoSymbol) { detail = 0; } } else if ((ringPtr->type == ButtonPress) || (ringPtr->type == ButtonRelease)) { detail = ringPtr->xbutton.button; } bindPtr->detailRing[bindPtr->curEvent] = detail; /* * Loop over all the objects, matching the new event against * each in turn. */ for ( ; numObjects > 0; numObjects--, objectPtr++) { /* * Match the new event against those recorded in the * pattern table, saving the longest matching pattern. * For events with details (button and key events) first * look for a binding for the specific key or button. * If none is found, then look for a binding for all * keys or buttons (detail of 0). */ matchPtr = NULL; key.object = *objectPtr; key.type = ringPtr->type; key.detail = detail; hPtr = Tcl_FindHashEntry(&bindPtr->patternTable, (char *) &key); if (hPtr != NULL) { matchPtr = MatchPatterns(bindPtr, (PatSeq *) Tcl_GetHashValue(hPtr)); } if ((detail != 0) && (matchPtr == NULL)) { key.detail = 0; hPtr = Tcl_FindHashEntry(&bindPtr->patternTable, (char *) &key); if (hPtr != NULL) { matchPtr = MatchPatterns(bindPtr, (PatSeq *) Tcl_GetHashValue(hPtr)); } } if (matchPtr != NULL) { /* * %-substitution can increase the length of the command. * This code handles three cases: (a) no substitution; * (b) substitution results in short command (use space * on stack); and (c) substitution results in long * command (malloc it). */ #define STATIC_SPACE 200 char shortSpace[STATIC_SPACE]; int result; if (matchPtr->flags & PAT_PERCENTS) { char *p; p = ExpandPercents(matchPtr->command, eventPtr, (KeySym) detail, shortSpace, STATIC_SPACE); result = Tcl_GlobalEval(bindPtr->interp, p); if (p != shortSpace) { ckfree(p); } } else { /* * The code below is tricky in order allow the binding to * be modified or deleted as part of the command that the * binding invokes. Must make sure that the actual command * string isn't freed until the command completes, and must * copy the address of this string into a local variable * in case it's modified by the command. */ char *cmd = matchPtr->command; Tk_Preserve((ClientData) cmd); result = Tcl_GlobalEval(bindPtr->interp, cmd); Tk_Release((ClientData) cmd); } if (result != TCL_OK) { Tcl_AddErrorInfo(bindPtr->interp, "\n (command bound to event)"); TkBindError(bindPtr->interp); } return; } } } /* *---------------------------------------------------------------------- * * FindSequence -- * * Find the entry in a binding table that corresponds to a * particular pattern string, and return a pointer to that * entry. * * Results: * The return value is normally a pointer to the PatSeq * in patternTable that corresponds to eventString. If an error * was found while parsing eventString, or if "create" is 0 and * no pattern sequence previously existed, then NULL is returned * and interp->result contains a message describing the problem. * If no pattern sequence previously existed for eventString, then * a new one is created with a NULL command field. In a successful * return, *maskPtr is filled in with a mask of the event types * on which the pattern sequence depends. * * Side effects: * A new pattern sequence may be created. * *---------------------------------------------------------------------- */ static PatSeq * FindSequence(interp, bindPtr, object, eventString, create, maskPtr) Tcl_Interp *interp; /* Interpreter to use for error * reporting. */ BindingTable *bindPtr; /* Table to use for lookup. */ ClientData object; /* Token for object(s) with which binding * is associated. */ char *eventString; /* String description of pattern to * match on. See user documentation * for details. */ int create; /* 0 means don't create the entry if * it doesn't already exist. Non-zero * means create. */ unsigned long *maskPtr; /* *maskPtr is filled in with the event * types on which this pattern sequence * depends. */ { Pattern pats[EVENT_BUFFER_SIZE]; int numPats; register char *p; register Pattern *patPtr; register PatSeq *psPtr; register Tcl_HashEntry *hPtr; #define FIELD_SIZE 20 char field[FIELD_SIZE]; int flags, any, count, new, sequenceSize; unsigned long eventMask; PatternTableKey key; /* *------------------------------------------------------------- * Step 1: parse the pattern string to produce an array * of Patterns. The array is generated backwards, so * that the lowest-indexed pattern corresponds to the last * event that must occur. *------------------------------------------------------------- */ p = eventString; flags = 0; eventMask = 0; for (numPats = 0, patPtr = &pats[EVENT_BUFFER_SIZE-1]; numPats < EVENT_BUFFER_SIZE; numPats++, patPtr--) { patPtr->eventType = -1; patPtr->needMods = 0; patPtr->hateMods = ~0; patPtr->detail = 0; while (isspace(*p)) { p++; } if (*p == '\0') { break; } /* * Handle simple ASCII characters. Note: the shift * modifier is ignored in this case (it's really part * of the character, rather than a "modifier"). */ if (*p != '<') { char string[2]; patPtr->eventType = KeyPress; eventMask |= KeyPressMask; string[0] = *p; string[1] = 0; hPtr = Tcl_FindHashEntry(&keySymTable, string); if (hPtr != NULL) { patPtr->detail = (int) Tcl_GetHashValue(hPtr); } else { if (isprint(*p)) { patPtr->detail = *p; } else { sprintf(interp->result, "bad ASCII character 0x%x", *p); return NULL; } } patPtr->hateMods = ~ShiftMask; p++; continue; } /* * A fancier event description. Must consist of * 1. open angle bracket. * 2. any number of modifiers, each followed by spaces * or dashes. * 3. an optional event name. * 4. an option button or keysym name. Either this or * item 3 *must* be present; if both are present * then they are separated by spaces or dashes. * 5. a close angle bracket. */ any = 0; count = 1; p++; while (1) { register ModInfo *modPtr; p = GetField(p, field, FIELD_SIZE); hPtr = Tcl_FindHashEntry(&modTable, field); if (hPtr == NULL) { break; } modPtr = (ModInfo *) Tcl_GetHashValue(hPtr); patPtr->needMods |= modPtr->mask; if (modPtr->flags & (DOUBLE|TRIPLE)) { flags |= PAT_NEARBY; if (modPtr->flags & DOUBLE) { count = 2; } else { count = 3; } } if (modPtr->flags & ANY) { any = 1; } while ((*p == '-') || isspace(*p)) { p++; } } if (any) { patPtr->hateMods = 0; } else { patPtr->hateMods = ~patPtr->needMods; } hPtr = Tcl_FindHashEntry(&eventTable, field); if (hPtr != NULL) { register EventInfo *eiPtr; eiPtr = (EventInfo *) Tcl_GetHashValue(hPtr); patPtr->eventType = eiPtr->type; eventMask |= eiPtr->eventMask; while ((*p == '-') || isspace(*p)) { p++; } p = GetField(p, field, FIELD_SIZE); } if (*field != '\0') { if ((*field >= '1') && (*field <= '5') && (field[1] == '\0')) { static int masks[] = {~0, ~Button1Mask, ~Button2Mask, ~Button3Mask, ~Button4Mask, ~Button5Mask}; if (patPtr->eventType == -1) { patPtr->eventType = ButtonPress; eventMask |= ButtonPressMask; } else if ((patPtr->eventType == KeyPress) || (patPtr->eventType == KeyRelease)) { goto getKeysym; } else if ((patPtr->eventType != ButtonPress) && (patPtr->eventType != ButtonRelease)) { Tcl_AppendResult(interp, "specified button \"", field, "\" for non-button event", (char *) NULL); return NULL; } patPtr->detail = (*field - '0'); /* * Ignore this button as a modifier: its state is already * fixed. */ patPtr->needMods &= masks[patPtr->detail]; patPtr->hateMods &= masks[patPtr->detail]; } else { getKeysym: hPtr = Tcl_FindHashEntry(&keySymTable, (char *) field); if (hPtr == NULL) { Tcl_AppendResult(interp, "bad event type or keysym \"", field, "\"", (char *) NULL); return NULL; } if (patPtr->eventType == -1) { patPtr->eventType = KeyPress; eventMask |= KeyPressMask; } else if ((patPtr->eventType != KeyPress) && (patPtr->eventType != KeyRelease)) { Tcl_AppendResult(interp, "specified keysym \"", field, "\" for non-key event", (char *) NULL); return NULL; } patPtr->detail = (int) Tcl_GetHashValue(hPtr); /* * Don't get upset about the shift modifier with keys: * if the key doesn't permit the shift modifier then * that will already be factored in when translating * from keycode to keysym in Tk_BindEvent. If the keysym * has both a shifted and unshifted form, we want to allow * the shifted form to be specified explicitly, though. */ patPtr->hateMods &= ~ShiftMask; } } else if (patPtr->eventType == -1) { interp->result = "no event type or button # or keysym"; return NULL; } while ((*p == '-') || isspace(*p)) { p++; } if (*p != '>') { interp->result = "missing \">\" in binding"; return NULL; } p++; /* * Replicate events for DOUBLE and TRIPLE. */ if ((count > 1) && (numPats < EVENT_BUFFER_SIZE-1)) { patPtr[-1] = patPtr[0]; patPtr--; numPats++; if ((count == 3) && (numPats < EVENT_BUFFER_SIZE-1)) { patPtr[-1] = patPtr[0]; patPtr--; numPats++; } } } /* *------------------------------------------------------------- * Step 2: find the sequence in the binding table if it exists, * and add a new sequence to the table if it doesn't. *------------------------------------------------------------- */ if (numPats == 0) { interp->result = "no events specified in binding"; return NULL; } patPtr = &pats[EVENT_BUFFER_SIZE-numPats]; key.object = object; key.type = patPtr->eventType; key.detail = patPtr->detail; hPtr = Tcl_CreateHashEntry(&bindPtr->patternTable, (char *) &key, &new); sequenceSize = numPats*sizeof(Pattern); if (!new) { for (psPtr = (PatSeq *) Tcl_GetHashValue(hPtr); psPtr != NULL; psPtr = psPtr->nextSeqPtr) { if ((numPats == psPtr->numPats) && ((flags & PAT_NEARBY) == (psPtr->flags & PAT_NEARBY)) && (memcmp((char *) patPtr, (char *) psPtr->pats, sequenceSize) == 0)) { *maskPtr = eventMask; /*don't forget to pass back the mask*/ goto done; } } } if (!create) { if (new) { Tcl_DeleteHashEntry(hPtr); } Tcl_AppendResult(interp, "no binding exists for \"", eventString, "\"", (char *) NULL); return NULL; } psPtr = (PatSeq *) ckalloc((unsigned) (sizeof(PatSeq) + (numPats-1)*sizeof(Pattern))); psPtr->numPats = numPats; psPtr->command = NULL; psPtr->flags = flags; psPtr->nextSeqPtr = (PatSeq *) Tcl_GetHashValue(hPtr); psPtr->hPtr = hPtr; Tcl_SetHashValue(hPtr, psPtr); /* * Link the pattern into the list associated with the object. */ psPtr->object = object; hPtr = Tcl_CreateHashEntry(&bindPtr->objectTable, (char *) object, &new); if (new) { psPtr->nextObjPtr = NULL; } else { psPtr->nextObjPtr = (PatSeq *) Tcl_GetHashValue(hPtr); } Tcl_SetHashValue(hPtr, psPtr); memcpy((VOID *) psPtr->pats, (VOID *) patPtr, sequenceSize); done: *maskPtr = eventMask; return psPtr; } /* *---------------------------------------------------------------------- * * GetField -- * * Used to parse pattern descriptions. Copies up to * size characters from p to copy, stopping at end of * string, space, "-", ">", or whenever size is * exceeded. * * Results: * The return value is a pointer to the character just * after the last one copied (usually "-" or space or * ">", but could be anything if size was exceeded). * Also places NULL-terminated string (up to size * character, including NULL), at copy. * * Side effects: * None. * *---------------------------------------------------------------------- */ static char * GetField(p, copy, size) register char *p; /* Pointer to part of pattern. */ register char *copy; /* Place to copy field. */ int size; /* Maximum number of characters to * copy. */ { while ((*p != '\0') && !isspace(*p) && (*p != '>') && (*p != '-') && (size > 1)) { *copy = *p; p++; copy++; size--; } *copy = '\0'; return p; } /* *---------------------------------------------------------------------- * * GetKeySym -- * * Given an X KeyPress or KeyRelease event, map the * keycode in the event into a KeySym. * * Results: * The return value is the KeySym corresponding to * eventPtr, or NoSymbol if no matching Keysym could be * found. * * Side effects: * In the first call for a given display, keycode-to- * KeySym maps get loaded. * *---------------------------------------------------------------------- */ static KeySym GetKeySym(dispPtr, eventPtr) register TkDisplay *dispPtr; /* Display in which to * map keycode. */ register XEvent *eventPtr; /* Description of X event. */ { KeySym *symPtr; KeySym sym; /* * Read the key mapping information from the server if * we don't have it already. */ if (dispPtr->symsPerCode == 0) { Display *dpy = dispPtr->display; #ifdef IS_LINUX XDisplayKeycodes(dpy, &dispPtr->firstKeycode, &dispPtr->lastKeycode); #else dispPtr->firstKeycode = dpy->min_keycode; dispPtr->lastKeycode = dpy->max_keycode; #endif dispPtr->keySyms = XGetKeyboardMapping(dpy, dispPtr->firstKeycode, dispPtr->lastKeycode + 1 - dispPtr->firstKeycode, &dispPtr->symsPerCode); } /* * Compute the lower-case KeySym for this keycode. May * have to convert an upper-case KeySym to a lower-case * one if the list only has a single element. */ if ((eventPtr->xkey.keycode < dispPtr->firstKeycode) || (eventPtr->xkey.keycode > dispPtr->lastKeycode)) { return NoSymbol; } symPtr = &dispPtr->keySyms[(eventPtr->xkey.keycode - dispPtr->firstKeycode) * dispPtr->symsPerCode]; sym = *symPtr; if ((dispPtr->symsPerCode == 1) || (symPtr[1] == NoSymbol)) { if ((sym >= XK_A) && (sym <= XK_Z)) { sym += (XK_a - XK_A); } else if ((sym >= XK_Agrave) && (sym <= XK_Odiaeresis)) { sym += (XK_agrave - XK_Agrave); } else if ((sym >= XK_Ooblique) && (sym <= XK_Thorn)) { sym += (XK_oslash - XK_Ooblique); } } /* * See whether the key is shifted or caps-locked. If so, * use an upper-case equivalent if provided, or compute * one (for caps-lock, just compute upper-case: don't * use shifted KeySym since that would shift non-alphabetic * keys). */ if (eventPtr->xkey.state & ShiftMask) { if ((dispPtr->symsPerCode > 1) && (symPtr[1] != NoSymbol)) { return symPtr[1]; } shiftToUpper: if ((sym >= XK_a) && (sym <= XK_z)) { sym += (XK_A - XK_a); } else if ((sym >= XK_agrave) && (sym <= XK_adiaeresis)) { sym += (XK_Agrave - XK_agrave); } else if ((sym >= XK_oslash) && (sym <= XK_thorn)) { sym += (XK_Ooblique - XK_oslash); } return sym; } if (eventPtr->xkey.state & LockMask) { goto shiftToUpper; } return sym; } /* *---------------------------------------------------------------------- * * MatchPatterns -- * * Given a list of pattern sequences and a list of * recent events, return a pattern sequence that matches * the event list. * * Results: * The return value is NULL if no pattern matches the * recent events from bindPtr. If one or more patterns * matches, then the longest (or most specific) matching * pattern is returned. * * Side effects: * None. * *---------------------------------------------------------------------- */ static PatSeq * MatchPatterns(bindPtr, psPtr) BindingTable *bindPtr; /* Information about binding table, such * as ring of recent events. */ register PatSeq *psPtr; /* List of pattern sequences. */ { register PatSeq *bestPtr = NULL; /* * Iterate over all the pattern sequences. */ for ( ; psPtr != NULL; psPtr = psPtr->nextSeqPtr) { register XEvent *eventPtr; register Pattern *patPtr; Window window; int *detailPtr; int patCount, ringCount, flags, state; /* * Iterate over all the patterns in a sequence to be * sure that they all match. */ eventPtr = &bindPtr->eventRing[bindPtr->curEvent]; detailPtr = &bindPtr->detailRing[bindPtr->curEvent]; window = eventPtr->xany.window; patPtr = psPtr->pats; patCount = psPtr->numPats; ringCount = EVENT_BUFFER_SIZE; while (patCount > 0) { if (ringCount <= 0) { goto nextSequence; } if (eventPtr->xany.window != window) { goto nextSequence; } if (eventPtr->xany.type != patPtr->eventType) { /* * If the event is a mouse motion, button release, * or key release event, and it didn't match * the pattern, then just skip the event and try * the next event against the same pattern. */ if ((eventPtr->xany.type == MotionNotify) || (eventPtr->xany.type == ButtonRelease) || (eventPtr->xany.type == KeyRelease) || (eventPtr->xany.type == NoExpose) || (eventPtr->xany.type == GraphicsExpose)) { goto nextEvent; } goto nextSequence; } flags = flagArray[eventPtr->type]; if (flags & KEY_BUTTON_MOTION) { state = eventPtr->xkey.state; } else if (flags & CROSSING) { state = eventPtr->xcrossing.state; } else { state = 0; } if ((state & patPtr->needMods) != patPtr->needMods) { goto nextSequence; } if ((state & patPtr->hateMods) != 0) { goto nextSequence; } if ((patPtr->detail != 0) && (patPtr->detail != *detailPtr)) { goto nextSequence; } if (psPtr->flags & PAT_NEARBY) { register XEvent *firstPtr; firstPtr = &bindPtr->eventRing[bindPtr->curEvent]; if ((firstPtr->xkey.x_root < (eventPtr->xkey.x_root - NEARBY_PIXELS)) || (firstPtr->xkey.x_root > (eventPtr->xkey.x_root + NEARBY_PIXELS)) || (firstPtr->xkey.y_root < (eventPtr->xkey.y_root - NEARBY_PIXELS)) || (firstPtr->xkey.y_root > (eventPtr->xkey.y_root + NEARBY_PIXELS)) || (firstPtr->xkey.time > (eventPtr->xkey.time + NEARBY_MS))) { goto nextSequence; } } patPtr++; patCount--; nextEvent: if (eventPtr == bindPtr->eventRing) { eventPtr = &bindPtr->eventRing[EVENT_BUFFER_SIZE-1]; detailPtr = &bindPtr->detailRing[EVENT_BUFFER_SIZE-1]; } else { eventPtr--; detailPtr--; } ringCount--; } /* * This sequence matches. If we've already got another match, * pick whichever is most specific. Detail is most important, * then needMods, then hateMods. */ if (bestPtr != NULL) { register Pattern *patPtr2; int i; if (psPtr->numPats != bestPtr->numPats) { if (bestPtr->numPats > psPtr->numPats) { goto nextSequence; } else { goto newBest; } } for (i = 0, patPtr = psPtr->pats, patPtr2 = bestPtr->pats; i < psPtr->numPats; i++,patPtr++, patPtr2++) { if (patPtr->detail != patPtr2->detail) { if (patPtr->detail == 0) { goto nextSequence; } else { goto newBest; } } if (patPtr->needMods != patPtr2->needMods) { if ((patPtr->needMods & patPtr2->needMods) == patPtr->needMods) { goto nextSequence; } else { goto newBest; } } if (patPtr->hateMods != patPtr2->hateMods) { if ((patPtr->hateMods & patPtr2->hateMods) == patPtr2->hateMods) { goto newBest; } else { goto nextSequence; } } } goto nextSequence; /* Tie goes to newest pattern. */ } newBest: bestPtr = psPtr; nextSequence: continue; } return bestPtr; } /* *-------------------------------------------------------------- * * ExpandPercents -- * * Given a command and an event, produce a new command * by replacing % constructs in the original command * with information from the X event. * * Results: * The return result is a pointer to the new %-substituted * command. If the command fits in the space at after, then * the return value is after. If the command is too large * to fit at after, then the return value is a pointer to * a malloc-ed buffer holding the command; in this case it * is the caller's responsibility to free up the buffer when * finished with it. * * Side effects: * None. * *-------------------------------------------------------------- */ static char * ExpandPercents(before, eventPtr, keySym, after, afterSize) register char *before; /* Command containing percent * expressions to be replaced. */ register XEvent *eventPtr; /* X event containing information * to be used in % replacements. */ KeySym keySym; /* KeySym: only relevant for * KeyPress and KeyRelease events). */ char *after; /* Place to generate new expanded * command. Must contain at least * "afterSize" bytes of space. */ int afterSize; /* Number of bytes of space available at * after. */ { register char *buffer; /* Pointer to buffer currently being used * as destination. */ register char *dst; /* Pointer to next place to store character * in substituted string. */ int spaceLeft; /* Indicates how many more non-null bytes * may be stored at *dst before space * runs out. */ int spaceNeeded, cvtFlags; /* Used to substitute string as proper Tcl * list element. */ int number, flags; #define NUM_SIZE 40 register char *string; char numStorage[NUM_SIZE+1]; if (eventPtr->type < LASTEvent) { flags = flagArray[eventPtr->type]; } else { flags = 0; } dst = buffer = after; spaceLeft = afterSize - 1; while (*before != 0) { if (*before != '%') { /* * Expand the destination string if necessary. */ if (spaceLeft <= 0) { char *newSpace; newSpace = (char *) ckalloc((unsigned) (2*afterSize)); memcpy((VOID *) newSpace, (VOID *) buffer, afterSize); afterSize *= 2; dst = newSpace + (dst - buffer); if (buffer != after) { ckfree(buffer); } buffer = newSpace; spaceLeft = afterSize - (dst-buffer) - 1; } *dst = *before; dst++; before++; spaceLeft--; continue; } number = 0; string = "??"; switch (before[1]) { case '#': number = eventPtr->xany.serial; goto doNumber; case 'a': number = (int) eventPtr->xconfigure.above; goto doNumber; case 'b': number = eventPtr->xbutton.button; goto doNumber; case 'c': if (flags & EXPOSE) { number = eventPtr->xexpose.count; } else if (flags & MAPPING) { number = eventPtr->xmapping.count; } goto doNumber; case 'd': if (flags & (CROSSING|FOCUS)) { switch (eventPtr->xcrossing.detail) { case NotifyAncestor: string = "NotifyAncestor"; break; case NotifyVirtual: string = "NotifyVirtual"; break; case NotifyInferior: string = "NotifyInferior"; break; case NotifyNonlinear: string = "NotifyNonlinear"; break; case NotifyNonlinearVirtual: string = "NotifyNonlinearVirtual"; break; case NotifyPointer: string = "NotifyPointer"; break; case NotifyPointerRoot: string = "NotifyPointerRoot"; break; case NotifyDetailNone: string = "NotifyDetailNone"; break; } } else if (flags & CONFIG_REQ) { switch (eventPtr->xconfigurerequest.detail) { case Above: string = "Above"; break; case Below: string = "Below"; break; case TopIf: string = "TopIf"; break; case BottomIf: string = "BottomIf"; break; case Opposite: string = "Opposite"; break; } } goto doString; case 'f': number = eventPtr->xcrossing.focus; goto doNumber; case 'h': if (flags & EXPOSE) { number = eventPtr->xexpose.height; } else if (flags & (CONFIG|CONFIG_REQ)) { number = eventPtr->xconfigure.height; } else if (flags & RESIZE_REQ) { number = eventPtr->xresizerequest.height; } goto doNumber; case 'k': number = eventPtr->xkey.keycode; goto doNumber; case 'm': if (flags & CROSSING) { number = eventPtr->xcrossing.mode; } else if (flags & FOCUS) { number = eventPtr->xfocus.mode; } switch (number) { case NotifyNormal: string = "NotifyNormal"; break; case NotifyGrab: string = "NotifyGrab"; break; case NotifyUngrab: string = "NotifyUngrab"; break; case NotifyWhileGrabbed: string = "NotifyWhileGrabbed"; break; } goto doString; case 'o': if (flags & CREATE) { number = eventPtr->xcreatewindow.override_redirect; } else if (flags & MAP) { number = eventPtr->xmap.override_redirect; } else if (flags & REPARENT) { number = eventPtr->xreparent.override_redirect; } else if (flags & CONFIG) { number = eventPtr->xconfigure.override_redirect; } goto doNumber; case 'p': switch (eventPtr->xcirculate.place) { case PlaceOnTop: string = "PlaceOnTop"; break; case PlaceOnBottom: string = "PlaceOnBottom"; break; } goto doString; case 's': if (flags & KEY_BUTTON_MOTION) { number = eventPtr->xkey.state; } else if (flags & CROSSING) { number = eventPtr->xcrossing.state; } else if (flags & VISIBILITY) { switch (eventPtr->xvisibility.state) { case VisibilityUnobscured: string = "VisibilityUnobscured"; break; case VisibilityPartiallyObscured: string = "VisibilityPartiallyObscured"; break; case VisibilityFullyObscured: string = "VisibilityFullyObscured"; break; } goto doString; } goto doNumber; case 't': if (flags & (KEY_BUTTON_MOTION|PROP|SEL_CLEAR)) { number = (int) eventPtr->xkey.time; } else if (flags & SEL_REQ) { number = (int) eventPtr->xselectionrequest.time; } else if (flags & SEL_NOTIFY) { number = (int) eventPtr->xselection.time; } goto doNumber; case 'v': number = eventPtr->xconfigurerequest.value_mask; goto doNumber; case 'w': if (flags & EXPOSE) { number = eventPtr->xexpose.width; } else if (flags & (CONFIG|CONFIG_REQ)) { number = eventPtr->xconfigure.width; } else if (flags & RESIZE_REQ) { number = eventPtr->xresizerequest.width; } goto doNumber; case 'x': if (flags & KEY_BUTTON_MOTION) { number = eventPtr->xkey.x; } else if (flags & EXPOSE) { number = eventPtr->xexpose.x; } else if (flags & (CREATE|CONFIG|GRAVITY|CONFIG_REQ)) { number = eventPtr->xcreatewindow.x; } else if (flags & REPARENT) { number = eventPtr->xreparent.x; } else if (flags & CROSSING) { number = eventPtr->xcrossing.x; } goto doNumber; case 'y': if (flags & KEY_BUTTON_MOTION) { number = eventPtr->xkey.y; } else if (flags & EXPOSE) { number = eventPtr->xexpose.y; } else if (flags & (CREATE|CONFIG|GRAVITY|CONFIG_REQ)) { number = eventPtr->xcreatewindow.y; } else if (flags & REPARENT) { number = eventPtr->xreparent.y; } else if (flags & CROSSING) { number = eventPtr->xcrossing.y; } goto doNumber; case 'A': if ((eventPtr->type == KeyPress) || (eventPtr->type == KeyRelease)) { int numChars; numChars = XLookupString(&eventPtr->xkey, numStorage, NUM_SIZE, (KeySym *) NULL, (XComposeStatus *) NULL); numStorage[numChars] = '\0'; string = numStorage; } goto doString; case 'B': number = eventPtr->xcreatewindow.border_width; goto doNumber; case 'D': number = (int) eventPtr->xany.display; goto doNumber; case 'E': number = (int) eventPtr->xany.send_event; goto doNumber; case 'K': if ((eventPtr->type == KeyPress) || (eventPtr->type == KeyRelease)) { register KeySymInfo *kPtr; for (kPtr = keyArray; kPtr->name != NULL; kPtr++) { if (kPtr->value == keySym) { string = kPtr->name; break; } } } goto doString; case 'N': number = (int) keySym; goto doNumber; case 'R': number = (int) eventPtr->xkey.root; goto doNumber; case 'S': number = (int) eventPtr->xkey.subwindow; goto doNumber; case 'T': number = eventPtr->type; goto doNumber; case 'W': { TkWindow *winPtr; if (XFindContext(eventPtr->xany.display, eventPtr->xany.window, tkWindowContext, (void *) &winPtr) == 0) { string = winPtr->pathName; } else { string = "??"; } goto doString; } case 'X': number = eventPtr->xkey.x_root; goto doNumber; case 'Y': number = eventPtr->xkey.y_root; goto doNumber; default: numStorage[0] = before[1]; numStorage[1] = '\0'; string = numStorage; goto doString; } doNumber: sprintf(numStorage, "%d", number); string = numStorage; doString: spaceNeeded = Tcl_ScanElement(string, &cvtFlags); if (spaceNeeded >= spaceLeft) { char *newSpace; newSpace = (char *) ckalloc((unsigned) (afterSize + spaceNeeded + 50)); memcpy((VOID *) newSpace, (VOID *) buffer, afterSize); afterSize += spaceNeeded + 50; dst = newSpace + (dst - buffer); if (buffer != after) { ckfree(buffer); } buffer = newSpace; spaceLeft = afterSize - (dst-buffer) - 1; } spaceNeeded = Tcl_ConvertElement(string, dst, cvtFlags | TCL_DONT_USE_BRACES); dst += spaceNeeded; spaceLeft -= spaceNeeded; before += 2; } *dst = '\0'; return buffer; } /* *---------------------------------------------------------------------- * * TkBindError -- * * This procedure is invoked to handle errors that occur in Tcl * commands that are invoked in "background" (e.g. from event or * timer bindings). * * Results: * None. * * Side effects: * The command "tkerror" is invoked to process the error, passing * it the error message. If that fails, then an error message * is output on stderr. * *---------------------------------------------------------------------- */ void TkBindError(interp) Tcl_Interp *interp; /* Interpreter in which an error has * occurred. */ { char *argv[2]; char *command; char *error; char *errorInfo, *tmp; int result; error = (char *) ckalloc((unsigned) (strlen(interp->result) + 1)); strcpy(error, interp->result); tmp = Tcl_GetVar(interp, "errorInfo", TCL_GLOBAL_ONLY); if (tmp == NULL) { errorInfo = error; } else { errorInfo = (char *) ckalloc((unsigned) (strlen(tmp) + 1)); strcpy(errorInfo, tmp); } argv[0] = "tkerror"; argv[1] = error; command = Tcl_Merge(2, argv); result = Tcl_GlobalEval(interp, command); if (result != TCL_OK) { if (strcmp(interp->result, "\"tkerror\" is an invalid command name or ambiguous abbreviation") == 0) { fprintf(stderr, "%s\n", errorInfo); } else { fprintf(stderr, "tkerror failed to handle background error.\n"); fprintf(stderr, " Original error: %s\n", error); fprintf(stderr, " Error in tkerror: %s\n", interp->result); } } Tcl_ResetResult(interp); ckfree(command); ckfree(error); if (errorInfo != error) { ckfree(errorInfo); } } micropolis-activity/src/tk/tkframe.c0000664000076400007640000003602210724145723020040 0ustar simcitysimcity/* * tkFrame.c -- * * This module implements "frame" widgets for the Tk * toolkit. Frames are windows with a background color * and possibly a 3-D effect, but no other attributes. * * Copyright 1990 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkFrame.c,v 1.27 92/08/21 16:17:24 ouster Exp $ SPRITE (Berkeley)"; #endif #include "default.h" #include "tkconfig.h" #include "tk.h" /* * A data structure of the following type is kept for each * frame that currently exists for this process: */ typedef struct { Tk_Window tkwin; /* Window that embodies the frame. NULL * means that the window has been destroyed * but the data structures haven't yet been * cleaned up.*/ Tcl_Interp *interp; /* Interpreter associated with * widget. Used to delete widget * command. */ Tk_Uid screenName; /* If this window isn't a toplevel window * then this is NULL; otherwise it gives * the name of the screen on which window * is displayed. */ Tk_3DBorder border; /* Structure used to draw 3-D border and * background. */ int borderWidth; /* Width of 3-D border (if any). */ int relief; /* 3-d effect: TK_RELIEF_RAISED etc. */ int width; /* Width to request for window. <= 0 means * don't request any size. */ int height; /* Height to request for window. <= 0 means * don't request any size. */ char *geometry; /* Geometry that user requested. NULL * means use width and height instead. * Malloc'ed. */ Cursor cursor; /* Current cursor for window, or None. */ int flags; /* Various flags; see below for * definitions. */ } Frame; /* * Flag bits for frames: * * REDRAW_PENDING: Non-zero means a DoWhenIdle handler * has already been queued to redraw * this window. * CLEAR_NEEDED; Need to clear the window when redrawing. */ #define REDRAW_PENDING 1 #define CLEAR_NEEDED 2 static Tk_ConfigSpec configSpecs[] = { {TK_CONFIG_BORDER, "-background", "background", "Background", DEF_FRAME_BG_COLOR, Tk_Offset(Frame, border), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-background", "background", "Background", DEF_FRAME_BG_MONO, Tk_Offset(Frame, border), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_SYNONYM, "-bd", "borderWidth", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_SYNONYM, "-bg", "background", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", DEF_FRAME_BORDER_WIDTH, Tk_Offset(Frame, borderWidth), 0}, {TK_CONFIG_ACTIVE_CURSOR, "-cursor", "cursor", "Cursor", DEF_FRAME_CURSOR, Tk_Offset(Frame, cursor), TK_CONFIG_NULL_OK}, {TK_CONFIG_STRING, "-geometry", "geometry", "Geometry", DEF_FRAME_GEOMETRY, Tk_Offset(Frame, geometry), TK_CONFIG_NULL_OK}, {TK_CONFIG_PIXELS, "-height", "height", "Height", DEF_FRAME_HEIGHT, Tk_Offset(Frame, height), 0}, {TK_CONFIG_RELIEF, "-relief", "relief", "Relief", DEF_FRAME_RELIEF, Tk_Offset(Frame, relief), 0}, {TK_CONFIG_PIXELS, "-width", "width", "Width", DEF_FRAME_WIDTH, Tk_Offset(Frame, width), 0}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; /* * Forward declarations for procedures defined later in this file: */ static int ConfigureFrame _ANSI_ARGS_((Tcl_Interp *interp, Frame *framePtr, int argc, char **argv, int flags)); static void DestroyFrame _ANSI_ARGS_((ClientData clientData)); static void DisplayFrame _ANSI_ARGS_((ClientData clientData)); static void FrameEventProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); static int FrameWidgetCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); static void MapFrame _ANSI_ARGS_((ClientData clientData)); /* *-------------------------------------------------------------- * * Tk_FrameCmd -- * * This procedure is invoked to process the "frame" and * "toplevel" Tcl commands. See the user documentation for * details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ int Tk_FrameCmd(clientData, interp, argc, argv) ClientData clientData; /* Main window associated with * interpreter. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { Tk_Window tkwin = (Tk_Window) clientData; Tk_Window new; register Frame *framePtr; Tk_Uid screenUid; char *className, *screen; int src, dst; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " pathName ?options?\"", (char *) NULL); return TCL_ERROR; } /* * The code below is a special workaround that extracts a few key * options from the argument list now, rather than letting * ConfigureFrame do it. This is necessary because we have * to know the window's screen (if it's top-level) and its * class before creating the window. */ screen = NULL; className = (argv[0][0] == 't') ? "Toplevel" : "Frame"; for (src = 2, dst = 2; src < argc; src += 2) { char c; c = argv[src][1]; if ((c == 'c') && (strncmp(argv[src], "-class", strlen(argv[src])) == 0)) { className = argv[src+1]; } else if ((argv[0][0] == 't') && (c == 's') && (strncmp(argv[src], "-screen", strlen(argv[src])) == 0)) { screen = argv[src+1]; } else { argv[dst] = argv[src]; argv[dst+1] = argv[src+1]; dst += 2; } } argc -= src-dst; /* * Provide a default screen for top-level windows (same as screen * of parent window). */ if ((argv[0][0] == 't') && (screen == NULL)) { screen = ""; } if (screen != NULL) { screenUid = Tk_GetUid(screen); } else { screenUid = NULL; } /* * Create the window. */ new = Tk_CreateWindowFromPath(interp, tkwin, argv[1], screenUid); if (new == NULL) { return TCL_ERROR; } Tk_SetClass(new, className); framePtr = (Frame *) ckalloc(sizeof(Frame)); framePtr->tkwin = new; framePtr->interp = interp; framePtr->screenName = screenUid; framePtr->border = NULL; framePtr->geometry = NULL; framePtr->cursor = None; framePtr->flags = 0; Tk_CreateEventHandler(framePtr->tkwin, ExposureMask|StructureNotifyMask, FrameEventProc, (ClientData) framePtr); Tcl_CreateCommand(interp, Tk_PathName(framePtr->tkwin), FrameWidgetCmd, (ClientData) framePtr, (void (*)()) NULL); if (ConfigureFrame(interp, framePtr, argc-2, argv+2, 0) != TCL_OK) { Tk_DestroyWindow(framePtr->tkwin); return TCL_ERROR; } if (screenUid != NULL) { Tk_DoWhenIdle(MapFrame, (ClientData) framePtr); } interp->result = Tk_PathName(framePtr->tkwin); return TCL_OK; } /* *-------------------------------------------------------------- * * FrameWidgetCmd -- * * This procedure is invoked to process the Tcl command * that corresponds to a frame widget. See the user * documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ static int FrameWidgetCmd(clientData, interp, argc, argv) ClientData clientData; /* Information about frame widget. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { register Frame *framePtr = (Frame *) clientData; int result = TCL_OK; int length; char c; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " option ?arg arg ...?\"", (char *) NULL); return TCL_ERROR; } Tk_Preserve((ClientData) framePtr); c = argv[1][0]; length = strlen(argv[1]); if ((c == 'c') && (strncmp(argv[1], "configure", length) == 0)) { if (argc == 2) { result = Tk_ConfigureInfo(interp, framePtr->tkwin, configSpecs, (char *) framePtr, (char *) NULL, 0); } else if (argc == 3) { result = Tk_ConfigureInfo(interp, framePtr->tkwin, configSpecs, (char *) framePtr, argv[2], 0); } else { result = ConfigureFrame(interp, framePtr, argc-2, argv+2, TK_CONFIG_ARGV_ONLY); } } else { Tcl_AppendResult(interp, "bad option \"", argv[1], "\": must be configure", (char *) NULL); result = TCL_ERROR; } Tk_Release((ClientData) framePtr); return result; } /* *---------------------------------------------------------------------- * * DestroyFrame -- * * This procedure is invoked by Tk_EventuallyFree or Tk_Release * to clean up the internal structure of a frame at a safe time * (when no-one is using it anymore). * * Results: * None. * * Side effects: * Everything associated with the frame is freed up. * *---------------------------------------------------------------------- */ static void DestroyFrame(clientData) ClientData clientData; /* Info about frame widget. */ { register Frame *framePtr = (Frame *) clientData; if (framePtr->border != NULL) { Tk_Free3DBorder(framePtr->border); } if (framePtr->geometry != NULL) { ckfree(framePtr->geometry); } if (framePtr->cursor != None) { Tk_FreeCursor(framePtr->cursor); } ckfree((char *) framePtr); } /* *---------------------------------------------------------------------- * * ConfigureFrame -- * * This procedure is called to process an argv/argc list, plus * the Tk option database, in order to configure (or * reconfigure) a frame widget. * * Results: * The return value is a standard Tcl result. If TCL_ERROR is * returned, then interp->result contains an error message. * * Side effects: * Configuration information, such as text string, colors, font, * etc. get set for framePtr; old resources get freed, if there * were any. * *---------------------------------------------------------------------- */ static int ConfigureFrame(interp, framePtr, argc, argv, flags) Tcl_Interp *interp; /* Used for error reporting. */ register Frame *framePtr; /* Information about widget; may or may * not already have values for some fields. */ int argc; /* Number of valid entries in argv. */ char **argv; /* Arguments. */ int flags; /* Flags to pass to Tk_ConfigureWidget. */ { if (Tk_ConfigureWidget(interp, framePtr->tkwin, configSpecs, argc, argv, (char *) framePtr, flags) != TCL_OK) { return TCL_ERROR; } Tk_SetBackgroundFromBorder(framePtr->tkwin, framePtr->border); Tk_SetInternalBorder(framePtr->tkwin, framePtr->borderWidth); if (framePtr->geometry != NULL) { int height, width; if (sscanf(framePtr->geometry, "%dx%d", &width, &height) != 2) { Tcl_AppendResult(interp, "bad geometry \"", framePtr->geometry, "\": expected widthxheight", (char *) NULL); return TCL_ERROR; } Tk_GeometryRequest(framePtr->tkwin, width, height); } else if ((framePtr->width > 0) && (framePtr->height > 0)) { Tk_GeometryRequest(framePtr->tkwin, framePtr->width, framePtr->height); } if (Tk_IsMapped(framePtr->tkwin) && !(framePtr->flags & REDRAW_PENDING)) { Tk_DoWhenIdle(DisplayFrame, (ClientData) framePtr); framePtr->flags |= REDRAW_PENDING|CLEAR_NEEDED; } return TCL_OK; } /* *---------------------------------------------------------------------- * * DisplayFrame -- * * This procedure is invoked to display a frame widget. * * Results: * None. * * Side effects: * Commands are output to X to display the frame in its * current mode. * *---------------------------------------------------------------------- */ static void DisplayFrame(clientData) ClientData clientData; /* Information about widget. */ { register Frame *framePtr = (Frame *) clientData; register Tk_Window tkwin = framePtr->tkwin; framePtr->flags &= ~REDRAW_PENDING; if ((framePtr->tkwin == NULL) || !Tk_IsMapped(tkwin)) { return; } if (framePtr->flags & CLEAR_NEEDED) { XClearWindow(Tk_Display(tkwin), Tk_WindowId(tkwin)); framePtr->flags &= ~CLEAR_NEEDED; } if ((framePtr->border != NULL) && (framePtr->relief != TK_RELIEF_FLAT)) { Tk_Draw3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), framePtr->border, 0, 0, Tk_Width(tkwin), Tk_Height(tkwin), framePtr->borderWidth, framePtr->relief); } } /* *-------------------------------------------------------------- * * FrameEventProc -- * * This procedure is invoked by the Tk dispatcher on * structure changes to a frame. For frames with 3D * borders, this procedure is also invoked for exposures. * * Results: * None. * * Side effects: * When the window gets deleted, internal structures get * cleaned up. When it gets exposed, it is redisplayed. * *-------------------------------------------------------------- */ static void FrameEventProc(clientData, eventPtr) ClientData clientData; /* Information about window. */ register XEvent *eventPtr; /* Information about event. */ { register Frame *framePtr = (Frame *) clientData; if ((eventPtr->type == Expose) && (eventPtr->xexpose.count == 0)) { if ((framePtr->relief != TK_RELIEF_FLAT) && (framePtr->tkwin != NULL) && !(framePtr->flags & REDRAW_PENDING)) { Tk_DoWhenIdle(DisplayFrame, (ClientData) framePtr); framePtr->flags |= REDRAW_PENDING; } } else if (eventPtr->type == DestroyNotify) { Tcl_DeleteCommand(framePtr->interp, Tk_PathName(framePtr->tkwin)); framePtr->tkwin = NULL; if (framePtr->flags & REDRAW_PENDING) { Tk_CancelIdleCall(DisplayFrame, (ClientData) framePtr); } Tk_CancelIdleCall(MapFrame, (ClientData) framePtr); Tk_EventuallyFree((ClientData) framePtr, DestroyFrame); } } /* *---------------------------------------------------------------------- * * MapFrame -- * * This procedure is invoked as a when-idle handler to map a * newly-created top-level frame. * * Results: * None. * * Side effects: * The frame given by the clientData argument is mapped. * *---------------------------------------------------------------------- */ static void MapFrame(clientData) ClientData clientData; /* Pointer to frame structure. */ { Frame *framePtr = (Frame *) clientData; /* * Wait for all other background events to be processed before * mapping window. This ensures that the window's correct geometry * will have been determined before it is first mapped, so that the * window manager doesn't get a false idea of its desired geometry. */ do { if (Tk_DoOneEvent(TK_IDLE_EVENTS) == 0) { break; } /* * After each event, make sure that the window still exists, * and quit if the window has been destroyed. */ if (framePtr->tkwin == NULL) { return; } } while (1); Tk_MapWindow(framePtr->tkwin); } micropolis-activity/src/tk/tktxdisp.c0000664000076400007640000017422210724145723020266 0ustar simcitysimcity/* * tkTextDisp.c -- * * This module provides facilities to display text widgets. It is * the only place where information is kept about the screen layout * of text widgets. * * Copyright 1992 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkTextDisp.c,v 1.20 92/08/24 09:24:18 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tkconfig.h" #include "tkint.h" #include "tktext.h" #include /* * The following structure describes how to display a range of characters. * The information is generated by scanning all of the tags associated * with the characters and combining that with default information for * the overall widget. These structures form the hash keys for * dInfoPtr->styleTable. */ typedef struct StyleValues { Tk_3DBorder border; /* Used for drawing background under text. * NULL means use widget background. */ int borderWidth; /* Width of 3-D border for background. */ int relief; /* 3-D relief for background. */ Pixmap bgStipple; /* Stipple bitmap for background. None * means draw solid. */ XColor *fgColor; /* Foreground color for text. */ XFontStruct *fontPtr; /* Font for displaying text. */ Pixmap fgStipple; /* Stipple bitmap for text and other * foreground stuff. None means draw * solid.*/ int underline; /* Non-zero means draw underline underneath * text. */ } StyleValues; /* * The following structure extends the StyleValues structure above with * graphics contexts used to actually draw the characters. The entries * in dInfoPtr->styleTable point to structures of this type. */ typedef struct Style { int refCount; /* Number of times this structure is * referenced in Chunks. */ GC bgGC; /* Graphics context for background. None * unless background is stippled. */ GC fgGC; /* Graphics context for foreground. */ StyleValues *sValuePtr; /* Raw information from which GCs were * derived. */ Tcl_HashEntry *hPtr; /* Pointer to entry in styleTable. Used * to delete entry. */ } Style; /* * The following structure describes a range of characters, all on the * same line of the display (which also means the same line of the text * widget) and all having the same display attributes. */ typedef struct Chunk { char *text; /* Characters to display. */ int numChars; /* Number of characters to display. */ Style *stylePtr; /* Style information used to display * characters. */ int x; /* X-coordinate of pixel at which to display * the characters. */ struct Chunk *nextPtr; /* Next in list of all chunks displayed on the * same display line. */ } Chunk; /* * The following structure describes one line of the display, which may * be either part or all of one line of the text. */ typedef struct DLine { TkTextLine *linePtr; /* Pointer to structure in B-tree that * contains characters displayed in this * line. */ int y; /* Y-position at which line is supposed to * be drawn (topmost pixel of rectangular * area occupied by line). */ int oldY; /* Y-position at which line currently * appears on display. -1 means line isn't * currently visible on display. This is * used to move lines by scrolling rather * than re-drawing. */ int height; /* Height of line, in pixels. */ int baseline; /* Offset of text baseline from y. */ Chunk *chunkPtr; /* Pointer to first chunk in list of all * of those that are displayed on this * line of the screen. */ struct DLine *nextPtr; /* Next in list of all display lines for * this window. The list is sorted in * order from top to bottom. Note: the * next DLine doesn't always correspond * to the next line of text: (a) can have * multiple DLines for one text line, and * (b) can have gaps where DLine's have been * deleted because they're out of date. */ } DLine; /* * Overall display information for a text widget: */ typedef struct DInfo { Tcl_HashTable styleTable; /* Hash table that maps from StyleValues to * Styles for this widget. */ DLine *dLinePtr; /* First in list of all display lines for * this widget, in order from top to bottom. */ GC copyGC; /* Graphics context for copying from off- * screen pixmaps onto screen. */ GC scrollGC; /* Graphics context for copying from one place * in the window to another (scrolling): * differs from copyGC in that we need to get * GraphicsExpose events. */ int x; /* First x-coordinate that may be used for * actually displaying line information. * Leaves space for border, etc. */ int y; /* First y-coordinate that may be used for * actually displaying line information. * Leaves space for border, etc. */ int maxX; /* First x-coordinate to right of available * space for displaying lines. */ int maxY; /* First y-coordinate to bottom of available * space for displaying lines. */ int topOfEof; /* Top-most pixel (lowest y-value) that has * been drawn in the appropriate fashion for * the portion of the window after the last * line of the text. This field is used to * figure out when to redraw part or all of * the eof field. */ int flags; /* Various flag values: see below for * definitions. */ } DInfo; /* * Flag values for DInfo structures: * * DINFO_OUT_OF_DATE: Non-zero means that the DLine structures * for this window are partially or completely * out of date and need to be recomputed. * REDRAW_PENDING: Means that a when-idle handler has been * scheduled to update the display. * REDRAW_BORDERS: Means window border or pad area has * potentially been damaged and must be redrawn. * REPICK_NEEDED: 1 means that the widget has been modified * in a way that could change the current * character (a different character might be * under the mouse cursor now). Need to * recompute the current character before * the next redisplay. */ #define DINFO_OUT_OF_DATE 1 #define REDRAW_PENDING 2 #define REDRAW_BORDERS 4 #define REPICK_NEEDED 8 /* * Structures of the type defined below are used to keep track of * tags while scanning through the text to create DLine structures. */ typedef struct TagInfo { int numTags; /* Number of tags currently active (the first * entries at *tagPtr). */ int arraySize; /* Total number of entries at *tagPtr. We * over-allocate the array to avoid continual * reallocations. */ TkTextTag **tagPtrs; /* Pointer to array of pointers to active tags. * Array has space for arraySize tags, and * the first numTags are slots identify the * active tags. Malloc'ed (but may be NULL). */ TkTextSearch search; /* Used to scan for tag transitions. Current * state identifies next tag transition. */ } TagInfo; /* * The following counters keep statistics about redisplay that can be * checked to see how clever this code is at reducing redisplays. */ static int numRedisplays; /* Number of calls to DisplayText. */ static int linesRedrawn; /* Number of calls to DisplayDLine. */ static int numCopies; /* Number of calls to XCopyArea to copy part * of the screen. */ static int damagedCopies; /* Number of times that XCopyAreas didn't * completely work because some of the source * information was damaged. */ static int TextUpdateTime = 100; // Added by Don. /* * Forward declarations for procedures defined later in this file: */ static void ComputeStyleValues _ANSI_ARGS_((TkText *textPtr, int numTags, TkTextTag **tagPtr, StyleValues *sValuePtr)); static void DisplayDLine _ANSI_ARGS_((TkText *textPtr, DLine *dlPtr, Pixmap pixmap)); static void DisplayText _ANSI_ARGS_((ClientData clientData)); static DLine * FindDLine _ANSI_ARGS_((DLine *dlPtr, int line)); static void FreeDLines _ANSI_ARGS_((TkText *textPtr, DLine *firstPtr, DLine *lastPtr, int unlink)); static void FreeStyle _ANSI_ARGS_((Style *stylePtr)); static Style * GetStyle _ANSI_ARGS_((TkText *textPtr, StyleValues *sValuePtr)); static DLine * LayoutLine _ANSI_ARGS_((TkText *textPtr, int line, TkTextLine *linePtr, TagInfo *tInfoPtr)); static void ToggleTag _ANSI_ARGS_((TagInfo *tInfoPtr, TkTextTag *tagPtr)); static void UpdateDisplayInfo _ANSI_ARGS_((TkText *textPtr)); /* *---------------------------------------------------------------------- * * TkTextCreateDInfo -- * * This procedure is called when a new text widget is created. * Its job is to set up display-related information for the widget. * * Results: * None. * * Side effects: * A DInfo data structure is allocated and initialized and attached * to textPtr. * *---------------------------------------------------------------------- */ void TkTextCreateDInfo(textPtr) TkText *textPtr; /* Overall information for text widget. */ { register DInfo *dInfoPtr; XGCValues gcValues; dInfoPtr = (DInfo *) ckalloc(sizeof(DInfo)); Tcl_InitHashTable(&dInfoPtr->styleTable, sizeof(StyleValues)/sizeof(int)); dInfoPtr->dLinePtr = NULL; gcValues.graphics_exposures = False; dInfoPtr->copyGC = Tk_GetGC(textPtr->tkwin, GCGraphicsExposures, &gcValues); gcValues.graphics_exposures = True; dInfoPtr->scrollGC = Tk_GetGC(textPtr->tkwin, GCGraphicsExposures, &gcValues); dInfoPtr->topOfEof = 0; dInfoPtr->flags = DINFO_OUT_OF_DATE; textPtr->dInfoPtr = dInfoPtr; } /* *---------------------------------------------------------------------- * * TkTextFreeDInfo -- * * This procedure is called to free up all of the private display * information kept by this file for a text widget. * * Results: * None. * * Side effects: * Lots of resources get freed. * *---------------------------------------------------------------------- */ void TkTextFreeDInfo(textPtr) TkText *textPtr; /* Overall information for text widget. */ { register DInfo *dInfoPtr = textPtr->dInfoPtr; /* * Be careful to free up styleTable *after* freeing up all the * DLines, so that the hash table is still intact to free up the * style-related information from the lines. Once the lines are * all free then styleTable will be empty. */ FreeDLines(textPtr, dInfoPtr->dLinePtr, (DLine *) NULL, 1); Tcl_DeleteHashTable(&dInfoPtr->styleTable); Tk_FreeGC(dInfoPtr->copyGC); Tk_FreeGC(dInfoPtr->scrollGC); if (dInfoPtr->flags & REDRAW_PENDING) { // Tk_CancelIdleCall(DisplayText, (ClientData) textPtr); assert(textPtr->updateTimerToken != NULL); if (textPtr->updateTimerToken != NULL) { Tk_DeleteTimerHandler(textPtr->updateTimerToken); textPtr->updateTimerToken = NULL; } } ckfree((char *) dInfoPtr); } /* *---------------------------------------------------------------------- * * GetStyle -- * * This procedure creates graphics contexts needed to display * text in a particular style, determined by "sValuePtr". It * attempts to share style information as much as possible. * * Results: * The return value is a pointer to a Style structure that * corresponds to *sValuePtr. * * Side effects: * A new entry may be created in the style table for the widget. * *---------------------------------------------------------------------- */ static Style * GetStyle(textPtr, sValuePtr) TkText *textPtr; /* Overall information about text widget. */ StyleValues *sValuePtr; /* Information about desired style. */ { Style *stylePtr; Tcl_HashEntry *hPtr; int new; XGCValues gcValues; unsigned long mask; /* * Use an existing style if there's one around that matches. */ hPtr = Tcl_CreateHashEntry(&textPtr->dInfoPtr->styleTable, (char *) sValuePtr, &new); if (!new) { stylePtr = (Style *) Tcl_GetHashValue(hPtr); stylePtr->refCount++; return stylePtr; } /* * No existing style matched. Make a new one. */ stylePtr = (Style *) ckalloc(sizeof(Style)); stylePtr->refCount = 1; if ((sValuePtr->border != NULL) && (sValuePtr->bgStipple != None)) { gcValues.foreground = Tk_3DBorderColor(sValuePtr->border)->pixel; gcValues.stipple = sValuePtr->bgStipple; gcValues.fill_style = FillStippled; stylePtr->bgGC = Tk_GetGC(textPtr->tkwin, GCForeground|GCStipple|GCFillStyle, &gcValues); } else { stylePtr->bgGC = None; } mask = GCForeground|GCFont; gcValues.foreground = sValuePtr->fgColor->pixel; gcValues.font = sValuePtr->fontPtr->fid; if (sValuePtr->fgStipple != None) { gcValues.stipple = sValuePtr->fgStipple; gcValues.fill_style = FillStippled; mask |= GCStipple|GCFillStyle; } stylePtr->fgGC = Tk_GetGC(textPtr->tkwin, mask, &gcValues); stylePtr->sValuePtr = (StyleValues *) Tcl_GetHashKey(&textPtr->dInfoPtr->styleTable, hPtr); stylePtr->hPtr = hPtr; Tcl_SetHashValue(hPtr, stylePtr); return stylePtr; } /* *---------------------------------------------------------------------- * * FreeStyle -- * * This procedure is called when a Style structure is no longer * needed. It decrements the reference count and frees up the * space for the style structure if the reference count is 0. * * Results: * None. * * Side effects: * The storage and other resources associated with the style * are freed up if no-one's still using it. * *---------------------------------------------------------------------- */ static void FreeStyle(stylePtr) register Style *stylePtr; /* Information about style to be freed. */ { stylePtr->refCount--; if (stylePtr->refCount == 0) { if (stylePtr->bgGC != None) { Tk_FreeGC(stylePtr->bgGC); } Tk_FreeGC(stylePtr->fgGC); Tcl_DeleteHashEntry(stylePtr->hPtr); ckfree((char *) stylePtr); } } /* *---------------------------------------------------------------------- * * ComputeStyleValues -- * * Given a list of tags that apply at a particular point, compute * the StyleValues that correspond to that set of tags. * * Results: * All of the fields of *sValuePtr get filled in to hold the * appropriate display information for the given set of tags * in the given widget. * * Side effects: * None. * *---------------------------------------------------------------------- */ static void ComputeStyleValues(textPtr, numTags, tagPtrPtr, sValuePtr) TkText *textPtr; /* Overall information for widget. */ int numTags; /* Number of tags at *tagPtr. */ register TkTextTag **tagPtrPtr; /* Pointer to array of tag pointers. */ register StyleValues *sValuePtr; /* Pointer to structure to fill in. */ { register TkTextTag *tagPtr; /* * The variables below keep track of the highest-priority specification * that has occurred for each of the various fields of the StyleValues. */ int borderPrio, bgStipplePrio; int fgPrio, fontPrio, fgStipplePrio; borderPrio = bgStipplePrio = -1; fgPrio = fontPrio = fgStipplePrio = -1; memset((VOID *) sValuePtr, 0, sizeof(StyleValues)); sValuePtr->fgColor = textPtr->fgColor; sValuePtr->fontPtr = textPtr->fontPtr; /* * Scan through all of the tags, updating the StyleValues to hold * the highest-priority information. */ for ( ; numTags > 0; tagPtrPtr++, numTags--) { tagPtr = *tagPtrPtr; if ((tagPtr->border != NULL) && (tagPtr->priority > borderPrio)) { sValuePtr->border = tagPtr->border; sValuePtr->borderWidth = tagPtr->borderWidth; sValuePtr->relief = tagPtr->relief; borderPrio = tagPtr->priority; } if ((tagPtr->bgStipple != None) && (tagPtr->priority > bgStipplePrio)) { sValuePtr->bgStipple = tagPtr->bgStipple; bgStipplePrio = tagPtr->priority; } if ((tagPtr->fgColor != None) && (tagPtr->priority > fgPrio)) { sValuePtr->fgColor = tagPtr->fgColor; fgPrio = tagPtr->priority; } if ((tagPtr->fontPtr != None) && (tagPtr->priority > fontPrio)) { sValuePtr->fontPtr = tagPtr->fontPtr; fontPrio = tagPtr->priority; } if ((tagPtr->fgStipple != None) && (tagPtr->priority > fgStipplePrio)) { sValuePtr->fgStipple = tagPtr->fgStipple; fgStipplePrio = tagPtr->priority; } if (tagPtr->underline) { sValuePtr->underline = 1; } } } /* *---------------------------------------------------------------------- * * LayoutLine -- * * This procedure generates a linked list of one or more DLine * structures, which describe how to display everything in one * line of the text. * * Results: * The return value is a pointer to one or more DLine structures * linked into a linked list. The structures are completely filled * in except for the y field, which the caller must supply. Also, * the information at *tInfoPtr gets updated to refer to the state * just after the last character of the line. * * Side effects: * None. * *---------------------------------------------------------------------- */ static DLine * LayoutLine(textPtr, line, linePtr, tInfoPtr) TkText *textPtr; /* Overall information about text widget. */ int line; /* Index of line to layout. */ TkTextLine *linePtr; /* Line to layout (corresponds to line). */ TagInfo *tInfoPtr; /* Information to help keep track of tags. * Caller must have initialized to correspond * to state just before start of line. */ { DLine *firstLinePtr; DLine *lastLinePtr = NULL; /* Initializations needed only to stop */ Chunk *lastChunkPtr = NULL; /* compiler warnings. */ register DLine *dlPtr; register Chunk *chunkPtr; StyleValues styleValues; int ch, charsThatFit, ascent, descent, x, maxX; firstLinePtr = NULL; /* * Each iteration of the loop below creates one DLine structure. */ ch = 0; while (1) { /* * Create and initialize a new DLine structure. */ dlPtr = (DLine *) ckalloc(sizeof(DLine)); dlPtr->linePtr = linePtr; dlPtr->y = 0; dlPtr->oldY = -1; dlPtr->chunkPtr = NULL; dlPtr->nextPtr = NULL; if (firstLinePtr == NULL) { firstLinePtr = dlPtr; } else { lastLinePtr->nextPtr = dlPtr; } lastLinePtr = dlPtr; /* * Each iteration of the loop below creates one Chunk for the * new display line. */ x = textPtr->dInfoPtr->x; maxX = textPtr->dInfoPtr->maxX; ascent = descent = 0; while (x < maxX) { chunkPtr = (Chunk *) ckalloc(sizeof(Chunk)); chunkPtr->numChars = linePtr->numBytes - ch; chunkPtr->text = linePtr->bytes + ch; chunkPtr->x = x; chunkPtr->nextPtr = NULL; if (dlPtr->chunkPtr == NULL) { dlPtr->chunkPtr = chunkPtr; } else { lastChunkPtr->nextPtr = chunkPtr; } lastChunkPtr = chunkPtr; /* * Update the tag array to include any tag transitions up * through the current position, then find the next position * with a transition on a tag that impacts the way things are * displayed. */ while (1) { int affectsDisplay; TkTextTag *tagPtr; if ((tInfoPtr->search.linePtr == NULL) || (tInfoPtr->search.line1 > line)) { break; } tagPtr = tInfoPtr->search.tagPtr; affectsDisplay = TK_TAG_AFFECTS_DISPLAY(tagPtr); if ((tInfoPtr->search.line1 < line) || (tInfoPtr->search.ch1 <= ch)) { if (affectsDisplay) { ToggleTag(tInfoPtr, tagPtr); } } else { if (affectsDisplay) { chunkPtr->numChars = tInfoPtr->search.ch1 - ch; break; } } (void) TkBTreeNextTag(&tInfoPtr->search); } /* * Create style information for this chunk. */ ComputeStyleValues(textPtr, tInfoPtr->numTags, tInfoPtr->tagPtrs, &styleValues); chunkPtr->stylePtr = GetStyle(textPtr, &styleValues); /* * See how many characters will fit on the line. If they don't * all fit, then a number of compensations may have to be made. * * 1. Make sure that at least one character is displayed on * each line. * 2. In wrap mode "none", allow a partial character to be * displayed at the end of an incomplete line. * 3. In wrap mode "word", search back to find the last space * character, and terminate the line just after that space * character. This involves a couple of extra complexities: * - the last space may be several chunks back; in this * case, delete all the chunks that are after the * space. * - if no words fit at all, then use character-wrap for * this DLine. * - have to reinitialize the tag search information, since * we may back up over tag toggles (they'll need to be * reconsidered on the next DLine). */ charsThatFit = TkMeasureChars(styleValues.fontPtr, chunkPtr->text, chunkPtr->numChars, chunkPtr->x, maxX, 0, &x); if ((charsThatFit < chunkPtr->numChars) || (x >= maxX)) { x = maxX; chunkPtr->numChars = charsThatFit; ch += charsThatFit; if (ch < (linePtr->numBytes - 1)) { if ((charsThatFit == 0) && (chunkPtr == dlPtr->chunkPtr)) { chunkPtr->numChars = 1; ch++; } else if (textPtr->wrapMode == tkTextWordUid) { if (isspace(chunkPtr->text[charsThatFit])) { ch += 1; /* Include space on this line. */ } else { register Chunk *chunkPtr2; register char *p; Chunk *spaceChunkPtr; int count, space; spaceChunkPtr = NULL; space = 0; for (chunkPtr2 = dlPtr->chunkPtr; chunkPtr2 != NULL; chunkPtr2 = chunkPtr2->nextPtr) { for (count = chunkPtr2->numChars - 1, p = chunkPtr2->text + count; count >= 0; count--, p--) { if (isspace(*p)) { spaceChunkPtr = chunkPtr2; space = count; break; } } } if (spaceChunkPtr != NULL) { spaceChunkPtr->numChars = space; ch = (spaceChunkPtr->text + space + 1) - linePtr->bytes; if (chunkPtr != spaceChunkPtr) { chunkPtr = spaceChunkPtr; if (tInfoPtr->tagPtrs != NULL) { ckfree((char *) tInfoPtr->tagPtrs); } tInfoPtr->tagPtrs = TkBTreeGetTags( textPtr->tree, dlPtr->linePtr, ch, &tInfoPtr->numTags); TkBTreeStartSearch(textPtr->tree, line, ch+1, TkBTreeNumLines(textPtr->tree), 0, (TkTextTag *) NULL, &tInfoPtr->search); (void) TkBTreeNextTag(&tInfoPtr->search); tInfoPtr->arraySize = tInfoPtr->numTags; while (chunkPtr->nextPtr != NULL) { chunkPtr2 = chunkPtr->nextPtr; chunkPtr->nextPtr = chunkPtr2->nextPtr; FreeStyle(chunkPtr2->stylePtr); ckfree((char *) chunkPtr2); } } } } } else if (textPtr->wrapMode == tkTextNoneUid) { chunkPtr->numChars++; ch++; } } } else { ch += chunkPtr->numChars; } /* * Update height information for use later in computing * line's overall height and baseline. */ if (styleValues.fontPtr->ascent > ascent) { ascent = styleValues.fontPtr->ascent; } if (styleValues.fontPtr->descent > descent) { descent = styleValues.fontPtr->descent; } } dlPtr->height = ascent + descent; dlPtr->baseline = ascent; /* * Quit when every character but the last character (the newline) * has been accounted for. Also quit if the wrap mode is "none": * this ignores all the characters that don't fit on the first * line. */ if ((ch >= (linePtr->numBytes-1)) || (textPtr->wrapMode == tkTextNoneUid)) { break; } } return firstLinePtr; } /* *---------------------------------------------------------------------- * * ToggleTag -- * * Update information about tags to reflect a transition on a * particular tag. * * Results: * The array at *tInfoPtr is modified to include tagPtr if it * didn't already or to exclude it if it used to include it. * The array will be reallocated to a larger size if needed. * * Side effects: * None. * *---------------------------------------------------------------------- */ static void ToggleTag(tInfoPtr, tagPtr) register TagInfo *tInfoPtr; /* Tag information to be updated. */ TkTextTag *tagPtr; /* Tag to be toggled into or out of * *tInfoPtr. */ { register TkTextTag **tagPtrPtr; int i; for (i = tInfoPtr->numTags, tagPtrPtr = tInfoPtr->tagPtrs; i > 0; i--, tagPtrPtr++) { if (*tagPtrPtr == tagPtr) { tInfoPtr->numTags--; *tagPtrPtr = tInfoPtr->tagPtrs[tInfoPtr->numTags]; return; } } /* * Tag not currently in array. Grow the array if necessary, then * add the tag to it. */ if (tInfoPtr->numTags == tInfoPtr->arraySize) { TkTextTag **newPtrs; newPtrs = (TkTextTag **) ckalloc((unsigned) ((tInfoPtr->arraySize+10) * sizeof(TkTextTag *))); if (tInfoPtr->tagPtrs != NULL) { memcpy((VOID *) newPtrs, (VOID *) tInfoPtr->tagPtrs, tInfoPtr->arraySize * sizeof(TkTextTag *)); ckfree((char *) tInfoPtr->tagPtrs); } tInfoPtr->tagPtrs = newPtrs; tInfoPtr->arraySize += 10; } tInfoPtr->tagPtrs[tInfoPtr->numTags] = tagPtr; tInfoPtr->numTags++; } /* *---------------------------------------------------------------------- * * UpdateDisplayInfo -- * * This procedure is invoked to recompute some or all of the * DLine structures for a text widget. At the time it is called * the DLine structures still left in the widget are guaranteed * to be correct (except for their y-coordinates), but there may * be missing structures (the DLine structures get removed as * soon as they are potentially out-of-date). * * Results: * None. * * Side effects: * Upon return, the DLine information for textPtr correctly reflects * the positions where characters will be displayed. However, this * procedure doesn't actually bring the display up-to-date. * *---------------------------------------------------------------------- */ static void UpdateDisplayInfo(textPtr) TkText *textPtr; /* Text widget to update. */ { register DInfo *dInfoPtr = textPtr->dInfoPtr; register DLine *dlPtr, *prevPtr, *dlPtr2; TkTextLine *linePtr; TagInfo tagInfo; int line, y, maxY; if (!(dInfoPtr->flags & DINFO_OUT_OF_DATE)) { return; } dInfoPtr->flags &= ~DINFO_OUT_OF_DATE; linePtr = textPtr->topLinePtr; dlPtr = dInfoPtr->dLinePtr; tagInfo.tagPtrs = TkBTreeGetTags(textPtr->tree, linePtr, 0, &tagInfo.numTags); tagInfo.arraySize = tagInfo.numTags; /* * Tricky point: initialize the tag search just *after* the first * character in the line, since the tagInfo structure already has all * the tags for the first character. */ line = TkBTreeLineIndex(linePtr); TkBTreeStartSearch(textPtr->tree, line, 1, TkBTreeNumLines(textPtr->tree), 0, (TkTextTag *) NULL, &tagInfo.search); TkBTreeNextTag(&tagInfo.search); prevPtr = NULL; y = dInfoPtr->y; maxY = dInfoPtr->maxY; while ((linePtr != NULL) && (y < maxY)) { register DLine *newPtr; /* * See if the next DLine matches the next line we want to * appear on the screen. If so then we can just use its * information. If not then create new DLine structures * for the desired line and insert them into the list. */ if ((dlPtr == NULL) || (dlPtr->linePtr != linePtr)) { newPtr = LayoutLine(textPtr, line, linePtr, &tagInfo); if (prevPtr == NULL) { dInfoPtr->dLinePtr = newPtr; } else { prevPtr->nextPtr = newPtr; } for (dlPtr2 = newPtr; dlPtr2->nextPtr != NULL; dlPtr2 = dlPtr2->nextPtr) { /* Empty loop body. */ } dlPtr2->nextPtr = dlPtr; dlPtr = newPtr; } /* * Skip to the next line, and update the y-position while * skipping. */ do { dlPtr->y = y; y += dlPtr->height; prevPtr = dlPtr; dlPtr = dlPtr->nextPtr; } while ((dlPtr != NULL) && (dlPtr->linePtr == linePtr)); linePtr = TkBTreeNextLine(linePtr); line++; } /* * Delete any DLine structures that don't fit on the screen and free * up the tag array. */ FreeDLines(textPtr, dlPtr, (DLine *) NULL, 1); if (tagInfo.tagPtrs != NULL) { ckfree((char *) tagInfo.tagPtrs); } /* * Update the vertical scrollbar, if there is one. */ if (textPtr->yScrollCmd != NULL) { int numLines, first, result, maxY, height; char string[60]; /* * Count the number of text lines on the screen. */ maxY = 0; for (numLines = 0, linePtr = NULL, dlPtr = dInfoPtr->dLinePtr; dlPtr != NULL; dlPtr = dlPtr->nextPtr) { if (dlPtr->linePtr != linePtr) { numLines++; linePtr = dlPtr->linePtr; } maxY = dlPtr->y + dlPtr->height; } /* * If the screen isn't completely full, then estimate the number of * lines that would fit on it if it were full. */ height = dInfoPtr->maxY - dInfoPtr->y; if (numLines == 0) { numLines = height / (textPtr->fontPtr->ascent + textPtr->fontPtr->descent); } else if (maxY < height) { numLines = (numLines * height)/maxY; } /* DEH: be reasonable if dLinePtr is null */ if (dInfoPtr->dLinePtr == NULL) { sprintf(string, " 0 0 0 0"); } else { first = TkBTreeLineIndex(dInfoPtr->dLinePtr->linePtr); sprintf(string, " %d %d %d %d", TkBTreeNumLines(textPtr->tree), numLines, first, first+numLines-1); } result = Tcl_VarEval(textPtr->interp, textPtr->yScrollCmd, string, (char *) NULL); if (result != TCL_OK) { TkBindError(textPtr->interp); } } } /* *---------------------------------------------------------------------- * * FreeDLines -- * * This procedure is called to free up all of the resources * associated with one or more DLine structures. * * Results: * None. * * Side effects: * Memory gets freed and various other resources are released. * *---------------------------------------------------------------------- */ static void FreeDLines(textPtr, firstPtr, lastPtr, unlink) TkText *textPtr; /* Information about overall text * widget. */ register DLine *firstPtr; /* Pointer to first DLine to free up. */ DLine *lastPtr; /* Pointer to DLine just after last * one to free (NULL means everything * starting with firstPtr). */ int unlink; /* 1 means DLines are currently linked * into the list rooted at * textPtr->dInfoPtr->dLinePtr and * they have to be unlinked. 0 means * just free without unlinking. */ { register Chunk *chunkPtr, *nextChunkPtr; register DLine *nextDLinePtr; if (unlink) { if (textPtr->dInfoPtr->dLinePtr == firstPtr) { textPtr->dInfoPtr->dLinePtr = lastPtr; } else { register DLine *prevPtr; for (prevPtr = textPtr->dInfoPtr->dLinePtr; prevPtr->nextPtr != firstPtr; prevPtr = prevPtr->nextPtr) { /* Empty loop body. */ } prevPtr->nextPtr = lastPtr; } } while (firstPtr != lastPtr) { nextDLinePtr = firstPtr->nextPtr; for (chunkPtr = firstPtr->chunkPtr; chunkPtr != NULL; chunkPtr = nextChunkPtr) { FreeStyle(chunkPtr->stylePtr); nextChunkPtr = chunkPtr->nextPtr; ckfree((char *) chunkPtr); } ckfree((char *) firstPtr); firstPtr = nextDLinePtr; } } /* *---------------------------------------------------------------------- * * DisplayDLine -- * * This procedure is invoked to draw a single line on the * screen. * * Results: * None. * * Side effects: * The line given by dlPtr is drawn at its correct position in * textPtr's window. Note that this is one *display* line, not * one *text* line. * *---------------------------------------------------------------------- */ static void DisplayDLine(textPtr, dlPtr, pixmap) TkText *textPtr; /* Text widget in which to draw line. */ register DLine *dlPtr; /* Information about line to draw. */ Pixmap pixmap; /* Pixmap to use for double-buffering. * Caller must make sure it's large enough * to hold line. */ { register Style *stylePtr; register StyleValues *sValuePtr; register Chunk *chunkPtr; DInfo *dInfoPtr = textPtr->dInfoPtr; Display *display; int width, height, count, x; XFontStruct *fontPtr; /* * First, clear the area of the line to the background color for the * text widget. */ display = Tk_Display(textPtr->tkwin); Tk_Fill3DRectangle(display, pixmap, textPtr->border, 0, 0, Tk_Width(textPtr->tkwin), dlPtr->height, 0, TK_RELIEF_FLAT); /* * Next, cycle through all of the chunks in the line displaying * backgrounds. We need to do two passes, one for the backgrounds * and one for the characters, because some characters (e.g. italics * with heavy slants) may cross background boundaries. If some * backgrounds are drawn after some text, the later backgrounds may * obliterate parts of earlier characters. */ for (chunkPtr = dlPtr->chunkPtr; chunkPtr != NULL; chunkPtr = chunkPtr->nextPtr) { /* * Draw a special background for this chunk if one is specified * in its style. Two tricks here: * 1. if this is the last chunk in the line then extend the * background across to the end of the line. * 2. if the background is stippled, then we have to draw the * stippled part specially, since Tk_Fill3DRectangle doesn't * do stipples. */ stylePtr = chunkPtr->stylePtr; sValuePtr = stylePtr->sValuePtr; if (sValuePtr->border != NULL) { if (chunkPtr->nextPtr != NULL) { width = chunkPtr->nextPtr->x - chunkPtr->x; } else { width = Tk_Width(textPtr->tkwin) - chunkPtr->x; } if (stylePtr->bgGC != NULL) { XFillRectangle(display, pixmap, stylePtr->bgGC, chunkPtr->x, 0, (unsigned int) width, (unsigned int) dlPtr->height); Tk_Draw3DRectangle(display, pixmap, sValuePtr->border, chunkPtr->x, 0, width, dlPtr->height, sValuePtr->borderWidth, sValuePtr->relief); } else { Tk_Fill3DRectangle(display, pixmap, sValuePtr->border, chunkPtr->x, 0, width, dlPtr->height, sValuePtr->borderWidth, sValuePtr->relief); } } } /* * If the insertion cursor is displayed on this line, then draw it * now, on top of the background but before the text. As a special * workaround to keep the cursor visible on mono displays, write the default * background in the cursor area (instead of nothing) when the cursor * isn't on. Otherwise the selection would hide the cursor. */ if ((textPtr->insertAnnotPtr->linePtr == dlPtr->linePtr) && (textPtr->state == tkTextNormalUid) && (textPtr->flags & GOT_FOCUS)) { for (chunkPtr = dlPtr->chunkPtr; chunkPtr != NULL; chunkPtr = chunkPtr->nextPtr) { count = textPtr->insertAnnotPtr->ch - (chunkPtr->text - dlPtr->linePtr->bytes); if (count < 0) { break; } if (count > chunkPtr->numChars) { continue; } /* * Deciding whether to display the cursor just after the last * character in a line is tricky because of various wrap * modes. Do it unless we're in character wrap mode and * this line wraps, in which case it's better to display the * cursor on the next line. For word wrap, there's an * undisplayed space character that the user must be able to * position the cursor in front of. For no wrap, there's no * next line on which to display the cursor. */ if ((count == chunkPtr->numChars) && (textPtr->wrapMode == tkTextCharUid) && (chunkPtr->text[count] != '\n')) { continue; } fontPtr = chunkPtr->stylePtr->sValuePtr->fontPtr; TkMeasureChars(fontPtr, chunkPtr->text, count, chunkPtr->x, (int) 1000000, 0, &x); if (textPtr->flags & INSERT_ON) { Tk_Fill3DRectangle(display, pixmap, textPtr->insertBorder, x - textPtr->insertWidth/2, dlPtr->baseline - fontPtr->ascent, textPtr->insertWidth, fontPtr->ascent + fontPtr->descent, textPtr->insertBorderWidth, TK_RELIEF_RAISED); } else if (Tk_DefaultDepth(Tk_Screen(textPtr->tkwin)) == 1) { Tk_Fill3DRectangle(display, pixmap, textPtr->border, x - textPtr->insertWidth/2, dlPtr->baseline - fontPtr->ascent, textPtr->insertWidth, fontPtr->ascent + fontPtr->descent, 0, TK_RELIEF_FLAT); } } } /* * Make another pass through all of the chunks to redraw all of * the text (and underlines, etc., if they're wanted). */ for (chunkPtr = dlPtr->chunkPtr; chunkPtr != NULL; chunkPtr = chunkPtr->nextPtr) { stylePtr = chunkPtr->stylePtr; sValuePtr = stylePtr->sValuePtr; if (chunkPtr->numChars > 0) { TkDisplayChars(display, pixmap, stylePtr->fgGC, sValuePtr->fontPtr, chunkPtr->text, chunkPtr->numChars, chunkPtr->x, dlPtr->baseline, 0); if (sValuePtr->underline) { TkUnderlineChars(display, pixmap, stylePtr->fgGC, sValuePtr->fontPtr, chunkPtr->text, chunkPtr->x, dlPtr->baseline, 0, 0, chunkPtr->numChars-1); } } } /* * Copy the pixmap onto the screen. If this is the last line on * the screen, only copy a piece of the line, so that it doesn't * overflow into the border area. Another special trick: copy the * padding area to the left of the line; this is because the * insertion cursor sometimes overflows onto that area and we want * to get as much of the cursor as possible. */ height = dlPtr->height; if ((height + dlPtr->y) > dInfoPtr->maxY) { height = dInfoPtr->maxY - dlPtr->y; } XCopyArea(display, pixmap, Tk_WindowId(textPtr->tkwin), dInfoPtr->copyGC, dInfoPtr->x - textPtr->padX, 0, dInfoPtr->maxX - (dInfoPtr->x - textPtr->padX), height, dInfoPtr->x - textPtr->padX, dlPtr->y); linesRedrawn++; } /* *---------------------------------------------------------------------- * * DisplayText -- * * This procedure is invoked as a when-idle handler to update the * display. It only redisplays the parts of the text widget that * are out of date. * * Results: * None. * * Side effects: * Information is redrawn on the screen. * *---------------------------------------------------------------------- */ static void DisplayText(clientData) ClientData clientData; /* Information about widget. */ { register TkText *textPtr = (TkText *) clientData; DInfo *dInfoPtr = textPtr->dInfoPtr; Tk_Window tkwin; register DLine *dlPtr; Pixmap pixmap; int maxHeight; int bottomY = 0; /* Initialization needed only to stop * compiler warnings. */ assert(textPtr->updateTimerToken != NULL); textPtr->updateTimerToken = 0; if ((textPtr->tkwin == NULL) || !Tk_IsMapped(textPtr->tkwin) || (dInfoPtr->maxX <= dInfoPtr->x) || (dInfoPtr->maxY <= dInfoPtr->y)) { goto done; } numRedisplays++; /* * Choose a new current item if that is needed (this could cause * event handlers to be invoked, hence the preserve/release calls * and the loop, since the handlers could conceivably necessitate * yet another current item calculation). The tkwin check is because * the whole window could go away in the Tk_Release call. */ while (dInfoPtr->flags & REPICK_NEEDED) { Tk_Preserve((ClientData) textPtr); dInfoPtr->flags &= ~REPICK_NEEDED; TkTextPickCurrent(textPtr, &textPtr->pickEvent); tkwin = textPtr->tkwin; Tk_Release((ClientData) textPtr); if (tkwin == NULL) { return; } } /* * First recompute what's supposed to be displayed. */ UpdateDisplayInfo(textPtr); /* * Redraw the borders if that's needed. */ if (dInfoPtr->flags & REDRAW_BORDERS) { Tk_Draw3DRectangle(Tk_Display(textPtr->tkwin), Tk_WindowId(textPtr->tkwin), textPtr->border, 0, 0, Tk_Width(textPtr->tkwin), Tk_Height(textPtr->tkwin), textPtr->borderWidth, textPtr->relief); } /* * See if it's possible to bring some parts of the screen up-to-date * by scrolling (copying from other parts of the screen). */ for (dlPtr = dInfoPtr->dLinePtr; dlPtr != NULL; dlPtr = dlPtr->nextPtr) { register DLine *dlPtr2; int offset, height; if ((dlPtr->oldY == -1) || (dlPtr->y == dlPtr->oldY) || ((dlPtr->oldY + dlPtr->height) > dInfoPtr->maxY)) { continue; } /* * This line is already drawn somewhere in the window so it only * needs to be copied to its new location. See if there's a group * of lines that can all be copied together. */ offset = dlPtr->y - dlPtr->oldY; height = dlPtr->height; for (dlPtr2 = dlPtr->nextPtr; dlPtr2 != NULL; dlPtr2 = dlPtr2->nextPtr) { if ((dlPtr2->oldY == -1) || ((dlPtr2->oldY + offset) != dlPtr2->y) || ((dlPtr2->oldY + dlPtr2->height) > dInfoPtr->maxY)) { break; } height += dlPtr2->height; } /* * Copy the information and update the lines to show that they've * been copied. Reduce the height of the area being copied if * necessary to avoid overwriting the border area. */ if ((dlPtr->y + height) > dInfoPtr->maxY) { height = dInfoPtr->maxY - dlPtr->y; } XCopyArea(Tk_Display(textPtr->tkwin), Tk_WindowId(textPtr->tkwin), Tk_WindowId(textPtr->tkwin), dInfoPtr->scrollGC, dInfoPtr->x - textPtr->padX, dlPtr->oldY, dInfoPtr->maxX - (dInfoPtr->x - textPtr->padX), height, dInfoPtr->x - textPtr->padX, dlPtr->y); numCopies++; while (1) { dlPtr->oldY = dlPtr->y; if (dlPtr->nextPtr == dlPtr2) { break; } dlPtr = dlPtr->nextPtr; } /* * It's possible that part of the area copied above was obscured. * To handle this situation, read expose-related events generated * during the XCopyArea operation. */ while (1) { XEvent event; XWindowEvent(Tk_Display(textPtr->tkwin), Tk_WindowId(textPtr->tkwin), ExposureMask, &event); if (event.type == NoExpose) { break; } else if (event.type == GraphicsExpose) { TkTextRedrawRegion(textPtr, event.xgraphicsexpose.x, event.xgraphicsexpose.y, event.xgraphicsexpose.width, event.xgraphicsexpose.height); if (event.xgraphicsexpose.count == 0) { damagedCopies++; break; } } else if (event.type == Expose) { /* * A tricky situation. This event must already have been * queued up before the XCopyArea was issued. If the area * in this event overlaps the area copied, then some of the * bits that were copied were bogus. The easiest way to * handle this is to issue two redisplays: one for the * original area and one for the area shifted as if it was * in the copied area. */ TkTextRedrawRegion(textPtr, event.xexpose.x, event.xexpose.y, event.xexpose.width, event.xexpose.height); TkTextRedrawRegion(textPtr, event.xexpose.x, event.xexpose.y + offset, event.xexpose.width, event.xexpose.height); } else { panic("DisplayText received unknown exposure event"); } } } /* * Now we have to redraw the lines that couldn't be updated by * scrolling. First, compute the height of the largest line and * allocate an off-screen pixmap to use for double-buffered * displays. */ maxHeight = -1; for (dlPtr = textPtr->dInfoPtr->dLinePtr; dlPtr != NULL; dlPtr = dlPtr->nextPtr) { if ((dlPtr->height > maxHeight) && (dlPtr->oldY != dlPtr->y)) { maxHeight = dlPtr->height; } bottomY = dlPtr->y + dlPtr->height; } if (maxHeight >= 0) { pixmap = XCreatePixmap(Tk_Display(textPtr->tkwin), Tk_WindowId(textPtr->tkwin), Tk_Width(textPtr->tkwin), maxHeight, Tk_DefaultDepth(Tk_Screen(textPtr->tkwin))); for (dlPtr = textPtr->dInfoPtr->dLinePtr; dlPtr != NULL; dlPtr = dlPtr->nextPtr) { if (dlPtr->oldY != dlPtr->y) { DisplayDLine(textPtr, dlPtr, pixmap); dlPtr->oldY = dlPtr->y; } } XFreePixmap(Tk_Display(textPtr->tkwin), pixmap); } /* * Lastly, see if we need to refresh the part of the window below * the last line of text (if there is any such area). */ if (dInfoPtr->topOfEof > dInfoPtr->maxY) { dInfoPtr->topOfEof = dInfoPtr->maxY; } if (bottomY < dInfoPtr->topOfEof) { Tk_Fill3DRectangle(Tk_Display(textPtr->tkwin), Tk_WindowId(textPtr->tkwin), textPtr->border, dInfoPtr->x, bottomY, dInfoPtr->maxX - dInfoPtr->x, dInfoPtr->topOfEof-bottomY, 0, TK_RELIEF_FLAT); } dInfoPtr->topOfEof = bottomY; if (dInfoPtr->topOfEof > dInfoPtr->maxY) { dInfoPtr->topOfEof = dInfoPtr->maxY; } done: dInfoPtr->flags &= ~(REDRAW_PENDING|REDRAW_BORDERS); } /* *---------------------------------------------------------------------- * * TkTextRedrawRegion -- * * This procedure is invoked to schedule a redisplay for a given * region of a text widget. The redisplay itself may not occur * immediately: it's scheduled as a when-idle handler. * * Results: * None. * * Side effects: * Information will eventually be redrawn on the screen. * *---------------------------------------------------------------------- */ /* ARGSUSED */ void TkTextRedrawRegion(textPtr, x, y, width, height) TkText *textPtr; /* Widget record for text widget. */ int x, y; /* Coordinates of upper-left corner of area * to be redrawn, in pixels relative to * textPtr's window. */ int width, height; /* Width and height of area to be redrawn. */ { register DLine *dlPtr; DInfo *dInfoPtr = textPtr->dInfoPtr; int maxY; /* * Find all lines that overlap the given region and mark them for * redisplay. */ maxY = y + height; for (dlPtr = dInfoPtr->dLinePtr; dlPtr != NULL; dlPtr = dlPtr->nextPtr) { if (((dlPtr->y + dlPtr->height) > y) && (dlPtr->y < maxY)) { dlPtr->oldY = -1; } } if (dInfoPtr->topOfEof < maxY) { dInfoPtr->topOfEof = maxY; } /* * Schedule the redisplay operation if there isn't one already * scheduled. */ if (!(dInfoPtr->flags & REDRAW_PENDING)) { dInfoPtr->flags |= REDRAW_PENDING; // Tk_DoWhenIdle(DisplayText, (ClientData) textPtr); assert(textPtr->updateTimerToken == NULL); if (textPtr->updateTimerToken == NULL) { textPtr->updateTimerToken = Tk_CreateTimerHandler( TextUpdateTime, DisplayText, (ClientData) textPtr); } } if ((x < dInfoPtr->x) || (y < dInfoPtr->y) || ((x + width) > dInfoPtr->maxX) || (maxY > dInfoPtr->maxY)) { dInfoPtr->flags |= REDRAW_BORDERS; } } /* *---------------------------------------------------------------------- * * TkTextLinesChanged -- * * This procedure is invoked when lines in a text widget are about * to be modified in a way that changes how they are displayed (e.g. * characters were inserted, the line was deleted, or tag information * was changed). This procedure must be called *before* a change is * made, so that pointers to TkTextLines in the display information * are still valid. * * Results: * None. * * Side effects: * The indicated lines will be redisplayed at some point in the * future (the actual redisplay is scheduled as a when-idle handler). * *---------------------------------------------------------------------- */ void TkTextLinesChanged(textPtr, first, last) TkText *textPtr; /* Widget record for text widget. */ int first; /* Index of first line that must be * redisplayed. */ int last; /* Index of last line to redisplay. */ { DInfo *dInfoPtr = textPtr->dInfoPtr; DLine *firstPtr, *lastPtr; /* * Find the DLines corresponding to first and last+1. */ firstPtr = FindDLine(dInfoPtr->dLinePtr, first); if (firstPtr == NULL) { return; } lastPtr = FindDLine(dInfoPtr->dLinePtr, last+1); if (firstPtr == lastPtr) { return; } /* * Delete all the DLines from first up through last (but not including * lastPtr, which points to the first line *outside* the range). */ FreeDLines(textPtr, firstPtr, lastPtr, 1); /* * Schedule both a redisplay and a recomputation of display information. */ if (!(dInfoPtr->flags & REDRAW_PENDING)) { // Tk_DoWhenIdle(DisplayText, (ClientData) textPtr); assert(textPtr->updateTimerToken == NULL); if (textPtr->updateTimerToken == NULL) { textPtr->updateTimerToken = Tk_CreateTimerHandler( TextUpdateTime, DisplayText, (ClientData) textPtr); } } dInfoPtr->flags |= REDRAW_PENDING | DINFO_OUT_OF_DATE | REPICK_NEEDED; } /* *---------------------------------------------------------------------- * * TkTextRedrawTag -- * * This procedure is invoked to request a redraw of all characters * in a given range of characters that have a particular tag on or * off. It's called, for example, when characters are tagged or * untagged, or when tag options change. * * Results: * None. * * Side effects: * Information on the screen may be redrawn, and the layout of * the screen may change. * *---------------------------------------------------------------------- */ void TkTextRedrawTag(textPtr, line1, ch1, line2, ch2, tagPtr, withTag) TkText *textPtr; /* Widget record for text widget. */ int line1, ch1; /* Index of first character in range of * interest. */ int line2, ch2; /* Index of character just after last one * in range of interest. */ TkTextTag *tagPtr; /* Information about tag. */ int withTag; /* 1 means redraw characters that have the * tag, 0 means redraw those without. */ { register DLine *dlPtr; DLine *endPtr; int topLine, tagOn; TkTextSearch search; DInfo *dInfoPtr = textPtr->dInfoPtr; /* * Round up the starting position if it's before the first line * visible on the screen (we only care about what's on the screen). */ dlPtr = dInfoPtr->dLinePtr; if (dlPtr == NULL) { return; } topLine = TkBTreeLineIndex(dlPtr->linePtr); if (topLine > line1) { line1 = topLine; ch1 = 0; } /* * Initialize a search through all transitions on the tag, starting * with the first transition where the tag's current state is different * from what it will eventually be. */ TkBTreeStartSearch(textPtr->tree, line1, ch1+1, line2, ch2, tagPtr, &search); tagOn = TkBTreeCharTagged(search.linePtr, ch1, tagPtr); if (tagOn != withTag) { if (!TkBTreeNextTag(&search)) { return; } } /* * Each loop through the loop below is for one range of characters * where the tag's current state is different than its eventual * state. At the top of the loop, search contains information about * the first character in the range. */ while (1) { /* * Find the first DLine structure in the range. */ dlPtr = FindDLine(dlPtr, search.line1); if (dlPtr == NULL) { break; } /* * Find the first DLine structure that's past the end of the range. */ if (TkBTreeNextTag(&search)) { endPtr = FindDLine(dlPtr, (search.ch1 > 0) ? (search.line1 + 1) : search.line1); } else { endPtr = FindDLine(dlPtr, (ch2 > 0) ? (search.line2 + 1) : search.line2); } /* * Delete all of the display lines in the range, so that they'll * be re-layed out and redrawn. */ FreeDLines(textPtr, dlPtr, endPtr, 1); dlPtr = endPtr; /* * Find the first text line in the next range. */ if (!TkBTreeNextTag(&search)) { break; } } /* * Lastly, schedule a redisplay and layout recalculation if they * aren't already pending. */ if (!(dInfoPtr->flags & REDRAW_PENDING)) { // Tk_DoWhenIdle(DisplayText, (ClientData) textPtr); assert(textPtr->updateTimerToken == NULL); if (textPtr->updateTimerToken == NULL) { textPtr->updateTimerToken = Tk_CreateTimerHandler( TextUpdateTime, DisplayText, (ClientData) textPtr); } } dInfoPtr->flags |= REDRAW_PENDING | DINFO_OUT_OF_DATE | REPICK_NEEDED; } /* *---------------------------------------------------------------------- * * TkTextRelayoutWindow -- * * This procedure is called when something has happened that * invalidates the whole layout of characters on the screen, such * as a change in a configuration option for the overall text * widget or a change in the window size. It causes all display * information to be recomputed and the window to be redrawn. * * Results: * None. * * Side effects: * All the display information will be recomputed for the window * and the window will be redrawn. * *---------------------------------------------------------------------- */ void TkTextRelayoutWindow(textPtr) TkText *textPtr; /* Widget record for text widget. */ { DInfo *dInfoPtr = textPtr->dInfoPtr; /* * Throw away all the current layout information. */ FreeDLines(textPtr, dInfoPtr->dLinePtr, (DLine *) NULL, 1); dInfoPtr->dLinePtr = NULL; /* * Recompute some overall things for the layout. */ dInfoPtr->x = textPtr->borderWidth + textPtr->padX; dInfoPtr->y = textPtr->borderWidth + textPtr->padY; dInfoPtr->maxX = Tk_Width(textPtr->tkwin) - dInfoPtr->x; dInfoPtr->maxY = Tk_Height(textPtr->tkwin) - dInfoPtr->y; dInfoPtr->topOfEof = dInfoPtr->maxY; if (!(dInfoPtr->flags & REDRAW_PENDING)) { // Tk_DoWhenIdle(DisplayText, (ClientData) textPtr); assert(textPtr->updateTimerToken == NULL); if (textPtr->updateTimerToken == NULL) { textPtr->updateTimerToken = Tk_CreateTimerHandler( TextUpdateTime, DisplayText, (ClientData) textPtr); } } dInfoPtr->flags |= REDRAW_PENDING | REDRAW_BORDERS | DINFO_OUT_OF_DATE | REPICK_NEEDED; } /* *---------------------------------------------------------------------- * * TkTextSetView -- * * This procedure is called to specify what lines are to be * displayed in a text widget. * * Results: * None. * * Side effects: * The display will (eventually) be updated so that the line * given by "line" is visible on the screen at the position * determined by "pickPlace". * *---------------------------------------------------------------------- */ void TkTextSetView(textPtr, line, pickPlace) TkText *textPtr; /* Widget record for text widget. */ int line; /* Number of line that is to appear somewhere * in the window. This line number must * be a valid one in the file. */ int pickPlace; /* 0 means topLine must appear at top of * screen. 1 means we get to pick where it * appears: minimize screen motion or else * display line at center of screen. */ { DInfo *dInfoPtr = textPtr->dInfoPtr; register DLine *dlPtr, *dlPtr2; TkTextLine *linePtr; int curTopLine, curBotLine; int bottomY; TagInfo tagInfo; #define CLOSE_LINES 5 if (!pickPlace) { /* * The line must go at the top of the screen. See if the new * topmost line is already somewhere on the screen. If so then * delete all the DLine structures ahead of it. Otherwise just * leave all the DLine's alone (if the new topmost line is above * the top of the current window, i.e. we're scrolling back towards * the beginning of the file we may be able to reuse some of the * information that's currently on the screen without redisplaying * it all. */ dlPtr = FindDLine(dInfoPtr->dLinePtr, line); if ((dlPtr != NULL) && (dlPtr != dInfoPtr->dLinePtr)) { FreeDLines(textPtr, dInfoPtr->dLinePtr, dlPtr, 1); } textPtr->topLinePtr = TkBTreeFindLine(textPtr->tree, line); goto scheduleUpdate; } /* * We have to pick where to display the given line. First, bring * the display information up to date and see if the line will be * completely visible in the current screen configuration. If so * then there's nothing to do. */ if (dInfoPtr->flags & DINFO_OUT_OF_DATE) { UpdateDisplayInfo(textPtr); } linePtr = TkBTreeFindLine(textPtr->tree, line); /* DEH: return if dlPtr is null */ if ((dlPtr = dInfoPtr->dLinePtr) == NULL) return; for (; ; dlPtr = dlPtr->nextPtr) { if (dlPtr->nextPtr == NULL) { break; } if ((dlPtr->linePtr == linePtr) && (dlPtr->nextPtr->linePtr != linePtr)) { break; } } if ((dlPtr->linePtr == linePtr) && ((dlPtr->y + dlPtr->height) <= dInfoPtr->maxY)) { return; } /* * The desired line isn't already on-screen. See if it is within * a few lines of the top of the window. If so then just make it * the top line on the screen. */ bottomY = (dInfoPtr->y + dInfoPtr->maxY)/2; curTopLine = TkBTreeLineIndex(dInfoPtr->dLinePtr->linePtr); if (line < curTopLine) { if (line >= (curTopLine-CLOSE_LINES)) { textPtr->topLinePtr = TkBTreeFindLine(textPtr->tree, line); goto scheduleUpdate; } } else { /* * The desired line is below the bottom of the screen. If it is * within a few lines of the bottom of the screen then position * it at the bottom of the screen. (At this point dlPtr points to * the last line on the screen) */ curBotLine = TkBTreeLineIndex(dlPtr->linePtr); if (line <= (curBotLine+5)) { bottomY = dInfoPtr->maxY; } } /* * Our job now is arrange the display so that "line" appears as * low on the screen as possible but with its bottom no lower * than bottomY (bottomY is the bottom of the window if the * desired line is just below the current screen, otherwise it * is the center of the window. Work upwards (through smaller * line numbers) computing how much space lines take, until we * fine the line that should be at the top of the screen. */ for (textPtr->topLinePtr = linePtr = TkBTreeFindLine(textPtr->tree, line); ; line--, textPtr->topLinePtr = linePtr, linePtr = TkBTreeFindLine(textPtr->tree, line)) { tagInfo.tagPtrs = TkBTreeGetTags(textPtr->tree, linePtr, 0, &tagInfo.numTags); tagInfo.arraySize = tagInfo.numTags; TkBTreeStartSearch(textPtr->tree, line, 1, line+1, 0, (TkTextTag *) NULL, &tagInfo.search); TkBTreeNextTag(&tagInfo.search); dlPtr = LayoutLine(textPtr, line, linePtr, &tagInfo); for (dlPtr2 = dlPtr; dlPtr2 != NULL; dlPtr2 = dlPtr2->nextPtr) { bottomY -= dlPtr2->height; } FreeDLines(textPtr, dlPtr, (DLine *) NULL, 0); if (tagInfo.tagPtrs != NULL) { ckfree((char *) tagInfo.tagPtrs); } if ((bottomY <= 0) || (line <= 0)) { break; } } scheduleUpdate: if (!(dInfoPtr->flags & REDRAW_PENDING)) { // Tk_DoWhenIdle(DisplayText, (ClientData) textPtr); assert(textPtr->updateTimerToken == NULL); if (textPtr->updateTimerToken == NULL) { textPtr->updateTimerToken = Tk_CreateTimerHandler( TextUpdateTime, DisplayText, (ClientData) textPtr); } } dInfoPtr->flags |= REDRAW_PENDING | DINFO_OUT_OF_DATE | REPICK_NEEDED; } /* *---------------------------------------------------------------------- * * FindDLine -- * * This procedure is called to find the DLine corresponding to a * given text line. * * Results: * The return value is a pointer to the first DLine found in the * list headed by dlPtr whose line number is greater or equal to * line. If there is no such line in the list then NULL is returned. * * Side effects: * None. * *---------------------------------------------------------------------- */ static DLine * FindDLine(dlPtr, line) register DLine *dlPtr; /* Pointer to first in list of DLines * to search. */ int line; /* Line number in text that is desired. */ { TkTextLine *linePtr; int thisLine; if (dlPtr == NULL) { return NULL; } thisLine = TkBTreeLineIndex(dlPtr->linePtr); while (thisLine < line) { /* * This DLine isn't the right one. Go on to the next DLine * (skipping multiple DLine's for the same text line). */ linePtr = dlPtr->linePtr; do { dlPtr = dlPtr->nextPtr; if (dlPtr == NULL) { return NULL; } } while (dlPtr->linePtr == linePtr); /* * Step through text lines, keeping track of the line number * we're on, until we catch up to dlPtr (remember, there could * be gaps in the DLine list where DLine's have been deleted). */ do { linePtr = TkBTreeNextLine(linePtr); thisLine++; if (linePtr == NULL) { panic("FindDLine reached end of text"); } } while (linePtr != dlPtr->linePtr); } return dlPtr; } /* *---------------------------------------------------------------------- * * TkTextCharAtLoc -- * * Given an (x,y) coordinate on the screen, find the location of * the closest character to that location. * * Results: * The return value is a pointer to the text line containing the * character displayed closest to (x,y). The value at *chPtr is * overwritten with the index with that line of the closest * character. * * Side effects: * None. * *---------------------------------------------------------------------- */ TkTextLine * TkTextCharAtLoc(textPtr, x, y, chPtr) TkText *textPtr; /* Widget record for text widget. */ int x, y; /* Pixel coordinates of point in widget's * window. */ int *chPtr; /* Place to store index-within-line of * closest character. */ { DInfo *dInfoPtr = textPtr->dInfoPtr; register DLine *dlPtr; register Chunk *chunkPtr; int count; int endX; /* * Make sure that all of the layout information about what's * displayed where on the screen is up-to-date. */ if (dInfoPtr->flags & DINFO_OUT_OF_DATE) { UpdateDisplayInfo(textPtr); } /* * If the coordinates are above the top of the window, then adjust * them to refer to the upper-right corner of the window. */ if (y < dInfoPtr->y) { y = dInfoPtr->y; x = dInfoPtr->x; } else if (y >= dInfoPtr->topOfEof) { y = dInfoPtr->topOfEof; x = dInfoPtr->maxX; } for (dlPtr = dInfoPtr->dLinePtr; dlPtr != NULL; dlPtr = dlPtr->nextPtr) { if (y > (dlPtr->y + dlPtr->height)) { if (dlPtr->nextPtr != NULL) { continue; } /* * The coordinates are off the bottom of the window. Adjust * them to refer to the lower-right character on the window. */ y = dlPtr->y; x = dInfoPtr->maxX; } for (chunkPtr = dlPtr->chunkPtr; ; chunkPtr = chunkPtr->nextPtr) { if ((chunkPtr->nextPtr == NULL) || (chunkPtr->nextPtr->x > x)) { break; } } count = TkMeasureChars(chunkPtr->stylePtr->sValuePtr->fontPtr, chunkPtr->text, chunkPtr->numChars, chunkPtr->x, x, 0, &endX); if (count >= chunkPtr->numChars) { /* * The point is off the end of the line. Return the character * after the last one that fit, unless that character appears * as the first character on the next DLine or unless the last * one that fit extends beyond the edge of the window. */ if ((dlPtr->nextPtr != NULL) && (dlPtr->nextPtr->chunkPtr->text == (chunkPtr->text + chunkPtr->numChars))) { count = chunkPtr->numChars-1; } if (endX >= dInfoPtr->maxX) { count = chunkPtr->numChars-1; } } *chPtr = count + (chunkPtr->text - dlPtr->linePtr->bytes); return dlPtr->linePtr; } panic("TkTextCharAtLoc ran out of lines"); return (TkTextLine *) NULL; } micropolis-activity/src/tk/tkwm.h0000664000076400007640000000054110724145723017373 0ustar simcitysimcity/* these are just in a sereate file to make it easier to merge into * the stock tkWm.c */ void TkWmSetWmProtocols _ANSI_ARGS_(( TkWindow *winPtr )); void TkWmProtocolEventProc _ANSI_ARGS_(( TkWindow *winPtr, XEvent *eventPtr )); int WmProtocolCmd _ANSI_ARGS_(( Tcl_Interp *interp, char **CmdPtr, int argc, char **argv )); micropolis-activity/src/tk/tkplace.c0000664000076400007640000006566010724145723020044 0ustar simcitysimcity/* * tkPlace.c -- * * This file contains code to implement a simple geometry manager * for Tk based on absolute placement or "rubber-sheet" placement. * * Copyright 1992 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that this copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkPlace.c,v 1.6 92/06/10 08:59:28 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include "tkconfig.h" #include "tkint.h" /* * Border modes for relative placement: * * BM_INSIDE: relative distances computed using area inside * all borders of master window. * BM_OUTSIDE: relative distances computed using outside area * that includes all borders of master. * BM_IGNORE: border issues are ignored: place relative to * master's actual window size. */ typedef enum {BM_INSIDE, BM_OUTSIDE, BM_IGNORE} BorderMode; /* * For each window whose geometry is managed by the placer there is * a structure of the following type: */ typedef struct Slave { Tk_Window tkwin; /* Tk's token for window. */ struct Master *masterPtr; /* Pointer to information for window * relative to which tkwin is placed. * This isn't necessarily the logical * parent of tkwin. NULL means the * master was deleted or never assigned. */ struct Slave *nextPtr; /* Next in list of windows placed relative * to same master (NULL for end of list). */ /* * Geometry information for window; where there are both relative * and absolute values for the same attribute (e.g. x and relX) only * one of them is actually used, depending on flags. */ int x, y; /* X and Y pixel coordinates for tkwin. */ float relX, relY; /* X and Y coordinates relative to size of * master. */ int width, height; /* Absolute dimensions for tkwin. */ float relWidth, relHeight; /* Dimensions for tkwin relative to size of * master. */ Tk_Anchor anchor; /* Which point on tkwin is placed at the * given position. */ BorderMode borderMode; /* How to treat borders of master window. */ int flags; /* Various flags; see below for bit * definitions. */ } Slave; /* * Flag definitions for Slave structures: * * CHILD_REL_X - 1 means use relX field; 0 means use x. * CHILD_REL_Y - 1 means use relY field; 0 means use y; * CHILD_WIDTH - 1 means use width field; * CHILD_REL_WIDTH - 1 means use relWidth; if neither this nor * CHILD_WIDTH is 1, use window's requested * width. * CHILD_HEIGHT - 1 means use height field; * CHILD_REL_HEIGHT - 1 means use relHeight; if neither this nor * CHILD_HEIGHT is 1, use window's requested * height. */ #define CHILD_REL_X 1 #define CHILD_REL_Y 2 #define CHILD_WIDTH 4 #define CHILD_REL_WIDTH 8 #define CHILD_HEIGHT 0x10 #define CHILD_REL_HEIGHT 0x20 /* * For each master window that has a slave managed by the placer there * is a structure of the following form: */ typedef struct Master { Tk_Window tkwin; /* Tk's token for master window. */ struct Slave *slavePtr; /* First in linked list of slaves * placed relative to this master. */ int flags; /* See below for bit definitions. */ } Master; /* * Flag definitions for masters: * * PARENT_RECONFIG_PENDING - 1 means that a call to RecomputePlacement * is already pending via a Do_When_Idle handler. */ #define PARENT_RECONFIG_PENDING 1 /* * The hash tables below both use Tk_Window tokens as keys. They map * from Tk_Windows to Slave and Master structures for windows, if they * exist. */ static int initialized = 0; static Tcl_HashTable masterTable; static Tcl_HashTable slaveTable; /* * Forward declarations for procedures defined later in this file: */ static void SlaveStructureProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); static int ConfigureSlave _ANSI_ARGS_((Tcl_Interp *interp, Slave *slavePtr, int argc, char **argv)); static Slave * FindSlave _ANSI_ARGS_((Tk_Window tkwin)); static Master * FindMaster _ANSI_ARGS_((Tk_Window tkwin)); static void MasterStructureProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); static void PlaceRequestProc _ANSI_ARGS_((ClientData clientData, Tk_Window tkwin)); static void RecomputePlacement _ANSI_ARGS_((ClientData clientData)); static void UnlinkSlave _ANSI_ARGS_((Slave *slavePtr)); /* *-------------------------------------------------------------- * * Tk_PlaceCmd -- * * This procedure is invoked to process the "place" Tcl * commands. See the user documentation for details on * what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ int Tk_PlaceCmd(clientData, interp, argc, argv) ClientData clientData; /* Main window associated with interpreter. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { Tk_Window tkwin; Slave *slavePtr; Tcl_HashEntry *hPtr; int length; char c; /* * Initialize, if that hasn't been done yet. */ if (!initialized) { Tcl_InitHashTable(&masterTable, TCL_ONE_WORD_KEYS); Tcl_InitHashTable(&slaveTable, TCL_ONE_WORD_KEYS); initialized = 1; } if (argc < 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " option|pathName args", (char *) NULL); return TCL_ERROR; } c = argv[1][0]; length = strlen(argv[1]); /* * Handle special shortcut where window name is first argument. */ if (c == '.') { tkwin = Tk_NameToWindow(interp, argv[1], (Tk_Window) clientData); if (tkwin == NULL) { return TCL_ERROR; } slavePtr = FindSlave(tkwin); return ConfigureSlave(interp, slavePtr, argc-2, argv+2); } /* * Handle more general case of option followed by window name followed * by possible additional arguments. */ tkwin = Tk_NameToWindow(interp, argv[2], (Tk_Window) clientData); if (tkwin == NULL) { return TCL_ERROR; } if ((c == 'c') && (strncmp(argv[1], "configure", length) == 0)) { if (argc < 5) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " configure pathName option value ?option value ...?\"", (char *) NULL); return TCL_ERROR; } slavePtr = FindSlave(tkwin); return ConfigureSlave(interp, slavePtr, argc-3, argv+3); } else if ((c == 'd') && (strncmp(argv[1], "dependents", length) == 0)) { if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " dependents pathName\"", (char *) NULL); return TCL_ERROR; } hPtr = Tcl_FindHashEntry(&masterTable, (char *) tkwin); if (hPtr != NULL) { Master *masterPtr; masterPtr = (Master *) Tcl_GetHashValue(hPtr); for (slavePtr = masterPtr->slavePtr; slavePtr != NULL; slavePtr = slavePtr->nextPtr) { Tcl_AppendElement(interp, Tk_PathName(slavePtr->tkwin), 0); } } } else if ((c == 'f') && (strncmp(argv[1], "forget", length) == 0)) { if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " forget pathName\"", (char *) NULL); return TCL_ERROR; } hPtr = Tcl_FindHashEntry(&slaveTable, (char *) tkwin); if (hPtr == NULL) { return TCL_OK; } slavePtr = (Slave *) Tcl_GetHashValue(hPtr); UnlinkSlave(slavePtr); Tcl_DeleteHashEntry(hPtr); Tk_DeleteEventHandler(tkwin, StructureNotifyMask, SlaveStructureProc, (ClientData) slavePtr); Tk_ManageGeometry(tkwin, (Tk_GeometryProc *) NULL, (ClientData) NULL); Tk_UnmapWindow(tkwin); ckfree((char *) slavePtr); } else if ((c == 'i') && (strncmp(argv[1], "info", length) == 0)) { char buffer[50]; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " info pathName\"", (char *) NULL); return TCL_ERROR; } hPtr = Tcl_FindHashEntry(&slaveTable, (char *) tkwin); if (hPtr == NULL) { return TCL_OK; } slavePtr = (Slave *) Tcl_GetHashValue(hPtr); if (slavePtr->flags & CHILD_REL_X) { sprintf(buffer, "-relx %.4g", slavePtr->relX); } else { sprintf(buffer, "-x %d", slavePtr->x); } Tcl_AppendResult(interp, buffer, (char *) NULL); if (slavePtr->flags & CHILD_REL_Y) { sprintf(buffer, " -rely %.4g", slavePtr->relY); } else { sprintf(buffer, " -y %d", slavePtr->y); } Tcl_AppendResult(interp, buffer, (char *) NULL); if (slavePtr->flags & CHILD_REL_WIDTH) { sprintf(buffer, " -relwidth %.4g", slavePtr->relWidth); Tcl_AppendResult(interp, buffer, (char *) NULL); } else if (slavePtr->flags & CHILD_WIDTH) { sprintf(buffer, " -width %d", slavePtr->width); Tcl_AppendResult(interp, buffer, (char *) NULL); } if (slavePtr->flags & CHILD_REL_HEIGHT) { sprintf(buffer, " -relheight %.4g", slavePtr->relHeight); Tcl_AppendResult(interp, buffer, (char *) NULL); } else if (slavePtr->flags & CHILD_HEIGHT) { sprintf(buffer, " -height %d", slavePtr->height); Tcl_AppendResult(interp, buffer, (char *) NULL); } Tcl_AppendResult(interp, " -anchor ", Tk_NameOfAnchor(slavePtr->anchor), (char *) NULL); if (slavePtr->borderMode == BM_OUTSIDE) { Tcl_AppendResult(interp, " -bordermode outside", (char *) NULL); } else if (slavePtr->borderMode == BM_IGNORE) { Tcl_AppendResult(interp, " -bordermode ignore", (char *) NULL); } if ((slavePtr->masterPtr != NULL) && (slavePtr->masterPtr->tkwin != Tk_Parent(slavePtr->tkwin))) { Tcl_AppendResult(interp, " -in ", Tk_PathName(slavePtr->masterPtr->tkwin), (char *) NULL); } } else { Tcl_AppendResult(interp, "unknown or ambiguous option \"", argv[1], "\": must be configure, dependents, forget, or info", (char *) NULL); return TCL_ERROR; } return TCL_OK; } /* *---------------------------------------------------------------------- * * FindSlave -- * * Given a Tk_Window token, find the Slave structure corresponding * to that token (making a new one if necessary). * * Results: * None. * * Side effects: * A new Slave structure may be created. * *---------------------------------------------------------------------- */ static Slave * FindSlave(tkwin) Tk_Window tkwin; /* Token for desired slave. */ { Tcl_HashEntry *hPtr; register Slave *slavePtr; int new; hPtr = Tcl_CreateHashEntry(&slaveTable, (char *) tkwin, &new); if (new) { slavePtr = (Slave *) ckalloc(sizeof(Slave)); slavePtr->tkwin = tkwin; slavePtr->masterPtr = NULL; slavePtr->nextPtr = NULL; slavePtr->x = slavePtr->y = 0; slavePtr->relX = slavePtr->relY = 0.0; slavePtr->width = slavePtr->height = 0; slavePtr->relWidth = slavePtr->relHeight = 0.0; slavePtr->anchor = TK_ANCHOR_NW; slavePtr->borderMode = BM_INSIDE; slavePtr->flags = 0; Tcl_SetHashValue(hPtr, slavePtr); Tk_CreateEventHandler(tkwin, StructureNotifyMask, SlaveStructureProc, (ClientData) slavePtr); Tk_ManageGeometry(tkwin, PlaceRequestProc, (ClientData) slavePtr); } else { slavePtr = (Slave *) Tcl_GetHashValue(hPtr); } return slavePtr; } /* *---------------------------------------------------------------------- * * UnlinkSlave -- * * This procedure removes a slave window from the chain of slaves * in its master. * * Results: * None. * * Side effects: * The slave list of slavePtr's master changes. * *---------------------------------------------------------------------- */ static void UnlinkSlave(slavePtr) Slave *slavePtr; /* Slave structure to be unlinked. */ { register Master *masterPtr; register Slave *prevPtr; masterPtr = slavePtr->masterPtr; if (masterPtr == NULL) { return; } if (masterPtr->slavePtr == slavePtr) { masterPtr->slavePtr = slavePtr->nextPtr; } else { for (prevPtr = masterPtr->slavePtr; ; prevPtr = prevPtr->nextPtr) { if (prevPtr == NULL) { panic("UnlinkSlave couldn't find slave to unlink"); } if (prevPtr->nextPtr == slavePtr) { prevPtr->nextPtr = slavePtr->nextPtr; break; } } } slavePtr->masterPtr = NULL; } /* *---------------------------------------------------------------------- * * FindMaster -- * * Given a Tk_Window token, find the Master structure corresponding * to that token (making a new one if necessary). * * Results: * None. * * Side effects: * A new Master structure may be created. * *---------------------------------------------------------------------- */ static Master * FindMaster(tkwin) Tk_Window tkwin; /* Token for desired master. */ { Tcl_HashEntry *hPtr; register Master *masterPtr; int new; hPtr = Tcl_CreateHashEntry(&masterTable, (char *) tkwin, &new); if (new) { masterPtr = (Master *) ckalloc(sizeof(Master)); masterPtr->tkwin = tkwin; masterPtr->slavePtr = NULL; masterPtr->flags = 0; Tcl_SetHashValue(hPtr, masterPtr); Tk_CreateEventHandler(masterPtr->tkwin, StructureNotifyMask, MasterStructureProc, (ClientData) masterPtr); } else { masterPtr = (Master *) Tcl_GetHashValue(hPtr); } return masterPtr; } /* *---------------------------------------------------------------------- * * ConfigureSlave -- * * This procedure is called to process an argv/argc list to * reconfigure the placement of a window. * * Results: * A standard Tcl result. If an error occurs then a message is * left in interp->result. * * Side effects: * Information in slavePtr may change, and slavePtr's master is * scheduled for reconfiguration. * *---------------------------------------------------------------------- */ static int ConfigureSlave(interp, slavePtr, argc, argv) Tcl_Interp *interp; /* Used for error reporting. */ Slave *slavePtr; /* Pointer to current information * about slave. */ int argc; /* Number of config arguments. */ char **argv; /* String values for arguments. */ { register Master *masterPtr; int c, length, result; double d; result = TCL_OK; for ( ; argc > 0; argc -= 2, argv += 2) { if (argc < 2) { Tcl_AppendResult(interp, "extra option \"", argv[0], "\" (option with no value?)", (char *) NULL); result = TCL_ERROR; goto done; } length = strlen(argv[0]); c = argv[0][1]; if ((c == 'a') && (strncmp(argv[0], "-anchor", length) == 0)) { if (Tk_GetAnchor(interp, argv[1], &slavePtr->anchor) != TCL_OK) { result = TCL_ERROR; goto done; } } else if ((c == 'b') && (strncmp(argv[0], "-bordermode", length) == 0)) { c = argv[1][0]; length = strlen(argv[1]); if ((c == 'i') && (strncmp(argv[1], "ignore", length) == 0) && (length >= 2)) { slavePtr->borderMode = BM_IGNORE; } else if ((c == 'i') && (strncmp(argv[1], "inside", length) == 0) && (length >= 2)) { slavePtr->borderMode = BM_INSIDE; } else if ((c == 'o') && (strncmp(argv[1], "outside", length) == 0)) { slavePtr->borderMode = BM_OUTSIDE; } else { Tcl_AppendResult(interp, "bad border mode \"", argv[1], "\": must be ignore, inside, or outside", (char *) NULL); result = TCL_ERROR; goto done; } } else if ((c == 'h') && (strncmp(argv[0], "-height", length) == 0)) { if (argv[1][0] == 0) { slavePtr->flags &= ~(CHILD_REL_HEIGHT|CHILD_HEIGHT); } else { if (Tk_GetPixels(interp, slavePtr->tkwin, argv[1], &slavePtr->height) != TCL_OK) { result = TCL_ERROR; goto done; } slavePtr->flags &= ~CHILD_REL_HEIGHT; slavePtr->flags |= CHILD_HEIGHT; } } else if ((c == 'i') && (strncmp(argv[0], "-in", length) == 0)) { Tk_Window tkwin; Tk_Window ancestor; tkwin = Tk_NameToWindow(interp, argv[1], slavePtr->tkwin); if (tkwin == NULL) { result = TCL_ERROR; goto done; } /* * Make sure that the new master is either the logical parent * of the slave or a descendant of that window. */ for (ancestor = tkwin; ; ancestor = Tk_Parent(ancestor)) { if (ancestor == Tk_Parent(slavePtr->tkwin)) { break; } if (((Tk_FakeWin *) (ancestor))->flags & TK_TOP_LEVEL) { Tcl_AppendResult(interp, "can't place ", Tk_PathName(slavePtr->tkwin), " relative to ", Tk_PathName(tkwin), (char *) NULL); result = TCL_ERROR; goto done; } } UnlinkSlave(slavePtr); slavePtr->masterPtr = FindMaster(tkwin); slavePtr->nextPtr = slavePtr->masterPtr->slavePtr; slavePtr->masterPtr->slavePtr = slavePtr; } else if ((c == 'r') && (strncmp(argv[0], "-relheight", length) == 0) && (length >= 5)) { if (Tcl_GetDouble(interp, argv[1], &d) != TCL_OK) { result = TCL_ERROR; goto done; } slavePtr->relHeight = d; slavePtr->flags |= CHILD_REL_HEIGHT; slavePtr->flags &= ~CHILD_HEIGHT; } else if ((c == 'r') && (strncmp(argv[0], "-relwidth", length) == 0) && (length >= 5)) { if (Tcl_GetDouble(interp, argv[1], &d) != TCL_OK) { result = TCL_ERROR; goto done; } slavePtr->relWidth = d; slavePtr->flags |= CHILD_REL_WIDTH; slavePtr->flags &= ~CHILD_WIDTH; } else if ((c == 'r') && (strncmp(argv[0], "-relx", length) == 0) && (length >= 5)) { if (Tcl_GetDouble(interp, argv[1], &d) != TCL_OK) { result = TCL_ERROR; goto done; } slavePtr->relX = d; slavePtr->flags |= CHILD_REL_X; } else if ((c == 'r') && (strncmp(argv[0], "-rely", length) == 0) && (length >= 5)) { if (Tcl_GetDouble(interp, argv[1], &d) != TCL_OK) { result = TCL_ERROR; goto done; } slavePtr->relY = d; slavePtr->flags |= CHILD_REL_Y; } else if ((c == 'w') && (strncmp(argv[0], "-width", length) == 0)) { if (argv[1][0] == 0) { slavePtr->flags &= ~(CHILD_REL_WIDTH|CHILD_WIDTH); } else { if (Tk_GetPixels(interp, slavePtr->tkwin, argv[1], &slavePtr->width) != TCL_OK) { result = TCL_ERROR; goto done; } slavePtr->flags &= ~CHILD_REL_WIDTH; slavePtr->flags |= CHILD_WIDTH; } } else if ((c == 'x') && (strncmp(argv[0], "-x", length) == 0)) { if (Tk_GetPixels(interp, slavePtr->tkwin, argv[1], &slavePtr->x) != TCL_OK) { result = TCL_ERROR; goto done; } slavePtr->flags &= ~CHILD_REL_X; } else if ((c == 'y') && (strncmp(argv[0], "-y", length) == 0)) { if (Tk_GetPixels(interp, slavePtr->tkwin, argv[1], &slavePtr->y) != TCL_OK) { result = TCL_ERROR; goto done; } slavePtr->flags &= ~CHILD_REL_Y; } else { Tcl_AppendResult(interp, "unknown or ambiguous option \"", argv[0], "\": must be -anchor, -bordermode, -height, ", "-in, -relheight, -relwidth, -relx, -rely, -width, ", "-x, or -y", (char *) NULL); result = TCL_ERROR; goto done; } } /* * If there's no master specified for this slave, use its Tk_Parent. * Then arrange for a placement recalculation in the master. */ done: masterPtr = slavePtr->masterPtr; if (masterPtr == NULL) { masterPtr = FindMaster(Tk_Parent(slavePtr->tkwin)); slavePtr->masterPtr = masterPtr; slavePtr->nextPtr = masterPtr->slavePtr; masterPtr->slavePtr = slavePtr; } if (!(masterPtr->flags & PARENT_RECONFIG_PENDING)) { masterPtr->flags |= PARENT_RECONFIG_PENDING; Tk_DoWhenIdle(RecomputePlacement, (ClientData) masterPtr); } return result; } /* *---------------------------------------------------------------------- * * RecomputePlacement -- * * This procedure is called as a when-idle handler. It recomputes * the geometries of all the slaves of a given master. * * Results: * None. * * Side effects: * Windows may change size or shape. * *---------------------------------------------------------------------- */ static void RecomputePlacement(clientData) ClientData clientData; /* Pointer to Master record. */ { register Master *masterPtr = (Master *) clientData; register Slave *slavePtr; Tk_Window ancestor, realMaster; int x, y, width, height; int masterWidth, masterHeight, masterBW; masterPtr->flags &= ~PARENT_RECONFIG_PENDING; /* * Iterate over all the slaves for the master. Each slave's * geometry can be computed independently of the other slaves. */ for (slavePtr = masterPtr->slavePtr; slavePtr != NULL; slavePtr = slavePtr->nextPtr) { /* * Step 1: compute size and borderwidth of master, taking into * account desired border mode. */ masterBW = 0; masterWidth = Tk_Width(masterPtr->tkwin); masterHeight = Tk_Height(masterPtr->tkwin); if (slavePtr->borderMode == BM_INSIDE) { masterBW = Tk_InternalBorderWidth(masterPtr->tkwin); } else if (slavePtr->borderMode == BM_OUTSIDE) { masterBW = -Tk_Changes(masterPtr->tkwin)->border_width; } masterWidth -= 2*masterBW; masterHeight -= 2*masterBW; /* * Step 2: compute size of slave (outside dimensions including * border) and location of anchor point within master. */ x = slavePtr->x; if (slavePtr->flags & CHILD_REL_X) { x = (slavePtr->relX*masterWidth) + ((slavePtr->relX > 0) ? 0.5 : -0.5); } x += masterBW; y = slavePtr->y; if (slavePtr->flags & CHILD_REL_Y) { y = (slavePtr->relY*masterHeight) + ((slavePtr->relY > 0) ? 0.5 : -0.5); } y += masterBW; if (slavePtr->flags & CHILD_REL_WIDTH) { width = (slavePtr->relWidth*masterWidth) + 0.5; } else if (slavePtr->flags & CHILD_WIDTH) { width = slavePtr->width; } else { width = Tk_ReqWidth(slavePtr->tkwin) + 2*Tk_Changes(slavePtr->tkwin)->border_width; } if (slavePtr->flags & CHILD_REL_HEIGHT) { height = (slavePtr->relHeight*masterHeight) + 0.5; } else if (slavePtr->flags & CHILD_HEIGHT) { height = slavePtr->height; } else { height = Tk_ReqHeight(slavePtr->tkwin) + 2*Tk_Changes(slavePtr->tkwin)->border_width; } /* * Step 3: adjust the x and y positions so that the desired * anchor point on the slave appears at that position. Also * adjust for the border mode and master's border. */ switch (slavePtr->anchor) { case TK_ANCHOR_N: x -= width/2; break; case TK_ANCHOR_NE: x -= width; break; case TK_ANCHOR_E: x -= width; y -= height/2; break; case TK_ANCHOR_SE: x -= width; y -= height; break; case TK_ANCHOR_S: x -= width/2; y -= height; break; case TK_ANCHOR_SW: y -= height; break; case TK_ANCHOR_W: y -= height/2; break; case TK_ANCHOR_NW: break; case TK_ANCHOR_CENTER: x -= width/2; y -= height/2; break; } /* * Step 4: if masterPtr isn't actually the X master of slavePtr, * then translate the x and y coordinates back into the coordinate * system of masterPtr. */ for (ancestor = masterPtr->tkwin, realMaster = Tk_Parent(slavePtr->tkwin); ancestor != realMaster; ancestor = Tk_Parent(ancestor)) { x += Tk_X(ancestor) + Tk_Changes(ancestor)->border_width; y += Tk_Y(ancestor) + Tk_Changes(ancestor)->border_width; } /* * Step 5: adjust width and height again to reflect inside dimensions * of window rather than outside. Also make sure that the width and * height aren't zero. */ width -= 2*Tk_Changes(slavePtr->tkwin)->border_width; height -= 2*Tk_Changes(slavePtr->tkwin)->border_width; if (width <= 0) { width = 1; } if (height <= 0) { height = 1; } /* * Step 6: see if the window's size or location has changed; if * so then tell X to reconfigure it. */ if ((x != Tk_X(slavePtr->tkwin)) || (y != Tk_Y(slavePtr->tkwin)) || (width != Tk_Width(slavePtr->tkwin)) || (height != Tk_Height(slavePtr->tkwin))) { Tk_MoveResizeWindow(slavePtr->tkwin, x, y, (unsigned int) width, (unsigned int) height); } Tk_MapWindow(slavePtr->tkwin); } } /* *---------------------------------------------------------------------- * * MasterStructureProc -- * * This procedure is invoked by the Tk event handler when * StructureNotify events occur for a master window. * * Results: * None. * * Side effects: * Structures get cleaned up if the window was deleted. If the * window was resized then slave geometries get recomputed. * *---------------------------------------------------------------------- */ static void MasterStructureProc(clientData, eventPtr) ClientData clientData; /* Pointer to Master structure for window * referred to by eventPtr. */ XEvent *eventPtr; /* Describes what just happened. */ { register Master *masterPtr = (Master *) clientData; register Slave *slavePtr, *nextPtr; if (eventPtr->type == ConfigureNotify) { if ((masterPtr->slavePtr != NULL) && !(masterPtr->flags & PARENT_RECONFIG_PENDING)) { masterPtr->flags |= PARENT_RECONFIG_PENDING; Tk_DoWhenIdle(RecomputePlacement, (ClientData) masterPtr); } } else if (eventPtr->type == DestroyNotify) { for (slavePtr = masterPtr->slavePtr; slavePtr != NULL; slavePtr = nextPtr) { slavePtr->masterPtr = NULL; nextPtr = slavePtr->nextPtr; slavePtr->nextPtr = NULL; } Tcl_DeleteHashEntry(Tcl_FindHashEntry(&masterTable, (char *) masterPtr->tkwin)); if (masterPtr->flags & PARENT_RECONFIG_PENDING) { Tk_CancelIdleCall(RecomputePlacement, (ClientData) masterPtr); } masterPtr->tkwin = NULL; ckfree((char *) masterPtr); } } /* *---------------------------------------------------------------------- * * SlaveStructureProc -- * * This procedure is invoked by the Tk event handler when * StructureNotify events occur for a slave window. * * Results: * None. * * Side effects: * Structures get cleaned up if the window was deleted. * *---------------------------------------------------------------------- */ static void SlaveStructureProc(clientData, eventPtr) ClientData clientData; /* Pointer to Slave structure for window * referred to by eventPtr. */ XEvent *eventPtr; /* Describes what just happened. */ { register Slave *slavePtr = (Slave *) clientData; if (eventPtr->type == DestroyNotify) { UnlinkSlave(slavePtr); Tcl_DeleteHashEntry(Tcl_FindHashEntry(&slaveTable, (char *) slavePtr->tkwin)); ckfree((char *) slavePtr); } } /* *---------------------------------------------------------------------- * * PlaceRequestProc -- * * This procedure is invoked by Tk whenever a slave managed by us * changes its requested geometry. * * Results: * None. * * Side effects: * The window will get relayed out, if its requested size has * anything to do with its actual size. * *---------------------------------------------------------------------- */ /* ARGSUSED */ static void PlaceRequestProc(clientData, tkwin) ClientData clientData; /* Pointer to our record for slave. */ Tk_Window tkwin; /* Window that changed its desired * size. */ { Slave *slavePtr = (Slave *) clientData; Master *masterPtr; if (((slavePtr->flags & (CHILD_WIDTH|CHILD_REL_WIDTH)) != 0) && ((slavePtr->flags & (CHILD_HEIGHT|CHILD_REL_HEIGHT)) != 0)) { return; } masterPtr = slavePtr->masterPtr; if (masterPtr == NULL) { return; } if (!(masterPtr->flags & PARENT_RECONFIG_PENDING)) { masterPtr->flags |= PARENT_RECONFIG_PENDING; Tk_DoWhenIdle(RecomputePlacement, (ClientData) masterPtr); } } micropolis-activity/src/tk/tkpixmap.c0000664000076400007640000004730110724145723020246 0ustar simcitysimcity/* * tkPixmap.c -- * * This file maintains a database of read-only pixmaps for the Tk * toolkit. This allows pixmaps to be shared between widgets and * also avoids interactions with the X server. * * Copyright 1992 by Sven Delmas * * This source is based upon the file tkBitmap.c from: * * Copyright 1990-1992 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. * file: /user6/ouster/wish/RCS/tkBitmap.c,v 1.16 * 92/08/24 09:45:43 ouster Exp $ SPRITE (Berkeley); */ #if defined(USE_XPM3) #ifndef lint static char *AtFSid = "$Header: tkPixmap.c[1.1] Mon Sep 28 14:12:35 1992 garfield@cs.tu-berlin.de frozen $"; #endif /* not lint */ #include "tkconfig.h" #include "tk.h" /* * The includes below are for pre-defined bitmaps. */ #include "bitmaps/gray50" #include "bitmaps/gray25" /* * Include the xpm 3 defines for color pixmaps */ //#include "xpmtk.h" #include /* * One of the following data structures exists for each bitmap that is * currently in use. Each structure is indexed with both "idTable" and * "nameTable". */ typedef struct { Pixmap bitmap; /* X identifier for bitmap. None means this * bitmap was created by Tk_DefinePixmap * and it isn't currently in use. */ unsigned int width, height; /* Dimensions of bitmap. */ Display *display; /* Display for which bitmap is valid. */ int refCount; /* Number of active uses of bitmap. */ Tcl_HashEntry *hashPtr; /* Entry in nameTable for this structure * (needed when deleting). */ } TkBitmap; /* * Hash table to map from a textual description of a bitmap to the * TkBitmap record for the bitmap, and key structure used in that * hash table: */ static Tcl_HashTable nameTable; typedef struct { Tk_Uid name; /* Textual name for desired bitmap. */ Screen *screen; /* Screen for which bitmap will be used. */ } NameKey; /* * Hash table that maps from bitmap identifiers to the TkBitmap structure * for the pixmap. This table is indexed by Bitmap ids, and is used by * Tk_FreePixmap. */ static Tcl_HashTable idTable; /* * For each call to Tk_DefinePixmap one of the following structures is * created to hold information about the pixmap. */ typedef struct { char *source; /* Bits for bitmap. */ Pixmap pixmap; /* Pre-defined pixmap */ unsigned int width, height; /* Dimensions of bitmap. */ } PredefBitmap; /* * Hash table create by Tk_DefinePixmap to map from a name to a * collection of in-core data about a bitmap. The table is * indexed by the address of the data for the bitmap, and the entries * contain pointers to PredefBitmap structures. */ static Tcl_HashTable predefTable; /* * Hash table used by Tk_GetPixmapFromData to map from a collection * of in-core data about a bitmap to a Tk_Uid giving an automatically- * generated name for the bitmap: */ static Tcl_HashTable dataTable; typedef struct { char *source; /* Bitmap bits. */ unsigned int width, height; /* Dimensions of bitmap. */ } DataKey; static int initialized = 0; /* 0 means static structures haven't been * initialized yet. */ /* * Forward declarations for procedures defined in this file: */ static void PixmapInit _ANSI_ARGS_((Tk_Window tkwin)); /* *---------------------------------------------------------------------- * * Tk_GetPixmap -- * * Given a string describing a bitmap or pixmap, locate (or create * if necessary) a pixmap that fits the description. * * Results: * The return value is the X identifer for the desired pixmap, * unless string couldn't be parsed correctly. In this case, * None is returned and an error message is left in * interp->result. The caller should never modify the pixmap * that is returned, and should eventually call Tk_FreePixmap * when the pixmap is no longer needed. * * Side effects: * The pixmap is added to an internal database with a reference count. * For each call to this procedure, there should eventually be a call * to Tk_FreePixmap, so that the database can be cleaned up when pixmaps * aren't needed anymore. * *---------------------------------------------------------------------- */ Pixmap Tk_GetPixmap(interp, tkwin, string) Tcl_Interp *interp; /* Interpreter to use for error reporting. */ Tk_Window tkwin; /* Window in which pixmap will be used. */ Tk_Uid string; /* Description of pixmap. See manual entry * for details on legal syntax. */ { NameKey key; Tcl_HashEntry *nameHashPtr, *idHashPtr, *predefHashPtr; register TkBitmap *bitmapPtr; PredefBitmap *predefPtr; int new; Pixmap bitmap; Pixmap bitmap_shape; unsigned int width, height; int dummy2; XpmAttributes xpm_attributes; Display *dpy = Tk_Display(tkwin); if (!initialized) { PixmapInit(tkwin); } key.name = string; key.screen = Tk_Screen(tkwin); nameHashPtr = Tcl_CreateHashEntry(&nameTable, (char *) &key, &new); if (!new) { bitmapPtr = (TkBitmap *) Tcl_GetHashValue(nameHashPtr); bitmapPtr->refCount++; return bitmapPtr->bitmap; } /* * No suitable bitmap exists. Create a new bitmap from the * information contained in the string. If the string starts * with "@" then the rest of the string is a file name containing * the bitmap. Otherwise the string must refer to a bitmap * defined by a call to Tk_DefinePixmap. */ if (*string == '@') { string = Tcl_TildeSubst(interp, string + 1); if (string == NULL) { goto error; } if (XReadBitmapFile(dpy, RootWindowOfScreen(Tk_Screen(tkwin)), string, &width, &height, &bitmap_shape, &dummy2, &dummy2) != BitmapSuccess) { xpm_attributes.visual = Tk_DefaultVisual(Tk_Screen(tkwin)); xpm_attributes.colormap = Tk_DefaultColormap(Tk_Screen(tkwin)); xpm_attributes.depth = Tk_DefaultDepth(Tk_Screen(tkwin)); xpm_attributes.valuemask = XpmVisual | XpmColormap | XpmDepth; if (XpmReadFileToPixmap(dpy, RootWindowOfScreen(Tk_Screen(tkwin)), string, &bitmap, &bitmap_shape, &xpm_attributes) != BitmapSuccess) { Tcl_AppendResult(interp, "error reading bitmap file \"", string, "\"", (char *) NULL); goto error; } { width = xpm_attributes.width; height = xpm_attributes.height; XpmFreeAttributes(&xpm_attributes); } } else { bitmap = XCreatePixmap(dpy, RootWindowOfScreen(Tk_Screen(tkwin)), width, height, Tk_DefaultDepth(Tk_Screen(tkwin))); XCopyPlane(dpy, bitmap_shape, bitmap, Tk_DefaultGC(Tk_Screen(tkwin)), 0, 0, width, height, 0, 0, 1); } } else { /* first try for a display-specific version */ predefHashPtr = Tcl_FindHashEntry(&predefTable, (char *) &key); if (predefHashPtr == NULL) { /* try for a non-display specific version */ key.screen = (Screen*) NULL; predefHashPtr = Tcl_FindHashEntry(&predefTable, (char *) &key); if (predefHashPtr == NULL) { /* give up */ Tcl_AppendResult(interp, "pixmap \"", string, "\" not defined", (char *) NULL); goto error; } } predefPtr = (PredefBitmap *) Tcl_GetHashValue(predefHashPtr); width = predefPtr->width; height = predefPtr->height; if (predefPtr->source != NULL) { bitmap_shape = XCreateBitmapFromData(dpy, Tk_DefaultRootWindow(dpy), predefPtr->source, width, height); bitmap = XCreatePixmap(dpy, RootWindowOfScreen(Tk_Screen(tkwin)), width, height, Tk_DefaultDepth(Tk_Screen(tkwin))); XCopyPlane(dpy, bitmap_shape, bitmap, Tk_DefaultGC(Tk_Screen(tkwin)), 0, 0, width, height, 0, 0, 1); } else { if (predefPtr->pixmap != None) { bitmap = predefPtr->pixmap; } else { bitmap = XCreatePixmap(dpy, RootWindowOfScreen(Tk_Screen(tkwin)), width, height, Tk_DefaultDepth(Tk_Screen(tkwin))); } } } /* * Add information about this bitmap to our database. */ bitmapPtr = (TkBitmap *) ckalloc(sizeof(TkBitmap)); bitmapPtr->bitmap = bitmap; bitmapPtr->width = width; bitmapPtr->height = height; bitmapPtr->display = dpy; bitmapPtr->refCount = 1; bitmapPtr->hashPtr = nameHashPtr; idHashPtr = Tcl_CreateHashEntry(&idTable, (char *) bitmapPtr->bitmap, &new); if (!new) { /* deh patched to support multiple displays */ /* panic("pixmap already registered in Tk_GetPixmap"); */ bitmapPtr->refCount = 1000; } Tcl_SetHashValue(nameHashPtr, bitmapPtr); Tcl_SetHashValue(idHashPtr, bitmapPtr); return bitmapPtr->bitmap; error: Tcl_DeleteHashEntry(nameHashPtr); return None; } /* *---------------------------------------------------------------------- * * Tk_DefinePixmap -- * * This procedure associates a textual name with a binary pixmap * description, so that the name may be used to refer to the * pixmap in future calls to Tk_GetPixmap. The pixmap can * be pre-created by the user, or can be created later * by Tk_GetPixmap(). Since pixmaps are display-specific, * a user supplied pixmap will be associated with tkwin's display. * If pixmap is given as None, then a new pixmap will be created * by Tk_GetPixmap for each unique display. * * Results: * A standard Tcl result. If an error occurs then TCL_ERROR is * returned and a message is left in interp->result. * * Side effects: * "Name" is entered into the pixmap table and may be used from * here on to refer to the given pixmap. * *---------------------------------------------------------------------- */ int Tk_DefinePixmap(interp, name, tkwin, pixmap, source, width, height) Tcl_Interp *interp; /* Interpreter to use for error reporting. */ Tk_Uid name; /* Name to use for bitmap. Must not already * be defined as a bitmap. */ Tk_Window tkwin; /* any window on screen where pixmap lives */ Pixmap pixmap; /* pixmap to associate with name, * or None to create a new pixmap */ char *source; /* Address of bits for bitmap. */ unsigned int width; /* Width of bitmap. */ unsigned int height; /* Height of bitmap. */ { int new; Tcl_HashEntry *predefHashPtr; PredefBitmap *predefPtr; NameKey key; if (!initialized) { PixmapInit(tkwin); } key.name = name; key.screen = (pixmap != None) ? Tk_Screen(tkwin) : (Screen *)NULL; predefHashPtr = Tcl_CreateHashEntry(&predefTable, (char *) &key, &new); if (!new) { Tcl_AppendResult(interp, "bitmap \"", name, "\" is already defined", (char *) NULL); return TCL_ERROR; } predefPtr = (PredefBitmap *) malloc(sizeof(PredefBitmap)); predefPtr->source = source; predefPtr->pixmap = pixmap; predefPtr->width = width; predefPtr->height = height; Tcl_SetHashValue(predefHashPtr, predefPtr); return TCL_OK; } /* *-------------------------------------------------------------- * * Tk_NameOfPixmap -- * * Given a pixmap, return a textual string identifying the * pixmap. * * Results: * The return value is the string name associated with pixmap. * * Side effects: * None. * *-------------------------------------------------------------- */ Tk_Uid Tk_NameOfPixmap(bitmap) Pixmap bitmap; /* Bitmap whose name is wanted. */ { Tcl_HashEntry *idHashPtr; TkBitmap *bitmapPtr; if (!initialized) { unknown: panic("Tk_NameOfPixmap received unknown pixmap argument"); } idHashPtr = Tcl_FindHashEntry(&idTable, (char *) bitmap); if (idHashPtr == NULL) { goto unknown; } bitmapPtr = (TkBitmap *) Tcl_GetHashValue(idHashPtr); if (bitmapPtr->hashPtr == NULL) { /* the bitmap has been un-defined */ return Tk_GetUid("UndefinedBitmap"); } return ((NameKey *) bitmapPtr->hashPtr->key.words)->name; } /* *-------------------------------------------------------------- * * Tk_SizeOfPixmap -- * * Given a pixmap managed by this module, returns the width * and height of the pixmap.. * * Results: * The words at *widthPtr and *heightPtr are filled in with * the dimenstions of pixmap. * * Side effects: * If pixmap isn't managed by this module then the procedure * panics.. * *-------------------------------------------------------------- */ void Tk_SizeOfPixmap(bitmap, widthPtr, heightPtr) Pixmap bitmap; /* Bitmap whose size is wanted. */ unsigned int *widthPtr; /* Store bitmap width here. */ unsigned int *heightPtr; /* Store bitmap height here. */ { Tcl_HashEntry *idHashPtr; TkBitmap *bitmapPtr; if (!initialized) { unknownBitmap: panic("Tk_SizeOfPixmap received unknown pixmap argument"); } idHashPtr = Tcl_FindHashEntry(&idTable, (char *) bitmap); if (idHashPtr == NULL) { goto unknownBitmap; } bitmapPtr = (TkBitmap *) Tcl_GetHashValue(idHashPtr); *widthPtr = bitmapPtr->width; *heightPtr = bitmapPtr->height; } /* *---------------------------------------------------------------------- * * Tk_FreePixmap -- * * This procedure is called to release a pixmap allocated by * Tk_GetPixmap. * * Results: * None. * * Side effects: * The reference count associated with bitmap is decremented, and * it is officially deallocated if no-one is using it anymore. * *---------------------------------------------------------------------- */ void Tk_FreePixmap(bitmap) Pixmap bitmap; /* Bitmap to be released. */ { Tcl_HashEntry *idHashPtr; register TkBitmap *bitmapPtr; if (!initialized) { panic("Tk_FreePixmap called before Tk_GetPixmap"); } idHashPtr = Tcl_FindHashEntry(&idTable, (char *) bitmap); if (idHashPtr == NULL) { panic("Tk_FreePixmap received unknown pixmap argument"); } bitmapPtr = (TkBitmap *) Tcl_GetHashValue(idHashPtr); bitmapPtr->refCount--; if (bitmapPtr->refCount == 0) { XFreePixmap(bitmapPtr->display, bitmapPtr->bitmap); Tcl_DeleteHashEntry(idHashPtr); if (bitmapPtr->hashPtr != NULL) { /* If hashPtr is NULL, the bitmap has been undefined, * and already removed from the name table */ Tcl_DeleteHashEntry(bitmapPtr->hashPtr); } ckfree((char *) bitmapPtr); } } /* *---------------------------------------------------------------------- * * Tk_GetPixmapFromData -- * * Given a description of the bits for a pixmap, make a pixmap that * has the given properties. * * Results: * The return value is the X identifer for the desired pixmap, * unless it couldn't be created properly. In this case, None is * returned and an error message is left in interp->result. The * caller should never modify the bitmap that is returned, and * should eventually call Tk_FreePixmap when the pixmap is no * longer needed. * * Side effects: * The pixmap is added to an internal database with a reference count. * For each call to this procedure, there should eventually be a call * to Tk_FreePixmap, so that the database can be cleaned up when pixmaps * aren't needed anymore. * *---------------------------------------------------------------------- */ /* ARGSUSED */ Pixmap Tk_GetPixmapFromData(interp, tkwin, source, width, height) Tcl_Interp *interp; /* Interpreter to use for error reporting. */ Tk_Window tkwin; /* Window in which bitmap will be used. */ char *source; /* Bitmap data for bitmap shape. */ unsigned int width, height; /* Dimensions of bitmap. */ { DataKey key; Tcl_HashEntry *dataHashPtr; Tk_Uid name = NULL; /* Initialization need only to prevent * compiler warning. */ int new; static autoNumber = 0; char string[20]; if (!initialized) { PixmapInit(tkwin); } key.source = source; key.width = width; key.height = height; dataHashPtr = Tcl_CreateHashEntry(&dataTable, (char *) &key, &new); if (!new) { name = (Tk_Uid) Tcl_GetHashValue(dataHashPtr); } else { autoNumber++; sprintf(string, "_tk%d", autoNumber); name = Tk_GetUid(string); Tcl_SetHashValue(dataHashPtr, name); if (Tk_DefinePixmap(interp, name, tkwin, None, source, width, height) != TCL_OK) { Tcl_DeleteHashEntry(dataHashPtr); return TCL_ERROR; } } return Tk_GetPixmap(interp, tkwin, name); } /* *---------------------------------------------------------------------- * * PixmapInit -- * * Initialize the structures used for pixmap management. * * Results: * None. * * Side effects: * Read the code. * *---------------------------------------------------------------------- */ static void PixmapInit(tkwin) Tk_Window tkwin; /* any window on screen where pixmap lives */ { Tcl_Interp *dummy; dummy = Tcl_CreateInterp(); initialized = 1; Tcl_InitHashTable(&nameTable, sizeof(NameKey)/sizeof(int)); Tcl_InitHashTable(&dataTable, sizeof(DataKey)/sizeof(int)); Tcl_InitHashTable(&predefTable, sizeof(NameKey)/sizeof(int)); Tcl_InitHashTable(&idTable, TCL_ONE_WORD_KEYS); Tk_DefinePixmap(dummy, Tk_GetUid("gray50"), tkwin, None, (char *)gray50_bits, gray50_width, gray50_height); Tk_DefinePixmap(dummy, Tk_GetUid("gray25"), tkwin, None, (char *)gray25_bits, gray25_width, gray25_height); Tcl_DeleteInterp(dummy); } /* *---------------------------------------------------------------------- * * Tk_UndefinePixmap -- * * This procedure removes any association "name" with * a bitmap or pixmap. This can be used to undefine * names defined by either Tk_DefinePixmap or Tk_DefinePixmap. * If tkwin is NULL, only display-independent pixmaps will * be removed, otherwise both display-independent and * the pixmap associated with tkwin will be undefined. * * Results: * A standard Tcl result. If an error occurs then TCL_ERROR is * returned and a message is left in interp->result. * * Side effects: * "Name" is removed from the predef table. * *---------------------------------------------------------------------- */ int Tk_UndefinePixmap(interp, name, tkwin) Tcl_Interp *interp; /* Interpreter to use for error reporting. */ Tk_Uid name; /* Name of bitmap/pixmap to undefine */ Tk_Window tkwin; /* any window on screen where pixmap lives */ { NameKey key; Tcl_HashEntry *predefHashPtr, *nameHashPtr; TkBitmap *bitmapPtr; int cnt = 0; if (!initialized) { PixmapInit(tkwin); } key.name = name; key.screen = (Screen *) NULL; predefHashPtr = Tcl_FindHashEntry(&predefTable, (char*)&key); if (predefHashPtr != NULL) { ++cnt; Tcl_DeleteHashEntry(predefHashPtr); } key.screen = Tk_Screen(tkwin); predefHashPtr = Tcl_FindHashEntry(&predefTable, (char*)&key); if (predefHashPtr != NULL) { ++cnt; Tcl_DeleteHashEntry(predefHashPtr); } if (cnt == 0) { Tcl_AppendResult(interp, "pixmap \"", name, "\" doesn't exist", (char *) NULL); return TCL_ERROR; } /* * Remove it from the name table if it is there (it might not * have been created yet, it which case we wont find it). We * delete it from the name table and mark the hashPtr as NULL * so that we know it has been deleted. The pixmap still exists, * and well later be freed and removed from idTable by Tk_FreeBitmap(). */ nameHashPtr = Tcl_FindHashEntry(&nameTable, (char *) &key); if (nameHashPtr != NULL) { bitmapPtr = (TkBitmap *) Tcl_GetHashValue(nameHashPtr); /* assert(nameHashPtr == bitmapPtr->hashPtr); */ /* assert(bitmapPtr->refCount > 0); */ bitmapPtr->hashPtr = (Tcl_HashEntry*) NULL; Tcl_DeleteHashEntry(nameHashPtr); } return TCL_OK; } #endif micropolis-activity/src/tk/tkselect.c0000664000076400007640000015340410724145723020231 0ustar simcitysimcity/* * tkSelect.c -- * * This file manages the selection for the Tk toolkit, * translating between the standard X ICCCM conventions * and Tcl commands. * * Copyright 1990 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkSelect.c,v 1.27 92/08/10 15:03:03 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tkconfig.h" #include "tkint.h" /* * When the selection is being retrieved, one of the following * structures is present on a list of pending selection retrievals. * The structure is used to communicate between the background * procedure that requests the selection and the foreground * event handler that processes the events in which the selection * is returned. There is a list of such structures so that there * can be multiple simultaneous selection retrievals (e.g. on * different displays). */ typedef struct RetrievalInfo { Tcl_Interp *interp; /* Interpreter for error reporting. */ TkWindow *winPtr; /* Window used as requestor for * selection. */ Atom property; /* Property where selection will appear. */ Atom target; /* Desired form for selection. */ int (*proc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, char *portion)); /* Procedure to call to handle pieces * of selection. */ ClientData clientData; /* Argument for proc. */ int result; /* Initially -1. Set to a Tcl * return value once the selection * has been retrieved. */ Tk_TimerToken timeout; /* Token for current timeout procedure. */ int idleTime; /* Number of seconds that have gone by * without hearing anything from the * selection owner. */ struct RetrievalInfo *nextPtr; /* Next in list of all pending * selection retrievals. NULL means * end of list. */ } RetrievalInfo; static RetrievalInfo *pendingRetrievals = NULL; /* List of all retrievals currently * being waited for. */ /* * When "selection get" is being used to retrieve the selection, * the following data structure is used for communication between * Tk_SelectionCmd and SelGetProc. Its purpose is to keep track * of the selection contents, which are gradually assembled in a * string. */ typedef struct { char *string; /* Contents of selection are * here. This space is malloc-ed. */ int bytesAvl; /* Total number of bytes available * at string. */ int bytesUsed; /* Bytes currently in use in string, * not including the terminating * NULL. */ } GetInfo; /* * When handling INCR-style selection retrievals, the selection owner * uses the following data structure to communicate between the * ConvertSelection procedure and TkSelPropProc. */ typedef struct IncrInfo { TkWindow *winPtr; /* Window that owns selection. */ Atom *multAtoms; /* Information about conversions to * perform: one or more pairs of * (target, property). This either * points to a retrieved property (for * MULTIPLE retrievals) or to a static * array. */ unsigned long numConversions; /* Number of entries in offsets (same as * # of pairs in multAtoms). */ int *offsets; /* One entry for each pair in * multAtoms; -1 means all data has * been transferred for this * conversion. -2 means only the * final zero-length transfer still * has to be done. Otherwise it is the * offset of the next chunk of data * to transfer. This array is malloc-ed. */ int numIncrs; /* Number of entries in offsets that * aren't -1 (i.e. # of INCR-mode transfers * not yet completed). */ Tk_TimerToken timeout; /* Token for timer procedure. */ int idleTime; /* Number of seconds since we heard * anything from the selection * requestor. */ Window reqWindow; /* Requestor's window id. */ Time time; /* Timestamp corresponding to * selection at beginning of request; * used to abort transfer if selection * changes. */ struct IncrInfo *nextPtr; /* Next in list of all INCR-style * retrievals currently pending. */ } IncrInfo; static IncrInfo *pendingIncrs = NULL; /* List of all IncrInfo structures * currently active. */ /* * When a selection handler is set up by invoking "selection handle", * one of the following data structures is set up to hold information * about the command to invoke and its interpreter. */ typedef struct { Tcl_Interp *interp; /* Interpreter in which to invoke command. */ int cmdLength; /* # of non-NULL bytes in command. */ char command[4]; /* Command to invoke. Actual space is * allocated as large as necessary. This * must be the last entry in the structure. */ } CommandInfo; /* * Chunk size for retrieving selection. It's defined both in * words and in bytes; the word size is used to allocate * buffer space that's guaranteed to be word-aligned and that * has an extra character for the terminating NULL. */ #define TK_SEL_BYTES_AT_ONCE 4000 #define TK_SEL_WORDS_AT_ONCE 1001 /* * Largest property that we'll accept when sending or receiving the * selection: */ #define MAX_PROP_WORDS 100000 /* * Forward declarations for procedures defined in this file: */ static void ConvertSelection _ANSI_ARGS_((TkWindow *winPtr, XSelectionRequestEvent *eventPtr)); static int DefaultSelection _ANSI_ARGS_((TkWindow *winPtr, Atom target, char *buffer, int maxBytes, Atom *typePtr)); static int HandleTclCommand _ANSI_ARGS_((ClientData clientData, int offset, char *buffer, int maxBytes)); static void IncrTimeoutProc _ANSI_ARGS_((ClientData clientData)); static char * SelCvtFromX _ANSI_ARGS_((long *propPtr, int numValues, Atom type, Tk_Window tkwin)); static long * SelCvtToX _ANSI_ARGS_((char *string, Atom type, Tk_Window tkwin, int *numLongsPtr)); static int SelGetProc _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, char *portion)); static void SelInit _ANSI_ARGS_((Tk_Window tkwin)); static void SelRcvIncrProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); static void SelTimeoutProc _ANSI_ARGS_((ClientData clientData)); /* *-------------------------------------------------------------- * * Tk_CreateSelHandler -- * * This procedure is called to register a procedure * as the handler for selection requests of a particular * target type on a particular window. * * Results: * None. * * Side effects: * In the future, whenever the selection is in tkwin's * window and someone requests the selection in the * form given by target, proc will be invoked to provide * part or all of the selection in the given form. If * there was already a handler declared for the given * window and target type, then it is replaced. Proc * should have the following form: * * int * proc(clientData, offset, buffer, maxBytes) * ClientData clientData; * int offset; * char *buffer; * int maxBytes; * { * } * * The clientData argument to proc will be the same as * the clientData argument to this procedure. The offset * argument indicates which portion of the selection to * return: skip the first offset bytes. Buffer is a * pointer to an area in which to place the converted * selection, and maxBytes gives the number of bytes * available at buffer. Proc should place the selection * in buffer as a string, and return a count of the number * of bytes of selection actually placed in buffer (not * including the terminating NULL character). If the * return value equals maxBytes, this is a sign that there * is probably still more selection information available. * *-------------------------------------------------------------- */ void Tk_CreateSelHandler(tkwin, target, proc, clientData, format) Tk_Window tkwin; /* Token for window. */ Atom target; /* The kind of selection conversions * that can be handled by proc, * e.g. TARGETS or XA_STRING. */ Tk_SelectionProc *proc; /* Procedure to invoke to convert * selection to type "target". */ ClientData clientData; /* Value to pass to proc. */ Atom format; /* Format in which the selection * information should be returned to * the requestor. XA_STRING is best by * far, but anything listed in the ICCCM * will be tolerated (blech). */ { register TkSelHandler *selPtr; TkWindow *winPtr = (TkWindow *) tkwin; if (winPtr->dispPtr->multipleAtom == None) { SelInit(tkwin); } /* * See if there's already a handler for this target on * this window. If so, re-use it. If not, create a new one. */ for (selPtr = winPtr->selHandlerList; ; selPtr = selPtr->nextPtr) { if (selPtr == NULL) { selPtr = (TkSelHandler *) ckalloc(sizeof(TkSelHandler)); selPtr->nextPtr = winPtr->selHandlerList; winPtr->selHandlerList = selPtr; break; } if (selPtr->target == target) { /* * Special case: when replacing handler created by * "selection handle" free up memory. Should there be a * callback to allow other clients to do this too? */ if (selPtr->proc == HandleTclCommand) { ckfree((char *) selPtr->clientData); } break; } } selPtr->target = target; selPtr->format = format; selPtr->proc = proc; selPtr->clientData = clientData; if (format == XA_STRING) { selPtr->size = 8; } else { selPtr->size = 32; } } /* *-------------------------------------------------------------- * * Tk_OwnSelection -- * * Arrange for tkwin to become the selection owner. * * Results: * None. * * Side effects: * From now on, requests for the selection will be * directed to procedures associated with tkwin (they * must have been declared with calls to Tk_CreateSelHandler). * When the selection is lost by this window, proc will * be invoked (see the manual entry for details). * *-------------------------------------------------------------- */ void Tk_OwnSelection(tkwin, proc, clientData) Tk_Window tkwin; /* Window to become new selection * owner. */ Tk_LostSelProc *proc; /* Procedure to call when selection * is taken away from tkwin. */ ClientData clientData; /* Arbitrary one-word argument to * pass to proc. */ { register TkWindow *winPtr = (TkWindow *) tkwin; TkDisplay *dispPtr = winPtr->dispPtr; if (dispPtr->multipleAtom == None) { SelInit(tkwin); } winPtr->selClearProc = proc; winPtr->selClearData = clientData; if (dispPtr->selectionOwner != tkwin) { TkWindow *ownerPtr = (TkWindow *) dispPtr->selectionOwner; if ((ownerPtr != NULL) && (ownerPtr->selClearProc != NULL)) { (*ownerPtr->selClearProc)(ownerPtr->selClearData); ownerPtr->selClearProc = NULL; } } dispPtr->selectionOwner = tkwin; dispPtr->selectionSerial = NextRequest(winPtr->display); dispPtr->selectionTime = TkCurrentTime(dispPtr); XSetSelectionOwner(winPtr->display, XA_PRIMARY, winPtr->window, dispPtr->selectionTime); } /* *-------------------------------------------------------------- * * Tk_GetSelection -- * * Retrieve the selection and pass it off (in pieces, * possibly) to a given procedure. * * Results: * The return value is a standard Tcl return value. * If an error occurs (such as no selection exists) * then an error message is left in interp->result. * * Side effects: * The standard X11 protocols are used to retrieve the * selection. When it arrives, it is passed to proc. If * the selection is very large, it will be passed to proc * in several pieces. Proc should have the following * structure: * * int * proc(clientData, interp, portion) * ClientData clientData; * Tcl_Interp *interp; * char *portion; * { * } * * The interp and clientData arguments to proc will be the * same as the corresponding arguments to Tk_GetSelection. * The portion argument points to a character string * containing part of the selection, and numBytes indicates * the length of the portion, not including the terminating * NULL character. If the selection arrives in several pieces, * the "portion" arguments in separate calls will contain * successive parts of the selection. Proc should normally * return TCL_OK. If it detects an error then it should return * TCL_ERROR and leave an error message in interp->result; the * remainder of the selection retrieval will be aborted. * *-------------------------------------------------------------- */ int Tk_GetSelection(interp, tkwin, target, proc, clientData) Tcl_Interp *interp; /* Interpreter to use for reporting * errors. */ Tk_Window tkwin; /* Window on whose behalf to retrieve * the selection (determines display * from which to retrieve). */ Atom target; /* Desired form in which selection * is to be returned. */ Tk_GetSelProc *proc; /* Procedure to call to process the * selection, once it has been retrieved. */ ClientData clientData; /* Arbitrary value to pass to proc. */ { RetrievalInfo retr; TkWindow *winPtr = (TkWindow *) tkwin; TkDisplay *dispPtr = winPtr->dispPtr; if (dispPtr->multipleAtom == None) { SelInit(tkwin); } /* * If the selection is owned by a window managed by this * process, then call the retrieval procedure directly, * rather than going through the X server (it's dangerous * to go through the X server in this case because it could * result in deadlock if an INCR-style selection results). */ if (dispPtr->selectionOwner != NULL) { register TkSelHandler *selPtr; int offset, result, count; char buffer[TK_SEL_BYTES_AT_ONCE+1]; Time time; /* * Make sure that the selection predates the request * time. */ time = TkCurrentTime(dispPtr); if ((time < dispPtr->selectionTime) && (time != CurrentTime) && (dispPtr->selectionTime != CurrentTime)) { interp->result = "selection changed before it could be retrieved"; return TCL_ERROR; } for (selPtr = ((TkWindow *) dispPtr->selectionOwner)->selHandlerList; ; selPtr = selPtr->nextPtr) { if (selPtr == NULL) { Atom type; count = DefaultSelection((TkWindow *) dispPtr->selectionOwner, target, buffer, TK_SEL_BYTES_AT_ONCE, &type); if (count > TK_SEL_BYTES_AT_ONCE) { panic("selection handler returned too many bytes"); } if (count < 0) { cantget: Tcl_AppendResult(interp, "selection doesn't exist", " or form \"", Tk_GetAtomName(tkwin, target), "\" not defined", (char *) NULL); return TCL_ERROR; } buffer[count] = 0; return (*proc)(clientData, interp, buffer); } if (selPtr->target == target) { break; } } offset = 0; while (1) { count = (*selPtr->proc)(selPtr->clientData, offset, buffer, TK_SEL_BYTES_AT_ONCE); if (count < 0) { goto cantget; } if (count > TK_SEL_BYTES_AT_ONCE) { panic("selection handler returned too many bytes"); } buffer[count] = '\0'; result = (*proc)(clientData, interp, buffer); if (result != TCL_OK) { return result; } if (count < TK_SEL_BYTES_AT_ONCE) { return TCL_OK; } offset += count; } } /* * The selection is owned by some other process. To * retrieve it, first record information about the retrieval * in progress. Also, try to use a non-top-level window * as the requestor (property changes on this window may * be monitored by a window manager, which will waste time). */ retr.interp = interp; if ((winPtr->flags & TK_TOP_LEVEL) && (winPtr->childList != NULL)) { winPtr = winPtr->childList; } retr.winPtr = winPtr; retr.property = XA_PRIMARY; retr.target = target; retr.proc = proc; retr.clientData = clientData; retr.result = -1; retr.idleTime = 0; retr.nextPtr = pendingRetrievals; pendingRetrievals = &retr; /* * Initiate the request for the selection. */ XConvertSelection(winPtr->display, XA_PRIMARY, target, retr.property, winPtr->window, TkCurrentTime(dispPtr)); /* * Enter a loop processing X events until the selection * has been retrieved and processed. If no response is * received within a few seconds, then timeout. */ retr.timeout = Tk_CreateTimerHandler(1000, SelTimeoutProc, (ClientData) &retr); while (retr.result == -1) { Tk_DoOneEvent(0); } Tk_DeleteTimerHandler(retr.timeout); /* * Unregister the information about the selection retrieval * in progress. */ if (pendingRetrievals == &retr) { pendingRetrievals = retr.nextPtr; } else { RetrievalInfo *retrPtr; for (retrPtr = pendingRetrievals; retrPtr != NULL; retrPtr = retrPtr->nextPtr) { if (retrPtr->nextPtr == &retr) { retrPtr->nextPtr = retr.nextPtr; break; } } } return retr.result; } /* *-------------------------------------------------------------- * * Tk_SelectionCmd -- * * This procedure is invoked to process the "selection" Tcl * command. See the user documentation for details on what * it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ int Tk_SelectionCmd(clientData, interp, argc, argv) ClientData clientData; /* Main window associated with * interpreter. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { Tk_Window tkwin = (Tk_Window) clientData; int length; char *cmd = argv[0]; char c; if (argc < 2) { sprintf(interp->result, "wrong # args: should be \"%.50s [-window win] option ?arg arg ...?\"", cmd); return TCL_ERROR; } argc--; argv++; c = argv[0][0]; length = strlen(argv[0]); if ((c == '-') && (strncmp(argv[0], "-window", length) == 0)) { if ((argc < 2) || ((tkwin = Tk_NameToWindow(interp, argv[1], tkwin)) == NULL)) { sprintf(interp->result, "bad arg to %s -window", cmd); return TCL_ERROR; } argc -= 2; argv += 2; if (argc == 0) { sprintf(interp->result, "not enough args to %s", cmd); return TCL_ERROR; } c = argv[0][0]; length = strlen(argv[0]); } if ((c == 'g') && (strncmp(argv[0], "get", length) == 0)) { Atom target; GetInfo getInfo; int result; argc--; argv++; if (argc > 1) { sprintf(interp->result, "too may args: should be \"%.50s get ?type?\"", cmd); return TCL_ERROR; } if (argc == 1) { target = Tk_InternAtom(tkwin, argv[0]); } else { target = XA_STRING; } getInfo.string = (char *) ckalloc(100); getInfo.bytesAvl = 100; getInfo.bytesUsed = 0; result = Tk_GetSelection(interp, tkwin, target, SelGetProc, (ClientData) &getInfo); if (result == TCL_OK) { Tcl_SetResult(interp, getInfo.string, TCL_DYNAMIC); } else { ckfree(getInfo.string); } return result; } else if ((c == 'h') && (strncmp(argv[0], "handle", length) == 0)) { Tk_Window window; Atom target, format; register CommandInfo *cmdInfoPtr; int cmdLength; argc--; argv++; if ((argc < 2) || (argc > 4)) { Tcl_AppendResult(interp, "wrong # args: should be \"", cmd, " handle window command ?type? ?format?\"", (char *) NULL); return TCL_ERROR; } window = Tk_NameToWindow(interp, argv[0], tkwin); if (window == NULL) { return TCL_ERROR; } if (argc > 2) { target = Tk_InternAtom(window, argv[2]); } else { target = XA_STRING; } if (argc > 3) { format = Tk_InternAtom(window, argv[3]); } else { format = XA_STRING; } cmdLength = strlen(argv[1]); cmdInfoPtr = (CommandInfo *) ckalloc((unsigned) (sizeof(CommandInfo) + cmdLength)); cmdInfoPtr->interp = interp; cmdInfoPtr->cmdLength = cmdLength; strcpy(cmdInfoPtr->command, argv[1]); Tk_CreateSelHandler(window, target, HandleTclCommand, (ClientData) cmdInfoPtr, format); return TCL_OK; } else { sprintf(interp->result, "bad option to \"%.50s\": must be get or handle", cmd); return TCL_ERROR; } } /* *---------------------------------------------------------------------- * * TkSelDeadWindow -- * * This procedure is invoked just before a TkWindow is deleted. * It performs selection-related cleanup. * * Results: * None. * * Side effects: * Frees up memory associated with the selection. * *---------------------------------------------------------------------- */ void TkSelDeadWindow(winPtr) register TkWindow *winPtr; /* Window that's being deleted. */ { register TkSelHandler *selPtr; while (1) { selPtr = winPtr->selHandlerList; if (selPtr == NULL) { break; } winPtr->selHandlerList = selPtr->nextPtr; ckfree((char *) selPtr); } winPtr->selClearProc = NULL; if (winPtr->dispPtr->selectionOwner == (Tk_Window) winPtr) { winPtr->dispPtr->selectionOwner = NULL; } } /* *---------------------------------------------------------------------- * * SelInit -- * * Initialize selection-related information for a display. * * Results: * None. * * Side effects: * . * *---------------------------------------------------------------------- */ static void SelInit(tkwin) Tk_Window tkwin; /* Window token (used to find * display to initialize). */ { register TkDisplay *dispPtr = ((TkWindow *) tkwin)->dispPtr; /* * Fetch commonly-used atoms. */ dispPtr->multipleAtom = Tk_InternAtom(tkwin, "MULTIPLE"); dispPtr->incrAtom = Tk_InternAtom(tkwin, "INCR"); dispPtr->targetsAtom = Tk_InternAtom(tkwin, "TARGETS"); dispPtr->timestampAtom = Tk_InternAtom(tkwin, "TIMESTAMP"); dispPtr->textAtom = Tk_InternAtom(tkwin, "TEXT"); dispPtr->compoundTextAtom = Tk_InternAtom(tkwin, "COMPOUND_TEXT"); } /* *-------------------------------------------------------------- * * TkSelEventProc -- * * This procedure is invoked whenever a selection-related * event occurs. It does the lion's share of the work * in implementing the selection protocol. * * Results: * None. * * Side effects: * Lots: depends on the type of event. * *-------------------------------------------------------------- */ void TkSelEventProc(tkwin, eventPtr) Tk_Window tkwin; /* Window for which event was * targeted. */ register XEvent *eventPtr; /* X event: either SelectionClear, * SelectionRequest, or * SelectionNotify. */ { register TkWindow *winPtr = (TkWindow *) tkwin; /* * Case #1: SelectionClear events. Invoke clear procedure * for window that just lost the selection. This code is a * bit tricky, because any callbacks to due selection changes * between windows managed by the process have already been * made. Thus, ignore the event unless it refers to the * window that's currently the selection owner and the event * was generated after the server saw the SetSelectionOwner * request. */ if (eventPtr->type == SelectionClear) { if ((eventPtr->xselectionclear.selection == XA_PRIMARY) && (winPtr->dispPtr->selectionOwner == tkwin) && (eventPtr->xselectionclear.serial >= winPtr->dispPtr->selectionSerial) && (winPtr->selClearProc != NULL)) { (*winPtr->selClearProc)(winPtr->selClearData); winPtr->selClearProc = NULL; winPtr->dispPtr->selectionOwner = NULL; } return; } /* * Case #2: SelectionNotify events. Call the relevant procedure * to handle the incoming selection. */ if (eventPtr->type == SelectionNotify) { register RetrievalInfo *retrPtr; char *propInfo; Atom type; int format, result; unsigned long numItems, bytesAfter; for (retrPtr = pendingRetrievals; ; retrPtr = retrPtr->nextPtr) { if (retrPtr == NULL) { return; } if ((retrPtr->winPtr == winPtr) && (eventPtr->xselection.selection == XA_PRIMARY) && (retrPtr->target == eventPtr->xselection.target) && (retrPtr->result == -1)) { if (retrPtr->property == eventPtr->xselection.property) { break; } if (eventPtr->xselection.property == None) { Tcl_SetResult(retrPtr->interp, (char *) NULL, TCL_STATIC); Tcl_AppendResult(retrPtr->interp, "selection doesn't exist or form \"", Tk_GetAtomName(tkwin, retrPtr->target), "\" not defined", (char *) NULL); retrPtr->result = TCL_ERROR; return; } } } propInfo = NULL; result = XGetWindowProperty(eventPtr->xselection.display, eventPtr->xselection.requestor, retrPtr->property, 0, MAX_PROP_WORDS, False, (Atom) AnyPropertyType, &type, &format, &numItems, &bytesAfter, (unsigned char **) &propInfo); if ((result != Success) || (type == None)) { return; } if (bytesAfter != 0) { Tcl_SetResult(retrPtr->interp, "selection property too large", TCL_STATIC); retrPtr->result = TCL_ERROR; XFree(propInfo); return; } if ((type == XA_STRING) || (type == winPtr->dispPtr->textAtom) || (type == winPtr->dispPtr->compoundTextAtom)) { if (format != 8) { sprintf(retrPtr->interp->result, "bad format for string selection: wanted \"8\", got \"%d\"", format); retrPtr->result = TCL_ERROR; return; } retrPtr->result = (*retrPtr->proc)(retrPtr->clientData, retrPtr->interp, propInfo); } else if (type == winPtr->dispPtr->incrAtom) { /* * It's a !?#@!?!! INCR-style reception. Arrange to receive * the selection in pieces, using the ICCCM protocol, then * hang around until either the selection is all here or a * timeout occurs. */ retrPtr->idleTime = 0; Tk_CreateEventHandler(tkwin, PropertyChangeMask, SelRcvIncrProc, (ClientData) retrPtr); XDeleteProperty(Tk_Display(tkwin), Tk_WindowId(tkwin), retrPtr->property); while (retrPtr->result == -1) { Tk_DoOneEvent(0); } Tk_DeleteEventHandler(tkwin, PropertyChangeMask, SelRcvIncrProc, (ClientData) retrPtr); } else { char *string; if (format != 32) { sprintf(retrPtr->interp->result, "bad format for selection: wanted \"32\", got \"%d\"", format); retrPtr->result = TCL_ERROR; return; } string = SelCvtFromX((long *) propInfo, (int) numItems, type, (Tk_Window) winPtr); retrPtr->result = (*retrPtr->proc)(retrPtr->clientData, retrPtr->interp, string); ckfree(string); } XFree(propInfo); return; } /* * Case #3: SelectionRequest events. Call ConvertSelection to * do the dirty work. */ if ((eventPtr->type == SelectionRequest) && (eventPtr->xselectionrequest.selection == XA_PRIMARY)) { ConvertSelection(winPtr, &eventPtr->xselectionrequest); return; } } /* *-------------------------------------------------------------- * * SelGetProc -- * * This procedure is invoked to process pieces of the * selection as they arrive during "selection get" * commands. * * Results: * Always returns TCL_OK. * * Side effects: * Bytes get appended to the result currently stored * in interp->result, and its memory area gets * expanded if necessary. * *-------------------------------------------------------------- */ /* ARGSUSED */ static int SelGetProc(clientData, interp, portion) ClientData clientData; /* Information about partially- * assembled result. */ Tcl_Interp *interp; /* Interpreter used for error * reporting (not used). */ char *portion; /* New information to be appended. */ { register GetInfo *getInfoPtr = (GetInfo *) clientData; int newLength; newLength = strlen(portion) + getInfoPtr->bytesUsed; /* * Grow the result area if we've run out of space. */ if (newLength >= getInfoPtr->bytesAvl) { char *newString; getInfoPtr->bytesAvl *= 2; if (getInfoPtr->bytesAvl <= newLength) { getInfoPtr->bytesAvl = newLength + 1; } newString = (char *) ckalloc((unsigned) getInfoPtr->bytesAvl); memcpy((VOID *) newString, (VOID *) getInfoPtr->string, getInfoPtr->bytesUsed); ckfree(getInfoPtr->string); getInfoPtr->string = newString; } /* * Append the new data to what was already there. */ strcpy(getInfoPtr->string + getInfoPtr->bytesUsed, portion); getInfoPtr->bytesUsed = newLength; return TCL_OK; } /* *---------------------------------------------------------------------- * * SelCvtToX -- * * Given a selection represented as a string (the normal Tcl form), * convert it to the ICCCM-mandated format for X, depending on * the type argument. This procedure and SelCvtFromX are inverses. * * Results: * The return value is a malloc'ed buffer holding a value * equivalent to "string", but formatted as for "type". It is * the caller's responsibility to free the string when done with * it. The word at *numLongsPtr is filled in with the number of * 32-bit words returned in the result. * * Side effects: * None. * *---------------------------------------------------------------------- */ static long * SelCvtToX(string, type, tkwin, numLongsPtr) char *string; /* String representation of selection. */ Atom type; /* Atom specifying the X format that is * desired for the selection. Should not * be XA_STRING (if so, don't bother calling * this procedure at all). */ Tk_Window tkwin; /* Window that governs atom conversion. */ int *numLongsPtr; /* Number of 32-bit words contained in the * result. */ { register char *p; char *field; int numFields; long *propPtr, *longPtr; #define MAX_ATOM_NAME_LENGTH 100 char atomName[MAX_ATOM_NAME_LENGTH+1]; /* * The string is assumed to consist of fields separated by spaces. * The property gets generated by converting each field to an * integer number, in one of two ways: * 1. If type is XA_ATOM, convert each field to its corresponding * atom. * 2. If type is anything else, convert each field from an ASCII number * to a 32-bit binary number. */ numFields = 1; for (p = string; *p != 0; p++) { if (isspace(*p)) { numFields++; } } propPtr = (long *) ckalloc((unsigned) numFields*sizeof(long)); /* * Convert the fields one-by-one. */ for (longPtr = propPtr, *numLongsPtr = 0, p = string; ; longPtr++, (*numLongsPtr)++) { while (isspace(*p)) { p++; } if (*p == 0) { break; } field = p; while ((*p != 0) && !isspace(*p)) { p++; } if (type == XA_ATOM) { int length; length = p - field; if (length > MAX_ATOM_NAME_LENGTH) { length = MAX_ATOM_NAME_LENGTH; } strncpy(atomName, field, length); atomName[length] = 0; *longPtr = (long) Tk_InternAtom(tkwin, atomName); } else { char *dummy; *longPtr = strtol(field, &dummy, 0); } } return propPtr; } /* *---------------------------------------------------------------------- * * SelCvtFromX -- * * Given an X property value, formatted as a collection of 32-bit * values according to "type" and the ICCCM conventions, convert * the value to a string suitable for manipulation by Tcl. This * procedure is the inverse of SelCvtToX. * * Results: * The return value is the string equivalent of "property". It is * malloc-ed and should be freed by the caller when no longer * needed. * * Side effects: * None. * *---------------------------------------------------------------------- */ static char * SelCvtFromX(propPtr, numValues, type, tkwin) register long *propPtr; /* Property value from X. */ int numValues; /* Number of 32-bit values in property. */ Atom type; /* Type of property Should not be * XA_STRING (if so, don't bother calling * this procedure at all). */ Tk_Window tkwin; /* Window to use for atom conversion. */ { char *result; int resultSpace, curSize, fieldSize; char *atomName; /* * Convert each long in the property to a string value, which is * either the name of an atom (if type is XA_ATOM) or a hexadecimal * string. Make an initial guess about the size of the result, but * be prepared to enlarge the result if necessary. */ resultSpace = 12*numValues; curSize = 0; atomName = ""; /* Not needed, but eliminates compiler warning. */ result = (char *) ckalloc((unsigned) resultSpace); for ( ; numValues > 0; propPtr++, numValues--) { if (type == XA_ATOM) { atomName = Tk_GetAtomName(tkwin, (Atom) *propPtr); fieldSize = strlen(atomName) + 1; } else { fieldSize = 12; } if (curSize+fieldSize >= resultSpace) { char *newResult; resultSpace *= 2; if (curSize+fieldSize >= resultSpace) { resultSpace = curSize + fieldSize + 1; } newResult = (char *) ckalloc((unsigned) resultSpace); strcpy(newResult, result); ckfree(result); result = newResult; } if (curSize != 0) { result[curSize] = ' '; curSize++; } if (type == XA_ATOM) { strcpy(result+curSize, atomName); } else { sprintf(result+curSize, "%#x", *propPtr); } curSize += strlen(result+curSize); } return result; } /* *---------------------------------------------------------------------- * * ConvertSelection -- * * This procedure is invoked to handle SelectionRequest events. * It responds to the requests, obeying the ICCCM protocols. * * Results: * None. * * Side effects: * Properties are created for the selection requestor, and a * SelectionNotify event is generated for the selection * requestor. In the event of long selections, this procedure * implements INCR-mode transfers, using the ICCCM protocol. * *---------------------------------------------------------------------- */ static void ConvertSelection(winPtr, eventPtr) TkWindow *winPtr; /* Window that owns selection. */ register XSelectionRequestEvent *eventPtr; /* Event describing request. */ { XSelectionEvent reply; /* Used to notify requestor that * selection info is ready. */ int multiple; /* Non-zero means a MULTIPLE request * is being handled. */ IncrInfo info; /* State of selection conversion. */ Atom singleInfo[2]; /* info.multAtoms points here except * for multiple conversions. */ int i; Tk_ErrorHandler errorHandler; errorHandler = Tk_CreateErrorHandler(eventPtr->display, -1, -1,-1, (int (*)()) NULL, (ClientData) NULL); /* * Initialize the reply event. */ reply.type = SelectionNotify; reply.serial = 0; reply.send_event = True; reply.display = eventPtr->display; reply.requestor = eventPtr->requestor; reply.selection = XA_PRIMARY; reply.target = eventPtr->target; reply.property = eventPtr->property; if (reply.property == None) { reply.property = reply.target; } reply.time = eventPtr->time; /* * Watch out for races between conversion requests and * selection ownership changes: reject the conversion * request if it's for the wrong window or the wrong * time. */ if ((winPtr->dispPtr->selectionOwner != (Tk_Window) winPtr) || ((eventPtr->time < winPtr->dispPtr->selectionTime) && (eventPtr->time != CurrentTime) && (winPtr->dispPtr->selectionTime != CurrentTime))) { goto refuse; } /* * Figure out which kind(s) of conversion to perform. If handling * a MULTIPLE conversion, then read the property describing which * conversions to perform. */ info.winPtr = winPtr; if (eventPtr->target != winPtr->dispPtr->multipleAtom) { multiple = 0; singleInfo[0] = reply.target; singleInfo[1] = reply.property; info.multAtoms = singleInfo; info.numConversions = 1; } else { Atom type; int format, result; unsigned long bytesAfter; multiple = 1; info.multAtoms = NULL; if (eventPtr->property == None) { goto refuse; } result = XGetWindowProperty(eventPtr->display, eventPtr->requestor, eventPtr->property, 0, MAX_PROP_WORDS, False, XA_ATOM, &type, &format, &info.numConversions, &bytesAfter, (unsigned char **) &info.multAtoms); if ((result != Success) || (bytesAfter != 0) || (format != 32) || (type == None)) { if (info.multAtoms != NULL) { XFree((char *) info.multAtoms); } goto refuse; } info.numConversions /= 2; /* Two atoms per conversion. */ } /* * Loop through all of the requested conversions, and either return * the entire converted selection, if it can be returned in a single * bunch, or return INCR information only (the actual selection will * be returned below). */ info.offsets = (int *) ckalloc((unsigned) (info.numConversions*sizeof(int))); info.numIncrs = 0; for (i = 0; i < info.numConversions; i++) { Atom target, property; long buffer[TK_SEL_WORDS_AT_ONCE]; register TkSelHandler *selPtr; target = info.multAtoms[2*i]; property = info.multAtoms[2*i + 1]; info.offsets[i] = -1; for (selPtr = winPtr->selHandlerList; ; selPtr = selPtr->nextPtr) { int numItems, format; char *propPtr; Atom type; if (selPtr == NULL) { /* * Nobody seems to know about this kind of request. If * it's of a sort that we can handle without any help, do * it. Otherwise mark the request as an errror. */ numItems = DefaultSelection(winPtr, target, (char *) buffer, TK_SEL_BYTES_AT_ONCE, &type); if (numItems != 0) { goto gotStuff; } info.multAtoms[2*i + 1] = None; break; } else if (selPtr->target == target) { numItems = (*selPtr->proc)(selPtr->clientData, 0, (char *) buffer, TK_SEL_BYTES_AT_ONCE); if (numItems < 0) { info.multAtoms[2*i + 1] = None; break; } if (numItems > TK_SEL_BYTES_AT_ONCE) { panic("selection handler returned too many bytes"); } ((char *) buffer)[numItems] = '\0'; type = selPtr->format; } else { continue; } gotStuff: if (numItems == TK_SEL_BYTES_AT_ONCE) { info.numIncrs++; type = winPtr->dispPtr->incrAtom; buffer[0] = 10; /* Guess at # items avl. */ numItems = 1; propPtr = (char *) buffer; format = 32; info.offsets[i] = 0; } else if (type == XA_STRING) { propPtr = (char *) buffer; format = 8; } else { propPtr = (char *) SelCvtToX((char *) buffer, type, (Tk_Window) winPtr, &numItems); format = 32; } XChangeProperty(reply.display, reply.requestor, property, type, format, PropModeReplace, (unsigned char *) propPtr, numItems); if (propPtr != (char *) buffer) { ckfree(propPtr); } break; } } /* * Send an event back to the requestor to indicate that the * first stage of conversion is complete (everything is done * except for long conversions that have to be done in INCR * mode). */ if (info.numIncrs > 0) { XSelectInput(reply.display, reply.requestor, PropertyChangeMask); info.timeout = Tk_CreateTimerHandler(1000, IncrTimeoutProc, (ClientData) &info); info.idleTime = 0; info.reqWindow = reply.requestor; info.time = winPtr->dispPtr->selectionTime; info.nextPtr = pendingIncrs; pendingIncrs = &info; } if (multiple) { XChangeProperty(reply.display, reply.requestor, reply.property, XA_ATOM, 32, PropModeReplace, (unsigned char *) info.multAtoms, (int) info.numConversions*2); } else { /* * Not a MULTIPLE request. The first property in "multAtoms" * got set to None if there was an error in conversion. */ reply.property = info.multAtoms[1]; } XSendEvent(reply.display, reply.requestor, False, 0, (XEvent *) &reply); Tk_DeleteErrorHandler(errorHandler); /* * Handle any remaining INCR-mode transfers. This all happens * in callbacks to TkSelPropProc, so just wait until the number * of uncompleted INCR transfers drops to zero. */ if (info.numIncrs > 0) { IncrInfo *infoPtr2; while (info.numIncrs > 0) { Tk_DoOneEvent(0); } Tk_DeleteTimerHandler(info.timeout); errorHandler = Tk_CreateErrorHandler(winPtr->display, -1, -1,-1, (int (*)()) NULL, (ClientData) NULL); XSelectInput(reply.display, reply.requestor, 0L); Tk_DeleteErrorHandler(errorHandler); if (pendingIncrs == &info) { pendingIncrs = info.nextPtr; } else { for (infoPtr2 = pendingIncrs; infoPtr2 != NULL; infoPtr2 = infoPtr2->nextPtr) { if (infoPtr2->nextPtr == &info) { infoPtr2->nextPtr = info.nextPtr; break; } } } } /* * All done. Cleanup and return. */ ckfree((char *) info.offsets); if (multiple) { XFree((char *) info.multAtoms); } return; /* * An error occurred. Send back a refusal message. */ refuse: reply.property = None; XSendEvent(reply.display, reply.requestor, False, 0, (XEvent *) &reply); Tk_DeleteErrorHandler(errorHandler); return; } /* *---------------------------------------------------------------------- * * SelRcvIncrProc -- * * This procedure handles the INCR protocol on the receiving * side. It is invoked in response to property changes on * the requestor's window (which hopefully are because a new * chunk of the selection arrived). * * Results: * None. * * Side effects: * If a new piece of selection has arrived, a procedure is * invoked to deal with that piece. When the whole selection * is here, a flag is left for the higher-level procedure that * initiated the selection retrieval. * *---------------------------------------------------------------------- */ static void SelRcvIncrProc(clientData, eventPtr) ClientData clientData; /* Information about retrieval. */ register XEvent *eventPtr; /* X PropertyChange event. */ { register RetrievalInfo *retrPtr = (RetrievalInfo *) clientData; char *propInfo; Atom type; int format, result; unsigned long numItems, bytesAfter; if ((eventPtr->xproperty.atom != retrPtr->property) || (eventPtr->xproperty.state != PropertyNewValue) || (retrPtr->result != -1)) { return; } propInfo = NULL; result = XGetWindowProperty(eventPtr->xproperty.display, eventPtr->xproperty.window, retrPtr->property, 0, MAX_PROP_WORDS, True, (Atom) AnyPropertyType, &type, &format, &numItems, &bytesAfter, (unsigned char **) &propInfo); if ((result != Success) || (type == None)) { return; } if (bytesAfter != 0) { Tcl_SetResult(retrPtr->interp, "selection property too large", TCL_STATIC); retrPtr->result = TCL_ERROR; goto done; } if (numItems == 0) { retrPtr->result = TCL_OK; } else if ((type == XA_STRING) || (type == retrPtr->winPtr->dispPtr->textAtom) || (type == retrPtr->winPtr->dispPtr->compoundTextAtom)) { if (format != 8) { Tcl_SetResult(retrPtr->interp, (char *) NULL, TCL_STATIC); sprintf(retrPtr->interp->result, "bad format for string selection: wanted \"8\", got \"%d\"", format); retrPtr->result = TCL_ERROR; goto done; } result = (*retrPtr->proc)(retrPtr->clientData, retrPtr->interp, propInfo); if (result != TCL_OK) { retrPtr->result = result; } } else { char *string; if (format != 32) { Tcl_SetResult(retrPtr->interp, (char *) NULL, TCL_STATIC); sprintf(retrPtr->interp->result, "bad format for selection: wanted \"32\", got \"%d\"", format); retrPtr->result = TCL_ERROR; goto done; } string = SelCvtFromX((long *) propInfo, (int) numItems, type, (Tk_Window) retrPtr->winPtr); result = (*retrPtr->proc)(retrPtr->clientData, retrPtr->interp, string); if (result != TCL_OK) { retrPtr->result = result; } ckfree(string); } done: XFree(propInfo); retrPtr->idleTime = 0; } /* *---------------------------------------------------------------------- * * TkSelPropProc -- * * This procedure is invoked when property-change events * occur on windows not known to the toolkit. Its function * is to implement the sending side of the INCR selection * retrieval protocol when the selection requestor deletes * the property containing a part of the selection. * * Results: * None. * * Side effects: * If the property that is receiving the selection was just * deleted, then a new piece of the selection is fetched and * placed in the property, until eventually there's no more * selection to fetch. * *---------------------------------------------------------------------- */ void TkSelPropProc(eventPtr) register XEvent *eventPtr; /* X PropertyChange event. */ { register IncrInfo *infoPtr; int i, format; Atom target; register TkSelHandler *selPtr; long buffer[TK_SEL_WORDS_AT_ONCE]; int numItems; char *propPtr; Tk_ErrorHandler errorHandler; /* * See if this event announces the deletion of a property being * used for an INCR transfer. If so, then add the next chunk of * data to the property. */ if (eventPtr->xproperty.state != PropertyDelete) { return; } for (infoPtr = pendingIncrs; infoPtr != NULL; infoPtr = infoPtr->nextPtr) { /* * To avoid races between selection conversions and * changes in selection ownership, make sure the window * and timestamp for the current selection match those * in the INCR request. */ if ((infoPtr->reqWindow != eventPtr->xproperty.window) || (infoPtr->winPtr->dispPtr->selectionOwner != (Tk_Window) infoPtr->winPtr) || (infoPtr->winPtr->dispPtr->selectionTime != infoPtr->time)) { continue; } for (i = 0; i < infoPtr->numConversions; i++) { if ((eventPtr->xproperty.atom != infoPtr->multAtoms[2*i + 1]) || (infoPtr->offsets[i] == -1)){ continue; } target = infoPtr->multAtoms[2*i]; infoPtr->idleTime = 0; for (selPtr = infoPtr->winPtr->selHandlerList; ; selPtr = selPtr->nextPtr) { if (selPtr == NULL) { infoPtr->multAtoms[2*i + 1] = None; infoPtr->offsets[i] = -1; infoPtr->numIncrs --; return; } if (selPtr->target == target) { if (infoPtr->offsets[i] == -2) { numItems = 0; ((char *) buffer)[0] = 0; } else { numItems = (*selPtr->proc)(selPtr->clientData, infoPtr->offsets[i], (char *) buffer, TK_SEL_BYTES_AT_ONCE); if (numItems > TK_SEL_BYTES_AT_ONCE) { panic("selection handler returned too many bytes"); } else { if (numItems < 0) { numItems = 0; } } ((char *) buffer)[numItems] = '\0'; } if (numItems < TK_SEL_BYTES_AT_ONCE) { if (numItems <= 0) { infoPtr->offsets[i] = -1; infoPtr->numIncrs--; } else { infoPtr->offsets[i] = -2; } } else { infoPtr->offsets[i] += numItems; } if (selPtr->format == XA_STRING) { propPtr = (char *) buffer; format = 8; } else { propPtr = (char *) SelCvtToX((char *) buffer, selPtr->format, (Tk_Window) infoPtr->winPtr, &numItems); format = 32; } errorHandler = Tk_CreateErrorHandler( eventPtr->xproperty.display, -1, -1, -1, (int (*)()) NULL, (ClientData) NULL); XChangeProperty(eventPtr->xproperty.display, eventPtr->xproperty.window, eventPtr->xproperty.atom, selPtr->format, format, PropModeReplace, (unsigned char *) propPtr, numItems); Tk_DeleteErrorHandler(errorHandler); if (propPtr != (char *) buffer) { ckfree(propPtr); } return; } } } } } /* *---------------------------------------------------------------------- * * HandleTclCommand -- * * This procedure acts as selection handler for handlers created * by the "selection handle" command. It invokes a Tcl command to * retrieve the selection. * * Results: * The return value is a count of the number of bytes actually * stored at buffer. * * Side effects: * None except for things done by the Tcl command. * *---------------------------------------------------------------------- */ static int HandleTclCommand(clientData, offset, buffer, maxBytes) ClientData clientData; /* Information about command to execute. */ int offset; /* Return selection bytes starting at this * offset. */ char *buffer; /* Place to store converted selection. */ int maxBytes; /* Maximum # of bytes to store at buffer. */ { register CommandInfo *cmdInfoPtr = (CommandInfo *) clientData; char *oldResultString; Tcl_FreeProc *oldFreeProc; int spaceNeeded, length; #define MAX_STATIC_SIZE 100 char staticSpace[MAX_STATIC_SIZE]; char *command; /* * First, generate a command by taking the command string * and appending the offset and maximum # of bytes. */ spaceNeeded = cmdInfoPtr->cmdLength + 30; if (spaceNeeded < MAX_STATIC_SIZE) { command = staticSpace; } else { command = (char *) ckalloc((unsigned) spaceNeeded); } sprintf(command, "%s %d %d", cmdInfoPtr->command, offset, maxBytes); /* * Execute the command. Be sure to restore the state of the * interpreter after executing the command. */ oldFreeProc = cmdInfoPtr->interp->freeProc; if (oldFreeProc != 0) { oldResultString = cmdInfoPtr->interp->result; } else { oldResultString = (char *) ckalloc((unsigned) (strlen(cmdInfoPtr->interp->result) + 1)); strcpy(oldResultString, cmdInfoPtr->interp->result); oldFreeProc = TCL_DYNAMIC; } cmdInfoPtr->interp->freeProc = 0; if (Tcl_GlobalEval(cmdInfoPtr->interp, command) == TCL_OK) { length = strlen(cmdInfoPtr->interp->result); } else { length = 0; } if (length > maxBytes) { length = maxBytes; } memcpy((VOID *) buffer, (VOID *) cmdInfoPtr->interp->result, length); buffer[length] = '\0'; Tcl_FreeResult(cmdInfoPtr->interp); cmdInfoPtr->interp->result = oldResultString; cmdInfoPtr->interp->freeProc = oldFreeProc; if (command != staticSpace) { ckfree(command); } return length; } /* *---------------------------------------------------------------------- * * SelTimeoutProc -- * * This procedure is invoked once every second while waiting for * the selection to be returned. After a while it gives up and * aborts the selection retrieval. * * Results: * None. * * Side effects: * A new timer callback is created to call us again in another * second, unless time has expired, in which case an error is * recorded for the retrieval. * *---------------------------------------------------------------------- */ static void SelTimeoutProc(clientData) ClientData clientData; /* Information about retrieval * in progress. */ { register RetrievalInfo *retrPtr = (RetrievalInfo *) clientData; /* * Make sure that the retrieval is still in progress. Then * see how long it's been since any sort of response was received * from the other side. */ if (retrPtr->result != -1) { return; } retrPtr->idleTime++; if (retrPtr->idleTime >= 5) { /* * Use a careful procedure to store the error message, because * the result could already be partially filled in with a partial * selection return. */ Tcl_SetResult(retrPtr->interp, "selection owner didn't respond", TCL_STATIC); retrPtr->result = TCL_ERROR; } else { retrPtr->timeout = Tk_CreateTimerHandler(1000, SelTimeoutProc, (ClientData) retrPtr); } } /* *---------------------------------------------------------------------- * * IncrTimeoutProc -- * * This procedure is invoked once a second while sending the * selection to a requestor in INCR mode. After a while it * gives up and aborts the selection operation. * * Results: * None. * * Side effects: * A new timeout gets registered so that this procedure gets * called again in another second, unless too many seconds * have elapsed, in which case infoPtr is marked as "all done". * *---------------------------------------------------------------------- */ static void IncrTimeoutProc(clientData) ClientData clientData; /* Information about INCR-mode * selection retrieval for which * we are selection owner. */ { register IncrInfo *infoPtr = (IncrInfo *) clientData; infoPtr->idleTime++; if (infoPtr->idleTime >= 5) { infoPtr->numIncrs = 0; } else { infoPtr->timeout = Tk_CreateTimerHandler(1000, IncrTimeoutProc, (ClientData) infoPtr); } } /* *---------------------------------------------------------------------- * * DefaultSelection -- * * This procedure is called to generate selection information * for a few standard targets such as TIMESTAMP and TARGETS. * It is invoked only if no handler has been declared by the * application. * * Results: * If "target" is a standard target understood by this procedure, * the selection is converted to that form and stored as a * character string in buffer. The type of the selection (e.g. * STRING or ATOM) is stored in *typePtr, and the return value is * a count of the # of non-NULL bytes at buffer. If the target * wasn't understood, or if there isn't enough space at buffer * to hold the entire selection (no INCR-mode transfers for this * stuff!), then -1 is returned. * * Side effects: * None. * *---------------------------------------------------------------------- */ static int DefaultSelection(winPtr, target, buffer, maxBytes, typePtr) TkWindow *winPtr; /* Window that owns selection. */ Atom target; /* Desired form of selection. */ char *buffer; /* Place to put selection characters. */ int maxBytes; /* Maximum # of bytes to store at buffer. */ Atom *typePtr; /* Store here the type of the selection, * for use in converting to proper X format. */ { if (target == winPtr->dispPtr->timestampAtom) { if (maxBytes < 20) { return -1; } sprintf(buffer, "%#x", winPtr->dispPtr->selectionTime); *typePtr = XA_INTEGER; return strlen(buffer); } if (target == winPtr->dispPtr->targetsAtom) { register TkSelHandler *selPtr; char *atomString; int length, atomLength; if (maxBytes < 50) { return -1; } strcpy(buffer, "TARGETS MULTIPLE TIMESTAMP"); length = strlen(buffer); for (selPtr = winPtr->selHandlerList; selPtr != NULL; selPtr = selPtr->nextPtr) { atomString = Tk_GetAtomName((Tk_Window) winPtr, selPtr->target); atomLength = strlen(atomString) + 1; if ((length + atomLength) >= maxBytes) { return -1; } sprintf(buffer+length, " %s", atomString); length += atomLength; } *typePtr = XA_ATOM; return length; } return -1; } micropolis-activity/src/tk/tktxbtre.c0000664000076400007640000020341410724145723020257 0ustar simcitysimcity/* * tkTextBTree.c -- * * This file contains code that manages the B-tree representation * of text for Tk's text widget. The B-tree holds both the text * and tag information related to the text. * * Copyright 1992 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that this copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkTextBTree.c,v 1.16 92/08/17 09:13:58 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include "tkint.h" #include "tkconfig.h" #include "tktext.h" /* * The data structure below keeps summary information about one tag as part * of the tag information in a node. */ typedef struct Summary { TkTextTag *tagPtr; /* Handle for tag. */ int toggleCount; /* Number of transitions into or * out of this tag that occur in * the subtree rooted at this node. */ struct Summary *nextPtr; /* Next in list of all tags for same * node, or NULL if at end of list. */ } Summary; /* * The data structure below defines a node in the B-tree representing * all of the lines in a text widget. */ typedef struct Node { struct Node *parentPtr; /* Pointer to parent node, or NULL if * this is the root. */ struct Node *nextPtr; /* Next in list of children of the * same parent node, or NULL for end * of list. */ Summary *summaryPtr; /* First in malloc-ed list of info * about tags in this subtree (NULL if * no tag info in the subtree). */ int level; /* Level of this node in the B-tree. * 0 refers to the bottom of the tree * (children are lines, not nodes). */ union { /* First in linked list of children. */ struct Node *nodePtr; /* Used if level > 0. */ TkTextLine *linePtr; /* Used if level == 0. */ } children; int numChildren; /* Number of children of this node. */ int numLines; /* Total number of lines (leaves) in * the subtree rooted here. */ } Node; /* * Upper and lower bounds on how many children a node may have: * rebalance when either of these limits is exceeded. MAX_CHILDREN * should be twice MIN_CHILDREN and MIN_CHILDREN must be >= 2. */ #define MAX_CHILDREN 12 #define MIN_CHILDREN 6 /* * The data structure below defines an entire B-tree. */ typedef struct BTree { Node *rootPtr; /* Pointer to root of B-tree. */ } BTree; /* * The structure below is used to pass information between * TkBTreeGetTags and IncCount: */ typedef struct TagInfo { int numTags; /* Number of tags for which there * is currently information in * tags and counts. */ int arraySize; /* Number of entries allocated for * tags and counts. */ TkTextTag **tagPtrs; /* Array of tags seen so far. * Malloc-ed. */ int *counts; /* Toggle count (so far) for each * entry in tags. Malloc-ed. */ } TagInfo; /* * Macro to compute the space needed for a line that holds n non-null * characters: */ #define LINE_SIZE(n) ((unsigned) (sizeof(TkTextLine) - 3 + (n))) /* * Variable that indicates whether to enable consistency checks for * debugging. */ int tkBTreeDebug = 0; /* * Forward declarations for procedures defined in this file: */ static void AddToggleToLine _ANSI_ARGS_((TkTextLine *linePtr, int index, TkTextTag *tagPtr)); static void ChangeNodeToggleCount _ANSI_ARGS_((Node *nodePtr, TkTextTag *tagPtr, int delta)); static void CheckNodeConsistency _ANSI_ARGS_((Node *nodePtr)); static void DeleteSummaries _ANSI_ARGS_((Summary *tagPtr)); static void DestroyNode _ANSI_ARGS_((Node *nodePtr)); static void IncCount _ANSI_ARGS_((TkTextTag *tagPtr, int inc, TagInfo *tagInfoPtr)); static void Rebalance _ANSI_ARGS_((BTree *treePtr, Node *nodePtr)); static void RecomputeNodeCounts _ANSI_ARGS_((Node *nodePtr)); /* *---------------------------------------------------------------------- * * TkBTreeCreate -- * * This procedure is called to create a new text B-tree. * * Results: * The return value is a pointer to a new B-tree containing * one line with nothing but a newline character. * * Side effects: * Memory is allocated and initialized. * *---------------------------------------------------------------------- */ TkTextBTree TkBTreeCreate() { register BTree *treePtr; register Node *rootPtr; register TkTextLine *linePtr; rootPtr = (Node *) ckalloc(sizeof(Node)); linePtr = (TkTextLine *) ckalloc(LINE_SIZE(1)); rootPtr->parentPtr = NULL; rootPtr->nextPtr = NULL; rootPtr->summaryPtr = NULL; rootPtr->level = 0; rootPtr->children.linePtr = linePtr; rootPtr->numChildren = 1; rootPtr->numLines = 1; linePtr->parentPtr = rootPtr; linePtr->nextPtr = NULL; linePtr->annotPtr = NULL; linePtr->numBytes = 1; linePtr->bytes[0] = '\n'; linePtr->bytes[1] = 0; treePtr = (BTree *) ckalloc(sizeof(BTree)); treePtr->rootPtr = rootPtr; return (TkTextBTree) treePtr; } /* *---------------------------------------------------------------------- * * TkBTreeDestroy -- * * Delete a B-tree, recycling all of the storage it contains. * * Results: * The tree given by treePtr is deleted. TreePtr should never * again be used. * * Side effects: * Memory is freed. * *---------------------------------------------------------------------- */ void TkBTreeDestroy(tree) TkTextBTree tree; /* Pointer to tree to delete. */ { BTree *treePtr = (BTree *) tree; DestroyNode(treePtr->rootPtr); ckfree((char *) treePtr); } /* *---------------------------------------------------------------------- * * DestroyNode -- * * This is a recursive utility procedure used during the deletion * of a B-tree. * * Results: * None. * * Side effects: * All the storage for nodePtr and its descendants is freed. * *---------------------------------------------------------------------- */ static void DestroyNode(nodePtr) register Node *nodePtr; { if (nodePtr->level == 0) { register TkTextLine *curPtr, *nextLinePtr; register TkAnnotation *annotPtr, *nextAnnotPtr; for (curPtr = nodePtr->children.linePtr; curPtr != NULL; ) { nextLinePtr = curPtr->nextPtr; for (annotPtr = curPtr->annotPtr; annotPtr != NULL; ) { nextAnnotPtr = annotPtr->nextPtr; if (annotPtr->type == TK_ANNOT_TOGGLE) { ckfree((char *) annotPtr); } annotPtr = nextAnnotPtr; } ckfree((char *) curPtr); curPtr = nextLinePtr; } } else { register Node *curPtr, *nextPtr; for (curPtr = nodePtr->children.nodePtr; curPtr != NULL; ) { nextPtr = curPtr->nextPtr; DestroyNode(curPtr); curPtr = nextPtr; } } DeleteSummaries(nodePtr->summaryPtr); ckfree((char *) nodePtr); } /* *---------------------------------------------------------------------- * * DeleteSummaries -- * * Free up all of the memory in a list of tag summaries associated * with a node. * * Results: * None. * * Side effects: * Storage is released. * *---------------------------------------------------------------------- */ static void DeleteSummaries(summaryPtr) register Summary *summaryPtr; /* First in list of node's tag * summaries. */ { register Summary *nextPtr; while (summaryPtr != NULL) { nextPtr = summaryPtr->nextPtr; ckfree((char *) summaryPtr); summaryPtr = nextPtr; } } /* *---------------------------------------------------------------------- * * TkBTreeInsertChars -- * * Insert characters at a given position in a B-tree. * * Results: * None. * * Side effects: * NumBytes characters are added to the B-tree at the given * character position. This can cause the structure of the * B-tree to change. * *---------------------------------------------------------------------- */ void TkBTreeInsertChars(tree, linePtr, ch, string) TkTextBTree tree; /* B-tree in which to insert. */ register TkTextLine *linePtr; /* Pointer to line in which to * insert. */ int ch; /* Index of character before which * to insert. Must not be after * last character in line.*/ char *string; /* Pointer to bytes to insert (may * contain newlines, must be null- * terminated). */ { BTree *treePtr = (BTree *) tree; register Node *nodePtr; register TkAnnotation *annotPtr; TkTextLine *prevPtr; int newChunkLength; /* # chars in current line being * inserted. */ register char *eol; /* Pointer to last character in * current line being inserted. */ int changeToLineCount; /* Counts change to total number of * lines in file. */ TkAnnotation *afterPtr; /* List of annotations that occur * at or after the insertion point * in the line of the insertion. */ int prefixLength, suffixLength, totalLength; register TkTextLine *newPtr; /* * Find the line just before the one where the insertion will occur * but with the same parent node (if there is one). This is needed * so we can replace the insertion line with a new one. Remove this * line from the list for its parent, since it's going to be discarded * when we're all done). */ nodePtr = linePtr->parentPtr; prevPtr = nodePtr->children.linePtr; if (prevPtr == linePtr) { prevPtr = NULL; nodePtr->children.linePtr = linePtr->nextPtr; } else { for ( ; prevPtr->nextPtr != linePtr; prevPtr = prevPtr->nextPtr) { /* Empty loop body. */ } prevPtr->nextPtr = linePtr->nextPtr; } /* * Break up the annotations for the insertion line into two pieces: * those before the insertion point, and those at or after the insertion * point. */ afterPtr = NULL; if ((linePtr->annotPtr != NULL) && (linePtr->annotPtr->ch >= ch)) { afterPtr = linePtr->annotPtr; linePtr->annotPtr = NULL; } else { for (annotPtr = linePtr->annotPtr; annotPtr != NULL; annotPtr = annotPtr->nextPtr) { if ((annotPtr->nextPtr != NULL) && (annotPtr->nextPtr->ch >= ch)) { afterPtr = annotPtr->nextPtr; annotPtr->nextPtr = NULL; break; } } } /* * Chop the string up into lines and insert each line individually. */ changeToLineCount = -1; prefixLength = ch; while (1) { for (newChunkLength = 0, eol = string; *eol != 0; eol++) { newChunkLength++; if (*eol == '\n') { break; } } /* * Create a new line consisting of up to three parts: a prefix * from linePtr, some material from string, and a suffix from * linePtr. */ if ((newChunkLength == 0) || (*eol != '\n')) { suffixLength = linePtr->numBytes - ch; } else { suffixLength = 0; } totalLength = prefixLength + newChunkLength + suffixLength; newPtr = (TkTextLine *) ckalloc(LINE_SIZE(totalLength)); newPtr->parentPtr = nodePtr; if (prevPtr == NULL) { newPtr->nextPtr = nodePtr->children.linePtr; nodePtr->children.linePtr = newPtr; } else { newPtr->nextPtr = prevPtr->nextPtr; prevPtr->nextPtr = newPtr; } if (linePtr->annotPtr != NULL) { newPtr->annotPtr = linePtr->annotPtr; for (annotPtr = newPtr->annotPtr; annotPtr != NULL; annotPtr = annotPtr->nextPtr) { annotPtr->linePtr = newPtr; } linePtr->annotPtr = NULL; } else { newPtr->annotPtr = NULL; } newPtr->numBytes = totalLength; if (prefixLength != 0) { memcpy((VOID *) newPtr->bytes, (VOID *) linePtr->bytes, prefixLength); } if (newChunkLength != 0) { memcpy((VOID *) (newPtr->bytes + prefixLength), (VOID *) string, newChunkLength); } if (suffixLength != 0) { memcpy((VOID *) (newPtr->bytes + prefixLength + newChunkLength), (VOID *) (linePtr->bytes + ch), suffixLength); } newPtr->bytes[totalLength] = 0; changeToLineCount += 1; /* * Quit after the suffix has been output (there is always at least * one character of suffix: the newline). Before jumping out of the * loop, put back the annotations that pertain to the suffix. * Careful! If no newlines were inserted, there could already be * annotations at the beginning of the line; add back to the end. */ if (suffixLength != 0) { if (newPtr->annotPtr == NULL) { newPtr->annotPtr = afterPtr; } else { for (annotPtr = newPtr->annotPtr; annotPtr->nextPtr != NULL; annotPtr = annotPtr->nextPtr) { /* Empty loop body. */ } annotPtr->nextPtr = afterPtr; } for (annotPtr = afterPtr; annotPtr != NULL; annotPtr = annotPtr->nextPtr) { annotPtr->linePtr = newPtr; annotPtr->ch += prefixLength+newChunkLength-ch; } break; } /* * Advance to insert the next line chunk. */ string += newChunkLength; prefixLength = 0; prevPtr = newPtr; } /* * Increment the line counts in all the parent nodes of the insertion * point, then rebalance the tree if necessary. */ for ( ; nodePtr != NULL; nodePtr = nodePtr->parentPtr) { nodePtr->numLines += changeToLineCount; } nodePtr = linePtr->parentPtr; nodePtr->numChildren += changeToLineCount; if (nodePtr->numChildren > MAX_CHILDREN) { Rebalance(treePtr, nodePtr); } ckfree((char *) linePtr); if (tkBTreeDebug) { TkBTreeCheck(tree); } } /* *---------------------------------------------------------------------- * * TkBTreeDeleteChars -- * * Delete a range of characters from a B-tree. * * Results: * None. * * Side effects: * Information is deleted from the B-tree. This can cause the * internal structure of the B-tree to change. Note: the two * lines given by line1Ptr and line2Ptr will be replaced with * a single line containing the undeleted parts of the original * lines. This could potentially result in an empty line; * normally the caller should adjust the deletion range to prevent * this sort of behavior. * *---------------------------------------------------------------------- */ void TkBTreeDeleteChars(tree, line1Ptr, ch1, line2Ptr, ch2) TkTextBTree tree; /* B-tree in which to delete. */ register TkTextLine *line1Ptr; /* Line containing first character * to delete. */ int ch1; /* Index within linePtr1 of first * character to delete. */ register TkTextLine *line2Ptr; /* Line containing character just * after last one to delete. */ int ch2; /* Index within linePtr2 of character * just after last one to delete. */ { BTree *treePtr = (BTree *) tree; TkTextLine *linePtr, *nextPtr, *prevLinePtr; Node *nodePtr, *parentPtr, *nextNodePtr; TkAnnotation *annotPtr, *annotPtr2; int ch; int linesDeleted; /* Counts lines deleted from current * level-0 node. */ /* * Work through the tree deleting all of the lines between line1Ptr * and line2Ptr (but don't delete line1Ptr or line2Ptr yet). Also * delete any nodes in the B-tree that become empty because of * this process. */ linePtr = line1Ptr->nextPtr; nodePtr = line1Ptr->parentPtr; if (line1Ptr == line2Ptr) { goto middleLinesDeleted; } while (1) { /* * Delete all relevant lines within the same level-0 node. */ linesDeleted = 0; while ((linePtr != line2Ptr) && (linePtr != NULL)) { /* * Move any annotations in this line to the end of the * deletion range. If both the starting and ending toggle * for a tagged range get moved, they'll cancel each other * automatically and be dropped, which is the right behavior. */ for (annotPtr = linePtr->annotPtr; annotPtr != NULL; annotPtr = annotPtr2) { if (annotPtr->type == TK_ANNOT_TOGGLE) { AddToggleToLine(line2Ptr, ch2, annotPtr->info.tagPtr); ChangeNodeToggleCount(nodePtr, annotPtr->info.tagPtr, -1); annotPtr2 = annotPtr->nextPtr; ckfree((char *) annotPtr); } else { annotPtr2 = annotPtr->nextPtr; TkBTreeRemoveAnnotation(annotPtr); annotPtr->linePtr = line2Ptr; annotPtr->ch = ch2; TkBTreeAddAnnotation(annotPtr); } } nextPtr = linePtr->nextPtr; ckfree((char *) linePtr); linesDeleted++; linePtr = nextPtr; } if (nodePtr == line1Ptr->parentPtr) { line1Ptr->nextPtr = linePtr; } else { nodePtr->children.linePtr = linePtr; } for (parentPtr = nodePtr; parentPtr != NULL; parentPtr = parentPtr->parentPtr) { parentPtr->numLines -= linesDeleted; } nodePtr->numChildren -= linesDeleted; if (linePtr == line2Ptr) { break; } /* * Find the next level-0 node to visit, and its first line (but * remember the current node so we can come back to delete it if * it's empty). */ nextNodePtr = nodePtr; while (nextNodePtr->nextPtr == NULL) { nextNodePtr = nextNodePtr->parentPtr; } nextNodePtr = nextNodePtr->nextPtr; while (nextNodePtr->level > 0) { nextNodePtr = nextNodePtr->children.nodePtr; } linePtr = nextNodePtr->children.linePtr; /* * Now go back to the node we just left and delete it if * it's empty, along with any of its ancestors that are * empty. It may seem funny to go back like this, but it's * simpler to find the next place to visit before modifying * the tree structure. */ while (nodePtr->numChildren == 0) { parentPtr = nodePtr->parentPtr; if (parentPtr->children.nodePtr == nodePtr) { parentPtr->children.nodePtr = nodePtr->nextPtr; } else { Node *prevPtr; for (prevPtr = parentPtr->children.nodePtr; prevPtr->nextPtr != nodePtr; prevPtr = prevPtr->nextPtr) { } prevPtr->nextPtr = nodePtr->nextPtr; } parentPtr->numChildren--; DeleteSummaries(nodePtr->summaryPtr); ckfree((char *) nodePtr); nodePtr = parentPtr; } nodePtr = nextNodePtr; } /* * Make a new line that consists of the first part of the first * line of the deletion range and the last part of the last line * of the deletion range. */ middleLinesDeleted: nodePtr = line1Ptr->parentPtr; linePtr = (TkTextLine *) ckalloc(LINE_SIZE(ch1 + line2Ptr->numBytes - ch2)); linePtr->parentPtr = nodePtr; linePtr->nextPtr = line1Ptr->nextPtr; linePtr->annotPtr = NULL; linePtr->numBytes = ch1 + line2Ptr->numBytes - ch2; if (ch1 != 0) { memcpy((VOID *) linePtr->bytes, (VOID *) line1Ptr->bytes, ch1); } strcpy(linePtr->bytes + ch1, line2Ptr->bytes + ch2); /* * Process the annotations for the starting and ending lines. Enter * a new annotation on linePtr (the joined line) for each of these * annotations, then delete the originals. The code below is a little * tricky (e.g. the "break" in the first loop) to handle the case where * the starting and ending lines are the same. */ for (annotPtr = line1Ptr->annotPtr; annotPtr != NULL; annotPtr = line1Ptr->annotPtr) { if (annotPtr->ch <= ch1) { ch = annotPtr->ch; } else { if (line1Ptr == line2Ptr) { break; } ch = ch1; } line1Ptr->annotPtr = annotPtr->nextPtr; if (annotPtr->type == TK_ANNOT_TOGGLE) { AddToggleToLine(linePtr, ch, annotPtr->info.tagPtr); ChangeNodeToggleCount(line1Ptr->parentPtr, annotPtr->info.tagPtr, -1); ckfree((char *) annotPtr); } else { annotPtr->linePtr = linePtr; annotPtr->ch = ch; TkBTreeAddAnnotation(annotPtr); } } for (annotPtr = line2Ptr->annotPtr; annotPtr != NULL; annotPtr = line2Ptr->annotPtr) { if (annotPtr->ch >= ch2) { ch = annotPtr->ch - ch2 + ch1; } else { ch = ch1; } line2Ptr->annotPtr = annotPtr->nextPtr; if (annotPtr->type == TK_ANNOT_TOGGLE) { AddToggleToLine(linePtr, ch, annotPtr->info.tagPtr); ChangeNodeToggleCount(line2Ptr->parentPtr, annotPtr->info.tagPtr, -1); ckfree((char *) annotPtr); } else { annotPtr->linePtr = linePtr; annotPtr->ch = ch; TkBTreeAddAnnotation(annotPtr); } } /* * Delete the original starting and stopping lines (don't forget * that the annotations have already been deleted) and insert the * new line in place of line1Ptr. */ nodePtr = line1Ptr->parentPtr; if (nodePtr->children.linePtr == line1Ptr) { nodePtr->children.linePtr = linePtr; } else { for (prevLinePtr = nodePtr->children.linePtr; prevLinePtr->nextPtr != line1Ptr; prevLinePtr = prevLinePtr->nextPtr) { /* Empty loop body. */ } prevLinePtr->nextPtr = linePtr; } ckfree((char *) line1Ptr); nodePtr = line2Ptr->parentPtr; if (line2Ptr != line1Ptr) { if (nodePtr->children.linePtr == line2Ptr) { nodePtr->children.linePtr = line2Ptr->nextPtr; } else { for (prevLinePtr = nodePtr->children.linePtr; prevLinePtr->nextPtr != line2Ptr; prevLinePtr = prevLinePtr->nextPtr) { /* Empty loop body. */ } prevLinePtr->nextPtr = line2Ptr->nextPtr; } ckfree((char *) line2Ptr); for (parentPtr = nodePtr; parentPtr != NULL; parentPtr = parentPtr->parentPtr) { parentPtr->numLines--; } nodePtr->numChildren--; } /* * Rebalance the tree, starting from each of the endpoints of the * deletion range. This code is a tricky, because the act of * rebalancing the parent of one endpoint can cause the parent of * the other endpoint to be reallocated. The only thing it's safe * to hold onto is a pointer to a line. Thus, rebalance line2Ptr's * parent first, then use linePtr find the second parent to rebalance * second. */ if (nodePtr != linePtr->parentPtr) { Rebalance(treePtr, nodePtr); } Rebalance(treePtr, linePtr->parentPtr); if (tkBTreeDebug) { TkBTreeCheck(tree); } } /* *---------------------------------------------------------------------- * * TkBTreeTag -- * * Turn a given tag on or off for a given range of characters in * a B-tree of text. * * Results: * None. * * Side effects: * The given tag is added to the given range of characters * in the tree or removed from all those characters, depending * on the "add" argument. * *---------------------------------------------------------------------- */ void TkBTreeTag(tree, line1, ch1, line2, ch2, tagPtr, add) TkTextBTree tree; /* B-tree in which to add tag * information. */ int line1, ch1; /* Position of first character to * tag. */ int line2, ch2; /* Position of character just after * last one to tag. */ TkTextTag *tagPtr; /* Tag to associate with the range * of characters. */ int add; /* One means add tag to the given * range of characters; zero means * remove the tag from the range. */ { BTree *treePtr = (BTree *) tree; register TkTextLine *line1Ptr, *line2Ptr; TkTextSearch search; int oldState; /* * Find the lines containing the first and last characters to be tagged, * and adjust the starting and stopping locations if they don't already * point within lines. If the range would have started or stopped at the * end of a line, round it up to the beginning of the next line (right * now this restriction keeps the final newline from being tagged). */ if (line1 < 0) { line1 = 0; ch1 = 0; } line1Ptr = TkBTreeFindLine(tree, line1); if (line1Ptr == NULL) { return; } if (ch1 >= line1Ptr->numBytes) { TkTextLine *nextLinePtr; nextLinePtr = TkBTreeNextLine(line1Ptr); if (nextLinePtr == NULL) { return; } else { line1Ptr = nextLinePtr; line1++; ch1 = 0; } } if (line2 < 0) { return; } line2Ptr = TkBTreeFindLine(tree, line2); if (line2Ptr == NULL) { line2Ptr = TkBTreeFindLine(tree, treePtr->rootPtr->numLines-1); ch2 = line2Ptr->numBytes-1; } if (ch2 >= line2Ptr->numBytes) { TkTextLine *nextLinePtr; nextLinePtr = TkBTreeNextLine(line2Ptr); if (nextLinePtr == NULL) { ch2 = line2Ptr->numBytes-1; } else { line2Ptr = nextLinePtr; line2++; ch2 = 0; } } /* * See if the tag is already present or absent at the start of the * range. If the state doesn't already match what we want then add * a toggle there. */ oldState = TkBTreeCharTagged(line1Ptr, ch1, tagPtr); if ((add != 0) ^ oldState) { AddToggleToLine(line1Ptr, ch1, tagPtr); } /* * Scan the range of characters covered by the change and delete * any existing tag transitions except those on the first and * last characters. Keep track of whether the old state just before * the last character (not including any tags on it) is what we * want now; if not, then add a tag toggle there. */ TkBTreeStartSearch(tree, line1, ch1+1, line2, ch2, tagPtr, &search); while (TkBTreeNextTag(&search)) { if ((search.linePtr == line2Ptr) && (search.ch1 == ch2)) { break; } oldState ^= 1; AddToggleToLine(search.linePtr, search.ch1, tagPtr); } if ((add != 0) ^ oldState) { AddToggleToLine(line2Ptr, ch2, tagPtr); } if (tkBTreeDebug) { TkBTreeCheck(tree); } } /* *---------------------------------------------------------------------- * * TkBTreeAddAnnotation -- * * Given a filled in annotation, this procedure links it into * a B-tree structure so that it will track changes to the B-tree. * * Results: * None. * * Side effects: * AnnotPtr will be linked into its tree. Note: the storage for * annotPtr is assumed to have been malloc'ed by the caller. * *---------------------------------------------------------------------- */ /* ARGSUSED */ void TkBTreeAddAnnotation(annotPtr) TkAnnotation *annotPtr; /* Pointer to annotation. The caller must * have filled in all the fields except the * "nextPtr" field. The type should NOT be * TK_ANNOT_TOGGLE; these annotations are * managed by the TkBTreeTag procedure. */ { register TkAnnotation *annotPtr2, *prevPtr; for (prevPtr = NULL, annotPtr2 = annotPtr->linePtr->annotPtr; annotPtr2 != NULL; prevPtr = annotPtr2, annotPtr2 = annotPtr2->nextPtr) { if (annotPtr2->ch > annotPtr->ch) { break; } } if (prevPtr == NULL) { annotPtr->nextPtr = annotPtr->linePtr->annotPtr; annotPtr->linePtr->annotPtr = annotPtr; } else { annotPtr->nextPtr = prevPtr->nextPtr; prevPtr->nextPtr = annotPtr; } } /* *---------------------------------------------------------------------- * * TkBTreeRemoveAnnotation -- * * This procedure unlinks an annotation from a B-tree so that * the annotation will no longer be managed by the B-tree code. * * Results: * None. * * Side effects: * AnnotPtr will be unlinked from its tree. Note: it is up to the * caller to free the storage for annotPtr, if that is desired. * *---------------------------------------------------------------------- */ /* ARGSUSED */ void TkBTreeRemoveAnnotation(annotPtr) TkAnnotation *annotPtr; /* Pointer to annotation, which must * have been linked into tree by a previous * call to TkBTreeAddAnnotation. */ { register TkAnnotation *prevPtr; if (annotPtr->linePtr->annotPtr == annotPtr) { annotPtr->linePtr->annotPtr = annotPtr->nextPtr; } else { for (prevPtr = annotPtr->linePtr->annotPtr; /* BUG: fixed by dhopkins, prevPtr was null! prevPtr->nextPtr != annotPtr; */ (prevPtr != NULL) && (prevPtr->nextPtr != annotPtr); prevPtr = prevPtr->nextPtr) { /* Empty loop body. */ } if (prevPtr != NULL) { /* Bullet proofing by dhopkins */ prevPtr->nextPtr = annotPtr->nextPtr; } } } /* *---------------------------------------------------------------------- * * TkBTreeFindLine -- * * Find a particular line in a B-tree based on its line number. * * Results: * The return value is a pointer to the line structure for the * line whose index is "line", or NULL if no such line exists. * * Side effects: * None. * *---------------------------------------------------------------------- */ TkTextLine * TkBTreeFindLine(tree, line) TkTextBTree tree; /* B-tree in which to find line. */ int line; /* Index of desired line. */ { BTree *treePtr = (BTree *) tree; register Node *nodePtr; register TkTextLine *linePtr; int linesLeft; nodePtr = treePtr->rootPtr; linesLeft = line; if ((line < 0) || (line >= nodePtr->numLines)) { return NULL; } /* * Work down through levels of the tree until a node is found at * level 0. */ while (nodePtr->level != 0) { for (nodePtr = nodePtr->children.nodePtr; nodePtr->numLines <= linesLeft; nodePtr = nodePtr->nextPtr) { if (nodePtr == NULL) { panic("TkBTreeFindLine ran out of nodes"); } linesLeft -= nodePtr->numLines; } } /* * Work through the lines attached to the level-0 node. */ for (linePtr = nodePtr->children.linePtr; linesLeft > 0; linePtr = linePtr->nextPtr) { if (linePtr == NULL) { panic("TkBTreeFindLine ran out of lines"); } linesLeft -= 1; } return linePtr; } /* *---------------------------------------------------------------------- * * TkBTreeNextLine -- * * Given an existing line in a B-tree, this procedure locates the * next line in the B-tree. This procedure is used for scanning * through the B-tree. * * Results: * The return value is a pointer to the line that immediately * follows linePtr, or NULL if there is no such line. * * Side effects: * None. * *---------------------------------------------------------------------- */ TkTextLine * TkBTreeNextLine(linePtr) register TkTextLine *linePtr; /* Pointer to existing line in * B-tree. */ { register Node *nodePtr; if (linePtr->nextPtr != NULL) { return linePtr->nextPtr; } /* * This was the last line associated with the particular parent node. * Search up the tree for the next node, then search down from that * node to find the first line, */ for (nodePtr = linePtr->parentPtr; ; nodePtr = nodePtr->parentPtr) { if (nodePtr->nextPtr != NULL) { nodePtr = nodePtr->nextPtr; break; } if (nodePtr->parentPtr == NULL) { return (TkTextLine *) NULL; } } while (nodePtr->level > 0) { nodePtr = nodePtr->children.nodePtr; } return nodePtr->children.linePtr; } /* *---------------------------------------------------------------------- * * TkBTreeLineIndex -- * * Given a pointer to a line in a B-tree, return the numerical * index of that line. * * Results: * The result is the index of linePtr within the tree, where 0 * corresponds to the first line in the tree. * * Side effects: * None. * *---------------------------------------------------------------------- */ int TkBTreeLineIndex(linePtr) TkTextLine *linePtr; /* Pointer to existing line in * B-tree. */ { register TkTextLine *linePtr2; register Node *nodePtr, *parentPtr, *nodePtr2; int index; /* * First count how many lines precede this one in its level-0 * node. */ nodePtr = linePtr->parentPtr; index = 0; for (linePtr2 = nodePtr->children.linePtr; linePtr2 != linePtr; linePtr2 = linePtr2->nextPtr) { if (linePtr2 == NULL) { panic("TkBTreeLineIndex couldn't find line"); } index += 1; } /* * Now work up through the levels of the tree one at a time, * counting how many lines are in nodes preceding the current * node. */ for (parentPtr = nodePtr->parentPtr ; parentPtr != NULL; nodePtr = parentPtr, parentPtr = parentPtr->parentPtr) { for (nodePtr2 = parentPtr->children.nodePtr; nodePtr2 != nodePtr; nodePtr2 = nodePtr2->nextPtr) { if (nodePtr2 == NULL) { panic("TkBTreeLineIndex couldn't find node"); } index += nodePtr2->numLines; } } return index; } /* *---------------------------------------------------------------------- * * TkBTreeStartSearch -- * * This procedure sets up a search for tag transitions involving * a given tag (or all tags) in a given range of the text. * * Results: * None. * * Side effects: * The information at *searchPtr is set up so that subsequent calls * to TkBTreeNextTag will return information about the locations of * tag transitions. Note that TkBTreeNextTag must be called to get * the first transition. * *---------------------------------------------------------------------- */ void TkBTreeStartSearch(tree, line1, ch1, line2, ch2, tagPtr, searchPtr) TkTextBTree tree; /* Tree to search. */ int line1, ch1; /* Character position at which to * start search (tags at this position * will be returned). */ int line2, ch2; /* Character position at which to * stop search (tags at this position * will be returned). */ TkTextTag *tagPtr; /* Tag to search for. NULL means * search for any tag. */ register TkTextSearch *searchPtr; /* Where to store information about * search's progress. */ { register TkAnnotation *annotPtr; searchPtr->tree = tree; if (line1 < 0) { searchPtr->line1 = 0; searchPtr->ch1 = 0; } else { searchPtr->line1 = line1; searchPtr->ch1 = ch1; } searchPtr->line2 = line2; searchPtr->ch2 = ch2; searchPtr->tagPtr = tagPtr; searchPtr->allTags = (tagPtr == NULL); searchPtr->linePtr = TkBTreeFindLine(searchPtr->tree, searchPtr->line1); if (searchPtr->linePtr == NULL) { searchPtr->line1 = searchPtr->line2; searchPtr->ch1 = searchPtr->ch2; searchPtr->annotPtr = NULL; } else { for (annotPtr = searchPtr->linePtr->annotPtr; (annotPtr != NULL) && (annotPtr->ch < ch1); annotPtr = annotPtr->nextPtr) { /* Empty loop body. */ } searchPtr->annotPtr = annotPtr; } } /* *---------------------------------------------------------------------- * * TkBTreeNextTag -- * * Once a tag search has begun, successive calls to this procedure * return successive tag toggles. Note: it is NOT SAFE to call this * procedure if characters have been inserted into or deleted from * the B-tree since the call to TkBTreeStartSearch. * * Results: * The return value is 1 if another toggle was found that met the * criteria specified in the call to TkBTreeStartSearch. 0 is * returned if no more matching tag transitions were found. * * Side effects: * Information in *searchPtr is modified to update the state of the * search and indicate where the next tag toggle is located. * *---------------------------------------------------------------------- */ int TkBTreeNextTag(searchPtr) register TkTextSearch *searchPtr; /* Information about search in * progress; must have been set up by * call to TkBTreeStartSearch. */ { register TkAnnotation *annotPtr; register Node *nodePtr; register Summary *summaryPtr; if (searchPtr->linePtr == NULL) { return 0; } /* * The outermost loop iterates over lines that may potentially contain * a relevant tag transition, starting from the current line and tag. */ while (1) { /* * See if there are more tags on the current line that are relevant. */ for (annotPtr = searchPtr->annotPtr; annotPtr != NULL; annotPtr = annotPtr->nextPtr) { if ((annotPtr->type == TK_ANNOT_TOGGLE) && (searchPtr->allTags || (annotPtr->info.tagPtr == searchPtr->tagPtr))) { if ((searchPtr->line1 == searchPtr->line2) && (annotPtr->ch > searchPtr->ch2)) { goto searchOver; } searchPtr->tagPtr = annotPtr->info.tagPtr; searchPtr->ch1 = annotPtr->ch; searchPtr->annotPtr = annotPtr->nextPtr; return 1; } } /* * See if there are more lines associated with the current parent * node. If so, go back to the top of the loop to search the next * one of them. */ if (searchPtr->line1 >= searchPtr->line2) { goto searchOver; } searchPtr->line1++; if (searchPtr->linePtr->nextPtr != NULL) { searchPtr->linePtr = searchPtr->linePtr->nextPtr; searchPtr->annotPtr = searchPtr->linePtr->annotPtr; continue; } /* * Search across and up through the B-tree's node hierarchy looking * for the next node that has a relevant tag transition somewhere in * its subtree. Be sure to update the current line number as we * skip over large chunks of lines. */ nodePtr = searchPtr->linePtr->parentPtr; while (1) { while (nodePtr->nextPtr == NULL) { if (nodePtr->parentPtr == NULL) { goto searchOver; } nodePtr = nodePtr->parentPtr; } nodePtr = nodePtr->nextPtr; for (summaryPtr = nodePtr->summaryPtr; summaryPtr != NULL; summaryPtr = summaryPtr->nextPtr) { if ((searchPtr->allTags) || (summaryPtr->tagPtr == searchPtr->tagPtr)) { goto gotNodeWithTag; } } searchPtr->line1 += nodePtr->numLines; } /* * At this point we've found a subtree that has a relevant tag * transition. Now search down (and across) through that subtree * to find the first level-0 node that has a relevant tag transition. */ gotNodeWithTag: while (nodePtr->level > 0) { for (nodePtr = nodePtr->children.nodePtr; ; nodePtr = nodePtr->nextPtr) { for (summaryPtr = nodePtr->summaryPtr; summaryPtr != NULL; summaryPtr = summaryPtr->nextPtr) { if ((searchPtr->allTags) || (summaryPtr->tagPtr == searchPtr->tagPtr)) { goto nextChild; } } searchPtr->line1 += nodePtr->numLines; if (nodePtr->nextPtr == NULL) { panic("TkBTreeNextTag found incorrect tag summary info."); } } nextChild: continue; } /* * Now we're down to a level-0 node that contains a line that contains * a relevant tag transition. Set up line information and go back to * the beginning of the loop to search through lines. */ searchPtr->linePtr = nodePtr->children.linePtr; searchPtr->annotPtr = searchPtr->linePtr->annotPtr; if (searchPtr->line1 > searchPtr->line2) { goto searchOver; } continue; } searchOver: searchPtr->line1 = searchPtr->line2; searchPtr->ch1 = searchPtr->ch2; searchPtr->annotPtr = NULL; searchPtr->linePtr = NULL; return 0; } /* *---------------------------------------------------------------------- * * TkBTreeCheck -- * * This procedure runs a set of consistency checks over a B-tree * and panics if any inconsistencies are found. * * Results: * None. * * Side effects: * If a structural defect is found, the procedure panics with an * error message. * *---------------------------------------------------------------------- */ void TkBTreeCheck(tree) TkTextBTree tree; /* Tree to check. */ { BTree *treePtr = (BTree *) tree; register Summary *summaryPtr; /* * Make sure that overall there is an even count of tag transitions * for the whole text. */ for (summaryPtr = treePtr->rootPtr->summaryPtr; summaryPtr != NULL; summaryPtr = summaryPtr->nextPtr) { if (summaryPtr->toggleCount & 1) { panic("TkBTreeCheck found odd toggle count for \"%s\" (%d)", summaryPtr->tagPtr->name, summaryPtr->toggleCount); } } /* * Call a recursive procedure to do all of the rest of the checks. */ CheckNodeConsistency(treePtr->rootPtr); } /* *---------------------------------------------------------------------- * * Rebalance -- * * This procedure is called when a node of a B-tree appears to be * out of balance (too many children, or too few). It rebalances * that node and all of its ancestors in the tree. * * Results: * None. * * Side effects: * The internal structure of treePtr may change. * *---------------------------------------------------------------------- */ static void Rebalance(treePtr, nodePtr) BTree *treePtr; /* Tree that is being rebalanced. */ register Node *nodePtr; /* Node that may be out of balance. */ { /* * Loop over the entire ancestral chain of the node, working up * through the tree one node at a time until the root node has * been processed. */ for ( ; nodePtr != NULL; nodePtr = nodePtr->parentPtr) { register Node *newPtr, *childPtr; register TkTextLine *linePtr; int i; /* * Check to see if the node has too many children. If it does, * then split off all but the first MIN_CHILDREN into a separate * node following the original one. Then repeat until the * node has a decent size. */ if (nodePtr->numChildren > MAX_CHILDREN) { while (1) { /* * If the node being split is the root node, then make a * new root node above it first. */ if (nodePtr->parentPtr == NULL) { newPtr = (Node *) ckalloc(sizeof(Node)); newPtr->parentPtr = NULL; newPtr->nextPtr = NULL; newPtr->summaryPtr = NULL; newPtr->level = nodePtr->level + 1; newPtr->children.nodePtr = nodePtr; newPtr->numChildren = 1; newPtr->numLines = nodePtr->numLines; RecomputeNodeCounts(newPtr); treePtr->rootPtr = newPtr; } newPtr = (Node *) ckalloc(sizeof(Node)); newPtr->parentPtr = nodePtr->parentPtr; newPtr->nextPtr = nodePtr->nextPtr; nodePtr->nextPtr = newPtr; newPtr->summaryPtr = NULL; newPtr->level = nodePtr->level; newPtr->numChildren = nodePtr->numChildren - MIN_CHILDREN; if (nodePtr->level == 0) { for (i = MIN_CHILDREN-1, linePtr = nodePtr->children.linePtr; i > 0; i--, linePtr = linePtr->nextPtr) { /* Empty loop body. */ } newPtr->children.linePtr = linePtr->nextPtr; linePtr->nextPtr = NULL; } else { for (i = MIN_CHILDREN-1, childPtr = nodePtr->children.nodePtr; i > 0; i--, childPtr = childPtr->nextPtr) { /* Empty loop body. */ } newPtr->children.nodePtr = childPtr->nextPtr; childPtr->nextPtr = NULL; } RecomputeNodeCounts(nodePtr); nodePtr->parentPtr->numChildren++; nodePtr = newPtr; if (nodePtr->numChildren <= MAX_CHILDREN) { RecomputeNodeCounts(nodePtr); break; } } } while (nodePtr->numChildren < MIN_CHILDREN) { register Node *otherPtr; Node *halfwayNodePtr = NULL; /* Initialization needed only */ TkTextLine *halfwayLinePtr = NULL; /* to prevent cc warnings. */ int totalChildren, firstChildren, i; /* * Too few children for this node. If this is the root, * it's OK for it to have less than MIN_CHILDREN children * as long as it's got at least two. If it has only one * (and isn't at level 0), then chop the root node out of * the tree and use its child as the new root. */ if (nodePtr->parentPtr == NULL) { if ((nodePtr->numChildren == 1) && (nodePtr->level > 0)) { treePtr->rootPtr = nodePtr->children.nodePtr; treePtr->rootPtr->parentPtr = NULL; DeleteSummaries(nodePtr->summaryPtr); ckfree((char *) nodePtr); } return; } /* * Not the root. Make sure that there are siblings to * balance with. */ if (nodePtr->parentPtr->numChildren < 2) { Rebalance(treePtr, nodePtr->parentPtr); continue; } /* * Find a sibling to borrow from, and arrange for nodePtr to * be the earlier of the pair. */ if (nodePtr->nextPtr == NULL) { for (otherPtr = nodePtr->parentPtr->children.nodePtr; otherPtr->nextPtr != nodePtr; otherPtr = otherPtr->nextPtr) { /* Empty loop body. */ } nodePtr = otherPtr; } otherPtr = nodePtr->nextPtr; /* * We're going to either merge the two siblings together * into one node or redivide the children among them to * balance their loads. As preparation, join their two * child lists into a single list and remember the half-way * point in the list. */ totalChildren = nodePtr->numChildren + otherPtr->numChildren; firstChildren = totalChildren/2; if (nodePtr->children.nodePtr == NULL) { nodePtr->children = otherPtr->children; } else if (nodePtr->level == 0) { register TkTextLine *linePtr; for (linePtr = nodePtr->children.linePtr, i = 1; linePtr->nextPtr != NULL; linePtr = linePtr->nextPtr, i++) { if (i == firstChildren) { halfwayLinePtr = linePtr; } } linePtr->nextPtr = otherPtr->children.linePtr; while (i <= firstChildren) { halfwayLinePtr = linePtr; linePtr = linePtr->nextPtr; i++; } } else { register Node *childPtr; for (childPtr = nodePtr->children.nodePtr, i = 1; childPtr->nextPtr != NULL; childPtr = childPtr->nextPtr, i++) { if (i <= firstChildren) { if (i == firstChildren) { halfwayNodePtr = childPtr; } } } childPtr->nextPtr = otherPtr->children.nodePtr; while (i <= firstChildren) { halfwayNodePtr = childPtr; childPtr = childPtr->nextPtr; i++; } } /* * If the two siblings can simply be merged together, do it. */ if (totalChildren < MAX_CHILDREN) { RecomputeNodeCounts(nodePtr); nodePtr->nextPtr = otherPtr->nextPtr; nodePtr->parentPtr->numChildren--; DeleteSummaries(otherPtr->summaryPtr); ckfree((char *) otherPtr); continue; } /* * The siblings can't be merged, so just divide their * children evenly between them. */ if (nodePtr->level == 0) { otherPtr->children.linePtr = halfwayLinePtr->nextPtr; halfwayLinePtr->nextPtr = NULL; } else { otherPtr->children.nodePtr = halfwayNodePtr->nextPtr; halfwayNodePtr->nextPtr = NULL; } RecomputeNodeCounts(nodePtr); RecomputeNodeCounts(otherPtr); } } } /* *---------------------------------------------------------------------- * * RecomputeNodeCounts -- * * This procedure is called to recompute all the counts in a node * (tags, child information, etc.) by scaning the information in * its descendants. This procedure is called during rebalancing * when a node's child structure has changed. * * Results: * None. * * Side effects: * The tag counts for nodePtr are modified to reflect its current * child structure, as are its numChildren and numLines fields. * Also, all of the children's parentPtr fields are made to point * to nodePtr. * *---------------------------------------------------------------------- */ static void RecomputeNodeCounts(nodePtr) register Node *nodePtr; /* Node whose tag summary information * must be recomputed. */ { register Summary *summaryPtr, *summaryPtr2; register Node *childPtr; register TkTextLine *linePtr; register TkAnnotation *annotPtr; /* * Zero out all the existing counts for the node, but don't delete * the existing Summary records (most of them will probably be reused). */ for (summaryPtr = nodePtr->summaryPtr; summaryPtr != NULL; summaryPtr = summaryPtr->nextPtr) { summaryPtr->toggleCount = 0; } nodePtr->numChildren = 0; nodePtr->numLines = 0; /* * Scan through the children, adding the childrens' tag counts into * the node's tag counts and adding new Summarys to the node if * necessary. */ if (nodePtr->level == 0) { for (linePtr = nodePtr->children.linePtr; linePtr != NULL; linePtr = linePtr->nextPtr) { nodePtr->numChildren++; nodePtr->numLines++; linePtr->parentPtr = nodePtr; for (annotPtr = linePtr->annotPtr; annotPtr != NULL; annotPtr = annotPtr->nextPtr) { if (annotPtr->type != TK_ANNOT_TOGGLE) { continue; } for (summaryPtr = nodePtr->summaryPtr; ; summaryPtr = summaryPtr->nextPtr) { if (summaryPtr == NULL) { summaryPtr = (Summary *) ckalloc(sizeof(Summary)); summaryPtr->tagPtr = annotPtr->info.tagPtr; summaryPtr->toggleCount = 1; summaryPtr->nextPtr = nodePtr->summaryPtr; nodePtr->summaryPtr = summaryPtr; break; } if (summaryPtr->tagPtr == annotPtr->info.tagPtr) { summaryPtr->toggleCount++; break; } } } } } else { for (childPtr = nodePtr->children.nodePtr; childPtr != NULL; childPtr = childPtr->nextPtr) { nodePtr->numChildren++; nodePtr->numLines += childPtr->numLines; childPtr->parentPtr = nodePtr; for (summaryPtr2 = childPtr->summaryPtr; summaryPtr2 != NULL; summaryPtr2 = summaryPtr2->nextPtr) { for (summaryPtr = nodePtr->summaryPtr; ; summaryPtr = summaryPtr->nextPtr) { if (summaryPtr == NULL) { summaryPtr = (Summary *) ckalloc(sizeof(Summary)); summaryPtr->tagPtr = summaryPtr2->tagPtr; summaryPtr->toggleCount = summaryPtr2->toggleCount; summaryPtr->nextPtr = nodePtr->summaryPtr; nodePtr->summaryPtr = summaryPtr; break; } if (summaryPtr->tagPtr == summaryPtr2->tagPtr) { summaryPtr->toggleCount += summaryPtr2->toggleCount; break; } } } } } /* * Scan through the node's tag records again and delete any Summary * records that still have a zero count. */ summaryPtr2 = NULL; for (summaryPtr = nodePtr->summaryPtr; summaryPtr != NULL; ) { if (summaryPtr->toggleCount > 0) { summaryPtr2 = summaryPtr; summaryPtr = summaryPtr->nextPtr; continue; } if (summaryPtr2 != NULL) { summaryPtr2->nextPtr = summaryPtr->nextPtr; ckfree((char *) summaryPtr); summaryPtr = summaryPtr2->nextPtr; } else { nodePtr->summaryPtr = summaryPtr->nextPtr; ckfree((char *) summaryPtr); summaryPtr = nodePtr->summaryPtr; } } } /* *---------------------------------------------------------------------- * * AddToggleToLine -- * * Insert a tag transition at a particular point in a particular * line. * * Results: * None. * * Side effects: * LinePtr and all its ancestors in the B-tree stucture are modified * to indicate the presence of a transition (either on or off) on * tag at the given place in the given line. * *---------------------------------------------------------------------- */ static void AddToggleToLine(linePtr, index, tagPtr) TkTextLine *linePtr; /* Line within which to add * transition. */ int index; /* Character before which to * add transition. */ TkTextTag *tagPtr; /* Information about tag. */ { register TkAnnotation *annotPtr, *prevPtr; int delta = 1; /* * Find the position where the toggle should be inserted into * the array (just after prevPtr), and see if there is already * a toggle at exactly the point where we're going to insert a * new toggle. If so then the two toggles cancel; just delete * the existing toggle. */ for (prevPtr = NULL, annotPtr = linePtr->annotPtr; annotPtr != NULL; prevPtr = annotPtr, annotPtr = annotPtr->nextPtr) { if (annotPtr->ch > index) { break; } if ((annotPtr->type == TK_ANNOT_TOGGLE) && (annotPtr->ch == index) && (annotPtr->info.tagPtr == tagPtr)) { if (prevPtr == NULL) { linePtr->annotPtr = annotPtr->nextPtr; } else { prevPtr->nextPtr = annotPtr->nextPtr; } ckfree((char *) annotPtr); delta = -1; goto updateNodes; } } /* * Create a new toggle and insert it into the list. */ annotPtr = (TkAnnotation *) ckalloc(sizeof(TkAnnotation)); annotPtr->type = TK_ANNOT_TOGGLE; annotPtr->linePtr = linePtr; annotPtr->ch = index; annotPtr->info.tagPtr = tagPtr; if (prevPtr == NULL) { annotPtr->nextPtr = linePtr->annotPtr; linePtr->annotPtr = annotPtr; } else { annotPtr->nextPtr = prevPtr->nextPtr; prevPtr->nextPtr = annotPtr; } /* * Update all the nodes above this line to reflect the change in * toggle structure. */ updateNodes: ChangeNodeToggleCount(linePtr->parentPtr, tagPtr, delta); } /* *---------------------------------------------------------------------- * * ChangeNodeToggleCount -- * * This procedure increments or decrements the toggle count for * a particular tag in a particular node and all its ancestors. * * Results: * None. * * Side effects: * The toggle count for tag is adjusted up or down by "delta" in * nodePtr. * *---------------------------------------------------------------------- */ static void ChangeNodeToggleCount(nodePtr, tagPtr, delta) register Node *nodePtr; /* Node whose toggle count for a tag * must be changed. */ TkTextTag *tagPtr; /* Information about tag. */ int delta; /* Amount to add to current toggle * count for tag (may be negative). */ { register Summary *summaryPtr, *prevPtr; /* * Iterate over the node and all of its ancestors. */ for ( ; nodePtr != NULL; nodePtr = nodePtr->parentPtr) { /* * See if there's already an entry for this tag for this node. If so, * perhaps all we have to do is adjust its count. */ for (prevPtr = NULL, summaryPtr = nodePtr->summaryPtr; summaryPtr != NULL; prevPtr = summaryPtr, summaryPtr = summaryPtr->nextPtr) { if (summaryPtr->tagPtr != tagPtr) { continue; } summaryPtr->toggleCount += delta; if (summaryPtr->toggleCount > 0) { goto nextAncestor; } if (summaryPtr->toggleCount < 0) { panic("ChangeNodeToggleCount: negative toggle count"); } /* * Zero count; must remove this tag from the list. */ if (prevPtr == NULL) { nodePtr->summaryPtr = summaryPtr->nextPtr; } else { prevPtr->nextPtr = summaryPtr->nextPtr; } ckfree((char *) summaryPtr); goto nextAncestor; } /* * This tag isn't in the list. Add a new entry to the list. */ if (delta < 0) { panic("ChangeNodeToggleCount: negative delta, no tag entry"); } summaryPtr = (Summary *) ckalloc(sizeof(Summary)); summaryPtr->tagPtr = tagPtr; summaryPtr->toggleCount = delta; summaryPtr->nextPtr = nodePtr->summaryPtr; nodePtr->summaryPtr = summaryPtr; nextAncestor: continue; } } /* *---------------------------------------------------------------------- * * TkBTreeCharTagged -- * * Determine whether a particular character has a particular tag. * * Results: * The return value is 1 if the given tag is in effect at the * character given by linePtr and ch, and 0 otherwise. * * Side effects: * None. * *---------------------------------------------------------------------- */ int TkBTreeCharTagged(linePtr, ch, tagPtr) TkTextLine *linePtr; /* Line containing character of * interest. */ int ch; /* Index of character in linePtr. */ TkTextTag *tagPtr; /* Tag of interest. */ { register Node *nodePtr; register TkTextLine *siblingLinePtr; int toggles; /* * Count the number of toggles for the tag at the line level (i.e. * in all the sibling lines that precede this one, plus in this line * up to the character of interest. */ toggles = 0; for (siblingLinePtr = linePtr->parentPtr->children.linePtr; ; siblingLinePtr = siblingLinePtr->nextPtr) { register TkAnnotation *annotPtr; for (annotPtr = siblingLinePtr->annotPtr; (annotPtr != NULL) && ((siblingLinePtr != linePtr) || (annotPtr->ch <= ch)); annotPtr = annotPtr->nextPtr) { if ((annotPtr->type == TK_ANNOT_TOGGLE) && (annotPtr->info.tagPtr == tagPtr)) { toggles++; } } if (siblingLinePtr == linePtr) { break; } } /* * For each node in the ancestry of this line, count the number of * toggles of the given tag in siblings that precede that node. */ for (nodePtr = linePtr->parentPtr; nodePtr->parentPtr != NULL; nodePtr = nodePtr->parentPtr) { register Node *siblingPtr; register Summary *summaryPtr; for (siblingPtr = nodePtr->parentPtr->children.nodePtr; siblingPtr != nodePtr; siblingPtr = siblingPtr->nextPtr) { for (summaryPtr = siblingPtr->summaryPtr; summaryPtr != NULL; summaryPtr = summaryPtr->nextPtr) { if (summaryPtr->tagPtr == tagPtr) { toggles += summaryPtr->toggleCount; } } } } /* * An odd number of toggles means that the tag is present at the * given point. */ return toggles & 1; } /* *---------------------------------------------------------------------- * * TkBTreeGetTags -- * * Return information about all of the tags that are associated * with a particular character in a B-tree of text. * * Results: * The return value is a malloc-ed array containing pointers to * information for each of the tags that is associated with * the character at the position given by linePtr and ch. The * word at *numTagsPtr is filled in with the number of pointers * in the array. It is up to the caller to free the array by * passing it to free. If there are no tags at the given character * then a NULL pointer is returned and *numTagsPtr will be set to 0. * * Side effects: * None. * *---------------------------------------------------------------------- */ /* ARGSUSED */ TkTextTag ** TkBTreeGetTags(tree, linePtr, ch, numTagsPtr) TkTextBTree tree; /* Tree to check. */ TkTextLine *linePtr; /* Line containing character of interest. */ int ch; /* Index within linePtr of character for * which tag information is wanted. */ int *numTagsPtr; /* Store number of tags found at this * location. */ { register Node *nodePtr; register TkTextLine *siblingLinePtr; int src, dst; TagInfo tagInfo; #define NUM_TAG_INFOS 10 tagInfo.numTags = 0; tagInfo.arraySize = NUM_TAG_INFOS; tagInfo.tagPtrs = (TkTextTag **) ckalloc((unsigned) NUM_TAG_INFOS*sizeof(TkTextTag *)); tagInfo.counts = (int *) ckalloc((unsigned) NUM_TAG_INFOS*sizeof(int)); /* * Record tag toggles at the line level (i.e. in all the sibling * lines that precede this one, plus in this line up to the character * of interest. */ for (siblingLinePtr = linePtr->parentPtr->children.linePtr; ; siblingLinePtr = siblingLinePtr->nextPtr) { register TkAnnotation *annotPtr; for (annotPtr = siblingLinePtr->annotPtr; (annotPtr != NULL) && ((siblingLinePtr != linePtr) || (annotPtr->ch <= ch)); annotPtr = annotPtr->nextPtr) { if (annotPtr->type == TK_ANNOT_TOGGLE) { IncCount(annotPtr->info.tagPtr, 1, &tagInfo); } } if (siblingLinePtr == linePtr) { break; } } /* * For each node in the ancestry of this line, record tag toggles * for all siblings that precede that node. */ for (nodePtr = linePtr->parentPtr; nodePtr->parentPtr != NULL; nodePtr = nodePtr->parentPtr) { register Node *siblingPtr; register Summary *summaryPtr; for (siblingPtr = nodePtr->parentPtr->children.nodePtr; siblingPtr != nodePtr; siblingPtr = siblingPtr->nextPtr) { for (summaryPtr = siblingPtr->summaryPtr; summaryPtr != NULL; summaryPtr = summaryPtr->nextPtr) { IncCount(summaryPtr->tagPtr, summaryPtr->toggleCount, &tagInfo); } } } /* * Go through the tag information and squash out all of the tags * that have even toggle counts (these tags exist before the point * of interest, but not at the desired character itself). */ for (src = 0, dst = 0; src < tagInfo.numTags; src++) { if (tagInfo.counts[src] & 1) { tagInfo.tagPtrs[dst] = tagInfo.tagPtrs[src]; dst++; } } *numTagsPtr = dst; ckfree((char *) tagInfo.counts); if (dst == 0) { ckfree((char *) tagInfo.tagPtrs); return NULL; } return tagInfo.tagPtrs; } /* *---------------------------------------------------------------------- * * IncCount -- * * This is a utility procedure used by TkBTreeGetTags. It * increments the count for a particular tag, adding a new * entry for that tag if there wasn't one previously. * * Results: * None. * * Side effects: * The information at *tagInfoPtr may be modified, and the arrays * may be reallocated to make them larger. * *---------------------------------------------------------------------- */ static void IncCount(tagPtr, inc, tagInfoPtr) TkTextTag *tagPtr; /* Handle for tag. */ int inc; /* Amount by which to increment tag count. */ TagInfo *tagInfoPtr; /* Holds cumulative information about tags; * increment count here. */ { register TkTextTag **tagPtrPtr; int count; for (tagPtrPtr = tagInfoPtr->tagPtrs, count = tagInfoPtr->numTags; count > 0; tagPtrPtr++, count--) { if (*tagPtrPtr == tagPtr) { tagInfoPtr->counts[tagInfoPtr->numTags-count] += inc; return; } } /* * There isn't currently an entry for this tag, so we have to * make a new one. If the arrays are full, then enlarge the * arrays first. */ if (tagInfoPtr->numTags == tagInfoPtr->arraySize) { TkTextTag **newTags; int *newCounts, newSize; newSize = 2*tagInfoPtr->arraySize; newTags = (TkTextTag **) ckalloc((unsigned) (newSize*sizeof(TkTextTag *))); memcpy((VOID *) newTags, (VOID *) tagInfoPtr->tagPtrs, tagInfoPtr->arraySize * sizeof(TkTextTag *)); ckfree((char *) tagInfoPtr->tagPtrs); tagInfoPtr->tagPtrs = newTags; newCounts = (int *) ckalloc((unsigned) (newSize*sizeof(int))); memcpy((VOID *) newCounts, (VOID *) tagInfoPtr->counts, tagInfoPtr->arraySize * sizeof(int)); ckfree((char *) tagInfoPtr->counts); tagInfoPtr->counts = newCounts; tagInfoPtr->arraySize = newSize; } tagInfoPtr->tagPtrs[tagInfoPtr->numTags] = tagPtr; tagInfoPtr->counts[tagInfoPtr->numTags] = inc; tagInfoPtr->numTags++; } /* *---------------------------------------------------------------------- * * CheckNodeConsistency -- * * This procedure is called as part of consistency checking for * B-trees: it checks several aspects of a node and also runs * checks recursively on the node's children. * * Results: * None. * * Side effects: * If anything suspicious is found in the tree structure, the * procedure panics. * *---------------------------------------------------------------------- */ static void CheckNodeConsistency(nodePtr) register Node *nodePtr; /* Node whose subtree should be * checked. */ { register Node *childNodePtr; register Summary *summaryPtr, *summaryPtr2; register TkAnnotation *annotPtr; register TkTextLine *linePtr; register char *p; int numChildren, numLines, toggleCount, minChildren, index, numBytes; if (nodePtr->parentPtr != NULL) { minChildren = MIN_CHILDREN; } else if (nodePtr->level > 0) { minChildren = 2; } else { minChildren = 1; } if ((nodePtr->numChildren < minChildren) || (nodePtr->numChildren > MAX_CHILDREN)) { panic("CheckNodeConsistency found bad child count (%d)", nodePtr->numChildren); } numChildren = 0; numLines = 0; if (nodePtr->level == 0) { for (linePtr = nodePtr->children.linePtr; linePtr != NULL; linePtr = linePtr->nextPtr) { if (linePtr->parentPtr != nodePtr) { panic("CheckNodeConsistency found line that %s", "didn't point to parent"); } for (p = linePtr->bytes, numBytes = 0; *p != 0; p++, numBytes++) { if ((*p == '\n') && (numBytes != linePtr->numBytes-1)) { panic("CheckNodeConsistency found line with extra newline"); } } if (numBytes != linePtr->numBytes) { panic("CheckNodeConsistency found line with bad numBytes"); } if (linePtr->bytes[numBytes-1] != '\n') { panic("CheckNodeConsistency found line with no newline"); } index = 0; for (annotPtr = linePtr->annotPtr; annotPtr != NULL; annotPtr = annotPtr->nextPtr) { if (annotPtr->ch < index) { panic("CheckNodeConsistency found %s (%d %d)", "out-of-order tag indices", index, annotPtr->ch); } index = annotPtr->ch; if (annotPtr->type == TK_ANNOT_TOGGLE) { for (summaryPtr = nodePtr->summaryPtr; ; summaryPtr = summaryPtr->nextPtr) { if (summaryPtr == NULL) { panic("CheckNodeConsistency found line %s", "tag with no node tag: %s", summaryPtr->tagPtr->name); } if (summaryPtr->tagPtr == annotPtr->info.tagPtr) { break; } } } } numChildren++; numLines++; } } else { for (childNodePtr = nodePtr->children.nodePtr; childNodePtr != NULL; childNodePtr = childNodePtr->nextPtr) { CheckNodeConsistency(childNodePtr); for (summaryPtr = childNodePtr->summaryPtr; summaryPtr != NULL; summaryPtr = summaryPtr->nextPtr) { for (summaryPtr2 = nodePtr->summaryPtr; ; summaryPtr2 = summaryPtr2->nextPtr) { if (summaryPtr2 == NULL) { panic("CheckNodeConsistency found %s (%s)", "node tag with no parent tag", summaryPtr->tagPtr->name); } if (summaryPtr->tagPtr == summaryPtr2->tagPtr) { break; } } } numChildren++; numLines += childNodePtr->numLines; if (childNodePtr->parentPtr != nodePtr) { panic("CheckNodeConsistency found node that %s", "didn't point to parent"); } if (childNodePtr->level != (nodePtr->level-1)) { panic("CheckNodeConsistency found level mismatch (%d %d)", nodePtr->level, childNodePtr->level); } } } if (numChildren != nodePtr->numChildren) { panic("CheckNodeConsistency found mismatch in numChildren (%d %d)", numChildren, nodePtr->numChildren); } if (numLines != nodePtr->numLines) { panic("CheckNodeConsistency found mismatch in numLines (%d %d)", numLines, nodePtr->numLines); } for (summaryPtr = nodePtr->summaryPtr; summaryPtr != NULL; summaryPtr = summaryPtr->nextPtr) { toggleCount = 0; if (nodePtr->level == 0) { for (linePtr = nodePtr->children.linePtr; linePtr != NULL; linePtr = linePtr->nextPtr) { for (annotPtr = linePtr->annotPtr; annotPtr != NULL; annotPtr = annotPtr->nextPtr) { if (annotPtr->info.tagPtr == summaryPtr->tagPtr) { toggleCount++; } } } } else { for (childNodePtr = nodePtr->children.nodePtr; childNodePtr != NULL; childNodePtr = childNodePtr->nextPtr) { for (summaryPtr2 = childNodePtr->summaryPtr; summaryPtr2 != NULL; summaryPtr2 = summaryPtr2->nextPtr) { if (summaryPtr2->tagPtr == summaryPtr->tagPtr) { toggleCount += summaryPtr2->toggleCount; } } } } if (toggleCount != summaryPtr->toggleCount) { panic("CheckNodeConsistency found mismatch in toggleCount (%d %d)", toggleCount, summaryPtr->toggleCount); } for (summaryPtr2 = summaryPtr->nextPtr; summaryPtr2 != NULL; summaryPtr2 = summaryPtr2->nextPtr) { if (summaryPtr2->tagPtr == summaryPtr->tagPtr) { panic("CheckNodeConsistency found duplicated node tag: %s", summaryPtr->tagPtr->name); } } } } /* *---------------------------------------------------------------------- * * TkBTreeNumLines -- * * This procedure returns a count of the number of lines of * text present in a given B-tree. * * Results: * The return value is a count of the number of lines in tree. * * Side effects: * None. * *---------------------------------------------------------------------- */ int TkBTreeNumLines(tree) TkTextBTree tree; /* Information about tree. */ { BTree *treePtr = (BTree *) tree; return treePtr->rootPtr->numLines; } micropolis-activity/src/tk/tkmenu.c0000664000076400007640000017340410724145723017720 0ustar simcitysimcity/* * tkMenu.c -- * * This module implements menus for the Tk toolkit. The menus * support normal button entries, plus check buttons, radio * buttons, iconic forms of all of the above, and separator * entries. * * Copyright 1990-1992 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkMenu.c,v 1.37 92/08/24 09:24:04 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tkconfig.h" #include "default.h" #include "tkint.h" /* * One of the following data structures is kept for each entry of each * menu managed by this file: */ typedef struct MenuEntry { int type; /* Type of menu entry; see below for * valid types. */ struct Menu *menuPtr; /* Menu with which this entry is associated. */ char *label; /* Main text label displayed in entry (NULL * if no label). Malloc'ed. */ int labelLength; /* Number of non-NULL characters in label. */ int underline; /* Index of character to underline. */ Pixmap bitmap; /* Bitmap to display in menu entry, or None. * If not None then label is ignored. */ char *accel; /* Accelerator string displayed at right * of menu entry. NULL means no such * accelerator. Malloc'ed. */ int accelLength; /* Number of non-NULL characters in * accelerator. */ /* * Information related to displaying entry: */ Tk_Uid state; /* State of button for display purposes: * normal, active, or disabled. */ int height; /* Number of pixels occupied by entry in * vertical dimension. */ int y; /* Y-coordinate of topmost pixel in entry. */ int selectorDiameter; /* Size of selector display, in pixels. */ Tk_3DBorder border; /* Structure used to draw background for * entry. NULL means use overall border * for menu. */ Tk_3DBorder activeBorder; /* Used to draw background and border when * element is active. NULL means use * activeBorder from menu. */ XFontStruct *fontPtr; /* Text font for menu entries. NULL means * use overall font for menu. */ GC textGC; /* GC for drawing text in entry. NULL means * use overall textGC for menu. */ GC activeGC; /* GC for drawing text in entry when active. * NULL means use overall activeGC for * menu. */ GC disabledGC; /* Used to produce disabled effect for entry. * NULL means use overall disabledGC from * menu structure. See comments for * disabledFg in menu structure for more * information. */ /* * Information used to implement this entry's action: */ char *command; /* Command to invoke when entry is invoked. * Malloc'ed. */ char *name; /* Name of variable (for check buttons and * radio buttons) or menu (for cascade * entries). Malloc'ed.*/ char *onValue; /* Value to store in variable when selected * (only for radio and check buttons). * Malloc'ed. */ char *offValue; /* Value to store in variable when not * selected (only for check buttons). * Malloc'ed. */ /* * Miscellaneous information: */ int flags; /* Various flags. See below for definitions. */ } MenuEntry; /* * Flag values defined for menu entries: * * ENTRY_SELECTED: Non-zero means this is a radio or check * button and that it should be drawn in * the "selected" state. * ENTRY_NEEDS_REDISPLAY: Non-zero means the entry should be redisplayed. */ #define ENTRY_SELECTED 1 #define ENTRY_NEEDS_REDISPLAY 4 /* * Types defined for MenuEntries: */ #define COMMAND_ENTRY 0 #define SEPARATOR_ENTRY 1 #define CHECK_BUTTON_ENTRY 2 #define RADIO_BUTTON_ENTRY 3 #define CASCADE_ENTRY 4 /* * Mask bits for above types: */ #define COMMAND_MASK TK_CONFIG_USER_BIT #define SEPARATOR_MASK (TK_CONFIG_USER_BIT << 1) #define CHECK_BUTTON_MASK (TK_CONFIG_USER_BIT << 2) #define RADIO_BUTTON_MASK (TK_CONFIG_USER_BIT << 3) #define CASCADE_MASK (TK_CONFIG_USER_BIT << 4) #define ALL_MASK (COMMAND_MASK | SEPARATOR_MASK \ | CHECK_BUTTON_MASK | RADIO_BUTTON_MASK | CASCADE_MASK) /* * Configuration specs for individual menu entries: */ static Tk_ConfigSpec entryConfigSpecs[] = { {TK_CONFIG_BORDER, "-activebackground", (char *) NULL, (char *) NULL, DEF_MENU_ENTRY_ACTIVE_BG, Tk_Offset(MenuEntry, activeBorder), COMMAND_MASK|CHECK_BUTTON_MASK|RADIO_BUTTON_MASK|CASCADE_MASK |TK_CONFIG_NULL_OK}, {TK_CONFIG_STRING, "-accelerator", (char *) NULL, (char *) NULL, DEF_MENU_ENTRY_ACCELERATOR, Tk_Offset(MenuEntry, accel), COMMAND_MASK|CHECK_BUTTON_MASK|RADIO_BUTTON_MASK|CASCADE_MASK}, {TK_CONFIG_BORDER, "-background", (char *) NULL, (char *) NULL, DEF_MENU_ENTRY_BG, Tk_Offset(MenuEntry, border), COMMAND_MASK|CHECK_BUTTON_MASK|RADIO_BUTTON_MASK|CASCADE_MASK |TK_CONFIG_NULL_OK}, #if defined(USE_XPM3) {TK_CONFIG_PIXMAP, "-bitmap", (char *) NULL, (char *) NULL, DEF_MENU_ENTRY_BITMAP, Tk_Offset(MenuEntry, bitmap), COMMAND_MASK|CHECK_BUTTON_MASK|RADIO_BUTTON_MASK|CASCADE_MASK |TK_CONFIG_NULL_OK}, #else {TK_CONFIG_BITMAP, "-bitmap", (char *) NULL, (char *) NULL, DEF_MENU_ENTRY_BITMAP, Tk_Offset(MenuEntry, bitmap), COMMAND_MASK|CHECK_BUTTON_MASK|RADIO_BUTTON_MASK|CASCADE_MASK |TK_CONFIG_NULL_OK}, #endif {TK_CONFIG_STRING, "-command", (char *) NULL, (char *) NULL, DEF_MENU_ENTRY_COMMAND, Tk_Offset(MenuEntry, command), COMMAND_MASK|CHECK_BUTTON_MASK|RADIO_BUTTON_MASK|CASCADE_MASK}, {TK_CONFIG_FONT, "-font", (char *) NULL, (char *) NULL, DEF_MENU_ENTRY_FONT, Tk_Offset(MenuEntry, fontPtr), COMMAND_MASK|CHECK_BUTTON_MASK|RADIO_BUTTON_MASK|CASCADE_MASK |TK_CONFIG_NULL_OK}, {TK_CONFIG_STRING, "-label", (char *) NULL, (char *) NULL, DEF_MENU_ENTRY_LABEL, Tk_Offset(MenuEntry, label), COMMAND_MASK|CHECK_BUTTON_MASK|RADIO_BUTTON_MASK|CASCADE_MASK}, {TK_CONFIG_STRING, "-menu", (char *) NULL, (char *) NULL, DEF_MENU_ENTRY_MENU, Tk_Offset(MenuEntry, name), CASCADE_MASK}, {TK_CONFIG_STRING, "-offvalue", (char *) NULL, (char *) NULL, DEF_MENU_ENTRY_OFF_VALUE, Tk_Offset(MenuEntry, offValue), CHECK_BUTTON_MASK}, {TK_CONFIG_UID, "-state", (char *) NULL, (char *) NULL, DEF_MENU_ENTRY_STATE, Tk_Offset(MenuEntry, state), COMMAND_MASK|CHECK_BUTTON_MASK|RADIO_BUTTON_MASK|CASCADE_MASK |TK_CONFIG_DONT_SET_DEFAULT}, {TK_CONFIG_STRING, "-onvalue", (char *) NULL, (char *) NULL, DEF_MENU_ENTRY_ON_VALUE, Tk_Offset(MenuEntry, onValue), CHECK_BUTTON_MASK}, {TK_CONFIG_STRING, "-value", (char *) NULL, (char *) NULL, DEF_MENU_ENTRY_VALUE, Tk_Offset(MenuEntry, onValue), RADIO_BUTTON_MASK}, {TK_CONFIG_STRING, "-variable", (char *) NULL, (char *) NULL, DEF_MENU_ENTRY_CHECK_VARIABLE, Tk_Offset(MenuEntry, name), CHECK_BUTTON_MASK}, {TK_CONFIG_STRING, "-variable", (char *) NULL, (char *) NULL, DEF_MENU_ENTRY_RADIO_VARIABLE, Tk_Offset(MenuEntry, name), RADIO_BUTTON_MASK}, {TK_CONFIG_INT, "-underline", (char *) NULL, (char *) NULL, DEF_MENU_ENTRY_UNDERLINE, Tk_Offset(MenuEntry, underline), COMMAND_MASK|CHECK_BUTTON_MASK|RADIO_BUTTON_MASK|CASCADE_MASK |TK_CONFIG_DONT_SET_DEFAULT}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; /* * A data structure of the following type is kept for each * menu managed by this file: */ typedef struct Menu { Tk_Window tkwin; /* Window that embodies the pane. NULL * means that the window has been destroyed * but the data structures haven't yet been * cleaned up.*/ Tcl_Interp *interp; /* Interpreter associated with menu. */ MenuEntry **entries; /* Array of pointers to all the entries * in the menu. NULL means no entries. */ int numEntries; /* Number of elements in entries. */ int active; /* Index of active entry. -1 means * nothing active. */ Tk_Uid group; /* Used to allow event sharing between * related menus and menu buttons. */ /* * Information used when displaying widget: */ Tk_3DBorder border; /* Structure used to draw 3-D * border and background for menu. */ int borderWidth; /* Width of border around whole menu. */ Tk_3DBorder activeBorder; /* Used to draw background and border for * active element (if any). */ int activeBorderWidth; /* Width of border around active element. */ XFontStruct *fontPtr; /* Text font for menu entries. */ XColor *fg; /* Foreground color for entries. */ GC textGC; /* GC for drawing text and other features * of menu entries. */ XColor *disabledFg; /* Foreground color when disabled. NULL * means use normalFg with a 50% stipple * instead. */ Pixmap gray; /* Bitmap for drawing disabled entries in * a stippled fashion. None means not * allocated yet. */ GC disabledGC; /* Used to produce disabled effect. If * disabledFg isn't NULL, this GC is used to * draw text and icons for disabled entries. * Otherwise text and icons are drawn with * normalGC and this GC is used to stipple * background across them. */ XColor *activeFg; /* Foreground color for active entry. */ GC activeGC; /* GC for drawing active entry. */ XColor *selectorFg; /* Color for selectors in radio and check * button entries. */ GC selectorGC; /* For drawing selectors. */ int selectorSpace; /* Number of pixels to allow for displaying * selectors in menu entries (includes extra * space around selector). */ int labelWidth; /* Number of pixels to allow for displaying * labels in menu entries. */ /* * Miscellaneous information: */ Cursor cursor; /* Current cursor for window, or None. */ MenuEntry *postedCascade; /* Points to menu entry for cascaded * submenu that is currently posted, or * NULL if no submenu posted. */ int flags; /* Various flags; see below for * definitions. */ } Menu; /* * Flag bits for menus: * * REDRAW_PENDING: Non-zero means a DoWhenIdle handler * has already been queued to redraw * this window. * RESIZE_PENDING: Non-zero means a call to ComputeMenuGeometry * has already been scheduled. */ #define REDRAW_PENDING 1 #define RESIZE_PENDING 2 /* * Configuration specs valid for the menu as a whole: */ static Tk_ConfigSpec configSpecs[] = { {TK_CONFIG_BORDER, "-activebackground", "activeBackground", "Foreground", DEF_MENU_ACTIVE_BG_COLOR, Tk_Offset(Menu, activeBorder), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-activebackground", "activeBackground", "Foreground", DEF_MENU_ACTIVE_BG_MONO, Tk_Offset(Menu, activeBorder), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_PIXELS, "-activeborderwidth", "activeBorderWidth", "BorderWidth", DEF_MENU_ACTIVE_BORDER_WIDTH, Tk_Offset(Menu, activeBorderWidth), 0}, {TK_CONFIG_COLOR, "-activeforeground", "activeForeground", "Background", DEF_MENU_ACTIVE_FG_COLOR, Tk_Offset(Menu, activeFg), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_COLOR, "-activeforeground", "activeForeground", "Background", DEF_MENU_ACTIVE_FG_MONO, Tk_Offset(Menu, activeFg), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_BORDER, "-background", "background", "Background", DEF_MENU_BG_COLOR, Tk_Offset(Menu, border), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-background", "background", "Background", DEF_MENU_BG_MONO, Tk_Offset(Menu, border), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_SYNONYM, "-bd", "borderWidth", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_SYNONYM, "-bg", "background", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", DEF_MENU_BORDER_WIDTH, Tk_Offset(Menu, borderWidth), 0}, {TK_CONFIG_ACTIVE_CURSOR, "-cursor", "cursor", "Cursor", DEF_MENU_CURSOR, Tk_Offset(Menu, cursor), TK_CONFIG_NULL_OK}, {TK_CONFIG_COLOR, "-disabledforeground", "disabledForeground", "DisabledForeground", DEF_MENU_DISABLED_FG_COLOR, Tk_Offset(Menu, disabledFg), TK_CONFIG_COLOR_ONLY|TK_CONFIG_NULL_OK}, {TK_CONFIG_COLOR, "-disabledforeground", "disabledForeground", "DisabledForeground", DEF_MENU_DISABLED_FG_MONO, Tk_Offset(Menu, disabledFg), TK_CONFIG_MONO_ONLY|TK_CONFIG_NULL_OK}, {TK_CONFIG_SYNONYM, "-fg", "foreground", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_FONT, "-font", "font", "Font", DEF_MENU_FONT, Tk_Offset(Menu, fontPtr), 0}, {TK_CONFIG_COLOR, "-foreground", "foreground", "Foreground", DEF_MENU_FG, Tk_Offset(Menu, fg), 0}, {TK_CONFIG_COLOR, "-selector", "selector", "Foreground", DEF_MENU_SELECTOR_COLOR, Tk_Offset(Menu, selectorFg), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_COLOR, "-selector", "selector", "Foreground", DEF_MENU_SELECTOR_MONO, Tk_Offset(Menu, selectorFg), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; /* * Forward declarations for procedures defined later in this file: */ static int ActivateMenuEntry _ANSI_ARGS_((Menu *menuPtr, int index)); static void ComputeMenuGeometry _ANSI_ARGS_(( ClientData clientData)); static int ConfigureMenu _ANSI_ARGS_((Tcl_Interp *interp, Menu *menuPtr, int argc, char **argv, int flags)); static int ConfigureMenuEntry _ANSI_ARGS_((Tcl_Interp *interp, Menu *menuPtr, MenuEntry *mePtr, int index, int argc, char **argv, int flags)); static void DestroyMenu _ANSI_ARGS_((ClientData clientData)); static void DestroyMenuEntry _ANSI_ARGS_((ClientData clientData)); static void DisplayMenu _ANSI_ARGS_((ClientData clientData)); static void EventuallyRedrawMenu _ANSI_ARGS_((Menu *menuPtr, int index)); static int GetMenuIndex _ANSI_ARGS_((Tcl_Interp *interp, Menu *menuPtr, char *string, int *indexPtr)); static void MenuEventProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); static char * MenuVarProc _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, char *name1, char *name2, int flags)); static int MenuWidgetCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); static int PostSubmenu _ANSI_ARGS_((Tcl_Interp *interp, Menu *menuPtr, MenuEntry *mePtr)); /* *-------------------------------------------------------------- * * Tk_MenuCmd -- * * This procedure is invoked to process the "menu" Tcl * command. See the user documentation for details on * what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ int Tk_MenuCmd(clientData, interp, argc, argv) ClientData clientData; /* Main window associated with * interpreter. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { Tk_Window tkwin = (Tk_Window) clientData; Tk_Window new; register Menu *menuPtr; XSetWindowAttributes atts; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " pathName ?options?\"", (char *) NULL); return TCL_ERROR; } /* * Create the new window. Set override-redirect so the window * manager won't add a border or argue about placement, and set * save-under so that the window can pop up and down without a * lot of re-drawing. */ new = Tk_CreateWindowFromPath(interp, tkwin, argv[1], ""); if (new == NULL) { return TCL_ERROR; } atts.override_redirect = True; atts.save_under = True; Tk_ChangeWindowAttributes(new, CWOverrideRedirect|CWSaveUnder, &atts); /* * Initialize the data structure for the menu. */ menuPtr = (Menu *) ckalloc(sizeof(Menu)); menuPtr->tkwin = new; menuPtr->interp = interp; menuPtr->entries = NULL; menuPtr->numEntries = 0; menuPtr->active = -1; menuPtr->group = NULL; menuPtr->border = NULL; menuPtr->activeBorder = NULL; menuPtr->fontPtr = NULL; menuPtr->fg = NULL; menuPtr->textGC = None; menuPtr->disabledFg = NULL; menuPtr->gray = None; menuPtr->disabledGC = None; menuPtr->activeFg = NULL; menuPtr->activeGC = None; menuPtr->selectorFg = NULL; menuPtr->selectorGC = None; menuPtr->cursor = None; menuPtr->postedCascade = NULL; menuPtr->flags = 0; Tk_SetClass(new, "Menu"); Tk_CreateEventHandler(menuPtr->tkwin, ExposureMask|StructureNotifyMask, MenuEventProc, (ClientData) menuPtr); Tcl_CreateCommand(interp, Tk_PathName(menuPtr->tkwin), MenuWidgetCmd, (ClientData) menuPtr, (void (*)()) NULL); if (ConfigureMenu(interp, menuPtr, argc-2, argv+2, 0) != TCL_OK) { goto error; } interp->result = Tk_PathName(menuPtr->tkwin); return TCL_OK; error: Tk_DestroyWindow(menuPtr->tkwin); return TCL_ERROR; } /* *-------------------------------------------------------------- * * MenuWidgetCmd -- * * This procedure is invoked to process the Tcl command * that corresponds to a widget managed by this module. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ static int MenuWidgetCmd(clientData, interp, argc, argv) ClientData clientData; /* Information about menu widget. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { register Menu *menuPtr = (Menu *) clientData; register MenuEntry *mePtr; int result = TCL_OK; int length, type; char c; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " option ?arg arg ...?\"", (char *) NULL); return TCL_ERROR; } Tk_Preserve((ClientData) menuPtr); c = argv[1][0]; length = strlen(argv[1]); if ((c == 'a') && (strncmp(argv[1], "activate", length) == 0) && (length >= 2)) { int index; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " activate index\"", (char *) NULL); goto error; } if (GetMenuIndex(interp, menuPtr, argv[2], &index) != TCL_OK) { goto error; } if (menuPtr->active == index) { goto done; } if (index >= 0) { if ((menuPtr->entries[index]->type == SEPARATOR_ENTRY) || (menuPtr->entries[index]->state == tkDisabledUid)) { index = -1; } } result = ActivateMenuEntry(menuPtr, index); } else if ((c == 'a') && (strncmp(argv[1], "add", length) == 0) && (length >= 2)) { MenuEntry **newEntries; if (argc < 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " add type ?options?\"", (char *) NULL); goto error; } /* * Figure out the type of the new entry. */ c = argv[2][0]; length = strlen(argv[2]); if ((c == 'c') && (strncmp(argv[2], "cascade", length) == 0) && (length >= 2)) { type = CASCADE_ENTRY; } else if ((c == 'c') && (strncmp(argv[2], "checkbutton", length) == 0) && (length >= 2)) { type = CHECK_BUTTON_ENTRY; } else if ((c == 'c') && (strncmp(argv[2], "command", length) == 0) && (length >= 2)) { type = COMMAND_ENTRY; } else if ((c == 'r') && (strncmp(argv[2], "radiobutton", length) == 0)) { type = RADIO_BUTTON_ENTRY; } else if ((c == 's') && (strncmp(argv[2], "separator", length) == 0)) { type = SEPARATOR_ENTRY; } else { Tcl_AppendResult(interp, "bad menu entry type \"", argv[2], "\": must be cascade, checkbutton, ", "command, radiobutton, or separator", (char *) NULL); goto error; } /* * Add a new entry to the end of the menu's array of entries, * and process options for it. */ mePtr = (MenuEntry *) ckalloc(sizeof(MenuEntry)); newEntries = (MenuEntry **) ckalloc((unsigned) ((menuPtr->numEntries+1)*sizeof(MenuEntry *))); if (menuPtr->numEntries != 0) { memcpy((VOID *) newEntries, (VOID *) menuPtr->entries, menuPtr->numEntries*sizeof(MenuEntry *)); ckfree((char *) menuPtr->entries); } menuPtr->entries = newEntries; menuPtr->entries[menuPtr->numEntries] = mePtr; menuPtr->numEntries++; mePtr->type = type; mePtr->menuPtr = menuPtr; mePtr->label = NULL; mePtr->underline = -1; mePtr->bitmap = None; mePtr->accel = NULL; mePtr->state = tkNormalUid; mePtr->border = NULL; mePtr->activeBorder = NULL; mePtr->fontPtr = NULL; mePtr->textGC = None; mePtr->activeGC = None; mePtr->disabledGC = None; mePtr->command = NULL; mePtr->name = NULL; mePtr->onValue = NULL; mePtr->offValue = NULL; mePtr->flags = 0; if (ConfigureMenuEntry(interp, menuPtr, mePtr, menuPtr->numEntries-1, argc-3, argv+3, 0) != TCL_OK) { DestroyMenuEntry((ClientData) mePtr); menuPtr->numEntries--; goto error; } } else if ((c == 'c') && (strncmp(argv[1], "configure", length) == 0)) { if (argc == 2) { result = Tk_ConfigureInfo(interp, menuPtr->tkwin, configSpecs, (char *) menuPtr, (char *) NULL, 0); } else if (argc == 3) { result = Tk_ConfigureInfo(interp, menuPtr->tkwin, configSpecs, (char *) menuPtr, argv[2], 0); } else { result = ConfigureMenu(interp, menuPtr, argc-2, argv+2, TK_CONFIG_ARGV_ONLY); } } else if ((c == 'd') && (strncmp(argv[1], "delete", length) == 0) && (length >= 2)) { int index, i; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " delete index\"", (char *) NULL); goto error; } if (GetMenuIndex(interp, menuPtr, argv[2], &index) != TCL_OK) { goto error; } if (index < 0) { goto done; } Tk_EventuallyFree((ClientData) menuPtr->entries[index], DestroyMenuEntry); for (i = index; i < menuPtr->numEntries-1; i++) { menuPtr->entries[i] = menuPtr->entries[i+1]; } menuPtr->numEntries -= 1; if (menuPtr->active == index) { menuPtr->active = -1; } else if (menuPtr->active > index) { menuPtr->active -= 1; } if (!(menuPtr->flags & RESIZE_PENDING)) { menuPtr->flags |= RESIZE_PENDING; Tk_DoWhenIdle(ComputeMenuGeometry, (ClientData) menuPtr); } } else if ((c == 'd') && (strncmp(argv[1], "disable", length) == 0) && (length >= 2)) { int index; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " disable index\"", (char *) NULL); goto error; } if (GetMenuIndex(interp, menuPtr, argv[2], &index) != TCL_OK) { goto error; } if (index < 0) { goto done; } menuPtr->entries[index]->state = tkDisabledUid; if (menuPtr->active == index) { menuPtr->active = -1; } EventuallyRedrawMenu(menuPtr, index); } else if ((c == 'e') && (length >= 3) && (strncmp(argv[1], "enable", length) == 0)) { int index; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " enable index\"", (char *) NULL); goto error; } if (GetMenuIndex(interp, menuPtr, argv[2], &index) != TCL_OK) { goto error; } if (index < 0) { goto done; } menuPtr->entries[index]->state = tkNormalUid; EventuallyRedrawMenu(menuPtr, index); } else if ((c == 'e') && (length >= 3) && (strncmp(argv[1], "entryconfigure", length) == 0)) { int index; if (argc < 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " entryconfigure index ?option value ...?\"", (char *) NULL); goto error; } if (GetMenuIndex(interp, menuPtr, argv[2], &index) != TCL_OK) { goto error; } if (index < 0) { goto done; } mePtr = menuPtr->entries[index]; Tk_Preserve((ClientData) mePtr); if (argc == 3) { result = Tk_ConfigureInfo(interp, menuPtr->tkwin, entryConfigSpecs, (char *) mePtr, (char *) NULL, COMMAND_MASK << mePtr->type); } else if (argc == 4) { result = Tk_ConfigureInfo(interp, menuPtr->tkwin, entryConfigSpecs, (char *) mePtr, argv[3], COMMAND_MASK << mePtr->type); } else { result = ConfigureMenuEntry(interp, menuPtr, mePtr, index, argc-3, argv+3, TK_CONFIG_ARGV_ONLY | COMMAND_MASK << mePtr->type); } Tk_Release((ClientData) mePtr); } else if ((c == 'i') && (strncmp(argv[1], "index", length) == 0) && (length >= 3)) { int index; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " index string\"", (char *) NULL); goto error; } if (GetMenuIndex(interp, menuPtr, argv[2], &index) != TCL_OK) { goto error; } if (index < 0) { interp->result = "none"; } else { sprintf(interp->result, "%d", index); } } else if ((c == 'i') && (strncmp(argv[1], "invoke", length) == 0) && (length >= 3)) { int index; if (argc != 3) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " invoke index\"", (char *) NULL); goto error; } if (GetMenuIndex(interp, menuPtr, argv[2], &index) != TCL_OK) { goto error; } if (index < 0) { goto done; } mePtr = menuPtr->entries[index]; if (mePtr->state == tkDisabledUid) { goto done; } Tk_Preserve((ClientData) mePtr); if (mePtr->type == CHECK_BUTTON_ENTRY) { if (mePtr->flags & ENTRY_SELECTED) { Tcl_SetVar(interp, mePtr->name, mePtr->offValue, TCL_GLOBAL_ONLY); } else { Tcl_SetVar(interp, mePtr->name, mePtr->onValue, TCL_GLOBAL_ONLY); } } else if (mePtr->type == RADIO_BUTTON_ENTRY) { Tcl_SetVar(interp, mePtr->name, mePtr->onValue, TCL_GLOBAL_ONLY); } if (mePtr->command != NULL) { result = Tcl_GlobalEval(interp, mePtr->command); } Tk_Release((ClientData) mePtr); } else if ((c == 'p') && (strncmp(argv[1], "post", length) == 0)) { int x, y, tmp; Tk_Uid group; if ((argc != 4) && (argc != 5)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " post x y ?group?\"", (char *) NULL); goto error; } if ((Tcl_GetInt(interp, argv[2], &x) != TCL_OK) || (Tcl_GetInt(interp, argv[3], &y) != TCL_OK)) { goto error; } if (argc == 5) { group = Tk_GetUid(argv[4]); } else { group = Tk_GetUid("default"); } /* * Adjust the position of the menu if necessary to keep it * on-screen. */ tmp = WidthOfScreen(Tk_Screen(menuPtr->tkwin)) - Tk_Width(menuPtr->tkwin); if (x > tmp) { x = tmp; } if (x < 0) { x = 0; } tmp = HeightOfScreen(Tk_Screen(menuPtr->tkwin)) - Tk_Height(menuPtr->tkwin); if (y > tmp) { y = tmp; } if (y < 0) { y = 0; } if ((x != Tk_X(menuPtr->tkwin)) || (y != Tk_Y(menuPtr->tkwin))) { Tk_MoveWindow(menuPtr->tkwin, x, y); } if (Tk_IsMapped(menuPtr->tkwin)) { if (group != menuPtr->group) { Tk_UnshareEvents(menuPtr->tkwin, menuPtr->group); Tk_ShareEvents(menuPtr->tkwin, group); } } else { Tk_ShareEvents(menuPtr->tkwin, group); Tk_MapWindow(menuPtr->tkwin); result = ActivateMenuEntry(menuPtr, -1); } XRaiseWindow(Tk_Display(menuPtr->tkwin), Tk_WindowId(menuPtr->tkwin)); menuPtr->group = group; } else if ((c == 'u') && (strncmp(argv[1], "unpost", length) == 0)) { if (argc != 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " unpost\"", (char *) NULL); goto error; } Tk_UnshareEvents(menuPtr->tkwin, menuPtr->group); Tk_UnmapWindow(menuPtr->tkwin); result = ActivateMenuEntry(menuPtr, -1); if (result == TCL_OK) { result = PostSubmenu(interp, menuPtr, (MenuEntry *) NULL); } } else { Tcl_AppendResult(interp, "bad option \"", argv[1], "\": must be activate, add, configure, delete, disable, ", "enable, entryconfigure, index, invoke, post, ", "or unpost", (char *) NULL); goto error; } done: Tk_Release((ClientData) menuPtr); return result; error: Tk_Release((ClientData) menuPtr); return TCL_ERROR; } /* *---------------------------------------------------------------------- * * DestroyMenu -- * * This procedure is invoked by Tk_EventuallyFree or Tk_Release * to clean up the internal structure of a menu at a safe time * (when no-one is using it anymore). * * Results: * None. * * Side effects: * Everything associated with the menu is freed up. * *---------------------------------------------------------------------- */ static void DestroyMenu(clientData) ClientData clientData; /* Info about menu widget. */ { register Menu *menuPtr = (Menu *) clientData; int i; for (i = 0; i < menuPtr->numEntries; i++) { DestroyMenuEntry((ClientData) menuPtr->entries[i]); } if (menuPtr->entries != NULL) { ckfree((char *) menuPtr->entries); } if (menuPtr->border != NULL) { Tk_Free3DBorder(menuPtr->border); } if (menuPtr->activeBorder != NULL) { Tk_Free3DBorder(menuPtr->activeBorder); } if (menuPtr->fontPtr != NULL) { Tk_FreeFontStruct(menuPtr->fontPtr); } if (menuPtr->fg != NULL) { Tk_FreeColor(menuPtr->fg); } if (menuPtr->textGC != None) { Tk_FreeGC(menuPtr->textGC); } if (menuPtr->disabledFg != NULL) { Tk_FreeColor(menuPtr->disabledFg); } if (menuPtr->gray != None) { Tk_FreeBitmap(menuPtr->gray); } if (menuPtr->disabledGC != None) { Tk_FreeGC(menuPtr->disabledGC); } if (menuPtr->activeFg != NULL) { Tk_FreeColor(menuPtr->activeFg); } if (menuPtr->activeGC != None) { Tk_FreeGC(menuPtr->activeGC); } if (menuPtr->selectorFg != NULL) { Tk_FreeColor(menuPtr->selectorFg); } if (menuPtr->selectorGC != None) { Tk_FreeGC(menuPtr->selectorGC); } if (menuPtr->cursor != None) { Tk_FreeCursor(menuPtr->cursor); } ckfree((char *) menuPtr); } /* *---------------------------------------------------------------------- * * DestroyMenuEntry -- * * This procedure is invoked by Tk_EventuallyFree or Tk_Release * to clean up the internal structure of a menu entry at a safe time * (when no-one is using it anymore). * * Results: * None. * * Side effects: * Everything associated with the menu entry is freed up. * *---------------------------------------------------------------------- */ static void DestroyMenuEntry(clientData) ClientData clientData; /* Pointer to entry to be freed. */ { register MenuEntry *mePtr = (MenuEntry *) clientData; Menu *menuPtr = mePtr->menuPtr; if (mePtr->name != NULL) { Tcl_UntraceVar(menuPtr->interp, mePtr->name, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, MenuVarProc, (ClientData) mePtr); } if (menuPtr->postedCascade == mePtr) { if (PostSubmenu(menuPtr->interp, menuPtr, (MenuEntry *) NULL) != TCL_OK) { TkBindError(menuPtr->interp); } } if (mePtr->label != NULL) { ckfree(mePtr->label); } if (mePtr->bitmap != None) { #if defined(USE_XPM3) Tk_FreePixmap(mePtr->bitmap); #else Tk_FreeBitmap(mePtr->bitmap); #endif } if (mePtr->accel != NULL) { ckfree(mePtr->accel); } if (mePtr->border != NULL) { Tk_Free3DBorder(mePtr->border); } if (mePtr->activeBorder != NULL) { Tk_Free3DBorder(mePtr->activeBorder); } if (mePtr->fontPtr != NULL) { Tk_FreeFontStruct(mePtr->fontPtr); } if (mePtr->textGC != NULL) { Tk_FreeGC(mePtr->textGC); } if (mePtr->activeGC != NULL) { Tk_FreeGC(mePtr->activeGC); } if (mePtr->disabledGC != NULL) { Tk_FreeGC(mePtr->disabledGC); } if (mePtr->command != NULL) { ckfree(mePtr->command); } if (mePtr->name != NULL) { ckfree(mePtr->name); } if (mePtr->onValue != NULL) { ckfree(mePtr->onValue); } if (mePtr->offValue != NULL) { ckfree(mePtr->offValue); } ckfree((char *) mePtr); } /* *---------------------------------------------------------------------- * * ConfigureMenu -- * * This procedure is called to process an argv/argc list, plus * the Tk option database, in order to configure (or * reconfigure) a menu widget. * * Results: * The return value is a standard Tcl result. If TCL_ERROR is * returned, then interp->result contains an error message. * * Side effects: * Configuration information, such as colors, font, etc. get set * for menuPtr; old resources get freed, if there were any. * *---------------------------------------------------------------------- */ static int ConfigureMenu(interp, menuPtr, argc, argv, flags) Tcl_Interp *interp; /* Used for error reporting. */ register Menu *menuPtr; /* Information about widget; may or may * not already have values for some fields. */ int argc; /* Number of valid entries in argv. */ char **argv; /* Arguments. */ int flags; /* Flags to pass to Tk_ConfigureWidget. */ { XGCValues gcValues; GC newGC; unsigned long mask; int i; if (Tk_ConfigureWidget(interp, menuPtr->tkwin, configSpecs, argc, argv, (char *) menuPtr, flags) != TCL_OK) { return TCL_ERROR; } /* * A few options need special processing, such as setting the * background from a 3-D border, or filling in complicated * defaults that couldn't be specified to Tk_ConfigureWidget. */ Tk_SetBackgroundFromBorder(menuPtr->tkwin, menuPtr->border); gcValues.font = menuPtr->fontPtr->fid; gcValues.foreground = menuPtr->fg->pixel; gcValues.background = Tk_3DBorderColor(menuPtr->border)->pixel; newGC = Tk_GetGC(menuPtr->tkwin, GCForeground|GCBackground|GCFont, &gcValues); if (menuPtr->textGC != None) { Tk_FreeGC(menuPtr->textGC); } menuPtr->textGC = newGC; if (menuPtr->disabledFg != NULL) { gcValues.foreground = menuPtr->disabledFg->pixel; mask = GCForeground|GCBackground|GCFont; } else { gcValues.foreground = gcValues.background; if (menuPtr->gray == None) { menuPtr->gray = Tk_GetBitmap(interp, menuPtr->tkwin, Tk_GetUid("gray50")); if (menuPtr->gray == None) { return TCL_ERROR; } } gcValues.fill_style = FillStippled; gcValues.stipple = menuPtr->gray; mask = GCForeground|GCFillStyle|GCStipple; } newGC = Tk_GetGC(menuPtr->tkwin, mask, &gcValues); if (menuPtr->disabledGC != None) { Tk_FreeGC(menuPtr->disabledGC); } menuPtr->disabledGC = newGC; gcValues.font = menuPtr->fontPtr->fid; gcValues.foreground = menuPtr->activeFg->pixel; gcValues.background = Tk_3DBorderColor(menuPtr->activeBorder)->pixel; newGC = Tk_GetGC(menuPtr->tkwin, GCForeground|GCBackground|GCFont, &gcValues); if (menuPtr->activeGC != None) { Tk_FreeGC(menuPtr->activeGC); } menuPtr->activeGC = newGC; gcValues.foreground = menuPtr->selectorFg->pixel; newGC = Tk_GetGC(menuPtr->tkwin, GCForeground|GCFont, &gcValues); if (menuPtr->selectorGC != None) { Tk_FreeGC(menuPtr->selectorGC); } menuPtr->selectorGC = newGC; /* * After reconfiguring a menu, we need to reconfigure all of the * entries in the menu, since some of the things in the children * (such as graphics contexts) may have to change to reflect changes * in the parent. */ for (i = 0; i < menuPtr->numEntries; i++) { MenuEntry *mePtr; mePtr = menuPtr->entries[i]; ConfigureMenuEntry(interp, menuPtr, mePtr, i, 0, (char **) NULL, TK_CONFIG_ARGV_ONLY | COMMAND_MASK << mePtr->type); } if (!(menuPtr->flags & RESIZE_PENDING)) { menuPtr->flags |= RESIZE_PENDING; Tk_DoWhenIdle(ComputeMenuGeometry, (ClientData) menuPtr); } return TCL_OK; } /* *---------------------------------------------------------------------- * * ConfigureMenuEntry -- * * This procedure is called to process an argv/argc list, plus * the Tk option database, in order to configure (or * reconfigure) one entry in a menu. * * Results: * The return value is a standard Tcl result. If TCL_ERROR is * returned, then interp->result contains an error message. * * Side effects: * Configuration information such as label and accelerator get * set for mePtr; old resources get freed, if there were any. * *---------------------------------------------------------------------- */ static int ConfigureMenuEntry(interp, menuPtr, mePtr, index, argc, argv, flags) Tcl_Interp *interp; /* Used for error reporting. */ Menu *menuPtr; /* Information about whole menu. */ register MenuEntry *mePtr; /* Information about menu entry; may * or may not already have values for * some fields. */ int index; /* Index of mePtr within menuPtr's * entries. */ int argc; /* Number of valid entries in argv. */ char **argv; /* Arguments. */ int flags; /* Additional flags to pass to * Tk_ConfigureWidget. */ { XGCValues gcValues; GC newGC, newActiveGC, newDisabledGC; unsigned long mask; /* * If this entry is a cascade and the cascade is posted, then unpost * it before reconfiguring the entry (otherwise the reconfigure might * change the name of the cascaded entry, leaving a posted menu * high and dry). */ if (menuPtr->postedCascade == mePtr) { if (PostSubmenu(menuPtr->interp, menuPtr, (MenuEntry *) NULL) != TCL_OK) { TkBindError(menuPtr->interp); } } /* * If this entry is a check button or radio button, then remove * its old trace procedure. */ if ((mePtr->name != NULL) && ((mePtr->type == CHECK_BUTTON_ENTRY) || (mePtr->type == RADIO_BUTTON_ENTRY))) { Tcl_UntraceVar(menuPtr->interp, mePtr->name, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, MenuVarProc, (ClientData) mePtr); } if (Tk_ConfigureWidget(interp, menuPtr->tkwin, entryConfigSpecs, argc, argv, (char *) mePtr, flags | (COMMAND_MASK << mePtr->type)) != TCL_OK) { return TCL_ERROR; } /* * The code below handles special configuration stuff not taken * care of by Tk_ConfigureWidget, such as special processing for * defaults, sizing strings, graphics contexts, etc. */ if (mePtr->label == NULL) { mePtr->labelLength = 0; } else { mePtr->labelLength = strlen(mePtr->label); } if (mePtr->accel == NULL) { mePtr->accelLength = 0; } else { mePtr->accelLength = strlen(mePtr->accel); } if (mePtr->state == tkActiveUid) { if (index != menuPtr->active) { ActivateMenuEntry(menuPtr, index); } } else { if (index == menuPtr->active) { ActivateMenuEntry(menuPtr, -1); } if ((mePtr->state != tkNormalUid) && (mePtr->state != tkDisabledUid)) { Tcl_AppendResult(interp, "bad state value \"", mePtr->state, "\": must be normal, active, or disabled", (char *) NULL); mePtr->state = tkNormalUid; return TCL_ERROR; } } if (mePtr->fontPtr != NULL) { gcValues.foreground = menuPtr->fg->pixel; gcValues.background = Tk_3DBorderColor( (mePtr->border != NULL) ? mePtr->border : menuPtr->border) ->pixel; gcValues.font = mePtr->fontPtr->fid; /* * Note: disable GraphicsExpose events; we know there won't be * obscured areas when copying from an off-screen pixmap to the * screen and this gets rid of unnecessary events. */ gcValues.graphics_exposures = False; newGC = Tk_GetGC(menuPtr->tkwin, GCForeground|GCBackground|GCFont|GCGraphicsExposures, &gcValues); if (menuPtr->disabledFg != NULL) { gcValues.foreground = menuPtr->disabledFg->pixel; mask = GCForeground|GCBackground|GCFont|GCGraphicsExposures; } else { gcValues.foreground = gcValues.background; gcValues.fill_style = FillStippled; gcValues.stipple = menuPtr->gray; mask = GCForeground|GCFillStyle|GCStipple; } newDisabledGC = Tk_GetGC(menuPtr->tkwin, mask, &gcValues); gcValues.foreground = menuPtr->activeFg->pixel; gcValues.background = Tk_3DBorderColor( (mePtr->activeBorder != NULL) ? mePtr->activeBorder : menuPtr->activeBorder)->pixel; newActiveGC = Tk_GetGC(menuPtr->tkwin, GCForeground|GCBackground|GCFont|GCGraphicsExposures, &gcValues); } else { newGC = NULL; newActiveGC = NULL; newDisabledGC = NULL; } if (mePtr->textGC != NULL) { Tk_FreeGC(mePtr->textGC); } mePtr->textGC = newGC; if (mePtr->activeGC != NULL) { Tk_FreeGC(mePtr->activeGC); } mePtr->activeGC = newActiveGC; if (mePtr->disabledGC != NULL) { Tk_FreeGC(mePtr->disabledGC); } mePtr->disabledGC = newDisabledGC; if ((mePtr->type == CHECK_BUTTON_ENTRY) || (mePtr->type == RADIO_BUTTON_ENTRY)) { char *value; if (mePtr->name == NULL) { mePtr->name = ckalloc((unsigned) (strlen(mePtr->label) + 1)); strcpy(mePtr->name, mePtr->label); } if (mePtr->onValue == NULL) { mePtr->onValue = ckalloc((unsigned) (strlen(mePtr->label) + 1)); strcpy(mePtr->onValue, mePtr->label); } /* * Select the entry if the associated variable has the * appropriate value, initialize the variable if it doesn't * exist, then set a trace on the variable to monitor future * changes to its value. */ value = Tcl_GetVar(interp, mePtr->name, TCL_GLOBAL_ONLY); mePtr->flags &= ENTRY_SELECTED; if (value != NULL) { if (strcmp(value, mePtr->onValue) == 0) { mePtr->flags |= ENTRY_SELECTED; } } else { Tcl_SetVar(interp, mePtr->name, (mePtr->type == CHECK_BUTTON_ENTRY) ? mePtr->offValue : "", TCL_GLOBAL_ONLY); } Tcl_TraceVar(interp, mePtr->name, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, MenuVarProc, (ClientData) mePtr); } if (!(menuPtr->flags & RESIZE_PENDING)) { menuPtr->flags |= RESIZE_PENDING; Tk_DoWhenIdle(ComputeMenuGeometry, (ClientData) menuPtr); } return TCL_OK; } /* *-------------------------------------------------------------- * * ComputeMenuGeometry -- * * This procedure is invoked to recompute the size and * layout of a menu. It is called as a when-idle handler so * that it only gets done once, even if a group of changes is * made to the menu. * * Results: * None. * * Side effects: * Fields of menu entries are changed to reflect their * current positions, and the size of the menu window * itself may be changed. * *-------------------------------------------------------------- */ static void ComputeMenuGeometry(clientData) ClientData clientData; /* Structure describing menu. */ { Menu *menuPtr = (Menu *) clientData; register MenuEntry *mePtr; XFontStruct *fontPtr; int maxLabelWidth, maxSelectorWidth, maxAccelWidth; int width, height, selectorSpace, horizMargin; int i, y; if (menuPtr->tkwin == NULL) { return; } maxLabelWidth = maxSelectorWidth = maxAccelWidth = 0; y = menuPtr->borderWidth; for (i = 0; i < menuPtr->numEntries; i++) { mePtr = menuPtr->entries[i]; selectorSpace = 0; fontPtr = mePtr->fontPtr; if (fontPtr == NULL) { fontPtr = menuPtr->fontPtr; } /* * For each entry, compute the height required by that * particular entry, plus three widths: the width of the * label, the width to allow for a selector to be displayed * to the left of the label (if any), and the width of the * accelerator to be displayed to the right of the label * (if any). These sizes depend, of course, on the type * of the entry. */ if (mePtr->bitmap != None) { unsigned int bitmapWidth, bitmapHeight; #if defined(USE_XPM3) Tk_SizeOfPixmap(mePtr->bitmap, &bitmapWidth, &bitmapHeight); #else Tk_SizeOfBitmap(mePtr->bitmap, &bitmapWidth, &bitmapHeight); #endif mePtr->height = bitmapHeight; width = bitmapWidth; if (mePtr->type == CHECK_BUTTON_ENTRY) { selectorSpace = (14*mePtr->height)/10; mePtr->selectorDiameter = (65*mePtr->height)/100; } else if (mePtr->type == RADIO_BUTTON_ENTRY) { selectorSpace = (14*mePtr->height)/10; mePtr->selectorDiameter = (75*mePtr->height)/100; } } else { mePtr->height = fontPtr->ascent + fontPtr->descent; if (mePtr->label != NULL) { (void) TkMeasureChars(fontPtr, mePtr->label, mePtr->labelLength, 0, (int) 100000, TK_NEWLINES_NOT_SPECIAL, &width); } else { width = 0; } if (mePtr->type == CHECK_BUTTON_ENTRY) { selectorSpace = mePtr->height; mePtr->selectorDiameter = (80*mePtr->height)/100; } else if (mePtr->type == RADIO_BUTTON_ENTRY) { selectorSpace = mePtr->height; mePtr->selectorDiameter = mePtr->height; } } mePtr->height += 2*menuPtr->activeBorderWidth + 2; if (width > maxLabelWidth) { maxLabelWidth = width; } if (mePtr->accel != NULL) { (void) TkMeasureChars(fontPtr, mePtr->accel, mePtr->accelLength, 0, (int) 100000, TK_NEWLINES_NOT_SPECIAL, &width); if (width > maxAccelWidth) { maxAccelWidth = width; } } if (mePtr->type == SEPARATOR_ENTRY) { mePtr->height = 4*menuPtr->borderWidth; } if (selectorSpace > maxSelectorWidth) { maxSelectorWidth = selectorSpace; } mePtr->y = y; y += mePtr->height; } /* * Got all the sizes. Update fields in the menu structure, then * resize the window if necessary. Leave margins on either side * of the selector (or just one margin if there is no selector). * Leave another margin on the right side of the label, plus yet * another margin to the right of the accelerator (if there is one). */ horizMargin = 2; menuPtr->selectorSpace = maxSelectorWidth + horizMargin; if (maxSelectorWidth != 0) { menuPtr->selectorSpace += horizMargin; } menuPtr->labelWidth = maxLabelWidth + horizMargin; width = menuPtr->selectorSpace + menuPtr->labelWidth + maxAccelWidth + 2*menuPtr->borderWidth + 2*menuPtr->activeBorderWidth + 2; if (maxAccelWidth != 0) { width += horizMargin; } height = y + menuPtr->borderWidth; /* * The X server doesn't like zero dimensions, so round up to at least * 1 (a zero-sized menu should never really occur, anyway). */ if (width <= 0) { width = 1; } if (height <= 0) { height = 1; } if ((width != Tk_ReqWidth(menuPtr->tkwin)) || (height != Tk_ReqHeight(menuPtr->tkwin))) { Tk_GeometryRequest(menuPtr->tkwin, width, height); } else { /* * Must always force a redisplay here if the window is mapped * (even if the size didn't change, something else might have * changed in the menu, such as a label or accelerator). The * resize will force a redisplay above. */ EventuallyRedrawMenu(menuPtr, -1); } menuPtr->flags &= ~RESIZE_PENDING; } /* *---------------------------------------------------------------------- * * DisplayMenu -- * * This procedure is invoked to display a menu widget. * * Results: * None. * * Side effects: * Commands are output to X to display the menu in its * current mode. * *---------------------------------------------------------------------- */ static void DisplayMenu(clientData) ClientData clientData; /* Information about widget. */ { register Menu *menuPtr = (Menu *) clientData; register MenuEntry *mePtr; register Tk_Window tkwin = menuPtr->tkwin; XFontStruct *fontPtr; int index, baseline; GC gc; menuPtr->flags &= ~REDRAW_PENDING; if ((menuPtr->tkwin == NULL) || !Tk_IsMapped(tkwin)) { return; } /* * Loop through all of the entries, drawing them one at a time. */ for (index = 0; index < menuPtr->numEntries; index++) { mePtr = menuPtr->entries[index]; if (!(mePtr->flags & ENTRY_NEEDS_REDISPLAY)) { continue; } mePtr->flags &= ~ENTRY_NEEDS_REDISPLAY; /* * Background. */ if (mePtr->state == tkActiveUid) { Tk_Fill3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), (mePtr->activeBorder != NULL) ? mePtr->activeBorder : menuPtr->activeBorder, menuPtr->borderWidth, mePtr->y, Tk_Width(tkwin) - 2*menuPtr->borderWidth, mePtr->height, menuPtr->activeBorderWidth, TK_RELIEF_RAISED); gc = mePtr->activeGC; if (gc == NULL) { gc = menuPtr->activeGC; } } else { Tk_Fill3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), (mePtr->border != NULL) ? mePtr->border : menuPtr->border, menuPtr->borderWidth, mePtr->y, Tk_Width(tkwin) - 2*menuPtr->borderWidth, mePtr->height, 0, TK_RELIEF_FLAT); if ((mePtr->state == tkDisabledUid) && (menuPtr->disabledFg != NULL)) { gc = mePtr->disabledGC; if (gc == NULL) { gc = menuPtr->disabledGC; } } else { gc = mePtr->textGC; if (gc == NULL) { gc = menuPtr->textGC; } } } /* * Draw label or bitmap for entry. */ fontPtr = mePtr->fontPtr; if (fontPtr == NULL) { fontPtr = menuPtr->fontPtr; } baseline = mePtr->y + (mePtr->height + fontPtr->ascent - fontPtr->descent)/2; if (mePtr->bitmap != None) { unsigned int width, height; #if defined(USE_XPM3) Tk_SizeOfPixmap(mePtr->bitmap, &width, &height); XCopyArea(Tk_Display(tkwin), mePtr->bitmap, Tk_WindowId(tkwin), gc, 0, 0, width, height, menuPtr->borderWidth + menuPtr->selectorSpace, (int) (mePtr->y + (mePtr->height - height)/2)); #else Tk_SizeOfBitmap(mePtr->bitmap, &width, &height); XCopyPlane(Tk_Display(tkwin), mePtr->bitmap, Tk_WindowId(tkwin), gc, 0, 0, width, height, menuPtr->borderWidth + menuPtr->selectorSpace, (int) (mePtr->y + (mePtr->height - height)/2), 1); #endif } else { baseline = mePtr->y + (mePtr->height + fontPtr->ascent - fontPtr->descent)/2; if (mePtr->label != NULL) { TkDisplayChars(Tk_Display(tkwin), Tk_WindowId(tkwin), gc, fontPtr, mePtr->label, mePtr->labelLength, menuPtr->borderWidth + menuPtr->selectorSpace, baseline, TK_NEWLINES_NOT_SPECIAL); if (mePtr->underline >= 0) { TkUnderlineChars(Tk_Display(tkwin), Tk_WindowId(tkwin), gc, fontPtr, mePtr->label, menuPtr->borderWidth + menuPtr->selectorSpace, baseline, TK_NEWLINES_NOT_SPECIAL, mePtr->underline, mePtr->underline); } } } /* * Draw accelerator. */ if (mePtr->accel != NULL) { TkDisplayChars(Tk_Display(tkwin), Tk_WindowId(tkwin), gc, fontPtr, mePtr->accel, mePtr->accelLength, menuPtr->borderWidth + menuPtr->selectorSpace + menuPtr->labelWidth, baseline, TK_NEWLINES_NOT_SPECIAL); } /* * Draw check-button selector. */ if (mePtr->type == CHECK_BUTTON_ENTRY) { int dim, x, y; dim = mePtr->selectorDiameter; x = menuPtr->borderWidth + (menuPtr->selectorSpace - dim)/2; y = mePtr->y + (mePtr->height - dim)/2; Tk_Fill3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), menuPtr->border, x, y, dim, dim, menuPtr->activeBorderWidth, TK_RELIEF_SUNKEN); x += menuPtr->activeBorderWidth; y += menuPtr->activeBorderWidth; dim -= 2*menuPtr->activeBorderWidth; if ((dim > 0) && (mePtr->flags & ENTRY_SELECTED)) { XFillRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), menuPtr->selectorGC, x, y, (unsigned int) dim, (unsigned int) dim); } } /* * Draw radio-button selector. */ if (mePtr->type == RADIO_BUTTON_ENTRY) { XPoint points[4]; int radius; radius = mePtr->selectorDiameter/2; points[0].x = menuPtr->borderWidth + (menuPtr->selectorSpace - mePtr->selectorDiameter)/2; points[0].y = mePtr->y + (mePtr->height)/2; points[1].x = points[0].x + radius; points[1].y = points[0].y + radius; points[2].x = points[1].x + radius; points[2].y = points[0].y; points[3].x = points[1].x; points[3].y = points[0].y - radius; if (mePtr->flags & ENTRY_SELECTED) { XFillPolygon(Tk_Display(tkwin), Tk_WindowId(tkwin), menuPtr->selectorGC, points, 4, Convex, CoordModeOrigin); } else { Tk_Fill3DPolygon(Tk_Display(tkwin), Tk_WindowId(tkwin), menuPtr->border, points, 4, menuPtr->activeBorderWidth, TK_RELIEF_FLAT); } Tk_Draw3DPolygon(Tk_Display(tkwin), Tk_WindowId(tkwin), menuPtr->border, points, 4, menuPtr->activeBorderWidth, TK_RELIEF_SUNKEN); } /* * Draw separator. */ if (mePtr->type == SEPARATOR_ENTRY) { XPoint points[2]; int margin; margin = (fontPtr->ascent + fontPtr->descent)/2; points[0].x = 2*menuPtr->borderWidth + margin; points[0].y = mePtr->y + mePtr->height/2; points[1].x = Tk_Width(tkwin) - 2*menuPtr->borderWidth - margin; points[1].y = points[0].y; Tk_Draw3DPolygon(Tk_Display(tkwin), Tk_WindowId(tkwin), menuPtr->border, points, 2, 1, TK_RELIEF_RAISED); } /* * If the entry is disabled with a stipple rather than a special * foreground color, generate the stippled effect. */ if ((mePtr->state == tkDisabledUid) && (menuPtr->disabledFg == NULL)) { XFillRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), menuPtr->disabledGC, menuPtr->borderWidth, mePtr->y, (unsigned) (Tk_Width(tkwin) - 2*menuPtr->borderWidth), (unsigned) mePtr->height); } } Tk_Draw3DRectangle(Tk_Display(tkwin), Tk_WindowId(tkwin), menuPtr->border, 0, 0, Tk_Width(tkwin), Tk_Height(tkwin), menuPtr->borderWidth, TK_RELIEF_RAISED); } /* *-------------------------------------------------------------- * * GetMenuIndex -- * * Parse a textual index into a menu and return the numerical * index of the indicated entry. * * Results: * A standard Tcl result. If all went well, then *indexPtr is * filled in with the entry index corresponding to string * (ranges from -1 to the number of entries in the menu minus * one). Otherwise an error message is left in interp->result. * * Side effects: * None. * *-------------------------------------------------------------- */ static int GetMenuIndex(interp, menuPtr, string, indexPtr) Tcl_Interp *interp; /* For error messages. */ Menu *menuPtr; /* Menu for which the index is being * specified. */ char *string; /* Specification of an entry in menu. See * manual entry for valid .*/ int *indexPtr; /* Where to store converted relief. */ { int i, y; if ((string[0] == 'a') && (strcmp(string, "active") == 0)) { *indexPtr = menuPtr->active; return TCL_OK; } if ((string[0] == 'l') && (strcmp(string, "last") == 0)) { *indexPtr = menuPtr->numEntries-1; return TCL_OK; } if ((string[0] == 'n') && (strcmp(string, "none") == 0)) { *indexPtr = -1; return TCL_OK; } if (string[0] == '@') { if (Tcl_GetInt(interp, string+1, &y) == TCL_OK) { if (y < 0) { *indexPtr = -1; return TCL_OK; } for (i = 0; i < menuPtr->numEntries; i++) { y -= menuPtr->entries[i]->height; if (y < 0) { break; } } if (i >= menuPtr->numEntries) { i = -1; } *indexPtr = i; return TCL_OK; } else { Tcl_SetResult(interp, (char *) NULL, TCL_STATIC); } } if (isdigit(string[0])) { if (Tcl_GetInt(interp, string, &i) == TCL_OK) { if ((i < menuPtr->numEntries) && (i >= 0)) { *indexPtr = i; return TCL_OK; } } else { Tcl_SetResult(interp, (char *) NULL, TCL_STATIC); } } for (i = 0; i < menuPtr->numEntries; i++) { char *label; label = menuPtr->entries[i]->label; if ((label != NULL) && (Tcl_StringMatch(menuPtr->entries[i]->label, string))) { *indexPtr = i; return TCL_OK; } } Tcl_AppendResult(interp, "bad menu entry index \"", string, "\"", (char *) NULL); return TCL_ERROR; } /* *-------------------------------------------------------------- * * MenuEventProc -- * * This procedure is invoked by the Tk dispatcher for various * events on menus. * * Results: * None. * * Side effects: * When the window gets deleted, internal structures get * cleaned up. When it gets exposed, it is redisplayed. * *-------------------------------------------------------------- */ static void MenuEventProc(clientData, eventPtr) ClientData clientData; /* Information about window. */ XEvent *eventPtr; /* Information about event. */ { Menu *menuPtr = (Menu *) clientData; if ((eventPtr->type == Expose) && (eventPtr->xexpose.count == 0)) { EventuallyRedrawMenu(menuPtr, -1); } else if (eventPtr->type == DestroyNotify) { Tcl_DeleteCommand(menuPtr->interp, Tk_PathName(menuPtr->tkwin)); /* * Careful! Must delete the event-sharing information here * rather than in DestroyMenu. By the time that procedure * is called the tkwin may have been reused, resulting in some * other window accidentally being cut off from shared events. */ Tk_UnshareEvents(menuPtr->tkwin, menuPtr->group); menuPtr->tkwin = NULL; if (menuPtr->flags & REDRAW_PENDING) { Tk_CancelIdleCall(DisplayMenu, (ClientData) menuPtr); } if (menuPtr->flags & RESIZE_PENDING) { Tk_CancelIdleCall(ComputeMenuGeometry, (ClientData) menuPtr); } Tk_EventuallyFree((ClientData) menuPtr, DestroyMenu); } } /* *-------------------------------------------------------------- * * MenuVarProc -- * * This procedure is invoked when someone changes the * state variable associated with a radiobutton or checkbutton * menu entry. The entry's selected state is set to match * the value of the variable. * * Results: * NULL is always returned. * * Side effects: * The menu entry may become selected or deselected. * *-------------------------------------------------------------- */ /* ARGSUSED */ static char * MenuVarProc(clientData, interp, name1, name2, flags) ClientData clientData; /* Information about menu entry. */ Tcl_Interp *interp; /* Interpreter containing variable. */ char *name1; /* First part of variable's name. */ char *name2; /* Second part of variable's name. */ int flags; /* Describes what just happened. */ { MenuEntry *mePtr = (MenuEntry *) clientData; Menu *menuPtr; char *value; menuPtr = mePtr->menuPtr; /* * If the variable is being unset, then re-establish the * trace unless the whole interpreter is going away. */ if (flags & TCL_TRACE_UNSETS) { mePtr->flags &= ~ENTRY_SELECTED; if ((flags & TCL_TRACE_DESTROYED) && !(flags & TCL_INTERP_DESTROYED)) { Tcl_TraceVar2(interp, name1, name2, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, MenuVarProc, clientData); } EventuallyRedrawMenu(menuPtr, -1); return (char *) NULL; } /* * Use the value of the variable to update the selected status of * the menu entry. */ value = Tcl_GetVar2(interp, name1, name2, flags & TCL_GLOBAL_ONLY); if (strcmp(value, mePtr->onValue) == 0) { if (mePtr->flags & ENTRY_SELECTED) { return (char *) NULL; } mePtr->flags |= ENTRY_SELECTED; } else if (mePtr->flags & ENTRY_SELECTED) { mePtr->flags &= ~ENTRY_SELECTED; } else { return (char *) NULL; } EventuallyRedrawMenu(menuPtr, -1); return (char *) NULL; } /* *---------------------------------------------------------------------- * * EventuallyRedrawMenu -- * * Arrange for an entry of a menu, or the whole menu, to be * redisplayed at some point in the future. * * Results: * None. * * Side effects: * A when-idle hander is scheduled to do the redisplay, if there * isn't one already scheduled. * *---------------------------------------------------------------------- */ static void EventuallyRedrawMenu(menuPtr, index) register Menu *menuPtr; /* Information about menu to redraw. */ int index; /* Which entry to redraw. If -1, then * all the entries in the menu are redrawn. */ { if (menuPtr->tkwin == NULL) { return; } if (index != -1) { menuPtr->entries[index]->flags |= ENTRY_NEEDS_REDISPLAY; } else { for (index = 0; index < menuPtr->numEntries; index++) { menuPtr->entries[index]->flags |= ENTRY_NEEDS_REDISPLAY; } } if ((menuPtr->tkwin == NULL) || !Tk_IsMapped(menuPtr->tkwin) || (menuPtr->flags & REDRAW_PENDING)) { return; } Tk_DoWhenIdle(DisplayMenu, (ClientData) menuPtr); menuPtr->flags |= REDRAW_PENDING; } /* *-------------------------------------------------------------- * * PostSubmenu -- * * This procedure arranges for a particular submenu (i.e. the * menu corresponding to a given cascade entry) to be * posted. * * Results: * A standard Tcl return result. Errors may occur in the * Tcl commands generated to post and unpost submenus. * * Side effects: * If there is already a submenu posted, it is unposted. * The new submenu is then posted. * *-------------------------------------------------------------- */ static int PostSubmenu(interp, menuPtr, mePtr) Tcl_Interp *interp; /* Used for invoking sub-commands and * reporting errors. */ register Menu *menuPtr; /* Information about menu as a whole. */ register MenuEntry *mePtr; /* Info about submenu that is to be * posted. NULL means make sure that * no submenu is posted. */ { char string[30]; int result, x, y; if (mePtr == menuPtr->postedCascade) { return TCL_OK; } if (menuPtr->postedCascade != NULL) { result = Tcl_VarEval(interp, menuPtr->postedCascade->name, " unpost", (char *) NULL); menuPtr->postedCascade = NULL; if (result != TCL_OK) { return result; } } if ((mePtr != NULL) && (mePtr->name != NULL)) { Tk_GetRootCoords(menuPtr->tkwin, &x, &y); x += Tk_Width(menuPtr->tkwin); y += mePtr->y; sprintf(string, "%d %d ", x, y); result = Tcl_VarEval(interp, mePtr->name, " post ", string, menuPtr->group, (char *) NULL); if (result != TCL_OK) { return result; } menuPtr->postedCascade = mePtr; } return TCL_OK; } /* *---------------------------------------------------------------------- * * ActivateMenuEntry -- * * This procedure is invoked to make a particular menu entry * the active one, deactivating any other entry that might * currently be active. * * Results: * The return value is a standard Tcl result (errors can occur * while posting and unposting submenus). * * Side effects: * Menu entries get redisplayed, and the active entry changes. * Submenus may get posted and unposted. * *---------------------------------------------------------------------- */ static int ActivateMenuEntry(menuPtr, index) register Menu *menuPtr; /* Menu in which to activate. */ int index; /* Index of entry to activate, or * -1 to deactivate all entries. */ { register MenuEntry *mePtr; int result = TCL_OK; if (menuPtr->active >= 0) { mePtr = menuPtr->entries[menuPtr->active]; /* * Don't change the state unless it's currently active (state * might already have been changed to disabled). */ if (mePtr->state == tkActiveUid) { mePtr->state = tkNormalUid; } EventuallyRedrawMenu(menuPtr, menuPtr->active); } menuPtr->active = index; if (index >= 0) { mePtr = menuPtr->entries[index]; mePtr->state = tkActiveUid; EventuallyRedrawMenu(menuPtr, index); Tk_Preserve((ClientData) mePtr); if (mePtr->type == CASCADE_ENTRY) { result = PostSubmenu(menuPtr->interp, menuPtr, mePtr); } else { result = PostSubmenu(menuPtr->interp, menuPtr, (MenuEntry *) NULL); } Tk_Release((ClientData) mePtr); } return result; } micropolis-activity/src/tk/tkconfig.h0000664000076400007640000000603310724145723020217 0ustar simcitysimcity/* * tkConfig.h -- * * This file is included by all of the Tk C files. It contains * information that may be configuration-dependent, such as * #includes for system include files and a few other things. * * Copyright 1991 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that this copyright * notice appears in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. * * $Header: /user6/ouster/wish/RCS/tkConfig.h,v 1.13 92/08/24 09:23:53 ouster Exp $ SPRITE (Berkeley) */ #ifndef _TKCONFIG #define _TKCONFIG /* * Macro to use instead of "void" for arguments that must have * type "void *" in ANSI C; maps them to type "char *" in * non-ANSI systems. This macro may be used in some of the include * files below, which is why it is defined here. */ #ifndef VOID # ifdef __STDC__ # define VOID void # else # define VOID char # endif #endif #include #include #include #include #include #include #include #include #include #include #ifndef _TCL # include #endif #ifndef _TCLHASH # include #endif #include #include #include #include #include #include #include /* * Macro to use instead of "void" for arguments that must have * type "void *" in ANSI C; maps them to type "char *" in * non-ANSI systems. */ #ifndef VOID # ifdef __STDC__ # define VOID void # else # define VOID char # endif #endif /* * Not all systems declare the errno variable in errno.h. so this * file does it explicitly. */ extern int errno; /* * Define OPEN_MAX if it isn't already defined for this system. */ #ifndef OPEN_MAX # define OPEN_MAX 256 #endif /* * The following macro defines the type of the mask arguments to * select: */ #if defined(IS_LINUX) || (defined(sun) && !defined(sprite)) # define SELECT_MASK fd_set #else # if defined(_IBMR2) # define SELECT_MASK void # else # define SELECT_MASK int # endif #endif /* * Declarations for various library procedures that aren't declared * in a header file. */ extern int close _ANSI_ARGS_((int fd)); #if 0 extern int gettimeofday _ANSI_ARGS_((struct timeval *tp, struct timezone *tzp)); #endif #if !(defined(_CRAY) || defined(sparc) || defined(_IBMR2) || defined(sgi)) extern int open _ANSI_ARGS_((CONST char *path, int flags, ...)); #endif extern void panic _ANSI_ARGS_(VARARGS); #if 0 extern int read _ANSI_ARGS_((int fd, void *buf, unsigned int numBytes)); extern int select _ANSI_ARGS_((int nfds, SELECT_MASK *readfds, SELECT_MASK *writefds, SELECT_MASK *exceptfds, struct timeval *timeout)); #endif #endif /* _TKCONFIG */ micropolis-activity/src/tk/library/0000775000076400007640000000000010724145723017704 5ustar simcitysimcitymicropolis-activity/src/tk/library/tclindex0000664000076400007640000000136110724145723021442 0ustar simcitysimcity# Tcl autoload index file: each line identifies a Tcl # procedure and the file where that procedure is # defined. Generated by the "auto_mkindex" command. tk_entryBackspace entry.tcl tk_entryBackword entry.tcl tk_entrySeeCaret entry.tcl tk_butEnter button.tcl tk_butLeave button.tcl tk_butDown button.tcl tk_butUp button.tcl tk_menus menu.tcl tk_bindForTraversal menu.tcl tk_mbPost menu.tcl tk_mbUnpost menu.tcl tk_traverseToMenu menu.tcl tk_traverseWithinMenu menu.tcl tk_getMenuButtons menu.tcl tk_nextMenu menu.tcl tk_nextMenuEntry menu.tcl tk_invokeMenu menu.tcl tk_firstMenu menu.tcl tk_textSelectTo text.tcl tk_textBackspace text.tcl tk_textIndexCloser text.tcl tk_textResetAnchor text.tcl tkerror tkerror.tcl tk_listboxSingleSelect listbox.tcl micropolis-activity/src/tk/library/entry.tcl0000664000076400007640000000334210724145723021553 0ustar simcitysimcity# entry.tcl -- # # This file contains Tcl procedures used to manage Tk entries. # # $Header: /user6/ouster/wish/scripts/RCS/entry.tcl,v 1.2 92/05/23 16:40:57 ouster Exp $ SPRITE (Berkeley) # # Copyright 1992 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # # The procedure below is invoked to backspace over one character # in an entry widget. The name of the widget is passed as argument. proc tk_entryBackspace w { set x [expr {[$w index cursor] - 1}] if {$x != -1} {$w delete $x} } # The procedure below is invoked to backspace over one word in an # entry widget. The name of the widget is passed as argument. proc tk_entryBackword w { set string [$w get] set curs [expr [$w index cursor]-1] if {$curs < 0} return for {set x $curs} {$x > 0} {incr x -1} { if {([string first [string index $string $x] " \t"] < 0) && ([string first [string index $string [expr $x-1]] " \t"] >= 0)} { break } } $w delete $x $curs } # The procedure below is invoked after insertions. If the caret is not # visible in the window then the procedure adjusts the entry's view to # bring the caret back into the window again. proc tk_entrySeeCaret w { set c [$w index cursor] set left [$w index @0] if {$left > $c} { $w view $c return } while {[$w index @[expr [winfo width $w]-5]] < $c} { set left [expr $left+1] $w view $left } } micropolis-activity/src/tk/library/button.tcl0000664000076400007640000000427010724145723021726 0ustar simcitysimcity# button.tcl -- # # This file contains Tcl procedures used to manage Tk buttons. # # $Header: /user6/ouster/wish/scripts/RCS/button.tcl,v 1.7 92/07/28 15:41:13 ouster Exp $ SPRITE (Berkeley) # # Copyright 1992 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # # The procedure below is invoked when the mouse pointer enters a # button widget. It records the button we're in and changes the # state of the button to active unless the button is disabled. proc tk_butEnter w { global tk_priv tk_strictMotif if {[lindex [$w config -state] 4] != "disabled"} { if {!$tk_strictMotif} { $w config -state active } set tk_priv(window) $w } } # The procedure below is invoked when the mouse pointer leaves a # button widget. It changes the state of the button back to # inactive. proc tk_butLeave w { global tk_priv tk_strictMotif if {[lindex [$w config -state] 4] != "disabled"} { if {!$tk_strictMotif} { $w config -state normal } } set tk_priv(window) "" } # The procedure below is invoked when the mouse button is pressed in # a button/radiobutton/checkbutton widget. It records information # (a) to indicate that the mouse is in the button, and # (b) to save the button's relief so it can be restored later. proc tk_butDown w { global tk_priv set tk_priv(relief) [lindex [$w config -relief] 4] if {[lindex [$w config -state] 4] != "disabled"} { $w config -relief sunken } } # The procedure below is invoked when the mouse button is released # for a button/radiobutton/checkbutton widget. It restores the # button's relief and invokes the command as long as the mouse # hasn't left the button. proc tk_butUp w { global tk_priv $w config -relief $tk_priv(relief) if {($w == $tk_priv(window)) && ([lindex [$w config -state] 4] != "disabled")} { uplevel #0 [list $w invoke] } } micropolis-activity/src/tk/library/wish.tcl0000664000076400007640000000160510724145723021364 0ustar simcitysimcity# wish.tcl -- # # This script is invoked by the "wish" program whenever it starts up. # It invokes initialization scripts for Tcl and Tk, then does a few # wish-specific things like setting the window geometry, if one was # specified. # # $Header: /user6/ouster/wish/scripts/RCS/wish.tcl,v 1.1 92/03/06 09:40:56 ouster Exp $ SPRITE (Berkeley) # # Copyright 1992 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # source [info library]/init.tcl source $tk_library/tk.tcl if [info exists geometry] { wm geometry . $geometry } micropolis-activity/src/tk/library/tk.tcl0000664000076400007640000002430110724145723021026 0ustar simcitysimcity# tk.tcl -- # # Initialization script normally executed in the interpreter for each # Tk-based application. Arranges class bindings for widgets. # # $Header: /user6/ouster/wish/scripts/RCS/tk.tcl,v 1.19 92/08/08 14:50:08 ouster Exp $ SPRITE (Berkeley) # # Copyright 1992 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # Insist on running with a compatible version of Tcl. if "[info tclversion] != {6.4}" { error "wrong version of Tcl loaded ([info tclversion]): need 6.4" } # Initialize the auto-load path to include Tk's directory as well as # Tcl's directory: set auto_path "$tk_library [info library]" # Turn off strict Motif look and feel as a default. set tk_strictMotif 0 # ---------------------------------------------------------------------- # Class bindings for various flavors of button widgets. $tk_priv(window) # keeps track of the button containing the mouse, and $tk_priv(relief) # saves the original relief of the button so it can be restored when # the mouse button is released. # ---------------------------------------------------------------------- bind Button {tk_butEnter %W} bind Button {tk_butLeave %W} bind Button <1> {tk_butDown %W} bind Button {tk_butUp %W} bind CheckButton {tk_butEnter %W} bind CheckButton {tk_butLeave %W} bind CheckButton <1> {tk_butDown %W} bind CheckButton {tk_butUp %W} bind RadioButton {tk_butEnter %W} bind RadioButton {tk_butLeave %W} bind RadioButton <1> {tk_butDown %W} bind RadioButton {tk_butUp %W} # ---------------------------------------------------------------------- # Class bindings for entry widgets. # ---------------------------------------------------------------------- bind Entry <1> { %W cursor @%x %W select from @%x if {[lindex [%W config -state] 4] == "normal"} {focus %W} } bind Entry {%W select to @%x} bind Entry {%W select adjust @%x} bind Entry {%W select to @%x} bind Entry <2> {%W scan mark %x} bind Entry {%W scan dragto %x} bind Entry { if {"%A" != ""} { %W insert cursor %A tk_entrySeeCaret %W } } bind Entry {tk_entryBackspace %W; tk_entrySeeCaret %W} bind Entry {tk_entryBackspace %W; tk_entrySeeCaret %W} bind Entry {tk_entryBackspace %W; tk_entrySeeCaret %W} bind Entry {%W delete sel.first sel.last; tk_entrySeeCaret %W} bind Entry {%W delete 0 end} bind Entry {%W insert cursor [selection get]; tk_entrySeeCaret %W} bind Entry {tk_entryBackword %W; tk_entrySeeCaret %W} tk_bindForTraversal Entry # ---------------------------------------------------------------------- # Class bindings for listbox widgets. # ---------------------------------------------------------------------- bind Listbox <1> {%W select from [%W nearest %y]} bind Listbox {%W select to [%W nearest %y]} bind Listbox {%W select adjust [%W nearest %y]} bind Listbox {%W select to [%W nearest %y]} bind Listbox <2> {%W scan mark %x %y} bind Listbox {%W scan dragto %x %y} # ---------------------------------------------------------------------- # Class bindings for scrollbar widgets. When strict Motif is requested, # the bindings use $tk_priv(buttons) and $tk_priv(activeFg) to set the # -activeforeground color to -foreground when the mouse is in the window # and restore it when the mouse leaves. # ---------------------------------------------------------------------- bind Scrollbar { if $tk_strictMotif { set tk_priv(activeFg) [lindex [%W config -activeforeground] 4] %W config -activeforeground [lindex [%W config -foreground] 4] } } bind Scrollbar { if {$tk_strictMotif && ($tk_priv(buttons) == 0)} { %W config -activeforeground $tk_priv(activeFg) } } bind Scrollbar {incr tk_priv(buttons)} bind Scrollbar {incr tk_priv(buttons) -1} # ---------------------------------------------------------------------- # Class bindings for scale widgets. When strict Motif is requested, # the bindings use $tk_priv(buttons) and $tk_priv(activeFg) to set the # -activeforeground color to -foreground when the mouse is in the window # and restore it when the mouse leaves. # ---------------------------------------------------------------------- bind Scale { if $tk_strictMotif { set tk_priv(activeFg) [lindex [%W config -activeforeground] 4] %W config -activeforeground [lindex [%W config -sliderforeground] 4] } } bind Scale { if {$tk_strictMotif && ($tk_priv(buttons) == 0)} { %W config -activeforeground $tk_priv(activeFg) } } bind Scale {incr tk_priv(buttons)} bind Scale {incr tk_priv(buttons) -1} # ---------------------------------------------------------------------- # Class bindings for menubutton widgets. Variables used: # $tk_priv(posted) - keeps track of the menubutton whose menu is # currently posted (or empty string, if none). # $tk_priv(inMenuButton)- if non-null, identifies menu button # containing mouse pointer. # $tk_priv(relief) - keeps track of original relief of posted # menu button, so it can be restored later. # $tk_priv(dragging) - if non-null, identifies menu button whose # menu is currently being dragged in a tear-off # operation. # $tk_priv(focus) - records old focus window so focus can be # returned there after keyboard traversal # to menu. # ---------------------------------------------------------------------- bind Menubutton { set tk_priv(inMenuButton) %W if {[lindex [%W config -state] 4] != "disabled"} { if {!$tk_strictMotif} { %W config -state active } } } bind Menubutton { set tk_priv(inMenuButton) {} if {[lindex [%W config -state] 4] != "disabled"} { if {!$tk_strictMotif} { %W config -state normal } } } bind Menubutton <1> {tk_mbButtonDown %W} bind Menubutton { if {($tk_priv(inMenuButton) != "") && ($tk_priv(posted) != "")} { [lindex [$tk_priv(posted) config -menu] 4] activate 0 } else { tk_mbUnpost } } # In the binding below, it's important to ignore grab-related entries # and exits because they lag reality and can cause menus to chase # their own tail, repeatedly posting and unposting. bind Menubutton { set tk_priv(inMenuButton) %W if {([lindex [%W config -state] 4] != "disabled") && ("%m" != "NotifyGrab") && ("%m" != "NotifyUngrab")} { if {!$tk_strictMotif} { %W config -state active } tk_mbPost %W } } bind Menubutton <2> { if {($tk_priv(posted) == "") && ([lindex [%W config -state] 4] != "disabled")} { set tk_priv(dragging) %W [lindex [$tk_priv(dragging) config -menu] 4] post %X %Y } } bind Menubutton { if {$tk_priv(dragging) != ""} { [lindex [$tk_priv(dragging) config -menu] 4] post %X %Y } } bind Menubutton {set tk_priv(dragging) ""} # ---------------------------------------------------------------------- # Class bindings for menu widgets. $tk_priv(x) and $tk_priv(y) are used # to keep track of the position of the mouse cursor in the menu window # during dragging of tear-off menus. $tk_priv(window) keeps track of # the menu containing the mouse, if any. # ---------------------------------------------------------------------- bind Menu {set tk_priv(window) %W; %W activate @%y} bind Menu {set tk_priv(window) {}; %W activate none} bind Menu { if {$tk_priv(window) != ""} { %W activate @%y } } bind Menu {tk_invokeMenu %W} bind Menu <2> {set tk_priv(x) %x; set tk_priv(y) %y} bind Menu { if {$tk_priv(posted) == ""} { %W post [expr %X-$tk_priv(x)] [expr %Y-$tk_priv(y)] } } bind Menu { } bind Menu { } bind Menu {tk_mbUnpost} bind Menu {tk_traverseWithinMenu %W %A} bind Menu {tk_nextMenu -1} bind Menu {tk_nextMenu 1} bind Menu {tk_nextMenuEntry -1} bind Menu {tk_nextMenuEntry 1} bind Menu {tk_invokeMenu %W} # ---------------------------------------------------------------------- # Class bindings for text widgets. $tk_priv(selectMode) holds one of # "char", "word", or "line" to indicate which selection mode is active. # ---------------------------------------------------------------------- bind Text <1> { set tk_priv(selectMode) char %W mark set insert @%x,%y %W mark set anchor insert if {[lindex [%W config -state] 4] == "normal"} {focus %W} } bind Text { set tk_priv(selectMode) word %W mark set insert "@%x,%y wordstart" tk_textSelectTo %W insert } bind Text { set tk_priv(selectMode) line %W mark set insert "@%x,%y linestart" tk_textSelectTo %W insert } bind Text {tk_textSelectTo %W @%x,%y} bind Text { tk_textResetAnchor %W @%x,%y tk_textSelectTo %W @%x,%y } bind Text {tk_textSelectTo %W @%x,%y} bind Text <2> {%W scan mark %y} bind Text {%W scan dragto %y} bind Text { if {"%A" != ""} { %W insert insert %A %W yview -pickplace insert } } bind Text {%W insert insert \n; %W yview -pickplace insert} bind Text {tk_textBackspace %W; %W yview -pickplace insert} bind Text {tk_textBackspace %W; %W yview -pickplace insert} bind Text {tk_textBackspace %W; %W yview -pickplace insert} bind Text {%W delete sel.first sel.last} bind Text { %W insert insert [selection get] %W yview -pickplace insert } tk_bindForTraversal Text # Initialize the elements of tk_priv that require initialization. set tk_priv(buttons) 0 set tk_priv(dragging) {} set tk_priv(focus) {} set tk_priv(inMenuButton) {} set tk_priv(posted) {} set tk_priv(selectMode) char set tk_priv(window) {} micropolis-activity/src/tk/library/demos/0000775000076400007640000000000010724145723021013 5ustar simcitysimcitymicropolis-activity/src/tk/library/demos/color0000775000076400007640000000204210724145723022055 0ustar simcitysimcity#!/usr/local/bin/wish -f # # Simple script to change colors of a window. if "$argc < 3" {error "Usage: color appName window option"} set appName [lindex $argv 0] set widget [lindex $argv 1] set option [lindex $argv 2] set red 0 set green 0 set blue 0 option add *Scale.sliderForeground "#cdb79e" option add *Scale.activeForeground "#ffe4c4" pack append . [scale .red -command "color red" -label "Red Intensity" \ -from 0 -to 255 -orient horizontal -bg "#ffaeb9" -length 250] \ {top expand fill} pack append . [scale .green -command "color green" -label "Green Intensity" \ -from 0 -to 255 -orient horizontal -bg "#43cd80"] {top expand fill} pack append . [scale .blue -command "color blue" -label "Blue Intensity" \ -from 0 -to 255 -orient horizontal -bg "#7ec0ee"] {top expand fill} proc color {which intensity} { global red green blue appName widget option set $which $intensity send $appName $widget config $option \ [format #%02x%02x%02x $red $green $blue] } bind . {destroy .} bind . {destroy .} focus . micropolis-activity/src/tk/library/demos/mkTear.tcl0000664000076400007640000000150410724145723022742 0ustar simcitysimcity# mkTear w # # Create a top-level window that displays a help message on tear-off # menus. # # Arguments: # w - Name to use for new top-level window. proc mkTear {{w .t1}} { catch {destroy $w} toplevel $w dpos $w wm title $w "Information On Tear-Off Menus" wm iconname $w "Info" message $w.msg -font -Adobe-times-medium-r-normal--*-180* -aspect 250 \ -text "To tear off a menu, press mouse button 2 over the menubutton for the menu, then drag the menu with button 2 held down. You can reposition a torn-off menu by pressing button 2 on it and dragging again. To unpost the menu, click mouse button 1 over the menu's menubutton. Click the \"OK\" button when you're finished with this window." button $w.ok -text OK -command "destroy $w" pack append $w $w.msg {top fill} $w.ok {bottom fill} } micropolis-activity/src/tk/library/demos/showVars.tcl0000664000076400007640000000147110724145723023336 0ustar simcitysimcity# showVars w var var var ... # # Create a top-level window that displays a bunch of global variable values # and keeps the display up-to-date even when the variables change value # # Arguments: # w - Name to use for new top-level window. # var - Name of variable to monitor. proc showVars {w args} { catch {destroy $w} toplevel $w wm title $w "Variable values" label $w.title -text "Variable values:" -width 20 -anchor center \ -font -Adobe-helvetica-medium-r-normal--*-180* pack append $w $w.title {top fillx} foreach i $args { frame $w.$i label $w.$i.name -text "$i: " label $w.$i.value -textvar $i pack append $w.$i $w.$i.name left $w.$i.value left pack append $w $w.$i {top frame w} } button $w.ok -text OK -command "destroy $w" pack append $w $w.ok {bottom pady 2} } micropolis-activity/src/tk/library/demos/mkButton.tcl0000664000076400007640000000227110724145723023324 0ustar simcitysimcity# mkButton w # # Create a top-level window that displays a bunch of buttons. # # Arguments: # w - Name to use for new top-level window. proc mkButton {{w .b1}} { catch {destroy $w} toplevel $w dpos $w wm title $w "Button Demonstration" wm iconname $w "Buttons" message $w.msg -font -Adobe-times-medium-r-normal--*-180* -aspect 300 \ -text "Four buttons are displayed below. If you click on a button, it will change the background of the button area to the color indicated in the button. Click the \"OK\" button when you've seen enough." frame $w.frame -borderwidth 10 pack append $w.frame \ [button $w.frame.b1 -text "Peach Puff" \ -command "$w.frame config -bg PeachPuff1"] {top pady 4 expand} \ [button $w.frame.b2 -text "Light Blue" \ -command "$w.frame config -bg LightBlue1"] {top pady 4 expand} \ [button $w.frame.b3 -text "Sea Green" \ -command "$w.frame config -bg SeaGreen2"] {top pady 4 expand} \ [button $w.frame.b4 -text "Yellow" \ -command "$w.frame config -bg Yellow1"] {top pady 4 expand} button $w.ok -text OK -command "destroy $w" pack append $w $w.msg {top fill} $w.frame {top expand fill} \ $w.ok {bottom fill} } micropolis-activity/src/tk/library/demos/mkTextBind.tcl0000664000076400007640000000641410724145723023575 0ustar simcitysimcity# mkTextBind w # # Create a top-level window that illustrates how you can bind # Tcl commands to regions of text in a text widget. # # Arguments: # w - Name to use for new top-level window. proc mkTextBind {{w .bindings}} { catch {destroy $w} toplevel $w dpos $w wm title $w "Text Demonstration - Tag Bindings" wm iconname $w "Text Bindings" button $w.ok -text OK -command "destroy $w" text $w.t -relief raised -bd 2 -yscrollcommand "$w.s set" -setgrid true \ -width 60 -height 28 \ -font "-Adobe-Helvetica-Bold-R-Normal-*-120-*" scrollbar $w.s -relief flat -command "$w.t yview" pack append $w $w.ok {bottom fillx} $w.s {right filly} $w.t {expand fill} # Set up display styles if {[winfo screendepth $w] > 4} { set bold "-foreground red" set normal "-foreground {}" } else { set bold "-foreground white -background black" set normal "-foreground {} -background {}" } $w.t insert 0.0 {\ The same tag mechanism that controls display styles in text widgets can also be used to associate Tcl commands with regions of text, so that mouse or keyboard actions on the text cause particular Tcl commands to be invoked. For example, in the text below the descriptions of the canvas demonstrations have been tagged. When you move the mouse over a demo description the description lights up, and when you press button 3 over a description then that particular demonstration is invoked. This demo package contains a number of demonstrations of Tk's canvas widgets. Here are brief descriptions of some of the demonstrations that are available: } insertWithTags $w.t \ {1. Samples of all the different types of items that can be created in canvas widgets.} d1 insertWithTags $w.t \n\n insertWithTags $w.t \ {2. A simple two-dimensional plot that allows you to adjust the positions of the data points.} d2 insertWithTags $w.t \n\n insertWithTags $w.t \ {3. Anchoring and justification modes for text items.} d3 insertWithTags $w.t \n\n insertWithTags $w.t \ {4. An editor for arrow-head shapes for line items.} d4 insertWithTags $w.t \n\n insertWithTags $w.t \ {5. A ruler with facilities for editing tab stops.} d5 insertWithTags $w.t \n\n insertWithTags $w.t \ {6. A grid that demonstrates how canvases can be scrolled.} d6 foreach tag {d1 d2 d3 d4 d5 d6} { $w.t tag bind $tag "$w.t tag configure $tag $bold" $w.t tag bind $tag "$w.t tag configure $tag $normal" } $w.t tag bind d1 <3> mkItems $w.t tag bind d2 <3> mkPlot $w.t tag bind d3 <3> mkCanvText $w.t tag bind d4 <3> mkArrow $w.t tag bind d5 <3> mkRuler $w.t tag bind d6 <3> mkScroll $w.t mark set insert 0.0 bind $w "focus $w.t" } # The procedure below inserts text into a given text widget and # applies one or more tags to that text. The arguments are: # # w Window in which to insert # text Text to insert (it's inserted at the "insert" mark) # args One or more tags to apply to text. If this is empty # then all tags are removed from the text. proc insertWithTags {w text args} { set start [$w index insert] $w insert insert $text foreach tag [$w tag names $start] { $w tag remove $tag $start insert } foreach i $args { $w tag add $i $start insert } } micropolis-activity/src/tk/library/demos/mkRuler.tcl0000664000076400007640000000756410724145723023154 0ustar simcitysimcity# mkRuler w # # Create a canvas demonstration consisting of a ruler. # # Arguments: # w - Name to use for new top-level window. # This file implements a canvas widget that displays a ruler with tab stops # that can be set individually. The only procedure that should be invoked # from outside the file is the first one, which creates the canvas. proc mkRuler {{w .ruler}} { global tk_library upvar #0 demo_rulerInfo v catch {destroy $w} toplevel $w dpos $w wm title $w "Ruler Demonstration" wm iconname $w "Ruler" set c $w.c frame $w.frame1 -relief raised -bd 2 canvas $c -width 14.8c -height 2.5c -relief raised button $w.ok -text "OK" -command "destroy $w" pack append $w $w.frame1 {top fill} $w.ok {bottom pady 10 frame center} \ $c {expand fill} message $w.frame1.m -font -Adobe-Times-Medium-R-Normal-*-180-* -aspect 300 \ -text "This canvas widget shows a mock-up of a ruler. You can create tab stops by dragging them out of the well to the right of the ruler. You can also drag existing tab stops. If you drag a tab stop far enough up or down so that it turns dim, it will be deleted when you release the mouse button." pack append $w.frame1 $w.frame1.m {frame center} set v(grid) .25c set v(left) [winfo fpixels $c 1c] set v(right) [winfo fpixels $c 13c] set v(top) [winfo fpixels $c 1c] set v(bottom) [winfo fpixels $c 1.5c] set v(size) [winfo fpixels $c .2c] set v(normalStyle) "-fill black" if {[winfo screendepth $c] > 4} { set v(activeStyle) "-fill red -stipple {}" set v(deleteStyle) "-stipple @$tk_library/demos/bitmaps/grey.25 \ -fill red" } else { set v(activeStyle) "-fill black -stipple {}" set v(deleteStyle) "-stipple @$tk_library/demos/bitmaps/grey.25 \ -fill black" } $c create line 1c 0.5c 1c 1c 13c 1c 13c 0.5c -width 1 for {set i 0} {$i < 12} {incr i} { set x [expr $i+1] $c create line ${x}c 1c ${x}c 0.6c -width 1 $c create line $x.25c 1c $x.25c 0.8c -width 1 $c create line $x.5c 1c $x.5c 0.7c -width 1 $c create line $x.75c 1c $x.75c 0.8c -width 1 $c create text $x.15c .75c -text $i -anchor sw } $c addtag well withtag [$c create rect 13.2c 1c 13.8c 0.5c \ -outline black -fill [lindex [$c config -bg] 4]] $c addtag well withtag [rulerMkTab $c [winfo pixels $c 13.5c] \ [winfo pixels $c .65c]] $c bind well <1> "rulerNewTab $c %x %y" $c bind tab <1> "demo_selectTab $c %x %y" bind $c "rulerMoveTab $c %x %y" bind $c "rulerReleaseTab $c" } proc rulerMkTab {c x y} { upvar #0 demo_rulerInfo v $c create polygon $x $y [expr $x+$v(size)] [expr $y+$v(size)] \ [expr $x-$v(size)] [expr $y+$v(size)] } proc rulerNewTab {c x y} { upvar #0 demo_rulerInfo v $c addtag active withtag [rulerMkTab $c $x $y] $c addtag tab withtag active set v(x) $x set v(y) $y rulerMoveTab $c $x $y } proc rulerMoveTab {c x y} { upvar #0 demo_rulerInfo v if {[$c find withtag active] == ""} { return } set cx [$c canvasx $x $v(grid)] set cy [$c canvasy $y] if {$cx < $v(left)} { set cx $v(left) } if {$cx > $v(right)} { set cx $v(right) } if {($cy >= $v(top)) && ($cy <= $v(bottom))} { set cy [expr $v(top)+2] eval "$c itemconf active $v(activeStyle)" } else { set cy [expr $cy-$v(size)-2] eval "$c itemconf active $v(deleteStyle)" } $c move active [expr $cx-$v(x)] [expr $cy-$v(y)] set v(x) $cx set v(y) $cy } proc demo_selectTab {c x y} { upvar #0 demo_rulerInfo v set v(x) [$c canvasx $x $v(grid)] set v(y) [expr $v(top)+2] $c addtag active withtag current eval "$c itemconf active $v(activeStyle)" $c raise active } proc rulerReleaseTab c { upvar #0 demo_rulerInfo v if {$v(y) != [expr $v(top)+2]} { $c delete active } else { eval "$c itemconf active $v(normalStyle)" $c dtag active } } micropolis-activity/src/tk/library/demos/mkItems.tcl0000664000076400007640000002347310724145723023141 0ustar simcitysimcity# mkItems w # # Create a top-level window containing a canvas that displays the # various item types and allows them to be selected and moved. This # demo can be used to test out the point-hit and rectangle-hit code # for items. # # Arguments: # w - Name to use for new top-level window. proc mkItems {{w .citems}} { global c tk_library catch {destroy $w} toplevel $w dpos $w wm title $w "Canvas Item Demonstration" wm iconname $w "Items" wm minsize $w 100 100 set c $w.frame2.c frame $w.frame1 -relief raised -bd 2 frame $w.frame2 -relief raised -bd 2 button $w.ok -text "OK" -command "destroy $w" pack append $w $w.frame1 {top fill} $w.frame2 {top fill expand} \ $w.ok {bottom pady 10 frame center} message $w.frame1.m -font -Adobe-Times-Medium-R-Normal-*-180-* -aspect 300 \ -text "This window contains a canvas widget with examples of the various kinds of items supported by canvases. The following operations are supported:\n Button-1 drag:\tmoves item under pointer.\n Button-2 drag:\trepositions view.\n Button-3 drag:\tstrokes out area.\n Ctrl+f:\t\tprints items under area." pack append $w.frame1 $w.frame1.m {frame center} canvas $c -scrollregion {0c 0c 30c 24c} -width 15c -height 10c scrollbar $w.frame2.vscroll -relief sunken -command "$c yview" scrollbar $w.frame2.hscroll -orient horiz -relief sunken -command "$c xview" pack append $w.frame2 $w.frame2.hscroll {bottom fillx} \ $w.frame2.vscroll {right filly} $c {expand fill} $c config -xscroll "$w.frame2.hscroll set" -yscroll "$w.frame2.vscroll set" # Display a 3x3 rectangular grid. $c create rect 0c 0c 30c 24c -width 2 $c create line 0c 8c 30c 8c -width 2 $c create line 0c 16c 30c 16c -width 2 $c create line 10c 0c 10c 24c -width 2 $c create line 20c 0c 20c 24c -width 2 set font1 -Adobe-Helvetica-Medium-R-Normal-*-120-* set font2 -Adobe-Helvetica-Bold-R-Normal-*-240-* if {[winfo screendepth $c] > 4} { set blue DeepSkyBlue3 set red red set bisque bisque3 set green SeaGreen3 } else { set blue black set red black set bisque black set green black } # Set up demos within each of the areas of the grid. $c create text 5c .2c -text Lines -anchor n $c create line 1c 1c 3c 1c 1c 4c 3c 4c -width 2m -fill $blue \ -cap butt -join miter -tags item $c create line 4.67c 1c 4.67c 4c -arrow last -tags item $c create line 6.33c 1c 6.33c 4c -arrow both -tags item $c create line 5c 6c 9c 6c 9c 1c 8c 1c 8c 4.8c 8.8c 4.8c 8.8c 1.2c \ 8.2c 1.2c 8.2c 4.6c 8.6c 4.6c 8.6c 1.4c 8.4c 1.4c 8.4c 4.4c \ -width 3 -fill $red -tags item $c create line 1c 5c 7c 5c 7c 7c 9c 7c -width .5c \ -stipple @$tk_library/demos/bitmaps/grey.25 \ -arrow both -arrowshape {15 15 7} -tags item $c create line 1c 7c 1.75c 5.8c 2.5c 7c 3.25c 5.8c 4c 7c -width .5c \ -cap round -join round -tags item $c create text 15c .2c -text "Curves (smoothed lines)" -anchor n $c create line 11c 4c 11.5c 1c 13.5c 1c 14c 4c -smooth on \ -fill $blue -tags item $c create line 15.5c 1c 19.5c 1.5c 15.5c 4.5c 19.5c 4c -smooth on \ -arrow both -width 3 -tags item $c create line 12c 6c 13.5c 4.5c 16.5c 7.5c 18c 6c \ 16.5c 4.5c 13.5c 7.5c 12c 6c -smooth on -width 3m -cap round \ -stipple @$tk_library/demos/bitmaps/grey.25 -fill $red -tags item $c create text 25c .2c -text Polygons -anchor n $c create polygon 21c 1.0c 22.5c 1.75c 24c 1.0c 23.25c 2.5c \ 24c 4.0c 22.5c 3.25c 21c 4.0c 21.75c 2.5c -fill $green -tags item $c create polygon 25c 4c 25c 4c 25c 1c 26c 1c 27c 4c 28c 1c \ 29c 1c 29c 4c 29c 4c -fill $red -smooth on -tags item $c create polygon 22c 4.5c 25c 4.5c 25c 6.75c 28c 6.75c \ 28c 5.25c 24c 5.25c 24c 6.0c 26c 6c 26c 7.5c 22c 7.5c \ -stipple @$tk_library/demos/bitmaps/grey.25 -tags item $c create text 5c 8.2c -text Rectangles -anchor n $c create rectangle 1c 9.5c 4c 12.5c -outline $red -width 3m -tags item $c create rectangle 0.5c 13.5c 4.5c 15.5c -fill $green -tags item $c create rectangle 6c 10c 9c 15c -outline {} \ -stipple @$tk_library/demos/bitmaps/grey.25 -fill $blue -tags item $c create text 15c 8.2c -text Ovals -anchor n $c create oval 11c 9.5c 14c 12.5c -outline $red -width 3m -tags item $c create oval 10.5c 13.5c 14.5c 15.5c -fill $green -tags item $c create oval 16c 10c 19c 15c -outline {} \ -stipple @$tk_library/demos/bitmaps/grey.25 -fill $blue -tags item $c create text 25c 8.2c -text Text -anchor n $c create rectangle 22.4c 8.9c 22.6c 9.1c $c create text 22.5c 9c -anchor n -font $font1 -width 4c \ -text "A short string of text, word-wrapped, justified left, and anchored north (at the top). The rectangles show the anchor points for each piece of text." -tags item $c create rectangle 25.4c 10.9c 25.6c 11.1c $c create text 25.5c 11c -anchor w -font $font1 -fill $blue \ -text "Several lines,\n each centered\nindividually,\nand all anchored\nat the left edge." \ -justify center -tags item $c create rectangle 24.9c 13.9c 25.1c 14.1c $c create text 25c 14c -font $font2 -anchor c -fill $red \ -stipple @$tk_library/demos/bitmaps/grey.5 \ -text "Stippled characters" -tags item $c create text 5c 16.2c -text Arcs -anchor n $c create arc 0.5c 17c 7c 20c -fill $green -outline black \ -start 45 -extent 270 -style pieslice -tags item $c create arc 6.5c 17c 9.5c 20c -width 4m -style arc \ -fill $blue -start -135 -extent 270 \ -stipple @$tk_library/demos/bitmaps/grey.25 -tags item $c create arc 0.5c 20c 9.5c 24c -width 4m -style pieslice \ -fill {} -outline $red -start 225 -extent -90 -tags item $c create arc 5.5c 20.5c 9.5c 23.5c -width 4m -style chord \ -fill $blue -outline {} -start 45 -extent 270 -tags item $c create text 15c 16.2c -text Bitmaps -anchor n $c create bitmap 13c 20c -bitmap @$tk_library/demos/bitmaps/face -tags item $c create bitmap 17c 18.5c \ -bitmap @$tk_library/demos/bitmaps/noletters -tags item $c create bitmap 17c 21.5c \ -bitmap @$tk_library/demos/bitmaps/letters -tags item $c create text 25c 16.2c -text Windows -anchor n button $c.button -text "Press Me" -command "butPress $c $red" $c create window 21c 18c -window $c.button -anchor nw -tags item entry $c.entry -width 20 -relief sunken $c.entry insert end "Edit this text" $c create window 21c 21c -window $c.entry -anchor nw -tags item scale $c.scale -from 0 -to 100 -length 6c -sliderlength .4c \ -width .5c -tickinterval 0 $c create window 28.5c 17.5c -window $c.scale -anchor n -tags item $c create text 21c 17.9c -text Button: -anchor sw $c create text 21c 20.9c -text Entry: -anchor sw $c create text 28.5c 17.4c -text Scale: -anchor s # Set up event bindings for canvas: $c bind item "itemEnter $c" $c bind item "itemLeave $c" bind $c <2> "$c scan mark %x %y" bind $c "$c scan dragto %x %y" bind $c <3> "itemMark $c %x %y" bind $c "itemStroke $c %x %y" bind $c "itemsUnderArea $c" bind $c <1> "itemStartDrag $c %x %y" bind $c "itemDrag $c %x %y" bind $w "focus $c" } # Utility procedures for highlighting the item under the pointer: proc itemEnter {c} { global restoreCmd if {[winfo screendepth $c] <= 4} { set restoreCmd {} return } set type [$c type current] if {$type == "window"} { set restoreCmd {} return } if {$type == "bitmap"} { set bg [lindex [$c itemconf current -background] 4] set restoreCmd [list $c itemconfig current -background $bg] $c itemconfig current -background SteelBlue2 return } set fill [lindex [$c itemconfig current -fill] 4] if {(($type == "rectangle") || ($type == "oval") || ($type == "arc")) && ($fill == "")} { set outline [lindex [$c itemconfig current -outline] 4] set restoreCmd "$c itemconfig current -outline $outline" $c itemconfig current -outline SteelBlue2 } else { set restoreCmd "$c itemconfig current -fill $fill" $c itemconfig current -fill SteelBlue2 } } proc itemLeave {c} { global restoreCmd eval $restoreCmd } # Utility procedures for stroking out a rectangle and printing what's # underneath the rectangle's area. proc itemMark {c x y} { global areaX1 areaY1 set areaX1 [$c canvasx $x] set areaY1 [$c canvasy $y] $c delete area } proc itemStroke {c x y} { global areaX1 areaY1 areaX2 areaY2 set x [$c canvasx $x] set y [$c canvasy $y] if {($areaX1 != $x) && ($areaY1 != $y)} { $c delete area $c addtag area withtag [$c create rect $areaX1 $areaY1 $x $y \ -outline black] set areaX2 $x set areaY2 $y } } proc itemsUnderArea {c} { global areaX1 areaY1 areaX2 areaY2 set area [$c find withtag area] set items "" foreach i [$c find enclosed $areaX1 $areaY1 $areaX2 $areaY2] { if {[lsearch [$c gettags $i] item] != -1} { lappend items $i } } puts stdout "Items enclosed by area: $items" set items "" foreach i [$c find overlapping $areaX1 $areaY1 $areaX2 $areaY2] { if {[lsearch [$c gettags $i] item] != -1} { lappend items $i } } puts stdout "Items overlapping area: $items" } set areaX1 0 set areaY1 0 set areaX2 0 set areaY2 0 # Utility procedures to support dragging of items. proc itemStartDrag {c x y} { global lastX lastY set lastX [$c canvasx $x] set lastY [$c canvasy $y] } proc itemDrag {c x y} { global lastX lastY set x [$c canvasx $x] set y [$c canvasy $y] $c move current [expr $x-$lastX] [expr $y-$lastY] set lastX $x set lastY $y } # Procedure that's invoked when the button embedded in the canvas # is invoked. proc butPress {w color} { set i [$w create text 25c 18.1c -text "Ouch!!" -fill $color -anchor n] after 500 "$w delete $i" } micropolis-activity/src/tk/library/demos/hello0000775000076400007640000000065310724145723022050 0ustar simcitysimcity#!/usr/local/bin/wish -f # Simple Tk script to create a button that prints "Hello, world". # Click on the button to terminate the program. # # The first line below creates the button, and the second line # arranges for packer to manage the button's geometry, centering # it in the application's main window. button .hello -text "Hello, world" -command { puts stdout "Hello, world"; destroy . } pack append . .hello {top} micropolis-activity/src/tk/library/demos/rolodex0000775000076400007640000002511610724145723022422 0ustar simcitysimcity#!/usr/local/bin/wish -f # # This script was written as an entry in Tom LaStrange's rolodex # benchmark. It creates something that has some of the look and # feel of a rolodex program, although it's lifeless and doesn't # actually do the rolodex application. foreach i [winfo child .] { catch {destroy $i} } proc tkerror err { global errorInfo puts stdout "$errorInfo" } #------------------------------------------ # Phase 0: create the front end. #------------------------------------------ frame .frame -relief flat pack append . .frame {top filly frame center} set names {{} Name: Address: {} {} {Home Phone:} {Work Phone:} Fax:} foreach i {1 2 3 4 5 6 7} { frame .frame.$i pack append .frame .frame.$i {top pady 4 frame e} label .frame.$i.label -text [lindex $names $i] -anchor e entry .frame.$i.entry -width 30 -relief sunken pack append .frame.$i .frame.$i.entry right .frame.$i.label right } frame .buttons pack append . .buttons {bottom pady 4 frame center} button .buttons.clear -text Clear button .buttons.add -text Add button .buttons.search -text Search button .buttons.delete -text "Delete ..." pack append .buttons .buttons.clear {left padx 4} \ .buttons.add {left padx 4} .buttons.search {left padx 4} \ .buttons.delete {left padx 4} #------------------------------------------ # Phase 1: Add menus, dialog boxes #------------------------------------------ frame .menu -relief raised -borderwidth 1 pack before .frame .menu {top fillx} menubutton .menu.file -text "File" -menu .menu.file.m menu .menu.file.m .menu.file.m add command -label "Load ..." -command fileAction .menu.file.m add command -label "Exit" -command {destroy .} menubutton .menu.help -text "Help" -menu .menu.help.m menu .menu.help.m pack append .menu .menu.file left .menu.help right # The mkDialog procedure below was pirated from the widget demo. It # was not written fresh for this benchmark. # Create a dialog box. Takes three or more arguments. The first is # the name of the window to use for the dialog box. The second is a set # of arguments for use in creating the message of the dialog box. The # third and following arguments consist of two-element lists, each # describing one button. The first element gives the text to be displayed # in the button, the second gives the command to be invoked when the # button is invoked. proc mkDialog {w msgArgs args} { catch {destroy $w} toplevel $w -class Dialog set oldFocus [focus] # Create two frames in the main window. The top frame will hold the # message and the bottom one will hold the buttons. Arrange them # one above the other, with any extra vertical space split between # them. frame $w.top -relief raised -border 1 frame $w.bot -relief raised -border 1 pack append $w $w.top {top fill expand} $w.bot {top fill expand} # Create the message widget and arrange for it to be centered in the # top frame. eval message $w.top.msg -justify center \ -font -Adobe-times-medium-r-normal--*-180* $msgArgs pack append $w.top $w.top.msg {top expand padx 5 pady 5} # Create as many buttons as needed and arrange them from left to right # in the bottom frame. Embed the left button in an additional sunken # frame to indicate that it is the default button, and arrange for that # button to be invoked as the default action for clicks and returns in # the dialog. if {[llength $args] > 0} { set arg [lindex $args 0] frame $w.bot.0 -relief sunken -border 1 pack append $w.bot $w.bot.0 {left expand padx 20 pady 20} button $w.bot.0.button -text [lindex $arg 0] \ -command "[lindex $arg 1]; destroy $w; focus $oldFocus" pack append $w.bot.0 $w.bot.0.button {expand padx 12 pady 12} bind $w.top "$w.bot.0.button activate" bind $w.top.msg "$w.bot.0.button activate" bind $w.bot "$w.bot.0.button activate" bind $w.top "$w.bot.0.button deactivate" bind $w.top.msg "$w.bot.0.button deactivate" bind $w.bot "$w.bot.0.button deactivate" bind $w <1> "$w.bot.0.button config -relief sunken" bind $w \ "[lindex $arg 1]; $w.bot.0.button deactivate; destroy $w; focus $oldFocus" bind $w "[lindex $arg 1]; destroy $w; focus $oldFocus" focus $w set i 1 foreach arg [lrange $args 1 end] { button $w.bot.$i -text [lindex $arg 0] \ -command "[lindex $arg 1]; destroy $w; focus $oldFocus" pack append $w.bot $w.bot.$i {left expand padx 20} set i [expr $i+1] } } wm geometry $w +300+350 } proc deleteAction {} { mkDialog .delete {-text "Are you sure?" -aspect 10000} \ "OK clearAction" "Cancel {}" } .buttons.delete config -command deleteAction proc fileAction {} { mkDialog .fileSelection {-text "This is a dummy file selection dialog box, which is used because there isn't a good file selection dialog built into Tk yet." -aspect 400} "OK {puts stderr {dummy file name}}" } #------------------------------------------ # Phase 3: Print contents of card #------------------------------------------ proc addAction {} { global names foreach i {1 2 3 4 5 6 7} { puts stderr [format "%-12s %s" [lindex $names $i] [.frame.$i.entry get]] } } .buttons.add config -command addAction #------------------------------------------ # Phase 4: Miscellaneous other actions #------------------------------------------ proc clearAction {} { foreach i {1 2 3 4 5 6 7} { .frame.$i.entry delete 0 end } } .buttons.clear config -command clearAction proc fillCard {} { clearAction .frame.1.entry insert 0 "John Ousterhout" .frame.2.entry insert 0 "CS Division, Department of EECS" .frame.3.entry insert 0 "University of California" .frame.4.entry insert 0 "Berkeley, CA 94720" .frame.5.entry insert 0 "private" .frame.6.entry insert 0 "510-642-0865" .frame.7.entry insert 0 "510-642-5775" } .buttons.search config -command "addAction; fillCard" #---------------------------------------------------- # Phase 5: Accelerators, mnemonics, command-line info #---------------------------------------------------- .buttons.clear config -text "Clear Ctrl+C" bind Entry clearAction .buttons.add config -text "Add Ctrl+A" bind Entry addAction .buttons.search config -text "Search Ctrl+S" bind Entry "addAction; fillCard" .buttons.delete config -text "Delete... Ctrl+D" bind Entry deleteAction .menu.file.m entryconfig 0 -accel Ctrl+F bind Entry fileAction .menu.file.m entryconfig 1 -accel Ctrl+Q bind Entry {destroy .} focus .frame.1.entry #---------------------------------------------------- # Phase 6: help #---------------------------------------------------- proc Help {topic {x 0} {y 0}} { global helpTopics helpCmds if {$topic == ""} return while {[info exists helpCmds($topic)]} { set topic [eval $helpCmds($topic)] } if [info exists helpTopics($topic)] { set msg $helpTopics($topic) } else { set msg "Sorry, but no help is available for this topic" } mkDialog .help "-text {Information on $topic:\n\n$msg} -justify left -aspect 300" "OK {}" } proc getMenuTopic {w x y} { return $w.[$w index @[expr $y-[winfo rooty $w]]] } bind Entry {Help [winfo containing %X %Y] %X %Y} bind Entry {Help [winfo containing %X %Y] %X %Y} # Help text and commands follow: set helpTopics(.menu.file) {This is the "file" menu. It can be used to invoke some overall operations on the rolodex applications, such as loading a file or exiting.} set helpCmds(.menu.file.m) {getMenuTopic $topic $x $y} set helpTopics(.menu.file.m.0) {The "Load" entry in the "File" menu posts a dialog box that you can use to select a rolodex file} set helpTopics(.menu.file.m.1) {The "Exit" entry in the "File" menu causes the rolodex application to terminate} set helpCmds(.menu.file.m.none) {set topic ".menu.file"} set helpTopics(.frame.1.entry) {In this field of the rolodex entry you should type the person's name} set helpTopics(.frame.2.entry) {In this field of the rolodex entry you should type the first line of the person's address} set helpTopics(.frame.3.entry) {In this field of the rolodex entry you should type the second line of the person's address} set helpTopics(.frame.4.entry) {In this field of the rolodex entry you should type the third line of the person's address} set helpTopics(.frame.5.entry) {In this field of the rolodex entry you should type the person's home phone number, or "private" if the person doesn't want his or her number publicized} set helpTopics(.frame.6.entry) {In this field of the rolodex entry you should type the person's work phone number} set helpTopics(.frame.7.entry) {In this field of the rolodex entry you should type the phone number for the person's FAX machine} set helpCmds(.frame.1.label) {set topic .frame.1.entry} set helpCmds(.frame.2.label) {set topic .frame.2.entry} set helpCmds(.frame.3.label) {set topic .frame.3.entry} set helpCmds(.frame.4.label) {set topic .frame.4.entry} set helpCmds(.frame.5.label) {set topic .frame.5.entry} set helpCmds(.frame.6.label) {set topic .frame.6.entry} set helpCmds(.frame.7.label) {set topic .frame.7.entry} set helpTopics(context) {Unfortunately, this application doesn't support context-sensitive help in the usual way, because Tk doesn't yet have a grab mechanism and this is needed for context-sensitive help. Instead, you can achieve much the same effect by simply moving the mouse over the window you're curious about and pressing the Help or F1 keys. You can do this anytime.} set helpTopics(help) {This application provides only very crude help. Besides the entries in this menu, you can get help on individual windows by moving the mouse cursor over the window and pressing the Help or F1 keys.} set helpTopics(window) {This window is a dummy rolodex application created as part of Tom LaStrange's toolkit benchmark. It doesn't really do anything useful except to demonstrate a few features of the Tk toolkit.} set helpTopics(keys) "The following accelerator keys are defined for this application (in addition to those already available for the entry windows):\n\nCtrl+A:\t\tAdd\nCtrl+C:\t\tClear\nCtrl+D:\t\tDelete\nCtrl+F:\t\tEnter file name\nCtrl+Q:\t\tExit application (quit)\nCtrl+S:\t\tSearch (dummy operation)" set helpTopics(version) {This is version 1.0.} # Entries in "Help" menu .menu.help.m add command -label "On Context..." -command {Help context} .menu.help.m add command -label "On Help..." -command {Help help} .menu.help.m add command -label "On Window..." -command {Help window} .menu.help.m add command -label "On Keys..." -command {Help keys} .menu.help.m add command -label "On Version..." -command {Help version} micropolis-activity/src/tk/library/demos/tkSquare.c0000664000076400007640000003655510724145723022774 0ustar simcitysimcity/* * tkSquare.c -- * * This module implements "square" widgets. A "square" is * a widget that displays a single square that can be moved * around and resized. This file is intended as an example * of how to build a widget. * * Copyright 1991-1992 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/scripts/demos/RCS/tkSquare.c,v 1.2 92/04/29 11:45:17 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tkConfig.h" #include "tk.h" /* * A data structure of the following type is kept for each square * widget managed by this file: */ typedef struct { Tk_Window tkwin; /* Window that embodies the square. NULL * means that the window has been destroyed * but the data structures haven't yet been * cleaned up.*/ Tcl_Interp *interp; /* Interpreter associated with widget. */ int x, y; /* Position of square's upper-left corner * within widget. */ int size; /* Width and height of square. */ int flags; /* Various flags; see below for * definitions. */ /* * Information used when displaying widget: */ int borderWidth; /* Width of 3-D border around whole widget. */ Tk_3DBorder bgBorder; /* Used for drawing background. */ Tk_3DBorder fgBorder; /* For drawing square. */ int relief; /* Indicates whether window as a whole is * raised, sunken, or flat. */ int doubleBuffer; /* Non-zero means double-buffer redisplay * with pixmap; zero means draw straight * onto the display. */ } Square; /* * Flag bits for squares: * * REDRAW_PENDING - 1 means redraw has already been scheduled. */ #define REDRAW_PENDING 1 /* * Information used for argv parsing. */ static Tk_ConfigSpec configSpecs[] = { {TK_CONFIG_BORDER, "-background", "background", "Background", "#cdb79e", Tk_Offset(Square, bgBorder), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-background", "background", "Background", "white", Tk_Offset(Square, bgBorder), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_SYNONYM, "-bd", "borderWidth", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_SYNONYM, "-bg", "background", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_INT, "-borderwidth", "borderWidth", "BorderWidth", "2", Tk_Offset(Square, borderWidth), 0}, {TK_CONFIG_INT, "-dbl", "doubleBuffer", "DoubleBuffer", "1", Tk_Offset(Square, doubleBuffer), 0}, {TK_CONFIG_SYNONYM, "-fg", "foreground", (char *) NULL, (char *) NULL, 0, 0}, {TK_CONFIG_BORDER, "-foreground", "foreground", "Foreground", "#b03060", Tk_Offset(Square, fgBorder), TK_CONFIG_COLOR_ONLY}, {TK_CONFIG_BORDER, "-foreground", "foreground", "Foreground", "black", Tk_Offset(Square, fgBorder), TK_CONFIG_MONO_ONLY}, {TK_CONFIG_RELIEF, "-relief", "relief", "Relief", "raised", Tk_Offset(Square, relief), 0}, {TK_CONFIG_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, 0} }; /* * Forward declarations for procedures defined later in this file: */ static int ConfigureSquare _ANSI_ARGS_((Tcl_Interp *interp, Square *squarePtr, int argc, char **argv, int flags)); static void DestroySquare _ANSI_ARGS_((ClientData clientData)); static void DisplaySquare _ANSI_ARGS_((ClientData clientData)); static void KeepInWindow _ANSI_ARGS_((Square *squarePtr)); static void SquareEventProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); static int SquareWidgetCmd _ANSI_ARGS_((ClientData clientData, Tcl_Interp *, int argc, char **argv)); /* *-------------------------------------------------------------- * * Tk_SquareCmd -- * * This procedure is invoked to process the "square" Tcl * command. It creates a new "square" widget. * * Results: * A standard Tcl result. * * Side effects: * A new widget is created and configured. * *-------------------------------------------------------------- */ int Tk_SquareCmd(clientData, interp, argc, argv) ClientData clientData; /* Main window associated with * interpreter. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { Tk_Window main = (Tk_Window) clientData; register Square *squarePtr; Tk_Window tkwin; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " pathName ?options?\"", (char *) NULL); return TCL_ERROR; } tkwin = Tk_CreateWindowFromPath(interp, main, argv[1], (char *) NULL); if (tkwin == NULL) { return TCL_ERROR; } /* * Initialize fields that won't be initialized by ConfigureSquare, * or which ConfigureSquare expects to have reasonable values * (e.g. resource pointers). */ squarePtr = (Square *) ckalloc(sizeof(Square)); squarePtr->tkwin = tkwin; squarePtr->interp = interp; squarePtr->x = 0; squarePtr->y = 0; squarePtr->size = 20; squarePtr->bgBorder = NULL; squarePtr->fgBorder = NULL; squarePtr->flags = 0; Tk_SetClass(squarePtr->tkwin, "Square"); Tk_CreateEventHandler(squarePtr->tkwin, ExposureMask|StructureNotifyMask, SquareEventProc, (ClientData) squarePtr); Tcl_CreateCommand(interp, Tk_PathName(squarePtr->tkwin), SquareWidgetCmd, (ClientData) squarePtr, (void (*)()) NULL); if (ConfigureSquare(interp, squarePtr, argc-2, argv+2, 0) != TCL_OK) { Tk_DestroyWindow(squarePtr->tkwin); return TCL_ERROR; } interp->result = Tk_PathName(squarePtr->tkwin); return TCL_OK; } /* *---------------------------------------------------------------------- * * ConfigureSquare -- * * This procedure is called to process an argv/argc list in * conjunction with the Tk option database to configure (or * reconfigure) a square widget. * * Results: * The return value is a standard Tcl result. If TCL_ERROR is * returned, then interp->result contains an error message. * * Side effects: * Configuration information, such as colors, border width, * etc. get set for squarePtr; old resources get freed, * if there were any. * *---------------------------------------------------------------------- */ static int ConfigureSquare(interp, squarePtr, argc, argv, flags) Tcl_Interp *interp; /* Used for error reporting. */ register Square *squarePtr; /* Information about widget. */ int argc; /* Number of valid entries in argv. */ char **argv; /* Arguments. */ int flags; /* Flags to pass to * Tk_ConfigureWidget. */ { if (Tk_ConfigureWidget(interp, squarePtr->tkwin, configSpecs, argc, argv, (char *) squarePtr, flags) != TCL_OK) { return TCL_ERROR; } /* * A few options need special processing, such as setting the * background from a 3-D border. */ Tk_SetBackgroundFromBorder(squarePtr->tkwin, squarePtr->bgBorder); /* * Register the desired geometry for the window. Then arrange for * the window to be redisplayed. */ Tk_GeometryRequest(squarePtr->tkwin, 200, 150); Tk_SetInternalBorder(squarePtr->tkwin, squarePtr->borderWidth); if (!(squarePtr->flags & REDRAW_PENDING)) { Tk_DoWhenIdle(DisplaySquare, (ClientData) squarePtr); squarePtr->flags |= REDRAW_PENDING; } return TCL_OK; } /* *-------------------------------------------------------------- * * DisplaySquare -- * * This procedure redraws the contents of a square window. * It is invoked as a do-when-idle handler, so it only runs * when there's nothing else for the application to do. * * Results: * None. * * Side effects: * Information appears on the screen. * *-------------------------------------------------------------- */ static void DisplaySquare(clientData) ClientData clientData; /* Information about window. */ { register Square *squarePtr = (Square *) clientData; register Tk_Window tkwin = squarePtr->tkwin; Pixmap pm = None; Drawable d; squarePtr->flags &= ~REDRAW_PENDING; if ((tkwin == NULL) || !Tk_IsMapped(tkwin)) { return; } /* * Create a pixmap for double-buffering, if necessary. */ if (squarePtr->doubleBuffer) { pm = XCreatePixmap(Tk_Display(tkwin), Tk_WindowId(tkwin), Tk_Width(tkwin), Tk_Height(tkwin), DefaultDepthOfScreen(Tk_Screen(tkwin))); d = pm; } else { d = Tk_WindowId(tkwin); } /* * Redraw the widget's background and border. */ Tk_Fill3DRectangle(Tk_Display(tkwin), d, squarePtr->bgBorder, 0, 0, Tk_Width(tkwin), Tk_Height(tkwin), squarePtr->borderWidth, squarePtr->relief); /* * Display the square. */ Tk_Fill3DRectangle(Tk_Display(tkwin), d, squarePtr->fgBorder, squarePtr->x, squarePtr->y, squarePtr->size, squarePtr->size, squarePtr->borderWidth, TK_RELIEF_RAISED); /* * If double-buffered, copy to the screen and release the pixmap. */ if (squarePtr->doubleBuffer) { XCopyArea(Tk_Display(tkwin), pm, Tk_WindowId(tkwin), DefaultGCOfScreen(Tk_Screen(tkwin)), 0, 0, Tk_Width(tkwin), Tk_Height(tkwin), 0, 0); XFreePixmap(Tk_Display(tkwin), pm); } } /* *-------------------------------------------------------------- * * SquareWidgetCmd -- * * This procedure is invoked to process the Tcl command * that corresponds to a widget managed by this module. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ static int SquareWidgetCmd(clientData, interp, argc, argv) ClientData clientData; /* Information about square widget. */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { register Square *squarePtr = (Square *) clientData; int result = TCL_OK; int length; char c; if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " option ?arg arg ...?\"", (char *) NULL); return TCL_ERROR; } Tk_Preserve((ClientData) squarePtr); c = argv[1][0]; length = strlen(argv[1]); if ((c == 'c') && (strncmp(argv[1], "configure", length) == 0)) { if (argc == 2) { result = Tk_ConfigureInfo(interp, squarePtr->tkwin, configSpecs, (char *) squarePtr, (char *) NULL, 0); } else if (argc == 3) { result = Tk_ConfigureInfo(interp, squarePtr->tkwin, configSpecs, (char *) squarePtr, argv[2], 0); } else { result = ConfigureSquare(interp, squarePtr, argc-2, argv+2, TK_CONFIG_ARGV_ONLY); } } else if ((c == 'p') && (strncmp(argv[1], "position", length) == 0)) { if ((argc != 2) && (argc != 4)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " position ?x y?\"", (char *) NULL); goto error; } if (argc == 4) { if ((Tcl_GetInt(interp, argv[2], &squarePtr->x) != TCL_OK) || (Tcl_GetInt(interp, argv[3], &squarePtr->y) != TCL_OK)) { goto error; } KeepInWindow(squarePtr); } sprintf(interp->result, "%d %d", squarePtr->x, squarePtr->y); } else if ((c == 's') && (strncmp(argv[1], "size", length) == 0)) { if ((argc != 2) && (argc != 3)) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " size ?amount?\"", (char *) NULL); goto error; } if (argc == 3) { int i; if (Tcl_GetInt(interp, argv[2], &i) != TCL_OK) { goto error; } if ((i <= 0) || (i > 100)) { Tcl_AppendResult(interp, "bad size \"", argv[2], "\"", (char *) NULL); goto error; } squarePtr->size = i; KeepInWindow(squarePtr); } sprintf(interp->result, "%d", squarePtr->size); } else { Tcl_AppendResult(interp, "bad option \"", argv[1], "\": must be configure, position, or size", (char *) NULL); goto error; } if (!(squarePtr->flags & REDRAW_PENDING)) { Tk_DoWhenIdle(DisplaySquare, (ClientData) squarePtr); squarePtr->flags |= REDRAW_PENDING; } Tk_Release((ClientData) squarePtr); return result; error: Tk_Release((ClientData) squarePtr); return TCL_ERROR; } /* *-------------------------------------------------------------- * * SquareEventProc -- * * This procedure is invoked by the Tk dispatcher for various * events on squares. * * Results: * None. * * Side effects: * When the window gets deleted, internal structures get * cleaned up. When it gets exposed, it is redisplayed. * *-------------------------------------------------------------- */ static void SquareEventProc(clientData, eventPtr) ClientData clientData; /* Information about window. */ XEvent *eventPtr; /* Information about event. */ { Square *squarePtr = (Square *) clientData; if ((eventPtr->type == Expose) && (eventPtr->xexpose.count == 0)) { if (!(squarePtr->flags & REDRAW_PENDING)) { Tk_DoWhenIdle(DisplaySquare, (ClientData) squarePtr); squarePtr->flags |= REDRAW_PENDING; } } else if (eventPtr->type == ConfigureNotify) { KeepInWindow(squarePtr); if (!(squarePtr->flags & REDRAW_PENDING)) { Tk_DoWhenIdle(DisplaySquare, (ClientData) squarePtr); squarePtr->flags |= REDRAW_PENDING; } } else if (eventPtr->type == DestroyNotify) { Tcl_DeleteCommand(squarePtr->interp, Tk_PathName(squarePtr->tkwin)); squarePtr->tkwin = NULL; if (squarePtr->flags & REDRAW_PENDING) { Tk_CancelIdleCall(DisplaySquare, (ClientData) squarePtr); } Tk_EventuallyFree((ClientData) squarePtr, DestroySquare); } } /* *---------------------------------------------------------------------- * * DestroySquare -- * * This procedure is invoked by Tk_EventuallyFree or Tk_Release * to clean up the internal structure of a square at a safe time * (when no-one is using it anymore). * * Results: * None. * * Side effects: * Everything associated with the square is freed up. * *---------------------------------------------------------------------- */ static void DestroySquare(clientData) ClientData clientData; /* Info about square widget. */ { register Square *squarePtr = (Square *) clientData; if (squarePtr->bgBorder != NULL) { Tk_Free3DBorder(squarePtr->bgBorder); } if (squarePtr->fgBorder != NULL) { Tk_Free3DBorder(squarePtr->fgBorder); } ckfree((char *) squarePtr); } /* *---------------------------------------------------------------------- * * KeepInWindow -- * * Adjust the position of the square if necessary to keep it in * the widget's window. * * Results: * None. * * Side effects: * The x and y position of the square are adjusted if necessary * to keep the square in the window. * *---------------------------------------------------------------------- */ static void KeepInWindow(squarePtr) register Square *squarePtr; /* Pointer to widget record. */ { int i, bd; if (squarePtr->relief == TK_RELIEF_FLAT) { bd = 0; } else { bd = squarePtr->borderWidth; } i = (Tk_Width(squarePtr->tkwin) - bd) - (squarePtr->x + squarePtr->size); if (i < 0) { squarePtr->x += i; } i = (Tk_Height(squarePtr->tkwin) - bd) - (squarePtr->y + squarePtr->size); if (i < 0) { squarePtr->y += i; } if (squarePtr->x < bd) { squarePtr->x = bd; } if (squarePtr->y < bd) { squarePtr->y = bd; } } micropolis-activity/src/tk/library/demos/mkStyles.tcl0000664000076400007640000001035310724145723023334 0ustar simcitysimcity# mkStyles w # # Create a top-level window with a text widget that demonstrates the # various display styles that are available in texts. # # Arguments: # w - Name to use for new top-level window. proc mkStyles {{w .styles}} { catch {destroy $w} toplevel $w dpos $w wm title $w "Text Demonstration - Display Styles" wm iconname $w "Text Styles" button $w.ok -text OK -command "destroy $w" text $w.t -relief raised -bd 2 -yscrollcommand "$w.s set" -setgrid true \ -width 70 -height 28 scrollbar $w.s -relief flat -command "$w.t yview" pack append $w $w.ok {bottom fillx} $w.s {right filly} $w.t {expand fill} # Set up display styles $w.t tag configure bold -font -Adobe-Courier-Bold-O-Normal-*-120-* $w.t tag configure big -font -Adobe-Courier-Bold-R-Normal-*-140-* $w.t tag configure verybig -font -Adobe-Helvetica-Bold-R-Normal-*-240-* if {[winfo screendepth $w] > 4} { $w.t tag configure color1 -background #eed5b7 $w.t tag configure color2 -foreground red $w.t tag configure raised -background #eed5b7 -relief raised \ -borderwidth 1 $w.t tag configure sunken -background #eed5b7 -relief sunken \ -borderwidth 1 } else { $w.t tag configure color1 -background black -foreground white $w.t tag configure color2 -background black -foreground white $w.t tag configure raised -background white -relief raised \ -borderwidth 1 $w.t tag configure sunken -background white -relief sunken \ -borderwidth 1 } $w.t tag configure bgstipple -background black -borderwidth 0 \ -bgstipple gray25 $w.t tag configure fgstipple -fgstipple gray50 $w.t tag configure underline -underline on $w.t insert 0.0 {\ Text widgets like this one allow you to display information in a variety of styles. Display styles are controlled using a mechanism called } insertWithTags $w.t tags bold insertWithTags $w.t {. Tags are just textual names that you can apply to one or more ranges of characters within a text widget. You can configure tags with various display styles. If you do this, then the tagged characters will be displayed with the styles you chose. The available display styles are: } insertWithTags $w.t { 1. Font.} big insertWithTags $w.t { You can choose any X font, } insertWithTags $w.t large verybig insertWithTags $w.t { or } insertWithTags $w.t {small. } insertWithTags $w.t { 2. Color.} big insertWithTags $w.t { You can change either the } insertWithTags $w.t background color1 insertWithTags $w.t { or } insertWithTags $w.t foreground color2 insertWithTags $w.t { color, or } insertWithTags $w.t both color1 color2 insertWithTags $w.t {. } insertWithTags $w.t { 3. Stippling.} big insertWithTags $w.t { You can cause either the } insertWithTags $w.t background bgstipple insertWithTags $w.t { or } insertWithTags $w.t foreground fgstipple insertWithTags $w.t { information to be drawn with a stipple fill instead of a solid fill. } insertWithTags $w.t { 4. Underlining.} big insertWithTags $w.t { You can } insertWithTags $w.t underline underline insertWithTags $w.t { ranges of text. } insertWithTags $w.t { 5. 3-D effects.} big insertWithTags $w.t { You can arrange for the background to be drawn with a border that makes characters appear either } insertWithTags $w.t raised raised insertWithTags $w.t { or } insertWithTags $w.t sunken sunken insertWithTags $w.t {. } insertWithTags $w.t { 6. Yet to come.} big insertWithTags $w.t { More display effects will be coming soon, such as the ability to change line justification and perhaps line spacing.} $w.t mark set insert 0.0 bind $w "focus $w.t" } # The procedure below inserts text into a given text widget and # applies one or more tags to that text. The arguments are: # # w Window in which to insert # text Text to insert (it's inserted at the "insert" mark) # args One or more tags to apply to text. If this is empty # then all tags are removed from the text. proc insertWithTags {w text args} { set start [$w index insert] $w insert insert $text foreach tag [$w tag names $start] { $w tag remove $tag $start insert } foreach i $args { $w tag add $i $start insert } } micropolis-activity/src/tk/library/demos/ixset0000775000076400007640000001750210724145723022102 0ustar simcitysimcity#!/usr/local/bin/wish -f # # A nice interface to "xset" to change X server settings # # History : # 91/11/23 : pda@masi.ibp.fr, jt@ratp.fr : design # 92/08/01 : pda@masi.ibp.fr : cleaning # # # Button actions # proc quit {} { destroy . } proc ok {} { writesettings quit } proc cancel {} { readsettings dispsettings } # apply is just "writesettings" # # Read current settings # proc readsettings {} { global kbdrep ; set kbdrep "on" global kbdcli ; set kbdcli 0 global bellvol ; set bellvol 100 global bellpit ; set bellpit 440 global belldur ; set belldur 100 global mouseacc ; set mouseacc "3/1" global mousethr ; set mousethr 4 global screenbla ; set screenbla "blank" global screentim ; set screentim 600 global screencyc ; set screencyc 600 set xfd [open "|xset q" r] while {[gets $xfd line] > -1} { set kw [lindex $line 0] case $kw in { {auto} { set rpt [lindex $line 1] if {[expr "{$rpt} == {repeat:}"]} then { set kbdrep [lindex $line 2] set kbdcli [lindex $line 6] } } {bell} { set bellvol [lindex $line 2] set bellpit [lindex $line 5] set belldur [lindex $line 8] } {acceleration:} { set mouseacc [lindex $line 1] set mousethr [lindex $line 3] } {prefer} { set bla [lindex $line 2] set screenbla [expr "{$bla} == {yes} ? {blank} : {noblank}"] } {timeout:} { set screentim [lindex $line 1] set screencyc [lindex $line 3] } } } close $xfd # puts stdout [format "Key REPEAT = %s\n" $kbdrep] # puts stdout [format "Key CLICK = %s\n" $kbdcli] # puts stdout [format "Bell VOLUME = %s\n" $bellvol] # puts stdout [format "Bell PITCH = %s\n" $bellpit] # puts stdout [format "Bell DURATION = %s\n" $belldur] # puts stdout [format "Mouse ACCELERATION = %s\n" $mouseacc] # puts stdout [format "Mouse THRESHOLD = %s\n" $mousethr] # puts stdout [format "Screen BLANCK = %s\n" $screenbla] # puts stdout [format "Screen TIMEOUT = %s\n" $screentim] # puts stdout [format "Screen CYCLE = %s\n" $screencyc] } # # Write settings into the X server # proc writesettings {} { global kbdrep kbdcli bellvol bellpit belldur global mouseacc mousethr screenbla screentim screencyc set bellvol [.bell.vol get] set bellpit [.bell.val.pit.entry get] set belldur [.bell.val.dur.entry get] if {[expr "{$kbdrep} == {on}"]} then { set kbdcli [.kbd.val.cli get] } else { set kbdcli "off" } set mouseacc [.mouse.hor.acc.entry get] set mousethr [.mouse.hor.thr.entry get] set screentim [.screen.val.le.tim.entry get] set screencyc [.screen.val.le.cyc.entry get] exec xset \ b $bellvol $bellpit $belldur \ c $kbdcli \ r $kbdrep \ m $mouseacc $mousethr \ s $screentim $screencyc \ s $screenbla } # # Sends all settings to the window # proc dispsettings {} { global kbdrep kbdcli bellvol bellpit belldur global mouseacc mousethr screenbla screentim screencyc .bell.vol set $bellvol .bell.val.pit.entry delete 0 end .bell.val.pit.entry insert 0 $bellpit .bell.val.dur.entry delete 0 end .bell.val.dur.entry insert 0 $belldur .kbd.val.onoff [expr "{$kbdrep} == {on} ? {select} : {deselect}"] .kbd.val.cli set $kbdcli .mouse.hor.acc.entry delete 0 end .mouse.hor.acc.entry insert 0 $mouseacc .mouse.hor.thr.entry delete 0 end .mouse.hor.thr.entry insert 0 $mousethr .screen.val.rb.blank [expr "{$screenbla}=={blank} ? {select} : {deselect}"] .screen.val.rb.pat [expr "{$screenbla}!={blank} ? {select} : {deselect}"] .screen.val.le.tim.entry delete 0 end .screen.val.le.tim.entry insert 0 $screentim .screen.val.le.cyc.entry delete 0 end .screen.val.le.cyc.entry insert 0 $screencyc } # # Create all windows, and pack them # proc labelentry {path text length} { frame $path label $path.label -text $text entry $path.entry -width $length -relief sunken pack append $path $path.label {left expand} $path.entry {right expand} } proc createwindows {} { # # Buttons # frame .buttons button .buttons.ok -command "ok" -text "Ok" button .buttons.apply -command "writesettings" -text "Apply" button .buttons.cancel -command "cancel" -text "Cancel" button .buttons.quit -command "quit" -text "Quit" pack append .buttons \ .buttons.ok {left expand pady 10} \ .buttons.apply {left expand pady 10} \ .buttons.cancel {left expand pady 10} \ .buttons.quit {left expand pady 10} # # Bell settings # frame .bell -relief raised -borderwidth 2 label .bell.label -text "Bell Settings" scale .bell.vol \ -from 0 -to 100 -length 200 -tickinterval 20 \ -label "Volume (%)" -orient horizontal \ -bg Bisque1 -activeforeground Gray frame .bell.val labelentry .bell.val.pit "Pitch (Hz)" 6 labelentry .bell.val.dur "Duration (ms)" 6 pack append .bell.val \ .bell.val.pit {left padx 10} \ .bell.val.dur {right padx 10} pack append .bell \ .bell.label {top expand} \ .bell.vol {top expand} \ .bell.val {top expand} # # Keyboard settings # frame .kbd -relief raised -borderwidth 2 label .kbd.label -text "Keyboard Repeat Settings" frame .kbd.val checkbutton .kbd.val.onoff \ -text "On" \ -onvalue "on" -offvalue "off" -variable kbdrep \ -relief flat \ -activebackground Bisque1 scale .kbd.val.cli \ -from 0 -to 100 -length 200 -tickinterval 20 \ -label "Click Volume (%)" -orient horizontal \ -bg Bisque1 -activeforeground Gray pack append .kbd.val \ .kbd.val.onoff {left expand fill} \ .kbd.val.cli {left expand} pack append .kbd \ .kbd.label {top expand} \ .kbd.val {top expand pady 4 fillx} # # Mouse settings # frame .mouse -relief raised -borderwidth 2 label .mouse.label -text "Mouse Settings" frame .mouse.hor labelentry .mouse.hor.acc "Acceleration" 3 labelentry .mouse.hor.thr "Threshold (pixels)" 3 pack append .mouse.hor \ .mouse.hor.acc {left} \ .mouse.hor.thr {right} pack append .mouse \ .mouse.label {top} \ .mouse.hor {top expand} # # Screen Saver settings # frame .screen -relief raised -borderwidth 2 label .screen.label -text "Screen-saver Settings" frame .screen.val frame .screen.val.rb radiobutton .screen.val.rb.blank \ -variable screenblank -text "Blank" -relief flat \ -value "blank" -variable screenbla \ -activebackground Bisque1 radiobutton .screen.val.rb.pat \ -variable screenblank -text "Pattern" -relief flat \ -value "noblank" -variable screenbla \ -activebackground Bisque1 pack append .screen.val.rb \ .screen.val.rb.blank {top pady 4 frame w} \ .screen.val.rb.pat {top pady 4 frame w} frame .screen.val.le labelentry .screen.val.le.tim "Timeout (s)" 5 labelentry .screen.val.le.cyc "Cycle (s)" 5 pack append .screen.val.le \ .screen.val.le.tim {top pady 4 frame e} \ .screen.val.le.cyc {top pady 4 frame e} pack append .screen.val \ .screen.val.rb {left} \ .screen.val.le {left} pack append .screen \ .screen.label {top} \ .screen.val {top expand} # # Main window # pack append . \ .buttons {top fill} \ .bell {top fill pady 10 expand} \ .kbd {top fill pady 10 expand} \ .mouse {top fill pady 10 expand} \ .screen {top fill pady 10 expand} # # Let the user resize our window # wm minsize . 10 10 } ############################################################################## # Main program # # Listen what "xset" tells us... # readsettings # # Create all windows # createwindows # # Write xset parameters # dispsettings # # Now, wait for user actions... # micropolis-activity/src/tk/library/demos/mkPuzzle.tcl0000664000076400007640000000402410724145723023340 0ustar simcitysimcity# mkPuzzle w # # Create a top-level window containing a 15-puzzle game. # # Arguments: # w - Name to use for new top-level window. proc mkPuzzle {{w .p1}} { catch {destroy $w} toplevel $w dpos $w wm title $w "15-Puzzle Demonstration" wm iconname $w "15-Puzzle" message $w.msg -font -Adobe-times-medium-r-normal--*-180* -aspect 300 \ -text "A 15-puzzle appears below as a collection of buttons. Click on any of the pieces next to the space, and that piece will slide over the space. Continue this until the pieces are arranged in numerical order from upper-left to lower-right. Click the \"OK\" button when you've finished playing." set order {3 1 6 2 5 7 15 13 4 11 8 9 14 10 12} global xpos ypos frame $w.frame -geometry 120x120 -borderwidth 2 -relief sunken \ -bg Bisque3 for {set i 0} {$i < 15} {set i [expr $i+1]} { set num [lindex $order $i] set xpos($num) [expr ($i%4)*.25] set ypos($num) [expr ($i/4)*.25] button $w.frame.$num -relief raised -text $num \ -command "puzzle.switch $w $num" place $w.frame.$num -relx $xpos($num) -rely $ypos($num) \ -relwidth .25 -relheight .25 } set xpos(space) .75 set ypos(space) .75 button $w.ok -text OK -command "destroy $w" pack append $w $w.msg {top fill} $w.frame {top expand padx 10 pady 10} \ $w.ok {bottom fill} } # Procedure invoked by buttons in the puzzle to resize the puzzle entries: proc puzzle.switch {w num} { global xpos ypos if {(($ypos($num) >= ($ypos(space) - .01)) && ($ypos($num) <= ($ypos(space) + .01)) && ($xpos($num) >= ($xpos(space) - .26)) && ($xpos($num) <= ($xpos(space) + .26))) || (($xpos($num) >= ($xpos(space) - .01)) && ($xpos($num) <= ($xpos(space) + .01)) && ($ypos($num) >= ($ypos(space) - .26)) && ($ypos($num) <= ($ypos(space) + .26)))} { set tmp $xpos(space) set xpos(space) $xpos($num) set xpos($num) $tmp set tmp $ypos(space) set ypos(space) $ypos($num) set ypos($num) $tmp place $w.frame.$num -relx $xpos($num) -rely $ypos($num) } } micropolis-activity/src/tk/library/demos/bitmaps/0000775000076400007640000000000010724145723022452 5ustar simcitysimcitymicropolis-activity/src/tk/library/demos/bitmaps/pattern0000664000076400007640000000042010724145723024046 0ustar simcitysimcity#define foo_width 16 #define foo_height 16 static char foo_bits[] = { 0x60, 0x06, 0x90, 0x09, 0x90, 0x09, 0xb0, 0x0d, 0x4e, 0x72, 0x49, 0x92, 0x71, 0x8e, 0x8e, 0x71, 0x8e, 0x71, 0x71, 0x8e, 0x49, 0x92, 0x4e, 0x72, 0xb0, 0x0d, 0x90, 0x09, 0x90, 0x09, 0x60, 0x06}; micropolis-activity/src/tk/library/demos/bitmaps/letters0000664000076400007640000000353310724145723024063 0ustar simcitysimcity#define letters_width 48 #define letters_height 48 static char letters_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2e, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x21, 0x20, 0x00, 0x00, 0x00, 0x00, 0x21, 0xa0, 0x03, 0x00, 0x00, 0x70, 0x21, 0x20, 0x00, 0x00, 0x00, 0x50, 0x21, 0xa0, 0x1f, 0x00, 0x00, 0x50, 0x21, 0x20, 0x00, 0x00, 0x00, 0x70, 0x21, 0xfe, 0xff, 0xff, 0xff, 0x0f, 0x21, 0x02, 0x00, 0x00, 0x00, 0x08, 0x21, 0xfa, 0x01, 0x00, 0x80, 0x0b, 0x21, 0x02, 0x00, 0x00, 0x80, 0x0a, 0x21, 0xba, 0x01, 0x00, 0x80, 0x0a, 0x21, 0x02, 0x00, 0x00, 0x80, 0x0b, 0x21, 0x3a, 0x00, 0x00, 0x00, 0x08, 0x21, 0x02, 0x00, 0x00, 0x00, 0x08, 0x21, 0x02, 0xc0, 0xfb, 0x03, 0x08, 0x21, 0x02, 0x00, 0x00, 0x00, 0x08, 0x3f, 0x02, 0xc0, 0xbd, 0x0f, 0x08, 0x01, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x02, 0xc0, 0x7f, 0x7b, 0x08, 0x01, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x02, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; micropolis-activity/src/tk/library/demos/bitmaps/grey.50000664000076400007640000000042310724145723023505 0ustar simcitysimcity#define grey_width 16 #define grey_height 16 static char grey_bits[] = { 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa}; micropolis-activity/src/tk/library/demos/bitmaps/noletters0000664000076400007640000000354110724145723024417 0ustar simcitysimcity#define noletters_width 48 #define noletters_height 48 static char noletters_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, 0x00, 0xf0, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x7f, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x1f, 0x00, 0x00, 0xf0, 0x01, 0x80, 0x07, 0x00, 0x00, 0xc0, 0x03, 0xc0, 0x03, 0x00, 0x00, 0xe0, 0x07, 0xe0, 0x01, 0x00, 0x00, 0xf0, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x78, 0x0e, 0xf0, 0x00, 0x00, 0x00, 0x3c, 0x1e, 0x70, 0x00, 0x00, 0x00, 0x1e, 0x1c, 0x38, 0x00, 0x00, 0x00, 0x0f, 0x38, 0x38, 0x00, 0x00, 0x80, 0x07, 0x38, 0x3c, 0xfc, 0xff, 0xff, 0x7f, 0x78, 0x1c, 0x04, 0x00, 0xe0, 0x41, 0x70, 0x1c, 0x04, 0x00, 0xf0, 0x40, 0x70, 0x1c, 0x74, 0x00, 0x78, 0x4e, 0x70, 0x0e, 0x04, 0x00, 0x3c, 0x4a, 0xe0, 0x0e, 0x74, 0x03, 0x1e, 0x4a, 0xe0, 0x0e, 0x04, 0x00, 0x0f, 0x4e, 0xe0, 0x0e, 0x04, 0x80, 0x07, 0x40, 0xe0, 0x0e, 0x04, 0xf8, 0x0f, 0x40, 0xe0, 0x0e, 0x04, 0xe0, 0x01, 0x40, 0xe0, 0x0e, 0x04, 0xf8, 0x00, 0x40, 0xe0, 0x0e, 0x04, 0x78, 0x00, 0x40, 0xe0, 0x0e, 0x04, 0xfc, 0xf3, 0x40, 0xe0, 0x1c, 0x04, 0x1e, 0x00, 0x40, 0x70, 0x1c, 0x04, 0x0f, 0x00, 0x40, 0x70, 0x1c, 0x84, 0x07, 0x00, 0x40, 0x70, 0x3c, 0xfc, 0xff, 0xff, 0x7f, 0x78, 0x38, 0xe0, 0x01, 0x00, 0x00, 0x38, 0x38, 0xf0, 0x00, 0x00, 0x00, 0x38, 0x70, 0x78, 0x00, 0x00, 0x00, 0x1c, 0xf0, 0x3c, 0x00, 0x00, 0x00, 0x1e, 0xe0, 0x1e, 0x00, 0x00, 0x00, 0x0e, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x07, 0x00, 0x00, 0x80, 0x07, 0x80, 0x07, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x3e, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x7f, 0x00, 0x00, 0xf0, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00}; micropolis-activity/src/tk/library/demos/bitmaps/flagup0000664000076400007640000000353010724145723023654 0ustar simcitysimcity#define flagup_width 48 #define flagup_height 48 static char flagup_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xef, 0x6a, 0x00, 0x00, 0x00, 0xc0, 0x7b, 0x75, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x6a, 0x00, 0x00, 0x00, 0x30, 0x60, 0x75, 0x00, 0x00, 0x00, 0x18, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x0c, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x06, 0xe0, 0x04, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x04, 0x00, 0x00, 0x80, 0x01, 0xe0, 0x06, 0x00, 0x00, 0xc0, 0x1f, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x7f, 0xe0, 0x07, 0x00, 0x00, 0x70, 0xe0, 0xe0, 0x05, 0x00, 0x00, 0x38, 0x80, 0xe1, 0x04, 0x00, 0x00, 0x18, 0x80, 0xf1, 0x04, 0x00, 0x00, 0x0c, 0x00, 0xfb, 0x04, 0x00, 0x00, 0x0c, 0x00, 0xff, 0x04, 0x00, 0x00, 0x86, 0x1f, 0xee, 0x04, 0x00, 0x00, 0x06, 0x06, 0xe6, 0x04, 0x00, 0x00, 0x06, 0x00, 0xe6, 0x04, 0x00, 0x00, 0x06, 0x00, 0xe6, 0x04, 0x00, 0x00, 0x06, 0x00, 0x66, 0x04, 0x00, 0x7f, 0x56, 0x52, 0x06, 0xe4, 0xff, 0x00, 0x76, 0x55, 0x06, 0x04, 0x00, 0x00, 0x56, 0x57, 0x06, 0x04, 0x00, 0x00, 0x56, 0x55, 0x06, 0x06, 0x00, 0x00, 0x56, 0xd5, 0x06, 0x03, 0x00, 0x00, 0x06, 0x00, 0x86, 0x01, 0x00, 0x54, 0x06, 0x00, 0xc6, 0x54, 0x55, 0xaa, 0x06, 0x00, 0x66, 0xaa, 0x2a, 0x54, 0x06, 0x00, 0x36, 0x55, 0x55, 0xaa, 0x06, 0x00, 0xbe, 0xaa, 0x2a, 0x54, 0xfe, 0xff, 0x6f, 0x55, 0x55, 0xaa, 0xfc, 0xff, 0xa7, 0xaa, 0x2a, 0x54, 0x01, 0x88, 0x60, 0x55, 0x55, 0xaa, 0xaa, 0x8a, 0xa0, 0xaa, 0x2a, 0x54, 0x55, 0x8d, 0x60, 0x55, 0x55, 0xaa, 0xaa, 0x8a, 0xa0, 0xaa, 0x2a, 0x54, 0x55, 0x8d, 0x60, 0x55, 0x55, 0xaa, 0xaa, 0x8a, 0xa0, 0xaa, 0x2a, 0x54, 0x55, 0x8d, 0x50, 0x55, 0x55, 0xaa, 0xaa, 0x8a, 0xa8, 0xaa, 0x2a, 0x54, 0x55, 0x95, 0x54, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x2a, 0x54, 0x55, 0x55, 0x55, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; micropolis-activity/src/tk/library/demos/bitmaps/grey.250000664000076400007640000000042310724145723023567 0ustar simcitysimcity#define grey_width 16 #define grey_height 16 static char grey_bits[] = { 0x11, 0x11, 0x44, 0x44, 0x11, 0x11, 0x44, 0x44, 0x11, 0x11, 0x44, 0x44, 0x11, 0x11, 0x44, 0x44, 0x11, 0x11, 0x44, 0x44, 0x11, 0x11, 0x44, 0x44, 0x11, 0x11, 0x44, 0x44, 0x11, 0x11, 0x44, 0x44}; micropolis-activity/src/tk/library/demos/bitmaps/flagdown0000664000076400007640000000353610724145723024205 0ustar simcitysimcity#define flagdown_width 48 #define flagdown_height 48 static char flagdown_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x04, 0x00, 0x00, 0x03, 0x00, 0x06, 0x06, 0x00, 0x80, 0x01, 0x00, 0x06, 0x07, 0x00, 0xc0, 0x1f, 0x00, 0x87, 0x07, 0x00, 0xe0, 0x7f, 0x80, 0xc7, 0x07, 0x00, 0x70, 0xe0, 0xc0, 0xe5, 0x07, 0x00, 0x38, 0x80, 0xe1, 0x74, 0x07, 0x00, 0x18, 0x80, 0x71, 0x3c, 0x07, 0x00, 0x0c, 0x00, 0x3b, 0x1e, 0x03, 0x00, 0x0c, 0x00, 0x1f, 0x0f, 0x00, 0x00, 0x86, 0x1f, 0x8e, 0x07, 0x00, 0x00, 0x06, 0x06, 0xc6, 0x05, 0x00, 0x00, 0x06, 0x00, 0xc6, 0x05, 0x00, 0x00, 0x06, 0x00, 0xc6, 0x04, 0x00, 0x00, 0x06, 0x00, 0x06, 0x04, 0x00, 0x7f, 0x06, 0x00, 0x06, 0xe4, 0xff, 0x00, 0x06, 0x00, 0x06, 0x04, 0x00, 0x00, 0x06, 0x00, 0x06, 0x04, 0x00, 0x00, 0x06, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x00, 0x06, 0x03, 0x00, 0x00, 0x06, 0x00, 0x86, 0x01, 0x00, 0x00, 0x06, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x00, 0x06, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x3e, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x2f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x27, 0x00, 0x00, 0x00, 0x00, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, 0x88, 0x20, 0x00, 0x00, 0xf7, 0xbf, 0x8e, 0xfc, 0xdf, 0xf8, 0x9d, 0xeb, 0x9b, 0x76, 0xd2, 0x7a, 0x46, 0x30, 0xe2, 0x0f, 0xe1, 0x47, 0x55, 0x84, 0x48, 0x11, 0x84, 0x19}; micropolis-activity/src/tk/library/demos/bitmaps/face0000664000076400007640000003060410724145723023276 0ustar simcitysimcity#define face_width 108 #define face_height 144 static char face_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x20, 0x80, 0x24, 0x05, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x88, 0x24, 0x20, 0x80, 0x24, 0x00, 0x00, 0x00, 0x10, 0x80, 0x04, 0x00, 0x01, 0x00, 0x01, 0x40, 0x0a, 0x09, 0x00, 0x92, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x12, 0x00, 0x00, 0x10, 0x40, 0x00, 0x00, 0x84, 0x24, 0x40, 0x22, 0xa8, 0x02, 0x14, 0x84, 0x92, 0x40, 0x42, 0x12, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x52, 0x11, 0x00, 0x12, 0x00, 0x40, 0x02, 0x00, 0x20, 0x00, 0x08, 0x00, 0xaa, 0x02, 0x54, 0x85, 0x24, 0x00, 0x10, 0x12, 0x00, 0x00, 0x81, 0x44, 0x00, 0x90, 0x5a, 0x00, 0xea, 0x1b, 0x00, 0x80, 0x40, 0x40, 0x02, 0x00, 0x08, 0x00, 0x20, 0xa2, 0x05, 0x8a, 0xb4, 0x6e, 0x45, 0x12, 0x04, 0x08, 0x00, 0x00, 0x00, 0x10, 0x02, 0xa8, 0x92, 0x00, 0xda, 0x5f, 0x10, 0x00, 0x10, 0xa1, 0x04, 0x20, 0x41, 0x02, 0x00, 0x5a, 0x25, 0xa0, 0xff, 0xfb, 0x05, 0x41, 0x02, 0x04, 0x00, 0x00, 0x08, 0x40, 0x80, 0xec, 0x9b, 0xec, 0xfe, 0x7f, 0x01, 0x04, 0x20, 0x90, 0x02, 0x04, 0x00, 0x08, 0x20, 0xfb, 0x2e, 0xf5, 0xff, 0xff, 0x57, 0x00, 0x04, 0x02, 0x00, 0x00, 0x20, 0x01, 0xc1, 0x6e, 0xab, 0xfa, 0xff, 0xff, 0x05, 0x90, 0x20, 0x48, 0x02, 0x00, 0x04, 0x20, 0xa8, 0xdf, 0xb5, 0xfe, 0xff, 0xff, 0x0b, 0x01, 0x00, 0x01, 0x00, 0x80, 0x80, 0x04, 0xe0, 0xbb, 0xef, 0xff, 0xff, 0x7f, 0x01, 0x00, 0x04, 0x48, 0x02, 0x00, 0x20, 0x80, 0xf4, 0x6f, 0xfb, 0xff, 0xff, 0xff, 0x20, 0x90, 0x40, 0x02, 0x00, 0x00, 0x04, 0x08, 0xb8, 0xf6, 0xff, 0xff, 0xdf, 0xbe, 0x12, 0x45, 0x10, 0x90, 0x04, 0x90, 0x00, 0x22, 0xfa, 0xff, 0xff, 0xff, 0xbb, 0xd7, 0xe9, 0x3a, 0x02, 0x02, 0x00, 0x04, 0x90, 0x80, 0xfe, 0xdf, 0xf6, 0xb7, 0xef, 0xbe, 0x56, 0x57, 0x40, 0x48, 0x09, 0x00, 0x04, 0x00, 0xfa, 0xf5, 0xdf, 0xed, 0x5a, 0xd5, 0xea, 0xbd, 0x09, 0x00, 0x00, 0x40, 0x00, 0x92, 0xfe, 0xbf, 0x7d, 0xb7, 0x6a, 0x55, 0xbf, 0xf7, 0x02, 0x11, 0x01, 0x00, 0x91, 0x00, 0xff, 0xff, 0xaf, 0x55, 0x55, 0x5b, 0xeb, 0xef, 0x22, 0x04, 0x04, 0x04, 0x00, 0xa4, 0xff, 0xf7, 0xad, 0xaa, 0xaa, 0xaa, 0xbe, 0xfe, 0x03, 0x20, 0x00, 0x10, 0x44, 0x80, 0xff, 0x7f, 0x55, 0x12, 0x91, 0x2a, 0xeb, 0xbf, 0x0b, 0x82, 0x02, 0x00, 0x00, 0xd1, 0x7f, 0xdf, 0xa2, 0xa4, 0x54, 0x55, 0xfd, 0xfd, 0x47, 0x08, 0x08, 0x00, 0x21, 0xe4, 0xff, 0x37, 0x11, 0x09, 0xa5, 0xaa, 0xb6, 0xff, 0x0d, 0x80, 0x00, 0x00, 0x04, 0xd0, 0xff, 0x4f, 0x44, 0x20, 0x48, 0x55, 0xfb, 0xff, 0x27, 0x11, 0x02, 0x40, 0x40, 0xe2, 0xfb, 0x15, 0x11, 0x4a, 0x55, 0x4a, 0x7d, 0xf7, 0x0f, 0x00, 0x00, 0x04, 0x08, 0xf8, 0xdf, 0x52, 0x44, 0x01, 0x52, 0xb5, 0xfa, 0xff, 0x0f, 0x49, 0x02, 0x00, 0x02, 0xe9, 0xf6, 0x0a, 0x11, 0xa4, 0x88, 0x4a, 0x6d, 0xff, 0x5f, 0x00, 0x00, 0x10, 0x20, 0xf0, 0x2f, 0x21, 0x44, 0x10, 0x52, 0xb5, 0xfa, 0xff, 0x0f, 0x44, 0x04, 0x80, 0x08, 0xf8, 0xab, 0x8a, 0x00, 0x81, 0xa4, 0xd4, 0xd6, 0xfe, 0x2f, 0x00, 0x00, 0x04, 0x40, 0xb5, 0x2d, 0x21, 0x08, 0x04, 0x90, 0xaa, 0xfa, 0xff, 0x1f, 0x11, 0x01, 0x00, 0x04, 0xf0, 0x57, 0x0a, 0x22, 0x40, 0x4a, 0xda, 0x5e, 0xfb, 0x1f, 0x40, 0x00, 0x40, 0x20, 0xba, 0x95, 0x90, 0x00, 0x01, 0xa0, 0xaa, 0xea, 0xff, 0x5f, 0x02, 0x02, 0x00, 0x01, 0xe8, 0x57, 0x05, 0x00, 0x00, 0x12, 0xd5, 0xfe, 0xfd, 0x1f, 0x48, 0x00, 0x04, 0x48, 0x7a, 0x95, 0x08, 0x02, 0x10, 0x40, 0xaa, 0x55, 0xf7, 0x1f, 0x00, 0x09, 0x20, 0x00, 0xf8, 0x57, 0x22, 0x10, 0x00, 0x28, 0xa9, 0xfa, 0xff, 0x5f, 0x02, 0x00, 0x00, 0x49, 0xdd, 0x29, 0x01, 0x00, 0x80, 0x80, 0xaa, 0xd7, 0xff, 0x0f, 0x10, 0x00, 0x08, 0x00, 0xf8, 0x96, 0x08, 0x00, 0x00, 0x20, 0x54, 0xfa, 0xee, 0x3f, 0x81, 0x04, 0x40, 0x24, 0xfe, 0x55, 0x82, 0x00, 0x00, 0x82, 0xd2, 0xad, 0xff, 0x0f, 0x08, 0x00, 0x04, 0x80, 0x6c, 0x97, 0x00, 0x00, 0x02, 0x20, 0xa9, 0xf6, 0xdf, 0x5f, 0x00, 0x02, 0x20, 0x09, 0xfa, 0x49, 0x12, 0x00, 0x20, 0x84, 0x54, 0xdb, 0xfe, 0x1f, 0x91, 0x00, 0x00, 0x00, 0xf8, 0x2b, 0x00, 0x20, 0x00, 0x40, 0xa4, 0xf6, 0xbb, 0x1f, 0x04, 0x00, 0x44, 0x92, 0x7e, 0x95, 0x02, 0x00, 0x00, 0x89, 0xaa, 0xdd, 0xff, 0x1f, 0x20, 0x09, 0x10, 0x00, 0xf4, 0x57, 0x20, 0x01, 0x08, 0x20, 0xa9, 0x76, 0xff, 0x5f, 0x02, 0x00, 0x00, 0x21, 0xfc, 0x4a, 0x05, 0x00, 0x01, 0x80, 0x54, 0xdb, 0xff, 0x1e, 0x08, 0x02, 0x04, 0x08, 0xf9, 0x2b, 0x00, 0x00, 0x40, 0x28, 0xd2, 0xf6, 0xff, 0xbf, 0x80, 0x00, 0x90, 0x00, 0xbc, 0x92, 0x08, 0x10, 0x00, 0x82, 0x54, 0xdb, 0xff, 0x1f, 0x20, 0x00, 0x00, 0x44, 0xf9, 0x55, 0x02, 0x01, 0x00, 0x20, 0xaa, 0xbd, 0xfd, 0x3f, 0x08, 0x04, 0x04, 0x10, 0xf4, 0x2a, 0x01, 0x00, 0x22, 0x80, 0xd4, 0xf6, 0xff, 0x5f, 0x82, 0x00, 0x40, 0x02, 0xf8, 0x55, 0x20, 0x00, 0x00, 0x50, 0x6a, 0xdf, 0xfe, 0x3f, 0x00, 0x00, 0x00, 0x48, 0xe9, 0x4a, 0x05, 0x08, 0x00, 0xa5, 0xd5, 0xf5, 0xff, 0x3f, 0x10, 0x01, 0x10, 0x01, 0xb0, 0xab, 0x92, 0x02, 0x40, 0xf8, 0xbf, 0xde, 0xfe, 0x5f, 0x02, 0x04, 0x04, 0x48, 0xfa, 0xd4, 0x6f, 0x20, 0x84, 0xef, 0xff, 0xfb, 0xff, 0x1f, 0x20, 0x00, 0x00, 0x00, 0xe0, 0xed, 0xbf, 0x0b, 0xa1, 0x7e, 0xff, 0xbf, 0xfd, 0x5f, 0x04, 0x01, 0x20, 0x49, 0xd2, 0xfb, 0xfe, 0x55, 0xd4, 0xff, 0xff, 0xf6, 0xff, 0x07, 0x00, 0x04, 0x00, 0x00, 0xc0, 0xaa, 0xfb, 0x2b, 0xa2, 0xfe, 0xff, 0xdf, 0xee, 0x1f, 0x91, 0x00, 0x82, 0xa4, 0xa4, 0xf5, 0xff, 0x57, 0xd5, 0xff, 0xbf, 0xfd, 0xff, 0x4d, 0x00, 0x00, 0x20, 0x00, 0x88, 0x5b, 0xff, 0x2f, 0x69, 0xff, 0xff, 0xdb, 0xfe, 0x1f, 0x24, 0x02, 0x00, 0x49, 0xa2, 0xd6, 0xff, 0x5f, 0xea, 0xff, 0x7f, 0x7f, 0x7f, 0x0d, 0x00, 0x00, 0x10, 0x00, 0x40, 0xab, 0xf7, 0xbb, 0xf0, 0xdf, 0xff, 0xd5, 0xff, 0xbf, 0x82, 0x04, 0x42, 0x24, 0x91, 0xd5, 0xaa, 0xae, 0xd4, 0xaa, 0x52, 0x7b, 0xff, 0x15, 0x08, 0x00, 0x00, 0x01, 0x04, 0x55, 0xd5, 0x55, 0x70, 0x5b, 0x75, 0xdd, 0xdf, 0x1f, 0x40, 0x00, 0x08, 0x48, 0xa0, 0x4a, 0xa9, 0x56, 0xea, 0x56, 0xad, 0x6a, 0x7d, 0x9b, 0x04, 0x01, 0x00, 0x02, 0x42, 0x2a, 0xd5, 0xaa, 0xa8, 0xaa, 0xaa, 0xfa, 0xdf, 0x2f, 0x10, 0x04, 0x22, 0x48, 0x08, 0x45, 0x2a, 0x15, 0x68, 0x55, 0x55, 0xd7, 0x76, 0x1b, 0x00, 0x00, 0x00, 0x01, 0x40, 0x2a, 0x80, 0xa0, 0xb2, 0x09, 0x48, 0xb9, 0xdf, 0x17, 0x22, 0x01, 0x00, 0x24, 0x45, 0x8a, 0x24, 0x4a, 0x54, 0x51, 0x91, 0xf6, 0x6e, 0x4b, 0x00, 0x04, 0x90, 0x00, 0x80, 0x52, 0x00, 0x20, 0x69, 0x05, 0xa4, 0xaa, 0xff, 0x1e, 0x48, 0x00, 0x02, 0x92, 0x08, 0x05, 0x81, 0x94, 0xd4, 0x92, 0x40, 0xfd, 0xb6, 0x8b, 0x00, 0x01, 0x40, 0x00, 0x82, 0x54, 0x00, 0x48, 0x68, 0x05, 0x90, 0xa4, 0xef, 0x06, 0x24, 0x00, 0x08, 0x12, 0x10, 0x05, 0x00, 0x10, 0xb5, 0x01, 0x42, 0xfb, 0xbf, 0x43, 0x00, 0x09, 0x00, 0x40, 0x81, 0xa8, 0x08, 0x4a, 0xaa, 0x96, 0x90, 0xac, 0x6d, 0x15, 0x22, 0x00, 0x20, 0x09, 0x04, 0x15, 0x80, 0x28, 0xdc, 0x01, 0x24, 0xfb, 0xbf, 0x01, 0x80, 0x04, 0x09, 0x00, 0x40, 0x48, 0x02, 0x45, 0xb2, 0x2e, 0x41, 0x6d, 0xef, 0x05, 0x11, 0x00, 0x40, 0x52, 0x02, 0x15, 0x29, 0x2a, 0xac, 0x42, 0x54, 0xfb, 0x3b, 0x51, 0x84, 0x00, 0x08, 0x00, 0x20, 0x54, 0x80, 0x05, 0xb5, 0x3d, 0xa2, 0xb6, 0xdf, 0x00, 0x20, 0x04, 0x20, 0x49, 0x89, 0xa8, 0x6a, 0x29, 0xac, 0xd6, 0x54, 0xff, 0x3f, 0x84, 0x00, 0x01, 0x04, 0x10, 0x00, 0x94, 0xa8, 0x56, 0xda, 0x5f, 0xab, 0xd5, 0x1e, 0x10, 0x48, 0x00, 0x90, 0x82, 0x48, 0xa8, 0xb2, 0xac, 0xfd, 0x55, 0xd5, 0xfe, 0x9f, 0x80, 0x00, 0x0a, 0x02, 0x08, 0x02, 0x55, 0x5a, 0x75, 0xff, 0xaf, 0xb6, 0xf7, 0x2d, 0x12, 0x92, 0x00, 0x10, 0x20, 0x10, 0xa8, 0x54, 0xd5, 0xbf, 0x5d, 0xad, 0xdd, 0x0f, 0x00, 0x00, 0x04, 0x40, 0x09, 0x84, 0xa8, 0xaa, 0x5a, 0xed, 0xeb, 0x6a, 0xff, 0x9f, 0xa4, 0x24, 0x01, 0x02, 0xa0, 0x20, 0x50, 0x55, 0xd5, 0xbe, 0xae, 0xad, 0xfd, 0x16, 0x00, 0x10, 0x04, 0x20, 0x0a, 0x08, 0xb4, 0xaa, 0x95, 0xaa, 0x7b, 0xb7, 0xdb, 0x5f, 0x92, 0x04, 0x01, 0x84, 0x20, 0x21, 0x51, 0xd5, 0x2a, 0xa9, 0xee, 0xd5, 0xfe, 0x0d, 0x00, 0x20, 0x04, 0x10, 0x00, 0x08, 0x50, 0xe9, 0xd7, 0xd4, 0xfb, 0xb5, 0xff, 0x9f, 0x24, 0x09, 0x01, 0x42, 0x4a, 0xa2, 0x64, 0xd5, 0x55, 0x7b, 0x7f, 0xda, 0x7d, 0x4f, 0x00, 0x20, 0x04, 0x00, 0x80, 0x00, 0xa0, 0x2a, 0x13, 0x84, 0x6a, 0x55, 0xff, 0x1d, 0x48, 0x8a, 0x00, 0x94, 0x24, 0x8a, 0xc8, 0xaa, 0x42, 0x20, 0x5d, 0xf5, 0xff, 0x5f, 0x01, 0x00, 0x02, 0x01, 0x00, 0x20, 0xa2, 0x4a, 0x1a, 0x82, 0x56, 0xda, 0xbd, 0x3f, 0x92, 0x92, 0x00, 0x90, 0x92, 0x00, 0x40, 0x95, 0x6a, 0xf4, 0x55, 0x6d, 0xff, 0xd6, 0x00, 0x00, 0x0a, 0x04, 0x20, 0x14, 0x49, 0x4b, 0xaa, 0xaa, 0x56, 0xf5, 0xff, 0xbf, 0xab, 0xa4, 0x00, 0x20, 0x89, 0x40, 0x80, 0xaa, 0xaa, 0xaa, 0xaa, 0xde, 0xbf, 0xeb, 0x03, 0x00, 0x02, 0x04, 0x02, 0x0a, 0x10, 0x2b, 0x2a, 0x55, 0x5b, 0xf5, 0xff, 0xd7, 0x2f, 0x92, 0x00, 0x10, 0x28, 0x21, 0x01, 0x56, 0x95, 0xa0, 0x56, 0xdf, 0xef, 0xea, 0x87, 0x40, 0x0a, 0x42, 0x41, 0x00, 0x90, 0xaa, 0x52, 0xb6, 0xad, 0xfa, 0xff, 0xd5, 0x2f, 0x14, 0x00, 0x00, 0x04, 0x95, 0x04, 0xaa, 0xac, 0x55, 0x6b, 0xff, 0xb7, 0xea, 0x9f, 0x40, 0x02, 0x28, 0x51, 0x00, 0x40, 0x58, 0xd5, 0xda, 0xd6, 0x6e, 0x7f, 0xf9, 0x3f, 0x12, 0x04, 0x02, 0x04, 0x49, 0x25, 0x55, 0xaa, 0x77, 0xab, 0xff, 0x2b, 0xfd, 0x3f, 0x48, 0x01, 0x20, 0x41, 0x00, 0x00, 0x58, 0xa9, 0xda, 0xea, 0xfd, 0xaf, 0xfa, 0xff, 0x02, 0x04, 0x08, 0x14, 0x29, 0x49, 0x52, 0x55, 0x55, 0x55, 0xff, 0x8d, 0xfe, 0x3f, 0xa8, 0x00, 0x02, 0x41, 0x00, 0x02, 0xa0, 0xa2, 0xaa, 0xea, 0xff, 0x53, 0xfd, 0xff, 0x02, 0x04, 0x50, 0x04, 0x25, 0xa8, 0x54, 0x49, 0x52, 0xb5, 0xbf, 0x8a, 0xfe, 0xff, 0xa9, 0x08, 0x04, 0x50, 0x80, 0x02, 0xa1, 0x2a, 0x95, 0xea, 0xff, 0xa1, 0xff, 0xff, 0x03, 0x02, 0x90, 0x02, 0x09, 0x08, 0x44, 0x49, 0x52, 0xbd, 0x7f, 0xca, 0xff, 0xff, 0x2b, 0x09, 0x04, 0x48, 0x40, 0x82, 0x90, 0x56, 0xa9, 0xf6, 0xbf, 0xd0, 0xff, 0xff, 0x47, 0x00, 0x50, 0x02, 0x15, 0x11, 0x40, 0x95, 0xaa, 0xfd, 0x2f, 0xe9, 0xff, 0xff, 0x8f, 0x0a, 0x84, 0x50, 0x40, 0x84, 0x14, 0xaa, 0x6a, 0xff, 0x5f, 0xf2, 0xff, 0xff, 0x7f, 0x00, 0x10, 0x02, 0x09, 0x10, 0x40, 0x7d, 0xf7, 0xff, 0x0b, 0xfc, 0xff, 0xff, 0xaf, 0x02, 0x84, 0x50, 0x42, 0x85, 0x12, 0xd0, 0xdd, 0xff, 0xa7, 0xf2, 0xff, 0xff, 0xff, 0x04, 0x00, 0x0a, 0x08, 0x10, 0x48, 0xf8, 0xff, 0xff, 0x0a, 0xfe, 0xff, 0xff, 0x7f, 0x03, 0xa4, 0x80, 0xa2, 0x8a, 0x02, 0x68, 0xff, 0xff, 0x52, 0xfd, 0xff, 0xff, 0xff, 0x07, 0x00, 0x2a, 0x08, 0x20, 0x28, 0xdc, 0xff, 0x5f, 0x05, 0xff, 0xff, 0xff, 0xff, 0x0d, 0x92, 0x40, 0x22, 0x09, 0x02, 0xea, 0xfb, 0xaf, 0x48, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x12, 0x81, 0xa0, 0x48, 0x9c, 0x6e, 0x93, 0xa2, 0xff, 0xff, 0xff, 0xff, 0x07, 0xa8, 0x40, 0x28, 0x0a, 0x02, 0x74, 0xb5, 0x45, 0x81, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x02, 0x0a, 0x81, 0x20, 0x08, 0xae, 0xaa, 0x90, 0xe8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x90, 0x40, 0x28, 0x88, 0x12, 0x58, 0x15, 0x50, 0xd0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x44, 0x0a, 0x41, 0x21, 0x08, 0xae, 0x04, 0x14, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x10, 0x40, 0x14, 0x88, 0x04, 0xba, 0x02, 0x28, 0xe8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x42, 0x15, 0x41, 0x21, 0x05, 0xad, 0x00, 0x05, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x10, 0x40, 0x24, 0x8a, 0x0e, 0x36, 0x00, 0x0a, 0xf4, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x42, 0x25, 0x90, 0xd0, 0x8b, 0xc2, 0x41, 0x05, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x10, 0x08, 0x05, 0xe8, 0x8e, 0x58, 0x80, 0x02, 0xfa, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x4a, 0x20, 0xa8, 0xba, 0x0b, 0x2b, 0x51, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x8a, 0x02, 0xe8, 0xaf, 0x84, 0x90, 0x04, 0xfd, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x52, 0x21, 0x54, 0xbf, 0x1f, 0x15, 0xa5, 0x02, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x08, 0x01, 0xfa, 0xb6, 0xa4, 0x52, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x4a, 0xa2, 0x54, 0xef, 0x5f, 0x4b, 0xa4, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x80, 0x10, 0x82, 0xfe, 0xbf, 0x92, 0x52, 0x42, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x12, 0x42, 0xa8, 0xbf, 0x1f, 0x24, 0x80, 0xa0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x84, 0x28, 0x8a, 0xf7, 0x37, 0x80, 0x52, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x10, 0x82, 0xe0, 0xff, 0x1f, 0x00, 0x20, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x84, 0x28, 0xca, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x10, 0x42, 0xf0, 0xfd, 0x1b, 0x00, 0x50, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xa4, 0x10, 0xc5, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x22, 0xf8, 0xff, 0x0e, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xaa, 0x88, 0xe2, 0xff, 0x0f, 0x10, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x25, 0xfa, 0xff, 0x0f, 0x01, 0x11, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xfb, 0xfb, 0xff, 0x7f, 0x5d, 0xd5, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f}; micropolis-activity/src/tk/library/demos/widget0000775000076400007640000002006610724145723022230 0ustar simcitysimcity#!/usr/local/bin/wish -f # # This script demonstrates the various widgets provided by Tk, # along with many of the features of the Tk toolkit. set auto_path "$tk_library/demos $auto_path" wm title . "Widget Demonstration" #------------------------------------------------------- # The code below create the main window, consisting of a # menu bar and a message explaining the basic operation # of the program. #------------------------------------------------------- frame .menu -relief raised -borderwidth 1 message .msg -font -Adobe-times-medium-r-normal--*-180* -relief raised -width 500 \ -borderwidth 1 -text "This application demonstrates the widgets provided by the Tk toolkit. The menus above are organized by widget type: each menu contains one or more demonstrations of a particular type of widget. To invoke a demonstration, press mouse button 1 over one of the menu buttons above, drag the mouse to the desired entry in the menu, then release the mouse button. To exit this demonstration, invoke the \"Quit\" entry in the \"Misc\" menu." pack append . .menu {top fillx} .msg {bottom expand fill} #------------------------------------------------------- # The code below creates all the menus, which invoke procedures # to create particular demonstrations of various widgets. #------------------------------------------------------- menubutton .menu.button -text "Labels/Buttons" -menu .menu.button.m \ -underline 7 menu .menu.button.m .menu.button.m add command -label "Labels" -command "mkLabel" -underline 0 .menu.button.m add command -label "Buttons" -command "mkButton" -underline 0 .menu.button.m add command -label "Checkbuttons" -command "mkCheck" \ -underline 0 .menu.button.m add command -label "Radiobuttons" -command "mkRadio" \ -underline 0 .menu.button.m add command -label "15-puzzle" -command "mkPuzzle" -underline 0 .menu.button.m add command -label "Iconic buttons" -command "mkIcon" \ -underline 0 menubutton .menu.listbox -text "Listboxes" -menu .menu.listbox.m -underline 0 menu .menu.listbox.m .menu.listbox.m add command -label "States" -command "mkListbox" -underline 0 .menu.listbox.m add command -label "Colors" -command "mkListbox2" -underline 0 .menu.listbox.m add command -label "Well-known sayings" -command mkListbox3 \ -underline 0 menubutton .menu.entry -text "Entries" -menu .menu.entry.m -underline 0 menu .menu.entry.m .menu.entry.m add command -label "Without scrollbars" -command "mkEntry" \ -underline 4 .menu.entry.m add command -label "With scrollbars" -command "mkEntry2" \ -underline 0 menubutton .menu.text -text "Text" -menu .menu.text.m -underline 0 menu .menu.text.m .menu.text.m add command -label "Basic text" -command "mkBasic" \ -underline 0 .menu.text.m add command -label "Display styles" -command "mkStyles" \ -underline 0 .menu.text.m add command -label "Command bindings" -command "mkTextBind" \ -underline 0 menubutton .menu.scroll -text "Scrollbars" -menu .menu.scroll.m -underline 0 menu .menu.scroll.m .menu.scroll.m add command -label "Vertical" -command "mkListbox2" -underline 0 .menu.scroll.m add command -label "Horizontal" -command "mkEntry2" -underline 0 menubutton .menu.scale -text "Scales" -menu .menu.scale.m -underline 2 menu .menu.scale.m .menu.scale.m add command -label "Vertical" -command "mkVScale" -underline 0 .menu.scale.m add command -label "Horizontal" -command "mkHScale" -underline 0 menubutton .menu.canvas -text "Canvases" -menu .menu.canvas.m -underline 0 menu .menu.canvas.m .menu.canvas.m add command -label "Item types" -command mkItems -underline 0 .menu.canvas.m add command -label "2-D plot" -command mkPlot -underline 0 .menu.canvas.m add command -label "Text" -command mkCanvText -underline 0 .menu.canvas.m add command -label "Arrow shapes" -command mkArrow -underline 0 .menu.canvas.m add command -label "Ruler" -command mkRuler -underline 0 .menu.canvas.m add command -label "Scrollable canvas" -command mkScroll \ -underline 0 menubutton .menu.menu -text "Menus" -menu .menu.menu.m -underline 0 menu .menu.menu.m .menu.menu.m add command -label "Print hello" -command {puts stdout "Hello"} \ -accelerator Control+a -underline 6 bind .msg {puts stdout "Hello"} .menu.menu.m add command -label "Print goodbye" -command {\ puts stdout "Goodbye"} -accelerator Control+b -underline 6 bind .msg {puts stdout "Goodbye"} .menu.menu.m add command -label "Light blue background" \ -command {.msg config -bg "LightBlue1"} -underline 0 .menu.menu.m add command -label "Info on tear-off menus" -command mkTear \ -underline 0 .menu.menu.m add cascade -label "Check buttons =>" -menu .menu.menu.m.check \ -underline 0 .menu.menu.m add cascade -label "Radio buttons =>" -menu .menu.menu.m.radio \ -underline 0 .menu.menu.m add command -bitmap @$tk_library/demos/bitmaps/pattern \ -command { mkDialog .pattern {-text {The menu entry you invoked displays a bitmap rather than a text string. Other than this, it is just like any other menu entry.} -aspect 250} {OK {}} } menu .menu.menu.m.check .menu.menu.m.check add check -label "Oil checked" -variable oil .menu.menu.m.check add check -label "Transmission checked" -variable trans .menu.menu.m.check add check -label "Brakes checked" -variable brakes .menu.menu.m.check add check -label "Lights checked" -variable lights .menu.menu.m.check add separator .menu.menu.m.check add command -label "Show current values" \ -command "showVars .menu.menu.dialog oil trans brakes lights" .menu.menu.m.check invoke 1 .menu.menu.m.check invoke 3 menu .menu.menu.m.radio .menu.menu.m.radio add radio -label "10 point" -variable pointSize -value 10 .menu.menu.m.radio add radio -label "14 point" -variable pointSize -value 14 .menu.menu.m.radio add radio -label "18 point" -variable pointSize -value 18 .menu.menu.m.radio add radio -label "24 point" -variable pointSize -value 24 .menu.menu.m.radio add radio -label "32 point" -variable pointSize -value 32 .menu.menu.m.radio add sep .menu.menu.m.radio add radio -label "Roman" -variable style -value roman .menu.menu.m.radio add radio -label "Bold" -variable style -value bold .menu.menu.m.radio add radio -label "Italic" -variable style -value italic .menu.menu.m.radio add sep .menu.menu.m.radio add command -label "Show current values" -command \ "showVars .menu.menu.dialog pointSize style" .menu.menu.m.radio invoke 1 .menu.menu.m.radio invoke 7 menubutton .menu.misc -text Misc -menu .menu.misc.m -underline 1 menu .menu.misc.m .menu.misc.m add command -label "Modal dialog (local grab)" -command { mkDialog .modal {-text {This dialog box is a modal one. It uses Tk's "grab" command to create a "local grab" on the dialog box. The grab prevents any pointer-related events from getting to any other windows in the application. If you press the "OK" button below (or hit the Return key) then the dialog box will go away and things will return to normal.} -aspect 250 -justify left} {OK {}} dpos .modal bind .modal {grab .modal; focus .modal} } -underline 0 .menu.misc.m add command -label "Modal dialog (global grab)" -command { mkDialog .modal {-text {This is another modal dialog box. However, in this case a "global grab" is used, which locks up the display so you can't talk to any windows in any applications anywhere, except for the dialog. If you press the "OK" button below (or hit the Return key) then the dialog box will go away and things will return to normal.} -aspect 250 -justify left} {OK {}} dpos .modal bind .modal {grab -global .modal; focus .modal} } -underline 0 .menu.misc.m add command -label "Quit" -command "destroy ." -underline 0 pack append .menu .menu.button left .menu.listbox left \ .menu.entry left .menu.text left .menu.scroll left .menu.scale left \ .menu.canvas left .menu.menu left .menu.misc left # Set up for keyboard-based menu traversal tk_bindForTraversal .msg bind . {focus .msg} tk_menus . .menu.button .menu.listbox .menu.entry .menu.text \ .menu.scroll .menu.scale .menu.canvas .menu.menu .menu.misc # Position a dialog box at a reasonable place on the screen. proc dpos w { wm geometry $w +300+300 } micropolis-activity/src/tk/library/demos/mkRadio.tcl0000664000076400007640000000502110724145723023103 0ustar simcitysimcity# mkRadio w # # Create a top-level window that displays a bunch of radio buttons. # # Arguments: # w - Name to use for new top-level window. proc mkRadio {{w .r1}} { catch {destroy $w} toplevel $w dpos $w wm title $w "Radiobutton Demonstration" wm iconname $w "Radiobuttons" message $w.msg -font -Adobe-times-medium-r-normal--*-180* -aspect 300 \ -text "Two groups of radiobuttons are displayed below. If you click on a button then the button will become selected exclusively among all the buttons in its group. A Tcl variable is associated with each group to indicate which of the group's buttons is selected. Click the \"See Variables\" button to see the current values of the variables. Click the \"OK\" button when you've seen enough." frame $w.frame -borderwidth 10 pack append $w.frame \ [frame $w.frame.left] {left expand} \ [frame $w.frame.right] {right expand} pack append $w.frame.left \ [radiobutton $w.frame.left.b1 -text "Point Size 10" -variable size \ -relief flat -value 10] {top pady 4 frame w} \ [radiobutton $w.frame.left.b2 -text "Point Size 12" -variable size \ -relief flat -value 12] {top pady 4 frame w} \ [radiobutton $w.frame.left.b3 -text "Point Size 18" -variable size \ -relief flat -value 18] {top pady 4 frame w} \ [radiobutton $w.frame.left.b4 -text "Point Size 24" -variable size \ -relief flat -value 24] {top pady 4 frame w} pack append $w.frame.right \ [radiobutton $w.frame.right.b1 -text "Red" -variable color \ -relief flat -value red] {top pady 4 frame w} \ [radiobutton $w.frame.right.b2 -text "Green" -variable color \ -relief flat -value green] {top pady 4 frame w} \ [radiobutton $w.frame.right.b3 -text "Blue" -variable color \ -relief flat -value blue] {top pady 4 frame w} \ [radiobutton $w.frame.right.b4 -text "Yellow" -variable color \ -relief flat -value yellow] {top pady 4 frame w} \ [radiobutton $w.frame.right.b5 -text "Orange" -variable color \ -relief flat -value orange] {top pady 4 frame w} \ [radiobutton $w.frame.right.b6 -text "Purple" -variable color \ -relief flat -value purple] {top pady 4 frame w} frame $w.frame2 pack append $w.frame2 \ [button $w.frame2.ok -text OK -command "destroy $w"] \ {left expand fill} \ [button $w.frame2.vars -text "See Variables" \ -command "showVars $w.dialog size color"] \ {left expand fill} button $w.ok -text OK -command "destroy $w" pack append $w $w.msg {top fill} $w.frame {top expand fill} \ $w.frame2 {bottom fill} } micropolis-activity/src/tk/library/demos/dialog0000775000076400007640000000411510724145723022201 0ustar simcitysimcity#!/usr/local/bin/wish -f # # This script generates a sample dialog box that waits for one of three # buttons to be pressed, then prints a message and exits. # Create two frames in the main window. The top frame will hold the # message and the bottom one will hold the buttons. Arrange them # on above the other, with any extra vertical space split between # them. frame .top -relief raised -border 1 frame .bot -relief raised -border 1 pack append . .top {top fill expand} .bot {top fill expand} # Create the message widget and arrange for it to be centered in the # top frame. message .top.msg -text "File main.c hasn't been saved to disk since \ it was last modified. What should I do?" -justify center \ -font -Adobe-helvetica-medium-r-normal--*-240* -aspect 200 pack append .top .top.msg {top padx 5 pady 5 expand} # Create the buttons and arrange them from left to right in the bottom # frame. Embed the left button in an additional sunken frame to indicate # that it is the default button. frame .bot.left -relief sunken -border 1 pack append .bot .bot.left {left expand padx 20 pady 20} button .bot.left.button -text "Save File" -command "quit save" pack append .bot.left .bot.left.button {expand padx 12 pady 12} button .bot.middle -text "Quit Anyway" -command "quit quit" pack append .bot .bot.middle {left expand padx 20} button .bot.right -text "Return To Editor" -command "quit return" pack append .bot .bot.right {left expand padx 20} # The procedure below is invoked as the action for each of the buttons. # It prints a message and exits by destroying the application's main # window. proc quit button { puts stdout "You pressed the \"$button\" button; bye-bye!" destroy . } bind .top {.bot.left.button activate} bind .top.msg {.bot.left.button activate} bind .bot {.bot.left.button activate} bind .top {.bot.left.button deactivate} bind .top.msg {.bot.left.button deactivate} bind .bot {.bot.left.button deactivate} bind . <1> {.bot.left.button config -relief sunken} bind . {quit save} focus . bind . {quit save} micropolis-activity/src/tk/library/demos/mkBasic.tcl0000664000076400007640000000465410724145723023101 0ustar simcitysimcity# mkBasic w # # Create a top-level window that displays a basic text widget. # # Arguments: # w - Name to use for new top-level window. proc mkBasic {{w .basic}} { catch {destroy $w} toplevel $w dpos $w wm title $w "Text Demonstration - Basic Facilities" wm iconname $w "Text Basics" button $w.ok -text OK -command "destroy $w" text $w.t -relief raised -bd 2 -yscrollcommand "$w.s set" -setgrid true scrollbar $w.s -relief flat -command "$w.t yview" pack append $w $w.ok {bottom fillx} $w.s {right filly} $w.t {expand fill} $w.t insert 0.0 {\ This window is a text widget. It displays one or more lines of text and allows you to edit the text. Here is a summary of the things you can do to a text widget: 1. Scrolling. Use the scrollbar to adjust the view in the text window. 2. Scanning. Press mouse button 2 in the text window and drag up or down. This will drag the text at high speed to allow you to scan its contents. 3. Insert text. Press mouse button 1 to set the insertion cursor, then type text. What you type will be added to the widget. You can backspace over what you've typed using either the backspace key, the delete key, or Control+h. 4. Select. Press mouse button 1 and drag to select a range of characters. Once you've released the button, you can adjust the selection by pressing button 1 with the shift key down. This will reset the end of the selection nearest the mouse cursor and you can drag that end of the selection by dragging the mouse before releasing the mouse button. You can double-click to select whole words, or triple-click to select whole lines. 5. Delete. To delete text, select the characters you'd like to delete and type Control+d. 6. Copy the selection. To copy the selection either from this window or from any other window or application, select what you want, click button 1 to set the insertion cursor, then type Control+v to copy the selection to the point of the insertion cursor. 7. Resize the window. This widget has been configured with the "setGrid" option on, so that if you resize the window it will always resize to an even number of characters high and wide. Also, if you make the window narrow you can see that long lines automatically wrap around onto additional lines so that all the information is always visible. When you're finished with this demonstration, press the "OK" button below.} $w.t mark set insert 0.0 bind $w "focus $w.t" } micropolis-activity/src/tk/library/demos/size0000775000076400007640000000072010724145723021712 0ustar simcitysimcity#!/usr/local/bin/wish -f # # Simple script to change size of something in a window. if "$argc < 3" {error "Usage: size appName window option"} set appName [lindex $argv 0] set widget [lindex $argv 1] set option [lindex $argv 2] pack append . [scale .scale -command {send $appName $widget config $option} \ -label "Pixels" -length 250 \ -from 0 -to 100 -orient vertical] {top expand filly} bind . {destroy .} bind . {destroy .} focus . micropolis-activity/src/tk/library/demos/mkIcon.tcl0000664000076400007640000000306110724145723022737 0ustar simcitysimcity# mkIcon w # # Create a top-level window that displays a bunch of iconic # buttons. # # Arguments: # w - Name to use for new top-level window. proc mkIcon {{w .icon}} { global tk_library catch {destroy $w} toplevel $w dpos $w wm title $w "Iconic Button Demonstration" wm iconname $w "Icons" message $w.msg -font -Adobe-times-medium-r-normal--*-180* -aspect 300 \ -text "This window shows three buttons that display bitmaps instead of text. On the left is a regular button, which changes its bitmap when you click on it. On the right are two radio buttons. Click the \"OK\" button when you're done." frame $w.frame -borderwidth 10 pack append $w.frame \ [button $w.frame.b1 -bitmap @$tk_library/demos/bitmaps/flagdown \ -command "iconCmd $w.frame.b1"] {left expand} \ [frame $w.frame.right] {left expand} radiobutton $w.frame.right.b2 -bitmap @$tk_library/demos/bitmaps/letters \ -variable letters radiobutton $w.frame.right.b3 -bitmap @$tk_library/demos/bitmaps/noletters \ -variable letters pack append $w.frame.right $w.frame.right.b2 {top expand} \ $w.frame.right.b3 {top expand} button $w.ok -text OK -command "destroy $w" pack append $w $w.msg {top frame c} $w.frame {top expand fill} \ $w.ok {bottom fill} } proc iconCmd {w} { global tk_library set bitmap [lindex [$w config -bitmap] 4] if {$bitmap == "@$tk_library/demos/bitmaps/flagdown"} { $w config -bitmap @$tk_library/demos/bitmaps/flagup } else { $w config -bitmap @$tk_library/demos/bitmaps/flagdown } } micropolis-activity/src/tk/library/demos/mkListbox.tcl0000664000076400007640000000317410724145723023500 0ustar simcitysimcity# mkListbox w # # Create a top-level window that displays a listbox with the names of the # 50 states. # # Arguments: # w - Name to use for new top-level window. proc mkListbox {{w .l1}} { catch {destroy $w} toplevel $w dpos $w wm title $w "Listbox Demonstration (50 states)" wm iconname $w "Listbox" message $w.msg -font -Adobe-times-medium-r-normal--*-180* -aspect 300 \ -text "A listbox containing the 50 states is displayed below, along with a scrollbar. You can scan the list either using the scrollbar or by dragging in the listbox window with button 2 pressed. Click the \"OK\" button when you've seen enough." frame $w.frame -borderwidth 10 pack append $w.frame \ [scrollbar $w.frame.scroll -relief sunken \ -command "$w.frame.list yview"] {right expand filly frame w} \ [listbox $w.frame.list -yscroll "$w.frame.scroll set" -relief sunken] \ {left expand filly frame e} $w.frame.list insert 0 Alabama Alaska Arizona Arkansas California \ Colorado Connecticut Delaware Florida Georgia Hawaii Idaho Illinois \ Indiana Iowa Kansas Kentucky Louisiana Maine Maryland \ Massachusetts Michigan Minnesota Mississippi Missouri \ Montana Nebraska Nevada "New Hampshire" "New Jersey" "New Mexico" \ "New York" "North Carolina" "North Dakota" \ Ohio Oklahoma Oregon Pennsylvania "Rhode Island" \ "South Carolina" "South Dakota" \ Tennessee Texas Utah Vermont Virginia Washington \ "West Virginia" Wisconsin Wyoming button $w.ok -text OK -command "destroy $w" pack append $w $w.msg {top fill} $w.frame {top expand fill} \ $w.ok {bottom fill} } micropolis-activity/src/tk/library/demos/mkListbox3.tcl0000664000076400007640000000366010724145723023563 0ustar simcitysimcity# mkListbox3 w # # Create a top-level window containing a listbox with a bunch of well-known # sayings. The listbox can be scrolled or scanned in two dimensions. # # Arguments: # w - Name to use for new top-level window. proc mkListbox3 {{w .l3}} { catch {destroy $w} toplevel $w dpos $w wm title $w "Listbox Demonstration (well-known sayings)" wm iconname $w "Listbox" message $w.msg -font -Adobe-times-medium-r-normal--*-180* -aspect 300 \ -text "The listbox below contains a collection of well-known sayings. You can scan the list using either of the scrollbars or by dragging in the listbox window with button 2 pressed. Click the \"OK\" button when you're done." frame $w.frame -borderwidth 10 pack append $w.frame \ [scrollbar $w.frame.yscroll -relief sunken \ -command "$w.frame.list yview"] {right filly} \ [scrollbar $w.frame.xscroll -relief sunken -orient horizontal \ -command "$w.frame.list xview"] {bottom fillx} \ [listbox $w.frame.list -yscroll "$w.frame.yscroll set" \ -xscroll "$w.frame.xscroll set" \ -geometry 20x10 -relief sunken] {top} $w.frame.list insert 0 "Waste not, want not" "Early to bed and early to rise makes a man healthy, wealthy, and wise" "Ask not what your country can do for you, ask what you can do for your country" "I shall return" "NOT" "A picture is worth a thousand words" "User interfaces are hard to build" "Thou shalt not steal" "A penny for your thoughts" "Fool me once, shame on you; fool me twice, shame on me" "Every cloud has a silver lining" "Where there's smoke there's fire" "It takes one to know one" "Curiosity killed the cat" "Take this job and shove it" "Up a creek without a paddle" "I'm mad as hell and I'm not going to take it any more" "An apple a day keeps the doctor away" "Don't look a gift horse in the mouth" button $w.ok -text OK -command "destroy $w" pack append $w $w.msg {top fill} $w.frame {top} \ $w.ok {bottom fill} } micropolis-activity/src/tk/library/demos/mkHScale.tcl0000664000076400007640000000233710724145723023213 0ustar simcitysimcity# mkHScale w # # Create a top-level window that displays a horizontal scale. # # Arguments: # w - Name to use for new top-level window. proc mkHScale {{w .scale2}} { catch {destroy $w} toplevel $w dpos $w wm title $w "Horizontal Scale Demonstration" wm iconname $w "Scale" message $w.msg -font -Adobe-times-medium-r-normal--*-180* -aspect 300 \ -text "A bar and a horizontal scale are displayed below. If you click or drag mouse button 1 in the scale, you can change the width of the bar. Click the \"OK\" button when you're finished." frame $w.frame -borderwidth 10 pack append $w.frame \ [frame $w.frame.top -borderwidth 15] {top expand frame sw} \ [scale $w.frame.scale -orient horizontal -length 280 -from 0 -to 250 \ -command "setWidth $w.frame.top.inner" -tickinterval 50 \ -bg Bisque1] {bottom expand frame nw} pack append $w.frame.top \ [frame $w.frame.top.inner -geometry 20x40 -relief raised \ -borderwidth 2 -bg SteelBlue1] {expand frame sw} $w.frame.scale set 20 button $w.ok -text OK -command "destroy $w" pack append $w $w.msg {top fill} $w.frame {top expand fill} \ $w.ok {bottom fill} } proc setWidth {w width} { $w config -geometry ${width}x40 } micropolis-activity/src/tk/library/demos/mkCanvText.tcl0000664000076400007640000001053610724145723023610 0ustar simcitysimcity# mkCanvText w # # Create a top-level window containing a canvas displaying a text # string and allowing the string to be edited and re-anchored. # # Arguments: # w - Name to use for new top-level window. proc mkCanvText {{w .ctext}} { catch {destroy $w} toplevel $w dpos $w wm title $w "Canvas Text Demonstration" wm iconname $w "Text" set c $w.c frame $w.frame1 -relief raised -bd 2 canvas $c -relief raised -width 500 -height 400 button $w.ok -text "OK" -command "destroy $w" pack append $w $w.frame1 {top fill} $w.c {expand fill} \ $w.ok {bottom pady 10 frame center} message $w.frame1.m -font -Adobe-Times-Medium-R-Normal-*-180-* -aspect 300 \ -text "This window displays a string of text to demonstrate the text facilities of canvas widgets. You can point, click, and type. You can also select and then delete with Control-d. You can copy the selection with Control-v. You can click in the boxes to adjust the position of the text relative to its positioning point or change its justification." pack append $w.frame1 $w.frame1.m {frame center} set font -Adobe-helvetica-medium-r-*-240-* $c create rectangle 245 195 255 205 -outline black -fill red # First, create the text item and give it bindings so it can be edited. $c addtag text withtag [$c create text 250 200 -text "This is just a string of text to demonstrate the text facilities of canvas widgets. You can point, click, and type. You can also select and then delete with Control-d." -width 440 -anchor n -font $font -justify left] $c bind text <1> "textB1Press $c %x %y" $c bind text "textB1Move $c %x %y" $c bind text "$c select adjust current @%x,%y" $c bind text "textB1Move $c %x %y" $c bind text "$c insert text cursor %A" $c bind text "$c insert text cursor %A" $c bind text "textBs $c" $c bind text "textBs $c" $c bind text "$c dchars text sel.first sel.last" $c bind text "$c insert text cursor \[selection get\]" # Next, create some items that allow the text's anchor position # to be edited. set x 50 set y 50 set color LightSkyBlue1 mkTextConfig $c $x $y -anchor se $color mkTextConfig $c [expr $x+30] [expr $y] -anchor s $color mkTextConfig $c [expr $x+60] [expr $y] -anchor sw $color mkTextConfig $c [expr $x] [expr $y+30] -anchor e $color mkTextConfig $c [expr $x+30] [expr $y+30] -anchor center $color mkTextConfig $c [expr $x+60] [expr $y+30] -anchor w $color mkTextConfig $c [expr $x] [expr $y+60] -anchor ne $color mkTextConfig $c [expr $x+30] [expr $y+60] -anchor n $color mkTextConfig $c [expr $x+60] [expr $y+60] -anchor nw $color set item [$c create rect [expr $x+40] [expr $y+40] [expr $x+50] [expr $y+50] \ -outline black -fill red] $c bind $item <1> "$c itemconf text -anchor center" $c create text [expr $x+45] [expr $y-5] -text {Text Position} -anchor s \ -font -Adobe-times-medium-r-normal--*-240-* -fill brown # Lastly, create some items that allow the text's justification to be # changed. set x 350 set y 50 set color SeaGreen2 mkTextConfig $c $x $y -justify left $color mkTextConfig $c [expr $x+30] [expr $y] -justify center $color mkTextConfig $c [expr $x+60] [expr $y] -justify right $color $c create text [expr $x+45] [expr $y-5] -text {Justification} -anchor s \ -font -Adobe-times-medium-r-normal--*-240-* -fill brown $c bind config "textEnter $c" $c bind config "$c itemconf current -fill \$textConfigFill" } proc mkTextConfig {w x y option value color} { set item [$w create rect [expr $x] [expr $y] [expr $x+30] [expr $y+30] \ -outline black -fill $color -width 1] $w bind $item <1> "$w itemconf text $option $value" $w addtag config withtag $item } set textConfigFill {} proc textEnter {w} { global textConfigFill set textConfigFill [lindex [$w itemconfig current -fill] 4] $w itemconfig current -fill black } proc textB1Press {w x y} { $w cursor current @$x,$y $w focus current focus $w $w select from current @$x,$y } proc textB1Move {w x y} { $w select to current @$x,$y } proc textBs {w} { set char [expr {[$w index text cursor] - 1}] if {$char >= 0} {$w dchar text $char} } micropolis-activity/src/tk/library/demos/mkPlot.tcl0000664000076400007640000000462710724145723022776 0ustar simcitysimcity# mkPlot w # # Create a top-level window containing a canvas displaying a simple # graph with data points that can be moved interactively. # # Arguments: # w - Name to use for new top-level window. proc mkPlot {{w .plot}} { catch {destroy $w} toplevel $w dpos $w wm title $w "Plot Demonstration" wm iconname $w "Plot" set c $w.c frame $w.frame1 -relief raised -bd 2 canvas $c -relief raised -width 450 -height 300 button $w.ok -text "OK" -command "destroy $w" pack append $w $w.frame1 {top fill} $w.c {expand fill} \ $w.ok {bottom pady 10 frame center} message $w.frame1.m -font -Adobe-Times-Medium-R-Normal-*-180-* -aspect 300 \ -text "This window displays a canvas widget containing a simple 2-dimensional plot. You can doctor the data by dragging any of the points with mouse button 1." pack append $w.frame1 $w.frame1.m {frame center} set font -Adobe-helvetica-medium-r-*-180-* $c create line 100 250 400 250 -width 2 $c create line 100 250 100 50 -width 2 $c create text 225 20 -text "A Simple Plot" -font $font -fill brown for {set i 0} {$i <= 10} {incr i} { set x [expr {100 + ($i*30)}] $c create line $x 250 $x 245 -width 2 $c create text $x 254 -text [expr 10*$i] -anchor n -font $font } for {set i 0} {$i <= 5} {incr i} { set y [expr {250 - ($i*40)}] $c create line 100 $y 105 $y -width 2 $c create text 96 $y -text [expr $i*50].0 -anchor e -font $font } foreach point {{12 56} {20 94} {33 98} {32 120} {61 180} {75 160} {98 223}} { set x [expr {100 + (3*[lindex $point 0])}] set y [expr {250 - (4*[lindex $point 1])/5}] set item [$c create oval [expr $x-6] [expr $y-6] \ [expr $x+6] [expr $y+6] -width 1 -outline black \ -fill SkyBlue2] $c addtag point withtag $item } $c bind point "$c itemconfig current -fill red" $c bind point "$c itemconfig current -fill SkyBlue2" $c bind point <1> "plotDown $c %x %y" $c bind point "$c dtag selected" bind $c "plotMove $c %x %y" } set plot(lastX) 0 set plot(lastY) 0 proc plotDown {w x y} { global plot $w dtag selected $w addtag selected withtag current $w raise current set plot(lastX) $x set plot(lastY) $y } proc plotMove {w x y} { global plot $w move selected [expr $x-$plot(lastX)] [expr $y-$plot(lastY)] set plot(lastX) $x set plot(lastY) $y } micropolis-activity/src/tk/library/demos/timer0000775000076400007640000000132610724145723022063 0ustar simcitysimcity#!/usr/local/bin/wish -f # # This script generates a counter with start and stop buttons. label .counter -text 0.00 -relief raised -width 10 button .start -text Start -command "set stop 0; tick" button .stop -text Stop -command {set stop 1} pack append . .counter {bot fill} .start {left expand fill} \ .stop {right expand fill} set seconds 0 set hundredths 0 set stop 0 proc tick {} { global seconds hundredths stop if $stop return after 20 tick set hundredths [expr $hundredths+2] if {$hundredths >= 100} { set hundredths 0 set seconds [expr $seconds+1] } .counter config -text [format "%d.%2d" $seconds $hundredths] } bind . {destroy .} bind . {destroy .} focus . micropolis-activity/src/tk/library/demos/mkDialog.tcl0000664000076400007640000000441410724145723023251 0ustar simcitysimcity# mkDialog w msgArgs list list ... # # Create a dialog box with a message and any number of buttons at # the bottom. # # Arguments: # w - Name to use for new top-level window. # msgArgs - List of arguments to use when creating the message of the # dialog box (e.g. text, justifcation, etc.) # list - A two-element list that describes one of the buttons that # will appear at the bottom of the dialog. The first element # gives the text to be displayed in the button and the second # gives the command to be invoked when the button is invoked. proc mkDialog {w msgArgs args} { catch {destroy $w} toplevel $w -class Dialog wm title $w "Dialog box" wm iconname $w "Dialog" # Create two frames in the main window. The top frame will hold the # message and the bottom one will hold the buttons. Arrange them # one above the other, with any extra vertical space split between # them. frame $w.top -relief raised -border 1 frame $w.bot -relief raised -border 1 pack append $w $w.top {top fill expand} $w.bot {top fill expand} # Create the message widget and arrange for it to be centered in the # top frame. eval message $w.top.msg -justify center \ -font -Adobe-times-medium-r-normal--*-180* $msgArgs pack append $w.top $w.top.msg {top expand padx 5 pady 5} # Create as many buttons as needed and arrange them from left to right # in the bottom frame. Embed the left button in an additional sunken # frame to indicate that it is the default button, and arrange for that # button to be invoked as the default action for clicks and returns in # the dialog. if {[llength $args] > 0} { set arg [lindex $args 0] frame $w.bot.0 -relief sunken -border 1 pack append $w.bot $w.bot.0 {left expand padx 20 pady 20} button $w.bot.0.button -text [lindex $arg 0] \ -command "[lindex $arg 1]; destroy $w" pack append $w.bot.0 $w.bot.0.button {expand padx 12 pady 12} bind $w "[lindex $arg 1]; destroy $w" focus $w set i 1 foreach arg [lrange $args 1 end] { button $w.bot.$i -text [lindex $arg 0] \ -command "[lindex $arg 1]; destroy $w" pack append $w.bot $w.bot.$i {left expand padx 20} set i [expr $i+1] } } bind $w [list focus $w] focus $w } micropolis-activity/src/tk/library/demos/mkScroll.tcl0000664000076400007640000000553110724145723023311 0ustar simcitysimcity# mkScroll w # # Create a top-level window containing a simple canvas that can # be scrolled in two dimensions. # # Arguments: # w - Name to use for new top-level window. proc mkScroll {{w .cscroll}} { catch {destroy $w} toplevel $w dpos $w wm title $w "Scrollable Canvas Demonstration" wm iconname $w "Canvas" wm minsize $w 100 100 set c $w.frame2.c frame $w.frame1 -relief raised -bd 2 frame $w.frame2 -relief raised -bd 2 button $w.ok -text "OK" -command "destroy $w" pack append $w $w.frame1 {top fill} $w.ok {bottom pady 10 frame center} \ $w.frame2 {top expand fill} message $w.frame1.m -font -Adobe-Times-Medium-R-Normal-*-180-* -aspect 300 \ -text "This window displays a canvas widget that can be scrolled either using the scrollbars or by dragging with button 2 in the canvas. If you click button 1 on one of the rectangles, its indices will be printed on stdout." pack append $w.frame1 $w.frame1.m {frame center} canvas $c -scrollregion {-10c -10c 50c 20c} scrollbar $w.frame2.vscroll -relief sunken -command "$c yview" scrollbar $w.frame2.hscroll -orient horiz -relief sunken -command "$c xview" pack append $w.frame2 $w.frame2.hscroll {bottom fillx} \ $w.frame2.vscroll {right filly} $c {expand fill} $c config -xscroll "$w.frame2.hscroll set" -yscroll "$w.frame2.vscroll set" set bg [lindex [$c config -bg] 4] for {set i 0} {$i < 20} {incr i} { set x [expr {-10 + 3*$i}] for {set j 0; set y -10} {$j < 10} {incr j; incr y 3} { $c create rect ${x}c ${y}c [expr $x+2]c [expr $y+2]c \ -outline black -fill $bg -tags rect $c create text [expr $x+1]c [expr $y+1]c -text "$i,$j" \ -anchor center -tags text } } $c bind all "scrollEnter $c" $c bind all "scrollLeave $c" $c bind all <1> "scrollButton $c" bind $c <2> "$c scan mark %x %y" bind $c "$c scan dragto %x %y" } proc scrollEnter canvas { global oldFill set id [$canvas find withtag current] if {[lsearch [$canvas gettags current] text] >= 0} { set id [expr $id-1] } set oldFill [lindex [$canvas itemconfig $id -fill] 4] if {[winfo screendepth $canvas] > 4} { $canvas itemconfigure $id -fill SeaGreen1 } else { $canvas itemconfigure $id -fill black $canvas itemconfigure [expr $id+1] -fill white } } proc scrollLeave canvas { global oldFill set id [$canvas find withtag current] if {[lsearch [$canvas gettags current] text] >= 0} { set id [expr $id-1] } $canvas itemconfigure $id -fill $oldFill $canvas itemconfigure [expr $id+1] -fill black } proc scrollButton canvas { global oldFill set id [$canvas find withtag current] if {[lsearch [$canvas gettags current] text] < 0} { set id [expr $id+1] } puts stdout "You buttoned at [lindex [$canvas itemconf $id -text] 4]" } micropolis-activity/src/tk/library/demos/mkEntry2.tcl0000664000076400007640000000416010724145723023233 0ustar simcitysimcity# mkEntry2 - # # Create a top-level window that displays a bunch of entries with # scrollbars. # # Arguments: # w - Name to use for new top-level window. proc mkEntry2 {{w .e2}} { catch {destroy $w} toplevel $w dpos $w wm title $w "Entry Demonstration" wm iconname $w "Entries" message $w.msg -font -Adobe-times-medium-r-normal--*-180* -aspect 200 \ -text "Three different entries are displayed below, with a scrollbar for each entry. You can add characters by pointing, clicking and typing. You can delete by selecting and typing Control-d. Backspace, Control-h, and Delete may be typed to erase the character just before the insertion point, Control-W erases the word just before the insertion point, and Control-u clears the entry. For entries that are too large to fit in the window all at once, you can scan through the entries using the scrollbars, or by dragging with mouse button 2 pressed. Click the \"OK\" button when you've seen enough." frame $w.frame -borderwidth 10 pack append $w.frame \ [entry $w.frame.e1 -relief sunken] {top fillx} \ [scrollbar $w.frame.s1 -relief sunken -orient horiz -command \ "$w.frame.e1 view"] {top fillx} \ [frame $w.frame.f1 -geometry 20x10] {top} \ [entry $w.frame.e2 -relief sunken] {top fillx} \ [scrollbar $w.frame.s2 -relief sunken -orient horiz -command \ "$w.frame.e2 view"] {top fillx} \ [frame $w.frame.f2 -geometry 20x10] {top} \ [entry $w.frame.e3 -relief sunken] {top fillx} \ [scrollbar $w.frame.s3 -relief sunken -orient horiz -command \ "$w.frame.e3 view"] {top fillx} $w.frame.e1 config -scroll "$w.frame.s1 set" $w.frame.e1 insert 0 "Initial value" $w.frame.e2 config -scroll "$w.frame.s2 set" $w.frame.e2 insert end "This entry contains a long value, much too long " $w.frame.e2 insert end "to fit in the window at one time, so long in fact " $w.frame.e2 insert end "that you'll have to scan or scroll to see the end." $w.frame.e3 config -scroll "$w.frame.s3 set" button $w.ok -text OK -command "destroy $w" pack append $w $w.msg {top fill} $w.frame {top expand fill} \ $w.ok {bottom fill} } micropolis-activity/src/tk/library/demos/mkCheck.tcl0000664000076400007640000000274410724145723023073 0ustar simcitysimcity# mkCheck w # # Create a top-level window that displays a bunch of check buttons. # # Arguments: # w - Name to use for new top-level window. proc mkCheck {{w .c1}} { catch {destroy $w} toplevel $w dpos $w wm title $w "Checkbutton demonstration" wm iconname $w "Checkbuttons" message $w.msg -font -Adobe-times-medium-r-normal--*-180* -aspect 300 \ -text "Three checkbuttons are displayed below. If you click on a button, it will toggle the button's selection state and set a Tcl variable to a value indicating the state of the checkbutton. Click the \"See Variables\" button to see the current values of the variables. Click the \"OK\" button when you've seen enough." frame $w.frame -borderwidth 10 pack append $w.frame \ [checkbutton $w.frame.b1 -text "Wipers OK" -variable wipers \ -relief flat] {top pady 4 expand frame w} \ [checkbutton $w.frame.b2 -text "Brakes OK" -variable brakes \ -relief flat] {top pady 4 expand frame w} \ [checkbutton $w.frame.b3 -text "Driver Sober" -variable sober \ -relief flat] {top pady 4 expand frame w} frame $w.frame2 pack append $w.frame2 \ [button $w.frame2.ok -text OK -command "destroy $w"] \ {left expand fill} \ [button $w.frame2.vars -text "See Variables" \ -command "showVars $w.dialog wipers brakes sober"] \ {left expand fill} button $w.ok -text OK -command "destroy $w" pack append $w $w.msg {top fill} $w.frame {top expand fill} \ $w.frame2 {bottom fill} } micropolis-activity/src/tk/library/demos/browse0000775000076400007640000000255410724145723022250 0ustar simcitysimcity#!/usr/local/bin/wish -f # # This script generates a directory browser, which lists the working # directory and allows you to open files or subdirectories by # double-clicking. # Create a scrollbar on the right side of the main window and a listbox # on the left side. scrollbar .scroll -command ".list yview" listbox .list -yscroll ".scroll set" -relief raised -geometry 20x20 pack append . .scroll {right filly} .list {left expand fill} # The procedure below is invoked to open a browser on a given file; if the # file is a directory then another instance of this program is invoked; if # the file is a regular file then the Mx editor is invoked to display # the file. proc browse {dir file} { if {[string compare $dir "."] != 0} {set file $dir/$file} if [file isdirectory $file] { exec browse $file & } else { if [file isfile $file] { exec xedit $file & } else { puts stdout "\"$file\" isn't a directory or regular file" } } } # Fill the listbox with a list of all the files in the directory (run # the "ls" command to get that information). if $argc>0 {set dir [lindex $argv 0]} else {set dir "."} foreach i [exec ls -a $dir] { .list insert end $i } # Set up bindings for the browser. bind .list {destroy .} bind .list {destroy .} focus .list bind .list {foreach i [selection get] {browse $dir $i}} micropolis-activity/src/tk/library/demos/mkEntry.tcl0000664000076400007640000000303010724145723023144 0ustar simcitysimcity# mkEntry w # # Create a top-level window that displays a bunch of entries. # # Arguments: # w - Name to use for new top-level window. proc mkEntry {{w .e1}} { catch {destroy $w} toplevel $w dpos $w wm title $w "Entry Demonstration" wm iconname $w "Entries" message $w.msg -font -Adobe-times-medium-r-normal--*-180* -aspect 200 \ -text "Three different entries are displayed below. You can add characters by pointing, clicking and typing. You can delete by selecting and typing Control-d. Backspace, Control-h, and Delete may be typed to erase the character just before the insertion point, Control-W erases the word just before the insertion point, and Control-u clears the entry. For entries that are too large to fit in the window all at once, you can scan through the entries by dragging with mouse button 2 pressed. Click the \"OK\" button when you've seen enough." frame $w.frame -borderwidth 10 pack append $w.frame \ [entry $w.frame.e1 -relief sunken] {top pady 10 fillx} \ [entry $w.frame.e2 -relief sunken] {top pady 10 fillx} \ [entry $w.frame.e3 -relief sunken] {top pady 10 fillx} $w.frame.e1 insert 0 "Initial value" $w.frame.e2 insert end "This entry contains a long value, much too long " $w.frame.e2 insert end "to fit in the window at one time, so long in fact " $w.frame.e2 insert end "that you'll have to scan or scroll to see the end." button $w.ok -text OK -command "destroy $w" pack append $w $w.msg {top fill} $w.frame {top expand fill} \ $w.ok {bottom fill} } micropolis-activity/src/tk/library/demos/mkLabel.tcl0000664000076400007640000000254210724145723023071 0ustar simcitysimcity# mkLabel w # # Create a top-level window that displays a bunch of labels. # # Arguments: # w - Name to use for new top-level window. proc mkLabel {{w .l1}} { global tk_library catch {destroy $w} toplevel $w dpos $w wm title $w "Label Demonstration" wm iconname $w "Labels" message $w.msg -font -Adobe-times-medium-r-normal--*-180* -aspect 300 \ -text "Five labels are displayed below: three textual ones on the left, and a bitmap label and a text label on the right. Labels are pretty boring because you can't do anything with them. Click the \"OK\" button when you've seen enough." frame $w.frame -borderwidth 10 pack append $w.frame \ [frame $w.frame.right -borderwidth 10] {right} \ [label $w.frame.l1 -text "First label"] {top frame w pady 4 expand} \ [label $w.frame.l2 -text "Second label, raised just for fun" \ -relief raised] {top frame w pady 4 expand} \ [label $w.frame.l3 -text "Third label, sunken" -relief sunken ] \ {top frame w pady 4 expand} pack append $w.frame.right \ [label $w.frame.right.bitmap -bitmap @$tk_library/demos/bitmaps/face \ -borderwidth 2 -relief sunken] top \ [label $w.frame.right.caption -text "Tcl/Tk Proprietor"] bottom button $w.ok -text OK -command "destroy $w" pack append $w $w.msg {top frame c} $w.frame {top expand fill} \ $w.ok {bottom fill} } micropolis-activity/src/tk/library/demos/mkArrow.tcl0000664000076400007640000001624210724145723023146 0ustar simcitysimcity# mkArrow w # # Create a top-level window containing a canvas demonstration that # allows the user to experiment with arrow shapes. # # Arguments: # w - Name to use for new top-level window. # This file implements a canvas widget that displays a large line with # an arrowhead and allows the shape of the arrowhead to be edited # interactively. The only procedure that should be invoked from outside # the file is the first one, which creates the canvas. proc mkArrow {{w .arrow}} { global tk_library upvar #0 demo_arrowInfo v catch {destroy $w} toplevel $w dpos $w wm title $w "Arrowhead Editor Demonstration" wm iconname $w "Arrow" set c $w.c frame $w.frame1 -relief raised -bd 2 canvas $c -width 500 -height 350 -relief raised button $w.ok -text "OK" -command "destroy $w" pack append $w $w.frame1 {top fill} $w.ok {bottom pady 10 frame center} \ $c {expand fill} message $w.frame1.m -font -Adobe-Times-Medium-R-Normal-*-180-* -aspect 300 \ -text "This widget allows you to experiment with different widths and arrowhead shapes for lines in canvases. To change the line width or the shape of the arrowhead, drag any of the three boxes attached to the oversized arrow. The arrows on the right give examples at normal scale. The text at the bottom shows the configuration options as you'd enter them for a line." pack append $w.frame1 $w.frame1.m {frame center} set v(a) 8 set v(b) 10 set v(c) 3 set v(width) 2 set v(motionProc) arrowMoveNull set v(x1) 40 set v(x2) 350 set v(y) 150 set v(smallTips) {5 5 2} set v(count) 0 if {[winfo screendepth $c] > 4} { set v(bigLineStyle) "-fill SkyBlue1" set v(boxStyle) "-fill {} -outline black -width 1" set v(activeStyle) "-fill red -outline black -width 1" } else { set v(bigLineStyle) "-fill black -stipple @$tk_library/demos/bitmaps/grey.25" set v(boxStyle) "-fill {} -outline black -width 1" set v(activeStyle) "-fill black -outline black -width 1" } arrowSetup $c $c bind box "$c itemconfigure current $v(activeStyle)" $c bind box "$c itemconfigure current $v(boxStyle)" $c bind box1 <1> {set demo_arrowInfo(motionProc) arrowMove1} $c bind box2 <1> {set demo_arrowInfo(motionProc) arrowMove2} $c bind box3 <1> {set demo_arrowInfo(motionProc) arrowMove3} $c bind box "\$demo_arrowInfo(motionProc) $c %x %y" bind $c "arrowSetup $c" } # The procedure below completely regenerates all the text and graphics # in the canvas window. It's called when the canvas is initially created, # and also whenever any of the parameters of the arrow head are changed # interactively. The argument is the name of the canvas widget to be # regenerated, and also the name of a global variable containing the # parameters for the display. proc arrowSetup c { upvar #0 demo_arrowInfo v $c delete all # Create the arrow and outline. eval "$c create line $v(x1) $v(y) $v(x2) $v(y) -width [expr 10*$v(width)] \ -arrowshape {[expr 10*$v(a)] [expr 10*$v(b)] [expr 10*$v(c)]} \ -arrow last $v(bigLineStyle)" set xtip [expr $v(x2)-10*$v(b)] set deltaY [expr 10*$v(c)+5*$v(width)] $c create line $v(x2) $v(y) $xtip [expr $v(y)+$deltaY] \ [expr $v(x2)-10*$v(a)] $v(y) $xtip [expr $v(y)-$deltaY] \ $v(x2) $v(y) -width 2 -capstyle round -joinstyle round # Create the boxes for reshaping the line and arrowhead. eval "$c create rect [expr $v(x2)-10*$v(a)-5] [expr $v(y)-5] \ [expr $v(x2)-10*$v(a)+5] [expr $v(y)+5] $v(boxStyle) \ -tags {box1 box}" eval "$c create rect [expr $xtip-5] [expr $v(y)-$deltaY-5] \ [expr $xtip+5] [expr $v(y)-$deltaY+5] $v(boxStyle) \ -tags {box2 box}" eval "$c create rect [expr $v(x1)-5] [expr $v(y)-5*$v(width)-5] \ [expr $v(x1)+5] [expr $v(y)-5*$v(width)+5] $v(boxStyle) \ -tags {box3 box}" # Create three arrows in actual size with the same parameters $c create line [expr $v(x2)+50] 0 [expr $v(x2)+50] 1000 \ -width 2 set tmp [expr $v(x2)+100] $c create line $tmp [expr $v(y)-125] $tmp [expr $v(y)-75] \ -width $v(width) \ -arrow both -arrowshape "$v(a) $v(b) $v(c)" $c create line [expr $tmp-25] $v(y) [expr $tmp+25] $v(y) \ -width $v(width) \ -arrow both -arrowshape "$v(a) $v(b) $v(c)" $c create line [expr $tmp-25] [expr $v(y)+75] [expr $tmp+25] \ [expr $v(y)+125] -width $v(width) \ -arrow both -arrowshape "$v(a) $v(b) $v(c)" # Create a bunch of other arrows and text items showing the # current dimensions. set tmp [expr $v(x2)+10] $c create line $tmp [expr $v(y)-5*$v(width)] \ $tmp [expr $v(y)-$deltaY] \ -arrow both -arrowshape $v(smallTips) $c create text [expr $v(x2)+15] [expr $v(y)-$deltaY+5*$v(c)] \ -text $v(c) -anchor w set tmp [expr $v(x1)-10] $c create line $tmp [expr $v(y)-5*$v(width)] \ $tmp [expr $v(y)+5*$v(width)] \ -arrow both -arrowshape $v(smallTips) $c create text [expr $v(x1)-15] $v(y) -text $v(width) -anchor e set tmp [expr $v(y)+5*$v(width)+10*$v(c)+10] $c create line [expr $v(x2)-10*$v(a)] $tmp $v(x2) $tmp \ -arrow both -arrowshape $v(smallTips) $c create text [expr $v(x2)-5*$v(a)] [expr $tmp+5] \ -text $v(a) -anchor n set tmp [expr $tmp+25] $c create line [expr $v(x2)-10*$v(b)] $tmp $v(x2) $tmp \ -arrow both -arrowshape $v(smallTips) $c create text [expr $v(x2)-5*$v(b)] [expr $tmp+5] \ -text $v(b) -anchor n $c create text $v(x1) 310 -text "-width $v(width)" \ -anchor w -font -Adobe-Helvetica-Medium-R-Normal-*-180-* $c create text $v(x1) 330 -text "-arrowshape {$v(a) $v(b) $v(c)}" \ -anchor w -font -Adobe-Helvetica-Medium-R-Normal-*-180-* incr v(count) } # The procedures below are called in response to mouse motion for one # of the three items used to change the line width and arrowhead shape. # Each procedure updates one or more of the controlling parameters # for the line and arrowhead, and recreates the display if that is # needed. The arguments are the name of the canvas widget, and the # x and y positions of the mouse within the widget. proc arrowMove1 {c x y} { upvar #0 demo_arrowInfo v set newA [expr ($v(x2)+5-[$c canvasx $x])/10] if {$newA < 1} { set newA 1 } if {$newA > 25} { set newA 25 } if {$newA != $v(a)} { $c move box1 [expr 10*($v(a)-$newA)] 0 set v(a) $newA } } proc arrowMove2 {c x y} { upvar #0 demo_arrowInfo v set newB [expr ($v(x2)+5-[$c canvasx $x])/10] if {$newB < 1} { set newB 1 } if {$newB > 25} { set newB 25 } set newC [expr ($v(y)+5-[$c canvasy $y]-5*$v(width))/10] if {$newC < 1} { set newC 1 } if {$newC > 20} { set newC 20 } if {($newB != $v(b)) || ($newC != $v(c))} { $c move box2 [expr 10*($v(b)-$newB)] [expr 10*($v(c)-$newC)] set v(b) $newB set v(c) $newC } } proc arrowMove3 {c x y} { upvar #0 demo_arrowInfo v set newWidth [expr ($v(y)+5-[$c canvasy $y])/5] if {$newWidth < 1} { set newWidth 1 } if {$newWidth > 20} { set newWidth 20 } if {$newWidth != $v(width)} { $c move box3 0 [expr 5*($v(width)-$newWidth)] set v(width) $newWidth } } micropolis-activity/src/tk/library/demos/mkListbox2.tcl0000664000076400007640000001133610724145723023561 0ustar simcitysimcity# mkListbox2 w # # Create a top-level window containing a listbox showing a bunch of # colors from the X color database. # # Arguments: # w - Name to use for new top-level window. proc mkListbox2 {{w .l2}} { catch {destroy $w} toplevel $w dpos $w wm title $w "Listbox Demonstration (colors)" wm iconname $w "Listbox" message $w.msg -font -Adobe-times-medium-r-normal--*-180* -aspect 300 \ -text "A listbox containing several color values is displayed below, along with a scrollbar. You can scan the list either using the scrollbar or by dragging in the listbox window with button 2 pressed. If you double-click button 1 on a color, then the background for the window will be changed to that color. Click the \"OK\" button when you've seen enough." frame $w.frame -borderwidth 10 pack append $w.frame \ [scrollbar $w.frame.scroll -relief sunken \ -command "$w.frame.list yview"] {right expand filly frame w} \ [listbox $w.frame.list -yscroll "$w.frame.scroll set" -relief sunken \ -geometry 20x20] {left expand filly frame e} $w.frame.list insert 0 snow1 snow2 snow3 snow4 seashell1 seashell2 \ seashell3 seashell4 AntiqueWhite1 AntiqueWhite2 AntiqueWhite3 \ AntiqueWhite4 bisque1 bisque2 bisque3 bisque4 PeachPuff1 \ PeachPuff2 PeachPuff3 PeachPuff4 NavajoWhite1 NavajoWhite2 \ NavajoWhite3 NavajoWhite4 LemonChiffon1 LemonChiffon2 \ LemonChiffon3 LemonChiffon4 cornsilk1 cornsilk2 cornsilk3 \ cornsilk4 ivory1 ivory2 ivory3 ivory4 honeydew1 honeydew2 \ honeydew3 honeydew4 LavenderBlush1 LavenderBlush2 \ LavenderBlush3 LavenderBlush4 MistyRose1 MistyRose2 \ MistyRose3 MistyRose4 azure1 azure2 azure3 azure4 \ SlateBlue1 SlateBlue2 SlateBlue3 SlateBlue4 RoyalBlue1 \ RoyalBlue2 RoyalBlue3 RoyalBlue4 blue1 blue2 blue3 blue4 \ DodgerBlue1 DodgerBlue2 DodgerBlue3 DodgerBlue4 SteelBlue1 \ SteelBlue2 SteelBlue3 SteelBlue4 DeepSkyBlue1 DeepSkyBlue2 \ DeepSkyBlue3 DeepSkyBlue4 SkyBlue1 SkyBlue2 SkyBlue3 \ SkyBlue4 LightSkyBlue1 LightSkyBlue2 LightSkyBlue3 \ LightSkyBlue4 SlateGray1 SlateGray2 SlateGray3 SlateGray4 \ LightSteelBlue1 LightSteelBlue2 LightSteelBlue3 \ LightSteelBlue4 LightBlue1 LightBlue2 LightBlue3 \ LightBlue4 LightCyan1 LightCyan2 LightCyan3 LightCyan4 \ PaleTurquoise1 PaleTurquoise2 PaleTurquoise3 PaleTurquoise4 \ CadetBlue1 CadetBlue2 CadetBlue3 CadetBlue4 turquoise1 \ turquoise2 turquoise3 turquoise4 cyan1 cyan2 cyan3 cyan4 \ DarkSlateGray1 DarkSlateGray2 DarkSlateGray3 \ DarkSlateGray4 aquamarine1 aquamarine2 aquamarine3 \ aquamarine4 DarkSeaGreen1 DarkSeaGreen2 DarkSeaGreen3 \ DarkSeaGreen4 SeaGreen1 SeaGreen2 SeaGreen3 SeaGreen4 \ PaleGreen1 PaleGreen2 PaleGreen3 PaleGreen4 SpringGreen1 \ SpringGreen2 SpringGreen3 SpringGreen4 green1 green2 \ green3 green4 chartreuse1 chartreuse2 chartreuse3 \ chartreuse4 OliveDrab1 OliveDrab2 OliveDrab3 OliveDrab4 \ DarkOliveGreen1 DarkOliveGreen2 DarkOliveGreen3 \ DarkOliveGreen4 khaki1 khaki2 khaki3 khaki4 \ LightGoldenrod1 LightGoldenrod2 LightGoldenrod3 \ LightGoldenrod4 LightYellow1 LightYellow2 LightYellow3 \ LightYellow4 yellow1 yellow2 yellow3 yellow4 gold1 gold2 \ gold3 gold4 goldenrod1 goldenrod2 goldenrod3 goldenrod4 \ DarkGoldenrod1 DarkGoldenrod2 DarkGoldenrod3 DarkGoldenrod4 \ RosyBrown1 RosyBrown2 RosyBrown3 RosyBrown4 IndianRed1 \ IndianRed2 IndianRed3 IndianRed4 sienna1 sienna2 sienna3 \ sienna4 burlywood1 burlywood2 burlywood3 burlywood4 wheat1 \ wheat2 wheat3 wheat4 tan1 tan2 tan3 tan4 chocolate1 \ chocolate2 chocolate3 chocolate4 firebrick1 firebrick2 \ firebrick3 firebrick4 brown1 brown2 brown3 brown4 salmon1 \ salmon2 salmon3 salmon4 LightSalmon1 LightSalmon2 \ LightSalmon3 LightSalmon4 orange1 orange2 orange3 orange4 \ DarkOrange1 DarkOrange2 DarkOrange3 DarkOrange4 coral1 \ coral2 coral3 coral4 tomato1 tomato2 tomato3 tomato4 \ OrangeRed1 OrangeRed2 OrangeRed3 OrangeRed4 red1 red2 red3 \ red4 DeepPink1 DeepPink2 DeepPink3 DeepPink4 HotPink1 \ HotPink2 HotPink3 HotPink4 pink1 pink2 pink3 pink4 \ LightPink1 LightPink2 LightPink3 LightPink4 PaleVioletRed1 \ PaleVioletRed2 PaleVioletRed3 PaleVioletRed4 maroon1 \ maroon2 maroon3 maroon4 VioletRed1 VioletRed2 VioletRed3 \ VioletRed4 magenta1 magenta2 magenta3 magenta4 orchid1 \ orchid2 orchid3 orchid4 plum1 plum2 plum3 plum4 \ MediumOrchid1 MediumOrchid2 MediumOrchid3 MediumOrchid4 \ DarkOrchid1 DarkOrchid2 DarkOrchid3 DarkOrchid4 purple1 \ purple2 purple3 purple4 MediumPurple1 MediumPurple2 \ MediumPurple3 MediumPurple4 thistle1 thistle2 thistle3 \ thistle4 bind $w.frame.list \ "$w.frame config -bg \[lindex \[selection get\] 0\] $w.msg config -bg \[lindex \[selection get\] 0\]" button $w.ok -text OK -command "destroy $w" pack append $w $w.msg {top fill} $w.frame {top expand fill} \ $w.ok {bottom fill} } micropolis-activity/src/tk/library/demos/README0000664000076400007640000000462710724145723021704 0ustar simcitysimcityThis directory contains a collection of programs to demonstrate the features of the Tk toolkit. The programs are all scripts for "wish", a windowing shell. If wish has been installed in /usr/local then you can invoke any of the programs in this directory just by typing its file name to your command shell. Otherwise invoke wish on the file using the "-f" switch to wish, e.g. "wish -f hello". The rest of this file contains a brief description of each program. Files with names ending in ".tcl" are procedure packages used by one or more of the demo programs; they can't be used as programs by themselves so they aren't described below. hello - Creates a single button; if you click on it, a message is typed and the application terminates. widget - Contains a collection of demonstrations of the widgets currently available in the Tk library. Most of the .tcl files are scripts for individual demos available through the "widget" program. ixset - A simple Tk-based wrapper for the "xset" program, which allows you to interactively query and set various X options such as mouse acceleration and bell volume. Thanks to Pierre David for contributing this example. rolodex - A mock-up of a simple rolodex application. It has much of the user interface for such an application but no back-end database. This program was written in response to Tom LaStrange's toolkit benchmark challenge. timer - Displays a seconds timer with start and stop buttons. Control-c and control-q cause it to exit. browse - A simple directory browser. Invoke it with and argument giving the name of the directory you'd like to browse. Double-click on files or subdirectories to browse them. Control-c and control-q cause the program to exit. dialog - Displays a simple dialog. Click on any button and the application exits. size - Takes three arguments: the name of an application, the name of a widget in that application, and the name of an integer-valued option for that widget. Allows you to interactively resize the given option. For example, start up the dialog demo, then type "size dialog .bot.middle -pady" for an example. color - Similar to "size", but modifies a color option. Try "color dialog .bot.middle -bg" for an example. tkSquare.c - A very simple widget to provide an example of how to implement a new widget. When building a new widget you may find it useful to start from this code. micropolis-activity/src/tk/library/demos/tclIndex0000664000076400007640000000272410724145723022515 0ustar simcitysimcity# Tcl autoload index file: each line identifies a Tcl # procedure and the file where that procedure is # defined. Generated by the "auto_mkindex" command. mkIcon mkIcon.tcl iconCmd mkIcon.tcl mkArrow mkArrow.tcl arrowSetup mkArrow.tcl arrowMove1 mkArrow.tcl arrowMove2 mkArrow.tcl arrowMove3 mkArrow.tcl mkBasic mkBasic.tcl mkRadio mkRadio.tcl mkCheck mkCheck.tcl mkDialog mkDialog.tcl mkEntry mkEntry.tcl mkLabel mkLabel.tcl mkItems mkItems.tcl itemEnter mkItems.tcl itemLeave mkItems.tcl itemMark mkItems.tcl itemStroke mkItems.tcl itemsUnderArea mkItems.tcl itemStartDrag mkItems.tcl itemDrag mkItems.tcl butPress mkItems.tcl mkButton mkButton.tcl mkStyles mkStyles.tcl insertWithTags mkStyles.tcl mkPlot mkPlot.tcl plotDown mkPlot.tcl plotMove mkPlot.tcl mkPuzzle mkPuzzle.tcl puzzle.switch mkPuzzle.tcl mkListbox mkListbox.tcl mkListbox2 mkListbox2.tcl mkListbox3 mkListbox3.tcl mkTear mkTear.tcl mkScroll mkScroll.tcl scrollEnter mkScroll.tcl scrollLeave mkScroll.tcl scrollButton mkScroll.tcl mkHScale mkHScale.tcl setWidth mkHScale.tcl mkVScale mkVScale.tcl setHeight mkVScale.tcl showVars showVars.tcl mkCanvText mkCanvText.tcl mkTextConfig mkCanvText.tcl textEnter mkCanvText.tcl textB1Press mkCanvText.tcl textB1Move mkCanvText.tcl textBs mkCanvText.tcl mkRuler mkRuler.tcl rulerMkTab mkRuler.tcl rulerNewTab mkRuler.tcl rulerMoveTab mkRuler.tcl demo_selectTab mkRuler.tcl rulerReleaseTab mkRuler.tcl mkTextBind mkTextBind.tcl insertWithTags mkTextBind.tcl mkEntry2 mkEntry2.tcl micropolis-activity/src/tk/library/demos/mkVScale.tcl0000664000076400007640000000234410724145723023227 0ustar simcitysimcity# mkVScale w # # Create a top-level window that displays a vertical scale. # # Arguments: # w - Name to use for new top-level window. proc mkVScale {{w .scale1}} { catch {destroy $w} toplevel $w dpos $w wm title $w "Vertical Scale Demonstration" wm iconname $w "Scale" message $w.msg -font -Adobe-times-medium-r-normal--*-180* -aspect 300 \ -text "A bar and a vertical scale are displayed below. If you click or drag mouse button 1 in the scale, you can change the height of the bar. Click the \"OK\" button when you're finished." frame $w.frame -borderwidth 10 pack append $w.frame \ [scale $w.frame.scale -orient vertical -length 280 -from 0 -to 250 \ -command "setHeight $w.frame.right.inner" -tickinterval 50 \ -bg Bisque1] {left expand frame ne} \ [frame $w.frame.right -borderwidth 15] {right expand frame nw} pack append $w.frame.right \ [frame $w.frame.right.inner -geometry 40x20 -relief raised \ -borderwidth 2 -bg SteelBlue1] {expand frame nw} $w.frame.scale set 20 button $w.ok -text OK -command "destroy $w" pack append $w $w.msg {top fill} $w.frame {top expand fill} \ $w.ok {bottom fill} } proc setHeight {w height} { $w config -geometry 40x${height} } micropolis-activity/src/tk/library/listbox.tcl0000664000076400007640000000222210724145723022072 0ustar simcitysimcity# listbox.tcl -- # # This file contains Tcl procedures used to manage Tk listboxes. # # $Header: /user6/ouster/wish/scripts/RCS/listbox.tcl,v 1.2 92/06/03 15:21:28 ouster Exp $ SPRITE (Berkeley) # # Copyright 1992 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # # The procedure below may be invoked to change the behavior of # listboxes so that only a single item may be selected at once. # The arguments give one or more windows whose behavior should # be changed; if one of the arguments is "Listbox" then the default # behavior is changed for all listboxes. proc tk_listboxSingleSelect args { foreach w $args { bind $w {%W select from [%W nearest %y]} bind $w {%W select from [%W nearest %y]} bind $w {%W select from [%W nearest %y]} } } micropolis-activity/src/tk/library/tkerror.tcl0000664000076400007640000000025610724145723022103 0ustar simcitysimcity# This file contains a default version of the tkError procedure. It # just prints out a stack trace. proc tkerror err { global errorInfo puts stdout "$errorInfo" } micropolis-activity/src/tk/library/text.tcl0000664000076400007640000000606410724145723021402 0ustar simcitysimcity# text.tcl -- # # This file contains Tcl procedures used to manage Tk entries. # # $Header: /user6/ouster/wish/scripts/RCS/text.tcl,v 1.2 92/07/16 16:26:33 ouster Exp $ SPRITE (Berkeley) # # Copyright 1992 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # # The procedure below is invoked when dragging one end of the selection. # The arguments are the text window name and the index of the character # that is to be the new end of the selection. proc tk_textSelectTo {w index} { global tk_priv case $tk_priv(selectMode) { char { if [$w compare $index < anchor] { set first $index set last anchor } else { set first anchor set last [$w index $index+1c] } } word { if [$w compare $index < anchor] { set first [$w index "$index wordstart"] set last [$w index "anchor wordend"] } else { set first [$w index "anchor wordstart"] set last [$w index "$index wordend"] } } line { if [$w compare $index < anchor] { set first [$w index "$index linestart"] set last [$w index "anchor lineend + 1c"] } else { set first [$w index "anchor linestart"] set last [$w index "$index lineend + 1c"] } } } $w tag remove sel 0.0 $first $w tag add sel $first $last $w tag remove sel $last end } # The procedure below is invoked to backspace over one character in # a text widget. The name of the widget is passed as argument. proc tk_textBackspace w { $w delete insert-1c insert } # The procedure below compares three indices, a, b, and c. Index b must # be less than c. The procedure returns 1 if a is closer to b than to c, # and 0 otherwise. The "w" argument is the name of the text widget in # which to do the comparison. proc tk_textIndexCloser {w a b c} { set a [$w index $a] set b [$w index $b] set c [$w index $c] if [$w compare $a <= $b] { return 1 } if [$w compare $a >= $c] { return 0 } scan $a "%d.%d" lineA chA scan $b "%d.%d" lineB chB scan $c "%d.%d" lineC chC if {$chC == 0} { incr lineC -1 set chC [string length [$w get $lineC.0 $lineC.end]] } if {$lineB != $lineC} { return [expr {($lineA-$lineB) < ($lineC-$lineA)}] } return [expr {($chA-$chB) < ($chC-$chA)}] } # The procedure below is called to reset the selection anchor to # whichever end is FARTHEST from the index argument. proc tk_textResetAnchor {w index} { global tk_priv if {[$w tag ranges sel] == ""} { set tk_priv(selectMode) char $w mark set anchor $index return } if [tk_textIndexCloser $w $index sel.first sel.last] { if {$tk_priv(selectMode) == "char"} { $w mark set anchor sel.last } else { $w mark set anchor sel.last-1c } } else { $w mark set anchor sel.first } } micropolis-activity/src/tk/library/menu.tcl0000664000076400007640000002151110724145723021354 0ustar simcitysimcity# menu.tcl -- # # This file contains Tcl procedures used to manage Tk menus and # menubuttons. Most of the code here is dedicated to support for # menu traversal via the keyboard. # # $Header: /user6/ouster/wish/scripts/RCS/menu.tcl,v 1.11 92/08/08 14:49:55 ouster Exp $ SPRITE (Berkeley) # # Copyright 1992 Regents of the University of California # Permission to use, copy, modify, and distribute this # software and its documentation for any purpose and without # fee is hereby granted, provided that this copyright # notice appears in all copies. The University of California # makes no representations about the suitability of this # software for any purpose. It is provided "as is" without # express or implied warranty. # # The procedure below is publically available. It is used to indicate # the menus associated with a particular top-level window, for purposes # of keyboard menu traversal. Its first argument is the path name of # a top-level window, and any additional arguments are the path names of # the menu buttons associated with that top-level window, in the order # they should be traversed. If no menu buttons are named, the procedure # returns the current list of menus for w. If a single empty string is # supplied, then the menu list for w is cancelled. Otherwise, tk_menus # sets the menu list for w to the menu buttons. proc tk_menus {w args} { global tk_priv if {$args == ""} { if [catch {set result [set tk_priv(menusFor$w)]}] { return "" } return $result } if {$args == "{}"} { catch {unset tk_priv(menusFor$w)} return "" } set tk_priv(menusFor$w) $args } # The procedure below is publically available. It takes any number of # arguments taht are names of widgets or classes. It sets up bindings # for the widgets or classes so that keyboard menu traversal is possible # when the input focus is in those widgets or classes. proc tk_bindForTraversal args { foreach w $args { bind $w {tk_traverseToMenu %W %A} bind $w {tk_firstMenu %W} } } # The procedure below does all of the work of posting a menu (including # unposting any other menu that might currently be posted). The "w" # argument is the name of the menubutton for the menu to be posted. # Note: if $w is disabled then the procedure does nothing. proc tk_mbPost {w} { global tk_priv tk_strictMotif if {[lindex [$w config -state] 4] == "disabled"} { return } set cur $tk_priv(posted) if {$cur == $w} { return } if {$cur != ""} tk_mbUnpost set tk_priv(relief) [lindex [$w config -relief] 4] $w config -relief raised set tk_priv(cursor) [lindex [$w config -cursor] 4] $w config -cursor arrow $w post grab -global $w set tk_priv(posted) $w if {$tk_priv(focus) == ""} { set tk_priv(focus) [focus] } set menu [lindex [$w config -menu] 4] set tk_priv(activeBg) [lindex [$menu config -activebackground] 4] set tk_priv(activeFg) [lindex [$menu config -activeforeground] 4] if $tk_strictMotif { $menu config -activebackground [lindex [$menu config -background] 4] $menu config -activeforeground [lindex [$menu config -foreground] 4] } focus $menu } # The procedure below does all the work of unposting the menubutton that's # currently posted. It takes no arguments. proc tk_mbUnpost {} { global tk_priv if {$tk_priv(posted) != ""} { $tk_priv(posted) config -relief $tk_priv(relief) $tk_priv(posted) config -cursor $tk_priv(cursor) $tk_priv(posted) config -activebackground $tk_priv(activeBg) $tk_priv(posted) config -activeforeground $tk_priv(activeFg) $tk_priv(posted) unpost # deh multi display bug fix # grab none set menu [lindex [$tk_priv(posted) config -menu] 4] grab -off $menu focus $tk_priv(focus) set tk_priv(focus) "" $menu config -activebackground $tk_priv(activeBg) $menu config -activeforeground $tk_priv(activeFg) set tk_priv(posted) {} } } # The procedure below is invoked to implement keyboard traversal to # a menu button. It takes two arguments: the name of a window where # a keystroke originated, and the ascii character that was typed. # This procedure finds a menu bar by looking upward for a top-level # window, then looking for a window underneath that named "menu". # Then it searches through all the subwindows of "menu" for a menubutton # with an underlined character matching char. If one is found, it # posts that menu. proc tk_traverseToMenu {w char} { global tk_priv if {$char == ""} { return } set char [string tolower $char] foreach mb [tk_getMenuButtons $w] { if {[winfo class $mb] == "Menubutton"} { set char2 [string index [lindex [$mb config -text] 4] \ [lindex [$mb config -underline] 4]] if {[string compare $char [string tolower $char2]] == 0} { tk_mbPost $mb [lindex [$mb config -menu] 4] activate 0 return } } } } # The procedure below is used to implement keyboard traversal within # the posted menu. It takes two arguments: the name of the menu to # be traversed within, and an ASCII character. It searches for an # entry in the menu that has that character underlined. If such an # entry is found, it is invoked and the menu is unposted. proc tk_traverseWithinMenu {w char} { if {$char == ""} { return } set char [string tolower $char] set last [$w index last] for {set i 0} {$i <= $last} {incr i} { if [catch {set char2 [string index \ [lindex [$w entryconfig $i -label] 4] \ [lindex [$w entryconfig $i -underline] 4]]}] { continue } if {[string compare $char [string tolower $char2]] == 0} { tk_mbUnpost $w invoke $i return } } } # The procedure below takes a single argument, which is the name of # a window. It returns a list containing path names for all of the # menu buttons associated with that window's top-level window, or an # empty list if there are none. proc tk_getMenuButtons w { global tk_priv set top [winfo toplevel $w] if [catch {set buttons [set tk_priv(menusFor$top)]}] { return "" } return $buttons } # The procedure below is used to traverse to the next or previous # menu in a menu bar. It takes one argument, which is a count of # how many menu buttons forward or backward (if negative) to move. # If there is no posted menu then this procedure has no effect. proc tk_nextMenu count { global tk_priv if {$tk_priv(posted) == ""} { return } set buttons [tk_getMenuButtons $tk_priv(posted)] set length [llength $buttons] for {set i 0} 1 {incr i} { if {$i >= $length} { return } if {[lindex $buttons $i] == $tk_priv(posted)} { break } } incr i $count while 1 { while {$i < 0} { incr i $length } while {$i >= $length} { incr i -$length } set mb [lindex $buttons $i] if {[lindex [$mb configure -state] 4] != "disabled"} { break } incr i $count } tk_mbUnpost tk_mbPost $mb [lindex [$mb config -menu] 4] activate 0 } # The procedure below is used to traverse to the next or previous entry # in the posted menu. It takes one argument, which is 1 to go to the # next entry or -1 to go to the previous entry. Disabled entries are # skipped in this process. proc tk_nextMenuEntry count { global tk_priv if {$tk_priv(posted) == ""} { return } set menu [lindex [$tk_priv(posted) config -menu] 4] set length [expr [$menu index last]+1] set i [$menu index active] if {$i == "none"} { set i 0 } else { incr i $count } while 1 { while {$i < 0} { incr i $length } while {$i >= $length} { incr i -$length } if {[catch {$menu entryconfigure $i -state} state] == 0} { if {[lindex $state 4] != "disabled"} { break } } incr i $count } $menu activate $i } # The procedure below invokes the active entry in the posted menu, # if there is one. Otherwise it does nothing. proc tk_invokeMenu {menu} { set i [$menu index active] if {$i != "none"} { tk_mbUnpost update idletasks $menu invoke $i } } # The procedure below is invoked to keyboard-traverse to the first # menu for a given source window. The source window is passed as # parameter. proc tk_firstMenu w { set mb [lindex [tk_getMenuButtons $w] 0] if {$mb != ""} { tk_mbPost $mb [lindex [$mb config -menu] 4] activate 0 } } # The procedure below is invoked when a button-1-down event is # received by a menu button. If the mouse is in the menu button # then it posts the button's menu. If the mouse isn't in the # button's menu, then it deactivates any active entry in the menu. # Remember, event-sharing can cause this procedure to be invoked # for two different menu buttons on the same event. proc tk_mbButtonDown w { global tk_priv if {[lindex [$w config -state] 4] == "disabled"} { return } if {$tk_priv(inMenuButton) == $w} { tk_mbPost $w } set menu [lindex [$tk_priv(posted) config -menu] 4] if {$tk_priv(window) != $menu} { $menu activate none } } micropolis-activity/src/tk/tktrig.c0000664000076400007640000007676110724145723017731 0ustar simcitysimcity/* * tkTrig.c -- * * This file contains a collection of trigonometry utility * routines that are used by Tk and in particular by the * canvas code. It also has miscellaneous geometry functions * used by canvases. * * Copyright 1992 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkTrig.c,v 1.8 92/08/24 09:24:14 ouster Exp $ SPRITE (Berkeley)"; #endif #include #include #include "tkconfig.h" #include "tkcanvas.h" #undef MIN #define MIN(a,b) (((a) < (b)) ? (a) : (b)) #undef MAX #define MAX(a,b) (((a) > (b)) ? (a) : (b)) #define PI 3.14159265358979323846 /* *-------------------------------------------------------------- * * TkLineToPoint -- * * Compute the distance from a point to a finite line segment. * * Results: * The return value is the distance from the line segment * whose end-points are *end1Ptr and *end2Ptr to the point * given by *pointPtr. * * Side effects: * None. * *-------------------------------------------------------------- */ double TkLineToPoint(end1Ptr, end2Ptr, pointPtr) double end1Ptr[2]; /* Coordinates of first end-point of line. */ double end2Ptr[2]; /* Coordinates of second end-point of line. */ double pointPtr[2]; /* Points to coords for point. */ { double x, y; /* * Compute the point on the line that is closest to the * point. This must be done separately for vertical edges, * horizontal edges, and other edges. */ if (end1Ptr[0] == end2Ptr[0]) { /* * Vertical edge. */ x = end1Ptr[0]; if (end1Ptr[1] >= end2Ptr[1]) { y = MIN(end1Ptr[1], pointPtr[1]); y = MAX(y, end2Ptr[1]); } else { y = MIN(end2Ptr[1], pointPtr[1]); y = MAX(y, end1Ptr[1]); } } else if (end1Ptr[1] == end2Ptr[1]) { /* * Horizontal edge. */ y = end1Ptr[1]; if (end1Ptr[0] >= end2Ptr[0]) { x = MIN(end1Ptr[0], pointPtr[0]); x = MAX(x, end2Ptr[0]); } else { x = MIN(end2Ptr[0], pointPtr[0]); x = MAX(x, end1Ptr[0]); } } else { double m1, b1, m2, b2; /* * The edge is neither horizontal nor vertical. Convert the * edge to a line equation of the form y = m1*x + b1. Then * compute a line perpendicular to this edge but passing * through the point, also in the form y = m2*x + b2. */ m1 = (end2Ptr[1] - end1Ptr[1])/(end2Ptr[0] - end1Ptr[0]); b1 = end1Ptr[1] - m1*end1Ptr[0]; m2 = -1.0/m1; b2 = pointPtr[1] - m2*pointPtr[0]; x = (b2 - b1)/(m1 - m2); y = m1*x + b1; if (end1Ptr[0] > end2Ptr[0]) { if (x > end1Ptr[0]) { x = end1Ptr[0]; y = end1Ptr[1]; } else if (x < end2Ptr[0]) { x = end2Ptr[0]; y = end2Ptr[1]; } } else { if (x > end2Ptr[0]) { x = end2Ptr[0]; y = end2Ptr[1]; } else if (x < end1Ptr[0]) { x = end1Ptr[0]; y = end1Ptr[1]; } } } /* * Compute the distance to the closest point. */ return hypot(pointPtr[0] - x, pointPtr[1] - y); } /* *-------------------------------------------------------------- * * TkLineToArea -- * * Determine whether a line lies entirely inside, entirely * outside, or overlapping a given rectangular area. * * Results: * -1 is returned if the line given by end1Ptr and end2Ptr * is entirely outside the rectangle given by rectPtr. 0 is * returned if the polygon overlaps the rectangle, and 1 is * returned if the polygon is entirely inside the rectangle. * * Side effects: * None. * *-------------------------------------------------------------- */ int TkLineToArea(end1Ptr, end2Ptr, rectPtr) double end1Ptr[2]; /* X and y coordinates for one endpoint * of line. */ double end2Ptr[2]; /* X and y coordinates for other endpoint * of line. */ double rectPtr[4]; /* Points to coords for rectangle, in the * order x1, y1, x2, y2. X1 must be no * larger than x2, and y1 no larger than y2. */ { int inside1, inside2; /* * First check the two points individually to see whether they * are inside the rectangle or not. */ inside1 = (end1Ptr[0] >= rectPtr[0]) && (end1Ptr[0] <= rectPtr[2]) && (end1Ptr[1] >= rectPtr[1]) && (end1Ptr[1] <= rectPtr[3]); inside2 = (end2Ptr[0] >= rectPtr[0]) && (end2Ptr[0] <= rectPtr[2]) && (end2Ptr[1] >= rectPtr[1]) && (end2Ptr[1] <= rectPtr[3]); if (inside1 != inside2) { return 0; } if (inside1 & inside2) { return 1; } /* * Both points are outside the rectangle, but still need to check * for intersections between the line and the rectangle. Horizontal * and vertical lines are particularly easy, so handle them * separately. */ if (end1Ptr[0] == end2Ptr[0]) { /* * Vertical line. */ if (((end1Ptr[1] >= rectPtr[1]) ^ (end2Ptr[1] >= rectPtr[1])) && (end1Ptr[0] >= rectPtr[0]) && (end1Ptr[0] <= rectPtr[2])) { return 0; } } else if (end1Ptr[1] == end2Ptr[1]) { /* * Horizontal line. */ if (((end1Ptr[0] >= rectPtr[0]) ^ (end2Ptr[0] >= rectPtr[0])) && (end1Ptr[1] >= rectPtr[1]) && (end1Ptr[1] <= rectPtr[3])) { return 0; } } else { double m, x, y, low, high; /* * Diagonal line. Compute slope of line and use * for intersection checks against each of the * sides of the rectangle: left, right, bottom, top. */ m = (end2Ptr[1] - end1Ptr[1])/(end2Ptr[0] - end1Ptr[0]); if (end1Ptr[0] < end2Ptr[0]) { low = end1Ptr[0]; high = end2Ptr[0]; } else { low = end2Ptr[0]; high = end1Ptr[0]; } /* * Left edge. */ y = end1Ptr[1] + (rectPtr[0] - end1Ptr[0])*m; if ((rectPtr[0] >= low) && (rectPtr[0] <= high) && (y >= rectPtr[1]) && (y <= rectPtr[3])) { return 0; } /* * Right edge. */ y += (rectPtr[2] - rectPtr[0])*m; if ((y >= rectPtr[1]) && (y <= rectPtr[3]) && (rectPtr[2] >= low) && (rectPtr[2] <= high)) { return 0; } /* * Bottom edge. */ if (end1Ptr[1] < end2Ptr[1]) { low = end1Ptr[1]; high = end2Ptr[1]; } else { low = end2Ptr[1]; high = end1Ptr[1]; } x = end1Ptr[0] + (rectPtr[1] - end1Ptr[1])/m; if ((x >= rectPtr[0]) && (x <= rectPtr[2]) && (rectPtr[1] >= low) && (rectPtr[1] <= high)) { return 0; } /* * Top edge. */ x += (rectPtr[3] - rectPtr[1])/m; if ((x >= rectPtr[0]) && (x <= rectPtr[2]) && (rectPtr[3] >= low) && (rectPtr[3] <= high)) { return 0; } } return -1; } /* *-------------------------------------------------------------- * * TkPolygonToPoint -- * * Compute the distance from a point to a polygon. * * Results: * The return value is 0.0 if the point referred to by * pointPtr is within the polygon referred to by polyPtr * and numPoints. Otherwise the return value is the * distance of the point from the polygon. * * Side effects: * None. * *-------------------------------------------------------------- */ double TkPolygonToPoint(polyPtr, numPoints, pointPtr) double *polyPtr; /* Points to an array coordinates for * closed polygon: x0, y0, x1, y1, ... * The polygon may be self-intersecting. */ int numPoints; /* Total number of points at *polyPtr. */ double *pointPtr; /* Points to coords for point. */ { double bestDist; /* Closest distance between point and * any edge in polygon. */ int intersections; /* Number of edges in the polygon that * intersect a ray extending vertically * upwards from the point to infinity. */ int count; register double *pPtr; /* * Iterate through all of the edges in the polygon, updating * bestDist and intersections. * * TRICKY POINT: when computing intersections, include left * x-coordinate of line within its range, but not y-coordinate. * Otherwise if the point lies exactly below a vertex we'll * count it as two intersections. */ bestDist = 1.0e40; intersections = 0; for (count = numPoints, pPtr = polyPtr; count > 1; count--, pPtr += 2) { double x, y, dist; /* * Compute the point on the current edge closest to the point * and update the intersection count. This must be done * separately for vertical edges, horizontal edges, and * other edges. */ if (pPtr[2] == pPtr[0]) { /* * Vertical edge. */ x = pPtr[0]; if (pPtr[1] >= pPtr[3]) { y = MIN(pPtr[1], pointPtr[1]); y = MAX(y, pPtr[3]); } else { y = MIN(pPtr[3], pointPtr[1]); y = MAX(y, pPtr[1]); } } else if (pPtr[3] == pPtr[1]) { /* * Horizontal edge. */ y = pPtr[1]; if (pPtr[0] >= pPtr[2]) { x = MIN(pPtr[0], pointPtr[0]); x = MAX(x, pPtr[2]); if ((pointPtr[1] < y) && (pointPtr[0] < pPtr[0]) && (pointPtr[0] >= pPtr[2])) { intersections++; } } else { x = MIN(pPtr[2], pointPtr[0]); x = MAX(x, pPtr[0]); if ((pointPtr[1] < y) && (pointPtr[0] < pPtr[2]) && (pointPtr[0] >= pPtr[0])) { intersections++; } } } else { double m1, b1, m2, b2; int lower; /* Non-zero means point below line. */ /* * The edge is neither horizontal nor vertical. Convert the * edge to a line equation of the form y = m1*x + b1. Then * compute a line perpendicular to this edge but passing * through the point, also in the form y = m2*x + b2. */ m1 = (pPtr[3] - pPtr[1])/(pPtr[2] - pPtr[0]); b1 = pPtr[1] - m1*pPtr[0]; m2 = -1.0/m1; b2 = pointPtr[1] - m2*pointPtr[0]; x = (b2 - b1)/(m1 - m2); y = m1*x + b1; if (pPtr[0] > pPtr[2]) { if (x > pPtr[0]) { x = pPtr[0]; y = pPtr[1]; } else if (x < pPtr[2]) { x = pPtr[2]; y = pPtr[3]; } } else { if (x > pPtr[2]) { x = pPtr[2]; y = pPtr[3]; } else if (x < pPtr[0]) { x = pPtr[0]; y = pPtr[1]; } } lower = (m1*pointPtr[0] + b1) > pointPtr[1]; if (lower && (pointPtr[0] >= MIN(pPtr[0], pPtr[2])) && (pointPtr[0] < MAX(pPtr[0], pPtr[2]))) { intersections++; } } /* * Compute the distance to the closest point, and see if that * is the best distance seen so far. */ dist = hypot(pointPtr[0] - x, pointPtr[1] - y); if (dist < bestDist) { bestDist = dist; } } /* * We've processed all of the points. If the number of intersections * is odd, the point is inside the polygon. */ if (intersections & 0x1) { return 0.0; } return bestDist; } /* *-------------------------------------------------------------- * * TkPolygonToArea -- * * Determine whether a polygon lies entirely inside, entirely * outside, or overlapping a given rectangular area. * * Results: * -1 is returned if the polygon given by polyPtr and numPoints * is entirely outside the rectangle given by rectPtr. 0 is * returned if the polygon overlaps the rectangle, and 1 is * returned if the polygon is entirely inside the rectangle. * * Side effects: * None. * *-------------------------------------------------------------- */ int TkPolygonToArea(polyPtr, numPoints, rectPtr) double *polyPtr; /* Points to an array coordinates for * closed polygon: x0, y0, x1, y1, ... * The polygon may be self-intersecting. */ int numPoints; /* Total number of points at *polyPtr. */ register double *rectPtr; /* Points to coords for rectangle, in the * order x1, y1, x2, y2. X1 and y1 must * be lower-left corner. */ { int state; /* State of all edges seen so far (-1 means * outside, 1 means inside, won't ever be * 0). */ int count; register double *pPtr; /* * Iterate over all of the edges of the polygon and test them * against the rectangle. Can quit as soon as the state becomes * "intersecting". */ state = TkLineToArea(polyPtr, polyPtr+2, rectPtr); if (state == 0) { return 0; } for (pPtr = polyPtr+2, count = numPoints-1; count >= 2; pPtr += 2, count--) { if (TkLineToArea(pPtr, pPtr+2, rectPtr) != state) { return 0; } } /* * If all of the edges were inside the rectangle we're done. * If all of the edges were outside, then the rectangle could * still intersect the polygon (if it's entirely enclosed). * Call TkPolygonToPoint to figure this out. */ if (state == 1) { return 1; } if (TkPolygonToPoint(polyPtr, numPoints, rectPtr) == 0.0) { return 0; } return -1; } /* *-------------------------------------------------------------- * * TkOvalToPoint -- * * Computes the distance from a given point to a given * oval, in canvas units. * * Results: * The return value is 0 if the point given by *pointPtr is * inside the oval. If the point isn't inside the * oval then the return value is approximately the distance * from the point to the oval. If the oval is filled, then * anywhere in the interior is considered "inside"; if * the oval isn't filled, then "inside" means only the area * occupied by the outline. * * Side effects: * None. * *-------------------------------------------------------------- */ /* ARGSUSED */ double TkOvalToPoint(ovalPtr, width, filled, pointPtr) double ovalPtr[4]; /* Pointer to array of four coordinates * (x1, y1, x2, y2) defining oval's bounding * box. */ double width; /* Width of outline for oval. */ int filled; /* Non-zero means oval should be treated as * filled; zero means only consider outline. */ double pointPtr[2]; /* Coordinates of point. */ { double xDelta, yDelta, scaledDistance, distToOutline, distToCenter; /* * Compute the distance between the center of the oval and the * point in question, using a coordinate system where the oval * has been transformed to a circle with unit radius. */ xDelta = (pointPtr[0] - (ovalPtr[0] + ovalPtr[2])/2.0); yDelta = (pointPtr[1] - (ovalPtr[1] + ovalPtr[3])/2.0); distToCenter = hypot(xDelta, yDelta); scaledDistance = hypot(xDelta / ((ovalPtr[2] + width - ovalPtr[0])/2.0), yDelta / ((ovalPtr[3] + width - ovalPtr[1])/2.0)); /* * If the scaled distance is greater than 1 then it means no * hit. Compute the distance from the point to the edge of * the circle, then scale this distance back to the original * coordinate system. * * Note: this distance isn't completely accurate. It's only * an approximation, and it can overestimate the correct * distance when the oval is eccentric. */ if (scaledDistance > 1.0) { return (distToCenter/scaledDistance) * (scaledDistance - 1.0); } /* * Scaled distance less than 1 means the point is inside the * outer edge of the oval. If this is a filled oval, then we * have a hit. Otherwise, do the same computation as above * (scale back to original coordinate system), but also check * to see if the point is within the width of the outline. */ if (filled) { return 0.0; } distToOutline = (distToCenter/scaledDistance) * (1.0 - scaledDistance) - width; if (distToOutline < 0.0) { return 0.0; } return distToOutline; } /* *-------------------------------------------------------------- * * TkOvalToArea -- * * Determine whether an oval lies entirely inside, entirely * outside, or overlapping a given rectangular area. * * Results: * -1 is returned if the oval described by ovalPtr is entirely * outside the rectangle given by rectPtr. 0 is returned if the * oval overlaps the rectangle, and 1 is returned if the oval * is entirely inside the rectangle. * * Side effects: * None. * *-------------------------------------------------------------- */ int TkOvalToArea(ovalPtr, rectPtr) register double *ovalPtr; /* Points to coordinates definining the * bounding rectangle for the oval: x1, y1, * x2, y2. X1 must be less than x2 and y1 * less than y2. */ register double *rectPtr; /* Points to coords for rectangle, in the * order x1, y1, x2, y2. X1 and y1 must * be lower-left corner. */ { double centerX, centerY, radX, radY, deltaX, deltaY; /* * First, see if oval is entirely inside rectangle or entirely * outside rectangle. */ if ((rectPtr[0] <= ovalPtr[0]) && (rectPtr[2] >= ovalPtr[2]) && (rectPtr[1] <= ovalPtr[1]) && (rectPtr[3] >= ovalPtr[3])) { return 1; } if ((rectPtr[2] < ovalPtr[0]) || (rectPtr[0] > ovalPtr[2]) || (rectPtr[3] < ovalPtr[1]) || (rectPtr[1] > ovalPtr[3])) { return -1; } /* * Next, go through the rectangle side by side. For each side * of the rectangle, find the point on the side that is closest * to the oval's center, and see if that point is inside the * oval. If at least one such point is inside the oval, then * the rectangle intersects the oval. */ centerX = (ovalPtr[0] + ovalPtr[2])/2; centerY = (ovalPtr[1] + ovalPtr[3])/2; radX = (ovalPtr[2] - ovalPtr[0])/2; radY = (ovalPtr[3] - ovalPtr[1])/2; deltaY = rectPtr[1] - centerY; if (deltaY < 0.0) { deltaY = centerY - rectPtr[3]; if (deltaY < 0.0) { deltaY = 0; } } deltaY /= radY; deltaY *= deltaY; /* * Left side: */ deltaX = (rectPtr[0] - centerX)/radX; deltaX *= deltaX; if ((deltaX + deltaY) <= 1.0) { return 0; } /* * Right side: */ deltaX = (rectPtr[2] - centerX)/radX; deltaX *= deltaX; if ((deltaX + deltaY) <= 1.0) { return 0; } deltaX = rectPtr[0] - centerX; if (deltaX < 0.0) { deltaX = centerX - rectPtr[2]; if (deltaX < 0.0) { deltaX = 0; } } deltaX /= radX; deltaX *= deltaX; /* * Bottom side: */ deltaY = (rectPtr[1] - centerY)/radY; deltaY *= deltaY; if ((deltaX + deltaY) < 1.0) { return 0; } /* * Top side: */ deltaY = (rectPtr[3] - centerY)/radY; deltaY *= deltaY; if ((deltaX + deltaY) < 1.0) { return 0; } return -1; } /* *-------------------------------------------------------------- * * TkIncludePoint -- * * Given a point and a generic canvas item header, expand * the item's bounding box if needed to include the point. * * Results: * None. * * Side effects: * The boudn. * *-------------------------------------------------------------- */ /* ARGSUSED */ void TkIncludePoint(canvasPtr, itemPtr, pointPtr) Tk_Canvas *canvasPtr; /* Canvas containing item. */ register Tk_Item *itemPtr; /* Item whose bounding box is * being calculated. */ double *pointPtr; /* Address of two doubles giving * x and y coordinates of point. */ { int tmp; tmp = pointPtr[0] + 0.5; if (tmp < itemPtr->x1) { itemPtr->x1 = tmp; } if (tmp > itemPtr->x2) { itemPtr->x2 = tmp; } tmp = pointPtr[1] + 0.5; if (tmp < itemPtr->y1) { itemPtr->y1 = tmp; } if (tmp > itemPtr->y2) { itemPtr->y2 = tmp; } } /* *-------------------------------------------------------------- * * TkBezierScreenPoints -- * * Given four control points, create a larger set of XPoints * for a Bezier spline based on the points. * * Results: * The array at *xPointPtr gets filled in with numSteps XPoints * corresponding to the Bezier spline defined by the four * control points. Note: no output point is generated for the * first input point, but an output point *is* generated for * the last input point. * * Side effects: * None. * *-------------------------------------------------------------- */ void TkBezierScreenPoints(canvasPtr, control, numSteps, xPointPtr) Tk_Canvas *canvasPtr; /* Canvas in which curve is to be * drawn. */ double control[]; /* Array of coordinates for four * control points: x0, y0, x1, y1, * ... x3 y3. */ int numSteps; /* Number of curve points to * generate. */ register XPoint *xPointPtr; /* Where to put new points. */ { int i; double u, u2, u3, t, t2, t3; for (i = 1; i <= numSteps; i++, xPointPtr++) { t = ((double) i)/((double) numSteps); t2 = t*t; t3 = t2*t; u = 1.0 - t; u2 = u*u; u3 = u2*u; xPointPtr->x = SCREEN_X(canvasPtr, (control[0]*u3 + 3.0 * (control[2]*t*u2 + control[4]*t2*u) + control[6]*t3)); xPointPtr->y = SCREEN_Y(canvasPtr, (control[1]*u3 + 3.0 * (control[3]*t*u2 + control[5]*t2*u) + control[7]*t3)); } } /* *-------------------------------------------------------------- * * TkBezierPoints -- * * Given four control points, create a larger set of points * for a Bezier spline based on the points. * * Results: * The array at *coordPtr gets filled in with 2*numSteps * coordinates, which correspond to the Bezier spline defined * by the four control points. Note: no output point is * generated for the first input point, but an output point * *is* generated for the last input point. * * Side effects: * None. * *-------------------------------------------------------------- */ void TkBezierPoints(control, numSteps, coordPtr) double control[]; /* Array of coordinates for four * control points: x0, y0, x1, y1, * ... x3 y3. */ int numSteps; /* Number of curve points to * generate. */ register double *coordPtr; /* Where to put new points. */ { int i; double u, u2, u3, t, t2, t3; for (i = 1; i <= numSteps; i++, coordPtr += 2) { t = ((double) i)/((double) numSteps); t2 = t*t; t3 = t2*t; u = 1.0 - t; u2 = u*u; u3 = u2*u; coordPtr[0] = control[0]*u3 + 3.0 * (control[2]*t*u2 + control[4]*t2*u) + control[6]*t3; coordPtr[1] = control[1]*u3 + 3.0 * (control[3]*t*u2 + control[5]*t2*u) + control[7]*t3; } } /* *-------------------------------------------------------------- * * TkMakeBezierCurve -- * * Given a set of points, create a new set of points that * fit Bezier splines to the line segments connecting the * original points. Produces output points in either of two * forms. * * Results: * Either or both of the xPoints or dblPoints arrays are filled * in. The return value is the number of points placed in the * arrays. Note: if the first and last points are the same, then * a closed curve is generated. * * Side effects: * None. * *-------------------------------------------------------------- */ int TkMakeBezierCurve(canvasPtr, pointPtr, numPoints, numSteps, xPoints, dblPoints) Tk_Canvas *canvasPtr; /* Canvas in which curve is to be * drawn. */ double *pointPtr; /* Array of input coordinates: x0, * y0, x1, y1, etc.. */ int numPoints; /* Number of points at pointPtr. */ int numSteps; /* Number of steps to use for each * spline segments (determines * smoothness of curve). */ XPoint xPoints[]; /* Array of XPoints to fill in (e.g. * for display. NULL means don't * fill in any XPoints. */ double dblPoints[]; /* Array of points to fill in as * doubles, in the form x0, y0, * x1, y1, .... NULL means don't * fill in anything in this form. * Caller must make sure that this * array has enough space. */ { int closed, outputPoints, i; int numCoords = numPoints*2; double control[8]; /* * If the curve is a closed one then generate a special spline * that spans the last points and the first ones. Otherwise * just put the first point into the output. */ outputPoints = 0; if ((pointPtr[0] == pointPtr[numCoords-2]) && (pointPtr[1] == pointPtr[numCoords-1])) { closed = 1; control[0] = 0.5*pointPtr[numCoords-4] + 0.5*pointPtr[0]; control[1] = 0.5*pointPtr[numCoords-3] + 0.5*pointPtr[1]; control[2] = 0.167*pointPtr[numCoords-4] + 0.833*pointPtr[0]; control[3] = 0.167*pointPtr[numCoords-3] + 0.833*pointPtr[1]; control[4] = 0.833*pointPtr[0] + 0.167*pointPtr[2]; control[5] = 0.833*pointPtr[1] + 0.167*pointPtr[3]; control[6] = 0.5*pointPtr[0] + 0.5*pointPtr[2]; control[7] = 0.5*pointPtr[1] + 0.5*pointPtr[3]; if (xPoints != NULL) { xPoints->x = SCREEN_X(canvasPtr, control[0]); xPoints->y = SCREEN_Y(canvasPtr, control[1]); TkBezierScreenPoints(canvasPtr, control, numSteps, xPoints+1); xPoints += numSteps+1; } if (dblPoints != NULL) { dblPoints[0] = control[0]; dblPoints[1] = control[1]; TkBezierPoints(control, numSteps, dblPoints+2); dblPoints += 2*(numSteps+1); } outputPoints += numSteps+1; } else { closed = 0; if (xPoints != NULL) { xPoints->x = SCREEN_X(canvasPtr, pointPtr[0]); xPoints->y = SCREEN_Y(canvasPtr, pointPtr[1]); xPoints += 1; } if (dblPoints != NULL) { dblPoints[0] = pointPtr[0]; dblPoints[1] = pointPtr[1]; dblPoints += 2; } outputPoints += 1; } for (i = 2; i < numPoints; i++, pointPtr += 2) { /* * Set up the first two control points. This is done * differently for the first spline of an open curve * than for other cases. */ if ((i == 2) && !closed) { control[0] = pointPtr[0]; control[1] = pointPtr[1]; control[2] = 0.333*pointPtr[0] + 0.667*pointPtr[2]; control[3] = 0.333*pointPtr[1] + 0.667*pointPtr[3]; } else { control[0] = 0.5*pointPtr[0] + 0.5*pointPtr[2]; control[1] = 0.5*pointPtr[1] + 0.5*pointPtr[3]; control[2] = 0.167*pointPtr[0] + 0.833*pointPtr[2]; control[3] = 0.167*pointPtr[1] + 0.833*pointPtr[3]; } /* * Set up the last two control points. This is done * differently for the last spline of an open curve * than for other cases. */ if ((i == (numPoints-1)) && !closed) { control[4] = .667*pointPtr[2] + .333*pointPtr[4]; control[5] = .667*pointPtr[3] + .333*pointPtr[5]; control[6] = pointPtr[4]; control[7] = pointPtr[5]; } else { control[4] = .833*pointPtr[2] + .167*pointPtr[4]; control[5] = .833*pointPtr[3] + .167*pointPtr[5]; control[6] = 0.5*pointPtr[2] + 0.5*pointPtr[4]; control[7] = 0.5*pointPtr[3] + 0.5*pointPtr[5]; } /* * If the first two points coincide, or if the last * two points coincide, then generate a single * straight-line segment by outputting the last control * point. */ if (((pointPtr[0] == pointPtr[2]) && (pointPtr[1] == pointPtr[3])) || ((pointPtr[2] == pointPtr[4]) && (pointPtr[3] == pointPtr[5]))) { if (xPoints != NULL) { xPoints[0].x = SCREEN_X(canvasPtr, control[6]); xPoints[0].y = SCREEN_Y(canvasPtr, control[7]); xPoints++; } if (dblPoints != NULL) { dblPoints[0] = control[6]; dblPoints[1] = control[7]; dblPoints += 2; } outputPoints += 1; continue; } /* * Generate a Bezier spline using the control points. */ if (xPoints != NULL) { TkBezierScreenPoints(canvasPtr, control, numSteps, xPoints); xPoints += numSteps; } if (dblPoints != NULL) { TkBezierPoints(control, numSteps, dblPoints); dblPoints += 2*numSteps; } outputPoints += numSteps; } return outputPoints; } /* *-------------------------------------------------------------- * * TkGetMiterPoints -- * * Given three points forming an angle, compute the * coordinates of the inside and outside points of * the mitered corner formed by a line of a given * width at that angle. * * Results: * If the angle formed by the three points is less than * 11 degrees then 0 is returned and m1 and m2 aren't * modified. Otherwise 1 is returned and the points at * m1 and m2 are filled in with the positions of the points * of the mitered corner. * * Side effects: * None. * *-------------------------------------------------------------- */ int TkGetMiterPoints(p1, p2, p3, width, m1, m2) double p1[]; /* Points to x- and y-coordinates of point * before vertex. */ double p2[]; /* Points to x- and y-coordinates of vertex * for mitered joint. */ double p3[]; /* Points to x- and y-coordinates of point * after vertex. */ double width; /* Width of line. */ double m1[]; /* Points to place to put "left" vertex * point (see as you face from p1 to p2). */ double m2[]; /* Points to place to put "right" vertex * point. */ { double theta1; /* Angle of segment p2-p1. */ double theta2; /* Angle of segment p2-p3. */ double theta; /* Angle between line segments (angle * of joint). */ double theta3; /* Angle that bisects theta1 and * theta2 and points to m1. */ double dist; /* Distance of miter points from p2. */ double deltaX, deltaY; /* X and y offsets cooresponding to * dist (fudge factors for bounding * box). */ static float elevenDegrees = (11.0*2.0*PI)/360.0; if (p2[1] == p1[1]) { theta1 = (p2[0] < p1[0]) ? 0 : PI; } else if (p2[0] == p1[0]) { theta1 = (p2[1] < p1[1]) ? PI/2.0 : -PI/2.0; } else { theta1 = atan2(p1[1] - p2[1], p1[0] - p2[0]); } if (p3[1] == p2[1]) { theta2 = (p3[0] > p2[0]) ? 0 : PI; } else if (p3[0] == p2[0]) { theta2 = (p3[1] > p2[1]) ? PI/2.0 : -PI/2.0; } else { theta2 = atan2(p3[1] - p2[1], p3[0] - p2[0]); } theta = theta1 - theta2; if (theta > PI) { theta -= 2*PI; } else if (theta < -PI) { theta += 2*PI; } if ((theta < elevenDegrees) && (theta > -elevenDegrees)) { return 0; } dist = 0.5*width/sin(0.5*theta); if (dist < 0.0) { dist = -dist; } /* * Compute theta3 (make sure that it points to the left when * looking from p1 to p2). */ theta3 = (theta1 + theta2)/2.0; if (sin(theta3 - (theta1 + PI)) < 0.0) { theta3 += PI; } deltaX = dist*cos(theta3); m1[0] = p2[0] + deltaX; m2[0] = p2[0] - deltaX; deltaY = dist*sin(theta3); m1[1] = p2[1] + deltaY; m2[1] = p2[1] - deltaY; return 1; } /* *-------------------------------------------------------------- * * TkGetButtPoints -- * * Given two points forming a line segment, compute the * coordinates of two endpoints of a rectangle formed by * bloating the line segment until it is width units wide. * * Results: * There is no return value. M1 and m2 are filled in to * correspond to m1 and m2 in the diagram below: * * ----------------* m1 * | * p1 *---------------* p2 * | * ----------------* m2 * * M1 and m2 will be W units apart, with p2 centered between * them and m1-m2 perpendicular to p1-p2. However, if * "project" is true then m1 and m2 will be as follows: * * -------------------* m1 * p2 | * p1 *---------------* | * | * -------------------* m2 * * In this case p2 will be width/2 units from the segment m1-m2. * * Side effects: * None. * *-------------------------------------------------------------- */ void TkGetButtPoints(p1, p2, width, project, m1, m2) double p1[]; /* Points to x- and y-coordinates of point * before vertex. */ double p2[]; /* Points to x- and y-coordinates of vertex * for mitered joint. */ double width; /* Width of line. */ int project; /* Non-zero means project p2 by an additional * width/2 before computing m1 and m2. */ double m1[]; /* Points to place to put "left" result * point, as you face from p1 to p2. */ double m2[]; /* Points to place to put "right" result * point. */ { double length; /* Length of p1-p2 segment. */ double deltaX, deltaY; /* Increments in coords. */ width *= 0.5; length = hypot(p2[0] - p1[0], p2[1] - p1[1]); if (length == 0.0) { m1[0] = m2[0] = p2[0]; m1[1] = m2[1] = p2[1]; } else { deltaX = -width * (p2[1] - p1[1]) / length; deltaY = width * (p2[0] - p1[0]) / length; m1[0] = p2[0] + deltaX; m2[0] = p2[0] - deltaX; m1[1] = p2[1] + deltaY; m2[1] = p2[1] - deltaY; if (project) { m1[0] += deltaY; m2[0] += deltaY; m1[1] -= deltaX; m2[1] -= deltaX; } } } micropolis-activity/src/tk/tkconfig.c0000664000076400007640000005446210724145723020223 0ustar simcitysimcity/* * tkConfig.c -- * * This file contains the Tk_ConfigureWidget procedure. * * Copyright 1990-1992 Regents of the University of California. * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkConfig.c,v 1.28 92/07/25 15:52:26 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tkconfig.h" #include "tk.h" /* * Values for "flags" field of Tk_ConfigSpec structures. Be sure * to coordinate these values with those defined in tk.h * (TK_CONFIG_COLOR_ONLY, etc.). There must not be overlap! * * INIT - Non-zero means (char *) things have been * converted to Tk_Uid's. */ #define INIT 0x20 /* * Forward declarations for procedures defined later in this file: */ static int DoConfig _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, Tk_ConfigSpec *specPtr, Tk_Uid value, int valueIsUid, char *widgRec)); static Tk_ConfigSpec * FindConfigSpec _ANSI_ARGS_ ((Tcl_Interp *interp, Tk_ConfigSpec *specs, char *argvName, int needFlags, int hateFlags)); static char * FormatConfigInfo _ANSI_ARGS_ ((Tk_Window tkwin, Tk_ConfigSpec *specPtr, char *widgRec)); /* *-------------------------------------------------------------- * * Tk_ConfigureWidget -- * * Process command-line options and database options to * fill in fields of a widget record with resources and * other parameters. * * Results: * A standard Tcl return value. In case of an error, * interp->result will hold an error message. * * Side effects: * The fields of widgRec get filled in with information * from argc/argv and the option database. Old information * in widgRec's fields gets recycled. * *-------------------------------------------------------------- */ int Tk_ConfigureWidget(interp, tkwin, specs, argc, argv, widgRec, flags) Tcl_Interp *interp; /* Interpreter for error reporting. */ Tk_Window tkwin; /* Window containing widget (needed to * set up X resources). */ Tk_ConfigSpec *specs; /* Describes legal options. */ int argc; /* Number of elements in argv. */ char **argv; /* Command-line options. */ char *widgRec; /* Record whose fields are to be * modified. Values must be properly * initialized. */ int flags; /* Used to specify additional flags * that must be present in config specs * for them to be considered. Also, * may have TK_CONFIG_ARGV_ONLY set. */ { register Tk_ConfigSpec *specPtr; Tk_Uid value; /* Value of option from database. */ int needFlags; /* Specs must contain this set of flags * or else they are not considered. */ int hateFlags; /* If a spec contains any bits here, it's * not considered. */ needFlags = flags & ~(TK_CONFIG_USER_BIT - 1); if (Tk_DefaultDepth(Tk_Screen(tkwin)) == 1) { hateFlags = TK_CONFIG_COLOR_ONLY; } else { hateFlags = TK_CONFIG_MONO_ONLY; } /* * Pass one: scan through all the option specs, replacing strings * with Tk_Uids (if this hasn't been done already) and clearing * the TK_CONFIG_OPTION_SPECIFIED flags. */ for (specPtr = specs; specPtr->type != TK_CONFIG_END; specPtr++) { if (!(specPtr->specFlags & INIT) && (specPtr->argvName != NULL)) { if (specPtr->dbName != NULL) { specPtr->dbName = Tk_GetUid(specPtr->dbName); } if (specPtr->dbClass != NULL) { specPtr->dbClass = Tk_GetUid(specPtr->dbClass); } if (specPtr->defValue != NULL) { specPtr->defValue = Tk_GetUid(specPtr->defValue); } } specPtr->specFlags = (specPtr->specFlags & ~TK_CONFIG_OPTION_SPECIFIED) | INIT; } /* * Pass two: scan through all of the arguments, processing those * that match entries in the specs. */ for ( ; argc > 0; argc -= 2, argv += 2) { specPtr = FindConfigSpec(interp, specs, *argv, needFlags, hateFlags); if (specPtr == NULL) { return TCL_ERROR; } /* * Process the entry. */ if (argc < 2) { Tcl_AppendResult(interp, "value for \"", *argv, "\" missing", (char *) NULL); return TCL_ERROR; } if (DoConfig(interp, tkwin, specPtr, argv[1], 0, widgRec) != TCL_OK) { char msg[100]; sprintf(msg, "\n (processing \"%.40s\" option)", specPtr->argvName); Tcl_AddErrorInfo(interp, msg); return TCL_ERROR; } specPtr->specFlags |= TK_CONFIG_OPTION_SPECIFIED; } /* * Pass three: scan through all of the specs again; if no * command-line argument matched a spec, then check for info * in the option database. If there was nothing in the * database, then use the default. */ if (!(flags & TK_CONFIG_ARGV_ONLY)) { for (specPtr = specs; specPtr->type != TK_CONFIG_END; specPtr++) { if ((specPtr->specFlags & TK_CONFIG_OPTION_SPECIFIED) || (specPtr->argvName == NULL) || (specPtr->type == TK_CONFIG_SYNONYM)) { continue; } if (((specPtr->specFlags & needFlags) != needFlags) || (specPtr->specFlags & hateFlags)) { continue; } value = NULL; if (specPtr->dbName != NULL) { value = Tk_GetOption(tkwin, specPtr->dbName, specPtr->dbClass); } if (value != NULL) { if (DoConfig(interp, tkwin, specPtr, value, 1, widgRec) != TCL_OK) { char msg[200]; sprintf(msg, "\n (%s \"%.50s\" in widget \"%.50s\")", "database entry for", specPtr->dbName, Tk_PathName(tkwin)); Tcl_AddErrorInfo(interp, msg); return TCL_ERROR; } } else { value = specPtr->defValue; if ((value != NULL) && !(specPtr->specFlags & TK_CONFIG_DONT_SET_DEFAULT)) { if (DoConfig(interp, tkwin, specPtr, value, 1, widgRec) != TCL_OK) { char msg[200]; sprintf(msg, "\n (%s \"%.50s\" in widget \"%.50s\")", "default value for", specPtr->dbName, Tk_PathName(tkwin)); Tcl_AddErrorInfo(interp, msg); return TCL_ERROR; } } } } } return TCL_OK; } /* *-------------------------------------------------------------- * * FindConfigSpec -- * * Search through a table of configuration specs, looking for * one that matches a given argvName. * * Results: * The return value is a pointer to the matching entry, or NULL * if nothing matched. In that case an error message is left * in interp->result. * * Side effects: * None. * *-------------------------------------------------------------- */ static Tk_ConfigSpec * FindConfigSpec(interp, specs, argvName, needFlags, hateFlags) Tcl_Interp *interp; /* Used for reporting errors. */ Tk_ConfigSpec *specs; /* Pointer to table of configuration * specifications for a widget. */ char *argvName; /* Name (suitable for use in a "config" * command) identifying particular option. */ int needFlags; /* Flags that must be present in matching * entry. */ int hateFlags; /* Flags that must NOT be present in * matching entry. */ { register Tk_ConfigSpec *specPtr; register char c; /* First character of current argument. */ Tk_ConfigSpec *matchPtr; /* Matching spec, or NULL. */ int length; c = argvName[1]; length = strlen(argvName); matchPtr = NULL; for (specPtr = specs; specPtr->type != TK_CONFIG_END; specPtr++) { if (specPtr->argvName == NULL) { continue; } if ((specPtr->argvName[1] != c) || (strncmp(specPtr->argvName, argvName, length) != 0)) { continue; } if (((specPtr->specFlags & needFlags) != needFlags) || (specPtr->specFlags & hateFlags)) { continue; } if (specPtr->argvName[length] == 0) { matchPtr = specPtr; goto gotMatch; } if (matchPtr != NULL) { Tcl_AppendResult(interp, "ambiguous option \"", argvName, "\"", (char *) NULL); return (Tk_ConfigSpec *) NULL; } matchPtr = specPtr; } if (matchPtr == NULL) { Tcl_AppendResult(interp, "unknown option \"", argvName, "\"", (char *) NULL); return (Tk_ConfigSpec *) NULL; } /* * Found a matching entry. If it's a synonym, then find the * entry that it's a synonym for. */ gotMatch: specPtr = matchPtr; if (specPtr->type == TK_CONFIG_SYNONYM) { for (specPtr = specs; ; specPtr++) { if (specPtr->type == TK_CONFIG_END) { Tcl_AppendResult(interp, "couldn't find synonym for option \"", argvName, "\"", (char *) NULL); return (Tk_ConfigSpec *) NULL; } if ((specPtr->dbName == matchPtr->dbName) && (specPtr->type != TK_CONFIG_SYNONYM) && ((specPtr->specFlags & needFlags) == needFlags) && !(specPtr->specFlags & hateFlags)) { break; } } } return specPtr; } /* *-------------------------------------------------------------- * * DoConfig -- * * This procedure applies a single configuration option * to a widget record. * * Results: * A standard Tcl return value. * * Side effects: * WidgRec is modified as indicated by specPtr and value. * The old value is recycled, if that is appropriate for * the value type. * *-------------------------------------------------------------- */ static int DoConfig(interp, tkwin, specPtr, value, valueIsUid, widgRec) Tcl_Interp *interp; /* Interpreter for error reporting. */ Tk_Window tkwin; /* Window containing widget (needed to * set up X resources). */ Tk_ConfigSpec *specPtr; /* Specifier to apply. */ char *value; /* Value to use to fill in widgRec. */ int valueIsUid; /* Non-zero means value is a Tk_Uid; * zero means it's an ordinary string. */ char *widgRec; /* Record whose fields are to be * modified. Values must be properly * initialized. */ { char *ptr; Tk_Uid uid; int nullValue; nullValue = 0; if ((*value == 0) && (specPtr->specFlags & TK_CONFIG_NULL_OK)) { nullValue = 1; } do { ptr = widgRec + specPtr->offset; switch (specPtr->type) { case TK_CONFIG_BOOLEAN: if (Tcl_GetBoolean(interp, value, (int *) ptr) != TCL_OK) { return TCL_ERROR; } break; case TK_CONFIG_INT: if (Tcl_GetInt(interp, value, (int *) ptr) != TCL_OK) { return TCL_ERROR; } break; case TK_CONFIG_DOUBLE: if (Tcl_GetDouble(interp, value, (double *) ptr) != TCL_OK) { return TCL_ERROR; } break; case TK_CONFIG_STRING: { char *old, *new; if (nullValue) { new = NULL; } else { new = (char *) ckalloc((unsigned) (strlen(value) + 1)); strcpy(new, value); } old = *((char **) ptr); if (old != NULL) { ckfree(old); } *((char **) ptr) = new; break; } case TK_CONFIG_UID: if (nullValue) { *((Tk_Uid *) ptr) = NULL; } else { uid = valueIsUid ? (Tk_Uid) value : Tk_GetUid(value); *((Tk_Uid *) ptr) = uid; } break; case TK_CONFIG_COLOR: { XColor *newPtr, *oldPtr; if (nullValue) { newPtr = NULL; } else { uid = valueIsUid ? (Tk_Uid) value : Tk_GetUid(value); newPtr = Tk_GetColor(interp, tkwin, (Colormap) None, uid); if (newPtr == NULL) { return TCL_ERROR; } } oldPtr = *((XColor **) ptr); if (oldPtr != NULL) { Tk_FreeColor(oldPtr); } *((XColor **) ptr) = newPtr; break; } case TK_CONFIG_FONT: { XFontStruct *newPtr, *oldPtr; if (nullValue) { newPtr = NULL; } else { uid = valueIsUid ? (Tk_Uid) value : Tk_GetUid(value); newPtr = Tk_GetFontStruct(interp, tkwin, uid); if (newPtr == NULL) { return TCL_ERROR; } } oldPtr = *((XFontStruct **) ptr); if (oldPtr != NULL) { Tk_FreeFontStruct(oldPtr); } *((XFontStruct **) ptr) = newPtr; break; } case TK_CONFIG_BITMAP: { Pixmap new, old; if (nullValue) { new = None; } else { uid = valueIsUid ? (Tk_Uid) value : Tk_GetUid(value); new = Tk_GetBitmap(interp, tkwin, uid); if (new == None) { return TCL_ERROR; } } old = *((Pixmap *) ptr); if (old != None) { Tk_FreeBitmap(old); } *((Pixmap *) ptr) = new; break; } #if defined(USE_XPM3) case TK_CONFIG_PIXMAP: { Pixmap new, old; if (nullValue) { new = None; } else { uid = valueIsUid ? (Tk_Uid) value : Tk_GetUid(value); new = Tk_GetPixmap(interp, tkwin, uid); if (new == None) { return TCL_ERROR; } } old = *((Pixmap *) ptr); if (old != None) { Tk_FreePixmap(old); } *((Pixmap *) ptr) = new; break; } #endif case TK_CONFIG_BORDER: { Tk_3DBorder new, old; if (nullValue) { new = NULL; } else { uid = valueIsUid ? (Tk_Uid) value : Tk_GetUid(value); new = Tk_Get3DBorder(interp, tkwin, (Colormap) None, uid); if (new == NULL) { return TCL_ERROR; } } old = *((Tk_3DBorder *) ptr); if (old != NULL) { Tk_Free3DBorder(old); } *((Tk_3DBorder *) ptr) = new; break; } case TK_CONFIG_RELIEF: uid = valueIsUid ? (Tk_Uid) value : Tk_GetUid(value); if (Tk_GetRelief(interp, uid, (int *) ptr) != TCL_OK) { return TCL_ERROR; } break; case TK_CONFIG_CURSOR: case TK_CONFIG_ACTIVE_CURSOR: { Cursor new, old; if (nullValue) { new = None; } else { uid = valueIsUid ? (Tk_Uid) value : Tk_GetUid(value); new = Tk_GetCursor(interp, tkwin, uid); if (new == None) { return TCL_ERROR; } } old = *((Cursor *) ptr); if (old != None) { Tk_FreeCursor(old); } *((Cursor *) ptr) = new; if (specPtr->type == TK_CONFIG_ACTIVE_CURSOR) { Tk_DefineCursor(tkwin, new); } break; } case TK_CONFIG_JUSTIFY: uid = valueIsUid ? (Tk_Uid) value : Tk_GetUid(value); if (Tk_GetJustify(interp, uid, (Tk_Justify *) ptr) != TCL_OK) { return TCL_ERROR; } break; case TK_CONFIG_ANCHOR: uid = valueIsUid ? (Tk_Uid) value : Tk_GetUid(value); if (Tk_GetAnchor(interp, uid, (Tk_Anchor *) ptr) != TCL_OK) { return TCL_ERROR; } break; case TK_CONFIG_CAP_STYLE: uid = valueIsUid ? (Tk_Uid) value : Tk_GetUid(value); if (Tk_GetCapStyle(interp, uid, (int *) ptr) != TCL_OK) { return TCL_ERROR; } break; case TK_CONFIG_JOIN_STYLE: uid = valueIsUid ? (Tk_Uid) value : Tk_GetUid(value); if (Tk_GetJoinStyle(interp, uid, (int *) ptr) != TCL_OK) { return TCL_ERROR; } break; case TK_CONFIG_PIXELS: if (Tk_GetPixels(interp, tkwin, value, (int *) ptr) != TCL_OK) { return TCL_ERROR; } break; case TK_CONFIG_MM: if (Tk_GetScreenMM(interp, tkwin, value, (double *) ptr) != TCL_OK) { return TCL_ERROR; } break; case TK_CONFIG_WINDOW: { Tk_Window tkwin2; if (nullValue) { tkwin2 = NULL; } else { tkwin2 = Tk_NameToWindow(interp, value, tkwin); if (tkwin2 == NULL) { return TCL_ERROR; } } *((Tk_Window *) ptr) = tkwin2; break; } case TK_CONFIG_CUSTOM: if ((*specPtr->customPtr->parseProc)( specPtr->customPtr->clientData, interp, tkwin, value, widgRec, specPtr->offset) != TCL_OK) { return TCL_ERROR; } break; default: { sprintf(interp->result, "bad config table: unknown type %d", specPtr->type); return TCL_ERROR; } } specPtr++; } while ((specPtr->argvName == NULL) && (specPtr->type != TK_CONFIG_END)); return TCL_OK; } /* *-------------------------------------------------------------- * * Tk_ConfigureInfo -- * * Return information about the configuration options * for a window, and their current values. * * Results: * Always returns TCL_OK. Interp->result will be modified * hold a description of either a single configuration option * available for "widgRec" via "specs", or all the configuration * options available. In the "all" case, the result will * available for "widgRec" via "specs". The result will * be a list, each of whose entries describes one option. * Each entry will itself be a list containing the option's * name for use on command lines, database name, database * class, default value, and current value (empty string * if none). For options that are synonyms, the list will * contain only two values: name and synonym name. If the * "name" argument is non-NULL, then the only information * returned is that for the named argument (i.e. the corresponding * entry in the overall list is returned). * * Side effects: * None. * *-------------------------------------------------------------- */ int Tk_ConfigureInfo(interp, tkwin, specs, widgRec, argvName, flags) Tcl_Interp *interp; /* Interpreter for error reporting. */ Tk_Window tkwin; /* Window corresponding to widgRec. */ Tk_ConfigSpec *specs; /* Describes legal options. */ char *widgRec; /* Record whose fields contain current * values for options. */ char *argvName; /* If non-NULL, indicates a single option * whose info is to be returned. Otherwise * info is returned for all options. */ int flags; /* Used to specify additional flags * that must be present in config specs * for them to be considered. */ { register Tk_ConfigSpec *specPtr; int needFlags, hateFlags; char *list; char *leader = "{"; needFlags = flags & ~(TK_CONFIG_USER_BIT - 1); if (Tk_DefaultDepth(Tk_Screen(tkwin)) == 1) { hateFlags = TK_CONFIG_COLOR_ONLY; } else { hateFlags = TK_CONFIG_MONO_ONLY; } /* * If information is only wanted for a single configuration * spec, then handle that one spec specially. */ Tcl_SetResult(interp, (char *) NULL, TCL_STATIC); if (argvName != NULL) { specPtr = FindConfigSpec(interp, specs, argvName, needFlags, hateFlags); if (specPtr == NULL) { return TCL_ERROR; } interp->result = FormatConfigInfo(tkwin, specPtr, widgRec); interp->freeProc = TCL_DYNAMIC; return TCL_OK; } /* * Loop through all the specs, creating a big list with all * their information. */ for (specPtr = specs; specPtr->type != TK_CONFIG_END; specPtr++) { if ((argvName != NULL) && (specPtr->argvName != argvName)) { continue; } if (((specPtr->specFlags & needFlags) != needFlags) || (specPtr->specFlags & hateFlags)) { continue; } if (specPtr->argvName == NULL) { continue; } list = FormatConfigInfo(tkwin, specPtr, widgRec); Tcl_AppendResult(interp, leader, list, "}", (char *) NULL); ckfree(list); leader = " {"; } return TCL_OK; } /* *-------------------------------------------------------------- * * FormatConfigInfo -- * * Create a valid Tcl list holding the configuration information * for a single configuration option. * * Results: * A Tcl list, dynamically allocated. The caller is expected to * arrange for this list to be freed eventually. * * Side effects: * Memory is allocated. * *-------------------------------------------------------------- */ static char * FormatConfigInfo(tkwin, specPtr, widgRec) Tk_Window tkwin; /* Window corresponding to widget. */ register Tk_ConfigSpec *specPtr; /* Pointer to information describing * option. */ char *widgRec; /* Pointer to record holding current * values of info for widget. */ { char *argv[6], *ptr, *result; char buffer[200]; Tcl_FreeProc *freeProc = (Tcl_FreeProc *) NULL; argv[0] = specPtr->argvName; argv[1] = specPtr->dbName; argv[2] = specPtr->dbClass; argv[3] = specPtr->defValue; if (specPtr->type == TK_CONFIG_SYNONYM) { return Tcl_Merge(2, argv); } ptr = widgRec + specPtr->offset; argv[4] = ""; switch (specPtr->type) { case TK_CONFIG_BOOLEAN: if (*((int *) ptr) == 0) { argv[4] = "false"; } else { argv[4] = "true"; } break; case TK_CONFIG_INT: sprintf(buffer, "%d", *((int *) ptr)); argv[4] = buffer; break; case TK_CONFIG_DOUBLE: sprintf(buffer, "%g", *((double *) ptr)); argv[4] = buffer; break; case TK_CONFIG_STRING: argv[4] = (*(char **) ptr); break; case TK_CONFIG_UID: { Tk_Uid uid = *((Tk_Uid *) ptr); if (uid != NULL) { argv[4] = uid; } break; } case TK_CONFIG_COLOR: { XColor *colorPtr = *((XColor **) ptr); if (colorPtr != NULL) { argv[4] = Tk_NameOfColor(colorPtr); } break; } case TK_CONFIG_FONT: { XFontStruct *fontStructPtr = *((XFontStruct **) ptr); if (fontStructPtr != NULL) { argv[4] = Tk_NameOfFontStruct(fontStructPtr); } break; } case TK_CONFIG_BITMAP: { Pixmap pixmap = *((Pixmap *) ptr); if (pixmap != None) { argv[4] = Tk_NameOfBitmap(pixmap); } break; } #if defined(USE_XPM3) case TK_CONFIG_PIXMAP: { Pixmap pixmap = *((Pixmap *) ptr); if (pixmap != None) { argv[4] = Tk_NameOfPixmap(pixmap); } break; } #endif case TK_CONFIG_BORDER: { Tk_3DBorder border = *((Tk_3DBorder *) ptr); if (border != NULL) { argv[4] = Tk_NameOf3DBorder(border); } break; } case TK_CONFIG_RELIEF: argv[4] = Tk_NameOfRelief(*((int *) ptr)); break; case TK_CONFIG_CURSOR: case TK_CONFIG_ACTIVE_CURSOR: { Cursor cursor = *((Cursor *) ptr); if (cursor != None) { argv[4] = Tk_NameOfCursor(cursor); } break; } case TK_CONFIG_JUSTIFY: argv[4] = Tk_NameOfJustify(*((Tk_Justify *) ptr)); break; case TK_CONFIG_ANCHOR: argv[4] = Tk_NameOfAnchor(*((Tk_Anchor *) ptr)); break; case TK_CONFIG_CAP_STYLE: argv[4] = Tk_NameOfCapStyle(*((int *) ptr)); break; case TK_CONFIG_JOIN_STYLE: argv[4] = Tk_NameOfJoinStyle(*((int *) ptr)); break; case TK_CONFIG_PIXELS: sprintf(buffer, "%d", *((int *) ptr)); argv[4] = buffer; break; case TK_CONFIG_MM: sprintf(buffer, "%gm", *((int *) ptr)); argv[4] = buffer; break; case TK_CONFIG_WINDOW: { Tk_Window tkwin; tkwin = *((Tk_Window *) ptr); if (tkwin != NULL) { argv[4] = Tk_PathName(tkwin); } break; } case TK_CONFIG_CUSTOM: argv[4] = (*specPtr->customPtr->printProc)( specPtr->customPtr->clientData, tkwin, widgRec, specPtr->offset, &freeProc); break; default: argv[4] = "?? unknown type ??"; } if (argv[1] == NULL) { argv[1] = ""; } if (argv[2] == NULL) { argv[2] = ""; } if (argv[3] == NULL) { argv[3] = ""; } if (argv[4] == NULL) { argv[4] = ""; } result = Tcl_Merge(5, argv); if (freeProc != NULL) { if (freeProc == (Tcl_FreeProc *) free) { ckfree(argv[4]); } else { (*freeProc)(argv[4]); } } return result; } micropolis-activity/src/tk/tksend.c0000664000076400007640000007765710724145723017722 0ustar simcitysimcity/* * tkSend.c -- * * This file provides procedures that implement the "send" * command, allowing commands to be passed from interpreter * to interpreter. * * Copyright 1989-1992 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies. The University of California * makes no representations about the suitability of this * software for any purpose. It is provided "as is" without * express or implied warranty. */ #ifndef lint static char rcsid[] = "$Header: /user6/ouster/wish/RCS/tkSend.c,v 1.26 92/08/13 10:29:26 ouster Exp $ SPRITE (Berkeley)"; #endif #include "tkconfig.h" #include "tkint.h" /* * The following structure is used to keep track of the * interpreters registered by this process. */ typedef struct RegisteredInterp { char *name; /* Interpreter's name (malloc-ed). */ Tcl_Interp *interp; /* Interpreter associated with * name. */ TkDisplay *dispPtr; /* Display associated with name. */ TkWindow *winPtr; /* Window associated with name. */ struct RegisteredInterp *nextPtr; /* Next in list of names associated * with interps in this process. * NULL means end of list. */ } RegisteredInterp; static RegisteredInterp *registry = NULL; /* List of all interpreters * registered by this process. */ /* * When a result is being awaited from a sent command, one of * the following structures is present on a list of all outstanding * sent commands. The information in the structure is used to * process the result when it arrives. You're probably wondering * how there could ever be multiple outstanding sent commands. * This could happen if interpreters invoke each other recursively. * It's unlikely, but possible. */ typedef struct PendingCommand { int serial; /* Serial number expected in * result. */ char *target; /* Name of interpreter command is * being sent to. */ Tcl_Interp *interp; /* Interpreter from which the send * was invoked. */ int code; /* Tcl return code for command * will be stored here. */ char *result; /* String result for command (malloc'ed). * NULL means command still pending. */ struct PendingCommand *nextPtr; /* Next in list of all outstanding * commands. NULL means end of * list. */ } PendingCommand; static PendingCommand *pendingCommands = NULL; /* List of all commands currently * being waited for. */ /* * The information below is used for communication between * processes during "send" commands. Each process keeps a * private window, never even mapped, with one property, * "Comm". When a command is sent to an interpreter, the * command is appended to the comm property of the communication * window associated with the interp's process. Similarly, when a * result is returned from a sent command, it is also appended * to the comm property. In each case, the property information * is in the form of an ASCII string. The exact syntaxes are: * * Command: * 'C' space window space serial space interpName '|' command '\0' * The 'C' character indicates that this is a command and not * a response. Window is the hex identifier for the comm * window on which to append the response. Serial is a hex * integer containing an identifying number assigned by the * sender; it may be used by the sender to sort out concurrent * responses. InterpName is the ASCII name of the desired * interpreter, which must not contain any vertical bar characters * The interpreter name is delimited by a vertical bar (this * allows the name to include blanks), and is followed by * the command to execute. The command is terminated by a * NULL character. * * Response: * 'R' space serial space code space result '\0' * The 'R' character indicates that this is a response. Serial * gives the identifier for the command (same value as in the * command message). The code field is a decimal integer giving * the Tcl return code from the command, and result is the string * result. The result is terminated by a NULL character. * * The register of interpreters is kept in a property * "InterpRegistry" on the root window of the display. It is * organized as a series of zero or more concatenated strings * (in no particular order), each of the form * window space name '\0' * where "window" is the hex id of the comm. window to use to talk * to an interpreter named "name". */ /* * Maximum size property that can be read at one time by * this module: */ #define MAX_PROP_WORDS 100000 /* * Forward declarations for procedures defined later in this file: */ static int AppendErrorProc _ANSI_ARGS_((ClientData clientData, XErrorEvent *errorPtr)); static void AppendPropCarefully _ANSI_ARGS_((Display *display, Window window, Atom property, char *value, PendingCommand *pendingPtr)); static void DeleteProc _ANSI_ARGS_((ClientData clientData)); static Window LookupName _ANSI_ARGS_((TkDisplay *dispPtr, char *name, int delete)); static void SendEventProc _ANSI_ARGS_((ClientData clientData, XEvent *eventPtr)); static int SendInit _ANSI_ARGS_((Tcl_Interp *interp, TkDisplay *dispPtr)); static Bool SendRestrictProc _ANSI_ARGS_((Display *display, XEvent *eventPtr, char *arg)); static void TimeoutProc _ANSI_ARGS_((ClientData clientData)); /* *-------------------------------------------------------------- * * Tk_RegisterInterp -- * * This procedure is called to associate an ASCII name * with an interpreter. Tk_InitSend must previously * have been called to set up communication channels * and specify a display. * * Results: * Zero is returned if the name was registered successfully. * Non-zero means the name was already in use. * * Side effects: * Registration info is saved, thereby allowing the * "send" command to be used later to invoke commands * in the interpreter. The registration will be removed * automatically when the interpreter is deleted. * *-------------------------------------------------------------- */ int Tk_RegisterInterp(interp, name, tkwin) Tcl_Interp *interp; /* Interpreter associated with name. */ char *name; /* The name that will be used to * refer to the interpreter in later * "send" commands. Must be globally * unique. */ Tk_Window tkwin; /* Token for window associated with * interp; used to identify display * for communication. */ { #define TCL_MAX_NAME_LENGTH 1000 char propInfo[TCL_MAX_NAME_LENGTH + 20]; register RegisteredInterp *riPtr; Window w; TkWindow *winPtr = (TkWindow *) tkwin; TkDisplay *dispPtr; if (strchr(name, '|') != NULL) { interp->result = "interpreter name cannot contain '|' character"; return TCL_ERROR; } dispPtr = winPtr->dispPtr; if (dispPtr->commWindow == NULL) { int result; result = SendInit(interp, dispPtr); if (result != TCL_OK) { return result; } } /* * Make sure the name is unique, and append info about it to * the registry property. Eventually, it would probably be * a good idea to lock the server here to prevent conflicting * changes to the registry property. But that would make * testing more difficult, and probably isn't necessary * anyway because new windows don't get created all that often. */ w = LookupName(dispPtr, name, 0); if (w != (Window) 0) { Tcl_Interp *tmpInterp; RegisteredInterp tmpRi; int result; char *argv[3]; /* * Name already exists. Ping the interpreter with a * NULL command to see if it already exists. If not, * unregister the old name (this could happen if an * application dies without cleaning up the registry). */ tmpInterp = Tcl_CreateInterp(); argv[0] = "send"; argv[1] = name; argv[2] = ""; tmpRi.dispPtr = dispPtr; tmpRi.winPtr = winPtr; result = Tk_SendCmd((ClientData) &tmpRi, tmpInterp, 3, argv); Tcl_DeleteInterp(tmpInterp); if (result == TCL_OK) { Tcl_AppendResult(interp, "interpreter name \"", name, "\" is already in use", (char *) NULL); return TCL_ERROR; } (void) LookupName(winPtr->dispPtr, name, 1); } sprintf(propInfo, "%x %.*s", Tk_WindowId(dispPtr->commWindow), TCL_MAX_NAME_LENGTH, name); XChangeProperty(dispPtr->display, Tk_DefaultRootWindow(dispPtr->display), dispPtr->registryProperty, XA_STRING, 8, PropModeAppend, (unsigned char *) propInfo, strlen(propInfo)+1); /* * Add an entry in the local registry of names owned by this * process. */ riPtr = (RegisteredInterp *) ckalloc(sizeof(RegisteredInterp)); riPtr->name = (char *) ckalloc((unsigned) (strlen(name) + 1)); strcpy(riPtr->name, name); riPtr->interp = interp; riPtr->dispPtr = dispPtr; riPtr->winPtr = winPtr; riPtr->nextPtr = registry; registry = riPtr; /* * Add the "send" command to this interpreter, and arrange for * us to be notified when the interpreter is deleted (actually, * when the "send" command is deleted). */ Tcl_CreateCommand(interp, "send", Tk_SendCmd, (ClientData) riPtr, DeleteProc); return TCL_OK; } /* *-------------------------------------------------------------- * * Tk_SendCmd -- * * This procedure is invoked to process the "send" Tcl command. * See the user documentation for details on what it does. * * Results: * A standard Tcl result. * * Side effects: * See the user documentation. * *-------------------------------------------------------------- */ int Tk_SendCmd(clientData, interp, argc, argv) ClientData clientData; /* Information about sender (only * dispPtr field is used). */ Tcl_Interp *interp; /* Current interpreter. */ int argc; /* Number of arguments. */ char **argv; /* Argument strings. */ { RegisteredInterp *senderRiPtr = (RegisteredInterp *) clientData; Window w; #define STATIC_PROP_SPACE 100 char *property, staticSpace[STATIC_PROP_SPACE]; int length; int quick = 0; static int serial = 0; /* Running count of sent commands. * Used to give each command a * different serial number. */ PendingCommand pending; Tk_TimerToken timeout; register RegisteredInterp *riPtr; char *cmd; int result; Bool (*prevRestrictProc)(); char *prevArg; TkWindow *winPtr = senderRiPtr->winPtr; TkDisplay *dispPtr = senderRiPtr->dispPtr; int to_server = 0; if (argc >= 2) { Tk_Window tkwin = NULL; if ((argv[1][0] == '-') && (strncmp(argv[1], "-quick", strlen(argv[1])) == 0)) { quick = 1; argv += 1; argc -= 1; } } if (argc >= 3) { Tk_Window tkwin = NULL; if ((argv[1][0] == '-') && (strncmp(argv[1], "-server", strlen(argv[1])) == 0)) { to_server = 1; tkwin = Tk_NameToWindow(interp, argv[2], (Tk_Window) winPtr); if (tkwin == NULL) { Tcl_AppendResult(interp, "bad server arg, should be window name: ", argv[2], (char *) NULL); return TCL_ERROR; } winPtr = (TkWindow *) tkwin; dispPtr = winPtr->dispPtr; argv += 2; argc -= 2; } } if (dispPtr->commWindow == NULL) { result = SendInit(interp, dispPtr); if (result != TCL_OK) { return result; } } if (argc < 3) { badargs: Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " interpName arg ?arg ...?\"", (char *) NULL); return TCL_ERROR; } if (argc == 3) { cmd = argv[2]; } else { cmd = Tcl_Concat(argc-2, argv+2); } /* * See if the target interpreter is local. If so, execute * the command directly without going through the X server. * The only tricky thing is passing the result from the target * interpreter to the invoking interpreter. Watch out: they * could be the same! */ for (riPtr = registry; riPtr != NULL; riPtr = riPtr->nextPtr) { if (strcmp(riPtr->name, argv[1]) != 0) { continue; } if (interp == riPtr->interp) { result = Tcl_GlobalEval(interp, cmd); } else { result = Tcl_GlobalEval(riPtr->interp, cmd); interp->result = riPtr->interp->result; interp->freeProc = riPtr->interp->freeProc; riPtr->interp->freeProc = 0; Tcl_ResetResult(riPtr->interp); } if (cmd != argv[2]) { ckfree(cmd); } return result; } /* * Bind the interpreter name to a communication window. */ w = LookupName(dispPtr, argv[1], 0); if (w == 0) { Tcl_AppendResult(interp, "no registered interpeter named \"", argv[1], "\"", (char *) NULL); if (cmd != argv[2]) { ckfree(cmd); } return TCL_ERROR; } if (!quick) { /* * Register the fact that we're waiting for a command to * complete (this is needed by SendEventProc and by * AppendErrorProc to pass back the command's results). */ serial++; pending.serial = serial; pending.target = argv[1]; pending.interp = interp; pending.result = NULL; pending.nextPtr = pendingCommands; pendingCommands = &pending; } /* * Send the command to target interpreter by appending it to the * comm window in the communication window. */ length = strlen(argv[1]) + strlen(cmd) + 30; if (length <= STATIC_PROP_SPACE) { property = staticSpace; } else { property = (char *) ckalloc((unsigned) length); } sprintf(property, "C %x %x %s|%s", Tk_WindowId(dispPtr->commWindow), serial, argv[1], cmd); (void) AppendPropCarefully(dispPtr->display, w, dispPtr->commProperty, property, &pending); if (length > STATIC_PROP_SPACE) { ckfree(property); } if (cmd != argv[2]) { ckfree(cmd); } if (quick) { sprintf(interp->result, "NoReturnValue"); return TCL_OK; } /* * Enter a loop processing X events until the result comes * in. If no response is received within a few seconds, * then timeout. While waiting for a result, look only at * send-related events (otherwise it would be possible for * additional input events, such as mouse motion, to cause * other sends, leading eventually to such a large number * of nested Tcl_Eval calls that the Tcl interpreter panics). */ prevRestrictProc = Tk_RestrictEvents(SendRestrictProc, (char *) dispPtr->commWindow, &prevArg); timeout = Tk_CreateTimerHandler(5000, TimeoutProc, (ClientData) &pending); while (pending.result == NULL) { Tk_DoOneEvent(0); } Tk_DeleteTimerHandler(timeout); (void) Tk_RestrictEvents(prevRestrictProc, prevArg, &prevArg); /* * Unregister the information about the pending command * and return the result. */ if (pendingCommands == &pending) { pendingCommands = pending.nextPtr; } else { PendingCommand *pcPtr; for (pcPtr = pendingCommands; pcPtr != NULL; pcPtr = pcPtr->nextPtr) { if (pcPtr->nextPtr == &pending) { pcPtr->nextPtr = pending.nextPtr; break; } } } Tcl_SetResult(interp, pending.result, TCL_DYNAMIC); return pending.code; } /* *---------------------------------------------------------------------- * * TkGetInterpNames -- * * This procedure is invoked to fetch a list of all the * interpreter names currently registered for the display * of a particular window. * * Results: * A standard Tcl return value. Interp->result will be set * to hold a list of all the interpreter names defined for * tkwin's display. If an error occurs, then TCL_ERROR * is returned and interp->result will hold an error message. * * Side effects: * None. * *---------------------------------------------------------------------- */ int TkGetInterpNames(interp, tkwin) Tcl_Interp *interp; /* Interpreter for returning a result. */ Tk_Window tkwin; /* Window whose display is to be used * for the lookup. */ { TkDisplay *dispPtr = ((TkWindow *) tkwin)->dispPtr; char *regProp, *separator, *name; register char *p; int result, actualFormat; unsigned long numItems, bytesAfter; Atom actualType; /* * Read the registry property. */ regProp = NULL; result = XGetWindowProperty(dispPtr->display, Tk_DefaultRootWindow(dispPtr->display), dispPtr->registryProperty, 0, MAX_PROP_WORDS, False, XA_STRING, &actualType, &actualFormat, &numItems, &bytesAfter, (unsigned char **) ®Prop); if (actualType == None) { sprintf(interp->result, "couldn't read intepreter registry property"); return TCL_ERROR; } /* * If the property is improperly formed, then delete it. */ if ((result != Success) || (actualFormat != 8) || (actualType != XA_STRING)) { if (regProp != NULL) { XFree(regProp); } sprintf(interp->result, "intepreter registry property is badly formed"); return TCL_ERROR; } /* * Scan all of the names out of the property. */ separator = ""; for (p = regProp; (p-regProp) < numItems; p++) { name = p; while ((*p != 0) && (!isspace(*p))) { p++; } if (*p != 0) { name = p+1; name = Tcl_Merge(1, &name); Tcl_AppendResult(interp, separator, name, (char *) NULL); while (*p != 0) { p++; } separator = " "; } } XFree(regProp); return TCL_OK; } /* *-------------------------------------------------------------- * * SendInit -- * * This procedure is called to initialize the * communication channels for sending commands and * receiving results. * * Results: * The result is a standard Tcl return value, which is * normally TCL_OK. If an error occurs then an error * message is left in interp->result and TCL_ERROR is * returned. * * Side effects: * Sets up various data structures and windows. * *-------------------------------------------------------------- */ static int SendInit(interp, dispPtr) Tcl_Interp *interp; /* Interpreter to use for error * reporting. */ register TkDisplay *dispPtr;/* Display to initialize. */ { XSetWindowAttributes atts; /* * Create the window used for communication, and set up an * event handler for it. */ dispPtr->commWindow = Tk_CreateWindow(interp, (Tk_Window) NULL, "_comm", DisplayString(dispPtr->display)); if (dispPtr->commWindow == NULL) { return TCL_ERROR; } atts.override_redirect = True; Tk_ChangeWindowAttributes(dispPtr->commWindow, CWOverrideRedirect, &atts); Tk_CreateEventHandler(dispPtr->commWindow, PropertyChangeMask, SendEventProc, (ClientData) dispPtr); Tk_MakeWindowExist(dispPtr->commWindow); /* * Get atoms used as property names. */ dispPtr->commProperty = XInternAtom(dispPtr->display, "Comm", False); dispPtr->registryProperty = XInternAtom(dispPtr->display, "InterpRegistry", False); return TCL_OK; } /* *-------------------------------------------------------------- * * LookupName -- * * Given an interpreter name, see if the name exists in * the interpreter registry for a particular display. * * Results: * If the given name is registered, return the ID of * the window associated with the name. If the name * isn't registered, then return 0. * * Side effects: * If the registry property is improperly formed, then * it is deleted. If "delete" is non-zero, then if the * named interpreter is found it is removed from the * registry property. * *-------------------------------------------------------------- */ static Window LookupName(dispPtr, name, delete) register TkDisplay *dispPtr; /* Display whose registry to check. */ char *name; /* Name of an interpreter. */ int delete; /* If non-zero, delete info about name. */ { char *regProp, *entry; register char *p; int result, actualFormat; unsigned long numItems, bytesAfter; Atom actualType; Window returnValue; /* * Read the registry property. */ regProp = NULL; result = XGetWindowProperty(dispPtr->display, Tk_DefaultRootWindow(dispPtr->display), dispPtr->registryProperty, 0, MAX_PROP_WORDS, False, XA_STRING, &actualType, &actualFormat, &numItems, &bytesAfter, (unsigned char **) ®Prop); if (actualType == None) { return 0; } /* * If the property is improperly formed, then delete it. */ if ((result != Success) || (actualFormat != 8) || (actualType != XA_STRING)) { if (regProp != NULL) { XFree(regProp); } XDeleteProperty(dispPtr->display, Tk_DefaultRootWindow(dispPtr->display), dispPtr->registryProperty); return 0; } /* * Scan the property for the desired name. */ returnValue = (Window) 0; entry = NULL; /* Not needed, but eliminates compiler warning. */ for (p = regProp; (p-regProp) < numItems; ) { entry = p; while ((*p != 0) && (!isspace(*p))) { p++; } if ((*p != 0) && (strcmp(name, p+1) == 0)) { sscanf(entry, "%x", &returnValue); break; } while (*p != 0) { p++; } p++; } /* * Delete the property, if that is desired (copy down the * remainder of the registry property to overlay the deleted * info, then rewrite the property). */ if ((delete) && (returnValue != 0)) { int count; while (*p != 0) { p++; } p++; count = numItems - (p-regProp); if (count > 0) { memcpy((VOID *) entry, (VOID *) p, count); } XChangeProperty(dispPtr->display, Tk_DefaultRootWindow(dispPtr->display), dispPtr->registryProperty, XA_STRING, 8, PropModeReplace, (unsigned char *) regProp, (int) (numItems - (p-entry))); XSync(dispPtr->display, False); } XFree(regProp); return returnValue; } /* *-------------------------------------------------------------- * * SendEventProc -- * * This procedure is invoked automatically by the toolkit * event manager when a property changes on the communication * window. This procedure reads the property and handles * command requests and responses. * * Results: * None. * * Side effects: * If there are command requests in the property, they * are executed. If there are responses in the property, * their information is saved for the (ostensibly waiting) * "send" commands. The property is deleted. * *-------------------------------------------------------------- */ static void SendEventProc(clientData, eventPtr) ClientData clientData; /* Display information. */ XEvent *eventPtr; /* Information about event. */ { TkDisplay *dispPtr = (TkDisplay *) clientData; char *propInfo; register char *p; int result, actualFormat; unsigned long numItems, bytesAfter; Atom actualType; if ((eventPtr->xproperty.atom != dispPtr->commProperty) || (eventPtr->xproperty.state != PropertyNewValue)) { return; } /* * Read the comm property and delete it. */ propInfo = NULL; result = XGetWindowProperty(dispPtr->display, Tk_WindowId(dispPtr->commWindow), dispPtr->commProperty, 0, MAX_PROP_WORDS, True, XA_STRING, &actualType, &actualFormat, &numItems, &bytesAfter, (unsigned char **) &propInfo); /* * If the property doesn't exist or is improperly formed * then ignore it. */ if ((result != Success) || (actualType != XA_STRING) || (actualFormat != 8)) { if (propInfo != NULL) { XFree(propInfo); } return; } /* * The property is divided into records separated by null * characters. Each record represents one command request * or response. Scan through the property one record at a * time. */ for (p = propInfo; (p-propInfo) < numItems; ) { if (*p == 'C') { Window window; int serial, resultSize; char *resultString, *interpName, *returnProp, *end; register RegisteredInterp *riPtr; char errorMsg[100]; #define STATIC_RESULT_SPACE 100 char staticSpace[STATIC_RESULT_SPACE]; /* *----------------------------------------------------- * This is an incoming command sent by another window. * Parse the fields of the command string. If the command * string isn't properly formed, send back an error message * if there's enough well-formed information to generate * a proper reply; otherwise just ignore the message. *----------------------------------------------------- */ p++; window = (Window) strtol(p, &end, 16); if (end == p) { goto nextRecord; } p = end; if (*p != ' ') { goto nextRecord; } p++; serial = strtol(p, &end, 16); if (end == p) { goto nextRecord; } p = end; if (*p != ' ') { goto nextRecord; } p++; interpName = p; while ((*p != 0) && (*p != '|')) { p++; } if (*p != '|') { result = TCL_ERROR; resultString = "bad property format for sent command"; goto returnResult; } *p = 0; p++; /* * Locate the interpreter for the command, then * execute the command. */ for (riPtr = registry; ; riPtr = riPtr->nextPtr) { if (riPtr == NULL) { result = TCL_ERROR; sprintf(errorMsg, "receiver never heard of interpreter \"%.40s\"", interpName); resultString = errorMsg; goto returnResult; } if (strcmp(riPtr->name, interpName) == 0) { break; } } result = Tcl_GlobalEval(riPtr->interp, p); resultString = riPtr->interp->result; /* * Return the result to the sender. */ returnResult: resultSize = strlen(resultString) + 30; if (resultSize <= STATIC_RESULT_SPACE) { returnProp = staticSpace; } else { returnProp = (char *) ckalloc((unsigned) resultSize); } sprintf(returnProp, "R %x %d %s", serial, result, resultString); (void) AppendPropCarefully(dispPtr->display, window, dispPtr->commProperty, returnProp, (PendingCommand *) NULL); if (returnProp != staticSpace) { ckfree(returnProp); } } else if (*p == 'R') { int serial, code; char *end; register PendingCommand *pcPtr; /* *----------------------------------------------------- * This record in the property is a result being * returned for a command sent from here. First * parse the fields. *----------------------------------------------------- */ p++; serial = strtol(p, &end, 16); if (end == p) { goto nextRecord; } p = end; if (*p != ' ') { goto nextRecord; } p++; code = strtol(p, &end, 10); if (end == p) { goto nextRecord; } p = end; if (*p != ' ') { goto nextRecord; } p++; /* * Give the result information to anyone who's * waiting for it. */ for (pcPtr = pendingCommands; pcPtr != NULL; pcPtr = pcPtr->nextPtr) { if ((serial != pcPtr->serial) || (pcPtr->result != NULL)) { continue; } pcPtr->code = code; pcPtr->result = ckalloc((unsigned) (strlen(p) + 1)); strcpy(pcPtr->result, p); break; } } nextRecord: while (*p != 0) { p++; } p++; } XFree(propInfo); } /* *-------------------------------------------------------------- * * AppendPropCarefully -- * * Append a given property to a given window, but set up * an X error handler so that if the append fails this * procedure can return an error code rather than having * Xlib panic. * * Results: * None. * * Side effects: * The given property on the given window is appended to. * If this operation fails and if pendingPtr is non-NULL, * then the pending operation is marked as complete with * an error. * *-------------------------------------------------------------- */ static void AppendPropCarefully(display, window, property, value, pendingPtr) Display *display; /* Display on which to operate. */ Window window; /* Window whose property is to * be modified. */ Atom property; /* Name of property. */ char *value; /* Characters (null-terminated) to * append to property. */ PendingCommand *pendingPtr; /* Pending command to mark complete * if an error occurs during the * property op. NULL means just * ignore the error. */ { Tk_ErrorHandler handler; handler = Tk_CreateErrorHandler(display, -1, -1, -1, AppendErrorProc, (ClientData) pendingPtr); XChangeProperty(display, window, property, XA_STRING, 8, PropModeAppend, (unsigned char *) value, strlen(value)+1); Tk_DeleteErrorHandler(handler); } /* * The procedure below is invoked if an error occurs during * the XChangeProperty operation above. */ /* ARGSUSED */ static int AppendErrorProc(clientData, errorPtr) ClientData clientData; /* Command to mark complete, or NULL. */ XErrorEvent *errorPtr; /* Information about error. */ { PendingCommand *pendingPtr = (PendingCommand *) clientData; register PendingCommand *pcPtr; if (pendingPtr == NULL) { return 0; } /* * Make sure this command is still pending. */ for (pcPtr = pendingCommands; pcPtr != NULL; pcPtr = pcPtr->nextPtr) { if ((pcPtr == pendingPtr) && (pcPtr->result == NULL)) { pcPtr->result = ckalloc((unsigned) (strlen(pcPtr->target) + 50)); sprintf(pcPtr->result, "send to \"%s\" failed (no communication window)", pcPtr->target); pcPtr->code = TCL_ERROR; break; } } return 0; } /* *-------------------------------------------------------------- * * TimeoutProc -- * * This procedure is invoked when too much time has elapsed * during the processing of a sent command. * * Results: * None. * * Side effects: * Mark the pending command as complete, with an error * message signalling the timeout. * *-------------------------------------------------------------- */ static void TimeoutProc(clientData) ClientData clientData; /* Information about command that * has been sent but not yet * responded to. */ { PendingCommand *pcPtr = (PendingCommand *) clientData; register PendingCommand *pcPtr2; /* * Make sure that the command is still in the pending list * and that it hasn't already completed. Then register the * error. */ for (pcPtr2 = pendingCommands; pcPtr2 != NULL; pcPtr2 = pcPtr2->nextPtr) { static char msg[] = "remote interpreter did not respond"; if ((pcPtr2 != pcPtr) || (pcPtr2->result != NULL)) { continue; } pcPtr2->code = TCL_ERROR; pcPtr2->result = ckalloc((unsigned) (sizeof(msg) + 1)); strcpy(pcPtr2->result, msg); return; } } /* *-------------------------------------------------------------- * * DeleteProc -- * * This procedure is invoked by Tcl when a registered * interpreter is about to be deleted. It unregisters * the interpreter. * * Results: * None. * * Side effects: * The interpreter given by riPtr is unregistered. * *-------------------------------------------------------------- */ static void DeleteProc(clientData) ClientData clientData; /* Info about registration, passed * as ClientData. */ { RegisteredInterp *riPtr = (RegisteredInterp *) clientData; register RegisteredInterp *riPtr2; (void) LookupName(riPtr->dispPtr, riPtr->name, 1); if (registry == riPtr) { registry = riPtr->nextPtr; } else { for (riPtr2 = registry; riPtr2 != NULL; riPtr2 = riPtr2->nextPtr) { if (riPtr2->nextPtr == riPtr) { riPtr2->nextPtr = riPtr->nextPtr; break; } } } ckfree((char *) riPtr->name); ckfree((char *) riPtr); } /* *---------------------------------------------------------------------- * * SendRestrictProc -- * * This procedure filters incoming events when a "send" command * is outstanding. It defers all events except those containing * send commands and results. * * Results: * False is returned except for property-change events on the * given commWindow. * * Side effects: * None. * *---------------------------------------------------------------------- */ /* ARGSUSED */ static Bool SendRestrictProc(display, eventPtr, arg) Display *display; /* Display from which event arrived. */ register XEvent *eventPtr; /* Event that just arrived. */ char *arg; /* Comunication window in which * we're interested. */ { register Tk_Window comm = (Tk_Window) arg; if ((display != Tk_Display(comm)) || (eventPtr->type != PropertyNotify) || (eventPtr->xproperty.window != Tk_WindowId(comm))) { return False; } return True; } micropolis-activity/src/tk/tkrawtcp.c0000664000076400007640000004167610724145723020261 0ustar simcitysimcity/* * tkRawTCP.c -- * * This file contains a simple Tcl "connect" command * that returns an standard Tcl File descriptor (as would * be returned by Tcl_OpenCmd). * Extended to create servers, accept connections, shutdown parts of full * duplex connections and handle UNIX domain sockets. * * Author: Pekka Nikander * Modified: Tim MacKenzie #include #include #include #include #include #include #include #include static int inet_connect _ANSI_ARGS_((char *host, char *port,int server)); static int unix_connect _ANSI_ARGS_((char *path, int server)); static void HandleSocket _ANSI_ARGS_ ((ClientData clientData, int mask)); typedef struct { Tcl_Interp *interp; OpenFile *filePtr; char *tclCmd; char *fileId; } FileCmd; /* *------------------------------------------------------------------ * * Tcp_MakeOpenFile -- * * Set up on OpenFile structure in the interpreter for a newly * opened file * * Results: * none * * Side effects: * Adds an OpenFile to the list. *------------------------------------------------------------------ */ /* ARGSUSED */ void Tcp_MakeOpenFile(interp,fd,r,w) Tcl_Interp *interp; int fd; int r,w; {/* Create an OpenFile structure using f and install it in the interpreter with * Readable and Writable set to r and w */ Interp *iPtr = (Interp *) interp; register OpenFile *filePtr; filePtr = (OpenFile *) ckalloc(sizeof(OpenFile)); filePtr->f = NULL; filePtr->f2 = NULL; /* Open the file with the correct type (doesn't handle !r && !w) */ #ifdef MSDOS filePtr->f = fdopen(fd,(r&&w)?"rb+":(r?"rb":"wb")); #else filePtr->f = fdopen(fd,(r&&w)?"r+":(r?"r":"w")); #endif /* Don't do buffered communication if full-duplex... it breaks! */ if (r&w) setbuf(filePtr->f,0); filePtr->readable = r; filePtr->writable = w; filePtr->numPids = 0; filePtr->pidPtr = NULL; filePtr->errorId = -1; /* * Enter this new OpenFile structure in the table for the * interpreter. May have to expand the table to do this. */ TclMakeFileTable(iPtr, fd); if (iPtr->filePtrArray[fd] != NULL) { panic("Tcl_OpenCmd found file already open"); } iPtr->filePtrArray[fd] = filePtr; } /* *------------------------------------------------------------------ * * Tcp_ConnectCmd -- * * Open a socket connection to a given host and service. * * Results: * A standard Tcl result. * * Side effects: * An open socket connection. * Sets the global variable connect_info(file%d) to the obtained * port when setting up server. *------------------------------------------------------------------ */ /* ARGSUSED */ int Tcp_ConnectCmd(notUsed, interp, argc, argv) ClientData notUsed; Tcl_Interp *interp; int argc; char **argv; { Interp *iPtr = (Interp *) interp; char *host,*port; int fd; int server=0; int unicks = 0; if (argc != 2 && argc != 3 && (argc != 4 || (argc == 4 && strcmp(argv[1],"-server")))) { Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], "[{-server}] address_spec\"", (char *) NULL); return TCL_ERROR; } if (!strcmp(argv[1],"-server")) server = 1; /* * Create the connection */ if (argc - server == 2) {/* Unix domain socket */ unicks = 1; fd = unix_connect(argv[1+server],server); } else fd = inet_connect(argv[1+server], argv[2+server],server); if (fd < 0) { /* Tell them why it fell apart */ if (unicks) if (server) Tcl_AppendResult(interp, "Couldn't setup listening socket with path \"", argv[1+server],"\" : ",Tcl_UnixError(interp), (char *) NULL); else Tcl_AppendResult(interp, "Couldn't connect to \"",argv[1],"\" : ", Tcl_UnixError(interp),(char *) NULL); else if (server) Tcl_AppendResult(interp, "couldn't setup listening socket on port:", atoi(argv[3])==0?"any":argv[3]," using address \"", strlen(argv[2])?argv[2]:"anywhere.","\": ", Tcl_UnixError(interp), (char *)NULL); else Tcl_AppendResult(interp, "couldn't open connection to \"", argv[1], "\" port \"", argv[2], "\": ", Tcl_UnixError(interp), (char *) NULL); return TCL_ERROR; } sprintf(interp->result, "file%d", fd); if (server && !unicks) { /* Find out what port we got */ char buf[50]; struct sockaddr_in sockaddr; int res,len=sizeof(sockaddr); res =getsockname(fd,(struct sockaddr *) &sockaddr, &len); if (res < 0) { sprintf(buf,"%d",errno); } else sprintf(buf,"%d",(int)ntohs(sockaddr.sin_port)); Tcl_SetVar2(interp,"connect_info",interp->result,buf,TCL_GLOBAL_ONLY); } Tcp_MakeOpenFile(iPtr,fd,1,1-server); return TCL_OK; } /* *------------------------------------------------------------------ * * Tcp_ShutdownCmd -- * * Shutdown a socket for reading writing or both using shutdown(2) * * Results: * standard tcl result. * * Side effects: * Modifies the OpenFile structure appropriately *------------------------------------------------------------------ */ /* ARGSUSED */ int Tcp_ShutdownCmd(notUsed, interp, argc, argv) ClientData notUsed; Tcl_Interp *interp; int argc; char **argv; { Interp *iPtr = (Interp *) interp; OpenFile *filePtr; register FILE *f; int fd; if (argc != 3) { wrong_args: Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " fileid